diff --git a/cmd/tf_operator/main.go b/cmd/tf_operator/main.go index 52e9a8e4f9..0bd8c9e0c8 100644 --- a/cmd/tf_operator/main.go +++ b/cmd/tf_operator/main.go @@ -13,16 +13,16 @@ import ( "github.com/tensorflow/k8s/pkg/controller" "github.com/tensorflow/k8s/pkg/util" "github.com/tensorflow/k8s/pkg/util/k8sutil" - "github.com/tensorflow/k8s/pkg/util/k8sutil/election" - "github.com/tensorflow/k8s/pkg/util/k8sutil/election/resourcelock" "github.com/tensorflow/k8s/version" + election "k8s.io/client-go/tools/leaderelection" + "k8s.io/client-go/tools/leaderelection/resourcelock" log "github.com/golang/glog" "io/ioutil" "github.com/tensorflow/k8s/pkg/spec" - "k8s.io/client-go/pkg/api/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" ) @@ -123,11 +123,11 @@ func main() { // TODO: replace with to client-go once leader election pacakge is imported // see https://github.com/kubernetes/client-go/issues/28 rl := &resourcelock.EndpointsLock{ - EndpointsMeta: v1.ObjectMeta{ + EndpointsMeta: metav1.ObjectMeta{ Namespace: namespace, Name: "tf-operator", }, - Client: k8sutil.MustNewKubeClient(), + Client: k8sutil.MustNewKubeClient().CoreV1(), LockConfig: resourcelock.ResourceLockConfig{ Identity: id, EventRecorder: &record.FakeRecorder{}, diff --git a/glide.lock b/glide.lock index 15dc70acfd..9b193f83eb 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: 6c3e73ca1c759c2047fd54f17fb6fbadac69893d570e4b336186f9103e4bc762 -updated: 2017-12-17T23:50:25.271125705+08:00 +hash: cba472766524525db1c58d8093d8af735767e074f0b9beeb2c06c35302585c9f +updated: 2017-12-18T09:57:55.472935328+08:00 imports: - name: cloud.google.com/go version: 3b1ae45394a234c385be014e9a488f2bb6eef821 @@ -7,14 +7,9 @@ imports: - compute/metadata - internal - name: github.com/davecgh/go-spew - version: 5215b55f46b2b919f50a1df0eaa5886afe4e3b3d + version: 782f4967f2dc4564575ca782fe2d04090b5faca8 subpackages: - spew -- name: github.com/docker/distribution - version: cd27f179f2c10c5d300e6d09025b538c475b0d51 - subpackages: - - digest - - reference - name: github.com/emicklei/go-restful version: ff4f55a206334ef123e4f79bbf348980da81ca46 subpackages: @@ -22,15 +17,11 @@ imports: - name: github.com/emicklei/go-restful-swagger12 version: dcef7f55730566d41eae5db10e7d6981829720f6 - name: github.com/ghodss/yaml - version: 73d445a93680fa1a78ae23a5839bad48f32ba1ee -- name: github.com/go-openapi/analysis - version: b44dc874b601d9e4e2f6e19140e794ba24bead3b + version: 0ca9ea5df5451ffdf184b4428c902747c2c11cd7 - name: github.com/go-openapi/jsonpointer version: 46af16f9f7b149af66e5d1bd010e3574dc06de98 - name: github.com/go-openapi/jsonreference version: 13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272 -- name: github.com/go-openapi/loads - version: 18441dfa706d924a39a030ee2c3b1d8d81917b38 - name: github.com/go-openapi/spec version: 6aced65f8501fe1217321abf0749d354824ba2ff - name: github.com/go-openapi/swag @@ -47,15 +38,33 @@ imports: subpackages: - lru - name: github.com/golang/protobuf - version: 748d386b5c1ea99658fd69fe9f03991ce86a90c1 + version: 4bd1920723d7b7c925de087aa32e2187708897f7 subpackages: - proto + - ptypes + - ptypes/any + - ptypes/duration + - ptypes/timestamp +- name: github.com/google/btree + version: 7d79101e329e5a3adf994758c578dab82b90c017 - name: github.com/google/gofuzz version: 44d81051d367757e1c7c6a5a86423ece9afcf63c +- name: github.com/googleapis/gnostic + version: 0c5108395e2debce0d731cf0287ddf7242066aba + subpackages: + - OpenAPIv2 + - compiler + - extensions +- name: github.com/gregjones/httpcache + version: 787624de3eb7bd915c329cba748687a3b22666a6 + subpackages: + - diskcache - name: github.com/howeyc/gopass version: bf9dde6d0d2c004a008c27aaee91170c786f6db8 - name: github.com/imdario/mergo version: 6633656539c1639d9d78127b7d47c622b5d7b6dc +- name: github.com/json-iterator/go + version: 36b14963da70d11297d313183d7e6388c8510e1e - name: github.com/juju/ratelimit version: 5b9ff866471762aa2ab2dced63c9fb6f53921342 - name: github.com/mailru/easyjson @@ -64,33 +73,30 @@ imports: - buffer - jlexer - jwriter -- name: github.com/pborman/uuid - version: a97ce2ca70fa5a848076093f05e639a89ca34d06 -- name: github.com/pkg/errors - version: 645ef00459ed84a119197bfb8d8205042c6df63d +- name: github.com/peterbourgon/diskv + version: 5f041e8faa004a95c88a202771f4cc3e991971e6 - name: github.com/PuerkitoBio/purell version: 8a290539e2e8629dbc4e6bad948158f790ec31f4 - name: github.com/PuerkitoBio/urlesc version: 5bd2802263f21d8788851d5305584c82a5c75d7e - name: github.com/spf13/pflag version: 9ff6c6923cfffbcd502984b8e0c80539a94968b7 -- name: github.com/ugorji/go - version: ded73eae5db7e7a0ef6f55aace87a2873c5d2b74 - subpackages: - - codec - name: golang.org/x/crypto - version: d172538b2cfce0c13cee31e647d0367aa8cd2486 + version: 81e90905daefcd6fd217b62423c0908922eadb30 subpackages: - ssh/terminal - name: golang.org/x/net - version: f2499483f923065a842d38eb4c7f1927e6fc6e6d + version: 1c05540f6879653db88113bc4a2b70aec4bd491f subpackages: - context - context/ctxhttp + - html + - html/atom - http2 - http2/hpack - idna - lex/httplex + - websocket - name: golang.org/x/oauth2 version: a6bd8cefa1811bd24b86f8902872e4e8225f74c4 subpackages: @@ -99,13 +105,15 @@ imports: - jws - jwt - name: golang.org/x/sys - version: 8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9 + version: 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce subpackages: - unix + - windows - name: golang.org/x/text - version: 2910a502d2bf9e43193af9d68ca516529614eed3 + version: b19bf474d317b857955b12035d2c5acb57ce8b01 subpackages: - cases + - internal - internal/tag - language - runes @@ -115,10 +123,8 @@ imports: - unicode/bidi - unicode/norm - width -- name: golang.org/x/time - version: 8be79e1e0910c292df4e79c241bb7e8f7e725959 - name: google.golang.org/appengine - version: 12d5545dc1cfa6047a286d5e853841b6471f4c19 + version: 5bee14b453b4c71be47ec1781b0fa61c2ea182db subpackages: - internal - internal/app_identity @@ -133,8 +139,35 @@ imports: version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 - name: gopkg.in/yaml.v2 version: 53feefa2559fb8dfa8d81baad31be332c97d6c77 +- name: k8s.io/api + version: fe29995db37613b9c5b2a647544cf627bfa8d299 + subpackages: + - admissionregistration/v1alpha1 + - apps/v1beta1 + - apps/v1beta2 + - authentication/v1 + - authentication/v1beta1 + - authorization/v1 + - authorization/v1beta1 + - autoscaling/v1 + - autoscaling/v2beta1 + - batch/v1 + - batch/v1beta1 + - batch/v2alpha1 + - certificates/v1beta1 + - core/v1 + - extensions/v1beta1 + - networking/v1 + - policy/v1beta1 + - rbac/v1 + - rbac/v1alpha1 + - rbac/v1beta1 + - scheduling/v1alpha1 + - settings/v1alpha1 + - storage/v1 + - storage/v1beta1 - name: k8s.io/apiextensions-apiserver - version: 6d8c23d2e66ce61e2a7e34f92e8eb3eec13279fa + version: 996a70a27a0dcf53642ca52601b9107cb2ad810a subpackages: - pkg/apis/apiextensions - pkg/apis/apiextensions/v1beta1 @@ -142,15 +175,12 @@ imports: - pkg/client/clientset/clientset/scheme - pkg/client/clientset/clientset/typed/apiextensions/v1beta1 - name: k8s.io/apimachinery - version: abe34e4f5b4413c282a83011892cbeea5b32223b + version: 019ae5ada31de202164b118aee88ee2d14075c31 subpackages: - pkg/api/equality - pkg/api/errors - pkg/api/meta - pkg/api/resource - - pkg/apimachinery - - pkg/apimachinery/announced - - pkg/apimachinery/registered - pkg/apis/meta/v1 - pkg/apis/meta/v1/unstructured - pkg/apis/meta/v1alpha1 @@ -159,7 +189,6 @@ imports: - pkg/conversion/unstructured - pkg/fields - pkg/labels - - pkg/openapi - pkg/runtime - pkg/runtime/schema - pkg/runtime/serializer @@ -178,7 +207,6 @@ imports: - pkg/util/json - pkg/util/mergepatch - pkg/util/net - - pkg/util/rand - pkg/util/runtime - pkg/util/sets - pkg/util/strategicpatch @@ -191,7 +219,7 @@ imports: - third_party/forked/golang/json - third_party/forked/golang/reflect - name: k8s.io/client-go - version: df46f7f13b3da19b90b8b4f0d18b8adc6fbf28dc + version: 35874c597fed17ca62cd197e516d7d5ff9a2958c subpackages: - discovery - discovery/fake @@ -202,6 +230,8 @@ imports: - kubernetes/typed/admissionregistration/v1alpha1/fake - kubernetes/typed/apps/v1beta1 - kubernetes/typed/apps/v1beta1/fake + - kubernetes/typed/apps/v1beta2 + - kubernetes/typed/apps/v1beta2/fake - kubernetes/typed/authentication/v1 - kubernetes/typed/authentication/v1/fake - kubernetes/typed/authentication/v1beta1 @@ -212,10 +242,12 @@ imports: - kubernetes/typed/authorization/v1beta1/fake - kubernetes/typed/autoscaling/v1 - kubernetes/typed/autoscaling/v1/fake - - kubernetes/typed/autoscaling/v2alpha1 - - kubernetes/typed/autoscaling/v2alpha1/fake + - kubernetes/typed/autoscaling/v2beta1 + - kubernetes/typed/autoscaling/v2beta1/fake - kubernetes/typed/batch/v1 - kubernetes/typed/batch/v1/fake + - kubernetes/typed/batch/v1beta1 + - kubernetes/typed/batch/v1beta1/fake - kubernetes/typed/batch/v2alpha1 - kubernetes/typed/batch/v2alpha1/fake - kubernetes/typed/certificates/v1beta1 @@ -228,53 +260,20 @@ imports: - kubernetes/typed/networking/v1/fake - kubernetes/typed/policy/v1beta1 - kubernetes/typed/policy/v1beta1/fake + - kubernetes/typed/rbac/v1 + - kubernetes/typed/rbac/v1/fake - kubernetes/typed/rbac/v1alpha1 - kubernetes/typed/rbac/v1alpha1/fake - kubernetes/typed/rbac/v1beta1 - kubernetes/typed/rbac/v1beta1/fake + - kubernetes/typed/scheduling/v1alpha1 + - kubernetes/typed/scheduling/v1alpha1/fake - kubernetes/typed/settings/v1alpha1 - kubernetes/typed/settings/v1alpha1/fake - kubernetes/typed/storage/v1 - kubernetes/typed/storage/v1/fake - kubernetes/typed/storage/v1beta1 - kubernetes/typed/storage/v1beta1/fake - - pkg/api - - pkg/api/v1 - - pkg/api/v1/ref - - pkg/apis/admissionregistration - - pkg/apis/admissionregistration/v1alpha1 - - pkg/apis/apps - - pkg/apis/apps/v1beta1 - - pkg/apis/authentication - - pkg/apis/authentication/v1 - - pkg/apis/authentication/v1beta1 - - pkg/apis/authorization - - pkg/apis/authorization/v1 - - pkg/apis/authorization/v1beta1 - - pkg/apis/autoscaling - - pkg/apis/autoscaling/v1 - - pkg/apis/autoscaling/v2alpha1 - - pkg/apis/batch - - pkg/apis/batch/v1 - - pkg/apis/batch/v2alpha1 - - pkg/apis/certificates - - pkg/apis/certificates/v1beta1 - - pkg/apis/extensions - - pkg/apis/extensions/v1beta1 - - pkg/apis/networking - - pkg/apis/networking/v1 - - pkg/apis/policy - - pkg/apis/policy/v1beta1 - - pkg/apis/rbac - - pkg/apis/rbac/v1alpha1 - - pkg/apis/rbac/v1beta1 - - pkg/apis/settings - - pkg/apis/settings/v1alpha1 - - pkg/apis/storage - - pkg/apis/storage/v1 - - pkg/apis/storage/v1beta1 - - pkg/util - - pkg/util/parsers - pkg/version - plugin/pkg/client/auth/gcp - rest @@ -286,12 +285,19 @@ imports: - tools/clientcmd/api - tools/clientcmd/api/latest - tools/clientcmd/api/v1 + - tools/leaderelection + - tools/leaderelection/resourcelock - tools/metrics - tools/record + - tools/reference - transport - util/cert - util/flowcontrol - util/homedir - util/integer - util/jsonpath +- name: k8s.io/kube-openapi + version: 868f2f29720b192240e18284659231b440f9cda5 + subpackages: + - pkg/common testImports: [] diff --git a/glide.yaml b/glide.yaml index 665bf7fbe4..9826e15ed9 100644 --- a/glide.yaml +++ b/glide.yaml @@ -3,14 +3,10 @@ ignore: - github.com/tensorflow/k8s import: - package: k8s.io/client-go - version: v4.0.0-beta.0 + version: v5.0.0 +- package: k8s.io/api + version: fe29995db37613b9c5b2a647544cf627bfa8d299 - package: k8s.io/apimachinery - version: abe34e4f5b4413c282a83011892cbeea5b32223b + version: 019ae5ada31de202164b118aee88ee2d14075c31 - package: k8s.io/apiextensions-apiserver - version: 6d8c23d2e66ce61e2a7e34f92e8eb3eec13279fa -- package: github.com/pkg/errors - version: v0.8.0 -- package: github.com/pborman/uuid - version: v1.0 -- package: golang.org/x/net -- package: golang.org/x/time + version: kubernetes-1.8.4 diff --git a/pkg/spec/register.go b/pkg/spec/register.go index 828d09c10c..38ca41eefd 100644 --- a/pkg/spec/register.go +++ b/pkg/spec/register.go @@ -1,14 +1,14 @@ package spec import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" ) var ( - SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) - AddToScheme = SchemeBuilder.AddToScheme + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme ) // SchemeGroupVersion is the group version used to register these objects. @@ -16,15 +16,15 @@ var SchemeGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersio // Resource takes an unqualified resource and returns a Group-qualified GroupResource. func Resource(resource string) schema.GroupResource { - return SchemeGroupVersion.WithResource(resource).GroupResource() + return SchemeGroupVersion.WithResource(resource).GroupResource() } // addKnownTypes adds the set of types defined in this package to the supplied scheme. func addKnownTypes(scheme *runtime.Scheme) error { - scheme.AddKnownTypes(SchemeGroupVersion, - &TfJob{}, - &TfJobList{}, - ) - metav1.AddToGroupVersion(scheme, SchemeGroupVersion) - return nil -} \ No newline at end of file + scheme.AddKnownTypes(SchemeGroupVersion, + &TfJob{}, + &TfJobList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/pkg/spec/tf_job.go b/pkg/spec/tf_job.go index 28b7266768..3ff24d49da 100644 --- a/pkg/spec/tf_job.go +++ b/pkg/spec/tf_job.go @@ -8,8 +8,9 @@ import ( "github.com/golang/protobuf/proto" "github.com/tensorflow/k8s/pkg/util" + "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/pkg/api/v1" + "k8s.io/apimachinery/pkg/runtime" ) const ( @@ -37,6 +38,8 @@ type TfJob struct { Status TfJobStatus `json:"status"` } +func (c *TfJob) DeepCopyObject() runtime.Object { return nil } + func (c *TfJob) AsOwner() metav1.OwnerReference { trueVar := true // TODO: In 1.6 this is gonna be "k8s.io/kubernetes/pkg/apis/meta/v1" @@ -264,7 +267,7 @@ func (c *TfJobSpec) SetDefaults() error { if c.TerminationPolicy == nil { c.TerminationPolicy = &TerminationPolicySpec{ Chief: &ChiefSpec{ - ReplicaName: "MASTER", + ReplicaName: "MASTER", ReplicaIndex: 0, }, } diff --git a/pkg/spec/tf_job_list.go b/pkg/spec/tf_job_list.go index 7c8fe84d77..79b12290f7 100644 --- a/pkg/spec/tf_job_list.go +++ b/pkg/spec/tf_job_list.go @@ -4,6 +4,7 @@ import ( "encoding/json" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" ) // TfJobList is a list of etcd clusters. @@ -16,6 +17,8 @@ type TfJobList struct { Items []TfJob `json:"items"` } +func (c *TfJobList) DeepCopyObject() runtime.Object { return nil } + // There is known issue with TPR in client-go: // https://github.com/kubernetes/client-go/issues/8 // Workarounds: diff --git a/pkg/spec/tf_job_test.go b/pkg/spec/tf_job_test.go index c08f5ad1d4..a1e33b6b98 100644 --- a/pkg/spec/tf_job_test.go +++ b/pkg/spec/tf_job_test.go @@ -6,8 +6,8 @@ import ( "github.com/gogo/protobuf/proto" "github.com/tensorflow/k8s/pkg/util" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/client-go/pkg/api/v1" ) func TestAddAccelertor(t *testing.T) { @@ -276,7 +276,7 @@ func TestSetDefaults(t *testing.T) { TfImage: "tensorflow/tensorflow:1.3.0", TerminationPolicy: &TerminationPolicySpec{ Chief: &ChiefSpec{ - ReplicaName: "MASTER", + ReplicaName: "MASTER", ReplicaIndex: 0, }, }, @@ -320,7 +320,7 @@ func TestSetDefaults(t *testing.T) { TfImage: "tensorflow/tensorflow:1.3.0", TerminationPolicy: &TerminationPolicySpec{ Chief: &ChiefSpec{ - ReplicaName: "MASTER", + ReplicaName: "MASTER", ReplicaIndex: 0, }, }, diff --git a/pkg/trainer/replicas.go b/pkg/trainer/replicas.go index 9926784e67..5e552a321b 100644 --- a/pkg/trainer/replicas.go +++ b/pkg/trainer/replicas.go @@ -14,15 +14,14 @@ import ( log "github.com/golang/glog" "github.com/golang/protobuf/proto" - "k8s.io/apimachinery/pkg/conversion" // TOOO(jlewi): Rename to apiErrors "github.com/tensorflow/k8s/pkg/util" + batch "k8s.io/api/batch/v1" + "k8s.io/api/core/v1" k8s_errors "k8s.io/apimachinery/pkg/api/errors" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" k8sErrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/client-go/kubernetes" - "k8s.io/client-go/pkg/api/v1" - batch "k8s.io/client-go/pkg/apis/batch/v1" ) // TFReplicaSet is a set of TF processes all acting as the same role (e.g. worker @@ -91,11 +90,11 @@ func NewTFReplicaSet(clientSet kubernetes.Interface, tfReplicaSpec spec.TfReplic func (s *TFReplicaSet) Labels() KubernetesLabels { return KubernetesLabels(map[string]string{ "tensorflow.org": "", - "job_type": string(s.Spec.TfReplicaType), + "job_type": string(s.Spec.TfReplicaType), // runtime_id is set by Job.setup, which is called after the TfReplicaSet is created. // this is why labels aren't a member variable. - "runtime_id": s.Job.job.Spec.RuntimeId, - "tf_job_name": s.Job.job.Metadata.Name,}) + "runtime_id": s.Job.job.Spec.RuntimeId, + "tf_job_name": s.Job.job.Metadata.Name}) } // Transforms the tfconfig to work with grpc_tensorflow_server @@ -122,7 +121,6 @@ func transformClusterSpecForDefaultPS(clusterSpec ClusterSpec) string { } func (s *TFReplicaSet) Create(config *spec.ControllerConfig) error { - cloner := conversion.NewCloner() if s.Spec.IsDefaultPS { // Create the ConfigMap containing the sources for the default Parameter Server err, cm := s.getDefaultPSConfigMap(config) @@ -208,11 +206,8 @@ func (s *TFReplicaSet) Create(config *spec.ControllerConfig) error { } // Make a copy of the template because we will modify it below. . - newPodSpecTemplate := &v1.PodTemplateSpec{} - if err := v1.DeepCopy_v1_PodTemplateSpec(s.Spec.Template, newPodSpecTemplate, cloner); err != nil { - log.Errorf("There was a problem copying the PodTemplateSpec error; %v", err) - return err - } + newPodSpecTemplate := s.Spec.Template.DeepCopy() + newJ := &batch.Job{ ObjectMeta: meta_v1.ObjectMeta{ Name: s.jobName(index), @@ -364,7 +359,7 @@ func replicaStatusFromPodList(l v1.PodList, name spec.ContainerName) spec.Replic latest = &i continue } - if latest.Status.StartTime.Before(*i.Status.StartTime) { + if latest.Status.StartTime.Before(i.Status.StartTime) { latest = &i } } @@ -496,7 +491,7 @@ func (s *TFReplicaSet) jobName(index int32) string { // The whole job name should be compliant with the DNS_LABEL spec, up to a max length of 63 characters // Thus jobname(40 chars)-replicaType(6 chars)-runtimeId(4 chars)-index(4 chars), also leaving some spaces // See https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/identifiers.md - return fmt.Sprintf("%v-%v-%v-%v",fmt.Sprintf("%.40s", s.Job.job.Metadata.Name), strings.ToLower(string(s.Spec.TfReplicaType)), s.Job.job.Spec.RuntimeId, index) + return fmt.Sprintf("%v-%v-%v-%v", fmt.Sprintf("%.40s", s.Job.job.Metadata.Name), strings.ToLower(string(s.Spec.TfReplicaType)), s.Job.job.Spec.RuntimeId, index) } func (s *TFReplicaSet) defaultPSConfigMapName() string { diff --git a/pkg/trainer/replicas_test.go b/pkg/trainer/replicas_test.go index 76e8427c48..f23b9c7c9d 100644 --- a/pkg/trainer/replicas_test.go +++ b/pkg/trainer/replicas_test.go @@ -12,20 +12,20 @@ import ( "encoding/json" "github.com/tensorflow/k8s/pkg/spec" + "github.com/tensorflow/k8s/pkg/util" tfJobFake "github.com/tensorflow/k8s/pkg/util/k8sutil/fake" + "k8s.io/api/core/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" - "k8s.io/client-go/pkg/api/v1" - "github.com/tensorflow/k8s/pkg/util" ) func TestTFReplicaSet(t *testing.T) { clientSet := fake.NewSimpleClientset() jobSpec := &spec.TfJob{ - Metadata: meta_v1.ObjectMeta { + Metadata: meta_v1.ObjectMeta{ Name: "some-job", - UID: "some-uid", + UID: "some-uid", }, Spec: spec.TfJobSpec{ RuntimeId: "some-runtime", @@ -69,22 +69,22 @@ func TestTFReplicaSet(t *testing.T) { trueVal := true expectedOwnerReference := meta_v1.OwnerReference{ - APIVersion: "", - Kind: "", - Name: "some-job", - UID: "some-uid", - Controller: &trueVal, + APIVersion: "", + Kind: "", + Name: "some-job", + UID: "some-uid", + Controller: &trueVal, BlockOwnerDeletion: &trueVal, } for index := 0; index < 2; index++ { // Expected labels expectedLabels := map[string]string{ - "tensorflow.org": "", - "task_index": fmt.Sprintf("%v", index), - "job_type": "PS", - "runtime_id": "some-runtime", - "tf_job_name": "some-job", + "tensorflow.org": "", + "task_index": fmt.Sprintf("%v", index), + "job_type": "PS", + "runtime_id": "some-runtime", + "tf_job_name": "some-job", } // Check that a service was created. @@ -112,7 +112,7 @@ func TestTFReplicaSet(t *testing.T) { t.Fatalf("Expected 1 owner reference got %v", len(s.ObjectMeta.OwnerReferences)) } - if !reflect.DeepEqual(s.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { + if !reflect.DeepEqual(s.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { t.Fatalf("Service.Metadata.OwnerReferences; Got %v; want %v", util.Pformat(s.ObjectMeta.OwnerReferences[0]), util.Pformat(expectedOwnerReference)) } @@ -144,7 +144,7 @@ func TestTFReplicaSet(t *testing.T) { t.Fatalf("Expected 1 owner reference got %v", len(j.ObjectMeta.OwnerReferences)) } - if !reflect.DeepEqual(j.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { + if !reflect.DeepEqual(j.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { t.Fatalf("Job.Metadata.OwnerReferences; Got %v; want %v", util.Pformat(j.ObjectMeta.OwnerReferences[0]), util.Pformat(expectedOwnerReference)) } diff --git a/pkg/trainer/tensorboard.go b/pkg/trainer/tensorboard.go index 5607628238..dc326234e2 100644 --- a/pkg/trainer/tensorboard.go +++ b/pkg/trainer/tensorboard.go @@ -8,12 +8,12 @@ import ( log "github.com/golang/glog" "github.com/golang/protobuf/proto" "github.com/tensorflow/k8s/pkg/spec" + "k8s.io/api/core/v1" + "k8s.io/api/extensions/v1beta1" k8s_errors "k8s.io/apimachinery/pkg/api/errors" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/client-go/kubernetes" - "k8s.io/client-go/pkg/api/v1" - "k8s.io/client-go/pkg/apis/extensions/v1beta1" ) const TbPort = 6006 @@ -50,9 +50,9 @@ func (s *TBReplicaSet) Create() error { ObjectMeta: meta_v1.ObjectMeta{ Name: s.jobName(), Labels: s.Labels(), - OwnerReferences: []meta_v1.OwnerReference{ - s.Job.job.AsOwner(), - }, + OwnerReferences: []meta_v1.OwnerReference{ + s.Job.job.AsOwner(), + }, }, Spec: v1.ServiceSpec{ Type: st, @@ -85,9 +85,9 @@ func (s *TBReplicaSet) Create() error { ObjectMeta: meta_v1.ObjectMeta{ Name: s.jobName(), Labels: s.Labels(), - OwnerReferences: []meta_v1.OwnerReference{ - s.Job.job.AsOwner(), - }, + OwnerReferences: []meta_v1.OwnerReference{ + s.Job.job.AsOwner(), + }, }, Spec: v1beta1.DeploymentSpec{ Selector: &meta_v1.LabelSelector{ @@ -178,10 +178,10 @@ func (s *TBReplicaSet) getDeploymentSpecTemplate(image string) v1.PodTemplateSpe func (s *TBReplicaSet) Labels() KubernetesLabels { return KubernetesLabels(map[string]string{ - "tensorflow.org": "", - "runtime_id": s.Job.job.Spec.RuntimeId, - "app": "tensorboard", - "tf_job_name": s.Job.job.Metadata.Name, + "tensorflow.org": "", + "runtime_id": s.Job.job.Spec.RuntimeId, + "app": "tensorboard", + "tf_job_name": s.Job.job.Metadata.Name, }) } diff --git a/pkg/trainer/tensorboard_test.go b/pkg/trainer/tensorboard_test.go index 79dab78a7a..2deb0aeac5 100644 --- a/pkg/trainer/tensorboard_test.go +++ b/pkg/trainer/tensorboard_test.go @@ -9,20 +9,20 @@ import ( "sync" "github.com/tensorflow/k8s/pkg/spec" + "github.com/tensorflow/k8s/pkg/util" tfJobFake "github.com/tensorflow/k8s/pkg/util/k8sutil/fake" + "k8s.io/api/core/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" - "k8s.io/client-go/pkg/api/v1" - "github.com/tensorflow/k8s/pkg/util" ) func TestTBReplicaSet(t *testing.T) { clientSet := fake.NewSimpleClientset() jobSpec := &spec.TfJob{ - Metadata: meta_v1.ObjectMeta { + Metadata: meta_v1.ObjectMeta{ Name: "some-job", - UID: "some-uid", + UID: "some-uid", }, Spec: spec.TfJobSpec{ RuntimeId: "some-runtime", @@ -61,19 +61,19 @@ func TestTBReplicaSet(t *testing.T) { // Expected labels expectedLabels := map[string]string{ - "tensorflow.org": "", - "app": "tensorboard", - "runtime_id": "some-runtime", - "tf_job_name": "some-job", + "tensorflow.org": "", + "app": "tensorboard", + "runtime_id": "some-runtime", + "tf_job_name": "some-job", } trueVal := true expectedOwnerReference := meta_v1.OwnerReference{ - APIVersion: "", - Kind: "", - Name: "some-job", - UID: "some-uid", - Controller: &trueVal, + APIVersion: "", + Kind: "", + Name: "some-job", + UID: "some-uid", + Controller: &trueVal, BlockOwnerDeletion: &trueVal, } @@ -103,7 +103,7 @@ func TestTBReplicaSet(t *testing.T) { t.Fatalf("Expected 1 owner reference got %v", len(s.ObjectMeta.OwnerReferences)) } - if !reflect.DeepEqual(s.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { + if !reflect.DeepEqual(s.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { t.Fatalf("Service.Metadata.OwnerReferences; Got %v; want %v", util.Pformat(s.ObjectMeta.OwnerReferences[0]), util.Pformat(expectedOwnerReference)) } @@ -131,7 +131,7 @@ func TestTBReplicaSet(t *testing.T) { t.Fatalf("Expected 1 owner reference got %v", len(d.ObjectMeta.OwnerReferences)) } - if !reflect.DeepEqual(d.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { + if !reflect.DeepEqual(d.ObjectMeta.OwnerReferences[0], expectedOwnerReference) { t.Fatalf("Service.Metadata.OwnerReferences; Got %v; want %v", util.Pformat(s.ObjectMeta.OwnerReferences[0]), util.Pformat(expectedOwnerReference)) } diff --git a/pkg/trainer/training.go b/pkg/trainer/training.go index 2edca23c97..ada1d46bf9 100644 --- a/pkg/trainer/training.go +++ b/pkg/trainer/training.go @@ -15,8 +15,8 @@ import ( "sync" "time" + "k8s.io/api/core/v1" "k8s.io/client-go/kubernetes" - "k8s.io/client-go/pkg/api/v1" ) var ( @@ -287,7 +287,7 @@ func (j *TrainingJob) setup(config *spec.ControllerConfig) { if j.job.Spec.RuntimeId == "" { j.job.Spec.RuntimeId = util.RandString(4) } - return nil + return nil }() if err != nil { @@ -347,8 +347,8 @@ func (j *TrainingJob) updateTPRStatus() error { } // reconcile tries to get the job into the desired state. -func (j* TrainingJob) reconcile(config *spec.ControllerConfig) { - if j.status.Phase == spec.TfJobPhaseNone { +func (j *TrainingJob) reconcile(config *spec.ControllerConfig) { + if j.status.Phase == spec.TfJobPhaseNone { // The job hasn't been setup. j.setup(config) diff --git a/pkg/trainer/training_test.go b/pkg/trainer/training_test.go index a45fe33874..f98b717c71 100644 --- a/pkg/trainer/training_test.go +++ b/pkg/trainer/training_test.go @@ -5,12 +5,12 @@ import ( "testing" "github.com/gogo/protobuf/proto" + "github.com/tensorflow/k8s/pkg/spec" + tfJobFake "github.com/tensorflow/k8s/pkg/util/k8sutil/fake" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" - "k8s.io/client-go/pkg/api/v1" - "github.com/tensorflow/k8s/pkg/spec" - tfJobFake "github.com/tensorflow/k8s/pkg/util/k8sutil/fake" "sync" ) @@ -88,9 +88,9 @@ func TestClusterSpec(t *testing.T) { RuntimeId: "runtime", ReplicaSpecs: []*spec.TfReplicaSpec{ { - Replicas: proto.Int32(2), - TfPort: proto.Int32(22), - Template: &v1.PodTemplateSpec{ + Replicas: proto.Int32(2), + TfPort: proto.Int32(22), + Template: &v1.PodTemplateSpec{ Spec: v1.PodSpec{ Containers: []v1.Container{ { @@ -102,9 +102,9 @@ func TestClusterSpec(t *testing.T) { TfReplicaType: spec.PS, }, { - Replicas: proto.Int32(1), - TfPort: proto.Int32(42), - Template: &v1.PodTemplateSpec{ + Replicas: proto.Int32(1), + TfPort: proto.Int32(42), + Template: &v1.PodTemplateSpec{ Spec: v1.PodSpec{ Containers: []v1.Container{ { @@ -116,9 +116,9 @@ func TestClusterSpec(t *testing.T) { TfReplicaType: spec.MASTER, }, { - Replicas: proto.Int32(3), - TfPort: proto.Int32(40), - Template: &v1.PodTemplateSpec{ + Replicas: proto.Int32(3), + TfPort: proto.Int32(40), + Template: &v1.PodTemplateSpec{ Spec: v1.PodSpec{ Containers: []v1.Container{ { @@ -178,9 +178,9 @@ func TestJobSetup(t *testing.T) { type testCase struct { jobSpec *spec.TfJob expectMounts int - expectPhase spec.TfJobPhase + expectPhase spec.TfJobPhase expectReason string - expectState spec.State + expectState spec.State } testCases := []testCase{ @@ -206,8 +206,8 @@ func TestJobSetup(t *testing.T) { }, }, expectMounts: 0, - expectPhase: spec.TfJobPhaseCreating, - expectState: spec.StateRunning, + expectPhase: spec.TfJobPhaseCreating, + expectState: spec.StateRunning, }, { jobSpec: &spec.TfJob{ @@ -236,8 +236,8 @@ func TestJobSetup(t *testing.T) { }, }, expectMounts: 1, - expectPhase: spec.TfJobPhaseCreating, - expectState: spec.StateRunning, + expectPhase: spec.TfJobPhaseCreating, + expectState: spec.StateRunning, }, { // The job should fail setup because the spec is invalid. @@ -268,8 +268,8 @@ func TestJobSetup(t *testing.T) { }, }, expectMounts: 0, - expectPhase: spec.TfJobPhaseFailed, - expectState: spec.StateFailed, + expectPhase: spec.TfJobPhaseFailed, + expectState: spec.StateFailed, expectReason: "tbReplicaSpec.LogDir must be specified", }, } @@ -307,12 +307,12 @@ func TestJobSetup(t *testing.T) { t.Errorf("job.job.Status.Reason Want: %v Got:%v ", c.expectReason, job.status.Reason) } - if (job.status.State != c.expectState) { + if job.status.State != c.expectState { t.Errorf("job.job.Status.State Want: %v Got:%v ", c.expectState, job.status.State) } // Make sure the runtime id is set if the job didn't fail. - if c.expectState!= spec.StateFailed && job.job.Spec.RuntimeId == "" { + if c.expectState != spec.StateFailed && job.job.Spec.RuntimeId == "" { t.Errorf("RuntimeId should not be empty after calling setup.") } diff --git a/pkg/util/k8sutil/election/README b/pkg/util/k8sutil/election/README deleted file mode 100644 index 2e77b9d051..0000000000 --- a/pkg/util/k8sutil/election/README +++ /dev/null @@ -1,20 +0,0 @@ -Date: 01/20/17 - -This package is imported from Kubernetes 1.5 branch . - -client-go doesn’t have leader election package imported at the time of writing. -We are trying our best to communicate with upstream and get that package imported to client-go. - -Meanwhile, that process is slow, and even complicated due to a few aspects: - -- The importing work seems to be happening on 2.0/master but not 1.5 that we are using. -- We are using client-go 1.5 which is k8s 1.4, and we need to pull packages from k8s 1.5 due to some concern. - This is mixing versions, which gets things more complicated. -- This might introduce new API to client-go 1.5, which might get things more complicated. -- There are still concerns on upstream on “write to endpoints”. This is the most complicated. - -The situation is complicated, and we need to expedite our work. -Thus, we fork "pkg/client/leaderelection" from Kubernetes 1.5 branch to our repo. - -Nonetheless, we should try our best to push the changes to upstream and communicate with community members to resolve the problem. -After that we should replace it to client-go again. diff --git a/pkg/util/k8sutil/election/election.go b/pkg/util/k8sutil/election/election.go deleted file mode 100644 index 8d5249d2f4..0000000000 --- a/pkg/util/k8sutil/election/election.go +++ /dev/null @@ -1,275 +0,0 @@ -/* -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 election implements leader election of a set of endpoints. -// It uses an annotation in the endpoints object to store the record of the -// election state. -// -// This implementation does not guarantee that only one client is acting as a -// leader (a.k.a. fencing). A client observes timestamps captured locally to -// infer the state of the leader election. Thus the implementation is tolerant -// to arbitrary clock skew, but is not tolerant to arbitrary clock skew rate. -// -// However the level of tolerance to skew rate can be configured by setting -// RenewDeadline and LeaseDuration appropriately. The tolerance expressed as a -// maximum tolerated ratio of time passed on the fastest node to time passed on -// the slowest node can be approximately achieved with a configuration that sets -// the same ratio of LeaseDuration to RenewDeadline. For example if a user wanted -// to tolerate some nodes progressing forward in time twice as fast as other nodes, -// the user could set LeaseDuration to 60 seconds and RenewDeadline to 30 seconds. -// -// While not required, some method of clock synchronization between nodes in the -// cluster is highly recommended. It's important to keep in mind when configuring -// this client that the tolerance to skew rate varies inversely to master -// availability. -// -// Larger clusters often have a more lenient SLA for API latency. This should be -// taken into account when configuring the client. The rate of leader transitions -// should be monitored and RetryPeriod and LeaseDuration should be increased -// until the rate is stable and acceptably low. It's important to keep in mind -// when configuring this client that the tolerance to API latency varies inversely -// to master availability. -// -// DISCLAIMER: this is an alpha API. This library will likely change significantly -// or even be removed entirely in subsequent releases. Depend on this API at -// your own risk. -package election - -import ( - "fmt" - "reflect" - "time" - - "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/apimachinery/pkg/util/wait" - - "github.com/golang/glog" - rl "github.com/tensorflow/k8s/pkg/util/k8sutil/election/resourcelock" -) - -const ( - JitterFactor = 1.2 - DefaultLeaseDuration = 15 * time.Second - DefaultRenewDeadline = 10 * time.Second - DefaultRetryPeriod = 2 * time.Second -) - -// NewLeadereElector creates a LeaderElector from a LeaderElecitionConfig -func NewLeaderElector(lec LeaderElectionConfig) (*LeaderElector, error) { - if lec.LeaseDuration <= lec.RenewDeadline { - return nil, fmt.Errorf("leaseDuration must be greater than renewDeadline") - } - if lec.RenewDeadline <= time.Duration(JitterFactor*float64(lec.RetryPeriod)) { - return nil, fmt.Errorf("renewDeadline must be greater than retryPeriod*JitterFactor") - } - if lec.Lock == nil { - return nil, fmt.Errorf("Lock must not be nil.") - } - return &LeaderElector{ - config: lec, - }, nil -} - -type LeaderElectionConfig struct { - // Lock is the resource that will be used for locking - Lock rl.Interface - - // LeaseDuration is the duration that non-leader candidates will - // wait to force acquire leadership. This is measured against time of - // last observed ack. - LeaseDuration time.Duration - // RenewDeadline is the duration that the acting master will retry - // refreshing leadership before giving up. - RenewDeadline time.Duration - // RetryPeriod is the duration the LeaderElector clients should wait - // between tries of actions. - RetryPeriod time.Duration - - // Callbacks are callbacks that are triggered during certain lifecycle - // events of the LeaderElector - Callbacks LeaderCallbacks -} - -// LeaderCallbacks are callbacks that are triggered during certain -// lifecycle events of the LeaderElector. These are invoked asynchronously. -// -// possible future callbacks: -// * OnChallenge() -type LeaderCallbacks struct { - // OnStartedLeading is called when a LeaderElector client starts leading - OnStartedLeading func(stop <-chan struct{}) - // OnStoppedLeading is called when a LeaderElector client stops leading - OnStoppedLeading func() - // OnNewLeader is called when the client observes a leader that is - // not the previously observed leader. This includes the first observed - // leader when the client starts. - OnNewLeader func(identity string) -} - -// LeaderElector is a leader election client. -// -// possible future methods: -// * (le *LeaderElector) IsLeader() -// * (le *LeaderElector) GetLeader() -type LeaderElector struct { - config LeaderElectionConfig - // internal bookkeeping - observedRecord rl.LeaderElectionRecord - observedTime time.Time - // used to implement OnNewLeader(), may lag slightly from the - // value observedRecord.HolderIdentity if the transition has - // not yet been reported. - reportedLeader string -} - -// Run starts the leader election loop -func (le *LeaderElector) Run() { - defer func() { - runtime.HandleCrash() - le.config.Callbacks.OnStoppedLeading() - }() - le.acquire() - stop := make(chan struct{}) - go le.config.Callbacks.OnStartedLeading(stop) - le.renew() - close(stop) -} - -// RunOrDie starts a client with the provided config or panics if the config -// fails to validate. -func RunOrDie(lec LeaderElectionConfig) { - le, err := NewLeaderElector(lec) - if err != nil { - panic(err) - } - le.Run() -} - -// GetLeader returns the identity of the last observed leader or returns the empty string if -// no leader has yet been observed. -func (le *LeaderElector) GetLeader() string { - return le.observedRecord.HolderIdentity -} - -// IsLeader returns true if the last observed leader was this client else returns false. -func (le *LeaderElector) IsLeader() bool { - return le.observedRecord.HolderIdentity == le.config.Lock.Identity() -} - -// acquire loops calling tryAcquireOrRenew and returns immediately when tryAcquireOrRenew succeeds. -func (le *LeaderElector) acquire() { - stop := make(chan struct{}) - wait.JitterUntil(func() { - succeeded := le.tryAcquireOrRenew() - le.maybeReportTransition() - desc := le.config.Lock.Describe() - if !succeeded { - glog.V(4).Infof("failed to renew lease %v", desc) - return - } - le.config.Lock.RecordEvent("became leader") - glog.Infof("successfully acquired lease %v", desc) - close(stop) - }, le.config.RetryPeriod, JitterFactor, true, stop) -} - -// renew loops calling tryAcquireOrRenew and returns immediately when tryAcquireOrRenew fails. -func (le *LeaderElector) renew() { - stop := make(chan struct{}) - wait.Until(func() { - err := wait.Poll(le.config.RetryPeriod, le.config.RenewDeadline, func() (bool, error) { - return le.tryAcquireOrRenew(), nil - }) - le.maybeReportTransition() - desc := le.config.Lock.Describe() - if err == nil { - glog.V(4).Infof("successfully renewed lease %v", desc) - return - } - le.config.Lock.RecordEvent("stopped leading") - glog.Infof("failed to renew lease %v", desc) - close(stop) - }, 0, stop) -} - -// tryAcquireOrRenew tries to acquire a leader lease if it is not already acquired, -// else it tries to renew the lease if it has already been acquired. Returns true -// on success else returns false. -func (le *LeaderElector) tryAcquireOrRenew() bool { - now := metav1.Now() - leaderElectionRecord := rl.LeaderElectionRecord{ - HolderIdentity: le.config.Lock.Identity(), - LeaseDurationSeconds: int(le.config.LeaseDuration / time.Second), - RenewTime: now, - AcquireTime: now, - } - - // 1. obtain or create the ElectionRecord - oldLeaderElectionRecord, err := le.config.Lock.Get() - if err != nil { - if !errors.IsNotFound(err) { - glog.Errorf("error retrieving resource lock %v: %v", le.config.Lock.Describe(), err) - return false - } - if err = le.config.Lock.Create(leaderElectionRecord); err != nil { - glog.Errorf("error initially creating leader election record: %v", err) - return false - } - le.observedRecord = leaderElectionRecord - le.observedTime = time.Now() - return true - } - - // 2. Record obtained, check the Identity & Time - if !reflect.DeepEqual(le.observedRecord, *oldLeaderElectionRecord) { - le.observedRecord = *oldLeaderElectionRecord - le.observedTime = time.Now() - } - if le.observedTime.Add(le.config.LeaseDuration).After(now.Time) && - oldLeaderElectionRecord.HolderIdentity != le.config.Lock.Identity() { - glog.Infof("lock is held by %v and has not yet expired", oldLeaderElectionRecord.HolderIdentity) - return false - } - - // 3. We're going to try to update. The leaderElectionRecord is set to it's default - // here. Let's correct it before updating. - if oldLeaderElectionRecord.HolderIdentity == le.config.Lock.Identity() { - leaderElectionRecord.AcquireTime = oldLeaderElectionRecord.AcquireTime - } else { - leaderElectionRecord.LeaderTransitions = oldLeaderElectionRecord.LeaderTransitions + 1 - } - - // update the lock itself - if err = le.config.Lock.Update(leaderElectionRecord); err != nil { - glog.Errorf("Failed to update lock: %v", err) - return false - } - le.observedRecord = leaderElectionRecord - le.observedTime = time.Now() - return true -} - -func (l *LeaderElector) maybeReportTransition() { - if l.observedRecord.HolderIdentity == l.reportedLeader { - return - } - l.reportedLeader = l.observedRecord.HolderIdentity - if l.config.Callbacks.OnNewLeader != nil { - go l.config.Callbacks.OnNewLeader(l.reportedLeader) - } -} diff --git a/pkg/util/k8sutil/election/resourcelock/interface.go b/pkg/util/k8sutil/election/resourcelock/interface.go deleted file mode 100644 index f5a6f65e58..0000000000 --- a/pkg/util/k8sutil/election/resourcelock/interface.go +++ /dev/null @@ -1,71 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package resourcelock - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/tools/record" -) - -const ( - LeaderElectionRecordAnnotationKey = "control-plane.alpha.kubernetes.io/leader" -) - -// LeaderElectionRecord is the record that is stored in the leader election annotation. -// This information should be used for observational purposes only and could be replaced -// with a random string (e.g. UUID) with only slight modification of this code. -// TODO(mikedanese): this should potentially be versioned -type LeaderElectionRecord struct { - HolderIdentity string `json:"holderIdentity"` - LeaseDurationSeconds int `json:"leaseDurationSeconds"` - AcquireTime metav1.Time `json:"acquireTime"` - RenewTime metav1.Time `json:"renewTime"` - LeaderTransitions int `json:"leaderTransitions"` -} - -// ResourceLockConfig common data that exists across different -// resource locks -type ResourceLockConfig struct { - Identity string - EventRecorder record.EventRecorder -} - -// Interface offers a common interface for locking on arbitrary -// resources used in leader election. The Interface is used -// to hide the details on specific implementations in order to allow -// them to change over time. This interface is strictly for use -// by the election code. -type Interface interface { - // Get returns the LeaderElectionRecord - Get() (*LeaderElectionRecord, error) - - // Create attempts to create a LeaderElectionRecord - Create(ler LeaderElectionRecord) error - - // Update will update and existing LeaderElectionRecord - Update(ler LeaderElectionRecord) error - - // RecordEvent is used to record events - RecordEvent(string) - - // Identity will return the locks Identity - Identity() string - - // Describe is used to convert details on current resource lock - // into a string - Describe() string -} diff --git a/pkg/util/k8sutil/tf_job_client.go b/pkg/util/k8sutil/tf_job_client.go index ec813c75d0..08b12efe6f 100644 --- a/pkg/util/k8sutil/tf_job_client.go +++ b/pkg/util/k8sutil/tf_job_client.go @@ -21,7 +21,7 @@ import ( "github.com/tensorflow/k8s/pkg/spec" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" - "k8s.io/client-go/pkg/api" + "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" "github.com/tensorflow/k8s/pkg/util" log "github.com/golang/glog" @@ -61,7 +61,7 @@ func NewTfJobClient() (*TfJobRestClient, error) { config.GroupVersion = &spec.SchemeGroupVersion config.APIPath = "/apis" config.ContentType = runtime.ContentTypeJSON - config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} restcli, err := rest.RESTClientFor(config) if err != nil { diff --git a/test/e2e/main.go b/test/e2e/main.go index 01128eb42e..cc78ade66c 100644 --- a/test/e2e/main.go +++ b/test/e2e/main.go @@ -24,7 +24,7 @@ import ( "github.com/tensorflow/k8s/pkg/util/k8sutil" k8s_errors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/pkg/api/v1" + "k8s.io/api/core/v1" ) const ( diff --git a/vendor/github.com/davecgh/go-spew/.travis.yml b/vendor/github.com/davecgh/go-spew/.travis.yml index 10f469a257..984e0736e7 100644 --- a/vendor/github.com/davecgh/go-spew/.travis.yml +++ b/vendor/github.com/davecgh/go-spew/.travis.yml @@ -1,9 +1,12 @@ language: go -go: 1.2 +go: + - 1.5.4 + - 1.6.3 + - 1.7 install: - - go get -v code.google.com/p/go.tools/cmd/cover + - go get -v golang.org/x/tools/cmd/cover script: - - go test -v -tags=disableunsafe ./spew + - go test -v -tags=safe ./spew - go test -v -tags=testcgo ./spew -covermode=count -coverprofile=profile.cov after_success: - go get -v github.com/mattn/goveralls diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE index 2a7cfd2bf6..c836416192 100644 --- a/vendor/github.com/davecgh/go-spew/LICENSE +++ b/vendor/github.com/davecgh/go-spew/LICENSE @@ -1,4 +1,6 @@ -Copyright (c) 2012-2013 Dave Collins +ISC License + +Copyright (c) 2012-2016 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 diff --git a/vendor/github.com/davecgh/go-spew/README.md b/vendor/github.com/davecgh/go-spew/README.md index 777a8e1d43..262430449b 100644 --- a/vendor/github.com/davecgh/go-spew/README.md +++ b/vendor/github.com/davecgh/go-spew/README.md @@ -1,11 +1,13 @@ go-spew ======= -[![Build Status](https://travis-ci.org/davecgh/go-spew.png?branch=master)] -(https://travis-ci.org/davecgh/go-spew) [![Coverage Status] -(https://coveralls.io/repos/davecgh/go-spew/badge.png?branch=master)] +[![Build Status](https://img.shields.io/travis/davecgh/go-spew.svg)] +(https://travis-ci.org/davecgh/go-spew) [![ISC License] +(http://img.shields.io/badge/license-ISC-blue.svg)](http://copyfree.org) [![Coverage Status] +(https://img.shields.io/coveralls/davecgh/go-spew.svg)] (https://coveralls.io/r/davecgh/go-spew?branch=master) + Go-spew implements a deep pretty printer for Go data structures to aid in debugging. A comprehensive suite of tests with 100% test coverage is provided to ensure proper functionality. See `test_coverage.txt` for the gocov coverage @@ -15,11 +17,11 @@ open source or commercial projects. If you're interested in reading about how this package came to life and some of the challenges involved in providing a deep pretty printer, there is a blog post about it -[here](https://blog.cyphertite.com/go-spew-a-journey-into-dumping-go-data-structures/). +[here](https://web.archive.org/web/20160304013555/https://blog.cyphertite.com/go-spew-a-journey-into-dumping-go-data-structures/). ## Documentation -[![GoDoc](https://godoc.org/github.com/davecgh/go-spew/spew?status.png)] +[![GoDoc](https://img.shields.io/badge/godoc-reference-blue.svg)] (http://godoc.org/github.com/davecgh/go-spew/spew) Full `go doc` style documentation for the project can be viewed online without @@ -157,9 +159,18 @@ options. See the ConfigState documentation for more details. which only accept pointer receivers from non-pointer variables. 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. + App Engine or with the "safe" build tag specified. Pointer method invocation is enabled by default. +* DisablePointerAddresses + DisablePointerAddresses specifies whether to disable the printing of + pointer addresses. This is useful when diffing data structures in tests. + +* DisableCapacities + DisableCapacities specifies whether to disable the printing of capacities + for arrays, slices, maps and channels. This is useful when diffing data + structures in tests. + * ContinueOnMethod Enables recursion into types after invoking error and Stringer interface methods. Recursion after method invocation is disabled by default. @@ -185,10 +196,10 @@ options. See the ConfigState documentation for more details. This package relies on the unsafe package to perform some of the more advanced features, however it also supports a "limited" mode which allows it to work in environments where the unsafe package is not available. By default, it will -operate in this mode on Google App Engine. The "disableunsafe" build tag may -also be specified to force the package to build without using the unsafe -package. +operate in this mode on Google App Engine and when compiled with GopherJS. The +"safe" build tag may also be specified to force the package to build without +using the unsafe package. ## License -Go-spew is licensed under the liberal ISC License. +Go-spew is licensed under the [copyfree](http://copyfree.org) ISC License. diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go index 565bf5899f..8a4a6589a2 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypass.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Dave Collins +// Copyright (c) 2015-2016 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 @@ -13,9 +13,10 @@ // 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 +// when the code is not running on Google App Engine, compiled by GopherJS, and +// "-tags safe" is not added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build !js,!appengine,!safe,!disableunsafe package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go index 457e41235e..1fe3cf3d5d 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Dave Collins +// Copyright (c) 2015-2016 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 @@ -13,9 +13,10 @@ // 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 either the code is running on Google App Engine or "-tags disableunsafe" -// is added to the go build command line. -// +build appengine disableunsafe +// when the code is running on Google App Engine, compiled by GopherJS, or +// "-tags safe" is added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build js appengine safe disableunsafe package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go index 14f02dc15b..1be8ce9457 100644 --- a/vendor/github.com/davecgh/go-spew/spew/common.go +++ b/vendor/github.com/davecgh/go-spew/spew/common.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -180,7 +180,7 @@ func printComplex(w io.Writer, c complex128, floatPrecision int) { w.Write(closeParenBytes) } -// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' +// printHexPtr outputs a uintptr formatted as hexadecimal with a leading '0x' // prefix to Writer w. func printHexPtr(w io.Writer, p uintptr) { // Null pointer. diff --git a/vendor/github.com/davecgh/go-spew/spew/common_test.go b/vendor/github.com/davecgh/go-spew/spew/common_test.go index 39b7525b3d..0f5ce47dca 100644 --- a/vendor/github.com/davecgh/go-spew/spew/common_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/common_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go index ee1ab07b3f..2e3d22f312 100644 --- a/vendor/github.com/davecgh/go-spew/spew/config.go +++ b/vendor/github.com/davecgh/go-spew/spew/config.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -64,9 +64,18 @@ type ConfigState struct { // 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. + // Google App Engine or with the "safe" build tag specified. DisablePointerMethods bool + // DisablePointerAddresses specifies whether to disable the printing of + // pointer addresses. This is useful when diffing data structures in tests. + DisablePointerAddresses bool + + // DisableCapacities specifies whether to disable the printing of capacities + // for arrays, slices, maps and channels. This is useful when diffing + // data structures in tests. + DisableCapacities 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 diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go index 5be0c40609..aacaac6f1e 100644 --- a/vendor/github.com/davecgh/go-spew/spew/doc.go +++ b/vendor/github.com/davecgh/go-spew/spew/doc.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -91,6 +91,15 @@ The following configuration options are available: which only accept pointer receivers from non-pointer variables. Pointer method invocation is enabled by default. + * DisablePointerAddresses + DisablePointerAddresses specifies whether to disable the printing of + pointer addresses. This is useful when diffing data structures in tests. + + * DisableCapacities + DisableCapacities specifies whether to disable the printing of + capacities for arrays, slices, maps and channels. This is useful when + diffing data structures in tests. + * ContinueOnMethod Enables recursion into types after invoking error and Stringer interface methods. Recursion after method invocation is disabled by default. diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go index a0ff95e27e..df1d582a72 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dump.go +++ b/vendor/github.com/davecgh/go-spew/spew/dump.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -129,7 +129,7 @@ func (d *dumpState) dumpPtr(v reflect.Value) { d.w.Write(closeParenBytes) // Display pointer information. - if len(pointerChain) > 0 { + if !d.cs.DisablePointerAddresses && len(pointerChain) > 0 { d.w.Write(openParenBytes) for i, addr := range pointerChain { if i > 0 { @@ -282,13 +282,13 @@ func (d *dumpState) dump(v reflect.Value) { case reflect.Map, reflect.String: valueLen = v.Len() } - if valueLen != 0 || valueCap != 0 { + if valueLen != 0 || !d.cs.DisableCapacities && valueCap != 0 { d.w.Write(openParenBytes) if valueLen != 0 { d.w.Write(lenEqualsBytes) printInt(d.w, int64(valueLen), 10) } - if valueCap != 0 { + if !d.cs.DisableCapacities && valueCap != 0 { if valueLen != 0 { d.w.Write(spaceBytes) } diff --git a/vendor/github.com/davecgh/go-spew/spew/dump_test.go b/vendor/github.com/davecgh/go-spew/spew/dump_test.go index 2b320401df..5aad9c7af0 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dump_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/dump_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -70,7 +70,7 @@ import ( "github.com/davecgh/go-spew/spew" ) -// dumpTest is used to describe a test to be perfomed against the Dump method. +// dumpTest is used to describe a test to be performed against the Dump method. type dumpTest struct { in interface{} wants []string diff --git a/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go b/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go index 18a38358e0..6ab180809a 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2013 Dave Collins +// Copyright (c) 2013-2016 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 @@ -59,10 +59,11 @@ func addCgoDumpTests() { v3Len := fmt.Sprintf("%d", v3l) v3Cap := fmt.Sprintf("%d", v3c) v3t := "[6]testdata._Ctype_unsignedchar" + v3t2 := "[6]testdata._Ctype_uchar" v3s := "(len=" + v3Len + " cap=" + v3Cap + ") " + "{\n 00000000 74 65 73 74 33 00 " + " |test3.|\n}" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") + addDumpTest(v3, "("+v3t+") "+v3s+"\n", "("+v3t2+") "+v3s+"\n") // C signed char array. v4, v4l, v4c := testdata.GetCgoSignedCharArray() diff --git a/vendor/github.com/davecgh/go-spew/spew/example_test.go b/vendor/github.com/davecgh/go-spew/spew/example_test.go index de6c4e3097..c6ec8c6d59 100644 --- a/vendor/github.com/davecgh/go-spew/spew/example_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/example_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go index ecf3b80e24..c49875bacb 100644 --- a/vendor/github.com/davecgh/go-spew/spew/format.go +++ b/vendor/github.com/davecgh/go-spew/spew/format.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 diff --git a/vendor/github.com/davecgh/go-spew/spew/format_test.go b/vendor/github.com/davecgh/go-spew/spew/format_test.go index b664b3f135..f9b93abe86 100644 --- a/vendor/github.com/davecgh/go-spew/spew/format_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/format_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -75,7 +75,7 @@ import ( "github.com/davecgh/go-spew/spew" ) -// formatterTest is used to describe a test to be perfomed against NewFormatter. +// formatterTest is used to describe a test to be performed against NewFormatter. type formatterTest struct { format string in interface{} diff --git a/vendor/github.com/davecgh/go-spew/spew/internal_test.go b/vendor/github.com/davecgh/go-spew/spew/internal_test.go index 1069ee21c1..20a9cfefc6 100644 --- a/vendor/github.com/davecgh/go-spew/spew/internal_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/internal_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 diff --git a/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go b/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go index 83e070e9a8..a0c612ec3d 100644 --- a/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2013-2015 Dave Collins +// Copyright (c) 2013-2016 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 @@ -13,9 +13,10 @@ // 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 +// when the code is not running on Google App Engine, compiled by GopherJS, and +// "-tags safe" is not added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build !js,!appengine,!safe,!disableunsafe /* This test file is part of the spew package rather than than the spew_test diff --git a/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/davecgh/go-spew/spew/spew.go index d8233f542e..32c0e33882 100644 --- a/vendor/github.com/davecgh/go-spew/spew/spew.go +++ b/vendor/github.com/davecgh/go-spew/spew/spew.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 diff --git a/vendor/github.com/davecgh/go-spew/spew/spew_test.go b/vendor/github.com/davecgh/go-spew/spew/spew_test.go index dbbc085679..b70466c69f 100644 --- a/vendor/github.com/davecgh/go-spew/spew/spew_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/spew_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 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 @@ -130,12 +130,19 @@ func initSpewTests() { scsNoPmethods := &spew.ConfigState{Indent: " ", DisablePointerMethods: true} scsMaxDepth := &spew.ConfigState{Indent: " ", MaxDepth: 1} scsContinue := &spew.ConfigState{Indent: " ", ContinueOnMethod: true} + scsNoPtrAddr := &spew.ConfigState{DisablePointerAddresses: true} + scsNoCap := &spew.ConfigState{DisableCapacities: true} // Variables for tests on types which implement Stringer interface with and // without a pointer receiver. ts := stringer("test") tps := pstringer("test") + type ptrTester struct { + s *struct{} + } + tptr := &ptrTester{s: &struct{}{}} + // depthTester is used to test max depth handling for structs, array, slices // and maps. type depthTester struct { @@ -192,6 +199,10 @@ func initSpewTests() { {scsContinue, fCSFprint, "", te, "(error: 10) 10"}, {scsContinue, fCSFdump, "", te, "(spew_test.customError) " + "(error: 10) 10\n"}, + {scsNoPtrAddr, fCSFprint, "", tptr, "<*>{<*>{}}"}, + {scsNoPtrAddr, fCSSdump, "", tptr, "(*spew_test.ptrTester)({\ns: (*struct {})({\n})\n})\n"}, + {scsNoCap, fCSSdump, "", make([]string, 0, 10), "([]string) {\n}\n"}, + {scsNoCap, fCSSdump, "", make([]string, 1, 10), "([]string) (len=1) {\n(string) \"\"\n}\n"}, } } diff --git a/vendor/github.com/docker/distribution/.gitignore b/vendor/github.com/docker/distribution/.gitignore deleted file mode 100644 index 1c3ae0a773..0000000000 --- a/vendor/github.com/docker/distribution/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof - -# never checkin from the bin file (for now) -bin/* - -# Test key files -*.pem - -# Cover profiles -*.out - -# Editor/IDE specific files. -*.sublime-project -*.sublime-workspace diff --git a/vendor/github.com/docker/distribution/.mailmap b/vendor/github.com/docker/distribution/.mailmap deleted file mode 100644 index f0452da619..0000000000 --- a/vendor/github.com/docker/distribution/.mailmap +++ /dev/null @@ -1,16 +0,0 @@ -Stephen J Day Stephen Day -Stephen J Day Stephen Day -Olivier Gambier Olivier Gambier -Brian Bland Brian Bland -Brian Bland Brian Bland -Josh Hawn Josh Hawn -Richard Scothern Richard -Richard Scothern Richard Scothern -Andrew Meredith Andrew Meredith -harche harche -Jessie Frazelle -Sharif Nassar Sharif Nassar -Sven Dowideit Sven Dowideit -Vincent Giersch Vincent Giersch -davidli davidli -Omer Cohen Omer Cohen \ No newline at end of file diff --git a/vendor/github.com/docker/distribution/AUTHORS b/vendor/github.com/docker/distribution/AUTHORS deleted file mode 100644 index 0857b62fc9..0000000000 --- a/vendor/github.com/docker/distribution/AUTHORS +++ /dev/null @@ -1,128 +0,0 @@ -Aaron Lehmann -Aaron Vinson -Adam Enger -Adrian Mouat -Ahmet Alp Balkan -Alex Chan -Alex Elman -amitshukla -Amy Lindburg -Andrew Meredith -Andrew T Nguyen -Andrey Kostov -Andy Goldstein -Anton Tiurin -Antonio Mercado -Antonio Murdaca -Arnaud Porterie -Arthur Baars -Asuka Suzuki -Avi Miller -Ayose Cazorla -BadZen -Ben Firshman -bin liu -Brian Bland -burnettk -Carson A -Chris Dillon -Daisuke Fujita -Darren Shepherd -Dave Trombley -Dave Tucker -David Lawrence -David Verhasselt -David Xia -davidli -Dejan Golja -Derek McGowan -Diogo Mónica -DJ Enriquez -Donald Huang -Doug Davis -Eric Yang -farmerworking -Felix Yan -Florentin Raud -Frederick F. Kautz IV -gabriell nascimento -harche -Henri Gomez -Hu Keping -Hua Wang -HuKeping -Ian Babrou -igayoso -Jack Griffin -Jason Freidman -Jeff Nickoloff -Jessie Frazelle -Jianqing Wang -John Starks -Jon Poler -Jonathan Boulle -Jordan Liggitt -Josh Hawn -Julien Fernandez -Keerthan Mala -Kelsey Hightower -Kenneth Lim -Kenny Leung -Li Yi -Liu Hua -liuchang0812 -Louis Kottmann -Luke Carpenter -Mary Anthony -Matt Bentley -Matt Duch -Matt Moore -Matt Robenolt -Michael Prokop -Michal Minar -Miquel Sabaté -Morgan Bauer -moxiegirl -Nathan Sullivan -nevermosby -Nghia Tran -Nuutti Kotivuori -Oilbeater -Olivier Gambier -Olivier Jacques -Omer Cohen -Patrick Devine -Philip Misiowiec -Richard Scothern -Rodolfo Carvalho -Rusty Conover -Sean Boran -Sebastiaan van Stijn -Sharif Nassar -Shawn Falkner-Horine -Shreyas Karnik -Simon Thulbourn -Spencer Rinehart -Stefan Weil -Stephen J Day -Sungho Moon -Sven Dowideit -Sylvain Baubeau -Ted Reed -tgic -Thomas Sjögren -Tianon Gravi -Tibor Vass -Tonis Tiigi -Trevor Pounds -Troels Thomsen -Vincent Batts -Vincent Demeester -Vincent Giersch -W. Trevor King -weiyuan.yl -xg.song -xiekeyang -Yann ROBERT -yuzou -姜继忠 diff --git a/vendor/github.com/docker/distribution/CONTRIBUTING.md b/vendor/github.com/docker/distribution/CONTRIBUTING.md deleted file mode 100644 index 7cc7aedffe..0000000000 --- a/vendor/github.com/docker/distribution/CONTRIBUTING.md +++ /dev/null @@ -1,140 +0,0 @@ -# Contributing to the registry - -## Before reporting an issue... - -### If your problem is with... - - - automated builds - - your account on the [Docker Hub](https://hub.docker.com/) - - any other [Docker Hub](https://hub.docker.com/) issue - -Then please do not report your issue here - you should instead report it to [https://support.docker.com](https://support.docker.com) - -### If you... - - - need help setting up your registry - - can't figure out something - - are not sure what's going on or what your problem is - -Then please do not open an issue here yet - you should first try one of the following support forums: - - - irc: #docker-distribution on freenode - - mailing-list: or https://groups.google.com/a/dockerproject.org/forum/#!forum/distribution - -## Reporting an issue properly - -By following these simple rules you will get better and faster feedback on your issue. - - - search the bugtracker for an already reported issue - -### If you found an issue that describes your problem: - - - please read other user comments first, and confirm this is the same issue: a given error condition might be indicative of different problems - you may also find a workaround in the comments - - please refrain from adding "same thing here" or "+1" comments - - you don't need to comment on an issue to get notified of updates: just hit the "subscribe" button - - comment if you have some new, technical and relevant information to add to the case - - __DO NOT__ comment on closed issues or merged PRs. If you think you have a related problem, open up a new issue and reference the PR or issue. - -### If you have not found an existing issue that describes your problem: - - 1. create a new issue, with a succinct title that describes your issue: - - bad title: "It doesn't work with my docker" - - good title: "Private registry push fail: 400 error with E_INVALID_DIGEST" - 2. copy the output of: - - `docker version` - - `docker info` - - `docker exec registry -version` - 3. copy the command line you used to launch your Registry - 4. restart your docker daemon in debug mode (add `-D` to the daemon launch arguments) - 5. reproduce your problem and get your docker daemon logs showing the error - 6. if relevant, copy your registry logs that show the error - 7. provide any relevant detail about your specific Registry configuration (e.g., storage backend used) - 8. indicate if you are using an enterprise proxy, Nginx, or anything else between you and your Registry - -## Contributing a patch for a known bug, or a small correction - -You should follow the basic GitHub workflow: - - 1. fork - 2. commit a change - 3. make sure the tests pass - 4. PR - -Additionally, you must [sign your commits](https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work). It's very simple: - - - configure your name with git: `git config user.name "Real Name" && git config user.email mail@example.com` - - sign your commits using `-s`: `git commit -s -m "My commit"` - -Some simple rules to ensure quick merge: - - - clearly point to the issue(s) you want to fix in your PR comment (e.g., `closes #12345`) - - prefer multiple (smaller) PRs addressing individual issues over a big one trying to address multiple issues at once - - if you need to amend your PR following comments, please squash instead of adding more commits - -## Contributing new features - -You are heavily encouraged to first discuss what you want to do. You can do so on the irc channel, or by opening an issue that clearly describes the use case you want to fulfill, or the problem you are trying to solve. - -If this is a major new feature, you should then submit a proposal that describes your technical solution and reasoning. -If you did discuss it first, this will likely be greenlighted very fast. It's advisable to address all feedback on this proposal before starting actual work. - -Then you should submit your implementation, clearly linking to the issue (and possible proposal). - -Your PR will be reviewed by the community, then ultimately by the project maintainers, before being merged. - -It's mandatory to: - - - interact respectfully with other community members and maintainers - more generally, you are expected to abide by the [Docker community rules](https://github.com/docker/docker/blob/master/CONTRIBUTING.md#docker-community-guidelines) - - address maintainers' comments and modify your submission accordingly - - write tests for any new code - -Complying to these simple rules will greatly accelerate the review process, and will ensure you have a pleasant experience in contributing code to the Registry. - -Have a look at a great, successful contribution: the [Swift driver PR](https://github.com/docker/distribution/pull/493) - -## Coding Style - -Unless explicitly stated, we follow all coding guidelines from the Go -community. While some of these standards may seem arbitrary, they somehow seem -to result in a solid, consistent codebase. - -It is possible that the code base does not currently comply with these -guidelines. We are not looking for a massive PR that fixes this, since that -goes against the spirit of the guidelines. All new contributions should make a -best effort to clean up and make the code base better than they left it. -Obviously, apply your best judgement. Remember, the goal here is to make the -code base easier for humans to navigate and understand. Always keep that in -mind when nudging others to comply. - -The rules: - -1. All code should be formatted with `gofmt -s`. -2. All code should pass the default levels of - [`golint`](https://github.com/golang/lint). -3. All code should follow the guidelines covered in [Effective - Go](http://golang.org/doc/effective_go.html) and [Go Code Review - Comments](https://github.com/golang/go/wiki/CodeReviewComments). -4. Comment the code. Tell us the why, the history and the context. -5. Document _all_ declarations and methods, even private ones. Declare - expectations, caveats and anything else that may be important. If a type - gets exported, having the comments already there will ensure it's ready. -6. Variable name length should be proportional to its context and no longer. - `noCommaALongVariableNameLikeThisIsNotMoreClearWhenASimpleCommentWouldDo`. - In practice, short methods will have short variable names and globals will - have longer names. -7. No underscores in package names. If you need a compound name, step back, - and re-examine why you need a compound name. If you still think you need a - compound name, lose the underscore. -8. No utils or helpers packages. If a function is not general enough to - warrant its own package, it has not been written generally enough to be a - part of a util package. Just leave it unexported and well-documented. -9. All tests should run with `go test` and outside tooling should not be - required. No, we don't need another unit testing framework. Assertion - packages are acceptable if they provide _real_ incremental value. -10. Even though we call these "rules" above, they are actually just - guidelines. Since you've read all the rules, you now know that. - -If you are having trouble getting into the mood of idiomatic Go, we recommend -reading through [Effective Go](http://golang.org/doc/effective_go.html). The -[Go Blog](http://blog.golang.org/) is also a great resource. Drinking the -kool-aid is a lot easier than going thirsty. diff --git a/vendor/github.com/docker/distribution/Dockerfile b/vendor/github.com/docker/distribution/Dockerfile deleted file mode 100644 index abb3e3bbf8..0000000000 --- a/vendor/github.com/docker/distribution/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM golang:1.6 - -RUN apt-get update && \ - apt-get install -y apache2-utils && \ - rm -rf /var/lib/apt/lists/* - -ENV DISTRIBUTION_DIR /go/src/github.com/docker/distribution -ENV DOCKER_BUILDTAGS include_oss include_gcs - -WORKDIR $DISTRIBUTION_DIR -COPY . $DISTRIBUTION_DIR -COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml -RUN make PREFIX=/go clean binaries - -VOLUME ["/var/lib/registry"] -EXPOSE 5000 -ENTRYPOINT ["registry"] -CMD ["serve", "/etc/docker/registry/config.yml"] diff --git a/vendor/github.com/docker/distribution/Godeps/Godeps.json b/vendor/github.com/docker/distribution/Godeps/Godeps.json deleted file mode 100644 index 56cd2dd9b5..0000000000 --- a/vendor/github.com/docker/distribution/Godeps/Godeps.json +++ /dev/null @@ -1,430 +0,0 @@ -{ - "ImportPath": "github.com/docker/distribution", - "GoVersion": "go1.6", - "GodepVersion": "v60", - "Packages": [ - "./..." - ], - "Deps": [ - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/storage", - "Comment": "v1.2-334-g95361a2", - "Rev": "95361a2573b1fa92a00c5fc2707a80308483c6f9" - }, - { - "ImportPath": "github.com/Sirupsen/logrus", - "Comment": "v0.7.3", - "Rev": "55eb11d21d2a31a3cc93838241d04800f52e823d" - }, - { - "ImportPath": "github.com/Sirupsen/logrus/formatters/logstash", - "Comment": "v0.7.3", - "Rev": "55eb11d21d2a31a3cc93838241d04800f52e823d" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/awserr", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/awsutil", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/client", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/client/metadata", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/corehandlers", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/defaults", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/ec2metadata", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/request", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/session", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/endpoints", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/restxml", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/signer/v4", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/waiter", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/service/cloudfront/sign", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/service/s3", - "Comment": "v1.1.0-14-g49c3892", - "Rev": "49c3892b61af1d4996292a3025f36e4dfa25eaee" - }, - { - "ImportPath": "github.com/bugsnag/bugsnag-go", - "Comment": "v1.0.2-5-gb1d1530", - "Rev": "b1d153021fcd90ca3f080db36bec96dc690fb274" - }, - { - "ImportPath": "github.com/bugsnag/bugsnag-go/errors", - "Comment": "v1.0.2-5-gb1d1530", - "Rev": "b1d153021fcd90ca3f080db36bec96dc690fb274" - }, - { - "ImportPath": "github.com/bugsnag/osext", - "Rev": "0dd3f918b21bec95ace9dc86c7e70266cfc5c702" - }, - { - "ImportPath": "github.com/bugsnag/panicwrap", - "Comment": "1.0.0-2-ge2c2850", - "Rev": "e2c28503fcd0675329da73bf48b33404db873782" - }, - { - "ImportPath": "github.com/denverdino/aliyungo/common", - "Rev": "6ffb587da9da6d029d0ce517b85fecc82172d502" - }, - { - "ImportPath": "github.com/denverdino/aliyungo/oss", - "Rev": "6ffb587da9da6d029d0ce517b85fecc82172d502" - }, - { - "ImportPath": "github.com/denverdino/aliyungo/util", - "Rev": "6ffb587da9da6d029d0ce517b85fecc82172d502" - }, - { - "ImportPath": "github.com/docker/goamz/aws", - "Rev": "f0a21f5b2e12f83a505ecf79b633bb2035cf6f85" - }, - { - "ImportPath": "github.com/docker/goamz/s3", - "Rev": "f0a21f5b2e12f83a505ecf79b633bb2035cf6f85" - }, - { - "ImportPath": "github.com/docker/libtrust", - "Rev": "fa567046d9b14f6aa788882a950d69651d230b21" - }, - { - "ImportPath": "github.com/garyburd/redigo/internal", - "Rev": "535138d7bcd717d6531c701ef5933d98b1866257" - }, - { - "ImportPath": "github.com/garyburd/redigo/redis", - "Rev": "535138d7bcd717d6531c701ef5933d98b1866257" - }, - { - "ImportPath": "github.com/go-ini/ini", - "Comment": "v1.8.6", - "Rev": "afbd495e5aaea13597b5e14fe514ddeaa4d76fc3" - }, - { - "ImportPath": "github.com/golang/protobuf/proto", - "Rev": "8d92cf5fc15a4382f8964b08e1f42a75c0591aa3" - }, - { - "ImportPath": "github.com/gorilla/context", - "Rev": "14f550f51af52180c2eefed15e5fd18d63c0a64a" - }, - { - "ImportPath": "github.com/gorilla/handlers", - "Rev": "60c7bfde3e33c201519a200a4507a158cc03a17b" - }, - { - "ImportPath": "github.com/gorilla/mux", - "Rev": "e444e69cbd2e2e3e0749a2f3c717cec491552bbf" - }, - { - "ImportPath": "github.com/inconshreveable/mousetrap", - "Rev": "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" - }, - { - "ImportPath": "github.com/jmespath/go-jmespath", - "Comment": "0.2.2-12-g0b12d6b", - "Rev": "0b12d6b521d83fc7f755e7cfc1b1fbdd35a01a74" - }, - { - "ImportPath": "github.com/mitchellh/mapstructure", - "Rev": "482a9fd5fa83e8c4e7817413b80f3eb8feec03ef" - }, - { - "ImportPath": "github.com/ncw/swift", - "Rev": "c54732e87b0b283d1baf0a18db689d0aea460ba3" - }, - { - "ImportPath": "github.com/ncw/swift/swifttest", - "Rev": "c54732e87b0b283d1baf0a18db689d0aea460ba3" - }, - { - "ImportPath": "github.com/spf13/cobra", - "Rev": "312092086bed4968099259622145a0c9ae280064" - }, - { - "ImportPath": "github.com/spf13/pflag", - "Rev": "5644820622454e71517561946e3d94b9f9db6842" - }, - { - "ImportPath": "github.com/stevvooe/resumable", - "Rev": "51ad44105773cafcbe91927f70ac68e1bf78f8b4" - }, - { - "ImportPath": "github.com/stevvooe/resumable/sha256", - "Rev": "51ad44105773cafcbe91927f70ac68e1bf78f8b4" - }, - { - "ImportPath": "github.com/stevvooe/resumable/sha512", - "Rev": "51ad44105773cafcbe91927f70ac68e1bf78f8b4" - }, - { - "ImportPath": "github.com/yvasiyarov/go-metrics", - "Rev": "57bccd1ccd43f94bb17fdd8bf3007059b802f85e" - }, - { - "ImportPath": "github.com/yvasiyarov/gorelic", - "Comment": "v0.0.6-8-ga9bba5b", - "Rev": "a9bba5b9ab508a086f9a12b8c51fab68478e2128" - }, - { - "ImportPath": "github.com/yvasiyarov/newrelic_platform_go", - "Rev": "b21fdbd4370f3717f3bbd2bf41c223bc273068e6" - }, - { - "ImportPath": "golang.org/x/crypto/bcrypt", - "Rev": "c10c31b5e94b6f7a0283272dc2bb27163dcea24b" - }, - { - "ImportPath": "golang.org/x/crypto/blowfish", - "Rev": "c10c31b5e94b6f7a0283272dc2bb27163dcea24b" - }, - { - "ImportPath": "golang.org/x/net/context", - "Rev": "4876518f9e71663000c348837735820161a42df7" - }, - { - "ImportPath": "golang.org/x/net/context/ctxhttp", - "Rev": "4876518f9e71663000c348837735820161a42df7" - }, - { - "ImportPath": "golang.org/x/net/http2", - "Rev": "4876518f9e71663000c348837735820161a42df7" - }, - { - "ImportPath": "golang.org/x/net/http2/hpack", - "Rev": "4876518f9e71663000c348837735820161a42df7" - }, - { - "ImportPath": "golang.org/x/net/internal/timeseries", - "Rev": "4876518f9e71663000c348837735820161a42df7" - }, - { - "ImportPath": "golang.org/x/net/trace", - "Rev": "4876518f9e71663000c348837735820161a42df7" - }, - { - "ImportPath": "golang.org/x/oauth2", - "Rev": "045497edb6234273d67dbc25da3f2ddbc4c4cacf" - }, - { - "ImportPath": "golang.org/x/oauth2/google", - "Rev": "045497edb6234273d67dbc25da3f2ddbc4c4cacf" - }, - { - "ImportPath": "golang.org/x/oauth2/internal", - "Rev": "045497edb6234273d67dbc25da3f2ddbc4c4cacf" - }, - { - "ImportPath": "golang.org/x/oauth2/jws", - "Rev": "045497edb6234273d67dbc25da3f2ddbc4c4cacf" - }, - { - "ImportPath": "golang.org/x/oauth2/jwt", - "Rev": "045497edb6234273d67dbc25da3f2ddbc4c4cacf" - }, - { - "ImportPath": "google.golang.org/api/gensupport", - "Rev": "9bf6e6e569ff057f75d9604a46c52928f17d2b54" - }, - { - "ImportPath": "google.golang.org/api/googleapi", - "Rev": "9bf6e6e569ff057f75d9604a46c52928f17d2b54" - }, - { - "ImportPath": "google.golang.org/api/googleapi/internal/uritemplates", - "Rev": "9bf6e6e569ff057f75d9604a46c52928f17d2b54" - }, - { - "ImportPath": "google.golang.org/api/storage/v1", - "Rev": "9bf6e6e569ff057f75d9604a46c52928f17d2b54" - }, - { - "ImportPath": "google.golang.org/appengine", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal/app_identity", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal/base", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal/datastore", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal/log", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal/modules", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/appengine/internal/remote_api", - "Rev": "12d5545dc1cfa6047a286d5e853841b6471f4c19" - }, - { - "ImportPath": "google.golang.org/cloud", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - }, - { - "ImportPath": "google.golang.org/cloud/compute/metadata", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - }, - { - "ImportPath": "google.golang.org/cloud/internal", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - }, - { - "ImportPath": "google.golang.org/cloud/internal/opts", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - }, - { - "ImportPath": "google.golang.org/cloud/storage", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - }, - { - "ImportPath": "google.golang.org/grpc", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/codes", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/credentials", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/grpclog", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/internal", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/metadata", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/naming", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/peer", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "google.golang.org/grpc/transport", - "Rev": "d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994" - }, - { - "ImportPath": "gopkg.in/check.v1", - "Rev": "64131543e7896d5bcc6bd5a76287eb75ea96c673" - }, - { - "ImportPath": "gopkg.in/yaml.v2", - "Rev": "bef53efd0c76e49e6de55ead051f886bea7e9420" - } - ] -} diff --git a/vendor/github.com/docker/distribution/LICENSE b/vendor/github.com/docker/distribution/LICENSE deleted file mode 100644 index e06d208186..0000000000 --- a/vendor/github.com/docker/distribution/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ -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/MAINTAINERS b/vendor/github.com/docker/distribution/MAINTAINERS deleted file mode 100644 index 97f415dbfb..0000000000 --- a/vendor/github.com/docker/distribution/MAINTAINERS +++ /dev/null @@ -1,63 +0,0 @@ -# Distribution maintainers file -# -# This file describes who runs the docker/distribution project and how. -# This is a living document - if you see something out of date or missing, speak up! -# -# It is structured to be consumable by both humans and programs. -# To extract its contents programmatically, use any TOML-compliant parser. -# -# This file is compiled into the MAINTAINERS file in docker/opensource. -# -[Org] - [Org."Core maintainers"] - people = [ - "aaronlehmann", - "dmcgowan", - "dmp42", - "richardscothern", - "shykes", - "stevvooe", - ] - -[people] - -# A reference list of all people associated with the project. -# All other sections should refer to people by their canonical key -# in the people section. - - # ADD YOURSELF HERE IN ALPHABETICAL ORDER - - [people.aaronlehmann] - Name = "Aaron Lehmann" - Email = "aaron.lehmann@docker.com" - GitHub = "aaronlehmann" - - [people.brianbland] - Name = "Brian Bland" - Email = "brian.bland@docker.com" - GitHub = "BrianBland" - - [people.dmcgowan] - Name = "Derek McGowan" - Email = "derek@mcgstyle.net" - GitHub = "dmcgowan" - - [people.dmp42] - Name = "Olivier Gambier" - Email = "olivier@docker.com" - GitHub = "dmp42" - - [people.richardscothern] - Name = "Richard Scothern" - Email = "richard.scothern@gmail.com" - GitHub = "richardscothern" - - [people.shykes] - Name = "Solomon Hykes" - Email = "solomon@docker.com" - GitHub = "shykes" - - [people.stevvooe] - Name = "Stephen Day" - Email = "stephen.day@docker.com" - GitHub = "stevvooe" diff --git a/vendor/github.com/docker/distribution/Makefile b/vendor/github.com/docker/distribution/Makefile deleted file mode 100644 index a0602d0b2c..0000000000 --- a/vendor/github.com/docker/distribution/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -# Set an output prefix, which is the local directory if not specified -PREFIX?=$(shell pwd) - - -# Used to populate version variable in main package. -VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always) - -# Allow turning off function inlining and variable registerization -ifeq (${DISABLE_OPTIMIZATION},true) - GO_GCFLAGS=-gcflags "-N -l" - VERSION:="$(VERSION)-noopt" -endif - -GO_LDFLAGS=-ldflags "-X `go list ./version`.Version=$(VERSION)" - -.PHONY: clean all fmt vet lint build test binaries -.DEFAULT: all -all: fmt vet lint build test binaries - -AUTHORS: .mailmap .git/HEAD - git log --format='%aN <%aE>' | sort -fu > $@ - -# This only needs to be generated by hand when cutting full releases. -version/version.go: - ./version/version.sh > $@ - -# Required for go 1.5 to build -GO15VENDOREXPERIMENT := 1 - -# Package list -PKGS := $(shell go list -tags "${DOCKER_BUILDTAGS}" ./... | grep -v ^github.com/docker/distribution/vendor/) - -# Resolving binary dependencies for specific targets -GOLINT := $(shell which golint || echo '') -GODEP := $(shell which godep || echo '') - -${PREFIX}/bin/registry: $(wildcard **/*.go) - @echo "+ $@" - @go build -tags "${DOCKER_BUILDTAGS}" -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry - -${PREFIX}/bin/digest: $(wildcard **/*.go) - @echo "+ $@" - @go build -tags "${DOCKER_BUILDTAGS}" -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/digest - -${PREFIX}/bin/registry-api-descriptor-template: $(wildcard **/*.go) - @echo "+ $@" - @go build -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry-api-descriptor-template - -docs/spec/api.md: docs/spec/api.md.tmpl ${PREFIX}/bin/registry-api-descriptor-template - ./bin/registry-api-descriptor-template $< > $@ - -vet: - @echo "+ $@" - @go vet -tags "${DOCKER_BUILDTAGS}" $(PKGS) - -fmt: - @echo "+ $@" - @test -z "$$(gofmt -s -l . 2>&1 | grep -v ^vendor/ | tee /dev/stderr)" || \ - (echo >&2 "+ please format Go code with 'gofmt -s'" && false) - -lint: - @echo "+ $@" - $(if $(GOLINT), , \ - $(error Please install golint: `go get -u github.com/golang/lint/golint`)) - @test -z "$$($(GOLINT) ./... 2>&1 | grep -v ^vendor/ | tee /dev/stderr)" - -build: - @echo "+ $@" - @go build -tags "${DOCKER_BUILDTAGS}" -v ${GO_LDFLAGS} $(PKGS) - -test: - @echo "+ $@" - @go test -test.short -tags "${DOCKER_BUILDTAGS}" $(PKGS) - -test-full: - @echo "+ $@" - @go test -tags "${DOCKER_BUILDTAGS}" $(PKGS) - -binaries: ${PREFIX}/bin/registry ${PREFIX}/bin/digest ${PREFIX}/bin/registry-api-descriptor-template - @echo "+ $@" - -clean: - @echo "+ $@" - @rm -rf "${PREFIX}/bin/registry" "${PREFIX}/bin/digest" "${PREFIX}/bin/registry-api-descriptor-template" - -dep-save: - @echo "+ $@" - $(if $(GODEP), , \ - $(error Please install godep: go get github.com/tools/godep)) - @$(GODEP) save $(PKGS) - -dep-restore: - @echo "+ $@" - $(if $(GODEP), , \ - $(error Please install godep: go get github.com/tools/godep)) - @$(GODEP) restore -v - -dep-validate: dep-restore - @echo "+ $@" - @rm -Rf .vendor.bak - @mv vendor .vendor.bak - @rm -Rf Godeps - @$(GODEP) save ./... - @test -z "$$(diff -r vendor .vendor.bak 2>&1 | tee /dev/stderr)" || \ - (echo >&2 "+ borked dependencies! what you have in Godeps/Godeps.json does not match with what you have in vendor" && false) - @rm -Rf .vendor.bak diff --git a/vendor/github.com/docker/distribution/README.md b/vendor/github.com/docker/distribution/README.md deleted file mode 100644 index c21d47243a..0000000000 --- a/vendor/github.com/docker/distribution/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# Distribution - -The Docker toolset to pack, ship, store, and deliver content. - -This repository's main product is the Docker Registry 2.0 implementation -for storing and distributing Docker images. It supersedes the -[docker/docker-registry](https://github.com/docker/docker-registry) -project with a new API design, focused around security and performance. - - - -[![Circle CI](https://circleci.com/gh/docker/distribution/tree/master.svg?style=svg)](https://circleci.com/gh/docker/distribution/tree/master) -[![GoDoc](https://godoc.org/github.com/docker/distribution?status.svg)](https://godoc.org/github.com/docker/distribution) - -This repository contains the following components: - -|**Component** |Description | -|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **registry** | An implementation of the [Docker Registry HTTP API V2](docs/spec/api.md) for use with docker 1.6+. | -| **libraries** | A rich set of libraries for interacting with distribution components. Please see [godoc](https://godoc.org/github.com/docker/distribution) for details. **Note**: These libraries are **unstable**. | -| **specifications** | _Distribution_ related specifications are available in [docs/spec](docs/spec) | -| **documentation** | Docker's full documentation set is available at [docs.docker.com](https://docs.docker.com). This repository [contains the subset](docs/index.md) related just to the registry. | - -### How does this integrate with Docker engine? - -This project should provide an implementation to a V2 API for use in the [Docker -core project](https://github.com/docker/docker). The API should be embeddable -and simplify the process of securely pulling and pushing content from `docker` -daemons. - -### What are the long term goals of the Distribution project? - -The _Distribution_ project has the further long term goal of providing a -secure tool chain for distributing content. The specifications, APIs and tools -should be as useful with Docker as they are without. - -Our goal is to design a professional grade and extensible content distribution -system that allow users to: - -* Enjoy an efficient, secured and reliable way to store, manage, package and - exchange content -* Hack/roll their own on top of healthy open-source components -* Implement their own home made solution through good specs, and solid - extensions mechanism. - -## More about Registry 2.0 - -The new registry implementation provides the following benefits: - -- faster push and pull -- new, more efficient implementation -- simplified deployment -- pluggable storage backend -- webhook notifications - -For information on upcoming functionality, please see [ROADMAP.md](ROADMAP.md). - -### Who needs to deploy a registry? - -By default, Docker users pull images from Docker's public registry instance. -[Installing Docker](https://docs.docker.com/engine/installation/) gives users this -ability. Users can also push images to a repository on Docker's public registry, -if they have a [Docker Hub](https://hub.docker.com/) account. - -For some users and even companies, this default behavior is sufficient. For -others, it is not. - -For example, users with their own software products may want to maintain a -registry for private, company images. Also, you may wish to deploy your own -image repository for images used to test or in continuous integration. For these -use cases and others, [deploying your own registry instance](docs/deploying.md) -may be the better choice. - -### Migration to Registry 2.0 - -For those who have previously deployed their own registry based on the Registry -1.0 implementation and wish to deploy a Registry 2.0 while retaining images, -data migration is required. A tool to assist with migration efforts has been -created. For more information see [docker/migrator] -(https://github.com/docker/migrator). - -## Contribute - -Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute -issues, fixes, and patches to this project. If you are contributing code, see -the instructions for [building a development environment](docs/building.md). - -## Support - -If any issues are encountered while using the _Distribution_ project, several -avenues are available for support: - - - - - - - - - - - - - - - - - - -
- IRC - - #docker-distribution on FreeNode -
- Issue Tracker - - github.com/docker/distribution/issues -
- Google Groups - - https://groups.google.com/a/dockerproject.org/forum/#!forum/distribution -
- Mailing List - - docker@dockerproject.org -
- - -## License - -This project is distributed under [Apache License, Version 2.0](LICENSE). diff --git a/vendor/github.com/docker/distribution/ROADMAP.md b/vendor/github.com/docker/distribution/ROADMAP.md deleted file mode 100644 index 9cdfa36c92..0000000000 --- a/vendor/github.com/docker/distribution/ROADMAP.md +++ /dev/null @@ -1,267 +0,0 @@ -# Roadmap - -The Distribution Project consists of several components, some of which are -still being defined. This document defines the high-level goals of the -project, identifies the current components, and defines the release- -relationship to the Docker Platform. - -* [Distribution Goals](#distribution-goals) -* [Distribution Components](#distribution-components) -* [Project Planning](#project-planning): release-relationship to the Docker Platform. - -This road map is a living document, providing an overview of the goals and -considerations made in respect of the future of the project. - -## Distribution Goals - -- Replace the existing [docker registry](github.com/docker/docker-registry) - implementation as the primary implementation. -- Replace the existing push and pull code in the docker engine with the - distribution package. -- Define a strong data model for distributing docker images -- Provide a flexible distribution tool kit for use in the docker platform -- Unlock new distribution models - -## Distribution Components - -Components of the Distribution Project are managed via github [milestones](https://github.com/docker/distribution/milestones). Upcoming -features and bugfixes for a component will be added to the relevant milestone. If a feature or -bugfix is not part of a milestone, it is currently unscheduled for -implementation. - -* [Registry](#registry) -* [Distribution Package](#distribution-package) - -*** - -### Registry - -The new Docker registry is the main portion of the distribution repository. -Registry 2.0 is the first release of the next-generation registry. This was -primarily focused on implementing the [new registry -API](https://github.com/docker/distribution/blob/master/docs/spec/api.md), -with a focus on security and performance. - -Following from the Distribution project goals above, we have a set of goals -for registry v2 that we would like to follow in the design. New features -should be compared against these goals. - -#### Data Storage and Distribution First - -The registry's first goal is to provide a reliable, consistent storage -location for Docker images. The registry should only provide the minimal -amount of indexing required to fetch image data and no more. - -This means we should be selective in new features and API additions, including -those that may require expensive, ever growing indexes. Requests should be -servable in "constant time". - -#### Content Addressability - -All data objects used in the registry API should be content addressable. -Content identifiers should be secure and verifiable. This provides a secure, -reliable base from which to build more advanced content distribution systems. - -#### Content Agnostic - -In the past, changes to the image format would require large changes in Docker -and the Registry. By decoupling the distribution and image format, we can -allow the formats to progress without having to coordinate between the two. -This means that we should be focused on decoupling Docker from the registry -just as much as decoupling the registry from Docker. Such an approach will -allow us to unlock new distribution models that haven't been possible before. - -We can take this further by saying that the new registry should be content -agnostic. The registry provides a model of names, tags, manifests and content -addresses and that model can be used to work with content. - -#### Simplicity - -The new registry should be closer to a microservice component than its -predecessor. This means it should have a narrower API and a low number of -service dependencies. It should be easy to deploy. - -This means that other solutions should be explored before changing the API or -adding extra dependencies. If functionality is required, can it be added as an -extension or companion service. - -#### Extensibility - -The registry should provide extension points to add functionality. By keeping -the scope narrow, but providing the ability to add functionality. - -Features like search, indexing, synchronization and registry explorers fall -into this category. No such feature should be added unless we've found it -impossible to do through an extension. - -#### Active Feature Discussions - -The following are feature discussions that are currently active. - -If you don't see your favorite, unimplemented feature, feel free to contact us -via IRC or the mailing list and we can talk about adding it. The goal here is -to make sure that new features go through a rigid design process before -landing in the registry. - -##### Proxying to other Registries - -A _pull-through caching_ mode exists for the registry, but is restricted from -within the docker client to only mirror the official Docker Hub. This functionality -can be expanded when image provenance has been specified and implemented in the -distribution project. - -##### Metadata storage - -Metadata for the registry is currently stored with the manifest and layer data on -the storage backend. While this is a big win for simplicity and reliably maintaining -state, it comes with the cost of consistency and high latency. The mutable registry -metadata operations should be abstracted behind an API which will allow ACID compliant -storage systems to handle metadata. - -##### Peer to Peer transfer - -Discussion has started here: https://docs.google.com/document/d/1rYDpSpJiQWmCQy8Cuiaa3NH-Co33oK_SC9HeXYo87QA/edit - -##### Indexing, Search and Discovery - -The original registry provided some implementation of search for use with -private registries. Support has been elided from V2 since we'd like to both -decouple search functionality from the registry. The makes the registry -simpler to deploy, especially in use cases where search is not needed, and -let's us decouple the image format from the registry. - -There are explorations into using the catalog API and notification system to -build external indexes. The current line of thought is that we will define a -common search API to index and query docker images. Such a system could be run -as a companion to a registry or set of registries to power discovery. - -The main issue with search and discovery is that there are so many ways to -accomplish it. There are two aspects to this project. The first is deciding on -how it will be done, including an API definition that can work with changing -data formats. The second is the process of integrating with `docker search`. -We expect that someone attempts to address the problem with the existing tools -and propose it as a standard search API or uses it to inform a standardization -process. Once this has been explored, we integrate with the docker client. - -Please see the following for more detail: - -- https://github.com/docker/distribution/issues/206 - -##### Deletes - -> __NOTE:__ Deletes are a much asked for feature. Before requesting this -feature or participating in discussion, we ask that you read this section in -full and understand the problems behind deletes. - -While, at first glance, implementing deleting seems simple, there are a number -mitigating factors that make many solutions not ideal or even pathological in -the context of a registry. The following paragraph discuss the background and -approaches that could be applied to a arrive at a solution. - -The goal of deletes in any system is to remove unused or unneeded data. Only -data requested for deletion should be removed and no other data. Removing -unintended data is worse than _not_ removing data that was requested for -removal but ideally, both are supported. Generally, according to this rule, we -err on holding data longer than needed, ensuring that it is only removed when -we can be certain that it can be removed. With the current behavior, we opt to -hold onto the data forever, ensuring that data cannot be incorrectly removed. - -To understand the problems with implementing deletes, one must understand the -data model. All registry data is stored in a filesystem layout, implemented on -a "storage driver", effectively a _virtual file system_ (VFS). The storage -system must assume that this VFS layer will be eventually consistent and has -poor read- after-write consistency, since this is the lower common denominator -among the storage drivers. This is mitigated by writing values in reverse- -dependent order, but makes wider transactional operations unsafe. - -Layered on the VFS model is a content-addressable _directed, acyclic graph_ -(DAG) made up of blobs. Manifests reference layers. Tags reference manifests. -Since the same data can be referenced by multiple manifests, we only store -data once, even if it is in different repositories. Thus, we have a set of -blobs, referenced by tags and manifests. If we want to delete a blob we need -to be certain that it is no longer referenced by another manifest or tag. When -we delete a manifest, we also can try to delete the referenced blobs. Deciding -whether or not a blob has an active reference is the crux of the problem. - -Conceptually, deleting a manifest and its resources is quite simple. Just find -all the manifests, enumerate the referenced blobs and delete the blobs not in -that set. An astute observer will recognize this as a garbage collection -problem. As with garbage collection in programming languages, this is very -simple when one always has a consistent view. When one adds parallelism and an -inconsistent view of data, it becomes very challenging. - -A simple example can demonstrate this. Let's say we are deleting a manifest -_A_ in one process. We scan the manifest and decide that all the blobs are -ready for deletion. Concurrently, we have another process accepting a new -manifest _B_ referencing one or more blobs from the manifest _A_. Manifest _B_ -is accepted and all the blobs are considered present, so the operation -proceeds. The original process then deletes the referenced blobs, assuming -they were unreferenced. The manifest _B_, which we thought had all of its data -present, can no longer be served by the registry, since the dependent data has -been deleted. - -Deleting data from the registry safely requires some way to coordinate this -operation. The following approaches are being considered: - -- _Reference Counting_ - Maintain a count of references to each blob. This is - challenging for a number of reasons: 1. maintaining a consistent consensus - of reference counts across a set of Registries and 2. Building the initial - list of reference counts for an existing registry. These challenges can be - met with a consensus protocol like Paxos or Raft in the first case and a - necessary but simple scan in the second.. -- _Lock the World GC_ - Halt all writes to the data store. Walk the data store - and find all blob references. Delete all unreferenced blobs. This approach - is very simple but requires disabling writes for a period of time while the - service reads all data. This is slow and expensive but very accurate and - effective. -- _Generational GC_ - Do something similar to above but instead of blocking - writes, writes are sent to another storage backend while reads are broadcast - to the new and old backends. GC is then performed on the read-only portion. - Because writes land in the new backend, the data in the read-only section - can be safely deleted. The main drawbacks of this approach are complexity - and coordination. -- _Centralized Oracle_ - Using a centralized, transactional database, we can - know exactly which data is referenced at any given time. This avoids - coordination problem by managing this data in a single location. We trade - off metadata scalability for simplicity and performance. This is a very good - option for most registry deployments. This would create a bottleneck for - registry metadata. However, metadata is generally not the main bottleneck - when serving images. - -Please let us know if other solutions exist that we have yet to enumerate. -Note that for any approach, implementation is a massive consideration. For -example, a mark-sweep based solution may seem simple but the amount of work in -coordination offset the extra work it might take to build a _Centralized -Oracle_. We'll accept proposals for any solution but please coordinate with us -before dropping code. - -At this time, we have traded off simplicity and ease of deployment for disk -space. Simplicity and ease of deployment tend to reduce developer involvement, -which is currently the most expensive resource in software engineering. Taking -on any solution for deletes will greatly effect these factors, trading off -very cheap disk space for a complex deployment and operational story. - -Please see the following issues for more detail: - -- https://github.com/docker/distribution/issues/422 -- https://github.com/docker/distribution/issues/461 -- https://github.com/docker/distribution/issues/462 - -### Distribution Package - -At its core, the Distribution Project is a set of Go packages that make up -Distribution Components. At this time, most of these packages make up the -Registry implementation. - -The package itself is considered unstable. If you're using it, please take care to vendor the dependent version. - -For feature additions, please see the Registry section. In the future, we may break out a -separate Roadmap for distribution-specific features that apply to more than -just the registry. - -*** - -### Project Planning - -An [Open-Source Planning Process](https://github.com/docker/distribution/wiki/Open-Source-Planning-Process) is used to define the Roadmap. [Project Pages](https://github.com/docker/distribution/wiki) define the goals for each Milestone and identify current progress. - diff --git a/vendor/github.com/docker/distribution/blobs.go b/vendor/github.com/docker/distribution/blobs.go deleted file mode 100644 index 1765e9f740..0000000000 --- a/vendor/github.com/docker/distribution/blobs.go +++ /dev/null @@ -1,237 +0,0 @@ -package distribution - -import ( - "errors" - "fmt" - "io" - "net/http" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" -) - -var ( - // ErrBlobExists returned when blob already exists - ErrBlobExists = errors.New("blob exists") - - // ErrBlobDigestUnsupported when blob digest is an unsupported version. - ErrBlobDigestUnsupported = errors.New("unsupported blob digest") - - // ErrBlobUnknown when blob is not found. - ErrBlobUnknown = errors.New("unknown blob") - - // ErrBlobUploadUnknown returned when upload is not found. - ErrBlobUploadUnknown = errors.New("blob upload unknown") - - // ErrBlobInvalidLength returned when the blob has an expected length on - // commit, meaning mismatched with the descriptor or an invalid value. - ErrBlobInvalidLength = errors.New("blob invalid length") -) - -// ErrBlobInvalidDigest returned when digest check fails. -type ErrBlobInvalidDigest struct { - Digest digest.Digest - Reason error -} - -func (err ErrBlobInvalidDigest) Error() string { - return fmt.Sprintf("invalid digest for referenced layer: %v, %v", - err.Digest, err.Reason) -} - -// ErrBlobMounted returned when a blob is mounted from another repository -// instead of initiating an upload session. -type ErrBlobMounted struct { - From reference.Canonical - Descriptor Descriptor -} - -func (err ErrBlobMounted) Error() string { - return fmt.Sprintf("blob mounted from: %v to: %v", - err.From, err.Descriptor) -} - -// Descriptor describes targeted content. Used in conjunction with a blob -// store, a descriptor can be used to fetch, store and target any kind of -// blob. The struct also describes the wire protocol format. Fields should -// only be added but never changed. -type Descriptor struct { - // MediaType describe the type of the content. All text based formats are - // encoded as utf-8. - MediaType string `json:"mediaType,omitempty"` - - // Size in bytes of content. - Size int64 `json:"size,omitempty"` - - // Digest uniquely identifies the content. A byte stream can be verified - // against against this digest. - Digest digest.Digest `json:"digest,omitempty"` - - // NOTE: Before adding a field here, please ensure that all - // other options have been exhausted. Much of the type relationships - // depend on the simplicity of this type. -} - -// Descriptor returns the descriptor, to make it satisfy the Describable -// interface. Note that implementations of Describable are generally objects -// which can be described, not simply descriptors; this exception is in place -// to make it more convenient to pass actual descriptors to functions that -// expect Describable objects. -func (d Descriptor) Descriptor() Descriptor { - return d -} - -// BlobStatter makes blob descriptors available by digest. The service may -// provide a descriptor of a different digest if the provided digest is not -// canonical. -type BlobStatter interface { - // Stat provides metadata about a blob identified by the digest. If the - // blob is unknown to the describer, ErrBlobUnknown will be returned. - Stat(ctx context.Context, dgst digest.Digest) (Descriptor, error) -} - -// BlobDeleter enables deleting blobs from storage. -type BlobDeleter interface { - Delete(ctx context.Context, dgst digest.Digest) error -} - -// BlobEnumerator enables iterating over blobs from storage -type BlobEnumerator interface { - Enumerate(ctx context.Context, ingester func(dgst digest.Digest) error) error -} - -// BlobDescriptorService manages metadata about a blob by digest. Most -// implementations will not expose such an interface explicitly. Such mappings -// should be maintained by interacting with the BlobIngester. Hence, this is -// left off of BlobService and BlobStore. -type BlobDescriptorService interface { - BlobStatter - - // SetDescriptor assigns the descriptor to the digest. The provided digest and - // the digest in the descriptor must map to identical content but they may - // differ on their algorithm. The descriptor must have the canonical - // digest of the content and the digest algorithm must match the - // annotators canonical algorithm. - // - // Such a facility can be used to map blobs between digest domains, with - // the restriction that the algorithm of the descriptor must match the - // canonical algorithm (ie sha256) of the annotator. - SetDescriptor(ctx context.Context, dgst digest.Digest, desc Descriptor) error - - // Clear enables descriptors to be unlinked - Clear(ctx context.Context, dgst digest.Digest) error -} - -// ReadSeekCloser is the primary reader type for blob data, combining -// io.ReadSeeker with io.Closer. -type ReadSeekCloser interface { - io.ReadSeeker - io.Closer -} - -// BlobProvider describes operations for getting blob data. -type BlobProvider interface { - // Get returns the entire blob identified by digest along with the descriptor. - Get(ctx context.Context, dgst digest.Digest) ([]byte, error) - - // Open provides a ReadSeekCloser to the blob identified by the provided - // descriptor. If the blob is not known to the service, an error will be - // returned. - Open(ctx context.Context, dgst digest.Digest) (ReadSeekCloser, error) -} - -// BlobServer can serve blobs via http. -type BlobServer interface { - // ServeBlob attempts to serve the blob, identifed by dgst, via http. The - // service may decide to redirect the client elsewhere or serve the data - // directly. - // - // This handler only issues successful responses, such as 2xx or 3xx, - // meaning it serves data or issues a redirect. If the blob is not - // available, an error will be returned and the caller may still issue a - // response. - // - // The implementation may serve the same blob from a different digest - // domain. The appropriate headers will be set for the blob, unless they - // have already been set by the caller. - ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error -} - -// BlobIngester ingests blob data. -type BlobIngester interface { - // Put inserts the content p into the blob service, returning a descriptor - // or an error. - Put(ctx context.Context, mediaType string, p []byte) (Descriptor, error) - - // Create allocates a new blob writer to add a blob to this service. The - // returned handle can be written to and later resumed using an opaque - // identifier. With this approach, one can Close and Resume a BlobWriter - // multiple times until the BlobWriter is committed or cancelled. - Create(ctx context.Context, options ...BlobCreateOption) (BlobWriter, error) - - // Resume attempts to resume a write to a blob, identified by an id. - Resume(ctx context.Context, id string) (BlobWriter, error) -} - -// BlobCreateOption is a general extensible function argument for blob creation -// methods. A BlobIngester may choose to honor any or none of the given -// BlobCreateOptions, which can be specific to the implementation of the -// BlobIngester receiving them. -// TODO (brianbland): unify this with ManifestServiceOption in the future -type BlobCreateOption interface { - Apply(interface{}) error -} - -// BlobWriter provides a handle for inserting data into a blob store. -// Instances should be obtained from BlobWriteService.Writer and -// BlobWriteService.Resume. If supported by the store, a writer can be -// recovered with the id. -type BlobWriter interface { - io.WriteCloser - io.ReaderFrom - - // Size returns the number of bytes written to this blob. - Size() int64 - - // ID returns the identifier for this writer. The ID can be used with the - // Blob service to later resume the write. - ID() string - - // StartedAt returns the time this blob write was started. - StartedAt() time.Time - - // Commit completes the blob writer process. The content is verified - // against the provided provisional descriptor, which may result in an - // error. Depending on the implementation, written data may be validated - // against the provisional descriptor fields. If MediaType is not present, - // the implementation may reject the commit or assign "application/octet- - // stream" to the blob. The returned descriptor may have a different - // digest depending on the blob store, referred to as the canonical - // descriptor. - Commit(ctx context.Context, provisional Descriptor) (canonical Descriptor, err error) - - // Cancel ends the blob write without storing any data and frees any - // associated resources. Any data written thus far will be lost. Cancel - // implementations should allow multiple calls even after a commit that - // result in a no-op. This allows use of Cancel in a defer statement, - // increasing the assurance that it is correctly called. - Cancel(ctx context.Context) error -} - -// BlobService combines the operations to access, read and write blobs. This -// can be used to describe remote blob services. -type BlobService interface { - BlobStatter - BlobProvider - BlobIngester -} - -// BlobStore represent the entire suite of blob related operations. Such an -// implementation can access, read, write, delete and serve blobs. -type BlobStore interface { - BlobService - BlobServer - BlobDeleter -} diff --git a/vendor/github.com/docker/distribution/circle.yml b/vendor/github.com/docker/distribution/circle.yml deleted file mode 100644 index 3d1ffd2f06..0000000000 --- a/vendor/github.com/docker/distribution/circle.yml +++ /dev/null @@ -1,89 +0,0 @@ -# Pony-up! -machine: - pre: - # Install gvm - - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/1.0.22/binscripts/gvm-installer) - # Install codecov for coverage - - pip install --user codecov - - post: - # go - - gvm install go1.6 --prefer-binary --name=stable - - environment: - # Convenient shortcuts to "common" locations - CHECKOUT: /home/ubuntu/$CIRCLE_PROJECT_REPONAME - BASE_DIR: src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME - # Trick circle brainflat "no absolute path" behavior - BASE_STABLE: ../../../$HOME/.gvm/pkgsets/stable/global/$BASE_DIR - DOCKER_BUILDTAGS: "include_oss include_gcs" - # Workaround Circle parsing dumb bugs and/or YAML wonkyness - CIRCLE_PAIN: "mode: set" - - hosts: - # Not used yet - fancy: 127.0.0.1 - -dependencies: - pre: - # Copy the code to the gopath of all go versions - - > - gvm use stable && - mkdir -p "$(dirname $BASE_STABLE)" && - cp -R "$CHECKOUT" "$BASE_STABLE" - - override: - # Install dependencies for every copied clone/go version - - gvm use stable && go get github.com/tools/godep: - pwd: $BASE_STABLE - - post: - # For the stable go version, additionally install linting tools - - > - gvm use stable && - go get github.com/axw/gocov/gocov github.com/golang/lint/golint - -test: - pre: - # Output the go versions we are going to test - # - gvm use old && go version - - gvm use stable && go version - - # Ensure validation of dependencies - - gvm use stable && if test -n "`git diff --stat=1000 master | grep -Ei \"vendor|godeps\"`"; then make dep-validate; fi: - pwd: $BASE_STABLE - - # First thing: build everything. This will catch compile errors, and it's - # also necessary for go vet to work properly (see #807). - - gvm use stable && godep go install $(go list ./... | grep -v "/vendor/"): - pwd: $BASE_STABLE - - # FMT - - gvm use stable && make fmt: - pwd: $BASE_STABLE - - # VET - - gvm use stable && make vet: - pwd: $BASE_STABLE - - # LINT - - gvm use stable && make lint: - pwd: $BASE_STABLE - - override: - # Test stable, and report - - gvm use stable; export ROOT_PACKAGE=$(go list .); go list -tags "$DOCKER_BUILDTAGS" ./... | grep -v "/vendor/" | xargs -L 1 -I{} bash -c 'export PACKAGE={}; godep go test -tags "$DOCKER_BUILDTAGS" -test.short -coverprofile=$GOPATH/src/$PACKAGE/coverage.out -coverpkg=$(./coverpkg.sh $PACKAGE $ROOT_PACKAGE) $PACKAGE': - timeout: 600 - pwd: $BASE_STABLE - - post: - # Report to codecov - - bash <(curl -s https://codecov.io/bash): - pwd: $BASE_STABLE - - ## Notes - # Disabled the -race detector due to massive memory usage. - # Do we want these as well? - # - go get code.google.com/p/go.tools/cmd/goimports - # - test -z "$(goimports -l -w ./... | tee /dev/stderr)" - # http://labix.org/gocheck diff --git a/vendor/github.com/docker/distribution/cmd/digest/main.go b/vendor/github.com/docker/distribution/cmd/digest/main.go deleted file mode 100644 index 49426a8863..0000000000 --- a/vendor/github.com/docker/distribution/cmd/digest/main.go +++ /dev/null @@ -1,97 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "io" - "log" - "os" - - "github.com/docker/distribution/digest" - "github.com/docker/distribution/version" -) - -var ( - algorithm = digest.Canonical - showVersion bool -) - -type job struct { - name string - reader io.Reader -} - -func init() { - flag.Var(&algorithm, "a", "select the digest algorithm (shorthand)") - flag.Var(&algorithm, "algorithm", "select the digest algorithm") - flag.BoolVar(&showVersion, "version", false, "show the version and exit") - - log.SetFlags(0) - log.SetPrefix(os.Args[0] + ": ") -} - -func usage() { - fmt.Fprintf(os.Stderr, "usage: %s [files...]\n", os.Args[0]) - fmt.Fprintf(os.Stderr, ` -Calculate the digest of one or more input files, emitting the result -to standard out. If no files are provided, the digest of stdin will -be calculated. - -`) - flag.PrintDefaults() -} - -func unsupported() { - log.Fatalf("unsupported digest algorithm: %v", algorithm) -} - -func main() { - var jobs []job - - flag.Usage = usage - flag.Parse() - if showVersion { - version.PrintVersion() - return - } - - var fail bool // if we fail on one item, foul the exit code - if flag.NArg() > 0 { - for _, path := range flag.Args() { - fp, err := os.Open(path) - - if err != nil { - log.Printf("%s: %v", path, err) - fail = true - continue - } - defer fp.Close() - - jobs = append(jobs, job{name: path, reader: fp}) - } - } else { - // just read stdin - jobs = append(jobs, job{name: "-", reader: os.Stdin}) - } - - digestFn := algorithm.FromReader - - if !algorithm.Available() { - unsupported() - } - - for _, job := range jobs { - dgst, err := digestFn(job.reader) - if err != nil { - log.Printf("%s: %v", job.name, err) - fail = true - continue - } - - fmt.Printf("%v\t%s\n", dgst, job.name) - } - - if fail { - os.Exit(1) - } -} diff --git a/vendor/github.com/docker/distribution/cmd/registry-api-descriptor-template/main.go b/vendor/github.com/docker/distribution/cmd/registry-api-descriptor-template/main.go deleted file mode 100644 index e9cbc42a42..0000000000 --- a/vendor/github.com/docker/distribution/cmd/registry-api-descriptor-template/main.go +++ /dev/null @@ -1,131 +0,0 @@ -// registry-api-descriptor-template uses the APIDescriptor defined in the -// api/v2 package to execute templates passed to the command line. -// -// For example, to generate a new API specification, one would execute the -// following command from the repo root: -// -// $ registry-api-descriptor-template docs/spec/api.md.tmpl > docs/spec/api.md -// -// The templates are passed in the api/v2.APIDescriptor object. Please see the -// package documentation for fields available on that object. The template -// syntax is from Go's standard library text/template package. For information -// on Go's template syntax, please see golang.org/pkg/text/template. -package main - -import ( - "log" - "net/http" - "os" - "path/filepath" - "regexp" - "text/template" - - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" -) - -var spaceRegex = regexp.MustCompile(`\n\s*`) - -func main() { - - if len(os.Args) != 2 { - log.Fatalln("please specify a template to execute.") - } - - path := os.Args[1] - filename := filepath.Base(path) - - funcMap := template.FuncMap{ - "removenewlines": func(s string) string { - return spaceRegex.ReplaceAllString(s, " ") - }, - "statustext": http.StatusText, - "prettygorilla": prettyGorillaMuxPath, - } - - tmpl := template.Must(template.New(filename).Funcs(funcMap).ParseFiles(path)) - - data := struct { - RouteDescriptors []v2.RouteDescriptor - ErrorDescriptors []errcode.ErrorDescriptor - }{ - RouteDescriptors: v2.APIDescriptor.RouteDescriptors, - ErrorDescriptors: append(errcode.GetErrorCodeGroup("registry.api.v2"), - // The following are part of the specification but provided by errcode default. - errcode.ErrorCodeUnauthorized.Descriptor(), - errcode.ErrorCodeDenied.Descriptor(), - errcode.ErrorCodeUnsupported.Descriptor()), - } - - if err := tmpl.Execute(os.Stdout, data); err != nil { - log.Fatalln(err) - } -} - -// prettyGorillaMuxPath removes the regular expressions from a gorilla/mux -// route string, making it suitable for documentation. -func prettyGorillaMuxPath(s string) string { - // Stateful parser that removes regular expressions from gorilla - // routes. It correctly handles balanced bracket pairs. - - var output string - var label string - var level int - -start: - if s[0] == '{' { - s = s[1:] - level++ - goto capture - } - - output += string(s[0]) - s = s[1:] - - goto end -capture: - switch s[0] { - case '{': - level++ - case '}': - level-- - - if level == 0 { - s = s[1:] - goto label - } - case ':': - s = s[1:] - goto skip - default: - label += string(s[0]) - } - s = s[1:] - goto capture -skip: - switch s[0] { - case '{': - level++ - case '}': - level-- - } - s = s[1:] - - if level == 0 { - goto label - } - - goto skip -label: - if label != "" { - output += "<" + label + ">" - label = "" - } -end: - if s != "" { - goto start - } - - return output - -} diff --git a/vendor/github.com/docker/distribution/cmd/registry/config-cache.yml b/vendor/github.com/docker/distribution/cmd/registry/config-cache.yml deleted file mode 100644 index 7a274ea591..0000000000 --- a/vendor/github.com/docker/distribution/cmd/registry/config-cache.yml +++ /dev/null @@ -1,55 +0,0 @@ -version: 0.1 -log: - level: debug - fields: - service: registry - environment: development -storage: - cache: - blobdescriptor: redis - filesystem: - rootdirectory: /var/lib/registry-cache - maintenance: - uploadpurging: - enabled: false -http: - addr: :5000 - secret: asecretforlocaldevelopment - debug: - addr: localhost:5001 - headers: - X-Content-Type-Options: [nosniff] -redis: - addr: localhost:6379 - pool: - maxidle: 16 - maxactive: 64 - idletimeout: 300s - dialtimeout: 10ms - readtimeout: 10ms - writetimeout: 10ms -notifications: - endpoints: - - name: local-8082 - url: http://localhost:5003/callback - headers: - Authorization: [Bearer ] - timeout: 1s - threshold: 10 - backoff: 1s - disabled: true - - name: local-8083 - url: http://localhost:8083/callback - timeout: 1s - threshold: 10 - backoff: 1s - disabled: true -proxy: - remoteurl: https://registry-1.docker.io - username: username - password: password -health: - storagedriver: - enabled: true - interval: 10s - threshold: 3 diff --git a/vendor/github.com/docker/distribution/cmd/registry/config-dev.yml b/vendor/github.com/docker/distribution/cmd/registry/config-dev.yml deleted file mode 100644 index b6438be50a..0000000000 --- a/vendor/github.com/docker/distribution/cmd/registry/config-dev.yml +++ /dev/null @@ -1,66 +0,0 @@ -version: 0.1 -log: - level: debug - fields: - service: registry - environment: development - hooks: - - type: mail - disabled: true - levels: - - panic - options: - smtp: - addr: mail.example.com:25 - username: mailuser - password: password - insecure: true - from: sender@example.com - to: - - errors@example.com -storage: - delete: - enabled: true - cache: - blobdescriptor: redis - filesystem: - rootdirectory: /var/lib/registry - maintenance: - uploadpurging: - enabled: false -http: - addr: :5000 - debug: - addr: localhost:5001 - headers: - X-Content-Type-Options: [nosniff] -redis: - addr: localhost:6379 - pool: - maxidle: 16 - maxactive: 64 - idletimeout: 300s - dialtimeout: 10ms - readtimeout: 10ms - writetimeout: 10ms -notifications: - endpoints: - - name: local-5003 - url: http://localhost:5003/callback - headers: - Authorization: [Bearer ] - timeout: 1s - threshold: 10 - backoff: 1s - disabled: true - - name: local-8083 - url: http://localhost:8083/callback - timeout: 1s - threshold: 10 - backoff: 1s - disabled: true -health: - storagedriver: - enabled: true - interval: 10s - threshold: 3 diff --git a/vendor/github.com/docker/distribution/cmd/registry/config-example.yml b/vendor/github.com/docker/distribution/cmd/registry/config-example.yml deleted file mode 100644 index 3277f9a2e5..0000000000 --- a/vendor/github.com/docker/distribution/cmd/registry/config-example.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 0.1 -log: - fields: - service: registry -storage: - cache: - blobdescriptor: inmemory - filesystem: - rootdirectory: /var/lib/registry -http: - addr: :5000 - headers: - X-Content-Type-Options: [nosniff] -health: - storagedriver: - enabled: true - interval: 10s - threshold: 3 diff --git a/vendor/github.com/docker/distribution/cmd/registry/main.go b/vendor/github.com/docker/distribution/cmd/registry/main.go deleted file mode 100644 index 686af12b8b..0000000000 --- a/vendor/github.com/docker/distribution/cmd/registry/main.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import ( - _ "net/http/pprof" - - "github.com/docker/distribution/registry" - _ "github.com/docker/distribution/registry/auth/htpasswd" - _ "github.com/docker/distribution/registry/auth/silly" - _ "github.com/docker/distribution/registry/auth/token" - _ "github.com/docker/distribution/registry/proxy" - _ "github.com/docker/distribution/registry/storage/driver/azure" - _ "github.com/docker/distribution/registry/storage/driver/filesystem" - _ "github.com/docker/distribution/registry/storage/driver/gcs" - _ "github.com/docker/distribution/registry/storage/driver/inmemory" - _ "github.com/docker/distribution/registry/storage/driver/middleware/cloudfront" - _ "github.com/docker/distribution/registry/storage/driver/oss" - _ "github.com/docker/distribution/registry/storage/driver/s3-aws" - _ "github.com/docker/distribution/registry/storage/driver/s3-goamz" - _ "github.com/docker/distribution/registry/storage/driver/swift" -) - -func main() { - registry.RootCmd.Execute() -} diff --git a/vendor/github.com/docker/distribution/configuration/configuration.go b/vendor/github.com/docker/distribution/configuration/configuration.go deleted file mode 100644 index 90fd422c01..0000000000 --- a/vendor/github.com/docker/distribution/configuration/configuration.go +++ /dev/null @@ -1,590 +0,0 @@ -package configuration - -import ( - "fmt" - "io" - "io/ioutil" - "net/http" - "reflect" - "strings" - "time" -) - -// Configuration is a versioned registry configuration, intended to be provided by a yaml file, and -// optionally modified by environment variables. -// -// Note that yaml field names should never include _ characters, since this is the separator used -// in environment variable names. -type Configuration struct { - // Version is the version which defines the format of the rest of the configuration - Version Version `yaml:"version"` - - // Log supports setting various parameters related to the logging - // subsystem. - Log struct { - // Level is the granularity at which registry operations are logged. - Level Loglevel `yaml:"level"` - - // Formatter overrides the default formatter with another. Options - // include "text", "json" and "logstash". - Formatter string `yaml:"formatter,omitempty"` - - // Fields allows users to specify static string fields to include in - // the logger context. - Fields map[string]interface{} `yaml:"fields,omitempty"` - - // Hooks allows users to configurate the log hooks, to enabling the - // sequent handling behavior, when defined levels of log message emit. - Hooks []LogHook `yaml:"hooks,omitempty"` - } - - // Loglevel is the level at which registry operations are logged. This is - // deprecated. Please use Log.Level in the future. - Loglevel Loglevel `yaml:"loglevel,omitempty"` - - // Storage is the configuration for the registry's storage driver - Storage Storage `yaml:"storage"` - - // Auth allows configuration of various authorization methods that may be - // used to gate requests. - Auth Auth `yaml:"auth,omitempty"` - - // Middleware lists all middlewares to be used by the registry. - Middleware map[string][]Middleware `yaml:"middleware,omitempty"` - - // Reporting is the configuration for error reporting - Reporting Reporting `yaml:"reporting,omitempty"` - - // HTTP contains configuration parameters for the registry's http - // interface. - HTTP struct { - // Addr specifies the bind address for the registry instance. - Addr string `yaml:"addr,omitempty"` - - // Net specifies the net portion of the bind address. A default empty value means tcp. - Net string `yaml:"net,omitempty"` - - // Host specifies an externally-reachable address for the registry, as a fully - // qualified URL. - Host string `yaml:"host,omitempty"` - - Prefix string `yaml:"prefix,omitempty"` - - // Secret specifies the secret key which HMAC tokens are created with. - Secret string `yaml:"secret,omitempty"` - - // RelativeURLs specifies that relative URLs should be returned in - // Location headers - RelativeURLs bool `yaml:"relativeurls,omitempty"` - - // TLS instructs the http server to listen with a TLS configuration. - // This only support simple tls configuration with a cert and key. - // Mostly, this is useful for testing situations or simple deployments - // that require tls. If more complex configurations are required, use - // a proxy or make a proposal to add support here. - TLS struct { - // Certificate specifies the path to an x509 certificate file to - // be used for TLS. - Certificate string `yaml:"certificate,omitempty"` - - // Key specifies the path to the x509 key file, which should - // contain the private portion for the file specified in - // Certificate. - Key string `yaml:"key,omitempty"` - - // Specifies the CA certs for client authentication - // A file may contain multiple CA certificates encoded as PEM - ClientCAs []string `yaml:"clientcas,omitempty"` - } `yaml:"tls,omitempty"` - - // Headers is a set of headers to include in HTTP responses. A common - // use case for this would be security headers such as - // Strict-Transport-Security. The map keys are the header names, and - // the values are the associated header payloads. - Headers http.Header `yaml:"headers,omitempty"` - - // Debug configures the http debug interface, if specified. This can - // include services such as pprof, expvar and other data that should - // not be exposed externally. Left disabled by default. - Debug struct { - // Addr specifies the bind address for the debug server. - Addr string `yaml:"addr,omitempty"` - } `yaml:"debug,omitempty"` - } `yaml:"http,omitempty"` - - // Notifications specifies configuration about various endpoint to which - // registry events are dispatched. - Notifications Notifications `yaml:"notifications,omitempty"` - - // Redis configures the redis pool available to the registry webapp. - Redis struct { - // Addr specifies the the redis instance available to the application. - Addr string `yaml:"addr,omitempty"` - - // Password string to use when making a connection. - Password string `yaml:"password,omitempty"` - - // DB specifies the database to connect to on the redis instance. - DB int `yaml:"db,omitempty"` - - DialTimeout time.Duration `yaml:"dialtimeout,omitempty"` // timeout for connect - ReadTimeout time.Duration `yaml:"readtimeout,omitempty"` // timeout for reads of data - WriteTimeout time.Duration `yaml:"writetimeout,omitempty"` // timeout for writes of data - - // Pool configures the behavior of the redis connection pool. - Pool struct { - // MaxIdle sets the maximum number of idle connections. - MaxIdle int `yaml:"maxidle,omitempty"` - - // MaxActive sets the maximum number of connections that should be - // opened before blocking a connection request. - MaxActive int `yaml:"maxactive,omitempty"` - - // IdleTimeout sets the amount time to wait before closing - // inactive connections. - IdleTimeout time.Duration `yaml:"idletimeout,omitempty"` - } `yaml:"pool,omitempty"` - } `yaml:"redis,omitempty"` - - Health Health `yaml:"health,omitempty"` - - Proxy Proxy `yaml:"proxy,omitempty"` - - // Compatibility is used for configurations of working with older or deprecated features. - Compatibility struct { - // Schema1 configures how schema1 manifests will be handled - Schema1 struct { - // TrustKey is the signing key to use for adding the signature to - // schema1 manifests. - TrustKey string `yaml:"signingkeyfile,omitempty"` - - // DisableSignatureStore will cause all signatures attached to schema1 manifests - // to be ignored. Signatures will be generated on all schema1 manifest requests - // rather than only requests which converted schema2 to schema1. - DisableSignatureStore bool `yaml:"disablesignaturestore,omitempty"` - } `yaml:"schema1,omitempty"` - } `yaml:"compatibility,omitempty"` -} - -// LogHook is composed of hook Level and Type. -// After hooks configuration, it can execute the next handling automatically, -// when defined levels of log message emitted. -// Example: hook can sending an email notification when error log happens in app. -type LogHook struct { - // Disable lets user select to enable hook or not. - Disabled bool `yaml:"disabled,omitempty"` - - // Type allows user to select which type of hook handler they want. - Type string `yaml:"type,omitempty"` - - // Levels set which levels of log message will let hook executed. - Levels []string `yaml:"levels,omitempty"` - - // MailOptions allows user to configurate email parameters. - MailOptions MailOptions `yaml:"options,omitempty"` -} - -// MailOptions provides the configuration sections to user, for specific handler. -type MailOptions struct { - SMTP struct { - // Addr defines smtp host address - Addr string `yaml:"addr,omitempty"` - - // Username defines user name to smtp host - Username string `yaml:"username,omitempty"` - - // Password defines password of login user - Password string `yaml:"password,omitempty"` - - // Insecure defines if smtp login skips the secure cerification. - Insecure bool `yaml:"insecure,omitempty"` - } `yaml:"smtp,omitempty"` - - // From defines mail sending address - From string `yaml:"from,omitempty"` - - // To defines mail receiving address - To []string `yaml:"to,omitempty"` -} - -// FileChecker is a type of entry in the health section for checking files. -type FileChecker struct { - // Interval is the duration in between checks - Interval time.Duration `yaml:"interval,omitempty"` - // File is the path to check - File string `yaml:"file,omitempty"` - // Threshold is the number of times a check must fail to trigger an - // unhealthy state - Threshold int `yaml:"threshold,omitempty"` -} - -// HTTPChecker is a type of entry in the health section for checking HTTP URIs. -type HTTPChecker struct { - // Timeout is the duration to wait before timing out the HTTP request - Timeout time.Duration `yaml:"interval,omitempty"` - // StatusCode is the expected status code - StatusCode int - // Interval is the duration in between checks - Interval time.Duration `yaml:"interval,omitempty"` - // URI is the HTTP URI to check - URI string `yaml:"uri,omitempty"` - // Headers lists static headers that should be added to all requests - Headers http.Header `yaml:"headers"` - // Threshold is the number of times a check must fail to trigger an - // unhealthy state - Threshold int `yaml:"threshold,omitempty"` -} - -// TCPChecker is a type of entry in the health section for checking TCP servers. -type TCPChecker struct { - // Timeout is the duration to wait before timing out the TCP connection - Timeout time.Duration `yaml:"interval,omitempty"` - // Interval is the duration in between checks - Interval time.Duration `yaml:"interval,omitempty"` - // Addr is the TCP address to check - Addr string `yaml:"addr,omitempty"` - // Threshold is the number of times a check must fail to trigger an - // unhealthy state - Threshold int `yaml:"threshold,omitempty"` -} - -// Health provides the configuration section for health checks. -type Health struct { - // FileCheckers is a list of paths to check - FileCheckers []FileChecker `yaml:"file,omitempty"` - // HTTPCheckers is a list of URIs to check - HTTPCheckers []HTTPChecker `yaml:"http,omitempty"` - // TCPCheckers is a list of URIs to check - TCPCheckers []TCPChecker `yaml:"tcp,omitempty"` - // StorageDriver configures a health check on the configured storage - // driver - StorageDriver struct { - // Enabled turns on the health check for the storage driver - Enabled bool `yaml:"enabled,omitempty"` - // Interval is the duration in between checks - Interval time.Duration `yaml:"interval,omitempty"` - // Threshold is the number of times a check must fail to trigger an - // unhealthy state - Threshold int `yaml:"threshold,omitempty"` - } `yaml:"storagedriver,omitempty"` -} - -// v0_1Configuration is a Version 0.1 Configuration struct -// This is currently aliased to Configuration, as it is the current version -type v0_1Configuration Configuration - -// UnmarshalYAML implements the yaml.Unmarshaler interface -// Unmarshals a string of the form X.Y into a Version, validating that X and Y can represent uints -func (version *Version) UnmarshalYAML(unmarshal func(interface{}) error) error { - var versionString string - err := unmarshal(&versionString) - if err != nil { - return err - } - - newVersion := Version(versionString) - if _, err := newVersion.major(); err != nil { - return err - } - - if _, err := newVersion.minor(); err != nil { - return err - } - - *version = newVersion - return nil -} - -// CurrentVersion is the most recent Version that can be parsed -var CurrentVersion = MajorMinorVersion(0, 1) - -// Loglevel is the level at which operations are logged -// This can be error, warn, info, or debug -type Loglevel string - -// UnmarshalYAML implements the yaml.Umarshaler interface -// Unmarshals a string into a Loglevel, lowercasing the string and validating that it represents a -// valid loglevel -func (loglevel *Loglevel) UnmarshalYAML(unmarshal func(interface{}) error) error { - var loglevelString string - err := unmarshal(&loglevelString) - if err != nil { - return err - } - - loglevelString = strings.ToLower(loglevelString) - switch loglevelString { - case "error", "warn", "info", "debug": - default: - return fmt.Errorf("Invalid loglevel %s Must be one of [error, warn, info, debug]", loglevelString) - } - - *loglevel = Loglevel(loglevelString) - return nil -} - -// Parameters defines a key-value parameters mapping -type Parameters map[string]interface{} - -// Storage defines the configuration for registry object storage -type Storage map[string]Parameters - -// Type returns the storage driver type, such as filesystem or s3 -func (storage Storage) Type() string { - var storageType []string - - // Return only key in this map - for k := range storage { - switch k { - case "maintenance": - // allow configuration of maintenance - case "cache": - // allow configuration of caching - case "delete": - // allow configuration of delete - case "redirect": - // allow configuration of redirect - default: - storageType = append(storageType, k) - } - } - if len(storageType) > 1 { - panic("multiple storage drivers specified in configuration or environment: " + strings.Join(storageType, ", ")) - } - if len(storageType) == 1 { - return storageType[0] - } - return "" -} - -// Parameters returns the Parameters map for a Storage configuration -func (storage Storage) Parameters() Parameters { - return storage[storage.Type()] -} - -// setParameter changes the parameter at the provided key to the new value -func (storage Storage) setParameter(key string, value interface{}) { - storage[storage.Type()][key] = value -} - -// UnmarshalYAML implements the yaml.Unmarshaler interface -// Unmarshals a single item map into a Storage or a string into a Storage type with no parameters -func (storage *Storage) UnmarshalYAML(unmarshal func(interface{}) error) error { - var storageMap map[string]Parameters - err := unmarshal(&storageMap) - if err == nil { - if len(storageMap) > 1 { - types := make([]string, 0, len(storageMap)) - for k := range storageMap { - switch k { - case "maintenance": - // allow for configuration of maintenance - case "cache": - // allow configuration of caching - case "delete": - // allow configuration of delete - case "redirect": - // allow configuration of redirect - default: - types = append(types, k) - } - } - - if len(types) > 1 { - return fmt.Errorf("Must provide exactly one storage type. Provided: %v", types) - } - } - *storage = storageMap - return nil - } - - var storageType string - err = unmarshal(&storageType) - if err == nil { - *storage = Storage{storageType: Parameters{}} - return nil - } - - return err -} - -// MarshalYAML implements the yaml.Marshaler interface -func (storage Storage) MarshalYAML() (interface{}, error) { - if storage.Parameters() == nil { - return storage.Type(), nil - } - return map[string]Parameters(storage), nil -} - -// Auth defines the configuration for registry authorization. -type Auth map[string]Parameters - -// Type returns the storage driver type, such as filesystem or s3 -func (auth Auth) Type() string { - // Return only key in this map - for k := range auth { - return k - } - return "" -} - -// Parameters returns the Parameters map for an Auth configuration -func (auth Auth) Parameters() Parameters { - return auth[auth.Type()] -} - -// setParameter changes the parameter at the provided key to the new value -func (auth Auth) setParameter(key string, value interface{}) { - auth[auth.Type()][key] = value -} - -// UnmarshalYAML implements the yaml.Unmarshaler interface -// Unmarshals a single item map into a Storage or a string into a Storage type with no parameters -func (auth *Auth) UnmarshalYAML(unmarshal func(interface{}) error) error { - var m map[string]Parameters - err := unmarshal(&m) - if err == nil { - if len(m) > 1 { - types := make([]string, 0, len(m)) - for k := range m { - types = append(types, k) - } - - // TODO(stevvooe): May want to change this slightly for - // authorization to allow multiple challenges. - return fmt.Errorf("must provide exactly one type. Provided: %v", types) - - } - *auth = m - return nil - } - - var authType string - err = unmarshal(&authType) - if err == nil { - *auth = Auth{authType: Parameters{}} - return nil - } - - return err -} - -// MarshalYAML implements the yaml.Marshaler interface -func (auth Auth) MarshalYAML() (interface{}, error) { - if auth.Parameters() == nil { - return auth.Type(), nil - } - return map[string]Parameters(auth), nil -} - -// Notifications configures multiple http endpoints. -type Notifications struct { - // Endpoints is a list of http configurations for endpoints that - // respond to webhook notifications. In the future, we may allow other - // kinds of endpoints, such as external queues. - Endpoints []Endpoint `yaml:"endpoints,omitempty"` -} - -// Endpoint describes the configuration of an http webhook notification -// endpoint. -type Endpoint struct { - Name string `yaml:"name"` // identifies the endpoint in the registry instance. - Disabled bool `yaml:"disabled"` // disables the endpoint - URL string `yaml:"url"` // post url for the endpoint. - Headers http.Header `yaml:"headers"` // static headers that should be added to all requests - Timeout time.Duration `yaml:"timeout"` // HTTP timeout - Threshold int `yaml:"threshold"` // circuit breaker threshold before backing off on failure - Backoff time.Duration `yaml:"backoff"` // backoff duration -} - -// Reporting defines error reporting methods. -type Reporting struct { - // Bugsnag configures error reporting for Bugsnag (bugsnag.com). - Bugsnag BugsnagReporting `yaml:"bugsnag,omitempty"` - // NewRelic configures error reporting for NewRelic (newrelic.com) - NewRelic NewRelicReporting `yaml:"newrelic,omitempty"` -} - -// BugsnagReporting configures error reporting for Bugsnag (bugsnag.com). -type BugsnagReporting struct { - // APIKey is the Bugsnag api key. - APIKey string `yaml:"apikey,omitempty"` - // ReleaseStage tracks where the registry is deployed. - // Examples: production, staging, development - ReleaseStage string `yaml:"releasestage,omitempty"` - // Endpoint is used for specifying an enterprise Bugsnag endpoint. - Endpoint string `yaml:"endpoint,omitempty"` -} - -// NewRelicReporting configures error reporting for NewRelic (newrelic.com) -type NewRelicReporting struct { - // LicenseKey is the NewRelic user license key - LicenseKey string `yaml:"licensekey,omitempty"` - // Name is the component name of the registry in NewRelic - Name string `yaml:"name,omitempty"` - // Verbose configures debug output to STDOUT - Verbose bool `yaml:"verbose,omitempty"` -} - -// Middleware configures named middlewares to be applied at injection points. -type Middleware struct { - // Name the middleware registers itself as - Name string `yaml:"name"` - // Flag to disable middleware easily - Disabled bool `yaml:"disabled,omitempty"` - // Map of parameters that will be passed to the middleware's initialization function - Options Parameters `yaml:"options"` -} - -// Proxy configures the registry as a pull through cache -type Proxy struct { - // RemoteURL is the URL of the remote registry - RemoteURL string `yaml:"remoteurl"` - - // Username of the hub user - Username string `yaml:"username"` - - // Password of the hub user - Password string `yaml:"password"` -} - -// Parse parses an input configuration yaml document into a Configuration struct -// This should generally be capable of handling old configuration format versions -// -// Environment variables may be used to override configuration parameters other than version, -// following the scheme below: -// Configuration.Abc may be replaced by the value of REGISTRY_ABC, -// Configuration.Abc.Xyz may be replaced by the value of REGISTRY_ABC_XYZ, and so forth -func Parse(rd io.Reader) (*Configuration, error) { - in, err := ioutil.ReadAll(rd) - if err != nil { - return nil, err - } - - p := NewParser("registry", []VersionedParseInfo{ - { - Version: MajorMinorVersion(0, 1), - ParseAs: reflect.TypeOf(v0_1Configuration{}), - ConversionFunc: func(c interface{}) (interface{}, error) { - if v0_1, ok := c.(*v0_1Configuration); ok { - if v0_1.Loglevel == Loglevel("") { - v0_1.Loglevel = Loglevel("info") - } - if v0_1.Storage.Type() == "" { - return nil, fmt.Errorf("No storage configuration provided") - } - return (*Configuration)(v0_1), nil - } - return nil, fmt.Errorf("Expected *v0_1Configuration, received %#v", c) - }, - }, - }) - - config := new(Configuration) - err = p.Parse(in, config) - if err != nil { - return nil, err - } - - return config, nil -} diff --git a/vendor/github.com/docker/distribution/configuration/configuration_test.go b/vendor/github.com/docker/distribution/configuration/configuration_test.go deleted file mode 100644 index f406a727f2..0000000000 --- a/vendor/github.com/docker/distribution/configuration/configuration_test.go +++ /dev/null @@ -1,505 +0,0 @@ -package configuration - -import ( - "bytes" - "net/http" - "os" - "reflect" - "strings" - "testing" - - . "gopkg.in/check.v1" - "gopkg.in/yaml.v2" -) - -// Hook up gocheck into the "go test" runner -func Test(t *testing.T) { TestingT(t) } - -// configStruct is a canonical example configuration, which should map to configYamlV0_1 -var configStruct = Configuration{ - Version: "0.1", - Log: struct { - Level Loglevel `yaml:"level"` - Formatter string `yaml:"formatter,omitempty"` - Fields map[string]interface{} `yaml:"fields,omitempty"` - Hooks []LogHook `yaml:"hooks,omitempty"` - }{ - Fields: map[string]interface{}{"environment": "test"}, - }, - Loglevel: "info", - Storage: Storage{ - "s3": Parameters{ - "region": "us-east-1", - "bucket": "my-bucket", - "rootdirectory": "/registry", - "encrypt": true, - "secure": false, - "accesskey": "SAMPLEACCESSKEY", - "secretkey": "SUPERSECRET", - "host": nil, - "port": 42, - }, - }, - Auth: Auth{ - "silly": Parameters{ - "realm": "silly", - "service": "silly", - }, - }, - Reporting: Reporting{ - Bugsnag: BugsnagReporting{ - APIKey: "BugsnagApiKey", - }, - }, - Notifications: Notifications{ - Endpoints: []Endpoint{ - { - Name: "endpoint-1", - URL: "http://example.com", - Headers: http.Header{ - "Authorization": []string{"Bearer "}, - }, - }, - }, - }, - HTTP: struct { - Addr string `yaml:"addr,omitempty"` - Net string `yaml:"net,omitempty"` - Host string `yaml:"host,omitempty"` - Prefix string `yaml:"prefix,omitempty"` - Secret string `yaml:"secret,omitempty"` - RelativeURLs bool `yaml:"relativeurls,omitempty"` - TLS struct { - Certificate string `yaml:"certificate,omitempty"` - Key string `yaml:"key,omitempty"` - ClientCAs []string `yaml:"clientcas,omitempty"` - } `yaml:"tls,omitempty"` - Headers http.Header `yaml:"headers,omitempty"` - Debug struct { - Addr string `yaml:"addr,omitempty"` - } `yaml:"debug,omitempty"` - }{ - TLS: struct { - Certificate string `yaml:"certificate,omitempty"` - Key string `yaml:"key,omitempty"` - ClientCAs []string `yaml:"clientcas,omitempty"` - }{ - ClientCAs: []string{"/path/to/ca.pem"}, - }, - Headers: http.Header{ - "X-Content-Type-Options": []string{"nosniff"}, - }, - }, -} - -// configYamlV0_1 is a Version 0.1 yaml document representing configStruct -var configYamlV0_1 = ` -version: 0.1 -log: - fields: - environment: test -loglevel: info -storage: - s3: - region: us-east-1 - bucket: my-bucket - rootdirectory: /registry - encrypt: true - secure: false - accesskey: SAMPLEACCESSKEY - secretkey: SUPERSECRET - host: ~ - port: 42 -auth: - silly: - realm: silly - service: silly -notifications: - endpoints: - - name: endpoint-1 - url: http://example.com - headers: - Authorization: [Bearer ] -reporting: - bugsnag: - apikey: BugsnagApiKey -http: - clientcas: - - /path/to/ca.pem - headers: - X-Content-Type-Options: [nosniff] -` - -// inmemoryConfigYamlV0_1 is a Version 0.1 yaml document specifying an inmemory -// storage driver with no parameters -var inmemoryConfigYamlV0_1 = ` -version: 0.1 -loglevel: info -storage: inmemory -auth: - silly: - realm: silly - service: silly -notifications: - endpoints: - - name: endpoint-1 - url: http://example.com - headers: - Authorization: [Bearer ] -http: - headers: - X-Content-Type-Options: [nosniff] -` - -type ConfigSuite struct { - expectedConfig *Configuration -} - -var _ = Suite(new(ConfigSuite)) - -func (suite *ConfigSuite) SetUpTest(c *C) { - os.Clearenv() - suite.expectedConfig = copyConfig(configStruct) -} - -// TestMarshalRoundtrip validates that configStruct can be marshaled and -// unmarshaled without changing any parameters -func (suite *ConfigSuite) TestMarshalRoundtrip(c *C) { - configBytes, err := yaml.Marshal(suite.expectedConfig) - c.Assert(err, IsNil) - config, err := Parse(bytes.NewReader(configBytes)) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseSimple validates that configYamlV0_1 can be parsed into a struct -// matching configStruct -func (suite *ConfigSuite) TestParseSimple(c *C) { - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseInmemory validates that configuration yaml with storage provided as -// a string can be parsed into a Configuration struct with no storage parameters -func (suite *ConfigSuite) TestParseInmemory(c *C) { - suite.expectedConfig.Storage = Storage{"inmemory": Parameters{}} - suite.expectedConfig.Reporting = Reporting{} - suite.expectedConfig.Log.Fields = nil - - config, err := Parse(bytes.NewReader([]byte(inmemoryConfigYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseIncomplete validates that an incomplete yaml configuration cannot -// be parsed without providing environment variables to fill in the missing -// components. -func (suite *ConfigSuite) TestParseIncomplete(c *C) { - incompleteConfigYaml := "version: 0.1" - _, err := Parse(bytes.NewReader([]byte(incompleteConfigYaml))) - c.Assert(err, NotNil) - - suite.expectedConfig.Log.Fields = nil - suite.expectedConfig.Storage = Storage{"filesystem": Parameters{"rootdirectory": "/tmp/testroot"}} - suite.expectedConfig.Auth = Auth{"silly": Parameters{"realm": "silly"}} - suite.expectedConfig.Reporting = Reporting{} - suite.expectedConfig.Notifications = Notifications{} - suite.expectedConfig.HTTP.Headers = nil - - // Note: this also tests that REGISTRY_STORAGE and - // REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY can be used together - os.Setenv("REGISTRY_STORAGE", "filesystem") - os.Setenv("REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY", "/tmp/testroot") - os.Setenv("REGISTRY_AUTH", "silly") - os.Setenv("REGISTRY_AUTH_SILLY_REALM", "silly") - - config, err := Parse(bytes.NewReader([]byte(incompleteConfigYaml))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseWithSameEnvStorage validates that providing environment variables -// that match the given storage type will only include environment-defined -// parameters and remove yaml-defined parameters -func (suite *ConfigSuite) TestParseWithSameEnvStorage(c *C) { - suite.expectedConfig.Storage = Storage{"s3": Parameters{"region": "us-east-1"}} - - os.Setenv("REGISTRY_STORAGE", "s3") - os.Setenv("REGISTRY_STORAGE_S3_REGION", "us-east-1") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseWithDifferentEnvStorageParams validates that providing environment variables that change -// and add to the given storage parameters will change and add parameters to the parsed -// Configuration struct -func (suite *ConfigSuite) TestParseWithDifferentEnvStorageParams(c *C) { - suite.expectedConfig.Storage.setParameter("region", "us-west-1") - suite.expectedConfig.Storage.setParameter("secure", true) - suite.expectedConfig.Storage.setParameter("newparam", "some Value") - - os.Setenv("REGISTRY_STORAGE_S3_REGION", "us-west-1") - os.Setenv("REGISTRY_STORAGE_S3_SECURE", "true") - os.Setenv("REGISTRY_STORAGE_S3_NEWPARAM", "some Value") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseWithDifferentEnvStorageType validates that providing an environment variable that -// changes the storage type will be reflected in the parsed Configuration struct -func (suite *ConfigSuite) TestParseWithDifferentEnvStorageType(c *C) { - suite.expectedConfig.Storage = Storage{"inmemory": Parameters{}} - - os.Setenv("REGISTRY_STORAGE", "inmemory") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseWithDifferentEnvStorageTypeAndParams validates that providing an environment variable -// that changes the storage type will be reflected in the parsed Configuration struct and that -// environment storage parameters will also be included -func (suite *ConfigSuite) TestParseWithDifferentEnvStorageTypeAndParams(c *C) { - suite.expectedConfig.Storage = Storage{"filesystem": Parameters{}} - suite.expectedConfig.Storage.setParameter("rootdirectory", "/tmp/testroot") - - os.Setenv("REGISTRY_STORAGE", "filesystem") - os.Setenv("REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY", "/tmp/testroot") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseWithSameEnvLoglevel validates that providing an environment variable defining the log -// level to the same as the one provided in the yaml will not change the parsed Configuration struct -func (suite *ConfigSuite) TestParseWithSameEnvLoglevel(c *C) { - os.Setenv("REGISTRY_LOGLEVEL", "info") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseWithDifferentEnvLoglevel validates that providing an environment variable defining the -// log level will override the value provided in the yaml document -func (suite *ConfigSuite) TestParseWithDifferentEnvLoglevel(c *C) { - suite.expectedConfig.Loglevel = "error" - - os.Setenv("REGISTRY_LOGLEVEL", "error") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseInvalidLoglevel validates that the parser will fail to parse a -// configuration if the loglevel is malformed -func (suite *ConfigSuite) TestParseInvalidLoglevel(c *C) { - invalidConfigYaml := "version: 0.1\nloglevel: derp\nstorage: inmemory" - _, err := Parse(bytes.NewReader([]byte(invalidConfigYaml))) - c.Assert(err, NotNil) - - os.Setenv("REGISTRY_LOGLEVEL", "derp") - - _, err = Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, NotNil) - -} - -// TestParseWithDifferentEnvReporting validates that environment variables -// properly override reporting parameters -func (suite *ConfigSuite) TestParseWithDifferentEnvReporting(c *C) { - suite.expectedConfig.Reporting.Bugsnag.APIKey = "anotherBugsnagApiKey" - suite.expectedConfig.Reporting.Bugsnag.Endpoint = "localhost:8080" - suite.expectedConfig.Reporting.NewRelic.LicenseKey = "NewRelicLicenseKey" - suite.expectedConfig.Reporting.NewRelic.Name = "some NewRelic NAME" - - os.Setenv("REGISTRY_REPORTING_BUGSNAG_APIKEY", "anotherBugsnagApiKey") - os.Setenv("REGISTRY_REPORTING_BUGSNAG_ENDPOINT", "localhost:8080") - os.Setenv("REGISTRY_REPORTING_NEWRELIC_LICENSEKEY", "NewRelicLicenseKey") - os.Setenv("REGISTRY_REPORTING_NEWRELIC_NAME", "some NewRelic NAME") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseInvalidVersion validates that the parser will fail to parse a newer configuration -// version than the CurrentVersion -func (suite *ConfigSuite) TestParseInvalidVersion(c *C) { - suite.expectedConfig.Version = MajorMinorVersion(CurrentVersion.Major(), CurrentVersion.Minor()+1) - configBytes, err := yaml.Marshal(suite.expectedConfig) - c.Assert(err, IsNil) - _, err = Parse(bytes.NewReader(configBytes)) - c.Assert(err, NotNil) -} - -// TestParseExtraneousVars validates that environment variables referring to -// nonexistent variables don't cause side effects. -func (suite *ConfigSuite) TestParseExtraneousVars(c *C) { - suite.expectedConfig.Reporting.Bugsnag.Endpoint = "localhost:8080" - - // A valid environment variable - os.Setenv("REGISTRY_REPORTING_BUGSNAG_ENDPOINT", "localhost:8080") - - // Environment variables which shouldn't set config items - os.Setenv("registry_REPORTING_NEWRELIC_LICENSEKEY", "NewRelicLicenseKey") - os.Setenv("REPORTING_NEWRELIC_NAME", "some NewRelic NAME") - os.Setenv("REGISTRY_DUCKS", "quack") - os.Setenv("REGISTRY_REPORTING_ASDF", "ghjk") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseEnvVarImplicitMaps validates that environment variables can set -// values in maps that don't already exist. -func (suite *ConfigSuite) TestParseEnvVarImplicitMaps(c *C) { - readonly := make(map[string]interface{}) - readonly["enabled"] = true - - maintenance := make(map[string]interface{}) - maintenance["readonly"] = readonly - - suite.expectedConfig.Storage["maintenance"] = maintenance - - os.Setenv("REGISTRY_STORAGE_MAINTENANCE_READONLY_ENABLED", "true") - - config, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) - c.Assert(config, DeepEquals, suite.expectedConfig) -} - -// TestParseEnvWrongTypeMap validates that incorrectly attempting to unmarshal a -// string over existing map fails. -func (suite *ConfigSuite) TestParseEnvWrongTypeMap(c *C) { - os.Setenv("REGISTRY_STORAGE_S3", "somestring") - - _, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, NotNil) -} - -// TestParseEnvWrongTypeStruct validates that incorrectly attempting to -// unmarshal a string into a struct fails. -func (suite *ConfigSuite) TestParseEnvWrongTypeStruct(c *C) { - os.Setenv("REGISTRY_STORAGE_LOG", "somestring") - - _, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, NotNil) -} - -// TestParseEnvWrongTypeSlice validates that incorrectly attempting to -// unmarshal a string into a slice fails. -func (suite *ConfigSuite) TestParseEnvWrongTypeSlice(c *C) { - os.Setenv("REGISTRY_LOG_HOOKS", "somestring") - - _, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, NotNil) -} - -// TestParseEnvMany tests several environment variable overrides. -// The result is not checked - the goal of this test is to detect panics -// from misuse of reflection. -func (suite *ConfigSuite) TestParseEnvMany(c *C) { - os.Setenv("REGISTRY_VERSION", "0.1") - os.Setenv("REGISTRY_LOG_LEVEL", "debug") - os.Setenv("REGISTRY_LOG_FORMATTER", "json") - os.Setenv("REGISTRY_LOG_HOOKS", "json") - os.Setenv("REGISTRY_LOG_FIELDS", "abc: xyz") - os.Setenv("REGISTRY_LOG_HOOKS", "- type: asdf") - os.Setenv("REGISTRY_LOGLEVEL", "debug") - os.Setenv("REGISTRY_STORAGE", "s3") - os.Setenv("REGISTRY_AUTH_PARAMS", "param1: value1") - os.Setenv("REGISTRY_AUTH_PARAMS_VALUE2", "value2") - os.Setenv("REGISTRY_AUTH_PARAMS_VALUE2", "value2") - - _, err := Parse(bytes.NewReader([]byte(configYamlV0_1))) - c.Assert(err, IsNil) -} - -func checkStructs(c *C, t reflect.Type, structsChecked map[string]struct{}) { - for t.Kind() == reflect.Ptr || t.Kind() == reflect.Map || t.Kind() == reflect.Slice { - t = t.Elem() - } - - if t.Kind() != reflect.Struct { - return - } - if _, present := structsChecked[t.String()]; present { - // Already checked this type - return - } - - structsChecked[t.String()] = struct{}{} - - byUpperCase := make(map[string]int) - for i := 0; i < t.NumField(); i++ { - sf := t.Field(i) - - // Check that the yaml tag does not contain an _. - yamlTag := sf.Tag.Get("yaml") - if strings.Contains(yamlTag, "_") { - c.Fatalf("yaml field name includes _ character: %s", yamlTag) - } - upper := strings.ToUpper(sf.Name) - if _, present := byUpperCase[upper]; present { - c.Fatalf("field name collision in configuration object: %s", sf.Name) - } - byUpperCase[upper] = i - - checkStructs(c, sf.Type, structsChecked) - } -} - -// TestValidateConfigStruct makes sure that the config struct has no members -// with yaml tags that would be ambiguous to the environment variable parser. -func (suite *ConfigSuite) TestValidateConfigStruct(c *C) { - structsChecked := make(map[string]struct{}) - checkStructs(c, reflect.TypeOf(Configuration{}), structsChecked) -} - -func copyConfig(config Configuration) *Configuration { - configCopy := new(Configuration) - - configCopy.Version = MajorMinorVersion(config.Version.Major(), config.Version.Minor()) - configCopy.Loglevel = config.Loglevel - configCopy.Log = config.Log - configCopy.Log.Fields = make(map[string]interface{}, len(config.Log.Fields)) - for k, v := range config.Log.Fields { - configCopy.Log.Fields[k] = v - } - - configCopy.Storage = Storage{config.Storage.Type(): Parameters{}} - for k, v := range config.Storage.Parameters() { - configCopy.Storage.setParameter(k, v) - } - configCopy.Reporting = Reporting{ - Bugsnag: BugsnagReporting{config.Reporting.Bugsnag.APIKey, config.Reporting.Bugsnag.ReleaseStage, config.Reporting.Bugsnag.Endpoint}, - NewRelic: NewRelicReporting{config.Reporting.NewRelic.LicenseKey, config.Reporting.NewRelic.Name, config.Reporting.NewRelic.Verbose}, - } - - configCopy.Auth = Auth{config.Auth.Type(): Parameters{}} - for k, v := range config.Auth.Parameters() { - configCopy.Auth.setParameter(k, v) - } - - configCopy.Notifications = Notifications{Endpoints: []Endpoint{}} - for _, v := range config.Notifications.Endpoints { - configCopy.Notifications.Endpoints = append(configCopy.Notifications.Endpoints, v) - } - - configCopy.HTTP.Headers = make(http.Header) - for k, v := range config.HTTP.Headers { - configCopy.HTTP.Headers[k] = v - } - - return configCopy -} diff --git a/vendor/github.com/docker/distribution/configuration/parser.go b/vendor/github.com/docker/distribution/configuration/parser.go deleted file mode 100644 index 8b81dd5d58..0000000000 --- a/vendor/github.com/docker/distribution/configuration/parser.go +++ /dev/null @@ -1,283 +0,0 @@ -package configuration - -import ( - "fmt" - "os" - "reflect" - "sort" - "strconv" - "strings" - - "github.com/Sirupsen/logrus" - "gopkg.in/yaml.v2" -) - -// Version is a major/minor version pair of the form Major.Minor -// Major version upgrades indicate structure or type changes -// Minor version upgrades should be strictly additive -type Version string - -// MajorMinorVersion constructs a Version from its Major and Minor components -func MajorMinorVersion(major, minor uint) Version { - return Version(fmt.Sprintf("%d.%d", major, minor)) -} - -func (version Version) major() (uint, error) { - majorPart := strings.Split(string(version), ".")[0] - major, err := strconv.ParseUint(majorPart, 10, 0) - return uint(major), err -} - -// Major returns the major version portion of a Version -func (version Version) Major() uint { - major, _ := version.major() - return major -} - -func (version Version) minor() (uint, error) { - minorPart := strings.Split(string(version), ".")[1] - minor, err := strconv.ParseUint(minorPart, 10, 0) - return uint(minor), err -} - -// Minor returns the minor version portion of a Version -func (version Version) Minor() uint { - minor, _ := version.minor() - return minor -} - -// VersionedParseInfo defines how a specific version of a configuration should -// be parsed into the current version -type VersionedParseInfo struct { - // Version is the version which this parsing information relates to - Version Version - // ParseAs defines the type which a configuration file of this version - // should be parsed into - ParseAs reflect.Type - // ConversionFunc defines a method for converting the parsed configuration - // (of type ParseAs) into the current configuration version - // Note: this method signature is very unclear with the absence of generics - ConversionFunc func(interface{}) (interface{}, error) -} - -type envVar struct { - name string - value string -} - -type envVars []envVar - -func (a envVars) Len() int { return len(a) } -func (a envVars) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a envVars) Less(i, j int) bool { return a[i].name < a[j].name } - -// Parser can be used to parse a configuration file and environment of a defined -// version into a unified output structure -type Parser struct { - prefix string - mapping map[Version]VersionedParseInfo - env envVars -} - -// NewParser returns a *Parser with the given environment prefix which handles -// versioned configurations which match the given parseInfos -func NewParser(prefix string, parseInfos []VersionedParseInfo) *Parser { - p := Parser{prefix: prefix, mapping: make(map[Version]VersionedParseInfo)} - - for _, parseInfo := range parseInfos { - p.mapping[parseInfo.Version] = parseInfo - } - - for _, env := range os.Environ() { - envParts := strings.SplitN(env, "=", 2) - p.env = append(p.env, envVar{envParts[0], envParts[1]}) - } - - // We must sort the environment variables lexically by name so that - // more specific variables are applied before less specific ones - // (i.e. REGISTRY_STORAGE before - // REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY). This sucks, but it's a - // lot simpler and easier to get right than unmarshalling map entries - // into temporaries and merging with the existing entry. - sort.Sort(p.env) - - return &p -} - -// Parse reads in the given []byte and environment and writes the resulting -// configuration into the input v -// -// Environment variables may be used to override configuration parameters other -// than version, following the scheme below: -// v.Abc may be replaced by the value of PREFIX_ABC, -// v.Abc.Xyz may be replaced by the value of PREFIX_ABC_XYZ, and so forth -func (p *Parser) Parse(in []byte, v interface{}) error { - var versionedStruct struct { - Version Version - } - - if err := yaml.Unmarshal(in, &versionedStruct); err != nil { - return err - } - - parseInfo, ok := p.mapping[versionedStruct.Version] - if !ok { - return fmt.Errorf("Unsupported version: %q", versionedStruct.Version) - } - - parseAs := reflect.New(parseInfo.ParseAs) - err := yaml.Unmarshal(in, parseAs.Interface()) - if err != nil { - return err - } - - for _, envVar := range p.env { - pathStr := envVar.name - if strings.HasPrefix(pathStr, strings.ToUpper(p.prefix)+"_") { - path := strings.Split(pathStr, "_") - - err = p.overwriteFields(parseAs, pathStr, path[1:], envVar.value) - if err != nil { - return err - } - } - } - - c, err := parseInfo.ConversionFunc(parseAs.Interface()) - if err != nil { - return err - } - reflect.ValueOf(v).Elem().Set(reflect.Indirect(reflect.ValueOf(c))) - return nil -} - -// overwriteFields replaces configuration values with alternate values specified -// through the environment. Precondition: an empty path slice must never be -// passed in. -func (p *Parser) overwriteFields(v reflect.Value, fullpath string, path []string, payload string) error { - for v.Kind() == reflect.Ptr { - if v.IsNil() { - panic("encountered nil pointer while handling environment variable " + fullpath) - } - v = reflect.Indirect(v) - } - switch v.Kind() { - case reflect.Struct: - return p.overwriteStruct(v, fullpath, path, payload) - case reflect.Map: - return p.overwriteMap(v, fullpath, path, payload) - case reflect.Interface: - if v.NumMethod() == 0 { - if !v.IsNil() { - return p.overwriteFields(v.Elem(), fullpath, path, payload) - } - // Interface was empty; create an implicit map - var template map[string]interface{} - wrappedV := reflect.MakeMap(reflect.TypeOf(template)) - v.Set(wrappedV) - return p.overwriteMap(wrappedV, fullpath, path, payload) - } - } - return nil -} - -func (p *Parser) overwriteStruct(v reflect.Value, fullpath string, path []string, payload string) error { - // Generate case-insensitive map of struct fields - byUpperCase := make(map[string]int) - for i := 0; i < v.NumField(); i++ { - sf := v.Type().Field(i) - upper := strings.ToUpper(sf.Name) - if _, present := byUpperCase[upper]; present { - panic(fmt.Sprintf("field name collision in configuration object: %s", sf.Name)) - } - byUpperCase[upper] = i - } - - fieldIndex, present := byUpperCase[path[0]] - if !present { - logrus.Warnf("Ignoring unrecognized environment variable %s", fullpath) - return nil - } - field := v.Field(fieldIndex) - sf := v.Type().Field(fieldIndex) - - if len(path) == 1 { - // Env var specifies this field directly - fieldVal := reflect.New(sf.Type) - err := yaml.Unmarshal([]byte(payload), fieldVal.Interface()) - if err != nil { - return err - } - field.Set(reflect.Indirect(fieldVal)) - return nil - } - - // If the field is nil, must create an object - switch sf.Type.Kind() { - case reflect.Map: - if field.IsNil() { - field.Set(reflect.MakeMap(sf.Type)) - } - case reflect.Ptr: - if field.IsNil() { - field.Set(reflect.New(sf.Type)) - } - } - - err := p.overwriteFields(field, fullpath, path[1:], payload) - if err != nil { - return err - } - - return nil -} - -func (p *Parser) overwriteMap(m reflect.Value, fullpath string, path []string, payload string) error { - if m.Type().Key().Kind() != reflect.String { - // non-string keys unsupported - logrus.Warnf("Ignoring environment variable %s involving map with non-string keys", fullpath) - return nil - } - - if len(path) > 1 { - // If a matching key exists, get its value and continue the - // overwriting process. - for _, k := range m.MapKeys() { - if strings.ToUpper(k.String()) == path[0] { - mapValue := m.MapIndex(k) - // If the existing value is nil, we want to - // recreate it instead of using this value. - if (mapValue.Kind() == reflect.Ptr || - mapValue.Kind() == reflect.Interface || - mapValue.Kind() == reflect.Map) && - mapValue.IsNil() { - break - } - return p.overwriteFields(mapValue, fullpath, path[1:], payload) - } - } - } - - // (Re)create this key - var mapValue reflect.Value - if m.Type().Elem().Kind() == reflect.Map { - mapValue = reflect.MakeMap(m.Type().Elem()) - } else { - mapValue = reflect.New(m.Type().Elem()) - } - if len(path) > 1 { - err := p.overwriteFields(mapValue, fullpath, path[1:], payload) - if err != nil { - return err - } - } else { - err := yaml.Unmarshal([]byte(payload), mapValue.Interface()) - if err != nil { - return err - } - } - - m.SetMapIndex(reflect.ValueOf(strings.ToLower(path[0])), reflect.Indirect(mapValue)) - - return nil -} diff --git a/vendor/github.com/docker/distribution/context/context.go b/vendor/github.com/docker/distribution/context/context.go deleted file mode 100644 index 23cbf5b545..0000000000 --- a/vendor/github.com/docker/distribution/context/context.go +++ /dev/null @@ -1,85 +0,0 @@ -package context - -import ( - "sync" - - "github.com/docker/distribution/uuid" - "golang.org/x/net/context" -) - -// Context is a copy of Context from the golang.org/x/net/context package. -type Context interface { - context.Context -} - -// instanceContext is a context that provides only an instance id. It is -// provided as the main background context. -type instanceContext struct { - Context - id string // id of context, logged as "instance.id" - once sync.Once // once protect generation of the id -} - -func (ic *instanceContext) Value(key interface{}) interface{} { - if key == "instance.id" { - ic.once.Do(func() { - // We want to lazy initialize the UUID such that we don't - // call a random generator from the package initialization - // code. For various reasons random could not be available - // https://github.com/docker/distribution/issues/782 - ic.id = uuid.Generate().String() - }) - return ic.id - } - - return ic.Context.Value(key) -} - -var background = &instanceContext{ - Context: context.Background(), -} - -// Background returns a non-nil, empty Context. The background context -// provides a single key, "instance.id" that is globally unique to the -// process. -func Background() Context { - return background -} - -// WithValue returns a copy of parent in which the value associated with key is -// val. Use context Values only for request-scoped data that transits processes -// and APIs, not for passing optional parameters to functions. -func WithValue(parent Context, key, val interface{}) Context { - return context.WithValue(parent, key, val) -} - -// stringMapContext is a simple context implementation that checks a map for a -// key, falling back to a parent if not present. -type stringMapContext struct { - context.Context - m map[string]interface{} -} - -// WithValues returns a context that proxies lookups through a map. Only -// supports string keys. -func WithValues(ctx context.Context, m map[string]interface{}) context.Context { - mo := make(map[string]interface{}, len(m)) // make our own copy. - for k, v := range m { - mo[k] = v - } - - return stringMapContext{ - Context: ctx, - m: mo, - } -} - -func (smc stringMapContext) Value(key interface{}) interface{} { - if ks, ok := key.(string); ok { - if v, ok := smc.m[ks]; ok { - return v - } - } - - return smc.Context.Value(key) -} diff --git a/vendor/github.com/docker/distribution/context/doc.go b/vendor/github.com/docker/distribution/context/doc.go deleted file mode 100644 index 3b4ab8882f..0000000000 --- a/vendor/github.com/docker/distribution/context/doc.go +++ /dev/null @@ -1,89 +0,0 @@ -// Package context provides several utilities for working with -// golang.org/x/net/context in http requests. Primarily, the focus is on -// logging relevant request information but this package is not limited to -// that purpose. -// -// The easiest way to get started is to get the background context: -// -// ctx := context.Background() -// -// The returned context should be passed around your application and be the -// root of all other context instances. If the application has a version, this -// line should be called before anything else: -// -// ctx := context.WithVersion(context.Background(), version) -// -// The above will store the version in the context and will be available to -// the logger. -// -// Logging -// -// The most useful aspect of this package is GetLogger. This function takes -// any context.Context interface and returns the current logger from the -// context. Canonical usage looks like this: -// -// GetLogger(ctx).Infof("something interesting happened") -// -// GetLogger also takes optional key arguments. The keys will be looked up in -// the context and reported with the logger. The following example would -// return a logger that prints the version with each log message: -// -// ctx := context.Context(context.Background(), "version", version) -// GetLogger(ctx, "version").Infof("this log message has a version field") -// -// The above would print out a log message like this: -// -// INFO[0000] this log message has a version field version=v2.0.0-alpha.2.m -// -// When used with WithLogger, we gain the ability to decorate the context with -// loggers that have information from disparate parts of the call stack. -// Following from the version example, we can build a new context with the -// configured logger such that we always print the version field: -// -// ctx = WithLogger(ctx, GetLogger(ctx, "version")) -// -// Since the logger has been pushed to the context, we can now get the version -// field for free with our log messages. Future calls to GetLogger on the new -// context will have the version field: -// -// GetLogger(ctx).Infof("this log message has a version field") -// -// This becomes more powerful when we start stacking loggers. Let's say we -// have the version logger from above but also want a request id. Using the -// context above, in our request scoped function, we place another logger in -// the context: -// -// ctx = context.WithValue(ctx, "http.request.id", "unique id") // called when building request context -// ctx = WithLogger(ctx, GetLogger(ctx, "http.request.id")) -// -// When GetLogger is called on the new context, "http.request.id" will be -// included as a logger field, along with the original "version" field: -// -// INFO[0000] this log message has a version field http.request.id=unique id version=v2.0.0-alpha.2.m -// -// Note that this only affects the new context, the previous context, with the -// version field, can be used independently. Put another way, the new logger, -// added to the request context, is unique to that context and can have -// request scoped varaibles. -// -// HTTP Requests -// -// This package also contains several methods for working with http requests. -// The concepts are very similar to those described above. We simply place the -// request in the context using WithRequest. This makes the request variables -// available. GetRequestLogger can then be called to get request specific -// variables in a log line: -// -// ctx = WithRequest(ctx, req) -// GetRequestLogger(ctx).Infof("request variables") -// -// Like above, if we want to include the request data in all log messages in -// the context, we push the logger to a new context and use that one: -// -// ctx = WithLogger(ctx, GetRequestLogger(ctx)) -// -// The concept is fairly powerful and ensures that calls throughout the stack -// can be traced in log messages. Using the fields like "http.request.id", one -// can analyze call flow for a particular request with a simple grep of the -// logs. -package context diff --git a/vendor/github.com/docker/distribution/context/http.go b/vendor/github.com/docker/distribution/context/http.go deleted file mode 100644 index 2cb1d04175..0000000000 --- a/vendor/github.com/docker/distribution/context/http.go +++ /dev/null @@ -1,364 +0,0 @@ -package context - -import ( - "errors" - "net" - "net/http" - "strings" - "sync" - "time" - - log "github.com/Sirupsen/logrus" - "github.com/docker/distribution/uuid" - "github.com/gorilla/mux" -) - -// Common errors used with this package. -var ( - ErrNoRequestContext = errors.New("no http request in context") - ErrNoResponseWriterContext = errors.New("no http response in context") -) - -func parseIP(ipStr string) net.IP { - ip := net.ParseIP(ipStr) - if ip == nil { - log.Warnf("invalid remote IP address: %q", ipStr) - } - return ip -} - -// RemoteAddr extracts the remote address of the request, taking into -// account proxy headers. -func RemoteAddr(r *http.Request) string { - if prior := r.Header.Get("X-Forwarded-For"); prior != "" { - proxies := strings.Split(prior, ",") - if len(proxies) > 0 { - remoteAddr := strings.Trim(proxies[0], " ") - if parseIP(remoteAddr) != nil { - return remoteAddr - } - } - } - // X-Real-Ip is less supported, but worth checking in the - // absence of X-Forwarded-For - if realIP := r.Header.Get("X-Real-Ip"); realIP != "" { - if parseIP(realIP) != nil { - return realIP - } - } - - return r.RemoteAddr -} - -// RemoteIP extracts the remote IP of the request, taking into -// account proxy headers. -func RemoteIP(r *http.Request) string { - addr := RemoteAddr(r) - - // Try parsing it as "IP:port" - if ip, _, err := net.SplitHostPort(addr); err == nil { - return ip - } - - return addr -} - -// WithRequest places the request on the context. The context of the request -// is assigned a unique id, available at "http.request.id". The request itself -// is available at "http.request". Other common attributes are available under -// the prefix "http.request.". If a request is already present on the context, -// this method will panic. -func WithRequest(ctx Context, r *http.Request) Context { - if ctx.Value("http.request") != nil { - // NOTE(stevvooe): This needs to be considered a programming error. It - // is unlikely that we'd want to have more than one request in - // context. - panic("only one request per context") - } - - return &httpRequestContext{ - Context: ctx, - startedAt: time.Now(), - id: uuid.Generate().String(), - r: r, - } -} - -// GetRequest returns the http request in the given context. Returns -// ErrNoRequestContext if the context does not have an http request associated -// with it. -func GetRequest(ctx Context) (*http.Request, error) { - if r, ok := ctx.Value("http.request").(*http.Request); r != nil && ok { - return r, nil - } - return nil, ErrNoRequestContext -} - -// GetRequestID attempts to resolve the current request id, if possible. An -// error is return if it is not available on the context. -func GetRequestID(ctx Context) string { - return GetStringValue(ctx, "http.request.id") -} - -// WithResponseWriter returns a new context and response writer that makes -// interesting response statistics available within the context. -func WithResponseWriter(ctx Context, w http.ResponseWriter) (Context, http.ResponseWriter) { - irw := instrumentedResponseWriter{ - ResponseWriter: w, - Context: ctx, - } - - if closeNotifier, ok := w.(http.CloseNotifier); ok { - irwCN := &instrumentedResponseWriterCN{ - instrumentedResponseWriter: irw, - CloseNotifier: closeNotifier, - } - - return irwCN, irwCN - } - - return &irw, &irw -} - -// GetResponseWriter returns the http.ResponseWriter from the provided -// context. If not present, ErrNoResponseWriterContext is returned. The -// returned instance provides instrumentation in the context. -func GetResponseWriter(ctx Context) (http.ResponseWriter, error) { - v := ctx.Value("http.response") - - rw, ok := v.(http.ResponseWriter) - if !ok || rw == nil { - return nil, ErrNoResponseWriterContext - } - - return rw, nil -} - -// getVarsFromRequest let's us change request vars implementation for testing -// and maybe future changes. -var getVarsFromRequest = mux.Vars - -// WithVars extracts gorilla/mux vars and makes them available on the returned -// context. Variables are available at keys with the prefix "vars.". For -// example, if looking for the variable "name", it can be accessed as -// "vars.name". Implementations that are accessing values need not know that -// the underlying context is implemented with gorilla/mux vars. -func WithVars(ctx Context, r *http.Request) Context { - return &muxVarsContext{ - Context: ctx, - vars: getVarsFromRequest(r), - } -} - -// GetRequestLogger returns a logger that contains fields from the request in -// the current context. If the request is not available in the context, no -// fields will display. Request loggers can safely be pushed onto the context. -func GetRequestLogger(ctx Context) Logger { - return GetLogger(ctx, - "http.request.id", - "http.request.method", - "http.request.host", - "http.request.uri", - "http.request.referer", - "http.request.useragent", - "http.request.remoteaddr", - "http.request.contenttype") -} - -// GetResponseLogger reads the current response stats and builds a logger. -// Because the values are read at call time, pushing a logger returned from -// this function on the context will lead to missing or invalid data. Only -// call this at the end of a request, after the response has been written. -func GetResponseLogger(ctx Context) Logger { - l := getLogrusLogger(ctx, - "http.response.written", - "http.response.status", - "http.response.contenttype") - - duration := Since(ctx, "http.request.startedat") - - if duration > 0 { - l = l.WithField("http.response.duration", duration.String()) - } - - return l -} - -// httpRequestContext makes information about a request available to context. -type httpRequestContext struct { - Context - - startedAt time.Time - id string - r *http.Request -} - -// Value returns a keyed element of the request for use in the context. To get -// the request itself, query "request". For other components, access them as -// "request.". For example, r.RequestURI -func (ctx *httpRequestContext) Value(key interface{}) interface{} { - if keyStr, ok := key.(string); ok { - if keyStr == "http.request" { - return ctx.r - } - - if !strings.HasPrefix(keyStr, "http.request.") { - goto fallback - } - - parts := strings.Split(keyStr, ".") - - if len(parts) != 3 { - goto fallback - } - - switch parts[2] { - case "uri": - return ctx.r.RequestURI - case "remoteaddr": - return RemoteAddr(ctx.r) - case "method": - return ctx.r.Method - case "host": - return ctx.r.Host - case "referer": - referer := ctx.r.Referer() - if referer != "" { - return referer - } - case "useragent": - return ctx.r.UserAgent() - case "id": - return ctx.id - case "startedat": - return ctx.startedAt - case "contenttype": - ct := ctx.r.Header.Get("Content-Type") - if ct != "" { - return ct - } - } - } - -fallback: - return ctx.Context.Value(key) -} - -type muxVarsContext struct { - Context - vars map[string]string -} - -func (ctx *muxVarsContext) Value(key interface{}) interface{} { - if keyStr, ok := key.(string); ok { - if keyStr == "vars" { - return ctx.vars - } - - if strings.HasPrefix(keyStr, "vars.") { - keyStr = strings.TrimPrefix(keyStr, "vars.") - } - - if v, ok := ctx.vars[keyStr]; ok { - return v - } - } - - return ctx.Context.Value(key) -} - -// instrumentedResponseWriterCN provides response writer information in a -// context. It implements http.CloseNotifier so that users can detect -// early disconnects. -type instrumentedResponseWriterCN struct { - instrumentedResponseWriter - http.CloseNotifier -} - -// instrumentedResponseWriter provides response writer information in a -// context. This variant is only used in the case where CloseNotifier is not -// implemented by the parent ResponseWriter. -type instrumentedResponseWriter struct { - http.ResponseWriter - Context - - mu sync.Mutex - status int - written int64 -} - -func (irw *instrumentedResponseWriter) Write(p []byte) (n int, err error) { - n, err = irw.ResponseWriter.Write(p) - - irw.mu.Lock() - irw.written += int64(n) - - // Guess the likely status if not set. - if irw.status == 0 { - irw.status = http.StatusOK - } - - irw.mu.Unlock() - - return -} - -func (irw *instrumentedResponseWriter) WriteHeader(status int) { - irw.ResponseWriter.WriteHeader(status) - - irw.mu.Lock() - irw.status = status - irw.mu.Unlock() -} - -func (irw *instrumentedResponseWriter) Flush() { - if flusher, ok := irw.ResponseWriter.(http.Flusher); ok { - flusher.Flush() - } -} - -func (irw *instrumentedResponseWriter) Value(key interface{}) interface{} { - if keyStr, ok := key.(string); ok { - if keyStr == "http.response" { - return irw - } - - if !strings.HasPrefix(keyStr, "http.response.") { - goto fallback - } - - parts := strings.Split(keyStr, ".") - - if len(parts) != 3 { - goto fallback - } - - irw.mu.Lock() - defer irw.mu.Unlock() - - switch parts[2] { - case "written": - return irw.written - case "status": - return irw.status - case "contenttype": - contentType := irw.Header().Get("Content-Type") - if contentType != "" { - return contentType - } - } - } - -fallback: - return irw.Context.Value(key) -} - -func (irw *instrumentedResponseWriterCN) Value(key interface{}) interface{} { - if keyStr, ok := key.(string); ok { - if keyStr == "http.response" { - return irw - } - } - - return irw.instrumentedResponseWriter.Value(key) -} diff --git a/vendor/github.com/docker/distribution/context/http_test.go b/vendor/github.com/docker/distribution/context/http_test.go deleted file mode 100644 index 3d4b3c8eb1..0000000000 --- a/vendor/github.com/docker/distribution/context/http_test.go +++ /dev/null @@ -1,285 +0,0 @@ -package context - -import ( - "net/http" - "net/http/httptest" - "net/http/httputil" - "net/url" - "reflect" - "testing" - "time" -) - -func TestWithRequest(t *testing.T) { - var req http.Request - - start := time.Now() - req.Method = "GET" - req.Host = "example.com" - req.RequestURI = "/test-test" - req.Header = make(http.Header) - req.Header.Set("Referer", "foo.com/referer") - req.Header.Set("User-Agent", "test/0.1") - - ctx := WithRequest(Background(), &req) - for _, testcase := range []struct { - key string - expected interface{} - }{ - { - key: "http.request", - expected: &req, - }, - { - key: "http.request.id", - }, - { - key: "http.request.method", - expected: req.Method, - }, - { - key: "http.request.host", - expected: req.Host, - }, - { - key: "http.request.uri", - expected: req.RequestURI, - }, - { - key: "http.request.referer", - expected: req.Referer(), - }, - { - key: "http.request.useragent", - expected: req.UserAgent(), - }, - { - key: "http.request.remoteaddr", - expected: req.RemoteAddr, - }, - { - key: "http.request.startedat", - }, - } { - v := ctx.Value(testcase.key) - - if v == nil { - t.Fatalf("value not found for %q", testcase.key) - } - - if testcase.expected != nil && v != testcase.expected { - t.Fatalf("%s: %v != %v", testcase.key, v, testcase.expected) - } - - // Key specific checks! - switch testcase.key { - case "http.request.id": - if _, ok := v.(string); !ok { - t.Fatalf("request id not a string: %v", v) - } - case "http.request.startedat": - vt, ok := v.(time.Time) - if !ok { - t.Fatalf("value not a time: %v", v) - } - - now := time.Now() - if vt.After(now) { - t.Fatalf("time generated too late: %v > %v", vt, now) - } - - if vt.Before(start) { - t.Fatalf("time generated too early: %v < %v", vt, start) - } - } - } -} - -type testResponseWriter struct { - flushed bool - status int - written int64 - header http.Header -} - -func (trw *testResponseWriter) Header() http.Header { - if trw.header == nil { - trw.header = make(http.Header) - } - - return trw.header -} - -func (trw *testResponseWriter) Write(p []byte) (n int, err error) { - if trw.status == 0 { - trw.status = http.StatusOK - } - - n = len(p) - trw.written += int64(n) - return -} - -func (trw *testResponseWriter) WriteHeader(status int) { - trw.status = status -} - -func (trw *testResponseWriter) Flush() { - trw.flushed = true -} - -func TestWithResponseWriter(t *testing.T) { - trw := testResponseWriter{} - ctx, rw := WithResponseWriter(Background(), &trw) - - if ctx.Value("http.response") != rw { - t.Fatalf("response not available in context: %v != %v", ctx.Value("http.response"), rw) - } - - grw, err := GetResponseWriter(ctx) - if err != nil { - t.Fatalf("error getting response writer: %v", err) - } - - if grw != rw { - t.Fatalf("unexpected response writer returned: %#v != %#v", grw, rw) - } - - if ctx.Value("http.response.status") != 0 { - t.Fatalf("response status should always be a number and should be zero here: %v != 0", ctx.Value("http.response.status")) - } - - if n, err := rw.Write(make([]byte, 1024)); err != nil { - t.Fatalf("unexpected error writing: %v", err) - } else if n != 1024 { - t.Fatalf("unexpected number of bytes written: %v != %v", n, 1024) - } - - if ctx.Value("http.response.status") != http.StatusOK { - t.Fatalf("unexpected response status in context: %v != %v", ctx.Value("http.response.status"), http.StatusOK) - } - - if ctx.Value("http.response.written") != int64(1024) { - t.Fatalf("unexpected number reported bytes written: %v != %v", ctx.Value("http.response.written"), 1024) - } - - // Make sure flush propagates - rw.(http.Flusher).Flush() - - if !trw.flushed { - t.Fatalf("response writer not flushed") - } - - // Write another status and make sure context is correct. This normally - // wouldn't work except for in this contrived testcase. - rw.WriteHeader(http.StatusBadRequest) - - if ctx.Value("http.response.status") != http.StatusBadRequest { - t.Fatalf("unexpected response status in context: %v != %v", ctx.Value("http.response.status"), http.StatusBadRequest) - } -} - -func TestWithVars(t *testing.T) { - var req http.Request - vars := map[string]string{ - "foo": "asdf", - "bar": "qwer", - } - - getVarsFromRequest = func(r *http.Request) map[string]string { - if r != &req { - t.Fatalf("unexpected request: %v != %v", r, req) - } - - return vars - } - - ctx := WithVars(Background(), &req) - for _, testcase := range []struct { - key string - expected interface{} - }{ - { - key: "vars", - expected: vars, - }, - { - key: "vars.foo", - expected: "asdf", - }, - { - key: "vars.bar", - expected: "qwer", - }, - } { - v := ctx.Value(testcase.key) - - if !reflect.DeepEqual(v, testcase.expected) { - t.Fatalf("%q: %v != %v", testcase.key, v, testcase.expected) - } - } -} - -// SingleHostReverseProxy will insert an X-Forwarded-For header, and can be used to test -// RemoteAddr(). A fake RemoteAddr cannot be set on the HTTP request - it is overwritten -// at the transport layer to 127.0.0.1: . However, as the X-Forwarded-For header -// just contains the IP address, it is different enough for testing. -func TestRemoteAddr(t *testing.T) { - var expectedRemote string - backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer r.Body.Close() - - if r.RemoteAddr == expectedRemote { - t.Errorf("Unexpected matching remote addresses") - } - - actualRemote := RemoteAddr(r) - if expectedRemote != actualRemote { - t.Errorf("Mismatching remote hosts: %v != %v", expectedRemote, actualRemote) - } - - w.WriteHeader(200) - })) - - defer backend.Close() - backendURL, err := url.Parse(backend.URL) - if err != nil { - t.Fatal(err) - } - - proxy := httputil.NewSingleHostReverseProxy(backendURL) - frontend := httptest.NewServer(proxy) - defer frontend.Close() - - // X-Forwarded-For set by proxy - expectedRemote = "127.0.0.1" - proxyReq, err := http.NewRequest("GET", frontend.URL, nil) - if err != nil { - t.Fatal(err) - } - - _, err = http.DefaultClient.Do(proxyReq) - if err != nil { - t.Fatal(err) - } - - // RemoteAddr in X-Real-Ip - getReq, err := http.NewRequest("GET", backend.URL, nil) - if err != nil { - t.Fatal(err) - } - - expectedRemote = "1.2.3.4" - getReq.Header["X-Real-ip"] = []string{expectedRemote} - _, err = http.DefaultClient.Do(getReq) - if err != nil { - t.Fatal(err) - } - - // Valid X-Real-Ip and invalid X-Forwarded-For - getReq.Header["X-forwarded-for"] = []string{"1.2.3"} - _, err = http.DefaultClient.Do(getReq) - if err != nil { - t.Fatal(err) - } -} diff --git a/vendor/github.com/docker/distribution/context/logger.go b/vendor/github.com/docker/distribution/context/logger.go deleted file mode 100644 index fbb6a0511f..0000000000 --- a/vendor/github.com/docker/distribution/context/logger.go +++ /dev/null @@ -1,116 +0,0 @@ -package context - -import ( - "fmt" - - "github.com/Sirupsen/logrus" - "runtime" -) - -// Logger provides a leveled-logging interface. -type Logger interface { - // standard logger methods - Print(args ...interface{}) - Printf(format string, args ...interface{}) - Println(args ...interface{}) - - Fatal(args ...interface{}) - Fatalf(format string, args ...interface{}) - Fatalln(args ...interface{}) - - Panic(args ...interface{}) - Panicf(format string, args ...interface{}) - Panicln(args ...interface{}) - - // Leveled methods, from logrus - Debug(args ...interface{}) - Debugf(format string, args ...interface{}) - Debugln(args ...interface{}) - - Error(args ...interface{}) - Errorf(format string, args ...interface{}) - Errorln(args ...interface{}) - - Info(args ...interface{}) - Infof(format string, args ...interface{}) - Infoln(args ...interface{}) - - Warn(args ...interface{}) - Warnf(format string, args ...interface{}) - Warnln(args ...interface{}) -} - -// WithLogger creates a new context with provided logger. -func WithLogger(ctx Context, logger Logger) Context { - return WithValue(ctx, "logger", logger) -} - -// GetLoggerWithField returns a logger instance with the specified field key -// and value without affecting the context. Extra specified keys will be -// resolved from the context. -func GetLoggerWithField(ctx Context, key, value interface{}, keys ...interface{}) Logger { - return getLogrusLogger(ctx, keys...).WithField(fmt.Sprint(key), value) -} - -// GetLoggerWithFields returns a logger instance with the specified fields -// without affecting the context. Extra specified keys will be resolved from -// the context. -func GetLoggerWithFields(ctx Context, fields map[interface{}]interface{}, keys ...interface{}) Logger { - // must convert from interface{} -> interface{} to string -> interface{} for logrus. - lfields := make(logrus.Fields, len(fields)) - for key, value := range fields { - lfields[fmt.Sprint(key)] = value - } - - return getLogrusLogger(ctx, keys...).WithFields(lfields) -} - -// GetLogger returns the logger from the current context, if present. If one -// or more keys are provided, they will be resolved on the context and -// included in the logger. While context.Value takes an interface, any key -// argument passed to GetLogger will be passed to fmt.Sprint when expanded as -// a logging key field. If context keys are integer constants, for example, -// its recommended that a String method is implemented. -func GetLogger(ctx Context, keys ...interface{}) Logger { - return getLogrusLogger(ctx, keys...) -} - -// GetLogrusLogger returns the logrus logger for the context. If one more keys -// are provided, they will be resolved on the context and included in the -// logger. Only use this function if specific logrus functionality is -// required. -func getLogrusLogger(ctx Context, keys ...interface{}) *logrus.Entry { - var logger *logrus.Entry - - // Get a logger, if it is present. - loggerInterface := ctx.Value("logger") - if loggerInterface != nil { - if lgr, ok := loggerInterface.(*logrus.Entry); ok { - logger = lgr - } - } - - if logger == nil { - fields := logrus.Fields{} - - // Fill in the instance id, if we have it. - instanceID := ctx.Value("instance.id") - if instanceID != nil { - fields["instance.id"] = instanceID - } - - fields["go.version"] = runtime.Version() - // If no logger is found, just return the standard logger. - logger = logrus.StandardLogger().WithFields(fields) - } - - fields := logrus.Fields{} - for _, key := range keys { - v := ctx.Value(key) - if v != nil { - fields[fmt.Sprint(key)] = v - } - } - - return logger.WithFields(fields) -} diff --git a/vendor/github.com/docker/distribution/context/trace.go b/vendor/github.com/docker/distribution/context/trace.go deleted file mode 100644 index 721964a848..0000000000 --- a/vendor/github.com/docker/distribution/context/trace.go +++ /dev/null @@ -1,104 +0,0 @@ -package context - -import ( - "runtime" - "time" - - "github.com/docker/distribution/uuid" -) - -// WithTrace allocates a traced timing span in a new context. This allows a -// caller to track the time between calling WithTrace and the returned done -// function. When the done function is called, a log message is emitted with a -// "trace.duration" field, corresponding to the elapsed time and a -// "trace.func" field, corresponding to the function that called WithTrace. -// -// The logging keys "trace.id" and "trace.parent.id" are provided to implement -// dapper-like tracing. This function should be complemented with a WithSpan -// method that could be used for tracing distributed RPC calls. -// -// The main benefit of this function is to post-process log messages or -// intercept them in a hook to provide timing data. Trace ids and parent ids -// can also be linked to provide call tracing, if so required. -// -// Here is an example of the usage: -// -// func timedOperation(ctx Context) { -// ctx, done := WithTrace(ctx) -// defer done("this will be the log message") -// // ... function body ... -// } -// -// If the function ran for roughly 1s, such a usage would emit a log message -// as follows: -// -// INFO[0001] this will be the log message trace.duration=1.004575763s trace.func=github.com/docker/distribution/context.traceOperation trace.id= ... -// -// Notice that the function name is automatically resolved, along with the -// package and a trace id is emitted that can be linked with parent ids. -func WithTrace(ctx Context) (Context, func(format string, a ...interface{})) { - if ctx == nil { - ctx = Background() - } - - pc, file, line, _ := runtime.Caller(1) - f := runtime.FuncForPC(pc) - ctx = &traced{ - Context: ctx, - id: uuid.Generate().String(), - start: time.Now(), - parent: GetStringValue(ctx, "trace.id"), - fnname: f.Name(), - file: file, - line: line, - } - - return ctx, func(format string, a ...interface{}) { - GetLogger(ctx, - "trace.duration", - "trace.id", - "trace.parent.id", - "trace.func", - "trace.file", - "trace.line"). - Debugf(format, a...) - } -} - -// traced represents a context that is traced for function call timing. It -// also provides fast lookup for the various attributes that are available on -// the trace. -type traced struct { - Context - id string - parent string - start time.Time - fnname string - file string - line int -} - -func (ts *traced) Value(key interface{}) interface{} { - switch key { - case "trace.start": - return ts.start - case "trace.duration": - return time.Since(ts.start) - case "trace.id": - return ts.id - case "trace.parent.id": - if ts.parent == "" { - return nil // must return nil to signal no parent. - } - - return ts.parent - case "trace.func": - return ts.fnname - case "trace.file": - return ts.file - case "trace.line": - return ts.line - } - - return ts.Context.Value(key) -} diff --git a/vendor/github.com/docker/distribution/context/trace_test.go b/vendor/github.com/docker/distribution/context/trace_test.go deleted file mode 100644 index 4b969fbb0d..0000000000 --- a/vendor/github.com/docker/distribution/context/trace_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package context - -import ( - "runtime" - "testing" - "time" -) - -// TestWithTrace ensures that tracing has the expected values in the context. -func TestWithTrace(t *testing.T) { - pc, file, _, _ := runtime.Caller(0) // get current caller. - f := runtime.FuncForPC(pc) - - base := []valueTestCase{ - { - key: "trace.id", - notnilorempty: true, - }, - - { - key: "trace.file", - expected: file, - notnilorempty: true, - }, - { - key: "trace.line", - notnilorempty: true, - }, - { - key: "trace.start", - notnilorempty: true, - }, - } - - ctx, done := WithTrace(Background()) - defer done("this will be emitted at end of test") - - checkContextForValues(t, ctx, append(base, valueTestCase{ - key: "trace.func", - expected: f.Name(), - })) - - traced := func() { - parentID := ctx.Value("trace.id") // ensure the parent trace id is correct. - - pc, _, _, _ := runtime.Caller(0) // get current caller. - f := runtime.FuncForPC(pc) - ctx, done := WithTrace(ctx) - defer done("this should be subordinate to the other trace") - time.Sleep(time.Second) - checkContextForValues(t, ctx, append(base, valueTestCase{ - key: "trace.func", - expected: f.Name(), - }, valueTestCase{ - key: "trace.parent.id", - expected: parentID, - })) - } - traced() - - time.Sleep(time.Second) -} - -type valueTestCase struct { - key string - expected interface{} - notnilorempty bool // just check not empty/not nil -} - -func checkContextForValues(t *testing.T, ctx Context, values []valueTestCase) { - - for _, testcase := range values { - v := ctx.Value(testcase.key) - if testcase.notnilorempty { - if v == nil || v == "" { - t.Fatalf("value was nil or empty for %q: %#v", testcase.key, v) - } - continue - } - - if v != testcase.expected { - t.Fatalf("unexpected value for key %q: %v != %v", testcase.key, v, testcase.expected) - } - } -} diff --git a/vendor/github.com/docker/distribution/context/util.go b/vendor/github.com/docker/distribution/context/util.go deleted file mode 100644 index cb9ef52e38..0000000000 --- a/vendor/github.com/docker/distribution/context/util.go +++ /dev/null @@ -1,24 +0,0 @@ -package context - -import ( - "time" -) - -// Since looks up key, which should be a time.Time, and returns the duration -// since that time. If the key is not found, the value returned will be zero. -// This is helpful when inferring metrics related to context execution times. -func Since(ctx Context, key interface{}) time.Duration { - if startedAt, ok := ctx.Value(key).(time.Time); ok { - return time.Since(startedAt) - } - return 0 -} - -// GetStringValue returns a string value from the context. The empty string -// will be returned if not found. -func GetStringValue(ctx Context, key interface{}) (value string) { - if valuev, ok := ctx.Value(key).(string); ok { - value = valuev - } - return value -} diff --git a/vendor/github.com/docker/distribution/context/version.go b/vendor/github.com/docker/distribution/context/version.go deleted file mode 100644 index 746cda02ec..0000000000 --- a/vendor/github.com/docker/distribution/context/version.go +++ /dev/null @@ -1,16 +0,0 @@ -package context - -// WithVersion stores the application version in the context. The new context -// gets a logger to ensure log messages are marked with the application -// version. -func WithVersion(ctx Context, version string) Context { - ctx = WithValue(ctx, "version", version) - // push a new logger onto the stack - return WithLogger(ctx, GetLogger(ctx, "version")) -} - -// GetVersion returns the application version from the context. An empty -// string may returned if the version was not set on the context. -func GetVersion(ctx Context) string { - return GetStringValue(ctx, "version") -} diff --git a/vendor/github.com/docker/distribution/context/version_test.go b/vendor/github.com/docker/distribution/context/version_test.go deleted file mode 100644 index b816526919..0000000000 --- a/vendor/github.com/docker/distribution/context/version_test.go +++ /dev/null @@ -1,19 +0,0 @@ -package context - -import "testing" - -func TestVersionContext(t *testing.T) { - ctx := Background() - - if GetVersion(ctx) != "" { - t.Fatalf("context should not yet have a version") - } - - expected := "2.1-whatever" - ctx = WithVersion(ctx, expected) - version := GetVersion(ctx) - - if version != expected { - t.Fatalf("version was not set: %q != %q", version, expected) - } -} diff --git a/vendor/github.com/docker/distribution/contrib/apache/README.MD b/vendor/github.com/docker/distribution/contrib/apache/README.MD deleted file mode 100644 index 29f6bae184..0000000000 --- a/vendor/github.com/docker/distribution/contrib/apache/README.MD +++ /dev/null @@ -1,36 +0,0 @@ -# Apache HTTPd sample for Registry v1, v2 and mirror - -3 containers involved - -* Docker Registry v1 (registry 0.9.1) -* Docker Registry v2 (registry 2.0.0) -* Docker Registry v1 in mirror mode - -HTTP for mirror and HTTPS for v1 & v2 - -* http://registry.example.com proxify Docker Registry 1.0 in Mirror mode -* https://registry.example.com proxify Docker Registry 1.0 or 2.0 in Hosting mode - -## 3 Docker containers should be started - -* Docker Registry 1.0 in Mirror mode : port 5001 -* Docker Registry 1.0 in Hosting mode : port 5000 -* Docker Registry 2.0 in Hosting mode : port 5002 - -### Registry v1 - - docker run -d -e SETTINGS_FLAVOR=dev -v /var/lib/docker-registry/storage/hosting-v1:/tmp -p 5000:5000 registry:0.9.1" - -### Mirror - - docker run -d -e SETTINGS_FLAVOR=dev -e STANDALONE=false -e MIRROR_SOURCE=https://registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io \ - -e MIRROR_TAGS_CACHE_TTL=172800 -v /var/lib/docker-registry/storage/mirror:/tmp -p 5001:5000 registry:0.9.1" - -### Registry v2 - - docker run -d -e SETTINGS_FLAVOR=dev -v /var/lib/axway/docker-registry/storage/hosting2-v2:/tmp -p 5002:5000 registry:2" - -# For Hosting mode access - -* users should have account (valid-user) to be able to fetch images -* only users using account docker-deployer will be allowed to push images diff --git a/vendor/github.com/docker/distribution/contrib/apache/apache.conf b/vendor/github.com/docker/distribution/contrib/apache/apache.conf deleted file mode 100644 index 3300a7c024..0000000000 --- a/vendor/github.com/docker/distribution/contrib/apache/apache.conf +++ /dev/null @@ -1,127 +0,0 @@ -# -# Sample Apache 2.x configuration where : -# - - - - ServerName registry.example.com - ServerAlias www.registry.example.com - - ProxyRequests off - ProxyPreserveHost on - - # no proxy for /error/ (Apache HTTPd errors messages) - ProxyPass /error/ ! - - ProxyPass /_ping http://localhost:5001/_ping - ProxyPassReverse /_ping http://localhost:5001/_ping - - ProxyPass /v1 http://localhost:5001/v1 - ProxyPassReverse /v1 http://localhost:5001/v1 - - # Logs - ErrorLog ${APACHE_LOG_DIR}/mirror_error_log - CustomLog ${APACHE_LOG_DIR}/mirror_access_log combined env=!dontlog - - - - - - - ServerName registry.example.com - ServerAlias www.registry.example.com - - SSLEngine on - SSLCertificateFile /etc/apache2/ssl/registry.example.com.crt - SSLCertificateKeyFile /etc/apache2/ssl/registry.example.com.key - - # Higher Strength SSL Ciphers - SSLProtocol all -SSLv2 -SSLv3 -TLSv1 - SSLCipherSuite RC4-SHA:HIGH - SSLHonorCipherOrder on - - # Logs - ErrorLog ${APACHE_LOG_DIR}/registry_error_ssl_log - CustomLog ${APACHE_LOG_DIR}/registry_access_ssl_log combined env=!dontlog - - Header always set "Docker-Distribution-Api-Version" "registry/2.0" - Header onsuccess set "Docker-Distribution-Api-Version" "registry/2.0" - RequestHeader set X-Forwarded-Proto "https" - - ProxyRequests off - ProxyPreserveHost on - - # no proxy for /error/ (Apache HTTPd errors messages) - ProxyPass /error/ ! - - # - # Registry v1 - # - - ProxyPass /v1 http://localhost:5000/v1 - ProxyPassReverse /v1 http://localhost:5000/v1 - - ProxyPass /_ping http://localhost:5000/_ping - ProxyPassReverse /_ping http://localhost:5000/_ping - - # Authentication require for push - - Order deny,allow - Allow from all - AuthName "Registry Authentication" - AuthType basic - AuthUserFile "/etc/apache2/htpasswd/registry-htpasswd" - - # Read access to authentified users - - Require valid-user - - - # Write access to docker-deployer account only - - Require user docker-deployer - - - - - # Allow ping to run unauthenticated. - - Satisfy any - Allow from all - - - # Allow ping to run unauthenticated. - - Satisfy any - Allow from all - - - # - # Registry v2 - # - - ProxyPass /v2 http://localhost:5002/v2 - ProxyPassReverse /v2 http://localhost:5002/v2 - - - Order deny,allow - Allow from all - AuthName "Registry Authentication" - AuthType basic - AuthUserFile "/etc/apache2/htpasswd/registry-htpasswd" - - # Read access to authentified users - - Require valid-user - - - # Write access to docker-deployer only - - Require user docker-deployer - - - - - - - diff --git a/vendor/github.com/docker/distribution/contrib/compose/README.md b/vendor/github.com/docker/distribution/contrib/compose/README.md deleted file mode 100644 index a9522fd24d..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# Docker Compose V1 + V2 registry - -This compose configuration configures a `v1` and `v2` registry behind an `nginx` -proxy. By default, you can access the combined registry at `localhost:5000`. - -The configuration does not support pushing images to `v2` and pulling from `v1`. -If a `docker` client has a version less than 1.6, Nginx will route its requests -to the 1.0 registry. Requests from newer clients will route to the 2.0 registry. - -### Install Docker Compose - -1. Open a new terminal on the host with your `distribution` source. - -2. Get the `docker-compose` binary. - - $ sudo wget https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` -O /usr/local/bin/docker-compose - - This command installs the binary in the `/usr/local/bin` directory. - -3. Add executable permissions to the binary. - - $ sudo chmod +x /usr/local/bin/docker-compose - -## Build and run with Compose - -1. In your terminal, navigate to the `distribution/contrib/compose` directory - - This directory includes a single `docker-compose.yml` configuration. - - nginx: - build: "nginx" - ports: - - "5000:5000" - links: - - registryv1:registryv1 - - registryv2:registryv2 - registryv1: - image: registry - ports: - - "5000" - registryv2: - build: "../../" - ports: - - "5000" - - This configuration builds a new `nginx` image as specified by the - `nginx/Dockerfile` file. The 1.0 registry comes from Docker's official - public image. Finally, the registry 2.0 image is built from the - `distribution/Dockerfile` you've used previously. - -2. Get a registry 1.0 image. - - $ docker pull registry:0.9.1 - - The Compose configuration looks for this image locally. If you don't do this - step, later steps can fail. - -3. Build `nginx`, the registry 2.0 image, and - - $ docker-compose build - registryv1 uses an image, skipping - Building registryv2... - Step 0 : FROM golang:1.4 - - ... - - Removing intermediate container 9f5f5068c3f3 - Step 4 : COPY docker-registry-v2.conf /etc/nginx/docker-registry-v2.conf - ---> 74acc70fa106 - Removing intermediate container edb84c2b40cb - Successfully built 74acc70fa106 - - The commmand outputs its progress until it completes. - -4. Start your configuration with compose. - - $ docker-compose up - Recreating compose_registryv1_1... - Recreating compose_registryv2_1... - Recreating compose_nginx_1... - Attaching to compose_registryv1_1, compose_registryv2_1, compose_nginx_1 - ... - - -5. In another terminal, display the running configuration. - - $ docker ps - CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES - a81ad2557702 compose_nginx:latest "nginx -g 'daemon of 8 minutes ago Up 8 minutes 80/tcp, 443/tcp, 0.0.0.0:5000->5000/tcp compose_nginx_1 - 0618437450dd compose_registryv2:latest "registry cmd/regist 8 minutes ago Up 8 minutes 0.0.0.0:32777->5000/tcp compose_registryv2_1 - aa82b1ed8e61 registry:latest "docker-registry" 8 minutes ago Up 8 minutes 0.0.0.0:32776->5000/tcp compose_registryv1_1 - -### Explore a bit - -1. Check for TLS on your `nginx` server. - - $ curl -v https://localhost:5000 - * Rebuilt URL to: https://localhost:5000/ - * Hostname was NOT found in DNS cache - * Trying 127.0.0.1... - * Connected to localhost (127.0.0.1) port 5000 (#0) - * successfully set certificate verify locations: - * CAfile: none - CApath: /etc/ssl/certs - * SSLv3, TLS handshake, Client hello (1): - * SSLv3, TLS handshake, Server hello (2): - * SSLv3, TLS handshake, CERT (11): - * SSLv3, TLS alert, Server hello (2): - * SSL certificate problem: self signed certificate - * Closing connection 0 - curl: (60) SSL certificate problem: self signed certificate - More details here: http://curl.haxx.se/docs/sslcerts.html - -2. Tag the `v1` registry image. - - $ docker tag registry:latest localhost:5000/registry_one:latest - -2. Push it to the localhost. - - $ docker push localhost:5000/registry_one:latest - - If you are using the 1.6 Docker client, this pushes the image the `v2 `registry. - -4. Use `curl` to list the image in the registry. - - $ curl -v -X GET http://localhost:32777/v2/registry1/tags/list - * Hostname was NOT found in DNS cache - * Trying 127.0.0.1... - * Connected to localhost (127.0.0.1) port 32777 (#0) - > GET /v2/registry1/tags/list HTTP/1.1 - > User-Agent: curl/7.36.0 - > Host: localhost:32777 - > Accept: */* - > - < HTTP/1.1 200 OK - < Content-Type: application/json; charset=utf-8 - < Docker-Distribution-Api-Version: registry/2.0 - < Date: Tue, 14 Apr 2015 22:34:13 GMT - < Content-Length: 39 - < - {"name":"registry1","tags":["latest"]} - * Connection #0 to host localhost left intact - - This example refers to the specific port assigned to the 2.0 registry. You saw - this port earlier, when you used `docker ps` to show your running containers. - - diff --git a/vendor/github.com/docker/distribution/contrib/compose/docker-compose.yml b/vendor/github.com/docker/distribution/contrib/compose/docker-compose.yml deleted file mode 100644 index 5cd048588a..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -nginx: - build: "nginx" - ports: - - "5000:5000" - links: - - registryv1:registryv1 - - registryv2:registryv2 -registryv1: - image: registry - ports: - - "5000" -registryv2: - build: "../../" - ports: - - "5000" diff --git a/vendor/github.com/docker/distribution/contrib/compose/nginx/Dockerfile b/vendor/github.com/docker/distribution/contrib/compose/nginx/Dockerfile deleted file mode 100644 index 2b252ec7d8..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/nginx/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM nginx:1.7 - -COPY nginx.conf /etc/nginx/nginx.conf -COPY registry.conf /etc/nginx/conf.d/registry.conf -COPY docker-registry.conf /etc/nginx/docker-registry.conf -COPY docker-registry-v2.conf /etc/nginx/docker-registry-v2.conf diff --git a/vendor/github.com/docker/distribution/contrib/compose/nginx/docker-registry-v2.conf b/vendor/github.com/docker/distribution/contrib/compose/nginx/docker-registry-v2.conf deleted file mode 100644 index 65c4d7766e..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/nginx/docker-registry-v2.conf +++ /dev/null @@ -1,6 +0,0 @@ -proxy_pass http://docker-registry-v2; -proxy_set_header Host $http_host; # required for docker client's sake -proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -proxy_set_header X-Forwarded-Proto $scheme; -proxy_read_timeout 900; diff --git a/vendor/github.com/docker/distribution/contrib/compose/nginx/docker-registry.conf b/vendor/github.com/docker/distribution/contrib/compose/nginx/docker-registry.conf deleted file mode 100644 index 7b039a54ac..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/nginx/docker-registry.conf +++ /dev/null @@ -1,7 +0,0 @@ -proxy_pass http://docker-registry; -proxy_set_header Host $http_host; # required for docker client's sake -proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -proxy_set_header X-Forwarded-Proto $scheme; -proxy_set_header Authorization ""; # For basic auth through nginx in v1 to work, please comment this line -proxy_read_timeout 900; diff --git a/vendor/github.com/docker/distribution/contrib/compose/nginx/nginx.conf b/vendor/github.com/docker/distribution/contrib/compose/nginx/nginx.conf deleted file mode 100644 index 63cd180d6b..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/nginx/nginx.conf +++ /dev/null @@ -1,27 +0,0 @@ -user nginx; -worker_processes 1; - -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - - keepalive_timeout 65; - - include /etc/nginx/conf.d/*.conf; -} - diff --git a/vendor/github.com/docker/distribution/contrib/compose/nginx/registry.conf b/vendor/github.com/docker/distribution/contrib/compose/nginx/registry.conf deleted file mode 100644 index 47ffd2379d..0000000000 --- a/vendor/github.com/docker/distribution/contrib/compose/nginx/registry.conf +++ /dev/null @@ -1,41 +0,0 @@ -# Docker registry proxy for api versions 1 and 2 - -upstream docker-registry { - server registryv1:5000; -} - -upstream docker-registry-v2 { - server registryv2:5000; -} - -# No client auth or TLS -server { - listen 5000; - server_name localhost; - - # disable any limits to avoid HTTP 413 for large image uploads - client_max_body_size 0; - - # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) - chunked_transfer_encoding on; - - location /v2/ { - # Do not allow connections from docker 1.5 and earlier - # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents - if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) { - return 404; - } - - # To add basic authentication to v2 use auth_basic setting plus add_header - # auth_basic "registry.localhost"; - # auth_basic_user_file test.password; - # add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always; - - include docker-registry-v2.conf; - } - - location / { - include docker-registry.conf; - } -} - diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/Dockerfile b/vendor/github.com/docker/distribution/contrib/docker-integration/Dockerfile deleted file mode 100644 index 7a047a689e..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM distribution/golem:0.1 - -MAINTAINER Docker Distribution Team - -RUN apk add --no-cache git - -ENV TMPDIR /var/lib/docker/tmp - -WORKDIR /go/src/github.com/docker/distribution/contrib/docker-integration diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/README.md b/vendor/github.com/docker/distribution/contrib/docker-integration/README.md deleted file mode 100644 index 15e0a080a5..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# Docker Registry Integration Testing - -These integration tests cover interactions between the Docker daemon and the -registry server. All tests are run using the docker cli. - -The compose configuration is intended to setup a testing environment for Docker -using multiple registry configurations. These configurations include different -combinations of a v1 and v2 registry as well as TLS configurations. - -## Running inside of Docker -### Get integration container -The container image to run the integation tests will need to be pulled or built -locally. - -*Building locally* -``` -$ docker build -t distribution/docker-integration . -``` - -### Run script - -Invoke the tests within Docker through the `run.sh` script. - -``` -$ ./run.sh -``` - -Run with aufs driver and tmp volume -**NOTE: Using a volume will prevent multiple runs from needing to -re-pull images** -``` -$ DOCKER_GRAPHDRIVER=aufs DOCKER_VOLUME=/tmp/volume ./run.sh -``` - -### Example developer flow - -These tests are useful for developing both as a registry and docker -core developer. The following setup may be used to do integration -testing between development versions - -Insert into your `.zshrc` or `.bashrc` - -``` -# /usr/lib/docker for Docker-in-Docker -# Set this directory to make each invocation run much faster, without -# the need to repull images. -export DOCKER_VOLUME=$HOME/.docker-test-volume - -# Use overlay for all Docker testing, try aufs if overlay not supported -export DOCKER_GRAPHDRIVER=overlay - -# Name this according to personal preference -function rdtest() { - if [ "$1" != "" ]; then - DOCKER_BINARY=$GOPATH/src/github.com/docker/docker/bundles/$1/binary/docker - if [ ! -f $DOCKER_BINARY ]; then - current_version=`cat $GOPATH/src/github.com/docker/docker/VERSION` - echo "$DOCKER_BINARY does not exist" - echo "Current checked out docker version: $current_version" - echo "Checkout desired version and run 'make binary' from $GOPATH/src/github.com/docker/docker" - return 1 - fi - fi - - $GOPATH/src/github.com/docker/distribution/contrib/docker-integration/run.sh -} -``` - -Run with Docker release version -``` -$ rdtest -``` - -Run using local development version of docker -``` -$ cd $GOPATH/src/github.com/docker/docker -$ make binary -$ rdtest `cat VERSION` -``` - -## Running manually outside of Docker - -### Install Docker Compose - -[Docker Compose Installation Guide](https://docs.docker.com/compose/install/) - -### Start compose setup -``` -docker-compose up -``` - -### Install Certificates -The certificates must be installed in /etc/docker/cert.d in order to use TLS -client auth and use the CA certificate. -``` -sudo sh ./install_certs.sh -``` - -### Test with Docker -Tag an image as with any other private registry. Attempt to push the image. - -``` -docker pull hello-world -docker tag hello-world localhost:5440/hello-world -docker push localhost:5440/hello-world - -docker tag hello-world localhost:5441/hello-world -docker push localhost:5441/hello-world -# Perform login using user `testuser` and password `passpassword` -``` - -### Set /etc/hosts entry -Find the non-localhost ip address of local machine - -### Run bats -Run the bats tests after updating /etc/hosts, installing the certificates, and -running the `docker-compose` script. -``` -bats -p . -``` - -## Configurations - -Port | V2 | TLS | Authentication ---- | --- | --- | --- -5000 | yes | no | none -5002 | yes | no | none -5440 | yes | yes | none -5441 | yes | yes | basic (testuser/passpassword) -5442 | yes | yes | TLS client -5443 | yes | yes | TLS client (no CA) -5444 | yes | yes | TLS client + basic (testuser/passpassword) -5445 | yes | yes (no CA) | none -5446 | yes | yes (no CA) | basic (testuser/passpassword) -5447 | yes | yes (no CA) | TLS client -5448 | yes | yes (SSLv3) | none diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/docker-compose.yml b/vendor/github.com/docker/distribution/contrib/docker-integration/docker-compose.yml deleted file mode 100644 index 24ae32a125..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/docker-compose.yml +++ /dev/null @@ -1,82 +0,0 @@ -nginx: - build: "nginx" - ports: - - "5000:5000" - - "5002:5002" - - "5440:5440" - - "5441:5441" - - "5442:5442" - - "5443:5443" - - "5444:5444" - - "5445:5445" - - "5446:5446" - - "5447:5447" - - "5448:5448" - - "5554:5554" - - "5555:5555" - - "5556:5556" - - "5557:5557" - - "5558:5558" - - "5559:5559" - - "6666:6666" - links: - - registryv2:registryv2 - - malevolent:malevolent - - registryv2token:registryv2token - - tokenserver:tokenserver - - registryv2tokenoauth:registryv2tokenoauth - - tokenserveroauth:tokenserveroauth -registryv2: - image: golem-distribution:latest - ports: - - "5000" -registryv2token: - image: golem-distribution:latest - ports: - - "5000" - volumes: - - ./tokenserver/registry-config.yml:/etc/docker/registry/config.yml - - ./tokenserver/certs/localregistry.cert:/etc/docker/registry/localregistry.cert - - ./tokenserver/certs/localregistry.key:/etc/docker/registry/localregistry.key - - ./tokenserver/certs/signing.cert:/etc/docker/registry/tokenbundle.pem -tokenserver: - build: "tokenserver" - command: "--debug -addr 0.0.0.0:5556 -issuer registry-test -passwd .htpasswd -tlscert tls.cert -tlskey tls.key -key sign.key -realm http://auth.localregistry:5556" - ports: - - "5556" -registryv2tokenoauth: - image: golem-distribution:latest - ports: - - "5000" - volumes: - - ./tokenserver-oauth/registry-config.yml:/etc/docker/registry/config.yml - - ./tokenserver-oauth/certs/localregistry.cert:/etc/docker/registry/localregistry.cert - - ./tokenserver-oauth/certs/localregistry.key:/etc/docker/registry/localregistry.key - - ./tokenserver-oauth/certs/signing.cert:/etc/docker/registry/tokenbundle.pem -tokenserveroauth: - build: "tokenserver-oauth" - command: "--debug -addr 0.0.0.0:5559 -issuer registry-test -passwd .htpasswd -tlscert tls.cert -tlskey tls.key -key sign.key -realm http://auth.localregistry:5559" - ports: - - "5559" -malevolent: - image: "dmcgowan/malevolent:0.1.0" - command: "-l 0.0.0.0:6666 -r http://registryv2:5000 -c /certs/localregistry.cert -k /certs/localregistry.key" - links: - - registryv2:registryv2 - volumes: - - ./malevolent-certs:/certs:ro - ports: - - "6666" -docker: - image: golem-dind:latest - container_name: dockerdaemon - command: "docker daemon --debug -s $DOCKER_GRAPHDRIVER" - privileged: true - environment: - DOCKER_GRAPHDRIVER: - volumes: - - ./generated_certs.d:/etc/docker/certs.d - - /var/lib/docker - links: - - nginx:localregistry - - nginx:auth.localregistry diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5440/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5440/ca.crt deleted file mode 100644 index 8c9b1bca32..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5440/ca.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIQMsdPWoLAso/tIOvLk8R/sDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTQwMVoXDTE4MDUxMDIwNTQwMVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YeX -GTvXPKlWA2lMbCvIGB9JYld/otf8aqs6euVJK1f09ngj5b6VoVlI8o1ScVcHKlKx -BGfPMThnM7fiEmsfDSPuCIlGmTqR0t4t9dHRnLBGbZmR8JdAs7LKpP+PFYu0JTIT -wFcjXIs+45cIF2HpsYY6zkj0bmNsyYmT1U1BTW+qqmhvc0Jkr+ikElOQ93Pn7zIO -cXtxdERdzdzXY5cfL3CCaoJDgXOsKPQfYrCi5Zl6sLZVBkIc6Q2fErSIjTp45+NY -AjiOxfUT0MOFtA0/HzYvVp3gTNPGEWM3dF1hwzCqJ32odbw/3TiFCEeC1B82p1sR -sgoFZ6Vbfy9fMhB5S7BBtbqF09Yq/PMM3drOvWIxMF4aOY55ilrtKVwmnckiB0mE -CPOColUUyiWIwwvp82InYsX5ekfS4x1mX1iz8zQEuTF5QHdKiUfd4A33ZMf0Ve6p -y9SaMmos99uVQMzWlwj7nVACXjb9Ee6MY/ePRl7Z2gBxEYV41SGFRg8LNkQ//fYk -o2vJ4Bp4aOh/O3ZQNv1eqEDmf/Su5lYCzURyQ2srcRRdwpteDPX+NHYn2d07knHN -NQvOJn6EkcsDbgp0vSr6mFDv2GZWkTOAd8jZyrcErrLHAxRNm0Va+CEIKLhswf1G -Y2kFkPL1otI8OSDvdJSjZ2GjRSwXhM2Mf3PzfAkCAwEAAaMjMCEwDgYDVR0PAQH/ -BAQDAgCkMA8GA1UdEwEB/wQFMAMBAf8wCwYJKoZIhvcNAQELA4ICAQDBxOHKnF9z -PZWPNKDRmBPtmnU2IHh6JJ9HzqGALJJbBU0MUSD/aLBBkYeS0YSHgYZ1hXLsfuRU -lm/czV41hU1FTDqS2fFpcAAGH+6/rwyfrz+GYr2K4b/ijCwOMbMrDWO54zqZT3KU -GFBpkrh4fNyKdgUNJsy0Q0it3gOGSUmLvEQUzqxPFVz7h/pF/Cecr0/kpjbpsxna -XQkhtDyKDIQfPCq8Ci1vox5WvBbBkdzDtyCm+KSb6VC3pCX6LV5NkS7YM7mtscTi -QdYfLbKX05kUVG2R9SShJn5BSXzGk9M5FR5koGY0lMHwmJqaOqazXjqa1jR7UNDK -UyExHIXSqJ+nCf4bChEsaC1uwu3Gr7PfP41Zb2U3Raf8UmFnbz6Hx0sS4zBvyJ5w -Ntemve4M1mB7++oLZ4PkuwK82SkQ8YK0z+lGJQRjg/HP3fVETV8TlIPJAvg7bRnH -sMrLb/V+K6iY+08kQ2rpU02itRjKnU/DLoha4KVjafY8eIcIR2lpwrYjx+KYpkcF -AMEC7MnuzhyUfDL++GO6XGwRnx2E54MnKtkrECObMSzwuLysPmjhrEUH6YR7zGib -KmN6vQkA4s5053R+Tu0k1JGaw90SfvcW4bxGcFjU4Kg0KqlY1y8tnt+ZiHmK0naA -KauB3KY1NiL+Ng5DCzNdkwDkWH78ZguI2w== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5441/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5441/ca.crt deleted file mode 100644 index 8c9b1bca32..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5441/ca.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIQMsdPWoLAso/tIOvLk8R/sDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTQwMVoXDTE4MDUxMDIwNTQwMVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YeX -GTvXPKlWA2lMbCvIGB9JYld/otf8aqs6euVJK1f09ngj5b6VoVlI8o1ScVcHKlKx -BGfPMThnM7fiEmsfDSPuCIlGmTqR0t4t9dHRnLBGbZmR8JdAs7LKpP+PFYu0JTIT -wFcjXIs+45cIF2HpsYY6zkj0bmNsyYmT1U1BTW+qqmhvc0Jkr+ikElOQ93Pn7zIO -cXtxdERdzdzXY5cfL3CCaoJDgXOsKPQfYrCi5Zl6sLZVBkIc6Q2fErSIjTp45+NY -AjiOxfUT0MOFtA0/HzYvVp3gTNPGEWM3dF1hwzCqJ32odbw/3TiFCEeC1B82p1sR -sgoFZ6Vbfy9fMhB5S7BBtbqF09Yq/PMM3drOvWIxMF4aOY55ilrtKVwmnckiB0mE -CPOColUUyiWIwwvp82InYsX5ekfS4x1mX1iz8zQEuTF5QHdKiUfd4A33ZMf0Ve6p -y9SaMmos99uVQMzWlwj7nVACXjb9Ee6MY/ePRl7Z2gBxEYV41SGFRg8LNkQ//fYk -o2vJ4Bp4aOh/O3ZQNv1eqEDmf/Su5lYCzURyQ2srcRRdwpteDPX+NHYn2d07knHN -NQvOJn6EkcsDbgp0vSr6mFDv2GZWkTOAd8jZyrcErrLHAxRNm0Va+CEIKLhswf1G -Y2kFkPL1otI8OSDvdJSjZ2GjRSwXhM2Mf3PzfAkCAwEAAaMjMCEwDgYDVR0PAQH/ -BAQDAgCkMA8GA1UdEwEB/wQFMAMBAf8wCwYJKoZIhvcNAQELA4ICAQDBxOHKnF9z -PZWPNKDRmBPtmnU2IHh6JJ9HzqGALJJbBU0MUSD/aLBBkYeS0YSHgYZ1hXLsfuRU -lm/czV41hU1FTDqS2fFpcAAGH+6/rwyfrz+GYr2K4b/ijCwOMbMrDWO54zqZT3KU -GFBpkrh4fNyKdgUNJsy0Q0it3gOGSUmLvEQUzqxPFVz7h/pF/Cecr0/kpjbpsxna -XQkhtDyKDIQfPCq8Ci1vox5WvBbBkdzDtyCm+KSb6VC3pCX6LV5NkS7YM7mtscTi -QdYfLbKX05kUVG2R9SShJn5BSXzGk9M5FR5koGY0lMHwmJqaOqazXjqa1jR7UNDK -UyExHIXSqJ+nCf4bChEsaC1uwu3Gr7PfP41Zb2U3Raf8UmFnbz6Hx0sS4zBvyJ5w -Ntemve4M1mB7++oLZ4PkuwK82SkQ8YK0z+lGJQRjg/HP3fVETV8TlIPJAvg7bRnH -sMrLb/V+K6iY+08kQ2rpU02itRjKnU/DLoha4KVjafY8eIcIR2lpwrYjx+KYpkcF -AMEC7MnuzhyUfDL++GO6XGwRnx2E54MnKtkrECObMSzwuLysPmjhrEUH6YR7zGib -KmN6vQkA4s5053R+Tu0k1JGaw90SfvcW4bxGcFjU4Kg0KqlY1y8tnt+ZiHmK0naA -KauB3KY1NiL+Ng5DCzNdkwDkWH78ZguI2w== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/ca.crt deleted file mode 100644 index 8c9b1bca32..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/ca.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIQMsdPWoLAso/tIOvLk8R/sDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTQwMVoXDTE4MDUxMDIwNTQwMVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YeX -GTvXPKlWA2lMbCvIGB9JYld/otf8aqs6euVJK1f09ngj5b6VoVlI8o1ScVcHKlKx -BGfPMThnM7fiEmsfDSPuCIlGmTqR0t4t9dHRnLBGbZmR8JdAs7LKpP+PFYu0JTIT -wFcjXIs+45cIF2HpsYY6zkj0bmNsyYmT1U1BTW+qqmhvc0Jkr+ikElOQ93Pn7zIO -cXtxdERdzdzXY5cfL3CCaoJDgXOsKPQfYrCi5Zl6sLZVBkIc6Q2fErSIjTp45+NY -AjiOxfUT0MOFtA0/HzYvVp3gTNPGEWM3dF1hwzCqJ32odbw/3TiFCEeC1B82p1sR -sgoFZ6Vbfy9fMhB5S7BBtbqF09Yq/PMM3drOvWIxMF4aOY55ilrtKVwmnckiB0mE -CPOColUUyiWIwwvp82InYsX5ekfS4x1mX1iz8zQEuTF5QHdKiUfd4A33ZMf0Ve6p -y9SaMmos99uVQMzWlwj7nVACXjb9Ee6MY/ePRl7Z2gBxEYV41SGFRg8LNkQ//fYk -o2vJ4Bp4aOh/O3ZQNv1eqEDmf/Su5lYCzURyQ2srcRRdwpteDPX+NHYn2d07knHN -NQvOJn6EkcsDbgp0vSr6mFDv2GZWkTOAd8jZyrcErrLHAxRNm0Va+CEIKLhswf1G -Y2kFkPL1otI8OSDvdJSjZ2GjRSwXhM2Mf3PzfAkCAwEAAaMjMCEwDgYDVR0PAQH/ -BAQDAgCkMA8GA1UdEwEB/wQFMAMBAf8wCwYJKoZIhvcNAQELA4ICAQDBxOHKnF9z -PZWPNKDRmBPtmnU2IHh6JJ9HzqGALJJbBU0MUSD/aLBBkYeS0YSHgYZ1hXLsfuRU -lm/czV41hU1FTDqS2fFpcAAGH+6/rwyfrz+GYr2K4b/ijCwOMbMrDWO54zqZT3KU -GFBpkrh4fNyKdgUNJsy0Q0it3gOGSUmLvEQUzqxPFVz7h/pF/Cecr0/kpjbpsxna -XQkhtDyKDIQfPCq8Ci1vox5WvBbBkdzDtyCm+KSb6VC3pCX6LV5NkS7YM7mtscTi -QdYfLbKX05kUVG2R9SShJn5BSXzGk9M5FR5koGY0lMHwmJqaOqazXjqa1jR7UNDK -UyExHIXSqJ+nCf4bChEsaC1uwu3Gr7PfP41Zb2U3Raf8UmFnbz6Hx0sS4zBvyJ5w -Ntemve4M1mB7++oLZ4PkuwK82SkQ8YK0z+lGJQRjg/HP3fVETV8TlIPJAvg7bRnH -sMrLb/V+K6iY+08kQ2rpU02itRjKnU/DLoha4KVjafY8eIcIR2lpwrYjx+KYpkcF -AMEC7MnuzhyUfDL++GO6XGwRnx2E54MnKtkrECObMSzwuLysPmjhrEUH6YR7zGib -KmN6vQkA4s5053R+Tu0k1JGaw90SfvcW4bxGcFjU4Kg0KqlY1y8tnt+ZiHmK0naA -KauB3KY1NiL+Ng5DCzNdkwDkWH78ZguI2w== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/client.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/client.cert deleted file mode 100644 index a239939d08..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/client.cert +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIRAKbgxG1zgQI81ISaHxqLfpcwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNTA1MjYy -MDU0MjJaFw0xODA1MTAyMDU0MjJaMBMxETAPBgNVBAoTCFF1aWNrVExTMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0Pc8DQ9AyvokFzm9v4a+29TCA3/ -oARHbx59G+GOeGkrwG6ZWSZa/oNEJf3NJcU00V04k+fQuVoYBCgBXec9TEBvXa8M -WpLxp5U9LyYkv0AiSPfT2fJEE8mC+isMl+DbmgBcShwRXpeZQyIbEJhedS8mIjW/ -MgJbdTylEq1UcZSLMuky+RWv10dw02fLuN1302OgfJRZooPug9rPYHHGbTB0o7II -hGlhziLVTKV9W1RP8Aop8TamSD85OV6shDaCvmMFr1YNDjcJJ5MGMaSmq0Krq9v4 -nFwmuhOo8gvw/HhzYcxyMHnqMt6EgvbVWwXOoW7xiI3BEDFV33xgTp61bFpcdCai -gwUNzfe4/dHeCk/r3pteWOxH1bvcxUlmUB65wjRAwKuIX8Z0hC4ZlM30o+z11Aru -5QqKMrbSlOcd6yHT6NM1ZRyD+nbFORqB8W51g344eYl0zqQjxTQ0TNjJWDR2RWB/ -Vlp5N+WRjDpsBscR8kt2Q1My17gWzvHfijGETZpbvmo2f+Keqc9fcfzkIe/VZFoO -nhRqhl2PSphcWdimk8Bwf5jC2uDAXWCdvVWvRSP4Xg8zpDwLhlsfLaWVH9n+WG3j -NLQ8EmHWaZlJSeW4BiDYsXmpTAkeLmwoS+pk2WL0TSQ7+S3DyrmTeVANHipNQZeB -twZJXIXR6Jc8hgsCAwEAAaM1MDMwDgYDVR0PAQH/BAQDAgCgMBMGA1UdJQQMMAoG -CCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwCwYJKoZIhvcNAQELA4ICAQCl0cTLbLIn -XFuxreei+y6TlG2Z5XcxJ84mr8VLAaQMlJOLZV0O/suFBu9KqBuvPaHhGRnKE2uw -Vxdj9qaDdvmvuzi4jYyUA/sQuqq1+wHwGTadOi9r0IsL8OxzsG16OlhuXzhoQVdw -C9z1jad4HC7uihQ5yhl2ltAA+h5G0Sr1b9El2mx4p6BV+okmTvrqrmjshQb1GZwx -jG6SJ/uvjGf7rn09ZyYafF9ZDTMNodNXjW8orqGlFdXZLPFJ9agUFfwWfqD2lrtm -Fu+Ei0ZvKOtyzmh06eO2aGAHJCBTfcDM4tBKBKp0MOMoZkcQQDNpSyI12j6s1wtx -/1dC8QDyfFpZFXTbKn3q+6MpR+u5zqVquYjwP5DqGTvX0e1sLSthv7LRiOi0qHv1 -bZ8JoWhRMNumui9mzwar5t20ExcWxGxizZY+t+OIj4kaAeRoKK6r6FrYBnTjM+iR -+xtML5UHPOSmYfNcai0Wn4T7hwpgnCJ+K7qGYjFUCarsINppQEwkxHAvuX+asc38 -nA0wd7ByulkMJph0gP6j6LuJf28JODi6EQ7FcQItMeTuPrc+mpqJ4jP7vTTSJG7Q -wvqXLMgFQFR+2PG0s10hbY/Y/nwZAROfAs7ADED+EcDPTl/+XjVyo/aYIeOb/07W -SpS/cacZYUsSLgB4cWbxElcc/p7CW1PbOA== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/client.key b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/client.key deleted file mode 100644 index acfc9a4873..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5442/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEAq0Pc8DQ9AyvokFzm9v4a+29TCA3/oARHbx59G+GOeGkrwG6Z -WSZa/oNEJf3NJcU00V04k+fQuVoYBCgBXec9TEBvXa8MWpLxp5U9LyYkv0AiSPfT -2fJEE8mC+isMl+DbmgBcShwRXpeZQyIbEJhedS8mIjW/MgJbdTylEq1UcZSLMuky -+RWv10dw02fLuN1302OgfJRZooPug9rPYHHGbTB0o7IIhGlhziLVTKV9W1RP8Aop -8TamSD85OV6shDaCvmMFr1YNDjcJJ5MGMaSmq0Krq9v4nFwmuhOo8gvw/HhzYcxy -MHnqMt6EgvbVWwXOoW7xiI3BEDFV33xgTp61bFpcdCaigwUNzfe4/dHeCk/r3pte -WOxH1bvcxUlmUB65wjRAwKuIX8Z0hC4ZlM30o+z11Aru5QqKMrbSlOcd6yHT6NM1 -ZRyD+nbFORqB8W51g344eYl0zqQjxTQ0TNjJWDR2RWB/Vlp5N+WRjDpsBscR8kt2 -Q1My17gWzvHfijGETZpbvmo2f+Keqc9fcfzkIe/VZFoOnhRqhl2PSphcWdimk8Bw -f5jC2uDAXWCdvVWvRSP4Xg8zpDwLhlsfLaWVH9n+WG3jNLQ8EmHWaZlJSeW4BiDY -sXmpTAkeLmwoS+pk2WL0TSQ7+S3DyrmTeVANHipNQZeBtwZJXIXR6Jc8hgsCAwEA -AQKCAgBJcL1iR5ROMtr0ZNIp4gciALfjQVV3gb48GR/e/9b/LWI0j3i0sOzeLN3h -SLda1fjzOn1Td1ma0dZwmdMUOF+hvhPDYZfzkwWLLkThXgLt/At3rMYstGWa8pN2 -wVUSH7sri7IHmYedP3baQdrHP/9pUsGQc+m8ASTE3i+PFcKbPe5+818HTtRrhVgN -X3oNmPKUNCmSom7ZcKer5P1+Ruum0NuDgomCdkoZgfhjeKeLrVjl/wXDSQL/AhWA -02c4/sML7xx19nl8uf7z+Gj0ir1pvRouhRJTwnRc4KdWu+Yn7WLU8j2ZKf5St/as -zjnpYVEdCp0KSHccgXtobUZDEG2NCHmM6gR2j3qgoUAYjHyqPYlph2r5C47q+p4c -dDWkpwZwGiuYq9qpZj24X6BfppxExcX6AwOgFLZLp80IynwrMVxFsDd2J+KpKRQ1 -+ZtYPcULwInF9MNi/dv84pxGOmmOaIUyjN8Sw4eqANU4T5uvTjUj7Ou6KYyfmxgG -y++vjpRN7tN1t1Hwde8SVWobvmhU+5SJVHV8INoJD7uciaevPo9pt833SQTtDXeY -PVBhOKO7thAxdUiqlU/1nGTXnf1VO6wAjaVYoTnP4tJ97WuTptwd2F5znVWHFGVh -lzJAzmFOuyCnRnInsf4n5EmWJnT7XF2CofQqAJ8NIddrU8GnQQKCAQEAyqWAiPMK -I/dMzlS7oJGlhbKZ5R4buc+EoZqtW7/8/S+0L6IaQvpEUilD+aDQyaxXjoKiQQL+ -0UeeSmF/zU5BsOTpB8AuJUfYoUe0N+x7hO5eIcoCB/QWYX+iC3tCN4j1Iwt6VliV -PBYEiLUYPngSIHob/nK8UtgxrWQ3Fik9XJtWhePHrvMvDBalgCKdnyhuucGxKUjc -TtPcyMFdi0z4Kt/FAm+5u/v4ZkO909Ish0FrAqQ9t5ETfvTTTYKBmzny6/LSPTK9 -0XIsHltuC1xG4vGQsES/Ph++Yj3Vn011FqvFZeBUHbfcQuB4h5wcb+90d4GU1kux -eabsHPIZKrlN4QKCAQEA2Fs8NAN5K9i7qbxZCJPi6DJV6XMznk6JVGb+qkkChCyq -IOXb95+c9CIpe6w2d3res3zvML3zbdz2Lyp9G0ve6tSlOaSnHeyIxZ5SRB+yQrcF -GXtsx370bOGjCi1/NH85kwKlMuROFJKleJQv8rKpIEo5aPSPV9Cc/VsUqBpvR+O0 -U1HMv57P4yJA/ddw6imHJBl3jTmWBpK4B+LBsCbdypxdVoO8t32Lb2BqDTaPJfYU -RJUpjn/efLLoP6CWxYtqpUlY5tc7NJGAokl8Fo1mPn02klydvs09uiXE80Li2Hoc -/meMH07Lbt2VTw6iGNRX6VpIHEUZGZeS6rbAvO4ZawKCAQEAjOtGVPXdyWEB0kHu -MBzYY/7tMf0b/rymWNL9Vt5NiauQu8cYSBdNR21WzdLdHkFwqbOCLX9twA7zrnna -q+SNnfuxaShlbptls9HvKyySQMCaSRj3DJzaq3ZcM2vFgmUFQxeKPV1geeY9xOta -LqbExDzmFq2m9F1PPmqAPDL1bt6+7mCVzb1irB9be52WysUNKrPdBP6b5V1DHYAK -EwK1WOs/TxBusqDn/gWBjjmLqYr+ZVndaTfDvPd3sWDdzBoiKZ40QUZ15Z5lu76M -6e2DhfHCUjGcZBEjDaI+WYc9s0REAzJajEf9Lax3ZKZUyCpWbXx5CgSdKCHB8+cP -RTyTQQKCAQEAsxx8r5a8hocLfQ43Kvm7HH0nUHeVoRXlbOFDLNf6ZE/RnCCOxOX3 -esiZTRAZmzo2CaOBJPnr/+SwTgW/woxCBGh8TEc6LnS2GdviwRD4c3CuoRTjzhgU -49q8Ld3SdDRrBoBnIMWOuktY/4S2WRZ9GwU3l+L2lD1Y6gmwBSa1P2+Lxnpupagk -9CVUZpEnokM05LbMmTa2M8Tc43Je5KSYcnaWctvmrIUbnN3VjhC/2y5oQwq1d4n2 -N4eo65vXlbzAUgtxtNEz62YVdsSdHNJ8dXkVZ3+S+/VPh75i2PxjbdFSFW7Futlx -YtvAEs3LdgC8squSDQ1LJTutXfBjiUUX9wKCAQBiCMre86tLyJu6Qb6X1cRAwO7m -4kyGzIUtijXko6mWxb4X/usVvzhSaNVYbHbMZXjX+J5vhBOul+RmQ3EY6nw0H2z8 -9D4z/rnQVqeb0uvIeUhBPni+s4fS4bA92M6Ie5bhiOSF2JjjJr38BFnTZARE7C+7 -ZII7z2c0eQz/wAAt9fWWroAB2mIm6wxq0LNij2NoE0iq6k2xJE1/k8qhXpsN0zAv -bjG72Q7WryBeK/eIDK9e5wGlfLVDOx2Evlcaj70oJxuoRh57e8fCYy8huJQT+Wlx -Qw4zhxiyzAMq8SEqFsm8dVO4Bu2FwzmmehA80ieSb+si7JZU92xGDT394Im2 ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/ca.crt deleted file mode 100644 index 8c9b1bca32..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/ca.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIQMsdPWoLAso/tIOvLk8R/sDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTQwMVoXDTE4MDUxMDIwNTQwMVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YeX -GTvXPKlWA2lMbCvIGB9JYld/otf8aqs6euVJK1f09ngj5b6VoVlI8o1ScVcHKlKx -BGfPMThnM7fiEmsfDSPuCIlGmTqR0t4t9dHRnLBGbZmR8JdAs7LKpP+PFYu0JTIT -wFcjXIs+45cIF2HpsYY6zkj0bmNsyYmT1U1BTW+qqmhvc0Jkr+ikElOQ93Pn7zIO -cXtxdERdzdzXY5cfL3CCaoJDgXOsKPQfYrCi5Zl6sLZVBkIc6Q2fErSIjTp45+NY -AjiOxfUT0MOFtA0/HzYvVp3gTNPGEWM3dF1hwzCqJ32odbw/3TiFCEeC1B82p1sR -sgoFZ6Vbfy9fMhB5S7BBtbqF09Yq/PMM3drOvWIxMF4aOY55ilrtKVwmnckiB0mE -CPOColUUyiWIwwvp82InYsX5ekfS4x1mX1iz8zQEuTF5QHdKiUfd4A33ZMf0Ve6p -y9SaMmos99uVQMzWlwj7nVACXjb9Ee6MY/ePRl7Z2gBxEYV41SGFRg8LNkQ//fYk -o2vJ4Bp4aOh/O3ZQNv1eqEDmf/Su5lYCzURyQ2srcRRdwpteDPX+NHYn2d07knHN -NQvOJn6EkcsDbgp0vSr6mFDv2GZWkTOAd8jZyrcErrLHAxRNm0Va+CEIKLhswf1G -Y2kFkPL1otI8OSDvdJSjZ2GjRSwXhM2Mf3PzfAkCAwEAAaMjMCEwDgYDVR0PAQH/ -BAQDAgCkMA8GA1UdEwEB/wQFMAMBAf8wCwYJKoZIhvcNAQELA4ICAQDBxOHKnF9z -PZWPNKDRmBPtmnU2IHh6JJ9HzqGALJJbBU0MUSD/aLBBkYeS0YSHgYZ1hXLsfuRU -lm/czV41hU1FTDqS2fFpcAAGH+6/rwyfrz+GYr2K4b/ijCwOMbMrDWO54zqZT3KU -GFBpkrh4fNyKdgUNJsy0Q0it3gOGSUmLvEQUzqxPFVz7h/pF/Cecr0/kpjbpsxna -XQkhtDyKDIQfPCq8Ci1vox5WvBbBkdzDtyCm+KSb6VC3pCX6LV5NkS7YM7mtscTi -QdYfLbKX05kUVG2R9SShJn5BSXzGk9M5FR5koGY0lMHwmJqaOqazXjqa1jR7UNDK -UyExHIXSqJ+nCf4bChEsaC1uwu3Gr7PfP41Zb2U3Raf8UmFnbz6Hx0sS4zBvyJ5w -Ntemve4M1mB7++oLZ4PkuwK82SkQ8YK0z+lGJQRjg/HP3fVETV8TlIPJAvg7bRnH -sMrLb/V+K6iY+08kQ2rpU02itRjKnU/DLoha4KVjafY8eIcIR2lpwrYjx+KYpkcF -AMEC7MnuzhyUfDL++GO6XGwRnx2E54MnKtkrECObMSzwuLysPmjhrEUH6YR7zGib -KmN6vQkA4s5053R+Tu0k1JGaw90SfvcW4bxGcFjU4Kg0KqlY1y8tnt+ZiHmK0naA -KauB3KY1NiL+Ng5DCzNdkwDkWH78ZguI2w== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/client.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/client.cert deleted file mode 100644 index ef030f7405..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/client.cert +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9DCCAt6gAwIBAgIQb58oJ+9SvWUCcYWA+L1oiTALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTUwMFoXDTE4MDUxMDIwNTUwMFowEzERMA8GA1UEChMIUXVpY2tUTFMwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDmOL3EhBm4So3agPMmF0z1+/nPlrE -xoG7x0HYPk5CP3PF3TNVk3ArBPkMzge0/895a4ZEb9j+LUQEjOZa/ZwuLmSjfJSt -9xTXI1ldp8KasyzQZjC33/bUj7FGxGzgbHyJrGGBoH2W5HdswH4WzhCnGTslyiDo -VN4hklJ7gr+Geq3TPf8Eji+1L71MOrUyoNp7BaQBQT/gKxK0nV+ZuSk6eaiu+om7 -slp3x4bc21o7eIMmNXggJP6p9fMDctnioKhAPcm+5ADiFYSjivLeUQ85VkMTpmdU -yvq6ziK3Ls6erD+S3xLvcHYAaeu84qLd7qdPwkHMTQsDpO4vPMIwL8piMzZV+kwL -Bq+5xk5//FwnQH0pSo2Nr4vRn+DITZc3GKyGUJQoOUgAdfGNskTt8GXa4IsHn5iw -zr12vGaxb//GDm0RLHnh7NVbD8xxDHIJq+fJNFb7MdXa8v31PYebkWuaPhYt6HQC -I/D81zwcJIOGfzNITS2ifM5tvMaUXireo4pLC2v2aSY6RrPq1owlB6jGFwGwZSAF -O6rxSqWO1gLfhJLzqcw/NjWnO7nCZEs/iKgAa22K2CtTt3dDMTvSBYKdkRe/FYQC -MCa7MFJSaH85pYRzoDN4IuVpvROrtuQmlI47oZzb64uCPoA4A8AN+k8iysqITsgK -1m8ePPXhbu4YlwIDAQABozUwMzAOBgNVHQ8BAf8EBAMCAKAwEwYDVR0lBAwwCgYI -KwYBBQUHAwIwDAYDVR0TAQH/BAIwADALBgkqhkiG9w0BAQsDggIBALSgrCdEQd3I -vb/FNkNZkAwdjfBD6j7ZtPBwvjEiiyNTx9hOLBGvbey7kr0HtW0KkLWsdRmCc+3z -ev9I5VjDOtpiqrvuAA1wRBaL3UzGyj/eFjPJpvkfJi8zjkIZ2y18QG3yJ6Eqy6dD -0aIQAHl9hkXMOVrf364gf0p7EoOGtSlfQ56yIGDPTFKKiy+Al0S42p17lhI4coz9 -zGXE1/SiNeZgdsk4zHDqhzzBp8foZuSL1sGcIXHkG8RtqZ1WvCyIPYRyIjIKZcXd -JCEM//EbgDzQ7VE/jm+hIlYfPjM7fmUzsfii+bIrp/0HGEU3HN++LsA6eQOwWPa/ -PrxKPP36EVXb72QK8C3lmz6y+CHhuuAm0C1b1qmYVEs4eRE21S8eB2l0KUlfOecf -xZ1LWp1agKt6fGqRgcsR3/qO27l8W7hlbFNPeOTgr6NQQkEMRW5OxbnZ58ULXqr3 -gWh8Na3D4+3j53035UBBQUMmeeFfWCvtr5n0+6BTAi62Cwwu9QQQBM/2f9/9K+B7 -cW0xPYtczm+VwJL6/rDtNN9xPWitxab1dkZp2XcHG3VWtYvE2R2EtEoKvvCLPggx -zcafsZfcD1wlvtQF7YjykGJnMa0SB0GBl9SQtvGc8PkP39yXHqXZhIoo3fp4qm9v -RfbdpOr8p/Ks34ZqQPukFwpM1s/6aicF ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/client.key b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/client.key deleted file mode 100644 index 5aee3ea5ff..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5443/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEAw5ji9xIQZuEqN2oDzJhdM9fv5z5axMaBu8dB2D5OQj9zxd0z -VZNwKwT5DM4HtP/PeWuGRG/Y/i1EBIzmWv2cLi5ko3yUrfcU1yNZXafCmrMs0GYw -t9/21I+xRsRs4Gx8iaxhgaB9luR3bMB+Fs4Qpxk7Jcog6FTeIZJSe4K/hnqt0z3/ -BI4vtS+9TDq1MqDaewWkAUE/4CsStJ1fmbkpOnmorvqJu7Jad8eG3NtaO3iDJjV4 -ICT+qfXzA3LZ4qCoQD3JvuQA4hWEo4ry3lEPOVZDE6ZnVMr6us4ity7Onqw/kt8S -73B2AGnrvOKi3e6nT8JBzE0LA6TuLzzCMC/KYjM2VfpMCwavucZOf/xcJ0B9KUqN -ja+L0Z/gyE2XNxishlCUKDlIAHXxjbJE7fBl2uCLB5+YsM69drxmsW//xg5tESx5 -4ezVWw/McQxyCavnyTRW+zHV2vL99T2Hm5Frmj4WLeh0AiPw/Nc8HCSDhn8zSE0t -onzObbzGlF4q3qOKSwtr9mkmOkaz6taMJQeoxhcBsGUgBTuq8UqljtYC34SS86nM -PzY1pzu5wmRLP4ioAGttitgrU7d3QzE70gWCnZEXvxWEAjAmuzBSUmh/OaWEc6Az -eCLlab0Tq7bkJpSOO6Gc2+uLgj6AOAPADfpPIsrKiE7ICtZvHjz14W7uGJcCAwEA -AQKCAgBmIvmxpp8l+cH/ub5OIenZXpMJn4fqZPXtxjjd4HshIN0ln0JlF15lOG2M -gDGKFGKUts8gAX/ACocQETtgnDnn65XlwPIqfXFGflD2FNoLyjBGinY6LhtIF9is -aXmpHz1Q7tDjzZiHKLor8cBlzCjp+MToEMpqR5bO1Qd5M2cro/gM7Lyz9kN3S3x/ -x9BCpbgwsVtYxGfEePmFkwAO159tx4WMCYvOlW2kSm5j+a7+iwmA9D7MGkVZHvNN -A7Y/H0F8ekdVBN5pMG9Yrv/vk0ht2lugcS5YGr4eufFq0mhWdv+jhBTxLzqPMMBG -m9oMJcj8XyXYtwpfVsqBpCqK2wnEnv4Kf0rZzBU706nI2mjPXx3dL+5qo8uQJKNp -mxoS7vmHV5RIJgtdvyzGFHjdfu1leowhV+Jy9jWzMw4wlnmlxsfDECf5RoSf2XGt -SMGJb0dbJKae+W4MfNUFsgAWMZk3h3KF8AHHe44OpDbQeoh3JLnkWSG0oS3CR0ch -68TzCy0SZZEZ9IS+I6o5WVpwWfReCQ5NjaKipWcpiJvxg+Dc3GG3QcVXVz2gGrJh -g9v0v6eyeOJ32QGvvP7THFBjpWeeHlXT8Yz6hFcPrvErEZ029TEmhg8aLWBGfsR5 -F1bazdbqvOSEB9vBAAaddNnEDG9Rl8EmC4WdsnVgYUw1J7gfQQKCAQEA9DKjD9eN -CrUl/2YfSm2WaFhYci74XcHDVeAXN2SbOyKbMIqk3aOFQNRAsLRnwPkdiLtuqeDK -BafrfLTCORHfFdYKnUzmuekESNLckN9VyLztgqOqNAv3LD6GmSHBaJEnUyniLxOL -k0wMEBIsEQw7Fb4blM2REYJ3ZzMFmgpRGnIX8KcxhW9XgSrnqMLO0w6mVxjo7xzd -813nCcNrGhySM/EzKYtTNHy2JZmMH5QFHaIj67KklO7VeEZX5U+TKveBEt4rmHqs -Ndqf/djSs8vu1xse82pVRxMXX2mhDLmwjUjPgWYxUL92jTiyJhE7GxpVB/yHgF1J -Ecb47MDahoNKkQKCAQEAzQzvCOA77IQpGO117GcMqcjzwEUhTytojFBT+s5mHfzk -dYr5TyN86LQ7/GktNoJ5oRvD9UGRSul1OGneivqtWj6mv6/Zvfzacx8NXY4MYFs1 -nEr3Gr7orVFIzD2x7nMPG2G6+J6hZ1rhpnZ9Hprf5G41sHIJxHJ9wTYSUAmFh8bv -FiJqF90bSq/E5hgjphtX6wZWeZYspzc/5+IrJ/I0nqoxV3rjUy234zlzKJAV10sV -5oVgxLLQsUujkHp/Da+ij2aTv1Za8y3PTJ7MAHYgdpa5l/4U9MnPUEB2REBCI1NN -TqxnViwD0xgsvxfb79UzruLJIYOCKvfOumlutXM0pwKCAQBUIMXQhWAP2kyW6mXJ -TGvO0vDVlZz3H/Pdt/AHo19fRhLU7E7UFKupo/YNanl8H9au7nO3jrvKqwkT02o+ -IwwKB81sV7v9PGu/cvWN64MwPvZMVXojqCOlWH0icGCjV66Glh1YPpGNU1ushbYs -wVvxp6b04sUhlSLxqMA7S2aZh8j7nX4QDEXHODLLDyIV0Cw6QViuV/GXEDiyQmK5 -gjJUNrp7i4ZExNozpeyCTIpepSde4hKVRJrCbumFFJ8M5GvRRj0asNh3TTRlTbd5 -Pb6w2KUXEwECFW+t7UQQkEBkzDrAx6YhvXRoPqoRN0p3keDNeZBtBrZPq47CccZX -JRAhAoIBAQCJ/DgnGu54XP9i/PksGrSU1Nvi+SJPKoDyW2QIFTj22SXMS7c1oEYA -OrlbRFPeqLK8zfhyZKsnZC8zxVqy37okTqDbwbSfezZt3emamWqOtRJAmNnsr6fY -aii4+JNySQ9Td9LgV69549iRso7EN6iPCfMrR7J29izWBlMQdTfchOyDUqleYbZp -7hpsVLY4o5HoYJ10uLBX3oAsxTARc5YhZ5pIqjOr18o1KIXsN/napXaZaAwUkdiK -VsI9CZHSXezg30Bxs+UEXEFx6DKT5Oo3o3pFZAAqMlxGPvrXNv7K0tXlKXNos7nn -Jg+GkMG6hRiAibCb0umXjKcbHrQXeu1lAoIBAQDcRBsy6cSQXMSu6+PyroH+2DvR -4fuiMfSrUNjv+9K8gtjYLetrZUvRuFT3A/KzDrALKyTFTGJk3YlpTaC5iNKd+QK8 -6RBJRYeYV16fpX/2ak/8MgfB2gdW//pE0eFjw+qakcUXmo957m7dUXbOrw1VNAET -LVBeVnml+2FUj0sTXGwHKcINPR78PWZ8i1ka9DptnKLBNeA+x+OMkCA88RJJegSk -/rgDDV52z4fJHQJh9TZ7zLAXxGgDFYLGPTrdeT+D/owuPXF+SCP4pMtVnwbQgH9G -dfQ9bb7G14vAeu/kEkFdGFEreS09BOTRbTfzFjFdDvSV4JyOXe9i/sUDxf9R ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/ca.crt deleted file mode 100644 index 8c9b1bca32..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/ca.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIQMsdPWoLAso/tIOvLk8R/sDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTQwMVoXDTE4MDUxMDIwNTQwMVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YeX -GTvXPKlWA2lMbCvIGB9JYld/otf8aqs6euVJK1f09ngj5b6VoVlI8o1ScVcHKlKx -BGfPMThnM7fiEmsfDSPuCIlGmTqR0t4t9dHRnLBGbZmR8JdAs7LKpP+PFYu0JTIT -wFcjXIs+45cIF2HpsYY6zkj0bmNsyYmT1U1BTW+qqmhvc0Jkr+ikElOQ93Pn7zIO -cXtxdERdzdzXY5cfL3CCaoJDgXOsKPQfYrCi5Zl6sLZVBkIc6Q2fErSIjTp45+NY -AjiOxfUT0MOFtA0/HzYvVp3gTNPGEWM3dF1hwzCqJ32odbw/3TiFCEeC1B82p1sR -sgoFZ6Vbfy9fMhB5S7BBtbqF09Yq/PMM3drOvWIxMF4aOY55ilrtKVwmnckiB0mE -CPOColUUyiWIwwvp82InYsX5ekfS4x1mX1iz8zQEuTF5QHdKiUfd4A33ZMf0Ve6p -y9SaMmos99uVQMzWlwj7nVACXjb9Ee6MY/ePRl7Z2gBxEYV41SGFRg8LNkQ//fYk -o2vJ4Bp4aOh/O3ZQNv1eqEDmf/Su5lYCzURyQ2srcRRdwpteDPX+NHYn2d07knHN -NQvOJn6EkcsDbgp0vSr6mFDv2GZWkTOAd8jZyrcErrLHAxRNm0Va+CEIKLhswf1G -Y2kFkPL1otI8OSDvdJSjZ2GjRSwXhM2Mf3PzfAkCAwEAAaMjMCEwDgYDVR0PAQH/ -BAQDAgCkMA8GA1UdEwEB/wQFMAMBAf8wCwYJKoZIhvcNAQELA4ICAQDBxOHKnF9z -PZWPNKDRmBPtmnU2IHh6JJ9HzqGALJJbBU0MUSD/aLBBkYeS0YSHgYZ1hXLsfuRU -lm/czV41hU1FTDqS2fFpcAAGH+6/rwyfrz+GYr2K4b/ijCwOMbMrDWO54zqZT3KU -GFBpkrh4fNyKdgUNJsy0Q0it3gOGSUmLvEQUzqxPFVz7h/pF/Cecr0/kpjbpsxna -XQkhtDyKDIQfPCq8Ci1vox5WvBbBkdzDtyCm+KSb6VC3pCX6LV5NkS7YM7mtscTi -QdYfLbKX05kUVG2R9SShJn5BSXzGk9M5FR5koGY0lMHwmJqaOqazXjqa1jR7UNDK -UyExHIXSqJ+nCf4bChEsaC1uwu3Gr7PfP41Zb2U3Raf8UmFnbz6Hx0sS4zBvyJ5w -Ntemve4M1mB7++oLZ4PkuwK82SkQ8YK0z+lGJQRjg/HP3fVETV8TlIPJAvg7bRnH -sMrLb/V+K6iY+08kQ2rpU02itRjKnU/DLoha4KVjafY8eIcIR2lpwrYjx+KYpkcF -AMEC7MnuzhyUfDL++GO6XGwRnx2E54MnKtkrECObMSzwuLysPmjhrEUH6YR7zGib -KmN6vQkA4s5053R+Tu0k1JGaw90SfvcW4bxGcFjU4Kg0KqlY1y8tnt+ZiHmK0naA -KauB3KY1NiL+Ng5DCzNdkwDkWH78ZguI2w== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/client.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/client.cert deleted file mode 100644 index a239939d08..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/client.cert +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIRAKbgxG1zgQI81ISaHxqLfpcwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNTA1MjYy -MDU0MjJaFw0xODA1MTAyMDU0MjJaMBMxETAPBgNVBAoTCFF1aWNrVExTMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0Pc8DQ9AyvokFzm9v4a+29TCA3/ -oARHbx59G+GOeGkrwG6ZWSZa/oNEJf3NJcU00V04k+fQuVoYBCgBXec9TEBvXa8M -WpLxp5U9LyYkv0AiSPfT2fJEE8mC+isMl+DbmgBcShwRXpeZQyIbEJhedS8mIjW/ -MgJbdTylEq1UcZSLMuky+RWv10dw02fLuN1302OgfJRZooPug9rPYHHGbTB0o7II -hGlhziLVTKV9W1RP8Aop8TamSD85OV6shDaCvmMFr1YNDjcJJ5MGMaSmq0Krq9v4 -nFwmuhOo8gvw/HhzYcxyMHnqMt6EgvbVWwXOoW7xiI3BEDFV33xgTp61bFpcdCai -gwUNzfe4/dHeCk/r3pteWOxH1bvcxUlmUB65wjRAwKuIX8Z0hC4ZlM30o+z11Aru -5QqKMrbSlOcd6yHT6NM1ZRyD+nbFORqB8W51g344eYl0zqQjxTQ0TNjJWDR2RWB/ -Vlp5N+WRjDpsBscR8kt2Q1My17gWzvHfijGETZpbvmo2f+Keqc9fcfzkIe/VZFoO -nhRqhl2PSphcWdimk8Bwf5jC2uDAXWCdvVWvRSP4Xg8zpDwLhlsfLaWVH9n+WG3j -NLQ8EmHWaZlJSeW4BiDYsXmpTAkeLmwoS+pk2WL0TSQ7+S3DyrmTeVANHipNQZeB -twZJXIXR6Jc8hgsCAwEAAaM1MDMwDgYDVR0PAQH/BAQDAgCgMBMGA1UdJQQMMAoG -CCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwCwYJKoZIhvcNAQELA4ICAQCl0cTLbLIn -XFuxreei+y6TlG2Z5XcxJ84mr8VLAaQMlJOLZV0O/suFBu9KqBuvPaHhGRnKE2uw -Vxdj9qaDdvmvuzi4jYyUA/sQuqq1+wHwGTadOi9r0IsL8OxzsG16OlhuXzhoQVdw -C9z1jad4HC7uihQ5yhl2ltAA+h5G0Sr1b9El2mx4p6BV+okmTvrqrmjshQb1GZwx -jG6SJ/uvjGf7rn09ZyYafF9ZDTMNodNXjW8orqGlFdXZLPFJ9agUFfwWfqD2lrtm -Fu+Ei0ZvKOtyzmh06eO2aGAHJCBTfcDM4tBKBKp0MOMoZkcQQDNpSyI12j6s1wtx -/1dC8QDyfFpZFXTbKn3q+6MpR+u5zqVquYjwP5DqGTvX0e1sLSthv7LRiOi0qHv1 -bZ8JoWhRMNumui9mzwar5t20ExcWxGxizZY+t+OIj4kaAeRoKK6r6FrYBnTjM+iR -+xtML5UHPOSmYfNcai0Wn4T7hwpgnCJ+K7qGYjFUCarsINppQEwkxHAvuX+asc38 -nA0wd7ByulkMJph0gP6j6LuJf28JODi6EQ7FcQItMeTuPrc+mpqJ4jP7vTTSJG7Q -wvqXLMgFQFR+2PG0s10hbY/Y/nwZAROfAs7ADED+EcDPTl/+XjVyo/aYIeOb/07W -SpS/cacZYUsSLgB4cWbxElcc/p7CW1PbOA== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/client.key b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/client.key deleted file mode 100644 index acfc9a4873..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5444/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEAq0Pc8DQ9AyvokFzm9v4a+29TCA3/oARHbx59G+GOeGkrwG6Z -WSZa/oNEJf3NJcU00V04k+fQuVoYBCgBXec9TEBvXa8MWpLxp5U9LyYkv0AiSPfT -2fJEE8mC+isMl+DbmgBcShwRXpeZQyIbEJhedS8mIjW/MgJbdTylEq1UcZSLMuky -+RWv10dw02fLuN1302OgfJRZooPug9rPYHHGbTB0o7IIhGlhziLVTKV9W1RP8Aop -8TamSD85OV6shDaCvmMFr1YNDjcJJ5MGMaSmq0Krq9v4nFwmuhOo8gvw/HhzYcxy -MHnqMt6EgvbVWwXOoW7xiI3BEDFV33xgTp61bFpcdCaigwUNzfe4/dHeCk/r3pte -WOxH1bvcxUlmUB65wjRAwKuIX8Z0hC4ZlM30o+z11Aru5QqKMrbSlOcd6yHT6NM1 -ZRyD+nbFORqB8W51g344eYl0zqQjxTQ0TNjJWDR2RWB/Vlp5N+WRjDpsBscR8kt2 -Q1My17gWzvHfijGETZpbvmo2f+Keqc9fcfzkIe/VZFoOnhRqhl2PSphcWdimk8Bw -f5jC2uDAXWCdvVWvRSP4Xg8zpDwLhlsfLaWVH9n+WG3jNLQ8EmHWaZlJSeW4BiDY -sXmpTAkeLmwoS+pk2WL0TSQ7+S3DyrmTeVANHipNQZeBtwZJXIXR6Jc8hgsCAwEA -AQKCAgBJcL1iR5ROMtr0ZNIp4gciALfjQVV3gb48GR/e/9b/LWI0j3i0sOzeLN3h -SLda1fjzOn1Td1ma0dZwmdMUOF+hvhPDYZfzkwWLLkThXgLt/At3rMYstGWa8pN2 -wVUSH7sri7IHmYedP3baQdrHP/9pUsGQc+m8ASTE3i+PFcKbPe5+818HTtRrhVgN -X3oNmPKUNCmSom7ZcKer5P1+Ruum0NuDgomCdkoZgfhjeKeLrVjl/wXDSQL/AhWA -02c4/sML7xx19nl8uf7z+Gj0ir1pvRouhRJTwnRc4KdWu+Yn7WLU8j2ZKf5St/as -zjnpYVEdCp0KSHccgXtobUZDEG2NCHmM6gR2j3qgoUAYjHyqPYlph2r5C47q+p4c -dDWkpwZwGiuYq9qpZj24X6BfppxExcX6AwOgFLZLp80IynwrMVxFsDd2J+KpKRQ1 -+ZtYPcULwInF9MNi/dv84pxGOmmOaIUyjN8Sw4eqANU4T5uvTjUj7Ou6KYyfmxgG -y++vjpRN7tN1t1Hwde8SVWobvmhU+5SJVHV8INoJD7uciaevPo9pt833SQTtDXeY -PVBhOKO7thAxdUiqlU/1nGTXnf1VO6wAjaVYoTnP4tJ97WuTptwd2F5znVWHFGVh -lzJAzmFOuyCnRnInsf4n5EmWJnT7XF2CofQqAJ8NIddrU8GnQQKCAQEAyqWAiPMK -I/dMzlS7oJGlhbKZ5R4buc+EoZqtW7/8/S+0L6IaQvpEUilD+aDQyaxXjoKiQQL+ -0UeeSmF/zU5BsOTpB8AuJUfYoUe0N+x7hO5eIcoCB/QWYX+iC3tCN4j1Iwt6VliV -PBYEiLUYPngSIHob/nK8UtgxrWQ3Fik9XJtWhePHrvMvDBalgCKdnyhuucGxKUjc -TtPcyMFdi0z4Kt/FAm+5u/v4ZkO909Ish0FrAqQ9t5ETfvTTTYKBmzny6/LSPTK9 -0XIsHltuC1xG4vGQsES/Ph++Yj3Vn011FqvFZeBUHbfcQuB4h5wcb+90d4GU1kux -eabsHPIZKrlN4QKCAQEA2Fs8NAN5K9i7qbxZCJPi6DJV6XMznk6JVGb+qkkChCyq -IOXb95+c9CIpe6w2d3res3zvML3zbdz2Lyp9G0ve6tSlOaSnHeyIxZ5SRB+yQrcF -GXtsx370bOGjCi1/NH85kwKlMuROFJKleJQv8rKpIEo5aPSPV9Cc/VsUqBpvR+O0 -U1HMv57P4yJA/ddw6imHJBl3jTmWBpK4B+LBsCbdypxdVoO8t32Lb2BqDTaPJfYU -RJUpjn/efLLoP6CWxYtqpUlY5tc7NJGAokl8Fo1mPn02klydvs09uiXE80Li2Hoc -/meMH07Lbt2VTw6iGNRX6VpIHEUZGZeS6rbAvO4ZawKCAQEAjOtGVPXdyWEB0kHu -MBzYY/7tMf0b/rymWNL9Vt5NiauQu8cYSBdNR21WzdLdHkFwqbOCLX9twA7zrnna -q+SNnfuxaShlbptls9HvKyySQMCaSRj3DJzaq3ZcM2vFgmUFQxeKPV1geeY9xOta -LqbExDzmFq2m9F1PPmqAPDL1bt6+7mCVzb1irB9be52WysUNKrPdBP6b5V1DHYAK -EwK1WOs/TxBusqDn/gWBjjmLqYr+ZVndaTfDvPd3sWDdzBoiKZ40QUZ15Z5lu76M -6e2DhfHCUjGcZBEjDaI+WYc9s0REAzJajEf9Lax3ZKZUyCpWbXx5CgSdKCHB8+cP -RTyTQQKCAQEAsxx8r5a8hocLfQ43Kvm7HH0nUHeVoRXlbOFDLNf6ZE/RnCCOxOX3 -esiZTRAZmzo2CaOBJPnr/+SwTgW/woxCBGh8TEc6LnS2GdviwRD4c3CuoRTjzhgU -49q8Ld3SdDRrBoBnIMWOuktY/4S2WRZ9GwU3l+L2lD1Y6gmwBSa1P2+Lxnpupagk -9CVUZpEnokM05LbMmTa2M8Tc43Je5KSYcnaWctvmrIUbnN3VjhC/2y5oQwq1d4n2 -N4eo65vXlbzAUgtxtNEz62YVdsSdHNJ8dXkVZ3+S+/VPh75i2PxjbdFSFW7Futlx -YtvAEs3LdgC8squSDQ1LJTutXfBjiUUX9wKCAQBiCMre86tLyJu6Qb6X1cRAwO7m -4kyGzIUtijXko6mWxb4X/usVvzhSaNVYbHbMZXjX+J5vhBOul+RmQ3EY6nw0H2z8 -9D4z/rnQVqeb0uvIeUhBPni+s4fS4bA92M6Ie5bhiOSF2JjjJr38BFnTZARE7C+7 -ZII7z2c0eQz/wAAt9fWWroAB2mIm6wxq0LNij2NoE0iq6k2xJE1/k8qhXpsN0zAv -bjG72Q7WryBeK/eIDK9e5wGlfLVDOx2Evlcaj70oJxuoRh57e8fCYy8huJQT+Wlx -Qw4zhxiyzAMq8SEqFsm8dVO4Bu2FwzmmehA80ieSb+si7JZU92xGDT394Im2 ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5447/client.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5447/client.cert deleted file mode 100644 index a239939d08..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5447/client.cert +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIRAKbgxG1zgQI81ISaHxqLfpcwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNTA1MjYy -MDU0MjJaFw0xODA1MTAyMDU0MjJaMBMxETAPBgNVBAoTCFF1aWNrVExTMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0Pc8DQ9AyvokFzm9v4a+29TCA3/ -oARHbx59G+GOeGkrwG6ZWSZa/oNEJf3NJcU00V04k+fQuVoYBCgBXec9TEBvXa8M -WpLxp5U9LyYkv0AiSPfT2fJEE8mC+isMl+DbmgBcShwRXpeZQyIbEJhedS8mIjW/ -MgJbdTylEq1UcZSLMuky+RWv10dw02fLuN1302OgfJRZooPug9rPYHHGbTB0o7II -hGlhziLVTKV9W1RP8Aop8TamSD85OV6shDaCvmMFr1YNDjcJJ5MGMaSmq0Krq9v4 -nFwmuhOo8gvw/HhzYcxyMHnqMt6EgvbVWwXOoW7xiI3BEDFV33xgTp61bFpcdCai -gwUNzfe4/dHeCk/r3pteWOxH1bvcxUlmUB65wjRAwKuIX8Z0hC4ZlM30o+z11Aru -5QqKMrbSlOcd6yHT6NM1ZRyD+nbFORqB8W51g344eYl0zqQjxTQ0TNjJWDR2RWB/ -Vlp5N+WRjDpsBscR8kt2Q1My17gWzvHfijGETZpbvmo2f+Keqc9fcfzkIe/VZFoO -nhRqhl2PSphcWdimk8Bwf5jC2uDAXWCdvVWvRSP4Xg8zpDwLhlsfLaWVH9n+WG3j -NLQ8EmHWaZlJSeW4BiDYsXmpTAkeLmwoS+pk2WL0TSQ7+S3DyrmTeVANHipNQZeB -twZJXIXR6Jc8hgsCAwEAAaM1MDMwDgYDVR0PAQH/BAQDAgCgMBMGA1UdJQQMMAoG -CCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwCwYJKoZIhvcNAQELA4ICAQCl0cTLbLIn -XFuxreei+y6TlG2Z5XcxJ84mr8VLAaQMlJOLZV0O/suFBu9KqBuvPaHhGRnKE2uw -Vxdj9qaDdvmvuzi4jYyUA/sQuqq1+wHwGTadOi9r0IsL8OxzsG16OlhuXzhoQVdw -C9z1jad4HC7uihQ5yhl2ltAA+h5G0Sr1b9El2mx4p6BV+okmTvrqrmjshQb1GZwx -jG6SJ/uvjGf7rn09ZyYafF9ZDTMNodNXjW8orqGlFdXZLPFJ9agUFfwWfqD2lrtm -Fu+Ei0ZvKOtyzmh06eO2aGAHJCBTfcDM4tBKBKp0MOMoZkcQQDNpSyI12j6s1wtx -/1dC8QDyfFpZFXTbKn3q+6MpR+u5zqVquYjwP5DqGTvX0e1sLSthv7LRiOi0qHv1 -bZ8JoWhRMNumui9mzwar5t20ExcWxGxizZY+t+OIj4kaAeRoKK6r6FrYBnTjM+iR -+xtML5UHPOSmYfNcai0Wn4T7hwpgnCJ+K7qGYjFUCarsINppQEwkxHAvuX+asc38 -nA0wd7ByulkMJph0gP6j6LuJf28JODi6EQ7FcQItMeTuPrc+mpqJ4jP7vTTSJG7Q -wvqXLMgFQFR+2PG0s10hbY/Y/nwZAROfAs7ADED+EcDPTl/+XjVyo/aYIeOb/07W -SpS/cacZYUsSLgB4cWbxElcc/p7CW1PbOA== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5447/client.key b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5447/client.key deleted file mode 100644 index acfc9a4873..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5447/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKQIBAAKCAgEAq0Pc8DQ9AyvokFzm9v4a+29TCA3/oARHbx59G+GOeGkrwG6Z -WSZa/oNEJf3NJcU00V04k+fQuVoYBCgBXec9TEBvXa8MWpLxp5U9LyYkv0AiSPfT -2fJEE8mC+isMl+DbmgBcShwRXpeZQyIbEJhedS8mIjW/MgJbdTylEq1UcZSLMuky -+RWv10dw02fLuN1302OgfJRZooPug9rPYHHGbTB0o7IIhGlhziLVTKV9W1RP8Aop -8TamSD85OV6shDaCvmMFr1YNDjcJJ5MGMaSmq0Krq9v4nFwmuhOo8gvw/HhzYcxy -MHnqMt6EgvbVWwXOoW7xiI3BEDFV33xgTp61bFpcdCaigwUNzfe4/dHeCk/r3pte -WOxH1bvcxUlmUB65wjRAwKuIX8Z0hC4ZlM30o+z11Aru5QqKMrbSlOcd6yHT6NM1 -ZRyD+nbFORqB8W51g344eYl0zqQjxTQ0TNjJWDR2RWB/Vlp5N+WRjDpsBscR8kt2 -Q1My17gWzvHfijGETZpbvmo2f+Keqc9fcfzkIe/VZFoOnhRqhl2PSphcWdimk8Bw -f5jC2uDAXWCdvVWvRSP4Xg8zpDwLhlsfLaWVH9n+WG3jNLQ8EmHWaZlJSeW4BiDY -sXmpTAkeLmwoS+pk2WL0TSQ7+S3DyrmTeVANHipNQZeBtwZJXIXR6Jc8hgsCAwEA -AQKCAgBJcL1iR5ROMtr0ZNIp4gciALfjQVV3gb48GR/e/9b/LWI0j3i0sOzeLN3h -SLda1fjzOn1Td1ma0dZwmdMUOF+hvhPDYZfzkwWLLkThXgLt/At3rMYstGWa8pN2 -wVUSH7sri7IHmYedP3baQdrHP/9pUsGQc+m8ASTE3i+PFcKbPe5+818HTtRrhVgN -X3oNmPKUNCmSom7ZcKer5P1+Ruum0NuDgomCdkoZgfhjeKeLrVjl/wXDSQL/AhWA -02c4/sML7xx19nl8uf7z+Gj0ir1pvRouhRJTwnRc4KdWu+Yn7WLU8j2ZKf5St/as -zjnpYVEdCp0KSHccgXtobUZDEG2NCHmM6gR2j3qgoUAYjHyqPYlph2r5C47q+p4c -dDWkpwZwGiuYq9qpZj24X6BfppxExcX6AwOgFLZLp80IynwrMVxFsDd2J+KpKRQ1 -+ZtYPcULwInF9MNi/dv84pxGOmmOaIUyjN8Sw4eqANU4T5uvTjUj7Ou6KYyfmxgG -y++vjpRN7tN1t1Hwde8SVWobvmhU+5SJVHV8INoJD7uciaevPo9pt833SQTtDXeY -PVBhOKO7thAxdUiqlU/1nGTXnf1VO6wAjaVYoTnP4tJ97WuTptwd2F5znVWHFGVh -lzJAzmFOuyCnRnInsf4n5EmWJnT7XF2CofQqAJ8NIddrU8GnQQKCAQEAyqWAiPMK -I/dMzlS7oJGlhbKZ5R4buc+EoZqtW7/8/S+0L6IaQvpEUilD+aDQyaxXjoKiQQL+ -0UeeSmF/zU5BsOTpB8AuJUfYoUe0N+x7hO5eIcoCB/QWYX+iC3tCN4j1Iwt6VliV -PBYEiLUYPngSIHob/nK8UtgxrWQ3Fik9XJtWhePHrvMvDBalgCKdnyhuucGxKUjc -TtPcyMFdi0z4Kt/FAm+5u/v4ZkO909Ish0FrAqQ9t5ETfvTTTYKBmzny6/LSPTK9 -0XIsHltuC1xG4vGQsES/Ph++Yj3Vn011FqvFZeBUHbfcQuB4h5wcb+90d4GU1kux -eabsHPIZKrlN4QKCAQEA2Fs8NAN5K9i7qbxZCJPi6DJV6XMznk6JVGb+qkkChCyq -IOXb95+c9CIpe6w2d3res3zvML3zbdz2Lyp9G0ve6tSlOaSnHeyIxZ5SRB+yQrcF -GXtsx370bOGjCi1/NH85kwKlMuROFJKleJQv8rKpIEo5aPSPV9Cc/VsUqBpvR+O0 -U1HMv57P4yJA/ddw6imHJBl3jTmWBpK4B+LBsCbdypxdVoO8t32Lb2BqDTaPJfYU -RJUpjn/efLLoP6CWxYtqpUlY5tc7NJGAokl8Fo1mPn02klydvs09uiXE80Li2Hoc -/meMH07Lbt2VTw6iGNRX6VpIHEUZGZeS6rbAvO4ZawKCAQEAjOtGVPXdyWEB0kHu -MBzYY/7tMf0b/rymWNL9Vt5NiauQu8cYSBdNR21WzdLdHkFwqbOCLX9twA7zrnna -q+SNnfuxaShlbptls9HvKyySQMCaSRj3DJzaq3ZcM2vFgmUFQxeKPV1geeY9xOta -LqbExDzmFq2m9F1PPmqAPDL1bt6+7mCVzb1irB9be52WysUNKrPdBP6b5V1DHYAK -EwK1WOs/TxBusqDn/gWBjjmLqYr+ZVndaTfDvPd3sWDdzBoiKZ40QUZ15Z5lu76M -6e2DhfHCUjGcZBEjDaI+WYc9s0REAzJajEf9Lax3ZKZUyCpWbXx5CgSdKCHB8+cP -RTyTQQKCAQEAsxx8r5a8hocLfQ43Kvm7HH0nUHeVoRXlbOFDLNf6ZE/RnCCOxOX3 -esiZTRAZmzo2CaOBJPnr/+SwTgW/woxCBGh8TEc6LnS2GdviwRD4c3CuoRTjzhgU -49q8Ld3SdDRrBoBnIMWOuktY/4S2WRZ9GwU3l+L2lD1Y6gmwBSa1P2+Lxnpupagk -9CVUZpEnokM05LbMmTa2M8Tc43Je5KSYcnaWctvmrIUbnN3VjhC/2y5oQwq1d4n2 -N4eo65vXlbzAUgtxtNEz62YVdsSdHNJ8dXkVZ3+S+/VPh75i2PxjbdFSFW7Futlx -YtvAEs3LdgC8squSDQ1LJTutXfBjiUUX9wKCAQBiCMre86tLyJu6Qb6X1cRAwO7m -4kyGzIUtijXko6mWxb4X/usVvzhSaNVYbHbMZXjX+J5vhBOul+RmQ3EY6nw0H2z8 -9D4z/rnQVqeb0uvIeUhBPni+s4fS4bA92M6Ie5bhiOSF2JjjJr38BFnTZARE7C+7 -ZII7z2c0eQz/wAAt9fWWroAB2mIm6wxq0LNij2NoE0iq6k2xJE1/k8qhXpsN0zAv -bjG72Q7WryBeK/eIDK9e5wGlfLVDOx2Evlcaj70oJxuoRh57e8fCYy8huJQT+Wlx -Qw4zhxiyzAMq8SEqFsm8dVO4Bu2FwzmmehA80ieSb+si7JZU92xGDT394Im2 ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5448/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5448/ca.crt deleted file mode 100644 index 8c9b1bca32..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5448/ca.crt +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE9TCCAt+gAwIBAgIQMsdPWoLAso/tIOvLk8R/sDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDUyNjIw -NTQwMVoXDTE4MDUxMDIwNTQwMVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1YeX -GTvXPKlWA2lMbCvIGB9JYld/otf8aqs6euVJK1f09ngj5b6VoVlI8o1ScVcHKlKx -BGfPMThnM7fiEmsfDSPuCIlGmTqR0t4t9dHRnLBGbZmR8JdAs7LKpP+PFYu0JTIT -wFcjXIs+45cIF2HpsYY6zkj0bmNsyYmT1U1BTW+qqmhvc0Jkr+ikElOQ93Pn7zIO -cXtxdERdzdzXY5cfL3CCaoJDgXOsKPQfYrCi5Zl6sLZVBkIc6Q2fErSIjTp45+NY -AjiOxfUT0MOFtA0/HzYvVp3gTNPGEWM3dF1hwzCqJ32odbw/3TiFCEeC1B82p1sR -sgoFZ6Vbfy9fMhB5S7BBtbqF09Yq/PMM3drOvWIxMF4aOY55ilrtKVwmnckiB0mE -CPOColUUyiWIwwvp82InYsX5ekfS4x1mX1iz8zQEuTF5QHdKiUfd4A33ZMf0Ve6p -y9SaMmos99uVQMzWlwj7nVACXjb9Ee6MY/ePRl7Z2gBxEYV41SGFRg8LNkQ//fYk -o2vJ4Bp4aOh/O3ZQNv1eqEDmf/Su5lYCzURyQ2srcRRdwpteDPX+NHYn2d07knHN -NQvOJn6EkcsDbgp0vSr6mFDv2GZWkTOAd8jZyrcErrLHAxRNm0Va+CEIKLhswf1G -Y2kFkPL1otI8OSDvdJSjZ2GjRSwXhM2Mf3PzfAkCAwEAAaMjMCEwDgYDVR0PAQH/ -BAQDAgCkMA8GA1UdEwEB/wQFMAMBAf8wCwYJKoZIhvcNAQELA4ICAQDBxOHKnF9z -PZWPNKDRmBPtmnU2IHh6JJ9HzqGALJJbBU0MUSD/aLBBkYeS0YSHgYZ1hXLsfuRU -lm/czV41hU1FTDqS2fFpcAAGH+6/rwyfrz+GYr2K4b/ijCwOMbMrDWO54zqZT3KU -GFBpkrh4fNyKdgUNJsy0Q0it3gOGSUmLvEQUzqxPFVz7h/pF/Cecr0/kpjbpsxna -XQkhtDyKDIQfPCq8Ci1vox5WvBbBkdzDtyCm+KSb6VC3pCX6LV5NkS7YM7mtscTi -QdYfLbKX05kUVG2R9SShJn5BSXzGk9M5FR5koGY0lMHwmJqaOqazXjqa1jR7UNDK -UyExHIXSqJ+nCf4bChEsaC1uwu3Gr7PfP41Zb2U3Raf8UmFnbz6Hx0sS4zBvyJ5w -Ntemve4M1mB7++oLZ4PkuwK82SkQ8YK0z+lGJQRjg/HP3fVETV8TlIPJAvg7bRnH -sMrLb/V+K6iY+08kQ2rpU02itRjKnU/DLoha4KVjafY8eIcIR2lpwrYjx+KYpkcF -AMEC7MnuzhyUfDL++GO6XGwRnx2E54MnKtkrECObMSzwuLysPmjhrEUH6YR7zGib -KmN6vQkA4s5053R+Tu0k1JGaw90SfvcW4bxGcFjU4Kg0KqlY1y8tnt+ZiHmK0naA -KauB3KY1NiL+Ng5DCzNdkwDkWH78ZguI2w== ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5553/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5553/ca.crt deleted file mode 100644 index 0b585b3f20..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5553/ca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIQNS9SaFSFBN7Zvwjalrf2DDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMFoXDTE5MDExMjAwNDIzMFowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/Pf -fQ7VUTSXs12PRyrLDVDz7kPDbGNTt0vF7FYDmTTGOU3i62xZNOGuxBezAiVSV5A3 -lopwsv4OH7DRtSaPn+XCt1JDALna2WrjT0MshypMd5o2c3jmGUfAKf5gjizgIoEl -d4e5aqEBuOQP+QCEde+8p8N1buQW+zMy9srM2O/7BFMIaQ07CWLlj3hIiF+L5rKD -L6dWtKT7INRmRwpuZZnThEWnBSNgayrWek6G0i3y8QYTfVA1SwA+H3grJxy5NrLp -GYXSmu2509mu0QAHhx05t1rJhwhFz/4sG7j8AggYeDXEqfQ/VIb/bvnW9bD+vrQ2 -ZnICvxnzNMYBx23BkQIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/ -BAUwAwEB/zALBgkqhkiG9w0BAQsDggEBALvTi6E44Fltu83dFLVEj0kLtusI/TTH -Tw6upoB5pRG+7A75w0Ii8bvvd2tNpBOg+L+80xyIFqaNkXhLKTN4lgtd7WiCuyb/ -w1BEuF/+RjCXhu6wQ/63ab46d6ctaQ1zjxlU2rQLQXQFALI8ntyn/TELc01HYkr2 -x3NHlbnBNlgI2CKXPeUBzvBylTCcdYGwoa+2ZPdIsFjle2aCIBoZ+WNZlIbFwgLh -XCHwcbviC+thjqOneJpJZmRW9AxQ638ki6iGItdrJewCN/1dcL2KKjxnC5VHbpne -SOjEPNXihY08Brl8myhFNtRRKZ55MJIYzDtVQSkCaT91Q3XX9tSZadY= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5554/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5554/ca.crt deleted file mode 100644 index 0b585b3f20..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5554/ca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIQNS9SaFSFBN7Zvwjalrf2DDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMFoXDTE5MDExMjAwNDIzMFowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/Pf -fQ7VUTSXs12PRyrLDVDz7kPDbGNTt0vF7FYDmTTGOU3i62xZNOGuxBezAiVSV5A3 -lopwsv4OH7DRtSaPn+XCt1JDALna2WrjT0MshypMd5o2c3jmGUfAKf5gjizgIoEl -d4e5aqEBuOQP+QCEde+8p8N1buQW+zMy9srM2O/7BFMIaQ07CWLlj3hIiF+L5rKD -L6dWtKT7INRmRwpuZZnThEWnBSNgayrWek6G0i3y8QYTfVA1SwA+H3grJxy5NrLp -GYXSmu2509mu0QAHhx05t1rJhwhFz/4sG7j8AggYeDXEqfQ/VIb/bvnW9bD+vrQ2 -ZnICvxnzNMYBx23BkQIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/ -BAUwAwEB/zALBgkqhkiG9w0BAQsDggEBALvTi6E44Fltu83dFLVEj0kLtusI/TTH -Tw6upoB5pRG+7A75w0Ii8bvvd2tNpBOg+L+80xyIFqaNkXhLKTN4lgtd7WiCuyb/ -w1BEuF/+RjCXhu6wQ/63ab46d6ctaQ1zjxlU2rQLQXQFALI8ntyn/TELc01HYkr2 -x3NHlbnBNlgI2CKXPeUBzvBylTCcdYGwoa+2ZPdIsFjle2aCIBoZ+WNZlIbFwgLh -XCHwcbviC+thjqOneJpJZmRW9AxQ638ki6iGItdrJewCN/1dcL2KKjxnC5VHbpne -SOjEPNXihY08Brl8myhFNtRRKZ55MJIYzDtVQSkCaT91Q3XX9tSZadY= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5555/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5555/ca.crt deleted file mode 100644 index 0b585b3f20..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5555/ca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIQNS9SaFSFBN7Zvwjalrf2DDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMFoXDTE5MDExMjAwNDIzMFowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/Pf -fQ7VUTSXs12PRyrLDVDz7kPDbGNTt0vF7FYDmTTGOU3i62xZNOGuxBezAiVSV5A3 -lopwsv4OH7DRtSaPn+XCt1JDALna2WrjT0MshypMd5o2c3jmGUfAKf5gjizgIoEl -d4e5aqEBuOQP+QCEde+8p8N1buQW+zMy9srM2O/7BFMIaQ07CWLlj3hIiF+L5rKD -L6dWtKT7INRmRwpuZZnThEWnBSNgayrWek6G0i3y8QYTfVA1SwA+H3grJxy5NrLp -GYXSmu2509mu0QAHhx05t1rJhwhFz/4sG7j8AggYeDXEqfQ/VIb/bvnW9bD+vrQ2 -ZnICvxnzNMYBx23BkQIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/ -BAUwAwEB/zALBgkqhkiG9w0BAQsDggEBALvTi6E44Fltu83dFLVEj0kLtusI/TTH -Tw6upoB5pRG+7A75w0Ii8bvvd2tNpBOg+L+80xyIFqaNkXhLKTN4lgtd7WiCuyb/ -w1BEuF/+RjCXhu6wQ/63ab46d6ctaQ1zjxlU2rQLQXQFALI8ntyn/TELc01HYkr2 -x3NHlbnBNlgI2CKXPeUBzvBylTCcdYGwoa+2ZPdIsFjle2aCIBoZ+WNZlIbFwgLh -XCHwcbviC+thjqOneJpJZmRW9AxQ638ki6iGItdrJewCN/1dcL2KKjxnC5VHbpne -SOjEPNXihY08Brl8myhFNtRRKZ55MJIYzDtVQSkCaT91Q3XX9tSZadY= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5557/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5557/ca.crt deleted file mode 100644 index 0b585b3f20..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5557/ca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIQNS9SaFSFBN7Zvwjalrf2DDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMFoXDTE5MDExMjAwNDIzMFowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/Pf -fQ7VUTSXs12PRyrLDVDz7kPDbGNTt0vF7FYDmTTGOU3i62xZNOGuxBezAiVSV5A3 -lopwsv4OH7DRtSaPn+XCt1JDALna2WrjT0MshypMd5o2c3jmGUfAKf5gjizgIoEl -d4e5aqEBuOQP+QCEde+8p8N1buQW+zMy9srM2O/7BFMIaQ07CWLlj3hIiF+L5rKD -L6dWtKT7INRmRwpuZZnThEWnBSNgayrWek6G0i3y8QYTfVA1SwA+H3grJxy5NrLp -GYXSmu2509mu0QAHhx05t1rJhwhFz/4sG7j8AggYeDXEqfQ/VIb/bvnW9bD+vrQ2 -ZnICvxnzNMYBx23BkQIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/ -BAUwAwEB/zALBgkqhkiG9w0BAQsDggEBALvTi6E44Fltu83dFLVEj0kLtusI/TTH -Tw6upoB5pRG+7A75w0Ii8bvvd2tNpBOg+L+80xyIFqaNkXhLKTN4lgtd7WiCuyb/ -w1BEuF/+RjCXhu6wQ/63ab46d6ctaQ1zjxlU2rQLQXQFALI8ntyn/TELc01HYkr2 -x3NHlbnBNlgI2CKXPeUBzvBylTCcdYGwoa+2ZPdIsFjle2aCIBoZ+WNZlIbFwgLh -XCHwcbviC+thjqOneJpJZmRW9AxQ638ki6iGItdrJewCN/1dcL2KKjxnC5VHbpne -SOjEPNXihY08Brl8myhFNtRRKZ55MJIYzDtVQSkCaT91Q3XX9tSZadY= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5558/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5558/ca.crt deleted file mode 100644 index 0b585b3f20..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:5558/ca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIQNS9SaFSFBN7Zvwjalrf2DDALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMFoXDTE5MDExMjAwNDIzMFowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/Pf -fQ7VUTSXs12PRyrLDVDz7kPDbGNTt0vF7FYDmTTGOU3i62xZNOGuxBezAiVSV5A3 -lopwsv4OH7DRtSaPn+XCt1JDALna2WrjT0MshypMd5o2c3jmGUfAKf5gjizgIoEl -d4e5aqEBuOQP+QCEde+8p8N1buQW+zMy9srM2O/7BFMIaQ07CWLlj3hIiF+L5rKD -L6dWtKT7INRmRwpuZZnThEWnBSNgayrWek6G0i3y8QYTfVA1SwA+H3grJxy5NrLp -GYXSmu2509mu0QAHhx05t1rJhwhFz/4sG7j8AggYeDXEqfQ/VIb/bvnW9bD+vrQ2 -ZnICvxnzNMYBx23BkQIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/ -BAUwAwEB/zALBgkqhkiG9w0BAQsDggEBALvTi6E44Fltu83dFLVEj0kLtusI/TTH -Tw6upoB5pRG+7A75w0Ii8bvvd2tNpBOg+L+80xyIFqaNkXhLKTN4lgtd7WiCuyb/ -w1BEuF/+RjCXhu6wQ/63ab46d6ctaQ1zjxlU2rQLQXQFALI8ntyn/TELc01HYkr2 -x3NHlbnBNlgI2CKXPeUBzvBylTCcdYGwoa+2ZPdIsFjle2aCIBoZ+WNZlIbFwgLh -XCHwcbviC+thjqOneJpJZmRW9AxQ638ki6iGItdrJewCN/1dcL2KKjxnC5VHbpne -SOjEPNXihY08Brl8myhFNtRRKZ55MJIYzDtVQSkCaT91Q3XX9tSZadY= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:6666/ca.crt b/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:6666/ca.crt deleted file mode 100644 index 93325986a8..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/generated_certs.d/localregistry:6666/ca.crt +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIQKQTGjKpSVBW78ef0fOcxRTALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDgyMDIz -MjE0OVoXDTE4MDgwNDIzMjE0OVowJjERMA8GA1UEChMIUXVpY2tUTFMxETAPBgNV -BAMTCFF1aWNrVExTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwoPM -xiDZK6Fwy5r3waRkfJHhyZZH828Jyj+nz5UVkMyOM/xN6MgJ2w911hTj1wSXG2n3 -AohF3gTFNrDYh4j2qRZnixDrOM5GBm2/KJbyfBIYkrR45yLfjidO7MRnhaPZ5Fov -l+RKwNBXP4Q2mUe7q9FM457Rm8hAcqXP04AJT20m1QSYQivDgxsDxuAQte3VEy1E -0j0CwUKoFHT6MHOnDPEZbc4r1+ba34WBM1Sc5KXyV2JlbtU07J4hACYWVsD7vQCl -VFlZNE4E35ahMDZ+ODLal9PAT8ARLdAtjvRWrT+h8qZ4Yfwt/sGF1K4CAkTP3H5p -uMkJG56zmqIEYeHMuwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/ -BAUwAwEB/zALBgkqhkiG9w0BAQsDggEBALpieTckiPEeb3rTAWl7waDPLPOIhS5C -XHVfOm7cPmRn3pT2VuR8y74U7a1uOkYMgJnCWb8lSXhbqC89FatLnAhKqo4I9oD8 -2BXgYeIpP5/OWBcjzmsMnowrvokc0chAmAR0Ux6AP0eX9amC0lGMuTHdw3+is0AR -lhoImOUPXvgMH7W2RimpSgnX0R5wKqfuGwMfbGa0xhWBZ+wekAKcU8b+pIHDyX0c -EQcir2y8/lVjECXSAIlV6iasPQ3hm1sd0xq1hx4yrwYFvQb7yEhOXbK24HLr/20D -RRmEOuS8gg2XtUFv66z/VOw/nUleIg9GAuWDJaiu9frmIma4/tIY4qY= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/golem.conf b/vendor/github.com/docker/distribution/contrib/docker-integration/golem.conf deleted file mode 100644 index 43deb7308b..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/golem.conf +++ /dev/null @@ -1,16 +0,0 @@ -[[suite]] - dind=true - images=[ "nginx:1.9", "dmcgowan/token-server:simple", "dmcgowan/token-server:oauth", "dmcgowan/malevolent:0.1.0" ] - - [[suite.testrunner]] - command="bats -t ." - format="tap" - env=["TEST_REPO=hello-world", "TEST_TAG=latest", "TEST_USER=testuser", "TEST_PASSWORD=passpassword", "TEST_REGISTRY=localregistry", "TEST_SKIP_PULL=true"] - [[suite.customimage]] - tag="golem-distribution:latest" - default="registry:2.2.1" - [[suite.customimage]] - tag="golem-dind:latest" - default="docker:1.10.1-dind" - version="1.10.1" - diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/helpers.bash b/vendor/github.com/docker/distribution/contrib/docker-integration/helpers.bash deleted file mode 100644 index e1813d3e5a..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/helpers.bash +++ /dev/null @@ -1,101 +0,0 @@ -# has_digest enforces the last output line is "Digest: sha256:..." -# the input is the output from a docker push cli command -function has_digest() { - filtered=$(echo "$1" |sed -rn '/[dD]igest\: sha(256|384|512)/ p') - [ "$filtered" != "" ] - # See http://wiki.alpinelinux.org/wiki/Regex#BREs before making changes to regex - digest=$(expr "$filtered" : ".*\(sha[0-9]\{3,3\}:[a-z0-9]*\)") -} - -# tempImage creates a new image using the provided name -# requires bats -function tempImage() { - dir=$(mktemp -d) - run dd if=/dev/urandom of="$dir/f" bs=1024 count=512 - cat < "$dir/Dockerfile" -FROM scratch -COPY f /f - -CMD [] -DockerFileContent - - cp_t $dir "/tmpbuild/" - exec_t "cd /tmpbuild/; docker build --no-cache -t $1 .; rm -rf /tmpbuild/" -} - -# skip basic auth tests with Docker 1.6, where they don't pass due to -# certificate issues, requires bats -function basic_auth_version_check() { - run sh -c 'docker version | fgrep -q "Client version: 1.6."' - if [ "$status" -eq 0 ]; then - skip "Basic auth tests don't support 1.6.x" - fi -} - -# login issues a login to docker to the provided server -# uses user, password, and email variables set outside of function -# requies bats -function login() { - rm -f /root/.docker/config.json - run docker_t login -u $user -p $password -e $email $1 - if [ "$status" -ne 0 ]; then - echo $output - fi - [ "$status" -eq 0 ] - # First line is WARNING about credential save or email deprecation (maybe both) - [ "${lines[2]}" = "Login Succeeded" -o "${lines[1]}" = "Login Succeeded" ] -} - -function login_oauth() { - login $@ - - tmpFile=$(mktemp) - get_file_t /root/.docker/config.json $tmpFile - run awk -v RS="" "/\"$1\": \\{[[:space:]]+\"auth\": \"[[:alnum:]]+\",[[:space:]]+\"identitytoken\"/ {exit 3}" $tmpFile - [ "$status" -eq 3 ] -} - -function parse_version() { - version=$(echo "$1" | cut -d '-' -f1) # Strip anything after '-' - major=$(echo "$version" | cut -d . -f1) - minor=$(echo "$version" | cut -d . -f2) - rev=$(echo "$version" | cut -d . -f3) - - version=$((major * 1000 * 1000 + minor * 1000 + rev)) -} - -function version_check() { - name=$1 - checkv=$2 - minv=$3 - parse_version "$checkv" - v=$version - parse_version "$minv" - if [ "$v" -lt "$version" ]; then - skip "$name version \"$checkv\" does not meet required version \"$minv\"" - fi -} - -function get_file_t() { - docker cp dockerdaemon:$1 $2 -} - -function cp_t() { - docker cp $1 dockerdaemon:$2 -} - -function exec_t() { - docker exec dockerdaemon sh -c "$@" -} - -function docker_t() { - docker exec dockerdaemon docker $@ -} - -# build reates a new docker image id from another image -function build() { - docker exec -i dockerdaemon docker build --no-cache -t $1 - <> /etc/hosts - # TODO: Check if record already exists in /etc/hosts -} - -install_ca() { - mkdir -p $1/$hostname:$2 - cp ./nginx/ssl/registry-ca+ca.pem $1/$hostname:$2/ca.crt - if [ "$3" != "" ]; then - cp ./nginx/ssl/registry-$3+client-cert.pem $1/$hostname:$2/client.cert - cp ./nginx/ssl/registry-$3+client-key.pem $1/$hostname:$2/client.key - fi -} - -install_test_certs() { - install_ca $1 5440 - install_ca $1 5441 - install_ca $1 5442 ca - install_ca $1 5443 noca - install_ca $1 5444 ca - install_ca $1 5447 ca - # For test remove CA - rm $1/${hostname}:5447/ca.crt - install_ca $1 5448 -} - -set_etc_hosts $hostname -set_etc_hosts $authhostname - -install_test_certs /etc/docker/certs.d -install_test_certs /root/.docker/tls - -# Malevolent server -mkdir -p /etc/docker/certs.d/$hostname:6666 -cp ./malevolent-certs/ca.pem /etc/docker/certs.d/$hostname:6666/ca.crt - -# Token server -install_file ./tokenserver/certs/ca.pem $1 5555 -install_file ./tokenserver/certs/ca.pem $1 5554 -install_file ./tokenserver/certs/ca.pem $1 5557 -install_file ./tokenserver/certs/ca.pem $1 5558 diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent-certs/localregistry.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent-certs/localregistry.cert deleted file mode 100644 index 071e7a2bc5..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent-certs/localregistry.cert +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDETCCAfugAwIBAgIQZRKt7OeG+TlC2riszYwQQTALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE1MDgyMDIz -MjE0OVoXDTE4MDgwNDIzMjE0OVowKzERMA8GA1UEChMIUXVpY2tUTFMxFjAUBgNV -BAMTDWxvY2FscmVnaXN0cnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDPdsUBStNMz4coXfQVIJIafG85VkngM4fV7hrg7AbiGLCWvq8cWOrYM50G9Wmo -twK1WeQ6bigYOjINgSfTxcy3adciVZIIJyXqboz6n2V0yRPWpakof939bvuAurAP -tSqQ2V5fGN0ZZn4J4IbXMSovKwo7sG3X6i4q/8DYHZ/mKjvCRMPC3MGWqunknpkm -dzyKbIFHaDKlAqIOwTsDhHvGzm/9n3D+h4sl5ZPBobuBEV2u5GR0H5ujak4+Kczt -thCWtRkzCfnjW0TEanheSYJGu8OgCGoFjQnHotgqvOO6iHZCsrB3gf8WQeou+y9e -+OyLZv3FmqdC9SXr3b0LGQTFAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIAoDAMBgNV -HRMBAf8EAjAAMBgGA1UdEQQRMA+CDWxvY2FscmVnaXN0cnkwCwYJKoZIhvcNAQEL -A4IBAQC/PP2Y9QVhO8t4BXML1QpNRWqXG8Gg0P1XIh6M6FoxcGIodLdbzui828YB -wm9ZlyKars+nDdgLdQWawdV7hSd6s2NeQlHYQSGLsdTAVkgIxiD7D2Tw3kAZ6Zrj -dPikoVAc+rBMm/BXQLzy95IAbBVOHOpBkOOgF+TYxeLnOc3GzbUqBi1Pq97DMaxr -DaDuywH55P/6v7qt610UIsZ6+RZ78iiRx4Q+oRxEqGT0rXI76gVxOFabbJuFr1n1 -kEWa3u/BssJzX3KVAm7oUtaBnj2SH5fokFmvZ5lBXA4QO/5doOa8yZiFFvvQs7EY -SWDxLrvS33UCtsCcpPggjehnxKaC ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent-certs/localregistry.key b/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent-certs/localregistry.key deleted file mode 100644 index c5bf7ac12f..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent-certs/localregistry.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAz3bFAUrTTM+HKF30FSCSGnxvOVZJ4DOH1e4a4OwG4hiwlr6v -HFjq2DOdBvVpqLcCtVnkOm4oGDoyDYEn08XMt2nXIlWSCCcl6m6M+p9ldMkT1qWp -KH/d/W77gLqwD7UqkNleXxjdGWZ+CeCG1zEqLysKO7Bt1+ouKv/A2B2f5io7wkTD -wtzBlqrp5J6ZJnc8imyBR2gypQKiDsE7A4R7xs5v/Z9w/oeLJeWTwaG7gRFdruRk -dB+bo2pOPinM7bYQlrUZMwn541tExGp4XkmCRrvDoAhqBY0Jx6LYKrzjuoh2QrKw -d4H/FkHqLvsvXvjsi2b9xZqnQvUl6929CxkExQIDAQABAoIBAQCZjCUI7NFwwxQc -m1UAogeglMJZJHUu+9SoUD8Sg34grvdbyqueBm1iMOkiclaOKU1W3b4eRNNmAwRy -nEnW4km+4hX48m5PnHHijYnIIFsd0YjeT+Pf9qtdXFvGjeWq6oIjjM3dAnD50LKu -KsCB2oCHQoqjXNQfftJGvt2C1oI2/WvdOR4prnGXElVfASswX4PkP5LCfLhIx+Fr -7ErfaRIKigLSaAWLKaw3IlL12Q/KkuGcnzYIzIRwY4VJ64ENN6M3+KknfGovQItL -sCxceSe61THDP9AAI3Mequm8z3H0CImOWhJCge5l7ttLLMXZXqGxDCVx+3zvqlCa -X0cgGSVBAoGBAOvTN3oJJx1vnh1mRj8+hqzFq1bjm4T/Wp314QWLeo++43II4uMM -5hxUlO5ViY1sKxQrGwK+9c9ddxAvm5OAFFkzgW9EhDCu0tXUb2/vAJQ93SgqbcRu -coXWJpk0eNW/ouk2s1X8dzs+sCs3a4H64fEEj8yhwoyovjfucspsn7t1AoGBAOE2 -ayLKx7CcWCiD/VGNvP7714MDst2isyq8reg8LEMmAaXR2IWWj5eGwKrImTQCsrjW -P37aBp1lcWuuYRKl/WEGBy6JLNdATyUoYc1Yo+8YdenekkOtOHHJerlK3OKi3ZVp -q4HJY9wzKg/wYLcbTmjjzKj+OBIZWwig73XUHwoRAoGBAJnuIrYbp1aFdvXFvnCl -xY6c8DwlEWx8qY+V4S2XX4bYmOnkdwSxdLplU1lGqCSRyIS/pj/imdyjK4Z7LNfY -sG+RORmB5a9JTgGZSqwLm5snzmXbXA7t8P7/S+6Q25baIeKMe/7SbplTT/bFk/0h -371MtvhhVfYuZwtnL7KFuLXJAoGBAMQ3UHKYsBC8tsZd8Pf8AL07mFHKiC04Etfa -Wb5rpri+RVM+mGITgnmnavehHHHHJAWMjPetZ3P8rSv/Ww4PVsoQoXM3Cr1jh1E9 -dLCfWPz4l8syIscaBYKF4wnLItXGxj3mOgoy93EjlrMaYHlILjGOv4JBM4L5WmoT -JW7IaF6xAoGAZ4K8MwU/cAah8VinMmLGxvWWuBSgTTebuY5zN603MvFLKv5necuc -BZfTTxD+gOnxRT6QAh++tOsbBmsgR9HmTSlQSSgw1L7cwGyXzLCDYw+5K/03KXSU -DaFdgtfcDDJO8WtjOgjyTRzEAOsqFta1ige4pIu5fTilNVMQlhts5Iw= ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent.bats b/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent.bats deleted file mode 100644 index 0112ff6f19..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/malevolent.bats +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env bats - -# This tests various expected error scenarios when pulling bad content - -load helpers - -host="localregistry:6666" -base="malevolent-test" - -function setup() { - tempImage $base:latest -} - -@test "Test malevolent proxy pass through" { - docker_t tag -f $base:latest $host/$base/nochange:latest - run docker_t push $host/$base/nochange:latest - echo $output - [ "$status" -eq 0 ] - has_digest "$output" - - run docker_t pull $host/$base/nochange:latest - echo "$output" - [ "$status" -eq 0 ] -} - -@test "Test malevolent image name change" { - imagename="$host/$base/rename" - image="$imagename:lastest" - docker_t tag -f $base:latest $image - run docker_t push $image - [ "$status" -eq 0 ] - has_digest "$output" - - # Pull attempt should fail to verify manifest digest - run docker_t pull "$imagename@$digest" - echo "$output" - [ "$status" -ne 0 ] -} - -@test "Test malevolent altered layer" { - image="$host/$base/addfile:latest" - tempImage $image - run docker_t push $image - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - # Remove image to ensure layer is pulled and digest verified - docker_t rmi -f $image - - run docker_t pull $image - echo "$output" - [ "$status" -ne 0 ] -} - -@test "Test malevolent altered layer (by digest)" { - imagename="$host/$base/addfile" - image="$imagename:latest" - tempImage $image - run docker_t push $image - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - # Remove image to ensure layer is pulled and digest verified - docker_t rmi -f $image - - run docker_t pull "$imagename@$digest" - echo "$output" - [ "$status" -ne 0 ] -} - -@test "Test malevolent poisoned images" { - truncid="777cf9284131" - poison="${truncid}d77ca0863fb7f054c0a276d7e227b5e9a5d62b497979a481fa32" - image1="$host/$base/image1/poison:$poison" - tempImage $image1 - run docker_t push $image1 - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - image2="$host/$base/image2/poison:$poison" - tempImage $image2 - run docker_t push $image2 - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - - # Remove image to ensure layer is pulled and digest verified - docker_t rmi -f $image1 - docker_t rmi -f $image2 - - run docker_t pull $image1 - echo "$output" - [ "$status" -eq 0 ] - run docker_t pull $image2 - echo "$output" - [ "$status" -eq 0 ] - - # Test if there are multiple images - run docker_t images - echo "$output" - [ "$status" -eq 0 ] - - # Test images have same ID and not the poison - id1=$(docker_t inspect --format="{{.Id}}" $image1) - id2=$(docker_t inspect --format="{{.Id}}" $image2) - - # Remove old images - docker_t rmi -f $image1 - docker_t rmi -f $image2 - - [ "$id1" != "$id2" ] - - [ "$id1" != "$truncid" ] - - [ "$id2" != "$truncid" ] -} - -@test "Test malevolent altered identical images" { - truncid1="777cf9284131" - poison1="${truncid1}d77ca0863fb7f054c0a276d7e227b5e9a5d62b497979a481fa32" - truncid2="888cf9284131" - poison2="${truncid2}d77ca0863fb7f054c0a276d7e227b5e9a5d62b497979a481fa64" - - image1="$host/$base/image1/alteredid:$poison1" - tempImage $image1 - run docker_t push $image1 - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - image2="$host/$base/image2/alteredid:$poison2" - docker_t tag -f $image1 $image2 - run docker_t push $image2 - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - - # Remove image to ensure layer is pulled and digest verified - docker_t rmi -f $image1 - docker_t rmi -f $image2 - - run docker_t pull $image1 - echo "$output" - [ "$status" -eq 0 ] - run docker_t pull $image2 - echo "$output" - [ "$status" -eq 0 ] - - # Test if there are multiple images - run docker_t images - echo "$output" - [ "$status" -eq 0 ] - - # Test images have same ID and not the poison - id1=$(docker_t inspect --format="{{.Id}}" $image1) - id2=$(docker_t inspect --format="{{.Id}}" $image2) - - # Remove old images - docker_t rmi -f $image1 - docker_t rmi -f $image2 - - [ "$id1" == "$id2" ] - - [ "$id1" != "$truncid1" ] - - [ "$id2" != "$truncid2" ] -} - -@test "Test malevolent resumeable pull" { - version_check docker "$GOLEM_DIND_VERSION" "1.11.0" - version_check registry "$GOLEM_DISTRIBUTION_VERSION" "2.3.0" - - imagename="$host/$base/resumeable" - image="$imagename:latest" - tempImage $image - run docker_t push $image - echo "$output" - [ "$status" -eq 0 ] - has_digest "$output" - - # Remove image to ensure layer is pulled and digest verified - docker_t rmi -f $image - - run docker_t pull "$imagename@$digest" - echo "$output" - [ "$status" -eq 0 ] -} diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/Dockerfile b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/Dockerfile deleted file mode 100644 index 735f8a8153..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM nginx:1.9 - -COPY nginx.conf /etc/nginx/nginx.conf -COPY registry.conf /etc/nginx/conf.d/registry.conf -COPY docker-registry-v2.conf /etc/nginx/docker-registry-v2.conf -COPY registry-noauth.conf /etc/nginx/registry-noauth.conf -COPY registry-basic.conf /etc/nginx/registry-basic.conf -COPY test.passwd /etc/nginx/test.passwd -COPY ssl /etc/nginx/ssl diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/docker-registry-v2.conf b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/docker-registry-v2.conf deleted file mode 100644 index 65c4d7766e..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/docker-registry-v2.conf +++ /dev/null @@ -1,6 +0,0 @@ -proxy_pass http://docker-registry-v2; -proxy_set_header Host $http_host; # required for docker client's sake -proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -proxy_set_header X-Forwarded-Proto $scheme; -proxy_read_timeout 900; diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/nginx.conf b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/nginx.conf deleted file mode 100644 index 543eab69e5..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/nginx.conf +++ /dev/null @@ -1,61 +0,0 @@ -user nginx; -worker_processes 1; - -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - - keepalive_timeout 65; - - include /etc/nginx/conf.d/*.conf; -} - -# Setup TCP proxies -stream { - # Malevolent proxy - server { - listen 6666; - proxy_pass malevolent:6666; - } - - # Registry configured for token server - server { - listen 5554; - listen 5555; - proxy_pass registryv2token:5000; - } - - # Token server - server { - listen 5556; - proxy_pass tokenserver:5556; - } - - # Registry configured for token server with oauth - server { - listen 5557; - listen 5558; - proxy_pass registryv2tokenoauth:5000; - } - - # Token server with oauth - server { - listen 5559; - proxy_pass tokenserveroauth:5559; - } -} diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry-basic.conf b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry-basic.conf deleted file mode 100644 index 117ea58496..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry-basic.conf +++ /dev/null @@ -1,8 +0,0 @@ -client_max_body_size 0; -chunked_transfer_encoding on; -location /v2/ { - auth_basic "registry.localhost"; - auth_basic_user_file test.passwd; - add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always; - include docker-registry-v2.conf; -} diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry-noauth.conf b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry-noauth.conf deleted file mode 100644 index 6e182d4461..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry-noauth.conf +++ /dev/null @@ -1,5 +0,0 @@ -client_max_body_size 0; -chunked_transfer_encoding on; -location /v2/ { - include docker-registry-v2.conf; -} diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry.conf b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry.conf deleted file mode 100644 index d8585ee0a8..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/registry.conf +++ /dev/null @@ -1,221 +0,0 @@ -# Docker registry proxy for api version 2 - -upstream docker-registry-v2 { - server registryv2:5000; -} - -# No client auth or TLS -server { - listen 5000; - server_name localhost; - - # disable any limits to avoid HTTP 413 for large image uploads - client_max_body_size 0; - - # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) - chunked_transfer_encoding on; - - location /v2/ { - # Do not allow connections from docker 1.5 and earlier - # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents - if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) { - return 404; - } - - include docker-registry-v2.conf; - } -} - -# No client auth or TLS (V2 Only) -server { - listen 5002; - server_name localhost; - - # disable any limits to avoid HTTP 413 for large image uploads - client_max_body_size 0; - - # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) - chunked_transfer_encoding on; - - location / { - include docker-registry-v2.conf; - } -} - -# TLS Configuration chart -# Username/Password: testuser/passpassword -# | ca | client | basic | notes -# 5440 | yes | no | no | Tests CA certificate -# 5441 | yes | no | yes | Tests basic auth over TLS -# 5442 | yes | yes | no | Tests client auth with client CA -# 5443 | yes | yes | no | Tests client auth without client CA -# 5444 | yes | yes | yes | Tests using basic auth + tls auth -# 5445 | no | no | no | Tests insecure using TLS -# 5446 | no | no | yes | Tests sending credentials to server with insecure TLS -# 5447 | no | yes | no | Tests client auth to insecure -# 5448 | yes | no | no | Bad SSL version - -server { - listen 5440; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localhost-key.pem; - include registry-noauth.conf; -} - -server { - listen 5441; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localhost-key.pem; - include registry-basic.conf; -} - -server { - listen 5442; - listen 5443; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localhost-key.pem; - ssl_client_certificate /etc/nginx/ssl/registry-ca+ca.pem; - ssl_verify_client on; - include registry-noauth.conf; -} - -server { - listen 5444; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localhost-key.pem; - ssl_client_certificate /etc/nginx/ssl/registry-ca+ca.pem; - ssl_verify_client on; - include registry-basic.conf; -} - -server { - listen 5445; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-noca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-noca+localhost-key.pem; - include registry-noauth.conf; -} - -server { - listen 5446; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-noca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-noca+localhost-key.pem; - include registry-basic.conf; -} - -server { - listen 5447; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-noca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-noca+localhost-key.pem; - ssl_client_certificate /etc/nginx/ssl/registry-ca+ca.pem; - ssl_verify_client on; - include registry-noauth.conf; -} - -server { - listen 5448; - server_name localhost; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localhost-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localhost-key.pem; - ssl_protocols SSLv3; - include registry-noauth.conf; -} - -# Add configuration for localregistry server_name -# Requires configuring /etc/hosts to use -# Set /etc/hosts entry to external IP, not 127.0.0.1 for testing -# Docker secure/insecure registry features -server { - listen 5440; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localregistry-key.pem; - include registry-noauth.conf; -} - -server { - listen 5441; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localregistry-key.pem; - include registry-basic.conf; -} - -server { - listen 5442; - listen 5443; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localregistry-key.pem; - ssl_client_certificate /etc/nginx/ssl/registry-ca+ca.pem; - ssl_verify_client on; - include registry-noauth.conf; -} - -server { - listen 5444; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localregistry-key.pem; - ssl_client_certificate /etc/nginx/ssl/registry-ca+ca.pem; - ssl_verify_client on; - include registry-basic.conf; -} - -server { - listen 5445; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-noca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-noca+localregistry-key.pem; - include registry-noauth.conf; -} - -server { - listen 5446; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-noca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-noca+localregistry-key.pem; - include registry-basic.conf; -} - -server { - listen 5447; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-noca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-noca+localregistry-key.pem; - ssl_client_certificate /etc/nginx/ssl/registry-ca+ca.pem; - ssl_verify_client on; - include registry-noauth.conf; -} - -server { - listen 5448; - server_name localregistry; - ssl on; - ssl_certificate /etc/nginx/ssl/registry-ca+localregistry-cert.pem; - ssl_certificate_key /etc/nginx/ssl/registry-ca+localregistry-key.pem; - ssl_protocols SSLv3; - include registry-noauth.conf; -} - diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/test.passwd b/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/test.passwd deleted file mode 100644 index 4e55de8169..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/nginx/test.passwd +++ /dev/null @@ -1 +0,0 @@ -testuser:$apr1$YmLhHjm6$AjP4z8J1WgcUNxU8J4ue5. diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/run_multiversion.sh b/vendor/github.com/docker/distribution/contrib/docker-integration/run_multiversion.sh deleted file mode 100755 index 35c2006e17..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/run_multiversion.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env bash - -# Run the integration tests with multiple versions of the Docker engine - -set -e -set -x - -DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) - - -if [ "$TMPDIR" != "" ] && [ ! -d "$TMPDIR" ]; then - mkdir -p $TMPDIR -fi - -cachedir=`mktemp -t -d golem-cache.XXXXXX` -trap "rm -rf $cachedir" EXIT - -if [ "$1" == "-d" ]; then - # Drivers to use for Docker engines the tests are going to create. - STORAGE_DRIVER=${STORAGE_DRIVER:-overlay} - - docker daemon --log-level=panic --storage-driver="$STORAGE_DRIVER" & - DOCKER_PID=$! - - # Wait for it to become reachable. - tries=10 - until docker version &> /dev/null; do - (( tries-- )) - if [ $tries -le 0 ]; then - echo >&2 "error: daemon failed to start" - exit 1 - fi - sleep 1 - done - - trap "kill $DOCKER_PID" EXIT -fi - -distimage=$(docker build -q $DIR/../..) -fullversion=$(git describe --match 'v[0-9]*' --dirty='.m' --always) -distversion=${fullversion:1} - -echo "Testing image $distimage with distribution version $distversion" - -# Pull needed images before invoking golem to get pull time -# These images are defined in golem.conf -time docker pull nginx:1.9 -time docker pull golang:1.6 -time docker pull registry:0.9.1 -time docker pull dmcgowan/token-server:simple -time docker pull dmcgowan/token-server:oauth -time docker pull distribution/golem-runner:0.1-bats - -time docker pull docker:1.9.1-dind -time docker pull docker:1.10.3-dind -time docker pull dockerswarm/dind:1.11.0-rc2 - -golem -cache $cachedir \ - -i "golem-distribution:latest,$distimage,$distversion" \ - -i "golem-dind:latest,docker:1.9.1-dind,1.9.1" \ - -i "golem-dind:latest,docker:1.10.3-dind,1.10.3" \ - -i "golem-dind:latest,dockerswarm/dind:1.11.0-rc2,1.11.0" \ - $DIR - diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tls.bats b/vendor/github.com/docker/distribution/contrib/docker-integration/tls.bats deleted file mode 100644 index 46f85e398e..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tls.bats +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bats - -# Registry host name, should be set to non-localhost address and match -# DNS name in nginx/ssl certificates and what is installed in /etc/docker/cert.d - -load helpers - -hostname="localregistry" -base="hello-world" -image="${base}:latest" - -# Login information, should match values in nginx/test.passwd -user=${TEST_USER:-"testuser"} -password=${TEST_PASSWORD:-"passpassword"} -email="distribution@docker.com" - -function setup() { - tempImage $image -} - -@test "Test valid certificates" { - docker_t tag -f $image $hostname:5440/$image - run docker_t push $hostname:5440/$image - [ "$status" -eq 0 ] - has_digest "$output" -} - -@test "Test basic auth" { - basic_auth_version_check - login $hostname:5441 - docker_t tag -f $image $hostname:5441/$image - run docker_t push $hostname:5441/$image - [ "$status" -eq 0 ] - has_digest "$output" -} - -@test "Test basic auth with build" { - basic_auth_version_check - login $hostname:5441 - - image1=$hostname:5441/$image-build - image2=$hostname:5441/$image-build-2 - - tempImage $image1 - - run docker_t push $image1 - [ "$status" -eq 0 ] - has_digest "$output" - - docker_t rmi $image1 - - run build $image2 $image1 - echo $output - [ "$status" -eq 0 ] - - run docker_t push $image2 - echo $output - [ "$status" -eq 0 ] - has_digest "$output" -} - -@test "Test TLS client auth" { - docker_t tag -f $image $hostname:5442/$image - run docker_t push $hostname:5442/$image - [ "$status" -eq 0 ] - has_digest "$output" -} - -@test "Test TLS client with invalid certificate authority fails" { - docker_t tag -f $image $hostname:5443/$image - run docker_t push $hostname:5443/$image - [ "$status" -ne 0 ] -} - -@test "Test basic auth with TLS client auth" { - basic_auth_version_check - login $hostname:5444 - docker_t tag -f $image $hostname:5444/$image - run docker_t push $hostname:5444/$image - [ "$status" -eq 0 ] - has_digest "$output" -} - -@test "Test unknown certificate authority fails" { - docker_t tag -f $image $hostname:5445/$image - run docker_t push $hostname:5445/$image - [ "$status" -ne 0 ] -} - -@test "Test basic auth with unknown certificate authority fails" { - run login $hostname:5446 - [ "$status" -ne 0 ] - docker_t tag -f $image $hostname:5446/$image - run docker_t push $hostname:5446/$image - [ "$status" -ne 0 ] -} - -@test "Test TLS client auth to server with unknown certificate authority fails" { - docker_t tag -f $image $hostname:5447/$image - run docker_t push $hostname:5447/$image - [ "$status" -ne 0 ] -} - -@test "Test failure to connect to server fails to fallback to SSLv3" { - docker_t tag -f $image $hostname:5448/$image - run docker_t push $hostname:5448/$image - [ "$status" -ne 0 ] -} - diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/token.bats b/vendor/github.com/docker/distribution/contrib/docker-integration/token.bats deleted file mode 100644 index e8a424829b..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/token.bats +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bats - -# This tests contacting a registry using a token server - -load helpers - -user="testuser" -password="testpassword" -email="a@nowhere.com" -base="hello-world" - -@test "Test token server login" { - run docker_t login -u $user -p $password -e $email localregistry:5554 - echo $output - [ "$status" -eq 0 ] - - # First line is WARNING about credential save or email deprecation - [ "${lines[2]}" = "Login Succeeded" -o "${lines[1]}" = "Login Succeeded" ] -} - -@test "Test token server bad login" { - run docker_t login -u "testuser" -p "badpassword" -e $email localregistry:5554 - [ "$status" -ne 0 ] - - run docker_t login -u "baduser" -p "testpassword" -e $email localregistry:5554 - [ "$status" -ne 0 ] -} - -@test "Test push and pull with token auth" { - login localregistry:5555 - image="localregistry:5555/testuser/token" - build $image "$base:latest" - - run docker_t push $image - echo $output - [ "$status" -eq 0 ] - - docker_t rmi $image - - docker_t pull $image -} - -@test "Test push and pull with token auth wrong namespace" { - login localregistry:5555 - image="localregistry:5555/notuser/token" - build $image "$base:latest" - - run docker_t push $image - [ "$status" -ne 0 ] -} - -@test "Test oauth token server login" { - version_check docker "$GOLEM_DIND_VERSION" "1.11.0" - - login_oauth localregistry:5557 -} - -@test "Test oauth token server bad login" { - version_check docker "$GOLEM_DIND_VERSION" "1.11.0" - - run docker_t login -u "testuser" -p "badpassword" -e $email localregistry:5557 - [ "$status" -ne 0 ] - - run docker_t login -u "baduser" -p "testpassword" -e $email localregistry:5557 - [ "$status" -ne 0 ] -} - -@test "Test oauth push and pull with token auth" { - version_check docker "$GOLEM_DIND_VERSION" "1.11.0" - - login_oauth localregistry:5558 - image="localregistry:5558/testuser/token" - build $image "$base:latest" - - run docker_t push $image - echo $output - [ "$status" -eq 0 ] - - docker_t rmi $image - - docker_t pull $image -} - -@test "Test oauth push and build with token auth" { - version_check docker "$GOLEM_DIND_VERSION" "1.11.0" - - login_oauth localregistry:5558 - image="localregistry:5558/testuser/token-build" - tempImage $image - - run docker_t push $image - echo $output - [ "$status" -eq 0 ] - has_digest "$output" - - docker_t rmi $image - - image2="localregistry:5558/testuser/token-build-2" - run build $image2 $image - echo $output - [ "$status" -eq 0 ] - - run docker_t push $image2 - echo $output - [ "$status" -eq 0 ] - has_digest "$output" - -} - -@test "Test oauth push and pull with token auth wrong namespace" { - version_check docker "$GOLEM_DIND_VERSION" "1.11.0" - - login_oauth localregistry:5558 - image="localregistry:5558/notuser/token" - build $image "$base:latest" - - run docker_t push $image - [ "$status" -ne 0 ] -} diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/.htpasswd b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/.htpasswd deleted file mode 100644 index 0bbf574006..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/.htpasswd +++ /dev/null @@ -1 +0,0 @@ -testuser:$2y$05$T2MlBvkN1R/yICNnLuf1leOlOfAY0DvybctbbWUFKlojfkShVgn4m diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/Dockerfile b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/Dockerfile deleted file mode 100644 index d8c7b5cc01..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM dmcgowan/token-server:oauth - -WORKDIR / - -COPY ./.htpasswd /.htpasswd -COPY ./certs/auth.localregistry.cert /tls.cert -COPY ./certs/auth.localregistry.key /tls.key -COPY ./certs/signing.key /sign.key diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/auth.localregistry.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/auth.localregistry.cert deleted file mode 100644 index 4144ca168d..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/auth.localregistry.cert +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDHDCCAgagAwIBAgIRAKhhQMnqZx+hkOmoUYgPb+kwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNjAxMjgw -MDQyMzFaFw0xOTAxMTIwMDQyMzFaMDAxETAPBgNVBAoTCFF1aWNrVExTMRswGQYD -VQQDExJhdXRoLmxvY2FscmVnaXN0cnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQD1tUf1EghBlIRrE83yF4zDgRu7vH2Jo0kygKJUWtQQe+DfXyjjE/fg -FdKnnoEjsIeF9hxNbTt0ldDz7/n97pbMhoiXULi9iq4jlgSzVL2XEAgrON0YSY/c -Lmmd1KSa/pOUZr2WMAYPZ+FdQfE1W7SMNbErPefBqYdFzpZ+esAtvbajYwIjl8Vy -9c4bidx4vgnNrR9GcFYibjC5sj8syh/OtbzzqiVGT8YcPpmMG6KNRkausa4gqpon -NKYG8C3WDaiPCLYKcvFrFfdEWF/m2oj14eXACXT9iwp8r4bsLgXrZwqcpKOWfVRu -qHC8aV476EYgxWCAOANExUdUaRt5wL/jAgMBAAGjPzA9MA4GA1UdDwEB/wQEAwIA -oDAMBgNVHRMBAf8EAjAAMB0GA1UdEQQWMBSCEmF1dGgubG9jYWxyZWdpc3RyeTAL -BgkqhkiG9w0BAQsDggEBABxPGK9FdGDxcLowNsExKnnZvmQT3H0u+Dux1gkp0AhH -KOrmx3LUENUKLSgotzx133tgOgR5lzAWVFy7bhLwlPhOslxf2oEfztsAMd/tY8rW -PrG2ZqYqlzEQQ9INbAc3woo5A3slN07uhP3F16jNqoMM4zRmw6Ba70CluGKT7x5+ -xVjKoWITLjWDXT5m35PnsN8CpBaFzXYcod/5p9XwCFp0s+aNxfpZECCV/3yqIr+J -ALzroPh43FAlG96o4NyYZ2Msp63newN19R2+TgpV4nXuw2mLVDpvetP7RRqnpvj/ -qwRgt5j4hFjJWb61M0ELL7A9fA71h1ImdGCvnArdBQs= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/auth.localregistry.key b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/auth.localregistry.key deleted file mode 100644 index 4c499bb212..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/auth.localregistry.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA9bVH9RIIQZSEaxPN8heMw4Ebu7x9iaNJMoCiVFrUEHvg318o -4xP34BXSp56BI7CHhfYcTW07dJXQ8+/5/e6WzIaIl1C4vYquI5YEs1S9lxAIKzjd -GEmP3C5pndSkmv6TlGa9ljAGD2fhXUHxNVu0jDWxKz3nwamHRc6WfnrALb22o2MC -I5fFcvXOG4nceL4Jza0fRnBWIm4wubI/LMofzrW886olRk/GHD6ZjBuijUZGrrGu -IKqaJzSmBvAt1g2ojwi2CnLxaxX3RFhf5tqI9eHlwAl0/YsKfK+G7C4F62cKnKSj -ln1UbqhwvGleO+hGIMVggDgDRMVHVGkbecC/4wIDAQABAoIBAQCrsjXKRwOF8CZo -PLqZBWPT6hBbK+f9miC4LbNBhwbRTf9hl7mWlImOCTHe95/+NIk/Ty+P21jEqzwM -ehETJPoziX9BXaL6sEHnlBlMx1aEjStoKKA3LJBeqAAdzk4IEQVHmlO4824IreqJ -pF7Njnunzo0zTlr4tWJVoXsAfv5z9tNtdkxYBbIa0fjfGtlqXU3gLq58FCON3mB/ -NGc0AyA1UFGp0FzpdEcwTGD4InsXbcmsl2l/VPBJuZbryITRqWs6BbK++80DRhNt -afMhP+IzKrWSCp0rBYrqqz6AevtlKdEfQK1yXPEjN/63QLMevt8mF/1JCp//TQnf -Z6bIQbAhAoGBAP7vFA0PcvoXt9MXvvAwrKY1s6pNw4nWPG27qY1/m+DkBwP8IQms -4AWGv1wscZzXJYTvaLO5/qjmGUj50ohcVEvyZJioh1pKXA8Chxvd6rBA/O/Lj5E0 -3MOSA5Q0gxJ0Mhv0zGbbyN5fY8D8zhxoqQP4LoW+UdZG2Oi6JxsQ9c9dAoGBAPa8 -U3bGuM5OGA9EWP7mkB/VnjDTL1aEIN3cOHbHIKwH/loxdYcNMBE7vwxV1CzgIzXT -wsL0iE15fQdK938u0+um8aH5QtbWNI8tdk1XVjEC/i3C7N6WVUutneCKUDb4QxiB -9OvWCbNNiN+xTKBBM93YlwO3GYfrW9Pmm9q1+hg/AoGBALJlUS22gun50PxaIJZq -KVcCO2DQnCYHki/j48mN4+HjD/m85M2lePrFCYIR48syTyIQer9SR5+frVAA6k/b -9G1VCQo+3MDVSkiCp1Nb3tBKGfYgB65ARMBinDiI6rPuNeaUTrkn0g+yxtaU0hLV -Nnj9omia/x+oYj+xjI4HN0xNAoGARy92dSJIV104m88ATip/EnAzP6ruUWu1f8z1 -jW9OAdQckjEK03f+kjpGmGx61qekAPejjVO3r4KJi/0ZAtyjz61OsYiUvB748wYO -x6mW+HUAmHtQk7eTzE2+6vV8xx9BXGTCIPiTu+N2xfMFRIcLS8odZ7j/6LMCv1Qd -SzCNg0kCgYBaNlEs4pK1VxZZpEWwVmFpgIxfEfxLIaGrek6wBTcCn/VA2M0oHuez -mlMio8VY0yWPBJz30JflDiTmYIvteLPMHT0N0J6isiXLhzJSFI4+cAMLE2Q5v8rz -W+W5/L8YZeierW0qJat1BrgStaf5ZLpiOc9pKBSwycydPH5BfVdK/A== ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/localregistry.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/localregistry.cert deleted file mode 100644 index 105acc4f39..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/localregistry.cert +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDETCCAfugAwIBAgIQN7rT95eAy75c4n6/AsDJODALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMloXDTE5MDExMjAwNDIzMlowKzERMA8GA1UEChMIUXVpY2tUTFMxFjAUBgNV -BAMTDWxvY2FscmVnaXN0cnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDLi75QEkl/qekcoOJlNv9y1IXvrbU2ssl4ViJiZRjWx+/CkyCCOyf9YUpAgRLr -Pskqde2mwhuNP8yBlOBb17Sapz7N3+hJi5j9vLBAFcamPeF3PqxjFv7j5TKkRmSI -dFYQclREwMUd3qEH322KkqOnsEEfdmCgFqWORe+QR5AxzxQP3Pnd4OYH1yZCh0MQ -P2pJgrxxf2I5I/m1AUgoHV1cdBbCv9LGohJPpMtwPC0dJpgMFcnf6hT37At236AY -V437HiRruY7iPWkYFrSPWpwdslJ32MZvRN5RS163jZXjiZ7qWnQOiiDJfXe4evB/ -yQLN4m0qVQxsMz7rkY7OsqaXAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIAoDAMBgNV -HRMBAf8EAjAAMBgGA1UdEQQRMA+CDWxvY2FscmVnaXN0cnkwCwYJKoZIhvcNAQEL -A4IBAQAyUb3EuMaOylBeV8+4KeBiE4lxykDOwLLSk3jXRsVVtfJpX3v8l5vwo/Jf -iG8tzzz+7uiskI96u3TsekUtVkUxujfKevMP+369K/59s7NRmwwlFMyB2fvL14B2 -oweVjWvM/8fZl6irtFdbJFXXRm7paKso5cmfImxhojAwohgcd4XTVLE/7juYa582 -AaBdRuIiyL71MU9qa1mC5+57AaSLPYaPKpahemgYYkV1Z403Kd6rXchxdQ8JIAL8 -+0oYTSC+svnz1tUU/V5E5id9LQaTmDN5iIVFhNpqAaZmR45UI86woWvnkMb8Ants -4aknwTwY3300PuTqBdQufvOFDRN5 ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/localregistry.key b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/localregistry.key deleted file mode 100644 index cb69a0f3ef..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/localregistry.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAy4u+UBJJf6npHKDiZTb/ctSF7621NrLJeFYiYmUY1sfvwpMg -gjsn/WFKQIES6z7JKnXtpsIbjT/MgZTgW9e0mqc+zd/oSYuY/bywQBXGpj3hdz6s -Yxb+4+UypEZkiHRWEHJURMDFHd6hB99tipKjp7BBH3ZgoBaljkXvkEeQMc8UD9z5 -3eDmB9cmQodDED9qSYK8cX9iOSP5tQFIKB1dXHQWwr/SxqIST6TLcDwtHSaYDBXJ -3+oU9+wLdt+gGFeN+x4ka7mO4j1pGBa0j1qcHbJSd9jGb0TeUUtet42V44me6lp0 -DoogyX13uHrwf8kCzeJtKlUMbDM+65GOzrKmlwIDAQABAoIBAF6vFMp+lz4RteSh -Wm8m1FGAVwWVUpStOlcGClynFpTi0L88XYT3K7UMStQSttBDlqRv0ysdZF+ia+lj -bbKLdvHyFp8CJzX/AB4YZgyJlKzEYFtuBhbaHZu5hIMyU5W+OELSTCznV0p7w4C8 -CGLLr+FTdhfCo1QU9NJn6fa9s2/XRdSClBBalAHYs0ZS7ZckaF/sPiC/VapfBMet -qjJXNYiO6pXYriGWKF9zdAMfk2CM0BVWbnwQZkMSEQirrTcJwm3ezyloXCv2nywK -/VzbUT1HJVyzo5oAwTd0MwDc2oEMiFzlfO028zY4LDltpia+SyWvFi5NaIqzFESc -yLgJacECgYEA3jvH+ZQHQf42Md8TCciokaYvwWIKJdk4WRjbvE5cBZekyXAm7/3b -/1VFDKsy2RPlfmfHP3wy9rlnjzsRveB5qaclgS8aI67AYsWd/yRgfRatl7Ve9bHl -LY6VM5L/DZTxykcqivwjc77XoDuBfUKs6tyuSLQku+FOTbLtNYlUCHECgYEA6nkR -lkXufyLmDhNb3093RsYvPcs1kGaIIGTnz3cxWNh485DgsyLBuYQ5ugupQkzM8YSt -ohDTmVpggqjlXQxCg0Zw8gkEV0v8KsLGjn1CuTJg/mBArXlelq1FEeRAYC9/YfOz -ocXegHV7wDKKtcraNZFsEc7Z0LwbC9wtzSFG44cCgYASkMX1CLPOhJE8e1lY0OWc -PVjx++HDJbF6aAQ7aARyBygiF/d4xylw3EvHcinuTqY2eC8CE7siN3z6T0H9Ldqc -HLWaZDf30SqLVd0MKprQ+GsKKIHFXtY5hxbZ1ybtmIrWjjl0oPnJOqFC5pW7xC0z -9bmtozcKZxkmjpMYjN9zUQKBgQCqV6KLRerqunPgLfhE1/qTlE+l2QflDFhBEI3I -j5NuNHZKnSphehK7sHAv1WD2Jc2OeRGb+BWCB8Ktqf5YBxwbOwW7EQnyUeW1OyP9 -SMs8uHj21P6oCNDLLr5LLUQHnPoyM1aBZLstICzziMR1JhY5bJjSpzBfEQmlKCSu -LkrN6QKBgQCRXrBJRUxeJj7wCnCSq0Clf9NhCpQnwo4bEx8sKlj8K8ku8MvwQwoM -3KfWc7bOl6A2/mM/k4yoHtBMM9X9xqYtsgeFhxuiWBcfTmTxWh73LQ48Kgbrgodt -6yTccnjr7OtBidD85c6lgjAUgcL43QY8mlw0OhzXAZ2R5HWFp4ht+w== ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/signing.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/signing.cert deleted file mode 100644 index 45166f2d8f..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/signing.cert +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIRAJ6IIisIZxL86oe3oeoAgWUwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNjAxMjgw -MDQyMzNaFw0xOTAxMTIwMDQyMzNaMBMxETAPBgNVBAoTCFF1aWNrVExTMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3IXUwqSdO2QTj2ET6fJPGe+KWVnt -QCQQWjkWVpOz8L2A29BRvv9z6lYNf9sOM0Xb5IUAgoZ/s3U6LNYT/RWYFBfeo40r -Xd/MNKAn0kFsSb6BIKmUwPqFeqc8wiPX6yY4SbF1sUTkCTkw3yFHg/AIlwmhpFH3 -9mAmV+x0kTzFR/78ZDD5CUNS59bbu+7UqB06YrJuVEwPY98YixSPXTcaKimsUe+K -IY8FQ6yN6l27MK56wlj4hw2gYz+cyBUBCExCgYMQlOSg2ilH4qYyFvccSDUH7jTA -NwpsIBfdoUVbI+j2ivn+ZGD614LtIStGgUu0mDDVxVOWnRvq/z7LMaa2jwIDAQAB -ozUwMzAOBgNVHQ8BAf8EBAMCAKAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYDVR0T -AQH/BAIwADALBgkqhkiG9w0BAQsDggEBAJq3JzTLrIWCF8rHLTTm1icE9PjOO0sV -a1wrmdJ6NwRbJ66dLZ/4G/NZjVOnce9WFHYLFSEG+wx5YVUPuJXpJaSdy0h8F0Uw -hiJwgeVsGg7vcf4G6mWHrsauDOhylnD31UtYPX1Ao/jcntyyf+gCQpY1J/B8l1yU -LNOwvWLVLpZwZ4ehbKA/UnDXgA+3uHvpzl//cPe0cnt+Mhrgzk5mIMwVR6zCZw1G -oVutAHpv2PXxRwTMu51J+QtSL2b2w3mGHxDLpmz8UdXOtkxdpmDT8kIOtX0T5yGL -29F3fa81iZPs02GWjSGOfOzmCCvaA4C5KJvY/WulF7OOgwvrBpQwqTI= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/signing.key b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/signing.key deleted file mode 100644 index 475625402f..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/certs/signing.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEA3IXUwqSdO2QTj2ET6fJPGe+KWVntQCQQWjkWVpOz8L2A29BR -vv9z6lYNf9sOM0Xb5IUAgoZ/s3U6LNYT/RWYFBfeo40rXd/MNKAn0kFsSb6BIKmU -wPqFeqc8wiPX6yY4SbF1sUTkCTkw3yFHg/AIlwmhpFH39mAmV+x0kTzFR/78ZDD5 -CUNS59bbu+7UqB06YrJuVEwPY98YixSPXTcaKimsUe+KIY8FQ6yN6l27MK56wlj4 -hw2gYz+cyBUBCExCgYMQlOSg2ilH4qYyFvccSDUH7jTANwpsIBfdoUVbI+j2ivn+ -ZGD614LtIStGgUu0mDDVxVOWnRvq/z7LMaa2jwIDAQABAoIBAD2tiNZv6DImSXo+ -sq0qQomEf/OBvWPFMnWppd/NK/TXa+UPHO4I0MjoDJqIEC6zCU+fC4d2St1MmlrT -/X85vPFRw8mGwGxfHeRSLxEVj04I5GDYTWy0JQUrJUk/cTKp2/Bwm/RaylTyFAM0 -caYrSpvD69vjuTDFr7PDxM6iaqM53zK/vD8kCe81z+wN0UbAKsLlUOKztjH6SzL9 -uVOkekIT/j3L2xxyQhjmhfA3TuCP4uNK/+6/4ovl9Nj4pQsFomsCk4phgqy9SOm1 -4yufmVd8k7J3cppMlMPNc+7tqe2Xn593Y8QT95y3yhtkFECF70yBw64HMDDpA22p -5b/JV9ECgYEA9H4RBXOwbdjcpCa9H3mFjHqUQCqNme1vOSGiflZh9KBCDKgdqugm -KHpvAECADie0p6XRHpxRvufKnGFkJwedfeiKz51T+0dqgPxWncYT1TC+cAjOSzfM -wBpUOcAyvTTviwGbg4bLanHo4remzCbcnRvHQX4YfPFCjT9GhsU+XEUCgYEA5ubz -IlSu1wwFJpoO24ZykGUyqGUQXzR0NrXiLrpF0764qjmHyF8SPJPv1XegSxP/nUTz -SjVfJ7wye/X9qlOpBY8mzy9qQMMKc1cQBV1yVW8IRZ7pMYQZO7qmrZD/DWTa5qWt -pqSbIH2FKedELsKJA/SBtczKjspOdDKyh0UelsMCgYA7DyTfc0XAEy2hPXZb3wgC -mi2rnlvcPf2rCFPvPsCkzf2GfynDehaVmpWrsuj8Al1iTezI/yvD+Mv5oJEH2JAT -tROq+S8rOOIiTFJEBHAQBJlMCOSESPNdyD5mQOZAzEO9CWNejzYd/WwrL//Luut5 -zBcC3AngTIsuAYXw0j6xHQKBgQDamkAJep7k3W5q82OplgoUhpqFLtlnKSP1QBFZ -J+U/6Mqv7jONEeUUEQL42H6bVd2kqUikMw9ZcSVikquLfBUDPFoDwOIZWg4k0IJM -cgHyvGHad+5SgLva/oUawbGWnqtXvfc/U4vCINPXrimxE1/grLW4xp/mu8W24OCA -jIG/PQKBgD/Apl+sfqiB/6ONBjjIswA4yFkEXHSZNpAgcPwhA+cO5D0afEWz2HIx -VeOh5NjN1EL0hX8clFW4bfkK1Vr0kjvbMUXnBWaibUgpiVQl9O9WjaKQLZrp4sRu -x2kJ07Qn6ri7f/lsqOELZwBy95iHWRdePptaAKkRGxJstHI7dgUt ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/registry-config.yml b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/registry-config.yml deleted file mode 100644 index 630ef057cc..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver-oauth/registry-config.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 0.1 -loglevel: debug -storage: - cache: - blobdescriptor: inmemory - filesystem: - rootdirectory: /tmp/registry-dev -http: - addr: 0.0.0.0:5000 - tls: - certificate: "/etc/docker/registry/localregistry.cert" - key: "/etc/docker/registry/localregistry.key" -auth: - token: - realm: "https://auth.localregistry:5559/token/" - issuer: "registry-test" - service: "registry-test" - rootcertbundle: "/etc/docker/registry/tokenbundle.pem" diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/.htpasswd b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/.htpasswd deleted file mode 100644 index 0bbf574006..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/.htpasswd +++ /dev/null @@ -1 +0,0 @@ -testuser:$2y$05$T2MlBvkN1R/yICNnLuf1leOlOfAY0DvybctbbWUFKlojfkShVgn4m diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/Dockerfile b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/Dockerfile deleted file mode 100644 index 3452468747..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM dmcgowan/token-server:simple - -WORKDIR / - -COPY ./.htpasswd /.htpasswd -COPY ./certs/auth.localregistry.cert /tls.cert -COPY ./certs/auth.localregistry.key /tls.key -COPY ./certs/signing.key /sign.key diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/auth.localregistry.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/auth.localregistry.cert deleted file mode 100644 index 4144ca168d..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/auth.localregistry.cert +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDHDCCAgagAwIBAgIRAKhhQMnqZx+hkOmoUYgPb+kwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNjAxMjgw -MDQyMzFaFw0xOTAxMTIwMDQyMzFaMDAxETAPBgNVBAoTCFF1aWNrVExTMRswGQYD -VQQDExJhdXRoLmxvY2FscmVnaXN0cnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQD1tUf1EghBlIRrE83yF4zDgRu7vH2Jo0kygKJUWtQQe+DfXyjjE/fg -FdKnnoEjsIeF9hxNbTt0ldDz7/n97pbMhoiXULi9iq4jlgSzVL2XEAgrON0YSY/c -Lmmd1KSa/pOUZr2WMAYPZ+FdQfE1W7SMNbErPefBqYdFzpZ+esAtvbajYwIjl8Vy -9c4bidx4vgnNrR9GcFYibjC5sj8syh/OtbzzqiVGT8YcPpmMG6KNRkausa4gqpon -NKYG8C3WDaiPCLYKcvFrFfdEWF/m2oj14eXACXT9iwp8r4bsLgXrZwqcpKOWfVRu -qHC8aV476EYgxWCAOANExUdUaRt5wL/jAgMBAAGjPzA9MA4GA1UdDwEB/wQEAwIA -oDAMBgNVHRMBAf8EAjAAMB0GA1UdEQQWMBSCEmF1dGgubG9jYWxyZWdpc3RyeTAL -BgkqhkiG9w0BAQsDggEBABxPGK9FdGDxcLowNsExKnnZvmQT3H0u+Dux1gkp0AhH -KOrmx3LUENUKLSgotzx133tgOgR5lzAWVFy7bhLwlPhOslxf2oEfztsAMd/tY8rW -PrG2ZqYqlzEQQ9INbAc3woo5A3slN07uhP3F16jNqoMM4zRmw6Ba70CluGKT7x5+ -xVjKoWITLjWDXT5m35PnsN8CpBaFzXYcod/5p9XwCFp0s+aNxfpZECCV/3yqIr+J -ALzroPh43FAlG96o4NyYZ2Msp63newN19R2+TgpV4nXuw2mLVDpvetP7RRqnpvj/ -qwRgt5j4hFjJWb61M0ELL7A9fA71h1ImdGCvnArdBQs= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/auth.localregistry.key b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/auth.localregistry.key deleted file mode 100644 index 4c499bb212..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/auth.localregistry.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA9bVH9RIIQZSEaxPN8heMw4Ebu7x9iaNJMoCiVFrUEHvg318o -4xP34BXSp56BI7CHhfYcTW07dJXQ8+/5/e6WzIaIl1C4vYquI5YEs1S9lxAIKzjd -GEmP3C5pndSkmv6TlGa9ljAGD2fhXUHxNVu0jDWxKz3nwamHRc6WfnrALb22o2MC -I5fFcvXOG4nceL4Jza0fRnBWIm4wubI/LMofzrW886olRk/GHD6ZjBuijUZGrrGu -IKqaJzSmBvAt1g2ojwi2CnLxaxX3RFhf5tqI9eHlwAl0/YsKfK+G7C4F62cKnKSj -ln1UbqhwvGleO+hGIMVggDgDRMVHVGkbecC/4wIDAQABAoIBAQCrsjXKRwOF8CZo -PLqZBWPT6hBbK+f9miC4LbNBhwbRTf9hl7mWlImOCTHe95/+NIk/Ty+P21jEqzwM -ehETJPoziX9BXaL6sEHnlBlMx1aEjStoKKA3LJBeqAAdzk4IEQVHmlO4824IreqJ -pF7Njnunzo0zTlr4tWJVoXsAfv5z9tNtdkxYBbIa0fjfGtlqXU3gLq58FCON3mB/ -NGc0AyA1UFGp0FzpdEcwTGD4InsXbcmsl2l/VPBJuZbryITRqWs6BbK++80DRhNt -afMhP+IzKrWSCp0rBYrqqz6AevtlKdEfQK1yXPEjN/63QLMevt8mF/1JCp//TQnf -Z6bIQbAhAoGBAP7vFA0PcvoXt9MXvvAwrKY1s6pNw4nWPG27qY1/m+DkBwP8IQms -4AWGv1wscZzXJYTvaLO5/qjmGUj50ohcVEvyZJioh1pKXA8Chxvd6rBA/O/Lj5E0 -3MOSA5Q0gxJ0Mhv0zGbbyN5fY8D8zhxoqQP4LoW+UdZG2Oi6JxsQ9c9dAoGBAPa8 -U3bGuM5OGA9EWP7mkB/VnjDTL1aEIN3cOHbHIKwH/loxdYcNMBE7vwxV1CzgIzXT -wsL0iE15fQdK938u0+um8aH5QtbWNI8tdk1XVjEC/i3C7N6WVUutneCKUDb4QxiB -9OvWCbNNiN+xTKBBM93YlwO3GYfrW9Pmm9q1+hg/AoGBALJlUS22gun50PxaIJZq -KVcCO2DQnCYHki/j48mN4+HjD/m85M2lePrFCYIR48syTyIQer9SR5+frVAA6k/b -9G1VCQo+3MDVSkiCp1Nb3tBKGfYgB65ARMBinDiI6rPuNeaUTrkn0g+yxtaU0hLV -Nnj9omia/x+oYj+xjI4HN0xNAoGARy92dSJIV104m88ATip/EnAzP6ruUWu1f8z1 -jW9OAdQckjEK03f+kjpGmGx61qekAPejjVO3r4KJi/0ZAtyjz61OsYiUvB748wYO -x6mW+HUAmHtQk7eTzE2+6vV8xx9BXGTCIPiTu+N2xfMFRIcLS8odZ7j/6LMCv1Qd -SzCNg0kCgYBaNlEs4pK1VxZZpEWwVmFpgIxfEfxLIaGrek6wBTcCn/VA2M0oHuez -mlMio8VY0yWPBJz30JflDiTmYIvteLPMHT0N0J6isiXLhzJSFI4+cAMLE2Q5v8rz -W+W5/L8YZeierW0qJat1BrgStaf5ZLpiOc9pKBSwycydPH5BfVdK/A== ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/localregistry.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/localregistry.cert deleted file mode 100644 index 105acc4f39..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/localregistry.cert +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDETCCAfugAwIBAgIQN7rT95eAy75c4n6/AsDJODALBgkqhkiG9w0BAQswJjER -MA8GA1UEChMIUXVpY2tUTFMxETAPBgNVBAMTCFF1aWNrVExTMB4XDTE2MDEyODAw -NDIzMloXDTE5MDExMjAwNDIzMlowKzERMA8GA1UEChMIUXVpY2tUTFMxFjAUBgNV -BAMTDWxvY2FscmVnaXN0cnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDLi75QEkl/qekcoOJlNv9y1IXvrbU2ssl4ViJiZRjWx+/CkyCCOyf9YUpAgRLr -Pskqde2mwhuNP8yBlOBb17Sapz7N3+hJi5j9vLBAFcamPeF3PqxjFv7j5TKkRmSI -dFYQclREwMUd3qEH322KkqOnsEEfdmCgFqWORe+QR5AxzxQP3Pnd4OYH1yZCh0MQ -P2pJgrxxf2I5I/m1AUgoHV1cdBbCv9LGohJPpMtwPC0dJpgMFcnf6hT37At236AY -V437HiRruY7iPWkYFrSPWpwdslJ32MZvRN5RS163jZXjiZ7qWnQOiiDJfXe4evB/ -yQLN4m0qVQxsMz7rkY7OsqaXAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIAoDAMBgNV -HRMBAf8EAjAAMBgGA1UdEQQRMA+CDWxvY2FscmVnaXN0cnkwCwYJKoZIhvcNAQEL -A4IBAQAyUb3EuMaOylBeV8+4KeBiE4lxykDOwLLSk3jXRsVVtfJpX3v8l5vwo/Jf -iG8tzzz+7uiskI96u3TsekUtVkUxujfKevMP+369K/59s7NRmwwlFMyB2fvL14B2 -oweVjWvM/8fZl6irtFdbJFXXRm7paKso5cmfImxhojAwohgcd4XTVLE/7juYa582 -AaBdRuIiyL71MU9qa1mC5+57AaSLPYaPKpahemgYYkV1Z403Kd6rXchxdQ8JIAL8 -+0oYTSC+svnz1tUU/V5E5id9LQaTmDN5iIVFhNpqAaZmR45UI86woWvnkMb8Ants -4aknwTwY3300PuTqBdQufvOFDRN5 ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/localregistry.key b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/localregistry.key deleted file mode 100644 index cb69a0f3ef..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/localregistry.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAy4u+UBJJf6npHKDiZTb/ctSF7621NrLJeFYiYmUY1sfvwpMg -gjsn/WFKQIES6z7JKnXtpsIbjT/MgZTgW9e0mqc+zd/oSYuY/bywQBXGpj3hdz6s -Yxb+4+UypEZkiHRWEHJURMDFHd6hB99tipKjp7BBH3ZgoBaljkXvkEeQMc8UD9z5 -3eDmB9cmQodDED9qSYK8cX9iOSP5tQFIKB1dXHQWwr/SxqIST6TLcDwtHSaYDBXJ -3+oU9+wLdt+gGFeN+x4ka7mO4j1pGBa0j1qcHbJSd9jGb0TeUUtet42V44me6lp0 -DoogyX13uHrwf8kCzeJtKlUMbDM+65GOzrKmlwIDAQABAoIBAF6vFMp+lz4RteSh -Wm8m1FGAVwWVUpStOlcGClynFpTi0L88XYT3K7UMStQSttBDlqRv0ysdZF+ia+lj -bbKLdvHyFp8CJzX/AB4YZgyJlKzEYFtuBhbaHZu5hIMyU5W+OELSTCznV0p7w4C8 -CGLLr+FTdhfCo1QU9NJn6fa9s2/XRdSClBBalAHYs0ZS7ZckaF/sPiC/VapfBMet -qjJXNYiO6pXYriGWKF9zdAMfk2CM0BVWbnwQZkMSEQirrTcJwm3ezyloXCv2nywK -/VzbUT1HJVyzo5oAwTd0MwDc2oEMiFzlfO028zY4LDltpia+SyWvFi5NaIqzFESc -yLgJacECgYEA3jvH+ZQHQf42Md8TCciokaYvwWIKJdk4WRjbvE5cBZekyXAm7/3b -/1VFDKsy2RPlfmfHP3wy9rlnjzsRveB5qaclgS8aI67AYsWd/yRgfRatl7Ve9bHl -LY6VM5L/DZTxykcqivwjc77XoDuBfUKs6tyuSLQku+FOTbLtNYlUCHECgYEA6nkR -lkXufyLmDhNb3093RsYvPcs1kGaIIGTnz3cxWNh485DgsyLBuYQ5ugupQkzM8YSt -ohDTmVpggqjlXQxCg0Zw8gkEV0v8KsLGjn1CuTJg/mBArXlelq1FEeRAYC9/YfOz -ocXegHV7wDKKtcraNZFsEc7Z0LwbC9wtzSFG44cCgYASkMX1CLPOhJE8e1lY0OWc -PVjx++HDJbF6aAQ7aARyBygiF/d4xylw3EvHcinuTqY2eC8CE7siN3z6T0H9Ldqc -HLWaZDf30SqLVd0MKprQ+GsKKIHFXtY5hxbZ1ybtmIrWjjl0oPnJOqFC5pW7xC0z -9bmtozcKZxkmjpMYjN9zUQKBgQCqV6KLRerqunPgLfhE1/qTlE+l2QflDFhBEI3I -j5NuNHZKnSphehK7sHAv1WD2Jc2OeRGb+BWCB8Ktqf5YBxwbOwW7EQnyUeW1OyP9 -SMs8uHj21P6oCNDLLr5LLUQHnPoyM1aBZLstICzziMR1JhY5bJjSpzBfEQmlKCSu -LkrN6QKBgQCRXrBJRUxeJj7wCnCSq0Clf9NhCpQnwo4bEx8sKlj8K8ku8MvwQwoM -3KfWc7bOl6A2/mM/k4yoHtBMM9X9xqYtsgeFhxuiWBcfTmTxWh73LQ48Kgbrgodt -6yTccnjr7OtBidD85c6lgjAUgcL43QY8mlw0OhzXAZ2R5HWFp4ht+w== ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/signing.cert b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/signing.cert deleted file mode 100644 index 45166f2d8f..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/signing.cert +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAd+gAwIBAgIRAJ6IIisIZxL86oe3oeoAgWUwCwYJKoZIhvcNAQELMCYx -ETAPBgNVBAoTCFF1aWNrVExTMREwDwYDVQQDEwhRdWlja1RMUzAeFw0xNjAxMjgw -MDQyMzNaFw0xOTAxMTIwMDQyMzNaMBMxETAPBgNVBAoTCFF1aWNrVExTMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3IXUwqSdO2QTj2ET6fJPGe+KWVnt -QCQQWjkWVpOz8L2A29BRvv9z6lYNf9sOM0Xb5IUAgoZ/s3U6LNYT/RWYFBfeo40r -Xd/MNKAn0kFsSb6BIKmUwPqFeqc8wiPX6yY4SbF1sUTkCTkw3yFHg/AIlwmhpFH3 -9mAmV+x0kTzFR/78ZDD5CUNS59bbu+7UqB06YrJuVEwPY98YixSPXTcaKimsUe+K -IY8FQ6yN6l27MK56wlj4hw2gYz+cyBUBCExCgYMQlOSg2ilH4qYyFvccSDUH7jTA -NwpsIBfdoUVbI+j2ivn+ZGD614LtIStGgUu0mDDVxVOWnRvq/z7LMaa2jwIDAQAB -ozUwMzAOBgNVHQ8BAf8EBAMCAKAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYDVR0T -AQH/BAIwADALBgkqhkiG9w0BAQsDggEBAJq3JzTLrIWCF8rHLTTm1icE9PjOO0sV -a1wrmdJ6NwRbJ66dLZ/4G/NZjVOnce9WFHYLFSEG+wx5YVUPuJXpJaSdy0h8F0Uw -hiJwgeVsGg7vcf4G6mWHrsauDOhylnD31UtYPX1Ao/jcntyyf+gCQpY1J/B8l1yU -LNOwvWLVLpZwZ4ehbKA/UnDXgA+3uHvpzl//cPe0cnt+Mhrgzk5mIMwVR6zCZw1G -oVutAHpv2PXxRwTMu51J+QtSL2b2w3mGHxDLpmz8UdXOtkxdpmDT8kIOtX0T5yGL -29F3fa81iZPs02GWjSGOfOzmCCvaA4C5KJvY/WulF7OOgwvrBpQwqTI= ------END CERTIFICATE----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/signing.key b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/signing.key deleted file mode 100644 index 475625402f..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/certs/signing.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEA3IXUwqSdO2QTj2ET6fJPGe+KWVntQCQQWjkWVpOz8L2A29BR -vv9z6lYNf9sOM0Xb5IUAgoZ/s3U6LNYT/RWYFBfeo40rXd/MNKAn0kFsSb6BIKmU -wPqFeqc8wiPX6yY4SbF1sUTkCTkw3yFHg/AIlwmhpFH39mAmV+x0kTzFR/78ZDD5 -CUNS59bbu+7UqB06YrJuVEwPY98YixSPXTcaKimsUe+KIY8FQ6yN6l27MK56wlj4 -hw2gYz+cyBUBCExCgYMQlOSg2ilH4qYyFvccSDUH7jTANwpsIBfdoUVbI+j2ivn+ -ZGD614LtIStGgUu0mDDVxVOWnRvq/z7LMaa2jwIDAQABAoIBAD2tiNZv6DImSXo+ -sq0qQomEf/OBvWPFMnWppd/NK/TXa+UPHO4I0MjoDJqIEC6zCU+fC4d2St1MmlrT -/X85vPFRw8mGwGxfHeRSLxEVj04I5GDYTWy0JQUrJUk/cTKp2/Bwm/RaylTyFAM0 -caYrSpvD69vjuTDFr7PDxM6iaqM53zK/vD8kCe81z+wN0UbAKsLlUOKztjH6SzL9 -uVOkekIT/j3L2xxyQhjmhfA3TuCP4uNK/+6/4ovl9Nj4pQsFomsCk4phgqy9SOm1 -4yufmVd8k7J3cppMlMPNc+7tqe2Xn593Y8QT95y3yhtkFECF70yBw64HMDDpA22p -5b/JV9ECgYEA9H4RBXOwbdjcpCa9H3mFjHqUQCqNme1vOSGiflZh9KBCDKgdqugm -KHpvAECADie0p6XRHpxRvufKnGFkJwedfeiKz51T+0dqgPxWncYT1TC+cAjOSzfM -wBpUOcAyvTTviwGbg4bLanHo4remzCbcnRvHQX4YfPFCjT9GhsU+XEUCgYEA5ubz -IlSu1wwFJpoO24ZykGUyqGUQXzR0NrXiLrpF0764qjmHyF8SPJPv1XegSxP/nUTz -SjVfJ7wye/X9qlOpBY8mzy9qQMMKc1cQBV1yVW8IRZ7pMYQZO7qmrZD/DWTa5qWt -pqSbIH2FKedELsKJA/SBtczKjspOdDKyh0UelsMCgYA7DyTfc0XAEy2hPXZb3wgC -mi2rnlvcPf2rCFPvPsCkzf2GfynDehaVmpWrsuj8Al1iTezI/yvD+Mv5oJEH2JAT -tROq+S8rOOIiTFJEBHAQBJlMCOSESPNdyD5mQOZAzEO9CWNejzYd/WwrL//Luut5 -zBcC3AngTIsuAYXw0j6xHQKBgQDamkAJep7k3W5q82OplgoUhpqFLtlnKSP1QBFZ -J+U/6Mqv7jONEeUUEQL42H6bVd2kqUikMw9ZcSVikquLfBUDPFoDwOIZWg4k0IJM -cgHyvGHad+5SgLva/oUawbGWnqtXvfc/U4vCINPXrimxE1/grLW4xp/mu8W24OCA -jIG/PQKBgD/Apl+sfqiB/6ONBjjIswA4yFkEXHSZNpAgcPwhA+cO5D0afEWz2HIx -VeOh5NjN1EL0hX8clFW4bfkK1Vr0kjvbMUXnBWaibUgpiVQl9O9WjaKQLZrp4sRu -x2kJ07Qn6ri7f/lsqOELZwBy95iHWRdePptaAKkRGxJstHI7dgUt ------END RSA PRIVATE KEY----- diff --git a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/registry-config.yml b/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/registry-config.yml deleted file mode 100644 index bc269056ad..0000000000 --- a/vendor/github.com/docker/distribution/contrib/docker-integration/tokenserver/registry-config.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 0.1 -loglevel: debug -storage: - cache: - blobdescriptor: inmemory - filesystem: - rootdirectory: /tmp/registry-dev -http: - addr: 0.0.0.0:5000 - tls: - certificate: "/etc/docker/registry/localregistry.cert" - key: "/etc/docker/registry/localregistry.key" -auth: - token: - realm: "https://auth.localregistry:5556/token/" - issuer: "registry-test" - service: "registry-test" - rootcertbundle: "/etc/docker/registry/tokenbundle.pem" diff --git a/vendor/github.com/docker/distribution/contrib/token-server/main.go b/vendor/github.com/docker/distribution/contrib/token-server/main.go deleted file mode 100644 index e47e11c279..0000000000 --- a/vendor/github.com/docker/distribution/contrib/token-server/main.go +++ /dev/null @@ -1,201 +0,0 @@ -package main - -import ( - "encoding/json" - "flag" - "net/http" - "strings" - - "github.com/Sirupsen/logrus" - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/auth" - _ "github.com/docker/distribution/registry/auth/htpasswd" - "github.com/docker/libtrust" - "github.com/gorilla/mux" -) - -func main() { - var ( - issuer = &TokenIssuer{} - pkFile string - addr string - debug bool - err error - - passwdFile string - realm string - - cert string - certKey string - ) - - flag.StringVar(&issuer.Issuer, "issuer", "distribution-token-server", "Issuer string for token") - flag.StringVar(&pkFile, "key", "", "Private key file") - flag.StringVar(&addr, "addr", "localhost:8080", "Address to listen on") - flag.BoolVar(&debug, "debug", false, "Debug mode") - - flag.StringVar(&passwdFile, "passwd", ".htpasswd", "Passwd file") - flag.StringVar(&realm, "realm", "", "Authentication realm") - - flag.StringVar(&cert, "tlscert", "", "Certificate file for TLS") - flag.StringVar(&certKey, "tlskey", "", "Certificate key for TLS") - - flag.Parse() - - if debug { - logrus.SetLevel(logrus.DebugLevel) - } - - if pkFile == "" { - issuer.SigningKey, err = libtrust.GenerateECP256PrivateKey() - if err != nil { - logrus.Fatalf("Error generating private key: %v", err) - } - logrus.Debugf("Using newly generated key with id %s", issuer.SigningKey.KeyID()) - } else { - issuer.SigningKey, err = libtrust.LoadKeyFile(pkFile) - if err != nil { - logrus.Fatalf("Error loading key file %s: %v", pkFile, err) - } - logrus.Debugf("Loaded private key with id %s", issuer.SigningKey.KeyID()) - } - - if realm == "" { - logrus.Fatalf("Must provide realm") - } - - ac, err := auth.GetAccessController("htpasswd", map[string]interface{}{ - "realm": realm, - "path": passwdFile, - }) - if err != nil { - logrus.Fatalf("Error initializing access controller: %v", err) - } - - ctx := context.Background() - - ts := &tokenServer{ - issuer: issuer, - accessController: ac, - } - - router := mux.NewRouter() - router.Path("/token/").Methods("GET").Handler(handlerWithContext(ctx, ts.getToken)) - - if cert == "" { - err = http.ListenAndServe(addr, router) - } else if certKey == "" { - logrus.Fatalf("Must provide certficate (-tlscert) and key (-tlskey)") - } else { - err = http.ListenAndServeTLS(addr, cert, certKey, router) - } - - if err != nil { - logrus.Infof("Error serving: %v", err) - } - -} - -// handlerWithContext wraps the given context-aware handler by setting up the -// request context from a base context. -func handlerWithContext(ctx context.Context, handler func(context.Context, http.ResponseWriter, *http.Request)) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx := context.WithRequest(ctx, r) - logger := context.GetRequestLogger(ctx) - ctx = context.WithLogger(ctx, logger) - - handler(ctx, w, r) - }) -} - -func handleError(ctx context.Context, err error, w http.ResponseWriter) { - ctx, w = context.WithResponseWriter(ctx, w) - - if serveErr := errcode.ServeJSON(w, err); serveErr != nil { - context.GetResponseLogger(ctx).Errorf("error sending error response: %v", serveErr) - return - } - - context.GetResponseLogger(ctx).Info("application error") -} - -type tokenServer struct { - issuer *TokenIssuer - accessController auth.AccessController -} - -// getToken handles authenticating the request and authorizing access to the -// requested scopes. -func (ts *tokenServer) getToken(ctx context.Context, w http.ResponseWriter, r *http.Request) { - context.GetLogger(ctx).Info("getToken") - - params := r.URL.Query() - service := params.Get("service") - scopeSpecifiers := params["scope"] - - requestedAccessList := ResolveScopeSpecifiers(ctx, scopeSpecifiers) - - authorizedCtx, err := ts.accessController.Authorized(ctx, requestedAccessList...) - if err != nil { - challenge, ok := err.(auth.Challenge) - if !ok { - handleError(ctx, err, w) - return - } - - // Get response context. - ctx, w = context.WithResponseWriter(ctx, w) - - challenge.SetHeaders(w) - handleError(ctx, errcode.ErrorCodeUnauthorized.WithDetail(challenge.Error()), w) - - context.GetResponseLogger(ctx).Info("get token authentication challenge") - - return - } - ctx = authorizedCtx - - username := context.GetStringValue(ctx, "auth.user.name") - - ctx = context.WithValue(ctx, "acctSubject", username) - ctx = context.WithLogger(ctx, context.GetLogger(ctx, "acctSubject")) - - context.GetLogger(ctx).Info("authenticated client") - - ctx = context.WithValue(ctx, "requestedAccess", requestedAccessList) - ctx = context.WithLogger(ctx, context.GetLogger(ctx, "requestedAccess")) - - scopePrefix := username + "/" - grantedAccessList := make([]auth.Access, 0, len(requestedAccessList)) - for _, access := range requestedAccessList { - if access.Type != "repository" { - context.GetLogger(ctx).Debugf("Skipping unsupported resource type: %s", access.Type) - continue - } - if !strings.HasPrefix(access.Name, scopePrefix) { - context.GetLogger(ctx).Debugf("Resource scope not allowed: %s", access.Name) - continue - } - grantedAccessList = append(grantedAccessList, access) - } - - ctx = context.WithValue(ctx, "grantedAccess", grantedAccessList) - ctx = context.WithLogger(ctx, context.GetLogger(ctx, "grantedAccess")) - - token, err := ts.issuer.CreateJWT(username, service, grantedAccessList) - if err != nil { - handleError(ctx, err, w) - return - } - - context.GetLogger(ctx).Info("authorized client") - - // Get response context. - ctx, w = context.WithResponseWriter(ctx, w) - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(map[string]string{"token": token}) - - context.GetResponseLogger(ctx).Info("get token complete") -} diff --git a/vendor/github.com/docker/distribution/contrib/token-server/token.go b/vendor/github.com/docker/distribution/contrib/token-server/token.go deleted file mode 100644 index 15ace62204..0000000000 --- a/vendor/github.com/docker/distribution/contrib/token-server/token.go +++ /dev/null @@ -1,174 +0,0 @@ -package main - -import ( - "crypto" - "crypto/rand" - "encoding/base64" - "encoding/json" - "fmt" - "io" - "strings" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" - "github.com/docker/distribution/registry/auth/token" - "github.com/docker/libtrust" -) - -// ResolveScopeSpecifiers converts a list of scope specifiers from a token -// request's `scope` query parameters into a list of standard access objects. -func ResolveScopeSpecifiers(ctx context.Context, scopeSpecs []string) []auth.Access { - requestedAccessSet := make(map[auth.Access]struct{}, 2*len(scopeSpecs)) - - for _, scopeSpecifier := range scopeSpecs { - // There should be 3 parts, separated by a `:` character. - parts := strings.SplitN(scopeSpecifier, ":", 3) - - if len(parts) != 3 { - context.GetLogger(ctx).Infof("ignoring unsupported scope format %s", scopeSpecifier) - continue - } - - resourceType, resourceName, actions := parts[0], parts[1], parts[2] - - // Actions should be a comma-separated list of actions. - for _, action := range strings.Split(actions, ",") { - requestedAccess := auth.Access{ - Resource: auth.Resource{ - Type: resourceType, - Name: resourceName, - }, - Action: action, - } - - // Add this access to the requested access set. - requestedAccessSet[requestedAccess] = struct{}{} - } - } - - requestedAccessList := make([]auth.Access, 0, len(requestedAccessSet)) - for requestedAccess := range requestedAccessSet { - requestedAccessList = append(requestedAccessList, requestedAccess) - } - - return requestedAccessList -} - -// TokenIssuer represents an issuer capable of generating JWT tokens -type TokenIssuer struct { - Issuer string - SigningKey libtrust.PrivateKey - Expiration time.Duration -} - -// CreateJWT creates and signs a JSON Web Token for the given subject and -// audience with the granted access. -func (issuer *TokenIssuer) CreateJWT(subject string, audience string, grantedAccessList []auth.Access) (string, error) { - // Make a set of access entries to put in the token's claimset. - resourceActionSets := make(map[auth.Resource]map[string]struct{}, len(grantedAccessList)) - for _, access := range grantedAccessList { - actionSet, exists := resourceActionSets[access.Resource] - if !exists { - actionSet = map[string]struct{}{} - resourceActionSets[access.Resource] = actionSet - } - actionSet[access.Action] = struct{}{} - } - - accessEntries := make([]*token.ResourceActions, 0, len(resourceActionSets)) - for resource, actionSet := range resourceActionSets { - actions := make([]string, 0, len(actionSet)) - for action := range actionSet { - actions = append(actions, action) - } - - accessEntries = append(accessEntries, &token.ResourceActions{ - Type: resource.Type, - Name: resource.Name, - Actions: actions, - }) - } - - randomBytes := make([]byte, 15) - _, err := io.ReadFull(rand.Reader, randomBytes) - if err != nil { - return "", err - } - randomID := base64.URLEncoding.EncodeToString(randomBytes) - - now := time.Now() - - signingHash := crypto.SHA256 - var alg string - switch issuer.SigningKey.KeyType() { - case "RSA": - alg = "RS256" - case "EC": - alg = "ES256" - default: - panic(fmt.Errorf("unsupported signing key type %q", issuer.SigningKey.KeyType())) - } - - joseHeader := token.Header{ - Type: "JWT", - SigningAlg: alg, - } - - if x5c := issuer.SigningKey.GetExtendedField("x5c"); x5c != nil { - joseHeader.X5c = x5c.([]string) - } else { - var jwkMessage json.RawMessage - jwkMessage, err = issuer.SigningKey.PublicKey().MarshalJSON() - if err != nil { - return "", err - } - joseHeader.RawJWK = &jwkMessage - } - - exp := issuer.Expiration - if exp == 0 { - exp = 5 * time.Minute - } - - claimSet := token.ClaimSet{ - Issuer: issuer.Issuer, - Subject: subject, - Audience: audience, - Expiration: now.Add(exp).Unix(), - NotBefore: now.Unix(), - IssuedAt: now.Unix(), - JWTID: randomID, - - Access: accessEntries, - } - - var ( - joseHeaderBytes []byte - claimSetBytes []byte - ) - - if joseHeaderBytes, err = json.Marshal(joseHeader); err != nil { - return "", fmt.Errorf("unable to encode jose header: %s", err) - } - if claimSetBytes, err = json.Marshal(claimSet); err != nil { - return "", fmt.Errorf("unable to encode claim set: %s", err) - } - - encodedJoseHeader := joseBase64Encode(joseHeaderBytes) - encodedClaimSet := joseBase64Encode(claimSetBytes) - encodingToSign := fmt.Sprintf("%s.%s", encodedJoseHeader, encodedClaimSet) - - var signatureBytes []byte - if signatureBytes, _, err = issuer.SigningKey.Sign(strings.NewReader(encodingToSign), signingHash); err != nil { - return "", fmt.Errorf("unable to sign jwt payload: %s", err) - } - - signature := joseBase64Encode(signatureBytes) - - return fmt.Sprintf("%s.%s", encodingToSign, signature), nil -} - -func joseBase64Encode(data []byte) string { - return strings.TrimRight(base64.URLEncoding.EncodeToString(data), "=") -} diff --git a/vendor/github.com/docker/distribution/coverpkg.sh b/vendor/github.com/docker/distribution/coverpkg.sh deleted file mode 100755 index 25d419ae82..0000000000 --- a/vendor/github.com/docker/distribution/coverpkg.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -# Given a subpackage and the containing package, figures out which packages -# need to be passed to `go test -coverpkg`: this includes all of the -# subpackage's dependencies within the containing package, as well as the -# subpackage itself. -DEPENDENCIES="$(go list -f $'{{range $f := .Deps}}{{$f}}\n{{end}}' ${1} | grep ${2} | grep -v github.com/docker/distribution/vendor)" -echo "${1} ${DEPENDENCIES}" | xargs echo -n | tr ' ' ',' diff --git a/vendor/github.com/docker/distribution/digest/digest.go b/vendor/github.com/docker/distribution/digest/digest.go deleted file mode 100644 index 31d821bba7..0000000000 --- a/vendor/github.com/docker/distribution/digest/digest.go +++ /dev/null @@ -1,139 +0,0 @@ -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/digest_test.go b/vendor/github.com/docker/distribution/digest/digest_test.go deleted file mode 100644 index afb4ebf632..0000000000 --- a/vendor/github.com/docker/distribution/digest/digest_test.go +++ /dev/null @@ -1,82 +0,0 @@ -package digest - -import ( - "testing" -) - -func TestParseDigest(t *testing.T) { - for _, testcase := range []struct { - input string - err error - algorithm Algorithm - hex string - }{ - { - input: "sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b", - algorithm: "sha256", - hex: "e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b", - }, - { - input: "sha384:d3fc7881460b7e22e3d172954463dddd7866d17597e7248453c48b3e9d26d9596bf9c4a9cf8072c9d5bad76e19af801d", - algorithm: "sha384", - hex: "d3fc7881460b7e22e3d172954463dddd7866d17597e7248453c48b3e9d26d9596bf9c4a9cf8072c9d5bad76e19af801d", - }, - { - // empty hex - input: "sha256:", - err: ErrDigestInvalidFormat, - }, - { - // just hex - input: "d41d8cd98f00b204e9800998ecf8427e", - err: ErrDigestInvalidFormat, - }, - { - // not hex - input: "sha256:d41d8cd98f00b204e9800m98ecf8427e", - err: ErrDigestInvalidFormat, - }, - { - // too short - input: "sha256:abcdef0123456789", - err: ErrDigestInvalidLength, - }, - { - // too short (from different algorithm) - input: "sha512:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - err: ErrDigestInvalidLength, - }, - { - input: "foo:d41d8cd98f00b204e9800998ecf8427e", - err: ErrDigestUnsupported, - }, - } { - digest, err := ParseDigest(testcase.input) - if err != testcase.err { - t.Fatalf("error differed from expected while parsing %q: %v != %v", testcase.input, err, testcase.err) - } - - if testcase.err != nil { - continue - } - - if digest.Algorithm() != testcase.algorithm { - t.Fatalf("incorrect algorithm for parsed digest: %q != %q", digest.Algorithm(), testcase.algorithm) - } - - if digest.Hex() != testcase.hex { - t.Fatalf("incorrect hex for parsed digest: %q != %q", digest.Hex(), testcase.hex) - } - - // Parse string return value and check equality - newParsed, err := ParseDigest(digest.String()) - - if err != nil { - t.Fatalf("unexpected error parsing input %q: %v", testcase.input, err) - } - - if newParsed != digest { - t.Fatalf("expected equal: %q != %q", newParsed, digest) - } - } -} diff --git a/vendor/github.com/docker/distribution/digest/digester.go b/vendor/github.com/docker/distribution/digest/digester.go deleted file mode 100644 index f3105a45b6..0000000000 --- a/vendor/github.com/docker/distribution/digest/digester.go +++ /dev/null @@ -1,155 +0,0 @@ -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/digester_resumable_test.go b/vendor/github.com/docker/distribution/digest/digester_resumable_test.go deleted file mode 100644 index 6ba21c801a..0000000000 --- a/vendor/github.com/docker/distribution/digest/digester_resumable_test.go +++ /dev/null @@ -1,21 +0,0 @@ -// +build !noresumabledigest - -package digest - -import ( - "testing" - - "github.com/stevvooe/resumable" - _ "github.com/stevvooe/resumable/sha256" -) - -// TestResumableDetection just ensures that the resumable capability of a hash -// is exposed through the digester type, which is just a hash plus a Digest -// method. -func TestResumableDetection(t *testing.T) { - d := Canonical.New() - - if _, ok := d.Hash().(resumable.Hash); !ok { - t.Fatalf("expected digester to implement resumable.Hash: %#v, %v", d, d.Hash()) - } -} diff --git a/vendor/github.com/docker/distribution/digest/doc.go b/vendor/github.com/docker/distribution/digest/doc.go deleted file mode 100644 index f64b0db32b..0000000000 --- a/vendor/github.com/docker/distribution/digest/doc.go +++ /dev/null @@ -1,42 +0,0 @@ -// 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 deleted file mode 100644 index 4b9313c1ae..0000000000 --- a/vendor/github.com/docker/distribution/digest/set.go +++ /dev/null @@ -1,245 +0,0 @@ -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/set_test.go b/vendor/github.com/docker/distribution/digest/set_test.go deleted file mode 100644 index e9dab8795a..0000000000 --- a/vendor/github.com/docker/distribution/digest/set_test.go +++ /dev/null @@ -1,368 +0,0 @@ -package digest - -import ( - "crypto/sha256" - "encoding/binary" - "math/rand" - "testing" -) - -func assertEqualDigests(t *testing.T, d1, d2 Digest) { - if d1 != d2 { - t.Fatalf("Digests do not match:\n\tActual: %s\n\tExpected: %s", d1, d2) - } -} - -func TestLookup(t *testing.T) { - digests := []Digest{ - "sha256:1234511111111111111111111111111111111111111111111111111111111111", - "sha256:1234111111111111111111111111111111111111111111111111111111111111", - "sha256:1234611111111111111111111111111111111111111111111111111111111111", - "sha256:5432111111111111111111111111111111111111111111111111111111111111", - "sha256:6543111111111111111111111111111111111111111111111111111111111111", - "sha256:6432111111111111111111111111111111111111111111111111111111111111", - "sha256:6542111111111111111111111111111111111111111111111111111111111111", - "sha256:6532111111111111111111111111111111111111111111111111111111111111", - } - - dset := NewSet() - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - t.Fatal(err) - } - } - - dgst, err := dset.Lookup("54") - if err != nil { - t.Fatal(err) - } - assertEqualDigests(t, dgst, digests[3]) - - dgst, err = dset.Lookup("1234") - if err == nil { - t.Fatal("Expected ambiguous error looking up: 1234") - } - if err != ErrDigestAmbiguous { - t.Fatal(err) - } - - dgst, err = dset.Lookup("9876") - if err == nil { - t.Fatal("Expected ambiguous error looking up: 9876") - } - if err != ErrDigestNotFound { - t.Fatal(err) - } - - dgst, err = dset.Lookup("sha256:1234") - if err == nil { - t.Fatal("Expected ambiguous error looking up: sha256:1234") - } - if err != ErrDigestAmbiguous { - t.Fatal(err) - } - - dgst, err = dset.Lookup("sha256:12345") - if err != nil { - t.Fatal(err) - } - assertEqualDigests(t, dgst, digests[0]) - - dgst, err = dset.Lookup("sha256:12346") - if err != nil { - t.Fatal(err) - } - assertEqualDigests(t, dgst, digests[2]) - - dgst, err = dset.Lookup("12346") - if err != nil { - t.Fatal(err) - } - assertEqualDigests(t, dgst, digests[2]) - - dgst, err = dset.Lookup("12345") - if err != nil { - t.Fatal(err) - } - assertEqualDigests(t, dgst, digests[0]) -} - -func TestAddDuplication(t *testing.T) { - digests := []Digest{ - "sha256:1234111111111111111111111111111111111111111111111111111111111111", - "sha256:1234511111111111111111111111111111111111111111111111111111111111", - "sha256:1234611111111111111111111111111111111111111111111111111111111111", - "sha256:5432111111111111111111111111111111111111111111111111111111111111", - "sha256:6543111111111111111111111111111111111111111111111111111111111111", - "sha512:65431111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "sha512:65421111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "sha512:65321111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - } - - dset := NewSet() - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - t.Fatal(err) - } - } - - if len(dset.entries) != 8 { - t.Fatal("Invalid dset size") - } - - if err := dset.Add(Digest("sha256:1234511111111111111111111111111111111111111111111111111111111111")); err != nil { - t.Fatal(err) - } - - if len(dset.entries) != 8 { - t.Fatal("Duplicate digest insert allowed") - } - - if err := dset.Add(Digest("sha384:123451111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")); err != nil { - t.Fatal(err) - } - - if len(dset.entries) != 9 { - t.Fatal("Insert with different algorithm not allowed") - } -} - -func TestRemove(t *testing.T) { - digests, err := createDigests(10) - if err != nil { - t.Fatal(err) - } - - dset := NewSet() - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - t.Fatal(err) - } - } - - dgst, err := dset.Lookup(digests[0].String()) - if err != nil { - t.Fatal(err) - } - if dgst != digests[0] { - t.Fatalf("Unexpected digest value:\n\tExpected: %s\n\tActual: %s", digests[0], dgst) - } - - if err := dset.Remove(digests[0]); err != nil { - t.Fatal(err) - } - - if _, err := dset.Lookup(digests[0].String()); err != ErrDigestNotFound { - t.Fatalf("Expected error %v when looking up removed digest, got %v", ErrDigestNotFound, err) - } -} - -func TestAll(t *testing.T) { - digests, err := createDigests(100) - if err != nil { - t.Fatal(err) - } - - dset := NewSet() - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - t.Fatal(err) - } - } - - all := map[Digest]struct{}{} - for _, dgst := range dset.All() { - all[dgst] = struct{}{} - } - - if len(all) != len(digests) { - t.Fatalf("Unexpected number of unique digests found:\n\tExpected: %d\n\tActual: %d", len(digests), len(all)) - } - - for i, dgst := range digests { - if _, ok := all[dgst]; !ok { - t.Fatalf("Missing element at position %d: %s", i, dgst) - } - } - -} - -func assertEqualShort(t *testing.T, actual, expected string) { - if actual != expected { - t.Fatalf("Unexpected short value:\n\tExpected: %s\n\tActual: %s", expected, actual) - } -} - -func TestShortCodeTable(t *testing.T) { - digests := []Digest{ - "sha256:1234111111111111111111111111111111111111111111111111111111111111", - "sha256:1234511111111111111111111111111111111111111111111111111111111111", - "sha256:1234611111111111111111111111111111111111111111111111111111111111", - "sha256:5432111111111111111111111111111111111111111111111111111111111111", - "sha256:6543111111111111111111111111111111111111111111111111111111111111", - "sha256:6432111111111111111111111111111111111111111111111111111111111111", - "sha256:6542111111111111111111111111111111111111111111111111111111111111", - "sha256:6532111111111111111111111111111111111111111111111111111111111111", - } - - dset := NewSet() - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - t.Fatal(err) - } - } - - dump := ShortCodeTable(dset, 2) - - if len(dump) < len(digests) { - t.Fatalf("Error unexpected size: %d, expecting %d", len(dump), len(digests)) - } - assertEqualShort(t, dump[digests[0]], "12341") - assertEqualShort(t, dump[digests[1]], "12345") - assertEqualShort(t, dump[digests[2]], "12346") - assertEqualShort(t, dump[digests[3]], "54") - assertEqualShort(t, dump[digests[4]], "6543") - assertEqualShort(t, dump[digests[5]], "64") - assertEqualShort(t, dump[digests[6]], "6542") - assertEqualShort(t, dump[digests[7]], "653") -} - -func createDigests(count int) ([]Digest, error) { - r := rand.New(rand.NewSource(25823)) - digests := make([]Digest, count) - for i := range digests { - h := sha256.New() - if err := binary.Write(h, binary.BigEndian, r.Int63()); err != nil { - return nil, err - } - digests[i] = NewDigest("sha256", h) - } - return digests, nil -} - -func benchAddNTable(b *testing.B, n int) { - digests, err := createDigests(n) - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - dset := &Set{entries: digestEntries(make([]*digestEntry, 0, n))} - for j := range digests { - if err = dset.Add(digests[j]); err != nil { - b.Fatal(err) - } - } - } -} - -func benchLookupNTable(b *testing.B, n int, shortLen int) { - digests, err := createDigests(n) - if err != nil { - b.Fatal(err) - } - dset := &Set{entries: digestEntries(make([]*digestEntry, 0, n))} - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - b.Fatal(err) - } - } - shorts := make([]string, 0, n) - for _, short := range ShortCodeTable(dset, shortLen) { - shorts = append(shorts, short) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = dset.Lookup(shorts[i%n]); err != nil { - b.Fatal(err) - } - } -} - -func benchRemoveNTable(b *testing.B, n int) { - digests, err := createDigests(n) - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - dset := &Set{entries: digestEntries(make([]*digestEntry, 0, n))} - b.StopTimer() - for j := range digests { - if err = dset.Add(digests[j]); err != nil { - b.Fatal(err) - } - } - b.StartTimer() - for j := range digests { - if err = dset.Remove(digests[j]); err != nil { - b.Fatal(err) - } - } - } -} - -func benchShortCodeNTable(b *testing.B, n int, shortLen int) { - digests, err := createDigests(n) - if err != nil { - b.Fatal(err) - } - dset := &Set{entries: digestEntries(make([]*digestEntry, 0, n))} - for i := range digests { - if err := dset.Add(digests[i]); err != nil { - b.Fatal(err) - } - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - ShortCodeTable(dset, shortLen) - } -} - -func BenchmarkAdd10(b *testing.B) { - benchAddNTable(b, 10) -} - -func BenchmarkAdd100(b *testing.B) { - benchAddNTable(b, 100) -} - -func BenchmarkAdd1000(b *testing.B) { - benchAddNTable(b, 1000) -} - -func BenchmarkRemove10(b *testing.B) { - benchRemoveNTable(b, 10) -} - -func BenchmarkRemove100(b *testing.B) { - benchRemoveNTable(b, 100) -} - -func BenchmarkRemove1000(b *testing.B) { - benchRemoveNTable(b, 1000) -} - -func BenchmarkLookup10(b *testing.B) { - benchLookupNTable(b, 10, 12) -} - -func BenchmarkLookup100(b *testing.B) { - benchLookupNTable(b, 100, 12) -} - -func BenchmarkLookup1000(b *testing.B) { - benchLookupNTable(b, 1000, 12) -} - -func BenchmarkShortCode10(b *testing.B) { - benchShortCodeNTable(b, 10, 12) -} -func BenchmarkShortCode100(b *testing.B) { - benchShortCodeNTable(b, 100, 12) -} -func BenchmarkShortCode1000(b *testing.B) { - benchShortCodeNTable(b, 1000, 12) -} diff --git a/vendor/github.com/docker/distribution/digest/verifiers.go b/vendor/github.com/docker/distribution/digest/verifiers.go deleted file mode 100644 index 9af3be1341..0000000000 --- a/vendor/github.com/docker/distribution/digest/verifiers.go +++ /dev/null @@ -1,44 +0,0 @@ -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/digest/verifiers_test.go b/vendor/github.com/docker/distribution/digest/verifiers_test.go deleted file mode 100644 index c342d6e7c8..0000000000 --- a/vendor/github.com/docker/distribution/digest/verifiers_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package digest - -import ( - "bytes" - "crypto/rand" - "io" - "testing" -) - -func TestDigestVerifier(t *testing.T) { - p := make([]byte, 1<<20) - rand.Read(p) - digest := FromBytes(p) - - verifier, err := NewDigestVerifier(digest) - if err != nil { - t.Fatalf("unexpected error getting digest verifier: %s", err) - } - - io.Copy(verifier, bytes.NewReader(p)) - - if !verifier.Verified() { - t.Fatalf("bytes not verified") - } -} - -// TestVerifierUnsupportedDigest ensures that unsupported digest validation is -// flowing through verifier creation. -func TestVerifierUnsupportedDigest(t *testing.T) { - unsupported := Digest("bean:0123456789abcdef") - - _, err := NewDigestVerifier(unsupported) - if err == nil { - t.Fatalf("expected error when creating verifier") - } - - if err != ErrDigestUnsupported { - t.Fatalf("incorrect error for unsupported digest: %v", err) - } -} - -// TODO(stevvooe): Add benchmarks to measure bytes/second throughput for -// DigestVerifier. -// -// The relevant benchmark for comparison can be run with the following -// commands: -// -// go test -bench . crypto/sha1 -// diff --git a/vendor/github.com/docker/distribution/doc.go b/vendor/github.com/docker/distribution/doc.go deleted file mode 100644 index bdd8cb708e..0000000000 --- a/vendor/github.com/docker/distribution/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Package distribution will define the interfaces for the components of -// docker distribution. The goal is to allow users to reliably package, ship -// and store content related to docker images. -// -// This is currently a work in progress. More details are available in the -// README.md. -package distribution diff --git a/vendor/github.com/docker/distribution/docs/Dockerfile b/vendor/github.com/docker/distribution/docs/Dockerfile deleted file mode 100644 index 441280868c..0000000000 --- a/vendor/github.com/docker/distribution/docs/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM docs/base:latest -MAINTAINER Mary Anthony (@moxiegirl) - -RUN svn checkout https://github.com/docker/docker/trunk/docs /docs/content/engine -RUN svn checkout https://github.com/docker/compose/trunk/docs /docs/content/compose -RUN svn checkout https://github.com/docker/swarm/trunk/docs /docs/content/swarm -RUN svn checkout https://github.com/docker/machine/trunk/docs /docs/content/machine -RUN svn checkout https://github.com/docker/notary/trunk/docs /docs/content/notary -RUN svn checkout https://github.com/docker/kitematic/trunk/docs /docs/content/kitematic -RUN svn checkout https://github.com/docker/toolbox/trunk/docs /docs/content/toolbox -RUN svn checkout https://github.com/docker/opensource/trunk/docs /docs/content/opensource - -ENV PROJECT=registry - -# To get the git info for this repo -COPY . /src - -COPY . /docs/content/$PROJECT/ diff --git a/vendor/github.com/docker/distribution/docs/Makefile b/vendor/github.com/docker/distribution/docs/Makefile deleted file mode 100644 index 021e8f6e5e..0000000000 --- a/vendor/github.com/docker/distribution/docs/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -.PHONY: all binary build cross default docs docs-build docs-shell shell test test-unit test-integration test-integration-cli test-docker-py validate - -# env vars passed through directly to Docker's build scripts -# to allow things like `make DOCKER_CLIENTONLY=1 binary` easily -# `docs/sources/contributing/devenvironment.md ` and `project/PACKAGERS.md` have some limited documentation of some of these -DOCKER_ENVS := \ - -e BUILDFLAGS \ - -e DOCKER_CLIENTONLY \ - -e DOCKER_EXECDRIVER \ - -e DOCKER_GRAPHDRIVER \ - -e TESTDIRS \ - -e TESTFLAGS \ - -e TIMEOUT -# note: we _cannot_ add "-e DOCKER_BUILDTAGS" here because even if it's unset in the shell, that would shadow the "ENV DOCKER_BUILDTAGS" set in our Dockerfile, which is very important for our official builds - -# to allow `make DOCSDIR=docs docs-shell` (to create a bind mount in docs) -DOCS_MOUNT := $(if $(DOCSDIR),-v $(CURDIR)/$(DOCSDIR):/$(DOCSDIR)) - -# to allow `make DOCSPORT=9000 docs` -DOCSPORT := 8000 - -# Get the IP ADDRESS -DOCKER_IP=$(shell python -c "import urlparse ; print urlparse.urlparse('$(DOCKER_HOST)').hostname or ''") -HUGO_BASE_URL=$(shell test -z "$(DOCKER_IP)" && echo localhost || echo "$(DOCKER_IP)") -HUGO_BIND_IP=0.0.0.0 - -GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) -DOCKER_IMAGE := docker$(if $(GIT_BRANCH),:$(GIT_BRANCH)) -DOCKER_DOCS_IMAGE := docs-base$(if $(GIT_BRANCH),:$(GIT_BRANCH)) - - -DOCKER_RUN_DOCS := docker run --rm -it $(DOCS_MOUNT) -e AWS_S3_BUCKET -e NOCACHE - -# for some docs workarounds (see below in "docs-build" target) -GITCOMMIT := $(shell git rev-parse --short HEAD 2>/dev/null) - -default: docs - -docs: docs-build - $(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" hugo server --port=$(DOCSPORT) --baseUrl=$(HUGO_BASE_URL) --bind=$(HUGO_BIND_IP) - -docs-draft: docs-build - $(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" hugo server --buildDrafts="true" --port=$(DOCSPORT) --baseUrl=$(HUGO_BASE_URL) --bind=$(HUGO_BIND_IP) - - -docs-shell: docs-build - $(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 "$(DOCKER_DOCS_IMAGE)" bash - - -docs-build: -# ( git remote | grep -v upstream ) || git diff --name-status upstream/release..upstream/docs ./ > ./changed-files -# echo "$(GIT_BRANCH)" > GIT_BRANCH -# echo "$(AWS_S3_BUCKET)" > AWS_S3_BUCKET -# echo "$(GITCOMMIT)" > GITCOMMIT - docker build -t "$(DOCKER_DOCS_IMAGE)" . diff --git a/vendor/github.com/docker/distribution/docs/apache.md b/vendor/github.com/docker/distribution/docs/apache.md deleted file mode 100644 index f694ca3e2e..0000000000 --- a/vendor/github.com/docker/distribution/docs/apache.md +++ /dev/null @@ -1,213 +0,0 @@ - - -# Authenticating proxy with apache - -## Use-case - -People already relying on an apache proxy to authenticate their users to other services might want to leverage it and have Registry communications tunneled through the same pipeline. - -Usually, that includes enterprise setups using LDAP/AD on the backend and a SSO mechanism fronting their internal http portal. - -### Alternatives - -If you just want authentication for your registry, and are happy maintaining users access separately, you should really consider sticking with the native [basic auth registry feature](deploying.md#native-basic-auth). - -### Solution - -With the method presented here, you implement basic authentication for docker engines in a reverse proxy that sits in front of your registry. - -While we use a simple htpasswd file as an example, any other apache authentication backend should be fairly easy to implement once you are done with the example. - -We also implement push restriction (to a limited user group) for the sake of the example. Again, you should modify this to fit your mileage. - -### Gotchas - -While this model gives you the ability to use whatever authentication backend you want through the secondary authentication mechanism implemented inside your proxy, it also requires that you move TLS termination from the Registry to the proxy itself. - -Furthermore, introducing an extra http layer in your communication pipeline will make it more complex to deploy, maintain, and debug, and will possibly create issues. - -## Setting things up - -Read again [the requirements](recipes.md#requirements). - -Ready? - -Run the following script: - -``` -mkdir -p auth -mkdir -p data - -# This is the main apache configuration you will use -cat < auth/httpd.conf -LoadModule headers_module modules/mod_headers.so - -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule access_compat_module modules/mod_access_compat.so - -LoadModule log_config_module modules/mod_log_config.so - -LoadModule ssl_module modules/mod_ssl.so - -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_http_module modules/mod_proxy_http.so - -LoadModule unixd_module modules/mod_unixd.so - - - SSLRandomSeed startup builtin - SSLRandomSeed connect builtin - - - - User daemon - Group daemon - - -ServerAdmin you@example.com - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - - CustomLog /proc/self/fd/1 common - - -ServerRoot "/usr/local/apache2" - -Listen 5043 - - - AllowOverride none - Require all denied - - - - - ServerName myregistrydomain.com - - SSLEngine on - SSLCertificateFile /usr/local/apache2/conf/domain.crt - SSLCertificateKeyFile /usr/local/apache2/conf/domain.key - - ## SSL settings recommandation from: https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html - # Anti CRIME - SSLCompression off - - # POODLE and other stuff - SSLProtocol all -SSLv2 -SSLv3 -TLSv1 - - # Secure cypher suites - SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH - SSLHonorCipherOrder on - - Header always set "Docker-Distribution-Api-Version" "registry/2.0" - Header onsuccess set "Docker-Distribution-Api-Version" "registry/2.0" - RequestHeader set X-Forwarded-Proto "https" - - ProxyRequests off - ProxyPreserveHost on - - # no proxy for /error/ (Apache HTTPd errors messages) - ProxyPass /error/ ! - - ProxyPass /v2 http://registry:5000/v2 - ProxyPassReverse /v2 http://registry:5000/v2 - - - Order deny,allow - Allow from all - AuthName "Registry Authentication" - AuthType basic - AuthUserFile "/usr/local/apache2/conf/httpd.htpasswd" - AuthGroupFile "/usr/local/apache2/conf/httpd.groups" - - # Read access to authentified users - - Require valid-user - - - # Write access to docker-deployer only - - Require group pusher - - - - - -EOF - -# Now, create a password file for "testuser" and "testpassword" -docker run --entrypoint htpasswd httpd:2.4 -Bbn testuser testpassword > auth/httpd.htpasswd -# Create another one for "testuserpush" and "testpasswordpush" -docker run --entrypoint htpasswd httpd:2.4 -Bbn testuserpush testpasswordpush >> auth/httpd.htpasswd - -# Create your group file -echo "pusher: testuserpush" > auth/httpd.groups - -# Copy over your certificate files -cp domain.crt auth -cp domain.key auth - -# Now create your compose file - -cat < docker-compose.yml -apache: - image: "httpd:2.4" - hostname: myregistrydomain.com - ports: - - 5043:5043 - links: - - registry:registry - volumes: - - `pwd`/auth:/usr/local/apache2/conf - -registry: - image: registry:2 - ports: - - 127.0.0.1:5000:5000 - volumes: - - `pwd`/data:/var/lib/registry - -EOF -``` - -## Starting and stopping - -Now, start your stack: - - docker-compose up -d - -Login with a "push" authorized user (using `testuserpush` and `testpasswordpush`), then tag and push your first image: - - docker login myregistrydomain.com:5043 - docker tag ubuntu myregistrydomain.com:5043/test - docker push myregistrydomain.com:5043/test - -Now, login with a "pull-only" user (using `testuser` and `testpassword`), then pull back the image: - - docker login myregistrydomain.com:5043 - docker pull myregistrydomain.com:5043/test - -Verify that the "pull-only" can NOT push: - - docker push myregistrydomain.com:5043/test diff --git a/vendor/github.com/docker/distribution/docs/architecture.md b/vendor/github.com/docker/distribution/docs/architecture.md deleted file mode 100644 index 3925176087..0000000000 --- a/vendor/github.com/docker/distribution/docs/architecture.md +++ /dev/null @@ -1,54 +0,0 @@ - - -# Architecture - -## Design -**TODO(stevvooe):** Discuss the architecture of the registry, internally and externally, in a few different deployment scenarios. - -### Eventual Consistency - -> **NOTE:** This section belongs somewhere, perhaps in a design document. We -> are leaving this here so the information is not lost. - -Running the registry on eventually consistent backends has been part of the -design from the beginning. This section covers some of the approaches to -dealing with this reality. - -There are a few classes of issues that we need to worry about when -implementing something on top of the storage drivers: - -1. Read-After-Write consistency (see this [article on - s3](http://shlomoswidler.com/2009/12/read-after-write-consistency-in-amazon.html)). -2. [Write-Write Conflicts](http://en.wikipedia.org/wiki/Write%E2%80%93write_conflict). - -In reality, the registry must worry about these kinds of errors when doing the -following: - -1. Accepting data into a temporary upload file may not have latest data block - yet (read-after-write). -2. Moving uploaded data into its blob location (write-write race). -3. Modifying the "current" manifest for given tag (write-write race). -4. A whole slew of operations around deletes (read-after-write, delete-write - races, garbage collection, etc.). - -The backend path layout employs a few techniques to avoid these problems: - -1. Large writes are done to private upload directories. This alleviates most - of the corruption potential under multiple writers by avoiding multiple - writers. -2. Constraints in storage driver implementations, such as support for writing - after the end of a file to extend it. -3. Digest verification to avoid data corruption. -4. Manifest files are stored by digest and cannot change. -5. All other non-content files (links, hashes, etc.) are written as an atomic - unit. Anything that requires additions and deletions is broken out into - separate "files". Last writer still wins. - -Unfortunately, one must play this game when trying to build something like -this on top of eventually consistent storage systems. If we run into serious -problems, we can wrap the storagedrivers in a shared consistency layer but -that would increase complexity and hinder registry cluster performance. diff --git a/vendor/github.com/docker/distribution/docs/building.md b/vendor/github.com/docker/distribution/docs/building.md deleted file mode 100644 index 126a455a33..0000000000 --- a/vendor/github.com/docker/distribution/docs/building.md +++ /dev/null @@ -1,126 +0,0 @@ - - -# Building the registry source - -## Use-case - -This is useful if you intend to actively work on the registry. - -### Alternatives - -Most people should use the [official Registry docker image](https://hub.docker.com/r/library/registry/). - -People looking for advanced operational use cases might consider rolling their own image with a custom Dockerfile inheriting `FROM registry:2`. - -OS X users who want to run natively can do so following [the instructions here](osx-setup-guide.md). - -### Gotchas - -You are expected to know your way around with go & git. - -If you are a casual user with no development experience, and no preliminary knowledge of go, building from source is probably not a good solution for you. - -## Build the development environment - -The first prerequisite of properly building distribution targets is to have a Go -development environment setup. Please follow [How to Write Go Code](https://golang.org/doc/code.html) -for proper setup. If done correctly, you should have a GOROOT and GOPATH set in the -environment. - -If a Go development environment is setup, one can use `go get` to install the -`registry` command from the current latest: - - go get github.com/docker/distribution/cmd/registry - -The above will install the source repository into the `GOPATH`. - -Now create the directory for the registry data (this might require you to set permissions properly) - - mkdir -p /var/lib/registry - -... or alternatively `export REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere` if you want to store data into another location. - -The `registry` -binary can then be run with the following: - - $ $GOPATH/bin/registry --version - $GOPATH/bin/registry github.com/docker/distribution v2.0.0-alpha.1+unknown - -> __NOTE:__ While you do not need to use `go get` to checkout the distribution -> project, for these build instructions to work, the project must be checked -> out in the correct location in the `GOPATH`. This should almost always be -> `$GOPATH/src/github.com/docker/distribution`. - -The registry can be run with the default config using the following -incantation: - - $ $GOPATH/bin/registry serve $GOPATH/src/github.com/docker/distribution/cmd/registry/config-example.yml - INFO[0000] endpoint local-5003 disabled, skipping app.id=34bbec38-a91a-494a-9a3f-b72f9010081f version=v2.0.0-alpha.1+unknown - INFO[0000] endpoint local-8083 disabled, skipping app.id=34bbec38-a91a-494a-9a3f-b72f9010081f version=v2.0.0-alpha.1+unknown - INFO[0000] listening on :5000 app.id=34bbec38-a91a-494a-9a3f-b72f9010081f version=v2.0.0-alpha.1+unknown - INFO[0000] debug server listening localhost:5001 - -If it is working, one should see the above log messages. - -### Repeatable Builds - -For the full development experience, one should `cd` into -`$GOPATH/src/github.com/docker/distribution`. From there, the regular `go` -commands, such as `go test`, should work per package (please see -[Developing](#developing) if they don't work). - -A `Makefile` has been provided as a convenience to support repeatable builds. -Please install the following into `GOPATH` for it to work: - - go get github.com/tools/godep github.com/golang/lint/golint - -**TODO(stevvooe):** Add a `make setup` command to Makefile to run this. Have to think about how to interact with Godeps properly. - -Once these commands are available in the `GOPATH`, run `make` to get a full -build: - - $ make - + clean - + fmt - + vet - + lint - + build - github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar - github.com/Sirupsen/logrus - github.com/docker/libtrust - ... - github.com/yvasiyarov/gorelic - github.com/docker/distribution/registry/handlers - github.com/docker/distribution/cmd/registry - + test - ... - ok github.com/docker/distribution/digest 7.875s - ok github.com/docker/distribution/manifest 0.028s - ok github.com/docker/distribution/notifications 17.322s - ? github.com/docker/distribution/registry [no test files] - ok github.com/docker/distribution/registry/api/v2 0.101s - ? github.com/docker/distribution/registry/auth [no test files] - ok github.com/docker/distribution/registry/auth/silly 0.011s - ... - + /Users/sday/go/src/github.com/docker/distribution/bin/registry - + /Users/sday/go/src/github.com/docker/distribution/bin/registry-api-descriptor-template - + binaries - -The above provides a repeatable build using the contents of the vendored -Godeps directory. This includes formatting, vetting, linting, building, -testing and generating tagged binaries. We can verify this worked by running -the registry binary generated in the "./bin" directory: - - $ ./bin/registry -version - ./bin/registry github.com/docker/distribution v2.0.0-alpha.2-80-g16d8b2c.m - -### Optional build tags - -Optional [build tags](http://golang.org/pkg/go/build/) can be provided using -the environment variable `DOCKER_BUILDTAGS`. diff --git a/vendor/github.com/docker/distribution/docs/compatibility.md b/vendor/github.com/docker/distribution/docs/compatibility.md deleted file mode 100644 index 9a7bdd42b9..0000000000 --- a/vendor/github.com/docker/distribution/docs/compatibility.md +++ /dev/null @@ -1,81 +0,0 @@ - - -# Registry Compatibility - -## Synopsis -*If a manifest is pulled by _digest_ from a registry 2.3 with Docker Engine 1.9 -and older, and the manifest was pushed with Docker Engine 1.10, a security check -will cause the Engine to receive a manifest it cannot use and the pull will fail.* - -## Registry Manifest Support - -Historically, the registry has supported a [single manifest type](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-1.md) -known as _Schema 1_. - -With the move toward multiple architecture images the distribution project -introduced two new manifest types: Schema 2 manifests and manifest lists. The -registry 2.3 supports all three manifest types and in order to be compatible -with older Docker engines will, in certain cases, do an on-the-fly -transformation of a manifest before serving the JSON in the response. - -This conversion has some implications for pulling manifests by digest and this -document enumerate these implications. - - -## Content Addressable Storage (CAS) - -Manifests are stored and retrieved in the registry by keying off a digest -representing a hash of the contents. One of the advantages provided by CAS is -security: if the contents are changed, then the digest will no longer match. -This prevents any modification of the manifest by a MITM attack or an untrusted -third party. - -When a manifest is stored by the registry, this digest is returned in the HTTP -response headers and, if events are configured, delivered within the event. The -manifest can either be retrieved by the tag, or this digest. - -For registry versions 2.2.1 and below, the registry will always store and -serve _Schema 1_ manifests. The Docker Engine 1.10 will first -attempt to send a _Schema 2_ manifest, falling back to sending a -Schema 1 type manifest when it detects that the registry does not -support the new version. - - -## Registry v2.3 - -### Manifest Push with Docker 1.9 and Older - -The Docker Engine will construct a _Schema 1_ manifest which the -registry will persist to disk. - -When the manifest is pulled by digest or tag with any docker version, a -_Schema 1_ manifest will be returned. - -### Manifest Push with Docker 1.10 - -The docker engine will construct a _Schema 2_ manifest which the -registry will persist to disk. - -When the manifest is pulled by digest or tag with Docker Engine 1.10, a -_Schema 2_ manifest will be returned. The Docker Engine 1.10 -understands the new manifest format. - -When the manifest is pulled by *tag* with Docker Engine 1.9 and older, the -manifest is converted on-the-fly to _Schema 1_ and sent in the -response. The Docker Engine 1.9 is compatible with this older format. - -*When the manifest is pulled by _digest_ with Docker Engine 1.9 and older, the -same rewriting process will not happen in the registry. If this were to happen -the digest would no longer match the hash of the manifest and would violate the -constraints of CAS.* - -For this reason if a manifest is pulled by _digest_ from a registry 2.3 with Docker -Engine 1.9 and older, and the manifest was pushed with Docker Engine 1.10, a -security check will cause the Engine to receive a manifest it cannot use and the -pull will fail. \ No newline at end of file diff --git a/vendor/github.com/docker/distribution/docs/configuration.md b/vendor/github.com/docker/distribution/docs/configuration.md deleted file mode 100644 index f9b89febcd..0000000000 --- a/vendor/github.com/docker/distribution/docs/configuration.md +++ /dev/null @@ -1,1843 +0,0 @@ - - -# Registry Configuration Reference - -The Registry configuration is based on a YAML file, detailed below. While it comes with sane default values out of the box, you are heavily encouraged to review it exhaustively before moving your systems to production. - -## Override specific configuration options - -In a typical setup where you run your Registry from the official image, you can specify a configuration variable from the environment by passing `-e` arguments to your `docker run` stanza, or from within a Dockerfile using the `ENV` instruction. - -To override a configuration option, create an environment variable named -`REGISTRY_variable` where *`variable`* is the name of the configuration option -and the `_` (underscore) represents indention levels. For example, you can -configure the `rootdirectory` of the `filesystem` storage backend: - - storage: - filesystem: - rootdirectory: /var/lib/registry - -To override this value, set an environment variable like this: - - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere - -This variable overrides the `/var/lib/registry` value to the `/somewhere` -directory. - ->**NOTE**: It is highly recommended to create a base configuration file with which environment variables can be used to tweak individual values. Overriding configuration sections with environment variables is not recommended. - -## Overriding the entire configuration file - -If the default configuration is not a sound basis for your usage, or if you are having issues overriding keys from the environment, you can specify an alternate YAML configuration file by mounting it as a volume in the container. - -Typically, create a new configuration file from scratch, and call it `config.yml`, then: - - docker run -d -p 5000:5000 --restart=always --name registry \ - -v `pwd`/config.yml:/etc/docker/registry/config.yml \ - registry:2 - -You can (and probably should) use [this as a starting point](https://github.com/docker/distribution/blob/master/cmd/registry/config-example.yml). - -## List of configuration options - -This section lists all the registry configuration options. Some options in -the list are mutually exclusive. So, make sure to read the detailed reference -information about each option that appears later in this page. - - version: 0.1 - log: - level: debug - formatter: text - fields: - service: registry - environment: staging - hooks: - - type: mail - disabled: true - levels: - - panic - options: - smtp: - addr: mail.example.com:25 - username: mailuser - password: password - insecure: true - from: sender@example.com - to: - - errors@example.com - loglevel: debug # deprecated: use "log" - storage: - filesystem: - rootdirectory: /var/lib/registry - azure: - accountname: accountname - accountkey: base64encodedaccountkey - container: containername - gcs: - bucket: bucketname - keyfile: /path/to/keyfile - rootdirectory: /gcs/object/name/prefix - chunksize: 5242880 - s3: - accesskey: awsaccesskey - secretkey: awssecretkey - region: us-west-1 - regionendpoint: http://myobjects.local - bucket: bucketname - encrypt: true - keyid: mykeyid - secure: true - v4auth: true - chunksize: 5242880 - rootdirectory: /s3/object/name/prefix - swift: - username: username - password: password - authurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth - tenant: tenantname - tenantid: tenantid - domain: domain name for Openstack Identity v3 API - domainid: domain id for Openstack Identity v3 API - insecureskipverify: true - region: fr - container: containername - rootdirectory: /swift/object/name/prefix - oss: - accesskeyid: accesskeyid - accesskeysecret: accesskeysecret - region: OSS region name - endpoint: optional endpoints - internal: optional internal endpoint - bucket: OSS bucket - encrypt: optional data encryption setting - secure: optional ssl setting - chunksize: optional size valye - rootdirectory: optional root directory - inmemory: # This driver takes no parameters - delete: - enabled: false - redirect: - disable: false - cache: - blobdescriptor: redis - maintenance: - uploadpurging: - enabled: true - age: 168h - interval: 24h - dryrun: false - readonly: - enabled: false - auth: - silly: - realm: silly-realm - service: silly-service - token: - realm: token-realm - service: token-service - issuer: registry-token-issuer - rootcertbundle: /root/certs/bundle - htpasswd: - realm: basic-realm - path: /path/to/htpasswd - middleware: - registry: - - name: ARegistryMiddleware - options: - foo: bar - repository: - - name: ARepositoryMiddleware - options: - foo: bar - storage: - - name: cloudfront - options: - baseurl: https://my.cloudfronted.domain.com/ - privatekey: /path/to/pem - keypairid: cloudfrontkeypairid - duration: 3000s - reporting: - bugsnag: - apikey: bugsnagapikey - releasestage: bugsnagreleasestage - endpoint: bugsnagendpoint - newrelic: - licensekey: newreliclicensekey - name: newrelicname - verbose: true - http: - addr: localhost:5000 - prefix: /my/nested/registry/ - host: https://myregistryaddress.org:5000 - secret: asecretforlocaldevelopment - relativeurls: false - tls: - certificate: /path/to/x509/public - key: /path/to/x509/private - clientcas: - - /path/to/ca.pem - - /path/to/another/ca.pem - debug: - addr: localhost:5001 - headers: - X-Content-Type-Options: [nosniff] - notifications: - endpoints: - - name: alistener - disabled: false - url: https://my.listener.com/event - headers: - timeout: 500 - threshold: 5 - backoff: 1000 - redis: - addr: localhost:6379 - password: asecret - db: 0 - dialtimeout: 10ms - readtimeout: 10ms - writetimeout: 10ms - pool: - maxidle: 16 - maxactive: 64 - idletimeout: 300s - health: - storagedriver: - enabled: true - interval: 10s - threshold: 3 - file: - - file: /path/to/checked/file - interval: 10s - http: - - uri: http://server.to.check/must/return/200 - headers: - Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==] - statuscode: 200 - timeout: 3s - interval: 10s - threshold: 3 - tcp: - - addr: redis-server.domain.com:6379 - timeout: 3s - interval: 10s - threshold: 3 - proxy: - remoteurl: https://registry-1.docker.io - username: [username] - password: [password] - compatibility: - schema1: - signingkeyfile: /etc/registry/key.json - disablesignaturestore: true - -In some instances a configuration option is **optional** but it contains child -options marked as **required**. This indicates that you can omit the parent with -all its children. However, if the parent is included, you must also include all -the children marked **required**. - -## version - - version: 0.1 - -The `version` option is **required**. It specifies the configuration's version. -It is expected to remain a top-level field, to allow for a consistent version -check before parsing the remainder of the configuration file. - -## log - -The `log` subsection configures the behavior of the logging system. The logging -system outputs everything to stdout. You can adjust the granularity and format -with this configuration section. - - log: - level: debug - formatter: text - fields: - service: registry - environment: staging - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- level - - no - - Sets the sensitivity of logging output. Permitted values are - error, warn, info and - debug. The default is info. -
- formatter - - no - - This selects the format of logging output. The format primarily affects how keyed - attributes for a log line are encoded. Options are text, json or - logstash. The default is text. -
- fields - - no - - A map of field names to values. These are added to every log line for - the context. This is useful for identifying log messages source after - being mixed in other systems. -
- -## hooks - - hooks: - - type: mail - levels: - - panic - options: - smtp: - addr: smtp.sendhost.com:25 - username: sendername - password: password - insecure: true - from: name@sendhost.com - to: - - name@receivehost.com - -The `hooks` subsection configures the logging hooks' behavior. This subsection -includes a sequence handler which you can use for sending mail, for example. -Refer to `loglevel` to configure the level of messages printed. - -## loglevel - -> **DEPRECATED:** Please use [log](#log) instead. - - loglevel: debug - -Permitted values are `error`, `warn`, `info` and `debug`. The default is -`info`. - -## storage - - storage: - filesystem: - rootdirectory: /var/lib/registry - azure: - accountname: accountname - accountkey: base64encodedaccountkey - container: containername - gcs: - bucket: bucketname - keyfile: /path/to/keyfile - rootdirectory: /gcs/object/name/prefix - s3: - accesskey: awsaccesskey - secretkey: awssecretkey - region: us-west-1 - regionendpoint: http://myobjects.local - bucket: bucketname - encrypt: true - keyid: mykeyid - secure: true - v4auth: true - chunksize: 5242880 - rootdirectory: /s3/object/name/prefix - swift: - username: username - password: password - authurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth - tenant: tenantname - tenantid: tenantid - domain: domain name for Openstack Identity v3 API - domainid: domain id for Openstack Identity v3 API - insecureskipverify: true - region: fr - container: containername - rootdirectory: /swift/object/name/prefix - oss: - accesskeyid: accesskeyid - accesskeysecret: accesskeysecret - region: OSS region name - endpoint: optional endpoints - internal: optional internal endpoint - bucket: OSS bucket - encrypt: optional data encryption setting - secure: optional ssl setting - chunksize: optional size valye - rootdirectory: optional root directory - inmemory: - delete: - enabled: false - cache: - blobdescriptor: inmemory - maintenance: - uploadpurging: - enabled: true - age: 168h - interval: 24h - dryrun: false - redirect: - disable: false - -The storage option is **required** and defines which storage backend is in use. -You must configure one backend; if you configure more, the registry returns an error. You can choose any of these backend storage drivers: - -| Storage driver | Description -| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `filesystem` | Uses the local disk to store registry files. It is ideal for development and may be appropriate for some small-scale production applications. See the [driver's reference documentation](storage-drivers/filesystem.md). | -| `azure` | Uses Microsoft's Azure Blob Storage. See the [driver's reference documentation](storage-drivers/azure.md). | -| `gcs` | Uses Google Cloud Storage. See the [driver's reference documentation](storage-drivers/gcs.md). | -| `s3` | Uses Amazon's Simple Storage Service (S3) and compatible Storage Services. See the [driver's reference documentation](storage-drivers/s3.md). | -| `swift` | Uses Openstack Swift object storage. See the [driver's reference documentation](storage-drivers/swift.md). | -| `oss` | Uses Aliyun OSS for object storage. See the [driver's reference documentation](storage-drivers/oss.md). | - -For purely tests purposes, you can use the [`inmemory` storage -driver](storage-drivers/inmemory.md). If you would like to run a registry from -volatile memory, use the [`filesystem` driver](storage-drivers/filesystem.md) on -a ramdisk. - -If you are deploying a registry on Windows, be aware that a Windows volume -mounted from the host is not recommended. Instead, you can use a S3, or Azure, -backing data-store. If you do use a Windows volume, you must ensure that the -`PATH` to the mount point is within Windows' `MAX_PATH` limits (typically 255 -characters). Failure to do so can result in the following error message: - - mkdir /XXX protocol error and your registry will not function properly. - -### Maintenance - -Currently upload purging and read-only mode are the only maintenance functions available. -These and future maintenance functions which are related to storage can be configured under -the maintenance section. - -### Upload Purging - -Upload purging is a background process that periodically removes orphaned files from the upload -directories of the registry. Upload purging is enabled by default. To -configure upload directory purging, the following parameters -must be set. - - -| Parameter | Required | Description - --------- | -------- | ----------- -`enabled` | yes | Set to true to enable upload purging. Default=true. | -`age` | yes | Upload directories which are older than this age will be deleted. Default=168h (1 week) -`interval` | yes | The interval between upload directory purging. Default=24h. -`dryrun` | yes | dryrun can be set to true to obtain a summary of what directories will be deleted. Default=false. - -Note: `age` and `interval` are strings containing a number with optional fraction and a unit suffix: e.g. 45m, 2h10m, 168h (1 week). - -### Read-only mode - -If the `readonly` section under `maintenance` has `enabled` set to `true`, -clients will not be allowed to write to the registry. This mode is useful to -temporarily prevent writes to the backend storage so a garbage collection pass -can be run. Before running garbage collection, the registry should be -restarted with readonly's `enabled` set to true. After the garbage collection -pass finishes, the registry may be restarted again, this time with `readonly` -removed from the configuration (or set to false). - -### delete - -Use the `delete` subsection to enable the deletion of image blobs and manifests -by digest. It defaults to false, but it can be enabled by writing the following -on the configuration file: - - delete: - enabled: true - -### cache - -Use the `cache` subsection to enable caching of data accessed in the storage -backend. Currently, the only available cache provides fast access to layer -metadata. This, if configured, uses the `blobdescriptor` field. - -You can set `blobdescriptor` field to `redis` or `inmemory`. The `redis` value uses -a Redis pool to cache layer metadata. The `inmemory` value uses an in memory -map. - ->**NOTE**: Formerly, `blobdescriptor` was known as `layerinfo`. While these ->are equivalent, `layerinfo` has been deprecated, in favor or ->`blobdescriptor`. - -### redirect - -The `redirect` subsection provides configuration for managing redirects from -content backends. For backends that support it, redirecting is enabled by -default. Certain deployment scenarios may prefer to route all data through the -Registry, rather than redirecting to the backend. This may be more efficient -when using a backend that is not co-located or when a registry instance is -doing aggressive caching. - -Redirects can be disabled by adding a single flag `disable`, set to `true` -under the `redirect` section: - - redirect: - disable: true - - -## auth - - auth: - silly: - realm: silly-realm - service: silly-service - token: - realm: token-realm - service: token-service - issuer: registry-token-issuer - rootcertbundle: /root/certs/bundle - htpasswd: - realm: basic-realm - path: /path/to/htpasswd - -The `auth` option is **optional**. There are -currently 3 possible auth providers, `silly`, `token` and `htpasswd`. You can configure only -one `auth` provider. - -### silly - -The `silly` auth is only for development purposes. It simply checks for the -existence of the `Authorization` header in the HTTP request. It has no regard for -the header's value. If the header does not exist, the `silly` auth responds with a -challenge response, echoing back the realm, service, and scope that access was -denied for. - -The following values are used to configure the response: - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- realm - - yes - - The realm in which the registry server authenticates. -
- service - - yes - - The service being authenticated. -
- - - -### token - -Token based authentication allows the authentication system to be decoupled from -the registry. It is a well established authentication paradigm with a high -degree of security. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- realm - - yes - - The realm in which the registry server authenticates. -
- service - - yes - - The service being authenticated. -
- issuer - - yes - -The name of the token issuer. The issuer inserts this into -the token so it must match the value configured for the issuer. -
- rootcertbundle - - yes - -The absolute path to the root certificate bundle. This bundle contains the -public part of the certificates that is used to sign authentication tokens. -
- -For more information about Token based authentication configuration, see the [specification](spec/auth/token.md). - -### htpasswd - -The _htpasswd_ authentication backed allows one to configure basic auth using an -[Apache htpasswd -file](https://httpd.apache.org/docs/2.4/programs/htpasswd.html). Only -[`bcrypt`](http://en.wikipedia.org/wiki/Bcrypt) format passwords are supported. -Entries with other hash types will be ignored. The htpasswd file is loaded once, -at startup. If the file is invalid, the registry will display an error and will -not start. - -> __WARNING:__ This authentication scheme should only be used with TLS -> configured, since basic authentication sends passwords as part of the http -> header. - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- realm - - yes - - The realm in which the registry server authenticates. -
- path - - yes - - Path to htpasswd file to load at startup. -
- -## middleware - -The `middleware` option is **optional**. Use this option to inject middleware at -named hook points. All middleware must implement the same interface as the -object they're wrapping. This means a registry middleware must implement the -`distribution.Namespace` interface, repository middleware must implement -`distribution.Repository`, and storage middleware must implement -`driver.StorageDriver`. - -Currently only one middleware, `cloudfront`, a storage middleware, is supported -in the registry implementation. - - middleware: - registry: - - name: ARegistryMiddleware - options: - foo: bar - repository: - - name: ARepositoryMiddleware - options: - foo: bar - storage: - - name: cloudfront - options: - baseurl: https://my.cloudfronted.domain.com/ - privatekey: /path/to/pem - keypairid: cloudfrontkeypairid - duration: 3000s - -Each middleware entry has `name` and `options` entries. The `name` must -correspond to the name under which the middleware registers itself. The -`options` field is a map that details custom configuration required to -initialize the middleware. It is treated as a `map[string]interface{}`. As such, -it supports any interesting structures desired, leaving it up to the middleware -initialization function to best determine how to handle the specific -interpretation of the options. - -### cloudfront - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- baseurl - - yes - - SCHEME://HOST[/PATH] at which Cloudfront is served. -
- privatekey - - yes - - Private Key for Cloudfront provided by AWS. -
- keypairid - - yes - - Key pair ID provided by AWS. -
- duration - - no - - Specify a `duration` by providing an integer and a unit. Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. For example, `3000s` is a valid duration; there should be no space between the integer and unit. If you do not specify a `duration` or specify an integer without a time unit, this defaults to 20 minutes. -
- - -## reporting - - reporting: - bugsnag: - apikey: bugsnagapikey - releasestage: bugsnagreleasestage - endpoint: bugsnagendpoint - newrelic: - licensekey: newreliclicensekey - name: newrelicname - verbose: true - -The `reporting` option is **optional** and configures error and metrics -reporting tools. At the moment only two services are supported, [New -Relic](http://newrelic.com/) and [Bugsnag](http://bugsnag.com), a valid -configuration may contain both. - -### bugsnag - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- apikey - - yes - - API Key provided by Bugsnag -
- releasestage - - no - - Tracks where the registry is deployed, for example, - production,staging, or - development. -
- endpoint - - no - - Specify the enterprise Bugsnag endpoint. -
- - -### newrelic - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- licensekey - - yes - - License key provided by New Relic. -
- name - - no - - New Relic application name. -
- verbose - - no - - Enable New Relic debugging output on stdout. -
- -## http - - http: - addr: localhost:5000 - net: tcp - prefix: /my/nested/registry/ - host: https://myregistryaddress.org:5000 - secret: asecretforlocaldevelopment - relativeurls: false - tls: - certificate: /path/to/x509/public - key: /path/to/x509/private - clientcas: - - /path/to/ca.pem - - /path/to/another/ca.pem - debug: - addr: localhost:5001 - headers: - X-Content-Type-Options: [nosniff] - -The `http` option details the configuration for the HTTP server that hosts the registry. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- addr - - yes - - The address for which the server should accept connections. The form depends on a network type (see net option): - HOST:PORT for tcp and FILE for a unix socket. -
- net - - no - - The network which is used to create a listening socket. Known networks are unix and tcp. - The default empty value means tcp. -
- prefix - - no - -If the server does not run at the root path use this value to specify the -prefix. The root path is the section before v2. It -should have both preceding and trailing slashes, for example /path/. -
- host - - no - -This parameter specifies an externally-reachable address for the registry, as a -fully qualified URL. If present, it is used when creating generated URLs. -Otherwise, these URLs are derived from client requests. -
- secret - - yes - -A random piece of data. This is used to sign state that may be stored with the -client to protect against tampering. For production environments you should generate a -random piece of data using a cryptographically secure random generator. This -configuration parameter may be omitted, in which case the registry will automatically -generate a secret at launch. -

-WARNING: If you are building a cluster of registries behind a load balancer, you MUST -ensure the secret is the same for all registries. -

- relativeurls - - no - - Specifies that the registry should return relative URLs in Location headers. - The client is responsible for resolving the correct URL. This option is not - compatible with Docker 1.7 and earlier. -
- - -### tls - -The `tls` struct within `http` is **optional**. Use this to configure TLS -for the server. If you already have a server such as Nginx or Apache running on -the same host as the registry, you may prefer to configure TLS termination there -and proxy connections to the registry server. - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- certificate - - yes - - Absolute path to x509 cert file -
- key - - yes - - Absolute path to x509 private key file. -
- clientcas - - no - - An array of absolute paths to a x509 CA file -
- - -### debug - -The `debug` option is **optional** . Use it to configure a debug server that -can be helpful in diagnosing problems. The debug endpoint can be used for -monitoring registry metrics and health, as well as profiling. Sensitive -information may be available via the debug endpoint. Please be certain that -access to the debug endpoint is locked down in a production environment. - -The `debug` section takes a single, required `addr` parameter. This parameter -specifies the `HOST:PORT` on which the debug server should accept connections. - - -### headers - -The `headers` option is **optional** . Use it to specify headers that the HTTP -server should include in responses. This can be used for security headers such -as `Strict-Transport-Security`. - -The `headers` option should contain an option for each header to include, where -the parameter name is the header's name, and the parameter value a list of the -header's payload values. - -Including `X-Content-Type-Options: [nosniff]` is recommended, so that browsers -will not interpret content as HTML if they are directed to load a page from the -registry. This header is included in the example configuration files. - - -## notifications - - notifications: - endpoints: - - name: alistener - disabled: false - url: https://my.listener.com/event - headers: - timeout: 500 - threshold: 5 - backoff: 1000 - -The notifications option is **optional** and currently may contain a single -option, `endpoints`. - -### endpoints - -Endpoints is a list of named services (URLs) that can accept event notifications. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- name - - yes - -A human readable name for the service. -
- disabled - - no - -A boolean to enable/disable notifications for a service. -
- url - - yes - -The URL to which events should be published. -
- headers - - yes - - Static headers to add to each request. Each header's name should be a key - underneath headers, and each value is a list of payloads for that - header name. Note that values must always be lists. -
- timeout - - yes - - An HTTP timeout value. This field takes a positive integer and an optional - suffix indicating the unit of time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. -
- threshold - - yes - - An integer specifying how long to wait before backing off a failure. -
- backoff - - yes - - How long the system backs off before retrying. This field takes a positive - integer and an optional suffix indicating the unit of time. Possible units - are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. -
- - -## redis - - redis: - addr: localhost:6379 - password: asecret - db: 0 - dialtimeout: 10ms - readtimeout: 10ms - writetimeout: 10ms - pool: - maxidle: 16 - maxactive: 64 - idletimeout: 300s - -Declare parameters for constructing the redis connections. Registry instances -may use the Redis instance for several applications. The current purpose is -caching information about immutable blobs. Most of the options below control -how the registry connects to redis. You can control the pool's behavior -with the [pool](#pool) subsection. - -It's advisable to configure Redis itself with the **allkeys-lru** eviction policy -as the registry does not set an expire value on keys. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- addr - - yes - - Address (host and port) of redis instance. -
- password - - no - - A password used to authenticate to the redis instance. -
- db - - no - - Selects the db for each connection. -
- dialtimeout - - no - - Timeout for connecting to a redis instance. -
- readtimeout - - no - - Timeout for reading from redis connections. -
- writetimeout - - no - - Timeout for writing to redis connections. -
- - -### pool - - pool: - maxidle: 16 - maxactive: 64 - idletimeout: 300s - -Configure the behavior of the Redis connection pool. - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- maxidle - - no - - Sets the maximum number of idle connections. -
- maxactive - - no - - sets the maximum number of connections that should - be opened before blocking a connection request. -
- idletimeout - - no - - sets the amount time to wait before closing - inactive connections. -
- -## health - - health: - storagedriver: - enabled: true - interval: 10s - threshold: 3 - file: - - file: /path/to/checked/file - interval: 10s - http: - - uri: http://server.to.check/must/return/200 - headers: - Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==] - statuscode: 200 - timeout: 3s - interval: 10s - threshold: 3 - tcp: - - addr: redis-server.domain.com:6379 - timeout: 3s - interval: 10s - threshold: 3 - -The health option is **optional**. It may contain preferences for a periodic -health check on the storage driver's backend storage, and optional periodic -checks on local files, HTTP URIs, and/or TCP servers. The results of the health -checks are available at /debug/health on the debug HTTP server if the debug -HTTP server is enabled (see http section). - -### storagedriver - -storagedriver contains options for a health check on the configured storage -driver's backend storage. enabled must be set to true for this health check to -be active. - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- enabled - - yes - -"true" to enable the storage driver health check or "false" to disable it. -
- interval - - no - - The length of time to wait between repetitions of the check. This field - takes a positive integer and an optional suffix indicating the unit of - time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. - The default value is 10 seconds if this field is omitted. -
- threshold - - no - - An integer specifying the number of times the check must fail before the - check triggers an unhealthy state. If this filed is not specified, a - single failure will trigger an unhealthy state. -
- -### file - -file is a list of paths to be periodically checked for the existence of a file. -If a file exists at the given path, the health check will fail. This can be -used as a way of bringing a registry out of rotation by creating a file. - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- file - - yes - -The path to check for the existence of a file. -
- interval - - no - - The length of time to wait between repetitions of the check. This field - takes a positive integer and an optional suffix indicating the unit of - time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. - The default value is 10 seconds if this field is omitted. -
- -### http - -http is a list of HTTP URIs to be periodically checked with HEAD requests. If -a HEAD request doesn't complete or returns an unexpected status code, the -health check will fail. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- uri - - yes - -The URI to check. -
- headers - - no - - Static headers to add to each request. Each header's name should be a key - underneath headers, and each value is a list of payloads for that - header name. Note that values must always be lists. -
- statuscode - - no - -Expected status code from the HTTP URI. Defaults to 200. -
- timeout - - no - - The length of time to wait before timing out the HTTP request. This field - takes a positive integer and an optional suffix indicating the unit of - time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. -
- interval - - no - - The length of time to wait between repetitions of the check. This field - takes a positive integer and an optional suffix indicating the unit of - time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. - The default value is 10 seconds if this field is omitted. -
- threshold - - no - - An integer specifying the number of times the check must fail before the - check triggers an unhealthy state. If this filed is not specified, a - single failure will trigger an unhealthy state. -
- -### tcp - -tcp is a list of TCP addresses to be periodically checked with connection -attempts. The addresses must include port numbers. If a connection attempt -fails, the health check will fail. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- addr - - yes - -The TCP address to connect to, including a port number. -
- timeout - - no - - The length of time to wait before timing out the TCP connection. This - field takes a positive integer and an optional suffix indicating the unit - of time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. -
- interval - - no - - The length of time to wait between repetitions of the check. This field - takes a positive integer and an optional suffix indicating the unit of - time. Possible units are: -
    -
  • ns (nanoseconds)
  • -
  • us (microseconds)
  • -
  • ms (milliseconds)
  • -
  • s (seconds)
  • -
  • m (minutes)
  • -
  • h (hours)
  • -
- If you omit the suffix, the system interprets the value as nanoseconds. - The default value is 10 seconds if this field is omitted. -
- threshold - - no - - An integer specifying the number of times the check must fail before the - check triggers an unhealthy state. If this filed is not specified, a - single failure will trigger an unhealthy state. -
- -## Proxy - - proxy: - remoteurl: https://registry-1.docker.io - username: [username] - password: [password] - -Proxy enables a registry to be configured as a pull through cache to the official Docker Hub. See [mirror](mirror.md) for more information. Pushing to a registry configured as a pull through cache is currently unsupported. - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- remoteurl - - yes - - The URL of the official Docker Hub -
- username - - no - - The username of the Docker Hub account -
- password - - no - - The password for the official Docker Hub account -
- -To enable pulling private repositories (e.g. `batman/robin`) a username and password for user `batman` must be specified. Note: These private repositories will be stored in the proxy cache's storage and relevant measures should be taken to protect access to this. - -## Compatibility - - compatibility: - schema1: - signingkeyfile: /etc/registry/key.json - disablesignaturestore: true - -Configure handling of older and deprecated features. Each subsection -defines a such a feature with configurable behavior. - -### Schema1 - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- signingkeyfile - - no - - The signing private key used for adding signatures to schema1 manifests. - If no signing key is provided, a new ECDSA key will be generated on - startup. -
- disablesignaturestore - - no - - Disables storage of signatures attached to schema1 manifests. By default - signatures are detached from schema1 manifests, stored, and reattached - when the manifest is requested. When this is true, the storage is disabled - and a new signature is always generated for schema1 manifests using the - schema1 signing key. Disabling signature storage will cause all newly - uploaded signatures to be discarded. Existing stored signatures will not - be removed but they will not be re-attached to the corresponding manifest. -
- -## Example: Development configuration - -The following is a simple example you can use for local development: - - version: 0.1 - log: - level: debug - storage: - filesystem: - rootdirectory: /var/lib/registry - http: - addr: localhost:5000 - secret: asecretforlocaldevelopment - debug: - addr: localhost:5001 - -The above configures the registry instance to run on port `5000`, binding to -`localhost`, with the `debug` server enabled. Registry data storage is in the -`/var/lib/registry` directory. Logging is in `debug` mode, which is the most -verbose. - -A similar simple configuration is available at -[config-example.yml](https://github.com/docker/distribution/blob/master/cmd/registry/config-example.yml). -Both are generally useful for local development. - - -## Example: Middleware configuration - -This example illustrates how to configure storage middleware in a registry. -Middleware allows the registry to serve layers via a content delivery network -(CDN). This is useful for reducing requests to the storage layer. - -Currently, the registry supports [Amazon -Cloudfront](http://aws.amazon.com/cloudfront/). You can only use Cloudfront in -conjunction with the S3 storage driver. - - - - - - - - - - - - - - - - - - -
ParameterDescription
nameThe storage middleware name. Currently cloudfront is an accepted value.
disabledSet to false to easily disable the middleware.
options: - A set of key/value options to configure the middleware. -
    -
  • baseurl: The Cloudfront base URL.
  • -
  • privatekey: The location of your AWS private key on the filesystem.
  • -
  • keypairid: The ID of your Cloudfront keypair.
  • -
  • duration: The duration in minutes for which the URL is valid. Default is 20.
  • -
-
- -The following example illustrates these values: - - middleware: - storage: - - name: cloudfront - disabled: false - options: - baseurl: http://d111111abcdef8.cloudfront.net - privatekey: /path/to/asecret.pem - keypairid: asecret - duration: 60 - - ->**Note**: Cloudfront keys exist separately to other AWS keys. See ->[the documentation on AWS credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html) ->for more information. diff --git a/vendor/github.com/docker/distribution/docs/deploying.md b/vendor/github.com/docker/distribution/docs/deploying.md deleted file mode 100644 index 1e7f5dd64b..0000000000 --- a/vendor/github.com/docker/distribution/docs/deploying.md +++ /dev/null @@ -1,232 +0,0 @@ - - -# Deploying a registry server - -You need to [install Docker version 1.6.0 or newer](https://docs.docker.com/installation/). - -## Running on localhost - -Start your registry: - - docker run -d -p 5000:5000 --restart=always --name registry registry:2 - -You can now use it with docker. - -Get any image from the hub and tag it to point to your registry: - - docker pull ubuntu && docker tag ubuntu localhost:5000/ubuntu - -... then push it to your registry: - - docker push localhost:5000/ubuntu - -... then pull it back from your registry: - - docker pull localhost:5000/ubuntu - -To stop your registry, you would: - - docker stop registry && docker rm -v registry - -## Storage - -By default, your registry data is persisted as a [docker volume](https://docs.docker.com/userguide/dockervolumes/) on the host filesystem. Properly understanding volumes is essential if you want to stick with a local filesystem storage. - -Specifically, you might want to point your volume location to a specific place in order to more easily access your registry data. To do so you can: - - docker run -d -p 5000:5000 --restart=always --name registry \ - -v `pwd`/data:/var/lib/registry \ - registry:2 - -### Alternatives - -You should usually consider using [another storage backend](https://github.com/docker/distribution/blob/master/docs/storagedrivers.md) instead of the local filesystem. Use the [storage configuration options](https://github.com/docker/distribution/blob/master/docs/configuration.md#storage) to configure an alternate storage backend. - -Using one of these will allow you to more easily scale your registry, and leverage your storage redundancy and availability features. - -## Running a domain registry - -While running on `localhost` has its uses, most people want their registry to be more widely available. To do so, the Docker engine requires you to secure it using TLS, which is conceptually very similar to configuring your web server with SSL. - -### Get a certificate - -Assuming that you own the domain `myregistrydomain.com`, and that its DNS record points to the host where you are running your registry, you first need to get a certificate from a CA. - -Create a `certs` directory: - - mkdir -p certs - -Then move and/or rename your crt file to: `certs/domain.crt`, and your key file to: `certs/domain.key`. - -Make sure you stopped your registry from the previous steps, then start your registry again with TLS enabled: - - docker run -d -p 5000:5000 --restart=always --name registry \ - -v `pwd`/certs:/certs \ - -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ - -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ - registry:2 - -You should now be able to access your registry from another docker host: - - docker pull ubuntu - docker tag ubuntu myregistrydomain.com:5000/ubuntu - docker push myregistrydomain.com:5000/ubuntu - docker pull myregistrydomain.com:5000/ubuntu - -#### Gotcha - -A certificate issuer may supply you with an *intermediate* certificate. In this case, you must combine your certificate with the intermediate's to form a *certificate bundle*. You can do this using the `cat` command: - - cat domain.crt intermediate-certificates.pem > certs/domain.crt - -### Alternatives - -While rarely advisable, you may want to use self-signed certificates instead, or use your registry in an insecure fashion. You will find instructions [here](insecure.md). - -## Load Balancing Considerations - -One may want to use a load balancer to distribute load, terminate TLS or -provide high availability. While a full load balancing setup is outside the -scope of this document, there are a few considerations that can make the process -smoother. - -The most important aspect is that a load balanced cluster of registries must -share the same resources. For the current version of the registry, this means -the following must be the same: - - - Storage Driver - - HTTP Secret - - Redis Cache (if configured) - -If any of these are different, the registry will have trouble serving requests. -As an example, if you're using the filesystem driver, all registry instances -must have access to the same filesystem root, which means they should be in -the same machine. For other drivers, such as s3 or azure, they should be -accessing the same resource, and will likely share an identical configuration. -The _HTTP Secret_ coordinates uploads, so also must be the same across -instances. Configuring different redis instances will work (at the time -of writing), but will not be optimal if the instances are not shared, causing -more requests to be directed to the backend. - -#### Important/Required HTTP-Headers -Getting the headers correct is very important. For all responses to any -request under the "/v2/" url space, the `Docker-Distribution-API-Version` -header should be set to the value "registry/2.0", even for a 4xx response. -This header allows the docker engine to quickly resolve authentication realms -and fallback to version 1 registries, if necessary. Confirming this is setup -correctly can help avoid problems with fallback. - -In the same train of thought, you must make sure you are properly sending the -`X-Forwarded-Proto`, `X-Forwarded-For` and `Host` headers to their "client-side" -values. Failure to do so usually makes the registry issue redirects to internal -hostnames or downgrading from https to http. - -A properly secured registry should return 401 when the "/v2/" endpoint is hit -without credentials. The response should include a `WWW-Authenticate` -challenge, providing guidance on how to authenticate, such as with basic auth -or a token service. If the load balancer has health checks, it is recommended -to configure it to consider a 401 response as healthy and any other as down. -This will secure your registry by ensuring that configuration problems with -authentication don't accidentally expose an unprotected registry. If you're -using a less sophisticated load balancer, such as Amazon's Elastic Load -Balancer, that doesn't allow one to change the healthy response code, health -checks can be directed at "/", which will always return a `200 OK` response. - -## Restricting access - -Except for registries running on secure local networks, registries should always implement access restrictions. - -### Native basic auth - -The simplest way to achieve access restriction is through basic authentication (this is very similar to other web servers' basic authentication mechanism). - -> **Warning**: You **cannot** use authentication with an insecure registry. You have to [configure TLS first](#running-a-domain-registry) for this to work. - -First create a password file with one entry for the user "testuser", with password "testpassword": - - mkdir auth - docker run --entrypoint htpasswd registry:2 -Bbn testuser testpassword > auth/htpasswd - -Make sure you stopped your registry from the previous step, then start it again: - - docker run -d -p 5000:5000 --restart=always --name registry \ - -v `pwd`/auth:/auth \ - -e "REGISTRY_AUTH=htpasswd" \ - -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ - -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ - -v `pwd`/certs:/certs \ - -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ - -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ - registry:2 - -You should now be able to: - - docker login myregistrydomain.com:5000 - -And then push and pull images as an authenticated user. - -#### Gotcha - -Seeing X509 errors is usually a sign you are trying to use self-signed certificates, and failed to [configure your docker daemon properly](insecure.md). - -### Alternatives - -1. You may want to leverage more advanced basic auth implementations through a proxy design, in front of the registry. You will find examples of such patterns in the [recipes list](recipes.md). - -2. Alternatively, the Registry also supports delegated authentication, redirecting users to a specific, trusted token server. That approach requires significantly more investment, and only makes sense if you want to fully configure ACLs and more control over the Registry integration into your global authorization and authentication systems. - -You will find [background information here](spec/auth/token.md), and [configuration information here](configuration.md#auth). - -Beware that you will have to implement your own authentication service for this to work, or leverage a third-party implementation. - -## Managing with Compose - -As your registry configuration grows more complex, dealing with it can quickly become tedious. - -It's highly recommended to use [Docker Compose](https://docs.docker.com/compose/) to facilitate operating your registry. - -Here is a simple `docker-compose.yml` example that condenses everything explained so far: - -``` -registry: - restart: always - image: registry:2 - ports: - - 5000:5000 - environment: - REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt - REGISTRY_HTTP_TLS_KEY: /certs/domain.key - REGISTRY_AUTH: htpasswd - REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm - volumes: - - /path/data:/var/lib/registry - - /path/certs:/certs - - /path/auth:/auth -``` - -> **Warning**: replace `/path` by whatever directory that holds your `certs` and `auth` folder from above. - -You can then start your registry with a simple - - docker-compose up -d - -## Next - -You will find more specific and advanced informations in the following sections: - - - [Configuration reference](configuration.md) - - [Working with notifications](notifications.md) - - [Advanced "recipes"](recipes.md) - - [Registry API](spec/api.md) - - [Storage driver model](storagedrivers.md) - - [Token authentication](spec/auth/token.md) diff --git a/vendor/github.com/docker/distribution/docs/garbage-collection.md b/vendor/github.com/docker/distribution/docs/garbage-collection.md deleted file mode 100644 index 688bfb253e..0000000000 --- a/vendor/github.com/docker/distribution/docs/garbage-collection.md +++ /dev/null @@ -1,134 +0,0 @@ - - -# Garbage Collection - -As of v2.4.0 a garbage collector command is included within the registry binary. -This document describes what this command does and how and why it should be used. - -## What is Garbage Collection? - -From [wikipedia](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)): - -"In computer science, garbage collection (GC) is a form of automatic memory management. The -garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by -objects that are no longer in use by the program." - -In the context of the Docker registry, garbage collection is the process of -removing blobs from the filesystem which are no longer referenced by a -manifest. Blobs can include both layers and manifests. - - -## Why Garbage Collection? - -Registry data can occupy considerable amounts of disk space and freeing up -this disk space is an oft-requested feature. Additionally for reasons of security it -can be desirable to ensure that certain layers no longer exist on the filesystem. - - -## Garbage Collection in the Registry - -Filesystem layers are stored by their content address in the Registry. This -has many advantages, one of which is that data is stored once and referred to by manifests. -See [here](compatibility.md#content-addressable-storage-cas) for more details. - -Layers are therefore shared amongst manifests; each manifest maintains a reference -to the layer. As long as a layer is referenced by one manifest, it cannot be garbage -collected. - -Manifests and layers can be 'deleted` with the registry API (refer to the API -documentation [here](spec/api.md#deleting-a-layer) and -[here](spec/api.md#deleting-an-image) for details). This API removes references -to the target and makes them eligible for garbage collection. It also makes them -unable to be read via the API. - -If a layer is deleted it will be removed from the filesystem when garbage collection -is run. If a manifest is deleted the layers to which it refers will be removed from -the filesystem if no other manifests refers to them. - - -### Example - -In this example manifest A references two layers: `a` and `b`. Manifest `B` references -layers `a` and `c`. In this state, nothing is eligible for garbage collection: - -``` -A -----> a <----- B - \--> b | - c <--/ -``` - -Manifest B is deleted via the API: - -``` -A -----> a B - \--> b - c -``` - -In this state layer `c` no longer has a reference and is eligible for garbage -collection. Layer `a` had one reference removed but will not be garbage -collected as it is still referenced by manifest `A`. The blob representing -manifest `B` will also be eligible for garbage collection. - -After garbage collection has been run manifest `A` and its blobs remain. - -``` -A -----> a - \--> b -``` - - -## How Garbage Collection works - -Garbage collection runs in two phases. First, in the 'mark' phase, the process -scans all the manifests in the registry. From these manifests, it constructs a -set of content address digests. This set is the 'mark set' and denotes the set -of blobs to *not* delete. Secondly, in the 'sweep' phase, the process scans all -the blobs and if a blob's content address digest is not in the mark set, the -process will delete it. - - -> **NOTE** You should ensure that the registry is in read-only mode or not running at -> all. If you were to upload an image while garbage collection is running, there is the -> risk that the image's layers will be mistakenly deleted, leading to a corrupted image. - -This type of garbage collection is known as stop-the-world garbage collection. In future -registry versions the intention is that garbage collection will be an automated background -action and this manual process will no longer apply. - - - -# Running garbage collection - -Garbage collection can be run as follows - -`bin/registry garbage-collect [--dry-run] /path/to/config.yml` - -The garbage-collect command accepts a `--dry-run` parameter, which will print the progress -of the mark and sweep phases without removing any data. Running with a log leve of `info` -will give a clear indication of what will and will not be deleted. - -_Sample output from a dry run garbage collection with registry log level set to `info`_ - -``` -hello-world -hello-world: marking manifest sha256:fea8895f450959fa676bcc1df0611ea93823a735a01205fd8622846041d0c7cf -hello-world: marking blob sha256:03f4658f8b782e12230c1783426bd3bacce651ce582a4ffb6fbbfa2079428ecb -hello-world: marking blob sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 -hello-world: marking configuration sha256:690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d -ubuntu - -4 blobs marked, 5 blobs eligible for deletion -blob eligible for deletion: sha256:28e09fddaacbfc8a13f82871d9d66141a6ed9ca526cb9ed295ef545ab4559b81 -blob eligible for deletion: sha256:7e15ce58ccb2181a8fced7709e9893206f0937cc9543bc0c8178ea1cf4d7e7b5 -blob eligible for deletion: sha256:87192bdbe00f8f2a62527f36bb4c7c7f4eaf9307e4b87e8334fb6abec1765bcb -blob eligible for deletion: sha256:b549a9959a664038fc35c155a95742cf12297672ca0ae35735ec027d55bf4e97 -blob eligible for deletion: sha256:f251d679a7c61455f06d793e43c06786d7766c88b8c24edf242b2c08e3c3f599 -``` - diff --git a/vendor/github.com/docker/distribution/docs/glossary.md b/vendor/github.com/docker/distribution/docs/glossary.md deleted file mode 100644 index 8159b52025..0000000000 --- a/vendor/github.com/docker/distribution/docs/glossary.md +++ /dev/null @@ -1,70 +0,0 @@ - - -# Glossary - -This page contains definitions for distribution related terms. - -
-

Blob

-
-
A blob is any kind of content that is stored by a Registry under a content-addressable identifier (a "digest").
-

- Layers are a good example of "blobs". -

-
- -

Image

-
-
An image is a named set of immutable data from which a Docker container can be created.
-

- An image is represented by a json file called a manifest, and is conceptually a set of layers. - - Image names indicate the location where they can be pulled from and pushed to, as they usually start with a registry domain name and port. - -

-
- -

Layer

-
-
A layer is a tar archive bundling partial content from a filesystem.
-

- Layers from an image are usually extracted in order on top of each other to make up a root filesystem from which containers run out. -

-
- -

Manifest

-
A manifest is the JSON representation of an image.
- -

Namespace

-
A namespace is a collection of repositories with a common name prefix.
-

- The namespace with an empty prefix is considered the Global Namespace. -

-
- -

Registry

-
A registry is a service that let you store and deliver images.
-
- -

Repository

-
-
A repository is a set of data containing all versions of a given image.
-
- -

Scope

-
A scope is the portion of a namespace onto which a given authorization token is granted.
- -

Tag

-
A tag is conceptually a "version" of a named image.
-

- Example: `docker pull myimage:latest` instructs docker to pull the image "myimage" in version "latest". -

- -
- - -
diff --git a/vendor/github.com/docker/distribution/docs/help.md b/vendor/github.com/docker/distribution/docs/help.md deleted file mode 100644 index c6ac7ad955..0000000000 --- a/vendor/github.com/docker/distribution/docs/help.md +++ /dev/null @@ -1,24 +0,0 @@ - - -# Getting help - -If you need help, or just want to chat, you can reach us: - -- on irc: `#docker-distribution` on freenode -- on the [mailing list](https://groups.google.com/a/dockerproject.org/forum/#!forum/distribution) (mail at ) - -If you want to report a bug: - -- be sure to first read about [how to contribute](https://github.com/docker/distribution/blob/master/CONTRIBUTING.md) -- you can then do so on the [GitHub project bugtracker](https://github.com/docker/distribution/issues) - -You can also find out more about the Docker's project [Getting Help resources](https://docs.docker.com/opensource/get-help/). diff --git a/vendor/github.com/docker/distribution/docs/images/notifications.gliffy b/vendor/github.com/docker/distribution/docs/images/notifications.gliffy deleted file mode 100644 index 5ecf4c3aed..0000000000 --- a/vendor/github.com/docker/distribution/docs/images/notifications.gliffy +++ /dev/null @@ -1 +0,0 @@ -{"contentType":"application/gliffy+json","version":"1.3","stage":{"background":"#FFFFFF","width":737,"height":630,"nodeIndex":171,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":true,"drawingGuidesOn":true,"pageBreaksOn":false,"printGridOn":false,"printPaper":"LETTER","printShrinkToFit":false,"printPortrait":true,"maxWidth":5000,"maxHeight":5000,"themeData":null,"viewportType":"default","fitBB":{"min":{"x":290,"y":83},"max":{"x":736.5,"y":630}},"objects":[{"x":699.0,"y":246.0,"rotation":0.0,"id":166,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":29,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[-30.0,-12.0],[-30.0,59.5],[33.0,59.5],[33.0,131.0]],"lockSegments":{},"ortho":true}},"linkMap":[]},{"x":632.0,"y":243.0,"rotation":0.0,"id":165,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":28,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[-25.0,-11.0],[-25.0,64.5],[-88.0,64.5],[-88.0,140.0]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":512.0,"y":203.0,"rotation":0.0,"id":161,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":27,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[-19.0,-3.0],[79.12746812182615,-3.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":589.9999999999999,"y":167.5,"rotation":0.0,"id":143,"width":101.11111111111111,"height":65.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.rectangle","order":2,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":0.722222222222222,"y":0.0,"rotation":0.0,"id":144,"width":99.66666666666663,"height":16.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Broadcaster

","tid":null,"valign":"middle","vposition":"none","hposition":"none"}}}]},{"x":290.0,"y":105.0,"rotation":0.0,"id":160,"width":210.0,"height":190.0,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":26,"lockAspectRatio":false,"lockShape":false,"children":[{"x":12.92581625076238,"y":17.018834253729665,"rotation":0.0,"id":155,"width":189.57418374923762,"height":151.48116574627034,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":25,"lockAspectRatio":false,"lockShape":false,"children":[{"x":97.57418374923762,"y":58.481165746270335,"rotation":90.0,"id":151,"width":149.0,"height":37.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_bottom","order":21,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":153,"magnitude":1},{"id":154,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":8.0,"rotation":0.0,"id":152,"width":149.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":151,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":8.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":151,"magnitude":1},{"id":154,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":151,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":153,"width":149.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":151,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":10,"paddingBottom":8,"paddingLeft":10,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Listener

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":67.5,"y":1.0,"rotation":0.0,"id":154,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":152,"px":0.5,"py":0.0,"xOffset":-7.0,"yOffset":-7.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_bottom","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":10.074195639419855,"y":17.481165746270335,"rotation":0.0,"id":150,"width":120.0,"height":119.0,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":20,"lockAspectRatio":false,"lockShape":false,"children":[{"x":1.0,"y":80.5,"rotation":0.0,"id":133,"width":117.0,"height":38.5,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_bottom","order":16,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":135,"magnitude":1},{"id":136,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":8.0,"rotation":0.0,"id":134,"width":117.0,"height":30.5,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":133,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":8.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":133,"magnitude":1},{"id":136,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":133,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":135,"width":117.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":133,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":10,"paddingBottom":8,"paddingLeft":10,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

handler

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":51.5,"y":1.0,"rotation":0.0,"id":136,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":134,"px":0.5,"py":0.0,"xOffset":-7.0,"yOffset":-7.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_bottom","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":0.0,"y":39.0,"rotation":0.0,"id":129,"width":120.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":12,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":131,"magnitude":1},{"id":132,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":130,"width":120.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":129,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":129,"magnitude":1},{"id":132,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":129,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":131,"width":120.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":129,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

repository

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":53.0,"y":31.0,"rotation":0.0,"id":132,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":130,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":0.0,"y":0.0,"rotation":0.0,"id":125,"width":120.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":8,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":127,"magnitude":1},{"id":128,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":126,"width":120.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":125,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":125,"magnitude":1},{"id":128,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":125,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":127,"width":120.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":125,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

request

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":53.0,"y":31.0,"rotation":0.0,"id":128,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":126,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]}]},{"x":0.5154455517800614,"y":0.5154455517799761,"rotation":90.39513704250749,"id":145,"width":150.0,"height":150.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_bottom","order":4,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":147,"magnitude":1},{"id":148,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":8.0,"rotation":0.0,"id":146,"width":150.0,"height":142.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":145,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":8.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":145,"magnitude":1},{"id":148,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":145,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":147,"width":150.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":145,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":10,"paddingBottom":8,"paddingLeft":10,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

 

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":68.0,"y":0.9999999999999432,"rotation":0.0,"id":148,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":146,"px":0.5,"py":0.0,"xOffset":-7.0,"yOffset":-7.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_bottom","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]}]},{"x":0.0,"y":0.0,"rotation":0.0,"id":156,"width":210.0,"height":190.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":0,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#434343","fillColor":"#ffffff","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.0,"y":0.0,"rotation":0.0,"id":159,"width":206.0,"height":16.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Registry instance

","tid":null,"valign":"middle","vposition":"above","hposition":"none"}}}]}]},{"x":473.0,"y":525.0,"rotation":0.0,"id":115,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":69,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":68,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":109,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[2.0,4.5],[2.0,11.533649282003012],[2.0,18.567298564006137],[2.0,25.60094784600915]],"lockSegments":{},"ortho":true}},"linkMap":[]},{"x":665.0,"y":530.0,"rotation":0.0,"id":114,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":68,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":100,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":112,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#000000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[-2.0,-0.5],[-2.0,6.533649282003012],[-2.0,13.567298564006137],[-2.0,20.60094784600915]],"lockSegments":{},"ortho":true}},"linkMap":[]},{"x":598.0,"y":550.0,"rotation":0.0,"id":112,"width":120.0,"height":80.0,"uid":"com.gliffy.shape.network.network_v3.home.cloud","order":66,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.cloud.network_v3","strokeWidth":2.0,"strokeColor":"#000000","fillColor":"#000000","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.0,"y":0.0,"rotation":0.0,"id":113,"width":116.00000000000001,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Remote

Endpoint_N

","tid":null,"valign":"middle","vposition":"none","hposition":"none"}}}]},{"x":420.0,"y":550.0,"rotation":0.0,"id":109,"width":120.0,"height":80.0,"uid":"com.gliffy.shape.network.network_v3.home.cloud","order":64,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.cloud.network_v3","strokeWidth":2.0,"strokeColor":"#000000","fillColor":"#000000","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.0,"y":0.0,"rotation":0.0,"id":111,"width":116.00000000000001,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Remote

Endpoint_1

","tid":null,"valign":"middle","vposition":"none","hposition":"none"}}}]},{"x":540.0,"y":438.5,"rotation":0.0,"id":104,"width":50.0,"height":16.0,"uid":"com.gliffy.shape.basic.basic_v1.default.text","order":63,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

. . .

","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"linkMap":[]},{"x":410.0,"y":379.5,"rotation":0.0,"id":103,"width":130.0,"height":150.0,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":62,"lockAspectRatio":false,"lockShape":false,"children":[{"x":15.0,"y":20.0,"rotation":0.0,"id":84,"width":100.0,"height":117.0,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":45,"lockAspectRatio":false,"lockShape":false,"children":[{"x":0.0,"y":78.0,"rotation":0.0,"id":80,"width":100.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":41,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":82,"magnitude":1},{"id":83,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":81,"width":100.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":80,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":80,"magnitude":1},{"id":83,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":80,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":82,"width":100.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":80,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

http

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":43.0,"y":31.0,"rotation":0.0,"id":83,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":81,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":0.0,"y":39.0,"rotation":0.0,"id":76,"width":100.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":37,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":78,"magnitude":1},{"id":79,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":77,"width":100.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":76,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":76,"magnitude":1},{"id":79,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":76,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":78,"width":100.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":76,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

retry

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":43.0,"y":31.0,"rotation":0.0,"id":79,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":77,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":0.0,"y":0.0,"rotation":0.0,"id":72,"width":100.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":33,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":74,"magnitude":1},{"id":75,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":73,"width":100.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":72,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":72,"magnitude":1},{"id":75,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":72,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":74,"width":100.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":72,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

queue

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":43.0,"y":31.0,"rotation":0.0,"id":75,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":73,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]}]},{"x":0.0,"y":0.0,"rotation":0.0,"id":68,"width":130.0,"height":150.0,"uid":"com.gliffy.shape.sitemap.sitemap_v1.default.download","order":31,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.download.sitemap_v1","strokeWidth":2.0,"strokeColor":"#666666","fillColor":"#ffffff","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.0,"y":0.0,"rotation":0.0,"id":71,"width":126.0,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Endpoint_1

","tid":null,"valign":"middle","vposition":"above","hposition":"none"}}}]}]},{"x":598.0,"y":379.5,"rotation":0.0,"id":102,"width":130.0,"height":150.0,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":61,"lockAspectRatio":false,"lockShape":false,"children":[{"x":15.0,"y":20.0,"rotation":0.0,"id":87,"width":100.0,"height":117.0,"uid":"com.gliffy.shape.basic.basic_v1.default.group","order":60,"lockAspectRatio":false,"lockShape":false,"children":[{"x":0.0,"y":78.0,"rotation":0.0,"id":88,"width":100.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":56,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":90,"magnitude":1},{"id":91,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":89,"width":100.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":88,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":88,"magnitude":1},{"id":91,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":88,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":90,"width":100.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":88,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

http

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":43.0,"y":31.0,"rotation":0.0,"id":91,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":89,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":0.0,"y":39.0,"rotation":0.0,"id":92,"width":100.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":52,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":94,"magnitude":1},{"id":95,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":93,"width":100.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":92,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":92,"magnitude":1},{"id":95,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":92,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":94,"width":100.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":92,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

retry

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":43.0,"y":31.0,"rotation":0.0,"id":95,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":93,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]},{"x":0.0,"y":0.0,"rotation":0.0,"id":96,"width":100.0,"height":40.0,"uid":"com.gliffy.shape.ui.ui_v3.containers_content.popover_top","order":48,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"MinWidthConstraint","MinWidthConstraint":{"width":100}},{"type":"HeightConstraint","HeightConstraint":{"isMin":true,"heightInfo":[{"id":98,"magnitude":1},{"id":99,"magnitude":1}],"minHeight":0.0,"growParent":false,"padding":0.0}}]},"linkMap":[],"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":97,"width":100.0,"height":32.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"PositionConstraint","PositionConstraint":{"nodeId":96,"px":0.0,"py":0.0,"xOffset":0.0,"yOffset":0.0}},{"type":"HeightConstraint","HeightConstraint":{"isMin":false,"heightInfo":[{"id":96,"magnitude":1},{"id":99,"magnitude":-1}],"minHeight":0.0,"growParent":false,"padding":0.0}},{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":96,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[{"x":0.0,"y":0.0,"rotation":0.0,"id":98,"width":100.0,"height":29.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"WidthConstraint","WidthConstraint":{"isMin":false,"widthInfo":[{"id":96,"magnitude":1}],"minWidth":0.0,"growParent":false,"padding":0.0}}]},"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

queue

","tid":null,"valign":"top","vposition":"none","hposition":"none"}}}]},{"x":43.0,"y":31.0,"rotation":0.0,"id":99,"width":15.0,"height":8.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[{"type":"ConstWidthConstraint","ConstWidthConstraint":{"width":15}},{"type":"ConstHeightConstraint","ConstHeightConstraint":{"height":8}},{"type":"PositionConstraint","PositionConstraint":{"nodeId":97,"px":0.5,"py":1.0,"xOffset":-7.0,"yOffset":-1.0}}]},"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.ui.ui_v3.containers_content.popover_top","strokeWidth":2.0,"strokeColor":"#BBBBBB","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"children":[]}]}]},{"x":0.0,"y":0.0,"rotation":0.0,"id":100,"width":130.0,"height":150.0,"uid":"com.gliffy.shape.sitemap.sitemap_v1.default.download","order":46,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.download.sitemap_v1","strokeWidth":2.0,"strokeColor":"#666666","fillColor":"#ffffff","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.0,"y":0.0,"rotation":0.0,"id":101,"width":126.0,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"

Endpoint_N

","tid":null,"valign":"middle","vposition":"above","hposition":"none"}}}]}]}],"shapeStyles":{"com.gliffy.shape.sitemap.sitemap_v1.default":{"fill":"#ffffff","stroke":"#666666","strokeWidth":2},"com.gliffy.shape.network.network_v3.home":{"fill":"#000000"},"com.gliffy.shape.network.network_v3.business":{"fill":"#003366"},"com.gliffy.shape.basic.basic_v1.default":{"fill":"#FFFFFF","stroke":"#434343","strokeWidth":2}},"lineStyles":{"global":{"endArrow":1}},"textStyles":{"global":{"size":"14px"}}},"metadata":{"title":"untitled","revision":0,"exportBorder":false,"loadPosition":"default","libraries":["com.gliffy.libraries.sitemap.sitemap_v2","com.gliffy.libraries.sitemap.sitemap_v1.default","com.gliffy.libraries.ui.ui_v3.containers_content","com.gliffy.libraries.table.table_v2.default","com.gliffy.libraries.ui.ui_v3.navigation","com.gliffy.libraries.ui.ui_v3.forms_controls","com.gliffy.libraries.ui.ui_v3.icon_symbols","com.gliffy.libraries.ui.ui_v2.forms_components","com.gliffy.libraries.ui.ui_v2.content","com.gliffy.libraries.ui.ui_v2.miscellaneous","com.gliffy.libraries.network.network_v3.home","com.gliffy.libraries.network.network_v3.business","com.gliffy.libraries.network.network_v3.rack","com.gliffy.libraries.uml.uml_v2.class","com.gliffy.libraries.uml.uml_v2.sequence","com.gliffy.libraries.uml.uml_v2.activity","com.gliffy.libraries.uml.uml_v2.state_machine","com.gliffy.libraries.uml.uml_v2.deployment","com.gliffy.libraries.uml.uml_v2.use_case","com.gliffy.libraries.erd.erd_v1.default","com.gliffy.libraries.flowchart.flowchart_v1.default","com.gliffy.libraries.swimlanes.swimlanes_v1.default","com.gliffy.libraries.uml.uml_v2.component","com.gliffy.libraries.basic.basic_v1.default","com.gliffy.libraries.images"]},"embeddedResources":{"index":0,"resources":[]}} \ No newline at end of file diff --git a/vendor/github.com/docker/distribution/docs/images/notifications.png b/vendor/github.com/docker/distribution/docs/images/notifications.png deleted file mode 100644 index 09de8d2376..0000000000 Binary files a/vendor/github.com/docker/distribution/docs/images/notifications.png and /dev/null differ diff --git a/vendor/github.com/docker/distribution/docs/images/notifications.svg b/vendor/github.com/docker/distribution/docs/images/notifications.svg deleted file mode 100644 index 6c3d680b95..0000000000 --- a/vendor/github.com/docker/distribution/docs/images/notifications.svg +++ /dev/null @@ -1 +0,0 @@ -Registry instanceBroadcaster requestrepositoryhandlerListenerEndpoint_1queueretryhttpEndpoint_Nqueueretryhttp. . .RemoteEndpoint_1RemoteEndpoint_N \ No newline at end of file diff --git a/vendor/github.com/docker/distribution/docs/index.md b/vendor/github.com/docker/distribution/docs/index.md deleted file mode 100644 index 0252fcb53d..0000000000 --- a/vendor/github.com/docker/distribution/docs/index.md +++ /dev/null @@ -1,66 +0,0 @@ - - -# Docker Registry - -## What it is - -The Registry is a stateless, highly scalable server side application that stores and lets you distribute Docker images. -The Registry is open-source, under the permissive [Apache license](http://en.wikipedia.org/wiki/Apache_License). - -## Why use it - -You should use the Registry if you want to: - - * tightly control where your images are being stored - * fully own your images distribution pipeline - * integrate image storage and distribution tightly into your in-house development workflow - -## Alternatives - -Users looking for a zero maintenance, ready-to-go solution are encouraged to head-over to the [Docker Hub](https://hub.docker.com), which provides a free-to-use, hosted Registry, plus additional features (organization accounts, automated builds, and more). - -Users looking for a commercially supported version of the Registry should look into [Docker Trusted Registry](https://docs.docker.com/docker-trusted-registry/). - -## Requirements - -The Registry is compatible with Docker engine **version 1.6.0 or higher**. -If you really need to work with older Docker versions, you should look into the [old python registry](https://github.com/docker/docker-registry). - -## TL;DR - -Start your registry - - docker run -d -p 5000:5000 --name registry registry:2 - -Pull (or build) some image from the hub - - docker pull ubuntu - -Tag the image so that it points to your registry - - docker tag ubuntu localhost:5000/myfirstimage - -Push it - - docker push localhost:5000/myfirstimage - -Pull it back - - docker pull localhost:5000/myfirstimage - -Now stop your registry and remove all data - - docker stop registry && docker rm -v registry - -## Next - -You should now read the [detailed introduction about the registry](introduction.md), or jump directly to [deployment instructions](deploying.md). diff --git a/vendor/github.com/docker/distribution/docs/insecure.md b/vendor/github.com/docker/distribution/docs/insecure.md deleted file mode 100644 index 88055d51ab..0000000000 --- a/vendor/github.com/docker/distribution/docs/insecure.md +++ /dev/null @@ -1,111 +0,0 @@ - - -# Insecure Registry - -While it's highly recommended to secure your registry using a TLS certificate -issued by a known CA, you may alternatively decide to use self-signed -certificates, or even use your registry over plain http. - -You have to understand the downsides in doing so, and the extra burden in -configuration. - -## Deploying a plain HTTP registry - -> **Warning**: it's not possible to use an insecure registry with basic authentication. - -This basically tells Docker to entirely disregard security for your registry. -While this is relatively easy to configure the daemon in this way, it is -**very** insecure. It does expose your registry to trivial MITM. Only use this -solution for isolated testing or in a tightly controlled, air-gapped -environment. - -1. Open the `/etc/default/docker` file or `/etc/sysconfig/docker` for editing. - - Depending on your operating system, your Engine daemon start options. - -2. Edit (or add) the `DOCKER_OPTS` line and add the `--insecure-registry` flag. - - This flag takes the URL of your registry, for example. - - `DOCKER_OPTS="--insecure-registry myregistrydomain.com:5000"` - -3. Close and save the configuration file. - -4. Restart your Docker daemon - - The command you use to restart the daemon depends on your operating system. - For example, on Ubuntu, this is usually the `service docker stop` and `service - docker start` command. - -5. Repeat this configuration on every Engine host that wants to access your registry. - - -## Using self-signed certificates - -> **Warning**: using this along with basic authentication requires to **also** trust the certificate into the OS cert store for some versions of docker (see below) - -This is more secure than the insecure registry solution. You must configure every docker daemon that wants to access your registry - -1. Generate your own certificate: - - mkdir -p certs && openssl req \ - -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ - -x509 -days 365 -out certs/domain.crt - -2. Be sure to use the name `myregistrydomain.com` as a CN. - -3. Use the result to [start your registry with TLS enabled](https://github.com/docker/distribution/blob/master/docs/deploying.md#get-a-certificate) - -4. Instruct every docker daemon to trust that certificate. - - This is done by copying the `domain.crt` file to `/etc/docker/certs.d/myregistrydomain.com:5000/ca.crt`. - -5. Don't forget to restart the Engine daemon. - -## Troubleshooting insecure registry - -This sections lists some common failures and how to recover from them. - -### Failing... - -Failing to configure the Engine daemon and trying to pull from a registry that is not using -TLS will results in the following message: - -``` -FATA[0000] Error response from daemon: v1 ping attempt failed with error: -Get https://myregistrydomain.com:5000/v1/_ping: tls: oversized record received with length 20527. -If this private registry supports only HTTP or HTTPS with an unknown CA certificate,please add -`--insecure-registry myregistrydomain.com:5000` to the daemon's arguments. -In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; -simply place the CA certificate at /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt -``` - -### Docker still complains about the certificate when using authentication? - -When using authentication, some versions of docker also require you to trust the certificate at the OS level. Usually, on Ubuntu this is done with: - -```bash -$ cp certs/domain.crt /usr/local/share/ca-certificates/myregistrydomain.com.crt -update-ca-certificates -``` - -... and on Red Hat (and its derivatives) with: - -```bash -cp certs/domain.crt /etc/pki/ca-trust/source/anchors/myregistrydomain.com.crt -update-ca-trust -``` - -... On some distributions, e.g. Oracle Linux 6, the Shared System Certificates feature needs to be manually enabled: - -```bash -$ update-ca-trust enable -``` - -Now restart docker (`service docker stop && service docker start`, or any other way you use to restart docker). diff --git a/vendor/github.com/docker/distribution/docs/introduction.md b/vendor/github.com/docker/distribution/docs/introduction.md deleted file mode 100644 index e8b05d8cc8..0000000000 --- a/vendor/github.com/docker/distribution/docs/introduction.md +++ /dev/null @@ -1,55 +0,0 @@ - - -# Understanding the Registry - -A registry is a storage and content delivery system, holding named Docker images, available in different tagged versions. - - > Example: the image `distribution/registry`, with tags `2.0` and `2.1`. - -Users interact with a registry by using docker push and pull commands. - - > Example: `docker pull registry-1.docker.io/distribution/registry:2.1`. - -Storage itself is delegated to drivers. The default storage driver is the local posix filesystem, which is suitable for development or small deployments. Additional cloud-based storage drivers like S3, Microsoft Azure, OpenStack Swift and Aliyun OSS are also supported. People looking into using other storage backends may do so by writing their own driver implementing the [Storage API](storagedrivers.md). - -Since securing access to your hosted images is paramount, the Registry natively supports TLS and basic authentication. - -The Registry GitHub repository includes additional information about advanced authentication and authorization methods. Only very large or public deployments are expected to extend the Registry in this way. - -Finally, the Registry ships with a robust [notification system](notifications.md), calling webhooks in response to activity, and both extensive logging and reporting, mostly useful for large installations that want to collect metrics. - -## Understanding image naming - -Image names as used in typical docker commands reflect their origin: - - * `docker pull ubuntu` instructs docker to pull an image named `ubuntu` from the official Docker Hub. This is simply a shortcut for the longer `docker pull docker.io/library/ubuntu` command - * `docker pull myregistrydomain:port/foo/bar` instructs docker to contact the registry located at `myregistrydomain:port` to find the image `foo/bar` - -You can find out more about the various Docker commands dealing with images in the [official Docker engine documentation](https://docs.docker.com/reference/commandline/cli/). - -## Use cases - -Running your own Registry is a great solution to integrate with and complement your CI/CD system. In a typical workflow, a commit to your source revision control system would trigger a build on your CI system, which would then push a new image to your Registry if the build is successful. A notification from the Registry would then trigger a deployment on a staging environment, or notify other systems that a new image is available. - -It's also an essential component if you want to quickly deploy a new image over a large cluster of machines. - -Finally, it's the best way to distribute images inside an isolated network. - -## Requirements - -You absolutely need to be familiar with Docker, specifically with regard to pushing and pulling images. You must understand the difference between the daemon and the cli, and at least grasp basic concepts about networking. - -Also, while just starting a registry is fairly easy, operating it in a production environment requires operational skills, just like any other service. You are expected to be familiar with systems availability and scalability, logging and log processing, systems monitoring, and security 101. Strong understanding of http and overall network communications, plus familiarity with golang are certainly useful as well for advanced operations or hacking. - -## Next - -Dive into [deploying your registry](deploying.md) diff --git a/vendor/github.com/docker/distribution/docs/migration.md b/vendor/github.com/docker/distribution/docs/migration.md deleted file mode 100644 index da0aba91a9..0000000000 --- a/vendor/github.com/docker/distribution/docs/migration.md +++ /dev/null @@ -1,30 +0,0 @@ - - -# Migrating a 1.0 registry to 2.0 - -TODO: This needs to be revised in light of Olivier's work - -A few thoughts here: - -There was no "1.0". There was an implementation of the Registry API V1 but only a version 0.9 of the service was released. -The image formats are not compatible in any way. One must convert v1 images to v2 images using a docker client or other tool. -One can migrate images from one version to the other by pulling images from the old registry and pushing them to the v2 registry. - ------ - -The Docker Registry 2.0 is backward compatible with images created by the earlier specification. If you are migrating a private registry to version 2.0, you should use the following process: - -1. Configure and test a 2.0 registry image in a sandbox environment. - -2. Back up up your production image storage. - - Your production image storage should reside on a volume or storage backend. - Make sure you have a backup of its contents. - -3. Stop your existing registry service. - -4. Restart your registry with your tested 2.0 image. diff --git a/vendor/github.com/docker/distribution/docs/mirror.md b/vendor/github.com/docker/distribution/docs/mirror.md deleted file mode 100644 index feb2630c0e..0000000000 --- a/vendor/github.com/docker/distribution/docs/mirror.md +++ /dev/null @@ -1,72 +0,0 @@ - - -# Registry as a pull through cache - -## Use-case - -If you have multiple instances of Docker running in your environment (e.g., multiple physical or virtual machines, all running the Docker daemon), each time one of them requires an image that it doesn’t have it will go out to the internet and fetch it from the public Docker registry. By running a local registry mirror, you can keep most of the redundant image fetch traffic on your local network. - -### Alternatives - -Alternatively, if the set of images you are using is well delimited, you can simply pull them manually and push them to a simple, local, private registry. - -Furthermore, if your images are all built in-house, not using the Hub at all and relying entirely on your local registry is the simplest scenario. - -### Gotcha - -It's currently not possible to mirror another private registry. Only the central Hub can be mirrored. - -### Solution - -The Registry can be configured as a pull through cache. In this mode a Registry responds to all normal docker pull requests but stores all content locally. - -## How does it work? - -The first time you request an image from your local registry mirror, it pulls the image from the public Docker registry and stores it locally before handing it back to you. On subsequent requests, the local registry mirror is able to serve the image from its own storage. - -### What if the content changes on the Hub? - -When a pull is attempted with a tag, the Registry will check the remote to ensure if it has the latest version of the requested content. If it doesn't it will fetch the latest content and cache it. - -### What about my disk? - -In environments with high churn rates, stale data can build up in the cache. When running as a pull through cache the Registry will periodically remove old content to save disk space. Subsequent requests for removed content will cause a remote fetch and local re-caching. - -To ensure best performance and guarantee correctness the Registry cache should be configured to use the `filesystem` driver for storage. - -## Running a Registry as a pull through cache - -The easiest way to run a registry as a pull through cache is to run the official Registry image. - -Multiple registry caches can be deployed over the same back-end. A single registry cache will ensure that concurrent requests do not pull duplicate data, but this property will not hold true for a registry cache cluster. - -### Configuring the cache - -To configure a Registry to run as a pull through cache, the addition of a `proxy` section is required to the config file. - -In order to access private images on the Docker Hub, a username and password can be supplied. - - proxy: - remoteurl: https://registry-1.docker.io - username: [username] - password: [password] - -> :warn: if you specify a username and password, it's very important to understand that private resources that this user has access to on the Hub will be made available on your mirror. It's thus paramount that you secure your mirror by implementing authentication if you expect these resources to stay private! - -### Configuring the Docker daemon - -You will need to pass the `--registry-mirror` option to your Docker daemon on startup: - - docker --registry-mirror=https:// daemon - -For example, if your mirror is serving on http://10.0.0.2:5000, you would run: - - docker --registry-mirror=https://10.0.0.2:5000 daemon - -NOTE: Depending on your local host setup, you may be able to add the `--registry-mirror` option to the `DOCKER_OPTS` variable in `/etc/default/docker`. diff --git a/vendor/github.com/docker/distribution/docs/nginx.md b/vendor/github.com/docker/distribution/docs/nginx.md deleted file mode 100644 index 17b92f44f7..0000000000 --- a/vendor/github.com/docker/distribution/docs/nginx.md +++ /dev/null @@ -1,188 +0,0 @@ - - -# Authenticating proxy with nginx - - -## Use-case - -People already relying on a nginx proxy to authenticate their users to other services might want to leverage it and have Registry communications tunneled through the same pipeline. - -Usually, that includes enterprise setups using LDAP/AD on the backend and a SSO mechanism fronting their internal http portal. - -### Alternatives - -If you just want authentication for your registry, and are happy maintaining users access separately, you should really consider sticking with the native [basic auth registry feature](deploying.md#native-basic-auth). - -### Solution - -With the method presented here, you implement basic authentication for docker engines in a reverse proxy that sits in front of your registry. - -While we use a simple htpasswd file as an example, any other nginx authentication backend should be fairly easy to implement once you are done with the example. - -We also implement push restriction (to a limited user group) for the sake of the example. Again, you should modify this to fit your mileage. - -### Gotchas - -While this model gives you the ability to use whatever authentication backend you want through the secondary authentication mechanism implemented inside your proxy, it also requires that you move TLS termination from the Registry to the proxy itself. - -Furthermore, introducing an extra http layer in your communication pipeline will make it more complex to deploy, maintain, and debug, and will possibly create issues. Make sure the extra complexity is required. - -For instance, Amazon's Elastic Load Balancer (ELB) in HTTPS mode already sets the following client header: - -``` -X-Real-IP -X-Forwarded-For -X-Forwarded-Proto -``` - -So if you have an nginx sitting behind it, should remove these lines from the example config below: - -``` -X-Real-IP $remote_addr; # pass on real client's IP -X-Forwarded-For $proxy_add_x_forwarded_for; -X-Forwarded-Proto $scheme; -``` - -Otherwise nginx will reset the ELB's values, and the requests will not be routed properly. For more information, see [#970](https://github.com/docker/distribution/issues/970). - -## Setting things up - -Read again [the requirements](recipes.md#requirements). - -Ready? - --- - -Create the required directories - -``` -mkdir -p auth -mkdir -p data -``` - -Create the main nginx configuration you will use. - -``` - -cat < auth/nginx.conf -events { - worker_connections 1024; -} - -http { - - upstream docker-registry { - server registry:5000; - } - - ## Set a variable to help us decide if we need to add the - ## 'Docker-Distribution-Api-Version' header. - ## The registry always sets this header. - ## In the case of nginx performing auth, the header will be unset - ## since nginx is auth-ing before proxying. - map \$upstream_http_docker_distribution_api_version \$docker_distribution_api_version { - 'registry/2.0' ''; - default registry/2.0; - } - - server { - listen 443 ssl; - server_name myregistrydomain.com; - - # SSL - ssl_certificate /etc/nginx/conf.d/domain.crt; - ssl_certificate_key /etc/nginx/conf.d/domain.key; - - # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html - ssl_protocols TLSv1.1 TLSv1.2; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; - ssl_prefer_server_ciphers on; - ssl_session_cache shared:SSL:10m; - - # disable any limits to avoid HTTP 413 for large image uploads - client_max_body_size 0; - - # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486) - chunked_transfer_encoding on; - - location /v2/ { - # Do not allow connections from docker 1.5 and earlier - # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents - if (\$http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*\$" ) { - return 404; - } - - # To add basic authentication to v2 use auth_basic setting. - auth_basic "Registry realm"; - auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; - - ## If $docker_distribution_api_version is empty, the header will not be added. - ## See the map directive above where this variable is defined. - add_header 'Docker-Distribution-Api-Version' \$docker_distribution_api_version always; - - proxy_pass http://docker-registry; - proxy_set_header Host \$http_host; # required for docker client's sake - proxy_set_header X-Real-IP \$remote_addr; # pass on real client's IP - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto \$scheme; - proxy_read_timeout 900; - } - } -} -EOF -``` - -Now create a password file for "testuser" and "testpassword" - -``` -docker run --rm --entrypoint htpasswd registry:2 -bn testuser testpassword > auth/nginx.htpasswd -``` - -Copy over your certificate files - -``` -cp domain.crt auth -cp domain.key auth -``` - -Now create your compose file - -``` -cat < docker-compose.yml -nginx: - image: "nginx:1.9" - ports: - - 5043:443 - links: - - registry:registry - volumes: - - ./auth:/etc/nginx/conf.d - - ./auth/nginx.conf:/etc/nginx/nginx.conf:ro - -registry: - image: registry:2 - ports: - - 127.0.0.1:5000:5000 - volumes: - - `pwd`./data:/var/lib/registry -EOF -``` - -## Starting and stopping - -Now, start your stack: - - docker-compose up -d - -Login with a "push" authorized user (using `testuser` and `testpassword`), then tag and push your first image: - - docker login -p=testuser -u=testpassword -e=root@example.ch myregistrydomain.com:5043 - docker tag ubuntu myregistrydomain.com:5043/test - docker push myregistrydomain.com:5043/test - docker pull myregistrydomain.com:5043/test diff --git a/vendor/github.com/docker/distribution/docs/notifications.md b/vendor/github.com/docker/distribution/docs/notifications.md deleted file mode 100644 index c511eb59e7..0000000000 --- a/vendor/github.com/docker/distribution/docs/notifications.md +++ /dev/null @@ -1,350 +0,0 @@ - - -# Notifications - -The Registry supports sending webhook notifications in response to events -happening within the registry. Notifications are sent in response to manifest -pushes and pulls and layer pushes and pulls. These actions are serialized into -events. The events are queued into a registry-internal broadcast system which -queues and dispatches events to [_Endpoints_](#endpoints). - -![](images/notifications.png) - -## Endpoints - -Notifications are sent to _endpoints_ via HTTP requests. Each configured -endpoint has isolated queues, retry configuration and http targets within each -instance of a registry. When an action happens within the registry, it is -converted into an event which is dropped into an inmemory queue. When the -event reaches the end of the queue, an http request is made to the endpoint -until the request succeeds. The events are sent serially to each endpoint but -order is not guaranteed. - -## Configuration - -To setup a registry instance to send notifications to endpoints, one must add -them to the configuration. A simple example follows: - - notifications: - endpoints: - - name: alistener - url: https://mylistener.example.com/event - headers: - Authorization: [Bearer ] - timeout: 500ms - threshold: 5 - backoff: 1s - -The above would configure the registry with an endpoint to send events to -`https://mylistener.example.com/event`, with the header "Authorization: Bearer -". The request would timeout after 500 milliseconds. If -5 failures happen consecutively, the registry will backoff for 1 second before -trying again. - -For details on the fields, please see the [configuration documentation](configuration.md#notifications). - -A properly configured endpoint should lead to a log message from the registry -upon startup: - -``` -INFO[0000] configuring endpoint alistener (https://mylistener.example.com/event), timeout=500ms, headers=map[Authorization:[Bearer ]] app.id=812bfeb2-62d6-43cf-b0c6-152f541618a3 environment=development service=registry -``` - -## Events - -Events have a well-defined JSON structure and are sent as the body of -notification requests. One or more events are sent in a structure called an -envelope. Each event has a unique id that can be used to uniquely identify incoming -requests, if required. Along with that, an _action_ is provided with a -_target_, identifying the object mutated during the event. - -The fields available in an `event` are described below. - -Field | Type | Description ------ | ----- | ------------- -id | string |ID provides a unique identifier for the event. -timestamp | Time | Timestamp is the time at which the event occurred. -action | string | Action indicates what action encompasses the provided event. -target | distribution.Descriptor | Target uniquely describes the target of the event. -length | int | Length in bytes of content. Same as Size field in Descriptor. -repository | string | Repository identifies the named repository. -fromRepository | string | FromRepository identifies the named repository which a blob was mounted from if appropriate. -url | string | URL provides a direct link to the content. -tag | string | Tag identifies a tag name in tag events -request | [RequestRecord](https://godoc.org/github.com/docker/distribution/notifications#RequestRecord) | Request covers the request that generated the event. -actor | [ActorRecord](https://godoc.org/github.com/docker/distribution/notifications#ActorRecord). | Actor specifies the agent that initiated the event. For most situations, this could be from the authorization context of the request. -source | [SourceRecord](https://godoc.org/github.com/docker/distribution/notifications#SourceRecord) | Source identifies the registry node that generated the event. Put differently, while the actor "initiates" the event, the source "generates" it. - - - -The following is an example of a JSON event, sent in response to the push of a -manifest: - -```json -{ - "events": [ - { - "id": "320678d8-ca14-430f-8bb6-4ca139cd83f7", - "timestamp": "2016-03-09T14:44:26.402973972-08:00", - "action": "pull", - "target": { - "mediaType": "application/vnd.docker.distribution.manifest.v2+json", - "size": 708, - "digest": "sha256:fea8895f450959fa676bcc1df0611ea93823a735a01205fd8622846041d0c7cf", - "length": 708, - "repository": "hello-world", - "url": "http://192.168.100.227:5000/v2/hello-world/manifests/sha256:fea8895f450959fa676bcc1df0611ea93823a735a01205fd8622846041d0c7cf", - "tag": "latest" - }, - "request": { - "id": "6df24a34-0959-4923-81ca-14f09767db19", - "addr": "192.168.64.11:42961", - "host": "192.168.100.227:5000", - "method": "GET", - "useragent": "curl/7.38.0" - }, - "actor": {}, - "source": { - "addr": "xtal.local:5000", - "instanceID": "a53db899-3b4b-4a62-a067-8dd013beaca4" - } - } - ] -} -``` - - -The target struct of events which are sent when manifests and blobs are deleted -will contain a subset of the data contained in Get and Put events. Specifically, -only the digest and repository will be sent. - -```json -"target": { - "digest": "sha256:d89e1bee20d9cb344674e213b581f14fbd8e70274ecf9d10c514bab78a307845", - "repository": "library/test" -}, -``` - -> __NOTE:__ As of version 2.1, the `length` field for event targets -> is being deprecated for the `size` field, bringing the target in line with -> common nomenclature. Both will continue to be set for the foreseeable -> future. Newer code should favor `size` but accept either. - -## Envelope - -The envelope contains one or more events, with the following json structure: - -```json -{ - "events": [ ... ], -} -``` - -While events may be sent in the same envelope, the set of events within that -envelope have no implied relationship. For example, the registry may choose to -group unrelated events and send them in the same envelope to reduce the total -number of requests. - -The full package has the mediatype -"application/vnd.docker.distribution.events.v1+json", which will be set on the -request coming to an endpoint. - -An example of a full event may look as follows: - -```json -GET /callback -Host: application/vnd.docker.distribution.events.v1+json -Authorization: Bearer -Content-Type: application/vnd.docker.distribution.events.v1+json - -{ - "events": [ - { - "id": "asdf-asdf-asdf-asdf-0", - "timestamp": "2006-01-02T15:04:05Z", - "action": "push", - "target": { - "mediaType": "application/vnd.docker.distribution.manifest.v1+json", - "length": 1, - "digest": "sha256:fea8895f450959fa676bcc1df0611ea93823a735a01205fd8622846041d0c7cf", - "repository": "library/test", - "url": "http://example.com/v2/library/test/manifests/sha256:c3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5" - }, - "request": { - "id": "asdfasdf", - "addr": "client.local", - "host": "registrycluster.local", - "method": "PUT", - "useragent": "test/0.1" - }, - "actor": { - "name": "test-actor" - }, - "source": { - "addr": "hostname.local:port" - } - }, - { - "id": "asdf-asdf-asdf-asdf-1", - "timestamp": "2006-01-02T15:04:05Z", - "action": "push", - "target": { - "mediaType": "application/vnd.docker.container.image.rootfs.diff+x-gtar", - "length": 2, - "digest": "sha256:c3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5", - "repository": "library/test", - "url": "http://example.com/v2/library/test/blobs/sha256:c3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5" - }, - "request": { - "id": "asdfasdf", - "addr": "client.local", - "host": "registrycluster.local", - "method": "PUT", - "useragent": "test/0.1" - }, - "actor": { - "name": "test-actor" - }, - "source": { - "addr": "hostname.local:port" - } - }, - { - "id": "asdf-asdf-asdf-asdf-2", - "timestamp": "2006-01-02T15:04:05Z", - "action": "push", - "target": { - "mediaType": "application/vnd.docker.container.image.rootfs.diff+x-gtar", - "length": 3, - "digest": "sha256:c3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5", - "repository": "library/test", - "url": "http://example.com/v2/library/test/blobs/sha256:c3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5" - }, - "request": { - "id": "asdfasdf", - "addr": "client.local", - "host": "registrycluster.local", - "method": "PUT", - "useragent": "test/0.1" - }, - "actor": { - "name": "test-actor" - }, - "source": { - "addr": "hostname.local:port" - } - } - ] -} -``` - -## Responses - -The registry is fairly accepting of the response codes from endpoints. If an -endpoint responds with any 2xx or 3xx response code (after following -redirects), the message will be considered delivered and discarded. - -In turn, it is recommended that endpoints are accepting of incoming responses, -as well. While the format of event envelopes are standardized by media type, -any "pickyness" about validation may cause the queue to backup on the -registry. - -## Monitoring - -The state of the endpoints are reported via the debug/vars http interface, -usually configured to `http://localhost:5001/debug/vars`. Information such as -configuration and metrics are available by endpoint. - -The following provides an example of a few endpoints that have experienced -several failures and have since recovered: - -```json -"notifications":{ - "endpoints":[ - { - "name":"local-5003", - "url":"http://localhost:5003/callback", - "Headers":{ - "Authorization":[ - "Bearer \u003can example token\u003e" - ] - }, - "Timeout":1000000000, - "Threshold":10, - "Backoff":1000000000, - "Metrics":{ - "Pending":76, - "Events":76, - "Successes":0, - "Failures":0, - "Errors":46, - "Statuses":{ - - } - } - }, - { - "name":"local-8083", - "url":"http://localhost:8083/callback", - "Headers":null, - "Timeout":1000000000, - "Threshold":10, - "Backoff":1000000000, - "Metrics":{ - "Pending":0, - "Events":76, - "Successes":76, - "Failures":0, - "Errors":28, - "Statuses":{ - "202 Accepted":76 - } - } - } - ] -} -``` - -If using notification as part of a larger application, it is _critical_ to -monitor the size ("Pending" above) of the endpoint queues. If failures or -queue sizes are increasing, it can indicate a larger problem. - -The logs are also a valuable resource for monitoring problems. A failing -endpoint will lead to messages similar to the following: - -``` -ERRO[0340] retryingsink: error writing events: httpSink{http://localhost:5003/callback}: error posting: Post http://localhost:5003/callback: dial tcp 127.0.0.1:5003: connection refused, retrying -WARN[0340] httpSink{http://localhost:5003/callback} encountered too many errors, backing off -``` - -The above indicates that several errors have led to a backoff and the registry -will wait before retrying. - -## Considerations - -Currently, the queues are inmemory, so endpoints should be _reasonably -reliable_. They are designed to make a best-effort to send the messages but if -an instance is lost, messages may be dropped. If an endpoint goes down, care -should be taken to ensure that the registry instance is not terminated before -the endpoint comes back up or messages will be lost. - -This can be mitigated by running endpoints in close proximity to the registry -instances. One could run an endpoint that pages to disk and then forwards a -request to provide better durability. - -The notification system is designed around a series of interchangeable _sinks_ -which can be wired up to achieve interesting behavior. If this system doesn't -provide acceptable guarantees, adding a transactional `Sink` to the registry -is a possibility, although it may have an effect on request service time. -Please see the -[godoc](http://godoc.org/github.com/docker/distribution/notifications#Sink) -for more information. diff --git a/vendor/github.com/docker/distribution/docs/osx-setup-guide.md b/vendor/github.com/docker/distribution/docs/osx-setup-guide.md deleted file mode 100644 index 15a26ff457..0000000000 --- a/vendor/github.com/docker/distribution/docs/osx-setup-guide.md +++ /dev/null @@ -1,79 +0,0 @@ - - -# OS X Setup Guide - -## Use-case - -This is useful if you intend to run a registry server natively on OS X. - -### Alternatives - -You can start a VM on OS X, and deploy your registry normally as a container using Docker inside that VM. - -The simplest road to get there is traditionally to use the [docker Toolbox](https://www.docker.com/toolbox), or [docker-machine](https://docs.docker.com/machine/), which usually relies on the [boot2docker](http://boot2docker.io/) iso inside a VirtualBox VM. - -### Solution - -Using the method described here, you install and compile your own from the git repository and run it as an OS X agent. - -### Gotchas - -Production services operation on OS X is out of scope of this document. Be sure you understand well these aspects before considering going to production with this. - -## Setup golang on your machine - -If you know, safely skip to the next section. - -If you don't, the TLDR is: - - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) - source ~/.gvm/scripts/gvm - gvm install go1.4.2 - gvm use go1.4.2 - -If you want to understand, you should read [How to Write Go Code](https://golang.org/doc/code.html). - -## Checkout the Docker Distribution source tree - - mkdir -p $GOPATH/src/github.com/docker - git clone https://github.com/docker/distribution.git $GOPATH/src/github.com/docker/distribution - cd $GOPATH/src/github.com/docker/distribution - -## Build the binary - - GOPATH=$(PWD)/Godeps/_workspace:$GOPATH make binaries - sudo cp bin/registry /usr/local/libexec/registry - -## Setup - -Copy the registry configuration file in place: - - mkdir /Users/Shared/Registry - cp docs/osx/config.yml /Users/Shared/Registry/config.yml - -## Running the Docker Registry under launchd - -Copy the Docker registry plist into place: - - plutil -lint docs/osx/com.docker.registry.plist - cp docs/osx/com.docker.registry.plist ~/Library/LaunchAgents/ - chmod 644 ~/Library/LaunchAgents/com.docker.registry.plist - -Start the Docker registry: - - launchctl load ~/Library/LaunchAgents/com.docker.registry.plist - -### Restarting the docker registry service - - launchctl stop com.docker.registry - launchctl start com.docker.registry - -### Unloading the docker registry service - - launchctl unload ~/Library/LaunchAgents/com.docker.registry.plist diff --git a/vendor/github.com/docker/distribution/docs/osx/com.docker.registry.plist b/vendor/github.com/docker/distribution/docs/osx/com.docker.registry.plist deleted file mode 100644 index 0982349f4d..0000000000 --- a/vendor/github.com/docker/distribution/docs/osx/com.docker.registry.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Label - com.docker.registry - KeepAlive - - StandardErrorPath - /Users/Shared/Registry/registry.log - StandardOutPath - /Users/Shared/Registry/registry.log - Program - /usr/local/libexec/registry - ProgramArguments - - /usr/local/libexec/registry - /Users/Shared/Registry/config.yml - - Sockets - - http-listen-address - - SockServiceName - 5000 - SockType - dgram - SockFamily - IPv4 - - http-debug-address - - SockServiceName - 5001 - SockType - dgram - SockFamily - IPv4 - - - - diff --git a/vendor/github.com/docker/distribution/docs/osx/config.yml b/vendor/github.com/docker/distribution/docs/osx/config.yml deleted file mode 100644 index 63b8f71353..0000000000 --- a/vendor/github.com/docker/distribution/docs/osx/config.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: 0.1 -log: - level: info - fields: - service: registry - environment: macbook-air -storage: - cache: - blobdescriptor: inmemory - filesystem: - rootdirectory: /Users/Shared/Registry -http: - addr: 0.0.0.0:5000 - secret: mytokensecret - debug: - addr: localhost:5001 diff --git a/vendor/github.com/docker/distribution/docs/overview.md b/vendor/github.com/docker/distribution/docs/overview.md deleted file mode 100644 index d3532b62eb..0000000000 --- a/vendor/github.com/docker/distribution/docs/overview.md +++ /dev/null @@ -1,21 +0,0 @@ - - -# Overview of Docker Registry Documentation - -The Docker Registry documentation includes the following topics: - -* [Docker Registry Introduction](index.md) -* [Understanding the Registry](introduction.md) -* [Deploying a registry server](deploying.md) -* [Registry Configuration Reference](configuration.md) -* [Notifications](notifications.md) -* [Recipes](recipes.md) -* [Getting help](help.md) diff --git a/vendor/github.com/docker/distribution/docs/recipes.md b/vendor/github.com/docker/distribution/docs/recipes.md deleted file mode 100644 index c9f64d5357..0000000000 --- a/vendor/github.com/docker/distribution/docs/recipes.md +++ /dev/null @@ -1,38 +0,0 @@ - - -# Recipes - -You will find here a list of "recipes", end-to-end scenarios for exotic or otherwise advanced use-cases. - -Most users are not expected to have a use for these. - -## Requirements - -You should have followed entirely the basic [deployment guide](deploying.md). - -If you have not, please take the time to do so. - -At this point, it's assumed that: - - * you understand Docker security requirements, and how to configure your docker engines properly - * you have installed Docker Compose - * it's HIGHLY recommended that you get a certificate from a known CA instead of self-signed certificates - * inside the current directory, you have a X509 `domain.crt` and `domain.key`, for the CN `myregistrydomain.com` - * be sure you have stopped and removed any previously running registry (typically `docker stop registry && docker rm -v registry`) - -## The List - - * [using Apache as an authenticating proxy](apache.md) - * [using Nginx as an authenticating proxy](nginx.md) - * [running a Registry on OS X](osx-setup-guide.md) - * [hacking the registry: build instructions](building.md) - * [mirror the Docker Hub](mirror.md) diff --git a/vendor/github.com/docker/distribution/docs/spec/api.md b/vendor/github.com/docker/distribution/docs/spec/api.md deleted file mode 100644 index fc074ffb8d..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/api.md +++ /dev/null @@ -1,4873 +0,0 @@ - - -# Docker Registry HTTP API V2 - -## Introduction - -The _Docker Registry HTTP API_ is the protocol to facilitate distribution of -images to the docker engine. It interacts with instances of the docker -registry, which is a service to manage information about docker images and -enable their distribution. The specification covers the operation of version 2 -of this API, known as _Docker Registry HTTP API V2_. - -While the V1 registry protocol is usable, there are several problems with the -architecture that have led to this new version. The main driver of this -specification is a set of changes to the docker the image format, covered in -[docker/docker#8093](https://github.com/docker/docker/issues/8093). -The new, self-contained image manifest simplifies image definition and improves -security. This specification will build on that work, leveraging new properties -of the manifest format to improve performance, reduce bandwidth usage and -decrease the likelihood of backend corruption. - -For relevant details and history leading up to this specification, please see -the following issues: - -- [docker/docker#8093](https://github.com/docker/docker/issues/8093) -- [docker/docker#9015](https://github.com/docker/docker/issues/9015) -- [docker/docker-registry#612](https://github.com/docker/docker-registry/issues/612) - -### Scope - -This specification covers the URL layout and protocols of the interaction -between docker registry and docker core. This will affect the docker core -registry API and the rewrite of docker-registry. Docker registry -implementations may implement other API endpoints, but they are not covered by -this specification. - -This includes the following features: - -- Namespace-oriented URI Layout -- PUSH/PULL registry server for V2 image manifest format -- Resumable layer PUSH support -- V2 Client library implementation - -While authentication and authorization support will influence this -specification, details of the protocol will be left to a future specification. -Relevant header definitions and error codes are present to provide an -indication of what a client may encounter. - -#### Future - -There are features that have been discussed during the process of cutting this -specification. The following is an incomplete list: - -- Immutable image references -- Multiple architecture support -- Migration from v2compatibility representation - -These may represent features that are either out of the scope of this -specification, the purview of another specification or have been deferred to a -future version. - -### Use Cases - -For the most part, the use cases of the former registry API apply to the new -version. Differentiating use cases are covered below. - -#### Image Verification - -A docker engine instance would like to run verified image named -"library/ubuntu", with the tag "latest". The engine contacts the registry, -requesting the manifest for "library/ubuntu:latest". An untrusted registry -returns a manifest. Before proceeding to download the individual layers, the -engine verifies the manifest's signature, ensuring that the content was -produced from a trusted source and no tampering has occurred. After each layer -is downloaded, the engine verifies the digest of the layer, ensuring that the -content matches that specified by the manifest. - -#### Resumable Push - -Company X's build servers lose connectivity to docker registry before -completing an image layer transfer. After connectivity returns, the build -server attempts to re-upload the image. The registry notifies the build server -that the upload has already been partially attempted. The build server -responds by only sending the remaining data to complete the image file. - -#### Resumable Pull - -Company X is having more connectivity problems but this time in their -deployment datacenter. When downloading an image, the connection is -interrupted before completion. The client keeps the partial data and uses http -`Range` requests to avoid downloading repeated data. - -#### Layer Upload De-duplication - -Company Y's build system creates two identical docker layers from build -processes A and B. Build process A completes uploading the layer before B. -When process B attempts to upload the layer, the registry indicates that its -not necessary because the layer is already known. - -If process A and B upload the same layer at the same time, both operations -will proceed and the first to complete will be stored in the registry (Note: -we may modify this to prevent dogpile with some locking mechanism). - -### Changes - -The V2 specification has been written to work as a living document, specifying -only what is certain and leaving what is not specified open or to future -changes. Only non-conflicting additions should be made to the API and accepted -changes should avoid preventing future changes from happening. - -This section should be updated when changes are made to the specification, -indicating what is different. Optionally, we may start marking parts of the -specification to correspond with the versions enumerated here. - -Each set of changes is given a letter corresponding to a set of modifications -that were applied to the baseline specification. These are merely for -reference and shouldn't be used outside the specification other than to -identify a set of modifications. - -
-
k
-
-
    -
  • Document use of Accept and Content-Type headers in manifests endpoint.
  • -
-
- -
j
-
-
    -
  • Add ability to mount blobs across repositories.
  • -
-
- -
i
-
-
    -
  • Clarified expected behavior response to manifest HEAD request.
  • -
-
- -
h
-
-
    -
  • All mention of tarsum removed.
  • -
-
- -
g
-
-
    -
  • Clarify behavior of pagination behavior with unspecified parameters.
  • -
-
- -
f
-
-
    -
  • Specify the delete API for layers and manifests.
  • -
-
- -
e
-
-
    -
  • Added support for listing registry contents.
  • -
  • Added pagination to tags API.
  • -
  • Added common approach to support pagination.
  • -
-
- -
d
-
-
    -
  • Allow repository name components to be one character.
  • -
  • Clarified that single component names are allowed.
  • -
-
- -
c
-
-
    -
  • Added section covering digest format.
  • -
  • Added more clarification that manifest cannot be deleted by tag.
  • -
-
- -
b
-
-
    -
  • Added capability of doing streaming upload to PATCH blob upload.
  • -
  • Updated PUT blob upload to no longer take final chunk, now requires entire data or no data.
  • -
  • Removed `416 Requested Range Not Satisfiable` response status from PUT blob upload.
  • -
-
- -
a
-
-
    -
  • Added support for immutable manifest references in manifest endpoints.
  • -
  • Deleting a manifest by tag has been deprecated.
  • -
  • Specified `Docker-Content-Digest` header for appropriate entities.
  • -
  • Added error code for unsupported operations.
  • -
-
-
- -## Overview - -This section covers client flows and details of the API endpoints. The URI -layout of the new API is structured to support a rich authentication and -authorization model by leveraging namespaces. All endpoints will be prefixed -by the API version and the repository name: - - /v2// - -For example, an API endpoint that will work with the `library/ubuntu` -repository, the URI prefix will be: - - /v2/library/ubuntu/ - -This scheme provides rich access control over various operations and methods -using the URI prefix and http methods that can be controlled in variety of -ways. - -Classically, repository names have always been two path components where each -path component is less than 30 characters. The V2 registry API does not -enforce this. The rules for a repository name are as follows: - -1. A repository name is broken up into _path components_. A component of a - repository name must be at least one lowercase, alpha-numeric characters, - optionally separated by periods, dashes or underscores. More strictly, it - must match the regular expression `[a-z0-9]+(?:[._-][a-z0-9]+)*`. -2. If a repository name has two or more path components, they must be - separated by a forward slash ("/"). -3. The total length of a repository name, including slashes, must be less the - 256 characters. - -These name requirements _only_ apply to the registry API and should accept a -superset of what is supported by other docker ecosystem components. - -All endpoints should support aggressive http caching, compression and range -headers, where appropriate. The new API attempts to leverage HTTP semantics -where possible but may break from standards to implement targeted features. - -For detail on individual endpoints, please see the [_Detail_](#detail) -section. - -### Errors - -Actionable failure conditions, covered in detail in their relevant sections, -are reported as part of 4xx responses, in a json response body. One or more -errors will be returned in the following format: - - { - "errors:" [{ - "code": , - "message": , - "detail": - }, - ... - ] - } - -The `code` field will be a unique identifier, all caps with underscores by -convention. The `message` field will be a human readable string. The optional -`detail` field may contain arbitrary json data providing information the -client can use to resolve the issue. - -While the client can take action on certain error codes, the registry may add -new error codes over time. All client implementations should treat unknown -error codes as `UNKNOWN`, allowing future error codes to be added without -breaking API compatibility. For the purposes of the specification error codes -will only be added and never removed. - -For a complete account of all error codes, please see the [_Errors_](#errors-2) -section. - -### API Version Check - -A minimal endpoint, mounted at `/v2/` will provide version support information -based on its response statuses. The request format is as follows: - - GET /v2/ - -If a `200 OK` response is returned, the registry implements the V2(.1) -registry API and the client may proceed safely with other V2 operations. -Optionally, the response may contain information about the supported paths in -the response body. The client should be prepared to ignore this data. - -If a `401 Unauthorized` response is returned, the client should take action -based on the contents of the "WWW-Authenticate" header and try the endpoint -again. Depending on access control setup, the client may still have to -authenticate against different resources, even if this check succeeds. - -If `404 Not Found` response status, or other unexpected status, is returned, -the client should proceed with the assumption that the registry does not -implement V2 of the API. - -When a `200 OK` or `401 Unauthorized` response is returned, the -"Docker-Distribution-API-Version" header should be set to "registry/2.0". -Clients may require this header value to determine if the endpoint serves this -API. When this header is omitted, clients may fallback to an older API version. - -### Content Digests - -This API design is driven heavily by [content addressability](http://en.wikipedia.org/wiki/Content-addressable_storage). -The core of this design is the concept of a content addressable identifier. It -uniquely identifies content by taking a collision-resistant hash of the bytes. -Such an identifier can be independently calculated and verified by selection -of a common _algorithm_. If such an identifier can be communicated in a secure -manner, one can retrieve the content from an insecure source, calculate it -independently and be certain that the correct content was obtained. Put simply, -the identifier is a property of the content. - -To disambiguate from other concepts, we call this identifier a _digest_. A -_digest_ is a serialized hash result, consisting of a _algorithm_ and _hex_ -portion. The _algorithm_ identifies the methodology used to calculate the -digest. The _hex_ portion is the hex-encoded result of the hash. - -We define a _digest_ string to match the following grammar: -``` -digest := algorithm ":" hex -algorithm := /[A-Fa-f0-9_+.-]+/ -hex := /[A-Fa-f0-9]+/ -``` - -Some examples of _digests_ include the following: - -digest | description | -----------------------------------------------------------------------------------|------------------------------------------------ -sha256:6c3c624b58dbbcd3c0dd82b4c53f04194d1247c6eebdaab7c610cf7d66709b3b | Common sha256 based digest | - -While the _algorithm_ does allow one to implement a wide variety of -algorithms, compliant implementations should use sha256. Heavy processing of -input before calculating a hash is discouraged to avoid degrading the -uniqueness of the _digest_ but some canonicalization may be performed to -ensure consistent identifiers. - -Let's use a simple example in pseudo-code to demonstrate a digest calculation: -``` -let C = 'a small string' -let B = sha256(C) -let D = 'sha256:' + EncodeHex(B) -let ID(C) = D -``` - -Above, we have bytestring `C` passed into a function, `SHA256`, that returns a -bytestring `B`, which is the hash of `C`. `D` gets the algorithm concatenated -with the hex encoding of `B`. We then define the identifier of `C` to `ID(C)` -as equal to `D`. A digest can be verified by independently calculating `D` and -comparing it with identifier `ID(C)`. - -#### Digest Header - -To provide verification of http content, any response may include a -`Docker-Content-Digest` header. This will include the digest of the target -entity returned in the response. For blobs, this is the entire blob content. For -manifests, this is the manifest body without the signature content, also known -as the JWS payload. Note that the commonly used canonicalization for digest -calculation may be dependent on the mediatype of the content, such as with -manifests. - -The client may choose to ignore the header or may verify it to ensure content -integrity and transport security. This is most important when fetching by a -digest. To ensure security, the content should be verified against the digest -used to fetch the content. At times, the returned digest may differ from that -used to initiate a request. Such digests are considered to be from different -_domains_, meaning they have different values for _algorithm_. In such a case, -the client may choose to verify the digests in both domains or ignore the -server's digest. To maintain security, the client _must_ always verify the -content against the _digest_ used to fetch the content. - -> __IMPORTANT:__ If a _digest_ is used to fetch content, the client should use -> the same digest used to fetch the content to verify it. The header -> `Docker-Content-Digest` should not be trusted over the "local" digest. - -### Pulling An Image - -An "image" is a combination of a JSON manifest and individual layer files. The -process of pulling an image centers around retrieving these two components. - -The first step in pulling an image is to retrieve the manifest. For reference, -the relevant manifest fields for the registry are the following: - - field | description | -----------|------------------------------------------------| -name | The name of the image. | -tag | The tag for this version of the image. | -fsLayers | A list of layer descriptors (including digest) | -signature | A JWS used to verify the manifest content | - -For more information about the manifest format, please see -[docker/docker#8093](https://github.com/docker/docker/issues/8093). - -When the manifest is in hand, the client must verify the signature to ensure -the names and layers are valid. Once confirmed, the client will then use the -digests to download the individual layers. Layers are stored in as blobs in -the V2 registry API, keyed by their digest. - -#### Pulling an Image Manifest - -The image manifest can be fetched with the following url: - -``` -GET /v2//manifests/ -``` - -The `name` and `reference` parameter identify the image and are required. The -reference may include a tag or digest. - -The client should include an Accept header indicating which manifest content -types it supports. For more details on the manifest formats and their content -types, see [manifest-v2-1.md](manifest-v2-1.md) and -[manifest-v2-2.md](manifest-v2-2.md). In a successful response, the Content-Type -header will indicate which manifest type is being returned. - -A `404 Not Found` response will be returned if the image is unknown to the -registry. If the image exists and the response is successful, the image -manifest will be returned, with the following format (see -[docker/docker#8093](https://github.com/docker/docker/issues/8093) for details): - - { - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": - }, - ... - ] - ], - "history": , - "signature": - } - -The client should verify the returned manifest signature for authenticity -before fetching layers. - -##### Existing Manifests - -The image manifest can be checked for existence with the following url: - -``` -HEAD /v2//manifests/ -``` - -The `name` and `reference` parameter identify the image and are required. The -reference may include a tag or digest. - -A `404 Not Found` response will be returned if the image is unknown to the -registry. If the image exists and the response is successful the response will -be as follows: - -``` -200 OK -Content-Length: -Docker-Content-Digest: -``` - - -#### Pulling a Layer - -Layers are stored in the blob portion of the registry, keyed by digest. -Pulling a layer is carried out by a standard http request. The URL is as -follows: - - GET /v2//blobs/ - -Access to a layer will be gated by the `name` of the repository but is -identified uniquely in the registry by `digest`. - -This endpoint may issue a 307 (302 for /blobs/uploads/ -``` - -The parameters of this request are the image namespace under which the layer -will be linked. Responses to this request are covered below. - -##### Existing Layers - -The existence of a layer can be checked via a `HEAD` request to the blob store -API. The request should be formatted as follows: - -``` -HEAD /v2//blobs/ -``` - -If the layer with the digest specified in `digest` is available, a 200 OK -response will be received, with no actual body content (this is according to -http specification). The response will look as follows: - -``` -200 OK -Content-Length: -Docker-Content-Digest: -``` - -When this response is received, the client can assume that the layer is -already available in the registry under the given name and should take no -further action to upload the layer. Note that the binary digests may differ -for the existing registry layer, but the digests will be guaranteed to match. - -##### Uploading the Layer - -If the POST request is successful, a `202 Accepted` response will be returned -with the upload URL in the `Location` header: - -``` -202 Accepted -Location: /v2//blobs/uploads/ -Range: bytes=0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -The rest of the upload process can be carried out with the returned url, -called the "Upload URL" from the `Location` header. All responses to the -upload url, whether sending data or getting status, will be in this format. -Though the URI format (`/v2//blobs/uploads/`) for the `Location` -header is specified, clients should treat it as an opaque url and should never -try to assemble it. While the `uuid` parameter may be an actual UUID, this -proposal imposes no constraints on the format and clients should never impose -any. - -If clients need to correlate local upload state with remote upload state, the -contents of the `Docker-Upload-UUID` header should be used. Such an id can be -used to key the last used location header when implementing resumable uploads. - -##### Upload Progress - -The progress and chunk coordination of the upload process will be coordinated -through the `Range` header. While this is a non-standard use of the `Range` -header, there are examples of [similar approaches](https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol) in APIs with heavy use. -For an upload that just started, for an example with a 1000 byte layer file, -the `Range` header would be as follows: - -``` -Range: bytes=0-0 -``` - -To get the status of an upload, issue a GET request to the upload URL: - -``` -GET /v2//blobs/uploads/ -Host: -``` - -The response will be similar to the above, except will return 204 status: - -``` -204 No Content -Location: /v2//blobs/uploads/ -Range: bytes=0- -Docker-Upload-UUID: -``` - -Note that the HTTP `Range` header byte ranges are inclusive and that will be -honored, even in non-standard use cases. - -##### Monolithic Upload - -A monolithic upload is simply a chunked upload with a single chunk and may be -favored by clients that would like to avoided the complexity of chunking. To -carry out a "monolithic" upload, one can simply put the entire content blob to -the provided URL: - -``` -PUT /v2//blobs/uploads/?digest= -Content-Length: -Content-Type: application/octet-stream - - -``` - -The "digest" parameter must be included with the PUT request. Please see the -[_Completed Upload_](#completed-upload) section for details on the parameters -and expected responses. - -Additionally, the upload can be completed with a single `POST` request to -the uploads endpoint, including the "size" and "digest" parameters: - -``` -POST /v2//blobs/uploads/?digest= -Content-Length: -Content-Type: application/octet-stream - - -``` - -On the registry service, this should allocate a download, accept and verify -the data and return the same response as the final chunk of an upload. If the -POST request fails collecting the data in any way, the registry should attempt -to return an error response to the client with the `Location` header providing -a place to continue the download. - -The single `POST` method is provided for convenience and most clients should -implement `POST` + `PUT` to support reliable resume of uploads. - -##### Chunked Upload - -To carry out an upload of a chunk, the client can specify a range header and -only include that part of the layer file: - -``` -PATCH /v2//blobs/uploads/ -Content-Length: -Content-Range: - -Content-Type: application/octet-stream - - -``` - -There is no enforcement on layer chunk splits other than that the server must -receive them in order. The server may enforce a minimum chunk size. If the -server cannot accept the chunk, a `416 Requested Range Not Satisfiable` -response will be returned and will include a `Range` header indicating the -current status: - -``` -416 Requested Range Not Satisfiable -Location: /v2//blobs/uploads/ -Range: 0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -If this response is received, the client should resume from the "last valid -range" and upload the subsequent chunk. A 416 will be returned under the -following conditions: - -- Invalid Content-Range header format -- Out of order chunk: the range of the next chunk must start immediately after - the "last valid range" from the previous response. - -When a chunk is accepted as part of the upload, a `202 Accepted` response will -be returned, including a `Range` header with the current upload status: - -``` -202 Accepted -Location: /v2//blobs/uploads/ -Range: bytes=0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -##### Completed Upload - -For an upload to be considered complete, the client must submit a `PUT` -request on the upload endpoint with a digest parameter. If it is not provided, -the upload will not be considered complete. The format for the final chunk -will be as follows: - -``` -PUT /v2//blob/uploads/?digest= -Content-Length: -Content-Range: - -Content-Type: application/octet-stream - - -``` - -Optionally, if all chunks have already been uploaded, a `PUT` request with a -`digest` parameter and zero-length body may be sent to complete and validated -the upload. Multiple "digest" parameters may be provided with different -digests. The server may verify none or all of them but _must_ notify the -client if the content is rejected. - -When the last chunk is received and the layer has been validated, the client -will receive a `201 Created` response: - -``` -201 Created -Location: /v2//blobs/ -Content-Length: 0 -Docker-Content-Digest: -``` - -The `Location` header will contain the registry URL to access the accepted -layer file. The `Docker-Content-Digest` header returns the canonical digest of -the uploaded blob which may differ from the provided digest. Most clients may -ignore the value but if it is used, the client should verify the value against -the uploaded blob data. - -###### Digest Parameter - -The "digest" parameter is designed as an opaque parameter to support -verification of a successful transfer. For example, a HTTP URI parameter -might be as follows: - -``` -sha256:6c3c624b58dbbcd3c0dd82b4c53f04194d1247c6eebdaab7c610cf7d66709b3b -``` - -Given this parameter, the registry will verify that the provided content does -match this digest. - -##### Canceling an Upload - -An upload can be cancelled by issuing a DELETE request to the upload endpoint. -The format will be as follows: - -``` -DELETE /v2//blobs/uploads/ -``` - -After this request is issued, the upload uuid will no longer be valid and the -registry server will dump all intermediate data. While uploads will time out -if not completed, clients should issue this request if they encounter a fatal -error but still have the ability to issue an http request. - -##### Cross Repository Blob Mount - -A blob may be mounted from another repository that the client has read access -to, removing the need to upload a blob already known to the registry. To issue -a blob mount instead of an upload, a POST request should be issued in the -following format: - -``` -POST /v2//blobs/uploads/?mount=&from= -Content-Length: 0 -``` - -If the blob is successfully mounted, the client will receive a `201 Created` -response: - -``` -201 Created -Location: /v2//blobs/ -Content-Length: 0 -Docker-Content-Digest: -``` - -The `Location` header will contain the registry URL to access the accepted -layer file. The `Docker-Content-Digest` header returns the canonical digest of -the uploaded blob which may differ from the provided digest. Most clients may -ignore the value but if it is used, the client should verify the value against -the uploaded blob data. - -If a mount fails due to invalid repository or digest arguments, the registry -will fall back to the standard upload behavior and return a `202 Accepted` with -the upload URL in the `Location` header: - -``` -202 Accepted -Location: /v2//blobs/uploads/ -Range: bytes=0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -This behavior is consistent with older versions of the registry, which do not -recognize the repository mount query parameters. - -Note: a client may issue a HEAD request to check existence of a blob in a source -repository to distinguish between the registry not supporting blob mounts and -the blob not existing in the expected repository. - -##### Errors - -If an 502, 503 or 504 error is received, the client should assume that the -download can proceed due to a temporary condition, honoring the appropriate -retry mechanism. Other 5xx errors should be treated as terminal. - -If there is a problem with the upload, a 4xx error will be returned indicating -the problem. After receiving a 4xx response (except 416, as called out above), -the upload will be considered failed and the client should take appropriate -action. - -Note that the upload url will not be available forever. If the upload uuid is -unknown to the registry, a `404 Not Found` response will be returned and the -client must restart the upload process. - -### Deleting a Layer - -A layer may be deleted from the registry via its `name` and `digest`. A -delete may be issued with the following request format: - - DELETE /v2//blobs/ - -If the blob exists and has been successfully deleted, the following response -will be issued: - - 202 Accepted - Content-Length: None - -If the blob had already been deleted or did not exist, a `404 Not Found` -response will be issued instead. - -If a layer is deleted which is referenced by a manifest in the registry, -then the complete images will not be resolvable. - -#### Pushing an Image Manifest - -Once all of the layers for an image are uploaded, the client can upload the -image manifest. An image can be pushed using the following request format: - - PUT /v2//manifests/ - Content-Type: - - { - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": - }, - ... - ] - ], - "history": , - "signature": , - ... - } - -The `name` and `reference` fields of the response body must match those -specified in the URL. The `reference` field may be a "tag" or a "digest". The -content type should match the type of the manifest being uploaded, as specified -in [manifest-v2-1.md](manifest-v2-1.md) and [manifest-v2-2.md](manifest-v2-2.md). - -If there is a problem with pushing the manifest, a relevant 4xx response will -be returned with a JSON error message. Please see the -[_PUT Manifest_](#put-manifest) section for details on possible error codes that -may be returned. - -If one or more layers are unknown to the registry, `BLOB_UNKNOWN` errors are -returned. The `detail` field of the error response will have a `digest` field -identifying the missing blob. An error is returned for each unknown blob. The -response format is as follows: - - { - "errors:" [{ - "code": "BLOB_UNKNOWN", - "message": "blob unknown to registry", - "detail": { - "digest": - } - }, - ... - ] - } - -### Listing Repositories - -Images are stored in collections, known as a _repository_, which is keyed by a -`name`, as seen throughout the API specification. A registry instance may -contain several repositories. The list of available repositories is made -available through the _catalog_. - -The catalog for a given registry can be retrieved with the following request: - -``` -GET /v2/_catalog -``` - -The response will be in the following format: - -``` -200 OK -Content-Type: application/json - -{ - "repositories": [ - , - ... - ] -} -``` - -Note that the contents of the response are specific to the registry -implementation. Some registries may opt to provide a full catalog output, -limit it based on the user's access level or omit upstream results, if -providing mirroring functionality. Subsequently, the presence of a repository -in the catalog listing only means that the registry *may* provide access to -the repository at the time of the request. Conversely, a missing entry does -*not* mean that the registry does not have the repository. More succinctly, -the presence of a repository only guarantees that it is there but not that it -is _not_ there. - -For registries with a large number of repositories, this response may be quite -large. If such a response is expected, one should use pagination. A registry -may also limit the amount of responses returned even if pagination was not -explicitly requested. In this case the `Link` header will be returned along -with the results, and subsequent results can be obtained by following the link -as if pagination had been initially requested. - -For details of the `Link` header, please see the [_Pagination_](#pagination) -section. - -#### Pagination - -Paginated catalog results can be retrieved by adding an `n` parameter to the -request URL, declaring that the response should be limited to `n` results. -Starting a paginated flow begins as follows: - -``` -GET /v2/_catalog?n= -``` - -The above specifies that a catalog response should be returned, from the start of -the result set, ordered lexically, limiting the number of results to `n`. The -response to such a request would look as follows: - -``` -200 OK -Content-Type: application/json -Link: <?n=&last=>; rel="next" - -{ - "repositories": [ - , - ... - ] -} -``` - -The above includes the _first_ `n` entries from the result set. To get the -_next_ `n` entries, one can create a URL where the argument `last` has the -value from `repositories[len(repositories)-1]`. If there are indeed more -results, the URL for the next block is encoded in an -[RFC5988](https://tools.ietf.org/html/rfc5988) `Link` header, as a "next" -relation. The presence of the `Link` header communicates to the client that -the entire result set has not been returned and another request must be -issued. If the header is not present, the client can assume that all results -have been received. - -> __NOTE:__ In the request template above, note that the brackets -> are required. For example, if the url is -> `http://example.com/v2/_catalog?n=20&last=b`, the value of the header would -> be `; rel="next"`. Please see -> [RFC5988](https://tools.ietf.org/html/rfc5988) for details. - -Compliant client implementations should always use the `Link` header -value when proceeding through results linearly. The client may construct URLs -to skip forward in the catalog. - -To get the next result set, a client would issue the request as follows, using -the URL encoded in the described `Link` header: - -``` -GET /v2/_catalog?n=&last= -``` - -The above process should then be repeated until the `Link` header is no longer -set. - -The catalog result set is represented abstractly as a lexically sorted list, -where the position in that list can be specified by the query term `last`. The -entries in the response start _after_ the term specified by `last`, up to `n` -entries. - -The behavior of `last` is quite simple when demonstrated with an example. Let -us say the registry has the following repositories: - -``` -a -b -c -d -``` - -If the value of `n` is 2, _a_ and _b_ will be returned on the first response. -The `Link` header returned on the response will have `n` set to 2 and last set -to _b_: - -``` -Link: <?n=2&last=b>; rel="next" -``` - -The client can then issue the request with the above value from the `Link` -header, receiving the values _c_ and _d_. Note that `n` may change on the second -to last response or be fully omitted, depending on the server implementation. - -### Listing Image Tags - -It may be necessary to list all of the tags under a given repository. The tags -for an image repository can be retrieved with the following request: - - GET /v2//tags/list - -The response will be in the following format: - - 200 OK - Content-Type: application/json - - { - "name": , - "tags": [ - , - ... - ] - } - -For repositories with a large number of tags, this response may be quite -large. If such a response is expected, one should use the pagination. - -#### Pagination - -Paginated tag results can be retrieved by adding the appropriate parameters to -the request URL described above. The behavior of tag pagination is identical -to that specified for catalog pagination. We cover a simple flow to highlight -any differences. - -Starting a paginated flow may begin as follows: - -``` -GET /v2//tags/list?n= -``` - -The above specifies that a tags response should be returned, from the start of -the result set, ordered lexically, limiting the number of results to `n`. The -response to such a request would look as follows: - -``` -200 OK -Content-Type: application/json -Link: <?n=&last=>; rel="next" - -{ - "name": , - "tags": [ - , - ... - ] -} -``` - -To get the next result set, a client would issue the request as follows, using -the value encoded in the [RFC5988](https://tools.ietf.org/html/rfc5988) `Link` -header: - -``` -GET /v2//tags/list?n=&last= -``` - -The above process should then be repeated until the `Link` header is no longer -set in the response. The behavior of the `last` parameter, the provided -response result, lexical ordering and encoding of the `Link` header are -identical to that of catalog pagination. - -### Deleting an Image - -An image may be deleted from the registry via its `name` and `reference`. A -delete may be issued with the following request format: - - DELETE /v2//manifests/ - -For deletes, `reference` *must* be a digest or the delete will fail. If the -image exists and has been successfully deleted, the following response will be -issued: - - 202 Accepted - Content-Length: None - -If the image had already been deleted or did not exist, a `404 Not Found` -response will be issued instead. - -> **Note** When deleting a manifest from a registry version 2.3 or later, the -> following header must be used when `HEAD` or `GET`-ing the manifest to obtain -> the correct digest to delete: - - Accept: application/vnd.docker.distribution.manifest.v2+json - -> for more details, see: [compatibility.md](../compatibility.md#content-addressable-storage-cas) - -## Detail - -> **Note**: This section is still under construction. For the purposes of -> implementation, if any details below differ from the described request flows -> above, the section below should be corrected. When they match, this note -> should be removed. - -The behavior of the endpoints are covered in detail in this section, organized -by route and entity. All aspects of the request and responses are covered, -including headers, parameters and body formats. Examples of requests and their -corresponding responses, with success and failure, are enumerated. - -> **Note**: The sections on endpoint detail are arranged with an example -> request, a description of the request, followed by information about that -> request. - -A list of methods and URIs are covered in the table below: - -|Method|Path|Entity|Description| -|------|----|------|-----------| -| GET | `/v2/` | Base | Check that the endpoint implements Docker Registry API V2. | -| GET | `/v2//tags/list` | Tags | Fetch the tags under the repository identified by `name`. | -| GET | `/v2//manifests/` | Manifest | Fetch the manifest identified by `name` and `reference` where `reference` can be a tag or digest. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data. | -| PUT | `/v2//manifests/` | Manifest | Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest. | -| DELETE | `/v2//manifests/` | Manifest | Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`. | -| GET | `/v2//blobs/` | Blob | Retrieve the blob from the registry identified by `digest`. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data. | -| DELETE | `/v2//blobs/` | Blob | Delete the blob identified by `name` and `digest` | -| POST | `/v2//blobs/uploads/` | Initiate Blob Upload | Initiate a resumable blob upload. If successful, an upload location will be provided to complete the upload. Optionally, if the `digest` parameter is present, the request body will be used to complete the upload in a single request. | -| GET | `/v2//blobs/uploads/` | Blob Upload | Retrieve status of upload identified by `uuid`. The primary purpose of this endpoint is to resolve the current status of a resumable upload. | -| PATCH | `/v2//blobs/uploads/` | Blob Upload | Upload a chunk of data for the specified upload. | -| PUT | `/v2//blobs/uploads/` | Blob Upload | Complete the upload specified by `uuid`, optionally appending the body as the final chunk. | -| DELETE | `/v2//blobs/uploads/` | Blob Upload | Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout. | -| GET | `/v2/_catalog` | Catalog | Retrieve a sorted, json list of repositories available in the registry. | - - -The detail for each endpoint is covered in the following sections. - -### Errors - -The error codes encountered via the API are enumerated in the following table: - -|Code|Message|Description| -|----|-------|-----------| - `BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a blob is unknown to the registry in a specified repository. This can be returned with a standard get or if a manifest references an unknown layer during upload. - `BLOB_UPLOAD_INVALID` | blob upload invalid | The blob upload encountered an error and can no longer proceed. - `BLOB_UPLOAD_UNKNOWN` | blob upload unknown to registry | If a blob upload has been cancelled or was never started, this error code may be returned. - `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. - `MANIFEST_BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a manifest blob is unknown to the registry. - `MANIFEST_INVALID` | manifest invalid | During upload, manifests undergo several checks ensuring validity. If those checks fail, this error may be returned, unless a more specific error is included. The detail will contain information the failed validation. - `MANIFEST_UNKNOWN` | manifest unknown | This error is returned when the manifest, identified by name and tag is unknown to the repository. - `MANIFEST_UNVERIFIED` | manifest failed signature verification | During manifest upload, if the manifest fails signature verification, this error will be returned. - `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. - `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. - `SIZE_INVALID` | provided length did not match content length | When a layer is uploaded, the provided size will be checked against the uploaded content. If they do not match, this error will be returned. - `TAG_INVALID` | manifest tag did not match URI | During a manifest upload, if the tag in the manifest does not match the uri tag, this error will be returned. - `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. - `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. - `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. - - - -### Base - -Base V2 API route. Typically, this can be used for lightweight version checks and to validate registry authentication. - - - -#### GET Base - -Check that the endpoint implements Docker Registry API V2. - - - -``` -GET /v2/ -Host: -Authorization: -``` - - - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| - - - - -###### On Success: OK - -``` -200 OK -``` - -The API implements V2 protocol and is accessible. - - - - -###### On Failure: Not Found - -``` -404 Not Found -``` - -The registry does not implement the V2 API. - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - - - -### Tags - -Retrieve information about tags. - - - -#### GET Tags - -Fetch the tags under the repository identified by `name`. - - -##### Tags - -``` -GET /v2//tags/list -Host: -Authorization: -``` - -Return all tags for the repository - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| - - - - -###### On Success: OK - -``` -200 OK -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "name": , - "tags": [ - , - ... - ] -} -``` - -A list of tags for the named repository. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -##### Tags Paginated - -``` -GET /v2//tags/list?n=&last= -``` - -Return a portion of the tags for the specified repository. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`name`|path|Name of the target repository.| -|`n`|query|Limit the number of entries in each response. It not present, all entries will be returned.| -|`last`|query|Result set will include values lexically after last.| - - - - -###### On Success: OK - -``` -200 OK -Content-Length: -Link: <?n=&last=>; rel="next" -Content-Type: application/json; charset=utf-8 - -{ - "name": , - "tags": [ - , - ... - ], -} -``` - -A list of tags for the named repository. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| -|`Link`|RFC5988 compliant rel='next' with URL to next result set, if available| - - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - - -### Manifest - -Create, update, delete and retrieve manifests. - - - -#### GET Manifest - -Fetch the manifest identified by `name` and `reference` where `reference` can be a tag or digest. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data. - - - -``` -GET /v2//manifests/ -Host: -Authorization: -``` - - - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`reference`|path|Tag or digest of the target manifest.| - - - - -###### On Success: OK - -``` -200 OK -Docker-Content-Digest: -Content-Type: - -{ - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": "" - }, - ... - ] - ], - "history": , - "signature": -} -``` - -The manifest identified by `name` and `reference`. The contents can be used to identify and resolve resources required to run the specified image. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Docker-Content-Digest`|Digest of the targeted content for the request.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The name or reference was invalid. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `TAG_INVALID` | manifest tag did not match URI | During a manifest upload, if the tag in the manifest does not match the uri tag, this error will be returned. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - -#### PUT Manifest - -Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest. - - - -``` -PUT /v2//manifests/ -Host: -Authorization: -Content-Type: - -{ - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": "" - }, - ... - ] - ], - "history": , - "signature": -} -``` - - - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`reference`|path|Tag or digest of the target manifest.| - - - - -###### On Success: Created - -``` -201 Created -Location: -Content-Length: 0 -Docker-Content-Digest: -``` - -The manifest has been accepted by the registry and is stored under the specified `name` and `tag`. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|The canonical location url of the uploaded manifest.| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Content-Digest`|Digest of the targeted content for the request.| - - - - -###### On Failure: Invalid Manifest - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The received manifest was invalid in some way, as described by the error codes. The client should resolve the issue and retry the request. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `TAG_INVALID` | manifest tag did not match URI | During a manifest upload, if the tag in the manifest does not match the uri tag, this error will be returned. | -| `MANIFEST_INVALID` | manifest invalid | During upload, manifests undergo several checks ensuring validity. If those checks fail, this error may be returned, unless a more specific error is included. The detail will contain information the failed validation. | -| `MANIFEST_UNVERIFIED` | manifest failed signature verification | During manifest upload, if the manifest fails signature verification, this error will be returned. | -| `BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a blob is unknown to the registry in a specified repository. This can be returned with a standard get or if a manifest references an unknown layer during upload. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -###### On Failure: Missing Layer(s) - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [{ - "code": "BLOB_UNKNOWN", - "message": "blob unknown to registry", - "detail": { - "digest": "" - } - }, - ... - ] -} -``` - -One or more layers may be missing during a manifest upload. If so, the missing layers will be enumerated in the error response. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a blob is unknown to the registry in a specified repository. This can be returned with a standard get or if a manifest references an unknown layer during upload. | - - - -###### On Failure: Not allowed - -``` -405 Method Not Allowed -``` - -Manifest put is not allowed because the registry is configured as a pull-through cache or for some other reason - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. | - - - - -#### DELETE Manifest - -Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`. - - - -``` -DELETE /v2//manifests/ -Host: -Authorization: -``` - - - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`reference`|path|Tag or digest of the target manifest.| - - - - -###### On Success: Accepted - -``` -202 Accepted -``` - - - - - - -###### On Failure: Invalid Name or Reference - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The specified `name` or `reference` were invalid and the delete was unable to proceed. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `TAG_INVALID` | manifest tag did not match URI | During a manifest upload, if the tag in the manifest does not match the uri tag, this error will be returned. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -###### On Failure: Unknown Manifest - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The specified `name` or `reference` are unknown to the registry and the delete was unable to proceed. Clients can assume the manifest was already deleted if this response is returned. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | -| `MANIFEST_UNKNOWN` | manifest unknown | This error is returned when the manifest, identified by name and tag is unknown to the repository. | - - - -###### On Failure: Not allowed - -``` -405 Method Not Allowed -``` - -Manifest delete is not allowed because the registry is configured as a pull-through cache or `delete` has been disabled. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. | - - - - - -### Blob - -Operations on blobs identified by `name` and `digest`. Used to fetch or delete layers by digest. - - - -#### GET Blob - -Retrieve the blob from the registry identified by `digest`. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data. - - -##### Fetch Blob - -``` -GET /v2//blobs/ -Host: -Authorization: -``` - - - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`digest`|path|Digest of desired blob.| - - - - -###### On Success: OK - -``` -200 OK -Content-Length: -Docker-Content-Digest: -Content-Type: application/octet-stream - - -``` - -The blob identified by `digest` is available. The blob content will be present in the body of the request. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|The length of the requested blob content.| -|`Docker-Content-Digest`|Digest of the targeted content for the request.| - -###### On Success: Temporary Redirect - -``` -307 Temporary Redirect -Location: -Docker-Content-Digest: -``` - -The blob identified by `digest` is available at the provided location. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|The location where the layer should be accessible.| -|`Docker-Content-Digest`|Digest of the targeted content for the request.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -There was a problem with the request that needs to be addressed by the client, such as an invalid `name` or `tag`. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The blob, identified by `name` and `digest`, is unknown to the registry. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | -| `BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a blob is unknown to the registry in a specified repository. This can be returned with a standard get or if a manifest references an unknown layer during upload. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -##### Fetch Blob Part - -``` -GET /v2//blobs/ -Host: -Authorization: -Range: bytes=- -``` - -This endpoint may also support RFC7233 compliant range requests. Support can be detected by issuing a HEAD request. If the header `Accept-Range: bytes` is returned, range requests can be used to fetch partial content. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Range`|header|HTTP Range header specifying blob chunk.| -|`name`|path|Name of the target repository.| -|`digest`|path|Digest of desired blob.| - - - - -###### On Success: Partial Content - -``` -206 Partial Content -Content-Length: -Content-Range: bytes -/ -Content-Type: application/octet-stream - - -``` - -The blob identified by `digest` is available. The specified chunk of blob content will be present in the body of the request. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|The length of the requested blob chunk.| -|`Content-Range`|Content range of blob chunk.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -There was a problem with the request that needs to be addressed by the client, such as an invalid `name` or `tag`. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - - - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | -| `BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a blob is unknown to the registry in a specified repository. This can be returned with a standard get or if a manifest references an unknown layer during upload. | - - - -###### On Failure: Requested Range Not Satisfiable - -``` -416 Requested Range Not Satisfiable -``` - -The range specification cannot be satisfied for the requested content. This can happen when the range is not formatted correctly or if the range is outside of the valid size of the content. - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - -#### DELETE Blob - -Delete the blob identified by `name` and `digest` - - - -``` -DELETE /v2//blobs/ -Host: -Authorization: -``` - - - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`digest`|path|Digest of desired blob.| - - - - -###### On Success: Accepted - -``` -202 Accepted -Content-Length: 0 -Docker-Content-Digest: -``` - - - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|0| -|`Docker-Content-Digest`|Digest of the targeted content for the request.| - - - - -###### On Failure: Invalid Name or Digest - -``` -400 Bad Request -``` - - - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The blob, identified by `name` and `digest`, is unknown to the registry. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | -| `BLOB_UNKNOWN` | blob unknown to registry | This error may be returned when a blob is unknown to the registry in a specified repository. This can be returned with a standard get or if a manifest references an unknown layer during upload. | - - - -###### On Failure: Method Not Allowed - -``` -405 Method Not Allowed -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -Blob delete is not allowed because the registry is configured as a pull-through cache or `delete` has been disabled - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - - -### Initiate Blob Upload - -Initiate a blob upload. This endpoint can be used to create resumable uploads or monolithic uploads. - - - -#### POST Initiate Blob Upload - -Initiate a resumable blob upload. If successful, an upload location will be provided to complete the upload. Optionally, if the `digest` parameter is present, the request body will be used to complete the upload in a single request. - - -##### Initiate Monolithic Blob Upload - -``` -POST /v2//blobs/uploads/?digest= -Host: -Authorization: -Content-Length: -Content-Type: application/octect-stream - - -``` - -Upload a blob identified by the `digest` parameter in single request. This upload will not be resumable unless a recoverable error is returned. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Content-Length`|header|| -|`name`|path|Name of the target repository.| -|`digest`|query|Digest of uploaded blob. If present, the upload will be completed, in a single request, with contents of the request body as the resulting blob.| - - - - -###### On Success: Created - -``` -201 Created -Location: -Content-Length: 0 -Docker-Upload-UUID: -``` - -The blob has been created in the registry and is available at the provided location. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| - - - - -###### On Failure: Invalid Name or Digest - -``` -400 Bad Request -``` - - - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | - - - -###### On Failure: Not allowed - -``` -405 Method Not Allowed -``` - -Blob upload is not allowed because the registry is configured as a pull-through cache or for some other reason - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -##### Initiate Resumable Blob Upload - -``` -POST /v2//blobs/uploads/ -Host: -Authorization: -Content-Length: 0 -``` - -Initiate a resumable blob upload with an empty request body. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Content-Length`|header|The `Content-Length` header must be zero and the body must be empty.| -|`name`|path|Name of the target repository.| - - - - -###### On Success: Accepted - -``` -202 Accepted -Content-Length: 0 -Location: /v2//blobs/uploads/ -Range: 0-0 -Docker-Upload-UUID: -``` - -The upload has been created. The `Location` header must be used to complete the upload. The response should be identical to a `GET` request on the contents of the returned `Location` header. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Location`|The location of the created upload. Clients should use the contents verbatim to complete the upload, adding parameters where required.| -|`Range`|Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.| -|`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| - - - - -###### On Failure: Invalid Name or Digest - -``` -400 Bad Request -``` - - - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -##### Mount Blob - -``` -POST /v2//blobs/uploads/?mount=&from= -Host: -Authorization: -Content-Length: 0 -``` - -Mount a blob identified by the `mount` parameter from another repository. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Content-Length`|header|The `Content-Length` header must be zero and the body must be empty.| -|`name`|path|Name of the target repository.| -|`mount`|query|Digest of blob to mount from the source repository.| -|`from`|query|Name of the source repository.| - - - - -###### On Success: Created - -``` -201 Created -Location: -Content-Length: 0 -Docker-Upload-UUID: -``` - -The blob has been mounted in the repository and is available at the provided location. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| - - - - -###### On Failure: Invalid Name or Digest - -``` -400 Bad Request -``` - - - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | - - - -###### On Failure: Not allowed - -``` -405 Method Not Allowed -``` - -Blob mount is not allowed because the registry is configured as a pull-through cache or for some other reason - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - - -### Blob Upload - -Interact with blob uploads. Clients should never assemble URLs for this endpoint and should only take it through the `Location` header on related API requests. The `Location` header and its parameters should be preserved by clients, using the latest value returned via upload related API calls. - - - -#### GET Blob Upload - -Retrieve status of upload identified by `uuid`. The primary purpose of this endpoint is to resolve the current status of a resumable upload. - - - -``` -GET /v2//blobs/uploads/ -Host: -Authorization: -``` - -Retrieve the progress of the current upload, as reported by the `Range` header. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`uuid`|path|A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.| - - - - -###### On Success: Upload Progress - -``` -204 No Content -Range: 0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -The upload is known and in progress. The last received offset is available in the `Range` header. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Range`|Range indicating the current progress of the upload.| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -There was an error processing the upload and it must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `BLOB_UPLOAD_INVALID` | blob upload invalid | The blob upload encountered an error and can no longer proceed. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The upload is unknown to the registry. The upload must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `BLOB_UPLOAD_UNKNOWN` | blob upload unknown to registry | If a blob upload has been cancelled or was never started, this error code may be returned. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - -#### PATCH Blob Upload - -Upload a chunk of data for the specified upload. - - -##### Stream upload - -``` -PATCH /v2//blobs/uploads/ -Host: -Authorization: -Content-Type: application/octet-stream - - -``` - -Upload a stream of data to upload without completing the upload. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`name`|path|Name of the target repository.| -|`uuid`|path|A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.| - - - - -###### On Success: Data Accepted - -``` -204 No Content -Location: /v2//blobs/uploads/ -Range: 0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -The stream of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|The location of the upload. Clients should assume this changes after each request. Clients should use the contents verbatim to complete the upload, adding parameters where required.| -|`Range`|Range indicating the current progress of the upload.| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -There was an error processing the upload and it must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `BLOB_UPLOAD_INVALID` | blob upload invalid | The blob upload encountered an error and can no longer proceed. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The upload is unknown to the registry. The upload must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `BLOB_UPLOAD_UNKNOWN` | blob upload unknown to registry | If a blob upload has been cancelled or was never started, this error code may be returned. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - -##### Chunked upload - -``` -PATCH /v2//blobs/uploads/ -Host: -Authorization: -Content-Range: - -Content-Length: -Content-Type: application/octet-stream - - -``` - -Upload a chunk of data to specified upload without completing the upload. The data will be uploaded to the specified Content Range. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Content-Range`|header|Range of bytes identifying the desired block of content represented by the body. Start must the end offset retrieved via status check plus one. Note that this is a non-standard use of the `Content-Range` header.| -|`Content-Length`|header|Length of the chunk being uploaded, corresponding the length of the request body.| -|`name`|path|Name of the target repository.| -|`uuid`|path|A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.| - - - - -###### On Success: Chunk Accepted - -``` -204 No Content -Location: /v2//blobs/uploads/ -Range: 0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -The chunk of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|The location of the upload. Clients should assume this changes after each request. Clients should use the contents verbatim to complete the upload, adding parameters where required.| -|`Range`|Range indicating the current progress of the upload.| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -There was an error processing the upload and it must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `BLOB_UPLOAD_INVALID` | blob upload invalid | The blob upload encountered an error and can no longer proceed. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The upload is unknown to the registry. The upload must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `BLOB_UPLOAD_UNKNOWN` | blob upload unknown to registry | If a blob upload has been cancelled or was never started, this error code may be returned. | - - - -###### On Failure: Requested Range Not Satisfiable - -``` -416 Requested Range Not Satisfiable -``` - -The `Content-Range` specification cannot be accepted, either because it does not overlap with the current progress or it is invalid. - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - -#### PUT Blob Upload - -Complete the upload specified by `uuid`, optionally appending the body as the final chunk. - - - -``` -PUT /v2//blobs/uploads/?digest= -Host: -Authorization: -Content-Length: -Content-Type: application/octet-stream - - -``` - -Complete the upload, providing all the data in the body, if necessary. A request without a body will just complete the upload with previously uploaded content. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Content-Length`|header|Length of the data being uploaded, corresponding to the length of the request body. May be zero if no data is provided.| -|`name`|path|Name of the target repository.| -|`uuid`|path|A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.| -|`digest`|query|Digest of uploaded blob.| - - - - -###### On Success: Upload Complete - -``` -204 No Content -Location: -Content-Range: - -Content-Length: 0 -Docker-Content-Digest: -``` - -The upload has been completed and accepted by the registry. The canonical location will be available in the `Location` header. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Location`|The canonical location of the blob for retrieval| -|`Content-Range`|Range of bytes identifying the desired block of content represented by the body. Start must match the end of offset retrieved via status check. Note that this is a non-standard use of the `Content-Range` header.| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| -|`Docker-Content-Digest`|Digest of the targeted content for the request.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -There was an error processing the upload and it must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DIGEST_INVALID` | provided digest did not match uploaded content | When a blob is uploaded, the registry will check that the content matches the digest provided by the client. The error may include a detail structure with the key "digest", including the invalid digest string. This error may also be returned when a manifest includes an invalid layer digest. | -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `BLOB_UPLOAD_INVALID` | blob upload invalid | The blob upload encountered an error and can no longer proceed. | -| `UNSUPPORTED` | The operation is unsupported. | The operation was unsupported due to a missing implementation or invalid set of parameters. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The upload is unknown to the registry. The upload must be restarted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `BLOB_UPLOAD_UNKNOWN` | blob upload unknown to registry | If a blob upload has been cancelled or was never started, this error code may be returned. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - -#### DELETE Blob Upload - -Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout. - - - -``` -DELETE /v2//blobs/uploads/ -Host: -Authorization: -Content-Length: 0 -``` - -Cancel the upload specified by `uuid`. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`Host`|header|Standard HTTP Host Header. Should be set to the registry host.| -|`Authorization`|header|An RFC7235 compliant authorization header.| -|`Content-Length`|header|The `Content-Length` header must be zero and the body must be empty.| -|`name`|path|Name of the target repository.| -|`uuid`|path|A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.| - - - - -###### On Success: Upload Deleted - -``` -204 No Content -Content-Length: 0 -``` - -The upload has been successfully deleted. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| - - - - -###### On Failure: Bad Request - -``` -400 Bad Request -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -An error was encountered processing the delete. The client may ignore this error. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_INVALID` | invalid repository name | Invalid repository name encountered either during manifest validation or any API operation. | -| `BLOB_UPLOAD_INVALID` | blob upload invalid | The blob upload encountered an error and can no longer proceed. | - - - -###### On Failure: Not Found - -``` -404 Not Found -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The upload is unknown to the registry. The client may ignore this error and assume the upload has been deleted. - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `BLOB_UPLOAD_UNKNOWN` | blob upload unknown to registry | If a blob upload has been cancelled or was never started, this error code may be returned. | - - - -###### On Failure: Authentication Required - -``` -401 Unauthorized -WWW-Authenticate: realm="", ..." -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client is not authenticated. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`WWW-Authenticate`|An RFC7235 compliant authentication challenge header.| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `UNAUTHORIZED` | authentication required | The access controller was unable to authenticate the client. Often this will be accompanied by a Www-Authenticate HTTP response header indicating how to authenticate. | - - - -###### On Failure: No Such Repository Error - -``` -404 Not Found -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The repository is not known to the registry. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `NAME_UNKNOWN` | repository name not known to registry | This is returned if the name used during an operation is unknown to the registry. | - - - -###### On Failure: Access Denied - -``` -403 Forbidden -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -} -``` - -The client does not have required access to the repository. - -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -| `DENIED` | requested access to the resource is denied | The access controller denied access for the operation on a resource. | - - - - - -### Catalog - -List a set of available repositories in the local registry cluster. Does not provide any indication of what may be available upstream. Applications can only determine if a repository is available but not if it is not available. - - - -#### GET Catalog - -Retrieve a sorted, json list of repositories available in the registry. - - -##### Catalog Fetch Complete - -``` -GET /v2/_catalog -``` - -Request an unabridged list of repositories available. - - - - - -###### On Success: OK - -``` -200 OK -Content-Length: -Content-Type: application/json; charset=utf-8 - -{ - "repositories": [ - , - ... - ] -} -``` - -Returns the unabridged list of repositories as a json response. - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| - - - -##### Catalog Fetch Paginated - -``` -GET /v2/_catalog?n=&last= -``` - -Return the specified portion of repositories. - - -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -|`n`|query|Limit the number of entries in each response. It not present, all entries will be returned.| -|`last`|query|Result set will include values lexically after last.| - - - - -###### On Success: OK - -``` -200 OK -Content-Length: -Link: <?n=&last=>; rel="next" -Content-Type: application/json; charset=utf-8 - -{ - "repositories": [ - , - ... - ] - "next": "?last=&n=" -} -``` - - - -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -|`Content-Length`|Length of the JSON response body.| -|`Link`|RFC5988 compliant rel='next' with URL to next result set, if available| - - - - - diff --git a/vendor/github.com/docker/distribution/docs/spec/api.md.tmpl b/vendor/github.com/docker/distribution/docs/spec/api.md.tmpl deleted file mode 100644 index 1a879ba0e0..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/api.md.tmpl +++ /dev/null @@ -1,1232 +0,0 @@ - - -# Docker Registry HTTP API V2 - -## Introduction - -The _Docker Registry HTTP API_ is the protocol to facilitate distribution of -images to the docker engine. It interacts with instances of the docker -registry, which is a service to manage information about docker images and -enable their distribution. The specification covers the operation of version 2 -of this API, known as _Docker Registry HTTP API V2_. - -While the V1 registry protocol is usable, there are several problems with the -architecture that have led to this new version. The main driver of this -specification is a set of changes to the docker the image format, covered in -[docker/docker#8093](https://github.com/docker/docker/issues/8093). -The new, self-contained image manifest simplifies image definition and improves -security. This specification will build on that work, leveraging new properties -of the manifest format to improve performance, reduce bandwidth usage and -decrease the likelihood of backend corruption. - -For relevant details and history leading up to this specification, please see -the following issues: - -- [docker/docker#8093](https://github.com/docker/docker/issues/8093) -- [docker/docker#9015](https://github.com/docker/docker/issues/9015) -- [docker/docker-registry#612](https://github.com/docker/docker-registry/issues/612) - -### Scope - -This specification covers the URL layout and protocols of the interaction -between docker registry and docker core. This will affect the docker core -registry API and the rewrite of docker-registry. Docker registry -implementations may implement other API endpoints, but they are not covered by -this specification. - -This includes the following features: - -- Namespace-oriented URI Layout -- PUSH/PULL registry server for V2 image manifest format -- Resumable layer PUSH support -- V2 Client library implementation - -While authentication and authorization support will influence this -specification, details of the protocol will be left to a future specification. -Relevant header definitions and error codes are present to provide an -indication of what a client may encounter. - -#### Future - -There are features that have been discussed during the process of cutting this -specification. The following is an incomplete list: - -- Immutable image references -- Multiple architecture support -- Migration from v2compatibility representation - -These may represent features that are either out of the scope of this -specification, the purview of another specification or have been deferred to a -future version. - -### Use Cases - -For the most part, the use cases of the former registry API apply to the new -version. Differentiating use cases are covered below. - -#### Image Verification - -A docker engine instance would like to run verified image named -"library/ubuntu", with the tag "latest". The engine contacts the registry, -requesting the manifest for "library/ubuntu:latest". An untrusted registry -returns a manifest. Before proceeding to download the individual layers, the -engine verifies the manifest's signature, ensuring that the content was -produced from a trusted source and no tampering has occurred. After each layer -is downloaded, the engine verifies the digest of the layer, ensuring that the -content matches that specified by the manifest. - -#### Resumable Push - -Company X's build servers lose connectivity to docker registry before -completing an image layer transfer. After connectivity returns, the build -server attempts to re-upload the image. The registry notifies the build server -that the upload has already been partially attempted. The build server -responds by only sending the remaining data to complete the image file. - -#### Resumable Pull - -Company X is having more connectivity problems but this time in their -deployment datacenter. When downloading an image, the connection is -interrupted before completion. The client keeps the partial data and uses http -`Range` requests to avoid downloading repeated data. - -#### Layer Upload De-duplication - -Company Y's build system creates two identical docker layers from build -processes A and B. Build process A completes uploading the layer before B. -When process B attempts to upload the layer, the registry indicates that its -not necessary because the layer is already known. - -If process A and B upload the same layer at the same time, both operations -will proceed and the first to complete will be stored in the registry (Note: -we may modify this to prevent dogpile with some locking mechanism). - -### Changes - -The V2 specification has been written to work as a living document, specifying -only what is certain and leaving what is not specified open or to future -changes. Only non-conflicting additions should be made to the API and accepted -changes should avoid preventing future changes from happening. - -This section should be updated when changes are made to the specification, -indicating what is different. Optionally, we may start marking parts of the -specification to correspond with the versions enumerated here. - -Each set of changes is given a letter corresponding to a set of modifications -that were applied to the baseline specification. These are merely for -reference and shouldn't be used outside the specification other than to -identify a set of modifications. - -
-
k
-
-
    -
  • Document use of Accept and Content-Type headers in manifests endpoint.
  • -
-
- -
j
-
-
    -
  • Add ability to mount blobs across repositories.
  • -
-
- -
i
-
-
    -
  • Clarified expected behavior response to manifest HEAD request.
  • -
-
- -
h
-
-
    -
  • All mention of tarsum removed.
  • -
-
- -
g
-
-
    -
  • Clarify behavior of pagination behavior with unspecified parameters.
  • -
-
- -
f
-
-
    -
  • Specify the delete API for layers and manifests.
  • -
-
- -
e
-
-
    -
  • Added support for listing registry contents.
  • -
  • Added pagination to tags API.
  • -
  • Added common approach to support pagination.
  • -
-
- -
d
-
-
    -
  • Allow repository name components to be one character.
  • -
  • Clarified that single component names are allowed.
  • -
-
- -
c
-
-
    -
  • Added section covering digest format.
  • -
  • Added more clarification that manifest cannot be deleted by tag.
  • -
-
- -
b
-
-
    -
  • Added capability of doing streaming upload to PATCH blob upload.
  • -
  • Updated PUT blob upload to no longer take final chunk, now requires entire data or no data.
  • -
  • Removed `416 Requested Range Not Satisfiable` response status from PUT blob upload.
  • -
-
- -
a
-
-
    -
  • Added support for immutable manifest references in manifest endpoints.
  • -
  • Deleting a manifest by tag has been deprecated.
  • -
  • Specified `Docker-Content-Digest` header for appropriate entities.
  • -
  • Added error code for unsupported operations.
  • -
-
-
- -## Overview - -This section covers client flows and details of the API endpoints. The URI -layout of the new API is structured to support a rich authentication and -authorization model by leveraging namespaces. All endpoints will be prefixed -by the API version and the repository name: - - /v2// - -For example, an API endpoint that will work with the `library/ubuntu` -repository, the URI prefix will be: - - /v2/library/ubuntu/ - -This scheme provides rich access control over various operations and methods -using the URI prefix and http methods that can be controlled in variety of -ways. - -Classically, repository names have always been two path components where each -path component is less than 30 characters. The V2 registry API does not -enforce this. The rules for a repository name are as follows: - -1. A repository name is broken up into _path components_. A component of a - repository name must be at least one lowercase, alpha-numeric characters, - optionally separated by periods, dashes or underscores. More strictly, it - must match the regular expression `[a-z0-9]+(?:[._-][a-z0-9]+)*`. -2. If a repository name has two or more path components, they must be - separated by a forward slash ("/"). -3. The total length of a repository name, including slashes, must be less the - 256 characters. - -These name requirements _only_ apply to the registry API and should accept a -superset of what is supported by other docker ecosystem components. - -All endpoints should support aggressive http caching, compression and range -headers, where appropriate. The new API attempts to leverage HTTP semantics -where possible but may break from standards to implement targeted features. - -For detail on individual endpoints, please see the [_Detail_](#detail) -section. - -### Errors - -Actionable failure conditions, covered in detail in their relevant sections, -are reported as part of 4xx responses, in a json response body. One or more -errors will be returned in the following format: - - { - "errors:" [{ - "code": , - "message": , - "detail": - }, - ... - ] - } - -The `code` field will be a unique identifier, all caps with underscores by -convention. The `message` field will be a human readable string. The optional -`detail` field may contain arbitrary json data providing information the -client can use to resolve the issue. - -While the client can take action on certain error codes, the registry may add -new error codes over time. All client implementations should treat unknown -error codes as `UNKNOWN`, allowing future error codes to be added without -breaking API compatibility. For the purposes of the specification error codes -will only be added and never removed. - -For a complete account of all error codes, please see the [_Errors_](#errors-2) -section. - -### API Version Check - -A minimal endpoint, mounted at `/v2/` will provide version support information -based on its response statuses. The request format is as follows: - - GET /v2/ - -If a `200 OK` response is returned, the registry implements the V2(.1) -registry API and the client may proceed safely with other V2 operations. -Optionally, the response may contain information about the supported paths in -the response body. The client should be prepared to ignore this data. - -If a `401 Unauthorized` response is returned, the client should take action -based on the contents of the "WWW-Authenticate" header and try the endpoint -again. Depending on access control setup, the client may still have to -authenticate against different resources, even if this check succeeds. - -If `404 Not Found` response status, or other unexpected status, is returned, -the client should proceed with the assumption that the registry does not -implement V2 of the API. - -When a `200 OK` or `401 Unauthorized` response is returned, the -"Docker-Distribution-API-Version" header should be set to "registry/2.0". -Clients may require this header value to determine if the endpoint serves this -API. When this header is omitted, clients may fallback to an older API version. - -### Content Digests - -This API design is driven heavily by [content addressability](http://en.wikipedia.org/wiki/Content-addressable_storage). -The core of this design is the concept of a content addressable identifier. It -uniquely identifies content by taking a collision-resistant hash of the bytes. -Such an identifier can be independently calculated and verified by selection -of a common _algorithm_. If such an identifier can be communicated in a secure -manner, one can retrieve the content from an insecure source, calculate it -independently and be certain that the correct content was obtained. Put simply, -the identifier is a property of the content. - -To disambiguate from other concepts, we call this identifier a _digest_. A -_digest_ is a serialized hash result, consisting of a _algorithm_ and _hex_ -portion. The _algorithm_ identifies the methodology used to calculate the -digest. The _hex_ portion is the hex-encoded result of the hash. - -We define a _digest_ string to match the following grammar: -``` -digest := algorithm ":" hex -algorithm := /[A-Fa-f0-9_+.-]+/ -hex := /[A-Fa-f0-9]+/ -``` - -Some examples of _digests_ include the following: - -digest | description | -----------------------------------------------------------------------------------|------------------------------------------------ -sha256:6c3c624b58dbbcd3c0dd82b4c53f04194d1247c6eebdaab7c610cf7d66709b3b | Common sha256 based digest | - -While the _algorithm_ does allow one to implement a wide variety of -algorithms, compliant implementations should use sha256. Heavy processing of -input before calculating a hash is discouraged to avoid degrading the -uniqueness of the _digest_ but some canonicalization may be performed to -ensure consistent identifiers. - -Let's use a simple example in pseudo-code to demonstrate a digest calculation: -``` -let C = 'a small string' -let B = sha256(C) -let D = 'sha256:' + EncodeHex(B) -let ID(C) = D -``` - -Above, we have bytestring `C` passed into a function, `SHA256`, that returns a -bytestring `B`, which is the hash of `C`. `D` gets the algorithm concatenated -with the hex encoding of `B`. We then define the identifier of `C` to `ID(C)` -as equal to `D`. A digest can be verified by independently calculating `D` and -comparing it with identifier `ID(C)`. - -#### Digest Header - -To provide verification of http content, any response may include a -`Docker-Content-Digest` header. This will include the digest of the target -entity returned in the response. For blobs, this is the entire blob content. For -manifests, this is the manifest body without the signature content, also known -as the JWS payload. Note that the commonly used canonicalization for digest -calculation may be dependent on the mediatype of the content, such as with -manifests. - -The client may choose to ignore the header or may verify it to ensure content -integrity and transport security. This is most important when fetching by a -digest. To ensure security, the content should be verified against the digest -used to fetch the content. At times, the returned digest may differ from that -used to initiate a request. Such digests are considered to be from different -_domains_, meaning they have different values for _algorithm_. In such a case, -the client may choose to verify the digests in both domains or ignore the -server's digest. To maintain security, the client _must_ always verify the -content against the _digest_ used to fetch the content. - -> __IMPORTANT:__ If a _digest_ is used to fetch content, the client should use -> the same digest used to fetch the content to verify it. The header -> `Docker-Content-Digest` should not be trusted over the "local" digest. - -### Pulling An Image - -An "image" is a combination of a JSON manifest and individual layer files. The -process of pulling an image centers around retrieving these two components. - -The first step in pulling an image is to retrieve the manifest. For reference, -the relevant manifest fields for the registry are the following: - - field | description | -----------|------------------------------------------------| -name | The name of the image. | -tag | The tag for this version of the image. | -fsLayers | A list of layer descriptors (including digest) | -signature | A JWS used to verify the manifest content | - -For more information about the manifest format, please see -[docker/docker#8093](https://github.com/docker/docker/issues/8093). - -When the manifest is in hand, the client must verify the signature to ensure -the names and layers are valid. Once confirmed, the client will then use the -digests to download the individual layers. Layers are stored in as blobs in -the V2 registry API, keyed by their digest. - -#### Pulling an Image Manifest - -The image manifest can be fetched with the following url: - -``` -GET /v2//manifests/ -``` - -The `name` and `reference` parameter identify the image and are required. The -reference may include a tag or digest. - -The client should include an Accept header indicating which manifest content -types it supports. For more details on the manifest formats and their content -types, see [manifest-v2-1.md](manifest-v2-1.md) and -[manifest-v2-2.md](manifest-v2-2.md). In a successful response, the Content-Type -header will indicate which manifest type is being returned. - -A `404 Not Found` response will be returned if the image is unknown to the -registry. If the image exists and the response is successful, the image -manifest will be returned, with the following format (see -[docker/docker#8093](https://github.com/docker/docker/issues/8093) for details): - - { - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": - }, - ... - ] - ], - "history": , - "signature": - } - -The client should verify the returned manifest signature for authenticity -before fetching layers. - -##### Existing Manifests - -The image manifest can be checked for existence with the following url: - -``` -HEAD /v2//manifests/ -``` - -The `name` and `reference` parameter identify the image and are required. The -reference may include a tag or digest. - -A `404 Not Found` response will be returned if the image is unknown to the -registry. If the image exists and the response is successful the response will -be as follows: - -``` -200 OK -Content-Length: -Docker-Content-Digest: -``` - - -#### Pulling a Layer - -Layers are stored in the blob portion of the registry, keyed by digest. -Pulling a layer is carried out by a standard http request. The URL is as -follows: - - GET /v2//blobs/ - -Access to a layer will be gated by the `name` of the repository but is -identified uniquely in the registry by `digest`. - -This endpoint may issue a 307 (302 for /blobs/uploads/ -``` - -The parameters of this request are the image namespace under which the layer -will be linked. Responses to this request are covered below. - -##### Existing Layers - -The existence of a layer can be checked via a `HEAD` request to the blob store -API. The request should be formatted as follows: - -``` -HEAD /v2//blobs/ -``` - -If the layer with the digest specified in `digest` is available, a 200 OK -response will be received, with no actual body content (this is according to -http specification). The response will look as follows: - -``` -200 OK -Content-Length: -Docker-Content-Digest: -``` - -When this response is received, the client can assume that the layer is -already available in the registry under the given name and should take no -further action to upload the layer. Note that the binary digests may differ -for the existing registry layer, but the digests will be guaranteed to match. - -##### Uploading the Layer - -If the POST request is successful, a `202 Accepted` response will be returned -with the upload URL in the `Location` header: - -``` -202 Accepted -Location: /v2//blobs/uploads/ -Range: bytes=0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -The rest of the upload process can be carried out with the returned url, -called the "Upload URL" from the `Location` header. All responses to the -upload url, whether sending data or getting status, will be in this format. -Though the URI format (`/v2//blobs/uploads/`) for the `Location` -header is specified, clients should treat it as an opaque url and should never -try to assemble it. While the `uuid` parameter may be an actual UUID, this -proposal imposes no constraints on the format and clients should never impose -any. - -If clients need to correlate local upload state with remote upload state, the -contents of the `Docker-Upload-UUID` header should be used. Such an id can be -used to key the last used location header when implementing resumable uploads. - -##### Upload Progress - -The progress and chunk coordination of the upload process will be coordinated -through the `Range` header. While this is a non-standard use of the `Range` -header, there are examples of [similar approaches](https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol) in APIs with heavy use. -For an upload that just started, for an example with a 1000 byte layer file, -the `Range` header would be as follows: - -``` -Range: bytes=0-0 -``` - -To get the status of an upload, issue a GET request to the upload URL: - -``` -GET /v2//blobs/uploads/ -Host: -``` - -The response will be similar to the above, except will return 204 status: - -``` -204 No Content -Location: /v2//blobs/uploads/ -Range: bytes=0- -Docker-Upload-UUID: -``` - -Note that the HTTP `Range` header byte ranges are inclusive and that will be -honored, even in non-standard use cases. - -##### Monolithic Upload - -A monolithic upload is simply a chunked upload with a single chunk and may be -favored by clients that would like to avoided the complexity of chunking. To -carry out a "monolithic" upload, one can simply put the entire content blob to -the provided URL: - -``` -PUT /v2//blobs/uploads/?digest= -Content-Length: -Content-Type: application/octet-stream - - -``` - -The "digest" parameter must be included with the PUT request. Please see the -[_Completed Upload_](#completed-upload) section for details on the parameters -and expected responses. - -Additionally, the upload can be completed with a single `POST` request to -the uploads endpoint, including the "size" and "digest" parameters: - -``` -POST /v2//blobs/uploads/?digest= -Content-Length: -Content-Type: application/octet-stream - - -``` - -On the registry service, this should allocate a download, accept and verify -the data and return the same response as the final chunk of an upload. If the -POST request fails collecting the data in any way, the registry should attempt -to return an error response to the client with the `Location` header providing -a place to continue the download. - -The single `POST` method is provided for convenience and most clients should -implement `POST` + `PUT` to support reliable resume of uploads. - -##### Chunked Upload - -To carry out an upload of a chunk, the client can specify a range header and -only include that part of the layer file: - -``` -PATCH /v2//blobs/uploads/ -Content-Length: -Content-Range: - -Content-Type: application/octet-stream - - -``` - -There is no enforcement on layer chunk splits other than that the server must -receive them in order. The server may enforce a minimum chunk size. If the -server cannot accept the chunk, a `416 Requested Range Not Satisfiable` -response will be returned and will include a `Range` header indicating the -current status: - -``` -416 Requested Range Not Satisfiable -Location: /v2//blobs/uploads/ -Range: 0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -If this response is received, the client should resume from the "last valid -range" and upload the subsequent chunk. A 416 will be returned under the -following conditions: - -- Invalid Content-Range header format -- Out of order chunk: the range of the next chunk must start immediately after - the "last valid range" from the previous response. - -When a chunk is accepted as part of the upload, a `202 Accepted` response will -be returned, including a `Range` header with the current upload status: - -``` -202 Accepted -Location: /v2//blobs/uploads/ -Range: bytes=0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -##### Completed Upload - -For an upload to be considered complete, the client must submit a `PUT` -request on the upload endpoint with a digest parameter. If it is not provided, -the upload will not be considered complete. The format for the final chunk -will be as follows: - -``` -PUT /v2//blob/uploads/?digest= -Content-Length: -Content-Range: - -Content-Type: application/octet-stream - - -``` - -Optionally, if all chunks have already been uploaded, a `PUT` request with a -`digest` parameter and zero-length body may be sent to complete and validated -the upload. Multiple "digest" parameters may be provided with different -digests. The server may verify none or all of them but _must_ notify the -client if the content is rejected. - -When the last chunk is received and the layer has been validated, the client -will receive a `201 Created` response: - -``` -201 Created -Location: /v2//blobs/ -Content-Length: 0 -Docker-Content-Digest: -``` - -The `Location` header will contain the registry URL to access the accepted -layer file. The `Docker-Content-Digest` header returns the canonical digest of -the uploaded blob which may differ from the provided digest. Most clients may -ignore the value but if it is used, the client should verify the value against -the uploaded blob data. - -###### Digest Parameter - -The "digest" parameter is designed as an opaque parameter to support -verification of a successful transfer. For example, a HTTP URI parameter -might be as follows: - -``` -sha256:6c3c624b58dbbcd3c0dd82b4c53f04194d1247c6eebdaab7c610cf7d66709b3b -``` - -Given this parameter, the registry will verify that the provided content does -match this digest. - -##### Canceling an Upload - -An upload can be cancelled by issuing a DELETE request to the upload endpoint. -The format will be as follows: - -``` -DELETE /v2//blobs/uploads/ -``` - -After this request is issued, the upload uuid will no longer be valid and the -registry server will dump all intermediate data. While uploads will time out -if not completed, clients should issue this request if they encounter a fatal -error but still have the ability to issue an http request. - -##### Cross Repository Blob Mount - -A blob may be mounted from another repository that the client has read access -to, removing the need to upload a blob already known to the registry. To issue -a blob mount instead of an upload, a POST request should be issued in the -following format: - -``` -POST /v2//blobs/uploads/?mount=&from= -Content-Length: 0 -``` - -If the blob is successfully mounted, the client will receive a `201 Created` -response: - -``` -201 Created -Location: /v2//blobs/ -Content-Length: 0 -Docker-Content-Digest: -``` - -The `Location` header will contain the registry URL to access the accepted -layer file. The `Docker-Content-Digest` header returns the canonical digest of -the uploaded blob which may differ from the provided digest. Most clients may -ignore the value but if it is used, the client should verify the value against -the uploaded blob data. - -If a mount fails due to invalid repository or digest arguments, the registry -will fall back to the standard upload behavior and return a `202 Accepted` with -the upload URL in the `Location` header: - -``` -202 Accepted -Location: /v2//blobs/uploads/ -Range: bytes=0- -Content-Length: 0 -Docker-Upload-UUID: -``` - -This behavior is consistent with older versions of the registry, which do not -recognize the repository mount query parameters. - -Note: a client may issue a HEAD request to check existence of a blob in a source -repository to distinguish between the registry not supporting blob mounts and -the blob not existing in the expected repository. - -##### Errors - -If an 502, 503 or 504 error is received, the client should assume that the -download can proceed due to a temporary condition, honoring the appropriate -retry mechanism. Other 5xx errors should be treated as terminal. - -If there is a problem with the upload, a 4xx error will be returned indicating -the problem. After receiving a 4xx response (except 416, as called out above), -the upload will be considered failed and the client should take appropriate -action. - -Note that the upload url will not be available forever. If the upload uuid is -unknown to the registry, a `404 Not Found` response will be returned and the -client must restart the upload process. - -### Deleting a Layer - -A layer may be deleted from the registry via its `name` and `digest`. A -delete may be issued with the following request format: - - DELETE /v2//blobs/ - -If the blob exists and has been successfully deleted, the following response -will be issued: - - 202 Accepted - Content-Length: None - -If the blob had already been deleted or did not exist, a `404 Not Found` -response will be issued instead. - -If a layer is deleted which is referenced by a manifest in the registry, -then the complete images will not be resolvable. - -#### Pushing an Image Manifest - -Once all of the layers for an image are uploaded, the client can upload the -image manifest. An image can be pushed using the following request format: - - PUT /v2//manifests/ - Content-Type: - - { - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": - }, - ... - ] - ], - "history": , - "signature": , - ... - } - -The `name` and `reference` fields of the response body must match those -specified in the URL. The `reference` field may be a "tag" or a "digest". The -content type should match the type of the manifest being uploaded, as specified -in [manifest-v2-1.md](manifest-v2-1.md) and [manifest-v2-2.md](manifest-v2-2.md). - -If there is a problem with pushing the manifest, a relevant 4xx response will -be returned with a JSON error message. Please see the -[_PUT Manifest_](#put-manifest) section for details on possible error codes that -may be returned. - -If one or more layers are unknown to the registry, `BLOB_UNKNOWN` errors are -returned. The `detail` field of the error response will have a `digest` field -identifying the missing blob. An error is returned for each unknown blob. The -response format is as follows: - - { - "errors:" [{ - "code": "BLOB_UNKNOWN", - "message": "blob unknown to registry", - "detail": { - "digest": - } - }, - ... - ] - } - -### Listing Repositories - -Images are stored in collections, known as a _repository_, which is keyed by a -`name`, as seen throughout the API specification. A registry instance may -contain several repositories. The list of available repositories is made -available through the _catalog_. - -The catalog for a given registry can be retrieved with the following request: - -``` -GET /v2/_catalog -``` - -The response will be in the following format: - -``` -200 OK -Content-Type: application/json - -{ - "repositories": [ - , - ... - ] -} -``` - -Note that the contents of the response are specific to the registry -implementation. Some registries may opt to provide a full catalog output, -limit it based on the user's access level or omit upstream results, if -providing mirroring functionality. Subsequently, the presence of a repository -in the catalog listing only means that the registry *may* provide access to -the repository at the time of the request. Conversely, a missing entry does -*not* mean that the registry does not have the repository. More succinctly, -the presence of a repository only guarantees that it is there but not that it -is _not_ there. - -For registries with a large number of repositories, this response may be quite -large. If such a response is expected, one should use pagination. A registry -may also limit the amount of responses returned even if pagination was not -explicitly requested. In this case the `Link` header will be returned along -with the results, and subsequent results can be obtained by following the link -as if pagination had been initially requested. - -For details of the `Link` header, please see the [_Pagination_](#pagination) -section. - -#### Pagination - -Paginated catalog results can be retrieved by adding an `n` parameter to the -request URL, declaring that the response should be limited to `n` results. -Starting a paginated flow begins as follows: - -``` -GET /v2/_catalog?n= -``` - -The above specifies that a catalog response should be returned, from the start of -the result set, ordered lexically, limiting the number of results to `n`. The -response to such a request would look as follows: - -``` -200 OK -Content-Type: application/json -Link: <?n=&last=>; rel="next" - -{ - "repositories": [ - , - ... - ] -} -``` - -The above includes the _first_ `n` entries from the result set. To get the -_next_ `n` entries, one can create a URL where the argument `last` has the -value from `repositories[len(repositories)-1]`. If there are indeed more -results, the URL for the next block is encoded in an -[RFC5988](https://tools.ietf.org/html/rfc5988) `Link` header, as a "next" -relation. The presence of the `Link` header communicates to the client that -the entire result set has not been returned and another request must be -issued. If the header is not present, the client can assume that all results -have been received. - -> __NOTE:__ In the request template above, note that the brackets -> are required. For example, if the url is -> `http://example.com/v2/_catalog?n=20&last=b`, the value of the header would -> be `; rel="next"`. Please see -> [RFC5988](https://tools.ietf.org/html/rfc5988) for details. - -Compliant client implementations should always use the `Link` header -value when proceeding through results linearly. The client may construct URLs -to skip forward in the catalog. - -To get the next result set, a client would issue the request as follows, using -the URL encoded in the described `Link` header: - -``` -GET /v2/_catalog?n=&last= -``` - -The above process should then be repeated until the `Link` header is no longer -set. - -The catalog result set is represented abstractly as a lexically sorted list, -where the position in that list can be specified by the query term `last`. The -entries in the response start _after_ the term specified by `last`, up to `n` -entries. - -The behavior of `last` is quite simple when demonstrated with an example. Let -us say the registry has the following repositories: - -``` -a -b -c -d -``` - -If the value of `n` is 2, _a_ and _b_ will be returned on the first response. -The `Link` header returned on the response will have `n` set to 2 and last set -to _b_: - -``` -Link: <?n=2&last=b>; rel="next" -``` - -The client can then issue the request with the above value from the `Link` -header, receiving the values _c_ and _d_. Note that `n` may change on the second -to last response or be fully omitted, depending on the server implementation. - -### Listing Image Tags - -It may be necessary to list all of the tags under a given repository. The tags -for an image repository can be retrieved with the following request: - - GET /v2//tags/list - -The response will be in the following format: - - 200 OK - Content-Type: application/json - - { - "name": , - "tags": [ - , - ... - ] - } - -For repositories with a large number of tags, this response may be quite -large. If such a response is expected, one should use the pagination. - -#### Pagination - -Paginated tag results can be retrieved by adding the appropriate parameters to -the request URL described above. The behavior of tag pagination is identical -to that specified for catalog pagination. We cover a simple flow to highlight -any differences. - -Starting a paginated flow may begin as follows: - -``` -GET /v2//tags/list?n= -``` - -The above specifies that a tags response should be returned, from the start of -the result set, ordered lexically, limiting the number of results to `n`. The -response to such a request would look as follows: - -``` -200 OK -Content-Type: application/json -Link: <?n=&last=>; rel="next" - -{ - "name": , - "tags": [ - , - ... - ] -} -``` - -To get the next result set, a client would issue the request as follows, using -the value encoded in the [RFC5988](https://tools.ietf.org/html/rfc5988) `Link` -header: - -``` -GET /v2//tags/list?n=&last= -``` - -The above process should then be repeated until the `Link` header is no longer -set in the response. The behavior of the `last` parameter, the provided -response result, lexical ordering and encoding of the `Link` header are -identical to that of catalog pagination. - -### Deleting an Image - -An image may be deleted from the registry via its `name` and `reference`. A -delete may be issued with the following request format: - - DELETE /v2//manifests/ - -For deletes, `reference` *must* be a digest or the delete will fail. If the -image exists and has been successfully deleted, the following response will be -issued: - - 202 Accepted - Content-Length: None - -If the image had already been deleted or did not exist, a `404 Not Found` -response will be issued instead. - -> **Note** When deleting a manifest from a registry version 2.3 or later, the -> following header must be used when `HEAD` or `GET`-ing the manifest to obtain -> the correct digest to delete: - - Accept: application/vnd.docker.distribution.manifest.v2+json - -> for more details, see: [compatibility.md](../compatibility.md#content-addressable-storage-cas) - -## Detail - -> **Note**: This section is still under construction. For the purposes of -> implementation, if any details below differ from the described request flows -> above, the section below should be corrected. When they match, this note -> should be removed. - -The behavior of the endpoints are covered in detail in this section, organized -by route and entity. All aspects of the request and responses are covered, -including headers, parameters and body formats. Examples of requests and their -corresponding responses, with success and failure, are enumerated. - -> **Note**: The sections on endpoint detail are arranged with an example -> request, a description of the request, followed by information about that -> request. - -A list of methods and URIs are covered in the table below: - -|Method|Path|Entity|Description| -|------|----|------|-----------| -{{range $route := .RouteDescriptors}}{{range $method := .Methods}}| {{$method.Method}} | `{{$route.Path|prettygorilla}}` | {{$route.Entity}} | {{$method.Description}} | -{{end}}{{end}} - -The detail for each endpoint is covered in the following sections. - -### Errors - -The error codes encountered via the API are enumerated in the following table: - -|Code|Message|Description| -|----|-------|-----------| -{{range $err := .ErrorDescriptors}} `{{$err.Value}}` | {{$err.Message}} | {{$err.Description|removenewlines}} -{{end}} - -{{range $route := .RouteDescriptors}} -### {{.Entity}} - -{{.Description}} - -{{range $method := $route.Methods}} - -#### {{.Method}} {{$route.Entity}} - -{{.Description}} - -{{if .Requests}}{{range .Requests}}{{if .Name}} -##### {{.Name}}{{end}} - -``` -{{$method.Method}} {{$route.Path|prettygorilla}}{{range $i, $param := .QueryParameters}}{{if eq $i 0}}?{{else}}&{{end}}{{$param.Name}}={{$param.Format}}{{end}}{{range .Headers}} -{{.Name}}: {{.Format}}{{end}}{{if .Body.ContentType}} -Content-Type: {{.Body.ContentType}}{{end}}{{if .Body.Format}} - -{{.Body.Format}}{{end}} -``` - -{{.Description}} - -{{if or .Headers .PathParameters .QueryParameters}} -The following parameters should be specified on the request: - -|Name|Kind|Description| -|----|----|-----------| -{{range .Headers}}|`{{.Name}}`|header|{{.Description}}| -{{end}}{{range .PathParameters}}|`{{.Name}}`|path|{{.Description}}| -{{end}}{{range .QueryParameters}}|`{{.Name}}`|query|{{.Description}}| -{{end}}{{end}} - -{{if .Successes}} -{{range .Successes}} -###### On Success: {{if .Name}}{{.Name}}{{else}}{{.StatusCode | statustext}}{{end}} - -``` -{{.StatusCode}} {{.StatusCode | statustext}}{{range .Headers}} -{{.Name}}: {{.Format}}{{end}}{{if .Body.ContentType}} -Content-Type: {{.Body.ContentType}}{{end}}{{if .Body.Format}} - -{{.Body.Format}}{{end}} -``` - -{{.Description}} -{{if .Fields}}The following fields may be returned in the response body: - -|Name|Description| -|----|-----------| -{{range .Fields}}|`{{.Name}}`|{{.Description}}| -{{end}}{{end}}{{if .Headers}} -The following headers will be returned with the response: - -|Name|Description| -|----|-----------| -{{range .Headers}}|`{{.Name}}`|{{.Description}}| -{{end}}{{end}}{{end}}{{end}} - -{{if .Failures}} -{{range .Failures}} -###### On Failure: {{if .Name}}{{.Name}}{{else}}{{.StatusCode | statustext}}{{end}} - -``` -{{.StatusCode}} {{.StatusCode | statustext}}{{range .Headers}} -{{.Name}}: {{.Format}}{{end}}{{if .Body.ContentType}} -Content-Type: {{.Body.ContentType}}{{end}}{{if .Body.Format}} - -{{.Body.Format}}{{end}} -``` - -{{.Description}} -{{if .Headers}} -The following headers will be returned on the response: - -|Name|Description| -|----|-----------| -{{range .Headers}}|`{{.Name}}`|{{.Description}}| -{{end}}{{end}} - -{{if .ErrorCodes}} -The error codes that may be included in the response body are enumerated below: - -|Code|Message|Description| -|----|-------|-----------| -{{range $err := .ErrorCodes}}| `{{$err.Descriptor.Value}}` | {{$err.Descriptor.Message}} | {{$err.Descriptor.Description|removenewlines}} | -{{end}} - -{{end}}{{end}}{{end}}{{end}}{{end}}{{end}} - -{{end}} diff --git a/vendor/github.com/docker/distribution/docs/spec/auth/index.md b/vendor/github.com/docker/distribution/docs/spec/auth/index.md deleted file mode 100644 index b123af1ae4..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/auth/index.md +++ /dev/null @@ -1,14 +0,0 @@ - - -# Docker Registry v2 authentication - -See the [Token Authentication Specification](token.md), -[Token Authentication Implementation](jwt.md), -[Token Scope Documentation](scope.md), -[OAuth2 Token Authentication](oauth.md) for more information. diff --git a/vendor/github.com/docker/distribution/docs/spec/auth/jwt.md b/vendor/github.com/docker/distribution/docs/spec/auth/jwt.md deleted file mode 100644 index f627b17a2d..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/auth/jwt.md +++ /dev/null @@ -1,324 +0,0 @@ - - -# Docker Registry v2 Bearer token specification - -This specification covers the `docker/distribution` implementation of the -v2 Registry's authentication schema. Specifically, it describes the JSON -Web Token schema that `docker/distribution` has adopted to implement the -client-opaque Bearer token issued by an authentication service and -understood by the registry. - -This document borrows heavily from the [JSON Web Token Draft Spec](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32) - -## Getting a Bearer Token - -For this example, the client makes an HTTP GET request to the following URL: - -``` -https://auth.docker.io/token?service=registry.docker.io&scope=repository:samalba/my-app:pull,push -``` - -The token server should first attempt to authenticate the client using any -authentication credentials provided with the request. As of Docker 1.8, the -registry client in the Docker Engine only supports Basic Authentication to -these token servers. If an attempt to authenticate to the token server fails, -the token server should return a `401 Unauthorized` response indicating that -the provided credentials are invalid. - -Whether the token server requires authentication is up to the policy of that -access control provider. Some requests may require authentication to determine -access (such as pushing or pulling a private repository) while others may not -(such as pulling from a public repository). - -After authenticating the client (which may simply be an anonymous client if -no attempt was made to authenticate), the token server must next query its -access control list to determine whether the client has the requested scope. In -this example request, if I have authenticated as user `jlhawn`, the token -server will determine what access I have to the repository `samalba/my-app` -hosted by the entity `registry.docker.io`. - -Once the token server has determined what access the client has to the -resources requested in the `scope` parameter, it will take the intersection of -the set of requested actions on each resource and the set of actions that the -client has in fact been granted. If the client only has a subset of the -requested access **it must not be considered an error** as it is not the -responsibility of the token server to indicate authorization errors as part of -this workflow. - -Continuing with the example request, the token server will find that the -client's set of granted access to the repository is `[pull, push]` which when -intersected with the requested access `[pull, push]` yields an equal set. If -the granted access set was found only to be `[pull]` then the intersected set -would only be `[pull]`. If the client has no access to the repository then the -intersected set would be empty, `[]`. - -It is this intersected set of access which is placed in the returned token. - -The server will now construct a JSON Web Token to sign and return. A JSON Web -Token has 3 main parts: - -1. Headers - - The header of a JSON Web Token is a standard JOSE header. The "typ" field - will be "JWT" and it will also contain the "alg" which identifies the - signing algorithm used to produce the signature. It will also usually have - a "kid" field, the ID of the key which was used to sign the token. - - Here is an example JOSE Header for a JSON Web Token (formatted with - whitespace for readability): - - ``` - { - "typ": "JWT", - "alg": "ES256", - "kid": "PYYO:TEWU:V7JH:26JV:AQTZ:LJC3:SXVJ:XGHA:34F2:2LAQ:ZRMK:Z7Q6" - } - ``` - - It specifies that this object is going to be a JSON Web token signed using - the key with the given ID using the Elliptic Curve signature algorithm - using a SHA256 hash. - -2. Claim Set - - The Claim Set is a JSON struct containing these standard registered claim - name fields: - -
-
- iss (Issuer) -
-
- The issuer of the token, typically the fqdn of the authorization - server. -
-
- sub (Subject) -
-
- The subject of the token; the name or id of the client which - requested it. This should be empty (`""`) if the client did not - authenticate. -
-
- aud (Audience) -
-
- The intended audience of the token; the name or id of the service - which will verify the token to authorize the client/subject. -
-
- exp (Expiration) -
-
- The token should only be considered valid up to this specified date - and time. -
-
- nbf (Not Before) -
-
- The token should not be considered valid before this specified date - and time. -
-
- iat (Issued At) -
-
- Specifies the date and time which the Authorization server - generated this token. -
-
- jti (JWT ID) -
-
- A unique identifier for this token. Can be used by the intended - audience to prevent replays of the token. -
-
- - The Claim Set will also contain a private claim name unique to this - authorization server specification: - -
-
- access -
-
- An array of access entry objects with the following fields: - -
-
- type -
-
- The type of resource hosted by the service. -
-
- name -
-
- The name of the resource of the given type hosted by the - service. -
-
- actions -
-
- An array of strings which give the actions authorized on - this resource. -
-
-
-
- - Here is an example of such a JWT Claim Set (formatted with whitespace for - readability): - - ``` - { - "iss": "auth.docker.com", - "sub": "jlhawn", - "aud": "registry.docker.com", - "exp": 1415387315, - "nbf": 1415387015, - "iat": 1415387015, - "jti": "tYJCO1c6cnyy7kAn0c7rKPgbV1H1bFws", - "access": [ - { - "type": "repository", - "name": "samalba/my-app", - "actions": [ - "pull", - "push" - ] - } - ] - } - ``` - -3. Signature - - The authorization server will produce a JOSE header and Claim Set with no - extraneous whitespace, i.e., the JOSE Header from above would be - - ``` - {"typ":"JWT","alg":"ES256","kid":"PYYO:TEWU:V7JH:26JV:AQTZ:LJC3:SXVJ:XGHA:34F2:2LAQ:ZRMK:Z7Q6"} - ``` - - and the Claim Set from above would be - - ``` - {"iss":"auth.docker.com","sub":"jlhawn","aud":"registry.docker.com","exp":1415387315,"nbf":1415387015,"iat":1415387015,"jti":"tYJCO1c6cnyy7kAn0c7rKPgbV1H1bFws","access":[{"type":"repository","name":"samalba/my-app","actions":["push","pull"]}]} - ``` - - The utf-8 representation of this JOSE header and Claim Set are then - url-safe base64 encoded (sans trailing '=' buffer), producing: - - ``` - eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0 - ``` - - for the JOSE Header and - - ``` - eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0 - ``` - - for the Claim Set. These two are concatenated using a '.' character, - yielding the string: - - ``` - eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0 - ``` - - This is then used as the payload to a the `ES256` signature algorithm - specified in the JOSE header and specified fully in [Section 3.4 of the JSON Web Algorithms (JWA) - draft specification](https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-38#section-3.4) - - This example signature will use the following ECDSA key for the server: - - ``` - { - "kty": "EC", - "crv": "P-256", - "kid": "PYYO:TEWU:V7JH:26JV:AQTZ:LJC3:SXVJ:XGHA:34F2:2LAQ:ZRMK:Z7Q6", - "d": "R7OnbfMaD5J2jl7GeE8ESo7CnHSBm_1N2k9IXYFrKJA", - "x": "m7zUpx3b-zmVE5cymSs64POG9QcyEpJaYCD82-549_Q", - "y": "dU3biz8sZ_8GPB-odm8Wxz3lNDr1xcAQQPQaOcr1fmc" - } - ``` - - A resulting signature of the above payload using this key is: - - ``` - QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w - ``` - - Concatenating all of these together with a `.` character gives the - resulting JWT: - - ``` - eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0.QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w - ``` - -This can now be placed in an HTTP response and returned to the client to use to -authenticate to the audience service: - - -``` -HTTP/1.1 200 OK -Content-Type: application/json - -{"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0.QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w"} -``` - -## Using the signed token - -Once the client has a token, it will try the registry request again with the -token placed in the HTTP `Authorization` header like so: - -``` -Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJWM0Q6MkFWWjpVQjVaOktJQVA6SU5QTDo1RU42Ok40SjQ6Nk1XTzpEUktFOkJWUUs6M0ZKTDpQT1RMIn0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJCQ0NZOk9VNlo6UUVKNTpXTjJDOjJBVkM6WTdZRDpBM0xZOjQ1VVc6NE9HRDpLQUxMOkNOSjU6NUlVTCIsImF1ZCI6InJlZ2lzdHJ5LmRvY2tlci5jb20iLCJleHAiOjE0MTUzODczMTUsIm5iZiI6MTQxNTM4NzAxNSwiaWF0IjoxNDE1Mzg3MDE1LCJqdGkiOiJ0WUpDTzFjNmNueXk3a0FuMGM3cktQZ2JWMUgxYkZ3cyIsInNjb3BlIjoiamxoYXduOnJlcG9zaXRvcnk6c2FtYWxiYS9teS1hcHA6cHVzaCxwdWxsIGpsaGF3bjpuYW1lc3BhY2U6c2FtYWxiYTpwdWxsIn0.Y3zZSwaZPqy4y9oRBVRImZyv3m_S9XDHF1tWwN7mL52C_IiA73SJkWVNsvNqpJIn5h7A2F8biv_S2ppQ1lgkbw -``` - -This is also described in [Section 2.1 of RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-2.1) - -## Verifying the token - -The registry must now verify the token presented by the user by inspecting the -claim set within. The registry will: - -- Ensure that the issuer (`iss` claim) is an authority it trusts. -- Ensure that the registry identifies as the audience (`aud` claim). -- Check that the current time is between the `nbf` and `exp` claim times. -- If enforcing single-use tokens, check that the JWT ID (`jti` claim) value has - not been seen before. - - To enforce this, the registry may keep a record of `jti`s it has seen for - up to the `exp` time of the token to prevent token replays. -- Check the `access` claim value and use the identified resources and the list - of actions authorized to determine whether the token grants the required - level of access for the operation the client is attempting to perform. -- Verify that the signature of the token is valid. - -If any of these requirements are not met, the registry will return a -`403 Forbidden` response to indicate that the token is invalid. - -**Note**: it is only at this point in the workflow that an authorization error -may occur. The token server should *not* return errors when the user does not -have the requested authorization. Instead, the returned token should indicate -whatever of the requested scope the client does have (the intersection of -requested and granted access). If the token does not supply proper -authorization then the registry will return the appropriate error. - -At no point in this process should the registry need to call back to the -authorization server. The registry only needs to be supplied with the trusted -public keys to verify the token signatures. diff --git a/vendor/github.com/docker/distribution/docs/spec/auth/oauth.md b/vendor/github.com/docker/distribution/docs/spec/auth/oauth.md deleted file mode 100644 index b0f9a13f24..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/auth/oauth.md +++ /dev/null @@ -1,190 +0,0 @@ - - -# Docker Registry v2 authentication using OAuth2 - -This document describes support for the OAuth2 protocol within the authorization -server. [RFC6749](https://tools.ietf.org/html/rfc6749) should be used as a -reference for the protocol and HTTP endpoints described here. - -## Refresh token format - -The format of the refresh token is completely opaque to the client and should be -determined by the authorization server. The authorization should ensure the -token is sufficiently long and is responsible for storing any information about -long-lived tokens which may be needed for revoking. Any information stored -inside the token will not be extracted and presented by clients. - -## Getting a token - -POST /token - -#### Headers -Content-Type: application/x-www-form-urlencoded - -#### Post parameters - -
-
- grant_type -
-
- (REQUIRED) Type of grant used to get token. When getting a refresh token - using credentials this type should be set to "password" and have the - accompanying username and password paramters. Type "authorization_code" - is reserved for future use for authenticating to an authorization server - without having to send credentials directly from the client. When - requesting an access token with a refresh token this should be set to - "refresh_token". -
-
- service -
-
- (REQUIRED) The name of the service which hosts the resource to get - access for. Refresh tokens will only be good for getting tokens for - this service. -
-
- client_id -
-
- (REQUIRED) String identifying the client. This client_id does not need - to be registered with the authorization server but should be set to a - meaningful value in order to allow auditing keys created by unregistered - clients. Accepted syntax is defined in - [RFC6749 Appendix A.1](https://tools.ietf.org/html/rfc6749#appendix-A.1) -
-
- access_type -
-
- (OPTIONAL) Access which is being requested. If "offline" is provided - then a refresh token will be returned. The default is "online" only - returning short lived access token. If the grant type is "refresh_token" - this will only return the same refresh token and not a new one. -
-
- scope -
-
- (OPTIONAL) The resource in question, formatted as one of the space-delimited - entries from the scope parameters from the WWW-Authenticate header - shown above. This query parameter should only be specified once but may - contain multiple scopes using the scope list format defined in the scope - grammar. If multiple scope is provided from - WWW-Authenticate header the scopes should first be - converted to a scope list before requesting the token. The above example - would be specified as: scope=repository:samalba/my-app:push. - When requesting a refresh token the scopes may be empty since the - refresh token will not be limited by this scope, only the provided short - lived access token will have the scope limitation. -
-
- refresh_token -
-
- (OPTIONAL) The refresh token to use for authentication when grant type "refresh_token" is used. -
-
- username -
-
- (OPTIONAL) The username to use for authentication when grant type "password" is used. -
-
- password -
-
- (OPTIONAL) The password to use for authentication when grant type "password" is used. -
-
- -#### Response fields - -
-
- access_token -
-
- (REQUIRED) An opaque Bearer token that clients should - supply to subsequent requests in the Authorization header. - This token should not be attempted to be parsed or understood by the - client but treated as opaque string. -
-
- scope -
-
- (REQUIRED) The scope granted inside the access token. This may be the - same scope as requested or a subset. This requirement is stronger than - specified in [RFC6749 Section 4.2.2](https://tools.ietf.org/html/rfc6749#section-4.2.2) - by strictly requiring the scope in the return value. -
-
- expires_in -
-
- (REQUIRED) The duration in seconds since the token was issued that it - will remain valid. When omitted, this defaults to 60 seconds. For - compatibility with older clients, a token should never be returned with - less than 60 seconds to live. -
-
- issued_at -
-
- (Optional) The RFC3339-serialized UTC - standard time at which a given token was issued. If issued_at is omitted, the - expiration is from when the token exchange completed. -
-
- refresh_token -
-
- (Optional) Token which can be used to get additional access tokens for - the same subject with different scopes. This token should be kept secure - by the client and only sent to the authorization server which issues - bearer tokens. This field will only be set when `access_type=offline` is - provided in the request. -
-
- - -#### Example getting refresh token - -``` -POST /token HTTP/1.1 -Host: auth.docker.io -Content-Type: application/x-www-form-urlencoded - -grant_type=password&username=johndoe&password=A3ddj3w&service=hub.docker.io&client_id=dockerengine&access_type=offline - -HTTP/1.1 200 OK -Content-Type: application/json - -{"refresh_token":"kas9Da81Dfa8","access_token":"eyJhbGciOiJFUzI1NiIsInR5","expires_in":"900","scope":""} -```` - -#### Example refreshing an Access Token - -```` -POST /token HTTP/1.1 -Host: auth.docker.io -Content-Type: application/x-www-form-urlencoded - -grant_type=refresh_token&refresh_token=kas9Da81Dfa8&service=registry-1.docker.io&client_id=dockerengine&scope=repository:samalba/my-app:pull,push - -HTTP/1.1 200 OK -Content-Type: application/json - -{"refresh_token":"kas9Da81Dfa8","access_token":"eyJhbGciOiJFUzI1NiIsInR5":"expires_in":"900","scope":"repository:samalba/my-app:pull,repository:samalba/my-app:push"} -```` - diff --git a/vendor/github.com/docker/distribution/docs/spec/auth/scope.md b/vendor/github.com/docker/distribution/docs/spec/auth/scope.md deleted file mode 100644 index 76e6f8cf96..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/auth/scope.md +++ /dev/null @@ -1,134 +0,0 @@ - - -# Docker Registry Token Scope and Access - -Tokens used by the registry are always restricted what resources they may -be used to access, where those resources may be accessed, and what actions -may be done on those resources. Tokens always have the context of a user which -the token was originally created for. This document describes how these -restrictions are represented and enforced by the authorization server and -resource providers. - -## Scope Components - -### Subject (Authenticated User) - -The subject represents the user for which a token is valid. Any actions -performed using an access token should be considered on behalf of the subject. -This is included in the `sub` field of access token JWT. A refresh token should -be limited to a single subject and only be able to give out access tokens for -that subject. - -### Audience (Resource Provider) - -The audience represents a resource provider which is intended to be able to -perform the actions specified in the access token. Any resource provider which -does not match the audience should not use that access token. The audience is -included in the `aud` field of the access token JWT. A refresh token should be -limited to a single audience and only be able to give out access tokens for that -audience. - -### Resource Type - -The resource type represents the type of resource which the resource name is -intended to represent. This type may be specific to a resource provider but must -be understood by the authorization server in order to validate the subject -is authorized for a specific resource. - -#### Example Resource Types - - - `repository` - represents a single repository within a registry. A -repository may represent many manifest or content blobs, but the resource type -is considered the collections of those items. Actions which may be performed on -a `repository` are `pull` for accessing the collection and `push` for adding to -it. - -### Resource Name - -The resource name represent the name which identifies a resource for a resource -provider. A resource is identified by this name and the provided resource type. -An example of a resource name would be the name component of an image tag, such -as "samalba/myapp". - -### Resource Actions - -The resource actions define the actions which the access token allows to be -performed on the identified resource. These actions are type specific but will -normally have actions identifying read and write access on the resource. Example -for the `repository` type are `pull` for read access and `push` for write -access. - -## Authorization Server Use - -Each access token request may include a scope and an audience. The subject is -always derived from the passed in credentials or refresh token. When using -a refresh token the passed in audience must match the audience defined for -the refresh token. The audience (resource provider) is provided using the -`service` field. Multiple resource scopes may be provided using multiple `scope` -fields on the `GET` request. The `POST` request only takes in a single -`scope` field but may use a space to separate a list of multiple resource -scopes. - -### Resource Scope Grammar - -``` -scope := resourcescope [ ' ' resourcescope ]* -resourcescope := resourcetype ":" resourcename ":" action [ ',' action ]* -resourcetype := /[a-z]*/ -resourcename := component [ '/' component ]* -action := /[a-z]*/ -component := alpha-numeric [ separator alpha-numeric ]* -alpha-numeric := /[a-z0-9]+/ -separator := /[_.]|__|[-]*/ -``` -Full reference grammar is defined -(here)[https://godoc.org/github.com/docker/distribution/reference]. Currently -the scope name grammar is a subset of the reference grammar without support -for hostnames. - -## Resource Provider Use - -Once a resource provider has verified the authenticity of the scope through -JWT access token verification, the resource provider must ensure that scope -satisfies the request. The resource provider should match the given audience -according to name or URI the resource provider uses to identify itself. Any -denial based on subject is not defined here and is up to resource provider, the -subject is mainly provided for audit logs and any other user-specific rules -which may need to be provided but are not defined by the authorization server. - -The resource provider must ensure that ANY resource being accessed as the -result of a request has the appropriate access scope. Both the resource type -and resource name must match the accessed resource and an appropriate action -scope must be included. - -When appropriate authorization is not provided either due to lack of scope -or missing token, the resource provider to return a `WWW-AUTHENTICATE` HTTP -header with the `realm` as the authorization server, the `service` as the -expected audience identifying string, and a `scope` field for each required -resource scope to complete the request. - -## JWT Access Tokens - -Each JWT access token may only have a single subject and audience but multiple -resource scopes. The subject and audience are put into standard JWT fields -`sub` and `aud`. The resource scope is put into the `access` field. The -structure of the access field can be seen in the -[jwt documentation](jwt.md). - -## Refresh Tokens - -A refresh token must be defined for a single subject and audience. Further -restricting scope to specific type, name, and actions combinations should be -done by fetching an access token using the refresh token. Since the refresh -token is not scoped to specific resources for an audience, extra care should -be taken to only use the refresh token to negotiate new access tokens directly -with the authorization server, and never with a resource provider. - diff --git a/vendor/github.com/docker/distribution/docs/spec/auth/token.md b/vendor/github.com/docker/distribution/docs/spec/auth/token.md deleted file mode 100644 index 9f3167be7b..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/auth/token.md +++ /dev/null @@ -1,254 +0,0 @@ - - -# Docker Registry v2 authentication via central service - -This document outlines the v2 Docker registry authentication scheme: - -![v2 registry auth](https://docs.google.com/drawings/d/1EHZU9uBLmcH0kytDClBv6jv6WR4xZjE8RKEUw1mARJA/pub?w=480&h=360) - -1. Attempt to begin a push/pull operation with the registry. -2. If the registry requires authorization it will return a `401 Unauthorized` - HTTP response with information on how to authenticate. -3. The registry client makes a request to the authorization service for a - Bearer token. -4. The authorization service returns an opaque Bearer token representing the - client's authorized access. -5. The client retries the original request with the Bearer token embedded in - the request's Authorization header. -6. The Registry authorizes the client by validating the Bearer token and the - claim set embedded within it and begins the push/pull session as usual. - -## Requirements - -- Registry clients which can understand and respond to token auth challenges - returned by the resource server. -- An authorization server capable of managing access controls to their - resources hosted by any given service (such as repositories in a Docker - Registry). -- A Docker Registry capable of trusting the authorization server to sign tokens - which clients can use for authorization and the ability to verify these - tokens for single use or for use during a sufficiently short period of time. - -## Authorization Server Endpoint Descriptions - -The described server is meant to serve as a standalone access control manager -for resources hosted by other services which wish to authenticate and manage -authorizations using a separate access control manager. - -A service like this is used by the official Docker Registry to authenticate -clients and verify their authorization to Docker image repositories. - -As of Docker 1.6, the registry client within the Docker Engine has been updated -to handle such an authorization workflow. - -## How to authenticate - -Registry V1 clients first contact the index to initiate a push or pull. Under -the Registry V2 workflow, clients should contact the registry first. If the -registry server requires authentication it will return a `401 Unauthorized` -response with a `WWW-Authenticate` header detailing how to authenticate to this -registry. - -For example, say I (username `jlhawn`) am attempting to push an image to the -repository `samalba/my-app`. For the registry to authorize this, I will need -`push` access to the `samalba/my-app` repository. The registry will first -return this response: - -``` -HTTP/1.1 401 Unauthorized -Content-Type: application/json; charset=utf-8 -Docker-Distribution-Api-Version: registry/2.0 -Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:samalba/my-app:pull,push" -Date: Thu, 10 Sep 2015 19:32:31 GMT -Content-Length: 235 -Strict-Transport-Security: max-age=31536000 - -{"errors":[{"code":"UNAUTHORIZED","message":"access to the requested resource is not authorized","detail":[{"Type":"repository","Name":"samalba/my-app","Action":"pull"},{"Type":"repository","Name":"samalba/my-app","Action":"push"}]}]} -``` - -Note the HTTP Response Header indicating the auth challenge: - -``` -Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:samalba/my-app:pull,push" -``` - -This format is documented in [Section 3 of RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-3) - -This challenge indicates that the registry requires a token issued by the -specified token server and that the request the client is attempting will -need to include sufficient access entries in its claim set. To respond to this -challenge, the client will need to make a `GET` request to the URL -`https://auth.docker.io/token` using the `service` and `scope` values from the -`WWW-Authenticate` header. - -## Requesting a Token - -Defines getting a bearer and refresh token using the token endpoint. - -#### Query Parameters - -
-
- service -
-
- The name of the service which hosts the resource. -
-
- offline_token -
-
- Whether to return a refresh token along with the bearer token. A refresh - token is capable of getting additional bearer tokens for the same - subject with different scopes. The refresh token does not have an - expiration and should be considered completely opaque to the client. -
-
- client_id -
-
- String identifying the client. This client_id does not need - to be registered with the authorization server but should be set to a - meaningful value in order to allow auditing keys created by unregistered - clients. Accepted syntax is defined in - [RFC6749 Appendix A.1](https://tools.ietf.org/html/rfc6749#appendix-A.1). -
-
- scope -
-
- The resource in question, formatted as one of the space-delimited - entries from the scope parameters from the WWW-Authenticate header - shown above. This query parameter should be specified multiple times if - there is more than one scope entry from the WWW-Authenticate - header. The above example would be specified as: - scope=repository:samalba/my-app:push. The scope field may - be empty to request a refresh token without providing any resource - permissions to the returned bearer token. -
-
- - -#### Token Response Fields - -
-
- token -
-
- An opaque Bearer token that clients should supply to subsequent - requests in the Authorization header. -
-
- access_token -
-
- For compatibility with OAuth 2.0, we will also accept token under the name - access_token. At least one of these fields must be specified, but - both may also appear (for compatibility with older clients). When both are specified, - they should be equivalent; if they differ the client's choice is undefined. -
-
- expires_in -
-
- (Optional) The duration in seconds since the token was issued that it - will remain valid. When omitted, this defaults to 60 seconds. For - compatibility with older clients, a token should never be returned with - less than 60 seconds to live. -
-
- issued_at -
-
- (Optional) The RFC3339-serialized UTC - standard time at which a given token was issued. If issued_at is omitted, the - expiration is from when the token exchange completed. -
-
- refresh_token -
-
- (Optional) Token which can be used to get additional access tokens for - the same subject with different scopes. This token should be kept secure - by the client and only sent to the authorization server which issues - bearer tokens. This field will only be set when `offline_token=true` is - provided in the request. -
-
- -#### Example - -For this example, the client makes an HTTP GET request to the following URL: - -``` -https://auth.docker.io/token?service=registry.docker.io&scope=repository:samalba/my-app:pull,push -``` - -The token server should first attempt to authenticate the client using any -authentication credentials provided with the request. From Docker 1.11 the -Docker engine supports both Basic Authentication and [OAuth2](oauth.md) for -getting tokens. Docker 1.10 and before, the registry client in the Docker Engine -only supports Basic Authentication. If an attempt to authenticate to the token -server fails, the token server should return a `401 Unauthorized` response -indicating that the provided credentials are invalid. - -Whether the token server requires authentication is up to the policy of that -access control provider. Some requests may require authentication to determine -access (such as pushing or pulling a private repository) while others may not -(such as pulling from a public repository). - -After authenticating the client (which may simply be an anonymous client if -no attempt was made to authenticate), the token server must next query its -access control list to determine whether the client has the requested scope. In -this example request, if I have authenticated as user `jlhawn`, the token -server will determine what access I have to the repository `samalba/my-app` -hosted by the entity `registry.docker.io`. - -Once the token server has determined what access the client has to the -resources requested in the `scope` parameter, it will take the intersection of -the set of requested actions on each resource and the set of actions that the -client has in fact been granted. If the client only has a subset of the -requested access **it must not be considered an error** as it is not the -responsibility of the token server to indicate authorization errors as part of -this workflow. - -Continuing with the example request, the token server will find that the -client's set of granted access to the repository is `[pull, push]` which when -intersected with the requested access `[pull, push]` yields an equal set. If -the granted access set was found only to be `[pull]` then the intersected set -would only be `[pull]`. If the client has no access to the repository then the -intersected set would be empty, `[]`. - -It is this intersected set of access which is placed in the returned token. - -The server then constructs an implementation-specific token with this -intersected set of access, and returns it to the Docker client to use to -authenticate to the audience service (within the indicated window of time): - -``` -HTTP/1.1 200 OK -Content-Type: application/json - -{"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0.QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w", "expires_in": "3600","issued_at": "2009-11-10T23:00:00Z"} -``` - - -## Using the Bearer token - -Once the client has a token, it will try the registry request again with the -token placed in the HTTP `Authorization` header like so: - -``` -Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJWM0Q6MkFWWjpVQjVaOktJQVA6SU5QTDo1RU42Ok40SjQ6Nk1XTzpEUktFOkJWUUs6M0ZKTDpQT1RMIn0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJCQ0NZOk9VNlo6UUVKNTpXTjJDOjJBVkM6WTdZRDpBM0xZOjQ1VVc6NE9HRDpLQUxMOkNOSjU6NUlVTCIsImF1ZCI6InJlZ2lzdHJ5LmRvY2tlci5jb20iLCJleHAiOjE0MTUzODczMTUsIm5iZiI6MTQxNTM4NzAxNSwiaWF0IjoxNDE1Mzg3MDE1LCJqdGkiOiJ0WUpDTzFjNmNueXk3a0FuMGM3cktQZ2JWMUgxYkZ3cyIsInNjb3BlIjoiamxoYXduOnJlcG9zaXRvcnk6c2FtYWxiYS9teS1hcHA6cHVzaCxwdWxsIGpsaGF3bjpuYW1lc3BhY2U6c2FtYWxiYTpwdWxsIn0.Y3zZSwaZPqy4y9oRBVRImZyv3m_S9XDHF1tWwN7mL52C_IiA73SJkWVNsvNqpJIn5h7A2F8biv_S2ppQ1lgkbw -``` - -This is also described in [Section 2.1 of RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-2.1) diff --git a/vendor/github.com/docker/distribution/docs/spec/implementations.md b/vendor/github.com/docker/distribution/docs/spec/implementations.md deleted file mode 100644 index ec937b6474..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/implementations.md +++ /dev/null @@ -1,32 +0,0 @@ - - -# Distribution API Implementations - -This is a list of known implementations of the Distribution API spec. - -## [Docker Distribution Registry](https://github.com/docker/distribution) - -Docker distribution is the reference implementation of the distribution API -specification. It aims to fully implement the entire specification. - -### Releases -#### 2.0.1 (_in development_) -Implements API 2.0.1 - -_Known Issues_ - - No resumable push support - - Content ranges ignored - - Blob upload status will always return a starting range of 0 - -#### 2.0.0 -Implements API 2.0.0 - -_Known Issues_ - - No resumable push support - - No PATCH implementation for blob upload - - Content ranges ignored - diff --git a/vendor/github.com/docker/distribution/docs/spec/index.md b/vendor/github.com/docker/distribution/docs/spec/index.md deleted file mode 100644 index dddaa52885..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/index.md +++ /dev/null @@ -1,18 +0,0 @@ - - -# Docker Registry Reference - -* [HTTP API V2](api.md) -* [Storage Driver](../storagedrivers.md) -* [Token Authentication Specification](auth/token.md) -* [Token Authentication Implementation](auth/jwt.md) diff --git a/vendor/github.com/docker/distribution/docs/spec/json.md b/vendor/github.com/docker/distribution/docs/spec/json.md deleted file mode 100644 index a8916dccce..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/json.md +++ /dev/null @@ -1,94 +0,0 @@ - - - - -# Docker Distribution JSON Canonicalization - -To provide consistent content hashing of JSON objects throughout Docker -Distribution APIs, the specification defines a canonical JSON format. Adopting -such a canonicalization also aids in caching JSON responses. - -Note that protocols should not be designed to depend on identical JSON being -generated across different versions or clients. The canonicalization rules are -merely useful for caching and consistency. - -## Rules - -Compliant JSON should conform to the following rules: - -1. All generated JSON should comply with [RFC - 7159](http://www.ietf.org/rfc/rfc7159.txt). -2. Resulting "JSON text" shall always be encoded in UTF-8. -3. Unless a canonical key order is defined for a particular schema, object - keys shall always appear in lexically sorted order. -4. All whitespace between tokens should be removed. -5. No "trailing commas" are allowed in object or array definitions. -6. The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e". - Ampersand "&" is escaped to "\u0026". - -## Examples - -The following is a simple example of a canonicalized JSON string: - -```json -{"asdf":1,"qwer":[],"zxcv":[{},true,1000000000,"tyui"]} -``` - -## Reference - -### Other Canonicalizations - -The OLPC project specifies [Canonical -JSON](http://wiki.laptop.org/go/Canonical_JSON). While this is used in -[TUF](http://theupdateframework.com/), which may be used with other -distribution-related protocols, this alternative format has been proposed in -case the original source changes. Specifications complying with either this -specification or an alternative should explicitly call out the -canonicalization format. Except for key ordering, this specification is mostly -compatible. - -### Go - -In Go, the [`encoding/json`](http://golang.org/pkg/encoding/json/) library -will emit canonical JSON by default. Simply using `json.Marshal` will suffice -in most cases: - -```go -incoming := map[string]interface{}{ - "asdf": 1, - "qwer": []interface{}{}, - "zxcv": []interface{}{ - map[string]interface{}{}, - true, - int(1e9), - "tyui", - }, -} - -canonical, err := json.Marshal(incoming) -if err != nil { - // ... handle error -} -``` - -To apply canonical JSON format spacing to an existing serialized JSON buffer, one -can use -[`json.Indent`](http://golang.org/src/encoding/json/indent.go?s=1918:1989#L65) -with the following arguments: - -```go -incoming := getBytes() -var canonical bytes.Buffer -if err := json.Indent(&canonical, incoming, "", ""); err != nil { - // ... handle error -} -``` diff --git a/vendor/github.com/docker/distribution/docs/spec/manifest-v2-1.md b/vendor/github.com/docker/distribution/docs/spec/manifest-v2-1.md deleted file mode 100644 index 056f4bc669..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/manifest-v2-1.md +++ /dev/null @@ -1,167 +0,0 @@ - - -# Image Manifest Version 2, Schema 1 - -This document outlines the format of of the V2 image manifest. The image -manifest described herein was introduced in the Docker daemon in the [v1.3.0 -release](https://github.com/docker/docker/commit/9f482a66ab37ec396ac61ed0c00d59122ac07453). -It is a provisional manifest to provide a compatibility with the [V1 Image -format](https://github.com/docker/docker/blob/master/image/spec/v1.md), as the -requirements are defined for the [V2 Schema 2 -image](https://github.com/docker/distribution/pull/62). - - -Image manifests describe the various constituents of a docker image. Image -manifests can be serialized to JSON format with the following media types: - -Manifest Type | Media Type -------------- | ------------- -manifest | "application/vnd.docker.distribution.manifest.v1+json" -signed manifest | "application/vnd.docker.distribution.manifest.v1+prettyjws" - -*Note that "application/json" will also be accepted for schema 1.* - -References: - - - [Proposal: JSON Registry API V2.1](https://github.com/docker/docker/issues/9015) - - [Proposal: Provenance step 1 - Transform images for validation and verification](https://github.com/docker/docker/issues/8093) - -## *Manifest* Field Descriptions - -Manifest provides the base accessible fields for working with V2 image format - in the registry. - -- **`name`** *string* - - name is the name of the image's repository - -- **`tag`** *string* - - tag is the tag of the image - -- **`architecture`** *string* - - architecture is the host architecture on which this image is intended to - run. This is for information purposes and not currently used by the engine - -- **`fsLayers`** *array* - - fsLayers is a list of filesystem layer blob sums contained in this image. - - An fsLayer is a struct consisting of the following fields - - **`blobSum`** *digest.Digest* - - blobSum is the digest of the referenced filesystem image layer. A - digest must be a sha256 hash. - - -- **`history`** *array* - - history is a list of unstructured historical data for v1 compatibility. It - contains ID of the image layer and ID of the layer's parent layers. - - history is a struct consisting of the following fields - - **`v1Compatibility`** string - - V1Compatibility is the raw V1 compatibility information. This will - contain the JSON object describing the V1 of this image. - -- **`schemaVersion`** *int* - - SchemaVersion is the image manifest schema that this image follows. - ->**Note**:the length of `history` must be equal to the length of `fsLayers` and ->entries in each are correlated by index. - -## Signed Manifests - -Signed manifests provides an envelope for a signed image manifest. A signed -manifest consists of an image manifest along with an additional field -containing the signature of the manifest. - -The docker client can verify signed manifests and displays a message to the user. - -### Signing Manifests - -Image manifests can be signed in two different ways: with a *libtrust* private - key or an x509 certificate chain. When signing with an x509 certificate chain, - the public key of the first element in the chain must be the public key - corresponding with the sign key. - -### Signed Manifest Field Description - -Signed manifests include an image manifest and a list of signatures generated -by *libtrust*. A signature consists of the following fields: - - -- **`header`** *[JOSE](http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-31#section-2)* - - A [JSON Web Signature](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html) - -- **`signature`** *string* - - A signature for the image manifest, signed by a *libtrust* private key - -- **`protected`** *string* - - The signed protected header - -## Example Manifest - -*Example showing the official 'hello-world' image manifest.* - -``` -{ - "name": "hello-world", - "tag": "latest", - "architecture": "amd64", - "fsLayers": [ - { - "blobSum": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef" - }, - { - "blobSum": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef" - }, - { - "blobSum": "sha256:cc8567d70002e957612902a8e985ea129d831ebe04057d88fb644857caa45d11" - }, - { - "blobSum": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef" - } - ], - "history": [ - { - "v1Compatibility": "{\"id\":\"e45a5af57b00862e5ef5782a9925979a02ba2b12dff832fd0991335f4a11e5c5\",\"parent\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"created\":\"2014-12-31T22:57:59.178729048Z\",\"container\":\"27b45f8fb11795b52e9605b686159729b0d9ca92f76d40fb4f05a62e19c46b4f\",\"container_config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) CMD [/hello]\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"docker_version\":\"1.4.1\",\"config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/hello\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":0}\n" - }, - { - "v1Compatibility": "{\"id\":\"e45a5af57b00862e5ef5782a9925979a02ba2b12dff832fd0991335f4a11e5c5\",\"parent\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"created\":\"2014-12-31T22:57:59.178729048Z\",\"container\":\"27b45f8fb11795b52e9605b686159729b0d9ca92f76d40fb4f05a62e19c46b4f\",\"container_config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) CMD [/hello]\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"docker_version\":\"1.4.1\",\"config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/hello\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":0}\n" - }, - ], - "schemaVersion": 1, - "signatures": [ - { - "header": { - "jwk": { - "crv": "P-256", - "kid": "OD6I:6DRK:JXEJ:KBM4:255X:NSAA:MUSF:E4VM:ZI6W:CUN2:L4Z6:LSF4", - "kty": "EC", - "x": "3gAwX48IQ5oaYQAYSxor6rYYc_6yjuLCjtQ9LUakg4A", - "y": "t72ge6kIA1XOjqjVoEOiPPAURltJFBMGDSQvEGVB010" - }, - "alg": "ES256" - }, - "signature": "XREm0L8WNn27Ga_iE_vRnTxVMhhYY0Zst_FfkKopg6gWSoTOZTuW4rK0fg_IqnKkEKlbD83tD46LKEGi5aIVFg", - "protected": "eyJmb3JtYXRMZW5ndGgiOjY2MjgsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAxNS0wNC0wOFQxODo1Mjo1OVoifQ" - } - ] -} - -``` diff --git a/vendor/github.com/docker/distribution/docs/spec/manifest-v2-2.md b/vendor/github.com/docker/distribution/docs/spec/manifest-v2-2.md deleted file mode 100644 index 3163145416..0000000000 --- a/vendor/github.com/docker/distribution/docs/spec/manifest-v2-2.md +++ /dev/null @@ -1,288 +0,0 @@ - - -# Image Manifest Version 2, Schema 2 - -This document outlines the format of of the V2 image manifest, schema version 2. -The original (and provisional) image manifest for V2 (schema 1), was introduced -in the Docker daemon in the [v1.3.0 -release](https://github.com/docker/docker/commit/9f482a66ab37ec396ac61ed0c00d59122ac07453) -and is specified in the [schema 1 manifest definition](manifest-v2-1.md) - -This second schema version has two primary goals. The first is to allow -multi-architecture images, through a "fat manifest" which references image -manifests for platform-specific versions of an image. The second is to -move the Docker engine towards content-addressable images, by supporting -an image model where the image's configuration can be hashed to generate -an ID for the image. - -# Media Types - -The following media types are used by the manifest formats described here, and -the resources they reference: - -- `application/vnd.docker.distribution.manifest.v1+json`: schema1 (existing manifest format) -- `application/vnd.docker.distribution.manifest.v2+json`: New image manifest format (schemaVersion = 2) -- `application/vnd.docker.distribution.manifest.list.v2+json`: Manifest list, aka "fat manifest" -- `application/vnd.docker.image.rootfs.diff.tar.gzip`: "Layer", as a gzipped tar -- `application/vnd.docker.container.image.v1+json`: Container config JSON - -## Manifest List - -The manifest list is the "fat manifest" which points to specific image manifests -for one or more platforms. Its use is optional, and relatively few images will -use one of these manifests. A client will distinguish a manifest list from an -image manifest based on the Content-Type returned in the HTTP response. - -## *Manifest List* Field Descriptions - -- **`schemaVersion`** *int* - - This field specifies the image manifest schema version as an integer. This - schema uses the version `2`. - -- **`mediaType`** *string* - - The MIME type of the manifest list. This should be set to - `application/vnd.docker.distribution.manifest.list.v2+json`. - -- **`manifests`** *array* - - The manifests field contains a list of manifests for specific platforms. - - Fields of a object in the manifests list are: - - - **`mediaType`** *string* - - The MIME type of the referenced object. This will generally be - `application/vnd.docker.image.manifest.v2+json`, but it could also - be `application/vnd.docker.image.manifest.v1+json` if the manifest - list references a legacy schema-1 manifest. - - - **`size`** *int* - - The size in bytes of the object. This field exists so that a client - will have an expected size for the content before validating. If the - length of the retrieved content does not match the specified length, - the content should not be trusted. - - - **`digest`** *string* - - The digest of the content, as defined by the - [Registry V2 HTTP API Specificiation](https://docs.docker.com/registry/spec/api/#digest-parameter). - - - **`platform`** *object* - - The platform object describes the platform which the image in the - manifest runs on. A full list of valid operating system and architecture - values are listed in the [Go language documentation for `$GOOS` and - `$GOARCH`](https://golang.org/doc/install/source#environment) - - - **`architecture`** *string* - - The architecture field specifies the CPU architecture, for example - `amd64` or `ppc64le`. - - - **`os`** *string* - - The os field specifies the operating system, for example - `linux` or `windows`. - - - **`os.version`** *string* - - The optional os.version field specifies the operating system version, - for example `10.0.10586`. - - - **`os.features`** *array* - - The optional os.features field specifies an array of strings, - each listing a required OS feature (for example on Windows - `win32k`). - - - **`variant`** *string* - - The optional variant field specifies a variant of the CPU, for - example `armv6l` to specify a particular CPU variant of the ARM CPU. - - - **`features`** *array* - - The optional features field specifies an array of strings, each - listing a required CPU feature (for example `sse4` or `aes`). - -## Example Manifest List - -*Example showing a simple manifest list pointing to image manifests for two platforms:* -```json -{ - "schemaVersion": 2, - "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", - "manifests": [ - { - "mediaType": "application/vnd.docker.image.manifest.v2+json", - "size": 7143, - "digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f", - "platform": { - "architecture": "ppc64le", - "os": "linux", - } - }, - { - "mediaType": "application/vnd.docker.image.manifest.v2+json", - "size": 7682, - "digest": "sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270", - "platform": { - "architecture": "amd64", - "os": "linux", - "features": [ - "sse4" - ] - } - } - ] -} -``` - -# Image Manifest - -The image manifest provides a configuration and a set of layers for a container -image. It's the direct replacement for the schema-1 manifest. - -## *Image Manifest* Field Descriptions - -- **`schemaVersion`** *int* - - This field specifies the image manifest schema version as an integer. This - schema uses version `2`. - -- **`mediaType`** *string* - - The MIME type of the manifest. This should be set to - `application/vnd.docker.distribution.manifest.v2+json`. - -- **`config`** *object* - - The config field references a configuration object for a container, by - digest. This configuration item is a JSON blob that the runtime uses - to set up the container. This new schema uses a tweaked version - of this configuration to allow image content-addressability on the - daemon side. - - Fields of a config object are: - - - **`mediaType`** *string* - - The MIME type of the referenced object. This should generally be - `application/vnd.docker.container.image.v1+json`. - - - **`size`** *int* - - The size in bytes of the object. This field exists so that a client - will have an expected size for the content before validating. If the - length of the retrieved content does not match the specified length, - the content should not be trusted. - - - **`digest`** *string* - - The digest of the content, as defined by the - [Registry V2 HTTP API Specificiation](https://docs.docker.com/registry/spec/api/#digest-parameter). - -- **`layers`** *array* - - The layer list is ordered starting from the base image (opposite order of schema1). - - Fields of an item in the layers list are: - - - **`mediaType`** *string* - - The MIME type of the referenced object. This should - generally be `application/vnd.docker.image.rootfs.diff.tar.gzip`. - - - **`size`** *int* - - The size in bytes of the object. This field exists so that a client - will have an expected size for the content before validating. If the - length of the retrieved content does not match the specified length, - the content should not be trusted. - - - **`digest`** *string* - - The digest of the content, as defined by the - [Registry V2 HTTP API Specificiation](https://docs.docker.com/registry/spec/api/#digest-parameter). - -## Example Image Manifest - -*Example showing an image manifest:* -```json -{ - "schemaVersion": 2, - "mediaType": "application/vnd.docker.distribution.manifest.v2+json", - "config": { - "mediaType": "application/vnd.docker.container.image.v1+json", - "size": 7023, - "digest": "sha256:b5b2b2c507a0944348e0303114d8d93aaaa081732b86451d9bce1f432a537bc7" - }, - "layers": [ - { - "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", - "size": 32654, - "digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f" - }, - { - "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", - "size": 16724, - "digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b" - }, - { - "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", - "size": 73109, - "digest": "sha256:ec4b8955958665577945c89419d1af06b5f7636b4ac3da7f12184802ad867736" - } - ], -} -``` - -# Backward compatibility - -The registry will continue to accept uploads of manifests in both the old and -new formats. - -When pushing images, clients which support the new manifest format should first -construct a manifest in the new format. If uploading this manifest fails, -presumably because the registry only supports the old format, the client may -fall back to uploading a manifest in the old format. - -When pulling images, clients indicate support for this new version of the -manifest format by sending the -`application/vnd.docker.distribution.manifest.v2+json` and -`application/vnd.docker.distribution.manifest.list.v2+json` media types in an -`Accept` header when making a request to the `manifests` endpoint. Updated -clients should check the `Content-Type` header to see whether the manifest -returned from the endpoint is in the old format, or is an image manifest or -manifest list in the new format. - -If the manifest being requested uses the new format, and the appropriate media -type is not present in an `Accept` header, the registry will assume that the -client cannot handle the manifest as-is, and rewrite it on the fly into the old -format. If the object that would otherwise be returned is a manifest list, the -registry will look up the appropriate manifest for the amd64 platform and -linux OS, rewrite that manifest into the old format if necessary, and return -the result to the client. If no suitable manifest is found in the manifest -list, the registry will return a 404 error. - -One of the challenges in rewriting manifests to the old format is that the old -format involves an image configuration for each layer in the manifest, but the -new format only provides one image configuration. To work around this, the -registry will create synthetic image configurations for all layers except the -top layer. These image configurations will not result in runnable images on -their own, but only serve to fill in the parent chain in a compatible way. -The IDs in these synthetic configurations will be derived from hashes of their -respective blobs. The registry will create these configurations and their IDs -using the same scheme as Docker 1.10 when it creates a legacy manifest to push -to a registry which doesn't support the new format. diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/azure.md b/vendor/github.com/docker/distribution/docs/storage-drivers/azure.md deleted file mode 100644 index 2783c427e6..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/azure.md +++ /dev/null @@ -1,76 +0,0 @@ - - - -# Microsoft Azure storage driver - -An implementation of the `storagedriver.StorageDriver` interface which uses [Microsoft Azure Blob Storage](http://azure.microsoft.com/en-us/services/storage/) for object storage. - -## Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- accountname - - yes - - Name of the Azure Storage Account. -
- accountkey - - yes - - Primary or Secondary Key for the Storage Account. -
- container - - yes - - Name of the Azure root storage container in which all registry data will be stored. Must comply the storage container name [requirements][create-container-api]. -
- realm - - no - - Domain name suffix for the Storage Service API endpoint. For example realm for "Azure in China" would be `core.chinacloudapi.cn` and realm for "Azure Government" would be `core.usgovcloudapi.net`. By default, this - is core.windows.net. -
- - -## Related Information - -* To get information about -[azure-blob-storage](http://azure.microsoft.com/en-us/services/storage/) visit -the Microsoft website. -* You can use Microsoft's [Blob Service REST API](https://msdn.microsoft.com/en-us/library/azure/dd135733.aspx) to [create a container] (https://msdn.microsoft.com/en-us/library/azure/dd179468.aspx). diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/filesystem.md b/vendor/github.com/docker/distribution/docs/storage-drivers/filesystem.md deleted file mode 100644 index 476edcf5ad..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/filesystem.md +++ /dev/null @@ -1,18 +0,0 @@ - - - -# Filesystem storage driver - -An implementation of the `storagedriver.StorageDriver` interface which uses the local filesystem. - -## Parameters - -`rootdirectory`: (optional) The absolute path to a root directory tree in which -to store all registry files. The registry stores all its data here so make sure -there is adequate space available. Defaults to `/var/lib/registry`. diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/gcs.md b/vendor/github.com/docker/distribution/docs/storage-drivers/gcs.md deleted file mode 100644 index 0aa9b30dd4..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/gcs.md +++ /dev/null @@ -1,76 +0,0 @@ - - - -# Google Cloud Storage driver - -An implementation of the `storagedriver.StorageDriver` interface which uses Google Cloud for object storage. - -## Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- bucket - - yes - - Storage bucket name. -
- keyfile - - no - - A private service account key file in JSON format. Instead of a key file Google Application Default Credentials can be used. -
- rootdirectory - - no - - This is a prefix that will be applied to all Google Cloud Storage keys to allow you to segment data in your bucket if necessary. -
- chunksize - - no (default 5242880) - - This is the chunk size used for uploading large blobs, must be a multiple of 256*1024. -
- - -`bucket`: The name of your Google Cloud Storage bucket where you wish to store objects (needs to already be created prior to driver initialization). - -`keyfile`: (optional) A private key file in JSON format, used for [Service Account Authentication](https://cloud.google.com/storage/docs/authentication#service_accounts). - -**Note** Instead of a key file you can use [Google Application Default Credentials](https://developers.google.com/identity/protocols/application-default-credentials). - -`rootdirectory`: (optional) The root directory tree in which all registry files will be stored. Defaults to the empty string (bucket root). diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/index.md b/vendor/github.com/docker/distribution/docs/storage-drivers/index.md deleted file mode 100644 index 2de729ad14..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/index.md +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/inmemory.md b/vendor/github.com/docker/distribution/docs/storage-drivers/inmemory.md deleted file mode 100644 index 3109891e24..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/inmemory.md +++ /dev/null @@ -1,21 +0,0 @@ - - - -# In-memory storage driver (Testing Only) - -For purely tests purposes, you can use the `inmemory` storage driver. This -driver is an implementation of the `storagedriver.StorageDriver` interface which -uses local memory for object storage. If you would like to run a registry from -volatile memory, use the [`filesystem` driver](filesystem.md) on a ramdisk. - -**IMPORTANT**: This storage driver *does not* persist data across runs. This is why it is only suitable for testing. *Never* use this driver in production. - -## Parameters - -None diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/oss.md b/vendor/github.com/docker/distribution/docs/storage-drivers/oss.md deleted file mode 100644 index 2087c98d25..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/oss.md +++ /dev/null @@ -1,124 +0,0 @@ - - -# Aliyun OSS storage driver - -An implementation of the `storagedriver.StorageDriver` interface which uses [Aliyun OSS](http://www.aliyun.com/product/oss) for object storage. - -## Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- accesskeyid - -yes - -Your access key ID. -
- accesskeysecret - -yes - -Your access key secret. -
- region - -yes - The name of the OSS region in which you would like to store objects (for example `oss-cn-beijing`). For a list of regions, you can look at -
- endpoint - -no - -An endpoint which defaults to `..aliyuncs.com` or `.-internal.aliyuncs.com` (when `internal=true`). You can change the default endpoint by changing this value. -
- internal - -no - An internal endpoint or the public endpoint for OSS access. The default is false. For a list of regions, you can look at -
- bucket - -yes - The name of your OSS bucket where you wish to store objects (needs to already be created prior to driver initialization). -
- encrypt - -no - Specifies whether you would like your data encrypted on the server side. Defaults to false if not specified. -
- secure - -no - Specifies whether to transfer data to the bucket over ssl or not. If you omit this value, `true` is used. -
- chunksize - -no - The default part size for multipart uploads (performed by WriteStream) to OSS. The default is 10 MB. Keep in mind that the minimum part size for OSS is 5MB. You might experience better performance for larger chunk sizes depending on the speed of your connection to OSS. -
- rootdirectory - -no - The root directory tree in which to store all registry files. Defaults to an empty string (bucket root). -
diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/s3.md b/vendor/github.com/docker/distribution/docs/storage-drivers/s3.md deleted file mode 100644 index d78fc988c6..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/s3.md +++ /dev/null @@ -1,266 +0,0 @@ - - - -# S3 storage driver - -An implementation of the `storagedriver.StorageDriver` interface which uses Amazon S3 or S3 compatible services for object storage. - -## Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- accesskey - - yes - - Your AWS Access Key. -
- secretkey - - yes - - Your AWS Secret Key. -
- region - - yes - - The AWS region in which your bucket exists. For the moment, the Go AWS - library in use does not use the newer DNS based bucket routing. -
- regionendpoint - - no - - Endpoint for S3 compatible storage services (Minio, etc) -
- bucket - - yes - - The bucket name in which you want to store the registry's data. -
- encrypt - - no - - Specifies whether the registry stores the image in encrypted format or - not. A boolean value. The default is false. -
- keyid - - no - - Optional KMS key ID to use for encryption (encrypt must be true, or this - parameter will be ignored). The default is none. -
- secure - - no - - Indicates whether to use HTTPS instead of HTTP. A boolean value. The - default is true. -
- v4auth - - no - - Indicates whether the registry uses Version 4 of AWS's authentication. - Generally, you should set this to true. By default, this is - false. -
- chunksize - - no - - The S3 API requires multipart upload chunks to be at least 5MB. This value - should be a number that is larger than 5*1024*1024. -
- rootdirectory - - no - - This is a prefix that will be applied to all S3 keys to allow you to segment data in your bucket if necessary. -
- storageclass - - no - - The S3 storage class applied to each registry file. The default value is STANDARD. -
- - -`accesskey`: Your aws access key. - -`secretkey`: Your aws secret key. - -**Note** You can provide empty strings for your access and secret keys if you plan on running the driver on an ec2 instance and will handle authentication with the instance's credentials. - -`region`: The name of the aws region in which you would like to store objects (for example `us-east-1`). For a list of regions, you can look at http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html - -`regionendpoint`: (optional) Endpoint URL for S3 compatible APIs. This should not be provided when using Amazon S3. - -`bucket`: The name of your S3 bucket where you wish to store objects. The bucket must exist prior to the driver initialization. - -`encrypt`: (optional) Whether you would like your data encrypted on the server side (defaults to false if not specified). - -`keyid`: (optional) Whether you would like your data encrypted with this KMS key ID (defaults to none if not specified, will be ignored if encrypt is not true). - -`secure`: (optional) Whether you would like to transfer data to the bucket over ssl or not. Defaults to true (meaning transferring over ssl) if not specified. Note that while setting this to false will improve performance, it is not recommended due to security concerns. - -`v4auth`: (optional) Whether you would like to use aws signature version 4 with your requests. This defaults to false if not specified (note that the eu-central-1 region does not work with version 2 signatures, so the driver will error out if initialized with this region and v4auth set to false) - -`chunksize`: (optional) The default part size for multipart uploads (performed by WriteStream) to S3. The default is 10 MB. Keep in mind that the minimum part size for S3 is 5MB. Depending on the speed of your connection to S3, a larger chunk size may result in better performance; faster connections will benefit from larger chunk sizes. - -`rootdirectory`: (optional) The root directory tree in which all registry files will be stored. Defaults to the empty string (bucket root). - -`storageclass`: (optional) The storage class applied to each registry file. Defaults to STANDARD. Valid options are STANDARD and REDUCED_REDUNDANCY. - -## S3 permission scopes - -The following IAM permissions are required by the registry for push and pull. See [the S3 policy documentation](http://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) for more details. - -``` - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "s3:ListBucket", - "s3:GetBucketLocation", - "s3:ListBucketMultipartUploads" - ], - "Resource": "arn:aws:s3:::mybucket" - }, - { - "Effect": "Allow", - "Action": [ - "s3:PutObject", - "s3:GetObject", - "s3:DeleteObject", - "s3:ListMultipartUploadParts", - "s3:AbortMultipartUpload" - ], - "Resource": "arn:aws:s3:::mybucket/*" - } -] -``` - -# CloudFront as Middleware with S3 backend - -## Use Case - -Adding CloudFront as a middleware for your S3 backed registry can dramatically improve pull times. Your registry will have the ability to retrieve your images from edge servers, rather than the geographically limited location of your S3 bucket. The farther your registry is from your bucket, the more improvements you will see. See [Amazon CloudFront](https://aws.amazon.com/cloudfront/details/). - -## Configuring CloudFront for Distribution - -If you are unfamiliar with creating a CloudFront distribution, see [Getting Started with Cloudfront](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.html). - -Defaults can be kept in most areas except: - -### Origin: - -The CloudFront distribution must be created such that the `Origin Path` is set to the directory level of the root "docker" key in S3. If your registry exists on the root of the bucket, this path should be left blank. - -### Behaviors: - - - Viewer Protocol Policy: HTTPS Only - - Allowed HTTP Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE - - Cached HTTP Methods: OPTIONS (checked) - - Restrict Viewer Access (Use Signed URLs or Signed Cookies): Yes - - Trusted Signers: Self (Can add other accounts as long as you have access to CloudFront Key Pairs for those additional accounts) - -## Registry configuration - -Here the `middleware` option is used. It is still important to keep the `storage` option as CloudFront will only handle `pull` actions; `push` actions are still directly written to S3. - -The following example shows what you will need at minimum: -``` -... -storage: - s3: - region: us-east-1 - bucket: docker.myregistry.com -middleware: - storage: - - name: cloudfront - options: - baseurl: https://abcdefghijklmn.cloudfront.net/ - privatekey: /etc/docker/cloudfront/pk-ABCEDFGHIJKLMNOPQRST.pem - keypairid: ABCEDFGHIJKLMNOPQRST -... -``` - -## CloudFront Key-Pair - -A CloudFront key-pair is required for all AWS accounts needing access to your CloudFront distribution. For information, please see [Creating CloudFront Key Pairs](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html#private-content-creating-cloudfront-key-pairs). diff --git a/vendor/github.com/docker/distribution/docs/storage-drivers/swift.md b/vendor/github.com/docker/distribution/docs/storage-drivers/swift.md deleted file mode 100644 index cab0bbd204..0000000000 --- a/vendor/github.com/docker/distribution/docs/storage-drivers/swift.md +++ /dev/null @@ -1,375 +0,0 @@ - - - -# OpenStack Swift storage driver - -An implementation of the `storagedriver.StorageDriver` interface that uses [OpenStack Swift](http://docs.openstack.org/developer/swift/) for object storage. - -## Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequiredDescription
- authurl - - yes - - URL for obtaining an auth token. https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth -
- username - - yes - - Your Openstack user name. -
- password - - yes - - Your Openstack password. -
- region - - no - - The Openstack region in which your container exists. -
- container - - yes - - The name of your Swift container where you wish to store the registry's data. The driver creates the named container during its initialization. -
- tenant - - no - - Your Openstack tenant name. You can either use tenant or tenantid. -
- tenantid - - no - - Your Openstack tenant id. You can either use tenant or tenantid. -
- domain - - no - - Your Openstack domain name for Identity v3 API. You can either use domain or domainid. -
- domainid - - no - - Your Openstack domain id for Identity v3 API. You can either use domain or domainid. -
- trustid - - no - - Your Openstack trust id for Identity v3 API. -
- insecureskipverify - - no - - true to skip TLS verification, false by default. -
- chunksize - - no - - Size of the data segments for the Swift Dynamic Large Objects. This value should be a number (defaults to 5M). -
- prefix - - no - - This is a prefix that will be applied to all Swift keys to allow you to segment data in your container if necessary. Defaults to the empty string which is the container's root. -
- secretkey - - no - - The secret key used to generate temporary URLs. -
- accesskey - - no - - The access key to generate temporary URLs. It is used by HP Cloud Object Storage in addition to the `secretkey` parameter. -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- authurl - -

URL for obtaining an auth token.

-
- username - -

- Your OpenStack user name.

-

-
- password -

-

-

- Your OpenStack password. -

-
- container - -

- The name of your Swift container where you wish to store the registry's data. The driver creates the named container during its initialization. -

-
- tenant - -

- Optionally, your OpenStack tenant name. You can either use tenant or tenantid. -

-
- tenantid - -

- Optionally, your OpenStack tenant id. You can either use tenant or tenantid. -

-
- domain - -

- Optionally, your OpenStack domain name for Identity v3 API. You can either use domain or domainid. -

-
- domainid - -

- Optionally, your OpenStack domain id for Identity v3 API. You can either use domain or domainid. -

-
- trustid - -

- Optionally, your OpenStack trust id for Identity v3 API. -

-
- insecureskipverify - -

- Optionally, set insecureskipverify to true to skip TLS verification for your OpenStack provider. The driver uses false by default. -

-
- region - -

- Optionally, specify the OpenStack region name in which you would like to store objects (for example fr). -

-
- chunksize - -

- Optionally, specify the segment size for Dynamic Large Objects uploads (performed by WriteStream) to Swift. The default is 5 MB. You might experience better performance for larger chunk sizes depending on the speed of your connection to Swift. -

-
- prefix - -

- Optionally, supply a prefix that will be applied to all Swift keys to allow you to segment data in your container if necessary. Defaults to the empty string which is the container's root.

-

-
- secretkey - -

- Optionally, the secret key used to generate temporary URLs.

-

-
- accesskey - -

- Optionally, the access key to generate temporary URLs. It is used by HP Cloud Object Storage in addition to the `secretkey` parameter.

-

-
- -The features supported by the Swift server are queried by requesting the `/info` URL on the server. In case the administrator -disabled that feature, the configuration file can specify the following optional parameters : - - - - - - - - - - -
- tempurlcontainerkey - -

- Specify whether to use container secret key to generate temporary URL when set to true, or the account secret key otherwise.

-

-
- tempurlmethods - -

- Array of HTTP methods that are supported by the TempURL middleware of the Swift server. Example:

- - - tempurlmethods: - - GET - - PUT - - HEAD - - POST - - DELETE - -

-
diff --git a/vendor/github.com/docker/distribution/docs/storagedrivers.md b/vendor/github.com/docker/distribution/docs/storagedrivers.md deleted file mode 100644 index ab475c32c5..0000000000 --- a/vendor/github.com/docker/distribution/docs/storagedrivers.md +++ /dev/null @@ -1,64 +0,0 @@ - - - -# Docker Registry Storage Driver - -This document describes the registry storage driver model, implementation, and explains how to contribute new storage drivers. - -## Provided Drivers - -This storage driver package comes bundled with several drivers: - -- [inmemory](storage-drivers/inmemory.md): A temporary storage driver using a local inmemory map. This exists solely for reference and testing. -- [filesystem](storage-drivers/filesystem.md): A local storage driver configured to use a directory tree in the local filesystem. -- [s3](storage-drivers/s3.md): A driver storing objects in an Amazon Simple Storage Solution (S3) bucket. -- [azure](storage-drivers/azure.md): A driver storing objects in [Microsoft Azure Blob Storage](http://azure.microsoft.com/en-us/services/storage/). -- [swift](storage-drivers/swift.md): A driver storing objects in [Openstack Swift](http://docs.openstack.org/developer/swift/). -- [oss](storage-drivers/oss.md): A driver storing objects in [Aliyun OSS](http://www.aliyun.com/product/oss). -- [gcs](storage-drivers/gcs.md): A driver storing objects in a [Google Cloud Storage](https://cloud.google.com/storage/) bucket. - -## Storage Driver API - -The storage driver API is designed to model a filesystem-like key/value storage in a manner abstract enough to support a range of drivers from the local filesystem to Amazon S3 or other distributed object storage systems. - -Storage drivers are required to implement the `storagedriver.StorageDriver` interface provided in `storagedriver.go`, which includes methods for reading, writing, and deleting content, as well as listing child objects of a specified prefix key. - -Storage drivers are intended to be written in Go, providing compile-time -validation of the `storagedriver.StorageDriver` interface. - -## Driver Selection and Configuration - -The preferred method of selecting a storage driver is using the `StorageDriverFactory` interface in the `storagedriver/factory` package. These factories provide a common interface for constructing storage drivers with a parameters map. The factory model is based off of the [Register](http://golang.org/pkg/database/sql/#Register) and [Open](http://golang.org/pkg/database/sql/#Open) methods in the builtin [database/sql](http://golang.org/pkg/database/sql) package. - -Storage driver factories may be registered by name using the -`factory.Register` method, and then later invoked by calling `factory.Create` -with a driver name and parameters map. If no such storage driver can be found, -`factory.Create` will return an `InvalidStorageDriverError`. - -## Driver Contribution - -### Writing new storage drivers - -To create a valid storage driver, one must implement the -`storagedriver.StorageDriver` interface and make sure to expose this driver -via the factory system. - -#### Registering - -Storage drivers should call `factory.Register` with their driver name in an `init` method, allowing callers of `factory.New` to construct instances of this driver without requiring modification of imports throughout the codebase. - -## Testing - -Storage driver test suites are provided in -`storagedriver/testsuites/testsuites.go` and may be used for any storage -driver written in Go. Tests can be registered using the `RegisterSuite` -function, which run the same set of tests for any registered drivers. diff --git a/vendor/github.com/docker/distribution/errors.go b/vendor/github.com/docker/distribution/errors.go deleted file mode 100644 index c20f28113c..0000000000 --- a/vendor/github.com/docker/distribution/errors.go +++ /dev/null @@ -1,115 +0,0 @@ -package distribution - -import ( - "errors" - "fmt" - "strings" - - "github.com/docker/distribution/digest" -) - -// ErrAccessDenied is returned when an access to a requested resource is -// denied. -var ErrAccessDenied = errors.New("access denied") - -// ErrManifestNotModified is returned when a conditional manifest GetByTag -// returns nil due to the client indicating it has the latest version -var ErrManifestNotModified = errors.New("manifest not modified") - -// ErrUnsupported is returned when an unimplemented or unsupported action is -// performed -var ErrUnsupported = errors.New("operation unsupported") - -// ErrTagUnknown is returned if the given tag is not known by the tag service -type ErrTagUnknown struct { - Tag string -} - -func (err ErrTagUnknown) Error() string { - return fmt.Sprintf("unknown tag=%s", err.Tag) -} - -// ErrRepositoryUnknown is returned if the named repository is not known by -// the registry. -type ErrRepositoryUnknown struct { - Name string -} - -func (err ErrRepositoryUnknown) Error() string { - return fmt.Sprintf("unknown repository name=%s", err.Name) -} - -// ErrRepositoryNameInvalid should be used to denote an invalid repository -// name. Reason may set, indicating the cause of invalidity. -type ErrRepositoryNameInvalid struct { - Name string - Reason error -} - -func (err ErrRepositoryNameInvalid) Error() string { - return fmt.Sprintf("repository name %q invalid: %v", err.Name, err.Reason) -} - -// ErrManifestUnknown is returned if the manifest is not known by the -// registry. -type ErrManifestUnknown struct { - Name string - Tag string -} - -func (err ErrManifestUnknown) Error() string { - return fmt.Sprintf("unknown manifest name=%s tag=%s", err.Name, err.Tag) -} - -// ErrManifestUnknownRevision is returned when a manifest cannot be found by -// revision within a repository. -type ErrManifestUnknownRevision struct { - Name string - Revision digest.Digest -} - -func (err ErrManifestUnknownRevision) Error() string { - return fmt.Sprintf("unknown manifest name=%s revision=%s", err.Name, err.Revision) -} - -// ErrManifestUnverified is returned when the registry is unable to verify -// the manifest. -type ErrManifestUnverified struct{} - -func (ErrManifestUnverified) Error() string { - return fmt.Sprintf("unverified manifest") -} - -// ErrManifestVerification provides a type to collect errors encountered -// during manifest verification. Currently, it accepts errors of all types, -// but it may be narrowed to those involving manifest verification. -type ErrManifestVerification []error - -func (errs ErrManifestVerification) Error() string { - var parts []string - for _, err := range errs { - parts = append(parts, err.Error()) - } - - return fmt.Sprintf("errors verifying manifest: %v", strings.Join(parts, ",")) -} - -// ErrManifestBlobUnknown returned when a referenced blob cannot be found. -type ErrManifestBlobUnknown struct { - Digest digest.Digest -} - -func (err ErrManifestBlobUnknown) Error() string { - return fmt.Sprintf("unknown blob %v on manifest", err.Digest) -} - -// ErrManifestNameInvalid should be used to denote an invalid manifest -// name. Reason may set, indicating the cause of invalidity. -type ErrManifestNameInvalid struct { - Name string - Reason error -} - -func (err ErrManifestNameInvalid) Error() string { - return fmt.Sprintf("manifest name %q invalid: %v", err.Name, err.Reason) -} diff --git a/vendor/github.com/docker/distribution/health/api/api.go b/vendor/github.com/docker/distribution/health/api/api.go deleted file mode 100644 index 73fcc4535f..0000000000 --- a/vendor/github.com/docker/distribution/health/api/api.go +++ /dev/null @@ -1,37 +0,0 @@ -package api - -import ( - "errors" - "net/http" - - "github.com/docker/distribution/health" -) - -var ( - updater = health.NewStatusUpdater() -) - -// DownHandler registers a manual_http_status that always returns an Error -func DownHandler(w http.ResponseWriter, r *http.Request) { - if r.Method == "POST" { - updater.Update(errors.New("Manual Check")) - } else { - w.WriteHeader(http.StatusNotFound) - } -} - -// UpHandler registers a manual_http_status that always returns nil -func UpHandler(w http.ResponseWriter, r *http.Request) { - if r.Method == "POST" { - updater.Update(nil) - } else { - w.WriteHeader(http.StatusNotFound) - } -} - -// init sets up the two endpoints to bring the service up and down -func init() { - health.Register("manual_http_status", updater) - http.HandleFunc("/debug/health/down", DownHandler) - http.HandleFunc("/debug/health/up", UpHandler) -} diff --git a/vendor/github.com/docker/distribution/health/api/api_test.go b/vendor/github.com/docker/distribution/health/api/api_test.go deleted file mode 100644 index ec82154f6e..0000000000 --- a/vendor/github.com/docker/distribution/health/api/api_test.go +++ /dev/null @@ -1,86 +0,0 @@ -package api - -import ( - "net/http" - "net/http/httptest" - "testing" - - "github.com/docker/distribution/health" -) - -// TestGETDownHandlerDoesNotChangeStatus ensures that calling the endpoint -// /debug/health/down with METHOD GET returns a 404 -func TestGETDownHandlerDoesNotChangeStatus(t *testing.T) { - recorder := httptest.NewRecorder() - - req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health/down", nil) - if err != nil { - t.Errorf("Failed to create request.") - } - - DownHandler(recorder, req) - - if recorder.Code != 404 { - t.Errorf("Did not get a 404.") - } -} - -// TestGETUpHandlerDoesNotChangeStatus ensures that calling the endpoint -// /debug/health/down with METHOD GET returns a 404 -func TestGETUpHandlerDoesNotChangeStatus(t *testing.T) { - recorder := httptest.NewRecorder() - - req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health/up", nil) - if err != nil { - t.Errorf("Failed to create request.") - } - - DownHandler(recorder, req) - - if recorder.Code != 404 { - t.Errorf("Did not get a 404.") - } -} - -// TestPOSTDownHandlerChangeStatus ensures the endpoint /debug/health/down changes -// the status code of the response to 503 -// This test is order dependent, and should come before TestPOSTUpHandlerChangeStatus -func TestPOSTDownHandlerChangeStatus(t *testing.T) { - recorder := httptest.NewRecorder() - - req, err := http.NewRequest("POST", "https://fakeurl.com/debug/health/down", nil) - if err != nil { - t.Errorf("Failed to create request.") - } - - DownHandler(recorder, req) - - if recorder.Code != 200 { - t.Errorf("Did not get a 200.") - } - - if len(health.CheckStatus()) != 1 { - t.Errorf("DownHandler didn't add an error check.") - } -} - -// TestPOSTUpHandlerChangeStatus ensures the endpoint /debug/health/up changes -// the status code of the response to 200 -func TestPOSTUpHandlerChangeStatus(t *testing.T) { - recorder := httptest.NewRecorder() - - req, err := http.NewRequest("POST", "https://fakeurl.com/debug/health/up", nil) - if err != nil { - t.Errorf("Failed to create request.") - } - - UpHandler(recorder, req) - - if recorder.Code != 200 { - t.Errorf("Did not get a 200.") - } - - if len(health.CheckStatus()) != 0 { - t.Errorf("UpHandler didn't remove the error check.") - } -} diff --git a/vendor/github.com/docker/distribution/health/checks/checks.go b/vendor/github.com/docker/distribution/health/checks/checks.go deleted file mode 100644 index e3c3b08d39..0000000000 --- a/vendor/github.com/docker/distribution/health/checks/checks.go +++ /dev/null @@ -1,62 +0,0 @@ -package checks - -import ( - "errors" - "net" - "net/http" - "os" - "strconv" - "time" - - "github.com/docker/distribution/health" -) - -// FileChecker checks the existence of a file and returns an error -// if the file exists. -func FileChecker(f string) health.Checker { - return health.CheckFunc(func() error { - if _, err := os.Stat(f); err == nil { - return errors.New("file exists") - } - return nil - }) -} - -// HTTPChecker does a HEAD request and verifies that the HTTP status code -// returned matches statusCode. -func HTTPChecker(r string, statusCode int, timeout time.Duration, headers http.Header) health.Checker { - return health.CheckFunc(func() error { - client := http.Client{ - Timeout: timeout, - } - req, err := http.NewRequest("HEAD", r, nil) - if err != nil { - return errors.New("error creating request: " + r) - } - for headerName, headerValues := range headers { - for _, headerValue := range headerValues { - req.Header.Add(headerName, headerValue) - } - } - response, err := client.Do(req) - if err != nil { - return errors.New("error while checking: " + r) - } - if response.StatusCode != statusCode { - return errors.New("downstream service returned unexpected status: " + strconv.Itoa(response.StatusCode)) - } - return nil - }) -} - -// TCPChecker attempts to open a TCP connection. -func TCPChecker(addr string, timeout time.Duration) health.Checker { - return health.CheckFunc(func() error { - conn, err := net.DialTimeout("tcp", addr, timeout) - if err != nil { - return errors.New("connection to " + addr + " failed") - } - conn.Close() - return nil - }) -} diff --git a/vendor/github.com/docker/distribution/health/checks/checks_test.go b/vendor/github.com/docker/distribution/health/checks/checks_test.go deleted file mode 100644 index 6b6dd14fa2..0000000000 --- a/vendor/github.com/docker/distribution/health/checks/checks_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package checks - -import ( - "testing" -) - -func TestFileChecker(t *testing.T) { - if err := FileChecker("/tmp").Check(); err == nil { - t.Errorf("/tmp was expected as exists") - } - - if err := FileChecker("NoSuchFileFromMoon").Check(); err != nil { - t.Errorf("NoSuchFileFromMoon was expected as not exists, error:%v", err) - } -} - -func TestHTTPChecker(t *testing.T) { - if err := HTTPChecker("https://www.google.cybertron", 200, 0, nil).Check(); err == nil { - t.Errorf("Google on Cybertron was expected as not exists") - } - - if err := HTTPChecker("https://www.google.pt", 200, 0, nil).Check(); err != nil { - t.Errorf("Google at Portugal was expected as exists, error:%v", err) - } -} diff --git a/vendor/github.com/docker/distribution/health/doc.go b/vendor/github.com/docker/distribution/health/doc.go deleted file mode 100644 index 194b8a5663..0000000000 --- a/vendor/github.com/docker/distribution/health/doc.go +++ /dev/null @@ -1,130 +0,0 @@ -// Package health provides a generic health checking framework. -// The health package works expvar style. By importing the package the debug -// server is getting a "/debug/health" endpoint that returns the current -// status of the application. -// If there are no errors, "/debug/health" will return a HTTP 200 status, -// together with an empty JSON reply "{}". If there are any checks -// with errors, the JSON reply will include all the failed checks, and the -// response will be have an HTTP 503 status. -// -// A Check can either be run synchronously, or asynchronously. We recommend -// that most checks are registered as an asynchronous check, so a call to the -// "/debug/health" endpoint always returns immediately. This pattern is -// particularly useful for checks that verify upstream connectivity or -// database status, since they might take a long time to return/timeout. -// -// Installing -// -// To install health, just import it in your application: -// -// import "github.com/docker/distribution/health" -// -// You can also (optionally) import "health/api" that will add two convenience -// endpoints: "/debug/health/down" and "/debug/health/up". These endpoints add -// "manual" checks that allow the service to quickly be brought in/out of -// rotation. -// -// import _ "github.com/docker/distribution/registry/health/api" -// -// # curl localhost:5001/debug/health -// {} -// # curl -X POST localhost:5001/debug/health/down -// # curl localhost:5001/debug/health -// {"manual_http_status":"Manual Check"} -// -// After importing these packages to your main application, you can start -// registering checks. -// -// Registering Checks -// -// The recommended way of registering checks is using a periodic Check. -// PeriodicChecks run on a certain schedule and asynchronously update the -// status of the check. This allows CheckStatus to return without blocking -// on an expensive check. -// -// A trivial example of a check that runs every 5 seconds and shuts down our -// server if the current minute is even, could be added as follows: -// -// func currentMinuteEvenCheck() error { -// m := time.Now().Minute() -// if m%2 == 0 { -// return errors.New("Current minute is even!") -// } -// return nil -// } -// -// health.RegisterPeriodicFunc("minute_even", currentMinuteEvenCheck, time.Second*5) -// -// Alternatively, you can also make use of "RegisterPeriodicThresholdFunc" to -// implement the exact same check, but add a threshold of failures after which -// the check will be unhealthy. This is particularly useful for flaky Checks, -// ensuring some stability of the service when handling them. -// -// health.RegisterPeriodicThresholdFunc("minute_even", currentMinuteEvenCheck, time.Second*5, 4) -// -// The lowest-level way to interact with the health package is calling -// "Register" directly. Register allows you to pass in an arbitrary string and -// something that implements "Checker" and runs your check. If your method -// returns an error with nil, it is considered a healthy check, otherwise it -// will make the health check endpoint "/debug/health" start returning a 503 -// and list the specific check that failed. -// -// Assuming you wish to register a method called "currentMinuteEvenCheck() -// error" you could do that by doing: -// -// health.Register("even_minute", health.CheckFunc(currentMinuteEvenCheck)) -// -// CheckFunc is a convenience type that implements Checker. -// -// Another way of registering a check could be by using an anonymous function -// and the convenience method RegisterFunc. An example that makes the status -// endpoint always return an error: -// -// health.RegisterFunc("my_check", func() error { -// return Errors.new("This is an error!") -// })) -// -// Examples -// -// You could also use the health checker mechanism to ensure your application -// only comes up if certain conditions are met, or to allow the developer to -// take the service out of rotation immediately. An example that checks -// database connectivity and immediately takes the server out of rotation on -// err: -// -// updater = health.NewStatusUpdater() -// health.RegisterFunc("database_check", func() error { -// return updater.Check() -// })) -// -// conn, err := Connect(...) // database call here -// if err != nil { -// updater.Update(errors.New("Error connecting to the database: " + err.Error())) -// } -// -// You can also use the predefined Checkers that come included with the health -// package. First, import the checks: -// -// import "github.com/docker/distribution/health/checks -// -// After that you can make use of any of the provided checks. An example of -// using a `FileChecker` to take the application out of rotation if a certain -// file exists can be done as follows: -// -// health.Register("fileChecker", health.PeriodicChecker(checks.FileChecker("/tmp/disable"), time.Second*5)) -// -// After registering the check, it is trivial to take an application out of -// rotation from the console: -// -// # curl localhost:5001/debug/health -// {} -// # touch /tmp/disable -// # curl localhost:5001/debug/health -// {"fileChecker":"file exists"} -// -// You could also test the connectivity to a downstream service by using a -// "HTTPChecker", but ensure that you only mark the test unhealthy if there -// are a minimum of two failures in a row: -// -// health.Register("httpChecker", health.PeriodicThresholdChecker(checks.HTTPChecker("https://www.google.pt"), time.Second*5, 2)) -package health diff --git a/vendor/github.com/docker/distribution/health/health.go b/vendor/github.com/docker/distribution/health/health.go deleted file mode 100644 index 220282dcd9..0000000000 --- a/vendor/github.com/docker/distribution/health/health.go +++ /dev/null @@ -1,306 +0,0 @@ -package health - -import ( - "encoding/json" - "fmt" - "net/http" - "sync" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/api/errcode" -) - -// A Registry is a collection of checks. Most applications will use the global -// registry defined in DefaultRegistry. However, unit tests may need to create -// separate registries to isolate themselves from other tests. -type Registry struct { - mu sync.RWMutex - registeredChecks map[string]Checker -} - -// NewRegistry creates a new registry. This isn't necessary for normal use of -// the package, but may be useful for unit tests so individual tests have their -// own set of checks. -func NewRegistry() *Registry { - return &Registry{ - registeredChecks: make(map[string]Checker), - } -} - -// DefaultRegistry is the default registry where checks are registered. It is -// the registry used by the HTTP handler. -var DefaultRegistry *Registry - -// Checker is the interface for a Health Checker -type Checker interface { - // Check returns nil if the service is okay. - Check() error -} - -// CheckFunc is a convenience type to create functions that implement -// the Checker interface -type CheckFunc func() error - -// Check Implements the Checker interface to allow for any func() error method -// to be passed as a Checker -func (cf CheckFunc) Check() error { - return cf() -} - -// Updater implements a health check that is explicitly set. -type Updater interface { - Checker - - // Update updates the current status of the health check. - Update(status error) -} - -// updater implements Checker and Updater, providing an asynchronous Update -// method. -// This allows us to have a Checker that returns the Check() call immediately -// not blocking on a potentially expensive check. -type updater struct { - mu sync.Mutex - status error -} - -// Check implements the Checker interface -func (u *updater) Check() error { - u.mu.Lock() - defer u.mu.Unlock() - - return u.status -} - -// Update implements the Updater interface, allowing asynchronous access to -// the status of a Checker. -func (u *updater) Update(status error) { - u.mu.Lock() - defer u.mu.Unlock() - - u.status = status -} - -// NewStatusUpdater returns a new updater -func NewStatusUpdater() Updater { - return &updater{} -} - -// thresholdUpdater implements Checker and Updater, providing an asynchronous Update -// method. -// This allows us to have a Checker that returns the Check() call immediately -// not blocking on a potentially expensive check. -type thresholdUpdater struct { - mu sync.Mutex - status error - threshold int - count int -} - -// Check implements the Checker interface -func (tu *thresholdUpdater) Check() error { - tu.mu.Lock() - defer tu.mu.Unlock() - - if tu.count >= tu.threshold { - return tu.status - } - - return nil -} - -// thresholdUpdater implements the Updater interface, allowing asynchronous -// access to the status of a Checker. -func (tu *thresholdUpdater) Update(status error) { - tu.mu.Lock() - defer tu.mu.Unlock() - - if status == nil { - tu.count = 0 - } else if tu.count < tu.threshold { - tu.count++ - } - - tu.status = status -} - -// NewThresholdStatusUpdater returns a new thresholdUpdater -func NewThresholdStatusUpdater(t int) Updater { - return &thresholdUpdater{threshold: t} -} - -// PeriodicChecker wraps an updater to provide a periodic checker -func PeriodicChecker(check Checker, period time.Duration) Checker { - u := NewStatusUpdater() - go func() { - t := time.NewTicker(period) - for { - <-t.C - u.Update(check.Check()) - } - }() - - return u -} - -// PeriodicThresholdChecker wraps an updater to provide a periodic checker that -// uses a threshold before it changes status -func PeriodicThresholdChecker(check Checker, period time.Duration, threshold int) Checker { - tu := NewThresholdStatusUpdater(threshold) - go func() { - t := time.NewTicker(period) - for { - <-t.C - tu.Update(check.Check()) - } - }() - - return tu -} - -// CheckStatus returns a map with all the current health check errors -func (registry *Registry) CheckStatus() map[string]string { // TODO(stevvooe) this needs a proper type - registry.mu.RLock() - defer registry.mu.RUnlock() - statusKeys := make(map[string]string) - for k, v := range registry.registeredChecks { - err := v.Check() - if err != nil { - statusKeys[k] = err.Error() - } - } - - return statusKeys -} - -// CheckStatus returns a map with all the current health check errors from the -// default registry. -func CheckStatus() map[string]string { - return DefaultRegistry.CheckStatus() -} - -// Register associates the checker with the provided name. -func (registry *Registry) Register(name string, check Checker) { - if registry == nil { - registry = DefaultRegistry - } - registry.mu.Lock() - defer registry.mu.Unlock() - _, ok := registry.registeredChecks[name] - if ok { - panic("Check already exists: " + name) - } - registry.registeredChecks[name] = check -} - -// Register associates the checker with the provided name in the default -// registry. -func Register(name string, check Checker) { - DefaultRegistry.Register(name, check) -} - -// RegisterFunc allows the convenience of registering a checker directly from -// an arbitrary func() error. -func (registry *Registry) RegisterFunc(name string, check func() error) { - registry.Register(name, CheckFunc(check)) -} - -// RegisterFunc allows the convenience of registering a checker in the default -// registry directly from an arbitrary func() error. -func RegisterFunc(name string, check func() error) { - DefaultRegistry.RegisterFunc(name, check) -} - -// RegisterPeriodicFunc allows the convenience of registering a PeriodicChecker -// from an arbitrary func() error. -func (registry *Registry) RegisterPeriodicFunc(name string, period time.Duration, check CheckFunc) { - registry.Register(name, PeriodicChecker(CheckFunc(check), period)) -} - -// RegisterPeriodicFunc allows the convenience of registering a PeriodicChecker -// in the default registry from an arbitrary func() error. -func RegisterPeriodicFunc(name string, period time.Duration, check CheckFunc) { - DefaultRegistry.RegisterPeriodicFunc(name, period, check) -} - -// RegisterPeriodicThresholdFunc allows the convenience of registering a -// PeriodicChecker from an arbitrary func() error. -func (registry *Registry) RegisterPeriodicThresholdFunc(name string, period time.Duration, threshold int, check CheckFunc) { - registry.Register(name, PeriodicThresholdChecker(CheckFunc(check), period, threshold)) -} - -// RegisterPeriodicThresholdFunc allows the convenience of registering a -// PeriodicChecker in the default registry from an arbitrary func() error. -func RegisterPeriodicThresholdFunc(name string, period time.Duration, threshold int, check CheckFunc) { - DefaultRegistry.RegisterPeriodicThresholdFunc(name, period, threshold, check) -} - -// StatusHandler returns a JSON blob with all the currently registered Health Checks -// and their corresponding status. -// Returns 503 if any Error status exists, 200 otherwise -func StatusHandler(w http.ResponseWriter, r *http.Request) { - if r.Method == "GET" { - checks := CheckStatus() - status := http.StatusOK - - // If there is an error, return 503 - if len(checks) != 0 { - status = http.StatusServiceUnavailable - } - - statusResponse(w, r, status, checks) - } else { - http.NotFound(w, r) - } -} - -// Handler returns a handler that will return 503 response code if the health -// checks have failed. If everything is okay with the health checks, the -// handler will pass through to the provided handler. Use this handler to -// disable a web application when the health checks fail. -func Handler(handler http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - checks := CheckStatus() - if len(checks) != 0 { - errcode.ServeJSON(w, errcode.ErrorCodeUnavailable. - WithDetail("health check failed: please see /debug/health")) - return - } - - handler.ServeHTTP(w, r) // pass through - }) -} - -// statusResponse completes the request with a response describing the health -// of the service. -func statusResponse(w http.ResponseWriter, r *http.Request, status int, checks map[string]string) { - p, err := json.Marshal(checks) - if err != nil { - context.GetLogger(context.Background()).Errorf("error serializing health status: %v", err) - p, err = json.Marshal(struct { - ServerError string `json:"server_error"` - }{ - ServerError: "Could not parse error message", - }) - status = http.StatusInternalServerError - - if err != nil { - context.GetLogger(context.Background()).Errorf("error serializing health status failure message: %v", err) - return - } - } - - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.Header().Set("Content-Length", fmt.Sprint(len(p))) - w.WriteHeader(status) - if _, err := w.Write(p); err != nil { - context.GetLogger(context.Background()).Errorf("error writing health status response body: %v", err) - } -} - -// Registers global /debug/health api endpoint, creates default registry -func init() { - DefaultRegistry = NewRegistry() - http.HandleFunc("/debug/health", StatusHandler) -} diff --git a/vendor/github.com/docker/distribution/health/health_test.go b/vendor/github.com/docker/distribution/health/health_test.go deleted file mode 100644 index 766fe159f2..0000000000 --- a/vendor/github.com/docker/distribution/health/health_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package health - -import ( - "errors" - "fmt" - "net/http" - "net/http/httptest" - "testing" -) - -// TestReturns200IfThereAreNoChecks ensures that the result code of the health -// endpoint is 200 if there are not currently registered checks. -func TestReturns200IfThereAreNoChecks(t *testing.T) { - recorder := httptest.NewRecorder() - - req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health", nil) - if err != nil { - t.Errorf("Failed to create request.") - } - - StatusHandler(recorder, req) - - if recorder.Code != 200 { - t.Errorf("Did not get a 200.") - } -} - -// TestReturns500IfThereAreErrorChecks ensures that the result code of the -// health endpoint is 500 if there are health checks with errors -func TestReturns503IfThereAreErrorChecks(t *testing.T) { - recorder := httptest.NewRecorder() - - req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health", nil) - if err != nil { - t.Errorf("Failed to create request.") - } - - // Create a manual error - Register("some_check", CheckFunc(func() error { - return errors.New("This Check did not succeed") - })) - - StatusHandler(recorder, req) - - if recorder.Code != 503 { - t.Errorf("Did not get a 503.") - } -} - -// TestHealthHandler ensures that our handler implementation correct protects -// the web application when things aren't so healthy. -func TestHealthHandler(t *testing.T) { - // clear out existing checks. - DefaultRegistry = NewRegistry() - - // protect an http server - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNoContent) - })) - - // wrap it in our health handler - handler = Handler(handler) - - // use this swap check status - updater := NewStatusUpdater() - Register("test_check", updater) - - // now, create a test server - server := httptest.NewServer(handler) - - checkUp := func(t *testing.T, message string) { - resp, err := http.Get(server.URL) - if err != nil { - t.Fatalf("error getting success status: %v", err) - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusNoContent { - t.Fatalf("unexpected response code from server when %s: %d != %d", message, resp.StatusCode, http.StatusNoContent) - } - // NOTE(stevvooe): we really don't care about the body -- the format is - // not standardized or supported, yet. - } - - checkDown := func(t *testing.T, message string) { - resp, err := http.Get(server.URL) - if err != nil { - t.Fatalf("error getting down status: %v", err) - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusServiceUnavailable { - t.Fatalf("unexpected response code from server when %s: %d != %d", message, resp.StatusCode, http.StatusServiceUnavailable) - } - } - - // server should be up - checkUp(t, "initial health check") - - // now, we fail the health check - updater.Update(fmt.Errorf("the server is now out of commission")) - checkDown(t, "server should be down") // should be down - - // bring server back up - updater.Update(nil) - checkUp(t, "when server is back up") // now we should be back up. -} diff --git a/vendor/github.com/docker/distribution/manifest/doc.go b/vendor/github.com/docker/distribution/manifest/doc.go deleted file mode 100644 index 88367b0a05..0000000000 --- a/vendor/github.com/docker/distribution/manifest/doc.go +++ /dev/null @@ -1 +0,0 @@ -package manifest diff --git a/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go b/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go deleted file mode 100644 index a2082ec02f..0000000000 --- a/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go +++ /dev/null @@ -1,155 +0,0 @@ -package manifestlist - -import ( - "encoding/json" - "errors" - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" -) - -// MediaTypeManifestList specifies the mediaType for manifest lists. -const MediaTypeManifestList = "application/vnd.docker.distribution.manifest.list.v2+json" - -// SchemaVersion provides a pre-initialized version structure for this -// packages version of the manifest. -var SchemaVersion = manifest.Versioned{ - SchemaVersion: 2, - MediaType: MediaTypeManifestList, -} - -func init() { - manifestListFunc := func(b []byte) (distribution.Manifest, distribution.Descriptor, error) { - m := new(DeserializedManifestList) - err := m.UnmarshalJSON(b) - if err != nil { - return nil, distribution.Descriptor{}, err - } - - dgst := digest.FromBytes(b) - return m, distribution.Descriptor{Digest: dgst, Size: int64(len(b)), MediaType: MediaTypeManifestList}, err - } - err := distribution.RegisterManifestSchema(MediaTypeManifestList, manifestListFunc) - if err != nil { - panic(fmt.Sprintf("Unable to register manifest: %s", err)) - } -} - -// PlatformSpec specifies a platform where a particular image manifest is -// applicable. -type PlatformSpec struct { - // Architecture field specifies the CPU architecture, for example - // `amd64` or `ppc64`. - Architecture string `json:"architecture"` - - // OS specifies the operating system, for example `linux` or `windows`. - OS string `json:"os"` - - // OSVersion is an optional field specifying the operating system - // version, for example `10.0.10586`. - OSVersion string `json:"os.version,omitempty"` - - // OSFeatures is an optional field specifying an array of strings, - // each listing a required OS feature (for example on Windows `win32k`). - OSFeatures []string `json:"os.features,omitempty"` - - // Variant is an optional field specifying a variant of the CPU, for - // example `ppc64le` to specify a little-endian version of a PowerPC CPU. - Variant string `json:"variant,omitempty"` - - // Features is an optional field specifying an array of strings, each - // listing a required CPU feature (for example `sse4` or `aes`). - Features []string `json:"features,omitempty"` -} - -// A ManifestDescriptor references a platform-specific manifest. -type ManifestDescriptor struct { - distribution.Descriptor - - // Platform specifies which platform the manifest pointed to by the - // descriptor runs on. - Platform PlatformSpec `json:"platform"` -} - -// ManifestList references manifests for various platforms. -type ManifestList struct { - manifest.Versioned - - // Config references the image configuration as a blob. - Manifests []ManifestDescriptor `json:"manifests"` -} - -// References returnes the distribution descriptors for the referenced image -// manifests. -func (m ManifestList) References() []distribution.Descriptor { - dependencies := make([]distribution.Descriptor, len(m.Manifests)) - for i := range m.Manifests { - dependencies[i] = m.Manifests[i].Descriptor - } - - return dependencies -} - -// DeserializedManifestList wraps ManifestList with a copy of the original -// JSON. -type DeserializedManifestList struct { - ManifestList - - // canonical is the canonical byte representation of the Manifest. - canonical []byte -} - -// FromDescriptors takes a slice of descriptors, and returns a -// DeserializedManifestList which contains the resulting manifest list -// and its JSON representation. -func FromDescriptors(descriptors []ManifestDescriptor) (*DeserializedManifestList, error) { - m := ManifestList{ - Versioned: SchemaVersion, - } - - m.Manifests = make([]ManifestDescriptor, len(descriptors), len(descriptors)) - copy(m.Manifests, descriptors) - - deserialized := DeserializedManifestList{ - ManifestList: m, - } - - var err error - deserialized.canonical, err = json.MarshalIndent(&m, "", " ") - return &deserialized, err -} - -// UnmarshalJSON populates a new ManifestList struct from JSON data. -func (m *DeserializedManifestList) UnmarshalJSON(b []byte) error { - m.canonical = make([]byte, len(b), len(b)) - // store manifest list in canonical - copy(m.canonical, b) - - // Unmarshal canonical JSON into ManifestList object - var manifestList ManifestList - if err := json.Unmarshal(m.canonical, &manifestList); err != nil { - return err - } - - m.ManifestList = manifestList - - return nil -} - -// MarshalJSON returns the contents of canonical. If canonical is empty, -// marshals the inner contents. -func (m *DeserializedManifestList) MarshalJSON() ([]byte, error) { - if len(m.canonical) > 0 { - return m.canonical, nil - } - - return nil, errors.New("JSON representation not initialized in DeserializedManifestList") -} - -// Payload returns the raw content of the manifest list. The contents can be -// used to calculate the content identifier. -func (m DeserializedManifestList) Payload() (string, []byte, error) { - return m.MediaType, m.canonical, nil -} diff --git a/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist_test.go b/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist_test.go deleted file mode 100644 index 09e6ed1f0a..0000000000 --- a/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist_test.go +++ /dev/null @@ -1,111 +0,0 @@ -package manifestlist - -import ( - "bytes" - "encoding/json" - "reflect" - "testing" - - "github.com/docker/distribution" -) - -var expectedManifestListSerialization = []byte(`{ - "schemaVersion": 2, - "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", - "manifests": [ - { - "mediaType": "application/vnd.docker.distribution.manifest.v2+json", - "size": 985, - "digest": "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b", - "platform": { - "architecture": "amd64", - "os": "linux", - "features": [ - "sse4" - ] - } - }, - { - "mediaType": "application/vnd.docker.distribution.manifest.v2+json", - "size": 2392, - "digest": "sha256:6346340964309634683409684360934680934608934608934608934068934608", - "platform": { - "architecture": "sun4m", - "os": "sunos" - } - } - ] -}`) - -func TestManifestList(t *testing.T) { - manifestDescriptors := []ManifestDescriptor{ - { - Descriptor: distribution.Descriptor{ - Digest: "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b", - Size: 985, - MediaType: "application/vnd.docker.distribution.manifest.v2+json", - }, - Platform: PlatformSpec{ - Architecture: "amd64", - OS: "linux", - Features: []string{"sse4"}, - }, - }, - { - Descriptor: distribution.Descriptor{ - Digest: "sha256:6346340964309634683409684360934680934608934608934608934068934608", - Size: 2392, - MediaType: "application/vnd.docker.distribution.manifest.v2+json", - }, - Platform: PlatformSpec{ - Architecture: "sun4m", - OS: "sunos", - }, - }, - } - - deserialized, err := FromDescriptors(manifestDescriptors) - if err != nil { - t.Fatalf("error creating DeserializedManifestList: %v", err) - } - - mediaType, canonical, err := deserialized.Payload() - - if mediaType != MediaTypeManifestList { - t.Fatalf("unexpected media type: %s", mediaType) - } - - // Check that the canonical field is the same as json.MarshalIndent - // with these parameters. - p, err := json.MarshalIndent(&deserialized.ManifestList, "", " ") - if err != nil { - t.Fatalf("error marshaling manifest list: %v", err) - } - if !bytes.Equal(p, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) - } - - // Check that the canonical field has the expected value. - if !bytes.Equal(expectedManifestListSerialization, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestListSerialization)) - } - - var unmarshalled DeserializedManifestList - if err := json.Unmarshal(deserialized.canonical, &unmarshalled); err != nil { - t.Fatalf("error unmarshaling manifest: %v", err) - } - - if !reflect.DeepEqual(&unmarshalled, deserialized) { - t.Fatalf("manifests are different after unmarshaling: %v != %v", unmarshalled, *deserialized) - } - - references := deserialized.References() - if len(references) != 2 { - t.Fatalf("unexpected number of references: %d", len(references)) - } - for i := range references { - if !reflect.DeepEqual(references[i], manifestDescriptors[i].Descriptor) { - t.Fatalf("unexpected value %d returned by References: %v", i, references[i]) - } - } -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/config_builder.go b/vendor/github.com/docker/distribution/manifest/schema1/config_builder.go deleted file mode 100644 index b3d1e55431..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/config_builder.go +++ /dev/null @@ -1,281 +0,0 @@ -package schema1 - -import ( - "crypto/sha512" - "encoding/json" - "errors" - "fmt" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" - "github.com/docker/libtrust" - - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" -) - -type diffID digest.Digest - -// gzippedEmptyTar is a gzip-compressed version of an empty tar file -// (1024 NULL bytes) -var gzippedEmptyTar = []byte{ - 31, 139, 8, 0, 0, 9, 110, 136, 0, 255, 98, 24, 5, 163, 96, 20, 140, 88, - 0, 8, 0, 0, 255, 255, 46, 175, 181, 239, 0, 4, 0, 0, -} - -// digestSHA256GzippedEmptyTar is the canonical sha256 digest of -// gzippedEmptyTar -const digestSHA256GzippedEmptyTar = digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4") - -// configManifestBuilder is a type for constructing manifests from an image -// configuration and generic descriptors. -type configManifestBuilder struct { - // bs is a BlobService used to create empty layer tars in the - // blob store if necessary. - bs distribution.BlobService - // pk is the libtrust private key used to sign the final manifest. - pk libtrust.PrivateKey - // configJSON is configuration supplied when the ManifestBuilder was - // created. - configJSON []byte - // ref contains the name and optional tag provided to NewConfigManifestBuilder. - ref reference.Named - // descriptors is the set of descriptors referencing the layers. - descriptors []distribution.Descriptor - // emptyTarDigest is set to a valid digest if an empty tar has been - // put in the blob store; otherwise it is empty. - emptyTarDigest digest.Digest -} - -// NewConfigManifestBuilder is used to build new manifests for the current -// schema version from an image configuration and a set of descriptors. -// It takes a BlobService so that it can add an empty tar to the blob store -// if the resulting manifest needs empty layers. -func NewConfigManifestBuilder(bs distribution.BlobService, pk libtrust.PrivateKey, ref reference.Named, configJSON []byte) distribution.ManifestBuilder { - return &configManifestBuilder{ - bs: bs, - pk: pk, - configJSON: configJSON, - ref: ref, - } -} - -// Build produces a final manifest from the given references -func (mb *configManifestBuilder) Build(ctx context.Context) (m distribution.Manifest, err error) { - type imageRootFS struct { - Type string `json:"type"` - DiffIDs []diffID `json:"diff_ids,omitempty"` - BaseLayer string `json:"base_layer,omitempty"` - } - - type imageHistory struct { - Created time.Time `json:"created"` - Author string `json:"author,omitempty"` - CreatedBy string `json:"created_by,omitempty"` - Comment string `json:"comment,omitempty"` - EmptyLayer bool `json:"empty_layer,omitempty"` - } - - type imageConfig struct { - RootFS *imageRootFS `json:"rootfs,omitempty"` - History []imageHistory `json:"history,omitempty"` - Architecture string `json:"architecture,omitempty"` - } - - var img imageConfig - - if err := json.Unmarshal(mb.configJSON, &img); err != nil { - return nil, err - } - - if len(img.History) == 0 { - return nil, errors.New("empty history when trying to create schema1 manifest") - } - - if len(img.RootFS.DiffIDs) != len(mb.descriptors) { - return nil, errors.New("number of descriptors and number of layers in rootfs must match") - } - - // Generate IDs for each layer - // For non-top-level layers, create fake V1Compatibility strings that - // fit the format and don't collide with anything else, but don't - // result in runnable images on their own. - type v1Compatibility struct { - ID string `json:"id"` - Parent string `json:"parent,omitempty"` - Comment string `json:"comment,omitempty"` - Created time.Time `json:"created"` - ContainerConfig struct { - Cmd []string - } `json:"container_config,omitempty"` - ThrowAway bool `json:"throwaway,omitempty"` - } - - fsLayerList := make([]FSLayer, len(img.History)) - history := make([]History, len(img.History)) - - parent := "" - layerCounter := 0 - for i, h := range img.History[:len(img.History)-1] { - var blobsum digest.Digest - if h.EmptyLayer { - if blobsum, err = mb.emptyTar(ctx); err != nil { - return nil, err - } - } else { - if len(img.RootFS.DiffIDs) <= layerCounter { - return nil, errors.New("too many non-empty layers in History section") - } - blobsum = mb.descriptors[layerCounter].Digest - layerCounter++ - } - - v1ID := digest.FromBytes([]byte(blobsum.Hex() + " " + parent)).Hex() - - if i == 0 && img.RootFS.BaseLayer != "" { - // windows-only baselayer setup - baseID := sha512.Sum384([]byte(img.RootFS.BaseLayer)) - parent = fmt.Sprintf("%x", baseID[:32]) - } - - v1Compatibility := v1Compatibility{ - ID: v1ID, - Parent: parent, - Comment: h.Comment, - Created: h.Created, - } - v1Compatibility.ContainerConfig.Cmd = []string{img.History[i].CreatedBy} - if h.EmptyLayer { - v1Compatibility.ThrowAway = true - } - jsonBytes, err := json.Marshal(&v1Compatibility) - if err != nil { - return nil, err - } - - reversedIndex := len(img.History) - i - 1 - history[reversedIndex].V1Compatibility = string(jsonBytes) - fsLayerList[reversedIndex] = FSLayer{BlobSum: blobsum} - - parent = v1ID - } - - latestHistory := img.History[len(img.History)-1] - - var blobsum digest.Digest - if latestHistory.EmptyLayer { - if blobsum, err = mb.emptyTar(ctx); err != nil { - return nil, err - } - } else { - if len(img.RootFS.DiffIDs) <= layerCounter { - return nil, errors.New("too many non-empty layers in History section") - } - blobsum = mb.descriptors[layerCounter].Digest - } - - fsLayerList[0] = FSLayer{BlobSum: blobsum} - dgst := digest.FromBytes([]byte(blobsum.Hex() + " " + parent + " " + string(mb.configJSON))) - - // Top-level v1compatibility string should be a modified version of the - // image config. - transformedConfig, err := MakeV1ConfigFromConfig(mb.configJSON, dgst.Hex(), parent, latestHistory.EmptyLayer) - if err != nil { - return nil, err - } - - history[0].V1Compatibility = string(transformedConfig) - - tag := "" - if tagged, isTagged := mb.ref.(reference.Tagged); isTagged { - tag = tagged.Tag() - } - - mfst := Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: mb.ref.Name(), - Tag: tag, - Architecture: img.Architecture, - FSLayers: fsLayerList, - History: history, - } - - return Sign(&mfst, mb.pk) -} - -// emptyTar pushes a compressed empty tar to the blob store if one doesn't -// already exist, and returns its blobsum. -func (mb *configManifestBuilder) emptyTar(ctx context.Context) (digest.Digest, error) { - if mb.emptyTarDigest != "" { - // Already put an empty tar - return mb.emptyTarDigest, nil - } - - descriptor, err := mb.bs.Stat(ctx, digestSHA256GzippedEmptyTar) - switch err { - case nil: - mb.emptyTarDigest = descriptor.Digest - return descriptor.Digest, nil - case distribution.ErrBlobUnknown: - // nop - default: - return "", err - } - - // Add gzipped empty tar to the blob store - descriptor, err = mb.bs.Put(ctx, "", gzippedEmptyTar) - if err != nil { - return "", err - } - - mb.emptyTarDigest = descriptor.Digest - - return descriptor.Digest, nil -} - -// AppendReference adds a reference to the current ManifestBuilder -func (mb *configManifestBuilder) AppendReference(d distribution.Describable) error { - // todo: verification here? - mb.descriptors = append(mb.descriptors, d.Descriptor()) - return nil -} - -// References returns the current references added to this builder -func (mb *configManifestBuilder) References() []distribution.Descriptor { - return mb.descriptors -} - -// MakeV1ConfigFromConfig creates an legacy V1 image config from image config JSON -func MakeV1ConfigFromConfig(configJSON []byte, v1ID, parentV1ID string, throwaway bool) ([]byte, error) { - // Top-level v1compatibility string should be a modified version of the - // image config. - var configAsMap map[string]*json.RawMessage - if err := json.Unmarshal(configJSON, &configAsMap); err != nil { - return nil, err - } - - // Delete fields that didn't exist in old manifest - delete(configAsMap, "rootfs") - delete(configAsMap, "history") - configAsMap["id"] = rawJSON(v1ID) - if parentV1ID != "" { - configAsMap["parent"] = rawJSON(parentV1ID) - } - if throwaway { - configAsMap["throwaway"] = rawJSON(true) - } - - return json.Marshal(configAsMap) -} - -func rawJSON(value interface{}) *json.RawMessage { - jsonval, err := json.Marshal(value) - if err != nil { - return nil - } - return (*json.RawMessage)(&jsonval) -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/config_builder_test.go b/vendor/github.com/docker/distribution/manifest/schema1/config_builder_test.go deleted file mode 100644 index 76b53bfdaa..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/config_builder_test.go +++ /dev/null @@ -1,271 +0,0 @@ -package schema1 - -import ( - "bytes" - "compress/gzip" - "io" - "reflect" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/libtrust" -) - -type mockBlobService struct { - descriptors map[digest.Digest]distribution.Descriptor -} - -func (bs *mockBlobService) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - if descriptor, ok := bs.descriptors[dgst]; ok { - return descriptor, nil - } - return distribution.Descriptor{}, distribution.ErrBlobUnknown -} - -func (bs *mockBlobService) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - panic("not implemented") -} - -func (bs *mockBlobService) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - panic("not implemented") -} - -func (bs *mockBlobService) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - d := distribution.Descriptor{ - Digest: digest.FromBytes(p), - Size: int64(len(p)), - MediaType: mediaType, - } - bs.descriptors[d.Digest] = d - return d, nil -} - -func (bs *mockBlobService) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - panic("not implemented") -} - -func (bs *mockBlobService) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - panic("not implemented") -} - -func TestEmptyTar(t *testing.T) { - // Confirm that gzippedEmptyTar expands to 1024 NULL bytes. - var decompressed [2048]byte - gzipReader, err := gzip.NewReader(bytes.NewReader(gzippedEmptyTar)) - if err != nil { - t.Fatalf("NewReader returned error: %v", err) - } - n, err := gzipReader.Read(decompressed[:]) - if n != 1024 { - t.Fatalf("read returned %d bytes; expected 1024", n) - } - n, err = gzipReader.Read(decompressed[1024:]) - if n != 0 { - t.Fatalf("read returned %d bytes; expected 0", n) - } - if err != io.EOF { - t.Fatal("read did not return io.EOF") - } - gzipReader.Close() - for _, b := range decompressed[:1024] { - if b != 0 { - t.Fatal("nonzero byte in decompressed tar") - } - } - - // Confirm that digestSHA256EmptyTar is the digest of gzippedEmptyTar. - dgst := digest.FromBytes(gzippedEmptyTar) - if dgst != digestSHA256GzippedEmptyTar { - t.Fatalf("digest mismatch for empty tar: expected %s got %s", digestSHA256GzippedEmptyTar, dgst) - } -} - -func TestConfigBuilder(t *testing.T) { - imgJSON := `{ - "architecture": "amd64", - "config": { - "AttachStderr": false, - "AttachStdin": false, - "AttachStdout": false, - "Cmd": [ - "/bin/sh", - "-c", - "echo hi" - ], - "Domainname": "", - "Entrypoint": null, - "Env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "derived=true", - "asdf=true" - ], - "Hostname": "23304fc829f9", - "Image": "sha256:4ab15c48b859c2920dd5224f92aabcd39a52794c5b3cf088fb3bbb438756c246", - "Labels": {}, - "OnBuild": [], - "OpenStdin": false, - "StdinOnce": false, - "Tty": false, - "User": "", - "Volumes": null, - "WorkingDir": "" - }, - "container": "e91032eb0403a61bfe085ff5a5a48e3659e5a6deae9f4d678daa2ae399d5a001", - "container_config": { - "AttachStderr": false, - "AttachStdin": false, - "AttachStdout": false, - "Cmd": [ - "/bin/sh", - "-c", - "#(nop) CMD [\"/bin/sh\" \"-c\" \"echo hi\"]" - ], - "Domainname": "", - "Entrypoint": null, - "Env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "derived=true", - "asdf=true" - ], - "Hostname": "23304fc829f9", - "Image": "sha256:4ab15c48b859c2920dd5224f92aabcd39a52794c5b3cf088fb3bbb438756c246", - "Labels": {}, - "OnBuild": [], - "OpenStdin": false, - "StdinOnce": false, - "Tty": false, - "User": "", - "Volumes": null, - "WorkingDir": "" - }, - "created": "2015-11-04T23:06:32.365666163Z", - "docker_version": "1.9.0-dev", - "history": [ - { - "created": "2015-10-31T22:22:54.690851953Z", - "created_by": "/bin/sh -c #(nop) ADD file:a3bc1e842b69636f9df5256c49c5374fb4eef1e281fe3f282c65fb853ee171c5 in /" - }, - { - "created": "2015-10-31T22:22:55.613815829Z", - "created_by": "/bin/sh -c #(nop) CMD [\"sh\"]" - }, - { - "created": "2015-11-04T23:06:30.934316144Z", - "created_by": "/bin/sh -c #(nop) ENV derived=true", - "empty_layer": true - }, - { - "created": "2015-11-04T23:06:31.192097572Z", - "created_by": "/bin/sh -c #(nop) ENV asdf=true", - "empty_layer": true - }, - { - "created": "2015-11-04T23:06:32.083868454Z", - "created_by": "/bin/sh -c dd if=/dev/zero of=/file bs=1024 count=1024" - }, - { - "created": "2015-11-04T23:06:32.365666163Z", - "created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\" \"-c\" \"echo hi\"]", - "empty_layer": true - } - ], - "os": "linux", - "rootfs": { - "diff_ids": [ - "sha256:c6f988f4874bb0add23a778f753c65efe992244e148a1d2ec2a8b664fb66bbd1", - "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef", - "sha256:13f53e08df5a220ab6d13c58b2bf83a59cbdc2e04d0a3f041ddf4b0ba4112d49" - ], - "type": "layers" - } -}` - - descriptors := []distribution.Descriptor{ - {Digest: digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - {Digest: digest.Digest("sha256:86e0e091d0da6bde2456dbb48306f3956bbeb2eae1b5b9a43045843f69fe4aaa")}, - {Digest: digest.Digest("sha256:b4ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("could not generate key for testing: %v", err) - } - - bs := &mockBlobService{descriptors: make(map[digest.Digest]distribution.Descriptor)} - - ref, err := reference.ParseNamed("testrepo:testtag") - if err != nil { - t.Fatalf("could not parse reference: %v", err) - } - - builder := NewConfigManifestBuilder(bs, pk, ref, []byte(imgJSON)) - - for _, d := range descriptors { - if err := builder.AppendReference(d); err != nil { - t.Fatalf("AppendReference returned error: %v", err) - } - } - - signed, err := builder.Build(context.Background()) - if err != nil { - t.Fatalf("Build returned error: %v", err) - } - - // Check that the gzipped empty layer tar was put in the blob store - _, err = bs.Stat(context.Background(), digestSHA256GzippedEmptyTar) - if err != nil { - t.Fatal("gzipped empty tar was not put in the blob store") - } - - manifest := signed.(*SignedManifest).Manifest - - if manifest.Versioned.SchemaVersion != 1 { - t.Fatal("SchemaVersion != 1") - } - if manifest.Name != "testrepo" { - t.Fatal("incorrect name in manifest") - } - if manifest.Tag != "testtag" { - t.Fatal("incorrect tag in manifest") - } - if manifest.Architecture != "amd64" { - t.Fatal("incorrect arch in manifest") - } - - expectedFSLayers := []FSLayer{ - {BlobSum: digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - {BlobSum: digest.Digest("sha256:b4ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - {BlobSum: digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - {BlobSum: digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - {BlobSum: digest.Digest("sha256:86e0e091d0da6bde2456dbb48306f3956bbeb2eae1b5b9a43045843f69fe4aaa")}, - {BlobSum: digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4")}, - } - - if len(manifest.FSLayers) != len(expectedFSLayers) { - t.Fatalf("wrong number of FSLayers: %d", len(manifest.FSLayers)) - } - if !reflect.DeepEqual(manifest.FSLayers, expectedFSLayers) { - t.Fatal("wrong FSLayers list") - } - - expectedV1Compatibility := []string{ - `{"architecture":"amd64","config":{"AttachStderr":false,"AttachStdin":false,"AttachStdout":false,"Cmd":["/bin/sh","-c","echo hi"],"Domainname":"","Entrypoint":null,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","derived=true","asdf=true"],"Hostname":"23304fc829f9","Image":"sha256:4ab15c48b859c2920dd5224f92aabcd39a52794c5b3cf088fb3bbb438756c246","Labels":{},"OnBuild":[],"OpenStdin":false,"StdinOnce":false,"Tty":false,"User":"","Volumes":null,"WorkingDir":""},"container":"e91032eb0403a61bfe085ff5a5a48e3659e5a6deae9f4d678daa2ae399d5a001","container_config":{"AttachStderr":false,"AttachStdin":false,"AttachStdout":false,"Cmd":["/bin/sh","-c","#(nop) CMD [\"/bin/sh\" \"-c\" \"echo hi\"]"],"Domainname":"","Entrypoint":null,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","derived=true","asdf=true"],"Hostname":"23304fc829f9","Image":"sha256:4ab15c48b859c2920dd5224f92aabcd39a52794c5b3cf088fb3bbb438756c246","Labels":{},"OnBuild":[],"OpenStdin":false,"StdinOnce":false,"Tty":false,"User":"","Volumes":null,"WorkingDir":""},"created":"2015-11-04T23:06:32.365666163Z","docker_version":"1.9.0-dev","id":"0850bfdeb7b060b1004a09099846c2f023a3f2ecbf33f56b4774384b00ce0323","os":"linux","parent":"74cf9c92699240efdba1903c2748ef57105d5bedc588084c4e88f3bb1c3ef0b0","throwaway":true}`, - `{"id":"74cf9c92699240efdba1903c2748ef57105d5bedc588084c4e88f3bb1c3ef0b0","parent":"178be37afc7c49e951abd75525dbe0871b62ad49402f037164ee6314f754599d","created":"2015-11-04T23:06:32.083868454Z","container_config":{"Cmd":["/bin/sh -c dd if=/dev/zero of=/file bs=1024 count=1024"]}}`, - `{"id":"178be37afc7c49e951abd75525dbe0871b62ad49402f037164ee6314f754599d","parent":"b449305a55a283538c4574856a8b701f2a3d5ec08ef8aec47f385f20339a4866","created":"2015-11-04T23:06:31.192097572Z","container_config":{"Cmd":["/bin/sh -c #(nop) ENV asdf=true"]},"throwaway":true}`, - `{"id":"b449305a55a283538c4574856a8b701f2a3d5ec08ef8aec47f385f20339a4866","parent":"9e3447ca24cb96d86ebd5960cb34d1299b07e0a0e03801d90b9969a2c187dd6e","created":"2015-11-04T23:06:30.934316144Z","container_config":{"Cmd":["/bin/sh -c #(nop) ENV derived=true"]},"throwaway":true}`, - `{"id":"9e3447ca24cb96d86ebd5960cb34d1299b07e0a0e03801d90b9969a2c187dd6e","parent":"3690474eb5b4b26fdfbd89c6e159e8cc376ca76ef48032a30fa6aafd56337880","created":"2015-10-31T22:22:55.613815829Z","container_config":{"Cmd":["/bin/sh -c #(nop) CMD [\"sh\"]"]}}`, - `{"id":"3690474eb5b4b26fdfbd89c6e159e8cc376ca76ef48032a30fa6aafd56337880","created":"2015-10-31T22:22:54.690851953Z","container_config":{"Cmd":["/bin/sh -c #(nop) ADD file:a3bc1e842b69636f9df5256c49c5374fb4eef1e281fe3f282c65fb853ee171c5 in /"]}}`, - } - - if len(manifest.History) != len(expectedV1Compatibility) { - t.Fatalf("wrong number of history entries: %d", len(manifest.History)) - } - for i := range expectedV1Compatibility { - if manifest.History[i].V1Compatibility != expectedV1Compatibility[i] { - t.Errorf("wrong V1Compatibility %d. expected:\n%s\ngot:\n%s", i, expectedV1Compatibility[i], manifest.History[i].V1Compatibility) - } - } -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/manifest.go b/vendor/github.com/docker/distribution/manifest/schema1/manifest.go deleted file mode 100644 index bff47bde05..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/manifest.go +++ /dev/null @@ -1,184 +0,0 @@ -package schema1 - -import ( - "encoding/json" - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/libtrust" -) - -const ( - // MediaTypeManifest specifies the mediaType for the current version. Note - // that for schema version 1, the the media is optionally "application/json". - MediaTypeManifest = "application/vnd.docker.distribution.manifest.v1+json" - // MediaTypeSignedManifest specifies the mediatype for current SignedManifest version - MediaTypeSignedManifest = "application/vnd.docker.distribution.manifest.v1+prettyjws" - // MediaTypeManifestLayer specifies the media type for manifest layers - MediaTypeManifestLayer = "application/vnd.docker.container.image.rootfs.diff+x-gtar" -) - -var ( - // SchemaVersion provides a pre-initialized version structure for this - // packages version of the manifest. - SchemaVersion = manifest.Versioned{ - SchemaVersion: 1, - } -) - -func init() { - schema1Func := func(b []byte) (distribution.Manifest, distribution.Descriptor, error) { - sm := new(SignedManifest) - err := sm.UnmarshalJSON(b) - if err != nil { - return nil, distribution.Descriptor{}, err - } - - desc := distribution.Descriptor{ - Digest: digest.FromBytes(sm.Canonical), - Size: int64(len(sm.Canonical)), - MediaType: MediaTypeSignedManifest, - } - return sm, desc, err - } - err := distribution.RegisterManifestSchema(MediaTypeSignedManifest, schema1Func) - if err != nil { - panic(fmt.Sprintf("Unable to register manifest: %s", err)) - } - err = distribution.RegisterManifestSchema("", schema1Func) - if err != nil { - panic(fmt.Sprintf("Unable to register manifest: %s", err)) - } - err = distribution.RegisterManifestSchema("application/json", schema1Func) - if err != nil { - panic(fmt.Sprintf("Unable to register manifest: %s", err)) - } -} - -// FSLayer is a container struct for BlobSums defined in an image manifest -type FSLayer struct { - // BlobSum is the tarsum of the referenced filesystem image layer - BlobSum digest.Digest `json:"blobSum"` -} - -// History stores unstructured v1 compatibility information -type History struct { - // V1Compatibility is the raw v1 compatibility information - V1Compatibility string `json:"v1Compatibility"` -} - -// Manifest provides the base accessible fields for working with V2 image -// format in the registry. -type Manifest struct { - manifest.Versioned - - // Name is the name of the image's repository - Name string `json:"name"` - - // Tag is the tag of the image specified by this manifest - Tag string `json:"tag"` - - // Architecture is the host architecture on which this image is intended to - // run - Architecture string `json:"architecture"` - - // FSLayers is a list of filesystem layer blobSums contained in this image - FSLayers []FSLayer `json:"fsLayers"` - - // History is a list of unstructured historical data for v1 compatibility - History []History `json:"history"` -} - -// SignedManifest provides an envelope for a signed image manifest, including -// the format sensitive raw bytes. -type SignedManifest struct { - Manifest - - // Canonical is the canonical byte representation of the ImageManifest, - // without any attached signatures. The manifest byte - // representation cannot change or it will have to be re-signed. - Canonical []byte `json:"-"` - - // all contains the byte representation of the Manifest including signatures - // and is returned by Payload() - all []byte -} - -// UnmarshalJSON populates a new SignedManifest struct from JSON data. -func (sm *SignedManifest) UnmarshalJSON(b []byte) error { - sm.all = make([]byte, len(b), len(b)) - // store manifest and signatures in all - copy(sm.all, b) - - jsig, err := libtrust.ParsePrettySignature(b, "signatures") - if err != nil { - return err - } - - // Resolve the payload in the manifest. - bytes, err := jsig.Payload() - if err != nil { - return err - } - - // sm.Canonical stores the canonical manifest JSON - sm.Canonical = make([]byte, len(bytes), len(bytes)) - copy(sm.Canonical, bytes) - - // Unmarshal canonical JSON into Manifest object - var manifest Manifest - if err := json.Unmarshal(sm.Canonical, &manifest); err != nil { - return err - } - - sm.Manifest = manifest - - return nil -} - -// References returnes the descriptors of this manifests references -func (sm SignedManifest) References() []distribution.Descriptor { - dependencies := make([]distribution.Descriptor, len(sm.FSLayers)) - for i, fsLayer := range sm.FSLayers { - dependencies[i] = distribution.Descriptor{ - MediaType: "application/vnd.docker.container.image.rootfs.diff+x-gtar", - Digest: fsLayer.BlobSum, - } - } - - return dependencies - -} - -// MarshalJSON returns the contents of raw. If Raw is nil, marshals the inner -// contents. Applications requiring a marshaled signed manifest should simply -// use Raw directly, since the the content produced by json.Marshal will be -// compacted and will fail signature checks. -func (sm *SignedManifest) MarshalJSON() ([]byte, error) { - if len(sm.all) > 0 { - return sm.all, nil - } - - // If the raw data is not available, just dump the inner content. - return json.Marshal(&sm.Manifest) -} - -// Payload returns the signed content of the signed manifest. -func (sm SignedManifest) Payload() (string, []byte, error) { - return MediaTypeSignedManifest, sm.all, nil -} - -// Signatures returns the signatures as provided by -// (*libtrust.JSONSignature).Signatures. The byte slices are opaque jws -// signatures. -func (sm *SignedManifest) Signatures() ([][]byte, error) { - jsig, err := libtrust.ParsePrettySignature(sm.all, "signatures") - if err != nil { - return nil, err - } - - // Resolve the payload in the manifest. - return jsig.Signatures() -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/manifest_test.go b/vendor/github.com/docker/distribution/manifest/schema1/manifest_test.go deleted file mode 100644 index 05bb8ec57a..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/manifest_test.go +++ /dev/null @@ -1,136 +0,0 @@ -package schema1 - -import ( - "bytes" - "encoding/json" - "reflect" - "testing" - - "github.com/docker/libtrust" -) - -type testEnv struct { - name, tag string - invalidSigned *SignedManifest - signed *SignedManifest - pk libtrust.PrivateKey -} - -func TestManifestMarshaling(t *testing.T) { - env := genEnv(t) - - // Check that the all field is the same as json.MarshalIndent with these - // parameters. - p, err := json.MarshalIndent(env.signed, "", " ") - if err != nil { - t.Fatalf("error marshaling manifest: %v", err) - } - - if !bytes.Equal(p, env.signed.all) { - t.Fatalf("manifest bytes not equal: %q != %q", string(env.signed.all), string(p)) - } -} - -func TestManifestUnmarshaling(t *testing.T) { - env := genEnv(t) - - var signed SignedManifest - if err := json.Unmarshal(env.signed.all, &signed); err != nil { - t.Fatalf("error unmarshaling signed manifest: %v", err) - } - - if !reflect.DeepEqual(&signed, env.signed) { - t.Fatalf("manifests are different after unmarshaling: %v != %v", signed, env.signed) - } - -} - -func TestManifestVerification(t *testing.T) { - env := genEnv(t) - - publicKeys, err := Verify(env.signed) - if err != nil { - t.Fatalf("error verifying manifest: %v", err) - } - - if len(publicKeys) == 0 { - t.Fatalf("no public keys found in signature") - } - - var found bool - publicKey := env.pk.PublicKey() - // ensure that one of the extracted public keys matches the private key. - for _, candidate := range publicKeys { - if candidate.KeyID() == publicKey.KeyID() { - found = true - break - } - } - - if !found { - t.Fatalf("expected public key, %v, not found in verified keys: %v", publicKey, publicKeys) - } - - // Check that an invalid manifest fails verification - _, err = Verify(env.invalidSigned) - if err != nil { - t.Fatalf("Invalid manifest should not pass Verify()") - } -} - -func genEnv(t *testing.T) *testEnv { - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("error generating test key: %v", err) - } - - name, tag := "foo/bar", "test" - - invalid := Manifest{ - Versioned: SchemaVersion, - Name: name, - Tag: tag, - FSLayers: []FSLayer{ - { - BlobSum: "asdf", - }, - { - BlobSum: "qwer", - }, - }, - } - - valid := Manifest{ - Versioned: SchemaVersion, - Name: name, - Tag: tag, - FSLayers: []FSLayer{ - { - BlobSum: "asdf", - }, - }, - History: []History{ - { - V1Compatibility: "", - }, - }, - } - - sm, err := Sign(&valid, pk) - if err != nil { - t.Fatalf("error signing manifest: %v", err) - } - - invalidSigned, err := Sign(&invalid, pk) - if err != nil { - t.Fatalf("error signing manifest: %v", err) - } - - return &testEnv{ - name: name, - tag: tag, - invalidSigned: invalidSigned, - signed: sm, - pk: pk, - } -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/reference_builder.go b/vendor/github.com/docker/distribution/manifest/schema1/reference_builder.go deleted file mode 100644 index fc1045f9ea..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/reference_builder.go +++ /dev/null @@ -1,98 +0,0 @@ -package schema1 - -import ( - "fmt" - - "errors" - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/reference" - "github.com/docker/libtrust" -) - -// referenceManifestBuilder is a type for constructing manifests from schema1 -// dependencies. -type referenceManifestBuilder struct { - Manifest - pk libtrust.PrivateKey -} - -// NewReferenceManifestBuilder is used to build new manifests for the current -// schema version using schema1 dependencies. -func NewReferenceManifestBuilder(pk libtrust.PrivateKey, ref reference.Named, architecture string) distribution.ManifestBuilder { - tag := "" - if tagged, isTagged := ref.(reference.Tagged); isTagged { - tag = tagged.Tag() - } - - return &referenceManifestBuilder{ - Manifest: Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: ref.Name(), - Tag: tag, - Architecture: architecture, - }, - pk: pk, - } -} - -func (mb *referenceManifestBuilder) Build(ctx context.Context) (distribution.Manifest, error) { - m := mb.Manifest - if len(m.FSLayers) == 0 { - return nil, errors.New("cannot build manifest with zero layers or history") - } - - m.FSLayers = make([]FSLayer, len(mb.Manifest.FSLayers)) - m.History = make([]History, len(mb.Manifest.History)) - copy(m.FSLayers, mb.Manifest.FSLayers) - copy(m.History, mb.Manifest.History) - - return Sign(&m, mb.pk) -} - -// AppendReference adds a reference to the current ManifestBuilder -func (mb *referenceManifestBuilder) AppendReference(d distribution.Describable) error { - r, ok := d.(Reference) - if !ok { - return fmt.Errorf("Unable to add non-reference type to v1 builder") - } - - // Entries need to be prepended - mb.Manifest.FSLayers = append([]FSLayer{{BlobSum: r.Digest}}, mb.Manifest.FSLayers...) - mb.Manifest.History = append([]History{r.History}, mb.Manifest.History...) - return nil - -} - -// References returns the current references added to this builder -func (mb *referenceManifestBuilder) References() []distribution.Descriptor { - refs := make([]distribution.Descriptor, len(mb.Manifest.FSLayers)) - for i := range mb.Manifest.FSLayers { - layerDigest := mb.Manifest.FSLayers[i].BlobSum - history := mb.Manifest.History[i] - ref := Reference{layerDigest, 0, history} - refs[i] = ref.Descriptor() - } - return refs -} - -// Reference describes a manifest v2, schema version 1 dependency. -// An FSLayer associated with a history entry. -type Reference struct { - Digest digest.Digest - Size int64 // if we know it, set it for the descriptor. - History History -} - -// Descriptor describes a reference -func (r Reference) Descriptor() distribution.Descriptor { - return distribution.Descriptor{ - MediaType: MediaTypeManifestLayer, - Digest: r.Digest, - Size: r.Size, - } -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/reference_builder_test.go b/vendor/github.com/docker/distribution/manifest/schema1/reference_builder_test.go deleted file mode 100644 index 35db28e466..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/reference_builder_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package schema1 - -import ( - "testing" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/reference" - "github.com/docker/libtrust" -) - -func makeSignedManifest(t *testing.T, pk libtrust.PrivateKey, refs []Reference) *SignedManifest { - u := &Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: "foo/bar", - Tag: "latest", - Architecture: "amd64", - } - - for i := len(refs) - 1; i >= 0; i-- { - u.FSLayers = append(u.FSLayers, FSLayer{ - BlobSum: refs[i].Digest, - }) - u.History = append(u.History, History{ - V1Compatibility: refs[i].History.V1Compatibility, - }) - } - - signedManifest, err := Sign(u, pk) - if err != nil { - t.Fatalf("unexpected error signing manifest: %v", err) - } - return signedManifest -} - -func TestReferenceBuilder(t *testing.T) { - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("unexpected error generating private key: %v", err) - } - - r1 := Reference{ - Digest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", - Size: 1, - History: History{V1Compatibility: "{\"a\" : 1 }"}, - } - r2 := Reference{ - Digest: "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", - Size: 2, - History: History{V1Compatibility: "{\"\a\" : 2 }"}, - } - - handCrafted := makeSignedManifest(t, pk, []Reference{r1, r2}) - - ref, err := reference.ParseNamed(handCrafted.Manifest.Name) - if err != nil { - t.Fatalf("could not parse reference: %v", err) - } - ref, err = reference.WithTag(ref, handCrafted.Manifest.Tag) - if err != nil { - t.Fatalf("could not add tag: %v", err) - } - - b := NewReferenceManifestBuilder(pk, ref, handCrafted.Manifest.Architecture) - _, err = b.Build(context.Background()) - if err == nil { - t.Fatal("Expected error building zero length manifest") - } - - err = b.AppendReference(r1) - if err != nil { - t.Fatal(err) - } - - err = b.AppendReference(r2) - if err != nil { - t.Fatal(err) - } - - refs := b.References() - if len(refs) != 2 { - t.Fatalf("Unexpected reference count : %d != %d", 2, len(refs)) - } - - // Ensure ordering - if refs[0].Digest != r2.Digest { - t.Fatalf("Unexpected reference : %v", refs[0]) - } - - m, err := b.Build(context.Background()) - if err != nil { - t.Fatal(err) - } - - built, ok := m.(*SignedManifest) - if !ok { - t.Fatalf("unexpected type from Build() : %T", built) - } - - d1 := digest.FromBytes(built.Canonical) - d2 := digest.FromBytes(handCrafted.Canonical) - if d1 != d2 { - t.Errorf("mismatching canonical JSON") - } -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/sign.go b/vendor/github.com/docker/distribution/manifest/schema1/sign.go deleted file mode 100644 index c862dd8123..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/sign.go +++ /dev/null @@ -1,68 +0,0 @@ -package schema1 - -import ( - "crypto/x509" - "encoding/json" - - "github.com/docker/libtrust" -) - -// Sign signs the manifest with the provided private key, returning a -// SignedManifest. This typically won't be used within the registry, except -// for testing. -func Sign(m *Manifest, pk libtrust.PrivateKey) (*SignedManifest, error) { - p, err := json.MarshalIndent(m, "", " ") - if err != nil { - return nil, err - } - - js, err := libtrust.NewJSONSignature(p) - if err != nil { - return nil, err - } - - if err := js.Sign(pk); err != nil { - return nil, err - } - - pretty, err := js.PrettySignature("signatures") - if err != nil { - return nil, err - } - - return &SignedManifest{ - Manifest: *m, - all: pretty, - Canonical: p, - }, nil -} - -// SignWithChain signs the manifest with the given private key and x509 chain. -// The public key of the first element in the chain must be the public key -// corresponding with the sign key. -func SignWithChain(m *Manifest, key libtrust.PrivateKey, chain []*x509.Certificate) (*SignedManifest, error) { - p, err := json.MarshalIndent(m, "", " ") - if err != nil { - return nil, err - } - - js, err := libtrust.NewJSONSignature(p) - if err != nil { - return nil, err - } - - if err := js.SignWithChain(key, chain); err != nil { - return nil, err - } - - pretty, err := js.PrettySignature("signatures") - if err != nil { - return nil, err - } - - return &SignedManifest{ - Manifest: *m, - all: pretty, - Canonical: p, - }, nil -} diff --git a/vendor/github.com/docker/distribution/manifest/schema1/verify.go b/vendor/github.com/docker/distribution/manifest/schema1/verify.go deleted file mode 100644 index fa8daa56f5..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema1/verify.go +++ /dev/null @@ -1,32 +0,0 @@ -package schema1 - -import ( - "crypto/x509" - - "github.com/Sirupsen/logrus" - "github.com/docker/libtrust" -) - -// Verify verifies the signature of the signed manifest returning the public -// keys used during signing. -func Verify(sm *SignedManifest) ([]libtrust.PublicKey, error) { - js, err := libtrust.ParsePrettySignature(sm.all, "signatures") - if err != nil { - logrus.WithField("err", err).Debugf("(*SignedManifest).Verify") - return nil, err - } - - return js.Verify() -} - -// VerifyChains verifies the signature of the signed manifest against the -// certificate pool returning the list of verified chains. Signatures without -// an x509 chain are not checked. -func VerifyChains(sm *SignedManifest, ca *x509.CertPool) ([][]*x509.Certificate, error) { - js, err := libtrust.ParsePrettySignature(sm.all, "signatures") - if err != nil { - return nil, err - } - - return js.VerifyChains(ca) -} diff --git a/vendor/github.com/docker/distribution/manifest/schema2/builder.go b/vendor/github.com/docker/distribution/manifest/schema2/builder.go deleted file mode 100644 index 44b94eaae9..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema2/builder.go +++ /dev/null @@ -1,77 +0,0 @@ -package schema2 - -import ( - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" -) - -// builder is a type for constructing manifests. -type builder struct { - // bs is a BlobService used to publish the configuration blob. - bs distribution.BlobService - - // configJSON references - configJSON []byte - - // layers is a list of layer descriptors that gets built by successive - // calls to AppendReference. - layers []distribution.Descriptor -} - -// NewManifestBuilder is used to build new manifests for the current schema -// version. It takes a BlobService so it can publish the configuration blob -// as part of the Build process. -func NewManifestBuilder(bs distribution.BlobService, configJSON []byte) distribution.ManifestBuilder { - mb := &builder{ - bs: bs, - configJSON: make([]byte, len(configJSON)), - } - copy(mb.configJSON, configJSON) - - return mb -} - -// Build produces a final manifest from the given references. -func (mb *builder) Build(ctx context.Context) (distribution.Manifest, error) { - m := Manifest{ - Versioned: SchemaVersion, - Layers: make([]distribution.Descriptor, len(mb.layers)), - } - copy(m.Layers, mb.layers) - - configDigest := digest.FromBytes(mb.configJSON) - - var err error - m.Config, err = mb.bs.Stat(ctx, configDigest) - switch err { - case nil: - return FromStruct(m) - case distribution.ErrBlobUnknown: - // nop - default: - return nil, err - } - - // Add config to the blob store - m.Config, err = mb.bs.Put(ctx, MediaTypeConfig, mb.configJSON) - // Override MediaType, since Put always replaces the specified media - // type with application/octet-stream in the descriptor it returns. - m.Config.MediaType = MediaTypeConfig - if err != nil { - return nil, err - } - - return FromStruct(m) -} - -// AppendReference adds a reference to the current ManifestBuilder. -func (mb *builder) AppendReference(d distribution.Describable) error { - mb.layers = append(mb.layers, d.Descriptor()) - return nil -} - -// References returns the current references added to this builder. -func (mb *builder) References() []distribution.Descriptor { - return mb.layers -} diff --git a/vendor/github.com/docker/distribution/manifest/schema2/builder_test.go b/vendor/github.com/docker/distribution/manifest/schema2/builder_test.go deleted file mode 100644 index 02ed401bf3..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema2/builder_test.go +++ /dev/null @@ -1,210 +0,0 @@ -package schema2 - -import ( - "reflect" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" -) - -type mockBlobService struct { - descriptors map[digest.Digest]distribution.Descriptor -} - -func (bs *mockBlobService) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - if descriptor, ok := bs.descriptors[dgst]; ok { - return descriptor, nil - } - return distribution.Descriptor{}, distribution.ErrBlobUnknown -} - -func (bs *mockBlobService) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - panic("not implemented") -} - -func (bs *mockBlobService) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - panic("not implemented") -} - -func (bs *mockBlobService) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - d := distribution.Descriptor{ - Digest: digest.FromBytes(p), - Size: int64(len(p)), - MediaType: "application/octet-stream", - } - bs.descriptors[d.Digest] = d - return d, nil -} - -func (bs *mockBlobService) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - panic("not implemented") -} - -func (bs *mockBlobService) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - panic("not implemented") -} - -func TestBuilder(t *testing.T) { - imgJSON := []byte(`{ - "architecture": "amd64", - "config": { - "AttachStderr": false, - "AttachStdin": false, - "AttachStdout": false, - "Cmd": [ - "/bin/sh", - "-c", - "echo hi" - ], - "Domainname": "", - "Entrypoint": null, - "Env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "derived=true", - "asdf=true" - ], - "Hostname": "23304fc829f9", - "Image": "sha256:4ab15c48b859c2920dd5224f92aabcd39a52794c5b3cf088fb3bbb438756c246", - "Labels": {}, - "OnBuild": [], - "OpenStdin": false, - "StdinOnce": false, - "Tty": false, - "User": "", - "Volumes": null, - "WorkingDir": "" - }, - "container": "e91032eb0403a61bfe085ff5a5a48e3659e5a6deae9f4d678daa2ae399d5a001", - "container_config": { - "AttachStderr": false, - "AttachStdin": false, - "AttachStdout": false, - "Cmd": [ - "/bin/sh", - "-c", - "#(nop) CMD [\"/bin/sh\" \"-c\" \"echo hi\"]" - ], - "Domainname": "", - "Entrypoint": null, - "Env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "derived=true", - "asdf=true" - ], - "Hostname": "23304fc829f9", - "Image": "sha256:4ab15c48b859c2920dd5224f92aabcd39a52794c5b3cf088fb3bbb438756c246", - "Labels": {}, - "OnBuild": [], - "OpenStdin": false, - "StdinOnce": false, - "Tty": false, - "User": "", - "Volumes": null, - "WorkingDir": "" - }, - "created": "2015-11-04T23:06:32.365666163Z", - "docker_version": "1.9.0-dev", - "history": [ - { - "created": "2015-10-31T22:22:54.690851953Z", - "created_by": "/bin/sh -c #(nop) ADD file:a3bc1e842b69636f9df5256c49c5374fb4eef1e281fe3f282c65fb853ee171c5 in /" - }, - { - "created": "2015-10-31T22:22:55.613815829Z", - "created_by": "/bin/sh -c #(nop) CMD [\"sh\"]" - }, - { - "created": "2015-11-04T23:06:30.934316144Z", - "created_by": "/bin/sh -c #(nop) ENV derived=true", - "empty_layer": true - }, - { - "created": "2015-11-04T23:06:31.192097572Z", - "created_by": "/bin/sh -c #(nop) ENV asdf=true", - "empty_layer": true - }, - { - "created": "2015-11-04T23:06:32.083868454Z", - "created_by": "/bin/sh -c dd if=/dev/zero of=/file bs=1024 count=1024" - }, - { - "created": "2015-11-04T23:06:32.365666163Z", - "created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\" \"-c\" \"echo hi\"]", - "empty_layer": true - } - ], - "os": "linux", - "rootfs": { - "diff_ids": [ - "sha256:c6f988f4874bb0add23a778f753c65efe992244e148a1d2ec2a8b664fb66bbd1", - "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef", - "sha256:13f53e08df5a220ab6d13c58b2bf83a59cbdc2e04d0a3f041ddf4b0ba4112d49" - ], - "type": "layers" - } -}`) - configDigest := digest.FromBytes(imgJSON) - - descriptors := []distribution.Descriptor{ - { - Digest: digest.Digest("sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"), - Size: 5312, - MediaType: MediaTypeLayer, - }, - { - Digest: digest.Digest("sha256:86e0e091d0da6bde2456dbb48306f3956bbeb2eae1b5b9a43045843f69fe4aaa"), - Size: 235231, - MediaType: MediaTypeLayer, - }, - { - Digest: digest.Digest("sha256:b4ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"), - Size: 639152, - MediaType: MediaTypeLayer, - }, - } - - bs := &mockBlobService{descriptors: make(map[digest.Digest]distribution.Descriptor)} - builder := NewManifestBuilder(bs, imgJSON) - - for _, d := range descriptors { - if err := builder.AppendReference(d); err != nil { - t.Fatalf("AppendReference returned error: %v", err) - } - } - - built, err := builder.Build(context.Background()) - if err != nil { - t.Fatalf("Build returned error: %v", err) - } - - // Check that the config was put in the blob store - _, err = bs.Stat(context.Background(), configDigest) - if err != nil { - t.Fatal("config was not put in the blob store") - } - - manifest := built.(*DeserializedManifest).Manifest - - if manifest.Versioned.SchemaVersion != 2 { - t.Fatal("SchemaVersion != 2") - } - - target := manifest.Target() - if target.Digest != configDigest { - t.Fatalf("unexpected digest in target: %s", target.Digest.String()) - } - if target.MediaType != MediaTypeConfig { - t.Fatalf("unexpected media type in target: %s", target.MediaType) - } - if target.Size != 3153 { - t.Fatalf("unexpected size in target: %d", target.Size) - } - - references := manifest.References() - - if !reflect.DeepEqual(references, descriptors) { - t.Fatal("References() does not match the descriptors added") - } -} diff --git a/vendor/github.com/docker/distribution/manifest/schema2/manifest.go b/vendor/github.com/docker/distribution/manifest/schema2/manifest.go deleted file mode 100644 index 8d378e990b..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema2/manifest.go +++ /dev/null @@ -1,125 +0,0 @@ -package schema2 - -import ( - "encoding/json" - "errors" - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" -) - -const ( - // MediaTypeManifest specifies the mediaType for the current version. - MediaTypeManifest = "application/vnd.docker.distribution.manifest.v2+json" - - // MediaTypeConfig specifies the mediaType for the image configuration. - MediaTypeConfig = "application/vnd.docker.container.image.v1+json" - - // MediaTypeLayer is the mediaType used for layers referenced by the - // manifest. - MediaTypeLayer = "application/vnd.docker.image.rootfs.diff.tar.gzip" -) - -var ( - // SchemaVersion provides a pre-initialized version structure for this - // packages version of the manifest. - SchemaVersion = manifest.Versioned{ - SchemaVersion: 2, - MediaType: MediaTypeManifest, - } -) - -func init() { - schema2Func := func(b []byte) (distribution.Manifest, distribution.Descriptor, error) { - m := new(DeserializedManifest) - err := m.UnmarshalJSON(b) - if err != nil { - return nil, distribution.Descriptor{}, err - } - - dgst := digest.FromBytes(b) - return m, distribution.Descriptor{Digest: dgst, Size: int64(len(b)), MediaType: MediaTypeManifest}, err - } - err := distribution.RegisterManifestSchema(MediaTypeManifest, schema2Func) - if err != nil { - panic(fmt.Sprintf("Unable to register manifest: %s", err)) - } -} - -// Manifest defines a schema2 manifest. -type Manifest struct { - manifest.Versioned - - // Config references the image configuration as a blob. - Config distribution.Descriptor `json:"config"` - - // Layers lists descriptors for the layers referenced by the - // configuration. - Layers []distribution.Descriptor `json:"layers"` -} - -// References returnes the descriptors of this manifests references. -func (m Manifest) References() []distribution.Descriptor { - return m.Layers - -} - -// Target returns the target of this signed manifest. -func (m Manifest) Target() distribution.Descriptor { - return m.Config -} - -// DeserializedManifest wraps Manifest with a copy of the original JSON. -// It satisfies the distribution.Manifest interface. -type DeserializedManifest struct { - Manifest - - // canonical is the canonical byte representation of the Manifest. - canonical []byte -} - -// FromStruct takes a Manifest structure, marshals it to JSON, and returns a -// DeserializedManifest which contains the manifest and its JSON representation. -func FromStruct(m Manifest) (*DeserializedManifest, error) { - var deserialized DeserializedManifest - deserialized.Manifest = m - - var err error - deserialized.canonical, err = json.MarshalIndent(&m, "", " ") - return &deserialized, err -} - -// UnmarshalJSON populates a new Manifest struct from JSON data. -func (m *DeserializedManifest) UnmarshalJSON(b []byte) error { - m.canonical = make([]byte, len(b), len(b)) - // store manifest in canonical - copy(m.canonical, b) - - // Unmarshal canonical JSON into Manifest object - var manifest Manifest - if err := json.Unmarshal(m.canonical, &manifest); err != nil { - return err - } - - m.Manifest = manifest - - return nil -} - -// MarshalJSON returns the contents of canonical. If canonical is empty, -// marshals the inner contents. -func (m *DeserializedManifest) MarshalJSON() ([]byte, error) { - if len(m.canonical) > 0 { - return m.canonical, nil - } - - return nil, errors.New("JSON representation not initialized in DeserializedManifest") -} - -// Payload returns the raw content of the manifest. The contents can be used to -// calculate the content identifier. -func (m DeserializedManifest) Payload() (string, []byte, error) { - return m.MediaType, m.canonical, nil -} diff --git a/vendor/github.com/docker/distribution/manifest/schema2/manifest_test.go b/vendor/github.com/docker/distribution/manifest/schema2/manifest_test.go deleted file mode 100644 index 459d614cdd..0000000000 --- a/vendor/github.com/docker/distribution/manifest/schema2/manifest_test.go +++ /dev/null @@ -1,105 +0,0 @@ -package schema2 - -import ( - "bytes" - "encoding/json" - "reflect" - "testing" - - "github.com/docker/distribution" -) - -var expectedManifestSerialization = []byte(`{ - "schemaVersion": 2, - "mediaType": "application/vnd.docker.distribution.manifest.v2+json", - "config": { - "mediaType": "application/vnd.docker.container.image.v1+json", - "size": 985, - "digest": "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b" - }, - "layers": [ - { - "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", - "size": 153263, - "digest": "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" - } - ] -}`) - -func TestManifest(t *testing.T) { - manifest := Manifest{ - Versioned: SchemaVersion, - Config: distribution.Descriptor{ - Digest: "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b", - Size: 985, - MediaType: MediaTypeConfig, - }, - Layers: []distribution.Descriptor{ - { - Digest: "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b", - Size: 153263, - MediaType: MediaTypeLayer, - }, - }, - } - - deserialized, err := FromStruct(manifest) - if err != nil { - t.Fatalf("error creating DeserializedManifest: %v", err) - } - - mediaType, canonical, err := deserialized.Payload() - - if mediaType != MediaTypeManifest { - t.Fatalf("unexpected media type: %s", mediaType) - } - - // Check that the canonical field is the same as json.MarshalIndent - // with these parameters. - p, err := json.MarshalIndent(&manifest, "", " ") - if err != nil { - t.Fatalf("error marshaling manifest: %v", err) - } - if !bytes.Equal(p, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) - } - - // Check that canonical field matches expected value. - if !bytes.Equal(expectedManifestSerialization, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestSerialization)) - } - - var unmarshalled DeserializedManifest - if err := json.Unmarshal(deserialized.canonical, &unmarshalled); err != nil { - t.Fatalf("error unmarshaling manifest: %v", err) - } - - if !reflect.DeepEqual(&unmarshalled, deserialized) { - t.Fatalf("manifests are different after unmarshaling: %v != %v", unmarshalled, *deserialized) - } - - target := deserialized.Target() - if target.Digest != "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b" { - t.Fatalf("unexpected digest in target: %s", target.Digest.String()) - } - if target.MediaType != MediaTypeConfig { - t.Fatalf("unexpected media type in target: %s", target.MediaType) - } - if target.Size != 985 { - t.Fatalf("unexpected size in target: %d", target.Size) - } - - references := deserialized.References() - if len(references) != 1 { - t.Fatalf("unexpected number of references: %d", len(references)) - } - if references[0].Digest != "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" { - t.Fatalf("unexpected digest in reference: %s", references[0].Digest.String()) - } - if references[0].MediaType != MediaTypeLayer { - t.Fatalf("unexpected media type in reference: %s", references[0].MediaType) - } - if references[0].Size != 153263 { - t.Fatalf("unexpected size in reference: %d", references[0].Size) - } -} diff --git a/vendor/github.com/docker/distribution/manifest/versioned.go b/vendor/github.com/docker/distribution/manifest/versioned.go deleted file mode 100644 index c57398bde6..0000000000 --- a/vendor/github.com/docker/distribution/manifest/versioned.go +++ /dev/null @@ -1,12 +0,0 @@ -package manifest - -// Versioned provides a struct with the manifest schemaVersion and . Incoming -// content with unknown schema version can be decoded against this struct to -// check the version. -type Versioned struct { - // SchemaVersion is the image manifest schema that this image follows - SchemaVersion int `json:"schemaVersion"` - - // MediaType is the media type of this schema. - MediaType string `json:"mediaType,omitempty"` -} diff --git a/vendor/github.com/docker/distribution/manifests.go b/vendor/github.com/docker/distribution/manifests.go deleted file mode 100644 index 3bf912a659..0000000000 --- a/vendor/github.com/docker/distribution/manifests.go +++ /dev/null @@ -1,123 +0,0 @@ -package distribution - -import ( - "fmt" - "mime" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" -) - -// Manifest represents a registry object specifying a set of -// references and an optional target -type Manifest interface { - // References returns a list of objects which make up this manifest. - // The references are strictly ordered from base to head. A reference - // is anything which can be represented by a distribution.Descriptor - References() []Descriptor - - // Payload provides the serialized format of the manifest, in addition to - // the mediatype. - Payload() (mediatype string, payload []byte, err error) -} - -// ManifestBuilder creates a manifest allowing one to include dependencies. -// Instances can be obtained from a version-specific manifest package. Manifest -// specific data is passed into the function which creates the builder. -type ManifestBuilder interface { - // Build creates the manifest from his builder. - Build(ctx context.Context) (Manifest, error) - - // References returns a list of objects which have been added to this - // builder. The dependencies are returned in the order they were added, - // which should be from base to head. - References() []Descriptor - - // AppendReference includes the given object in the manifest after any - // existing dependencies. If the add fails, such as when adding an - // unsupported dependency, an error may be returned. - AppendReference(dependency Describable) error -} - -// ManifestService describes operations on image manifests. -type ManifestService interface { - // Exists returns true if the manifest exists. - Exists(ctx context.Context, dgst digest.Digest) (bool, error) - - // Get retrieves the manifest specified by the given digest - Get(ctx context.Context, dgst digest.Digest, options ...ManifestServiceOption) (Manifest, error) - - // Put creates or updates the given manifest returning the manifest digest - Put(ctx context.Context, manifest Manifest, options ...ManifestServiceOption) (digest.Digest, error) - - // Delete removes the manifest specified by the given digest. Deleting - // a manifest that doesn't exist will return ErrManifestNotFound - Delete(ctx context.Context, dgst digest.Digest) error -} - -// ManifestEnumerator enables iterating over manifests -type ManifestEnumerator interface { - // Enumerate calls ingester for each manifest. - Enumerate(ctx context.Context, ingester func(digest.Digest) error) error -} - -// SignaturesGetter provides an interface for getting the signatures of a schema1 manifest. If the digest -// referred to is not a schema1 manifest, an error should be returned. -type SignaturesGetter interface { - GetSignatures(ctx context.Context, manifestDigest digest.Digest) ([]digest.Digest, error) -} - -// Describable is an interface for descriptors -type Describable interface { - Descriptor() Descriptor -} - -// ManifestMediaTypes returns the supported media types for manifests. -func ManifestMediaTypes() (mediaTypes []string) { - for t := range mappings { - if t != "" { - mediaTypes = append(mediaTypes, t) - } - } - return -} - -// UnmarshalFunc implements manifest unmarshalling a given MediaType -type UnmarshalFunc func([]byte) (Manifest, Descriptor, error) - -var mappings = make(map[string]UnmarshalFunc, 0) - -// UnmarshalManifest looks up manifest unmarshal functions based on -// MediaType -func UnmarshalManifest(ctHeader string, p []byte) (Manifest, Descriptor, error) { - // Need to look up by the actual media type, not the raw contents of - // the header. Strip semicolons and anything following them. - var mediatype string - if ctHeader != "" { - var err error - mediatype, _, err = mime.ParseMediaType(ctHeader) - if err != nil { - return nil, Descriptor{}, err - } - } - - unmarshalFunc, ok := mappings[mediatype] - if !ok { - unmarshalFunc, ok = mappings[""] - if !ok { - return nil, Descriptor{}, fmt.Errorf("unsupported manifest mediatype and no default available: %s", mediatype) - } - } - - return unmarshalFunc(p) -} - -// RegisterManifestSchema registers an UnmarshalFunc for a given schema type. This -// should be called from specific -func RegisterManifestSchema(mediatype string, u UnmarshalFunc) error { - if _, ok := mappings[mediatype]; ok { - return fmt.Errorf("manifest mediatype registration would overwrite existing: %s", mediatype) - } - mappings[mediatype] = u - return nil -} diff --git a/vendor/github.com/docker/distribution/notifications/bridge.go b/vendor/github.com/docker/distribution/notifications/bridge.go deleted file mode 100644 index 502288a404..0000000000 --- a/vendor/github.com/docker/distribution/notifications/bridge.go +++ /dev/null @@ -1,214 +0,0 @@ -package notifications - -import ( - "net/http" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/uuid" -) - -type bridge struct { - ub URLBuilder - actor ActorRecord - source SourceRecord - request RequestRecord - sink Sink -} - -var _ Listener = &bridge{} - -// URLBuilder defines a subset of url builder to be used by the event listener. -type URLBuilder interface { - BuildManifestURL(name reference.Named) (string, error) - BuildBlobURL(ref reference.Canonical) (string, error) -} - -// NewBridge returns a notification listener that writes records to sink, -// using the actor and source. Any urls populated in the events created by -// this bridge will be created using the URLBuilder. -// TODO(stevvooe): Update this to simply take a context.Context object. -func NewBridge(ub URLBuilder, source SourceRecord, actor ActorRecord, request RequestRecord, sink Sink) Listener { - return &bridge{ - ub: ub, - actor: actor, - source: source, - request: request, - sink: sink, - } -} - -// NewRequestRecord builds a RequestRecord for use in NewBridge from an -// http.Request, associating it with a request id. -func NewRequestRecord(id string, r *http.Request) RequestRecord { - return RequestRecord{ - ID: id, - Addr: context.RemoteAddr(r), - Host: r.Host, - Method: r.Method, - UserAgent: r.UserAgent(), - } -} - -func (b *bridge) ManifestPushed(repo reference.Named, sm distribution.Manifest, options ...distribution.ManifestServiceOption) error { - manifestEvent, err := b.createManifestEvent(EventActionPush, repo, sm) - if err != nil { - return err - } - - for _, option := range options { - if opt, ok := option.(distribution.WithTagOption); ok { - manifestEvent.Target.Tag = opt.Tag - break - } - } - return b.sink.Write(*manifestEvent) -} - -func (b *bridge) ManifestPulled(repo reference.Named, sm distribution.Manifest, options ...distribution.ManifestServiceOption) error { - manifestEvent, err := b.createManifestEvent(EventActionPull, repo, sm) - if err != nil { - return err - } - - for _, option := range options { - if opt, ok := option.(distribution.WithTagOption); ok { - manifestEvent.Target.Tag = opt.Tag - break - } - } - return b.sink.Write(*manifestEvent) -} - -func (b *bridge) ManifestDeleted(repo reference.Named, dgst digest.Digest) error { - return b.createManifestDeleteEventAndWrite(EventActionDelete, repo, dgst) -} - -func (b *bridge) BlobPushed(repo reference.Named, desc distribution.Descriptor) error { - return b.createBlobEventAndWrite(EventActionPush, repo, desc) -} - -func (b *bridge) BlobPulled(repo reference.Named, desc distribution.Descriptor) error { - return b.createBlobEventAndWrite(EventActionPull, repo, desc) -} - -func (b *bridge) BlobMounted(repo reference.Named, desc distribution.Descriptor, fromRepo reference.Named) error { - event, err := b.createBlobEvent(EventActionMount, repo, desc) - if err != nil { - return err - } - event.Target.FromRepository = fromRepo.Name() - return b.sink.Write(*event) -} - -func (b *bridge) BlobDeleted(repo reference.Named, dgst digest.Digest) error { - return b.createBlobDeleteEventAndWrite(EventActionDelete, repo, dgst) -} - -func (b *bridge) createManifestEventAndWrite(action string, repo reference.Named, sm distribution.Manifest) error { - manifestEvent, err := b.createManifestEvent(action, repo, sm) - if err != nil { - return err - } - - return b.sink.Write(*manifestEvent) -} - -func (b *bridge) createManifestDeleteEventAndWrite(action string, repo reference.Named, dgst digest.Digest) error { - event := b.createEvent(action) - event.Target.Repository = repo.Name() - event.Target.Digest = dgst - - return b.sink.Write(*event) -} - -func (b *bridge) createManifestEvent(action string, repo reference.Named, sm distribution.Manifest) (*Event, error) { - event := b.createEvent(action) - event.Target.Repository = repo.Name() - - mt, p, err := sm.Payload() - if err != nil { - return nil, err - } - - // Ensure we have the canonical manifest descriptor here - _, desc, err := distribution.UnmarshalManifest(mt, p) - if err != nil { - return nil, err - } - - event.Target.MediaType = mt - event.Target.Length = desc.Size - event.Target.Size = desc.Size - event.Target.Digest = desc.Digest - - ref, err := reference.WithDigest(repo, event.Target.Digest) - if err != nil { - return nil, err - } - - event.Target.URL, err = b.ub.BuildManifestURL(ref) - if err != nil { - return nil, err - } - - return event, nil -} - -func (b *bridge) createBlobDeleteEventAndWrite(action string, repo reference.Named, dgst digest.Digest) error { - event := b.createEvent(action) - event.Target.Digest = dgst - event.Target.Repository = repo.Name() - - return b.sink.Write(*event) -} - -func (b *bridge) createBlobEventAndWrite(action string, repo reference.Named, desc distribution.Descriptor) error { - event, err := b.createBlobEvent(action, repo, desc) - if err != nil { - return err - } - - return b.sink.Write(*event) -} - -func (b *bridge) createBlobEvent(action string, repo reference.Named, desc distribution.Descriptor) (*Event, error) { - event := b.createEvent(action) - event.Target.Descriptor = desc - event.Target.Length = desc.Size - event.Target.Repository = repo.Name() - - ref, err := reference.WithDigest(repo, desc.Digest) - if err != nil { - return nil, err - } - - event.Target.URL, err = b.ub.BuildBlobURL(ref) - if err != nil { - return nil, err - } - - return event, nil -} - -// createEvent creates an event with actor and source populated. -func (b *bridge) createEvent(action string) *Event { - event := createEvent(action) - event.Source = b.source - event.Actor = b.actor - event.Request = b.request - - return event -} - -// createEvent returns a new event, timestamped, with the specified action. -func createEvent(action string) *Event { - return &Event{ - ID: uuid.Generate().String(), - Timestamp: time.Now(), - Action: action, - } -} diff --git a/vendor/github.com/docker/distribution/notifications/bridge_test.go b/vendor/github.com/docker/distribution/notifications/bridge_test.go deleted file mode 100644 index 0f85791c85..0000000000 --- a/vendor/github.com/docker/distribution/notifications/bridge_test.go +++ /dev/null @@ -1,222 +0,0 @@ -package notifications - -import ( - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/uuid" - "github.com/docker/libtrust" -) - -var ( - // common environment for expected manifest events. - - repo = "test/repo" - source = SourceRecord{ - Addr: "remote.test", - InstanceID: uuid.Generate().String(), - } - ub = mustUB(v2.NewURLBuilderFromString("http://test.example.com/", false)) - - actor = ActorRecord{ - Name: "test", - } - request = RequestRecord{} - m = schema1.Manifest{ - Name: repo, - Tag: "latest", - } - - sm *schema1.SignedManifest - payload []byte - dgst digest.Digest -) - -func TestEventBridgeManifestPulled(t *testing.T) { - l := createTestEnv(t, testSinkFn(func(events ...Event) error { - checkCommonManifest(t, EventActionPull, events...) - - return nil - })) - - repoRef, _ := reference.ParseNamed(repo) - if err := l.ManifestPulled(repoRef, sm); err != nil { - t.Fatalf("unexpected error notifying manifest pull: %v", err) - } -} - -func TestEventBridgeManifestPushed(t *testing.T) { - l := createTestEnv(t, testSinkFn(func(events ...Event) error { - checkCommonManifest(t, EventActionPush, events...) - - return nil - })) - - repoRef, _ := reference.ParseNamed(repo) - if err := l.ManifestPushed(repoRef, sm); err != nil { - t.Fatalf("unexpected error notifying manifest pull: %v", err) - } -} - -func TestEventBridgeManifestPushedWithTag(t *testing.T) { - l := createTestEnv(t, testSinkFn(func(events ...Event) error { - checkCommonManifest(t, EventActionPush, events...) - if events[0].Target.Tag != "latest" { - t.Fatalf("missing or unexpected tag: %#v", events[0].Target) - } - - return nil - })) - - repoRef, _ := reference.ParseNamed(repo) - if err := l.ManifestPushed(repoRef, sm, distribution.WithTag(m.Tag)); err != nil { - t.Fatalf("unexpected error notifying manifest pull: %v", err) - } -} - -func TestEventBridgeManifestPulledWithTag(t *testing.T) { - l := createTestEnv(t, testSinkFn(func(events ...Event) error { - checkCommonManifest(t, EventActionPull, events...) - if events[0].Target.Tag != "latest" { - t.Fatalf("missing or unexpected tag: %#v", events[0].Target) - } - - return nil - })) - - repoRef, _ := reference.ParseNamed(repo) - if err := l.ManifestPulled(repoRef, sm, distribution.WithTag(m.Tag)); err != nil { - t.Fatalf("unexpected error notifying manifest pull: %v", err) - } -} - -func TestEventBridgeManifestDeleted(t *testing.T) { - l := createTestEnv(t, testSinkFn(func(events ...Event) error { - checkDeleted(t, EventActionDelete, events...) - return nil - })) - - repoRef, _ := reference.ParseNamed(repo) - if err := l.ManifestDeleted(repoRef, dgst); err != nil { - t.Fatalf("unexpected error notifying manifest pull: %v", err) - } -} - -func createTestEnv(t *testing.T, fn testSinkFn) Listener { - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("error generating private key: %v", err) - } - - sm, err = schema1.Sign(&m, pk) - if err != nil { - t.Fatalf("error signing manifest: %v", err) - } - - payload = sm.Canonical - dgst = digest.FromBytes(payload) - - return NewBridge(ub, source, actor, request, fn) -} - -func checkDeleted(t *testing.T, action string, events ...Event) { - if len(events) != 1 { - t.Fatalf("unexpected number of events: %v != 1", len(events)) - } - - event := events[0] - - if event.Source != source { - t.Fatalf("source not equal: %#v != %#v", event.Source, source) - } - - if event.Request != request { - t.Fatalf("request not equal: %#v != %#v", event.Request, request) - } - - if event.Actor != actor { - t.Fatalf("request not equal: %#v != %#v", event.Actor, actor) - } - - if event.Target.Digest != dgst { - t.Fatalf("unexpected digest on event target: %q != %q", event.Target.Digest, dgst) - } - - if event.Target.Repository != repo { - t.Fatalf("unexpected repository: %q != %q", event.Target.Repository, repo) - } - -} - -func checkCommonManifest(t *testing.T, action string, events ...Event) { - checkCommon(t, events...) - - event := events[0] - if event.Action != action { - t.Fatalf("unexpected event action: %q != %q", event.Action, action) - } - - repoRef, _ := reference.ParseNamed(repo) - ref, _ := reference.WithDigest(repoRef, dgst) - u, err := ub.BuildManifestURL(ref) - if err != nil { - t.Fatalf("error building expected url: %v", err) - } - - if event.Target.URL != u { - t.Fatalf("incorrect url passed: \n%q != \n%q", event.Target.URL, u) - } -} - -func checkCommon(t *testing.T, events ...Event) { - if len(events) != 1 { - t.Fatalf("unexpected number of events: %v != 1", len(events)) - } - - event := events[0] - - if event.Source != source { - t.Fatalf("source not equal: %#v != %#v", event.Source, source) - } - - if event.Request != request { - t.Fatalf("request not equal: %#v != %#v", event.Request, request) - } - - if event.Actor != actor { - t.Fatalf("request not equal: %#v != %#v", event.Actor, actor) - } - - if event.Target.Digest != dgst { - t.Fatalf("unexpected digest on event target: %q != %q", event.Target.Digest, dgst) - } - - if event.Target.Length != int64(len(payload)) { - t.Fatalf("unexpected target length: %v != %v", event.Target.Length, len(payload)) - } - - if event.Target.Repository != repo { - t.Fatalf("unexpected repository: %q != %q", event.Target.Repository, repo) - } - -} - -type testSinkFn func(events ...Event) error - -func (tsf testSinkFn) Write(events ...Event) error { - return tsf(events...) -} - -func (tsf testSinkFn) Close() error { return nil } - -func mustUB(ub *v2.URLBuilder, err error) *v2.URLBuilder { - if err != nil { - panic(err) - } - - return ub -} diff --git a/vendor/github.com/docker/distribution/notifications/endpoint.go b/vendor/github.com/docker/distribution/notifications/endpoint.go deleted file mode 100644 index dfdb111c5f..0000000000 --- a/vendor/github.com/docker/distribution/notifications/endpoint.go +++ /dev/null @@ -1,86 +0,0 @@ -package notifications - -import ( - "net/http" - "time" -) - -// EndpointConfig covers the optional configuration parameters for an active -// endpoint. -type EndpointConfig struct { - Headers http.Header - Timeout time.Duration - Threshold int - Backoff time.Duration -} - -// defaults set any zero-valued fields to a reasonable default. -func (ec *EndpointConfig) defaults() { - if ec.Timeout <= 0 { - ec.Timeout = time.Second - } - - if ec.Threshold <= 0 { - ec.Threshold = 10 - } - - if ec.Backoff <= 0 { - ec.Backoff = time.Second - } -} - -// Endpoint is a reliable, queued, thread-safe sink that notify external http -// services when events are written. Writes are non-blocking and always -// succeed for callers but events may be queued internally. -type Endpoint struct { - Sink - url string - name string - - EndpointConfig - - metrics *safeMetrics -} - -// NewEndpoint returns a running endpoint, ready to receive events. -func NewEndpoint(name, url string, config EndpointConfig) *Endpoint { - var endpoint Endpoint - endpoint.name = name - endpoint.url = url - endpoint.EndpointConfig = config - endpoint.defaults() - endpoint.metrics = newSafeMetrics() - - // Configures the inmemory queue, retry, http pipeline. - endpoint.Sink = newHTTPSink( - endpoint.url, endpoint.Timeout, endpoint.Headers, - endpoint.metrics.httpStatusListener()) - endpoint.Sink = newRetryingSink(endpoint.Sink, endpoint.Threshold, endpoint.Backoff) - endpoint.Sink = newEventQueue(endpoint.Sink, endpoint.metrics.eventQueueListener()) - - register(&endpoint) - return &endpoint -} - -// Name returns the name of the endpoint, generally used for debugging. -func (e *Endpoint) Name() string { - return e.name -} - -// URL returns the url of the endpoint. -func (e *Endpoint) URL() string { - return e.url -} - -// ReadMetrics populates em with metrics from the endpoint. -func (e *Endpoint) ReadMetrics(em *EndpointMetrics) { - e.metrics.Lock() - defer e.metrics.Unlock() - - *em = e.metrics.EndpointMetrics - // Map still need to copied in a threadsafe manner. - em.Statuses = make(map[string]int) - for k, v := range e.metrics.Statuses { - em.Statuses[k] = v - } -} diff --git a/vendor/github.com/docker/distribution/notifications/event.go b/vendor/github.com/docker/distribution/notifications/event.go deleted file mode 100644 index b59a72bede..0000000000 --- a/vendor/github.com/docker/distribution/notifications/event.go +++ /dev/null @@ -1,160 +0,0 @@ -package notifications - -import ( - "fmt" - "time" - - "github.com/docker/distribution" -) - -// EventAction constants used in action field of Event. -const ( - EventActionPull = "pull" - EventActionPush = "push" - EventActionMount = "mount" - EventActionDelete = "delete" -) - -const ( - // EventsMediaType is the mediatype for the json event envelope. If the - // Event, ActorRecord, SourceRecord or Envelope structs change, the version - // number should be incremented. - EventsMediaType = "application/vnd.docker.distribution.events.v1+json" - // LayerMediaType is the media type for image rootfs diffs (aka "layers") - // used by Docker. We don't expect this to change for quite a while. - layerMediaType = "application/vnd.docker.container.image.rootfs.diff+x-gtar" -) - -// Envelope defines the fields of a json event envelope message that can hold -// one or more events. -type Envelope struct { - // Events make up the contents of the envelope. Events present in a single - // envelope are not necessarily related. - Events []Event `json:"events,omitempty"` -} - -// TODO(stevvooe): The event type should be separate from the json format. It -// should be defined as an interface. Leaving as is for now since we don't -// need that at this time. If we make this change, the struct below would be -// called "EventRecord". - -// Event provides the fields required to describe a registry event. -type Event struct { - // ID provides a unique identifier for the event. - ID string `json:"id,omitempty"` - - // Timestamp is the time at which the event occurred. - Timestamp time.Time `json:"timestamp,omitempty"` - - // Action indicates what action encompasses the provided event. - Action string `json:"action,omitempty"` - - // Target uniquely describes the target of the event. - Target struct { - // TODO(stevvooe): Use http.DetectContentType for layers, maybe. - - distribution.Descriptor - - // Length in bytes of content. Same as Size field in Descriptor. - // Provided for backwards compatibility. - Length int64 `json:"length,omitempty"` - - // Repository identifies the named repository. - Repository string `json:"repository,omitempty"` - - // FromRepository identifies the named repository which a blob was mounted - // from if appropriate. - FromRepository string `json:"fromRepository,omitempty"` - - // URL provides a direct link to the content. - URL string `json:"url,omitempty"` - - // Tag provides the tag - Tag string `json:"tag,omitempty"` - } `json:"target,omitempty"` - - // Request covers the request that generated the event. - Request RequestRecord `json:"request,omitempty"` - - // Actor specifies the agent that initiated the event. For most - // situations, this could be from the authorizaton context of the request. - Actor ActorRecord `json:"actor,omitempty"` - - // Source identifies the registry node that generated the event. Put - // differently, while the actor "initiates" the event, the source - // "generates" it. - Source SourceRecord `json:"source,omitempty"` -} - -// ActorRecord specifies the agent that initiated the event. For most -// situations, this could be from the authorizaton context of the request. -// Data in this record can refer to both the initiating client and the -// generating request. -type ActorRecord struct { - // Name corresponds to the subject or username associated with the - // request context that generated the event. - Name string `json:"name,omitempty"` - - // TODO(stevvooe): Look into setting a session cookie to get this - // without docker daemon. - // SessionID - - // TODO(stevvooe): Push the "Docker-Command" header to replace cookie and - // get the actual command. - // Command -} - -// RequestRecord covers the request that generated the event. -type RequestRecord struct { - // ID uniquely identifies the request that initiated the event. - ID string `json:"id"` - - // Addr contains the ip or hostname and possibly port of the client - // connection that initiated the event. This is the RemoteAddr from - // the standard http request. - Addr string `json:"addr,omitempty"` - - // Host is the externally accessible host name of the registry instance, - // as specified by the http host header on incoming requests. - Host string `json:"host,omitempty"` - - // Method has the request method that generated the event. - Method string `json:"method"` - - // UserAgent contains the user agent header of the request. - UserAgent string `json:"useragent"` -} - -// SourceRecord identifies the registry node that generated the event. Put -// differently, while the actor "initiates" the event, the source "generates" -// it. -type SourceRecord struct { - // Addr contains the ip or hostname and the port of the registry node - // that generated the event. Generally, this will be resolved by - // os.Hostname() along with the running port. - Addr string `json:"addr,omitempty"` - - // InstanceID identifies a running instance of an application. Changes - // after each restart. - InstanceID string `json:"instanceID,omitempty"` -} - -var ( - // ErrSinkClosed is returned if a write is issued to a sink that has been - // closed. If encountered, the error should be considered terminal and - // retries will not be successful. - ErrSinkClosed = fmt.Errorf("sink: closed") -) - -// Sink accepts and sends events. -type Sink interface { - // Write writes one or more events to the sink. If no error is returned, - // the caller will assume that all events have been committed and will not - // try to send them again. If an error is received, the caller may retry - // sending the event. The caller should cede the slice of memory to the - // sink and not modify it after calling this method. - Write(events ...Event) error - - // Close the sink, possibly waiting for pending events to flush. - Close() error -} diff --git a/vendor/github.com/docker/distribution/notifications/event_test.go b/vendor/github.com/docker/distribution/notifications/event_test.go deleted file mode 100644 index 0981a7ad44..0000000000 --- a/vendor/github.com/docker/distribution/notifications/event_test.go +++ /dev/null @@ -1,157 +0,0 @@ -package notifications - -import ( - "encoding/json" - "strings" - "testing" - "time" - - "github.com/docker/distribution/manifest/schema1" -) - -// TestEventJSONFormat provides silly test to detect if the event format or -// envelope has changed. If this code fails, the revision of the protocol may -// need to be incremented. -func TestEventEnvelopeJSONFormat(t *testing.T) { - var expected = strings.TrimSpace(` -{ - "events": [ - { - "id": "asdf-asdf-asdf-asdf-0", - "timestamp": "2006-01-02T15:04:05Z", - "action": "push", - "target": { - "mediaType": "application/vnd.docker.distribution.manifest.v1+prettyjws", - "size": 1, - "digest": "sha256:0123456789abcdef0", - "length": 1, - "repository": "library/test", - "url": "http://example.com/v2/library/test/manifests/latest" - }, - "request": { - "id": "asdfasdf", - "addr": "client.local", - "host": "registrycluster.local", - "method": "PUT", - "useragent": "test/0.1" - }, - "actor": { - "name": "test-actor" - }, - "source": { - "addr": "hostname.local:port" - } - }, - { - "id": "asdf-asdf-asdf-asdf-1", - "timestamp": "2006-01-02T15:04:05Z", - "action": "push", - "target": { - "mediaType": "application/vnd.docker.container.image.rootfs.diff+x-gtar", - "size": 2, - "digest": "sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5", - "length": 2, - "repository": "library/test", - "url": "http://example.com/v2/library/test/manifests/latest" - }, - "request": { - "id": "asdfasdf", - "addr": "client.local", - "host": "registrycluster.local", - "method": "PUT", - "useragent": "test/0.1" - }, - "actor": { - "name": "test-actor" - }, - "source": { - "addr": "hostname.local:port" - } - }, - { - "id": "asdf-asdf-asdf-asdf-2", - "timestamp": "2006-01-02T15:04:05Z", - "action": "push", - "target": { - "mediaType": "application/vnd.docker.container.image.rootfs.diff+x-gtar", - "size": 3, - "digest": "sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d6", - "length": 3, - "repository": "library/test", - "url": "http://example.com/v2/library/test/manifests/latest" - }, - "request": { - "id": "asdfasdf", - "addr": "client.local", - "host": "registrycluster.local", - "method": "PUT", - "useragent": "test/0.1" - }, - "actor": { - "name": "test-actor" - }, - "source": { - "addr": "hostname.local:port" - } - } - ] -} - `) - - tm, err := time.Parse(time.RFC3339, time.RFC3339[:len(time.RFC3339)-5]) - if err != nil { - t.Fatalf("error creating time: %v", err) - } - - var prototype Event - prototype.Action = EventActionPush - prototype.Timestamp = tm - prototype.Actor.Name = "test-actor" - prototype.Request.ID = "asdfasdf" - prototype.Request.Addr = "client.local" - prototype.Request.Host = "registrycluster.local" - prototype.Request.Method = "PUT" - prototype.Request.UserAgent = "test/0.1" - prototype.Source.Addr = "hostname.local:port" - - var manifestPush Event - manifestPush = prototype - manifestPush.ID = "asdf-asdf-asdf-asdf-0" - manifestPush.Target.Digest = "sha256:0123456789abcdef0" - manifestPush.Target.Length = 1 - manifestPush.Target.Size = 1 - manifestPush.Target.MediaType = schema1.MediaTypeSignedManifest - manifestPush.Target.Repository = "library/test" - manifestPush.Target.URL = "http://example.com/v2/library/test/manifests/latest" - - var layerPush0 Event - layerPush0 = prototype - layerPush0.ID = "asdf-asdf-asdf-asdf-1" - layerPush0.Target.Digest = "sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5" - layerPush0.Target.Length = 2 - layerPush0.Target.Size = 2 - layerPush0.Target.MediaType = layerMediaType - layerPush0.Target.Repository = "library/test" - layerPush0.Target.URL = "http://example.com/v2/library/test/manifests/latest" - - var layerPush1 Event - layerPush1 = prototype - layerPush1.ID = "asdf-asdf-asdf-asdf-2" - layerPush1.Target.Digest = "sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d6" - layerPush1.Target.Length = 3 - layerPush1.Target.Size = 3 - layerPush1.Target.MediaType = layerMediaType - layerPush1.Target.Repository = "library/test" - layerPush1.Target.URL = "http://example.com/v2/library/test/manifests/latest" - - var envelope Envelope - envelope.Events = append(envelope.Events, manifestPush, layerPush0, layerPush1) - - p, err := json.MarshalIndent(envelope, "", " ") - if err != nil { - t.Fatalf("unexpected error marshaling envelope: %v", err) - } - if string(p) != expected { - t.Fatalf("format has changed\n%s\n != \n%s", string(p), expected) - } -} diff --git a/vendor/github.com/docker/distribution/notifications/http.go b/vendor/github.com/docker/distribution/notifications/http.go deleted file mode 100644 index 465434f1cb..0000000000 --- a/vendor/github.com/docker/distribution/notifications/http.go +++ /dev/null @@ -1,147 +0,0 @@ -package notifications - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - "sync" - "time" -) - -// httpSink implements a single-flight, http notification endpoint. This is -// very lightweight in that it only makes an attempt at an http request. -// Reliability should be provided by the caller. -type httpSink struct { - url string - - mu sync.Mutex - closed bool - client *http.Client - listeners []httpStatusListener - - // TODO(stevvooe): Allow one to configure the media type accepted by this - // sink and choose the serialization based on that. -} - -// newHTTPSink returns an unreliable, single-flight http sink. Wrap in other -// sinks for increased reliability. -func newHTTPSink(u string, timeout time.Duration, headers http.Header, listeners ...httpStatusListener) *httpSink { - return &httpSink{ - url: u, - listeners: listeners, - client: &http.Client{ - Transport: &headerRoundTripper{ - Transport: http.DefaultTransport.(*http.Transport), - headers: headers, - }, - Timeout: timeout, - }, - } -} - -// httpStatusListener is called on various outcomes of sending notifications. -type httpStatusListener interface { - success(status int, events ...Event) - failure(status int, events ...Event) - err(err error, events ...Event) -} - -// Accept makes an attempt to notify the endpoint, returning an error if it -// fails. It is the caller's responsibility to retry on error. The events are -// accepted or rejected as a group. -func (hs *httpSink) Write(events ...Event) error { - hs.mu.Lock() - defer hs.mu.Unlock() - defer hs.client.Transport.(*headerRoundTripper).CloseIdleConnections() - - if hs.closed { - return ErrSinkClosed - } - - envelope := Envelope{ - Events: events, - } - - // TODO(stevvooe): It is not ideal to keep re-encoding the request body on - // retry but we are going to do it to keep the code simple. It is likely - // we could change the event struct to manage its own buffer. - - p, err := json.MarshalIndent(envelope, "", " ") - if err != nil { - for _, listener := range hs.listeners { - listener.err(err, events...) - } - return fmt.Errorf("%v: error marshaling event envelope: %v", hs, err) - } - - body := bytes.NewReader(p) - resp, err := hs.client.Post(hs.url, EventsMediaType, body) - if err != nil { - for _, listener := range hs.listeners { - listener.err(err, events...) - } - - return fmt.Errorf("%v: error posting: %v", hs, err) - } - defer resp.Body.Close() - - // The notifier will treat any 2xx or 3xx response as accepted by the - // endpoint. - switch { - case resp.StatusCode >= 200 && resp.StatusCode < 400: - for _, listener := range hs.listeners { - listener.success(resp.StatusCode, events...) - } - - // TODO(stevvooe): This is a little accepting: we may want to support - // unsupported media type responses with retries using the correct - // media type. There may also be cases that will never work. - - return nil - default: - for _, listener := range hs.listeners { - listener.failure(resp.StatusCode, events...) - } - return fmt.Errorf("%v: response status %v unaccepted", hs, resp.Status) - } -} - -// Close the endpoint -func (hs *httpSink) Close() error { - hs.mu.Lock() - defer hs.mu.Unlock() - - if hs.closed { - return fmt.Errorf("httpsink: already closed") - } - - hs.closed = true - return nil -} - -func (hs *httpSink) String() string { - return fmt.Sprintf("httpSink{%s}", hs.url) -} - -type headerRoundTripper struct { - *http.Transport // must be transport to support CancelRequest - headers http.Header -} - -func (hrt *headerRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { - var nreq http.Request - nreq = *req - nreq.Header = make(http.Header) - - merge := func(headers http.Header) { - for k, v := range headers { - nreq.Header[k] = append(nreq.Header[k], v...) - } - } - - merge(req.Header) - merge(hrt.headers) - - return hrt.Transport.RoundTrip(&nreq) -} diff --git a/vendor/github.com/docker/distribution/notifications/http_test.go b/vendor/github.com/docker/distribution/notifications/http_test.go deleted file mode 100644 index 854dd404d6..0000000000 --- a/vendor/github.com/docker/distribution/notifications/http_test.go +++ /dev/null @@ -1,157 +0,0 @@ -package notifications - -import ( - "encoding/json" - "fmt" - "mime" - "net/http" - "net/http/httptest" - "reflect" - "strconv" - "testing" - - "github.com/docker/distribution/manifest/schema1" -) - -// TestHTTPSink mocks out an http endpoint and notifies it under a couple of -// conditions, ensuring correct behavior. -func TestHTTPSink(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer r.Body.Close() - if r.Method != "POST" { - w.WriteHeader(http.StatusMethodNotAllowed) - t.Fatalf("unexpected request method: %v", r.Method) - return - } - - // Extract the content type and make sure it matches - contentType := r.Header.Get("Content-Type") - mediaType, _, err := mime.ParseMediaType(contentType) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - t.Fatalf("error parsing media type: %v, contenttype=%q", err, contentType) - return - } - - if mediaType != EventsMediaType { - w.WriteHeader(http.StatusUnsupportedMediaType) - t.Fatalf("incorrect media type: %q != %q", mediaType, EventsMediaType) - return - } - - var envelope Envelope - dec := json.NewDecoder(r.Body) - if err := dec.Decode(&envelope); err != nil { - w.WriteHeader(http.StatusBadRequest) - t.Fatalf("error decoding request body: %v", err) - return - } - - // Let caller choose the status - status, err := strconv.Atoi(r.FormValue("status")) - if err != nil { - t.Logf("error parsing status: %v", err) - - // May just be empty, set status to 200 - status = http.StatusOK - } - - w.WriteHeader(status) - })) - - metrics := newSafeMetrics() - sink := newHTTPSink(server.URL, 0, nil, - &endpointMetricsHTTPStatusListener{safeMetrics: metrics}) - - var expectedMetrics EndpointMetrics - expectedMetrics.Statuses = make(map[string]int) - - for _, tc := range []struct { - events []Event // events to send - url string - failure bool // true if there should be a failure. - statusCode int // if not set, no status code should be incremented. - }{ - { - statusCode: http.StatusOK, - events: []Event{ - createTestEvent("push", "library/test", schema1.MediaTypeSignedManifest)}, - }, - { - statusCode: http.StatusOK, - events: []Event{ - createTestEvent("push", "library/test", schema1.MediaTypeSignedManifest), - createTestEvent("push", "library/test", layerMediaType), - createTestEvent("push", "library/test", layerMediaType), - }, - }, - { - statusCode: http.StatusTemporaryRedirect, - }, - { - statusCode: http.StatusBadRequest, - failure: true, - }, - { - // Case where connection never goes through. - url: "http://shoudlntresolve/", - failure: true, - }, - } { - - if tc.failure { - expectedMetrics.Failures += len(tc.events) - } else { - expectedMetrics.Successes += len(tc.events) - } - - if tc.statusCode > 0 { - expectedMetrics.Statuses[fmt.Sprintf("%d %s", tc.statusCode, http.StatusText(tc.statusCode))] += len(tc.events) - } - - url := tc.url - if url == "" { - url = server.URL + "/" - } - // setup endpoint to respond with expected status code. - url += fmt.Sprintf("?status=%v", tc.statusCode) - sink.url = url - - t.Logf("testcase: %v, fail=%v", url, tc.failure) - // Try a simple event emission. - err := sink.Write(tc.events...) - - if !tc.failure { - if err != nil { - t.Fatalf("unexpected error send event: %v", err) - } - } else { - if err == nil { - t.Fatalf("the endpoint should have rejected the request") - } - } - - if !reflect.DeepEqual(metrics.EndpointMetrics, expectedMetrics) { - t.Fatalf("metrics not as expected: %#v != %#v", metrics.EndpointMetrics, expectedMetrics) - } - } - - if err := sink.Close(); err != nil { - t.Fatalf("unexpected error closing http sink: %v", err) - } - - // double close returns error - if err := sink.Close(); err == nil { - t.Fatalf("second close should have returned error: %v", err) - } - -} - -func createTestEvent(action, repo, typ string) Event { - event := createEvent(action) - - event.Target.MediaType = typ - event.Target.Repository = repo - - return *event -} diff --git a/vendor/github.com/docker/distribution/notifications/listener.go b/vendor/github.com/docker/distribution/notifications/listener.go deleted file mode 100644 index b99133dadc..0000000000 --- a/vendor/github.com/docker/distribution/notifications/listener.go +++ /dev/null @@ -1,215 +0,0 @@ -package notifications - -import ( - "net/http" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" -) - -// ManifestListener describes a set of methods for listening to events related to manifests. -type ManifestListener interface { - ManifestPushed(repo reference.Named, sm distribution.Manifest, options ...distribution.ManifestServiceOption) error - ManifestPulled(repo reference.Named, sm distribution.Manifest, options ...distribution.ManifestServiceOption) error - ManifestDeleted(repo reference.Named, dgst digest.Digest) error -} - -// BlobListener describes a listener that can respond to layer related events. -type BlobListener interface { - BlobPushed(repo reference.Named, desc distribution.Descriptor) error - BlobPulled(repo reference.Named, desc distribution.Descriptor) error - BlobMounted(repo reference.Named, desc distribution.Descriptor, fromRepo reference.Named) error - BlobDeleted(repo reference.Named, desc digest.Digest) error -} - -// Listener combines all repository events into a single interface. -type Listener interface { - ManifestListener - BlobListener -} - -type repositoryListener struct { - distribution.Repository - listener Listener -} - -// Listen dispatches events on the repository to the listener. -func Listen(repo distribution.Repository, listener Listener) distribution.Repository { - return &repositoryListener{ - Repository: repo, - listener: listener, - } -} - -func (rl *repositoryListener) Manifests(ctx context.Context, options ...distribution.ManifestServiceOption) (distribution.ManifestService, error) { - manifests, err := rl.Repository.Manifests(ctx, options...) - if err != nil { - return nil, err - } - return &manifestServiceListener{ - ManifestService: manifests, - parent: rl, - }, nil -} - -func (rl *repositoryListener) Blobs(ctx context.Context) distribution.BlobStore { - return &blobServiceListener{ - BlobStore: rl.Repository.Blobs(ctx), - parent: rl, - } -} - -type manifestServiceListener struct { - distribution.ManifestService - parent *repositoryListener -} - -func (msl *manifestServiceListener) Delete(ctx context.Context, dgst digest.Digest) error { - err := msl.ManifestService.Delete(ctx, dgst) - if err == nil { - if err := msl.parent.listener.ManifestDeleted(msl.parent.Repository.Named(), dgst); err != nil { - context.GetLogger(ctx).Errorf("error dispatching manifest delete to listener: %v", err) - } - } - - return err -} - -func (msl *manifestServiceListener) Get(ctx context.Context, dgst digest.Digest, options ...distribution.ManifestServiceOption) (distribution.Manifest, error) { - sm, err := msl.ManifestService.Get(ctx, dgst) - if err == nil { - if err := msl.parent.listener.ManifestPulled(msl.parent.Repository.Named(), sm, options...); err != nil { - context.GetLogger(ctx).Errorf("error dispatching manifest pull to listener: %v", err) - } - } - - return sm, err -} - -func (msl *manifestServiceListener) Put(ctx context.Context, sm distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) { - dgst, err := msl.ManifestService.Put(ctx, sm, options...) - - if err == nil { - if err := msl.parent.listener.ManifestPushed(msl.parent.Repository.Named(), sm, options...); err != nil { - context.GetLogger(ctx).Errorf("error dispatching manifest push to listener: %v", err) - } - } - - return dgst, err -} - -type blobServiceListener struct { - distribution.BlobStore - parent *repositoryListener -} - -var _ distribution.BlobStore = &blobServiceListener{} - -func (bsl *blobServiceListener) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - p, err := bsl.BlobStore.Get(ctx, dgst) - if err == nil { - if desc, err := bsl.Stat(ctx, dgst); err != nil { - context.GetLogger(ctx).Errorf("error resolving descriptor in ServeBlob listener: %v", err) - } else { - if err := bsl.parent.listener.BlobPulled(bsl.parent.Repository.Named(), desc); err != nil { - context.GetLogger(ctx).Errorf("error dispatching layer pull to listener: %v", err) - } - } - } - - return p, err -} - -func (bsl *blobServiceListener) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - rc, err := bsl.BlobStore.Open(ctx, dgst) - if err == nil { - if desc, err := bsl.Stat(ctx, dgst); err != nil { - context.GetLogger(ctx).Errorf("error resolving descriptor in ServeBlob listener: %v", err) - } else { - if err := bsl.parent.listener.BlobPulled(bsl.parent.Repository.Named(), desc); err != nil { - context.GetLogger(ctx).Errorf("error dispatching layer pull to listener: %v", err) - } - } - } - - return rc, err -} - -func (bsl *blobServiceListener) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error { - err := bsl.BlobStore.ServeBlob(ctx, w, r, dgst) - if err == nil { - if desc, err := bsl.Stat(ctx, dgst); err != nil { - context.GetLogger(ctx).Errorf("error resolving descriptor in ServeBlob listener: %v", err) - } else { - if err := bsl.parent.listener.BlobPulled(bsl.parent.Repository.Named(), desc); err != nil { - context.GetLogger(ctx).Errorf("error dispatching layer pull to listener: %v", err) - } - } - } - - return err -} - -func (bsl *blobServiceListener) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - desc, err := bsl.BlobStore.Put(ctx, mediaType, p) - if err == nil { - if err := bsl.parent.listener.BlobPushed(bsl.parent.Repository.Named(), desc); err != nil { - context.GetLogger(ctx).Errorf("error dispatching layer push to listener: %v", err) - } - } - - return desc, err -} - -func (bsl *blobServiceListener) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - wr, err := bsl.BlobStore.Create(ctx, options...) - switch err := err.(type) { - case distribution.ErrBlobMounted: - if err := bsl.parent.listener.BlobMounted(bsl.parent.Repository.Named(), err.Descriptor, err.From); err != nil { - context.GetLogger(ctx).Errorf("error dispatching blob mount to listener: %v", err) - } - return nil, err - } - return bsl.decorateWriter(wr), err -} - -func (bsl *blobServiceListener) Delete(ctx context.Context, dgst digest.Digest) error { - err := bsl.BlobStore.Delete(ctx, dgst) - if err == nil { - if err := bsl.parent.listener.BlobDeleted(bsl.parent.Repository.Named(), dgst); err != nil { - context.GetLogger(ctx).Errorf("error dispatching layer delete to listener: %v", err) - } - } - - return err -} - -func (bsl *blobServiceListener) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - wr, err := bsl.BlobStore.Resume(ctx, id) - return bsl.decorateWriter(wr), err -} - -func (bsl *blobServiceListener) decorateWriter(wr distribution.BlobWriter) distribution.BlobWriter { - return &blobWriterListener{ - BlobWriter: wr, - parent: bsl, - } -} - -type blobWriterListener struct { - distribution.BlobWriter - parent *blobServiceListener -} - -func (bwl *blobWriterListener) Commit(ctx context.Context, desc distribution.Descriptor) (distribution.Descriptor, error) { - committed, err := bwl.BlobWriter.Commit(ctx, desc) - if err == nil { - if err := bwl.parent.parent.listener.BlobPushed(bwl.parent.parent.Repository.Named(), committed); err != nil { - context.GetLogger(ctx).Errorf("error dispatching blob push to listener: %v", err) - } - } - - return committed, err -} diff --git a/vendor/github.com/docker/distribution/notifications/listener_test.go b/vendor/github.com/docker/distribution/notifications/listener_test.go deleted file mode 100644 index d16a4560b7..0000000000 --- a/vendor/github.com/docker/distribution/notifications/listener_test.go +++ /dev/null @@ -1,200 +0,0 @@ -package notifications - -import ( - "io" - "reflect" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage" - "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/testutil" - "github.com/docker/libtrust" -) - -func TestListener(t *testing.T) { - ctx := context.Background() - registry, err := storage.NewRegistry(ctx, inmemory.New(), storage.BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), storage.EnableDelete, storage.EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - tl := &testListener{ - ops: make(map[string]int), - } - - repoRef, _ := reference.ParseNamed("foo/bar") - repository, err := registry.Repository(ctx, repoRef) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - repository = Listen(repository, tl) - - // Now take the registry through a number of operations - checkExerciseRepository(t, repository) - - expectedOps := map[string]int{ - "manifest:push": 1, - "manifest:pull": 1, - "manifest:delete": 1, - "layer:push": 2, - "layer:pull": 2, - "layer:delete": 2, - } - - if !reflect.DeepEqual(tl.ops, expectedOps) { - t.Fatalf("counts do not match:\n%v\n !=\n%v", tl.ops, expectedOps) - } - -} - -type testListener struct { - ops map[string]int -} - -func (tl *testListener) ManifestPushed(repo reference.Named, m distribution.Manifest, options ...distribution.ManifestServiceOption) error { - tl.ops["manifest:push"]++ - - return nil -} - -func (tl *testListener) ManifestPulled(repo reference.Named, m distribution.Manifest, options ...distribution.ManifestServiceOption) error { - tl.ops["manifest:pull"]++ - return nil -} - -func (tl *testListener) ManifestDeleted(repo reference.Named, d digest.Digest) error { - tl.ops["manifest:delete"]++ - return nil -} - -func (tl *testListener) BlobPushed(repo reference.Named, desc distribution.Descriptor) error { - tl.ops["layer:push"]++ - return nil -} - -func (tl *testListener) BlobPulled(repo reference.Named, desc distribution.Descriptor) error { - tl.ops["layer:pull"]++ - return nil -} - -func (tl *testListener) BlobMounted(repo reference.Named, desc distribution.Descriptor, fromRepo reference.Named) error { - tl.ops["layer:mount"]++ - return nil -} - -func (tl *testListener) BlobDeleted(repo reference.Named, d digest.Digest) error { - tl.ops["layer:delete"]++ - return nil -} - -// checkExerciseRegistry takes the registry through all of its operations, -// carrying out generic checks. -func checkExerciseRepository(t *testing.T, repository distribution.Repository) { - // TODO(stevvooe): This would be a nice testutil function. Basically, it - // takes the registry through a common set of operations. This could be - // used to make cross-cutting updates by changing internals that affect - // update counts. Basically, it would make writing tests a lot easier. - - ctx := context.Background() - tag := "thetag" - // todo: change this to use Builder - - m := schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: repository.Named().Name(), - Tag: tag, - } - - var blobDigests []digest.Digest - blobs := repository.Blobs(ctx) - for i := 0; i < 2; i++ { - rs, ds, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating test layer: %v", err) - } - dgst := digest.Digest(ds) - blobDigests = append(blobDigests, dgst) - - wr, err := blobs.Create(ctx) - if err != nil { - t.Fatalf("error creating layer upload: %v", err) - } - - // Use the resumes, as well! - wr, err = blobs.Resume(ctx, wr.ID()) - if err != nil { - t.Fatalf("error resuming layer upload: %v", err) - } - - io.Copy(wr, rs) - - if _, err := wr.Commit(ctx, distribution.Descriptor{Digest: dgst}); err != nil { - t.Fatalf("unexpected error finishing upload: %v", err) - } - - m.FSLayers = append(m.FSLayers, schema1.FSLayer{ - BlobSum: dgst, - }) - m.History = append(m.History, schema1.History{ - V1Compatibility: "", - }) - - // Then fetch the blobs - if rc, err := blobs.Open(ctx, dgst); err != nil { - t.Fatalf("error fetching layer: %v", err) - } else { - defer rc.Close() - } - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("unexpected error generating key: %v", err) - } - - sm, err := schema1.Sign(&m, pk) - if err != nil { - t.Fatalf("unexpected error signing manifest: %v", err) - } - - manifests, err := repository.Manifests(ctx) - if err != nil { - t.Fatal(err.Error()) - } - - var digestPut digest.Digest - if digestPut, err = manifests.Put(ctx, sm); err != nil { - t.Fatalf("unexpected error putting the manifest: %v", err) - } - - dgst := digest.FromBytes(sm.Canonical) - if dgst != digestPut { - t.Fatalf("mismatching digest from payload and put") - } - - _, err = manifests.Get(ctx, dgst) - if err != nil { - t.Fatalf("unexpected error fetching manifest: %v", err) - } - - err = manifests.Delete(ctx, dgst) - if err != nil { - t.Fatalf("unexpected error deleting blob: %v", err) - } - - for _, d := range blobDigests { - err = blobs.Delete(ctx, d) - if err != nil { - t.Fatalf("unexpected error deleting blob: %v", err) - } - - } -} diff --git a/vendor/github.com/docker/distribution/notifications/metrics.go b/vendor/github.com/docker/distribution/notifications/metrics.go deleted file mode 100644 index a20af16873..0000000000 --- a/vendor/github.com/docker/distribution/notifications/metrics.go +++ /dev/null @@ -1,152 +0,0 @@ -package notifications - -import ( - "expvar" - "fmt" - "net/http" - "sync" -) - -// EndpointMetrics track various actions taken by the endpoint, typically by -// number of events. The goal of this to export it via expvar but we may find -// some other future solution to be better. -type EndpointMetrics struct { - Pending int // events pending in queue - Events int // total events incoming - Successes int // total events written successfully - Failures int // total events failed - Errors int // total events errored - Statuses map[string]int // status code histogram, per call event -} - -// safeMetrics guards the metrics implementation with a lock and provides a -// safe update function. -type safeMetrics struct { - EndpointMetrics - sync.Mutex // protects statuses map -} - -// newSafeMetrics returns safeMetrics with map allocated. -func newSafeMetrics() *safeMetrics { - var sm safeMetrics - sm.Statuses = make(map[string]int) - return &sm -} - -// httpStatusListener returns the listener for the http sink that updates the -// relevant counters. -func (sm *safeMetrics) httpStatusListener() httpStatusListener { - return &endpointMetricsHTTPStatusListener{ - safeMetrics: sm, - } -} - -// eventQueueListener returns a listener that maintains queue related counters. -func (sm *safeMetrics) eventQueueListener() eventQueueListener { - return &endpointMetricsEventQueueListener{ - safeMetrics: sm, - } -} - -// endpointMetricsHTTPStatusListener increments counters related to http sinks -// for the relevant events. -type endpointMetricsHTTPStatusListener struct { - *safeMetrics -} - -var _ httpStatusListener = &endpointMetricsHTTPStatusListener{} - -func (emsl *endpointMetricsHTTPStatusListener) success(status int, events ...Event) { - emsl.safeMetrics.Lock() - defer emsl.safeMetrics.Unlock() - emsl.Statuses[fmt.Sprintf("%d %s", status, http.StatusText(status))] += len(events) - emsl.Successes += len(events) -} - -func (emsl *endpointMetricsHTTPStatusListener) failure(status int, events ...Event) { - emsl.safeMetrics.Lock() - defer emsl.safeMetrics.Unlock() - emsl.Statuses[fmt.Sprintf("%d %s", status, http.StatusText(status))] += len(events) - emsl.Failures += len(events) -} - -func (emsl *endpointMetricsHTTPStatusListener) err(err error, events ...Event) { - emsl.safeMetrics.Lock() - defer emsl.safeMetrics.Unlock() - emsl.Errors += len(events) -} - -// endpointMetricsEventQueueListener maintains the incoming events counter and -// the queues pending count. -type endpointMetricsEventQueueListener struct { - *safeMetrics -} - -func (eqc *endpointMetricsEventQueueListener) ingress(events ...Event) { - eqc.Lock() - defer eqc.Unlock() - eqc.Events += len(events) - eqc.Pending += len(events) -} - -func (eqc *endpointMetricsEventQueueListener) egress(events ...Event) { - eqc.Lock() - defer eqc.Unlock() - eqc.Pending -= len(events) -} - -// endpoints is global registry of endpoints used to report metrics to expvar -var endpoints struct { - registered []*Endpoint - mu sync.Mutex -} - -// register places the endpoint into expvar so that stats are tracked. -func register(e *Endpoint) { - endpoints.mu.Lock() - defer endpoints.mu.Unlock() - - endpoints.registered = append(endpoints.registered, e) -} - -func init() { - // NOTE(stevvooe): Setup registry metrics structure to report to expvar. - // Ideally, we do more metrics through logging but we need some nice - // realtime metrics for queue state for now. - - registry := expvar.Get("registry") - - if registry == nil { - registry = expvar.NewMap("registry") - } - - var notifications expvar.Map - notifications.Init() - notifications.Set("endpoints", expvar.Func(func() interface{} { - endpoints.mu.Lock() - defer endpoints.mu.Unlock() - - var names []interface{} - for _, v := range endpoints.registered { - var epjson struct { - Name string `json:"name"` - URL string `json:"url"` - EndpointConfig - - Metrics EndpointMetrics - } - - epjson.Name = v.Name() - epjson.URL = v.URL() - epjson.EndpointConfig = v.EndpointConfig - - v.ReadMetrics(&epjson.Metrics) - - names = append(names, epjson) - } - - return names - })) - - registry.(*expvar.Map).Set("notifications", ¬ifications) -} diff --git a/vendor/github.com/docker/distribution/notifications/sinks.go b/vendor/github.com/docker/distribution/notifications/sinks.go deleted file mode 100644 index dda4a56536..0000000000 --- a/vendor/github.com/docker/distribution/notifications/sinks.go +++ /dev/null @@ -1,337 +0,0 @@ -package notifications - -import ( - "container/list" - "fmt" - "sync" - "time" - - "github.com/Sirupsen/logrus" -) - -// NOTE(stevvooe): This file contains definitions for several utility sinks. -// Typically, the broadcaster is the only sink that should be required -// externally, but others are suitable for export if the need arises. Albeit, -// the tight integration with endpoint metrics should be removed. - -// Broadcaster sends events to multiple, reliable Sinks. The goal of this -// component is to dispatch events to configured endpoints. Reliability can be -// provided by wrapping incoming sinks. -type Broadcaster struct { - sinks []Sink - events chan []Event - closed chan chan struct{} -} - -// NewBroadcaster ... -// Add appends one or more sinks to the list of sinks. The broadcaster -// behavior will be affected by the properties of the sink. Generally, the -// sink should accept all messages and deal with reliability on its own. Use -// of EventQueue and RetryingSink should be used here. -func NewBroadcaster(sinks ...Sink) *Broadcaster { - b := Broadcaster{ - sinks: sinks, - events: make(chan []Event), - closed: make(chan chan struct{}), - } - - // Start the broadcaster - go b.run() - - return &b -} - -// Write accepts a block of events to be dispatched to all sinks. This method -// will never fail and should never block (hopefully!). The caller cedes the -// slice memory to the broadcaster and should not modify it after calling -// write. -func (b *Broadcaster) Write(events ...Event) error { - select { - case b.events <- events: - case <-b.closed: - return ErrSinkClosed - } - return nil -} - -// Close the broadcaster, ensuring that all messages are flushed to the -// underlying sink before returning. -func (b *Broadcaster) Close() error { - logrus.Infof("broadcaster: closing") - select { - case <-b.closed: - // already closed - return fmt.Errorf("broadcaster: already closed") - default: - // do a little chan handoff dance to synchronize closing - closed := make(chan struct{}) - b.closed <- closed - close(b.closed) - <-closed - return nil - } -} - -// run is the main broadcast loop, started when the broadcaster is created. -// Under normal conditions, it waits for events on the event channel. After -// Close is called, this goroutine will exit. -func (b *Broadcaster) run() { - for { - select { - case block := <-b.events: - for _, sink := range b.sinks { - if err := sink.Write(block...); err != nil { - logrus.Errorf("broadcaster: error writing events to %v, these events will be lost: %v", sink, err) - } - } - case closing := <-b.closed: - - // close all the underlying sinks - for _, sink := range b.sinks { - if err := sink.Close(); err != nil { - logrus.Errorf("broadcaster: error closing sink %v: %v", sink, err) - } - } - closing <- struct{}{} - - logrus.Debugf("broadcaster: closed") - return - } - } -} - -// eventQueue accepts all messages into a queue for asynchronous consumption -// by a sink. It is unbounded and thread safe but the sink must be reliable or -// events will be dropped. -type eventQueue struct { - sink Sink - events *list.List - listeners []eventQueueListener - cond *sync.Cond - mu sync.Mutex - closed bool -} - -// eventQueueListener is called when various events happen on the queue. -type eventQueueListener interface { - ingress(events ...Event) - egress(events ...Event) -} - -// newEventQueue returns a queue to the provided sink. If the updater is non- -// nil, it will be called to update pending metrics on ingress and egress. -func newEventQueue(sink Sink, listeners ...eventQueueListener) *eventQueue { - eq := eventQueue{ - sink: sink, - events: list.New(), - listeners: listeners, - } - - eq.cond = sync.NewCond(&eq.mu) - go eq.run() - return &eq -} - -// Write accepts the events into the queue, only failing if the queue has -// beend closed. -func (eq *eventQueue) Write(events ...Event) error { - eq.mu.Lock() - defer eq.mu.Unlock() - - if eq.closed { - return ErrSinkClosed - } - - for _, listener := range eq.listeners { - listener.ingress(events...) - } - eq.events.PushBack(events) - eq.cond.Signal() // signal waiters - - return nil -} - -// Close shutsdown the event queue, flushing -func (eq *eventQueue) Close() error { - eq.mu.Lock() - defer eq.mu.Unlock() - - if eq.closed { - return fmt.Errorf("eventqueue: already closed") - } - - // set closed flag - eq.closed = true - eq.cond.Signal() // signal flushes queue - eq.cond.Wait() // wait for signal from last flush - - return eq.sink.Close() -} - -// run is the main goroutine to flush events to the target sink. -func (eq *eventQueue) run() { - for { - block := eq.next() - - if block == nil { - return // nil block means event queue is closed. - } - - if err := eq.sink.Write(block...); err != nil { - logrus.Warnf("eventqueue: error writing events to %v, these events will be lost: %v", eq.sink, err) - } - - for _, listener := range eq.listeners { - listener.egress(block...) - } - } -} - -// next encompasses the critical section of the run loop. When the queue is -// empty, it will block on the condition. If new data arrives, it will wake -// and return a block. When closed, a nil slice will be returned. -func (eq *eventQueue) next() []Event { - eq.mu.Lock() - defer eq.mu.Unlock() - - for eq.events.Len() < 1 { - if eq.closed { - eq.cond.Broadcast() - return nil - } - - eq.cond.Wait() - } - - front := eq.events.Front() - block := front.Value.([]Event) - eq.events.Remove(front) - - return block -} - -// retryingSink retries the write until success or an ErrSinkClosed is -// returned. Underlying sink must have p > 0 of succeeding or the sink will -// block. Internally, it is a circuit breaker retries to manage reset. -// Concurrent calls to a retrying sink are serialized through the sink, -// meaning that if one is in-flight, another will not proceed. -type retryingSink struct { - mu sync.Mutex - sink Sink - closed bool - - // circuit breaker heuristics - failures struct { - threshold int - recent int - last time.Time - backoff time.Duration // time after which we retry after failure. - } -} - -type retryingSinkListener interface { - active(events ...Event) - retry(events ...Event) -} - -// TODO(stevvooe): We are using circuit break here, which actually doesn't -// make a whole lot of sense for this use case, since we always retry. Move -// this to use bounded exponential backoff. - -// newRetryingSink returns a sink that will retry writes to a sink, backing -// off on failure. Parameters threshold and backoff adjust the behavior of the -// circuit breaker. -func newRetryingSink(sink Sink, threshold int, backoff time.Duration) *retryingSink { - rs := &retryingSink{ - sink: sink, - } - rs.failures.threshold = threshold - rs.failures.backoff = backoff - - return rs -} - -// Write attempts to flush the events to the downstream sink until it succeeds -// or the sink is closed. -func (rs *retryingSink) Write(events ...Event) error { - rs.mu.Lock() - defer rs.mu.Unlock() - -retry: - - if rs.closed { - return ErrSinkClosed - } - - if !rs.proceed() { - logrus.Warnf("%v encountered too many errors, backing off", rs.sink) - rs.wait(rs.failures.backoff) - goto retry - } - - if err := rs.write(events...); err != nil { - if err == ErrSinkClosed { - // terminal! - return err - } - - logrus.Errorf("retryingsink: error writing events: %v, retrying", err) - goto retry - } - - return nil -} - -// Close closes the sink and the underlying sink. -func (rs *retryingSink) Close() error { - rs.mu.Lock() - defer rs.mu.Unlock() - - if rs.closed { - return fmt.Errorf("retryingsink: already closed") - } - - rs.closed = true - return rs.sink.Close() -} - -// write provides a helper that dispatches failure and success properly. Used -// by write as the single-flight write call. -func (rs *retryingSink) write(events ...Event) error { - if err := rs.sink.Write(events...); err != nil { - rs.failure() - return err - } - - rs.reset() - return nil -} - -// wait backoff time against the sink, unlocking so others can proceed. Should -// only be called by methods that currently have the mutex. -func (rs *retryingSink) wait(backoff time.Duration) { - rs.mu.Unlock() - defer rs.mu.Lock() - - // backoff here - time.Sleep(backoff) -} - -// reset marks a successful call. -func (rs *retryingSink) reset() { - rs.failures.recent = 0 - rs.failures.last = time.Time{} -} - -// failure records a failure. -func (rs *retryingSink) failure() { - rs.failures.recent++ - rs.failures.last = time.Now().UTC() -} - -// proceed returns true if the call should proceed based on circuit breaker -// heuristics. -func (rs *retryingSink) proceed() bool { - return rs.failures.recent < rs.failures.threshold || - time.Now().UTC().After(rs.failures.last.Add(rs.failures.backoff)) -} diff --git a/vendor/github.com/docker/distribution/notifications/sinks_test.go b/vendor/github.com/docker/distribution/notifications/sinks_test.go deleted file mode 100644 index 89756a9990..0000000000 --- a/vendor/github.com/docker/distribution/notifications/sinks_test.go +++ /dev/null @@ -1,223 +0,0 @@ -package notifications - -import ( - "fmt" - "math/rand" - "sync" - "time" - - "github.com/Sirupsen/logrus" - - "testing" -) - -func TestBroadcaster(t *testing.T) { - const nEvents = 1000 - var sinks []Sink - - for i := 0; i < 10; i++ { - sinks = append(sinks, &testSink{}) - } - - b := NewBroadcaster(sinks...) - - var block []Event - var wg sync.WaitGroup - for i := 1; i <= nEvents; i++ { - block = append(block, createTestEvent("push", "library/test", "blob")) - - if i%10 == 0 && i > 0 { - wg.Add(1) - go func(block ...Event) { - if err := b.Write(block...); err != nil { - t.Fatalf("error writing block of length %d: %v", len(block), err) - } - wg.Done() - }(block...) - - block = nil - } - } - - wg.Wait() // Wait until writes complete - checkClose(t, b) - - // Iterate through the sinks and check that they all have the expected length. - for _, sink := range sinks { - ts := sink.(*testSink) - ts.mu.Lock() - defer ts.mu.Unlock() - - if len(ts.events) != nEvents { - t.Fatalf("not all events ended up in testsink: len(testSink) == %d, not %d", len(ts.events), nEvents) - } - - if !ts.closed { - t.Fatalf("sink should have been closed") - } - } - -} - -func TestEventQueue(t *testing.T) { - const nevents = 1000 - var ts testSink - metrics := newSafeMetrics() - eq := newEventQueue( - // delayed sync simulates destination slower than channel comms - &delayedSink{ - Sink: &ts, - delay: time.Millisecond * 1, - }, metrics.eventQueueListener()) - - var wg sync.WaitGroup - var block []Event - for i := 1; i <= nevents; i++ { - block = append(block, createTestEvent("push", "library/test", "blob")) - if i%10 == 0 && i > 0 { - wg.Add(1) - go func(block ...Event) { - if err := eq.Write(block...); err != nil { - t.Fatalf("error writing event block: %v", err) - } - wg.Done() - }(block...) - - block = nil - } - } - - wg.Wait() - checkClose(t, eq) - - ts.mu.Lock() - defer ts.mu.Unlock() - metrics.Lock() - defer metrics.Unlock() - - if len(ts.events) != nevents { - t.Fatalf("events did not make it to the sink: %d != %d", len(ts.events), 1000) - } - - if !ts.closed { - t.Fatalf("sink should have been closed") - } - - if metrics.Events != nevents { - t.Fatalf("unexpected ingress count: %d != %d", metrics.Events, nevents) - } - - if metrics.Pending != 0 { - t.Fatalf("unexpected egress count: %d != %d", metrics.Pending, 0) - } -} - -func TestRetryingSink(t *testing.T) { - - // Make a sync that fails most of the time, ensuring that all the events - // make it through. - var ts testSink - flaky := &flakySink{ - rate: 1.0, // start out always failing. - Sink: &ts, - } - s := newRetryingSink(flaky, 3, 10*time.Millisecond) - - var wg sync.WaitGroup - var block []Event - for i := 1; i <= 100; i++ { - block = append(block, createTestEvent("push", "library/test", "blob")) - - // Above 50, set the failure rate lower - if i > 50 { - s.mu.Lock() - flaky.rate = 0.90 - s.mu.Unlock() - } - - if i%10 == 0 && i > 0 { - wg.Add(1) - go func(block ...Event) { - defer wg.Done() - if err := s.Write(block...); err != nil { - t.Fatalf("error writing event block: %v", err) - } - }(block...) - - block = nil - } - } - - wg.Wait() - checkClose(t, s) - - ts.mu.Lock() - defer ts.mu.Unlock() - - if len(ts.events) != 100 { - t.Fatalf("events not propagated: %d != %d", len(ts.events), 100) - } -} - -type testSink struct { - events []Event - mu sync.Mutex - closed bool -} - -func (ts *testSink) Write(events ...Event) error { - ts.mu.Lock() - defer ts.mu.Unlock() - ts.events = append(ts.events, events...) - return nil -} - -func (ts *testSink) Close() error { - ts.mu.Lock() - defer ts.mu.Unlock() - ts.closed = true - - logrus.Infof("closing testSink") - return nil -} - -type delayedSink struct { - Sink - delay time.Duration -} - -func (ds *delayedSink) Write(events ...Event) error { - time.Sleep(ds.delay) - return ds.Sink.Write(events...) -} - -type flakySink struct { - Sink - rate float64 -} - -func (fs *flakySink) Write(events ...Event) error { - if rand.Float64() < fs.rate { - return fmt.Errorf("error writing %d events", len(events)) - } - - return fs.Sink.Write(events...) -} - -func checkClose(t *testing.T, sink Sink) { - if err := sink.Close(); err != nil { - t.Fatalf("unexpected error closing: %v", err) - } - - // second close should not crash but should return an error. - if err := sink.Close(); err == nil { - t.Fatalf("no error on double close") - } - - // Write after closed should be an error - if err := sink.Write([]Event{}...); err == nil { - t.Fatalf("write after closed did not have an error") - } else if err != ErrSinkClosed { - t.Fatalf("error should be ErrSinkClosed") - } -} diff --git a/vendor/github.com/docker/distribution/project/dev-image/Dockerfile b/vendor/github.com/docker/distribution/project/dev-image/Dockerfile deleted file mode 100644 index 1e2a8471cf..0000000000 --- a/vendor/github.com/docker/distribution/project/dev-image/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ubuntu:14.04 - -ENV GOLANG_VERSION 1.4rc1 -ENV GOPATH /var/cache/drone -ENV GOROOT /usr/local/go -ENV PATH $PATH:$GOROOT/bin:$GOPATH/bin - -ENV LANG C -ENV LC_ALL C - -RUN apt-get update && apt-get install -y \ - wget ca-certificates git mercurial bzr \ - --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* - -RUN wget https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz --quiet && \ - tar -C /usr/local -xzf go$GOLANG_VERSION.linux-amd64.tar.gz && \ - rm go${GOLANG_VERSION}.linux-amd64.tar.gz - -RUN go get github.com/axw/gocov/gocov github.com/mattn/goveralls github.com/golang/lint/golint diff --git a/vendor/github.com/docker/distribution/project/hooks/README.md b/vendor/github.com/docker/distribution/project/hooks/README.md deleted file mode 100644 index eda886966c..0000000000 --- a/vendor/github.com/docker/distribution/project/hooks/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Git Hooks -========= - -To enforce valid and properly-formatted code, there is CI in place which runs `gofmt`, `golint`, and `go vet` against code in the repository. - -As an aid to prevent committing invalid code in the first place, a git pre-commit hook has been added to the repository, found in [pre-commit](./pre-commit). As it is impossible to automatically add linked hooks to a git repository, this hook should be linked into your `.git/hooks/pre-commit`, which can be done by running the `configure-hooks.sh` script in this directory. This script is the preferred method of configuring hooks, as it will be updated as more are added. \ No newline at end of file diff --git a/vendor/github.com/docker/distribution/project/hooks/configure-hooks.sh b/vendor/github.com/docker/distribution/project/hooks/configure-hooks.sh deleted file mode 100755 index 6afea8a136..0000000000 --- a/vendor/github.com/docker/distribution/project/hooks/configure-hooks.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -cd $(dirname $0) - -REPO_ROOT=$(git rev-parse --show-toplevel) -RESOLVE_REPO_ROOT_STATUS=$? -if [ "$RESOLVE_REPO_ROOT_STATUS" -ne "0" ]; then - echo -e "Unable to resolve repository root. Error:\n$REPO_ROOT" > /dev/stderr - exit $RESOLVE_REPO_ROOT_STATUS -fi - -set -e -set -x - -# Just in case the directory doesn't exist -mkdir -p $REPO_ROOT/.git/hooks - -ln -f -s $(pwd)/pre-commit $REPO_ROOT/.git/hooks/pre-commit \ No newline at end of file diff --git a/vendor/github.com/docker/distribution/project/hooks/pre-commit b/vendor/github.com/docker/distribution/project/hooks/pre-commit deleted file mode 100755 index 3ee2e913fa..0000000000 --- a/vendor/github.com/docker/distribution/project/hooks/pre-commit +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -REPO_ROOT=$(git rev-parse --show-toplevel) -RESOLVE_REPO_ROOT_STATUS=$? -if [ "$RESOLVE_REPO_ROOT_STATUS" -ne "0" ]; then - printf "Unable to resolve repository root. Error:\n%s\n" "$RESOLVE_REPO_ROOT_STATUS" > /dev/stderr - exit $RESOLVE_REPO_ROOT_STATUS -fi - -cd $REPO_ROOT - -GOFMT_ERRORS=$(gofmt -s -l . 2>&1) -if [ -n "$GOFMT_ERRORS" ]; then - printf 'gofmt failed for the following files:\n%s\n\nPlease run "gofmt -s -l ." in the root of your repository before committing\n' "$GOFMT_ERRORS" > /dev/stderr - exit 1 -fi - -GOLINT_ERRORS=$(golint ./... 2>&1) -if [ -n "$GOLINT_ERRORS" ]; then - printf "golint failed with the following errors:\n%s\n" "$GOLINT_ERRORS" > /dev/stderr - exit 1 -fi - -GOVET_ERRORS=$(go vet ./... 2>&1) -GOVET_STATUS=$? -if [ "$GOVET_STATUS" -ne "0" ]; then - printf "govet failed with the following errors:\n%s\n" "$GOVET_ERRORS" > /dev/stderr - exit $GOVET_STATUS -fi diff --git a/vendor/github.com/docker/distribution/reference/reference.go b/vendor/github.com/docker/distribution/reference/reference.go deleted file mode 100644 index bb09fa25da..0000000000 --- a/vendor/github.com/docker/distribution/reference/reference.go +++ /dev/null @@ -1,334 +0,0 @@ -// 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/reference_test.go b/vendor/github.com/docker/distribution/reference/reference_test.go deleted file mode 100644 index cde1a7a2e2..0000000000 --- a/vendor/github.com/docker/distribution/reference/reference_test.go +++ /dev/null @@ -1,535 +0,0 @@ -package reference - -import ( - "encoding/json" - "strconv" - "strings" - "testing" - - "github.com/docker/distribution/digest" -) - -func TestReferenceParse(t *testing.T) { - // referenceTestcases is a unified set of testcases for - // testing the parsing of references - referenceTestcases := []struct { - // input is the repository name or name component testcase - input string - // err is the error expected from Parse, or nil - err error - // repository is the string representation for the reference - repository string - // hostname is the hostname expected in the reference - hostname string - // tag is the tag for the reference - tag string - // digest is the digest for the reference (enforces digest reference) - digest string - }{ - { - input: "test_com", - repository: "test_com", - }, - { - input: "test.com:tag", - repository: "test.com", - tag: "tag", - }, - { - input: "test.com:5000", - repository: "test.com", - tag: "5000", - }, - { - input: "test.com/repo:tag", - hostname: "test.com", - repository: "test.com/repo", - tag: "tag", - }, - { - input: "test:5000/repo", - hostname: "test:5000", - repository: "test:5000/repo", - }, - { - input: "test:5000/repo:tag", - hostname: "test:5000", - repository: "test:5000/repo", - tag: "tag", - }, - { - input: "test:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - hostname: "test:5000", - repository: "test:5000/repo", - digest: "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - }, - { - input: "test:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - hostname: "test:5000", - repository: "test:5000/repo", - tag: "tag", - digest: "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - }, - { - input: "test:5000/repo", - hostname: "test:5000", - repository: "test:5000/repo", - }, - { - input: "", - err: ErrNameEmpty, - }, - { - input: ":justtag", - err: ErrReferenceInvalidFormat, - }, - { - input: "@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - err: ErrReferenceInvalidFormat, - }, - { - input: "repo@sha256:ffffffffffffffffffffffffffffffffff", - err: digest.ErrDigestInvalidLength, - }, - { - input: "validname@invaliddigest:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - err: digest.ErrDigestUnsupported, - }, - { - input: strings.Repeat("a/", 128) + "a:tag", - err: ErrNameTooLong, - }, - { - input: strings.Repeat("a/", 127) + "a:tag-puts-this-over-max", - hostname: "a", - repository: strings.Repeat("a/", 127) + "a", - tag: "tag-puts-this-over-max", - }, - { - input: "aa/asdf$$^/aa", - err: ErrReferenceInvalidFormat, - }, - { - input: "sub-dom1.foo.com/bar/baz/quux", - hostname: "sub-dom1.foo.com", - repository: "sub-dom1.foo.com/bar/baz/quux", - }, - { - input: "sub-dom1.foo.com/bar/baz/quux:some-long-tag", - hostname: "sub-dom1.foo.com", - repository: "sub-dom1.foo.com/bar/baz/quux", - tag: "some-long-tag", - }, - { - input: "b.gcr.io/test.example.com/my-app:test.example.com", - hostname: "b.gcr.io", - repository: "b.gcr.io/test.example.com/my-app", - tag: "test.example.com", - }, - { - input: "xn--n3h.com/myimage:xn--n3h.com", // ☃.com in punycode - hostname: "xn--n3h.com", - repository: "xn--n3h.com/myimage", - tag: "xn--n3h.com", - }, - { - input: "xn--7o8h.com/myimage:xn--7o8h.com@sha512:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", // 🐳.com in punycode - hostname: "xn--7o8h.com", - repository: "xn--7o8h.com/myimage", - tag: "xn--7o8h.com", - digest: "sha512:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - }, - { - input: "foo_bar.com:8080", - repository: "foo_bar.com", - tag: "8080", - }, - { - input: "foo/foo_bar.com:8080", - hostname: "foo", - repository: "foo/foo_bar.com", - tag: "8080", - }, - } - for _, testcase := range referenceTestcases { - failf := func(format string, v ...interface{}) { - t.Logf(strconv.Quote(testcase.input)+": "+format, v...) - t.Fail() - } - - repo, err := Parse(testcase.input) - if testcase.err != nil { - if err == nil { - failf("missing expected error: %v", testcase.err) - } else if testcase.err != err { - failf("mismatched error: got %v, expected %v", err, testcase.err) - } - continue - } else if err != nil { - failf("unexpected parse error: %v", err) - continue - } - if repo.String() != testcase.input { - failf("mismatched repo: got %q, expected %q", repo.String(), testcase.input) - } - - if named, ok := repo.(Named); ok { - if named.Name() != testcase.repository { - failf("unexpected repository: got %q, expected %q", named.Name(), testcase.repository) - } - hostname, _ := SplitHostname(named) - if hostname != testcase.hostname { - failf("unexpected hostname: got %q, expected %q", hostname, testcase.hostname) - } - } else if testcase.repository != "" || testcase.hostname != "" { - failf("expected named type, got %T", repo) - } - - tagged, ok := repo.(Tagged) - if testcase.tag != "" { - if ok { - if tagged.Tag() != testcase.tag { - failf("unexpected tag: got %q, expected %q", tagged.Tag(), testcase.tag) - } - } else { - failf("expected tagged type, got %T", repo) - } - } else if ok { - failf("unexpected tagged type") - } - - digested, ok := repo.(Digested) - if testcase.digest != "" { - if ok { - if digested.Digest().String() != testcase.digest { - failf("unexpected digest: got %q, expected %q", digested.Digest().String(), testcase.digest) - } - } else { - failf("expected digested type, got %T", repo) - } - } else if ok { - failf("unexpected digested type") - } - - } -} - -// TestWithNameFailure tests cases where WithName should fail. Cases where it -// should succeed are covered by TestSplitHostname, below. -func TestWithNameFailure(t *testing.T) { - testcases := []struct { - input string - err error - }{ - { - input: "", - err: ErrNameEmpty, - }, - { - input: ":justtag", - err: ErrReferenceInvalidFormat, - }, - { - input: "@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - err: ErrReferenceInvalidFormat, - }, - { - input: "validname@invaliddigest:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - err: ErrReferenceInvalidFormat, - }, - { - input: strings.Repeat("a/", 128) + "a:tag", - err: ErrNameTooLong, - }, - { - input: "aa/asdf$$^/aa", - err: ErrReferenceInvalidFormat, - }, - } - for _, testcase := range testcases { - failf := func(format string, v ...interface{}) { - t.Logf(strconv.Quote(testcase.input)+": "+format, v...) - t.Fail() - } - - _, err := WithName(testcase.input) - if err == nil { - failf("no error parsing name. expected: %s", testcase.err) - } - } -} - -func TestSplitHostname(t *testing.T) { - testcases := []struct { - input string - hostname string - name string - }{ - { - input: "test.com/foo", - hostname: "test.com", - name: "foo", - }, - { - input: "test_com/foo", - hostname: "", - name: "test_com/foo", - }, - { - input: "test:8080/foo", - hostname: "test:8080", - name: "foo", - }, - { - input: "test.com:8080/foo", - hostname: "test.com:8080", - name: "foo", - }, - { - input: "test-com:8080/foo", - hostname: "test-com:8080", - name: "foo", - }, - { - input: "xn--n3h.com:18080/foo", - hostname: "xn--n3h.com:18080", - name: "foo", - }, - } - for _, testcase := range testcases { - failf := func(format string, v ...interface{}) { - t.Logf(strconv.Quote(testcase.input)+": "+format, v...) - t.Fail() - } - - named, err := WithName(testcase.input) - if err != nil { - failf("error parsing name: %s", err) - } - hostname, name := SplitHostname(named) - if hostname != testcase.hostname { - failf("unexpected hostname: got %q, expected %q", hostname, testcase.hostname) - } - if name != testcase.name { - failf("unexpected name: got %q, expected %q", name, testcase.name) - } - } -} - -type serializationType struct { - Description string - Field Field -} - -func TestSerialization(t *testing.T) { - testcases := []struct { - description string - input string - name string - tag string - digest string - err error - }{ - { - description: "empty value", - err: ErrNameEmpty, - }, - { - description: "just a name", - input: "example.com:8000/named", - name: "example.com:8000/named", - }, - { - description: "name with a tag", - input: "example.com:8000/named:tagged", - name: "example.com:8000/named", - tag: "tagged", - }, - { - description: "name with digest", - input: "other.com/named@sha256:1234567890098765432112345667890098765432112345667890098765432112", - name: "other.com/named", - digest: "sha256:1234567890098765432112345667890098765432112345667890098765432112", - }, - } - for _, testcase := range testcases { - failf := func(format string, v ...interface{}) { - t.Logf(strconv.Quote(testcase.input)+": "+format, v...) - t.Fail() - } - - m := map[string]string{ - "Description": testcase.description, - "Field": testcase.input, - } - b, err := json.Marshal(m) - if err != nil { - failf("error marshalling: %v", err) - } - t := serializationType{} - - if err := json.Unmarshal(b, &t); err != nil { - if testcase.err == nil { - failf("error unmarshalling: %v", err) - } - if err != testcase.err { - failf("wrong error, expected %v, got %v", testcase.err, err) - } - - continue - } else if testcase.err != nil { - failf("expected error unmarshalling: %v", testcase.err) - } - - if t.Description != testcase.description { - failf("wrong description, expected %q, got %q", testcase.description, t.Description) - } - - ref := t.Field.Reference() - - if named, ok := ref.(Named); ok { - if named.Name() != testcase.name { - failf("unexpected repository: got %q, expected %q", named.Name(), testcase.name) - } - } else if testcase.name != "" { - failf("expected named type, got %T", ref) - } - - tagged, ok := ref.(Tagged) - if testcase.tag != "" { - if ok { - if tagged.Tag() != testcase.tag { - failf("unexpected tag: got %q, expected %q", tagged.Tag(), testcase.tag) - } - } else { - failf("expected tagged type, got %T", ref) - } - } else if ok { - failf("unexpected tagged type") - } - - digested, ok := ref.(Digested) - if testcase.digest != "" { - if ok { - if digested.Digest().String() != testcase.digest { - failf("unexpected digest: got %q, expected %q", digested.Digest().String(), testcase.digest) - } - } else { - failf("expected digested type, got %T", ref) - } - } else if ok { - failf("unexpected digested type") - } - - t = serializationType{ - Description: testcase.description, - Field: AsField(ref), - } - - b2, err := json.Marshal(t) - if err != nil { - failf("error marshing serialization type: %v", err) - } - - if string(b) != string(b2) { - failf("unexpected serialized value: expected %q, got %q", string(b), string(b2)) - } - - // Ensure t.Field is not implementing "Reference" directly, getting - // around the Reference type system - var fieldInterface interface{} = t.Field - if _, ok := fieldInterface.(Reference); ok { - failf("field should not implement Reference interface") - } - - } -} - -func TestWithTag(t *testing.T) { - testcases := []struct { - name string - tag string - combined string - }{ - { - name: "test.com/foo", - tag: "tag", - combined: "test.com/foo:tag", - }, - { - name: "foo", - tag: "tag2", - combined: "foo:tag2", - }, - { - name: "test.com:8000/foo", - tag: "tag4", - combined: "test.com:8000/foo:tag4", - }, - { - name: "test.com:8000/foo", - tag: "TAG5", - combined: "test.com:8000/foo:TAG5", - }, - } - for _, testcase := range testcases { - failf := func(format string, v ...interface{}) { - t.Logf(strconv.Quote(testcase.name)+": "+format, v...) - t.Fail() - } - - named, err := WithName(testcase.name) - if err != nil { - failf("error parsing name: %s", err) - } - tagged, err := WithTag(named, testcase.tag) - if err != nil { - failf("WithTag failed: %s", err) - } - if tagged.String() != testcase.combined { - failf("unexpected: got %q, expected %q", tagged.String(), testcase.combined) - } - } -} - -func TestWithDigest(t *testing.T) { - testcases := []struct { - name string - digest digest.Digest - combined string - }{ - { - name: "test.com/foo", - digest: "sha256:1234567890098765432112345667890098765", - combined: "test.com/foo@sha256:1234567890098765432112345667890098765", - }, - { - name: "foo", - digest: "sha256:1234567890098765432112345667890098765", - combined: "foo@sha256:1234567890098765432112345667890098765", - }, - { - name: "test.com:8000/foo", - digest: "sha256:1234567890098765432112345667890098765", - combined: "test.com:8000/foo@sha256:1234567890098765432112345667890098765", - }, - } - for _, testcase := range testcases { - failf := func(format string, v ...interface{}) { - t.Logf(strconv.Quote(testcase.name)+": "+format, v...) - t.Fail() - } - - named, err := WithName(testcase.name) - if err != nil { - failf("error parsing name: %s", err) - } - digested, err := WithDigest(named, testcase.digest) - if err != nil { - failf("WithDigest failed: %s", err) - } - if digested.String() != testcase.combined { - failf("unexpected: got %q, expected %q", digested.String(), testcase.combined) - } - } -} diff --git a/vendor/github.com/docker/distribution/reference/regexp.go b/vendor/github.com/docker/distribution/reference/regexp.go deleted file mode 100644 index 9a7d366bc8..0000000000 --- a/vendor/github.com/docker/distribution/reference/regexp.go +++ /dev/null @@ -1,124 +0,0 @@ -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/docker/distribution/reference/regexp_test.go b/vendor/github.com/docker/distribution/reference/regexp_test.go deleted file mode 100644 index 2ec39377af..0000000000 --- a/vendor/github.com/docker/distribution/reference/regexp_test.go +++ /dev/null @@ -1,489 +0,0 @@ -package reference - -import ( - "regexp" - "strings" - "testing" -) - -type regexpMatch struct { - input string - match bool - subs []string -} - -func checkRegexp(t *testing.T, r *regexp.Regexp, m regexpMatch) { - matches := r.FindStringSubmatch(m.input) - if m.match && matches != nil { - if len(matches) != (r.NumSubexp()+1) || matches[0] != m.input { - t.Fatalf("Bad match result %#v for %q", matches, m.input) - } - if len(matches) < (len(m.subs) + 1) { - t.Errorf("Expected %d sub matches, only have %d for %q", len(m.subs), len(matches)-1, m.input) - } - for i := range m.subs { - if m.subs[i] != matches[i+1] { - t.Errorf("Unexpected submatch %d: %q, expected %q for %q", i+1, matches[i+1], m.subs[i], m.input) - } - } - } else if m.match { - t.Errorf("Expected match for %q", m.input) - } else if matches != nil { - t.Errorf("Unexpected match for %q", m.input) - } -} - -func TestHostRegexp(t *testing.T) { - hostcases := []regexpMatch{ - { - input: "test.com", - match: true, - }, - { - input: "test.com:10304", - match: true, - }, - { - input: "test.com:http", - match: false, - }, - { - input: "localhost", - match: true, - }, - { - input: "localhost:8080", - match: true, - }, - { - input: "a", - match: true, - }, - { - input: "a.b", - match: true, - }, - { - input: "ab.cd.com", - match: true, - }, - { - input: "a-b.com", - match: true, - }, - { - input: "-ab.com", - match: false, - }, - { - input: "ab-.com", - match: false, - }, - { - input: "ab.c-om", - match: true, - }, - { - input: "ab.-com", - match: false, - }, - { - input: "ab.com-", - match: false, - }, - { - input: "0101.com", - match: true, // TODO(dmcgowan): valid if this should be allowed - }, - { - input: "001a.com", - match: true, - }, - { - input: "b.gbc.io:443", - match: true, - }, - { - input: "b.gbc.io", - match: true, - }, - { - input: "xn--n3h.com", // ☃.com in punycode - match: true, - }, - { - input: "Asdf.com", // uppercase character - match: true, - }, - } - r := regexp.MustCompile(`^` + hostnameRegexp.String() + `$`) - for i := range hostcases { - checkRegexp(t, r, hostcases[i]) - } -} - -func TestFullNameRegexp(t *testing.T) { - if anchoredNameRegexp.NumSubexp() != 2 { - t.Fatalf("anchored name regexp should have two submatches: %v, %v != 2", - anchoredNameRegexp, anchoredNameRegexp.NumSubexp()) - } - - testcases := []regexpMatch{ - { - input: "", - match: false, - }, - { - input: "short", - match: true, - subs: []string{"", "short"}, - }, - { - input: "simple/name", - match: true, - subs: []string{"simple", "name"}, - }, - { - input: "library/ubuntu", - match: true, - subs: []string{"library", "ubuntu"}, - }, - { - input: "docker/stevvooe/app", - match: true, - subs: []string{"docker", "stevvooe/app"}, - }, - { - input: "aa/aa/aa/aa/aa/aa/aa/aa/aa/bb/bb/bb/bb/bb/bb", - match: true, - subs: []string{"aa", "aa/aa/aa/aa/aa/aa/aa/aa/bb/bb/bb/bb/bb/bb"}, - }, - { - input: "aa/aa/bb/bb/bb", - match: true, - subs: []string{"aa", "aa/bb/bb/bb"}, - }, - { - input: "a/a/a/a", - match: true, - subs: []string{"a", "a/a/a"}, - }, - { - input: "a/a/a/a/", - match: false, - }, - { - input: "a//a/a", - match: false, - }, - { - input: "a", - match: true, - subs: []string{"", "a"}, - }, - { - input: "a/aa", - match: true, - subs: []string{"a", "aa"}, - }, - { - input: "a/aa/a", - match: true, - subs: []string{"a", "aa/a"}, - }, - { - input: "foo.com", - match: true, - subs: []string{"", "foo.com"}, - }, - { - input: "foo.com/", - match: false, - }, - { - input: "foo.com:8080/bar", - match: true, - subs: []string{"foo.com:8080", "bar"}, - }, - { - input: "foo.com:http/bar", - match: false, - }, - { - input: "foo.com/bar", - match: true, - subs: []string{"foo.com", "bar"}, - }, - { - input: "foo.com/bar/baz", - match: true, - subs: []string{"foo.com", "bar/baz"}, - }, - { - input: "localhost:8080/bar", - match: true, - subs: []string{"localhost:8080", "bar"}, - }, - { - input: "sub-dom1.foo.com/bar/baz/quux", - match: true, - subs: []string{"sub-dom1.foo.com", "bar/baz/quux"}, - }, - { - input: "blog.foo.com/bar/baz", - match: true, - subs: []string{"blog.foo.com", "bar/baz"}, - }, - { - input: "a^a", - match: false, - }, - { - input: "aa/asdf$$^/aa", - match: false, - }, - { - input: "asdf$$^/aa", - match: false, - }, - { - input: "aa-a/a", - match: true, - subs: []string{"aa-a", "a"}, - }, - { - input: strings.Repeat("a/", 128) + "a", - match: true, - subs: []string{"a", strings.Repeat("a/", 127) + "a"}, - }, - { - input: "a-/a/a/a", - match: false, - }, - { - input: "foo.com/a-/a/a", - match: false, - }, - { - input: "-foo/bar", - match: false, - }, - { - input: "foo/bar-", - match: false, - }, - { - input: "foo-/bar", - match: false, - }, - { - input: "foo/-bar", - match: false, - }, - { - input: "_foo/bar", - match: false, - }, - { - input: "foo_bar", - match: true, - subs: []string{"", "foo_bar"}, - }, - { - input: "foo_bar.com", - match: true, - subs: []string{"", "foo_bar.com"}, - }, - { - input: "foo_bar.com:8080", - match: false, - }, - { - input: "foo_bar.com:8080/app", - match: false, - }, - { - input: "foo.com/foo_bar", - match: true, - subs: []string{"foo.com", "foo_bar"}, - }, - { - input: "____/____", - match: false, - }, - { - input: "_docker/_docker", - match: false, - }, - { - input: "docker_/docker_", - match: false, - }, - { - input: "b.gcr.io/test.example.com/my-app", - match: true, - subs: []string{"b.gcr.io", "test.example.com/my-app"}, - }, - { - input: "xn--n3h.com/myimage", // ☃.com in punycode - match: true, - subs: []string{"xn--n3h.com", "myimage"}, - }, - { - input: "xn--7o8h.com/myimage", // 🐳.com in punycode - match: true, - subs: []string{"xn--7o8h.com", "myimage"}, - }, - { - input: "example.com/xn--7o8h.com/myimage", // 🐳.com in punycode - match: true, - subs: []string{"example.com", "xn--7o8h.com/myimage"}, - }, - { - input: "example.com/some_separator__underscore/myimage", - match: true, - subs: []string{"example.com", "some_separator__underscore/myimage"}, - }, - { - input: "example.com/__underscore/myimage", - match: false, - }, - { - input: "example.com/..dots/myimage", - match: false, - }, - { - input: "example.com/.dots/myimage", - match: false, - }, - { - input: "example.com/nodouble..dots/myimage", - match: false, - }, - { - input: "example.com/nodouble..dots/myimage", - match: false, - }, - { - input: "docker./docker", - match: false, - }, - { - input: ".docker/docker", - match: false, - }, - { - input: "docker-/docker", - match: false, - }, - { - input: "-docker/docker", - match: false, - }, - { - input: "do..cker/docker", - match: false, - }, - { - input: "do__cker:8080/docker", - match: false, - }, - { - input: "do__cker/docker", - match: true, - subs: []string{"", "do__cker/docker"}, - }, - { - input: "b.gcr.io/test.example.com/my-app", - match: true, - subs: []string{"b.gcr.io", "test.example.com/my-app"}, - }, - { - input: "registry.io/foo/project--id.module--name.ver---sion--name", - match: true, - subs: []string{"registry.io", "foo/project--id.module--name.ver---sion--name"}, - }, - { - input: "Asdf.com/foo/bar", // uppercase character in hostname - match: true, - }, - { - input: "Foo/FarB", // uppercase characters in remote name - match: false, - }, - } - for i := range testcases { - checkRegexp(t, anchoredNameRegexp, testcases[i]) - } -} - -func TestReferenceRegexp(t *testing.T) { - if ReferenceRegexp.NumSubexp() != 3 { - t.Fatalf("anchored name regexp should have three submatches: %v, %v != 3", - ReferenceRegexp, ReferenceRegexp.NumSubexp()) - } - - testcases := []regexpMatch{ - { - input: "registry.com:8080/myapp:tag", - match: true, - subs: []string{"registry.com:8080/myapp", "tag", ""}, - }, - { - input: "registry.com:8080/myapp@sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912", - match: true, - subs: []string{"registry.com:8080/myapp", "", "sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912"}, - }, - { - input: "registry.com:8080/myapp:tag2@sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912", - match: true, - subs: []string{"registry.com:8080/myapp", "tag2", "sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912"}, - }, - { - input: "registry.com:8080/myapp@sha256:badbadbadbad", - match: false, - }, - { - input: "registry.com:8080/myapp:invalid~tag", - match: false, - }, - { - input: "bad_hostname.com:8080/myapp:tag", - match: false, - }, - { - input:// localhost treated as name, missing tag with 8080 as tag - "localhost:8080@sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912", - match: true, - subs: []string{"localhost", "8080", "sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912"}, - }, - { - input: "localhost:8080/name@sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912", - match: true, - subs: []string{"localhost:8080/name", "", "sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912"}, - }, - { - input: "localhost:http/name@sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912", - match: false, - }, - { - // localhost will be treated as an image name without a host - input: "localhost@sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912", - match: true, - subs: []string{"localhost", "", "sha256:be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912"}, - }, - { - input: "registry.com:8080/myapp@bad", - match: false, - }, - { - input: "registry.com:8080/myapp@2bad", - match: false, // TODO(dmcgowan): Support this as valid - }, - } - - for i := range testcases { - checkRegexp(t, ReferenceRegexp, testcases[i]) - } - -} diff --git a/vendor/github.com/docker/distribution/registry.go b/vendor/github.com/docker/distribution/registry.go deleted file mode 100644 index 1ede31ebb6..0000000000 --- a/vendor/github.com/docker/distribution/registry.go +++ /dev/null @@ -1,97 +0,0 @@ -package distribution - -import ( - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" -) - -// Scope defines the set of items that match a namespace. -type Scope interface { - // Contains returns true if the name belongs to the namespace. - Contains(name string) bool -} - -type fullScope struct{} - -func (f fullScope) Contains(string) bool { - return true -} - -// GlobalScope represents the full namespace scope which contains -// all other scopes. -var GlobalScope = Scope(fullScope{}) - -// Namespace represents a collection of repositories, addressable by name. -// Generally, a namespace is backed by a set of one or more services, -// providing facilities such as registry access, trust, and indexing. -type Namespace interface { - // Scope describes the names that can be used with this Namespace. The - // global namespace will have a scope that matches all names. The scope - // effectively provides an identity for the namespace. - Scope() Scope - - // Repository should return a reference to the named repository. The - // registry may or may not have the repository but should always return a - // reference. - Repository(ctx context.Context, name reference.Named) (Repository, error) - - // Repositories fills 'repos' with a lexigraphically sorted catalog of repositories - // up to the size of 'repos' and returns the value 'n' for the number of entries - // which were filled. 'last' contains an offset in the catalog, and 'err' will be - // set to io.EOF if there are no more entries to obtain. - Repositories(ctx context.Context, repos []string, last string) (n int, err error) - - // Blobs returns a blob enumerator to access all blobs - Blobs() BlobEnumerator - - // BlobStatter returns a BlobStatter to control - BlobStatter() BlobStatter -} - -// RepositoryEnumerator describes an operation to enumerate repositories -type RepositoryEnumerator interface { - Enumerate(ctx context.Context, ingester func(string) error) error -} - -// ManifestServiceOption is a function argument for Manifest Service methods -type ManifestServiceOption interface { - Apply(ManifestService) error -} - -// WithTag allows a tag to be passed into Put -func WithTag(tag string) ManifestServiceOption { - return WithTagOption{tag} -} - -// WithTagOption holds a tag -type WithTagOption struct{ Tag string } - -// Apply conforms to the ManifestServiceOption interface -func (o WithTagOption) Apply(m ManifestService) error { - // no implementation - return nil -} - -// Repository is a named collection of manifests and layers. -type Repository interface { - // Named returns the name of the repository. - Named() reference.Named - - // Manifests returns a reference to this repository's manifest service. - // with the supplied options applied. - Manifests(ctx context.Context, options ...ManifestServiceOption) (ManifestService, error) - - // Blobs returns a reference to this repository's blob service. - Blobs(ctx context.Context) BlobStore - - // TODO(stevvooe): The above BlobStore return can probably be relaxed to - // be a BlobService for use with clients. This will allow such - // implementations to avoid implementing ServeBlob. - - // Tags returns a reference to this repositories tag service - Tags(ctx context.Context) TagService -} - -// TODO(stevvooe): Must add close methods to all these. May want to change the -// way instances are created to better reflect internal dependency -// relationships. diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/errors.go b/vendor/github.com/docker/distribution/registry/api/errcode/errors.go deleted file mode 100644 index 6d9bb4b62a..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/errcode/errors.go +++ /dev/null @@ -1,267 +0,0 @@ -package errcode - -import ( - "encoding/json" - "fmt" - "strings" -) - -// ErrorCoder is the base interface for ErrorCode and Error allowing -// users of each to just call ErrorCode to get the real ID of each -type ErrorCoder interface { - ErrorCode() ErrorCode -} - -// ErrorCode represents the error type. The errors are serialized via strings -// and the integer format may change and should *never* be exported. -type ErrorCode int - -var _ error = ErrorCode(0) - -// ErrorCode just returns itself -func (ec ErrorCode) ErrorCode() ErrorCode { - return ec -} - -// Error returns the ID/Value -func (ec ErrorCode) Error() string { - // NOTE(stevvooe): Cannot use message here since it may have unpopulated args. - return strings.ToLower(strings.Replace(ec.String(), "_", " ", -1)) -} - -// Descriptor returns the descriptor for the error code. -func (ec ErrorCode) Descriptor() ErrorDescriptor { - d, ok := errorCodeToDescriptors[ec] - - if !ok { - return ErrorCodeUnknown.Descriptor() - } - - return d -} - -// String returns the canonical identifier for this error code. -func (ec ErrorCode) String() string { - return ec.Descriptor().Value -} - -// Message returned the human-readable error message for this error code. -func (ec ErrorCode) Message() string { - return ec.Descriptor().Message -} - -// MarshalText encodes the receiver into UTF-8-encoded text and returns the -// result. -func (ec ErrorCode) MarshalText() (text []byte, err error) { - return []byte(ec.String()), nil -} - -// UnmarshalText decodes the form generated by MarshalText. -func (ec *ErrorCode) UnmarshalText(text []byte) error { - desc, ok := idToDescriptors[string(text)] - - if !ok { - desc = ErrorCodeUnknown.Descriptor() - } - - *ec = desc.Code - - return nil -} - -// WithMessage creates a new Error struct based on the passed-in info and -// overrides the Message property. -func (ec ErrorCode) WithMessage(message string) Error { - return Error{ - Code: ec, - Message: message, - } -} - -// WithDetail creates a new Error struct based on the passed-in info and -// set the Detail property appropriately -func (ec ErrorCode) WithDetail(detail interface{}) Error { - return Error{ - Code: ec, - Message: ec.Message(), - }.WithDetail(detail) -} - -// WithArgs creates a new Error struct and sets the Args slice -func (ec ErrorCode) WithArgs(args ...interface{}) Error { - return Error{ - Code: ec, - Message: ec.Message(), - }.WithArgs(args...) -} - -// Error provides a wrapper around ErrorCode with extra Details provided. -type Error struct { - Code ErrorCode `json:"code"` - Message string `json:"message"` - Detail interface{} `json:"detail,omitempty"` - - // TODO(duglin): See if we need an "args" property so we can do the - // variable substitution right before showing the message to the user -} - -var _ error = Error{} - -// ErrorCode returns the ID/Value of this Error -func (e Error) ErrorCode() ErrorCode { - return e.Code -} - -// Error returns a human readable representation of the error. -func (e Error) Error() string { - return fmt.Sprintf("%s: %s", e.Code.Error(), e.Message) -} - -// WithDetail will return a new Error, based on the current one, but with -// some Detail info added -func (e Error) WithDetail(detail interface{}) Error { - return Error{ - Code: e.Code, - Message: e.Message, - Detail: detail, - } -} - -// WithArgs uses the passed-in list of interface{} as the substitution -// variables in the Error's Message string, but returns a new Error -func (e Error) WithArgs(args ...interface{}) Error { - return Error{ - Code: e.Code, - Message: fmt.Sprintf(e.Code.Message(), args...), - Detail: e.Detail, - } -} - -// ErrorDescriptor provides relevant information about a given error code. -type ErrorDescriptor struct { - // Code is the error code that this descriptor describes. - Code ErrorCode - - // Value provides a unique, string key, often captilized with - // underscores, to identify the error code. This value is used as the - // keyed value when serializing api errors. - Value string - - // Message is a short, human readable decription of the error condition - // included in API responses. - Message string - - // Description provides a complete account of the errors purpose, suitable - // for use in documentation. - Description string - - // HTTPStatusCode provides the http status code that is associated with - // this error condition. - HTTPStatusCode int -} - -// ParseErrorCode returns the value by the string error code. -// `ErrorCodeUnknown` will be returned if the error is not known. -func ParseErrorCode(value string) ErrorCode { - ed, ok := idToDescriptors[value] - if ok { - return ed.Code - } - - return ErrorCodeUnknown -} - -// Errors provides the envelope for multiple errors and a few sugar methods -// for use within the application. -type Errors []error - -var _ error = Errors{} - -func (errs Errors) Error() string { - switch len(errs) { - case 0: - return "" - case 1: - return errs[0].Error() - default: - msg := "errors:\n" - for _, err := range errs { - msg += err.Error() + "\n" - } - return msg - } -} - -// Len returns the current number of errors. -func (errs Errors) Len() int { - return len(errs) -} - -// MarshalJSON converts slice of error, ErrorCode or Error into a -// slice of Error - then serializes -func (errs Errors) MarshalJSON() ([]byte, error) { - var tmpErrs struct { - Errors []Error `json:"errors,omitempty"` - } - - for _, daErr := range errs { - var err Error - - switch daErr.(type) { - case ErrorCode: - err = daErr.(ErrorCode).WithDetail(nil) - case Error: - err = daErr.(Error) - default: - err = ErrorCodeUnknown.WithDetail(daErr) - - } - - // If the Error struct was setup and they forgot to set the - // Message field (meaning its "") then grab it from the ErrCode - msg := err.Message - if msg == "" { - msg = err.Code.Message() - } - - tmpErrs.Errors = append(tmpErrs.Errors, Error{ - Code: err.Code, - Message: msg, - Detail: err.Detail, - }) - } - - return json.Marshal(tmpErrs) -} - -// UnmarshalJSON deserializes []Error and then converts it into slice of -// Error or ErrorCode -func (errs *Errors) UnmarshalJSON(data []byte) error { - var tmpErrs struct { - Errors []Error - } - - if err := json.Unmarshal(data, &tmpErrs); err != nil { - return err - } - - var newErrs Errors - for _, daErr := range tmpErrs.Errors { - // If Message is empty or exactly matches the Code's message string - // then just use the Code, no need for a full Error struct - if daErr.Detail == nil && (daErr.Message == "" || daErr.Message == daErr.Code.Message()) { - // Error's w/o details get converted to ErrorCode - newErrs = append(newErrs, daErr.Code) - } else { - // Error's w/ details are untouched - newErrs = append(newErrs, Error{ - Code: daErr.Code, - Message: daErr.Message, - Detail: daErr.Detail, - }) - } - } - - *errs = newErrs - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/errors_test.go b/vendor/github.com/docker/distribution/registry/api/errcode/errors_test.go deleted file mode 100644 index 54e7a736df..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/errcode/errors_test.go +++ /dev/null @@ -1,185 +0,0 @@ -package errcode - -import ( - "encoding/json" - "net/http" - "reflect" - "strings" - "testing" -) - -// TestErrorsManagement does a quick check of the Errors type to ensure that -// members are properly pushed and marshaled. -var ErrorCodeTest1 = Register("test.errors", ErrorDescriptor{ - Value: "TEST1", - Message: "test error 1", - Description: `Just a test message #1.`, - HTTPStatusCode: http.StatusInternalServerError, -}) - -var ErrorCodeTest2 = Register("test.errors", ErrorDescriptor{ - Value: "TEST2", - Message: "test error 2", - Description: `Just a test message #2.`, - HTTPStatusCode: http.StatusNotFound, -}) - -var ErrorCodeTest3 = Register("test.errors", ErrorDescriptor{ - Value: "TEST3", - Message: "Sorry %q isn't valid", - Description: `Just a test message #3.`, - HTTPStatusCode: http.StatusNotFound, -}) - -// TestErrorCodes ensures that error code format, mappings and -// marshaling/unmarshaling. round trips are stable. -func TestErrorCodes(t *testing.T) { - if len(errorCodeToDescriptors) == 0 { - t.Fatal("errors aren't loaded!") - } - - for ec, desc := range errorCodeToDescriptors { - if ec != desc.Code { - t.Fatalf("error code in descriptor isn't correct, %q != %q", ec, desc.Code) - } - - if idToDescriptors[desc.Value].Code != ec { - t.Fatalf("error code in idToDesc isn't correct, %q != %q", idToDescriptors[desc.Value].Code, ec) - } - - if ec.Message() != desc.Message { - t.Fatalf("ec.Message doesn't mtach desc.Message: %q != %q", ec.Message(), desc.Message) - } - - // Test (de)serializing the ErrorCode - p, err := json.Marshal(ec) - if err != nil { - t.Fatalf("couldn't marshal ec %v: %v", ec, err) - } - - if len(p) <= 0 { - t.Fatalf("expected content in marshaled before for error code %v", ec) - } - - // First, unmarshal to interface and ensure we have a string. - var ecUnspecified interface{} - if err := json.Unmarshal(p, &ecUnspecified); err != nil { - t.Fatalf("error unmarshaling error code %v: %v", ec, err) - } - - if _, ok := ecUnspecified.(string); !ok { - t.Fatalf("expected a string for error code %v on unmarshal got a %T", ec, ecUnspecified) - } - - // Now, unmarshal with the error code type and ensure they are equal - var ecUnmarshaled ErrorCode - if err := json.Unmarshal(p, &ecUnmarshaled); err != nil { - t.Fatalf("error unmarshaling error code %v: %v", ec, err) - } - - if ecUnmarshaled != ec { - t.Fatalf("unexpected error code during error code marshal/unmarshal: %v != %v", ecUnmarshaled, ec) - } - - expectedErrorString := strings.ToLower(strings.Replace(ec.Descriptor().Value, "_", " ", -1)) - if ec.Error() != expectedErrorString { - t.Fatalf("unexpected return from %v.Error(): %q != %q", ec, ec.Error(), expectedErrorString) - } - } - -} - -func TestErrorsManagement(t *testing.T) { - var errs Errors - - errs = append(errs, ErrorCodeTest1) - errs = append(errs, ErrorCodeTest2.WithDetail( - map[string]interface{}{"digest": "sometestblobsumdoesntmatter"})) - errs = append(errs, ErrorCodeTest3.WithArgs("BOOGIE")) - errs = append(errs, ErrorCodeTest3.WithArgs("BOOGIE").WithDetail("data")) - - p, err := json.Marshal(errs) - - if err != nil { - t.Fatalf("error marashaling errors: %v", err) - } - - expectedJSON := `{"errors":[` + - `{"code":"TEST1","message":"test error 1"},` + - `{"code":"TEST2","message":"test error 2","detail":{"digest":"sometestblobsumdoesntmatter"}},` + - `{"code":"TEST3","message":"Sorry \"BOOGIE\" isn't valid"},` + - `{"code":"TEST3","message":"Sorry \"BOOGIE\" isn't valid","detail":"data"}` + - `]}` - - if string(p) != expectedJSON { - t.Fatalf("unexpected json:\ngot:\n%q\n\nexpected:\n%q", string(p), expectedJSON) - } - - // Now test the reverse - var unmarshaled Errors - if err := json.Unmarshal(p, &unmarshaled); err != nil { - t.Fatalf("unexpected error unmarshaling error envelope: %v", err) - } - - if !reflect.DeepEqual(unmarshaled, errs) { - t.Fatalf("errors not equal after round trip:\nunmarshaled:\n%#v\n\nerrs:\n%#v", unmarshaled, errs) - } - - // Test the arg substitution stuff - e1 := unmarshaled[3].(Error) - exp1 := `Sorry "BOOGIE" isn't valid` - if e1.Message != exp1 { - t.Fatalf("Wrong msg, got:\n%q\n\nexpected:\n%q", e1.Message, exp1) - } - - exp1 = "test3: " + exp1 - if e1.Error() != exp1 { - t.Fatalf("Error() didn't return the right string, got:%s\nexpected:%s", e1.Error(), exp1) - } - - // Test again with a single value this time - errs = Errors{ErrorCodeUnknown} - expectedJSON = "{\"errors\":[{\"code\":\"UNKNOWN\",\"message\":\"unknown error\"}]}" - p, err = json.Marshal(errs) - - if err != nil { - t.Fatalf("error marashaling errors: %v", err) - } - - if string(p) != expectedJSON { - t.Fatalf("unexpected json: %q != %q", string(p), expectedJSON) - } - - // Now test the reverse - unmarshaled = nil - if err := json.Unmarshal(p, &unmarshaled); err != nil { - t.Fatalf("unexpected error unmarshaling error envelope: %v", err) - } - - if !reflect.DeepEqual(unmarshaled, errs) { - t.Fatalf("errors not equal after round trip:\nunmarshaled:\n%#v\n\nerrs:\n%#v", unmarshaled, errs) - } - - // Verify that calling WithArgs() more than once does the right thing. - // Meaning creates a new Error and uses the ErrorCode Message - e1 = ErrorCodeTest3.WithArgs("test1") - e2 := e1.WithArgs("test2") - if &e1 == &e2 { - t.Fatalf("args: e2 and e1 should not be the same, but they are") - } - if e2.Message != `Sorry "test2" isn't valid` { - t.Fatalf("e2 had wrong message: %q", e2.Message) - } - - // Verify that calling WithDetail() more than once does the right thing. - // Meaning creates a new Error and overwrites the old detail field - e1 = ErrorCodeTest3.WithDetail("stuff1") - e2 = e1.WithDetail("stuff2") - if &e1 == &e2 { - t.Fatalf("detail: e2 and e1 should not be the same, but they are") - } - if e2.Detail != `stuff2` { - t.Fatalf("e2 had wrong detail: %q", e2.Detail) - } - -} diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/handler.go b/vendor/github.com/docker/distribution/registry/api/errcode/handler.go deleted file mode 100644 index 49a64a86eb..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/errcode/handler.go +++ /dev/null @@ -1,44 +0,0 @@ -package errcode - -import ( - "encoding/json" - "net/http" -) - -// ServeJSON attempts to serve the errcode in a JSON envelope. It marshals err -// and sets the content-type header to 'application/json'. It will handle -// ErrorCoder and Errors, and if necessary will create an envelope. -func ServeJSON(w http.ResponseWriter, err error) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - var sc int - - switch errs := err.(type) { - case Errors: - if len(errs) < 1 { - break - } - - if err, ok := errs[0].(ErrorCoder); ok { - sc = err.ErrorCode().Descriptor().HTTPStatusCode - } - case ErrorCoder: - sc = errs.ErrorCode().Descriptor().HTTPStatusCode - err = Errors{err} // create an envelope. - default: - // We just have an unhandled error type, so just place in an envelope - // and move along. - err = Errors{err} - } - - if sc == 0 { - sc = http.StatusInternalServerError - } - - w.WriteHeader(sc) - - if err := json.NewEncoder(w).Encode(err); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/register.go b/vendor/github.com/docker/distribution/registry/api/errcode/register.go deleted file mode 100644 index 01c34384b3..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/errcode/register.go +++ /dev/null @@ -1,128 +0,0 @@ -package errcode - -import ( - "fmt" - "net/http" - "sort" - "sync" -) - -var ( - errorCodeToDescriptors = map[ErrorCode]ErrorDescriptor{} - idToDescriptors = map[string]ErrorDescriptor{} - groupToDescriptors = map[string][]ErrorDescriptor{} -) - -var ( - // ErrorCodeUnknown is a generic error that can be used as a last - // resort if there is no situation-specific error message that can be used - ErrorCodeUnknown = Register("errcode", ErrorDescriptor{ - Value: "UNKNOWN", - Message: "unknown error", - Description: `Generic error returned when the error does not have an - API classification.`, - HTTPStatusCode: http.StatusInternalServerError, - }) - - // ErrorCodeUnsupported is returned when an operation is not supported. - ErrorCodeUnsupported = Register("errcode", ErrorDescriptor{ - Value: "UNSUPPORTED", - Message: "The operation is unsupported.", - Description: `The operation was unsupported due to a missing - implementation or invalid set of parameters.`, - HTTPStatusCode: http.StatusMethodNotAllowed, - }) - - // ErrorCodeUnauthorized is returned if a request requires - // authentication. - ErrorCodeUnauthorized = Register("errcode", ErrorDescriptor{ - Value: "UNAUTHORIZED", - Message: "authentication required", - Description: `The access controller was unable to authenticate - the client. Often this will be accompanied by a - Www-Authenticate HTTP response header indicating how to - authenticate.`, - HTTPStatusCode: http.StatusUnauthorized, - }) - - // ErrorCodeDenied is returned if a client does not have sufficient - // permission to perform an action. - ErrorCodeDenied = Register("errcode", ErrorDescriptor{ - Value: "DENIED", - Message: "requested access to the resource is denied", - Description: `The access controller denied access for the - operation on a resource.`, - HTTPStatusCode: http.StatusForbidden, - }) - - // ErrorCodeUnavailable provides a common error to report unavialability - // of a service or endpoint. - ErrorCodeUnavailable = Register("errcode", ErrorDescriptor{ - Value: "UNAVAILABLE", - Message: "service unavailable", - Description: "Returned when a service is not available", - HTTPStatusCode: http.StatusServiceUnavailable, - }) -) - -var nextCode = 1000 -var registerLock sync.Mutex - -// Register will make the passed-in error known to the environment and -// return a new ErrorCode -func Register(group string, descriptor ErrorDescriptor) ErrorCode { - registerLock.Lock() - defer registerLock.Unlock() - - descriptor.Code = ErrorCode(nextCode) - - if _, ok := idToDescriptors[descriptor.Value]; ok { - panic(fmt.Sprintf("ErrorValue %q is already registered", descriptor.Value)) - } - if _, ok := errorCodeToDescriptors[descriptor.Code]; ok { - panic(fmt.Sprintf("ErrorCode %v is already registered", descriptor.Code)) - } - - groupToDescriptors[group] = append(groupToDescriptors[group], descriptor) - errorCodeToDescriptors[descriptor.Code] = descriptor - idToDescriptors[descriptor.Value] = descriptor - - nextCode++ - return descriptor.Code -} - -type byValue []ErrorDescriptor - -func (a byValue) Len() int { return len(a) } -func (a byValue) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byValue) Less(i, j int) bool { return a[i].Value < a[j].Value } - -// GetGroupNames returns the list of Error group names that are registered -func GetGroupNames() []string { - keys := []string{} - - for k := range groupToDescriptors { - keys = append(keys, k) - } - sort.Strings(keys) - return keys -} - -// GetErrorCodeGroup returns the named group of error descriptors -func GetErrorCodeGroup(name string) []ErrorDescriptor { - desc := groupToDescriptors[name] - sort.Sort(byValue(desc)) - return desc -} - -// GetErrorAllDescriptors returns a slice of all ErrorDescriptors that are -// registered, irrespective of what group they're in -func GetErrorAllDescriptors() []ErrorDescriptor { - result := []ErrorDescriptor{} - - for _, group := range GetGroupNames() { - result = append(result, GetErrorCodeGroup(group)...) - } - sort.Sort(byValue(result)) - return result -} diff --git a/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go b/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go deleted file mode 100644 index 582799948a..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/descriptors.go +++ /dev/null @@ -1,1569 +0,0 @@ -package v2 - -import ( - "net/http" - "regexp" - - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/errcode" -) - -var ( - nameParameterDescriptor = ParameterDescriptor{ - Name: "name", - Type: "string", - Format: reference.NameRegexp.String(), - Required: true, - Description: `Name of the target repository.`, - } - - referenceParameterDescriptor = ParameterDescriptor{ - Name: "reference", - Type: "string", - Format: reference.TagRegexp.String(), - Required: true, - Description: `Tag or digest of the target manifest.`, - } - - uuidParameterDescriptor = ParameterDescriptor{ - Name: "uuid", - Type: "opaque", - Required: true, - Description: "A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.", - } - - digestPathParameter = ParameterDescriptor{ - Name: "digest", - Type: "path", - Required: true, - Format: digest.DigestRegexp.String(), - Description: `Digest of desired blob.`, - } - - hostHeader = ParameterDescriptor{ - Name: "Host", - Type: "string", - Description: "Standard HTTP Host Header. Should be set to the registry host.", - Format: "", - Examples: []string{"registry-1.docker.io"}, - } - - authHeader = ParameterDescriptor{ - Name: "Authorization", - Type: "string", - Description: "An RFC7235 compliant authorization header.", - Format: " ", - Examples: []string{"Bearer dGhpcyBpcyBhIGZha2UgYmVhcmVyIHRva2VuIQ=="}, - } - - authChallengeHeader = ParameterDescriptor{ - Name: "WWW-Authenticate", - Type: "string", - Description: "An RFC7235 compliant authentication challenge header.", - Format: ` realm="", ..."`, - Examples: []string{ - `Bearer realm="https://auth.docker.com/", service="registry.docker.com", scopes="repository:library/ubuntu:pull"`, - }, - } - - contentLengthZeroHeader = ParameterDescriptor{ - Name: "Content-Length", - Description: "The `Content-Length` header must be zero and the body must be empty.", - Type: "integer", - Format: "0", - } - - dockerUploadUUIDHeader = ParameterDescriptor{ - Name: "Docker-Upload-UUID", - Description: "Identifies the docker upload uuid for the current request.", - Type: "uuid", - Format: "", - } - - digestHeader = ParameterDescriptor{ - Name: "Docker-Content-Digest", - Description: "Digest of the targeted content for the request.", - Type: "digest", - Format: "", - } - - linkHeader = ParameterDescriptor{ - Name: "Link", - Type: "link", - Description: "RFC5988 compliant rel='next' with URL to next result set, if available", - Format: `<?n=&last=>; rel="next"`, - } - - paginationParameters = []ParameterDescriptor{ - { - Name: "n", - Type: "integer", - Description: "Limit the number of entries in each response. It not present, all entries will be returned.", - Format: "", - Required: false, - }, - { - Name: "last", - Type: "string", - Description: "Result set will include values lexically after last.", - Format: "", - Required: false, - }, - } - - unauthorizedResponseDescriptor = ResponseDescriptor{ - Name: "Authentication Required", - StatusCode: http.StatusUnauthorized, - Description: "The client is not authenticated.", - Headers: []ParameterDescriptor{ - authChallengeHeader, - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeUnauthorized, - }, - } - - repositoryNotFoundResponseDescriptor = ResponseDescriptor{ - Name: "No Such Repository Error", - StatusCode: http.StatusNotFound, - Description: "The repository is not known to the registry.", - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameUnknown, - }, - } - - deniedResponseDescriptor = ResponseDescriptor{ - Name: "Access Denied", - StatusCode: http.StatusForbidden, - Description: "The client does not have required access to the repository.", - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeDenied, - }, - } -) - -const ( - manifestBody = `{ - "name": , - "tag": , - "fsLayers": [ - { - "blobSum": "" - }, - ... - ] - ], - "history": , - "signature": -}` - - errorsBody = `{ - "errors:" [ - { - "code": , - "message": "", - "detail": ... - }, - ... - ] -}` - - unauthorizedErrorsBody = `{ - "errors:" [ - { - "code": "UNAUTHORIZED", - "message": "access to the requested resource is not authorized", - "detail": ... - }, - ... - ] -}` -) - -// APIDescriptor exports descriptions of the layout of the v2 registry API. -var APIDescriptor = struct { - // RouteDescriptors provides a list of the routes available in the API. - RouteDescriptors []RouteDescriptor -}{ - RouteDescriptors: routeDescriptors, -} - -// RouteDescriptor describes a route specified by name. -type RouteDescriptor struct { - // Name is the name of the route, as specified in RouteNameXXX exports. - // These names a should be considered a unique reference for a route. If - // the route is registered with gorilla, this is the name that will be - // used. - Name string - - // Path is a gorilla/mux-compatible regexp that can be used to match the - // route. For any incoming method and path, only one route descriptor - // should match. - Path string - - // Entity should be a short, human-readalbe description of the object - // targeted by the endpoint. - Entity string - - // Description should provide an accurate overview of the functionality - // provided by the route. - Description string - - // Methods should describe the various HTTP methods that may be used on - // this route, including request and response formats. - Methods []MethodDescriptor -} - -// MethodDescriptor provides a description of the requests that may be -// conducted with the target method. -type MethodDescriptor struct { - - // Method is an HTTP method, such as GET, PUT or POST. - Method string - - // Description should provide an overview of the functionality provided by - // the covered method, suitable for use in documentation. Use of markdown - // here is encouraged. - Description string - - // Requests is a slice of request descriptors enumerating how this - // endpoint may be used. - Requests []RequestDescriptor -} - -// RequestDescriptor covers a particular set of headers and parameters that -// can be carried out with the parent method. Its most helpful to have one -// RequestDescriptor per API use case. -type RequestDescriptor struct { - // Name provides a short identifier for the request, usable as a title or - // to provide quick context for the particular request. - Name string - - // Description should cover the requests purpose, covering any details for - // this particular use case. - Description string - - // Headers describes headers that must be used with the HTTP request. - Headers []ParameterDescriptor - - // PathParameters enumerate the parameterized path components for the - // given request, as defined in the route's regular expression. - PathParameters []ParameterDescriptor - - // QueryParameters provides a list of query parameters for the given - // request. - QueryParameters []ParameterDescriptor - - // Body describes the format of the request body. - Body BodyDescriptor - - // Successes enumerates the possible responses that are considered to be - // the result of a successful request. - Successes []ResponseDescriptor - - // Failures covers the possible failures from this particular request. - Failures []ResponseDescriptor -} - -// ResponseDescriptor describes the components of an API response. -type ResponseDescriptor struct { - // Name provides a short identifier for the response, usable as a title or - // to provide quick context for the particular response. - Name string - - // Description should provide a brief overview of the role of the - // response. - Description string - - // StatusCode specifies the status received by this particular response. - StatusCode int - - // Headers covers any headers that may be returned from the response. - Headers []ParameterDescriptor - - // Fields describes any fields that may be present in the response. - Fields []ParameterDescriptor - - // ErrorCodes enumerates the error codes that may be returned along with - // the response. - ErrorCodes []errcode.ErrorCode - - // Body describes the body of the response, if any. - Body BodyDescriptor -} - -// BodyDescriptor describes a request body and its expected content type. For -// the most part, it should be example json or some placeholder for body -// data in documentation. -type BodyDescriptor struct { - ContentType string - Format string -} - -// ParameterDescriptor describes the format of a request parameter, which may -// be a header, path parameter or query parameter. -type ParameterDescriptor struct { - // Name is the name of the parameter, either of the path component or - // query parameter. - Name string - - // Type specifies the type of the parameter, such as string, integer, etc. - Type string - - // Description provides a human-readable description of the parameter. - Description string - - // Required means the field is required when set. - Required bool - - // Format is a specifying the string format accepted by this parameter. - Format string - - // Regexp is a compiled regular expression that can be used to validate - // the contents of the parameter. - Regexp *regexp.Regexp - - // Examples provides multiple examples for the values that might be valid - // for this parameter. - Examples []string -} - -var routeDescriptors = []RouteDescriptor{ - { - Name: RouteNameBase, - Path: "/v2/", - Entity: "Base", - Description: `Base V2 API route. Typically, this can be used for lightweight version checks and to validate registry authentication.`, - Methods: []MethodDescriptor{ - { - Method: "GET", - Description: "Check that the endpoint implements Docker Registry API V2.", - Requests: []RequestDescriptor{ - { - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - Successes: []ResponseDescriptor{ - { - Description: "The API implements V2 protocol and is accessible.", - StatusCode: http.StatusOK, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "The registry does not implement the V2 API.", - StatusCode: http.StatusNotFound, - }, - unauthorizedResponseDescriptor, - }, - }, - }, - }, - }, - }, - { - Name: RouteNameTags, - Path: "/v2/{name:" + reference.NameRegexp.String() + "}/tags/list", - Entity: "Tags", - Description: "Retrieve information about tags.", - Methods: []MethodDescriptor{ - { - Method: "GET", - Description: "Fetch the tags under the repository identified by `name`.", - Requests: []RequestDescriptor{ - { - Name: "Tags", - Description: "Return all tags for the repository", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - }, - Successes: []ResponseDescriptor{ - { - StatusCode: http.StatusOK, - Description: "A list of tags for the named repository.", - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: `{ - "name": , - "tags": [ - , - ... - ] -}`, - }, - }, - }, - Failures: []ResponseDescriptor{ - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - { - Name: "Tags Paginated", - Description: "Return a portion of the tags for the specified repository.", - PathParameters: []ParameterDescriptor{nameParameterDescriptor}, - QueryParameters: paginationParameters, - Successes: []ResponseDescriptor{ - { - StatusCode: http.StatusOK, - Description: "A list of tags for the named repository.", - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - linkHeader, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: `{ - "name": , - "tags": [ - , - ... - ], -}`, - }, - }, - }, - Failures: []ResponseDescriptor{ - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - }, - }, - { - Name: RouteNameManifest, - Path: "/v2/{name:" + reference.NameRegexp.String() + "}/manifests/{reference:" + reference.TagRegexp.String() + "|" + digest.DigestRegexp.String() + "}", - Entity: "Manifest", - Description: "Create, update, delete and retrieve manifests.", - Methods: []MethodDescriptor{ - { - Method: "GET", - Description: "Fetch the manifest identified by `name` and `reference` where `reference` can be a tag or digest. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data.", - Requests: []RequestDescriptor{ - { - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - referenceParameterDescriptor, - }, - Successes: []ResponseDescriptor{ - { - Description: "The manifest identified by `name` and `reference`. The contents can be used to identify and resolve resources required to run the specified image.", - StatusCode: http.StatusOK, - Headers: []ParameterDescriptor{ - digestHeader, - }, - Body: BodyDescriptor{ - ContentType: "", - Format: manifestBody, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "The name or reference was invalid.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameInvalid, - ErrorCodeTagInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - { - Method: "PUT", - Description: "Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest.", - Requests: []RequestDescriptor{ - { - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - referenceParameterDescriptor, - }, - Body: BodyDescriptor{ - ContentType: "", - Format: manifestBody, - }, - Successes: []ResponseDescriptor{ - { - Description: "The manifest has been accepted by the registry and is stored under the specified `name` and `tag`.", - StatusCode: http.StatusCreated, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Description: "The canonical location url of the uploaded manifest.", - Format: "", - }, - contentLengthZeroHeader, - digestHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Name: "Invalid Manifest", - Description: "The received manifest was invalid in some way, as described by the error codes. The client should resolve the issue and retry the request.", - StatusCode: http.StatusBadRequest, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameInvalid, - ErrorCodeTagInvalid, - ErrorCodeManifestInvalid, - ErrorCodeManifestUnverified, - ErrorCodeBlobUnknown, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - { - Name: "Missing Layer(s)", - Description: "One or more layers may be missing during a manifest upload. If so, the missing layers will be enumerated in the error response.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeBlobUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: `{ - "errors:" [{ - "code": "BLOB_UNKNOWN", - "message": "blob unknown to registry", - "detail": { - "digest": "" - } - }, - ... - ] -}`, - }, - }, - { - Name: "Not allowed", - Description: "Manifest put is not allowed because the registry is configured as a pull-through cache or for some other reason", - StatusCode: http.StatusMethodNotAllowed, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeUnsupported, - }, - }, - }, - }, - }, - }, - { - Method: "DELETE", - Description: "Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`.", - Requests: []RequestDescriptor{ - { - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - referenceParameterDescriptor, - }, - Successes: []ResponseDescriptor{ - { - StatusCode: http.StatusAccepted, - }, - }, - Failures: []ResponseDescriptor{ - { - Name: "Invalid Name or Reference", - Description: "The specified `name` or `reference` were invalid and the delete was unable to proceed.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameInvalid, - ErrorCodeTagInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - { - Name: "Unknown Manifest", - Description: "The specified `name` or `reference` are unknown to the registry and the delete was unable to proceed. Clients can assume the manifest was already deleted if this response is returned.", - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameUnknown, - ErrorCodeManifestUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Name: "Not allowed", - Description: "Manifest delete is not allowed because the registry is configured as a pull-through cache or `delete` has been disabled.", - StatusCode: http.StatusMethodNotAllowed, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeUnsupported, - }, - }, - }, - }, - }, - }, - }, - }, - - { - Name: RouteNameBlob, - Path: "/v2/{name:" + reference.NameRegexp.String() + "}/blobs/{digest:" + digest.DigestRegexp.String() + "}", - Entity: "Blob", - Description: "Operations on blobs identified by `name` and `digest`. Used to fetch or delete layers by digest.", - Methods: []MethodDescriptor{ - { - Method: "GET", - Description: "Retrieve the blob from the registry identified by `digest`. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data.", - Requests: []RequestDescriptor{ - { - Name: "Fetch Blob", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - digestPathParameter, - }, - Successes: []ResponseDescriptor{ - { - Description: "The blob identified by `digest` is available. The blob content will be present in the body of the request.", - StatusCode: http.StatusOK, - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "The length of the requested blob content.", - Format: "", - }, - digestHeader, - }, - Body: BodyDescriptor{ - ContentType: "application/octet-stream", - Format: "", - }, - }, - { - Description: "The blob identified by `digest` is available at the provided location.", - StatusCode: http.StatusTemporaryRedirect, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Description: "The location where the layer should be accessible.", - Format: "", - }, - digestHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "There was a problem with the request that needs to be addressed by the client, such as an invalid `name` or `tag`.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameInvalid, - ErrorCodeDigestInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The blob, identified by `name` and `digest`, is unknown to the registry.", - StatusCode: http.StatusNotFound, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameUnknown, - ErrorCodeBlobUnknown, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - { - Name: "Fetch Blob Part", - Description: "This endpoint may also support RFC7233 compliant range requests. Support can be detected by issuing a HEAD request. If the header `Accept-Range: bytes` is returned, range requests can be used to fetch partial content.", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - { - Name: "Range", - Type: "string", - Description: "HTTP Range header specifying blob chunk.", - Format: "bytes=-", - }, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - digestPathParameter, - }, - Successes: []ResponseDescriptor{ - { - Description: "The blob identified by `digest` is available. The specified chunk of blob content will be present in the body of the request.", - StatusCode: http.StatusPartialContent, - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "The length of the requested blob chunk.", - Format: "", - }, - { - Name: "Content-Range", - Type: "byte range", - Description: "Content range of blob chunk.", - Format: "bytes -/", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/octet-stream", - Format: "", - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "There was a problem with the request that needs to be addressed by the client, such as an invalid `name` or `tag`.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameInvalid, - ErrorCodeDigestInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameUnknown, - ErrorCodeBlobUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The range specification cannot be satisfied for the requested content. This can happen when the range is not formatted correctly or if the range is outside of the valid size of the content.", - StatusCode: http.StatusRequestedRangeNotSatisfiable, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - { - Method: "DELETE", - Description: "Delete the blob identified by `name` and `digest`", - Requests: []RequestDescriptor{ - { - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - digestPathParameter, - }, - Successes: []ResponseDescriptor{ - { - StatusCode: http.StatusAccepted, - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "0", - Format: "0", - }, - digestHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Name: "Invalid Name or Digest", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - }, - }, - { - Description: "The blob, identified by `name` and `digest`, is unknown to the registry.", - StatusCode: http.StatusNotFound, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameUnknown, - ErrorCodeBlobUnknown, - }, - }, - { - Description: "Blob delete is not allowed because the registry is configured as a pull-through cache or `delete` has been disabled", - StatusCode: http.StatusMethodNotAllowed, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeUnsupported, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - - // TODO(stevvooe): We may want to add a PUT request here to - // kickoff an upload of a blob, integrated with the blob upload - // API. - }, - }, - - { - Name: RouteNameBlobUpload, - Path: "/v2/{name:" + reference.NameRegexp.String() + "}/blobs/uploads/", - Entity: "Initiate Blob Upload", - Description: "Initiate a blob upload. This endpoint can be used to create resumable uploads or monolithic uploads.", - Methods: []MethodDescriptor{ - { - Method: "POST", - Description: "Initiate a resumable blob upload. If successful, an upload location will be provided to complete the upload. Optionally, if the `digest` parameter is present, the request body will be used to complete the upload in a single request.", - Requests: []RequestDescriptor{ - { - Name: "Initiate Monolithic Blob Upload", - Description: "Upload a blob identified by the `digest` parameter in single request. This upload will not be resumable unless a recoverable error is returned.", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - { - Name: "Content-Length", - Type: "integer", - Format: "", - }, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - }, - QueryParameters: []ParameterDescriptor{ - { - Name: "digest", - Type: "query", - Format: "", - Regexp: digest.DigestRegexp, - Description: `Digest of uploaded blob. If present, the upload will be completed, in a single request, with contents of the request body as the resulting blob.`, - }, - }, - Body: BodyDescriptor{ - ContentType: "application/octect-stream", - Format: "", - }, - Successes: []ResponseDescriptor{ - { - Description: "The blob has been created in the registry and is available at the provided location.", - StatusCode: http.StatusCreated, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Format: "", - }, - contentLengthZeroHeader, - dockerUploadUUIDHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Name: "Invalid Name or Digest", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - }, - }, - { - Name: "Not allowed", - Description: "Blob upload is not allowed because the registry is configured as a pull-through cache or for some other reason", - StatusCode: http.StatusMethodNotAllowed, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeUnsupported, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - { - Name: "Initiate Resumable Blob Upload", - Description: "Initiate a resumable blob upload with an empty request body.", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - contentLengthZeroHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - }, - Successes: []ResponseDescriptor{ - { - Description: "The upload has been created. The `Location` header must be used to complete the upload. The response should be identical to a `GET` request on the contents of the returned `Location` header.", - StatusCode: http.StatusAccepted, - Headers: []ParameterDescriptor{ - contentLengthZeroHeader, - { - Name: "Location", - Type: "url", - Format: "/v2//blobs/uploads/", - Description: "The location of the created upload. Clients should use the contents verbatim to complete the upload, adding parameters where required.", - }, - { - Name: "Range", - Format: "0-0", - Description: "Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.", - }, - dockerUploadUUIDHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Name: "Invalid Name or Digest", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - { - Name: "Mount Blob", - Description: "Mount a blob identified by the `mount` parameter from another repository.", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - contentLengthZeroHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - }, - QueryParameters: []ParameterDescriptor{ - { - Name: "mount", - Type: "query", - Format: "", - Regexp: digest.DigestRegexp, - Description: `Digest of blob to mount from the source repository.`, - }, - { - Name: "from", - Type: "query", - Format: "", - Regexp: reference.NameRegexp, - Description: `Name of the source repository.`, - }, - }, - Successes: []ResponseDescriptor{ - { - Description: "The blob has been mounted in the repository and is available at the provided location.", - StatusCode: http.StatusCreated, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Format: "", - }, - contentLengthZeroHeader, - dockerUploadUUIDHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Name: "Invalid Name or Digest", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - }, - }, - { - Name: "Not allowed", - Description: "Blob mount is not allowed because the registry is configured as a pull-through cache or for some other reason", - StatusCode: http.StatusMethodNotAllowed, - ErrorCodes: []errcode.ErrorCode{ - errcode.ErrorCodeUnsupported, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - }, - }, - - { - Name: RouteNameBlobUploadChunk, - Path: "/v2/{name:" + reference.NameRegexp.String() + "}/blobs/uploads/{uuid:[a-zA-Z0-9-_.=]+}", - Entity: "Blob Upload", - Description: "Interact with blob uploads. Clients should never assemble URLs for this endpoint and should only take it through the `Location` header on related API requests. The `Location` header and its parameters should be preserved by clients, using the latest value returned via upload related API calls.", - Methods: []MethodDescriptor{ - { - Method: "GET", - Description: "Retrieve status of upload identified by `uuid`. The primary purpose of this endpoint is to resolve the current status of a resumable upload.", - Requests: []RequestDescriptor{ - { - Description: "Retrieve the progress of the current upload, as reported by the `Range` header.", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - uuidParameterDescriptor, - }, - Successes: []ResponseDescriptor{ - { - Name: "Upload Progress", - Description: "The upload is known and in progress. The last received offset is available in the `Range` header.", - StatusCode: http.StatusNoContent, - Headers: []ParameterDescriptor{ - { - Name: "Range", - Type: "header", - Format: "0-", - Description: "Range indicating the current progress of the upload.", - }, - contentLengthZeroHeader, - dockerUploadUUIDHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "There was an error processing the upload and it must be restarted.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - ErrorCodeBlobUploadInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The upload is unknown to the registry. The upload must be restarted.", - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeBlobUploadUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - { - Method: "PATCH", - Description: "Upload a chunk of data for the specified upload.", - Requests: []RequestDescriptor{ - { - Name: "Stream upload", - Description: "Upload a stream of data to upload without completing the upload.", - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - uuidParameterDescriptor, - }, - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - }, - Body: BodyDescriptor{ - ContentType: "application/octet-stream", - Format: "", - }, - Successes: []ResponseDescriptor{ - { - Name: "Data Accepted", - Description: "The stream of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.", - StatusCode: http.StatusNoContent, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Format: "/v2//blobs/uploads/", - Description: "The location of the upload. Clients should assume this changes after each request. Clients should use the contents verbatim to complete the upload, adding parameters where required.", - }, - { - Name: "Range", - Type: "header", - Format: "0-", - Description: "Range indicating the current progress of the upload.", - }, - contentLengthZeroHeader, - dockerUploadUUIDHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "There was an error processing the upload and it must be restarted.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - ErrorCodeBlobUploadInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The upload is unknown to the registry. The upload must be restarted.", - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeBlobUploadUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - { - Name: "Chunked upload", - Description: "Upload a chunk of data to specified upload without completing the upload. The data will be uploaded to the specified Content Range.", - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - uuidParameterDescriptor, - }, - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - { - Name: "Content-Range", - Type: "header", - Format: "-", - Required: true, - Description: "Range of bytes identifying the desired block of content represented by the body. Start must the end offset retrieved via status check plus one. Note that this is a non-standard use of the `Content-Range` header.", - }, - { - Name: "Content-Length", - Type: "integer", - Format: "", - Description: "Length of the chunk being uploaded, corresponding the length of the request body.", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/octet-stream", - Format: "", - }, - Successes: []ResponseDescriptor{ - { - Name: "Chunk Accepted", - Description: "The chunk of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.", - StatusCode: http.StatusNoContent, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Format: "/v2//blobs/uploads/", - Description: "The location of the upload. Clients should assume this changes after each request. Clients should use the contents verbatim to complete the upload, adding parameters where required.", - }, - { - Name: "Range", - Type: "header", - Format: "0-", - Description: "Range indicating the current progress of the upload.", - }, - contentLengthZeroHeader, - dockerUploadUUIDHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "There was an error processing the upload and it must be restarted.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - ErrorCodeBlobUploadInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The upload is unknown to the registry. The upload must be restarted.", - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeBlobUploadUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The `Content-Range` specification cannot be accepted, either because it does not overlap with the current progress or it is invalid.", - StatusCode: http.StatusRequestedRangeNotSatisfiable, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - { - Method: "PUT", - Description: "Complete the upload specified by `uuid`, optionally appending the body as the final chunk.", - Requests: []RequestDescriptor{ - { - Description: "Complete the upload, providing all the data in the body, if necessary. A request without a body will just complete the upload with previously uploaded content.", - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - { - Name: "Content-Length", - Type: "integer", - Format: "", - Description: "Length of the data being uploaded, corresponding to the length of the request body. May be zero if no data is provided.", - }, - }, - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - uuidParameterDescriptor, - }, - QueryParameters: []ParameterDescriptor{ - { - Name: "digest", - Type: "string", - Format: "", - Regexp: digest.DigestRegexp, - Required: true, - Description: `Digest of uploaded blob.`, - }, - }, - Body: BodyDescriptor{ - ContentType: "application/octet-stream", - Format: "", - }, - Successes: []ResponseDescriptor{ - { - Name: "Upload Complete", - Description: "The upload has been completed and accepted by the registry. The canonical location will be available in the `Location` header.", - StatusCode: http.StatusNoContent, - Headers: []ParameterDescriptor{ - { - Name: "Location", - Type: "url", - Format: "", - Description: "The canonical location of the blob for retrieval", - }, - { - Name: "Content-Range", - Type: "header", - Format: "-", - Description: "Range of bytes identifying the desired block of content represented by the body. Start must match the end of offset retrieved via status check. Note that this is a non-standard use of the `Content-Range` header.", - }, - contentLengthZeroHeader, - digestHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "There was an error processing the upload and it must be restarted.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeDigestInvalid, - ErrorCodeNameInvalid, - ErrorCodeBlobUploadInvalid, - errcode.ErrorCodeUnsupported, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The upload is unknown to the registry. The upload must be restarted.", - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeBlobUploadUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - { - Method: "DELETE", - Description: "Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout.", - Requests: []RequestDescriptor{ - { - Description: "Cancel the upload specified by `uuid`.", - PathParameters: []ParameterDescriptor{ - nameParameterDescriptor, - uuidParameterDescriptor, - }, - Headers: []ParameterDescriptor{ - hostHeader, - authHeader, - contentLengthZeroHeader, - }, - Successes: []ResponseDescriptor{ - { - Name: "Upload Deleted", - Description: "The upload has been successfully deleted.", - StatusCode: http.StatusNoContent, - Headers: []ParameterDescriptor{ - contentLengthZeroHeader, - }, - }, - }, - Failures: []ResponseDescriptor{ - { - Description: "An error was encountered processing the delete. The client may ignore this error.", - StatusCode: http.StatusBadRequest, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeNameInvalid, - ErrorCodeBlobUploadInvalid, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - { - Description: "The upload is unknown to the registry. The client may ignore this error and assume the upload has been deleted.", - StatusCode: http.StatusNotFound, - ErrorCodes: []errcode.ErrorCode{ - ErrorCodeBlobUploadUnknown, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: errorsBody, - }, - }, - unauthorizedResponseDescriptor, - repositoryNotFoundResponseDescriptor, - deniedResponseDescriptor, - }, - }, - }, - }, - }, - }, - { - Name: RouteNameCatalog, - Path: "/v2/_catalog", - Entity: "Catalog", - Description: "List a set of available repositories in the local registry cluster. Does not provide any indication of what may be available upstream. Applications can only determine if a repository is available but not if it is not available.", - Methods: []MethodDescriptor{ - { - Method: "GET", - Description: "Retrieve a sorted, json list of repositories available in the registry.", - Requests: []RequestDescriptor{ - { - Name: "Catalog Fetch Complete", - Description: "Request an unabridged list of repositories available.", - Successes: []ResponseDescriptor{ - { - Description: "Returns the unabridged list of repositories as a json response.", - StatusCode: http.StatusOK, - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - }, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: `{ - "repositories": [ - , - ... - ] -}`, - }, - }, - }, - }, - { - Name: "Catalog Fetch Paginated", - Description: "Return the specified portion of repositories.", - QueryParameters: paginationParameters, - Successes: []ResponseDescriptor{ - { - StatusCode: http.StatusOK, - Body: BodyDescriptor{ - ContentType: "application/json; charset=utf-8", - Format: `{ - "repositories": [ - , - ... - ] - "next": "?last=&n=" -}`, - }, - Headers: []ParameterDescriptor{ - { - Name: "Content-Length", - Type: "integer", - Description: "Length of the JSON response body.", - Format: "", - }, - linkHeader, - }, - }, - }, - }, - }, - }, - }, - }, -} - -var routeDescriptorsMap map[string]RouteDescriptor - -func init() { - routeDescriptorsMap = make(map[string]RouteDescriptor, len(routeDescriptors)) - - for _, descriptor := range routeDescriptors { - routeDescriptorsMap[descriptor.Name] = descriptor - } -} diff --git a/vendor/github.com/docker/distribution/registry/api/v2/doc.go b/vendor/github.com/docker/distribution/registry/api/v2/doc.go deleted file mode 100644 index cde0119594..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/doc.go +++ /dev/null @@ -1,9 +0,0 @@ -// Package v2 describes routes, urls and the error codes used in the Docker -// Registry JSON HTTP API V2. In addition to declarations, descriptors are -// provided for routes and error codes that can be used for implementation and -// automatically generating documentation. -// -// Definitions here are considered to be locked down for the V2 registry api. -// Any changes must be considered carefully and should not proceed without a -// change proposal in docker core. -package v2 diff --git a/vendor/github.com/docker/distribution/registry/api/v2/errors.go b/vendor/github.com/docker/distribution/registry/api/v2/errors.go deleted file mode 100644 index 97d6923aa0..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/errors.go +++ /dev/null @@ -1,136 +0,0 @@ -package v2 - -import ( - "net/http" - - "github.com/docker/distribution/registry/api/errcode" -) - -const errGroup = "registry.api.v2" - -var ( - // ErrorCodeDigestInvalid is returned when uploading a blob if the - // provided digest does not match the blob contents. - ErrorCodeDigestInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "DIGEST_INVALID", - Message: "provided digest did not match uploaded content", - Description: `When a blob is uploaded, the registry will check that - the content matches the digest provided by the client. The error may - include a detail structure with the key "digest", including the - invalid digest string. This error may also be returned when a manifest - includes an invalid layer digest.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeSizeInvalid is returned when uploading a blob if the provided - ErrorCodeSizeInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "SIZE_INVALID", - Message: "provided length did not match content length", - Description: `When a layer is uploaded, the provided size will be - checked against the uploaded content. If they do not match, this error - will be returned.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeNameInvalid is returned when the name in the manifest does not - // match the provided name. - ErrorCodeNameInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "NAME_INVALID", - Message: "invalid repository name", - Description: `Invalid repository name encountered either during - manifest validation or any API operation.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeTagInvalid is returned when the tag in the manifest does not - // match the provided tag. - ErrorCodeTagInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "TAG_INVALID", - Message: "manifest tag did not match URI", - Description: `During a manifest upload, if the tag in the manifest - does not match the uri tag, this error will be returned.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeNameUnknown when the repository name is not known. - ErrorCodeNameUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "NAME_UNKNOWN", - Message: "repository name not known to registry", - Description: `This is returned if the name used during an operation is - unknown to the registry.`, - HTTPStatusCode: http.StatusNotFound, - }) - - // ErrorCodeManifestUnknown returned when image manifest is unknown. - ErrorCodeManifestUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "MANIFEST_UNKNOWN", - Message: "manifest unknown", - Description: `This error is returned when the manifest, identified by - name and tag is unknown to the repository.`, - HTTPStatusCode: http.StatusNotFound, - }) - - // ErrorCodeManifestInvalid returned when an image manifest is invalid, - // typically during a PUT operation. This error encompasses all errors - // encountered during manifest validation that aren't signature errors. - ErrorCodeManifestInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "MANIFEST_INVALID", - Message: "manifest invalid", - Description: `During upload, manifests undergo several checks ensuring - validity. If those checks fail, this error may be returned, unless a - more specific error is included. The detail will contain information - the failed validation.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeManifestUnverified is returned when the manifest fails - // signature verification. - ErrorCodeManifestUnverified = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "MANIFEST_UNVERIFIED", - Message: "manifest failed signature verification", - Description: `During manifest upload, if the manifest fails signature - verification, this error will be returned.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeManifestBlobUnknown is returned when a manifest blob is - // unknown to the registry. - ErrorCodeManifestBlobUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "MANIFEST_BLOB_UNKNOWN", - Message: "blob unknown to registry", - Description: `This error may be returned when a manifest blob is - unknown to the registry.`, - HTTPStatusCode: http.StatusBadRequest, - }) - - // ErrorCodeBlobUnknown is returned when a blob is unknown to the - // registry. This can happen when the manifest references a nonexistent - // layer or the result is not found by a blob fetch. - ErrorCodeBlobUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "BLOB_UNKNOWN", - Message: "blob unknown to registry", - Description: `This error may be returned when a blob is unknown to the - registry in a specified repository. This can be returned with a - standard get or if a manifest references an unknown layer during - upload.`, - HTTPStatusCode: http.StatusNotFound, - }) - - // ErrorCodeBlobUploadUnknown is returned when an upload is unknown. - ErrorCodeBlobUploadUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "BLOB_UPLOAD_UNKNOWN", - Message: "blob upload unknown to registry", - Description: `If a blob upload has been cancelled or was never - started, this error code may be returned.`, - HTTPStatusCode: http.StatusNotFound, - }) - - // ErrorCodeBlobUploadInvalid is returned when an upload is invalid. - ErrorCodeBlobUploadInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{ - Value: "BLOB_UPLOAD_INVALID", - Message: "blob upload invalid", - Description: `The blob upload encountered an error and can no - longer proceed.`, - HTTPStatusCode: http.StatusNotFound, - }) -) diff --git a/vendor/github.com/docker/distribution/registry/api/v2/routes.go b/vendor/github.com/docker/distribution/registry/api/v2/routes.go deleted file mode 100644 index 5b80d5be76..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/routes.go +++ /dev/null @@ -1,49 +0,0 @@ -package v2 - -import "github.com/gorilla/mux" - -// The following are definitions of the name under which all V2 routes are -// registered. These symbols can be used to look up a route based on the name. -const ( - RouteNameBase = "base" - RouteNameManifest = "manifest" - RouteNameTags = "tags" - RouteNameBlob = "blob" - RouteNameBlobUpload = "blob-upload" - RouteNameBlobUploadChunk = "blob-upload-chunk" - RouteNameCatalog = "catalog" -) - -var allEndpoints = []string{ - RouteNameManifest, - RouteNameCatalog, - RouteNameTags, - RouteNameBlob, - RouteNameBlobUpload, - RouteNameBlobUploadChunk, -} - -// Router builds a gorilla router with named routes for the various API -// methods. This can be used directly by both server implementations and -// clients. -func Router() *mux.Router { - return RouterWithPrefix("") -} - -// RouterWithPrefix builds a gorilla router with a configured prefix -// on all routes. -func RouterWithPrefix(prefix string) *mux.Router { - rootRouter := mux.NewRouter() - router := rootRouter - if prefix != "" { - router = router.PathPrefix(prefix).Subrouter() - } - - router.StrictSlash(true) - - for _, descriptor := range routeDescriptors { - router.Path(descriptor.Path).Name(descriptor.Name) - } - - return rootRouter -} diff --git a/vendor/github.com/docker/distribution/registry/api/v2/routes_test.go b/vendor/github.com/docker/distribution/registry/api/v2/routes_test.go deleted file mode 100644 index f632d981c0..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/routes_test.go +++ /dev/null @@ -1,355 +0,0 @@ -package v2 - -import ( - "encoding/json" - "fmt" - "math/rand" - "net/http" - "net/http/httptest" - "reflect" - "strings" - "testing" - "time" - - "github.com/gorilla/mux" -) - -type routeTestCase struct { - RequestURI string - ExpectedURI string - Vars map[string]string - RouteName string - StatusCode int -} - -// TestRouter registers a test handler with all the routes and ensures that -// each route returns the expected path variables. Not method verification is -// present. This not meant to be exhaustive but as check to ensure that the -// expected variables are extracted. -// -// This may go away as the application structure comes together. -func TestRouter(t *testing.T) { - testCases := []routeTestCase{ - { - RouteName: RouteNameBase, - RequestURI: "/v2/", - Vars: map[string]string{}, - }, - { - RouteName: RouteNameManifest, - RequestURI: "/v2/foo/manifests/bar", - Vars: map[string]string{ - "name": "foo", - "reference": "bar", - }, - }, - { - RouteName: RouteNameManifest, - RequestURI: "/v2/foo/bar/manifests/tag", - Vars: map[string]string{ - "name": "foo/bar", - "reference": "tag", - }, - }, - { - RouteName: RouteNameManifest, - RequestURI: "/v2/foo/bar/manifests/sha256:abcdef01234567890", - Vars: map[string]string{ - "name": "foo/bar", - "reference": "sha256:abcdef01234567890", - }, - }, - { - RouteName: RouteNameTags, - RequestURI: "/v2/foo/bar/tags/list", - Vars: map[string]string{ - "name": "foo/bar", - }, - }, - { - RouteName: RouteNameTags, - RequestURI: "/v2/docker.com/foo/tags/list", - Vars: map[string]string{ - "name": "docker.com/foo", - }, - }, - { - RouteName: RouteNameTags, - RequestURI: "/v2/docker.com/foo/bar/tags/list", - Vars: map[string]string{ - "name": "docker.com/foo/bar", - }, - }, - { - RouteName: RouteNameTags, - RequestURI: "/v2/docker.com/foo/bar/baz/tags/list", - Vars: map[string]string{ - "name": "docker.com/foo/bar/baz", - }, - }, - { - RouteName: RouteNameBlob, - RequestURI: "/v2/foo/bar/blobs/sha256:abcdef0919234", - Vars: map[string]string{ - "name": "foo/bar", - "digest": "sha256:abcdef0919234", - }, - }, - { - RouteName: RouteNameBlobUpload, - RequestURI: "/v2/foo/bar/blobs/uploads/", - Vars: map[string]string{ - "name": "foo/bar", - }, - }, - { - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/bar/blobs/uploads/uuid", - Vars: map[string]string{ - "name": "foo/bar", - "uuid": "uuid", - }, - }, - { - // support uuid proper - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/bar/blobs/uploads/D95306FA-FAD3-4E36-8D41-CF1C93EF8286", - Vars: map[string]string{ - "name": "foo/bar", - "uuid": "D95306FA-FAD3-4E36-8D41-CF1C93EF8286", - }, - }, - { - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/bar/blobs/uploads/RDk1MzA2RkEtRkFEMy00RTM2LThENDEtQ0YxQzkzRUY4Mjg2IA==", - Vars: map[string]string{ - "name": "foo/bar", - "uuid": "RDk1MzA2RkEtRkFEMy00RTM2LThENDEtQ0YxQzkzRUY4Mjg2IA==", - }, - }, - { - // supports urlsafe base64 - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/bar/blobs/uploads/RDk1MzA2RkEtRkFEMy00RTM2LThENDEtQ0YxQzkzRUY4Mjg2IA_-==", - Vars: map[string]string{ - "name": "foo/bar", - "uuid": "RDk1MzA2RkEtRkFEMy00RTM2LThENDEtQ0YxQzkzRUY4Mjg2IA_-==", - }, - }, - { - // does not match - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/bar/blobs/uploads/totalandcompletejunk++$$-==", - StatusCode: http.StatusNotFound, - }, - { - // Check ambiguity: ensure we can distinguish between tags for - // "foo/bar/image/image" and image for "foo/bar/image" with tag - // "tags" - RouteName: RouteNameManifest, - RequestURI: "/v2/foo/bar/manifests/manifests/tags", - Vars: map[string]string{ - "name": "foo/bar/manifests", - "reference": "tags", - }, - }, - { - // This case presents an ambiguity between foo/bar with tag="tags" - // and list tags for "foo/bar/manifest" - RouteName: RouteNameTags, - RequestURI: "/v2/foo/bar/manifests/tags/list", - Vars: map[string]string{ - "name": "foo/bar/manifests", - }, - }, - { - RouteName: RouteNameManifest, - RequestURI: "/v2/locahost:8080/foo/bar/baz/manifests/tag", - Vars: map[string]string{ - "name": "locahost:8080/foo/bar/baz", - "reference": "tag", - }, - }, - } - - checkTestRouter(t, testCases, "", true) - checkTestRouter(t, testCases, "/prefix/", true) -} - -func TestRouterWithPathTraversals(t *testing.T) { - testCases := []routeTestCase{ - { - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/../../blob/uploads/D95306FA-FAD3-4E36-8D41-CF1C93EF8286", - ExpectedURI: "/blob/uploads/D95306FA-FAD3-4E36-8D41-CF1C93EF8286", - StatusCode: http.StatusNotFound, - }, - { - // Testing for path traversal attack handling - RouteName: RouteNameTags, - RequestURI: "/v2/foo/../bar/baz/tags/list", - ExpectedURI: "/v2/bar/baz/tags/list", - Vars: map[string]string{ - "name": "bar/baz", - }, - }, - } - checkTestRouter(t, testCases, "", false) -} - -func TestRouterWithBadCharacters(t *testing.T) { - if testing.Short() { - testCases := []routeTestCase{ - { - RouteName: RouteNameBlobUploadChunk, - RequestURI: "/v2/foo/blob/uploads/不95306FA-FAD3-4E36-8D41-CF1C93EF8286", - StatusCode: http.StatusNotFound, - }, - { - // Testing for path traversal attack handling - RouteName: RouteNameTags, - RequestURI: "/v2/foo/不bar/tags/list", - StatusCode: http.StatusNotFound, - }, - } - checkTestRouter(t, testCases, "", true) - } else { - // in the long version we're going to fuzz the router - // with random UTF8 characters not in the 128 bit ASCII range. - // These are not valid characters for the router and we expect - // 404s on every test. - rand.Seed(time.Now().UTC().UnixNano()) - testCases := make([]routeTestCase, 1000) - for idx := range testCases { - testCases[idx] = routeTestCase{ - RouteName: RouteNameTags, - RequestURI: fmt.Sprintf("/v2/%v/%v/tags/list", randomString(10), randomString(10)), - StatusCode: http.StatusNotFound, - } - } - checkTestRouter(t, testCases, "", true) - } -} - -func checkTestRouter(t *testing.T, testCases []routeTestCase, prefix string, deeplyEqual bool) { - router := RouterWithPrefix(prefix) - - testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - testCase := routeTestCase{ - RequestURI: r.RequestURI, - Vars: mux.Vars(r), - RouteName: mux.CurrentRoute(r).GetName(), - } - - enc := json.NewEncoder(w) - - if err := enc.Encode(testCase); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - }) - - // Startup test server - server := httptest.NewServer(router) - - for _, testcase := range testCases { - testcase.RequestURI = strings.TrimSuffix(prefix, "/") + testcase.RequestURI - // Register the endpoint - route := router.GetRoute(testcase.RouteName) - if route == nil { - t.Fatalf("route for name %q not found", testcase.RouteName) - } - - route.Handler(testHandler) - - u := server.URL + testcase.RequestURI - - resp, err := http.Get(u) - - if err != nil { - t.Fatalf("error issuing get request: %v", err) - } - - if testcase.StatusCode == 0 { - // Override default, zero-value - testcase.StatusCode = http.StatusOK - } - if testcase.ExpectedURI == "" { - // Override default, zero-value - testcase.ExpectedURI = testcase.RequestURI - } - - if resp.StatusCode != testcase.StatusCode { - t.Fatalf("unexpected status for %s: %v %v", u, resp.Status, resp.StatusCode) - } - - if testcase.StatusCode != http.StatusOK { - resp.Body.Close() - // We don't care about json response. - continue - } - - dec := json.NewDecoder(resp.Body) - - var actualRouteInfo routeTestCase - if err := dec.Decode(&actualRouteInfo); err != nil { - t.Fatalf("error reading json response: %v", err) - } - // Needs to be set out of band - actualRouteInfo.StatusCode = resp.StatusCode - - if actualRouteInfo.RequestURI != testcase.ExpectedURI { - t.Fatalf("URI %v incorrectly parsed, expected %v", actualRouteInfo.RequestURI, testcase.ExpectedURI) - } - - if actualRouteInfo.RouteName != testcase.RouteName { - t.Fatalf("incorrect route %q matched, expected %q", actualRouteInfo.RouteName, testcase.RouteName) - } - - // when testing deep equality, the actualRouteInfo has an empty ExpectedURI, we don't want - // that to make the comparison fail. We're otherwise done with the testcase so empty the - // testcase.ExpectedURI - testcase.ExpectedURI = "" - if deeplyEqual && !reflect.DeepEqual(actualRouteInfo, testcase) { - t.Fatalf("actual does not equal expected: %#v != %#v", actualRouteInfo, testcase) - } - - resp.Body.Close() - } - -} - -// -------------- START LICENSED CODE -------------- -// The following code is derivative of https://github.com/google/gofuzz -// gofuzz is licensed under the Apache License, Version 2.0, January 2004, -// a copy of which can be found in the LICENSE file at the root of this -// repository. - -// These functions allow us to generate strings containing only multibyte -// characters that are invalid in our URLs. They are used above for fuzzing -// to ensure we always get 404s on these invalid strings -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() rune { - count := int64(r.last - r.first) - return r.first + rune(rand.Int63n(count)) -} - -var unicodeRanges = []charRange{ - {'\u00a0', '\u02af'}, // Multi-byte encoded characters - {'\u4e00', '\u9fff'}, // Common CJK (even longer encodings) -} - -func randomString(length int) string { - runes := make([]rune, length) - for i := range runes { - runes[i] = unicodeRanges[rand.Intn(len(unicodeRanges))].choose() - } - return string(runes) -} - -// -------------- END LICENSED CODE -------------- diff --git a/vendor/github.com/docker/distribution/registry/api/v2/urls.go b/vendor/github.com/docker/distribution/registry/api/v2/urls.go deleted file mode 100644 index a959aaa897..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/urls.go +++ /dev/null @@ -1,251 +0,0 @@ -package v2 - -import ( - "net/http" - "net/url" - "strings" - - "github.com/docker/distribution/reference" - "github.com/gorilla/mux" -) - -// URLBuilder creates registry API urls from a single base endpoint. It can be -// used to create urls for use in a registry client or server. -// -// All urls will be created from the given base, including the api version. -// For example, if a root of "/foo/" is provided, urls generated will be fall -// under "/foo/v2/...". Most application will only provide a schema, host and -// port, such as "https://localhost:5000/". -type URLBuilder struct { - root *url.URL // url root (ie http://localhost/) - router *mux.Router - relative bool -} - -// NewURLBuilder creates a URLBuilder with provided root url object. -func NewURLBuilder(root *url.URL, relative bool) *URLBuilder { - return &URLBuilder{ - root: root, - router: Router(), - relative: relative, - } -} - -// NewURLBuilderFromString workes identically to NewURLBuilder except it takes -// a string argument for the root, returning an error if it is not a valid -// url. -func NewURLBuilderFromString(root string, relative bool) (*URLBuilder, error) { - u, err := url.Parse(root) - if err != nil { - return nil, err - } - - return NewURLBuilder(u, relative), nil -} - -// NewURLBuilderFromRequest uses information from an *http.Request to -// construct the root url. -func NewURLBuilderFromRequest(r *http.Request, relative bool) *URLBuilder { - var scheme string - - forwardedProto := r.Header.Get("X-Forwarded-Proto") - - switch { - case len(forwardedProto) > 0: - scheme = forwardedProto - case r.TLS != nil: - scheme = "https" - case len(r.URL.Scheme) > 0: - scheme = r.URL.Scheme - default: - scheme = "http" - } - - host := r.Host - forwardedHost := r.Header.Get("X-Forwarded-Host") - if len(forwardedHost) > 0 { - // According to the Apache mod_proxy docs, X-Forwarded-Host can be a - // comma-separated list of hosts, to which each proxy appends the - // requested host. We want to grab the first from this comma-separated - // list. - hosts := strings.SplitN(forwardedHost, ",", 2) - host = strings.TrimSpace(hosts[0]) - } - - basePath := routeDescriptorsMap[RouteNameBase].Path - - requestPath := r.URL.Path - index := strings.Index(requestPath, basePath) - - u := &url.URL{ - Scheme: scheme, - Host: host, - } - - if index > 0 { - // N.B. index+1 is important because we want to include the trailing / - u.Path = requestPath[0 : index+1] - } - - return NewURLBuilder(u, relative) -} - -// BuildBaseURL constructs a base url for the API, typically just "/v2/". -func (ub *URLBuilder) BuildBaseURL() (string, error) { - route := ub.cloneRoute(RouteNameBase) - - baseURL, err := route.URL() - if err != nil { - return "", err - } - - return baseURL.String(), nil -} - -// BuildCatalogURL constructs a url get a catalog of repositories -func (ub *URLBuilder) BuildCatalogURL(values ...url.Values) (string, error) { - route := ub.cloneRoute(RouteNameCatalog) - - catalogURL, err := route.URL() - if err != nil { - return "", err - } - - return appendValuesURL(catalogURL, values...).String(), nil -} - -// BuildTagsURL constructs a url to list the tags in the named repository. -func (ub *URLBuilder) BuildTagsURL(name reference.Named) (string, error) { - route := ub.cloneRoute(RouteNameTags) - - tagsURL, err := route.URL("name", name.Name()) - if err != nil { - return "", err - } - - return tagsURL.String(), nil -} - -// BuildManifestURL constructs a url for the manifest identified by name and -// reference. The argument reference may be either a tag or digest. -func (ub *URLBuilder) BuildManifestURL(ref reference.Named) (string, error) { - route := ub.cloneRoute(RouteNameManifest) - - tagOrDigest := "" - switch v := ref.(type) { - case reference.Tagged: - tagOrDigest = v.Tag() - case reference.Digested: - tagOrDigest = v.Digest().String() - } - - manifestURL, err := route.URL("name", ref.Name(), "reference", tagOrDigest) - if err != nil { - return "", err - } - - return manifestURL.String(), nil -} - -// BuildBlobURL constructs the url for the blob identified by name and dgst. -func (ub *URLBuilder) BuildBlobURL(ref reference.Canonical) (string, error) { - route := ub.cloneRoute(RouteNameBlob) - - layerURL, err := route.URL("name", ref.Name(), "digest", ref.Digest().String()) - if err != nil { - return "", err - } - - return layerURL.String(), nil -} - -// BuildBlobUploadURL constructs a url to begin a blob upload in the -// repository identified by name. -func (ub *URLBuilder) BuildBlobUploadURL(name reference.Named, values ...url.Values) (string, error) { - route := ub.cloneRoute(RouteNameBlobUpload) - - uploadURL, err := route.URL("name", name.Name()) - if err != nil { - return "", err - } - - return appendValuesURL(uploadURL, values...).String(), nil -} - -// BuildBlobUploadChunkURL constructs a url for the upload identified by uuid, -// including any url values. This should generally not be used by clients, as -// this url is provided by server implementations during the blob upload -// process. -func (ub *URLBuilder) BuildBlobUploadChunkURL(name reference.Named, uuid string, values ...url.Values) (string, error) { - route := ub.cloneRoute(RouteNameBlobUploadChunk) - - uploadURL, err := route.URL("name", name.Name(), "uuid", uuid) - if err != nil { - return "", err - } - - return appendValuesURL(uploadURL, values...).String(), nil -} - -// clondedRoute returns a clone of the named route from the router. Routes -// must be cloned to avoid modifying them during url generation. -func (ub *URLBuilder) cloneRoute(name string) clonedRoute { - route := new(mux.Route) - root := new(url.URL) - - *route = *ub.router.GetRoute(name) // clone the route - *root = *ub.root - - return clonedRoute{Route: route, root: root, relative: ub.relative} -} - -type clonedRoute struct { - *mux.Route - root *url.URL - relative bool -} - -func (cr clonedRoute) URL(pairs ...string) (*url.URL, error) { - routeURL, err := cr.Route.URL(pairs...) - if err != nil { - return nil, err - } - - if cr.relative { - return routeURL, nil - } - - if routeURL.Scheme == "" && routeURL.User == nil && routeURL.Host == "" { - routeURL.Path = routeURL.Path[1:] - } - - url := cr.root.ResolveReference(routeURL) - url.Scheme = cr.root.Scheme - return url, nil -} - -// appendValuesURL appends the parameters to the url. -func appendValuesURL(u *url.URL, values ...url.Values) *url.URL { - merged := u.Query() - - for _, v := range values { - for k, vv := range v { - merged[k] = append(merged[k], vv...) - } - } - - u.RawQuery = merged.Encode() - return u -} - -// appendValues appends the parameters to the url. Panics if the string is not -// a url. -func appendValues(u string, values ...url.Values) string { - up, err := url.Parse(u) - - if err != nil { - panic(err) // should never happen - } - - return appendValuesURL(up, values...).String() -} diff --git a/vendor/github.com/docker/distribution/registry/api/v2/urls_test.go b/vendor/github.com/docker/distribution/registry/api/v2/urls_test.go deleted file mode 100644 index 10aadd52ed..0000000000 --- a/vendor/github.com/docker/distribution/registry/api/v2/urls_test.go +++ /dev/null @@ -1,334 +0,0 @@ -package v2 - -import ( - "net/http" - "net/url" - "testing" - - "github.com/docker/distribution/reference" -) - -type urlBuilderTestCase struct { - description string - expectedPath string - build func() (string, error) -} - -func makeURLBuilderTestCases(urlBuilder *URLBuilder) []urlBuilderTestCase { - fooBarRef, _ := reference.ParseNamed("foo/bar") - return []urlBuilderTestCase{ - { - description: "test base url", - expectedPath: "/v2/", - build: urlBuilder.BuildBaseURL, - }, - { - description: "test tags url", - expectedPath: "/v2/foo/bar/tags/list", - build: func() (string, error) { - return urlBuilder.BuildTagsURL(fooBarRef) - }, - }, - { - description: "test manifest url", - expectedPath: "/v2/foo/bar/manifests/tag", - build: func() (string, error) { - ref, _ := reference.WithTag(fooBarRef, "tag") - return urlBuilder.BuildManifestURL(ref) - }, - }, - { - description: "build blob url", - expectedPath: "/v2/foo/bar/blobs/sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5", - build: func() (string, error) { - ref, _ := reference.WithDigest(fooBarRef, "sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5") - return urlBuilder.BuildBlobURL(ref) - }, - }, - { - description: "build blob upload url", - expectedPath: "/v2/foo/bar/blobs/uploads/", - build: func() (string, error) { - return urlBuilder.BuildBlobUploadURL(fooBarRef) - }, - }, - { - description: "build blob upload url with digest and size", - expectedPath: "/v2/foo/bar/blobs/uploads/?digest=sha256%3A3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5&size=10000", - build: func() (string, error) { - return urlBuilder.BuildBlobUploadURL(fooBarRef, url.Values{ - "size": []string{"10000"}, - "digest": []string{"sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5"}, - }) - }, - }, - { - description: "build blob upload chunk url", - expectedPath: "/v2/foo/bar/blobs/uploads/uuid-part", - build: func() (string, error) { - return urlBuilder.BuildBlobUploadChunkURL(fooBarRef, "uuid-part") - }, - }, - { - description: "build blob upload chunk url with digest and size", - expectedPath: "/v2/foo/bar/blobs/uploads/uuid-part?digest=sha256%3A3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5&size=10000", - build: func() (string, error) { - return urlBuilder.BuildBlobUploadChunkURL(fooBarRef, "uuid-part", url.Values{ - "size": []string{"10000"}, - "digest": []string{"sha256:3b3692957d439ac1928219a83fac91e7bf96c153725526874673ae1f2023f8d5"}, - }) - }, - }, - } -} - -// TestURLBuilder tests the various url building functions, ensuring they are -// returning the expected values. -func TestURLBuilder(t *testing.T) { - roots := []string{ - "http://example.com", - "https://example.com", - "http://localhost:5000", - "https://localhost:5443", - } - - doTest := func(relative bool) { - for _, root := range roots { - urlBuilder, err := NewURLBuilderFromString(root, relative) - if err != nil { - t.Fatalf("unexpected error creating urlbuilder: %v", err) - } - - for _, testCase := range makeURLBuilderTestCases(urlBuilder) { - url, err := testCase.build() - if err != nil { - t.Fatalf("%s: error building url: %v", testCase.description, err) - } - expectedURL := testCase.expectedPath - if !relative { - expectedURL = root + expectedURL - } - - if url != expectedURL { - t.Fatalf("%s: %q != %q", testCase.description, url, expectedURL) - } - } - } - } - doTest(true) - doTest(false) -} - -func TestURLBuilderWithPrefix(t *testing.T) { - roots := []string{ - "http://example.com/prefix/", - "https://example.com/prefix/", - "http://localhost:5000/prefix/", - "https://localhost:5443/prefix/", - } - - doTest := func(relative bool) { - for _, root := range roots { - urlBuilder, err := NewURLBuilderFromString(root, relative) - if err != nil { - t.Fatalf("unexpected error creating urlbuilder: %v", err) - } - - for _, testCase := range makeURLBuilderTestCases(urlBuilder) { - url, err := testCase.build() - if err != nil { - t.Fatalf("%s: error building url: %v", testCase.description, err) - } - - expectedURL := testCase.expectedPath - if !relative { - expectedURL = root[0:len(root)-1] + expectedURL - } - if url != expectedURL { - t.Fatalf("%s: %q != %q", testCase.description, url, expectedURL) - } - } - } - } - doTest(true) - doTest(false) -} - -type builderFromRequestTestCase struct { - request *http.Request - base string -} - -func TestBuilderFromRequest(t *testing.T) { - u, err := url.Parse("http://example.com") - if err != nil { - t.Fatal(err) - } - - forwardedProtoHeader := make(http.Header, 1) - forwardedProtoHeader.Set("X-Forwarded-Proto", "https") - - forwardedHostHeader1 := make(http.Header, 1) - forwardedHostHeader1.Set("X-Forwarded-Host", "first.example.com") - - forwardedHostHeader2 := make(http.Header, 1) - forwardedHostHeader2.Set("X-Forwarded-Host", "first.example.com, proxy1.example.com") - - testRequests := []struct { - request *http.Request - base string - configHost url.URL - }{ - { - request: &http.Request{URL: u, Host: u.Host}, - base: "http://example.com", - }, - - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedProtoHeader}, - base: "http://example.com", - }, - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedProtoHeader}, - base: "https://example.com", - }, - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedHostHeader1}, - base: "http://first.example.com", - }, - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedHostHeader2}, - base: "http://first.example.com", - }, - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedHostHeader2}, - base: "https://third.example.com:5000", - configHost: url.URL{ - Scheme: "https", - Host: "third.example.com:5000", - }, - }, - } - doTest := func(relative bool) { - for _, tr := range testRequests { - var builder *URLBuilder - if tr.configHost.Scheme != "" && tr.configHost.Host != "" { - builder = NewURLBuilder(&tr.configHost, relative) - } else { - builder = NewURLBuilderFromRequest(tr.request, relative) - } - - for _, testCase := range makeURLBuilderTestCases(builder) { - buildURL, err := testCase.build() - if err != nil { - t.Fatalf("%s: error building url: %v", testCase.description, err) - } - - var expectedURL string - proto, ok := tr.request.Header["X-Forwarded-Proto"] - if !ok { - expectedURL = testCase.expectedPath - if !relative { - expectedURL = tr.base + expectedURL - } - } else { - urlBase, err := url.Parse(tr.base) - if err != nil { - t.Fatal(err) - } - urlBase.Scheme = proto[0] - expectedURL = testCase.expectedPath - if !relative { - expectedURL = urlBase.String() + expectedURL - } - } - - if buildURL != expectedURL { - t.Fatalf("%s: %q != %q", testCase.description, buildURL, expectedURL) - } - } - } - } - doTest(true) - doTest(false) -} - -func TestBuilderFromRequestWithPrefix(t *testing.T) { - u, err := url.Parse("http://example.com/prefix/v2/") - if err != nil { - t.Fatal(err) - } - - forwardedProtoHeader := make(http.Header, 1) - forwardedProtoHeader.Set("X-Forwarded-Proto", "https") - - testRequests := []struct { - request *http.Request - base string - configHost url.URL - }{ - { - request: &http.Request{URL: u, Host: u.Host}, - base: "http://example.com/prefix/", - }, - - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedProtoHeader}, - base: "http://example.com/prefix/", - }, - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedProtoHeader}, - base: "https://example.com/prefix/", - }, - { - request: &http.Request{URL: u, Host: u.Host, Header: forwardedProtoHeader}, - base: "https://subdomain.example.com/prefix/", - configHost: url.URL{ - Scheme: "https", - Host: "subdomain.example.com", - Path: "/prefix/", - }, - }, - } - - var relative bool - for _, tr := range testRequests { - var builder *URLBuilder - if tr.configHost.Scheme != "" && tr.configHost.Host != "" { - builder = NewURLBuilder(&tr.configHost, false) - } else { - builder = NewURLBuilderFromRequest(tr.request, false) - } - - for _, testCase := range makeURLBuilderTestCases(builder) { - buildURL, err := testCase.build() - if err != nil { - t.Fatalf("%s: error building url: %v", testCase.description, err) - } - - var expectedURL string - proto, ok := tr.request.Header["X-Forwarded-Proto"] - if !ok { - expectedURL = testCase.expectedPath - if !relative { - expectedURL = tr.base[0:len(tr.base)-1] + expectedURL - } - } else { - urlBase, err := url.Parse(tr.base) - if err != nil { - t.Fatal(err) - } - urlBase.Scheme = proto[0] - expectedURL = testCase.expectedPath - if !relative { - expectedURL = urlBase.String()[0:len(urlBase.String())-1] + expectedURL - } - - } - - if buildURL != expectedURL { - t.Fatalf("%s: %q != %q", testCase.description, buildURL, expectedURL) - } - } - } -} diff --git a/vendor/github.com/docker/distribution/registry/auth/auth.go b/vendor/github.com/docker/distribution/registry/auth/auth.go deleted file mode 100644 index 0ba2eba3e7..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/auth.go +++ /dev/null @@ -1,154 +0,0 @@ -// Package auth defines a standard interface for request access controllers. -// -// An access controller has a simple interface with a single `Authorized` -// method which checks that a given request is authorized to perform one or -// more actions on one or more resources. This method should return a non-nil -// error if the request is not authorized. -// -// An implementation registers its access controller by name with a constructor -// which accepts an options map for configuring the access controller. -// -// options := map[string]interface{}{"sillySecret": "whysosilly?"} -// accessController, _ := auth.GetAccessController("silly", options) -// -// This `accessController` can then be used in a request handler like so: -// -// func updateOrder(w http.ResponseWriter, r *http.Request) { -// orderNumber := r.FormValue("orderNumber") -// resource := auth.Resource{Type: "customerOrder", Name: orderNumber} -// access := auth.Access{Resource: resource, Action: "update"} -// -// if ctx, err := accessController.Authorized(ctx, access); err != nil { -// if challenge, ok := err.(auth.Challenge) { -// // Let the challenge write the response. -// challenge.SetHeaders(w) -// w.WriteHeader(http.StatusUnauthorized) -// return -// } else { -// // Some other error. -// } -// } -// } -// -package auth - -import ( - "fmt" - "net/http" - - "github.com/docker/distribution/context" -) - -const ( - // UserKey is used to get the user object from - // a user context - UserKey = "auth.user" - - // UserNameKey is used to get the user name from - // a user context - UserNameKey = "auth.user.name" -) - -// UserInfo carries information about -// an autenticated/authorized client. -type UserInfo struct { - Name string -} - -// Resource describes a resource by type and name. -type Resource struct { - Type string - Name string -} - -// Access describes a specific action that is -// requested or allowed for a given resource. -type Access struct { - Resource - Action string -} - -// Challenge is a special error type which is used for HTTP 401 Unauthorized -// responses and is able to write the response with WWW-Authenticate challenge -// header values based on the error. -type Challenge interface { - error - - // SetHeaders prepares the request to conduct a challenge response by - // adding the an HTTP challenge header on the response message. Callers - // are expected to set the appropriate HTTP status code (e.g. 401) - // themselves. - SetHeaders(w http.ResponseWriter) -} - -// AccessController controls access to registry resources based on a request -// and required access levels for a request. Implementations can support both -// complete denial and http authorization challenges. -type AccessController interface { - // Authorized returns a non-nil error if the context is granted access and - // returns a new authorized context. If one or more Access structs are - // provided, the requested access will be compared with what is available - // to the context. The given context will contain a "http.request" key with - // a `*http.Request` value. If the error is non-nil, access should always - // be denied. The error may be of type Challenge, in which case the caller - // may have the Challenge handle the request or choose what action to take - // based on the Challenge header or response status. The returned context - // object should have a "auth.user" value set to a UserInfo struct. - Authorized(ctx context.Context, access ...Access) (context.Context, error) -} - -// WithUser returns a context with the authorized user info. -func WithUser(ctx context.Context, user UserInfo) context.Context { - return userInfoContext{ - Context: ctx, - user: user, - } -} - -type userInfoContext struct { - context.Context - user UserInfo -} - -func (uic userInfoContext) Value(key interface{}) interface{} { - switch key { - case UserKey: - return uic.user - case UserNameKey: - return uic.user.Name - } - - return uic.Context.Value(key) -} - -// InitFunc is the type of an AccessController factory function and is used -// to register the constructor for different AccesController backends. -type InitFunc func(options map[string]interface{}) (AccessController, error) - -var accessControllers map[string]InitFunc - -func init() { - accessControllers = make(map[string]InitFunc) -} - -// Register is used to register an InitFunc for -// an AccessController backend with the given name. -func Register(name string, initFunc InitFunc) error { - if _, exists := accessControllers[name]; exists { - return fmt.Errorf("name already registered: %s", name) - } - - accessControllers[name] = initFunc - - return nil -} - -// GetAccessController constructs an AccessController -// with the given options using the named backend. -func GetAccessController(name string, options map[string]interface{}) (AccessController, error) { - if initFunc, exists := accessControllers[name]; exists { - return initFunc(options) - } - - return nil, fmt.Errorf("no access controller registered with name: %s", name) -} diff --git a/vendor/github.com/docker/distribution/registry/auth/htpasswd/access.go b/vendor/github.com/docker/distribution/registry/auth/htpasswd/access.go deleted file mode 100644 index 6e7ba18096..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/htpasswd/access.go +++ /dev/null @@ -1,102 +0,0 @@ -// Package htpasswd provides a simple authentication scheme that checks for the -// user credential hash in an htpasswd formatted file in a configuration-determined -// location. -// -// This authentication method MUST be used under TLS, as simple token-replay attack is possible. -package htpasswd - -import ( - "errors" - "fmt" - "net/http" - "os" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" -) - -var ( - // ErrInvalidCredential is returned when the auth token does not authenticate correctly. - ErrInvalidCredential = errors.New("invalid authorization credential") - - // ErrAuthenticationFailure returned when authentication failure to be presented to agent. - ErrAuthenticationFailure = errors.New("authentication failure") -) - -type accessController struct { - realm string - htpasswd *htpasswd -} - -var _ auth.AccessController = &accessController{} - -func newAccessController(options map[string]interface{}) (auth.AccessController, error) { - realm, present := options["realm"] - if _, ok := realm.(string); !present || !ok { - return nil, fmt.Errorf(`"realm" must be set for htpasswd access controller`) - } - - path, present := options["path"] - if _, ok := path.(string); !present || !ok { - return nil, fmt.Errorf(`"path" must be set for htpasswd access controller`) - } - - f, err := os.Open(path.(string)) - if err != nil { - return nil, err - } - defer f.Close() - - h, err := newHTPasswd(f) - if err != nil { - return nil, err - } - - return &accessController{realm: realm.(string), htpasswd: h}, nil -} - -func (ac *accessController) Authorized(ctx context.Context, accessRecords ...auth.Access) (context.Context, error) { - req, err := context.GetRequest(ctx) - if err != nil { - return nil, err - } - - username, password, ok := req.BasicAuth() - if !ok { - return nil, &challenge{ - realm: ac.realm, - err: ErrInvalidCredential, - } - } - - if err := ac.htpasswd.authenticateUser(username, password); err != nil { - context.GetLogger(ctx).Errorf("error authenticating user %q: %v", username, err) - return nil, &challenge{ - realm: ac.realm, - err: ErrAuthenticationFailure, - } - } - - return auth.WithUser(ctx, auth.UserInfo{Name: username}), nil -} - -// challenge implements the auth.Challenge interface. -type challenge struct { - realm string - err error -} - -var _ auth.Challenge = challenge{} - -// SetHeaders sets the basic challenge header on the response. -func (ch challenge) SetHeaders(w http.ResponseWriter) { - w.Header().Set("WWW-Authenticate", fmt.Sprintf("Basic realm=%q", ch.realm)) -} - -func (ch challenge) Error() string { - return fmt.Sprintf("basic authentication challenge for realm %q: %s", ch.realm, ch.err) -} - -func init() { - auth.Register("htpasswd", auth.InitFunc(newAccessController)) -} diff --git a/vendor/github.com/docker/distribution/registry/auth/htpasswd/access_test.go b/vendor/github.com/docker/distribution/registry/auth/htpasswd/access_test.go deleted file mode 100644 index 553f05cf9a..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/htpasswd/access_test.go +++ /dev/null @@ -1,122 +0,0 @@ -package htpasswd - -import ( - "io/ioutil" - "net/http" - "net/http/httptest" - "testing" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" -) - -func TestBasicAccessController(t *testing.T) { - testRealm := "The-Shire" - testUsers := []string{"bilbo", "frodo", "MiShil", "DeokMan"} - testPasswords := []string{"baggins", "baggins", "새주", "공주님"} - testHtpasswdContent := `bilbo:{SHA}5siv5c0SHx681xU6GiSx9ZQryqs= - frodo:$2y$05$926C3y10Quzn/LnqQH86VOEVh/18T6RnLaS.khre96jLNL/7e.K5W - MiShil:$2y$05$0oHgwMehvoe8iAWS8I.7l.KoECXrwVaC16RPfaSCU5eVTFrATuMI2 - DeokMan:공주님` - - tempFile, err := ioutil.TempFile("", "htpasswd-test") - if err != nil { - t.Fatal("could not create temporary htpasswd file") - } - if _, err = tempFile.WriteString(testHtpasswdContent); err != nil { - t.Fatal("could not write temporary htpasswd file") - } - - options := map[string]interface{}{ - "realm": testRealm, - "path": tempFile.Name(), - } - ctx := context.Background() - - accessController, err := newAccessController(options) - if err != nil { - t.Fatal("error creating access controller") - } - - tempFile.Close() - - var userNumber = 0 - - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx := context.WithRequest(ctx, r) - authCtx, err := accessController.Authorized(ctx) - if err != nil { - switch err := err.(type) { - case auth.Challenge: - err.SetHeaders(w) - w.WriteHeader(http.StatusUnauthorized) - return - default: - t.Fatalf("unexpected error authorizing request: %v", err) - } - } - - userInfo, ok := authCtx.Value(auth.UserKey).(auth.UserInfo) - if !ok { - t.Fatal("basic accessController did not set auth.user context") - } - - if userInfo.Name != testUsers[userNumber] { - t.Fatalf("expected user name %q, got %q", testUsers[userNumber], userInfo.Name) - } - - w.WriteHeader(http.StatusNoContent) - })) - - client := &http.Client{ - CheckRedirect: nil, - } - - req, _ := http.NewRequest("GET", server.URL, nil) - resp, err := client.Do(req) - - if err != nil { - t.Fatalf("unexpected error during GET: %v", err) - } - defer resp.Body.Close() - - // Request should not be authorized - if resp.StatusCode != http.StatusUnauthorized { - t.Fatalf("unexpected non-fail response status: %v != %v", resp.StatusCode, http.StatusUnauthorized) - } - - nonbcrypt := map[string]struct{}{ - "bilbo": {}, - "DeokMan": {}, - } - - for i := 0; i < len(testUsers); i++ { - userNumber = i - req, err := http.NewRequest("GET", server.URL, nil) - if err != nil { - t.Fatalf("error allocating new request: %v", err) - } - - req.SetBasicAuth(testUsers[i], testPasswords[i]) - - resp, err = client.Do(req) - if err != nil { - t.Fatalf("unexpected error during GET: %v", err) - } - defer resp.Body.Close() - - if _, ok := nonbcrypt[testUsers[i]]; ok { - // these are not allowed. - // Request should be authorized - if resp.StatusCode != http.StatusUnauthorized { - t.Fatalf("unexpected non-success response status: %v != %v for %s %s", resp.StatusCode, http.StatusUnauthorized, testUsers[i], testPasswords[i]) - } - } else { - // Request should be authorized - if resp.StatusCode != http.StatusNoContent { - t.Fatalf("unexpected non-success response status: %v != %v for %s %s", resp.StatusCode, http.StatusNoContent, testUsers[i], testPasswords[i]) - } - } - } - -} diff --git a/vendor/github.com/docker/distribution/registry/auth/htpasswd/htpasswd.go b/vendor/github.com/docker/distribution/registry/auth/htpasswd/htpasswd.go deleted file mode 100644 index 494ad0a768..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/htpasswd/htpasswd.go +++ /dev/null @@ -1,80 +0,0 @@ -package htpasswd - -import ( - "bufio" - "fmt" - "io" - "strings" - - "golang.org/x/crypto/bcrypt" -) - -// htpasswd holds a path to a system .htpasswd file and the machinery to parse -// it. Only bcrypt hash entries are supported. -type htpasswd struct { - entries map[string][]byte // maps username to password byte slice. -} - -// newHTPasswd parses the reader and returns an htpasswd or an error. -func newHTPasswd(rd io.Reader) (*htpasswd, error) { - entries, err := parseHTPasswd(rd) - if err != nil { - return nil, err - } - - return &htpasswd{entries: entries}, nil -} - -// AuthenticateUser checks a given user:password credential against the -// receiving HTPasswd's file. If the check passes, nil is returned. -func (htpasswd *htpasswd) authenticateUser(username string, password string) error { - credentials, ok := htpasswd.entries[username] - if !ok { - // timing attack paranoia - bcrypt.CompareHashAndPassword([]byte{}, []byte(password)) - - return ErrAuthenticationFailure - } - - err := bcrypt.CompareHashAndPassword([]byte(credentials), []byte(password)) - if err != nil { - return ErrAuthenticationFailure - } - - return nil -} - -// parseHTPasswd parses the contents of htpasswd. This will read all the -// entries in the file, whether or not they are needed. An error is returned -// if an syntax errors are encountered or if the reader fails. -func parseHTPasswd(rd io.Reader) (map[string][]byte, error) { - entries := map[string][]byte{} - scanner := bufio.NewScanner(rd) - var line int - for scanner.Scan() { - line++ // 1-based line numbering - t := strings.TrimSpace(scanner.Text()) - - if len(t) < 1 { - continue - } - - // lines that *begin* with a '#' are considered comments - if t[0] == '#' { - continue - } - - i := strings.Index(t, ":") - if i < 0 || i >= len(t) { - return nil, fmt.Errorf("htpasswd: invalid entry at line %d: %q", line, scanner.Text()) - } - - entries[t[:i]] = []byte(t[i+1:]) - } - - if err := scanner.Err(); err != nil { - return nil, err - } - - return entries, nil -} diff --git a/vendor/github.com/docker/distribution/registry/auth/htpasswd/htpasswd_test.go b/vendor/github.com/docker/distribution/registry/auth/htpasswd/htpasswd_test.go deleted file mode 100644 index 309c359ad9..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/htpasswd/htpasswd_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package htpasswd - -import ( - "fmt" - "reflect" - "strings" - "testing" -) - -func TestParseHTPasswd(t *testing.T) { - - for _, tc := range []struct { - desc string - input string - err error - entries map[string][]byte - }{ - { - desc: "basic example", - input: ` -# This is a comment in a basic example. -bilbo:{SHA}5siv5c0SHx681xU6GiSx9ZQryqs= -frodo:$2y$05$926C3y10Quzn/LnqQH86VOEVh/18T6RnLaS.khre96jLNL/7e.K5W -MiShil:$2y$05$0oHgwMehvoe8iAWS8I.7l.KoECXrwVaC16RPfaSCU5eVTFrATuMI2 -DeokMan:공주님 -`, - entries: map[string][]byte{ - "bilbo": []byte("{SHA}5siv5c0SHx681xU6GiSx9ZQryqs="), - "frodo": []byte("$2y$05$926C3y10Quzn/LnqQH86VOEVh/18T6RnLaS.khre96jLNL/7e.K5W"), - "MiShil": []byte("$2y$05$0oHgwMehvoe8iAWS8I.7l.KoECXrwVaC16RPfaSCU5eVTFrATuMI2"), - "DeokMan": []byte("공주님"), - }, - }, - { - desc: "ensures comments are filtered", - input: ` -# asdf:asdf -`, - }, - { - desc: "ensure midline hash is not comment", - input: ` -asdf:as#df -`, - entries: map[string][]byte{ - "asdf": []byte("as#df"), - }, - }, - { - desc: "ensure midline hash is not comment", - input: ` -# A valid comment -valid:entry -asdf -`, - err: fmt.Errorf(`htpasswd: invalid entry at line 4: "asdf"`), - }, - } { - - entries, err := parseHTPasswd(strings.NewReader(tc.input)) - if err != tc.err { - if tc.err == nil { - t.Fatalf("%s: unexpected error: %v", tc.desc, err) - } else { - if err.Error() != tc.err.Error() { // use string equality here. - t.Fatalf("%s: expected error not returned: %v != %v", tc.desc, err, tc.err) - } - } - } - - if tc.err != nil { - continue // don't test output - } - - // allow empty and nil to be equal - if tc.entries == nil { - tc.entries = map[string][]byte{} - } - - if !reflect.DeepEqual(entries, tc.entries) { - t.Fatalf("%s: entries not parsed correctly: %v != %v", tc.desc, entries, tc.entries) - } - } - -} diff --git a/vendor/github.com/docker/distribution/registry/auth/silly/access.go b/vendor/github.com/docker/distribution/registry/auth/silly/access.go deleted file mode 100644 index 2b801d946e..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/silly/access.go +++ /dev/null @@ -1,97 +0,0 @@ -// Package silly provides a simple authentication scheme that checks for the -// existence of an Authorization header and issues access if is present and -// non-empty. -// -// This package is present as an example implementation of a minimal -// auth.AccessController and for testing. This is not suitable for any kind of -// production security. -package silly - -import ( - "fmt" - "net/http" - "strings" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" -) - -// accessController provides a simple implementation of auth.AccessController -// that simply checks for a non-empty Authorization header. It is useful for -// demonstration and testing. -type accessController struct { - realm string - service string -} - -var _ auth.AccessController = &accessController{} - -func newAccessController(options map[string]interface{}) (auth.AccessController, error) { - realm, present := options["realm"] - if _, ok := realm.(string); !present || !ok { - return nil, fmt.Errorf(`"realm" must be set for silly access controller`) - } - - service, present := options["service"] - if _, ok := service.(string); !present || !ok { - return nil, fmt.Errorf(`"service" must be set for silly access controller`) - } - - return &accessController{realm: realm.(string), service: service.(string)}, nil -} - -// Authorized simply checks for the existence of the authorization header, -// responding with a bearer challenge if it doesn't exist. -func (ac *accessController) Authorized(ctx context.Context, accessRecords ...auth.Access) (context.Context, error) { - req, err := context.GetRequest(ctx) - if err != nil { - return nil, err - } - - if req.Header.Get("Authorization") == "" { - challenge := challenge{ - realm: ac.realm, - service: ac.service, - } - - if len(accessRecords) > 0 { - var scopes []string - for _, access := range accessRecords { - scopes = append(scopes, fmt.Sprintf("%s:%s:%s", access.Type, access.Resource.Name, access.Action)) - } - challenge.scope = strings.Join(scopes, " ") - } - - return nil, &challenge - } - - return auth.WithUser(ctx, auth.UserInfo{Name: "silly"}), nil -} - -type challenge struct { - realm string - service string - scope string -} - -var _ auth.Challenge = challenge{} - -// SetHeaders sets a simple bearer challenge on the response. -func (ch challenge) SetHeaders(w http.ResponseWriter) { - header := fmt.Sprintf("Bearer realm=%q,service=%q", ch.realm, ch.service) - - if ch.scope != "" { - header = fmt.Sprintf("%s,scope=%q", header, ch.scope) - } - - w.Header().Set("WWW-Authenticate", header) -} - -func (ch challenge) Error() string { - return fmt.Sprintf("silly authentication challenge: %#v", ch) -} - -// init registers the silly auth backend. -func init() { - auth.Register("silly", auth.InitFunc(newAccessController)) -} diff --git a/vendor/github.com/docker/distribution/registry/auth/silly/access_test.go b/vendor/github.com/docker/distribution/registry/auth/silly/access_test.go deleted file mode 100644 index a7c14cb9d6..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/silly/access_test.go +++ /dev/null @@ -1,71 +0,0 @@ -package silly - -import ( - "net/http" - "net/http/httptest" - "testing" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" -) - -func TestSillyAccessController(t *testing.T) { - ac := &accessController{ - realm: "test-realm", - service: "test-service", - } - - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx := context.WithValue(nil, "http.request", r) - authCtx, err := ac.Authorized(ctx) - if err != nil { - switch err := err.(type) { - case auth.Challenge: - err.SetHeaders(w) - w.WriteHeader(http.StatusUnauthorized) - return - default: - t.Fatalf("unexpected error authorizing request: %v", err) - } - } - - userInfo, ok := authCtx.Value(auth.UserKey).(auth.UserInfo) - if !ok { - t.Fatal("silly accessController did not set auth.user context") - } - - if userInfo.Name != "silly" { - t.Fatalf("expected user name %q, got %q", "silly", userInfo.Name) - } - - w.WriteHeader(http.StatusNoContent) - })) - - resp, err := http.Get(server.URL) - if err != nil { - t.Fatalf("unexpected error during GET: %v", err) - } - defer resp.Body.Close() - - // Request should not be authorized - if resp.StatusCode != http.StatusUnauthorized { - t.Fatalf("unexpected response status: %v != %v", resp.StatusCode, http.StatusUnauthorized) - } - - req, err := http.NewRequest("GET", server.URL, nil) - if err != nil { - t.Fatalf("unexpected error creating new request: %v", err) - } - req.Header.Set("Authorization", "seriously, anything") - - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("unexpected error during GET: %v", err) - } - defer resp.Body.Close() - - // Request should not be authorized - if resp.StatusCode != http.StatusNoContent { - t.Fatalf("unexpected response status: %v != %v", resp.StatusCode, http.StatusNoContent) - } -} diff --git a/vendor/github.com/docker/distribution/registry/auth/token/accesscontroller.go b/vendor/github.com/docker/distribution/registry/auth/token/accesscontroller.go deleted file mode 100644 index 5b1ff7caa9..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/token/accesscontroller.go +++ /dev/null @@ -1,268 +0,0 @@ -package token - -import ( - "crypto" - "crypto/x509" - "encoding/pem" - "errors" - "fmt" - "io/ioutil" - "net/http" - "os" - "strings" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" - "github.com/docker/libtrust" -) - -// accessSet maps a typed, named resource to -// a set of actions requested or authorized. -type accessSet map[auth.Resource]actionSet - -// newAccessSet constructs an accessSet from -// a variable number of auth.Access items. -func newAccessSet(accessItems ...auth.Access) accessSet { - accessSet := make(accessSet, len(accessItems)) - - for _, access := range accessItems { - resource := auth.Resource{ - Type: access.Type, - Name: access.Name, - } - - set, exists := accessSet[resource] - if !exists { - set = newActionSet() - accessSet[resource] = set - } - - set.add(access.Action) - } - - return accessSet -} - -// contains returns whether or not the given access is in this accessSet. -func (s accessSet) contains(access auth.Access) bool { - actionSet, ok := s[access.Resource] - if ok { - return actionSet.contains(access.Action) - } - - return false -} - -// scopeParam returns a collection of scopes which can -// be used for a WWW-Authenticate challenge parameter. -// See https://tools.ietf.org/html/rfc6750#section-3 -func (s accessSet) scopeParam() string { - scopes := make([]string, 0, len(s)) - - for resource, actionSet := range s { - actions := strings.Join(actionSet.keys(), ",") - scopes = append(scopes, fmt.Sprintf("%s:%s:%s", resource.Type, resource.Name, actions)) - } - - return strings.Join(scopes, " ") -} - -// Errors used and exported by this package. -var ( - ErrInsufficientScope = errors.New("insufficient scope") - ErrTokenRequired = errors.New("authorization token required") -) - -// authChallenge implements the auth.Challenge interface. -type authChallenge struct { - err error - realm string - service string - accessSet accessSet -} - -var _ auth.Challenge = authChallenge{} - -// Error returns the internal error string for this authChallenge. -func (ac authChallenge) Error() string { - return ac.err.Error() -} - -// Status returns the HTTP Response Status Code for this authChallenge. -func (ac authChallenge) Status() int { - return http.StatusUnauthorized -} - -// challengeParams constructs the value to be used in -// the WWW-Authenticate response challenge header. -// See https://tools.ietf.org/html/rfc6750#section-3 -func (ac authChallenge) challengeParams() string { - str := fmt.Sprintf("Bearer realm=%q,service=%q", ac.realm, ac.service) - - if scope := ac.accessSet.scopeParam(); scope != "" { - str = fmt.Sprintf("%s,scope=%q", str, scope) - } - - if ac.err == ErrInvalidToken || ac.err == ErrMalformedToken { - str = fmt.Sprintf("%s,error=%q", str, "invalid_token") - } else if ac.err == ErrInsufficientScope { - str = fmt.Sprintf("%s,error=%q", str, "insufficient_scope") - } - - return str -} - -// SetChallenge sets the WWW-Authenticate value for the response. -func (ac authChallenge) SetHeaders(w http.ResponseWriter) { - w.Header().Add("WWW-Authenticate", ac.challengeParams()) -} - -// accessController implements the auth.AccessController interface. -type accessController struct { - realm string - issuer string - service string - rootCerts *x509.CertPool - trustedKeys map[string]libtrust.PublicKey -} - -// tokenAccessOptions is a convenience type for handling -// options to the contstructor of an accessController. -type tokenAccessOptions struct { - realm string - issuer string - service string - rootCertBundle string -} - -// checkOptions gathers the necessary options -// for an accessController from the given map. -func checkOptions(options map[string]interface{}) (tokenAccessOptions, error) { - var opts tokenAccessOptions - - keys := []string{"realm", "issuer", "service", "rootcertbundle"} - vals := make([]string, 0, len(keys)) - for _, key := range keys { - val, ok := options[key].(string) - if !ok { - return opts, fmt.Errorf("token auth requires a valid option string: %q", key) - } - vals = append(vals, val) - } - - opts.realm, opts.issuer, opts.service, opts.rootCertBundle = vals[0], vals[1], vals[2], vals[3] - - return opts, nil -} - -// newAccessController creates an accessController using the given options. -func newAccessController(options map[string]interface{}) (auth.AccessController, error) { - config, err := checkOptions(options) - if err != nil { - return nil, err - } - - fp, err := os.Open(config.rootCertBundle) - if err != nil { - return nil, fmt.Errorf("unable to open token auth root certificate bundle file %q: %s", config.rootCertBundle, err) - } - defer fp.Close() - - rawCertBundle, err := ioutil.ReadAll(fp) - if err != nil { - return nil, fmt.Errorf("unable to read token auth root certificate bundle file %q: %s", config.rootCertBundle, err) - } - - var rootCerts []*x509.Certificate - pemBlock, rawCertBundle := pem.Decode(rawCertBundle) - for pemBlock != nil { - cert, err := x509.ParseCertificate(pemBlock.Bytes) - if err != nil { - return nil, fmt.Errorf("unable to parse token auth root certificate: %s", err) - } - - rootCerts = append(rootCerts, cert) - - pemBlock, rawCertBundle = pem.Decode(rawCertBundle) - } - - if len(rootCerts) == 0 { - return nil, errors.New("token auth requires at least one token signing root certificate") - } - - rootPool := x509.NewCertPool() - trustedKeys := make(map[string]libtrust.PublicKey, len(rootCerts)) - for _, rootCert := range rootCerts { - rootPool.AddCert(rootCert) - pubKey, err := libtrust.FromCryptoPublicKey(crypto.PublicKey(rootCert.PublicKey)) - if err != nil { - return nil, fmt.Errorf("unable to get public key from token auth root certificate: %s", err) - } - trustedKeys[pubKey.KeyID()] = pubKey - } - - return &accessController{ - realm: config.realm, - issuer: config.issuer, - service: config.service, - rootCerts: rootPool, - trustedKeys: trustedKeys, - }, nil -} - -// Authorized handles checking whether the given request is authorized -// for actions on resources described by the given access items. -func (ac *accessController) Authorized(ctx context.Context, accessItems ...auth.Access) (context.Context, error) { - challenge := &authChallenge{ - realm: ac.realm, - service: ac.service, - accessSet: newAccessSet(accessItems...), - } - - req, err := context.GetRequest(ctx) - if err != nil { - return nil, err - } - - parts := strings.Split(req.Header.Get("Authorization"), " ") - - if len(parts) != 2 || strings.ToLower(parts[0]) != "bearer" { - challenge.err = ErrTokenRequired - return nil, challenge - } - - rawToken := parts[1] - - token, err := NewToken(rawToken) - if err != nil { - challenge.err = err - return nil, challenge - } - - verifyOpts := VerifyOptions{ - TrustedIssuers: []string{ac.issuer}, - AcceptedAudiences: []string{ac.service}, - Roots: ac.rootCerts, - TrustedKeys: ac.trustedKeys, - } - - if err = token.Verify(verifyOpts); err != nil { - challenge.err = err - return nil, challenge - } - - accessSet := token.accessSet() - for _, access := range accessItems { - if !accessSet.contains(access) { - challenge.err = ErrInsufficientScope - return nil, challenge - } - } - - return auth.WithUser(ctx, auth.UserInfo{Name: token.Claims.Subject}), nil -} - -// init handles registering the token auth backend. -func init() { - auth.Register("token", auth.InitFunc(newAccessController)) -} diff --git a/vendor/github.com/docker/distribution/registry/auth/token/stringset.go b/vendor/github.com/docker/distribution/registry/auth/token/stringset.go deleted file mode 100644 index 1d04f104c5..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/token/stringset.go +++ /dev/null @@ -1,35 +0,0 @@ -package token - -// StringSet is a useful type for looking up strings. -type stringSet map[string]struct{} - -// NewStringSet creates a new StringSet with the given strings. -func newStringSet(keys ...string) stringSet { - ss := make(stringSet, len(keys)) - ss.add(keys...) - return ss -} - -// Add inserts the given keys into this StringSet. -func (ss stringSet) add(keys ...string) { - for _, key := range keys { - ss[key] = struct{}{} - } -} - -// Contains returns whether the given key is in this StringSet. -func (ss stringSet) contains(key string) bool { - _, ok := ss[key] - return ok -} - -// Keys returns a slice of all keys in this StringSet. -func (ss stringSet) keys() []string { - keys := make([]string, 0, len(ss)) - - for key := range ss { - keys = append(keys, key) - } - - return keys -} diff --git a/vendor/github.com/docker/distribution/registry/auth/token/token.go b/vendor/github.com/docker/distribution/registry/auth/token/token.go deleted file mode 100644 index 2598f362a1..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/token/token.go +++ /dev/null @@ -1,343 +0,0 @@ -package token - -import ( - "crypto" - "crypto/x509" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "strings" - "time" - - log "github.com/Sirupsen/logrus" - "github.com/docker/libtrust" - - "github.com/docker/distribution/registry/auth" -) - -const ( - // TokenSeparator is the value which separates the header, claims, and - // signature in the compact serialization of a JSON Web Token. - TokenSeparator = "." -) - -// Errors used by token parsing and verification. -var ( - ErrMalformedToken = errors.New("malformed token") - ErrInvalidToken = errors.New("invalid token") -) - -// ResourceActions stores allowed actions on a named and typed resource. -type ResourceActions struct { - Type string `json:"type"` - Name string `json:"name"` - Actions []string `json:"actions"` -} - -// ClaimSet describes the main section of a JSON Web Token. -type ClaimSet struct { - // Public claims - Issuer string `json:"iss"` - Subject string `json:"sub"` - Audience string `json:"aud"` - Expiration int64 `json:"exp"` - NotBefore int64 `json:"nbf"` - IssuedAt int64 `json:"iat"` - JWTID string `json:"jti"` - - // Private claims - Access []*ResourceActions `json:"access"` -} - -// Header describes the header section of a JSON Web Token. -type Header struct { - Type string `json:"typ"` - SigningAlg string `json:"alg"` - KeyID string `json:"kid,omitempty"` - X5c []string `json:"x5c,omitempty"` - RawJWK *json.RawMessage `json:"jwk,omitempty"` -} - -// Token describes a JSON Web Token. -type Token struct { - Raw string - Header *Header - Claims *ClaimSet - Signature []byte -} - -// VerifyOptions is used to specify -// options when verifying a JSON Web Token. -type VerifyOptions struct { - TrustedIssuers []string - AcceptedAudiences []string - Roots *x509.CertPool - TrustedKeys map[string]libtrust.PublicKey -} - -// NewToken parses the given raw token string -// and constructs an unverified JSON Web Token. -func NewToken(rawToken string) (*Token, error) { - parts := strings.Split(rawToken, TokenSeparator) - if len(parts) != 3 { - return nil, ErrMalformedToken - } - - var ( - rawHeader, rawClaims = parts[0], parts[1] - headerJSON, claimsJSON []byte - err error - ) - - defer func() { - if err != nil { - log.Errorf("error while unmarshalling raw token: %s", err) - } - }() - - if headerJSON, err = joseBase64UrlDecode(rawHeader); err != nil { - err = fmt.Errorf("unable to decode header: %s", err) - return nil, ErrMalformedToken - } - - if claimsJSON, err = joseBase64UrlDecode(rawClaims); err != nil { - err = fmt.Errorf("unable to decode claims: %s", err) - return nil, ErrMalformedToken - } - - token := new(Token) - token.Header = new(Header) - token.Claims = new(ClaimSet) - - token.Raw = strings.Join(parts[:2], TokenSeparator) - if token.Signature, err = joseBase64UrlDecode(parts[2]); err != nil { - err = fmt.Errorf("unable to decode signature: %s", err) - return nil, ErrMalformedToken - } - - if err = json.Unmarshal(headerJSON, token.Header); err != nil { - return nil, ErrMalformedToken - } - - if err = json.Unmarshal(claimsJSON, token.Claims); err != nil { - return nil, ErrMalformedToken - } - - return token, nil -} - -// Verify attempts to verify this token using the given options. -// Returns a nil error if the token is valid. -func (t *Token) Verify(verifyOpts VerifyOptions) error { - // Verify that the Issuer claim is a trusted authority. - if !contains(verifyOpts.TrustedIssuers, t.Claims.Issuer) { - log.Errorf("token from untrusted issuer: %q", t.Claims.Issuer) - return ErrInvalidToken - } - - // Verify that the Audience claim is allowed. - if !contains(verifyOpts.AcceptedAudiences, t.Claims.Audience) { - log.Errorf("token intended for another audience: %q", t.Claims.Audience) - return ErrInvalidToken - } - - // Verify that the token is currently usable and not expired. - currentUnixTime := time.Now().Unix() - if !(t.Claims.NotBefore <= currentUnixTime && currentUnixTime <= t.Claims.Expiration) { - log.Errorf("token not to be used before %d or after %d - currently %d", t.Claims.NotBefore, t.Claims.Expiration, currentUnixTime) - return ErrInvalidToken - } - - // Verify the token signature. - if len(t.Signature) == 0 { - log.Error("token has no signature") - return ErrInvalidToken - } - - // Verify that the signing key is trusted. - signingKey, err := t.VerifySigningKey(verifyOpts) - if err != nil { - log.Error(err) - return ErrInvalidToken - } - - // Finally, verify the signature of the token using the key which signed it. - if err := signingKey.Verify(strings.NewReader(t.Raw), t.Header.SigningAlg, t.Signature); err != nil { - log.Errorf("unable to verify token signature: %s", err) - return ErrInvalidToken - } - - return nil -} - -// VerifySigningKey attempts to get the key which was used to sign this token. -// The token header should contain either of these 3 fields: -// `x5c` - The x509 certificate chain for the signing key. Needs to be -// verified. -// `jwk` - The JSON Web Key representation of the signing key. -// May contain its own `x5c` field which needs to be verified. -// `kid` - The unique identifier for the key. This library interprets it -// as a libtrust fingerprint. The key itself can be looked up in -// the trustedKeys field of the given verify options. -// Each of these methods are tried in that order of preference until the -// signing key is found or an error is returned. -func (t *Token) VerifySigningKey(verifyOpts VerifyOptions) (signingKey libtrust.PublicKey, err error) { - // First attempt to get an x509 certificate chain from the header. - var ( - x5c = t.Header.X5c - rawJWK = t.Header.RawJWK - keyID = t.Header.KeyID - ) - - switch { - case len(x5c) > 0: - signingKey, err = parseAndVerifyCertChain(x5c, verifyOpts.Roots) - case rawJWK != nil: - signingKey, err = parseAndVerifyRawJWK(rawJWK, verifyOpts) - case len(keyID) > 0: - signingKey = verifyOpts.TrustedKeys[keyID] - if signingKey == nil { - err = fmt.Errorf("token signed by untrusted key with ID: %q", keyID) - } - default: - err = errors.New("unable to get token signing key") - } - - return -} - -func parseAndVerifyCertChain(x5c []string, roots *x509.CertPool) (leafKey libtrust.PublicKey, err error) { - if len(x5c) == 0 { - return nil, errors.New("empty x509 certificate chain") - } - - // Ensure the first element is encoded correctly. - leafCertDer, err := base64.StdEncoding.DecodeString(x5c[0]) - if err != nil { - return nil, fmt.Errorf("unable to decode leaf certificate: %s", err) - } - - // And that it is a valid x509 certificate. - leafCert, err := x509.ParseCertificate(leafCertDer) - if err != nil { - return nil, fmt.Errorf("unable to parse leaf certificate: %s", err) - } - - // The rest of the certificate chain are intermediate certificates. - intermediates := x509.NewCertPool() - for i := 1; i < len(x5c); i++ { - intermediateCertDer, err := base64.StdEncoding.DecodeString(x5c[i]) - if err != nil { - return nil, fmt.Errorf("unable to decode intermediate certificate: %s", err) - } - - intermediateCert, err := x509.ParseCertificate(intermediateCertDer) - if err != nil { - return nil, fmt.Errorf("unable to parse intermediate certificate: %s", err) - } - - intermediates.AddCert(intermediateCert) - } - - verifyOpts := x509.VerifyOptions{ - Intermediates: intermediates, - Roots: roots, - KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageAny}, - } - - // TODO: this call returns certificate chains which we ignore for now, but - // we should check them for revocations if we have the ability later. - if _, err = leafCert.Verify(verifyOpts); err != nil { - return nil, fmt.Errorf("unable to verify certificate chain: %s", err) - } - - // Get the public key from the leaf certificate. - leafCryptoKey, ok := leafCert.PublicKey.(crypto.PublicKey) - if !ok { - return nil, errors.New("unable to get leaf cert public key value") - } - - leafKey, err = libtrust.FromCryptoPublicKey(leafCryptoKey) - if err != nil { - return nil, fmt.Errorf("unable to make libtrust public key from leaf certificate: %s", err) - } - - return -} - -func parseAndVerifyRawJWK(rawJWK *json.RawMessage, verifyOpts VerifyOptions) (pubKey libtrust.PublicKey, err error) { - pubKey, err = libtrust.UnmarshalPublicKeyJWK([]byte(*rawJWK)) - if err != nil { - return nil, fmt.Errorf("unable to decode raw JWK value: %s", err) - } - - // Check to see if the key includes a certificate chain. - x5cVal, ok := pubKey.GetExtendedField("x5c").([]interface{}) - if !ok { - // The JWK should be one of the trusted root keys. - if _, trusted := verifyOpts.TrustedKeys[pubKey.KeyID()]; !trusted { - return nil, errors.New("untrusted JWK with no certificate chain") - } - - // The JWK is one of the trusted keys. - return - } - - // Ensure each item in the chain is of the correct type. - x5c := make([]string, len(x5cVal)) - for i, val := range x5cVal { - certString, ok := val.(string) - if !ok || len(certString) == 0 { - return nil, errors.New("malformed certificate chain") - } - x5c[i] = certString - } - - // Ensure that the x509 certificate chain can - // be verified up to one of our trusted roots. - leafKey, err := parseAndVerifyCertChain(x5c, verifyOpts.Roots) - if err != nil { - return nil, fmt.Errorf("could not verify JWK certificate chain: %s", err) - } - - // Verify that the public key in the leaf cert *is* the signing key. - if pubKey.KeyID() != leafKey.KeyID() { - return nil, errors.New("leaf certificate public key ID does not match JWK key ID") - } - - return -} - -// accessSet returns a set of actions available for the resource -// actions listed in the `access` section of this token. -func (t *Token) accessSet() accessSet { - if t.Claims == nil { - return nil - } - - accessSet := make(accessSet, len(t.Claims.Access)) - - for _, resourceActions := range t.Claims.Access { - resource := auth.Resource{ - Type: resourceActions.Type, - Name: resourceActions.Name, - } - - set, exists := accessSet[resource] - if !exists { - set = newActionSet() - accessSet[resource] = set - } - - for _, action := range resourceActions.Actions { - set.add(action) - } - } - - return accessSet -} - -func (t *Token) compactRaw() string { - return fmt.Sprintf("%s.%s", t.Raw, joseBase64UrlEncode(t.Signature)) -} diff --git a/vendor/github.com/docker/distribution/registry/auth/token/token_test.go b/vendor/github.com/docker/distribution/registry/auth/token/token_test.go deleted file mode 100644 index 827dbbd757..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/token/token_test.go +++ /dev/null @@ -1,387 +0,0 @@ -package token - -import ( - "crypto" - "crypto/rand" - "crypto/x509" - "encoding/base64" - "encoding/json" - "encoding/pem" - "fmt" - "io/ioutil" - "net/http" - "os" - "strings" - "testing" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/auth" - "github.com/docker/libtrust" -) - -func makeRootKeys(numKeys int) ([]libtrust.PrivateKey, error) { - keys := make([]libtrust.PrivateKey, 0, numKeys) - - for i := 0; i < numKeys; i++ { - key, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - return nil, err - } - keys = append(keys, key) - } - - return keys, nil -} - -func makeSigningKeyWithChain(rootKey libtrust.PrivateKey, depth int) (libtrust.PrivateKey, error) { - if depth == 0 { - // Don't need to build a chain. - return rootKey, nil - } - - var ( - x5c = make([]string, depth) - parentKey = rootKey - key libtrust.PrivateKey - cert *x509.Certificate - err error - ) - - for depth > 0 { - if key, err = libtrust.GenerateECP256PrivateKey(); err != nil { - return nil, err - } - - if cert, err = libtrust.GenerateCACert(parentKey, key); err != nil { - return nil, err - } - - depth-- - x5c[depth] = base64.StdEncoding.EncodeToString(cert.Raw) - parentKey = key - } - - key.AddExtendedField("x5c", x5c) - - return key, nil -} - -func makeRootCerts(rootKeys []libtrust.PrivateKey) ([]*x509.Certificate, error) { - certs := make([]*x509.Certificate, 0, len(rootKeys)) - - for _, key := range rootKeys { - cert, err := libtrust.GenerateCACert(key, key) - if err != nil { - return nil, err - } - certs = append(certs, cert) - } - - return certs, nil -} - -func makeTrustedKeyMap(rootKeys []libtrust.PrivateKey) map[string]libtrust.PublicKey { - trustedKeys := make(map[string]libtrust.PublicKey, len(rootKeys)) - - for _, key := range rootKeys { - trustedKeys[key.KeyID()] = key.PublicKey() - } - - return trustedKeys -} - -func makeTestToken(issuer, audience string, access []*ResourceActions, rootKey libtrust.PrivateKey, depth int) (*Token, error) { - signingKey, err := makeSigningKeyWithChain(rootKey, depth) - if err != nil { - return nil, fmt.Errorf("unable to make signing key with chain: %s", err) - } - - var rawJWK json.RawMessage - rawJWK, err = signingKey.PublicKey().MarshalJSON() - if err != nil { - return nil, fmt.Errorf("unable to marshal signing key to JSON: %s", err) - } - - joseHeader := &Header{ - Type: "JWT", - SigningAlg: "ES256", - RawJWK: &rawJWK, - } - - now := time.Now() - - randomBytes := make([]byte, 15) - if _, err = rand.Read(randomBytes); err != nil { - return nil, fmt.Errorf("unable to read random bytes for jwt id: %s", err) - } - - claimSet := &ClaimSet{ - Issuer: issuer, - Subject: "foo", - Audience: audience, - Expiration: now.Add(5 * time.Minute).Unix(), - NotBefore: now.Unix(), - IssuedAt: now.Unix(), - JWTID: base64.URLEncoding.EncodeToString(randomBytes), - Access: access, - } - - var joseHeaderBytes, claimSetBytes []byte - - if joseHeaderBytes, err = json.Marshal(joseHeader); err != nil { - return nil, fmt.Errorf("unable to marshal jose header: %s", err) - } - if claimSetBytes, err = json.Marshal(claimSet); err != nil { - return nil, fmt.Errorf("unable to marshal claim set: %s", err) - } - - encodedJoseHeader := joseBase64UrlEncode(joseHeaderBytes) - encodedClaimSet := joseBase64UrlEncode(claimSetBytes) - encodingToSign := fmt.Sprintf("%s.%s", encodedJoseHeader, encodedClaimSet) - - var signatureBytes []byte - if signatureBytes, _, err = signingKey.Sign(strings.NewReader(encodingToSign), crypto.SHA256); err != nil { - return nil, fmt.Errorf("unable to sign jwt payload: %s", err) - } - - signature := joseBase64UrlEncode(signatureBytes) - tokenString := fmt.Sprintf("%s.%s", encodingToSign, signature) - - return NewToken(tokenString) -} - -// This test makes 4 tokens with a varying number of intermediate -// certificates ranging from no intermediate chain to a length of 3 -// intermediates. -func TestTokenVerify(t *testing.T) { - var ( - numTokens = 4 - issuer = "test-issuer" - audience = "test-audience" - access = []*ResourceActions{ - { - Type: "repository", - Name: "foo/bar", - Actions: []string{"pull", "push"}, - }, - } - ) - - rootKeys, err := makeRootKeys(numTokens) - if err != nil { - t.Fatal(err) - } - - rootCerts, err := makeRootCerts(rootKeys) - if err != nil { - t.Fatal(err) - } - - rootPool := x509.NewCertPool() - for _, rootCert := range rootCerts { - rootPool.AddCert(rootCert) - } - - trustedKeys := makeTrustedKeyMap(rootKeys) - - tokens := make([]*Token, 0, numTokens) - - for i := 0; i < numTokens; i++ { - token, err := makeTestToken(issuer, audience, access, rootKeys[i], i) - if err != nil { - t.Fatal(err) - } - tokens = append(tokens, token) - } - - verifyOps := VerifyOptions{ - TrustedIssuers: []string{issuer}, - AcceptedAudiences: []string{audience}, - Roots: rootPool, - TrustedKeys: trustedKeys, - } - - for _, token := range tokens { - if err := token.Verify(verifyOps); err != nil { - t.Fatal(err) - } - } -} - -func writeTempRootCerts(rootKeys []libtrust.PrivateKey) (filename string, err error) { - rootCerts, err := makeRootCerts(rootKeys) - if err != nil { - return "", err - } - - tempFile, err := ioutil.TempFile("", "rootCertBundle") - if err != nil { - return "", err - } - defer tempFile.Close() - - for _, cert := range rootCerts { - if err = pem.Encode(tempFile, &pem.Block{ - Type: "CERTIFICATE", - Bytes: cert.Raw, - }); err != nil { - os.Remove(tempFile.Name()) - return "", err - } - } - - return tempFile.Name(), nil -} - -// TestAccessController tests complete integration of the token auth package. -// It starts by mocking the options for a token auth accessController which -// it creates. It then tries a few mock requests: -// - don't supply a token; should error with challenge -// - supply an invalid token; should error with challenge -// - supply a token with insufficient access; should error with challenge -// - supply a valid token; should not error -func TestAccessController(t *testing.T) { - // Make 2 keys; only the first is to be a trusted root key. - rootKeys, err := makeRootKeys(2) - if err != nil { - t.Fatal(err) - } - - rootCertBundleFilename, err := writeTempRootCerts(rootKeys[:1]) - if err != nil { - t.Fatal(err) - } - defer os.Remove(rootCertBundleFilename) - - realm := "https://auth.example.com/token/" - issuer := "test-issuer.example.com" - service := "test-service.example.com" - - options := map[string]interface{}{ - "realm": realm, - "issuer": issuer, - "service": service, - "rootcertbundle": rootCertBundleFilename, - } - - accessController, err := newAccessController(options) - if err != nil { - t.Fatal(err) - } - - // 1. Make a mock http.Request with no token. - req, err := http.NewRequest("GET", "http://example.com/foo", nil) - if err != nil { - t.Fatal(err) - } - - testAccess := auth.Access{ - Resource: auth.Resource{ - Type: "foo", - Name: "bar", - }, - Action: "baz", - } - - ctx := context.WithValue(nil, "http.request", req) - authCtx, err := accessController.Authorized(ctx, testAccess) - challenge, ok := err.(auth.Challenge) - if !ok { - t.Fatal("accessController did not return a challenge") - } - - if challenge.Error() != ErrTokenRequired.Error() { - t.Fatalf("accessControler did not get expected error - got %s - expected %s", challenge, ErrTokenRequired) - } - - if authCtx != nil { - t.Fatalf("expected nil auth context but got %s", authCtx) - } - - // 2. Supply an invalid token. - token, err := makeTestToken( - issuer, service, - []*ResourceActions{{ - Type: testAccess.Type, - Name: testAccess.Name, - Actions: []string{testAccess.Action}, - }}, - rootKeys[1], 1, // Everything is valid except the key which signed it. - ) - if err != nil { - t.Fatal(err) - } - - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.compactRaw())) - - authCtx, err = accessController.Authorized(ctx, testAccess) - challenge, ok = err.(auth.Challenge) - if !ok { - t.Fatal("accessController did not return a challenge") - } - - if challenge.Error() != ErrInvalidToken.Error() { - t.Fatalf("accessControler did not get expected error - got %s - expected %s", challenge, ErrTokenRequired) - } - - if authCtx != nil { - t.Fatalf("expected nil auth context but got %s", authCtx) - } - - // 3. Supply a token with insufficient access. - token, err = makeTestToken( - issuer, service, - []*ResourceActions{}, // No access specified. - rootKeys[0], 1, - ) - if err != nil { - t.Fatal(err) - } - - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.compactRaw())) - - authCtx, err = accessController.Authorized(ctx, testAccess) - challenge, ok = err.(auth.Challenge) - if !ok { - t.Fatal("accessController did not return a challenge") - } - - if challenge.Error() != ErrInsufficientScope.Error() { - t.Fatalf("accessControler did not get expected error - got %s - expected %s", challenge, ErrInsufficientScope) - } - - if authCtx != nil { - t.Fatalf("expected nil auth context but got %s", authCtx) - } - - // 4. Supply the token we need, or deserve, or whatever. - token, err = makeTestToken( - issuer, service, - []*ResourceActions{{ - Type: testAccess.Type, - Name: testAccess.Name, - Actions: []string{testAccess.Action}, - }}, - rootKeys[0], 1, - ) - if err != nil { - t.Fatal(err) - } - - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.compactRaw())) - - authCtx, err = accessController.Authorized(ctx, testAccess) - if err != nil { - t.Fatalf("accessController returned unexpected error: %s", err) - } - - userInfo, ok := authCtx.Value(auth.UserKey).(auth.UserInfo) - if !ok { - t.Fatal("token accessController did not set auth.user context") - } - - if userInfo.Name != "foo" { - t.Fatalf("expected user name %q, got %q", "foo", userInfo.Name) - } -} diff --git a/vendor/github.com/docker/distribution/registry/auth/token/util.go b/vendor/github.com/docker/distribution/registry/auth/token/util.go deleted file mode 100644 index d7f95be421..0000000000 --- a/vendor/github.com/docker/distribution/registry/auth/token/util.go +++ /dev/null @@ -1,58 +0,0 @@ -package token - -import ( - "encoding/base64" - "errors" - "strings" -) - -// joseBase64UrlEncode encodes the given data using the standard base64 url -// encoding format but with all trailing '=' characters omitted in accordance -// with the jose specification. -// http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-31#section-2 -func joseBase64UrlEncode(b []byte) string { - return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=") -} - -// joseBase64UrlDecode decodes the given string using the standard base64 url -// decoder but first adds the appropriate number of trailing '=' characters in -// accordance with the jose specification. -// http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-31#section-2 -func joseBase64UrlDecode(s string) ([]byte, error) { - switch len(s) % 4 { - case 0: - case 2: - s += "==" - case 3: - s += "=" - default: - return nil, errors.New("illegal base64url string") - } - return base64.URLEncoding.DecodeString(s) -} - -// actionSet is a special type of stringSet. -type actionSet struct { - stringSet -} - -func newActionSet(actions ...string) actionSet { - return actionSet{newStringSet(actions...)} -} - -// Contains calls StringSet.Contains() for -// either "*" or the given action string. -func (s actionSet) contains(action string) bool { - return s.stringSet.contains("*") || s.stringSet.contains(action) -} - -// contains returns true if q is found in ss. -func contains(ss []string, q string) bool { - for _, s := range ss { - if s == q { - return true - } - } - - return false -} diff --git a/vendor/github.com/docker/distribution/registry/client/auth/api_version.go b/vendor/github.com/docker/distribution/registry/client/auth/api_version.go deleted file mode 100644 index 7d8f1d9576..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/auth/api_version.go +++ /dev/null @@ -1,58 +0,0 @@ -package auth - -import ( - "net/http" - "strings" -) - -// APIVersion represents a version of an API including its -// type and version number. -type APIVersion struct { - // Type refers to the name of a specific API specification - // such as "registry" - Type string - - // Version is the version of the API specification implemented, - // This may omit the revision number and only include - // the major and minor version, such as "2.0" - Version string -} - -// String returns the string formatted API Version -func (v APIVersion) String() string { - return v.Type + "/" + v.Version -} - -// APIVersions gets the API versions out of an HTTP response using the provided -// version header as the key for the HTTP header. -func APIVersions(resp *http.Response, versionHeader string) []APIVersion { - versions := []APIVersion{} - if versionHeader != "" { - for _, supportedVersions := range resp.Header[http.CanonicalHeaderKey(versionHeader)] { - for _, version := range strings.Fields(supportedVersions) { - versions = append(versions, ParseAPIVersion(version)) - } - } - } - return versions -} - -// ParseAPIVersion parses an API version string into an APIVersion -// Format (Expected, not enforced): -// API version string = '/' -// API type = [a-z][a-z0-9]* -// API version = [0-9]+(\.[0-9]+)? -// TODO(dmcgowan): Enforce format, add error condition, remove unknown type -func ParseAPIVersion(versionStr string) APIVersion { - idx := strings.IndexRune(versionStr, '/') - if idx == -1 { - return APIVersion{ - Type: "unknown", - Version: versionStr, - } - } - return APIVersion{ - Type: strings.ToLower(versionStr[:idx]), - Version: versionStr[idx+1:], - } -} diff --git a/vendor/github.com/docker/distribution/registry/client/auth/authchallenge.go b/vendor/github.com/docker/distribution/registry/client/auth/authchallenge.go deleted file mode 100644 index c8cd83bb97..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/auth/authchallenge.go +++ /dev/null @@ -1,220 +0,0 @@ -package auth - -import ( - "fmt" - "net/http" - "net/url" - "strings" -) - -// Challenge carries information from a WWW-Authenticate response header. -// See RFC 2617. -type Challenge struct { - // Scheme is the auth-scheme according to RFC 2617 - Scheme string - - // Parameters are the auth-params according to RFC 2617 - Parameters map[string]string -} - -// ChallengeManager manages the challenges for endpoints. -// The challenges are pulled out of HTTP responses. Only -// responses which expect challenges should be added to -// the manager, since a non-unauthorized request will be -// viewed as not requiring challenges. -type ChallengeManager interface { - // GetChallenges returns the challenges for the given - // endpoint URL. - GetChallenges(endpoint url.URL) ([]Challenge, error) - - // AddResponse adds the response to the challenge - // manager. The challenges will be parsed out of - // the WWW-Authenicate headers and added to the - // URL which was produced the response. If the - // response was authorized, any challenges for the - // endpoint will be cleared. - AddResponse(resp *http.Response) error -} - -// NewSimpleChallengeManager returns an instance of -// ChallengeManger which only maps endpoints to challenges -// based on the responses which have been added the -// manager. The simple manager will make no attempt to -// perform requests on the endpoints or cache the responses -// to a backend. -func NewSimpleChallengeManager() ChallengeManager { - return simpleChallengeManager{} -} - -type simpleChallengeManager map[string][]Challenge - -func (m simpleChallengeManager) GetChallenges(endpoint url.URL) ([]Challenge, error) { - endpoint.Host = strings.ToLower(endpoint.Host) - - challenges := m[endpoint.String()] - return challenges, nil -} - -func (m simpleChallengeManager) AddResponse(resp *http.Response) error { - challenges := ResponseChallenges(resp) - if resp.Request == nil { - return fmt.Errorf("missing request reference") - } - urlCopy := url.URL{ - Path: resp.Request.URL.Path, - Host: strings.ToLower(resp.Request.URL.Host), - Scheme: resp.Request.URL.Scheme, - } - m[urlCopy.String()] = challenges - return nil -} - -// Octet types from RFC 2616. -type octetType byte - -var octetTypes [256]octetType - -const ( - isToken octetType = 1 << iota - isSpace -) - -func init() { - // OCTET = - // CHAR = - // CTL = - // CR = - // LF = - // SP = - // HT = - // <"> = - // CRLF = CR LF - // LWS = [CRLF] 1*( SP | HT ) - // TEXT = - // separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> - // | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT - // token = 1* - // qdtext = > - - for c := 0; c < 256; c++ { - var t octetType - isCtl := c <= 31 || c == 127 - isChar := 0 <= c && c <= 127 - isSeparator := strings.IndexRune(" \t\"(),/:;<=>?@[]\\{}", rune(c)) >= 0 - if strings.IndexRune(" \t\r\n", rune(c)) >= 0 { - t |= isSpace - } - if isChar && !isCtl && !isSeparator { - t |= isToken - } - octetTypes[c] = t - } -} - -// ResponseChallenges returns a list of authorization challenges -// for the given http Response. Challenges are only checked if -// the response status code was a 401. -func ResponseChallenges(resp *http.Response) []Challenge { - if resp.StatusCode == http.StatusUnauthorized { - // Parse the WWW-Authenticate Header and store the challenges - // on this endpoint object. - return parseAuthHeader(resp.Header) - } - - return nil -} - -func parseAuthHeader(header http.Header) []Challenge { - challenges := []Challenge{} - for _, h := range header[http.CanonicalHeaderKey("WWW-Authenticate")] { - v, p := parseValueAndParams(h) - if v != "" { - challenges = append(challenges, Challenge{Scheme: v, Parameters: p}) - } - } - return challenges -} - -func parseValueAndParams(header string) (value string, params map[string]string) { - params = make(map[string]string) - value, s := expectToken(header) - if value == "" { - return - } - value = strings.ToLower(value) - s = "," + skipSpace(s) - for strings.HasPrefix(s, ",") { - var pkey string - pkey, s = expectToken(skipSpace(s[1:])) - if pkey == "" { - return - } - if !strings.HasPrefix(s, "=") { - return - } - var pvalue string - pvalue, s = expectTokenOrQuoted(s[1:]) - if pvalue == "" { - return - } - pkey = strings.ToLower(pkey) - params[pkey] = pvalue - s = skipSpace(s) - } - return -} - -func skipSpace(s string) (rest string) { - i := 0 - for ; i < len(s); i++ { - if octetTypes[s[i]]&isSpace == 0 { - break - } - } - return s[i:] -} - -func expectToken(s string) (token, rest string) { - i := 0 - for ; i < len(s); i++ { - if octetTypes[s[i]]&isToken == 0 { - break - } - } - return s[:i], s[i:] -} - -func expectTokenOrQuoted(s string) (value string, rest string) { - if !strings.HasPrefix(s, "\"") { - return expectToken(s) - } - s = s[1:] - for i := 0; i < len(s); i++ { - switch s[i] { - case '"': - return s[:i], s[i+1:] - case '\\': - p := make([]byte, len(s)-1) - j := copy(p, s[:i]) - escape := true - for i = i + 1; i < len(s); i++ { - b := s[i] - switch { - case escape: - escape = false - p[j] = b - j++ - case b == '\\': - escape = true - case b == '"': - return string(p[:j]), s[i+1:] - default: - p[j] = b - j++ - } - } - return "", "" - } - } - return "", "" -} diff --git a/vendor/github.com/docker/distribution/registry/client/auth/authchallenge_test.go b/vendor/github.com/docker/distribution/registry/client/auth/authchallenge_test.go deleted file mode 100644 index 953ed5b4dc..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/auth/authchallenge_test.go +++ /dev/null @@ -1,81 +0,0 @@ -package auth - -import ( - "fmt" - "net/http" - "net/url" - "strings" - "testing" -) - -func TestAuthChallengeParse(t *testing.T) { - header := http.Header{} - header.Add("WWW-Authenticate", `Bearer realm="https://auth.example.com/token",service="registry.example.com",other=fun,slashed="he\"\l\lo"`) - - challenges := parseAuthHeader(header) - if len(challenges) != 1 { - t.Fatalf("Unexpected number of auth challenges: %d, expected 1", len(challenges)) - } - challenge := challenges[0] - - if expected := "bearer"; challenge.Scheme != expected { - t.Fatalf("Unexpected scheme: %s, expected: %s", challenge.Scheme, expected) - } - - if expected := "https://auth.example.com/token"; challenge.Parameters["realm"] != expected { - t.Fatalf("Unexpected param: %s, expected: %s", challenge.Parameters["realm"], expected) - } - - if expected := "registry.example.com"; challenge.Parameters["service"] != expected { - t.Fatalf("Unexpected param: %s, expected: %s", challenge.Parameters["service"], expected) - } - - if expected := "fun"; challenge.Parameters["other"] != expected { - t.Fatalf("Unexpected param: %s, expected: %s", challenge.Parameters["other"], expected) - } - - if expected := "he\"llo"; challenge.Parameters["slashed"] != expected { - t.Fatalf("Unexpected param: %s, expected: %s", challenge.Parameters["slashed"], expected) - } - -} - -func TestAuthChallengeNormalization(t *testing.T) { - testAuthChallengeNormalization(t, "reg.EXAMPLE.com") - testAuthChallengeNormalization(t, "bɿɒʜɔiɿ-ɿɘƚƨim-ƚol-ɒ-ƨʞnɒʜƚ.com") -} - -func testAuthChallengeNormalization(t *testing.T, host string) { - - scm := NewSimpleChallengeManager() - - url, err := url.Parse(fmt.Sprintf("http://%s/v2/", host)) - if err != nil { - t.Fatal(err) - } - - resp := &http.Response{ - Request: &http.Request{ - URL: url, - }, - Header: make(http.Header), - StatusCode: http.StatusUnauthorized, - } - resp.Header.Add("WWW-Authenticate", fmt.Sprintf("Bearer realm=\"https://%s/token\",service=\"registry.example.com\"", host)) - - err = scm.AddResponse(resp) - if err != nil { - t.Fatal(err) - } - - lowered := *url - lowered.Host = strings.ToLower(lowered.Host) - c, err := scm.GetChallenges(lowered) - if err != nil { - t.Fatal(err) - } - - if len(c) == 0 { - t.Fatal("Expected challenge for lower-cased-host URL") - } -} diff --git a/vendor/github.com/docker/distribution/registry/client/auth/session.go b/vendor/github.com/docker/distribution/registry/client/auth/session.go deleted file mode 100644 index f3497b17ad..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/auth/session.go +++ /dev/null @@ -1,480 +0,0 @@ -package auth - -import ( - "encoding/json" - "errors" - "fmt" - "net/http" - "net/url" - "strings" - "sync" - "time" - - "github.com/Sirupsen/logrus" - "github.com/docker/distribution/registry/client" - "github.com/docker/distribution/registry/client/transport" -) - -var ( - // ErrNoBasicAuthCredentials is returned if a request can't be authorized with - // basic auth due to lack of credentials. - ErrNoBasicAuthCredentials = errors.New("no basic auth credentials") - - // ErrNoToken is returned if a request is successful but the body does not - // contain an authorization token. - ErrNoToken = errors.New("authorization server did not include a token in the response") -) - -const defaultClientID = "registry-client" - -// AuthenticationHandler is an interface for authorizing a request from -// params from a "WWW-Authenicate" header for a single scheme. -type AuthenticationHandler interface { - // Scheme returns the scheme as expected from the "WWW-Authenicate" header. - Scheme() string - - // AuthorizeRequest adds the authorization header to a request (if needed) - // using the parameters from "WWW-Authenticate" method. The parameters - // values depend on the scheme. - AuthorizeRequest(req *http.Request, params map[string]string) error -} - -// CredentialStore is an interface for getting credentials for -// a given URL -type CredentialStore interface { - // Basic returns basic auth for the given URL - Basic(*url.URL) (string, string) - - // RefreshToken returns a refresh token for the - // given URL and service - RefreshToken(*url.URL, string) string - - // SetRefreshToken sets the refresh token if none - // is provided for the given url and service - SetRefreshToken(realm *url.URL, service, token string) -} - -// NewAuthorizer creates an authorizer which can handle multiple authentication -// schemes. The handlers are tried in order, the higher priority authentication -// methods should be first. The challengeMap holds a list of challenges for -// a given root API endpoint (for example "https://registry-1.docker.io/v2/"). -func NewAuthorizer(manager ChallengeManager, handlers ...AuthenticationHandler) transport.RequestModifier { - return &endpointAuthorizer{ - challenges: manager, - handlers: handlers, - } -} - -type endpointAuthorizer struct { - challenges ChallengeManager - handlers []AuthenticationHandler - transport http.RoundTripper -} - -func (ea *endpointAuthorizer) ModifyRequest(req *http.Request) error { - v2Root := strings.Index(req.URL.Path, "/v2/") - if v2Root == -1 { - return nil - } - - ping := url.URL{ - Host: req.URL.Host, - Scheme: req.URL.Scheme, - Path: req.URL.Path[:v2Root+4], - } - - challenges, err := ea.challenges.GetChallenges(ping) - if err != nil { - return err - } - - if len(challenges) > 0 { - for _, handler := range ea.handlers { - for _, challenge := range challenges { - if challenge.Scheme != handler.Scheme() { - continue - } - if err := handler.AuthorizeRequest(req, challenge.Parameters); err != nil { - return err - } - } - } - } - - return nil -} - -// This is the minimum duration a token can last (in seconds). -// A token must not live less than 60 seconds because older versions -// of the Docker client didn't read their expiration from the token -// response and assumed 60 seconds. So to remain compatible with -// those implementations, a token must live at least this long. -const minimumTokenLifetimeSeconds = 60 - -// Private interface for time used by this package to enable tests to provide their own implementation. -type clock interface { - Now() time.Time -} - -type tokenHandler struct { - header http.Header - creds CredentialStore - transport http.RoundTripper - clock clock - - offlineAccess bool - forceOAuth bool - clientID string - scopes []Scope - - tokenLock sync.Mutex - tokenCache string - tokenExpiration time.Time -} - -// Scope is a type which is serializable to a string -// using the allow scope grammar. -type Scope interface { - String() string -} - -// RepositoryScope represents a token scope for access -// to a repository. -type RepositoryScope struct { - Repository string - Actions []string -} - -// String returns the string representation of the repository -// using the scope grammar -func (rs RepositoryScope) String() string { - return fmt.Sprintf("repository:%s:%s", rs.Repository, strings.Join(rs.Actions, ",")) -} - -// TokenHandlerOptions is used to configure a new token handler -type TokenHandlerOptions struct { - Transport http.RoundTripper - Credentials CredentialStore - - OfflineAccess bool - ForceOAuth bool - ClientID string - Scopes []Scope -} - -// An implementation of clock for providing real time data. -type realClock struct{} - -// Now implements clock -func (realClock) Now() time.Time { return time.Now() } - -// NewTokenHandler creates a new AuthenicationHandler which supports -// fetching tokens from a remote token server. -func NewTokenHandler(transport http.RoundTripper, creds CredentialStore, scope string, actions ...string) AuthenticationHandler { - // Create options... - return NewTokenHandlerWithOptions(TokenHandlerOptions{ - Transport: transport, - Credentials: creds, - Scopes: []Scope{ - RepositoryScope{ - Repository: scope, - Actions: actions, - }, - }, - }) -} - -// NewTokenHandlerWithOptions creates a new token handler using the provided -// options structure. -func NewTokenHandlerWithOptions(options TokenHandlerOptions) AuthenticationHandler { - handler := &tokenHandler{ - transport: options.Transport, - creds: options.Credentials, - offlineAccess: options.OfflineAccess, - forceOAuth: options.ForceOAuth, - clientID: options.ClientID, - scopes: options.Scopes, - clock: realClock{}, - } - - return handler -} - -func (th *tokenHandler) client() *http.Client { - return &http.Client{ - Transport: th.transport, - Timeout: 15 * time.Second, - } -} - -func (th *tokenHandler) Scheme() string { - return "bearer" -} - -func (th *tokenHandler) AuthorizeRequest(req *http.Request, params map[string]string) error { - var additionalScopes []string - if fromParam := req.URL.Query().Get("from"); fromParam != "" { - additionalScopes = append(additionalScopes, RepositoryScope{ - Repository: fromParam, - Actions: []string{"pull"}, - }.String()) - } - - token, err := th.getToken(params, additionalScopes...) - if err != nil { - return err - } - - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) - - return nil -} - -func (th *tokenHandler) getToken(params map[string]string, additionalScopes ...string) (string, error) { - th.tokenLock.Lock() - defer th.tokenLock.Unlock() - scopes := make([]string, 0, len(th.scopes)+len(additionalScopes)) - for _, scope := range th.scopes { - scopes = append(scopes, scope.String()) - } - var addedScopes bool - for _, scope := range additionalScopes { - scopes = append(scopes, scope) - addedScopes = true - } - - now := th.clock.Now() - if now.After(th.tokenExpiration) || addedScopes { - token, expiration, err := th.fetchToken(params, scopes) - if err != nil { - return "", err - } - - // do not update cache for added scope tokens - if !addedScopes { - th.tokenCache = token - th.tokenExpiration = expiration - } - - return token, nil - } - - return th.tokenCache, nil -} - -type postTokenResponse struct { - AccessToken string `json:"access_token"` - RefreshToken string `json:"refresh_token"` - ExpiresIn int `json:"expires_in"` - IssuedAt time.Time `json:"issued_at"` - Scope string `json:"scope"` -} - -func (th *tokenHandler) fetchTokenWithOAuth(realm *url.URL, refreshToken, service string, scopes []string) (token string, expiration time.Time, err error) { - form := url.Values{} - form.Set("scope", strings.Join(scopes, " ")) - form.Set("service", service) - - clientID := th.clientID - if clientID == "" { - // Use default client, this is a required field - clientID = defaultClientID - } - form.Set("client_id", clientID) - - if refreshToken != "" { - form.Set("grant_type", "refresh_token") - form.Set("refresh_token", refreshToken) - } else if th.creds != nil { - form.Set("grant_type", "password") - username, password := th.creds.Basic(realm) - form.Set("username", username) - form.Set("password", password) - - // attempt to get a refresh token - form.Set("access_type", "offline") - } else { - // refuse to do oauth without a grant type - return "", time.Time{}, fmt.Errorf("no supported grant type") - } - - resp, err := th.client().PostForm(realm.String(), form) - if err != nil { - return "", time.Time{}, err - } - defer resp.Body.Close() - - if !client.SuccessStatus(resp.StatusCode) { - err := client.HandleErrorResponse(resp) - return "", time.Time{}, err - } - - decoder := json.NewDecoder(resp.Body) - - var tr postTokenResponse - if err = decoder.Decode(&tr); err != nil { - return "", time.Time{}, fmt.Errorf("unable to decode token response: %s", err) - } - - if tr.RefreshToken != "" && tr.RefreshToken != refreshToken { - th.creds.SetRefreshToken(realm, service, tr.RefreshToken) - } - - if tr.ExpiresIn < minimumTokenLifetimeSeconds { - // The default/minimum lifetime. - tr.ExpiresIn = minimumTokenLifetimeSeconds - logrus.Debugf("Increasing token expiration to: %d seconds", tr.ExpiresIn) - } - - if tr.IssuedAt.IsZero() { - // issued_at is optional in the token response. - tr.IssuedAt = th.clock.Now().UTC() - } - - return tr.AccessToken, tr.IssuedAt.Add(time.Duration(tr.ExpiresIn) * time.Second), nil -} - -type getTokenResponse struct { - Token string `json:"token"` - AccessToken string `json:"access_token"` - ExpiresIn int `json:"expires_in"` - IssuedAt time.Time `json:"issued_at"` - RefreshToken string `json:"refresh_token"` -} - -func (th *tokenHandler) fetchTokenWithBasicAuth(realm *url.URL, service string, scopes []string) (token string, expiration time.Time, err error) { - - req, err := http.NewRequest("GET", realm.String(), nil) - if err != nil { - return "", time.Time{}, err - } - - reqParams := req.URL.Query() - - if service != "" { - reqParams.Add("service", service) - } - - for _, scope := range scopes { - reqParams.Add("scope", scope) - } - - if th.offlineAccess { - reqParams.Add("offline_token", "true") - clientID := th.clientID - if clientID == "" { - clientID = defaultClientID - } - reqParams.Add("client_id", clientID) - } - - if th.creds != nil { - username, password := th.creds.Basic(realm) - if username != "" && password != "" { - reqParams.Add("account", username) - req.SetBasicAuth(username, password) - } - } - - req.URL.RawQuery = reqParams.Encode() - - resp, err := th.client().Do(req) - if err != nil { - return "", time.Time{}, err - } - defer resp.Body.Close() - - if !client.SuccessStatus(resp.StatusCode) { - err := client.HandleErrorResponse(resp) - return "", time.Time{}, err - } - - decoder := json.NewDecoder(resp.Body) - - var tr getTokenResponse - if err = decoder.Decode(&tr); err != nil { - return "", time.Time{}, fmt.Errorf("unable to decode token response: %s", err) - } - - if tr.RefreshToken != "" && th.creds != nil { - th.creds.SetRefreshToken(realm, service, tr.RefreshToken) - } - - // `access_token` is equivalent to `token` and if both are specified - // the choice is undefined. Canonicalize `access_token` by sticking - // things in `token`. - if tr.AccessToken != "" { - tr.Token = tr.AccessToken - } - - if tr.Token == "" { - return "", time.Time{}, ErrNoToken - } - - if tr.ExpiresIn < minimumTokenLifetimeSeconds { - // The default/minimum lifetime. - tr.ExpiresIn = minimumTokenLifetimeSeconds - logrus.Debugf("Increasing token expiration to: %d seconds", tr.ExpiresIn) - } - - if tr.IssuedAt.IsZero() { - // issued_at is optional in the token response. - tr.IssuedAt = th.clock.Now().UTC() - } - - return tr.Token, tr.IssuedAt.Add(time.Duration(tr.ExpiresIn) * time.Second), nil -} - -func (th *tokenHandler) fetchToken(params map[string]string, scopes []string) (token string, expiration time.Time, err error) { - realm, ok := params["realm"] - if !ok { - return "", time.Time{}, errors.New("no realm specified for token auth challenge") - } - - // TODO(dmcgowan): Handle empty scheme and relative realm - realmURL, err := url.Parse(realm) - if err != nil { - return "", time.Time{}, fmt.Errorf("invalid token auth challenge realm: %s", err) - } - - service := params["service"] - - var refreshToken string - - if th.creds != nil { - refreshToken = th.creds.RefreshToken(realmURL, service) - } - - if refreshToken != "" || th.forceOAuth { - return th.fetchTokenWithOAuth(realmURL, refreshToken, service, scopes) - } - - return th.fetchTokenWithBasicAuth(realmURL, service, scopes) -} - -type basicHandler struct { - creds CredentialStore -} - -// NewBasicHandler creaters a new authentiation handler which adds -// basic authentication credentials to a request. -func NewBasicHandler(creds CredentialStore) AuthenticationHandler { - return &basicHandler{ - creds: creds, - } -} - -func (*basicHandler) Scheme() string { - return "basic" -} - -func (bh *basicHandler) AuthorizeRequest(req *http.Request, params map[string]string) error { - if bh.creds != nil { - username, password := bh.creds.Basic(req.URL) - if username != "" && password != "" { - req.SetBasicAuth(username, password) - return nil - } - } - return ErrNoBasicAuthCredentials -} diff --git a/vendor/github.com/docker/distribution/registry/client/auth/session_test.go b/vendor/github.com/docker/distribution/registry/client/auth/session_test.go deleted file mode 100644 index 96c62990fb..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/auth/session_test.go +++ /dev/null @@ -1,787 +0,0 @@ -package auth - -import ( - "encoding/base64" - "fmt" - "net/http" - "net/http/httptest" - "net/url" - "testing" - "time" - - "github.com/docker/distribution/registry/client/transport" - "github.com/docker/distribution/testutil" -) - -// An implementation of clock for providing fake time data. -type fakeClock struct { - current time.Time -} - -// Now implements clock -func (fc *fakeClock) Now() time.Time { return fc.current } - -func testServer(rrm testutil.RequestResponseMap) (string, func()) { - h := testutil.NewHandler(rrm) - s := httptest.NewServer(h) - return s.URL, s.Close -} - -type testAuthenticationWrapper struct { - headers http.Header - authCheck func(string) bool - next http.Handler -} - -func (w *testAuthenticationWrapper) ServeHTTP(rw http.ResponseWriter, r *http.Request) { - auth := r.Header.Get("Authorization") - if auth == "" || !w.authCheck(auth) { - h := rw.Header() - for k, values := range w.headers { - h[k] = values - } - rw.WriteHeader(http.StatusUnauthorized) - return - } - w.next.ServeHTTP(rw, r) -} - -func testServerWithAuth(rrm testutil.RequestResponseMap, authenticate string, authCheck func(string) bool) (string, func()) { - h := testutil.NewHandler(rrm) - wrapper := &testAuthenticationWrapper{ - - headers: http.Header(map[string][]string{ - "X-API-Version": {"registry/2.0"}, - "X-Multi-API-Version": {"registry/2.0", "registry/2.1", "trust/1.0"}, - "WWW-Authenticate": {authenticate}, - }), - authCheck: authCheck, - next: h, - } - - s := httptest.NewServer(wrapper) - return s.URL, s.Close -} - -// ping pings the provided endpoint to determine its required authorization challenges. -// If a version header is provided, the versions will be returned. -func ping(manager ChallengeManager, endpoint, versionHeader string) ([]APIVersion, error) { - resp, err := http.Get(endpoint) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if err := manager.AddResponse(resp); err != nil { - return nil, err - } - - return APIVersions(resp, versionHeader), err -} - -type testCredentialStore struct { - username string - password string - refreshTokens map[string]string -} - -func (tcs *testCredentialStore) Basic(*url.URL) (string, string) { - return tcs.username, tcs.password -} - -func (tcs *testCredentialStore) RefreshToken(u *url.URL, service string) string { - return tcs.refreshTokens[service] -} - -func (tcs *testCredentialStore) SetRefreshToken(u *url.URL, service string, token string) { - if tcs.refreshTokens != nil { - tcs.refreshTokens[service] = token - } -} - -func TestEndpointAuthorizeToken(t *testing.T) { - service := "localhost.localdomain" - repo1 := "some/registry" - repo2 := "other/registry" - scope1 := fmt.Sprintf("repository:%s:pull,push", repo1) - scope2 := fmt.Sprintf("repository:%s:pull,push", repo2) - tokenMap := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?scope=%s&service=%s", url.QueryEscape(scope1), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"token":"statictoken"}`), - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?scope=%s&service=%s", url.QueryEscape(scope2), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"token":"badtoken"}`), - }, - }, - }) - te, tc := testServer(tokenMap) - defer tc() - - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - }) - - authenicate := fmt.Sprintf("Bearer realm=%q,service=%q", te+"/token", service) - validCheck := func(a string) bool { - return a == "Bearer statictoken" - } - e, c := testServerWithAuth(m, authenicate, validCheck) - defer c() - - challengeManager1 := NewSimpleChallengeManager() - versions, err := ping(challengeManager1, e+"/v2/", "x-api-version") - if err != nil { - t.Fatal(err) - } - if len(versions) != 1 { - t.Fatalf("Unexpected version count: %d, expected 1", len(versions)) - } - if check := (APIVersion{Type: "registry", Version: "2.0"}); versions[0] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[0], check) - } - transport1 := transport.NewTransport(nil, NewAuthorizer(challengeManager1, NewTokenHandler(nil, nil, repo1, "pull", "push"))) - client := &http.Client{Transport: transport1} - - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } - - e2, c2 := testServerWithAuth(m, authenicate, validCheck) - defer c2() - - challengeManager2 := NewSimpleChallengeManager() - versions, err = ping(challengeManager2, e2+"/v2/", "x-multi-api-version") - if err != nil { - t.Fatal(err) - } - if len(versions) != 3 { - t.Fatalf("Unexpected version count: %d, expected 3", len(versions)) - } - if check := (APIVersion{Type: "registry", Version: "2.0"}); versions[0] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[0], check) - } - if check := (APIVersion{Type: "registry", Version: "2.1"}); versions[1] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[1], check) - } - if check := (APIVersion{Type: "trust", Version: "1.0"}); versions[2] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[2], check) - } - transport2 := transport.NewTransport(nil, NewAuthorizer(challengeManager2, NewTokenHandler(nil, nil, repo2, "pull", "push"))) - client2 := &http.Client{Transport: transport2} - - req, _ = http.NewRequest("GET", e2+"/v2/hello", nil) - resp, err = client2.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusUnauthorized { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusUnauthorized) - } -} - -func TestEndpointAuthorizeRefreshToken(t *testing.T) { - service := "localhost.localdomain" - repo1 := "some/registry" - repo2 := "other/registry" - scope1 := fmt.Sprintf("repository:%s:pull,push", repo1) - scope2 := fmt.Sprintf("repository:%s:pull,push", repo2) - refreshToken1 := "0123456790abcdef" - refreshToken2 := "0123456790fedcba" - tokenMap := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "POST", - Route: "/token", - Body: []byte(fmt.Sprintf("client_id=registry-client&grant_type=refresh_token&refresh_token=%s&scope=%s&service=%s", refreshToken1, url.QueryEscape(scope1), service)), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(fmt.Sprintf(`{"access_token":"statictoken","refresh_token":"%s"}`, refreshToken1)), - }, - }, - { - // In the future this test may fail and require using basic auth to get a different refresh token - Request: testutil.Request{ - Method: "POST", - Route: "/token", - Body: []byte(fmt.Sprintf("client_id=registry-client&grant_type=refresh_token&refresh_token=%s&scope=%s&service=%s", refreshToken1, url.QueryEscape(scope2), service)), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(fmt.Sprintf(`{"access_token":"statictoken","refresh_token":"%s"}`, refreshToken2)), - }, - }, - { - Request: testutil.Request{ - Method: "POST", - Route: "/token", - Body: []byte(fmt.Sprintf("client_id=registry-client&grant_type=refresh_token&refresh_token=%s&scope=%s&service=%s", refreshToken2, url.QueryEscape(scope2), service)), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"access_token":"badtoken","refresh_token":"%s"}`), - }, - }, - }) - te, tc := testServer(tokenMap) - defer tc() - - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - }) - - authenicate := fmt.Sprintf("Bearer realm=%q,service=%q", te+"/token", service) - validCheck := func(a string) bool { - return a == "Bearer statictoken" - } - e, c := testServerWithAuth(m, authenicate, validCheck) - defer c() - - challengeManager1 := NewSimpleChallengeManager() - versions, err := ping(challengeManager1, e+"/v2/", "x-api-version") - if err != nil { - t.Fatal(err) - } - if len(versions) != 1 { - t.Fatalf("Unexpected version count: %d, expected 1", len(versions)) - } - if check := (APIVersion{Type: "registry", Version: "2.0"}); versions[0] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[0], check) - } - creds := &testCredentialStore{ - refreshTokens: map[string]string{ - service: refreshToken1, - }, - } - transport1 := transport.NewTransport(nil, NewAuthorizer(challengeManager1, NewTokenHandler(nil, creds, repo1, "pull", "push"))) - client := &http.Client{Transport: transport1} - - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } - - // Try with refresh token setting - e2, c2 := testServerWithAuth(m, authenicate, validCheck) - defer c2() - - challengeManager2 := NewSimpleChallengeManager() - versions, err = ping(challengeManager2, e2+"/v2/", "x-api-version") - if err != nil { - t.Fatal(err) - } - if len(versions) != 1 { - t.Fatalf("Unexpected version count: %d, expected 1", len(versions)) - } - if check := (APIVersion{Type: "registry", Version: "2.0"}); versions[0] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[0], check) - } - - transport2 := transport.NewTransport(nil, NewAuthorizer(challengeManager2, NewTokenHandler(nil, creds, repo2, "pull", "push"))) - client2 := &http.Client{Transport: transport2} - - req, _ = http.NewRequest("GET", e2+"/v2/hello", nil) - resp, err = client2.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusUnauthorized) - } - - if creds.refreshTokens[service] != refreshToken2 { - t.Fatalf("Refresh token not set after change") - } - - // Try with bad token - e3, c3 := testServerWithAuth(m, authenicate, validCheck) - defer c3() - - challengeManager3 := NewSimpleChallengeManager() - versions, err = ping(challengeManager3, e3+"/v2/", "x-api-version") - if err != nil { - t.Fatal(err) - } - if check := (APIVersion{Type: "registry", Version: "2.0"}); versions[0] != check { - t.Fatalf("Unexpected api version: %#v, expected %#v", versions[0], check) - } - - transport3 := transport.NewTransport(nil, NewAuthorizer(challengeManager3, NewTokenHandler(nil, creds, repo2, "pull", "push"))) - client3 := &http.Client{Transport: transport3} - - req, _ = http.NewRequest("GET", e3+"/v2/hello", nil) - resp, err = client3.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusUnauthorized { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusUnauthorized) - } -} - -func basicAuth(username, password string) string { - auth := username + ":" + password - return base64.StdEncoding.EncodeToString([]byte(auth)) -} - -func TestEndpointAuthorizeTokenBasic(t *testing.T) { - service := "localhost.localdomain" - repo := "some/fun/registry" - scope := fmt.Sprintf("repository:%s:pull,push", repo) - username := "tokenuser" - password := "superSecretPa$$word" - - tokenMap := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?account=%s&scope=%s&service=%s", username, url.QueryEscape(scope), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"access_token":"statictoken"}`), - }, - }, - }) - - authenicate1 := fmt.Sprintf("Basic realm=localhost") - basicCheck := func(a string) bool { - return a == fmt.Sprintf("Basic %s", basicAuth(username, password)) - } - te, tc := testServerWithAuth(tokenMap, authenicate1, basicCheck) - defer tc() - - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - }) - - authenicate2 := fmt.Sprintf("Bearer realm=%q,service=%q", te+"/token", service) - bearerCheck := func(a string) bool { - return a == "Bearer statictoken" - } - e, c := testServerWithAuth(m, authenicate2, bearerCheck) - defer c() - - creds := &testCredentialStore{ - username: username, - password: password, - } - - challengeManager := NewSimpleChallengeManager() - _, err := ping(challengeManager, e+"/v2/", "") - if err != nil { - t.Fatal(err) - } - transport1 := transport.NewTransport(nil, NewAuthorizer(challengeManager, NewTokenHandler(nil, creds, repo, "pull", "push"), NewBasicHandler(creds))) - client := &http.Client{Transport: transport1} - - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } -} - -func TestEndpointAuthorizeTokenBasicWithExpiresIn(t *testing.T) { - service := "localhost.localdomain" - repo := "some/fun/registry" - scope := fmt.Sprintf("repository:%s:pull,push", repo) - username := "tokenuser" - password := "superSecretPa$$word" - - tokenMap := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?account=%s&scope=%s&service=%s", username, url.QueryEscape(scope), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"token":"statictoken", "expires_in": 3001}`), - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?account=%s&scope=%s&service=%s", username, url.QueryEscape(scope), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"access_token":"statictoken", "expires_in": 3001}`), - }, - }, - }) - - authenicate1 := fmt.Sprintf("Basic realm=localhost") - tokenExchanges := 0 - basicCheck := func(a string) bool { - tokenExchanges = tokenExchanges + 1 - return a == fmt.Sprintf("Basic %s", basicAuth(username, password)) - } - te, tc := testServerWithAuth(tokenMap, authenicate1, basicCheck) - defer tc() - - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - }) - - authenicate2 := fmt.Sprintf("Bearer realm=%q,service=%q", te+"/token", service) - bearerCheck := func(a string) bool { - return a == "Bearer statictoken" - } - e, c := testServerWithAuth(m, authenicate2, bearerCheck) - defer c() - - creds := &testCredentialStore{ - username: username, - password: password, - } - - challengeManager := NewSimpleChallengeManager() - _, err := ping(challengeManager, e+"/v2/", "") - if err != nil { - t.Fatal(err) - } - clock := &fakeClock{current: time.Now()} - options := TokenHandlerOptions{ - Transport: nil, - Credentials: creds, - Scopes: []Scope{ - RepositoryScope{ - Repository: repo, - Actions: []string{"pull", "push"}, - }, - }, - } - tHandler := NewTokenHandlerWithOptions(options) - tHandler.(*tokenHandler).clock = clock - transport1 := transport.NewTransport(nil, NewAuthorizer(challengeManager, tHandler, NewBasicHandler(creds))) - client := &http.Client{Transport: transport1} - - // First call should result in a token exchange - // Subsequent calls should recycle the token from the first request, until the expiration has lapsed. - timeIncrement := 1000 * time.Second - for i := 0; i < 4; i++ { - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } - if tokenExchanges != 1 { - t.Fatalf("Unexpected number of token exchanges, want: 1, got %d (iteration: %d)", tokenExchanges, i) - } - clock.current = clock.current.Add(timeIncrement) - } - - // After we've exceeded the expiration, we should see a second token exchange. - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } - if tokenExchanges != 2 { - t.Fatalf("Unexpected number of token exchanges, want: 2, got %d", tokenExchanges) - } -} - -func TestEndpointAuthorizeTokenBasicWithExpiresInAndIssuedAt(t *testing.T) { - service := "localhost.localdomain" - repo := "some/fun/registry" - scope := fmt.Sprintf("repository:%s:pull,push", repo) - username := "tokenuser" - password := "superSecretPa$$word" - - // This test sets things up such that the token was issued one increment - // earlier than its sibling in TestEndpointAuthorizeTokenBasicWithExpiresIn. - // This will mean that the token expires after 3 increments instead of 4. - clock := &fakeClock{current: time.Now()} - timeIncrement := 1000 * time.Second - firstIssuedAt := clock.Now() - clock.current = clock.current.Add(timeIncrement) - secondIssuedAt := clock.current.Add(2 * timeIncrement) - tokenMap := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?account=%s&scope=%s&service=%s", username, url.QueryEscape(scope), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"token":"statictoken", "issued_at": "` + firstIssuedAt.Format(time.RFC3339Nano) + `", "expires_in": 3001}`), - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: fmt.Sprintf("/token?account=%s&scope=%s&service=%s", username, url.QueryEscape(scope), service), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: []byte(`{"access_token":"statictoken", "issued_at": "` + secondIssuedAt.Format(time.RFC3339Nano) + `", "expires_in": 3001}`), - }, - }, - }) - - authenicate1 := fmt.Sprintf("Basic realm=localhost") - tokenExchanges := 0 - basicCheck := func(a string) bool { - tokenExchanges = tokenExchanges + 1 - return a == fmt.Sprintf("Basic %s", basicAuth(username, password)) - } - te, tc := testServerWithAuth(tokenMap, authenicate1, basicCheck) - defer tc() - - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - }) - - authenicate2 := fmt.Sprintf("Bearer realm=%q,service=%q", te+"/token", service) - bearerCheck := func(a string) bool { - return a == "Bearer statictoken" - } - e, c := testServerWithAuth(m, authenicate2, bearerCheck) - defer c() - - creds := &testCredentialStore{ - username: username, - password: password, - } - - challengeManager := NewSimpleChallengeManager() - _, err := ping(challengeManager, e+"/v2/", "") - if err != nil { - t.Fatal(err) - } - - options := TokenHandlerOptions{ - Transport: nil, - Credentials: creds, - Scopes: []Scope{ - RepositoryScope{ - Repository: repo, - Actions: []string{"pull", "push"}, - }, - }, - } - tHandler := NewTokenHandlerWithOptions(options) - tHandler.(*tokenHandler).clock = clock - transport1 := transport.NewTransport(nil, NewAuthorizer(challengeManager, tHandler, NewBasicHandler(creds))) - client := &http.Client{Transport: transport1} - - // First call should result in a token exchange - // Subsequent calls should recycle the token from the first request, until the expiration has lapsed. - // We shaved one increment off of the equivalent logic in TestEndpointAuthorizeTokenBasicWithExpiresIn - // so this loop should have one fewer iteration. - for i := 0; i < 3; i++ { - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } - if tokenExchanges != 1 { - t.Fatalf("Unexpected number of token exchanges, want: 1, got %d (iteration: %d)", tokenExchanges, i) - } - clock.current = clock.current.Add(timeIncrement) - } - - // After we've exceeded the expiration, we should see a second token exchange. - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } - if tokenExchanges != 2 { - t.Fatalf("Unexpected number of token exchanges, want: 2, got %d", tokenExchanges) - } -} - -func TestEndpointAuthorizeBasic(t *testing.T) { - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/hello", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - }, - }, - }) - - username := "user1" - password := "funSecretPa$$word" - authenicate := fmt.Sprintf("Basic realm=localhost") - validCheck := func(a string) bool { - return a == fmt.Sprintf("Basic %s", basicAuth(username, password)) - } - e, c := testServerWithAuth(m, authenicate, validCheck) - defer c() - creds := &testCredentialStore{ - username: username, - password: password, - } - - challengeManager := NewSimpleChallengeManager() - _, err := ping(challengeManager, e+"/v2/", "") - if err != nil { - t.Fatal(err) - } - transport1 := transport.NewTransport(nil, NewAuthorizer(challengeManager, NewBasicHandler(creds))) - client := &http.Client{Transport: transport1} - - req, _ := http.NewRequest("GET", e+"/v2/hello", nil) - resp, err := client.Do(req) - if err != nil { - t.Fatalf("Error sending get request: %s", err) - } - - if resp.StatusCode != http.StatusAccepted { - t.Fatalf("Unexpected status code: %d, expected %d", resp.StatusCode, http.StatusAccepted) - } -} diff --git a/vendor/github.com/docker/distribution/registry/client/blob_writer.go b/vendor/github.com/docker/distribution/registry/client/blob_writer.go deleted file mode 100644 index e3ffcb00fd..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/blob_writer.go +++ /dev/null @@ -1,162 +0,0 @@ -package client - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" -) - -type httpBlobUpload struct { - statter distribution.BlobStatter - client *http.Client - - uuid string - startedAt time.Time - - location string // always the last value of the location header. - offset int64 - closed bool -} - -func (hbu *httpBlobUpload) Reader() (io.ReadCloser, error) { - panic("Not implemented") -} - -func (hbu *httpBlobUpload) handleErrorResponse(resp *http.Response) error { - if resp.StatusCode == http.StatusNotFound { - return distribution.ErrBlobUploadUnknown - } - return HandleErrorResponse(resp) -} - -func (hbu *httpBlobUpload) ReadFrom(r io.Reader) (n int64, err error) { - req, err := http.NewRequest("PATCH", hbu.location, ioutil.NopCloser(r)) - if err != nil { - return 0, err - } - defer req.Body.Close() - - resp, err := hbu.client.Do(req) - if err != nil { - return 0, err - } - - if !SuccessStatus(resp.StatusCode) { - return 0, hbu.handleErrorResponse(resp) - } - - hbu.uuid = resp.Header.Get("Docker-Upload-UUID") - hbu.location, err = sanitizeLocation(resp.Header.Get("Location"), hbu.location) - if err != nil { - return 0, err - } - rng := resp.Header.Get("Range") - var start, end int64 - if n, err := fmt.Sscanf(rng, "%d-%d", &start, &end); err != nil { - return 0, err - } else if n != 2 || end < start { - return 0, fmt.Errorf("bad range format: %s", rng) - } - - return (end - start + 1), nil - -} - -func (hbu *httpBlobUpload) Write(p []byte) (n int, err error) { - req, err := http.NewRequest("PATCH", hbu.location, bytes.NewReader(p)) - if err != nil { - return 0, err - } - req.Header.Set("Content-Range", fmt.Sprintf("%d-%d", hbu.offset, hbu.offset+int64(len(p)-1))) - req.Header.Set("Content-Length", fmt.Sprintf("%d", len(p))) - req.Header.Set("Content-Type", "application/octet-stream") - - resp, err := hbu.client.Do(req) - if err != nil { - return 0, err - } - - if !SuccessStatus(resp.StatusCode) { - return 0, hbu.handleErrorResponse(resp) - } - - hbu.uuid = resp.Header.Get("Docker-Upload-UUID") - hbu.location, err = sanitizeLocation(resp.Header.Get("Location"), hbu.location) - if err != nil { - return 0, err - } - rng := resp.Header.Get("Range") - var start, end int - if n, err := fmt.Sscanf(rng, "%d-%d", &start, &end); err != nil { - return 0, err - } else if n != 2 || end < start { - return 0, fmt.Errorf("bad range format: %s", rng) - } - - return (end - start + 1), nil - -} - -func (hbu *httpBlobUpload) Size() int64 { - return hbu.offset -} - -func (hbu *httpBlobUpload) ID() string { - return hbu.uuid -} - -func (hbu *httpBlobUpload) StartedAt() time.Time { - return hbu.startedAt -} - -func (hbu *httpBlobUpload) Commit(ctx context.Context, desc distribution.Descriptor) (distribution.Descriptor, error) { - // TODO(dmcgowan): Check if already finished, if so just fetch - req, err := http.NewRequest("PUT", hbu.location, nil) - if err != nil { - return distribution.Descriptor{}, err - } - - values := req.URL.Query() - values.Set("digest", desc.Digest.String()) - req.URL.RawQuery = values.Encode() - - resp, err := hbu.client.Do(req) - if err != nil { - return distribution.Descriptor{}, err - } - defer resp.Body.Close() - - if !SuccessStatus(resp.StatusCode) { - return distribution.Descriptor{}, hbu.handleErrorResponse(resp) - } - - return hbu.statter.Stat(ctx, desc.Digest) -} - -func (hbu *httpBlobUpload) Cancel(ctx context.Context) error { - req, err := http.NewRequest("DELETE", hbu.location, nil) - if err != nil { - return err - } - resp, err := hbu.client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - if resp.StatusCode == http.StatusNotFound || SuccessStatus(resp.StatusCode) { - return nil - } - return hbu.handleErrorResponse(resp) -} - -func (hbu *httpBlobUpload) Close() error { - hbu.closed = true - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/client/blob_writer_test.go b/vendor/github.com/docker/distribution/registry/client/blob_writer_test.go deleted file mode 100644 index 099dca4f01..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/blob_writer_test.go +++ /dev/null @@ -1,211 +0,0 @@ -package client - -import ( - "bytes" - "fmt" - "net/http" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/testutil" -) - -// Test implements distribution.BlobWriter -var _ distribution.BlobWriter = &httpBlobUpload{} - -func TestUploadReadFrom(t *testing.T) { - _, b := newRandomBlob(64) - repo := "test/upload/readfrom" - locationPath := fmt.Sprintf("/v2/%s/uploads/testid", repo) - - m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{ - { - Request: testutil.Request{ - Method: "GET", - Route: "/v2/", - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - "Docker-Distribution-API-Version": {"registry/2.0"}, - }), - }, - }, - // Test Valid case - { - Request: testutil.Request{ - Method: "PATCH", - Route: locationPath, - Body: b, - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Docker-Upload-UUID": {"46603072-7a1b-4b41-98f9-fd8a7da89f9b"}, - "Location": {locationPath}, - "Range": {"0-63"}, - }), - }, - }, - // Test invalid range - { - Request: testutil.Request{ - Method: "PATCH", - Route: locationPath, - Body: b, - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Docker-Upload-UUID": {"46603072-7a1b-4b41-98f9-fd8a7da89f9b"}, - "Location": {locationPath}, - "Range": {""}, - }), - }, - }, - // Test 404 - { - Request: testutil.Request{ - Method: "PATCH", - Route: locationPath, - Body: b, - }, - Response: testutil.Response{ - StatusCode: http.StatusNotFound, - }, - }, - // Test 400 valid json - { - Request: testutil.Request{ - Method: "PATCH", - Route: locationPath, - Body: b, - }, - Response: testutil.Response{ - StatusCode: http.StatusBadRequest, - Body: []byte(` - { "errors": - [ - { - "code": "BLOB_UPLOAD_INVALID", - "message": "blob upload invalid", - "detail": "more detail" - } - ] - } `), - }, - }, - // Test 400 invalid json - { - Request: testutil.Request{ - Method: "PATCH", - Route: locationPath, - Body: b, - }, - Response: testutil.Response{ - StatusCode: http.StatusBadRequest, - Body: []byte("something bad happened"), - }, - }, - // Test 500 - { - Request: testutil.Request{ - Method: "PATCH", - Route: locationPath, - Body: b, - }, - Response: testutil.Response{ - StatusCode: http.StatusInternalServerError, - }, - }, - }) - - e, c := testServer(m) - defer c() - - blobUpload := &httpBlobUpload{ - client: &http.Client{}, - } - - // Valid case - blobUpload.location = e + locationPath - n, err := blobUpload.ReadFrom(bytes.NewReader(b)) - if err != nil { - t.Fatalf("Error calling ReadFrom: %s", err) - } - if n != 64 { - t.Fatalf("Wrong length returned from ReadFrom: %d, expected 64", n) - } - - // Bad range - blobUpload.location = e + locationPath - _, err = blobUpload.ReadFrom(bytes.NewReader(b)) - if err == nil { - t.Fatalf("Expected error when bad range received") - } - - // 404 - blobUpload.location = e + locationPath - _, err = blobUpload.ReadFrom(bytes.NewReader(b)) - if err == nil { - t.Fatalf("Expected error when not found") - } - if err != distribution.ErrBlobUploadUnknown { - t.Fatalf("Wrong error thrown: %s, expected %s", err, distribution.ErrBlobUploadUnknown) - } - - // 400 valid json - blobUpload.location = e + locationPath - _, err = blobUpload.ReadFrom(bytes.NewReader(b)) - if err == nil { - t.Fatalf("Expected error when not found") - } - if uploadErr, ok := err.(errcode.Errors); !ok { - t.Fatalf("Wrong error type %T: %s", err, err) - } else if len(uploadErr) != 1 { - t.Fatalf("Unexpected number of errors: %d, expected 1", len(uploadErr)) - } else { - v2Err, ok := uploadErr[0].(errcode.Error) - if !ok { - t.Fatalf("Not an 'Error' type: %#v", uploadErr[0]) - } - if v2Err.Code != v2.ErrorCodeBlobUploadInvalid { - t.Fatalf("Unexpected error code: %s, expected %d", v2Err.Code.String(), v2.ErrorCodeBlobUploadInvalid) - } - if expected := "blob upload invalid"; v2Err.Message != expected { - t.Fatalf("Unexpected error message: %q, expected %q", v2Err.Message, expected) - } - if expected := "more detail"; v2Err.Detail.(string) != expected { - t.Fatalf("Unexpected error message: %q, expected %q", v2Err.Detail.(string), expected) - } - } - - // 400 invalid json - blobUpload.location = e + locationPath - _, err = blobUpload.ReadFrom(bytes.NewReader(b)) - if err == nil { - t.Fatalf("Expected error when not found") - } - if uploadErr, ok := err.(*UnexpectedHTTPResponseError); !ok { - t.Fatalf("Wrong error type %T: %s", err, err) - } else { - respStr := string(uploadErr.Response) - if expected := "something bad happened"; respStr != expected { - t.Fatalf("Unexpected response string: %s, expected: %s", respStr, expected) - } - } - - // 500 - blobUpload.location = e + locationPath - _, err = blobUpload.ReadFrom(bytes.NewReader(b)) - if err == nil { - t.Fatalf("Expected error when not found") - } - if uploadErr, ok := err.(*UnexpectedHTTPStatusError); !ok { - t.Fatalf("Wrong error type %T: %s", err, err) - } else if expected := "500 " + http.StatusText(http.StatusInternalServerError); uploadErr.Status != expected { - t.Fatalf("Unexpected response status: %s, expected %s", uploadErr.Status, expected) - } -} diff --git a/vendor/github.com/docker/distribution/registry/client/errors.go b/vendor/github.com/docker/distribution/registry/client/errors.go deleted file mode 100644 index 00fafe117a..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/errors.go +++ /dev/null @@ -1,103 +0,0 @@ -package client - -import ( - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - - "github.com/docker/distribution/registry/api/errcode" -) - -// ErrNoErrorsInBody is returned when a HTTP response body parses to an empty -// errcode.Errors slice. -var ErrNoErrorsInBody = errors.New("no error details found in HTTP response body") - -// UnexpectedHTTPStatusError is returned when an unexpected HTTP status is -// returned when making a registry api call. -type UnexpectedHTTPStatusError struct { - Status string -} - -func (e *UnexpectedHTTPStatusError) Error() string { - return fmt.Sprintf("received unexpected HTTP status: %s", e.Status) -} - -// UnexpectedHTTPResponseError is returned when an expected HTTP status code -// is returned, but the content was unexpected and failed to be parsed. -type UnexpectedHTTPResponseError struct { - ParseErr error - StatusCode int - Response []byte -} - -func (e *UnexpectedHTTPResponseError) Error() string { - return fmt.Sprintf("error parsing HTTP %d response body: %s: %q", e.StatusCode, e.ParseErr.Error(), string(e.Response)) -} - -func parseHTTPErrorResponse(statusCode int, r io.Reader) error { - var errors errcode.Errors - body, err := ioutil.ReadAll(r) - if err != nil { - return err - } - - // For backward compatibility, handle irregularly formatted - // messages that contain a "details" field. - var detailsErr struct { - Details string `json:"details"` - } - err = json.Unmarshal(body, &detailsErr) - if err == nil && detailsErr.Details != "" { - if statusCode == http.StatusUnauthorized { - return errcode.ErrorCodeUnauthorized.WithMessage(detailsErr.Details) - } - return errcode.ErrorCodeUnknown.WithMessage(detailsErr.Details) - } - - if err := json.Unmarshal(body, &errors); err != nil { - return &UnexpectedHTTPResponseError{ - ParseErr: err, - StatusCode: statusCode, - Response: body, - } - } - - if len(errors) == 0 { - // If there was no error specified in the body, return - // UnexpectedHTTPResponseError. - return &UnexpectedHTTPResponseError{ - ParseErr: ErrNoErrorsInBody, - StatusCode: statusCode, - Response: body, - } - } - - return errors -} - -// HandleErrorResponse returns error parsed from HTTP response for an -// unsuccessful HTTP response code (in the range 400 - 499 inclusive). An -// UnexpectedHTTPStatusError returned for response code outside of expected -// range. -func HandleErrorResponse(resp *http.Response) error { - if resp.StatusCode == 401 { - err := parseHTTPErrorResponse(resp.StatusCode, resp.Body) - if uErr, ok := err.(*UnexpectedHTTPResponseError); ok { - return errcode.ErrorCodeUnauthorized.WithDetail(uErr.Response) - } - return err - } - if resp.StatusCode >= 400 && resp.StatusCode < 500 { - return parseHTTPErrorResponse(resp.StatusCode, resp.Body) - } - return &UnexpectedHTTPStatusError{Status: resp.Status} -} - -// SuccessStatus returns true if the argument is a successful HTTP response -// code (in the range 200 - 399 inclusive). -func SuccessStatus(status int) bool { - return status >= 200 && status <= 399 -} diff --git a/vendor/github.com/docker/distribution/registry/client/errors_test.go b/vendor/github.com/docker/distribution/registry/client/errors_test.go deleted file mode 100644 index ca9dddd101..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/errors_test.go +++ /dev/null @@ -1,104 +0,0 @@ -package client - -import ( - "bytes" - "io" - "net/http" - "strings" - "testing" -) - -type nopCloser struct { - io.Reader -} - -func (nopCloser) Close() error { return nil } - -func TestHandleErrorResponse401ValidBody(t *testing.T) { - json := "{\"errors\":[{\"code\":\"UNAUTHORIZED\",\"message\":\"action requires authentication\"}]}" - response := &http.Response{ - Status: "401 Unauthorized", - StatusCode: 401, - Body: nopCloser{bytes.NewBufferString(json)}, - } - err := HandleErrorResponse(response) - - expectedMsg := "unauthorized: action requires authentication" - if !strings.Contains(err.Error(), expectedMsg) { - t.Errorf("Expected \"%s\", got: \"%s\"", expectedMsg, err.Error()) - } -} - -func TestHandleErrorResponse401WithInvalidBody(t *testing.T) { - json := "{invalid json}" - response := &http.Response{ - Status: "401 Unauthorized", - StatusCode: 401, - Body: nopCloser{bytes.NewBufferString(json)}, - } - err := HandleErrorResponse(response) - - expectedMsg := "unauthorized: authentication required" - if !strings.Contains(err.Error(), expectedMsg) { - t.Errorf("Expected \"%s\", got: \"%s\"", expectedMsg, err.Error()) - } -} - -func TestHandleErrorResponseExpectedStatusCode400ValidBody(t *testing.T) { - json := "{\"errors\":[{\"code\":\"DIGEST_INVALID\",\"message\":\"provided digest does not match\"}]}" - response := &http.Response{ - Status: "400 Bad Request", - StatusCode: 400, - Body: nopCloser{bytes.NewBufferString(json)}, - } - err := HandleErrorResponse(response) - - expectedMsg := "digest invalid: provided digest does not match" - if !strings.Contains(err.Error(), expectedMsg) { - t.Errorf("Expected \"%s\", got: \"%s\"", expectedMsg, err.Error()) - } -} - -func TestHandleErrorResponseExpectedStatusCode404EmptyErrorSlice(t *testing.T) { - json := `{"randomkey": "randomvalue"}` - response := &http.Response{ - Status: "404 Not Found", - StatusCode: 404, - Body: nopCloser{bytes.NewBufferString(json)}, - } - err := HandleErrorResponse(response) - - expectedMsg := `error parsing HTTP 404 response body: no error details found in HTTP response body: "{\"randomkey\": \"randomvalue\"}"` - if !strings.Contains(err.Error(), expectedMsg) { - t.Errorf("Expected \"%s\", got: \"%s\"", expectedMsg, err.Error()) - } -} - -func TestHandleErrorResponseExpectedStatusCode404InvalidBody(t *testing.T) { - json := "{invalid json}" - response := &http.Response{ - Status: "404 Not Found", - StatusCode: 404, - Body: nopCloser{bytes.NewBufferString(json)}, - } - err := HandleErrorResponse(response) - - expectedMsg := "error parsing HTTP 404 response body: invalid character 'i' looking for beginning of object key string: \"{invalid json}\"" - if !strings.Contains(err.Error(), expectedMsg) { - t.Errorf("Expected \"%s\", got: \"%s\"", expectedMsg, err.Error()) - } -} - -func TestHandleErrorResponseUnexpectedStatusCode501(t *testing.T) { - response := &http.Response{ - Status: "501 Not Implemented", - StatusCode: 501, - Body: nopCloser{bytes.NewBufferString("{\"Error Encountered\" : \"Function not implemented.\"}")}, - } - err := HandleErrorResponse(response) - - expectedMsg := "received unexpected HTTP status: 501 Not Implemented" - if !strings.Contains(err.Error(), expectedMsg) { - t.Errorf("Expected \"%s\", got: \"%s\"", expectedMsg, err.Error()) - } -} diff --git a/vendor/github.com/docker/distribution/registry/client/repository.go b/vendor/github.com/docker/distribution/registry/client/repository.go deleted file mode 100644 index 8cc5f7f9aa..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/repository.go +++ /dev/null @@ -1,832 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "strconv" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/registry/client/transport" - "github.com/docker/distribution/registry/storage/cache" - "github.com/docker/distribution/registry/storage/cache/memory" -) - -// Registry provides an interface for calling Repositories, which returns a catalog of repositories. -type Registry interface { - Repositories(ctx context.Context, repos []string, last string) (n int, err error) -} - -// checkHTTPRedirect is a callback that can manipulate redirected HTTP -// requests. It is used to preserve Accept and Range headers. -func checkHTTPRedirect(req *http.Request, via []*http.Request) error { - if len(via) >= 10 { - return errors.New("stopped after 10 redirects") - } - - if len(via) > 0 { - for headerName, headerVals := range via[0].Header { - if headerName != "Accept" && headerName != "Range" { - continue - } - for _, val := range headerVals { - // Don't add to redirected request if redirected - // request already has a header with the same - // name and value. - hasValue := false - for _, existingVal := range req.Header[headerName] { - if existingVal == val { - hasValue = true - break - } - } - if !hasValue { - req.Header.Add(headerName, val) - } - } - } - } - - return nil -} - -// NewRegistry creates a registry namespace which can be used to get a listing of repositories -func NewRegistry(ctx context.Context, baseURL string, transport http.RoundTripper) (Registry, error) { - ub, err := v2.NewURLBuilderFromString(baseURL, false) - if err != nil { - return nil, err - } - - client := &http.Client{ - Transport: transport, - Timeout: 1 * time.Minute, - CheckRedirect: checkHTTPRedirect, - } - - return ®istry{ - client: client, - ub: ub, - context: ctx, - }, nil -} - -type registry struct { - client *http.Client - ub *v2.URLBuilder - context context.Context -} - -// Repositories returns a lexigraphically sorted catalog given a base URL. The 'entries' slice will be filled up to the size -// of the slice, starting at the value provided in 'last'. The number of entries will be returned along with io.EOF if there -// are no more entries -func (r *registry) Repositories(ctx context.Context, entries []string, last string) (int, error) { - var numFilled int - var returnErr error - - values := buildCatalogValues(len(entries), last) - u, err := r.ub.BuildCatalogURL(values) - if err != nil { - return 0, err - } - - resp, err := r.client.Get(u) - if err != nil { - return 0, err - } - defer resp.Body.Close() - - if SuccessStatus(resp.StatusCode) { - var ctlg struct { - Repositories []string `json:"repositories"` - } - decoder := json.NewDecoder(resp.Body) - - if err := decoder.Decode(&ctlg); err != nil { - return 0, err - } - - for cnt := range ctlg.Repositories { - entries[cnt] = ctlg.Repositories[cnt] - } - numFilled = len(ctlg.Repositories) - - link := resp.Header.Get("Link") - if link == "" { - returnErr = io.EOF - } - } else { - return 0, HandleErrorResponse(resp) - } - - return numFilled, returnErr -} - -// NewRepository creates a new Repository for the given repository name and base URL. -func NewRepository(ctx context.Context, name reference.Named, baseURL string, transport http.RoundTripper) (distribution.Repository, error) { - ub, err := v2.NewURLBuilderFromString(baseURL, false) - if err != nil { - return nil, err - } - - client := &http.Client{ - Transport: transport, - CheckRedirect: checkHTTPRedirect, - // TODO(dmcgowan): create cookie jar - } - - return &repository{ - client: client, - ub: ub, - name: name, - context: ctx, - }, nil -} - -type repository struct { - client *http.Client - ub *v2.URLBuilder - context context.Context - name reference.Named -} - -func (r *repository) Named() reference.Named { - return r.name -} - -func (r *repository) Blobs(ctx context.Context) distribution.BlobStore { - statter := &blobStatter{ - name: r.name, - ub: r.ub, - client: r.client, - } - return &blobs{ - name: r.name, - ub: r.ub, - client: r.client, - statter: cache.NewCachedBlobStatter(memory.NewInMemoryBlobDescriptorCacheProvider(), statter), - } -} - -func (r *repository) Manifests(ctx context.Context, options ...distribution.ManifestServiceOption) (distribution.ManifestService, error) { - // todo(richardscothern): options should be sent over the wire - return &manifests{ - name: r.name, - ub: r.ub, - client: r.client, - etags: make(map[string]string), - }, nil -} - -func (r *repository) Tags(ctx context.Context) distribution.TagService { - return &tags{ - client: r.client, - ub: r.ub, - context: r.context, - name: r.Named(), - } -} - -// tags implements remote tagging operations. -type tags struct { - client *http.Client - ub *v2.URLBuilder - context context.Context - name reference.Named -} - -// All returns all tags -func (t *tags) All(ctx context.Context) ([]string, error) { - var tags []string - - u, err := t.ub.BuildTagsURL(t.name) - if err != nil { - return tags, err - } - - resp, err := t.client.Get(u) - if err != nil { - return tags, err - } - defer resp.Body.Close() - - if SuccessStatus(resp.StatusCode) { - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return tags, err - } - - tagsResponse := struct { - Tags []string `json:"tags"` - }{} - if err := json.Unmarshal(b, &tagsResponse); err != nil { - return tags, err - } - tags = tagsResponse.Tags - return tags, nil - } - return tags, HandleErrorResponse(resp) -} - -func descriptorFromResponse(response *http.Response) (distribution.Descriptor, error) { - desc := distribution.Descriptor{} - headers := response.Header - - ctHeader := headers.Get("Content-Type") - if ctHeader == "" { - return distribution.Descriptor{}, errors.New("missing or empty Content-Type header") - } - desc.MediaType = ctHeader - - digestHeader := headers.Get("Docker-Content-Digest") - if digestHeader == "" { - bytes, err := ioutil.ReadAll(response.Body) - if err != nil { - return distribution.Descriptor{}, err - } - _, desc, err := distribution.UnmarshalManifest(ctHeader, bytes) - if err != nil { - return distribution.Descriptor{}, err - } - return desc, nil - } - - dgst, err := digest.ParseDigest(digestHeader) - if err != nil { - return distribution.Descriptor{}, err - } - desc.Digest = dgst - - lengthHeader := headers.Get("Content-Length") - if lengthHeader == "" { - return distribution.Descriptor{}, errors.New("missing or empty Content-Length header") - } - length, err := strconv.ParseInt(lengthHeader, 10, 64) - if err != nil { - return distribution.Descriptor{}, err - } - desc.Size = length - - return desc, nil - -} - -// Get issues a HEAD request for a Manifest against its named endpoint in order -// to construct a descriptor for the tag. If the registry doesn't support HEADing -// a manifest, fallback to GET. -func (t *tags) Get(ctx context.Context, tag string) (distribution.Descriptor, error) { - ref, err := reference.WithTag(t.name, tag) - if err != nil { - return distribution.Descriptor{}, err - } - u, err := t.ub.BuildManifestURL(ref) - if err != nil { - return distribution.Descriptor{}, err - } - - req, err := http.NewRequest("HEAD", u, nil) - if err != nil { - return distribution.Descriptor{}, err - } - - for _, t := range distribution.ManifestMediaTypes() { - req.Header.Add("Accept", t) - } - - var attempts int - resp, err := t.client.Do(req) -check: - if err != nil { - return distribution.Descriptor{}, err - } - defer resp.Body.Close() - - switch { - case resp.StatusCode >= 200 && resp.StatusCode < 400: - return descriptorFromResponse(resp) - case resp.StatusCode == http.StatusMethodNotAllowed: - req, err = http.NewRequest("GET", u, nil) - if err != nil { - return distribution.Descriptor{}, err - } - - for _, t := range distribution.ManifestMediaTypes() { - req.Header.Add("Accept", t) - } - - resp, err = t.client.Do(req) - attempts++ - if attempts > 1 { - return distribution.Descriptor{}, err - } - goto check - default: - return distribution.Descriptor{}, HandleErrorResponse(resp) - } -} - -func (t *tags) Lookup(ctx context.Context, digest distribution.Descriptor) ([]string, error) { - panic("not implemented") -} - -func (t *tags) Tag(ctx context.Context, tag string, desc distribution.Descriptor) error { - panic("not implemented") -} - -func (t *tags) Untag(ctx context.Context, tag string) error { - panic("not implemented") -} - -type manifests struct { - name reference.Named - ub *v2.URLBuilder - client *http.Client - etags map[string]string -} - -func (ms *manifests) Exists(ctx context.Context, dgst digest.Digest) (bool, error) { - ref, err := reference.WithDigest(ms.name, dgst) - if err != nil { - return false, err - } - u, err := ms.ub.BuildManifestURL(ref) - if err != nil { - return false, err - } - - resp, err := ms.client.Head(u) - if err != nil { - return false, err - } - - if SuccessStatus(resp.StatusCode) { - return true, nil - } else if resp.StatusCode == http.StatusNotFound { - return false, nil - } - return false, HandleErrorResponse(resp) -} - -// AddEtagToTag allows a client to supply an eTag to Get which will be -// used for a conditional HTTP request. If the eTag matches, a nil manifest -// and ErrManifestNotModified error will be returned. etag is automatically -// quoted when added to this map. -func AddEtagToTag(tag, etag string) distribution.ManifestServiceOption { - return etagOption{tag, etag} -} - -type etagOption struct{ tag, etag string } - -func (o etagOption) Apply(ms distribution.ManifestService) error { - if ms, ok := ms.(*manifests); ok { - ms.etags[o.tag] = fmt.Sprintf(`"%s"`, o.etag) - return nil - } - return fmt.Errorf("etag options is a client-only option") -} - -func (ms *manifests) Get(ctx context.Context, dgst digest.Digest, options ...distribution.ManifestServiceOption) (distribution.Manifest, error) { - var ( - digestOrTag string - ref reference.Named - err error - ) - - for _, option := range options { - if opt, ok := option.(distribution.WithTagOption); ok { - digestOrTag = opt.Tag - ref, err = reference.WithTag(ms.name, opt.Tag) - if err != nil { - return nil, err - } - } else { - err := option.Apply(ms) - if err != nil { - return nil, err - } - } - } - - if digestOrTag == "" { - digestOrTag = dgst.String() - ref, err = reference.WithDigest(ms.name, dgst) - if err != nil { - return nil, err - } - } - - u, err := ms.ub.BuildManifestURL(ref) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", u, nil) - if err != nil { - return nil, err - } - - for _, t := range distribution.ManifestMediaTypes() { - req.Header.Add("Accept", t) - } - - if _, ok := ms.etags[digestOrTag]; ok { - req.Header.Set("If-None-Match", ms.etags[digestOrTag]) - } - - resp, err := ms.client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - if resp.StatusCode == http.StatusNotModified { - return nil, distribution.ErrManifestNotModified - } else if SuccessStatus(resp.StatusCode) { - mt := resp.Header.Get("Content-Type") - body, err := ioutil.ReadAll(resp.Body) - - if err != nil { - return nil, err - } - m, _, err := distribution.UnmarshalManifest(mt, body) - if err != nil { - return nil, err - } - return m, nil - } - return nil, HandleErrorResponse(resp) -} - -// Put puts a manifest. A tag can be specified using an options parameter which uses some shared state to hold the -// tag name in order to build the correct upload URL. -func (ms *manifests) Put(ctx context.Context, m distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) { - ref := ms.name - var tagged bool - - for _, option := range options { - if opt, ok := option.(distribution.WithTagOption); ok { - var err error - ref, err = reference.WithTag(ref, opt.Tag) - if err != nil { - return "", err - } - tagged = true - } else { - err := option.Apply(ms) - if err != nil { - return "", err - } - } - } - mediaType, p, err := m.Payload() - if err != nil { - return "", err - } - - if !tagged { - // generate a canonical digest and Put by digest - _, d, err := distribution.UnmarshalManifest(mediaType, p) - if err != nil { - return "", err - } - ref, err = reference.WithDigest(ref, d.Digest) - if err != nil { - return "", err - } - } - - manifestURL, err := ms.ub.BuildManifestURL(ref) - if err != nil { - return "", err - } - - putRequest, err := http.NewRequest("PUT", manifestURL, bytes.NewReader(p)) - if err != nil { - return "", err - } - - putRequest.Header.Set("Content-Type", mediaType) - - resp, err := ms.client.Do(putRequest) - if err != nil { - return "", err - } - defer resp.Body.Close() - - if SuccessStatus(resp.StatusCode) { - dgstHeader := resp.Header.Get("Docker-Content-Digest") - dgst, err := digest.ParseDigest(dgstHeader) - if err != nil { - return "", err - } - - return dgst, nil - } - - return "", HandleErrorResponse(resp) -} - -func (ms *manifests) Delete(ctx context.Context, dgst digest.Digest) error { - ref, err := reference.WithDigest(ms.name, dgst) - if err != nil { - return err - } - u, err := ms.ub.BuildManifestURL(ref) - if err != nil { - return err - } - req, err := http.NewRequest("DELETE", u, nil) - if err != nil { - return err - } - - resp, err := ms.client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - if SuccessStatus(resp.StatusCode) { - return nil - } - return HandleErrorResponse(resp) -} - -// todo(richardscothern): Restore interface and implementation with merge of #1050 -/*func (ms *manifests) Enumerate(ctx context.Context, manifests []distribution.Manifest, last distribution.Manifest) (n int, err error) { - panic("not supported") -}*/ - -type blobs struct { - name reference.Named - ub *v2.URLBuilder - client *http.Client - - statter distribution.BlobDescriptorService - distribution.BlobDeleter -} - -func sanitizeLocation(location, base string) (string, error) { - baseURL, err := url.Parse(base) - if err != nil { - return "", err - } - - locationURL, err := url.Parse(location) - if err != nil { - return "", err - } - - return baseURL.ResolveReference(locationURL).String(), nil -} - -func (bs *blobs) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - return bs.statter.Stat(ctx, dgst) - -} - -func (bs *blobs) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - reader, err := bs.Open(ctx, dgst) - if err != nil { - return nil, err - } - defer reader.Close() - - return ioutil.ReadAll(reader) -} - -func (bs *blobs) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - ref, err := reference.WithDigest(bs.name, dgst) - if err != nil { - return nil, err - } - blobURL, err := bs.ub.BuildBlobURL(ref) - if err != nil { - return nil, err - } - - return transport.NewHTTPReadSeeker(bs.client, blobURL, - func(resp *http.Response) error { - if resp.StatusCode == http.StatusNotFound { - return distribution.ErrBlobUnknown - } - return HandleErrorResponse(resp) - }), nil -} - -func (bs *blobs) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error { - panic("not implemented") -} - -func (bs *blobs) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - writer, err := bs.Create(ctx) - if err != nil { - return distribution.Descriptor{}, err - } - dgstr := digest.Canonical.New() - n, err := io.Copy(writer, io.TeeReader(bytes.NewReader(p), dgstr.Hash())) - if err != nil { - return distribution.Descriptor{}, err - } - if n < int64(len(p)) { - return distribution.Descriptor{}, fmt.Errorf("short copy: wrote %d of %d", n, len(p)) - } - - desc := distribution.Descriptor{ - MediaType: mediaType, - Size: int64(len(p)), - Digest: dgstr.Digest(), - } - - return writer.Commit(ctx, desc) -} - -// createOptions is a collection of blob creation modifiers relevant to general -// blob storage intended to be configured by the BlobCreateOption.Apply method. -type createOptions struct { - Mount struct { - ShouldMount bool - From reference.Canonical - } -} - -type optionFunc func(interface{}) error - -func (f optionFunc) Apply(v interface{}) error { - return f(v) -} - -// WithMountFrom returns a BlobCreateOption which designates that the blob should be -// mounted from the given canonical reference. -func WithMountFrom(ref reference.Canonical) distribution.BlobCreateOption { - return optionFunc(func(v interface{}) error { - opts, ok := v.(*createOptions) - if !ok { - return fmt.Errorf("unexpected options type: %T", v) - } - - opts.Mount.ShouldMount = true - opts.Mount.From = ref - - return nil - }) -} - -func (bs *blobs) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - var opts createOptions - - for _, option := range options { - err := option.Apply(&opts) - if err != nil { - return nil, err - } - } - - var values []url.Values - - if opts.Mount.ShouldMount { - values = append(values, url.Values{"from": {opts.Mount.From.Name()}, "mount": {opts.Mount.From.Digest().String()}}) - } - - u, err := bs.ub.BuildBlobUploadURL(bs.name, values...) - if err != nil { - return nil, err - } - - resp, err := bs.client.Post(u, "", nil) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - switch resp.StatusCode { - case http.StatusCreated: - desc, err := bs.statter.Stat(ctx, opts.Mount.From.Digest()) - if err != nil { - return nil, err - } - return nil, distribution.ErrBlobMounted{From: opts.Mount.From, Descriptor: desc} - case http.StatusAccepted: - // TODO(dmcgowan): Check for invalid UUID - uuid := resp.Header.Get("Docker-Upload-UUID") - location, err := sanitizeLocation(resp.Header.Get("Location"), u) - if err != nil { - return nil, err - } - - return &httpBlobUpload{ - statter: bs.statter, - client: bs.client, - uuid: uuid, - startedAt: time.Now(), - location: location, - }, nil - default: - return nil, HandleErrorResponse(resp) - } -} - -func (bs *blobs) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - panic("not implemented") -} - -func (bs *blobs) Delete(ctx context.Context, dgst digest.Digest) error { - return bs.statter.Clear(ctx, dgst) -} - -type blobStatter struct { - name reference.Named - ub *v2.URLBuilder - client *http.Client -} - -func (bs *blobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - ref, err := reference.WithDigest(bs.name, dgst) - if err != nil { - return distribution.Descriptor{}, err - } - u, err := bs.ub.BuildBlobURL(ref) - if err != nil { - return distribution.Descriptor{}, err - } - - resp, err := bs.client.Head(u) - if err != nil { - return distribution.Descriptor{}, err - } - defer resp.Body.Close() - - if SuccessStatus(resp.StatusCode) { - lengthHeader := resp.Header.Get("Content-Length") - if lengthHeader == "" { - return distribution.Descriptor{}, fmt.Errorf("missing content-length header for request: %s", u) - } - - length, err := strconv.ParseInt(lengthHeader, 10, 64) - if err != nil { - return distribution.Descriptor{}, fmt.Errorf("error parsing content-length: %v", err) - } - - return distribution.Descriptor{ - MediaType: resp.Header.Get("Content-Type"), - Size: length, - Digest: dgst, - }, nil - } else if resp.StatusCode == http.StatusNotFound { - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - return distribution.Descriptor{}, HandleErrorResponse(resp) -} - -func buildCatalogValues(maxEntries int, last string) url.Values { - values := url.Values{} - - if maxEntries > 0 { - values.Add("n", strconv.Itoa(maxEntries)) - } - - if last != "" { - values.Add("last", last) - } - - return values -} - -func (bs *blobStatter) Clear(ctx context.Context, dgst digest.Digest) error { - ref, err := reference.WithDigest(bs.name, dgst) - if err != nil { - return err - } - blobURL, err := bs.ub.BuildBlobURL(ref) - if err != nil { - return err - } - - req, err := http.NewRequest("DELETE", blobURL, nil) - if err != nil { - return err - } - - resp, err := bs.client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - if SuccessStatus(resp.StatusCode) { - return nil - } - return HandleErrorResponse(resp) -} - -func (bs *blobStatter) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/client/repository_test.go b/vendor/github.com/docker/distribution/registry/client/repository_test.go deleted file mode 100644 index 2faeb2768a..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/repository_test.go +++ /dev/null @@ -1,1094 +0,0 @@ -package client - -import ( - "bytes" - "crypto/rand" - "fmt" - "io" - "log" - "net/http" - "net/http/httptest" - "strconv" - "strings" - "testing" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/testutil" - "github.com/docker/distribution/uuid" - "github.com/docker/libtrust" -) - -func testServer(rrm testutil.RequestResponseMap) (string, func()) { - h := testutil.NewHandler(rrm) - s := httptest.NewServer(h) - return s.URL, s.Close -} - -func newRandomBlob(size int) (digest.Digest, []byte) { - b := make([]byte, size) - if n, err := rand.Read(b); err != nil { - panic(err) - } else if n != size { - panic("unable to read enough bytes") - } - - return digest.FromBytes(b), b -} - -func addTestFetch(repo string, dgst digest.Digest, content []byte, m *testutil.RequestResponseMap) { - *m = append(*m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "GET", - Route: "/v2/" + repo + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: content, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - - *m = append(*m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "HEAD", - Route: "/v2/" + repo + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) -} - -func addTestCatalog(route string, content []byte, link string, m *testutil.RequestResponseMap) { - headers := map[string][]string{ - "Content-Length": {strconv.Itoa(len(content))}, - "Content-Type": {"application/json; charset=utf-8"}, - } - if link != "" { - headers["Link"] = append(headers["Link"], link) - } - - *m = append(*m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "GET", - Route: route, - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: content, - Headers: http.Header(headers), - }, - }) -} - -func TestBlobDelete(t *testing.T) { - dgst, _ := newRandomBlob(1024) - var m testutil.RequestResponseMap - repo, _ := reference.ParseNamed("test.example.com/repo1") - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "DELETE", - Route: "/v2/" + repo.Name() + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - }), - }, - }) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - l := r.Blobs(ctx) - err = l.Delete(ctx, dgst) - if err != nil { - t.Errorf("Error deleting blob: %s", err.Error()) - } - -} - -func TestBlobFetch(t *testing.T) { - d1, b1 := newRandomBlob(1024) - var m testutil.RequestResponseMap - addTestFetch("test.example.com/repo1", d1, b1, &m) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - repo, _ := reference.ParseNamed("test.example.com/repo1") - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - l := r.Blobs(ctx) - - b, err := l.Get(ctx, d1) - if err != nil { - t.Fatal(err) - } - if bytes.Compare(b, b1) != 0 { - t.Fatalf("Wrong bytes values fetched: [%d]byte != [%d]byte", len(b), len(b1)) - } - - // TODO(dmcgowan): Test for unknown blob case -} - -func TestBlobExistsNoContentLength(t *testing.T) { - var m testutil.RequestResponseMap - - repo, _ := reference.ParseNamed("biff") - dgst, content := newRandomBlob(1024) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "GET", - Route: "/v2/" + repo.Name() + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: content, - Headers: http.Header(map[string][]string{ - // "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "HEAD", - Route: "/v2/" + repo.Name() + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - // "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - e, c := testServer(m) - defer c() - - ctx := context.Background() - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - l := r.Blobs(ctx) - - _, err = l.Stat(ctx, dgst) - if err == nil { - t.Fatal(err) - } - if !strings.Contains(err.Error(), "missing content-length heade") { - t.Fatalf("Expected missing content-length error message") - } - -} - -func TestBlobExists(t *testing.T) { - d1, b1 := newRandomBlob(1024) - var m testutil.RequestResponseMap - addTestFetch("test.example.com/repo1", d1, b1, &m) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - repo, _ := reference.ParseNamed("test.example.com/repo1") - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - l := r.Blobs(ctx) - - stat, err := l.Stat(ctx, d1) - if err != nil { - t.Fatal(err) - } - - if stat.Digest != d1 { - t.Fatalf("Unexpected digest: %s, expected %s", stat.Digest, d1) - } - - if stat.Size != int64(len(b1)) { - t.Fatalf("Unexpected length: %d, expected %d", stat.Size, len(b1)) - } - - // TODO(dmcgowan): Test error cases and ErrBlobUnknown case -} - -func TestBlobUploadChunked(t *testing.T) { - dgst, b1 := newRandomBlob(1024) - var m testutil.RequestResponseMap - chunks := [][]byte{ - b1[0:256], - b1[256:512], - b1[512:513], - b1[513:1024], - } - repo, _ := reference.ParseNamed("test.example.com/uploadrepo") - uuids := []string{uuid.Generate().String()} - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "POST", - Route: "/v2/" + repo.Name() + "/blobs/uploads/", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Location": {"/v2/" + repo.Name() + "/blobs/uploads/" + uuids[0]}, - "Docker-Upload-UUID": {uuids[0]}, - "Range": {"0-0"}, - }), - }, - }) - offset := 0 - for i, chunk := range chunks { - uuids = append(uuids, uuid.Generate().String()) - newOffset := offset + len(chunk) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "PATCH", - Route: "/v2/" + repo.Name() + "/blobs/uploads/" + uuids[i], - Body: chunk, - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Location": {"/v2/" + repo.Name() + "/blobs/uploads/" + uuids[i+1]}, - "Docker-Upload-UUID": {uuids[i+1]}, - "Range": {fmt.Sprintf("%d-%d", offset, newOffset-1)}, - }), - }, - }) - offset = newOffset - } - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "PUT", - Route: "/v2/" + repo.Name() + "/blobs/uploads/" + uuids[len(uuids)-1], - QueryParams: map[string][]string{ - "digest": {dgst.String()}, - }, - }, - Response: testutil.Response{ - StatusCode: http.StatusCreated, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Docker-Content-Digest": {dgst.String()}, - "Content-Range": {fmt.Sprintf("0-%d", offset-1)}, - }), - }, - }) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "HEAD", - Route: "/v2/" + repo.Name() + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(offset)}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - l := r.Blobs(ctx) - - upload, err := l.Create(ctx) - if err != nil { - t.Fatal(err) - } - - if upload.ID() != uuids[0] { - log.Fatalf("Unexpected UUID %s; expected %s", upload.ID(), uuids[0]) - } - - for _, chunk := range chunks { - n, err := upload.Write(chunk) - if err != nil { - t.Fatal(err) - } - if n != len(chunk) { - t.Fatalf("Unexpected length returned from write: %d; expected: %d", n, len(chunk)) - } - } - - blob, err := upload.Commit(ctx, distribution.Descriptor{ - Digest: dgst, - Size: int64(len(b1)), - }) - if err != nil { - t.Fatal(err) - } - - if blob.Size != int64(len(b1)) { - t.Fatalf("Unexpected blob size: %d; expected: %d", blob.Size, len(b1)) - } -} - -func TestBlobUploadMonolithic(t *testing.T) { - dgst, b1 := newRandomBlob(1024) - var m testutil.RequestResponseMap - repo, _ := reference.ParseNamed("test.example.com/uploadrepo") - uploadID := uuid.Generate().String() - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "POST", - Route: "/v2/" + repo.Name() + "/blobs/uploads/", - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Location": {"/v2/" + repo.Name() + "/blobs/uploads/" + uploadID}, - "Docker-Upload-UUID": {uploadID}, - "Range": {"0-0"}, - }), - }, - }) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "PATCH", - Route: "/v2/" + repo.Name() + "/blobs/uploads/" + uploadID, - Body: b1, - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Location": {"/v2/" + repo.Name() + "/blobs/uploads/" + uploadID}, - "Docker-Upload-UUID": {uploadID}, - "Content-Length": {"0"}, - "Docker-Content-Digest": {dgst.String()}, - "Range": {fmt.Sprintf("0-%d", len(b1)-1)}, - }), - }, - }) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "PUT", - Route: "/v2/" + repo.Name() + "/blobs/uploads/" + uploadID, - QueryParams: map[string][]string{ - "digest": {dgst.String()}, - }, - }, - Response: testutil.Response{ - StatusCode: http.StatusCreated, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Docker-Content-Digest": {dgst.String()}, - "Content-Range": {fmt.Sprintf("0-%d", len(b1)-1)}, - }), - }, - }) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "HEAD", - Route: "/v2/" + repo.Name() + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(b1))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - l := r.Blobs(ctx) - - upload, err := l.Create(ctx) - if err != nil { - t.Fatal(err) - } - - if upload.ID() != uploadID { - log.Fatalf("Unexpected UUID %s; expected %s", upload.ID(), uploadID) - } - - n, err := upload.ReadFrom(bytes.NewReader(b1)) - if err != nil { - t.Fatal(err) - } - if n != int64(len(b1)) { - t.Fatalf("Unexpected ReadFrom length: %d; expected: %d", n, len(b1)) - } - - blob, err := upload.Commit(ctx, distribution.Descriptor{ - Digest: dgst, - Size: int64(len(b1)), - }) - if err != nil { - t.Fatal(err) - } - - if blob.Size != int64(len(b1)) { - t.Fatalf("Unexpected blob size: %d; expected: %d", blob.Size, len(b1)) - } -} - -func TestBlobMount(t *testing.T) { - dgst, content := newRandomBlob(1024) - var m testutil.RequestResponseMap - repo, _ := reference.ParseNamed("test.example.com/uploadrepo") - - sourceRepo, _ := reference.ParseNamed("test.example.com/sourcerepo") - canonicalRef, _ := reference.WithDigest(sourceRepo, dgst) - - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "POST", - Route: "/v2/" + repo.Name() + "/blobs/uploads/", - QueryParams: map[string][]string{"from": {sourceRepo.Name()}, "mount": {dgst.String()}}, - }, - Response: testutil.Response{ - StatusCode: http.StatusCreated, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Location": {"/v2/" + repo.Name() + "/blobs/" + dgst.String()}, - "Docker-Content-Digest": {dgst.String()}, - }), - }, - }) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "HEAD", - Route: "/v2/" + repo.Name() + "/blobs/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - - l := r.Blobs(ctx) - - bw, err := l.Create(ctx, WithMountFrom(canonicalRef)) - if bw != nil { - t.Fatalf("Expected blob writer to be nil, was %v", bw) - } - - if ebm, ok := err.(distribution.ErrBlobMounted); ok { - if ebm.From.Digest() != dgst { - t.Fatalf("Unexpected digest: %s, expected %s", ebm.From.Digest(), dgst) - } - if ebm.From.Name() != sourceRepo.Name() { - t.Fatalf("Unexpected from: %s, expected %s", ebm.From.Name(), sourceRepo) - } - } else { - t.Fatalf("Unexpected error: %v, expected an ErrBlobMounted", err) - } -} - -func newRandomSchemaV1Manifest(name reference.Named, tag string, blobCount int) (*schema1.SignedManifest, digest.Digest, []byte) { - blobs := make([]schema1.FSLayer, blobCount) - history := make([]schema1.History, blobCount) - - for i := 0; i < blobCount; i++ { - dgst, blob := newRandomBlob((i % 5) * 16) - - blobs[i] = schema1.FSLayer{BlobSum: dgst} - history[i] = schema1.History{V1Compatibility: fmt.Sprintf("{\"Hex\": \"%x\"}", blob)} - } - - m := schema1.Manifest{ - Name: name.String(), - Tag: tag, - Architecture: "x86", - FSLayers: blobs, - History: history, - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - panic(err) - } - - sm, err := schema1.Sign(&m, pk) - if err != nil { - panic(err) - } - - return sm, digest.FromBytes(sm.Canonical), sm.Canonical -} - -func addTestManifestWithEtag(repo reference.Named, reference string, content []byte, m *testutil.RequestResponseMap, dgst string) { - actualDigest := digest.FromBytes(content) - getReqWithEtag := testutil.Request{ - Method: "GET", - Route: "/v2/" + repo.Name() + "/manifests/" + reference, - Headers: http.Header(map[string][]string{ - "If-None-Match": {fmt.Sprintf(`"%s"`, dgst)}, - }), - } - - var getRespWithEtag testutil.Response - if actualDigest.String() == dgst { - getRespWithEtag = testutil.Response{ - StatusCode: http.StatusNotModified, - Body: []byte{}, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - "Content-Type": {schema1.MediaTypeSignedManifest}, - }), - } - } else { - getRespWithEtag = testutil.Response{ - StatusCode: http.StatusOK, - Body: content, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - "Content-Type": {schema1.MediaTypeSignedManifest}, - }), - } - - } - *m = append(*m, testutil.RequestResponseMapping{Request: getReqWithEtag, Response: getRespWithEtag}) -} - -func addTestManifest(repo reference.Named, reference string, mediatype string, content []byte, m *testutil.RequestResponseMap) { - *m = append(*m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "GET", - Route: "/v2/" + repo.Name() + "/manifests/" + reference, - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: content, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - "Content-Type": {mediatype}, - }), - }, - }) - *m = append(*m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "HEAD", - Route: "/v2/" + repo.Name() + "/manifests/" + reference, - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(content))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - "Content-Type": {mediatype}, - }), - }, - }) - -} - -func checkEqualManifest(m1, m2 *schema1.SignedManifest) error { - if m1.Name != m2.Name { - return fmt.Errorf("name does not match %q != %q", m1.Name, m2.Name) - } - if m1.Tag != m2.Tag { - return fmt.Errorf("tag does not match %q != %q", m1.Tag, m2.Tag) - } - if len(m1.FSLayers) != len(m2.FSLayers) { - return fmt.Errorf("fs blob length does not match %d != %d", len(m1.FSLayers), len(m2.FSLayers)) - } - for i := range m1.FSLayers { - if m1.FSLayers[i].BlobSum != m2.FSLayers[i].BlobSum { - return fmt.Errorf("blobsum does not match %q != %q", m1.FSLayers[i].BlobSum, m2.FSLayers[i].BlobSum) - } - } - if len(m1.History) != len(m2.History) { - return fmt.Errorf("history length does not match %d != %d", len(m1.History), len(m2.History)) - } - for i := range m1.History { - if m1.History[i].V1Compatibility != m2.History[i].V1Compatibility { - return fmt.Errorf("blobsum does not match %q != %q", m1.History[i].V1Compatibility, m2.History[i].V1Compatibility) - } - } - return nil -} - -func TestV1ManifestFetch(t *testing.T) { - ctx := context.Background() - repo, _ := reference.ParseNamed("test.example.com/repo") - m1, dgst, _ := newRandomSchemaV1Manifest(repo, "latest", 6) - var m testutil.RequestResponseMap - _, pl, err := m1.Payload() - if err != nil { - t.Fatal(err) - } - addTestManifest(repo, dgst.String(), schema1.MediaTypeSignedManifest, pl, &m) - addTestManifest(repo, "latest", schema1.MediaTypeSignedManifest, pl, &m) - addTestManifest(repo, "badcontenttype", "text/html", pl, &m) - - e, c := testServer(m) - defer c() - - r, err := NewRepository(context.Background(), repo, e, nil) - if err != nil { - t.Fatal(err) - } - ms, err := r.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - - ok, err := ms.Exists(ctx, dgst) - if err != nil { - t.Fatal(err) - } - if !ok { - t.Fatal("Manifest does not exist") - } - - manifest, err := ms.Get(ctx, dgst) - if err != nil { - t.Fatal(err) - } - v1manifest, ok := manifest.(*schema1.SignedManifest) - if !ok { - t.Fatalf("Unexpected manifest type from Get: %T", manifest) - } - - if err := checkEqualManifest(v1manifest, m1); err != nil { - t.Fatal(err) - } - - manifest, err = ms.Get(ctx, dgst, distribution.WithTag("latest")) - if err != nil { - t.Fatal(err) - } - v1manifest, ok = manifest.(*schema1.SignedManifest) - if !ok { - t.Fatalf("Unexpected manifest type from Get: %T", manifest) - } - - if err = checkEqualManifest(v1manifest, m1); err != nil { - t.Fatal(err) - } - - manifest, err = ms.Get(ctx, dgst, distribution.WithTag("badcontenttype")) - if err != nil { - t.Fatal(err) - } - v1manifest, ok = manifest.(*schema1.SignedManifest) - if !ok { - t.Fatalf("Unexpected manifest type from Get: %T", manifest) - } - - if err = checkEqualManifest(v1manifest, m1); err != nil { - t.Fatal(err) - } -} - -func TestManifestFetchWithEtag(t *testing.T) { - repo, _ := reference.ParseNamed("test.example.com/repo/by/tag") - _, d1, p1 := newRandomSchemaV1Manifest(repo, "latest", 6) - var m testutil.RequestResponseMap - addTestManifestWithEtag(repo, "latest", p1, &m, d1.String()) - - e, c := testServer(m) - defer c() - - ctx := context.Background() - r, err := NewRepository(ctx, repo, e, nil) - if err != nil { - t.Fatal(err) - } - - ms, err := r.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - - clientManifestService, ok := ms.(*manifests) - if !ok { - panic("wrong type for client manifest service") - } - _, err = clientManifestService.Get(ctx, d1, distribution.WithTag("latest"), AddEtagToTag("latest", d1.String())) - if err != distribution.ErrManifestNotModified { - t.Fatal(err) - } -} - -func TestManifestDelete(t *testing.T) { - repo, _ := reference.ParseNamed("test.example.com/repo/delete") - _, dgst1, _ := newRandomSchemaV1Manifest(repo, "latest", 6) - _, dgst2, _ := newRandomSchemaV1Manifest(repo, "latest", 6) - var m testutil.RequestResponseMap - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "DELETE", - Route: "/v2/" + repo.Name() + "/manifests/" + dgst1.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - }), - }, - }) - - e, c := testServer(m) - defer c() - - r, err := NewRepository(context.Background(), repo, e, nil) - if err != nil { - t.Fatal(err) - } - ctx := context.Background() - ms, err := r.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - - if err := ms.Delete(ctx, dgst1); err != nil { - t.Fatal(err) - } - if err := ms.Delete(ctx, dgst2); err == nil { - t.Fatal("Expected error deleting unknown manifest") - } - // TODO(dmcgowan): Check for specific unknown error -} - -func TestManifestPut(t *testing.T) { - repo, _ := reference.ParseNamed("test.example.com/repo/delete") - m1, dgst, _ := newRandomSchemaV1Manifest(repo, "other", 6) - - _, payload, err := m1.Payload() - if err != nil { - t.Fatal(err) - } - - var m testutil.RequestResponseMap - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "PUT", - Route: "/v2/" + repo.Name() + "/manifests/other", - Body: payload, - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Docker-Content-Digest": {dgst.String()}, - }), - }, - }) - - putDgst := digest.FromBytes(m1.Canonical) - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "PUT", - Route: "/v2/" + repo.Name() + "/manifests/" + putDgst.String(), - Body: payload, - }, - Response: testutil.Response{ - StatusCode: http.StatusAccepted, - Headers: http.Header(map[string][]string{ - "Content-Length": {"0"}, - "Docker-Content-Digest": {putDgst.String()}, - }), - }, - }) - - e, c := testServer(m) - defer c() - - r, err := NewRepository(context.Background(), repo, e, nil) - if err != nil { - t.Fatal(err) - } - ctx := context.Background() - ms, err := r.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - - if _, err := ms.Put(ctx, m1, distribution.WithTag(m1.Tag)); err != nil { - t.Fatal(err) - } - - if _, err := ms.Put(ctx, m1); err != nil { - t.Fatal(err) - } - - // TODO(dmcgowan): Check for invalid input error -} - -func TestManifestTags(t *testing.T) { - repo, _ := reference.ParseNamed("test.example.com/repo/tags/list") - tagsList := []byte(strings.TrimSpace(` -{ - "name": "test.example.com/repo/tags/list", - "tags": [ - "tag1", - "tag2", - "funtag" - ] -} - `)) - var m testutil.RequestResponseMap - for i := 0; i < 3; i++ { - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "GET", - Route: "/v2/" + repo.Name() + "/tags/list", - }, - Response: testutil.Response{ - StatusCode: http.StatusOK, - Body: tagsList, - Headers: http.Header(map[string][]string{ - "Content-Length": {fmt.Sprint(len(tagsList))}, - "Last-Modified": {time.Now().Add(-1 * time.Second).Format(time.ANSIC)}, - }), - }, - }) - } - e, c := testServer(m) - defer c() - - r, err := NewRepository(context.Background(), repo, e, nil) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - tagService := r.Tags(ctx) - - tags, err := tagService.All(ctx) - if err != nil { - t.Fatal(err) - } - if len(tags) != 3 { - t.Fatalf("Wrong number of tags returned: %d, expected 3", len(tags)) - } - - expected := map[string]struct{}{ - "tag1": {}, - "tag2": {}, - "funtag": {}, - } - for _, t := range tags { - delete(expected, t) - } - if len(expected) != 0 { - t.Fatalf("unexpected tags returned: %v", expected) - } - // TODO(dmcgowan): Check for error cases -} - -func TestManifestUnauthorized(t *testing.T) { - repo, _ := reference.ParseNamed("test.example.com/repo") - _, dgst, _ := newRandomSchemaV1Manifest(repo, "latest", 6) - var m testutil.RequestResponseMap - - m = append(m, testutil.RequestResponseMapping{ - Request: testutil.Request{ - Method: "GET", - Route: "/v2/" + repo.Name() + "/manifests/" + dgst.String(), - }, - Response: testutil.Response{ - StatusCode: http.StatusUnauthorized, - Body: []byte("garbage"), - }, - }) - - e, c := testServer(m) - defer c() - - r, err := NewRepository(context.Background(), repo, e, nil) - if err != nil { - t.Fatal(err) - } - ctx := context.Background() - ms, err := r.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - - _, err = ms.Get(ctx, dgst) - if err == nil { - t.Fatal("Expected error fetching manifest") - } - v2Err, ok := err.(errcode.Error) - if !ok { - t.Fatalf("Unexpected error type: %#v", err) - } - if v2Err.Code != errcode.ErrorCodeUnauthorized { - t.Fatalf("Unexpected error code: %s", v2Err.Code.String()) - } - if expected := errcode.ErrorCodeUnauthorized.Message(); v2Err.Message != expected { - t.Fatalf("Unexpected message value: %q, expected %q", v2Err.Message, expected) - } -} - -func TestCatalog(t *testing.T) { - var m testutil.RequestResponseMap - addTestCatalog( - "/v2/_catalog?n=5", - []byte("{\"repositories\":[\"foo\", \"bar\", \"baz\"]}"), "", &m) - - e, c := testServer(m) - defer c() - - entries := make([]string, 5) - - r, err := NewRegistry(context.Background(), e, nil) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - numFilled, err := r.Repositories(ctx, entries, "") - if err != io.EOF { - t.Fatal(err) - } - - if numFilled != 3 { - t.Fatalf("Got wrong number of repos") - } -} - -func TestCatalogInParts(t *testing.T) { - var m testutil.RequestResponseMap - addTestCatalog( - "/v2/_catalog?n=2", - []byte("{\"repositories\":[\"bar\", \"baz\"]}"), - "", &m) - addTestCatalog( - "/v2/_catalog?last=baz&n=2", - []byte("{\"repositories\":[\"foo\"]}"), - "", &m) - - e, c := testServer(m) - defer c() - - entries := make([]string, 2) - - r, err := NewRegistry(context.Background(), e, nil) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - numFilled, err := r.Repositories(ctx, entries, "") - if err != nil { - t.Fatal(err) - } - - if numFilled != 2 { - t.Fatalf("Got wrong number of repos") - } - - numFilled, err = r.Repositories(ctx, entries, "baz") - if err != io.EOF { - t.Fatal(err) - } - - if numFilled != 1 { - t.Fatalf("Got wrong number of repos") - } -} - -func TestSanitizeLocation(t *testing.T) { - for _, testcase := range []struct { - description string - location string - source string - expected string - err error - }{ - { - description: "ensure relative location correctly resolved", - location: "/v2/foo/baasdf", - source: "http://blahalaja.com/v1", - expected: "http://blahalaja.com/v2/foo/baasdf", - }, - { - description: "ensure parameters are preserved", - location: "/v2/foo/baasdf?_state=asdfasfdasdfasdf&digest=foo", - source: "http://blahalaja.com/v1", - expected: "http://blahalaja.com/v2/foo/baasdf?_state=asdfasfdasdfasdf&digest=foo", - }, - { - description: "ensure new hostname overidden", - location: "https://mwhahaha.com/v2/foo/baasdf?_state=asdfasfdasdfasdf", - source: "http://blahalaja.com/v1", - expected: "https://mwhahaha.com/v2/foo/baasdf?_state=asdfasfdasdfasdf", - }, - } { - fatalf := func(format string, args ...interface{}) { - t.Fatalf(testcase.description+": "+format, args...) - } - - s, err := sanitizeLocation(testcase.location, testcase.source) - if err != testcase.err { - if testcase.err != nil { - fatalf("expected error: %v != %v", err, testcase) - } else { - fatalf("unexpected error sanitizing: %v", err) - } - } - - if s != testcase.expected { - fatalf("bad sanitize: %q != %q", s, testcase.expected) - } - } -} diff --git a/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go b/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go deleted file mode 100644 index e1b17a03a0..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go +++ /dev/null @@ -1,250 +0,0 @@ -package transport - -import ( - "errors" - "fmt" - "io" - "net/http" - "os" - "regexp" - "strconv" -) - -var ( - contentRangeRegexp = regexp.MustCompile(`bytes ([0-9]+)-([0-9]+)/([0-9]+|\\*)`) - - // ErrWrongCodeForByteRange is returned if the client sends a request - // with a Range header but the server returns a 2xx or 3xx code other - // than 206 Partial Content. - ErrWrongCodeForByteRange = errors.New("expected HTTP 206 from byte range request") -) - -// ReadSeekCloser combines io.ReadSeeker with io.Closer. -type ReadSeekCloser interface { - io.ReadSeeker - io.Closer -} - -// NewHTTPReadSeeker handles reading from an HTTP endpoint using a GET -// request. When seeking and starting a read from a non-zero offset -// the a "Range" header will be added which sets the offset. -// TODO(dmcgowan): Move this into a separate utility package -func NewHTTPReadSeeker(client *http.Client, url string, errorHandler func(*http.Response) error) ReadSeekCloser { - return &httpReadSeeker{ - client: client, - url: url, - errorHandler: errorHandler, - } -} - -type httpReadSeeker struct { - client *http.Client - url string - - // errorHandler creates an error from an unsuccessful HTTP response. - // This allows the error to be created with the HTTP response body - // without leaking the body through a returned error. - errorHandler func(*http.Response) error - - size int64 - - // rc is the remote read closer. - rc io.ReadCloser - // readerOffset tracks the offset as of the last read. - readerOffset int64 - // seekOffset allows Seek to override the offset. Seek changes - // seekOffset instead of changing readOffset directly so that - // connection resets can be delayed and possibly avoided if the - // seek is undone (i.e. seeking to the end and then back to the - // beginning). - seekOffset int64 - err error -} - -func (hrs *httpReadSeeker) Read(p []byte) (n int, err error) { - if hrs.err != nil { - return 0, hrs.err - } - - // If we sought to a different position, we need to reset the - // connection. This logic is here instead of Seek so that if - // a seek is undone before the next read, the connection doesn't - // need to be closed and reopened. A common example of this is - // seeking to the end to determine the length, and then seeking - // back to the original position. - if hrs.readerOffset != hrs.seekOffset { - hrs.reset() - } - - hrs.readerOffset = hrs.seekOffset - - rd, err := hrs.reader() - if err != nil { - return 0, err - } - - n, err = rd.Read(p) - hrs.seekOffset += int64(n) - hrs.readerOffset += int64(n) - - return n, err -} - -func (hrs *httpReadSeeker) Seek(offset int64, whence int) (int64, error) { - if hrs.err != nil { - return 0, hrs.err - } - - lastReaderOffset := hrs.readerOffset - - if whence == os.SEEK_SET && hrs.rc == nil { - // If no request has been made yet, and we are seeking to an - // absolute position, set the read offset as well to avoid an - // unnecessary request. - hrs.readerOffset = offset - } - - _, err := hrs.reader() - if err != nil { - hrs.readerOffset = lastReaderOffset - return 0, err - } - - newOffset := hrs.seekOffset - - switch whence { - case os.SEEK_CUR: - newOffset += offset - case os.SEEK_END: - if hrs.size < 0 { - return 0, errors.New("content length not known") - } - newOffset = hrs.size + offset - case os.SEEK_SET: - newOffset = offset - } - - if newOffset < 0 { - err = errors.New("cannot seek to negative position") - } else { - hrs.seekOffset = newOffset - } - - return hrs.seekOffset, err -} - -func (hrs *httpReadSeeker) Close() error { - if hrs.err != nil { - return hrs.err - } - - // close and release reader chain - if hrs.rc != nil { - hrs.rc.Close() - } - - hrs.rc = nil - - hrs.err = errors.New("httpLayer: closed") - - return nil -} - -func (hrs *httpReadSeeker) reset() { - if hrs.err != nil { - return - } - if hrs.rc != nil { - hrs.rc.Close() - hrs.rc = nil - } -} - -func (hrs *httpReadSeeker) reader() (io.Reader, error) { - if hrs.err != nil { - return nil, hrs.err - } - - if hrs.rc != nil { - return hrs.rc, nil - } - - req, err := http.NewRequest("GET", hrs.url, nil) - if err != nil { - return nil, err - } - - if hrs.readerOffset > 0 { - // If we are at different offset, issue a range request from there. - req.Header.Add("Range", fmt.Sprintf("bytes=%d-", hrs.readerOffset)) - // TODO: get context in here - // context.GetLogger(hrs.context).Infof("Range: %s", req.Header.Get("Range")) - } - - resp, err := hrs.client.Do(req) - if err != nil { - return nil, err - } - - // Normally would use client.SuccessStatus, but that would be a cyclic - // import - if resp.StatusCode >= 200 && resp.StatusCode <= 399 { - if hrs.readerOffset > 0 { - if resp.StatusCode != http.StatusPartialContent { - return nil, ErrWrongCodeForByteRange - } - - contentRange := resp.Header.Get("Content-Range") - if contentRange == "" { - return nil, errors.New("no Content-Range header found in HTTP 206 response") - } - - submatches := contentRangeRegexp.FindStringSubmatch(contentRange) - if len(submatches) < 4 { - return nil, fmt.Errorf("could not parse Content-Range header: %s", contentRange) - } - - startByte, err := strconv.ParseUint(submatches[1], 10, 64) - if err != nil { - return nil, fmt.Errorf("could not parse start of range in Content-Range header: %s", contentRange) - } - - if startByte != uint64(hrs.readerOffset) { - return nil, fmt.Errorf("received Content-Range starting at offset %d instead of requested %d", startByte, hrs.readerOffset) - } - - endByte, err := strconv.ParseUint(submatches[2], 10, 64) - if err != nil { - return nil, fmt.Errorf("could not parse end of range in Content-Range header: %s", contentRange) - } - - if submatches[3] == "*" { - hrs.size = -1 - } else { - size, err := strconv.ParseUint(submatches[3], 10, 64) - if err != nil { - return nil, fmt.Errorf("could not parse total size in Content-Range header: %s", contentRange) - } - - if endByte+1 != size { - return nil, fmt.Errorf("range in Content-Range stops before the end of the content: %s", contentRange) - } - - hrs.size = int64(size) - } - } else if resp.StatusCode == http.StatusOK { - hrs.size = resp.ContentLength - } else { - hrs.size = -1 - } - hrs.rc = resp.Body - } else { - defer resp.Body.Close() - if hrs.errorHandler != nil { - return nil, hrs.errorHandler(resp) - } - return nil, fmt.Errorf("unexpected status resolving reader: %v", resp.Status) - } - - return hrs.rc, nil -} diff --git a/vendor/github.com/docker/distribution/registry/client/transport/transport.go b/vendor/github.com/docker/distribution/registry/client/transport/transport.go deleted file mode 100644 index 30e45fab0f..0000000000 --- a/vendor/github.com/docker/distribution/registry/client/transport/transport.go +++ /dev/null @@ -1,147 +0,0 @@ -package transport - -import ( - "io" - "net/http" - "sync" -) - -// RequestModifier represents an object which will do an inplace -// modification of an HTTP request. -type RequestModifier interface { - ModifyRequest(*http.Request) error -} - -type headerModifier http.Header - -// NewHeaderRequestModifier returns a new RequestModifier which will -// add the given headers to a request. -func NewHeaderRequestModifier(header http.Header) RequestModifier { - return headerModifier(header) -} - -func (h headerModifier) ModifyRequest(req *http.Request) error { - for k, s := range http.Header(h) { - req.Header[k] = append(req.Header[k], s...) - } - - return nil -} - -// NewTransport creates a new transport which will apply modifiers to -// the request on a RoundTrip call. -func NewTransport(base http.RoundTripper, modifiers ...RequestModifier) http.RoundTripper { - return &transport{ - Modifiers: modifiers, - Base: base, - } -} - -// transport is an http.RoundTripper that makes HTTP requests after -// copying and modifying the request -type transport struct { - Modifiers []RequestModifier - Base http.RoundTripper - - mu sync.Mutex // guards modReq - modReq map[*http.Request]*http.Request // original -> modified -} - -// RoundTrip authorizes and authenticates the request with an -// access token. If no token exists or token is expired, -// tries to refresh/fetch a new token. -func (t *transport) RoundTrip(req *http.Request) (*http.Response, error) { - req2 := cloneRequest(req) - for _, modifier := range t.Modifiers { - if err := modifier.ModifyRequest(req2); err != nil { - return nil, err - } - } - - t.setModReq(req, req2) - res, err := t.base().RoundTrip(req2) - if err != nil { - t.setModReq(req, nil) - return nil, err - } - res.Body = &onEOFReader{ - rc: res.Body, - fn: func() { t.setModReq(req, nil) }, - } - return res, nil -} - -// CancelRequest cancels an in-flight request by closing its connection. -func (t *transport) CancelRequest(req *http.Request) { - type canceler interface { - CancelRequest(*http.Request) - } - if cr, ok := t.base().(canceler); ok { - t.mu.Lock() - modReq := t.modReq[req] - delete(t.modReq, req) - t.mu.Unlock() - cr.CancelRequest(modReq) - } -} - -func (t *transport) base() http.RoundTripper { - if t.Base != nil { - return t.Base - } - return http.DefaultTransport -} - -func (t *transport) setModReq(orig, mod *http.Request) { - t.mu.Lock() - defer t.mu.Unlock() - if t.modReq == nil { - t.modReq = make(map[*http.Request]*http.Request) - } - if mod == nil { - delete(t.modReq, orig) - } else { - t.modReq[orig] = mod - } -} - -// 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, len(r.Header)) - for k, s := range r.Header { - r2.Header[k] = append([]string(nil), s...) - } - - return r2 -} - -type onEOFReader struct { - rc io.ReadCloser - fn func() -} - -func (r *onEOFReader) Read(p []byte) (n int, err error) { - n, err = r.rc.Read(p) - if err == io.EOF { - r.runFunc() - } - return -} - -func (r *onEOFReader) Close() error { - err := r.rc.Close() - r.runFunc() - return err -} - -func (r *onEOFReader) runFunc() { - if fn := r.fn; fn != nil { - fn() - r.fn = nil - } -} diff --git a/vendor/github.com/docker/distribution/registry/doc.go b/vendor/github.com/docker/distribution/registry/doc.go deleted file mode 100644 index a1ba7f3ab0..0000000000 --- a/vendor/github.com/docker/distribution/registry/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package registry provides the main entrypoints for running a registry. -package registry diff --git a/vendor/github.com/docker/distribution/registry/garbagecollect.go b/vendor/github.com/docker/distribution/registry/garbagecollect.go deleted file mode 100644 index 1be4546d7c..0000000000 --- a/vendor/github.com/docker/distribution/registry/garbagecollect.go +++ /dev/null @@ -1,187 +0,0 @@ -package registry - -import ( - "fmt" - "os" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/manifest/schema2" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/factory" - "github.com/docker/libtrust" - "github.com/spf13/cobra" -) - -func emit(format string, a ...interface{}) { - if dryRun { - fmt.Printf(format+"\n", a...) - } -} - -func markAndSweep(ctx context.Context, storageDriver driver.StorageDriver, registry distribution.Namespace) error { - - repositoryEnumerator, ok := registry.(distribution.RepositoryEnumerator) - if !ok { - return fmt.Errorf("unable to convert Namespace to RepositoryEnumerator") - } - - // mark - markSet := make(map[digest.Digest]struct{}) - err := repositoryEnumerator.Enumerate(ctx, func(repoName string) error { - emit(repoName) - - var err error - named, err := reference.ParseNamed(repoName) - if err != nil { - return fmt.Errorf("failed to parse repo name %s: %v", repoName, err) - } - repository, err := registry.Repository(ctx, named) - if err != nil { - return fmt.Errorf("failed to construct repository: %v", err) - } - - manifestService, err := repository.Manifests(ctx) - if err != nil { - return fmt.Errorf("failed to construct manifest service: %v", err) - } - - manifestEnumerator, ok := manifestService.(distribution.ManifestEnumerator) - if !ok { - return fmt.Errorf("unable to convert ManifestService into ManifestEnumerator") - } - - err = manifestEnumerator.Enumerate(ctx, func(dgst digest.Digest) error { - // Mark the manifest's blob - emit("%s: marking manifest %s ", repoName, dgst) - markSet[dgst] = struct{}{} - - manifest, err := manifestService.Get(ctx, dgst) - if err != nil { - return fmt.Errorf("failed to retrieve manifest for digest %v: %v", dgst, err) - } - - descriptors := manifest.References() - for _, descriptor := range descriptors { - markSet[descriptor.Digest] = struct{}{} - emit("%s: marking blob %s", repoName, descriptor.Digest) - } - - switch manifest.(type) { - case *schema1.SignedManifest: - signaturesGetter, ok := manifestService.(distribution.SignaturesGetter) - if !ok { - return fmt.Errorf("unable to convert ManifestService into SignaturesGetter") - } - signatures, err := signaturesGetter.GetSignatures(ctx, dgst) - if err != nil { - return fmt.Errorf("failed to get signatures for signed manifest: %v", err) - } - for _, signatureDigest := range signatures { - emit("%s: marking signature %s", repoName, signatureDigest) - markSet[signatureDigest] = struct{}{} - } - break - case *schema2.DeserializedManifest: - config := manifest.(*schema2.DeserializedManifest).Config - emit("%s: marking configuration %s", repoName, config.Digest) - markSet[config.Digest] = struct{}{} - break - } - - return nil - }) - - return err - }) - - if err != nil { - return fmt.Errorf("failed to mark: %v\n", err) - } - - // sweep - blobService := registry.Blobs() - deleteSet := make(map[digest.Digest]struct{}) - err = blobService.Enumerate(ctx, func(dgst digest.Digest) error { - // check if digest is in markSet. If not, delete it! - if _, ok := markSet[dgst]; !ok { - deleteSet[dgst] = struct{}{} - } - return nil - }) - if err != nil { - return fmt.Errorf("error enumerating blobs: %v", err) - } - - emit("\n%d blobs marked, %d blobs eligible for deletion", len(markSet), len(deleteSet)) - // Construct vacuum - vacuum := storage.NewVacuum(ctx, storageDriver) - for dgst := range deleteSet { - emit("blob eligible for deletion: %s", dgst) - if dryRun { - continue - } - err = vacuum.RemoveBlob(string(dgst)) - if err != nil { - return fmt.Errorf("failed to delete blob %s: %v\n", dgst, err) - } - } - - return err -} - -func init() { - GCCmd.Flags().BoolVarP(&dryRun, "dry-run", "d", false, "do everything expect remove the blobs") -} - -var dryRun bool - -// GCCmd is the cobra command that corresponds to the garbage-collect subcommand -var GCCmd = &cobra.Command{ - Use: "garbage-collect ", - Short: "`garbage-collect` deletes layers not referenced by any manifests", - Long: "`garbage-collect` deletes layers not referenced by any manifests", - Run: func(cmd *cobra.Command, args []string) { - config, err := resolveConfiguration(args) - if err != nil { - fmt.Fprintf(os.Stderr, "configuration error: %v\n", err) - cmd.Usage() - os.Exit(1) - } - - driver, err := factory.Create(config.Storage.Type(), config.Storage.Parameters()) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to construct %s driver: %v", config.Storage.Type(), err) - os.Exit(1) - } - - ctx := context.Background() - ctx, err = configureLogging(ctx, config) - if err != nil { - fmt.Fprintf(os.Stderr, "unable to configure logging with config: %s", err) - os.Exit(1) - } - - k, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - fmt.Fprint(os.Stderr, err) - os.Exit(1) - } - - registry, err := storage.NewRegistry(ctx, driver, storage.DisableSchema1Signatures, storage.Schema1SigningKey(k)) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to construct registry: %v", err) - os.Exit(1) - } - - err = markAndSweep(ctx, driver, registry) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to garbage collect: %v", err) - os.Exit(1) - } - }, -} diff --git a/vendor/github.com/docker/distribution/registry/garbagecollect_test.go b/vendor/github.com/docker/distribution/registry/garbagecollect_test.go deleted file mode 100644 index dd5fadd531..0000000000 --- a/vendor/github.com/docker/distribution/registry/garbagecollect_test.go +++ /dev/null @@ -1,343 +0,0 @@ -package registry - -import ( - "io" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/testutil" -) - -type image struct { - manifest distribution.Manifest - manifestDigest digest.Digest - layers map[digest.Digest]io.ReadSeeker -} - -func createRegistry(t *testing.T, driver driver.StorageDriver) distribution.Namespace { - ctx := context.Background() - registry, err := storage.NewRegistry(ctx, driver, storage.EnableDelete) - if err != nil { - t.Fatalf("Failed to construct namespace") - } - return registry -} - -func makeRepository(t *testing.T, registry distribution.Namespace, name string) distribution.Repository { - ctx := context.Background() - - // Initialize a dummy repository - named, err := reference.ParseNamed(name) - if err != nil { - t.Fatalf("Failed to parse name %s: %v", name, err) - } - - repo, err := registry.Repository(ctx, named) - if err != nil { - t.Fatalf("Failed to construct repository: %v", err) - } - return repo -} - -func makeManifestService(t *testing.T, repository distribution.Repository) distribution.ManifestService { - ctx := context.Background() - - manifestService, err := repository.Manifests(ctx) - if err != nil { - t.Fatalf("Failed to construct manifest store: %v", err) - } - return manifestService -} - -func allBlobs(t *testing.T, registry distribution.Namespace) map[digest.Digest]struct{} { - ctx := context.Background() - blobService := registry.Blobs() - allBlobsMap := make(map[digest.Digest]struct{}) - err := blobService.Enumerate(ctx, func(dgst digest.Digest) error { - allBlobsMap[dgst] = struct{}{} - return nil - }) - if err != nil { - t.Fatalf("Error getting all blobs: %v", err) - } - return allBlobsMap -} - -func uploadImage(t *testing.T, repository distribution.Repository, im image) digest.Digest { - // upload layers - err := testutil.UploadBlobs(repository, im.layers) - if err != nil { - t.Fatalf("layer upload failed: %v", err) - } - - // upload manifest - ctx := context.Background() - manifestService := makeManifestService(t, repository) - manifestDigest, err := manifestService.Put(ctx, im.manifest) - if err != nil { - t.Fatalf("manifest upload failed: %v", err) - } - - return manifestDigest -} - -func uploadRandomSchema1Image(t *testing.T, repository distribution.Repository) image { - randomLayers, err := testutil.CreateRandomLayers(2) - if err != nil { - t.Fatalf("%v", err) - } - - digests := []digest.Digest{} - for digest := range randomLayers { - digests = append(digests, digest) - } - - manifest, err := testutil.MakeSchema1Manifest(digests) - if err != nil { - t.Fatalf("%v", err) - } - - manifestDigest := uploadImage(t, repository, image{manifest: manifest, layers: randomLayers}) - return image{ - manifest: manifest, - manifestDigest: manifestDigest, - layers: randomLayers, - } -} - -func uploadRandomSchema2Image(t *testing.T, repository distribution.Repository) image { - randomLayers, err := testutil.CreateRandomLayers(2) - if err != nil { - t.Fatalf("%v", err) - } - - digests := []digest.Digest{} - for digest := range randomLayers { - digests = append(digests, digest) - } - - manifest, err := testutil.MakeSchema2Manifest(repository, digests) - if err != nil { - t.Fatalf("%v", err) - } - - manifestDigest := uploadImage(t, repository, image{manifest: manifest, layers: randomLayers}) - return image{ - manifest: manifest, - manifestDigest: manifestDigest, - layers: randomLayers, - } -} - -func TestNoDeletionNoEffect(t *testing.T) { - ctx := context.Background() - inmemoryDriver := inmemory.New() - - registry := createRegistry(t, inmemoryDriver) - repo := makeRepository(t, registry, "palailogos") - manifestService, err := repo.Manifests(ctx) - - image1 := uploadRandomSchema1Image(t, repo) - image2 := uploadRandomSchema1Image(t, repo) - image3 := uploadRandomSchema2Image(t, repo) - - // construct manifestlist for fun. - blobstatter := registry.BlobStatter() - manifestList, err := testutil.MakeManifestList(blobstatter, []digest.Digest{ - image1.manifestDigest, image2.manifestDigest}) - if err != nil { - t.Fatalf("Failed to make manifest list: %v", err) - } - - _, err = manifestService.Put(ctx, manifestList) - if err != nil { - t.Fatalf("Failed to add manifest list: %v", err) - } - - // Run GC - err = markAndSweep(context.Background(), inmemoryDriver, registry) - if err != nil { - t.Fatalf("Failed mark and sweep: %v", err) - } - - blobs := allBlobs(t, registry) - - // the +1 at the end is for the manifestList - // the first +3 at the end for each manifest's blob - // the second +3 at the end for each manifest's signature/config layer - totalBlobCount := len(image1.layers) + len(image2.layers) + len(image3.layers) + 1 + 3 + 3 - if len(blobs) != totalBlobCount { - t.Fatalf("Garbage collection affected storage") - } -} - -func TestDeletionHasEffect(t *testing.T) { - ctx := context.Background() - inmemoryDriver := inmemory.New() - - registry := createRegistry(t, inmemoryDriver) - repo := makeRepository(t, registry, "komnenos") - manifests, err := repo.Manifests(ctx) - - image1 := uploadRandomSchema1Image(t, repo) - image2 := uploadRandomSchema1Image(t, repo) - image3 := uploadRandomSchema2Image(t, repo) - - manifests.Delete(ctx, image2.manifestDigest) - manifests.Delete(ctx, image3.manifestDigest) - - // Run GC - err = markAndSweep(context.Background(), inmemoryDriver, registry) - if err != nil { - t.Fatalf("Failed mark and sweep: %v", err) - } - - blobs := allBlobs(t, registry) - - // check that the image1 manifest and all the layers are still in blobs - if _, ok := blobs[image1.manifestDigest]; !ok { - t.Fatalf("First manifest is missing") - } - - for layer := range image1.layers { - if _, ok := blobs[layer]; !ok { - t.Fatalf("manifest 1 layer is missing: %v", layer) - } - } - - // check that image2 and image3 layers are not still around - for layer := range image2.layers { - if _, ok := blobs[layer]; ok { - t.Fatalf("manifest 2 layer is present: %v", layer) - } - } - - for layer := range image3.layers { - if _, ok := blobs[layer]; ok { - t.Fatalf("manifest 3 layer is present: %v", layer) - } - } -} - -func getAnyKey(digests map[digest.Digest]io.ReadSeeker) (d digest.Digest) { - for d = range digests { - break - } - return -} - -func getKeys(digests map[digest.Digest]io.ReadSeeker) (ds []digest.Digest) { - for d := range digests { - ds = append(ds, d) - } - return -} - -func TestDeletionWithSharedLayer(t *testing.T) { - ctx := context.Background() - inmemoryDriver := inmemory.New() - - registry := createRegistry(t, inmemoryDriver) - repo := makeRepository(t, registry, "tzimiskes") - - // Create random layers - randomLayers1, err := testutil.CreateRandomLayers(3) - if err != nil { - t.Fatalf("failed to make layers: %v", err) - } - - randomLayers2, err := testutil.CreateRandomLayers(3) - if err != nil { - t.Fatalf("failed to make layers: %v", err) - } - - // Upload all layers - err = testutil.UploadBlobs(repo, randomLayers1) - if err != nil { - t.Fatalf("failed to upload layers: %v", err) - } - - err = testutil.UploadBlobs(repo, randomLayers2) - if err != nil { - t.Fatalf("failed to upload layers: %v", err) - } - - // Construct manifests - manifest1, err := testutil.MakeSchema1Manifest(getKeys(randomLayers1)) - if err != nil { - t.Fatalf("failed to make manifest: %v", err) - } - - sharedKey := getAnyKey(randomLayers1) - manifest2, err := testutil.MakeSchema2Manifest(repo, append(getKeys(randomLayers2), sharedKey)) - if err != nil { - t.Fatalf("failed to make manifest: %v", err) - } - - manifestService := makeManifestService(t, repo) - - // Upload manifests - _, err = manifestService.Put(ctx, manifest1) - if err != nil { - t.Fatalf("manifest upload failed: %v", err) - } - - manifestDigest2, err := manifestService.Put(ctx, manifest2) - if err != nil { - t.Fatalf("manifest upload failed: %v", err) - } - - // delete - err = manifestService.Delete(ctx, manifestDigest2) - if err != nil { - t.Fatalf("manifest deletion failed: %v", err) - } - - // check that all of the layers in layer 1 are still there - blobs := allBlobs(t, registry) - for dgst := range randomLayers1 { - if _, ok := blobs[dgst]; !ok { - t.Fatalf("random layer 1 blob missing: %v", dgst) - } - } -} - -func TestOrphanBlobDeleted(t *testing.T) { - inmemoryDriver := inmemory.New() - - registry := createRegistry(t, inmemoryDriver) - repo := makeRepository(t, registry, "michael_z_doukas") - - digests, err := testutil.CreateRandomLayers(1) - if err != nil { - t.Fatalf("Failed to create random digest: %v", err) - } - - if err = testutil.UploadBlobs(repo, digests); err != nil { - t.Fatalf("Failed to upload blob: %v", err) - } - - // formality to create the necessary directories - uploadRandomSchema2Image(t, repo) - - // Run GC - err = markAndSweep(context.Background(), inmemoryDriver, registry) - if err != nil { - t.Fatalf("Failed mark and sweep: %v", err) - } - - blobs := allBlobs(t, registry) - - // check that orphan blob layers are not still around - for dgst := range digests { - if _, ok := blobs[dgst]; ok { - t.Fatalf("Orphan layer is present: %v", dgst) - } - } -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/api_test.go b/vendor/github.com/docker/distribution/registry/handlers/api_test.go deleted file mode 100644 index 523ecca284..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/api_test.go +++ /dev/null @@ -1,2474 +0,0 @@ -package handlers - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "net/http/httputil" - "net/url" - "os" - "path" - "reflect" - "regexp" - "strconv" - "strings" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/configuration" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/manifestlist" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/manifest/schema2" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - _ "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/testutil" - "github.com/docker/libtrust" - "github.com/gorilla/handlers" -) - -var headerConfig = http.Header{ - "X-Content-Type-Options": []string{"nosniff"}, -} - -// TestCheckAPI hits the base endpoint (/v2/) ensures we return the specified -// 200 OK response. -func TestCheckAPI(t *testing.T) { - env := newTestEnv(t, false) - baseURL, err := env.builder.BuildBaseURL() - if err != nil { - t.Fatalf("unexpected error building base url: %v", err) - } - - resp, err := http.Get(baseURL) - if err != nil { - t.Fatalf("unexpected error issuing request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "issuing api base check", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Content-Type": []string{"application/json; charset=utf-8"}, - "Content-Length": []string{"2"}, - }) - - p, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatalf("unexpected error reading response body: %v", err) - } - - if string(p) != "{}" { - t.Fatalf("unexpected response body: %v", string(p)) - } -} - -// TestCatalogAPI tests the /v2/_catalog endpoint -func TestCatalogAPI(t *testing.T) { - chunkLen := 2 - env := newTestEnv(t, false) - - values := url.Values{ - "last": []string{""}, - "n": []string{strconv.Itoa(chunkLen)}} - - catalogURL, err := env.builder.BuildCatalogURL(values) - if err != nil { - t.Fatalf("unexpected error building catalog url: %v", err) - } - - // ----------------------------------- - // try to get an empty catalog - resp, err := http.Get(catalogURL) - if err != nil { - t.Fatalf("unexpected error issuing request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "issuing catalog api check", resp, http.StatusOK) - - var ctlg struct { - Repositories []string `json:"repositories"` - } - - dec := json.NewDecoder(resp.Body) - if err := dec.Decode(&ctlg); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - // we haven't pushed anything to the registry yet - if len(ctlg.Repositories) != 0 { - t.Fatalf("repositories has unexpected values") - } - - if resp.Header.Get("Link") != "" { - t.Fatalf("repositories has more data when none expected") - } - - // ----------------------------------- - // push something to the registry and try again - images := []string{"foo/aaaa", "foo/bbbb", "foo/cccc"} - - for _, image := range images { - createRepository(env, t, image, "sometag") - } - - resp, err = http.Get(catalogURL) - if err != nil { - t.Fatalf("unexpected error issuing request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "issuing catalog api check", resp, http.StatusOK) - - dec = json.NewDecoder(resp.Body) - if err = dec.Decode(&ctlg); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - if len(ctlg.Repositories) != chunkLen { - t.Fatalf("repositories has unexpected values") - } - - for _, image := range images[:chunkLen] { - if !contains(ctlg.Repositories, image) { - t.Fatalf("didn't find our repository '%s' in the catalog", image) - } - } - - link := resp.Header.Get("Link") - if link == "" { - t.Fatalf("repositories has less data than expected") - } - - newValues := checkLink(t, link, chunkLen, ctlg.Repositories[len(ctlg.Repositories)-1]) - - // ----------------------------------- - // get the last chunk of data - - catalogURL, err = env.builder.BuildCatalogURL(newValues) - if err != nil { - t.Fatalf("unexpected error building catalog url: %v", err) - } - - resp, err = http.Get(catalogURL) - if err != nil { - t.Fatalf("unexpected error issuing request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "issuing catalog api check", resp, http.StatusOK) - - dec = json.NewDecoder(resp.Body) - if err = dec.Decode(&ctlg); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - if len(ctlg.Repositories) != 1 { - t.Fatalf("repositories has unexpected values") - } - - lastImage := images[len(images)-1] - if !contains(ctlg.Repositories, lastImage) { - t.Fatalf("didn't find our repository '%s' in the catalog", lastImage) - } - - link = resp.Header.Get("Link") - if link != "" { - t.Fatalf("catalog has unexpected data") - } -} - -func checkLink(t *testing.T, urlStr string, numEntries int, last string) url.Values { - re := regexp.MustCompile("<(/v2/_catalog.*)>; rel=\"next\"") - matches := re.FindStringSubmatch(urlStr) - - if len(matches) != 2 { - t.Fatalf("Catalog link address response was incorrect") - } - linkURL, _ := url.Parse(matches[1]) - urlValues := linkURL.Query() - - if urlValues.Get("n") != strconv.Itoa(numEntries) { - t.Fatalf("Catalog link entry size is incorrect") - } - - if urlValues.Get("last") != last { - t.Fatal("Catalog link last entry is incorrect") - } - - return urlValues -} - -func contains(elems []string, e string) bool { - for _, elem := range elems { - if elem == e { - return true - } - } - return false -} - -func TestURLPrefix(t *testing.T) { - config := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - } - config.HTTP.Prefix = "/test/" - config.HTTP.Headers = headerConfig - - env := newTestEnvWithConfig(t, &config) - - baseURL, err := env.builder.BuildBaseURL() - if err != nil { - t.Fatalf("unexpected error building base url: %v", err) - } - - parsed, _ := url.Parse(baseURL) - if !strings.HasPrefix(parsed.Path, config.HTTP.Prefix) { - t.Fatalf("Prefix %v not included in test url %v", config.HTTP.Prefix, baseURL) - } - - resp, err := http.Get(baseURL) - if err != nil { - t.Fatalf("unexpected error issuing request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "issuing api base check", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Content-Type": []string{"application/json; charset=utf-8"}, - "Content-Length": []string{"2"}, - }) -} - -type blobArgs struct { - imageName reference.Named - layerFile io.ReadSeeker - layerDigest digest.Digest -} - -func makeBlobArgs(t *testing.T) blobArgs { - layerFile, layerDigest, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating random layer file: %v", err) - } - - args := blobArgs{ - layerFile: layerFile, - layerDigest: layerDigest, - } - args.imageName, _ = reference.ParseNamed("foo/bar") - return args -} - -// TestBlobAPI conducts a full test of the of the blob api. -func TestBlobAPI(t *testing.T) { - deleteEnabled := false - env := newTestEnv(t, deleteEnabled) - args := makeBlobArgs(t) - testBlobAPI(t, env, args) - - deleteEnabled = true - env = newTestEnv(t, deleteEnabled) - args = makeBlobArgs(t) - testBlobAPI(t, env, args) - -} - -func TestBlobDelete(t *testing.T) { - deleteEnabled := true - env := newTestEnv(t, deleteEnabled) - - args := makeBlobArgs(t) - env = testBlobAPI(t, env, args) - testBlobDelete(t, env, args) -} - -func TestRelativeURL(t *testing.T) { - config := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - } - config.HTTP.Headers = headerConfig - config.HTTP.RelativeURLs = false - env := newTestEnvWithConfig(t, &config) - ref, _ := reference.WithName("foo/bar") - uploadURLBaseAbs, _ := startPushLayer(t, env, ref) - - u, err := url.Parse(uploadURLBaseAbs) - if err != nil { - t.Fatal(err) - } - if !u.IsAbs() { - t.Fatal("Relative URL returned from blob upload chunk with non-relative configuration") - } - - args := makeBlobArgs(t) - resp, err := doPushLayer(t, env.builder, ref, args.layerDigest, uploadURLBaseAbs, args.layerFile) - if err != nil { - t.Fatalf("unexpected error doing layer push relative url: %v", err) - } - checkResponse(t, "relativeurl blob upload", resp, http.StatusCreated) - u, err = url.Parse(resp.Header.Get("Location")) - if err != nil { - t.Fatal(err) - } - if !u.IsAbs() { - t.Fatal("Relative URL returned from blob upload with non-relative configuration") - } - - config.HTTP.RelativeURLs = true - args = makeBlobArgs(t) - uploadURLBaseRelative, _ := startPushLayer(t, env, ref) - u, err = url.Parse(uploadURLBaseRelative) - if err != nil { - t.Fatal(err) - } - if u.IsAbs() { - t.Fatal("Absolute URL returned from blob upload chunk with relative configuration") - } - - // Start a new upload in absolute mode to get a valid base URL - config.HTTP.RelativeURLs = false - uploadURLBaseAbs, _ = startPushLayer(t, env, ref) - u, err = url.Parse(uploadURLBaseAbs) - if err != nil { - t.Fatal(err) - } - if !u.IsAbs() { - t.Fatal("Relative URL returned from blob upload chunk with non-relative configuration") - } - - // Complete upload with relative URLs enabled to ensure the final location is relative - config.HTTP.RelativeURLs = true - resp, err = doPushLayer(t, env.builder, ref, args.layerDigest, uploadURLBaseAbs, args.layerFile) - if err != nil { - t.Fatalf("unexpected error doing layer push relative url: %v", err) - } - - checkResponse(t, "relativeurl blob upload", resp, http.StatusCreated) - u, err = url.Parse(resp.Header.Get("Location")) - if err != nil { - t.Fatal(err) - } - if u.IsAbs() { - t.Fatal("Relative URL returned from blob upload with non-relative configuration") - } -} - -func TestBlobDeleteDisabled(t *testing.T) { - deleteEnabled := false - env := newTestEnv(t, deleteEnabled) - args := makeBlobArgs(t) - - imageName := args.imageName - layerDigest := args.layerDigest - ref, _ := reference.WithDigest(imageName, layerDigest) - layerURL, err := env.builder.BuildBlobURL(ref) - if err != nil { - t.Fatalf("error building url: %v", err) - } - - resp, err := httpDelete(layerURL) - if err != nil { - t.Fatalf("unexpected error deleting when disabled: %v", err) - } - - checkResponse(t, "status of disabled delete", resp, http.StatusMethodNotAllowed) -} - -func testBlobAPI(t *testing.T, env *testEnv, args blobArgs) *testEnv { - // TODO(stevvooe): This test code is complete junk but it should cover the - // complete flow. This must be broken down and checked against the - // specification *before* we submit the final to docker core. - imageName := args.imageName - layerFile := args.layerFile - layerDigest := args.layerDigest - - // ----------------------------------- - // Test fetch for non-existent content - ref, _ := reference.WithDigest(imageName, layerDigest) - layerURL, err := env.builder.BuildBlobURL(ref) - if err != nil { - t.Fatalf("error building url: %v", err) - } - - resp, err := http.Get(layerURL) - if err != nil { - t.Fatalf("unexpected error fetching non-existent layer: %v", err) - } - - checkResponse(t, "fetching non-existent content", resp, http.StatusNotFound) - - // ------------------------------------------ - // Test head request for non-existent content - resp, err = http.Head(layerURL) - if err != nil { - t.Fatalf("unexpected error checking head on non-existent layer: %v", err) - } - - checkResponse(t, "checking head on non-existent layer", resp, http.StatusNotFound) - - // ------------------------------------------ - // Start an upload, check the status then cancel - uploadURLBase, uploadUUID := startPushLayer(t, env, imageName) - - // A status check should work - resp, err = http.Get(uploadURLBase) - if err != nil { - t.Fatalf("unexpected error getting upload status: %v", err) - } - checkResponse(t, "status of deleted upload", resp, http.StatusNoContent) - checkHeaders(t, resp, http.Header{ - "Location": []string{"*"}, - "Range": []string{"0-0"}, - "Docker-Upload-UUID": []string{uploadUUID}, - }) - - req, err := http.NewRequest("DELETE", uploadURLBase, nil) - if err != nil { - t.Fatalf("unexpected error creating delete request: %v", err) - } - - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("unexpected error sending delete request: %v", err) - } - - checkResponse(t, "deleting upload", resp, http.StatusNoContent) - - // A status check should result in 404 - resp, err = http.Get(uploadURLBase) - if err != nil { - t.Fatalf("unexpected error getting upload status: %v", err) - } - checkResponse(t, "status of deleted upload", resp, http.StatusNotFound) - - // ----------------------------------------- - // Do layer push with an empty body and different digest - uploadURLBase, uploadUUID = startPushLayer(t, env, imageName) - resp, err = doPushLayer(t, env.builder, imageName, layerDigest, uploadURLBase, bytes.NewReader([]byte{})) - if err != nil { - t.Fatalf("unexpected error doing bad layer push: %v", err) - } - - checkResponse(t, "bad layer push", resp, http.StatusBadRequest) - checkBodyHasErrorCodes(t, "bad layer push", resp, v2.ErrorCodeDigestInvalid) - - // ----------------------------------------- - // Do layer push with an empty body and correct digest - zeroDigest, err := digest.FromReader(bytes.NewReader([]byte{})) - if err != nil { - t.Fatalf("unexpected error digesting empty buffer: %v", err) - } - - uploadURLBase, uploadUUID = startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, zeroDigest, uploadURLBase, bytes.NewReader([]byte{})) - - // ----------------------------------------- - // Do layer push with an empty body and correct digest - - // This is a valid but empty tarfile! - emptyTar := bytes.Repeat([]byte("\x00"), 1024) - emptyDigest, err := digest.FromReader(bytes.NewReader(emptyTar)) - if err != nil { - t.Fatalf("unexpected error digesting empty tar: %v", err) - } - - uploadURLBase, uploadUUID = startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, emptyDigest, uploadURLBase, bytes.NewReader(emptyTar)) - - // ------------------------------------------ - // Now, actually do successful upload. - layerLength, _ := layerFile.Seek(0, os.SEEK_END) - layerFile.Seek(0, os.SEEK_SET) - - uploadURLBase, uploadUUID = startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, layerDigest, uploadURLBase, layerFile) - - // ------------------------------------------ - // Now, push just a chunk - layerFile.Seek(0, 0) - - canonicalDigester := digest.Canonical.New() - if _, err := io.Copy(canonicalDigester.Hash(), layerFile); err != nil { - t.Fatalf("error copying to digest: %v", err) - } - canonicalDigest := canonicalDigester.Digest() - - layerFile.Seek(0, 0) - uploadURLBase, uploadUUID = startPushLayer(t, env, imageName) - uploadURLBase, dgst := pushChunk(t, env.builder, imageName, uploadURLBase, layerFile, layerLength) - finishUpload(t, env.builder, imageName, uploadURLBase, dgst) - - // ------------------------ - // Use a head request to see if the layer exists. - resp, err = http.Head(layerURL) - if err != nil { - t.Fatalf("unexpected error checking head on existing layer: %v", err) - } - - checkResponse(t, "checking head on existing layer", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{fmt.Sprint(layerLength)}, - "Docker-Content-Digest": []string{canonicalDigest.String()}, - }) - - // ---------------- - // Fetch the layer! - resp, err = http.Get(layerURL) - if err != nil { - t.Fatalf("unexpected error fetching layer: %v", err) - } - - checkResponse(t, "fetching layer", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{fmt.Sprint(layerLength)}, - "Docker-Content-Digest": []string{canonicalDigest.String()}, - }) - - // Verify the body - verifier, err := digest.NewDigestVerifier(layerDigest) - if err != nil { - t.Fatalf("unexpected error getting digest verifier: %s", err) - } - io.Copy(verifier, resp.Body) - - if !verifier.Verified() { - t.Fatalf("response body did not pass verification") - } - - // ---------------- - // Fetch the layer with an invalid digest - badURL := strings.Replace(layerURL, "sha256", "sha257", 1) - resp, err = http.Get(badURL) - if err != nil { - t.Fatalf("unexpected error fetching layer: %v", err) - } - - checkResponse(t, "fetching layer bad digest", resp, http.StatusBadRequest) - - // Cache headers - resp, err = http.Get(layerURL) - if err != nil { - t.Fatalf("unexpected error fetching layer: %v", err) - } - - checkResponse(t, "fetching layer", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{fmt.Sprint(layerLength)}, - "Docker-Content-Digest": []string{canonicalDigest.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, canonicalDigest)}, - "Cache-Control": []string{"max-age=31536000"}, - }) - - // Matching etag, gives 304 - etag := resp.Header.Get("Etag") - req, err = http.NewRequest("GET", layerURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching layer with etag", resp, http.StatusNotModified) - - // Non-matching etag, gives 200 - req, err = http.NewRequest("GET", layerURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", "") - resp, err = http.DefaultClient.Do(req) - checkResponse(t, "fetching layer with invalid etag", resp, http.StatusOK) - - // Missing tests: - // - Upload the same tar file under and different repository and - // ensure the content remains uncorrupted. - return env -} - -func testBlobDelete(t *testing.T, env *testEnv, args blobArgs) { - // Upload a layer - imageName := args.imageName - layerFile := args.layerFile - layerDigest := args.layerDigest - - ref, _ := reference.WithDigest(imageName, layerDigest) - layerURL, err := env.builder.BuildBlobURL(ref) - if err != nil { - t.Fatalf(err.Error()) - } - // --------------- - // Delete a layer - resp, err := httpDelete(layerURL) - if err != nil { - t.Fatalf("unexpected error deleting layer: %v", err) - } - - checkResponse(t, "deleting layer", resp, http.StatusAccepted) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{"0"}, - }) - - // --------------- - // Try and get it back - // Use a head request to see if the layer exists. - resp, err = http.Head(layerURL) - if err != nil { - t.Fatalf("unexpected error checking head on existing layer: %v", err) - } - - checkResponse(t, "checking existence of deleted layer", resp, http.StatusNotFound) - - // Delete already deleted layer - resp, err = httpDelete(layerURL) - if err != nil { - t.Fatalf("unexpected error deleting layer: %v", err) - } - - checkResponse(t, "deleting layer", resp, http.StatusNotFound) - - // ---------------- - // Attempt to delete a layer with an invalid digest - badURL := strings.Replace(layerURL, "sha256", "sha257", 1) - resp, err = httpDelete(badURL) - if err != nil { - t.Fatalf("unexpected error fetching layer: %v", err) - } - - checkResponse(t, "deleting layer bad digest", resp, http.StatusBadRequest) - - // ---------------- - // Reupload previously deleted blob - layerFile.Seek(0, os.SEEK_SET) - - uploadURLBase, _ := startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, layerDigest, uploadURLBase, layerFile) - - layerFile.Seek(0, os.SEEK_SET) - canonicalDigester := digest.Canonical.New() - if _, err := io.Copy(canonicalDigester.Hash(), layerFile); err != nil { - t.Fatalf("error copying to digest: %v", err) - } - canonicalDigest := canonicalDigester.Digest() - - // ------------------------ - // Use a head request to see if it exists - resp, err = http.Head(layerURL) - if err != nil { - t.Fatalf("unexpected error checking head on existing layer: %v", err) - } - - layerLength, _ := layerFile.Seek(0, os.SEEK_END) - checkResponse(t, "checking head on reuploaded layer", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{fmt.Sprint(layerLength)}, - "Docker-Content-Digest": []string{canonicalDigest.String()}, - }) -} - -func TestDeleteDisabled(t *testing.T) { - env := newTestEnv(t, false) - - imageName, _ := reference.ParseNamed("foo/bar") - // "build" our layer file - layerFile, layerDigest, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating random layer file: %v", err) - } - - ref, _ := reference.WithDigest(imageName, layerDigest) - layerURL, err := env.builder.BuildBlobURL(ref) - if err != nil { - t.Fatalf("Error building blob URL") - } - uploadURLBase, _ := startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, layerDigest, uploadURLBase, layerFile) - - resp, err := httpDelete(layerURL) - if err != nil { - t.Fatalf("unexpected error deleting layer: %v", err) - } - - checkResponse(t, "deleting layer with delete disabled", resp, http.StatusMethodNotAllowed) -} - -func TestDeleteReadOnly(t *testing.T) { - env := newTestEnv(t, true) - - imageName, _ := reference.ParseNamed("foo/bar") - // "build" our layer file - layerFile, layerDigest, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating random layer file: %v", err) - } - - ref, _ := reference.WithDigest(imageName, layerDigest) - layerURL, err := env.builder.BuildBlobURL(ref) - if err != nil { - t.Fatalf("Error building blob URL") - } - uploadURLBase, _ := startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, layerDigest, uploadURLBase, layerFile) - - env.app.readOnly = true - - resp, err := httpDelete(layerURL) - if err != nil { - t.Fatalf("unexpected error deleting layer: %v", err) - } - - checkResponse(t, "deleting layer in read-only mode", resp, http.StatusMethodNotAllowed) -} - -func TestStartPushReadOnly(t *testing.T) { - env := newTestEnv(t, true) - env.app.readOnly = true - - imageName, _ := reference.ParseNamed("foo/bar") - - layerUploadURL, err := env.builder.BuildBlobUploadURL(imageName) - if err != nil { - t.Fatalf("unexpected error building layer upload url: %v", err) - } - - resp, err := http.Post(layerUploadURL, "", nil) - if err != nil { - t.Fatalf("unexpected error starting layer push: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "starting push in read-only mode", resp, http.StatusMethodNotAllowed) -} - -func httpDelete(url string) (*http.Response, error) { - req, err := http.NewRequest("DELETE", url, nil) - if err != nil { - return nil, err - } - - resp, err := http.DefaultClient.Do(req) - if err != nil { - return nil, err - } - // defer resp.Body.Close() - return resp, err -} - -type manifestArgs struct { - imageName reference.Named - mediaType string - manifest distribution.Manifest - dgst digest.Digest -} - -func TestManifestAPI(t *testing.T) { - schema1Repo, _ := reference.ParseNamed("foo/schema1") - schema2Repo, _ := reference.ParseNamed("foo/schema2") - - deleteEnabled := false - env := newTestEnv(t, deleteEnabled) - testManifestAPISchema1(t, env, schema1Repo) - schema2Args := testManifestAPISchema2(t, env, schema2Repo) - testManifestAPIManifestList(t, env, schema2Args) - - deleteEnabled = true - env = newTestEnv(t, deleteEnabled) - testManifestAPISchema1(t, env, schema1Repo) - schema2Args = testManifestAPISchema2(t, env, schema2Repo) - testManifestAPIManifestList(t, env, schema2Args) -} - -func TestManifestDelete(t *testing.T) { - schema1Repo, _ := reference.ParseNamed("foo/schema1") - schema2Repo, _ := reference.ParseNamed("foo/schema2") - - deleteEnabled := true - env := newTestEnv(t, deleteEnabled) - schema1Args := testManifestAPISchema1(t, env, schema1Repo) - testManifestDelete(t, env, schema1Args) - schema2Args := testManifestAPISchema2(t, env, schema2Repo) - testManifestDelete(t, env, schema2Args) -} - -func TestManifestDeleteDisabled(t *testing.T) { - schema1Repo, _ := reference.ParseNamed("foo/schema1") - deleteEnabled := false - env := newTestEnv(t, deleteEnabled) - testManifestDeleteDisabled(t, env, schema1Repo) -} - -func testManifestDeleteDisabled(t *testing.T, env *testEnv, imageName reference.Named) { - ref, _ := reference.WithDigest(imageName, digest.DigestSha256EmptyTar) - manifestURL, err := env.builder.BuildManifestURL(ref) - if err != nil { - t.Fatalf("unexpected error getting manifest url: %v", err) - } - - resp, err := httpDelete(manifestURL) - if err != nil { - t.Fatalf("unexpected error deleting manifest %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "status of disabled delete of manifest", resp, http.StatusMethodNotAllowed) -} - -func testManifestAPISchema1(t *testing.T, env *testEnv, imageName reference.Named) manifestArgs { - tag := "thetag" - args := manifestArgs{imageName: imageName} - - tagRef, _ := reference.WithTag(imageName, tag) - manifestURL, err := env.builder.BuildManifestURL(tagRef) - if err != nil { - t.Fatalf("unexpected error getting manifest url: %v", err) - } - - // ----------------------------- - // Attempt to fetch the manifest - resp, err := http.Get(manifestURL) - if err != nil { - t.Fatalf("unexpected error getting manifest: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "getting non-existent manifest", resp, http.StatusNotFound) - checkBodyHasErrorCodes(t, "getting non-existent manifest", resp, v2.ErrorCodeManifestUnknown) - - tagsURL, err := env.builder.BuildTagsURL(imageName) - if err != nil { - t.Fatalf("unexpected error building tags url: %v", err) - } - - resp, err = http.Get(tagsURL) - if err != nil { - t.Fatalf("unexpected error getting unknown tags: %v", err) - } - defer resp.Body.Close() - - // Check that we get an unknown repository error when asking for tags - checkResponse(t, "getting unknown manifest tags", resp, http.StatusNotFound) - checkBodyHasErrorCodes(t, "getting unknown manifest tags", resp, v2.ErrorCodeNameUnknown) - - // -------------------------------- - // Attempt to push unsigned manifest with missing layers - unsignedManifest := &schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: imageName.Name(), - Tag: tag, - FSLayers: []schema1.FSLayer{ - { - BlobSum: "asdf", - }, - { - BlobSum: "qwer", - }, - }, - History: []schema1.History{ - { - V1Compatibility: "", - }, - { - V1Compatibility: "", - }, - }, - } - - resp = putManifest(t, "putting unsigned manifest", manifestURL, "", unsignedManifest) - defer resp.Body.Close() - checkResponse(t, "putting unsigned manifest", resp, http.StatusBadRequest) - _, p, counts := checkBodyHasErrorCodes(t, "putting unsigned manifest", resp, v2.ErrorCodeManifestInvalid) - - expectedCounts := map[errcode.ErrorCode]int{ - v2.ErrorCodeManifestInvalid: 1, - } - - if !reflect.DeepEqual(counts, expectedCounts) { - t.Fatalf("unexpected number of error codes encountered: %v\n!=\n%v\n---\n%s", counts, expectedCounts, string(p)) - } - - // sign the manifest and still get some interesting errors. - sm, err := schema1.Sign(unsignedManifest, env.pk) - if err != nil { - t.Fatalf("error signing manifest: %v", err) - } - - resp = putManifest(t, "putting signed manifest with errors", manifestURL, "", sm) - defer resp.Body.Close() - checkResponse(t, "putting signed manifest with errors", resp, http.StatusBadRequest) - _, p, counts = checkBodyHasErrorCodes(t, "putting signed manifest with errors", resp, - v2.ErrorCodeManifestBlobUnknown, v2.ErrorCodeDigestInvalid) - - expectedCounts = map[errcode.ErrorCode]int{ - v2.ErrorCodeManifestBlobUnknown: 2, - v2.ErrorCodeDigestInvalid: 2, - } - - if !reflect.DeepEqual(counts, expectedCounts) { - t.Fatalf("unexpected number of error codes encountered: %v\n!=\n%v\n---\n%s", counts, expectedCounts, string(p)) - } - - // TODO(stevvooe): Add a test case where we take a mostly valid registry, - // tamper with the content and ensure that we get a unverified manifest - // error. - - // Push 2 random layers - expectedLayers := make(map[digest.Digest]io.ReadSeeker) - - for i := range unsignedManifest.FSLayers { - rs, dgstStr, err := testutil.CreateRandomTarFile() - - if err != nil { - t.Fatalf("error creating random layer %d: %v", i, err) - } - dgst := digest.Digest(dgstStr) - - expectedLayers[dgst] = rs - unsignedManifest.FSLayers[i].BlobSum = dgst - - uploadURLBase, _ := startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, dgst, uploadURLBase, rs) - } - - // ------------------- - // Push the signed manifest with all layers pushed. - signedManifest, err := schema1.Sign(unsignedManifest, env.pk) - if err != nil { - t.Fatalf("unexpected error signing manifest: %v", err) - } - - dgst := digest.FromBytes(signedManifest.Canonical) - args.manifest = signedManifest - args.dgst = dgst - - digestRef, _ := reference.WithDigest(imageName, dgst) - manifestDigestURL, err := env.builder.BuildManifestURL(digestRef) - checkErr(t, err, "building manifest url") - - resp = putManifest(t, "putting signed manifest no error", manifestURL, "", signedManifest) - checkResponse(t, "putting signed manifest no error", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // -------------------- - // Push by digest -- should get same result - resp = putManifest(t, "putting signed manifest", manifestDigestURL, "", signedManifest) - checkResponse(t, "putting signed manifest", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // ------------------ - // Fetch by tag name - resp, err = http.Get(manifestURL) - if err != nil { - t.Fatalf("unexpected error fetching manifest: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "fetching uploaded manifest", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - var fetchedManifest schema1.SignedManifest - dec := json.NewDecoder(resp.Body) - - if err := dec.Decode(&fetchedManifest); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - if !bytes.Equal(fetchedManifest.Canonical, signedManifest.Canonical) { - t.Fatalf("manifests do not match") - } - - // --------------- - // Fetch by digest - resp, err = http.Get(manifestDigestURL) - checkErr(t, err, "fetching manifest by digest") - defer resp.Body.Close() - - checkResponse(t, "fetching uploaded manifest", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - var fetchedManifestByDigest schema1.SignedManifest - dec = json.NewDecoder(resp.Body) - if err := dec.Decode(&fetchedManifestByDigest); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - if !bytes.Equal(fetchedManifestByDigest.Canonical, signedManifest.Canonical) { - t.Fatalf("manifests do not match") - } - - // check signature was roundtripped - signatures, err := fetchedManifestByDigest.Signatures() - if err != nil { - t.Fatal(err) - } - - if len(signatures) != 1 { - t.Fatalf("expected 1 signature from manifest, got: %d", len(signatures)) - } - - // Re-sign, push and pull the same digest - sm2, err := schema1.Sign(&fetchedManifestByDigest.Manifest, env.pk) - if err != nil { - t.Fatal(err) - - } - - // Re-push with a few different Content-Types. The official schema1 - // content type should work, as should application/json with/without a - // charset. - resp = putManifest(t, "re-putting signed manifest", manifestDigestURL, schema1.MediaTypeSignedManifest, sm2) - checkResponse(t, "re-putting signed manifest", resp, http.StatusCreated) - resp = putManifest(t, "re-putting signed manifest", manifestDigestURL, "application/json; charset=utf-8", sm2) - checkResponse(t, "re-putting signed manifest", resp, http.StatusCreated) - resp = putManifest(t, "re-putting signed manifest", manifestDigestURL, "application/json", sm2) - checkResponse(t, "re-putting signed manifest", resp, http.StatusCreated) - - resp, err = http.Get(manifestDigestURL) - checkErr(t, err, "re-fetching manifest by digest") - defer resp.Body.Close() - - checkResponse(t, "re-fetching uploaded manifest", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - dec = json.NewDecoder(resp.Body) - if err := dec.Decode(&fetchedManifestByDigest); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - // check two signatures were roundtripped - signatures, err = fetchedManifestByDigest.Signatures() - if err != nil { - t.Fatal(err) - } - - if len(signatures) != 2 { - t.Fatalf("expected 2 signature from manifest, got: %d", len(signatures)) - } - - // Get by name with etag, gives 304 - etag := resp.Header.Get("Etag") - req, err := http.NewRequest("GET", manifestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching manifest by name with etag", resp, http.StatusNotModified) - - // Get by digest with etag, gives 304 - req, err = http.NewRequest("GET", manifestDigestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching manifest by dgst with etag", resp, http.StatusNotModified) - - // Ensure that the tag is listed. - resp, err = http.Get(tagsURL) - if err != nil { - t.Fatalf("unexpected error getting unknown tags: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "getting tags", resp, http.StatusOK) - dec = json.NewDecoder(resp.Body) - - var tagsResponse tagsAPIResponse - - if err := dec.Decode(&tagsResponse); err != nil { - t.Fatalf("unexpected error decoding error response: %v", err) - } - - if tagsResponse.Name != imageName.Name() { - t.Fatalf("tags name should match image name: %v != %v", tagsResponse.Name, imageName.Name()) - } - - if len(tagsResponse.Tags) != 1 { - t.Fatalf("expected some tags in response: %v", tagsResponse.Tags) - } - - if tagsResponse.Tags[0] != tag { - t.Fatalf("tag not as expected: %q != %q", tagsResponse.Tags[0], tag) - } - - // Attempt to put a manifest with mismatching FSLayer and History array cardinalities - - unsignedManifest.History = append(unsignedManifest.History, schema1.History{ - V1Compatibility: "", - }) - invalidSigned, err := schema1.Sign(unsignedManifest, env.pk) - if err != nil { - t.Fatalf("error signing manifest") - } - - resp = putManifest(t, "putting invalid signed manifest", manifestDigestURL, "", invalidSigned) - checkResponse(t, "putting invalid signed manifest", resp, http.StatusBadRequest) - - return args -} - -func testManifestAPISchema2(t *testing.T, env *testEnv, imageName reference.Named) manifestArgs { - tag := "schema2tag" - args := manifestArgs{ - imageName: imageName, - mediaType: schema2.MediaTypeManifest, - } - - tagRef, _ := reference.WithTag(imageName, tag) - manifestURL, err := env.builder.BuildManifestURL(tagRef) - if err != nil { - t.Fatalf("unexpected error getting manifest url: %v", err) - } - - // ----------------------------- - // Attempt to fetch the manifest - resp, err := http.Get(manifestURL) - if err != nil { - t.Fatalf("unexpected error getting manifest: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "getting non-existent manifest", resp, http.StatusNotFound) - checkBodyHasErrorCodes(t, "getting non-existent manifest", resp, v2.ErrorCodeManifestUnknown) - - tagsURL, err := env.builder.BuildTagsURL(imageName) - if err != nil { - t.Fatalf("unexpected error building tags url: %v", err) - } - - resp, err = http.Get(tagsURL) - if err != nil { - t.Fatalf("unexpected error getting unknown tags: %v", err) - } - defer resp.Body.Close() - - // Check that we get an unknown repository error when asking for tags - checkResponse(t, "getting unknown manifest tags", resp, http.StatusNotFound) - checkBodyHasErrorCodes(t, "getting unknown manifest tags", resp, v2.ErrorCodeNameUnknown) - - // -------------------------------- - // Attempt to push manifest with missing config and missing layers - manifest := &schema2.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 2, - MediaType: schema2.MediaTypeManifest, - }, - Config: distribution.Descriptor{ - Digest: "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b", - Size: 3253, - MediaType: schema2.MediaTypeConfig, - }, - Layers: []distribution.Descriptor{ - { - Digest: "sha256:463434349086340864309863409683460843608348608934092322395278926a", - Size: 6323, - MediaType: schema2.MediaTypeLayer, - }, - { - Digest: "sha256:630923423623623423352523525237238023652897356239852383652aaaaaaa", - Size: 6863, - MediaType: schema2.MediaTypeLayer, - }, - }, - } - - resp = putManifest(t, "putting missing config manifest", manifestURL, schema2.MediaTypeManifest, manifest) - defer resp.Body.Close() - checkResponse(t, "putting missing config manifest", resp, http.StatusBadRequest) - _, p, counts := checkBodyHasErrorCodes(t, "putting missing config manifest", resp, v2.ErrorCodeManifestBlobUnknown) - - expectedCounts := map[errcode.ErrorCode]int{ - v2.ErrorCodeManifestBlobUnknown: 3, - } - - if !reflect.DeepEqual(counts, expectedCounts) { - t.Fatalf("unexpected number of error codes encountered: %v\n!=\n%v\n---\n%s", counts, expectedCounts, string(p)) - } - - // Push a config, and reference it in the manifest - sampleConfig := []byte(`{ - "architecture": "amd64", - "history": [ - { - "created": "2015-10-31T22:22:54.690851953Z", - "created_by": "/bin/sh -c #(nop) ADD file:a3bc1e842b69636f9df5256c49c5374fb4eef1e281fe3f282c65fb853ee171c5 in /" - }, - { - "created": "2015-10-31T22:22:55.613815829Z", - "created_by": "/bin/sh -c #(nop) CMD [\"sh\"]" - } - ], - "rootfs": { - "diff_ids": [ - "sha256:c6f988f4874bb0add23a778f753c65efe992244e148a1d2ec2a8b664fb66bbd1", - "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef" - ], - "type": "layers" - } - }`) - sampleConfigDigest := digest.FromBytes(sampleConfig) - - uploadURLBase, _ := startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, sampleConfigDigest, uploadURLBase, bytes.NewReader(sampleConfig)) - manifest.Config.Digest = sampleConfigDigest - manifest.Config.Size = int64(len(sampleConfig)) - - // The manifest should still be invalid, because its layer doesn't exist - resp = putManifest(t, "putting missing layer manifest", manifestURL, schema2.MediaTypeManifest, manifest) - defer resp.Body.Close() - checkResponse(t, "putting missing layer manifest", resp, http.StatusBadRequest) - _, p, counts = checkBodyHasErrorCodes(t, "getting unknown manifest tags", resp, v2.ErrorCodeManifestBlobUnknown) - - expectedCounts = map[errcode.ErrorCode]int{ - v2.ErrorCodeManifestBlobUnknown: 2, - } - - if !reflect.DeepEqual(counts, expectedCounts) { - t.Fatalf("unexpected number of error codes encountered: %v\n!=\n%v\n---\n%s", counts, expectedCounts, string(p)) - } - - // Push 2 random layers - expectedLayers := make(map[digest.Digest]io.ReadSeeker) - - for i := range manifest.Layers { - rs, dgstStr, err := testutil.CreateRandomTarFile() - - if err != nil { - t.Fatalf("error creating random layer %d: %v", i, err) - } - dgst := digest.Digest(dgstStr) - - expectedLayers[dgst] = rs - manifest.Layers[i].Digest = dgst - - uploadURLBase, _ := startPushLayer(t, env, imageName) - pushLayer(t, env.builder, imageName, dgst, uploadURLBase, rs) - } - - // ------------------- - // Push the manifest with all layers pushed. - deserializedManifest, err := schema2.FromStruct(*manifest) - if err != nil { - t.Fatalf("could not create DeserializedManifest: %v", err) - } - _, canonical, err := deserializedManifest.Payload() - if err != nil { - t.Fatalf("could not get manifest payload: %v", err) - } - dgst := digest.FromBytes(canonical) - args.dgst = dgst - args.manifest = deserializedManifest - - digestRef, _ := reference.WithDigest(imageName, dgst) - manifestDigestURL, err := env.builder.BuildManifestURL(digestRef) - checkErr(t, err, "building manifest url") - - resp = putManifest(t, "putting manifest no error", manifestURL, schema2.MediaTypeManifest, manifest) - checkResponse(t, "putting manifest no error", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // -------------------- - // Push by digest -- should get same result - resp = putManifest(t, "putting manifest by digest", manifestDigestURL, schema2.MediaTypeManifest, manifest) - checkResponse(t, "putting manifest by digest", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // ------------------ - // Fetch by tag name - req, err := http.NewRequest("GET", manifestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("Accept", schema2.MediaTypeManifest) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("unexpected error fetching manifest: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "fetching uploaded manifest", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - var fetchedManifest schema2.DeserializedManifest - dec := json.NewDecoder(resp.Body) - - if err := dec.Decode(&fetchedManifest); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - _, fetchedCanonical, err := fetchedManifest.Payload() - if err != nil { - t.Fatalf("error getting manifest payload: %v", err) - } - - if !bytes.Equal(fetchedCanonical, canonical) { - t.Fatalf("manifests do not match") - } - - // --------------- - // Fetch by digest - req, err = http.NewRequest("GET", manifestDigestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("Accept", schema2.MediaTypeManifest) - resp, err = http.DefaultClient.Do(req) - checkErr(t, err, "fetching manifest by digest") - defer resp.Body.Close() - - checkResponse(t, "fetching uploaded manifest", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - var fetchedManifestByDigest schema2.DeserializedManifest - dec = json.NewDecoder(resp.Body) - if err := dec.Decode(&fetchedManifestByDigest); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - _, fetchedCanonical, err = fetchedManifest.Payload() - if err != nil { - t.Fatalf("error getting manifest payload: %v", err) - } - - if !bytes.Equal(fetchedCanonical, canonical) { - t.Fatalf("manifests do not match") - } - - // Get by name with etag, gives 304 - etag := resp.Header.Get("Etag") - req, err = http.NewRequest("GET", manifestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching manifest by name with etag", resp, http.StatusNotModified) - - // Get by digest with etag, gives 304 - req, err = http.NewRequest("GET", manifestDigestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching manifest by dgst with etag", resp, http.StatusNotModified) - - // Ensure that the tag is listed. - resp, err = http.Get(tagsURL) - if err != nil { - t.Fatalf("unexpected error getting unknown tags: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "getting unknown manifest tags", resp, http.StatusOK) - dec = json.NewDecoder(resp.Body) - - var tagsResponse tagsAPIResponse - - if err := dec.Decode(&tagsResponse); err != nil { - t.Fatalf("unexpected error decoding error response: %v", err) - } - - if tagsResponse.Name != imageName.Name() { - t.Fatalf("tags name should match image name: %v != %v", tagsResponse.Name, imageName) - } - - if len(tagsResponse.Tags) != 1 { - t.Fatalf("expected some tags in response: %v", tagsResponse.Tags) - } - - if tagsResponse.Tags[0] != tag { - t.Fatalf("tag not as expected: %q != %q", tagsResponse.Tags[0], tag) - } - - // ------------------ - // Fetch as a schema1 manifest - resp, err = http.Get(manifestURL) - if err != nil { - t.Fatalf("unexpected error fetching manifest as schema1: %v", err) - } - defer resp.Body.Close() - - manifestBytes, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatalf("error reading response body: %v", err) - } - - checkResponse(t, "fetching uploaded manifest as schema1", resp, http.StatusOK) - - m, desc, err := distribution.UnmarshalManifest(schema1.MediaTypeManifest, manifestBytes) - if err != nil { - t.Fatalf("unexpected error unmarshalling manifest: %v", err) - } - - fetchedSchema1Manifest, ok := m.(*schema1.SignedManifest) - if !ok { - t.Fatalf("expecting schema1 manifest") - } - - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{desc.Digest.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, desc.Digest)}, - }) - - if fetchedSchema1Manifest.Manifest.SchemaVersion != 1 { - t.Fatal("wrong schema version") - } - if fetchedSchema1Manifest.Architecture != "amd64" { - t.Fatal("wrong architecture") - } - if fetchedSchema1Manifest.Name != imageName.Name() { - t.Fatal("wrong image name") - } - if fetchedSchema1Manifest.Tag != tag { - t.Fatal("wrong tag") - } - if len(fetchedSchema1Manifest.FSLayers) != 2 { - t.Fatal("wrong number of FSLayers") - } - for i := range manifest.Layers { - if fetchedSchema1Manifest.FSLayers[i].BlobSum != manifest.Layers[len(manifest.Layers)-i-1].Digest { - t.Fatalf("blob digest mismatch in schema1 manifest for layer %d", i) - } - } - if len(fetchedSchema1Manifest.History) != 2 { - t.Fatal("wrong number of History entries") - } - - // Don't check V1Compatibility fields because we're using randomly-generated - // layers. - - return args -} - -func testManifestAPIManifestList(t *testing.T, env *testEnv, args manifestArgs) { - imageName := args.imageName - tag := "manifestlisttag" - - tagRef, _ := reference.WithTag(imageName, tag) - manifestURL, err := env.builder.BuildManifestURL(tagRef) - if err != nil { - t.Fatalf("unexpected error getting manifest url: %v", err) - } - - // -------------------------------- - // Attempt to push manifest list that refers to an unknown manifest - manifestList := &manifestlist.ManifestList{ - Versioned: manifest.Versioned{ - SchemaVersion: 2, - MediaType: manifestlist.MediaTypeManifestList, - }, - Manifests: []manifestlist.ManifestDescriptor{ - { - Descriptor: distribution.Descriptor{ - Digest: "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b", - Size: 3253, - MediaType: schema2.MediaTypeManifest, - }, - Platform: manifestlist.PlatformSpec{ - Architecture: "amd64", - OS: "linux", - }, - }, - }, - } - - resp := putManifest(t, "putting missing manifest manifestlist", manifestURL, manifestlist.MediaTypeManifestList, manifestList) - defer resp.Body.Close() - checkResponse(t, "putting missing manifest manifestlist", resp, http.StatusBadRequest) - _, p, counts := checkBodyHasErrorCodes(t, "putting missing manifest manifestlist", resp, v2.ErrorCodeManifestBlobUnknown) - - expectedCounts := map[errcode.ErrorCode]int{ - v2.ErrorCodeManifestBlobUnknown: 1, - } - - if !reflect.DeepEqual(counts, expectedCounts) { - t.Fatalf("unexpected number of error codes encountered: %v\n!=\n%v\n---\n%s", counts, expectedCounts, string(p)) - } - - // ------------------- - // Push a manifest list that references an actual manifest - manifestList.Manifests[0].Digest = args.dgst - deserializedManifestList, err := manifestlist.FromDescriptors(manifestList.Manifests) - if err != nil { - t.Fatalf("could not create DeserializedManifestList: %v", err) - } - _, canonical, err := deserializedManifestList.Payload() - if err != nil { - t.Fatalf("could not get manifest list payload: %v", err) - } - dgst := digest.FromBytes(canonical) - - digestRef, _ := reference.WithDigest(imageName, dgst) - manifestDigestURL, err := env.builder.BuildManifestURL(digestRef) - checkErr(t, err, "building manifest url") - - resp = putManifest(t, "putting manifest list no error", manifestURL, manifestlist.MediaTypeManifestList, deserializedManifestList) - checkResponse(t, "putting manifest list no error", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // -------------------- - // Push by digest -- should get same result - resp = putManifest(t, "putting manifest list by digest", manifestDigestURL, manifestlist.MediaTypeManifestList, deserializedManifestList) - checkResponse(t, "putting manifest list by digest", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // ------------------ - // Fetch by tag name - req, err := http.NewRequest("GET", manifestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("Accept", manifestlist.MediaTypeManifestList) - req.Header.Add("Accept", schema1.MediaTypeSignedManifest) - req.Header.Add("Accept", schema2.MediaTypeManifest) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("unexpected error fetching manifest list: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "fetching uploaded manifest list", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - var fetchedManifestList manifestlist.DeserializedManifestList - dec := json.NewDecoder(resp.Body) - - if err := dec.Decode(&fetchedManifestList); err != nil { - t.Fatalf("error decoding fetched manifest list: %v", err) - } - - _, fetchedCanonical, err := fetchedManifestList.Payload() - if err != nil { - t.Fatalf("error getting manifest list payload: %v", err) - } - - if !bytes.Equal(fetchedCanonical, canonical) { - t.Fatalf("manifest lists do not match") - } - - // --------------- - // Fetch by digest - req, err = http.NewRequest("GET", manifestDigestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("Accept", manifestlist.MediaTypeManifestList) - resp, err = http.DefaultClient.Do(req) - checkErr(t, err, "fetching manifest list by digest") - defer resp.Body.Close() - - checkResponse(t, "fetching uploaded manifest list", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, dgst)}, - }) - - var fetchedManifestListByDigest manifestlist.DeserializedManifestList - dec = json.NewDecoder(resp.Body) - if err := dec.Decode(&fetchedManifestListByDigest); err != nil { - t.Fatalf("error decoding fetched manifest: %v", err) - } - - _, fetchedCanonical, err = fetchedManifestListByDigest.Payload() - if err != nil { - t.Fatalf("error getting manifest list payload: %v", err) - } - - if !bytes.Equal(fetchedCanonical, canonical) { - t.Fatalf("manifests do not match") - } - - // Get by name with etag, gives 304 - etag := resp.Header.Get("Etag") - req, err = http.NewRequest("GET", manifestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching manifest by name with etag", resp, http.StatusNotModified) - - // Get by digest with etag, gives 304 - req, err = http.NewRequest("GET", manifestDigestURL, nil) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - req.Header.Set("If-None-Match", etag) - resp, err = http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("Error constructing request: %s", err) - } - - checkResponse(t, "fetching manifest by dgst with etag", resp, http.StatusNotModified) - - // ------------------ - // Fetch as a schema1 manifest - resp, err = http.Get(manifestURL) - if err != nil { - t.Fatalf("unexpected error fetching manifest list as schema1: %v", err) - } - defer resp.Body.Close() - - manifestBytes, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatalf("error reading response body: %v", err) - } - - checkResponse(t, "fetching uploaded manifest list as schema1", resp, http.StatusOK) - - m, desc, err := distribution.UnmarshalManifest(schema1.MediaTypeManifest, manifestBytes) - if err != nil { - t.Fatalf("unexpected error unmarshalling manifest: %v", err) - } - - fetchedSchema1Manifest, ok := m.(*schema1.SignedManifest) - if !ok { - t.Fatalf("expecting schema1 manifest") - } - - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{desc.Digest.String()}, - "ETag": []string{fmt.Sprintf(`"%s"`, desc.Digest)}, - }) - - if fetchedSchema1Manifest.Manifest.SchemaVersion != 1 { - t.Fatal("wrong schema version") - } - if fetchedSchema1Manifest.Architecture != "amd64" { - t.Fatal("wrong architecture") - } - if fetchedSchema1Manifest.Name != imageName.Name() { - t.Fatal("wrong image name") - } - if fetchedSchema1Manifest.Tag != tag { - t.Fatal("wrong tag") - } - if len(fetchedSchema1Manifest.FSLayers) != 2 { - t.Fatal("wrong number of FSLayers") - } - layers := args.manifest.(*schema2.DeserializedManifest).Layers - for i := range layers { - if fetchedSchema1Manifest.FSLayers[i].BlobSum != layers[len(layers)-i-1].Digest { - t.Fatalf("blob digest mismatch in schema1 manifest for layer %d", i) - } - } - if len(fetchedSchema1Manifest.History) != 2 { - t.Fatal("wrong number of History entries") - } - - // Don't check V1Compatibility fields because we're using randomly-generated - // layers. -} - -func testManifestDelete(t *testing.T, env *testEnv, args manifestArgs) { - imageName := args.imageName - dgst := args.dgst - manifest := args.manifest - - ref, _ := reference.WithDigest(imageName, dgst) - manifestDigestURL, err := env.builder.BuildManifestURL(ref) - // --------------- - // Delete by digest - resp, err := httpDelete(manifestDigestURL) - checkErr(t, err, "deleting manifest by digest") - - checkResponse(t, "deleting manifest", resp, http.StatusAccepted) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{"0"}, - }) - - // --------------- - // Attempt to fetch deleted manifest - resp, err = http.Get(manifestDigestURL) - checkErr(t, err, "fetching deleted manifest by digest") - defer resp.Body.Close() - - checkResponse(t, "fetching deleted manifest", resp, http.StatusNotFound) - - // --------------- - // Delete already deleted manifest by digest - resp, err = httpDelete(manifestDigestURL) - checkErr(t, err, "re-deleting manifest by digest") - - checkResponse(t, "re-deleting manifest", resp, http.StatusNotFound) - - // -------------------- - // Re-upload manifest by digest - resp = putManifest(t, "putting manifest", manifestDigestURL, args.mediaType, manifest) - checkResponse(t, "putting manifest", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // --------------- - // Attempt to fetch re-uploaded deleted digest - resp, err = http.Get(manifestDigestURL) - checkErr(t, err, "fetching re-uploaded manifest by digest") - defer resp.Body.Close() - - checkResponse(t, "fetching re-uploaded manifest", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // --------------- - // Attempt to delete an unknown manifest - unknownDigest := digest.Digest("sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") - unknownRef, _ := reference.WithDigest(imageName, unknownDigest) - unknownManifestDigestURL, err := env.builder.BuildManifestURL(unknownRef) - checkErr(t, err, "building unknown manifest url") - - resp, err = httpDelete(unknownManifestDigestURL) - checkErr(t, err, "delting unknown manifest by digest") - checkResponse(t, "fetching deleted manifest", resp, http.StatusNotFound) - - // -------------------- - // Upload manifest by tag - tag := "atag" - tagRef, _ := reference.WithTag(imageName, tag) - manifestTagURL, err := env.builder.BuildManifestURL(tagRef) - resp = putManifest(t, "putting manifest by tag", manifestTagURL, args.mediaType, manifest) - checkResponse(t, "putting manifest by tag", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{manifestDigestURL}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - tagsURL, err := env.builder.BuildTagsURL(imageName) - if err != nil { - t.Fatalf("unexpected error building tags url: %v", err) - } - - // Ensure that the tag is listed. - resp, err = http.Get(tagsURL) - if err != nil { - t.Fatalf("unexpected error getting unknown tags: %v", err) - } - defer resp.Body.Close() - - dec := json.NewDecoder(resp.Body) - var tagsResponse tagsAPIResponse - if err := dec.Decode(&tagsResponse); err != nil { - t.Fatalf("unexpected error decoding error response: %v", err) - } - - if tagsResponse.Name != imageName.Name() { - t.Fatalf("tags name should match image name: %v != %v", tagsResponse.Name, imageName) - } - - if len(tagsResponse.Tags) != 1 { - t.Fatalf("expected some tags in response: %v", tagsResponse.Tags) - } - - if tagsResponse.Tags[0] != tag { - t.Fatalf("tag not as expected: %q != %q", tagsResponse.Tags[0], tag) - } - - // --------------- - // Delete by digest - resp, err = httpDelete(manifestDigestURL) - checkErr(t, err, "deleting manifest by digest") - - checkResponse(t, "deleting manifest with tag", resp, http.StatusAccepted) - checkHeaders(t, resp, http.Header{ - "Content-Length": []string{"0"}, - }) - - // Ensure that the tag is not listed. - resp, err = http.Get(tagsURL) - if err != nil { - t.Fatalf("unexpected error getting unknown tags: %v", err) - } - defer resp.Body.Close() - - dec = json.NewDecoder(resp.Body) - if err := dec.Decode(&tagsResponse); err != nil { - t.Fatalf("unexpected error decoding error response: %v", err) - } - - if tagsResponse.Name != imageName.Name() { - t.Fatalf("tags name should match image name: %v != %v", tagsResponse.Name, imageName) - } - - if len(tagsResponse.Tags) != 0 { - t.Fatalf("expected 0 tags in response: %v", tagsResponse.Tags) - } - -} - -type testEnv struct { - pk libtrust.PrivateKey - ctx context.Context - config configuration.Configuration - app *App - server *httptest.Server - builder *v2.URLBuilder -} - -func newTestEnvMirror(t *testing.T, deleteEnabled bool) *testEnv { - config := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - "delete": configuration.Parameters{"enabled": deleteEnabled}, - }, - Proxy: configuration.Proxy{ - RemoteURL: "http://example.com", - }, - } - - return newTestEnvWithConfig(t, &config) - -} - -func newTestEnv(t *testing.T, deleteEnabled bool) *testEnv { - config := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - "delete": configuration.Parameters{"enabled": deleteEnabled}, - }, - } - - config.HTTP.Headers = headerConfig - - return newTestEnvWithConfig(t, &config) -} - -func newTestEnvWithConfig(t *testing.T, config *configuration.Configuration) *testEnv { - ctx := context.Background() - - app := NewApp(ctx, config) - server := httptest.NewServer(handlers.CombinedLoggingHandler(os.Stderr, app)) - builder, err := v2.NewURLBuilderFromString(server.URL+config.HTTP.Prefix, false) - - if err != nil { - t.Fatalf("error creating url builder: %v", err) - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("unexpected error generating private key: %v", err) - } - - return &testEnv{ - pk: pk, - ctx: ctx, - config: *config, - app: app, - server: server, - builder: builder, - } -} - -func putManifest(t *testing.T, msg, url, contentType string, v interface{}) *http.Response { - var body []byte - - switch m := v.(type) { - case *schema1.SignedManifest: - _, pl, err := m.Payload() - if err != nil { - t.Fatalf("error getting payload: %v", err) - } - body = pl - case *manifestlist.DeserializedManifestList: - _, pl, err := m.Payload() - if err != nil { - t.Fatalf("error getting payload: %v", err) - } - body = pl - default: - var err error - body, err = json.MarshalIndent(v, "", " ") - if err != nil { - t.Fatalf("unexpected error marshaling %v: %v", v, err) - } - } - - req, err := http.NewRequest("PUT", url, bytes.NewReader(body)) - if err != nil { - t.Fatalf("error creating request for %s: %v", msg, err) - } - - if contentType != "" { - req.Header.Set("Content-Type", contentType) - } - - resp, err := http.DefaultClient.Do(req) - if err != nil { - t.Fatalf("error doing put request while %s: %v", msg, err) - } - - return resp -} - -func startPushLayer(t *testing.T, env *testEnv, name reference.Named) (location string, uuid string) { - layerUploadURL, err := env.builder.BuildBlobUploadURL(name) - if err != nil { - t.Fatalf("unexpected error building layer upload url: %v", err) - } - - u, err := url.Parse(layerUploadURL) - if err != nil { - t.Fatalf("error parsing layer upload URL: %v", err) - } - - base, err := url.Parse(env.server.URL) - if err != nil { - t.Fatalf("error parsing server URL: %v", err) - } - - layerUploadURL = base.ResolveReference(u).String() - resp, err := http.Post(layerUploadURL, "", nil) - if err != nil { - t.Fatalf("unexpected error starting layer push: %v", err) - } - - defer resp.Body.Close() - - checkResponse(t, fmt.Sprintf("pushing starting layer push %v", name.String()), resp, http.StatusAccepted) - - u, err = url.Parse(resp.Header.Get("Location")) - if err != nil { - t.Fatalf("error parsing location header: %v", err) - } - - uuid = path.Base(u.Path) - checkHeaders(t, resp, http.Header{ - "Location": []string{"*"}, - "Content-Length": []string{"0"}, - "Docker-Upload-UUID": []string{uuid}, - }) - - return resp.Header.Get("Location"), uuid -} - -// doPushLayer pushes the layer content returning the url on success returning -// the response. If you're only expecting a successful response, use pushLayer. -func doPushLayer(t *testing.T, ub *v2.URLBuilder, name reference.Named, dgst digest.Digest, uploadURLBase string, body io.Reader) (*http.Response, error) { - u, err := url.Parse(uploadURLBase) - if err != nil { - t.Fatalf("unexpected error parsing pushLayer url: %v", err) - } - - u.RawQuery = url.Values{ - "_state": u.Query()["_state"], - "digest": []string{dgst.String()}, - }.Encode() - - uploadURL := u.String() - - // Just do a monolithic upload - req, err := http.NewRequest("PUT", uploadURL, body) - if err != nil { - t.Fatalf("unexpected error creating new request: %v", err) - } - - return http.DefaultClient.Do(req) -} - -// pushLayer pushes the layer content returning the url on success. -func pushLayer(t *testing.T, ub *v2.URLBuilder, name reference.Named, dgst digest.Digest, uploadURLBase string, body io.Reader) string { - digester := digest.Canonical.New() - - resp, err := doPushLayer(t, ub, name, dgst, uploadURLBase, io.TeeReader(body, digester.Hash())) - if err != nil { - t.Fatalf("unexpected error doing push layer request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "putting monolithic chunk", resp, http.StatusCreated) - - if err != nil { - t.Fatalf("error generating sha256 digest of body") - } - - sha256Dgst := digester.Digest() - - ref, _ := reference.WithDigest(name, sha256Dgst) - expectedLayerURL, err := ub.BuildBlobURL(ref) - if err != nil { - t.Fatalf("error building expected layer url: %v", err) - } - - checkHeaders(t, resp, http.Header{ - "Location": []string{expectedLayerURL}, - "Content-Length": []string{"0"}, - "Docker-Content-Digest": []string{sha256Dgst.String()}, - }) - - return resp.Header.Get("Location") -} - -func finishUpload(t *testing.T, ub *v2.URLBuilder, name reference.Named, uploadURLBase string, dgst digest.Digest) string { - resp, err := doPushLayer(t, ub, name, dgst, uploadURLBase, nil) - if err != nil { - t.Fatalf("unexpected error doing push layer request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "putting monolithic chunk", resp, http.StatusCreated) - - ref, _ := reference.WithDigest(name, dgst) - expectedLayerURL, err := ub.BuildBlobURL(ref) - if err != nil { - t.Fatalf("error building expected layer url: %v", err) - } - - checkHeaders(t, resp, http.Header{ - "Location": []string{expectedLayerURL}, - "Content-Length": []string{"0"}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - - return resp.Header.Get("Location") -} - -func doPushChunk(t *testing.T, uploadURLBase string, body io.Reader) (*http.Response, digest.Digest, error) { - u, err := url.Parse(uploadURLBase) - if err != nil { - t.Fatalf("unexpected error parsing pushLayer url: %v", err) - } - - u.RawQuery = url.Values{ - "_state": u.Query()["_state"], - }.Encode() - - uploadURL := u.String() - - digester := digest.Canonical.New() - - req, err := http.NewRequest("PATCH", uploadURL, io.TeeReader(body, digester.Hash())) - if err != nil { - t.Fatalf("unexpected error creating new request: %v", err) - } - req.Header.Set("Content-Type", "application/octet-stream") - - resp, err := http.DefaultClient.Do(req) - - return resp, digester.Digest(), err -} - -func pushChunk(t *testing.T, ub *v2.URLBuilder, name reference.Named, uploadURLBase string, body io.Reader, length int64) (string, digest.Digest) { - resp, dgst, err := doPushChunk(t, uploadURLBase, body) - if err != nil { - t.Fatalf("unexpected error doing push layer request: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, "putting chunk", resp, http.StatusAccepted) - - if err != nil { - t.Fatalf("error generating sha256 digest of body") - } - - checkHeaders(t, resp, http.Header{ - "Range": []string{fmt.Sprintf("0-%d", length-1)}, - "Content-Length": []string{"0"}, - }) - - return resp.Header.Get("Location"), dgst -} - -func checkResponse(t *testing.T, msg string, resp *http.Response, expectedStatus int) { - if resp.StatusCode != expectedStatus { - t.Logf("unexpected status %s: %v != %v", msg, resp.StatusCode, expectedStatus) - maybeDumpResponse(t, resp) - - t.FailNow() - } - - // We expect the headers included in the configuration, unless the - // status code is 405 (Method Not Allowed), which means the handler - // doesn't even get called. - if resp.StatusCode != 405 && !reflect.DeepEqual(resp.Header["X-Content-Type-Options"], []string{"nosniff"}) { - t.Logf("missing or incorrect header X-Content-Type-Options %s", msg) - maybeDumpResponse(t, resp) - - t.FailNow() - } -} - -// checkBodyHasErrorCodes ensures the body is an error body and has the -// expected error codes, returning the error structure, the json slice and a -// count of the errors by code. -func checkBodyHasErrorCodes(t *testing.T, msg string, resp *http.Response, errorCodes ...errcode.ErrorCode) (errcode.Errors, []byte, map[errcode.ErrorCode]int) { - p, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatalf("unexpected error reading body %s: %v", msg, err) - } - - var errs errcode.Errors - if err := json.Unmarshal(p, &errs); err != nil { - t.Fatalf("unexpected error decoding error response: %v", err) - } - - if len(errs) == 0 { - t.Fatalf("expected errors in response") - } - - // TODO(stevvooe): Shoot. The error setup is not working out. The content- - // type headers are being set after writing the status code. - // if resp.Header.Get("Content-Type") != "application/json; charset=utf-8" { - // t.Fatalf("unexpected content type: %v != 'application/json'", - // resp.Header.Get("Content-Type")) - // } - - expected := map[errcode.ErrorCode]struct{}{} - counts := map[errcode.ErrorCode]int{} - - // Initialize map with zeros for expected - for _, code := range errorCodes { - expected[code] = struct{}{} - counts[code] = 0 - } - - for _, e := range errs { - err, ok := e.(errcode.ErrorCoder) - if !ok { - t.Fatalf("not an ErrorCoder: %#v", e) - } - if _, ok := expected[err.ErrorCode()]; !ok { - t.Fatalf("unexpected error code %v encountered during %s: %s ", err.ErrorCode(), msg, string(p)) - } - counts[err.ErrorCode()]++ - } - - // Ensure that counts of expected errors were all non-zero - for code := range expected { - if counts[code] == 0 { - t.Fatalf("expected error code %v not encounterd during %s: %s", code, msg, string(p)) - } - } - - return errs, p, counts -} - -func maybeDumpResponse(t *testing.T, resp *http.Response) { - if d, err := httputil.DumpResponse(resp, true); err != nil { - t.Logf("error dumping response: %v", err) - } else { - t.Logf("response:\n%s", string(d)) - } -} - -// matchHeaders checks that the response has at least the headers. If not, the -// test will fail. If a passed in header value is "*", any non-zero value will -// suffice as a match. -func checkHeaders(t *testing.T, resp *http.Response, headers http.Header) { - for k, vs := range headers { - if resp.Header.Get(k) == "" { - t.Fatalf("response missing header %q", k) - } - - for _, v := range vs { - if v == "*" { - // Just ensure there is some value. - if len(resp.Header[http.CanonicalHeaderKey(k)]) > 0 { - continue - } - } - - for _, hv := range resp.Header[http.CanonicalHeaderKey(k)] { - if hv != v { - t.Fatalf("%+v %v header value not matched in response: %q != %q", resp.Header, k, hv, v) - } - } - } - } -} - -func checkErr(t *testing.T, err error, msg string) { - if err != nil { - t.Fatalf("unexpected error %s: %v", msg, err) - } -} - -func createRepository(env *testEnv, t *testing.T, imageName string, tag string) digest.Digest { - imageNameRef, err := reference.ParseNamed(imageName) - if err != nil { - t.Fatalf("unable to parse reference: %v", err) - } - - unsignedManifest := &schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: imageName, - Tag: tag, - FSLayers: []schema1.FSLayer{ - { - BlobSum: "asdf", - }, - }, - History: []schema1.History{ - { - V1Compatibility: "", - }, - }, - } - - // Push 2 random layers - expectedLayers := make(map[digest.Digest]io.ReadSeeker) - - for i := range unsignedManifest.FSLayers { - rs, dgstStr, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating random layer %d: %v", i, err) - } - dgst := digest.Digest(dgstStr) - - expectedLayers[dgst] = rs - unsignedManifest.FSLayers[i].BlobSum = dgst - uploadURLBase, _ := startPushLayer(t, env, imageNameRef) - pushLayer(t, env.builder, imageNameRef, dgst, uploadURLBase, rs) - } - - signedManifest, err := schema1.Sign(unsignedManifest, env.pk) - if err != nil { - t.Fatalf("unexpected error signing manifest: %v", err) - } - - dgst := digest.FromBytes(signedManifest.Canonical) - - // Create this repository by tag to ensure the tag mapping is made in the registry - tagRef, _ := reference.WithTag(imageNameRef, tag) - manifestDigestURL, err := env.builder.BuildManifestURL(tagRef) - checkErr(t, err, "building manifest url") - - digestRef, _ := reference.WithDigest(imageNameRef, dgst) - location, err := env.builder.BuildManifestURL(digestRef) - checkErr(t, err, "building location URL") - - resp := putManifest(t, "putting signed manifest", manifestDigestURL, "", signedManifest) - checkResponse(t, "putting signed manifest", resp, http.StatusCreated) - checkHeaders(t, resp, http.Header{ - "Location": []string{location}, - "Docker-Content-Digest": []string{dgst.String()}, - }) - return dgst -} - -// Test mutation operations on a registry configured as a cache. Ensure that they return -// appropriate errors. -func TestRegistryAsCacheMutationAPIs(t *testing.T) { - deleteEnabled := true - env := newTestEnvMirror(t, deleteEnabled) - - imageName, _ := reference.ParseNamed("foo/bar") - tag := "latest" - tagRef, _ := reference.WithTag(imageName, tag) - manifestURL, err := env.builder.BuildManifestURL(tagRef) - if err != nil { - t.Fatalf("unexpected error building base url: %v", err) - } - - // Manifest upload - m := &schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: imageName.Name(), - Tag: tag, - FSLayers: []schema1.FSLayer{}, - History: []schema1.History{}, - } - - sm, err := schema1.Sign(m, env.pk) - if err != nil { - t.Fatalf("error signing manifest: %v", err) - } - - resp := putManifest(t, "putting unsigned manifest", manifestURL, "", sm) - checkResponse(t, "putting signed manifest to cache", resp, errcode.ErrorCodeUnsupported.Descriptor().HTTPStatusCode) - - // Manifest Delete - resp, err = httpDelete(manifestURL) - checkResponse(t, "deleting signed manifest from cache", resp, errcode.ErrorCodeUnsupported.Descriptor().HTTPStatusCode) - - // Blob upload initialization - layerUploadURL, err := env.builder.BuildBlobUploadURL(imageName) - if err != nil { - t.Fatalf("unexpected error building layer upload url: %v", err) - } - - resp, err = http.Post(layerUploadURL, "", nil) - if err != nil { - t.Fatalf("unexpected error starting layer push: %v", err) - } - defer resp.Body.Close() - - checkResponse(t, fmt.Sprintf("starting layer push to cache %v", imageName), resp, errcode.ErrorCodeUnsupported.Descriptor().HTTPStatusCode) - - // Blob Delete - ref, _ := reference.WithDigest(imageName, digest.DigestSha256EmptyTar) - blobURL, err := env.builder.BuildBlobURL(ref) - resp, err = httpDelete(blobURL) - checkResponse(t, "deleting blob from cache", resp, errcode.ErrorCodeUnsupported.Descriptor().HTTPStatusCode) - -} - -// TestCheckContextNotifier makes sure the API endpoints get a ResponseWriter -// that implements http.ContextNotifier. -func TestCheckContextNotifier(t *testing.T) { - env := newTestEnv(t, false) - - // Register a new endpoint for testing - env.app.router.Handle("/unittest/{name}/", env.app.dispatcher(func(ctx *Context, r *http.Request) http.Handler { - return handlers.MethodHandler{ - "GET": http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if _, ok := w.(http.CloseNotifier); !ok { - t.Fatal("could not cast ResponseWriter to CloseNotifier") - } - w.WriteHeader(200) - }), - } - })) - - resp, err := http.Get(env.server.URL + "/unittest/reponame/") - if err != nil { - t.Fatalf("unexpected error issuing request: %v", err) - } - defer resp.Body.Close() - - if resp.StatusCode != 200 { - t.Fatalf("wrong status code - expected 200, got %d", resp.StatusCode) - } -} - -func TestProxyManifestGetByTag(t *testing.T) { - truthConfig := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - } - truthConfig.HTTP.Headers = headerConfig - - imageName, _ := reference.ParseNamed("foo/bar") - tag := "latest" - - truthEnv := newTestEnvWithConfig(t, &truthConfig) - // create a repository in the truth registry - dgst := createRepository(truthEnv, t, imageName.Name(), tag) - - proxyConfig := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - Proxy: configuration.Proxy{ - RemoteURL: truthEnv.server.URL, - }, - } - proxyConfig.HTTP.Headers = headerConfig - - proxyEnv := newTestEnvWithConfig(t, &proxyConfig) - - digestRef, _ := reference.WithDigest(imageName, dgst) - manifestDigestURL, err := proxyEnv.builder.BuildManifestURL(digestRef) - checkErr(t, err, "building manifest url") - - resp, err := http.Get(manifestDigestURL) - checkErr(t, err, "fetching manifest from proxy by digest") - defer resp.Body.Close() - - tagRef, _ := reference.WithTag(imageName, tag) - manifestTagURL, err := proxyEnv.builder.BuildManifestURL(tagRef) - checkErr(t, err, "building manifest url") - - resp, err = http.Get(manifestTagURL) - checkErr(t, err, "fetching manifest from proxy by tag") - defer resp.Body.Close() - checkResponse(t, "fetching manifest from proxy by tag", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{dgst.String()}, - }) - - // Create another manifest in the remote with the same image/tag pair - newDigest := createRepository(truthEnv, t, imageName.Name(), tag) - if dgst == newDigest { - t.Fatalf("non-random test data") - } - - // fetch it with the same proxy URL as before. Ensure the updated content is at the same tag - resp, err = http.Get(manifestTagURL) - checkErr(t, err, "fetching manifest from proxy by tag") - defer resp.Body.Close() - checkResponse(t, "fetching manifest from proxy by tag", resp, http.StatusOK) - checkHeaders(t, resp, http.Header{ - "Docker-Content-Digest": []string{newDigest.String()}, - }) -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/app.go b/vendor/github.com/docker/distribution/registry/handlers/app.go deleted file mode 100644 index 3c3e50d0bc..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/app.go +++ /dev/null @@ -1,998 +0,0 @@ -package handlers - -import ( - cryptorand "crypto/rand" - "expvar" - "fmt" - "math/rand" - "net" - "net/http" - "net/url" - "os" - "runtime" - "time" - - log "github.com/Sirupsen/logrus" - "github.com/docker/distribution" - "github.com/docker/distribution/configuration" - ctxu "github.com/docker/distribution/context" - "github.com/docker/distribution/health" - "github.com/docker/distribution/health/checks" - "github.com/docker/distribution/notifications" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/registry/auth" - registrymiddleware "github.com/docker/distribution/registry/middleware/registry" - repositorymiddleware "github.com/docker/distribution/registry/middleware/repository" - "github.com/docker/distribution/registry/proxy" - "github.com/docker/distribution/registry/storage" - memorycache "github.com/docker/distribution/registry/storage/cache/memory" - rediscache "github.com/docker/distribution/registry/storage/cache/redis" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/factory" - storagemiddleware "github.com/docker/distribution/registry/storage/driver/middleware" - "github.com/docker/distribution/version" - "github.com/docker/libtrust" - "github.com/garyburd/redigo/redis" - "github.com/gorilla/mux" - "golang.org/x/net/context" -) - -// randomSecretSize is the number of random bytes to generate if no secret -// was specified. -const randomSecretSize = 32 - -// defaultCheckInterval is the default time in between health checks -const defaultCheckInterval = 10 * time.Second - -// App is a global registry application object. Shared resources can be placed -// on this object that will be accessible from all requests. Any writable -// fields should be protected. -type App struct { - context.Context - - Config *configuration.Configuration - - router *mux.Router // main application router, configured with dispatchers - driver storagedriver.StorageDriver // driver maintains the app global storage driver instance. - registry distribution.Namespace // registry is the primary registry backend for the app instance. - accessController auth.AccessController // main access controller for application - - // httpHost is a parsed representation of the http.host parameter from - // the configuration. Only the Scheme and Host fields are used. - httpHost url.URL - - // events contains notification related configuration. - events struct { - sink notifications.Sink - source notifications.SourceRecord - } - - redis *redis.Pool - - // trustKey is a deprecated key used to sign manifests converted to - // schema1 for backward compatibility. It should not be used for any - // other purposes. - trustKey libtrust.PrivateKey - - // isCache is true if this registry is configured as a pull through cache - isCache bool - - // readOnly is true if the registry is in a read-only maintenance mode - readOnly bool -} - -// NewApp takes a configuration and returns a configured app, ready to serve -// requests. The app only implements ServeHTTP and can be wrapped in other -// handlers accordingly. -func NewApp(ctx context.Context, config *configuration.Configuration) *App { - app := &App{ - Config: config, - Context: ctx, - router: v2.RouterWithPrefix(config.HTTP.Prefix), - isCache: config.Proxy.RemoteURL != "", - } - - // Register the handler dispatchers. - app.register(v2.RouteNameBase, func(ctx *Context, r *http.Request) http.Handler { - return http.HandlerFunc(apiBase) - }) - app.register(v2.RouteNameManifest, imageManifestDispatcher) - app.register(v2.RouteNameCatalog, catalogDispatcher) - app.register(v2.RouteNameTags, tagsDispatcher) - app.register(v2.RouteNameBlob, blobDispatcher) - app.register(v2.RouteNameBlobUpload, blobUploadDispatcher) - app.register(v2.RouteNameBlobUploadChunk, blobUploadDispatcher) - - // override the storage driver's UA string for registry outbound HTTP requests - storageParams := config.Storage.Parameters() - if storageParams == nil { - storageParams = make(configuration.Parameters) - } - storageParams["useragent"] = fmt.Sprintf("docker-distribution/%s %s", version.Version, runtime.Version()) - - var err error - app.driver, err = factory.Create(config.Storage.Type(), storageParams) - if err != nil { - // TODO(stevvooe): Move the creation of a service into a protected - // method, where this is created lazily. Its status can be queried via - // a health check. - panic(err) - } - - purgeConfig := uploadPurgeDefaultConfig() - if mc, ok := config.Storage["maintenance"]; ok { - if v, ok := mc["uploadpurging"]; ok { - purgeConfig, ok = v.(map[interface{}]interface{}) - if !ok { - panic("uploadpurging config key must contain additional keys") - } - } - if v, ok := mc["readonly"]; ok { - readOnly, ok := v.(map[interface{}]interface{}) - if !ok { - panic("readonly config key must contain additional keys") - } - if readOnlyEnabled, ok := readOnly["enabled"]; ok { - app.readOnly, ok = readOnlyEnabled.(bool) - if !ok { - panic("readonly's enabled config key must have a boolean value") - } - } - } - } - - startUploadPurger(app, app.driver, ctxu.GetLogger(app), purgeConfig) - - app.driver, err = applyStorageMiddleware(app.driver, config.Middleware["storage"]) - if err != nil { - panic(err) - } - - app.configureSecret(config) - app.configureEvents(config) - app.configureRedis(config) - app.configureLogHook(config) - - if config.Compatibility.Schema1.TrustKey != "" { - app.trustKey, err = libtrust.LoadKeyFile(config.Compatibility.Schema1.TrustKey) - if err != nil { - panic(fmt.Sprintf(`could not load schema1 "signingkey" parameter: %v`, err)) - } - } else { - // Generate an ephemeral key to be used for signing converted manifests - // for clients that don't support schema2. - app.trustKey, err = libtrust.GenerateECP256PrivateKey() - if err != nil { - panic(err) - } - } - - if config.HTTP.Host != "" { - u, err := url.Parse(config.HTTP.Host) - if err != nil { - panic(fmt.Sprintf(`could not parse http "host" parameter: %v`, err)) - } - app.httpHost = *u - } - - options := []storage.RegistryOption{} - - if app.isCache { - options = append(options, storage.DisableDigestResumption) - } - - if config.Compatibility.Schema1.DisableSignatureStore { - options = append(options, storage.DisableSchema1Signatures) - options = append(options, storage.Schema1SigningKey(app.trustKey)) - } - - // configure deletion - if d, ok := config.Storage["delete"]; ok { - e, ok := d["enabled"] - if ok { - if deleteEnabled, ok := e.(bool); ok && deleteEnabled { - options = append(options, storage.EnableDelete) - } - } - } - - // configure redirects - var redirectDisabled bool - if redirectConfig, ok := config.Storage["redirect"]; ok { - v := redirectConfig["disable"] - switch v := v.(type) { - case bool: - redirectDisabled = v - default: - panic(fmt.Sprintf("invalid type for redirect config: %#v", redirectConfig)) - } - } - if redirectDisabled { - ctxu.GetLogger(app).Infof("backend redirection disabled") - } else { - options = append(options, storage.EnableRedirect) - } - - // configure storage caches - if cc, ok := config.Storage["cache"]; ok { - v, ok := cc["blobdescriptor"] - if !ok { - // Backwards compatible: "layerinfo" == "blobdescriptor" - v = cc["layerinfo"] - } - - switch v { - case "redis": - if app.redis == nil { - panic("redis configuration required to use for layerinfo cache") - } - cacheProvider := rediscache.NewRedisBlobDescriptorCacheProvider(app.redis) - localOptions := append(options, storage.BlobDescriptorCacheProvider(cacheProvider)) - app.registry, err = storage.NewRegistry(app, app.driver, localOptions...) - if err != nil { - panic("could not create registry: " + err.Error()) - } - ctxu.GetLogger(app).Infof("using redis blob descriptor cache") - case "inmemory": - cacheProvider := memorycache.NewInMemoryBlobDescriptorCacheProvider() - localOptions := append(options, storage.BlobDescriptorCacheProvider(cacheProvider)) - app.registry, err = storage.NewRegistry(app, app.driver, localOptions...) - if err != nil { - panic("could not create registry: " + err.Error()) - } - ctxu.GetLogger(app).Infof("using inmemory blob descriptor cache") - default: - if v != "" { - ctxu.GetLogger(app).Warnf("unknown cache type %q, caching disabled", config.Storage["cache"]) - } - } - } - - if app.registry == nil { - // configure the registry if no cache section is available. - app.registry, err = storage.NewRegistry(app.Context, app.driver, options...) - if err != nil { - panic("could not create registry: " + err.Error()) - } - } - - app.registry, err = applyRegistryMiddleware(app.Context, app.registry, config.Middleware["registry"]) - if err != nil { - panic(err) - } - - authType := config.Auth.Type() - - if authType != "" { - accessController, err := auth.GetAccessController(config.Auth.Type(), config.Auth.Parameters()) - if err != nil { - panic(fmt.Sprintf("unable to configure authorization (%s): %v", authType, err)) - } - app.accessController = accessController - ctxu.GetLogger(app).Debugf("configured %q access controller", authType) - } - - // configure as a pull through cache - if config.Proxy.RemoteURL != "" { - app.registry, err = proxy.NewRegistryPullThroughCache(ctx, app.registry, app.driver, config.Proxy) - if err != nil { - panic(err.Error()) - } - app.isCache = true - ctxu.GetLogger(app).Info("Registry configured as a proxy cache to ", config.Proxy.RemoteURL) - } - - return app -} - -// RegisterHealthChecks is an awful hack to defer health check registration -// control to callers. This should only ever be called once per registry -// process, typically in a main function. The correct way would be register -// health checks outside of app, since multiple apps may exist in the same -// process. Because the configuration and app are tightly coupled, -// implementing this properly will require a refactor. This method may panic -// if called twice in the same process. -func (app *App) RegisterHealthChecks(healthRegistries ...*health.Registry) { - if len(healthRegistries) > 1 { - panic("RegisterHealthChecks called with more than one registry") - } - healthRegistry := health.DefaultRegistry - if len(healthRegistries) == 1 { - healthRegistry = healthRegistries[0] - } - - if app.Config.Health.StorageDriver.Enabled { - interval := app.Config.Health.StorageDriver.Interval - if interval == 0 { - interval = defaultCheckInterval - } - - storageDriverCheck := func() error { - _, err := app.driver.List(app, "/") // "/" should always exist - return err // any error will be treated as failure - } - - if app.Config.Health.StorageDriver.Threshold != 0 { - healthRegistry.RegisterPeriodicThresholdFunc("storagedriver_"+app.Config.Storage.Type(), interval, app.Config.Health.StorageDriver.Threshold, storageDriverCheck) - } else { - healthRegistry.RegisterPeriodicFunc("storagedriver_"+app.Config.Storage.Type(), interval, storageDriverCheck) - } - } - - for _, fileChecker := range app.Config.Health.FileCheckers { - interval := fileChecker.Interval - if interval == 0 { - interval = defaultCheckInterval - } - ctxu.GetLogger(app).Infof("configuring file health check path=%s, interval=%d", fileChecker.File, interval/time.Second) - healthRegistry.Register(fileChecker.File, health.PeriodicChecker(checks.FileChecker(fileChecker.File), interval)) - } - - for _, httpChecker := range app.Config.Health.HTTPCheckers { - interval := httpChecker.Interval - if interval == 0 { - interval = defaultCheckInterval - } - - statusCode := httpChecker.StatusCode - if statusCode == 0 { - statusCode = 200 - } - - checker := checks.HTTPChecker(httpChecker.URI, statusCode, httpChecker.Timeout, httpChecker.Headers) - - if httpChecker.Threshold != 0 { - ctxu.GetLogger(app).Infof("configuring HTTP health check uri=%s, interval=%d, threshold=%d", httpChecker.URI, interval/time.Second, httpChecker.Threshold) - healthRegistry.Register(httpChecker.URI, health.PeriodicThresholdChecker(checker, interval, httpChecker.Threshold)) - } else { - ctxu.GetLogger(app).Infof("configuring HTTP health check uri=%s, interval=%d", httpChecker.URI, interval/time.Second) - healthRegistry.Register(httpChecker.URI, health.PeriodicChecker(checker, interval)) - } - } - - for _, tcpChecker := range app.Config.Health.TCPCheckers { - interval := tcpChecker.Interval - if interval == 0 { - interval = defaultCheckInterval - } - - checker := checks.TCPChecker(tcpChecker.Addr, tcpChecker.Timeout) - - if tcpChecker.Threshold != 0 { - ctxu.GetLogger(app).Infof("configuring TCP health check addr=%s, interval=%d, threshold=%d", tcpChecker.Addr, interval/time.Second, tcpChecker.Threshold) - healthRegistry.Register(tcpChecker.Addr, health.PeriodicThresholdChecker(checker, interval, tcpChecker.Threshold)) - } else { - ctxu.GetLogger(app).Infof("configuring TCP health check addr=%s, interval=%d", tcpChecker.Addr, interval/time.Second) - healthRegistry.Register(tcpChecker.Addr, health.PeriodicChecker(checker, interval)) - } - } -} - -// register a handler with the application, by route name. The handler will be -// passed through the application filters and context will be constructed at -// request time. -func (app *App) register(routeName string, dispatch dispatchFunc) { - - // TODO(stevvooe): This odd dispatcher/route registration is by-product of - // some limitations in the gorilla/mux router. We are using it to keep - // routing consistent between the client and server, but we may want to - // replace it with manual routing and structure-based dispatch for better - // control over the request execution. - - app.router.GetRoute(routeName).Handler(app.dispatcher(dispatch)) -} - -// configureEvents prepares the event sink for action. -func (app *App) configureEvents(configuration *configuration.Configuration) { - // Configure all of the endpoint sinks. - var sinks []notifications.Sink - for _, endpoint := range configuration.Notifications.Endpoints { - if endpoint.Disabled { - ctxu.GetLogger(app).Infof("endpoint %s disabled, skipping", endpoint.Name) - continue - } - - ctxu.GetLogger(app).Infof("configuring endpoint %v (%v), timeout=%s, headers=%v", endpoint.Name, endpoint.URL, endpoint.Timeout, endpoint.Headers) - endpoint := notifications.NewEndpoint(endpoint.Name, endpoint.URL, notifications.EndpointConfig{ - Timeout: endpoint.Timeout, - Threshold: endpoint.Threshold, - Backoff: endpoint.Backoff, - Headers: endpoint.Headers, - }) - - sinks = append(sinks, endpoint) - } - - // NOTE(stevvooe): Moving to a new queuing implementation is as easy as - // replacing broadcaster with a rabbitmq implementation. It's recommended - // that the registry instances also act as the workers to keep deployment - // simple. - app.events.sink = notifications.NewBroadcaster(sinks...) - - // Populate registry event source - hostname, err := os.Hostname() - if err != nil { - hostname = configuration.HTTP.Addr - } else { - // try to pick the port off the config - _, port, err := net.SplitHostPort(configuration.HTTP.Addr) - if err == nil { - hostname = net.JoinHostPort(hostname, port) - } - } - - app.events.source = notifications.SourceRecord{ - Addr: hostname, - InstanceID: ctxu.GetStringValue(app, "instance.id"), - } -} - -func (app *App) configureRedis(configuration *configuration.Configuration) { - if configuration.Redis.Addr == "" { - ctxu.GetLogger(app).Infof("redis not configured") - return - } - - pool := &redis.Pool{ - Dial: func() (redis.Conn, error) { - // TODO(stevvooe): Yet another use case for contextual timing. - ctx := context.WithValue(app, "redis.connect.startedat", time.Now()) - - done := func(err error) { - logger := ctxu.GetLoggerWithField(ctx, "redis.connect.duration", - ctxu.Since(ctx, "redis.connect.startedat")) - if err != nil { - logger.Errorf("redis: error connecting: %v", err) - } else { - logger.Infof("redis: connect %v", configuration.Redis.Addr) - } - } - - conn, err := redis.DialTimeout("tcp", - configuration.Redis.Addr, - configuration.Redis.DialTimeout, - configuration.Redis.ReadTimeout, - configuration.Redis.WriteTimeout) - if err != nil { - ctxu.GetLogger(app).Errorf("error connecting to redis instance %s: %v", - configuration.Redis.Addr, err) - done(err) - return nil, err - } - - // authorize the connection - if configuration.Redis.Password != "" { - if _, err = conn.Do("AUTH", configuration.Redis.Password); err != nil { - defer conn.Close() - done(err) - return nil, err - } - } - - // select the database to use - if configuration.Redis.DB != 0 { - if _, err = conn.Do("SELECT", configuration.Redis.DB); err != nil { - defer conn.Close() - done(err) - return nil, err - } - } - - done(nil) - return conn, nil - }, - MaxIdle: configuration.Redis.Pool.MaxIdle, - MaxActive: configuration.Redis.Pool.MaxActive, - IdleTimeout: configuration.Redis.Pool.IdleTimeout, - TestOnBorrow: func(c redis.Conn, t time.Time) error { - // TODO(stevvooe): We can probably do something more interesting - // here with the health package. - _, err := c.Do("PING") - return err - }, - Wait: false, // if a connection is not avialable, proceed without cache. - } - - app.redis = pool - - // setup expvar - registry := expvar.Get("registry") - if registry == nil { - registry = expvar.NewMap("registry") - } - - registry.(*expvar.Map).Set("redis", expvar.Func(func() interface{} { - return map[string]interface{}{ - "Config": configuration.Redis, - "Active": app.redis.ActiveCount(), - } - })) -} - -// configureLogHook prepares logging hook parameters. -func (app *App) configureLogHook(configuration *configuration.Configuration) { - entry, ok := ctxu.GetLogger(app).(*log.Entry) - if !ok { - // somehow, we are not using logrus - return - } - - logger := entry.Logger - - for _, configHook := range configuration.Log.Hooks { - if !configHook.Disabled { - switch configHook.Type { - case "mail": - hook := &logHook{} - hook.LevelsParam = configHook.Levels - hook.Mail = &mailer{ - Addr: configHook.MailOptions.SMTP.Addr, - Username: configHook.MailOptions.SMTP.Username, - Password: configHook.MailOptions.SMTP.Password, - Insecure: configHook.MailOptions.SMTP.Insecure, - From: configHook.MailOptions.From, - To: configHook.MailOptions.To, - } - logger.Hooks.Add(hook) - default: - } - } - } -} - -// configureSecret creates a random secret if a secret wasn't included in the -// configuration. -func (app *App) configureSecret(configuration *configuration.Configuration) { - if configuration.HTTP.Secret == "" { - var secretBytes [randomSecretSize]byte - if _, err := cryptorand.Read(secretBytes[:]); err != nil { - panic(fmt.Sprintf("could not generate random bytes for HTTP secret: %v", err)) - } - configuration.HTTP.Secret = string(secretBytes[:]) - ctxu.GetLogger(app).Warn("No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable.") - } -} - -func (app *App) ServeHTTP(w http.ResponseWriter, r *http.Request) { - defer r.Body.Close() // ensure that request body is always closed. - - // Instantiate an http context here so we can track the error codes - // returned by the request router. - ctx := defaultContextManager.context(app, w, r) - - defer func() { - status, ok := ctx.Value("http.response.status").(int) - if ok && status >= 200 && status <= 399 { - ctxu.GetResponseLogger(ctx).Infof("response completed") - } - }() - defer defaultContextManager.release(ctx) - - // NOTE(stevvooe): Total hack to get instrumented responsewriter from context. - var err error - w, err = ctxu.GetResponseWriter(ctx) - if err != nil { - ctxu.GetLogger(ctx).Warnf("response writer not found in context") - } - - // Set a header with the Docker Distribution API Version for all responses. - w.Header().Add("Docker-Distribution-API-Version", "registry/2.0") - app.router.ServeHTTP(w, r) -} - -// dispatchFunc takes a context and request and returns a constructed handler -// for the route. The dispatcher will use this to dynamically create request -// specific handlers for each endpoint without creating a new router for each -// request. -type dispatchFunc func(ctx *Context, r *http.Request) http.Handler - -// TODO(stevvooe): dispatchers should probably have some validation error -// chain with proper error reporting. - -// dispatcher returns a handler that constructs a request specific context and -// handler, using the dispatch factory function. -func (app *App) dispatcher(dispatch dispatchFunc) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - for headerName, headerValues := range app.Config.HTTP.Headers { - for _, value := range headerValues { - w.Header().Add(headerName, value) - } - } - - context := app.context(w, r) - - if err := app.authorized(w, r, context); err != nil { - ctxu.GetLogger(context).Warnf("error authorizing context: %v", err) - return - } - - // Add username to request logging - context.Context = ctxu.WithLogger(context.Context, ctxu.GetLogger(context.Context, auth.UserNameKey)) - - if app.nameRequired(r) { - nameRef, err := reference.ParseNamed(getName(context)) - if err != nil { - ctxu.GetLogger(context).Errorf("error parsing reference from context: %v", err) - context.Errors = append(context.Errors, distribution.ErrRepositoryNameInvalid{ - Name: getName(context), - Reason: err, - }) - if err := errcode.ServeJSON(w, context.Errors); err != nil { - ctxu.GetLogger(context).Errorf("error serving error json: %v (from %v)", err, context.Errors) - } - return - } - repository, err := app.registry.Repository(context, nameRef) - - if err != nil { - ctxu.GetLogger(context).Errorf("error resolving repository: %v", err) - - switch err := err.(type) { - case distribution.ErrRepositoryUnknown: - context.Errors = append(context.Errors, v2.ErrorCodeNameUnknown.WithDetail(err)) - case distribution.ErrRepositoryNameInvalid: - context.Errors = append(context.Errors, v2.ErrorCodeNameInvalid.WithDetail(err)) - } - - if err := errcode.ServeJSON(w, context.Errors); err != nil { - ctxu.GetLogger(context).Errorf("error serving error json: %v (from %v)", err, context.Errors) - } - return - } - - // assign and decorate the authorized repository with an event bridge. - context.Repository = notifications.Listen( - repository, - app.eventBridge(context, r)) - - context.Repository, err = applyRepoMiddleware(context.Context, context.Repository, app.Config.Middleware["repository"]) - if err != nil { - ctxu.GetLogger(context).Errorf("error initializing repository middleware: %v", err) - context.Errors = append(context.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - - if err := errcode.ServeJSON(w, context.Errors); err != nil { - ctxu.GetLogger(context).Errorf("error serving error json: %v (from %v)", err, context.Errors) - } - return - } - } - - dispatch(context, r).ServeHTTP(w, r) - // Automated error response handling here. Handlers may return their - // own errors if they need different behavior (such as range errors - // for layer upload). - if context.Errors.Len() > 0 { - if err := errcode.ServeJSON(w, context.Errors); err != nil { - ctxu.GetLogger(context).Errorf("error serving error json: %v (from %v)", err, context.Errors) - } - - app.logError(context, context.Errors) - } - }) -} - -func (app *App) logError(context context.Context, errors errcode.Errors) { - for _, e1 := range errors { - var c ctxu.Context - - switch e1.(type) { - case errcode.Error: - e, _ := e1.(errcode.Error) - c = ctxu.WithValue(context, "err.code", e.Code) - c = ctxu.WithValue(c, "err.message", e.Code.Message()) - c = ctxu.WithValue(c, "err.detail", e.Detail) - case errcode.ErrorCode: - e, _ := e1.(errcode.ErrorCode) - c = ctxu.WithValue(context, "err.code", e) - c = ctxu.WithValue(c, "err.message", e.Message()) - default: - // just normal go 'error' - c = ctxu.WithValue(context, "err.code", errcode.ErrorCodeUnknown) - c = ctxu.WithValue(c, "err.message", e1.Error()) - } - - c = ctxu.WithLogger(c, ctxu.GetLogger(c, - "err.code", - "err.message", - "err.detail")) - ctxu.GetResponseLogger(c).Errorf("response completed with error") - } -} - -// context constructs the context object for the application. This only be -// called once per request. -func (app *App) context(w http.ResponseWriter, r *http.Request) *Context { - ctx := defaultContextManager.context(app, w, r) - ctx = ctxu.WithVars(ctx, r) - ctx = ctxu.WithLogger(ctx, ctxu.GetLogger(ctx, - "vars.name", - "vars.reference", - "vars.digest", - "vars.uuid")) - - context := &Context{ - App: app, - Context: ctx, - } - - if app.httpHost.Scheme != "" && app.httpHost.Host != "" { - // A "host" item in the configuration takes precedence over - // X-Forwarded-Proto and X-Forwarded-Host headers, and the - // hostname in the request. - context.urlBuilder = v2.NewURLBuilder(&app.httpHost, false) - } else { - context.urlBuilder = v2.NewURLBuilderFromRequest(r, app.Config.HTTP.RelativeURLs) - } - - return context -} - -// authorized checks if the request can proceed with access to the requested -// repository. If it succeeds, the context may access the requested -// repository. An error will be returned if access is not available. -func (app *App) authorized(w http.ResponseWriter, r *http.Request, context *Context) error { - ctxu.GetLogger(context).Debug("authorizing request") - repo := getName(context) - - if app.accessController == nil { - return nil // access controller is not enabled. - } - - var accessRecords []auth.Access - - if repo != "" { - accessRecords = appendAccessRecords(accessRecords, r.Method, repo) - if fromRepo := r.FormValue("from"); fromRepo != "" { - // mounting a blob from one repository to another requires pull (GET) - // access to the source repository. - accessRecords = appendAccessRecords(accessRecords, "GET", fromRepo) - } - } else { - // Only allow the name not to be set on the base route. - if app.nameRequired(r) { - // For this to be properly secured, repo must always be set for a - // resource that may make a modification. The only condition under - // which name is not set and we still allow access is when the - // base route is accessed. This section prevents us from making - // that mistake elsewhere in the code, allowing any operation to - // proceed. - if err := errcode.ServeJSON(w, errcode.ErrorCodeUnauthorized); err != nil { - ctxu.GetLogger(context).Errorf("error serving error json: %v (from %v)", err, context.Errors) - } - return fmt.Errorf("forbidden: no repository name") - } - accessRecords = appendCatalogAccessRecord(accessRecords, r) - } - - ctx, err := app.accessController.Authorized(context.Context, accessRecords...) - if err != nil { - switch err := err.(type) { - case auth.Challenge: - // Add the appropriate WWW-Auth header - err.SetHeaders(w) - - if err := errcode.ServeJSON(w, errcode.ErrorCodeUnauthorized.WithDetail(accessRecords)); err != nil { - ctxu.GetLogger(context).Errorf("error serving error json: %v (from %v)", err, context.Errors) - } - default: - // This condition is a potential security problem either in - // the configuration or whatever is backing the access - // controller. Just return a bad request with no information - // to avoid exposure. The request should not proceed. - ctxu.GetLogger(context).Errorf("error checking authorization: %v", err) - w.WriteHeader(http.StatusBadRequest) - } - - return err - } - - // TODO(stevvooe): This pattern needs to be cleaned up a bit. One context - // should be replaced by another, rather than replacing the context on a - // mutable object. - context.Context = ctx - return nil -} - -// eventBridge returns a bridge for the current request, configured with the -// correct actor and source. -func (app *App) eventBridge(ctx *Context, r *http.Request) notifications.Listener { - actor := notifications.ActorRecord{ - Name: getUserName(ctx, r), - } - request := notifications.NewRequestRecord(ctxu.GetRequestID(ctx), r) - - return notifications.NewBridge(ctx.urlBuilder, app.events.source, actor, request, app.events.sink) -} - -// nameRequired returns true if the route requires a name. -func (app *App) nameRequired(r *http.Request) bool { - route := mux.CurrentRoute(r) - routeName := route.GetName() - return route == nil || (routeName != v2.RouteNameBase && routeName != v2.RouteNameCatalog) -} - -// apiBase implements a simple yes-man for doing overall checks against the -// api. This can support auth roundtrips to support docker login. -func apiBase(w http.ResponseWriter, r *http.Request) { - const emptyJSON = "{}" - // Provide a simple /v2/ 200 OK response with empty json response. - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.Header().Set("Content-Length", fmt.Sprint(len(emptyJSON))) - - fmt.Fprint(w, emptyJSON) -} - -// appendAccessRecords checks the method and adds the appropriate Access records to the records list. -func appendAccessRecords(records []auth.Access, method string, repo string) []auth.Access { - resource := auth.Resource{ - Type: "repository", - Name: repo, - } - - switch method { - case "GET", "HEAD": - records = append(records, - auth.Access{ - Resource: resource, - Action: "pull", - }) - case "POST", "PUT", "PATCH": - records = append(records, - auth.Access{ - Resource: resource, - Action: "pull", - }, - auth.Access{ - Resource: resource, - Action: "push", - }) - case "DELETE": - // DELETE access requires full admin rights, which is represented - // as "*". This may not be ideal. - records = append(records, - auth.Access{ - Resource: resource, - Action: "*", - }) - } - return records -} - -// Add the access record for the catalog if it's our current route -func appendCatalogAccessRecord(accessRecords []auth.Access, r *http.Request) []auth.Access { - route := mux.CurrentRoute(r) - routeName := route.GetName() - - if routeName == v2.RouteNameCatalog { - resource := auth.Resource{ - Type: "registry", - Name: "catalog", - } - - accessRecords = append(accessRecords, - auth.Access{ - Resource: resource, - Action: "*", - }) - } - return accessRecords -} - -// applyRegistryMiddleware wraps a registry instance with the configured middlewares -func applyRegistryMiddleware(ctx context.Context, registry distribution.Namespace, middlewares []configuration.Middleware) (distribution.Namespace, error) { - for _, mw := range middlewares { - rmw, err := registrymiddleware.Get(ctx, mw.Name, mw.Options, registry) - if err != nil { - return nil, fmt.Errorf("unable to configure registry middleware (%s): %s", mw.Name, err) - } - registry = rmw - } - return registry, nil - -} - -// applyRepoMiddleware wraps a repository with the configured middlewares -func applyRepoMiddleware(ctx context.Context, repository distribution.Repository, middlewares []configuration.Middleware) (distribution.Repository, error) { - for _, mw := range middlewares { - rmw, err := repositorymiddleware.Get(ctx, mw.Name, mw.Options, repository) - if err != nil { - return nil, err - } - repository = rmw - } - return repository, nil -} - -// applyStorageMiddleware wraps a storage driver with the configured middlewares -func applyStorageMiddleware(driver storagedriver.StorageDriver, middlewares []configuration.Middleware) (storagedriver.StorageDriver, error) { - for _, mw := range middlewares { - smw, err := storagemiddleware.Get(mw.Name, mw.Options, driver) - if err != nil { - return nil, fmt.Errorf("unable to configure storage middleware (%s): %v", mw.Name, err) - } - driver = smw - } - return driver, nil -} - -// uploadPurgeDefaultConfig provides a default configuration for upload -// purging to be used in the absence of configuration in the -// confifuration file -func uploadPurgeDefaultConfig() map[interface{}]interface{} { - config := map[interface{}]interface{}{} - config["enabled"] = true - config["age"] = "168h" - config["interval"] = "24h" - config["dryrun"] = false - return config -} - -func badPurgeUploadConfig(reason string) { - panic(fmt.Sprintf("Unable to parse upload purge configuration: %s", reason)) -} - -// startUploadPurger schedules a goroutine which will periodically -// check upload directories for old files and delete them -func startUploadPurger(ctx context.Context, storageDriver storagedriver.StorageDriver, log ctxu.Logger, config map[interface{}]interface{}) { - if config["enabled"] == false { - return - } - - var purgeAgeDuration time.Duration - var err error - purgeAge, ok := config["age"] - if ok { - ageStr, ok := purgeAge.(string) - if !ok { - badPurgeUploadConfig("age is not a string") - } - purgeAgeDuration, err = time.ParseDuration(ageStr) - if err != nil { - badPurgeUploadConfig(fmt.Sprintf("Cannot parse duration: %s", err.Error())) - } - } else { - badPurgeUploadConfig("age missing") - } - - var intervalDuration time.Duration - interval, ok := config["interval"] - if ok { - intervalStr, ok := interval.(string) - if !ok { - badPurgeUploadConfig("interval is not a string") - } - - intervalDuration, err = time.ParseDuration(intervalStr) - if err != nil { - badPurgeUploadConfig(fmt.Sprintf("Cannot parse interval: %s", err.Error())) - } - } else { - badPurgeUploadConfig("interval missing") - } - - var dryRunBool bool - dryRun, ok := config["dryrun"] - if ok { - dryRunBool, ok = dryRun.(bool) - if !ok { - badPurgeUploadConfig("cannot parse dryrun") - } - } else { - badPurgeUploadConfig("dryrun missing") - } - - go func() { - rand.Seed(time.Now().Unix()) - jitter := time.Duration(rand.Int()%60) * time.Minute - log.Infof("Starting upload purge in %s", jitter) - time.Sleep(jitter) - - for { - storage.PurgeUploads(ctx, storageDriver, time.Now().Add(-purgeAgeDuration), !dryRunBool) - log.Infof("Starting upload purge in %s", intervalDuration) - time.Sleep(intervalDuration) - } - }() -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/app_test.go b/vendor/github.com/docker/distribution/registry/handlers/app_test.go deleted file mode 100644 index caa7ab97e7..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/app_test.go +++ /dev/null @@ -1,274 +0,0 @@ -package handlers - -import ( - "encoding/json" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "testing" - - "github.com/docker/distribution/configuration" - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/registry/auth" - _ "github.com/docker/distribution/registry/auth/silly" - "github.com/docker/distribution/registry/storage" - memorycache "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -// TestAppDispatcher builds an application with a test dispatcher and ensures -// that requests are properly dispatched and the handlers are constructed. -// This only tests the dispatch mechanism. The underlying dispatchers must be -// tested individually. -func TestAppDispatcher(t *testing.T) { - driver := inmemory.New() - ctx := context.Background() - registry, err := storage.NewRegistry(ctx, driver, storage.BlobDescriptorCacheProvider(memorycache.NewInMemoryBlobDescriptorCacheProvider()), storage.EnableDelete, storage.EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - app := &App{ - Config: &configuration.Configuration{}, - Context: ctx, - router: v2.Router(), - driver: driver, - registry: registry, - } - server := httptest.NewServer(app) - router := v2.Router() - - serverURL, err := url.Parse(server.URL) - if err != nil { - t.Fatalf("error parsing server url: %v", err) - } - - varCheckingDispatcher := func(expectedVars map[string]string) dispatchFunc { - return func(ctx *Context, r *http.Request) http.Handler { - // Always checks the same name context - if ctx.Repository.Named().Name() != getName(ctx) { - t.Fatalf("unexpected name: %q != %q", ctx.Repository.Named().Name(), "foo/bar") - } - - // Check that we have all that is expected - for expectedK, expectedV := range expectedVars { - if ctx.Value(expectedK) != expectedV { - t.Fatalf("unexpected %s in context vars: %q != %q", expectedK, ctx.Value(expectedK), expectedV) - } - } - - // Check that we only have variables that are expected - for k, v := range ctx.Value("vars").(map[string]string) { - _, ok := expectedVars[k] - - if !ok { // name is checked on context - // We have an unexpected key, fail - t.Fatalf("unexpected key %q in vars with value %q", k, v) - } - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusOK) - }) - } - } - - // unflatten a list of variables, suitable for gorilla/mux, to a map[string]string - unflatten := func(vars []string) map[string]string { - m := make(map[string]string) - for i := 0; i < len(vars)-1; i = i + 2 { - m[vars[i]] = vars[i+1] - } - - return m - } - - for _, testcase := range []struct { - endpoint string - vars []string - }{ - { - endpoint: v2.RouteNameManifest, - vars: []string{ - "name", "foo/bar", - "reference", "sometag", - }, - }, - { - endpoint: v2.RouteNameTags, - vars: []string{ - "name", "foo/bar", - }, - }, - { - endpoint: v2.RouteNameBlobUpload, - vars: []string{ - "name", "foo/bar", - }, - }, - { - endpoint: v2.RouteNameBlobUploadChunk, - vars: []string{ - "name", "foo/bar", - "uuid", "theuuid", - }, - }, - } { - app.register(testcase.endpoint, varCheckingDispatcher(unflatten(testcase.vars))) - route := router.GetRoute(testcase.endpoint).Host(serverURL.Host) - u, err := route.URL(testcase.vars...) - - if err != nil { - t.Fatal(err) - } - - resp, err := http.Get(u.String()) - - if err != nil { - t.Fatal(err) - } - - if resp.StatusCode != http.StatusOK { - t.Fatalf("unexpected status code: %v != %v", resp.StatusCode, http.StatusOK) - } - } -} - -// TestNewApp covers the creation of an application via NewApp with a -// configuration. -func TestNewApp(t *testing.T) { - ctx := context.Background() - config := configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": nil, - }, - Auth: configuration.Auth{ - // For now, we simply test that new auth results in a viable - // application. - "silly": { - "realm": "realm-test", - "service": "service-test", - }, - }, - } - - // Mostly, with this test, given a sane configuration, we are simply - // ensuring that NewApp doesn't panic. We might want to tweak this - // behavior. - app := NewApp(ctx, &config) - - server := httptest.NewServer(app) - builder, err := v2.NewURLBuilderFromString(server.URL, false) - if err != nil { - t.Fatalf("error creating urlbuilder: %v", err) - } - - baseURL, err := builder.BuildBaseURL() - if err != nil { - t.Fatalf("error creating baseURL: %v", err) - } - - // TODO(stevvooe): The rest of this test might belong in the API tests. - - // Just hit the app and make sure we get a 401 Unauthorized error. - req, err := http.Get(baseURL) - if err != nil { - t.Fatalf("unexpected error during GET: %v", err) - } - defer req.Body.Close() - - if req.StatusCode != http.StatusUnauthorized { - t.Fatalf("unexpected status code during request: %v", err) - } - - if req.Header.Get("Content-Type") != "application/json; charset=utf-8" { - t.Fatalf("unexpected content-type: %v != %v", req.Header.Get("Content-Type"), "application/json; charset=utf-8") - } - - expectedAuthHeader := "Bearer realm=\"realm-test\",service=\"service-test\"" - if e, a := expectedAuthHeader, req.Header.Get("WWW-Authenticate"); e != a { - t.Fatalf("unexpected WWW-Authenticate header: %q != %q", e, a) - } - - var errs errcode.Errors - dec := json.NewDecoder(req.Body) - if err := dec.Decode(&errs); err != nil { - t.Fatalf("error decoding error response: %v", err) - } - - err2, ok := errs[0].(errcode.ErrorCoder) - if !ok { - t.Fatalf("not an ErrorCoder: %#v", errs[0]) - } - if err2.ErrorCode() != errcode.ErrorCodeUnauthorized { - t.Fatalf("unexpected error code: %v != %v", err2.ErrorCode(), errcode.ErrorCodeUnauthorized) - } -} - -// Test the access record accumulator -func TestAppendAccessRecords(t *testing.T) { - repo := "testRepo" - - expectedResource := auth.Resource{ - Type: "repository", - Name: repo, - } - - expectedPullRecord := auth.Access{ - Resource: expectedResource, - Action: "pull", - } - expectedPushRecord := auth.Access{ - Resource: expectedResource, - Action: "push", - } - expectedAllRecord := auth.Access{ - Resource: expectedResource, - Action: "*", - } - - records := []auth.Access{} - result := appendAccessRecords(records, "GET", repo) - expectedResult := []auth.Access{expectedPullRecord} - if ok := reflect.DeepEqual(result, expectedResult); !ok { - t.Fatalf("Actual access record differs from expected") - } - - records = []auth.Access{} - result = appendAccessRecords(records, "HEAD", repo) - expectedResult = []auth.Access{expectedPullRecord} - if ok := reflect.DeepEqual(result, expectedResult); !ok { - t.Fatalf("Actual access record differs from expected") - } - - records = []auth.Access{} - result = appendAccessRecords(records, "POST", repo) - expectedResult = []auth.Access{expectedPullRecord, expectedPushRecord} - if ok := reflect.DeepEqual(result, expectedResult); !ok { - t.Fatalf("Actual access record differs from expected") - } - - records = []auth.Access{} - result = appendAccessRecords(records, "PUT", repo) - expectedResult = []auth.Access{expectedPullRecord, expectedPushRecord} - if ok := reflect.DeepEqual(result, expectedResult); !ok { - t.Fatalf("Actual access record differs from expected") - } - - records = []auth.Access{} - result = appendAccessRecords(records, "PATCH", repo) - expectedResult = []auth.Access{expectedPullRecord, expectedPushRecord} - if ok := reflect.DeepEqual(result, expectedResult); !ok { - t.Fatalf("Actual access record differs from expected") - } - - records = []auth.Access{} - result = appendAccessRecords(records, "DELETE", repo) - expectedResult = []auth.Access{expectedAllRecord} - if ok := reflect.DeepEqual(result, expectedResult); !ok { - t.Fatalf("Actual access record differs from expected") - } - -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/basicauth.go b/vendor/github.com/docker/distribution/registry/handlers/basicauth.go deleted file mode 100644 index 8727a3cd15..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/basicauth.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build go1.4 - -package handlers - -import ( - "net/http" -) - -func basicAuth(r *http.Request) (username, password string, ok bool) { - return r.BasicAuth() -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/basicauth_prego14.go b/vendor/github.com/docker/distribution/registry/handlers/basicauth_prego14.go deleted file mode 100644 index 6cf10a25e9..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/basicauth_prego14.go +++ /dev/null @@ -1,41 +0,0 @@ -// +build !go1.4 - -package handlers - -import ( - "encoding/base64" - "net/http" - "strings" -) - -// NOTE(stevvooe): This is basic auth support from go1.4 present to ensure we -// can compile on go1.3 and earlier. - -// BasicAuth returns the username and password provided in the request's -// Authorization header, if the request uses HTTP Basic Authentication. -// See RFC 2617, Section 2. -func basicAuth(r *http.Request) (username, password string, ok bool) { - auth := r.Header.Get("Authorization") - if auth == "" { - return - } - return parseBasicAuth(auth) -} - -// parseBasicAuth parses an HTTP Basic Authentication string. -// "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" returns ("Aladdin", "open sesame", true). -func parseBasicAuth(auth string) (username, password string, ok bool) { - 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 -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/blob.go b/vendor/github.com/docker/distribution/registry/handlers/blob.go deleted file mode 100644 index fb250acd20..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/blob.go +++ /dev/null @@ -1,99 +0,0 @@ -package handlers - -import ( - "net/http" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/gorilla/handlers" -) - -// blobDispatcher uses the request context to build a blobHandler. -func blobDispatcher(ctx *Context, r *http.Request) http.Handler { - dgst, err := getDigest(ctx) - if err != nil { - - if err == errDigestNotAvailable { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx.Errors = append(ctx.Errors, v2.ErrorCodeDigestInvalid.WithDetail(err)) - }) - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx.Errors = append(ctx.Errors, v2.ErrorCodeDigestInvalid.WithDetail(err)) - }) - } - - blobHandler := &blobHandler{ - Context: ctx, - Digest: dgst, - } - - mhandler := handlers.MethodHandler{ - "GET": http.HandlerFunc(blobHandler.GetBlob), - "HEAD": http.HandlerFunc(blobHandler.GetBlob), - } - - if !ctx.readOnly { - mhandler["DELETE"] = http.HandlerFunc(blobHandler.DeleteBlob) - } - - return mhandler -} - -// blobHandler serves http blob requests. -type blobHandler struct { - *Context - - Digest digest.Digest -} - -// GetBlob fetches the binary data from backend storage returns it in the -// response. -func (bh *blobHandler) GetBlob(w http.ResponseWriter, r *http.Request) { - context.GetLogger(bh).Debug("GetBlob") - blobs := bh.Repository.Blobs(bh) - desc, err := blobs.Stat(bh, bh.Digest) - if err != nil { - if err == distribution.ErrBlobUnknown { - bh.Errors = append(bh.Errors, v2.ErrorCodeBlobUnknown.WithDetail(bh.Digest)) - } else { - bh.Errors = append(bh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - return - } - - if err := blobs.ServeBlob(bh, w, r, desc.Digest); err != nil { - context.GetLogger(bh).Debugf("unexpected error getting blob HTTP handler: %v", err) - bh.Errors = append(bh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } -} - -// DeleteBlob deletes a layer blob -func (bh *blobHandler) DeleteBlob(w http.ResponseWriter, r *http.Request) { - context.GetLogger(bh).Debug("DeleteBlob") - - blobs := bh.Repository.Blobs(bh) - err := blobs.Delete(bh, bh.Digest) - if err != nil { - switch err { - case distribution.ErrUnsupported: - bh.Errors = append(bh.Errors, errcode.ErrorCodeUnsupported) - return - case distribution.ErrBlobUnknown: - bh.Errors = append(bh.Errors, v2.ErrorCodeBlobUnknown) - return - default: - bh.Errors = append(bh.Errors, err) - context.GetLogger(bh).Errorf("Unknown error deleting blob: %s", err.Error()) - return - } - } - - w.Header().Set("Content-Length", "0") - w.WriteHeader(http.StatusAccepted) -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/blobupload.go b/vendor/github.com/docker/distribution/registry/handlers/blobupload.go deleted file mode 100644 index 673e2c591b..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/blobupload.go +++ /dev/null @@ -1,369 +0,0 @@ -package handlers - -import ( - "fmt" - "net/http" - "net/url" - - "github.com/docker/distribution" - ctxu "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/registry/storage" - "github.com/gorilla/handlers" -) - -// blobUploadDispatcher constructs and returns the blob upload handler for the -// given request context. -func blobUploadDispatcher(ctx *Context, r *http.Request) http.Handler { - buh := &blobUploadHandler{ - Context: ctx, - UUID: getUploadUUID(ctx), - } - - handler := handlers.MethodHandler{ - "GET": http.HandlerFunc(buh.GetUploadStatus), - "HEAD": http.HandlerFunc(buh.GetUploadStatus), - } - - if !ctx.readOnly { - handler["POST"] = http.HandlerFunc(buh.StartBlobUpload) - handler["PATCH"] = http.HandlerFunc(buh.PatchBlobData) - handler["PUT"] = http.HandlerFunc(buh.PutBlobUploadComplete) - handler["DELETE"] = http.HandlerFunc(buh.CancelBlobUpload) - } - - if buh.UUID != "" { - state, err := hmacKey(ctx.Config.HTTP.Secret).unpackUploadState(r.FormValue("_state")) - if err != nil { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctxu.GetLogger(ctx).Infof("error resolving upload: %v", err) - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadInvalid.WithDetail(err)) - }) - } - buh.State = state - - if state.Name != ctx.Repository.Named().Name() { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctxu.GetLogger(ctx).Infof("mismatched repository name in upload state: %q != %q", state.Name, buh.Repository.Named().Name()) - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadInvalid.WithDetail(err)) - }) - } - - if state.UUID != buh.UUID { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctxu.GetLogger(ctx).Infof("mismatched uuid in upload state: %q != %q", state.UUID, buh.UUID) - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadInvalid.WithDetail(err)) - }) - } - - blobs := ctx.Repository.Blobs(buh) - upload, err := blobs.Resume(buh, buh.UUID) - if err != nil { - ctxu.GetLogger(ctx).Errorf("error resolving upload: %v", err) - if err == distribution.ErrBlobUploadUnknown { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadUnknown.WithDetail(err)) - }) - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - }) - } - buh.Upload = upload - - if size := upload.Size(); size != buh.State.Offset { - defer upload.Close() - ctxu.GetLogger(ctx).Infof("upload resumed at wrong offest: %d != %d", size, buh.State.Offset) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadInvalid.WithDetail(err)) - upload.Cancel(buh) - }) - } - return closeResources(handler, buh.Upload) - } - - return handler -} - -// blobUploadHandler handles the http blob upload process. -type blobUploadHandler struct { - *Context - - // UUID identifies the upload instance for the current request. Using UUID - // to key blob writers since this implementation uses UUIDs. - UUID string - - Upload distribution.BlobWriter - - State blobUploadState -} - -// StartBlobUpload begins the blob upload process and allocates a server-side -// blob writer session, optionally mounting the blob from a separate repository. -func (buh *blobUploadHandler) StartBlobUpload(w http.ResponseWriter, r *http.Request) { - var options []distribution.BlobCreateOption - - fromRepo := r.FormValue("from") - mountDigest := r.FormValue("mount") - - if mountDigest != "" && fromRepo != "" { - opt, err := buh.createBlobMountOption(fromRepo, mountDigest) - if opt != nil && err == nil { - options = append(options, opt) - } - } - - blobs := buh.Repository.Blobs(buh) - upload, err := blobs.Create(buh, options...) - - if err != nil { - if ebm, ok := err.(distribution.ErrBlobMounted); ok { - if err := buh.writeBlobCreatedHeaders(w, ebm.Descriptor); err != nil { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - } else if err == distribution.ErrUnsupported { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnsupported) - } else { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - return - } - - buh.Upload = upload - defer buh.Upload.Close() - - if err := buh.blobUploadResponse(w, r, true); err != nil { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - - w.Header().Set("Docker-Upload-UUID", buh.Upload.ID()) - w.WriteHeader(http.StatusAccepted) -} - -// GetUploadStatus returns the status of a given upload, identified by id. -func (buh *blobUploadHandler) GetUploadStatus(w http.ResponseWriter, r *http.Request) { - if buh.Upload == nil { - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadUnknown) - return - } - - // TODO(dmcgowan): Set last argument to false in blobUploadResponse when - // resumable upload is supported. This will enable returning a non-zero - // range for clients to begin uploading at an offset. - if err := buh.blobUploadResponse(w, r, true); err != nil { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - - w.Header().Set("Docker-Upload-UUID", buh.UUID) - w.WriteHeader(http.StatusNoContent) -} - -// PatchBlobData writes data to an upload. -func (buh *blobUploadHandler) PatchBlobData(w http.ResponseWriter, r *http.Request) { - if buh.Upload == nil { - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadUnknown) - return - } - - ct := r.Header.Get("Content-Type") - if ct != "" && ct != "application/octet-stream" { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(fmt.Errorf("Bad Content-Type"))) - // TODO(dmcgowan): encode error - return - } - - // TODO(dmcgowan): support Content-Range header to seek and write range - - if err := copyFullPayload(w, r, buh.Upload, buh, "blob PATCH", &buh.Errors); err != nil { - // copyFullPayload reports the error if necessary - return - } - - if err := buh.blobUploadResponse(w, r, false); err != nil { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - - w.WriteHeader(http.StatusAccepted) -} - -// PutBlobUploadComplete takes the final request of a blob upload. The -// request may include all the blob data or no blob data. Any data -// provided is received and verified. If successful, the blob is linked -// into the blob store and 201 Created is returned with the canonical -// url of the blob. -func (buh *blobUploadHandler) PutBlobUploadComplete(w http.ResponseWriter, r *http.Request) { - if buh.Upload == nil { - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadUnknown) - return - } - - dgstStr := r.FormValue("digest") // TODO(stevvooe): Support multiple digest parameters! - - if dgstStr == "" { - // no digest? return error, but allow retry. - buh.Errors = append(buh.Errors, v2.ErrorCodeDigestInvalid.WithDetail("digest missing")) - return - } - - dgst, err := digest.ParseDigest(dgstStr) - if err != nil { - // no digest? return error, but allow retry. - buh.Errors = append(buh.Errors, v2.ErrorCodeDigestInvalid.WithDetail("digest parsing failed")) - return - } - - if err := copyFullPayload(w, r, buh.Upload, buh, "blob PUT", &buh.Errors); err != nil { - // copyFullPayload reports the error if necessary - return - } - - size := buh.Upload.Size() - - desc, err := buh.Upload.Commit(buh, distribution.Descriptor{ - Digest: dgst, - Size: size, - - // TODO(stevvooe): This isn't wildly important yet, but we should - // really set the mediatype. For now, we can let the backend take care - // of this. - }) - - if err != nil { - switch err := err.(type) { - case distribution.ErrBlobInvalidDigest: - buh.Errors = append(buh.Errors, v2.ErrorCodeDigestInvalid.WithDetail(err)) - default: - switch err { - case distribution.ErrAccessDenied: - buh.Errors = append(buh.Errors, errcode.ErrorCodeDenied) - case distribution.ErrUnsupported: - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnsupported) - case distribution.ErrBlobInvalidLength, distribution.ErrBlobDigestUnsupported: - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadInvalid.WithDetail(err)) - default: - ctxu.GetLogger(buh).Errorf("unknown error completing upload: %#v", err) - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - - } - - // Clean up the backend blob data if there was an error. - if err := buh.Upload.Cancel(buh); err != nil { - // If the cleanup fails, all we can do is observe and report. - ctxu.GetLogger(buh).Errorf("error canceling upload after error: %v", err) - } - - return - } - if err := buh.writeBlobCreatedHeaders(w, desc); err != nil { - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } -} - -// CancelBlobUpload cancels an in-progress upload of a blob. -func (buh *blobUploadHandler) CancelBlobUpload(w http.ResponseWriter, r *http.Request) { - if buh.Upload == nil { - buh.Errors = append(buh.Errors, v2.ErrorCodeBlobUploadUnknown) - return - } - - w.Header().Set("Docker-Upload-UUID", buh.UUID) - if err := buh.Upload.Cancel(buh); err != nil { - ctxu.GetLogger(buh).Errorf("error encountered canceling upload: %v", err) - buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - - w.WriteHeader(http.StatusNoContent) -} - -// blobUploadResponse provides a standard request for uploading blobs and -// chunk responses. This sets the correct headers but the response status is -// left to the caller. The fresh argument is used to ensure that new blob -// uploads always start at a 0 offset. This allows disabling resumable push by -// always returning a 0 offset on check status. -func (buh *blobUploadHandler) blobUploadResponse(w http.ResponseWriter, r *http.Request, fresh bool) error { - // TODO(stevvooe): Need a better way to manage the upload state automatically. - buh.State.Name = buh.Repository.Named().Name() - buh.State.UUID = buh.Upload.ID() - buh.State.Offset = buh.Upload.Size() - buh.State.StartedAt = buh.Upload.StartedAt() - - token, err := hmacKey(buh.Config.HTTP.Secret).packUploadState(buh.State) - if err != nil { - ctxu.GetLogger(buh).Infof("error building upload state token: %s", err) - return err - } - - uploadURL, err := buh.urlBuilder.BuildBlobUploadChunkURL( - buh.Repository.Named(), buh.Upload.ID(), - url.Values{ - "_state": []string{token}, - }) - if err != nil { - ctxu.GetLogger(buh).Infof("error building upload url: %s", err) - return err - } - - endRange := buh.Upload.Size() - if endRange > 0 { - endRange = endRange - 1 - } - - w.Header().Set("Docker-Upload-UUID", buh.UUID) - w.Header().Set("Location", uploadURL) - - w.Header().Set("Content-Length", "0") - w.Header().Set("Range", fmt.Sprintf("0-%d", endRange)) - - return nil -} - -// mountBlob attempts to mount a blob from another repository by its digest. If -// successful, the blob is linked into the blob store and 201 Created is -// returned with the canonical url of the blob. -func (buh *blobUploadHandler) createBlobMountOption(fromRepo, mountDigest string) (distribution.BlobCreateOption, error) { - dgst, err := digest.ParseDigest(mountDigest) - if err != nil { - return nil, err - } - - ref, err := reference.ParseNamed(fromRepo) - if err != nil { - return nil, err - } - - canonical, err := reference.WithDigest(ref, dgst) - if err != nil { - return nil, err - } - - return storage.WithMountFrom(canonical), nil -} - -// writeBlobCreatedHeaders writes the standard headers describing a newly -// created blob. A 201 Created is written as well as the canonical URL and -// blob digest. -func (buh *blobUploadHandler) writeBlobCreatedHeaders(w http.ResponseWriter, desc distribution.Descriptor) error { - ref, err := reference.WithDigest(buh.Repository.Named(), desc.Digest) - if err != nil { - return err - } - blobURL, err := buh.urlBuilder.BuildBlobURL(ref) - if err != nil { - return err - } - - w.Header().Set("Location", blobURL) - w.Header().Set("Content-Length", "0") - w.Header().Set("Docker-Content-Digest", desc.Digest.String()) - w.WriteHeader(http.StatusCreated) - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/catalog.go b/vendor/github.com/docker/distribution/registry/handlers/catalog.go deleted file mode 100644 index 6ec1fe5501..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/catalog.go +++ /dev/null @@ -1,95 +0,0 @@ -package handlers - -import ( - "encoding/json" - "fmt" - "io" - "net/http" - "net/url" - "strconv" - - "github.com/docker/distribution/registry/api/errcode" - "github.com/gorilla/handlers" -) - -const maximumReturnedEntries = 100 - -func catalogDispatcher(ctx *Context, r *http.Request) http.Handler { - catalogHandler := &catalogHandler{ - Context: ctx, - } - - return handlers.MethodHandler{ - "GET": http.HandlerFunc(catalogHandler.GetCatalog), - } -} - -type catalogHandler struct { - *Context -} - -type catalogAPIResponse struct { - Repositories []string `json:"repositories"` -} - -func (ch *catalogHandler) GetCatalog(w http.ResponseWriter, r *http.Request) { - var moreEntries = true - - q := r.URL.Query() - lastEntry := q.Get("last") - maxEntries, err := strconv.Atoi(q.Get("n")) - if err != nil || maxEntries < 0 { - maxEntries = maximumReturnedEntries - } - - repos := make([]string, maxEntries) - - filled, err := ch.App.registry.Repositories(ch.Context, repos, lastEntry) - if err == io.EOF { - moreEntries = false - } else if err != nil { - ch.Errors = append(ch.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - - w.Header().Set("Content-Type", "application/json; charset=utf-8") - - // Add a link header if there are more entries to retrieve - if moreEntries { - lastEntry = repos[len(repos)-1] - urlStr, err := createLinkEntry(r.URL.String(), maxEntries, lastEntry) - if err != nil { - ch.Errors = append(ch.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - w.Header().Set("Link", urlStr) - } - - enc := json.NewEncoder(w) - if err := enc.Encode(catalogAPIResponse{ - Repositories: repos[0:filled], - }); err != nil { - ch.Errors = append(ch.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } -} - -// Use the original URL from the request to create a new URL for -// the link header -func createLinkEntry(origURL string, maxEntries int, lastEntry string) (string, error) { - calledURL, err := url.Parse(origURL) - if err != nil { - return "", err - } - - v := url.Values{} - v.Add("n", strconv.Itoa(maxEntries)) - v.Add("last", lastEntry) - - calledURL.RawQuery = v.Encode() - - calledURL.Fragment = "" - urlStr := fmt.Sprintf("<%s>; rel=\"next\"", calledURL.String()) - - return urlStr, nil -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/context.go b/vendor/github.com/docker/distribution/registry/handlers/context.go deleted file mode 100644 index 552db2df62..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/context.go +++ /dev/null @@ -1,152 +0,0 @@ -package handlers - -import ( - "fmt" - "net/http" - "sync" - - "github.com/docker/distribution" - ctxu "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/docker/distribution/registry/auth" - "golang.org/x/net/context" -) - -// Context should contain the request specific context for use in across -// handlers. Resources that don't need to be shared across handlers should not -// be on this object. -type Context struct { - // App points to the application structure that created this context. - *App - context.Context - - // Repository is the repository for the current request. All requests - // should be scoped to a single repository. This field may be nil. - Repository distribution.Repository - - // Errors is a collection of errors encountered during the request to be - // returned to the client API. If errors are added to the collection, the - // handler *must not* start the response via http.ResponseWriter. - Errors errcode.Errors - - urlBuilder *v2.URLBuilder - - // TODO(stevvooe): The goal is too completely factor this context and - // dispatching out of the web application. Ideally, we should lean on - // context.Context for injection of these resources. -} - -// Value overrides context.Context.Value to ensure that calls are routed to -// correct context. -func (ctx *Context) Value(key interface{}) interface{} { - return ctx.Context.Value(key) -} - -func getName(ctx context.Context) (name string) { - return ctxu.GetStringValue(ctx, "vars.name") -} - -func getReference(ctx context.Context) (reference string) { - return ctxu.GetStringValue(ctx, "vars.reference") -} - -var errDigestNotAvailable = fmt.Errorf("digest not available in context") - -func getDigest(ctx context.Context) (dgst digest.Digest, err error) { - dgstStr := ctxu.GetStringValue(ctx, "vars.digest") - - if dgstStr == "" { - ctxu.GetLogger(ctx).Errorf("digest not available") - return "", errDigestNotAvailable - } - - d, err := digest.ParseDigest(dgstStr) - if err != nil { - ctxu.GetLogger(ctx).Errorf("error parsing digest=%q: %v", dgstStr, err) - return "", err - } - - return d, nil -} - -func getUploadUUID(ctx context.Context) (uuid string) { - return ctxu.GetStringValue(ctx, "vars.uuid") -} - -// getUserName attempts to resolve a username from the context and request. If -// a username cannot be resolved, the empty string is returned. -func getUserName(ctx context.Context, r *http.Request) string { - username := ctxu.GetStringValue(ctx, auth.UserNameKey) - - // Fallback to request user with basic auth - if username == "" { - var ok bool - uname, _, ok := basicAuth(r) - if ok { - username = uname - } - } - - return username -} - -// contextManager allows us to associate net/context.Context instances with a -// request, based on the memory identity of http.Request. This prepares http- -// level context, which is not application specific. If this is called, -// (*contextManager).release must be called on the context when the request is -// completed. -// -// Providing this circumvents a lot of necessity for dispatchers with the -// benefit of instantiating the request context much earlier. -// -// TODO(stevvooe): Consider making this facility a part of the context package. -type contextManager struct { - contexts map[*http.Request]context.Context - mu sync.Mutex -} - -// defaultContextManager is just a global instance to register request contexts. -var defaultContextManager = newContextManager() - -func newContextManager() *contextManager { - return &contextManager{ - contexts: make(map[*http.Request]context.Context), - } -} - -// context either returns a new context or looks it up in the manager. -func (cm *contextManager) context(parent context.Context, w http.ResponseWriter, r *http.Request) context.Context { - cm.mu.Lock() - defer cm.mu.Unlock() - - ctx, ok := cm.contexts[r] - if ok { - return ctx - } - - if parent == nil { - parent = ctxu.Background() - } - - ctx = ctxu.WithRequest(parent, r) - ctx, w = ctxu.WithResponseWriter(ctx, w) - ctx = ctxu.WithLogger(ctx, ctxu.GetRequestLogger(ctx)) - cm.contexts[r] = ctx - - return ctx -} - -// releases frees any associated with resources from request. -func (cm *contextManager) release(ctx context.Context) { - cm.mu.Lock() - defer cm.mu.Unlock() - - r, err := ctxu.GetRequest(ctx) - if err != nil { - ctxu.GetLogger(ctx).Errorf("no request found in context during release") - return - } - delete(cm.contexts, r) -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/health_test.go b/vendor/github.com/docker/distribution/registry/handlers/health_test.go deleted file mode 100644 index 5fe65edefc..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/health_test.go +++ /dev/null @@ -1,201 +0,0 @@ -package handlers - -import ( - "io/ioutil" - "net" - "net/http" - "net/http/httptest" - "os" - "testing" - "time" - - "github.com/docker/distribution/configuration" - "github.com/docker/distribution/context" - "github.com/docker/distribution/health" -) - -func TestFileHealthCheck(t *testing.T) { - interval := time.Second - - tmpfile, err := ioutil.TempFile(os.TempDir(), "healthcheck") - if err != nil { - t.Fatalf("could not create temporary file: %v", err) - } - defer tmpfile.Close() - - config := &configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - Health: configuration.Health{ - FileCheckers: []configuration.FileChecker{ - { - Interval: interval, - File: tmpfile.Name(), - }, - }, - }, - } - - ctx := context.Background() - - app := NewApp(ctx, config) - healthRegistry := health.NewRegistry() - app.RegisterHealthChecks(healthRegistry) - - // Wait for health check to happen - <-time.After(2 * interval) - - status := healthRegistry.CheckStatus() - if len(status) != 1 { - t.Fatal("expected 1 item in health check results") - } - if status[tmpfile.Name()] != "file exists" { - t.Fatal(`did not get "file exists" result for health check`) - } - - os.Remove(tmpfile.Name()) - - <-time.After(2 * interval) - if len(healthRegistry.CheckStatus()) != 0 { - t.Fatal("expected 0 items in health check results") - } -} - -func TestTCPHealthCheck(t *testing.T) { - interval := time.Second - - ln, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Fatalf("could not create listener: %v", err) - } - addrStr := ln.Addr().String() - - // Start accepting - go func() { - for { - conn, err := ln.Accept() - if err != nil { - // listener was closed - return - } - defer conn.Close() - } - }() - - config := &configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - Health: configuration.Health{ - TCPCheckers: []configuration.TCPChecker{ - { - Interval: interval, - Addr: addrStr, - Timeout: 500 * time.Millisecond, - }, - }, - }, - } - - ctx := context.Background() - - app := NewApp(ctx, config) - healthRegistry := health.NewRegistry() - app.RegisterHealthChecks(healthRegistry) - - // Wait for health check to happen - <-time.After(2 * interval) - - if len(healthRegistry.CheckStatus()) != 0 { - t.Fatal("expected 0 items in health check results") - } - - ln.Close() - <-time.After(2 * interval) - - // Health check should now fail - status := healthRegistry.CheckStatus() - if len(status) != 1 { - t.Fatal("expected 1 item in health check results") - } - if status[addrStr] != "connection to "+addrStr+" failed" { - t.Fatal(`did not get "connection failed" result for health check`) - } -} - -func TestHTTPHealthCheck(t *testing.T) { - interval := time.Second - threshold := 3 - - stopFailing := make(chan struct{}) - - checkedServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method != "HEAD" { - t.Fatalf("expected HEAD request, got %s", r.Method) - } - select { - case <-stopFailing: - w.WriteHeader(http.StatusOK) - default: - w.WriteHeader(http.StatusInternalServerError) - } - })) - - config := &configuration.Configuration{ - Storage: configuration.Storage{ - "inmemory": configuration.Parameters{}, - }, - Health: configuration.Health{ - HTTPCheckers: []configuration.HTTPChecker{ - { - Interval: interval, - URI: checkedServer.URL, - Threshold: threshold, - }, - }, - }, - } - - ctx := context.Background() - - app := NewApp(ctx, config) - healthRegistry := health.NewRegistry() - app.RegisterHealthChecks(healthRegistry) - - for i := 0; ; i++ { - <-time.After(interval) - - status := healthRegistry.CheckStatus() - - if i < threshold-1 { - // definitely shouldn't have hit the threshold yet - if len(status) != 0 { - t.Fatal("expected 1 item in health check results") - } - continue - } - if i < threshold+1 { - // right on the threshold - don't expect a failure yet - continue - } - - if len(status) != 1 { - t.Fatal("expected 1 item in health check results") - } - if status[checkedServer.URL] != "downstream service returned unexpected status: 500" { - t.Fatal("did not get expected result for health check") - } - - break - } - - // Signal HTTP handler to start returning 200 - close(stopFailing) - - <-time.After(2 * interval) - - if len(healthRegistry.CheckStatus()) != 0 { - t.Fatal("expected 0 items in health check results") - } -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/helpers.go b/vendor/github.com/docker/distribution/registry/handlers/helpers.go deleted file mode 100644 index b56c15668a..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/helpers.go +++ /dev/null @@ -1,66 +0,0 @@ -package handlers - -import ( - "errors" - "io" - "net/http" - - ctxu "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/api/errcode" -) - -// closeResources closes all the provided resources after running the target -// handler. -func closeResources(handler http.Handler, closers ...io.Closer) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - for _, closer := range closers { - defer closer.Close() - } - handler.ServeHTTP(w, r) - }) -} - -// copyFullPayload copies the payload of a HTTP request to destWriter. If it -// receives less content than expected, and the client disconnected during the -// upload, it avoids sending a 400 error to keep the logs cleaner. -func copyFullPayload(responseWriter http.ResponseWriter, r *http.Request, destWriter io.Writer, context ctxu.Context, action string, errSlice *errcode.Errors) error { - // Get a channel that tells us if the client disconnects - var clientClosed <-chan bool - if notifier, ok := responseWriter.(http.CloseNotifier); ok { - clientClosed = notifier.CloseNotify() - } else { - ctxu.GetLogger(context).Warnf("the ResponseWriter does not implement CloseNotifier (type: %T)", responseWriter) - } - - // Read in the data, if any. - copied, err := io.Copy(destWriter, r.Body) - if clientClosed != nil && (err != nil || (r.ContentLength > 0 && copied < r.ContentLength)) { - // Didn't receive as much content as expected. Did the client - // disconnect during the request? If so, avoid returning a 400 - // error to keep the logs cleaner. - select { - case <-clientClosed: - // Set the response code to "499 Client Closed Request" - // Even though the connection has already been closed, - // this causes the logger to pick up a 499 error - // instead of showing 0 for the HTTP status. - responseWriter.WriteHeader(499) - - ctxu.GetLoggerWithFields(context, map[interface{}]interface{}{ - "error": err, - "copied": copied, - "contentLength": r.ContentLength, - }, "error", "copied", "contentLength").Error("client disconnected during " + action) - return errors.New("client disconnected") - default: - } - } - - if err != nil { - ctxu.GetLogger(context).Errorf("unknown error reading request payload: %v", err) - *errSlice = append(*errSlice, errcode.ErrorCodeUnknown.WithDetail(err)) - return err - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/hmac.go b/vendor/github.com/docker/distribution/registry/handlers/hmac.go deleted file mode 100644 index 1725d240b2..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/hmac.go +++ /dev/null @@ -1,72 +0,0 @@ -package handlers - -import ( - "crypto/hmac" - "crypto/sha256" - "encoding/base64" - "encoding/json" - "fmt" - "time" -) - -// blobUploadState captures the state serializable state of the blob upload. -type blobUploadState struct { - // name is the primary repository under which the blob will be linked. - Name string - - // UUID identifies the upload. - UUID string - - // offset contains the current progress of the upload. - Offset int64 - - // StartedAt is the original start time of the upload. - StartedAt time.Time -} - -type hmacKey string - -// unpackUploadState unpacks and validates the blob upload state from the -// token, using the hmacKey secret. -func (secret hmacKey) unpackUploadState(token string) (blobUploadState, error) { - var state blobUploadState - - tokenBytes, err := base64.URLEncoding.DecodeString(token) - if err != nil { - return state, err - } - mac := hmac.New(sha256.New, []byte(secret)) - - if len(tokenBytes) < mac.Size() { - return state, fmt.Errorf("Invalid token") - } - - macBytes := tokenBytes[:mac.Size()] - messageBytes := tokenBytes[mac.Size():] - - mac.Write(messageBytes) - if !hmac.Equal(mac.Sum(nil), macBytes) { - return state, fmt.Errorf("Invalid token") - } - - if err := json.Unmarshal(messageBytes, &state); err != nil { - return state, err - } - - return state, nil -} - -// packUploadState packs the upload state signed with and hmac digest using -// the hmacKey secret, encoding to url safe base64. The resulting token can be -// used to share data with minimized risk of external tampering. -func (secret hmacKey) packUploadState(lus blobUploadState) (string, error) { - mac := hmac.New(sha256.New, []byte(secret)) - p, err := json.Marshal(lus) - if err != nil { - return "", err - } - - mac.Write(p) - - return base64.URLEncoding.EncodeToString(append(mac.Sum(nil), p...)), nil -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/hmac_test.go b/vendor/github.com/docker/distribution/registry/handlers/hmac_test.go deleted file mode 100644 index 366c7279e7..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/hmac_test.go +++ /dev/null @@ -1,117 +0,0 @@ -package handlers - -import "testing" - -var blobUploadStates = []blobUploadState{ - { - Name: "hello", - UUID: "abcd-1234-qwer-0987", - Offset: 0, - }, - { - Name: "hello-world", - UUID: "abcd-1234-qwer-0987", - Offset: 0, - }, - { - Name: "h3ll0_w0rld", - UUID: "abcd-1234-qwer-0987", - Offset: 1337, - }, - { - Name: "ABCDEFG", - UUID: "ABCD-1234-QWER-0987", - Offset: 1234567890, - }, - { - Name: "this-is-A-sort-of-Long-name-for-Testing", - UUID: "dead-1234-beef-0987", - Offset: 8675309, - }, -} - -var secrets = []string{ - "supersecret", - "12345", - "a", - "SuperSecret", - "Sup3r... S3cr3t!", - "This is a reasonably long secret key that is used for the purpose of testing.", - "\u2603+\u2744", // snowman+snowflake -} - -// TestLayerUploadTokens constructs stateTokens from LayerUploadStates and -// validates that the tokens can be used to reconstruct the proper upload state. -func TestLayerUploadTokens(t *testing.T) { - secret := hmacKey("supersecret") - - for _, testcase := range blobUploadStates { - token, err := secret.packUploadState(testcase) - if err != nil { - t.Fatal(err) - } - - lus, err := secret.unpackUploadState(token) - if err != nil { - t.Fatal(err) - } - - assertBlobUploadStateEquals(t, testcase, lus) - } -} - -// TestHMACValidate ensures that any HMAC token providers are compatible if and -// only if they share the same secret. -func TestHMACValidation(t *testing.T) { - for _, secret := range secrets { - secret1 := hmacKey(secret) - secret2 := hmacKey(secret) - badSecret := hmacKey("DifferentSecret") - - for _, testcase := range blobUploadStates { - token, err := secret1.packUploadState(testcase) - if err != nil { - t.Fatal(err) - } - - lus, err := secret2.unpackUploadState(token) - if err != nil { - t.Fatal(err) - } - - assertBlobUploadStateEquals(t, testcase, lus) - - _, err = badSecret.unpackUploadState(token) - if err == nil { - t.Fatalf("Expected token provider to fail at retrieving state from token: %s", token) - } - - badToken, err := badSecret.packUploadState(lus) - if err != nil { - t.Fatal(err) - } - - _, err = secret1.unpackUploadState(badToken) - if err == nil { - t.Fatalf("Expected token provider to fail at retrieving state from token: %s", badToken) - } - - _, err = secret2.unpackUploadState(badToken) - if err == nil { - t.Fatalf("Expected token provider to fail at retrieving state from token: %s", badToken) - } - } - } -} - -func assertBlobUploadStateEquals(t *testing.T, expected blobUploadState, received blobUploadState) { - if expected.Name != received.Name { - t.Fatalf("Expected Name=%q, Received Name=%q", expected.Name, received.Name) - } - if expected.UUID != received.UUID { - t.Fatalf("Expected UUID=%q, Received UUID=%q", expected.UUID, received.UUID) - } - if expected.Offset != received.Offset { - t.Fatalf("Expected Offset=%d, Received Offset=%d", expected.Offset, received.Offset) - } -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/hooks.go b/vendor/github.com/docker/distribution/registry/handlers/hooks.go deleted file mode 100644 index 7bbab4f8a3..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/hooks.go +++ /dev/null @@ -1,53 +0,0 @@ -package handlers - -import ( - "bytes" - "errors" - "fmt" - "strings" - "text/template" - - "github.com/Sirupsen/logrus" -) - -// logHook is for hooking Panic in web application -type logHook struct { - LevelsParam []string - Mail *mailer -} - -// Fire forwards an error to LogHook -func (hook *logHook) Fire(entry *logrus.Entry) error { - addr := strings.Split(hook.Mail.Addr, ":") - if len(addr) != 2 { - return errors.New("Invalid Mail Address") - } - host := addr[0] - subject := fmt.Sprintf("[%s] %s: %s", entry.Level, host, entry.Message) - - html := ` - {{.Message}} - - {{range $key, $value := .Data}} - {{$key}}: {{$value}} - {{end}} - ` - b := bytes.NewBuffer(make([]byte, 0)) - t := template.Must(template.New("mail body").Parse(html)) - if err := t.Execute(b, entry); err != nil { - return err - } - body := fmt.Sprintf("%s", b) - - return hook.Mail.sendMail(subject, body) -} - -// Levels contains hook levels to be catched -func (hook *logHook) Levels() []logrus.Level { - levels := []logrus.Level{} - for _, v := range hook.LevelsParam { - lv, _ := logrus.ParseLevel(v) - levels = append(levels, lv) - } - return levels -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/images.go b/vendor/github.com/docker/distribution/registry/handlers/images.go deleted file mode 100644 index 5f2d885592..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/images.go +++ /dev/null @@ -1,368 +0,0 @@ -package handlers - -import ( - "bytes" - "fmt" - "net/http" - - "github.com/docker/distribution" - ctxu "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest/manifestlist" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/manifest/schema2" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/gorilla/handlers" -) - -// These constants determine which architecture and OS to choose from a -// manifest list when downconverting it to a schema1 manifest. -const ( - defaultArch = "amd64" - defaultOS = "linux" -) - -// imageManifestDispatcher takes the request context and builds the -// appropriate handler for handling image manifest requests. -func imageManifestDispatcher(ctx *Context, r *http.Request) http.Handler { - imageManifestHandler := &imageManifestHandler{ - Context: ctx, - } - reference := getReference(ctx) - dgst, err := digest.ParseDigest(reference) - if err != nil { - // We just have a tag - imageManifestHandler.Tag = reference - } else { - imageManifestHandler.Digest = dgst - } - - mhandler := handlers.MethodHandler{ - "GET": http.HandlerFunc(imageManifestHandler.GetImageManifest), - "HEAD": http.HandlerFunc(imageManifestHandler.GetImageManifest), - } - - if !ctx.readOnly { - mhandler["PUT"] = http.HandlerFunc(imageManifestHandler.PutImageManifest) - mhandler["DELETE"] = http.HandlerFunc(imageManifestHandler.DeleteImageManifest) - } - - return mhandler -} - -// imageManifestHandler handles http operations on image manifests. -type imageManifestHandler struct { - *Context - - // One of tag or digest gets set, depending on what is present in context. - Tag string - Digest digest.Digest -} - -// GetImageManifest fetches the image manifest from the storage backend, if it exists. -func (imh *imageManifestHandler) GetImageManifest(w http.ResponseWriter, r *http.Request) { - ctxu.GetLogger(imh).Debug("GetImageManifest") - manifests, err := imh.Repository.Manifests(imh) - if err != nil { - imh.Errors = append(imh.Errors, err) - return - } - - var manifest distribution.Manifest - if imh.Tag != "" { - tags := imh.Repository.Tags(imh) - desc, err := tags.Get(imh, imh.Tag) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestUnknown.WithDetail(err)) - return - } - imh.Digest = desc.Digest - } - - if etagMatch(r, imh.Digest.String()) { - w.WriteHeader(http.StatusNotModified) - return - } - - var options []distribution.ManifestServiceOption - if imh.Tag != "" { - options = append(options, distribution.WithTag(imh.Tag)) - } - manifest, err = manifests.Get(imh, imh.Digest, options...) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestUnknown.WithDetail(err)) - return - } - - supportsSchema2 := false - supportsManifestList := false - if acceptHeaders, ok := r.Header["Accept"]; ok { - for _, mediaType := range acceptHeaders { - if mediaType == schema2.MediaTypeManifest { - supportsSchema2 = true - } - if mediaType == manifestlist.MediaTypeManifestList { - supportsManifestList = true - } - } - } - - schema2Manifest, isSchema2 := manifest.(*schema2.DeserializedManifest) - manifestList, isManifestList := manifest.(*manifestlist.DeserializedManifestList) - - // Only rewrite schema2 manifests when they are being fetched by tag. - // If they are being fetched by digest, we can't return something not - // matching the digest. - if imh.Tag != "" && isSchema2 && !supportsSchema2 { - // Rewrite manifest in schema1 format - ctxu.GetLogger(imh).Infof("rewriting manifest %s in schema1 format to support old client", imh.Digest.String()) - - manifest, err = imh.convertSchema2Manifest(schema2Manifest) - if err != nil { - return - } - } else if imh.Tag != "" && isManifestList && !supportsManifestList { - // Rewrite manifest in schema1 format - ctxu.GetLogger(imh).Infof("rewriting manifest list %s in schema1 format to support old client", imh.Digest.String()) - - // Find the image manifest corresponding to the default - // platform - var manifestDigest digest.Digest - for _, manifestDescriptor := range manifestList.Manifests { - if manifestDescriptor.Platform.Architecture == defaultArch && manifestDescriptor.Platform.OS == defaultOS { - manifestDigest = manifestDescriptor.Digest - break - } - } - - if manifestDigest == "" { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestUnknown) - return - } - - manifest, err = manifests.Get(imh, manifestDigest) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestUnknown.WithDetail(err)) - return - } - - // If necessary, convert the image manifest - if schema2Manifest, isSchema2 := manifest.(*schema2.DeserializedManifest); isSchema2 && !supportsSchema2 { - manifest, err = imh.convertSchema2Manifest(schema2Manifest) - if err != nil { - return - } - } - } - - ct, p, err := manifest.Payload() - if err != nil { - return - } - - w.Header().Set("Content-Type", ct) - w.Header().Set("Content-Length", fmt.Sprint(len(p))) - w.Header().Set("Docker-Content-Digest", imh.Digest.String()) - w.Header().Set("Etag", fmt.Sprintf(`"%s"`, imh.Digest)) - w.Write(p) -} - -func (imh *imageManifestHandler) convertSchema2Manifest(schema2Manifest *schema2.DeserializedManifest) (distribution.Manifest, error) { - targetDescriptor := schema2Manifest.Target() - blobs := imh.Repository.Blobs(imh) - configJSON, err := blobs.Get(imh, targetDescriptor.Digest) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestInvalid.WithDetail(err)) - return nil, err - } - - ref := imh.Repository.Named() - - if imh.Tag != "" { - ref, err = reference.WithTag(ref, imh.Tag) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeTagInvalid.WithDetail(err)) - return nil, err - } - } - - builder := schema1.NewConfigManifestBuilder(imh.Repository.Blobs(imh), imh.Context.App.trustKey, ref, configJSON) - for _, d := range schema2Manifest.References() { - if err := builder.AppendReference(d); err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestInvalid.WithDetail(err)) - return nil, err - } - } - manifest, err := builder.Build(imh) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestInvalid.WithDetail(err)) - return nil, err - } - imh.Digest = digest.FromBytes(manifest.(*schema1.SignedManifest).Canonical) - - return manifest, nil -} - -func etagMatch(r *http.Request, etag string) bool { - for _, headerVal := range r.Header["If-None-Match"] { - if headerVal == etag || headerVal == fmt.Sprintf(`"%s"`, etag) { // allow quoted or unquoted - return true - } - } - return false -} - -// PutImageManifest validates and stores an image in the registry. -func (imh *imageManifestHandler) PutImageManifest(w http.ResponseWriter, r *http.Request) { - ctxu.GetLogger(imh).Debug("PutImageManifest") - manifests, err := imh.Repository.Manifests(imh) - if err != nil { - imh.Errors = append(imh.Errors, err) - return - } - - var jsonBuf bytes.Buffer - if err := copyFullPayload(w, r, &jsonBuf, imh, "image manifest PUT", &imh.Errors); err != nil { - // copyFullPayload reports the error if necessary - return - } - - mediaType := r.Header.Get("Content-Type") - manifest, desc, err := distribution.UnmarshalManifest(mediaType, jsonBuf.Bytes()) - if err != nil { - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestInvalid.WithDetail(err)) - return - } - - if imh.Digest != "" { - if desc.Digest != imh.Digest { - ctxu.GetLogger(imh).Errorf("payload digest does match: %q != %q", desc.Digest, imh.Digest) - imh.Errors = append(imh.Errors, v2.ErrorCodeDigestInvalid) - return - } - } else if imh.Tag != "" { - imh.Digest = desc.Digest - } else { - imh.Errors = append(imh.Errors, v2.ErrorCodeTagInvalid.WithDetail("no tag or digest specified")) - return - } - - var options []distribution.ManifestServiceOption - if imh.Tag != "" { - options = append(options, distribution.WithTag(imh.Tag)) - } - _, err = manifests.Put(imh, manifest, options...) - if err != nil { - // TODO(stevvooe): These error handling switches really need to be - // handled by an app global mapper. - if err == distribution.ErrUnsupported { - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnsupported) - return - } - if err == distribution.ErrAccessDenied { - imh.Errors = append(imh.Errors, errcode.ErrorCodeDenied) - return - } - switch err := err.(type) { - case distribution.ErrManifestVerification: - for _, verificationError := range err { - switch verificationError := verificationError.(type) { - case distribution.ErrManifestBlobUnknown: - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestBlobUnknown.WithDetail(verificationError.Digest)) - case distribution.ErrManifestNameInvalid: - imh.Errors = append(imh.Errors, v2.ErrorCodeNameInvalid.WithDetail(err)) - case distribution.ErrManifestUnverified: - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestUnverified) - default: - if verificationError == digest.ErrDigestInvalidFormat { - imh.Errors = append(imh.Errors, v2.ErrorCodeDigestInvalid) - } else { - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnknown, verificationError) - } - } - } - default: - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - - return - } - - // Tag this manifest - if imh.Tag != "" { - tags := imh.Repository.Tags(imh) - err = tags.Tag(imh, imh.Tag, desc) - if err != nil { - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - - } - - // Construct a canonical url for the uploaded manifest. - ref, err := reference.WithDigest(imh.Repository.Named(), imh.Digest) - if err != nil { - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } - - location, err := imh.urlBuilder.BuildManifestURL(ref) - if err != nil { - // NOTE(stevvooe): Given the behavior above, this absurdly unlikely to - // happen. We'll log the error here but proceed as if it worked. Worst - // case, we set an empty location header. - ctxu.GetLogger(imh).Errorf("error building manifest url from digest: %v", err) - } - - w.Header().Set("Location", location) - w.Header().Set("Docker-Content-Digest", imh.Digest.String()) - w.WriteHeader(http.StatusCreated) -} - -// DeleteImageManifest removes the manifest with the given digest from the registry. -func (imh *imageManifestHandler) DeleteImageManifest(w http.ResponseWriter, r *http.Request) { - ctxu.GetLogger(imh).Debug("DeleteImageManifest") - - manifests, err := imh.Repository.Manifests(imh) - if err != nil { - imh.Errors = append(imh.Errors, err) - return - } - - err = manifests.Delete(imh, imh.Digest) - if err != nil { - switch err { - case digest.ErrDigestUnsupported: - case digest.ErrDigestInvalidFormat: - imh.Errors = append(imh.Errors, v2.ErrorCodeDigestInvalid) - return - case distribution.ErrBlobUnknown: - imh.Errors = append(imh.Errors, v2.ErrorCodeManifestUnknown) - return - case distribution.ErrUnsupported: - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnsupported) - return - default: - imh.Errors = append(imh.Errors, errcode.ErrorCodeUnknown) - return - } - } - - tagService := imh.Repository.Tags(imh) - referencedTags, err := tagService.Lookup(imh, distribution.Descriptor{Digest: imh.Digest}) - if err != nil { - imh.Errors = append(imh.Errors, err) - return - } - - for _, tag := range referencedTags { - if err := tagService.Untag(imh, tag); err != nil { - imh.Errors = append(imh.Errors, err) - return - } - } - - w.WriteHeader(http.StatusAccepted) -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/mail.go b/vendor/github.com/docker/distribution/registry/handlers/mail.go deleted file mode 100644 index 39244909de..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/mail.go +++ /dev/null @@ -1,45 +0,0 @@ -package handlers - -import ( - "errors" - "net/smtp" - "strings" -) - -// mailer provides fields of email configuration for sending. -type mailer struct { - Addr, Username, Password, From string - Insecure bool - To []string -} - -// sendMail allows users to send email, only if mail parameters is configured correctly. -func (mail *mailer) sendMail(subject, message string) error { - addr := strings.Split(mail.Addr, ":") - if len(addr) != 2 { - return errors.New("Invalid Mail Address") - } - host := addr[0] - msg := []byte("To:" + strings.Join(mail.To, ";") + - "\r\nFrom: " + mail.From + - "\r\nSubject: " + subject + - "\r\nContent-Type: text/plain\r\n\r\n" + - message) - auth := smtp.PlainAuth( - "", - mail.Username, - mail.Password, - host, - ) - err := smtp.SendMail( - mail.Addr, - auth, - mail.From, - mail.To, - []byte(msg), - ) - if err != nil { - return err - } - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/handlers/tags.go b/vendor/github.com/docker/distribution/registry/handlers/tags.go deleted file mode 100644 index fd661e663a..0000000000 --- a/vendor/github.com/docker/distribution/registry/handlers/tags.go +++ /dev/null @@ -1,60 +0,0 @@ -package handlers - -import ( - "encoding/json" - "net/http" - - "github.com/docker/distribution" - "github.com/docker/distribution/registry/api/errcode" - "github.com/docker/distribution/registry/api/v2" - "github.com/gorilla/handlers" -) - -// tagsDispatcher constructs the tags handler api endpoint. -func tagsDispatcher(ctx *Context, r *http.Request) http.Handler { - tagsHandler := &tagsHandler{ - Context: ctx, - } - - return handlers.MethodHandler{ - "GET": http.HandlerFunc(tagsHandler.GetTags), - } -} - -// tagsHandler handles requests for lists of tags under a repository name. -type tagsHandler struct { - *Context -} - -type tagsAPIResponse struct { - Name string `json:"name"` - Tags []string `json:"tags"` -} - -// GetTags returns a json list of tags for a specific image name. -func (th *tagsHandler) GetTags(w http.ResponseWriter, r *http.Request) { - defer r.Body.Close() - - tagService := th.Repository.Tags(th) - tags, err := tagService.All(th) - if err != nil { - switch err := err.(type) { - case distribution.ErrRepositoryUnknown: - th.Errors = append(th.Errors, v2.ErrorCodeNameUnknown.WithDetail(map[string]string{"name": th.Repository.Named().Name()})) - default: - th.Errors = append(th.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - } - return - } - - w.Header().Set("Content-Type", "application/json; charset=utf-8") - - enc := json.NewEncoder(w) - if err := enc.Encode(tagsAPIResponse{ - Name: th.Repository.Named().Name(), - Tags: tags, - }); err != nil { - th.Errors = append(th.Errors, errcode.ErrorCodeUnknown.WithDetail(err)) - return - } -} diff --git a/vendor/github.com/docker/distribution/registry/listener/listener.go b/vendor/github.com/docker/distribution/registry/listener/listener.go deleted file mode 100644 index b93a7a63ff..0000000000 --- a/vendor/github.com/docker/distribution/registry/listener/listener.go +++ /dev/null @@ -1,74 +0,0 @@ -package listener - -import ( - "fmt" - "net" - "os" - "time" -) - -// tcpKeepAliveListener sets TCP keep-alive timeouts on accepted -// connections. It's used by ListenAndServe and ListenAndServeTLS so -// dead TCP connections (e.g. closing laptop mid-download) eventually -// go away. -// it is a plain copy-paste from net/http/server.go -type tcpKeepAliveListener struct { - *net.TCPListener -} - -func (ln tcpKeepAliveListener) Accept() (c net.Conn, err error) { - tc, err := ln.AcceptTCP() - if err != nil { - return - } - tc.SetKeepAlive(true) - tc.SetKeepAlivePeriod(3 * time.Minute) - return tc, nil -} - -// NewListener announces on laddr and net. Accepted values of the net are -// 'unix' and 'tcp' -func NewListener(net, laddr string) (net.Listener, error) { - switch net { - case "unix": - return newUnixListener(laddr) - case "tcp", "": // an empty net means tcp - return newTCPListener(laddr) - default: - return nil, fmt.Errorf("unknown address type %s", net) - } -} - -func newUnixListener(laddr string) (net.Listener, error) { - fi, err := os.Stat(laddr) - if err == nil { - // the file exists. - // try to remove it if it's a socket - if !isSocket(fi.Mode()) { - return nil, fmt.Errorf("file %s exists and is not a socket", laddr) - } - - if err := os.Remove(laddr); err != nil { - return nil, err - } - } else if !os.IsNotExist(err) { - // we can't do stat on the file. - // it means we can not remove it - return nil, err - } - - return net.Listen("unix", laddr) -} - -func isSocket(m os.FileMode) bool { - return m&os.ModeSocket != 0 -} - -func newTCPListener(laddr string) (net.Listener, error) { - ln, err := net.Listen("tcp", laddr) - if err != nil { - return nil, err - } - - return tcpKeepAliveListener{ln.(*net.TCPListener)}, nil -} diff --git a/vendor/github.com/docker/distribution/registry/middleware/registry/middleware.go b/vendor/github.com/docker/distribution/registry/middleware/registry/middleware.go deleted file mode 100644 index 7535c6db5e..0000000000 --- a/vendor/github.com/docker/distribution/registry/middleware/registry/middleware.go +++ /dev/null @@ -1,40 +0,0 @@ -package middleware - -import ( - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" -) - -// InitFunc is the type of a RegistryMiddleware factory function and is -// used to register the constructor for different RegistryMiddleware backends. -type InitFunc func(ctx context.Context, registry distribution.Namespace, options map[string]interface{}) (distribution.Namespace, error) - -var middlewares map[string]InitFunc - -// Register is used to register an InitFunc for -// a RegistryMiddleware backend with the given name. -func Register(name string, initFunc InitFunc) error { - if middlewares == nil { - middlewares = make(map[string]InitFunc) - } - if _, exists := middlewares[name]; exists { - return fmt.Errorf("name already registered: %s", name) - } - - middlewares[name] = initFunc - - return nil -} - -// Get constructs a RegistryMiddleware with the given options using the named backend. -func Get(ctx context.Context, name string, options map[string]interface{}, registry distribution.Namespace) (distribution.Namespace, error) { - if middlewares != nil { - if initFunc, exists := middlewares[name]; exists { - return initFunc(ctx, registry, options) - } - } - - return nil, fmt.Errorf("no registry middleware registered with name: %s", name) -} diff --git a/vendor/github.com/docker/distribution/registry/middleware/repository/middleware.go b/vendor/github.com/docker/distribution/registry/middleware/repository/middleware.go deleted file mode 100644 index 27b42aecfc..0000000000 --- a/vendor/github.com/docker/distribution/registry/middleware/repository/middleware.go +++ /dev/null @@ -1,40 +0,0 @@ -package middleware - -import ( - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" -) - -// InitFunc is the type of a RepositoryMiddleware factory function and is -// used to register the constructor for different RepositoryMiddleware backends. -type InitFunc func(ctx context.Context, repository distribution.Repository, options map[string]interface{}) (distribution.Repository, error) - -var middlewares map[string]InitFunc - -// Register is used to register an InitFunc for -// a RepositoryMiddleware backend with the given name. -func Register(name string, initFunc InitFunc) error { - if middlewares == nil { - middlewares = make(map[string]InitFunc) - } - if _, exists := middlewares[name]; exists { - return fmt.Errorf("name already registered: %s", name) - } - - middlewares[name] = initFunc - - return nil -} - -// Get constructs a RepositoryMiddleware with the given options using the named backend. -func Get(ctx context.Context, name string, options map[string]interface{}, repository distribution.Repository) (distribution.Repository, error) { - if middlewares != nil { - if initFunc, exists := middlewares[name]; exists { - return initFunc(ctx, repository, options) - } - } - - return nil, fmt.Errorf("no repository middleware registered with name: %s", name) -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxyauth.go b/vendor/github.com/docker/distribution/registry/proxy/proxyauth.go deleted file mode 100644 index a9cc43a615..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxyauth.go +++ /dev/null @@ -1,58 +0,0 @@ -package proxy - -import ( - "net/http" - "net/url" - - "github.com/docker/distribution/registry/client/auth" -) - -const tokenURL = "https://auth.docker.io/token" -const challengeHeader = "Docker-Distribution-Api-Version" - -type userpass struct { - username string - password string -} - -type credentials struct { - creds map[string]userpass -} - -func (c credentials) Basic(u *url.URL) (string, string) { - up := c.creds[u.String()] - - return up.username, up.password -} - -func (c credentials) RefreshToken(u *url.URL, service string) string { - return "" -} - -func (c credentials) SetRefreshToken(u *url.URL, service, token string) { -} - -// configureAuth stores credentials for challenge responses -func configureAuth(username, password string) (auth.CredentialStore, error) { - creds := map[string]userpass{ - tokenURL: { - username: username, - password: password, - }, - } - return credentials{creds: creds}, nil -} - -func ping(manager auth.ChallengeManager, endpoint, versionHeader string) error { - resp, err := http.Get(endpoint) - if err != nil { - return err - } - defer resp.Body.Close() - - if err := manager.AddResponse(resp); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxyblobstore.go b/vendor/github.com/docker/distribution/registry/proxy/proxyblobstore.go deleted file mode 100644 index 7a6d7ea27e..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxyblobstore.go +++ /dev/null @@ -1,222 +0,0 @@ -package proxy - -import ( - "io" - "net/http" - "strconv" - "sync" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/proxy/scheduler" -) - -// todo(richardscothern): from cache control header or config file -const blobTTL = time.Duration(24 * 7 * time.Hour) - -type proxyBlobStore struct { - localStore distribution.BlobStore - remoteStore distribution.BlobService - scheduler *scheduler.TTLExpirationScheduler - repositoryName reference.Named - authChallenger authChallenger -} - -var _ distribution.BlobStore = &proxyBlobStore{} - -// inflight tracks currently downloading blobs -var inflight = make(map[digest.Digest]struct{}) - -// mu protects inflight -var mu sync.Mutex - -func setResponseHeaders(w http.ResponseWriter, length int64, mediaType string, digest digest.Digest) { - w.Header().Set("Content-Length", strconv.FormatInt(length, 10)) - w.Header().Set("Content-Type", mediaType) - w.Header().Set("Docker-Content-Digest", digest.String()) - w.Header().Set("Etag", digest.String()) -} - -func (pbs *proxyBlobStore) copyContent(ctx context.Context, dgst digest.Digest, writer io.Writer) (distribution.Descriptor, error) { - desc, err := pbs.remoteStore.Stat(ctx, dgst) - if err != nil { - return distribution.Descriptor{}, err - } - - if w, ok := writer.(http.ResponseWriter); ok { - setResponseHeaders(w, desc.Size, desc.MediaType, dgst) - } - - remoteReader, err := pbs.remoteStore.Open(ctx, dgst) - if err != nil { - return distribution.Descriptor{}, err - } - - _, err = io.CopyN(writer, remoteReader, desc.Size) - if err != nil { - return distribution.Descriptor{}, err - } - - proxyMetrics.BlobPush(uint64(desc.Size)) - - return desc, nil -} - -func (pbs *proxyBlobStore) serveLocal(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) (bool, error) { - localDesc, err := pbs.localStore.Stat(ctx, dgst) - if err != nil { - // Stat can report a zero sized file here if it's checked between creation - // and population. Return nil error, and continue - return false, nil - } - - if err == nil { - proxyMetrics.BlobPush(uint64(localDesc.Size)) - return true, pbs.localStore.ServeBlob(ctx, w, r, dgst) - } - - return false, nil - -} - -func (pbs *proxyBlobStore) storeLocal(ctx context.Context, dgst digest.Digest) error { - defer func() { - mu.Lock() - delete(inflight, dgst) - mu.Unlock() - }() - - var desc distribution.Descriptor - var err error - var bw distribution.BlobWriter - - bw, err = pbs.localStore.Create(ctx) - if err != nil { - return err - } - - desc, err = pbs.copyContent(ctx, dgst, bw) - if err != nil { - return err - } - - _, err = bw.Commit(ctx, desc) - if err != nil { - return err - } - - return nil -} - -func (pbs *proxyBlobStore) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error { - served, err := pbs.serveLocal(ctx, w, r, dgst) - if err != nil { - context.GetLogger(ctx).Errorf("Error serving blob from local storage: %s", err.Error()) - return err - } - - if served { - return nil - } - - if err := pbs.authChallenger.tryEstablishChallenges(ctx); err != nil { - return err - } - - mu.Lock() - _, ok := inflight[dgst] - if ok { - mu.Unlock() - _, err := pbs.copyContent(ctx, dgst, w) - return err - } - inflight[dgst] = struct{}{} - mu.Unlock() - - go func(dgst digest.Digest) { - if err := pbs.storeLocal(ctx, dgst); err != nil { - context.GetLogger(ctx).Errorf("Error committing to storage: %s", err.Error()) - } - - blobRef, err := reference.WithDigest(pbs.repositoryName, dgst) - if err != nil { - context.GetLogger(ctx).Errorf("Error creating reference: %s", err) - return - } - - pbs.scheduler.AddBlob(blobRef, repositoryTTL) - }(dgst) - - _, err = pbs.copyContent(ctx, dgst, w) - if err != nil { - return err - } - return nil -} - -func (pbs *proxyBlobStore) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - desc, err := pbs.localStore.Stat(ctx, dgst) - if err == nil { - return desc, err - } - - if err != distribution.ErrBlobUnknown { - return distribution.Descriptor{}, err - } - - if err := pbs.authChallenger.tryEstablishChallenges(ctx); err != nil { - return distribution.Descriptor{}, err - } - - return pbs.remoteStore.Stat(ctx, dgst) -} - -func (pbs *proxyBlobStore) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - blob, err := pbs.localStore.Get(ctx, dgst) - if err == nil { - return blob, nil - } - - if err := pbs.authChallenger.tryEstablishChallenges(ctx); err != nil { - return []byte{}, err - } - - blob, err = pbs.remoteStore.Get(ctx, dgst) - if err != nil { - return []byte{}, err - } - - _, err = pbs.localStore.Put(ctx, "", blob) - if err != nil { - return []byte{}, err - } - return blob, nil -} - -// Unsupported functions -func (pbs *proxyBlobStore) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - return distribution.Descriptor{}, distribution.ErrUnsupported -} - -func (pbs *proxyBlobStore) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - return nil, distribution.ErrUnsupported -} - -func (pbs *proxyBlobStore) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - return nil, distribution.ErrUnsupported -} - -func (pbs *proxyBlobStore) Mount(ctx context.Context, sourceRepo reference.Named, dgst digest.Digest) (distribution.Descriptor, error) { - return distribution.Descriptor{}, distribution.ErrUnsupported -} - -func (pbs *proxyBlobStore) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - return nil, distribution.ErrUnsupported -} - -func (pbs *proxyBlobStore) Delete(ctx context.Context, dgst digest.Digest) error { - return distribution.ErrUnsupported -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxyblobstore_test.go b/vendor/github.com/docker/distribution/registry/proxy/proxyblobstore_test.go deleted file mode 100644 index b93b534331..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxyblobstore_test.go +++ /dev/null @@ -1,395 +0,0 @@ -package proxy - -import ( - "io/ioutil" - "math/rand" - "net/http" - "net/http/httptest" - "sync" - "testing" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/proxy/scheduler" - "github.com/docker/distribution/registry/storage" - "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver/filesystem" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -var sbsMu sync.Mutex - -type statsBlobStore struct { - stats map[string]int - blobs distribution.BlobStore -} - -func (sbs statsBlobStore) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - sbsMu.Lock() - sbs.stats["put"]++ - sbsMu.Unlock() - - return sbs.blobs.Put(ctx, mediaType, p) -} - -func (sbs statsBlobStore) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - sbsMu.Lock() - sbs.stats["get"]++ - sbsMu.Unlock() - - return sbs.blobs.Get(ctx, dgst) -} - -func (sbs statsBlobStore) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - sbsMu.Lock() - sbs.stats["create"]++ - sbsMu.Unlock() - - return sbs.blobs.Create(ctx, options...) -} - -func (sbs statsBlobStore) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - sbsMu.Lock() - sbs.stats["resume"]++ - sbsMu.Unlock() - - return sbs.blobs.Resume(ctx, id) -} - -func (sbs statsBlobStore) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - sbsMu.Lock() - sbs.stats["open"]++ - sbsMu.Unlock() - - return sbs.blobs.Open(ctx, dgst) -} - -func (sbs statsBlobStore) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error { - sbsMu.Lock() - sbs.stats["serveblob"]++ - sbsMu.Unlock() - - return sbs.blobs.ServeBlob(ctx, w, r, dgst) -} - -func (sbs statsBlobStore) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - - sbsMu.Lock() - sbs.stats["stat"]++ - sbsMu.Unlock() - - return sbs.blobs.Stat(ctx, dgst) -} - -func (sbs statsBlobStore) Delete(ctx context.Context, dgst digest.Digest) error { - sbsMu.Lock() - sbs.stats["delete"]++ - sbsMu.Unlock() - - return sbs.blobs.Delete(ctx, dgst) -} - -type testEnv struct { - numUnique int - inRemote []distribution.Descriptor - store proxyBlobStore - ctx context.Context -} - -func (te *testEnv) LocalStats() *map[string]int { - sbsMu.Lock() - ls := te.store.localStore.(statsBlobStore).stats - sbsMu.Unlock() - return &ls -} - -func (te *testEnv) RemoteStats() *map[string]int { - sbsMu.Lock() - rs := te.store.remoteStore.(statsBlobStore).stats - sbsMu.Unlock() - return &rs -} - -// Populate remote store and record the digests -func makeTestEnv(t *testing.T, name string) *testEnv { - nameRef, err := reference.ParseNamed(name) - if err != nil { - t.Fatalf("unable to parse reference: %s", err) - } - - ctx := context.Background() - - truthDir, err := ioutil.TempDir("", "truth") - if err != nil { - t.Fatalf("unable to create tempdir: %s", err) - } - - cacheDir, err := ioutil.TempDir("", "cache") - if err != nil { - t.Fatalf("unable to create tempdir: %s", err) - } - - // todo: create a tempfile area here - localRegistry, err := storage.NewRegistry(ctx, filesystem.New(truthDir), storage.BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), storage.EnableRedirect, storage.DisableDigestResumption) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - localRepo, err := localRegistry.Repository(ctx, nameRef) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - - truthRegistry, err := storage.NewRegistry(ctx, filesystem.New(cacheDir), storage.BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider())) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - truthRepo, err := truthRegistry.Repository(ctx, nameRef) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - - truthBlobs := statsBlobStore{ - stats: make(map[string]int), - blobs: truthRepo.Blobs(ctx), - } - - localBlobs := statsBlobStore{ - stats: make(map[string]int), - blobs: localRepo.Blobs(ctx), - } - - s := scheduler.New(ctx, inmemory.New(), "/scheduler-state.json") - - proxyBlobStore := proxyBlobStore{ - repositoryName: nameRef, - remoteStore: truthBlobs, - localStore: localBlobs, - scheduler: s, - authChallenger: &mockChallenger{}, - } - - te := &testEnv{ - store: proxyBlobStore, - ctx: ctx, - } - return te -} - -func makeBlob(size int) []byte { - blob := make([]byte, size, size) - for i := 0; i < size; i++ { - blob[i] = byte('A' + rand.Int()%48) - } - return blob -} - -func init() { - rand.Seed(42) -} - -func perm(m []distribution.Descriptor) []distribution.Descriptor { - for i := 0; i < len(m); i++ { - j := rand.Intn(i + 1) - tmp := m[i] - m[i] = m[j] - m[j] = tmp - } - return m -} - -func populate(t *testing.T, te *testEnv, blobCount, size, numUnique int) { - var inRemote []distribution.Descriptor - - for i := 0; i < numUnique; i++ { - bytes := makeBlob(size) - for j := 0; j < blobCount/numUnique; j++ { - desc, err := te.store.remoteStore.Put(te.ctx, "", bytes) - if err != nil { - t.Fatalf("Put in store") - } - - inRemote = append(inRemote, desc) - } - } - - te.inRemote = inRemote - te.numUnique = numUnique -} -func TestProxyStoreGet(t *testing.T) { - te := makeTestEnv(t, "foo/bar") - - localStats := te.LocalStats() - remoteStats := te.RemoteStats() - - populate(t, te, 1, 10, 1) - _, err := te.store.Get(te.ctx, te.inRemote[0].Digest) - if err != nil { - t.Fatal(err) - } - - if (*localStats)["get"] != 1 && (*localStats)["put"] != 1 { - t.Errorf("Unexpected local counts") - } - - if (*remoteStats)["get"] != 1 { - t.Errorf("Unexpected remote get count") - } - - _, err = te.store.Get(te.ctx, te.inRemote[0].Digest) - if err != nil { - t.Fatal(err) - } - - if (*localStats)["get"] != 2 && (*localStats)["put"] != 1 { - t.Errorf("Unexpected local counts") - } - - if (*remoteStats)["get"] != 1 { - t.Errorf("Unexpected remote get count") - } - -} - -func TestProxyStoreStat(t *testing.T) { - te := makeTestEnv(t, "foo/bar") - - remoteBlobCount := 1 - populate(t, te, remoteBlobCount, 10, 1) - - localStats := te.LocalStats() - remoteStats := te.RemoteStats() - - // Stat - touches both stores - for _, d := range te.inRemote { - _, err := te.store.Stat(te.ctx, d.Digest) - if err != nil { - t.Fatalf("Error stating proxy store") - } - } - - if (*localStats)["stat"] != remoteBlobCount { - t.Errorf("Unexpected local stat count") - } - - if (*remoteStats)["stat"] != remoteBlobCount { - t.Errorf("Unexpected remote stat count") - } - - if te.store.authChallenger.(*mockChallenger).count != len(te.inRemote) { - t.Fatalf("Unexpected auth challenge count, got %#v", te.store.authChallenger) - } - -} - -func TestProxyStoreServeHighConcurrency(t *testing.T) { - te := makeTestEnv(t, "foo/bar") - blobSize := 200 - blobCount := 10 - numUnique := 1 - populate(t, te, blobCount, blobSize, numUnique) - - numClients := 16 - testProxyStoreServe(t, te, numClients) -} - -func TestProxyStoreServeMany(t *testing.T) { - te := makeTestEnv(t, "foo/bar") - blobSize := 200 - blobCount := 10 - numUnique := 4 - populate(t, te, blobCount, blobSize, numUnique) - - numClients := 4 - testProxyStoreServe(t, te, numClients) -} - -// todo(richardscothern): blobCount must be smaller than num clients -func TestProxyStoreServeBig(t *testing.T) { - te := makeTestEnv(t, "foo/bar") - - blobSize := 2 << 20 - blobCount := 4 - numUnique := 2 - populate(t, te, blobCount, blobSize, numUnique) - - numClients := 4 - testProxyStoreServe(t, te, numClients) -} - -// testProxyStoreServe will create clients to consume all blobs -// populated in the truth store -func testProxyStoreServe(t *testing.T, te *testEnv, numClients int) { - localStats := te.LocalStats() - remoteStats := te.RemoteStats() - - var wg sync.WaitGroup - - for i := 0; i < numClients; i++ { - // Serveblob - pulls through blobs - wg.Add(1) - go func() { - defer wg.Done() - for _, remoteBlob := range te.inRemote { - w := httptest.NewRecorder() - r, err := http.NewRequest("GET", "", nil) - if err != nil { - t.Fatal(err) - } - - err = te.store.ServeBlob(te.ctx, w, r, remoteBlob.Digest) - if err != nil { - t.Fatalf(err.Error()) - } - - bodyBytes := w.Body.Bytes() - localDigest := digest.FromBytes(bodyBytes) - if localDigest != remoteBlob.Digest { - t.Fatalf("Mismatching blob fetch from proxy") - } - } - }() - } - - wg.Wait() - - remoteBlobCount := len(te.inRemote) - if (*localStats)["stat"] != remoteBlobCount*numClients && (*localStats)["create"] != te.numUnique { - t.Fatal("Expected: stat:", remoteBlobCount*numClients, "create:", remoteBlobCount) - } - - // Wait for any async storage goroutines to finish - time.Sleep(3 * time.Second) - - remoteStatCount := (*remoteStats)["stat"] - remoteOpenCount := (*remoteStats)["open"] - - // Serveblob - blobs come from local - for _, dr := range te.inRemote { - w := httptest.NewRecorder() - r, err := http.NewRequest("GET", "", nil) - if err != nil { - t.Fatal(err) - } - - err = te.store.ServeBlob(te.ctx, w, r, dr.Digest) - if err != nil { - t.Fatalf(err.Error()) - } - - dl := digest.FromBytes(w.Body.Bytes()) - if dl != dr.Digest { - t.Errorf("Mismatching blob fetch from proxy") - } - } - - localStats = te.LocalStats() - remoteStats = te.RemoteStats() - - // Ensure remote unchanged - if (*remoteStats)["stat"] != remoteStatCount && (*remoteStats)["open"] != remoteOpenCount { - t.Fatalf("unexpected remote stats: %#v", remoteStats) - } -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxymanifeststore.go b/vendor/github.com/docker/distribution/registry/proxy/proxymanifeststore.go deleted file mode 100644 index f08e285db6..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxymanifeststore.go +++ /dev/null @@ -1,95 +0,0 @@ -package proxy - -import ( - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/proxy/scheduler" -) - -// todo(richardscothern): from cache control header or config -const repositoryTTL = time.Duration(24 * 7 * time.Hour) - -type proxyManifestStore struct { - ctx context.Context - localManifests distribution.ManifestService - remoteManifests distribution.ManifestService - repositoryName reference.Named - scheduler *scheduler.TTLExpirationScheduler - authChallenger authChallenger -} - -var _ distribution.ManifestService = &proxyManifestStore{} - -func (pms proxyManifestStore) Exists(ctx context.Context, dgst digest.Digest) (bool, error) { - exists, err := pms.localManifests.Exists(ctx, dgst) - if err != nil { - return false, err - } - if exists { - return true, nil - } - if err := pms.authChallenger.tryEstablishChallenges(ctx); err != nil { - return false, err - } - return pms.remoteManifests.Exists(ctx, dgst) -} - -func (pms proxyManifestStore) Get(ctx context.Context, dgst digest.Digest, options ...distribution.ManifestServiceOption) (distribution.Manifest, error) { - // At this point `dgst` was either specified explicitly, or returned by the - // tagstore with the most recent association. - var fromRemote bool - manifest, err := pms.localManifests.Get(ctx, dgst, options...) - if err != nil { - if err := pms.authChallenger.tryEstablishChallenges(ctx); err != nil { - return nil, err - } - - manifest, err = pms.remoteManifests.Get(ctx, dgst, options...) - if err != nil { - return nil, err - } - fromRemote = true - } - - _, payload, err := manifest.Payload() - if err != nil { - return nil, err - } - - proxyMetrics.ManifestPush(uint64(len(payload))) - if fromRemote { - proxyMetrics.ManifestPull(uint64(len(payload))) - - _, err = pms.localManifests.Put(ctx, manifest) - if err != nil { - return nil, err - } - - // Schedule the manifest blob for removal - repoBlob, err := reference.WithDigest(pms.repositoryName, dgst) - if err != nil { - context.GetLogger(ctx).Errorf("Error creating reference: %s", err) - return nil, err - } - - pms.scheduler.AddManifest(repoBlob, repositoryTTL) - // Ensure the manifest blob is cleaned up - //pms.scheduler.AddBlob(blobRef, repositoryTTL) - - } - - return manifest, err -} - -func (pms proxyManifestStore) Put(ctx context.Context, manifest distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) { - var d digest.Digest - return d, distribution.ErrUnsupported -} - -func (pms proxyManifestStore) Delete(ctx context.Context, dgst digest.Digest) error { - return distribution.ErrUnsupported -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxymanifeststore_test.go b/vendor/github.com/docker/distribution/registry/proxy/proxymanifeststore_test.go deleted file mode 100644 index 1069d66c8d..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxymanifeststore_test.go +++ /dev/null @@ -1,275 +0,0 @@ -package proxy - -import ( - "io" - "sync" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/client/auth" - "github.com/docker/distribution/registry/proxy/scheduler" - "github.com/docker/distribution/registry/storage" - "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/testutil" - "github.com/docker/libtrust" -) - -type statsManifest struct { - manifests distribution.ManifestService - stats map[string]int -} - -type manifestStoreTestEnv struct { - manifestDigest digest.Digest // digest of the signed manifest in the local storage - manifests proxyManifestStore -} - -func (te manifestStoreTestEnv) LocalStats() *map[string]int { - ls := te.manifests.localManifests.(statsManifest).stats - return &ls -} - -func (te manifestStoreTestEnv) RemoteStats() *map[string]int { - rs := te.manifests.remoteManifests.(statsManifest).stats - return &rs -} - -func (sm statsManifest) Delete(ctx context.Context, dgst digest.Digest) error { - sm.stats["delete"]++ - return sm.manifests.Delete(ctx, dgst) -} - -func (sm statsManifest) Exists(ctx context.Context, dgst digest.Digest) (bool, error) { - sm.stats["exists"]++ - return sm.manifests.Exists(ctx, dgst) -} - -func (sm statsManifest) Get(ctx context.Context, dgst digest.Digest, options ...distribution.ManifestServiceOption) (distribution.Manifest, error) { - sm.stats["get"]++ - return sm.manifests.Get(ctx, dgst) -} - -func (sm statsManifest) Put(ctx context.Context, manifest distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) { - sm.stats["put"]++ - return sm.manifests.Put(ctx, manifest) -} - -/*func (sm statsManifest) Enumerate(ctx context.Context, manifests []distribution.Manifest, last distribution.Manifest) (n int, err error) { - sm.stats["enumerate"]++ - return sm.manifests.Enumerate(ctx, manifests, last) -} -*/ - -type mockChallenger struct { - sync.Mutex - count int -} - -// Called for remote operations only -func (m *mockChallenger) tryEstablishChallenges(context.Context) error { - m.Lock() - defer m.Unlock() - - m.count++ - return nil -} - -func (m *mockChallenger) credentialStore() auth.CredentialStore { - return nil -} - -func (m *mockChallenger) challengeManager() auth.ChallengeManager { - return nil -} - -func newManifestStoreTestEnv(t *testing.T, name, tag string) *manifestStoreTestEnv { - nameRef, err := reference.ParseNamed(name) - if err != nil { - t.Fatalf("unable to parse reference: %s", err) - } - - ctx := context.Background() - truthRegistry, err := storage.NewRegistry(ctx, inmemory.New(), storage.BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider())) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - truthRepo, err := truthRegistry.Repository(ctx, nameRef) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - tr, err := truthRepo.Manifests(ctx) - if err != nil { - t.Fatal(err.Error()) - } - truthManifests := statsManifest{ - manifests: tr, - stats: make(map[string]int), - } - - manifestDigest, err := populateRepo(t, ctx, truthRepo, name, tag) - if err != nil { - t.Fatalf(err.Error()) - } - - localRegistry, err := storage.NewRegistry(ctx, inmemory.New(), storage.BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), storage.EnableRedirect, storage.DisableDigestResumption) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - localRepo, err := localRegistry.Repository(ctx, nameRef) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - lr, err := localRepo.Manifests(ctx) - if err != nil { - t.Fatal(err.Error()) - } - - localManifests := statsManifest{ - manifests: lr, - stats: make(map[string]int), - } - - s := scheduler.New(ctx, inmemory.New(), "/scheduler-state.json") - return &manifestStoreTestEnv{ - manifestDigest: manifestDigest, - manifests: proxyManifestStore{ - ctx: ctx, - localManifests: localManifests, - remoteManifests: truthManifests, - scheduler: s, - repositoryName: nameRef, - authChallenger: &mockChallenger{}, - }, - } -} - -func populateRepo(t *testing.T, ctx context.Context, repository distribution.Repository, name, tag string) (digest.Digest, error) { - m := schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: name, - Tag: tag, - } - - for i := 0; i < 2; i++ { - wr, err := repository.Blobs(ctx).Create(ctx) - if err != nil { - t.Fatalf("unexpected error creating test upload: %v", err) - } - - rs, ts, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("unexpected error generating test layer file") - } - dgst := digest.Digest(ts) - if _, err := io.Copy(wr, rs); err != nil { - t.Fatalf("unexpected error copying to upload: %v", err) - } - - if _, err := wr.Commit(ctx, distribution.Descriptor{Digest: dgst}); err != nil { - t.Fatalf("unexpected error finishing upload: %v", err) - } - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("unexpected error generating private key: %v", err) - } - - sm, err := schema1.Sign(&m, pk) - if err != nil { - t.Fatalf("error signing manifest: %v", err) - } - - ms, err := repository.Manifests(ctx) - if err != nil { - t.Fatalf(err.Error()) - } - dgst, err := ms.Put(ctx, sm) - if err != nil { - t.Fatalf("unexpected errors putting manifest: %v", err) - } - - return dgst, nil -} - -// TestProxyManifests contains basic acceptance tests -// for the pull-through behavior -func TestProxyManifests(t *testing.T) { - name := "foo/bar" - env := newManifestStoreTestEnv(t, name, "latest") - - localStats := env.LocalStats() - remoteStats := env.RemoteStats() - - ctx := context.Background() - // Stat - must check local and remote - exists, err := env.manifests.Exists(ctx, env.manifestDigest) - if err != nil { - t.Fatalf("Error checking existence") - } - if !exists { - t.Errorf("Unexpected non-existant manifest") - } - - if (*localStats)["exists"] != 1 && (*remoteStats)["exists"] != 1 { - t.Errorf("Unexpected exists count : \n%v \n%v", localStats, remoteStats) - } - - if env.manifests.authChallenger.(*mockChallenger).count != 1 { - t.Fatalf("Expected 1 auth challenge, got %#v", env.manifests.authChallenger) - } - - // Get - should succeed and pull manifest into local - _, err = env.manifests.Get(ctx, env.manifestDigest) - if err != nil { - t.Fatal(err) - } - - if (*localStats)["get"] != 1 && (*remoteStats)["get"] != 1 { - t.Errorf("Unexpected get count") - } - - if (*localStats)["put"] != 1 { - t.Errorf("Expected local put") - } - - if env.manifests.authChallenger.(*mockChallenger).count != 2 { - t.Fatalf("Expected 2 auth challenges, got %#v", env.manifests.authChallenger) - } - - // Stat - should only go to local - exists, err = env.manifests.Exists(ctx, env.manifestDigest) - if err != nil { - t.Fatal(err) - } - if !exists { - t.Errorf("Unexpected non-existant manifest") - } - - if (*localStats)["exists"] != 2 && (*remoteStats)["exists"] != 1 { - t.Errorf("Unexpected exists count") - } - - if env.manifests.authChallenger.(*mockChallenger).count != 2 { - t.Fatalf("Expected 2 auth challenges, got %#v", env.manifests.authChallenger) - } - - // Get proxied - won't require another authchallenge - _, err = env.manifests.Get(ctx, env.manifestDigest) - if err != nil { - t.Fatal(err) - } - - if env.manifests.authChallenger.(*mockChallenger).count != 2 { - t.Fatalf("Expected 2 auth challenges, got %#v", env.manifests.authChallenger) - } - -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxymetrics.go b/vendor/github.com/docker/distribution/registry/proxy/proxymetrics.go deleted file mode 100644 index d3d84d7863..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxymetrics.go +++ /dev/null @@ -1,74 +0,0 @@ -package proxy - -import ( - "expvar" - "sync/atomic" -) - -// Metrics is used to hold metric counters -// related to the proxy -type Metrics struct { - Requests uint64 - Hits uint64 - Misses uint64 - BytesPulled uint64 - BytesPushed uint64 -} - -type proxyMetricsCollector struct { - blobMetrics Metrics - manifestMetrics Metrics -} - -// BlobPull tracks metrics about blobs pulled into the cache -func (pmc *proxyMetricsCollector) BlobPull(bytesPulled uint64) { - atomic.AddUint64(&pmc.blobMetrics.Misses, 1) - atomic.AddUint64(&pmc.blobMetrics.BytesPulled, bytesPulled) -} - -// BlobPush tracks metrics about blobs pushed to clients -func (pmc *proxyMetricsCollector) BlobPush(bytesPushed uint64) { - atomic.AddUint64(&pmc.blobMetrics.Requests, 1) - atomic.AddUint64(&pmc.blobMetrics.Hits, 1) - atomic.AddUint64(&pmc.blobMetrics.BytesPushed, bytesPushed) -} - -// ManifestPull tracks metrics related to Manifests pulled into the cache -func (pmc *proxyMetricsCollector) ManifestPull(bytesPulled uint64) { - atomic.AddUint64(&pmc.manifestMetrics.Misses, 1) - atomic.AddUint64(&pmc.manifestMetrics.BytesPulled, bytesPulled) -} - -// ManifestPush tracks metrics about manifests pushed to clients -func (pmc *proxyMetricsCollector) ManifestPush(bytesPushed uint64) { - atomic.AddUint64(&pmc.manifestMetrics.Requests, 1) - atomic.AddUint64(&pmc.manifestMetrics.Hits, 1) - atomic.AddUint64(&pmc.manifestMetrics.BytesPushed, bytesPushed) -} - -// proxyMetrics tracks metrics about the proxy cache. This is -// kept globally and made available via expvar. -var proxyMetrics = &proxyMetricsCollector{} - -func init() { - registry := expvar.Get("registry") - if registry == nil { - registry = expvar.NewMap("registry") - } - - pm := registry.(*expvar.Map).Get("proxy") - if pm == nil { - pm = &expvar.Map{} - pm.(*expvar.Map).Init() - registry.(*expvar.Map).Set("proxy", pm) - } - - pm.(*expvar.Map).Set("blobs", expvar.Func(func() interface{} { - return proxyMetrics.blobMetrics - })) - - pm.(*expvar.Map).Set("manifests", expvar.Func(func() interface{} { - return proxyMetrics.manifestMetrics - })) - -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxyregistry.go b/vendor/github.com/docker/distribution/registry/proxy/proxyregistry.go deleted file mode 100644 index 56818dabca..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxyregistry.go +++ /dev/null @@ -1,248 +0,0 @@ -package proxy - -import ( - "fmt" - "net/http" - "net/url" - "sync" - - "github.com/docker/distribution" - "github.com/docker/distribution/configuration" - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/client" - "github.com/docker/distribution/registry/client/auth" - "github.com/docker/distribution/registry/client/transport" - "github.com/docker/distribution/registry/proxy/scheduler" - "github.com/docker/distribution/registry/storage" - "github.com/docker/distribution/registry/storage/driver" -) - -// proxyingRegistry fetches content from a remote registry and caches it locally -type proxyingRegistry struct { - embedded distribution.Namespace // provides local registry functionality - scheduler *scheduler.TTLExpirationScheduler - remoteURL url.URL - authChallenger authChallenger -} - -// NewRegistryPullThroughCache creates a registry acting as a pull through cache -func NewRegistryPullThroughCache(ctx context.Context, registry distribution.Namespace, driver driver.StorageDriver, config configuration.Proxy) (distribution.Namespace, error) { - remoteURL, err := url.Parse(config.RemoteURL) - if err != nil { - return nil, err - } - - v := storage.NewVacuum(ctx, driver) - s := scheduler.New(ctx, driver, "/scheduler-state.json") - s.OnBlobExpire(func(ref reference.Reference) error { - var r reference.Canonical - var ok bool - if r, ok = ref.(reference.Canonical); !ok { - return fmt.Errorf("unexpected reference type : %T", ref) - } - - repo, err := registry.Repository(ctx, r) - if err != nil { - return err - } - - blobs := repo.Blobs(ctx) - - // Clear the repository reference and descriptor caches - err = blobs.Delete(ctx, r.Digest()) - if err != nil { - return err - } - - err = v.RemoveBlob(r.Digest().String()) - if err != nil { - return err - } - - return nil - }) - - s.OnManifestExpire(func(ref reference.Reference) error { - var r reference.Canonical - var ok bool - if r, ok = ref.(reference.Canonical); !ok { - return fmt.Errorf("unexpected reference type : %T", ref) - } - - repo, err := registry.Repository(ctx, r) - if err != nil { - return err - } - - manifests, err := repo.Manifests(ctx) - if err != nil { - return err - } - err = manifests.Delete(ctx, r.Digest()) - if err != nil { - return err - } - return nil - }) - - err = s.Start() - if err != nil { - return nil, err - } - - cs, err := configureAuth(config.Username, config.Password) - if err != nil { - return nil, err - } - - return &proxyingRegistry{ - embedded: registry, - scheduler: s, - remoteURL: *remoteURL, - authChallenger: &remoteAuthChallenger{ - remoteURL: *remoteURL, - cm: auth.NewSimpleChallengeManager(), - cs: cs, - }, - }, nil -} - -func (pr *proxyingRegistry) Scope() distribution.Scope { - return distribution.GlobalScope -} - -func (pr *proxyingRegistry) Repositories(ctx context.Context, repos []string, last string) (n int, err error) { - return pr.embedded.Repositories(ctx, repos, last) -} - -func (pr *proxyingRegistry) Repository(ctx context.Context, name reference.Named) (distribution.Repository, error) { - c := pr.authChallenger - - tr := transport.NewTransport(http.DefaultTransport, - auth.NewAuthorizer(c.challengeManager(), auth.NewTokenHandler(http.DefaultTransport, c.credentialStore(), name.Name(), "pull"))) - - localRepo, err := pr.embedded.Repository(ctx, name) - if err != nil { - return nil, err - } - localManifests, err := localRepo.Manifests(ctx, storage.SkipLayerVerification()) - if err != nil { - return nil, err - } - - remoteRepo, err := client.NewRepository(ctx, name, pr.remoteURL.String(), tr) - if err != nil { - return nil, err - } - - remoteManifests, err := remoteRepo.Manifests(ctx) - if err != nil { - return nil, err - } - - return &proxiedRepository{ - blobStore: &proxyBlobStore{ - localStore: localRepo.Blobs(ctx), - remoteStore: remoteRepo.Blobs(ctx), - scheduler: pr.scheduler, - repositoryName: name, - authChallenger: pr.authChallenger, - }, - manifests: &proxyManifestStore{ - repositoryName: name, - localManifests: localManifests, // Options? - remoteManifests: remoteManifests, - ctx: ctx, - scheduler: pr.scheduler, - authChallenger: pr.authChallenger, - }, - name: name, - tags: &proxyTagService{ - localTags: localRepo.Tags(ctx), - remoteTags: remoteRepo.Tags(ctx), - authChallenger: pr.authChallenger, - }, - }, nil -} - -func (pr *proxyingRegistry) Blobs() distribution.BlobEnumerator { - return pr.embedded.Blobs() -} - -func (pr *proxyingRegistry) BlobStatter() distribution.BlobStatter { - return pr.embedded.BlobStatter() -} - -// authChallenger encapsulates a request to the upstream to establish credential challenges -type authChallenger interface { - tryEstablishChallenges(context.Context) error - challengeManager() auth.ChallengeManager - credentialStore() auth.CredentialStore -} - -type remoteAuthChallenger struct { - remoteURL url.URL - sync.Mutex - cm auth.ChallengeManager - cs auth.CredentialStore -} - -func (r *remoteAuthChallenger) credentialStore() auth.CredentialStore { - return r.cs -} - -func (r *remoteAuthChallenger) challengeManager() auth.ChallengeManager { - return r.cm -} - -// tryEstablishChallenges will attempt to get a challenge type for the upstream if none currently exist -func (r *remoteAuthChallenger) tryEstablishChallenges(ctx context.Context) error { - r.Lock() - defer r.Unlock() - - remoteURL := r.remoteURL - remoteURL.Path = "/v2/" - challenges, err := r.cm.GetChallenges(r.remoteURL) - if err != nil { - return err - } - - if len(challenges) > 0 { - return nil - } - - // establish challenge type with upstream - if err := ping(r.cm, remoteURL.String(), challengeHeader); err != nil { - return err - } - - context.GetLogger(ctx).Infof("Challenge established with upstream : %s %s", remoteURL, r.cm) - return nil -} - -// proxiedRepository uses proxying blob and manifest services to serve content -// locally, or pulling it through from a remote and caching it locally if it doesn't -// already exist -type proxiedRepository struct { - blobStore distribution.BlobStore - manifests distribution.ManifestService - name reference.Named - tags distribution.TagService -} - -func (pr *proxiedRepository) Manifests(ctx context.Context, options ...distribution.ManifestServiceOption) (distribution.ManifestService, error) { - return pr.manifests, nil -} - -func (pr *proxiedRepository) Blobs(ctx context.Context) distribution.BlobStore { - return pr.blobStore -} - -func (pr *proxiedRepository) Named() reference.Named { - return pr.name -} - -func (pr *proxiedRepository) Tags(ctx context.Context) distribution.TagService { - return pr.tags -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxytagservice.go b/vendor/github.com/docker/distribution/registry/proxy/proxytagservice.go deleted file mode 100644 index a8273030df..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxytagservice.go +++ /dev/null @@ -1,65 +0,0 @@ -package proxy - -import ( - "github.com/docker/distribution" - "github.com/docker/distribution/context" -) - -// proxyTagService supports local and remote lookup of tags. -type proxyTagService struct { - localTags distribution.TagService - remoteTags distribution.TagService - authChallenger authChallenger -} - -var _ distribution.TagService = proxyTagService{} - -// Get attempts to get the most recent digest for the tag by checking the remote -// tag service first and then caching it locally. If the remote is unavailable -// the local association is returned -func (pt proxyTagService) Get(ctx context.Context, tag string) (distribution.Descriptor, error) { - err := pt.authChallenger.tryEstablishChallenges(ctx) - if err == nil { - desc, err := pt.remoteTags.Get(ctx, tag) - if err == nil { - err := pt.localTags.Tag(ctx, tag, desc) - if err != nil { - return distribution.Descriptor{}, err - } - return desc, nil - } - } - - desc, err := pt.localTags.Get(ctx, tag) - if err != nil { - return distribution.Descriptor{}, err - } - return desc, nil -} - -func (pt proxyTagService) Tag(ctx context.Context, tag string, desc distribution.Descriptor) error { - return distribution.ErrUnsupported -} - -func (pt proxyTagService) Untag(ctx context.Context, tag string) error { - err := pt.localTags.Untag(ctx, tag) - if err != nil { - return err - } - return nil -} - -func (pt proxyTagService) All(ctx context.Context) ([]string, error) { - err := pt.authChallenger.tryEstablishChallenges(ctx) - if err == nil { - tags, err := pt.remoteTags.All(ctx) - if err == nil { - return tags, err - } - } - return pt.localTags.All(ctx) -} - -func (pt proxyTagService) Lookup(ctx context.Context, digest distribution.Descriptor) ([]string, error) { - return []string{}, distribution.ErrUnsupported -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/proxytagservice_test.go b/vendor/github.com/docker/distribution/registry/proxy/proxytagservice_test.go deleted file mode 100644 index a446645cb4..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/proxytagservice_test.go +++ /dev/null @@ -1,181 +0,0 @@ -package proxy - -import ( - "sort" - "sync" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" -) - -type mockTagStore struct { - mapping map[string]distribution.Descriptor - sync.Mutex -} - -var _ distribution.TagService = &mockTagStore{} - -func (m *mockTagStore) Get(ctx context.Context, tag string) (distribution.Descriptor, error) { - m.Lock() - defer m.Unlock() - - if d, ok := m.mapping[tag]; ok { - return d, nil - } - return distribution.Descriptor{}, distribution.ErrTagUnknown{} -} - -func (m *mockTagStore) Tag(ctx context.Context, tag string, desc distribution.Descriptor) error { - m.Lock() - defer m.Unlock() - - m.mapping[tag] = desc - return nil -} - -func (m *mockTagStore) Untag(ctx context.Context, tag string) error { - m.Lock() - defer m.Unlock() - - if _, ok := m.mapping[tag]; ok { - delete(m.mapping, tag) - return nil - } - return distribution.ErrTagUnknown{} -} - -func (m *mockTagStore) All(ctx context.Context) ([]string, error) { - m.Lock() - defer m.Unlock() - - var tags []string - for tag := range m.mapping { - tags = append(tags, tag) - } - - return tags, nil -} - -func (m *mockTagStore) Lookup(ctx context.Context, digest distribution.Descriptor) ([]string, error) { - panic("not implemented") -} - -func testProxyTagService(local, remote map[string]distribution.Descriptor) *proxyTagService { - if local == nil { - local = make(map[string]distribution.Descriptor) - } - if remote == nil { - remote = make(map[string]distribution.Descriptor) - } - return &proxyTagService{ - localTags: &mockTagStore{mapping: local}, - remoteTags: &mockTagStore{mapping: remote}, - authChallenger: &mockChallenger{}, - } -} - -func TestGet(t *testing.T) { - remoteDesc := distribution.Descriptor{Size: 42} - remoteTag := "remote" - proxyTags := testProxyTagService(map[string]distribution.Descriptor{remoteTag: remoteDesc}, nil) - - ctx := context.Background() - - // Get pre-loaded tag - d, err := proxyTags.Get(ctx, remoteTag) - if err != nil { - t.Fatal(err) - } - - if proxyTags.authChallenger.(*mockChallenger).count != 1 { - t.Fatalf("Expected 1 auth challenge call, got %#v", proxyTags.authChallenger) - } - - if d != remoteDesc { - t.Fatal("unable to get put tag") - } - - local, err := proxyTags.localTags.Get(ctx, remoteTag) - if err != nil { - t.Fatal("remote tag not pulled into store") - } - - if local != remoteDesc { - t.Fatalf("unexpected descriptor pulled through") - } - - // Manually overwrite remote tag - newRemoteDesc := distribution.Descriptor{Size: 43} - err = proxyTags.remoteTags.Tag(ctx, remoteTag, newRemoteDesc) - if err != nil { - t.Fatal(err) - } - - d, err = proxyTags.Get(ctx, remoteTag) - if err != nil { - t.Fatal(err) - } - - if proxyTags.authChallenger.(*mockChallenger).count != 2 { - t.Fatalf("Expected 2 auth challenge calls, got %#v", proxyTags.authChallenger) - } - - if d != newRemoteDesc { - t.Fatal("unable to get put tag") - } - - _, err = proxyTags.localTags.Get(ctx, remoteTag) - if err != nil { - t.Fatal("remote tag not pulled into store") - } - - // untag, ensure it's removed locally, but present in remote - err = proxyTags.Untag(ctx, remoteTag) - if err != nil { - t.Fatal(err) - } - - _, err = proxyTags.localTags.Get(ctx, remoteTag) - if err == nil { - t.Fatalf("Expected error getting Untag'd tag") - } - - _, err = proxyTags.remoteTags.Get(ctx, remoteTag) - if err != nil { - t.Fatalf("remote tag should not be untagged with proxyTag.Untag") - } - - _, err = proxyTags.Get(ctx, remoteTag) - if err != nil { - t.Fatal("untagged tag should be pulled through") - } - - if proxyTags.authChallenger.(*mockChallenger).count != 3 { - t.Fatalf("Expected 3 auth challenge calls, got %#v", proxyTags.authChallenger) - } - - // Add another tag. Ensure both tags appear in 'All' - err = proxyTags.remoteTags.Tag(ctx, "funtag", distribution.Descriptor{Size: 42}) - if err != nil { - t.Fatal(err) - } - - all, err := proxyTags.All(ctx) - if err != nil { - t.Fatal(err) - } - - if len(all) != 2 { - t.Fatalf("Unexpected tag length returned from All() : %d ", len(all)) - } - - sort.Strings(all) - if all[0] != "funtag" && all[1] != "remote" { - t.Fatalf("Unexpected tags returned from All() : %v ", all) - } - - if proxyTags.authChallenger.(*mockChallenger).count != 4 { - t.Fatalf("Expected 4 auth challenge calls, got %#v", proxyTags.authChallenger) - } -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/scheduler/scheduler.go b/vendor/github.com/docker/distribution/registry/proxy/scheduler/scheduler.go deleted file mode 100644 index 0c8a853480..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/scheduler/scheduler.go +++ /dev/null @@ -1,258 +0,0 @@ -package scheduler - -import ( - "encoding/json" - "fmt" - "sync" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/driver" -) - -// onTTLExpiryFunc is called when a repository's TTL expires -type expiryFunc func(reference.Reference) error - -const ( - entryTypeBlob = iota - entryTypeManifest - indexSaveFrequency = 5 * time.Second -) - -// schedulerEntry represents an entry in the scheduler -// fields are exported for serialization -type schedulerEntry struct { - Key string `json:"Key"` - Expiry time.Time `json:"ExpiryData"` - EntryType int `json:"EntryType"` - - timer *time.Timer -} - -// New returns a new instance of the scheduler -func New(ctx context.Context, driver driver.StorageDriver, path string) *TTLExpirationScheduler { - return &TTLExpirationScheduler{ - entries: make(map[string]*schedulerEntry), - driver: driver, - pathToStateFile: path, - ctx: ctx, - stopped: true, - doneChan: make(chan struct{}), - saveTimer: time.NewTicker(indexSaveFrequency), - } -} - -// TTLExpirationScheduler is a scheduler used to perform actions -// when TTLs expire -type TTLExpirationScheduler struct { - sync.Mutex - - entries map[string]*schedulerEntry - - driver driver.StorageDriver - ctx context.Context - pathToStateFile string - - stopped bool - - onBlobExpire expiryFunc - onManifestExpire expiryFunc - - indexDirty bool - saveTimer *time.Ticker - doneChan chan struct{} -} - -// OnBlobExpire is called when a scheduled blob's TTL expires -func (ttles *TTLExpirationScheduler) OnBlobExpire(f expiryFunc) { - ttles.Lock() - defer ttles.Unlock() - - ttles.onBlobExpire = f -} - -// OnManifestExpire is called when a scheduled manifest's TTL expires -func (ttles *TTLExpirationScheduler) OnManifestExpire(f expiryFunc) { - ttles.Lock() - defer ttles.Unlock() - - ttles.onManifestExpire = f -} - -// AddBlob schedules a blob cleanup after ttl expires -func (ttles *TTLExpirationScheduler) AddBlob(blobRef reference.Canonical, ttl time.Duration) error { - ttles.Lock() - defer ttles.Unlock() - - if ttles.stopped { - return fmt.Errorf("scheduler not started") - } - - ttles.add(blobRef, ttl, entryTypeBlob) - return nil -} - -// AddManifest schedules a manifest cleanup after ttl expires -func (ttles *TTLExpirationScheduler) AddManifest(manifestRef reference.Canonical, ttl time.Duration) error { - ttles.Lock() - defer ttles.Unlock() - - if ttles.stopped { - return fmt.Errorf("scheduler not started") - } - - ttles.add(manifestRef, ttl, entryTypeManifest) - return nil -} - -// Start starts the scheduler -func (ttles *TTLExpirationScheduler) Start() error { - ttles.Lock() - defer ttles.Unlock() - - err := ttles.readState() - if err != nil { - return err - } - - if !ttles.stopped { - return fmt.Errorf("Scheduler already started") - } - - context.GetLogger(ttles.ctx).Infof("Starting cached object TTL expiration scheduler...") - ttles.stopped = false - - // Start timer for each deserialized entry - for _, entry := range ttles.entries { - entry.timer = ttles.startTimer(entry, entry.Expiry.Sub(time.Now())) - } - - // Start a ticker to periodically save the entries index - - go func() { - for { - select { - case <-ttles.saveTimer.C: - if !ttles.indexDirty { - continue - } - - ttles.Lock() - err := ttles.writeState() - if err != nil { - context.GetLogger(ttles.ctx).Errorf("Error writing scheduler state: %s", err) - } else { - ttles.indexDirty = false - } - ttles.Unlock() - - case <-ttles.doneChan: - return - } - } - }() - - return nil -} - -func (ttles *TTLExpirationScheduler) add(r reference.Reference, ttl time.Duration, eType int) { - entry := &schedulerEntry{ - Key: r.String(), - Expiry: time.Now().Add(ttl), - EntryType: eType, - } - context.GetLogger(ttles.ctx).Infof("Adding new scheduler entry for %s with ttl=%s", entry.Key, entry.Expiry.Sub(time.Now())) - if oldEntry, present := ttles.entries[entry.Key]; present && oldEntry.timer != nil { - oldEntry.timer.Stop() - } - ttles.entries[entry.Key] = entry - entry.timer = ttles.startTimer(entry, ttl) - ttles.indexDirty = true -} - -func (ttles *TTLExpirationScheduler) startTimer(entry *schedulerEntry, ttl time.Duration) *time.Timer { - return time.AfterFunc(ttl, func() { - ttles.Lock() - defer ttles.Unlock() - - var f expiryFunc - - switch entry.EntryType { - case entryTypeBlob: - f = ttles.onBlobExpire - case entryTypeManifest: - f = ttles.onManifestExpire - default: - f = func(reference.Reference) error { - return fmt.Errorf("scheduler entry type") - } - } - - ref, err := reference.Parse(entry.Key) - if err == nil { - if err := f(ref); err != nil { - context.GetLogger(ttles.ctx).Errorf("Scheduler error returned from OnExpire(%s): %s", entry.Key, err) - } - } else { - context.GetLogger(ttles.ctx).Errorf("Error unpacking reference: %s", err) - } - - delete(ttles.entries, entry.Key) - ttles.indexDirty = true - }) -} - -// Stop stops the scheduler. -func (ttles *TTLExpirationScheduler) Stop() { - ttles.Lock() - defer ttles.Unlock() - - if err := ttles.writeState(); err != nil { - context.GetLogger(ttles.ctx).Errorf("Error writing scheduler state: %s", err) - } - - for _, entry := range ttles.entries { - entry.timer.Stop() - } - - close(ttles.doneChan) - ttles.saveTimer.Stop() - ttles.stopped = true -} - -func (ttles *TTLExpirationScheduler) writeState() error { - jsonBytes, err := json.Marshal(ttles.entries) - if err != nil { - return err - } - - err = ttles.driver.PutContent(ttles.ctx, ttles.pathToStateFile, jsonBytes) - if err != nil { - return err - } - - return nil -} - -func (ttles *TTLExpirationScheduler) readState() error { - if _, err := ttles.driver.Stat(ttles.ctx, ttles.pathToStateFile); err != nil { - switch err := err.(type) { - case driver.PathNotFoundError: - return nil - default: - return err - } - } - - bytes, err := ttles.driver.GetContent(ttles.ctx, ttles.pathToStateFile) - if err != nil { - return err - } - - err = json.Unmarshal(bytes, &ttles.entries) - if err != nil { - return err - } - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/proxy/scheduler/scheduler_test.go b/vendor/github.com/docker/distribution/registry/proxy/scheduler/scheduler_test.go deleted file mode 100644 index 556f52045b..0000000000 --- a/vendor/github.com/docker/distribution/registry/proxy/scheduler/scheduler_test.go +++ /dev/null @@ -1,188 +0,0 @@ -package scheduler - -import ( - "encoding/json" - "testing" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -func testRefs(t *testing.T) (reference.Reference, reference.Reference, reference.Reference) { - ref1, err := reference.Parse("testrepo@sha256:aaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") - if err != nil { - t.Fatalf("could not parse reference: %v", err) - } - - ref2, err := reference.Parse("testrepo@sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb") - if err != nil { - t.Fatalf("could not parse reference: %v", err) - } - - ref3, err := reference.Parse("testrepo@sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc") - if err != nil { - t.Fatalf("could not parse reference: %v", err) - } - - return ref1, ref2, ref3 -} - -func TestSchedule(t *testing.T) { - ref1, ref2, ref3 := testRefs(t) - timeUnit := time.Millisecond - remainingRepos := map[string]bool{ - ref1.String(): true, - ref2.String(): true, - ref3.String(): true, - } - - s := New(context.Background(), inmemory.New(), "/ttl") - deleteFunc := func(repoName reference.Reference) error { - if len(remainingRepos) == 0 { - t.Fatalf("Incorrect expiry count") - } - _, ok := remainingRepos[repoName.String()] - if !ok { - t.Fatalf("Trying to remove nonexistent repo: %s", repoName) - } - t.Log("removing", repoName) - delete(remainingRepos, repoName.String()) - - return nil - } - s.onBlobExpire = deleteFunc - err := s.Start() - if err != nil { - t.Fatalf("Error starting ttlExpirationScheduler: %s", err) - } - - s.add(ref1, 3*timeUnit, entryTypeBlob) - s.add(ref2, 1*timeUnit, entryTypeBlob) - - func() { - s.add(ref3, 1*timeUnit, entryTypeBlob) - - }() - - // Ensure all repos are deleted - <-time.After(50 * timeUnit) - if len(remainingRepos) != 0 { - t.Fatalf("Repositories remaining: %#v", remainingRepos) - } -} - -func TestRestoreOld(t *testing.T) { - ref1, ref2, _ := testRefs(t) - remainingRepos := map[string]bool{ - ref1.String(): true, - ref2.String(): true, - } - - deleteFunc := func(r reference.Reference) error { - if r.String() == ref1.String() && len(remainingRepos) == 2 { - t.Errorf("ref1 should be removed first") - } - _, ok := remainingRepos[r.String()] - if !ok { - t.Fatalf("Trying to remove nonexistent repo: %s", r) - } - delete(remainingRepos, r.String()) - return nil - } - - timeUnit := time.Millisecond - serialized, err := json.Marshal(&map[string]schedulerEntry{ - ref1.String(): { - Expiry: time.Now().Add(1 * timeUnit), - Key: ref1.String(), - EntryType: 0, - }, - ref2.String(): { - Expiry: time.Now().Add(-3 * timeUnit), // TTL passed, should be removed first - Key: ref2.String(), - EntryType: 0, - }, - }) - if err != nil { - t.Fatalf("Error serializing test data: %s", err.Error()) - } - - ctx := context.Background() - pathToStatFile := "/ttl" - fs := inmemory.New() - err = fs.PutContent(ctx, pathToStatFile, serialized) - if err != nil { - t.Fatal("Unable to write serialized data to fs") - } - s := New(context.Background(), fs, "/ttl") - s.onBlobExpire = deleteFunc - err = s.Start() - if err != nil { - t.Fatalf("Error starting ttlExpirationScheduler: %s", err) - } - - <-time.After(50 * timeUnit) - if len(remainingRepos) != 0 { - t.Fatalf("Repositories remaining: %#v", remainingRepos) - } -} - -func TestStopRestore(t *testing.T) { - ref1, ref2, _ := testRefs(t) - - timeUnit := time.Millisecond - remainingRepos := map[string]bool{ - ref1.String(): true, - ref2.String(): true, - } - - deleteFunc := func(r reference.Reference) error { - delete(remainingRepos, r.String()) - return nil - } - - fs := inmemory.New() - pathToStateFile := "/ttl" - s := New(context.Background(), fs, pathToStateFile) - s.onBlobExpire = deleteFunc - - err := s.Start() - if err != nil { - t.Fatalf(err.Error()) - } - s.add(ref1, 300*timeUnit, entryTypeBlob) - s.add(ref2, 100*timeUnit, entryTypeBlob) - - // Start and stop before all operations complete - // state will be written to fs - s.Stop() - time.Sleep(10 * time.Millisecond) - - // v2 will restore state from fs - s2 := New(context.Background(), fs, pathToStateFile) - s2.onBlobExpire = deleteFunc - err = s2.Start() - if err != nil { - t.Fatalf("Error starting v2: %s", err.Error()) - } - - <-time.After(500 * timeUnit) - if len(remainingRepos) != 0 { - t.Fatalf("Repositories remaining: %#v", remainingRepos) - } - -} - -func TestDoubleStart(t *testing.T) { - s := New(context.Background(), inmemory.New(), "/ttl") - err := s.Start() - if err != nil { - t.Fatalf("Unable to start scheduler") - } - err = s.Start() - if err == nil { - t.Fatalf("Scheduler started twice without error") - } -} diff --git a/vendor/github.com/docker/distribution/registry/registry.go b/vendor/github.com/docker/distribution/registry/registry.go deleted file mode 100644 index a1ba3b1a9d..0000000000 --- a/vendor/github.com/docker/distribution/registry/registry.go +++ /dev/null @@ -1,327 +0,0 @@ -package registry - -import ( - "crypto/tls" - "crypto/x509" - "fmt" - "io/ioutil" - "net/http" - "os" - "time" - - log "github.com/Sirupsen/logrus" - "github.com/Sirupsen/logrus/formatters/logstash" - "github.com/bugsnag/bugsnag-go" - "github.com/docker/distribution/configuration" - "github.com/docker/distribution/context" - "github.com/docker/distribution/health" - "github.com/docker/distribution/registry/handlers" - "github.com/docker/distribution/registry/listener" - "github.com/docker/distribution/uuid" - "github.com/docker/distribution/version" - gorhandlers "github.com/gorilla/handlers" - "github.com/spf13/cobra" - "github.com/yvasiyarov/gorelic" -) - -// ServeCmd is a cobra command for running the registry. -var ServeCmd = &cobra.Command{ - Use: "serve ", - Short: "`serve` stores and distributes Docker images", - Long: "`serve` stores and distributes Docker images.", - Run: func(cmd *cobra.Command, args []string) { - - // setup context - ctx := context.WithVersion(context.Background(), version.Version) - - config, err := resolveConfiguration(args) - if err != nil { - fmt.Fprintf(os.Stderr, "configuration error: %v\n", err) - cmd.Usage() - os.Exit(1) - } - - if config.HTTP.Debug.Addr != "" { - go func(addr string) { - log.Infof("debug server listening %v", addr) - if err := http.ListenAndServe(addr, nil); err != nil { - log.Fatalf("error listening on debug interface: %v", err) - } - }(config.HTTP.Debug.Addr) - } - - registry, err := NewRegistry(ctx, config) - if err != nil { - log.Fatalln(err) - } - - if err = registry.ListenAndServe(); err != nil { - log.Fatalln(err) - } - }, -} - -// A Registry represents a complete instance of the registry. -// TODO(aaronl): It might make sense for Registry to become an interface. -type Registry struct { - config *configuration.Configuration - app *handlers.App - server *http.Server -} - -// NewRegistry creates a new registry from a context and configuration struct. -func NewRegistry(ctx context.Context, config *configuration.Configuration) (*Registry, error) { - var err error - ctx, err = configureLogging(ctx, config) - if err != nil { - return nil, fmt.Errorf("error configuring logger: %v", err) - } - - // inject a logger into the uuid library. warns us if there is a problem - // with uuid generation under low entropy. - uuid.Loggerf = context.GetLogger(ctx).Warnf - - app := handlers.NewApp(ctx, config) - // TODO(aaronl): The global scope of the health checks means NewRegistry - // can only be called once per process. - app.RegisterHealthChecks() - handler := configureReporting(app) - handler = alive("/", handler) - handler = health.Handler(handler) - handler = panicHandler(handler) - handler = gorhandlers.CombinedLoggingHandler(os.Stdout, handler) - - server := &http.Server{ - Handler: handler, - } - - return &Registry{ - app: app, - config: config, - server: server, - }, nil -} - -// ListenAndServe runs the registry's HTTP server. -func (registry *Registry) ListenAndServe() error { - config := registry.config - - ln, err := listener.NewListener(config.HTTP.Net, config.HTTP.Addr) - if err != nil { - return err - } - - if config.HTTP.TLS.Certificate != "" { - tlsConf := &tls.Config{ - ClientAuth: tls.NoClientCert, - NextProtos: []string{"http/1.1"}, - Certificates: make([]tls.Certificate, 1), - MinVersion: tls.VersionTLS10, - PreferServerCipherSuites: true, - CipherSuites: []uint16{ - tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - tls.TLS_RSA_WITH_AES_128_CBC_SHA, - tls.TLS_RSA_WITH_AES_256_CBC_SHA, - }, - } - - tlsConf.Certificates[0], err = tls.LoadX509KeyPair(config.HTTP.TLS.Certificate, config.HTTP.TLS.Key) - if err != nil { - return err - } - - if len(config.HTTP.TLS.ClientCAs) != 0 { - pool := x509.NewCertPool() - - for _, ca := range config.HTTP.TLS.ClientCAs { - caPem, err := ioutil.ReadFile(ca) - if err != nil { - return err - } - - if ok := pool.AppendCertsFromPEM(caPem); !ok { - return fmt.Errorf("Could not add CA to pool") - } - } - - for _, subj := range pool.Subjects() { - context.GetLogger(registry.app).Debugf("CA Subject: %s", string(subj)) - } - - tlsConf.ClientAuth = tls.RequireAndVerifyClientCert - tlsConf.ClientCAs = pool - } - - ln = tls.NewListener(ln, tlsConf) - context.GetLogger(registry.app).Infof("listening on %v, tls", ln.Addr()) - } else { - context.GetLogger(registry.app).Infof("listening on %v", ln.Addr()) - } - - return registry.server.Serve(ln) -} - -func configureReporting(app *handlers.App) http.Handler { - var handler http.Handler = app - - if app.Config.Reporting.Bugsnag.APIKey != "" { - bugsnagConfig := bugsnag.Configuration{ - APIKey: app.Config.Reporting.Bugsnag.APIKey, - // TODO(brianbland): provide the registry version here - // AppVersion: "2.0", - } - if app.Config.Reporting.Bugsnag.ReleaseStage != "" { - bugsnagConfig.ReleaseStage = app.Config.Reporting.Bugsnag.ReleaseStage - } - if app.Config.Reporting.Bugsnag.Endpoint != "" { - bugsnagConfig.Endpoint = app.Config.Reporting.Bugsnag.Endpoint - } - bugsnag.Configure(bugsnagConfig) - - handler = bugsnag.Handler(handler) - } - - if app.Config.Reporting.NewRelic.LicenseKey != "" { - agent := gorelic.NewAgent() - agent.NewrelicLicense = app.Config.Reporting.NewRelic.LicenseKey - if app.Config.Reporting.NewRelic.Name != "" { - agent.NewrelicName = app.Config.Reporting.NewRelic.Name - } - agent.CollectHTTPStat = true - agent.Verbose = app.Config.Reporting.NewRelic.Verbose - agent.Run() - - handler = agent.WrapHTTPHandler(handler) - } - - return handler -} - -// configureLogging prepares the context with a logger using the -// configuration. -func configureLogging(ctx context.Context, config *configuration.Configuration) (context.Context, error) { - if config.Log.Level == "" && config.Log.Formatter == "" { - // If no config for logging is set, fallback to deprecated "Loglevel". - log.SetLevel(logLevel(config.Loglevel)) - ctx = context.WithLogger(ctx, context.GetLogger(ctx)) - return ctx, nil - } - - log.SetLevel(logLevel(config.Log.Level)) - - formatter := config.Log.Formatter - if formatter == "" { - formatter = "text" // default formatter - } - - switch formatter { - case "json": - log.SetFormatter(&log.JSONFormatter{ - TimestampFormat: time.RFC3339Nano, - }) - case "text": - log.SetFormatter(&log.TextFormatter{ - TimestampFormat: time.RFC3339Nano, - }) - case "logstash": - log.SetFormatter(&logstash.LogstashFormatter{ - TimestampFormat: time.RFC3339Nano, - }) - default: - // just let the library use default on empty string. - if config.Log.Formatter != "" { - return ctx, fmt.Errorf("unsupported logging formatter: %q", config.Log.Formatter) - } - } - - if config.Log.Formatter != "" { - log.Debugf("using %q logging formatter", config.Log.Formatter) - } - - if len(config.Log.Fields) > 0 { - // build up the static fields, if present. - var fields []interface{} - for k := range config.Log.Fields { - fields = append(fields, k) - } - - ctx = context.WithValues(ctx, config.Log.Fields) - ctx = context.WithLogger(ctx, context.GetLogger(ctx, fields...)) - } - - return ctx, nil -} - -func logLevel(level configuration.Loglevel) log.Level { - l, err := log.ParseLevel(string(level)) - if err != nil { - l = log.InfoLevel - log.Warnf("error parsing level %q: %v, using %q ", level, err, l) - } - - return l -} - -// panicHandler add a HTTP handler to web app. The handler recover the happening -// panic. logrus.Panic transmits panic message to pre-config log hooks, which is -// defined in config.yml. -func panicHandler(handler http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer func() { - if err := recover(); err != nil { - log.Panic(fmt.Sprintf("%v", err)) - } - }() - handler.ServeHTTP(w, r) - }) -} - -// alive simply wraps the handler with a route that always returns an http 200 -// response when the path is matched. If the path is not matched, the request -// is passed to the provided handler. There is no guarantee of anything but -// that the server is up. Wrap with other handlers (such as health.Handler) -// for greater affect. -func alive(path string, handler http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.URL.Path == path { - w.Header().Set("Cache-Control", "no-cache") - w.WriteHeader(http.StatusOK) - return - } - - handler.ServeHTTP(w, r) - }) -} - -func resolveConfiguration(args []string) (*configuration.Configuration, error) { - var configurationPath string - - if len(args) > 0 { - configurationPath = args[0] - } else if os.Getenv("REGISTRY_CONFIGURATION_PATH") != "" { - configurationPath = os.Getenv("REGISTRY_CONFIGURATION_PATH") - } - - if configurationPath == "" { - return nil, fmt.Errorf("configuration path unspecified") - } - - fp, err := os.Open(configurationPath) - if err != nil { - return nil, err - } - - defer fp.Close() - - config, err := configuration.Parse(fp) - if err != nil { - return nil, fmt.Errorf("error parsing %s: %v", configurationPath, err) - } - - return config, nil -} diff --git a/vendor/github.com/docker/distribution/registry/root.go b/vendor/github.com/docker/distribution/registry/root.go deleted file mode 100644 index 46338b46e7..0000000000 --- a/vendor/github.com/docker/distribution/registry/root.go +++ /dev/null @@ -1,28 +0,0 @@ -package registry - -import ( - "github.com/docker/distribution/version" - "github.com/spf13/cobra" -) - -var showVersion bool - -func init() { - RootCmd.AddCommand(ServeCmd) - RootCmd.AddCommand(GCCmd) - RootCmd.Flags().BoolVarP(&showVersion, "version", "v", false, "show the version and exit") -} - -// RootCmd is the main command for the 'registry' binary. -var RootCmd = &cobra.Command{ - Use: "registry", - Short: "`registry`", - Long: "`registry`", - Run: func(cmd *cobra.Command, args []string) { - if showVersion { - version.PrintVersion() - return - } - cmd.Usage() - }, -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blob_test.go b/vendor/github.com/docker/distribution/registry/storage/blob_test.go deleted file mode 100644 index 3698a415df..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blob_test.go +++ /dev/null @@ -1,594 +0,0 @@ -package storage - -import ( - "bytes" - "crypto/sha256" - "fmt" - "io" - "io/ioutil" - "os" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/testutil" -) - -// TestWriteSeek tests that the current file size can be -// obtained using Seek -func TestWriteSeek(t *testing.T) { - ctx := context.Background() - imageName, _ := reference.ParseNamed("foo/bar") - driver := inmemory.New() - registry, err := NewRegistry(ctx, driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - repository, err := registry.Repository(ctx, imageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - bs := repository.Blobs(ctx) - - blobUpload, err := bs.Create(ctx) - - if err != nil { - t.Fatalf("unexpected error starting layer upload: %s", err) - } - contents := []byte{1, 2, 3} - blobUpload.Write(contents) - offset := blobUpload.Size() - if offset != int64(len(contents)) { - t.Fatalf("unexpected value for blobUpload offset: %v != %v", offset, len(contents)) - } - -} - -// TestSimpleBlobUpload covers the blob upload process, exercising common -// error paths that might be seen during an upload. -func TestSimpleBlobUpload(t *testing.T) { - randomDataReader, dgst, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating random reader: %v", err) - } - - ctx := context.Background() - imageName, _ := reference.ParseNamed("foo/bar") - driver := inmemory.New() - registry, err := NewRegistry(ctx, driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - repository, err := registry.Repository(ctx, imageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - bs := repository.Blobs(ctx) - - h := sha256.New() - rd := io.TeeReader(randomDataReader, h) - - blobUpload, err := bs.Create(ctx) - - if err != nil { - t.Fatalf("unexpected error starting layer upload: %s", err) - } - - // Cancel the upload then restart it - if err := blobUpload.Cancel(ctx); err != nil { - t.Fatalf("unexpected error during upload cancellation: %v", err) - } - - // Do a resume, get unknown upload - blobUpload, err = bs.Resume(ctx, blobUpload.ID()) - if err != distribution.ErrBlobUploadUnknown { - t.Fatalf("unexpected error resuming upload, should be unknown: %v", err) - } - - // Restart! - blobUpload, err = bs.Create(ctx) - if err != nil { - t.Fatalf("unexpected error starting layer upload: %s", err) - } - - // Get the size of our random tarfile - randomDataSize, err := seekerSize(randomDataReader) - if err != nil { - t.Fatalf("error getting seeker size of random data: %v", err) - } - - nn, err := io.Copy(blobUpload, rd) - if err != nil { - t.Fatalf("unexpected error uploading layer data: %v", err) - } - - if nn != randomDataSize { - t.Fatalf("layer data write incomplete") - } - - offset := blobUpload.Size() - if offset != nn { - t.Fatalf("blobUpload not updated with correct offset: %v != %v", offset, nn) - } - blobUpload.Close() - - // Do a resume, for good fun - blobUpload, err = bs.Resume(ctx, blobUpload.ID()) - if err != nil { - t.Fatalf("unexpected error resuming upload: %v", err) - } - - sha256Digest := digest.NewDigest("sha256", h) - desc, err := blobUpload.Commit(ctx, distribution.Descriptor{Digest: dgst}) - if err != nil { - t.Fatalf("unexpected error finishing layer upload: %v", err) - } - - // After finishing an upload, it should no longer exist. - if _, err := bs.Resume(ctx, blobUpload.ID()); err != distribution.ErrBlobUploadUnknown { - t.Fatalf("expected layer upload to be unknown, got %v", err) - } - - // Test for existence. - statDesc, err := bs.Stat(ctx, desc.Digest) - if err != nil { - t.Fatalf("unexpected error checking for existence: %v, %#v", err, bs) - } - - if statDesc != desc { - t.Fatalf("descriptors not equal: %v != %v", statDesc, desc) - } - - rc, err := bs.Open(ctx, desc.Digest) - if err != nil { - t.Fatalf("unexpected error opening blob for read: %v", err) - } - defer rc.Close() - - h.Reset() - nn, err = io.Copy(h, rc) - if err != nil { - t.Fatalf("error reading layer: %v", err) - } - - if nn != randomDataSize { - t.Fatalf("incorrect read length") - } - - if digest.NewDigest("sha256", h) != sha256Digest { - t.Fatalf("unexpected digest from uploaded layer: %q != %q", digest.NewDigest("sha256", h), sha256Digest) - } - - // Delete a blob - err = bs.Delete(ctx, desc.Digest) - if err != nil { - t.Fatalf("Unexpected error deleting blob") - } - - d, err := bs.Stat(ctx, desc.Digest) - if err == nil { - t.Fatalf("unexpected non-error stating deleted blob: %v", d) - } - - switch err { - case distribution.ErrBlobUnknown: - break - default: - t.Errorf("Unexpected error type stat-ing deleted manifest: %#v", err) - } - - _, err = bs.Open(ctx, desc.Digest) - if err == nil { - t.Fatalf("unexpected success opening deleted blob for read") - } - - switch err { - case distribution.ErrBlobUnknown: - break - default: - t.Errorf("Unexpected error type getting deleted manifest: %#v", err) - } - - // Re-upload the blob - randomBlob, err := ioutil.ReadAll(randomDataReader) - if err != nil { - t.Fatalf("Error reading all of blob %s", err.Error()) - } - expectedDigest := digest.FromBytes(randomBlob) - simpleUpload(t, bs, randomBlob, expectedDigest) - - d, err = bs.Stat(ctx, expectedDigest) - if err != nil { - t.Errorf("unexpected error stat-ing blob") - } - if d.Digest != expectedDigest { - t.Errorf("Mismatching digest with restored blob") - } - - _, err = bs.Open(ctx, expectedDigest) - if err != nil { - t.Errorf("Unexpected error opening blob") - } - - // Reuse state to test delete with a delete-disabled registry - registry, err = NewRegistry(ctx, driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - repository, err = registry.Repository(ctx, imageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - bs = repository.Blobs(ctx) - err = bs.Delete(ctx, desc.Digest) - if err == nil { - t.Errorf("Unexpected success deleting while disabled") - } -} - -// TestSimpleBlobRead just creates a simple blob file and ensures that basic -// open, read, seek, read works. More specific edge cases should be covered in -// other tests. -func TestSimpleBlobRead(t *testing.T) { - ctx := context.Background() - imageName, _ := reference.ParseNamed("foo/bar") - driver := inmemory.New() - registry, err := NewRegistry(ctx, driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - repository, err := registry.Repository(ctx, imageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - bs := repository.Blobs(ctx) - - randomLayerReader, dgst, err := testutil.CreateRandomTarFile() // TODO(stevvooe): Consider using just a random string. - if err != nil { - t.Fatalf("error creating random data: %v", err) - } - - // Test for existence. - desc, err := bs.Stat(ctx, dgst) - if err != distribution.ErrBlobUnknown { - t.Fatalf("expected not found error when testing for existence: %v", err) - } - - rc, err := bs.Open(ctx, dgst) - if err != distribution.ErrBlobUnknown { - t.Fatalf("expected not found error when opening non-existent blob: %v", err) - } - - randomLayerSize, err := seekerSize(randomLayerReader) - if err != nil { - t.Fatalf("error getting seeker size for random layer: %v", err) - } - - descBefore := distribution.Descriptor{Digest: dgst, MediaType: "application/octet-stream", Size: randomLayerSize} - t.Logf("desc: %v", descBefore) - - desc, err = addBlob(ctx, bs, descBefore, randomLayerReader) - if err != nil { - t.Fatalf("error adding blob to blobservice: %v", err) - } - - if desc.Size != randomLayerSize { - t.Fatalf("committed blob has incorrect length: %v != %v", desc.Size, randomLayerSize) - } - - rc, err = bs.Open(ctx, desc.Digest) // note that we are opening with original digest. - if err != nil { - t.Fatalf("error opening blob with %v: %v", dgst, err) - } - defer rc.Close() - - // Now check the sha digest and ensure its the same - h := sha256.New() - nn, err := io.Copy(h, rc) - if err != nil { - t.Fatalf("unexpected error copying to hash: %v", err) - } - - if nn != randomLayerSize { - t.Fatalf("stored incorrect number of bytes in blob: %d != %d", nn, randomLayerSize) - } - - sha256Digest := digest.NewDigest("sha256", h) - if sha256Digest != desc.Digest { - t.Fatalf("fetched digest does not match: %q != %q", sha256Digest, desc.Digest) - } - - // Now seek back the blob, read the whole thing and check against randomLayerData - offset, err := rc.Seek(0, os.SEEK_SET) - if err != nil { - t.Fatalf("error seeking blob: %v", err) - } - - if offset != 0 { - t.Fatalf("seek failed: expected 0 offset, got %d", offset) - } - - p, err := ioutil.ReadAll(rc) - if err != nil { - t.Fatalf("error reading all of blob: %v", err) - } - - if len(p) != int(randomLayerSize) { - t.Fatalf("blob data read has different length: %v != %v", len(p), randomLayerSize) - } - - // Reset the randomLayerReader and read back the buffer - _, err = randomLayerReader.Seek(0, os.SEEK_SET) - if err != nil { - t.Fatalf("error resetting layer reader: %v", err) - } - - randomLayerData, err := ioutil.ReadAll(randomLayerReader) - if err != nil { - t.Fatalf("random layer read failed: %v", err) - } - - if !bytes.Equal(p, randomLayerData) { - t.Fatalf("layer data not equal") - } -} - -// TestBlobMount covers the blob mount process, exercising common -// error paths that might be seen during a mount. -func TestBlobMount(t *testing.T) { - randomDataReader, dgst, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("error creating random reader: %v", err) - } - - ctx := context.Background() - imageName, _ := reference.ParseNamed("foo/bar") - sourceImageName, _ := reference.ParseNamed("foo/source") - driver := inmemory.New() - registry, err := NewRegistry(ctx, driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - - repository, err := registry.Repository(ctx, imageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - sourceRepository, err := registry.Repository(ctx, sourceImageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - - sbs := sourceRepository.Blobs(ctx) - - blobUpload, err := sbs.Create(ctx) - - if err != nil { - t.Fatalf("unexpected error starting layer upload: %s", err) - } - - // Get the size of our random tarfile - randomDataSize, err := seekerSize(randomDataReader) - if err != nil { - t.Fatalf("error getting seeker size of random data: %v", err) - } - - nn, err := io.Copy(blobUpload, randomDataReader) - if err != nil { - t.Fatalf("unexpected error uploading layer data: %v", err) - } - - desc, err := blobUpload.Commit(ctx, distribution.Descriptor{Digest: dgst}) - if err != nil { - t.Fatalf("unexpected error finishing layer upload: %v", err) - } - - // Test for existence. - statDesc, err := sbs.Stat(ctx, desc.Digest) - if err != nil { - t.Fatalf("unexpected error checking for existence: %v, %#v", err, sbs) - } - - if statDesc != desc { - t.Fatalf("descriptors not equal: %v != %v", statDesc, desc) - } - - bs := repository.Blobs(ctx) - // Test destination for existence. - statDesc, err = bs.Stat(ctx, desc.Digest) - if err == nil { - t.Fatalf("unexpected non-error stating unmounted blob: %v", desc) - } - - canonicalRef, err := reference.WithDigest(sourceRepository.Named(), desc.Digest) - if err != nil { - t.Fatal(err) - } - - bw, err := bs.Create(ctx, WithMountFrom(canonicalRef)) - if bw != nil { - t.Fatal("unexpected blobwriter returned from Create call, should mount instead") - } - - ebm, ok := err.(distribution.ErrBlobMounted) - if !ok { - t.Fatalf("unexpected error mounting layer: %v", err) - } - - if ebm.Descriptor != desc { - t.Fatalf("descriptors not equal: %v != %v", ebm.Descriptor, desc) - } - - // Test for existence. - statDesc, err = bs.Stat(ctx, desc.Digest) - if err != nil { - t.Fatalf("unexpected error checking for existence: %v, %#v", err, bs) - } - - if statDesc != desc { - t.Fatalf("descriptors not equal: %v != %v", statDesc, desc) - } - - rc, err := bs.Open(ctx, desc.Digest) - if err != nil { - t.Fatalf("unexpected error opening blob for read: %v", err) - } - defer rc.Close() - - h := sha256.New() - nn, err = io.Copy(h, rc) - if err != nil { - t.Fatalf("error reading layer: %v", err) - } - - if nn != randomDataSize { - t.Fatalf("incorrect read length") - } - - if digest.NewDigest("sha256", h) != dgst { - t.Fatalf("unexpected digest from uploaded layer: %q != %q", digest.NewDigest("sha256", h), dgst) - } - - // Delete the blob from the source repo - err = sbs.Delete(ctx, desc.Digest) - if err != nil { - t.Fatalf("Unexpected error deleting blob") - } - - d, err := bs.Stat(ctx, desc.Digest) - if err != nil { - t.Fatalf("unexpected error stating blob deleted from source repository: %v", err) - } - - d, err = sbs.Stat(ctx, desc.Digest) - if err == nil { - t.Fatalf("unexpected non-error stating deleted blob: %v", d) - } - - switch err { - case distribution.ErrBlobUnknown: - break - default: - t.Errorf("Unexpected error type stat-ing deleted manifest: %#v", err) - } - - // Delete the blob from the dest repo - err = bs.Delete(ctx, desc.Digest) - if err != nil { - t.Fatalf("Unexpected error deleting blob") - } - - d, err = bs.Stat(ctx, desc.Digest) - if err == nil { - t.Fatalf("unexpected non-error stating deleted blob: %v", d) - } - - switch err { - case distribution.ErrBlobUnknown: - break - default: - t.Errorf("Unexpected error type stat-ing deleted manifest: %#v", err) - } -} - -// TestLayerUploadZeroLength uploads zero-length -func TestLayerUploadZeroLength(t *testing.T) { - ctx := context.Background() - imageName, _ := reference.ParseNamed("foo/bar") - driver := inmemory.New() - registry, err := NewRegistry(ctx, driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - repository, err := registry.Repository(ctx, imageName) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - bs := repository.Blobs(ctx) - - simpleUpload(t, bs, []byte{}, digest.DigestSha256EmptyTar) -} - -func simpleUpload(t *testing.T, bs distribution.BlobIngester, blob []byte, expectedDigest digest.Digest) { - ctx := context.Background() - wr, err := bs.Create(ctx) - if err != nil { - t.Fatalf("unexpected error starting upload: %v", err) - } - - nn, err := io.Copy(wr, bytes.NewReader(blob)) - if err != nil { - t.Fatalf("error copying into blob writer: %v", err) - } - - if nn != 0 { - t.Fatalf("unexpected number of bytes copied: %v > 0", nn) - } - - dgst, err := digest.FromReader(bytes.NewReader(blob)) - if err != nil { - t.Fatalf("error getting digest: %v", err) - } - - if dgst != expectedDigest { - // sanity check on zero digest - t.Fatalf("digest not as expected: %v != %v", dgst, expectedDigest) - } - - desc, err := wr.Commit(ctx, distribution.Descriptor{Digest: dgst}) - if err != nil { - t.Fatalf("unexpected error committing write: %v", err) - } - - if desc.Digest != dgst { - t.Fatalf("unexpected digest: %v != %v", desc.Digest, dgst) - } -} - -// seekerSize seeks to the end of seeker, checks the size and returns it to -// the original state, returning the size. The state of the seeker should be -// treated as unknown if an error is returned. -func seekerSize(seeker io.ReadSeeker) (int64, error) { - current, err := seeker.Seek(0, os.SEEK_CUR) - if err != nil { - return 0, err - } - - end, err := seeker.Seek(0, os.SEEK_END) - if err != nil { - return 0, err - } - - resumed, err := seeker.Seek(current, os.SEEK_SET) - if err != nil { - return 0, err - } - - if resumed != current { - return 0, fmt.Errorf("error returning seeker to original state, could not seek back to original location") - } - - return end, nil -} - -// addBlob simply consumes the reader and inserts into the blob service, -// returning a descriptor on success. -func addBlob(ctx context.Context, bs distribution.BlobIngester, desc distribution.Descriptor, rd io.Reader) (distribution.Descriptor, error) { - wr, err := bs.Create(ctx) - if err != nil { - return distribution.Descriptor{}, err - } - defer wr.Cancel(ctx) - - if nn, err := io.Copy(wr, rd); err != nil { - return distribution.Descriptor{}, err - } else if nn != desc.Size { - return distribution.Descriptor{}, fmt.Errorf("incorrect number of bytes copied: %v != %v", nn, desc.Size) - } - - return wr.Commit(ctx, desc) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blobcachemetrics.go b/vendor/github.com/docker/distribution/registry/storage/blobcachemetrics.go deleted file mode 100644 index fad0a77a1b..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blobcachemetrics.go +++ /dev/null @@ -1,60 +0,0 @@ -package storage - -import ( - "expvar" - "sync/atomic" - - "github.com/docker/distribution/registry/storage/cache" -) - -type blobStatCollector struct { - metrics cache.Metrics -} - -func (bsc *blobStatCollector) Hit() { - atomic.AddUint64(&bsc.metrics.Requests, 1) - atomic.AddUint64(&bsc.metrics.Hits, 1) -} - -func (bsc *blobStatCollector) Miss() { - atomic.AddUint64(&bsc.metrics.Requests, 1) - atomic.AddUint64(&bsc.metrics.Misses, 1) -} - -func (bsc *blobStatCollector) Metrics() cache.Metrics { - return bsc.metrics -} - -// blobStatterCacheMetrics keeps track of cache metrics for blob descriptor -// cache requests. Note this is kept globally and made available via expvar. -// For more detailed metrics, its recommend to instrument a particular cache -// implementation. -var blobStatterCacheMetrics cache.MetricsTracker = &blobStatCollector{} - -func init() { - registry := expvar.Get("registry") - if registry == nil { - registry = expvar.NewMap("registry") - } - - cache := registry.(*expvar.Map).Get("cache") - if cache == nil { - cache = &expvar.Map{} - cache.(*expvar.Map).Init() - registry.(*expvar.Map).Set("cache", cache) - } - - storage := cache.(*expvar.Map).Get("storage") - if storage == nil { - storage = &expvar.Map{} - storage.(*expvar.Map).Init() - cache.(*expvar.Map).Set("storage", storage) - } - - storage.(*expvar.Map).Set("blobdescriptor", expvar.Func(func() interface{} { - // no need for synchronous access: the increments are atomic and - // during reading, we don't care if the data is up to date. The - // numbers will always *eventually* be reported correctly. - return blobStatterCacheMetrics - })) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blobserver.go b/vendor/github.com/docker/distribution/registry/storage/blobserver.go deleted file mode 100644 index 2655e01139..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blobserver.go +++ /dev/null @@ -1,78 +0,0 @@ -package storage - -import ( - "fmt" - "net/http" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/storage/driver" -) - -// TODO(stevvooe): This should configurable in the future. -const blobCacheControlMaxAge = 365 * 24 * time.Hour - -// blobServer simply serves blobs from a driver instance using a path function -// to identify paths and a descriptor service to fill in metadata. -type blobServer struct { - driver driver.StorageDriver - statter distribution.BlobStatter - pathFn func(dgst digest.Digest) (string, error) - redirect bool // allows disabling URLFor redirects -} - -func (bs *blobServer) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error { - desc, err := bs.statter.Stat(ctx, dgst) - if err != nil { - return err - } - - path, err := bs.pathFn(desc.Digest) - if err != nil { - return err - } - - if bs.redirect { - redirectURL, err := bs.driver.URLFor(ctx, path, map[string]interface{}{"method": r.Method}) - switch err.(type) { - case nil: - // Redirect to storage URL. - http.Redirect(w, r, redirectURL, http.StatusTemporaryRedirect) - return err - - case driver.ErrUnsupportedMethod: - // Fallback to serving the content directly. - default: - // Some unexpected error. - return err - } - } - - br, err := newFileReader(ctx, bs.driver, path, desc.Size) - if err != nil { - return err - } - defer br.Close() - - w.Header().Set("ETag", fmt.Sprintf(`"%s"`, desc.Digest)) // If-None-Match handled by ServeContent - w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%.f", blobCacheControlMaxAge.Seconds())) - - if w.Header().Get("Docker-Content-Digest") == "" { - w.Header().Set("Docker-Content-Digest", desc.Digest.String()) - } - - if w.Header().Get("Content-Type") == "" { - // Set the content type if not already set. - w.Header().Set("Content-Type", desc.MediaType) - } - - if w.Header().Get("Content-Length") == "" { - // Set the content length if not already set. - w.Header().Set("Content-Length", fmt.Sprint(desc.Size)) - } - - http.ServeContent(w, r, desc.Digest.String(), time.Time{}, br) - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blobstore.go b/vendor/github.com/docker/distribution/registry/storage/blobstore.go deleted file mode 100644 index 9034cb6895..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blobstore.go +++ /dev/null @@ -1,224 +0,0 @@ -package storage - -import ( - "path" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/storage/driver" -) - -// blobStore implements the read side of the blob store interface over a -// driver without enforcing per-repository membership. This object is -// intentionally a leaky abstraction, providing utility methods that support -// creating and traversing backend links. -type blobStore struct { - driver driver.StorageDriver - statter distribution.BlobStatter -} - -var _ distribution.BlobProvider = &blobStore{} - -// Get implements the BlobReadService.Get call. -func (bs *blobStore) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - bp, err := bs.path(dgst) - if err != nil { - return nil, err - } - - p, err := bs.driver.GetContent(ctx, bp) - if err != nil { - switch err.(type) { - case driver.PathNotFoundError: - return nil, distribution.ErrBlobUnknown - } - - return nil, err - } - - return p, err -} - -func (bs *blobStore) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - desc, err := bs.statter.Stat(ctx, dgst) - if err != nil { - return nil, err - } - - path, err := bs.path(desc.Digest) - if err != nil { - return nil, err - } - - return newFileReader(ctx, bs.driver, path, desc.Size) -} - -// Put stores the content p in the blob store, calculating the digest. If the -// content is already present, only the digest will be returned. This should -// only be used for small objects, such as manifests. This implemented as a convenience for other Put implementations -func (bs *blobStore) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - dgst := digest.FromBytes(p) - desc, err := bs.statter.Stat(ctx, dgst) - if err == nil { - // content already present - return desc, nil - } else if err != distribution.ErrBlobUnknown { - context.GetLogger(ctx).Errorf("blobStore: error stating content (%v): %#v", dgst, err) - // real error, return it - return distribution.Descriptor{}, err - } - - bp, err := bs.path(dgst) - if err != nil { - return distribution.Descriptor{}, err - } - - // TODO(stevvooe): Write out mediatype here, as well. - - return distribution.Descriptor{ - Size: int64(len(p)), - - // NOTE(stevvooe): The central blob store firewalls media types from - // other users. The caller should look this up and override the value - // for the specific repository. - MediaType: "application/octet-stream", - Digest: dgst, - }, bs.driver.PutContent(ctx, bp, p) -} - -func (bs *blobStore) Enumerate(ctx context.Context, ingester func(dgst digest.Digest) error) error { - - specPath, err := pathFor(blobsPathSpec{}) - if err != nil { - return err - } - - err = Walk(ctx, bs.driver, specPath, func(fileInfo driver.FileInfo) error { - // skip directories - if fileInfo.IsDir() { - return nil - } - - currentPath := fileInfo.Path() - // we only want to parse paths that end with /data - _, fileName := path.Split(currentPath) - if fileName != "data" { - return nil - } - - digest, err := digestFromPath(currentPath) - if err != nil { - return err - } - - return ingester(digest) - }) - return err -} - -// path returns the canonical path for the blob identified by digest. The blob -// may or may not exist. -func (bs *blobStore) path(dgst digest.Digest) (string, error) { - bp, err := pathFor(blobDataPathSpec{ - digest: dgst, - }) - - if err != nil { - return "", err - } - - return bp, nil -} - -// link links the path to the provided digest by writing the digest into the -// target file. Caller must ensure that the blob actually exists. -func (bs *blobStore) link(ctx context.Context, path string, dgst digest.Digest) error { - // The contents of the "link" file are the exact string contents of the - // digest, which is specified in that package. - return bs.driver.PutContent(ctx, path, []byte(dgst)) -} - -// readlink returns the linked digest at path. -func (bs *blobStore) readlink(ctx context.Context, path string) (digest.Digest, error) { - content, err := bs.driver.GetContent(ctx, path) - if err != nil { - return "", err - } - - linked, err := digest.ParseDigest(string(content)) - if err != nil { - return "", err - } - - return linked, nil -} - -// resolve reads the digest link at path and returns the blob store path. -func (bs *blobStore) resolve(ctx context.Context, path string) (string, error) { - dgst, err := bs.readlink(ctx, path) - if err != nil { - return "", err - } - - return bs.path(dgst) -} - -type blobStatter struct { - driver driver.StorageDriver -} - -var _ distribution.BlobDescriptorService = &blobStatter{} - -// Stat implements BlobStatter.Stat by returning the descriptor for the blob -// in the main blob store. If this method returns successfully, there is -// strong guarantee that the blob exists and is available. -func (bs *blobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - path, err := pathFor(blobDataPathSpec{ - digest: dgst, - }) - - if err != nil { - return distribution.Descriptor{}, err - } - - fi, err := bs.driver.Stat(ctx, path) - if err != nil { - switch err := err.(type) { - case driver.PathNotFoundError: - return distribution.Descriptor{}, distribution.ErrBlobUnknown - default: - return distribution.Descriptor{}, err - } - } - - if fi.IsDir() { - // NOTE(stevvooe): This represents a corruption situation. Somehow, we - // calculated a blob path and then detected a directory. We log the - // error and then error on the side of not knowing about the blob. - context.GetLogger(ctx).Warnf("blob path should not be a directory: %q", path) - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - - // TODO(stevvooe): Add method to resolve the mediatype. We can store and - // cache a "global" media type for the blob, even if a specific repo has a - // mediatype that overrides the main one. - - return distribution.Descriptor{ - Size: fi.Size(), - - // NOTE(stevvooe): The central blob store firewalls media types from - // other users. The caller should look this up and override the value - // for the specific repository. - MediaType: "application/octet-stream", - Digest: dgst, - }, nil -} - -func (bs *blobStatter) Clear(ctx context.Context, dgst digest.Digest) error { - return distribution.ErrUnsupported -} - -func (bs *blobStatter) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - return distribution.ErrUnsupported -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blobwriter.go b/vendor/github.com/docker/distribution/registry/storage/blobwriter.go deleted file mode 100644 index 7f280d366d..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blobwriter.go +++ /dev/null @@ -1,387 +0,0 @@ -package storage - -import ( - "errors" - "fmt" - "io" - "path" - "time" - - "github.com/Sirupsen/logrus" - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - storagedriver "github.com/docker/distribution/registry/storage/driver" -) - -var ( - errResumableDigestNotAvailable = errors.New("resumable digest not available") -) - -// layerWriter is used to control the various aspects of resumable -// layer upload. It implements the LayerUpload interface. -type blobWriter struct { - ctx context.Context - blobStore *linkedBlobStore - - id string - startedAt time.Time - digester digest.Digester - written int64 // track the contiguous write - - fileWriter storagedriver.FileWriter - driver storagedriver.StorageDriver - path string - - resumableDigestEnabled bool -} - -var _ distribution.BlobWriter = &blobWriter{} - -// ID returns the identifier for this upload. -func (bw *blobWriter) ID() string { - return bw.id -} - -func (bw *blobWriter) StartedAt() time.Time { - return bw.startedAt -} - -// Commit marks the upload as completed, returning a valid descriptor. The -// final size and digest are checked against the first descriptor provided. -func (bw *blobWriter) Commit(ctx context.Context, desc distribution.Descriptor) (distribution.Descriptor, error) { - context.GetLogger(ctx).Debug("(*blobWriter).Commit") - - if err := bw.fileWriter.Commit(); err != nil { - return distribution.Descriptor{}, err - } - - canonical, err := bw.validateBlob(ctx, desc) - if err != nil { - return distribution.Descriptor{}, err - } - - if err := bw.moveBlob(ctx, canonical); err != nil { - return distribution.Descriptor{}, err - } - - if err := bw.blobStore.linkBlob(ctx, canonical, desc.Digest); err != nil { - return distribution.Descriptor{}, err - } - - if err := bw.removeResources(ctx); err != nil { - return distribution.Descriptor{}, err - } - - err = bw.blobStore.blobAccessController.SetDescriptor(ctx, canonical.Digest, canonical) - if err != nil { - return distribution.Descriptor{}, err - } - - return canonical, nil -} - -// Rollback the blob upload process, releasing any resources associated with -// the writer and canceling the operation. -func (bw *blobWriter) Cancel(ctx context.Context) error { - context.GetLogger(ctx).Debug("(*blobWriter).Rollback") - if err := bw.fileWriter.Cancel(); err != nil { - return err - } - - if err := bw.removeResources(ctx); err != nil { - return err - } - - bw.Close() - return nil -} - -func (bw *blobWriter) Size() int64 { - return bw.fileWriter.Size() -} - -func (bw *blobWriter) Write(p []byte) (int, error) { - // Ensure that the current write offset matches how many bytes have been - // written to the digester. If not, we need to update the digest state to - // match the current write position. - if err := bw.resumeDigest(bw.blobStore.ctx); err != nil && err != errResumableDigestNotAvailable { - return 0, err - } - - n, err := io.MultiWriter(bw.fileWriter, bw.digester.Hash()).Write(p) - bw.written += int64(n) - - return n, err -} - -func (bw *blobWriter) ReadFrom(r io.Reader) (n int64, err error) { - // Ensure that the current write offset matches how many bytes have been - // written to the digester. If not, we need to update the digest state to - // match the current write position. - if err := bw.resumeDigest(bw.blobStore.ctx); err != nil && err != errResumableDigestNotAvailable { - return 0, err - } - - nn, err := io.Copy(io.MultiWriter(bw.fileWriter, bw.digester.Hash()), r) - bw.written += nn - - return nn, err -} - -func (bw *blobWriter) Close() error { - if err := bw.storeHashState(bw.blobStore.ctx); err != nil { - return err - } - - return bw.fileWriter.Close() -} - -// validateBlob checks the data against the digest, returning an error if it -// does not match. The canonical descriptor is returned. -func (bw *blobWriter) validateBlob(ctx context.Context, desc distribution.Descriptor) (distribution.Descriptor, error) { - var ( - verified, fullHash bool - canonical digest.Digest - ) - - if desc.Digest == "" { - // if no descriptors are provided, we have nothing to validate - // against. We don't really want to support this for the registry. - return distribution.Descriptor{}, distribution.ErrBlobInvalidDigest{ - Reason: fmt.Errorf("cannot validate against empty digest"), - } - } - - var size int64 - - // Stat the on disk file - if fi, err := bw.driver.Stat(ctx, bw.path); err != nil { - switch err := err.(type) { - case storagedriver.PathNotFoundError: - // NOTE(stevvooe): We really don't care if the file is - // not actually present for the reader. We now assume - // that the desc length is zero. - desc.Size = 0 - default: - // Any other error we want propagated up the stack. - return distribution.Descriptor{}, err - } - } else { - if fi.IsDir() { - return distribution.Descriptor{}, fmt.Errorf("unexpected directory at upload location %q", bw.path) - } - - size = fi.Size() - } - - if desc.Size > 0 { - if desc.Size != size { - return distribution.Descriptor{}, distribution.ErrBlobInvalidLength - } - } else { - // if provided 0 or negative length, we can assume caller doesn't know or - // care about length. - desc.Size = size - } - - // TODO(stevvooe): This section is very meandering. Need to be broken down - // to be a lot more clear. - - if err := bw.resumeDigest(ctx); err == nil { - canonical = bw.digester.Digest() - - if canonical.Algorithm() == desc.Digest.Algorithm() { - // Common case: client and server prefer the same canonical digest - // algorithm - currently SHA256. - verified = desc.Digest == canonical - } else { - // The client wants to use a different digest algorithm. They'll just - // have to be patient and wait for us to download and re-hash the - // uploaded content using that digest algorithm. - fullHash = true - } - } else if err == errResumableDigestNotAvailable { - // Not using resumable digests, so we need to hash the entire layer. - fullHash = true - } else { - return distribution.Descriptor{}, err - } - - if fullHash { - // a fantastic optimization: if the the written data and the size are - // the same, we don't need to read the data from the backend. This is - // because we've written the entire file in the lifecycle of the - // current instance. - if bw.written == size && digest.Canonical == desc.Digest.Algorithm() { - canonical = bw.digester.Digest() - verified = desc.Digest == canonical - } - - // If the check based on size fails, we fall back to the slowest of - // paths. We may be able to make the size-based check a stronger - // guarantee, so this may be defensive. - if !verified { - digester := digest.Canonical.New() - - digestVerifier, err := digest.NewDigestVerifier(desc.Digest) - if err != nil { - return distribution.Descriptor{}, err - } - - // Read the file from the backend driver and validate it. - fr, err := newFileReader(ctx, bw.driver, bw.path, desc.Size) - if err != nil { - return distribution.Descriptor{}, err - } - defer fr.Close() - - tr := io.TeeReader(fr, digester.Hash()) - - if _, err := io.Copy(digestVerifier, tr); err != nil { - return distribution.Descriptor{}, err - } - - canonical = digester.Digest() - verified = digestVerifier.Verified() - } - } - - if !verified { - context.GetLoggerWithFields(ctx, - map[interface{}]interface{}{ - "canonical": canonical, - "provided": desc.Digest, - }, "canonical", "provided"). - Errorf("canonical digest does match provided digest") - return distribution.Descriptor{}, distribution.ErrBlobInvalidDigest{ - Digest: desc.Digest, - Reason: fmt.Errorf("content does not match digest"), - } - } - - // update desc with canonical hash - desc.Digest = canonical - - if desc.MediaType == "" { - desc.MediaType = "application/octet-stream" - } - - return desc, nil -} - -// moveBlob moves the data into its final, hash-qualified destination, -// identified by dgst. The layer should be validated before commencing the -// move. -func (bw *blobWriter) moveBlob(ctx context.Context, desc distribution.Descriptor) error { - blobPath, err := pathFor(blobDataPathSpec{ - digest: desc.Digest, - }) - - if err != nil { - return err - } - - // Check for existence - if _, err := bw.blobStore.driver.Stat(ctx, blobPath); err != nil { - switch err := err.(type) { - case storagedriver.PathNotFoundError: - break // ensure that it doesn't exist. - default: - return err - } - } else { - // If the path exists, we can assume that the content has already - // been uploaded, since the blob storage is content-addressable. - // While it may be corrupted, detection of such corruption belongs - // elsewhere. - return nil - } - - // If no data was received, we may not actually have a file on disk. Check - // the size here and write a zero-length file to blobPath if this is the - // case. For the most part, this should only ever happen with zero-length - // tars. - if _, err := bw.blobStore.driver.Stat(ctx, bw.path); err != nil { - switch err := err.(type) { - case storagedriver.PathNotFoundError: - // HACK(stevvooe): This is slightly dangerous: if we verify above, - // get a hash, then the underlying file is deleted, we risk moving - // a zero-length blob into a nonzero-length blob location. To - // prevent this horrid thing, we employ the hack of only allowing - // to this happen for the digest of an empty tar. - if desc.Digest == digest.DigestSha256EmptyTar { - return bw.blobStore.driver.PutContent(ctx, blobPath, []byte{}) - } - - // We let this fail during the move below. - logrus. - WithField("upload.id", bw.ID()). - WithField("digest", desc.Digest).Warnf("attempted to move zero-length content with non-zero digest") - default: - return err // unrelated error - } - } - - // TODO(stevvooe): We should also write the mediatype when executing this move. - - return bw.blobStore.driver.Move(ctx, bw.path, blobPath) -} - -// removeResources should clean up all resources associated with the upload -// instance. An error will be returned if the clean up cannot proceed. If the -// resources are already not present, no error will be returned. -func (bw *blobWriter) removeResources(ctx context.Context) error { - dataPath, err := pathFor(uploadDataPathSpec{ - name: bw.blobStore.repository.Named().Name(), - id: bw.id, - }) - - if err != nil { - return err - } - - // Resolve and delete the containing directory, which should include any - // upload related files. - dirPath := path.Dir(dataPath) - if err := bw.blobStore.driver.Delete(ctx, dirPath); err != nil { - switch err := err.(type) { - case storagedriver.PathNotFoundError: - break // already gone! - default: - // This should be uncommon enough such that returning an error - // should be okay. At this point, the upload should be mostly - // complete, but perhaps the backend became unaccessible. - context.GetLogger(ctx).Errorf("unable to delete layer upload resources %q: %v", dirPath, err) - return err - } - } - - return nil -} - -func (bw *blobWriter) Reader() (io.ReadCloser, error) { - // todo(richardscothern): Change to exponential backoff, i=0.5, e=2, n=4 - try := 1 - for try <= 5 { - _, err := bw.driver.Stat(bw.ctx, bw.path) - if err == nil { - break - } - switch err.(type) { - case storagedriver.PathNotFoundError: - context.GetLogger(bw.ctx).Debugf("Nothing found on try %d, sleeping...", try) - time.Sleep(1 * time.Second) - try++ - default: - return nil, err - } - } - - readCloser, err := bw.driver.Reader(bw.ctx, bw.path, 0) - if err != nil { - return nil, err - } - - return readCloser, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blobwriter_nonresumable.go b/vendor/github.com/docker/distribution/registry/storage/blobwriter_nonresumable.go deleted file mode 100644 index 39166876f0..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blobwriter_nonresumable.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build noresumabledigest - -package storage - -import ( - "github.com/docker/distribution/context" -) - -// resumeHashAt is a noop when resumable digest support is disabled. -func (bw *blobWriter) resumeDigestAt(ctx context.Context, offset int64) error { - return errResumableDigestNotAvailable -} - -// storeHashState is a noop when resumable digest support is disabled. -func (bw *blobWriter) storeHashState(ctx context.Context) error { - return errResumableDigestNotAvailable -} diff --git a/vendor/github.com/docker/distribution/registry/storage/blobwriter_resumable.go b/vendor/github.com/docker/distribution/registry/storage/blobwriter_resumable.go deleted file mode 100644 index ff5482c3fd..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/blobwriter_resumable.go +++ /dev/null @@ -1,145 +0,0 @@ -// +build !noresumabledigest - -package storage - -import ( - "fmt" - "path" - "strconv" - - "github.com/Sirupsen/logrus" - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/stevvooe/resumable" - - // register resumable hashes with import - _ "github.com/stevvooe/resumable/sha256" - _ "github.com/stevvooe/resumable/sha512" -) - -// resumeDigest attempts to restore the state of the internal hash function -// by loading the most recent saved hash state equal to the current size of the blob. -func (bw *blobWriter) resumeDigest(ctx context.Context) error { - if !bw.resumableDigestEnabled { - return errResumableDigestNotAvailable - } - - h, ok := bw.digester.Hash().(resumable.Hash) - if !ok { - return errResumableDigestNotAvailable - } - offset := bw.fileWriter.Size() - if offset == int64(h.Len()) { - // State of digester is already at the requested offset. - return nil - } - - // List hash states from storage backend. - var hashStateMatch hashStateEntry - hashStates, err := bw.getStoredHashStates(ctx) - if err != nil { - return fmt.Errorf("unable to get stored hash states with offset %d: %s", offset, err) - } - - // Find the highest stored hashState with offset equal to - // the requested offset. - for _, hashState := range hashStates { - if hashState.offset == offset { - hashStateMatch = hashState - break // Found an exact offset match. - } - } - - if hashStateMatch.offset == 0 { - // No need to load any state, just reset the hasher. - h.Reset() - } else { - storedState, err := bw.driver.GetContent(ctx, hashStateMatch.path) - if err != nil { - return err - } - - if err = h.Restore(storedState); err != nil { - return err - } - } - - // Mind the gap. - if gapLen := offset - int64(h.Len()); gapLen > 0 { - return errResumableDigestNotAvailable - } - - return nil -} - -type hashStateEntry struct { - offset int64 - path string -} - -// getStoredHashStates returns a slice of hashStateEntries for this upload. -func (bw *blobWriter) getStoredHashStates(ctx context.Context) ([]hashStateEntry, error) { - uploadHashStatePathPrefix, err := pathFor(uploadHashStatePathSpec{ - name: bw.blobStore.repository.Named().String(), - id: bw.id, - alg: bw.digester.Digest().Algorithm(), - list: true, - }) - - if err != nil { - return nil, err - } - - paths, err := bw.blobStore.driver.List(ctx, uploadHashStatePathPrefix) - if err != nil { - if _, ok := err.(storagedriver.PathNotFoundError); !ok { - return nil, err - } - // Treat PathNotFoundError as no entries. - paths = nil - } - - hashStateEntries := make([]hashStateEntry, 0, len(paths)) - - for _, p := range paths { - pathSuffix := path.Base(p) - // The suffix should be the offset. - offset, err := strconv.ParseInt(pathSuffix, 0, 64) - if err != nil { - logrus.Errorf("unable to parse offset from upload state path %q: %s", p, err) - } - - hashStateEntries = append(hashStateEntries, hashStateEntry{offset: offset, path: p}) - } - - return hashStateEntries, nil -} - -func (bw *blobWriter) storeHashState(ctx context.Context) error { - if !bw.resumableDigestEnabled { - return errResumableDigestNotAvailable - } - - h, ok := bw.digester.Hash().(resumable.Hash) - if !ok { - return errResumableDigestNotAvailable - } - - uploadHashStatePath, err := pathFor(uploadHashStatePathSpec{ - name: bw.blobStore.repository.Named().String(), - id: bw.id, - alg: bw.digester.Digest().Algorithm(), - offset: int64(h.Len()), - }) - - if err != nil { - return err - } - - hashState, err := h.State() - if err != nil { - return err - } - - return bw.driver.PutContent(ctx, uploadHashStatePath, hashState) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/cache.go b/vendor/github.com/docker/distribution/registry/storage/cache/cache.go deleted file mode 100644 index 10a3909197..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/cache.go +++ /dev/null @@ -1,35 +0,0 @@ -// Package cache provides facilities to speed up access to the storage -// backend. -package cache - -import ( - "fmt" - - "github.com/docker/distribution" -) - -// BlobDescriptorCacheProvider provides repository scoped -// BlobDescriptorService cache instances and a global descriptor cache. -type BlobDescriptorCacheProvider interface { - distribution.BlobDescriptorService - - RepositoryScoped(repo string) (distribution.BlobDescriptorService, error) -} - -// ValidateDescriptor provides a helper function to ensure that caches have -// common criteria for admitting descriptors. -func ValidateDescriptor(desc distribution.Descriptor) error { - if err := desc.Digest.Validate(); err != nil { - return err - } - - if desc.Size < 0 { - return fmt.Errorf("cache: invalid length in descriptor: %v < 0", desc.Size) - } - - if desc.MediaType == "" { - return fmt.Errorf("cache: empty mediatype on descriptor: %v", desc) - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/cachecheck/suite.go b/vendor/github.com/docker/distribution/registry/storage/cache/cachecheck/suite.go deleted file mode 100644 index 13e9c13224..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/cachecheck/suite.go +++ /dev/null @@ -1,179 +0,0 @@ -package cachecheck - -import ( - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/storage/cache" -) - -// CheckBlobDescriptorCache takes a cache implementation through a common set -// of operations. If adding new tests, please add them here so new -// implementations get the benefit. This should be used for unit tests. -func CheckBlobDescriptorCache(t *testing.T, provider cache.BlobDescriptorCacheProvider) { - ctx := context.Background() - - checkBlobDescriptorCacheEmptyRepository(t, ctx, provider) - checkBlobDescriptorCacheSetAndRead(t, ctx, provider) - checkBlobDescriptorCacheClear(t, ctx, provider) -} - -func checkBlobDescriptorCacheEmptyRepository(t *testing.T, ctx context.Context, provider cache.BlobDescriptorCacheProvider) { - if _, err := provider.Stat(ctx, "sha384:abc111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); err != distribution.ErrBlobUnknown { - t.Fatalf("expected unknown blob error with empty store: %v", err) - } - - cache, err := provider.RepositoryScoped("") - if err == nil { - t.Fatalf("expected an error when asking for invalid repo") - } - - cache, err = provider.RepositoryScoped("foo/bar") - if err != nil { - t.Fatalf("unexpected error getting repository: %v", err) - } - - if err := cache.SetDescriptor(ctx, "", distribution.Descriptor{ - Digest: "sha384:abc", - Size: 10, - MediaType: "application/octet-stream"}); err != digest.ErrDigestInvalidFormat { - t.Fatalf("expected error with invalid digest: %v", err) - } - - if err := cache.SetDescriptor(ctx, "sha384:abc111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", distribution.Descriptor{ - Digest: "", - Size: 10, - MediaType: "application/octet-stream"}); err == nil { - t.Fatalf("expected error setting value on invalid descriptor") - } - - if _, err := cache.Stat(ctx, ""); err != digest.ErrDigestInvalidFormat { - t.Fatalf("expected error checking for cache item with empty digest: %v", err) - } - - if _, err := cache.Stat(ctx, "sha384:abc111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"); err != distribution.ErrBlobUnknown { - t.Fatalf("expected unknown blob error with empty repo: %v", err) - } -} - -func checkBlobDescriptorCacheSetAndRead(t *testing.T, ctx context.Context, provider cache.BlobDescriptorCacheProvider) { - localDigest := digest.Digest("sha384:abc111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111") - expected := distribution.Descriptor{ - Digest: "sha256:abc1111111111111111111111111111111111111111111111111111111111111", - Size: 10, - MediaType: "application/octet-stream"} - - cache, err := provider.RepositoryScoped("foo/bar") - if err != nil { - t.Fatalf("unexpected error getting scoped cache: %v", err) - } - - if err := cache.SetDescriptor(ctx, localDigest, expected); err != nil { - t.Fatalf("error setting descriptor: %v", err) - } - - desc, err := cache.Stat(ctx, localDigest) - if err != nil { - t.Fatalf("unexpected error statting fake2:abc: %v", err) - } - - if expected != desc { - t.Fatalf("unexpected descriptor: %#v != %#v", expected, desc) - } - - // also check that we set the canonical key ("fake:abc") - desc, err = cache.Stat(ctx, localDigest) - if err != nil { - t.Fatalf("descriptor not returned for canonical key: %v", err) - } - - if expected != desc { - t.Fatalf("unexpected descriptor: %#v != %#v", expected, desc) - } - - // ensure that global gets extra descriptor mapping - desc, err = provider.Stat(ctx, localDigest) - if err != nil { - t.Fatalf("expected blob unknown in global cache: %v, %v", err, desc) - } - - if desc != expected { - t.Fatalf("unexpected descriptor: %#v != %#v", expected, desc) - } - - // get at it through canonical descriptor - desc, err = provider.Stat(ctx, expected.Digest) - if err != nil { - t.Fatalf("unexpected error checking glboal descriptor: %v", err) - } - - if desc != expected { - t.Fatalf("unexpected descriptor: %#v != %#v", expected, desc) - } - - // now, we set the repo local mediatype to something else and ensure it - // doesn't get changed in the provider cache. - expected.MediaType = "application/json" - - if err := cache.SetDescriptor(ctx, localDigest, expected); err != nil { - t.Fatalf("unexpected error setting descriptor: %v", err) - } - - desc, err = cache.Stat(ctx, localDigest) - if err != nil { - t.Fatalf("unexpected error getting descriptor: %v", err) - } - - if desc != expected { - t.Fatalf("unexpected descriptor: %#v != %#v", desc, expected) - } - - desc, err = provider.Stat(ctx, localDigest) - if err != nil { - t.Fatalf("unexpected error getting global descriptor: %v", err) - } - - expected.MediaType = "application/octet-stream" // expect original mediatype in global - - if desc != expected { - t.Fatalf("unexpected descriptor: %#v != %#v", desc, expected) - } -} - -func checkBlobDescriptorCacheClear(t *testing.T, ctx context.Context, provider cache.BlobDescriptorCacheProvider) { - localDigest := digest.Digest("sha384:def111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111") - expected := distribution.Descriptor{ - Digest: "sha256:def1111111111111111111111111111111111111111111111111111111111111", - Size: 10, - MediaType: "application/octet-stream"} - - cache, err := provider.RepositoryScoped("foo/bar") - if err != nil { - t.Fatalf("unexpected error getting scoped cache: %v", err) - } - - if err := cache.SetDescriptor(ctx, localDigest, expected); err != nil { - t.Fatalf("error setting descriptor: %v", err) - } - - desc, err := cache.Stat(ctx, localDigest) - if err != nil { - t.Fatalf("unexpected error statting fake2:abc: %v", err) - } - - if expected != desc { - t.Fatalf("unexpected descriptor: %#v != %#v", expected, desc) - } - - err = cache.Clear(ctx, localDigest) - if err != nil { - t.Error(err) - } - - desc, err = cache.Stat(ctx, localDigest) - if err == nil { - t.Fatalf("expected error statting deleted blob: %v", err) - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/cachedblobdescriptorstore.go b/vendor/github.com/docker/distribution/registry/storage/cache/cachedblobdescriptorstore.go deleted file mode 100644 index 94ca8a90c7..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/cachedblobdescriptorstore.go +++ /dev/null @@ -1,101 +0,0 @@ -package cache - -import ( - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - - "github.com/docker/distribution" -) - -// Metrics is used to hold metric counters -// related to the number of times a cache was -// hit or missed. -type Metrics struct { - Requests uint64 - Hits uint64 - Misses uint64 -} - -// MetricsTracker represents a metric tracker -// which simply counts the number of hits and misses. -type MetricsTracker interface { - Hit() - Miss() - Metrics() Metrics -} - -type cachedBlobStatter struct { - cache distribution.BlobDescriptorService - backend distribution.BlobDescriptorService - tracker MetricsTracker -} - -// NewCachedBlobStatter creates a new statter which prefers a cache and -// falls back to a backend. -func NewCachedBlobStatter(cache distribution.BlobDescriptorService, backend distribution.BlobDescriptorService) distribution.BlobDescriptorService { - return &cachedBlobStatter{ - cache: cache, - backend: backend, - } -} - -// NewCachedBlobStatterWithMetrics creates a new statter which prefers a cache and -// falls back to a backend. Hits and misses will send to the tracker. -func NewCachedBlobStatterWithMetrics(cache distribution.BlobDescriptorService, backend distribution.BlobDescriptorService, tracker MetricsTracker) distribution.BlobStatter { - return &cachedBlobStatter{ - cache: cache, - backend: backend, - tracker: tracker, - } -} - -func (cbds *cachedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - desc, err := cbds.cache.Stat(ctx, dgst) - if err != nil { - if err != distribution.ErrBlobUnknown { - context.GetLogger(ctx).Errorf("error retrieving descriptor from cache: %v", err) - } - - goto fallback - } - - if cbds.tracker != nil { - cbds.tracker.Hit() - } - return desc, nil -fallback: - if cbds.tracker != nil { - cbds.tracker.Miss() - } - desc, err = cbds.backend.Stat(ctx, dgst) - if err != nil { - return desc, err - } - - if err := cbds.cache.SetDescriptor(ctx, dgst, desc); err != nil { - context.GetLogger(ctx).Errorf("error adding descriptor %v to cache: %v", desc.Digest, err) - } - - return desc, err - -} - -func (cbds *cachedBlobStatter) Clear(ctx context.Context, dgst digest.Digest) error { - err := cbds.cache.Clear(ctx, dgst) - if err != nil { - return err - } - - err = cbds.backend.Clear(ctx, dgst) - if err != nil { - return err - } - return nil -} - -func (cbds *cachedBlobStatter) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - if err := cbds.cache.SetDescriptor(ctx, dgst, desc); err != nil { - context.GetLogger(ctx).Errorf("error adding descriptor %v to cache: %v", desc.Digest, err) - } - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/memory/memory.go b/vendor/github.com/docker/distribution/registry/storage/cache/memory/memory.go deleted file mode 100644 index 68a68f081e..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/memory/memory.go +++ /dev/null @@ -1,170 +0,0 @@ -package memory - -import ( - "sync" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/cache" -) - -type inMemoryBlobDescriptorCacheProvider struct { - global *mapBlobDescriptorCache - repositories map[string]*mapBlobDescriptorCache - mu sync.RWMutex -} - -// NewInMemoryBlobDescriptorCacheProvider returns a new mapped-based cache for -// storing blob descriptor data. -func NewInMemoryBlobDescriptorCacheProvider() cache.BlobDescriptorCacheProvider { - return &inMemoryBlobDescriptorCacheProvider{ - global: newMapBlobDescriptorCache(), - repositories: make(map[string]*mapBlobDescriptorCache), - } -} - -func (imbdcp *inMemoryBlobDescriptorCacheProvider) RepositoryScoped(repo string) (distribution.BlobDescriptorService, error) { - if _, err := reference.ParseNamed(repo); err != nil { - return nil, err - } - - imbdcp.mu.RLock() - defer imbdcp.mu.RUnlock() - - return &repositoryScopedInMemoryBlobDescriptorCache{ - repo: repo, - parent: imbdcp, - repository: imbdcp.repositories[repo], - }, nil -} - -func (imbdcp *inMemoryBlobDescriptorCacheProvider) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - return imbdcp.global.Stat(ctx, dgst) -} - -func (imbdcp *inMemoryBlobDescriptorCacheProvider) Clear(ctx context.Context, dgst digest.Digest) error { - return imbdcp.global.Clear(ctx, dgst) -} - -func (imbdcp *inMemoryBlobDescriptorCacheProvider) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - _, err := imbdcp.Stat(ctx, dgst) - if err == distribution.ErrBlobUnknown { - - if dgst.Algorithm() != desc.Digest.Algorithm() && dgst != desc.Digest { - // if the digests differ, set the other canonical mapping - if err := imbdcp.global.SetDescriptor(ctx, desc.Digest, desc); err != nil { - return err - } - } - - // unknown, just set it - return imbdcp.global.SetDescriptor(ctx, dgst, desc) - } - - // we already know it, do nothing - return err -} - -// repositoryScopedInMemoryBlobDescriptorCache provides the request scoped -// repository cache. Instances are not thread-safe but the delegated -// operations are. -type repositoryScopedInMemoryBlobDescriptorCache struct { - repo string - parent *inMemoryBlobDescriptorCacheProvider // allows lazy allocation of repo's map - repository *mapBlobDescriptorCache -} - -func (rsimbdcp *repositoryScopedInMemoryBlobDescriptorCache) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - if rsimbdcp.repository == nil { - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - - return rsimbdcp.repository.Stat(ctx, dgst) -} - -func (rsimbdcp *repositoryScopedInMemoryBlobDescriptorCache) Clear(ctx context.Context, dgst digest.Digest) error { - if rsimbdcp.repository == nil { - return distribution.ErrBlobUnknown - } - - return rsimbdcp.repository.Clear(ctx, dgst) -} - -func (rsimbdcp *repositoryScopedInMemoryBlobDescriptorCache) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - if rsimbdcp.repository == nil { - // allocate map since we are setting it now. - rsimbdcp.parent.mu.Lock() - var ok bool - // have to read back value since we may have allocated elsewhere. - rsimbdcp.repository, ok = rsimbdcp.parent.repositories[rsimbdcp.repo] - if !ok { - rsimbdcp.repository = newMapBlobDescriptorCache() - rsimbdcp.parent.repositories[rsimbdcp.repo] = rsimbdcp.repository - } - - rsimbdcp.parent.mu.Unlock() - } - - if err := rsimbdcp.repository.SetDescriptor(ctx, dgst, desc); err != nil { - return err - } - - return rsimbdcp.parent.SetDescriptor(ctx, dgst, desc) -} - -// mapBlobDescriptorCache provides a simple map-based implementation of the -// descriptor cache. -type mapBlobDescriptorCache struct { - descriptors map[digest.Digest]distribution.Descriptor - mu sync.RWMutex -} - -var _ distribution.BlobDescriptorService = &mapBlobDescriptorCache{} - -func newMapBlobDescriptorCache() *mapBlobDescriptorCache { - return &mapBlobDescriptorCache{ - descriptors: make(map[digest.Digest]distribution.Descriptor), - } -} - -func (mbdc *mapBlobDescriptorCache) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - if err := dgst.Validate(); err != nil { - return distribution.Descriptor{}, err - } - - mbdc.mu.RLock() - defer mbdc.mu.RUnlock() - - desc, ok := mbdc.descriptors[dgst] - if !ok { - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - - return desc, nil -} - -func (mbdc *mapBlobDescriptorCache) Clear(ctx context.Context, dgst digest.Digest) error { - mbdc.mu.Lock() - defer mbdc.mu.Unlock() - - delete(mbdc.descriptors, dgst) - return nil -} - -func (mbdc *mapBlobDescriptorCache) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - if err := dgst.Validate(); err != nil { - return err - } - - if err := cache.ValidateDescriptor(desc); err != nil { - return err - } - - mbdc.mu.Lock() - defer mbdc.mu.Unlock() - - mbdc.descriptors[dgst] = desc - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/memory/memory_test.go b/vendor/github.com/docker/distribution/registry/storage/cache/memory/memory_test.go deleted file mode 100644 index 49c2b5c394..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/memory/memory_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package memory - -import ( - "testing" - - "github.com/docker/distribution/registry/storage/cache/cachecheck" -) - -// TestInMemoryBlobInfoCache checks the in memory implementation is working -// correctly. -func TestInMemoryBlobInfoCache(t *testing.T) { - cachecheck.CheckBlobDescriptorCache(t, NewInMemoryBlobDescriptorCacheProvider()) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/redis/redis.go b/vendor/github.com/docker/distribution/registry/storage/cache/redis/redis.go deleted file mode 100644 index cb264b098f..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/redis/redis.go +++ /dev/null @@ -1,268 +0,0 @@ -package redis - -import ( - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/cache" - "github.com/garyburd/redigo/redis" -) - -// redisBlobStatService provides an implementation of -// BlobDescriptorCacheProvider based on redis. Blob descriptors are stored in -// two parts. The first provide fast access to repository membership through a -// redis set for each repo. The second is a redis hash keyed by the digest of -// the layer, providing path, length and mediatype information. There is also -// a per-repository redis hash of the blob descriptor, allowing override of -// data. This is currently used to override the mediatype on a per-repository -// basis. -// -// Note that there is no implied relationship between these two caches. The -// layer may exist in one, both or none and the code must be written this way. -type redisBlobDescriptorService struct { - pool *redis.Pool - - // TODO(stevvooe): We use a pool because we don't have great control over - // the cache lifecycle to manage connections. A new connection if fetched - // for each operation. Once we have better lifecycle management of the - // request objects, we can change this to a connection. -} - -// NewRedisBlobDescriptorCacheProvider returns a new redis-based -// BlobDescriptorCacheProvider using the provided redis connection pool. -func NewRedisBlobDescriptorCacheProvider(pool *redis.Pool) cache.BlobDescriptorCacheProvider { - return &redisBlobDescriptorService{ - pool: pool, - } -} - -// RepositoryScoped returns the scoped cache. -func (rbds *redisBlobDescriptorService) RepositoryScoped(repo string) (distribution.BlobDescriptorService, error) { - if _, err := reference.ParseNamed(repo); err != nil { - return nil, err - } - - return &repositoryScopedRedisBlobDescriptorService{ - repo: repo, - upstream: rbds, - }, nil -} - -// Stat retrieves the descriptor data from the redis hash entry. -func (rbds *redisBlobDescriptorService) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - if err := dgst.Validate(); err != nil { - return distribution.Descriptor{}, err - } - - conn := rbds.pool.Get() - defer conn.Close() - - return rbds.stat(ctx, conn, dgst) -} - -func (rbds *redisBlobDescriptorService) Clear(ctx context.Context, dgst digest.Digest) error { - if err := dgst.Validate(); err != nil { - return err - } - - conn := rbds.pool.Get() - defer conn.Close() - - // Not atomic in redis <= 2.3 - reply, err := conn.Do("HDEL", rbds.blobDescriptorHashKey(dgst), "digest", "length", "mediatype") - if err != nil { - return err - } - - if reply == 0 { - return distribution.ErrBlobUnknown - } - - return nil -} - -// stat provides an internal stat call that takes a connection parameter. This -// allows some internal management of the connection scope. -func (rbds *redisBlobDescriptorService) stat(ctx context.Context, conn redis.Conn, dgst digest.Digest) (distribution.Descriptor, error) { - reply, err := redis.Values(conn.Do("HMGET", rbds.blobDescriptorHashKey(dgst), "digest", "size", "mediatype")) - if err != nil { - return distribution.Descriptor{}, err - } - - // NOTE(stevvooe): The "size" field used to be "length". We treat a - // missing "size" field here as an unknown blob, which causes a cache - // miss, effectively migrating the field. - if len(reply) < 3 || reply[0] == nil || reply[1] == nil { // don't care if mediatype is nil - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - - var desc distribution.Descriptor - if _, err := redis.Scan(reply, &desc.Digest, &desc.Size, &desc.MediaType); err != nil { - return distribution.Descriptor{}, err - } - - return desc, nil -} - -// SetDescriptor sets the descriptor data for the given digest using a redis -// hash. A hash is used here since we may store unrelated fields about a layer -// in the future. -func (rbds *redisBlobDescriptorService) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - if err := dgst.Validate(); err != nil { - return err - } - - if err := cache.ValidateDescriptor(desc); err != nil { - return err - } - - conn := rbds.pool.Get() - defer conn.Close() - - return rbds.setDescriptor(ctx, conn, dgst, desc) -} - -func (rbds *redisBlobDescriptorService) setDescriptor(ctx context.Context, conn redis.Conn, dgst digest.Digest, desc distribution.Descriptor) error { - if _, err := conn.Do("HMSET", rbds.blobDescriptorHashKey(dgst), - "digest", desc.Digest, - "size", desc.Size); err != nil { - return err - } - - // Only set mediatype if not already set. - if _, err := conn.Do("HSETNX", rbds.blobDescriptorHashKey(dgst), - "mediatype", desc.MediaType); err != nil { - return err - } - - return nil -} - -func (rbds *redisBlobDescriptorService) blobDescriptorHashKey(dgst digest.Digest) string { - return "blobs::" + dgst.String() -} - -type repositoryScopedRedisBlobDescriptorService struct { - repo string - upstream *redisBlobDescriptorService -} - -var _ distribution.BlobDescriptorService = &repositoryScopedRedisBlobDescriptorService{} - -// Stat ensures that the digest is a member of the specified repository and -// forwards the descriptor request to the global blob store. If the media type -// differs for the repository, we override it. -func (rsrbds *repositoryScopedRedisBlobDescriptorService) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - if err := dgst.Validate(); err != nil { - return distribution.Descriptor{}, err - } - - conn := rsrbds.upstream.pool.Get() - defer conn.Close() - - // Check membership to repository first - member, err := redis.Bool(conn.Do("SISMEMBER", rsrbds.repositoryBlobSetKey(rsrbds.repo), dgst)) - if err != nil { - return distribution.Descriptor{}, err - } - - if !member { - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - - upstream, err := rsrbds.upstream.stat(ctx, conn, dgst) - if err != nil { - return distribution.Descriptor{}, err - } - - // We allow a per repository mediatype, let's look it up here. - mediatype, err := redis.String(conn.Do("HGET", rsrbds.blobDescriptorHashKey(dgst), "mediatype")) - if err != nil { - return distribution.Descriptor{}, err - } - - if mediatype != "" { - upstream.MediaType = mediatype - } - - return upstream, nil -} - -// Clear removes the descriptor from the cache and forwards to the upstream descriptor store -func (rsrbds *repositoryScopedRedisBlobDescriptorService) Clear(ctx context.Context, dgst digest.Digest) error { - if err := dgst.Validate(); err != nil { - return err - } - - conn := rsrbds.upstream.pool.Get() - defer conn.Close() - - // Check membership to repository first - member, err := redis.Bool(conn.Do("SISMEMBER", rsrbds.repositoryBlobSetKey(rsrbds.repo), dgst)) - if err != nil { - return err - } - - if !member { - return distribution.ErrBlobUnknown - } - - return rsrbds.upstream.Clear(ctx, dgst) -} - -func (rsrbds *repositoryScopedRedisBlobDescriptorService) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - if err := dgst.Validate(); err != nil { - return err - } - - if err := cache.ValidateDescriptor(desc); err != nil { - return err - } - - if dgst != desc.Digest { - if dgst.Algorithm() == desc.Digest.Algorithm() { - return fmt.Errorf("redis cache: digest for descriptors differ but algorthim does not: %q != %q", dgst, desc.Digest) - } - } - - conn := rsrbds.upstream.pool.Get() - defer conn.Close() - - return rsrbds.setDescriptor(ctx, conn, dgst, desc) -} - -func (rsrbds *repositoryScopedRedisBlobDescriptorService) setDescriptor(ctx context.Context, conn redis.Conn, dgst digest.Digest, desc distribution.Descriptor) error { - if _, err := conn.Do("SADD", rsrbds.repositoryBlobSetKey(rsrbds.repo), dgst); err != nil { - return err - } - - if err := rsrbds.upstream.setDescriptor(ctx, conn, dgst, desc); err != nil { - return err - } - - // Override repository mediatype. - if _, err := conn.Do("HSET", rsrbds.blobDescriptorHashKey(dgst), "mediatype", desc.MediaType); err != nil { - return err - } - - // Also set the values for the primary descriptor, if they differ by - // algorithm (ie sha256 vs sha512). - if desc.Digest != "" && dgst != desc.Digest && dgst.Algorithm() != desc.Digest.Algorithm() { - if err := rsrbds.setDescriptor(ctx, conn, desc.Digest, desc); err != nil { - return err - } - } - - return nil -} - -func (rsrbds *repositoryScopedRedisBlobDescriptorService) blobDescriptorHashKey(dgst digest.Digest) string { - return "repository::" + rsrbds.repo + "::blobs::" + dgst.String() -} - -func (rsrbds *repositoryScopedRedisBlobDescriptorService) repositoryBlobSetKey(repo string) string { - return "repository::" + rsrbds.repo + "::blobs" -} diff --git a/vendor/github.com/docker/distribution/registry/storage/cache/redis/redis_test.go b/vendor/github.com/docker/distribution/registry/storage/cache/redis/redis_test.go deleted file mode 100644 index 81bcaddd9b..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/cache/redis/redis_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package redis - -import ( - "flag" - "os" - "testing" - "time" - - "github.com/docker/distribution/registry/storage/cache/cachecheck" - "github.com/garyburd/redigo/redis" -) - -var redisAddr string - -func init() { - flag.StringVar(&redisAddr, "test.registry.storage.cache.redis.addr", "", "configure the address of a test instance of redis") -} - -// TestRedisLayerInfoCache exercises a live redis instance using the cache -// implementation. -func TestRedisBlobDescriptorCacheProvider(t *testing.T) { - if redisAddr == "" { - // fallback to an environement variable - redisAddr = os.Getenv("TEST_REGISTRY_STORAGE_CACHE_REDIS_ADDR") - } - - if redisAddr == "" { - // skip if still not set - t.Skip("please set -registry.storage.cache.redis to test layer info cache against redis") - } - - pool := &redis.Pool{ - Dial: func() (redis.Conn, error) { - return redis.Dial("tcp", redisAddr) - }, - MaxIdle: 1, - MaxActive: 2, - TestOnBorrow: func(c redis.Conn, t time.Time) error { - _, err := c.Do("PING") - return err - }, - Wait: false, // if a connection is not avialable, proceed without cache. - } - - // Clear the database - if _, err := pool.Get().Do("FLUSHDB"); err != nil { - t.Fatalf("unexpected error flushing redis db: %v", err) - } - - cachecheck.CheckBlobDescriptorCache(t, NewRedisBlobDescriptorCacheProvider(pool)) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/catalog.go b/vendor/github.com/docker/distribution/registry/storage/catalog.go deleted file mode 100644 index 3b13b7ad1f..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/catalog.go +++ /dev/null @@ -1,97 +0,0 @@ -package storage - -import ( - "errors" - "io" - "path" - "strings" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/storage/driver" -) - -// ErrFinishedWalk is used when the called walk function no longer wants -// to accept any more values. This is used for pagination when the -// required number of repos have been found. -var ErrFinishedWalk = errors.New("finished walk") - -// Returns a list, or partial list, of repositories in the registry. -// Because it's a quite expensive operation, it should only be used when building up -// an initial set of repositories. -func (reg *registry) Repositories(ctx context.Context, repos []string, last string) (n int, errVal error) { - var foundRepos []string - - if len(repos) == 0 { - return 0, errors.New("no space in slice") - } - - root, err := pathFor(repositoriesRootPathSpec{}) - if err != nil { - return 0, err - } - - err = Walk(ctx, reg.blobStore.driver, root, func(fileInfo driver.FileInfo) error { - filePath := fileInfo.Path() - - // lop the base path off - repoPath := filePath[len(root)+1:] - - _, file := path.Split(repoPath) - if file == "_layers" { - repoPath = strings.TrimSuffix(repoPath, "/_layers") - if repoPath > last { - foundRepos = append(foundRepos, repoPath) - } - return ErrSkipDir - } else if strings.HasPrefix(file, "_") { - return ErrSkipDir - } - - // if we've filled our array, no need to walk any further - if len(foundRepos) == len(repos) { - return ErrFinishedWalk - } - - return nil - }) - - n = copy(repos, foundRepos) - - // Signal that we have no more entries by setting EOF - if len(foundRepos) <= len(repos) && err != ErrFinishedWalk { - errVal = io.EOF - } - - return n, errVal -} - -// Enumerate applies ingester to each repository -func (reg *registry) Enumerate(ctx context.Context, ingester func(string) error) error { - repoNameBuffer := make([]string, 100) - var last string - for { - n, err := reg.Repositories(ctx, repoNameBuffer, last) - if err != nil && err != io.EOF { - return err - } - - if n == 0 { - break - } - - last = repoNameBuffer[n-1] - for i := 0; i < n; i++ { - repoName := repoNameBuffer[i] - err = ingester(repoName) - if err != nil { - return err - } - } - - if err == io.EOF { - break - } - } - return nil - -} diff --git a/vendor/github.com/docker/distribution/registry/storage/catalog_test.go b/vendor/github.com/docker/distribution/registry/storage/catalog_test.go deleted file mode 100644 index eb062c5b78..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/catalog_test.go +++ /dev/null @@ -1,125 +0,0 @@ -package storage - -import ( - "io" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -type setupEnv struct { - ctx context.Context - driver driver.StorageDriver - expected []string - registry distribution.Namespace -} - -func setupFS(t *testing.T) *setupEnv { - d := inmemory.New() - c := []byte("") - ctx := context.Background() - registry, err := NewRegistry(ctx, d, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - rootpath, _ := pathFor(repositoriesRootPathSpec{}) - - repos := []string{ - "/foo/a/_layers/1", - "/foo/b/_layers/2", - "/bar/c/_layers/3", - "/bar/d/_layers/4", - "/foo/d/in/_layers/5", - "/an/invalid/repo", - "/bar/d/_layers/ignored/dir/6", - } - - for _, repo := range repos { - if err := d.PutContent(ctx, rootpath+repo, c); err != nil { - t.Fatalf("Unable to put to inmemory fs") - } - } - - expected := []string{ - "bar/c", - "bar/d", - "foo/a", - "foo/b", - "foo/d/in", - } - - return &setupEnv{ - ctx: ctx, - driver: d, - expected: expected, - registry: registry, - } -} - -func TestCatalog(t *testing.T) { - env := setupFS(t) - - p := make([]string, 50) - - numFilled, err := env.registry.Repositories(env.ctx, p, "") - - if !testEq(p, env.expected, numFilled) { - t.Errorf("Expected catalog repos err") - } - - if err != io.EOF { - t.Errorf("Catalog has more values which we aren't expecting") - } -} - -func TestCatalogInParts(t *testing.T) { - env := setupFS(t) - - chunkLen := 2 - p := make([]string, chunkLen) - - numFilled, err := env.registry.Repositories(env.ctx, p, "") - if err == io.EOF || numFilled != len(p) { - t.Errorf("Expected more values in catalog") - } - - if !testEq(p, env.expected[0:chunkLen], numFilled) { - t.Errorf("Expected catalog first chunk err") - } - - lastRepo := p[len(p)-1] - numFilled, err = env.registry.Repositories(env.ctx, p, lastRepo) - - if err == io.EOF || numFilled != len(p) { - t.Errorf("Expected more values in catalog") - } - - if !testEq(p, env.expected[chunkLen:chunkLen*2], numFilled) { - t.Errorf("Expected catalog second chunk err") - } - - lastRepo = p[len(p)-1] - numFilled, err = env.registry.Repositories(env.ctx, p, lastRepo) - - if err != io.EOF { - t.Errorf("Catalog has more values which we aren't expecting") - } - - if !testEq(p, env.expected[chunkLen*2:chunkLen*3-1], numFilled) { - t.Errorf("Expected catalog third chunk err") - } - -} - -func testEq(a, b []string, size int) bool { - for cnt := 0; cnt < size-1; cnt++ { - if a[cnt] != b[cnt] { - return false - } - } - return true -} diff --git a/vendor/github.com/docker/distribution/registry/storage/doc.go b/vendor/github.com/docker/distribution/registry/storage/doc.go deleted file mode 100644 index 387d92348a..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package storage contains storage services for use in the registry -// application. It should be considered an internal package, as of Go 1.4. -package storage diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/azure/azure.go b/vendor/github.com/docker/distribution/registry/storage/driver/azure/azure.go deleted file mode 100644 index b06b08764d..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/azure/azure.go +++ /dev/null @@ -1,482 +0,0 @@ -// Package azure provides a storagedriver.StorageDriver implementation to -// store blobs in Microsoft Azure Blob Storage Service. -package azure - -import ( - "bufio" - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "strings" - "time" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" - - azure "github.com/Azure/azure-sdk-for-go/storage" -) - -const driverName = "azure" - -const ( - paramAccountName = "accountname" - paramAccountKey = "accountkey" - paramContainer = "container" - paramRealm = "realm" - maxChunkSize = 4 * 1024 * 1024 -) - -type driver struct { - client azure.BlobStorageClient - container string -} - -type baseEmbed struct{ base.Base } - -// Driver is a storagedriver.StorageDriver implementation backed by -// Microsoft Azure Blob Storage Service. -type Driver struct{ baseEmbed } - -func init() { - factory.Register(driverName, &azureDriverFactory{}) -} - -type azureDriverFactory struct{} - -func (factory *azureDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters) -} - -// FromParameters constructs a new Driver with a given parameters map. -func FromParameters(parameters map[string]interface{}) (*Driver, error) { - accountName, ok := parameters[paramAccountName] - if !ok || fmt.Sprint(accountName) == "" { - return nil, fmt.Errorf("No %s parameter provided", paramAccountName) - } - - accountKey, ok := parameters[paramAccountKey] - if !ok || fmt.Sprint(accountKey) == "" { - return nil, fmt.Errorf("No %s parameter provided", paramAccountKey) - } - - container, ok := parameters[paramContainer] - if !ok || fmt.Sprint(container) == "" { - return nil, fmt.Errorf("No %s parameter provided", paramContainer) - } - - realm, ok := parameters[paramRealm] - if !ok || fmt.Sprint(realm) == "" { - realm = azure.DefaultBaseURL - } - - return New(fmt.Sprint(accountName), fmt.Sprint(accountKey), fmt.Sprint(container), fmt.Sprint(realm)) -} - -// New constructs a new Driver with the given Azure Storage Account credentials -func New(accountName, accountKey, container, realm string) (*Driver, error) { - api, err := azure.NewClient(accountName, accountKey, realm, azure.DefaultAPIVersion, true) - if err != nil { - return nil, err - } - - blobClient := api.GetBlobService() - - // Create registry container - if _, err = blobClient.CreateContainerIfNotExists(container, azure.ContainerAccessTypePrivate); err != nil { - return nil, err - } - - d := &driver{ - client: blobClient, - container: container} - return &Driver{baseEmbed: baseEmbed{Base: base.Base{StorageDriver: d}}}, nil -} - -// Implement the storagedriver.StorageDriver interface. -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - blob, err := d.client.GetBlob(d.container, path) - if err != nil { - if is404(err) { - return nil, storagedriver.PathNotFoundError{Path: path} - } - return nil, err - } - - return ioutil.ReadAll(blob) -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, path string, contents []byte) error { - if _, err := d.client.DeleteBlobIfExists(d.container, path); err != nil { - return err - } - writer, err := d.Writer(ctx, path, false) - if err != nil { - return err - } - defer writer.Close() - _, err = writer.Write(contents) - if err != nil { - return err - } - return writer.Commit() -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - if ok, err := d.client.BlobExists(d.container, path); err != nil { - return nil, err - } else if !ok { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - info, err := d.client.GetBlobProperties(d.container, path) - if err != nil { - return nil, err - } - - size := int64(info.ContentLength) - if offset >= size { - return ioutil.NopCloser(bytes.NewReader(nil)), nil - } - - bytesRange := fmt.Sprintf("%v-", offset) - resp, err := d.client.GetBlobRange(d.container, path, bytesRange) - if err != nil { - return nil, err - } - return resp, nil -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - blobExists, err := d.client.BlobExists(d.container, path) - if err != nil { - return nil, err - } - var size int64 - if blobExists { - if append { - blobProperties, err := d.client.GetBlobProperties(d.container, path) - if err != nil { - return nil, err - } - size = blobProperties.ContentLength - } else { - err := d.client.DeleteBlob(d.container, path) - if err != nil { - return nil, err - } - } - } else { - if append { - return nil, storagedriver.PathNotFoundError{Path: path} - } - err := d.client.PutAppendBlob(d.container, path, nil) - if err != nil { - return nil, err - } - } - - return d.newWriter(path, size), nil -} - -// Stat retrieves the FileInfo for the given path, including the current size -// in bytes and the creation time. -func (d *driver) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - // Check if the path is a blob - if ok, err := d.client.BlobExists(d.container, path); err != nil { - return nil, err - } else if ok { - blob, err := d.client.GetBlobProperties(d.container, path) - if err != nil { - return nil, err - } - - mtim, err := time.Parse(http.TimeFormat, blob.LastModified) - if err != nil { - return nil, err - } - - return storagedriver.FileInfoInternal{FileInfoFields: storagedriver.FileInfoFields{ - Path: path, - Size: int64(blob.ContentLength), - ModTime: mtim, - IsDir: false, - }}, nil - } - - // Check if path is a virtual container - virtContainerPath := path - if !strings.HasSuffix(virtContainerPath, "/") { - virtContainerPath += "/" - } - blobs, err := d.client.ListBlobs(d.container, azure.ListBlobsParameters{ - Prefix: virtContainerPath, - MaxResults: 1, - }) - if err != nil { - return nil, err - } - if len(blobs.Blobs) > 0 { - // path is a virtual container - return storagedriver.FileInfoInternal{FileInfoFields: storagedriver.FileInfoFields{ - Path: path, - IsDir: true, - }}, nil - } - - // path is not a blob or virtual container - return nil, storagedriver.PathNotFoundError{Path: path} -} - -// List returns a list of the objects that are direct descendants of the given -// path. -func (d *driver) List(ctx context.Context, path string) ([]string, error) { - if path == "/" { - path = "" - } - - blobs, err := d.listBlobs(d.container, path) - if err != nil { - return blobs, err - } - - list := directDescendants(blobs, path) - if path != "" && len(list) == 0 { - return nil, storagedriver.PathNotFoundError{Path: path} - } - return list, nil -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - sourceBlobURL := d.client.GetBlobURL(d.container, sourcePath) - err := d.client.CopyBlob(d.container, destPath, sourceBlobURL) - if err != nil { - if is404(err) { - return storagedriver.PathNotFoundError{Path: sourcePath} - } - return err - } - - return d.client.DeleteBlob(d.container, sourcePath) -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, path string) error { - ok, err := d.client.DeleteBlobIfExists(d.container, path) - if err != nil { - return err - } - if ok { - return nil // was a blob and deleted, return - } - - // Not a blob, see if path is a virtual container with blobs - blobs, err := d.listBlobs(d.container, path) - if err != nil { - return err - } - - for _, b := range blobs { - if err = d.client.DeleteBlob(d.container, b); err != nil { - return err - } - } - - if len(blobs) == 0 { - return storagedriver.PathNotFoundError{Path: path} - } - return nil -} - -// URLFor returns a publicly accessible URL for the blob stored at given path -// for specified duration by making use of Azure Storage Shared Access Signatures (SAS). -// See https://msdn.microsoft.com/en-us/library/azure/ee395415.aspx for more info. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - expiresTime := time.Now().UTC().Add(20 * time.Minute) // default expiration - expires, ok := options["expiry"] - if ok { - t, ok := expires.(time.Time) - if ok { - expiresTime = t - } - } - return d.client.GetBlobSASURI(d.container, path, expiresTime, "r") -} - -// directDescendants will find direct descendants (blobs or virtual containers) -// of from list of blob paths and will return their full paths. Elements in blobs -// list must be prefixed with a "/" and -// -// Example: direct descendants of "/" in {"/foo", "/bar/1", "/bar/2"} is -// {"/foo", "/bar"} and direct descendants of "bar" is {"/bar/1", "/bar/2"} -func directDescendants(blobs []string, prefix string) []string { - if !strings.HasPrefix(prefix, "/") { // add trailing '/' - prefix = "/" + prefix - } - if !strings.HasSuffix(prefix, "/") { // containerify the path - prefix += "/" - } - - out := make(map[string]bool) - for _, b := range blobs { - if strings.HasPrefix(b, prefix) { - rel := b[len(prefix):] - c := strings.Count(rel, "/") - if c == 0 { - out[b] = true - } else { - out[prefix+rel[:strings.Index(rel, "/")]] = true - } - } - } - - var keys []string - for k := range out { - keys = append(keys, k) - } - return keys -} - -func (d *driver) listBlobs(container, virtPath string) ([]string, error) { - if virtPath != "" && !strings.HasSuffix(virtPath, "/") { // containerify the path - virtPath += "/" - } - - out := []string{} - marker := "" - for { - resp, err := d.client.ListBlobs(d.container, azure.ListBlobsParameters{ - Marker: marker, - Prefix: virtPath, - }) - - if err != nil { - return out, err - } - - for _, b := range resp.Blobs { - out = append(out, b.Name) - } - - if len(resp.Blobs) == 0 || resp.NextMarker == "" { - break - } - marker = resp.NextMarker - } - return out, nil -} - -func is404(err error) bool { - statusCodeErr, ok := err.(azure.AzureStorageServiceError) - return ok && statusCodeErr.StatusCode == http.StatusNotFound -} - -type writer struct { - driver *driver - path string - size int64 - bw *bufio.Writer - closed bool - committed bool - cancelled bool -} - -func (d *driver) newWriter(path string, size int64) storagedriver.FileWriter { - return &writer{ - driver: d, - path: path, - size: size, - bw: bufio.NewWriterSize(&blockWriter{ - client: d.client, - container: d.container, - path: path, - }, maxChunkSize), - } -} - -func (w *writer) Write(p []byte) (int, error) { - if w.closed { - return 0, fmt.Errorf("already closed") - } else if w.committed { - return 0, fmt.Errorf("already committed") - } else if w.cancelled { - return 0, fmt.Errorf("already cancelled") - } - - n, err := w.bw.Write(p) - w.size += int64(n) - return n, err -} - -func (w *writer) Size() int64 { - return w.size -} - -func (w *writer) Close() error { - if w.closed { - return fmt.Errorf("already closed") - } - w.closed = true - return w.bw.Flush() -} - -func (w *writer) Cancel() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } - w.cancelled = true - return w.driver.client.DeleteBlob(w.driver.container, w.path) -} - -func (w *writer) Commit() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } else if w.cancelled { - return fmt.Errorf("already cancelled") - } - w.committed = true - return w.bw.Flush() -} - -type blockWriter struct { - client azure.BlobStorageClient - container string - path string -} - -func (bw *blockWriter) Write(p []byte) (int, error) { - n := 0 - for offset := 0; offset < len(p); offset += maxChunkSize { - chunkSize := maxChunkSize - if offset+chunkSize > len(p) { - chunkSize = len(p) - offset - } - err := bw.client.AppendBlock(bw.container, bw.path, p[offset:offset+chunkSize]) - if err != nil { - return n, err - } - - n += chunkSize - } - - return n, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/azure/azure_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/azure/azure_test.go deleted file mode 100644 index 4a0661b3e6..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/azure/azure_test.go +++ /dev/null @@ -1,63 +0,0 @@ -package azure - -import ( - "fmt" - "os" - "strings" - "testing" - - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - . "gopkg.in/check.v1" -) - -const ( - envAccountName = "AZURE_STORAGE_ACCOUNT_NAME" - envAccountKey = "AZURE_STORAGE_ACCOUNT_KEY" - envContainer = "AZURE_STORAGE_CONTAINER" - envRealm = "AZURE_STORAGE_REALM" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -func init() { - var ( - accountName string - accountKey string - container string - realm string - ) - - config := []struct { - env string - value *string - }{ - {envAccountName, &accountName}, - {envAccountKey, &accountKey}, - {envContainer, &container}, - {envRealm, &realm}, - } - - missing := []string{} - for _, v := range config { - *v.value = os.Getenv(v.env) - if *v.value == "" { - missing = append(missing, v.env) - } - } - - azureDriverConstructor := func() (storagedriver.StorageDriver, error) { - return New(accountName, accountKey, container, realm) - } - - // Skip Azure storage driver tests if environment variable parameters are not provided - skipCheck := func() string { - if len(missing) > 0 { - return fmt.Sprintf("Must set %s environment variables to run Azure tests", strings.Join(missing, ", ")) - } - return "" - } - - testsuites.RegisterSuite(azureDriverConstructor, skipCheck) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/base/base.go b/vendor/github.com/docker/distribution/registry/storage/driver/base/base.go deleted file mode 100644 index 064bda60fd..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/base/base.go +++ /dev/null @@ -1,198 +0,0 @@ -// Package base provides a base implementation of the storage driver that can -// be used to implement common checks. The goal is to increase the amount of -// code sharing. -// -// The canonical approach to use this class is to embed in the exported driver -// struct such that calls are proxied through this implementation. First, -// declare the internal driver, as follows: -// -// type driver struct { ... internal ...} -// -// The resulting type should implement StorageDriver such that it can be the -// target of a Base struct. The exported type can then be declared as follows: -// -// type Driver struct { -// Base -// } -// -// Because Driver embeds Base, it effectively implements Base. If the driver -// needs to intercept a call, before going to base, Driver should implement -// that method. Effectively, Driver can intercept calls before coming in and -// driver implements the actual logic. -// -// To further shield the embed from other packages, it is recommended to -// employ a private embed struct: -// -// type baseEmbed struct { -// base.Base -// } -// -// Then, declare driver to embed baseEmbed, rather than Base directly: -// -// type Driver struct { -// baseEmbed -// } -// -// The type now implements StorageDriver, proxying through Base, without -// exporting an unnecessary field. -package base - -import ( - "io" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" -) - -// Base provides a wrapper around a storagedriver implementation that provides -// common path and bounds checking. -type Base struct { - storagedriver.StorageDriver -} - -// Format errors received from the storage driver -func (base *Base) setDriverName(e error) error { - switch actual := e.(type) { - case nil: - return nil - case storagedriver.ErrUnsupportedMethod: - actual.DriverName = base.StorageDriver.Name() - return actual - case storagedriver.PathNotFoundError: - actual.DriverName = base.StorageDriver.Name() - return actual - case storagedriver.InvalidPathError: - actual.DriverName = base.StorageDriver.Name() - return actual - case storagedriver.InvalidOffsetError: - actual.DriverName = base.StorageDriver.Name() - return actual - default: - storageError := storagedriver.Error{ - DriverName: base.StorageDriver.Name(), - Enclosed: e, - } - - return storageError - } -} - -// GetContent wraps GetContent of underlying storage driver. -func (base *Base) GetContent(ctx context.Context, path string) ([]byte, error) { - ctx, done := context.WithTrace(ctx) - defer done("%s.GetContent(%q)", base.Name(), path) - - if !storagedriver.PathRegexp.MatchString(path) { - return nil, storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - b, e := base.StorageDriver.GetContent(ctx, path) - return b, base.setDriverName(e) -} - -// PutContent wraps PutContent of underlying storage driver. -func (base *Base) PutContent(ctx context.Context, path string, content []byte) error { - ctx, done := context.WithTrace(ctx) - defer done("%s.PutContent(%q)", base.Name(), path) - - if !storagedriver.PathRegexp.MatchString(path) { - return storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - return base.setDriverName(base.StorageDriver.PutContent(ctx, path, content)) -} - -// Reader wraps Reader of underlying storage driver. -func (base *Base) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - ctx, done := context.WithTrace(ctx) - defer done("%s.Reader(%q, %d)", base.Name(), path, offset) - - if offset < 0 { - return nil, storagedriver.InvalidOffsetError{Path: path, Offset: offset, DriverName: base.StorageDriver.Name()} - } - - if !storagedriver.PathRegexp.MatchString(path) { - return nil, storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - rc, e := base.StorageDriver.Reader(ctx, path, offset) - return rc, base.setDriverName(e) -} - -// Writer wraps Writer of underlying storage driver. -func (base *Base) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - ctx, done := context.WithTrace(ctx) - defer done("%s.Writer(%q, %v)", base.Name(), path, append) - - if !storagedriver.PathRegexp.MatchString(path) { - return nil, storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - writer, e := base.StorageDriver.Writer(ctx, path, append) - return writer, base.setDriverName(e) -} - -// Stat wraps Stat of underlying storage driver. -func (base *Base) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - ctx, done := context.WithTrace(ctx) - defer done("%s.Stat(%q)", base.Name(), path) - - if !storagedriver.PathRegexp.MatchString(path) { - return nil, storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - fi, e := base.StorageDriver.Stat(ctx, path) - return fi, base.setDriverName(e) -} - -// List wraps List of underlying storage driver. -func (base *Base) List(ctx context.Context, path string) ([]string, error) { - ctx, done := context.WithTrace(ctx) - defer done("%s.List(%q)", base.Name(), path) - - if !storagedriver.PathRegexp.MatchString(path) && path != "/" { - return nil, storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - str, e := base.StorageDriver.List(ctx, path) - return str, base.setDriverName(e) -} - -// Move wraps Move of underlying storage driver. -func (base *Base) Move(ctx context.Context, sourcePath string, destPath string) error { - ctx, done := context.WithTrace(ctx) - defer done("%s.Move(%q, %q", base.Name(), sourcePath, destPath) - - if !storagedriver.PathRegexp.MatchString(sourcePath) { - return storagedriver.InvalidPathError{Path: sourcePath, DriverName: base.StorageDriver.Name()} - } else if !storagedriver.PathRegexp.MatchString(destPath) { - return storagedriver.InvalidPathError{Path: destPath, DriverName: base.StorageDriver.Name()} - } - - return base.setDriverName(base.StorageDriver.Move(ctx, sourcePath, destPath)) -} - -// Delete wraps Delete of underlying storage driver. -func (base *Base) Delete(ctx context.Context, path string) error { - ctx, done := context.WithTrace(ctx) - defer done("%s.Delete(%q)", base.Name(), path) - - if !storagedriver.PathRegexp.MatchString(path) { - return storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - return base.setDriverName(base.StorageDriver.Delete(ctx, path)) -} - -// URLFor wraps URLFor of underlying storage driver. -func (base *Base) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - ctx, done := context.WithTrace(ctx) - defer done("%s.URLFor(%q)", base.Name(), path) - - if !storagedriver.PathRegexp.MatchString(path) { - return "", storagedriver.InvalidPathError{Path: path, DriverName: base.StorageDriver.Name()} - } - - str, e := base.StorageDriver.URLFor(ctx, path, options) - return str, base.setDriverName(e) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/factory/factory.go b/vendor/github.com/docker/distribution/registry/storage/driver/factory/factory.go deleted file mode 100644 index a9c04ec593..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/factory/factory.go +++ /dev/null @@ -1,64 +0,0 @@ -package factory - -import ( - "fmt" - - storagedriver "github.com/docker/distribution/registry/storage/driver" -) - -// driverFactories stores an internal mapping between storage driver names and their respective -// factories -var driverFactories = make(map[string]StorageDriverFactory) - -// StorageDriverFactory is a factory interface for creating storagedriver.StorageDriver interfaces -// Storage drivers should call Register() with a factory to make the driver available by name. -// Individual StorageDriver implementations generally register with the factory via the Register -// func (below) in their init() funcs, and as such they should be imported anonymously before use. -// See below for an example of how to register and get a StorageDriver for S3 -// -// import _ "github.com/docker/distribution/registry/storage/driver/s3-aws" -// s3Driver, err = factory.Create("s3", storageParams) -// // assuming no error, s3Driver is the StorageDriver that communicates with S3 according to storageParams -type StorageDriverFactory interface { - // Create returns a new storagedriver.StorageDriver with the given parameters - // Parameters will vary by driver and may be ignored - // Each parameter key must only consist of lowercase letters and numbers - Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) -} - -// Register makes a storage driver available by the provided name. -// If Register is called twice with the same name or if driver factory is nil, it panics. -// Additionally, it is not concurrency safe. Most Storage Drivers call this function -// in their init() functions. See the documentation for StorageDriverFactory for more. -func Register(name string, factory StorageDriverFactory) { - if factory == nil { - panic("Must not provide nil StorageDriverFactory") - } - _, registered := driverFactories[name] - if registered { - panic(fmt.Sprintf("StorageDriverFactory named %s already registered", name)) - } - - driverFactories[name] = factory -} - -// Create a new storagedriver.StorageDriver with the given name and -// parameters. To use a driver, the StorageDriverFactory must first be -// registered with the given name. If no drivers are found, an -// InvalidStorageDriverError is returned -func Create(name string, parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - driverFactory, ok := driverFactories[name] - if !ok { - return nil, InvalidStorageDriverError{name} - } - return driverFactory.Create(parameters) -} - -// InvalidStorageDriverError records an attempt to construct an unregistered storage driver -type InvalidStorageDriverError struct { - Name string -} - -func (err InvalidStorageDriverError) Error() string { - return fmt.Sprintf("StorageDriver not registered: %s", err.Name) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/fileinfo.go b/vendor/github.com/docker/distribution/registry/storage/driver/fileinfo.go deleted file mode 100644 index e5064029ad..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/fileinfo.go +++ /dev/null @@ -1,79 +0,0 @@ -package driver - -import "time" - -// FileInfo returns information about a given path. Inspired by os.FileInfo, -// it elides the base name method for a full path instead. -type FileInfo interface { - // Path provides the full path of the target of this file info. - Path() string - - // Size returns current length in bytes of the file. The return value can - // be used to write to the end of the file at path. The value is - // meaningless if IsDir returns true. - Size() int64 - - // ModTime returns the modification time for the file. For backends that - // don't have a modification time, the creation time should be returned. - ModTime() time.Time - - // IsDir returns true if the path is a directory. - IsDir() bool -} - -// NOTE(stevvooe): The next two types, FileInfoFields and FileInfoInternal -// should only be used by storagedriver implementations. They should moved to -// a "driver" package, similar to database/sql. - -// FileInfoFields provides the exported fields for implementing FileInfo -// interface in storagedriver implementations. It should be used with -// InternalFileInfo. -type FileInfoFields struct { - // Path provides the full path of the target of this file info. - Path string - - // Size is current length in bytes of the file. The value of this field - // can be used to write to the end of the file at path. The value is - // meaningless if IsDir is set to true. - Size int64 - - // ModTime returns the modification time for the file. For backends that - // don't have a modification time, the creation time should be returned. - ModTime time.Time - - // IsDir returns true if the path is a directory. - IsDir bool -} - -// FileInfoInternal implements the FileInfo interface. This should only be -// used by storagedriver implementations that don't have a specialized -// FileInfo type. -type FileInfoInternal struct { - FileInfoFields -} - -var _ FileInfo = FileInfoInternal{} -var _ FileInfo = &FileInfoInternal{} - -// Path provides the full path of the target of this file info. -func (fi FileInfoInternal) Path() string { - return fi.FileInfoFields.Path -} - -// Size returns current length in bytes of the file. The return value can -// be used to write to the end of the file at path. The value is -// meaningless if IsDir returns true. -func (fi FileInfoInternal) Size() int64 { - return fi.FileInfoFields.Size -} - -// ModTime returns the modification time for the file. For backends that -// don't have a modification time, the creation time should be returned. -func (fi FileInfoInternal) ModTime() time.Time { - return fi.FileInfoFields.ModTime -} - -// IsDir returns true if the path is a directory. -func (fi FileInfoInternal) IsDir() bool { - return fi.FileInfoFields.IsDir -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/filesystem/driver.go b/vendor/github.com/docker/distribution/registry/storage/driver/filesystem/driver.go deleted file mode 100644 index 3bbdc63793..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/filesystem/driver.go +++ /dev/null @@ -1,376 +0,0 @@ -package filesystem - -import ( - "bufio" - "bytes" - "fmt" - "io" - "io/ioutil" - "os" - "path" - "time" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" -) - -const driverName = "filesystem" -const defaultRootDirectory = "/var/lib/registry" - -func init() { - factory.Register(driverName, &filesystemDriverFactory{}) -} - -// filesystemDriverFactory implements the factory.StorageDriverFactory interface -type filesystemDriverFactory struct{} - -func (factory *filesystemDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters), nil -} - -type driver struct { - rootDirectory string -} - -type baseEmbed struct { - base.Base -} - -// Driver is a storagedriver.StorageDriver implementation backed by a local -// filesystem. All provided paths will be subpaths of the RootDirectory. -type Driver struct { - baseEmbed -} - -// FromParameters constructs a new Driver with a given parameters map -// Optional Parameters: -// - rootdirectory -func FromParameters(parameters map[string]interface{}) *Driver { - var rootDirectory = defaultRootDirectory - if parameters != nil { - rootDir, ok := parameters["rootdirectory"] - if ok { - rootDirectory = fmt.Sprint(rootDir) - } - } - return New(rootDirectory) -} - -// New constructs a new Driver with a given rootDirectory -func New(rootDirectory string) *Driver { - return &Driver{ - baseEmbed: baseEmbed{ - Base: base.Base{ - StorageDriver: &driver{ - rootDirectory: rootDirectory, - }, - }, - }, - } -} - -// Implement the storagedriver.StorageDriver interface - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - rc, err := d.Reader(ctx, path, 0) - if err != nil { - return nil, err - } - defer rc.Close() - - p, err := ioutil.ReadAll(rc) - if err != nil { - return nil, err - } - - return p, nil -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, subPath string, contents []byte) error { - writer, err := d.Writer(ctx, subPath, false) - if err != nil { - return err - } - defer writer.Close() - _, err = io.Copy(writer, bytes.NewReader(contents)) - if err != nil { - writer.Cancel() - return err - } - return writer.Commit() -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - file, err := os.OpenFile(d.fullPath(path), os.O_RDONLY, 0644) - if err != nil { - if os.IsNotExist(err) { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - return nil, err - } - - seekPos, err := file.Seek(int64(offset), os.SEEK_SET) - if err != nil { - file.Close() - return nil, err - } else if seekPos < int64(offset) { - file.Close() - return nil, storagedriver.InvalidOffsetError{Path: path, Offset: offset} - } - - return file, nil -} - -func (d *driver) Writer(ctx context.Context, subPath string, append bool) (storagedriver.FileWriter, error) { - fullPath := d.fullPath(subPath) - parentDir := path.Dir(fullPath) - if err := os.MkdirAll(parentDir, 0777); err != nil { - return nil, err - } - - fp, err := os.OpenFile(fullPath, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - return nil, err - } - - var offset int64 - - if !append { - err := fp.Truncate(0) - if err != nil { - fp.Close() - return nil, err - } - } else { - n, err := fp.Seek(0, os.SEEK_END) - if err != nil { - fp.Close() - return nil, err - } - offset = int64(n) - } - - return newFileWriter(fp, offset), nil -} - -// Stat retrieves the FileInfo for the given path, including the current size -// in bytes and the creation time. -func (d *driver) Stat(ctx context.Context, subPath string) (storagedriver.FileInfo, error) { - fullPath := d.fullPath(subPath) - - fi, err := os.Stat(fullPath) - if err != nil { - if os.IsNotExist(err) { - return nil, storagedriver.PathNotFoundError{Path: subPath} - } - - return nil, err - } - - return fileInfo{ - path: subPath, - FileInfo: fi, - }, nil -} - -// List returns a list of the objects that are direct descendants of the given -// path. -func (d *driver) List(ctx context.Context, subPath string) ([]string, error) { - fullPath := d.fullPath(subPath) - - dir, err := os.Open(fullPath) - if err != nil { - if os.IsNotExist(err) { - return nil, storagedriver.PathNotFoundError{Path: subPath} - } - return nil, err - } - - defer dir.Close() - - fileNames, err := dir.Readdirnames(0) - if err != nil { - return nil, err - } - - keys := make([]string, 0, len(fileNames)) - for _, fileName := range fileNames { - keys = append(keys, path.Join(subPath, fileName)) - } - - return keys, nil -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - source := d.fullPath(sourcePath) - dest := d.fullPath(destPath) - - if _, err := os.Stat(source); os.IsNotExist(err) { - return storagedriver.PathNotFoundError{Path: sourcePath} - } - - if err := os.MkdirAll(path.Dir(dest), 0755); err != nil { - return err - } - - err := os.Rename(source, dest) - return err -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, subPath string) error { - fullPath := d.fullPath(subPath) - - _, err := os.Stat(fullPath) - if err != nil && !os.IsNotExist(err) { - return err - } else if err != nil { - return storagedriver.PathNotFoundError{Path: subPath} - } - - err = os.RemoveAll(fullPath) - return err -} - -// URLFor returns a URL which may be used to retrieve the content stored at the given path. -// May return an UnsupportedMethodErr in certain StorageDriver implementations. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - return "", storagedriver.ErrUnsupportedMethod{} -} - -// fullPath returns the absolute path of a key within the Driver's storage. -func (d *driver) fullPath(subPath string) string { - return path.Join(d.rootDirectory, subPath) -} - -type fileInfo struct { - os.FileInfo - path string -} - -var _ storagedriver.FileInfo = fileInfo{} - -// Path provides the full path of the target of this file info. -func (fi fileInfo) Path() string { - return fi.path -} - -// Size returns current length in bytes of the file. The return value can -// be used to write to the end of the file at path. The value is -// meaningless if IsDir returns true. -func (fi fileInfo) Size() int64 { - if fi.IsDir() { - return 0 - } - - return fi.FileInfo.Size() -} - -// ModTime returns the modification time for the file. For backends that -// don't have a modification time, the creation time should be returned. -func (fi fileInfo) ModTime() time.Time { - return fi.FileInfo.ModTime() -} - -// IsDir returns true if the path is a directory. -func (fi fileInfo) IsDir() bool { - return fi.FileInfo.IsDir() -} - -type fileWriter struct { - file *os.File - size int64 - bw *bufio.Writer - closed bool - committed bool - cancelled bool -} - -func newFileWriter(file *os.File, size int64) *fileWriter { - return &fileWriter{ - file: file, - size: size, - bw: bufio.NewWriter(file), - } -} - -func (fw *fileWriter) Write(p []byte) (int, error) { - if fw.closed { - return 0, fmt.Errorf("already closed") - } else if fw.committed { - return 0, fmt.Errorf("already committed") - } else if fw.cancelled { - return 0, fmt.Errorf("already cancelled") - } - n, err := fw.bw.Write(p) - fw.size += int64(n) - return n, err -} - -func (fw *fileWriter) Size() int64 { - return fw.size -} - -func (fw *fileWriter) Close() error { - if fw.closed { - return fmt.Errorf("already closed") - } - - if err := fw.bw.Flush(); err != nil { - return err - } - - if err := fw.file.Sync(); err != nil { - return err - } - - if err := fw.file.Close(); err != nil { - return err - } - fw.closed = true - return nil -} - -func (fw *fileWriter) Cancel() error { - if fw.closed { - return fmt.Errorf("already closed") - } - - fw.cancelled = true - fw.file.Close() - return os.Remove(fw.file.Name()) -} - -func (fw *fileWriter) Commit() error { - if fw.closed { - return fmt.Errorf("already closed") - } else if fw.committed { - return fmt.Errorf("already committed") - } else if fw.cancelled { - return fmt.Errorf("already cancelled") - } - - if err := fw.bw.Flush(); err != nil { - return err - } - - if err := fw.file.Sync(); err != nil { - return err - } - - fw.committed = true - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/filesystem/driver_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/filesystem/driver_test.go deleted file mode 100644 index 8b48b43121..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/filesystem/driver_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package filesystem - -import ( - "io/ioutil" - "os" - "testing" - - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -func init() { - root, err := ioutil.TempDir("", "driver-") - if err != nil { - panic(err) - } - defer os.Remove(root) - - testsuites.RegisterSuite(func() (storagedriver.StorageDriver, error) { - return New(root), nil - }, testsuites.NeverSkip) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/gcs/doc.go b/vendor/github.com/docker/distribution/registry/storage/driver/gcs/doc.go deleted file mode 100644 index 0f23ea7858..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/gcs/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package gcs implements the Google Cloud Storage driver backend. Support can be -// enabled by including the "include_gcs" build tag. -package gcs diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/gcs/gcs.go b/vendor/github.com/docker/distribution/registry/storage/driver/gcs/gcs.go deleted file mode 100644 index abe0b9f68f..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/gcs/gcs.go +++ /dev/null @@ -1,877 +0,0 @@ -// Package gcs provides a storagedriver.StorageDriver implementation to -// store blobs in Google cloud storage. -// -// This package leverages the google.golang.org/cloud/storage client library -//for interfacing with gcs. -// -// Because gcs is a key, value store the Stat call does not support last modification -// time for directories (directories are an abstraction for key, value stores) -// -// Note that the contents of incomplete uploads are not accessible even though -// Stat returns their length -// -// +build include_gcs - -package gcs - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "math/rand" - "net/http" - "net/url" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "time" - - "golang.org/x/net/context" - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - "golang.org/x/oauth2/jwt" - "google.golang.org/api/googleapi" - "google.golang.org/cloud" - "google.golang.org/cloud/storage" - - "github.com/Sirupsen/logrus" - - ctx "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" -) - -const ( - driverName = "gcs" - dummyProjectID = "" - - uploadSessionContentType = "application/x-docker-upload-session" - minChunkSize = 256 * 1024 - defaultChunkSize = 20 * minChunkSize - - maxTries = 5 -) - -var rangeHeader = regexp.MustCompile(`^bytes=([0-9])+-([0-9]+)$`) - -// driverParameters is a struct that encapsulates all of the driver parameters after all values have been set -type driverParameters struct { - bucket string - config *jwt.Config - email string - privateKey []byte - client *http.Client - rootDirectory string - chunkSize int -} - -func init() { - factory.Register(driverName, &gcsDriverFactory{}) -} - -// gcsDriverFactory implements the factory.StorageDriverFactory interface -type gcsDriverFactory struct{} - -// Create StorageDriver from parameters -func (factory *gcsDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters) -} - -// driver is a storagedriver.StorageDriver implementation backed by GCS -// Objects are stored at absolute keys in the provided bucket. -type driver struct { - client *http.Client - bucket string - email string - privateKey []byte - rootDirectory string - chunkSize int -} - -// FromParameters constructs a new Driver with a given parameters map -// Required parameters: -// - bucket -func FromParameters(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - bucket, ok := parameters["bucket"] - if !ok || fmt.Sprint(bucket) == "" { - return nil, fmt.Errorf("No bucket parameter provided") - } - - rootDirectory, ok := parameters["rootdirectory"] - if !ok { - rootDirectory = "" - } - - chunkSize := defaultChunkSize - chunkSizeParam, ok := parameters["chunksize"] - if ok { - switch v := chunkSizeParam.(type) { - case string: - vv, err := strconv.Atoi(v) - if err != nil { - return nil, fmt.Errorf("chunksize parameter must be an integer, %v invalid", chunkSizeParam) - } - chunkSize = vv - case int, uint, int32, uint32, uint64, int64: - chunkSize = int(reflect.ValueOf(v).Convert(reflect.TypeOf(chunkSize)).Int()) - default: - return nil, fmt.Errorf("invalid valud for chunksize: %#v", chunkSizeParam) - } - - if chunkSize < minChunkSize { - return nil, fmt.Errorf("The chunksize %#v parameter should be a number that is larger than or equal to %d", chunkSize, minChunkSize) - } - - if chunkSize%minChunkSize != 0 { - return nil, fmt.Errorf("chunksize should be a multiple of %d", minChunkSize) - } - } - - var ts oauth2.TokenSource - jwtConf := new(jwt.Config) - if keyfile, ok := parameters["keyfile"]; ok { - jsonKey, err := ioutil.ReadFile(fmt.Sprint(keyfile)) - if err != nil { - return nil, err - } - jwtConf, err = google.JWTConfigFromJSON(jsonKey, storage.ScopeFullControl) - if err != nil { - return nil, err - } - ts = jwtConf.TokenSource(context.Background()) - } else { - var err error - ts, err = google.DefaultTokenSource(context.Background(), storage.ScopeFullControl) - if err != nil { - return nil, err - } - } - - params := driverParameters{ - bucket: fmt.Sprint(bucket), - rootDirectory: fmt.Sprint(rootDirectory), - email: jwtConf.Email, - privateKey: jwtConf.PrivateKey, - client: oauth2.NewClient(context.Background(), ts), - chunkSize: chunkSize, - } - - return New(params) -} - -// New constructs a new driver -func New(params driverParameters) (storagedriver.StorageDriver, error) { - rootDirectory := strings.Trim(params.rootDirectory, "/") - if rootDirectory != "" { - rootDirectory += "/" - } - if params.chunkSize <= 0 || params.chunkSize%minChunkSize != 0 { - return nil, fmt.Errorf("Invalid chunksize: %d is not a positive multiple of %d", params.chunkSize, minChunkSize) - } - d := &driver{ - bucket: params.bucket, - rootDirectory: rootDirectory, - email: params.email, - privateKey: params.privateKey, - client: params.client, - chunkSize: params.chunkSize, - } - - return &base.Base{ - StorageDriver: d, - }, nil -} - -// Implement the storagedriver.StorageDriver interface - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -// This should primarily be used for small objects. -func (d *driver) GetContent(context ctx.Context, path string) ([]byte, error) { - gcsContext := d.context(context) - name := d.pathToKey(path) - var rc io.ReadCloser - err := retry(func() error { - var err error - rc, err = storage.NewReader(gcsContext, d.bucket, name) - return err - }) - if err == storage.ErrObjectNotExist { - return nil, storagedriver.PathNotFoundError{Path: path} - } - if err != nil { - return nil, err - } - defer rc.Close() - - p, err := ioutil.ReadAll(rc) - if err != nil { - return nil, err - } - return p, nil -} - -// PutContent stores the []byte content at a location designated by "path". -// This should primarily be used for small objects. -func (d *driver) PutContent(context ctx.Context, path string, contents []byte) error { - return retry(func() error { - wc := storage.NewWriter(d.context(context), d.bucket, d.pathToKey(path)) - wc.ContentType = "application/octet-stream" - return putContentsClose(wc, contents) - }) -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" -// with a given byte offset. -// May be used to resume reading a stream by providing a nonzero offset. -func (d *driver) Reader(context ctx.Context, path string, offset int64) (io.ReadCloser, error) { - res, err := getObject(d.client, d.bucket, d.pathToKey(path), offset) - if err != nil { - if res != nil { - if res.StatusCode == http.StatusNotFound { - res.Body.Close() - return nil, storagedriver.PathNotFoundError{Path: path} - } - - if res.StatusCode == http.StatusRequestedRangeNotSatisfiable { - res.Body.Close() - obj, err := storageStatObject(d.context(context), d.bucket, d.pathToKey(path)) - if err != nil { - return nil, err - } - if offset == int64(obj.Size) { - return ioutil.NopCloser(bytes.NewReader([]byte{})), nil - } - return nil, storagedriver.InvalidOffsetError{Path: path, Offset: offset} - } - } - return nil, err - } - if res.Header.Get("Content-Type") == uploadSessionContentType { - defer res.Body.Close() - return nil, storagedriver.PathNotFoundError{Path: path} - } - return res.Body, nil -} - -func getObject(client *http.Client, bucket string, name string, offset int64) (*http.Response, error) { - // copied from google.golang.org/cloud/storage#NewReader : - // to set the additional "Range" header - u := &url.URL{ - Scheme: "https", - Host: "storage.googleapis.com", - Path: fmt.Sprintf("/%s/%s", bucket, name), - } - req, err := http.NewRequest("GET", u.String(), nil) - if err != nil { - return nil, err - } - if offset > 0 { - req.Header.Set("Range", fmt.Sprintf("bytes=%v-", offset)) - } - var res *http.Response - err = retry(func() error { - var err error - res, err = client.Do(req) - return err - }) - if err != nil { - return nil, err - } - return res, googleapi.CheckMediaResponse(res) -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(context ctx.Context, path string, append bool) (storagedriver.FileWriter, error) { - writer := &writer{ - client: d.client, - bucket: d.bucket, - name: d.pathToKey(path), - buffer: make([]byte, d.chunkSize), - } - - if append { - err := writer.init(path) - if err != nil { - return nil, err - } - } - return writer, nil -} - -type writer struct { - client *http.Client - bucket string - name string - size int64 - offset int64 - closed bool - sessionURI string - buffer []byte - buffSize int -} - -// Cancel removes any written content from this FileWriter. -func (w *writer) Cancel() error { - err := w.checkClosed() - if err != nil { - return err - } - w.closed = true - err = storageDeleteObject(cloud.NewContext(dummyProjectID, w.client), w.bucket, w.name) - if err != nil { - if status, ok := err.(*googleapi.Error); ok { - if status.Code == http.StatusNotFound { - err = nil - } - } - } - return err -} - -func (w *writer) Close() error { - if w.closed { - return nil - } - w.closed = true - - err := w.writeChunk() - if err != nil { - return err - } - - // Copy the remaining bytes from the buffer to the upload session - // Normally buffSize will be smaller than minChunkSize. However, in the - // unlikely event that the upload session failed to start, this number could be higher. - // In this case we can safely clip the remaining bytes to the minChunkSize - if w.buffSize > minChunkSize { - w.buffSize = minChunkSize - } - - // commit the writes by updating the upload session - err = retry(func() error { - wc := storage.NewWriter(cloud.NewContext(dummyProjectID, w.client), w.bucket, w.name) - wc.ContentType = uploadSessionContentType - wc.Metadata = map[string]string{ - "Session-URI": w.sessionURI, - "Offset": strconv.FormatInt(w.offset, 10), - } - return putContentsClose(wc, w.buffer[0:w.buffSize]) - }) - if err != nil { - return err - } - w.size = w.offset + int64(w.buffSize) - w.buffSize = 0 - return nil -} - -func putContentsClose(wc *storage.Writer, contents []byte) error { - size := len(contents) - var nn int - var err error - for nn < size { - n, err := wc.Write(contents[nn:size]) - nn += n - if err != nil { - break - } - } - if err != nil { - wc.CloseWithError(err) - return err - } - return wc.Close() -} - -// Commit flushes all content written to this FileWriter and makes it -// available for future calls to StorageDriver.GetContent and -// StorageDriver.Reader. -func (w *writer) Commit() error { - - if err := w.checkClosed(); err != nil { - return err - } - w.closed = true - - // no session started yet just perform a simple upload - if w.sessionURI == "" { - err := retry(func() error { - wc := storage.NewWriter(cloud.NewContext(dummyProjectID, w.client), w.bucket, w.name) - wc.ContentType = "application/octet-stream" - return putContentsClose(wc, w.buffer[0:w.buffSize]) - }) - if err != nil { - return err - } - w.size = w.offset + int64(w.buffSize) - w.buffSize = 0 - return nil - } - size := w.offset + int64(w.buffSize) - var nn int - // loop must be performed at least once to ensure the file is committed even when - // the buffer is empty - for { - n, err := putChunk(w.client, w.sessionURI, w.buffer[nn:w.buffSize], w.offset, size) - nn += int(n) - w.offset += n - w.size = w.offset - if err != nil { - w.buffSize = copy(w.buffer, w.buffer[nn:w.buffSize]) - return err - } - if nn == w.buffSize { - break - } - } - w.buffSize = 0 - return nil -} - -func (w *writer) checkClosed() error { - if w.closed { - return fmt.Errorf("Writer already closed") - } - return nil -} - -func (w *writer) writeChunk() error { - var err error - // chunks can be uploaded only in multiples of minChunkSize - // chunkSize is a multiple of minChunkSize less than or equal to buffSize - chunkSize := w.buffSize - (w.buffSize % minChunkSize) - if chunkSize == 0 { - return nil - } - // if their is no sessionURI yet, obtain one by starting the session - if w.sessionURI == "" { - w.sessionURI, err = startSession(w.client, w.bucket, w.name) - } - if err != nil { - return err - } - nn, err := putChunk(w.client, w.sessionURI, w.buffer[0:chunkSize], w.offset, -1) - w.offset += nn - if w.offset > w.size { - w.size = w.offset - } - // shift the remaining bytes to the start of the buffer - w.buffSize = copy(w.buffer, w.buffer[int(nn):w.buffSize]) - - return err -} - -func (w *writer) Write(p []byte) (int, error) { - err := w.checkClosed() - if err != nil { - return 0, err - } - - var nn int - for nn < len(p) { - n := copy(w.buffer[w.buffSize:], p[nn:]) - w.buffSize += n - if w.buffSize == cap(w.buffer) { - err = w.writeChunk() - if err != nil { - break - } - } - nn += n - } - return nn, err -} - -// Size returns the number of bytes written to this FileWriter. -func (w *writer) Size() int64 { - return w.size -} - -func (w *writer) init(path string) error { - res, err := getObject(w.client, w.bucket, w.name, 0) - if err != nil { - return err - } - defer res.Body.Close() - if res.Header.Get("Content-Type") != uploadSessionContentType { - return storagedriver.PathNotFoundError{Path: path} - } - offset, err := strconv.ParseInt(res.Header.Get("X-Goog-Meta-Offset"), 10, 64) - if err != nil { - return err - } - buffer, err := ioutil.ReadAll(res.Body) - if err != nil { - return err - } - w.sessionURI = res.Header.Get("X-Goog-Meta-Session-URI") - w.buffSize = copy(w.buffer, buffer) - w.offset = offset - w.size = offset + int64(w.buffSize) - return nil -} - -type request func() error - -func retry(req request) error { - backoff := time.Second - var err error - for i := 0; i < maxTries; i++ { - err = req() - if err == nil { - return nil - } - - status, ok := err.(*googleapi.Error) - if !ok || (status.Code != 429 && status.Code < http.StatusInternalServerError) { - return err - } - - time.Sleep(backoff - time.Second + (time.Duration(rand.Int31n(1000)) * time.Millisecond)) - if i <= 4 { - backoff = backoff * 2 - } - } - return err -} - -// Stat retrieves the FileInfo for the given path, including the current -// size in bytes and the creation time. -func (d *driver) Stat(context ctx.Context, path string) (storagedriver.FileInfo, error) { - var fi storagedriver.FileInfoFields - //try to get as file - gcsContext := d.context(context) - obj, err := storageStatObject(gcsContext, d.bucket, d.pathToKey(path)) - if err == nil { - if obj.ContentType == uploadSessionContentType { - return nil, storagedriver.PathNotFoundError{Path: path} - } - fi = storagedriver.FileInfoFields{ - Path: path, - Size: obj.Size, - ModTime: obj.Updated, - IsDir: false, - } - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil - } - //try to get as folder - dirpath := d.pathToDirKey(path) - - var query *storage.Query - query = &storage.Query{} - query.Prefix = dirpath - query.MaxResults = 1 - - objects, err := storageListObjects(gcsContext, d.bucket, query) - if err != nil { - return nil, err - } - if len(objects.Results) < 1 { - return nil, storagedriver.PathNotFoundError{Path: path} - } - fi = storagedriver.FileInfoFields{ - Path: path, - IsDir: true, - } - obj = objects.Results[0] - if obj.Name == dirpath { - fi.Size = obj.Size - fi.ModTime = obj.Updated - } - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil -} - -// List returns a list of the objects that are direct descendants of the -//given path. -func (d *driver) List(context ctx.Context, path string) ([]string, error) { - var query *storage.Query - query = &storage.Query{} - query.Delimiter = "/" - query.Prefix = d.pathToDirKey(path) - list := make([]string, 0, 64) - for { - objects, err := storageListObjects(d.context(context), d.bucket, query) - if err != nil { - return nil, err - } - for _, object := range objects.Results { - // GCS does not guarantee strong consistency between - // DELETE and LIST operations. Check that the object is not deleted, - // and filter out any objects with a non-zero time-deleted - if object.Deleted.IsZero() && object.ContentType != uploadSessionContentType { - list = append(list, d.keyToPath(object.Name)) - } - } - for _, subpath := range objects.Prefixes { - subpath = d.keyToPath(subpath) - list = append(list, subpath) - } - query = objects.Next - if query == nil { - break - } - } - if path != "/" && len(list) == 0 { - // Treat empty response as missing directory, since we don't actually - // have directories in Google Cloud Storage. - return nil, storagedriver.PathNotFoundError{Path: path} - } - return list, nil -} - -// Move moves an object stored at sourcePath to destPath, removing the -// original object. -func (d *driver) Move(context ctx.Context, sourcePath string, destPath string) error { - gcsContext := d.context(context) - _, err := storageCopyObject(gcsContext, d.bucket, d.pathToKey(sourcePath), d.bucket, d.pathToKey(destPath), nil) - if err != nil { - if status, ok := err.(*googleapi.Error); ok { - if status.Code == http.StatusNotFound { - return storagedriver.PathNotFoundError{Path: sourcePath} - } - } - return err - } - err = storageDeleteObject(gcsContext, d.bucket, d.pathToKey(sourcePath)) - // if deleting the file fails, log the error, but do not fail; the file was successfully copied, - // and the original should eventually be cleaned when purging the uploads folder. - if err != nil { - logrus.Infof("error deleting file: %v due to %v", sourcePath, err) - } - return nil -} - -// listAll recursively lists all names of objects stored at "prefix" and its subpaths. -func (d *driver) listAll(context context.Context, prefix string) ([]string, error) { - list := make([]string, 0, 64) - query := &storage.Query{} - query.Prefix = prefix - query.Versions = false - for { - objects, err := storageListObjects(d.context(context), d.bucket, query) - if err != nil { - return nil, err - } - for _, obj := range objects.Results { - // GCS does not guarantee strong consistency between - // DELETE and LIST operations. Check that the object is not deleted, - // and filter out any objects with a non-zero time-deleted - if obj.Deleted.IsZero() { - list = append(list, obj.Name) - } - } - query = objects.Next - if query == nil { - break - } - } - return list, nil -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(context ctx.Context, path string) error { - prefix := d.pathToDirKey(path) - gcsContext := d.context(context) - keys, err := d.listAll(gcsContext, prefix) - if err != nil { - return err - } - if len(keys) > 0 { - sort.Sort(sort.Reverse(sort.StringSlice(keys))) - for _, key := range keys { - err := storageDeleteObject(gcsContext, d.bucket, key) - // GCS only guarantees eventual consistency, so listAll might return - // paths that no longer exist. If this happens, just ignore any not - // found error - if status, ok := err.(*googleapi.Error); ok { - if status.Code == http.StatusNotFound { - err = nil - } - } - if err != nil { - return err - } - } - return nil - } - err = storageDeleteObject(gcsContext, d.bucket, d.pathToKey(path)) - if err != nil { - if status, ok := err.(*googleapi.Error); ok { - if status.Code == http.StatusNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - } - } - return err -} - -func storageDeleteObject(context context.Context, bucket string, name string) error { - return retry(func() error { - return storage.DeleteObject(context, bucket, name) - }) -} - -func storageStatObject(context context.Context, bucket string, name string) (*storage.Object, error) { - var obj *storage.Object - err := retry(func() error { - var err error - obj, err = storage.StatObject(context, bucket, name) - return err - }) - return obj, err -} - -func storageListObjects(context context.Context, bucket string, q *storage.Query) (*storage.Objects, error) { - var objs *storage.Objects - err := retry(func() error { - var err error - objs, err = storage.ListObjects(context, bucket, q) - return err - }) - return objs, err -} - -func storageCopyObject(context context.Context, srcBucket, srcName string, destBucket, destName string, attrs *storage.ObjectAttrs) (*storage.Object, error) { - var obj *storage.Object - err := retry(func() error { - var err error - obj, err = storage.CopyObject(context, srcBucket, srcName, destBucket, destName, attrs) - return err - }) - return obj, err -} - -// URLFor returns a URL which may be used to retrieve the content stored at -// the given path, possibly using the given options. -// Returns ErrUnsupportedMethod if this driver has no privateKey -func (d *driver) URLFor(context ctx.Context, path string, options map[string]interface{}) (string, error) { - if d.privateKey == nil { - return "", storagedriver.ErrUnsupportedMethod{} - } - - name := d.pathToKey(path) - methodString := "GET" - method, ok := options["method"] - if ok { - methodString, ok = method.(string) - if !ok || (methodString != "GET" && methodString != "HEAD") { - return "", storagedriver.ErrUnsupportedMethod{} - } - } - - expiresTime := time.Now().Add(20 * time.Minute) - expires, ok := options["expiry"] - if ok { - et, ok := expires.(time.Time) - if ok { - expiresTime = et - } - } - - opts := &storage.SignedURLOptions{ - GoogleAccessID: d.email, - PrivateKey: d.privateKey, - Method: methodString, - Expires: expiresTime, - } - return storage.SignedURL(d.bucket, name, opts) -} - -func startSession(client *http.Client, bucket string, name string) (uri string, err error) { - u := &url.URL{ - Scheme: "https", - Host: "www.googleapis.com", - Path: fmt.Sprintf("/upload/storage/v1/b/%v/o", bucket), - RawQuery: fmt.Sprintf("uploadType=resumable&name=%v", name), - } - err = retry(func() error { - req, err := http.NewRequest("POST", u.String(), nil) - if err != nil { - return err - } - req.Header.Set("X-Upload-Content-Type", "application/octet-stream") - req.Header.Set("Content-Length", "0") - resp, err := client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - err = googleapi.CheckMediaResponse(resp) - if err != nil { - return err - } - uri = resp.Header.Get("Location") - return nil - }) - return uri, err -} - -func putChunk(client *http.Client, sessionURI string, chunk []byte, from int64, totalSize int64) (int64, error) { - bytesPut := int64(0) - err := retry(func() error { - req, err := http.NewRequest("PUT", sessionURI, bytes.NewReader(chunk)) - if err != nil { - return err - } - length := int64(len(chunk)) - to := from + length - 1 - size := "*" - if totalSize >= 0 { - size = strconv.FormatInt(totalSize, 10) - } - req.Header.Set("Content-Type", "application/octet-stream") - if from == to+1 { - req.Header.Set("Content-Range", fmt.Sprintf("bytes */%v", size)) - } else { - req.Header.Set("Content-Range", fmt.Sprintf("bytes %v-%v/%v", from, to, size)) - } - req.Header.Set("Content-Length", strconv.FormatInt(length, 10)) - - resp, err := client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - if totalSize < 0 && resp.StatusCode == 308 { - groups := rangeHeader.FindStringSubmatch(resp.Header.Get("Range")) - end, err := strconv.ParseInt(groups[2], 10, 64) - if err != nil { - return err - } - bytesPut = end - from + 1 - return nil - } - err = googleapi.CheckMediaResponse(resp) - if err != nil { - return err - } - bytesPut = to - from + 1 - return nil - }) - return bytesPut, err -} - -func (d *driver) context(context ctx.Context) context.Context { - return cloud.WithContext(context, dummyProjectID, d.client) -} - -func (d *driver) pathToKey(path string) string { - return strings.TrimRight(d.rootDirectory+strings.TrimLeft(path, "/"), "/") -} - -func (d *driver) pathToDirKey(path string) string { - return d.pathToKey(path) + "/" -} - -func (d *driver) keyToPath(key string) string { - return "/" + strings.Trim(strings.TrimPrefix(key, d.rootDirectory), "/") -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/gcs/gcs_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/gcs/gcs_test.go deleted file mode 100644 index f2808d5fc2..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/gcs/gcs_test.go +++ /dev/null @@ -1,311 +0,0 @@ -// +build include_gcs - -package gcs - -import ( - "io/ioutil" - "os" - "testing" - - "fmt" - ctx "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - "google.golang.org/api/googleapi" - "google.golang.org/cloud/storage" - "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -var gcsDriverConstructor func(rootDirectory string) (storagedriver.StorageDriver, error) -var skipGCS func() string - -func init() { - bucket := os.Getenv("REGISTRY_STORAGE_GCS_BUCKET") - credentials := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS") - - // Skip GCS storage driver tests if environment variable parameters are not provided - skipGCS = func() string { - if bucket == "" || credentials == "" { - return "The following environment variables must be set to enable these tests: REGISTRY_STORAGE_GCS_BUCKET, GOOGLE_APPLICATION_CREDENTIALS" - } - return "" - } - - if skipGCS() != "" { - return - } - - root, err := ioutil.TempDir("", "driver-") - if err != nil { - panic(err) - } - defer os.Remove(root) - var ts oauth2.TokenSource - var email string - var privateKey []byte - - ts, err = google.DefaultTokenSource(ctx.Background(), storage.ScopeFullControl) - if err != nil { - // Assume that the file contents are within the environment variable since it exists - // but does not contain a valid file path - jwtConfig, err := google.JWTConfigFromJSON([]byte(credentials), storage.ScopeFullControl) - if err != nil { - panic(fmt.Sprintf("Error reading JWT config : %s", err)) - } - email = jwtConfig.Email - privateKey = []byte(jwtConfig.PrivateKey) - if len(privateKey) == 0 { - panic("Error reading JWT config : missing private_key property") - } - if email == "" { - panic("Error reading JWT config : missing client_email property") - } - ts = jwtConfig.TokenSource(ctx.Background()) - } - - gcsDriverConstructor = func(rootDirectory string) (storagedriver.StorageDriver, error) { - parameters := driverParameters{ - bucket: bucket, - rootDirectory: root, - email: email, - privateKey: privateKey, - client: oauth2.NewClient(ctx.Background(), ts), - chunkSize: defaultChunkSize, - } - - return New(parameters) - } - - testsuites.RegisterSuite(func() (storagedriver.StorageDriver, error) { - return gcsDriverConstructor(root) - }, skipGCS) -} - -// Test Committing a FileWriter without having called Write -func TestCommitEmpty(t *testing.T) { - if skipGCS() != "" { - t.Skip(skipGCS()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - driver, err := gcsDriverConstructor(validRoot) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - filename := "/test" - ctx := ctx.Background() - - writer, err := driver.Writer(ctx, filename, false) - defer driver.Delete(ctx, filename) - if err != nil { - t.Fatalf("driver.Writer: unexpected error: %v", err) - } - err = writer.Commit() - if err != nil { - t.Fatalf("writer.Commit: unexpected error: %v", err) - } - err = writer.Close() - if err != nil { - t.Fatalf("writer.Close: unexpected error: %v", err) - } - if writer.Size() != 0 { - t.Fatalf("writer.Size: %d != 0", writer.Size()) - } - readContents, err := driver.GetContent(ctx, filename) - if err != nil { - t.Fatalf("driver.GetContent: unexpected error: %v", err) - } - if len(readContents) != 0 { - t.Fatalf("len(driver.GetContent(..)): %d != 0", len(readContents)) - } -} - -// Test Committing a FileWriter after having written exactly -// defaultChunksize bytes. -func TestCommit(t *testing.T) { - if skipGCS() != "" { - t.Skip(skipGCS()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - driver, err := gcsDriverConstructor(validRoot) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - filename := "/test" - ctx := ctx.Background() - - contents := make([]byte, defaultChunkSize) - writer, err := driver.Writer(ctx, filename, false) - defer driver.Delete(ctx, filename) - if err != nil { - t.Fatalf("driver.Writer: unexpected error: %v", err) - } - _, err = writer.Write(contents) - if err != nil { - t.Fatalf("writer.Write: unexpected error: %v", err) - } - err = writer.Commit() - if err != nil { - t.Fatalf("writer.Commit: unexpected error: %v", err) - } - err = writer.Close() - if err != nil { - t.Fatalf("writer.Close: unexpected error: %v", err) - } - if writer.Size() != int64(len(contents)) { - t.Fatalf("writer.Size: %d != %d", writer.Size(), len(contents)) - } - readContents, err := driver.GetContent(ctx, filename) - if err != nil { - t.Fatalf("driver.GetContent: unexpected error: %v", err) - } - if len(readContents) != len(contents) { - t.Fatalf("len(driver.GetContent(..)): %d != %d", len(readContents), len(contents)) - } -} - -func TestRetry(t *testing.T) { - if skipGCS() != "" { - t.Skip(skipGCS()) - } - - assertError := func(expected string, observed error) { - observedMsg := "" - if observed != nil { - observedMsg = observed.Error() - } - if observedMsg != expected { - t.Fatalf("expected %v, observed %v\n", expected, observedMsg) - } - } - - err := retry(func() error { - return &googleapi.Error{ - Code: 503, - Message: "google api error", - } - }) - assertError("googleapi: Error 503: google api error", err) - - err = retry(func() error { - return &googleapi.Error{ - Code: 404, - Message: "google api error", - } - }) - assertError("googleapi: Error 404: google api error", err) - - err = retry(func() error { - return fmt.Errorf("error") - }) - assertError("error", err) -} - -func TestEmptyRootList(t *testing.T) { - if skipGCS() != "" { - t.Skip(skipGCS()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - rootedDriver, err := gcsDriverConstructor(validRoot) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - emptyRootDriver, err := gcsDriverConstructor("") - if err != nil { - t.Fatalf("unexpected error creating empty root driver: %v", err) - } - - slashRootDriver, err := gcsDriverConstructor("/") - if err != nil { - t.Fatalf("unexpected error creating slash root driver: %v", err) - } - - filename := "/test" - contents := []byte("contents") - ctx := ctx.Background() - err = rootedDriver.PutContent(ctx, filename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer func() { - err := rootedDriver.Delete(ctx, filename) - if err != nil { - t.Fatalf("failed to remove %v due to %v\n", filename, err) - } - }() - keys, err := emptyRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } - - keys, err = slashRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } -} - -// TestMoveDirectory checks that moving a directory returns an error. -func TestMoveDirectory(t *testing.T) { - if skipGCS() != "" { - t.Skip(skipGCS()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - driver, err := gcsDriverConstructor(validRoot) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - ctx := ctx.Background() - contents := []byte("contents") - // Create a regular file. - err = driver.PutContent(ctx, "/parent/dir/foo", contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer func() { - err := driver.Delete(ctx, "/parent") - if err != nil { - t.Fatalf("failed to remove /parent due to %v\n", err) - } - }() - - err = driver.Move(ctx, "/parent/dir", "/parent/other") - if err == nil { - t.Fatalf("Moving directory /parent/dir /parent/other should have return a non-nil error\n") - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/driver.go b/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/driver.go deleted file mode 100644 index eb2fd1cf42..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/driver.go +++ /dev/null @@ -1,312 +0,0 @@ -package inmemory - -import ( - "fmt" - "io" - "io/ioutil" - "sync" - "time" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" -) - -const driverName = "inmemory" - -func init() { - factory.Register(driverName, &inMemoryDriverFactory{}) -} - -// inMemoryDriverFacotry implements the factory.StorageDriverFactory interface. -type inMemoryDriverFactory struct{} - -func (factory *inMemoryDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return New(), nil -} - -type driver struct { - root *dir - mutex sync.RWMutex -} - -// baseEmbed allows us to hide the Base embed. -type baseEmbed struct { - base.Base -} - -// Driver is a storagedriver.StorageDriver implementation backed by a local map. -// Intended solely for example and testing purposes. -type Driver struct { - baseEmbed // embedded, hidden base driver. -} - -var _ storagedriver.StorageDriver = &Driver{} - -// New constructs a new Driver. -func New() *Driver { - return &Driver{ - baseEmbed: baseEmbed{ - Base: base.Base{ - StorageDriver: &driver{ - root: &dir{ - common: common{ - p: "/", - mod: time.Now(), - }, - }, - }, - }, - }, - } -} - -// Implement the storagedriver.StorageDriver interface. - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - d.mutex.RLock() - defer d.mutex.RUnlock() - - rc, err := d.Reader(ctx, path, 0) - if err != nil { - return nil, err - } - defer rc.Close() - - return ioutil.ReadAll(rc) -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, p string, contents []byte) error { - d.mutex.Lock() - defer d.mutex.Unlock() - - normalized := normalize(p) - - f, err := d.root.mkfile(normalized) - if err != nil { - // TODO(stevvooe): Again, we need to clarify when this is not a - // directory in StorageDriver API. - return fmt.Errorf("not a file") - } - - f.truncate() - f.WriteAt(contents, 0) - - return nil -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - d.mutex.RLock() - defer d.mutex.RUnlock() - - if offset < 0 { - return nil, storagedriver.InvalidOffsetError{Path: path, Offset: offset} - } - - normalized := normalize(path) - found := d.root.find(normalized) - - if found.path() != normalized { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - if found.isdir() { - return nil, fmt.Errorf("%q is a directory", path) - } - - return ioutil.NopCloser(found.(*file).sectionReader(offset)), nil -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - d.mutex.Lock() - defer d.mutex.Unlock() - - normalized := normalize(path) - - f, err := d.root.mkfile(normalized) - if err != nil { - return nil, fmt.Errorf("not a file") - } - - if !append { - f.truncate() - } - - return d.newWriter(f), nil -} - -// Stat returns info about the provided path. -func (d *driver) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - d.mutex.RLock() - defer d.mutex.RUnlock() - - normalized := normalize(path) - found := d.root.find(normalized) - - if found.path() != normalized { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - fi := storagedriver.FileInfoFields{ - Path: path, - IsDir: found.isdir(), - ModTime: found.modtime(), - } - - if !fi.IsDir { - fi.Size = int64(len(found.(*file).data)) - } - - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil -} - -// List returns a list of the objects that are direct descendants of the given -// path. -func (d *driver) List(ctx context.Context, path string) ([]string, error) { - d.mutex.RLock() - defer d.mutex.RUnlock() - - normalized := normalize(path) - - found := d.root.find(normalized) - - if !found.isdir() { - return nil, fmt.Errorf("not a directory") // TODO(stevvooe): Need error type for this... - } - - entries, err := found.(*dir).list(normalized) - - if err != nil { - switch err { - case errNotExists: - return nil, storagedriver.PathNotFoundError{Path: path} - case errIsNotDir: - return nil, fmt.Errorf("not a directory") - default: - return nil, err - } - } - - return entries, nil -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - d.mutex.Lock() - defer d.mutex.Unlock() - - normalizedSrc, normalizedDst := normalize(sourcePath), normalize(destPath) - - err := d.root.move(normalizedSrc, normalizedDst) - switch err { - case errNotExists: - return storagedriver.PathNotFoundError{Path: destPath} - default: - return err - } -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, path string) error { - d.mutex.Lock() - defer d.mutex.Unlock() - - normalized := normalize(path) - - err := d.root.delete(normalized) - switch err { - case errNotExists: - return storagedriver.PathNotFoundError{Path: path} - default: - return err - } -} - -// URLFor returns a URL which may be used to retrieve the content stored at the given path. -// May return an UnsupportedMethodErr in certain StorageDriver implementations. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - return "", storagedriver.ErrUnsupportedMethod{} -} - -type writer struct { - d *driver - f *file - closed bool - committed bool - cancelled bool -} - -func (d *driver) newWriter(f *file) storagedriver.FileWriter { - return &writer{ - d: d, - f: f, - } -} - -func (w *writer) Write(p []byte) (int, error) { - if w.closed { - return 0, fmt.Errorf("already closed") - } else if w.committed { - return 0, fmt.Errorf("already committed") - } else if w.cancelled { - return 0, fmt.Errorf("already cancelled") - } - - w.d.mutex.Lock() - defer w.d.mutex.Unlock() - - return w.f.WriteAt(p, int64(len(w.f.data))) -} - -func (w *writer) Size() int64 { - w.d.mutex.RLock() - defer w.d.mutex.RUnlock() - - return int64(len(w.f.data)) -} - -func (w *writer) Close() error { - if w.closed { - return fmt.Errorf("already closed") - } - w.closed = true - return nil -} - -func (w *writer) Cancel() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } - w.cancelled = true - - w.d.mutex.Lock() - defer w.d.mutex.Unlock() - - return w.d.root.delete(w.f.path()) -} - -func (w *writer) Commit() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } else if w.cancelled { - return fmt.Errorf("already cancelled") - } - w.committed = true - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/driver_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/driver_test.go deleted file mode 100644 index dbc1916f95..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/driver_test.go +++ /dev/null @@ -1,19 +0,0 @@ -package inmemory - -import ( - "testing" - - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -func init() { - inmemoryDriverConstructor := func() (storagedriver.StorageDriver, error) { - return New(), nil - } - testsuites.RegisterSuite(inmemoryDriverConstructor, testsuites.NeverSkip) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/mfs.go b/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/mfs.go deleted file mode 100644 index cdefacfd8c..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/inmemory/mfs.go +++ /dev/null @@ -1,338 +0,0 @@ -package inmemory - -import ( - "fmt" - "io" - "path" - "sort" - "strings" - "time" -) - -var ( - errExists = fmt.Errorf("exists") - errNotExists = fmt.Errorf("notexists") - errIsNotDir = fmt.Errorf("notdir") - errIsDir = fmt.Errorf("isdir") -) - -type node interface { - name() string - path() string - isdir() bool - modtime() time.Time -} - -// dir is the central type for the memory-based storagedriver. All operations -// are dispatched from a root dir. -type dir struct { - common - - // TODO(stevvooe): Use sorted slice + search. - children map[string]node -} - -var _ node = &dir{} - -func (d *dir) isdir() bool { - return true -} - -// add places the node n into dir d. -func (d *dir) add(n node) { - if d.children == nil { - d.children = make(map[string]node) - } - - d.children[n.name()] = n - d.mod = time.Now() -} - -// find searches for the node, given path q in dir. If the node is found, it -// will be returned. If the node is not found, the closet existing parent. If -// the node is found, the returned (node).path() will match q. -func (d *dir) find(q string) node { - q = strings.Trim(q, "/") - i := strings.Index(q, "/") - - if q == "" { - return d - } - - if i == 0 { - panic("shouldn't happen, no root paths") - } - - var component string - if i < 0 { - // No more path components - component = q - } else { - component = q[:i] - } - - child, ok := d.children[component] - if !ok { - // Node was not found. Return p and the current node. - return d - } - - if child.isdir() { - // traverse down! - q = q[i+1:] - return child.(*dir).find(q) - } - - return child -} - -func (d *dir) list(p string) ([]string, error) { - n := d.find(p) - - if n.path() != p { - return nil, errNotExists - } - - if !n.isdir() { - return nil, errIsNotDir - } - - var children []string - for _, child := range n.(*dir).children { - children = append(children, child.path()) - } - - sort.Strings(children) - return children, nil -} - -// mkfile or return the existing one. returns an error if it exists and is a -// directory. Essentially, this is open or create. -func (d *dir) mkfile(p string) (*file, error) { - n := d.find(p) - if n.path() == p { - if n.isdir() { - return nil, errIsDir - } - - return n.(*file), nil - } - - dirpath, filename := path.Split(p) - // Make any non-existent directories - n, err := d.mkdirs(dirpath) - if err != nil { - return nil, err - } - - dd := n.(*dir) - n = &file{ - common: common{ - p: path.Join(dd.path(), filename), - mod: time.Now(), - }, - } - - dd.add(n) - return n.(*file), nil -} - -// mkdirs creates any missing directory entries in p and returns the result. -func (d *dir) mkdirs(p string) (*dir, error) { - p = normalize(p) - - n := d.find(p) - - if !n.isdir() { - // Found something there - return nil, errIsNotDir - } - - if n.path() == p { - return n.(*dir), nil - } - - dd := n.(*dir) - - relative := strings.Trim(strings.TrimPrefix(p, n.path()), "/") - - if relative == "" { - return dd, nil - } - - components := strings.Split(relative, "/") - for _, component := range components { - d, err := dd.mkdir(component) - - if err != nil { - // This should actually never happen, since there are no children. - return nil, err - } - dd = d - } - - return dd, nil -} - -// mkdir creates a child directory under d with the given name. -func (d *dir) mkdir(name string) (*dir, error) { - if name == "" { - return nil, fmt.Errorf("invalid dirname") - } - - _, ok := d.children[name] - if ok { - return nil, errExists - } - - child := &dir{ - common: common{ - p: path.Join(d.path(), name), - mod: time.Now(), - }, - } - d.add(child) - d.mod = time.Now() - - return child, nil -} - -func (d *dir) move(src, dst string) error { - dstDirname, _ := path.Split(dst) - - dp, err := d.mkdirs(dstDirname) - if err != nil { - return err - } - - srcDirname, srcFilename := path.Split(src) - sp := d.find(srcDirname) - - if normalize(srcDirname) != normalize(sp.path()) { - return errNotExists - } - - spd, ok := sp.(*dir) - if !ok { - return errIsNotDir // paranoid. - } - - s, ok := spd.children[srcFilename] - if !ok { - return errNotExists - } - - delete(spd.children, srcFilename) - - switch n := s.(type) { - case *dir: - n.p = dst - case *file: - n.p = dst - } - - dp.add(s) - - return nil -} - -func (d *dir) delete(p string) error { - dirname, filename := path.Split(p) - parent := d.find(dirname) - - if normalize(dirname) != normalize(parent.path()) { - return errNotExists - } - - if _, ok := parent.(*dir).children[filename]; !ok { - return errNotExists - } - - delete(parent.(*dir).children, filename) - return nil -} - -// dump outputs a primitive directory structure to stdout. -func (d *dir) dump(indent string) { - fmt.Println(indent, d.name()+"/") - - for _, child := range d.children { - if child.isdir() { - child.(*dir).dump(indent + "\t") - } else { - fmt.Println(indent, child.name()) - } - - } -} - -func (d *dir) String() string { - return fmt.Sprintf("&dir{path: %v, children: %v}", d.p, d.children) -} - -// file stores actual data in the fs tree. It acts like an open, seekable file -// where operations are conducted through ReadAt and WriteAt. Use it with -// SectionReader for the best effect. -type file struct { - common - data []byte -} - -var _ node = &file{} - -func (f *file) isdir() bool { - return false -} - -func (f *file) truncate() { - f.data = f.data[:0] -} - -func (f *file) sectionReader(offset int64) io.Reader { - return io.NewSectionReader(f, offset, int64(len(f.data))-offset) -} - -func (f *file) ReadAt(p []byte, offset int64) (n int, err error) { - return copy(p, f.data[offset:]), nil -} - -func (f *file) WriteAt(p []byte, offset int64) (n int, err error) { - off := int(offset) - if cap(f.data) < off+len(p) { - data := make([]byte, len(f.data), off+len(p)) - copy(data, f.data) - f.data = data - } - - f.mod = time.Now() - f.data = f.data[:off+len(p)] - - return copy(f.data[off:off+len(p)], p), nil -} - -func (f *file) String() string { - return fmt.Sprintf("&file{path: %q}", f.p) -} - -// common provides shared fields and methods for node implementations. -type common struct { - p string - mod time.Time -} - -func (c *common) name() string { - _, name := path.Split(c.p) - return name -} - -func (c *common) path() string { - return c.p -} - -func (c *common) modtime() time.Time { - return c.mod -} - -func normalize(p string) string { - return "/" + strings.Trim(p, "/") -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/middleware/cloudfront/middleware.go b/vendor/github.com/docker/distribution/registry/storage/driver/middleware/cloudfront/middleware.go deleted file mode 100644 index 9162c09de6..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/middleware/cloudfront/middleware.go +++ /dev/null @@ -1,136 +0,0 @@ -// Package middleware - cloudfront wrapper for storage libs -// N.B. currently only works with S3, not arbitrary sites -// -package middleware - -import ( - "crypto/x509" - "encoding/pem" - "fmt" - "io/ioutil" - "net/url" - "strings" - "time" - - "github.com/aws/aws-sdk-go/service/cloudfront/sign" - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - storagemiddleware "github.com/docker/distribution/registry/storage/driver/middleware" -) - -// cloudFrontStorageMiddleware provides an simple implementation of layerHandler that -// constructs temporary signed CloudFront URLs from the storagedriver layer URL, -// then issues HTTP Temporary Redirects to this CloudFront content URL. -type cloudFrontStorageMiddleware struct { - storagedriver.StorageDriver - urlSigner *sign.URLSigner - baseURL string - duration time.Duration -} - -var _ storagedriver.StorageDriver = &cloudFrontStorageMiddleware{} - -// newCloudFrontLayerHandler constructs and returns a new CloudFront -// LayerHandler implementation. -// Required options: baseurl, privatekey, keypairid -func newCloudFrontStorageMiddleware(storageDriver storagedriver.StorageDriver, options map[string]interface{}) (storagedriver.StorageDriver, error) { - base, ok := options["baseurl"] - if !ok { - return nil, fmt.Errorf("no baseurl provided") - } - baseURL, ok := base.(string) - if !ok { - return nil, fmt.Errorf("baseurl must be a string") - } - if !strings.Contains(baseURL, "://") { - baseURL = "https://" + baseURL - } - if !strings.HasSuffix(baseURL, "/") { - baseURL += "/" - } - if _, err := url.Parse(baseURL); err != nil { - return nil, fmt.Errorf("invalid baseurl: %v", err) - } - pk, ok := options["privatekey"] - if !ok { - return nil, fmt.Errorf("no privatekey provided") - } - pkPath, ok := pk.(string) - if !ok { - return nil, fmt.Errorf("privatekey must be a string") - } - kpid, ok := options["keypairid"] - if !ok { - return nil, fmt.Errorf("no keypairid provided") - } - keypairID, ok := kpid.(string) - if !ok { - return nil, fmt.Errorf("keypairid must be a string") - } - - pkBytes, err := ioutil.ReadFile(pkPath) - if err != nil { - return nil, fmt.Errorf("failed to read privatekey file: %s", err) - } - - block, _ := pem.Decode([]byte(pkBytes)) - if block == nil { - return nil, fmt.Errorf("failed to decode private key as an rsa private key") - } - privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes) - if err != nil { - return nil, err - } - - urlSigner := sign.NewURLSigner(keypairID, privateKey) - - duration := 20 * time.Minute - d, ok := options["duration"] - if ok { - switch d := d.(type) { - case time.Duration: - duration = d - case string: - dur, err := time.ParseDuration(d) - if err != nil { - return nil, fmt.Errorf("invalid duration: %s", err) - } - duration = dur - } - } - - return &cloudFrontStorageMiddleware{ - StorageDriver: storageDriver, - urlSigner: urlSigner, - baseURL: baseURL, - duration: duration, - }, nil -} - -// S3BucketKeyer is any type that is capable of returning the S3 bucket key -// which should be cached by AWS CloudFront. -type S3BucketKeyer interface { - S3BucketKey(path string) string -} - -// Resolve returns an http.Handler which can serve the contents of the given -// Layer, or an error if not supported by the storagedriver. -func (lh *cloudFrontStorageMiddleware) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - // TODO(endophage): currently only supports S3 - keyer, ok := lh.StorageDriver.(S3BucketKeyer) - if !ok { - context.GetLogger(ctx).Warn("the CloudFront middleware does not support this backend storage driver") - return lh.StorageDriver.URLFor(ctx, path, options) - } - - cfURL, err := lh.urlSigner.Sign(lh.baseURL+keyer.S3BucketKey(path), time.Now().Add(lh.duration)) - if err != nil { - return "", err - } - return cfURL, nil -} - -// init registers the cloudfront layerHandler backend. -func init() { - storagemiddleware.Register("cloudfront", storagemiddleware.InitFunc(newCloudFrontStorageMiddleware)) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/middleware/storagemiddleware.go b/vendor/github.com/docker/distribution/registry/storage/driver/middleware/storagemiddleware.go deleted file mode 100644 index 7e40a8dd9d..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/middleware/storagemiddleware.go +++ /dev/null @@ -1,39 +0,0 @@ -package storagemiddleware - -import ( - "fmt" - - storagedriver "github.com/docker/distribution/registry/storage/driver" -) - -// InitFunc is the type of a StorageMiddleware factory function and is -// used to register the constructor for different StorageMiddleware backends. -type InitFunc func(storageDriver storagedriver.StorageDriver, options map[string]interface{}) (storagedriver.StorageDriver, error) - -var storageMiddlewares map[string]InitFunc - -// Register is used to register an InitFunc for -// a StorageMiddleware backend with the given name. -func Register(name string, initFunc InitFunc) error { - if storageMiddlewares == nil { - storageMiddlewares = make(map[string]InitFunc) - } - if _, exists := storageMiddlewares[name]; exists { - return fmt.Errorf("name already registered: %s", name) - } - - storageMiddlewares[name] = initFunc - - return nil -} - -// Get constructs a StorageMiddleware with the given options using the named backend. -func Get(name string, options map[string]interface{}, storageDriver storagedriver.StorageDriver) (storagedriver.StorageDriver, error) { - if storageMiddlewares != nil { - if initFunc, exists := storageMiddlewares[name]; exists { - return initFunc(storageDriver, options) - } - } - - return nil, fmt.Errorf("no storage middleware registered with name: %s", name) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/oss/doc.go b/vendor/github.com/docker/distribution/registry/storage/driver/oss/doc.go deleted file mode 100644 index d1bc932f82..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/oss/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package oss implements the Aliyun OSS Storage driver backend. Support can be -// enabled by including the "include_oss" build tag. -package oss diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/oss/oss.go b/vendor/github.com/docker/distribution/registry/storage/driver/oss/oss.go deleted file mode 100644 index 7ae7033460..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/oss/oss.go +++ /dev/null @@ -1,670 +0,0 @@ -// Package oss provides a storagedriver.StorageDriver implementation to -// store blobs in Aliyun OSS cloud storage. -// -// This package leverages the denverdino/aliyungo client library for interfacing with -// oss. -// -// Because OSS is a key, value store the Stat call does not support last modification -// time for directories (directories are an abstraction for key, value stores) -// -// +build include_oss - -package oss - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "reflect" - "strconv" - "strings" - "time" - - "github.com/docker/distribution/context" - - "github.com/Sirupsen/logrus" - "github.com/denverdino/aliyungo/oss" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" -) - -const driverName = "oss" - -// minChunkSize defines the minimum multipart upload chunk size -// OSS API requires multipart upload chunks to be at least 5MB -const minChunkSize = 5 << 20 - -const defaultChunkSize = 2 * minChunkSize -const defaultTimeout = 2 * time.Minute // 2 minute timeout per chunk - -// listMax is the largest amount of objects you can request from OSS in a list call -const listMax = 1000 - -//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set -type DriverParameters struct { - AccessKeyID string - AccessKeySecret string - Bucket string - Region oss.Region - Internal bool - Encrypt bool - Secure bool - ChunkSize int64 - RootDirectory string - Endpoint string -} - -func init() { - factory.Register(driverName, &ossDriverFactory{}) -} - -// ossDriverFactory implements the factory.StorageDriverFactory interface -type ossDriverFactory struct{} - -func (factory *ossDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters) -} - -type driver struct { - Client *oss.Client - Bucket *oss.Bucket - ChunkSize int64 - Encrypt bool - RootDirectory string -} - -type baseEmbed struct { - base.Base -} - -// Driver is a storagedriver.StorageDriver implementation backed by Aliyun OSS -// Objects are stored at absolute keys in the provided bucket. -type Driver struct { - baseEmbed -} - -// FromParameters constructs a new Driver with a given parameters map -// Required parameters: -// - accesskey -// - secretkey -// - region -// - bucket -// - encrypt -func FromParameters(parameters map[string]interface{}) (*Driver, error) { - // Providing no values for these is valid in case the user is authenticating - - accessKey, ok := parameters["accesskeyid"] - if !ok { - return nil, fmt.Errorf("No accesskeyid parameter provided") - } - secretKey, ok := parameters["accesskeysecret"] - if !ok { - return nil, fmt.Errorf("No accesskeysecret parameter provided") - } - - regionName, ok := parameters["region"] - if !ok || fmt.Sprint(regionName) == "" { - return nil, fmt.Errorf("No region parameter provided") - } - - bucket, ok := parameters["bucket"] - if !ok || fmt.Sprint(bucket) == "" { - return nil, fmt.Errorf("No bucket parameter provided") - } - - internalBool := false - internal, ok := parameters["internal"] - if ok { - internalBool, ok = internal.(bool) - if !ok { - return nil, fmt.Errorf("The internal parameter should be a boolean") - } - } - - encryptBool := false - encrypt, ok := parameters["encrypt"] - if ok { - encryptBool, ok = encrypt.(bool) - if !ok { - return nil, fmt.Errorf("The encrypt parameter should be a boolean") - } - } - - secureBool := true - secure, ok := parameters["secure"] - if ok { - secureBool, ok = secure.(bool) - if !ok { - return nil, fmt.Errorf("The secure parameter should be a boolean") - } - } - - chunkSize := int64(defaultChunkSize) - chunkSizeParam, ok := parameters["chunksize"] - if ok { - switch v := chunkSizeParam.(type) { - case string: - vv, err := strconv.ParseInt(v, 0, 64) - if err != nil { - return nil, fmt.Errorf("chunksize parameter must be an integer, %v invalid", chunkSizeParam) - } - chunkSize = vv - case int64: - chunkSize = v - case int, uint, int32, uint32, uint64: - chunkSize = reflect.ValueOf(v).Convert(reflect.TypeOf(chunkSize)).Int() - default: - return nil, fmt.Errorf("invalid valud for chunksize: %#v", chunkSizeParam) - } - - if chunkSize < minChunkSize { - return nil, fmt.Errorf("The chunksize %#v parameter should be a number that is larger than or equal to %d", chunkSize, minChunkSize) - } - } - - rootDirectory, ok := parameters["rootdirectory"] - if !ok { - rootDirectory = "" - } - - endpoint, ok := parameters["endpoint"] - if !ok { - endpoint = "" - } - - params := DriverParameters{ - AccessKeyID: fmt.Sprint(accessKey), - AccessKeySecret: fmt.Sprint(secretKey), - Bucket: fmt.Sprint(bucket), - Region: oss.Region(fmt.Sprint(regionName)), - ChunkSize: chunkSize, - RootDirectory: fmt.Sprint(rootDirectory), - Encrypt: encryptBool, - Secure: secureBool, - Internal: internalBool, - Endpoint: fmt.Sprint(endpoint), - } - - return New(params) -} - -// New constructs a new Driver with the given Aliyun credentials, region, encryption flag, and -// bucketName -func New(params DriverParameters) (*Driver, error) { - - client := oss.NewOSSClient(params.Region, params.Internal, params.AccessKeyID, params.AccessKeySecret, params.Secure) - client.SetEndpoint(params.Endpoint) - bucket := client.Bucket(params.Bucket) - client.SetDebug(false) - - // Validate that the given credentials have at least read permissions in the - // given bucket scope. - if _, err := bucket.List(strings.TrimRight(params.RootDirectory, "/"), "", "", 1); err != nil { - return nil, err - } - - // TODO(tg123): Currently multipart uploads have no timestamps, so this would be unwise - // if you initiated a new OSS client while another one is running on the same bucket. - - d := &driver{ - Client: client, - Bucket: bucket, - ChunkSize: params.ChunkSize, - Encrypt: params.Encrypt, - RootDirectory: params.RootDirectory, - } - - return &Driver{ - baseEmbed: baseEmbed{ - Base: base.Base{ - StorageDriver: d, - }, - }, - }, nil -} - -// Implement the storagedriver.StorageDriver interface - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - content, err := d.Bucket.Get(d.ossPath(path)) - if err != nil { - return nil, parseError(path, err) - } - return content, nil -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, path string, contents []byte) error { - return parseError(path, d.Bucket.Put(d.ossPath(path), contents, d.getContentType(), getPermissions(), d.getOptions())) -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - headers := make(http.Header) - headers.Add("Range", "bytes="+strconv.FormatInt(offset, 10)+"-") - - resp, err := d.Bucket.GetResponseWithHeaders(d.ossPath(path), headers) - if err != nil { - return nil, parseError(path, err) - } - - // Due to Aliyun OSS API, status 200 and whole object will be return instead of an - // InvalidRange error when range is invalid. - // - // OSS sever will always return http.StatusPartialContent if range is acceptable. - if resp.StatusCode != http.StatusPartialContent { - resp.Body.Close() - return ioutil.NopCloser(bytes.NewReader(nil)), nil - } - - return resp.Body, nil -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - key := d.ossPath(path) - if !append { - // TODO (brianbland): cancel other uploads at this path - multi, err := d.Bucket.InitMulti(key, d.getContentType(), getPermissions(), d.getOptions()) - if err != nil { - return nil, err - } - return d.newWriter(key, multi, nil), nil - } - multis, _, err := d.Bucket.ListMulti(key, "") - if err != nil { - return nil, parseError(path, err) - } - for _, multi := range multis { - if key != multi.Key { - continue - } - parts, err := multi.ListParts() - if err != nil { - return nil, parseError(path, err) - } - var multiSize int64 - for _, part := range parts { - multiSize += part.Size - } - return d.newWriter(key, multi, parts), nil - } - return nil, storagedriver.PathNotFoundError{Path: path} -} - -// Stat retrieves the FileInfo for the given path, including the current size -// in bytes and the creation time. -func (d *driver) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - listResponse, err := d.Bucket.List(d.ossPath(path), "", "", 1) - if err != nil { - return nil, err - } - - fi := storagedriver.FileInfoFields{ - Path: path, - } - - if len(listResponse.Contents) == 1 { - if listResponse.Contents[0].Key != d.ossPath(path) { - fi.IsDir = true - } else { - fi.IsDir = false - fi.Size = listResponse.Contents[0].Size - - timestamp, err := time.Parse(time.RFC3339Nano, listResponse.Contents[0].LastModified) - if err != nil { - return nil, err - } - fi.ModTime = timestamp - } - } else if len(listResponse.CommonPrefixes) == 1 { - fi.IsDir = true - } else { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil -} - -// List returns a list of the objects that are direct descendants of the given path. -func (d *driver) List(ctx context.Context, opath string) ([]string, error) { - path := opath - if path != "/" && opath[len(path)-1] != '/' { - path = path + "/" - } - - // This is to cover for the cases when the rootDirectory of the driver is either "" or "/". - // In those cases, there is no root prefix to replace and we must actually add a "/" to all - // results in order to keep them as valid paths as recognized by storagedriver.PathRegexp - prefix := "" - if d.ossPath("") == "" { - prefix = "/" - } - - listResponse, err := d.Bucket.List(d.ossPath(path), "/", "", listMax) - if err != nil { - return nil, parseError(opath, err) - } - - files := []string{} - directories := []string{} - - for { - for _, key := range listResponse.Contents { - files = append(files, strings.Replace(key.Key, d.ossPath(""), prefix, 1)) - } - - for _, commonPrefix := range listResponse.CommonPrefixes { - directories = append(directories, strings.Replace(commonPrefix[0:len(commonPrefix)-1], d.ossPath(""), prefix, 1)) - } - - if listResponse.IsTruncated { - listResponse, err = d.Bucket.List(d.ossPath(path), "/", listResponse.NextMarker, listMax) - if err != nil { - return nil, err - } - } else { - break - } - } - - if opath != "/" { - if len(files) == 0 && len(directories) == 0 { - // Treat empty response as missing directory, since we don't actually - // have directories in s3. - return nil, storagedriver.PathNotFoundError{Path: opath} - } - } - - return append(files, directories...), nil -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - logrus.Infof("Move from %s to %s", d.ossPath(sourcePath), d.ossPath(destPath)) - - err := d.Bucket.CopyLargeFile(d.ossPath(sourcePath), d.ossPath(destPath), - d.getContentType(), - getPermissions(), - oss.Options{}) - if err != nil { - logrus.Errorf("Failed for move from %s to %s: %v", d.ossPath(sourcePath), d.ossPath(destPath), err) - return parseError(sourcePath, err) - } - - return d.Delete(ctx, sourcePath) -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, path string) error { - listResponse, err := d.Bucket.List(d.ossPath(path), "", "", listMax) - if err != nil || len(listResponse.Contents) == 0 { - return storagedriver.PathNotFoundError{Path: path} - } - - ossObjects := make([]oss.Object, listMax) - - for len(listResponse.Contents) > 0 { - for index, key := range listResponse.Contents { - ossObjects[index].Key = key.Key - } - - err := d.Bucket.DelMulti(oss.Delete{Quiet: false, Objects: ossObjects[0:len(listResponse.Contents)]}) - if err != nil { - return nil - } - - listResponse, err = d.Bucket.List(d.ossPath(path), "", "", listMax) - if err != nil { - return err - } - } - - return nil -} - -// URLFor returns a URL which may be used to retrieve the content stored at the given path. -// May return an UnsupportedMethodErr in certain StorageDriver implementations. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - methodString := "GET" - method, ok := options["method"] - if ok { - methodString, ok = method.(string) - if !ok || (methodString != "GET") { - return "", storagedriver.ErrUnsupportedMethod{} - } - } - - expiresTime := time.Now().Add(20 * time.Minute) - - expires, ok := options["expiry"] - if ok { - et, ok := expires.(time.Time) - if ok { - expiresTime = et - } - } - logrus.Infof("methodString: %s, expiresTime: %v", methodString, expiresTime) - signedURL := d.Bucket.SignedURLWithMethod(methodString, d.ossPath(path), expiresTime, nil, nil) - logrus.Infof("signed URL: %s", signedURL) - return signedURL, nil -} - -func (d *driver) ossPath(path string) string { - return strings.TrimLeft(strings.TrimRight(d.RootDirectory, "/")+path, "/") -} - -func parseError(path string, err error) error { - if ossErr, ok := err.(*oss.Error); ok && ossErr.StatusCode == http.StatusNotFound && (ossErr.Code == "NoSuchKey" || ossErr.Code == "") { - return storagedriver.PathNotFoundError{Path: path} - } - - return err -} - -func hasCode(err error, code string) bool { - ossErr, ok := err.(*oss.Error) - return ok && ossErr.Code == code -} - -func (d *driver) getOptions() oss.Options { - return oss.Options{ServerSideEncryption: d.Encrypt} -} - -func getPermissions() oss.ACL { - return oss.Private -} - -func (d *driver) getContentType() string { - return "application/octet-stream" -} - -// writer attempts to upload parts to S3 in a buffered fashion where the last -// part is at least as large as the chunksize, so the multipart upload could be -// cleanly resumed in the future. This is violated if Close is called after less -// than a full chunk is written. -type writer struct { - driver *driver - key string - multi *oss.Multi - parts []oss.Part - size int64 - readyPart []byte - pendingPart []byte - closed bool - committed bool - cancelled bool -} - -func (d *driver) newWriter(key string, multi *oss.Multi, parts []oss.Part) storagedriver.FileWriter { - var size int64 - for _, part := range parts { - size += part.Size - } - return &writer{ - driver: d, - key: key, - multi: multi, - parts: parts, - size: size, - } -} - -func (w *writer) Write(p []byte) (int, error) { - if w.closed { - return 0, fmt.Errorf("already closed") - } else if w.committed { - return 0, fmt.Errorf("already committed") - } else if w.cancelled { - return 0, fmt.Errorf("already cancelled") - } - - // If the last written part is smaller than minChunkSize, we need to make a - // new multipart upload :sadface: - if len(w.parts) > 0 && int(w.parts[len(w.parts)-1].Size) < minChunkSize { - err := w.multi.Complete(w.parts) - if err != nil { - w.multi.Abort() - return 0, err - } - - multi, err := w.driver.Bucket.InitMulti(w.key, w.driver.getContentType(), getPermissions(), w.driver.getOptions()) - if err != nil { - return 0, err - } - w.multi = multi - - // If the entire written file is smaller than minChunkSize, we need to make - // a new part from scratch :double sad face: - if w.size < minChunkSize { - contents, err := w.driver.Bucket.Get(w.key) - if err != nil { - return 0, err - } - w.parts = nil - w.readyPart = contents - } else { - // Otherwise we can use the old file as the new first part - _, part, err := multi.PutPartCopy(1, oss.CopyOptions{}, w.driver.Bucket.Name+"/"+w.key) - if err != nil { - return 0, err - } - w.parts = []oss.Part{part} - } - } - - var n int - - for len(p) > 0 { - // If no parts are ready to write, fill up the first part - if neededBytes := int(w.driver.ChunkSize) - len(w.readyPart); neededBytes > 0 { - if len(p) >= neededBytes { - w.readyPart = append(w.readyPart, p[:neededBytes]...) - n += neededBytes - p = p[neededBytes:] - } else { - w.readyPart = append(w.readyPart, p...) - n += len(p) - p = nil - } - } - - if neededBytes := int(w.driver.ChunkSize) - len(w.pendingPart); neededBytes > 0 { - if len(p) >= neededBytes { - w.pendingPart = append(w.pendingPart, p[:neededBytes]...) - n += neededBytes - p = p[neededBytes:] - err := w.flushPart() - if err != nil { - w.size += int64(n) - return n, err - } - } else { - w.pendingPart = append(w.pendingPart, p...) - n += len(p) - p = nil - } - } - } - w.size += int64(n) - return n, nil -} - -func (w *writer) Size() int64 { - return w.size -} - -func (w *writer) Close() error { - if w.closed { - return fmt.Errorf("already closed") - } - w.closed = true - return w.flushPart() -} - -func (w *writer) Cancel() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } - w.cancelled = true - err := w.multi.Abort() - return err -} - -func (w *writer) Commit() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } else if w.cancelled { - return fmt.Errorf("already cancelled") - } - err := w.flushPart() - if err != nil { - return err - } - w.committed = true - err = w.multi.Complete(w.parts) - if err != nil { - w.multi.Abort() - return err - } - return nil -} - -// flushPart flushes buffers to write a part to S3. -// Only called by Write (with both buffers full) and Close/Commit (always) -func (w *writer) flushPart() error { - if len(w.readyPart) == 0 && len(w.pendingPart) == 0 { - // nothing to write - return nil - } - if len(w.pendingPart) < int(w.driver.ChunkSize) { - // closing with a small pending part - // combine ready and pending to avoid writing a small part - w.readyPart = append(w.readyPart, w.pendingPart...) - w.pendingPart = nil - } - - part, err := w.multi.PutPart(len(w.parts)+1, bytes.NewReader(w.readyPart)) - if err != nil { - return err - } - w.parts = append(w.parts, part) - w.readyPart = w.pendingPart - w.pendingPart = nil - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/oss/oss_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/oss/oss_test.go deleted file mode 100644 index fbae5d9ca5..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/oss/oss_test.go +++ /dev/null @@ -1,144 +0,0 @@ -// +build include_oss - -package oss - -import ( - "io/ioutil" - - alioss "github.com/denverdino/aliyungo/oss" - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - //"log" - "os" - "strconv" - "testing" - - "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -var ossDriverConstructor func(rootDirectory string) (*Driver, error) - -var skipCheck func() string - -func init() { - accessKey := os.Getenv("ALIYUN_ACCESS_KEY_ID") - secretKey := os.Getenv("ALIYUN_ACCESS_KEY_SECRET") - bucket := os.Getenv("OSS_BUCKET") - region := os.Getenv("OSS_REGION") - internal := os.Getenv("OSS_INTERNAL") - encrypt := os.Getenv("OSS_ENCRYPT") - secure := os.Getenv("OSS_SECURE") - endpoint := os.Getenv("OSS_ENDPOINT") - root, err := ioutil.TempDir("", "driver-") - if err != nil { - panic(err) - } - defer os.Remove(root) - - ossDriverConstructor = func(rootDirectory string) (*Driver, error) { - encryptBool := false - if encrypt != "" { - encryptBool, err = strconv.ParseBool(encrypt) - if err != nil { - return nil, err - } - } - - secureBool := false - if secure != "" { - secureBool, err = strconv.ParseBool(secure) - if err != nil { - return nil, err - } - } - - internalBool := false - if internal != "" { - internalBool, err = strconv.ParseBool(internal) - if err != nil { - return nil, err - } - } - - parameters := DriverParameters{ - AccessKeyID: accessKey, - AccessKeySecret: secretKey, - Bucket: bucket, - Region: alioss.Region(region), - Internal: internalBool, - ChunkSize: minChunkSize, - RootDirectory: rootDirectory, - Encrypt: encryptBool, - Secure: secureBool, - Endpoint: endpoint, - } - - return New(parameters) - } - - // Skip OSS storage driver tests if environment variable parameters are not provided - skipCheck = func() string { - if accessKey == "" || secretKey == "" || region == "" || bucket == "" || encrypt == "" { - return "Must set ALIYUN_ACCESS_KEY_ID, ALIYUN_ACCESS_KEY_SECRET, OSS_REGION, OSS_BUCKET, and OSS_ENCRYPT to run OSS tests" - } - return "" - } - - testsuites.RegisterSuite(func() (storagedriver.StorageDriver, error) { - return ossDriverConstructor(root) - }, skipCheck) -} - -func TestEmptyRootList(t *testing.T) { - if skipCheck() != "" { - t.Skip(skipCheck()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - rootedDriver, err := ossDriverConstructor(validRoot) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - emptyRootDriver, err := ossDriverConstructor("") - if err != nil { - t.Fatalf("unexpected error creating empty root driver: %v", err) - } - - slashRootDriver, err := ossDriverConstructor("/") - if err != nil { - t.Fatalf("unexpected error creating slash root driver: %v", err) - } - - filename := "/test" - contents := []byte("contents") - ctx := context.Background() - err = rootedDriver.PutContent(ctx, filename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer rootedDriver.Delete(ctx, filename) - - keys, err := emptyRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } - - keys, err = slashRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/s3-aws/s3.go b/vendor/github.com/docker/distribution/registry/storage/driver/s3-aws/s3.go deleted file mode 100644 index f7facb6152..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/s3-aws/s3.go +++ /dev/null @@ -1,944 +0,0 @@ -// Package s3 provides a storagedriver.StorageDriver implementation to -// store blobs in Amazon S3 cloud storage. -// -// This package leverages the official aws client library for interfacing with -// S3. -// -// Because S3 is a key, value store the Stat call does not support last modification -// time for directories (directories are an abstraction for key, value stores) -// -// Keep in mind that S3 guarantees only read-after-write consistency for new -// objects, but no read-after-update or list-after-write consistency. -package s3 - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "reflect" - "strconv" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds" - "github.com/aws/aws-sdk-go/aws/ec2metadata" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/s3" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/client/transport" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" -) - -const driverName = "s3aws" - -// minChunkSize defines the minimum multipart upload chunk size -// S3 API requires multipart upload chunks to be at least 5MB -const minChunkSize = 5 << 20 - -const defaultChunkSize = 2 * minChunkSize - -// listMax is the largest amount of objects you can request from S3 in a list call -const listMax = 1000 - -// validRegions maps known s3 region identifiers to region descriptors -var validRegions = map[string]struct{}{} - -//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set -type DriverParameters struct { - AccessKey string - SecretKey string - Bucket string - Region string - RegionEndpoint string - Encrypt bool - KeyID string - Secure bool - ChunkSize int64 - RootDirectory string - StorageClass string - UserAgent string -} - -func init() { - for _, region := range []string{ - "us-east-1", - "us-west-1", - "us-west-2", - "eu-west-1", - "eu-central-1", - "ap-southeast-1", - "ap-southeast-2", - "ap-northeast-1", - "ap-northeast-2", - "sa-east-1", - } { - validRegions[region] = struct{}{} - } - - // Register this as the default s3 driver in addition to s3aws - factory.Register("s3", &s3DriverFactory{}) - factory.Register(driverName, &s3DriverFactory{}) -} - -// s3DriverFactory implements the factory.StorageDriverFactory interface -type s3DriverFactory struct{} - -func (factory *s3DriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters) -} - -type driver struct { - S3 *s3.S3 - Bucket string - ChunkSize int64 - Encrypt bool - KeyID string - RootDirectory string - StorageClass string -} - -type baseEmbed struct { - base.Base -} - -// Driver is a storagedriver.StorageDriver implementation backed by Amazon S3 -// Objects are stored at absolute keys in the provided bucket. -type Driver struct { - baseEmbed -} - -// FromParameters constructs a new Driver with a given parameters map -// Required parameters: -// - accesskey -// - secretkey -// - region -// - bucket -// - encrypt -func FromParameters(parameters map[string]interface{}) (*Driver, error) { - // Providing no values for these is valid in case the user is authenticating - // with an IAM on an ec2 instance (in which case the instance credentials will - // be summoned when GetAuth is called) - accessKey := parameters["accesskey"] - if accessKey == nil { - accessKey = "" - } - secretKey := parameters["secretkey"] - if secretKey == nil { - secretKey = "" - } - - regionEndpoint := parameters["regionendpoint"] - if regionEndpoint == nil { - regionEndpoint = "" - } - - regionName, ok := parameters["region"] - if regionName == nil || fmt.Sprint(regionName) == "" { - return nil, fmt.Errorf("No region parameter provided") - } - region := fmt.Sprint(regionName) - // Don't check the region value if a custom endpoint is provided. - if regionEndpoint == "" { - if _, ok = validRegions[region]; !ok { - return nil, fmt.Errorf("Invalid region provided: %v", region) - } - } - - bucket := parameters["bucket"] - if bucket == nil || fmt.Sprint(bucket) == "" { - return nil, fmt.Errorf("No bucket parameter provided") - } - - encryptBool := false - encrypt := parameters["encrypt"] - switch encrypt := encrypt.(type) { - case string: - b, err := strconv.ParseBool(encrypt) - if err != nil { - return nil, fmt.Errorf("The encrypt parameter should be a boolean") - } - encryptBool = b - case bool: - encryptBool = encrypt - case nil: - // do nothing - default: - return nil, fmt.Errorf("The encrypt parameter should be a boolean") - } - - secureBool := true - secure := parameters["secure"] - switch secure := secure.(type) { - case string: - b, err := strconv.ParseBool(secure) - if err != nil { - return nil, fmt.Errorf("The secure parameter should be a boolean") - } - secureBool = b - case bool: - secureBool = secure - case nil: - // do nothing - default: - return nil, fmt.Errorf("The secure parameter should be a boolean") - } - - keyID := parameters["keyid"] - if keyID == nil { - keyID = "" - } - - chunkSize := int64(defaultChunkSize) - chunkSizeParam := parameters["chunksize"] - switch v := chunkSizeParam.(type) { - case string: - vv, err := strconv.ParseInt(v, 0, 64) - if err != nil { - return nil, fmt.Errorf("chunksize parameter must be an integer, %v invalid", chunkSizeParam) - } - chunkSize = vv - case int64: - chunkSize = v - case int, uint, int32, uint32, uint64: - chunkSize = reflect.ValueOf(v).Convert(reflect.TypeOf(chunkSize)).Int() - case nil: - // do nothing - default: - return nil, fmt.Errorf("invalid value for chunksize: %#v", chunkSizeParam) - } - - if chunkSize < minChunkSize { - return nil, fmt.Errorf("The chunksize %#v parameter should be a number that is larger than or equal to %d", chunkSize, minChunkSize) - } - - rootDirectory := parameters["rootdirectory"] - if rootDirectory == nil { - rootDirectory = "" - } - - storageClass := s3.StorageClassStandard - storageClassParam := parameters["storageclass"] - if storageClassParam != nil { - storageClassString, ok := storageClassParam.(string) - if !ok { - return nil, fmt.Errorf("The storageclass parameter must be one of %v, %v invalid", []string{s3.StorageClassStandard, s3.StorageClassReducedRedundancy}, storageClassParam) - } - // All valid storage class parameters are UPPERCASE, so be a bit more flexible here - storageClassString = strings.ToUpper(storageClassString) - if storageClassString != s3.StorageClassStandard && storageClassString != s3.StorageClassReducedRedundancy { - return nil, fmt.Errorf("The storageclass parameter must be one of %v, %v invalid", []string{s3.StorageClassStandard, s3.StorageClassReducedRedundancy}, storageClassParam) - } - storageClass = storageClassString - } - - userAgent := parameters["useragent"] - if userAgent == nil { - userAgent = "" - } - - params := DriverParameters{ - fmt.Sprint(accessKey), - fmt.Sprint(secretKey), - fmt.Sprint(bucket), - region, - fmt.Sprint(regionEndpoint), - encryptBool, - fmt.Sprint(keyID), - secureBool, - chunkSize, - fmt.Sprint(rootDirectory), - storageClass, - fmt.Sprint(userAgent), - } - - return New(params) -} - -// New constructs a new Driver with the given AWS credentials, region, encryption flag, and -// bucketName -func New(params DriverParameters) (*Driver, error) { - awsConfig := aws.NewConfig() - var creds *credentials.Credentials - if params.RegionEndpoint == "" { - creds = credentials.NewChainCredentials([]credentials.Provider{ - &credentials.StaticProvider{ - Value: credentials.Value{ - AccessKeyID: params.AccessKey, - SecretAccessKey: params.SecretKey, - }, - }, - &credentials.EnvProvider{}, - &credentials.SharedCredentialsProvider{}, - &ec2rolecreds.EC2RoleProvider{Client: ec2metadata.New(session.New())}, - }) - - } else { - creds = credentials.NewChainCredentials([]credentials.Provider{ - &credentials.StaticProvider{ - Value: credentials.Value{ - AccessKeyID: params.AccessKey, - SecretAccessKey: params.SecretKey, - }, - }, - &credentials.EnvProvider{}, - }) - awsConfig.WithS3ForcePathStyle(true) - awsConfig.WithEndpoint(params.RegionEndpoint) - } - - awsConfig.WithCredentials(creds) - awsConfig.WithRegion(params.Region) - awsConfig.WithDisableSSL(!params.Secure) - - if params.UserAgent != "" { - awsConfig.WithHTTPClient(&http.Client{ - Transport: transport.NewTransport(http.DefaultTransport, transport.NewHeaderRequestModifier(http.Header{http.CanonicalHeaderKey("User-Agent"): []string{params.UserAgent}})), - }) - } - - s3obj := s3.New(session.New(awsConfig)) - - // TODO Currently multipart uploads have no timestamps, so this would be unwise - // if you initiated a new s3driver while another one is running on the same bucket. - // multis, _, err := bucket.ListMulti("", "") - // if err != nil { - // return nil, err - // } - - // for _, multi := range multis { - // err := multi.Abort() - // //TODO appropriate to do this error checking? - // if err != nil { - // return nil, err - // } - // } - - d := &driver{ - S3: s3obj, - Bucket: params.Bucket, - ChunkSize: params.ChunkSize, - Encrypt: params.Encrypt, - KeyID: params.KeyID, - RootDirectory: params.RootDirectory, - StorageClass: params.StorageClass, - } - - return &Driver{ - baseEmbed: baseEmbed{ - Base: base.Base{ - StorageDriver: d, - }, - }, - }, nil -} - -// Implement the storagedriver.StorageDriver interface - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - reader, err := d.Reader(ctx, path, 0) - if err != nil { - return nil, err - } - return ioutil.ReadAll(reader) -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, path string, contents []byte) error { - _, err := d.S3.PutObject(&s3.PutObjectInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(d.s3Path(path)), - ContentType: d.getContentType(), - ACL: d.getACL(), - ServerSideEncryption: d.getEncryptionMode(), - SSEKMSKeyId: d.getSSEKMSKeyID(), - StorageClass: d.getStorageClass(), - Body: bytes.NewReader(contents), - }) - return parseError(path, err) -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - resp, err := d.S3.GetObject(&s3.GetObjectInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(d.s3Path(path)), - Range: aws.String("bytes=" + strconv.FormatInt(offset, 10) + "-"), - }) - - if err != nil { - if s3Err, ok := err.(awserr.Error); ok && s3Err.Code() == "InvalidRange" { - return ioutil.NopCloser(bytes.NewReader(nil)), nil - } - - return nil, parseError(path, err) - } - return resp.Body, nil -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - key := d.s3Path(path) - if !append { - // TODO (brianbland): cancel other uploads at this path - resp, err := d.S3.CreateMultipartUpload(&s3.CreateMultipartUploadInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(key), - ContentType: d.getContentType(), - ACL: d.getACL(), - ServerSideEncryption: d.getEncryptionMode(), - SSEKMSKeyId: d.getSSEKMSKeyID(), - StorageClass: d.getStorageClass(), - }) - if err != nil { - return nil, err - } - return d.newWriter(key, *resp.UploadId, nil), nil - } - resp, err := d.S3.ListMultipartUploads(&s3.ListMultipartUploadsInput{ - Bucket: aws.String(d.Bucket), - Prefix: aws.String(key), - }) - if err != nil { - return nil, parseError(path, err) - } - - for _, multi := range resp.Uploads { - if key != *multi.Key { - continue - } - resp, err := d.S3.ListParts(&s3.ListPartsInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(key), - UploadId: multi.UploadId, - }) - if err != nil { - return nil, parseError(path, err) - } - var multiSize int64 - for _, part := range resp.Parts { - multiSize += *part.Size - } - return d.newWriter(key, *multi.UploadId, resp.Parts), nil - } - return nil, storagedriver.PathNotFoundError{Path: path} -} - -// Stat retrieves the FileInfo for the given path, including the current size -// in bytes and the creation time. -func (d *driver) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - resp, err := d.S3.ListObjects(&s3.ListObjectsInput{ - Bucket: aws.String(d.Bucket), - Prefix: aws.String(d.s3Path(path)), - MaxKeys: aws.Int64(1), - }) - if err != nil { - return nil, err - } - - fi := storagedriver.FileInfoFields{ - Path: path, - } - - if len(resp.Contents) == 1 { - if *resp.Contents[0].Key != d.s3Path(path) { - fi.IsDir = true - } else { - fi.IsDir = false - fi.Size = *resp.Contents[0].Size - fi.ModTime = *resp.Contents[0].LastModified - } - } else if len(resp.CommonPrefixes) == 1 { - fi.IsDir = true - } else { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil -} - -// List returns a list of the objects that are direct descendants of the given path. -func (d *driver) List(ctx context.Context, opath string) ([]string, error) { - path := opath - if path != "/" && path[len(path)-1] != '/' { - path = path + "/" - } - - // This is to cover for the cases when the rootDirectory of the driver is either "" or "/". - // In those cases, there is no root prefix to replace and we must actually add a "/" to all - // results in order to keep them as valid paths as recognized by storagedriver.PathRegexp - prefix := "" - if d.s3Path("") == "" { - prefix = "/" - } - - resp, err := d.S3.ListObjects(&s3.ListObjectsInput{ - Bucket: aws.String(d.Bucket), - Prefix: aws.String(d.s3Path(path)), - Delimiter: aws.String("/"), - MaxKeys: aws.Int64(listMax), - }) - if err != nil { - return nil, parseError(opath, err) - } - - files := []string{} - directories := []string{} - - for { - for _, key := range resp.Contents { - files = append(files, strings.Replace(*key.Key, d.s3Path(""), prefix, 1)) - } - - for _, commonPrefix := range resp.CommonPrefixes { - commonPrefix := *commonPrefix.Prefix - directories = append(directories, strings.Replace(commonPrefix[0:len(commonPrefix)-1], d.s3Path(""), prefix, 1)) - } - - if *resp.IsTruncated { - resp, err = d.S3.ListObjects(&s3.ListObjectsInput{ - Bucket: aws.String(d.Bucket), - Prefix: aws.String(d.s3Path(path)), - Delimiter: aws.String("/"), - MaxKeys: aws.Int64(listMax), - Marker: resp.NextMarker, - }) - if err != nil { - return nil, err - } - } else { - break - } - } - - if opath != "/" { - if len(files) == 0 && len(directories) == 0 { - // Treat empty response as missing directory, since we don't actually - // have directories in s3. - return nil, storagedriver.PathNotFoundError{Path: opath} - } - } - - return append(files, directories...), nil -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - /* This is terrible, but aws doesn't have an actual move. */ - _, err := d.S3.CopyObject(&s3.CopyObjectInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(d.s3Path(destPath)), - ContentType: d.getContentType(), - ACL: d.getACL(), - ServerSideEncryption: d.getEncryptionMode(), - SSEKMSKeyId: d.getSSEKMSKeyID(), - StorageClass: d.getStorageClass(), - CopySource: aws.String(d.Bucket + "/" + d.s3Path(sourcePath)), - }) - if err != nil { - return parseError(sourcePath, err) - } - - return d.Delete(ctx, sourcePath) -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, path string) error { - resp, err := d.S3.ListObjects(&s3.ListObjectsInput{ - Bucket: aws.String(d.Bucket), - Prefix: aws.String(d.s3Path(path)), - }) - if err != nil || len(resp.Contents) == 0 { - return storagedriver.PathNotFoundError{Path: path} - } - - s3Objects := make([]*s3.ObjectIdentifier, 0, listMax) - - for len(resp.Contents) > 0 { - for _, key := range resp.Contents { - s3Objects = append(s3Objects, &s3.ObjectIdentifier{ - Key: key.Key, - }) - } - - _, err := d.S3.DeleteObjects(&s3.DeleteObjectsInput{ - Bucket: aws.String(d.Bucket), - Delete: &s3.Delete{ - Objects: s3Objects, - Quiet: aws.Bool(false), - }, - }) - if err != nil { - return nil - } - - resp, err = d.S3.ListObjects(&s3.ListObjectsInput{ - Bucket: aws.String(d.Bucket), - Prefix: aws.String(d.s3Path(path)), - }) - if err != nil { - return err - } - } - - return nil -} - -// URLFor returns a URL which may be used to retrieve the content stored at the given path. -// May return an UnsupportedMethodErr in certain StorageDriver implementations. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - methodString := "GET" - method, ok := options["method"] - if ok { - methodString, ok = method.(string) - if !ok || (methodString != "GET" && methodString != "HEAD") { - return "", storagedriver.ErrUnsupportedMethod{} - } - } - - expiresIn := 20 * time.Minute - expires, ok := options["expiry"] - if ok { - et, ok := expires.(time.Time) - if ok { - expiresIn = et.Sub(time.Now()) - } - } - - var req *request.Request - - switch methodString { - case "GET": - req, _ = d.S3.GetObjectRequest(&s3.GetObjectInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(d.s3Path(path)), - }) - case "HEAD": - req, _ = d.S3.HeadObjectRequest(&s3.HeadObjectInput{ - Bucket: aws.String(d.Bucket), - Key: aws.String(d.s3Path(path)), - }) - default: - panic("unreachable") - } - - return req.Presign(expiresIn) -} - -func (d *driver) s3Path(path string) string { - return strings.TrimLeft(strings.TrimRight(d.RootDirectory, "/")+path, "/") -} - -// S3BucketKey returns the s3 bucket key for the given storage driver path. -func (d *Driver) S3BucketKey(path string) string { - return d.StorageDriver.(*driver).s3Path(path) -} - -func parseError(path string, err error) error { - if s3Err, ok := err.(awserr.Error); ok && s3Err.Code() == "NoSuchKey" { - return storagedriver.PathNotFoundError{Path: path} - } - - return err -} - -func (d *driver) getEncryptionMode() *string { - if !d.Encrypt { - return nil - } - if d.KeyID == "" { - return aws.String("AES256") - } - return aws.String("aws:kms") -} - -func (d *driver) getSSEKMSKeyID() *string { - if d.KeyID != "" { - return aws.String(d.KeyID) - } - return nil -} - -func (d *driver) getContentType() *string { - return aws.String("application/octet-stream") -} - -func (d *driver) getACL() *string { - return aws.String("private") -} - -func (d *driver) getStorageClass() *string { - return aws.String(d.StorageClass) -} - -// writer attempts to upload parts to S3 in a buffered fashion where the last -// part is at least as large as the chunksize, so the multipart upload could be -// cleanly resumed in the future. This is violated if Close is called after less -// than a full chunk is written. -type writer struct { - driver *driver - key string - uploadID string - parts []*s3.Part - size int64 - readyPart []byte - pendingPart []byte - closed bool - committed bool - cancelled bool -} - -func (d *driver) newWriter(key, uploadID string, parts []*s3.Part) storagedriver.FileWriter { - var size int64 - for _, part := range parts { - size += *part.Size - } - return &writer{ - driver: d, - key: key, - uploadID: uploadID, - parts: parts, - size: size, - } -} - -func (w *writer) Write(p []byte) (int, error) { - if w.closed { - return 0, fmt.Errorf("already closed") - } else if w.committed { - return 0, fmt.Errorf("already committed") - } else if w.cancelled { - return 0, fmt.Errorf("already cancelled") - } - - // If the last written part is smaller than minChunkSize, we need to make a - // new multipart upload :sadface: - if len(w.parts) > 0 && int(*w.parts[len(w.parts)-1].Size) < minChunkSize { - var completedParts []*s3.CompletedPart - for _, part := range w.parts { - completedParts = append(completedParts, &s3.CompletedPart{ - ETag: part.ETag, - PartNumber: part.PartNumber, - }) - } - _, err := w.driver.S3.CompleteMultipartUpload(&s3.CompleteMultipartUploadInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - UploadId: aws.String(w.uploadID), - MultipartUpload: &s3.CompletedMultipartUpload{ - Parts: completedParts, - }, - }) - if err != nil { - w.driver.S3.AbortMultipartUpload(&s3.AbortMultipartUploadInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - UploadId: aws.String(w.uploadID), - }) - return 0, err - } - - resp, err := w.driver.S3.CreateMultipartUpload(&s3.CreateMultipartUploadInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - ContentType: w.driver.getContentType(), - ACL: w.driver.getACL(), - ServerSideEncryption: w.driver.getEncryptionMode(), - StorageClass: w.driver.getStorageClass(), - }) - if err != nil { - return 0, err - } - w.uploadID = *resp.UploadId - - // If the entire written file is smaller than minChunkSize, we need to make - // a new part from scratch :double sad face: - if w.size < minChunkSize { - resp, err := w.driver.S3.GetObject(&s3.GetObjectInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - }) - defer resp.Body.Close() - if err != nil { - return 0, err - } - w.parts = nil - w.readyPart, err = ioutil.ReadAll(resp.Body) - if err != nil { - return 0, err - } - } else { - // Otherwise we can use the old file as the new first part - copyPartResp, err := w.driver.S3.UploadPartCopy(&s3.UploadPartCopyInput{ - Bucket: aws.String(w.driver.Bucket), - CopySource: aws.String(w.driver.Bucket + "/" + w.key), - Key: aws.String(w.key), - PartNumber: aws.Int64(1), - UploadId: resp.UploadId, - }) - if err != nil { - return 0, err - } - w.parts = []*s3.Part{ - { - ETag: copyPartResp.CopyPartResult.ETag, - PartNumber: aws.Int64(1), - Size: aws.Int64(w.size), - }, - } - } - } - - var n int - - for len(p) > 0 { - // If no parts are ready to write, fill up the first part - if neededBytes := int(w.driver.ChunkSize) - len(w.readyPart); neededBytes > 0 { - if len(p) >= neededBytes { - w.readyPart = append(w.readyPart, p[:neededBytes]...) - n += neededBytes - p = p[neededBytes:] - } else { - w.readyPart = append(w.readyPart, p...) - n += len(p) - p = nil - } - } - - if neededBytes := int(w.driver.ChunkSize) - len(w.pendingPart); neededBytes > 0 { - if len(p) >= neededBytes { - w.pendingPart = append(w.pendingPart, p[:neededBytes]...) - n += neededBytes - p = p[neededBytes:] - err := w.flushPart() - if err != nil { - w.size += int64(n) - return n, err - } - } else { - w.pendingPart = append(w.pendingPart, p...) - n += len(p) - p = nil - } - } - } - w.size += int64(n) - return n, nil -} - -func (w *writer) Size() int64 { - return w.size -} - -func (w *writer) Close() error { - if w.closed { - return fmt.Errorf("already closed") - } - w.closed = true - return w.flushPart() -} - -func (w *writer) Cancel() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } - w.cancelled = true - _, err := w.driver.S3.AbortMultipartUpload(&s3.AbortMultipartUploadInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - UploadId: aws.String(w.uploadID), - }) - return err -} - -func (w *writer) Commit() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } else if w.cancelled { - return fmt.Errorf("already cancelled") - } - err := w.flushPart() - if err != nil { - return err - } - w.committed = true - var completedParts []*s3.CompletedPart - for _, part := range w.parts { - completedParts = append(completedParts, &s3.CompletedPart{ - ETag: part.ETag, - PartNumber: part.PartNumber, - }) - } - _, err = w.driver.S3.CompleteMultipartUpload(&s3.CompleteMultipartUploadInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - UploadId: aws.String(w.uploadID), - MultipartUpload: &s3.CompletedMultipartUpload{ - Parts: completedParts, - }, - }) - if err != nil { - w.driver.S3.AbortMultipartUpload(&s3.AbortMultipartUploadInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - UploadId: aws.String(w.uploadID), - }) - return err - } - return nil -} - -// flushPart flushes buffers to write a part to S3. -// Only called by Write (with both buffers full) and Close/Commit (always) -func (w *writer) flushPart() error { - if len(w.readyPart) == 0 && len(w.pendingPart) == 0 { - // nothing to write - return nil - } - if len(w.pendingPart) < int(w.driver.ChunkSize) { - // closing with a small pending part - // combine ready and pending to avoid writing a small part - w.readyPart = append(w.readyPart, w.pendingPart...) - w.pendingPart = nil - } - - partNumber := aws.Int64(int64(len(w.parts) + 1)) - resp, err := w.driver.S3.UploadPart(&s3.UploadPartInput{ - Bucket: aws.String(w.driver.Bucket), - Key: aws.String(w.key), - PartNumber: partNumber, - UploadId: aws.String(w.uploadID), - Body: bytes.NewReader(w.readyPart), - }) - if err != nil { - return err - } - w.parts = append(w.parts, &s3.Part{ - ETag: resp.ETag, - PartNumber: partNumber, - Size: aws.Int64(int64(len(w.readyPart))), - }) - w.readyPart = w.pendingPart - w.pendingPart = nil - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/s3-aws/s3_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/s3-aws/s3_test.go deleted file mode 100644 index bb64ccf443..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/s3-aws/s3_test.go +++ /dev/null @@ -1,205 +0,0 @@ -package s3 - -import ( - "io/ioutil" - "os" - "strconv" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/s3" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - - "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -var s3DriverConstructor func(rootDirectory, storageClass string) (*Driver, error) -var skipS3 func() string - -func init() { - accessKey := os.Getenv("AWS_ACCESS_KEY") - secretKey := os.Getenv("AWS_SECRET_KEY") - bucket := os.Getenv("S3_BUCKET") - encrypt := os.Getenv("S3_ENCRYPT") - keyID := os.Getenv("S3_KEY_ID") - secure := os.Getenv("S3_SECURE") - region := os.Getenv("AWS_REGION") - root, err := ioutil.TempDir("", "driver-") - regionEndpoint := os.Getenv("REGION_ENDPOINT") - if err != nil { - panic(err) - } - defer os.Remove(root) - - s3DriverConstructor = func(rootDirectory, storageClass string) (*Driver, error) { - encryptBool := false - if encrypt != "" { - encryptBool, err = strconv.ParseBool(encrypt) - if err != nil { - return nil, err - } - } - - secureBool := true - if secure != "" { - secureBool, err = strconv.ParseBool(secure) - if err != nil { - return nil, err - } - } - - parameters := DriverParameters{ - accessKey, - secretKey, - bucket, - region, - regionEndpoint, - encryptBool, - keyID, - secureBool, - minChunkSize, - rootDirectory, - storageClass, - driverName + "-test", - } - - return New(parameters) - } - - // Skip S3 storage driver tests if environment variable parameters are not provided - skipS3 = func() string { - if accessKey == "" || secretKey == "" || region == "" || bucket == "" || encrypt == "" { - return "Must set AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_REGION, S3_BUCKET, and S3_ENCRYPT to run S3 tests" - } - return "" - } - - testsuites.RegisterSuite(func() (storagedriver.StorageDriver, error) { - return s3DriverConstructor(root, s3.StorageClassStandard) - }, skipS3) -} - -func TestEmptyRootList(t *testing.T) { - if skipS3() != "" { - t.Skip(skipS3()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - rootedDriver, err := s3DriverConstructor(validRoot, s3.StorageClassStandard) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - emptyRootDriver, err := s3DriverConstructor("", s3.StorageClassStandard) - if err != nil { - t.Fatalf("unexpected error creating empty root driver: %v", err) - } - - slashRootDriver, err := s3DriverConstructor("/", s3.StorageClassStandard) - if err != nil { - t.Fatalf("unexpected error creating slash root driver: %v", err) - } - - filename := "/test" - contents := []byte("contents") - ctx := context.Background() - err = rootedDriver.PutContent(ctx, filename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer rootedDriver.Delete(ctx, filename) - - keys, err := emptyRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } - - keys, err = slashRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } -} - -func TestStorageClass(t *testing.T) { - if skipS3() != "" { - t.Skip(skipS3()) - } - - rootDir, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(rootDir) - - standardDriver, err := s3DriverConstructor(rootDir, s3.StorageClassStandard) - if err != nil { - t.Fatalf("unexpected error creating driver with standard storage: %v", err) - } - - rrDriver, err := s3DriverConstructor(rootDir, s3.StorageClassReducedRedundancy) - if err != nil { - t.Fatalf("unexpected error creating driver with reduced redundancy storage: %v", err) - } - - standardFilename := "/test-standard" - rrFilename := "/test-rr" - contents := []byte("contents") - ctx := context.Background() - - err = standardDriver.PutContent(ctx, standardFilename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer standardDriver.Delete(ctx, standardFilename) - - err = rrDriver.PutContent(ctx, rrFilename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer rrDriver.Delete(ctx, rrFilename) - - standardDriverUnwrapped := standardDriver.Base.StorageDriver.(*driver) - resp, err := standardDriverUnwrapped.S3.GetObject(&s3.GetObjectInput{ - Bucket: aws.String(standardDriverUnwrapped.Bucket), - Key: aws.String(standardDriverUnwrapped.s3Path(standardFilename)), - }) - if err != nil { - t.Fatalf("unexpected error retrieving standard storage file: %v", err) - } - defer resp.Body.Close() - // Amazon only populates this header value for non-standard storage classes - if resp.StorageClass != nil { - t.Fatalf("unexpected storage class for standard file: %v", resp.StorageClass) - } - - rrDriverUnwrapped := rrDriver.Base.StorageDriver.(*driver) - resp, err = rrDriverUnwrapped.S3.GetObject(&s3.GetObjectInput{ - Bucket: aws.String(rrDriverUnwrapped.Bucket), - Key: aws.String(rrDriverUnwrapped.s3Path(rrFilename)), - }) - if err != nil { - t.Fatalf("unexpected error retrieving reduced-redundancy storage file: %v", err) - } - defer resp.Body.Close() - if resp.StorageClass == nil { - t.Fatalf("unexpected storage class for reduced-redundancy file: %v", s3.StorageClassStandard) - } else if *resp.StorageClass != s3.StorageClassReducedRedundancy { - t.Fatalf("unexpected storage class for reduced-redundancy file: %v", *resp.StorageClass) - } - -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/s3-goamz/s3.go b/vendor/github.com/docker/distribution/registry/storage/driver/s3-goamz/s3.go deleted file mode 100644 index aa2d31b714..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/s3-goamz/s3.go +++ /dev/null @@ -1,746 +0,0 @@ -// Package s3 provides a storagedriver.StorageDriver implementation to -// store blobs in Amazon S3 cloud storage. -// -// This package leverages the docker/goamz client library for interfacing with -// S3. It is intended to be deprecated in favor of the s3-aws driver -// implementation. -// -// Because S3 is a key, value store the Stat call does not support last modification -// time for directories (directories are an abstraction for key, value stores) -// -// Keep in mind that S3 guarantees only read-after-write consistency for new -// objects, but no read-after-update or list-after-write consistency. -package s3 - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "reflect" - "strconv" - "strings" - "time" - - "github.com/docker/goamz/aws" - "github.com/docker/goamz/s3" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/client/transport" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" -) - -const driverName = "s3goamz" - -// minChunkSize defines the minimum multipart upload chunk size -// S3 API requires multipart upload chunks to be at least 5MB -const minChunkSize = 5 << 20 - -const defaultChunkSize = 2 * minChunkSize - -// listMax is the largest amount of objects you can request from S3 in a list call -const listMax = 1000 - -//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set -type DriverParameters struct { - AccessKey string - SecretKey string - Bucket string - Region aws.Region - Encrypt bool - Secure bool - V4Auth bool - ChunkSize int64 - RootDirectory string - StorageClass s3.StorageClass - UserAgent string -} - -func init() { - factory.Register(driverName, &s3DriverFactory{}) -} - -// s3DriverFactory implements the factory.StorageDriverFactory interface -type s3DriverFactory struct{} - -func (factory *s3DriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters) -} - -type driver struct { - S3 *s3.S3 - Bucket *s3.Bucket - ChunkSize int64 - Encrypt bool - RootDirectory string - StorageClass s3.StorageClass -} - -type baseEmbed struct { - base.Base -} - -// Driver is a storagedriver.StorageDriver implementation backed by Amazon S3 -// Objects are stored at absolute keys in the provided bucket. -type Driver struct { - baseEmbed -} - -// FromParameters constructs a new Driver with a given parameters map -// Required parameters: -// - accesskey -// - secretkey -// - region -// - bucket -// - encrypt -func FromParameters(parameters map[string]interface{}) (*Driver, error) { - // Providing no values for these is valid in case the user is authenticating - // with an IAM on an ec2 instance (in which case the instance credentials will - // be summoned when GetAuth is called) - accessKey := parameters["accesskey"] - if accessKey == nil { - accessKey = "" - } - - secretKey := parameters["secretkey"] - if secretKey == nil { - secretKey = "" - } - - regionName := parameters["region"] - if regionName == nil || fmt.Sprint(regionName) == "" { - return nil, fmt.Errorf("No region parameter provided") - } - region := aws.GetRegion(fmt.Sprint(regionName)) - if region.Name == "" { - return nil, fmt.Errorf("Invalid region provided: %v", region) - } - - bucket := parameters["bucket"] - if bucket == nil || fmt.Sprint(bucket) == "" { - return nil, fmt.Errorf("No bucket parameter provided") - } - - encryptBool := false - encrypt := parameters["encrypt"] - switch encrypt := encrypt.(type) { - case string: - b, err := strconv.ParseBool(encrypt) - if err != nil { - return nil, fmt.Errorf("The encrypt parameter should be a boolean") - } - encryptBool = b - case bool: - encryptBool = encrypt - case nil: - // do nothing - default: - return nil, fmt.Errorf("The encrypt parameter should be a boolean") - } - - secureBool := true - secure := parameters["secure"] - switch secure := secure.(type) { - case string: - b, err := strconv.ParseBool(secure) - if err != nil { - return nil, fmt.Errorf("The secure parameter should be a boolean") - } - secureBool = b - case bool: - secureBool = secure - case nil: - // do nothing - default: - return nil, fmt.Errorf("The secure parameter should be a boolean") - } - - v4AuthBool := false - v4Auth := parameters["v4auth"] - switch v4Auth := v4Auth.(type) { - case string: - b, err := strconv.ParseBool(v4Auth) - if err != nil { - return nil, fmt.Errorf("The v4auth parameter should be a boolean") - } - v4AuthBool = b - case bool: - v4AuthBool = v4Auth - case nil: - // do nothing - default: - return nil, fmt.Errorf("The v4auth parameter should be a boolean") - } - - chunkSize := int64(defaultChunkSize) - chunkSizeParam := parameters["chunksize"] - switch v := chunkSizeParam.(type) { - case string: - vv, err := strconv.ParseInt(v, 0, 64) - if err != nil { - return nil, fmt.Errorf("chunksize parameter must be an integer, %v invalid", chunkSizeParam) - } - chunkSize = vv - case int64: - chunkSize = v - case int, uint, int32, uint32, uint64: - chunkSize = reflect.ValueOf(v).Convert(reflect.TypeOf(chunkSize)).Int() - case nil: - // do nothing - default: - return nil, fmt.Errorf("invalid value for chunksize: %#v", chunkSizeParam) - } - - if chunkSize < minChunkSize { - return nil, fmt.Errorf("The chunksize %#v parameter should be a number that is larger than or equal to %d", chunkSize, minChunkSize) - } - - rootDirectory := parameters["rootdirectory"] - if rootDirectory == nil { - rootDirectory = "" - } - - storageClass := s3.StandardStorage - storageClassParam := parameters["storageclass"] - if storageClassParam != nil { - storageClassString, ok := storageClassParam.(string) - if !ok { - return nil, fmt.Errorf("The storageclass parameter must be one of %v, %v invalid", []s3.StorageClass{s3.StandardStorage, s3.ReducedRedundancy}, storageClassParam) - } - // All valid storage class parameters are UPPERCASE, so be a bit more flexible here - storageClassCasted := s3.StorageClass(strings.ToUpper(storageClassString)) - if storageClassCasted != s3.StandardStorage && storageClassCasted != s3.ReducedRedundancy { - return nil, fmt.Errorf("The storageclass parameter must be one of %v, %v invalid", []s3.StorageClass{s3.StandardStorage, s3.ReducedRedundancy}, storageClassParam) - } - storageClass = storageClassCasted - } - - userAgent := parameters["useragent"] - if userAgent == nil { - userAgent = "" - } - - params := DriverParameters{ - fmt.Sprint(accessKey), - fmt.Sprint(secretKey), - fmt.Sprint(bucket), - region, - encryptBool, - secureBool, - v4AuthBool, - chunkSize, - fmt.Sprint(rootDirectory), - storageClass, - fmt.Sprint(userAgent), - } - - return New(params) -} - -// New constructs a new Driver with the given AWS credentials, region, encryption flag, and -// bucketName -func New(params DriverParameters) (*Driver, error) { - auth, err := aws.GetAuth(params.AccessKey, params.SecretKey, "", time.Time{}) - if err != nil { - return nil, fmt.Errorf("unable to resolve aws credentials, please ensure that 'accesskey' and 'secretkey' are properly set or the credentials are available in $HOME/.aws/credentials: %v", err) - } - - if !params.Secure { - params.Region.S3Endpoint = strings.Replace(params.Region.S3Endpoint, "https", "http", 1) - } - - s3obj := s3.New(auth, params.Region) - - if params.UserAgent != "" { - s3obj.Client = &http.Client{ - Transport: transport.NewTransport(http.DefaultTransport, - transport.NewHeaderRequestModifier(http.Header{ - http.CanonicalHeaderKey("User-Agent"): []string{params.UserAgent}, - }), - ), - } - } - - if params.V4Auth { - s3obj.Signature = aws.V4Signature - } else { - if params.Region.Name == "eu-central-1" { - return nil, fmt.Errorf("The eu-central-1 region only works with v4 authentication") - } - } - - bucket := s3obj.Bucket(params.Bucket) - - // TODO Currently multipart uploads have no timestamps, so this would be unwise - // if you initiated a new s3driver while another one is running on the same bucket. - // multis, _, err := bucket.ListMulti("", "") - // if err != nil { - // return nil, err - // } - - // for _, multi := range multis { - // err := multi.Abort() - // //TODO appropriate to do this error checking? - // if err != nil { - // return nil, err - // } - // } - - d := &driver{ - S3: s3obj, - Bucket: bucket, - ChunkSize: params.ChunkSize, - Encrypt: params.Encrypt, - RootDirectory: params.RootDirectory, - StorageClass: params.StorageClass, - } - - return &Driver{ - baseEmbed: baseEmbed{ - Base: base.Base{ - StorageDriver: d, - }, - }, - }, nil -} - -// Implement the storagedriver.StorageDriver interface - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - content, err := d.Bucket.Get(d.s3Path(path)) - if err != nil { - return nil, parseError(path, err) - } - return content, nil -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, path string, contents []byte) error { - return parseError(path, d.Bucket.Put(d.s3Path(path), contents, d.getContentType(), getPermissions(), d.getOptions())) -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - headers := make(http.Header) - headers.Add("Range", "bytes="+strconv.FormatInt(offset, 10)+"-") - - resp, err := d.Bucket.GetResponseWithHeaders(d.s3Path(path), headers) - if err != nil { - if s3Err, ok := err.(*s3.Error); ok && s3Err.Code == "InvalidRange" { - return ioutil.NopCloser(bytes.NewReader(nil)), nil - } - - return nil, parseError(path, err) - } - return resp.Body, nil -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - key := d.s3Path(path) - if !append { - // TODO (brianbland): cancel other uploads at this path - multi, err := d.Bucket.InitMulti(key, d.getContentType(), getPermissions(), d.getOptions()) - if err != nil { - return nil, err - } - return d.newWriter(key, multi, nil), nil - } - multis, _, err := d.Bucket.ListMulti(key, "") - if err != nil { - return nil, parseError(path, err) - } - for _, multi := range multis { - if key != multi.Key { - continue - } - parts, err := multi.ListParts() - if err != nil { - return nil, parseError(path, err) - } - var multiSize int64 - for _, part := range parts { - multiSize += part.Size - } - return d.newWriter(key, multi, parts), nil - } - return nil, storagedriver.PathNotFoundError{Path: path} -} - -// Stat retrieves the FileInfo for the given path, including the current size -// in bytes and the creation time. -func (d *driver) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - listResponse, err := d.Bucket.List(d.s3Path(path), "", "", 1) - if err != nil { - return nil, err - } - - fi := storagedriver.FileInfoFields{ - Path: path, - } - - if len(listResponse.Contents) == 1 { - if listResponse.Contents[0].Key != d.s3Path(path) { - fi.IsDir = true - } else { - fi.IsDir = false - fi.Size = listResponse.Contents[0].Size - - timestamp, err := time.Parse(time.RFC3339Nano, listResponse.Contents[0].LastModified) - if err != nil { - return nil, err - } - fi.ModTime = timestamp - } - } else if len(listResponse.CommonPrefixes) == 1 { - fi.IsDir = true - } else { - return nil, storagedriver.PathNotFoundError{Path: path} - } - - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil -} - -// List returns a list of the objects that are direct descendants of the given path. -func (d *driver) List(ctx context.Context, opath string) ([]string, error) { - path := opath - if path != "/" && path[len(path)-1] != '/' { - path = path + "/" - } - - // This is to cover for the cases when the rootDirectory of the driver is either "" or "/". - // In those cases, there is no root prefix to replace and we must actually add a "/" to all - // results in order to keep them as valid paths as recognized by storagedriver.PathRegexp - prefix := "" - if d.s3Path("") == "" { - prefix = "/" - } - - listResponse, err := d.Bucket.List(d.s3Path(path), "/", "", listMax) - if err != nil { - return nil, parseError(opath, err) - } - - files := []string{} - directories := []string{} - - for { - for _, key := range listResponse.Contents { - files = append(files, strings.Replace(key.Key, d.s3Path(""), prefix, 1)) - } - - for _, commonPrefix := range listResponse.CommonPrefixes { - directories = append(directories, strings.Replace(commonPrefix[0:len(commonPrefix)-1], d.s3Path(""), prefix, 1)) - } - - if listResponse.IsTruncated { - listResponse, err = d.Bucket.List(d.s3Path(path), "/", listResponse.NextMarker, listMax) - if err != nil { - return nil, err - } - } else { - break - } - } - - if opath != "/" { - if len(files) == 0 && len(directories) == 0 { - // Treat empty response as missing directory, since we don't actually - // have directories in s3. - return nil, storagedriver.PathNotFoundError{Path: opath} - } - } - - return append(files, directories...), nil -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - /* This is terrible, but aws doesn't have an actual move. */ - _, err := d.Bucket.PutCopy(d.s3Path(destPath), getPermissions(), - s3.CopyOptions{Options: d.getOptions(), ContentType: d.getContentType()}, d.Bucket.Name+"/"+d.s3Path(sourcePath)) - if err != nil { - return parseError(sourcePath, err) - } - - return d.Delete(ctx, sourcePath) -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, path string) error { - listResponse, err := d.Bucket.List(d.s3Path(path), "", "", listMax) - if err != nil || len(listResponse.Contents) == 0 { - return storagedriver.PathNotFoundError{Path: path} - } - - s3Objects := make([]s3.Object, listMax) - - for len(listResponse.Contents) > 0 { - for index, key := range listResponse.Contents { - s3Objects[index].Key = key.Key - } - - err := d.Bucket.DelMulti(s3.Delete{Quiet: false, Objects: s3Objects[0:len(listResponse.Contents)]}) - if err != nil { - return nil - } - - listResponse, err = d.Bucket.List(d.s3Path(path), "", "", listMax) - if err != nil { - return err - } - } - - return nil -} - -// URLFor returns a URL which may be used to retrieve the content stored at the given path. -// May return an UnsupportedMethodErr in certain StorageDriver implementations. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - methodString := "GET" - method, ok := options["method"] - if ok { - methodString, ok = method.(string) - if !ok || (methodString != "GET" && methodString != "HEAD") { - return "", storagedriver.ErrUnsupportedMethod{} - } - } - - expiresTime := time.Now().Add(20 * time.Minute) - expires, ok := options["expiry"] - if ok { - et, ok := expires.(time.Time) - if ok { - expiresTime = et - } - } - - return d.Bucket.SignedURLWithMethod(methodString, d.s3Path(path), expiresTime, nil, nil), nil -} - -func (d *driver) s3Path(path string) string { - return strings.TrimLeft(strings.TrimRight(d.RootDirectory, "/")+path, "/") -} - -// S3BucketKey returns the s3 bucket key for the given storage driver path. -func (d *Driver) S3BucketKey(path string) string { - return d.StorageDriver.(*driver).s3Path(path) -} - -func parseError(path string, err error) error { - if s3Err, ok := err.(*s3.Error); ok && s3Err.Code == "NoSuchKey" { - return storagedriver.PathNotFoundError{Path: path} - } - - return err -} - -func hasCode(err error, code string) bool { - s3err, ok := err.(*aws.Error) - return ok && s3err.Code == code -} - -func (d *driver) getOptions() s3.Options { - return s3.Options{ - SSE: d.Encrypt, - StorageClass: d.StorageClass, - } -} - -func getPermissions() s3.ACL { - return s3.Private -} - -func (d *driver) getContentType() string { - return "application/octet-stream" -} - -// writer attempts to upload parts to S3 in a buffered fashion where the last -// part is at least as large as the chunksize, so the multipart upload could be -// cleanly resumed in the future. This is violated if Close is called after less -// than a full chunk is written. -type writer struct { - driver *driver - key string - multi *s3.Multi - parts []s3.Part - size int64 - readyPart []byte - pendingPart []byte - closed bool - committed bool - cancelled bool -} - -func (d *driver) newWriter(key string, multi *s3.Multi, parts []s3.Part) storagedriver.FileWriter { - var size int64 - for _, part := range parts { - size += part.Size - } - return &writer{ - driver: d, - key: key, - multi: multi, - parts: parts, - size: size, - } -} - -func (w *writer) Write(p []byte) (int, error) { - if w.closed { - return 0, fmt.Errorf("already closed") - } else if w.committed { - return 0, fmt.Errorf("already committed") - } else if w.cancelled { - return 0, fmt.Errorf("already cancelled") - } - - // If the last written part is smaller than minChunkSize, we need to make a - // new multipart upload :sadface: - if len(w.parts) > 0 && int(w.parts[len(w.parts)-1].Size) < minChunkSize { - err := w.multi.Complete(w.parts) - if err != nil { - w.multi.Abort() - return 0, err - } - - multi, err := w.driver.Bucket.InitMulti(w.key, w.driver.getContentType(), getPermissions(), w.driver.getOptions()) - if err != nil { - return 0, err - } - w.multi = multi - - // If the entire written file is smaller than minChunkSize, we need to make - // a new part from scratch :double sad face: - if w.size < minChunkSize { - contents, err := w.driver.Bucket.Get(w.key) - if err != nil { - return 0, err - } - w.parts = nil - w.readyPart = contents - } else { - // Otherwise we can use the old file as the new first part - _, part, err := multi.PutPartCopy(1, s3.CopyOptions{}, w.driver.Bucket.Name+"/"+w.key) - if err != nil { - return 0, err - } - w.parts = []s3.Part{part} - } - } - - var n int - - for len(p) > 0 { - // If no parts are ready to write, fill up the first part - if neededBytes := int(w.driver.ChunkSize) - len(w.readyPart); neededBytes > 0 { - if len(p) >= neededBytes { - w.readyPart = append(w.readyPart, p[:neededBytes]...) - n += neededBytes - p = p[neededBytes:] - } else { - w.readyPart = append(w.readyPart, p...) - n += len(p) - p = nil - } - } - - if neededBytes := int(w.driver.ChunkSize) - len(w.pendingPart); neededBytes > 0 { - if len(p) >= neededBytes { - w.pendingPart = append(w.pendingPart, p[:neededBytes]...) - n += neededBytes - p = p[neededBytes:] - err := w.flushPart() - if err != nil { - w.size += int64(n) - return n, err - } - } else { - w.pendingPart = append(w.pendingPart, p...) - n += len(p) - p = nil - } - } - } - w.size += int64(n) - return n, nil -} - -func (w *writer) Size() int64 { - return w.size -} - -func (w *writer) Close() error { - if w.closed { - return fmt.Errorf("already closed") - } - w.closed = true - return w.flushPart() -} - -func (w *writer) Cancel() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } - w.cancelled = true - err := w.multi.Abort() - return err -} - -func (w *writer) Commit() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } else if w.cancelled { - return fmt.Errorf("already cancelled") - } - err := w.flushPart() - if err != nil { - return err - } - w.committed = true - err = w.multi.Complete(w.parts) - if err != nil { - w.multi.Abort() - return err - } - return nil -} - -// flushPart flushes buffers to write a part to S3. -// Only called by Write (with both buffers full) and Close/Commit (always) -func (w *writer) flushPart() error { - if len(w.readyPart) == 0 && len(w.pendingPart) == 0 { - // nothing to write - return nil - } - if len(w.pendingPart) < int(w.driver.ChunkSize) { - // closing with a small pending part - // combine ready and pending to avoid writing a small part - w.readyPart = append(w.readyPart, w.pendingPart...) - w.pendingPart = nil - } - - part, err := w.multi.PutPart(len(w.parts)+1, bytes.NewReader(w.readyPart)) - if err != nil { - return err - } - w.parts = append(w.parts, part) - w.readyPart = w.pendingPart - w.pendingPart = nil - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/s3-goamz/s3_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/s3-goamz/s3_test.go deleted file mode 100644 index 352ec3f5c6..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/s3-goamz/s3_test.go +++ /dev/null @@ -1,201 +0,0 @@ -package s3 - -import ( - "io/ioutil" - "os" - "strconv" - "testing" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - "github.com/docker/goamz/aws" - "github.com/docker/goamz/s3" - - "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -var s3DriverConstructor func(rootDirectory string, storageClass s3.StorageClass) (*Driver, error) -var skipS3 func() string - -func init() { - accessKey := os.Getenv("AWS_ACCESS_KEY") - secretKey := os.Getenv("AWS_SECRET_KEY") - bucket := os.Getenv("S3_BUCKET") - encrypt := os.Getenv("S3_ENCRYPT") - secure := os.Getenv("S3_SECURE") - v4auth := os.Getenv("S3_USE_V4_AUTH") - region := os.Getenv("AWS_REGION") - root, err := ioutil.TempDir("", "driver-") - if err != nil { - panic(err) - } - defer os.Remove(root) - - s3DriverConstructor = func(rootDirectory string, storageClass s3.StorageClass) (*Driver, error) { - encryptBool := false - if encrypt != "" { - encryptBool, err = strconv.ParseBool(encrypt) - if err != nil { - return nil, err - } - } - - secureBool := true - if secure != "" { - secureBool, err = strconv.ParseBool(secure) - if err != nil { - return nil, err - } - } - - v4AuthBool := false - if v4auth != "" { - v4AuthBool, err = strconv.ParseBool(v4auth) - if err != nil { - return nil, err - } - } - - parameters := DriverParameters{ - accessKey, - secretKey, - bucket, - aws.GetRegion(region), - encryptBool, - secureBool, - v4AuthBool, - minChunkSize, - rootDirectory, - storageClass, - driverName + "-test", - } - - return New(parameters) - } - - // Skip S3 storage driver tests if environment variable parameters are not provided - skipS3 = func() string { - if accessKey == "" || secretKey == "" || region == "" || bucket == "" || encrypt == "" { - return "Must set AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_REGION, S3_BUCKET, and S3_ENCRYPT to run S3 tests" - } - return "" - } - - testsuites.RegisterSuite(func() (storagedriver.StorageDriver, error) { - return s3DriverConstructor(root, s3.StandardStorage) - }, skipS3) -} - -func TestEmptyRootList(t *testing.T) { - if skipS3() != "" { - t.Skip(skipS3()) - } - - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - rootedDriver, err := s3DriverConstructor(validRoot, s3.StandardStorage) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - emptyRootDriver, err := s3DriverConstructor("", s3.StandardStorage) - if err != nil { - t.Fatalf("unexpected error creating empty root driver: %v", err) - } - - slashRootDriver, err := s3DriverConstructor("/", s3.StandardStorage) - if err != nil { - t.Fatalf("unexpected error creating slash root driver: %v", err) - } - - filename := "/test" - contents := []byte("contents") - ctx := context.Background() - err = rootedDriver.PutContent(ctx, filename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer rootedDriver.Delete(ctx, filename) - - keys, err := emptyRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } - - keys, err = slashRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } -} - -func TestStorageClass(t *testing.T) { - if skipS3() != "" { - t.Skip(skipS3()) - } - - rootDir, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(rootDir) - - standardDriver, err := s3DriverConstructor(rootDir, s3.StandardStorage) - if err != nil { - t.Fatalf("unexpected error creating driver with standard storage: %v", err) - } - - rrDriver, err := s3DriverConstructor(rootDir, s3.ReducedRedundancy) - if err != nil { - t.Fatalf("unexpected error creating driver with reduced redundancy storage: %v", err) - } - - standardFilename := "/test-standard" - rrFilename := "/test-rr" - contents := []byte("contents") - ctx := context.Background() - - err = standardDriver.PutContent(ctx, standardFilename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer standardDriver.Delete(ctx, standardFilename) - - err = rrDriver.PutContent(ctx, rrFilename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - defer rrDriver.Delete(ctx, rrFilename) - - standardDriverUnwrapped := standardDriver.Base.StorageDriver.(*driver) - resp, err := standardDriverUnwrapped.Bucket.GetResponse(standardDriverUnwrapped.s3Path(standardFilename)) - if err != nil { - t.Fatalf("unexpected error retrieving standard storage file: %v", err) - } - defer resp.Body.Close() - // Amazon only populates this header value for non-standard storage classes - if storageClass := resp.Header.Get("x-amz-storage-class"); storageClass != "" { - t.Fatalf("unexpected storage class for standard file: %v", storageClass) - } - - rrDriverUnwrapped := rrDriver.Base.StorageDriver.(*driver) - resp, err = rrDriverUnwrapped.Bucket.GetResponse(rrDriverUnwrapped.s3Path(rrFilename)) - if err != nil { - t.Fatalf("unexpected error retrieving reduced-redundancy storage file: %v", err) - } - defer resp.Body.Close() - if storageClass := resp.Header.Get("x-amz-storage-class"); storageClass != string(s3.ReducedRedundancy) { - t.Fatalf("unexpected storage class for reduced-redundancy file: %v", storageClass) - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/storagedriver.go b/vendor/github.com/docker/distribution/registry/storage/driver/storagedriver.go deleted file mode 100644 index 548a17d846..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/storagedriver.go +++ /dev/null @@ -1,165 +0,0 @@ -package driver - -import ( - "fmt" - "io" - "regexp" - "strconv" - "strings" - - "github.com/docker/distribution/context" -) - -// Version is a string representing the storage driver version, of the form -// Major.Minor. -// The registry must accept storage drivers with equal major version and greater -// minor version, but may not be compatible with older storage driver versions. -type Version string - -// Major returns the major (primary) component of a version. -func (version Version) Major() uint { - majorPart := strings.Split(string(version), ".")[0] - major, _ := strconv.ParseUint(majorPart, 10, 0) - return uint(major) -} - -// Minor returns the minor (secondary) component of a version. -func (version Version) Minor() uint { - minorPart := strings.Split(string(version), ".")[1] - minor, _ := strconv.ParseUint(minorPart, 10, 0) - return uint(minor) -} - -// CurrentVersion is the current storage driver Version. -const CurrentVersion Version = "0.1" - -// StorageDriver defines methods that a Storage Driver must implement for a -// filesystem-like key/value object storage. Storage Drivers are automatically -// registered via an internal registration mechanism, and generally created -// via the StorageDriverFactory interface (https://godoc.org/github.com/docker/distribution/registry/storage/driver/factory). -// Please see the aforementioned factory package for example code showing how to get an instance -// of a StorageDriver -type StorageDriver interface { - // Name returns the human-readable "name" of the driver, useful in error - // messages and logging. By convention, this will just be the registration - // name, but drivers may provide other information here. - Name() string - - // GetContent retrieves the content stored at "path" as a []byte. - // This should primarily be used for small objects. - GetContent(ctx context.Context, path string) ([]byte, error) - - // PutContent stores the []byte content at a location designated by "path". - // This should primarily be used for small objects. - PutContent(ctx context.Context, path string, content []byte) error - - // Reader retrieves an io.ReadCloser for the content stored at "path" - // with a given byte offset. - // May be used to resume reading a stream by providing a nonzero offset. - Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) - - // Writer returns a FileWriter which will store the content written to it - // at the location designated by "path" after the call to Commit. - Writer(ctx context.Context, path string, append bool) (FileWriter, error) - - // Stat retrieves the FileInfo for the given path, including the current - // size in bytes and the creation time. - Stat(ctx context.Context, path string) (FileInfo, error) - - // List returns a list of the objects that are direct descendants of the - //given path. - List(ctx context.Context, path string) ([]string, error) - - // Move moves an object stored at sourcePath to destPath, removing the - // original object. - // Note: This may be no more efficient than a copy followed by a delete for - // many implementations. - Move(ctx context.Context, sourcePath string, destPath string) error - - // Delete recursively deletes all objects stored at "path" and its subpaths. - Delete(ctx context.Context, path string) error - - // URLFor returns a URL which may be used to retrieve the content stored at - // the given path, possibly using the given options. - // May return an ErrUnsupportedMethod in certain StorageDriver - // implementations. - URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) -} - -// FileWriter provides an abstraction for an opened writable file-like object in -// the storage backend. The FileWriter must flush all content written to it on -// the call to Close, but is only required to make its content readable on a -// call to Commit. -type FileWriter interface { - io.WriteCloser - - // Size returns the number of bytes written to this FileWriter. - Size() int64 - - // Cancel removes any written content from this FileWriter. - Cancel() error - - // Commit flushes all content written to this FileWriter and makes it - // available for future calls to StorageDriver.GetContent and - // StorageDriver.Reader. - Commit() error -} - -// PathRegexp is the regular expression which each file path must match. A -// file path is absolute, beginning with a slash and containing a positive -// number of path components separated by slashes, where each component is -// restricted to alphanumeric characters or a period, underscore, or -// hyphen. -var PathRegexp = regexp.MustCompile(`^(/[A-Za-z0-9._-]+)+$`) - -// ErrUnsupportedMethod may be returned in the case where a StorageDriver implementation does not support an optional method. -type ErrUnsupportedMethod struct { - DriverName string -} - -func (err ErrUnsupportedMethod) Error() string { - return fmt.Sprintf("%s: unsupported method", err.DriverName) -} - -// PathNotFoundError is returned when operating on a nonexistent path. -type PathNotFoundError struct { - Path string - DriverName string -} - -func (err PathNotFoundError) Error() string { - return fmt.Sprintf("%s: Path not found: %s", err.DriverName, err.Path) -} - -// InvalidPathError is returned when the provided path is malformed. -type InvalidPathError struct { - Path string - DriverName string -} - -func (err InvalidPathError) Error() string { - return fmt.Sprintf("%s: invalid path: %s", err.DriverName, err.Path) -} - -// InvalidOffsetError is returned when attempting to read or write from an -// invalid offset. -type InvalidOffsetError struct { - Path string - Offset int64 - DriverName string -} - -func (err InvalidOffsetError) Error() string { - return fmt.Sprintf("%s: invalid offset: %d for path: %s", err.DriverName, err.Offset, err.Path) -} - -// Error is a catch-all error type which captures an error string and -// the driver type on which it occurred. -type Error struct { - DriverName string - Enclosed error -} - -func (err Error) Error() string { - return fmt.Sprintf("%s: %s", err.DriverName, err.Enclosed) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/swift/swift.go b/vendor/github.com/docker/distribution/registry/storage/driver/swift/swift.go deleted file mode 100644 index 913848282f..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/swift/swift.go +++ /dev/null @@ -1,826 +0,0 @@ -// Package swift provides a storagedriver.StorageDriver implementation to -// store blobs in Openstack Swift object storage. -// -// This package leverages the ncw/swift client library for interfacing with -// Swift. -// -// It supports both TempAuth authentication and Keystone authentication -// (up to version 3). -// -// As Swift has a limit on the size of a single uploaded object (by default -// this is 5GB), the driver makes use of the Swift Large Object Support -// (http://docs.openstack.org/developer/swift/overview_large_objects.html). -// Only one container is used for both manifests and data objects. Manifests -// are stored in the 'files' pseudo directory, data objects are stored under -// 'segments'. -package swift - -import ( - "bufio" - "bytes" - "crypto/rand" - "crypto/sha1" - "crypto/tls" - "encoding/hex" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "strconv" - "strings" - "time" - - "github.com/mitchellh/mapstructure" - "github.com/ncw/swift" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/base" - "github.com/docker/distribution/registry/storage/driver/factory" - "github.com/docker/distribution/version" -) - -const driverName = "swift" - -// defaultChunkSize defines the default size of a segment -const defaultChunkSize = 20 * 1024 * 1024 - -// minChunkSize defines the minimum size of a segment -const minChunkSize = 1 << 20 - -// contentType defines the Content-Type header associated with stored segments -const contentType = "application/octet-stream" - -// readAfterWriteTimeout defines the time we wait before an object appears after having been uploaded -var readAfterWriteTimeout = 15 * time.Second - -// readAfterWriteWait defines the time to sleep between two retries -var readAfterWriteWait = 200 * time.Millisecond - -// Parameters A struct that encapsulates all of the driver parameters after all values have been set -type Parameters struct { - Username string - Password string - AuthURL string - Tenant string - TenantID string - Domain string - DomainID string - TrustID string - Region string - Container string - Prefix string - InsecureSkipVerify bool - ChunkSize int - SecretKey string - AccessKey string - TempURLContainerKey bool - TempURLMethods []string -} - -// swiftInfo maps the JSON structure returned by Swift /info endpoint -type swiftInfo struct { - Swift struct { - Version string `mapstructure:"version"` - } - Tempurl struct { - Methods []string `mapstructure:"methods"` - } -} - -func init() { - factory.Register(driverName, &swiftDriverFactory{}) -} - -// swiftDriverFactory implements the factory.StorageDriverFactory interface -type swiftDriverFactory struct{} - -func (factory *swiftDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { - return FromParameters(parameters) -} - -type driver struct { - Conn swift.Connection - Container string - Prefix string - BulkDeleteSupport bool - ChunkSize int - SecretKey string - AccessKey string - TempURLContainerKey bool - TempURLMethods []string -} - -type baseEmbed struct { - base.Base -} - -// Driver is a storagedriver.StorageDriver implementation backed by Openstack Swift -// Objects are stored at absolute keys in the provided container. -type Driver struct { - baseEmbed -} - -// FromParameters constructs a new Driver with a given parameters map -// Required parameters: -// - username -// - password -// - authurl -// - container -func FromParameters(parameters map[string]interface{}) (*Driver, error) { - params := Parameters{ - ChunkSize: defaultChunkSize, - InsecureSkipVerify: false, - } - - if err := mapstructure.Decode(parameters, ¶ms); err != nil { - return nil, err - } - - if params.Username == "" { - return nil, fmt.Errorf("No username parameter provided") - } - - if params.Password == "" { - return nil, fmt.Errorf("No password parameter provided") - } - - if params.AuthURL == "" { - return nil, fmt.Errorf("No authurl parameter provided") - } - - if params.Container == "" { - return nil, fmt.Errorf("No container parameter provided") - } - - if params.ChunkSize < minChunkSize { - return nil, fmt.Errorf("The chunksize %#v parameter should be a number that is larger than or equal to %d", params.ChunkSize, minChunkSize) - } - - return New(params) -} - -// New constructs a new Driver with the given Openstack Swift credentials and container name -func New(params Parameters) (*Driver, error) { - transport := &http.Transport{ - Proxy: http.ProxyFromEnvironment, - MaxIdleConnsPerHost: 2048, - TLSClientConfig: &tls.Config{InsecureSkipVerify: params.InsecureSkipVerify}, - } - - ct := swift.Connection{ - UserName: params.Username, - ApiKey: params.Password, - AuthUrl: params.AuthURL, - Region: params.Region, - UserAgent: "distribution/" + version.Version, - Tenant: params.Tenant, - TenantId: params.TenantID, - Domain: params.Domain, - DomainId: params.DomainID, - TrustId: params.TrustID, - Transport: transport, - ConnectTimeout: 60 * time.Second, - Timeout: 15 * 60 * time.Second, - } - err := ct.Authenticate() - if err != nil { - return nil, fmt.Errorf("Swift authentication failed: %s", err) - } - - if _, _, err := ct.Container(params.Container); err == swift.ContainerNotFound { - if err := ct.ContainerCreate(params.Container, nil); err != nil { - return nil, fmt.Errorf("Failed to create container %s (%s)", params.Container, err) - } - } else if err != nil { - return nil, fmt.Errorf("Failed to retrieve info about container %s (%s)", params.Container, err) - } - - d := &driver{ - Conn: ct, - Container: params.Container, - Prefix: params.Prefix, - ChunkSize: params.ChunkSize, - TempURLMethods: make([]string, 0), - AccessKey: params.AccessKey, - } - - info := swiftInfo{} - if config, err := d.Conn.QueryInfo(); err == nil { - _, d.BulkDeleteSupport = config["bulk_delete"] - - if err := mapstructure.Decode(config, &info); err == nil { - d.TempURLContainerKey = info.Swift.Version >= "2.3.0" - d.TempURLMethods = info.Tempurl.Methods - } - } else { - d.TempURLContainerKey = params.TempURLContainerKey - d.TempURLMethods = params.TempURLMethods - } - - if len(d.TempURLMethods) > 0 { - secretKey := params.SecretKey - if secretKey == "" { - secretKey, _ = generateSecret() - } - - // Since Swift 2.2.2, we can now set secret keys on containers - // in addition to the account secret keys. Use them in preference. - if d.TempURLContainerKey { - _, containerHeaders, err := d.Conn.Container(d.Container) - if err != nil { - return nil, fmt.Errorf("Failed to fetch container info %s (%s)", d.Container, err) - } - - d.SecretKey = containerHeaders["X-Container-Meta-Temp-Url-Key"] - if d.SecretKey == "" || (params.SecretKey != "" && d.SecretKey != params.SecretKey) { - m := swift.Metadata{} - m["temp-url-key"] = secretKey - if d.Conn.ContainerUpdate(d.Container, m.ContainerHeaders()); err == nil { - d.SecretKey = secretKey - } - } - } else { - // Use the account secret key - _, accountHeaders, err := d.Conn.Account() - if err != nil { - return nil, fmt.Errorf("Failed to fetch account info (%s)", err) - } - - d.SecretKey = accountHeaders["X-Account-Meta-Temp-Url-Key"] - if d.SecretKey == "" || (params.SecretKey != "" && d.SecretKey != params.SecretKey) { - m := swift.Metadata{} - m["temp-url-key"] = secretKey - if err := d.Conn.AccountUpdate(m.AccountHeaders()); err == nil { - d.SecretKey = secretKey - } - } - } - } - - return &Driver{ - baseEmbed: baseEmbed{ - Base: base.Base{ - StorageDriver: d, - }, - }, - }, nil -} - -// Implement the storagedriver.StorageDriver interface - -func (d *driver) Name() string { - return driverName -} - -// GetContent retrieves the content stored at "path" as a []byte. -func (d *driver) GetContent(ctx context.Context, path string) ([]byte, error) { - content, err := d.Conn.ObjectGetBytes(d.Container, d.swiftPath(path)) - if err == swift.ObjectNotFound { - return nil, storagedriver.PathNotFoundError{Path: path} - } - return content, err -} - -// PutContent stores the []byte content at a location designated by "path". -func (d *driver) PutContent(ctx context.Context, path string, contents []byte) error { - err := d.Conn.ObjectPutBytes(d.Container, d.swiftPath(path), contents, contentType) - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - return err -} - -// Reader retrieves an io.ReadCloser for the content stored at "path" with a -// given byte offset. -func (d *driver) Reader(ctx context.Context, path string, offset int64) (io.ReadCloser, error) { - headers := make(swift.Headers) - headers["Range"] = "bytes=" + strconv.FormatInt(offset, 10) + "-" - - file, _, err := d.Conn.ObjectOpen(d.Container, d.swiftPath(path), false, headers) - if err == swift.ObjectNotFound { - return nil, storagedriver.PathNotFoundError{Path: path} - } - if swiftErr, ok := err.(*swift.Error); ok && swiftErr.StatusCode == http.StatusRequestedRangeNotSatisfiable { - return ioutil.NopCloser(bytes.NewReader(nil)), nil - } - return file, err -} - -// Writer returns a FileWriter which will store the content written to it -// at the location designated by "path" after the call to Commit. -func (d *driver) Writer(ctx context.Context, path string, append bool) (storagedriver.FileWriter, error) { - var ( - segments []swift.Object - segmentsPath string - err error - ) - - if !append { - segmentsPath, err = d.swiftSegmentPath(path) - if err != nil { - return nil, err - } - } else { - info, headers, err := d.Conn.Object(d.Container, d.swiftPath(path)) - if err == swift.ObjectNotFound { - return nil, storagedriver.PathNotFoundError{Path: path} - } else if err != nil { - return nil, err - } - manifest, ok := headers["X-Object-Manifest"] - if !ok { - segmentsPath, err = d.swiftSegmentPath(path) - if err != nil { - return nil, err - } - if err := d.Conn.ObjectMove(d.Container, d.swiftPath(path), d.Container, getSegmentPath(segmentsPath, len(segments))); err != nil { - return nil, err - } - segments = []swift.Object{info} - } else { - _, segmentsPath = parseManifest(manifest) - if segments, err = d.getAllSegments(segmentsPath); err != nil { - return nil, err - } - } - } - - return d.newWriter(path, segmentsPath, segments), nil -} - -// Stat retrieves the FileInfo for the given path, including the current size -// in bytes and the creation time. -func (d *driver) Stat(ctx context.Context, path string) (storagedriver.FileInfo, error) { - swiftPath := d.swiftPath(path) - opts := &swift.ObjectsOpts{ - Prefix: swiftPath, - Delimiter: '/', - } - - objects, err := d.Conn.ObjectsAll(d.Container, opts) - if err != nil { - if err == swift.ContainerNotFound { - return nil, storagedriver.PathNotFoundError{Path: path} - } - return nil, err - } - - fi := storagedriver.FileInfoFields{ - Path: strings.TrimPrefix(strings.TrimSuffix(swiftPath, "/"), d.swiftPath("/")), - } - - for _, obj := range objects { - if obj.PseudoDirectory && obj.Name == swiftPath+"/" { - fi.IsDir = true - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil - } else if obj.Name == swiftPath { - // The file exists. But on Swift 1.12, the 'bytes' field is always 0 so - // we need to do a separate HEAD request. - break - } - } - - //Don't trust an empty `objects` slice. A container listing can be - //outdated. For files, we can make a HEAD request on the object which - //reports existence (at least) much more reliably. - info, _, err := d.Conn.Object(d.Container, swiftPath) - if err != nil { - if err == swift.ObjectNotFound { - return nil, storagedriver.PathNotFoundError{Path: path} - } - return nil, err - } - fi.IsDir = false - fi.Size = info.Bytes - fi.ModTime = info.LastModified - return storagedriver.FileInfoInternal{FileInfoFields: fi}, nil -} - -// List returns a list of the objects that are direct descendants of the given path. -func (d *driver) List(ctx context.Context, path string) ([]string, error) { - var files []string - - prefix := d.swiftPath(path) - if prefix != "" { - prefix += "/" - } - - opts := &swift.ObjectsOpts{ - Prefix: prefix, - Delimiter: '/', - } - - objects, err := d.Conn.ObjectsAll(d.Container, opts) - for _, obj := range objects { - files = append(files, strings.TrimPrefix(strings.TrimSuffix(obj.Name, "/"), d.swiftPath("/"))) - } - - if err == swift.ContainerNotFound || (len(objects) == 0 && path != "/") { - return files, storagedriver.PathNotFoundError{Path: path} - } - return files, err -} - -// Move moves an object stored at sourcePath to destPath, removing the original -// object. -func (d *driver) Move(ctx context.Context, sourcePath string, destPath string) error { - _, headers, err := d.Conn.Object(d.Container, d.swiftPath(sourcePath)) - if err == nil { - if manifest, ok := headers["X-Object-Manifest"]; ok { - if err = d.createManifest(destPath, manifest); err != nil { - return err - } - err = d.Conn.ObjectDelete(d.Container, d.swiftPath(sourcePath)) - } else { - err = d.Conn.ObjectMove(d.Container, d.swiftPath(sourcePath), d.Container, d.swiftPath(destPath)) - } - } - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: sourcePath} - } - return err -} - -// Delete recursively deletes all objects stored at "path" and its subpaths. -func (d *driver) Delete(ctx context.Context, path string) error { - opts := swift.ObjectsOpts{ - Prefix: d.swiftPath(path) + "/", - } - - objects, err := d.Conn.ObjectsAll(d.Container, &opts) - if err != nil { - if err == swift.ContainerNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - return err - } - - for _, obj := range objects { - if obj.PseudoDirectory { - continue - } - if _, headers, err := d.Conn.Object(d.Container, obj.Name); err == nil { - manifest, ok := headers["X-Object-Manifest"] - if ok { - _, prefix := parseManifest(manifest) - segments, err := d.getAllSegments(prefix) - if err != nil { - return err - } - objects = append(objects, segments...) - } - } else { - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: obj.Name} - } - return err - } - } - - if d.BulkDeleteSupport && len(objects) > 0 { - filenames := make([]string, len(objects)) - for i, obj := range objects { - filenames[i] = obj.Name - } - _, err = d.Conn.BulkDelete(d.Container, filenames) - // Don't fail on ObjectNotFound because eventual consistency - // makes this situation normal. - if err != nil && err != swift.Forbidden && err != swift.ObjectNotFound { - if err == swift.ContainerNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - return err - } - } else { - for _, obj := range objects { - if err := d.Conn.ObjectDelete(d.Container, obj.Name); err != nil { - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: obj.Name} - } - return err - } - } - } - - _, _, err = d.Conn.Object(d.Container, d.swiftPath(path)) - if err == nil { - if err := d.Conn.ObjectDelete(d.Container, d.swiftPath(path)); err != nil { - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - return err - } - } else if err == swift.ObjectNotFound { - if len(objects) == 0 { - return storagedriver.PathNotFoundError{Path: path} - } - } else { - return err - } - return nil -} - -// URLFor returns a URL which may be used to retrieve the content stored at the given path. -func (d *driver) URLFor(ctx context.Context, path string, options map[string]interface{}) (string, error) { - if d.SecretKey == "" { - return "", storagedriver.ErrUnsupportedMethod{} - } - - methodString := "GET" - method, ok := options["method"] - if ok { - if methodString, ok = method.(string); !ok { - return "", storagedriver.ErrUnsupportedMethod{} - } - } - - if methodString == "HEAD" { - // A "HEAD" request on a temporary URL is allowed if the - // signature was generated with "GET", "POST" or "PUT" - methodString = "GET" - } - - supported := false - for _, method := range d.TempURLMethods { - if method == methodString { - supported = true - break - } - } - - if !supported { - return "", storagedriver.ErrUnsupportedMethod{} - } - - expiresTime := time.Now().Add(20 * time.Minute) - expires, ok := options["expiry"] - if ok { - et, ok := expires.(time.Time) - if ok { - expiresTime = et - } - } - - tempURL := d.Conn.ObjectTempUrl(d.Container, d.swiftPath(path), d.SecretKey, methodString, expiresTime) - - if d.AccessKey != "" { - // On HP Cloud, the signature must be in the form of tenant_id:access_key:signature - url, _ := url.Parse(tempURL) - query := url.Query() - query.Set("temp_url_sig", fmt.Sprintf("%s:%s:%s", d.Conn.TenantId, d.AccessKey, query.Get("temp_url_sig"))) - url.RawQuery = query.Encode() - tempURL = url.String() - } - - return tempURL, nil -} - -func (d *driver) swiftPath(path string) string { - return strings.TrimLeft(strings.TrimRight(d.Prefix+"/files"+path, "/"), "/") -} - -func (d *driver) swiftSegmentPath(path string) (string, error) { - checksum := sha1.New() - random := make([]byte, 32) - if _, err := rand.Read(random); err != nil { - return "", err - } - path = hex.EncodeToString(checksum.Sum(append([]byte(path), random...))) - return strings.TrimLeft(strings.TrimRight(d.Prefix+"/segments/"+path[0:3]+"/"+path[3:], "/"), "/"), nil -} - -func (d *driver) getAllSegments(path string) ([]swift.Object, error) { - //a simple container listing works 99.9% of the time - segments, err := d.Conn.ObjectsAll(d.Container, &swift.ObjectsOpts{Prefix: path}) - if err != nil { - if err == swift.ContainerNotFound { - return nil, storagedriver.PathNotFoundError{Path: path} - } - return nil, err - } - - //build a lookup table by object name - hasObjectName := make(map[string]struct{}) - for _, segment := range segments { - hasObjectName[segment.Name] = struct{}{} - } - - //The container listing might be outdated (i.e. not contain all existing - //segment objects yet) because of temporary inconsistency (Swift is only - //eventually consistent!). Check its completeness. - segmentNumber := 0 - for { - segmentNumber++ - segmentPath := getSegmentPath(path, segmentNumber) - - if _, seen := hasObjectName[segmentPath]; seen { - continue - } - - //This segment is missing in the container listing. Use a more reliable - //request to check its existence. (HEAD requests on segments are - //guaranteed to return the correct metadata, except for the pathological - //case of an outage of large parts of the Swift cluster or its network, - //since every segment is only written once.) - segment, _, err := d.Conn.Object(d.Container, segmentPath) - switch err { - case nil: - //found new segment -> keep going, more might be missing - segments = append(segments, segment) - continue - case swift.ObjectNotFound: - //This segment is missing. Since we upload segments sequentially, - //there won't be any more segments after it. - return segments, nil - default: - return nil, err //unexpected error - } - } -} - -func (d *driver) createManifest(path string, segments string) error { - headers := make(swift.Headers) - headers["X-Object-Manifest"] = segments - manifest, err := d.Conn.ObjectCreate(d.Container, d.swiftPath(path), false, "", contentType, headers) - if err != nil { - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - return err - } - if err := manifest.Close(); err != nil { - if err == swift.ObjectNotFound { - return storagedriver.PathNotFoundError{Path: path} - } - return err - } - return nil -} - -func parseManifest(manifest string) (container string, prefix string) { - components := strings.SplitN(manifest, "/", 2) - container = components[0] - if len(components) > 1 { - prefix = components[1] - } - return container, prefix -} - -func generateSecret() (string, error) { - var secretBytes [32]byte - if _, err := rand.Read(secretBytes[:]); err != nil { - return "", fmt.Errorf("could not generate random bytes for Swift secret key: %v", err) - } - return hex.EncodeToString(secretBytes[:]), nil -} - -func getSegmentPath(segmentsPath string, partNumber int) string { - return fmt.Sprintf("%s/%016d", segmentsPath, partNumber) -} - -type writer struct { - driver *driver - path string - segmentsPath string - size int64 - bw *bufio.Writer - closed bool - committed bool - cancelled bool -} - -func (d *driver) newWriter(path, segmentsPath string, segments []swift.Object) storagedriver.FileWriter { - var size int64 - for _, segment := range segments { - size += segment.Bytes - } - return &writer{ - driver: d, - path: path, - segmentsPath: segmentsPath, - size: size, - bw: bufio.NewWriterSize(&segmentWriter{ - conn: d.Conn, - container: d.Container, - segmentsPath: segmentsPath, - segmentNumber: len(segments) + 1, - maxChunkSize: d.ChunkSize, - }, d.ChunkSize), - } -} - -func (w *writer) Write(p []byte) (int, error) { - if w.closed { - return 0, fmt.Errorf("already closed") - } else if w.committed { - return 0, fmt.Errorf("already committed") - } else if w.cancelled { - return 0, fmt.Errorf("already cancelled") - } - - n, err := w.bw.Write(p) - w.size += int64(n) - return n, err -} - -func (w *writer) Size() int64 { - return w.size -} - -func (w *writer) Close() error { - if w.closed { - return fmt.Errorf("already closed") - } - - if err := w.bw.Flush(); err != nil { - return err - } - - if !w.committed && !w.cancelled { - if err := w.driver.createManifest(w.path, w.driver.Container+"/"+w.segmentsPath); err != nil { - return err - } - } - w.closed = true - - return nil -} - -func (w *writer) Cancel() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } - w.cancelled = true - return w.driver.Delete(context.Background(), w.path) -} - -func (w *writer) Commit() error { - if w.closed { - return fmt.Errorf("already closed") - } else if w.committed { - return fmt.Errorf("already committed") - } else if w.cancelled { - return fmt.Errorf("already cancelled") - } - - if err := w.bw.Flush(); err != nil { - return err - } - - if err := w.driver.createManifest(w.path, w.driver.Container+"/"+w.segmentsPath); err != nil { - return err - } - - w.committed = true - - var err error - waitingTime := readAfterWriteWait - endTime := time.Now().Add(readAfterWriteTimeout) - for { - var info swift.Object - if info, _, err = w.driver.Conn.Object(w.driver.Container, w.driver.swiftPath(w.path)); err == nil { - if info.Bytes == w.size { - break - } - err = fmt.Errorf("Timeout expired while waiting for segments of %s to show up", w.path) - } - if time.Now().Add(waitingTime).After(endTime) { - break - } - time.Sleep(waitingTime) - waitingTime *= 2 - } - - return err -} - -type segmentWriter struct { - conn swift.Connection - container string - segmentsPath string - segmentNumber int - maxChunkSize int -} - -func (sw *segmentWriter) Write(p []byte) (int, error) { - n := 0 - for offset := 0; offset < len(p); offset += sw.maxChunkSize { - chunkSize := sw.maxChunkSize - if offset+chunkSize > len(p) { - chunkSize = len(p) - offset - } - _, err := sw.conn.ObjectPut(sw.container, getSegmentPath(sw.segmentsPath, sw.segmentNumber), bytes.NewReader(p[offset:offset+chunkSize]), false, "", contentType, nil) - if err != nil { - return n, err - } - - sw.segmentNumber++ - n += chunkSize - } - - return n, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/swift/swift_test.go b/vendor/github.com/docker/distribution/registry/storage/driver/swift/swift_test.go deleted file mode 100644 index b2ff6001ab..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/swift/swift_test.go +++ /dev/null @@ -1,171 +0,0 @@ -package swift - -import ( - "io/ioutil" - "os" - "strconv" - "strings" - "testing" - - "github.com/ncw/swift/swifttest" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/testsuites" - - "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -var swiftDriverConstructor func(prefix string) (*Driver, error) - -func init() { - var ( - username string - password string - authURL string - tenant string - tenantID string - domain string - domainID string - trustID string - container string - region string - insecureSkipVerify bool - secretKey string - accessKey string - containerKey bool - tempURLMethods []string - - swiftServer *swifttest.SwiftServer - err error - ) - username = os.Getenv("SWIFT_USERNAME") - password = os.Getenv("SWIFT_PASSWORD") - authURL = os.Getenv("SWIFT_AUTH_URL") - tenant = os.Getenv("SWIFT_TENANT_NAME") - tenantID = os.Getenv("SWIFT_TENANT_ID") - domain = os.Getenv("SWIFT_DOMAIN_NAME") - domainID = os.Getenv("SWIFT_DOMAIN_ID") - trustID = os.Getenv("SWIFT_TRUST_ID") - container = os.Getenv("SWIFT_CONTAINER_NAME") - region = os.Getenv("SWIFT_REGION_NAME") - insecureSkipVerify, _ = strconv.ParseBool(os.Getenv("SWIFT_INSECURESKIPVERIFY")) - secretKey = os.Getenv("SWIFT_SECRET_KEY") - accessKey = os.Getenv("SWIFT_ACCESS_KEY") - containerKey, _ = strconv.ParseBool(os.Getenv("SWIFT_TEMPURL_CONTAINERKEY")) - tempURLMethods = strings.Split(os.Getenv("SWIFT_TEMPURL_METHODS"), ",") - - if username == "" || password == "" || authURL == "" || container == "" { - if swiftServer, err = swifttest.NewSwiftServer("localhost"); err != nil { - panic(err) - } - username = "swifttest" - password = "swifttest" - authURL = swiftServer.AuthURL - container = "test" - } - - prefix, err := ioutil.TempDir("", "driver-") - if err != nil { - panic(err) - } - defer os.Remove(prefix) - - swiftDriverConstructor = func(root string) (*Driver, error) { - parameters := Parameters{ - username, - password, - authURL, - tenant, - tenantID, - domain, - domainID, - trustID, - region, - container, - root, - insecureSkipVerify, - defaultChunkSize, - secretKey, - accessKey, - containerKey, - tempURLMethods, - } - - return New(parameters) - } - - driverConstructor := func() (storagedriver.StorageDriver, error) { - return swiftDriverConstructor(prefix) - } - - testsuites.RegisterSuite(driverConstructor, testsuites.NeverSkip) -} - -func TestEmptyRootList(t *testing.T) { - validRoot, err := ioutil.TempDir("", "driver-") - if err != nil { - t.Fatalf("unexpected error creating temporary directory: %v", err) - } - defer os.Remove(validRoot) - - rootedDriver, err := swiftDriverConstructor(validRoot) - if err != nil { - t.Fatalf("unexpected error creating rooted driver: %v", err) - } - - emptyRootDriver, err := swiftDriverConstructor("") - if err != nil { - t.Fatalf("unexpected error creating empty root driver: %v", err) - } - - slashRootDriver, err := swiftDriverConstructor("/") - if err != nil { - t.Fatalf("unexpected error creating slash root driver: %v", err) - } - - filename := "/test" - contents := []byte("contents") - ctx := context.Background() - err = rootedDriver.PutContent(ctx, filename, contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - - keys, err := emptyRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } - - keys, err = slashRootDriver.List(ctx, "/") - for _, path := range keys { - if !storagedriver.PathRegexp.MatchString(path) { - t.Fatalf("unexpected string in path: %q != %q", path, storagedriver.PathRegexp) - } - } - - // Create an object with a path nested under the existing object - err = rootedDriver.PutContent(ctx, filename+"/file1", contents) - if err != nil { - t.Fatalf("unexpected error creating content: %v", err) - } - - err = rootedDriver.Delete(ctx, filename) - if err != nil { - t.Fatalf("failed to delete: %v", err) - } - - keys, err = rootedDriver.List(ctx, "/") - if err != nil { - t.Fatalf("failed to list objects after deletion: %v", err) - } - - if len(keys) != 0 { - t.Fatal("delete did not remove nested objects") - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/driver/testsuites/testsuites.go b/vendor/github.com/docker/distribution/registry/storage/driver/testsuites/testsuites.go deleted file mode 100644 index de8e31432c..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/driver/testsuites/testsuites.go +++ /dev/null @@ -1,1229 +0,0 @@ -package testsuites - -import ( - "bytes" - "crypto/sha1" - "io" - "io/ioutil" - "math/rand" - "net/http" - "os" - "path" - "sort" - "strings" - "sync" - "testing" - "time" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "gopkg.in/check.v1" -) - -// Test hooks up gocheck into the "go test" runner. -func Test(t *testing.T) { check.TestingT(t) } - -// RegisterSuite registers an in-process storage driver test suite with -// the go test runner. -func RegisterSuite(driverConstructor DriverConstructor, skipCheck SkipCheck) { - check.Suite(&DriverSuite{ - Constructor: driverConstructor, - SkipCheck: skipCheck, - ctx: context.Background(), - }) -} - -// SkipCheck is a function used to determine if a test suite should be skipped. -// If a SkipCheck returns a non-empty skip reason, the suite is skipped with -// the given reason. -type SkipCheck func() (reason string) - -// NeverSkip is a default SkipCheck which never skips the suite. -var NeverSkip SkipCheck = func() string { return "" } - -// DriverConstructor is a function which returns a new -// storagedriver.StorageDriver. -type DriverConstructor func() (storagedriver.StorageDriver, error) - -// DriverTeardown is a function which cleans up a suite's -// storagedriver.StorageDriver. -type DriverTeardown func() error - -// DriverSuite is a gocheck test suite designed to test a -// storagedriver.StorageDriver. The intended way to create a DriverSuite is -// with RegisterSuite. -type DriverSuite struct { - Constructor DriverConstructor - Teardown DriverTeardown - SkipCheck - storagedriver.StorageDriver - ctx context.Context -} - -// SetUpSuite sets up the gocheck test suite. -func (suite *DriverSuite) SetUpSuite(c *check.C) { - if reason := suite.SkipCheck(); reason != "" { - c.Skip(reason) - } - d, err := suite.Constructor() - c.Assert(err, check.IsNil) - suite.StorageDriver = d -} - -// TearDownSuite tears down the gocheck test suite. -func (suite *DriverSuite) TearDownSuite(c *check.C) { - if suite.Teardown != nil { - err := suite.Teardown() - c.Assert(err, check.IsNil) - } -} - -// TearDownTest tears down the gocheck test. -// This causes the suite to abort if any files are left around in the storage -// driver. -func (suite *DriverSuite) TearDownTest(c *check.C) { - files, _ := suite.StorageDriver.List(suite.ctx, "/") - if len(files) > 0 { - c.Fatalf("Storage driver did not clean up properly. Offending files: %#v", files) - } -} - -// TestRootExists ensures that all storage drivers have a root path by default. -func (suite *DriverSuite) TestRootExists(c *check.C) { - _, err := suite.StorageDriver.List(suite.ctx, "/") - if err != nil { - c.Fatalf(`the root path "/" should always exist: %v`, err) - } -} - -// TestValidPaths checks that various valid file paths are accepted by the -// storage driver. -func (suite *DriverSuite) TestValidPaths(c *check.C) { - contents := randomContents(64) - validFiles := []string{ - "/a", - "/2", - "/aa", - "/a.a", - "/0-9/abcdefg", - "/abcdefg/z.75", - "/abc/1.2.3.4.5-6_zyx/123.z/4", - "/docker/docker-registry", - "/123.abc", - "/abc./abc", - "/.abc", - "/a--b", - "/a-.b", - "/_.abc", - "/Docker/docker-registry", - "/Abc/Cba"} - - for _, filename := range validFiles { - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - defer suite.deletePath(c, firstPart(filename)) - c.Assert(err, check.IsNil) - - received, err := suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.IsNil) - c.Assert(received, check.DeepEquals, contents) - } -} - -func (suite *DriverSuite) deletePath(c *check.C, path string) { - for tries := 2; tries > 0; tries-- { - err := suite.StorageDriver.Delete(suite.ctx, path) - if _, ok := err.(storagedriver.PathNotFoundError); ok { - err = nil - } - c.Assert(err, check.IsNil) - paths, err := suite.StorageDriver.List(suite.ctx, path) - if len(paths) == 0 { - break - } - time.Sleep(time.Second * 2) - } -} - -// TestInvalidPaths checks that various invalid file paths are rejected by the -// storage driver. -func (suite *DriverSuite) TestInvalidPaths(c *check.C) { - contents := randomContents(64) - invalidFiles := []string{ - "", - "/", - "abc", - "123.abc", - "//bcd", - "/abc_123/"} - - for _, filename := range invalidFiles { - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - // only delete if file was successfully written - if err == nil { - defer suite.deletePath(c, firstPart(filename)) - } - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.InvalidPathError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - _, err = suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.InvalidPathError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - } -} - -// TestWriteRead1 tests a simple write-read workflow. -func (suite *DriverSuite) TestWriteRead1(c *check.C) { - filename := randomPath(32) - contents := []byte("a") - suite.writeReadCompare(c, filename, contents) -} - -// TestWriteRead2 tests a simple write-read workflow with unicode data. -func (suite *DriverSuite) TestWriteRead2(c *check.C) { - filename := randomPath(32) - contents := []byte("\xc3\x9f") - suite.writeReadCompare(c, filename, contents) -} - -// TestWriteRead3 tests a simple write-read workflow with a small string. -func (suite *DriverSuite) TestWriteRead3(c *check.C) { - filename := randomPath(32) - contents := randomContents(32) - suite.writeReadCompare(c, filename, contents) -} - -// TestWriteRead4 tests a simple write-read workflow with 1MB of data. -func (suite *DriverSuite) TestWriteRead4(c *check.C) { - filename := randomPath(32) - contents := randomContents(1024 * 1024) - suite.writeReadCompare(c, filename, contents) -} - -// TestWriteReadNonUTF8 tests that non-utf8 data may be written to the storage -// driver safely. -func (suite *DriverSuite) TestWriteReadNonUTF8(c *check.C) { - filename := randomPath(32) - contents := []byte{0x80, 0x80, 0x80, 0x80} - suite.writeReadCompare(c, filename, contents) -} - -// TestTruncate tests that putting smaller contents than an original file does -// remove the excess contents. -func (suite *DriverSuite) TestTruncate(c *check.C) { - filename := randomPath(32) - contents := randomContents(1024 * 1024) - suite.writeReadCompare(c, filename, contents) - - contents = randomContents(1024) - suite.writeReadCompare(c, filename, contents) -} - -// TestReadNonexistent tests reading content from an empty path. -func (suite *DriverSuite) TestReadNonexistent(c *check.C) { - filename := randomPath(32) - _, err := suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestWriteReadStreams1 tests a simple write-read streaming workflow. -func (suite *DriverSuite) TestWriteReadStreams1(c *check.C) { - filename := randomPath(32) - contents := []byte("a") - suite.writeReadCompareStreams(c, filename, contents) -} - -// TestWriteReadStreams2 tests a simple write-read streaming workflow with -// unicode data. -func (suite *DriverSuite) TestWriteReadStreams2(c *check.C) { - filename := randomPath(32) - contents := []byte("\xc3\x9f") - suite.writeReadCompareStreams(c, filename, contents) -} - -// TestWriteReadStreams3 tests a simple write-read streaming workflow with a -// small amount of data. -func (suite *DriverSuite) TestWriteReadStreams3(c *check.C) { - filename := randomPath(32) - contents := randomContents(32) - suite.writeReadCompareStreams(c, filename, contents) -} - -// TestWriteReadStreams4 tests a simple write-read streaming workflow with 1MB -// of data. -func (suite *DriverSuite) TestWriteReadStreams4(c *check.C) { - filename := randomPath(32) - contents := randomContents(1024 * 1024) - suite.writeReadCompareStreams(c, filename, contents) -} - -// TestWriteReadStreamsNonUTF8 tests that non-utf8 data may be written to the -// storage driver safely. -func (suite *DriverSuite) TestWriteReadStreamsNonUTF8(c *check.C) { - filename := randomPath(32) - contents := []byte{0x80, 0x80, 0x80, 0x80} - suite.writeReadCompareStreams(c, filename, contents) -} - -// TestWriteReadLargeStreams tests that a 5GB file may be written to the storage -// driver safely. -func (suite *DriverSuite) TestWriteReadLargeStreams(c *check.C) { - if testing.Short() { - c.Skip("Skipping test in short mode") - } - - filename := randomPath(32) - defer suite.deletePath(c, firstPart(filename)) - - checksum := sha1.New() - var fileSize int64 = 5 * 1024 * 1024 * 1024 - - contents := newRandReader(fileSize) - - writer, err := suite.StorageDriver.Writer(suite.ctx, filename, false) - c.Assert(err, check.IsNil) - written, err := io.Copy(writer, io.TeeReader(contents, checksum)) - c.Assert(err, check.IsNil) - c.Assert(written, check.Equals, fileSize) - - err = writer.Commit() - c.Assert(err, check.IsNil) - err = writer.Close() - c.Assert(err, check.IsNil) - - reader, err := suite.StorageDriver.Reader(suite.ctx, filename, 0) - c.Assert(err, check.IsNil) - defer reader.Close() - - writtenChecksum := sha1.New() - io.Copy(writtenChecksum, reader) - - c.Assert(writtenChecksum.Sum(nil), check.DeepEquals, checksum.Sum(nil)) -} - -// TestReaderWithOffset tests that the appropriate data is streamed when -// reading with a given offset. -func (suite *DriverSuite) TestReaderWithOffset(c *check.C) { - filename := randomPath(32) - defer suite.deletePath(c, firstPart(filename)) - - chunkSize := int64(32) - - contentsChunk1 := randomContents(chunkSize) - contentsChunk2 := randomContents(chunkSize) - contentsChunk3 := randomContents(chunkSize) - - err := suite.StorageDriver.PutContent(suite.ctx, filename, append(append(contentsChunk1, contentsChunk2...), contentsChunk3...)) - c.Assert(err, check.IsNil) - - reader, err := suite.StorageDriver.Reader(suite.ctx, filename, 0) - c.Assert(err, check.IsNil) - defer reader.Close() - - readContents, err := ioutil.ReadAll(reader) - c.Assert(err, check.IsNil) - - c.Assert(readContents, check.DeepEquals, append(append(contentsChunk1, contentsChunk2...), contentsChunk3...)) - - reader, err = suite.StorageDriver.Reader(suite.ctx, filename, chunkSize) - c.Assert(err, check.IsNil) - defer reader.Close() - - readContents, err = ioutil.ReadAll(reader) - c.Assert(err, check.IsNil) - - c.Assert(readContents, check.DeepEquals, append(contentsChunk2, contentsChunk3...)) - - reader, err = suite.StorageDriver.Reader(suite.ctx, filename, chunkSize*2) - c.Assert(err, check.IsNil) - defer reader.Close() - - readContents, err = ioutil.ReadAll(reader) - c.Assert(err, check.IsNil) - c.Assert(readContents, check.DeepEquals, contentsChunk3) - - // Ensure we get invalid offest for negative offsets. - reader, err = suite.StorageDriver.Reader(suite.ctx, filename, -1) - c.Assert(err, check.FitsTypeOf, storagedriver.InvalidOffsetError{}) - c.Assert(err.(storagedriver.InvalidOffsetError).Offset, check.Equals, int64(-1)) - c.Assert(err.(storagedriver.InvalidOffsetError).Path, check.Equals, filename) - c.Assert(reader, check.IsNil) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - // Read past the end of the content and make sure we get a reader that - // returns 0 bytes and io.EOF - reader, err = suite.StorageDriver.Reader(suite.ctx, filename, chunkSize*3) - c.Assert(err, check.IsNil) - defer reader.Close() - - buf := make([]byte, chunkSize) - n, err := reader.Read(buf) - c.Assert(err, check.Equals, io.EOF) - c.Assert(n, check.Equals, 0) - - // Check the N-1 boundary condition, ensuring we get 1 byte then io.EOF. - reader, err = suite.StorageDriver.Reader(suite.ctx, filename, chunkSize*3-1) - c.Assert(err, check.IsNil) - defer reader.Close() - - n, err = reader.Read(buf) - c.Assert(n, check.Equals, 1) - - // We don't care whether the io.EOF comes on the this read or the first - // zero read, but the only error acceptable here is io.EOF. - if err != nil { - c.Assert(err, check.Equals, io.EOF) - } - - // Any more reads should result in zero bytes and io.EOF - n, err = reader.Read(buf) - c.Assert(n, check.Equals, 0) - c.Assert(err, check.Equals, io.EOF) -} - -// TestContinueStreamAppendLarge tests that a stream write can be appended to without -// corrupting the data with a large chunk size. -func (suite *DriverSuite) TestContinueStreamAppendLarge(c *check.C) { - suite.testContinueStreamAppend(c, int64(10*1024*1024)) -} - -// TestContinueStreamAppendSmall is the same as TestContinueStreamAppendLarge, but only -// with a tiny chunk size in order to test corner cases for some cloud storage drivers. -func (suite *DriverSuite) TestContinueStreamAppendSmall(c *check.C) { - suite.testContinueStreamAppend(c, int64(32)) -} - -func (suite *DriverSuite) testContinueStreamAppend(c *check.C, chunkSize int64) { - filename := randomPath(32) - defer suite.deletePath(c, firstPart(filename)) - - contentsChunk1 := randomContents(chunkSize) - contentsChunk2 := randomContents(chunkSize) - contentsChunk3 := randomContents(chunkSize) - - fullContents := append(append(contentsChunk1, contentsChunk2...), contentsChunk3...) - - writer, err := suite.StorageDriver.Writer(suite.ctx, filename, false) - c.Assert(err, check.IsNil) - nn, err := io.Copy(writer, bytes.NewReader(contentsChunk1)) - c.Assert(err, check.IsNil) - c.Assert(nn, check.Equals, int64(len(contentsChunk1))) - - err = writer.Close() - c.Assert(err, check.IsNil) - - curSize := writer.Size() - c.Assert(curSize, check.Equals, int64(len(contentsChunk1))) - - writer, err = suite.StorageDriver.Writer(suite.ctx, filename, true) - c.Assert(err, check.IsNil) - c.Assert(writer.Size(), check.Equals, curSize) - - nn, err = io.Copy(writer, bytes.NewReader(contentsChunk2)) - c.Assert(err, check.IsNil) - c.Assert(nn, check.Equals, int64(len(contentsChunk2))) - - err = writer.Close() - c.Assert(err, check.IsNil) - - curSize = writer.Size() - c.Assert(curSize, check.Equals, 2*chunkSize) - - writer, err = suite.StorageDriver.Writer(suite.ctx, filename, true) - c.Assert(err, check.IsNil) - c.Assert(writer.Size(), check.Equals, curSize) - - nn, err = io.Copy(writer, bytes.NewReader(fullContents[curSize:])) - c.Assert(err, check.IsNil) - c.Assert(nn, check.Equals, int64(len(fullContents[curSize:]))) - - err = writer.Commit() - c.Assert(err, check.IsNil) - err = writer.Close() - c.Assert(err, check.IsNil) - - received, err := suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.IsNil) - c.Assert(received, check.DeepEquals, fullContents) -} - -// TestReadNonexistentStream tests that reading a stream for a nonexistent path -// fails. -func (suite *DriverSuite) TestReadNonexistentStream(c *check.C) { - filename := randomPath(32) - - _, err := suite.StorageDriver.Reader(suite.ctx, filename, 0) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - _, err = suite.StorageDriver.Reader(suite.ctx, filename, 64) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestList checks the returned list of keys after populating a directory tree. -func (suite *DriverSuite) TestList(c *check.C) { - rootDirectory := "/" + randomFilename(int64(8+rand.Intn(8))) - defer suite.deletePath(c, rootDirectory) - - doesnotexist := path.Join(rootDirectory, "nonexistent") - _, err := suite.StorageDriver.List(suite.ctx, doesnotexist) - c.Assert(err, check.Equals, storagedriver.PathNotFoundError{ - Path: doesnotexist, - DriverName: suite.StorageDriver.Name(), - }) - - parentDirectory := rootDirectory + "/" + randomFilename(int64(8+rand.Intn(8))) - childFiles := make([]string, 50) - for i := 0; i < len(childFiles); i++ { - childFile := parentDirectory + "/" + randomFilename(int64(8+rand.Intn(8))) - childFiles[i] = childFile - err := suite.StorageDriver.PutContent(suite.ctx, childFile, randomContents(32)) - c.Assert(err, check.IsNil) - } - sort.Strings(childFiles) - - keys, err := suite.StorageDriver.List(suite.ctx, "/") - c.Assert(err, check.IsNil) - c.Assert(keys, check.DeepEquals, []string{rootDirectory}) - - keys, err = suite.StorageDriver.List(suite.ctx, rootDirectory) - c.Assert(err, check.IsNil) - c.Assert(keys, check.DeepEquals, []string{parentDirectory}) - - keys, err = suite.StorageDriver.List(suite.ctx, parentDirectory) - c.Assert(err, check.IsNil) - - sort.Strings(keys) - c.Assert(keys, check.DeepEquals, childFiles) - - // A few checks to add here (check out #819 for more discussion on this): - // 1. Ensure that all paths are absolute. - // 2. Ensure that listings only include direct children. - // 3. Ensure that we only respond to directory listings that end with a slash (maybe?). -} - -// TestMove checks that a moved object no longer exists at the source path and -// does exist at the destination. -func (suite *DriverSuite) TestMove(c *check.C) { - contents := randomContents(32) - sourcePath := randomPath(32) - destPath := randomPath(32) - - defer suite.deletePath(c, firstPart(sourcePath)) - defer suite.deletePath(c, firstPart(destPath)) - - err := suite.StorageDriver.PutContent(suite.ctx, sourcePath, contents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.Move(suite.ctx, sourcePath, destPath) - c.Assert(err, check.IsNil) - - received, err := suite.StorageDriver.GetContent(suite.ctx, destPath) - c.Assert(err, check.IsNil) - c.Assert(received, check.DeepEquals, contents) - - _, err = suite.StorageDriver.GetContent(suite.ctx, sourcePath) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestMoveOverwrite checks that a moved object no longer exists at the source -// path and overwrites the contents at the destination. -func (suite *DriverSuite) TestMoveOverwrite(c *check.C) { - sourcePath := randomPath(32) - destPath := randomPath(32) - sourceContents := randomContents(32) - destContents := randomContents(64) - - defer suite.deletePath(c, firstPart(sourcePath)) - defer suite.deletePath(c, firstPart(destPath)) - - err := suite.StorageDriver.PutContent(suite.ctx, sourcePath, sourceContents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.PutContent(suite.ctx, destPath, destContents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.Move(suite.ctx, sourcePath, destPath) - c.Assert(err, check.IsNil) - - received, err := suite.StorageDriver.GetContent(suite.ctx, destPath) - c.Assert(err, check.IsNil) - c.Assert(received, check.DeepEquals, sourceContents) - - _, err = suite.StorageDriver.GetContent(suite.ctx, sourcePath) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestMoveNonexistent checks that moving a nonexistent key fails and does not -// delete the data at the destination path. -func (suite *DriverSuite) TestMoveNonexistent(c *check.C) { - contents := randomContents(32) - sourcePath := randomPath(32) - destPath := randomPath(32) - - defer suite.deletePath(c, firstPart(destPath)) - - err := suite.StorageDriver.PutContent(suite.ctx, destPath, contents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.Move(suite.ctx, sourcePath, destPath) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - received, err := suite.StorageDriver.GetContent(suite.ctx, destPath) - c.Assert(err, check.IsNil) - c.Assert(received, check.DeepEquals, contents) -} - -// TestMoveInvalid provides various checks for invalid moves. -func (suite *DriverSuite) TestMoveInvalid(c *check.C) { - contents := randomContents(32) - - // Create a regular file. - err := suite.StorageDriver.PutContent(suite.ctx, "/notadir", contents) - c.Assert(err, check.IsNil) - defer suite.deletePath(c, "/notadir") - - // Now try to move a non-existent file under it. - err = suite.StorageDriver.Move(suite.ctx, "/notadir/foo", "/notadir/bar") - c.Assert(err, check.NotNil) // non-nil error -} - -// TestDelete checks that the delete operation removes data from the storage -// driver -func (suite *DriverSuite) TestDelete(c *check.C) { - filename := randomPath(32) - contents := randomContents(32) - - defer suite.deletePath(c, firstPart(filename)) - - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.Delete(suite.ctx, filename) - c.Assert(err, check.IsNil) - - _, err = suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestURLFor checks that the URLFor method functions properly, but only if it -// is implemented -func (suite *DriverSuite) TestURLFor(c *check.C) { - filename := randomPath(32) - contents := randomContents(32) - - defer suite.deletePath(c, firstPart(filename)) - - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - c.Assert(err, check.IsNil) - - url, err := suite.StorageDriver.URLFor(suite.ctx, filename, nil) - if _, ok := err.(storagedriver.ErrUnsupportedMethod); ok { - return - } - c.Assert(err, check.IsNil) - - response, err := http.Get(url) - c.Assert(err, check.IsNil) - defer response.Body.Close() - - read, err := ioutil.ReadAll(response.Body) - c.Assert(err, check.IsNil) - c.Assert(read, check.DeepEquals, contents) - - url, err = suite.StorageDriver.URLFor(suite.ctx, filename, map[string]interface{}{"method": "HEAD"}) - if _, ok := err.(storagedriver.ErrUnsupportedMethod); ok { - return - } - c.Assert(err, check.IsNil) - - response, err = http.Head(url) - c.Assert(response.StatusCode, check.Equals, 200) - c.Assert(response.ContentLength, check.Equals, int64(32)) -} - -// TestDeleteNonexistent checks that removing a nonexistent key fails. -func (suite *DriverSuite) TestDeleteNonexistent(c *check.C) { - filename := randomPath(32) - err := suite.StorageDriver.Delete(suite.ctx, filename) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestDeleteFolder checks that deleting a folder removes all child elements. -func (suite *DriverSuite) TestDeleteFolder(c *check.C) { - dirname := randomPath(32) - filename1 := randomPath(32) - filename2 := randomPath(32) - filename3 := randomPath(32) - contents := randomContents(32) - - defer suite.deletePath(c, firstPart(dirname)) - - err := suite.StorageDriver.PutContent(suite.ctx, path.Join(dirname, filename1), contents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.PutContent(suite.ctx, path.Join(dirname, filename2), contents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.PutContent(suite.ctx, path.Join(dirname, filename3), contents) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.Delete(suite.ctx, path.Join(dirname, filename1)) - c.Assert(err, check.IsNil) - - _, err = suite.StorageDriver.GetContent(suite.ctx, path.Join(dirname, filename1)) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - _, err = suite.StorageDriver.GetContent(suite.ctx, path.Join(dirname, filename2)) - c.Assert(err, check.IsNil) - - _, err = suite.StorageDriver.GetContent(suite.ctx, path.Join(dirname, filename3)) - c.Assert(err, check.IsNil) - - err = suite.StorageDriver.Delete(suite.ctx, dirname) - c.Assert(err, check.IsNil) - - _, err = suite.StorageDriver.GetContent(suite.ctx, path.Join(dirname, filename1)) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - _, err = suite.StorageDriver.GetContent(suite.ctx, path.Join(dirname, filename2)) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - - _, err = suite.StorageDriver.GetContent(suite.ctx, path.Join(dirname, filename3)) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) -} - -// TestStatCall runs verifies the implementation of the storagedriver's Stat call. -func (suite *DriverSuite) TestStatCall(c *check.C) { - content := randomContents(4096) - dirPath := randomPath(32) - fileName := randomFilename(32) - filePath := path.Join(dirPath, fileName) - - defer suite.deletePath(c, firstPart(dirPath)) - - // Call on non-existent file/dir, check error. - fi, err := suite.StorageDriver.Stat(suite.ctx, dirPath) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - c.Assert(fi, check.IsNil) - - fi, err = suite.StorageDriver.Stat(suite.ctx, filePath) - c.Assert(err, check.NotNil) - c.Assert(err, check.FitsTypeOf, storagedriver.PathNotFoundError{}) - c.Assert(strings.Contains(err.Error(), suite.Name()), check.Equals, true) - c.Assert(fi, check.IsNil) - - err = suite.StorageDriver.PutContent(suite.ctx, filePath, content) - c.Assert(err, check.IsNil) - - // Call on regular file, check results - fi, err = suite.StorageDriver.Stat(suite.ctx, filePath) - c.Assert(err, check.IsNil) - c.Assert(fi, check.NotNil) - c.Assert(fi.Path(), check.Equals, filePath) - c.Assert(fi.Size(), check.Equals, int64(len(content))) - c.Assert(fi.IsDir(), check.Equals, false) - createdTime := fi.ModTime() - - // Sleep and modify the file - time.Sleep(time.Second * 10) - content = randomContents(4096) - err = suite.StorageDriver.PutContent(suite.ctx, filePath, content) - c.Assert(err, check.IsNil) - fi, err = suite.StorageDriver.Stat(suite.ctx, filePath) - c.Assert(err, check.IsNil) - c.Assert(fi, check.NotNil) - time.Sleep(time.Second * 5) // allow changes to propagate (eventual consistency) - - // Check if the modification time is after the creation time. - // In case of cloud storage services, storage frontend nodes might have - // time drift between them, however that should be solved with sleeping - // before update. - modTime := fi.ModTime() - if !modTime.After(createdTime) { - c.Errorf("modtime (%s) is before the creation time (%s)", modTime, createdTime) - } - - // Call on directory (do not check ModTime as dirs don't need to support it) - fi, err = suite.StorageDriver.Stat(suite.ctx, dirPath) - c.Assert(err, check.IsNil) - c.Assert(fi, check.NotNil) - c.Assert(fi.Path(), check.Equals, dirPath) - c.Assert(fi.Size(), check.Equals, int64(0)) - c.Assert(fi.IsDir(), check.Equals, true) -} - -// TestPutContentMultipleTimes checks that if storage driver can overwrite the content -// in the subsequent puts. Validates that PutContent does not have to work -// with an offset like Writer does and overwrites the file entirely -// rather than writing the data to the [0,len(data)) of the file. -func (suite *DriverSuite) TestPutContentMultipleTimes(c *check.C) { - filename := randomPath(32) - contents := randomContents(4096) - - defer suite.deletePath(c, firstPart(filename)) - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - c.Assert(err, check.IsNil) - - contents = randomContents(2048) // upload a different, smaller file - err = suite.StorageDriver.PutContent(suite.ctx, filename, contents) - c.Assert(err, check.IsNil) - - readContents, err := suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.IsNil) - c.Assert(readContents, check.DeepEquals, contents) -} - -// TestConcurrentStreamReads checks that multiple clients can safely read from -// the same file simultaneously with various offsets. -func (suite *DriverSuite) TestConcurrentStreamReads(c *check.C) { - var filesize int64 = 128 * 1024 * 1024 - - if testing.Short() { - filesize = 10 * 1024 * 1024 - c.Log("Reducing file size to 10MB for short mode") - } - - filename := randomPath(32) - contents := randomContents(filesize) - - defer suite.deletePath(c, firstPart(filename)) - - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - c.Assert(err, check.IsNil) - - var wg sync.WaitGroup - - readContents := func() { - defer wg.Done() - offset := rand.Int63n(int64(len(contents))) - reader, err := suite.StorageDriver.Reader(suite.ctx, filename, offset) - c.Assert(err, check.IsNil) - - readContents, err := ioutil.ReadAll(reader) - c.Assert(err, check.IsNil) - c.Assert(readContents, check.DeepEquals, contents[offset:]) - } - - wg.Add(10) - for i := 0; i < 10; i++ { - go readContents() - } - wg.Wait() -} - -// TestConcurrentFileStreams checks that multiple *os.File objects can be passed -// in to Writer concurrently without hanging. -func (suite *DriverSuite) TestConcurrentFileStreams(c *check.C) { - numStreams := 32 - - if testing.Short() { - numStreams = 8 - c.Log("Reducing number of streams to 8 for short mode") - } - - var wg sync.WaitGroup - - testStream := func(size int64) { - defer wg.Done() - suite.testFileStreams(c, size) - } - - wg.Add(numStreams) - for i := numStreams; i > 0; i-- { - go testStream(int64(numStreams) * 1024 * 1024) - } - - wg.Wait() -} - -// TODO (brianbland): evaluate the relevancy of this test -// TestEventualConsistency checks that if stat says that a file is a certain size, then -// you can freely read from the file (this is the only guarantee that the driver needs to provide) -// func (suite *DriverSuite) TestEventualConsistency(c *check.C) { -// if testing.Short() { -// c.Skip("Skipping test in short mode") -// } -// -// filename := randomPath(32) -// defer suite.deletePath(c, firstPart(filename)) -// -// var offset int64 -// var misswrites int -// var chunkSize int64 = 32 -// -// for i := 0; i < 1024; i++ { -// contents := randomContents(chunkSize) -// read, err := suite.StorageDriver.Writer(suite.ctx, filename, offset, bytes.NewReader(contents)) -// c.Assert(err, check.IsNil) -// -// fi, err := suite.StorageDriver.Stat(suite.ctx, filename) -// c.Assert(err, check.IsNil) -// -// // We are most concerned with being able to read data as soon as Stat declares -// // it is uploaded. This is the strongest guarantee that some drivers (that guarantee -// // at best eventual consistency) absolutely need to provide. -// if fi.Size() == offset+chunkSize { -// reader, err := suite.StorageDriver.Reader(suite.ctx, filename, offset) -// c.Assert(err, check.IsNil) -// -// readContents, err := ioutil.ReadAll(reader) -// c.Assert(err, check.IsNil) -// -// c.Assert(readContents, check.DeepEquals, contents) -// -// reader.Close() -// offset += read -// } else { -// misswrites++ -// } -// } -// -// if misswrites > 0 { -// c.Log("There were " + string(misswrites) + " occurrences of a write not being instantly available.") -// } -// -// c.Assert(misswrites, check.Not(check.Equals), 1024) -// } - -// BenchmarkPutGetEmptyFiles benchmarks PutContent/GetContent for 0B files -func (suite *DriverSuite) BenchmarkPutGetEmptyFiles(c *check.C) { - suite.benchmarkPutGetFiles(c, 0) -} - -// BenchmarkPutGet1KBFiles benchmarks PutContent/GetContent for 1KB files -func (suite *DriverSuite) BenchmarkPutGet1KBFiles(c *check.C) { - suite.benchmarkPutGetFiles(c, 1024) -} - -// BenchmarkPutGet1MBFiles benchmarks PutContent/GetContent for 1MB files -func (suite *DriverSuite) BenchmarkPutGet1MBFiles(c *check.C) { - suite.benchmarkPutGetFiles(c, 1024*1024) -} - -// BenchmarkPutGet1GBFiles benchmarks PutContent/GetContent for 1GB files -func (suite *DriverSuite) BenchmarkPutGet1GBFiles(c *check.C) { - suite.benchmarkPutGetFiles(c, 1024*1024*1024) -} - -func (suite *DriverSuite) benchmarkPutGetFiles(c *check.C, size int64) { - c.SetBytes(size) - parentDir := randomPath(8) - defer func() { - c.StopTimer() - suite.StorageDriver.Delete(suite.ctx, firstPart(parentDir)) - }() - - for i := 0; i < c.N; i++ { - filename := path.Join(parentDir, randomPath(32)) - err := suite.StorageDriver.PutContent(suite.ctx, filename, randomContents(size)) - c.Assert(err, check.IsNil) - - _, err = suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.IsNil) - } -} - -// BenchmarkStreamEmptyFiles benchmarks Writer/Reader for 0B files -func (suite *DriverSuite) BenchmarkStreamEmptyFiles(c *check.C) { - suite.benchmarkStreamFiles(c, 0) -} - -// BenchmarkStream1KBFiles benchmarks Writer/Reader for 1KB files -func (suite *DriverSuite) BenchmarkStream1KBFiles(c *check.C) { - suite.benchmarkStreamFiles(c, 1024) -} - -// BenchmarkStream1MBFiles benchmarks Writer/Reader for 1MB files -func (suite *DriverSuite) BenchmarkStream1MBFiles(c *check.C) { - suite.benchmarkStreamFiles(c, 1024*1024) -} - -// BenchmarkStream1GBFiles benchmarks Writer/Reader for 1GB files -func (suite *DriverSuite) BenchmarkStream1GBFiles(c *check.C) { - suite.benchmarkStreamFiles(c, 1024*1024*1024) -} - -func (suite *DriverSuite) benchmarkStreamFiles(c *check.C, size int64) { - c.SetBytes(size) - parentDir := randomPath(8) - defer func() { - c.StopTimer() - suite.StorageDriver.Delete(suite.ctx, firstPart(parentDir)) - }() - - for i := 0; i < c.N; i++ { - filename := path.Join(parentDir, randomPath(32)) - writer, err := suite.StorageDriver.Writer(suite.ctx, filename, false) - c.Assert(err, check.IsNil) - written, err := io.Copy(writer, bytes.NewReader(randomContents(size))) - c.Assert(err, check.IsNil) - c.Assert(written, check.Equals, size) - - err = writer.Commit() - c.Assert(err, check.IsNil) - err = writer.Close() - c.Assert(err, check.IsNil) - - rc, err := suite.StorageDriver.Reader(suite.ctx, filename, 0) - c.Assert(err, check.IsNil) - rc.Close() - } -} - -// BenchmarkList5Files benchmarks List for 5 small files -func (suite *DriverSuite) BenchmarkList5Files(c *check.C) { - suite.benchmarkListFiles(c, 5) -} - -// BenchmarkList50Files benchmarks List for 50 small files -func (suite *DriverSuite) BenchmarkList50Files(c *check.C) { - suite.benchmarkListFiles(c, 50) -} - -func (suite *DriverSuite) benchmarkListFiles(c *check.C, numFiles int64) { - parentDir := randomPath(8) - defer func() { - c.StopTimer() - suite.StorageDriver.Delete(suite.ctx, firstPart(parentDir)) - }() - - for i := int64(0); i < numFiles; i++ { - err := suite.StorageDriver.PutContent(suite.ctx, path.Join(parentDir, randomPath(32)), nil) - c.Assert(err, check.IsNil) - } - - c.ResetTimer() - for i := 0; i < c.N; i++ { - files, err := suite.StorageDriver.List(suite.ctx, parentDir) - c.Assert(err, check.IsNil) - c.Assert(int64(len(files)), check.Equals, numFiles) - } -} - -// BenchmarkDelete5Files benchmarks Delete for 5 small files -func (suite *DriverSuite) BenchmarkDelete5Files(c *check.C) { - suite.benchmarkDeleteFiles(c, 5) -} - -// BenchmarkDelete50Files benchmarks Delete for 50 small files -func (suite *DriverSuite) BenchmarkDelete50Files(c *check.C) { - suite.benchmarkDeleteFiles(c, 50) -} - -func (suite *DriverSuite) benchmarkDeleteFiles(c *check.C, numFiles int64) { - for i := 0; i < c.N; i++ { - parentDir := randomPath(8) - defer suite.deletePath(c, firstPart(parentDir)) - - c.StopTimer() - for j := int64(0); j < numFiles; j++ { - err := suite.StorageDriver.PutContent(suite.ctx, path.Join(parentDir, randomPath(32)), nil) - c.Assert(err, check.IsNil) - } - c.StartTimer() - - // This is the operation we're benchmarking - err := suite.StorageDriver.Delete(suite.ctx, firstPart(parentDir)) - c.Assert(err, check.IsNil) - } -} - -func (suite *DriverSuite) testFileStreams(c *check.C, size int64) { - tf, err := ioutil.TempFile("", "tf") - c.Assert(err, check.IsNil) - defer os.Remove(tf.Name()) - defer tf.Close() - - filename := randomPath(32) - defer suite.deletePath(c, firstPart(filename)) - - contents := randomContents(size) - - _, err = tf.Write(contents) - c.Assert(err, check.IsNil) - - tf.Sync() - tf.Seek(0, os.SEEK_SET) - - writer, err := suite.StorageDriver.Writer(suite.ctx, filename, false) - c.Assert(err, check.IsNil) - nn, err := io.Copy(writer, tf) - c.Assert(err, check.IsNil) - c.Assert(nn, check.Equals, size) - - err = writer.Commit() - c.Assert(err, check.IsNil) - err = writer.Close() - c.Assert(err, check.IsNil) - - reader, err := suite.StorageDriver.Reader(suite.ctx, filename, 0) - c.Assert(err, check.IsNil) - defer reader.Close() - - readContents, err := ioutil.ReadAll(reader) - c.Assert(err, check.IsNil) - - c.Assert(readContents, check.DeepEquals, contents) -} - -func (suite *DriverSuite) writeReadCompare(c *check.C, filename string, contents []byte) { - defer suite.deletePath(c, firstPart(filename)) - - err := suite.StorageDriver.PutContent(suite.ctx, filename, contents) - c.Assert(err, check.IsNil) - - readContents, err := suite.StorageDriver.GetContent(suite.ctx, filename) - c.Assert(err, check.IsNil) - - c.Assert(readContents, check.DeepEquals, contents) -} - -func (suite *DriverSuite) writeReadCompareStreams(c *check.C, filename string, contents []byte) { - defer suite.deletePath(c, firstPart(filename)) - - writer, err := suite.StorageDriver.Writer(suite.ctx, filename, false) - c.Assert(err, check.IsNil) - nn, err := io.Copy(writer, bytes.NewReader(contents)) - c.Assert(err, check.IsNil) - c.Assert(nn, check.Equals, int64(len(contents))) - - err = writer.Commit() - c.Assert(err, check.IsNil) - err = writer.Close() - c.Assert(err, check.IsNil) - - reader, err := suite.StorageDriver.Reader(suite.ctx, filename, 0) - c.Assert(err, check.IsNil) - defer reader.Close() - - readContents, err := ioutil.ReadAll(reader) - c.Assert(err, check.IsNil) - - c.Assert(readContents, check.DeepEquals, contents) -} - -var filenameChars = []byte("abcdefghijklmnopqrstuvwxyz0123456789") -var separatorChars = []byte("._-") - -func randomPath(length int64) string { - path := "/" - for int64(len(path)) < length { - chunkLength := rand.Int63n(length-int64(len(path))) + 1 - chunk := randomFilename(chunkLength) - path += chunk - remaining := length - int64(len(path)) - if remaining == 1 { - path += randomFilename(1) - } else if remaining > 1 { - path += "/" - } - } - return path -} - -func randomFilename(length int64) string { - b := make([]byte, length) - wasSeparator := true - for i := range b { - if !wasSeparator && i < len(b)-1 && rand.Intn(4) == 0 { - b[i] = separatorChars[rand.Intn(len(separatorChars))] - wasSeparator = true - } else { - b[i] = filenameChars[rand.Intn(len(filenameChars))] - wasSeparator = false - } - } - return string(b) -} - -// randomBytes pre-allocates all of the memory sizes needed for the test. If -// anything panics while accessing randomBytes, just make this number bigger. -var randomBytes = make([]byte, 128<<20) - -func init() { - // increase the random bytes to the required maximum - for i := range randomBytes { - randomBytes[i] = byte(rand.Intn(2 << 8)) - } -} - -func randomContents(length int64) []byte { - return randomBytes[:length] -} - -type randReader struct { - r int64 - m sync.Mutex -} - -func (rr *randReader) Read(p []byte) (n int, err error) { - rr.m.Lock() - defer rr.m.Unlock() - - toread := int64(len(p)) - if toread > rr.r { - toread = rr.r - } - n = copy(p, randomContents(toread)) - rr.r -= int64(n) - - if rr.r <= 0 { - err = io.EOF - } - - return -} - -func newRandReader(n int64) *randReader { - return &randReader{r: n} -} - -func firstPart(filePath string) string { - if filePath == "" { - return "/" - } - for { - if filePath[len(filePath)-1] == '/' { - filePath = filePath[:len(filePath)-1] - } - - dir, file := path.Split(filePath) - if dir == "" && file == "" { - return "/" - } - if dir == "/" || dir == "" { - return "/" + file - } - if file == "" { - return dir - } - filePath = dir - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/filereader.go b/vendor/github.com/docker/distribution/registry/storage/filereader.go deleted file mode 100644 index 3b06c81790..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/filereader.go +++ /dev/null @@ -1,177 +0,0 @@ -package storage - -import ( - "bufio" - "bytes" - "fmt" - "io" - "io/ioutil" - "os" - - "github.com/docker/distribution/context" - storagedriver "github.com/docker/distribution/registry/storage/driver" -) - -// TODO(stevvooe): Set an optimal buffer size here. We'll have to -// understand the latency characteristics of the underlying network to -// set this correctly, so we may want to leave it to the driver. For -// out of process drivers, we'll have to optimize this buffer size for -// local communication. -const fileReaderBufferSize = 4 << 20 - -// remoteFileReader provides a read seeker interface to files stored in -// storagedriver. Used to implement part of layer interface and will be used -// to implement read side of LayerUpload. -type fileReader struct { - driver storagedriver.StorageDriver - - ctx context.Context - - // identifying fields - path string - size int64 // size is the total size, must be set. - - // mutable fields - rc io.ReadCloser // remote read closer - brd *bufio.Reader // internal buffered io - offset int64 // offset is the current read offset - err error // terminal error, if set, reader is closed -} - -// newFileReader initializes a file reader for the remote file. The reader -// takes on the size and path that must be determined externally with a stat -// call. The reader operates optimistically, assuming that the file is already -// there. -func newFileReader(ctx context.Context, driver storagedriver.StorageDriver, path string, size int64) (*fileReader, error) { - return &fileReader{ - ctx: ctx, - driver: driver, - path: path, - size: size, - }, nil -} - -func (fr *fileReader) Read(p []byte) (n int, err error) { - if fr.err != nil { - return 0, fr.err - } - - rd, err := fr.reader() - if err != nil { - return 0, err - } - - n, err = rd.Read(p) - fr.offset += int64(n) - - // Simulate io.EOR error if we reach filesize. - if err == nil && fr.offset >= fr.size { - err = io.EOF - } - - return n, err -} - -func (fr *fileReader) Seek(offset int64, whence int) (int64, error) { - if fr.err != nil { - return 0, fr.err - } - - var err error - newOffset := fr.offset - - switch whence { - case os.SEEK_CUR: - newOffset += int64(offset) - case os.SEEK_END: - newOffset = fr.size + int64(offset) - case os.SEEK_SET: - newOffset = int64(offset) - } - - if newOffset < 0 { - err = fmt.Errorf("cannot seek to negative position") - } else { - if fr.offset != newOffset { - fr.reset() - } - - // No problems, set the offset. - fr.offset = newOffset - } - - return fr.offset, err -} - -func (fr *fileReader) Close() error { - return fr.closeWithErr(fmt.Errorf("fileReader: closed")) -} - -// reader prepares the current reader at the lrs offset, ensuring its buffered -// and ready to go. -func (fr *fileReader) reader() (io.Reader, error) { - if fr.err != nil { - return nil, fr.err - } - - if fr.rc != nil { - return fr.brd, nil - } - - // If we don't have a reader, open one up. - rc, err := fr.driver.Reader(fr.ctx, fr.path, fr.offset) - if err != nil { - switch err := err.(type) { - case storagedriver.PathNotFoundError: - // NOTE(stevvooe): If the path is not found, we simply return a - // reader that returns io.EOF. However, we do not set fr.rc, - // allowing future attempts at getting a reader to possibly - // succeed if the file turns up later. - return ioutil.NopCloser(bytes.NewReader([]byte{})), nil - default: - return nil, err - } - } - - fr.rc = rc - - if fr.brd == nil { - fr.brd = bufio.NewReaderSize(fr.rc, fileReaderBufferSize) - } else { - fr.brd.Reset(fr.rc) - } - - return fr.brd, nil -} - -// resetReader resets the reader, forcing the read method to open up a new -// connection and rebuild the buffered reader. This should be called when the -// offset and the reader will become out of sync, such as during a seek -// operation. -func (fr *fileReader) reset() { - if fr.err != nil { - return - } - if fr.rc != nil { - fr.rc.Close() - fr.rc = nil - } -} - -func (fr *fileReader) closeWithErr(err error) error { - if fr.err != nil { - return fr.err - } - - fr.err = err - - // close and release reader chain - if fr.rc != nil { - fr.rc.Close() - } - - fr.rc = nil - fr.brd = nil - - return fr.err -} diff --git a/vendor/github.com/docker/distribution/registry/storage/filereader_test.go b/vendor/github.com/docker/distribution/registry/storage/filereader_test.go deleted file mode 100644 index 774a864b73..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/filereader_test.go +++ /dev/null @@ -1,199 +0,0 @@ -package storage - -import ( - "bytes" - "crypto/rand" - "io" - mrand "math/rand" - "os" - "testing" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -func TestSimpleRead(t *testing.T) { - ctx := context.Background() - content := make([]byte, 1<<20) - n, err := rand.Read(content) - if err != nil { - t.Fatalf("unexpected error building random data: %v", err) - } - - if n != len(content) { - t.Fatalf("random read didn't fill buffer") - } - - dgst, err := digest.FromReader(bytes.NewReader(content)) - if err != nil { - t.Fatalf("unexpected error digesting random content: %v", err) - } - - driver := inmemory.New() - path := "/random" - - if err := driver.PutContent(ctx, path, content); err != nil { - t.Fatalf("error putting patterned content: %v", err) - } - - fr, err := newFileReader(ctx, driver, path, int64(len(content))) - if err != nil { - t.Fatalf("error allocating file reader: %v", err) - } - - verifier, err := digest.NewDigestVerifier(dgst) - if err != nil { - t.Fatalf("error getting digest verifier: %s", err) - } - - io.Copy(verifier, fr) - - if !verifier.Verified() { - t.Fatalf("unable to verify read data") - } -} - -func TestFileReaderSeek(t *testing.T) { - driver := inmemory.New() - pattern := "01234567890ab" // prime length block - repititions := 1024 - path := "/patterned" - content := bytes.Repeat([]byte(pattern), repititions) - ctx := context.Background() - - if err := driver.PutContent(ctx, path, content); err != nil { - t.Fatalf("error putting patterned content: %v", err) - } - - fr, err := newFileReader(ctx, driver, path, int64(len(content))) - - if err != nil { - t.Fatalf("unexpected error creating file reader: %v", err) - } - - // Seek all over the place, in blocks of pattern size and make sure we get - // the right data. - for _, repitition := range mrand.Perm(repititions - 1) { - targetOffset := int64(len(pattern) * repitition) - // Seek to a multiple of pattern size and read pattern size bytes - offset, err := fr.Seek(targetOffset, os.SEEK_SET) - if err != nil { - t.Fatalf("unexpected error seeking: %v", err) - } - - if offset != targetOffset { - t.Fatalf("did not seek to correct offset: %d != %d", offset, targetOffset) - } - - p := make([]byte, len(pattern)) - - n, err := fr.Read(p) - if err != nil { - t.Fatalf("error reading pattern: %v", err) - } - - if n != len(pattern) { - t.Fatalf("incorrect read length: %d != %d", n, len(pattern)) - } - - if string(p) != pattern { - t.Fatalf("incorrect read content: %q != %q", p, pattern) - } - - // Check offset - current, err := fr.Seek(0, os.SEEK_CUR) - if err != nil { - t.Fatalf("error checking current offset: %v", err) - } - - if current != targetOffset+int64(len(pattern)) { - t.Fatalf("unexpected offset after read: %v", err) - } - } - - start, err := fr.Seek(0, os.SEEK_SET) - if err != nil { - t.Fatalf("error seeking to start: %v", err) - } - - if start != 0 { - t.Fatalf("expected to seek to start: %v != 0", start) - } - - end, err := fr.Seek(0, os.SEEK_END) - if err != nil { - t.Fatalf("error checking current offset: %v", err) - } - - if end != int64(len(content)) { - t.Fatalf("expected to seek to end: %v != %v", end, len(content)) - } - - // 4. Seek before start, ensure error. - - // seek before start - before, err := fr.Seek(-1, os.SEEK_SET) - if err == nil { - t.Fatalf("error expected, returned offset=%v", before) - } - - // 5. Seek after end, - after, err := fr.Seek(1, os.SEEK_END) - if err != nil { - t.Fatalf("unexpected error expected, returned offset=%v", after) - } - - p := make([]byte, 16) - n, err := fr.Read(p) - - if n != 0 { - t.Fatalf("bytes reads %d != %d", n, 0) - } - - if err != io.EOF { - t.Fatalf("expected io.EOF, got %v", err) - } -} - -// TestFileReaderNonExistentFile ensures the reader behaves as expected with a -// missing or zero-length remote file. While the file may not exist, the -// reader should not error out on creation and should return 0-bytes from the -// read method, with an io.EOF error. -func TestFileReaderNonExistentFile(t *testing.T) { - driver := inmemory.New() - fr, err := newFileReader(context.Background(), driver, "/doesnotexist", 10) - if err != nil { - t.Fatalf("unexpected error initializing reader: %v", err) - } - - var buf [1024]byte - - n, err := fr.Read(buf[:]) - if n != 0 { - t.Fatalf("non-zero byte read reported: %d != 0", n) - } - - if err != io.EOF { - t.Fatalf("read on missing file should return io.EOF, got %v", err) - } -} - -// TestLayerReadErrors covers the various error return type for different -// conditions that can arise when reading a layer. -func TestFileReaderErrors(t *testing.T) { - // TODO(stevvooe): We need to cover error return types, driven by the - // errors returned via the HTTP API. For now, here is a incomplete list: - // - // 1. Layer Not Found: returned when layer is not found or access is - // denied. - // 2. Layer Unavailable: returned when link references are unresolved, - // but layer is known to the registry. - // 3. Layer Invalid: This may more split into more errors, but should be - // returned when name or tarsum does not reference a valid error. We - // may also need something to communication layer verification errors - // for the inline tarsum check. - // 4. Timeout: timeouts to backend. Need to better understand these - // failure cases and how the storage driver propagates these errors - // up the stack. -} diff --git a/vendor/github.com/docker/distribution/registry/storage/linkedblobstore.go b/vendor/github.com/docker/distribution/registry/storage/linkedblobstore.go deleted file mode 100644 index 68a347b422..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/linkedblobstore.go +++ /dev/null @@ -1,472 +0,0 @@ -package storage - -import ( - "fmt" - "net/http" - "path" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/uuid" -) - -// linkPathFunc describes a function that can resolve a link based on the -// repository name and digest. -type linkPathFunc func(name string, dgst digest.Digest) (string, error) - -// linkedBlobStore provides a full BlobService that namespaces the blobs to a -// given repository. Effectively, it manages the links in a given repository -// that grant access to the global blob store. -type linkedBlobStore struct { - *blobStore - registry *registry - blobServer distribution.BlobServer - blobAccessController distribution.BlobDescriptorService - repository distribution.Repository - ctx context.Context // only to be used where context can't come through method args - deleteEnabled bool - resumableDigestEnabled bool - - // linkPathFns specifies one or more path functions allowing one to - // control the repository blob link set to which the blob store - // dispatches. This is required because manifest and layer blobs have not - // yet been fully merged. At some point, this functionality should be - // removed an the blob links folder should be merged. The first entry is - // treated as the "canonical" link location and will be used for writes. - linkPathFns []linkPathFunc - - // linkDirectoryPathSpec locates the root directories in which one might find links - linkDirectoryPathSpec pathSpec -} - -var _ distribution.BlobStore = &linkedBlobStore{} - -func (lbs *linkedBlobStore) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - return lbs.blobAccessController.Stat(ctx, dgst) -} - -func (lbs *linkedBlobStore) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) { - canonical, err := lbs.Stat(ctx, dgst) // access check - if err != nil { - return nil, err - } - - return lbs.blobStore.Get(ctx, canonical.Digest) -} - -func (lbs *linkedBlobStore) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) { - canonical, err := lbs.Stat(ctx, dgst) // access check - if err != nil { - return nil, err - } - - return lbs.blobStore.Open(ctx, canonical.Digest) -} - -func (lbs *linkedBlobStore) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error { - canonical, err := lbs.Stat(ctx, dgst) // access check - if err != nil { - return err - } - - if canonical.MediaType != "" { - // Set the repository local content type. - w.Header().Set("Content-Type", canonical.MediaType) - } - - return lbs.blobServer.ServeBlob(ctx, w, r, canonical.Digest) -} - -func (lbs *linkedBlobStore) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) { - dgst := digest.FromBytes(p) - // Place the data in the blob store first. - desc, err := lbs.blobStore.Put(ctx, mediaType, p) - if err != nil { - context.GetLogger(ctx).Errorf("error putting into main store: %v", err) - return distribution.Descriptor{}, err - } - - if err := lbs.blobAccessController.SetDescriptor(ctx, dgst, desc); err != nil { - return distribution.Descriptor{}, err - } - - // TODO(stevvooe): Write out mediatype if incoming differs from what is - // returned by Put above. Note that we should allow updates for a given - // repository. - - return desc, lbs.linkBlob(ctx, desc) -} - -// createOptions is a collection of blob creation modifiers relevant to general -// blob storage intended to be configured by the BlobCreateOption.Apply method. -type createOptions struct { - Mount struct { - ShouldMount bool - From reference.Canonical - } -} - -type optionFunc func(interface{}) error - -func (f optionFunc) Apply(v interface{}) error { - return f(v) -} - -// WithMountFrom returns a BlobCreateOption which designates that the blob should be -// mounted from the given canonical reference. -func WithMountFrom(ref reference.Canonical) distribution.BlobCreateOption { - return optionFunc(func(v interface{}) error { - opts, ok := v.(*createOptions) - if !ok { - return fmt.Errorf("unexpected options type: %T", v) - } - - opts.Mount.ShouldMount = true - opts.Mount.From = ref - - return nil - }) -} - -// Writer begins a blob write session, returning a handle. -func (lbs *linkedBlobStore) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { - context.GetLogger(ctx).Debug("(*linkedBlobStore).Writer") - - var opts createOptions - - for _, option := range options { - err := option.Apply(&opts) - if err != nil { - return nil, err - } - } - - if opts.Mount.ShouldMount { - desc, err := lbs.mount(ctx, opts.Mount.From, opts.Mount.From.Digest()) - if err == nil { - // Mount successful, no need to initiate an upload session - return nil, distribution.ErrBlobMounted{From: opts.Mount.From, Descriptor: desc} - } - } - - uuid := uuid.Generate().String() - startedAt := time.Now().UTC() - - path, err := pathFor(uploadDataPathSpec{ - name: lbs.repository.Named().Name(), - id: uuid, - }) - - if err != nil { - return nil, err - } - - startedAtPath, err := pathFor(uploadStartedAtPathSpec{ - name: lbs.repository.Named().Name(), - id: uuid, - }) - - if err != nil { - return nil, err - } - - // Write a startedat file for this upload - if err := lbs.blobStore.driver.PutContent(ctx, startedAtPath, []byte(startedAt.Format(time.RFC3339))); err != nil { - return nil, err - } - - return lbs.newBlobUpload(ctx, uuid, path, startedAt, false) -} - -func (lbs *linkedBlobStore) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) { - context.GetLogger(ctx).Debug("(*linkedBlobStore).Resume") - - startedAtPath, err := pathFor(uploadStartedAtPathSpec{ - name: lbs.repository.Named().Name(), - id: id, - }) - - if err != nil { - return nil, err - } - - startedAtBytes, err := lbs.blobStore.driver.GetContent(ctx, startedAtPath) - if err != nil { - switch err := err.(type) { - case driver.PathNotFoundError: - return nil, distribution.ErrBlobUploadUnknown - default: - return nil, err - } - } - - startedAt, err := time.Parse(time.RFC3339, string(startedAtBytes)) - if err != nil { - return nil, err - } - - path, err := pathFor(uploadDataPathSpec{ - name: lbs.repository.Named().Name(), - id: id, - }) - - if err != nil { - return nil, err - } - - return lbs.newBlobUpload(ctx, id, path, startedAt, true) -} - -func (lbs *linkedBlobStore) Delete(ctx context.Context, dgst digest.Digest) error { - if !lbs.deleteEnabled { - return distribution.ErrUnsupported - } - - // Ensure the blob is available for deletion - _, err := lbs.blobAccessController.Stat(ctx, dgst) - if err != nil { - return err - } - - err = lbs.blobAccessController.Clear(ctx, dgst) - if err != nil { - return err - } - - return nil -} - -func (lbs *linkedBlobStore) Enumerate(ctx context.Context, ingestor func(digest.Digest) error) error { - rootPath, err := pathFor(lbs.linkDirectoryPathSpec) - if err != nil { - return err - } - err = Walk(ctx, lbs.blobStore.driver, rootPath, func(fileInfo driver.FileInfo) error { - // exit early if directory... - if fileInfo.IsDir() { - return nil - } - filePath := fileInfo.Path() - - // check if it's a link - _, fileName := path.Split(filePath) - if fileName != "link" { - return nil - } - - // read the digest found in link - digest, err := lbs.blobStore.readlink(ctx, filePath) - if err != nil { - return err - } - - // ensure this conforms to the linkPathFns - _, err = lbs.Stat(ctx, digest) - if err != nil { - // we expect this error to occur so we move on - if err == distribution.ErrBlobUnknown { - return nil - } - return err - } - - err = ingestor(digest) - if err != nil { - return err - } - - return nil - }) - - if err != nil { - return err - } - - return nil -} - -func (lbs *linkedBlobStore) mount(ctx context.Context, sourceRepo reference.Named, dgst digest.Digest) (distribution.Descriptor, error) { - repo, err := lbs.registry.Repository(ctx, sourceRepo) - if err != nil { - return distribution.Descriptor{}, err - } - stat, err := repo.Blobs(ctx).Stat(ctx, dgst) - if err != nil { - return distribution.Descriptor{}, err - } - - desc := distribution.Descriptor{ - Size: stat.Size, - - // NOTE(stevvooe): The central blob store firewalls media types from - // other users. The caller should look this up and override the value - // for the specific repository. - MediaType: "application/octet-stream", - Digest: dgst, - } - return desc, lbs.linkBlob(ctx, desc) -} - -// newBlobUpload allocates a new upload controller with the given state. -func (lbs *linkedBlobStore) newBlobUpload(ctx context.Context, uuid, path string, startedAt time.Time, append bool) (distribution.BlobWriter, error) { - fw, err := lbs.driver.Writer(ctx, path, append) - if err != nil { - return nil, err - } - - bw := &blobWriter{ - ctx: ctx, - blobStore: lbs, - id: uuid, - startedAt: startedAt, - digester: digest.Canonical.New(), - fileWriter: fw, - driver: lbs.driver, - path: path, - resumableDigestEnabled: lbs.resumableDigestEnabled, - } - - return bw, nil -} - -// linkBlob links a valid, written blob into the registry under the named -// repository for the upload controller. -func (lbs *linkedBlobStore) linkBlob(ctx context.Context, canonical distribution.Descriptor, aliases ...digest.Digest) error { - dgsts := append([]digest.Digest{canonical.Digest}, aliases...) - - // TODO(stevvooe): Need to write out mediatype for only canonical hash - // since we don't care about the aliases. They are generally unused except - // for tarsum but those versions don't care about mediatype. - - // Don't make duplicate links. - seenDigests := make(map[digest.Digest]struct{}, len(dgsts)) - - // only use the first link - linkPathFn := lbs.linkPathFns[0] - - for _, dgst := range dgsts { - if _, seen := seenDigests[dgst]; seen { - continue - } - seenDigests[dgst] = struct{}{} - - blobLinkPath, err := linkPathFn(lbs.repository.Named().Name(), dgst) - if err != nil { - return err - } - - if err := lbs.blobStore.link(ctx, blobLinkPath, canonical.Digest); err != nil { - return err - } - } - - return nil -} - -type linkedBlobStatter struct { - *blobStore - repository distribution.Repository - - // linkPathFns specifies one or more path functions allowing one to - // control the repository blob link set to which the blob store - // dispatches. This is required because manifest and layer blobs have not - // yet been fully merged. At some point, this functionality should be - // removed an the blob links folder should be merged. The first entry is - // treated as the "canonical" link location and will be used for writes. - linkPathFns []linkPathFunc -} - -var _ distribution.BlobDescriptorService = &linkedBlobStatter{} - -func (lbs *linkedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - var ( - found bool - target digest.Digest - ) - - // try the many link path functions until we get success or an error that - // is not PathNotFoundError. - for _, linkPathFn := range lbs.linkPathFns { - var err error - target, err = lbs.resolveWithLinkFunc(ctx, dgst, linkPathFn) - - if err == nil { - found = true - break // success! - } - - switch err := err.(type) { - case driver.PathNotFoundError: - // do nothing, just move to the next linkPathFn - default: - return distribution.Descriptor{}, err - } - } - - if !found { - return distribution.Descriptor{}, distribution.ErrBlobUnknown - } - - if target != dgst { - // Track when we are doing cross-digest domain lookups. ie, sha512 to sha256. - context.GetLogger(ctx).Warnf("looking up blob with canonical target: %v -> %v", dgst, target) - } - - // TODO(stevvooe): Look up repository local mediatype and replace that on - // the returned descriptor. - - return lbs.blobStore.statter.Stat(ctx, target) -} - -func (lbs *linkedBlobStatter) Clear(ctx context.Context, dgst digest.Digest) (err error) { - // clear any possible existence of a link described in linkPathFns - for _, linkPathFn := range lbs.linkPathFns { - blobLinkPath, err := linkPathFn(lbs.repository.Named().Name(), dgst) - if err != nil { - return err - } - - err = lbs.blobStore.driver.Delete(ctx, blobLinkPath) - if err != nil { - switch err := err.(type) { - case driver.PathNotFoundError: - continue // just ignore this error and continue - default: - return err - } - } - } - - return nil -} - -// resolveTargetWithFunc allows us to read a link to a resource with different -// linkPathFuncs to let us try a few different paths before returning not -// found. -func (lbs *linkedBlobStatter) resolveWithLinkFunc(ctx context.Context, dgst digest.Digest, linkPathFn linkPathFunc) (digest.Digest, error) { - blobLinkPath, err := linkPathFn(lbs.repository.Named().Name(), dgst) - if err != nil { - return "", err - } - - return lbs.blobStore.readlink(ctx, blobLinkPath) -} - -func (lbs *linkedBlobStatter) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error { - // The canonical descriptor for a blob is set at the commit phase of upload - return nil -} - -// blobLinkPath provides the path to the blob link, also known as layers. -func blobLinkPath(name string, dgst digest.Digest) (string, error) { - return pathFor(layerLinkPathSpec{name: name, digest: dgst}) -} - -// manifestRevisionLinkPath provides the path to the manifest revision link. -func manifestRevisionLinkPath(name string, dgst digest.Digest) (string, error) { - return pathFor(manifestRevisionLinkPathSpec{name: name, revision: dgst}) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/manifestlisthandler.go b/vendor/github.com/docker/distribution/registry/storage/manifestlisthandler.go deleted file mode 100644 index 42027d1339..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/manifestlisthandler.go +++ /dev/null @@ -1,96 +0,0 @@ -package storage - -import ( - "fmt" - - "encoding/json" - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest/manifestlist" -) - -// manifestListHandler is a ManifestHandler that covers schema2 manifest lists. -type manifestListHandler struct { - repository *repository - blobStore *linkedBlobStore - ctx context.Context -} - -var _ ManifestHandler = &manifestListHandler{} - -func (ms *manifestListHandler) Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) { - context.GetLogger(ms.ctx).Debug("(*manifestListHandler).Unmarshal") - - var m manifestlist.DeserializedManifestList - if err := json.Unmarshal(content, &m); err != nil { - return nil, err - } - - return &m, nil -} - -func (ms *manifestListHandler) Put(ctx context.Context, manifestList distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) { - context.GetLogger(ms.ctx).Debug("(*manifestListHandler).Put") - - m, ok := manifestList.(*manifestlist.DeserializedManifestList) - if !ok { - return "", fmt.Errorf("wrong type put to manifestListHandler: %T", manifestList) - } - - if err := ms.verifyManifest(ms.ctx, *m, skipDependencyVerification); err != nil { - return "", err - } - - mt, payload, err := m.Payload() - if err != nil { - return "", err - } - - revision, err := ms.blobStore.Put(ctx, mt, payload) - if err != nil { - context.GetLogger(ctx).Errorf("error putting payload into blobstore: %v", err) - return "", err - } - - // Link the revision into the repository. - if err := ms.blobStore.linkBlob(ctx, revision); err != nil { - return "", err - } - - return revision.Digest, nil -} - -// verifyManifest ensures that the manifest content is valid from the -// perspective of the registry. As a policy, the registry only tries to -// store valid content, leaving trust policies of that content up to -// consumers. -func (ms *manifestListHandler) verifyManifest(ctx context.Context, mnfst manifestlist.DeserializedManifestList, skipDependencyVerification bool) error { - var errs distribution.ErrManifestVerification - - if !skipDependencyVerification { - // This manifest service is different from the blob service - // returned by Blob. It uses a linked blob store to ensure that - // only manifests are accessible. - manifestService, err := ms.repository.Manifests(ctx) - if err != nil { - return err - } - - for _, manifestDescriptor := range mnfst.References() { - exists, err := manifestService.Exists(ctx, manifestDescriptor.Digest) - if err != nil && err != distribution.ErrBlobUnknown { - errs = append(errs, err) - } - if err != nil || !exists { - // On error here, we always append unknown blob errors. - errs = append(errs, distribution.ErrManifestBlobUnknown{Digest: manifestDescriptor.Digest}) - } - } - } - if len(errs) != 0 { - return errs - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/manifeststore.go b/vendor/github.com/docker/distribution/registry/storage/manifeststore.go deleted file mode 100644 index 5a9165f909..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/manifeststore.go +++ /dev/null @@ -1,188 +0,0 @@ -package storage - -import ( - "fmt" - "path" - - "encoding/json" - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/manifestlist" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/manifest/schema2" - "github.com/docker/distribution/registry/storage/driver" -) - -// A ManifestHandler gets and puts manifests of a particular type. -type ManifestHandler interface { - // Unmarshal unmarshals the manifest from a byte slice. - Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) - - // Put creates or updates the given manifest returning the manifest digest. - Put(ctx context.Context, manifest distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) -} - -// SkipLayerVerification allows a manifest to be Put before its -// layers are on the filesystem -func SkipLayerVerification() distribution.ManifestServiceOption { - return skipLayerOption{} -} - -type skipLayerOption struct{} - -func (o skipLayerOption) Apply(m distribution.ManifestService) error { - if ms, ok := m.(*manifestStore); ok { - ms.skipDependencyVerification = true - return nil - } - return fmt.Errorf("skip layer verification only valid for manifestStore") -} - -type manifestStore struct { - repository *repository - blobStore *linkedBlobStore - ctx context.Context - - skipDependencyVerification bool - - schema1Handler ManifestHandler - schema2Handler ManifestHandler - manifestListHandler ManifestHandler -} - -var _ distribution.ManifestService = &manifestStore{} - -func (ms *manifestStore) Exists(ctx context.Context, dgst digest.Digest) (bool, error) { - context.GetLogger(ms.ctx).Debug("(*manifestStore).Exists") - - _, err := ms.blobStore.Stat(ms.ctx, dgst) - if err != nil { - if err == distribution.ErrBlobUnknown { - return false, nil - } - - return false, err - } - - return true, nil -} - -func (ms *manifestStore) Get(ctx context.Context, dgst digest.Digest, options ...distribution.ManifestServiceOption) (distribution.Manifest, error) { - context.GetLogger(ms.ctx).Debug("(*manifestStore).Get") - - // TODO(stevvooe): Need to check descriptor from above to ensure that the - // mediatype is as we expect for the manifest store. - - content, err := ms.blobStore.Get(ctx, dgst) - if err != nil { - if err == distribution.ErrBlobUnknown { - return nil, distribution.ErrManifestUnknownRevision{ - Name: ms.repository.Named().Name(), - Revision: dgst, - } - } - - return nil, err - } - - var versioned manifest.Versioned - if err = json.Unmarshal(content, &versioned); err != nil { - return nil, err - } - - switch versioned.SchemaVersion { - case 1: - return ms.schema1Handler.Unmarshal(ctx, dgst, content) - case 2: - // This can be an image manifest or a manifest list - switch versioned.MediaType { - case schema2.MediaTypeManifest: - return ms.schema2Handler.Unmarshal(ctx, dgst, content) - case manifestlist.MediaTypeManifestList: - return ms.manifestListHandler.Unmarshal(ctx, dgst, content) - default: - return nil, distribution.ErrManifestVerification{fmt.Errorf("unrecognized manifest content type %s", versioned.MediaType)} - } - } - - return nil, fmt.Errorf("unrecognized manifest schema version %d", versioned.SchemaVersion) -} - -func (ms *manifestStore) Put(ctx context.Context, manifest distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) { - context.GetLogger(ms.ctx).Debug("(*manifestStore).Put") - - switch manifest.(type) { - case *schema1.SignedManifest: - return ms.schema1Handler.Put(ctx, manifest, ms.skipDependencyVerification) - case *schema2.DeserializedManifest: - return ms.schema2Handler.Put(ctx, manifest, ms.skipDependencyVerification) - case *manifestlist.DeserializedManifestList: - return ms.manifestListHandler.Put(ctx, manifest, ms.skipDependencyVerification) - } - - return "", fmt.Errorf("unrecognized manifest type %T", manifest) -} - -// Delete removes the revision of the specified manfiest. -func (ms *manifestStore) Delete(ctx context.Context, dgst digest.Digest) error { - context.GetLogger(ms.ctx).Debug("(*manifestStore).Delete") - return ms.blobStore.Delete(ctx, dgst) -} - -func (ms *manifestStore) Enumerate(ctx context.Context, ingester func(digest.Digest) error) error { - err := ms.blobStore.Enumerate(ctx, func(dgst digest.Digest) error { - err := ingester(dgst) - if err != nil { - return err - } - return nil - }) - return err -} - -// Only valid for schema1 signed manifests -func (ms *manifestStore) GetSignatures(ctx context.Context, manifestDigest digest.Digest) ([]digest.Digest, error) { - // sanity check that digest refers to a schema1 digest - manifest, err := ms.Get(ctx, manifestDigest) - if err != nil { - return nil, err - } - - if _, ok := manifest.(*schema1.SignedManifest); !ok { - return nil, fmt.Errorf("digest %v is not for schema1 manifest", manifestDigest) - } - - signaturesPath, err := pathFor(manifestSignaturesPathSpec{ - name: ms.repository.Named().Name(), - revision: manifestDigest, - }) - if err != nil { - return nil, err - } - - var digests []digest.Digest - alg := string(digest.SHA256) - signaturePaths, err := ms.blobStore.driver.List(ctx, path.Join(signaturesPath, alg)) - - switch err.(type) { - case nil: - break - case driver.PathNotFoundError: - // Manifest may have been pushed with signature store disabled - return digests, nil - default: - return nil, err - } - - for _, sigPath := range signaturePaths { - sigdigest, err := digest.ParseDigest(alg + ":" + path.Base(sigPath)) - if err != nil { - // merely found not a digest - continue - } - digests = append(digests, sigdigest) - } - return digests, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/manifeststore_test.go b/vendor/github.com/docker/distribution/registry/storage/manifeststore_test.go deleted file mode 100644 index fcb5adf9ae..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/manifeststore_test.go +++ /dev/null @@ -1,432 +0,0 @@ -package storage - -import ( - "bytes" - "io" - "reflect" - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/cache/memory" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/testutil" - "github.com/docker/libtrust" -) - -type manifestStoreTestEnv struct { - ctx context.Context - driver driver.StorageDriver - registry distribution.Namespace - repository distribution.Repository - name reference.Named - tag string -} - -func newManifestStoreTestEnv(t *testing.T, name reference.Named, tag string, options ...RegistryOption) *manifestStoreTestEnv { - ctx := context.Background() - driver := inmemory.New() - registry, err := NewRegistry(ctx, driver, options...) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - - repo, err := registry.Repository(ctx, name) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - - return &manifestStoreTestEnv{ - ctx: ctx, - driver: driver, - registry: registry, - repository: repo, - name: name, - tag: tag, - } -} - -func TestManifestStorage(t *testing.T) { - testManifestStorage(t, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect) -} - -func TestManifestStorageDisabledSignatures(t *testing.T) { - k, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatal(err) - } - testManifestStorage(t, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableDelete, EnableRedirect, DisableSchema1Signatures, Schema1SigningKey(k)) -} - -func testManifestStorage(t *testing.T, options ...RegistryOption) { - repoName, _ := reference.ParseNamed("foo/bar") - env := newManifestStoreTestEnv(t, repoName, "thetag", options...) - ctx := context.Background() - ms, err := env.repository.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - equalSignatures := env.registry.(*registry).schema1SignaturesEnabled - - m := schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: env.name.Name(), - Tag: env.tag, - } - - // Build up some test layers and add them to the manifest, saving the - // readseekers for upload later. - testLayers := map[digest.Digest]io.ReadSeeker{} - for i := 0; i < 2; i++ { - rs, ds, err := testutil.CreateRandomTarFile() - if err != nil { - t.Fatalf("unexpected error generating test layer file") - } - dgst := digest.Digest(ds) - - testLayers[digest.Digest(dgst)] = rs - m.FSLayers = append(m.FSLayers, schema1.FSLayer{ - BlobSum: dgst, - }) - m.History = append(m.History, schema1.History{ - V1Compatibility: "", - }) - - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("unexpected error generating private key: %v", err) - } - - sm, merr := schema1.Sign(&m, pk) - if merr != nil { - t.Fatalf("error signing manifest: %v", err) - } - - _, err = ms.Put(ctx, sm) - if err == nil { - t.Fatalf("expected errors putting manifest with full verification") - } - - switch err := err.(type) { - case distribution.ErrManifestVerification: - if len(err) != 2 { - t.Fatalf("expected 2 verification errors: %#v", err) - } - - for _, err := range err { - if _, ok := err.(distribution.ErrManifestBlobUnknown); !ok { - t.Fatalf("unexpected error type: %v", err) - } - } - default: - t.Fatalf("unexpected error verifying manifest: %v", err) - } - - // Now, upload the layers that were missing! - for dgst, rs := range testLayers { - wr, err := env.repository.Blobs(env.ctx).Create(env.ctx) - if err != nil { - t.Fatalf("unexpected error creating test upload: %v", err) - } - - if _, err := io.Copy(wr, rs); err != nil { - t.Fatalf("unexpected error copying to upload: %v", err) - } - - if _, err := wr.Commit(env.ctx, distribution.Descriptor{Digest: dgst}); err != nil { - t.Fatalf("unexpected error finishing upload: %v", err) - } - } - - var manifestDigest digest.Digest - if manifestDigest, err = ms.Put(ctx, sm); err != nil { - t.Fatalf("unexpected error putting manifest: %v", err) - } - - exists, err := ms.Exists(ctx, manifestDigest) - if err != nil { - t.Fatalf("unexpected error checking manifest existence: %#v", err) - } - - if !exists { - t.Fatalf("manifest should exist") - } - - fromStore, err := ms.Get(ctx, manifestDigest) - if err != nil { - t.Fatalf("unexpected error fetching manifest: %v", err) - } - - fetchedManifest, ok := fromStore.(*schema1.SignedManifest) - if !ok { - t.Fatalf("unexpected manifest type from signedstore") - } - - if !bytes.Equal(fetchedManifest.Canonical, sm.Canonical) { - t.Fatalf("fetched payload does not match original payload: %q != %q", fetchedManifest.Canonical, sm.Canonical) - } - - if equalSignatures { - if !reflect.DeepEqual(fetchedManifest, sm) { - t.Fatalf("fetched manifest not equal: %#v != %#v", fetchedManifest.Manifest, sm.Manifest) - } - } - - _, pl, err := fetchedManifest.Payload() - if err != nil { - t.Fatalf("error getting payload %#v", err) - } - - fetchedJWS, err := libtrust.ParsePrettySignature(pl, "signatures") - if err != nil { - t.Fatalf("unexpected error parsing jws: %v", err) - } - - payload, err := fetchedJWS.Payload() - if err != nil { - t.Fatalf("unexpected error extracting payload: %v", err) - } - - // Now that we have a payload, take a moment to check that the manifest is - // return by the payload digest. - - dgst := digest.FromBytes(payload) - exists, err = ms.Exists(ctx, dgst) - if err != nil { - t.Fatalf("error checking manifest existence by digest: %v", err) - } - - if !exists { - t.Fatalf("manifest %s should exist", dgst) - } - - fetchedByDigest, err := ms.Get(ctx, dgst) - if err != nil { - t.Fatalf("unexpected error fetching manifest by digest: %v", err) - } - - byDigestManifest, ok := fetchedByDigest.(*schema1.SignedManifest) - if !ok { - t.Fatalf("unexpected manifest type from signedstore") - } - - if !bytes.Equal(byDigestManifest.Canonical, fetchedManifest.Canonical) { - t.Fatalf("fetched manifest not equal: %q != %q", byDigestManifest.Canonical, fetchedManifest.Canonical) - } - - if equalSignatures { - if !reflect.DeepEqual(fetchedByDigest, fetchedManifest) { - t.Fatalf("fetched manifest not equal: %#v != %#v", fetchedByDigest, fetchedManifest) - } - } - - sigs, err := fetchedJWS.Signatures() - if err != nil { - t.Fatalf("unable to extract signatures: %v", err) - } - - if len(sigs) != 1 { - t.Fatalf("unexpected number of signatures: %d != %d", len(sigs), 1) - } - - // Now, push the same manifest with a different key - pk2, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - t.Fatalf("unexpected error generating private key: %v", err) - } - - sm2, err := schema1.Sign(&m, pk2) - if err != nil { - t.Fatalf("unexpected error signing manifest: %v", err) - } - _, pl, err = sm2.Payload() - if err != nil { - t.Fatalf("error getting payload %#v", err) - } - - jws2, err := libtrust.ParsePrettySignature(pl, "signatures") - if err != nil { - t.Fatalf("error parsing signature: %v", err) - } - - sigs2, err := jws2.Signatures() - if err != nil { - t.Fatalf("unable to extract signatures: %v", err) - } - - if len(sigs2) != 1 { - t.Fatalf("unexpected number of signatures: %d != %d", len(sigs2), 1) - } - - if manifestDigest, err = ms.Put(ctx, sm2); err != nil { - t.Fatalf("unexpected error putting manifest: %v", err) - } - - fromStore, err = ms.Get(ctx, manifestDigest) - if err != nil { - t.Fatalf("unexpected error fetching manifest: %v", err) - } - - fetched, ok := fromStore.(*schema1.SignedManifest) - if !ok { - t.Fatalf("unexpected type from signed manifeststore : %T", fetched) - } - - if _, err := schema1.Verify(fetched); err != nil { - t.Fatalf("unexpected error verifying manifest: %v", err) - } - - // Assemble our payload and two signatures to get what we expect! - expectedJWS, err := libtrust.NewJSONSignature(payload, sigs[0], sigs2[0]) - if err != nil { - t.Fatalf("unexpected error merging jws: %v", err) - } - - expectedSigs, err := expectedJWS.Signatures() - if err != nil { - t.Fatalf("unexpected error getting expected signatures: %v", err) - } - - _, pl, err = fetched.Payload() - if err != nil { - t.Fatalf("error getting payload %#v", err) - } - - receivedJWS, err := libtrust.ParsePrettySignature(pl, "signatures") - if err != nil { - t.Fatalf("unexpected error parsing jws: %v", err) - } - - receivedPayload, err := receivedJWS.Payload() - if err != nil { - t.Fatalf("unexpected error extracting received payload: %v", err) - } - - if !bytes.Equal(receivedPayload, payload) { - t.Fatalf("payloads are not equal") - } - - if equalSignatures { - receivedSigs, err := receivedJWS.Signatures() - if err != nil { - t.Fatalf("error getting signatures: %v", err) - } - - for i, sig := range receivedSigs { - if !bytes.Equal(sig, expectedSigs[i]) { - t.Fatalf("mismatched signatures from remote: %v != %v", string(sig), string(expectedSigs[i])) - } - } - } - - // Test deleting manifests - err = ms.Delete(ctx, dgst) - if err != nil { - t.Fatalf("unexpected an error deleting manifest by digest: %v", err) - } - - exists, err = ms.Exists(ctx, dgst) - if err != nil { - t.Fatalf("Error querying manifest existence") - } - if exists { - t.Errorf("Deleted manifest should not exist") - } - - deletedManifest, err := ms.Get(ctx, dgst) - if err == nil { - t.Errorf("Unexpected success getting deleted manifest") - } - switch err.(type) { - case distribution.ErrManifestUnknownRevision: - break - default: - t.Errorf("Unexpected error getting deleted manifest: %s", reflect.ValueOf(err).Type()) - } - - if deletedManifest != nil { - t.Errorf("Deleted manifest get returned non-nil") - } - - // Re-upload should restore manifest to a good state - _, err = ms.Put(ctx, sm) - if err != nil { - t.Errorf("Error re-uploading deleted manifest") - } - - exists, err = ms.Exists(ctx, dgst) - if err != nil { - t.Fatalf("Error querying manifest existence") - } - if !exists { - t.Errorf("Restored manifest should exist") - } - - deletedManifest, err = ms.Get(ctx, dgst) - if err != nil { - t.Errorf("Unexpected error getting manifest") - } - if deletedManifest == nil { - t.Errorf("Deleted manifest get returned non-nil") - } - - r, err := NewRegistry(ctx, env.driver, BlobDescriptorCacheProvider(memory.NewInMemoryBlobDescriptorCacheProvider()), EnableRedirect) - if err != nil { - t.Fatalf("error creating registry: %v", err) - } - repo, err := r.Repository(ctx, env.name) - if err != nil { - t.Fatalf("unexpected error getting repo: %v", err) - } - ms, err = repo.Manifests(ctx) - if err != nil { - t.Fatal(err) - } - err = ms.Delete(ctx, dgst) - if err == nil { - t.Errorf("Unexpected success deleting while disabled") - } -} - -// TestLinkPathFuncs ensures that the link path functions behavior are locked -// down and implemented as expected. -func TestLinkPathFuncs(t *testing.T) { - for _, testcase := range []struct { - repo string - digest digest.Digest - linkPathFn linkPathFunc - expected string - }{ - { - repo: "foo/bar", - digest: "sha256:deadbeaf98fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - linkPathFn: blobLinkPath, - expected: "/docker/registry/v2/repositories/foo/bar/_layers/sha256/deadbeaf98fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/link", - }, - { - repo: "foo/bar", - digest: "sha256:deadbeaf98fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - linkPathFn: manifestRevisionLinkPath, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/deadbeaf98fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/link", - }, - } { - p, err := testcase.linkPathFn(testcase.repo, testcase.digest) - if err != nil { - t.Fatalf("unexpected error calling linkPathFn(pm, %q, %q): %v", testcase.repo, testcase.digest, err) - } - - if p != testcase.expected { - t.Fatalf("incorrect path returned: %q != %q", p, testcase.expected) - } - } - -} diff --git a/vendor/github.com/docker/distribution/registry/storage/paths.go b/vendor/github.com/docker/distribution/registry/storage/paths.go deleted file mode 100644 index 8985f043f3..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/paths.go +++ /dev/null @@ -1,542 +0,0 @@ -package storage - -import ( - "fmt" - "path" - "strings" - - "github.com/docker/distribution/digest" -) - -const ( - storagePathVersion = "v2" // fixed storage layout version - storagePathRoot = "/docker/registry/" // all driver paths have a prefix - - // TODO(stevvooe): Get rid of the "storagePathRoot". Initially, we though - // storage path root would configurable for all drivers through this - // package. In reality, we've found it simpler to do this on a per driver - // basis. -) - -// pathFor maps paths based on "object names" and their ids. The "object -// names" mapped by are internal to the storage system. -// -// The path layout in the storage backend is roughly as follows: -// -// /v2 -// -> repositories/ -// ->/ -// -> _manifests/ -// revisions -// -> -// -> link -// -> signatures -// //link -// tags/ -// -> current/link -// -> index -// -> //link -// -> _layers/ -// -// -> _uploads/ -// data -// startedat -// hashstates// -// -> blob/ -// -// -// The storage backend layout is broken up into a content-addressable blob -// store and repositories. The content-addressable blob store holds most data -// throughout the backend, keyed by algorithm and digests of the underlying -// content. Access to the blob store is controlled through links from the -// repository to blobstore. -// -// A repository is made up of layers, manifests and tags. The layers component -// is just a directory of layers which are "linked" into a repository. A layer -// can only be accessed through a qualified repository name if it is linked in -// the repository. Uploads of layers are managed in the uploads directory, -// which is key by upload id. When all data for an upload is received, the -// data is moved into the blob store and the upload directory is deleted. -// Abandoned uploads can be garbage collected by reading the startedat file -// and removing uploads that have been active for longer than a certain time. -// -// The third component of the repository directory is the manifests store, -// which is made up of a revision store and tag store. Manifests are stored in -// the blob store and linked into the revision store. Signatures are separated -// from the manifest payload data and linked into the blob store, as well. -// While the registry can save all revisions of a manifest, no relationship is -// implied as to the ordering of changes to a manifest. The tag store provides -// support for name, tag lookups of manifests, using "current/link" under a -// named tag directory. An index is maintained to support deletions of all -// revisions of a given manifest tag. -// -// We cover the path formats implemented by this path mapper below. -// -// Manifests: -// -// manifestRevisionsPathSpec: /v2/repositories//_manifests/revisions/ -// manifestRevisionPathSpec: /v2/repositories//_manifests/revisions/// -// manifestRevisionLinkPathSpec: /v2/repositories//_manifests/revisions///link -// manifestSignaturesPathSpec: /v2/repositories//_manifests/revisions///signatures/ -// manifestSignatureLinkPathSpec: /v2/repositories//_manifests/revisions///signatures///link -// -// Tags: -// -// manifestTagsPathSpec: /v2/repositories//_manifests/tags/ -// manifestTagPathSpec: /v2/repositories//_manifests/tags// -// manifestTagCurrentPathSpec: /v2/repositories//_manifests/tags//current/link -// manifestTagIndexPathSpec: /v2/repositories//_manifests/tags//index/ -// manifestTagIndexEntryPathSpec: /v2/repositories//_manifests/tags//index/// -// manifestTagIndexEntryLinkPathSpec: /v2/repositories//_manifests/tags//index///link -// -// Blobs: -// -// layerLinkPathSpec: /v2/repositories//_layers///link -// -// Uploads: -// -// uploadDataPathSpec: /v2/repositories//_uploads//data -// uploadStartedAtPathSpec: /v2/repositories//_uploads//startedat -// uploadHashStatePathSpec: /v2/repositories//_uploads//hashstates// -// -// Blob Store: -// -// blobsPathSpec: /v2/blobs/ -// blobPathSpec: /v2/blobs/// -// blobDataPathSpec: /v2/blobs////data -// blobMediaTypePathSpec: /v2/blobs////data -// -// For more information on the semantic meaning of each path and their -// contents, please see the path spec documentation. -func pathFor(spec pathSpec) (string, error) { - - // Switch on the path object type and return the appropriate path. At - // first glance, one may wonder why we don't use an interface to - // accomplish this. By keep the formatting separate from the pathSpec, we - // keep separate the path generation componentized. These specs could be - // passed to a completely different mapper implementation and generate a - // different set of paths. - // - // For example, imagine migrating from one backend to the other: one could - // build a filesystem walker that converts a string path in one version, - // to an intermediate path object, than can be consumed and mapped by the - // other version. - - rootPrefix := []string{storagePathRoot, storagePathVersion} - repoPrefix := append(rootPrefix, "repositories") - - switch v := spec.(type) { - - case manifestRevisionsPathSpec: - return path.Join(append(repoPrefix, v.name, "_manifests", "revisions")...), nil - - case manifestRevisionPathSpec: - components, err := digestPathComponents(v.revision, false) - if err != nil { - return "", err - } - - return path.Join(append(append(repoPrefix, v.name, "_manifests", "revisions"), components...)...), nil - case manifestRevisionLinkPathSpec: - root, err := pathFor(manifestRevisionPathSpec{ - name: v.name, - revision: v.revision, - }) - - if err != nil { - return "", err - } - - return path.Join(root, "link"), nil - case manifestSignaturesPathSpec: - root, err := pathFor(manifestRevisionPathSpec{ - name: v.name, - revision: v.revision, - }) - - if err != nil { - return "", err - } - - return path.Join(root, "signatures"), nil - case manifestSignatureLinkPathSpec: - root, err := pathFor(manifestSignaturesPathSpec{ - name: v.name, - revision: v.revision, - }) - - if err != nil { - return "", err - } - - signatureComponents, err := digestPathComponents(v.signature, false) - if err != nil { - return "", err - } - - return path.Join(root, path.Join(append(signatureComponents, "link")...)), nil - case manifestTagsPathSpec: - return path.Join(append(repoPrefix, v.name, "_manifests", "tags")...), nil - case manifestTagPathSpec: - root, err := pathFor(manifestTagsPathSpec{ - name: v.name, - }) - - if err != nil { - return "", err - } - - return path.Join(root, v.tag), nil - case manifestTagCurrentPathSpec: - root, err := pathFor(manifestTagPathSpec{ - name: v.name, - tag: v.tag, - }) - - if err != nil { - return "", err - } - - return path.Join(root, "current", "link"), nil - case manifestTagIndexPathSpec: - root, err := pathFor(manifestTagPathSpec{ - name: v.name, - tag: v.tag, - }) - - if err != nil { - return "", err - } - - return path.Join(root, "index"), nil - case manifestTagIndexEntryLinkPathSpec: - root, err := pathFor(manifestTagIndexEntryPathSpec{ - name: v.name, - tag: v.tag, - revision: v.revision, - }) - - if err != nil { - return "", err - } - - return path.Join(root, "link"), nil - case manifestTagIndexEntryPathSpec: - root, err := pathFor(manifestTagIndexPathSpec{ - name: v.name, - tag: v.tag, - }) - - if err != nil { - return "", err - } - - components, err := digestPathComponents(v.revision, false) - if err != nil { - return "", err - } - - return path.Join(root, path.Join(components...)), nil - case layerLinkPathSpec: - components, err := digestPathComponents(v.digest, false) - if err != nil { - return "", err - } - - // TODO(stevvooe): Right now, all blobs are linked under "_layers". If - // we have future migrations, we may want to rename this to "_blobs". - // A migration strategy would simply leave existing items in place and - // write the new paths, commit a file then delete the old files. - - blobLinkPathComponents := append(repoPrefix, v.name, "_layers") - - return path.Join(path.Join(append(blobLinkPathComponents, components...)...), "link"), nil - case blobsPathSpec: - blobsPathPrefix := append(rootPrefix, "blobs") - return path.Join(blobsPathPrefix...), nil - case blobPathSpec: - components, err := digestPathComponents(v.digest, true) - if err != nil { - return "", err - } - - blobPathPrefix := append(rootPrefix, "blobs") - return path.Join(append(blobPathPrefix, components...)...), nil - case blobDataPathSpec: - components, err := digestPathComponents(v.digest, true) - if err != nil { - return "", err - } - - components = append(components, "data") - blobPathPrefix := append(rootPrefix, "blobs") - return path.Join(append(blobPathPrefix, components...)...), nil - - case uploadDataPathSpec: - return path.Join(append(repoPrefix, v.name, "_uploads", v.id, "data")...), nil - case uploadStartedAtPathSpec: - return path.Join(append(repoPrefix, v.name, "_uploads", v.id, "startedat")...), nil - case uploadHashStatePathSpec: - offset := fmt.Sprintf("%d", v.offset) - if v.list { - offset = "" // Limit to the prefix for listing offsets. - } - return path.Join(append(repoPrefix, v.name, "_uploads", v.id, "hashstates", string(v.alg), offset)...), nil - case repositoriesRootPathSpec: - return path.Join(repoPrefix...), nil - default: - // TODO(sday): This is an internal error. Ensure it doesn't escape (panic?). - return "", fmt.Errorf("unknown path spec: %#v", v) - } -} - -// pathSpec is a type to mark structs as path specs. There is no -// implementation because we'd like to keep the specs and the mappers -// decoupled. -type pathSpec interface { - pathSpec() -} - -// manifestRevisionsPathSpec describes the directory path for -// a manifest revision. -type manifestRevisionsPathSpec struct { - name string -} - -func (manifestRevisionsPathSpec) pathSpec() {} - -// manifestRevisionPathSpec describes the components of the directory path for -// a manifest revision. -type manifestRevisionPathSpec struct { - name string - revision digest.Digest -} - -func (manifestRevisionPathSpec) pathSpec() {} - -// manifestRevisionLinkPathSpec describes the path components required to look -// up the data link for a revision of a manifest. If this file is not present, -// the manifest blob is not available in the given repo. The contents of this -// file should just be the digest. -type manifestRevisionLinkPathSpec struct { - name string - revision digest.Digest -} - -func (manifestRevisionLinkPathSpec) pathSpec() {} - -// manifestSignaturesPathSpec describes the path components for the directory -// containing all the signatures for the target blob. Entries are named with -// the underlying key id. -type manifestSignaturesPathSpec struct { - name string - revision digest.Digest -} - -func (manifestSignaturesPathSpec) pathSpec() {} - -// manifestSignatureLinkPathSpec describes the path components used to look up -// a signature file by the hash of its blob. -type manifestSignatureLinkPathSpec struct { - name string - revision digest.Digest - signature digest.Digest -} - -func (manifestSignatureLinkPathSpec) pathSpec() {} - -// manifestTagsPathSpec describes the path elements required to point to the -// manifest tags directory. -type manifestTagsPathSpec struct { - name string -} - -func (manifestTagsPathSpec) pathSpec() {} - -// manifestTagPathSpec describes the path elements required to point to the -// manifest tag links files under a repository. These contain a blob id that -// can be used to look up the data and signatures. -type manifestTagPathSpec struct { - name string - tag string -} - -func (manifestTagPathSpec) pathSpec() {} - -// manifestTagCurrentPathSpec describes the link to the current revision for a -// given tag. -type manifestTagCurrentPathSpec struct { - name string - tag string -} - -func (manifestTagCurrentPathSpec) pathSpec() {} - -// manifestTagCurrentPathSpec describes the link to the index of revisions -// with the given tag. -type manifestTagIndexPathSpec struct { - name string - tag string -} - -func (manifestTagIndexPathSpec) pathSpec() {} - -// manifestTagIndexEntryPathSpec contains the entries of the index by revision. -type manifestTagIndexEntryPathSpec struct { - name string - tag string - revision digest.Digest -} - -func (manifestTagIndexEntryPathSpec) pathSpec() {} - -// manifestTagIndexEntryLinkPathSpec describes the link to a revisions of a -// manifest with given tag within the index. -type manifestTagIndexEntryLinkPathSpec struct { - name string - tag string - revision digest.Digest -} - -func (manifestTagIndexEntryLinkPathSpec) pathSpec() {} - -// blobLinkPathSpec specifies a path for a blob link, which is a file with a -// blob id. The blob link will contain a content addressable blob id reference -// into the blob store. The format of the contents is as follows: -// -// : -// -// The following example of the file contents is more illustrative: -// -// sha256:96443a84ce518ac22acb2e985eda402b58ac19ce6f91980bde63726a79d80b36 -// -// This indicates that there is a blob with the id/digest, calculated via -// sha256 that can be fetched from the blob store. -type layerLinkPathSpec struct { - name string - digest digest.Digest -} - -func (layerLinkPathSpec) pathSpec() {} - -// blobAlgorithmReplacer does some very simple path sanitization for user -// input. Paths should be "safe" before getting this far due to strict digest -// requirements but we can add further path conversion here, if needed. -var blobAlgorithmReplacer = strings.NewReplacer( - "+", "/", - ".", "/", - ";", "/", -) - -// blobsPathSpec contains the path for the blobs directory -type blobsPathSpec struct{} - -func (blobsPathSpec) pathSpec() {} - -// blobPathSpec contains the path for the registry global blob store. -type blobPathSpec struct { - digest digest.Digest -} - -func (blobPathSpec) pathSpec() {} - -// blobDataPathSpec contains the path for the registry global blob store. For -// now, this contains layer data, exclusively. -type blobDataPathSpec struct { - digest digest.Digest -} - -func (blobDataPathSpec) pathSpec() {} - -// uploadDataPathSpec defines the path parameters of the data file for -// uploads. -type uploadDataPathSpec struct { - name string - id string -} - -func (uploadDataPathSpec) pathSpec() {} - -// uploadDataPathSpec defines the path parameters for the file that stores the -// start time of an uploads. If it is missing, the upload is considered -// unknown. Admittedly, the presence of this file is an ugly hack to make sure -// we have a way to cleanup old or stalled uploads that doesn't rely on driver -// FileInfo behavior. If we come up with a more clever way to do this, we -// should remove this file immediately and rely on the startetAt field from -// the client to enforce time out policies. -type uploadStartedAtPathSpec struct { - name string - id string -} - -func (uploadStartedAtPathSpec) pathSpec() {} - -// uploadHashStatePathSpec defines the path parameters for the file that stores -// the hash function state of an upload at a specific byte offset. If `list` is -// set, then the path mapper will generate a list prefix for all hash state -// offsets for the upload identified by the name, id, and alg. -type uploadHashStatePathSpec struct { - name string - id string - alg digest.Algorithm - offset int64 - list bool -} - -func (uploadHashStatePathSpec) pathSpec() {} - -// repositoriesRootPathSpec returns the root of repositories -type repositoriesRootPathSpec struct { -} - -func (repositoriesRootPathSpec) pathSpec() {} - -// digestPathComponents provides a consistent path breakdown for a given -// digest. For a generic digest, it will be as follows: -// -// / -// -// If multilevel is true, the first two bytes of the digest will separate -// groups of digest folder. It will be as follows: -// -// // -// -func digestPathComponents(dgst digest.Digest, multilevel bool) ([]string, error) { - if err := dgst.Validate(); err != nil { - return nil, err - } - - algorithm := blobAlgorithmReplacer.Replace(string(dgst.Algorithm())) - hex := dgst.Hex() - prefix := []string{algorithm} - - var suffix []string - - if multilevel { - suffix = append(suffix, hex[:2]) - } - - suffix = append(suffix, hex) - - return append(prefix, suffix...), nil -} - -// Reconstructs a digest from a path -func digestFromPath(digestPath string) (digest.Digest, error) { - - digestPath = strings.TrimSuffix(digestPath, "/data") - dir, hex := path.Split(digestPath) - dir = path.Dir(dir) - dir, next := path.Split(dir) - - // next is either the algorithm OR the first two characters in the hex string - var algo string - if next == hex[:2] { - algo = path.Base(dir) - } else { - algo = next - } - - dgst := digest.NewDigestFromHex(algo, hex) - return dgst, dgst.Validate() -} diff --git a/vendor/github.com/docker/distribution/registry/storage/paths_test.go b/vendor/github.com/docker/distribution/registry/storage/paths_test.go deleted file mode 100644 index 91004bd40c..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/paths_test.go +++ /dev/null @@ -1,150 +0,0 @@ -package storage - -import ( - "testing" - - "github.com/docker/distribution/digest" -) - -func TestPathMapper(t *testing.T) { - for _, testcase := range []struct { - spec pathSpec - expected string - err error - }{ - { - spec: manifestRevisionPathSpec{ - name: "foo/bar", - revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - { - spec: manifestRevisionLinkPathSpec{ - name: "foo/bar", - revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/link", - }, - { - spec: manifestSignatureLinkPathSpec{ - name: "foo/bar", - revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - signature: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/signatures/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/link", - }, - { - spec: manifestSignaturesPathSpec{ - name: "foo/bar", - revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/signatures", - }, - { - spec: manifestTagsPathSpec{ - name: "foo/bar", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags", - }, - { - spec: manifestTagPathSpec{ - name: "foo/bar", - tag: "thetag", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag", - }, - { - spec: manifestTagCurrentPathSpec{ - name: "foo/bar", - tag: "thetag", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/current/link", - }, - { - spec: manifestTagIndexPathSpec{ - name: "foo/bar", - tag: "thetag", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/index", - }, - { - spec: manifestTagIndexEntryPathSpec{ - name: "foo/bar", - tag: "thetag", - revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/index/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - { - spec: manifestTagIndexEntryLinkPathSpec{ - name: "foo/bar", - tag: "thetag", - revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/index/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/link", - }, - - { - spec: uploadDataPathSpec{ - name: "foo/bar", - id: "asdf-asdf-asdf-adsf", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_uploads/asdf-asdf-asdf-adsf/data", - }, - { - spec: uploadStartedAtPathSpec{ - name: "foo/bar", - id: "asdf-asdf-asdf-adsf", - }, - expected: "/docker/registry/v2/repositories/foo/bar/_uploads/asdf-asdf-asdf-adsf/startedat", - }, - } { - p, err := pathFor(testcase.spec) - if err != nil { - t.Fatalf("unexpected generating path (%T): %v", testcase.spec, err) - } - - if p != testcase.expected { - t.Fatalf("unexpected path generated (%T): %q != %q", testcase.spec, p, testcase.expected) - } - } - - // Add a few test cases to ensure we cover some errors - - // Specify a path that requires a revision and get a digest validation error. - badpath, err := pathFor(manifestSignaturesPathSpec{ - name: "foo/bar", - }) - - if err == nil { - t.Fatalf("expected an error when mapping an invalid revision: %s", badpath) - } - -} - -func TestDigestFromPath(t *testing.T) { - for _, testcase := range []struct { - path string - expected digest.Digest - multilevel bool - err error - }{ - { - path: "/docker/registry/v2/blobs/sha256/99/9943fffae777400c0344c58869c4c2619c329ca3ad4df540feda74d291dd7c86/data", - multilevel: true, - expected: "sha256:9943fffae777400c0344c58869c4c2619c329ca3ad4df540feda74d291dd7c86", - err: nil, - }, - } { - result, err := digestFromPath(testcase.path) - if err != testcase.err { - t.Fatalf("Unexpected error value %v when we wanted %v", err, testcase.err) - } - - if result != testcase.expected { - t.Fatalf("Unexpected result value %v when we wanted %v", result, testcase.expected) - - } - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/purgeuploads.go b/vendor/github.com/docker/distribution/registry/storage/purgeuploads.go deleted file mode 100644 index 7576b189c7..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/purgeuploads.go +++ /dev/null @@ -1,139 +0,0 @@ -package storage - -import ( - "path" - "strings" - "time" - - log "github.com/Sirupsen/logrus" - "github.com/docker/distribution/context" - storageDriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/uuid" -) - -// uploadData stored the location of temporary files created during a layer upload -// along with the date the upload was started -type uploadData struct { - containingDir string - startedAt time.Time -} - -func newUploadData() uploadData { - return uploadData{ - containingDir: "", - // default to far in future to protect against missing startedat - startedAt: time.Now().Add(time.Duration(10000 * time.Hour)), - } -} - -// PurgeUploads deletes files from the upload directory -// created before olderThan. The list of files deleted and errors -// encountered are returned -func PurgeUploads(ctx context.Context, driver storageDriver.StorageDriver, olderThan time.Time, actuallyDelete bool) ([]string, []error) { - log.Infof("PurgeUploads starting: olderThan=%s, actuallyDelete=%t", olderThan, actuallyDelete) - uploadData, errors := getOutstandingUploads(ctx, driver) - var deleted []string - for _, uploadData := range uploadData { - if uploadData.startedAt.Before(olderThan) { - var err error - log.Infof("Upload files in %s have older date (%s) than purge date (%s). Removing upload directory.", - uploadData.containingDir, uploadData.startedAt, olderThan) - if actuallyDelete { - err = driver.Delete(ctx, uploadData.containingDir) - } - if err == nil { - deleted = append(deleted, uploadData.containingDir) - } else { - errors = append(errors, err) - } - } - } - - log.Infof("Purge uploads finished. Num deleted=%d, num errors=%d", len(deleted), len(errors)) - return deleted, errors -} - -// getOutstandingUploads walks the upload directory, collecting files -// which could be eligible for deletion. The only reliable way to -// classify the age of a file is with the date stored in the startedAt -// file, so gather files by UUID with a date from startedAt. -func getOutstandingUploads(ctx context.Context, driver storageDriver.StorageDriver) (map[string]uploadData, []error) { - var errors []error - uploads := make(map[string]uploadData, 0) - - inUploadDir := false - root, err := pathFor(repositoriesRootPathSpec{}) - if err != nil { - return uploads, append(errors, err) - } - - err = Walk(ctx, driver, root, func(fileInfo storageDriver.FileInfo) error { - filePath := fileInfo.Path() - _, file := path.Split(filePath) - if file[0] == '_' { - // Reserved directory - inUploadDir = (file == "_uploads") - - if fileInfo.IsDir() && !inUploadDir { - return ErrSkipDir - } - - } - - uuid, isContainingDir := uUIDFromPath(filePath) - if uuid == "" { - // Cannot reliably delete - return nil - } - ud, ok := uploads[uuid] - if !ok { - ud = newUploadData() - } - if isContainingDir { - ud.containingDir = filePath - } - if file == "startedat" { - if t, err := readStartedAtFile(driver, filePath); err == nil { - ud.startedAt = t - } else { - errors = pushError(errors, filePath, err) - } - - } - - uploads[uuid] = ud - return nil - }) - - if err != nil { - errors = pushError(errors, root, err) - } - return uploads, errors -} - -// uUIDFromPath extracts the upload UUID from a given path -// If the UUID is the last path component, this is the containing -// directory for all upload files -func uUIDFromPath(path string) (string, bool) { - components := strings.Split(path, "/") - for i := len(components) - 1; i >= 0; i-- { - if u, err := uuid.Parse(components[i]); err == nil { - return u.String(), i == len(components)-1 - } - } - return "", false -} - -// readStartedAtFile reads the date from an upload's startedAtFile -func readStartedAtFile(driver storageDriver.StorageDriver, path string) (time.Time, error) { - // todo:(richardscothern) - pass in a context - startedAtBytes, err := driver.GetContent(context.Background(), path) - if err != nil { - return time.Now(), err - } - startedAt, err := time.Parse(time.RFC3339, string(startedAtBytes)) - if err != nil { - return time.Now(), err - } - return startedAt, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/purgeuploads_test.go b/vendor/github.com/docker/distribution/registry/storage/purgeuploads_test.go deleted file mode 100644 index 3b70f72341..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/purgeuploads_test.go +++ /dev/null @@ -1,166 +0,0 @@ -package storage - -import ( - "path" - "strings" - "testing" - "time" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/inmemory" - "github.com/docker/distribution/uuid" -) - -func testUploadFS(t *testing.T, numUploads int, repoName string, startedAt time.Time) (driver.StorageDriver, context.Context) { - d := inmemory.New() - ctx := context.Background() - for i := 0; i < numUploads; i++ { - addUploads(ctx, t, d, uuid.Generate().String(), repoName, startedAt) - } - return d, ctx -} - -func addUploads(ctx context.Context, t *testing.T, d driver.StorageDriver, uploadID, repo string, startedAt time.Time) { - dataPath, err := pathFor(uploadDataPathSpec{name: repo, id: uploadID}) - if err != nil { - t.Fatalf("Unable to resolve path") - } - if err := d.PutContent(ctx, dataPath, []byte("")); err != nil { - t.Fatalf("Unable to write data file") - } - - startedAtPath, err := pathFor(uploadStartedAtPathSpec{name: repo, id: uploadID}) - if err != nil { - t.Fatalf("Unable to resolve path") - } - - if d.PutContent(ctx, startedAtPath, []byte(startedAt.Format(time.RFC3339))); err != nil { - t.Fatalf("Unable to write startedAt file") - } - -} - -func TestPurgeGather(t *testing.T) { - uploadCount := 5 - fs, ctx := testUploadFS(t, uploadCount, "test-repo", time.Now()) - uploadData, errs := getOutstandingUploads(ctx, fs) - if len(errs) != 0 { - t.Errorf("Unexepected errors: %q", errs) - } - if len(uploadData) != uploadCount { - t.Errorf("Unexpected upload file count: %d != %d", uploadCount, len(uploadData)) - } -} - -func TestPurgeNone(t *testing.T) { - fs, ctx := testUploadFS(t, 10, "test-repo", time.Now()) - oneHourAgo := time.Now().Add(-1 * time.Hour) - deleted, errs := PurgeUploads(ctx, fs, oneHourAgo, true) - if len(errs) != 0 { - t.Error("Unexpected errors", errs) - } - if len(deleted) != 0 { - t.Errorf("Unexpectedly deleted files for time: %s", oneHourAgo) - } -} - -func TestPurgeAll(t *testing.T) { - uploadCount := 10 - oneHourAgo := time.Now().Add(-1 * time.Hour) - fs, ctx := testUploadFS(t, uploadCount, "test-repo", oneHourAgo) - - // Ensure > 1 repos are purged - addUploads(ctx, t, fs, uuid.Generate().String(), "test-repo2", oneHourAgo) - uploadCount++ - - deleted, errs := PurgeUploads(ctx, fs, time.Now(), true) - if len(errs) != 0 { - t.Error("Unexpected errors:", errs) - } - fileCount := uploadCount - if len(deleted) != fileCount { - t.Errorf("Unexpectedly deleted file count %d != %d", - len(deleted), fileCount) - } -} - -func TestPurgeSome(t *testing.T) { - oldUploadCount := 5 - oneHourAgo := time.Now().Add(-1 * time.Hour) - fs, ctx := testUploadFS(t, oldUploadCount, "library/test-repo", oneHourAgo) - - newUploadCount := 4 - - for i := 0; i < newUploadCount; i++ { - addUploads(ctx, t, fs, uuid.Generate().String(), "test-repo", time.Now().Add(1*time.Hour)) - } - - deleted, errs := PurgeUploads(ctx, fs, time.Now(), true) - if len(errs) != 0 { - t.Error("Unexpected errors:", errs) - } - if len(deleted) != oldUploadCount { - t.Errorf("Unexpectedly deleted file count %d != %d", - len(deleted), oldUploadCount) - } -} - -func TestPurgeOnlyUploads(t *testing.T) { - oldUploadCount := 5 - oneHourAgo := time.Now().Add(-1 * time.Hour) - fs, ctx := testUploadFS(t, oldUploadCount, "test-repo", oneHourAgo) - - // Create a directory tree outside _uploads and ensure - // these files aren't deleted. - dataPath, err := pathFor(uploadDataPathSpec{name: "test-repo", id: uuid.Generate().String()}) - if err != nil { - t.Fatalf(err.Error()) - } - nonUploadPath := strings.Replace(dataPath, "_upload", "_important", -1) - if strings.Index(nonUploadPath, "_upload") != -1 { - t.Fatalf("Non-upload path not created correctly") - } - - nonUploadFile := path.Join(nonUploadPath, "file") - if err = fs.PutContent(ctx, nonUploadFile, []byte("")); err != nil { - t.Fatalf("Unable to write data file") - } - - deleted, errs := PurgeUploads(ctx, fs, time.Now(), true) - if len(errs) != 0 { - t.Error("Unexpected errors", errs) - } - for _, file := range deleted { - if strings.Index(file, "_upload") == -1 { - t.Errorf("Non-upload file deleted") - } - } -} - -func TestPurgeMissingStartedAt(t *testing.T) { - oneHourAgo := time.Now().Add(-1 * time.Hour) - fs, ctx := testUploadFS(t, 1, "test-repo", oneHourAgo) - - err := Walk(ctx, fs, "/", func(fileInfo driver.FileInfo) error { - filePath := fileInfo.Path() - _, file := path.Split(filePath) - - if file == "startedat" { - if err := fs.Delete(ctx, filePath); err != nil { - t.Fatalf("Unable to delete startedat file: %s", filePath) - } - } - return nil - }) - if err != nil { - t.Fatalf("Unexpected error during Walk: %s ", err.Error()) - } - deleted, errs := PurgeUploads(ctx, fs, time.Now(), true) - if len(errs) > 0 { - t.Errorf("Unexpected errors") - } - if len(deleted) > 0 { - t.Errorf("Files unexpectedly deleted: %s", deleted) - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/registry.go b/vendor/github.com/docker/distribution/registry/storage/registry.go deleted file mode 100644 index a1128b4a74..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/registry.go +++ /dev/null @@ -1,275 +0,0 @@ -package storage - -import ( - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/cache" - storagedriver "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/libtrust" -) - -// registry is the top-level implementation of Registry for use in the storage -// package. All instances should descend from this object. -type registry struct { - blobStore *blobStore - blobServer *blobServer - statter *blobStatter // global statter service. - blobDescriptorCacheProvider cache.BlobDescriptorCacheProvider - deleteEnabled bool - resumableDigestEnabled bool - schema1SignaturesEnabled bool - schema1SigningKey libtrust.PrivateKey -} - -// RegistryOption is the type used for functional options for NewRegistry. -type RegistryOption func(*registry) error - -// EnableRedirect is a functional option for NewRegistry. It causes the backend -// blob server to attempt using (StorageDriver).URLFor to serve all blobs. -func EnableRedirect(registry *registry) error { - registry.blobServer.redirect = true - return nil -} - -// EnableDelete is a functional option for NewRegistry. It enables deletion on -// the registry. -func EnableDelete(registry *registry) error { - registry.deleteEnabled = true - return nil -} - -// DisableDigestResumption is a functional option for NewRegistry. It should be -// used if the registry is acting as a caching proxy. -func DisableDigestResumption(registry *registry) error { - registry.resumableDigestEnabled = false - return nil -} - -// DisableSchema1Signatures is a functional option for NewRegistry. It disables -// signature storage and ensures all schema1 manifests will only be returned -// with a signature from a provided signing key. -func DisableSchema1Signatures(registry *registry) error { - registry.schema1SignaturesEnabled = false - return nil -} - -// Schema1SigningKey returns a functional option for NewRegistry. It sets the -// signing key for adding a signature to all schema1 manifests. This should be -// used in conjunction with disabling signature store. -func Schema1SigningKey(key libtrust.PrivateKey) RegistryOption { - return func(registry *registry) error { - registry.schema1SigningKey = key - return nil - } -} - -// BlobDescriptorCacheProvider returns a functional option for -// NewRegistry. It creates a cached blob statter for use by the -// registry. -func BlobDescriptorCacheProvider(blobDescriptorCacheProvider cache.BlobDescriptorCacheProvider) RegistryOption { - // TODO(aaronl): The duplication of statter across several objects is - // ugly, and prevents us from using interface types in the registry - // struct. Ideally, blobStore and blobServer should be lazily - // initialized, and use the current value of - // blobDescriptorCacheProvider. - return func(registry *registry) error { - if blobDescriptorCacheProvider != nil { - statter := cache.NewCachedBlobStatter(blobDescriptorCacheProvider, registry.statter) - registry.blobStore.statter = statter - registry.blobServer.statter = statter - registry.blobDescriptorCacheProvider = blobDescriptorCacheProvider - } - return nil - } -} - -// NewRegistry creates a new registry instance from the provided driver. The -// resulting registry may be shared by multiple goroutines but is cheap to -// allocate. If the Redirect option is specified, the backend blob server will -// attempt to use (StorageDriver).URLFor to serve all blobs. -func NewRegistry(ctx context.Context, driver storagedriver.StorageDriver, options ...RegistryOption) (distribution.Namespace, error) { - // create global statter - statter := &blobStatter{ - driver: driver, - } - - bs := &blobStore{ - driver: driver, - statter: statter, - } - - registry := ®istry{ - blobStore: bs, - blobServer: &blobServer{ - driver: driver, - statter: statter, - pathFn: bs.path, - }, - statter: statter, - resumableDigestEnabled: true, - schema1SignaturesEnabled: true, - } - - for _, option := range options { - if err := option(registry); err != nil { - return nil, err - } - } - - return registry, nil -} - -// Scope returns the namespace scope for a registry. The registry -// will only serve repositories contained within this scope. -func (reg *registry) Scope() distribution.Scope { - return distribution.GlobalScope -} - -// Repository returns an instance of the repository tied to the registry. -// Instances should not be shared between goroutines but are cheap to -// allocate. In general, they should be request scoped. -func (reg *registry) Repository(ctx context.Context, canonicalName reference.Named) (distribution.Repository, error) { - var descriptorCache distribution.BlobDescriptorService - if reg.blobDescriptorCacheProvider != nil { - var err error - descriptorCache, err = reg.blobDescriptorCacheProvider.RepositoryScoped(canonicalName.Name()) - if err != nil { - return nil, err - } - } - - return &repository{ - ctx: ctx, - registry: reg, - name: canonicalName, - descriptorCache: descriptorCache, - }, nil -} - -func (reg *registry) Blobs() distribution.BlobEnumerator { - return reg.blobStore -} - -func (reg *registry) BlobStatter() distribution.BlobStatter { - return reg.statter -} - -// repository provides name-scoped access to various services. -type repository struct { - *registry - ctx context.Context - name reference.Named - descriptorCache distribution.BlobDescriptorService -} - -// Name returns the name of the repository. -func (repo *repository) Named() reference.Named { - return repo.name -} - -func (repo *repository) Tags(ctx context.Context) distribution.TagService { - tags := &tagStore{ - repository: repo, - blobStore: repo.registry.blobStore, - } - - return tags -} - -// Manifests returns an instance of ManifestService. Instantiation is cheap and -// may be context sensitive in the future. The instance should be used similar -// to a request local. -func (repo *repository) Manifests(ctx context.Context, options ...distribution.ManifestServiceOption) (distribution.ManifestService, error) { - manifestLinkPathFns := []linkPathFunc{ - // NOTE(stevvooe): Need to search through multiple locations since - // 2.1.0 unintentionally linked into _layers. - manifestRevisionLinkPath, - blobLinkPath, - } - - manifestDirectoryPathSpec := manifestRevisionsPathSpec{name: repo.name.Name()} - - blobStore := &linkedBlobStore{ - ctx: ctx, - blobStore: repo.blobStore, - repository: repo, - deleteEnabled: repo.registry.deleteEnabled, - blobAccessController: &linkedBlobStatter{ - blobStore: repo.blobStore, - repository: repo, - linkPathFns: manifestLinkPathFns, - }, - - // TODO(stevvooe): linkPath limits this blob store to only - // manifests. This instance cannot be used for blob checks. - linkPathFns: manifestLinkPathFns, - linkDirectoryPathSpec: manifestDirectoryPathSpec, - } - - ms := &manifestStore{ - ctx: ctx, - repository: repo, - blobStore: blobStore, - schema1Handler: &signedManifestHandler{ - ctx: ctx, - repository: repo, - blobStore: blobStore, - signatures: &signatureStore{ - ctx: ctx, - repository: repo, - blobStore: repo.blobStore, - }, - }, - schema2Handler: &schema2ManifestHandler{ - ctx: ctx, - repository: repo, - blobStore: blobStore, - }, - manifestListHandler: &manifestListHandler{ - ctx: ctx, - repository: repo, - blobStore: blobStore, - }, - } - - // Apply options - for _, option := range options { - err := option.Apply(ms) - if err != nil { - return nil, err - } - } - - return ms, nil -} - -// Blobs returns an instance of the BlobStore. Instantiation is cheap and -// may be context sensitive in the future. The instance should be used similar -// to a request local. -func (repo *repository) Blobs(ctx context.Context) distribution.BlobStore { - var statter distribution.BlobDescriptorService = &linkedBlobStatter{ - blobStore: repo.blobStore, - repository: repo, - linkPathFns: []linkPathFunc{blobLinkPath}, - } - - if repo.descriptorCache != nil { - statter = cache.NewCachedBlobStatter(repo.descriptorCache, statter) - } - - return &linkedBlobStore{ - registry: repo.registry, - blobStore: repo.blobStore, - blobServer: repo.blobServer, - blobAccessController: statter, - repository: repo, - ctx: ctx, - - // TODO(stevvooe): linkPath limits this blob store to only layers. - // This instance cannot be used for manifest checks. - linkPathFns: []linkPathFunc{blobLinkPath}, - deleteEnabled: repo.registry.deleteEnabled, - resumableDigestEnabled: repo.resumableDigestEnabled, - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/schema2manifesthandler.go b/vendor/github.com/docker/distribution/registry/storage/schema2manifesthandler.go deleted file mode 100644 index 115786e26f..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/schema2manifesthandler.go +++ /dev/null @@ -1,99 +0,0 @@ -package storage - -import ( - "fmt" - - "encoding/json" - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest/schema2" -) - -//schema2ManifestHandler is a ManifestHandler that covers schema2 manifests. -type schema2ManifestHandler struct { - repository *repository - blobStore *linkedBlobStore - ctx context.Context -} - -var _ ManifestHandler = &schema2ManifestHandler{} - -func (ms *schema2ManifestHandler) Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) { - context.GetLogger(ms.ctx).Debug("(*schema2ManifestHandler).Unmarshal") - - var m schema2.DeserializedManifest - if err := json.Unmarshal(content, &m); err != nil { - return nil, err - } - - return &m, nil -} - -func (ms *schema2ManifestHandler) Put(ctx context.Context, manifest distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) { - context.GetLogger(ms.ctx).Debug("(*schema2ManifestHandler).Put") - - m, ok := manifest.(*schema2.DeserializedManifest) - if !ok { - return "", fmt.Errorf("non-schema2 manifest put to schema2ManifestHandler: %T", manifest) - } - - if err := ms.verifyManifest(ms.ctx, *m, skipDependencyVerification); err != nil { - return "", err - } - - mt, payload, err := m.Payload() - if err != nil { - return "", err - } - - revision, err := ms.blobStore.Put(ctx, mt, payload) - if err != nil { - context.GetLogger(ctx).Errorf("error putting payload into blobstore: %v", err) - return "", err - } - - // Link the revision into the repository. - if err := ms.blobStore.linkBlob(ctx, revision); err != nil { - return "", err - } - - return revision.Digest, nil -} - -// verifyManifest ensures that the manifest content is valid from the -// perspective of the registry. As a policy, the registry only tries to store -// valid content, leaving trust policies of that content up to consumers. -func (ms *schema2ManifestHandler) verifyManifest(ctx context.Context, mnfst schema2.DeserializedManifest, skipDependencyVerification bool) error { - var errs distribution.ErrManifestVerification - - if !skipDependencyVerification { - target := mnfst.Target() - _, err := ms.repository.Blobs(ctx).Stat(ctx, target.Digest) - if err != nil { - if err != distribution.ErrBlobUnknown { - errs = append(errs, err) - } - - // On error here, we always append unknown blob errors. - errs = append(errs, distribution.ErrManifestBlobUnknown{Digest: target.Digest}) - } - - for _, fsLayer := range mnfst.References() { - _, err := ms.repository.Blobs(ctx).Stat(ctx, fsLayer.Digest) - if err != nil { - if err != distribution.ErrBlobUnknown { - errs = append(errs, err) - } - - // On error here, we always append unknown blob errors. - errs = append(errs, distribution.ErrManifestBlobUnknown{Digest: fsLayer.Digest}) - } - } - } - if len(errs) != 0 { - return errs - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/signaturestore.go b/vendor/github.com/docker/distribution/registry/storage/signaturestore.go deleted file mode 100644 index 2940e04152..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/signaturestore.go +++ /dev/null @@ -1,131 +0,0 @@ -package storage - -import ( - "path" - "sync" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" -) - -type signatureStore struct { - repository *repository - blobStore *blobStore - ctx context.Context -} - -func (s *signatureStore) Get(dgst digest.Digest) ([][]byte, error) { - signaturesPath, err := pathFor(manifestSignaturesPathSpec{ - name: s.repository.Named().Name(), - revision: dgst, - }) - - if err != nil { - return nil, err - } - - // Need to append signature digest algorithm to path to get all items. - // Perhaps, this should be in the pathMapper but it feels awkward. This - // can be eliminated by implementing listAll on drivers. - signaturesPath = path.Join(signaturesPath, "sha256") - - signaturePaths, err := s.blobStore.driver.List(s.ctx, signaturesPath) - if err != nil { - return nil, err - } - - var wg sync.WaitGroup - type result struct { - index int - signature []byte - err error - } - ch := make(chan result) - - bs := s.linkedBlobStore(s.ctx, dgst) - for i, sigPath := range signaturePaths { - sigdgst, err := digest.ParseDigest("sha256:" + path.Base(sigPath)) - if err != nil { - context.GetLogger(s.ctx).Errorf("could not get digest from path: %q, skipping", sigPath) - continue - } - - wg.Add(1) - go func(idx int, sigdgst digest.Digest) { - defer wg.Done() - context.GetLogger(s.ctx). - Debugf("fetching signature %q", sigdgst) - - r := result{index: idx} - - if p, err := bs.Get(s.ctx, sigdgst); err != nil { - context.GetLogger(s.ctx). - Errorf("error fetching signature %q: %v", sigdgst, err) - r.err = err - } else { - r.signature = p - } - - ch <- r - }(i, sigdgst) - } - done := make(chan struct{}) - go func() { - wg.Wait() - close(done) - }() - - // aggregrate the results - signatures := make([][]byte, len(signaturePaths)) -loop: - for { - select { - case result := <-ch: - signatures[result.index] = result.signature - if result.err != nil && err == nil { - // only set the first one. - err = result.err - } - case <-done: - break loop - } - } - - return signatures, err -} - -func (s *signatureStore) Put(dgst digest.Digest, signatures ...[]byte) error { - bs := s.linkedBlobStore(s.ctx, dgst) - for _, signature := range signatures { - if _, err := bs.Put(s.ctx, "application/json", signature); err != nil { - return err - } - } - return nil -} - -// linkedBlobStore returns the namedBlobStore of the signatures for the -// manifest with the given digest. Effectively, each signature link path -// layout is a unique linked blob store. -func (s *signatureStore) linkedBlobStore(ctx context.Context, revision digest.Digest) *linkedBlobStore { - linkpath := func(name string, dgst digest.Digest) (string, error) { - return pathFor(manifestSignatureLinkPathSpec{ - name: name, - revision: revision, - signature: dgst, - }) - - } - - return &linkedBlobStore{ - ctx: ctx, - repository: s.repository, - blobStore: s.blobStore, - blobAccessController: &linkedBlobStatter{ - blobStore: s.blobStore, - repository: s.repository, - linkPathFns: []linkPathFunc{linkpath}, - }, - linkPathFns: []linkPathFunc{linkpath}, - } -} diff --git a/vendor/github.com/docker/distribution/registry/storage/signedmanifesthandler.go b/vendor/github.com/docker/distribution/registry/storage/signedmanifesthandler.go deleted file mode 100644 index 8e13dd932b..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/signedmanifesthandler.go +++ /dev/null @@ -1,167 +0,0 @@ -package storage - -import ( - "encoding/json" - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/reference" - "github.com/docker/libtrust" -) - -// signedManifestHandler is a ManifestHandler that covers schema1 manifests. It -// can unmarshal and put schema1 manifests that have been signed by libtrust. -type signedManifestHandler struct { - repository *repository - blobStore *linkedBlobStore - ctx context.Context - signatures *signatureStore -} - -var _ ManifestHandler = &signedManifestHandler{} - -func (ms *signedManifestHandler) Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) { - context.GetLogger(ms.ctx).Debug("(*signedManifestHandler).Unmarshal") - - var ( - signatures [][]byte - err error - ) - if ms.repository.schema1SignaturesEnabled { - // Fetch the signatures for the manifest - signatures, err = ms.signatures.Get(dgst) - if err != nil { - return nil, err - } - } - - jsig, err := libtrust.NewJSONSignature(content, signatures...) - if err != nil { - return nil, err - } - - if ms.repository.schema1SigningKey != nil { - if err := jsig.Sign(ms.repository.schema1SigningKey); err != nil { - return nil, err - } - } else if !ms.repository.schema1SignaturesEnabled { - return nil, fmt.Errorf("missing signing key with signature store disabled") - } - - // Extract the pretty JWS - raw, err := jsig.PrettySignature("signatures") - if err != nil { - return nil, err - } - - var sm schema1.SignedManifest - if err := json.Unmarshal(raw, &sm); err != nil { - return nil, err - } - return &sm, nil -} - -func (ms *signedManifestHandler) Put(ctx context.Context, manifest distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) { - context.GetLogger(ms.ctx).Debug("(*signedManifestHandler).Put") - - sm, ok := manifest.(*schema1.SignedManifest) - if !ok { - return "", fmt.Errorf("non-schema1 manifest put to signedManifestHandler: %T", manifest) - } - - if err := ms.verifyManifest(ms.ctx, *sm, skipDependencyVerification); err != nil { - return "", err - } - - mt := schema1.MediaTypeManifest - payload := sm.Canonical - - revision, err := ms.blobStore.Put(ctx, mt, payload) - if err != nil { - context.GetLogger(ctx).Errorf("error putting payload into blobstore: %v", err) - return "", err - } - - // Link the revision into the repository. - if err := ms.blobStore.linkBlob(ctx, revision); err != nil { - return "", err - } - - if ms.repository.schema1SignaturesEnabled { - // Grab each json signature and store them. - signatures, err := sm.Signatures() - if err != nil { - return "", err - } - - if err := ms.signatures.Put(revision.Digest, signatures...); err != nil { - return "", err - } - } - - return revision.Digest, nil -} - -// verifyManifest ensures that the manifest content is valid from the -// perspective of the registry. It ensures that the signature is valid for the -// enclosed payload. As a policy, the registry only tries to store valid -// content, leaving trust policies of that content up to consumers. -func (ms *signedManifestHandler) verifyManifest(ctx context.Context, mnfst schema1.SignedManifest, skipDependencyVerification bool) error { - var errs distribution.ErrManifestVerification - - if len(mnfst.Name) > reference.NameTotalLengthMax { - errs = append(errs, - distribution.ErrManifestNameInvalid{ - Name: mnfst.Name, - Reason: fmt.Errorf("manifest name must not be more than %v characters", reference.NameTotalLengthMax), - }) - } - - if !reference.NameRegexp.MatchString(mnfst.Name) { - errs = append(errs, - distribution.ErrManifestNameInvalid{ - Name: mnfst.Name, - Reason: fmt.Errorf("invalid manifest name format"), - }) - } - - if len(mnfst.History) != len(mnfst.FSLayers) { - errs = append(errs, fmt.Errorf("mismatched history and fslayer cardinality %d != %d", - len(mnfst.History), len(mnfst.FSLayers))) - } - - if _, err := schema1.Verify(&mnfst); err != nil { - switch err { - case libtrust.ErrMissingSignatureKey, libtrust.ErrInvalidJSONContent, libtrust.ErrMissingSignatureKey: - errs = append(errs, distribution.ErrManifestUnverified{}) - default: - if err.Error() == "invalid signature" { // TODO(stevvooe): This should be exported by libtrust - errs = append(errs, distribution.ErrManifestUnverified{}) - } else { - errs = append(errs, err) - } - } - } - - if !skipDependencyVerification { - for _, fsLayer := range mnfst.References() { - _, err := ms.repository.Blobs(ctx).Stat(ctx, fsLayer.Digest) - if err != nil { - if err != distribution.ErrBlobUnknown { - errs = append(errs, err) - } - - // On error here, we always append unknown blob errors. - errs = append(errs, distribution.ErrManifestBlobUnknown{Digest: fsLayer.Digest}) - } - } - } - if len(errs) != 0 { - return errs - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/tagstore.go b/vendor/github.com/docker/distribution/registry/storage/tagstore.go deleted file mode 100644 index 4386ffcac9..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/tagstore.go +++ /dev/null @@ -1,191 +0,0 @@ -package storage - -import ( - "path" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - storagedriver "github.com/docker/distribution/registry/storage/driver" -) - -var _ distribution.TagService = &tagStore{} - -// tagStore provides methods to manage manifest tags in a backend storage driver. -// This implementation uses the same on-disk layout as the (now deleted) tag -// store. This provides backward compatibility with current registry deployments -// which only makes use of the Digest field of the returned distribution.Descriptor -// but does not enable full roundtripping of Descriptor objects -type tagStore struct { - repository *repository - blobStore *blobStore -} - -// All returns all tags -func (ts *tagStore) All(ctx context.Context) ([]string, error) { - var tags []string - - pathSpec, err := pathFor(manifestTagPathSpec{ - name: ts.repository.Named().Name(), - }) - if err != nil { - return tags, err - } - - entries, err := ts.blobStore.driver.List(ctx, pathSpec) - if err != nil { - switch err := err.(type) { - case storagedriver.PathNotFoundError: - return tags, distribution.ErrRepositoryUnknown{Name: ts.repository.Named().Name()} - default: - return tags, err - } - } - - for _, entry := range entries { - _, filename := path.Split(entry) - tags = append(tags, filename) - } - - return tags, nil -} - -// exists returns true if the specified manifest tag exists in the repository. -func (ts *tagStore) exists(ctx context.Context, tag string) (bool, error) { - tagPath, err := pathFor(manifestTagCurrentPathSpec{ - name: ts.repository.Named().Name(), - tag: tag, - }) - - if err != nil { - return false, err - } - - exists, err := exists(ctx, ts.blobStore.driver, tagPath) - if err != nil { - return false, err - } - - return exists, nil -} - -// Tag tags the digest with the given tag, updating the the store to point at -// the current tag. The digest must point to a manifest. -func (ts *tagStore) Tag(ctx context.Context, tag string, desc distribution.Descriptor) error { - currentPath, err := pathFor(manifestTagCurrentPathSpec{ - name: ts.repository.Named().Name(), - tag: tag, - }) - - if err != nil { - return err - } - - lbs := ts.linkedBlobStore(ctx, tag) - - // Link into the index - if err := lbs.linkBlob(ctx, desc); err != nil { - return err - } - - // Overwrite the current link - return ts.blobStore.link(ctx, currentPath, desc.Digest) -} - -// resolve the current revision for name and tag. -func (ts *tagStore) Get(ctx context.Context, tag string) (distribution.Descriptor, error) { - currentPath, err := pathFor(manifestTagCurrentPathSpec{ - name: ts.repository.Named().Name(), - tag: tag, - }) - - if err != nil { - return distribution.Descriptor{}, err - } - - revision, err := ts.blobStore.readlink(ctx, currentPath) - if err != nil { - switch err.(type) { - case storagedriver.PathNotFoundError: - return distribution.Descriptor{}, distribution.ErrTagUnknown{Tag: tag} - } - - return distribution.Descriptor{}, err - } - - return distribution.Descriptor{Digest: revision}, nil -} - -// Untag removes the tag association -func (ts *tagStore) Untag(ctx context.Context, tag string) error { - tagPath, err := pathFor(manifestTagPathSpec{ - name: ts.repository.Named().Name(), - tag: tag, - }) - - switch err.(type) { - case storagedriver.PathNotFoundError: - return distribution.ErrTagUnknown{Tag: tag} - case nil: - break - default: - return err - } - - return ts.blobStore.driver.Delete(ctx, tagPath) -} - -// linkedBlobStore returns the linkedBlobStore for the named tag, allowing one -// to index manifest blobs by tag name. While the tag store doesn't map -// precisely to the linked blob store, using this ensures the links are -// managed via the same code path. -func (ts *tagStore) linkedBlobStore(ctx context.Context, tag string) *linkedBlobStore { - return &linkedBlobStore{ - blobStore: ts.blobStore, - repository: ts.repository, - ctx: ctx, - linkPathFns: []linkPathFunc{func(name string, dgst digest.Digest) (string, error) { - return pathFor(manifestTagIndexEntryLinkPathSpec{ - name: name, - tag: tag, - revision: dgst, - }) - - }}, - } -} - -// Lookup recovers a list of tags which refer to this digest. When a manifest is deleted by -// digest, tag entries which point to it need to be recovered to avoid dangling tags. -func (ts *tagStore) Lookup(ctx context.Context, desc distribution.Descriptor) ([]string, error) { - allTags, err := ts.All(ctx) - switch err.(type) { - case distribution.ErrRepositoryUnknown: - // This tag store has been initialized but not yet populated - break - case nil: - break - default: - return nil, err - } - - var tags []string - for _, tag := range allTags { - tagLinkPathSpec := manifestTagCurrentPathSpec{ - name: ts.repository.Named().Name(), - tag: tag, - } - - tagLinkPath, err := pathFor(tagLinkPathSpec) - tagDigest, err := ts.blobStore.readlink(ctx, tagLinkPath) - if err != nil { - return nil, err - } - - if tagDigest == desc.Digest { - tags = append(tags, tag) - } - } - - return tags, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/tagstore_test.go b/vendor/github.com/docker/distribution/registry/storage/tagstore_test.go deleted file mode 100644 index 554a46bf77..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/tagstore_test.go +++ /dev/null @@ -1,209 +0,0 @@ -package storage - -import ( - "testing" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/reference" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -type tagsTestEnv struct { - ts distribution.TagService - ctx context.Context -} - -func testTagStore(t *testing.T) *tagsTestEnv { - ctx := context.Background() - d := inmemory.New() - reg, err := NewRegistry(ctx, d) - if err != nil { - t.Fatal(err) - } - - repoRef, _ := reference.ParseNamed("a/b") - repo, err := reg.Repository(ctx, repoRef) - if err != nil { - t.Fatal(err) - } - - return &tagsTestEnv{ - ctx: ctx, - ts: repo.Tags(ctx), - } -} - -func TestTagStoreTag(t *testing.T) { - env := testTagStore(t) - tags := env.ts - ctx := env.ctx - - d := distribution.Descriptor{} - err := tags.Tag(ctx, "latest", d) - if err == nil { - t.Errorf("unexpected error putting malformed descriptor : %s", err) - } - - d.Digest = "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - err = tags.Tag(ctx, "latest", d) - if err != nil { - t.Error(err) - } - - d1, err := tags.Get(ctx, "latest") - if err != nil { - t.Error(err) - } - - if d1.Digest != d.Digest { - t.Error("put and get digest differ") - } - - // Overwrite existing - d.Digest = "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" - err = tags.Tag(ctx, "latest", d) - if err != nil { - t.Error(err) - } - - d1, err = tags.Get(ctx, "latest") - if err != nil { - t.Error(err) - } - - if d1.Digest != d.Digest { - t.Error("put and get digest differ") - } -} - -func TestTagStoreUnTag(t *testing.T) { - env := testTagStore(t) - tags := env.ts - ctx := env.ctx - desc := distribution.Descriptor{Digest: "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"} - - err := tags.Untag(ctx, "latest") - if err == nil { - t.Errorf("Expected error untagging non-existant tag") - } - - err = tags.Tag(ctx, "latest", desc) - if err != nil { - t.Error(err) - } - - err = tags.Untag(ctx, "latest") - if err != nil { - t.Error(err) - } - - errExpect := distribution.ErrTagUnknown{Tag: "latest"}.Error() - _, err = tags.Get(ctx, "latest") - if err == nil || err.Error() != errExpect { - t.Error("Expected error getting untagged tag") - } -} - -func TestTagStoreAll(t *testing.T) { - env := testTagStore(t) - tagStore := env.ts - ctx := env.ctx - - alpha := "abcdefghijklmnopqrstuvwxyz" - for i := 0; i < len(alpha); i++ { - tag := alpha[i] - desc := distribution.Descriptor{Digest: "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"} - err := tagStore.Tag(ctx, string(tag), desc) - if err != nil { - t.Error(err) - } - } - - all, err := tagStore.All(ctx) - if err != nil { - t.Error(err) - } - if len(all) != len(alpha) { - t.Errorf("Unexpected count returned from enumerate") - } - - for i, c := range all { - if c != string(alpha[i]) { - t.Errorf("unexpected tag in enumerate %s", c) - } - } - - removed := "a" - err = tagStore.Untag(ctx, removed) - if err != nil { - t.Error(err) - } - - all, err = tagStore.All(ctx) - if err != nil { - t.Error(err) - } - for _, tag := range all { - if tag == removed { - t.Errorf("unexpected tag in enumerate %s", removed) - } - } - -} - -func TestTagLookup(t *testing.T) { - env := testTagStore(t) - tagStore := env.ts - ctx := env.ctx - - descA := distribution.Descriptor{Digest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} - desc0 := distribution.Descriptor{Digest: "sha256:0000000000000000000000000000000000000000000000000000000000000000"} - - tags, err := tagStore.Lookup(ctx, descA) - if err != nil { - t.Fatal(err) - } - if len(tags) != 0 { - t.Fatalf("Lookup returned > 0 tags from empty store") - } - - err = tagStore.Tag(ctx, "a", descA) - if err != nil { - t.Fatal(err) - } - - err = tagStore.Tag(ctx, "b", descA) - if err != nil { - t.Fatal(err) - } - - err = tagStore.Tag(ctx, "0", desc0) - if err != nil { - t.Fatal(err) - } - - err = tagStore.Tag(ctx, "1", desc0) - if err != nil { - t.Fatal(err) - } - - tags, err = tagStore.Lookup(ctx, descA) - if err != nil { - t.Fatal(err) - } - - if len(tags) != 2 { - t.Errorf("Lookup of descA returned %d tags, expected 2", len(tags)) - } - - tags, err = tagStore.Lookup(ctx, desc0) - if err != nil { - t.Fatal(err) - } - - if len(tags) != 2 { - t.Errorf("Lookup of descB returned %d tags, expected 2", len(tags)) - } - -} diff --git a/vendor/github.com/docker/distribution/registry/storage/util.go b/vendor/github.com/docker/distribution/registry/storage/util.go deleted file mode 100644 index 773d7ba0be..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/util.go +++ /dev/null @@ -1,21 +0,0 @@ -package storage - -import ( - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/storage/driver" -) - -// Exists provides a utility method to test whether or not a path exists in -// the given driver. -func exists(ctx context.Context, drv driver.StorageDriver, path string) (bool, error) { - if _, err := drv.Stat(ctx, path); err != nil { - switch err := err.(type) { - case driver.PathNotFoundError: - return false, nil - default: - return false, err - } - } - - return true, nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/vacuum.go b/vendor/github.com/docker/distribution/registry/storage/vacuum.go deleted file mode 100644 index 3bdfebf277..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/vacuum.go +++ /dev/null @@ -1,67 +0,0 @@ -package storage - -import ( - "path" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/registry/storage/driver" -) - -// vacuum contains functions for cleaning up repositories and blobs -// These functions will only reliably work on strongly consistent -// storage systems. -// https://en.wikipedia.org/wiki/Consistency_model - -// NewVacuum creates a new Vacuum -func NewVacuum(ctx context.Context, driver driver.StorageDriver) Vacuum { - return Vacuum{ - ctx: ctx, - driver: driver, - } -} - -// Vacuum removes content from the filesystem -type Vacuum struct { - driver driver.StorageDriver - ctx context.Context -} - -// RemoveBlob removes a blob from the filesystem -func (v Vacuum) RemoveBlob(dgst string) error { - d, err := digest.ParseDigest(dgst) - if err != nil { - return err - } - - blobPath, err := pathFor(blobPathSpec{digest: d}) - if err != nil { - return err - } - - context.GetLogger(v.ctx).Infof("Deleting blob: %s", blobPath) - - err = v.driver.Delete(v.ctx, blobPath) - if err != nil { - return err - } - - return nil -} - -// RemoveRepository removes a repository directory from the -// filesystem -func (v Vacuum) RemoveRepository(repoName string) error { - rootForRepository, err := pathFor(repositoriesRootPathSpec{}) - if err != nil { - return err - } - repoDir := path.Join(rootForRepository, repoName) - context.GetLogger(v.ctx).Infof("Deleting repo: %s", repoDir) - err = v.driver.Delete(v.ctx, repoDir) - if err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/distribution/registry/storage/walk.go b/vendor/github.com/docker/distribution/registry/storage/walk.go deleted file mode 100644 index d979796ebd..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/walk.go +++ /dev/null @@ -1,59 +0,0 @@ -package storage - -import ( - "errors" - "fmt" - "sort" - - "github.com/docker/distribution/context" - storageDriver "github.com/docker/distribution/registry/storage/driver" -) - -// ErrSkipDir is used as a return value from onFileFunc to indicate that -// the directory named in the call is to be skipped. It is not returned -// as an error by any function. -var ErrSkipDir = errors.New("skip this directory") - -// WalkFn is called once per file by Walk -// If the returned error is ErrSkipDir and fileInfo refers -// to a directory, the directory will not be entered and Walk -// will continue the traversal. Otherwise Walk will return -type WalkFn func(fileInfo storageDriver.FileInfo) error - -// Walk traverses a filesystem defined within driver, starting -// from the given path, calling f on each file -func Walk(ctx context.Context, driver storageDriver.StorageDriver, from string, f WalkFn) error { - children, err := driver.List(ctx, from) - if err != nil { - return err - } - sort.Stable(sort.StringSlice(children)) - for _, child := range children { - // TODO(stevvooe): Calling driver.Stat for every entry is quite - // expensive when running against backends with a slow Stat - // implementation, such as s3. This is very likely a serious - // performance bottleneck. - fileInfo, err := driver.Stat(ctx, child) - if err != nil { - return err - } - err = f(fileInfo) - skipDir := (err == ErrSkipDir) - if err != nil && !skipDir { - return err - } - - if fileInfo.IsDir() && !skipDir { - if err := Walk(ctx, driver, child, f); err != nil { - return err - } - } - } - return nil -} - -// pushError formats an error type given a path and an error -// and pushes it to a slice of errors -func pushError(errors []error, path string, err error) []error { - return append(errors, fmt.Errorf("%s: %s", path, err)) -} diff --git a/vendor/github.com/docker/distribution/registry/storage/walk_test.go b/vendor/github.com/docker/distribution/registry/storage/walk_test.go deleted file mode 100644 index 3d7a4b1b63..0000000000 --- a/vendor/github.com/docker/distribution/registry/storage/walk_test.go +++ /dev/null @@ -1,152 +0,0 @@ -package storage - -import ( - "fmt" - "sort" - "testing" - - "github.com/docker/distribution/context" - "github.com/docker/distribution/registry/storage/driver" - "github.com/docker/distribution/registry/storage/driver/inmemory" -) - -func testFS(t *testing.T) (driver.StorageDriver, map[string]string, context.Context) { - d := inmemory.New() - ctx := context.Background() - - expected := map[string]string{ - "/a": "dir", - "/a/b": "dir", - "/a/b/c": "dir", - "/a/b/c/d": "file", - "/a/b/c/e": "file", - "/a/b/f": "dir", - "/a/b/f/g": "file", - "/a/b/f/h": "file", - "/a/b/f/i": "file", - "/z": "dir", - "/z/y": "file", - } - - for p, typ := range expected { - if typ != "file" { - continue - } - - if err := d.PutContent(ctx, p, []byte(p)); err != nil { - t.Fatalf("unable to put content into fixture: %v", err) - } - } - - return d, expected, ctx -} - -func TestWalkErrors(t *testing.T) { - d, expected, ctx := testFS(t) - fileCount := len(expected) - err := Walk(ctx, d, "", func(fileInfo driver.FileInfo) error { - return nil - }) - if err == nil { - t.Error("Expected invalid root err") - } - - errEarlyExpected := fmt.Errorf("Early termination") - - err = Walk(ctx, d, "/", func(fileInfo driver.FileInfo) error { - // error on the 2nd file - if fileInfo.Path() == "/a/b" { - return errEarlyExpected - } - - delete(expected, fileInfo.Path()) - return nil - }) - if len(expected) != fileCount-1 { - t.Error("Walk failed to terminate with error") - } - if err != errEarlyExpected { - if err == nil { - t.Fatalf("expected an error due to early termination") - } else { - t.Error(err.Error()) - } - } - - err = Walk(ctx, d, "/nonexistent", func(fileInfo driver.FileInfo) error { - return nil - }) - if err == nil { - t.Errorf("Expected missing file err") - } - -} - -func TestWalk(t *testing.T) { - d, expected, ctx := testFS(t) - var traversed []string - err := Walk(ctx, d, "/", func(fileInfo driver.FileInfo) error { - filePath := fileInfo.Path() - filetype, ok := expected[filePath] - if !ok { - t.Fatalf("Unexpected file in walk: %q", filePath) - } - - if fileInfo.IsDir() { - if filetype != "dir" { - t.Errorf("Unexpected file type: %q", filePath) - } - } else { - if filetype != "file" { - t.Errorf("Unexpected file type: %q", filePath) - } - - // each file has its own path as the contents. If the length - // doesn't match the path length, fail. - if fileInfo.Size() != int64(len(fileInfo.Path())) { - t.Fatalf("unexpected size for %q: %v != %v", - fileInfo.Path(), fileInfo.Size(), len(fileInfo.Path())) - } - } - delete(expected, filePath) - traversed = append(traversed, filePath) - return nil - }) - if len(expected) > 0 { - t.Errorf("Missed files in walk: %q", expected) - } - - if !sort.StringsAreSorted(traversed) { - t.Errorf("result should be sorted: %v", traversed) - } - - if err != nil { - t.Fatalf(err.Error()) - } -} - -func TestWalkSkipDir(t *testing.T) { - d, expected, ctx := testFS(t) - err := Walk(ctx, d, "/", func(fileInfo driver.FileInfo) error { - filePath := fileInfo.Path() - if filePath == "/a/b" { - // skip processing /a/b/c and /a/b/c/d - return ErrSkipDir - } - delete(expected, filePath) - return nil - }) - if err != nil { - t.Fatalf(err.Error()) - } - if _, ok := expected["/a/b/c"]; !ok { - t.Errorf("/a/b/c not skipped") - } - if _, ok := expected["/a/b/c/d"]; !ok { - t.Errorf("/a/b/c/d not skipped") - } - if _, ok := expected["/a/b/c/e"]; !ok { - t.Errorf("/a/b/c/e not skipped") - } - -} diff --git a/vendor/github.com/docker/distribution/tags.go b/vendor/github.com/docker/distribution/tags.go deleted file mode 100644 index 5030565963..0000000000 --- a/vendor/github.com/docker/distribution/tags.go +++ /dev/null @@ -1,27 +0,0 @@ -package distribution - -import ( - "github.com/docker/distribution/context" -) - -// TagService provides access to information about tagged objects. -type TagService interface { - // Get retrieves the descriptor identified by the tag. Some - // implementations may differentiate between "trusted" tags and - // "untrusted" tags. If a tag is "untrusted", the mapping will be returned - // as an ErrTagUntrusted error, with the target descriptor. - Get(ctx context.Context, tag string) (Descriptor, error) - - // Tag associates the tag with the provided descriptor, updating the - // current association, if needed. - Tag(ctx context.Context, tag string, desc Descriptor) error - - // Untag removes the given tag association - Untag(ctx context.Context, tag string) error - - // All returns the set of tags managed by this tag service - All(ctx context.Context) ([]string, error) - - // Lookup returns the set of tags referencing the given digest. - Lookup(ctx context.Context, digest Descriptor) ([]string, error) -} diff --git a/vendor/github.com/docker/distribution/testutil/handler.go b/vendor/github.com/docker/distribution/testutil/handler.go deleted file mode 100644 index 00cd8a6ac2..0000000000 --- a/vendor/github.com/docker/distribution/testutil/handler.go +++ /dev/null @@ -1,148 +0,0 @@ -package testutil - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "sort" - "strings" -) - -// RequestResponseMap is an ordered mapping from Requests to Responses -type RequestResponseMap []RequestResponseMapping - -// RequestResponseMapping defines a Response to be sent in response to a given -// Request -type RequestResponseMapping struct { - Request Request - Response Response -} - -// Request is a simplified http.Request object -type Request struct { - // Method is the http method of the request, for example GET - Method string - - // Route is the http route of this request - Route string - - // QueryParams are the query parameters of this request - QueryParams map[string][]string - - // Body is the byte contents of the http request - Body []byte - - // Headers are the header for this request - Headers http.Header -} - -func (r Request) String() string { - queryString := "" - if len(r.QueryParams) > 0 { - keys := make([]string, 0, len(r.QueryParams)) - queryParts := make([]string, 0, len(r.QueryParams)) - for k := range r.QueryParams { - keys = append(keys, k) - } - sort.Strings(keys) - for _, k := range keys { - for _, val := range r.QueryParams[k] { - queryParts = append(queryParts, fmt.Sprintf("%s=%s", k, url.QueryEscape(val))) - } - } - queryString = "?" + strings.Join(queryParts, "&") - } - var headers []string - if len(r.Headers) > 0 { - var headerKeys []string - for k := range r.Headers { - headerKeys = append(headerKeys, k) - } - sort.Strings(headerKeys) - - for _, k := range headerKeys { - for _, val := range r.Headers[k] { - headers = append(headers, fmt.Sprintf("%s:%s", k, val)) - } - } - - } - return fmt.Sprintf("%s %s%s\n%s\n%s", r.Method, r.Route, queryString, headers, r.Body) -} - -// Response is a simplified http.Response object -type Response struct { - // Statuscode is the http status code of the Response - StatusCode int - - // Headers are the http headers of this Response - Headers http.Header - - // Body is the response body - Body []byte -} - -// testHandler is an http.Handler with a defined mapping from Request to an -// ordered list of Response objects -type testHandler struct { - responseMap map[string][]Response -} - -// NewHandler returns a new test handler that responds to defined requests -// with specified responses -// Each time a Request is received, the next Response is returned in the -// mapping, until no Responses are defined, at which point a 404 is sent back -func NewHandler(requestResponseMap RequestResponseMap) http.Handler { - responseMap := make(map[string][]Response) - for _, mapping := range requestResponseMap { - responses, ok := responseMap[mapping.Request.String()] - if ok { - responseMap[mapping.Request.String()] = append(responses, mapping.Response) - } else { - responseMap[mapping.Request.String()] = []Response{mapping.Response} - } - } - return &testHandler{responseMap: responseMap} -} - -func (app *testHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - defer r.Body.Close() - - requestBody, _ := ioutil.ReadAll(r.Body) - request := Request{ - Method: r.Method, - Route: r.URL.Path, - QueryParams: r.URL.Query(), - Body: requestBody, - Headers: make(map[string][]string), - } - - // Add headers of interest here - for k, v := range r.Header { - if k == "If-None-Match" { - request.Headers[k] = v - } - } - - responses, ok := app.responseMap[request.String()] - - if !ok || len(responses) == 0 { - http.NotFound(w, r) - return - } - - response := responses[0] - app.responseMap[request.String()] = responses[1:] - - responseHeader := w.Header() - for k, v := range response.Headers { - responseHeader[k] = v - } - - w.WriteHeader(response.StatusCode) - - io.Copy(w, bytes.NewReader(response.Body)) -} diff --git a/vendor/github.com/docker/distribution/testutil/manifests.go b/vendor/github.com/docker/distribution/testutil/manifests.go deleted file mode 100644 index c4f9fef53a..0000000000 --- a/vendor/github.com/docker/distribution/testutil/manifests.go +++ /dev/null @@ -1,87 +0,0 @@ -package testutil - -import ( - "fmt" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" - "github.com/docker/distribution/manifest" - "github.com/docker/distribution/manifest/manifestlist" - "github.com/docker/distribution/manifest/schema1" - "github.com/docker/distribution/manifest/schema2" - "github.com/docker/libtrust" -) - -// MakeManifestList constructs a manifest list out of a list of manifest digests -func MakeManifestList(blobstatter distribution.BlobStatter, manifestDigests []digest.Digest) (*manifestlist.DeserializedManifestList, error) { - ctx := context.Background() - - var manifestDescriptors []manifestlist.ManifestDescriptor - for _, manifestDigest := range manifestDigests { - descriptor, err := blobstatter.Stat(ctx, manifestDigest) - if err != nil { - return nil, err - } - platformSpec := manifestlist.PlatformSpec{ - Architecture: "atari2600", - OS: "CP/M", - Variant: "ternary", - Features: []string{"VLIW", "superscalaroutoforderdevnull"}, - } - manifestDescriptor := manifestlist.ManifestDescriptor{ - Descriptor: descriptor, - Platform: platformSpec, - } - manifestDescriptors = append(manifestDescriptors, manifestDescriptor) - } - - return manifestlist.FromDescriptors(manifestDescriptors) -} - -// MakeSchema1Manifest constructs a schema 1 manifest from a given list of digests and returns -// the digest of the manifest -func MakeSchema1Manifest(digests []digest.Digest) (distribution.Manifest, error) { - manifest := schema1.Manifest{ - Versioned: manifest.Versioned{ - SchemaVersion: 1, - }, - Name: "who", - Tag: "cares", - } - - for _, digest := range digests { - manifest.FSLayers = append(manifest.FSLayers, schema1.FSLayer{BlobSum: digest}) - manifest.History = append(manifest.History, schema1.History{V1Compatibility: ""}) - } - - pk, err := libtrust.GenerateECP256PrivateKey() - if err != nil { - return nil, fmt.Errorf("unexpected error generating private key: %v", err) - } - - signedManifest, err := schema1.Sign(&manifest, pk) - if err != nil { - return nil, fmt.Errorf("error signing manifest: %v", err) - } - - return signedManifest, nil -} - -// MakeSchema2Manifest constructs a schema 2 manifest from a given list of digests and returns -// the digest of the manifest -func MakeSchema2Manifest(repository distribution.Repository, digests []digest.Digest) (distribution.Manifest, error) { - ctx := context.Background() - blobStore := repository.Blobs(ctx) - builder := schema2.NewManifestBuilder(blobStore, []byte{}) - for _, digest := range digests { - builder.AppendReference(distribution.Descriptor{Digest: digest}) - } - - manifest, err := builder.Build(ctx) - if err != nil { - return nil, fmt.Errorf("unexpected error generating manifest: %v", err) - } - - return manifest, nil -} diff --git a/vendor/github.com/docker/distribution/testutil/tarfile.go b/vendor/github.com/docker/distribution/testutil/tarfile.go deleted file mode 100644 index baa5ac5acb..0000000000 --- a/vendor/github.com/docker/distribution/testutil/tarfile.go +++ /dev/null @@ -1,116 +0,0 @@ -package testutil - -import ( - "archive/tar" - "bytes" - "crypto/rand" - "fmt" - "io" - mrand "math/rand" - "time" - - "github.com/docker/distribution" - "github.com/docker/distribution/context" - "github.com/docker/distribution/digest" -) - -// CreateRandomTarFile creates a random tarfile, returning it as an -// io.ReadSeeker along with its digest. An error is returned if there is a -// problem generating valid content. -func CreateRandomTarFile() (rs io.ReadSeeker, dgst digest.Digest, err error) { - nFiles := mrand.Intn(10) + 10 - target := &bytes.Buffer{} - wr := tar.NewWriter(target) - - // Perturb this on each iteration of the loop below. - header := &tar.Header{ - Mode: 0644, - ModTime: time.Now(), - Typeflag: tar.TypeReg, - Uname: "randocalrissian", - Gname: "cloudcity", - AccessTime: time.Now(), - ChangeTime: time.Now(), - } - - for fileNumber := 0; fileNumber < nFiles; fileNumber++ { - fileSize := mrand.Int63n(1<<20) + 1<<20 - - header.Name = fmt.Sprint(fileNumber) - header.Size = fileSize - - if err := wr.WriteHeader(header); err != nil { - return nil, "", err - } - - randomData := make([]byte, fileSize) - - // Fill up the buffer with some random data. - n, err := rand.Read(randomData) - - if n != len(randomData) { - return nil, "", fmt.Errorf("short read creating random reader: %v bytes != %v bytes", n, len(randomData)) - } - - if err != nil { - return nil, "", err - } - - nn, err := io.Copy(wr, bytes.NewReader(randomData)) - if nn != fileSize { - return nil, "", fmt.Errorf("short copy writing random file to tar") - } - - if err != nil { - return nil, "", err - } - - if err := wr.Flush(); err != nil { - return nil, "", err - } - } - - if err := wr.Close(); err != nil { - return nil, "", err - } - - dgst = digest.FromBytes(target.Bytes()) - - return bytes.NewReader(target.Bytes()), dgst, nil -} - -// CreateRandomLayers returns a map of n digests. We don't particularly care -// about the order of said digests (since they're all random anyway). -func CreateRandomLayers(n int) (map[digest.Digest]io.ReadSeeker, error) { - digestMap := map[digest.Digest]io.ReadSeeker{} - for i := 0; i < n; i++ { - rs, ds, err := CreateRandomTarFile() - if err != nil { - return nil, fmt.Errorf("unexpected error generating test layer file: %v", err) - } - - dgst := digest.Digest(ds) - digestMap[dgst] = rs - } - return digestMap, nil -} - -// UploadBlobs lets you upload blobs to a repository -func UploadBlobs(repository distribution.Repository, layers map[digest.Digest]io.ReadSeeker) error { - ctx := context.Background() - for digest, rs := range layers { - wr, err := repository.Blobs(ctx).Create(ctx) - if err != nil { - return fmt.Errorf("unexpected error creating upload: %v", err) - } - - if _, err := io.Copy(wr, rs); err != nil { - return fmt.Errorf("unexpected error copying to upload: %v", err) - } - - if _, err := wr.Commit(ctx, distribution.Descriptor{Digest: digest}); err != nil { - return fmt.Errorf("unexpected error committinng upload: %v", err) - } - } - return nil -} diff --git a/vendor/github.com/docker/distribution/uuid/uuid.go b/vendor/github.com/docker/distribution/uuid/uuid.go deleted file mode 100644 index d433ccaf51..0000000000 --- a/vendor/github.com/docker/distribution/uuid/uuid.go +++ /dev/null @@ -1,126 +0,0 @@ -// Package uuid provides simple UUID generation. Only version 4 style UUIDs -// can be generated. -// -// Please see http://tools.ietf.org/html/rfc4122 for details on UUIDs. -package uuid - -import ( - "crypto/rand" - "fmt" - "io" - "os" - "syscall" - "time" -) - -const ( - // Bits is the number of bits in a UUID - Bits = 128 - - // Size is the number of bytes in a UUID - Size = Bits / 8 - - format = "%08x-%04x-%04x-%04x-%012x" -) - -var ( - // ErrUUIDInvalid indicates a parsed string is not a valid uuid. - ErrUUIDInvalid = fmt.Errorf("invalid uuid") - - // Loggerf can be used to override the default logging destination. Such - // log messages in this library should be logged at warning or higher. - Loggerf = func(format string, args ...interface{}) {} -) - -// UUID represents a UUID value. UUIDs can be compared and set to other values -// and accessed by byte. -type UUID [Size]byte - -// Generate creates a new, version 4 uuid. -func Generate() (u UUID) { - const ( - // ensures we backoff for less than 450ms total. Use the following to - // select new value, in units of 10ms: - // n*(n+1)/2 = d -> n^2 + n - 2d -> n = (sqrt(8d + 1) - 1)/2 - maxretries = 9 - backoff = time.Millisecond * 10 - ) - - var ( - totalBackoff time.Duration - count int - retries int - ) - - for { - // This should never block but the read may fail. Because of this, - // we just try to read the random number generator until we get - // something. This is a very rare condition but may happen. - b := time.Duration(retries) * backoff - time.Sleep(b) - totalBackoff += b - - n, err := io.ReadFull(rand.Reader, u[count:]) - if err != nil { - if retryOnError(err) && retries < maxretries { - count += n - retries++ - Loggerf("error generating version 4 uuid, retrying: %v", err) - continue - } - - // Any other errors represent a system problem. What did someone - // do to /dev/urandom? - panic(fmt.Errorf("error reading random number generator, retried for %v: %v", totalBackoff.String(), err)) - } - - break - } - - u[6] = (u[6] & 0x0f) | 0x40 // set version byte - u[8] = (u[8] & 0x3f) | 0x80 // set high order byte 0b10{8,9,a,b} - - return u -} - -// Parse attempts to extract a uuid from the string or returns an error. -func Parse(s string) (u UUID, err error) { - if len(s) != 36 { - return UUID{}, ErrUUIDInvalid - } - - // create stack addresses for each section of the uuid. - p := make([][]byte, 5) - - if _, err := fmt.Sscanf(s, format, &p[0], &p[1], &p[2], &p[3], &p[4]); err != nil { - return u, err - } - - copy(u[0:4], p[0]) - copy(u[4:6], p[1]) - copy(u[6:8], p[2]) - copy(u[8:10], p[3]) - copy(u[10:16], p[4]) - - return -} - -func (u UUID) String() string { - return fmt.Sprintf(format, u[:4], u[4:6], u[6:8], u[8:10], u[10:]) -} - -// retryOnError tries to detect whether or not retrying would be fruitful. -func retryOnError(err error) bool { - switch err := err.(type) { - case *os.PathError: - return retryOnError(err.Err) // unpack the target error - case syscall.Errno: - if err == syscall.EPERM { - // EPERM represents an entropy pool exhaustion, a condition under - // which we backoff and retry. - return true - } - } - - return false -} diff --git a/vendor/github.com/docker/distribution/uuid/uuid_test.go b/vendor/github.com/docker/distribution/uuid/uuid_test.go deleted file mode 100644 index 09c3a7bb4d..0000000000 --- a/vendor/github.com/docker/distribution/uuid/uuid_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package uuid - -import ( - "testing" -) - -const iterations = 1000 - -func TestUUID4Generation(t *testing.T) { - for i := 0; i < iterations; i++ { - u := Generate() - - if u[6]&0xf0 != 0x40 { - t.Fatalf("version byte not correctly set: %v, %08b %08b", u, u[6], u[6]&0xf0) - } - - if u[8]&0xc0 != 0x80 { - t.Fatalf("top order 8th byte not correctly set: %v, %b", u, u[8]) - } - } -} - -func TestParseAndEquality(t *testing.T) { - for i := 0; i < iterations; i++ { - u := Generate() - - parsed, err := Parse(u.String()) - if err != nil { - t.Fatalf("error parsing uuid %v: %v", u, err) - } - - if parsed != u { - t.Fatalf("parsing round trip failed: %v != %v", parsed, u) - } - } - - for _, c := range []string{ - "bad", - "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", // correct length, incorrect format - " 20cc7775-2671-43c7-8742-51d1cfa23258", // leading space - "20cc7775-2671-43c7-8742-51d1cfa23258 ", // trailing space - "00000000-0000-0000-0000-x00000000000", // out of range character - } { - if _, err := Parse(c); err == nil { - t.Fatalf("parsing %q should have failed", c) - } - } -} diff --git a/vendor/github.com/docker/distribution/version/print.go b/vendor/github.com/docker/distribution/version/print.go deleted file mode 100644 index a82bce39f6..0000000000 --- a/vendor/github.com/docker/distribution/version/print.go +++ /dev/null @@ -1,26 +0,0 @@ -package version - -import ( - "fmt" - "io" - "os" -) - -// FprintVersion outputs the version string to the writer, in the following -// format, followed by a newline: -// -// -// -// For example, a binary "registry" built from github.com/docker/distribution -// with version "v2.0" would print the following: -// -// registry github.com/docker/distribution v2.0 -// -func FprintVersion(w io.Writer) { - fmt.Fprintln(w, os.Args[0], Package, Version) -} - -// PrintVersion outputs the version information, from Fprint, to stdout. -func PrintVersion() { - FprintVersion(os.Stdout) -} diff --git a/vendor/github.com/docker/distribution/version/version.go b/vendor/github.com/docker/distribution/version/version.go deleted file mode 100644 index b1b880dfd1..0000000000 --- a/vendor/github.com/docker/distribution/version/version.go +++ /dev/null @@ -1,11 +0,0 @@ -package version - -// Package is the overall, canonical project import path under which the -// package was built. -var Package = "github.com/docker/distribution" - -// Version indicates which version of the binary is running. This is set to -// the latest release tag by hand, always suffixed by "+unknown". During -// build, it will be replaced by the actual version. The value here will be -// used if the registry is run after a go get based install. -var Version = "v2.4.0+unknown" diff --git a/vendor/github.com/docker/distribution/version/version.sh b/vendor/github.com/docker/distribution/version/version.sh deleted file mode 100755 index 53e29ce9be..0000000000 --- a/vendor/github.com/docker/distribution/version/version.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# This bash script outputs the current, desired content of version.go, using -# git describe. For best effect, pipe this to the target file. Generally, this -# only needs to updated for releases. The actual value of will be replaced -# during build time if the makefile is used. - -set -e - -cat < 0 { if u, ok := v.Interface().(json.Unmarshaler); ok { diff --git a/vendor/github.com/ghodss/yaml/yaml.go b/vendor/github.com/ghodss/yaml/yaml.go index c02beacb9a..4fb4054a8b 100644 --- a/vendor/github.com/ghodss/yaml/yaml.go +++ b/vendor/github.com/ghodss/yaml/yaml.go @@ -15,12 +15,12 @@ import ( func Marshal(o interface{}) ([]byte, error) { j, err := json.Marshal(o) if err != nil { - return nil, fmt.Errorf("error marshaling into JSON: ", err) + return nil, fmt.Errorf("error marshaling into JSON: %v", err) } y, err := JSONToYAML(j) if err != nil { - return nil, fmt.Errorf("error converting JSON to YAML: ", err) + return nil, fmt.Errorf("error converting JSON to YAML: %v", err) } return y, nil @@ -48,7 +48,7 @@ func JSONToYAML(j []byte) ([]byte, error) { 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 + // etc.) when unmarshalling 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) diff --git a/vendor/github.com/ghodss/yaml/yaml_test.go b/vendor/github.com/ghodss/yaml/yaml_test.go index 0ae0954e90..505af45301 100644 --- a/vendor/github.com/ghodss/yaml/yaml_test.go +++ b/vendor/github.com/ghodss/yaml/yaml_test.go @@ -88,6 +88,22 @@ func TestUnmarshal(t *testing.T) { s4 := UnmarshalStringMap{} e4 := UnmarshalStringMap{map[string]string{"b": "1"}} unmarshal(t, y, &s4, &e4) + + y = []byte(` +a: + name: TestA +b: + name: TestB +`) + type NamedThing struct { + Name string `json:"name"` + } + s5 := map[string]*NamedThing{} + e5 := map[string]*NamedThing{ + "a": &NamedThing{Name: "TestA"}, + "b": &NamedThing{Name: "TestB"}, + } + unmarshal(t, y, &s5, &e5) } func unmarshal(t *testing.T, y []byte, s, e interface{}) { diff --git a/vendor/github.com/go-openapi/analysis/.drone.sec b/vendor/github.com/go-openapi/analysis/.drone.sec deleted file mode 100644 index 769db5005e..0000000000 --- a/vendor/github.com/go-openapi/analysis/.drone.sec +++ /dev/null @@ -1 +0,0 @@ -eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.gU9bGHDmyTBt_nmOh7gxp_8MUeL4ckrzh3yys59Crqypnp0Rq52Q4B7T8_4u4elt-KF3jwHXfIjTWByyce8yS6FiYfKPVuCF_7qbSC5ES84Hqs0uigZP5qGFFYXC5EZlSw7giMgLrqfjbOLPhCpnTlWjfvlRssVbvWx4I6eXQEp5EaymJn2K-pgbKLaMpgkFcDUGxDeIkK9X9XQ2sYicoRPdRZgIZfMXBL05hphlCorXp1TCNAYaoI3qDmerzDGcT5YzIRKrlW2TUEy0EI4iySCbTpdlWhj3S1mt03P9Hmo8TkTfAG2Eu6XYs59RoqXCoGZNXHfsPqV5hyLpINNSzg.4VNQ5QHe2Ig7Giam.1fN53mPplTSOg0Mr8fwNH6FVjf8DNc-YyHhaET5IK4LeY0FPoyQZIjEEIqXAgzdKJ7uNfjf_dqLe2hRd-QqYjPacIHqI8FHWTqsDHC9maL3gouDxHZ3TsYVtCnO5iXrqZXpSWjDjEHKR3PQdUbBEIpEDBgkhkAN2eUHZuD1Hjy65SMWNX0eQ2CbIEgcPxHnoeGXx8k1c0VHZuXecuYYJPyGG88UWQD0aIusIR99za5cIIflT7pfvXQMuLLCcy5Y6RWkzLaNBg7R1GOZvCiOi7jmjYSKMdIxHELC4uO37n_UenvE3KWqjt9i82jbq6XMNoN6Gcwq0Qwl7PN1rtJRK6tlczm0G24Tq8t94cDLmEz2AAHdQ9T0d7rz3hS66BK4h49D_1HYoq1ZQ9lOT_Ph0TtVFjd0-_wR3k5h5A1_0azFRt_udYbn_v7-Wbga8CjGnaIpHz5hWTrutP4euorJAyyiANnOUVDeJNZYX4D-zdjT4Yoplk0mU5zo4Uo-oKDS_Nirr71uaZHcvh3jlryi0vMiDCg61CI1i1ulHeTiT65G2zDR4byOcL4cCa_vTRnmjK-2I3arPyYQfDVmXicKo8pP8RghdQ9c8ad5XkTbxOodcONU_yVqoKr8JQDuS6FNx3ck.0btSTYMPtKCu86bQsBX5Ew \ No newline at end of file diff --git a/vendor/github.com/go-openapi/analysis/.drone.yml b/vendor/github.com/go-openapi/analysis/.drone.yml deleted file mode 100644 index 6c26833116..0000000000 --- a/vendor/github.com/go-openapi/analysis/.drone.yml +++ /dev/null @@ -1,36 +0,0 @@ -clone: - path: github.com/go-openapi/analysis - -matrix: - GO_VERSION: - - "1.6" - -build: - integration: - image: golang:$$GO_VERSION - pull: true - commands: - - go get -u github.com/stretchr/testify/assert - - go get -u gopkg.in/yaml.v2 - - go get -u github.com/go-openapi/swag - - go get -u github.com/go-openapi/jsonpointer - - go get -u github.com/go-openapi/spec - - go get -u github.com/go-openapi/loads/fmts - - go test -race ./... - - go test -v -cover -coverprofile=coverage.out -covermode=count ./... - -notify: - slack: - channel: bots - webhook_url: $$SLACK_URL - username: drone - -publish: - coverage: - server: https://coverage.vmware.run - token: $$GITHUB_TOKEN - # threshold: 70 - # must_increase: true - when: - matrix: - GO_VERSION: "1.6" diff --git a/vendor/github.com/go-openapi/analysis/.github/CONTRIBUTING.md b/vendor/github.com/go-openapi/analysis/.github/CONTRIBUTING.md deleted file mode 100644 index 7dea4240d7..0000000000 --- a/vendor/github.com/go-openapi/analysis/.github/CONTRIBUTING.md +++ /dev/null @@ -1,117 +0,0 @@ -## Contribution Guidelines - -### Pull requests are always welcome - -We are always thrilled to receive pull requests, and do our best to -process them as fast as possible. Not sure if that typo is worth a pull -request? Do it! We will appreciate it. - -If your pull request is not accepted on the first try, don't be -discouraged! If there's a problem with the implementation, hopefully you -received feedback on what to improve. - -We're trying very hard to keep go-swagger lean and focused. We don't want it -to do everything for everybody. This means that we might decide against -incorporating a new feature. However, there might be a way to implement -that feature *on top of* go-swagger. - - -### Conventions - -Fork the repo and make changes on your fork in a feature branch: - -- If it's a bugfix branch, name it XXX-something where XXX is the number of the - issue -- If it's a feature branch, create an enhancement issue to announce your - intentions, and name it XXX-something where XXX is the number of the issue. - -Submit unit tests for your changes. Go has a great test framework built in; use -it! Take a look at existing tests for inspiration. Run the full test suite on -your branch before submitting a pull request. - -Update the documentation when creating or modifying features. Test -your documentation changes for clarity, concision, and correctness, as -well as a clean documentation build. See ``docs/README.md`` for more -information on building the docs and how docs get released. - -Write clean code. Universally formatted code promotes ease of writing, reading, -and maintenance. Always run `gofmt -s -w file.go` on each changed file before -committing your changes. Most editors have plugins that do this automatically. - -Pull requests descriptions should be as clear as possible and include a -reference to all the issues that they address. - -Pull requests must not contain commits from other users or branches. - -Commit messages must start with a capitalized and short summary (max. 50 -chars) written in the imperative, followed by an optional, more detailed -explanatory text which is separated from the summary by an empty line. - -Code review comments may be added to your pull request. Discuss, then make the -suggested modifications and push additional commits to your feature branch. Be -sure to post a comment after pushing. The new commits will show up in the pull -request automatically, but the reviewers will not be notified unless you -comment. - -Before the pull request is merged, make sure that you squash your commits into -logical units of work using `git rebase -i` and `git push -f`. After every -commit the test suite should be passing. Include documentation changes in the -same commit so that a revert would remove all traces of the feature or fix. - -Commits that fix or close an issue should include a reference like `Closes #XXX` -or `Fixes #XXX`, which will automatically close the issue when merged. - -### Sign your work - -The sign-off is a simple line at the end of the explanation for the -patch, which certifies that you wrote it or otherwise have the right to -pass it on as an open-source patch. The rules are pretty simple: if you -can certify the below (from -[developercertificate.org](http://developercertificate.org/)): - -``` -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -660 York Street, Suite 102, -San Francisco, CA 94110 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` - -then you just add a line to every git commit message: - - Signed-off-by: Joe Smith - -using your real name (sorry, no pseudonyms or anonymous contributions.) - -You can add the sign off when creating the git commit via `git commit -s`. diff --git a/vendor/github.com/go-openapi/analysis/.gitignore b/vendor/github.com/go-openapi/analysis/.gitignore deleted file mode 100644 index dd91ed6a04..0000000000 --- a/vendor/github.com/go-openapi/analysis/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -secrets.yml -coverage.out diff --git a/vendor/github.com/go-openapi/analysis/.pullapprove.yml b/vendor/github.com/go-openapi/analysis/.pullapprove.yml deleted file mode 100644 index 4ab790edb9..0000000000 --- a/vendor/github.com/go-openapi/analysis/.pullapprove.yml +++ /dev/null @@ -1,12 +0,0 @@ -approve_by_comment: true -approve_regex: '^(:shipit:|:\+1:|\+1|LGTM|lgtm|Approved)' -reject_regex: ^[Rr]ejected -reset_on_push: false -reviewers: - members: - - casualjim - - frapposelli - - vburenin - - pytlesk4 - name: pullapprove - required: 1 diff --git a/vendor/github.com/go-openapi/analysis/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/analysis/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/analysis/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# 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/analysis/README.md b/vendor/github.com/go-openapi/analysis/README.md deleted file mode 100644 index b6e526c006..0000000000 --- a/vendor/github.com/go-openapi/analysis/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# OpenAPI initiative analysis [![Build Status](https://ci.vmware.run/api/badges/go-openapi/analysis/status.svg)](https://ci.vmware.run/go-openapi/analysis) [![Coverage](https://coverage.vmware.run/badges/go-openapi/analysis/coverage.svg)](https://coverage.vmware.run/go-openapi/analysis) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) - -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/analysis/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/analysis?status.svg)](http://godoc.org/github.com/go-openapi/analysis) - - -A foundational library to analyze an OAI specification document for easier reasoning about the content. \ No newline at end of file diff --git a/vendor/github.com/go-openapi/analysis/analyzer.go b/vendor/github.com/go-openapi/analysis/analyzer.go deleted file mode 100644 index d388db3a77..0000000000 --- a/vendor/github.com/go-openapi/analysis/analyzer.go +++ /dev/null @@ -1,614 +0,0 @@ -// 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 analysis - -import ( - "fmt" - slashpath "path" - "strconv" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -type referenceAnalysis struct { - schemas map[string]spec.Ref - responses map[string]spec.Ref - parameters map[string]spec.Ref - items map[string]spec.Ref - allRefs map[string]spec.Ref - referenced struct { - schemas map[string]SchemaRef - responses map[string]*spec.Response - parameters map[string]*spec.Parameter - } -} - -func (r *referenceAnalysis) addRef(key string, ref spec.Ref) { - r.allRefs["#"+key] = ref -} - -func (r *referenceAnalysis) addItemsRef(key string, items *spec.Items) { - r.items["#"+key] = items.Ref - r.addRef(key, items.Ref) -} - -func (r *referenceAnalysis) addSchemaRef(key string, ref SchemaRef) { - r.schemas["#"+key] = ref.Schema.Ref - r.addRef(key, ref.Schema.Ref) -} - -func (r *referenceAnalysis) addResponseRef(key string, resp *spec.Response) { - r.responses["#"+key] = resp.Ref - r.addRef(key, resp.Ref) -} - -func (r *referenceAnalysis) addParamRef(key string, param *spec.Parameter) { - r.parameters["#"+key] = param.Ref - r.addRef(key, param.Ref) -} - -// New takes a swagger spec object and returns an analyzed spec document. -// The analyzed document contains a number of indices that make it easier to -// reason about semantics of a swagger specification for use in code generation -// or validation etc. -func New(doc *spec.Swagger) *Spec { - a := &Spec{ - spec: doc, - consumes: make(map[string]struct{}, 150), - produces: make(map[string]struct{}, 150), - authSchemes: make(map[string]struct{}, 150), - operations: make(map[string]map[string]*spec.Operation, 150), - allSchemas: make(map[string]SchemaRef, 150), - allOfs: make(map[string]SchemaRef, 150), - references: referenceAnalysis{ - schemas: make(map[string]spec.Ref, 150), - responses: make(map[string]spec.Ref, 150), - parameters: make(map[string]spec.Ref, 150), - items: make(map[string]spec.Ref, 150), - allRefs: make(map[string]spec.Ref, 150), - }, - } - a.references.referenced.schemas = make(map[string]SchemaRef, 150) - a.references.referenced.responses = make(map[string]*spec.Response, 150) - a.references.referenced.parameters = make(map[string]*spec.Parameter, 150) - a.initialize() - return a -} - -// Spec takes a swagger spec object and turns it into a registry -// with a bunch of utility methods to act on the information in the spec -type Spec struct { - spec *spec.Swagger - consumes map[string]struct{} - produces map[string]struct{} - authSchemes map[string]struct{} - operations map[string]map[string]*spec.Operation - references referenceAnalysis - allSchemas map[string]SchemaRef - allOfs map[string]SchemaRef -} - -func (s *Spec) initialize() { - for _, c := range s.spec.Consumes { - s.consumes[c] = struct{}{} - } - for _, c := range s.spec.Produces { - s.produces[c] = struct{}{} - } - for _, ss := range s.spec.Security { - for k := range ss { - s.authSchemes[k] = struct{}{} - } - } - for path, pathItem := range s.AllPaths() { - s.analyzeOperations(path, &pathItem) - } - - for name, parameter := range s.spec.Parameters { - refPref := slashpath.Join("/parameters", jsonpointer.Escape(name)) - if parameter.Items != nil { - s.analyzeItems("items", parameter.Items, refPref) - } - if parameter.In == "body" && parameter.Schema != nil { - s.analyzeSchema("schema", *parameter.Schema, refPref) - } - } - - for name, response := range s.spec.Responses { - refPref := slashpath.Join("/responses", jsonpointer.Escape(name)) - for _, v := range response.Headers { - if v.Items != nil { - s.analyzeItems("items", v.Items, refPref) - } - } - if response.Schema != nil { - s.analyzeSchema("schema", *response.Schema, refPref) - } - } - - for name, schema := range s.spec.Definitions { - s.analyzeSchema(name, schema, "/definitions") - } - // TODO: after analyzing all things and flattening schemas etc - // resolve all the collected references to their final representations - // best put in a separate method because this could get expensive -} - -func (s *Spec) analyzeOperations(path string, pi *spec.PathItem) { - // TODO: resolve refs here? - op := pi - s.analyzeOperation("GET", path, op.Get) - s.analyzeOperation("PUT", path, op.Put) - s.analyzeOperation("POST", path, op.Post) - s.analyzeOperation("PATCH", path, op.Patch) - s.analyzeOperation("DELETE", path, op.Delete) - s.analyzeOperation("HEAD", path, op.Head) - s.analyzeOperation("OPTIONS", path, op.Options) - for i, param := range op.Parameters { - refPref := slashpath.Join("/paths", jsonpointer.Escape(path), "parameters", strconv.Itoa(i)) - if param.Ref.String() != "" { - s.references.addParamRef(refPref, ¶m) - } - if param.Items != nil { - s.analyzeItems("items", param.Items, refPref) - } - if param.Schema != nil { - s.analyzeSchema("schema", *param.Schema, refPref) - } - } -} - -func (s *Spec) analyzeItems(name string, items *spec.Items, prefix string) { - if items == nil { - return - } - refPref := slashpath.Join(prefix, name) - s.analyzeItems(name, items.Items, refPref) - if items.Ref.String() != "" { - s.references.addItemsRef(refPref, items) - } -} - -func (s *Spec) analyzeOperation(method, path string, op *spec.Operation) { - if op == nil { - return - } - - for _, c := range op.Consumes { - s.consumes[c] = struct{}{} - } - for _, c := range op.Produces { - s.produces[c] = struct{}{} - } - for _, ss := range op.Security { - for k := range ss { - s.authSchemes[k] = struct{}{} - } - } - if _, ok := s.operations[method]; !ok { - s.operations[method] = make(map[string]*spec.Operation) - } - s.operations[method][path] = op - prefix := slashpath.Join("/paths", jsonpointer.Escape(path), strings.ToLower(method)) - for i, param := range op.Parameters { - refPref := slashpath.Join(prefix, "parameters", strconv.Itoa(i)) - if param.Ref.String() != "" { - s.references.addParamRef(refPref, ¶m) - } - s.analyzeItems("items", param.Items, refPref) - if param.In == "body" && param.Schema != nil { - s.analyzeSchema("schema", *param.Schema, refPref) - } - } - if op.Responses != nil { - if op.Responses.Default != nil { - refPref := slashpath.Join(prefix, "responses", "default") - if op.Responses.Default.Ref.String() != "" { - s.references.addResponseRef(refPref, op.Responses.Default) - } - for _, v := range op.Responses.Default.Headers { - s.analyzeItems("items", v.Items, refPref) - } - if op.Responses.Default.Schema != nil { - s.analyzeSchema("schema", *op.Responses.Default.Schema, refPref) - } - } - for k, res := range op.Responses.StatusCodeResponses { - refPref := slashpath.Join(prefix, "responses", strconv.Itoa(k)) - if res.Ref.String() != "" { - s.references.addResponseRef(refPref, &res) - } - for _, v := range res.Headers { - s.analyzeItems("items", v.Items, refPref) - } - if res.Schema != nil { - s.analyzeSchema("schema", *res.Schema, refPref) - } - } - } -} - -func (s *Spec) analyzeSchema(name string, schema spec.Schema, prefix string) { - refURI := slashpath.Join(prefix, jsonpointer.Escape(name)) - schRef := SchemaRef{ - Name: name, - Schema: &schema, - Ref: spec.MustCreateRef("#" + refURI), - } - s.allSchemas["#"+refURI] = schRef - if schema.Ref.String() != "" { - s.references.addSchemaRef(refURI, schRef) - } - for k, v := range schema.Definitions { - s.analyzeSchema(k, v, slashpath.Join(refURI, "definitions")) - } - for k, v := range schema.Properties { - s.analyzeSchema(k, v, slashpath.Join(refURI, "properties")) - } - for k, v := range schema.PatternProperties { - s.analyzeSchema(k, v, slashpath.Join(refURI, "patternProperties")) - } - for i, v := range schema.AllOf { - s.analyzeSchema(strconv.Itoa(i), v, slashpath.Join(refURI, "allOf")) - } - if len(schema.AllOf) > 0 { - s.allOfs["#"+refURI] = SchemaRef{Name: name, Schema: &schema, Ref: spec.MustCreateRef("#" + refURI)} - } - for i, v := range schema.AnyOf { - s.analyzeSchema(strconv.Itoa(i), v, slashpath.Join(refURI, "anyOf")) - } - for i, v := range schema.OneOf { - s.analyzeSchema(strconv.Itoa(i), v, slashpath.Join(refURI, "oneOf")) - } - if schema.Not != nil { - s.analyzeSchema("not", *schema.Not, refURI) - } - if schema.AdditionalProperties != nil && schema.AdditionalProperties.Schema != nil { - s.analyzeSchema("additionalProperties", *schema.AdditionalProperties.Schema, refURI) - } - if schema.AdditionalItems != nil && schema.AdditionalItems.Schema != nil { - s.analyzeSchema("additionalItems", *schema.AdditionalItems.Schema, refURI) - } - if schema.Items != nil { - if schema.Items.Schema != nil { - s.analyzeSchema("items", *schema.Items.Schema, refURI) - } - for i, sch := range schema.Items.Schemas { - s.analyzeSchema(strconv.Itoa(i), sch, slashpath.Join(refURI, "items")) - } - } -} - -// SecurityRequirement is a representation of a security requirement for an operation -type SecurityRequirement struct { - Name string - Scopes []string -} - -// SecurityRequirementsFor gets the security requirements for the operation -func (s *Spec) SecurityRequirementsFor(operation *spec.Operation) []SecurityRequirement { - if s.spec.Security == nil && operation.Security == nil { - return nil - } - - schemes := s.spec.Security - if operation.Security != nil { - schemes = operation.Security - } - - unique := make(map[string]SecurityRequirement) - for _, scheme := range schemes { - for k, v := range scheme { - if _, ok := unique[k]; !ok { - unique[k] = SecurityRequirement{Name: k, Scopes: v} - } - } - } - - var result []SecurityRequirement - for _, v := range unique { - result = append(result, v) - } - return result -} - -// SecurityDefinitionsFor gets the matching security definitions for a set of requirements -func (s *Spec) SecurityDefinitionsFor(operation *spec.Operation) map[string]spec.SecurityScheme { - requirements := s.SecurityRequirementsFor(operation) - if len(requirements) == 0 { - return nil - } - result := make(map[string]spec.SecurityScheme) - for _, v := range requirements { - if definition, ok := s.spec.SecurityDefinitions[v.Name]; ok { - if definition != nil { - result[v.Name] = *definition - } - } - } - return result -} - -// ConsumesFor gets the mediatypes for the operation -func (s *Spec) ConsumesFor(operation *spec.Operation) []string { - - if len(operation.Consumes) == 0 { - cons := make(map[string]struct{}, len(s.spec.Consumes)) - for _, k := range s.spec.Consumes { - cons[k] = struct{}{} - } - return s.structMapKeys(cons) - } - - cons := make(map[string]struct{}, len(operation.Consumes)) - for _, c := range operation.Consumes { - cons[c] = struct{}{} - } - return s.structMapKeys(cons) -} - -// ProducesFor gets the mediatypes for the operation -func (s *Spec) ProducesFor(operation *spec.Operation) []string { - if len(operation.Produces) == 0 { - prod := make(map[string]struct{}, len(s.spec.Produces)) - for _, k := range s.spec.Produces { - prod[k] = struct{}{} - } - return s.structMapKeys(prod) - } - - prod := make(map[string]struct{}, len(operation.Produces)) - for _, c := range operation.Produces { - prod[c] = struct{}{} - } - return s.structMapKeys(prod) -} - -func mapKeyFromParam(param *spec.Parameter) string { - return fmt.Sprintf("%s#%s", param.In, fieldNameFromParam(param)) -} - -func fieldNameFromParam(param *spec.Parameter) string { - if nm, ok := param.Extensions.GetString("go-name"); ok { - return nm - } - return swag.ToGoName(param.Name) -} - -func (s *Spec) paramsAsMap(parameters []spec.Parameter, res map[string]spec.Parameter) { - for _, param := range parameters { - pr := param - if pr.Ref.String() != "" { - obj, _, err := pr.Ref.GetPointer().Get(s.spec) - if err != nil { - panic(err) - } - pr = obj.(spec.Parameter) - } - res[mapKeyFromParam(&pr)] = pr - } -} - -// ParametersFor the specified operation id -func (s *Spec) ParametersFor(operationID string) []spec.Parameter { - gatherParams := func(pi *spec.PathItem, op *spec.Operation) []spec.Parameter { - bag := make(map[string]spec.Parameter) - s.paramsAsMap(pi.Parameters, bag) - s.paramsAsMap(op.Parameters, bag) - - var res []spec.Parameter - for _, v := range bag { - res = append(res, v) - } - return res - } - for _, pi := range s.spec.Paths.Paths { - if pi.Get != nil && pi.Get.ID == operationID { - return gatherParams(&pi, pi.Get) - } - if pi.Head != nil && pi.Head.ID == operationID { - return gatherParams(&pi, pi.Head) - } - if pi.Options != nil && pi.Options.ID == operationID { - return gatherParams(&pi, pi.Options) - } - if pi.Post != nil && pi.Post.ID == operationID { - return gatherParams(&pi, pi.Post) - } - if pi.Patch != nil && pi.Patch.ID == operationID { - return gatherParams(&pi, pi.Patch) - } - if pi.Put != nil && pi.Put.ID == operationID { - return gatherParams(&pi, pi.Put) - } - if pi.Delete != nil && pi.Delete.ID == operationID { - return gatherParams(&pi, pi.Delete) - } - } - return nil -} - -// ParamsFor the specified method and path. Aggregates them with the defaults etc, so it's all the params that -// apply for the method and path. -func (s *Spec) ParamsFor(method, path string) map[string]spec.Parameter { - res := make(map[string]spec.Parameter) - if pi, ok := s.spec.Paths.Paths[path]; ok { - s.paramsAsMap(pi.Parameters, res) - s.paramsAsMap(s.operations[strings.ToUpper(method)][path].Parameters, res) - } - return res -} - -// OperationForName gets the operation for the given id -func (s *Spec) OperationForName(operationID string) (string, string, *spec.Operation, bool) { - for method, pathItem := range s.operations { - for path, op := range pathItem { - if operationID == op.ID { - return method, path, op, true - } - } - } - return "", "", nil, false -} - -// OperationFor the given method and path -func (s *Spec) OperationFor(method, path string) (*spec.Operation, bool) { - if mp, ok := s.operations[strings.ToUpper(method)]; ok { - op, fn := mp[path] - return op, fn - } - return nil, false -} - -// Operations gathers all the operations specified in the spec document -func (s *Spec) Operations() map[string]map[string]*spec.Operation { - return s.operations -} - -func (s *Spec) structMapKeys(mp map[string]struct{}) []string { - if len(mp) == 0 { - return nil - } - - result := make([]string, 0, len(mp)) - for k := range mp { - result = append(result, k) - } - return result -} - -// AllPaths returns all the paths in the swagger spec -func (s *Spec) AllPaths() map[string]spec.PathItem { - if s.spec == nil || s.spec.Paths == nil { - return nil - } - return s.spec.Paths.Paths -} - -// OperationIDs gets all the operation ids based on method an dpath -func (s *Spec) OperationIDs() []string { - if len(s.operations) == 0 { - return nil - } - result := make([]string, 0, len(s.operations)) - for method, v := range s.operations { - for p, o := range v { - if o.ID != "" { - result = append(result, o.ID) - } else { - result = append(result, fmt.Sprintf("%s %s", strings.ToUpper(method), p)) - } - } - } - return result -} - -// RequiredConsumes gets all the distinct consumes that are specified in the specification document -func (s *Spec) RequiredConsumes() []string { - return s.structMapKeys(s.consumes) -} - -// RequiredProduces gets all the distinct produces that are specified in the specification document -func (s *Spec) RequiredProduces() []string { - return s.structMapKeys(s.produces) -} - -// RequiredSecuritySchemes gets all the distinct security schemes that are specified in the swagger spec -func (s *Spec) RequiredSecuritySchemes() []string { - return s.structMapKeys(s.authSchemes) -} - -// SchemaRef is a reference to a schema -type SchemaRef struct { - Name string - Ref spec.Ref - Schema *spec.Schema -} - -// SchemasWithAllOf returns schema references to all schemas that are defined -// with an allOf key -func (s *Spec) SchemasWithAllOf() (result []SchemaRef) { - for _, v := range s.allOfs { - result = append(result, v) - } - return -} - -// AllDefinitions returns schema references for all the definitions that were discovered -func (s *Spec) AllDefinitions() (result []SchemaRef) { - for _, v := range s.allSchemas { - result = append(result, v) - } - return -} - -// AllDefinitionReferences returns json refs for all the discovered schemas -func (s *Spec) AllDefinitionReferences() (result []string) { - for _, v := range s.references.schemas { - result = append(result, v.String()) - } - return -} - -// AllParameterReferences returns json refs for all the discovered parameters -func (s *Spec) AllParameterReferences() (result []string) { - for _, v := range s.references.parameters { - result = append(result, v.String()) - } - return -} - -// AllResponseReferences returns json refs for all the discovered responses -func (s *Spec) AllResponseReferences() (result []string) { - for _, v := range s.references.responses { - result = append(result, v.String()) - } - return -} - -// AllItemsReferences returns the references for all the items -func (s *Spec) AllItemsReferences() (result []string) { - for _, v := range s.references.items { - result = append(result, v.String()) - } - return -} - -// AllReferences returns all the references found in the document -func (s *Spec) AllReferences() (result []string) { - for _, v := range s.references.allRefs { - result = append(result, v.String()) - } - return -} - -// AllRefs returns all the unique references found in the document -func (s *Spec) AllRefs() (result []spec.Ref) { - set := make(map[string]struct{}) - for _, v := range s.references.allRefs { - a := v.String() - if a == "" { - continue - } - if _, ok := set[a]; !ok { - set[a] = struct{}{} - result = append(result, v) - } - } - return -} diff --git a/vendor/github.com/go-openapi/analysis/analyzer_test.go b/vendor/github.com/go-openapi/analysis/analyzer_test.go deleted file mode 100644 index d13a595550..0000000000 --- a/vendor/github.com/go-openapi/analysis/analyzer_test.go +++ /dev/null @@ -1,237 +0,0 @@ -// 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 analysis - -import ( - "encoding/json" - "fmt" - "path/filepath" - "sort" - "testing" - - "github.com/go-openapi/loads/fmts" - "github.com/go-openapi/spec" - "github.com/stretchr/testify/assert" -) - -func schemeNames(schemes []SecurityRequirement) []string { - var names []string - for _, v := range schemes { - names = append(names, v.Name) - } - sort.Sort(sort.StringSlice(names)) - return names -} - -func TestAnalyzer(t *testing.T) { - formatParam := spec.QueryParam("format").Typed("string", "") - - limitParam := spec.QueryParam("limit").Typed("integer", "int32") - limitParam.Extensions = spec.Extensions(map[string]interface{}{}) - limitParam.Extensions.Add("go-name", "Limit") - - skipParam := spec.QueryParam("skip").Typed("integer", "int32") - pi := spec.PathItem{} - pi.Parameters = []spec.Parameter{*limitParam} - - op := &spec.Operation{} - op.Consumes = []string{"application/x-yaml"} - op.Produces = []string{"application/x-yaml"} - op.Security = []map[string][]string{ - map[string][]string{"oauth2": []string{}}, - map[string][]string{"basic": nil}, - } - op.ID = "someOperation" - op.Parameters = []spec.Parameter{*skipParam} - pi.Get = op - - pi2 := spec.PathItem{} - pi2.Parameters = []spec.Parameter{*limitParam} - op2 := &spec.Operation{} - op2.ID = "anotherOperation" - op2.Parameters = []spec.Parameter{*skipParam} - pi2.Get = op2 - - spec := &spec.Swagger{ - SwaggerProps: spec.SwaggerProps{ - Consumes: []string{"application/json"}, - Produces: []string{"application/json"}, - Security: []map[string][]string{ - map[string][]string{"apikey": nil}, - }, - SecurityDefinitions: map[string]*spec.SecurityScheme{ - "basic": spec.BasicAuth(), - "apiKey": spec.APIKeyAuth("api_key", "query"), - "oauth2": spec.OAuth2AccessToken("http://authorize.com", "http://token.com"), - }, - Parameters: map[string]spec.Parameter{"format": *formatParam}, - Paths: &spec.Paths{ - Paths: map[string]spec.PathItem{ - "/": pi, - "/items": pi2, - }, - }, - }, - } - analyzer := New(spec) - - assert.Len(t, analyzer.consumes, 2) - assert.Len(t, analyzer.produces, 2) - assert.Len(t, analyzer.operations, 1) - assert.Equal(t, analyzer.operations["GET"]["/"], spec.Paths.Paths["/"].Get) - - expected := []string{"application/x-yaml"} - sort.Sort(sort.StringSlice(expected)) - consumes := analyzer.ConsumesFor(spec.Paths.Paths["/"].Get) - sort.Sort(sort.StringSlice(consumes)) - assert.Equal(t, expected, consumes) - - produces := analyzer.ProducesFor(spec.Paths.Paths["/"].Get) - sort.Sort(sort.StringSlice(produces)) - assert.Equal(t, expected, produces) - - expected = []string{"application/json"} - sort.Sort(sort.StringSlice(expected)) - consumes = analyzer.ConsumesFor(spec.Paths.Paths["/items"].Get) - sort.Sort(sort.StringSlice(consumes)) - assert.Equal(t, expected, consumes) - - produces = analyzer.ProducesFor(spec.Paths.Paths["/items"].Get) - sort.Sort(sort.StringSlice(produces)) - assert.Equal(t, expected, produces) - - expectedSchemes := []SecurityRequirement{SecurityRequirement{"oauth2", []string{}}, SecurityRequirement{"basic", nil}} - schemes := analyzer.SecurityRequirementsFor(spec.Paths.Paths["/"].Get) - assert.Equal(t, schemeNames(expectedSchemes), schemeNames(schemes)) - - securityDefinitions := analyzer.SecurityDefinitionsFor(spec.Paths.Paths["/"].Get) - assert.Equal(t, securityDefinitions["basic"], *spec.SecurityDefinitions["basic"]) - assert.Equal(t, securityDefinitions["oauth2"], *spec.SecurityDefinitions["oauth2"]) - - parameters := analyzer.ParamsFor("GET", "/") - assert.Len(t, parameters, 2) - - operations := analyzer.OperationIDs() - assert.Len(t, operations, 2) - - producers := analyzer.RequiredProduces() - assert.Len(t, producers, 2) - consumers := analyzer.RequiredConsumes() - assert.Len(t, consumers, 2) - authSchemes := analyzer.RequiredSecuritySchemes() - assert.Len(t, authSchemes, 3) - - ops := analyzer.Operations() - assert.Len(t, ops, 1) - assert.Len(t, ops["GET"], 2) - - op, ok := analyzer.OperationFor("get", "/") - assert.True(t, ok) - assert.NotNil(t, op) - - op, ok = analyzer.OperationFor("delete", "/") - assert.False(t, ok) - assert.Nil(t, op) -} - -func TestDefinitionAnalysis(t *testing.T) { - doc, err := loadSpec(filepath.Join("fixtures", "definitions.yml")) - if assert.NoError(t, err) { - analyzer := New(doc) - definitions := analyzer.allSchemas - // parameters - assertSchemaRefExists(t, definitions, "#/parameters/someParam/schema") - assertSchemaRefExists(t, definitions, "#/paths/~1some~1where~1{id}/parameters/1/schema") - assertSchemaRefExists(t, definitions, "#/paths/~1some~1where~1{id}/get/parameters/1/schema") - // responses - assertSchemaRefExists(t, definitions, "#/responses/someResponse/schema") - assertSchemaRefExists(t, definitions, "#/paths/~1some~1where~1{id}/get/responses/default/schema") - assertSchemaRefExists(t, definitions, "#/paths/~1some~1where~1{id}/get/responses/200/schema") - // definitions - assertSchemaRefExists(t, definitions, "#/definitions/tag") - assertSchemaRefExists(t, definitions, "#/definitions/tag/properties/id") - assertSchemaRefExists(t, definitions, "#/definitions/tag/properties/value") - assertSchemaRefExists(t, definitions, "#/definitions/tag/definitions/category") - assertSchemaRefExists(t, definitions, "#/definitions/tag/definitions/category/properties/id") - assertSchemaRefExists(t, definitions, "#/definitions/tag/definitions/category/properties/value") - assertSchemaRefExists(t, definitions, "#/definitions/withAdditionalProps") - assertSchemaRefExists(t, definitions, "#/definitions/withAdditionalProps/additionalProperties") - assertSchemaRefExists(t, definitions, "#/definitions/withAdditionalItems") - assertSchemaRefExists(t, definitions, "#/definitions/withAdditionalItems/items/0") - assertSchemaRefExists(t, definitions, "#/definitions/withAdditionalItems/items/1") - assertSchemaRefExists(t, definitions, "#/definitions/withAdditionalItems/additionalItems") - assertSchemaRefExists(t, definitions, "#/definitions/withNot") - assertSchemaRefExists(t, definitions, "#/definitions/withNot/not") - assertSchemaRefExists(t, definitions, "#/definitions/withAnyOf") - assertSchemaRefExists(t, definitions, "#/definitions/withAnyOf/anyOf/0") - assertSchemaRefExists(t, definitions, "#/definitions/withAnyOf/anyOf/1") - assertSchemaRefExists(t, definitions, "#/definitions/withAllOf") - assertSchemaRefExists(t, definitions, "#/definitions/withAllOf/allOf/0") - assertSchemaRefExists(t, definitions, "#/definitions/withAllOf/allOf/1") - allOfs := analyzer.allOfs - assert.Len(t, allOfs, 1) - _, hasAllOf := allOfs["#/definitions/withAllOf"] - assert.True(t, hasAllOf) - } -} - -func loadSpec(path string) (*spec.Swagger, error) { - data, err := fmts.YAMLDoc(path) - if err != nil { - return nil, err - } - - var sw spec.Swagger - if err := json.Unmarshal(data, &sw); err != nil { - return nil, err - } - return &sw, nil -} - -func TestReferenceAnalysis(t *testing.T) { - doc, err := loadSpec(filepath.Join("fixtures", "references.yml")) - if assert.NoError(t, err) { - definitions := New(doc).references - - // parameters - assertRefExists(t, definitions.parameters, "#/paths/~1some~1where~1{id}/parameters/0") - assertRefExists(t, definitions.parameters, "#/paths/~1some~1where~1{id}/get/parameters/0") - - // responses - assertRefExists(t, definitions.responses, "#/paths/~1some~1where~1{id}/get/responses/404") - - // definitions - assertRefExists(t, definitions.schemas, "#/responses/notFound/schema") - assertRefExists(t, definitions.schemas, "#/paths/~1some~1where~1{id}/get/responses/200/schema") - assertRefExists(t, definitions.schemas, "#/definitions/tag/properties/audit") - - // items - assertRefExists(t, definitions.allRefs, "#/paths/~1some~1where~1{id}/get/parameters/1/items") - } -} - -func assertRefExists(t testing.TB, data map[string]spec.Ref, key string) bool { - if _, ok := data[key]; !ok { - return assert.Fail(t, fmt.Sprintf("expected %q to exist in the ref bag", key)) - } - return true -} - -func assertSchemaRefExists(t testing.TB, data map[string]SchemaRef, key string) bool { - if _, ok := data[key]; !ok { - return assert.Fail(t, fmt.Sprintf("expected %q to exist in schema ref bag", key)) - } - return true -} diff --git a/vendor/github.com/go-openapi/analysis/fixtures/allOf.yml b/vendor/github.com/go-openapi/analysis/fixtures/allOf.yml deleted file mode 100644 index 531c33aa69..0000000000 --- a/vendor/github.com/go-openapi/analysis/fixtures/allOf.yml +++ /dev/null @@ -1,43 +0,0 @@ ---- -swagger: "2.0" -info: - version: "0.1.0" - title: allOf analysis -paths: - "/some/where/{id}": - parameters: - - name: id - in: path - type: integer - format: int32 - - name: bodyId - in: body - schema: - type: object - get: - parameters: - - name: limit - in: query - type: integer - format: int32 - required: false - - name: body - in: body - schema: - type: object - responses: - default: - schema: - type: object - 200: - schema: - type: object -definitions: - tag: - type: object - properties: - id: - type: integer - format: int64 - value: - type: string diff --git a/vendor/github.com/go-openapi/analysis/fixtures/definitions.yml b/vendor/github.com/go-openapi/analysis/fixtures/definitions.yml deleted file mode 100644 index 63cb17a654..0000000000 --- a/vendor/github.com/go-openapi/analysis/fixtures/definitions.yml +++ /dev/null @@ -1,86 +0,0 @@ ---- -swagger: "2.0" -info: - version: "0.1.0" - title: Definition analysis -parameters: - someParam: - name: someParam - in: body - schema: - type: object -responses: - someResponse: - schema: - type: object -paths: - "/some/where/{id}": - parameters: - - name: id - in: path - type: integer - format: int32 - - name: bodyId - in: body - schema: - type: object - get: - parameters: - - name: limit - in: query - type: integer - format: int32 - required: false - - name: body - in: body - schema: - type: object - responses: - default: - schema: - type: object - 200: - schema: - type: object -definitions: - tag: - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - definitions: - category: - type: object - properties: - id: - type: integer - format: int32 - value: - type: string - withAdditionalProps: - type: object - additionalProperties: - type: boolean - withAdditionalItems: - type: array - items: - - type: string - - type: bool - additionalItems: - type: integer - format: int32 - withNot: - type: object - not: - $ref: "#/definitions/tag" - withAnyOf: - anyOf: - - type: object - - type: string - withAllOf: - allOf: - - type: object - - type: string diff --git a/vendor/github.com/go-openapi/analysis/fixtures/references.yml b/vendor/github.com/go-openapi/analysis/fixtures/references.yml deleted file mode 100644 index 64c3b83273..0000000000 --- a/vendor/github.com/go-openapi/analysis/fixtures/references.yml +++ /dev/null @@ -1,86 +0,0 @@ ---- -swagger: "2.0" -info: - version: "0.1.0" - title: reference analysis - -parameters: - idParam: - name: id - in: path - type: integer - format: int32 - limitParam: - name: limit - in: query - type: integer - format: int32 - required: false - -responses: - notFound: - schema: - $ref: "#/definitions/error" - -paths: - "/some/where/{id}": - parameters: - - $ref: "#/parameters/idParam" - - - name: bodyId - in: body - schema: - type: object - get: - parameters: - - $ref: "#/parameters/limitParam" - - name: other - in: query - type: array - items: - $ref: "#/definitions/named" - - name: body - in: body - schema: - type: object - responses: - default: - schema: - type: object - 404: - $ref: "#/responses/notFound" - 200: - schema: - $ref: "#/definitions/tag" -definitions: - named: - type: string - tag: - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - audit: - $ref: "#/definitions/record" - record: - type: object - properties: - createdAt: - type: string - format: date-time - error: - type: object - required: - - id - - message - properties: - id: - type: integer - format: int64 - readOnly: true - message: - type: string - readOnly: true diff --git a/vendor/github.com/go-openapi/loads/.drone.sec b/vendor/github.com/go-openapi/loads/.drone.sec deleted file mode 100644 index 6d3e843993..0000000000 --- a/vendor/github.com/go-openapi/loads/.drone.sec +++ /dev/null @@ -1 +0,0 @@ -eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.xUjixvmMMeampw0Doyr_XLvcV5ICmDgDFmlcWqgmO84O3Hwn6dqbMkwOjpKMOyEJW_98b5Om5ED59IFt2S0T_OarlrsJL8jOK5fqxSMNXy2w8LfI-e5l1URverW41ofAVK8m9wK05q2BSJM_M6PyyODaQeDBiCVK1HreMZBlXpuUDVtBMPILQoga0eSZOsTR3DYEpZIS0A0Rsa5yIhMYR5d5-JMYqbqOCB7tNJ-BM83OzYgL7Hrz0J15kqaJmhQ-GJoMJDzOemSO9KxLCOfSPp11R_G3Mfd48xYnuiRuPOTakbOCLxuYviH6uoGVIOhnMyY9qKiDKbOn4BQUi1-igA.6qjQzq9nzAxRRKV_.z79R5cMFAEuEaAh6U9ykiL8oIqzMbs_I2C-hSFRh3HYRJ4fTB-9LrcbF0uASIOq7bBn4OQzW-0QFwYOs1uaawmrByGngV5d0afiZf_LBKcmTF2vtxRi_A_nxD-EHoPmh3lKBU5WNDe_8kLjEeS89HeyyFPuv5iQbqhzdqPFohHKVigwVqVYYLjB8GWQ4t7tC4c8l5rHanaXf71W0e3op2m8bebpZL0JPGhnULVA1oU27TYeLsO112JkIYtBwZxzvAs--bBFoKeGJWVMFzrKN68UACGZ9RFw0uGJbBmVC4-jRuIc6XpqeEqw3KG-rjFzkeEor3575qW-8kiXYqpub9SFUc3SSZkxJ8hB3SrnMBOuDUSenrXNpAbltmV3KAALzN3_bMBQuihwSRIn0Hg7-Dpni8BieMe44RMDvRu6p_71aeU_KW4V7Umy_h8gpIvQFuKGdTQH2ahsyCXL0ojqjMbVMdoWpDQTQ2_Fy8Qt_p2kJ8BgDo-1Akd4a6BNU2NGqsdnrJmtVKcTqLBadf9ylCwxHdGVrtNYORALSms2T6Q1s-poQnMjIwN8lnUD8ABUBpt4uVtrYkiWPVwrwywLQeiHhR-pboe_53kWDAx4Hy4rpbKsaxanYhy_bEbAYKb3aIUA.75GD4kRBCQdcGFYP1QYdCg \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/.drone.yml b/vendor/github.com/go-openapi/loads/.drone.yml deleted file mode 100644 index 9822910353..0000000000 --- a/vendor/github.com/go-openapi/loads/.drone.yml +++ /dev/null @@ -1,39 +0,0 @@ -clone: - path: github.com/go-openapi/loads - -matrix: - GO_VERSION: - - "1.6" - -build: - integration: - image: golang:$$GO_VERSION - pull: true - environment: - GOCOVMODE: "count" - commands: - - go get -u github.com/axw/gocov/gocov - - go get -u gopkg.in/matm/v1/gocov-html - - go get -u github.com/cee-dub/go-junit-report - - go get -u github.com/stretchr/testify/assert - - go get -u gopkg.in/yaml.v2 - - go get -u github.com/go-openapi/swag - - go get -u github.com/go-openapi/analysis - - go get -u github.com/go-openapi/spec - - ./hack/build-drone.sh - -notify: - slack: - channel: bots - webhook_url: $$SLACK_URL - username: drone - -publish: - coverage: - server: https://coverage.vmware.run - token: $$GITHUB_TOKEN - # threshold: 70 - # must_increase: true - when: - matrix: - GO_VERSION: "1.6" diff --git a/vendor/github.com/go-openapi/loads/.github/CONTRIBUTING.md b/vendor/github.com/go-openapi/loads/.github/CONTRIBUTING.md deleted file mode 100644 index 7dea4240d7..0000000000 --- a/vendor/github.com/go-openapi/loads/.github/CONTRIBUTING.md +++ /dev/null @@ -1,117 +0,0 @@ -## Contribution Guidelines - -### Pull requests are always welcome - -We are always thrilled to receive pull requests, and do our best to -process them as fast as possible. Not sure if that typo is worth a pull -request? Do it! We will appreciate it. - -If your pull request is not accepted on the first try, don't be -discouraged! If there's a problem with the implementation, hopefully you -received feedback on what to improve. - -We're trying very hard to keep go-swagger lean and focused. We don't want it -to do everything for everybody. This means that we might decide against -incorporating a new feature. However, there might be a way to implement -that feature *on top of* go-swagger. - - -### Conventions - -Fork the repo and make changes on your fork in a feature branch: - -- If it's a bugfix branch, name it XXX-something where XXX is the number of the - issue -- If it's a feature branch, create an enhancement issue to announce your - intentions, and name it XXX-something where XXX is the number of the issue. - -Submit unit tests for your changes. Go has a great test framework built in; use -it! Take a look at existing tests for inspiration. Run the full test suite on -your branch before submitting a pull request. - -Update the documentation when creating or modifying features. Test -your documentation changes for clarity, concision, and correctness, as -well as a clean documentation build. See ``docs/README.md`` for more -information on building the docs and how docs get released. - -Write clean code. Universally formatted code promotes ease of writing, reading, -and maintenance. Always run `gofmt -s -w file.go` on each changed file before -committing your changes. Most editors have plugins that do this automatically. - -Pull requests descriptions should be as clear as possible and include a -reference to all the issues that they address. - -Pull requests must not contain commits from other users or branches. - -Commit messages must start with a capitalized and short summary (max. 50 -chars) written in the imperative, followed by an optional, more detailed -explanatory text which is separated from the summary by an empty line. - -Code review comments may be added to your pull request. Discuss, then make the -suggested modifications and push additional commits to your feature branch. Be -sure to post a comment after pushing. The new commits will show up in the pull -request automatically, but the reviewers will not be notified unless you -comment. - -Before the pull request is merged, make sure that you squash your commits into -logical units of work using `git rebase -i` and `git push -f`. After every -commit the test suite should be passing. Include documentation changes in the -same commit so that a revert would remove all traces of the feature or fix. - -Commits that fix or close an issue should include a reference like `Closes #XXX` -or `Fixes #XXX`, which will automatically close the issue when merged. - -### Sign your work - -The sign-off is a simple line at the end of the explanation for the -patch, which certifies that you wrote it or otherwise have the right to -pass it on as an open-source patch. The rules are pretty simple: if you -can certify the below (from -[developercertificate.org](http://developercertificate.org/)): - -``` -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -660 York Street, Suite 102, -San Francisco, CA 94110 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` - -then you just add a line to every git commit message: - - Signed-off-by: Joe Smith - -using your real name (sorry, no pseudonyms or anonymous contributions.) - -You can add the sign off when creating the git commit via `git commit -s`. diff --git a/vendor/github.com/go-openapi/loads/.gitignore b/vendor/github.com/go-openapi/loads/.gitignore deleted file mode 100644 index e4f15f17bf..0000000000 --- a/vendor/github.com/go-openapi/loads/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -secrets.yml -coverage.out -profile.cov -profile.out diff --git a/vendor/github.com/go-openapi/loads/.pullapprove.yml b/vendor/github.com/go-openapi/loads/.pullapprove.yml deleted file mode 100644 index 5ec183e224..0000000000 --- a/vendor/github.com/go-openapi/loads/.pullapprove.yml +++ /dev/null @@ -1,13 +0,0 @@ -approve_by_comment: true -approve_regex: '^(:shipit:|:\+1:|\+1|LGTM|lgtm|Approved)' -reject_regex: ^[Rr]ejected -reset_on_push: false -reviewers: - members: - - casualjim - - chancez - - frapposelli - - vburenin - - pytlesk4 - name: pullapprove - required: 1 diff --git a/vendor/github.com/go-openapi/loads/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/loads/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/loads/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# 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/loads/README.md b/vendor/github.com/go-openapi/loads/README.md deleted file mode 100644 index 9d5c899970..0000000000 --- a/vendor/github.com/go-openapi/loads/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Loads OAI specs [![Build Status](https://ci.vmware.run/api/badges/go-openapi/loads/status.svg)](https://ci.vmware.run/go-openapi/loads) [![Coverage](https://coverage.vmware.run/badges/go-openapi/loads/coverage.svg)](https://coverage.vmware.run/go-openapi/loads) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) - -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/loads/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/loads?status.svg)](http://godoc.org/github.com/go-openapi/loads) - -Loading of OAI specification documents from local or remote locations. diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithArrayRef.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithArrayRef.json deleted file mode 100644 index 25e8903a71..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithArrayRef.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "required": [ - "id" - ], - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "children": { - "type": "array", - "items": { - "$ref": "Person" - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithComposition.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithComposition.json deleted file mode 100644 index 21e01dc2af..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithComposition.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "definitions": { - "Cat": { - "description": "A representation of a cat", - "allOf": [ - { "$ref": "#/models/Pet" }, - { - "properties": { - "huntingSkill": { - "type": "string", - "description": "The measured skill for hunting", - "default": "lazy", - "enum": ["clueless", "lazy", "adventerous", "aggressive"] - } - }, - "required": [ "huntingSkill" ] - } - ] - }, - "Dog": { - "description": "A representation of a dog", - "allOf": [ - { "$ref": "#/models/Pet" }, - { - "properties": { - "packSize": { - "type": "integer", - "format": "int32", - "description": "the size of the pack the dog is from", - "default": 0, - "minimum": 0 - } - }, - "required": [ "name", "packSize" ] - } - ] - }, - "Fish": { - "description": "A representation of a fish", - "allOf": [ - { "$ref": "#/models/Pet" }, - { - "properties": { - "fins": { - "type": "integer", - "format": "int32", - "description": "count of fins", - "minimum": 0 - } - }, - "required": [ "fins" ] - } - ] - }, - "Pet": { - "discriminator": "petType", - "properties": { - "name": { - "type": "string" - }, - "petType": { - "type": "string" - } - }, - "required": [ "name", "petType" ] - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithDateTimeMap.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithDateTimeMap.json deleted file mode 100644 index a5ebdf9b29..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithDateTimeMap.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "true", - "additionalProperties": { - "type": "string", - "format": "date-time" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithExamples.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithExamples.json deleted file mode 100644 index f62be6624d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithExamples.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "definitions": { - "Pet": { - "properties": { - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - }, - "Dog": { - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithInt32Map.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithInt32Map.json deleted file mode 100644 index b4597e846d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithInt32Map.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "This is a Map[String, Integer]", - "additionalProperties": { - "type": "integer", - "format": "int32" - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithInt64Map.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithInt64Map.json deleted file mode 100644 index 5160f21c4e..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithInt64Map.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "true", - "additionalProperties": { - "type": "integer", - "format": "int64" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithMultipleProperties.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithMultipleProperties.json deleted file mode 100644 index dba5e64abd..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithMultipleProperties.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "description": "true", - "properties": { - "booleanValue": { - "type": "boolean" - }, - "byteValue": { - "type": "string", - "format": "byte" - }, - "dateTimeValue": { - "type": "string", - "format": "date-time" - }, - "int32Value": { - "type": "integer", - "format": "int32" - }, - "int64Value": { - "type": "integer", - "format": "int64" - }, - "stringValue": { - "type": "string" - }, - "booleanArrayValue": { - "type": "array", - "items": { - "type": "boolean" - } - }, - "byteArrayValue": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - }, - "dateTimeArrayValue": { - "type": "array", - "items": { - "type": "string", - "format": "date-time" - } - }, - "int32ArrayValue": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" - } - }, - "int64ArrayValue": { - "type": "array", - "items": { - "type": "integer", - "format": "int64" - } - }, - "stringArrayValue": { - "type": "array", - "items": { - "type": "string" - } - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithObjectMap.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithObjectMap.json deleted file mode 100644 index 3e9fb7700c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithObjectMap.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "description": "This is a Map[String, { id: Long, name: String}]", - "additionalProperties": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithPrimitiveArray.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithPrimitiveArray.json deleted file mode 100644 index bc1a8e1740..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithPrimitiveArray.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "required": [ - "id" - ], - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "childrensAges": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" - } - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithStringProperty.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithStringProperty.json deleted file mode 100644 index 53b4fe1d7c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithStringProperty.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "description": "true", - "properties": { - "name": { - "type": "string" - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithXmlAttributes.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithXmlAttributes.json deleted file mode 100644 index 1aed1a9f73..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/modelWithXmlAttributes.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "description": "this model serves xml and json structures", - "xml": { - "name": "XMLModel" - }, - "properties": { - "id": { - "type": "integer", - "format": "int64", - "xml": { - "attribute": true, - "namespace": "ns1", - "prefix": "urn1" - } - }, - "items": { - "type": "array", - "items": { - "type": "string" - }, - "xml": { - "wrapped": true - } - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/models.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/models.json deleted file mode 100644 index 7eff6dbe04..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/models.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "definitions": { - "Pet": { - "properties": { - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/multipleModels.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/multipleModels.json deleted file mode 100644 index f62be6624d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/multipleModels.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "definitions": { - "Pet": { - "properties": { - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - }, - "Dog": { - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithBooleanArray.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithBooleanArray.json deleted file mode 100644 index e7ae99b077..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithBooleanArray.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "array", - "items": { - "type": "boolean" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithByteArray.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithByteArray.json deleted file mode 100644 index a6cb13c18b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithByteArray.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "array", - "items": { - "type": "string", - "format": "byte" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithComplexArray.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithComplexArray.json deleted file mode 100644 index c2402e0c6c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithComplexArray.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "array", - "items": { - "$ref": "ComplexType" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithDateTimeArray.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithDateTimeArray.json deleted file mode 100644 index 8b1077316d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithDateTimeArray.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "array", - "items": { - "type": "string", - "format": "date-time" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithInt32Array.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithInt32Array.json deleted file mode 100644 index 5aae819cae..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithInt32Array.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "array", - "items": { - "type": "integer", - "format": "int32" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithInt64Array.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithInt64Array.json deleted file mode 100644 index 5b1f551595..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithInt64Array.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "array", - "items": { - "type": "integer", - "format": "int64" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithRef.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithRef.json deleted file mode 100644 index d8ffdd589b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithRef.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$ref": "Foo", - "description": "a boolean", - "readOnly": true -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithStringArray.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithStringArray.json deleted file mode 100644 index 7936520d79..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/propertyWithStringArray.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "array", - "items": { - "type": "string" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleBooleanProperty.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleBooleanProperty.json deleted file mode 100644 index 04153ed864..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleBooleanProperty.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "boolean", - "description": "a boolean", - "readOnly": true -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleByteProperty.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleByteProperty.json deleted file mode 100644 index 74fc007f75..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleByteProperty.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "string", - "format": "byte" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleDateTimeProperty.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleDateTimeProperty.json deleted file mode 100644 index a154c6b388..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleDateTimeProperty.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "string", - "format": "date-time" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleInt32Property.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleInt32Property.json deleted file mode 100644 index b436c52c79..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleInt32Property.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "integer", - "format": "int32" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleInt64Property.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleInt64Property.json deleted file mode 100644 index 1f3419620e..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleInt64Property.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "integer", - "format": "int64" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleStringProperty.json b/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleStringProperty.json deleted file mode 100644 index 28ac6e8648..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/models/properties/simpleStringProperty.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "string" -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/cascadingSchemes.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/cascadingSchemes.json deleted file mode 100644 index 68c9702925..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/cascadingSchemes.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{petId}": { - "get": { - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "$ref": "Pet" - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - }, - "schemes": [ "https" ] - } - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/commonParameters.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/commonParameters.json deleted file mode 100644 index 5a9a128415..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/commonParameters.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{id}": { - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet to use", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "get": { - "description": "Returns pets based on ID", - "summary": "Find pets by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "type": "array", - "items": { - "$ref": "Pet" - } - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/multipleMimeTypes.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/multipleMimeTypes.json deleted file mode 100644 index fa014914df..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/multipleMimeTypes.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "text/plain; charset=utf-8", - "application/json", - "application/vnd.github+json", - "application/vnd.github.v3+json", - "application/vnd.github.v3.raw+json", - "application/vnd.github.v3.text+json", - "application/vnd.github.v3.html+json", - "application/vnd.github.v3.full+json", - "application/vnd.github.v3.diff", - "application/vnd.github.v3.patch" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{id}": { - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet to use", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "get": { - "description": "Returns pets based on ID", - "summary": "Find pets by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "type": "array", - "items": { - "$ref": "Pet" - } - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/operationWithTags.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/operationWithTags.json deleted file mode 100644 index 8325605665..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/operationWithTags.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "tags": [ "foo", "bar"], - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "integer", - "format": "int64" - } - ], - "responses": { - "200": { - "description": "a pet to be returned", - "schema": {"$ref": "Pet"} - }, - "default": { - "description": "Unexpected error", - "schema": {"$ref": "ErrorModel"} - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/stringPathAndBoolQueryParamResource.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/stringPathAndBoolQueryParamResource.json deleted file mode 100644 index 75f0efa281..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/stringPathAndBoolQueryParamResource.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "name": "includeDetails", - "in": "query", - "description": "include details in response", - "required": true, - "type": "boolean" - } - ], - "responses": { - "200": { - "description": "a pet to be returned", - "schema": {"$ref": "Pet"} - }, - "default": { - "description": "Unexpected error", - "schema": {"$ref": "ErrorModel"} - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/stringPathParamResource.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/stringPathParamResource.json deleted file mode 100644 index 14eba194a9..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/operations/stringPathParamResource.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "integer", - "format": "int64" - } - ], - "responses": { - "200": { - "description": "fun", - "schema": {"$ref": "Pet"} - }, - "400": { - "description": "Invalid ID supplied <= this is purely for documentation", - "schema": {"$ref": "ErrorModel"} - }, - "default": { - "description": "Unexpected error", - "schema": {"$ref": "ErrorModel"} - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyComplexArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyComplexArrayParameter.json deleted file mode 100644 index 5a4ef2582b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyComplexArrayParameter.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "user", - "in": "body", - "description": "user to add to the system", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "format": "csv" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyComplexParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyComplexParameter.json deleted file mode 100644 index 4a5327a811..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyComplexParameter.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "user", - "in": "body", - "description": "user to add to the system", - "required": true, - "schema": { - "$ref": "User" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyInt64Parameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyInt64Parameter.json deleted file mode 100644 index 5bd668b811..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyInt64Parameter.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "id", - "in": "body", - "description": "id to add", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyStringArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyStringArrayParameter.json deleted file mode 100644 index 535a3056dc..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyStringArrayParameter.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "user", - "in": "body", - "description": "user to add to the system", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyStringParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyStringParameter.json deleted file mode 100644 index 499435a5b6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/bodyStringParameter.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "user", - "in": "body", - "description": "user to add to the system", - "required": true, - "schema": { - "type": "string" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataComplexParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataComplexParameter.json deleted file mode 100644 index aa09e71603..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataComplexParameter.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "firstName", - "in": "formData", - "description": "users first name", - "required": true, - "$ref": "Nothing" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataInt64Parameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataInt64Parameter.json deleted file mode 100644 index c00176cb42..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataInt64Parameter.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "id", - "in": "formData", - "description": "username to fetch", - "required": true, - "type": "integer", - "format": "int64" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataStringArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataStringArrayParameter.json deleted file mode 100644 index 9d06ef4652..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataStringArrayParameter.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "user", - "in": "formData", - "description": "user to add to the system", - "required": true, - "type": "array", - "items": { - "type": "string" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataStringParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataStringParameter.json deleted file mode 100644 index 98d66e63d8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/formDataStringParameter.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "firstName", - "in": "formData", - "description": "users first name", - "required": true, - "type": "string" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerInt64ArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerInt64ArrayParameter.json deleted file mode 100644 index 81c8f2f131..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerInt64ArrayParameter.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "token", - "in": "header", - "description": "token to be passed as a header", - "required": true, - "type": "array", - "items": { - "type": "integer", - "format": "int64" - }, - "collectionFormat": "csv" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerStringArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerStringArrayParameter.json deleted file mode 100644 index d6b134f936..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerStringArrayParameter.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "token", - "in": "header", - "description": "token to be passed as a header", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerStringParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerStringParameter.json deleted file mode 100644 index d10051ed23..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/headerStringParameter.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "token", - "in": "header", - "description": "token to be passed as a header", - "required": true, - "type": "string" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathInt64Parameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathInt64Parameter.json deleted file mode 100644 index 47bf2e0b92..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathInt64Parameter.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "id", - "in": "path", - "description": "username to fetch", - "required": true, - "type": "integer", - "format": "int64" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathStringArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathStringArrayParameter.json deleted file mode 100644 index 6da46aa5d7..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathStringArrayParameter.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "usernames", - "in": "path", - "description": "usernames to pass", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathStringParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathStringParameter.json deleted file mode 100644 index 0ac9c6f076..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/pathStringParameter.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "username", - "in": "path", - "description": "username to fetch", - "required": true, - "type": "string" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryInt64ArrayParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryInt64ArrayParameter.json deleted file mode 100644 index 59b557a6f6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryInt64ArrayParameter.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "id", - "in": "query", - "description": "ID of the object to fetch", - "required": true, - "type": "array", - "items": { - "type": "integer", - "format": "int64" - }, - "collectionFormat": "csv" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryStringParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryStringParameter.json deleted file mode 100644 index fde2d3badb..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryStringParameter.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "id", - "in": "query", - "description": "ID of the object to fetch", - "required": true, - "type": "integer", - "format": "int64" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryWithComplexParameter.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryWithComplexParameter.json deleted file mode 100644 index 61f9e93234..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/parameters/queryWithComplexParameter.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "id", - "in": "query", - "description": "a complex object which should not validate", - "required": true, - "schema": { - "$ref": "Pet" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithExamplePayload.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithExamplePayload.json deleted file mode 100644 index 90767b6a5d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithExamplePayload.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{petId}": { - "get": { - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "$ref": "Pet" - }, - "examples": { - "application/json": { - "id": 9, - "category": { - "name": "domestic" - }, - "name": "monster", - "tags": [ - { - "name": "for sale" - } - ], - "status": "alive" - } - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "example": "cat" - }, - "tag": { - "type": "string", - "example": "for sale" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithLinkedDefinitions.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithLinkedDefinitions.json deleted file mode 100644 index 52f9ebd9cc..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithLinkedDefinitions.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{petId}": { - "$ref": "https://raw.githubusercontent.com/reverb/swagger-spec/master/fixtures/v2.0/json/resources/resourceWithLinkedDefinitions_part1.json" - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithLinkedDefinitions_part1.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithLinkedDefinitions_part1.json deleted file mode 100644 index 5b7f5b9ad3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithLinkedDefinitions_part1.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "get": { - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "$ref": "Pet" - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithRelativeHost.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithRelativeHost.json deleted file mode 100644 index 2e16c3a395..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/resourceWithRelativeHost.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{id}": { - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet to use", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "get": { - "description": "Returns pets based on ID", - "summary": "Find pets by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "type": "array", - "items": { - "$ref": "Pet" - } - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/reusableParameters.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/reusableParameters.json deleted file mode 100644 index 3547c419f7..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/reusableParameters.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{id}": { - "get": { - "description": "Returns pets based on ID", - "summary": "Find pets by ID", - "operationId": "getPetsById", - "parameters": [ - { "$ref": "#/parameters/skipParam" }, - { "$ref": "#/parameters/limitParam" } - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "type": "array", - "items": { - "$ref": "Pet" - } - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "parameters": { - "skipParam": { - "name": "skip", - "in": "query", - "description": "number of items to skip", - "required": true, - "type": "integer", - "format": "int32" - }, - "limitParam": { - "name": "limit", - "in": "query", - "description": "max records to return", - "required": true, - "type": "integer", - "format": "int32" - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/securityExample.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/securityExample.json deleted file mode 100644 index e4c482c4db..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/securityExample.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "security": [ - { - "githubAccessCode": [ "user", "gist" ] - }, - { - "internalApiKey": [] - } - ], - "paths": { - "/pets/{id}": { - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet to use", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "get": { - "description": "Returns pets based on ID", - "summary": "Find pets by ID", - "operationId": "getPetsById", - "security": [ - { - "githubAuth":[ - "user:read", - "user:write" - ] - }, - { - "internalApiKey": [] - } - ], - "produces": [ - "application/json", - "text/html" - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "type": "array", - "items": { - "$ref": "Pet" - } - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "securityDefinitions": { - "githubAccessCode": { - "type": "oauth2", - "scopes": { - "user": "Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.", - "user:email": "Grants read access to a user’s email addresses.", - "user:follow": "Grants access to follow or unfollow other users.", - "public_repo": "Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.", - "repo": "Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.", - "repo_deployment": "Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.", - "repo:status": "Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.", - "delete_repo": "Grants access to delete adminable repositories.", - "notifications": "Grants read access to a user’s notifications. repo also provides this access.", - "gist": "Grants write access to gists.", - "read:repo_hook": "Grants read and ping access to hooks in public or private repositories.", - "write:repo_hook": "Grants read, write, and ping access to hooks in public or private repositories.", - "admin:repo_hook": "Grants read, write, ping, and delete access to hooks in public or private repositories.", - "read:org": "Read-only access to organization, teams, and membership.", - "write:org": "Publicize and unpublicize organization membership.", - "admin:org": "Fully manage organization, teams, and memberships.", - "read:public_key": "List and view details for public keys.", - "write:public_key": "Create, list, and view details for public keys.", - "admin:public_key": "Fully manage public keys." - }, - "flow": "accessCode", - "authorizationUrl": "https://github.com/login/oauth/authorize", - "tokenUrl": "https://github.com/login/oauth/access_token" - }, - "petstoreImplicit": { - "type": "oauth2", - "scopes": { - "user": "Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.", - "user:email": "Grants read access to a user’s email addresses.", - "user:follow": "Grants access to follow or unfollow other users.", - "public_repo": "Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.", - "repo": "Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.", - "repo_deployment": "Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.", - "repo:status": "Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.", - "delete_repo": "Grants access to delete adminable repositories.", - "notifications": "Grants read access to a user’s notifications. repo also provides this access.", - "gist": "Grants write access to gists.", - "read:repo_hook": "Grants read and ping access to hooks in public or private repositories.", - "write:repo_hook": "Grants read, write, and ping access to hooks in public or private repositories.", - "admin:repo_hook": "Grants read, write, ping, and delete access to hooks in public or private repositories.", - "read:org": "Read-only access to organization, teams, and membership.", - "write:org": "Publicize and unpublicize organization membership.", - "admin:org": "Fully manage organization, teams, and memberships.", - "read:public_key": "List and view details for public keys.", - "write:public_key": "Create, list, and view details for public keys.", - "admin:public_key": "Fully manage public keys." - }, - "flow": "implicit", - "authorizationUrl": "http://petstore.swagger.wordnik.com/oauth/dialog" - }, - "internalApiKey": { - "type": "apiKey", - "in": "header", - "name": "api_key" - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/stringPathParamResource.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/stringPathParamResource.json deleted file mode 100644 index a438a08ea2..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/stringPathParamResource.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "/pets/{petId}": { - "get": { - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "responses": { - "200": { - "description": "pet response", - "schema": { - "$ref": "Pet" - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/taggedResource.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/taggedResource.json deleted file mode 100644 index 19394c70d1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/taggedResource.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "swagger": "2.0", - "x-reverb": { - "addAnythingYouWant": true - }, - "info": { - "x-reverb-info": "this is an example", - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "tags": [ - { - "name": "pets" - } - ], - "paths": { - "x-reverb-path-info": "vendor info", - "/pets": { - "x-vendor-method": {}, - "get": { - "x-vendor-operation-property": {}, - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "x-vendor-parameter-property": {}, - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "responses": { - "x-vendor-operation-response-property": {}, - "200": { - "description": "pet response", - "schema": { - "$ref": "Pet" - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "x-vendor-model-property": {}, - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/resources/vendorExtensionExamples.json b/vendor/github.com/go-openapi/loads/fixtures/json/resources/vendorExtensionExamples.json deleted file mode 100644 index 267ce5399c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/resources/vendorExtensionExamples.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "swagger": "2.0", - "x-reverb": { - "addAnythingYouWant": true - }, - "info": { - "x-reverb-info": "this is an example", - "version": "1.0.9-abcd", - "title": "Swagger Sample API", - "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", - "termsOfService": "http://helloreverb.com/terms/", - "contact": { - "name": "wordnik api team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "my.api.com", - "basePath": "/v1", - "schemes": [ - "http", - "https" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json", - "application/xml" - ], - "paths": { - "x-reverb-path-info": "vendor info", - "/pets": { - "x-vendor-method": {}, - "get": { - "x-vendor-operation-property": {}, - "description": "Returns a pet based on ID", - "summary": "Find pet by ID", - "operationId": "getPetsById", - "produces": [ - "application/json", - "text/html" - ], - "parameters": [ - { - "x-vendor-parameter-property": {}, - "name": "petId", - "in": "path", - "description": "ID of pet that needs to be fetched", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv" - } - ], - "responses": { - "x-vendor-operation-response-property": {}, - "200": { - "description": "pet response", - "schema": { - "$ref": "Pet" - } - }, - "default": { - "description": "error payload", - "schema": { - "$ref": "ErrorModel" - } - } - } - } - } - }, - "definitions": { - "Pet": { - "x-vendor-model-property": {}, - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "ErrorModel": { - "required": [ "code", "message" ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/complexArrayResponse.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/complexArrayResponse.json deleted file mode 100644 index 5d2ce79ee2..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/complexArrayResponse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "description": "A complex object array response", - "schema": { - "type": "array", - "items": { - "$ref": "VeryComplexType" - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/dateTimeResponse.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/dateTimeResponse.json deleted file mode 100644 index 77fe8d442a..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/dateTimeResponse.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "A date-time response", - "schema": { - "type": "string", - "format": "date-time" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/int32Response.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/int32Response.json deleted file mode 100644 index b9470c8f23..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/int32Response.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "A simple string response", - "schema": { - "type": "integer", - "format": "int32" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/int64Response.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/int64Response.json deleted file mode 100644 index 16a4d1c1c7..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/int64Response.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "A simple string response", - "schema": { - "type": "integer", - "format": "int64" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/multipleResponses.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/multipleResponses.json deleted file mode 100644 index b7c51544e6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/multipleResponses.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "200": { - "description": "simple string response", - "schema": { - "type": "string" - } - }, - "201": { - "description": "object created" - }, - "default": { - "description": "oops", - "schema": { - "type": "integer", - "format": "int32" - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringArrayResponse.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringArrayResponse.json deleted file mode 100644 index 4640ea04ba..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringArrayResponse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "description": "A string array response", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringResponse.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringResponse.json deleted file mode 100644 index f794027371..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringResponse.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "description": "A simple string response", - "schema": { - "type": "string" - } -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringResponseWithHeader.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringResponseWithHeader.json deleted file mode 100644 index 57a5f80b4d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/stringResponseWithHeader.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "description": "A simple string response", - "schema": { - "type": "string" - }, - "headers": { - "is-dog": {"type": "boolean"}, - "is-cat": {"type": "boolean"} - } -} diff --git a/vendor/github.com/go-openapi/loads/fixtures/json/responses/voidResponse.json b/vendor/github.com/go-openapi/loads/fixtures/json/responses/voidResponse.json deleted file mode 100644 index a7edcadb32..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/json/responses/voidResponse.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "description": "object created" -} \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/.gitkeep b/vendor/github.com/go-openapi/loads/fixtures/yaml/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithArrayRef.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithArrayRef.yaml deleted file mode 100644 index b32a35901d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithArrayRef.yaml +++ /dev/null @@ -1,5 +0,0 @@ -required: - - id -properties: - id: {type: integer, format: int64} - children: {type: array, items: {$ref: Person}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithComposition.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithComposition.yaml deleted file mode 100644 index f0ea5e80f2..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithComposition.yaml +++ /dev/null @@ -1,5 +0,0 @@ -definitions: - Cat: {description: 'A representation of a cat', allOf: [{$ref: '#/models/Pet'}, {properties: {huntingSkill: {type: string, description: 'The measured skill for hunting', default: lazy, enum: [clueless, lazy, adventerous, aggressive]}}, required: [huntingSkill]}]} - Dog: {description: 'A representation of a dog', allOf: [{$ref: '#/models/Pet'}, {properties: {packSize: {type: integer, format: int32, description: 'the size of the pack the dog is from', default: 0}}, required: [name, packSize]}]} - Fish: {description: 'A representation of a fish', allOf: [{$ref: '#/models/Pet'}, {properties: {fins: {type: integer, format: int32, description: 'count of fins'}}, required: [fins]}]} - Pet: {discriminator: petType, properties: {name: {type: string}, petType: {type: string}}, required: [name, petType]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithDateTimeMap.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithDateTimeMap.yaml deleted file mode 100644 index 653cbd1825..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithDateTimeMap.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'true' -additionalProperties: - type: string - format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithExamples.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithExamples.yaml deleted file mode 100644 index 0252ec176c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithExamples.yaml +++ /dev/null @@ -1,3 +0,0 @@ -definitions: - Pet: {properties: {name: {type: string}}, required: [name]} - Dog: {properties: {id: {type: integer, format: int64}, name: {type: string}}, required: [name]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithInt32Map.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithInt32Map.yaml deleted file mode 100644 index 88ab02447a..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithInt32Map.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'This is a Map[String, Integer]' -additionalProperties: - type: integer - format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithInt64Map.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithInt64Map.yaml deleted file mode 100644 index 16c790e42d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithInt64Map.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'true' -additionalProperties: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithMultipleProperties.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithMultipleProperties.yaml deleted file mode 100644 index f69d27ef29..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithMultipleProperties.yaml +++ /dev/null @@ -1,14 +0,0 @@ -description: 'true' -properties: - booleanValue: {type: boolean} - byteValue: {type: string, format: byte} - dateTimeValue: {type: string, format: date-time} - int32Value: {type: integer, format: int32} - int64Value: {type: integer, format: int64} - stringValue: {type: string} - booleanArrayValue: {type: array, items: {type: boolean}} - byteArrayValue: {type: array, items: {type: string, format: byte}} - dateTimeArrayValue: {type: array, items: {type: string, format: date-time}} - int32ArrayValue: {type: array, items: {type: integer, format: int32}} - int64ArrayValue: {type: array, items: {type: integer, format: int64}} - stringArrayValue: {type: array, items: {type: string}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithObjectMap.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithObjectMap.yaml deleted file mode 100644 index e712e0f220..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithObjectMap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: "This is a Map[String, { id: Long, name: String}]" -additionalProperties: - type: "object" - properties: - id: - type: "integer" - format: "int64" - name: - type: "string" diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithPrimitiveArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithPrimitiveArray.yaml deleted file mode 100644 index 0837bad52b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithPrimitiveArray.yaml +++ /dev/null @@ -1,5 +0,0 @@ -required: - - id -properties: - id: {type: integer, format: int64} - childrensAges: {type: array, items: {type: integer, format: int32}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithStringProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithStringProperty.yaml deleted file mode 100644 index a17d21e5a1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithStringProperty.yaml +++ /dev/null @@ -1,3 +0,0 @@ -description: 'true' -properties: - name: {type: string} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithXmlAttributes.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithXmlAttributes.yaml deleted file mode 100644 index 2176983f89..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/modelWithXmlAttributes.yaml +++ /dev/null @@ -1,6 +0,0 @@ -description: 'this model serves xml and json structures' -xml: - name: XMLModel -properties: - id: {type: integer, format: int64, xml: {attribute: true, namespace: ns1, prefix: urn1}} - items: {type: array, items: {type: string}, xml: {wrapped: true}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/models.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/models.yaml deleted file mode 100644 index 71f8efeb42..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/models.yaml +++ /dev/null @@ -1,2 +0,0 @@ -definitions: - Pet: {properties: {name: {type: string}}, required: [name]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/multipleModels.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/multipleModels.yaml deleted file mode 100644 index 0252ec176c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/multipleModels.yaml +++ /dev/null @@ -1,3 +0,0 @@ -definitions: - Pet: {properties: {name: {type: string}}, required: [name]} - Dog: {properties: {id: {type: integer, format: int64}, name: {type: string}}, required: [name]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithBooleanArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithBooleanArray.yaml deleted file mode 100644 index aa02d0e742..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithBooleanArray.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: array -items: - type: boolean diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithByteArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithByteArray.yaml deleted file mode 100644 index f31b350362..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithByteArray.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: string - format: byte diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithComplexArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithComplexArray.yaml deleted file mode 100644 index 69e0b17658..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithComplexArray.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: array -items: - $ref: ComplexType diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithDateTimeArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithDateTimeArray.yaml deleted file mode 100644 index 6efef25d8f..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithDateTimeArray.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: string - format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithInt32Array.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithInt32Array.yaml deleted file mode 100644 index 26fd271b00..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithInt32Array.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: integer - format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithInt64Array.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithInt64Array.yaml deleted file mode 100644 index e800895ebc..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithInt64Array.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithRef.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithRef.yaml deleted file mode 100644 index d78956949e..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithRef.yaml +++ /dev/null @@ -1,3 +0,0 @@ -$ref: Foo -description: 'a boolean' -readOnly: true diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithStringArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithStringArray.yaml deleted file mode 100644 index 3a9108235c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/propertyWithStringArray.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: array -items: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleBooleanProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleBooleanProperty.yaml deleted file mode 100644 index 9d1e27382b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleBooleanProperty.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: boolean -description: 'a boolean' -readOnly: true diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleByteProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleByteProperty.yaml deleted file mode 100644 index 6af2139f99..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleByteProperty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: string -format: byte diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleDateTimeProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleDateTimeProperty.yaml deleted file mode 100644 index 407b1d7e8f..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleDateTimeProperty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: string -format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleInt32Property.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleInt32Property.yaml deleted file mode 100644 index 8ed513dba0..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleInt32Property.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: integer -format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleInt64Property.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleInt64Property.yaml deleted file mode 100644 index 69f359f3fd..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleInt64Property.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleStringProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleStringProperty.yaml deleted file mode 100644 index 5c21d88b9e..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/models/properties/simpleStringProperty.yaml +++ /dev/null @@ -1 +0,0 @@ -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/cascadingSchemes.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/cascadingSchemes.yaml deleted file mode 100644 index d108027742..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/cascadingSchemes.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {get: {description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}, schemes: [https]}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/commonParameters.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/commonParameters.yaml deleted file mode 100644 index 9851b7448c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/commonParameters.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/multipleMimeTypes.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/multipleMimeTypes.yaml deleted file mode 100644 index 23bdc2d2a3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/multipleMimeTypes.yaml +++ /dev/null @@ -1,32 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - 'text/plain; charset=utf-8' - - application/json - - application/vnd.github+json - - application/vnd.github.v3+json - - application/vnd.github.v3.raw+json - - application/vnd.github.v3.text+json - - application/vnd.github.v3.html+json - - application/vnd.github.v3.full+json - - application/vnd.github.v3.diff - - application/vnd.github.v3.patch -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/operationWithTags.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/operationWithTags.yaml deleted file mode 100644 index a3c85b26a3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/operationWithTags.yaml +++ /dev/null @@ -1,14 +0,0 @@ -description: 'Returns a pet based on ID' -summary: 'Find pet by ID' -operationId: getPetsById -tags: - - foo - - bar -produces: - - application/json - - text/html -parameters: - - {name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: integer, format: int64} -responses: - '200': {description: 'a pet to be returned', schema: {$ref: Pet}} - default: {description: 'Unexpected error', schema: {$ref: ErrorModel}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/stringPathAndBoolQueryParamResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/stringPathAndBoolQueryParamResource.yaml deleted file mode 100644 index a00b8c469c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/stringPathAndBoolQueryParamResource.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: 'Returns a pet based on ID' -summary: 'Find pet by ID' -operationId: getPetsById -produces: - - application/json - - text/html -parameters: - - {name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: integer, format: int64} - - {name: includeDetails, in: query, description: 'include details in response', required: true, type: boolean} -responses: - '200': {description: 'a pet to be returned', schema: {$ref: Pet}} - default: {description: 'Unexpected error', schema: {$ref: ErrorModel}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/stringPathParamResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/stringPathParamResource.yaml deleted file mode 100644 index 8c46cc7ee8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/operations/stringPathParamResource.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: 'Returns a pet based on ID' -summary: 'Find pet by ID' -operationId: getPetsById -produces: - - application/json - - text/html -parameters: - - {name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: integer, format: int64} -responses: - '200': {description: fun, schema: {$ref: Pet}} - '400': {description: 'Invalid ID supplied <= this is purely for documentation', schema: {$ref: ErrorModel}} - default: {description: 'Unexpected error', schema: {$ref: ErrorModel}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyComplexArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyComplexArrayParameter.yaml deleted file mode 100644 index 511f8dc2b3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyComplexArrayParameter.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - type: array - items: {type: string} - format: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyComplexParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyComplexParameter.yaml deleted file mode 100644 index 13f8fd171b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyComplexParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - $ref: User diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyInt64Parameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyInt64Parameter.yaml deleted file mode 100644 index a270d94cb5..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyInt64Parameter.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: id -in: body -description: 'id to add' -required: true -schema: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyStringArrayParameter.yaml deleted file mode 100644 index 7d88b10dc9..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyStringArrayParameter.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - type: array - items: {type: string} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyStringParameter.yaml deleted file mode 100644 index 7fe9dbd1e0..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/bodyStringParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataComplexParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataComplexParameter.yaml deleted file mode 100644 index b49dd9e3d6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataComplexParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: firstName -in: formData -description: 'users first name' -required: true -$ref: Nothing diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataInt64Parameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataInt64Parameter.yaml deleted file mode 100644 index 0faaa7f62d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataInt64Parameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: formData -description: 'username to fetch' -required: true -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataStringArrayParameter.yaml deleted file mode 100644 index f6534662a5..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataStringArrayParameter.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: user -in: formData -description: 'user to add to the system' -required: true -type: array -items: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataStringParameter.yaml deleted file mode 100644 index 43411cf047..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/formDataStringParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: firstName -in: formData -description: 'users first name' -required: true -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerInt64ArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerInt64ArrayParameter.yaml deleted file mode 100644 index 87ec99cabc..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerInt64ArrayParameter.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: token -in: header -description: 'token to be passed as a header' -required: true -type: array -items: - type: integer - format: int64 -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerStringArrayParameter.yaml deleted file mode 100644 index 70e0a0a680..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerStringArrayParameter.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: token -in: header -description: 'token to be passed as a header' -required: true -type: array -items: - type: string -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerStringParameter.yaml deleted file mode 100644 index ac99c2f62c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/headerStringParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: token -in: header -description: 'token to be passed as a header' -required: true -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathInt64Parameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathInt64Parameter.yaml deleted file mode 100644 index 3bd860aacd..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathInt64Parameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: path -description: 'username to fetch' -required: true -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathStringArrayParameter.yaml deleted file mode 100644 index ebb24a7e22..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathStringArrayParameter.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: usernames -in: path -description: 'usernames to pass' -required: true -type: array -items: - type: string -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathStringParameter.yaml deleted file mode 100644 index 2cb4fb2eec..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/pathStringParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: username -in: path -description: 'username to fetch' -required: true -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryInt64ArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryInt64ArrayParameter.yaml deleted file mode 100644 index 453e24f5d1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryInt64ArrayParameter.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: id -in: query -description: 'ID of the object to fetch' -required: true -type: array -items: - type: integer - format: int64 -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryStringParameter.yaml deleted file mode 100644 index e1df685309..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryStringParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: query -description: 'ID of the object to fetch' -required: true -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryWithComplexParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryWithComplexParameter.yaml deleted file mode 100644 index 80bc7951b8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/parameters/queryWithComplexParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: query -description: 'a complex object which should not validate' -required: true -schema: - $ref: Pet diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithExamplePayload.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithExamplePayload.yaml deleted file mode 100644 index 9828d96050..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithExamplePayload.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {get: {description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}, examples: {application/json: {id: 9, category: {name: domestic}, name: monster, tags: [{name: 'for sale'}], status: alive}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string, example: cat}, tag: {type: string, example: 'for sale'}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithLinkedDefinitions.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithLinkedDefinitions.yaml deleted file mode 100644 index b9b00c47f1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithLinkedDefinitions.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {$ref: 'https://raw.githubusercontent.com/reverb/swagger-spec/master/fixtures/v2.0/json/resources/resourceWithLinkedDefinitions_part1.json'} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithLinkedDefinitions_part1.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithLinkedDefinitions_part1.yaml deleted file mode 100644 index 7d358fbf10..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithLinkedDefinitions_part1.yaml +++ /dev/null @@ -1,7 +0,0 @@ -get: - description: 'Returns a pet based on ID' - summary: 'Find pet by ID' - operationId: getPetsById - produces: [application/json, text/html] - parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}] - responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithRelativeHost.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithRelativeHost.yaml deleted file mode 100644 index 744aa72e9a..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/resourceWithRelativeHost.yaml +++ /dev/null @@ -1,22 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/reusableParameters.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/reusableParameters.yaml deleted file mode 100644 index 1d258d0827..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/reusableParameters.yaml +++ /dev/null @@ -1,26 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, parameters: [{$ref: '#/parameters/skipParam'}, {$ref: '#/parameters/limitParam'}], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -parameters: - skipParam: {name: skip, in: query, description: 'number of items to skip', required: true, type: integer, format: int32} - limitParam: {name: limit, in: query, description: 'max records to return', required: true, type: integer, format: int32} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/securityExample.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/securityExample.yaml deleted file mode 100644 index 007d26db43..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/securityExample.yaml +++ /dev/null @@ -1,29 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -security: - - {githubAccessCode: [user, gist]} - - {internalApiKey: []} -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, security: [{githubAuth: ['user:read', 'user:write']}, {internalApiKey: []}], produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -securityDefinitions: - githubAccessCode: {type: oauth2, scopes: {user: 'Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.', 'user:email': 'Grants read access to a user’s email addresses.', 'user:follow': 'Grants access to follow or unfollow other users.', public_repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.', repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.', repo_deployment: 'Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.', 'repo:status': 'Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.', delete_repo: 'Grants access to delete adminable repositories.', notifications: 'Grants read access to a user’s notifications. repo also provides this access.', gist: 'Grants write access to gists.', 'read:repo_hook': 'Grants read and ping access to hooks in public or private repositories.', 'write:repo_hook': 'Grants read, write, and ping access to hooks in public or private repositories.', 'admin:repo_hook': 'Grants read, write, ping, and delete access to hooks in public or private repositories.', 'read:org': 'Read-only access to organization, teams, and membership.', 'write:org': 'Publicize and unpublicize organization membership.', 'admin:org': 'Fully manage organization, teams, and memberships.', 'read:public_key': 'List and view details for public keys.', 'write:public_key': 'Create, list, and view details for public keys.', 'admin:public_key': 'Fully manage public keys.'}, flow: accessCode, authorizationUrl: 'https://github.com/login/oauth/authorize', tokenUrl: 'https://github.com/login/oauth/access_token'} - petstoreImplicit: {type: oauth2, scopes: {user: 'Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.', 'user:email': 'Grants read access to a user’s email addresses.', 'user:follow': 'Grants access to follow or unfollow other users.', public_repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.', repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.', repo_deployment: 'Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.', 'repo:status': 'Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.', delete_repo: 'Grants access to delete adminable repositories.', notifications: 'Grants read access to a user’s notifications. repo also provides this access.', gist: 'Grants write access to gists.', 'read:repo_hook': 'Grants read and ping access to hooks in public or private repositories.', 'write:repo_hook': 'Grants read, write, and ping access to hooks in public or private repositories.', 'admin:repo_hook': 'Grants read, write, ping, and delete access to hooks in public or private repositories.', 'read:org': 'Read-only access to organization, teams, and membership.', 'write:org': 'Publicize and unpublicize organization membership.', 'admin:org': 'Fully manage organization, teams, and memberships.', 'read:public_key': 'List and view details for public keys.', 'write:public_key': 'Create, list, and view details for public keys.', 'admin:public_key': 'Fully manage public keys.'}, flow: implicit, authorizationUrl: 'http://petstore.swagger.wordnik.com/oauth/dialog'} - internalApiKey: {type: apiKey, in: header, name: api_key} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/stringPathParamResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/stringPathParamResource.yaml deleted file mode 100644 index a4a83fea0f..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/stringPathParamResource.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {get: {description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/taggedResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/taggedResource.yaml deleted file mode 100644 index 1b8620e52c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/taggedResource.yaml +++ /dev/null @@ -1,29 +0,0 @@ -swagger: '2.0' -x-reverb: - addAnythingYouWant: true -info: - x-reverb-info: 'this is an example' - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -tags: - - {name: pets} -paths: - x-reverb-path-info: 'vendor info' - /pets: {x-vendor-method: {}, get: {x-vendor-operation-property: {}, description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{x-vendor-parameter-property: {}, name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, x-vendor-operation-response-property: {}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {x-vendor-model-property: {}, required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/vendorExtensionExamples.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/vendorExtensionExamples.yaml deleted file mode 100644 index 59bba0f3d0..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/resources/vendorExtensionExamples.yaml +++ /dev/null @@ -1,27 +0,0 @@ -swagger: '2.0' -x-reverb: - addAnythingYouWant: true -info: - x-reverb-info: 'this is an example' - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - x-reverb-path-info: 'vendor info' - /pets: {x-vendor-method: {}, get: {x-vendor-operation-property: {}, description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{x-vendor-parameter-property: {}, name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, x-vendor-operation-response-property: {}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {x-vendor-model-property: {}, required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/complexArrayResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/complexArrayResponse.yaml deleted file mode 100644 index bc5ce95341..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/complexArrayResponse.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A complex object array response' -schema: - type: array - items: {$ref: VeryComplexType} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/dateTimeResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/dateTimeResponse.yaml deleted file mode 100644 index 9bc3e8043b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/dateTimeResponse.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A date-time response' -schema: - type: string - format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/int32Response.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/int32Response.yaml deleted file mode 100644 index e4456c9fe8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/int32Response.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A simple string response' -schema: - type: integer - format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/int64Response.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/int64Response.yaml deleted file mode 100644 index ca58b2a5f8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/int64Response.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A simple string response' -schema: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/multipleResponses.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/multipleResponses.yaml deleted file mode 100644 index 4cd1312c51..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/multipleResponses.yaml +++ /dev/null @@ -1,8 +0,0 @@ -'200': - description: 'simple string response' - schema: {type: string} -'201': - description: 'object created' -default: - description: oops - schema: {type: integer, format: int32} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringArrayResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringArrayResponse.yaml deleted file mode 100644 index cab5fad8c6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringArrayResponse.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A string array response' -schema: - type: array - items: {type: string} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringResponse.yaml deleted file mode 100644 index 61a25e5109..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringResponse.yaml +++ /dev/null @@ -1,3 +0,0 @@ -description: 'A simple string response' -schema: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringResponseWithHeader.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringResponseWithHeader.yaml deleted file mode 100644 index 77c2c75618..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/stringResponseWithHeader.yaml +++ /dev/null @@ -1,6 +0,0 @@ -description: 'A simple string response' -schema: - type: string -headers: - is-dog: {type: boolean} - is-cat: {type: boolean} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/voidResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/voidResponse.yaml deleted file mode 100644 index f2aa5e1241..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/responses/voidResponse.yaml +++ /dev/null @@ -1 +0,0 @@ -description: 'object created' diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/.gitkeep b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithArrayRef.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithArrayRef.yaml deleted file mode 100644 index b32a35901d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithArrayRef.yaml +++ /dev/null @@ -1,5 +0,0 @@ -required: - - id -properties: - id: {type: integer, format: int64} - children: {type: array, items: {$ref: Person}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithComposition.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithComposition.yaml deleted file mode 100644 index f0ea5e80f2..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithComposition.yaml +++ /dev/null @@ -1,5 +0,0 @@ -definitions: - Cat: {description: 'A representation of a cat', allOf: [{$ref: '#/models/Pet'}, {properties: {huntingSkill: {type: string, description: 'The measured skill for hunting', default: lazy, enum: [clueless, lazy, adventerous, aggressive]}}, required: [huntingSkill]}]} - Dog: {description: 'A representation of a dog', allOf: [{$ref: '#/models/Pet'}, {properties: {packSize: {type: integer, format: int32, description: 'the size of the pack the dog is from', default: 0}}, required: [name, packSize]}]} - Fish: {description: 'A representation of a fish', allOf: [{$ref: '#/models/Pet'}, {properties: {fins: {type: integer, format: int32, description: 'count of fins'}}, required: [fins]}]} - Pet: {discriminator: petType, properties: {name: {type: string}, petType: {type: string}}, required: [name, petType]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithDateTimeMap.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithDateTimeMap.yaml deleted file mode 100644 index 653cbd1825..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithDateTimeMap.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'true' -additionalProperties: - type: string - format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithExamples.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithExamples.yaml deleted file mode 100644 index 0252ec176c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithExamples.yaml +++ /dev/null @@ -1,3 +0,0 @@ -definitions: - Pet: {properties: {name: {type: string}}, required: [name]} - Dog: {properties: {id: {type: integer, format: int64}, name: {type: string}}, required: [name]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithInt32Map.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithInt32Map.yaml deleted file mode 100644 index 88ab02447a..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithInt32Map.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'This is a Map[String, Integer]' -additionalProperties: - type: integer - format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithInt64Map.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithInt64Map.yaml deleted file mode 100644 index 16c790e42d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithInt64Map.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'true' -additionalProperties: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithMultipleProperties.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithMultipleProperties.yaml deleted file mode 100644 index f69d27ef29..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithMultipleProperties.yaml +++ /dev/null @@ -1,14 +0,0 @@ -description: 'true' -properties: - booleanValue: {type: boolean} - byteValue: {type: string, format: byte} - dateTimeValue: {type: string, format: date-time} - int32Value: {type: integer, format: int32} - int64Value: {type: integer, format: int64} - stringValue: {type: string} - booleanArrayValue: {type: array, items: {type: boolean}} - byteArrayValue: {type: array, items: {type: string, format: byte}} - dateTimeArrayValue: {type: array, items: {type: string, format: date-time}} - int32ArrayValue: {type: array, items: {type: integer, format: int32}} - int64ArrayValue: {type: array, items: {type: integer, format: int64}} - stringArrayValue: {type: array, items: {type: string}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithObjectMap.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithObjectMap.yaml deleted file mode 100644 index e712e0f220..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithObjectMap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: "This is a Map[String, { id: Long, name: String}]" -additionalProperties: - type: "object" - properties: - id: - type: "integer" - format: "int64" - name: - type: "string" diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithPrimitiveArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithPrimitiveArray.yaml deleted file mode 100644 index 0837bad52b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithPrimitiveArray.yaml +++ /dev/null @@ -1,5 +0,0 @@ -required: - - id -properties: - id: {type: integer, format: int64} - childrensAges: {type: array, items: {type: integer, format: int32}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithStringProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithStringProperty.yaml deleted file mode 100644 index a17d21e5a1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithStringProperty.yaml +++ /dev/null @@ -1,3 +0,0 @@ -description: 'true' -properties: - name: {type: string} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithXmlAttributes.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithXmlAttributes.yaml deleted file mode 100644 index 2176983f89..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/modelWithXmlAttributes.yaml +++ /dev/null @@ -1,6 +0,0 @@ -description: 'this model serves xml and json structures' -xml: - name: XMLModel -properties: - id: {type: integer, format: int64, xml: {attribute: true, namespace: ns1, prefix: urn1}} - items: {type: array, items: {type: string}, xml: {wrapped: true}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/models.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/models.yaml deleted file mode 100644 index 71f8efeb42..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/models.yaml +++ /dev/null @@ -1,2 +0,0 @@ -definitions: - Pet: {properties: {name: {type: string}}, required: [name]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/multipleModels.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/multipleModels.yaml deleted file mode 100644 index 0252ec176c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/multipleModels.yaml +++ /dev/null @@ -1,3 +0,0 @@ -definitions: - Pet: {properties: {name: {type: string}}, required: [name]} - Dog: {properties: {id: {type: integer, format: int64}, name: {type: string}}, required: [name]} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithBooleanArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithBooleanArray.yaml deleted file mode 100644 index aa02d0e742..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithBooleanArray.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: array -items: - type: boolean diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithByteArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithByteArray.yaml deleted file mode 100644 index f31b350362..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithByteArray.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: string - format: byte diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithComplexArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithComplexArray.yaml deleted file mode 100644 index 69e0b17658..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithComplexArray.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: array -items: - $ref: ComplexType diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithDateTimeArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithDateTimeArray.yaml deleted file mode 100644 index 6efef25d8f..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithDateTimeArray.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: string - format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithInt32Array.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithInt32Array.yaml deleted file mode 100644 index 26fd271b00..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithInt32Array.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: integer - format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithInt64Array.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithInt64Array.yaml deleted file mode 100644 index e800895ebc..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithInt64Array.yaml +++ /dev/null @@ -1,4 +0,0 @@ -type: array -items: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithRef.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithRef.yaml deleted file mode 100644 index d78956949e..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithRef.yaml +++ /dev/null @@ -1,3 +0,0 @@ -$ref: Foo -description: 'a boolean' -readOnly: true diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithStringArray.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithStringArray.yaml deleted file mode 100644 index 3a9108235c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/propertyWithStringArray.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: array -items: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleBooleanProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleBooleanProperty.yaml deleted file mode 100644 index 9d1e27382b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleBooleanProperty.yaml +++ /dev/null @@ -1,3 +0,0 @@ -type: boolean -description: 'a boolean' -readOnly: true diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleByteProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleByteProperty.yaml deleted file mode 100644 index 6af2139f99..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleByteProperty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: string -format: byte diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleDateTimeProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleDateTimeProperty.yaml deleted file mode 100644 index 407b1d7e8f..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleDateTimeProperty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: string -format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleInt32Property.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleInt32Property.yaml deleted file mode 100644 index 8ed513dba0..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleInt32Property.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: integer -format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleInt64Property.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleInt64Property.yaml deleted file mode 100644 index 69f359f3fd..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleInt64Property.yaml +++ /dev/null @@ -1,2 +0,0 @@ -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleStringProperty.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleStringProperty.yaml deleted file mode 100644 index 5c21d88b9e..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/models/properties/simpleStringProperty.yaml +++ /dev/null @@ -1 +0,0 @@ -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/cascadingSchemes.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/cascadingSchemes.yaml deleted file mode 100644 index d108027742..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/cascadingSchemes.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {get: {description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}, schemes: [https]}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/commonParameters.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/commonParameters.yaml deleted file mode 100644 index 9851b7448c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/commonParameters.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/multipleMimeTypes.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/multipleMimeTypes.yaml deleted file mode 100644 index 23bdc2d2a3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/multipleMimeTypes.yaml +++ /dev/null @@ -1,32 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - 'text/plain; charset=utf-8' - - application/json - - application/vnd.github+json - - application/vnd.github.v3+json - - application/vnd.github.v3.raw+json - - application/vnd.github.v3.text+json - - application/vnd.github.v3.html+json - - application/vnd.github.v3.full+json - - application/vnd.github.v3.diff - - application/vnd.github.v3.patch -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/operationWithTags.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/operationWithTags.yaml deleted file mode 100644 index a3c85b26a3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/operationWithTags.yaml +++ /dev/null @@ -1,14 +0,0 @@ -description: 'Returns a pet based on ID' -summary: 'Find pet by ID' -operationId: getPetsById -tags: - - foo - - bar -produces: - - application/json - - text/html -parameters: - - {name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: integer, format: int64} -responses: - '200': {description: 'a pet to be returned', schema: {$ref: Pet}} - default: {description: 'Unexpected error', schema: {$ref: ErrorModel}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/stringPathAndBoolQueryParamResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/stringPathAndBoolQueryParamResource.yaml deleted file mode 100644 index a00b8c469c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/stringPathAndBoolQueryParamResource.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: 'Returns a pet based on ID' -summary: 'Find pet by ID' -operationId: getPetsById -produces: - - application/json - - text/html -parameters: - - {name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: integer, format: int64} - - {name: includeDetails, in: query, description: 'include details in response', required: true, type: boolean} -responses: - '200': {description: 'a pet to be returned', schema: {$ref: Pet}} - default: {description: 'Unexpected error', schema: {$ref: ErrorModel}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/stringPathParamResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/stringPathParamResource.yaml deleted file mode 100644 index 8c46cc7ee8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/operations/stringPathParamResource.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: 'Returns a pet based on ID' -summary: 'Find pet by ID' -operationId: getPetsById -produces: - - application/json - - text/html -parameters: - - {name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: integer, format: int64} -responses: - '200': {description: fun, schema: {$ref: Pet}} - '400': {description: 'Invalid ID supplied <= this is purely for documentation', schema: {$ref: ErrorModel}} - default: {description: 'Unexpected error', schema: {$ref: ErrorModel}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyComplexArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyComplexArrayParameter.yaml deleted file mode 100644 index 511f8dc2b3..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyComplexArrayParameter.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - type: array - items: {type: string} - format: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyComplexParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyComplexParameter.yaml deleted file mode 100644 index 13f8fd171b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyComplexParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - $ref: User diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyInt64Parameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyInt64Parameter.yaml deleted file mode 100644 index a270d94cb5..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyInt64Parameter.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: id -in: body -description: 'id to add' -required: true -schema: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyStringArrayParameter.yaml deleted file mode 100644 index 7d88b10dc9..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyStringArrayParameter.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - type: array - items: {type: string} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyStringParameter.yaml deleted file mode 100644 index 7fe9dbd1e0..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/bodyStringParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: user -in: body -description: 'user to add to the system' -required: true -schema: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataComplexParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataComplexParameter.yaml deleted file mode 100644 index b49dd9e3d6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataComplexParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: firstName -in: formData -description: 'users first name' -required: true -$ref: Nothing diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataInt64Parameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataInt64Parameter.yaml deleted file mode 100644 index 0faaa7f62d..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataInt64Parameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: formData -description: 'username to fetch' -required: true -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataStringArrayParameter.yaml deleted file mode 100644 index f6534662a5..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataStringArrayParameter.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: user -in: formData -description: 'user to add to the system' -required: true -type: array -items: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataStringParameter.yaml deleted file mode 100644 index 43411cf047..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/formDataStringParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: firstName -in: formData -description: 'users first name' -required: true -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerInt64ArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerInt64ArrayParameter.yaml deleted file mode 100644 index 87ec99cabc..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerInt64ArrayParameter.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: token -in: header -description: 'token to be passed as a header' -required: true -type: array -items: - type: integer - format: int64 -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerStringArrayParameter.yaml deleted file mode 100644 index 70e0a0a680..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerStringArrayParameter.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: token -in: header -description: 'token to be passed as a header' -required: true -type: array -items: - type: string -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerStringParameter.yaml deleted file mode 100644 index ac99c2f62c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/headerStringParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: token -in: header -description: 'token to be passed as a header' -required: true -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathInt64Parameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathInt64Parameter.yaml deleted file mode 100644 index 3bd860aacd..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathInt64Parameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: path -description: 'username to fetch' -required: true -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathStringArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathStringArrayParameter.yaml deleted file mode 100644 index ebb24a7e22..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathStringArrayParameter.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: usernames -in: path -description: 'usernames to pass' -required: true -type: array -items: - type: string -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathStringParameter.yaml deleted file mode 100644 index 2cb4fb2eec..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/pathStringParameter.yaml +++ /dev/null @@ -1,5 +0,0 @@ -name: username -in: path -description: 'username to fetch' -required: true -type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryInt64ArrayParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryInt64ArrayParameter.yaml deleted file mode 100644 index 453e24f5d1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryInt64ArrayParameter.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: id -in: query -description: 'ID of the object to fetch' -required: true -type: array -items: - type: integer - format: int64 -collectionFormat: csv diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryStringParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryStringParameter.yaml deleted file mode 100644 index e1df685309..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryStringParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: query -description: 'ID of the object to fetch' -required: true -type: integer -format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryWithComplexParameter.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryWithComplexParameter.yaml deleted file mode 100644 index 80bc7951b8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/parameters/queryWithComplexParameter.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: id -in: query -description: 'a complex object which should not validate' -required: true -schema: - $ref: Pet diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithExamplePayload.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithExamplePayload.yaml deleted file mode 100644 index 9828d96050..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithExamplePayload.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {get: {description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}, examples: {application/json: {id: 9, category: {name: domestic}, name: monster, tags: [{name: 'for sale'}], status: alive}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string, example: cat}, tag: {type: string, example: 'for sale'}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithLinkedDefinitions.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithLinkedDefinitions.yaml deleted file mode 100644 index b9b00c47f1..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithLinkedDefinitions.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {$ref: 'https://raw.githubusercontent.com/reverb/swagger-spec/master/fixtures/v2.0/json/resources/resourceWithLinkedDefinitions_part1.json'} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithLinkedDefinitions_part1.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithLinkedDefinitions_part1.yaml deleted file mode 100644 index 7d358fbf10..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithLinkedDefinitions_part1.yaml +++ /dev/null @@ -1,7 +0,0 @@ -get: - description: 'Returns a pet based on ID' - summary: 'Find pet by ID' - operationId: getPetsById - produces: [application/json, text/html] - parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}] - responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithRelativeHost.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithRelativeHost.yaml deleted file mode 100644 index 744aa72e9a..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/resourceWithRelativeHost.yaml +++ /dev/null @@ -1,22 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/reusableParameters.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/reusableParameters.yaml deleted file mode 100644 index 1d258d0827..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/reusableParameters.yaml +++ /dev/null @@ -1,26 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{id}': {get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, parameters: [{$ref: '#/parameters/skipParam'}, {$ref: '#/parameters/limitParam'}], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -parameters: - skipParam: {name: skip, in: query, description: 'number of items to skip', required: true, type: integer, format: int32} - limitParam: {name: limit, in: query, description: 'max records to return', required: true, type: integer, format: int32} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/securityExample.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/securityExample.yaml deleted file mode 100644 index 007d26db43..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/securityExample.yaml +++ /dev/null @@ -1,29 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -security: - - {githubAccessCode: [user, gist]} - - {internalApiKey: []} -paths: - '/pets/{id}': {parameters: [{name: id, in: path, description: 'ID of pet to use', required: true, type: array, items: {type: string}, collectionFormat: csv}], get: {description: 'Returns pets based on ID', summary: 'Find pets by ID', operationId: getPetsById, security: [{githubAuth: ['user:read', 'user:write']}, {internalApiKey: []}], produces: [application/json, text/html], responses: {'200': {description: 'pet response', schema: {type: array, items: {$ref: Pet}}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -securityDefinitions: - githubAccessCode: {type: oauth2, scopes: {user: 'Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.', 'user:email': 'Grants read access to a user’s email addresses.', 'user:follow': 'Grants access to follow or unfollow other users.', public_repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.', repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.', repo_deployment: 'Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.', 'repo:status': 'Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.', delete_repo: 'Grants access to delete adminable repositories.', notifications: 'Grants read access to a user’s notifications. repo also provides this access.', gist: 'Grants write access to gists.', 'read:repo_hook': 'Grants read and ping access to hooks in public or private repositories.', 'write:repo_hook': 'Grants read, write, and ping access to hooks in public or private repositories.', 'admin:repo_hook': 'Grants read, write, ping, and delete access to hooks in public or private repositories.', 'read:org': 'Read-only access to organization, teams, and membership.', 'write:org': 'Publicize and unpublicize organization membership.', 'admin:org': 'Fully manage organization, teams, and memberships.', 'read:public_key': 'List and view details for public keys.', 'write:public_key': 'Create, list, and view details for public keys.', 'admin:public_key': 'Fully manage public keys.'}, flow: accessCode, authorizationUrl: 'https://github.com/login/oauth/authorize', tokenUrl: 'https://github.com/login/oauth/access_token'} - petstoreImplicit: {type: oauth2, scopes: {user: 'Grants read/write access to profile info only. Note that this scope includes user:email and user:follow.', 'user:email': 'Grants read access to a user’s email addresses.', 'user:follow': 'Grants access to follow or unfollow other users.', public_repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public repositories and organizations.', repo: 'Grants read/write access to code, commit statuses, and deployment statuses for public and private repositories and organizations.', repo_deployment: 'Grants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.', 'repo:status': 'Grants read/write access to public and private repository commit statuses. This scope is only necessary to grant other users or services access to private repository commit statuses without granting access to the code.', delete_repo: 'Grants access to delete adminable repositories.', notifications: 'Grants read access to a user’s notifications. repo also provides this access.', gist: 'Grants write access to gists.', 'read:repo_hook': 'Grants read and ping access to hooks in public or private repositories.', 'write:repo_hook': 'Grants read, write, and ping access to hooks in public or private repositories.', 'admin:repo_hook': 'Grants read, write, ping, and delete access to hooks in public or private repositories.', 'read:org': 'Read-only access to organization, teams, and membership.', 'write:org': 'Publicize and unpublicize organization membership.', 'admin:org': 'Fully manage organization, teams, and memberships.', 'read:public_key': 'List and view details for public keys.', 'write:public_key': 'Create, list, and view details for public keys.', 'admin:public_key': 'Fully manage public keys.'}, flow: implicit, authorizationUrl: 'http://petstore.swagger.wordnik.com/oauth/dialog'} - internalApiKey: {type: apiKey, in: header, name: api_key} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/stringPathParamResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/stringPathParamResource.yaml deleted file mode 100644 index a4a83fea0f..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/stringPathParamResource.yaml +++ /dev/null @@ -1,23 +0,0 @@ -swagger: '2.0' -info: - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - '/pets/{petId}': {get: {description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/taggedResource.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/taggedResource.yaml deleted file mode 100644 index 1b8620e52c..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/taggedResource.yaml +++ /dev/null @@ -1,29 +0,0 @@ -swagger: '2.0' -x-reverb: - addAnythingYouWant: true -info: - x-reverb-info: 'this is an example' - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -tags: - - {name: pets} -paths: - x-reverb-path-info: 'vendor info' - /pets: {x-vendor-method: {}, get: {x-vendor-operation-property: {}, description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{x-vendor-parameter-property: {}, name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, x-vendor-operation-response-property: {}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {x-vendor-model-property: {}, required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/vendorExtensionExamples.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/vendorExtensionExamples.yaml deleted file mode 100644 index 59bba0f3d0..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/resources/vendorExtensionExamples.yaml +++ /dev/null @@ -1,27 +0,0 @@ -swagger: '2.0' -x-reverb: - addAnythingYouWant: true -info: - x-reverb-info: 'this is an example' - version: 1.0.9-abcd - title: 'Swagger Sample API' - description: 'A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification' - termsOfService: 'http://helloreverb.com/terms/' - contact: {name: 'wordnik api team', url: 'http://developer.wordnik.com'} - license: {name: 'Creative Commons 4.0 International', url: 'http://creativecommons.org/licenses/by/4.0/'} -host: my.api.com -basePath: /v1 -schemes: - - http - - https -consumes: - - application/json -produces: - - application/json - - application/xml -paths: - x-reverb-path-info: 'vendor info' - /pets: {x-vendor-method: {}, get: {x-vendor-operation-property: {}, description: 'Returns a pet based on ID', summary: 'Find pet by ID', operationId: getPetsById, produces: [application/json, text/html], parameters: [{x-vendor-parameter-property: {}, name: petId, in: path, description: 'ID of pet that needs to be fetched', required: true, type: array, items: {type: string}, collectionFormat: csv}], responses: {'200': {description: 'pet response', schema: {$ref: Pet}}, x-vendor-operation-response-property: {}, default: {description: 'error payload', schema: {$ref: ErrorModel}}}}} -definitions: - Pet: {x-vendor-model-property: {}, required: [name], properties: {name: {type: string}, tag: {type: string}}} - ErrorModel: {required: [code, message], properties: {code: {type: integer, format: int32}, message: {type: string}}} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/complexArrayResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/complexArrayResponse.yaml deleted file mode 100644 index bc5ce95341..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/complexArrayResponse.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A complex object array response' -schema: - type: array - items: {$ref: VeryComplexType} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/dateTimeResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/dateTimeResponse.yaml deleted file mode 100644 index 9bc3e8043b..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/dateTimeResponse.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A date-time response' -schema: - type: string - format: date-time diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/int32Response.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/int32Response.yaml deleted file mode 100644 index e4456c9fe8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/int32Response.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A simple string response' -schema: - type: integer - format: int32 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/int64Response.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/int64Response.yaml deleted file mode 100644 index ca58b2a5f8..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/int64Response.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A simple string response' -schema: - type: integer - format: int64 diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/multipleResponses.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/multipleResponses.yaml deleted file mode 100644 index 4cd1312c51..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/multipleResponses.yaml +++ /dev/null @@ -1,8 +0,0 @@ -'200': - description: 'simple string response' - schema: {type: string} -'201': - description: 'object created' -default: - description: oops - schema: {type: integer, format: int32} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringArrayResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringArrayResponse.yaml deleted file mode 100644 index cab5fad8c6..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringArrayResponse.yaml +++ /dev/null @@ -1,4 +0,0 @@ -description: 'A string array response' -schema: - type: array - items: {type: string} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringResponse.yaml deleted file mode 100644 index 61a25e5109..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringResponse.yaml +++ /dev/null @@ -1,3 +0,0 @@ -description: 'A simple string response' -schema: - type: string diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringResponseWithHeader.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringResponseWithHeader.yaml deleted file mode 100644 index 77c2c75618..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/stringResponseWithHeader.yaml +++ /dev/null @@ -1,6 +0,0 @@ -description: 'A simple string response' -schema: - type: string -headers: - is-dog: {type: boolean} - is-cat: {type: boolean} diff --git a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/voidResponse.yaml b/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/voidResponse.yaml deleted file mode 100644 index f2aa5e1241..0000000000 --- a/vendor/github.com/go-openapi/loads/fixtures/yaml/yaml/responses/voidResponse.yaml +++ /dev/null @@ -1 +0,0 @@ -description: 'object created' diff --git a/vendor/github.com/go-openapi/loads/fmts/fixture_test.go b/vendor/github.com/go-openapi/loads/fmts/fixture_test.go deleted file mode 100644 index 6213ca57c4..0000000000 --- a/vendor/github.com/go-openapi/loads/fmts/fixture_test.go +++ /dev/null @@ -1,298 +0,0 @@ -// 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 fmts - -import ( - "encoding/json" - "io/ioutil" - "path/filepath" - "strings" - "testing" - - "github.com/go-openapi/spec" - "github.com/stretchr/testify/assert" -) - -var extensions = []string{"json"} - -func assertSpecJSON(t testing.TB, specJSON []byte) bool { - var expected map[string]interface{} - if !assert.NoError(t, json.Unmarshal(specJSON, &expected)) { - return false - } - - obj := spec.Swagger{} - if !assert.NoError(t, json.Unmarshal(specJSON, &obj)) { - return false - } - - cb, err := json.MarshalIndent(obj, "", " ") - if assert.NoError(t, err) { - return false - } - var actual map[string]interface{} - if !assert.NoError(t, json.Unmarshal(cb, &actual)) { - return false - } - return assertSpecMaps(t, actual, expected) -} - -func assertSpecMaps(t testing.TB, actual, expected map[string]interface{}) bool { - res := true - if id, ok := expected["id"]; ok { - res = assert.Equal(t, id, actual["id"]) - } - res = res && assert.Equal(t, expected["consumes"], actual["consumes"]) - res = res && assert.Equal(t, expected["produces"], actual["produces"]) - res = res && assert.Equal(t, expected["schemes"], actual["schemes"]) - res = res && assert.Equal(t, expected["swagger"], actual["swagger"]) - res = res && assert.Equal(t, expected["info"], actual["info"]) - res = res && assert.Equal(t, expected["host"], actual["host"]) - res = res && assert.Equal(t, expected["basePath"], actual["basePath"]) - res = res && assert.Equal(t, expected["paths"], actual["paths"]) - res = res && assert.Equal(t, expected["definitions"], actual["definitions"]) - res = res && assert.Equal(t, expected["responses"], actual["responses"]) - res = res && assert.Equal(t, expected["securityDefinitions"], actual["securityDefinitions"]) - res = res && assert.Equal(t, expected["tags"], actual["tags"]) - res = res && assert.Equal(t, expected["externalDocs"], actual["externalDocs"]) - res = res && assert.Equal(t, expected["x-some-extension"], actual["x-some-extension"]) - res = res && assert.Equal(t, expected["x-schemes"], actual["x-schemes"]) - - return res -} - -func roundTripTest(t *testing.T, fixtureType, extension, fileName string, schema interface{}) bool { - if extension == "yaml" { - return roundTripTestYAML(t, fixtureType, fileName, schema) - } - return roundTripTestJSON(t, fixtureType, fileName, schema) -} - -func roundTripTestJSON(t *testing.T, fixtureType, fileName string, schema interface{}) bool { - specName := strings.TrimSuffix(fileName, filepath.Ext(fileName)) - t.Logf("verifying %s JSON fixture %q", fixtureType, specName) - - b, err := ioutil.ReadFile(fileName) - if !assert.NoError(t, err) { - return false - } - - var expected map[string]interface{} - if !assert.NoError(t, json.Unmarshal(b, &expected)) { - return false - } - - if !assert.NoError(t, json.Unmarshal(b, schema)) { - return false - } - - cb, err := json.MarshalIndent(schema, "", " ") - if !assert.NoError(t, err) { - return false - } - - var actual map[string]interface{} - if !assert.NoError(t, json.Unmarshal(cb, &actual)) { - return false - } - - return assert.EqualValues(t, expected, actual) -} - -func roundTripTestYAML(t *testing.T, fixtureType, fileName string, schema interface{}) bool { - specName := strings.TrimSuffix(fileName, filepath.Ext(fileName)) - t.Logf("verifying %s YAML fixture %q", fixtureType, specName) - - b, err := YAMLDoc(fileName) - if !assert.NoError(t, err) { - return false - } - - var expected map[string]interface{} - if !assert.NoError(t, json.Unmarshal(b, &expected)) { - return false - } - - if !assert.NoError(t, json.Unmarshal(b, schema)) { - return false - } - - cb, err := json.MarshalIndent(schema, "", " ") - if !assert.NoError(t, err) { - return false - } - - var actual map[string]interface{} - if !assert.NoError(t, json.Unmarshal(cb, &actual)) { - return false - } - - return assert.EqualValues(t, expected, actual) -} - -func TestPropertyFixtures(t *testing.T) { - for _, extension := range extensions { - path := filepath.Join("..", "fixtures", extension, "models", "properties") - files, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - - // for _, f := range files { - // roundTripTest(t, "property", extension, filepath.Join(path, f.Name()), &Schema{}) - // } - f := files[0] - roundTripTest(t, "property", extension, filepath.Join(path, f.Name()), &spec.Schema{}) - } -} - -func TestAdditionalPropertiesWithObject(t *testing.T) { - schema := new(spec.Schema) - b, err := YAMLDoc("../fixtures/yaml/models/modelWithObjectMap.yaml") - if assert.NoError(t, err) { - var expected map[string]interface{} - if assert.NoError(t, json.Unmarshal(b, &expected)) && assert.NoError(t, json.Unmarshal(b, schema)) { - cb, err := json.MarshalIndent(schema, "", " ") - if assert.NoError(t, err) { - var actual map[string]interface{} - if assert.NoError(t, json.Unmarshal(cb, &actual)) { - assert.Equal(t, expected, actual) - } - } - } - } - -} - -func TestModelFixtures(t *testing.T) { - path := filepath.Join("..", "fixtures", "json", "models") - files, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - specs := []string{"modelWithObjectMap", "models", "modelWithComposition", "modelWithExamples", "multipleModels"} -FILES: - for _, f := range files { - if f.IsDir() { - continue - } - for _, sp := range specs { - if strings.HasPrefix(f.Name(), sp) { - roundTripTest(t, "model", "json", filepath.Join(path, f.Name()), &spec.Schema{}) - continue FILES - } - } - //fmt.Println("trying", f.Name()) - roundTripTest(t, "model", "json", filepath.Join(path, f.Name()), &spec.Schema{}) - } - path = filepath.Join("..", "fixtures", "yaml", "models") - files, err = ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } -YAMLFILES: - for _, f := range files { - if f.IsDir() { - continue - } - for _, sp := range specs { - if strings.HasPrefix(f.Name(), sp) { - roundTripTest(t, "model", "yaml", filepath.Join(path, f.Name()), &spec.Schema{}) - continue YAMLFILES - } - } - // fmt.Println("trying", f.Name()) - roundTripTest(t, "model", "yaml", filepath.Join(path, f.Name()), &spec.Schema{}) - } -} - -func TestParameterFixtures(t *testing.T) { - path := filepath.Join("..", "fixtures", "json", "resources", "parameters") - files, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - - for _, f := range files { - roundTripTest(t, "parameter", "json", filepath.Join(path, f.Name()), &spec.Parameter{}) - } -} - -func TestOperationFixtures(t *testing.T) { - path := filepath.Join("..", "fixtures", "json", "resources", "operations") - files, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - - for _, f := range files { - roundTripTest(t, "operation", "json", filepath.Join(path, f.Name()), &spec.Operation{}) - } -} - -func TestResponseFixtures(t *testing.T) { - path := filepath.Join("..", "fixtures", "json", "responses") - files, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - - for _, f := range files { - if !strings.HasPrefix(f.Name(), "multiple") { - roundTripTest(t, "response", "json", filepath.Join(path, f.Name()), &spec.Response{}) - } else { - roundTripTest(t, "responses", "json", filepath.Join(path, f.Name()), &spec.Responses{}) - } - } -} - -func TestResourcesFixtures(t *testing.T) { - path := filepath.Join("..", "fixtures", "json", "resources") - files, err := ioutil.ReadDir(path) - if err != nil { - t.Fatal(err) - } - pathItems := []string{"resourceWithLinkedDefinitions_part1"} - toSkip := []string{} -FILES: - for _, f := range files { - if f.IsDir() { - continue - } - for _, ts := range toSkip { - if strings.HasPrefix(f.Name(), ts) { - t.Log("verifying resource" + strings.TrimSuffix(f.Name(), filepath.Ext(f.Name()))) - b, err := ioutil.ReadFile(filepath.Join(path, f.Name())) - if assert.NoError(t, err) { - assertSpecJSON(t, b) - } - continue FILES - } - } - for _, pi := range pathItems { - if strings.HasPrefix(f.Name(), pi) { - roundTripTest(t, "path items", "json", filepath.Join(path, f.Name()), &spec.PathItem{}) - continue FILES - } - } - - t.Logf("verifying resource %q", strings.TrimSuffix(f.Name(), filepath.Ext(f.Name()))) - b2, err := ioutil.ReadFile(filepath.Join(path, f.Name())) - if assert.NoError(t, err) { - assertSpecJSON(t, b2) - } - - } -} diff --git a/vendor/github.com/go-openapi/loads/fmts/yaml.go b/vendor/github.com/go-openapi/loads/fmts/yaml.go deleted file mode 100644 index 936de3b7a6..0000000000 --- a/vendor/github.com/go-openapi/loads/fmts/yaml.go +++ /dev/null @@ -1,112 +0,0 @@ -// 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 fmts - -import ( - "encoding/json" - "fmt" - "path/filepath" - "strconv" - - "github.com/go-openapi/swag" - - "gopkg.in/yaml.v2" -) - -// YAMLMatcher matches yaml -func YAMLMatcher(path string) bool { - ext := filepath.Ext(path) - return ext == ".yaml" || ext == ".yml" -} - -// YAMLToJSON converts YAML unmarshaled data into json compatible data -func YAMLToJSON(data interface{}) (json.RawMessage, error) { - jm, err := transformData(data) - if err != nil { - return nil, err - } - b, err := swag.WriteJSON(jm) - return json.RawMessage(b), err -} - -func bytesToYAMLDoc(data []byte) (interface{}, error) { - var document map[interface{}]interface{} - if err := yaml.Unmarshal(data, &document); err != nil { - return nil, err - } - - return document, nil -} - -func transformData(in interface{}) (out interface{}, err error) { - switch in.(type) { - case map[interface{}]interface{}: - o := make(map[string]interface{}) - for k, v := range in.(map[interface{}]interface{}) { - sk := "" - switch k.(type) { - case string: - sk = k.(string) - case int: - sk = strconv.Itoa(k.(int)) - default: - return nil, fmt.Errorf("types don't match: expect map key string or int get: %T", k) - } - v, err = transformData(v) - if err != nil { - return nil, err - } - o[sk] = v - } - return o, nil - case []interface{}: - in1 := in.([]interface{}) - len1 := len(in1) - o := make([]interface{}, len1) - for i := 0; i < len1; i++ { - o[i], err = transformData(in1[i]) - if err != nil { - return nil, err - } - } - return o, nil - } - return in, nil -} - -// YAMLDoc loads a yaml document from either http or a file and converts it to json -func YAMLDoc(path string) (json.RawMessage, error) { - yamlDoc, err := YAMLData(path) - if err != nil { - return nil, err - } - - data, err := YAMLToJSON(yamlDoc) - if err != nil { - return nil, err - } - - return json.RawMessage(data), nil -} - -// YAMLData loads a yaml document from either http or a file -func YAMLData(path string) (interface{}, error) { - data, err := swag.LoadFromFileOrHTTP(path) - if err != nil { - return nil, err - } - - return bytesToYAMLDoc(data) -} diff --git a/vendor/github.com/go-openapi/loads/fmts/yaml_test.go b/vendor/github.com/go-openapi/loads/fmts/yaml_test.go deleted file mode 100644 index 2f89b2d910..0000000000 --- a/vendor/github.com/go-openapi/loads/fmts/yaml_test.go +++ /dev/null @@ -1,442 +0,0 @@ -// 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 fmts - -import ( - "encoding/json" - "errors" - "net/http" - "net/http/httptest" - "testing" - - "github.com/go-openapi/swag" - "github.com/stretchr/testify/assert" -) - -type failJSONMarhal struct { -} - -func (f failJSONMarhal) MarshalJSON() ([]byte, error) { - return nil, errors.New("expected") -} - -func TestLoadHTTPBytes(t *testing.T) { - _, err := swag.LoadFromFileOrHTTP("httx://12394:abd") - assert.Error(t, err) - - serv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - rw.WriteHeader(http.StatusNotFound) - })) - defer serv.Close() - - _, err = swag.LoadFromFileOrHTTP(serv.URL) - assert.Error(t, err) - - ts2 := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - rw.WriteHeader(http.StatusOK) - rw.Write([]byte("the content")) - })) - defer ts2.Close() - - d, err := swag.LoadFromFileOrHTTP(ts2.URL) - assert.NoError(t, err) - assert.Equal(t, []byte("the content"), d) -} - -func TestYAMLToJSON(t *testing.T) { - - data := make(map[interface{}]interface{}) - data[1] = "the int key value" - data["name"] = "a string value" - data["y"] = "some value" - - d, err := YAMLToJSON(data) - if assert.NoError(t, err) { - assert.Equal(t, `{"1":"the int key value","name":"a string value","y":"some value"}`, string(d)) - } - - data[true] = "the bool value" - d, err = YAMLToJSON(data) - assert.Error(t, err) - assert.Nil(t, d) - - delete(data, true) - - tag := make(map[interface{}]interface{}) - tag["name"] = "tag name" - data["tag"] = tag - - d, err = YAMLToJSON(data) - assert.NoError(t, err) - assert.Equal(t, `{"1":"the int key value","name":"a string value","tag":{"name":"tag name"},"y":"some value"}`, string(d)) - - tag = make(map[interface{}]interface{}) - tag[true] = "bool tag name" - data["tag"] = tag - - d, err = YAMLToJSON(data) - assert.Error(t, err) - assert.Nil(t, d) - - var lst []interface{} - lst = append(lst, "hello") - - d, err = YAMLToJSON(lst) - assert.NoError(t, err) - assert.Equal(t, []byte(`["hello"]`), []byte(d)) - - lst = append(lst, data) - - d, err = YAMLToJSON(lst) - assert.Error(t, err) - assert.Nil(t, d) - - // _, err := yamlToJSON(failJSONMarhal{}) - // assert.Error(t, err) - - _, err = bytesToYAMLDoc([]byte("- name: hello\n")) - assert.Error(t, err) - - dd, err := bytesToYAMLDoc([]byte("description: 'object created'\n")) - assert.NoError(t, err) - - d, err = YAMLToJSON(dd) - assert.NoError(t, err) - assert.Equal(t, json.RawMessage(`{"description":"object created"}`), d) -} - -func TestLoadStrategy(t *testing.T) { - - loader := func(p string) ([]byte, error) { - return []byte(yamlPetStore), nil - } - remLoader := func(p string) ([]byte, error) { - return []byte("not it"), nil - } - - ld := swag.LoadStrategy("blah", loader, remLoader) - b, _ := ld("") - assert.Equal(t, []byte(yamlPetStore), b) - - serv := httptest.NewServer(http.HandlerFunc(yamlPestoreServer)) - defer serv.Close() - - s, err := YAMLDoc(serv.URL) - assert.NoError(t, err) - assert.NotNil(t, s) - - ts2 := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - rw.WriteHeader(http.StatusNotFound) - rw.Write([]byte("\n")) - })) - defer ts2.Close() - _, err = YAMLDoc(ts2.URL) - assert.Error(t, err) -} - -var yamlPestoreServer = func(rw http.ResponseWriter, r *http.Request) { - rw.WriteHeader(http.StatusOK) - rw.Write([]byte(yamlPetStore)) -} - -func TestWithYKey(t *testing.T) { - doc, err := bytesToYAMLDoc([]byte(withYKey)) - if assert.NoError(t, err) { - _, err := YAMLToJSON(doc) - if assert.Error(t, err) { - doc, err := bytesToYAMLDoc([]byte(withQuotedYKey)) - if assert.NoError(t, err) { - jsond, err := YAMLToJSON(doc) - if assert.NoError(t, err) { - var yt struct { - Definitions struct { - Viewbox struct { - Properties struct { - Y struct { - Type string `json:"type"` - } `json:"y"` - } `json:"properties"` - } `json:"viewbox"` - } `json:"definitions"` - } - if assert.NoError(t, json.Unmarshal(jsond, &yt)) { - assert.Equal(t, "integer", yt.Definitions.Viewbox.Properties.Y.Type) - } - } - } - } - - } -} - -const withQuotedYKey = `consumes: -- application/json -definitions: - viewBox: - type: object - properties: - x: - type: integer - format: int16 - # y -> types don't match: expect map key string or int get: bool - "y": - type: integer - format: int16 - width: - type: integer - format: int16 - height: - type: integer - format: int16 -info: - description: Test RESTful APIs - title: Test Server - version: 1.0.0 -basePath: /api -paths: - /test: - get: - operationId: findAll - parameters: - - name: since - in: query - type: integer - format: int64 - - name: limit - in: query - type: integer - format: int32 - default: 20 - responses: - 200: - description: Array[Trigger] - schema: - type: array - items: - $ref: "#/definitions/viewBox" -produces: -- application/json -schemes: -- https -swagger: "2.0" -` - -const withYKey = `consumes: -- application/json -definitions: - viewBox: - type: object - properties: - x: - type: integer - format: int16 - # y -> types don't match: expect map key string or int get: bool - y: - type: integer - format: int16 - width: - type: integer - format: int16 - height: - type: integer - format: int16 -info: - description: Test RESTful APIs - title: Test Server - version: 1.0.0 -basePath: /api -paths: - /test: - get: - operationId: findAll - parameters: - - name: since - in: query - type: integer - format: int64 - - name: limit - in: query - type: integer - format: int32 - default: 20 - responses: - 200: - description: Array[Trigger] - schema: - type: array - items: - $ref: "#/definitions/viewBox" -produces: -- application/json -schemes: -- https -swagger: "2.0" -` - -const yamlPetStore = `swagger: '2.0' -info: - version: '1.0.0' - title: Swagger Petstore - description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification - termsOfService: http://helloreverb.com/terms/ - contact: - name: Swagger API team - email: foo@example.com - url: http://swagger.io - license: - name: MIT - url: http://opensource.org/licenses/MIT -host: petstore.swagger.wordnik.com -basePath: /api -schemes: - - http -consumes: - - application/json -produces: - - application/json -paths: - /pets: - get: - description: Returns all pets from the system that the user has access to - operationId: findPets - produces: - - application/json - - application/xml - - text/xml - - text/html - parameters: - - name: tags - in: query - description: tags to filter by - required: false - type: array - items: - type: string - collectionFormat: csv - - name: limit - in: query - description: maximum number of results to return - required: false - type: integer - format: int32 - responses: - '200': - description: pet response - schema: - type: array - items: - $ref: '#/definitions/pet' - default: - description: unexpected error - schema: - $ref: '#/definitions/errorModel' - post: - description: Creates a new pet in the store. Duplicates are allowed - operationId: addPet - produces: - - application/json - parameters: - - name: pet - in: body - description: Pet to add to the store - required: true - schema: - $ref: '#/definitions/newPet' - responses: - '200': - description: pet response - schema: - $ref: '#/definitions/pet' - default: - description: unexpected error - schema: - $ref: '#/definitions/errorModel' - /pets/{id}: - get: - description: Returns a user based on a single ID, if the user does not have access to the pet - operationId: findPetById - produces: - - application/json - - application/xml - - text/xml - - text/html - parameters: - - name: id - in: path - description: ID of pet to fetch - required: true - type: integer - format: int64 - responses: - '200': - description: pet response - schema: - $ref: '#/definitions/pet' - default: - description: unexpected error - schema: - $ref: '#/definitions/errorModel' - delete: - description: deletes a single pet based on the ID supplied - operationId: deletePet - parameters: - - name: id - in: path - description: ID of pet to delete - required: true - type: integer - format: int64 - responses: - '204': - description: pet deleted - default: - description: unexpected error - schema: - $ref: '#/definitions/errorModel' -definitions: - pet: - required: - - id - - name - properties: - id: - type: integer - format: int64 - name: - type: string - tag: - type: string - newPet: - allOf: - - $ref: '#/definitions/pet' - - required: - - name - properties: - id: - type: integer - format: int64 - name: - type: string - errorModel: - required: - - code - - message - properties: - code: - type: integer - format: int32 - message: - type: string -` diff --git a/vendor/github.com/go-openapi/loads/hack/build-drone.sh b/vendor/github.com/go-openapi/loads/hack/build-drone.sh deleted file mode 100755 index 52b1180cc9..0000000000 --- a/vendor/github.com/go-openapi/loads/hack/build-drone.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -set -e -o pipefail - - mkdir -p /drone/{testresults,coverage,dist} - go test -race -timeout 20m -v ./... | go-junit-report -dir /drone/testresults - -# Run test coverage on each subdirectories and merge the coverage profile. -echo "mode: ${GOCOVMODE-count}" > profile.cov - -# Standard go tooling behavior is to ignore dirs with leading underscores -# skip generator for race detection and coverage -for dir in $(go list ./...) -do - pth="$GOPATH/src/$dir" - go test -covermode=${GOCOVMODE-count} -coverprofile=${pth}/profile.out $dir - if [ -f $pth/profile.out ] - then - cat $pth/profile.out | tail -n +2 >> profile.cov - # rm $pth/profile.out - fi -done - -go tool cover -func profile.cov -gocov convert profile.cov | gocov report -gocov convert profile.cov | gocov-html > /drone/coverage/coverage-${CI_BUILD_NUM-"0"}.html \ No newline at end of file diff --git a/vendor/github.com/go-openapi/loads/json_test.go b/vendor/github.com/go-openapi/loads/json_test.go deleted file mode 100644 index 8b60eb19f4..0000000000 --- a/vendor/github.com/go-openapi/loads/json_test.go +++ /dev/null @@ -1,318 +0,0 @@ -// 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 loads - -import ( - "net/http" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestLoadJSON(t *testing.T) { - serv := httptest.NewServer(http.HandlerFunc(jsonPestoreServer)) - defer serv.Close() - - s, err := JSONSpec(serv.URL) - assert.NoError(t, err) - assert.NotNil(t, s) - - ts2 := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - rw.WriteHeader(http.StatusNotFound) - rw.Write([]byte("{}")) - })) - defer ts2.Close() - _, err = JSONSpec(ts2.URL) - assert.Error(t, err) -} - -var jsonPestoreServer = func(rw http.ResponseWriter, r *http.Request) { - rw.WriteHeader(http.StatusOK) - rw.Write([]byte(petstoreJSON)) -} - -const petstoreJSON = `{ - "swagger": "2.0", - "info": { - "version": "1.0.0", - "title": "Swagger Petstore", - "contact": { - "name": "Wordnik API Team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "petstore.swagger.wordnik.com", - "basePath": "/api", - "schemes": [ - "http" - ], - "paths": { - "/pets": { - "get": { - "security": [ - { - "oauth2": ["read"] - } - ], - "tags": [ "Pet Operations" ], - "operationId": "getAllPets", - "parameters": [ - { - "name": "status", - "in": "query", - "description": "The status to filter by", - "type": "string" - } - ], - "summary": "Finds all pets in the system", - "responses": { - "200": { - "description": "Pet response", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Pet" - } - } - }, - "default": { - "description": "Unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - }, - "post": { - "security": [ - { - "oauth2": ["write"] - } - ], - "tags": [ "Pet Operations" ], - "operationId": "createPet", - "summary": "Creates a new pet", - "parameters": [ - { - "name": "pet", - "in": "body", - "description": "The Pet to create", - "required": true, - "schema": { - "$ref": "#/definitions/newPet" - } - } - ], - "responses": { - "200": { - "description": "Created Pet response", - "schema": { - "$ref": "#/definitions/Pet" - } - }, - "default": { - "description": "Unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - } - }, - "/pets/{id}": { - "delete": { - "security": [ - { - "oauth2": ["write"] - } - ], - "description": "Deletes the Pet by id", - "operationId": "deletePet", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet to delete", - "required": true, - "type": "integer", - "format": "int64" - } - ], - "responses": { - "204": { - "description": "pet deleted" - }, - "default": { - "description": "unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - }, - "get": { - "security": [ - { - "oauth2": ["read"] - } - ], - "tags": [ "Pet Operations" ], - "operationId": "getPetById", - "summary": "Finds the pet by id", - "responses": { - "200": { - "description": "Pet response", - "schema": { - "$ref": "#/definitions/Pet" - } - }, - "default": { - "description": "Unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - }, - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet", - "required": true, - "type": "integer", - "format": "int64" - } - ] - } - }, - "definitions": { - "Category": { - "id": "Category", - "properties": { - "id": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - } - } - }, - "Pet": { - "id": "Pet", - "properties": { - "category": { - "$ref": "#/definitions/Category" - }, - "id": { - "description": "unique identifier for the pet", - "format": "int64", - "maximum": 100.0, - "minimum": 0.0, - "type": "integer" - }, - "name": { - "type": "string" - }, - "photoUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "pet status in the store", - "enum": [ - "available", - "pending", - "sold" - ], - "type": "string" - }, - "tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "id", - "name" - ] - }, - "newPet": { - "allOf": [ - { - "$ref": "#/definitions/Pet" - } - ], - "required": [ - "name" - ] - }, - "Tag": { - "id": "Tag", - "properties": { - "id": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - } - } - }, - "Error": { - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - }, - "produces": [ - "application/json", - "application/xml", - "text/plain", - "text/html" - ], - "securityDefinitions": { - "oauth2": { - "type": "oauth2", - "scopes": { - "read": "Read access.", - "write": "Write access" - }, - "flow": "accessCode", - "authorizationUrl": "http://petstore.swagger.wordnik.com/oauth/authorize", - "tokenUrl": "http://petstore.swagger.wordnik.com/oauth/token" - } - } -}` diff --git a/vendor/github.com/go-openapi/loads/spec.go b/vendor/github.com/go-openapi/loads/spec.go deleted file mode 100644 index ff1ee1c9fa..0000000000 --- a/vendor/github.com/go-openapi/loads/spec.go +++ /dev/null @@ -1,203 +0,0 @@ -// 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 loads - -import ( - "encoding/json" - "fmt" - "net/url" - - "github.com/go-openapi/analysis" - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -// JSONDoc loads a json document from either a file or a remote url -func JSONDoc(path string) (json.RawMessage, error) { - data, err := swag.LoadFromFileOrHTTP(path) - if err != nil { - return nil, err - } - return json.RawMessage(data), nil -} - -// DocLoader represents a doc loader type -type DocLoader func(string) (json.RawMessage, error) - -// DocMatcher represents a predicate to check if a loader matches -type DocMatcher func(string) bool - -var loaders = &loader{Match: func(_ string) bool { return true }, Fn: JSONDoc} - -// AddLoader for a document -func AddLoader(predicate DocMatcher, load DocLoader) { - prev := loaders - loaders = &loader{ - Match: predicate, - Fn: load, - Next: prev, - } - -} - -type loader struct { - Fn DocLoader - Match DocMatcher - Next *loader -} - -// JSONSpec loads a spec from a json document -func JSONSpec(path string) (*Document, error) { - data, err := JSONDoc(path) - if err != nil { - return nil, err - } - // convert to json - return Analyzed(json.RawMessage(data), "") -} - -// Document represents a swagger spec document -type Document struct { - // specAnalyzer - Analyzer *analysis.Spec - spec *spec.Swagger - origSpec *spec.Swagger - schema *spec.Schema - raw json.RawMessage -} - -// Spec loads a new spec document -func Spec(path string) (*Document, error) { - specURL, err := url.Parse(path) - if err != nil { - return nil, err - } - for l := loaders.Next; l != nil; l = l.Next { - if loaders.Match(specURL.Path) { - b, err2 := loaders.Fn(path) - if err2 != nil { - return nil, err2 - } - return Analyzed(b, "") - } - } - b, err := loaders.Fn(path) - if err != nil { - return nil, err - } - return Analyzed(b, "") -} - -var swag20Schema = spec.MustLoadSwagger20Schema() - -// Analyzed creates a new analyzed spec document -func Analyzed(data json.RawMessage, version string) (*Document, error) { - if version == "" { - version = "2.0" - } - if version != "2.0" { - return nil, fmt.Errorf("spec version %q is not supported", version) - } - - swspec := new(spec.Swagger) - if err := json.Unmarshal(data, swspec); err != nil { - return nil, err - } - - origsqspec := new(spec.Swagger) - if err := json.Unmarshal(data, origsqspec); err != nil { - return nil, err - } - - d := &Document{ - Analyzer: analysis.New(swspec), - schema: swag20Schema, - spec: swspec, - raw: data, - origSpec: origsqspec, - } - return d, nil -} - -// Expanded expands the ref fields in the spec document and returns a new spec document -func (d *Document) Expanded() (*Document, error) { - swspec := new(spec.Swagger) - if err := json.Unmarshal(d.raw, swspec); err != nil { - return nil, err - } - if err := spec.ExpandSpec(swspec); err != nil { - return nil, err - } - - dd := &Document{ - Analyzer: analysis.New(swspec), - spec: swspec, - schema: swag20Schema, - raw: d.raw, - origSpec: d.origSpec, - } - return dd, nil -} - -// BasePath the base path for this spec -func (d *Document) BasePath() string { - return d.spec.BasePath -} - -// Version returns the version of this spec -func (d *Document) Version() string { - return d.spec.Swagger -} - -// Schema returns the swagger 2.0 schema -func (d *Document) Schema() *spec.Schema { - return d.schema -} - -// Spec returns the swagger spec object model -func (d *Document) Spec() *spec.Swagger { - return d.spec -} - -// Host returns the host for the API -func (d *Document) Host() string { - return d.spec.Host -} - -// Raw returns the raw swagger spec as json bytes -func (d *Document) Raw() json.RawMessage { - return d.raw -} - -func (d *Document) OrigSpec() *spec.Swagger { - return d.origSpec -} - -// ResetDefinitions gives a shallow copy with the models reset -func (d *Document) ResetDefinitions() *Document { - defs := make(map[string]spec.Schema, len(d.origSpec.Definitions)) - for k, v := range d.origSpec.Definitions { - defs[k] = v - } - - d.spec.Definitions = defs - return d -} - -// Pristine creates a new pristine document instance based on the input data -func (d *Document) Pristine() *Document { - dd, _ := Analyzed(d.Raw(), d.Version()) - return dd -} diff --git a/vendor/github.com/go-openapi/loads/spec_test.go b/vendor/github.com/go-openapi/loads/spec_test.go deleted file mode 100644 index 582e0802ef..0000000000 --- a/vendor/github.com/go-openapi/loads/spec_test.go +++ /dev/null @@ -1,339 +0,0 @@ -package loads - -import ( - "encoding/json" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestUnknownSpecVersion(t *testing.T) { - _, err := Analyzed([]byte{}, "0.9") - assert.Error(t, err) -} - -func TestDefaultsTo20(t *testing.T) { - d, err := Analyzed(PetStoreJSONMessage, "") - - assert.NoError(t, err) - assert.NotNil(t, d) - assert.Equal(t, "2.0", d.Version()) - // assert.Equal(t, "2.0", d.data["swagger"].(string)) - assert.Equal(t, "/api", d.BasePath()) -} - -// func TestValidatesValidSchema(t *testing.T) { -// d, err := New(testingutil.PetStoreJSONMessage, "") - -// assert.NoError(t, err) -// assert.NotNil(t, d) -// res := d.Validate() -// assert.NotNil(t, res) -// assert.True(t, res.Valid()) -// assert.Empty(t, res.Errors()) - -// } - -// func TestFailsInvalidSchema(t *testing.T) { -// d, err := New(testingutil.InvalidJSONMessage, "") - -// assert.NoError(t, err) -// assert.NotNil(t, d) - -// res := d.Validate() -// assert.NotNil(t, res) -// assert.False(t, res.Valid()) -// assert.NotEmpty(t, res.Errors()) -// } - -func TestFailsInvalidJSON(t *testing.T) { - _, err := Analyzed(json.RawMessage([]byte("{]")), "") - - assert.Error(t, err) -} - -// PetStoreJSONMessage json raw message for Petstore20 -var PetStoreJSONMessage = json.RawMessage([]byte(PetStore20)) - -// PetStore20 json doc for swagger 2.0 pet store -const PetStore20 = `{ - "swagger": "2.0", - "info": { - "version": "1.0.0", - "title": "Swagger Petstore", - "contact": { - "name": "Wordnik API Team", - "url": "http://developer.wordnik.com" - }, - "license": { - "name": "Creative Commons 4.0 International", - "url": "http://creativecommons.org/licenses/by/4.0/" - } - }, - "host": "petstore.swagger.wordnik.com", - "basePath": "/api", - "schemes": [ - "http" - ], - "paths": { - "/pets": { - "get": { - "security": [ - { - "basic": [] - } - ], - "tags": [ "Pet Operations" ], - "operationId": "getAllPets", - "parameters": [ - { - "name": "status", - "in": "query", - "description": "The status to filter by", - "type": "string" - }, - { - "name": "limit", - "in": "query", - "description": "The maximum number of results to return", - "type": "integer", - "format": "int64" - } - ], - "summary": "Finds all pets in the system", - "responses": { - "200": { - "description": "Pet response", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/Pet" - } - } - }, - "default": { - "description": "Unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - }, - "post": { - "security": [ - { - "basic": [] - } - ], - "tags": [ "Pet Operations" ], - "operationId": "createPet", - "summary": "Creates a new pet", - "consumes": ["application/x-yaml"], - "produces": ["application/x-yaml"], - "parameters": [ - { - "name": "pet", - "in": "body", - "description": "The Pet to create", - "required": true, - "schema": { - "$ref": "#/definitions/newPet" - } - } - ], - "responses": { - "200": { - "description": "Created Pet response", - "schema": { - "$ref": "#/definitions/Pet" - } - }, - "default": { - "description": "Unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - } - }, - "/pets/{id}": { - "delete": { - "security": [ - { - "apiKey": [] - } - ], - "description": "Deletes the Pet by id", - "operationId": "deletePet", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet to delete", - "required": true, - "type": "integer", - "format": "int64" - } - ], - "responses": { - "204": { - "description": "pet deleted" - }, - "default": { - "description": "unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - }, - "get": { - "tags": [ "Pet Operations" ], - "operationId": "getPetById", - "summary": "Finds the pet by id", - "responses": { - "200": { - "description": "Pet response", - "schema": { - "$ref": "#/definitions/Pet" - } - }, - "default": { - "description": "Unexpected error", - "schema": { - "$ref": "#/definitions/Error" - } - } - } - }, - "parameters": [ - { - "name": "id", - "in": "path", - "description": "ID of pet", - "required": true, - "type": "integer", - "format": "int64" - } - ] - } - }, - "definitions": { - "Category": { - "id": "Category", - "properties": { - "id": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - } - } - }, - "Pet": { - "id": "Pet", - "properties": { - "category": { - "$ref": "#/definitions/Category" - }, - "id": { - "description": "unique identifier for the pet", - "format": "int64", - "maximum": 100.0, - "minimum": 0.0, - "type": "integer" - }, - "name": { - "type": "string" - }, - "photoUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "pet status in the store", - "enum": [ - "available", - "pending", - "sold" - ], - "type": "string" - }, - "tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "id", - "name" - ] - }, - "newPet": { - "anyOf": [ - { - "$ref": "#/definitions/Pet" - }, - { - "required": [ - "name" - ] - } - ] - }, - "Tag": { - "id": "Tag", - "properties": { - "id": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - } - } - }, - "Error": { - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - }, - "consumes": [ - "application/json", - "application/xml" - ], - "produces": [ - "application/json", - "application/xml", - "text/plain", - "text/html" - ], - "securityDefinitions": { - "basic": { - "type": "basic" - }, - "apiKey": { - "type": "apiKey", - "in": "header", - "name": "X-API-KEY" - } - } -} -` diff --git a/vendor/github.com/golang/protobuf/.travis.yml b/vendor/github.com/golang/protobuf/.travis.yml deleted file mode 100644 index 24e22f85a8..0000000000 --- a/vendor/github.com/golang/protobuf/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -sudo: false -language: go -go: -- 1.6.x -- 1.7.x -- 1.8.x - -install: - - go get -v -d -t github.com/golang/protobuf/... - - curl -L https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip -o /tmp/protoc.zip - - unzip /tmp/protoc.zip -d $HOME/protoc - -env: - - PATH=$HOME/protoc/bin:$PATH - -script: - - make all test diff --git a/vendor/github.com/golang/protobuf/README.md b/vendor/github.com/golang/protobuf/README.md index 795f53f6ff..037fc7c8e2 100644 --- a/vendor/github.com/golang/protobuf/README.md +++ b/vendor/github.com/golang/protobuf/README.md @@ -1,7 +1,5 @@ # Go support for Protocol Buffers -[![Build Status](https://travis-ci.org/golang/protobuf.svg?branch=master)](https://travis-ci.org/golang/protobuf) - Google's data interchange format. Copyright 2010 The Go Authors. https://github.com/golang/protobuf @@ -24,7 +22,7 @@ To use this software, you must: for details or, if you are using gccgo, follow the instructions at https://golang.org/doc/install/gccgo - Grab the code from the repository and install the proto package. - The simplest way is to run `go get -u github.com/golang/protobuf/protoc-gen-go`. + The simplest way is to run `go get -u github.com/golang/protobuf/{proto,protoc-gen-go}`. The compiler plugin, protoc-gen-go, will be installed in $GOBIN, defaulting to $GOPATH/bin. It must be in your $PATH for the protocol compiler, protoc, to find it. @@ -106,6 +104,7 @@ for a protocol buffer variable v: 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. Consider file test.proto, containing diff --git a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go b/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go index ec354eada7..2caf992c78 100644 --- a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go +++ b/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: conformance_proto/conformance.proto +// DO NOT EDIT! /* Package conformance is a generated protocol buffer package. @@ -168,13 +169,6 @@ func (m *ConformanceRequest) GetJsonPayload() string { return "" } -func (m *ConformanceRequest) GetRequestedOutputFormat() WireFormat { - if m != nil { - return m.RequestedOutputFormat - } - return WireFormat_UNSPECIFIED -} - // XXX_OneofFuncs is for the internal use of the proto package. func (*ConformanceRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _ConformanceRequest_OneofMarshaler, _ConformanceRequest_OneofUnmarshaler, _ConformanceRequest_OneofSizer, []interface{}{ @@ -577,22 +571,22 @@ type TestAllTypes struct { // (protobuf says names can be any valid C/C++ identifier.) Fieldname1 int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"` FieldName2 int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"` - XFieldName3 int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"` + XFieldName3 int32 `protobuf:"varint,403,opt,name=_field_name3,json=fieldName3" json:"_field_name3,omitempty"` Field_Name4_ int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"` Field0Name5 int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"` Field_0Name6 int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"` FieldName7 int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"` - FieldName8 int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"` + FieldName8 int32 `protobuf:"varint,408,opt,name=FieldName8,json=fieldName8" json:"FieldName8,omitempty"` Field_Name9 int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"` - Field_Name10 int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"` - FIELD_NAME11 int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"` - FIELDName12 int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"` - XFieldName13 int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"` - X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"` + Field_Name10 int32 `protobuf:"varint,410,opt,name=Field_Name10,json=fieldName10" json:"Field_Name10,omitempty"` + FIELD_NAME11 int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=fIELDNAME11" json:"FIELD_NAME11,omitempty"` + FIELDName12 int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=fIELDName12" json:"FIELD_name12,omitempty"` + XFieldName13 int32 `protobuf:"varint,413,opt,name=__field_name13,json=fieldName13" json:"__field_name13,omitempty"` + X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=fieldName14" json:"__Field_name14,omitempty"` Field_Name15 int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"` Field__Name16 int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"` FieldName17__ int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"` - FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"` + FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=fieldName18" json:"Field_name18__,omitempty"` } func (m *TestAllTypes) Reset() { *m = TestAllTypes{} } @@ -649,111 +643,6 @@ func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField { return nil } -func (m *TestAllTypes) GetOptionalInt32() int32 { - if m != nil { - return m.OptionalInt32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalInt64() int64 { - if m != nil { - return m.OptionalInt64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalUint32() uint32 { - if m != nil { - return m.OptionalUint32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalUint64() uint64 { - if m != nil { - return m.OptionalUint64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSint32() int32 { - if m != nil { - return m.OptionalSint32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSint64() int64 { - if m != nil { - return m.OptionalSint64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFixed32() uint32 { - if m != nil { - return m.OptionalFixed32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFixed64() uint64 { - if m != nil { - return m.OptionalFixed64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSfixed32() int32 { - if m != nil { - return m.OptionalSfixed32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSfixed64() int64 { - if m != nil { - return m.OptionalSfixed64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFloat() float32 { - if m != nil { - return m.OptionalFloat - } - return 0 -} - -func (m *TestAllTypes) GetOptionalDouble() float64 { - if m != nil { - return m.OptionalDouble - } - return 0 -} - -func (m *TestAllTypes) GetOptionalBool() bool { - if m != nil { - return m.OptionalBool - } - return false -} - -func (m *TestAllTypes) GetOptionalString() string { - if m != nil { - return m.OptionalString - } - return "" -} - -func (m *TestAllTypes) GetOptionalBytes() []byte { - if m != nil { - return m.OptionalBytes - } - return nil -} - func (m *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage { if m != nil { return m.OptionalNestedMessage @@ -768,34 +657,6 @@ func (m *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage { return nil } -func (m *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum { - if m != nil { - return m.OptionalNestedEnum - } - return TestAllTypes_FOO -} - -func (m *TestAllTypes) GetOptionalForeignEnum() ForeignEnum { - if m != nil { - return m.OptionalForeignEnum - } - return ForeignEnum_FOREIGN_FOO -} - -func (m *TestAllTypes) GetOptionalStringPiece() string { - if m != nil { - return m.OptionalStringPiece - } - return "" -} - -func (m *TestAllTypes) GetOptionalCord() string { - if m != nil { - return m.OptionalCord - } - return "" -} - func (m *TestAllTypes) GetRecursiveMessage() *TestAllTypes { if m != nil { return m.RecursiveMessage @@ -803,111 +664,6 @@ func (m *TestAllTypes) GetRecursiveMessage() *TestAllTypes { return nil } -func (m *TestAllTypes) GetRepeatedInt32() []int32 { - if m != nil { - return m.RepeatedInt32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedInt64() []int64 { - if m != nil { - return m.RepeatedInt64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint32() []uint32 { - if m != nil { - return m.RepeatedUint32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint64() []uint64 { - if m != nil { - return m.RepeatedUint64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSint32() []int32 { - if m != nil { - return m.RepeatedSint32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSint64() []int64 { - if m != nil { - return m.RepeatedSint64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFixed32() []uint32 { - if m != nil { - return m.RepeatedFixed32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFixed64() []uint64 { - if m != nil { - return m.RepeatedFixed64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSfixed32() []int32 { - if m != nil { - return m.RepeatedSfixed32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSfixed64() []int64 { - if m != nil { - return m.RepeatedSfixed64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFloat() []float32 { - if m != nil { - return m.RepeatedFloat - } - return nil -} - -func (m *TestAllTypes) GetRepeatedDouble() []float64 { - if m != nil { - return m.RepeatedDouble - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBool() []bool { - if m != nil { - return m.RepeatedBool - } - return nil -} - -func (m *TestAllTypes) GetRepeatedString() []string { - if m != nil { - return m.RepeatedString - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBytes() [][]byte { - if m != nil { - return m.RepeatedBytes - } - return nil -} - func (m *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage { if m != nil { return m.RepeatedNestedMessage @@ -922,34 +678,6 @@ func (m *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage { return nil } -func (m *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum { - if m != nil { - return m.RepeatedNestedEnum - } - return nil -} - -func (m *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum { - if m != nil { - return m.RepeatedForeignEnum - } - return nil -} - -func (m *TestAllTypes) GetRepeatedStringPiece() []string { - if m != nil { - return m.RepeatedStringPiece - } - return nil -} - -func (m *TestAllTypes) GetRepeatedCord() []string { - if m != nil { - return m.RepeatedCord - } - return nil -} - func (m *TestAllTypes) GetMapInt32Int32() map[int32]int32 { if m != nil { return m.MapInt32Int32 @@ -1356,132 +1084,6 @@ func (m *TestAllTypes) GetRepeatedValue() []*google_protobuf3.Value { return nil } -func (m *TestAllTypes) GetFieldname1() int32 { - if m != nil { - return m.Fieldname1 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName2() int32 { - if m != nil { - return m.FieldName2 - } - return 0 -} - -func (m *TestAllTypes) GetXFieldName3() int32 { - if m != nil { - return m.XFieldName3 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name4_() int32 { - if m != nil { - return m.Field_Name4_ - } - return 0 -} - -func (m *TestAllTypes) GetField0Name5() int32 { - if m != nil { - return m.Field0Name5 - } - return 0 -} - -func (m *TestAllTypes) GetField_0Name6() int32 { - if m != nil { - return m.Field_0Name6 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName7() int32 { - if m != nil { - return m.FieldName7 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName8() int32 { - if m != nil { - return m.FieldName8 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name9() int32 { - if m != nil { - return m.Field_Name9 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name10() int32 { - if m != nil { - return m.Field_Name10 - } - return 0 -} - -func (m *TestAllTypes) GetFIELD_NAME11() int32 { - if m != nil { - return m.FIELD_NAME11 - } - return 0 -} - -func (m *TestAllTypes) GetFIELDName12() int32 { - if m != nil { - return m.FIELDName12 - } - return 0 -} - -func (m *TestAllTypes) GetXFieldName13() int32 { - if m != nil { - return m.XFieldName13 - } - return 0 -} - -func (m *TestAllTypes) GetX_FieldName14() int32 { - if m != nil { - return m.X_FieldName14 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name15() int32 { - if m != nil { - return m.Field_Name15 - } - return 0 -} - -func (m *TestAllTypes) GetField__Name16() int32 { - if m != nil { - return m.Field__Name16 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName17__() int32 { - if m != nil { - return m.FieldName17__ - } - return 0 -} - -func (m *TestAllTypes) GetFieldName18__() int32 { - if m != nil { - return m.FieldName18__ - } - return 0 -} - // XXX_OneofFuncs is for the internal use of the proto package. func (*TestAllTypes) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _TestAllTypes_OneofMarshaler, _TestAllTypes_OneofUnmarshaler, _TestAllTypes_OneofSizer, []interface{}{ @@ -1665,13 +1267,6 @@ func (m *TestAllTypes_NestedMessage) String() string { return proto.C func (*TestAllTypes_NestedMessage) ProtoMessage() {} func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } -func (m *TestAllTypes_NestedMessage) GetA() int32 { - if m != nil { - return m.A - } - return 0 -} - func (m *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes { if m != nil { return m.Corecursive @@ -1688,13 +1283,6 @@ func (m *ForeignMessage) String() string { return proto.CompactTextSt func (*ForeignMessage) ProtoMessage() {} func (*ForeignMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } -func (m *ForeignMessage) GetC() int32 { - if m != nil { - return m.C - } - return 0 -} - func init() { proto.RegisterType((*ConformanceRequest)(nil), "conformance.ConformanceRequest") proto.RegisterType((*ConformanceResponse)(nil), "conformance.ConformanceResponse") @@ -1709,177 +1297,176 @@ func init() { func init() { proto.RegisterFile("conformance_proto/conformance.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2737 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8, + // 2731 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8, 0xd5, 0x16, 0x08, 0x59, 0x4b, 0x93, 0x92, 0xa8, 0xd6, 0xd6, 0x96, 0x5d, 0x63, 0x58, 0xb2, 0x7f, - 0xd3, 0xf6, 0x8c, 0xac, 0x05, 0x86, 0x65, 0xcf, 0x3f, 0x8e, 0x45, 0x9b, 0xb4, 0xe4, 0x8c, 0x25, - 0x17, 0x64, 0x8d, 0xab, 0x9c, 0x0b, 0x06, 0xa6, 0x20, 0x15, 0xc7, 0x24, 0xc1, 0x01, 0x48, 0x4f, - 0x94, 0xcb, 0xbc, 0x41, 0xf6, 0x7d, 0xbd, 0xcf, 0x7a, 0x93, 0xa4, 0x92, 0xab, 0x54, 0x6e, 0xb2, - 0x27, 0x95, 0x3d, 0x79, 0x85, 0xbc, 0x43, 0x52, 0xbd, 0xa2, 0xbb, 0x01, 0x50, 0xf4, 0x54, 0x0d, - 0x25, 0x1e, 0x7c, 0xfd, 0x9d, 0xd3, 0xe7, 0x1c, 0x7c, 0x2d, 0x1c, 0x18, 0x2c, 0xd7, 0x83, 0xf6, - 0x51, 0x10, 0xb6, 0xbc, 0x76, 0xdd, 0xaf, 0x75, 0xc2, 0xa0, 0x1b, 0xdc, 0x90, 0x2c, 0x2b, 0xc4, - 0x02, 0xf3, 0x92, 0x69, 0xf1, 0xec, 0x71, 0x10, 0x1c, 0x37, 0xfd, 0x1b, 0xe4, 0xd2, 0x8b, 0xde, - 0xd1, 0x0d, 0xaf, 0x7d, 0x42, 0x71, 0x8b, 0x6f, 0xe8, 0x97, 0x0e, 0x7b, 0xa1, 0xd7, 0x6d, 0x04, - 0x6d, 0x76, 0xdd, 0xd2, 0xaf, 0x1f, 0x35, 0xfc, 0xe6, 0x61, 0xad, 0xe5, 0x45, 0x2f, 0x19, 0xe2, - 0xbc, 0x8e, 0x88, 0xba, 0x61, 0xaf, 0xde, 0x65, 0x57, 0x2f, 0xe8, 0x57, 0xbb, 0x8d, 0x96, 0x1f, - 0x75, 0xbd, 0x56, 0x27, 0x2b, 0x80, 0x0f, 0x43, 0xaf, 0xd3, 0xf1, 0xc3, 0x88, 0x5e, 0x5f, 0xfa, - 0x85, 0x01, 0xe0, 0xfd, 0x78, 0x2f, 0xae, 0xff, 0x41, 0xcf, 0x8f, 0xba, 0xf0, 0x3a, 0x28, 0xf2, - 0x15, 0xb5, 0x8e, 0x77, 0xd2, 0x0c, 0xbc, 0x43, 0x64, 0x58, 0x46, 0xa9, 0xb0, 0x3d, 0xe4, 0x4e, - 0xf1, 0x2b, 0x4f, 0xe8, 0x05, 0xb8, 0x0c, 0x0a, 0xef, 0x47, 0x41, 0x5b, 0x00, 0x73, 0x96, 0x51, - 0x1a, 0xdf, 0x1e, 0x72, 0xf3, 0xd8, 0xca, 0x41, 0x7b, 0x60, 0x21, 0xa4, 0xe4, 0xfe, 0x61, 0x2d, - 0xe8, 0x75, 0x3b, 0xbd, 0x6e, 0x8d, 0x78, 0xed, 0x22, 0xd3, 0x32, 0x4a, 0x93, 0xeb, 0x0b, 0x2b, - 0x72, 0x9a, 0x9f, 0x35, 0x42, 0xbf, 0x4a, 0x2e, 0xbb, 0x73, 0x62, 0xdd, 0x1e, 0x59, 0x46, 0xcd, - 0xe5, 0x71, 0x30, 0xca, 0x1c, 0x2e, 0x7d, 0x2a, 0x07, 0x66, 0x94, 0x4d, 0x44, 0x9d, 0xa0, 0x1d, - 0xf9, 0xf0, 0x22, 0xc8, 0x77, 0xbc, 0x30, 0xf2, 0x6b, 0x7e, 0x18, 0x06, 0x21, 0xd9, 0x00, 0x8e, - 0x0b, 0x10, 0x63, 0x05, 0xdb, 0xe0, 0x55, 0x30, 0x15, 0xf9, 0x61, 0xc3, 0x6b, 0x36, 0x3e, 0xc9, - 0x61, 0x23, 0x0c, 0x36, 0x29, 0x2e, 0x50, 0xe8, 0x65, 0x30, 0x11, 0xf6, 0xda, 0x38, 0xc1, 0x0c, - 0xc8, 0xf7, 0x59, 0x60, 0x66, 0x0a, 0x4b, 0x4b, 0x9d, 0x39, 0x68, 0xea, 0x86, 0xd3, 0x52, 0xb7, - 0x08, 0x46, 0xa3, 0x97, 0x8d, 0x4e, 0xc7, 0x3f, 0x44, 0x67, 0xd8, 0x75, 0x6e, 0x28, 0x8f, 0x81, - 0x91, 0xd0, 0x8f, 0x7a, 0xcd, 0xee, 0xd2, 0x7f, 0xaa, 0xa0, 0xf0, 0xd4, 0x8f, 0xba, 0x5b, 0xcd, - 0xe6, 0xd3, 0x93, 0x8e, 0x1f, 0xc1, 0xcb, 0x60, 0x32, 0xe8, 0xe0, 0x5e, 0xf3, 0x9a, 0xb5, 0x46, - 0xbb, 0xbb, 0xb1, 0x4e, 0x12, 0x70, 0xc6, 0x9d, 0xe0, 0xd6, 0x1d, 0x6c, 0xd4, 0x61, 0x8e, 0x4d, - 0xf6, 0x65, 0x2a, 0x30, 0xc7, 0x86, 0x57, 0xc0, 0x94, 0x80, 0xf5, 0x28, 0x1d, 0xde, 0xd5, 0x84, - 0x2b, 0x56, 0x1f, 0x10, 0x6b, 0x02, 0xe8, 0xd8, 0x64, 0x57, 0xc3, 0x2a, 0x50, 0x63, 0x8c, 0x28, - 0x23, 0xde, 0xde, 0x74, 0x0c, 0xdc, 0x4f, 0x32, 0x46, 0x94, 0x11, 0xd7, 0x08, 0xaa, 0x40, 0xc7, - 0x86, 0x57, 0x41, 0x51, 0x00, 0x8f, 0x1a, 0x9f, 0xf0, 0x0f, 0x37, 0xd6, 0xd1, 0xa8, 0x65, 0x94, - 0x46, 0x5d, 0x41, 0x50, 0xa5, 0xe6, 0x24, 0xd4, 0xb1, 0xd1, 0x98, 0x65, 0x94, 0x46, 0x34, 0xa8, - 0x63, 0xc3, 0xeb, 0x60, 0x3a, 0x76, 0xcf, 0x69, 0xc7, 0x2d, 0xa3, 0x34, 0xe5, 0x0a, 0x8e, 0x7d, - 0x66, 0x4f, 0x01, 0x3b, 0x36, 0x02, 0x96, 0x51, 0x2a, 0xea, 0x60, 0xc7, 0x56, 0x52, 0x7f, 0xd4, - 0x0c, 0xbc, 0x2e, 0xca, 0x5b, 0x46, 0x29, 0x17, 0xa7, 0xbe, 0x8a, 0x8d, 0xca, 0xfe, 0x0f, 0x83, - 0xde, 0x8b, 0xa6, 0x8f, 0x0a, 0x96, 0x51, 0x32, 0xe2, 0xfd, 0x3f, 0x20, 0x56, 0xb8, 0x0c, 0xc4, - 0xca, 0xda, 0x8b, 0x20, 0x68, 0xa2, 0x09, 0xcb, 0x28, 0x8d, 0xb9, 0x05, 0x6e, 0x2c, 0x07, 0x41, + 0xd3, 0xf6, 0x8c, 0x6c, 0x49, 0x30, 0x2c, 0x7b, 0xfe, 0x71, 0x2c, 0xda, 0xa4, 0x25, 0x67, 0x2c, + 0xb9, 0x20, 0x6b, 0x5c, 0xe5, 0x5c, 0x30, 0x10, 0x05, 0xa9, 0x38, 0x26, 0x09, 0x0e, 0x40, 0x7a, + 0xa2, 0x5c, 0xe6, 0x0d, 0xb2, 0xef, 0xeb, 0x7d, 0xd6, 0x9b, 0x24, 0x95, 0x5c, 0xa5, 0x72, 0x93, + 0x3d, 0xa9, 0xec, 0xc9, 0x2b, 0xe4, 0x1d, 0x92, 0xea, 0x15, 0xdd, 0x0d, 0x80, 0xa2, 0xa7, 0x6a, + 0x28, 0xf1, 0xe0, 0xeb, 0xef, 0x9c, 0x3e, 0xe7, 0xe0, 0x6b, 0xe1, 0xc0, 0x60, 0xb9, 0x1e, 0xb4, + 0x8f, 0x82, 0xb0, 0xe5, 0xb5, 0xeb, 0x7e, 0xad, 0x13, 0x06, 0xdd, 0xe0, 0x86, 0x64, 0x59, 0x21, + 0x16, 0x98, 0x97, 0x4c, 0x8b, 0x67, 0x8f, 0x83, 0xe0, 0xb8, 0xe9, 0xdf, 0x20, 0x97, 0x0e, 0x7a, + 0x47, 0x37, 0xbc, 0xf6, 0x09, 0xc5, 0x2d, 0xbe, 0xa1, 0x5f, 0x3a, 0xec, 0x85, 0x5e, 0xb7, 0x11, + 0xb4, 0xd9, 0x75, 0x4b, 0xbf, 0x7e, 0xd4, 0xf0, 0x9b, 0x87, 0xb5, 0x96, 0x17, 0xbd, 0x64, 0x88, + 0xf3, 0x3a, 0x22, 0xea, 0x86, 0xbd, 0x7a, 0x97, 0x5d, 0xbd, 0xa0, 0x5f, 0xed, 0x36, 0x5a, 0x7e, + 0xd4, 0xf5, 0x5a, 0x9d, 0xac, 0x00, 0x3e, 0x0c, 0xbd, 0x4e, 0xc7, 0x0f, 0x23, 0x7a, 0x7d, 0xe9, + 0x17, 0x06, 0x80, 0x0f, 0xe2, 0xbd, 0xb8, 0xfe, 0x07, 0x3d, 0x3f, 0xea, 0xc2, 0xeb, 0xa0, 0xc8, + 0x57, 0xd4, 0x3a, 0xde, 0x49, 0x33, 0xf0, 0x0e, 0x91, 0x61, 0x19, 0xa5, 0xc2, 0xd6, 0x90, 0x3b, + 0xc5, 0xaf, 0x3c, 0xa5, 0x17, 0xe0, 0x32, 0x28, 0xbc, 0x1f, 0x05, 0x6d, 0x01, 0xcc, 0x59, 0x46, + 0x69, 0x7c, 0x6b, 0xc8, 0xcd, 0x63, 0x2b, 0x07, 0xed, 0x82, 0x85, 0x90, 0x92, 0xfb, 0x87, 0xb5, + 0xa0, 0xd7, 0xed, 0xf4, 0xba, 0x35, 0xe2, 0xb5, 0x8b, 0x4c, 0xcb, 0x28, 0x4d, 0xae, 0x2d, 0xac, + 0xc8, 0x69, 0x7e, 0xde, 0x08, 0xfd, 0x2a, 0xb9, 0xec, 0xce, 0x89, 0x75, 0xbb, 0x64, 0x19, 0x35, + 0x97, 0xc7, 0xc1, 0x28, 0x73, 0xb8, 0xf4, 0xa9, 0x1c, 0x98, 0x51, 0x36, 0x11, 0x75, 0x82, 0x76, + 0xe4, 0xc3, 0x8b, 0x20, 0xdf, 0xf1, 0xc2, 0xc8, 0xaf, 0xf9, 0x61, 0x18, 0x84, 0x64, 0x03, 0x38, + 0x2e, 0x40, 0x8c, 0x15, 0x6c, 0x83, 0x57, 0xc1, 0x54, 0xe4, 0x87, 0x0d, 0xaf, 0xd9, 0xf8, 0x24, + 0x87, 0x8d, 0x30, 0xd8, 0xa4, 0xb8, 0x40, 0xa1, 0x97, 0xc1, 0x44, 0xd8, 0x6b, 0xe3, 0x04, 0x33, + 0x20, 0xdf, 0x67, 0x81, 0x99, 0x29, 0x2c, 0x2d, 0x75, 0xe6, 0xa0, 0xa9, 0x1b, 0x4e, 0x4b, 0xdd, + 0x22, 0x18, 0x8d, 0x5e, 0x36, 0x3a, 0x1d, 0xff, 0x10, 0x9d, 0x61, 0xd7, 0xb9, 0xa1, 0x3c, 0x06, + 0x46, 0x42, 0x3f, 0xea, 0x35, 0xbb, 0x4b, 0xff, 0xa9, 0x82, 0xc2, 0x33, 0x3f, 0xea, 0x6e, 0x36, + 0x9b, 0xcf, 0x4e, 0x3a, 0x7e, 0x04, 0x2f, 0x83, 0xc9, 0xa0, 0x83, 0x7b, 0xcd, 0x6b, 0xd6, 0x1a, + 0xed, 0xee, 0xfa, 0x1a, 0x49, 0xc0, 0x19, 0x77, 0x82, 0x5b, 0xb7, 0xb1, 0x51, 0x87, 0x39, 0x36, + 0xd9, 0x97, 0xa9, 0xc0, 0x1c, 0x1b, 0x5e, 0x01, 0x53, 0x02, 0xd6, 0xa3, 0x74, 0x78, 0x57, 0x13, + 0xae, 0x58, 0xbd, 0x4f, 0xac, 0x09, 0xa0, 0x63, 0x93, 0x5d, 0x0d, 0xab, 0x40, 0x8d, 0x31, 0xa2, + 0x8c, 0x78, 0x7b, 0xd3, 0x31, 0x70, 0x2f, 0xc9, 0x18, 0x51, 0x46, 0x5c, 0x23, 0xa8, 0x02, 0x1d, + 0x1b, 0x5e, 0x05, 0x45, 0x01, 0x3c, 0x6a, 0x7c, 0xc2, 0x3f, 0x5c, 0x5f, 0x43, 0xa3, 0x96, 0x51, + 0x1a, 0x75, 0x05, 0x41, 0x95, 0x9a, 0x93, 0x50, 0xc7, 0x46, 0x63, 0x96, 0x51, 0x1a, 0xd1, 0xa0, + 0x8e, 0x0d, 0xaf, 0x83, 0xe9, 0xd8, 0x3d, 0xa7, 0x1d, 0xb7, 0x8c, 0xd2, 0x94, 0x2b, 0x38, 0xf6, + 0x98, 0x3d, 0x05, 0xec, 0xd8, 0x08, 0x58, 0x46, 0xa9, 0xa8, 0x83, 0x1d, 0x5b, 0x49, 0xfd, 0x51, + 0x33, 0xf0, 0xba, 0x28, 0x6f, 0x19, 0xa5, 0x5c, 0x9c, 0xfa, 0x2a, 0x36, 0x2a, 0xfb, 0x3f, 0x0c, + 0x7a, 0x07, 0x4d, 0x1f, 0x15, 0x2c, 0xa3, 0x64, 0xc4, 0xfb, 0x7f, 0x48, 0xac, 0x70, 0x19, 0x88, + 0x95, 0xb5, 0x83, 0x20, 0x68, 0xa2, 0x09, 0xcb, 0x28, 0x8d, 0xb9, 0x05, 0x6e, 0x2c, 0x07, 0x41, 0x53, 0xcd, 0x66, 0x37, 0x6c, 0xb4, 0x8f, 0xd1, 0x24, 0xee, 0x2a, 0x29, 0x9b, 0xc4, 0xaa, 0x44, - 0xf7, 0xe2, 0xa4, 0xeb, 0x47, 0x68, 0x0a, 0xb7, 0x71, 0x1c, 0x5d, 0x19, 0x1b, 0x61, 0x0d, 0x2c, - 0x08, 0x58, 0x9b, 0xde, 0xde, 0x2d, 0x3f, 0x8a, 0xbc, 0x63, 0x1f, 0x41, 0xcb, 0x28, 0xe5, 0xd7, - 0xaf, 0x28, 0x37, 0xb6, 0xdc, 0xa2, 0x2b, 0xbb, 0x04, 0xff, 0x98, 0xc2, 0xdd, 0x39, 0xce, 0xa3, - 0x98, 0xe1, 0x01, 0x40, 0x71, 0x96, 0x82, 0xd0, 0x6f, 0x1c, 0xb7, 0x85, 0x87, 0x19, 0xe2, 0xe1, - 0x9c, 0xe2, 0xa1, 0x4a, 0x31, 0x9c, 0x75, 0x5e, 0x24, 0x53, 0xb1, 0xc3, 0xf7, 0xc0, 0xac, 0x1e, - 0xb7, 0xdf, 0xee, 0xb5, 0xd0, 0x1c, 0x51, 0xa3, 0x4b, 0xa7, 0x05, 0x5d, 0x69, 0xf7, 0x5a, 0x2e, - 0x54, 0x23, 0xc6, 0x36, 0xf8, 0x2e, 0x98, 0x4b, 0x84, 0x4b, 0x88, 0xe7, 0x09, 0x31, 0x4a, 0x8b, - 0x95, 0x90, 0xcd, 0x68, 0x81, 0x12, 0x36, 0x47, 0x62, 0xa3, 0xd5, 0xaa, 0x75, 0x1a, 0x7e, 0xdd, - 0x47, 0x08, 0xd7, 0xac, 0x9c, 0x1b, 0xcb, 0xc5, 0xeb, 0x68, 0xdd, 0x9e, 0xe0, 0xcb, 0xf0, 0x8a, - 0xd4, 0x0a, 0xf5, 0x20, 0x3c, 0x44, 0x67, 0x19, 0xde, 0x88, 0xdb, 0xe1, 0x7e, 0x10, 0x1e, 0xc2, - 0x2a, 0x98, 0x0e, 0xfd, 0x7a, 0x2f, 0x8c, 0x1a, 0xaf, 0x7c, 0x91, 0xd6, 0x73, 0x24, 0xad, 0x67, - 0x33, 0x73, 0xe0, 0x16, 0xc5, 0x1a, 0x9e, 0xce, 0xcb, 0x60, 0x32, 0xf4, 0x3b, 0xbe, 0x87, 0xf3, - 0x48, 0x6f, 0xe6, 0x0b, 0x96, 0x89, 0xd5, 0x86, 0x5b, 0x85, 0xda, 0xc8, 0x30, 0xc7, 0x46, 0x96, - 0x65, 0x62, 0xb5, 0x91, 0x60, 0x54, 0x1b, 0x04, 0x8c, 0xa9, 0xcd, 0x45, 0xcb, 0xc4, 0x6a, 0xc3, - 0xcd, 0xb1, 0xda, 0x28, 0x40, 0xc7, 0x46, 0x4b, 0x96, 0x89, 0xd5, 0x46, 0x06, 0x6a, 0x8c, 0x4c, - 0x6d, 0x96, 0x2d, 0x13, 0xab, 0x0d, 0x37, 0xef, 0x27, 0x19, 0x99, 0xda, 0x5c, 0xb2, 0x4c, 0xac, - 0x36, 0x32, 0x90, 0xaa, 0x8d, 0x00, 0x72, 0x59, 0xb8, 0x6c, 0x99, 0x58, 0x6d, 0xb8, 0x5d, 0x52, - 0x1b, 0x15, 0xea, 0xd8, 0xe8, 0xff, 0x2c, 0x13, 0xab, 0x8d, 0x02, 0xa5, 0x6a, 0x13, 0xbb, 0xe7, - 0xb4, 0x57, 0x2c, 0x13, 0xab, 0x8d, 0x08, 0x40, 0x52, 0x1b, 0x0d, 0xec, 0xd8, 0xa8, 0x64, 0x99, - 0x58, 0x6d, 0x54, 0x30, 0x55, 0x9b, 0x38, 0x08, 0xa2, 0x36, 0x57, 0x2d, 0x13, 0xab, 0x8d, 0x08, - 0x81, 0xab, 0x8d, 0x80, 0x31, 0xb5, 0xb9, 0x66, 0x99, 0x58, 0x6d, 0xb8, 0x39, 0x56, 0x1b, 0x01, - 0x24, 0x6a, 0x73, 0xdd, 0x32, 0xb1, 0xda, 0x70, 0x23, 0x57, 0x9b, 0x38, 0x42, 0xaa, 0x36, 0x6f, - 0x5a, 0x26, 0x56, 0x1b, 0x11, 0x9f, 0x50, 0x9b, 0x98, 0x8d, 0xa8, 0xcd, 0x5b, 0x96, 0x89, 0xd5, - 0x46, 0xd0, 0x71, 0xb5, 0x11, 0x30, 0x4d, 0x6d, 0x56, 0x2d, 0xf3, 0xb5, 0xd4, 0x86, 0xf3, 0x24, - 0xd4, 0x26, 0xce, 0x92, 0xa6, 0x36, 0x6b, 0xc4, 0x43, 0x7f, 0xb5, 0x11, 0xc9, 0x4c, 0xa8, 0x8d, - 0x1e, 0x37, 0x11, 0x85, 0x0d, 0xcb, 0x1c, 0x5c, 0x6d, 0xd4, 0x88, 0xb9, 0xda, 0x24, 0xc2, 0x25, + 0x77, 0x70, 0xd2, 0xf5, 0x23, 0x34, 0x85, 0xdb, 0x38, 0x8e, 0xae, 0x8c, 0x8d, 0xb0, 0x06, 0x16, + 0x04, 0xac, 0x4d, 0x6f, 0xef, 0x96, 0x1f, 0x45, 0xde, 0xb1, 0x8f, 0xa0, 0x65, 0x94, 0xf2, 0x6b, + 0x57, 0x94, 0x1b, 0x5b, 0x6e, 0xd1, 0x95, 0x1d, 0x82, 0x7f, 0x42, 0xe1, 0xee, 0x1c, 0xe7, 0x51, + 0xcc, 0x70, 0x1f, 0xa0, 0x38, 0x4b, 0x41, 0xe8, 0x37, 0x8e, 0xdb, 0xc2, 0xc3, 0x0c, 0xf1, 0x70, + 0x4e, 0xf1, 0x50, 0xa5, 0x18, 0xce, 0x3a, 0x2f, 0x92, 0xa9, 0xd8, 0xe1, 0x7b, 0x60, 0x56, 0x8f, + 0xdb, 0x6f, 0xf7, 0x5a, 0x68, 0x8e, 0xa8, 0xd1, 0xa5, 0xd3, 0x82, 0xae, 0xb4, 0x7b, 0x2d, 0x17, + 0xaa, 0x11, 0x63, 0x1b, 0x7c, 0x17, 0xcc, 0x25, 0xc2, 0x25, 0xc4, 0xf3, 0x84, 0x18, 0xa5, 0xc5, + 0x4a, 0xc8, 0x66, 0xb4, 0x40, 0x09, 0x9b, 0x23, 0xb1, 0xd1, 0x6a, 0xd5, 0x3a, 0x0d, 0xbf, 0xee, + 0x23, 0x84, 0x6b, 0x56, 0xce, 0x8d, 0xe5, 0xe2, 0x75, 0xb4, 0x6e, 0x4f, 0xf1, 0x65, 0x78, 0x45, + 0x6a, 0x85, 0x7a, 0x10, 0x1e, 0xa2, 0xb3, 0x0c, 0x6f, 0xc4, 0xed, 0xf0, 0x20, 0x08, 0x0f, 0x61, + 0x15, 0x4c, 0x87, 0x7e, 0xbd, 0x17, 0x46, 0x8d, 0x57, 0xbe, 0x48, 0xeb, 0x39, 0x92, 0xd6, 0xb3, + 0x99, 0x39, 0x70, 0x8b, 0x62, 0x0d, 0x4f, 0xe7, 0x65, 0x30, 0x19, 0xfa, 0x1d, 0xdf, 0xc3, 0x79, + 0xa4, 0x37, 0xf3, 0x05, 0xcb, 0xc4, 0x6a, 0xc3, 0xad, 0x42, 0x6d, 0x64, 0x98, 0x63, 0x23, 0xcb, + 0x32, 0xb1, 0xda, 0x48, 0x30, 0xaa, 0x0d, 0x02, 0xc6, 0xd4, 0xe6, 0xa2, 0x65, 0x62, 0xb5, 0xe1, + 0xe6, 0x58, 0x6d, 0x14, 0xa0, 0x63, 0xa3, 0x25, 0xcb, 0xc4, 0x6a, 0x23, 0x03, 0x35, 0x46, 0xa6, + 0x36, 0xcb, 0x96, 0x89, 0xd5, 0x86, 0x9b, 0xf7, 0x92, 0x8c, 0x4c, 0x6d, 0x2e, 0x59, 0x26, 0x56, + 0x1b, 0x19, 0x48, 0xd5, 0x46, 0x00, 0xb9, 0x2c, 0x5c, 0xb6, 0x4c, 0xac, 0x36, 0xdc, 0x2e, 0xa9, + 0x8d, 0x0a, 0x75, 0x6c, 0xf4, 0x7f, 0x96, 0x89, 0xd5, 0x46, 0x81, 0x52, 0xb5, 0x89, 0xdd, 0x73, + 0xda, 0x2b, 0x96, 0x89, 0xd5, 0x46, 0x04, 0x20, 0xa9, 0x8d, 0x06, 0x76, 0x6c, 0x54, 0xb2, 0x4c, + 0xac, 0x36, 0x2a, 0x98, 0xaa, 0x4d, 0x1c, 0x04, 0x51, 0x9b, 0xab, 0x96, 0x89, 0xd5, 0x46, 0x84, + 0xc0, 0xd5, 0x46, 0xc0, 0x98, 0xda, 0x5c, 0xb3, 0x4c, 0xac, 0x36, 0xdc, 0x1c, 0xab, 0x8d, 0x00, + 0x12, 0xb5, 0xb9, 0x6e, 0x99, 0x58, 0x6d, 0xb8, 0x91, 0xab, 0x4d, 0x1c, 0x21, 0x55, 0x9b, 0x37, + 0x2d, 0x13, 0xab, 0x8d, 0x88, 0x4f, 0xa8, 0x4d, 0xcc, 0x46, 0xd4, 0xe6, 0x2d, 0xcb, 0xc4, 0x6a, + 0x23, 0xe8, 0xb8, 0xda, 0x08, 0x98, 0xa6, 0x36, 0x37, 0x2d, 0xf3, 0xb5, 0xd4, 0x86, 0xf3, 0x24, + 0xd4, 0x26, 0xce, 0x92, 0xa6, 0x36, 0xab, 0xc4, 0x43, 0x7f, 0xb5, 0x11, 0xc9, 0x4c, 0xa8, 0x8d, + 0x1e, 0x37, 0x11, 0x85, 0x75, 0xcb, 0x1c, 0x5c, 0x6d, 0xd4, 0x88, 0xb9, 0xda, 0x24, 0xc2, 0x25, 0xc4, 0x36, 0x21, 0xee, 0xa3, 0x36, 0x5a, 0xa0, 0x5c, 0x6d, 0xb4, 0x6a, 0x31, 0xb5, 0x71, 0x70, - 0xcd, 0xa8, 0xda, 0xa8, 0x75, 0x13, 0x6a, 0x23, 0xd6, 0x11, 0xb5, 0xb9, 0xc5, 0xf0, 0x46, 0xdc, - 0x0e, 0x44, 0x6d, 0x9e, 0x82, 0xa9, 0x96, 0xd7, 0xa1, 0x02, 0xc1, 0x64, 0x62, 0x93, 0x24, 0xf5, - 0xcd, 0xec, 0x0c, 0x3c, 0xf6, 0x3a, 0x44, 0x3b, 0xc8, 0x47, 0xa5, 0xdd, 0x0d, 0x4f, 0xdc, 0x89, - 0x96, 0x6c, 0x93, 0x58, 0x1d, 0x9b, 0xa9, 0xca, 0xed, 0xc1, 0x58, 0x1d, 0x9b, 0x7c, 0x28, 0xac, - 0xcc, 0x06, 0x9f, 0x83, 0x69, 0xcc, 0x4a, 0xe5, 0x87, 0xab, 0xd0, 0x1d, 0xc2, 0xbb, 0xd2, 0x97, + 0xcd, 0xa8, 0xda, 0xa8, 0x75, 0x13, 0x6a, 0x23, 0xd6, 0x11, 0xb5, 0xb9, 0xcd, 0xf0, 0x46, 0xdc, + 0x0e, 0x44, 0x6d, 0x9e, 0x81, 0xa9, 0x96, 0xd7, 0xa1, 0x02, 0xc1, 0x64, 0x62, 0x83, 0x24, 0xf5, + 0xcd, 0xec, 0x0c, 0x3c, 0xf1, 0x3a, 0x44, 0x3b, 0xc8, 0x47, 0xa5, 0xdd, 0x0d, 0x4f, 0xdc, 0x89, + 0x96, 0x6c, 0x93, 0x58, 0x1d, 0x9b, 0xa9, 0xca, 0x9d, 0xc1, 0x58, 0x1d, 0x9b, 0x7c, 0x28, 0xac, + 0xcc, 0x06, 0x5f, 0x80, 0x69, 0xcc, 0x4a, 0xe5, 0x87, 0xab, 0xd0, 0x5d, 0xc2, 0xbb, 0xd2, 0x97, 0x97, 0x4a, 0x13, 0xfd, 0xa4, 0xcc, 0x38, 0x3c, 0xd9, 0x2a, 0x73, 0x3b, 0x36, 0x17, 0xae, 0xb7, 0x07, 0xe4, 0x76, 0x6c, 0xfa, 0xa9, 0x72, 0x73, 0x2b, 0xe7, 0xa6, 0x22, 0xc7, 0xb5, 0xee, 0xff, - 0x07, 0xe0, 0xa6, 0x02, 0xb8, 0xaf, 0xc5, 0x2d, 0x5b, 0x65, 0x6e, 0xc7, 0xe6, 0xf2, 0xf8, 0xce, - 0x80, 0xdc, 0x8e, 0xbd, 0xaf, 0xc5, 0x2d, 0x5b, 0xe1, 0xc7, 0xc1, 0x0c, 0xe6, 0x66, 0xda, 0x26, - 0x24, 0xf5, 0x2e, 0x61, 0x5f, 0xed, 0xcb, 0xce, 0x74, 0x96, 0xfd, 0xa0, 0xfc, 0x38, 0x50, 0xd5, - 0xae, 0x78, 0x70, 0x6c, 0xa1, 0xc4, 0x1f, 0x19, 0xd4, 0x83, 0x63, 0xb3, 0x1f, 0x9a, 0x07, 0x61, - 0x87, 0x47, 0x60, 0x8e, 0xe4, 0x87, 0x6f, 0x42, 0x28, 0xf8, 0x3d, 0xe2, 0x63, 0xbd, 0x7f, 0x8e, - 0x18, 0x98, 0xff, 0xa4, 0x5e, 0x70, 0xc8, 0xfa, 0x15, 0xd5, 0x0f, 0xae, 0x04, 0xdf, 0xcb, 0xd6, - 0xc0, 0x7e, 0x1c, 0x9b, 0xff, 0xd4, 0xfd, 0xc4, 0x57, 0xd4, 0xfb, 0x95, 0x1e, 0x1a, 0xe5, 0x41, - 0xef, 0x57, 0x72, 0x9c, 0x68, 0xf7, 0x2b, 0x3d, 0x62, 0x9e, 0x81, 0x62, 0xcc, 0xca, 0xce, 0x98, - 0xfb, 0x84, 0xf6, 0xad, 0xd3, 0x69, 0xe9, 0xe9, 0x43, 0x79, 0x27, 0x5b, 0x8a, 0x11, 0xee, 0x02, - 0xec, 0x89, 0x9c, 0x46, 0xf4, 0x48, 0x7a, 0x40, 0x58, 0xaf, 0xf5, 0x65, 0xc5, 0xe7, 0x14, 0xfe, - 0x9f, 0x52, 0xe6, 0x5b, 0xb1, 0x45, 0xb4, 0x3b, 0x95, 0x42, 0x76, 0x7e, 0x55, 0x06, 0x69, 0x77, - 0x02, 0xa5, 0x9f, 0x52, 0xbb, 0x4b, 0x56, 0x9e, 0x04, 0xc6, 0x4d, 0x8f, 0xbc, 0xea, 0x00, 0x49, - 0xa0, 0xcb, 0xc9, 0x69, 0x18, 0x27, 0x41, 0x32, 0xc2, 0x0e, 0x38, 0x2b, 0x11, 0x6b, 0x87, 0xe4, - 0x43, 0xe2, 0xe1, 0xe6, 0x00, 0x1e, 0x94, 0x63, 0x91, 0x7a, 0x9a, 0x6f, 0xa5, 0x5e, 0x84, 0x11, - 0x58, 0x94, 0x3c, 0xea, 0xa7, 0xe6, 0x36, 0x71, 0xe9, 0x0c, 0xe0, 0x52, 0x3d, 0x33, 0xa9, 0xcf, - 0x85, 0x56, 0xfa, 0x55, 0x78, 0x0c, 0xe6, 0x93, 0xdb, 0x24, 0x47, 0xdf, 0xce, 0x20, 0xf7, 0x80, - 0xb4, 0x0d, 0x7c, 0xf4, 0x49, 0xf7, 0x80, 0x76, 0x05, 0xbe, 0x0f, 0x16, 0x52, 0x76, 0x47, 0x3c, - 0x3d, 0x22, 0x9e, 0x36, 0x06, 0xdf, 0x5a, 0xec, 0x6a, 0xb6, 0x95, 0x72, 0x09, 0x2e, 0x83, 0x42, - 0xd0, 0xf6, 0x83, 0x23, 0x7e, 0xdc, 0x04, 0xf8, 0x11, 0x7b, 0x7b, 0xc8, 0xcd, 0x13, 0x2b, 0x3b, - 0x3c, 0x3e, 0x06, 0x66, 0x29, 0x48, 0xab, 0x6d, 0xe7, 0xb5, 0x1e, 0xb7, 0xb6, 0x87, 0x5c, 0x48, - 0x68, 0xd4, 0x5a, 0x8a, 0x08, 0x58, 0xb7, 0x7f, 0xc0, 0x27, 0x12, 0xc4, 0xca, 0x7a, 0xf7, 0x22, - 0xa0, 0x5f, 0x59, 0xdb, 0x86, 0x6c, 0xbc, 0x01, 0x88, 0x91, 0x76, 0xe1, 0x05, 0x00, 0x18, 0x04, - 0xdf, 0x87, 0x11, 0x7e, 0x10, 0xdd, 0x1e, 0x72, 0xc7, 0x29, 0x02, 0xdf, 0x5b, 0xca, 0x56, 0x1d, - 0x1b, 0x75, 0x2d, 0xa3, 0x34, 0xac, 0x6c, 0xd5, 0xb1, 0x63, 0x47, 0x54, 0x7b, 0x7a, 0xf8, 0xf1, - 0x58, 0x38, 0xa2, 0x62, 0x22, 0x78, 0x98, 0x90, 0xbc, 0xc2, 0x8f, 0xc6, 0x82, 0x87, 0x09, 0x43, - 0x85, 0x47, 0x43, 0xca, 0xf6, 0xe1, 0xe0, 0x8f, 0x78, 0x22, 0x66, 0x52, 0x9e, 0x3d, 0xe9, 0x69, - 0x8c, 0x88, 0x0c, 0x9b, 0xa6, 0xa1, 0x5f, 0x19, 0x24, 0xf7, 0x8b, 0x2b, 0x74, 0xdc, 0xb6, 0xc2, - 0xe7, 0x3c, 0x2b, 0x78, 0xab, 0xef, 0x79, 0xcd, 0x9e, 0x1f, 0x3f, 0xa6, 0x61, 0xd3, 0x33, 0xba, - 0x0e, 0xba, 0x60, 0x5e, 0x9d, 0xd1, 0x08, 0xc6, 0x5f, 0x1b, 0xec, 0xd1, 0x56, 0x67, 0x24, 0x7a, - 0x47, 0x29, 0x67, 0x95, 0x49, 0x4e, 0x06, 0xa7, 0x63, 0x0b, 0xce, 0xdf, 0xf4, 0xe1, 0x74, 0xec, - 0x24, 0xa7, 0x63, 0x73, 0xce, 0x03, 0xe9, 0x21, 0xbf, 0xa7, 0x06, 0xfa, 0x5b, 0x4a, 0x7a, 0x3e, - 0x41, 0x7a, 0x20, 0x45, 0x3a, 0xa7, 0x0e, 0x89, 0xb2, 0x68, 0xa5, 0x58, 0x7f, 0xd7, 0x8f, 0x96, - 0x07, 0x3b, 0xa7, 0x8e, 0x94, 0xd2, 0x32, 0x40, 0x1a, 0x47, 0xb0, 0xfe, 0x3e, 0x2b, 0x03, 0xa4, - 0x97, 0xb4, 0x0c, 0x10, 0x5b, 0x5a, 0xa8, 0xb4, 0xd3, 0x04, 0xe9, 0x1f, 0xb2, 0x42, 0xa5, 0xcd, - 0xa7, 0x85, 0x4a, 0x8d, 0x69, 0xb4, 0x4c, 0x61, 0x38, 0xed, 0x1f, 0xb3, 0x68, 0xe9, 0x4d, 0xa8, - 0xd1, 0x52, 0x63, 0x5a, 0x06, 0xc8, 0x3d, 0x2a, 0x58, 0xff, 0x94, 0x95, 0x01, 0x72, 0xdb, 0x6a, - 0x19, 0x20, 0x36, 0xce, 0xb9, 0x27, 0x3d, 0x1c, 0x28, 0xcd, 0xff, 0x67, 0x83, 0xc8, 0x60, 0xdf, - 0xe6, 0x97, 0x1f, 0x0a, 0xa5, 0x20, 0xd5, 0x91, 0x81, 0x60, 0xfc, 0x8b, 0xc1, 0x9e, 0xb4, 0xfa, - 0x35, 0xbf, 0x32, 0x58, 0xc8, 0xe0, 0x94, 0x1a, 0xea, 0xaf, 0x7d, 0x38, 0x45, 0xf3, 0x2b, 0x53, - 0x08, 0xa9, 0x46, 0xda, 0x30, 0x42, 0x90, 0xfe, 0x8d, 0x92, 0x9e, 0xd2, 0xfc, 0xea, 0xcc, 0x22, - 0x8b, 0x56, 0x8a, 0xf5, 0xef, 0xfd, 0x68, 0x45, 0xf3, 0xab, 0x13, 0x8e, 0xb4, 0x0c, 0xa8, 0xcd, - 0xff, 0x8f, 0xac, 0x0c, 0xc8, 0xcd, 0xaf, 0x0c, 0x03, 0xd2, 0x42, 0xd5, 0x9a, 0xff, 0x9f, 0x59, - 0xa1, 0x2a, 0xcd, 0xaf, 0x8e, 0x0e, 0xd2, 0x68, 0xb5, 0xe6, 0xff, 0x57, 0x16, 0xad, 0xd2, 0xfc, - 0xea, 0xb3, 0x68, 0x5a, 0x06, 0xd4, 0xe6, 0xff, 0x77, 0x56, 0x06, 0xe4, 0xe6, 0x57, 0x06, 0x0e, - 0x9c, 0xf3, 0xa1, 0x34, 0xd7, 0xe5, 0xef, 0x70, 0xd0, 0x77, 0x73, 0x6c, 0x4e, 0x96, 0xd8, 0x3b, - 0x43, 0xc4, 0x33, 0x5f, 0x6e, 0x81, 0x8f, 0x80, 0x18, 0x1a, 0xd6, 0xc4, 0xcb, 0x1a, 0xf4, 0xbd, - 0x5c, 0xc6, 0xf9, 0xf1, 0x94, 0x43, 0x5c, 0xe1, 0x5f, 0x98, 0xe0, 0x47, 0xc1, 0x8c, 0x34, 0xc4, - 0xe6, 0x2f, 0x8e, 0xd0, 0xf7, 0xb3, 0xc8, 0xaa, 0x18, 0xf3, 0xd8, 0x8b, 0x5e, 0xc6, 0x64, 0xc2, - 0x04, 0xb7, 0xd4, 0xb9, 0x70, 0xaf, 0xde, 0x45, 0x3f, 0xa0, 0x44, 0x0b, 0x69, 0x45, 0xe8, 0xd5, - 0xbb, 0xca, 0xc4, 0xb8, 0x57, 0xef, 0xc2, 0x4d, 0x20, 0x66, 0x8b, 0x35, 0xaf, 0x7d, 0x82, 0x7e, - 0x48, 0xd7, 0xcf, 0x26, 0xd6, 0x6f, 0xb5, 0x4f, 0xdc, 0x3c, 0x87, 0x6e, 0xb5, 0x4f, 0xe0, 0x5d, - 0x69, 0xd6, 0xfc, 0x0a, 0x97, 0x01, 0xfd, 0x88, 0xae, 0x9d, 0x4f, 0xac, 0xa5, 0x55, 0x12, 0xd3, - 0x4d, 0xf2, 0x15, 0x97, 0x27, 0x6e, 0x50, 0x5e, 0x9e, 0x1f, 0xe7, 0x48, 0xb5, 0xfb, 0x95, 0x47, - 0xf4, 0xa5, 0x54, 0x1e, 0x41, 0x14, 0x97, 0xe7, 0x27, 0xb9, 0x0c, 0x85, 0x93, 0xca, 0xc3, 0x97, - 0xc5, 0xe5, 0x91, 0xb9, 0x48, 0x79, 0x48, 0x75, 0x7e, 0x9a, 0xc5, 0x25, 0x55, 0x27, 0x1e, 0x0a, - 0xb2, 0x55, 0xb8, 0x3a, 0xf2, 0xad, 0x82, 0xab, 0xf3, 0x4b, 0x4a, 0x94, 0x5d, 0x1d, 0xe9, 0xee, - 0x60, 0xd5, 0x11, 0x14, 0xb8, 0x3a, 0x3f, 0xa3, 0xeb, 0x33, 0xaa, 0xc3, 0xa1, 0xac, 0x3a, 0x62, - 0x25, 0xad, 0xce, 0xcf, 0xe9, 0xda, 0xcc, 0xea, 0x70, 0x38, 0xad, 0xce, 0x05, 0x00, 0xc8, 0xfe, - 0xdb, 0x5e, 0xcb, 0x5f, 0x43, 0x9f, 0x36, 0xc9, 0x6b, 0x28, 0xc9, 0x04, 0x2d, 0x90, 0xa7, 0xfd, - 0x8b, 0xbf, 0xae, 0xa3, 0xcf, 0xc8, 0x88, 0x5d, 0x6c, 0x82, 0x17, 0x41, 0xa1, 0x16, 0x43, 0x36, - 0xd0, 0x67, 0x19, 0xa4, 0xca, 0x21, 0x1b, 0x70, 0x09, 0x4c, 0x50, 0x04, 0x81, 0xd8, 0x35, 0xf4, - 0x39, 0x9d, 0x86, 0xfc, 0x3d, 0x49, 0xbe, 0xad, 0x62, 0xc8, 0x4d, 0xf4, 0x79, 0x8a, 0x90, 0x6d, - 0x70, 0x99, 0xd3, 0xac, 0x12, 0x1e, 0x07, 0x7d, 0x41, 0x01, 0x61, 0x1e, 0x47, 0xec, 0x08, 0x7f, - 0xbb, 0x85, 0xbe, 0xa8, 0x3b, 0xba, 0x85, 0x01, 0x22, 0xb4, 0x4d, 0xf4, 0x25, 0x3d, 0xda, 0xcd, - 0x78, 0xcb, 0xf8, 0xeb, 0x6d, 0xf4, 0x65, 0x9d, 0xe2, 0x36, 0x5c, 0x02, 0x85, 0xaa, 0x40, 0xac, - 0xad, 0xa2, 0xaf, 0xb0, 0x38, 0x04, 0xc9, 0xda, 0x2a, 0xc1, 0xec, 0x54, 0xde, 0x7d, 0x50, 0xdb, - 0xdd, 0x7a, 0x5c, 0x59, 0x5b, 0x43, 0x5f, 0xe5, 0x18, 0x6c, 0xa4, 0xb6, 0x18, 0x43, 0x72, 0xbd, - 0x8e, 0xbe, 0xa6, 0x60, 0x88, 0x0d, 0x5e, 0x02, 0x93, 0x35, 0x29, 0xbf, 0x6b, 0x1b, 0xe8, 0xeb, - 0x09, 0x6f, 0x1b, 0x14, 0x55, 0x8d, 0x51, 0x36, 0xfa, 0x46, 0x02, 0x65, 0xc7, 0x09, 0xa4, 0xa0, - 0x9b, 0xe8, 0x9b, 0x72, 0x02, 0x09, 0x48, 0xca, 0x32, 0xdd, 0x9d, 0x83, 0xbe, 0x95, 0x00, 0x39, - 0xd8, 0x9f, 0x14, 0xd3, 0xad, 0x5a, 0x0d, 0x7d, 0x3b, 0x81, 0xba, 0x85, 0x51, 0x52, 0x4c, 0x9b, - 0xb5, 0x1a, 0xfa, 0x4e, 0x22, 0xaa, 0xcd, 0xc5, 0xe7, 0x60, 0x42, 0x7d, 0xd0, 0x29, 0x00, 0xc3, - 0x63, 0x6f, 0x44, 0x0d, 0x0f, 0xbe, 0x0d, 0xf2, 0xf5, 0x40, 0xbc, 0xd4, 0x40, 0xb9, 0xd3, 0x5e, - 0x80, 0xc8, 0xe8, 0xc5, 0x7b, 0x00, 0x26, 0x87, 0x94, 0xb0, 0x08, 0xcc, 0x97, 0xfe, 0x09, 0x73, - 0x81, 0x7f, 0x85, 0xb3, 0xe0, 0x0c, 0xbd, 0x7d, 0x72, 0xc4, 0x46, 0xbf, 0xdc, 0xc9, 0x6d, 0x1a, - 0x31, 0x83, 0x3c, 0x90, 0x94, 0x19, 0xcc, 0x14, 0x06, 0x53, 0x66, 0x28, 0x83, 0xd9, 0xb4, 0xd1, - 0xa3, 0xcc, 0x31, 0x91, 0xc2, 0x31, 0x91, 0xce, 0xa1, 0x8c, 0x18, 0x65, 0x8e, 0xe1, 0x14, 0x8e, - 0xe1, 0x24, 0x47, 0x62, 0x94, 0x28, 0x73, 0x4c, 0xa7, 0x70, 0x4c, 0xa7, 0x73, 0x28, 0x23, 0x43, - 0x99, 0x03, 0xa6, 0x70, 0x40, 0x99, 0xe3, 0x01, 0x98, 0x4f, 0x1f, 0x0c, 0xca, 0x2c, 0xa3, 0x29, - 0x2c, 0xa3, 0x19, 0x2c, 0xea, 0xf0, 0x4f, 0x66, 0x19, 0x49, 0x61, 0x19, 0x91, 0x59, 0xaa, 0x00, - 0x65, 0x8d, 0xf7, 0x64, 0x9e, 0xa9, 0x14, 0x9e, 0xa9, 0x2c, 0x1e, 0x6d, 0x7c, 0x27, 0xf3, 0x14, - 0x53, 0x78, 0x8a, 0xa9, 0xdd, 0x26, 0x0f, 0xe9, 0x4e, 0xeb, 0xd7, 0x9c, 0xcc, 0xb0, 0x05, 0x66, - 0x52, 0xe6, 0x71, 0xa7, 0x51, 0x18, 0x32, 0xc5, 0x5d, 0x50, 0xd4, 0x87, 0x6f, 0xf2, 0xfa, 0xb1, - 0x94, 0xf5, 0x63, 0x29, 0x4d, 0xa2, 0x0f, 0xda, 0x64, 0x8e, 0xf1, 0x14, 0x8e, 0xf1, 0xe4, 0x36, - 0xf4, 0x89, 0xda, 0x69, 0x14, 0x05, 0x99, 0x22, 0x04, 0xe7, 0xfa, 0x8c, 0xcc, 0x52, 0xa8, 0xde, - 0x91, 0xa9, 0x5e, 0xe3, 0x7d, 0x95, 0xe4, 0xf3, 0x18, 0x9c, 0xef, 0x37, 0x33, 0x4b, 0x71, 0xba, - 0xa6, 0x3a, 0xed, 0xfb, 0x0a, 0x4b, 0x72, 0xd4, 0xa4, 0x0d, 0x97, 0x36, 0x2b, 0x4b, 0x71, 0x72, - 0x47, 0x76, 0x32, 0xe8, 0x4b, 0x2d, 0xc9, 0x9b, 0x07, 0xce, 0x66, 0xce, 0xcb, 0x52, 0xdc, 0xad, - 0xa8, 0xee, 0xb2, 0x5f, 0x75, 0xc5, 0x2e, 0x96, 0x6e, 0x03, 0x20, 0x4d, 0xf6, 0x46, 0x81, 0x59, - 0xdd, 0xdb, 0x2b, 0x0e, 0xe1, 0x5f, 0xca, 0x5b, 0x6e, 0xd1, 0xa0, 0xbf, 0x3c, 0x2f, 0xe6, 0xb0, - 0xbb, 0xdd, 0xca, 0xc3, 0xe2, 0x7f, 0xf9, 0x7f, 0x46, 0x79, 0x42, 0x8c, 0xa2, 0xf0, 0xa9, 0xb2, - 0xf4, 0x06, 0x98, 0xd4, 0x06, 0x92, 0x05, 0x60, 0xd4, 0xf9, 0x81, 0x52, 0xbf, 0x76, 0x13, 0x80, - 0xf8, 0xdf, 0x30, 0xc1, 0x29, 0x90, 0x3f, 0xd8, 0xdd, 0x7f, 0x52, 0xb9, 0xbf, 0x53, 0xdd, 0xa9, - 0x3c, 0x28, 0x0e, 0xc1, 0x02, 0x18, 0x7b, 0xe2, 0xee, 0x3d, 0xdd, 0x2b, 0x1f, 0x54, 0x8b, 0x06, - 0x1c, 0x03, 0xc3, 0x8f, 0xf6, 0xf7, 0x76, 0x8b, 0xb9, 0x6b, 0xf7, 0x40, 0x5e, 0x9e, 0x07, 0x4e, - 0x81, 0x7c, 0x75, 0xcf, 0xad, 0xec, 0x3c, 0xdc, 0xad, 0xd1, 0x48, 0x25, 0x03, 0x8d, 0x58, 0x31, - 0x3c, 0x2f, 0xe6, 0xca, 0x17, 0xc1, 0x85, 0x7a, 0xd0, 0x4a, 0xfc, 0x61, 0x26, 0x25, 0xe7, 0xc5, - 0x08, 0xb1, 0x6e, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xc2, 0x0c, 0xb6, 0xeb, 0x26, 0x00, - 0x00, + 0x07, 0xe0, 0xa6, 0x02, 0xb8, 0xa7, 0xc5, 0x2d, 0x5b, 0x65, 0x6e, 0xc7, 0xe6, 0xf2, 0xf8, 0xce, + 0x80, 0xdc, 0x8e, 0xbd, 0xa7, 0xc5, 0x2d, 0x5b, 0xe1, 0xc7, 0xc1, 0x0c, 0xe6, 0x66, 0xda, 0x26, + 0x24, 0xf5, 0x1e, 0x61, 0xbf, 0xd9, 0x97, 0x9d, 0xe9, 0x2c, 0xfb, 0x41, 0xf9, 0x71, 0xa0, 0xaa, + 0x5d, 0xf1, 0xe0, 0xd8, 0x42, 0x89, 0x3f, 0x32, 0xa8, 0x07, 0xc7, 0x66, 0x3f, 0x34, 0x0f, 0xc2, + 0x0e, 0x8f, 0xc0, 0x1c, 0xc9, 0x0f, 0xdf, 0x84, 0x50, 0xf0, 0xfb, 0xc4, 0xc7, 0x5a, 0xff, 0x1c, + 0x31, 0x30, 0xff, 0x49, 0xbd, 0xe0, 0x90, 0xf5, 0x2b, 0xaa, 0x1f, 0x5c, 0x09, 0xbe, 0x97, 0xcd, + 0x81, 0xfd, 0x38, 0x36, 0xff, 0xa9, 0xfb, 0x89, 0xaf, 0xa8, 0xf7, 0x2b, 0x3d, 0x34, 0xca, 0x83, + 0xde, 0xaf, 0xe4, 0x38, 0xd1, 0xee, 0x57, 0x7a, 0xc4, 0x3c, 0x07, 0xc5, 0x98, 0x95, 0x9d, 0x31, + 0x0f, 0x08, 0xed, 0x5b, 0xa7, 0xd3, 0xd2, 0xd3, 0x87, 0xf2, 0x4e, 0xb6, 0x14, 0x23, 0xdc, 0x01, + 0xd8, 0x13, 0x39, 0x8d, 0xe8, 0x91, 0xf4, 0x90, 0xb0, 0x5e, 0xeb, 0xcb, 0x8a, 0xcf, 0x29, 0xfc, + 0x3f, 0xa5, 0xcc, 0xb7, 0x62, 0x8b, 0x68, 0x77, 0x2a, 0x85, 0xec, 0xfc, 0xaa, 0x0c, 0xd2, 0xee, + 0x04, 0x4a, 0x3f, 0xa5, 0x76, 0x97, 0xac, 0x3c, 0x09, 0x8c, 0x9b, 0x1e, 0x79, 0xd5, 0x01, 0x92, + 0x40, 0x97, 0x93, 0xd3, 0x30, 0x4e, 0x82, 0x64, 0x84, 0x1d, 0x70, 0x56, 0x22, 0xd6, 0x0e, 0xc9, + 0x47, 0xc4, 0xc3, 0xad, 0x01, 0x3c, 0x28, 0xc7, 0x22, 0xf5, 0x34, 0xdf, 0x4a, 0xbd, 0x08, 0x23, + 0xb0, 0x28, 0x79, 0xd4, 0x4f, 0xcd, 0x2d, 0xe2, 0xd2, 0x19, 0xc0, 0xa5, 0x7a, 0x66, 0x52, 0x9f, + 0x0b, 0xad, 0xf4, 0xab, 0xf0, 0x18, 0xcc, 0x27, 0xb7, 0x49, 0x8e, 0xbe, 0xed, 0x41, 0xee, 0x01, + 0x69, 0x1b, 0xf8, 0xe8, 0x93, 0xee, 0x01, 0xed, 0x0a, 0x7c, 0x1f, 0x2c, 0xa4, 0xec, 0x8e, 0x78, + 0x7a, 0x4c, 0x3c, 0xad, 0x0f, 0xbe, 0xb5, 0xd8, 0xd5, 0x6c, 0x2b, 0xe5, 0x12, 0x5c, 0x06, 0x85, + 0xa0, 0xed, 0x07, 0x47, 0xfc, 0xb8, 0x09, 0xf0, 0x23, 0xf6, 0xd6, 0x90, 0x9b, 0x27, 0x56, 0x76, + 0x78, 0x7c, 0x0c, 0xcc, 0x52, 0x90, 0x56, 0xdb, 0xce, 0x6b, 0x3d, 0x6e, 0x6d, 0x0d, 0xb9, 0x90, + 0xd0, 0xa8, 0xb5, 0x14, 0x11, 0xb0, 0x6e, 0xff, 0x80, 0x4f, 0x24, 0x88, 0x95, 0xf5, 0xee, 0x45, + 0x40, 0xbf, 0xb2, 0xb6, 0x0d, 0xd9, 0x78, 0x03, 0x10, 0x23, 0xed, 0xc2, 0x0b, 0x00, 0x30, 0x08, + 0xbe, 0x0f, 0x23, 0xfc, 0x20, 0xba, 0x35, 0xe4, 0x8e, 0x53, 0x04, 0xbe, 0xb7, 0x94, 0xad, 0x3a, + 0x36, 0xea, 0x5a, 0x46, 0x69, 0x58, 0xd9, 0xaa, 0x63, 0xc7, 0x8e, 0xa8, 0xf6, 0xf4, 0xf0, 0xe3, + 0xb1, 0x70, 0x44, 0xc5, 0x44, 0xf0, 0x30, 0x21, 0x79, 0x85, 0x1f, 0x8d, 0x05, 0x0f, 0x13, 0x86, + 0x0a, 0x8f, 0x86, 0x94, 0xed, 0xc3, 0xc1, 0x1f, 0xf1, 0x44, 0xcc, 0xa4, 0x3c, 0xbb, 0xd2, 0xd3, + 0x18, 0x11, 0x19, 0x36, 0x4d, 0x43, 0xbf, 0x32, 0x48, 0xee, 0x17, 0x57, 0xe8, 0xb8, 0x6d, 0x85, + 0xcf, 0x79, 0x56, 0xf0, 0x56, 0xdf, 0xf3, 0x9a, 0x3d, 0x3f, 0x7e, 0x4c, 0xc3, 0xa6, 0xe7, 0x74, + 0x1d, 0x74, 0xc1, 0xbc, 0x3a, 0xa3, 0x11, 0x8c, 0xbf, 0x36, 0xd8, 0xa3, 0xad, 0xce, 0x48, 0xf4, + 0x8e, 0x52, 0xce, 0x2a, 0x93, 0x9c, 0x0c, 0x4e, 0xc7, 0x16, 0x9c, 0xbf, 0xe9, 0xc3, 0xe9, 0xd8, + 0x49, 0x4e, 0xc7, 0xe6, 0x9c, 0xfb, 0xd2, 0x43, 0x7e, 0x4f, 0x0d, 0xf4, 0xb7, 0x94, 0xf4, 0x7c, + 0x82, 0x74, 0x5f, 0x8a, 0x74, 0x4e, 0x1d, 0x12, 0x65, 0xd1, 0x4a, 0xb1, 0xfe, 0xae, 0x1f, 0x2d, + 0x0f, 0x76, 0x4e, 0x1d, 0x29, 0xa5, 0x65, 0x80, 0x34, 0x8e, 0x60, 0xfd, 0x7d, 0x56, 0x06, 0x48, + 0x2f, 0x69, 0x19, 0x20, 0xb6, 0xb4, 0x50, 0x69, 0xa7, 0x09, 0xd2, 0x3f, 0x64, 0x85, 0x4a, 0x9b, + 0x4f, 0x0b, 0x95, 0x1a, 0xd3, 0x68, 0x99, 0xc2, 0x70, 0xda, 0x3f, 0x66, 0xd1, 0xd2, 0x9b, 0x50, + 0xa3, 0xa5, 0xc6, 0xb4, 0x0c, 0x90, 0x7b, 0x54, 0xb0, 0xfe, 0x29, 0x2b, 0x03, 0xe4, 0xb6, 0xd5, + 0x32, 0x40, 0x6c, 0x9c, 0x73, 0x57, 0x7a, 0x38, 0x50, 0x9a, 0xff, 0xcf, 0x06, 0x91, 0xc1, 0xbe, + 0xcd, 0x2f, 0x3f, 0x14, 0x4a, 0x41, 0xaa, 0x23, 0x03, 0xc1, 0xf8, 0x17, 0x83, 0x3d, 0x69, 0xf5, + 0x6b, 0x7e, 0x65, 0xb0, 0x90, 0xc1, 0x29, 0x35, 0xd4, 0x5f, 0xfb, 0x70, 0x8a, 0xe6, 0x57, 0xa6, + 0x10, 0x52, 0x8d, 0xb4, 0x61, 0x84, 0x20, 0xfd, 0x1b, 0x25, 0x3d, 0xa5, 0xf9, 0xd5, 0x99, 0x45, + 0x16, 0xad, 0x14, 0xeb, 0xdf, 0xfb, 0xd1, 0x8a, 0xe6, 0x57, 0x27, 0x1c, 0x69, 0x19, 0x50, 0x9b, + 0xff, 0x1f, 0x59, 0x19, 0x90, 0x9b, 0x5f, 0x19, 0x06, 0xa4, 0x85, 0xaa, 0x35, 0xff, 0x3f, 0xb3, + 0x42, 0x55, 0x9a, 0x5f, 0x1d, 0x1d, 0xa4, 0xd1, 0x6a, 0xcd, 0xff, 0xaf, 0x2c, 0x5a, 0xa5, 0xf9, + 0xd5, 0x67, 0xd1, 0xb4, 0x0c, 0xa8, 0xcd, 0xff, 0xef, 0xac, 0x0c, 0xc8, 0xcd, 0xaf, 0x0c, 0x1c, + 0x38, 0xe7, 0x23, 0x69, 0xae, 0xcb, 0xdf, 0xe1, 0xa0, 0xef, 0xe6, 0xd8, 0x9c, 0x2c, 0xb1, 0x77, + 0x86, 0x88, 0x67, 0xbe, 0xdc, 0x02, 0x1f, 0x03, 0x31, 0x34, 0xac, 0x89, 0x97, 0x35, 0xe8, 0x7b, + 0xb9, 0x8c, 0xf3, 0xe3, 0x19, 0x87, 0xb8, 0xc2, 0xbf, 0x30, 0xc1, 0x8f, 0x82, 0x19, 0x69, 0x88, + 0xcd, 0x5f, 0x1c, 0xa1, 0xef, 0x67, 0x91, 0x55, 0x31, 0xe6, 0x89, 0x17, 0xbd, 0x8c, 0xc9, 0x84, + 0x09, 0x6e, 0xaa, 0x73, 0xe1, 0x5e, 0xbd, 0x8b, 0x7e, 0x40, 0x89, 0x16, 0xd2, 0x8a, 0xd0, 0xab, + 0x77, 0x95, 0x89, 0x71, 0xaf, 0xde, 0x85, 0x1b, 0x40, 0xcc, 0x16, 0x6b, 0x5e, 0xfb, 0x04, 0xfd, + 0x90, 0xae, 0x9f, 0x4d, 0xac, 0xdf, 0x6c, 0x9f, 0xb8, 0x79, 0x0e, 0xdd, 0x6c, 0x9f, 0xc0, 0x7b, + 0xd2, 0xac, 0xf9, 0x15, 0x2e, 0x03, 0xfa, 0x11, 0x5d, 0x3b, 0x9f, 0x58, 0x4b, 0xab, 0x24, 0xa6, + 0x9b, 0xe4, 0x2b, 0x2e, 0x4f, 0xdc, 0xa0, 0xbc, 0x3c, 0x3f, 0xce, 0x91, 0x6a, 0xf7, 0x2b, 0x8f, + 0xe8, 0x4b, 0xa9, 0x3c, 0x82, 0x28, 0x2e, 0xcf, 0x4f, 0x72, 0x19, 0x0a, 0x27, 0x95, 0x87, 0x2f, + 0x8b, 0xcb, 0x23, 0x73, 0x91, 0xf2, 0x90, 0xea, 0xfc, 0x34, 0x8b, 0x4b, 0xaa, 0x4e, 0x3c, 0x14, + 0x64, 0xab, 0x70, 0x75, 0xe4, 0x5b, 0x05, 0x57, 0xe7, 0x97, 0x94, 0x28, 0xbb, 0x3a, 0xd2, 0xdd, + 0xc1, 0xaa, 0x23, 0x28, 0x70, 0x75, 0x7e, 0x46, 0xd7, 0x67, 0x54, 0x87, 0x43, 0x59, 0x75, 0xc4, + 0x4a, 0x5a, 0x9d, 0x9f, 0xd3, 0xb5, 0x99, 0xd5, 0xe1, 0x70, 0x5a, 0x9d, 0x0b, 0x00, 0x90, 0xfd, + 0xb7, 0xbd, 0x96, 0xbf, 0x8a, 0x3e, 0x6d, 0x92, 0xd7, 0x50, 0x92, 0x09, 0x5a, 0x20, 0x4f, 0xfb, + 0x17, 0x7f, 0x5d, 0x43, 0x9f, 0x91, 0x11, 0x3b, 0xd8, 0x04, 0x2f, 0x82, 0x42, 0x2d, 0x86, 0xac, + 0xa3, 0xcf, 0xea, 0x90, 0x75, 0xb8, 0x04, 0x26, 0x28, 0x82, 0x40, 0xec, 0x1a, 0xfa, 0x9c, 0x8e, + 0x21, 0x7f, 0x4f, 0x92, 0x6f, 0x37, 0x31, 0xe4, 0x16, 0xfa, 0x3c, 0x45, 0xc8, 0x36, 0xb8, 0xcc, + 0x69, 0x6e, 0x12, 0x1e, 0x07, 0x7d, 0x41, 0x01, 0x61, 0x1e, 0x47, 0xec, 0x08, 0x7f, 0xbb, 0x8d, + 0xbe, 0xa8, 0x3b, 0xba, 0x8d, 0x01, 0x55, 0xfe, 0x6d, 0x03, 0x7d, 0x49, 0x07, 0x6c, 0xc4, 0x5b, + 0xc6, 0x5f, 0xef, 0xa0, 0x2f, 0xeb, 0x88, 0x3b, 0x70, 0x09, 0x14, 0xaa, 0x02, 0xb1, 0x7a, 0x13, + 0x7d, 0x45, 0x8e, 0x83, 0xda, 0x08, 0x66, 0xbb, 0xf2, 0xee, 0xc3, 0xda, 0xce, 0xe6, 0x93, 0xca, + 0xea, 0x2a, 0xfa, 0x2a, 0xc7, 0x60, 0x23, 0xb5, 0xc5, 0x18, 0x92, 0xeb, 0x35, 0xf4, 0x35, 0x05, + 0x43, 0x6c, 0xf0, 0x12, 0x98, 0xac, 0x49, 0xf9, 0x5d, 0x5d, 0x47, 0x5f, 0x4f, 0x78, 0x5b, 0xa7, + 0xa8, 0x6a, 0x8c, 0xb2, 0xd1, 0x37, 0x12, 0x28, 0x3b, 0x4e, 0x20, 0x05, 0xdd, 0x42, 0xdf, 0x4c, + 0x80, 0xa4, 0x2c, 0xd3, 0xdd, 0x39, 0xe8, 0x5b, 0x09, 0x90, 0x83, 0xfd, 0x49, 0x31, 0xdd, 0xae, + 0xd5, 0xd0, 0xb7, 0x13, 0xa8, 0xdb, 0x18, 0x25, 0xc5, 0xb4, 0x51, 0xab, 0xa1, 0xef, 0x24, 0x50, + 0x1b, 0x8b, 0x2f, 0xc0, 0x84, 0xfa, 0xa0, 0x53, 0x00, 0x86, 0xc7, 0xde, 0x88, 0x1a, 0x1e, 0x7c, + 0x1b, 0xe4, 0xeb, 0x81, 0x78, 0xa9, 0x81, 0x72, 0xa7, 0xbd, 0x00, 0x91, 0xd1, 0x8b, 0xf7, 0x01, + 0x4c, 0x0e, 0x29, 0x61, 0x11, 0x98, 0x2f, 0xfd, 0x13, 0xe6, 0x02, 0xff, 0x0a, 0x67, 0xc1, 0x19, + 0x7a, 0xfb, 0xe4, 0x88, 0x8d, 0x7e, 0xb9, 0x9b, 0xdb, 0x30, 0x62, 0x06, 0x79, 0x20, 0x29, 0x33, + 0x98, 0x29, 0x0c, 0xa6, 0xcc, 0x50, 0x06, 0xb3, 0x69, 0xa3, 0x47, 0x99, 0x63, 0x22, 0x85, 0x63, + 0x22, 0x9d, 0x43, 0x19, 0x31, 0xca, 0x1c, 0xc3, 0x29, 0x1c, 0xc3, 0x49, 0x8e, 0xc4, 0x28, 0x51, + 0xe6, 0x98, 0x4e, 0xe1, 0x98, 0x4e, 0xe7, 0x50, 0x46, 0x86, 0x32, 0x07, 0x4c, 0xe1, 0x80, 0x32, + 0xc7, 0x43, 0x30, 0x9f, 0x3e, 0x18, 0x94, 0x59, 0x46, 0x53, 0x58, 0x46, 0x33, 0x58, 0xd4, 0xe1, + 0x9f, 0xcc, 0x32, 0x92, 0xc2, 0x32, 0x22, 0xb3, 0x54, 0x01, 0xca, 0x1a, 0xef, 0xc9, 0x3c, 0x53, + 0x29, 0x3c, 0x53, 0x59, 0x3c, 0xda, 0xf8, 0x4e, 0xe6, 0x29, 0xa6, 0xf0, 0x14, 0x53, 0xbb, 0x4d, + 0x1e, 0xd2, 0x9d, 0xd6, 0xaf, 0x39, 0x99, 0x61, 0x13, 0xcc, 0xa4, 0xcc, 0xe3, 0x4e, 0xa3, 0x30, + 0x64, 0x8a, 0x7b, 0xa0, 0xa8, 0x0f, 0xdf, 0xe4, 0xf5, 0x63, 0x29, 0xeb, 0xc7, 0x52, 0x9a, 0x44, + 0x1f, 0xb4, 0xc9, 0x1c, 0xe3, 0x29, 0x1c, 0xe3, 0xc9, 0x6d, 0xe8, 0x13, 0xb5, 0xd3, 0x28, 0x0a, + 0x32, 0x45, 0x08, 0xce, 0xf5, 0x19, 0x99, 0xa5, 0x50, 0xbd, 0x23, 0x53, 0xbd, 0xc6, 0xfb, 0x2a, + 0xc9, 0xe7, 0x31, 0x38, 0xdf, 0x6f, 0x66, 0x96, 0xe2, 0x74, 0x55, 0x75, 0xda, 0xf7, 0x15, 0x96, + 0xe4, 0xa8, 0x49, 0x1b, 0x2e, 0x6d, 0x56, 0x96, 0xe2, 0xe4, 0xae, 0xec, 0x64, 0xd0, 0x97, 0x5a, + 0x92, 0x37, 0x0f, 0x9c, 0xcd, 0x9c, 0x97, 0xa5, 0xb8, 0x5b, 0x51, 0xdd, 0x65, 0xbf, 0xea, 0x8a, + 0x5d, 0x2c, 0xdd, 0x01, 0x40, 0x9a, 0xec, 0x8d, 0x02, 0xb3, 0xba, 0xbb, 0x5b, 0x1c, 0xc2, 0xbf, + 0x94, 0x37, 0xdd, 0xa2, 0x41, 0x7f, 0x79, 0x51, 0xcc, 0x61, 0x77, 0x3b, 0x95, 0x47, 0xc5, 0xff, + 0xf2, 0xff, 0x8c, 0xf2, 0x84, 0x18, 0x45, 0xe1, 0x53, 0x65, 0xe9, 0x0d, 0x30, 0xa9, 0x0d, 0x24, + 0x0b, 0xc0, 0xa8, 0xf3, 0x03, 0xa5, 0x7e, 0xed, 0x16, 0x00, 0xf1, 0xbf, 0x61, 0x82, 0x53, 0x20, + 0xbf, 0xbf, 0xb3, 0xf7, 0xb4, 0xf2, 0x60, 0xbb, 0xba, 0x5d, 0x79, 0x58, 0x1c, 0x82, 0x05, 0x30, + 0xf6, 0xd4, 0xdd, 0x7d, 0xb6, 0x5b, 0xde, 0xaf, 0x16, 0x0d, 0x38, 0x06, 0x86, 0x1f, 0xef, 0xed, + 0xee, 0x14, 0x73, 0xd7, 0xee, 0x83, 0xbc, 0x3c, 0x0f, 0x9c, 0x02, 0xf9, 0xea, 0xae, 0x5b, 0xd9, + 0x7e, 0xb4, 0x53, 0xa3, 0x91, 0x4a, 0x06, 0x1a, 0xb1, 0x62, 0x78, 0x51, 0xcc, 0x95, 0x2f, 0x82, + 0x0b, 0xf5, 0xa0, 0x95, 0xf8, 0xc3, 0x4c, 0x4a, 0xce, 0xc1, 0x08, 0xb1, 0xae, 0xff, 0x2f, 0x00, + 0x00, 0xff, 0xff, 0x46, 0x1f, 0xdb, 0xdc, 0xeb, 0x26, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor.go b/vendor/github.com/golang/protobuf/descriptor/descriptor.go deleted file mode 100644 index ac7e51bfb1..0000000000 --- a/vendor/github.com/golang/protobuf/descriptor/descriptor.go +++ /dev/null @@ -1,93 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 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 descriptor provides functions for obtaining protocol buffer -// descriptors for generated Go types. -// -// These functions cannot go in package proto because they depend on the -// generated protobuf descriptor messages, which themselves depend on proto. -package descriptor - -import ( - "bytes" - "compress/gzip" - "fmt" - "io/ioutil" - - "github.com/golang/protobuf/proto" - protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -// extractFile extracts a FileDescriptorProto from a gzip'd buffer. -func extractFile(gz []byte) (*protobuf.FileDescriptorProto, error) { - r, err := gzip.NewReader(bytes.NewReader(gz)) - if err != nil { - return nil, fmt.Errorf("failed to open gzip reader: %v", err) - } - defer r.Close() - - b, err := ioutil.ReadAll(r) - if err != nil { - return nil, fmt.Errorf("failed to uncompress descriptor: %v", err) - } - - fd := new(protobuf.FileDescriptorProto) - if err := proto.Unmarshal(b, fd); err != nil { - return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err) - } - - return fd, nil -} - -// Message is a proto.Message with a method to return its descriptor. -// -// Message types generated by the protocol compiler always satisfy -// the Message interface. -type Message interface { - proto.Message - Descriptor() ([]byte, []int) -} - -// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it -// describing the given message. -func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto) { - gz, path := msg.Descriptor() - fd, err := extractFile(gz) - if err != nil { - panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err)) - } - - md = fd.MessageType[path[0]] - for _, i := range path[1:] { - md = md.NestedType[i] - } - return fd, md -} diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go b/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go deleted file mode 100644 index 27b0729cbe..0000000000 --- a/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go +++ /dev/null @@ -1,32 +0,0 @@ -package descriptor_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/descriptor" - tpb "github.com/golang/protobuf/proto/testdata" - protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -func TestMessage(t *testing.T) { - var msg *protobuf.DescriptorProto - fd, md := descriptor.ForMessage(msg) - if pkg, want := fd.GetPackage(), "google.protobuf"; pkg != want { - t.Errorf("descriptor.ForMessage(%T).GetPackage() = %q; want %q", msg, pkg, want) - } - if name, want := md.GetName(), "DescriptorProto"; name != want { - t.Fatalf("descriptor.ForMessage(%T).GetName() = %q; want %q", msg, name, want) - } -} - -func Example_Options() { - var msg *tpb.MyMessageSet - _, md := descriptor.ForMessage(msg) - if md.GetOptions().GetMessageSetWireFormat() { - fmt.Printf("%v uses option message_set_wire_format.\n", md.GetName()) - } - - // Output: - // MyMessageSet uses option message_set_wire_format. -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go index d422dcf82b..1fc8ae8d70 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go @@ -44,7 +44,6 @@ import ( "errors" "fmt" "io" - "math" "reflect" "sort" "strconv" @@ -52,8 +51,6 @@ import ( "time" "github.com/golang/protobuf/proto" - - stpb "github.com/golang/protobuf/ptypes/struct" ) // Marshaler is a configurable object for converting between @@ -75,22 +72,6 @@ type Marshaler struct { OrigName bool } -// JSONPBMarshaler is implemented by protobuf messages that customize the -// way they are marshaled to JSON. Messages that implement this should -// also implement JSONPBUnmarshaler so that the custom format can be -// parsed. -type JSONPBMarshaler interface { - MarshalJSONPB(*Marshaler) ([]byte, error) -} - -// JSONPBUnmarshaler is implemented by protobuf messages that customize -// the way they are unmarshaled from JSON. Messages that implement this -// should also implement JSONPBMarshaler so that the custom format can be -// produced. -type JSONPBUnmarshaler interface { - UnmarshalJSONPB(*Unmarshaler, []byte) error -} - // Marshal marshals a protocol buffer into JSON. func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error { writer := &errWriter{writer: out} @@ -108,12 +89,6 @@ func (m *Marshaler) MarshalToString(pb proto.Message) (string, error) { type int32Slice []int32 -var nonFinite = map[string]float64{ - `"NaN"`: math.NaN(), - `"Infinity"`: math.Inf(1), - `"-Infinity"`: math.Inf(-1), -} - // For sorting extensions ids to ensure stable output. func (s int32Slice) Len() int { return len(s) } func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] } @@ -125,31 +100,6 @@ type wkt interface { // marshalObject writes a struct to the Writer. func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error { - if jsm, ok := v.(JSONPBMarshaler); ok { - b, err := jsm.MarshalJSONPB(m) - if err != nil { - return err - } - if typeURL != "" { - // we are marshaling this object to an Any type - var js map[string]*json.RawMessage - if err = json.Unmarshal(b, &js); err != nil { - return fmt.Errorf("type %T produced invalid JSON: %v", v, err) - } - turl, err := json.Marshal(typeURL) - if err != nil { - return fmt.Errorf("failed to marshal type URL %q to JSON: %v", typeURL, err) - } - js["@type"] = (*json.RawMessage)(&turl) - if b, err = json.Marshal(js); err != nil { - return err - } - } - - out.write(string(b)) - return out.err - } - s := reflect.ValueOf(v).Elem() // Handle well-known types. @@ -176,8 +126,8 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU out.write(x) out.write(`s"`) return out.err - case "Struct", "ListValue": - // Let marshalValue handle the `Struct.fields` map or the `ListValue.values` slice. + case "Struct": + // Let marshalValue handle the `fields` map. // TODO: pass the correct Properties if needed. return m.marshalValue(out, &proto.Properties{}, s.Field(0), indent) case "Timestamp": @@ -230,7 +180,7 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU // IsNil will panic on most value kinds. switch value.Kind() { - case reflect.Chan, reflect.Func, reflect.Interface: + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: if value.IsNil() { continue } @@ -258,10 +208,6 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU if value.Len() == 0 { continue } - case reflect.Map, reflect.Ptr, reflect.Slice: - if value.IsNil() { - continue - } } } @@ -425,15 +371,10 @@ func (m *Marshaler) marshalField(out *errWriter, prop *proto.Properties, v refle // marshalValue writes the value to the Writer. func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error { + var err error v = reflect.Indirect(v) - // Handle nil pointer - if v.Kind() == reflect.Invalid { - out.write("null") - return out.err - } - // Handle repeated elements. if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 { out.write("[") @@ -463,6 +404,9 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle // Handle well-known types. // Most are handled up in marshalObject (because 99% are messages). + type wkt interface { + XXX_WellKnownType() string + } if wkt, ok := v.Interface().(wkt); ok { switch wkt.XXX_WellKnownType() { case "NullValue": @@ -550,24 +494,6 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle return out.err } - // Handle non-finite floats, e.g. NaN, Infinity and -Infinity. - if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 { - f := v.Float() - var sval string - switch { - case math.IsInf(f, 1): - sval = `"Infinity"` - case math.IsInf(f, -1): - sval = `"-Infinity"` - case math.IsNaN(f): - sval = `"NaN"` - } - if sval != "" { - out.write(sval) - return out.err - } - } - // Default handling defers to the encoding/json library. b, err := json.Marshal(v.Interface()) if err != nil { @@ -639,95 +565,34 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe // Allocate memory for pointer fields. if targetType.Kind() == reflect.Ptr { - // If input value is "null" and target is a pointer type, then the field should be treated as not set - // UNLESS the target is structpb.Value, in which case it should be set to structpb.NullValue. - if string(inputValue) == "null" && targetType != reflect.TypeOf(&stpb.Value{}) { - return nil - } target.Set(reflect.New(targetType.Elem())) - return u.unmarshalValue(target.Elem(), inputValue, prop) } - if jsu, ok := target.Addr().Interface().(JSONPBUnmarshaler); ok { - return jsu.UnmarshalJSONPB(u, []byte(inputValue)) + // Handle well-known types. + type wkt interface { + XXX_WellKnownType() string } - - // Handle well-known types that are not pointers. - if w, ok := target.Addr().Interface().(wkt); ok { - switch w.XXX_WellKnownType() { + if wkt, ok := target.Addr().Interface().(wkt); ok { + switch wkt.XXX_WellKnownType() { case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value", "Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue": + // "Wrappers use the same representation in JSON + // as the wrapped primitive type, except that null is allowed." + // encoding/json will turn JSON `null` into Go `nil`, + // so we don't have to do any extra work. return u.unmarshalValue(target.Field(0), inputValue, prop) case "Any": - // Use json.RawMessage pointer type instead of value to support pre-1.8 version. - // 1.8 changed RawMessage.MarshalJSON from pointer type to value type, see - // https://github.com/golang/go/issues/14493 - var jsonFields map[string]*json.RawMessage - if err := json.Unmarshal(inputValue, &jsonFields); err != nil { - return err - } - - val, ok := jsonFields["@type"] - if !ok || val == nil { - return errors.New("Any JSON doesn't have '@type'") - } - - var turl string - if err := json.Unmarshal([]byte(*val), &turl); err != nil { - return fmt.Errorf("can't unmarshal Any's '@type': %q", *val) - } - target.Field(0).SetString(turl) - - mname := turl - if slash := strings.LastIndex(mname, "/"); slash >= 0 { - mname = mname[slash+1:] - } - mt := proto.MessageType(mname) - if mt == nil { - return fmt.Errorf("unknown message type %q", mname) - } - - m := reflect.New(mt.Elem()).Interface().(proto.Message) - if _, ok := m.(wkt); ok { - val, ok := jsonFields["value"] - if !ok { - return errors.New("Any JSON doesn't have 'value'") - } - - if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), *val, nil); err != nil { - return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err) - } - } else { - delete(jsonFields, "@type") - nestedProto, err := json.Marshal(jsonFields) - if err != nil { - return fmt.Errorf("can't generate JSON for Any's nested proto to be unmarshaled: %v", err) - } - - if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil { - return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err) - } - } - - b, err := proto.Marshal(m) - if err != nil { - return fmt.Errorf("can't marshal proto %T into Any.Value: %v", m, err) - } - target.Field(1).SetBytes(b) - - return nil + return fmt.Errorf("unmarshaling Any not supported yet") case "Duration": unq, err := strconv.Unquote(string(inputValue)) if err != nil { return err } - d, err := time.ParseDuration(unq) if err != nil { return fmt.Errorf("bad Duration: %v", err) } - ns := d.Nanoseconds() s := ns / 1e9 ns %= 1e9 @@ -739,65 +604,13 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe if err != nil { return err } - t, err := time.Parse(time.RFC3339Nano, unq) if err != nil { return fmt.Errorf("bad Timestamp: %v", err) } - - target.Field(0).SetInt(t.Unix()) + target.Field(0).SetInt(int64(t.Unix())) target.Field(1).SetInt(int64(t.Nanosecond())) return nil - case "Struct": - var m map[string]json.RawMessage - if err := json.Unmarshal(inputValue, &m); err != nil { - return fmt.Errorf("bad StructValue: %v", err) - } - - target.Field(0).Set(reflect.ValueOf(map[string]*stpb.Value{})) - for k, jv := range m { - pv := &stpb.Value{} - if err := u.unmarshalValue(reflect.ValueOf(pv).Elem(), jv, prop); err != nil { - return fmt.Errorf("bad value in StructValue for key %q: %v", k, err) - } - target.Field(0).SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(pv)) - } - return nil - case "ListValue": - var s []json.RawMessage - if err := json.Unmarshal(inputValue, &s); err != nil { - return fmt.Errorf("bad ListValue: %v", err) - } - - target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s), len(s)))) - for i, sv := range s { - if err := u.unmarshalValue(target.Field(0).Index(i), sv, prop); err != nil { - return err - } - } - return nil - case "Value": - ivStr := string(inputValue) - if ivStr == "null" { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_NullValue{})) - } else if v, err := strconv.ParseFloat(ivStr, 0); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_NumberValue{v})) - } else if v, err := strconv.Unquote(ivStr); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_StringValue{v})) - } else if v, err := strconv.ParseBool(ivStr); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_BoolValue{v})) - } else if err := json.Unmarshal(inputValue, &[]json.RawMessage{}); err == nil { - lv := &stpb.ListValue{} - target.Field(0).Set(reflect.ValueOf(&stpb.Value_ListValue{lv})) - return u.unmarshalValue(reflect.ValueOf(lv).Elem(), inputValue, prop) - } else if err := json.Unmarshal(inputValue, &map[string]json.RawMessage{}); err == nil { - sv := &stpb.Struct{} - target.Field(0).Set(reflect.ValueOf(&stpb.Value_StructValue{sv})) - return u.unmarshalValue(reflect.ValueOf(sv).Elem(), inputValue, prop) - } else { - return fmt.Errorf("unrecognized type for Value %q", ivStr) - } - return nil } } @@ -881,26 +694,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe } } } - // Handle proto2 extensions. - if len(jsonFields) > 0 { - if ep, ok := target.Addr().Interface().(proto.Message); ok { - for _, ext := range proto.RegisteredExtensions(ep) { - name := fmt.Sprintf("[%s]", ext.Name) - raw, ok := jsonFields[name] - if !ok { - continue - } - delete(jsonFields, name) - nv := reflect.New(reflect.TypeOf(ext.ExtensionType).Elem()) - if err := u.unmarshalValue(nv.Elem(), raw, nil); err != nil { - return err - } - if err := proto.SetExtension(ep, ext, nv.Interface()); err != nil { - return err - } - } - } - } if !u.AllowUnknownFields && len(jsonFields) > 0 { // Pick any field to be the scapegoat. var f string @@ -973,15 +766,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe inputValue = inputValue[1 : len(inputValue)-1] } - // Non-finite numbers can be encoded as strings. - isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64 - if isFloat { - if num, ok := nonFinite[string(inputValue)]; ok { - target.SetFloat(num) - return nil - } - } - // Use the encoding/json for parsing other value types. return json.Unmarshal(inputValue, target.Addr().Interface()) } diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go index 38d081ce25..78f67c4d7f 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go @@ -35,7 +35,6 @@ import ( "bytes" "encoding/json" "io" - "math" "reflect" "strings" "testing" @@ -44,7 +43,6 @@ import ( pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto" proto3pb "github.com/golang/protobuf/proto/proto3_proto" - "github.com/golang/protobuf/ptypes" anypb "github.com/golang/protobuf/ptypes/any" durpb "github.com/golang/protobuf/ptypes/duration" stpb "github.com/golang/protobuf/ptypes/struct" @@ -309,23 +307,6 @@ var ( "value": "1.212s" } }` - - nonFinites = &pb.NonFinites{ - FNan: proto.Float32(float32(math.NaN())), - FPinf: proto.Float32(float32(math.Inf(1))), - FNinf: proto.Float32(float32(math.Inf(-1))), - DNan: proto.Float64(float64(math.NaN())), - DPinf: proto.Float64(float64(math.Inf(1))), - DNinf: proto.Float64(float64(math.Inf(-1))), - } - nonFinitesJSON = `{` + - `"fNan":"NaN",` + - `"fPinf":"Infinity",` + - `"fNinf":"-Infinity",` + - `"dNan":"NaN",` + - `"dPinf":"Infinity",` + - `"dNinf":"-Infinity"` + - `}` ) func init() { @@ -345,7 +326,6 @@ var marshalingTests = []struct { }{ {"simple flat object", marshaler, simpleObject, simpleObjectJSON}, {"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectPrettyJSON}, - {"non-finite floats fields object", marshaler, nonFinites, nonFinitesJSON}, {"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON}, {"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON}, {"nested message/enum flat object", marshaler, complexObject, complexObjectJSON}, @@ -370,9 +350,6 @@ var marshalingTests = []struct { `{"rFunny":[1,2]}`}, {"empty value", marshaler, &pb.Simple3{}, `{}`}, {"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`}, - {"empty repeated emitted", Marshaler{EmitDefaults: true}, &pb.SimpleSlice3{}, `{"slices":[]}`}, - {"empty map emitted", Marshaler{EmitDefaults: true}, &pb.SimpleMap3{}, `{"stringy":{}}`}, - {"nested struct null", Marshaler{EmitDefaults: true}, &pb.SimpleNull3{}, `{"simple":null}`}, {"map", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`}, {"map", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON}, {"map", marshaler, @@ -409,36 +386,11 @@ var marshalingTests = []struct { {"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3.000s"}`}, {"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{ Fields: map[string]*stpb.Value{ - "one": {Kind: &stpb.Value_StringValue{"loneliest number"}}, - "two": {Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}, + "one": &stpb.Value{Kind: &stpb.Value_StringValue{"loneliest number"}}, + "two": &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}, }, }}, `{"st":{"one":"loneliest number","two":null}}`}, - {"empty ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{}}, `{"lv":[]}`}, - {"basic ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_NullValue{}}, - {Kind: &stpb.Value_NumberValue{3}}, - {Kind: &stpb.Value_BoolValue{true}}, - }}}, `{"lv":["x",null,3,true]}`}, {"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}, `{"ts":"2014-05-13T16:53:20.021Z"}`}, - {"number Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}, `{"val":1}`}, - {"null Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}, `{"val":null}`}, - {"string number value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}, `{"val":"9223372036854775807"}`}, - {"list of lists Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{ - Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}}, - }}}, - {Kind: &stpb.Value_StringValue{"z"}}, - }, - }}}, - }, - }}, - }}, `{"val":["x",[["y"],"z"]]}`}, {"DoubleValue", marshaler, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}, `{"dbl":1.2}`}, {"FloatValue", marshaler, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}, `{"flt":1.2}`}, @@ -462,36 +414,6 @@ func TestMarshaling(t *testing.T) { } } -func TestMarshalJSONPBMarshaler(t *testing.T) { - rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }` - msg := dynamicMessage{rawJson: rawJson} - str, err := new(Marshaler).MarshalToString(&msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling JSONPBMarshaler: %v", err) - } - if str != rawJson { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, rawJson) - } -} - -func TestMarshalAnyJSONPBMarshaler(t *testing.T) { - msg := dynamicMessage{rawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`} - a, err := ptypes.MarshalAny(&msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling to Any: %v", err) - } - str, err := new(Marshaler).MarshalToString(a) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling Any to JSON: %v", err) - } - // after custom marshaling, it's round-tripped through JSON decoding/encoding already, - // so the keys are sorted, whitespace is compacted, and "@type" key has been added - expected := `{"@type":"type.googleapis.com/` + dynamicMessageName +`","baz":[0,1,2,3],"foo":"bar"}` - if str != expected { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, expected) - } -} - var unmarshalingTests = []struct { desc string unmarshaler Unmarshaler @@ -530,17 +452,9 @@ var unmarshalingTests = []struct { }}}, {"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}}, {"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}}, - {"NaN", Unmarshaler{}, `{"oDouble":"NaN"}`, &pb.Simple{ODouble: proto.Float64(math.NaN())}}, - {"Inf", Unmarshaler{}, `{"oFloat":"Infinity"}`, &pb.Simple{OFloat: proto.Float32(float32(math.Inf(1)))}}, - {"-Inf", Unmarshaler{}, `{"oDouble":"-Infinity"}`, &pb.Simple{ODouble: proto.Float64(math.Inf(-1))}}, {"map", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}}, {"map", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}}, {"map", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}}, - {"proto2 extension", Unmarshaler{}, realNumberJSON, realNumber}, - {"Any with message", Unmarshaler{}, anySimpleJSON, anySimple}, - {"Any with message and indent", Unmarshaler{}, anySimplePrettyJSON, anySimple}, - {"Any with WKT", Unmarshaler{}, anyWellKnownJSON, anyWellKnown}, - {"Any with WKT and indent", Unmarshaler{}, anyWellKnownPrettyJSON, anyWellKnown}, // TODO: This is broken. //{"map", Unmarshaler{}, `{"enumy":{"XIV":"ROMAN"}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}}, {"map", Unmarshaler{}, `{"enumy":{"XIV":2}}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}}, @@ -553,55 +467,9 @@ var unmarshalingTests = []struct { {"camelName input", Unmarshaler{}, `{"oBool":true}`, &pb.Simple{OBool: proto.Bool(true)}}, {"Duration", Unmarshaler{}, `{"dur":"3.000s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}}, - {"null Duration", Unmarshaler{}, `{"dur":null}`, &pb.KnownTypes{Dur: nil}}, {"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20.021Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}}, {"PreEpochTimestamp", Unmarshaler{}, `{"ts":"1969-12-31T23:59:58.999999995Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -2, Nanos: 999999995}}}, {"ZeroTimeTimestamp", Unmarshaler{}, `{"ts":"0001-01-01T00:00:00Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}}}, - {"null Timestamp", Unmarshaler{}, `{"ts":null}`, &pb.KnownTypes{Ts: nil}}, - {"null Struct", Unmarshaler{}, `{"st": null}`, &pb.KnownTypes{St: nil}}, - {"empty Struct", Unmarshaler{}, `{"st": {}}`, &pb.KnownTypes{St: &stpb.Struct{}}}, - {"basic Struct", Unmarshaler{}, `{"st": {"a": "x", "b": null, "c": 3, "d": true}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{ - "a": {Kind: &stpb.Value_StringValue{"x"}}, - "b": {Kind: &stpb.Value_NullValue{}}, - "c": {Kind: &stpb.Value_NumberValue{3}}, - "d": {Kind: &stpb.Value_BoolValue{true}}, - }}}}, - {"nested Struct", Unmarshaler{}, `{"st": {"a": {"b": 1, "c": [{"d": true}, "f"]}}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{ - "a": {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{ - "b": {Kind: &stpb.Value_NumberValue{1}}, - "c": {Kind: &stpb.Value_ListValue{&stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{"d": {Kind: &stpb.Value_BoolValue{true}}}}}}, - {Kind: &stpb.Value_StringValue{"f"}}, - }}}}, - }}}}, - }}}}, - {"null ListValue", Unmarshaler{}, `{"lv": null}`, &pb.KnownTypes{Lv: nil}}, - {"empty ListValue", Unmarshaler{}, `{"lv": []}`, &pb.KnownTypes{Lv: &stpb.ListValue{}}}, - {"basic ListValue", Unmarshaler{}, `{"lv": ["x", null, 3, true]}`, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_NullValue{}}, - {Kind: &stpb.Value_NumberValue{3}}, - {Kind: &stpb.Value_BoolValue{true}}, - }}}}, - {"number Value", Unmarshaler{}, `{"val":1}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}}, - {"null Value", Unmarshaler{}, `{"val":null}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}}, - {"bool Value", Unmarshaler{}, `{"val":true}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_BoolValue{true}}}}, - {"string Value", Unmarshaler{}, `{"val":"x"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"x"}}}}, - {"string number value", Unmarshaler{}, `{"val":"9223372036854775807"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}}, - {"list of lists Value", Unmarshaler{}, `{"val":["x", [["y"], "z"]]}`, &pb.KnownTypes{Val: &stpb.Value{ - Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}}, - }}}, - {Kind: &stpb.Value_StringValue{"z"}}, - }, - }}}, - }, - }}}}}, {"DoubleValue", Unmarshaler{}, `{"dbl":1.2}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}}, {"FloatValue", Unmarshaler{}, `{"flt":1.2}`, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}}, @@ -612,17 +480,8 @@ var unmarshalingTests = []struct { {"BoolValue", Unmarshaler{}, `{"bool":true}`, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}}, {"StringValue", Unmarshaler{}, `{"str":"plush"}`, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}}, {"BytesValue", Unmarshaler{}, `{"bytes":"d293"}`, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}}, - - // Ensure that `null` as a value ends up with a nil pointer instead of a [type]Value struct. - {"null DoubleValue", Unmarshaler{}, `{"dbl":null}`, &pb.KnownTypes{Dbl: nil}}, - {"null FloatValue", Unmarshaler{}, `{"flt":null}`, &pb.KnownTypes{Flt: nil}}, - {"null Int64Value", Unmarshaler{}, `{"i64":null}`, &pb.KnownTypes{I64: nil}}, - {"null UInt64Value", Unmarshaler{}, `{"u64":null}`, &pb.KnownTypes{U64: nil}}, - {"null Int32Value", Unmarshaler{}, `{"i32":null}`, &pb.KnownTypes{I32: nil}}, - {"null UInt32Value", Unmarshaler{}, `{"u32":null}`, &pb.KnownTypes{U32: nil}}, - {"null BoolValue", Unmarshaler{}, `{"bool":null}`, &pb.KnownTypes{Bool: nil}}, - {"null StringValue", Unmarshaler{}, `{"str":null}`, &pb.KnownTypes{Str: nil}}, - {"null BytesValue", Unmarshaler{}, `{"bytes":null}`, &pb.KnownTypes{Bytes: nil}}, + // `null` is also a permissible value. Let's just test one. + {"null DoubleValue", Unmarshaler{}, `{"dbl":null}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{}}}, } func TestUnmarshaling(t *testing.T) { @@ -700,69 +559,3 @@ func TestUnmarshalingBadInput(t *testing.T) { } } } - -func TestUnmarshalJSONPBUnmarshaler(t *testing.T) { - rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }` - var msg dynamicMessage - if err := Unmarshal(strings.NewReader(rawJson), &msg); err != nil { - t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err) - } - if msg.rawJson != rawJson { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", msg.rawJson, rawJson) - } -} - -func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) { - rawJson := `{ "@type": "blah.com/` + dynamicMessageName + `", "foo": "bar", "baz": [0, 1, 2, 3] }` - var got anypb.Any - if err := Unmarshal(strings.NewReader(rawJson), &got); err != nil { - t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err) - } - - dm := &dynamicMessage{rawJson: `{"baz":[0,1,2,3],"foo":"bar"}`} - var want anypb.Any - if b, err := proto.Marshal(dm); err != nil { - t.Errorf("an unexpected error occurred when marshaling message: %v", err) - } else { - want.TypeUrl = "blah.com/" + dynamicMessageName - want.Value = b - } - - if !proto.Equal(&got, &want) { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", got, want) - } -} - -const ( - dynamicMessageName = "google.protobuf.jsonpb.testing.dynamicMessage" -) -func init() { - // we register the custom type below so that we can use it in Any types - proto.RegisterType((*dynamicMessage)(nil), dynamicMessageName) -} - -// dynamicMessage implements protobuf.Message but is not a normal generated message type. -// It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support. -type dynamicMessage struct { - rawJson string `protobuf:"bytes,1,opt,name=rawJson"` -} - -func (m *dynamicMessage) Reset() { - m.rawJson = "{}" -} - -func (m *dynamicMessage) String() string { - return m.rawJson -} - -func (m *dynamicMessage) ProtoMessage() { -} - -func (m *dynamicMessage) MarshalJSONPB(jm *Marshaler) ([]byte, error) { - return []byte(m.rawJson), nil -} - -func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error { - m.rawJson = string(js) - return nil -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go index ebb180e88d..cd6ff1cde6 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: more_test_objects.proto +// DO NOT EDIT! /* Package jsonpb is a generated protocol buffer package. @@ -10,12 +11,8 @@ It is generated from these files: It has these top-level messages: Simple3 - SimpleSlice3 - SimpleMap3 - SimpleNull3 Mappy Simple - NonFinites Repeats Widget Maps @@ -74,61 +71,6 @@ func (m *Simple3) String() string { return proto.CompactTextString(m) func (*Simple3) ProtoMessage() {} func (*Simple3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (m *Simple3) GetDub() float64 { - if m != nil { - return m.Dub - } - return 0 -} - -type SimpleSlice3 struct { - Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"` -} - -func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} } -func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) } -func (*SimpleSlice3) ProtoMessage() {} -func (*SimpleSlice3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *SimpleSlice3) GetSlices() []string { - if m != nil { - return m.Slices - } - return nil -} - -type SimpleMap3 struct { - Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SimpleMap3) Reset() { *m = SimpleMap3{} } -func (m *SimpleMap3) String() string { return proto.CompactTextString(m) } -func (*SimpleMap3) ProtoMessage() {} -func (*SimpleMap3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SimpleMap3) GetStringy() map[string]string { - if m != nil { - return m.Stringy - } - return nil -} - -type SimpleNull3 struct { - Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"` -} - -func (m *SimpleNull3) Reset() { *m = SimpleNull3{} } -func (m *SimpleNull3) String() string { return proto.CompactTextString(m) } -func (*SimpleNull3) ProtoMessage() {} -func (*SimpleNull3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SimpleNull3) GetSimple() *Simple3 { - if m != nil { - return m.Simple - } - return nil -} - type Mappy struct { Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -145,7 +87,7 @@ type Mappy struct { func (m *Mappy) Reset() { *m = Mappy{} } func (m *Mappy) String() string { return proto.CompactTextString(m) } func (*Mappy) ProtoMessage() {} -func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *Mappy) GetNummy() map[int64]int32 { if m != nil { @@ -219,9 +161,6 @@ func (m *Mappy) GetU64Booly() map[uint64]bool { func init() { proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3") - proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3") - proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3") - proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3") proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy") proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value) } @@ -229,38 +168,33 @@ func init() { func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 526 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c, - 0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0, - 0xad, 0x0c, 0xe6, 0x8b, 0x78, 0x74, 0x5d, 0x77, 0x95, 0x8e, 0x5e, 0x94, 0x11, 0x07, 0x1c, 0xc2, - 0x2e, 0x4b, 0xdc, 0x99, 0x90, 0xcc, 0x5f, 0xd8, 0xd6, 0xc0, 0xd7, 0xfb, 0xbb, 0x07, 0xe3, 0x48, - 0x72, 0x2d, 0x07, 0x85, 0x6c, 0x77, 0x52, 0x7e, 0xcf, 0xe3, 0x73, 0x24, 0x1d, 0x02, 0x2f, 0xd3, - 0xbc, 0x8c, 0x1f, 0xea, 0xb8, 0xaa, 0x1f, 0xf2, 0x68, 0x17, 0x3f, 0xd6, 0x95, 0x57, 0x94, 0x79, - 0x9d, 0x13, 0x63, 0x57, 0xe5, 0x59, 0x11, 0xb9, 0xe7, 0x60, 0x2e, 0xb7, 0x69, 0x91, 0xc4, 0x3e, - 0x19, 0xc3, 0xf0, 0x3b, 0x8d, 0x1c, 0xed, 0x42, 0xbb, 0xd4, 0x42, 0x5c, 0xba, 0x6f, 0xe0, 0x94, - 0x87, 0xcb, 0x64, 0xfb, 0x18, 0xfb, 0xe4, 0x05, 0x18, 0x15, 0xae, 0x2a, 0x47, 0xbb, 0x18, 0x5e, - 0xda, 0xa1, 0xd8, 0xb9, 0xbf, 0x34, 0x00, 0x0e, 0xce, 0xd7, 0x85, 0x4f, 0x3e, 0x81, 0x59, 0xd5, - 0xe5, 0x36, 0xdb, 0x34, 0x8c, 0x1b, 0x4d, 0x5f, 0x79, 0xbc, 0x9a, 0xd7, 0x41, 0xde, 0x92, 0x13, - 0x77, 0x59, 0x5d, 0x36, 0x61, 0xcb, 0x4f, 0x6e, 0xe0, 0x54, 0x0e, 0xb0, 0xa7, 0x1f, 0x71, 0xc3, - 0x7a, 0xb2, 0x43, 0x5c, 0x92, 0xe7, 0xa0, 0xff, 0x5c, 0x27, 0x34, 0x76, 0x06, 0xec, 0x37, 0xbe, - 0xb9, 0x19, 0x5c, 0x6b, 0xee, 0x15, 0x8c, 0xf8, 0xf7, 0x03, 0x9a, 0x24, 0x3e, 0x79, 0x0b, 0x46, - 0xc5, 0xb6, 0xcc, 0x1e, 0x4d, 0x9f, 0xf5, 0x9b, 0xf0, 0x43, 0x11, 0xbb, 0xbf, 0x2d, 0xd0, 0xe7, - 0xeb, 0xa2, 0x68, 0x88, 0x07, 0x7a, 0x46, 0xd3, 0xb4, 0x6d, 0xdb, 0x69, 0x0d, 0x96, 0x7a, 0x01, - 0x46, 0xbc, 0x5f, 0x8e, 0x21, 0x5f, 0xd5, 0x65, 0xd9, 0x38, 0x03, 0x15, 0xbf, 0xc4, 0x48, 0xf0, - 0x0c, 0x43, 0x3e, 0x8f, 0x76, 0xbb, 0xc6, 0x19, 0xaa, 0xf8, 0x05, 0x46, 0x82, 0x67, 0x18, 0xf2, - 0x11, 0xdd, 0x6c, 0x1a, 0xe7, 0x44, 0xc5, 0xdf, 0x62, 0x24, 0x78, 0x86, 0x31, 0x3e, 0xcf, 0x93, - 0xc6, 0xd1, 0x95, 0x3c, 0x46, 0x2d, 0x8f, 0x6b, 0xe4, 0xe3, 0x8c, 0xa6, 0x8d, 0x63, 0xa8, 0xf8, - 0x3b, 0x8c, 0x04, 0xcf, 0x30, 0xf2, 0x11, 0xac, 0xca, 0x9f, 0xf2, 0x12, 0x26, 0x53, 0xce, 0xf7, - 0x8e, 0x2c, 0x52, 0x6e, 0x3d, 0xc1, 0x4c, 0xbc, 0xfa, 0xc0, 0x45, 0x4b, 0x29, 0x8a, 0xb4, 0x15, - 0xc5, 0x16, 0x45, 0xda, 0x56, 0xb4, 0x55, 0xe2, 0xaa, 0x5f, 0x91, 0x4a, 0x15, 0x69, 0x5b, 0x11, - 0x94, 0x62, 0xbf, 0x62, 0x0b, 0x4f, 0xae, 0x01, 0xba, 0x87, 0x96, 0xe7, 0x6f, 0xa8, 0x98, 0x3f, - 0x5d, 0x9a, 0x3f, 0x34, 0xbb, 0x27, 0xff, 0x97, 0xc9, 0x9d, 0xdc, 0x03, 0x74, 0x8f, 0x2f, 0x9b, - 0x3a, 0x37, 0x5f, 0xcb, 0xa6, 0x62, 0x92, 0xfb, 0x4d, 0x74, 0x73, 0x71, 0xac, 0x7d, 0x7b, 0xdf, - 0x7c, 0xba, 0x10, 0xd9, 0xb4, 0x14, 0xa6, 0xb5, 0xd7, 0x7e, 0x37, 0x2b, 0x8a, 0x83, 0xf7, 0xda, - 0xff, 0xbf, 0x6b, 0x3f, 0xa0, 0x69, 0x5c, 0xae, 0x13, 0xf9, 0x53, 0x9f, 0xe1, 0xac, 0x37, 0x43, - 0x8a, 0xcb, 0x38, 0xdc, 0x07, 0xca, 0xf2, 0xab, 0x1e, 0x3b, 0xfe, 0xbe, 0xbc, 0x3a, 0x54, 0xf9, - 0xec, 0x6f, 0xe4, 0x43, 0x95, 0x4f, 0x8e, 0xc8, 0xef, 0xde, 0x83, 0x29, 0x6e, 0x82, 0x8c, 0xc0, - 0x5c, 0x05, 0x5f, 0x83, 0xc5, 0xb7, 0x60, 0xfc, 0x1f, 0x01, 0x30, 0x66, 0xe1, 0xec, 0xf6, 0xfe, - 0xcb, 0x58, 0x23, 0x36, 0xe8, 0xe1, 0x62, 0x3e, 0x0b, 0xc6, 0x83, 0xc8, 0x60, 0x7f, 0xe0, 0xfe, - 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x34, 0xaf, 0xdb, 0x05, 0x00, 0x00, + // 444 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x94, 0xc1, 0x6b, 0xdb, 0x30, + 0x14, 0x87, 0xe7, 0xa4, 0x4e, 0xec, 0x17, 0xba, 0x19, 0x31, 0x98, 0x58, 0x2f, 0xa1, 0x30, 0x08, + 0x83, 0xf9, 0x90, 0x8c, 0xad, 0x6c, 0xa7, 0x74, 0xf4, 0x50, 0x46, 0x1d, 0x70, 0x09, 0x3b, 0x96, + 0x78, 0x13, 0x65, 0x9e, 0x6d, 0x19, 0xdb, 0x1a, 0xe8, 0x8f, 0x1f, 0x8c, 0x27, 0xcb, 0xb5, 0x6c, + 0x14, 0xd2, 0x9b, 0xcc, 0xef, 0xfb, 0xf2, 0x9e, 0xf4, 0x1e, 0x81, 0x37, 0x39, 0xaf, 0xd8, 0x43, + 0xc3, 0xea, 0xe6, 0x81, 0x27, 0x29, 0xfb, 0xd9, 0xd4, 0x61, 0x59, 0xf1, 0x86, 0x93, 0x59, 0x5a, + 0xf3, 0xa2, 0x4c, 0x2e, 0x2f, 0x60, 0x7e, 0xff, 0x3b, 0x2f, 0x33, 0xb6, 0x21, 0x01, 0x4c, 0x7f, + 0x89, 0x84, 0x3a, 0x4b, 0x67, 0xe5, 0xc4, 0x78, 0xbc, 0xfc, 0xe7, 0x81, 0x7b, 0x77, 0x28, 0x4b, + 0x49, 0x42, 0x70, 0x0b, 0x91, 0xe7, 0x92, 0x3a, 0xcb, 0xe9, 0x6a, 0xb1, 0xa6, 0x61, 0xab, 0x87, + 0x2a, 0x0d, 0x23, 0x8c, 0x6e, 0x8a, 0xa6, 0x92, 0x71, 0x8b, 0x21, 0x5f, 0x37, 0x55, 0x25, 0xe9, + 0xc4, 0xc6, 0xdf, 0x63, 0xa4, 0x79, 0x85, 0x21, 0xcf, 0x93, 0x34, 0x95, 0x74, 0x6a, 0xe3, 0x77, + 0x18, 0x69, 0x5e, 0x61, 0xc8, 0x27, 0xe2, 0xf1, 0x51, 0xd2, 0x33, 0x1b, 0x7f, 0x8d, 0x91, 0xe6, + 0x15, 0xa6, 0x78, 0xce, 0x33, 0x49, 0x5d, 0x2b, 0x8f, 0x51, 0xc7, 0xe3, 0x19, 0x79, 0x56, 0x88, + 0x5c, 0xd2, 0x99, 0x8d, 0xbf, 0xc1, 0x48, 0xf3, 0x0a, 0x23, 0x9f, 0xc1, 0xab, 0x37, 0xeb, 0xb6, + 0xc4, 0x5c, 0x29, 0x17, 0xa3, 0x2b, 0xeb, 0xb4, 0xb5, 0x9e, 0x60, 0x25, 0x7e, 0xfa, 0xd8, 0x8a, + 0x9e, 0x55, 0xd4, 0x69, 0x27, 0xea, 0x4f, 0x14, 0x45, 0x57, 0xd1, 0xb7, 0x89, 0xfb, 0x61, 0x45, + 0x61, 0x54, 0x14, 0x5d, 0x45, 0xb0, 0x8a, 0xc3, 0x8a, 0x1d, 0xfc, 0xf6, 0x0a, 0xa0, 0x1f, 0x34, + 0x6e, 0xcb, 0x1f, 0x26, 0xd5, 0xb6, 0x4c, 0x63, 0x3c, 0x92, 0xd7, 0xe0, 0xfe, 0x3d, 0x64, 0x82, + 0xd1, 0xc9, 0xd2, 0x59, 0xb9, 0x71, 0xfb, 0xf1, 0x65, 0x72, 0xe5, 0xa0, 0xd9, 0x8f, 0xdc, 0x34, + 0x7d, 0x8b, 0xe9, 0x9b, 0xe6, 0x2d, 0x40, 0x3f, 0x7c, 0xd3, 0x74, 0x5b, 0xf3, 0x9d, 0x69, 0x2e, + 0xd6, 0xaf, 0xba, 0x9b, 0xe8, 0x9d, 0x1e, 0x35, 0xd1, 0xef, 0xc5, 0xa9, 0xf6, 0xfd, 0xb1, 0xf9, + 0xf4, 0x20, 0xa6, 0xe9, 0x59, 0x4c, 0x6f, 0xd4, 0x7e, 0xbf, 0x2b, 0x96, 0x8b, 0x0f, 0xda, 0x7f, + 0xd9, 0xb7, 0x1f, 0x89, 0x9c, 0x55, 0x87, 0xcc, 0xfc, 0xa9, 0xaf, 0x70, 0x3e, 0xd8, 0x21, 0xcb, + 0x63, 0x1c, 0xef, 0x03, 0x65, 0x73, 0xaa, 0xa7, 0xae, 0x3f, 0x96, 0xf7, 0xc7, 0x2a, 0x9f, 0x3f, + 0x47, 0x3e, 0x56, 0xf9, 0xec, 0x84, 0xfc, 0xfe, 0x03, 0xcc, 0xf5, 0x4b, 0x90, 0x05, 0xcc, 0xf7, + 0xd1, 0xf7, 0x68, 0xf7, 0x23, 0x0a, 0x5e, 0x10, 0x80, 0xd9, 0x36, 0xde, 0x5e, 0xdf, 0x7e, 0x0b, + 0x1c, 0xe2, 0x83, 0x1b, 0xef, 0xee, 0xb6, 0x51, 0x30, 0x49, 0x66, 0xea, 0xaf, 0x6d, 0xf3, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0xa2, 0x4b, 0xe1, 0x77, 0xf5, 0x04, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto index d254fa5fae..43b440e2dd 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto @@ -37,18 +37,6 @@ message Simple3 { double dub = 1; } -message SimpleSlice3 { - repeated string slices = 1; -} - -message SimpleMap3 { - map stringy = 1; -} - -message SimpleNull3 { - Simple3 simple = 1; -} - enum Numeral { UNKNOWN = 0; ARABIC = 1; diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go index d413d740de..104a308d80 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: test_objects.proto +// DO NOT EDIT! package jsonpb @@ -52,7 +53,7 @@ func (x *Widget_Color) UnmarshalJSON(data []byte) error { *x = Widget_Color(value) return nil } -func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } +func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} } // Test message for holding primitive types. type Simple struct { @@ -152,64 +153,6 @@ func (m *Simple) GetOBytes() []byte { return nil } -// Test message for holding special non-finites primitives. -type NonFinites struct { - FNan *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"` - FPinf *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"` - FNinf *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"` - DNan *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"` - DPinf *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"` - DNinf *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NonFinites) Reset() { *m = NonFinites{} } -func (m *NonFinites) String() string { return proto.CompactTextString(m) } -func (*NonFinites) ProtoMessage() {} -func (*NonFinites) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *NonFinites) GetFNan() float32 { - if m != nil && m.FNan != nil { - return *m.FNan - } - return 0 -} - -func (m *NonFinites) GetFPinf() float32 { - if m != nil && m.FPinf != nil { - return *m.FPinf - } - return 0 -} - -func (m *NonFinites) GetFNinf() float32 { - if m != nil && m.FNinf != nil { - return *m.FNinf - } - return 0 -} - -func (m *NonFinites) GetDNan() float64 { - if m != nil && m.DNan != nil { - return *m.DNan - } - return 0 -} - -func (m *NonFinites) GetDPinf() float64 { - if m != nil && m.DPinf != nil { - return *m.DPinf - } - return 0 -} - -func (m *NonFinites) GetDNinf() float64 { - if m != nil && m.DNinf != nil { - return *m.DNinf - } - return 0 -} - // Test message for holding repeated primitives. type Repeats struct { RBool []bool `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"` @@ -229,7 +172,7 @@ type Repeats struct { func (m *Repeats) Reset() { *m = Repeats{} } func (m *Repeats) String() string { return proto.CompactTextString(m) } func (*Repeats) ProtoMessage() {} -func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } +func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } func (m *Repeats) GetRBool() []bool { if m != nil { @@ -322,7 +265,7 @@ type Widget struct { func (m *Widget) Reset() { *m = Widget{} } func (m *Widget) String() string { return proto.CompactTextString(m) } func (*Widget) ProtoMessage() {} -func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } +func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } func (m *Widget) GetColor() Widget_Color { if m != nil && m.Color != nil { @@ -375,7 +318,7 @@ type Maps struct { func (m *Maps) Reset() { *m = Maps{} } func (m *Maps) String() string { return proto.CompactTextString(m) } func (*Maps) ProtoMessage() {} -func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } +func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } func (m *Maps) GetMInt64Str() map[int64]string { if m != nil { @@ -404,7 +347,7 @@ type MsgWithOneof struct { func (m *MsgWithOneof) Reset() { *m = MsgWithOneof{} } func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) } func (*MsgWithOneof) ProtoMessage() {} -func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } +func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } type isMsgWithOneof_Union interface { isMsgWithOneof_Union() @@ -417,7 +360,7 @@ type MsgWithOneof_Salary struct { Salary int64 `protobuf:"varint,2,opt,name=salary,oneof"` } type MsgWithOneof_Country struct { - Country string `protobuf:"bytes,3,opt,name=Country,oneof"` + Country string `protobuf:"bytes,3,opt,name=Country,json=country,oneof"` } type MsgWithOneof_HomeAddress struct { HomeAddress string `protobuf:"bytes,4,opt,name=home_address,json=homeAddress,oneof"` @@ -567,7 +510,7 @@ type Real struct { func (m *Real) Reset() { *m = Real{} } func (m *Real) String() string { return proto.CompactTextString(m) } func (*Real) ProtoMessage() {} -func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } +func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } var extRange_Real = []proto.ExtensionRange{ {100, 536870911}, @@ -593,7 +536,7 @@ type Complex struct { func (m *Complex) Reset() { *m = Complex{} } func (m *Complex) String() string { return proto.CompactTextString(m) } func (*Complex) ProtoMessage() {} -func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } +func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } var extRange_Complex = []proto.ExtensionRange{ {100, 536870911}, @@ -616,7 +559,6 @@ var E_Complex_RealExtension = &proto.ExtensionDesc{ Field: 123, Name: "jsonpb.Complex.real_extension", Tag: "bytes,123,opt,name=real_extension,json=realExtension", - Filename: "test_objects.proto", } type KnownTypes struct { @@ -624,8 +566,6 @@ type KnownTypes struct { Dur *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=dur" json:"dur,omitempty"` St *google_protobuf2.Struct `protobuf:"bytes,12,opt,name=st" json:"st,omitempty"` Ts *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=ts" json:"ts,omitempty"` - Lv *google_protobuf2.ListValue `protobuf:"bytes,15,opt,name=lv" json:"lv,omitempty"` - Val *google_protobuf2.Value `protobuf:"bytes,16,opt,name=val" json:"val,omitempty"` Dbl *google_protobuf4.DoubleValue `protobuf:"bytes,3,opt,name=dbl" json:"dbl,omitempty"` Flt *google_protobuf4.FloatValue `protobuf:"bytes,4,opt,name=flt" json:"flt,omitempty"` I64 *google_protobuf4.Int64Value `protobuf:"bytes,5,opt,name=i64" json:"i64,omitempty"` @@ -641,7 +581,7 @@ type KnownTypes struct { func (m *KnownTypes) Reset() { *m = KnownTypes{} } func (m *KnownTypes) String() string { return proto.CompactTextString(m) } func (*KnownTypes) ProtoMessage() {} -func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } +func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } func (m *KnownTypes) GetAn() *google_protobuf.Any { if m != nil { @@ -671,20 +611,6 @@ func (m *KnownTypes) GetTs() *google_protobuf3.Timestamp { return nil } -func (m *KnownTypes) GetLv() *google_protobuf2.ListValue { - if m != nil { - return m.Lv - } - return nil -} - -func (m *KnownTypes) GetVal() *google_protobuf2.Value { - if m != nil { - return m.Val - } - return nil -} - func (m *KnownTypes) GetDbl() *google_protobuf4.DoubleValue { if m != nil { return m.Dbl @@ -754,12 +680,10 @@ var E_Name = &proto.ExtensionDesc{ Field: 124, Name: "jsonpb.name", Tag: "bytes,124,opt,name=name", - Filename: "test_objects.proto", } func init() { proto.RegisterType((*Simple)(nil), "jsonpb.Simple") - proto.RegisterType((*NonFinites)(nil), "jsonpb.NonFinites") proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats") proto.RegisterType((*Widget)(nil), "jsonpb.Widget") proto.RegisterType((*Maps)(nil), "jsonpb.Maps") @@ -775,78 +699,71 @@ func init() { func init() { proto.RegisterFile("test_objects.proto", fileDescriptor1) } var fileDescriptor1 = []byte{ - // 1160 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x41, 0x73, 0xdb, 0x44, - 0x14, 0xc7, 0x23, 0xc9, 0x92, 0xed, 0x75, 0x92, 0x9a, 0x6d, 0xda, 0x2a, 0x26, 0x80, 0xc6, 0x94, - 0x22, 0x0a, 0x75, 0x07, 0xc7, 0xe3, 0x61, 0x0a, 0x97, 0xa4, 0x71, 0x29, 0x43, 0x13, 0x98, 0x4d, - 0x43, 0x8f, 0x1e, 0x39, 0x5a, 0xbb, 0x2a, 0xf2, 0xae, 0x67, 0x77, 0x95, 0xd4, 0x03, 0x87, 0x9c, - 0x39, 0x32, 0x7c, 0x05, 0xf8, 0x08, 0x1c, 0xf8, 0x74, 0xcc, 0xdb, 0x95, 0xac, 0xc4, 0x8e, 0x4f, - 0xf1, 0x7b, 0xef, 0xff, 0xfe, 0x59, 0xed, 0x6f, 0x77, 0x1f, 0xc2, 0x8a, 0x4a, 0x35, 0xe4, 0xa3, - 0x77, 0xf4, 0x5c, 0xc9, 0xce, 0x4c, 0x70, 0xc5, 0xb1, 0xf7, 0x4e, 0x72, 0x36, 0x1b, 0xb5, 0x76, - 0x27, 0x9c, 0x4f, 0x52, 0xfa, 0x54, 0x67, 0x47, 0xd9, 0xf8, 0x69, 0xc4, 0xe6, 0x46, 0xd2, 0xfa, - 0x78, 0xb9, 0x14, 0x67, 0x22, 0x52, 0x09, 0x67, 0x79, 0x7d, 0x6f, 0xb9, 0x2e, 0x95, 0xc8, 0xce, - 0x55, 0x5e, 0xfd, 0x64, 0xb9, 0xaa, 0x92, 0x29, 0x95, 0x2a, 0x9a, 0xce, 0xd6, 0xd9, 0x5f, 0x8a, - 0x68, 0x36, 0xa3, 0x22, 0x5f, 0x61, 0xfb, 0x6f, 0x1b, 0x79, 0xa7, 0xc9, 0x74, 0x96, 0x52, 0x7c, - 0x0f, 0x79, 0x7c, 0x38, 0xe2, 0x3c, 0xf5, 0xad, 0xc0, 0x0a, 0x6b, 0xc4, 0xe5, 0x87, 0x9c, 0xa7, - 0xf8, 0x01, 0xaa, 0xf2, 0x61, 0xc2, 0xd4, 0x7e, 0xd7, 0xb7, 0x03, 0x2b, 0x74, 0x89, 0xc7, 0x7f, - 0x80, 0x68, 0x51, 0xe8, 0xf7, 0x7c, 0x27, 0xb0, 0x42, 0xc7, 0x14, 0xfa, 0x3d, 0xbc, 0x8b, 0x6a, - 0x7c, 0x98, 0x99, 0x96, 0x4a, 0x60, 0x85, 0x5b, 0xa4, 0xca, 0xcf, 0x74, 0x58, 0x96, 0xfa, 0x3d, - 0xdf, 0x0d, 0xac, 0xb0, 0x92, 0x97, 0x8a, 0x2e, 0x69, 0xba, 0xbc, 0xc0, 0x0a, 0x3f, 0x20, 0x55, - 0x7e, 0x7a, 0xad, 0x4b, 0x9a, 0xae, 0x6a, 0x60, 0x85, 0x38, 0x2f, 0xf5, 0x7b, 0x66, 0x11, 0xe3, - 0x94, 0x47, 0xca, 0xaf, 0x05, 0x56, 0x68, 0x13, 0x8f, 0xbf, 0x80, 0xc8, 0xf4, 0xc4, 0x3c, 0x1b, - 0xa5, 0xd4, 0xaf, 0x07, 0x56, 0x68, 0x91, 0x2a, 0x3f, 0xd2, 0x61, 0x6e, 0xa7, 0x44, 0xc2, 0x26, - 0x3e, 0x0a, 0xac, 0xb0, 0x0e, 0x76, 0x3a, 0x34, 0x76, 0xa3, 0xb9, 0xa2, 0xd2, 0x6f, 0x04, 0x56, - 0xb8, 0x49, 0x3c, 0x7e, 0x08, 0x51, 0xfb, 0x4f, 0x0b, 0xa1, 0x13, 0xce, 0x5e, 0x24, 0x2c, 0x51, - 0x54, 0xe2, 0xbb, 0xc8, 0x1d, 0x0f, 0x59, 0xc4, 0xf4, 0x56, 0xd9, 0xa4, 0x32, 0x3e, 0x89, 0x18, - 0x6c, 0xe0, 0x78, 0x38, 0x4b, 0xd8, 0x58, 0x6f, 0x94, 0x4d, 0xdc, 0xf1, 0xcf, 0x09, 0x1b, 0x9b, - 0x34, 0x83, 0xb4, 0x93, 0xa7, 0x4f, 0x20, 0x7d, 0x17, 0xb9, 0xb1, 0xb6, 0xa8, 0xe8, 0xd5, 0x55, - 0xe2, 0xdc, 0x22, 0x36, 0x16, 0xae, 0xce, 0xba, 0x71, 0x61, 0x11, 0x1b, 0x0b, 0x2f, 0x4f, 0x83, - 0x45, 0xfb, 0x1f, 0x1b, 0x55, 0x09, 0x9d, 0xd1, 0x48, 0x49, 0x90, 0x88, 0x82, 0x9e, 0x03, 0xf4, - 0x44, 0x41, 0x4f, 0x2c, 0xe8, 0x39, 0x40, 0x4f, 0x2c, 0xe8, 0x89, 0x05, 0x3d, 0x07, 0xe8, 0x89, - 0x05, 0x3d, 0x51, 0xd2, 0x73, 0x80, 0x9e, 0x28, 0xe9, 0x89, 0x92, 0x9e, 0x03, 0xf4, 0x44, 0x49, - 0x4f, 0x94, 0xf4, 0x1c, 0xa0, 0x27, 0x4e, 0xaf, 0x75, 0x2d, 0xe8, 0x39, 0x40, 0x4f, 0x94, 0xf4, - 0xc4, 0x82, 0x9e, 0x03, 0xf4, 0xc4, 0x82, 0x9e, 0x28, 0xe9, 0x39, 0x40, 0x4f, 0x94, 0xf4, 0x44, - 0x49, 0xcf, 0x01, 0x7a, 0xa2, 0xa4, 0x27, 0x16, 0xf4, 0x1c, 0xa0, 0x27, 0x0c, 0xbd, 0x7f, 0x6d, - 0xe4, 0xbd, 0x49, 0xe2, 0x09, 0x55, 0xf8, 0x31, 0x72, 0xcf, 0x79, 0xca, 0x85, 0x26, 0xb7, 0xdd, - 0xdd, 0xe9, 0x98, 0x2b, 0xda, 0x31, 0xe5, 0xce, 0x73, 0xa8, 0x11, 0x23, 0xc1, 0x4f, 0xc0, 0xcf, - 0xa8, 0x61, 0xf3, 0xd6, 0xa9, 0x3d, 0xa1, 0xff, 0xe2, 0x47, 0xc8, 0x93, 0xfa, 0x2a, 0xe9, 0x53, - 0xd5, 0xe8, 0x6e, 0x17, 0x6a, 0x73, 0xc1, 0x48, 0x5e, 0xc5, 0x5f, 0x98, 0x0d, 0xd1, 0x4a, 0x58, - 0xe7, 0xaa, 0x12, 0x36, 0x28, 0x97, 0x56, 0x85, 0x01, 0xec, 0xef, 0x68, 0xcf, 0x3b, 0x85, 0x32, - 0xe7, 0x4e, 0x8a, 0x3a, 0xfe, 0x0a, 0xd5, 0xc5, 0xb0, 0x10, 0xdf, 0xd3, 0xb6, 0x2b, 0xe2, 0x9a, - 0xc8, 0x7f, 0xb5, 0x3f, 0x43, 0xae, 0x59, 0x74, 0x15, 0x39, 0x64, 0x70, 0xd4, 0xdc, 0xc0, 0x75, - 0xe4, 0x7e, 0x4f, 0x06, 0x83, 0x93, 0xa6, 0x85, 0x6b, 0xa8, 0x72, 0xf8, 0xea, 0x6c, 0xd0, 0xb4, - 0xdb, 0x7f, 0xd9, 0xa8, 0x72, 0x1c, 0xcd, 0x24, 0xfe, 0x16, 0x35, 0xa6, 0xe6, 0xb8, 0xc0, 0xde, - 0xeb, 0x33, 0xd6, 0xe8, 0x7e, 0x58, 0xf8, 0x83, 0xa4, 0x73, 0xac, 0xcf, 0xcf, 0xa9, 0x12, 0x03, - 0xa6, 0xc4, 0x9c, 0xd4, 0xa7, 0x45, 0x8c, 0x0f, 0xd0, 0xd6, 0x54, 0x9f, 0xcd, 0xe2, 0xab, 0x6d, - 0xdd, 0xfe, 0xd1, 0xcd, 0x76, 0x38, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x63, 0x5a, 0x66, 0x5a, 0xdf, - 0xa1, 0xed, 0x9b, 0xfe, 0xb8, 0x89, 0x9c, 0x5f, 0xe9, 0x5c, 0x63, 0x74, 0x08, 0xfc, 0xc4, 0x3b, - 0xc8, 0xbd, 0x88, 0xd2, 0x8c, 0xea, 0xeb, 0x57, 0x27, 0x26, 0x78, 0x66, 0x7f, 0x63, 0xb5, 0x4e, - 0x50, 0x73, 0xd9, 0xfe, 0x7a, 0x7f, 0xcd, 0xf4, 0x3f, 0xbc, 0xde, 0xbf, 0x0a, 0xa5, 0xf4, 0x6b, - 0xff, 0x61, 0xa1, 0xcd, 0x63, 0x39, 0x79, 0x93, 0xa8, 0xb7, 0x3f, 0x31, 0xca, 0xc7, 0xf8, 0x3e, - 0x72, 0x55, 0xa2, 0x52, 0xaa, 0xed, 0xea, 0x2f, 0x37, 0x88, 0x09, 0xb1, 0x8f, 0x3c, 0x19, 0xa5, - 0x91, 0x98, 0x6b, 0x4f, 0xe7, 0xe5, 0x06, 0xc9, 0x63, 0xdc, 0x42, 0xd5, 0xe7, 0x3c, 0x83, 0x95, - 0xe8, 0x67, 0x01, 0x7a, 0x8a, 0x04, 0xfe, 0x14, 0x6d, 0xbe, 0xe5, 0x53, 0x3a, 0x8c, 0xe2, 0x58, - 0x50, 0x29, 0xf5, 0x0b, 0x01, 0x82, 0x06, 0x64, 0x0f, 0x4c, 0xf2, 0xb0, 0x8a, 0xdc, 0x8c, 0x25, - 0x9c, 0xb5, 0x1f, 0xa1, 0x0a, 0xa1, 0x51, 0x5a, 0x7e, 0xbe, 0x65, 0xde, 0x08, 0x1d, 0x3c, 0xae, - 0xd5, 0xe2, 0xe6, 0xd5, 0xd5, 0xd5, 0x95, 0xdd, 0xbe, 0x84, 0xff, 0x08, 0x5f, 0xf2, 0x1e, 0xef, - 0xa1, 0x7a, 0x32, 0x8d, 0x26, 0x09, 0x83, 0x95, 0x19, 0x79, 0x99, 0x28, 0x5b, 0xba, 0x47, 0x68, - 0x5b, 0xd0, 0x28, 0x1d, 0xd2, 0xf7, 0x8a, 0x32, 0x99, 0x70, 0x86, 0x37, 0xcb, 0x23, 0x15, 0xa5, - 0xfe, 0x6f, 0x37, 0xcf, 0x64, 0x6e, 0x4f, 0xb6, 0xa0, 0x69, 0x50, 0xf4, 0xb4, 0xff, 0x73, 0x11, - 0xfa, 0x91, 0xf1, 0x4b, 0xf6, 0x7a, 0x3e, 0xa3, 0x12, 0x3f, 0x44, 0x76, 0xc4, 0xfc, 0x6d, 0xdd, - 0xba, 0xd3, 0x31, 0xf3, 0xa9, 0x53, 0xcc, 0xa7, 0xce, 0x01, 0x9b, 0x13, 0x3b, 0x62, 0xf8, 0x4b, - 0xe4, 0xc4, 0x99, 0xb9, 0xa5, 0x8d, 0xee, 0xee, 0x8a, 0xec, 0x28, 0x9f, 0x92, 0x04, 0x54, 0xf8, - 0x73, 0x64, 0x4b, 0xe5, 0x6f, 0x6a, 0xed, 0x83, 0x15, 0xed, 0xa9, 0x9e, 0x98, 0xc4, 0x96, 0x70, - 0xfb, 0x6d, 0x25, 0x73, 0xbe, 0xad, 0x15, 0xe1, 0xeb, 0x62, 0x78, 0x12, 0x5b, 0x49, 0xd0, 0xa6, - 0x17, 0xfe, 0x9d, 0x35, 0xda, 0x57, 0x89, 0x54, 0xbf, 0xc0, 0x0e, 0x13, 0x3b, 0xbd, 0xc0, 0x21, - 0x72, 0x2e, 0xa2, 0xd4, 0x6f, 0x6a, 0xf1, 0xfd, 0x15, 0xb1, 0x11, 0x82, 0x04, 0x77, 0x90, 0x13, - 0x8f, 0x52, 0xcd, 0xbc, 0xd1, 0xdd, 0x5b, 0xfd, 0x2e, 0xfd, 0xc8, 0xe5, 0xfa, 0x78, 0x94, 0xe2, - 0x27, 0xc8, 0x19, 0xa7, 0x4a, 0x1f, 0x01, 0xb8, 0x70, 0xcb, 0x7a, 0xfd, 0x5c, 0xe6, 0xf2, 0x71, - 0xaa, 0x40, 0x9e, 0xe4, 0xb3, 0xf5, 0x36, 0xb9, 0xbe, 0x42, 0xb9, 0x3c, 0xe9, 0xf7, 0x60, 0x35, - 0x59, 0xbf, 0xa7, 0xa7, 0xca, 0x6d, 0xab, 0x39, 0xbb, 0xae, 0xcf, 0xfa, 0x3d, 0x6d, 0xbf, 0xdf, - 0xd5, 0x43, 0x78, 0x8d, 0xfd, 0x7e, 0xb7, 0xb0, 0xdf, 0xef, 0x6a, 0xfb, 0xfd, 0xae, 0x9e, 0xcc, - 0xeb, 0xec, 0x17, 0xfa, 0x4c, 0xeb, 0x2b, 0x7a, 0x84, 0xd5, 0xd7, 0x6c, 0x3a, 0xdc, 0x61, 0x23, - 0xd7, 0x3a, 0xf0, 0x87, 0xd7, 0x08, 0xad, 0xf1, 0x37, 0x63, 0x21, 0xf7, 0x97, 0x4a, 0xe0, 0xaf, - 0x91, 0x5b, 0x0e, 0xf7, 0xdb, 0x3e, 0x40, 0x8f, 0x0b, 0xd3, 0x60, 0x94, 0xcf, 0x02, 0x54, 0x61, - 0xd1, 0x94, 0x2e, 0x1d, 0xfc, 0xdf, 0xf5, 0x0b, 0xa3, 0x2b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, - 0xd5, 0x39, 0x32, 0x09, 0xf9, 0x09, 0x00, 0x00, + // 1055 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x95, 0x51, 0x73, 0xdb, 0x44, + 0x10, 0xc7, 0x23, 0xc9, 0x96, 0xec, 0x73, 0x12, 0xcc, 0x4d, 0x4a, 0x15, 0x13, 0x40, 0x63, 0x4a, + 0x11, 0x85, 0xba, 0x83, 0xe2, 0xf1, 0x30, 0x85, 0x97, 0xa4, 0x31, 0x94, 0x81, 0x94, 0x99, 0x4b, + 0x43, 0x1f, 0x3d, 0x72, 0x7c, 0x71, 0x55, 0x64, 0x9d, 0xe7, 0xee, 0x44, 0xea, 0x81, 0x87, 0x3c, + 0xf3, 0xcc, 0x57, 0x80, 0x8f, 0xc0, 0x27, 0xe2, 0x83, 0x74, 0x76, 0x4f, 0xb2, 0x12, 0x3b, 0x7e, + 0x8a, 0xf7, 0xf6, 0xbf, 0xff, 0x9c, 0x7e, 0xb7, 0x77, 0x4b, 0xa8, 0xe6, 0x4a, 0x8f, 0xc4, 0xf8, + 0x0d, 0xbf, 0xd0, 0xaa, 0x37, 0x97, 0x42, 0x0b, 0xea, 0xbe, 0x51, 0x22, 0x9b, 0x8f, 0x3b, 0xfb, + 0x53, 0x21, 0xa6, 0x29, 0x7f, 0x82, 0xab, 0xe3, 0xfc, 0xf2, 0x49, 0x9c, 0x2d, 0x8c, 0xa4, 0xf3, + 0xf1, 0x6a, 0x6a, 0x92, 0xcb, 0x58, 0x27, 0x22, 0x2b, 0xf2, 0x07, 0xab, 0x79, 0xa5, 0x65, 0x7e, + 0xa1, 0x8b, 0xec, 0x27, 0xab, 0x59, 0x9d, 0xcc, 0xb8, 0xd2, 0xf1, 0x6c, 0xbe, 0xc9, 0xfe, 0x4a, + 0xc6, 0xf3, 0x39, 0x97, 0xc5, 0x0e, 0xbb, 0xff, 0xd8, 0xc4, 0x3d, 0x4b, 0x66, 0xf3, 0x94, 0xd3, + 0x7b, 0xc4, 0x15, 0xa3, 0xb1, 0x10, 0xa9, 0x6f, 0x05, 0x56, 0xd8, 0x60, 0x75, 0x71, 0x2c, 0x44, + 0x4a, 0xef, 0x13, 0x4f, 0x8c, 0x92, 0x4c, 0x1f, 0x46, 0xbe, 0x1d, 0x58, 0x61, 0x9d, 0xb9, 0xe2, + 0x47, 0x88, 0x96, 0x89, 0x41, 0xdf, 0x77, 0x02, 0x2b, 0x74, 0x4c, 0x62, 0xd0, 0xa7, 0xfb, 0xa4, + 0x21, 0x46, 0xb9, 0x29, 0xa9, 0x05, 0x56, 0xb8, 0xc3, 0x3c, 0x71, 0x8e, 0x61, 0x95, 0x1a, 0xf4, + 0xfd, 0x7a, 0x60, 0x85, 0xb5, 0x22, 0x55, 0x56, 0x29, 0x53, 0xe5, 0x06, 0x56, 0xf8, 0x3e, 0xf3, + 0xc4, 0xd9, 0x8d, 0x2a, 0x65, 0xaa, 0xbc, 0xc0, 0x0a, 0x69, 0x91, 0x1a, 0xf4, 0xcd, 0x26, 0x2e, + 0x53, 0x11, 0x6b, 0xbf, 0x11, 0x58, 0xa1, 0xcd, 0x5c, 0xf1, 0x3d, 0x44, 0xa6, 0x66, 0x22, 0xf2, + 0x71, 0xca, 0xfd, 0x66, 0x60, 0x85, 0x16, 0xf3, 0xc4, 0x09, 0x86, 0x85, 0x9d, 0x96, 0x49, 0x36, + 0xf5, 0x49, 0x60, 0x85, 0x4d, 0xb0, 0xc3, 0xd0, 0xd8, 0x8d, 0x17, 0x9a, 0x2b, 0xbf, 0x15, 0x58, + 0xe1, 0x36, 0x73, 0xc5, 0x31, 0x44, 0xdd, 0x7f, 0x6d, 0xe2, 0x31, 0x3e, 0xe7, 0xb1, 0x56, 0x00, + 0x4a, 0x96, 0xa0, 0x1c, 0x00, 0x25, 0x4b, 0x50, 0x72, 0x09, 0xca, 0x01, 0x50, 0x72, 0x09, 0x4a, + 0x2e, 0x41, 0x39, 0x00, 0x4a, 0x2e, 0x41, 0xc9, 0x0a, 0x94, 0x03, 0xa0, 0x64, 0x05, 0x4a, 0x56, + 0xa0, 0x1c, 0x00, 0x25, 0x2b, 0x50, 0xb2, 0x02, 0xe5, 0x00, 0x28, 0x79, 0x76, 0xa3, 0x6a, 0x09, + 0xca, 0x01, 0x50, 0xb2, 0x02, 0x25, 0x97, 0xa0, 0x1c, 0x00, 0x25, 0x97, 0xa0, 0x64, 0x05, 0xca, + 0x01, 0x50, 0xb2, 0x02, 0x25, 0x2b, 0x50, 0x0e, 0x80, 0x92, 0x15, 0x28, 0xb9, 0x04, 0xe5, 0x00, + 0x28, 0x69, 0x40, 0xfd, 0x67, 0x13, 0xf7, 0x55, 0x32, 0x99, 0x72, 0x4d, 0x1f, 0x91, 0xfa, 0x85, + 0x48, 0x85, 0xc4, 0x7e, 0xda, 0x8d, 0xf6, 0x7a, 0xe6, 0x36, 0xf4, 0x4c, 0xba, 0xf7, 0x0c, 0x72, + 0xcc, 0x48, 0xe8, 0x63, 0xf0, 0x33, 0x6a, 0x80, 0xb7, 0x49, 0xed, 0x4a, 0xfc, 0x4b, 0x1f, 0x12, + 0x57, 0x61, 0xd7, 0xe2, 0x01, 0xb6, 0xa2, 0xdd, 0x52, 0x6d, 0x7a, 0x99, 0x15, 0x59, 0xfa, 0x85, + 0x01, 0x82, 0x4a, 0xd8, 0xe7, 0xba, 0x12, 0x00, 0x15, 0x52, 0x4f, 0x9a, 0x03, 0xf6, 0xf7, 0xd0, + 0xf3, 0xbd, 0x52, 0x59, 0x9c, 0x3b, 0x2b, 0xf3, 0xf4, 0x2b, 0xd2, 0x94, 0xa3, 0x52, 0x7c, 0x0f, + 0x6d, 0xd7, 0xc4, 0x0d, 0x59, 0xfc, 0xea, 0x7e, 0x46, 0xea, 0x66, 0xd3, 0x1e, 0x71, 0xd8, 0xf0, + 0xa4, 0xbd, 0x45, 0x9b, 0xa4, 0xfe, 0x03, 0x1b, 0x0e, 0x5f, 0xb4, 0x2d, 0xda, 0x20, 0xb5, 0xe3, + 0x9f, 0xcf, 0x87, 0x6d, 0xbb, 0xfb, 0xb7, 0x4d, 0x6a, 0xa7, 0xf1, 0x5c, 0xd1, 0x6f, 0x49, 0x6b, + 0x66, 0xda, 0x05, 0xd8, 0x63, 0x8f, 0xb5, 0xa2, 0x0f, 0x4b, 0x7f, 0x90, 0xf4, 0x4e, 0xb1, 0x7f, + 0xce, 0xb4, 0x1c, 0x66, 0x5a, 0x2e, 0x58, 0x73, 0x56, 0xc6, 0xf4, 0x88, 0xec, 0xcc, 0xb0, 0x37, + 0xcb, 0xaf, 0xb6, 0xb1, 0xfc, 0xa3, 0xdb, 0xe5, 0xd0, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x6b, 0x56, + 0xad, 0x74, 0xbe, 0x23, 0xbb, 0xb7, 0xfd, 0x69, 0x9b, 0x38, 0xbf, 0xf1, 0x05, 0x1e, 0xa3, 0xc3, + 0xe0, 0x27, 0xdd, 0x23, 0xf5, 0xdf, 0xe3, 0x34, 0xe7, 0xf8, 0x24, 0x34, 0x99, 0x09, 0x9e, 0xda, + 0xdf, 0x58, 0x9d, 0x17, 0xa4, 0xbd, 0x6a, 0x7f, 0xb3, 0xbe, 0x61, 0xea, 0x1f, 0xdc, 0xac, 0x5f, + 0x3f, 0x94, 0xca, 0xaf, 0xfb, 0x97, 0x45, 0xb6, 0x4f, 0xd5, 0xf4, 0x55, 0xa2, 0x5f, 0xff, 0x92, + 0x71, 0x71, 0x49, 0x3f, 0x20, 0x75, 0x9d, 0xe8, 0x94, 0xa3, 0x5d, 0xf3, 0xf9, 0x16, 0x33, 0x21, + 0xf5, 0x89, 0xab, 0xe2, 0x34, 0x96, 0x0b, 0xf4, 0x74, 0x9e, 0x6f, 0xb1, 0x22, 0xa6, 0x1d, 0xe2, + 0x3d, 0x13, 0x39, 0xec, 0x04, 0x1f, 0x2a, 0xa8, 0xf1, 0x2e, 0xcc, 0x02, 0xfd, 0x94, 0x6c, 0xbf, + 0x16, 0x33, 0x3e, 0x8a, 0x27, 0x13, 0xc9, 0x95, 0xc2, 0xf7, 0x0a, 0x04, 0x2d, 0x58, 0x3d, 0x32, + 0x8b, 0xc7, 0x1e, 0xa9, 0xe7, 0x59, 0x22, 0xb2, 0xee, 0x43, 0x52, 0x63, 0x3c, 0x4e, 0xab, 0xcf, + 0xb7, 0xf0, 0x65, 0x31, 0xc1, 0xa3, 0x46, 0x63, 0xd2, 0xbe, 0xbe, 0xbe, 0xbe, 0xb6, 0xbb, 0x57, + 0xf0, 0x1f, 0xe1, 0x4b, 0xde, 0xd2, 0x03, 0xd2, 0x4c, 0x66, 0xf1, 0x34, 0xc9, 0x60, 0x67, 0x46, + 0x5e, 0x2d, 0x54, 0x25, 0xd1, 0x09, 0xd9, 0x95, 0x3c, 0x4e, 0x47, 0xfc, 0xad, 0xe6, 0x99, 0x4a, + 0x44, 0x46, 0xb7, 0xab, 0x96, 0x8a, 0x53, 0xff, 0x8f, 0xdb, 0x3d, 0x59, 0xd8, 0xb3, 0x1d, 0x28, + 0x1a, 0x96, 0x35, 0xdd, 0xff, 0x6b, 0x84, 0xfc, 0x94, 0x89, 0xab, 0xec, 0xe5, 0x62, 0xce, 0x15, + 0x7d, 0x40, 0xec, 0x38, 0xf3, 0x77, 0xb1, 0x74, 0xaf, 0x67, 0x46, 0x41, 0xaf, 0x1c, 0x05, 0xbd, + 0xa3, 0x6c, 0xc1, 0xec, 0x38, 0xa3, 0x5f, 0x12, 0x67, 0x92, 0x9b, 0x5b, 0xda, 0x8a, 0xf6, 0xd7, + 0x64, 0x27, 0xc5, 0x40, 0x62, 0xa0, 0xa2, 0x9f, 0x13, 0x5b, 0x69, 0x7f, 0x1b, 0xb5, 0xf7, 0xd7, + 0xb4, 0x67, 0x38, 0x9c, 0x98, 0xad, 0xe0, 0xf6, 0xdb, 0x5a, 0x15, 0xe7, 0xdb, 0x59, 0x13, 0xbe, + 0x2c, 0xe7, 0x14, 0xb3, 0xb5, 0xa2, 0x3d, 0xe2, 0x4c, 0xc6, 0x29, 0x9e, 0x4e, 0x2b, 0x3a, 0x58, + 0xdf, 0x01, 0x3e, 0x47, 0xbf, 0x02, 0x64, 0x06, 0x42, 0xfa, 0x98, 0x38, 0x97, 0xa9, 0xc6, 0xc3, + 0x82, 0xab, 0xb1, 0xaa, 0xc7, 0x87, 0xad, 0x90, 0x5f, 0xa6, 0x1a, 0xe4, 0x49, 0x31, 0x70, 0xee, + 0x92, 0x63, 0xb3, 0x17, 0xf2, 0x64, 0xd0, 0x87, 0xdd, 0xe4, 0x83, 0x3e, 0x0e, 0xa1, 0xbb, 0x76, + 0x73, 0x7e, 0x53, 0x9f, 0x0f, 0xfa, 0x68, 0x7f, 0x18, 0xe1, 0x64, 0xda, 0x60, 0x7f, 0x18, 0x95, + 0xf6, 0x87, 0x11, 0xda, 0x1f, 0x46, 0x38, 0xae, 0x36, 0xd9, 0x2f, 0xf5, 0x39, 0xea, 0x6b, 0x38, + 0x6c, 0x9a, 0x1b, 0x50, 0xc2, 0x6d, 0x33, 0x72, 0xd4, 0x81, 0x3f, 0xbc, 0x1b, 0x64, 0x83, 0xbf, + 0x79, 0xc0, 0x0b, 0x7f, 0xa5, 0x25, 0xfd, 0x9a, 0xd4, 0xab, 0x89, 0x77, 0xd7, 0x07, 0xe0, 0xc3, + 0x6e, 0x0a, 0x8c, 0xf2, 0x69, 0x40, 0x6a, 0x59, 0x3c, 0xe3, 0x2b, 0x2d, 0xfa, 0x27, 0xbe, 0x05, + 0x98, 0x79, 0x17, 0x00, 0x00, 0xff, 0xff, 0xda, 0x8b, 0x4a, 0x7a, 0x0e, 0x09, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto index 0d2fc1fad9..d1934a0742 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto @@ -54,16 +54,6 @@ message Simple { optional bytes o_bytes = 11; } -// Test message for holding special non-finites primitives. -message NonFinites { - optional float f_nan = 1; - optional float f_pinf = 2; - optional float f_ninf = 3; - optional double d_nan = 4; - optional double d_pinf = 5; - optional double d_ninf = 6; -} - // Test message for holding repeated primitives. message Repeats { repeated bool r_bool = 1; @@ -132,8 +122,6 @@ message KnownTypes { optional google.protobuf.Duration dur = 1; optional google.protobuf.Struct st = 12; optional google.protobuf.Timestamp ts = 2; - optional google.protobuf.ListValue lv = 15; - optional google.protobuf.Value val = 16; optional google.protobuf.DoubleValue dbl = 3; optional google.protobuf.FloatValue flt = 4; diff --git a/vendor/github.com/golang/protobuf/proto/decode_test.go b/vendor/github.com/golang/protobuf/proto/decode_test.go index 2c4c31d127..b1f1304493 100644 --- a/vendor/github.com/golang/protobuf/proto/decode_test.go +++ b/vendor/github.com/golang/protobuf/proto/decode_test.go @@ -29,8 +29,6 @@ // (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 go1.7 - package proto_test import ( diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go index 8b84d1b22d..68b9b30cfa 100644 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ b/vendor/github.com/golang/protobuf/proto/encode.go @@ -174,11 +174,11 @@ func sizeFixed32(x uint64) int { // 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((x << 1) ^ uint64((int64(x) >> 63))) + return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } func sizeZigzag64(x uint64) int { - return sizeVarint((x << 1) ^ uint64((int64(x) >> 63))) + return sizeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } // EncodeZigzag32 writes a zigzag-encoded 32-bit integer @@ -1075,17 +1075,10 @@ func (o *Buffer) enc_map(p *Properties, base structPointer) error { func (o *Buffer) enc_exts(p *Properties, base structPointer) error { exts := structPointer_Extensions(base, p.field) - - v, mu := exts.extensionsRead() - if v == nil { - return nil - } - - mu.Lock() - defer mu.Unlock() - if err := encodeExtensionsMap(v); err != nil { + if err := encodeExtensions(exts); err != nil { return err } + v, _ := exts.extensionsRead() return o.enc_map_body(v) } diff --git a/vendor/github.com/golang/protobuf/proto/encode_test.go b/vendor/github.com/golang/protobuf/proto/encode_test.go index a7209475f1..0b36a0e9f6 100644 --- a/vendor/github.com/golang/protobuf/proto/encode_test.go +++ b/vendor/github.com/golang/protobuf/proto/encode_test.go @@ -29,8 +29,6 @@ // (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 go1.7 - package proto_test import ( diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go index eaad218312..6b9b363746 100644 --- a/vendor/github.com/golang/protobuf/proto/extensions.go +++ b/vendor/github.com/golang/protobuf/proto/extensions.go @@ -154,7 +154,6 @@ type ExtensionDesc struct { Field int32 // field number Name string // fully-qualified name of extension, for text formatting Tag string // protobuf tag style - Filename string // name of the file in which the extension is defined } func (ed *ExtensionDesc) repeated() bool { diff --git a/vendor/github.com/golang/protobuf/proto/extensions_test.go b/vendor/github.com/golang/protobuf/proto/extensions_test.go index b6d9114c56..403d7c65ea 100644 --- a/vendor/github.com/golang/protobuf/proto/extensions_test.go +++ b/vendor/github.com/golang/protobuf/proto/extensions_test.go @@ -40,7 +40,6 @@ import ( "github.com/golang/protobuf/proto" pb "github.com/golang/protobuf/proto/testdata" - "golang.org/x/sync/errgroup" ) func TestGetExtensionsWithMissingExtensions(t *testing.T) { @@ -507,30 +506,3 @@ func TestClearAllExtensions(t *testing.T) { t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m)) } } - -func TestMarshalRace(t *testing.T) { - // unregistered extension - desc := &proto.ExtensionDesc{ - ExtendedType: (*pb.MyMessage)(nil), - ExtensionType: (*bool)(nil), - Field: 101010100, - Name: "emptyextension", - Tag: "varint,0,opt", - } - - m := &pb.MyMessage{Count: proto.Int32(4)} - if err := proto.SetExtension(m, desc, proto.Bool(true)); err != nil { - t.Errorf("proto.SetExtension(m, desc, true): got error %q, want nil", err) - } - - var g errgroup.Group - for n := 3; n > 0; n-- { - g.Go(func() error { - _, err := proto.Marshal(m) - return err - }) - } - if err := g.Wait(); err != nil { - t.Fatal(err) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index 1c225504a0..ac4ddbc075 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -73,6 +73,7 @@ for a protocol buffer variable v: 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. diff --git a/vendor/github.com/golang/protobuf/proto/map_test.go b/vendor/github.com/golang/protobuf/proto/map_test.go deleted file mode 100644 index 313e879245..0000000000 --- a/vendor/github.com/golang/protobuf/proto/map_test.go +++ /dev/null @@ -1,46 +0,0 @@ -package proto_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/proto" - ppb "github.com/golang/protobuf/proto/proto3_proto" -) - -func marshalled() []byte { - m := &ppb.IntMaps{} - for i := 0; i < 1000; i++ { - m.Maps = append(m.Maps, &ppb.IntMap{ - Rtt: map[int32]int32{1: 2}, - }) - } - b, err := proto.Marshal(m) - if err != nil { - panic(fmt.Sprintf("Can't marshal %+v: %v", m, err)) - } - return b -} - -func BenchmarkConcurrentMapUnmarshal(b *testing.B) { - in := marshalled() - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - var out ppb.IntMaps - if err := proto.Unmarshal(in, &out); err != nil { - b.Errorf("Can't unmarshal ppb.IntMaps: %v", err) - } - } - }) -} - -func BenchmarkSequentialMapUnmarshal(b *testing.B) { - in := marshalled() - b.ResetTimer() - for i := 0; i < b.N; i++ { - var out ppb.IntMaps - if err := proto.Unmarshal(in, &out); err != nil { - b.Errorf("Can't unmarshal ppb.IntMaps: %v", err) - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go index cc4d0489f1..19383efc5f 100644 --- a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go +++ b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go @@ -12,8 +12,6 @@ It has these top-level messages: Message Nested MessageWithMap - IntMap - IntMaps */ package proto3_proto @@ -30,9 +28,7 @@ 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. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion1 type Message_Humour int32 @@ -69,10 +65,10 @@ type Message struct { ResultCount int64 `protobuf:"varint,7,opt,name=result_count,json=resultCount" json:"result_count,omitempty"` TrueScotsman bool `protobuf:"varint,8,opt,name=true_scotsman,json=trueScotsman" json:"true_scotsman,omitempty"` Score float32 `protobuf:"fixed32,9,opt,name=score" json:"score,omitempty"` - Key []uint64 `protobuf:"varint,5,rep,packed,name=key" json:"key,omitempty"` - ShortKey []int32 `protobuf:"varint,19,rep,packed,name=short_key,json=shortKey" json:"short_key,omitempty"` + Key []uint64 `protobuf:"varint,5,rep,name=key" json:"key,omitempty"` + ShortKey []int32 `protobuf:"varint,19,rep,name=short_key,json=shortKey" json:"short_key,omitempty"` Nested *Nested `protobuf:"bytes,6,opt,name=nested" json:"nested,omitempty"` - RFunny []Message_Humour `protobuf:"varint,16,rep,packed,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"` + RFunny []Message_Humour `protobuf:"varint,16,rep,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"` Terrain map[string]*Nested `protobuf:"bytes,10,rep,name=terrain" json:"terrain,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Proto2Field *testdata.SubDefaults `protobuf:"bytes,11,opt,name=proto2_field,json=proto2Field" json:"proto2_field,omitempty"` Proto2Value map[string]*testdata.SubDefaults `protobuf:"bytes,13,rep,name=proto2_value,json=proto2Value" json:"proto2_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -87,69 +83,6 @@ func (m *Message) String() string { return proto.CompactTextString(m) func (*Message) ProtoMessage() {} func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (m *Message) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Message) GetHilarity() Message_Humour { - if m != nil { - return m.Hilarity - } - return Message_UNKNOWN -} - -func (m *Message) GetHeightInCm() uint32 { - if m != nil { - return m.HeightInCm - } - return 0 -} - -func (m *Message) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func (m *Message) GetResultCount() int64 { - if m != nil { - return m.ResultCount - } - return 0 -} - -func (m *Message) GetTrueScotsman() bool { - if m != nil { - return m.TrueScotsman - } - return false -} - -func (m *Message) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *Message) GetKey() []uint64 { - if m != nil { - return m.Key - } - return nil -} - -func (m *Message) GetShortKey() []int32 { - if m != nil { - return m.ShortKey - } - return nil -} - func (m *Message) GetNested() *Nested { if m != nil { return m.Nested @@ -157,13 +90,6 @@ func (m *Message) GetNested() *Nested { return nil } -func (m *Message) GetRFunny() []Message_Humour { - if m != nil { - return m.RFunny - } - return nil -} - func (m *Message) GetTerrain() map[string]*Nested { if m != nil { return m.Terrain @@ -223,20 +149,6 @@ func (m *Nested) String() string { return proto.CompactTextString(m) func (*Nested) ProtoMessage() {} func (*Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } -func (m *Nested) GetBunny() string { - if m != nil { - return m.Bunny - } - return "" -} - -func (m *Nested) GetCute() bool { - if m != nil { - return m.Cute - } - return false -} - type MessageWithMap struct { ByteMapping map[bool][]byte `protobuf:"bytes,1,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"` } @@ -253,95 +165,55 @@ func (m *MessageWithMap) GetByteMapping() map[bool][]byte { return nil } -type IntMap struct { - Rtt map[int32]int32 `protobuf:"bytes,1,rep,name=rtt" json:"rtt,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *IntMap) Reset() { *m = IntMap{} } -func (m *IntMap) String() string { return proto.CompactTextString(m) } -func (*IntMap) ProtoMessage() {} -func (*IntMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *IntMap) GetRtt() map[int32]int32 { - if m != nil { - return m.Rtt - } - return nil -} - -type IntMaps struct { - Maps []*IntMap `protobuf:"bytes,1,rep,name=maps" json:"maps,omitempty"` -} - -func (m *IntMaps) Reset() { *m = IntMaps{} } -func (m *IntMaps) String() string { return proto.CompactTextString(m) } -func (*IntMaps) ProtoMessage() {} -func (*IntMaps) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *IntMaps) GetMaps() []*IntMap { - if m != nil { - return m.Maps - } - return nil -} - func init() { proto.RegisterType((*Message)(nil), "proto3_proto.Message") proto.RegisterType((*Nested)(nil), "proto3_proto.Nested") proto.RegisterType((*MessageWithMap)(nil), "proto3_proto.MessageWithMap") - proto.RegisterType((*IntMap)(nil), "proto3_proto.IntMap") - proto.RegisterType((*IntMaps)(nil), "proto3_proto.IntMaps") proto.RegisterEnum("proto3_proto.Message_Humour", Message_Humour_name, Message_Humour_value) } -func init() { proto.RegisterFile("proto3_proto/proto3.proto", fileDescriptor0) } - var fileDescriptor0 = []byte{ - // 733 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x6d, 0x6f, 0xf3, 0x34, - 0x14, 0x25, 0x4d, 0x5f, 0xd2, 0x9b, 0x74, 0x0b, 0x5e, 0x91, 0xbc, 0x02, 0x52, 0x28, 0x12, 0x8a, - 0x78, 0x49, 0xa1, 0xd3, 0xd0, 0x84, 0x10, 0x68, 0x1b, 0x9b, 0xa8, 0xd6, 0x95, 0xca, 0xdd, 0x98, - 0xf8, 0x14, 0xa5, 0xad, 0xdb, 0x46, 0x34, 0x4e, 0x49, 0x1c, 0xa4, 0xfc, 0x1d, 0xfe, 0x28, 0x8f, - 0x6c, 0xa7, 0x5d, 0x36, 0x65, 0xcf, 0xf3, 0x29, 0xf6, 0xf1, 0xb9, 0xf7, 0x9c, 0x1c, 0x5f, 0xc3, - 0xe9, 0x2e, 0x89, 0x79, 0x7c, 0xe6, 0xcb, 0xcf, 0x40, 0x6d, 0x3c, 0xf9, 0x41, 0x56, 0xf9, 0xa8, - 0x77, 0xba, 0x8e, 0xe3, 0xf5, 0x96, 0x2a, 0xca, 0x3c, 0x5b, 0x0d, 0x02, 0x96, 0x2b, 0x62, 0xef, - 0x84, 0xd3, 0x94, 0x2f, 0x03, 0x1e, 0x0c, 0xc4, 0x42, 0x81, 0xfd, 0xff, 0x5b, 0xd0, 0xba, 0xa7, - 0x69, 0x1a, 0xac, 0x29, 0x42, 0x50, 0x67, 0x41, 0x44, 0xb1, 0xe6, 0x68, 0x6e, 0x9b, 0xc8, 0x35, - 0xba, 0x00, 0x63, 0x13, 0x6e, 0x83, 0x24, 0xe4, 0x39, 0xae, 0x39, 0x9a, 0x7b, 0x34, 0xfc, 0xcc, - 0x2b, 0x0b, 0x7a, 0x45, 0xb1, 0xf7, 0x7b, 0x16, 0xc5, 0x59, 0x42, 0x0e, 0x6c, 0xe4, 0x80, 0xb5, - 0xa1, 0xe1, 0x7a, 0xc3, 0xfd, 0x90, 0xf9, 0x8b, 0x08, 0xeb, 0x8e, 0xe6, 0x76, 0x08, 0x28, 0x6c, - 0xc4, 0xae, 0x23, 0xa1, 0x27, 0xec, 0xe0, 0xba, 0xa3, 0xb9, 0x16, 0x91, 0x6b, 0xf4, 0x05, 0x58, - 0x09, 0x4d, 0xb3, 0x2d, 0xf7, 0x17, 0x71, 0xc6, 0x38, 0x6e, 0x39, 0x9a, 0xab, 0x13, 0x53, 0x61, - 0xd7, 0x02, 0x42, 0x5f, 0x42, 0x87, 0x27, 0x19, 0xf5, 0xd3, 0x45, 0xcc, 0xd3, 0x28, 0x60, 0xd8, - 0x70, 0x34, 0xd7, 0x20, 0x96, 0x00, 0x67, 0x05, 0x86, 0xba, 0xd0, 0x48, 0x17, 0x71, 0x42, 0x71, - 0xdb, 0xd1, 0xdc, 0x1a, 0x51, 0x1b, 0x64, 0x83, 0xfe, 0x37, 0xcd, 0x71, 0xc3, 0xd1, 0xdd, 0x3a, - 0x11, 0x4b, 0xf4, 0x29, 0xb4, 0xd3, 0x4d, 0x9c, 0x70, 0x5f, 0xe0, 0x27, 0x8e, 0xee, 0x36, 0x88, - 0x21, 0x81, 0x3b, 0x9a, 0xa3, 0x6f, 0xa1, 0xc9, 0x68, 0xca, 0xe9, 0x12, 0x37, 0x1d, 0xcd, 0x35, - 0x87, 0xdd, 0x97, 0xbf, 0x3e, 0x91, 0x67, 0xa4, 0xe0, 0xa0, 0x73, 0x68, 0x25, 0xfe, 0x2a, 0x63, - 0x2c, 0xc7, 0xb6, 0xa3, 0x7f, 0x30, 0xa9, 0x66, 0x72, 0x2b, 0xb8, 0xe8, 0x67, 0x68, 0x71, 0x9a, - 0x24, 0x41, 0xc8, 0x30, 0x38, 0xba, 0x6b, 0x0e, 0xfb, 0xd5, 0x65, 0x0f, 0x8a, 0x74, 0xc3, 0x78, - 0x92, 0x93, 0x7d, 0x09, 0xba, 0x00, 0x75, 0xff, 0x43, 0x7f, 0x15, 0xd2, 0xed, 0x12, 0x9b, 0xd2, - 0xe8, 0x27, 0xde, 0xfe, 0xae, 0xbd, 0x59, 0x36, 0xff, 0x8d, 0xae, 0x82, 0x6c, 0xcb, 0x53, 0x62, - 0x2a, 0xea, 0xad, 0x60, 0xa2, 0xd1, 0xa1, 0xf2, 0xdf, 0x60, 0x9b, 0x51, 0xdc, 0x91, 0xe2, 0x5f, - 0x55, 0x8b, 0x4f, 0x25, 0xf3, 0x4f, 0x41, 0x54, 0x06, 0x8a, 0x56, 0x12, 0x41, 0xdf, 0x83, 0x11, - 0xb0, 0x9c, 0x6f, 0x42, 0xb6, 0xc6, 0x47, 0x45, 0x52, 0x6a, 0x0e, 0xbd, 0xfd, 0x1c, 0x7a, 0x97, - 0x2c, 0x27, 0x07, 0x16, 0x3a, 0x07, 0x33, 0x0a, 0x58, 0xee, 0xcb, 0x5d, 0x8a, 0x8f, 0xa5, 0x76, - 0x75, 0x11, 0x08, 0xe2, 0x83, 0xe4, 0xa1, 0x73, 0x80, 0x34, 0x9b, 0x47, 0xca, 0x14, 0xfe, 0xb8, - 0xf8, 0xd7, 0x2a, 0xc7, 0xa4, 0x44, 0x44, 0x3f, 0x80, 0xb1, 0xd8, 0x84, 0xdb, 0x65, 0x42, 0x19, - 0x46, 0x52, 0xea, 0x8d, 0xa2, 0x03, 0xad, 0x37, 0x05, 0xab, 0x1c, 0xf8, 0x7e, 0x72, 0xd4, 0xd3, - 0x90, 0x93, 0xf3, 0x35, 0x34, 0x54, 0x70, 0xb5, 0xf7, 0xcc, 0x86, 0xa2, 0xfc, 0x54, 0xbb, 0xd0, - 0x7a, 0x8f, 0x60, 0xbf, 0x4e, 0xb1, 0xa2, 0xeb, 0x37, 0x2f, 0xbb, 0xbe, 0x71, 0x91, 0xcf, 0x6d, - 0xfb, 0xbf, 0x42, 0x53, 0x0d, 0x14, 0x32, 0xa1, 0xf5, 0x38, 0xb9, 0x9b, 0xfc, 0xf1, 0x34, 0xb1, - 0x3f, 0x42, 0x06, 0xd4, 0xa7, 0x8f, 0x93, 0x99, 0xad, 0xa1, 0x0e, 0xb4, 0x67, 0xe3, 0xcb, 0xe9, - 0xec, 0x61, 0x74, 0x7d, 0x67, 0xd7, 0xd0, 0x31, 0x98, 0x57, 0xa3, 0xf1, 0xd8, 0xbf, 0xba, 0x1c, - 0x8d, 0x6f, 0xfe, 0xb2, 0xf5, 0xfe, 0x10, 0x9a, 0xca, 0xac, 0x78, 0x33, 0x73, 0x39, 0xbe, 0xca, - 0x8f, 0xda, 0x88, 0x57, 0xba, 0xc8, 0xb8, 0x32, 0x64, 0x10, 0xb9, 0xee, 0xff, 0xa7, 0xc1, 0x51, - 0x91, 0xd9, 0x53, 0xc8, 0x37, 0xf7, 0xc1, 0x0e, 0x4d, 0xc1, 0x9a, 0xe7, 0x9c, 0xfa, 0x51, 0xb0, - 0xdb, 0x89, 0x39, 0xd0, 0x64, 0xce, 0xdf, 0x55, 0xe6, 0x5c, 0xd4, 0x78, 0x57, 0x39, 0xa7, 0xf7, - 0x8a, 0x5f, 0x4c, 0xd5, 0xfc, 0x19, 0xe9, 0xfd, 0x02, 0xf6, 0x6b, 0x42, 0x39, 0x30, 0x43, 0x05, - 0xd6, 0x2d, 0x07, 0x66, 0x95, 0x93, 0xf9, 0x07, 0x9a, 0x23, 0xc6, 0x85, 0xb7, 0x01, 0xe8, 0x09, - 0xe7, 0x85, 0xa5, 0xcf, 0x5f, 0x5a, 0x52, 0x14, 0x8f, 0x70, 0xae, 0x2c, 0x08, 0x66, 0xef, 0x47, - 0x30, 0xf6, 0x40, 0x59, 0xb2, 0x51, 0x21, 0xd9, 0x28, 0x4b, 0x9e, 0x41, 0x4b, 0xf5, 0x4b, 0x91, - 0x0b, 0xf5, 0x28, 0xd8, 0xa5, 0x85, 0x68, 0xb7, 0x4a, 0x94, 0x48, 0xc6, 0xbc, 0xa9, 0x8e, 0xde, - 0x05, 0x00, 0x00, 0xff, 0xff, 0x75, 0x38, 0xad, 0x84, 0xe4, 0x05, 0x00, 0x00, + // 669 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x6d, 0x6f, 0xd3, 0x3a, + 0x18, 0xbd, 0x7d, 0x4f, 0x9f, 0xa4, 0x5b, 0xae, 0xb7, 0x2b, 0x79, 0xbd, 0x7c, 0x18, 0x45, 0x42, + 0x13, 0x2f, 0x19, 0x14, 0x21, 0x4d, 0x08, 0x81, 0xb6, 0xb1, 0x89, 0x6a, 0x5d, 0xa9, 0xdc, 0x8d, + 0x89, 0x4f, 0x51, 0xd2, 0xba, 0x6d, 0x44, 0xe3, 0x54, 0x89, 0x83, 0x94, 0xbf, 0xc3, 0x1f, 0x05, + 0xbf, 0xa4, 0x5d, 0x36, 0x75, 0xf0, 0x29, 0xf6, 0x79, 0xce, 0xf1, 0xf3, 0xe4, 0xf8, 0x18, 0xf6, + 0x96, 0x71, 0xc4, 0xa3, 0x37, 0xae, 0xfa, 0x1c, 0xea, 0x8d, 0xa3, 0x3e, 0xc8, 0x2a, 0x96, 0xda, + 0x7b, 0xb3, 0x28, 0x9a, 0x2d, 0xa8, 0xa6, 0xf8, 0xe9, 0xf4, 0xd0, 0x63, 0x99, 0x26, 0xb6, 0x77, + 0x38, 0x4d, 0xf8, 0xc4, 0xe3, 0xde, 0xa1, 0x5c, 0x68, 0xb0, 0xf3, 0xab, 0x01, 0x8d, 0x4b, 0x9a, + 0x24, 0xde, 0x8c, 0x22, 0x04, 0x55, 0xe6, 0x85, 0x14, 0x97, 0xf6, 0x4b, 0x07, 0x4d, 0xa2, 0xd6, + 0xe8, 0x08, 0x8c, 0x79, 0xb0, 0xf0, 0xe2, 0x80, 0x67, 0xb8, 0x2c, 0xf0, 0xad, 0xee, 0x23, 0xa7, + 0xd8, 0xd0, 0xc9, 0xc5, 0xce, 0xe7, 0x34, 0x8c, 0xd2, 0x98, 0xac, 0xd9, 0x68, 0x1f, 0xac, 0x39, + 0x0d, 0x66, 0x73, 0xee, 0x06, 0xcc, 0x1d, 0x87, 0xb8, 0x22, 0xd4, 0x2d, 0x02, 0x1a, 0xeb, 0xb1, + 0xd3, 0x50, 0xf6, 0x93, 0xe3, 0xe0, 0xaa, 0xa8, 0x58, 0x44, 0xad, 0xd1, 0x63, 0xb0, 0x62, 0x9a, + 0xa4, 0x0b, 0xee, 0x8e, 0xa3, 0x94, 0x71, 0xdc, 0x10, 0xb5, 0x0a, 0x31, 0x35, 0x76, 0x2a, 0x21, + 0xf4, 0x04, 0x5a, 0x3c, 0x4e, 0xa9, 0x9b, 0x8c, 0x23, 0x9e, 0x84, 0x1e, 0xc3, 0x86, 0xe0, 0x18, + 0xc4, 0x92, 0xe0, 0x28, 0xc7, 0xd0, 0x2e, 0xd4, 0x44, 0x3d, 0xa6, 0xb8, 0x29, 0x8a, 0x65, 0xa2, + 0x37, 0xc8, 0x86, 0xca, 0x77, 0x9a, 0xe1, 0xda, 0x7e, 0xe5, 0xa0, 0x4a, 0xe4, 0x12, 0xfd, 0x0f, + 0xcd, 0x64, 0x1e, 0xc5, 0xdc, 0x95, 0xf8, 0x8e, 0xc0, 0x6b, 0xc4, 0x50, 0xc0, 0x85, 0x28, 0xbe, + 0x80, 0x3a, 0x13, 0x56, 0xd1, 0x09, 0xae, 0x8b, 0x53, 0xcc, 0xee, 0xee, 0xdd, 0x5f, 0x1f, 0xa8, + 0x1a, 0xc9, 0x39, 0xe8, 0x2d, 0x34, 0x62, 0x77, 0x9a, 0x32, 0x96, 0x61, 0x5b, 0x1c, 0xf4, 0x37, + 0xa7, 0xea, 0xf1, 0xb9, 0xe4, 0xa2, 0xf7, 0xd0, 0xe0, 0x34, 0x8e, 0xbd, 0x80, 0x61, 0x10, 0x32, + 0xb3, 0xdb, 0xd9, 0x2c, 0xbb, 0xd2, 0xa4, 0x33, 0xc6, 0xe3, 0x8c, 0xac, 0x24, 0xe2, 0x7e, 0xf4, + 0xfd, 0x77, 0xdd, 0x69, 0x40, 0x17, 0x13, 0x6c, 0xaa, 0x41, 0xff, 0x73, 0x56, 0x77, 0xed, 0x8c, + 0x52, 0xff, 0x13, 0x9d, 0x7a, 0xc2, 0xbd, 0x84, 0x98, 0x9a, 0x7a, 0x2e, 0x99, 0xa8, 0xb7, 0x56, + 0xfe, 0xf0, 0x16, 0x29, 0xc5, 0x2d, 0xd5, 0xfc, 0xe9, 0xe6, 0xe6, 0x43, 0xc5, 0xfc, 0x2a, 0x89, + 0x7a, 0x80, 0xfc, 0x28, 0x85, 0xa0, 0x57, 0x60, 0x88, 0x98, 0xf1, 0x79, 0xc0, 0x66, 0x78, 0x2b, + 0x77, 0x4a, 0xe7, 0xd0, 0x59, 0xe5, 0xd0, 0x39, 0x66, 0x19, 0x59, 0xb3, 0x84, 0x57, 0xa6, 0xb8, + 0xa5, 0xcc, 0x55, 0xbb, 0x04, 0x6f, 0xab, 0xde, 0x9b, 0x45, 0x20, 0x89, 0x57, 0x8a, 0x27, 0x64, + 0x90, 0xa4, 0x7e, 0xa8, 0x87, 0xc2, 0xff, 0xe6, 0xff, 0xba, 0x69, 0x62, 0x52, 0x20, 0xa2, 0xd7, + 0x60, 0x8c, 0x45, 0x2e, 0x27, 0x31, 0x65, 0x18, 0xa9, 0x56, 0x0f, 0x88, 0xd6, 0xb4, 0xf6, 0x10, + 0xac, 0xa2, 0xe1, 0xab, 0xe4, 0xe8, 0xa7, 0xa1, 0x92, 0xf3, 0x0c, 0x6a, 0xda, 0xb8, 0xf2, 0x1f, + 0xb2, 0xa1, 0x29, 0xef, 0xca, 0x47, 0xa5, 0xf6, 0x35, 0xd8, 0xf7, 0x5d, 0xdc, 0x70, 0xea, 0xf3, + 0xbb, 0xa7, 0x3e, 0x70, 0x91, 0xb7, 0xc7, 0x76, 0x3e, 0x42, 0x5d, 0x07, 0x0a, 0x99, 0xd0, 0xb8, + 0x1e, 0x5c, 0x0c, 0xbe, 0xdc, 0x0c, 0xec, 0x7f, 0x90, 0x01, 0xd5, 0xe1, 0xf5, 0x60, 0x64, 0x97, + 0x50, 0x0b, 0x9a, 0xa3, 0xfe, 0xf1, 0x70, 0x74, 0xd5, 0x3b, 0xbd, 0xb0, 0xcb, 0x68, 0x1b, 0xcc, + 0x93, 0x5e, 0xbf, 0xef, 0x9e, 0x1c, 0xf7, 0xfa, 0x67, 0xdf, 0xec, 0x4a, 0xa7, 0x0b, 0x75, 0x3d, + 0xac, 0x7c, 0x33, 0xbe, 0x8a, 0xaf, 0x9e, 0x47, 0x6f, 0xe4, 0x2b, 0x1d, 0xa7, 0x5c, 0x0f, 0x64, + 0x10, 0xb5, 0xee, 0xfc, 0x2c, 0xc1, 0x56, 0xee, 0xd9, 0x4d, 0xc0, 0xe7, 0x97, 0xde, 0x12, 0x09, + 0xc3, 0xfc, 0x8c, 0x53, 0x37, 0xf4, 0x96, 0x4b, 0x99, 0x83, 0x92, 0xf2, 0xf9, 0xe5, 0x46, 0x9f, + 0x73, 0x8d, 0x73, 0x22, 0x04, 0x97, 0x9a, 0x9f, 0xa7, 0xca, 0xbf, 0x45, 0xda, 0x1f, 0xc0, 0xbe, + 0x4f, 0x28, 0x1a, 0x66, 0x68, 0xc3, 0x76, 0x8b, 0x86, 0x59, 0x05, 0x67, 0xfc, 0xba, 0x6e, 0xfd, + 0x3b, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x40, 0x3c, 0xbe, 0x3c, 0x05, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto index 204865571b..75d5a02599 100644 --- a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto +++ b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto @@ -76,12 +76,3 @@ message Nested { message MessageWithMap { map byte_mapping = 1; } - - -message IntMap { - map rtt = 1; -} - -message IntMaps { - repeated IntMap maps = 1; -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_test.go b/vendor/github.com/golang/protobuf/proto/proto3_test.go index 735837f2de..462f8055c3 100644 --- a/vendor/github.com/golang/protobuf/proto/proto3_test.go +++ b/vendor/github.com/golang/protobuf/proto/proto3_test.go @@ -93,16 +93,6 @@ func TestRoundTripProto3(t *testing.T) { } } -func TestGettersForBasicTypesExist(t *testing.T) { - var m pb.Message - if got := m.GetNested().GetBunny(); got != "" { - t.Errorf("m.GetNested().GetBunny() = %q, want empty string", got) - } - if got := m.GetNested().GetCute(); got { - t.Errorf("m.GetNested().GetCute() = %t, want false", got) - } -} - func TestProto3SetDefaults(t *testing.T) { in := &pb.Message{ Terrain: map[string]*pb.Nested{ diff --git a/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go b/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go index e980d1a03c..85b3bdf5f0 100644 --- a/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go +++ b/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: test.proto +// DO NOT EDIT! /* Package testdata is a generated protocol buffer package. @@ -322,8 +323,8 @@ func (m *GoEnum) GetFoo() FOO { } type GoTestField struct { - Label *string `protobuf:"bytes,1,req,name=Label" json:"Label,omitempty"` - Type *string `protobuf:"bytes,2,req,name=Type" json:"Type,omitempty"` + Label *string `protobuf:"bytes,1,req,name=Label,json=label" json:"Label,omitempty"` + Type *string `protobuf:"bytes,2,req,name=Type,json=type" json:"Type,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -348,81 +349,81 @@ func (m *GoTestField) GetType() string { type GoTest struct { // Some typical parameters - Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"` - Table *string `protobuf:"bytes,2,opt,name=Table" json:"Table,omitempty"` - Param *int32 `protobuf:"varint,3,opt,name=Param" json:"Param,omitempty"` + Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,json=kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"` + Table *string `protobuf:"bytes,2,opt,name=Table,json=table" json:"Table,omitempty"` + Param *int32 `protobuf:"varint,3,opt,name=Param,json=param" json:"Param,omitempty"` // Required, repeated and optional foreign fields. - RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField" json:"RequiredField,omitempty"` - RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField" json:"RepeatedField,omitempty"` - OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField" json:"OptionalField,omitempty"` + RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` + RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField,json=repeatedField" json:"RepeatedField,omitempty"` + OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField,json=optionalField" json:"OptionalField,omitempty"` // Required fields of all basic types - F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=FBoolRequired" json:"F_Bool_required,omitempty"` - F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=FInt32Required" json:"F_Int32_required,omitempty"` - F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=FInt64Required" json:"F_Int64_required,omitempty"` - F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=FFixed32Required" json:"F_Fixed32_required,omitempty"` - F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=FFixed64Required" json:"F_Fixed64_required,omitempty"` - F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=FUint32Required" json:"F_Uint32_required,omitempty"` - F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=FUint64Required" json:"F_Uint64_required,omitempty"` - F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=FFloatRequired" json:"F_Float_required,omitempty"` - F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=FDoubleRequired" json:"F_Double_required,omitempty"` - F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=FStringRequired" json:"F_String_required,omitempty"` - F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=FBytesRequired" json:"F_Bytes_required,omitempty"` - F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=FSint32Required" json:"F_Sint32_required,omitempty"` - F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=FSint64Required" json:"F_Sint64_required,omitempty"` + F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=fBoolRequired" json:"F_Bool_required,omitempty"` + F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=fInt32Required" json:"F_Int32_required,omitempty"` + F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=fInt64Required" json:"F_Int64_required,omitempty"` + F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=fFixed32Required" json:"F_Fixed32_required,omitempty"` + F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=fFixed64Required" json:"F_Fixed64_required,omitempty"` + F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=fUint32Required" json:"F_Uint32_required,omitempty"` + F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=fUint64Required" json:"F_Uint64_required,omitempty"` + F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=fFloatRequired" json:"F_Float_required,omitempty"` + F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=fDoubleRequired" json:"F_Double_required,omitempty"` + F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=fStringRequired" json:"F_String_required,omitempty"` + F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=fBytesRequired" json:"F_Bytes_required,omitempty"` + F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=fSint32Required" json:"F_Sint32_required,omitempty"` + F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=fSint64Required" json:"F_Sint64_required,omitempty"` // Repeated fields of all basic types - F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=FBoolRepeated" json:"F_Bool_repeated,omitempty"` - F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=FInt32Repeated" json:"F_Int32_repeated,omitempty"` - F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=FInt64Repeated" json:"F_Int64_repeated,omitempty"` - F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=FFixed32Repeated" json:"F_Fixed32_repeated,omitempty"` - F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=FFixed64Repeated" json:"F_Fixed64_repeated,omitempty"` - F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=FUint32Repeated" json:"F_Uint32_repeated,omitempty"` - F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=FUint64Repeated" json:"F_Uint64_repeated,omitempty"` - F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=FFloatRepeated" json:"F_Float_repeated,omitempty"` - F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=FDoubleRepeated" json:"F_Double_repeated,omitempty"` - F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=FStringRepeated" json:"F_String_repeated,omitempty"` - F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=FBytesRepeated" json:"F_Bytes_repeated,omitempty"` - F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=FSint32Repeated" json:"F_Sint32_repeated,omitempty"` - F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=FSint64Repeated" json:"F_Sint64_repeated,omitempty"` + F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=fBoolRepeated" json:"F_Bool_repeated,omitempty"` + F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=fInt32Repeated" json:"F_Int32_repeated,omitempty"` + F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=fInt64Repeated" json:"F_Int64_repeated,omitempty"` + F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=fFixed32Repeated" json:"F_Fixed32_repeated,omitempty"` + F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=fFixed64Repeated" json:"F_Fixed64_repeated,omitempty"` + F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=fUint32Repeated" json:"F_Uint32_repeated,omitempty"` + F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=fUint64Repeated" json:"F_Uint64_repeated,omitempty"` + F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=fFloatRepeated" json:"F_Float_repeated,omitempty"` + F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=fDoubleRepeated" json:"F_Double_repeated,omitempty"` + F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=fStringRepeated" json:"F_String_repeated,omitempty"` + F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=fBytesRepeated" json:"F_Bytes_repeated,omitempty"` + F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=fSint32Repeated" json:"F_Sint32_repeated,omitempty"` + F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=fSint64Repeated" json:"F_Sint64_repeated,omitempty"` // Optional fields of all basic types - F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=FBoolOptional" json:"F_Bool_optional,omitempty"` - F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=FInt32Optional" json:"F_Int32_optional,omitempty"` - F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=FInt64Optional" json:"F_Int64_optional,omitempty"` - F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=FFixed32Optional" json:"F_Fixed32_optional,omitempty"` - F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=FFixed64Optional" json:"F_Fixed64_optional,omitempty"` - F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=FUint32Optional" json:"F_Uint32_optional,omitempty"` - F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=FUint64Optional" json:"F_Uint64_optional,omitempty"` - F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=FFloatOptional" json:"F_Float_optional,omitempty"` - F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=FDoubleOptional" json:"F_Double_optional,omitempty"` - F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=FStringOptional" json:"F_String_optional,omitempty"` - F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=FBytesOptional" json:"F_Bytes_optional,omitempty"` - F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=FSint32Optional" json:"F_Sint32_optional,omitempty"` - F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=FSint64Optional" json:"F_Sint64_optional,omitempty"` + F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=fBoolOptional" json:"F_Bool_optional,omitempty"` + F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=fInt32Optional" json:"F_Int32_optional,omitempty"` + F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=fInt64Optional" json:"F_Int64_optional,omitempty"` + F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=fFixed32Optional" json:"F_Fixed32_optional,omitempty"` + F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=fFixed64Optional" json:"F_Fixed64_optional,omitempty"` + F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=fUint32Optional" json:"F_Uint32_optional,omitempty"` + F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=fUint64Optional" json:"F_Uint64_optional,omitempty"` + F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=fFloatOptional" json:"F_Float_optional,omitempty"` + F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=fDoubleOptional" json:"F_Double_optional,omitempty"` + F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=fStringOptional" json:"F_String_optional,omitempty"` + F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=fBytesOptional" json:"F_Bytes_optional,omitempty"` + F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=fSint32Optional" json:"F_Sint32_optional,omitempty"` + F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=fSint64Optional" json:"F_Sint64_optional,omitempty"` // Default-valued fields of all basic types - F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=FBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"` - F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=FInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"` - F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=FInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"` - F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=FFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"` - F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=FFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"` - F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=FUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"` - F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=FUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"` - F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=FFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"` - F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=FDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"` - F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=FStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"` - F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=FBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"` - F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=FSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"` - F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=FSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"` + F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=fBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"` + F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=fInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"` + F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=fInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"` + F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=fFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"` + F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=fFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"` + F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=fUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"` + F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=fUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"` + F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=fFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"` + F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=fDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"` + F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=fStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"` + F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=fBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"` + F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=fSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"` + F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=fSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"` // Packed repeated fields (no string or bytes). - F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=FBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"` - F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=FInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"` - F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=FInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"` - F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=FFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"` - F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=FFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"` - F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=FUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"` - F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=FUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"` - F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=FFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"` - F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=FDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"` - F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=FSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"` - F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=FSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"` + F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=fBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"` + F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=fInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"` + F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=fInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"` + F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=fFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"` + F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=fFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"` + F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=fUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"` + F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=fUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"` + F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=fFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"` + F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=fDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"` + F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=fSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"` + F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=fSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"` Requiredgroup *GoTest_RequiredGroup `protobuf:"group,70,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"` Repeatedgroup []*GoTest_RepeatedGroup `protobuf:"group,80,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"` Optionalgroup *GoTest_OptionalGroup `protobuf:"group,90,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"` @@ -956,7 +957,7 @@ func (m *GoTest) GetOptionalgroup() *GoTest_OptionalGroup { // Required, repeated, and optional groups. type GoTest_RequiredGroup struct { - RequiredField *string `protobuf:"bytes,71,req,name=RequiredField" json:"RequiredField,omitempty"` + RequiredField *string `protobuf:"bytes,71,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -973,7 +974,7 @@ func (m *GoTest_RequiredGroup) GetRequiredField() string { } type GoTest_RepeatedGroup struct { - RequiredField *string `protobuf:"bytes,81,req,name=RequiredField" json:"RequiredField,omitempty"` + RequiredField *string `protobuf:"bytes,81,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -990,7 +991,7 @@ func (m *GoTest_RepeatedGroup) GetRequiredField() string { } type GoTest_OptionalGroup struct { - RequiredField *string `protobuf:"bytes,91,req,name=RequiredField" json:"RequiredField,omitempty"` + RequiredField *string `protobuf:"bytes,91,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -1025,7 +1026,7 @@ func (m *GoTestRequiredGroupField) GetGroup() *GoTestRequiredGroupField_Group { } type GoTestRequiredGroupField_Group struct { - Field *int32 `protobuf:"varint,2,req,name=Field" json:"Field,omitempty"` + Field *int32 `protobuf:"varint,2,req,name=Field,json=field" json:"Field,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -1526,7 +1527,6 @@ var E_Ext_More = &proto.ExtensionDesc{ Field: 103, Name: "testdata.Ext.more", Tag: "bytes,103,opt,name=more", - Filename: "test.proto", } var E_Ext_Text = &proto.ExtensionDesc{ @@ -1535,7 +1535,6 @@ var E_Ext_Text = &proto.ExtensionDesc{ Field: 104, Name: "testdata.Ext.text", Tag: "bytes,104,opt,name=text", - Filename: "test.proto", } var E_Ext_Number = &proto.ExtensionDesc{ @@ -1544,7 +1543,6 @@ var E_Ext_Number = &proto.ExtensionDesc{ Field: 105, Name: "testdata.Ext.number", Tag: "varint,105,opt,name=number", - Filename: "test.proto", } type ComplexExtension struct { @@ -1712,24 +1710,24 @@ func (m *Strings) GetBytesField() []byte { type Defaults struct { // Default-valued fields of all basic types. // Same as GoTest, but copied here to make testing easier. - F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,def=1" json:"F_Bool,omitempty"` - F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,def=32" json:"F_Int32,omitempty"` - F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,def=64" json:"F_Int64,omitempty"` - F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,def=320" json:"F_Fixed32,omitempty"` - F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,def=640" json:"F_Fixed64,omitempty"` - F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,def=3200" json:"F_Uint32,omitempty"` - F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,def=6400" json:"F_Uint64,omitempty"` - F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,def=314159" json:"F_Float,omitempty"` - F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,def=271828" json:"F_Double,omitempty"` - F_String *string `protobuf:"bytes,10,opt,name=F_String,json=FString,def=hello, \"world!\"\n" json:"F_String,omitempty"` - F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,def=Bignose" json:"F_Bytes,omitempty"` - F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,def=-32" json:"F_Sint32,omitempty"` - F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,def=-64" json:"F_Sint64,omitempty"` - F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"` + F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=fBool,def=1" json:"F_Bool,omitempty"` + F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=fInt32,def=32" json:"F_Int32,omitempty"` + F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=fInt64,def=64" json:"F_Int64,omitempty"` + F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=fFixed32,def=320" json:"F_Fixed32,omitempty"` + F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=fFixed64,def=640" json:"F_Fixed64,omitempty"` + F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=fUint32,def=3200" json:"F_Uint32,omitempty"` + F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=fUint64,def=6400" json:"F_Uint64,omitempty"` + F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=fFloat,def=314159" json:"F_Float,omitempty"` + F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=fDouble,def=271828" json:"F_Double,omitempty"` + F_String *string `protobuf:"bytes,10,opt,name=F_String,json=fString,def=hello, \"world!\"\n" json:"F_String,omitempty"` + F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=fBytes,def=Bignose" json:"F_Bytes,omitempty"` + F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=fSint32,def=-32" json:"F_Sint32,omitempty"` + F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=fSint64,def=-64" json:"F_Sint64,omitempty"` + F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=fEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"` // More fields with crazy defaults. - F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=FPinf,def=inf" json:"F_Pinf,omitempty"` - F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=FNinf,def=-inf" json:"F_Ninf,omitempty"` - F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=FNan,def=nan" json:"F_Nan,omitempty"` + F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=fPinf,def=inf" json:"F_Pinf,omitempty"` + F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=fNinf,def=-inf" json:"F_Ninf,omitempty"` + F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=fNan,def=nan" json:"F_Nan,omitempty"` // Sub-message. Sub *SubDefaults `protobuf:"bytes,18,opt,name=sub" json:"sub,omitempty"` // Redundant but explicit defaults. @@ -2178,55 +2176,55 @@ type isOneof_Tormato interface { } type Oneof_F_Bool struct { - F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,oneof"` + F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=fBool,oneof"` } type Oneof_F_Int32 struct { - F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,oneof"` + F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=fInt32,oneof"` } type Oneof_F_Int64 struct { - F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,oneof"` + F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=fInt64,oneof"` } type Oneof_F_Fixed32 struct { - F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,oneof"` + F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=fFixed32,oneof"` } type Oneof_F_Fixed64 struct { - F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,oneof"` + F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=fFixed64,oneof"` } type Oneof_F_Uint32 struct { - F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,oneof"` + F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=fUint32,oneof"` } type Oneof_F_Uint64 struct { - F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,oneof"` + F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=fUint64,oneof"` } type Oneof_F_Float struct { - F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,oneof"` + F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=fFloat,oneof"` } type Oneof_F_Double struct { - F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,oneof"` + F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=fDouble,oneof"` } type Oneof_F_String struct { - F_String string `protobuf:"bytes,10,opt,name=F_String,json=FString,oneof"` + F_String string `protobuf:"bytes,10,opt,name=F_String,json=fString,oneof"` } type Oneof_F_Bytes struct { - F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,oneof"` + F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=fBytes,oneof"` } type Oneof_F_Sint32 struct { - F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,oneof"` + F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=fSint32,oneof"` } type Oneof_F_Sint64 struct { - F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,oneof"` + F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=fSint64,oneof"` } type Oneof_F_Enum struct { - F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.MyMessage_Color,oneof"` + F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=fEnum,enum=testdata.MyMessage_Color,oneof"` } type Oneof_F_Message struct { - F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=FMessage,oneof"` + F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=fMessage,oneof"` } type Oneof_FGroup struct { FGroup *Oneof_F_Group `protobuf:"group,16,opt,name=F_Group,json=fGroup,oneof"` } type Oneof_F_Largest_Tag struct { - F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=FLargestTag,oneof"` + F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=fLargestTag,oneof"` } type Oneof_Value struct { Value int32 `protobuf:"varint,100,opt,name=value,oneof"` @@ -2962,7 +2960,6 @@ var E_Greeting = &proto.ExtensionDesc{ Field: 106, Name: "testdata.greeting", Tag: "bytes,106,rep,name=greeting", - Filename: "test.proto", } var E_Complex = &proto.ExtensionDesc{ @@ -2971,7 +2968,6 @@ var E_Complex = &proto.ExtensionDesc{ Field: 200, Name: "testdata.complex", Tag: "bytes,200,opt,name=complex", - Filename: "test.proto", } var E_RComplex = &proto.ExtensionDesc{ @@ -2980,7 +2976,6 @@ var E_RComplex = &proto.ExtensionDesc{ Field: 201, Name: "testdata.r_complex", Tag: "bytes,201,rep,name=r_complex,json=rComplex", - Filename: "test.proto", } var E_NoDefaultDouble = &proto.ExtensionDesc{ @@ -2989,7 +2984,6 @@ var E_NoDefaultDouble = &proto.ExtensionDesc{ Field: 101, Name: "testdata.no_default_double", Tag: "fixed64,101,opt,name=no_default_double,json=noDefaultDouble", - Filename: "test.proto", } var E_NoDefaultFloat = &proto.ExtensionDesc{ @@ -2998,7 +2992,6 @@ var E_NoDefaultFloat = &proto.ExtensionDesc{ Field: 102, Name: "testdata.no_default_float", Tag: "fixed32,102,opt,name=no_default_float,json=noDefaultFloat", - Filename: "test.proto", } var E_NoDefaultInt32 = &proto.ExtensionDesc{ @@ -3007,7 +3000,6 @@ var E_NoDefaultInt32 = &proto.ExtensionDesc{ Field: 103, Name: "testdata.no_default_int32", Tag: "varint,103,opt,name=no_default_int32,json=noDefaultInt32", - Filename: "test.proto", } var E_NoDefaultInt64 = &proto.ExtensionDesc{ @@ -3016,7 +3008,6 @@ var E_NoDefaultInt64 = &proto.ExtensionDesc{ Field: 104, Name: "testdata.no_default_int64", Tag: "varint,104,opt,name=no_default_int64,json=noDefaultInt64", - Filename: "test.proto", } var E_NoDefaultUint32 = &proto.ExtensionDesc{ @@ -3025,7 +3016,6 @@ var E_NoDefaultUint32 = &proto.ExtensionDesc{ Field: 105, Name: "testdata.no_default_uint32", Tag: "varint,105,opt,name=no_default_uint32,json=noDefaultUint32", - Filename: "test.proto", } var E_NoDefaultUint64 = &proto.ExtensionDesc{ @@ -3034,7 +3024,6 @@ var E_NoDefaultUint64 = &proto.ExtensionDesc{ Field: 106, Name: "testdata.no_default_uint64", Tag: "varint,106,opt,name=no_default_uint64,json=noDefaultUint64", - Filename: "test.proto", } var E_NoDefaultSint32 = &proto.ExtensionDesc{ @@ -3043,7 +3032,6 @@ var E_NoDefaultSint32 = &proto.ExtensionDesc{ Field: 107, Name: "testdata.no_default_sint32", Tag: "zigzag32,107,opt,name=no_default_sint32,json=noDefaultSint32", - Filename: "test.proto", } var E_NoDefaultSint64 = &proto.ExtensionDesc{ @@ -3052,7 +3040,6 @@ var E_NoDefaultSint64 = &proto.ExtensionDesc{ Field: 108, Name: "testdata.no_default_sint64", Tag: "zigzag64,108,opt,name=no_default_sint64,json=noDefaultSint64", - Filename: "test.proto", } var E_NoDefaultFixed32 = &proto.ExtensionDesc{ @@ -3061,7 +3048,6 @@ var E_NoDefaultFixed32 = &proto.ExtensionDesc{ Field: 109, Name: "testdata.no_default_fixed32", Tag: "fixed32,109,opt,name=no_default_fixed32,json=noDefaultFixed32", - Filename: "test.proto", } var E_NoDefaultFixed64 = &proto.ExtensionDesc{ @@ -3070,7 +3056,6 @@ var E_NoDefaultFixed64 = &proto.ExtensionDesc{ Field: 110, Name: "testdata.no_default_fixed64", Tag: "fixed64,110,opt,name=no_default_fixed64,json=noDefaultFixed64", - Filename: "test.proto", } var E_NoDefaultSfixed32 = &proto.ExtensionDesc{ @@ -3079,7 +3064,6 @@ var E_NoDefaultSfixed32 = &proto.ExtensionDesc{ Field: 111, Name: "testdata.no_default_sfixed32", Tag: "fixed32,111,opt,name=no_default_sfixed32,json=noDefaultSfixed32", - Filename: "test.proto", } var E_NoDefaultSfixed64 = &proto.ExtensionDesc{ @@ -3088,7 +3072,6 @@ var E_NoDefaultSfixed64 = &proto.ExtensionDesc{ Field: 112, Name: "testdata.no_default_sfixed64", Tag: "fixed64,112,opt,name=no_default_sfixed64,json=noDefaultSfixed64", - Filename: "test.proto", } var E_NoDefaultBool = &proto.ExtensionDesc{ @@ -3097,7 +3080,6 @@ var E_NoDefaultBool = &proto.ExtensionDesc{ Field: 113, Name: "testdata.no_default_bool", Tag: "varint,113,opt,name=no_default_bool,json=noDefaultBool", - Filename: "test.proto", } var E_NoDefaultString = &proto.ExtensionDesc{ @@ -3106,7 +3088,6 @@ var E_NoDefaultString = &proto.ExtensionDesc{ Field: 114, Name: "testdata.no_default_string", Tag: "bytes,114,opt,name=no_default_string,json=noDefaultString", - Filename: "test.proto", } var E_NoDefaultBytes = &proto.ExtensionDesc{ @@ -3115,7 +3096,6 @@ var E_NoDefaultBytes = &proto.ExtensionDesc{ Field: 115, Name: "testdata.no_default_bytes", Tag: "bytes,115,opt,name=no_default_bytes,json=noDefaultBytes", - Filename: "test.proto", } var E_NoDefaultEnum = &proto.ExtensionDesc{ @@ -3124,7 +3104,6 @@ var E_NoDefaultEnum = &proto.ExtensionDesc{ Field: 116, Name: "testdata.no_default_enum", Tag: "varint,116,opt,name=no_default_enum,json=noDefaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum", - Filename: "test.proto", } var E_DefaultDouble = &proto.ExtensionDesc{ @@ -3133,7 +3112,6 @@ var E_DefaultDouble = &proto.ExtensionDesc{ Field: 201, Name: "testdata.default_double", Tag: "fixed64,201,opt,name=default_double,json=defaultDouble,def=3.1415", - Filename: "test.proto", } var E_DefaultFloat = &proto.ExtensionDesc{ @@ -3142,7 +3120,6 @@ var E_DefaultFloat = &proto.ExtensionDesc{ Field: 202, Name: "testdata.default_float", Tag: "fixed32,202,opt,name=default_float,json=defaultFloat,def=3.14", - Filename: "test.proto", } var E_DefaultInt32 = &proto.ExtensionDesc{ @@ -3151,7 +3128,6 @@ var E_DefaultInt32 = &proto.ExtensionDesc{ Field: 203, Name: "testdata.default_int32", Tag: "varint,203,opt,name=default_int32,json=defaultInt32,def=42", - Filename: "test.proto", } var E_DefaultInt64 = &proto.ExtensionDesc{ @@ -3160,7 +3136,6 @@ var E_DefaultInt64 = &proto.ExtensionDesc{ Field: 204, Name: "testdata.default_int64", Tag: "varint,204,opt,name=default_int64,json=defaultInt64,def=43", - Filename: "test.proto", } var E_DefaultUint32 = &proto.ExtensionDesc{ @@ -3169,7 +3144,6 @@ var E_DefaultUint32 = &proto.ExtensionDesc{ Field: 205, Name: "testdata.default_uint32", Tag: "varint,205,opt,name=default_uint32,json=defaultUint32,def=44", - Filename: "test.proto", } var E_DefaultUint64 = &proto.ExtensionDesc{ @@ -3178,7 +3152,6 @@ var E_DefaultUint64 = &proto.ExtensionDesc{ Field: 206, Name: "testdata.default_uint64", Tag: "varint,206,opt,name=default_uint64,json=defaultUint64,def=45", - Filename: "test.proto", } var E_DefaultSint32 = &proto.ExtensionDesc{ @@ -3187,7 +3160,6 @@ var E_DefaultSint32 = &proto.ExtensionDesc{ Field: 207, Name: "testdata.default_sint32", Tag: "zigzag32,207,opt,name=default_sint32,json=defaultSint32,def=46", - Filename: "test.proto", } var E_DefaultSint64 = &proto.ExtensionDesc{ @@ -3196,7 +3168,6 @@ var E_DefaultSint64 = &proto.ExtensionDesc{ Field: 208, Name: "testdata.default_sint64", Tag: "zigzag64,208,opt,name=default_sint64,json=defaultSint64,def=47", - Filename: "test.proto", } var E_DefaultFixed32 = &proto.ExtensionDesc{ @@ -3205,7 +3176,6 @@ var E_DefaultFixed32 = &proto.ExtensionDesc{ Field: 209, Name: "testdata.default_fixed32", Tag: "fixed32,209,opt,name=default_fixed32,json=defaultFixed32,def=48", - Filename: "test.proto", } var E_DefaultFixed64 = &proto.ExtensionDesc{ @@ -3214,7 +3184,6 @@ var E_DefaultFixed64 = &proto.ExtensionDesc{ Field: 210, Name: "testdata.default_fixed64", Tag: "fixed64,210,opt,name=default_fixed64,json=defaultFixed64,def=49", - Filename: "test.proto", } var E_DefaultSfixed32 = &proto.ExtensionDesc{ @@ -3223,7 +3192,6 @@ var E_DefaultSfixed32 = &proto.ExtensionDesc{ Field: 211, Name: "testdata.default_sfixed32", Tag: "fixed32,211,opt,name=default_sfixed32,json=defaultSfixed32,def=50", - Filename: "test.proto", } var E_DefaultSfixed64 = &proto.ExtensionDesc{ @@ -3232,7 +3200,6 @@ var E_DefaultSfixed64 = &proto.ExtensionDesc{ Field: 212, Name: "testdata.default_sfixed64", Tag: "fixed64,212,opt,name=default_sfixed64,json=defaultSfixed64,def=51", - Filename: "test.proto", } var E_DefaultBool = &proto.ExtensionDesc{ @@ -3241,7 +3208,6 @@ var E_DefaultBool = &proto.ExtensionDesc{ Field: 213, Name: "testdata.default_bool", Tag: "varint,213,opt,name=default_bool,json=defaultBool,def=1", - Filename: "test.proto", } var E_DefaultString = &proto.ExtensionDesc{ @@ -3250,7 +3216,6 @@ var E_DefaultString = &proto.ExtensionDesc{ Field: 214, Name: "testdata.default_string", Tag: "bytes,214,opt,name=default_string,json=defaultString,def=Hello, string", - Filename: "test.proto", } var E_DefaultBytes = &proto.ExtensionDesc{ @@ -3259,7 +3224,6 @@ var E_DefaultBytes = &proto.ExtensionDesc{ Field: 215, Name: "testdata.default_bytes", Tag: "bytes,215,opt,name=default_bytes,json=defaultBytes,def=Hello, bytes", - Filename: "test.proto", } var E_DefaultEnum = &proto.ExtensionDesc{ @@ -3268,7 +3232,6 @@ var E_DefaultEnum = &proto.ExtensionDesc{ Field: 216, Name: "testdata.default_enum", Tag: "varint,216,opt,name=default_enum,json=defaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum,def=1", - Filename: "test.proto", } var E_X201 = &proto.ExtensionDesc{ @@ -3277,7 +3240,6 @@ var E_X201 = &proto.ExtensionDesc{ Field: 201, Name: "testdata.x201", Tag: "bytes,201,opt,name=x201", - Filename: "test.proto", } var E_X202 = &proto.ExtensionDesc{ @@ -3286,7 +3248,6 @@ var E_X202 = &proto.ExtensionDesc{ Field: 202, Name: "testdata.x202", Tag: "bytes,202,opt,name=x202", - Filename: "test.proto", } var E_X203 = &proto.ExtensionDesc{ @@ -3295,7 +3256,6 @@ var E_X203 = &proto.ExtensionDesc{ Field: 203, Name: "testdata.x203", Tag: "bytes,203,opt,name=x203", - Filename: "test.proto", } var E_X204 = &proto.ExtensionDesc{ @@ -3304,7 +3264,6 @@ var E_X204 = &proto.ExtensionDesc{ Field: 204, Name: "testdata.x204", Tag: "bytes,204,opt,name=x204", - Filename: "test.proto", } var E_X205 = &proto.ExtensionDesc{ @@ -3313,7 +3272,6 @@ var E_X205 = &proto.ExtensionDesc{ Field: 205, Name: "testdata.x205", Tag: "bytes,205,opt,name=x205", - Filename: "test.proto", } var E_X206 = &proto.ExtensionDesc{ @@ -3322,7 +3280,6 @@ var E_X206 = &proto.ExtensionDesc{ Field: 206, Name: "testdata.x206", Tag: "bytes,206,opt,name=x206", - Filename: "test.proto", } var E_X207 = &proto.ExtensionDesc{ @@ -3331,7 +3288,6 @@ var E_X207 = &proto.ExtensionDesc{ Field: 207, Name: "testdata.x207", Tag: "bytes,207,opt,name=x207", - Filename: "test.proto", } var E_X208 = &proto.ExtensionDesc{ @@ -3340,7 +3296,6 @@ var E_X208 = &proto.ExtensionDesc{ Field: 208, Name: "testdata.x208", Tag: "bytes,208,opt,name=x208", - Filename: "test.proto", } var E_X209 = &proto.ExtensionDesc{ @@ -3349,7 +3304,6 @@ var E_X209 = &proto.ExtensionDesc{ Field: 209, Name: "testdata.x209", Tag: "bytes,209,opt,name=x209", - Filename: "test.proto", } var E_X210 = &proto.ExtensionDesc{ @@ -3358,7 +3312,6 @@ var E_X210 = &proto.ExtensionDesc{ Field: 210, Name: "testdata.x210", Tag: "bytes,210,opt,name=x210", - Filename: "test.proto", } var E_X211 = &proto.ExtensionDesc{ @@ -3367,7 +3320,6 @@ var E_X211 = &proto.ExtensionDesc{ Field: 211, Name: "testdata.x211", Tag: "bytes,211,opt,name=x211", - Filename: "test.proto", } var E_X212 = &proto.ExtensionDesc{ @@ -3376,7 +3328,6 @@ var E_X212 = &proto.ExtensionDesc{ Field: 212, Name: "testdata.x212", Tag: "bytes,212,opt,name=x212", - Filename: "test.proto", } var E_X213 = &proto.ExtensionDesc{ @@ -3385,7 +3336,6 @@ var E_X213 = &proto.ExtensionDesc{ Field: 213, Name: "testdata.x213", Tag: "bytes,213,opt,name=x213", - Filename: "test.proto", } var E_X214 = &proto.ExtensionDesc{ @@ -3394,7 +3344,6 @@ var E_X214 = &proto.ExtensionDesc{ Field: 214, Name: "testdata.x214", Tag: "bytes,214,opt,name=x214", - Filename: "test.proto", } var E_X215 = &proto.ExtensionDesc{ @@ -3403,7 +3352,6 @@ var E_X215 = &proto.ExtensionDesc{ Field: 215, Name: "testdata.x215", Tag: "bytes,215,opt,name=x215", - Filename: "test.proto", } var E_X216 = &proto.ExtensionDesc{ @@ -3412,7 +3360,6 @@ var E_X216 = &proto.ExtensionDesc{ Field: 216, Name: "testdata.x216", Tag: "bytes,216,opt,name=x216", - Filename: "test.proto", } var E_X217 = &proto.ExtensionDesc{ @@ -3421,7 +3368,6 @@ var E_X217 = &proto.ExtensionDesc{ Field: 217, Name: "testdata.x217", Tag: "bytes,217,opt,name=x217", - Filename: "test.proto", } var E_X218 = &proto.ExtensionDesc{ @@ -3430,7 +3376,6 @@ var E_X218 = &proto.ExtensionDesc{ Field: 218, Name: "testdata.x218", Tag: "bytes,218,opt,name=x218", - Filename: "test.proto", } var E_X219 = &proto.ExtensionDesc{ @@ -3439,7 +3384,6 @@ var E_X219 = &proto.ExtensionDesc{ Field: 219, Name: "testdata.x219", Tag: "bytes,219,opt,name=x219", - Filename: "test.proto", } var E_X220 = &proto.ExtensionDesc{ @@ -3448,7 +3392,6 @@ var E_X220 = &proto.ExtensionDesc{ Field: 220, Name: "testdata.x220", Tag: "bytes,220,opt,name=x220", - Filename: "test.proto", } var E_X221 = &proto.ExtensionDesc{ @@ -3457,7 +3400,6 @@ var E_X221 = &proto.ExtensionDesc{ Field: 221, Name: "testdata.x221", Tag: "bytes,221,opt,name=x221", - Filename: "test.proto", } var E_X222 = &proto.ExtensionDesc{ @@ -3466,7 +3408,6 @@ var E_X222 = &proto.ExtensionDesc{ Field: 222, Name: "testdata.x222", Tag: "bytes,222,opt,name=x222", - Filename: "test.proto", } var E_X223 = &proto.ExtensionDesc{ @@ -3475,7 +3416,6 @@ var E_X223 = &proto.ExtensionDesc{ Field: 223, Name: "testdata.x223", Tag: "bytes,223,opt,name=x223", - Filename: "test.proto", } var E_X224 = &proto.ExtensionDesc{ @@ -3484,7 +3424,6 @@ var E_X224 = &proto.ExtensionDesc{ Field: 224, Name: "testdata.x224", Tag: "bytes,224,opt,name=x224", - Filename: "test.proto", } var E_X225 = &proto.ExtensionDesc{ @@ -3493,7 +3432,6 @@ var E_X225 = &proto.ExtensionDesc{ Field: 225, Name: "testdata.x225", Tag: "bytes,225,opt,name=x225", - Filename: "test.proto", } var E_X226 = &proto.ExtensionDesc{ @@ -3502,7 +3440,6 @@ var E_X226 = &proto.ExtensionDesc{ Field: 226, Name: "testdata.x226", Tag: "bytes,226,opt,name=x226", - Filename: "test.proto", } var E_X227 = &proto.ExtensionDesc{ @@ -3511,7 +3448,6 @@ var E_X227 = &proto.ExtensionDesc{ Field: 227, Name: "testdata.x227", Tag: "bytes,227,opt,name=x227", - Filename: "test.proto", } var E_X228 = &proto.ExtensionDesc{ @@ -3520,7 +3456,6 @@ var E_X228 = &proto.ExtensionDesc{ Field: 228, Name: "testdata.x228", Tag: "bytes,228,opt,name=x228", - Filename: "test.proto", } var E_X229 = &proto.ExtensionDesc{ @@ -3529,7 +3464,6 @@ var E_X229 = &proto.ExtensionDesc{ Field: 229, Name: "testdata.x229", Tag: "bytes,229,opt,name=x229", - Filename: "test.proto", } var E_X230 = &proto.ExtensionDesc{ @@ -3538,7 +3472,6 @@ var E_X230 = &proto.ExtensionDesc{ Field: 230, Name: "testdata.x230", Tag: "bytes,230,opt,name=x230", - Filename: "test.proto", } var E_X231 = &proto.ExtensionDesc{ @@ -3547,7 +3480,6 @@ var E_X231 = &proto.ExtensionDesc{ Field: 231, Name: "testdata.x231", Tag: "bytes,231,opt,name=x231", - Filename: "test.proto", } var E_X232 = &proto.ExtensionDesc{ @@ -3556,7 +3488,6 @@ var E_X232 = &proto.ExtensionDesc{ Field: 232, Name: "testdata.x232", Tag: "bytes,232,opt,name=x232", - Filename: "test.proto", } var E_X233 = &proto.ExtensionDesc{ @@ -3565,7 +3496,6 @@ var E_X233 = &proto.ExtensionDesc{ Field: 233, Name: "testdata.x233", Tag: "bytes,233,opt,name=x233", - Filename: "test.proto", } var E_X234 = &proto.ExtensionDesc{ @@ -3574,7 +3504,6 @@ var E_X234 = &proto.ExtensionDesc{ Field: 234, Name: "testdata.x234", Tag: "bytes,234,opt,name=x234", - Filename: "test.proto", } var E_X235 = &proto.ExtensionDesc{ @@ -3583,7 +3512,6 @@ var E_X235 = &proto.ExtensionDesc{ Field: 235, Name: "testdata.x235", Tag: "bytes,235,opt,name=x235", - Filename: "test.proto", } var E_X236 = &proto.ExtensionDesc{ @@ -3592,7 +3520,6 @@ var E_X236 = &proto.ExtensionDesc{ Field: 236, Name: "testdata.x236", Tag: "bytes,236,opt,name=x236", - Filename: "test.proto", } var E_X237 = &proto.ExtensionDesc{ @@ -3601,7 +3528,6 @@ var E_X237 = &proto.ExtensionDesc{ Field: 237, Name: "testdata.x237", Tag: "bytes,237,opt,name=x237", - Filename: "test.proto", } var E_X238 = &proto.ExtensionDesc{ @@ -3610,7 +3536,6 @@ var E_X238 = &proto.ExtensionDesc{ Field: 238, Name: "testdata.x238", Tag: "bytes,238,opt,name=x238", - Filename: "test.proto", } var E_X239 = &proto.ExtensionDesc{ @@ -3619,7 +3544,6 @@ var E_X239 = &proto.ExtensionDesc{ Field: 239, Name: "testdata.x239", Tag: "bytes,239,opt,name=x239", - Filename: "test.proto", } var E_X240 = &proto.ExtensionDesc{ @@ -3628,7 +3552,6 @@ var E_X240 = &proto.ExtensionDesc{ Field: 240, Name: "testdata.x240", Tag: "bytes,240,opt,name=x240", - Filename: "test.proto", } var E_X241 = &proto.ExtensionDesc{ @@ -3637,7 +3560,6 @@ var E_X241 = &proto.ExtensionDesc{ Field: 241, Name: "testdata.x241", Tag: "bytes,241,opt,name=x241", - Filename: "test.proto", } var E_X242 = &proto.ExtensionDesc{ @@ -3646,7 +3568,6 @@ var E_X242 = &proto.ExtensionDesc{ Field: 242, Name: "testdata.x242", Tag: "bytes,242,opt,name=x242", - Filename: "test.proto", } var E_X243 = &proto.ExtensionDesc{ @@ -3655,7 +3576,6 @@ var E_X243 = &proto.ExtensionDesc{ Field: 243, Name: "testdata.x243", Tag: "bytes,243,opt,name=x243", - Filename: "test.proto", } var E_X244 = &proto.ExtensionDesc{ @@ -3664,7 +3584,6 @@ var E_X244 = &proto.ExtensionDesc{ Field: 244, Name: "testdata.x244", Tag: "bytes,244,opt,name=x244", - Filename: "test.proto", } var E_X245 = &proto.ExtensionDesc{ @@ -3673,7 +3592,6 @@ var E_X245 = &proto.ExtensionDesc{ Field: 245, Name: "testdata.x245", Tag: "bytes,245,opt,name=x245", - Filename: "test.proto", } var E_X246 = &proto.ExtensionDesc{ @@ -3682,7 +3600,6 @@ var E_X246 = &proto.ExtensionDesc{ Field: 246, Name: "testdata.x246", Tag: "bytes,246,opt,name=x246", - Filename: "test.proto", } var E_X247 = &proto.ExtensionDesc{ @@ -3691,7 +3608,6 @@ var E_X247 = &proto.ExtensionDesc{ Field: 247, Name: "testdata.x247", Tag: "bytes,247,opt,name=x247", - Filename: "test.proto", } var E_X248 = &proto.ExtensionDesc{ @@ -3700,7 +3616,6 @@ var E_X248 = &proto.ExtensionDesc{ Field: 248, Name: "testdata.x248", Tag: "bytes,248,opt,name=x248", - Filename: "test.proto", } var E_X249 = &proto.ExtensionDesc{ @@ -3709,7 +3624,6 @@ var E_X249 = &proto.ExtensionDesc{ Field: 249, Name: "testdata.x249", Tag: "bytes,249,opt,name=x249", - Filename: "test.proto", } var E_X250 = &proto.ExtensionDesc{ @@ -3718,7 +3632,6 @@ var E_X250 = &proto.ExtensionDesc{ Field: 250, Name: "testdata.x250", Tag: "bytes,250,opt,name=x250", - Filename: "test.proto", } func init() { @@ -3864,284 +3777,285 @@ func init() { func init() { proto.RegisterFile("test.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 4453 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48, + // 4465 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48, 0x7a, 0x37, 0xc0, 0xfd, 0x23, 0x25, 0x42, 0x65, 0xb5, 0x9b, 0x96, 0xbc, 0xc0, 0x9c, 0xe9, 0x6e, - 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xca, 0x7a, 0x63, 0x89, 0x0a, - 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x44, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52, + 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xc9, 0x7a, 0x63, 0x89, 0x0a, + 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x48, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52, 0x72, 0xe9, 0x4b, 0x72, 0xcd, 0x76, 0xc9, 0x35, 0xa7, 0x9c, 0x92, 0xbc, 0x97, 0x7f, 0x22, 0xe9, 0xee, 0x59, 0x7b, 0xd6, 0xac, 0x93, 0x7d, 0x99, 0xec, 0xdb, 0x4c, 0x92, 0x4b, 0xcf, 0xab, 0xaf, 0x0a, 0x40, 0x01, 0x24, 0x20, 0xf9, 0x24, 0x56, 0xd5, 0xef, 0xf7, 0xd5, 0xf6, 0xab, 0xef, 0xab, - 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0x3b, - 0x4e, 0xa7, 0x7c, 0x1d, 0xd2, 0x1b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0x38, 0xb4, 0xed, - 0x92, 0xa4, 0xca, 0x95, 0x79, 0x6d, 0x6e, 0xc5, 0x45, 0xac, 0x34, 0x5b, 0x2d, 0x83, 0xb6, 0x94, - 0xef, 0x40, 0x7e, 0xc3, 0xde, 0x33, 0x27, 0x4e, 0xb3, 0x6f, 0x0e, 0xba, 0x64, 0x11, 0x52, 0x4f, - 0x3b, 0xfb, 0xe6, 0x00, 0x19, 0x39, 0x83, 0x15, 0x08, 0x81, 0xe4, 0xde, 0xc9, 0xc8, 0x2c, 0xc9, - 0x58, 0x89, 0xbf, 0xcb, 0xbf, 0x72, 0x85, 0x76, 0x42, 0x99, 0xe4, 0x3a, 0x24, 0xbf, 0xdc, 0xb7, - 0xba, 0xbc, 0x97, 0xd7, 0xfc, 0x5e, 0x58, 0xfb, 0xca, 0x97, 0x37, 0xb7, 0x1f, 0x1b, 0x08, 0xa1, - 0xf6, 0xf7, 0x3a, 0xfb, 0x03, 0x6a, 0x4a, 0xa2, 0xf6, 0xb1, 0x40, 0x6b, 0x77, 0x3a, 0xe3, 0xce, - 0xb0, 0x94, 0x50, 0xa5, 0x4a, 0xca, 0x60, 0x05, 0x72, 0x1f, 0xe6, 0x0c, 0xf3, 0xc5, 0x51, 0x7f, - 0x6c, 0x76, 0x71, 0x70, 0xa5, 0xa4, 0x2a, 0x57, 0xf2, 0xd3, 0xf6, 0xb1, 0xd1, 0x08, 0x62, 0x19, - 0x79, 0x64, 0x76, 0x1c, 0x97, 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xad, 0x91, 0xd3, - 0xb7, 0xad, 0xce, 0x80, 0x91, 0xd3, 0xaa, 0x14, 0x43, 0x0e, 0x60, 0xc9, 0x9b, 0x50, 0x6c, 0xb6, - 0x1f, 0xda, 0xf6, 0xa0, 0x3d, 0xe6, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x93, 0xd6, - 0xba, 0xc3, 0x24, 0x15, 0x50, 0x9a, 0xed, 0x4d, 0xcb, 0xa9, 0x6a, 0x3e, 0x30, 0xaf, 0xca, 0x95, - 0x94, 0x31, 0xdf, 0xc4, 0xea, 0x29, 0x64, 0x4d, 0xf7, 0x91, 0x05, 0x55, 0xae, 0x24, 0x18, 0xb2, - 0xa6, 0x7b, 0xc8, 0x5b, 0x40, 0x9a, 0xed, 0x66, 0xff, 0xd8, 0xec, 0x8a, 0x56, 0xe7, 0x54, 0xb9, - 0x92, 0x31, 0x94, 0x26, 0x6f, 0x98, 0x81, 0x16, 0x2d, 0xcf, 0xab, 0x72, 0x25, 0xed, 0xa2, 0x05, - 0xdb, 0x37, 0x60, 0xa1, 0xd9, 0x7e, 0xb7, 0x1f, 0x1c, 0x70, 0x51, 0x95, 0x2b, 0x73, 0x46, 0xb1, - 0xc9, 0xea, 0xa7, 0xb1, 0xa2, 0x61, 0x45, 0x95, 0x2b, 0x49, 0x8e, 0x15, 0xec, 0xe2, 0xec, 0x9a, - 0x03, 0xbb, 0xe3, 0xf8, 0xd0, 0x05, 0x55, 0xae, 0xc8, 0xc6, 0x7c, 0x13, 0xab, 0x83, 0x56, 0x1f, - 0xdb, 0x47, 0xfb, 0x03, 0xd3, 0x87, 0x12, 0x55, 0xae, 0x48, 0x46, 0xb1, 0xc9, 0xea, 0x83, 0xd8, - 0x5d, 0x67, 0xdc, 0xb7, 0x7a, 0x3e, 0xf6, 0x3c, 0xea, 0xb7, 0xd8, 0x64, 0xf5, 0xc1, 0x11, 0x3c, - 0x3c, 0x71, 0xcc, 0x89, 0x0f, 0x35, 0x55, 0xb9, 0x52, 0x30, 0xe6, 0x9b, 0x58, 0x1d, 0xb2, 0x1a, - 0x5a, 0x83, 0x43, 0x55, 0xae, 0x2c, 0x50, 0xab, 0x33, 0xd6, 0x60, 0x37, 0xb4, 0x06, 0x3d, 0x55, - 0xae, 0x10, 0x8e, 0x15, 0xd6, 0x40, 0xd4, 0x0c, 0x13, 0x62, 0x69, 0x51, 0x4d, 0x08, 0x9a, 0x61, - 0x95, 0x41, 0xcd, 0x70, 0xe0, 0x6b, 0x6a, 0x42, 0xd4, 0x4c, 0x08, 0x89, 0x9d, 0x73, 0xe4, 0x05, - 0x35, 0x21, 0x6a, 0x86, 0x23, 0x43, 0x9a, 0xe1, 0xd8, 0xd7, 0xd5, 0x44, 0x50, 0x33, 0x53, 0x68, - 0xd1, 0x72, 0x49, 0x4d, 0x04, 0x35, 0xc3, 0xd1, 0x41, 0xcd, 0x70, 0xf0, 0x45, 0x35, 0x11, 0xd0, - 0x4c, 0x18, 0x2b, 0x1a, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0xb3, 0x73, 0x35, 0xc3, 0xa1, 0xcb, - 0x6a, 0x42, 0xd4, 0x8c, 0x68, 0xd5, 0xd3, 0x0c, 0x87, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0x58, - 0x4f, 0x33, 0x1c, 0x7b, 0x59, 0x4d, 0x04, 0x34, 0xc3, 0xb1, 0xd7, 0x45, 0xcd, 0x70, 0xe8, 0xc7, - 0x92, 0x9a, 0x10, 0x45, 0xc3, 0xa1, 0x37, 0x03, 0xa2, 0xe1, 0xd8, 0x4f, 0x28, 0x56, 0x54, 0x4d, - 0x18, 0x2c, 0xae, 0xc2, 0xa7, 0x14, 0x2c, 0xca, 0x86, 0x83, 0x7d, 0xd9, 0xd8, 0xdc, 0x05, 0x95, - 0xae, 0xa8, 0x92, 0x27, 0x1b, 0xd7, 0x2f, 0x89, 0xb2, 0xf1, 0x80, 0x57, 0xd1, 0xd5, 0x72, 0xd9, - 0x4c, 0x21, 0x6b, 0xba, 0x8f, 0x54, 0x55, 0xc9, 0x97, 0x8d, 0x87, 0x0c, 0xc8, 0xc6, 0xc3, 0x5e, - 0x53, 0x25, 0x51, 0x36, 0x33, 0xd0, 0xa2, 0xe5, 0xb2, 0x2a, 0x89, 0xb2, 0xf1, 0xd0, 0xa2, 0x6c, - 0x3c, 0xf0, 0x17, 0x54, 0x49, 0x90, 0xcd, 0x34, 0x56, 0x34, 0xfc, 0x45, 0x55, 0x12, 0x64, 0x13, - 0x9c, 0x1d, 0x93, 0x8d, 0x07, 0x7d, 0x43, 0x95, 0x7c, 0xd9, 0x04, 0xad, 0x72, 0xd9, 0x78, 0xd0, - 0x37, 0x55, 0x49, 0x90, 0x4d, 0x10, 0xcb, 0x65, 0xe3, 0x61, 0xdf, 0xc2, 0xf8, 0xe6, 0xca, 0xc6, - 0xc3, 0x0a, 0xb2, 0xf1, 0xa0, 0xbf, 0x43, 0x63, 0xa1, 0x27, 0x1b, 0x0f, 0x2a, 0xca, 0xc6, 0xc3, - 0xfe, 0x2e, 0xc5, 0xfa, 0xb2, 0x99, 0x06, 0x8b, 0xab, 0xf0, 0x7b, 0x14, 0xec, 0xcb, 0xc6, 0x03, - 0xaf, 0xe0, 0x20, 0xa8, 0x6c, 0xba, 0xe6, 0x61, 0xe7, 0x68, 0x40, 0x25, 0x56, 0xa1, 0xba, 0xa9, - 0x27, 0x9d, 0xf1, 0x91, 0x49, 0x47, 0x62, 0xdb, 0x83, 0xc7, 0x6e, 0x1b, 0x59, 0xa1, 0xc6, 0x99, - 0x7c, 0x7c, 0xc2, 0x75, 0xaa, 0x9f, 0xba, 0x5c, 0xd5, 0x8c, 0x22, 0xd3, 0xd0, 0x34, 0xbe, 0xa6, - 0x0b, 0xf8, 0x1b, 0x54, 0x45, 0x75, 0xb9, 0xa6, 0x33, 0x7c, 0x4d, 0xf7, 0xf1, 0x55, 0x38, 0xef, - 0x4b, 0xc9, 0x67, 0xdc, 0xa4, 0x5a, 0xaa, 0x27, 0xaa, 0xda, 0xaa, 0xb1, 0xe0, 0x0a, 0x6a, 0x16, - 0x29, 0xd0, 0xcd, 0x2d, 0x2a, 0xa9, 0x7a, 0xa2, 0xa6, 0x7b, 0x24, 0xb1, 0x27, 0x8d, 0xca, 0x90, - 0x0b, 0xcb, 0xe7, 0xdc, 0xa6, 0xca, 0xaa, 0x27, 0xab, 0xda, 0xea, 0xaa, 0xa1, 0x70, 0x7d, 0xcd, - 0xe0, 0x04, 0xfa, 0x59, 0xa1, 0x0a, 0xab, 0x27, 0x6b, 0xba, 0xc7, 0x09, 0xf6, 0xb3, 0xe0, 0x0a, - 0xcd, 0xa7, 0x7c, 0x89, 0x2a, 0xad, 0x9e, 0xae, 0xae, 0xe9, 0x6b, 0xeb, 0xf7, 0x8c, 0x22, 0x53, - 0x9c, 0xcf, 0xd1, 0x69, 0x3f, 0x5c, 0x72, 0x3e, 0x69, 0x95, 0x6a, 0xae, 0x9e, 0xd6, 0xee, 0xac, - 0xdd, 0xd5, 0xee, 0x1a, 0x0a, 0xd7, 0x9e, 0xcf, 0x7a, 0x87, 0xb2, 0xb8, 0xf8, 0x7c, 0xd6, 0x1a, - 0x55, 0x5f, 0x5d, 0x79, 0x66, 0x0e, 0x06, 0xf6, 0x2d, 0xb5, 0xfc, 0xd2, 0x1e, 0x0f, 0xba, 0xd7, - 0xca, 0x60, 0x28, 0x5c, 0x8f, 0x62, 0xaf, 0x0b, 0xae, 0x20, 0x7d, 0xfa, 0xaf, 0xd1, 0x7b, 0x58, - 0xa1, 0x9e, 0x79, 0xd8, 0xef, 0x59, 0xf6, 0xc4, 0x34, 0x8a, 0x4c, 0x9a, 0xa1, 0x35, 0xd9, 0x0d, - 0xaf, 0xe3, 0xaf, 0x53, 0xda, 0x42, 0x3d, 0x71, 0xbb, 0xaa, 0xd1, 0x9e, 0x66, 0xad, 0xe3, 0x6e, - 0x78, 0x1d, 0x7f, 0x83, 0x72, 0x48, 0x3d, 0x71, 0xbb, 0xa6, 0x73, 0x8e, 0xb8, 0x8e, 0x77, 0xe0, - 0x42, 0x28, 0x2e, 0xb6, 0x47, 0x9d, 0x83, 0xe7, 0x66, 0xb7, 0xa4, 0xd1, 0xf0, 0xf8, 0x50, 0x56, - 0x24, 0xe3, 0x7c, 0x20, 0x44, 0xee, 0x60, 0x33, 0xb9, 0x07, 0xaf, 0x87, 0x03, 0xa5, 0xcb, 0xac, - 0xd2, 0x78, 0x89, 0xcc, 0xc5, 0x60, 0xcc, 0x0c, 0x51, 0x05, 0x07, 0xec, 0x52, 0x75, 0x1a, 0x40, - 0x7d, 0xaa, 0xef, 0x89, 0x39, 0xf5, 0x67, 0xe0, 0xe2, 0x74, 0x28, 0x75, 0xc9, 0xeb, 0x34, 0xa2, - 0x22, 0xf9, 0x42, 0x38, 0xaa, 0x4e, 0xd1, 0x67, 0xf4, 0x5d, 0xa3, 0x21, 0x56, 0xa4, 0x4f, 0xf5, - 0x7e, 0x1f, 0x4a, 0x53, 0xc1, 0xd6, 0x65, 0xdf, 0xa1, 0x31, 0x17, 0xd9, 0xaf, 0x85, 0xe2, 0x6e, - 0x98, 0x3c, 0xa3, 0xeb, 0xbb, 0x34, 0x08, 0x0b, 0xe4, 0xa9, 0x9e, 0x71, 0xc9, 0x82, 0xe1, 0xd8, - 0xe5, 0xde, 0xa3, 0x51, 0x99, 0x2f, 0x59, 0x20, 0x32, 0x8b, 0xfd, 0x86, 0xe2, 0xb3, 0xcb, 0xad, - 0xd3, 0x30, 0xcd, 0xfb, 0x0d, 0x86, 0x6a, 0x4e, 0x7e, 0x9b, 0x92, 0x77, 0x67, 0xcf, 0xf8, 0xc7, - 0x09, 0x1a, 0x60, 0x39, 0x7b, 0x77, 0xd6, 0x94, 0x3d, 0xf6, 0x8c, 0x29, 0xff, 0x84, 0xb2, 0x89, - 0xc0, 0x9e, 0x9a, 0xf3, 0x63, 0x98, 0x73, 0x6f, 0x75, 0xbd, 0xb1, 0x7d, 0x34, 0x2a, 0x35, 0x55, - 0xb9, 0x02, 0xda, 0x95, 0xa9, 0xec, 0xc7, 0xbd, 0xe4, 0x6d, 0x50, 0x94, 0x11, 0x24, 0x31, 0x2b, - 0xcc, 0x2e, 0xb3, 0xb2, 0xa3, 0x26, 0x22, 0xac, 0x30, 0x94, 0x67, 0x45, 0x20, 0x51, 0x2b, 0xae, - 0xd3, 0x67, 0x56, 0x3e, 0x50, 0xa5, 0x99, 0x56, 0xdc, 0x10, 0xc0, 0xad, 0x04, 0x48, 0x4b, 0xeb, - 0x7e, 0xbe, 0x85, 0xed, 0xe4, 0x8b, 0xe1, 0x04, 0x6c, 0x03, 0xef, 0xcf, 0xc1, 0x4a, 0x46, 0x13, - 0x06, 0x37, 0x4d, 0xfb, 0xd9, 0x08, 0x5a, 0x60, 0x34, 0xd3, 0xb4, 0x9f, 0x9b, 0x41, 0x2b, 0xff, - 0xa6, 0x04, 0x49, 0x9a, 0x4f, 0x92, 0x2c, 0x24, 0xdf, 0x6b, 0x6d, 0x3e, 0x56, 0xce, 0xd1, 0x5f, - 0x0f, 0x5b, 0xad, 0xa7, 0x8a, 0x44, 0x72, 0x90, 0x7a, 0xf8, 0x95, 0xbd, 0xc6, 0xae, 0x22, 0x93, - 0x22, 0xe4, 0x9b, 0x9b, 0xdb, 0x1b, 0x0d, 0x63, 0xc7, 0xd8, 0xdc, 0xde, 0x53, 0x12, 0xb4, 0xad, - 0xf9, 0xb4, 0xf5, 0x60, 0x4f, 0x49, 0x92, 0x0c, 0x24, 0x68, 0x5d, 0x8a, 0x00, 0xa4, 0x77, 0xf7, - 0x8c, 0xcd, 0xed, 0x0d, 0x25, 0x4d, 0xad, 0xec, 0x6d, 0x6e, 0x35, 0x94, 0x0c, 0x45, 0xee, 0xbd, - 0xbb, 0xf3, 0xb4, 0xa1, 0x64, 0xe9, 0xcf, 0x07, 0x86, 0xf1, 0xe0, 0x2b, 0x4a, 0x8e, 0x92, 0xb6, - 0x1e, 0xec, 0x28, 0x80, 0xcd, 0x0f, 0x1e, 0x3e, 0x6d, 0x28, 0x79, 0x52, 0x80, 0x6c, 0xf3, 0xdd, - 0xed, 0x47, 0x7b, 0x9b, 0xad, 0x6d, 0xa5, 0x50, 0x3e, 0x81, 0x12, 0x5b, 0xe6, 0xc0, 0x2a, 0xb2, - 0xa4, 0xf0, 0x1d, 0x48, 0xb1, 0x9d, 0x91, 0x50, 0x25, 0x95, 0xf0, 0xce, 0x4c, 0x53, 0x56, 0xd8, - 0x1e, 0x31, 0xda, 0xd2, 0x65, 0x48, 0xb1, 0x55, 0x5a, 0x84, 0x14, 0x5b, 0x1d, 0x19, 0x53, 0x45, - 0x56, 0x28, 0xff, 0x96, 0x0c, 0xb0, 0x61, 0xef, 0x3e, 0xef, 0x8f, 0x30, 0x21, 0xbf, 0x0c, 0x30, - 0x79, 0xde, 0x1f, 0xb5, 0x51, 0xf5, 0x3c, 0xa9, 0xcc, 0xd1, 0x1a, 0xf4, 0x77, 0xe4, 0x1a, 0x14, - 0xb0, 0xf9, 0x90, 0x79, 0x21, 0xcc, 0x25, 0x33, 0x46, 0x9e, 0xd6, 0x71, 0xc7, 0x14, 0x84, 0xd4, - 0x74, 0x4c, 0x21, 0xd3, 0x02, 0xa4, 0xa6, 0x93, 0xab, 0x80, 0xc5, 0xf6, 0x04, 0x23, 0x0a, 0xa6, - 0x8d, 0x39, 0x03, 0xfb, 0x65, 0x31, 0x86, 0xbc, 0x0d, 0xd8, 0x27, 0x9b, 0x77, 0x71, 0xfa, 0x74, - 0xb8, 0xc3, 0x5d, 0xa1, 0x3f, 0xd8, 0x6c, 0x7d, 0xc2, 0x52, 0x0b, 0x72, 0x5e, 0x3d, 0xed, 0x0b, - 0x6b, 0xf9, 0x8c, 0x14, 0x9c, 0x11, 0x60, 0x95, 0x37, 0x25, 0x06, 0xe0, 0xa3, 0x59, 0xc0, 0xd1, - 0x30, 0x12, 0x1b, 0x4e, 0xf9, 0x32, 0xcc, 0x6d, 0xdb, 0x16, 0x3b, 0xbd, 0xb8, 0x4a, 0x05, 0x90, - 0x3a, 0x25, 0x09, 0xb3, 0x27, 0xa9, 0x53, 0xbe, 0x02, 0x20, 0xb4, 0x29, 0x20, 0xed, 0xb3, 0x36, - 0xf4, 0x01, 0xd2, 0x7e, 0xf9, 0x26, 0xa4, 0xb7, 0x3a, 0xc7, 0x7b, 0x9d, 0x1e, 0xb9, 0x06, 0x30, - 0xe8, 0x4c, 0x9c, 0xf6, 0x21, 0xee, 0xc3, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c, - 0xad, 0x65, 0xfb, 0xf1, 0x02, 0xa0, 0x35, 0xe8, 0x6e, 0x99, 0x93, 0x49, 0xa7, 0x67, 0x92, 0x2a, - 0xa4, 0x2d, 0x73, 0x42, 0xa3, 0x9d, 0x84, 0xef, 0x08, 0xcb, 0xfe, 0x2a, 0xf8, 0xa8, 0x95, 0x6d, - 0x84, 0x18, 0x1c, 0x4a, 0x14, 0x48, 0x58, 0x47, 0x43, 0x7c, 0x27, 0x49, 0x19, 0xf4, 0xe7, 0xd2, - 0x25, 0x48, 0x33, 0x0c, 0x21, 0x90, 0xb4, 0x3a, 0x43, 0xb3, 0xc4, 0xfa, 0xc5, 0xdf, 0xe5, 0x5f, - 0x95, 0x00, 0xb6, 0xcd, 0x97, 0x67, 0xe8, 0xd3, 0x47, 0xc5, 0xf4, 0x99, 0x60, 0x7d, 0xde, 0x8f, - 0xeb, 0x93, 0xea, 0xec, 0xd0, 0xb6, 0xbb, 0x6d, 0xb6, 0xc5, 0xec, 0x49, 0x27, 0x47, 0x6b, 0x70, - 0xd7, 0xca, 0x1f, 0x40, 0x61, 0xd3, 0xb2, 0xcc, 0xb1, 0x3b, 0x26, 0x02, 0xc9, 0x67, 0xf6, 0xc4, - 0xe1, 0x6f, 0x4b, 0xf8, 0x9b, 0x94, 0x20, 0x39, 0xb2, 0xc7, 0x0e, 0x9b, 0x67, 0x3d, 0xa9, 0xaf, - 0xae, 0xae, 0x1a, 0x58, 0x43, 0x2e, 0x41, 0xee, 0xc0, 0xb6, 0x2c, 0xf3, 0x80, 0x4e, 0x22, 0x81, - 0x69, 0x8d, 0x5f, 0x51, 0xfe, 0x65, 0x09, 0x0a, 0x2d, 0xe7, 0x99, 0x6f, 0x5c, 0x81, 0xc4, 0x73, - 0xf3, 0x04, 0x87, 0x97, 0x30, 0xe8, 0x4f, 0x7a, 0x54, 0x7e, 0xbe, 0x33, 0x38, 0x62, 0x6f, 0x4d, - 0x05, 0x83, 0x15, 0xc8, 0x05, 0x48, 0xbf, 0x34, 0xfb, 0xbd, 0x67, 0x0e, 0xda, 0x94, 0x0d, 0x5e, - 0x22, 0xb7, 0x20, 0xd5, 0xa7, 0x83, 0x2d, 0x25, 0x71, 0xbd, 0x2e, 0xf8, 0xeb, 0x25, 0xce, 0xc1, - 0x60, 0xa0, 0x1b, 0xd9, 0x6c, 0x57, 0xf9, 0xe8, 0xa3, 0x8f, 0x3e, 0x92, 0xcb, 0x87, 0xb0, 0xe8, - 0x1e, 0xde, 0xc0, 0x64, 0xb7, 0xa1, 0x34, 0x30, 0xed, 0xf6, 0x61, 0xdf, 0xea, 0x0c, 0x06, 0x27, - 0xed, 0x97, 0xb6, 0xd5, 0xee, 0x58, 0x6d, 0x7b, 0x72, 0xd0, 0x19, 0xe3, 0x02, 0x44, 0x77, 0xb1, - 0x38, 0x30, 0xed, 0x26, 0xa3, 0xbd, 0x6f, 0x5b, 0x0f, 0xac, 0x16, 0xe5, 0x94, 0xff, 0x20, 0x09, - 0xb9, 0xad, 0x13, 0xd7, 0xfa, 0x22, 0xa4, 0x0e, 0xec, 0x23, 0x8b, 0xad, 0x65, 0xca, 0x60, 0x05, - 0x6f, 0x8f, 0x64, 0x61, 0x8f, 0x16, 0x21, 0xf5, 0xe2, 0xc8, 0x76, 0x4c, 0x9c, 0x6e, 0xce, 0x60, - 0x05, 0xba, 0x5a, 0x23, 0xd3, 0x29, 0x25, 0x31, 0xb9, 0xa5, 0x3f, 0xfd, 0xf9, 0xa7, 0xce, 0x30, - 0x7f, 0xb2, 0x02, 0x69, 0x9b, 0xae, 0xfe, 0xa4, 0x94, 0xc6, 0x77, 0x35, 0x01, 0x2e, 0xee, 0x8a, - 0xc1, 0x51, 0x64, 0x13, 0x16, 0x5e, 0x9a, 0xed, 0xe1, 0xd1, 0xc4, 0x69, 0xf7, 0xec, 0x76, 0xd7, - 0x34, 0x47, 0xe6, 0xb8, 0x34, 0x87, 0x3d, 0x09, 0x3e, 0x61, 0xd6, 0x42, 0x1a, 0xf3, 0x2f, 0xcd, - 0xad, 0xa3, 0x89, 0xb3, 0x61, 0x3f, 0x46, 0x16, 0xa9, 0x42, 0x6e, 0x6c, 0x52, 0x4f, 0x40, 0x07, - 0x5b, 0x08, 0xf7, 0x1e, 0xa0, 0x66, 0xc7, 0xe6, 0x08, 0x2b, 0xc8, 0x3a, 0x64, 0xf7, 0xfb, 0xcf, - 0xcd, 0xc9, 0x33, 0xb3, 0x5b, 0xca, 0xa8, 0x52, 0x65, 0x5e, 0xbb, 0xe8, 0x73, 0xbc, 0x65, 0x5d, - 0x79, 0x64, 0x0f, 0xec, 0xb1, 0xe1, 0x41, 0xc9, 0x7d, 0xc8, 0x4d, 0xec, 0xa1, 0xc9, 0xf4, 0x9d, - 0xc5, 0xa0, 0x7a, 0x79, 0x16, 0x6f, 0xd7, 0x1e, 0x9a, 0xae, 0x07, 0x73, 0xf1, 0x64, 0x99, 0x0d, - 0x74, 0x9f, 0x5e, 0x9d, 0x4b, 0x80, 0x4f, 0x03, 0x74, 0x40, 0x78, 0x95, 0x26, 0x4b, 0x74, 0x40, - 0xbd, 0x43, 0x7a, 0x23, 0x2a, 0xe5, 0x31, 0xaf, 0xf4, 0xca, 0x4b, 0xb7, 0x20, 0xe7, 0x19, 0xf4, - 0x5d, 0x1f, 0x73, 0x37, 0x39, 0xf4, 0x07, 0xcc, 0xf5, 0x31, 0x5f, 0xf3, 0x06, 0xa4, 0x70, 0xd8, - 0x34, 0x42, 0x19, 0x0d, 0x1a, 0x10, 0x73, 0x90, 0xda, 0x30, 0x1a, 0x8d, 0x6d, 0x45, 0xc2, 0xd8, - 0xf8, 0xf4, 0xdd, 0x86, 0x22, 0x0b, 0x8a, 0xfd, 0x6d, 0x09, 0x12, 0x8d, 0x63, 0x54, 0x0b, 0x9d, - 0x86, 0x7b, 0xa2, 0xe9, 0x6f, 0xad, 0x06, 0xc9, 0xa1, 0x3d, 0x36, 0xc9, 0xf9, 0x19, 0xb3, 0x2c, - 0xf5, 0x70, 0xbf, 0x84, 0x57, 0xe4, 0xc6, 0xb1, 0x63, 0x20, 0x5e, 0x7b, 0x0b, 0x92, 0x8e, 0x79, - 0xec, 0xcc, 0xe6, 0x3d, 0x63, 0x1d, 0x50, 0x80, 0x76, 0x13, 0xd2, 0xd6, 0xd1, 0x70, 0xdf, 0x1c, - 0xcf, 0x86, 0xf6, 0x71, 0x7a, 0x1c, 0x52, 0x7e, 0x0f, 0x94, 0x47, 0xf6, 0x70, 0x34, 0x30, 0x8f, - 0x1b, 0xc7, 0x8e, 0x69, 0x4d, 0xfa, 0xb6, 0x45, 0xf5, 0x7c, 0xd8, 0x1f, 0xa3, 0x17, 0xc1, 0xb7, - 0x62, 0x2c, 0xd0, 0x53, 0x3d, 0x31, 0x0f, 0x6c, 0xab, 0xcb, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3, - 0xac, 0x3f, 0xa6, 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x40, 0x91, 0xe7, 0x18, 0x13, 0xde, - 0x71, 0xf9, 0x06, 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x52, 0xce, - 0xd1, 0x65, 0x6d, 0x6d, 0x37, 0x14, 0x89, 0xfe, 0xd8, 0x7b, 0xbf, 0x15, 0x58, 0xca, 0x4b, 0x50, - 0xf0, 0xc6, 0xbe, 0x6b, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52, - 0x8d, 0xe1, 0xc8, 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90, - 0x19, 0xf2, 0xf9, 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa, - 0x42, 0x46, 0xf0, 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2, - 0x16, 0x64, 0x58, 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab, - 0x63, 0x17, 0x95, 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf, - 0x9f, 0x82, 0xac, 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a, - 0x33, 0x32, 0xb2, 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e, - 0xaf, 0xb1, 0xa6, 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e, - 0x85, 0xfe, 0x98, 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7, - 0xcf, 0x36, 0xfd, 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff, - 0xf1, 0x01, 0x35, 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62, - 0xce, 0x82, 0x47, 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0, - 0xb9, 0xf4, 0xf3, 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4, - 0x3c, 0xc3, 0x93, 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b, - 0xc0, 0xc9, 0x15, 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc, - 0xb2, 0x79, 0x89, 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e, - 0xb0, 0xe4, 0x0b, 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x26, 0x9e, 0x86, - 0x25, 0xca, 0xdb, 0xe9, 0x5b, 0x87, 0xa5, 0x22, 0xae, 0x44, 0xa2, 0x6f, 0x1d, 0x1a, 0xa9, 0x26, - 0xad, 0x61, 0x1a, 0xd8, 0xa6, 0x6d, 0x0a, 0xb6, 0x25, 0x6f, 0xb3, 0x46, 0x5a, 0x45, 0x4a, 0x90, - 0x6a, 0xb6, 0xb7, 0x3b, 0x56, 0x69, 0x81, 0xf1, 0xac, 0x8e, 0x65, 0x24, 0x9b, 0xdb, 0x1d, 0x8b, - 0xbc, 0x05, 0x89, 0xc9, 0xd1, 0x7e, 0x89, 0x84, 0xbf, 0xac, 0xec, 0x1e, 0xed, 0xbb, 0x43, 0x31, - 0x28, 0x82, 0x2c, 0x43, 0x76, 0xe2, 0x8c, 0xdb, 0xbf, 0x60, 0x8e, 0xed, 0xd2, 0x79, 0x5c, 0xc2, - 0x73, 0x46, 0x66, 0xe2, 0x8c, 0x3f, 0x30, 0xc7, 0xf6, 0x19, 0x9d, 0x5f, 0xf9, 0x0a, 0xe4, 0x05, - 0xbb, 0xa4, 0x08, 0x92, 0xc5, 0x6e, 0x0a, 0x75, 0xe9, 0x8e, 0x21, 0x59, 0xe5, 0x3d, 0x28, 0xb8, - 0x39, 0x0c, 0xce, 0x57, 0xa3, 0x27, 0x69, 0x60, 0x8f, 0xf1, 0x7c, 0xce, 0x6b, 0x97, 0xc4, 0x10, - 0xe5, 0xc3, 0x78, 0xb8, 0x60, 0xd0, 0xb2, 0x12, 0x1a, 0x8a, 0x54, 0xfe, 0xa1, 0x04, 0x85, 0x2d, - 0x7b, 0xec, 0x3f, 0x30, 0x2f, 0x42, 0x6a, 0xdf, 0xb6, 0x07, 0x13, 0x34, 0x9b, 0x35, 0x58, 0x81, - 0xbc, 0x01, 0x05, 0xfc, 0xe1, 0xe6, 0x9e, 0xb2, 0xf7, 0xb4, 0x91, 0xc7, 0x7a, 0x9e, 0x70, 0x12, - 0x48, 0xf6, 0x2d, 0x67, 0xc2, 0x3d, 0x19, 0xfe, 0x26, 0x5f, 0x80, 0x3c, 0xfd, 0xeb, 0x32, 0x93, - 0xde, 0x85, 0x15, 0x68, 0x35, 0x27, 0xbe, 0x05, 0x73, 0xb8, 0xfb, 0x1e, 0x2c, 0xe3, 0x3d, 0x63, - 0x14, 0x58, 0x03, 0x07, 0x96, 0x20, 0xc3, 0x5c, 0xc1, 0x04, 0xbf, 0x96, 0xe5, 0x0c, 0xb7, 0x48, - 0xdd, 0x2b, 0x66, 0x02, 0x2c, 0xdc, 0x67, 0x0c, 0x5e, 0x2a, 0x3f, 0x80, 0x2c, 0x46, 0xa9, 0xd6, - 0xa0, 0x4b, 0xca, 0x20, 0xf5, 0x4a, 0x26, 0xc6, 0xc8, 0x45, 0xe1, 0x9a, 0xcf, 0x9b, 0x57, 0x36, - 0x0c, 0xa9, 0xb7, 0xb4, 0x00, 0xd2, 0x06, 0xbd, 0x77, 0x1f, 0x73, 0x37, 0x2d, 0x1d, 0x97, 0x5b, - 0xdc, 0xc4, 0xb6, 0xf9, 0x32, 0xce, 0xc4, 0xb6, 0xf9, 0x92, 0x99, 0xb8, 0x3a, 0x65, 0x82, 0x96, - 0x4e, 0xf8, 0xa7, 0x43, 0xe9, 0xa4, 0x5c, 0x85, 0x39, 0x3c, 0x9e, 0x7d, 0xab, 0xb7, 0x63, 0xf7, - 0x2d, 0xbc, 0xe7, 0x1f, 0xe2, 0x3d, 0x49, 0x32, 0xa4, 0x43, 0xba, 0x07, 0xe6, 0x71, 0xe7, 0x80, - 0xdd, 0x38, 0xb3, 0x06, 0x2b, 0x94, 0x3f, 0x4b, 0xc2, 0x3c, 0x77, 0xad, 0xef, 0xf7, 0x9d, 0x67, - 0x5b, 0x9d, 0x11, 0x79, 0x0a, 0x05, 0xea, 0x55, 0xdb, 0xc3, 0xce, 0x68, 0x44, 0x8f, 0xaf, 0x84, - 0x57, 0x8d, 0xeb, 0x53, 0xae, 0x9a, 0xe3, 0x57, 0xb6, 0x3b, 0x43, 0x73, 0x8b, 0x61, 0x1b, 0x96, - 0x33, 0x3e, 0x31, 0xf2, 0x96, 0x5f, 0x43, 0x36, 0x21, 0x3f, 0x9c, 0xf4, 0x3c, 0x63, 0x32, 0x1a, - 0xab, 0x44, 0x1a, 0xdb, 0x9a, 0xf4, 0x02, 0xb6, 0x60, 0xe8, 0x55, 0xd0, 0x81, 0x51, 0x7f, 0xec, - 0xd9, 0x4a, 0x9c, 0x32, 0x30, 0xea, 0x3a, 0x82, 0x03, 0xdb, 0xf7, 0x6b, 0xc8, 0x63, 0x00, 0x7a, - 0xbc, 0x1c, 0x9b, 0xa6, 0x4e, 0xa8, 0xa0, 0xbc, 0xf6, 0x66, 0xa4, 0xad, 0x5d, 0x67, 0xbc, 0x67, - 0xef, 0x3a, 0x63, 0x66, 0x88, 0x1e, 0x4c, 0x2c, 0x2e, 0xbd, 0x03, 0x4a, 0x78, 0xfe, 0xe2, 0x8d, - 0x3c, 0x35, 0xe3, 0x46, 0x9e, 0xe3, 0x37, 0xf2, 0xba, 0x7c, 0x57, 0x5a, 0x7a, 0x0f, 0x8a, 0xa1, - 0x29, 0x8b, 0x74, 0xc2, 0xe8, 0xb7, 0x45, 0x7a, 0x5e, 0x7b, 0x5d, 0xf8, 0x9c, 0x2d, 0x6e, 0xb8, - 0x68, 0xf7, 0x1d, 0x50, 0xc2, 0xd3, 0x17, 0x0d, 0x67, 0x63, 0x32, 0x05, 0xe4, 0xdf, 0x87, 0xb9, - 0xc0, 0x94, 0x45, 0x72, 0xee, 0x94, 0x49, 0x95, 0x7f, 0x29, 0x05, 0xa9, 0x96, 0x65, 0xda, 0x87, - 0xe4, 0xf5, 0x60, 0x9c, 0x7c, 0x72, 0xce, 0x8d, 0x91, 0x17, 0x43, 0x31, 0xf2, 0xc9, 0x39, 0x2f, - 0x42, 0x5e, 0x0c, 0x45, 0x48, 0xb7, 0xa9, 0xa6, 0x93, 0xcb, 0x53, 0xf1, 0xf1, 0xc9, 0x39, 0x21, - 0x38, 0x5e, 0x9e, 0x0a, 0x8e, 0x7e, 0x73, 0x4d, 0xa7, 0x0e, 0x35, 0x18, 0x19, 0x9f, 0x9c, 0xf3, - 0xa3, 0xe2, 0x72, 0x38, 0x2a, 0x7a, 0x8d, 0x35, 0x9d, 0x0d, 0x49, 0x88, 0x88, 0x38, 0x24, 0x16, - 0x0b, 0x97, 0xc3, 0xb1, 0x10, 0x79, 0x3c, 0x0a, 0x2e, 0x87, 0xa3, 0x20, 0x36, 0xf2, 0xa8, 0x77, - 0x31, 0x14, 0xf5, 0xd0, 0x28, 0x0b, 0x77, 0xcb, 0xe1, 0x70, 0xc7, 0x78, 0xc2, 0x48, 0xc5, 0x58, - 0xe7, 0x35, 0xd6, 0x74, 0xa2, 0x85, 0x02, 0x5d, 0xf4, 0x6d, 0x1f, 0xf7, 0x02, 0x9d, 0xbe, 0x4e, - 0x97, 0xcd, 0xbd, 0x88, 0x16, 0x63, 0xbe, 0xf8, 0xe3, 0x6a, 0xba, 0x17, 0x31, 0x0d, 0x32, 0x87, - 0x3c, 0x01, 0x56, 0xd0, 0x73, 0x09, 0xb2, 0xc4, 0xcd, 0x5f, 0x69, 0xb6, 0xd1, 0x83, 0xd1, 0x79, - 0x1d, 0xb2, 0x3b, 0x7d, 0x05, 0xe6, 0x9a, 0xed, 0xa7, 0x9d, 0x71, 0xcf, 0x9c, 0x38, 0xed, 0xbd, - 0x4e, 0xcf, 0x7b, 0x44, 0xa0, 0xfb, 0x9f, 0x6f, 0xf2, 0x96, 0xbd, 0x4e, 0x8f, 0x5c, 0x70, 0xc5, - 0xd5, 0xc5, 0x56, 0x89, 0xcb, 0x6b, 0xe9, 0x75, 0xba, 0x68, 0xcc, 0x18, 0xfa, 0xc2, 0x05, 0xee, - 0x0b, 0x1f, 0x66, 0x20, 0x75, 0x64, 0xf5, 0x6d, 0xeb, 0x61, 0x0e, 0x32, 0x8e, 0x3d, 0x1e, 0x76, - 0x1c, 0xbb, 0xfc, 0x23, 0x09, 0xe0, 0x91, 0x3d, 0x1c, 0x1e, 0x59, 0xfd, 0x17, 0x47, 0x26, 0xb9, - 0x02, 0xf9, 0x61, 0xe7, 0xb9, 0xd9, 0x1e, 0x9a, 0xed, 0x83, 0xb1, 0x7b, 0x0e, 0x72, 0xb4, 0x6a, - 0xcb, 0x7c, 0x34, 0x3e, 0x21, 0x25, 0xf7, 0x8a, 0x8e, 0xda, 0x41, 0x49, 0xf2, 0x2b, 0xfb, 0x22, - 0xbf, 0x74, 0xa6, 0xf9, 0x1e, 0xba, 0xd7, 0x4e, 0x96, 0x47, 0x64, 0xf8, 0xee, 0x61, 0x89, 0x4a, - 0xde, 0x31, 0x87, 0xa3, 0xf6, 0x01, 0x4a, 0x85, 0xca, 0x21, 0x45, 0xcb, 0x8f, 0xc8, 0x6d, 0x48, - 0x1c, 0xd8, 0x03, 0x14, 0xc9, 0x29, 0xfb, 0x42, 0x71, 0xe4, 0x0d, 0x48, 0x0c, 0x27, 0x4c, 0x36, - 0x79, 0x6d, 0x41, 0xb8, 0x27, 0xb0, 0xd0, 0x44, 0x61, 0xc3, 0x49, 0xcf, 0x9b, 0xf7, 0x8d, 0x22, - 0x24, 0x9a, 0xad, 0x16, 0x8d, 0xfd, 0xcd, 0x56, 0x6b, 0x4d, 0x91, 0xea, 0x5f, 0x82, 0x6c, 0x6f, - 0x6c, 0x9a, 0xd4, 0x3d, 0xcc, 0xce, 0x39, 0x3e, 0xc4, 0x58, 0xe7, 0x81, 0xea, 0x5b, 0x90, 0x39, - 0x60, 0x59, 0x07, 0x89, 0x48, 0x6b, 0x4b, 0x7f, 0xc8, 0x1e, 0x55, 0x96, 0xfc, 0xe6, 0x70, 0x9e, - 0x62, 0xb8, 0x36, 0xea, 0x3b, 0x90, 0x1b, 0xb7, 0x4f, 0x33, 0xf8, 0x31, 0x8b, 0x2e, 0x71, 0x06, - 0xb3, 0x63, 0x5e, 0x55, 0x6f, 0xc0, 0x82, 0x65, 0xbb, 0xdf, 0x50, 0xda, 0x5d, 0x76, 0xc6, 0x2e, - 0x4e, 0x5f, 0xe5, 0x5c, 0xe3, 0x26, 0xfb, 0x6e, 0x69, 0xd9, 0xbc, 0x81, 0x9d, 0xca, 0xfa, 0x23, - 0x50, 0x04, 0x33, 0x98, 0x7a, 0xc6, 0x59, 0x39, 0x64, 0x1f, 0x4a, 0x3d, 0x2b, 0x78, 0xee, 0x43, - 0x46, 0xd8, 0xc9, 0x8c, 0x31, 0xd2, 0x63, 0x5f, 0x9d, 0x3d, 0x23, 0xe8, 0xea, 0xa6, 0x8d, 0x50, - 0x5f, 0x13, 0x6d, 0xe4, 0x19, 0xfb, 0x20, 0x2d, 0x1a, 0xa9, 0xe9, 0xa1, 0x55, 0x39, 0x3a, 0x75, - 0x28, 0x7d, 0xf6, 0x3d, 0xd9, 0xb3, 0xc2, 0x1c, 0xe0, 0x0c, 0x33, 0xf1, 0x83, 0xf9, 0x90, 0x7d, - 0x6a, 0x0e, 0x98, 0x99, 0x1a, 0xcd, 0xe4, 0xd4, 0xd1, 0x3c, 0x67, 0xdf, 0x75, 0x3d, 0x33, 0xbb, - 0xb3, 0x46, 0x33, 0x39, 0x75, 0x34, 0x03, 0xf6, 0xc5, 0x37, 0x60, 0xa6, 0xa6, 0xd7, 0x37, 0x80, - 0x88, 0x5b, 0xcd, 0xe3, 0x44, 0x8c, 0x9d, 0x21, 0xfb, 0x8e, 0xef, 0x6f, 0x36, 0xa3, 0xcc, 0x32, - 0x14, 0x3f, 0x20, 0x8b, 0x7d, 0xe2, 0x0f, 0x1a, 0xaa, 0xe9, 0xf5, 0x4d, 0x38, 0x2f, 0x4e, 0xec, - 0x0c, 0x43, 0xb2, 0x55, 0xa9, 0x52, 0x34, 0x16, 0xfc, 0xa9, 0x71, 0xce, 0x4c, 0x53, 0xf1, 0x83, - 0x1a, 0xa9, 0x52, 0x45, 0x99, 0x32, 0x55, 0xd3, 0xeb, 0x0f, 0xa0, 0x28, 0x98, 0xda, 0xc7, 0x08, - 0x1d, 0x6d, 0xe6, 0x05, 0xfb, 0x5f, 0x0b, 0xcf, 0x0c, 0x8d, 0xe8, 0xe1, 0x1d, 0xe3, 0x31, 0x2e, - 0xda, 0xc8, 0x98, 0xfd, 0xa3, 0x80, 0x3f, 0x16, 0x64, 0x84, 0x8e, 0x04, 0xe6, 0xdf, 0x71, 0x56, - 0x26, 0xec, 0x5f, 0x08, 0xfc, 0xa1, 0x50, 0x42, 0xbd, 0x1f, 0x98, 0x8e, 0x49, 0x83, 0x5c, 0x8c, - 0x0d, 0x07, 0x3d, 0xf2, 0x9b, 0x91, 0x80, 0x15, 0xf1, 0x81, 0x44, 0x98, 0x36, 0x2d, 0xd6, 0x37, - 0x61, 0xfe, 0xec, 0x0e, 0xe9, 0x63, 0x89, 0x65, 0xcb, 0xd5, 0x15, 0x9a, 0x50, 0x1b, 0x73, 0xdd, - 0x80, 0x5f, 0x6a, 0xc0, 0xdc, 0x99, 0x9d, 0xd2, 0x27, 0x12, 0xcb, 0x39, 0xa9, 0x25, 0xa3, 0xd0, - 0x0d, 0x7a, 0xa6, 0xb9, 0x33, 0xbb, 0xa5, 0x4f, 0x25, 0xf6, 0x40, 0xa1, 0x6b, 0x9e, 0x11, 0xd7, - 0x33, 0xcd, 0x9d, 0xd9, 0x2d, 0x7d, 0x95, 0x65, 0x94, 0xb2, 0x5e, 0x15, 0x8d, 0xa0, 0x2f, 0x98, - 0x3f, 0xbb, 0x5b, 0xfa, 0x9a, 0x84, 0x8f, 0x15, 0xb2, 0xae, 0x7b, 0xeb, 0xe2, 0x79, 0xa6, 0xf9, - 0xb3, 0xbb, 0xa5, 0xaf, 0x4b, 0xf8, 0xa4, 0x21, 0xeb, 0xeb, 0x01, 0x33, 0xc1, 0xd1, 0x9c, 0xee, - 0x96, 0xbe, 0x21, 0xe1, 0x2b, 0x83, 0xac, 0xd7, 0x3c, 0x33, 0xbb, 0x53, 0xa3, 0x39, 0xdd, 0x2d, - 0x7d, 0x13, 0x6f, 0xf1, 0x75, 0x59, 0xbf, 0x13, 0x30, 0x83, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9, - 0x5b, 0x12, 0x3e, 0x06, 0xc9, 0xfa, 0x5d, 0xc3, 0xed, 0xdd, 0xf7, 0x4c, 0xc5, 0x57, 0x70, 0x4b, - 0x9f, 0x49, 0xf8, 0x66, 0x24, 0xeb, 0xf7, 0x82, 0x86, 0xd0, 0x33, 0x29, 0xaf, 0xe2, 0x96, 0xbe, - 0x4d, 0x2d, 0x15, 0xeb, 0xf2, 0xfa, 0xaa, 0xe1, 0x0e, 0x40, 0xf0, 0x4c, 0xca, 0xab, 0xb8, 0xa5, - 0xef, 0x50, 0x53, 0x4a, 0x5d, 0x5e, 0x5f, 0x0b, 0x99, 0xaa, 0xe9, 0xf5, 0x47, 0x50, 0x38, 0xab, - 0x5b, 0xfa, 0xae, 0xf8, 0x16, 0x97, 0xef, 0x0a, 0xbe, 0x69, 0x47, 0xd8, 0xb3, 0x53, 0x1d, 0xd3, - 0xf7, 0x30, 0xc7, 0xa9, 0xcf, 0x3d, 0x61, 0xef, 0x55, 0x8c, 0xe0, 0x6f, 0x1f, 0x73, 0x53, 0x5b, - 0xfe, 0xf9, 0x38, 0xd5, 0x47, 0x7d, 0x5f, 0xc2, 0x47, 0xad, 0x02, 0x37, 0x88, 0x78, 0xef, 0xa4, - 0x30, 0x87, 0xf5, 0xa1, 0x3f, 0xcb, 0xd3, 0xbc, 0xd5, 0x0f, 0xa4, 0x57, 0x71, 0x57, 0xf5, 0x44, - 0x6b, 0xbb, 0xe1, 0x2d, 0x06, 0xd6, 0xbc, 0x0d, 0xc9, 0x63, 0x6d, 0x75, 0x4d, 0xbc, 0x92, 0x89, - 0x6f, 0xb9, 0xcc, 0x49, 0xe5, 0xb5, 0xa2, 0xf0, 0xdc, 0x3d, 0x1c, 0x39, 0x27, 0x06, 0xb2, 0x38, - 0x5b, 0x8b, 0x64, 0x7f, 0x12, 0xc3, 0xd6, 0x38, 0xbb, 0x1a, 0xc9, 0xfe, 0x34, 0x86, 0x5d, 0xe5, - 0x6c, 0x3d, 0x92, 0xfd, 0xd5, 0x18, 0xb6, 0xce, 0xd9, 0xeb, 0x91, 0xec, 0xaf, 0xc5, 0xb0, 0xd7, - 0x39, 0xbb, 0x16, 0xc9, 0xfe, 0x7a, 0x0c, 0xbb, 0xc6, 0xd9, 0x77, 0x22, 0xd9, 0xdf, 0x88, 0x61, - 0xdf, 0xe1, 0xec, 0xbb, 0x91, 0xec, 0x6f, 0xc6, 0xb0, 0xef, 0x72, 0xf6, 0xbd, 0x48, 0xf6, 0xb7, - 0x62, 0xd8, 0xf7, 0x18, 0x7b, 0x6d, 0x35, 0x92, 0xfd, 0x59, 0x34, 0x7b, 0x6d, 0x95, 0xb3, 0xa3, - 0xb5, 0xf6, 0xed, 0x18, 0x36, 0xd7, 0xda, 0x5a, 0xb4, 0xd6, 0xbe, 0x13, 0xc3, 0xe6, 0x5a, 0x5b, - 0x8b, 0xd6, 0xda, 0x77, 0x63, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x5e, 0x0c, 0x9b, 0x6b, - 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8f, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x07, 0x31, 0x6c, - 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x51, 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0x7f, 0x1c, - 0xc3, 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x9f, 0xc4, 0xb0, 0xb9, 0xd6, 0xb4, 0x68, 0xad, 0xfd, - 0x69, 0x34, 0x5b, 0xe3, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x67, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, - 0x6b, 0x7f, 0x1e, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0xc3, 0x18, 0x36, 0xd7, 0x9a, 0x16, - 0xad, 0xb5, 0xbf, 0x88, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xcb, 0x18, 0x36, 0xd7, 0x9a, - 0x16, 0xad, 0xb5, 0xbf, 0x8a, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xeb, 0x18, 0x36, 0xd7, - 0x9a, 0x16, 0xad, 0xb5, 0xbf, 0x89, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xdb, 0x18, 0x36, - 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0x7f, 0x17, 0xcd, 0xae, 0x72, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xf7, - 0x31, 0x6c, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x21, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, - 0x3f, 0xc6, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0x51, 0x0c, 0x9b, 0x6b, 0xad, 0x1a, 0xad, - 0xb5, 0x7f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xcf, 0x31, 0x6c, 0xae, 0xb5, 0x6a, - 0xb4, 0xd6, 0xfe, 0x25, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc6, 0xb0, 0xb9, 0xd6, - 0xaa, 0xd1, 0x5a, 0xfb, 0xb7, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0x7f, 0x8f, 0x66, 0xeb, - 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x23, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0x3f, 0x63, - 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x2b, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0xbf, - 0x63, 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x27, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, - 0xc7, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0x3f, 0x89, 0x61, 0x73, 0xad, 0xe9, 0xd1, 0x5a, - 0xfb, 0xdf, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0xff, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x47, - 0x6b, 0xed, 0xff, 0xa3, 0xd9, 0xeb, 0xab, 0x3f, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xcd, - 0x32, 0x57, 0x39, 0x00, 0x00, + 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0xda, + 0x4e, 0xbb, 0x7c, 0x1d, 0xd2, 0x9b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0xe8, 0xda, 0x76, + 0x49, 0x52, 0xe5, 0xca, 0xbc, 0x36, 0xb7, 0xe2, 0x22, 0x56, 0x36, 0x9a, 0x4d, 0x83, 0xb6, 0x94, + 0xef, 0x40, 0x7e, 0xd3, 0xde, 0x37, 0x27, 0xce, 0x46, 0xdf, 0x1c, 0x74, 0xc8, 0x22, 0xa4, 0x9e, + 0xb6, 0x0f, 0xcc, 0x01, 0x32, 0x72, 0x46, 0x6a, 0x40, 0x0b, 0x84, 0x40, 0x72, 0xff, 0x64, 0x64, + 0x96, 0x64, 0xac, 0x4c, 0x3a, 0x27, 0x23, 0xb3, 0xfc, 0x2b, 0x57, 0x68, 0x27, 0x94, 0x49, 0xae, + 0x43, 0xf2, 0xcb, 0x7d, 0xab, 0xc3, 0x7b, 0x79, 0xcd, 0xef, 0x85, 0xb5, 0xaf, 0x7c, 0x79, 0x6b, + 0xe7, 0xb1, 0x91, 0x7c, 0xde, 0xb7, 0xd0, 0xfe, 0x7e, 0xfb, 0x60, 0x40, 0x4d, 0x49, 0xd4, 0xbe, + 0x43, 0x0b, 0xb4, 0x76, 0xb7, 0x3d, 0x6e, 0x0f, 0x4b, 0x09, 0x55, 0xaa, 0xa4, 0x8c, 0xd4, 0x88, + 0x16, 0xc8, 0x7d, 0x98, 0x33, 0xcc, 0x17, 0x47, 0xfd, 0xb1, 0xd9, 0xc1, 0xc1, 0x95, 0x92, 0xaa, + 0x5c, 0xc9, 0x4f, 0xdb, 0xc7, 0x46, 0x63, 0x6e, 0x2c, 0x62, 0x19, 0x79, 0x64, 0xb6, 0x1d, 0x97, + 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xcd, 0x91, 0xd3, 0xb7, 0xad, 0xf6, 0x80, 0x91, + 0xd3, 0xaa, 0x14, 0x43, 0xb6, 0x45, 0x2c, 0x79, 0x13, 0x8a, 0x1b, 0xad, 0x87, 0xb6, 0x3d, 0x68, + 0xb9, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x97, 0xd6, 0xba, 0x53, 0x22, 0x15, 0x50, + 0x36, 0x5a, 0x5b, 0x96, 0x53, 0xd5, 0x7c, 0x60, 0x5e, 0x95, 0x2b, 0x29, 0x63, 0xbe, 0x8b, 0xd5, + 0x53, 0xc8, 0x9a, 0xee, 0x23, 0x0b, 0xaa, 0x5c, 0x49, 0x30, 0x64, 0x4d, 0xf7, 0x90, 0xb7, 0x80, + 0x6c, 0xb4, 0x36, 0xfa, 0xc7, 0x66, 0x47, 0xb4, 0x3a, 0xa7, 0xca, 0x95, 0x8c, 0xa1, 0x74, 0x79, + 0xc3, 0x0c, 0xb4, 0x68, 0x79, 0x5e, 0x95, 0x2b, 0x69, 0x17, 0x2d, 0xd8, 0xbe, 0x01, 0x0b, 0x1b, + 0xad, 0x77, 0xfb, 0xc1, 0x01, 0x17, 0x55, 0xb9, 0x32, 0x67, 0x14, 0xbb, 0xac, 0x7e, 0x1a, 0x2b, + 0x1a, 0x56, 0x54, 0xb9, 0x92, 0xe4, 0x58, 0xc1, 0x2e, 0xce, 0x6e, 0x63, 0x60, 0xb7, 0x1d, 0x1f, + 0xba, 0xa0, 0xca, 0x15, 0xd9, 0x98, 0xef, 0x62, 0x75, 0xd0, 0xea, 0x63, 0xfb, 0xe8, 0x60, 0x60, + 0xfa, 0x50, 0xa2, 0xca, 0x15, 0xc9, 0x28, 0x76, 0x59, 0x7d, 0x10, 0xbb, 0xe7, 0x8c, 0xfb, 0x56, + 0xcf, 0xc7, 0x9e, 0x47, 0xfd, 0x16, 0xbb, 0xac, 0x3e, 0x38, 0x82, 0x87, 0x27, 0x8e, 0x39, 0xf1, + 0xa1, 0xa6, 0x2a, 0x57, 0x0a, 0xc6, 0x7c, 0x17, 0xab, 0x43, 0x56, 0x43, 0x6b, 0xd0, 0x55, 0xe5, + 0xca, 0x02, 0xb5, 0x3a, 0x63, 0x0d, 0xf6, 0x42, 0x6b, 0xd0, 0x53, 0xe5, 0x0a, 0xe1, 0x58, 0x61, + 0x0d, 0x44, 0xcd, 0x30, 0x21, 0x96, 0x16, 0xd5, 0x84, 0xa0, 0x19, 0x56, 0x19, 0xd4, 0x0c, 0x07, + 0xbe, 0xa6, 0x26, 0x44, 0xcd, 0x84, 0x90, 0xd8, 0x39, 0x47, 0x5e, 0x50, 0x13, 0xa2, 0x66, 0x38, + 0x32, 0xa4, 0x19, 0x8e, 0x7d, 0x5d, 0x4d, 0x04, 0x35, 0x33, 0x85, 0x16, 0x2d, 0x97, 0xd4, 0x44, + 0x50, 0x33, 0x1c, 0x1d, 0xd4, 0x0c, 0x07, 0x5f, 0x54, 0x13, 0x01, 0xcd, 0x84, 0xb1, 0xa2, 0xe1, + 0x25, 0x35, 0x11, 0xd0, 0x8c, 0x38, 0x3b, 0x57, 0x33, 0x1c, 0xba, 0xac, 0x26, 0x44, 0xcd, 0x88, + 0x56, 0x3d, 0xcd, 0x70, 0xe8, 0x25, 0x35, 0x11, 0xd0, 0x8c, 0x88, 0xf5, 0x34, 0xc3, 0xb1, 0x97, + 0xd5, 0x44, 0x40, 0x33, 0x1c, 0x7b, 0x5d, 0xd4, 0x0c, 0x87, 0x7e, 0x2c, 0xa9, 0x09, 0x51, 0x34, + 0x1c, 0x7a, 0x33, 0x20, 0x1a, 0x8e, 0xfd, 0x84, 0x62, 0x45, 0xd5, 0x84, 0xc1, 0xe2, 0x2a, 0x7c, + 0x4a, 0xc1, 0xa2, 0x6c, 0x38, 0xd8, 0x97, 0x8d, 0xeb, 0x82, 0x4a, 0x57, 0x54, 0xc9, 0x93, 0x8d, + 0xeb, 0xc3, 0x44, 0xd9, 0x78, 0xc0, 0xab, 0xe8, 0x6a, 0xb9, 0x6c, 0xa6, 0x90, 0x35, 0xdd, 0x47, + 0xaa, 0xaa, 0xe4, 0xcb, 0xc6, 0x43, 0x06, 0x64, 0xe3, 0x61, 0xaf, 0xa9, 0x92, 0x28, 0x9b, 0x19, + 0x68, 0xd1, 0x72, 0x59, 0x95, 0x44, 0xd9, 0x78, 0x68, 0x51, 0x36, 0x1e, 0xf8, 0x0b, 0xaa, 0x24, + 0xc8, 0x66, 0x1a, 0x2b, 0x1a, 0xfe, 0xa2, 0x2a, 0x09, 0xb2, 0x09, 0xce, 0x8e, 0xc9, 0xc6, 0x83, + 0xbe, 0xa1, 0x4a, 0xbe, 0x6c, 0x82, 0x56, 0xb9, 0x6c, 0x3c, 0xe8, 0x9b, 0xaa, 0x24, 0xc8, 0x26, + 0x88, 0xe5, 0xb2, 0xf1, 0xb0, 0x6f, 0x61, 0x7c, 0x73, 0x65, 0xe3, 0x61, 0x05, 0xd9, 0x78, 0xd0, + 0xdf, 0xa1, 0xb1, 0xd0, 0x93, 0x8d, 0x07, 0x15, 0x65, 0xe3, 0x61, 0x7f, 0x97, 0x62, 0x7d, 0xd9, + 0x4c, 0x83, 0xc5, 0x55, 0xf8, 0x3d, 0x0a, 0xf6, 0x65, 0xe3, 0x81, 0x57, 0x70, 0x10, 0x54, 0x36, + 0x1d, 0xb3, 0xdb, 0x3e, 0x1a, 0x50, 0x89, 0x55, 0xa8, 0x6e, 0xea, 0x49, 0x67, 0x7c, 0x64, 0xd2, + 0x91, 0xd8, 0xf6, 0xe0, 0xb1, 0xdb, 0x46, 0x56, 0xa8, 0x71, 0x26, 0x1f, 0x9f, 0x70, 0x9d, 0xea, + 0xa7, 0x2e, 0x57, 0x35, 0xa3, 0xc8, 0x34, 0x34, 0x8d, 0xaf, 0xe9, 0x02, 0xfe, 0x06, 0x55, 0x51, + 0x5d, 0xae, 0xe9, 0x0c, 0x5f, 0xd3, 0x7d, 0x7c, 0x15, 0xce, 0xfb, 0x52, 0xf2, 0x19, 0x37, 0xa9, + 0x96, 0xea, 0x89, 0xaa, 0xb6, 0x6a, 0x2c, 0xb8, 0x82, 0x9a, 0x45, 0x0a, 0x74, 0x73, 0x8b, 0x4a, + 0xaa, 0x9e, 0xa8, 0xe9, 0x1e, 0x49, 0xec, 0x49, 0xa3, 0x32, 0xe4, 0xc2, 0xf2, 0x39, 0xb7, 0xa9, + 0xb2, 0xea, 0xc9, 0xaa, 0xb6, 0xba, 0x6a, 0x28, 0x5c, 0x5f, 0x33, 0x38, 0x81, 0x7e, 0x56, 0xa8, + 0xc2, 0xea, 0xc9, 0x9a, 0xee, 0x71, 0x82, 0xfd, 0x2c, 0xb8, 0x42, 0xf3, 0x29, 0x5f, 0xa2, 0x4a, + 0xab, 0xa7, 0xab, 0x6b, 0xfa, 0xda, 0xfa, 0x3d, 0xa3, 0xc8, 0x14, 0xe7, 0x73, 0x74, 0xda, 0x0f, + 0x97, 0x9c, 0x4f, 0x5a, 0xa5, 0x9a, 0xab, 0xa7, 0xb5, 0x3b, 0x6b, 0x77, 0xb5, 0xbb, 0x86, 0xc2, + 0xb5, 0xe7, 0xb3, 0xde, 0xa1, 0x2c, 0x2e, 0x3e, 0x9f, 0xb5, 0x46, 0xd5, 0x57, 0x57, 0x9e, 0x99, + 0x83, 0x81, 0x7d, 0x4b, 0x2d, 0xbf, 0xb4, 0xc7, 0x83, 0xce, 0xb5, 0x32, 0x18, 0x0a, 0xd7, 0xa3, + 0xd8, 0xeb, 0x82, 0x2b, 0x48, 0x9f, 0xfe, 0x6b, 0xf4, 0x1e, 0x56, 0xa8, 0x67, 0x1e, 0xf6, 0x7b, + 0x96, 0x3d, 0x31, 0x8d, 0x22, 0x93, 0x66, 0x68, 0x4d, 0xf6, 0xc2, 0xeb, 0xf8, 0xeb, 0x94, 0xb6, + 0x50, 0x4f, 0xdc, 0xae, 0x6a, 0xb4, 0xa7, 0x59, 0xeb, 0xb8, 0x17, 0x5e, 0xc7, 0xdf, 0xa0, 0x1c, + 0x52, 0x4f, 0xdc, 0xae, 0xe9, 0x9c, 0x23, 0xae, 0xe3, 0x1d, 0xb8, 0x10, 0x8a, 0x8b, 0xad, 0x51, + 0xfb, 0xf0, 0xb9, 0xd9, 0x29, 0x69, 0x34, 0x3c, 0x3e, 0x94, 0x15, 0xc9, 0x38, 0x1f, 0x08, 0x91, + 0xbb, 0xd8, 0x4c, 0xee, 0xc1, 0xeb, 0xe1, 0x40, 0xe9, 0x32, 0xab, 0x34, 0x5e, 0x22, 0x73, 0x31, + 0x18, 0x33, 0x43, 0x54, 0xc1, 0x01, 0xbb, 0x54, 0x9d, 0x06, 0x50, 0x9f, 0xea, 0x7b, 0x62, 0x4e, + 0xfd, 0x19, 0xb8, 0x38, 0x1d, 0x4a, 0x5d, 0xf2, 0x3a, 0x8d, 0xa8, 0x48, 0xbe, 0x10, 0x8e, 0xaa, + 0x53, 0xf4, 0x19, 0x7d, 0xd7, 0x68, 0x88, 0x15, 0xe9, 0x53, 0xbd, 0xdf, 0x87, 0xd2, 0x54, 0xb0, + 0x75, 0xd9, 0x77, 0x68, 0xcc, 0x45, 0xf6, 0x6b, 0xa1, 0xb8, 0x1b, 0x26, 0xcf, 0xe8, 0xfa, 0x2e, + 0x0d, 0xc2, 0x02, 0x79, 0xaa, 0x67, 0x5c, 0xb2, 0x60, 0x38, 0x76, 0xb9, 0xf7, 0x68, 0x54, 0xe6, + 0x4b, 0x16, 0x88, 0xcc, 0x62, 0xbf, 0xa1, 0xf8, 0xec, 0x72, 0xeb, 0x34, 0x4c, 0xf3, 0x7e, 0x83, + 0xa1, 0x9a, 0x93, 0xdf, 0xa6, 0xe4, 0xbd, 0xd9, 0x33, 0xfe, 0x71, 0x82, 0x06, 0x58, 0xce, 0xde, + 0x9b, 0x35, 0x65, 0x8f, 0x3d, 0x63, 0xca, 0x3f, 0xa1, 0x6c, 0x22, 0xb0, 0xa7, 0xe6, 0xfc, 0x18, + 0xbc, 0x8c, 0xa3, 0x37, 0xb6, 0x8f, 0x46, 0xa5, 0x0d, 0x55, 0xae, 0x80, 0x76, 0x65, 0x2a, 0xfb, + 0x71, 0x2f, 0x79, 0x9b, 0x14, 0x65, 0x04, 0x49, 0xcc, 0x0a, 0xb3, 0xcb, 0xac, 0xec, 0xaa, 0x89, + 0x08, 0x2b, 0x0c, 0xe5, 0x59, 0x11, 0x48, 0xd4, 0x8a, 0xeb, 0xf4, 0x99, 0x95, 0x0f, 0x54, 0x69, + 0xa6, 0x15, 0x37, 0x04, 0x70, 0x2b, 0x01, 0xd2, 0xd2, 0xba, 0x9f, 0x6f, 0x61, 0x3b, 0xf9, 0x62, + 0x38, 0x01, 0xdb, 0xc4, 0xfb, 0x73, 0x30, 0xd3, 0x62, 0x34, 0x61, 0x70, 0xd3, 0xb4, 0x9f, 0x8d, + 0xa0, 0x05, 0x46, 0x33, 0x4d, 0xfb, 0xb9, 0x19, 0xb4, 0xf2, 0x6f, 0x4a, 0x90, 0xa4, 0xf9, 0x24, + 0xc9, 0x42, 0xf2, 0xbd, 0xe6, 0xd6, 0x63, 0xe5, 0x1c, 0xfd, 0xf5, 0xb0, 0xd9, 0x7c, 0xaa, 0x48, + 0x24, 0x07, 0xa9, 0x87, 0x5f, 0xd9, 0x6f, 0xec, 0x29, 0x32, 0x29, 0x42, 0x7e, 0x63, 0x6b, 0x67, + 0xb3, 0x61, 0xec, 0x1a, 0x5b, 0x3b, 0xfb, 0x4a, 0x82, 0xb6, 0x6d, 0x3c, 0x6d, 0x3e, 0xd8, 0x57, + 0x92, 0x24, 0x03, 0x09, 0x5a, 0x97, 0x22, 0x00, 0xe9, 0xbd, 0x7d, 0x63, 0x6b, 0x67, 0x53, 0x49, + 0x53, 0x2b, 0xfb, 0x5b, 0xdb, 0x0d, 0x25, 0x43, 0x91, 0xfb, 0xef, 0xee, 0x3e, 0x6d, 0x28, 0x59, + 0xfa, 0xf3, 0x81, 0x61, 0x3c, 0xf8, 0x8a, 0x92, 0xa3, 0xa4, 0xed, 0x07, 0xbb, 0x0a, 0x60, 0xf3, + 0x83, 0x87, 0x4f, 0x1b, 0x4a, 0x9e, 0x14, 0x20, 0xbb, 0xf1, 0xee, 0xce, 0xa3, 0xfd, 0xad, 0xe6, + 0x8e, 0x52, 0x28, 0x9f, 0x40, 0x89, 0x2d, 0x73, 0x60, 0x15, 0x59, 0x52, 0xf8, 0x0e, 0xa4, 0xd8, + 0xce, 0x48, 0xa8, 0x92, 0x4a, 0x78, 0x67, 0xa6, 0x29, 0x2b, 0x6c, 0x8f, 0x18, 0x6d, 0xe9, 0x32, + 0xa4, 0xd8, 0x2a, 0x2d, 0x42, 0x8a, 0xad, 0x8e, 0x8c, 0xa9, 0x62, 0xaa, 0x8b, 0xab, 0xf2, 0x5b, + 0x32, 0xc0, 0xa6, 0xbd, 0xf7, 0xbc, 0x3f, 0xc2, 0x84, 0xfc, 0x32, 0xc0, 0xe4, 0x79, 0x7f, 0xd4, + 0x42, 0xd5, 0xf3, 0xa4, 0x32, 0x47, 0x6b, 0xd0, 0xdf, 0x91, 0x6b, 0x50, 0xc0, 0xe6, 0x2e, 0xf3, + 0x42, 0x98, 0x4b, 0x66, 0x8c, 0x3c, 0xad, 0xe3, 0x8e, 0x29, 0x08, 0xa9, 0xe9, 0x98, 0x42, 0xa6, + 0x05, 0x48, 0x4d, 0x27, 0x57, 0x01, 0x8b, 0xad, 0x09, 0x46, 0x14, 0x4c, 0x1b, 0x73, 0x06, 0xf6, + 0xcb, 0x62, 0x0c, 0x79, 0x1b, 0xb0, 0x4f, 0x36, 0xef, 0xe2, 0xf4, 0xe9, 0x70, 0x87, 0xbb, 0x42, + 0x7f, 0xb0, 0xd9, 0xfa, 0x84, 0xa5, 0x26, 0xe4, 0xbc, 0x7a, 0xda, 0x17, 0xd6, 0xf2, 0x19, 0x29, + 0x38, 0x23, 0xc0, 0x2a, 0x6f, 0x4a, 0x0c, 0xc0, 0x47, 0xb3, 0x80, 0xa3, 0x61, 0x24, 0x36, 0x9c, + 0xf2, 0x65, 0x98, 0xdb, 0xb1, 0x2d, 0x76, 0x7a, 0x71, 0x95, 0x0a, 0x20, 0xb5, 0x4b, 0x12, 0x66, + 0x4f, 0x52, 0xbb, 0x7c, 0x05, 0x40, 0x68, 0x53, 0x40, 0x3a, 0x60, 0x6d, 0xe8, 0x03, 0xa4, 0x83, + 0xf2, 0x4d, 0x48, 0x6f, 0xb7, 0x8f, 0xf7, 0xdb, 0x3d, 0x72, 0x0d, 0x60, 0xd0, 0x9e, 0x38, 0x2d, + 0x5c, 0xfa, 0xd2, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c, 0xad, 0x65, 0x2a, 0x7d, + 0x01, 0xd0, 0x1c, 0x74, 0xb6, 0xcd, 0xc9, 0xa4, 0xdd, 0x33, 0x49, 0x15, 0xd2, 0x96, 0x39, 0xa1, + 0xd1, 0x4e, 0xc2, 0x77, 0x84, 0x65, 0x7f, 0x15, 0x7c, 0xd4, 0xca, 0x0e, 0x42, 0x0c, 0x0e, 0x25, + 0x0a, 0x24, 0xac, 0xa3, 0x21, 0xbe, 0x93, 0xa4, 0x0c, 0xfa, 0x73, 0xe9, 0x12, 0xa4, 0x19, 0x86, + 0x10, 0x48, 0x5a, 0xed, 0xa1, 0x59, 0x62, 0xfd, 0xe2, 0xef, 0xf2, 0xaf, 0x4a, 0x00, 0x3b, 0xe6, + 0xcb, 0x33, 0xf4, 0xe9, 0xa3, 0x62, 0xfa, 0x4c, 0xb0, 0x3e, 0xef, 0xc7, 0xf5, 0x49, 0x75, 0xd6, + 0xb5, 0xed, 0x4e, 0x8b, 0x6d, 0x31, 0x7b, 0xd2, 0xc9, 0xd1, 0x1a, 0xdc, 0xb5, 0xf2, 0x07, 0x50, + 0xd8, 0xb2, 0x2c, 0x73, 0xec, 0x8e, 0x89, 0x40, 0xf2, 0x99, 0x3d, 0x71, 0xf8, 0xdb, 0x12, 0xfe, + 0x26, 0x25, 0x48, 0x8e, 0xec, 0xb1, 0xc3, 0xe6, 0x59, 0x4f, 0xea, 0xab, 0xab, 0xab, 0x06, 0xd6, + 0x90, 0x4b, 0x90, 0x3b, 0xb4, 0x2d, 0xcb, 0x3c, 0xa4, 0x93, 0x48, 0x60, 0x5a, 0xe3, 0x57, 0x94, + 0x7f, 0x59, 0x82, 0x42, 0xd3, 0x79, 0xe6, 0x1b, 0x57, 0x20, 0xf1, 0xdc, 0x3c, 0xc1, 0xe1, 0x25, + 0x0c, 0xfa, 0x93, 0x1e, 0x95, 0x9f, 0x6f, 0x0f, 0x8e, 0xd8, 0x5b, 0x53, 0xc1, 0x60, 0x05, 0x72, + 0x01, 0xd2, 0x2f, 0xcd, 0x7e, 0xef, 0x99, 0x83, 0x36, 0x65, 0x83, 0x97, 0xc8, 0x2d, 0x48, 0xf5, + 0xe9, 0x60, 0x4b, 0x49, 0x5c, 0xaf, 0x0b, 0xfe, 0x7a, 0x89, 0x73, 0x30, 0x18, 0xe8, 0x46, 0x36, + 0xdb, 0x51, 0x3e, 0xfa, 0xe8, 0xa3, 0x8f, 0xe4, 0x72, 0x17, 0x16, 0xdd, 0xc3, 0x1b, 0x98, 0xec, + 0x0e, 0x94, 0x06, 0xa6, 0xdd, 0xea, 0xf6, 0xad, 0xf6, 0x60, 0x70, 0xd2, 0x7a, 0x69, 0x5b, 0xad, + 0xb6, 0xd5, 0xb2, 0x27, 0x87, 0xed, 0x31, 0x2e, 0x40, 0x74, 0x17, 0x8b, 0x03, 0xd3, 0xde, 0x60, + 0xb4, 0xf7, 0x6d, 0xeb, 0x81, 0xd5, 0xa4, 0x9c, 0xf2, 0x1f, 0x24, 0x21, 0xb7, 0x7d, 0xe2, 0x5a, + 0x5f, 0x84, 0xd4, 0xa1, 0x7d, 0x64, 0xb1, 0xb5, 0x4c, 0x19, 0xac, 0xe0, 0xed, 0x91, 0x2c, 0xec, + 0xd1, 0x22, 0xa4, 0x5e, 0x1c, 0xd9, 0x8e, 0x89, 0xd3, 0xcd, 0x19, 0xac, 0x40, 0x57, 0x6b, 0x64, + 0x3a, 0xa5, 0x24, 0x26, 0xb7, 0xf4, 0xa7, 0x3f, 0xff, 0xd4, 0x19, 0xe6, 0x4f, 0x56, 0x20, 0x6d, + 0xd3, 0xd5, 0x9f, 0x94, 0xd2, 0xf8, 0xae, 0x26, 0xc0, 0xc5, 0x5d, 0x31, 0x38, 0x8a, 0x6c, 0xc1, + 0xc2, 0x4b, 0xb3, 0x35, 0x3c, 0x9a, 0x38, 0xad, 0x9e, 0xdd, 0xea, 0x98, 0xe6, 0xc8, 0x1c, 0x97, + 0xe6, 0xb0, 0x27, 0xc1, 0x27, 0xcc, 0x5a, 0x48, 0x63, 0xfe, 0xa5, 0xb9, 0x7d, 0x34, 0x71, 0x36, + 0xed, 0xc7, 0xc8, 0x22, 0x55, 0xc8, 0x8d, 0x4d, 0xea, 0x09, 0xe8, 0x60, 0x0b, 0xe1, 0xde, 0x03, + 0xd4, 0xec, 0xd8, 0x1c, 0x61, 0x05, 0x59, 0x87, 0xec, 0x41, 0xff, 0xb9, 0x39, 0x79, 0x66, 0x76, + 0x4a, 0x19, 0x55, 0xaa, 0xcc, 0x6b, 0x17, 0x7d, 0x8e, 0xb7, 0xac, 0x2b, 0x8f, 0xec, 0x81, 0x3d, + 0x36, 0x3c, 0x28, 0xb9, 0x0f, 0xb9, 0x89, 0x3d, 0x34, 0x99, 0xbe, 0xb3, 0x18, 0x54, 0x2f, 0xcf, + 0xe2, 0xed, 0xd9, 0x43, 0xd3, 0xf5, 0x60, 0x2e, 0x9e, 0x2c, 0xb3, 0x81, 0x1e, 0xd0, 0xab, 0x73, + 0x09, 0xf0, 0x69, 0x80, 0x0e, 0x08, 0xaf, 0xd2, 0x64, 0x89, 0x0e, 0xa8, 0xd7, 0xa5, 0x37, 0xa2, + 0x52, 0x1e, 0xf3, 0x4a, 0xaf, 0xbc, 0x74, 0x0b, 0x72, 0x9e, 0x41, 0xdf, 0xf5, 0x31, 0x77, 0x93, + 0x43, 0x7f, 0xc0, 0x5c, 0x1f, 0xf3, 0x35, 0x6f, 0x40, 0x0a, 0x87, 0x4d, 0x23, 0x94, 0xd1, 0xa0, + 0x01, 0x31, 0x07, 0xa9, 0x4d, 0xa3, 0xd1, 0xd8, 0x51, 0x24, 0x8c, 0x8d, 0x4f, 0xdf, 0x6d, 0x28, + 0xb2, 0xa0, 0xd8, 0xdf, 0x96, 0x20, 0xd1, 0x38, 0x46, 0xb5, 0xd0, 0x69, 0xb8, 0x27, 0x9a, 0xfe, + 0xd6, 0x6a, 0x90, 0x1c, 0xda, 0x63, 0x93, 0x9c, 0x9f, 0x31, 0xcb, 0x52, 0x0f, 0xf7, 0x4b, 0x78, + 0x45, 0x6e, 0x1c, 0x3b, 0x06, 0xe2, 0xb5, 0xb7, 0x20, 0xe9, 0x98, 0xc7, 0xce, 0x6c, 0xde, 0x33, + 0xd6, 0x01, 0x05, 0x68, 0x37, 0x21, 0x6d, 0x1d, 0x0d, 0x0f, 0xcc, 0xf1, 0x6c, 0x68, 0x1f, 0xa7, + 0xc7, 0x21, 0xe5, 0xf7, 0x40, 0x79, 0x64, 0x0f, 0x47, 0x03, 0xf3, 0xb8, 0x71, 0xec, 0x98, 0xd6, + 0xa4, 0x6f, 0x5b, 0x54, 0xcf, 0xdd, 0xfe, 0x18, 0xbd, 0x88, 0xc4, 0x02, 0xe0, 0x78, 0xe2, 0xd0, + 0x53, 0x3d, 0x31, 0x0f, 0x6d, 0xab, 0xc3, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3, 0xac, 0x3f, 0xa6, + 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x42, 0x91, 0xe7, 0x18, 0x13, 0xde, 0x71, 0xf9, 0x06, + 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x54, 0xce, 0xd1, 0x65, 0x6d, + 0xee, 0x34, 0x14, 0x89, 0xfe, 0xd8, 0x7f, 0xbf, 0x19, 0x58, 0xca, 0x4b, 0x50, 0xf0, 0xc6, 0xbe, + 0x67, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52, 0x8d, 0xe1, 0xc8, + 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90, 0x19, 0xf2, 0xf9, + 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa, 0x42, 0x46, 0xf0, + 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2, 0x36, 0x64, 0x58, + 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab, 0x63, 0x17, 0x95, + 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf, 0x9f, 0x82, 0xac, + 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a, 0x33, 0x32, 0xb2, + 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e, 0xaf, 0xb1, 0xa6, + 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e, 0x85, 0xfe, 0x98, + 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7, 0xcf, 0x76, 0xfd, + 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff, 0xf1, 0x01, 0x35, + 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62, 0xce, 0x82, 0x47, + 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0, 0xb9, 0xf4, 0xf3, + 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4, 0x3c, 0xc3, 0x93, + 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b, 0xc0, 0xc9, 0x15, + 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc, 0xb2, 0x79, 0x89, + 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e, 0xb0, 0xe4, 0x0b, + 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x2e, 0x9e, 0x86, 0x25, 0xca, 0xdb, + 0xed, 0x5b, 0xdd, 0x52, 0x11, 0x57, 0x22, 0xd1, 0xb7, 0xba, 0x46, 0xaa, 0x4b, 0x6b, 0x98, 0x06, + 0x76, 0x68, 0x9b, 0x82, 0x6d, 0xc9, 0xdb, 0xac, 0x91, 0x56, 0x91, 0x12, 0xa4, 0x36, 0x5a, 0x3b, + 0x6d, 0xab, 0xb4, 0xc0, 0x78, 0x56, 0xdb, 0x32, 0x92, 0xdd, 0x9d, 0xb6, 0x45, 0xde, 0x82, 0xc4, + 0xe4, 0xe8, 0xa0, 0x44, 0xc2, 0x5f, 0x56, 0xf6, 0x8e, 0x0e, 0xdc, 0xa1, 0x18, 0x14, 0x41, 0x96, + 0x21, 0x3b, 0x71, 0xc6, 0xad, 0x5f, 0x30, 0xc7, 0x76, 0xe9, 0x3c, 0x2e, 0xe1, 0x39, 0x23, 0x33, + 0x71, 0xc6, 0x1f, 0x98, 0x63, 0xfb, 0x8c, 0xce, 0xaf, 0x7c, 0x05, 0xf2, 0x82, 0x5d, 0x52, 0x04, + 0xc9, 0x62, 0x37, 0x85, 0xba, 0x74, 0xc7, 0x90, 0xac, 0xf2, 0x3e, 0x14, 0xdc, 0x1c, 0x06, 0xe7, + 0xab, 0xd1, 0x93, 0x34, 0xb0, 0xc7, 0x78, 0x3e, 0xe7, 0xb5, 0x4b, 0x62, 0x88, 0xf2, 0x61, 0x3c, + 0x5c, 0x30, 0x68, 0x59, 0x09, 0x0d, 0x45, 0x2a, 0xff, 0x50, 0x82, 0xc2, 0xb6, 0x3d, 0xf6, 0x1f, + 0x98, 0x17, 0x21, 0x75, 0x60, 0xdb, 0x83, 0x09, 0x9a, 0xcd, 0x1a, 0xac, 0x40, 0xde, 0x80, 0x02, + 0xfe, 0x70, 0x73, 0x4f, 0xd9, 0x7b, 0xda, 0xc8, 0x63, 0x3d, 0x4f, 0x38, 0x09, 0x24, 0xfb, 0x96, + 0x33, 0xe1, 0x9e, 0x0c, 0x7f, 0x93, 0x2f, 0x40, 0x9e, 0xfe, 0x75, 0x99, 0x49, 0xef, 0xc2, 0x0a, + 0xb4, 0x9a, 0x13, 0xdf, 0x82, 0x39, 0xdc, 0x7d, 0x0f, 0x96, 0xf1, 0x9e, 0x31, 0x0a, 0xac, 0x81, + 0x03, 0x4b, 0x90, 0x61, 0xae, 0x60, 0x82, 0x5f, 0xcb, 0x72, 0x86, 0x5b, 0xa4, 0xee, 0x15, 0x33, + 0x01, 0x16, 0xee, 0x33, 0x06, 0x2f, 0x95, 0x1f, 0x40, 0x16, 0xa3, 0x54, 0x73, 0xd0, 0x21, 0x65, + 0x90, 0x7a, 0x25, 0x13, 0x63, 0xe4, 0xa2, 0x70, 0xcd, 0xe7, 0xcd, 0x2b, 0x9b, 0x86, 0xd4, 0x5b, + 0x5a, 0x00, 0x69, 0x93, 0xde, 0xbb, 0x8f, 0xb9, 0x9b, 0x96, 0x8e, 0xcb, 0x4d, 0x6e, 0x62, 0xc7, + 0x7c, 0x19, 0x67, 0x62, 0xc7, 0x7c, 0xc9, 0x4c, 0x5c, 0x9d, 0x32, 0x41, 0x4b, 0x27, 0xfc, 0xd3, + 0xa1, 0x74, 0x52, 0xae, 0xc2, 0x1c, 0x1e, 0xcf, 0xbe, 0xd5, 0xdb, 0xb5, 0xfb, 0x16, 0xde, 0xf3, + 0xbb, 0x78, 0x4f, 0x92, 0x0c, 0xa9, 0x4b, 0xf7, 0xc0, 0x3c, 0x6e, 0x1f, 0xb2, 0x1b, 0x67, 0xd6, + 0x60, 0x85, 0xf2, 0x67, 0x49, 0x98, 0xe7, 0xae, 0xf5, 0xfd, 0xbe, 0xf3, 0x6c, 0xbb, 0x3d, 0x22, + 0x4f, 0xa1, 0x40, 0xbd, 0x6a, 0x6b, 0xd8, 0x1e, 0x8d, 0xe8, 0xf1, 0x95, 0xf0, 0xaa, 0x71, 0x7d, + 0xca, 0x55, 0x73, 0xfc, 0xca, 0x4e, 0x7b, 0x68, 0x6e, 0x33, 0x6c, 0xc3, 0x72, 0xc6, 0x27, 0x46, + 0xde, 0xf2, 0x6b, 0xc8, 0x16, 0xe4, 0x87, 0x93, 0x9e, 0x67, 0x4c, 0x46, 0x63, 0x95, 0x48, 0x63, + 0xdb, 0x93, 0x5e, 0xc0, 0x16, 0x0c, 0xbd, 0x0a, 0x3a, 0x30, 0xea, 0x8f, 0x3d, 0x5b, 0x89, 0x53, + 0x06, 0x46, 0x5d, 0x47, 0x70, 0x60, 0x07, 0x7e, 0x0d, 0x79, 0x0c, 0x40, 0x8f, 0x97, 0x63, 0xd3, + 0xd4, 0x09, 0x15, 0x94, 0xd7, 0xde, 0x8c, 0xb4, 0xb5, 0xe7, 0x8c, 0xf7, 0xed, 0x3d, 0x67, 0xcc, + 0x0c, 0xd1, 0x83, 0x89, 0xc5, 0xa5, 0x77, 0x40, 0x09, 0xcf, 0x5f, 0xbc, 0x91, 0xa7, 0x66, 0xdc, + 0xc8, 0x73, 0xfc, 0x46, 0x5e, 0x97, 0xef, 0x4a, 0x4b, 0xef, 0x41, 0x31, 0x34, 0x65, 0x91, 0x4e, + 0x18, 0xfd, 0xb6, 0x48, 0xcf, 0x6b, 0xaf, 0x0b, 0x9f, 0xb3, 0xc5, 0x0d, 0x17, 0xed, 0xbe, 0x03, + 0x4a, 0x78, 0xfa, 0xa2, 0xe1, 0x6c, 0x4c, 0xa6, 0x80, 0xfc, 0xfb, 0x30, 0x17, 0x98, 0xb2, 0x48, + 0xce, 0x9d, 0x32, 0xa9, 0xf2, 0x2f, 0xa5, 0x20, 0xd5, 0xb4, 0x4c, 0xbb, 0x4b, 0x5e, 0x0f, 0xc6, + 0xc9, 0x27, 0xe7, 0xdc, 0x18, 0x79, 0x31, 0x14, 0x23, 0x9f, 0x9c, 0xf3, 0x22, 0xe4, 0xc5, 0x50, + 0x84, 0x74, 0x9b, 0x6a, 0x3a, 0xb9, 0x3c, 0x15, 0x1f, 0x9f, 0x9c, 0x13, 0x82, 0xe3, 0xe5, 0xa9, + 0xe0, 0xe8, 0x37, 0xd7, 0x74, 0xea, 0x50, 0x83, 0x91, 0xf1, 0xc9, 0x39, 0x3f, 0x2a, 0x2e, 0x87, + 0xa3, 0xa2, 0xd7, 0x58, 0xd3, 0xd9, 0x90, 0x84, 0x88, 0x88, 0x43, 0x62, 0xb1, 0x70, 0x39, 0x1c, + 0x0b, 0x91, 0xc7, 0xa3, 0xe0, 0x72, 0x38, 0x0a, 0x62, 0x23, 0x8f, 0x7a, 0x17, 0x43, 0x51, 0x0f, + 0x8d, 0xb2, 0x70, 0xb7, 0x1c, 0x0e, 0x77, 0x8c, 0x27, 0x8c, 0x54, 0x8c, 0x75, 0x5e, 0x63, 0x4d, + 0x27, 0x5a, 0x28, 0xd0, 0x45, 0xdf, 0xf6, 0x71, 0x2f, 0xd0, 0xe9, 0xeb, 0x74, 0xd9, 0xdc, 0x8b, + 0x68, 0x31, 0xe6, 0x8b, 0x3f, 0xae, 0xa6, 0x7b, 0x11, 0xd3, 0x20, 0xd3, 0xe5, 0x09, 0xb0, 0x82, + 0x9e, 0x4b, 0x90, 0x25, 0x6e, 0xfe, 0xca, 0x46, 0x0b, 0x3d, 0x18, 0xce, 0x8b, 0xdd, 0xe9, 0x2b, + 0x30, 0xb7, 0xd1, 0x7a, 0xda, 0x1e, 0xf7, 0xcc, 0x89, 0xd3, 0xda, 0x6f, 0xf7, 0xbc, 0x47, 0x04, + 0xba, 0xff, 0xf9, 0x2e, 0x6f, 0xd9, 0x6f, 0xf7, 0xc8, 0x05, 0x57, 0x5c, 0x1d, 0x6c, 0x95, 0xb8, + 0xbc, 0x96, 0x5e, 0xa7, 0x8b, 0xc6, 0x8c, 0xa1, 0x2f, 0x5c, 0xe0, 0xbe, 0xf0, 0x61, 0x06, 0x52, + 0x47, 0x56, 0xdf, 0xb6, 0x1e, 0xe6, 0x20, 0xe3, 0xd8, 0xe3, 0x61, 0xdb, 0xb1, 0xcb, 0x3f, 0x92, + 0x00, 0x1e, 0xd9, 0xc3, 0xe1, 0x91, 0xd5, 0x7f, 0x71, 0x64, 0x92, 0x2b, 0x90, 0x1f, 0xb6, 0x9f, + 0x9b, 0xad, 0xa1, 0xd9, 0x3a, 0x1c, 0xbb, 0xe7, 0x20, 0x47, 0xab, 0xb6, 0xcd, 0x47, 0xe3, 0x13, + 0x52, 0x72, 0xaf, 0xe8, 0xa8, 0x1d, 0x94, 0x24, 0xbf, 0xb2, 0x2f, 0xf2, 0x4b, 0x67, 0x9a, 0xef, + 0xa1, 0x7b, 0xed, 0x64, 0x79, 0x44, 0x86, 0xef, 0x1e, 0x96, 0xa8, 0xe4, 0x1d, 0x73, 0x38, 0x6a, + 0x1d, 0xa2, 0x54, 0xa8, 0x1c, 0x52, 0xb4, 0xfc, 0x88, 0xdc, 0x86, 0xc4, 0xa1, 0x3d, 0x40, 0x91, + 0x9c, 0xb2, 0x2f, 0x14, 0x47, 0xde, 0x80, 0xc4, 0x70, 0xc2, 0x64, 0x93, 0xd7, 0x16, 0x84, 0x7b, + 0x02, 0x0b, 0x4d, 0x14, 0x36, 0x9c, 0xf4, 0xbc, 0x79, 0xdf, 0x28, 0x42, 0x62, 0xa3, 0xd9, 0xa4, + 0xb1, 0x7f, 0xa3, 0xd9, 0x5c, 0x53, 0xa4, 0xfa, 0x97, 0x20, 0xdb, 0x1b, 0x9b, 0x26, 0x75, 0x0f, + 0xb3, 0x73, 0x8e, 0x0f, 0x31, 0xd6, 0x79, 0xa0, 0xfa, 0x36, 0x64, 0x0e, 0x59, 0xd6, 0x41, 0x22, + 0xd2, 0xda, 0xd2, 0x1f, 0xb2, 0x47, 0x95, 0x25, 0xbf, 0x39, 0x9c, 0xa7, 0x18, 0xae, 0x8d, 0xfa, + 0x2e, 0xe4, 0xc6, 0xad, 0xd3, 0x0c, 0x7e, 0xcc, 0xa2, 0x4b, 0x9c, 0xc1, 0xec, 0x98, 0x57, 0xd5, + 0x1b, 0xb0, 0x60, 0xd9, 0xee, 0x37, 0x94, 0x56, 0x87, 0x9d, 0xb1, 0x8b, 0xd3, 0x57, 0x39, 0xd7, + 0xb8, 0xc9, 0xbe, 0x5b, 0x5a, 0x36, 0x6f, 0x60, 0xa7, 0xb2, 0xfe, 0x08, 0x14, 0xc1, 0x0c, 0xa6, + 0x9e, 0x71, 0x56, 0xba, 0xec, 0x43, 0xa9, 0x67, 0x05, 0xcf, 0x7d, 0xc8, 0x08, 0x3b, 0x99, 0x31, + 0x46, 0x7a, 0xec, 0xab, 0xb3, 0x67, 0x04, 0x5d, 0xdd, 0xb4, 0x11, 0xea, 0x6b, 0xa2, 0x8d, 0x3c, + 0x63, 0x1f, 0xa4, 0x45, 0x23, 0x35, 0x3d, 0xb4, 0x2a, 0x47, 0xa7, 0x0e, 0xa5, 0xcf, 0xbe, 0x27, + 0x7b, 0x56, 0x98, 0x03, 0x9c, 0x61, 0x26, 0x7e, 0x30, 0x1f, 0xb2, 0x4f, 0xcd, 0x01, 0x33, 0x53, + 0xa3, 0x99, 0x9c, 0x3a, 0x9a, 0xe7, 0xec, 0xbb, 0xae, 0x67, 0x66, 0x6f, 0xd6, 0x68, 0x26, 0xa7, + 0x8e, 0x66, 0xc0, 0xbe, 0xf8, 0x06, 0xcc, 0xd4, 0xf4, 0xfa, 0x26, 0x10, 0x71, 0xab, 0x79, 0x9c, + 0x88, 0xb1, 0x33, 0x64, 0xdf, 0xf1, 0xfd, 0xcd, 0x66, 0x94, 0x59, 0x86, 0xe2, 0x07, 0x64, 0xb1, + 0x4f, 0xfc, 0x41, 0x43, 0x35, 0xbd, 0xbe, 0x05, 0xe7, 0xc5, 0x89, 0x9d, 0x61, 0x48, 0xb6, 0x2a, + 0x55, 0x8a, 0xc6, 0x82, 0x3f, 0x35, 0xce, 0x99, 0x69, 0x2a, 0x7e, 0x50, 0x23, 0x55, 0xaa, 0x28, + 0x53, 0xa6, 0x6a, 0x7a, 0xfd, 0x01, 0x14, 0x05, 0x53, 0x07, 0x18, 0xa1, 0xa3, 0xcd, 0xbc, 0x60, + 0xff, 0x6b, 0xe1, 0x99, 0xa1, 0x11, 0x3d, 0xbc, 0x63, 0x3c, 0xc6, 0x45, 0x1b, 0x19, 0xb3, 0x7f, + 0x14, 0xf0, 0xc7, 0x82, 0x8c, 0xd0, 0x91, 0xc0, 0xfc, 0x3b, 0xce, 0xca, 0x84, 0xfd, 0x0b, 0x81, + 0x3f, 0x14, 0x4a, 0xa8, 0xf7, 0x03, 0xd3, 0x31, 0x69, 0x90, 0x8b, 0xb1, 0xe1, 0xa0, 0x47, 0x7e, + 0x33, 0x12, 0xb0, 0x22, 0x3e, 0x90, 0x08, 0xd3, 0xa6, 0xc5, 0xfa, 0x16, 0xcc, 0x9f, 0xdd, 0x21, + 0x7d, 0x2c, 0xb1, 0x6c, 0xb9, 0xba, 0x42, 0x13, 0x6a, 0x63, 0xae, 0x13, 0xf0, 0x4b, 0x0d, 0x98, + 0x3b, 0xb3, 0x53, 0xfa, 0x44, 0x62, 0x39, 0x27, 0xb5, 0x64, 0x14, 0x3a, 0x41, 0xcf, 0x34, 0x77, + 0x66, 0xb7, 0xf4, 0xa9, 0xc4, 0x1e, 0x28, 0x74, 0xcd, 0x33, 0xe2, 0x7a, 0xa6, 0xb9, 0x33, 0xbb, + 0xa5, 0xaf, 0xb2, 0x8c, 0x52, 0xd6, 0xab, 0xa2, 0x11, 0xf4, 0x05, 0xf3, 0x67, 0x77, 0x4b, 0x5f, + 0x93, 0xf0, 0xb1, 0x42, 0xd6, 0x75, 0x6f, 0x5d, 0x3c, 0xcf, 0x34, 0x7f, 0x76, 0xb7, 0xf4, 0x75, + 0x09, 0x9f, 0x34, 0x64, 0x7d, 0x3d, 0x60, 0x26, 0x38, 0x9a, 0xd3, 0xdd, 0xd2, 0x37, 0x24, 0x7c, + 0x65, 0x90, 0xf5, 0x9a, 0x67, 0x66, 0x6f, 0x6a, 0x34, 0xa7, 0xbb, 0xa5, 0x6f, 0xe2, 0x2d, 0xbe, + 0x2e, 0xeb, 0x77, 0x02, 0x66, 0xd0, 0x33, 0x15, 0x5f, 0xc1, 0x2d, 0x7d, 0x4b, 0xc2, 0xc7, 0x20, + 0x59, 0xbf, 0x6b, 0xb8, 0xbd, 0xfb, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9, 0x33, 0x09, 0xdf, 0x8c, + 0x64, 0xfd, 0x5e, 0xd0, 0x10, 0x7a, 0x26, 0xe5, 0x55, 0xdc, 0xd2, 0xb7, 0xa9, 0xa5, 0x62, 0x5d, + 0x5e, 0x5f, 0x35, 0xdc, 0x01, 0x08, 0x9e, 0x49, 0x79, 0x15, 0xb7, 0xf4, 0x1d, 0x6a, 0x4a, 0xa9, + 0xcb, 0xeb, 0x6b, 0x21, 0x53, 0x35, 0xbd, 0xfe, 0x08, 0x0a, 0x67, 0x75, 0x4b, 0xdf, 0x15, 0xdf, + 0xe2, 0xf2, 0x1d, 0xc1, 0x37, 0xed, 0x0a, 0x7b, 0x76, 0xaa, 0x63, 0xfa, 0x1e, 0xe6, 0x38, 0xf5, + 0xb9, 0x27, 0xec, 0xbd, 0x8a, 0x11, 0xfc, 0xed, 0x63, 0x6e, 0x6a, 0xdb, 0x3f, 0x1f, 0xa7, 0xfa, + 0xa8, 0xef, 0x4b, 0xf8, 0xa8, 0x55, 0xe0, 0x06, 0x11, 0xef, 0x9d, 0x14, 0xe6, 0xb0, 0x3e, 0xf4, + 0x67, 0x79, 0x9a, 0xb7, 0xfa, 0x81, 0xf4, 0x2a, 0xee, 0xaa, 0x9e, 0x68, 0xee, 0x34, 0xbc, 0xc5, + 0xc0, 0x9a, 0xb7, 0x21, 0x79, 0xac, 0xad, 0xae, 0x89, 0x57, 0x32, 0xf1, 0x2d, 0x97, 0x39, 0xa9, + 0xbc, 0x56, 0x14, 0x9e, 0xbb, 0x87, 0x23, 0xe7, 0xc4, 0x40, 0x16, 0x67, 0x6b, 0x91, 0xec, 0x4f, + 0x62, 0xd8, 0x1a, 0x67, 0x57, 0x23, 0xd9, 0x9f, 0xc6, 0xb0, 0xab, 0x9c, 0xad, 0x47, 0xb2, 0xbf, + 0x1a, 0xc3, 0xd6, 0x39, 0x7b, 0x3d, 0x92, 0xfd, 0xb5, 0x18, 0xf6, 0x3a, 0x67, 0xd7, 0x22, 0xd9, + 0x5f, 0x8f, 0x61, 0xd7, 0x38, 0xfb, 0x4e, 0x24, 0xfb, 0x1b, 0x31, 0xec, 0x3b, 0x9c, 0x7d, 0x37, + 0x92, 0xfd, 0xcd, 0x18, 0xf6, 0x5d, 0xce, 0xbe, 0x17, 0xc9, 0xfe, 0x56, 0x0c, 0xfb, 0x1e, 0x63, + 0xaf, 0xad, 0x46, 0xb2, 0x3f, 0x8b, 0x66, 0xaf, 0xad, 0x72, 0x76, 0xb4, 0xd6, 0xbe, 0x1d, 0xc3, + 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x77, 0x62, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x6e, + 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, + 0xfb, 0x31, 0x6c, 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x20, 0x86, 0xcd, 0xb5, 0xb6, 0x16, 0xad, + 0xb5, 0x3f, 0x8a, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x8f, 0x63, 0xd8, 0x5c, 0x6b, 0x6b, + 0xd1, 0x5a, 0xfb, 0x93, 0x18, 0x36, 0xd7, 0x9a, 0x16, 0xad, 0xb5, 0x3f, 0x8d, 0x66, 0x6b, 0x5c, + 0x6b, 0x5a, 0xb4, 0xd6, 0xfe, 0x2c, 0x86, 0xcd, 0xb5, 0xa6, 0x45, 0x6b, 0xed, 0xcf, 0x63, 0xd8, + 0x5c, 0x6b, 0x5a, 0xb4, 0xd6, 0x7e, 0x18, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x17, 0x31, + 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x19, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x57, + 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x1d, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, + 0x37, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x1b, 0xc3, 0xe6, 0x5a, 0xab, 0x46, 0x6b, + 0xed, 0xef, 0xa2, 0xd9, 0x55, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x3e, 0x86, 0xcd, 0xb5, 0x56, + 0x8d, 0xd6, 0xda, 0x3f, 0xc4, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0xc7, 0x18, 0x36, 0xd7, + 0x5a, 0x35, 0x5a, 0x6b, 0x3f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0x4f, 0x31, 0x6c, + 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x39, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc4, + 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0xd7, 0x18, 0x36, 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0xff, + 0x16, 0xc3, 0xe6, 0x5a, 0xd3, 0xa3, 0xb5, 0xf6, 0xef, 0xd1, 0x6c, 0x9d, 0x6b, 0x4d, 0x8f, 0xd6, + 0xda, 0x7f, 0xc4, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x67, 0x0c, 0x9b, 0x6b, 0x4d, 0x8f, + 0xd6, 0xda, 0x7f, 0xc5, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x77, 0x0c, 0x9b, 0x6b, 0x4d, + 0x8f, 0xd6, 0xda, 0xff, 0xc4, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x38, 0x86, 0xcd, 0xb5, + 0xa6, 0x47, 0x6b, 0xed, 0x27, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0xff, 0x1b, 0xc3, 0xe6, + 0x5a, 0xd3, 0xa3, 0xb5, 0xf6, 0x7f, 0x31, 0x6c, 0xae, 0xb5, 0xf5, 0x68, 0xad, 0xfd, 0x7f, 0x34, + 0x7b, 0x7d, 0xf5, 0xa7, 0x01, 0x00, 0x00, 0xff, 0xff, 0x40, 0x32, 0xb7, 0xac, 0x57, 0x39, 0x00, + 0x00, } diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go index 5e14513f28..61f83c1e10 100644 --- a/vendor/github.com/golang/protobuf/proto/text_parser.go +++ b/vendor/github.com/golang/protobuf/proto/text_parser.go @@ -865,7 +865,7 @@ func (p *textParser) readAny(v reflect.Value, props *Properties) error { return p.readStruct(fv, terminator) case reflect.Uint32: if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { - fv.SetUint(x) + fv.SetUint(uint64(x)) return nil } case reflect.Uint64: diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile index 41a2d04d01..4942418e32 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile @@ -32,5 +32,8 @@ # Not stored here, but descriptor.proto is in https://github.com/google/protobuf/ # at src/google/protobuf/descriptor.proto regenerate: - @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION - protoc --go_out=../../../../.. -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto + echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION + protoc --go_out=. -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/descriptor.proto && \ + sed 's,^package google_protobuf,package descriptor,' google/protobuf/descriptor.pb.go > \ + $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go && \ + rm -f google/protobuf/descriptor.pb.go diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go index 63cf2c80aa..2e06cb3a9e 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: google/protobuf/descriptor.proto +// DO NOT EDIT! /* Package descriptor is a generated protocol buffer package. @@ -64,10 +65,6 @@ const ( FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7 FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8 FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9 - // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10 FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // New in version 2. @@ -296,48 +293,6 @@ func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { } func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1} } -// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, -// or neither? HTTP based RPC implementation may choose GET verb for safe -// methods, and PUT verb for idempotent methods instead of the default POST. -type MethodOptions_IdempotencyLevel int32 - -const ( - MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0 - MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1 - MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2 -) - -var MethodOptions_IdempotencyLevel_name = map[int32]string{ - 0: "IDEMPOTENCY_UNKNOWN", - 1: "NO_SIDE_EFFECTS", - 2: "IDEMPOTENT", -} -var MethodOptions_IdempotencyLevel_value = map[string]int32{ - "IDEMPOTENCY_UNKNOWN": 0, - "NO_SIDE_EFFECTS": 1, - "IDEMPOTENT": 2, -} - -func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { - p := new(MethodOptions_IdempotencyLevel) - *p = x - return p -} -func (x MethodOptions_IdempotencyLevel) String() string { - return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x)) -} -func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel") - if err != nil { - return err - } - *x = MethodOptions_IdempotencyLevel(value) - return nil -} -func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0} -} - // The protocol compiler can output a FileDescriptorSet containing the .proto // files it parses. type FileDescriptorSet struct { @@ -945,8 +900,19 @@ type FileOptions struct { // generated to contain the file's getDescriptor() method as well as any // top-level extensions defined in the file. JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"` - // This option does nothing. - JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"` + // If set true, then the Java code generator will generate equals() and + // hashCode() methods for all messages defined in the .proto file. + // This increases generated code size, potentially substantially for large + // protos, which may harm a memory-constrained application. + // - In the full runtime this is a speed optimization, as the + // AbstractMessage base class includes reflection-based implementations of + // these methods. + // - In the lite runtime, setting this option changes the semantics of + // equals() and hashCode() to more closely match those of the full runtime; + // the generated methods compute their results based on field values rather + // than object identity. (Implementations should not assume that hashcodes + // will be consistent across runtimes or versions of the protocol compiler.) + JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash,def=0" json:"java_generate_equals_and_hash,omitempty"` // If set true, then the Java2 code generator will generate code that // throws an exception whenever an attempt is made to assign a non-UTF-8 // byte sequence to a string field. @@ -987,14 +953,6 @@ type FileOptions struct { ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"` // Namespace for generated classes; defaults to the package. CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"` - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"` - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"` // The parser stores options it doesn't recognize here. See above. UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` proto.XXX_InternalExtensions `json:"-"` @@ -1015,6 +973,7 @@ func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange { } const Default_FileOptions_JavaMultipleFiles bool = false +const Default_FileOptions_JavaGenerateEqualsAndHash bool = false const Default_FileOptions_JavaStringCheckUtf8 bool = false const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED const Default_FileOptions_CcGenericServices bool = false @@ -1048,7 +1007,7 @@ func (m *FileOptions) GetJavaGenerateEqualsAndHash() bool { if m != nil && m.JavaGenerateEqualsAndHash != nil { return *m.JavaGenerateEqualsAndHash } - return false + return Default_FileOptions_JavaGenerateEqualsAndHash } func (m *FileOptions) GetJavaStringCheckUtf8() bool { @@ -1121,20 +1080,6 @@ func (m *FileOptions) GetCsharpNamespace() string { return "" } -func (m *FileOptions) GetSwiftPrefix() string { - if m != nil && m.SwiftPrefix != nil { - return *m.SwiftPrefix - } - return "" -} - -func (m *FileOptions) GetPhpClassPrefix() string { - if m != nil && m.PhpClassPrefix != nil { - return *m.PhpClassPrefix - } - return "" -} - func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1292,7 +1237,7 @@ type FieldOptions struct { // // // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message + // a lazy sub-message. That is, calling IsInitialized() on the outher message // may return true even if the inner message has missing required fields. // This is necessary because otherwise the inner message would have to be // parsed in order to perform the check, defeating the purpose of lazy @@ -1548,8 +1493,7 @@ type MethodOptions struct { // Depending on the target platform, this can emit Deprecated annotations // for the method, or it will be completely ignored; in the very least, // this is a formalization for deprecating methods. - Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"` + Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` // The parser stores options it doesn't recognize here. See above. UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` proto.XXX_InternalExtensions `json:"-"` @@ -1570,7 +1514,6 @@ func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange { } const Default_MethodOptions_Deprecated bool = false -const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN func (m *MethodOptions) GetDeprecated() bool { if m != nil && m.Deprecated != nil { @@ -1579,13 +1522,6 @@ func (m *MethodOptions) GetDeprecated() bool { return Default_MethodOptions_Deprecated } -func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel { - if m != nil && m.IdempotencyLevel != nil { - return *m.IdempotencyLevel - } - return Default_MethodOptions_IdempotencyLevel -} - func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1988,165 +1924,153 @@ func init() { proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) - proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) } func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2460 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x5b, 0x6f, 0xdb, 0xc8, - 0x15, 0x5e, 0x5d, 0x2d, 0x1d, 0xc9, 0xf2, 0x78, 0xec, 0x4d, 0x18, 0xef, 0x25, 0x8e, 0xf6, 0x12, - 0x6f, 0xd2, 0xc8, 0x0b, 0xe7, 0xb2, 0x59, 0xa7, 0x48, 0x21, 0x4b, 0x8c, 0x57, 0xa9, 0x2c, 0xa9, - 0x94, 0xdc, 0x4d, 0xf6, 0x85, 0x18, 0x93, 0x23, 0x99, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89, 0xf7, - 0x29, 0x40, 0x9f, 0x0a, 0xf4, 0x07, 0x14, 0x45, 0xd1, 0x87, 0x7d, 0x59, 0xa0, 0x3f, 0xa0, 0xcf, - 0xfd, 0x05, 0x05, 0xf6, 0xb9, 0x2f, 0x45, 0x51, 0xa0, 0xfd, 0x07, 0x7d, 0x2d, 0x66, 0x86, 0xa4, - 0x48, 0x5d, 0x12, 0x77, 0x81, 0xec, 0x3e, 0xd9, 0x73, 0xce, 0x77, 0x0e, 0xcf, 0x9c, 0xf9, 0x66, - 0xce, 0x99, 0x11, 0x6c, 0x8f, 0x6c, 0x7b, 0x64, 0xd2, 0x5d, 0xc7, 0xb5, 0x7d, 0xfb, 0x64, 0x32, - 0xdc, 0xd5, 0xa9, 0xa7, 0xb9, 0x86, 0xe3, 0xdb, 0x6e, 0x8d, 0xcb, 0xf0, 0x9a, 0x40, 0xd4, 0x42, - 0x44, 0xf5, 0x08, 0xd6, 0x1f, 0x18, 0x26, 0x6d, 0x46, 0xc0, 0x3e, 0xf5, 0xf1, 0x5d, 0xc8, 0x0e, - 0x0d, 0x93, 0x4a, 0xa9, 0xed, 0xcc, 0x4e, 0x69, 0xef, 0xc3, 0xda, 0x8c, 0x51, 0x2d, 0x69, 0xd1, - 0x63, 0x62, 0x85, 0x5b, 0x54, 0xff, 0x95, 0x85, 0x8d, 0x05, 0x5a, 0x8c, 0x21, 0x6b, 0x91, 0x31, - 0xf3, 0x98, 0xda, 0x29, 0x2a, 0xfc, 0x7f, 0x2c, 0xc1, 0x8a, 0x43, 0xb4, 0xa7, 0x64, 0x44, 0xa5, - 0x34, 0x17, 0x87, 0x43, 0xfc, 0x3e, 0x80, 0x4e, 0x1d, 0x6a, 0xe9, 0xd4, 0xd2, 0xce, 0xa4, 0xcc, - 0x76, 0x66, 0xa7, 0xa8, 0xc4, 0x24, 0xf8, 0x3a, 0xac, 0x3b, 0x93, 0x13, 0xd3, 0xd0, 0xd4, 0x18, - 0x0c, 0xb6, 0x33, 0x3b, 0x39, 0x05, 0x09, 0x45, 0x73, 0x0a, 0xbe, 0x0a, 0x6b, 0xcf, 0x29, 0x79, - 0x1a, 0x87, 0x96, 0x38, 0xb4, 0xc2, 0xc4, 0x31, 0x60, 0x03, 0xca, 0x63, 0xea, 0x79, 0x64, 0x44, - 0x55, 0xff, 0xcc, 0xa1, 0x52, 0x96, 0xcf, 0x7e, 0x7b, 0x6e, 0xf6, 0xb3, 0x33, 0x2f, 0x05, 0x56, - 0x83, 0x33, 0x87, 0xe2, 0x3a, 0x14, 0xa9, 0x35, 0x19, 0x0b, 0x0f, 0xb9, 0x25, 0xf9, 0x93, 0xad, - 0xc9, 0x78, 0xd6, 0x4b, 0x81, 0x99, 0x05, 0x2e, 0x56, 0x3c, 0xea, 0x3e, 0x33, 0x34, 0x2a, 0xe5, - 0xb9, 0x83, 0xab, 0x73, 0x0e, 0xfa, 0x42, 0x3f, 0xeb, 0x23, 0xb4, 0xc3, 0x0d, 0x28, 0xd2, 0x17, - 0x3e, 0xb5, 0x3c, 0xc3, 0xb6, 0xa4, 0x15, 0xee, 0xe4, 0xa3, 0x05, 0xab, 0x48, 0x4d, 0x7d, 0xd6, - 0xc5, 0xd4, 0x0e, 0xdf, 0x81, 0x15, 0xdb, 0xf1, 0x0d, 0xdb, 0xf2, 0xa4, 0xc2, 0x76, 0x6a, 0xa7, - 0xb4, 0xf7, 0xee, 0x42, 0x22, 0x74, 0x05, 0x46, 0x09, 0xc1, 0xb8, 0x05, 0xc8, 0xb3, 0x27, 0xae, - 0x46, 0x55, 0xcd, 0xd6, 0xa9, 0x6a, 0x58, 0x43, 0x5b, 0x2a, 0x72, 0x07, 0x97, 0xe7, 0x27, 0xc2, - 0x81, 0x0d, 0x5b, 0xa7, 0x2d, 0x6b, 0x68, 0x2b, 0x15, 0x2f, 0x31, 0xc6, 0x17, 0x20, 0xef, 0x9d, - 0x59, 0x3e, 0x79, 0x21, 0x95, 0x39, 0x43, 0x82, 0x51, 0xf5, 0xbf, 0x39, 0x58, 0x3b, 0x0f, 0xc5, - 0xee, 0x41, 0x6e, 0xc8, 0x66, 0x29, 0xa5, 0xff, 0x9f, 0x1c, 0x08, 0x9b, 0x64, 0x12, 0xf3, 0x3f, - 0x30, 0x89, 0x75, 0x28, 0x59, 0xd4, 0xf3, 0xa9, 0x2e, 0x18, 0x91, 0x39, 0x27, 0xa7, 0x40, 0x18, - 0xcd, 0x53, 0x2a, 0xfb, 0x83, 0x28, 0xf5, 0x08, 0xd6, 0xa2, 0x90, 0x54, 0x97, 0x58, 0xa3, 0x90, - 0x9b, 0xbb, 0xaf, 0x8b, 0xa4, 0x26, 0x87, 0x76, 0x0a, 0x33, 0x53, 0x2a, 0x34, 0x31, 0xc6, 0x4d, - 0x00, 0xdb, 0xa2, 0xf6, 0x50, 0xd5, 0xa9, 0x66, 0x4a, 0x85, 0x25, 0x59, 0xea, 0x32, 0xc8, 0x5c, - 0x96, 0x6c, 0x21, 0xd5, 0x4c, 0xfc, 0xf9, 0x94, 0x6a, 0x2b, 0x4b, 0x98, 0x72, 0x24, 0x36, 0xd9, - 0x1c, 0xdb, 0x8e, 0xa1, 0xe2, 0x52, 0xc6, 0x7b, 0xaa, 0x07, 0x33, 0x2b, 0xf2, 0x20, 0x6a, 0xaf, - 0x9d, 0x99, 0x12, 0x98, 0x89, 0x89, 0xad, 0xba, 0xf1, 0x21, 0xfe, 0x00, 0x22, 0x81, 0xca, 0x69, - 0x05, 0xfc, 0x14, 0x2a, 0x87, 0xc2, 0x0e, 0x19, 0xd3, 0xad, 0xbb, 0x50, 0x49, 0xa6, 0x07, 0x6f, - 0x42, 0xce, 0xf3, 0x89, 0xeb, 0x73, 0x16, 0xe6, 0x14, 0x31, 0xc0, 0x08, 0x32, 0xd4, 0xd2, 0xf9, - 0x29, 0x97, 0x53, 0xd8, 0xbf, 0x5b, 0x9f, 0xc1, 0x6a, 0xe2, 0xf3, 0xe7, 0x35, 0xac, 0xfe, 0x3e, - 0x0f, 0x9b, 0x8b, 0x38, 0xb7, 0x90, 0xfe, 0x17, 0x20, 0x6f, 0x4d, 0xc6, 0x27, 0xd4, 0x95, 0x32, - 0xdc, 0x43, 0x30, 0xc2, 0x75, 0xc8, 0x99, 0xe4, 0x84, 0x9a, 0x52, 0x76, 0x3b, 0xb5, 0x53, 0xd9, - 0xbb, 0x7e, 0x2e, 0x56, 0xd7, 0xda, 0xcc, 0x44, 0x11, 0x96, 0xf8, 0x3e, 0x64, 0x83, 0x23, 0x8e, - 0x79, 0xb8, 0x76, 0x3e, 0x0f, 0x8c, 0x8b, 0x0a, 0xb7, 0xc3, 0xef, 0x40, 0x91, 0xfd, 0x15, 0xb9, - 0xcd, 0xf3, 0x98, 0x0b, 0x4c, 0xc0, 0xf2, 0x8a, 0xb7, 0xa0, 0xc0, 0x69, 0xa6, 0xd3, 0xb0, 0x34, - 0x44, 0x63, 0xb6, 0x30, 0x3a, 0x1d, 0x92, 0x89, 0xe9, 0xab, 0xcf, 0x88, 0x39, 0xa1, 0x9c, 0x30, - 0x45, 0xa5, 0x1c, 0x08, 0x7f, 0xcd, 0x64, 0xf8, 0x32, 0x94, 0x04, 0x2b, 0x0d, 0x4b, 0xa7, 0x2f, - 0xf8, 0xe9, 0x93, 0x53, 0x04, 0x51, 0x5b, 0x4c, 0xc2, 0x3e, 0xff, 0xc4, 0xb3, 0xad, 0x70, 0x69, - 0xf9, 0x27, 0x98, 0x80, 0x7f, 0xfe, 0xb3, 0xd9, 0x83, 0xef, 0xbd, 0xc5, 0xd3, 0x9b, 0xe5, 0x62, - 0xf5, 0x2f, 0x69, 0xc8, 0xf2, 0xfd, 0xb6, 0x06, 0xa5, 0xc1, 0xe3, 0x9e, 0xac, 0x36, 0xbb, 0xc7, - 0x07, 0x6d, 0x19, 0xa5, 0x70, 0x05, 0x80, 0x0b, 0x1e, 0xb4, 0xbb, 0xf5, 0x01, 0x4a, 0x47, 0xe3, - 0x56, 0x67, 0x70, 0xe7, 0x16, 0xca, 0x44, 0x06, 0xc7, 0x42, 0x90, 0x8d, 0x03, 0x6e, 0xee, 0xa1, - 0x1c, 0x46, 0x50, 0x16, 0x0e, 0x5a, 0x8f, 0xe4, 0xe6, 0x9d, 0x5b, 0x28, 0x9f, 0x94, 0xdc, 0xdc, - 0x43, 0x2b, 0x78, 0x15, 0x8a, 0x5c, 0x72, 0xd0, 0xed, 0xb6, 0x51, 0x21, 0xf2, 0xd9, 0x1f, 0x28, - 0xad, 0xce, 0x21, 0x2a, 0x46, 0x3e, 0x0f, 0x95, 0xee, 0x71, 0x0f, 0x41, 0xe4, 0xe1, 0x48, 0xee, - 0xf7, 0xeb, 0x87, 0x32, 0x2a, 0x45, 0x88, 0x83, 0xc7, 0x03, 0xb9, 0x8f, 0xca, 0x89, 0xb0, 0x6e, - 0xee, 0xa1, 0xd5, 0xe8, 0x13, 0x72, 0xe7, 0xf8, 0x08, 0x55, 0xf0, 0x3a, 0xac, 0x8a, 0x4f, 0x84, - 0x41, 0xac, 0xcd, 0x88, 0xee, 0xdc, 0x42, 0x68, 0x1a, 0x88, 0xf0, 0xb2, 0x9e, 0x10, 0xdc, 0xb9, - 0x85, 0x70, 0xb5, 0x01, 0x39, 0xce, 0x2e, 0x8c, 0xa1, 0xd2, 0xae, 0x1f, 0xc8, 0x6d, 0xb5, 0xdb, - 0x1b, 0xb4, 0xba, 0x9d, 0x7a, 0x1b, 0xa5, 0xa6, 0x32, 0x45, 0xfe, 0xd5, 0x71, 0x4b, 0x91, 0x9b, - 0x28, 0x1d, 0x97, 0xf5, 0xe4, 0xfa, 0x40, 0x6e, 0xa2, 0x4c, 0x55, 0x83, 0xcd, 0x45, 0xe7, 0xcc, - 0xc2, 0x9d, 0x11, 0x5b, 0xe2, 0xf4, 0x92, 0x25, 0xe6, 0xbe, 0xe6, 0x96, 0xf8, 0xdb, 0x14, 0x6c, - 0x2c, 0x38, 0x6b, 0x17, 0x7e, 0xe4, 0x17, 0x90, 0x13, 0x14, 0x15, 0xd5, 0xe7, 0x93, 0x85, 0x87, - 0x36, 0x27, 0xec, 0x5c, 0x05, 0xe2, 0x76, 0xf1, 0x0a, 0x9c, 0x59, 0x52, 0x81, 0x99, 0x8b, 0xb9, - 0x20, 0x7f, 0x93, 0x02, 0x69, 0x99, 0xef, 0xd7, 0x1c, 0x14, 0xe9, 0xc4, 0x41, 0x71, 0x6f, 0x36, - 0x80, 0x2b, 0xcb, 0xe7, 0x30, 0x17, 0xc5, 0x77, 0x29, 0xb8, 0xb0, 0xb8, 0x51, 0x59, 0x18, 0xc3, - 0x7d, 0xc8, 0x8f, 0xa9, 0x7f, 0x6a, 0x87, 0xc5, 0xfa, 0xe3, 0x05, 0x25, 0x80, 0xa9, 0x67, 0x73, - 0x15, 0x58, 0xc5, 0x6b, 0x48, 0x66, 0x59, 0xb7, 0x21, 0xa2, 0x99, 0x8b, 0xf4, 0xb7, 0x69, 0x78, - 0x7b, 0xa1, 0xf3, 0x85, 0x81, 0xbe, 0x07, 0x60, 0x58, 0xce, 0xc4, 0x17, 0x05, 0x59, 0x9c, 0x4f, - 0x45, 0x2e, 0xe1, 0x7b, 0x9f, 0x9d, 0x3d, 0x13, 0x3f, 0xd2, 0x67, 0xb8, 0x1e, 0x84, 0x88, 0x03, - 0xee, 0x4e, 0x03, 0xcd, 0xf2, 0x40, 0xdf, 0x5f, 0x32, 0xd3, 0xb9, 0x5a, 0xf7, 0x29, 0x20, 0xcd, - 0x34, 0xa8, 0xe5, 0xab, 0x9e, 0xef, 0x52, 0x32, 0x36, 0xac, 0x11, 0x3f, 0x80, 0x0b, 0xfb, 0xb9, - 0x21, 0x31, 0x3d, 0xaa, 0xac, 0x09, 0x75, 0x3f, 0xd4, 0x32, 0x0b, 0x5e, 0x65, 0xdc, 0x98, 0x45, - 0x3e, 0x61, 0x21, 0xd4, 0x91, 0x45, 0xf5, 0xef, 0x2b, 0x50, 0x8a, 0xb5, 0x75, 0xf8, 0x0a, 0x94, - 0x9f, 0x90, 0x67, 0x44, 0x0d, 0x5b, 0x75, 0x91, 0x89, 0x12, 0x93, 0xf5, 0x82, 0x76, 0xfd, 0x53, - 0xd8, 0xe4, 0x10, 0x7b, 0xe2, 0x53, 0x57, 0xd5, 0x4c, 0xe2, 0x79, 0x3c, 0x69, 0x05, 0x0e, 0xc5, - 0x4c, 0xd7, 0x65, 0xaa, 0x46, 0xa8, 0xc1, 0xb7, 0x61, 0x83, 0x5b, 0x8c, 0x27, 0xa6, 0x6f, 0x38, - 0x26, 0x55, 0xd9, 0xe5, 0xc1, 0xe3, 0x07, 0x71, 0x14, 0xd9, 0x3a, 0x43, 0x1c, 0x05, 0x00, 0x16, - 0x91, 0x87, 0x9b, 0xf0, 0x1e, 0x37, 0x1b, 0x51, 0x8b, 0xba, 0xc4, 0xa7, 0x2a, 0xfd, 0x7a, 0x42, - 0x4c, 0x4f, 0x25, 0x96, 0xae, 0x9e, 0x12, 0xef, 0x54, 0xda, 0x64, 0x0e, 0x0e, 0xd2, 0x52, 0x4a, - 0xb9, 0xc4, 0x80, 0x87, 0x01, 0x4e, 0xe6, 0xb0, 0xba, 0xa5, 0x7f, 0x41, 0xbc, 0x53, 0xbc, 0x0f, - 0x17, 0xb8, 0x17, 0xcf, 0x77, 0x0d, 0x6b, 0xa4, 0x6a, 0xa7, 0x54, 0x7b, 0xaa, 0x4e, 0xfc, 0xe1, - 0x5d, 0xe9, 0x9d, 0xf8, 0xf7, 0x79, 0x84, 0x7d, 0x8e, 0x69, 0x30, 0xc8, 0xb1, 0x3f, 0xbc, 0x8b, - 0xfb, 0x50, 0x66, 0x8b, 0x31, 0x36, 0xbe, 0xa1, 0xea, 0xd0, 0x76, 0x79, 0x65, 0xa9, 0x2c, 0xd8, - 0xd9, 0xb1, 0x0c, 0xd6, 0xba, 0x81, 0xc1, 0x91, 0xad, 0xd3, 0xfd, 0x5c, 0xbf, 0x27, 0xcb, 0x4d, - 0xa5, 0x14, 0x7a, 0x79, 0x60, 0xbb, 0x8c, 0x50, 0x23, 0x3b, 0x4a, 0x70, 0x49, 0x10, 0x6a, 0x64, - 0x87, 0xe9, 0xbd, 0x0d, 0x1b, 0x9a, 0x26, 0xe6, 0x6c, 0x68, 0x6a, 0xd0, 0xe2, 0x7b, 0x12, 0x4a, - 0x24, 0x4b, 0xd3, 0x0e, 0x05, 0x20, 0xe0, 0xb8, 0x87, 0x3f, 0x87, 0xb7, 0xa7, 0xc9, 0x8a, 0x1b, - 0xae, 0xcf, 0xcd, 0x72, 0xd6, 0xf4, 0x36, 0x6c, 0x38, 0x67, 0xf3, 0x86, 0x38, 0xf1, 0x45, 0xe7, - 0x6c, 0xd6, 0xec, 0x23, 0x7e, 0x6d, 0x73, 0xa9, 0x46, 0x7c, 0xaa, 0x4b, 0x17, 0xe3, 0xe8, 0x98, - 0x02, 0xef, 0x02, 0xd2, 0x34, 0x95, 0x5a, 0xe4, 0xc4, 0xa4, 0x2a, 0x71, 0xa9, 0x45, 0x3c, 0xe9, - 0x72, 0x1c, 0x5c, 0xd1, 0x34, 0x99, 0x6b, 0xeb, 0x5c, 0x89, 0xaf, 0xc1, 0xba, 0x7d, 0xf2, 0x44, - 0x13, 0xcc, 0x52, 0x1d, 0x97, 0x0e, 0x8d, 0x17, 0xd2, 0x87, 0x3c, 0x4d, 0x6b, 0x4c, 0xc1, 0x79, - 0xd5, 0xe3, 0x62, 0xfc, 0x09, 0x20, 0xcd, 0x3b, 0x25, 0xae, 0xc3, 0x4b, 0xbb, 0xe7, 0x10, 0x8d, - 0x4a, 0x1f, 0x09, 0xa8, 0x90, 0x77, 0x42, 0x31, 0x63, 0xb6, 0xf7, 0xdc, 0x18, 0xfa, 0xa1, 0xc7, - 0xab, 0x82, 0xd9, 0x5c, 0x16, 0x78, 0xdb, 0x01, 0xe4, 0x9c, 0x3a, 0xc9, 0x0f, 0xef, 0x70, 0x58, - 0xc5, 0x39, 0x75, 0xe2, 0xdf, 0x7d, 0x04, 0x9b, 0x13, 0xcb, 0xb0, 0x7c, 0xea, 0x3a, 0x2e, 0x65, - 0xed, 0xbe, 0xd8, 0xb3, 0xd2, 0xbf, 0x57, 0x96, 0x34, 0xec, 0xc7, 0x71, 0xb4, 0xa0, 0x8a, 0xb2, - 0x31, 0x99, 0x17, 0x56, 0xf7, 0xa1, 0x1c, 0x67, 0x10, 0x2e, 0x82, 0xe0, 0x10, 0x4a, 0xb1, 0x6a, - 0xdc, 0xe8, 0x36, 0x59, 0x1d, 0xfd, 0x4a, 0x46, 0x69, 0x56, 0xcf, 0xdb, 0xad, 0x81, 0xac, 0x2a, - 0xc7, 0x9d, 0x41, 0xeb, 0x48, 0x46, 0x99, 0x6b, 0xc5, 0xc2, 0x7f, 0x56, 0xd0, 0xcb, 0x97, 0x2f, - 0x5f, 0xa6, 0x1f, 0x66, 0x0b, 0x1f, 0xa3, 0xab, 0xd5, 0xef, 0xd3, 0x50, 0x49, 0x76, 0xd2, 0xf8, - 0xe7, 0x70, 0x31, 0xbc, 0xf6, 0x7a, 0xd4, 0x57, 0x9f, 0x1b, 0x2e, 0xa7, 0xf6, 0x98, 0x88, 0x5e, - 0x34, 0x5a, 0x95, 0xcd, 0x00, 0xd5, 0xa7, 0xfe, 0x97, 0x86, 0xcb, 0x88, 0x3b, 0x26, 0x3e, 0x6e, - 0xc3, 0x65, 0xcb, 0x56, 0x3d, 0x9f, 0x58, 0x3a, 0x71, 0x75, 0x75, 0xfa, 0xe0, 0xa0, 0x12, 0x4d, - 0xa3, 0x9e, 0x67, 0x8b, 0x92, 0x12, 0x79, 0x79, 0xd7, 0xb2, 0xfb, 0x01, 0x78, 0x7a, 0xd6, 0xd6, - 0x03, 0xe8, 0x0c, 0x83, 0x32, 0xcb, 0x18, 0xf4, 0x0e, 0x14, 0xc7, 0xc4, 0x51, 0xa9, 0xe5, 0xbb, - 0x67, 0xbc, 0xff, 0x2b, 0x28, 0x85, 0x31, 0x71, 0x64, 0x36, 0x7e, 0x73, 0x2b, 0x91, 0xcc, 0x66, - 0x01, 0x15, 0x1f, 0x66, 0x0b, 0x45, 0x04, 0xd5, 0x7f, 0x66, 0xa0, 0x1c, 0xef, 0x07, 0x59, 0x7b, - 0xad, 0xf1, 0xb3, 0x3f, 0xc5, 0x4f, 0x87, 0x0f, 0x5e, 0xd9, 0x3d, 0xd6, 0x1a, 0xac, 0x28, 0xec, - 0xe7, 0x45, 0x97, 0xa6, 0x08, 0x4b, 0x56, 0x90, 0xd9, 0x79, 0x40, 0x45, 0xef, 0x5f, 0x50, 0x82, - 0x11, 0x3e, 0x84, 0xfc, 0x13, 0x8f, 0xfb, 0xce, 0x73, 0xdf, 0x1f, 0xbe, 0xda, 0xf7, 0xc3, 0x3e, - 0x77, 0x5e, 0x7c, 0xd8, 0x57, 0x3b, 0x5d, 0xe5, 0xa8, 0xde, 0x56, 0x02, 0x73, 0x7c, 0x09, 0xb2, - 0x26, 0xf9, 0xe6, 0x2c, 0x59, 0x3e, 0xb8, 0xe8, 0xbc, 0x8b, 0x70, 0x09, 0xb2, 0xcf, 0x29, 0x79, - 0x9a, 0x3c, 0xb4, 0xb9, 0xe8, 0x0d, 0x6e, 0x86, 0x5d, 0xc8, 0xf1, 0x7c, 0x61, 0x80, 0x20, 0x63, - 0xe8, 0x2d, 0x5c, 0x80, 0x6c, 0xa3, 0xab, 0xb0, 0x0d, 0x81, 0xa0, 0x2c, 0xa4, 0x6a, 0xaf, 0x25, - 0x37, 0x64, 0x94, 0xae, 0xde, 0x86, 0xbc, 0x48, 0x02, 0xdb, 0x2c, 0x51, 0x1a, 0xd0, 0x5b, 0xc1, - 0x30, 0xf0, 0x91, 0x0a, 0xb5, 0xc7, 0x47, 0x07, 0xb2, 0x82, 0xd2, 0xc9, 0xa5, 0xce, 0xa2, 0x5c, - 0xd5, 0x83, 0x72, 0xbc, 0x21, 0xfc, 0x51, 0x58, 0x56, 0xfd, 0x6b, 0x0a, 0x4a, 0xb1, 0x06, 0x8f, - 0xb5, 0x16, 0xc4, 0x34, 0xed, 0xe7, 0x2a, 0x31, 0x0d, 0xe2, 0x05, 0xd4, 0x00, 0x2e, 0xaa, 0x33, - 0xc9, 0x79, 0x97, 0xee, 0x47, 0xda, 0x22, 0x39, 0x94, 0xaf, 0xfe, 0x29, 0x05, 0x68, 0xb6, 0x45, - 0x9c, 0x09, 0x33, 0xf5, 0x53, 0x86, 0x59, 0xfd, 0x63, 0x0a, 0x2a, 0xc9, 0xbe, 0x70, 0x26, 0xbc, - 0x2b, 0x3f, 0x69, 0x78, 0xff, 0x48, 0xc3, 0x6a, 0xa2, 0x1b, 0x3c, 0x6f, 0x74, 0x5f, 0xc3, 0xba, - 0xa1, 0xd3, 0xb1, 0x63, 0xfb, 0xd4, 0xd2, 0xce, 0x54, 0x93, 0x3e, 0xa3, 0xa6, 0x54, 0xe5, 0x87, - 0xc6, 0xee, 0xab, 0xfb, 0xcd, 0x5a, 0x6b, 0x6a, 0xd7, 0x66, 0x66, 0xfb, 0x1b, 0xad, 0xa6, 0x7c, - 0xd4, 0xeb, 0x0e, 0xe4, 0x4e, 0xe3, 0xb1, 0x7a, 0xdc, 0xf9, 0x65, 0xa7, 0xfb, 0x65, 0x47, 0x41, - 0xc6, 0x0c, 0xec, 0x0d, 0x6e, 0xfb, 0x1e, 0xa0, 0xd9, 0xa0, 0xf0, 0x45, 0x58, 0x14, 0x16, 0x7a, - 0x0b, 0x6f, 0xc0, 0x5a, 0xa7, 0xab, 0xf6, 0x5b, 0x4d, 0x59, 0x95, 0x1f, 0x3c, 0x90, 0x1b, 0x83, - 0xbe, 0xb8, 0x80, 0x47, 0xe8, 0x41, 0x62, 0x83, 0x57, 0xff, 0x90, 0x81, 0x8d, 0x05, 0x91, 0xe0, - 0x7a, 0xd0, 0xfb, 0x8b, 0xeb, 0xc8, 0x8d, 0xf3, 0x44, 0x5f, 0x63, 0xdd, 0x45, 0x8f, 0xb8, 0x7e, - 0x70, 0x55, 0xf8, 0x04, 0x58, 0x96, 0x2c, 0xdf, 0x18, 0x1a, 0xd4, 0x0d, 0xde, 0x2b, 0xc4, 0x85, - 0x60, 0x6d, 0x2a, 0x17, 0x4f, 0x16, 0x3f, 0x03, 0xec, 0xd8, 0x9e, 0xe1, 0x1b, 0xcf, 0xa8, 0x6a, - 0x58, 0xe1, 0xe3, 0x06, 0xbb, 0x20, 0x64, 0x15, 0x14, 0x6a, 0x5a, 0x96, 0x1f, 0xa1, 0x2d, 0x3a, - 0x22, 0x33, 0x68, 0x76, 0x98, 0x67, 0x14, 0x14, 0x6a, 0x22, 0xf4, 0x15, 0x28, 0xeb, 0xf6, 0x84, - 0xb5, 0x5b, 0x02, 0xc7, 0x6a, 0x47, 0x4a, 0x29, 0x09, 0x59, 0x04, 0x09, 0xfa, 0xe1, 0xe9, 0xab, - 0x4a, 0x59, 0x29, 0x09, 0x99, 0x80, 0x5c, 0x85, 0x35, 0x32, 0x1a, 0xb9, 0xcc, 0x79, 0xe8, 0x48, - 0x74, 0xf8, 0x95, 0x48, 0xcc, 0x81, 0x5b, 0x0f, 0xa1, 0x10, 0xe6, 0x81, 0x95, 0x6a, 0x96, 0x09, - 0xd5, 0x11, 0x6f, 0x5b, 0xe9, 0x9d, 0xa2, 0x52, 0xb0, 0x42, 0xe5, 0x15, 0x28, 0x1b, 0x9e, 0x3a, - 0x7d, 0x64, 0x4d, 0x6f, 0xa7, 0x77, 0x0a, 0x4a, 0xc9, 0xf0, 0xa2, 0x57, 0xb5, 0xea, 0x77, 0x69, - 0xa8, 0x24, 0x1f, 0x89, 0x71, 0x13, 0x0a, 0xa6, 0xad, 0x11, 0x4e, 0x2d, 0xf1, 0x0b, 0xc5, 0xce, - 0x6b, 0xde, 0x95, 0x6b, 0xed, 0x00, 0xaf, 0x44, 0x96, 0x5b, 0x7f, 0x4b, 0x41, 0x21, 0x14, 0xe3, - 0x0b, 0x90, 0x75, 0x88, 0x7f, 0xca, 0xdd, 0xe5, 0x0e, 0xd2, 0x28, 0xa5, 0xf0, 0x31, 0x93, 0x7b, - 0x0e, 0xb1, 0x38, 0x05, 0x02, 0x39, 0x1b, 0xb3, 0x75, 0x35, 0x29, 0xd1, 0xf9, 0xf5, 0xc1, 0x1e, - 0x8f, 0xa9, 0xe5, 0x7b, 0xe1, 0xba, 0x06, 0xf2, 0x46, 0x20, 0xc6, 0xd7, 0x61, 0xdd, 0x77, 0x89, - 0x61, 0x26, 0xb0, 0x59, 0x8e, 0x45, 0xa1, 0x22, 0x02, 0xef, 0xc3, 0xa5, 0xd0, 0xaf, 0x4e, 0x7d, - 0xa2, 0x9d, 0x52, 0x7d, 0x6a, 0x94, 0xe7, 0x2f, 0x90, 0x17, 0x03, 0x40, 0x33, 0xd0, 0x87, 0xb6, - 0xd5, 0xef, 0x53, 0xb0, 0x1e, 0x5e, 0x78, 0xf4, 0x28, 0x59, 0x47, 0x00, 0xc4, 0xb2, 0x6c, 0x3f, - 0x9e, 0xae, 0x79, 0x2a, 0xcf, 0xd9, 0xd5, 0xea, 0x91, 0x91, 0x12, 0x73, 0xb0, 0x35, 0x06, 0x98, - 0x6a, 0x96, 0xa6, 0xed, 0x32, 0x94, 0x82, 0x5f, 0x00, 0xf8, 0xcf, 0x48, 0xe2, 0x8a, 0x0c, 0x42, - 0xc4, 0x6e, 0x46, 0x78, 0x13, 0x72, 0x27, 0x74, 0x64, 0x58, 0xc1, 0xbb, 0xa4, 0x18, 0x84, 0xaf, - 0x9d, 0xd9, 0xe8, 0xb5, 0xf3, 0xe0, 0x77, 0x29, 0xd8, 0xd0, 0xec, 0xf1, 0x6c, 0xbc, 0x07, 0x68, - 0xe6, 0x9e, 0xee, 0x7d, 0x91, 0xfa, 0xea, 0xfe, 0xc8, 0xf0, 0x4f, 0x27, 0x27, 0x35, 0xcd, 0x1e, - 0xef, 0x8e, 0x6c, 0x93, 0x58, 0xa3, 0xe9, 0xef, 0x60, 0xfc, 0x1f, 0xed, 0xc6, 0x88, 0x5a, 0x37, - 0x46, 0x76, 0xec, 0x57, 0xb1, 0x7b, 0xd3, 0x7f, 0xbf, 0x4d, 0x67, 0x0e, 0x7b, 0x07, 0x7f, 0x4e, - 0x6f, 0x1d, 0x8a, 0x6f, 0xf5, 0xc2, 0xdc, 0x28, 0x74, 0x68, 0x52, 0x8d, 0xcd, 0xf7, 0x7f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x8e, 0x54, 0xe7, 0xef, 0x60, 0x1b, 0x00, 0x00, + // 2287 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x73, 0xdb, 0xc6, + 0x15, 0x0f, 0xf8, 0x25, 0xf2, 0x91, 0xa2, 0x56, 0x2b, 0xc5, 0x86, 0xe5, 0x38, 0x96, 0x19, 0x3b, + 0x96, 0xed, 0x96, 0xce, 0xc8, 0x1f, 0x71, 0x94, 0x4e, 0x3a, 0x94, 0x08, 0x2b, 0xf4, 0x50, 0x22, + 0x0b, 0x4a, 0xad, 0x93, 0x1e, 0x30, 0x2b, 0x60, 0x49, 0xc1, 0x06, 0x17, 0x28, 0x00, 0xda, 0x56, + 0x4e, 0x9e, 0xe9, 0xa9, 0xc7, 0xde, 0x3a, 0x6d, 0xa7, 0xd3, 0xc9, 0x25, 0x33, 0xfd, 0x03, 0x7a, + 0xe8, 0xbd, 0xd7, 0xce, 0xf4, 0xde, 0x63, 0x67, 0xda, 0xff, 0xa0, 0xd7, 0xce, 0xee, 0x02, 0x20, + 0xf8, 0x15, 0xab, 0x99, 0x49, 0xd2, 0x93, 0xb8, 0xbf, 0xf7, 0x7b, 0x0f, 0x6f, 0xdf, 0x3e, 0xbc, + 0xf7, 0xb0, 0x82, 0xcd, 0x81, 0xeb, 0x0e, 0x1c, 0x7a, 0xd7, 0xf3, 0xdd, 0xd0, 0x3d, 0x19, 0xf5, + 0xef, 0x5a, 0x34, 0x30, 0x7d, 0xdb, 0x0b, 0x5d, 0xbf, 0x2e, 0x30, 0xbc, 0x22, 0x19, 0xf5, 0x98, + 0x51, 0x3b, 0x80, 0xd5, 0xc7, 0xb6, 0x43, 0x9b, 0x09, 0xb1, 0x47, 0x43, 0xfc, 0x08, 0x72, 0x7d, + 0xdb, 0xa1, 0xaa, 0xb2, 0x99, 0xdd, 0x2a, 0x6f, 0x5f, 0xaf, 0x4f, 0x29, 0xd5, 0x27, 0x35, 0xba, + 0x1c, 0xd6, 0x85, 0x46, 0xed, 0x9f, 0x39, 0x58, 0x9b, 0x23, 0xc5, 0x18, 0x72, 0x8c, 0x0c, 0xb9, + 0x45, 0x65, 0xab, 0xa4, 0x8b, 0xdf, 0x58, 0x85, 0x25, 0x8f, 0x98, 0xcf, 0xc9, 0x80, 0xaa, 0x19, + 0x01, 0xc7, 0x4b, 0xfc, 0x2e, 0x80, 0x45, 0x3d, 0xca, 0x2c, 0xca, 0xcc, 0x33, 0x35, 0xbb, 0x99, + 0xdd, 0x2a, 0xe9, 0x29, 0x04, 0xdf, 0x81, 0x55, 0x6f, 0x74, 0xe2, 0xd8, 0xa6, 0x91, 0xa2, 0xc1, + 0x66, 0x76, 0x2b, 0xaf, 0x23, 0x29, 0x68, 0x8e, 0xc9, 0x37, 0x61, 0xe5, 0x25, 0x25, 0xcf, 0xd3, + 0xd4, 0xb2, 0xa0, 0x56, 0x39, 0x9c, 0x22, 0xee, 0x41, 0x65, 0x48, 0x83, 0x80, 0x0c, 0xa8, 0x11, + 0x9e, 0x79, 0x54, 0xcd, 0x89, 0xdd, 0x6f, 0xce, 0xec, 0x7e, 0x7a, 0xe7, 0xe5, 0x48, 0xeb, 0xe8, + 0xcc, 0xa3, 0xb8, 0x01, 0x25, 0xca, 0x46, 0x43, 0x69, 0x21, 0xbf, 0x20, 0x7e, 0x1a, 0x1b, 0x0d, + 0xa7, 0xad, 0x14, 0xb9, 0x5a, 0x64, 0x62, 0x29, 0xa0, 0xfe, 0x0b, 0xdb, 0xa4, 0x6a, 0x41, 0x18, + 0xb8, 0x39, 0x63, 0xa0, 0x27, 0xe5, 0xd3, 0x36, 0x62, 0x3d, 0xbc, 0x07, 0x25, 0xfa, 0x2a, 0xa4, + 0x2c, 0xb0, 0x5d, 0xa6, 0x2e, 0x09, 0x23, 0x37, 0xe6, 0x9c, 0x22, 0x75, 0xac, 0x69, 0x13, 0x63, + 0x3d, 0xfc, 0x10, 0x96, 0x5c, 0x2f, 0xb4, 0x5d, 0x16, 0xa8, 0xc5, 0x4d, 0x65, 0xab, 0xbc, 0xfd, + 0xce, 0xdc, 0x44, 0xe8, 0x48, 0x8e, 0x1e, 0x93, 0x71, 0x0b, 0x50, 0xe0, 0x8e, 0x7c, 0x93, 0x1a, + 0xa6, 0x6b, 0x51, 0xc3, 0x66, 0x7d, 0x57, 0x2d, 0x09, 0x03, 0x57, 0x67, 0x37, 0x22, 0x88, 0x7b, + 0xae, 0x45, 0x5b, 0xac, 0xef, 0xea, 0xd5, 0x60, 0x62, 0x8d, 0x2f, 0x40, 0x21, 0x38, 0x63, 0x21, + 0x79, 0xa5, 0x56, 0x44, 0x86, 0x44, 0xab, 0xda, 0x7f, 0xf2, 0xb0, 0x72, 0x9e, 0x14, 0xfb, 0x18, + 0xf2, 0x7d, 0xbe, 0x4b, 0x35, 0xf3, 0xbf, 0xc4, 0x40, 0xea, 0x4c, 0x06, 0xb1, 0xf0, 0x0d, 0x83, + 0xd8, 0x80, 0x32, 0xa3, 0x41, 0x48, 0x2d, 0x99, 0x11, 0xd9, 0x73, 0xe6, 0x14, 0x48, 0xa5, 0xd9, + 0x94, 0xca, 0x7d, 0xa3, 0x94, 0x7a, 0x0a, 0x2b, 0x89, 0x4b, 0x86, 0x4f, 0xd8, 0x20, 0xce, 0xcd, + 0xbb, 0x6f, 0xf2, 0xa4, 0xae, 0xc5, 0x7a, 0x3a, 0x57, 0xd3, 0xab, 0x74, 0x62, 0x8d, 0x9b, 0x00, + 0x2e, 0xa3, 0x6e, 0xdf, 0xb0, 0xa8, 0xe9, 0xa8, 0xc5, 0x05, 0x51, 0xea, 0x70, 0xca, 0x4c, 0x94, + 0x5c, 0x89, 0x9a, 0x0e, 0xfe, 0x68, 0x9c, 0x6a, 0x4b, 0x0b, 0x32, 0xe5, 0x40, 0xbe, 0x64, 0x33, + 0xd9, 0x76, 0x0c, 0x55, 0x9f, 0xf2, 0xbc, 0xa7, 0x56, 0xb4, 0xb3, 0x92, 0x70, 0xa2, 0xfe, 0xc6, + 0x9d, 0xe9, 0x91, 0x9a, 0xdc, 0xd8, 0xb2, 0x9f, 0x5e, 0xe2, 0xf7, 0x20, 0x01, 0x0c, 0x91, 0x56, + 0x20, 0xaa, 0x50, 0x25, 0x06, 0x0f, 0xc9, 0x90, 0x6e, 0x3c, 0x82, 0xea, 0x64, 0x78, 0xf0, 0x3a, + 0xe4, 0x83, 0x90, 0xf8, 0xa1, 0xc8, 0xc2, 0xbc, 0x2e, 0x17, 0x18, 0x41, 0x96, 0x32, 0x4b, 0x54, + 0xb9, 0xbc, 0xce, 0x7f, 0x6e, 0x7c, 0x08, 0xcb, 0x13, 0x8f, 0x3f, 0xaf, 0x62, 0xed, 0x37, 0x05, + 0x58, 0x9f, 0x97, 0x73, 0x73, 0xd3, 0xff, 0x02, 0x14, 0xd8, 0x68, 0x78, 0x42, 0x7d, 0x35, 0x2b, + 0x2c, 0x44, 0x2b, 0xdc, 0x80, 0xbc, 0x43, 0x4e, 0xa8, 0xa3, 0xe6, 0x36, 0x95, 0xad, 0xea, 0xf6, + 0x9d, 0x73, 0x65, 0x75, 0xbd, 0xcd, 0x55, 0x74, 0xa9, 0x89, 0x3f, 0x81, 0x5c, 0x54, 0xe2, 0xb8, + 0x85, 0xdb, 0xe7, 0xb3, 0xc0, 0x73, 0x51, 0x17, 0x7a, 0xf8, 0x32, 0x94, 0xf8, 0x5f, 0x19, 0xdb, + 0x82, 0xf0, 0xb9, 0xc8, 0x01, 0x1e, 0x57, 0xbc, 0x01, 0x45, 0x91, 0x66, 0x16, 0x8d, 0x5b, 0x43, + 0xb2, 0xe6, 0x07, 0x63, 0xd1, 0x3e, 0x19, 0x39, 0xa1, 0xf1, 0x82, 0x38, 0x23, 0x2a, 0x12, 0xa6, + 0xa4, 0x57, 0x22, 0xf0, 0xa7, 0x1c, 0xc3, 0x57, 0xa1, 0x2c, 0xb3, 0xd2, 0x66, 0x16, 0x7d, 0x25, + 0xaa, 0x4f, 0x5e, 0x97, 0x89, 0xda, 0xe2, 0x08, 0x7f, 0xfc, 0xb3, 0xc0, 0x65, 0xf1, 0xd1, 0x8a, + 0x47, 0x70, 0x40, 0x3c, 0xfe, 0xc3, 0xe9, 0xc2, 0x77, 0x65, 0xfe, 0xf6, 0xa6, 0x73, 0xb1, 0xf6, + 0xe7, 0x0c, 0xe4, 0xc4, 0xfb, 0xb6, 0x02, 0xe5, 0xa3, 0xcf, 0xba, 0x9a, 0xd1, 0xec, 0x1c, 0xef, + 0xb6, 0x35, 0xa4, 0xe0, 0x2a, 0x80, 0x00, 0x1e, 0xb7, 0x3b, 0x8d, 0x23, 0x94, 0x49, 0xd6, 0xad, + 0xc3, 0xa3, 0x87, 0xf7, 0x51, 0x36, 0x51, 0x38, 0x96, 0x40, 0x2e, 0x4d, 0xb8, 0xb7, 0x8d, 0xf2, + 0x18, 0x41, 0x45, 0x1a, 0x68, 0x3d, 0xd5, 0x9a, 0x0f, 0xef, 0xa3, 0xc2, 0x24, 0x72, 0x6f, 0x1b, + 0x2d, 0xe1, 0x65, 0x28, 0x09, 0x64, 0xb7, 0xd3, 0x69, 0xa3, 0x62, 0x62, 0xb3, 0x77, 0xa4, 0xb7, + 0x0e, 0xf7, 0x51, 0x29, 0xb1, 0xb9, 0xaf, 0x77, 0x8e, 0xbb, 0x08, 0x12, 0x0b, 0x07, 0x5a, 0xaf, + 0xd7, 0xd8, 0xd7, 0x50, 0x39, 0x61, 0xec, 0x7e, 0x76, 0xa4, 0xf5, 0x50, 0x65, 0xc2, 0xad, 0x7b, + 0xdb, 0x68, 0x39, 0x79, 0x84, 0x76, 0x78, 0x7c, 0x80, 0xaa, 0x78, 0x15, 0x96, 0xe5, 0x23, 0x62, + 0x27, 0x56, 0xa6, 0xa0, 0x87, 0xf7, 0x11, 0x1a, 0x3b, 0x22, 0xad, 0xac, 0x4e, 0x00, 0x0f, 0xef, + 0x23, 0x5c, 0xdb, 0x83, 0xbc, 0xc8, 0x2e, 0x8c, 0xa1, 0xda, 0x6e, 0xec, 0x6a, 0x6d, 0xa3, 0xd3, + 0x3d, 0x6a, 0x75, 0x0e, 0x1b, 0x6d, 0xa4, 0x8c, 0x31, 0x5d, 0xfb, 0xc9, 0x71, 0x4b, 0xd7, 0x9a, + 0x28, 0x93, 0xc6, 0xba, 0x5a, 0xe3, 0x48, 0x6b, 0xa2, 0x6c, 0xcd, 0x84, 0xf5, 0x79, 0x75, 0x66, + 0xee, 0x9b, 0x91, 0x3a, 0xe2, 0xcc, 0x82, 0x23, 0x16, 0xb6, 0x66, 0x8e, 0xf8, 0x4b, 0x05, 0xd6, + 0xe6, 0xd4, 0xda, 0xb9, 0x0f, 0xf9, 0x31, 0xe4, 0x65, 0x8a, 0xca, 0xee, 0x73, 0x6b, 0x6e, 0xd1, + 0x16, 0x09, 0x3b, 0xd3, 0x81, 0x84, 0x5e, 0xba, 0x03, 0x67, 0x17, 0x74, 0x60, 0x6e, 0x62, 0xc6, + 0xc9, 0x5f, 0x2a, 0xa0, 0x2e, 0xb2, 0xfd, 0x86, 0x42, 0x91, 0x99, 0x28, 0x14, 0x1f, 0x4f, 0x3b, + 0x70, 0x6d, 0xf1, 0x1e, 0x66, 0xbc, 0xf8, 0x4a, 0x81, 0x0b, 0xf3, 0x07, 0x95, 0xb9, 0x3e, 0x7c, + 0x02, 0x85, 0x21, 0x0d, 0x4f, 0xdd, 0xb8, 0x59, 0xbf, 0x3f, 0xa7, 0x05, 0x70, 0xf1, 0x74, 0xac, + 0x22, 0xad, 0x74, 0x0f, 0xc9, 0x2e, 0x9a, 0x36, 0xa4, 0x37, 0x33, 0x9e, 0xfe, 0x2a, 0x03, 0x6f, + 0xcf, 0x35, 0x3e, 0xd7, 0xd1, 0x2b, 0x00, 0x36, 0xf3, 0x46, 0xa1, 0x6c, 0xc8, 0xb2, 0x3e, 0x95, + 0x04, 0x22, 0xde, 0x7d, 0x5e, 0x7b, 0x46, 0x61, 0x22, 0xcf, 0x0a, 0x39, 0x48, 0x48, 0x10, 0x1e, + 0x8d, 0x1d, 0xcd, 0x09, 0x47, 0xdf, 0x5d, 0xb0, 0xd3, 0x99, 0x5e, 0xf7, 0x01, 0x20, 0xd3, 0xb1, + 0x29, 0x0b, 0x8d, 0x20, 0xf4, 0x29, 0x19, 0xda, 0x6c, 0x20, 0x0a, 0x70, 0x71, 0x27, 0xdf, 0x27, + 0x4e, 0x40, 0xf5, 0x15, 0x29, 0xee, 0xc5, 0x52, 0xae, 0x21, 0xba, 0x8c, 0x9f, 0xd2, 0x28, 0x4c, + 0x68, 0x48, 0x71, 0xa2, 0x51, 0xfb, 0xf5, 0x12, 0x94, 0x53, 0x63, 0x1d, 0xbe, 0x06, 0x95, 0x67, + 0xe4, 0x05, 0x31, 0xe2, 0x51, 0x5d, 0x46, 0xa2, 0xcc, 0xb1, 0x6e, 0x34, 0xae, 0x7f, 0x00, 0xeb, + 0x82, 0xe2, 0x8e, 0x42, 0xea, 0x1b, 0xa6, 0x43, 0x82, 0x40, 0x04, 0xad, 0x28, 0xa8, 0x98, 0xcb, + 0x3a, 0x5c, 0xb4, 0x17, 0x4b, 0xf0, 0x03, 0x58, 0x13, 0x1a, 0xc3, 0x91, 0x13, 0xda, 0x9e, 0x43, + 0x0d, 0xfe, 0xf1, 0x10, 0x88, 0x42, 0x9c, 0x78, 0xb6, 0xca, 0x19, 0x07, 0x11, 0x81, 0x7b, 0x14, + 0xe0, 0x7d, 0xb8, 0x22, 0xd4, 0x06, 0x94, 0x51, 0x9f, 0x84, 0xd4, 0xa0, 0xbf, 0x18, 0x11, 0x27, + 0x30, 0x08, 0xb3, 0x8c, 0x53, 0x12, 0x9c, 0xaa, 0xeb, 0x69, 0x03, 0x97, 0x38, 0x77, 0x3f, 0xa2, + 0x6a, 0x82, 0xd9, 0x60, 0xd6, 0xa7, 0x24, 0x38, 0xc5, 0x3b, 0x70, 0x41, 0x18, 0x0a, 0x42, 0xdf, + 0x66, 0x03, 0xc3, 0x3c, 0xa5, 0xe6, 0x73, 0x63, 0x14, 0xf6, 0x1f, 0xa9, 0x97, 0xd3, 0x16, 0x84, + 0x93, 0x3d, 0xc1, 0xd9, 0xe3, 0x94, 0xe3, 0xb0, 0xff, 0x08, 0xf7, 0xa0, 0xc2, 0xcf, 0x63, 0x68, + 0x7f, 0x41, 0x8d, 0xbe, 0xeb, 0x8b, 0xe6, 0x52, 0x9d, 0xf3, 0x72, 0xa7, 0x82, 0x58, 0xef, 0x44, + 0x0a, 0x07, 0xae, 0x45, 0x77, 0xf2, 0xbd, 0xae, 0xa6, 0x35, 0xf5, 0x72, 0x6c, 0xe5, 0xb1, 0xeb, + 0xf3, 0x9c, 0x1a, 0xb8, 0x49, 0x8c, 0xcb, 0x32, 0xa7, 0x06, 0x6e, 0x1c, 0xe1, 0x07, 0xb0, 0x66, + 0x9a, 0x72, 0xdb, 0xb6, 0x69, 0x44, 0x53, 0x7e, 0xa0, 0xa2, 0x89, 0x78, 0x99, 0xe6, 0xbe, 0x24, + 0x44, 0x69, 0x1e, 0xe0, 0x8f, 0xe0, 0xed, 0x71, 0xbc, 0xd2, 0x8a, 0xab, 0x33, 0xbb, 0x9c, 0x56, + 0x7d, 0x00, 0x6b, 0xde, 0xd9, 0xac, 0x22, 0x9e, 0x78, 0xa2, 0x77, 0x36, 0xad, 0x76, 0x43, 0x7c, + 0xb9, 0xf9, 0xd4, 0x24, 0x21, 0xb5, 0xd4, 0x8b, 0x69, 0x76, 0x4a, 0x80, 0xef, 0x02, 0x32, 0x4d, + 0x83, 0x32, 0x72, 0xe2, 0x50, 0x83, 0xf8, 0x94, 0x91, 0x40, 0xbd, 0x9a, 0x26, 0x57, 0x4d, 0x53, + 0x13, 0xd2, 0x86, 0x10, 0xe2, 0xdb, 0xb0, 0xea, 0x9e, 0x3c, 0x33, 0x65, 0x72, 0x19, 0x9e, 0x4f, + 0xfb, 0xf6, 0x2b, 0xf5, 0xba, 0x08, 0xd3, 0x0a, 0x17, 0x88, 0xd4, 0xea, 0x0a, 0x18, 0xdf, 0x02, + 0x64, 0x06, 0xa7, 0xc4, 0xf7, 0x44, 0x77, 0x0f, 0x3c, 0x62, 0x52, 0xf5, 0x86, 0xa4, 0x4a, 0xfc, + 0x30, 0x86, 0xf1, 0x53, 0x58, 0x1f, 0x31, 0x9b, 0x85, 0xd4, 0xf7, 0x7c, 0xca, 0x87, 0x74, 0xf9, + 0xa6, 0xa9, 0xff, 0x5a, 0x5a, 0x30, 0x66, 0x1f, 0xa7, 0xd9, 0xf2, 0x74, 0xf5, 0xb5, 0xd1, 0x2c, + 0x58, 0xdb, 0x81, 0x4a, 0xfa, 0xd0, 0x71, 0x09, 0xe4, 0xb1, 0x23, 0x85, 0xf7, 0xd0, 0xbd, 0x4e, + 0x93, 0x77, 0xbf, 0xcf, 0x35, 0x94, 0xe1, 0x5d, 0xb8, 0xdd, 0x3a, 0xd2, 0x0c, 0xfd, 0xf8, 0xf0, + 0xa8, 0x75, 0xa0, 0xa1, 0xec, 0xed, 0x52, 0xf1, 0xdf, 0x4b, 0xe8, 0xf5, 0xeb, 0xd7, 0xaf, 0x33, + 0x4f, 0x72, 0xc5, 0xf7, 0xd1, 0xcd, 0xda, 0x5f, 0x33, 0x50, 0x9d, 0x9c, 0x7f, 0xf1, 0x8f, 0xe0, + 0x62, 0xfc, 0xb1, 0x1a, 0xd0, 0xd0, 0x78, 0x69, 0xfb, 0x22, 0x1b, 0x87, 0x44, 0x4e, 0x90, 0x49, + 0x20, 0xd7, 0x23, 0x56, 0x8f, 0x86, 0x3f, 0xb3, 0x7d, 0x9e, 0x6b, 0x43, 0x12, 0xe2, 0x36, 0x5c, + 0x65, 0xae, 0x11, 0x84, 0x84, 0x59, 0xc4, 0xb7, 0x8c, 0xf1, 0x35, 0x81, 0x41, 0x4c, 0x93, 0x06, + 0x81, 0x2b, 0x1b, 0x41, 0x62, 0xe5, 0x1d, 0xe6, 0xf6, 0x22, 0xf2, 0xb8, 0x42, 0x36, 0x22, 0xea, + 0xd4, 0xa1, 0x67, 0x17, 0x1d, 0xfa, 0x65, 0x28, 0x0d, 0x89, 0x67, 0x50, 0x16, 0xfa, 0x67, 0x62, + 0x6a, 0x2b, 0xea, 0xc5, 0x21, 0xf1, 0x34, 0xbe, 0xfe, 0xf6, 0x4e, 0x22, 0x15, 0xcd, 0xda, 0x3f, + 0xb2, 0x50, 0x49, 0x4f, 0x6e, 0x7c, 0x10, 0x36, 0x45, 0x95, 0x56, 0xc4, 0x4b, 0xfc, 0xde, 0xd7, + 0xce, 0x79, 0xf5, 0x3d, 0x5e, 0xbe, 0x77, 0x0a, 0x72, 0x9e, 0xd2, 0xa5, 0x26, 0x6f, 0x9d, 0xfc, + 0xb5, 0xa5, 0x72, 0x4a, 0x2f, 0xea, 0xd1, 0x0a, 0xef, 0x43, 0xe1, 0x59, 0x20, 0x6c, 0x17, 0x84, + 0xed, 0xeb, 0x5f, 0x6f, 0xfb, 0x49, 0x4f, 0x18, 0x2f, 0x3d, 0xe9, 0x19, 0x87, 0x1d, 0xfd, 0xa0, + 0xd1, 0xd6, 0x23, 0x75, 0x7c, 0x09, 0x72, 0x0e, 0xf9, 0xe2, 0x6c, 0xb2, 0xd0, 0x0b, 0xe8, 0xbc, + 0x81, 0xbf, 0x04, 0xb9, 0x97, 0x94, 0x3c, 0x9f, 0x2c, 0xaf, 0x02, 0xfa, 0x16, 0x5f, 0x80, 0xbb, + 0x90, 0x17, 0xf1, 0xc2, 0x00, 0x51, 0xc4, 0xd0, 0x5b, 0xb8, 0x08, 0xb9, 0xbd, 0x8e, 0xce, 0x5f, + 0x02, 0x04, 0x15, 0x89, 0x1a, 0xdd, 0x96, 0xb6, 0xa7, 0xa1, 0x4c, 0xed, 0x01, 0x14, 0x64, 0x10, + 0xf8, 0x0b, 0x92, 0x84, 0x01, 0xbd, 0x15, 0x2d, 0x23, 0x1b, 0x4a, 0x2c, 0x3d, 0x3e, 0xd8, 0xd5, + 0x74, 0x94, 0x49, 0x1f, 0x6f, 0x00, 0x95, 0xf4, 0xd0, 0xf6, 0xdd, 0xe4, 0xd4, 0x5f, 0x14, 0x28, + 0xa7, 0x86, 0x30, 0xde, 0xfe, 0x89, 0xe3, 0xb8, 0x2f, 0x0d, 0xe2, 0xd8, 0x24, 0x88, 0x92, 0x02, + 0x04, 0xd4, 0xe0, 0xc8, 0x79, 0x0f, 0xed, 0x3b, 0x71, 0xfe, 0x0f, 0x0a, 0xa0, 0xe9, 0x01, 0x6e, + 0xca, 0x41, 0xe5, 0x7b, 0x75, 0xf0, 0xf7, 0x0a, 0x54, 0x27, 0xa7, 0xb6, 0x29, 0xf7, 0xae, 0x7d, + 0xaf, 0xee, 0xfd, 0x4e, 0x81, 0xe5, 0x89, 0x59, 0xed, 0xff, 0xca, 0xbb, 0xdf, 0x66, 0x61, 0x6d, + 0x8e, 0x1e, 0x6e, 0x44, 0x43, 0xad, 0x9c, 0xb3, 0x7f, 0x78, 0x9e, 0x67, 0xd5, 0x79, 0xcf, 0xec, + 0x12, 0x3f, 0x8c, 0x66, 0xe0, 0x5b, 0x80, 0x6c, 0x8b, 0xb2, 0xd0, 0xee, 0xdb, 0xd4, 0x8f, 0x3e, + 0xc4, 0xe5, 0xa4, 0xbb, 0x32, 0xc6, 0xe5, 0xb7, 0xf8, 0x0f, 0x00, 0x7b, 0x6e, 0x60, 0x87, 0xf6, + 0x0b, 0x6a, 0xd8, 0x2c, 0xfe, 0x6a, 0xe7, 0x93, 0x6f, 0x4e, 0x47, 0xb1, 0xa4, 0xc5, 0xc2, 0x84, + 0xcd, 0xe8, 0x80, 0x4c, 0xb1, 0x79, 0xed, 0xcb, 0xea, 0x28, 0x96, 0x24, 0xec, 0x6b, 0x50, 0xb1, + 0xdc, 0x11, 0x1f, 0x22, 0x24, 0x8f, 0x97, 0x5a, 0x45, 0x2f, 0x4b, 0x2c, 0xa1, 0x44, 0x53, 0xde, + 0xf8, 0xba, 0xa0, 0xa2, 0x97, 0x25, 0x26, 0x29, 0x37, 0x61, 0x85, 0x0c, 0x06, 0x3e, 0x37, 0x1e, + 0x1b, 0x92, 0xa3, 0x6b, 0x35, 0x81, 0x05, 0x71, 0xe3, 0x09, 0x14, 0xe3, 0x38, 0xf0, 0x6e, 0xc6, + 0x23, 0x61, 0x78, 0xf2, 0xd2, 0x26, 0xb3, 0x55, 0xd2, 0x8b, 0x2c, 0x16, 0x5e, 0x83, 0x8a, 0x1d, + 0x18, 0xe3, 0xdb, 0xc3, 0xcc, 0x66, 0x66, 0xab, 0xa8, 0x97, 0xed, 0x20, 0xb9, 0x2e, 0xaa, 0x7d, + 0x95, 0x81, 0xea, 0xe4, 0xed, 0x27, 0x6e, 0x42, 0xd1, 0x71, 0x4d, 0x22, 0x12, 0x41, 0x5e, 0xbd, + 0x6f, 0xbd, 0xe1, 0xc2, 0xb4, 0xde, 0x8e, 0xf8, 0x7a, 0xa2, 0xb9, 0xf1, 0x37, 0x05, 0x8a, 0x31, + 0x8c, 0x2f, 0x40, 0xce, 0x23, 0xe1, 0xa9, 0x30, 0x97, 0xdf, 0xcd, 0x20, 0x45, 0x17, 0x6b, 0x8e, + 0x07, 0x1e, 0x61, 0x22, 0x05, 0x22, 0x9c, 0xaf, 0xf9, 0xb9, 0x3a, 0x94, 0x58, 0x62, 0x28, 0x76, + 0x87, 0x43, 0xca, 0xc2, 0x20, 0x3e, 0xd7, 0x08, 0xdf, 0x8b, 0x60, 0x7c, 0x07, 0x56, 0x43, 0x9f, + 0xd8, 0xce, 0x04, 0x37, 0x27, 0xb8, 0x28, 0x16, 0x24, 0xe4, 0x1d, 0xb8, 0x14, 0xdb, 0xb5, 0x68, + 0x48, 0xcc, 0x53, 0x6a, 0x8d, 0x95, 0x0a, 0xe2, 0x6a, 0xed, 0x62, 0x44, 0x68, 0x46, 0xf2, 0x58, + 0xb7, 0xf6, 0x77, 0x05, 0x56, 0xe3, 0x31, 0xde, 0x4a, 0x82, 0x75, 0x00, 0x40, 0x18, 0x73, 0xc3, + 0x74, 0xb8, 0x66, 0x53, 0x79, 0x46, 0xaf, 0xde, 0x48, 0x94, 0xf4, 0x94, 0x81, 0x8d, 0x21, 0xc0, + 0x58, 0xb2, 0x30, 0x6c, 0x57, 0xa1, 0x1c, 0x5d, 0x6d, 0x8b, 0xff, 0x8f, 0xc8, 0x6f, 0x3f, 0x90, + 0x10, 0x9f, 0xf7, 0xf1, 0x3a, 0xe4, 0x4f, 0xe8, 0xc0, 0x66, 0xd1, 0x85, 0x9b, 0x5c, 0xc4, 0xd7, + 0x78, 0xb9, 0xe4, 0x1a, 0x6f, 0xf7, 0xe7, 0xb0, 0x66, 0xba, 0xc3, 0x69, 0x77, 0x77, 0xd1, 0xd4, + 0xf7, 0x67, 0xf0, 0xa9, 0xf2, 0x39, 0x8c, 0xa7, 0xb3, 0x3f, 0x2a, 0xca, 0x97, 0x99, 0xec, 0x7e, + 0x77, 0xf7, 0x4f, 0x99, 0x8d, 0x7d, 0xa9, 0xda, 0x8d, 0x77, 0xaa, 0xd3, 0xbe, 0x43, 0x4d, 0xee, + 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0x54, 0xc8, 0x7d, 0x07, 0x1a, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go index 211ab5d3ad..0e5d2b70d9 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go @@ -1237,8 +1237,9 @@ func (g *Generator) generate(file *FileDescriptor) { // Generate the header, including package definition func (g *Generator) generateHeader() { - g.P("// Code generated by protoc-gen-go. DO NOT EDIT.") + g.P("// Code generated by protoc-gen-go.") g.P("// source: ", g.file.Name) + g.P("// DO NOT EDIT!") g.P() name := g.file.PackageName() @@ -2075,6 +2076,11 @@ func (g *Generator) generateMessage(message *Descriptor) { star = "*" } + // In proto3, only generate getters for message fields and oneof fields. + if message.proto3() && *field.Type != descriptor.FieldDescriptorProto_TYPE_MESSAGE && !oneof { + continue + } + // Only export getter symbols for basic types, // and for messages and enums in the same package. // Groups are not exported. @@ -2133,11 +2139,7 @@ func (g *Generator) generateMessage(message *Descriptor) { continue } if !oneof { - if message.proto3() { - g.P("if m != nil {") - } else { - g.P("if m != nil && m." + fname + " != nil {") - } + g.P("if m != nil && m." + fname + " != nil {") g.In() g.P("return " + star + "m." + fname) g.Out() @@ -2555,7 +2557,6 @@ func (g *Generator) generateExtension(ext *ExtensionDescriptor) { g.P("Field: ", field.Number, ",") g.P(`Name: "`, extName, `",`) g.P("Tag: ", tag, ",") - g.P(`Filename: "`, g.file.GetName(), `",`) g.Out() g.P("}") diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile index 4095623e03..eb41f20daa 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile @@ -33,9 +33,10 @@ # at src/google/protobuf/compiler/plugin.proto # Also we need to fix an import. regenerate: - @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION - protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:../../../../.. \ - -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/compiler/plugin.proto + echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION + protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:. \ + -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/compiler/plugin.proto && \ + mv google/protobuf/compiler/plugin.pb.go $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/plugin restore: cp plugin.pb.golden plugin.pb.go diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go index c608a248bc..0ff4e13a8f 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: google/protobuf/compiler/plugin.proto +// DO NOT EDIT! /* Package plugin_go is a generated protocol buffer package. @@ -8,7 +9,6 @@ It is generated from these files: google/protobuf/compiler/plugin.proto It has these top-level messages: - Version CodeGeneratorRequest CodeGeneratorResponse */ @@ -30,50 +30,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package -// The version number of protocol compiler. -type Version struct { - Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` - Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` - Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Version) GetMajor() int32 { - if m != nil && m.Major != nil { - return *m.Major - } - return 0 -} - -func (m *Version) GetMinor() int32 { - if m != nil && m.Minor != nil { - return *m.Minor - } - return 0 -} - -func (m *Version) GetPatch() int32 { - if m != nil && m.Patch != nil { - return *m.Patch - } - return 0 -} - -func (m *Version) GetSuffix() string { - if m != nil && m.Suffix != nil { - return *m.Suffix - } - return "" -} - // An encoded CodeGeneratorRequest is written to the plugin's stdin. type CodeGeneratorRequest struct { // The .proto files that were explicitly listed on the command-line. The @@ -93,19 +49,14 @@ type CodeGeneratorRequest struct { // the entire set into memory at once. However, as of this writing, this // is not similarly optimized on protoc's end -- it will store all fields in // memory at once before sending them to the plugin. - // - // Type names of fields and extensions in the FileDescriptorProto are always - // fully qualified. - ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` - // The version number of protocol compiler. - CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` - XXX_unrecognized []byte `json:"-"` + ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} } func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorRequest) ProtoMessage() {} -func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (m *CodeGeneratorRequest) GetFileToGenerate() []string { if m != nil { @@ -128,13 +79,6 @@ func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorP return nil } -func (m *CodeGeneratorRequest) GetCompilerVersion() *Version { - if m != nil { - return m.CompilerVersion - } - return nil -} - // The plugin writes an encoded CodeGeneratorResponse to stdout. type CodeGeneratorResponse struct { // Error message. If non-empty, code generation failed. The plugin process @@ -153,7 +97,7 @@ type CodeGeneratorResponse struct { func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} } func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorResponse) ProtoMessage() {} -func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *CodeGeneratorResponse) GetError() string { if m != nil && m.Error != nil { @@ -229,7 +173,7 @@ type CodeGeneratorResponse_File struct { func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} } func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorResponse_File) ProtoMessage() {} -func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } +func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } func (m *CodeGeneratorResponse_File) GetName() string { if m != nil && m.Name != nil { @@ -253,7 +197,6 @@ func (m *CodeGeneratorResponse_File) GetContent() string { } func init() { - proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version") proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest") proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse") proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File") @@ -262,32 +205,25 @@ func init() { func init() { proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41, - 0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2, - 0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30, - 0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa, - 0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91, - 0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63, - 0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb, - 0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55, - 0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8, - 0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1, - 0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f, - 0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d, - 0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2, - 0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a, - 0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2, - 0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d, - 0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda, - 0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed, - 0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34, - 0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79, - 0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45, - 0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4, - 0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e, - 0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92, - 0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d, - 0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00, - 0x00, + // 310 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x51, 0xc1, 0x4a, 0xc3, 0x40, + 0x10, 0x25, 0xb6, 0x22, 0x19, 0xa5, 0x95, 0xa5, 0xc2, 0x52, 0x7a, 0x08, 0x45, 0x31, 0xa7, 0x14, + 0x44, 0xf0, 0xde, 0x8a, 0x7a, 0x2c, 0xc1, 0x93, 0x20, 0x21, 0xa6, 0xd3, 0xb0, 0x90, 0xec, 0xac, + 0xb3, 0xdb, 0x2f, 0xf2, 0x9f, 0xfc, 0x1e, 0xd9, 0x4d, 0x5b, 0xa5, 0xd8, 0xdb, 0xce, 0x7b, 0x6f, + 0xe6, 0xbd, 0x9d, 0x81, 0x9b, 0x9a, 0xa8, 0x6e, 0x70, 0x66, 0x98, 0x1c, 0x7d, 0x6c, 0xd6, 0xb3, + 0x8a, 0x5a, 0xa3, 0x1a, 0xe4, 0x99, 0x69, 0x36, 0xb5, 0xd2, 0x59, 0x20, 0x84, 0xec, 0x64, 0xd9, + 0x4e, 0x96, 0xed, 0x64, 0xe3, 0xe4, 0x70, 0xc0, 0x0a, 0x6d, 0xc5, 0xca, 0x38, 0xe2, 0x4e, 0x3d, + 0xfd, 0x8a, 0x60, 0xb4, 0xa0, 0x15, 0x3e, 0xa3, 0x46, 0x2e, 0x1d, 0x71, 0x8e, 0x9f, 0x1b, 0xb4, + 0x4e, 0xa4, 0x70, 0xb9, 0x56, 0x0d, 0x16, 0x8e, 0x8a, 0xba, 0xe3, 0x50, 0x46, 0x49, 0x2f, 0x8d, + 0xf3, 0x81, 0xc7, 0x5f, 0x69, 0xdb, 0x81, 0x62, 0x02, 0xb1, 0x29, 0xb9, 0x6c, 0xd1, 0x21, 0xcb, + 0x93, 0x24, 0x4a, 0xe3, 0xfc, 0x17, 0x10, 0x0b, 0x80, 0xe0, 0x54, 0xf8, 0x2e, 0x39, 0x4c, 0x7a, + 0xe9, 0xf9, 0xdd, 0x75, 0x76, 0x98, 0xf8, 0x49, 0x35, 0xf8, 0xb8, 0xcf, 0xb6, 0xf4, 0x70, 0x1e, + 0x07, 0xd6, 0x33, 0xd3, 0xef, 0x08, 0xae, 0x0e, 0x52, 0x5a, 0x43, 0xda, 0xa2, 0x18, 0xc1, 0x29, + 0x32, 0x13, 0xcb, 0x28, 0x18, 0x77, 0x85, 0x78, 0x81, 0xfe, 0x1f, 0xbb, 0xfb, 0xec, 0xd8, 0x82, + 0xb2, 0x7f, 0x87, 0x86, 0x34, 0x79, 0x98, 0x30, 0x7e, 0x87, 0xbe, 0xaf, 0x84, 0x80, 0xbe, 0x2e, + 0x5b, 0xdc, 0xda, 0x84, 0xb7, 0xb8, 0x85, 0xa1, 0xd2, 0x16, 0xd9, 0x29, 0xd2, 0x85, 0x21, 0xa5, + 0xdd, 0xf6, 0xfb, 0x83, 0x3d, 0xbc, 0xf4, 0xa8, 0x90, 0x70, 0x56, 0x91, 0x76, 0xa8, 0x9d, 0x1c, + 0x06, 0xc1, 0xae, 0x9c, 0x3f, 0xc0, 0xa4, 0xa2, 0xf6, 0x68, 0xbe, 0xf9, 0xc5, 0x32, 0x1c, 0x3a, + 0x2c, 0xc4, 0xbe, 0xc5, 0xdd, 0xd9, 0x8b, 0x9a, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x83, 0x7b, + 0x5c, 0x7c, 0x1b, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile index a0bf9fefd9..b1ac45c774 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile @@ -45,9 +45,9 @@ my_test/test.pb.go: my_test/test.proto golden: make -B my_test/test.pb.go - sed -i -e '/return.*fileDescriptor/d' my_test/test.pb.go - sed -i -e '/^var fileDescriptor/,/^}/d' my_test/test.pb.go - sed -i -e '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go + sed -i '/return.*fileDescriptor/d' my_test/test.pb.go + sed -i '/^var fileDescriptor/,/^}/d' my_test/test.pb.go + sed -i '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go gofmt -w my_test/test.pb.go diff -w my_test/test.pb.go my_test/test.pb.go.golden diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go index 1954e3fb7d..9ec3e1292e 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: my_test/test.proto +// DO NOT EDIT! /* Package my_test is a generated protocol buffer package. @@ -318,7 +319,7 @@ func (m *Reply) GetCompactKeys() []int32 { type Reply_Entry struct { KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"` Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"` - XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"` + XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=myFieldName2" json:"_my_field_name_2,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -388,7 +389,6 @@ var E_ReplyExtensions_Time = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.time", Tag: "fixed64,101,opt,name=time", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ @@ -397,7 +397,6 @@ var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ Field: 105, Name: "my.test.ReplyExtensions.carrot", Tag: "bytes,105,opt,name=carrot", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ @@ -406,7 +405,6 @@ var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.donut", Tag: "bytes,101,opt,name=donut", - Filename: "my_test/test.proto", } type OtherReplyExtensions struct { @@ -834,7 +832,6 @@ var E_Tag = &proto.ExtensionDesc{ Field: 103, Name: "my.test.tag", Tag: "bytes,103,opt,name=tag", - Filename: "my_test/test.proto", } var E_Donut = &proto.ExtensionDesc{ @@ -843,7 +840,6 @@ var E_Donut = &proto.ExtensionDesc{ Field: 106, Name: "my.test.donut", Tag: "bytes,106,opt,name=donut", - Filename: "my_test/test.proto", } func init() { diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden index 1954e3fb7d..9ec3e1292e 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: my_test/test.proto +// DO NOT EDIT! /* Package my_test is a generated protocol buffer package. @@ -318,7 +319,7 @@ func (m *Reply) GetCompactKeys() []int32 { type Reply_Entry struct { KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"` Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"` - XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"` + XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=myFieldName2" json:"_my_field_name_2,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -388,7 +389,6 @@ var E_ReplyExtensions_Time = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.time", Tag: "fixed64,101,opt,name=time", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ @@ -397,7 +397,6 @@ var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ Field: 105, Name: "my.test.ReplyExtensions.carrot", Tag: "bytes,105,opt,name=carrot", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ @@ -406,7 +405,6 @@ var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.donut", Tag: "bytes,101,opt,name=donut", - Filename: "my_test/test.proto", } type OtherReplyExtensions struct { @@ -834,7 +832,6 @@ var E_Tag = &proto.ExtensionDesc{ Field: 103, Name: "my.test.tag", Tag: "bytes,103,opt,name=tag", - Filename: "my_test/test.proto", } var E_Donut = &proto.ExtensionDesc{ @@ -843,7 +840,6 @@ var E_Donut = &proto.ExtensionDesc{ Field: 106, Name: "my.test.donut", Tag: "bytes,106,opt,name=donut", - Filename: "my_test/test.proto", } func init() { diff --git a/vendor/github.com/golang/protobuf/ptypes/any.go b/vendor/github.com/golang/protobuf/ptypes/any.go index b2af97f4a9..89e07ae192 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any.go +++ b/vendor/github.com/golang/protobuf/ptypes/any.go @@ -51,9 +51,6 @@ const googleApis = "type.googleapis.com/" // function. AnyMessageName is provided for less common use cases like filtering a // sequence of Any messages based on a set of allowed message type names. func AnyMessageName(any *any.Any) (string, error) { - if any == nil { - return "", fmt.Errorf("message is nil") - } slash := strings.LastIndex(any.TypeUrl, "/") if slash < 0 { return "", fmt.Errorf("message type url %q is invalid", any.TypeUrl) diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go index 1fbaa44caa..f2c6906b91 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/any/any.proto +// DO NOT EDIT! /* Package any is a generated protocol buffer package. @@ -131,20 +132,6 @@ func (*Any) ProtoMessage() {} func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*Any) XXX_WellKnownType() string { return "Any" } -func (m *Any) GetTypeUrl() string { - if m != nil { - return m.TypeUrl - } - return "" -} - -func (m *Any) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - func init() { proto.RegisterType((*Any)(nil), "google.protobuf.Any") } @@ -152,17 +139,17 @@ func init() { func init() { proto.RegisterFile("github.com/golang/protobuf/ptypes/any/any.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 184 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9, + // 187 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcc, 0xab, 0x04, 0x61, 0x3d, 0xb0, 0xb8, 0x10, 0x7f, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x1e, 0x4c, 0x95, 0x92, 0x19, 0x17, 0xb3, 0x63, 0x5e, 0xa5, 0x90, 0x24, 0x17, 0x07, 0x48, 0x79, 0x7c, 0x69, 0x51, 0x8e, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x3b, 0x88, 0x1f, 0x5a, 0x94, 0x23, 0x24, 0xc2, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x13, 0x04, 0xe1, - 0x38, 0xe5, 0x73, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19, - 0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x45, 0x4c, 0xcc, 0xee, 0x01, 0x4e, 0xab, - 0x98, 0xe4, 0xdc, 0x21, 0x46, 0x05, 0x40, 0x95, 0xe8, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5, - 0x97, 0xe7, 0x85, 0x80, 0x94, 0x26, 0xb1, 0x81, 0xf5, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, - 0x45, 0x1f, 0x1a, 0xf2, 0xf3, 0x00, 0x00, 0x00, + 0x38, 0x15, 0x71, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19, + 0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x05, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, + 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c, 0x0b, 0x80, 0xaa, 0xd2, 0x0b, 0x4f, 0xcd, 0xc9, + 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, 0x4e, 0x62, 0x03, 0x6b, 0x37, 0x06, 0x04, 0x00, + 0x00, 0xff, 0xff, 0xc6, 0x4d, 0x03, 0x23, 0xf6, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.proto b/vendor/github.com/golang/protobuf/ptypes/any/any.proto index 9bd3f50a45..81dcf46ccf 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.proto +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.proto @@ -37,6 +37,7 @@ option go_package = "github.com/golang/protobuf/ptypes/any"; option java_package = "com.google.protobuf"; option java_outer_classname = "AnyProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // `Any` contains an arbitrary serialized protocol buffer message along with a diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go index fe3350bed0..569748346d 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/duration/duration.proto +// DO NOT EDIT! /* Package duration is a generated protocol buffer package. @@ -34,8 +35,6 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // two Timestamp values is a Duration and it can be added or subtracted // from a Timestamp. Range is approximately +-10,000 years. // -// # Examples -// // Example 1: Compute Duration from two Timestamps in pseudo code. // // Timestamp start = ...; @@ -70,27 +69,10 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // end.nanos -= 1000000000; // } // -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// // type Duration struct { // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + // to +315,576,000,000 inclusive. Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` // Signed fractions of a second at nanosecond resolution of the span // of time. Durations less than one second are represented with a 0 @@ -107,20 +89,6 @@ func (*Duration) ProtoMessage() {} func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*Duration) XXX_WellKnownType() string { return "Duration" } -func (m *Duration) GetSeconds() int64 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *Duration) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - func init() { proto.RegisterType((*Duration)(nil), "google.protobuf.Duration") } @@ -131,7 +99,7 @@ func init() { var fileDescriptor0 = []byte{ // 189 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0x29, 0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0x83, 0x33, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, @@ -139,8 +107,8 @@ var fileDescriptor0 = []byte{ 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x86, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x48, 0x27, 0x5e, 0x98, - 0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xfb, 0x83, 0x91, 0x71, 0x11, 0x13, + 0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xbb, 0x80, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb9, 0x01, 0x50, 0xa5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x2d, 0x49, 0x6c, 0x60, 0x33, 0x8c, 0x01, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x45, 0x5a, 0x81, 0x3d, 0x0e, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0xff, 0xff, 0x62, 0xfb, 0xb1, 0x51, 0x0e, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto index 975fce41aa..96c1796d65 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto +++ b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto @@ -33,11 +33,11 @@ syntax = "proto3"; package google.protobuf; option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; option go_package = "github.com/golang/protobuf/ptypes/duration"; option java_package = "com.google.protobuf"; option java_outer_classname = "DurationProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // A Duration represents a signed, fixed-length span of time represented @@ -47,8 +47,6 @@ option objc_class_prefix = "GPB"; // two Timestamp values is a Duration and it can be added or subtracted // from a Timestamp. Range is approximately +-10,000 years. // -// # Examples -// // Example 1: Compute Duration from two Timestamps in pseudo code. // // Timestamp start = ...; @@ -83,28 +81,11 @@ option objc_class_prefix = "GPB"; // end.nanos -= 1000000000; // } // -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// // message Duration { // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + // to +315,576,000,000 inclusive. int64 seconds = 1; // Signed fractions of a second at nanosecond resolution of the span diff --git a/vendor/github.com/golang/protobuf/ptypes/duration_test.go b/vendor/github.com/golang/protobuf/ptypes/duration_test.go index e00491a34f..e761289f12 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration_test.go +++ b/vendor/github.com/golang/protobuf/ptypes/duration_test.go @@ -52,37 +52,37 @@ var durationTests = []struct { dur time.Duration }{ // The zero duration. - {&durpb.Duration{Seconds: 0, Nanos: 0}, true, true, 0}, + {&durpb.Duration{0, 0}, true, true, 0}, // Some ordinary non-zero durations. - {&durpb.Duration{Seconds: 100, Nanos: 0}, true, true, 100 * time.Second}, - {&durpb.Duration{Seconds: -100, Nanos: 0}, true, true, -100 * time.Second}, - {&durpb.Duration{Seconds: 100, Nanos: 987}, true, true, 100*time.Second + 987}, - {&durpb.Duration{Seconds: -100, Nanos: -987}, true, true, -(100*time.Second + 987)}, + {&durpb.Duration{100, 0}, true, true, 100 * time.Second}, + {&durpb.Duration{-100, 0}, true, true, -100 * time.Second}, + {&durpb.Duration{100, 987}, true, true, 100*time.Second + 987}, + {&durpb.Duration{-100, -987}, true, true, -(100*time.Second + 987)}, // The largest duration representable in Go. - {&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, true, math.MaxInt64}, + {&durpb.Duration{maxGoSeconds, int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, true, math.MaxInt64}, // The smallest duration representable in Go. - {&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, true, math.MinInt64}, + {&durpb.Duration{minGoSeconds, int32(math.MinInt64 - 1e9*minGoSeconds)}, true, true, math.MinInt64}, {nil, false, false, 0}, - {&durpb.Duration{Seconds: -100, Nanos: 987}, false, false, 0}, - {&durpb.Duration{Seconds: 100, Nanos: -987}, false, false, 0}, - {&durpb.Duration{Seconds: math.MinInt64, Nanos: 0}, false, false, 0}, - {&durpb.Duration{Seconds: math.MaxInt64, Nanos: 0}, false, false, 0}, + {&durpb.Duration{-100, 987}, false, false, 0}, + {&durpb.Duration{100, -987}, false, false, 0}, + {&durpb.Duration{math.MinInt64, 0}, false, false, 0}, + {&durpb.Duration{math.MaxInt64, 0}, false, false, 0}, // The largest valid duration. - {&durpb.Duration{Seconds: maxSeconds, Nanos: 1e9 - 1}, true, false, 0}, + {&durpb.Duration{maxSeconds, 1e9 - 1}, true, false, 0}, // The smallest valid duration. - {&durpb.Duration{Seconds: minSeconds, Nanos: -(1e9 - 1)}, true, false, 0}, + {&durpb.Duration{minSeconds, -(1e9 - 1)}, true, false, 0}, // The smallest invalid duration above the valid range. - {&durpb.Duration{Seconds: maxSeconds + 1, Nanos: 0}, false, false, 0}, + {&durpb.Duration{maxSeconds + 1, 0}, false, false, 0}, // The largest invalid duration below the valid range. - {&durpb.Duration{Seconds: minSeconds - 1, Nanos: -(1e9 - 1)}, false, false, 0}, + {&durpb.Duration{minSeconds - 1, -(1e9 - 1)}, false, false, 0}, // One nanosecond past the largest duration representable in Go. - {&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, true, false, 0}, + {&durpb.Duration{maxGoSeconds, int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, true, false, 0}, // One nanosecond past the smallest duration representable in Go. - {&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64-1e9*minGoSeconds) - 1}, true, false, 0}, + {&durpb.Duration{minGoSeconds, int32(math.MinInt64-1e9*minGoSeconds) - 1}, true, false, 0}, // One second past the largest duration representable in Go. - {&durpb.Duration{Seconds: maxGoSeconds + 1, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, false, 0}, + {&durpb.Duration{maxGoSeconds + 1, int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, false, 0}, // One second past the smallest duration representable in Go. - {&durpb.Duration{Seconds: minGoSeconds - 1, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, false, 0}, + {&durpb.Duration{minGoSeconds - 1, int32(math.MinInt64 - 1e9*minGoSeconds)}, true, false, 0}, } func TestValidateDuration(t *testing.T) { diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go index ae15941446..46c765a96e 100644 --- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/empty/empty.proto +// DO NOT EDIT! /* Package empty is a generated protocol buffer package. @@ -54,15 +55,15 @@ func init() { } var fileDescriptor0 = []byte{ - // 147 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, + // 150 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcd, 0x2d, 0x28, 0xa9, 0x84, 0x90, 0x7a, 0x60, 0x39, 0x21, 0xfe, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54, - 0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e, + 0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x25, 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36, 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x27, 0xd2, - 0xce, 0x1f, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c, - 0x0c, 0x80, 0xaa, 0xd3, 0x0b, 0x4f, 0xcd, 0xc9, 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, - 0x4f, 0x62, 0x03, 0x1b, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x8e, 0x0a, 0x06, 0xcf, - 0x00, 0x00, 0x00, + 0xce, 0x05, 0x8c, 0x8c, 0x3f, 0x18, 0x19, 0x17, 0x31, 0x31, 0xbb, 0x07, 0x38, 0xad, 0x62, 0x92, + 0x73, 0x87, 0x18, 0x1a, 0x00, 0x55, 0xaa, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e, + 0x17, 0x02, 0xd2, 0x92, 0xc4, 0x06, 0x36, 0xc3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xbb, + 0xf4, 0x0e, 0xd2, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto b/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto index 03cacd2330..37f4cd10ee 100644 --- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto +++ b/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto @@ -37,6 +37,7 @@ option go_package = "github.com/golang/protobuf/ptypes/empty"; option java_package = "com.google.protobuf"; option java_outer_classname = "EmptyProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; option cc_enable_arenas = true; diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go index 35a8ec5994..197042ed52 100644 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/struct/struct.proto +// DO NOT EDIT! /* Package structpb is a generated protocol buffer package. @@ -351,32 +352,31 @@ func init() { } var fileDescriptor0 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40, + // 416 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40, 0x14, 0x80, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa0, 0xa1, 0x7b, 0x09, 0x22, 0x09, 0x56, 0x04, 0x31, 0x5e, 0x0c, 0xac, 0xbb, 0x60, 0x58, 0x62, 0x74, 0x57, 0xf0, 0x52, - 0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x7b, 0xf4, 0xe8, - 0xaf, 0xf3, 0x28, 0x33, 0x93, 0x44, 0x69, 0x29, 0x78, 0x9a, 0xbe, 0x37, 0xdf, 0xfb, 0xe6, 0xbd, - 0xd7, 0xc0, 0xf3, 0xb2, 0xe2, 0x9f, 0x45, 0xe6, 0xe7, 0x6c, 0x13, 0x94, 0x8c, 0x2c, 0x68, 0x19, - 0xd4, 0x0d, 0xe3, 0x2c, 0x13, 0xab, 0xa0, 0xe6, 0xdb, 0xba, 0x68, 0x83, 0x96, 0x37, 0x22, 0xe7, - 0xdd, 0xe1, 0xab, 0x5b, 0x7c, 0xa7, 0x64, 0xac, 0x24, 0x85, 0xdf, 0xb3, 0xd3, 0xef, 0x08, 0xac, - 0xf7, 0x8a, 0xc0, 0x21, 0x58, 0xab, 0xaa, 0x20, 0xcb, 0x76, 0x82, 0x5c, 0xd3, 0x73, 0x66, 0x67, - 0xfe, 0x0e, 0xec, 0x6b, 0xd0, 0x7f, 0xa3, 0xa8, 0x73, 0xca, 0x9b, 0x6d, 0xda, 0x95, 0x9c, 0xbe, - 0x03, 0xe7, 0x9f, 0x34, 0x3e, 0x01, 0x73, 0x5d, 0x6c, 0x27, 0xc8, 0x45, 0x9e, 0x9d, 0xca, 0x9f, - 0xf8, 0x09, 0x8c, 0xbf, 0x2c, 0x88, 0x28, 0x26, 0x86, 0x8b, 0x3c, 0x67, 0x76, 0x6f, 0x4f, 0x7e, - 0x23, 0x6f, 0x53, 0x0d, 0xbd, 0x34, 0x5e, 0xa0, 0xe9, 0x2f, 0x03, 0xc6, 0x2a, 0x89, 0x43, 0x00, - 0x2a, 0x08, 0x99, 0x6b, 0x81, 0x94, 0x1e, 0xcf, 0x4e, 0xf7, 0x04, 0x57, 0x82, 0x10, 0xc5, 0x5f, - 0x8e, 0x52, 0x9b, 0xf6, 0x01, 0x3e, 0x83, 0xdb, 0x54, 0x6c, 0xb2, 0xa2, 0x99, 0xff, 0x7d, 0x1f, - 0x5d, 0x8e, 0x52, 0x47, 0x67, 0x07, 0xa8, 0xe5, 0x4d, 0x45, 0xcb, 0x0e, 0x32, 0x65, 0xe3, 0x12, - 0xd2, 0x59, 0x0d, 0x3d, 0x02, 0xc8, 0x18, 0xeb, 0xdb, 0x38, 0x72, 0x91, 0x77, 0x4b, 0x3e, 0x25, - 0x73, 0x1a, 0x78, 0xa5, 0x2c, 0x22, 0xe7, 0x1d, 0x32, 0x56, 0xa3, 0xde, 0x3f, 0xb0, 0xc7, 0x4e, - 0x2f, 0x72, 0x3e, 0x4c, 0x49, 0xaa, 0xb6, 0xaf, 0xb5, 0x54, 0xed, 0xfe, 0x94, 0x71, 0xd5, 0xf2, - 0x61, 0x4a, 0xd2, 0x07, 0x91, 0x05, 0x47, 0xeb, 0x8a, 0x2e, 0xa7, 0x21, 0xd8, 0x03, 0x81, 0x7d, - 0xb0, 0x94, 0xac, 0xff, 0x47, 0x0f, 0x2d, 0xbd, 0xa3, 0x1e, 0x3f, 0x00, 0x7b, 0x58, 0x22, 0x3e, - 0x06, 0xb8, 0xba, 0x8e, 0xe3, 0xf9, 0xcd, 0xeb, 0xf8, 0xfa, 0xfc, 0x64, 0x14, 0x7d, 0x43, 0x70, - 0x37, 0x67, 0x9b, 0x5d, 0x45, 0xe4, 0xe8, 0x69, 0x12, 0x19, 0x27, 0xe8, 0xd3, 0xd3, 0xff, 0xfd, - 0x30, 0x43, 0x7d, 0xd4, 0xd9, 0x6f, 0x84, 0x7e, 0x18, 0xe6, 0x45, 0x12, 0xfd, 0x34, 0x1e, 0x5e, - 0x68, 0x79, 0xd2, 0xf7, 0xf7, 0xb1, 0x20, 0xe4, 0x2d, 0x65, 0x5f, 0xe9, 0x07, 0x59, 0x99, 0x59, - 0x4a, 0xf5, 0xec, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x6e, 0x5d, 0x3c, 0xfe, 0x02, 0x00, - 0x00, + 0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x8a, 0x47, 0x8f, + 0xfe, 0x42, 0x99, 0x99, 0x24, 0x4a, 0x4b, 0xc1, 0xd3, 0xf4, 0xbd, 0xf9, 0xde, 0x37, 0xef, 0xbd, + 0x06, 0x9e, 0x97, 0x15, 0xff, 0x2c, 0x32, 0x3f, 0x67, 0x9b, 0xa0, 0x64, 0x64, 0x41, 0xcb, 0xa0, + 0x6e, 0x18, 0x67, 0x99, 0x58, 0x05, 0x35, 0xdf, 0xd6, 0x45, 0x1b, 0xb4, 0xbc, 0x11, 0x39, 0xef, + 0x0e, 0x5f, 0xdd, 0xe2, 0x3b, 0x25, 0x63, 0x25, 0x29, 0xfc, 0x9e, 0x9d, 0x7e, 0x47, 0x60, 0xbd, + 0x57, 0x04, 0x0e, 0xc1, 0x5a, 0x55, 0x05, 0x59, 0xb6, 0x13, 0xe4, 0x9a, 0x9e, 0x33, 0x3b, 0xf3, + 0x77, 0x60, 0x5f, 0x83, 0xfe, 0x1b, 0x45, 0x9d, 0x53, 0xde, 0x6c, 0xd3, 0xae, 0xe4, 0xf4, 0x1d, + 0x38, 0xff, 0xa4, 0xf1, 0x09, 0x98, 0xeb, 0x62, 0x3b, 0x41, 0x2e, 0xf2, 0xec, 0x54, 0xfe, 0xc4, + 0x4f, 0x60, 0xfc, 0x65, 0x41, 0x44, 0x31, 0x31, 0x5c, 0xe4, 0x39, 0xb3, 0x7b, 0x7b, 0xf2, 0x1b, + 0x79, 0x9b, 0x6a, 0xe8, 0xa5, 0xf1, 0x02, 0x4d, 0x7f, 0x1b, 0x30, 0x56, 0x49, 0x1c, 0x02, 0x50, + 0x41, 0xc8, 0x5c, 0x0b, 0xa4, 0xf4, 0x78, 0x76, 0xba, 0x27, 0xb8, 0x12, 0x84, 0x28, 0xfe, 0x72, + 0x94, 0xda, 0xb4, 0x0f, 0xf0, 0x19, 0xdc, 0xa6, 0x62, 0x93, 0x15, 0xcd, 0xfc, 0xef, 0xfb, 0xe8, + 0x72, 0x94, 0x3a, 0x3a, 0x3b, 0x40, 0x2d, 0x6f, 0x2a, 0x5a, 0x76, 0x90, 0x29, 0x1b, 0x97, 0x90, + 0xce, 0x6a, 0xe8, 0x11, 0x40, 0xc6, 0x58, 0xdf, 0xc6, 0x91, 0x8b, 0xbc, 0x5b, 0xf2, 0x29, 0x99, + 0xd3, 0xc0, 0x2b, 0x65, 0x11, 0x39, 0xef, 0x90, 0xb1, 0x1a, 0xf5, 0xfe, 0x81, 0x3d, 0x76, 0x7a, + 0x91, 0xf3, 0x61, 0x4a, 0x52, 0xb5, 0x7d, 0xad, 0xa5, 0x6a, 0xf7, 0xa7, 0x8c, 0xab, 0x96, 0x0f, + 0x53, 0x92, 0x3e, 0x88, 0x2c, 0x38, 0x5a, 0x57, 0x74, 0x39, 0x0d, 0xc1, 0x1e, 0x08, 0xec, 0x83, + 0xa5, 0x64, 0xfd, 0x3f, 0x7a, 0x68, 0xe9, 0x1d, 0xf5, 0xf8, 0x01, 0xd8, 0xc3, 0x12, 0xf1, 0x31, + 0xc0, 0xd5, 0x75, 0x1c, 0xcf, 0x6f, 0x5e, 0xc7, 0xd7, 0xe7, 0x27, 0xa3, 0xe8, 0x1b, 0x82, 0xbb, + 0x39, 0xdb, 0xec, 0x2a, 0x22, 0x47, 0x4f, 0x93, 0xc8, 0x38, 0x41, 0x9f, 0x9e, 0xfe, 0xef, 0x87, + 0x19, 0xea, 0xa3, 0xce, 0x7e, 0x20, 0xf4, 0xd3, 0x30, 0x2f, 0x92, 0xe8, 0x97, 0xf1, 0xf0, 0x42, + 0xcb, 0x93, 0xbe, 0xbf, 0x8f, 0x05, 0x21, 0x6f, 0x29, 0xfb, 0x4a, 0x3f, 0xc8, 0xca, 0xcc, 0x52, + 0xaa, 0x67, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xcf, 0x6d, 0x50, 0xfe, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto b/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto index 7d7808e7fb..beeba81188 100644 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto +++ b/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto @@ -33,11 +33,11 @@ syntax = "proto3"; package google.protobuf; option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; option java_package = "com.google.protobuf"; option java_outer_classname = "StructProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp.go b/vendor/github.com/golang/protobuf/ptypes/timestamp.go index 47f10dbc2c..1b36576220 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp.go @@ -99,15 +99,6 @@ func Timestamp(ts *tspb.Timestamp) (time.Time, error) { return t, validateTimestamp(ts) } -// TimestampNow returns a google.protobuf.Timestamp for the current time. -func TimestampNow() *tspb.Timestamp { - ts, err := TimestampProto(time.Now()) - if err != nil { - panic("ptypes: time.Now() out of Timestamp range") - } - return ts -} - // TimestampProto converts the time.Time to a google.protobuf.Timestamp proto. // It returns an error if the resulting Timestamp is invalid. func TimestampProto(t time.Time) (*tspb.Timestamp, error) { diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go index 3b76261ec5..ffcc51594a 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto +// DO NOT EDIT! /* Package timestamp is a generated protocol buffer package. @@ -39,8 +40,6 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // and from RFC 3339 date strings. // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). // -// # Examples -// // Example 1: Compute Timestamp from POSIX `time()`. // // Timestamp timestamp; @@ -78,36 +77,15 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // // Example 5: Compute Timestamp from current time in Python. // -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. +// now = time.time() +// seconds = int(now) +// nanos = int((now - seconds) * 10**9) +// timestamp = Timestamp(seconds=seconds, nanos=nanos) // // type Timestamp struct { // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` // Non-negative fractions of a second at nanosecond resolution. Negative @@ -123,20 +101,6 @@ func (*Timestamp) ProtoMessage() {} func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" } -func (m *Timestamp) GetSeconds() int64 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *Timestamp) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - func init() { proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp") } @@ -146,17 +110,18 @@ func init() { } var fileDescriptor0 = []byte{ - // 190 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9, + // 194 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0xc9, 0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0x40, 0xb0, 0xf4, 0xc0, 0x6a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x60, 0x3a, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, - 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x8e, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x4c, 0x27, 0x3e, - 0xb8, 0x89, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0xdc, 0xfc, 0x83, 0x91, 0x71, 0x11, - 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xc9, 0x01, 0x50, 0xb5, 0x7a, 0xe1, - 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x3d, 0x49, 0x6c, 0x60, 0x43, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x59, 0x0a, 0x4d, 0x13, 0x01, 0x00, 0x00, + 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x91, 0x91, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x50, 0x27, + 0x3e, 0xb8, 0x91, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0x1c, 0xbd, 0x80, 0x91, 0xf1, + 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, 0xc3, 0x03, + 0xa0, 0xca, 0xf5, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0xda, 0x92, + 0xd8, 0xc0, 0xe6, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x17, 0x5f, 0xb7, 0xdc, 0x17, 0x01, + 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto index b7cbd17502..7992a85886 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto @@ -38,6 +38,7 @@ option go_package = "github.com/golang/protobuf/ptypes/timestamp"; option java_package = "com.google.protobuf"; option java_outer_classname = "TimestampProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // A Timestamp represents a point in time independent of any time zone @@ -52,8 +53,6 @@ option objc_class_prefix = "GPB"; // and from RFC 3339 date strings. // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). // -// # Examples -// // Example 1: Compute Timestamp from POSIX `time()`. // // Timestamp timestamp; @@ -91,37 +90,16 @@ option objc_class_prefix = "GPB"; // // Example 5: Compute Timestamp from current time in Python. // -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. +// now = time.time() +// seconds = int(now) +// nanos = int((now - seconds) * 10**9) +// timestamp = Timestamp(seconds=seconds, nanos=nanos) // // message Timestamp { // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. int64 seconds = 1; diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go b/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go index 6e3c969b94..114a7f9fcf 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go @@ -46,32 +46,32 @@ var tests = []struct { t time.Time }{ // The timestamp representing the Unix epoch date. - {&tspb.Timestamp{Seconds: 0, Nanos: 0}, true, utcDate(1970, 1, 1)}, + {&tspb.Timestamp{0, 0}, true, utcDate(1970, 1, 1)}, // The smallest representable timestamp. - {&tspb.Timestamp{Seconds: math.MinInt64, Nanos: math.MinInt32}, false, + {&tspb.Timestamp{math.MinInt64, math.MinInt32}, false, time.Unix(math.MinInt64, math.MinInt32).UTC()}, // The smallest representable timestamp with non-negative nanos. - {&tspb.Timestamp{Seconds: math.MinInt64, Nanos: 0}, false, time.Unix(math.MinInt64, 0).UTC()}, + {&tspb.Timestamp{math.MinInt64, 0}, false, time.Unix(math.MinInt64, 0).UTC()}, // The earliest valid timestamp. - {&tspb.Timestamp{Seconds: minValidSeconds, Nanos: 0}, true, utcDate(1, 1, 1)}, + {&tspb.Timestamp{minValidSeconds, 0}, true, utcDate(1, 1, 1)}, //"0001-01-01T00:00:00Z"}, // The largest representable timestamp. - {&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: math.MaxInt32}, false, + {&tspb.Timestamp{math.MaxInt64, math.MaxInt32}, false, time.Unix(math.MaxInt64, math.MaxInt32).UTC()}, // The largest representable timestamp with nanos in range. - {&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: 1e9 - 1}, false, + {&tspb.Timestamp{math.MaxInt64, 1e9 - 1}, false, time.Unix(math.MaxInt64, 1e9-1).UTC()}, // The largest valid timestamp. - {&tspb.Timestamp{Seconds: maxValidSeconds - 1, Nanos: 1e9 - 1}, true, + {&tspb.Timestamp{maxValidSeconds - 1, 1e9 - 1}, true, time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC)}, // The smallest invalid timestamp that is larger than the valid range. - {&tspb.Timestamp{Seconds: maxValidSeconds, Nanos: 0}, false, time.Unix(maxValidSeconds, 0).UTC()}, + {&tspb.Timestamp{maxValidSeconds, 0}, false, time.Unix(maxValidSeconds, 0).UTC()}, // A date before the epoch. - {&tspb.Timestamp{Seconds: -281836800, Nanos: 0}, true, utcDate(1961, 1, 26)}, + {&tspb.Timestamp{-281836800, 0}, true, utcDate(1961, 1, 26)}, // A date after the epoch. - {&tspb.Timestamp{Seconds: 1296000000, Nanos: 0}, true, utcDate(2011, 1, 26)}, + {&tspb.Timestamp{1296000000, 0}, true, utcDate(2011, 1, 26)}, // A date after the epoch, in the middle of the day. - {&tspb.Timestamp{Seconds: 1296012345, Nanos: 940483}, true, + {&tspb.Timestamp{1296012345, 940483}, true, time.Date(2011, 1, 26, 3, 25, 45, 940483, time.UTC)}, } @@ -123,8 +123,8 @@ func TestTimestampString(t *testing.T) { }{ // Not much testing needed because presumably time.Format is // well-tested. - {&tspb.Timestamp{Seconds: 0, Nanos: 0}, "1970-01-01T00:00:00Z"}, - {&tspb.Timestamp{Seconds: minValidSeconds - 1, Nanos: 0}, "(timestamp: seconds:-62135596801 before 0001-01-01)"}, + {&tspb.Timestamp{0, 0}, "1970-01-01T00:00:00Z"}, + {&tspb.Timestamp{minValidSeconds - 1, 0}, "(timestamp: seconds:-62135596801 before 0001-01-01)"}, } { got := TimestampString(test.ts) if got != test.want { @@ -136,18 +136,3 @@ func TestTimestampString(t *testing.T) { func utcDate(year, month, day int) time.Time { return time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC) } - -func TestTimestampNow(t *testing.T) { - // Bracket the expected time. - before := time.Now() - ts := TimestampNow() - after := time.Now() - - tm, err := Timestamp(ts) - if err != nil { - t.Errorf("between %v and %v\nTimestampNow() = %v\nwhich is invalid (%v)", before, after, ts, err) - } - if tm.Before(before) || tm.After(after) { - t.Errorf("between %v and %v\nTimestamp(TimestampNow()) = %v", before, after, tm) - } -} diff --git a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go index 1328bd296a..5e52a81c7b 100644 --- a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/wrappers/wrappers.proto +// DO NOT EDIT! /* Package wrappers is a generated protocol buffer package. @@ -49,13 +50,6 @@ func (*DoubleValue) ProtoMessage() {} func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" } -func (m *DoubleValue) GetValue() float64 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `float`. // // The JSON representation for `FloatValue` is JSON number. @@ -70,13 +64,6 @@ func (*FloatValue) ProtoMessage() {} func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" } -func (m *FloatValue) GetValue() float32 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `int64`. // // The JSON representation for `Int64Value` is JSON string. @@ -91,13 +78,6 @@ func (*Int64Value) ProtoMessage() {} func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" } -func (m *Int64Value) GetValue() int64 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `uint64`. // // The JSON representation for `UInt64Value` is JSON string. @@ -112,13 +92,6 @@ func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" } -func (m *UInt64Value) GetValue() uint64 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `int32`. // // The JSON representation for `Int32Value` is JSON number. @@ -133,13 +106,6 @@ func (*Int32Value) ProtoMessage() {} func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" } -func (m *Int32Value) GetValue() int32 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `uint32`. // // The JSON representation for `UInt32Value` is JSON number. @@ -154,13 +120,6 @@ func (*UInt32Value) ProtoMessage() {} func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" } -func (m *UInt32Value) GetValue() uint32 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `bool`. // // The JSON representation for `BoolValue` is JSON `true` and `false`. @@ -175,13 +134,6 @@ func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" } -func (m *BoolValue) GetValue() bool { - if m != nil { - return m.Value - } - return false -} - // Wrapper message for `string`. // // The JSON representation for `StringValue` is JSON string. @@ -196,13 +148,6 @@ func (*StringValue) ProtoMessage() {} func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (*StringValue) XXX_WellKnownType() string { return "StringValue" } -func (m *StringValue) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - // Wrapper message for `bytes`. // // The JSON representation for `BytesValue` is JSON string. @@ -217,13 +162,6 @@ func (*BytesValue) ProtoMessage() {} func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" } -func (m *BytesValue) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - func init() { proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue") proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue") @@ -241,8 +179,8 @@ func init() { } var fileDescriptor0 = []byte{ - // 257 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, + // 260 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x2f, 0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x42, 0x30, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3, @@ -253,10 +191,10 @@ var fileDescriptor0 = []byte{ 0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4, 0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1, 0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, 0xb5, 0x18, - 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x1a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75, - 0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0xfb, 0xc1, - 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0xc4, 0xdc, 0x00, 0xa8, - 0x52, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0x96, 0x24, 0x36, - 0xb0, 0x19, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x36, 0x8d, 0xd8, 0x19, 0x02, 0x00, - 0x00, + 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x7a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75, + 0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0x5b, 0xc0, + 0xc8, 0xf8, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, + 0xd1, 0x01, 0x50, 0xd5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, + 0x5d, 0x49, 0x6c, 0x60, 0x63, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa9, 0xdf, 0x64, 0x4b, + 0x1c, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto index 01947639ac..4828ad9ae9 100644 --- a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto +++ b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto @@ -43,6 +43,7 @@ option go_package = "github.com/golang/protobuf/ptypes/wrappers"; option java_package = "com.google.protobuf"; option java_outer_classname = "WrappersProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // Wrapper message for `double`. diff --git a/vendor/github.com/google/btree/.travis.yml b/vendor/github.com/google/btree/.travis.yml new file mode 100644 index 0000000000..4f2ee4d973 --- /dev/null +++ b/vendor/github.com/google/btree/.travis.yml @@ -0,0 +1 @@ +language: go diff --git a/vendor/github.com/go-openapi/analysis/LICENSE b/vendor/github.com/google/btree/LICENSE similarity index 100% rename from vendor/github.com/go-openapi/analysis/LICENSE rename to vendor/github.com/google/btree/LICENSE diff --git a/vendor/github.com/google/btree/README.md b/vendor/github.com/google/btree/README.md new file mode 100644 index 0000000000..6062a4dacd --- /dev/null +++ b/vendor/github.com/google/btree/README.md @@ -0,0 +1,12 @@ +# BTree implementation for Go + +![Travis CI Build Status](https://api.travis-ci.org/google/btree.svg?branch=master) + +This package provides an in-memory B-Tree implementation for Go, useful as +an ordered, mutable data structure. + +The API is based off of the wonderful +http://godoc.org/github.com/petar/GoLLRB/llrb, and is meant to allow btree to +act as a drop-in replacement for gollrb trees. + +See http://godoc.org/github.com/google/btree for documentation. diff --git a/vendor/github.com/google/btree/btree.go b/vendor/github.com/google/btree/btree.go new file mode 100644 index 0000000000..fc5aaaa13a --- /dev/null +++ b/vendor/github.com/google/btree/btree.go @@ -0,0 +1,649 @@ +// 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. + +// Package btree implements in-memory B-Trees of arbitrary degree. +// +// btree implements an in-memory B-Tree for use as an ordered data structure. +// It is not meant for persistent storage solutions. +// +// It has a flatter structure than an equivalent red-black or other binary tree, +// which in some cases yields better memory usage and/or performance. +// See some discussion on the matter here: +// http://google-opensource.blogspot.com/2013/01/c-containers-that-save-memory-and-time.html +// Note, though, that this project is in no way related to the C++ B-Tree +// implmentation written about there. +// +// Within this tree, each node contains a slice of items and a (possibly nil) +// slice of children. For basic numeric values or raw structs, this can cause +// efficiency differences when compared to equivalent C++ template code that +// stores values in arrays within the node: +// * Due to the overhead of storing values as interfaces (each +// value needs to be stored as the value itself, then 2 words for the +// interface pointing to that value and its type), resulting in higher +// memory use. +// * Since interfaces can point to values anywhere in memory, values are +// most likely not stored in contiguous blocks, resulting in a higher +// number of cache misses. +// These issues don't tend to matter, though, when working with strings or other +// heap-allocated structures, since C++-equivalent structures also must store +// pointers and also distribute their values across the heap. +// +// This implementation is designed to be a drop-in replacement to gollrb.LLRB +// trees, (http://github.com/petar/gollrb), an excellent and probably the most +// widely used ordered tree implementation in the Go ecosystem currently. +// Its functions, therefore, exactly mirror those of +// llrb.LLRB where possible. Unlike gollrb, though, we currently don't +// support storing multiple equivalent values or backwards iteration. +package btree + +import ( + "fmt" + "io" + "sort" + "strings" +) + +// Item represents a single object in the tree. +type Item interface { + // Less tests whether the current item is less than the given argument. + // + // This must provide a strict weak ordering. + // If !a.Less(b) && !b.Less(a), we treat this to mean a == b (i.e. we can only + // hold one of either a or b in the tree). + Less(than Item) bool +} + +const ( + DefaultFreeListSize = 32 +) + +// FreeList represents a free list of btree nodes. By default each +// BTree has its own FreeList, but multiple BTrees can share the same +// FreeList. +// Two Btrees using the same freelist are not safe for concurrent write access. +type FreeList struct { + freelist []*node +} + +// NewFreeList creates a new free list. +// size is the maximum size of the returned free list. +func NewFreeList(size int) *FreeList { + return &FreeList{freelist: make([]*node, 0, size)} +} + +func (f *FreeList) newNode() (n *node) { + index := len(f.freelist) - 1 + if index < 0 { + return new(node) + } + f.freelist, n = f.freelist[:index], f.freelist[index] + return +} + +func (f *FreeList) freeNode(n *node) { + if len(f.freelist) < cap(f.freelist) { + f.freelist = append(f.freelist, n) + } +} + +// ItemIterator allows callers of Ascend* to iterate in-order over portions of +// the tree. When this function returns false, iteration will stop and the +// associated Ascend* function will immediately return. +type ItemIterator func(i Item) bool + +// New creates a new B-Tree with the given degree. +// +// New(2), for example, will create a 2-3-4 tree (each node contains 1-3 items +// and 2-4 children). +func New(degree int) *BTree { + return NewWithFreeList(degree, NewFreeList(DefaultFreeListSize)) +} + +// NewWithFreeList creates a new B-Tree that uses the given node free list. +func NewWithFreeList(degree int, f *FreeList) *BTree { + if degree <= 1 { + panic("bad degree") + } + return &BTree{ + degree: degree, + freelist: f, + } +} + +// items stores items in a node. +type items []Item + +// insertAt inserts a value into the given index, pushing all subsequent values +// forward. +func (s *items) insertAt(index int, item Item) { + *s = append(*s, nil) + if index < len(*s) { + copy((*s)[index+1:], (*s)[index:]) + } + (*s)[index] = item +} + +// removeAt removes a value at a given index, pulling all subsequent values +// back. +func (s *items) removeAt(index int) Item { + item := (*s)[index] + (*s)[index] = nil + copy((*s)[index:], (*s)[index+1:]) + *s = (*s)[:len(*s)-1] + return item +} + +// pop removes and returns the last element in the list. +func (s *items) pop() (out Item) { + index := len(*s) - 1 + out = (*s)[index] + (*s)[index] = nil + *s = (*s)[:index] + return +} + +// find returns the index where the given item should be inserted into this +// list. 'found' is true if the item already exists in the list at the given +// index. +func (s items) find(item Item) (index int, found bool) { + i := sort.Search(len(s), func(i int) bool { + return item.Less(s[i]) + }) + if i > 0 && !s[i-1].Less(item) { + return i - 1, true + } + return i, false +} + +// children stores child nodes in a node. +type children []*node + +// insertAt inserts a value into the given index, pushing all subsequent values +// forward. +func (s *children) insertAt(index int, n *node) { + *s = append(*s, nil) + if index < len(*s) { + copy((*s)[index+1:], (*s)[index:]) + } + (*s)[index] = n +} + +// removeAt removes a value at a given index, pulling all subsequent values +// back. +func (s *children) removeAt(index int) *node { + n := (*s)[index] + (*s)[index] = nil + copy((*s)[index:], (*s)[index+1:]) + *s = (*s)[:len(*s)-1] + return n +} + +// pop removes and returns the last element in the list. +func (s *children) pop() (out *node) { + index := len(*s) - 1 + out = (*s)[index] + (*s)[index] = nil + *s = (*s)[:index] + return +} + +// node is an internal node in a tree. +// +// It must at all times maintain the invariant that either +// * len(children) == 0, len(items) unconstrained +// * len(children) == len(items) + 1 +type node struct { + items items + children children + t *BTree +} + +// split splits the given node at the given index. The current node shrinks, +// and this function returns the item that existed at that index and a new node +// containing all items/children after it. +func (n *node) split(i int) (Item, *node) { + item := n.items[i] + next := n.t.newNode() + next.items = append(next.items, n.items[i+1:]...) + n.items = n.items[:i] + if len(n.children) > 0 { + next.children = append(next.children, n.children[i+1:]...) + n.children = n.children[:i+1] + } + return item, next +} + +// maybeSplitChild checks if a child should be split, and if so splits it. +// Returns whether or not a split occurred. +func (n *node) maybeSplitChild(i, maxItems int) bool { + if len(n.children[i].items) < maxItems { + return false + } + first := n.children[i] + item, second := first.split(maxItems / 2) + n.items.insertAt(i, item) + n.children.insertAt(i+1, second) + return true +} + +// insert inserts an item into the subtree rooted at this node, making sure +// no nodes in the subtree exceed maxItems items. Should an equivalent item be +// be found/replaced by insert, it will be returned. +func (n *node) insert(item Item, maxItems int) Item { + i, found := n.items.find(item) + if found { + out := n.items[i] + n.items[i] = item + return out + } + if len(n.children) == 0 { + n.items.insertAt(i, item) + return nil + } + if n.maybeSplitChild(i, maxItems) { + inTree := n.items[i] + switch { + case item.Less(inTree): + // no change, we want first split node + case inTree.Less(item): + i++ // we want second split node + default: + out := n.items[i] + n.items[i] = item + return out + } + } + return n.children[i].insert(item, maxItems) +} + +// get finds the given key in the subtree and returns it. +func (n *node) get(key Item) Item { + i, found := n.items.find(key) + if found { + return n.items[i] + } else if len(n.children) > 0 { + return n.children[i].get(key) + } + return nil +} + +// min returns the first item in the subtree. +func min(n *node) Item { + if n == nil { + return nil + } + for len(n.children) > 0 { + n = n.children[0] + } + if len(n.items) == 0 { + return nil + } + return n.items[0] +} + +// max returns the last item in the subtree. +func max(n *node) Item { + if n == nil { + return nil + } + for len(n.children) > 0 { + n = n.children[len(n.children)-1] + } + if len(n.items) == 0 { + return nil + } + return n.items[len(n.items)-1] +} + +// toRemove details what item to remove in a node.remove call. +type toRemove int + +const ( + removeItem toRemove = iota // removes the given item + removeMin // removes smallest item in the subtree + removeMax // removes largest item in the subtree +) + +// remove removes an item from the subtree rooted at this node. +func (n *node) remove(item Item, minItems int, typ toRemove) Item { + var i int + var found bool + switch typ { + case removeMax: + if len(n.children) == 0 { + return n.items.pop() + } + i = len(n.items) + case removeMin: + if len(n.children) == 0 { + return n.items.removeAt(0) + } + i = 0 + case removeItem: + i, found = n.items.find(item) + if len(n.children) == 0 { + if found { + return n.items.removeAt(i) + } + return nil + } + default: + panic("invalid type") + } + // If we get to here, we have children. + child := n.children[i] + if len(child.items) <= minItems { + return n.growChildAndRemove(i, item, minItems, typ) + } + // Either we had enough items to begin with, or we've done some + // merging/stealing, because we've got enough now and we're ready to return + // stuff. + if found { + // The item exists at index 'i', and the child we've selected can give us a + // predecessor, since if we've gotten here it's got > minItems items in it. + out := n.items[i] + // We use our special-case 'remove' call with typ=maxItem to pull the + // predecessor of item i (the rightmost leaf of our immediate left child) + // and set it into where we pulled the item from. + n.items[i] = child.remove(nil, minItems, removeMax) + return out + } + // Final recursive call. Once we're here, we know that the item isn't in this + // node and that the child is big enough to remove from. + return child.remove(item, minItems, typ) +} + +// growChildAndRemove grows child 'i' to make sure it's possible to remove an +// item from it while keeping it at minItems, then calls remove to actually +// remove it. +// +// Most documentation says we have to do two sets of special casing: +// 1) item is in this node +// 2) item is in child +// In both cases, we need to handle the two subcases: +// A) node has enough values that it can spare one +// B) node doesn't have enough values +// For the latter, we have to check: +// a) left sibling has node to spare +// b) right sibling has node to spare +// c) we must merge +// To simplify our code here, we handle cases #1 and #2 the same: +// If a node doesn't have enough items, we make sure it does (using a,b,c). +// We then simply redo our remove call, and the second time (regardless of +// whether we're in case 1 or 2), we'll have enough items and can guarantee +// that we hit case A. +func (n *node) growChildAndRemove(i int, item Item, minItems int, typ toRemove) Item { + child := n.children[i] + if i > 0 && len(n.children[i-1].items) > minItems { + // Steal from left child + stealFrom := n.children[i-1] + stolenItem := stealFrom.items.pop() + child.items.insertAt(0, n.items[i-1]) + n.items[i-1] = stolenItem + if len(stealFrom.children) > 0 { + child.children.insertAt(0, stealFrom.children.pop()) + } + } else if i < len(n.items) && len(n.children[i+1].items) > minItems { + // steal from right child + stealFrom := n.children[i+1] + stolenItem := stealFrom.items.removeAt(0) + child.items = append(child.items, n.items[i]) + n.items[i] = stolenItem + if len(stealFrom.children) > 0 { + child.children = append(child.children, stealFrom.children.removeAt(0)) + } + } else { + if i >= len(n.items) { + i-- + child = n.children[i] + } + // merge with right child + mergeItem := n.items.removeAt(i) + mergeChild := n.children.removeAt(i + 1) + child.items = append(child.items, mergeItem) + child.items = append(child.items, mergeChild.items...) + child.children = append(child.children, mergeChild.children...) + n.t.freeNode(mergeChild) + } + return n.remove(item, minItems, typ) +} + +// iterate provides a simple method for iterating over elements in the tree. +// It could probably use some work to be extra-efficient (it calls from() a +// little more than it should), but it works pretty well for now. +// +// It requires that 'from' and 'to' both return true for values we should hit +// with the iterator. It should also be the case that 'from' returns true for +// values less than or equal to values 'to' returns true for, and 'to' +// returns true for values greater than or equal to those that 'from' +// does. +func (n *node) iterate(from, to func(Item) bool, iter ItemIterator) bool { + for i, item := range n.items { + if !from(item) { + continue + } + if len(n.children) > 0 && !n.children[i].iterate(from, to, iter) { + return false + } + if !to(item) { + return false + } + if !iter(item) { + return false + } + } + if len(n.children) > 0 { + return n.children[len(n.children)-1].iterate(from, to, iter) + } + return true +} + +// Used for testing/debugging purposes. +func (n *node) print(w io.Writer, level int) { + fmt.Fprintf(w, "%sNODE:%v\n", strings.Repeat(" ", level), n.items) + for _, c := range n.children { + c.print(w, level+1) + } +} + +// BTree is an implementation of a B-Tree. +// +// BTree stores Item instances in an ordered structure, allowing easy insertion, +// removal, and iteration. +// +// Write operations are not safe for concurrent mutation by multiple +// goroutines, but Read operations are. +type BTree struct { + degree int + length int + root *node + freelist *FreeList +} + +// maxItems returns the max number of items to allow per node. +func (t *BTree) maxItems() int { + return t.degree*2 - 1 +} + +// minItems returns the min number of items to allow per node (ignored for the +// root node). +func (t *BTree) minItems() int { + return t.degree - 1 +} + +func (t *BTree) newNode() (n *node) { + n = t.freelist.newNode() + n.t = t + return +} + +func (t *BTree) freeNode(n *node) { + for i := range n.items { + n.items[i] = nil // clear to allow GC + } + n.items = n.items[:0] + for i := range n.children { + n.children[i] = nil // clear to allow GC + } + n.children = n.children[:0] + n.t = nil // clear to allow GC + t.freelist.freeNode(n) +} + +// ReplaceOrInsert adds the given item to the tree. If an item in the tree +// already equals the given one, it is removed from the tree and returned. +// Otherwise, nil is returned. +// +// nil cannot be added to the tree (will panic). +func (t *BTree) ReplaceOrInsert(item Item) Item { + if item == nil { + panic("nil item being added to BTree") + } + if t.root == nil { + t.root = t.newNode() + t.root.items = append(t.root.items, item) + t.length++ + return nil + } else if len(t.root.items) >= t.maxItems() { + item2, second := t.root.split(t.maxItems() / 2) + oldroot := t.root + t.root = t.newNode() + t.root.items = append(t.root.items, item2) + t.root.children = append(t.root.children, oldroot, second) + } + out := t.root.insert(item, t.maxItems()) + if out == nil { + t.length++ + } + return out +} + +// Delete removes an item equal to the passed in item from the tree, returning +// it. If no such item exists, returns nil. +func (t *BTree) Delete(item Item) Item { + return t.deleteItem(item, removeItem) +} + +// DeleteMin removes the smallest item in the tree and returns it. +// If no such item exists, returns nil. +func (t *BTree) DeleteMin() Item { + return t.deleteItem(nil, removeMin) +} + +// DeleteMax removes the largest item in the tree and returns it. +// If no such item exists, returns nil. +func (t *BTree) DeleteMax() Item { + return t.deleteItem(nil, removeMax) +} + +func (t *BTree) deleteItem(item Item, typ toRemove) Item { + if t.root == nil || len(t.root.items) == 0 { + return nil + } + out := t.root.remove(item, t.minItems(), typ) + if len(t.root.items) == 0 && len(t.root.children) > 0 { + oldroot := t.root + t.root = t.root.children[0] + t.freeNode(oldroot) + } + if out != nil { + t.length-- + } + return out +} + +// AscendRange calls the iterator for every value in the tree within the range +// [greaterOrEqual, lessThan), until iterator returns false. +func (t *BTree) AscendRange(greaterOrEqual, lessThan Item, iterator ItemIterator) { + if t.root == nil { + return + } + t.root.iterate( + func(a Item) bool { return !a.Less(greaterOrEqual) }, + func(a Item) bool { return a.Less(lessThan) }, + iterator) +} + +// AscendLessThan calls the iterator for every value in the tree within the range +// [first, pivot), until iterator returns false. +func (t *BTree) AscendLessThan(pivot Item, iterator ItemIterator) { + if t.root == nil { + return + } + t.root.iterate( + func(a Item) bool { return true }, + func(a Item) bool { return a.Less(pivot) }, + iterator) +} + +// AscendGreaterOrEqual calls the iterator for every value in the tree within +// the range [pivot, last], until iterator returns false. +func (t *BTree) AscendGreaterOrEqual(pivot Item, iterator ItemIterator) { + if t.root == nil { + return + } + t.root.iterate( + func(a Item) bool { return !a.Less(pivot) }, + func(a Item) bool { return true }, + iterator) +} + +// Ascend calls the iterator for every value in the tree within the range +// [first, last], until iterator returns false. +func (t *BTree) Ascend(iterator ItemIterator) { + if t.root == nil { + return + } + t.root.iterate( + func(a Item) bool { return true }, + func(a Item) bool { return true }, + iterator) +} + +// Get looks for the key item in the tree, returning it. It returns nil if +// unable to find that item. +func (t *BTree) Get(key Item) Item { + if t.root == nil { + return nil + } + return t.root.get(key) +} + +// Min returns the smallest item in the tree, or nil if the tree is empty. +func (t *BTree) Min() Item { + return min(t.root) +} + +// Max returns the largest item in the tree, or nil if the tree is empty. +func (t *BTree) Max() Item { + return max(t.root) +} + +// Has returns true if the given key is in the tree. +func (t *BTree) Has(key Item) bool { + return t.Get(key) != nil +} + +// Len returns the number of items currently in the tree. +func (t *BTree) Len() int { + return t.length +} + +// Int implements the Item interface for integers. +type Int int + +// Less returns true if int(a) < int(b). +func (a Int) Less(b Item) bool { + return a < b.(Int) +} diff --git a/vendor/github.com/google/btree/btree_mem.go b/vendor/github.com/google/btree/btree_mem.go new file mode 100644 index 0000000000..cb95b7fa1b --- /dev/null +++ b/vendor/github.com/google/btree/btree_mem.go @@ -0,0 +1,76 @@ +// 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. + +// +build ignore + +// This binary compares memory usage between btree and gollrb. +package main + +import ( + "flag" + "fmt" + "math/rand" + "runtime" + "time" + + "github.com/google/btree" + "github.com/petar/GoLLRB/llrb" +) + +var ( + size = flag.Int("size", 1000000, "size of the tree to build") + degree = flag.Int("degree", 8, "degree of btree") + gollrb = flag.Bool("llrb", false, "use llrb instead of btree") +) + +func main() { + flag.Parse() + vals := rand.Perm(*size) + var t, v interface{} + v = vals + var stats runtime.MemStats + for i := 0; i < 10; i++ { + runtime.GC() + } + fmt.Println("-------- BEFORE ----------") + runtime.ReadMemStats(&stats) + fmt.Printf("%+v\n", stats) + start := time.Now() + if *gollrb { + tr := llrb.New() + for _, v := range vals { + tr.ReplaceOrInsert(llrb.Int(v)) + } + t = tr // keep it around + } else { + tr := btree.New(*degree) + for _, v := range vals { + tr.ReplaceOrInsert(btree.Int(v)) + } + t = tr // keep it around + } + fmt.Printf("%v inserts in %v\n", *size, time.Since(start)) + fmt.Println("-------- AFTER ----------") + runtime.ReadMemStats(&stats) + fmt.Printf("%+v\n", stats) + for i := 0; i < 10; i++ { + runtime.GC() + } + fmt.Println("-------- AFTER GC ----------") + runtime.ReadMemStats(&stats) + fmt.Printf("%+v\n", stats) + if t == v { + fmt.Println("to make sure vals and tree aren't GC'd") + } +} diff --git a/vendor/github.com/google/btree/btree_test.go b/vendor/github.com/google/btree/btree_test.go new file mode 100644 index 0000000000..0a2fdde112 --- /dev/null +++ b/vendor/github.com/google/btree/btree_test.go @@ -0,0 +1,309 @@ +// 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. + +package btree + +import ( + "flag" + "fmt" + "math/rand" + "reflect" + "testing" + "time" +) + +func init() { + seed := time.Now().Unix() + fmt.Println(seed) + rand.Seed(seed) +} + +// perm returns a random permutation of n Int items in the range [0, n). +func perm(n int) (out []Item) { + for _, v := range rand.Perm(n) { + out = append(out, Int(v)) + } + return +} + +// rang returns an ordered list of Int items in the range [0, n). +func rang(n int) (out []Item) { + for i := 0; i < n; i++ { + out = append(out, Int(i)) + } + return +} + +// all extracts all items from a tree in order as a slice. +func all(t *BTree) (out []Item) { + t.Ascend(func(a Item) bool { + out = append(out, a) + return true + }) + return +} + +var btreeDegree = flag.Int("degree", 32, "B-Tree degree") + +func TestBTree(t *testing.T) { + tr := New(*btreeDegree) + const treeSize = 10000 + for i := 0; i < 10; i++ { + if min := tr.Min(); min != nil { + t.Fatalf("empty min, got %+v", min) + } + if max := tr.Max(); max != nil { + t.Fatalf("empty max, got %+v", max) + } + for _, item := range perm(treeSize) { + if x := tr.ReplaceOrInsert(item); x != nil { + t.Fatal("insert found item", item) + } + } + for _, item := range perm(treeSize) { + if x := tr.ReplaceOrInsert(item); x == nil { + t.Fatal("insert didn't find item", item) + } + } + if min, want := tr.Min(), Item(Int(0)); min != want { + t.Fatalf("min: want %+v, got %+v", want, min) + } + if max, want := tr.Max(), Item(Int(treeSize-1)); max != want { + t.Fatalf("max: want %+v, got %+v", want, max) + } + got := all(tr) + want := rang(treeSize) + if !reflect.DeepEqual(got, want) { + t.Fatalf("mismatch:\n got: %v\nwant: %v", got, want) + } + for _, item := range perm(treeSize) { + if x := tr.Delete(item); x == nil { + t.Fatalf("didn't find %v", item) + } + } + if got = all(tr); len(got) > 0 { + t.Fatalf("some left!: %v", got) + } + } +} + +func ExampleBTree() { + tr := New(*btreeDegree) + for i := Int(0); i < 10; i++ { + tr.ReplaceOrInsert(i) + } + fmt.Println("len: ", tr.Len()) + fmt.Println("get3: ", tr.Get(Int(3))) + fmt.Println("get100: ", tr.Get(Int(100))) + fmt.Println("del4: ", tr.Delete(Int(4))) + fmt.Println("del100: ", tr.Delete(Int(100))) + fmt.Println("replace5: ", tr.ReplaceOrInsert(Int(5))) + fmt.Println("replace100:", tr.ReplaceOrInsert(Int(100))) + fmt.Println("min: ", tr.Min()) + fmt.Println("delmin: ", tr.DeleteMin()) + fmt.Println("max: ", tr.Max()) + fmt.Println("delmax: ", tr.DeleteMax()) + fmt.Println("len: ", tr.Len()) + // Output: + // len: 10 + // get3: 3 + // get100: + // del4: 4 + // del100: + // replace5: 5 + // replace100: + // min: 0 + // delmin: 0 + // max: 100 + // delmax: 100 + // len: 8 +} + +func TestDeleteMin(t *testing.T) { + tr := New(3) + for _, v := range perm(100) { + tr.ReplaceOrInsert(v) + } + var got []Item + for v := tr.DeleteMin(); v != nil; v = tr.DeleteMin() { + got = append(got, v) + } + if want := rang(100); !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } +} + +func TestDeleteMax(t *testing.T) { + tr := New(3) + for _, v := range perm(100) { + tr.ReplaceOrInsert(v) + } + var got []Item + for v := tr.DeleteMax(); v != nil; v = tr.DeleteMax() { + got = append(got, v) + } + // Reverse our list. + for i := 0; i < len(got)/2; i++ { + got[i], got[len(got)-i-1] = got[len(got)-i-1], got[i] + } + if want := rang(100); !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } +} + +func TestAscendRange(t *testing.T) { + tr := New(2) + for _, v := range perm(100) { + tr.ReplaceOrInsert(v) + } + var got []Item + tr.AscendRange(Int(40), Int(60), func(a Item) bool { + got = append(got, a) + return true + }) + if want := rang(100)[40:60]; !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } + got = got[:0] + tr.AscendRange(Int(40), Int(60), func(a Item) bool { + if a.(Int) > 50 { + return false + } + got = append(got, a) + return true + }) + if want := rang(100)[40:51]; !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } +} + +func TestAscendLessThan(t *testing.T) { + tr := New(*btreeDegree) + for _, v := range perm(100) { + tr.ReplaceOrInsert(v) + } + var got []Item + tr.AscendLessThan(Int(60), func(a Item) bool { + got = append(got, a) + return true + }) + if want := rang(100)[:60]; !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } + got = got[:0] + tr.AscendLessThan(Int(60), func(a Item) bool { + if a.(Int) > 50 { + return false + } + got = append(got, a) + return true + }) + if want := rang(100)[:51]; !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } +} + +func TestAscendGreaterOrEqual(t *testing.T) { + tr := New(*btreeDegree) + for _, v := range perm(100) { + tr.ReplaceOrInsert(v) + } + var got []Item + tr.AscendGreaterOrEqual(Int(40), func(a Item) bool { + got = append(got, a) + return true + }) + if want := rang(100)[40:]; !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } + got = got[:0] + tr.AscendGreaterOrEqual(Int(40), func(a Item) bool { + if a.(Int) > 50 { + return false + } + got = append(got, a) + return true + }) + if want := rang(100)[40:51]; !reflect.DeepEqual(got, want) { + t.Fatalf("ascendrange:\n got: %v\nwant: %v", got, want) + } +} + +const benchmarkTreeSize = 10000 + +func BenchmarkInsert(b *testing.B) { + b.StopTimer() + insertP := perm(benchmarkTreeSize) + b.StartTimer() + i := 0 + for i < b.N { + tr := New(*btreeDegree) + for _, item := range insertP { + tr.ReplaceOrInsert(item) + i++ + if i >= b.N { + return + } + } + } +} + +func BenchmarkDelete(b *testing.B) { + b.StopTimer() + insertP := perm(benchmarkTreeSize) + removeP := perm(benchmarkTreeSize) + b.StartTimer() + i := 0 + for i < b.N { + b.StopTimer() + tr := New(*btreeDegree) + for _, v := range insertP { + tr.ReplaceOrInsert(v) + } + b.StartTimer() + for _, item := range removeP { + tr.Delete(item) + i++ + if i >= b.N { + return + } + } + if tr.Len() > 0 { + panic(tr.Len()) + } + } +} + +func BenchmarkGet(b *testing.B) { + b.StopTimer() + insertP := perm(benchmarkTreeSize) + removeP := perm(benchmarkTreeSize) + b.StartTimer() + i := 0 + for i < b.N { + b.StopTimer() + tr := New(*btreeDegree) + for _, v := range insertP { + tr.ReplaceOrInsert(v) + } + b.StartTimer() + for _, item := range removeP { + tr.Get(item) + i++ + if i >= b.N { + return + } + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/.gitignore b/vendor/github.com/googleapis/gnostic/.gitignore new file mode 100644 index 0000000000..9db23e56ab --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/.gitignore @@ -0,0 +1,13 @@ +# Eclipse +.checkstyle +.project +.settings +# Swift +.build +Packages +# vi +*.swp +# vscode +.vscode +.DS_Store +*~ diff --git a/vendor/github.com/googleapis/gnostic/.travis-install.sh b/vendor/github.com/googleapis/gnostic/.travis-install.sh new file mode 100755 index 0000000000..6ae5332c51 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/.travis-install.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +# +# Install dependencies that aren't available as Ubuntu packages. +# +# Everything goes into $HOME/local. +# +# Scripts should add +# - $HOME/local/bin to PATH +# - $HOME/local/lib to LD_LIBRARY_PATH +# + +cd +mkdir -p local + +# Install swift +SWIFT_BRANCH=swift-3.0.2-release +SWIFT_VERSION=swift-3.0.2-RELEASE +SWIFT_PLATFORM=ubuntu14.04 +SWIFT_URL=https://swift.org/builds/$SWIFT_BRANCH/$(echo "$SWIFT_PLATFORM" | tr -d .)/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM.tar.gz + +echo $SWIFT_URL + +curl -fSsL $SWIFT_URL -o swift.tar.gz +tar -xzf swift.tar.gz --strip-components=2 --directory=local + +# Install protoc +PROTOC_URL=https://github.com/google/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-linux-x86_64.zip + +echo $PROTOC_URL + +curl -fSsL $PROTOC_URL -o protoc.zip +unzip protoc.zip -d local + +# Verify installation +find local diff --git a/vendor/github.com/googleapis/gnostic/.travis.yml b/vendor/github.com/googleapis/gnostic/.travis.yml new file mode 100644 index 0000000000..35c7bfe347 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/.travis.yml @@ -0,0 +1,43 @@ +# Travis CI build file for OpenAPI Compiler, including Go and Swift plugins + +# Use Ubuntu 14.04 +dist: trusty + +sudo: false + +language: go + +addons: + apt: + packages: + - clang-3.8 + - lldb-3.8 + - libicu-dev + - libtool + - libcurl4-openssl-dev + - libbsd-dev + - build-essential + - libssl-dev + - uuid-dev + - curl + - unzip + +install: + - ./.travis-install.sh + - export PATH=.:$HOME/local/bin:$PATH + - make + +script: + - go test . -v + - pushd plugins/gnostic-go-generator/examples/v2.0/bookstore + - make test + - popd + - export PATH=.:$HOME/local/bin:$PATH + - export LD_LIBRARY_PATH=$HOME/local/lib + - pushd plugins/gnostic-swift-generator + - make + - cd examples/bookstore + - make + - .build/debug/Server & + - make test + diff --git a/vendor/github.com/googleapis/gnostic/COMPILE-PROTOS.sh b/vendor/github.com/googleapis/gnostic/COMPILE-PROTOS.sh new file mode 100755 index 0000000000..e771c6e17b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/COMPILE-PROTOS.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright 2016 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. +# + +go get github.com/golang/protobuf/protoc-gen-go + +protoc \ +--go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. \ +OpenAPIv2/OpenAPIv2.proto + +protoc \ +--go_out=:. \ +plugins/plugin.proto + +protoc \ +--go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. \ +OpenAPIv3/OpenAPIv3.proto + diff --git a/vendor/github.com/googleapis/gnostic/CONTRIBUTING.md b/vendor/github.com/googleapis/gnostic/CONTRIBUTING.md new file mode 100644 index 0000000000..6736efd943 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# How to become a contributor and submit your own code + +## Contributor License Agreements + +We'd love to accept your sample apps and patches! Before we can take them, we +have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement +(CLA). + + * 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] + (https://developers.google.com/open-source/cla/individual). + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA] + (https://developers.google.com/open-source/cla/corporate). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The repo owner will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Ensure that your code adheres to the existing style in the sample to which + you are contributing. Refer to the + [Google Cloud Platform Samples Style Guide] + (https://github.com/GoogleCloudPlatform/Template/wiki/style.html) for the + recommended coding standards for this organization. +1. Ensure that your code has an appropriate set of unit tests which all pass. +1. Submit a pull request. diff --git a/vendor/github.com/googleapis/gnostic/LICENSE b/vendor/github.com/googleapis/gnostic/LICENSE new file mode 100644 index 0000000000..6b0b1270ff --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/LICENSE @@ -0,0 +1,203 @@ + + 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/googleapis/gnostic/Makefile b/vendor/github.com/googleapis/gnostic/Makefile new file mode 100644 index 0000000000..13726ee4cd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/Makefile @@ -0,0 +1,15 @@ + +build: + go get + go install + cd generate-gnostic; go get; go install + cd apps/report; go get; go install + cd apps/petstore-builder; go get; go install + cd plugins/gnostic-go-sample; go get; go install + cd plugins/gnostic-go-generator/encode-templates; go get; go install + cd plugins/gnostic-go-generator; go get; go install + rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server + ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client + ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server + cd extensions/sample; make + diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go new file mode 100644 index 0000000000..0e32451a32 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go @@ -0,0 +1,8728 @@ +// Copyright 2017 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +package openapi_v2 + +import ( + "fmt" + "github.com/googleapis/gnostic/compiler" + "gopkg.in/yaml.v2" + "regexp" + "strings" +) + +// Version returns the package name (and OpenAPI version). +func Version() string { + return "openapi_v2" +} + +// NewAdditionalPropertiesItem creates an object of type AdditionalPropertiesItem if possible, returning an error if not. +func NewAdditionalPropertiesItem(in interface{}, context *compiler.Context) (*AdditionalPropertiesItem, error) { + errors := make([]error, 0) + x := &AdditionalPropertiesItem{} + matched := false + // Schema schema = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSchema(m, compiler.NewContext("schema", context)) + if matchingError == nil { + x.Oneof = &AdditionalPropertiesItem_Schema{Schema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // bool boolean = 2; + boolValue, ok := in.(bool) + if ok { + x.Oneof = &AdditionalPropertiesItem_Boolean{Boolean: boolValue} + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewAny creates an object of type Any if possible, returning an error if not. +func NewAny(in interface{}, context *compiler.Context) (*Any, error) { + errors := make([]error, 0) + x := &Any{} + bytes, _ := yaml.Marshal(in) + x.Yaml = string(bytes) + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewApiKeySecurity creates an object of type ApiKeySecurity if possible, returning an error if not. +func NewApiKeySecurity(in interface{}, context *compiler.Context) (*ApiKeySecurity, error) { + errors := make([]error, 0) + x := &ApiKeySecurity{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"in", "name", "type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "in", "name", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [apiKey] + if ok && !compiler.StringArrayContainsValue([]string{"apiKey"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 2; + v2 := compiler.MapValueForKey(m, "name") + if v2 != nil { + x.Name, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 3; + v3 := compiler.MapValueForKey(m, "in") + if v3 != nil { + x.In, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [header query] + if ok && !compiler.StringArrayContainsValue([]string{"header", "query"}, x.In) { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 4; + v4 := compiler.MapValueForKey(m, "description") + if v4 != nil { + x.Description, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 5; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewBasicAuthenticationSecurity creates an object of type BasicAuthenticationSecurity if possible, returning an error if not. +func NewBasicAuthenticationSecurity(in interface{}, context *compiler.Context) (*BasicAuthenticationSecurity, error) { + errors := make([]error, 0) + x := &BasicAuthenticationSecurity{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [basic] + if ok && !compiler.StringArrayContainsValue([]string{"basic"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 3; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewBodyParameter creates an object of type BodyParameter if possible, returning an error if not. +func NewBodyParameter(in interface{}, context *compiler.Context) (*BodyParameter, error) { + errors := make([]error, 0) + x := &BodyParameter{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"in", "name", "schema"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "in", "name", "required", "schema"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 2; + v2 := compiler.MapValueForKey(m, "name") + if v2 != nil { + x.Name, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 3; + v3 := compiler.MapValueForKey(m, "in") + if v3 != nil { + x.In, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [body] + if ok && !compiler.StringArrayContainsValue([]string{"body"}, x.In) { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool required = 4; + v4 := compiler.MapValueForKey(m, "required") + if v4 != nil { + x.Required, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Schema schema = 5; + v5 := compiler.MapValueForKey(m, "schema") + if v5 != nil { + var err error + x.Schema, err = NewSchema(v5, compiler.NewContext("schema", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 6; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewContact creates an object of type Contact if possible, returning an error if not. +func NewContact(in interface{}, context *compiler.Context) (*Contact, error) { + errors := make([]error, 0) + x := &Contact{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"email", "name", "url"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string email = 3; + v3 := compiler.MapValueForKey(m, "email") + if v3 != nil { + x.Email, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for email: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 4; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDefault creates an object of type Default if possible, returning an error if not. +func NewDefault(in interface{}, context *compiler.Context) (*Default, error) { + errors := make([]error, 0) + x := &Default{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDefinitions creates an object of type Definitions if possible, returning an error if not. +func NewDefinitions(in interface{}, context *compiler.Context) (*Definitions, error) { + errors := make([]error, 0) + x := &Definitions{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSchema additional_properties = 1; + // MAP: Schema + x.AdditionalProperties = make([]*NamedSchema, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedSchema{} + pair.Name = k + var err error + pair.Value, err = NewSchema(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDocument creates an object of type Document if possible, returning an error if not. +func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { + errors := make([]error, 0) + x := &Document{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"info", "paths", "swagger"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"basePath", "consumes", "definitions", "externalDocs", "host", "info", "parameters", "paths", "produces", "responses", "schemes", "security", "securityDefinitions", "swagger", "tags"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string swagger = 1; + v1 := compiler.MapValueForKey(m, "swagger") + if v1 != nil { + x.Swagger, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for swagger: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [2.0] + if ok && !compiler.StringArrayContainsValue([]string{"2.0"}, x.Swagger) { + message := fmt.Sprintf("has unexpected value for swagger: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Info info = 2; + v2 := compiler.MapValueForKey(m, "info") + if v2 != nil { + var err error + x.Info, err = NewInfo(v2, compiler.NewContext("info", context)) + if err != nil { + errors = append(errors, err) + } + } + // string host = 3; + v3 := compiler.MapValueForKey(m, "host") + if v3 != nil { + x.Host, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for host: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string base_path = 4; + v4 := compiler.MapValueForKey(m, "basePath") + if v4 != nil { + x.BasePath, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for basePath: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string schemes = 5; + v5 := compiler.MapValueForKey(m, "schemes") + if v5 != nil { + v, ok := v5.([]interface{}) + if ok { + x.Schemes = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for schemes: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [http https ws wss] + if ok && !compiler.StringArrayContainsValues([]string{"http", "https", "ws", "wss"}, x.Schemes) { + message := fmt.Sprintf("has unexpected value for schemes: %+v", v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string consumes = 6; + v6 := compiler.MapValueForKey(m, "consumes") + if v6 != nil { + v, ok := v6.([]interface{}) + if ok { + x.Consumes = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for consumes: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string produces = 7; + v7 := compiler.MapValueForKey(m, "produces") + if v7 != nil { + v, ok := v7.([]interface{}) + if ok { + x.Produces = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for produces: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Paths paths = 8; + v8 := compiler.MapValueForKey(m, "paths") + if v8 != nil { + var err error + x.Paths, err = NewPaths(v8, compiler.NewContext("paths", context)) + if err != nil { + errors = append(errors, err) + } + } + // Definitions definitions = 9; + v9 := compiler.MapValueForKey(m, "definitions") + if v9 != nil { + var err error + x.Definitions, err = NewDefinitions(v9, compiler.NewContext("definitions", context)) + if err != nil { + errors = append(errors, err) + } + } + // ParameterDefinitions parameters = 10; + v10 := compiler.MapValueForKey(m, "parameters") + if v10 != nil { + var err error + x.Parameters, err = NewParameterDefinitions(v10, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + } + // ResponseDefinitions responses = 11; + v11 := compiler.MapValueForKey(m, "responses") + if v11 != nil { + var err error + x.Responses, err = NewResponseDefinitions(v11, compiler.NewContext("responses", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated SecurityRequirement security = 12; + v12 := compiler.MapValueForKey(m, "security") + if v12 != nil { + // repeated SecurityRequirement + x.Security = make([]*SecurityRequirement, 0) + a, ok := v12.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSecurityRequirement(item, compiler.NewContext("security", context)) + if err != nil { + errors = append(errors, err) + } + x.Security = append(x.Security, y) + } + } + } + // SecurityDefinitions security_definitions = 13; + v13 := compiler.MapValueForKey(m, "securityDefinitions") + if v13 != nil { + var err error + x.SecurityDefinitions, err = NewSecurityDefinitions(v13, compiler.NewContext("securityDefinitions", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated Tag tags = 14; + v14 := compiler.MapValueForKey(m, "tags") + if v14 != nil { + // repeated Tag + x.Tags = make([]*Tag, 0) + a, ok := v14.([]interface{}) + if ok { + for _, item := range a { + y, err := NewTag(item, compiler.NewContext("tags", context)) + if err != nil { + errors = append(errors, err) + } + x.Tags = append(x.Tags, y) + } + } + } + // ExternalDocs external_docs = 15; + v15 := compiler.MapValueForKey(m, "externalDocs") + if v15 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v15, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 16; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExamples creates an object of type Examples if possible, returning an error if not. +func NewExamples(in interface{}, context *compiler.Context) (*Examples, error) { + errors := make([]error, 0) + x := &Examples{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExternalDocs creates an object of type ExternalDocs if possible, returning an error if not. +func NewExternalDocs(in interface{}, context *compiler.Context) (*ExternalDocs, error) { + errors := make([]error, 0) + x := &ExternalDocs{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"url"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "url"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 3; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewFileSchema creates an object of type FileSchema if possible, returning an error if not. +func NewFileSchema(in interface{}, context *compiler.Context) (*FileSchema, error) { + errors := make([]error, 0) + x := &FileSchema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"default", "description", "example", "externalDocs", "format", "readOnly", "required", "title", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string format = 1; + v1 := compiler.MapValueForKey(m, "format") + if v1 != nil { + x.Format, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string title = 2; + v2 := compiler.MapValueForKey(m, "title") + if v2 != nil { + x.Title, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 4; + v4 := compiler.MapValueForKey(m, "default") + if v4 != nil { + var err error + x.Default, err = NewAny(v4, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated string required = 5; + v5 := compiler.MapValueForKey(m, "required") + if v5 != nil { + v, ok := v5.([]interface{}) + if ok { + x.Required = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string type = 6; + v6 := compiler.MapValueForKey(m, "type") + if v6 != nil { + x.Type, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [file] + if ok && !compiler.StringArrayContainsValue([]string{"file"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool read_only = 7; + v7 := compiler.MapValueForKey(m, "readOnly") + if v7 != nil { + x.ReadOnly, ok = v7.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for readOnly: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 8; + v8 := compiler.MapValueForKey(m, "externalDocs") + if v8 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v8, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 9; + v9 := compiler.MapValueForKey(m, "example") + if v9 != nil { + var err error + x.Example, err = NewAny(v9, compiler.NewContext("example", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 10; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewFormDataParameterSubSchema creates an object of type FormDataParameterSubSchema if possible, returning an error if not. +func NewFormDataParameterSubSchema(in interface{}, context *compiler.Context) (*FormDataParameterSubSchema, error) { + errors := make([]error, 0) + x := &FormDataParameterSubSchema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"allowEmptyValue", "collectionFormat", "default", "description", "enum", "exclusiveMaximum", "exclusiveMinimum", "format", "in", "items", "maxItems", "maxLength", "maximum", "minItems", "minLength", "minimum", "multipleOf", "name", "pattern", "required", "type", "uniqueItems"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // bool required = 1; + v1 := compiler.MapValueForKey(m, "required") + if v1 != nil { + x.Required, ok = v1.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 2; + v2 := compiler.MapValueForKey(m, "in") + if v2 != nil { + x.In, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [formData] + if ok && !compiler.StringArrayContainsValue([]string{"formData"}, x.In) { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 4; + v4 := compiler.MapValueForKey(m, "name") + if v4 != nil { + x.Name, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_empty_value = 5; + v5 := compiler.MapValueForKey(m, "allowEmptyValue") + if v5 != nil { + x.AllowEmptyValue, ok = v5.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string type = 6; + v6 := compiler.MapValueForKey(m, "type") + if v6 != nil { + x.Type, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [string number boolean integer array file] + if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array", "file"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 7; + v7 := compiler.MapValueForKey(m, "format") + if v7 != nil { + x.Format, ok = v7.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PrimitivesItems items = 8; + v8 := compiler.MapValueForKey(m, "items") + if v8 != nil { + var err error + x.Items, err = NewPrimitivesItems(v8, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // string collection_format = 9; + v9 := compiler.MapValueForKey(m, "collectionFormat") + if v9 != nil { + x.CollectionFormat, ok = v9.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [csv ssv tsv pipes multi] + if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes", "multi"}, x.CollectionFormat) { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 10; + v10 := compiler.MapValueForKey(m, "default") + if v10 != nil { + var err error + x.Default, err = NewAny(v10, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float maximum = 11; + v11 := compiler.MapValueForKey(m, "maximum") + if v11 != nil { + switch v11 := v11.(type) { + case float64: + x.Maximum = v11 + case float32: + x.Maximum = float64(v11) + case uint64: + x.Maximum = float64(v11) + case uint32: + x.Maximum = float64(v11) + case int64: + x.Maximum = float64(v11) + case int32: + x.Maximum = float64(v11) + case int: + x.Maximum = float64(v11) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 12; + v12 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v12 != nil { + x.ExclusiveMaximum, ok = v12.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 13; + v13 := compiler.MapValueForKey(m, "minimum") + if v13 != nil { + switch v13 := v13.(type) { + case float64: + x.Minimum = v13 + case float32: + x.Minimum = float64(v13) + case uint64: + x.Minimum = float64(v13) + case uint32: + x.Minimum = float64(v13) + case int64: + x.Minimum = float64(v13) + case int32: + x.Minimum = float64(v13) + case int: + x.Minimum = float64(v13) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 14; + v14 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v14 != nil { + x.ExclusiveMinimum, ok = v14.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 15; + v15 := compiler.MapValueForKey(m, "maxLength") + if v15 != nil { + t, ok := v15.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 16; + v16 := compiler.MapValueForKey(m, "minLength") + if v16 != nil { + t, ok := v16.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v16, v16) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 17; + v17 := compiler.MapValueForKey(m, "pattern") + if v17 != nil { + x.Pattern, ok = v17.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 18; + v18 := compiler.MapValueForKey(m, "maxItems") + if v18 != nil { + t, ok := v18.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 19; + v19 := compiler.MapValueForKey(m, "minItems") + if v19 != nil { + t, ok := v19.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v19, v19) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 20; + v20 := compiler.MapValueForKey(m, "uniqueItems") + if v20 != nil { + x.UniqueItems, ok = v20.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v20, v20) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 21; + v21 := compiler.MapValueForKey(m, "enum") + if v21 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v21.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // float multiple_of = 22; + v22 := compiler.MapValueForKey(m, "multipleOf") + if v22 != nil { + switch v22 := v22.(type) { + case float64: + x.MultipleOf = v22 + case float32: + x.MultipleOf = float64(v22) + case uint64: + x.MultipleOf = float64(v22) + case uint32: + x.MultipleOf = float64(v22) + case int64: + x.MultipleOf = float64(v22) + case int32: + x.MultipleOf = float64(v22) + case int: + x.MultipleOf = float64(v22) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v22, v22) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 23; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeader creates an object of type Header if possible, returning an error if not. +func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { + errors := make([]error, 0) + x := &Header{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"collectionFormat", "default", "description", "enum", "exclusiveMaximum", "exclusiveMinimum", "format", "items", "maxItems", "maxLength", "maximum", "minItems", "minLength", "minimum", "multipleOf", "pattern", "type", "uniqueItems"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [string number integer boolean array] + if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "integer", "boolean", "array"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 2; + v2 := compiler.MapValueForKey(m, "format") + if v2 != nil { + x.Format, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PrimitivesItems items = 3; + v3 := compiler.MapValueForKey(m, "items") + if v3 != nil { + var err error + x.Items, err = NewPrimitivesItems(v3, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // string collection_format = 4; + v4 := compiler.MapValueForKey(m, "collectionFormat") + if v4 != nil { + x.CollectionFormat, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [csv ssv tsv pipes] + if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 5; + v5 := compiler.MapValueForKey(m, "default") + if v5 != nil { + var err error + x.Default, err = NewAny(v5, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float maximum = 6; + v6 := compiler.MapValueForKey(m, "maximum") + if v6 != nil { + switch v6 := v6.(type) { + case float64: + x.Maximum = v6 + case float32: + x.Maximum = float64(v6) + case uint64: + x.Maximum = float64(v6) + case uint32: + x.Maximum = float64(v6) + case int64: + x.Maximum = float64(v6) + case int32: + x.Maximum = float64(v6) + case int: + x.Maximum = float64(v6) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 7; + v7 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v7 != nil { + x.ExclusiveMaximum, ok = v7.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 8; + v8 := compiler.MapValueForKey(m, "minimum") + if v8 != nil { + switch v8 := v8.(type) { + case float64: + x.Minimum = v8 + case float32: + x.Minimum = float64(v8) + case uint64: + x.Minimum = float64(v8) + case uint32: + x.Minimum = float64(v8) + case int64: + x.Minimum = float64(v8) + case int32: + x.Minimum = float64(v8) + case int: + x.Minimum = float64(v8) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 9; + v9 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v9 != nil { + x.ExclusiveMinimum, ok = v9.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 10; + v10 := compiler.MapValueForKey(m, "maxLength") + if v10 != nil { + t, ok := v10.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 11; + v11 := compiler.MapValueForKey(m, "minLength") + if v11 != nil { + t, ok := v11.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 12; + v12 := compiler.MapValueForKey(m, "pattern") + if v12 != nil { + x.Pattern, ok = v12.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 13; + v13 := compiler.MapValueForKey(m, "maxItems") + if v13 != nil { + t, ok := v13.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 14; + v14 := compiler.MapValueForKey(m, "minItems") + if v14 != nil { + t, ok := v14.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 15; + v15 := compiler.MapValueForKey(m, "uniqueItems") + if v15 != nil { + x.UniqueItems, ok = v15.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 16; + v16 := compiler.MapValueForKey(m, "enum") + if v16 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v16.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // float multiple_of = 17; + v17 := compiler.MapValueForKey(m, "multipleOf") + if v17 != nil { + switch v17 := v17.(type) { + case float64: + x.MultipleOf = v17 + case float32: + x.MultipleOf = float64(v17) + case uint64: + x.MultipleOf = float64(v17) + case uint32: + x.MultipleOf = float64(v17) + case int64: + x.MultipleOf = float64(v17) + case int32: + x.MultipleOf = float64(v17) + case int: + x.MultipleOf = float64(v17) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 18; + v18 := compiler.MapValueForKey(m, "description") + if v18 != nil { + x.Description, ok = v18.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 19; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeaderParameterSubSchema creates an object of type HeaderParameterSubSchema if possible, returning an error if not. +func NewHeaderParameterSubSchema(in interface{}, context *compiler.Context) (*HeaderParameterSubSchema, error) { + errors := make([]error, 0) + x := &HeaderParameterSubSchema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"collectionFormat", "default", "description", "enum", "exclusiveMaximum", "exclusiveMinimum", "format", "in", "items", "maxItems", "maxLength", "maximum", "minItems", "minLength", "minimum", "multipleOf", "name", "pattern", "required", "type", "uniqueItems"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // bool required = 1; + v1 := compiler.MapValueForKey(m, "required") + if v1 != nil { + x.Required, ok = v1.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 2; + v2 := compiler.MapValueForKey(m, "in") + if v2 != nil { + x.In, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [header] + if ok && !compiler.StringArrayContainsValue([]string{"header"}, x.In) { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 4; + v4 := compiler.MapValueForKey(m, "name") + if v4 != nil { + x.Name, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string type = 5; + v5 := compiler.MapValueForKey(m, "type") + if v5 != nil { + x.Type, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [string number boolean integer array] + if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 6; + v6 := compiler.MapValueForKey(m, "format") + if v6 != nil { + x.Format, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PrimitivesItems items = 7; + v7 := compiler.MapValueForKey(m, "items") + if v7 != nil { + var err error + x.Items, err = NewPrimitivesItems(v7, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // string collection_format = 8; + v8 := compiler.MapValueForKey(m, "collectionFormat") + if v8 != nil { + x.CollectionFormat, ok = v8.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [csv ssv tsv pipes] + if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 9; + v9 := compiler.MapValueForKey(m, "default") + if v9 != nil { + var err error + x.Default, err = NewAny(v9, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float maximum = 10; + v10 := compiler.MapValueForKey(m, "maximum") + if v10 != nil { + switch v10 := v10.(type) { + case float64: + x.Maximum = v10 + case float32: + x.Maximum = float64(v10) + case uint64: + x.Maximum = float64(v10) + case uint32: + x.Maximum = float64(v10) + case int64: + x.Maximum = float64(v10) + case int32: + x.Maximum = float64(v10) + case int: + x.Maximum = float64(v10) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 11; + v11 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v11 != nil { + x.ExclusiveMaximum, ok = v11.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 12; + v12 := compiler.MapValueForKey(m, "minimum") + if v12 != nil { + switch v12 := v12.(type) { + case float64: + x.Minimum = v12 + case float32: + x.Minimum = float64(v12) + case uint64: + x.Minimum = float64(v12) + case uint32: + x.Minimum = float64(v12) + case int64: + x.Minimum = float64(v12) + case int32: + x.Minimum = float64(v12) + case int: + x.Minimum = float64(v12) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 13; + v13 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v13 != nil { + x.ExclusiveMinimum, ok = v13.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 14; + v14 := compiler.MapValueForKey(m, "maxLength") + if v14 != nil { + t, ok := v14.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 15; + v15 := compiler.MapValueForKey(m, "minLength") + if v15 != nil { + t, ok := v15.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 16; + v16 := compiler.MapValueForKey(m, "pattern") + if v16 != nil { + x.Pattern, ok = v16.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v16, v16) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 17; + v17 := compiler.MapValueForKey(m, "maxItems") + if v17 != nil { + t, ok := v17.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 18; + v18 := compiler.MapValueForKey(m, "minItems") + if v18 != nil { + t, ok := v18.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 19; + v19 := compiler.MapValueForKey(m, "uniqueItems") + if v19 != nil { + x.UniqueItems, ok = v19.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v19, v19) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 20; + v20 := compiler.MapValueForKey(m, "enum") + if v20 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v20.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // float multiple_of = 21; + v21 := compiler.MapValueForKey(m, "multipleOf") + if v21 != nil { + switch v21 := v21.(type) { + case float64: + x.MultipleOf = v21 + case float32: + x.MultipleOf = float64(v21) + case uint64: + x.MultipleOf = float64(v21) + case uint32: + x.MultipleOf = float64(v21) + case int64: + x.MultipleOf = float64(v21) + case int32: + x.MultipleOf = float64(v21) + case int: + x.MultipleOf = float64(v21) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v21, v21) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 22; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeaders creates an object of type Headers if possible, returning an error if not. +func NewHeaders(in interface{}, context *compiler.Context) (*Headers, error) { + errors := make([]error, 0) + x := &Headers{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedHeader additional_properties = 1; + // MAP: Header + x.AdditionalProperties = make([]*NamedHeader, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedHeader{} + pair.Name = k + var err error + pair.Value, err = NewHeader(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewInfo creates an object of type Info if possible, returning an error if not. +func NewInfo(in interface{}, context *compiler.Context) (*Info, error) { + errors := make([]error, 0) + x := &Info{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"title", "version"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"contact", "description", "license", "termsOfService", "title", "version"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string title = 1; + v1 := compiler.MapValueForKey(m, "title") + if v1 != nil { + x.Title, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string version = 2; + v2 := compiler.MapValueForKey(m, "version") + if v2 != nil { + x.Version, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for version: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string terms_of_service = 4; + v4 := compiler.MapValueForKey(m, "termsOfService") + if v4 != nil { + x.TermsOfService, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for termsOfService: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Contact contact = 5; + v5 := compiler.MapValueForKey(m, "contact") + if v5 != nil { + var err error + x.Contact, err = NewContact(v5, compiler.NewContext("contact", context)) + if err != nil { + errors = append(errors, err) + } + } + // License license = 6; + v6 := compiler.MapValueForKey(m, "license") + if v6 != nil { + var err error + x.License, err = NewLicense(v6, compiler.NewContext("license", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 7; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewItemsItem creates an object of type ItemsItem if possible, returning an error if not. +func NewItemsItem(in interface{}, context *compiler.Context) (*ItemsItem, error) { + errors := make([]error, 0) + x := &ItemsItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value for item array: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + x.Schema = make([]*Schema, 0) + y, err := NewSchema(m, compiler.NewContext("", context)) + if err != nil { + return nil, err + } + x.Schema = append(x.Schema, y) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewJsonReference creates an object of type JsonReference if possible, returning an error if not. +func NewJsonReference(in interface{}, context *compiler.Context) (*JsonReference, error) { + errors := make([]error, 0) + x := &JsonReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"$ref"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"$ref", "description"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLicense creates an object of type License if possible, returning an error if not. +func NewLicense(in interface{}, context *compiler.Context) (*License, error) { + errors := make([]error, 0) + x := &License{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"name", "url"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 3; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedAny creates an object of type NamedAny if possible, returning an error if not. +func NewNamedAny(in interface{}, context *compiler.Context) (*NamedAny, error) { + errors := make([]error, 0) + x := &NamedAny{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewAny(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedHeader creates an object of type NamedHeader if possible, returning an error if not. +func NewNamedHeader(in interface{}, context *compiler.Context) (*NamedHeader, error) { + errors := make([]error, 0) + x := &NamedHeader{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Header value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewHeader(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedParameter creates an object of type NamedParameter if possible, returning an error if not. +func NewNamedParameter(in interface{}, context *compiler.Context) (*NamedParameter, error) { + errors := make([]error, 0) + x := &NamedParameter{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Parameter value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewParameter(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedPathItem creates an object of type NamedPathItem if possible, returning an error if not. +func NewNamedPathItem(in interface{}, context *compiler.Context) (*NamedPathItem, error) { + errors := make([]error, 0) + x := &NamedPathItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PathItem value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewPathItem(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedResponse creates an object of type NamedResponse if possible, returning an error if not. +func NewNamedResponse(in interface{}, context *compiler.Context) (*NamedResponse, error) { + errors := make([]error, 0) + x := &NamedResponse{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Response value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewResponse(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedResponseValue creates an object of type NamedResponseValue if possible, returning an error if not. +func NewNamedResponseValue(in interface{}, context *compiler.Context) (*NamedResponseValue, error) { + errors := make([]error, 0) + x := &NamedResponseValue{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ResponseValue value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewResponseValue(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedSchema creates an object of type NamedSchema if possible, returning an error if not. +func NewNamedSchema(in interface{}, context *compiler.Context) (*NamedSchema, error) { + errors := make([]error, 0) + x := &NamedSchema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Schema value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewSchema(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedSecurityDefinitionsItem creates an object of type NamedSecurityDefinitionsItem if possible, returning an error if not. +func NewNamedSecurityDefinitionsItem(in interface{}, context *compiler.Context) (*NamedSecurityDefinitionsItem, error) { + errors := make([]error, 0) + x := &NamedSecurityDefinitionsItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SecurityDefinitionsItem value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewSecurityDefinitionsItem(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedString creates an object of type NamedString if possible, returning an error if not. +func NewNamedString(in interface{}, context *compiler.Context) (*NamedString, error) { + errors := make([]error, 0) + x := &NamedString{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + x.Value, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for value: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedStringArray creates an object of type NamedStringArray if possible, returning an error if not. +func NewNamedStringArray(in interface{}, context *compiler.Context) (*NamedStringArray, error) { + errors := make([]error, 0) + x := &NamedStringArray{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // StringArray value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewStringArray(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNonBodyParameter creates an object of type NonBodyParameter if possible, returning an error if not. +func NewNonBodyParameter(in interface{}, context *compiler.Context) (*NonBodyParameter, error) { + errors := make([]error, 0) + x := &NonBodyParameter{} + matched := false + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"in", "name", "type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // HeaderParameterSubSchema header_parameter_sub_schema = 1; + { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewHeaderParameterSubSchema(m, compiler.NewContext("headerParameterSubSchema", context)) + if matchingError == nil { + x.Oneof = &NonBodyParameter_HeaderParameterSubSchema{HeaderParameterSubSchema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + // FormDataParameterSubSchema form_data_parameter_sub_schema = 2; + { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewFormDataParameterSubSchema(m, compiler.NewContext("formDataParameterSubSchema", context)) + if matchingError == nil { + x.Oneof = &NonBodyParameter_FormDataParameterSubSchema{FormDataParameterSubSchema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + // QueryParameterSubSchema query_parameter_sub_schema = 3; + { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewQueryParameterSubSchema(m, compiler.NewContext("queryParameterSubSchema", context)) + if matchingError == nil { + x.Oneof = &NonBodyParameter_QueryParameterSubSchema{QueryParameterSubSchema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + // PathParameterSubSchema path_parameter_sub_schema = 4; + { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewPathParameterSubSchema(m, compiler.NewContext("pathParameterSubSchema", context)) + if matchingError == nil { + x.Oneof = &NonBodyParameter_PathParameterSubSchema{PathParameterSubSchema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauth2AccessCodeSecurity creates an object of type Oauth2AccessCodeSecurity if possible, returning an error if not. +func NewOauth2AccessCodeSecurity(in interface{}, context *compiler.Context) (*Oauth2AccessCodeSecurity, error) { + errors := make([]error, 0) + x := &Oauth2AccessCodeSecurity{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"authorizationUrl", "flow", "tokenUrl", "type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"authorizationUrl", "description", "flow", "scopes", "tokenUrl", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [oauth2] + if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string flow = 2; + v2 := compiler.MapValueForKey(m, "flow") + if v2 != nil { + x.Flow, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [accessCode] + if ok && !compiler.StringArrayContainsValue([]string{"accessCode"}, x.Flow) { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Oauth2Scopes scopes = 3; + v3 := compiler.MapValueForKey(m, "scopes") + if v3 != nil { + var err error + x.Scopes, err = NewOauth2Scopes(v3, compiler.NewContext("scopes", context)) + if err != nil { + errors = append(errors, err) + } + } + // string authorization_url = 4; + v4 := compiler.MapValueForKey(m, "authorizationUrl") + if v4 != nil { + x.AuthorizationUrl, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for authorizationUrl: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string token_url = 5; + v5 := compiler.MapValueForKey(m, "tokenUrl") + if v5 != nil { + x.TokenUrl, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 6; + v6 := compiler.MapValueForKey(m, "description") + if v6 != nil { + x.Description, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 7; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauth2ApplicationSecurity creates an object of type Oauth2ApplicationSecurity if possible, returning an error if not. +func NewOauth2ApplicationSecurity(in interface{}, context *compiler.Context) (*Oauth2ApplicationSecurity, error) { + errors := make([]error, 0) + x := &Oauth2ApplicationSecurity{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"flow", "tokenUrl", "type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "flow", "scopes", "tokenUrl", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [oauth2] + if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string flow = 2; + v2 := compiler.MapValueForKey(m, "flow") + if v2 != nil { + x.Flow, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [application] + if ok && !compiler.StringArrayContainsValue([]string{"application"}, x.Flow) { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Oauth2Scopes scopes = 3; + v3 := compiler.MapValueForKey(m, "scopes") + if v3 != nil { + var err error + x.Scopes, err = NewOauth2Scopes(v3, compiler.NewContext("scopes", context)) + if err != nil { + errors = append(errors, err) + } + } + // string token_url = 4; + v4 := compiler.MapValueForKey(m, "tokenUrl") + if v4 != nil { + x.TokenUrl, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 5; + v5 := compiler.MapValueForKey(m, "description") + if v5 != nil { + x.Description, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 6; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauth2ImplicitSecurity creates an object of type Oauth2ImplicitSecurity if possible, returning an error if not. +func NewOauth2ImplicitSecurity(in interface{}, context *compiler.Context) (*Oauth2ImplicitSecurity, error) { + errors := make([]error, 0) + x := &Oauth2ImplicitSecurity{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"authorizationUrl", "flow", "type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"authorizationUrl", "description", "flow", "scopes", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [oauth2] + if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string flow = 2; + v2 := compiler.MapValueForKey(m, "flow") + if v2 != nil { + x.Flow, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [implicit] + if ok && !compiler.StringArrayContainsValue([]string{"implicit"}, x.Flow) { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Oauth2Scopes scopes = 3; + v3 := compiler.MapValueForKey(m, "scopes") + if v3 != nil { + var err error + x.Scopes, err = NewOauth2Scopes(v3, compiler.NewContext("scopes", context)) + if err != nil { + errors = append(errors, err) + } + } + // string authorization_url = 4; + v4 := compiler.MapValueForKey(m, "authorizationUrl") + if v4 != nil { + x.AuthorizationUrl, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for authorizationUrl: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 5; + v5 := compiler.MapValueForKey(m, "description") + if v5 != nil { + x.Description, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 6; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauth2PasswordSecurity creates an object of type Oauth2PasswordSecurity if possible, returning an error if not. +func NewOauth2PasswordSecurity(in interface{}, context *compiler.Context) (*Oauth2PasswordSecurity, error) { + errors := make([]error, 0) + x := &Oauth2PasswordSecurity{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"flow", "tokenUrl", "type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "flow", "scopes", "tokenUrl", "type"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [oauth2] + if ok && !compiler.StringArrayContainsValue([]string{"oauth2"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string flow = 2; + v2 := compiler.MapValueForKey(m, "flow") + if v2 != nil { + x.Flow, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [password] + if ok && !compiler.StringArrayContainsValue([]string{"password"}, x.Flow) { + message := fmt.Sprintf("has unexpected value for flow: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Oauth2Scopes scopes = 3; + v3 := compiler.MapValueForKey(m, "scopes") + if v3 != nil { + var err error + x.Scopes, err = NewOauth2Scopes(v3, compiler.NewContext("scopes", context)) + if err != nil { + errors = append(errors, err) + } + } + // string token_url = 4; + v4 := compiler.MapValueForKey(m, "tokenUrl") + if v4 != nil { + x.TokenUrl, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 5; + v5 := compiler.MapValueForKey(m, "description") + if v5 != nil { + x.Description, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 6; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauth2Scopes creates an object of type Oauth2Scopes if possible, returning an error if not. +func NewOauth2Scopes(in interface{}, context *compiler.Context) (*Oauth2Scopes, error) { + errors := make([]error, 0) + x := &Oauth2Scopes{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedString additional_properties = 1; + // MAP: string + x.AdditionalProperties = make([]*NamedString, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedString{} + pair.Name = k + pair.Value = v.(string) + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOperation creates an object of type Operation if possible, returning an error if not. +func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) { + errors := make([]error, 0) + x := &Operation{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"responses"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"consumes", "deprecated", "description", "externalDocs", "operationId", "parameters", "produces", "responses", "schemes", "security", "summary", "tags"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated string tags = 1; + v1 := compiler.MapValueForKey(m, "tags") + if v1 != nil { + v, ok := v1.([]interface{}) + if ok { + x.Tags = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for tags: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 2; + v2 := compiler.MapValueForKey(m, "summary") + if v2 != nil { + x.Summary, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 4; + v4 := compiler.MapValueForKey(m, "externalDocs") + if v4 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v4, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // string operation_id = 5; + v5 := compiler.MapValueForKey(m, "operationId") + if v5 != nil { + x.OperationId, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for operationId: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string produces = 6; + v6 := compiler.MapValueForKey(m, "produces") + if v6 != nil { + v, ok := v6.([]interface{}) + if ok { + x.Produces = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for produces: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string consumes = 7; + v7 := compiler.MapValueForKey(m, "consumes") + if v7 != nil { + v, ok := v7.([]interface{}) + if ok { + x.Consumes = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for consumes: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated ParametersItem parameters = 8; + v8 := compiler.MapValueForKey(m, "parameters") + if v8 != nil { + // repeated ParametersItem + x.Parameters = make([]*ParametersItem, 0) + a, ok := v8.([]interface{}) + if ok { + for _, item := range a { + y, err := NewParametersItem(item, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + x.Parameters = append(x.Parameters, y) + } + } + } + // Responses responses = 9; + v9 := compiler.MapValueForKey(m, "responses") + if v9 != nil { + var err error + x.Responses, err = NewResponses(v9, compiler.NewContext("responses", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated string schemes = 10; + v10 := compiler.MapValueForKey(m, "schemes") + if v10 != nil { + v, ok := v10.([]interface{}) + if ok { + x.Schemes = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for schemes: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [http https ws wss] + if ok && !compiler.StringArrayContainsValues([]string{"http", "https", "ws", "wss"}, x.Schemes) { + message := fmt.Sprintf("has unexpected value for schemes: %+v", v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool deprecated = 11; + v11 := compiler.MapValueForKey(m, "deprecated") + if v11 != nil { + x.Deprecated, ok = v11.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated SecurityRequirement security = 12; + v12 := compiler.MapValueForKey(m, "security") + if v12 != nil { + // repeated SecurityRequirement + x.Security = make([]*SecurityRequirement, 0) + a, ok := v12.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSecurityRequirement(item, compiler.NewContext("security", context)) + if err != nil { + errors = append(errors, err) + } + x.Security = append(x.Security, y) + } + } + } + // repeated NamedAny vendor_extension = 13; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParameter creates an object of type Parameter if possible, returning an error if not. +func NewParameter(in interface{}, context *compiler.Context) (*Parameter, error) { + errors := make([]error, 0) + x := &Parameter{} + matched := false + // BodyParameter body_parameter = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewBodyParameter(m, compiler.NewContext("bodyParameter", context)) + if matchingError == nil { + x.Oneof = &Parameter_BodyParameter{BodyParameter: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // NonBodyParameter non_body_parameter = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewNonBodyParameter(m, compiler.NewContext("nonBodyParameter", context)) + if matchingError == nil { + x.Oneof = &Parameter_NonBodyParameter{NonBodyParameter: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParameterDefinitions creates an object of type ParameterDefinitions if possible, returning an error if not. +func NewParameterDefinitions(in interface{}, context *compiler.Context) (*ParameterDefinitions, error) { + errors := make([]error, 0) + x := &ParameterDefinitions{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedParameter additional_properties = 1; + // MAP: Parameter + x.AdditionalProperties = make([]*NamedParameter, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedParameter{} + pair.Name = k + var err error + pair.Value, err = NewParameter(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParametersItem creates an object of type ParametersItem if possible, returning an error if not. +func NewParametersItem(in interface{}, context *compiler.Context) (*ParametersItem, error) { + errors := make([]error, 0) + x := &ParametersItem{} + matched := false + // Parameter parameter = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewParameter(m, compiler.NewContext("parameter", context)) + if matchingError == nil { + x.Oneof = &ParametersItem_Parameter{Parameter: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // JsonReference json_reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewJsonReference(m, compiler.NewContext("jsonReference", context)) + if matchingError == nil { + x.Oneof = &ParametersItem_JsonReference{JsonReference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPathItem creates an object of type PathItem if possible, returning an error if not. +func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { + errors := make([]error, 0) + x := &PathItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"$ref", "delete", "get", "head", "options", "parameters", "patch", "post", "put"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Operation get = 2; + v2 := compiler.MapValueForKey(m, "get") + if v2 != nil { + var err error + x.Get, err = NewOperation(v2, compiler.NewContext("get", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation put = 3; + v3 := compiler.MapValueForKey(m, "put") + if v3 != nil { + var err error + x.Put, err = NewOperation(v3, compiler.NewContext("put", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation post = 4; + v4 := compiler.MapValueForKey(m, "post") + if v4 != nil { + var err error + x.Post, err = NewOperation(v4, compiler.NewContext("post", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation delete = 5; + v5 := compiler.MapValueForKey(m, "delete") + if v5 != nil { + var err error + x.Delete, err = NewOperation(v5, compiler.NewContext("delete", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation options = 6; + v6 := compiler.MapValueForKey(m, "options") + if v6 != nil { + var err error + x.Options, err = NewOperation(v6, compiler.NewContext("options", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation head = 7; + v7 := compiler.MapValueForKey(m, "head") + if v7 != nil { + var err error + x.Head, err = NewOperation(v7, compiler.NewContext("head", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation patch = 8; + v8 := compiler.MapValueForKey(m, "patch") + if v8 != nil { + var err error + x.Patch, err = NewOperation(v8, compiler.NewContext("patch", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated ParametersItem parameters = 9; + v9 := compiler.MapValueForKey(m, "parameters") + if v9 != nil { + // repeated ParametersItem + x.Parameters = make([]*ParametersItem, 0) + a, ok := v9.([]interface{}) + if ok { + for _, item := range a { + y, err := NewParametersItem(item, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + x.Parameters = append(x.Parameters, y) + } + } + } + // repeated NamedAny vendor_extension = 10; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPathParameterSubSchema creates an object of type PathParameterSubSchema if possible, returning an error if not. +func NewPathParameterSubSchema(in interface{}, context *compiler.Context) (*PathParameterSubSchema, error) { + errors := make([]error, 0) + x := &PathParameterSubSchema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"required"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"collectionFormat", "default", "description", "enum", "exclusiveMaximum", "exclusiveMinimum", "format", "in", "items", "maxItems", "maxLength", "maximum", "minItems", "minLength", "minimum", "multipleOf", "name", "pattern", "required", "type", "uniqueItems"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // bool required = 1; + v1 := compiler.MapValueForKey(m, "required") + if v1 != nil { + x.Required, ok = v1.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 2; + v2 := compiler.MapValueForKey(m, "in") + if v2 != nil { + x.In, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [path] + if ok && !compiler.StringArrayContainsValue([]string{"path"}, x.In) { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 4; + v4 := compiler.MapValueForKey(m, "name") + if v4 != nil { + x.Name, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string type = 5; + v5 := compiler.MapValueForKey(m, "type") + if v5 != nil { + x.Type, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [string number boolean integer array] + if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 6; + v6 := compiler.MapValueForKey(m, "format") + if v6 != nil { + x.Format, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PrimitivesItems items = 7; + v7 := compiler.MapValueForKey(m, "items") + if v7 != nil { + var err error + x.Items, err = NewPrimitivesItems(v7, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // string collection_format = 8; + v8 := compiler.MapValueForKey(m, "collectionFormat") + if v8 != nil { + x.CollectionFormat, ok = v8.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [csv ssv tsv pipes] + if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 9; + v9 := compiler.MapValueForKey(m, "default") + if v9 != nil { + var err error + x.Default, err = NewAny(v9, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float maximum = 10; + v10 := compiler.MapValueForKey(m, "maximum") + if v10 != nil { + switch v10 := v10.(type) { + case float64: + x.Maximum = v10 + case float32: + x.Maximum = float64(v10) + case uint64: + x.Maximum = float64(v10) + case uint32: + x.Maximum = float64(v10) + case int64: + x.Maximum = float64(v10) + case int32: + x.Maximum = float64(v10) + case int: + x.Maximum = float64(v10) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 11; + v11 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v11 != nil { + x.ExclusiveMaximum, ok = v11.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 12; + v12 := compiler.MapValueForKey(m, "minimum") + if v12 != nil { + switch v12 := v12.(type) { + case float64: + x.Minimum = v12 + case float32: + x.Minimum = float64(v12) + case uint64: + x.Minimum = float64(v12) + case uint32: + x.Minimum = float64(v12) + case int64: + x.Minimum = float64(v12) + case int32: + x.Minimum = float64(v12) + case int: + x.Minimum = float64(v12) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 13; + v13 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v13 != nil { + x.ExclusiveMinimum, ok = v13.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 14; + v14 := compiler.MapValueForKey(m, "maxLength") + if v14 != nil { + t, ok := v14.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 15; + v15 := compiler.MapValueForKey(m, "minLength") + if v15 != nil { + t, ok := v15.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 16; + v16 := compiler.MapValueForKey(m, "pattern") + if v16 != nil { + x.Pattern, ok = v16.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v16, v16) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 17; + v17 := compiler.MapValueForKey(m, "maxItems") + if v17 != nil { + t, ok := v17.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 18; + v18 := compiler.MapValueForKey(m, "minItems") + if v18 != nil { + t, ok := v18.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 19; + v19 := compiler.MapValueForKey(m, "uniqueItems") + if v19 != nil { + x.UniqueItems, ok = v19.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v19, v19) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 20; + v20 := compiler.MapValueForKey(m, "enum") + if v20 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v20.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // float multiple_of = 21; + v21 := compiler.MapValueForKey(m, "multipleOf") + if v21 != nil { + switch v21 := v21.(type) { + case float64: + x.MultipleOf = v21 + case float32: + x.MultipleOf = float64(v21) + case uint64: + x.MultipleOf = float64(v21) + case uint32: + x.MultipleOf = float64(v21) + case int64: + x.MultipleOf = float64(v21) + case int32: + x.MultipleOf = float64(v21) + case int: + x.MultipleOf = float64(v21) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v21, v21) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 22; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPaths creates an object of type Paths if possible, returning an error if not. +func NewPaths(in interface{}, context *compiler.Context) (*Paths, error) { + errors := make([]error, 0) + x := &Paths{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern0, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated NamedAny vendor_extension = 1; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + // repeated NamedPathItem path = 2; + // MAP: PathItem ^/ + x.Path = make([]*NamedPathItem, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "/") { + pair := &NamedPathItem{} + pair.Name = k + var err error + pair.Value, err = NewPathItem(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.Path = append(x.Path, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPrimitivesItems creates an object of type PrimitivesItems if possible, returning an error if not. +func NewPrimitivesItems(in interface{}, context *compiler.Context) (*PrimitivesItems, error) { + errors := make([]error, 0) + x := &PrimitivesItems{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"collectionFormat", "default", "enum", "exclusiveMaximum", "exclusiveMinimum", "format", "items", "maxItems", "maxLength", "maximum", "minItems", "minLength", "minimum", "multipleOf", "pattern", "type", "uniqueItems"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [string number integer boolean array] + if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "integer", "boolean", "array"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 2; + v2 := compiler.MapValueForKey(m, "format") + if v2 != nil { + x.Format, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PrimitivesItems items = 3; + v3 := compiler.MapValueForKey(m, "items") + if v3 != nil { + var err error + x.Items, err = NewPrimitivesItems(v3, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // string collection_format = 4; + v4 := compiler.MapValueForKey(m, "collectionFormat") + if v4 != nil { + x.CollectionFormat, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [csv ssv tsv pipes] + if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes"}, x.CollectionFormat) { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 5; + v5 := compiler.MapValueForKey(m, "default") + if v5 != nil { + var err error + x.Default, err = NewAny(v5, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float maximum = 6; + v6 := compiler.MapValueForKey(m, "maximum") + if v6 != nil { + switch v6 := v6.(type) { + case float64: + x.Maximum = v6 + case float32: + x.Maximum = float64(v6) + case uint64: + x.Maximum = float64(v6) + case uint32: + x.Maximum = float64(v6) + case int64: + x.Maximum = float64(v6) + case int32: + x.Maximum = float64(v6) + case int: + x.Maximum = float64(v6) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 7; + v7 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v7 != nil { + x.ExclusiveMaximum, ok = v7.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 8; + v8 := compiler.MapValueForKey(m, "minimum") + if v8 != nil { + switch v8 := v8.(type) { + case float64: + x.Minimum = v8 + case float32: + x.Minimum = float64(v8) + case uint64: + x.Minimum = float64(v8) + case uint32: + x.Minimum = float64(v8) + case int64: + x.Minimum = float64(v8) + case int32: + x.Minimum = float64(v8) + case int: + x.Minimum = float64(v8) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 9; + v9 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v9 != nil { + x.ExclusiveMinimum, ok = v9.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 10; + v10 := compiler.MapValueForKey(m, "maxLength") + if v10 != nil { + t, ok := v10.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 11; + v11 := compiler.MapValueForKey(m, "minLength") + if v11 != nil { + t, ok := v11.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 12; + v12 := compiler.MapValueForKey(m, "pattern") + if v12 != nil { + x.Pattern, ok = v12.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 13; + v13 := compiler.MapValueForKey(m, "maxItems") + if v13 != nil { + t, ok := v13.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 14; + v14 := compiler.MapValueForKey(m, "minItems") + if v14 != nil { + t, ok := v14.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 15; + v15 := compiler.MapValueForKey(m, "uniqueItems") + if v15 != nil { + x.UniqueItems, ok = v15.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 16; + v16 := compiler.MapValueForKey(m, "enum") + if v16 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v16.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // float multiple_of = 17; + v17 := compiler.MapValueForKey(m, "multipleOf") + if v17 != nil { + switch v17 := v17.(type) { + case float64: + x.MultipleOf = v17 + case float32: + x.MultipleOf = float64(v17) + case uint64: + x.MultipleOf = float64(v17) + case uint32: + x.MultipleOf = float64(v17) + case int64: + x.MultipleOf = float64(v17) + case int32: + x.MultipleOf = float64(v17) + case int: + x.MultipleOf = float64(v17) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 18; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewProperties creates an object of type Properties if possible, returning an error if not. +func NewProperties(in interface{}, context *compiler.Context) (*Properties, error) { + errors := make([]error, 0) + x := &Properties{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSchema additional_properties = 1; + // MAP: Schema + x.AdditionalProperties = make([]*NamedSchema, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedSchema{} + pair.Name = k + var err error + pair.Value, err = NewSchema(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewQueryParameterSubSchema creates an object of type QueryParameterSubSchema if possible, returning an error if not. +func NewQueryParameterSubSchema(in interface{}, context *compiler.Context) (*QueryParameterSubSchema, error) { + errors := make([]error, 0) + x := &QueryParameterSubSchema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"allowEmptyValue", "collectionFormat", "default", "description", "enum", "exclusiveMaximum", "exclusiveMinimum", "format", "in", "items", "maxItems", "maxLength", "maximum", "minItems", "minLength", "minimum", "multipleOf", "name", "pattern", "required", "type", "uniqueItems"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // bool required = 1; + v1 := compiler.MapValueForKey(m, "required") + if v1 != nil { + x.Required, ok = v1.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 2; + v2 := compiler.MapValueForKey(m, "in") + if v2 != nil { + x.In, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [query] + if ok && !compiler.StringArrayContainsValue([]string{"query"}, x.In) { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 4; + v4 := compiler.MapValueForKey(m, "name") + if v4 != nil { + x.Name, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_empty_value = 5; + v5 := compiler.MapValueForKey(m, "allowEmptyValue") + if v5 != nil { + x.AllowEmptyValue, ok = v5.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string type = 6; + v6 := compiler.MapValueForKey(m, "type") + if v6 != nil { + x.Type, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [string number boolean integer array] + if ok && !compiler.StringArrayContainsValue([]string{"string", "number", "boolean", "integer", "array"}, x.Type) { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 7; + v7 := compiler.MapValueForKey(m, "format") + if v7 != nil { + x.Format, ok = v7.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PrimitivesItems items = 8; + v8 := compiler.MapValueForKey(m, "items") + if v8 != nil { + var err error + x.Items, err = NewPrimitivesItems(v8, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // string collection_format = 9; + v9 := compiler.MapValueForKey(m, "collectionFormat") + if v9 != nil { + x.CollectionFormat, ok = v9.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + // check for valid enum values + // [csv ssv tsv pipes multi] + if ok && !compiler.StringArrayContainsValue([]string{"csv", "ssv", "tsv", "pipes", "multi"}, x.CollectionFormat) { + message := fmt.Sprintf("has unexpected value for collectionFormat: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 10; + v10 := compiler.MapValueForKey(m, "default") + if v10 != nil { + var err error + x.Default, err = NewAny(v10, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float maximum = 11; + v11 := compiler.MapValueForKey(m, "maximum") + if v11 != nil { + switch v11 := v11.(type) { + case float64: + x.Maximum = v11 + case float32: + x.Maximum = float64(v11) + case uint64: + x.Maximum = float64(v11) + case uint32: + x.Maximum = float64(v11) + case int64: + x.Maximum = float64(v11) + case int32: + x.Maximum = float64(v11) + case int: + x.Maximum = float64(v11) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 12; + v12 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v12 != nil { + x.ExclusiveMaximum, ok = v12.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 13; + v13 := compiler.MapValueForKey(m, "minimum") + if v13 != nil { + switch v13 := v13.(type) { + case float64: + x.Minimum = v13 + case float32: + x.Minimum = float64(v13) + case uint64: + x.Minimum = float64(v13) + case uint32: + x.Minimum = float64(v13) + case int64: + x.Minimum = float64(v13) + case int32: + x.Minimum = float64(v13) + case int: + x.Minimum = float64(v13) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 14; + v14 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v14 != nil { + x.ExclusiveMinimum, ok = v14.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 15; + v15 := compiler.MapValueForKey(m, "maxLength") + if v15 != nil { + t, ok := v15.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 16; + v16 := compiler.MapValueForKey(m, "minLength") + if v16 != nil { + t, ok := v16.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v16, v16) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 17; + v17 := compiler.MapValueForKey(m, "pattern") + if v17 != nil { + x.Pattern, ok = v17.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 18; + v18 := compiler.MapValueForKey(m, "maxItems") + if v18 != nil { + t, ok := v18.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 19; + v19 := compiler.MapValueForKey(m, "minItems") + if v19 != nil { + t, ok := v19.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v19, v19) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 20; + v20 := compiler.MapValueForKey(m, "uniqueItems") + if v20 != nil { + x.UniqueItems, ok = v20.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v20, v20) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 21; + v21 := compiler.MapValueForKey(m, "enum") + if v21 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v21.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // float multiple_of = 22; + v22 := compiler.MapValueForKey(m, "multipleOf") + if v22 != nil { + switch v22 := v22.(type) { + case float64: + x.MultipleOf = v22 + case float32: + x.MultipleOf = float64(v22) + case uint64: + x.MultipleOf = float64(v22) + case uint32: + x.MultipleOf = float64(v22) + case int64: + x.MultipleOf = float64(v22) + case int32: + x.MultipleOf = float64(v22) + case int: + x.MultipleOf = float64(v22) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v22, v22) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 23; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponse creates an object of type Response if possible, returning an error if not. +func NewResponse(in interface{}, context *compiler.Context) (*Response, error) { + errors := make([]error, 0) + x := &Response{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"description"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "examples", "headers", "schema"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaItem schema = 2; + v2 := compiler.MapValueForKey(m, "schema") + if v2 != nil { + var err error + x.Schema, err = NewSchemaItem(v2, compiler.NewContext("schema", context)) + if err != nil { + errors = append(errors, err) + } + } + // Headers headers = 3; + v3 := compiler.MapValueForKey(m, "headers") + if v3 != nil { + var err error + x.Headers, err = NewHeaders(v3, compiler.NewContext("headers", context)) + if err != nil { + errors = append(errors, err) + } + } + // Examples examples = 4; + v4 := compiler.MapValueForKey(m, "examples") + if v4 != nil { + var err error + x.Examples, err = NewExamples(v4, compiler.NewContext("examples", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 5; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponseDefinitions creates an object of type ResponseDefinitions if possible, returning an error if not. +func NewResponseDefinitions(in interface{}, context *compiler.Context) (*ResponseDefinitions, error) { + errors := make([]error, 0) + x := &ResponseDefinitions{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedResponse additional_properties = 1; + // MAP: Response + x.AdditionalProperties = make([]*NamedResponse, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedResponse{} + pair.Name = k + var err error + pair.Value, err = NewResponse(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponseValue creates an object of type ResponseValue if possible, returning an error if not. +func NewResponseValue(in interface{}, context *compiler.Context) (*ResponseValue, error) { + errors := make([]error, 0) + x := &ResponseValue{} + matched := false + // Response response = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewResponse(m, compiler.NewContext("response", context)) + if matchingError == nil { + x.Oneof = &ResponseValue_Response{Response: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // JsonReference json_reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewJsonReference(m, compiler.NewContext("jsonReference", context)) + if matchingError == nil { + x.Oneof = &ResponseValue_JsonReference{JsonReference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponses creates an object of type Responses if possible, returning an error if not. +func NewResponses(in interface{}, context *compiler.Context) (*Responses, error) { + errors := make([]error, 0) + x := &Responses{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern2, pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated NamedResponseValue response_code = 1; + // MAP: ResponseValue ^([0-9]{3})$|^(default)$ + x.ResponseCode = make([]*NamedResponseValue, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if pattern2.MatchString(k) { + pair := &NamedResponseValue{} + pair.Name = k + var err error + pair.Value, err = NewResponseValue(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.ResponseCode = append(x.ResponseCode, pair) + } + } + } + // repeated NamedAny vendor_extension = 2; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchema creates an object of type Schema if possible, returning an error if not. +func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { + errors := make([]error, 0) + x := &Schema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"$ref", "additionalProperties", "allOf", "default", "description", "discriminator", "enum", "example", "exclusiveMaximum", "exclusiveMinimum", "externalDocs", "format", "items", "maxItems", "maxLength", "maxProperties", "maximum", "minItems", "minLength", "minProperties", "minimum", "multipleOf", "pattern", "properties", "readOnly", "required", "title", "type", "uniqueItems", "xml"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 2; + v2 := compiler.MapValueForKey(m, "format") + if v2 != nil { + x.Format, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string title = 3; + v3 := compiler.MapValueForKey(m, "title") + if v3 != nil { + x.Title, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 4; + v4 := compiler.MapValueForKey(m, "description") + if v4 != nil { + x.Description, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any default = 5; + v5 := compiler.MapValueForKey(m, "default") + if v5 != nil { + var err error + x.Default, err = NewAny(v5, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // float multiple_of = 6; + v6 := compiler.MapValueForKey(m, "multipleOf") + if v6 != nil { + switch v6 := v6.(type) { + case float64: + x.MultipleOf = v6 + case float32: + x.MultipleOf = float64(v6) + case uint64: + x.MultipleOf = float64(v6) + case uint32: + x.MultipleOf = float64(v6) + case int64: + x.MultipleOf = float64(v6) + case int32: + x.MultipleOf = float64(v6) + case int: + x.MultipleOf = float64(v6) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float maximum = 7; + v7 := compiler.MapValueForKey(m, "maximum") + if v7 != nil { + switch v7 := v7.(type) { + case float64: + x.Maximum = v7 + case float32: + x.Maximum = float64(v7) + case uint64: + x.Maximum = float64(v7) + case uint32: + x.Maximum = float64(v7) + case int64: + x.Maximum = float64(v7) + case int32: + x.Maximum = float64(v7) + case int: + x.Maximum = float64(v7) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 8; + v8 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v8 != nil { + x.ExclusiveMaximum, ok = v8.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 9; + v9 := compiler.MapValueForKey(m, "minimum") + if v9 != nil { + switch v9 := v9.(type) { + case float64: + x.Minimum = v9 + case float32: + x.Minimum = float64(v9) + case uint64: + x.Minimum = float64(v9) + case uint32: + x.Minimum = float64(v9) + case int64: + x.Minimum = float64(v9) + case int32: + x.Minimum = float64(v9) + case int: + x.Minimum = float64(v9) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 10; + v10 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v10 != nil { + x.ExclusiveMinimum, ok = v10.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 11; + v11 := compiler.MapValueForKey(m, "maxLength") + if v11 != nil { + t, ok := v11.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 12; + v12 := compiler.MapValueForKey(m, "minLength") + if v12 != nil { + t, ok := v12.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 13; + v13 := compiler.MapValueForKey(m, "pattern") + if v13 != nil { + x.Pattern, ok = v13.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 14; + v14 := compiler.MapValueForKey(m, "maxItems") + if v14 != nil { + t, ok := v14.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 15; + v15 := compiler.MapValueForKey(m, "minItems") + if v15 != nil { + t, ok := v15.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 16; + v16 := compiler.MapValueForKey(m, "uniqueItems") + if v16 != nil { + x.UniqueItems, ok = v16.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v16, v16) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_properties = 17; + v17 := compiler.MapValueForKey(m, "maxProperties") + if v17 != nil { + t, ok := v17.(int) + if ok { + x.MaxProperties = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxProperties: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_properties = 18; + v18 := compiler.MapValueForKey(m, "minProperties") + if v18 != nil { + t, ok := v18.(int) + if ok { + x.MinProperties = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minProperties: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string required = 19; + v19 := compiler.MapValueForKey(m, "required") + if v19 != nil { + v, ok := v19.([]interface{}) + if ok { + x.Required = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v19, v19) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 20; + v20 := compiler.MapValueForKey(m, "enum") + if v20 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v20.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // AdditionalPropertiesItem additional_properties = 21; + v21 := compiler.MapValueForKey(m, "additionalProperties") + if v21 != nil { + var err error + x.AdditionalProperties, err = NewAdditionalPropertiesItem(v21, compiler.NewContext("additionalProperties", context)) + if err != nil { + errors = append(errors, err) + } + } + // TypeItem type = 22; + v22 := compiler.MapValueForKey(m, "type") + if v22 != nil { + var err error + x.Type, err = NewTypeItem(v22, compiler.NewContext("type", context)) + if err != nil { + errors = append(errors, err) + } + } + // ItemsItem items = 23; + v23 := compiler.MapValueForKey(m, "items") + if v23 != nil { + var err error + x.Items, err = NewItemsItem(v23, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated Schema all_of = 24; + v24 := compiler.MapValueForKey(m, "allOf") + if v24 != nil { + // repeated Schema + x.AllOf = make([]*Schema, 0) + a, ok := v24.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSchema(item, compiler.NewContext("allOf", context)) + if err != nil { + errors = append(errors, err) + } + x.AllOf = append(x.AllOf, y) + } + } + } + // Properties properties = 25; + v25 := compiler.MapValueForKey(m, "properties") + if v25 != nil { + var err error + x.Properties, err = NewProperties(v25, compiler.NewContext("properties", context)) + if err != nil { + errors = append(errors, err) + } + } + // string discriminator = 26; + v26 := compiler.MapValueForKey(m, "discriminator") + if v26 != nil { + x.Discriminator, ok = v26.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for discriminator: %+v (%T)", v26, v26) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool read_only = 27; + v27 := compiler.MapValueForKey(m, "readOnly") + if v27 != nil { + x.ReadOnly, ok = v27.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for readOnly: %+v (%T)", v27, v27) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Xml xml = 28; + v28 := compiler.MapValueForKey(m, "xml") + if v28 != nil { + var err error + x.Xml, err = NewXml(v28, compiler.NewContext("xml", context)) + if err != nil { + errors = append(errors, err) + } + } + // ExternalDocs external_docs = 29; + v29 := compiler.MapValueForKey(m, "externalDocs") + if v29 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v29, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 30; + v30 := compiler.MapValueForKey(m, "example") + if v30 != nil { + var err error + x.Example, err = NewAny(v30, compiler.NewContext("example", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 31; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchemaItem creates an object of type SchemaItem if possible, returning an error if not. +func NewSchemaItem(in interface{}, context *compiler.Context) (*SchemaItem, error) { + errors := make([]error, 0) + x := &SchemaItem{} + matched := false + // Schema schema = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSchema(m, compiler.NewContext("schema", context)) + if matchingError == nil { + x.Oneof = &SchemaItem_Schema{Schema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // FileSchema file_schema = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewFileSchema(m, compiler.NewContext("fileSchema", context)) + if matchingError == nil { + x.Oneof = &SchemaItem_FileSchema{FileSchema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityDefinitions creates an object of type SecurityDefinitions if possible, returning an error if not. +func NewSecurityDefinitions(in interface{}, context *compiler.Context) (*SecurityDefinitions, error) { + errors := make([]error, 0) + x := &SecurityDefinitions{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSecurityDefinitionsItem additional_properties = 1; + // MAP: SecurityDefinitionsItem + x.AdditionalProperties = make([]*NamedSecurityDefinitionsItem, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedSecurityDefinitionsItem{} + pair.Name = k + var err error + pair.Value, err = NewSecurityDefinitionsItem(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityDefinitionsItem creates an object of type SecurityDefinitionsItem if possible, returning an error if not. +func NewSecurityDefinitionsItem(in interface{}, context *compiler.Context) (*SecurityDefinitionsItem, error) { + errors := make([]error, 0) + x := &SecurityDefinitionsItem{} + matched := false + // BasicAuthenticationSecurity basic_authentication_security = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewBasicAuthenticationSecurity(m, compiler.NewContext("basicAuthenticationSecurity", context)) + if matchingError == nil { + x.Oneof = &SecurityDefinitionsItem_BasicAuthenticationSecurity{BasicAuthenticationSecurity: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // ApiKeySecurity api_key_security = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewApiKeySecurity(m, compiler.NewContext("apiKeySecurity", context)) + if matchingError == nil { + x.Oneof = &SecurityDefinitionsItem_ApiKeySecurity{ApiKeySecurity: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Oauth2ImplicitSecurity oauth2_implicit_security = 3; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewOauth2ImplicitSecurity(m, compiler.NewContext("oauth2ImplicitSecurity", context)) + if matchingError == nil { + x.Oneof = &SecurityDefinitionsItem_Oauth2ImplicitSecurity{Oauth2ImplicitSecurity: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Oauth2PasswordSecurity oauth2_password_security = 4; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewOauth2PasswordSecurity(m, compiler.NewContext("oauth2PasswordSecurity", context)) + if matchingError == nil { + x.Oneof = &SecurityDefinitionsItem_Oauth2PasswordSecurity{Oauth2PasswordSecurity: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Oauth2ApplicationSecurity oauth2_application_security = 5; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewOauth2ApplicationSecurity(m, compiler.NewContext("oauth2ApplicationSecurity", context)) + if matchingError == nil { + x.Oneof = &SecurityDefinitionsItem_Oauth2ApplicationSecurity{Oauth2ApplicationSecurity: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Oauth2AccessCodeSecurity oauth2_access_code_security = 6; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewOauth2AccessCodeSecurity(m, compiler.NewContext("oauth2AccessCodeSecurity", context)) + if matchingError == nil { + x.Oneof = &SecurityDefinitionsItem_Oauth2AccessCodeSecurity{Oauth2AccessCodeSecurity: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityRequirement creates an object of type SecurityRequirement if possible, returning an error if not. +func NewSecurityRequirement(in interface{}, context *compiler.Context) (*SecurityRequirement, error) { + errors := make([]error, 0) + x := &SecurityRequirement{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedStringArray additional_properties = 1; + // MAP: StringArray + x.AdditionalProperties = make([]*NamedStringArray, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedStringArray{} + pair.Name = k + var err error + pair.Value, err = NewStringArray(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewStringArray creates an object of type StringArray if possible, returning an error if not. +func NewStringArray(in interface{}, context *compiler.Context) (*StringArray, error) { + errors := make([]error, 0) + x := &StringArray{} + a, ok := in.([]interface{}) + if !ok { + message := fmt.Sprintf("has unexpected value for StringArray: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + x.Value = make([]string, 0) + for _, s := range a { + x.Value = append(x.Value, s.(string)) + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewTag creates an object of type Tag if possible, returning an error if not. +func NewTag(in interface{}, context *compiler.Context) (*Tag, error) { + errors := make([]error, 0) + x := &Tag{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "externalDocs", "name"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 3; + v3 := compiler.MapValueForKey(m, "externalDocs") + if v3 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v3, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny vendor_extension = 4; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewTypeItem creates an object of type TypeItem if possible, returning an error if not. +func NewTypeItem(in interface{}, context *compiler.Context) (*TypeItem, error) { + errors := make([]error, 0) + x := &TypeItem{} + switch in := in.(type) { + case string: + x.Value = make([]string, 0) + x.Value = append(x.Value, in) + case []interface{}: + x.Value = make([]string, 0) + for _, v := range in { + value, ok := v.(string) + if ok { + x.Value = append(x.Value, value) + } else { + message := fmt.Sprintf("has unexpected value for string array element: %+v (%T)", value, value) + errors = append(errors, compiler.NewError(context, message)) + } + } + default: + message := fmt.Sprintf("has unexpected value for string array: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewVendorExtension creates an object of type VendorExtension if possible, returning an error if not. +func NewVendorExtension(in interface{}, context *compiler.Context) (*VendorExtension, error) { + errors := make([]error, 0) + x := &VendorExtension{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewXml creates an object of type Xml if possible, returning an error if not. +func NewXml(in interface{}, context *compiler.Context) (*Xml, error) { + errors := make([]error, 0) + x := &Xml{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"attribute", "name", "namespace", "prefix", "wrapped"} + allowedPatterns := []*regexp.Regexp{pattern0} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string namespace = 2; + v2 := compiler.MapValueForKey(m, "namespace") + if v2 != nil { + x.Namespace, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for namespace: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string prefix = 3; + v3 := compiler.MapValueForKey(m, "prefix") + if v3 != nil { + x.Prefix, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for prefix: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool attribute = 4; + v4 := compiler.MapValueForKey(m, "attribute") + if v4 != nil { + x.Attribute, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for attribute: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool wrapped = 5; + v5 := compiler.MapValueForKey(m, "wrapped") + if v5 != nil { + x.Wrapped, ok = v5.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for wrapped: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny vendor_extension = 6; + // MAP: Any ^x- + x.VendorExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.VendorExtension = append(x.VendorExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside AdditionalPropertiesItem objects. +func (m *AdditionalPropertiesItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*AdditionalPropertiesItem_Schema) + if ok { + _, err := p.Schema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Any objects. +func (m *Any) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ApiKeySecurity objects. +func (m *ApiKeySecurity) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside BasicAuthenticationSecurity objects. +func (m *BasicAuthenticationSecurity) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside BodyParameter objects. +func (m *BodyParameter) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Contact objects. +func (m *Contact) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Default objects. +func (m *Default) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Definitions objects. +func (m *Definitions) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Document objects. +func (m *Document) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Info != nil { + _, err := m.Info.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Paths != nil { + _, err := m.Paths.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Definitions != nil { + _, err := m.Definitions.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Parameters != nil { + _, err := m.Parameters.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Responses != nil { + _, err := m.Responses.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Security { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.SecurityDefinitions != nil { + _, err := m.SecurityDefinitions.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Tags { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Examples objects. +func (m *Examples) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExternalDocs objects. +func (m *ExternalDocs) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside FileSchema objects. +func (m *FileSchema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside FormDataParameterSubSchema objects. +func (m *FormDataParameterSubSchema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Header objects. +func (m *Header) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside HeaderParameterSubSchema objects. +func (m *HeaderParameterSubSchema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Headers objects. +func (m *Headers) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Info objects. +func (m *Info) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Contact != nil { + _, err := m.Contact.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.License != nil { + _, err := m.License.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ItemsItem objects. +func (m *ItemsItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.Schema { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside JsonReference objects. +func (m *JsonReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + if info != nil { + replacement, err := NewJsonReference(info, nil) + if err == nil { + *m = *replacement + return m.ResolveReferences(root) + } + } + return info, nil + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside License objects. +func (m *License) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedAny objects. +func (m *NamedAny) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedHeader objects. +func (m *NamedHeader) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedParameter objects. +func (m *NamedParameter) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedPathItem objects. +func (m *NamedPathItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedResponse objects. +func (m *NamedResponse) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedResponseValue objects. +func (m *NamedResponseValue) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedSchema objects. +func (m *NamedSchema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedSecurityDefinitionsItem objects. +func (m *NamedSecurityDefinitionsItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedString objects. +func (m *NamedString) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedStringArray objects. +func (m *NamedStringArray) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NonBodyParameter objects. +func (m *NonBodyParameter) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*NonBodyParameter_HeaderParameterSubSchema) + if ok { + _, err := p.HeaderParameterSubSchema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*NonBodyParameter_FormDataParameterSubSchema) + if ok { + _, err := p.FormDataParameterSubSchema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*NonBodyParameter_QueryParameterSubSchema) + if ok { + _, err := p.QueryParameterSubSchema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*NonBodyParameter_PathParameterSubSchema) + if ok { + _, err := p.PathParameterSubSchema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Oauth2AccessCodeSecurity objects. +func (m *Oauth2AccessCodeSecurity) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Scopes != nil { + _, err := m.Scopes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Oauth2ApplicationSecurity objects. +func (m *Oauth2ApplicationSecurity) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Scopes != nil { + _, err := m.Scopes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Oauth2ImplicitSecurity objects. +func (m *Oauth2ImplicitSecurity) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Scopes != nil { + _, err := m.Scopes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Oauth2PasswordSecurity objects. +func (m *Oauth2PasswordSecurity) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Scopes != nil { + _, err := m.Scopes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Oauth2Scopes objects. +func (m *Oauth2Scopes) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Operation objects. +func (m *Operation) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Parameters { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.Responses != nil { + _, err := m.Responses.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Security { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Parameter objects. +func (m *Parameter) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*Parameter_BodyParameter) + if ok { + _, err := p.BodyParameter.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*Parameter_NonBodyParameter) + if ok { + _, err := p.NonBodyParameter.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ParameterDefinitions objects. +func (m *ParameterDefinitions) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ParametersItem objects. +func (m *ParametersItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ParametersItem_Parameter) + if ok { + _, err := p.Parameter.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ParametersItem_JsonReference) + if ok { + info, err := p.JsonReference.ResolveReferences(root) + if err != nil { + return nil, err + } else if info != nil { + n, err := NewParametersItem(info, nil) + if err != nil { + return nil, err + } else if n != nil { + *m = *n + return nil, nil + } + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside PathItem objects. +func (m *PathItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + if info != nil { + replacement, err := NewPathItem(info, nil) + if err == nil { + *m = *replacement + return m.ResolveReferences(root) + } + } + return info, nil + } + if m.Get != nil { + _, err := m.Get.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Put != nil { + _, err := m.Put.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Post != nil { + _, err := m.Post.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Delete != nil { + _, err := m.Delete.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Options != nil { + _, err := m.Options.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Head != nil { + _, err := m.Head.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Patch != nil { + _, err := m.Patch.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Parameters { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside PathParameterSubSchema objects. +func (m *PathParameterSubSchema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Paths objects. +func (m *Paths) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Path { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside PrimitivesItems objects. +func (m *PrimitivesItems) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Properties objects. +func (m *Properties) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside QueryParameterSubSchema objects. +func (m *QueryParameterSubSchema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Response objects. +func (m *Response) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ResponseDefinitions objects. +func (m *ResponseDefinitions) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ResponseValue objects. +func (m *ResponseValue) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ResponseValue_Response) + if ok { + _, err := p.Response.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ResponseValue_JsonReference) + if ok { + info, err := p.JsonReference.ResolveReferences(root) + if err != nil { + return nil, err + } else if info != nil { + n, err := NewResponseValue(info, nil) + if err != nil { + return nil, err + } else if n != nil { + *m = *n + return nil, nil + } + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Responses objects. +func (m *Responses) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.ResponseCode { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Schema objects. +func (m *Schema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + if info != nil { + replacement, err := NewSchema(info, nil) + if err == nil { + *m = *replacement + return m.ResolveReferences(root) + } + } + return info, nil + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.AdditionalProperties != nil { + _, err := m.AdditionalProperties.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Type != nil { + _, err := m.Type.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.AllOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.Properties != nil { + _, err := m.Properties.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Xml != nil { + _, err := m.Xml.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SchemaItem objects. +func (m *SchemaItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*SchemaItem_Schema) + if ok { + _, err := p.Schema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SchemaItem_FileSchema) + if ok { + _, err := p.FileSchema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityDefinitions objects. +func (m *SecurityDefinitions) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityDefinitionsItem objects. +func (m *SecurityDefinitionsItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*SecurityDefinitionsItem_BasicAuthenticationSecurity) + if ok { + _, err := p.BasicAuthenticationSecurity.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecurityDefinitionsItem_ApiKeySecurity) + if ok { + _, err := p.ApiKeySecurity.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecurityDefinitionsItem_Oauth2ImplicitSecurity) + if ok { + _, err := p.Oauth2ImplicitSecurity.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecurityDefinitionsItem_Oauth2PasswordSecurity) + if ok { + _, err := p.Oauth2PasswordSecurity.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecurityDefinitionsItem_Oauth2ApplicationSecurity) + if ok { + _, err := p.Oauth2ApplicationSecurity.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecurityDefinitionsItem_Oauth2AccessCodeSecurity) + if ok { + _, err := p.Oauth2AccessCodeSecurity.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityRequirement objects. +func (m *SecurityRequirement) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside StringArray objects. +func (m *StringArray) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Tag objects. +func (m *Tag) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside TypeItem objects. +func (m *TypeItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside VendorExtension objects. +func (m *VendorExtension) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Xml objects. +func (m *Xml) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.VendorExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ToRawInfo returns a description of AdditionalPropertiesItem suitable for JSON or YAML export. +func (m *AdditionalPropertiesItem) ToRawInfo() interface{} { + // ONE OF WRAPPER + // AdditionalPropertiesItem + // {Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSchema() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { + return v1.Boolean + } + return nil +} + +// ToRawInfo returns a description of Any suitable for JSON or YAML export. +func (m *Any) ToRawInfo() interface{} { + var err error + var info1 []yaml.MapSlice + err = yaml.Unmarshal([]byte(m.Yaml), &info1) + if err == nil { + return info1 + } + var info2 yaml.MapSlice + err = yaml.Unmarshal([]byte(m.Yaml), &info2) + if err == nil { + return info2 + } + var info3 interface{} + err = yaml.Unmarshal([]byte(m.Yaml), &info3) + if err == nil { + return info3 + } + return nil +} + +// ToRawInfo returns a description of ApiKeySecurity suitable for JSON or YAML export. +func (m *ApiKeySecurity) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of BasicAuthenticationSecurity suitable for JSON or YAML export. +func (m *BasicAuthenticationSecurity) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of BodyParameter suitable for JSON or YAML export. +func (m *BodyParameter) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.Schema != nil { + info = append(info, yaml.MapItem{"schema", m.Schema.ToRawInfo()}) + } + // &{Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Contact suitable for JSON or YAML export. +func (m *Contact) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.Email != "" { + info = append(info, yaml.MapItem{"email", m.Email}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Default suitable for JSON or YAML export. +func (m *Default) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:false Description:} + return info +} + +// ToRawInfo returns a description of Definitions suitable for JSON or YAML export. +func (m *Definitions) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedSchema StringEnumValues:[] MapType:Schema Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Document suitable for JSON or YAML export. +func (m *Document) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Swagger != "" { + info = append(info, yaml.MapItem{"swagger", m.Swagger}) + } + if m.Info != nil { + info = append(info, yaml.MapItem{"info", m.Info.ToRawInfo()}) + } + // &{Name:info Type:Info StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Host != "" { + info = append(info, yaml.MapItem{"host", m.Host}) + } + if m.BasePath != "" { + info = append(info, yaml.MapItem{"basePath", m.BasePath}) + } + if len(m.Schemes) != 0 { + info = append(info, yaml.MapItem{"schemes", m.Schemes}) + } + if len(m.Consumes) != 0 { + info = append(info, yaml.MapItem{"consumes", m.Consumes}) + } + if len(m.Produces) != 0 { + info = append(info, yaml.MapItem{"produces", m.Produces}) + } + if m.Paths != nil { + info = append(info, yaml.MapItem{"paths", m.Paths.ToRawInfo()}) + } + // &{Name:paths Type:Paths StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Definitions != nil { + info = append(info, yaml.MapItem{"definitions", m.Definitions.ToRawInfo()}) + } + // &{Name:definitions Type:Definitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Parameters != nil { + info = append(info, yaml.MapItem{"parameters", m.Parameters.ToRawInfo()}) + } + // &{Name:parameters Type:ParameterDefinitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Responses != nil { + info = append(info, yaml.MapItem{"responses", m.Responses.ToRawInfo()}) + } + // &{Name:responses Type:ResponseDefinitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Security) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Security { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"security", items}) + } + // &{Name:security Type:SecurityRequirement StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.SecurityDefinitions != nil { + info = append(info, yaml.MapItem{"securityDefinitions", m.SecurityDefinitions.ToRawInfo()}) + } + // &{Name:securityDefinitions Type:SecurityDefinitions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Tags) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Tags { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"tags", items}) + } + // &{Name:tags Type:Tag StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Examples suitable for JSON or YAML export. +func (m *Examples) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ExternalDocs suitable for JSON or YAML export. +func (m *ExternalDocs) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of FileSchema suitable for JSON or YAML export. +func (m *FileSchema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Title != "" { + info = append(info, yaml.MapItem{"title", m.Title}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Required) != 0 { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.ReadOnly != false { + info = append(info, yaml.MapItem{"readOnly", m.ReadOnly}) + } + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Example != nil { + info = append(info, yaml.MapItem{"example", m.Example.ToRawInfo()}) + } + // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of FormDataParameterSubSchema suitable for JSON or YAML export. +func (m *FormDataParameterSubSchema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.AllowEmptyValue != false { + info = append(info, yaml.MapItem{"allowEmptyValue", m.AllowEmptyValue}) + } + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Items != nil { + info = append(info, yaml.MapItem{"items", m.Items.ToRawInfo()}) + } + // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.CollectionFormat != "" { + info = append(info, yaml.MapItem{"collectionFormat", m.CollectionFormat}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Header suitable for JSON or YAML export. +func (m *Header) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Items != nil { + info = append(info, yaml.MapItem{"items", m.Items.ToRawInfo()}) + } + // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.CollectionFormat != "" { + info = append(info, yaml.MapItem{"collectionFormat", m.CollectionFormat}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of HeaderParameterSubSchema suitable for JSON or YAML export. +func (m *HeaderParameterSubSchema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Items != nil { + info = append(info, yaml.MapItem{"items", m.Items.ToRawInfo()}) + } + // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.CollectionFormat != "" { + info = append(info, yaml.MapItem{"collectionFormat", m.CollectionFormat}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Headers suitable for JSON or YAML export. +func (m *Headers) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedHeader StringEnumValues:[] MapType:Header Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Info suitable for JSON or YAML export. +func (m *Info) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Title != "" { + info = append(info, yaml.MapItem{"title", m.Title}) + } + if m.Version != "" { + info = append(info, yaml.MapItem{"version", m.Version}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.TermsOfService != "" { + info = append(info, yaml.MapItem{"termsOfService", m.TermsOfService}) + } + if m.Contact != nil { + info = append(info, yaml.MapItem{"contact", m.Contact.ToRawInfo()}) + } + // &{Name:contact Type:Contact StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.License != nil { + info = append(info, yaml.MapItem{"license", m.License.ToRawInfo()}) + } + // &{Name:license Type:License StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ItemsItem suitable for JSON or YAML export. +func (m *ItemsItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if len(m.Schema) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Schema { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"schema", items}) + } + // &{Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + return info +} + +// ToRawInfo returns a description of JsonReference suitable for JSON or YAML export. +func (m *JsonReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.XRef != "" { + info = append(info, yaml.MapItem{"$ref", m.XRef}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + return info +} + +// ToRawInfo returns a description of License suitable for JSON or YAML export. +func (m *License) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of NamedAny suitable for JSON or YAML export. +func (m *NamedAny) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedHeader suitable for JSON or YAML export. +func (m *NamedHeader) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Header StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedParameter suitable for JSON or YAML export. +func (m *NamedParameter) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Parameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedPathItem suitable for JSON or YAML export. +func (m *NamedPathItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:PathItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedResponse suitable for JSON or YAML export. +func (m *NamedResponse) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Response StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedResponseValue suitable for JSON or YAML export. +func (m *NamedResponseValue) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:ResponseValue StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedSchema suitable for JSON or YAML export. +func (m *NamedSchema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedSecurityDefinitionsItem suitable for JSON or YAML export. +func (m *NamedSecurityDefinitionsItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:SecurityDefinitionsItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedString suitable for JSON or YAML export. +func (m *NamedString) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Value != "" { + info = append(info, yaml.MapItem{"value", m.Value}) + } + return info +} + +// ToRawInfo returns a description of NamedStringArray suitable for JSON or YAML export. +func (m *NamedStringArray) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:StringArray StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NonBodyParameter suitable for JSON or YAML export. +func (m *NonBodyParameter) ToRawInfo() interface{} { + // ONE OF WRAPPER + // NonBodyParameter + // {Name:headerParameterSubSchema Type:HeaderParameterSubSchema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetHeaderParameterSubSchema() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:formDataParameterSubSchema Type:FormDataParameterSubSchema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetFormDataParameterSubSchema() + if v1 != nil { + return v1.ToRawInfo() + } + // {Name:queryParameterSubSchema Type:QueryParameterSubSchema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v2 := m.GetQueryParameterSubSchema() + if v2 != nil { + return v2.ToRawInfo() + } + // {Name:pathParameterSubSchema Type:PathParameterSubSchema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v3 := m.GetPathParameterSubSchema() + if v3 != nil { + return v3.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of Oauth2AccessCodeSecurity suitable for JSON or YAML export. +func (m *Oauth2AccessCodeSecurity) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Flow != "" { + info = append(info, yaml.MapItem{"flow", m.Flow}) + } + if m.Scopes != nil { + info = append(info, yaml.MapItem{"scopes", m.Scopes.ToRawInfo()}) + } + // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.AuthorizationUrl != "" { + info = append(info, yaml.MapItem{"authorizationUrl", m.AuthorizationUrl}) + } + if m.TokenUrl != "" { + info = append(info, yaml.MapItem{"tokenUrl", m.TokenUrl}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Oauth2ApplicationSecurity suitable for JSON or YAML export. +func (m *Oauth2ApplicationSecurity) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Flow != "" { + info = append(info, yaml.MapItem{"flow", m.Flow}) + } + if m.Scopes != nil { + info = append(info, yaml.MapItem{"scopes", m.Scopes.ToRawInfo()}) + } + // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.TokenUrl != "" { + info = append(info, yaml.MapItem{"tokenUrl", m.TokenUrl}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Oauth2ImplicitSecurity suitable for JSON or YAML export. +func (m *Oauth2ImplicitSecurity) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Flow != "" { + info = append(info, yaml.MapItem{"flow", m.Flow}) + } + if m.Scopes != nil { + info = append(info, yaml.MapItem{"scopes", m.Scopes.ToRawInfo()}) + } + // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.AuthorizationUrl != "" { + info = append(info, yaml.MapItem{"authorizationUrl", m.AuthorizationUrl}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Oauth2PasswordSecurity suitable for JSON or YAML export. +func (m *Oauth2PasswordSecurity) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Flow != "" { + info = append(info, yaml.MapItem{"flow", m.Flow}) + } + if m.Scopes != nil { + info = append(info, yaml.MapItem{"scopes", m.Scopes.ToRawInfo()}) + } + // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.TokenUrl != "" { + info = append(info, yaml.MapItem{"tokenUrl", m.TokenUrl}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Oauth2Scopes suitable for JSON or YAML export. +func (m *Oauth2Scopes) ToRawInfo() interface{} { + info := yaml.MapSlice{} + // &{Name:additionalProperties Type:NamedString StringEnumValues:[] MapType:string Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Operation suitable for JSON or YAML export. +func (m *Operation) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if len(m.Tags) != 0 { + info = append(info, yaml.MapItem{"tags", m.Tags}) + } + if m.Summary != "" { + info = append(info, yaml.MapItem{"summary", m.Summary}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.OperationId != "" { + info = append(info, yaml.MapItem{"operationId", m.OperationId}) + } + if len(m.Produces) != 0 { + info = append(info, yaml.MapItem{"produces", m.Produces}) + } + if len(m.Consumes) != 0 { + info = append(info, yaml.MapItem{"consumes", m.Consumes}) + } + if len(m.Parameters) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Parameters { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"parameters", items}) + } + // &{Name:parameters Type:ParametersItem StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:The parameters needed to send a valid API call.} + if m.Responses != nil { + info = append(info, yaml.MapItem{"responses", m.Responses.ToRawInfo()}) + } + // &{Name:responses Type:Responses StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Schemes) != 0 { + info = append(info, yaml.MapItem{"schemes", m.Schemes}) + } + if m.Deprecated != false { + info = append(info, yaml.MapItem{"deprecated", m.Deprecated}) + } + if len(m.Security) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Security { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"security", items}) + } + // &{Name:security Type:SecurityRequirement StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Parameter suitable for JSON or YAML export. +func (m *Parameter) ToRawInfo() interface{} { + // ONE OF WRAPPER + // Parameter + // {Name:bodyParameter Type:BodyParameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetBodyParameter() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:nonBodyParameter Type:NonBodyParameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetNonBodyParameter() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of ParameterDefinitions suitable for JSON or YAML export. +func (m *ParameterDefinitions) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedParameter StringEnumValues:[] MapType:Parameter Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ParametersItem suitable for JSON or YAML export. +func (m *ParametersItem) ToRawInfo() interface{} { + // ONE OF WRAPPER + // ParametersItem + // {Name:parameter Type:Parameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetParameter() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:jsonReference Type:JsonReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetJsonReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of PathItem suitable for JSON or YAML export. +func (m *PathItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.XRef != "" { + info = append(info, yaml.MapItem{"$ref", m.XRef}) + } + if m.Get != nil { + info = append(info, yaml.MapItem{"get", m.Get.ToRawInfo()}) + } + // &{Name:get Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Put != nil { + info = append(info, yaml.MapItem{"put", m.Put.ToRawInfo()}) + } + // &{Name:put Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Post != nil { + info = append(info, yaml.MapItem{"post", m.Post.ToRawInfo()}) + } + // &{Name:post Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Delete != nil { + info = append(info, yaml.MapItem{"delete", m.Delete.ToRawInfo()}) + } + // &{Name:delete Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Options != nil { + info = append(info, yaml.MapItem{"options", m.Options.ToRawInfo()}) + } + // &{Name:options Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Head != nil { + info = append(info, yaml.MapItem{"head", m.Head.ToRawInfo()}) + } + // &{Name:head Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Patch != nil { + info = append(info, yaml.MapItem{"patch", m.Patch.ToRawInfo()}) + } + // &{Name:patch Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Parameters) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Parameters { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"parameters", items}) + } + // &{Name:parameters Type:ParametersItem StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:The parameters needed to send a valid API call.} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of PathParameterSubSchema suitable for JSON or YAML export. +func (m *PathParameterSubSchema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Items != nil { + info = append(info, yaml.MapItem{"items", m.Items.ToRawInfo()}) + } + // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.CollectionFormat != "" { + info = append(info, yaml.MapItem{"collectionFormat", m.CollectionFormat}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Paths suitable for JSON or YAML export. +func (m *Paths) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + if m.Path != nil { + for _, item := range m.Path { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:Path Type:NamedPathItem StringEnumValues:[] MapType:PathItem Repeated:true Pattern:^/ Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of PrimitivesItems suitable for JSON or YAML export. +func (m *PrimitivesItems) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Items != nil { + info = append(info, yaml.MapItem{"items", m.Items.ToRawInfo()}) + } + // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.CollectionFormat != "" { + info = append(info, yaml.MapItem{"collectionFormat", m.CollectionFormat}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Properties suitable for JSON or YAML export. +func (m *Properties) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedSchema StringEnumValues:[] MapType:Schema Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of QueryParameterSubSchema suitable for JSON or YAML export. +func (m *QueryParameterSubSchema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.AllowEmptyValue != false { + info = append(info, yaml.MapItem{"allowEmptyValue", m.AllowEmptyValue}) + } + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Items != nil { + info = append(info, yaml.MapItem{"items", m.Items.ToRawInfo()}) + } + // &{Name:items Type:PrimitivesItems StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.CollectionFormat != "" { + info = append(info, yaml.MapItem{"collectionFormat", m.CollectionFormat}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Response suitable for JSON or YAML export. +func (m *Response) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Schema != nil { + info = append(info, yaml.MapItem{"schema", m.Schema.ToRawInfo()}) + } + // &{Name:schema Type:SchemaItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Headers != nil { + info = append(info, yaml.MapItem{"headers", m.Headers.ToRawInfo()}) + } + // &{Name:headers Type:Headers StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Examples != nil { + info = append(info, yaml.MapItem{"examples", m.Examples.ToRawInfo()}) + } + // &{Name:examples Type:Examples StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ResponseDefinitions suitable for JSON or YAML export. +func (m *ResponseDefinitions) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedResponse StringEnumValues:[] MapType:Response Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ResponseValue suitable for JSON or YAML export. +func (m *ResponseValue) ToRawInfo() interface{} { + // ONE OF WRAPPER + // ResponseValue + // {Name:response Type:Response StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetResponse() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:jsonReference Type:JsonReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetJsonReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of Responses suitable for JSON or YAML export. +func (m *Responses) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.ResponseCode != nil { + for _, item := range m.ResponseCode { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:ResponseCode Type:NamedResponseValue StringEnumValues:[] MapType:ResponseValue Repeated:true Pattern:^([0-9]{3})$|^(default)$ Implicit:true Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Schema suitable for JSON or YAML export. +func (m *Schema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.XRef != "" { + info = append(info, yaml.MapItem{"$ref", m.XRef}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.Title != "" { + info = append(info, yaml.MapItem{"title", m.Title}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if m.MaxProperties != 0 { + info = append(info, yaml.MapItem{"maxProperties", m.MaxProperties}) + } + if m.MinProperties != 0 { + info = append(info, yaml.MapItem{"minProperties", m.MinProperties}) + } + if len(m.Required) != 0 { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.AdditionalProperties != nil { + info = append(info, yaml.MapItem{"additionalProperties", m.AdditionalProperties.ToRawInfo()}) + } + // &{Name:additionalProperties Type:AdditionalPropertiesItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Type != nil { + if len(m.Type.Value) == 1 { + info = append(info, yaml.MapItem{"type", m.Type.Value[0]}) + } else { + info = append(info, yaml.MapItem{"type", m.Type.Value}) + } + } + // &{Name:type Type:TypeItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Items != nil { + items := make([]interface{}, 0) + for _, item := range m.Items.Schema { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"items", items[0]}) + } + // &{Name:items Type:ItemsItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.AllOf) != 0 { + items := make([]interface{}, 0) + for _, item := range m.AllOf { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"allOf", items}) + } + // &{Name:allOf Type:Schema StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.Properties != nil { + info = append(info, yaml.MapItem{"properties", m.Properties.ToRawInfo()}) + } + // &{Name:properties Type:Properties StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Discriminator != "" { + info = append(info, yaml.MapItem{"discriminator", m.Discriminator}) + } + if m.ReadOnly != false { + info = append(info, yaml.MapItem{"readOnly", m.ReadOnly}) + } + if m.Xml != nil { + info = append(info, yaml.MapItem{"xml", m.Xml.ToRawInfo()}) + } + // &{Name:xml Type:Xml StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Example != nil { + info = append(info, yaml.MapItem{"example", m.Example.ToRawInfo()}) + } + // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of SchemaItem suitable for JSON or YAML export. +func (m *SchemaItem) ToRawInfo() interface{} { + // ONE OF WRAPPER + // SchemaItem + // {Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSchema() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:fileSchema Type:FileSchema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetFileSchema() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of SecurityDefinitions suitable for JSON or YAML export. +func (m *SecurityDefinitions) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedSecurityDefinitionsItem StringEnumValues:[] MapType:SecurityDefinitionsItem Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of SecurityDefinitionsItem suitable for JSON or YAML export. +func (m *SecurityDefinitionsItem) ToRawInfo() interface{} { + // ONE OF WRAPPER + // SecurityDefinitionsItem + // {Name:basicAuthenticationSecurity Type:BasicAuthenticationSecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetBasicAuthenticationSecurity() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:apiKeySecurity Type:ApiKeySecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetApiKeySecurity() + if v1 != nil { + return v1.ToRawInfo() + } + // {Name:oauth2ImplicitSecurity Type:Oauth2ImplicitSecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v2 := m.GetOauth2ImplicitSecurity() + if v2 != nil { + return v2.ToRawInfo() + } + // {Name:oauth2PasswordSecurity Type:Oauth2PasswordSecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v3 := m.GetOauth2PasswordSecurity() + if v3 != nil { + return v3.ToRawInfo() + } + // {Name:oauth2ApplicationSecurity Type:Oauth2ApplicationSecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v4 := m.GetOauth2ApplicationSecurity() + if v4 != nil { + return v4.ToRawInfo() + } + // {Name:oauth2AccessCodeSecurity Type:Oauth2AccessCodeSecurity StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v5 := m.GetOauth2AccessCodeSecurity() + if v5 != nil { + return v5.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of SecurityRequirement suitable for JSON or YAML export. +func (m *SecurityRequirement) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedStringArray StringEnumValues:[] MapType:StringArray Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of StringArray suitable for JSON or YAML export. +func (m *StringArray) ToRawInfo() interface{} { + return m.Value +} + +// ToRawInfo returns a description of Tag suitable for JSON or YAML export. +func (m *Tag) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of TypeItem suitable for JSON or YAML export. +func (m *TypeItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if len(m.Value) != 0 { + info = append(info, yaml.MapItem{"value", m.Value}) + } + return info +} + +// ToRawInfo returns a description of VendorExtension suitable for JSON or YAML export. +func (m *VendorExtension) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Xml suitable for JSON or YAML export. +func (m *Xml) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Namespace != "" { + info = append(info, yaml.MapItem{"namespace", m.Namespace}) + } + if m.Prefix != "" { + info = append(info, yaml.MapItem{"prefix", m.Prefix}) + } + if m.Attribute != false { + info = append(info, yaml.MapItem{"attribute", m.Attribute}) + } + if m.Wrapped != false { + info = append(info, yaml.MapItem{"wrapped", m.Wrapped}) + } + if m.VendorExtension != nil { + for _, item := range m.VendorExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:VendorExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +var ( + pattern0 = regexp.MustCompile("^x-") + pattern1 = regexp.MustCompile("^/") + pattern2 = regexp.MustCompile("^([0-9]{3})$|^(default)$") +) diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.pb.go b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.pb.go new file mode 100644 index 0000000000..37da7df256 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.pb.go @@ -0,0 +1,4456 @@ +// Code generated by protoc-gen-go. +// source: OpenAPIv2/OpenAPIv2.proto +// DO NOT EDIT! + +/* +Package openapi_v2 is a generated protocol buffer package. + +It is generated from these files: + OpenAPIv2/OpenAPIv2.proto + +It has these top-level messages: + AdditionalPropertiesItem + Any + ApiKeySecurity + BasicAuthenticationSecurity + BodyParameter + Contact + Default + Definitions + Document + Examples + ExternalDocs + FileSchema + FormDataParameterSubSchema + Header + HeaderParameterSubSchema + Headers + Info + ItemsItem + JsonReference + License + NamedAny + NamedHeader + NamedParameter + NamedPathItem + NamedResponse + NamedResponseValue + NamedSchema + NamedSecurityDefinitionsItem + NamedString + NamedStringArray + NonBodyParameter + Oauth2AccessCodeSecurity + Oauth2ApplicationSecurity + Oauth2ImplicitSecurity + Oauth2PasswordSecurity + Oauth2Scopes + Operation + Parameter + ParameterDefinitions + ParametersItem + PathItem + PathParameterSubSchema + Paths + PrimitivesItems + Properties + QueryParameterSubSchema + Response + ResponseDefinitions + ResponseValue + Responses + Schema + SchemaItem + SecurityDefinitions + SecurityDefinitionsItem + SecurityRequirement + StringArray + Tag + TypeItem + VendorExtension + Xml +*/ +package openapi_v2 + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import google_protobuf "github.com/golang/protobuf/ptypes/any" + +// 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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type AdditionalPropertiesItem struct { + // Types that are valid to be assigned to Oneof: + // *AdditionalPropertiesItem_Schema + // *AdditionalPropertiesItem_Boolean + Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` +} + +func (m *AdditionalPropertiesItem) Reset() { *m = AdditionalPropertiesItem{} } +func (m *AdditionalPropertiesItem) String() string { return proto.CompactTextString(m) } +func (*AdditionalPropertiesItem) ProtoMessage() {} +func (*AdditionalPropertiesItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +type isAdditionalPropertiesItem_Oneof interface { + isAdditionalPropertiesItem_Oneof() +} + +type AdditionalPropertiesItem_Schema struct { + Schema *Schema `protobuf:"bytes,1,opt,name=schema,oneof"` +} +type AdditionalPropertiesItem_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,oneof"` +} + +func (*AdditionalPropertiesItem_Schema) isAdditionalPropertiesItem_Oneof() {} +func (*AdditionalPropertiesItem_Boolean) isAdditionalPropertiesItem_Oneof() {} + +func (m *AdditionalPropertiesItem) GetOneof() isAdditionalPropertiesItem_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *AdditionalPropertiesItem) GetSchema() *Schema { + if x, ok := m.GetOneof().(*AdditionalPropertiesItem_Schema); ok { + return x.Schema + } + return nil +} + +func (m *AdditionalPropertiesItem) GetBoolean() bool { + if x, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { + return x.Boolean + } + return false +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*AdditionalPropertiesItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _AdditionalPropertiesItem_OneofMarshaler, _AdditionalPropertiesItem_OneofUnmarshaler, _AdditionalPropertiesItem_OneofSizer, []interface{}{ + (*AdditionalPropertiesItem_Schema)(nil), + (*AdditionalPropertiesItem_Boolean)(nil), + } +} + +func _AdditionalPropertiesItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*AdditionalPropertiesItem) + // oneof + switch x := m.Oneof.(type) { + case *AdditionalPropertiesItem_Schema: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Schema); err != nil { + return err + } + case *AdditionalPropertiesItem_Boolean: + t := uint64(0) + if x.Boolean { + t = 1 + } + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("AdditionalPropertiesItem.Oneof has unexpected type %T", x) + } + return nil +} + +func _AdditionalPropertiesItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*AdditionalPropertiesItem) + switch tag { + case 1: // oneof.schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Schema) + err := b.DecodeMessage(msg) + m.Oneof = &AdditionalPropertiesItem_Schema{msg} + return true, err + case 2: // oneof.boolean + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Oneof = &AdditionalPropertiesItem_Boolean{x != 0} + return true, err + default: + return false, nil + } +} + +func _AdditionalPropertiesItem_OneofSizer(msg proto.Message) (n int) { + m := msg.(*AdditionalPropertiesItem) + // oneof + switch x := m.Oneof.(type) { + case *AdditionalPropertiesItem_Schema: + s := proto.Size(x.Schema) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AdditionalPropertiesItem_Boolean: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type Any struct { + Value *google_protobuf.Any `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` + Yaml string `protobuf:"bytes,2,opt,name=yaml" json:"yaml,omitempty"` +} + +func (m *Any) Reset() { *m = Any{} } +func (m *Any) String() string { return proto.CompactTextString(m) } +func (*Any) ProtoMessage() {} +func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *Any) GetValue() *google_protobuf.Any { + if m != nil { + return m.Value + } + return nil +} + +func (m *Any) GetYaml() string { + if m != nil { + return m.Yaml + } + return "" +} + +type ApiKeySecurity struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + In string `protobuf:"bytes,3,opt,name=in" json:"in,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,5,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *ApiKeySecurity) Reset() { *m = ApiKeySecurity{} } +func (m *ApiKeySecurity) String() string { return proto.CompactTextString(m) } +func (*ApiKeySecurity) ProtoMessage() {} +func (*ApiKeySecurity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *ApiKeySecurity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *ApiKeySecurity) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *ApiKeySecurity) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *ApiKeySecurity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ApiKeySecurity) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type BasicAuthenticationSecurity struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *BasicAuthenticationSecurity) Reset() { *m = BasicAuthenticationSecurity{} } +func (m *BasicAuthenticationSecurity) String() string { return proto.CompactTextString(m) } +func (*BasicAuthenticationSecurity) ProtoMessage() {} +func (*BasicAuthenticationSecurity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *BasicAuthenticationSecurity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *BasicAuthenticationSecurity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *BasicAuthenticationSecurity) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type BodyParameter struct { + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + // The name of the parameter. + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + // Determines the location of the parameter. + In string `protobuf:"bytes,3,opt,name=in" json:"in,omitempty"` + // Determines whether or not this parameter is required or optional. + Required bool `protobuf:"varint,4,opt,name=required" json:"required,omitempty"` + Schema *Schema `protobuf:"bytes,5,opt,name=schema" json:"schema,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *BodyParameter) Reset() { *m = BodyParameter{} } +func (m *BodyParameter) String() string { return proto.CompactTextString(m) } +func (*BodyParameter) ProtoMessage() {} +func (*BodyParameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *BodyParameter) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *BodyParameter) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *BodyParameter) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *BodyParameter) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *BodyParameter) GetSchema() *Schema { + if m != nil { + return m.Schema + } + return nil +} + +func (m *BodyParameter) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +// Contact information for the owners of the API. +type Contact struct { + // The identifying name of the contact person/organization. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The URL pointing to the contact information. + Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` + // The email address of the contact person/organization. + Email string `protobuf:"bytes,3,opt,name=email" json:"email,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,4,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Contact) Reset() { *m = Contact{} } +func (m *Contact) String() string { return proto.CompactTextString(m) } +func (*Contact) ProtoMessage() {} +func (*Contact) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *Contact) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Contact) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *Contact) GetEmail() string { + if m != nil { + return m.Email + } + return "" +} + +func (m *Contact) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Default struct { + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Default) Reset() { *m = Default{} } +func (m *Default) String() string { return proto.CompactTextString(m) } +func (*Default) ProtoMessage() {} +func (*Default) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } + +func (m *Default) GetAdditionalProperties() []*NamedAny { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// One or more JSON objects describing the schemas being consumed and produced by the API. +type Definitions struct { + AdditionalProperties []*NamedSchema `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Definitions) Reset() { *m = Definitions{} } +func (m *Definitions) String() string { return proto.CompactTextString(m) } +func (*Definitions) ProtoMessage() {} +func (*Definitions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +func (m *Definitions) GetAdditionalProperties() []*NamedSchema { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type Document struct { + // The Swagger version of this document. + Swagger string `protobuf:"bytes,1,opt,name=swagger" json:"swagger,omitempty"` + Info *Info `protobuf:"bytes,2,opt,name=info" json:"info,omitempty"` + // The host (name or ip) of the API. Example: 'swagger.io' + Host string `protobuf:"bytes,3,opt,name=host" json:"host,omitempty"` + // The base path to the API. Example: '/api'. + BasePath string `protobuf:"bytes,4,opt,name=base_path,json=basePath" json:"base_path,omitempty"` + // The transfer protocol of the API. + Schemes []string `protobuf:"bytes,5,rep,name=schemes" json:"schemes,omitempty"` + // A list of MIME types accepted by the API. + Consumes []string `protobuf:"bytes,6,rep,name=consumes" json:"consumes,omitempty"` + // A list of MIME types the API can produce. + Produces []string `protobuf:"bytes,7,rep,name=produces" json:"produces,omitempty"` + Paths *Paths `protobuf:"bytes,8,opt,name=paths" json:"paths,omitempty"` + Definitions *Definitions `protobuf:"bytes,9,opt,name=definitions" json:"definitions,omitempty"` + Parameters *ParameterDefinitions `protobuf:"bytes,10,opt,name=parameters" json:"parameters,omitempty"` + Responses *ResponseDefinitions `protobuf:"bytes,11,opt,name=responses" json:"responses,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,12,rep,name=security" json:"security,omitempty"` + SecurityDefinitions *SecurityDefinitions `protobuf:"bytes,13,opt,name=security_definitions,json=securityDefinitions" json:"security_definitions,omitempty"` + Tags []*Tag `protobuf:"bytes,14,rep,name=tags" json:"tags,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,15,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,16,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Document) Reset() { *m = Document{} } +func (m *Document) String() string { return proto.CompactTextString(m) } +func (*Document) ProtoMessage() {} +func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *Document) GetSwagger() string { + if m != nil { + return m.Swagger + } + return "" +} + +func (m *Document) GetInfo() *Info { + if m != nil { + return m.Info + } + return nil +} + +func (m *Document) GetHost() string { + if m != nil { + return m.Host + } + return "" +} + +func (m *Document) GetBasePath() string { + if m != nil { + return m.BasePath + } + return "" +} + +func (m *Document) GetSchemes() []string { + if m != nil { + return m.Schemes + } + return nil +} + +func (m *Document) GetConsumes() []string { + if m != nil { + return m.Consumes + } + return nil +} + +func (m *Document) GetProduces() []string { + if m != nil { + return m.Produces + } + return nil +} + +func (m *Document) GetPaths() *Paths { + if m != nil { + return m.Paths + } + return nil +} + +func (m *Document) GetDefinitions() *Definitions { + if m != nil { + return m.Definitions + } + return nil +} + +func (m *Document) GetParameters() *ParameterDefinitions { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *Document) GetResponses() *ResponseDefinitions { + if m != nil { + return m.Responses + } + return nil +} + +func (m *Document) GetSecurity() []*SecurityRequirement { + if m != nil { + return m.Security + } + return nil +} + +func (m *Document) GetSecurityDefinitions() *SecurityDefinitions { + if m != nil { + return m.SecurityDefinitions + } + return nil +} + +func (m *Document) GetTags() []*Tag { + if m != nil { + return m.Tags + } + return nil +} + +func (m *Document) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Document) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Examples struct { + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Examples) Reset() { *m = Examples{} } +func (m *Examples) String() string { return proto.CompactTextString(m) } +func (*Examples) ProtoMessage() {} +func (*Examples) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + +func (m *Examples) GetAdditionalProperties() []*NamedAny { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// information about external documentation +type ExternalDocs struct { + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *ExternalDocs) Reset() { *m = ExternalDocs{} } +func (m *ExternalDocs) String() string { return proto.CompactTextString(m) } +func (*ExternalDocs) ProtoMessage() {} +func (*ExternalDocs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +func (m *ExternalDocs) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ExternalDocs) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *ExternalDocs) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +// A deterministic version of a JSON Schema object. +type FileSchema struct { + Format string `protobuf:"bytes,1,opt,name=format" json:"format,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + Default *Any `protobuf:"bytes,4,opt,name=default" json:"default,omitempty"` + Required []string `protobuf:"bytes,5,rep,name=required" json:"required,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type" json:"type,omitempty"` + ReadOnly bool `protobuf:"varint,7,opt,name=read_only,json=readOnly" json:"read_only,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,8,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + Example *Any `protobuf:"bytes,9,opt,name=example" json:"example,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,10,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *FileSchema) Reset() { *m = FileSchema{} } +func (m *FileSchema) String() string { return proto.CompactTextString(m) } +func (*FileSchema) ProtoMessage() {} +func (*FileSchema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } + +func (m *FileSchema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *FileSchema) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *FileSchema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *FileSchema) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *FileSchema) GetRequired() []string { + if m != nil { + return m.Required + } + return nil +} + +func (m *FileSchema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *FileSchema) GetReadOnly() bool { + if m != nil { + return m.ReadOnly + } + return false +} + +func (m *FileSchema) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *FileSchema) GetExample() *Any { + if m != nil { + return m.Example + } + return nil +} + +func (m *FileSchema) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type FormDataParameterSubSchema struct { + // Determines whether or not this parameter is required or optional. + Required bool `protobuf:"varint,1,opt,name=required" json:"required,omitempty"` + // Determines the location of the parameter. + In string `protobuf:"bytes,2,opt,name=in" json:"in,omitempty"` + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The name of the parameter. + Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` + // allows sending a parameter by name only or with an empty value. + AllowEmptyValue bool `protobuf:"varint,5,opt,name=allow_empty_value,json=allowEmptyValue" json:"allow_empty_value,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type" json:"type,omitempty"` + Format string `protobuf:"bytes,7,opt,name=format" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,8,opt,name=items" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,9,opt,name=collection_format,json=collectionFormat" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,10,opt,name=default" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,11,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,13,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,17,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,21,rep,name=enum" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,22,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,23,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *FormDataParameterSubSchema) Reset() { *m = FormDataParameterSubSchema{} } +func (m *FormDataParameterSubSchema) String() string { return proto.CompactTextString(m) } +func (*FormDataParameterSubSchema) ProtoMessage() {} +func (*FormDataParameterSubSchema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } + +func (m *FormDataParameterSubSchema) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *FormDataParameterSubSchema) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *FormDataParameterSubSchema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *FormDataParameterSubSchema) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *FormDataParameterSubSchema) GetAllowEmptyValue() bool { + if m != nil { + return m.AllowEmptyValue + } + return false +} + +func (m *FormDataParameterSubSchema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *FormDataParameterSubSchema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *FormDataParameterSubSchema) GetItems() *PrimitivesItems { + if m != nil { + return m.Items + } + return nil +} + +func (m *FormDataParameterSubSchema) GetCollectionFormat() string { + if m != nil { + return m.CollectionFormat + } + return "" +} + +func (m *FormDataParameterSubSchema) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *FormDataParameterSubSchema) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *FormDataParameterSubSchema) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *FormDataParameterSubSchema) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *FormDataParameterSubSchema) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *FormDataParameterSubSchema) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *FormDataParameterSubSchema) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *FormDataParameterSubSchema) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Header struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,3,opt,name=items" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,4,opt,name=collection_format,json=collectionFormat" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,5,opt,name=default" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,6,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,7,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,8,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,9,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,10,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,11,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,12,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,13,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,14,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,15,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,16,rep,name=enum" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,17,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + Description string `protobuf:"bytes,18,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,19,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Header) Reset() { *m = Header{} } +func (m *Header) String() string { return proto.CompactTextString(m) } +func (*Header) ProtoMessage() {} +func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } + +func (m *Header) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Header) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *Header) GetItems() *PrimitivesItems { + if m != nil { + return m.Items + } + return nil +} + +func (m *Header) GetCollectionFormat() string { + if m != nil { + return m.CollectionFormat + } + return "" +} + +func (m *Header) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *Header) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *Header) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *Header) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *Header) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *Header) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *Header) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *Header) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *Header) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *Header) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *Header) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *Header) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *Header) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *Header) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Header) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type HeaderParameterSubSchema struct { + // Determines whether or not this parameter is required or optional. + Required bool `protobuf:"varint,1,opt,name=required" json:"required,omitempty"` + // Determines the location of the parameter. + In string `protobuf:"bytes,2,opt,name=in" json:"in,omitempty"` + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The name of the parameter. + Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` + Type string `protobuf:"bytes,5,opt,name=type" json:"type,omitempty"` + Format string `protobuf:"bytes,6,opt,name=format" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,7,opt,name=items" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,8,opt,name=collection_format,json=collectionFormat" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,9,opt,name=default" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,10,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,11,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,12,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,13,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,14,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,15,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,16,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,17,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,18,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,19,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,20,rep,name=enum" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,21,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,22,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *HeaderParameterSubSchema) Reset() { *m = HeaderParameterSubSchema{} } +func (m *HeaderParameterSubSchema) String() string { return proto.CompactTextString(m) } +func (*HeaderParameterSubSchema) ProtoMessage() {} +func (*HeaderParameterSubSchema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *HeaderParameterSubSchema) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *HeaderParameterSubSchema) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *HeaderParameterSubSchema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *HeaderParameterSubSchema) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *HeaderParameterSubSchema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *HeaderParameterSubSchema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *HeaderParameterSubSchema) GetItems() *PrimitivesItems { + if m != nil { + return m.Items + } + return nil +} + +func (m *HeaderParameterSubSchema) GetCollectionFormat() string { + if m != nil { + return m.CollectionFormat + } + return "" +} + +func (m *HeaderParameterSubSchema) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *HeaderParameterSubSchema) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *HeaderParameterSubSchema) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *HeaderParameterSubSchema) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *HeaderParameterSubSchema) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *HeaderParameterSubSchema) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *HeaderParameterSubSchema) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *HeaderParameterSubSchema) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Headers struct { + AdditionalProperties []*NamedHeader `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Headers) Reset() { *m = Headers{} } +func (m *Headers) String() string { return proto.CompactTextString(m) } +func (*Headers) ProtoMessage() {} +func (*Headers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +func (m *Headers) GetAdditionalProperties() []*NamedHeader { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// General information about the API. +type Info struct { + // A unique and precise title of the API. + Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` + // A semantic version number of the API. + Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` + // A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The terms of service for the API. + TermsOfService string `protobuf:"bytes,4,opt,name=terms_of_service,json=termsOfService" json:"terms_of_service,omitempty"` + Contact *Contact `protobuf:"bytes,5,opt,name=contact" json:"contact,omitempty"` + License *License `protobuf:"bytes,6,opt,name=license" json:"license,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,7,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Info) Reset() { *m = Info{} } +func (m *Info) String() string { return proto.CompactTextString(m) } +func (*Info) ProtoMessage() {} +func (*Info) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +func (m *Info) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *Info) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *Info) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Info) GetTermsOfService() string { + if m != nil { + return m.TermsOfService + } + return "" +} + +func (m *Info) GetContact() *Contact { + if m != nil { + return m.Contact + } + return nil +} + +func (m *Info) GetLicense() *License { + if m != nil { + return m.License + } + return nil +} + +func (m *Info) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type ItemsItem struct { + Schema []*Schema `protobuf:"bytes,1,rep,name=schema" json:"schema,omitempty"` +} + +func (m *ItemsItem) Reset() { *m = ItemsItem{} } +func (m *ItemsItem) String() string { return proto.CompactTextString(m) } +func (*ItemsItem) ProtoMessage() {} +func (*ItemsItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } + +func (m *ItemsItem) GetSchema() []*Schema { + if m != nil { + return m.Schema + } + return nil +} + +type JsonReference struct { + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref" json:"_ref,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` +} + +func (m *JsonReference) Reset() { *m = JsonReference{} } +func (m *JsonReference) String() string { return proto.CompactTextString(m) } +func (*JsonReference) ProtoMessage() {} +func (*JsonReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } + +func (m *JsonReference) GetXRef() string { + if m != nil { + return m.XRef + } + return "" +} + +func (m *JsonReference) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type License struct { + // The name of the license type. It's encouraged to use an OSI compatible license. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The URL pointing to the license. + Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,3,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *License) Reset() { *m = License{} } +func (m *License) String() string { return proto.CompactTextString(m) } +func (*License) ProtoMessage() {} +func (*License) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } + +func (m *License) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *License) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *License) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +type NamedAny struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Any `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedAny) Reset() { *m = NamedAny{} } +func (m *NamedAny) String() string { return proto.CompactTextString(m) } +func (*NamedAny) ProtoMessage() {} +func (*NamedAny) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } + +func (m *NamedAny) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedAny) GetValue() *Any { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of Header as ordered (name,value) pairs. +type NamedHeader struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Header `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedHeader) Reset() { *m = NamedHeader{} } +func (m *NamedHeader) String() string { return proto.CompactTextString(m) } +func (*NamedHeader) ProtoMessage() {} +func (*NamedHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } + +func (m *NamedHeader) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedHeader) GetValue() *Header { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs. +type NamedParameter struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Parameter `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedParameter) Reset() { *m = NamedParameter{} } +func (m *NamedParameter) String() string { return proto.CompactTextString(m) } +func (*NamedParameter) ProtoMessage() {} +func (*NamedParameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } + +func (m *NamedParameter) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedParameter) GetValue() *Parameter { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +type NamedPathItem struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *PathItem `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedPathItem) Reset() { *m = NamedPathItem{} } +func (m *NamedPathItem) String() string { return proto.CompactTextString(m) } +func (*NamedPathItem) ProtoMessage() {} +func (*NamedPathItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } + +func (m *NamedPathItem) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedPathItem) GetValue() *PathItem { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of Response as ordered (name,value) pairs. +type NamedResponse struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Response `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedResponse) Reset() { *m = NamedResponse{} } +func (m *NamedResponse) String() string { return proto.CompactTextString(m) } +func (*NamedResponse) ProtoMessage() {} +func (*NamedResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *NamedResponse) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedResponse) GetValue() *Response { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs. +type NamedResponseValue struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *ResponseValue `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedResponseValue) Reset() { *m = NamedResponseValue{} } +func (m *NamedResponseValue) String() string { return proto.CompactTextString(m) } +func (*NamedResponseValue) ProtoMessage() {} +func (*NamedResponseValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } + +func (m *NamedResponseValue) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedResponseValue) GetValue() *ResponseValue { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs. +type NamedSchema struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Schema `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedSchema) Reset() { *m = NamedSchema{} } +func (m *NamedSchema) String() string { return proto.CompactTextString(m) } +func (*NamedSchema) ProtoMessage() {} +func (*NamedSchema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } + +func (m *NamedSchema) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedSchema) GetValue() *Schema { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs. +type NamedSecurityDefinitionsItem struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *SecurityDefinitionsItem `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedSecurityDefinitionsItem) Reset() { *m = NamedSecurityDefinitionsItem{} } +func (m *NamedSecurityDefinitionsItem) String() string { return proto.CompactTextString(m) } +func (*NamedSecurityDefinitionsItem) ProtoMessage() {} +func (*NamedSecurityDefinitionsItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } + +func (m *NamedSecurityDefinitionsItem) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedSecurityDefinitionsItem) GetValue() *SecurityDefinitionsItem { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +type NamedString struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedString) Reset() { *m = NamedString{} } +func (m *NamedString) String() string { return proto.CompactTextString(m) } +func (*NamedString) ProtoMessage() {} +func (*NamedString) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } + +func (m *NamedString) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedString) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. +type NamedStringArray struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *StringArray `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedStringArray) Reset() { *m = NamedStringArray{} } +func (m *NamedStringArray) String() string { return proto.CompactTextString(m) } +func (*NamedStringArray) ProtoMessage() {} +func (*NamedStringArray) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } + +func (m *NamedStringArray) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedStringArray) GetValue() *StringArray { + if m != nil { + return m.Value + } + return nil +} + +type NonBodyParameter struct { + // Types that are valid to be assigned to Oneof: + // *NonBodyParameter_HeaderParameterSubSchema + // *NonBodyParameter_FormDataParameterSubSchema + // *NonBodyParameter_QueryParameterSubSchema + // *NonBodyParameter_PathParameterSubSchema + Oneof isNonBodyParameter_Oneof `protobuf_oneof:"oneof"` +} + +func (m *NonBodyParameter) Reset() { *m = NonBodyParameter{} } +func (m *NonBodyParameter) String() string { return proto.CompactTextString(m) } +func (*NonBodyParameter) ProtoMessage() {} +func (*NonBodyParameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } + +type isNonBodyParameter_Oneof interface { + isNonBodyParameter_Oneof() +} + +type NonBodyParameter_HeaderParameterSubSchema struct { + HeaderParameterSubSchema *HeaderParameterSubSchema `protobuf:"bytes,1,opt,name=header_parameter_sub_schema,json=headerParameterSubSchema,oneof"` +} +type NonBodyParameter_FormDataParameterSubSchema struct { + FormDataParameterSubSchema *FormDataParameterSubSchema `protobuf:"bytes,2,opt,name=form_data_parameter_sub_schema,json=formDataParameterSubSchema,oneof"` +} +type NonBodyParameter_QueryParameterSubSchema struct { + QueryParameterSubSchema *QueryParameterSubSchema `protobuf:"bytes,3,opt,name=query_parameter_sub_schema,json=queryParameterSubSchema,oneof"` +} +type NonBodyParameter_PathParameterSubSchema struct { + PathParameterSubSchema *PathParameterSubSchema `protobuf:"bytes,4,opt,name=path_parameter_sub_schema,json=pathParameterSubSchema,oneof"` +} + +func (*NonBodyParameter_HeaderParameterSubSchema) isNonBodyParameter_Oneof() {} +func (*NonBodyParameter_FormDataParameterSubSchema) isNonBodyParameter_Oneof() {} +func (*NonBodyParameter_QueryParameterSubSchema) isNonBodyParameter_Oneof() {} +func (*NonBodyParameter_PathParameterSubSchema) isNonBodyParameter_Oneof() {} + +func (m *NonBodyParameter) GetOneof() isNonBodyParameter_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *NonBodyParameter) GetHeaderParameterSubSchema() *HeaderParameterSubSchema { + if x, ok := m.GetOneof().(*NonBodyParameter_HeaderParameterSubSchema); ok { + return x.HeaderParameterSubSchema + } + return nil +} + +func (m *NonBodyParameter) GetFormDataParameterSubSchema() *FormDataParameterSubSchema { + if x, ok := m.GetOneof().(*NonBodyParameter_FormDataParameterSubSchema); ok { + return x.FormDataParameterSubSchema + } + return nil +} + +func (m *NonBodyParameter) GetQueryParameterSubSchema() *QueryParameterSubSchema { + if x, ok := m.GetOneof().(*NonBodyParameter_QueryParameterSubSchema); ok { + return x.QueryParameterSubSchema + } + return nil +} + +func (m *NonBodyParameter) GetPathParameterSubSchema() *PathParameterSubSchema { + if x, ok := m.GetOneof().(*NonBodyParameter_PathParameterSubSchema); ok { + return x.PathParameterSubSchema + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*NonBodyParameter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _NonBodyParameter_OneofMarshaler, _NonBodyParameter_OneofUnmarshaler, _NonBodyParameter_OneofSizer, []interface{}{ + (*NonBodyParameter_HeaderParameterSubSchema)(nil), + (*NonBodyParameter_FormDataParameterSubSchema)(nil), + (*NonBodyParameter_QueryParameterSubSchema)(nil), + (*NonBodyParameter_PathParameterSubSchema)(nil), + } +} + +func _NonBodyParameter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*NonBodyParameter) + // oneof + switch x := m.Oneof.(type) { + case *NonBodyParameter_HeaderParameterSubSchema: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.HeaderParameterSubSchema); err != nil { + return err + } + case *NonBodyParameter_FormDataParameterSubSchema: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.FormDataParameterSubSchema); err != nil { + return err + } + case *NonBodyParameter_QueryParameterSubSchema: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.QueryParameterSubSchema); err != nil { + return err + } + case *NonBodyParameter_PathParameterSubSchema: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.PathParameterSubSchema); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("NonBodyParameter.Oneof has unexpected type %T", x) + } + return nil +} + +func _NonBodyParameter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*NonBodyParameter) + switch tag { + case 1: // oneof.header_parameter_sub_schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(HeaderParameterSubSchema) + err := b.DecodeMessage(msg) + m.Oneof = &NonBodyParameter_HeaderParameterSubSchema{msg} + return true, err + case 2: // oneof.form_data_parameter_sub_schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FormDataParameterSubSchema) + err := b.DecodeMessage(msg) + m.Oneof = &NonBodyParameter_FormDataParameterSubSchema{msg} + return true, err + case 3: // oneof.query_parameter_sub_schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(QueryParameterSubSchema) + err := b.DecodeMessage(msg) + m.Oneof = &NonBodyParameter_QueryParameterSubSchema{msg} + return true, err + case 4: // oneof.path_parameter_sub_schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PathParameterSubSchema) + err := b.DecodeMessage(msg) + m.Oneof = &NonBodyParameter_PathParameterSubSchema{msg} + return true, err + default: + return false, nil + } +} + +func _NonBodyParameter_OneofSizer(msg proto.Message) (n int) { + m := msg.(*NonBodyParameter) + // oneof + switch x := m.Oneof.(type) { + case *NonBodyParameter_HeaderParameterSubSchema: + s := proto.Size(x.HeaderParameterSubSchema) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *NonBodyParameter_FormDataParameterSubSchema: + s := proto.Size(x.FormDataParameterSubSchema) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *NonBodyParameter_QueryParameterSubSchema: + s := proto.Size(x.QueryParameterSubSchema) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *NonBodyParameter_PathParameterSubSchema: + s := proto.Size(x.PathParameterSubSchema) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type Oauth2AccessCodeSecurity struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes" json:"scopes,omitempty"` + AuthorizationUrl string `protobuf:"bytes,4,opt,name=authorization_url,json=authorizationUrl" json:"authorization_url,omitempty"` + TokenUrl string `protobuf:"bytes,5,opt,name=token_url,json=tokenUrl" json:"token_url,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,7,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Oauth2AccessCodeSecurity) Reset() { *m = Oauth2AccessCodeSecurity{} } +func (m *Oauth2AccessCodeSecurity) String() string { return proto.CompactTextString(m) } +func (*Oauth2AccessCodeSecurity) ProtoMessage() {} +func (*Oauth2AccessCodeSecurity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } + +func (m *Oauth2AccessCodeSecurity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Oauth2AccessCodeSecurity) GetFlow() string { + if m != nil { + return m.Flow + } + return "" +} + +func (m *Oauth2AccessCodeSecurity) GetScopes() *Oauth2Scopes { + if m != nil { + return m.Scopes + } + return nil +} + +func (m *Oauth2AccessCodeSecurity) GetAuthorizationUrl() string { + if m != nil { + return m.AuthorizationUrl + } + return "" +} + +func (m *Oauth2AccessCodeSecurity) GetTokenUrl() string { + if m != nil { + return m.TokenUrl + } + return "" +} + +func (m *Oauth2AccessCodeSecurity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Oauth2AccessCodeSecurity) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Oauth2ApplicationSecurity struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes" json:"scopes,omitempty"` + TokenUrl string `protobuf:"bytes,4,opt,name=token_url,json=tokenUrl" json:"token_url,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Oauth2ApplicationSecurity) Reset() { *m = Oauth2ApplicationSecurity{} } +func (m *Oauth2ApplicationSecurity) String() string { return proto.CompactTextString(m) } +func (*Oauth2ApplicationSecurity) ProtoMessage() {} +func (*Oauth2ApplicationSecurity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } + +func (m *Oauth2ApplicationSecurity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Oauth2ApplicationSecurity) GetFlow() string { + if m != nil { + return m.Flow + } + return "" +} + +func (m *Oauth2ApplicationSecurity) GetScopes() *Oauth2Scopes { + if m != nil { + return m.Scopes + } + return nil +} + +func (m *Oauth2ApplicationSecurity) GetTokenUrl() string { + if m != nil { + return m.TokenUrl + } + return "" +} + +func (m *Oauth2ApplicationSecurity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Oauth2ApplicationSecurity) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Oauth2ImplicitSecurity struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes" json:"scopes,omitempty"` + AuthorizationUrl string `protobuf:"bytes,4,opt,name=authorization_url,json=authorizationUrl" json:"authorization_url,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Oauth2ImplicitSecurity) Reset() { *m = Oauth2ImplicitSecurity{} } +func (m *Oauth2ImplicitSecurity) String() string { return proto.CompactTextString(m) } +func (*Oauth2ImplicitSecurity) ProtoMessage() {} +func (*Oauth2ImplicitSecurity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } + +func (m *Oauth2ImplicitSecurity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Oauth2ImplicitSecurity) GetFlow() string { + if m != nil { + return m.Flow + } + return "" +} + +func (m *Oauth2ImplicitSecurity) GetScopes() *Oauth2Scopes { + if m != nil { + return m.Scopes + } + return nil +} + +func (m *Oauth2ImplicitSecurity) GetAuthorizationUrl() string { + if m != nil { + return m.AuthorizationUrl + } + return "" +} + +func (m *Oauth2ImplicitSecurity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Oauth2ImplicitSecurity) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Oauth2PasswordSecurity struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow" json:"flow,omitempty"` + Scopes *Oauth2Scopes `protobuf:"bytes,3,opt,name=scopes" json:"scopes,omitempty"` + TokenUrl string `protobuf:"bytes,4,opt,name=token_url,json=tokenUrl" json:"token_url,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Oauth2PasswordSecurity) Reset() { *m = Oauth2PasswordSecurity{} } +func (m *Oauth2PasswordSecurity) String() string { return proto.CompactTextString(m) } +func (*Oauth2PasswordSecurity) ProtoMessage() {} +func (*Oauth2PasswordSecurity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } + +func (m *Oauth2PasswordSecurity) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Oauth2PasswordSecurity) GetFlow() string { + if m != nil { + return m.Flow + } + return "" +} + +func (m *Oauth2PasswordSecurity) GetScopes() *Oauth2Scopes { + if m != nil { + return m.Scopes + } + return nil +} + +func (m *Oauth2PasswordSecurity) GetTokenUrl() string { + if m != nil { + return m.TokenUrl + } + return "" +} + +func (m *Oauth2PasswordSecurity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Oauth2PasswordSecurity) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Oauth2Scopes struct { + AdditionalProperties []*NamedString `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Oauth2Scopes) Reset() { *m = Oauth2Scopes{} } +func (m *Oauth2Scopes) String() string { return proto.CompactTextString(m) } +func (*Oauth2Scopes) ProtoMessage() {} +func (*Oauth2Scopes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } + +func (m *Oauth2Scopes) GetAdditionalProperties() []*NamedString { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type Operation struct { + Tags []string `protobuf:"bytes,1,rep,name=tags" json:"tags,omitempty"` + // A brief summary of the operation. + Summary string `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` + // A longer description of the operation, GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,4,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + // A unique identifier of the operation. + OperationId string `protobuf:"bytes,5,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` + // A list of MIME types the API can produce. + Produces []string `protobuf:"bytes,6,rep,name=produces" json:"produces,omitempty"` + // A list of MIME types the API can consume. + Consumes []string `protobuf:"bytes,7,rep,name=consumes" json:"consumes,omitempty"` + // The parameters needed to send a valid API call. + Parameters []*ParametersItem `protobuf:"bytes,8,rep,name=parameters" json:"parameters,omitempty"` + Responses *Responses `protobuf:"bytes,9,opt,name=responses" json:"responses,omitempty"` + // The transfer protocol of the API. + Schemes []string `protobuf:"bytes,10,rep,name=schemes" json:"schemes,omitempty"` + Deprecated bool `protobuf:"varint,11,opt,name=deprecated" json:"deprecated,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,12,rep,name=security" json:"security,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,13,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Operation) Reset() { *m = Operation{} } +func (m *Operation) String() string { return proto.CompactTextString(m) } +func (*Operation) ProtoMessage() {} +func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } + +func (m *Operation) GetTags() []string { + if m != nil { + return m.Tags + } + return nil +} + +func (m *Operation) GetSummary() string { + if m != nil { + return m.Summary + } + return "" +} + +func (m *Operation) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Operation) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Operation) GetOperationId() string { + if m != nil { + return m.OperationId + } + return "" +} + +func (m *Operation) GetProduces() []string { + if m != nil { + return m.Produces + } + return nil +} + +func (m *Operation) GetConsumes() []string { + if m != nil { + return m.Consumes + } + return nil +} + +func (m *Operation) GetParameters() []*ParametersItem { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *Operation) GetResponses() *Responses { + if m != nil { + return m.Responses + } + return nil +} + +func (m *Operation) GetSchemes() []string { + if m != nil { + return m.Schemes + } + return nil +} + +func (m *Operation) GetDeprecated() bool { + if m != nil { + return m.Deprecated + } + return false +} + +func (m *Operation) GetSecurity() []*SecurityRequirement { + if m != nil { + return m.Security + } + return nil +} + +func (m *Operation) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Parameter struct { + // Types that are valid to be assigned to Oneof: + // *Parameter_BodyParameter + // *Parameter_NonBodyParameter + Oneof isParameter_Oneof `protobuf_oneof:"oneof"` +} + +func (m *Parameter) Reset() { *m = Parameter{} } +func (m *Parameter) String() string { return proto.CompactTextString(m) } +func (*Parameter) ProtoMessage() {} +func (*Parameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } + +type isParameter_Oneof interface { + isParameter_Oneof() +} + +type Parameter_BodyParameter struct { + BodyParameter *BodyParameter `protobuf:"bytes,1,opt,name=body_parameter,json=bodyParameter,oneof"` +} +type Parameter_NonBodyParameter struct { + NonBodyParameter *NonBodyParameter `protobuf:"bytes,2,opt,name=non_body_parameter,json=nonBodyParameter,oneof"` +} + +func (*Parameter_BodyParameter) isParameter_Oneof() {} +func (*Parameter_NonBodyParameter) isParameter_Oneof() {} + +func (m *Parameter) GetOneof() isParameter_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *Parameter) GetBodyParameter() *BodyParameter { + if x, ok := m.GetOneof().(*Parameter_BodyParameter); ok { + return x.BodyParameter + } + return nil +} + +func (m *Parameter) GetNonBodyParameter() *NonBodyParameter { + if x, ok := m.GetOneof().(*Parameter_NonBodyParameter); ok { + return x.NonBodyParameter + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Parameter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Parameter_OneofMarshaler, _Parameter_OneofUnmarshaler, _Parameter_OneofSizer, []interface{}{ + (*Parameter_BodyParameter)(nil), + (*Parameter_NonBodyParameter)(nil), + } +} + +func _Parameter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Parameter) + // oneof + switch x := m.Oneof.(type) { + case *Parameter_BodyParameter: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.BodyParameter); err != nil { + return err + } + case *Parameter_NonBodyParameter: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.NonBodyParameter); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("Parameter.Oneof has unexpected type %T", x) + } + return nil +} + +func _Parameter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Parameter) + switch tag { + case 1: // oneof.body_parameter + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(BodyParameter) + err := b.DecodeMessage(msg) + m.Oneof = &Parameter_BodyParameter{msg} + return true, err + case 2: // oneof.non_body_parameter + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(NonBodyParameter) + err := b.DecodeMessage(msg) + m.Oneof = &Parameter_NonBodyParameter{msg} + return true, err + default: + return false, nil + } +} + +func _Parameter_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Parameter) + // oneof + switch x := m.Oneof.(type) { + case *Parameter_BodyParameter: + s := proto.Size(x.BodyParameter) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Parameter_NonBodyParameter: + s := proto.Size(x.NonBodyParameter) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// One or more JSON representations for parameters +type ParameterDefinitions struct { + AdditionalProperties []*NamedParameter `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *ParameterDefinitions) Reset() { *m = ParameterDefinitions{} } +func (m *ParameterDefinitions) String() string { return proto.CompactTextString(m) } +func (*ParameterDefinitions) ProtoMessage() {} +func (*ParameterDefinitions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } + +func (m *ParameterDefinitions) GetAdditionalProperties() []*NamedParameter { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type ParametersItem struct { + // Types that are valid to be assigned to Oneof: + // *ParametersItem_Parameter + // *ParametersItem_JsonReference + Oneof isParametersItem_Oneof `protobuf_oneof:"oneof"` +} + +func (m *ParametersItem) Reset() { *m = ParametersItem{} } +func (m *ParametersItem) String() string { return proto.CompactTextString(m) } +func (*ParametersItem) ProtoMessage() {} +func (*ParametersItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } + +type isParametersItem_Oneof interface { + isParametersItem_Oneof() +} + +type ParametersItem_Parameter struct { + Parameter *Parameter `protobuf:"bytes,1,opt,name=parameter,oneof"` +} +type ParametersItem_JsonReference struct { + JsonReference *JsonReference `protobuf:"bytes,2,opt,name=json_reference,json=jsonReference,oneof"` +} + +func (*ParametersItem_Parameter) isParametersItem_Oneof() {} +func (*ParametersItem_JsonReference) isParametersItem_Oneof() {} + +func (m *ParametersItem) GetOneof() isParametersItem_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *ParametersItem) GetParameter() *Parameter { + if x, ok := m.GetOneof().(*ParametersItem_Parameter); ok { + return x.Parameter + } + return nil +} + +func (m *ParametersItem) GetJsonReference() *JsonReference { + if x, ok := m.GetOneof().(*ParametersItem_JsonReference); ok { + return x.JsonReference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ParametersItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ParametersItem_OneofMarshaler, _ParametersItem_OneofUnmarshaler, _ParametersItem_OneofSizer, []interface{}{ + (*ParametersItem_Parameter)(nil), + (*ParametersItem_JsonReference)(nil), + } +} + +func _ParametersItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ParametersItem) + // oneof + switch x := m.Oneof.(type) { + case *ParametersItem_Parameter: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Parameter); err != nil { + return err + } + case *ParametersItem_JsonReference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.JsonReference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ParametersItem.Oneof has unexpected type %T", x) + } + return nil +} + +func _ParametersItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ParametersItem) + switch tag { + case 1: // oneof.parameter + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Parameter) + err := b.DecodeMessage(msg) + m.Oneof = &ParametersItem_Parameter{msg} + return true, err + case 2: // oneof.json_reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(JsonReference) + err := b.DecodeMessage(msg) + m.Oneof = &ParametersItem_JsonReference{msg} + return true, err + default: + return false, nil + } +} + +func _ParametersItem_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ParametersItem) + // oneof + switch x := m.Oneof.(type) { + case *ParametersItem_Parameter: + s := proto.Size(x.Parameter) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ParametersItem_JsonReference: + s := proto.Size(x.JsonReference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type PathItem struct { + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref" json:"_ref,omitempty"` + Get *Operation `protobuf:"bytes,2,opt,name=get" json:"get,omitempty"` + Put *Operation `protobuf:"bytes,3,opt,name=put" json:"put,omitempty"` + Post *Operation `protobuf:"bytes,4,opt,name=post" json:"post,omitempty"` + Delete *Operation `protobuf:"bytes,5,opt,name=delete" json:"delete,omitempty"` + Options *Operation `protobuf:"bytes,6,opt,name=options" json:"options,omitempty"` + Head *Operation `protobuf:"bytes,7,opt,name=head" json:"head,omitempty"` + Patch *Operation `protobuf:"bytes,8,opt,name=patch" json:"patch,omitempty"` + // The parameters needed to send a valid API call. + Parameters []*ParametersItem `protobuf:"bytes,9,rep,name=parameters" json:"parameters,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,10,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *PathItem) Reset() { *m = PathItem{} } +func (m *PathItem) String() string { return proto.CompactTextString(m) } +func (*PathItem) ProtoMessage() {} +func (*PathItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } + +func (m *PathItem) GetXRef() string { + if m != nil { + return m.XRef + } + return "" +} + +func (m *PathItem) GetGet() *Operation { + if m != nil { + return m.Get + } + return nil +} + +func (m *PathItem) GetPut() *Operation { + if m != nil { + return m.Put + } + return nil +} + +func (m *PathItem) GetPost() *Operation { + if m != nil { + return m.Post + } + return nil +} + +func (m *PathItem) GetDelete() *Operation { + if m != nil { + return m.Delete + } + return nil +} + +func (m *PathItem) GetOptions() *Operation { + if m != nil { + return m.Options + } + return nil +} + +func (m *PathItem) GetHead() *Operation { + if m != nil { + return m.Head + } + return nil +} + +func (m *PathItem) GetPatch() *Operation { + if m != nil { + return m.Patch + } + return nil +} + +func (m *PathItem) GetParameters() []*ParametersItem { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *PathItem) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type PathParameterSubSchema struct { + // Determines whether or not this parameter is required or optional. + Required bool `protobuf:"varint,1,opt,name=required" json:"required,omitempty"` + // Determines the location of the parameter. + In string `protobuf:"bytes,2,opt,name=in" json:"in,omitempty"` + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The name of the parameter. + Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` + Type string `protobuf:"bytes,5,opt,name=type" json:"type,omitempty"` + Format string `protobuf:"bytes,6,opt,name=format" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,7,opt,name=items" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,8,opt,name=collection_format,json=collectionFormat" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,9,opt,name=default" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,10,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,11,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,12,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,13,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,14,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,15,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,16,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,17,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,18,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,19,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,20,rep,name=enum" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,21,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,22,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *PathParameterSubSchema) Reset() { *m = PathParameterSubSchema{} } +func (m *PathParameterSubSchema) String() string { return proto.CompactTextString(m) } +func (*PathParameterSubSchema) ProtoMessage() {} +func (*PathParameterSubSchema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } + +func (m *PathParameterSubSchema) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *PathParameterSubSchema) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *PathParameterSubSchema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *PathParameterSubSchema) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *PathParameterSubSchema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *PathParameterSubSchema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *PathParameterSubSchema) GetItems() *PrimitivesItems { + if m != nil { + return m.Items + } + return nil +} + +func (m *PathParameterSubSchema) GetCollectionFormat() string { + if m != nil { + return m.CollectionFormat + } + return "" +} + +func (m *PathParameterSubSchema) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *PathParameterSubSchema) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *PathParameterSubSchema) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *PathParameterSubSchema) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *PathParameterSubSchema) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *PathParameterSubSchema) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *PathParameterSubSchema) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *PathParameterSubSchema) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *PathParameterSubSchema) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *PathParameterSubSchema) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *PathParameterSubSchema) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *PathParameterSubSchema) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *PathParameterSubSchema) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *PathParameterSubSchema) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +// Relative paths to the individual endpoints. They must be relative to the 'basePath'. +type Paths struct { + VendorExtension []*NamedAny `protobuf:"bytes,1,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` + Path []*NamedPathItem `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"` +} + +func (m *Paths) Reset() { *m = Paths{} } +func (m *Paths) String() string { return proto.CompactTextString(m) } +func (*Paths) ProtoMessage() {} +func (*Paths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } + +func (m *Paths) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +func (m *Paths) GetPath() []*NamedPathItem { + if m != nil { + return m.Path + } + return nil +} + +type PrimitivesItems struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,3,opt,name=items" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,4,opt,name=collection_format,json=collectionFormat" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,5,opt,name=default" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,6,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,7,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,8,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,9,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,10,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,11,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,12,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,13,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,14,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,15,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,16,rep,name=enum" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,17,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,18,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *PrimitivesItems) Reset() { *m = PrimitivesItems{} } +func (m *PrimitivesItems) String() string { return proto.CompactTextString(m) } +func (*PrimitivesItems) ProtoMessage() {} +func (*PrimitivesItems) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } + +func (m *PrimitivesItems) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *PrimitivesItems) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *PrimitivesItems) GetItems() *PrimitivesItems { + if m != nil { + return m.Items + } + return nil +} + +func (m *PrimitivesItems) GetCollectionFormat() string { + if m != nil { + return m.CollectionFormat + } + return "" +} + +func (m *PrimitivesItems) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *PrimitivesItems) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *PrimitivesItems) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *PrimitivesItems) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *PrimitivesItems) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *PrimitivesItems) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *PrimitivesItems) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *PrimitivesItems) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *PrimitivesItems) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *PrimitivesItems) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *PrimitivesItems) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *PrimitivesItems) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *PrimitivesItems) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *PrimitivesItems) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Properties struct { + AdditionalProperties []*NamedSchema `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Properties) Reset() { *m = Properties{} } +func (m *Properties) String() string { return proto.CompactTextString(m) } +func (*Properties) ProtoMessage() {} +func (*Properties) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } + +func (m *Properties) GetAdditionalProperties() []*NamedSchema { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type QueryParameterSubSchema struct { + // Determines whether or not this parameter is required or optional. + Required bool `protobuf:"varint,1,opt,name=required" json:"required,omitempty"` + // Determines the location of the parameter. + In string `protobuf:"bytes,2,opt,name=in" json:"in,omitempty"` + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The name of the parameter. + Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` + // allows sending a parameter by name only or with an empty value. + AllowEmptyValue bool `protobuf:"varint,5,opt,name=allow_empty_value,json=allowEmptyValue" json:"allow_empty_value,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type" json:"type,omitempty"` + Format string `protobuf:"bytes,7,opt,name=format" json:"format,omitempty"` + Items *PrimitivesItems `protobuf:"bytes,8,opt,name=items" json:"items,omitempty"` + CollectionFormat string `protobuf:"bytes,9,opt,name=collection_format,json=collectionFormat" json:"collection_format,omitempty"` + Default *Any `protobuf:"bytes,10,opt,name=default" json:"default,omitempty"` + Maximum float64 `protobuf:"fixed64,11,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,13,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,17,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + Enum []*Any `protobuf:"bytes,21,rep,name=enum" json:"enum,omitempty"` + MultipleOf float64 `protobuf:"fixed64,22,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,23,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *QueryParameterSubSchema) Reset() { *m = QueryParameterSubSchema{} } +func (m *QueryParameterSubSchema) String() string { return proto.CompactTextString(m) } +func (*QueryParameterSubSchema) ProtoMessage() {} +func (*QueryParameterSubSchema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } + +func (m *QueryParameterSubSchema) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *QueryParameterSubSchema) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *QueryParameterSubSchema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *QueryParameterSubSchema) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *QueryParameterSubSchema) GetAllowEmptyValue() bool { + if m != nil { + return m.AllowEmptyValue + } + return false +} + +func (m *QueryParameterSubSchema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *QueryParameterSubSchema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *QueryParameterSubSchema) GetItems() *PrimitivesItems { + if m != nil { + return m.Items + } + return nil +} + +func (m *QueryParameterSubSchema) GetCollectionFormat() string { + if m != nil { + return m.CollectionFormat + } + return "" +} + +func (m *QueryParameterSubSchema) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *QueryParameterSubSchema) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *QueryParameterSubSchema) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *QueryParameterSubSchema) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *QueryParameterSubSchema) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *QueryParameterSubSchema) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *QueryParameterSubSchema) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *QueryParameterSubSchema) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *QueryParameterSubSchema) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *QueryParameterSubSchema) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *QueryParameterSubSchema) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *QueryParameterSubSchema) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *QueryParameterSubSchema) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *QueryParameterSubSchema) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type Response struct { + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Schema *SchemaItem `protobuf:"bytes,2,opt,name=schema" json:"schema,omitempty"` + Headers *Headers `protobuf:"bytes,3,opt,name=headers" json:"headers,omitempty"` + Examples *Examples `protobuf:"bytes,4,opt,name=examples" json:"examples,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,5,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Response) Reset() { *m = Response{} } +func (m *Response) String() string { return proto.CompactTextString(m) } +func (*Response) ProtoMessage() {} +func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } + +func (m *Response) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Response) GetSchema() *SchemaItem { + if m != nil { + return m.Schema + } + return nil +} + +func (m *Response) GetHeaders() *Headers { + if m != nil { + return m.Headers + } + return nil +} + +func (m *Response) GetExamples() *Examples { + if m != nil { + return m.Examples + } + return nil +} + +func (m *Response) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +// One or more JSON representations for parameters +type ResponseDefinitions struct { + AdditionalProperties []*NamedResponse `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *ResponseDefinitions) Reset() { *m = ResponseDefinitions{} } +func (m *ResponseDefinitions) String() string { return proto.CompactTextString(m) } +func (*ResponseDefinitions) ProtoMessage() {} +func (*ResponseDefinitions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } + +func (m *ResponseDefinitions) GetAdditionalProperties() []*NamedResponse { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type ResponseValue struct { + // Types that are valid to be assigned to Oneof: + // *ResponseValue_Response + // *ResponseValue_JsonReference + Oneof isResponseValue_Oneof `protobuf_oneof:"oneof"` +} + +func (m *ResponseValue) Reset() { *m = ResponseValue{} } +func (m *ResponseValue) String() string { return proto.CompactTextString(m) } +func (*ResponseValue) ProtoMessage() {} +func (*ResponseValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } + +type isResponseValue_Oneof interface { + isResponseValue_Oneof() +} + +type ResponseValue_Response struct { + Response *Response `protobuf:"bytes,1,opt,name=response,oneof"` +} +type ResponseValue_JsonReference struct { + JsonReference *JsonReference `protobuf:"bytes,2,opt,name=json_reference,json=jsonReference,oneof"` +} + +func (*ResponseValue_Response) isResponseValue_Oneof() {} +func (*ResponseValue_JsonReference) isResponseValue_Oneof() {} + +func (m *ResponseValue) GetOneof() isResponseValue_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *ResponseValue) GetResponse() *Response { + if x, ok := m.GetOneof().(*ResponseValue_Response); ok { + return x.Response + } + return nil +} + +func (m *ResponseValue) GetJsonReference() *JsonReference { + if x, ok := m.GetOneof().(*ResponseValue_JsonReference); ok { + return x.JsonReference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ResponseValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ResponseValue_OneofMarshaler, _ResponseValue_OneofUnmarshaler, _ResponseValue_OneofSizer, []interface{}{ + (*ResponseValue_Response)(nil), + (*ResponseValue_JsonReference)(nil), + } +} + +func _ResponseValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ResponseValue) + // oneof + switch x := m.Oneof.(type) { + case *ResponseValue_Response: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Response); err != nil { + return err + } + case *ResponseValue_JsonReference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.JsonReference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ResponseValue.Oneof has unexpected type %T", x) + } + return nil +} + +func _ResponseValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ResponseValue) + switch tag { + case 1: // oneof.response + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Response) + err := b.DecodeMessage(msg) + m.Oneof = &ResponseValue_Response{msg} + return true, err + case 2: // oneof.json_reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(JsonReference) + err := b.DecodeMessage(msg) + m.Oneof = &ResponseValue_JsonReference{msg} + return true, err + default: + return false, nil + } +} + +func _ResponseValue_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ResponseValue) + // oneof + switch x := m.Oneof.(type) { + case *ResponseValue_Response: + s := proto.Size(x.Response) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ResponseValue_JsonReference: + s := proto.Size(x.JsonReference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Response objects names can either be any valid HTTP status code or 'default'. +type Responses struct { + ResponseCode []*NamedResponseValue `protobuf:"bytes,1,rep,name=response_code,json=responseCode" json:"response_code,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,2,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Responses) Reset() { *m = Responses{} } +func (m *Responses) String() string { return proto.CompactTextString(m) } +func (*Responses) ProtoMessage() {} +func (*Responses) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } + +func (m *Responses) GetResponseCode() []*NamedResponseValue { + if m != nil { + return m.ResponseCode + } + return nil +} + +func (m *Responses) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +// A deterministic version of a JSON Schema object. +type Schema struct { + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref" json:"_ref,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` + Default *Any `protobuf:"bytes,5,opt,name=default" json:"default,omitempty"` + MultipleOf float64 `protobuf:"fixed64,6,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + Maximum float64 `protobuf:"fixed64,7,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,8,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,9,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,10,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,11,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,12,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,13,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,14,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,15,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,16,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + MaxProperties int64 `protobuf:"varint,17,opt,name=max_properties,json=maxProperties" json:"max_properties,omitempty"` + MinProperties int64 `protobuf:"varint,18,opt,name=min_properties,json=minProperties" json:"min_properties,omitempty"` + Required []string `protobuf:"bytes,19,rep,name=required" json:"required,omitempty"` + Enum []*Any `protobuf:"bytes,20,rep,name=enum" json:"enum,omitempty"` + AdditionalProperties *AdditionalPropertiesItem `protobuf:"bytes,21,opt,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` + Type *TypeItem `protobuf:"bytes,22,opt,name=type" json:"type,omitempty"` + Items *ItemsItem `protobuf:"bytes,23,opt,name=items" json:"items,omitempty"` + AllOf []*Schema `protobuf:"bytes,24,rep,name=all_of,json=allOf" json:"all_of,omitempty"` + Properties *Properties `protobuf:"bytes,25,opt,name=properties" json:"properties,omitempty"` + Discriminator string `protobuf:"bytes,26,opt,name=discriminator" json:"discriminator,omitempty"` + ReadOnly bool `protobuf:"varint,27,opt,name=read_only,json=readOnly" json:"read_only,omitempty"` + Xml *Xml `protobuf:"bytes,28,opt,name=xml" json:"xml,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,29,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + Example *Any `protobuf:"bytes,30,opt,name=example" json:"example,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,31,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Schema) Reset() { *m = Schema{} } +func (m *Schema) String() string { return proto.CompactTextString(m) } +func (*Schema) ProtoMessage() {} +func (*Schema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } + +func (m *Schema) GetXRef() string { + if m != nil { + return m.XRef + } + return "" +} + +func (m *Schema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *Schema) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *Schema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Schema) GetDefault() *Any { + if m != nil { + return m.Default + } + return nil +} + +func (m *Schema) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *Schema) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *Schema) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *Schema) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *Schema) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *Schema) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *Schema) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *Schema) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *Schema) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *Schema) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *Schema) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *Schema) GetMaxProperties() int64 { + if m != nil { + return m.MaxProperties + } + return 0 +} + +func (m *Schema) GetMinProperties() int64 { + if m != nil { + return m.MinProperties + } + return 0 +} + +func (m *Schema) GetRequired() []string { + if m != nil { + return m.Required + } + return nil +} + +func (m *Schema) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *Schema) GetAdditionalProperties() *AdditionalPropertiesItem { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +func (m *Schema) GetType() *TypeItem { + if m != nil { + return m.Type + } + return nil +} + +func (m *Schema) GetItems() *ItemsItem { + if m != nil { + return m.Items + } + return nil +} + +func (m *Schema) GetAllOf() []*Schema { + if m != nil { + return m.AllOf + } + return nil +} + +func (m *Schema) GetProperties() *Properties { + if m != nil { + return m.Properties + } + return nil +} + +func (m *Schema) GetDiscriminator() string { + if m != nil { + return m.Discriminator + } + return "" +} + +func (m *Schema) GetReadOnly() bool { + if m != nil { + return m.ReadOnly + } + return false +} + +func (m *Schema) GetXml() *Xml { + if m != nil { + return m.Xml + } + return nil +} + +func (m *Schema) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Schema) GetExample() *Any { + if m != nil { + return m.Example + } + return nil +} + +func (m *Schema) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type SchemaItem struct { + // Types that are valid to be assigned to Oneof: + // *SchemaItem_Schema + // *SchemaItem_FileSchema + Oneof isSchemaItem_Oneof `protobuf_oneof:"oneof"` +} + +func (m *SchemaItem) Reset() { *m = SchemaItem{} } +func (m *SchemaItem) String() string { return proto.CompactTextString(m) } +func (*SchemaItem) ProtoMessage() {} +func (*SchemaItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } + +type isSchemaItem_Oneof interface { + isSchemaItem_Oneof() +} + +type SchemaItem_Schema struct { + Schema *Schema `protobuf:"bytes,1,opt,name=schema,oneof"` +} +type SchemaItem_FileSchema struct { + FileSchema *FileSchema `protobuf:"bytes,2,opt,name=file_schema,json=fileSchema,oneof"` +} + +func (*SchemaItem_Schema) isSchemaItem_Oneof() {} +func (*SchemaItem_FileSchema) isSchemaItem_Oneof() {} + +func (m *SchemaItem) GetOneof() isSchemaItem_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *SchemaItem) GetSchema() *Schema { + if x, ok := m.GetOneof().(*SchemaItem_Schema); ok { + return x.Schema + } + return nil +} + +func (m *SchemaItem) GetFileSchema() *FileSchema { + if x, ok := m.GetOneof().(*SchemaItem_FileSchema); ok { + return x.FileSchema + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SchemaItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SchemaItem_OneofMarshaler, _SchemaItem_OneofUnmarshaler, _SchemaItem_OneofSizer, []interface{}{ + (*SchemaItem_Schema)(nil), + (*SchemaItem_FileSchema)(nil), + } +} + +func _SchemaItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SchemaItem) + // oneof + switch x := m.Oneof.(type) { + case *SchemaItem_Schema: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Schema); err != nil { + return err + } + case *SchemaItem_FileSchema: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.FileSchema); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SchemaItem.Oneof has unexpected type %T", x) + } + return nil +} + +func _SchemaItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SchemaItem) + switch tag { + case 1: // oneof.schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Schema) + err := b.DecodeMessage(msg) + m.Oneof = &SchemaItem_Schema{msg} + return true, err + case 2: // oneof.file_schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FileSchema) + err := b.DecodeMessage(msg) + m.Oneof = &SchemaItem_FileSchema{msg} + return true, err + default: + return false, nil + } +} + +func _SchemaItem_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SchemaItem) + // oneof + switch x := m.Oneof.(type) { + case *SchemaItem_Schema: + s := proto.Size(x.Schema) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SchemaItem_FileSchema: + s := proto.Size(x.FileSchema) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type SecurityDefinitions struct { + AdditionalProperties []*NamedSecurityDefinitionsItem `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *SecurityDefinitions) Reset() { *m = SecurityDefinitions{} } +func (m *SecurityDefinitions) String() string { return proto.CompactTextString(m) } +func (*SecurityDefinitions) ProtoMessage() {} +func (*SecurityDefinitions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } + +func (m *SecurityDefinitions) GetAdditionalProperties() []*NamedSecurityDefinitionsItem { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type SecurityDefinitionsItem struct { + // Types that are valid to be assigned to Oneof: + // *SecurityDefinitionsItem_BasicAuthenticationSecurity + // *SecurityDefinitionsItem_ApiKeySecurity + // *SecurityDefinitionsItem_Oauth2ImplicitSecurity + // *SecurityDefinitionsItem_Oauth2PasswordSecurity + // *SecurityDefinitionsItem_Oauth2ApplicationSecurity + // *SecurityDefinitionsItem_Oauth2AccessCodeSecurity + Oneof isSecurityDefinitionsItem_Oneof `protobuf_oneof:"oneof"` +} + +func (m *SecurityDefinitionsItem) Reset() { *m = SecurityDefinitionsItem{} } +func (m *SecurityDefinitionsItem) String() string { return proto.CompactTextString(m) } +func (*SecurityDefinitionsItem) ProtoMessage() {} +func (*SecurityDefinitionsItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } + +type isSecurityDefinitionsItem_Oneof interface { + isSecurityDefinitionsItem_Oneof() +} + +type SecurityDefinitionsItem_BasicAuthenticationSecurity struct { + BasicAuthenticationSecurity *BasicAuthenticationSecurity `protobuf:"bytes,1,opt,name=basic_authentication_security,json=basicAuthenticationSecurity,oneof"` +} +type SecurityDefinitionsItem_ApiKeySecurity struct { + ApiKeySecurity *ApiKeySecurity `protobuf:"bytes,2,opt,name=api_key_security,json=apiKeySecurity,oneof"` +} +type SecurityDefinitionsItem_Oauth2ImplicitSecurity struct { + Oauth2ImplicitSecurity *Oauth2ImplicitSecurity `protobuf:"bytes,3,opt,name=oauth2_implicit_security,json=oauth2ImplicitSecurity,oneof"` +} +type SecurityDefinitionsItem_Oauth2PasswordSecurity struct { + Oauth2PasswordSecurity *Oauth2PasswordSecurity `protobuf:"bytes,4,opt,name=oauth2_password_security,json=oauth2PasswordSecurity,oneof"` +} +type SecurityDefinitionsItem_Oauth2ApplicationSecurity struct { + Oauth2ApplicationSecurity *Oauth2ApplicationSecurity `protobuf:"bytes,5,opt,name=oauth2_application_security,json=oauth2ApplicationSecurity,oneof"` +} +type SecurityDefinitionsItem_Oauth2AccessCodeSecurity struct { + Oauth2AccessCodeSecurity *Oauth2AccessCodeSecurity `protobuf:"bytes,6,opt,name=oauth2_access_code_security,json=oauth2AccessCodeSecurity,oneof"` +} + +func (*SecurityDefinitionsItem_BasicAuthenticationSecurity) isSecurityDefinitionsItem_Oneof() {} +func (*SecurityDefinitionsItem_ApiKeySecurity) isSecurityDefinitionsItem_Oneof() {} +func (*SecurityDefinitionsItem_Oauth2ImplicitSecurity) isSecurityDefinitionsItem_Oneof() {} +func (*SecurityDefinitionsItem_Oauth2PasswordSecurity) isSecurityDefinitionsItem_Oneof() {} +func (*SecurityDefinitionsItem_Oauth2ApplicationSecurity) isSecurityDefinitionsItem_Oneof() {} +func (*SecurityDefinitionsItem_Oauth2AccessCodeSecurity) isSecurityDefinitionsItem_Oneof() {} + +func (m *SecurityDefinitionsItem) GetOneof() isSecurityDefinitionsItem_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *SecurityDefinitionsItem) GetBasicAuthenticationSecurity() *BasicAuthenticationSecurity { + if x, ok := m.GetOneof().(*SecurityDefinitionsItem_BasicAuthenticationSecurity); ok { + return x.BasicAuthenticationSecurity + } + return nil +} + +func (m *SecurityDefinitionsItem) GetApiKeySecurity() *ApiKeySecurity { + if x, ok := m.GetOneof().(*SecurityDefinitionsItem_ApiKeySecurity); ok { + return x.ApiKeySecurity + } + return nil +} + +func (m *SecurityDefinitionsItem) GetOauth2ImplicitSecurity() *Oauth2ImplicitSecurity { + if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2ImplicitSecurity); ok { + return x.Oauth2ImplicitSecurity + } + return nil +} + +func (m *SecurityDefinitionsItem) GetOauth2PasswordSecurity() *Oauth2PasswordSecurity { + if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2PasswordSecurity); ok { + return x.Oauth2PasswordSecurity + } + return nil +} + +func (m *SecurityDefinitionsItem) GetOauth2ApplicationSecurity() *Oauth2ApplicationSecurity { + if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2ApplicationSecurity); ok { + return x.Oauth2ApplicationSecurity + } + return nil +} + +func (m *SecurityDefinitionsItem) GetOauth2AccessCodeSecurity() *Oauth2AccessCodeSecurity { + if x, ok := m.GetOneof().(*SecurityDefinitionsItem_Oauth2AccessCodeSecurity); ok { + return x.Oauth2AccessCodeSecurity + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SecurityDefinitionsItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SecurityDefinitionsItem_OneofMarshaler, _SecurityDefinitionsItem_OneofUnmarshaler, _SecurityDefinitionsItem_OneofSizer, []interface{}{ + (*SecurityDefinitionsItem_BasicAuthenticationSecurity)(nil), + (*SecurityDefinitionsItem_ApiKeySecurity)(nil), + (*SecurityDefinitionsItem_Oauth2ImplicitSecurity)(nil), + (*SecurityDefinitionsItem_Oauth2PasswordSecurity)(nil), + (*SecurityDefinitionsItem_Oauth2ApplicationSecurity)(nil), + (*SecurityDefinitionsItem_Oauth2AccessCodeSecurity)(nil), + } +} + +func _SecurityDefinitionsItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SecurityDefinitionsItem) + // oneof + switch x := m.Oneof.(type) { + case *SecurityDefinitionsItem_BasicAuthenticationSecurity: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.BasicAuthenticationSecurity); err != nil { + return err + } + case *SecurityDefinitionsItem_ApiKeySecurity: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ApiKeySecurity); err != nil { + return err + } + case *SecurityDefinitionsItem_Oauth2ImplicitSecurity: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Oauth2ImplicitSecurity); err != nil { + return err + } + case *SecurityDefinitionsItem_Oauth2PasswordSecurity: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Oauth2PasswordSecurity); err != nil { + return err + } + case *SecurityDefinitionsItem_Oauth2ApplicationSecurity: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Oauth2ApplicationSecurity); err != nil { + return err + } + case *SecurityDefinitionsItem_Oauth2AccessCodeSecurity: + b.EncodeVarint(6<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Oauth2AccessCodeSecurity); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SecurityDefinitionsItem.Oneof has unexpected type %T", x) + } + return nil +} + +func _SecurityDefinitionsItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SecurityDefinitionsItem) + switch tag { + case 1: // oneof.basic_authentication_security + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(BasicAuthenticationSecurity) + err := b.DecodeMessage(msg) + m.Oneof = &SecurityDefinitionsItem_BasicAuthenticationSecurity{msg} + return true, err + case 2: // oneof.api_key_security + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ApiKeySecurity) + err := b.DecodeMessage(msg) + m.Oneof = &SecurityDefinitionsItem_ApiKeySecurity{msg} + return true, err + case 3: // oneof.oauth2_implicit_security + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Oauth2ImplicitSecurity) + err := b.DecodeMessage(msg) + m.Oneof = &SecurityDefinitionsItem_Oauth2ImplicitSecurity{msg} + return true, err + case 4: // oneof.oauth2_password_security + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Oauth2PasswordSecurity) + err := b.DecodeMessage(msg) + m.Oneof = &SecurityDefinitionsItem_Oauth2PasswordSecurity{msg} + return true, err + case 5: // oneof.oauth2_application_security + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Oauth2ApplicationSecurity) + err := b.DecodeMessage(msg) + m.Oneof = &SecurityDefinitionsItem_Oauth2ApplicationSecurity{msg} + return true, err + case 6: // oneof.oauth2_access_code_security + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Oauth2AccessCodeSecurity) + err := b.DecodeMessage(msg) + m.Oneof = &SecurityDefinitionsItem_Oauth2AccessCodeSecurity{msg} + return true, err + default: + return false, nil + } +} + +func _SecurityDefinitionsItem_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SecurityDefinitionsItem) + // oneof + switch x := m.Oneof.(type) { + case *SecurityDefinitionsItem_BasicAuthenticationSecurity: + s := proto.Size(x.BasicAuthenticationSecurity) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SecurityDefinitionsItem_ApiKeySecurity: + s := proto.Size(x.ApiKeySecurity) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SecurityDefinitionsItem_Oauth2ImplicitSecurity: + s := proto.Size(x.Oauth2ImplicitSecurity) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SecurityDefinitionsItem_Oauth2PasswordSecurity: + s := proto.Size(x.Oauth2PasswordSecurity) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SecurityDefinitionsItem_Oauth2ApplicationSecurity: + s := proto.Size(x.Oauth2ApplicationSecurity) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SecurityDefinitionsItem_Oauth2AccessCodeSecurity: + s := proto.Size(x.Oauth2AccessCodeSecurity) + n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type SecurityRequirement struct { + AdditionalProperties []*NamedStringArray `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *SecurityRequirement) Reset() { *m = SecurityRequirement{} } +func (m *SecurityRequirement) String() string { return proto.CompactTextString(m) } +func (*SecurityRequirement) ProtoMessage() {} +func (*SecurityRequirement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } + +func (m *SecurityRequirement) GetAdditionalProperties() []*NamedStringArray { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type StringArray struct { + Value []string `protobuf:"bytes,1,rep,name=value" json:"value,omitempty"` +} + +func (m *StringArray) Reset() { *m = StringArray{} } +func (m *StringArray) String() string { return proto.CompactTextString(m) } +func (*StringArray) ProtoMessage() {} +func (*StringArray) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } + +func (m *StringArray) GetValue() []string { + if m != nil { + return m.Value + } + return nil +} + +type Tag struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,3,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,4,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Tag) Reset() { *m = Tag{} } +func (m *Tag) String() string { return proto.CompactTextString(m) } +func (*Tag) ProtoMessage() {} +func (*Tag) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } + +func (m *Tag) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Tag) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Tag) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Tag) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +type TypeItem struct { + Value []string `protobuf:"bytes,1,rep,name=value" json:"value,omitempty"` +} + +func (m *TypeItem) Reset() { *m = TypeItem{} } +func (m *TypeItem) String() string { return proto.CompactTextString(m) } +func (*TypeItem) ProtoMessage() {} +func (*TypeItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } + +func (m *TypeItem) GetValue() []string { + if m != nil { + return m.Value + } + return nil +} + +// Any property starting with x- is valid. +type VendorExtension struct { + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *VendorExtension) Reset() { *m = VendorExtension{} } +func (m *VendorExtension) String() string { return proto.CompactTextString(m) } +func (*VendorExtension) ProtoMessage() {} +func (*VendorExtension) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } + +func (m *VendorExtension) GetAdditionalProperties() []*NamedAny { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type Xml struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace" json:"namespace,omitempty"` + Prefix string `protobuf:"bytes,3,opt,name=prefix" json:"prefix,omitempty"` + Attribute bool `protobuf:"varint,4,opt,name=attribute" json:"attribute,omitempty"` + Wrapped bool `protobuf:"varint,5,opt,name=wrapped" json:"wrapped,omitempty"` + VendorExtension []*NamedAny `protobuf:"bytes,6,rep,name=vendor_extension,json=vendorExtension" json:"vendor_extension,omitempty"` +} + +func (m *Xml) Reset() { *m = Xml{} } +func (m *Xml) String() string { return proto.CompactTextString(m) } +func (*Xml) ProtoMessage() {} +func (*Xml) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } + +func (m *Xml) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Xml) GetNamespace() string { + if m != nil { + return m.Namespace + } + return "" +} + +func (m *Xml) GetPrefix() string { + if m != nil { + return m.Prefix + } + return "" +} + +func (m *Xml) GetAttribute() bool { + if m != nil { + return m.Attribute + } + return false +} + +func (m *Xml) GetWrapped() bool { + if m != nil { + return m.Wrapped + } + return false +} + +func (m *Xml) GetVendorExtension() []*NamedAny { + if m != nil { + return m.VendorExtension + } + return nil +} + +func init() { + proto.RegisterType((*AdditionalPropertiesItem)(nil), "openapi.v2.AdditionalPropertiesItem") + proto.RegisterType((*Any)(nil), "openapi.v2.Any") + proto.RegisterType((*ApiKeySecurity)(nil), "openapi.v2.ApiKeySecurity") + proto.RegisterType((*BasicAuthenticationSecurity)(nil), "openapi.v2.BasicAuthenticationSecurity") + proto.RegisterType((*BodyParameter)(nil), "openapi.v2.BodyParameter") + proto.RegisterType((*Contact)(nil), "openapi.v2.Contact") + proto.RegisterType((*Default)(nil), "openapi.v2.Default") + proto.RegisterType((*Definitions)(nil), "openapi.v2.Definitions") + proto.RegisterType((*Document)(nil), "openapi.v2.Document") + proto.RegisterType((*Examples)(nil), "openapi.v2.Examples") + proto.RegisterType((*ExternalDocs)(nil), "openapi.v2.ExternalDocs") + proto.RegisterType((*FileSchema)(nil), "openapi.v2.FileSchema") + proto.RegisterType((*FormDataParameterSubSchema)(nil), "openapi.v2.FormDataParameterSubSchema") + proto.RegisterType((*Header)(nil), "openapi.v2.Header") + proto.RegisterType((*HeaderParameterSubSchema)(nil), "openapi.v2.HeaderParameterSubSchema") + proto.RegisterType((*Headers)(nil), "openapi.v2.Headers") + proto.RegisterType((*Info)(nil), "openapi.v2.Info") + proto.RegisterType((*ItemsItem)(nil), "openapi.v2.ItemsItem") + proto.RegisterType((*JsonReference)(nil), "openapi.v2.JsonReference") + proto.RegisterType((*License)(nil), "openapi.v2.License") + proto.RegisterType((*NamedAny)(nil), "openapi.v2.NamedAny") + proto.RegisterType((*NamedHeader)(nil), "openapi.v2.NamedHeader") + proto.RegisterType((*NamedParameter)(nil), "openapi.v2.NamedParameter") + proto.RegisterType((*NamedPathItem)(nil), "openapi.v2.NamedPathItem") + proto.RegisterType((*NamedResponse)(nil), "openapi.v2.NamedResponse") + proto.RegisterType((*NamedResponseValue)(nil), "openapi.v2.NamedResponseValue") + proto.RegisterType((*NamedSchema)(nil), "openapi.v2.NamedSchema") + proto.RegisterType((*NamedSecurityDefinitionsItem)(nil), "openapi.v2.NamedSecurityDefinitionsItem") + proto.RegisterType((*NamedString)(nil), "openapi.v2.NamedString") + proto.RegisterType((*NamedStringArray)(nil), "openapi.v2.NamedStringArray") + proto.RegisterType((*NonBodyParameter)(nil), "openapi.v2.NonBodyParameter") + proto.RegisterType((*Oauth2AccessCodeSecurity)(nil), "openapi.v2.Oauth2AccessCodeSecurity") + proto.RegisterType((*Oauth2ApplicationSecurity)(nil), "openapi.v2.Oauth2ApplicationSecurity") + proto.RegisterType((*Oauth2ImplicitSecurity)(nil), "openapi.v2.Oauth2ImplicitSecurity") + proto.RegisterType((*Oauth2PasswordSecurity)(nil), "openapi.v2.Oauth2PasswordSecurity") + proto.RegisterType((*Oauth2Scopes)(nil), "openapi.v2.Oauth2Scopes") + proto.RegisterType((*Operation)(nil), "openapi.v2.Operation") + proto.RegisterType((*Parameter)(nil), "openapi.v2.Parameter") + proto.RegisterType((*ParameterDefinitions)(nil), "openapi.v2.ParameterDefinitions") + proto.RegisterType((*ParametersItem)(nil), "openapi.v2.ParametersItem") + proto.RegisterType((*PathItem)(nil), "openapi.v2.PathItem") + proto.RegisterType((*PathParameterSubSchema)(nil), "openapi.v2.PathParameterSubSchema") + proto.RegisterType((*Paths)(nil), "openapi.v2.Paths") + proto.RegisterType((*PrimitivesItems)(nil), "openapi.v2.PrimitivesItems") + proto.RegisterType((*Properties)(nil), "openapi.v2.Properties") + proto.RegisterType((*QueryParameterSubSchema)(nil), "openapi.v2.QueryParameterSubSchema") + proto.RegisterType((*Response)(nil), "openapi.v2.Response") + proto.RegisterType((*ResponseDefinitions)(nil), "openapi.v2.ResponseDefinitions") + proto.RegisterType((*ResponseValue)(nil), "openapi.v2.ResponseValue") + proto.RegisterType((*Responses)(nil), "openapi.v2.Responses") + proto.RegisterType((*Schema)(nil), "openapi.v2.Schema") + proto.RegisterType((*SchemaItem)(nil), "openapi.v2.SchemaItem") + proto.RegisterType((*SecurityDefinitions)(nil), "openapi.v2.SecurityDefinitions") + proto.RegisterType((*SecurityDefinitionsItem)(nil), "openapi.v2.SecurityDefinitionsItem") + proto.RegisterType((*SecurityRequirement)(nil), "openapi.v2.SecurityRequirement") + proto.RegisterType((*StringArray)(nil), "openapi.v2.StringArray") + proto.RegisterType((*Tag)(nil), "openapi.v2.Tag") + proto.RegisterType((*TypeItem)(nil), "openapi.v2.TypeItem") + proto.RegisterType((*VendorExtension)(nil), "openapi.v2.VendorExtension") + proto.RegisterType((*Xml)(nil), "openapi.v2.Xml") +} + +func init() { proto.RegisterFile("OpenAPIv2/OpenAPIv2.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 3129 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x3b, 0x4b, 0x73, 0x1c, 0x57, + 0xd5, 0xf3, 0x7e, 0x1c, 0x69, 0x46, 0xa3, 0x96, 0x2c, 0xb7, 0x24, 0xc7, 0x71, 0xe4, 0x3c, 0x6c, + 0xe7, 0xb3, 0x9c, 0x4f, 0x29, 0x48, 0x05, 0x2a, 0x05, 0xf2, 0xab, 0xc6, 0xc4, 0x44, 0x4a, 0xcb, + 0x0e, 0x09, 0x04, 0xba, 0xae, 0x66, 0xee, 0x48, 0x9d, 0x74, 0xf7, 0x6d, 0x77, 0xf7, 0xc8, 0x1a, + 0x16, 0x2c, 0xa0, 0x8a, 0x35, 0x50, 0x59, 0x53, 0x15, 0x16, 0x14, 0x55, 0x59, 0xb0, 0x62, 0xc5, + 0x1f, 0x60, 0xc7, 0x3f, 0x60, 0x0d, 0x5b, 0xaa, 0x58, 0x51, 0x3c, 0xea, 0xbe, 0xfa, 0x31, 0x7d, + 0x7b, 0x1e, 0x96, 0x0b, 0x28, 0xd0, 0x6a, 0xe6, 0xde, 0x73, 0xee, 0xb9, 0xa7, 0x4f, 0x9f, 0xd7, + 0x3d, 0xe7, 0x36, 0xac, 0xef, 0x79, 0xd8, 0xdd, 0xdd, 0x7f, 0x70, 0xb2, 0x73, 0x2b, 0xfa, 0xb7, + 0xed, 0xf9, 0x24, 0x24, 0x1a, 0x10, 0x0f, 0xbb, 0xc8, 0xb3, 0xb6, 0x4f, 0x76, 0x36, 0xd6, 0x8f, + 0x08, 0x39, 0xb2, 0xf1, 0x2d, 0x06, 0x39, 0x1c, 0x0e, 0x6e, 0x21, 0x77, 0xc4, 0xd1, 0xb6, 0x1c, + 0xd0, 0x77, 0xfb, 0x7d, 0x2b, 0xb4, 0x88, 0x8b, 0xec, 0x7d, 0x9f, 0x78, 0xd8, 0x0f, 0x2d, 0x1c, + 0x3c, 0x08, 0xb1, 0xa3, 0xfd, 0x1f, 0xd4, 0x82, 0xde, 0x31, 0x76, 0x90, 0x5e, 0xbc, 0x52, 0xbc, + 0xb6, 0xb0, 0xa3, 0x6d, 0xc7, 0x34, 0xb7, 0x0f, 0x18, 0xa4, 0x5b, 0x30, 0x04, 0x8e, 0xb6, 0x01, + 0xf5, 0x43, 0x42, 0x6c, 0x8c, 0x5c, 0xbd, 0x74, 0xa5, 0x78, 0xad, 0xd1, 0x2d, 0x18, 0x72, 0xe2, + 0x76, 0x1d, 0xaa, 0xc4, 0xc5, 0x64, 0xb0, 0x75, 0x0f, 0xca, 0xbb, 0xee, 0x48, 0xbb, 0x01, 0xd5, + 0x13, 0x64, 0x0f, 0xb1, 0x20, 0xbc, 0xba, 0xcd, 0x19, 0xdc, 0x96, 0x0c, 0x6e, 0xef, 0xba, 0x23, + 0x83, 0xa3, 0x68, 0x1a, 0x54, 0x46, 0xc8, 0xb1, 0x19, 0xd1, 0xa6, 0xc1, 0xfe, 0x6f, 0x7d, 0x51, + 0x84, 0xf6, 0xae, 0x67, 0xbd, 0x8b, 0x47, 0x07, 0xb8, 0x37, 0xf4, 0xad, 0x70, 0x44, 0xd1, 0xc2, + 0x91, 0xc7, 0x29, 0x36, 0x0d, 0xf6, 0x9f, 0xce, 0xb9, 0xc8, 0xc1, 0x72, 0x29, 0xfd, 0xaf, 0xb5, + 0xa1, 0x64, 0xb9, 0x7a, 0x99, 0xcd, 0x94, 0x2c, 0x57, 0xbb, 0x02, 0x0b, 0x7d, 0x1c, 0xf4, 0x7c, + 0xcb, 0xa3, 0x32, 0xd0, 0x2b, 0x0c, 0x90, 0x9c, 0xd2, 0xbe, 0x06, 0x9d, 0x13, 0xec, 0xf6, 0x89, + 0x6f, 0xe2, 0xd3, 0x10, 0xbb, 0x01, 0x45, 0xab, 0x5e, 0x29, 0x33, 0xbe, 0x13, 0x02, 0x79, 0x0f, + 0x39, 0xb8, 0x4f, 0xf9, 0x5e, 0xe2, 0xd8, 0xf7, 0x24, 0xf2, 0xd6, 0x67, 0x45, 0xd8, 0xbc, 0x8d, + 0x02, 0xab, 0xb7, 0x3b, 0x0c, 0x8f, 0xb1, 0x1b, 0x5a, 0x3d, 0x44, 0x09, 0x4f, 0x64, 0x7d, 0x8c, + 0xad, 0xd2, 0x6c, 0x6c, 0x95, 0xe7, 0x61, 0xeb, 0x0f, 0x45, 0x68, 0xdd, 0x26, 0xfd, 0xd1, 0x3e, + 0xf2, 0x91, 0x83, 0x43, 0xec, 0x8f, 0x6f, 0x5a, 0xcc, 0x6e, 0x3a, 0x8b, 0x44, 0x37, 0xa0, 0xe1, + 0xe3, 0x27, 0x43, 0xcb, 0xc7, 0x7d, 0x26, 0xce, 0x86, 0x11, 0x8d, 0xb5, 0x1b, 0x91, 0x4a, 0x55, + 0xf3, 0x54, 0x2a, 0x52, 0x28, 0xd5, 0x03, 0xd6, 0xe6, 0x79, 0xc0, 0x1f, 0x17, 0xa1, 0x7e, 0x87, + 0xb8, 0x21, 0xea, 0x85, 0x11, 0xe3, 0xc5, 0x04, 0xe3, 0x1d, 0x28, 0x0f, 0x7d, 0xa9, 0x58, 0xf4, + 0xaf, 0xb6, 0x0a, 0x55, 0xec, 0x20, 0xcb, 0x16, 0x4f, 0xc3, 0x07, 0x4a, 0x46, 0x2a, 0xf3, 0x30, + 0xf2, 0x08, 0xea, 0x77, 0xf1, 0x00, 0x0d, 0xed, 0x50, 0x7b, 0x00, 0x17, 0x50, 0x64, 0x6f, 0xa6, + 0x17, 0x19, 0x9c, 0x5e, 0x9c, 0x40, 0x70, 0x15, 0x29, 0x4c, 0x74, 0xeb, 0x3b, 0xb0, 0x70, 0x17, + 0x0f, 0x2c, 0x97, 0x41, 0x02, 0xed, 0xe1, 0x64, 0xca, 0x17, 0x33, 0x94, 0x85, 0xb8, 0xd5, 0xc4, + 0xff, 0x58, 0x85, 0xc6, 0x5d, 0xd2, 0x1b, 0x3a, 0xd8, 0x0d, 0x35, 0x1d, 0xea, 0xc1, 0x53, 0x74, + 0x74, 0x84, 0x7d, 0x21, 0x3f, 0x39, 0xd4, 0x5e, 0x86, 0x8a, 0xe5, 0x0e, 0x08, 0x93, 0xe1, 0xc2, + 0x4e, 0x27, 0xb9, 0xc7, 0x03, 0x77, 0x40, 0x0c, 0x06, 0xa5, 0xc2, 0x3f, 0x26, 0x41, 0x28, 0xa4, + 0xca, 0xfe, 0x6b, 0x9b, 0xd0, 0x3c, 0x44, 0x01, 0x36, 0x3d, 0x14, 0x1e, 0x0b, 0xab, 0x6b, 0xd0, + 0x89, 0x7d, 0x14, 0x1e, 0xb3, 0x0d, 0x29, 0x77, 0x38, 0x60, 0x96, 0x46, 0x37, 0xe4, 0x43, 0xaa, + 0x5c, 0x3d, 0xe2, 0x06, 0x43, 0x0a, 0xaa, 0x31, 0x50, 0x34, 0xa6, 0x30, 0xcf, 0x27, 0xfd, 0x61, + 0x0f, 0x07, 0x7a, 0x9d, 0xc3, 0xe4, 0x58, 0x7b, 0x0d, 0xaa, 0x74, 0xa7, 0x40, 0x6f, 0x30, 0x4e, + 0x97, 0x93, 0x9c, 0xd2, 0x2d, 0x03, 0x83, 0xc3, 0xb5, 0xb7, 0xa9, 0x0d, 0x44, 0x52, 0xd5, 0x9b, + 0x0c, 0x3d, 0x25, 0xbc, 0x84, 0xd0, 0x8d, 0x24, 0xae, 0xf6, 0x75, 0x00, 0x4f, 0xda, 0x52, 0xa0, + 0x03, 0x5b, 0x79, 0x25, 0xbd, 0x91, 0x80, 0x26, 0x49, 0x24, 0xd6, 0x68, 0xef, 0x40, 0xd3, 0xc7, + 0x81, 0x47, 0xdc, 0x00, 0x07, 0xfa, 0x02, 0x23, 0xf0, 0x62, 0x92, 0x80, 0x21, 0x80, 0xc9, 0xf5, + 0xf1, 0x0a, 0xed, 0xab, 0xd0, 0x08, 0x84, 0x53, 0xd1, 0x17, 0xd9, 0x5b, 0x4f, 0xad, 0x96, 0x0e, + 0xc7, 0xe0, 0xd6, 0x48, 0x5f, 0xad, 0x11, 0x2d, 0xd0, 0x0c, 0x58, 0x95, 0xff, 0xcd, 0xa4, 0x04, + 0x5a, 0x59, 0x36, 0x24, 0xa1, 0x24, 0x1b, 0x2b, 0x41, 0x76, 0x52, 0xbb, 0x0a, 0x95, 0x10, 0x1d, + 0x05, 0x7a, 0x9b, 0x31, 0xb3, 0x94, 0xa4, 0xf1, 0x08, 0x1d, 0x19, 0x0c, 0xa8, 0xbd, 0x03, 0x2d, + 0x6a, 0x57, 0x3e, 0x55, 0xdb, 0x3e, 0xe9, 0x05, 0xfa, 0x12, 0xdb, 0x51, 0x4f, 0x62, 0xdf, 0x13, + 0x08, 0x77, 0x49, 0x2f, 0x30, 0x16, 0x71, 0x62, 0xa4, 0xb4, 0xce, 0xce, 0x3c, 0xd6, 0xf9, 0x18, + 0x1a, 0xf7, 0x4e, 0x91, 0xe3, 0xd9, 0x38, 0x78, 0x9e, 0xe6, 0xf9, 0xa3, 0x22, 0x2c, 0x26, 0xd9, + 0x9e, 0xc1, 0xbb, 0x66, 0x1d, 0xd2, 0x99, 0x9d, 0xfc, 0x3f, 0x4a, 0x00, 0xf7, 0x2d, 0x1b, 0x73, + 0x63, 0xd7, 0xd6, 0xa0, 0x36, 0x20, 0xbe, 0x83, 0x42, 0xb1, 0xbd, 0x18, 0x51, 0xc7, 0x17, 0x5a, + 0xa1, 0x2d, 0x1d, 0x3b, 0x1f, 0x8c, 0x73, 0x5c, 0xce, 0x72, 0x7c, 0x1d, 0xea, 0x7d, 0xee, 0xd9, + 0x98, 0x0d, 0x8f, 0xbd, 0x63, 0xca, 0x91, 0x84, 0xa7, 0xc2, 0x02, 0x37, 0xea, 0x38, 0x2c, 0xc8, + 0x08, 0x58, 0x4b, 0x44, 0xc0, 0x4d, 0x6a, 0x0b, 0xa8, 0x6f, 0x12, 0xd7, 0x1e, 0xe9, 0x75, 0x19, + 0x47, 0x50, 0x7f, 0xcf, 0xb5, 0x47, 0x59, 0x9d, 0x69, 0xcc, 0xa5, 0x33, 0xd7, 0xa1, 0x8e, 0xf9, + 0x2b, 0x17, 0x06, 0x9e, 0x65, 0x5b, 0xc0, 0x95, 0x6f, 0x00, 0xe6, 0x79, 0x03, 0x5f, 0xd4, 0x60, + 0xe3, 0x3e, 0xf1, 0x9d, 0xbb, 0x28, 0x44, 0x91, 0x03, 0x38, 0x18, 0x1e, 0x1e, 0xc8, 0xb4, 0x29, + 0x16, 0x4b, 0x71, 0x2c, 0x5a, 0xf2, 0xc8, 0x5a, 0xca, 0xcb, 0x55, 0xca, 0xf9, 0xf1, 0xb9, 0x92, + 0x08, 0x73, 0x37, 0x60, 0x19, 0xd9, 0x36, 0x79, 0x6a, 0x62, 0xc7, 0x0b, 0x47, 0x26, 0x4f, 0xbc, + 0xaa, 0x6c, 0xab, 0x25, 0x06, 0xb8, 0x47, 0xe7, 0x3f, 0x90, 0xc9, 0x56, 0xe6, 0x45, 0xc4, 0x3a, + 0x53, 0x4f, 0xe9, 0xcc, 0xff, 0x43, 0xd5, 0x0a, 0xb1, 0x23, 0x65, 0xbf, 0x99, 0xf2, 0x74, 0xbe, + 0xe5, 0x58, 0xa1, 0x75, 0xc2, 0x33, 0xc9, 0xc0, 0xe0, 0x98, 0xda, 0xeb, 0xb0, 0xdc, 0x23, 0xb6, + 0x8d, 0x7b, 0x94, 0x59, 0x53, 0x50, 0x6d, 0x32, 0xaa, 0x9d, 0x18, 0x70, 0x9f, 0xd3, 0x4f, 0xe8, + 0x16, 0x4c, 0xd1, 0x2d, 0x1d, 0xea, 0x0e, 0x3a, 0xb5, 0x9c, 0xa1, 0xc3, 0xbc, 0x66, 0xd1, 0x90, + 0x43, 0xba, 0x23, 0x3e, 0xed, 0xd9, 0xc3, 0xc0, 0x3a, 0xc1, 0xa6, 0xc4, 0x59, 0x64, 0x0f, 0xdf, + 0x89, 0x00, 0xdf, 0x14, 0xc8, 0x94, 0x8c, 0xe5, 0x32, 0x94, 0x96, 0x20, 0xc3, 0x87, 0x63, 0x64, + 0x04, 0x4e, 0x7b, 0x9c, 0x8c, 0x40, 0x7e, 0x01, 0xc0, 0x41, 0xa7, 0xa6, 0x8d, 0xdd, 0xa3, 0xf0, + 0x98, 0x79, 0xb3, 0xb2, 0xd1, 0x74, 0xd0, 0xe9, 0x43, 0x36, 0xc1, 0xc0, 0x96, 0x2b, 0xc1, 0x1d, + 0x01, 0xb6, 0x5c, 0x01, 0xd6, 0xa1, 0xee, 0xa1, 0x90, 0x2a, 0xab, 0xbe, 0xcc, 0x83, 0xad, 0x18, + 0x52, 0x8b, 0xa0, 0x74, 0xb9, 0xd0, 0x35, 0xb6, 0xae, 0xe1, 0xa0, 0x53, 0x26, 0x61, 0x06, 0xb4, + 0x5c, 0x01, 0x5c, 0x11, 0x40, 0xcb, 0xe5, 0xc0, 0x97, 0x60, 0x71, 0xe8, 0x5a, 0x4f, 0x86, 0x58, + 0xc0, 0x57, 0x19, 0xe7, 0x0b, 0x7c, 0x8e, 0xa3, 0x5c, 0x85, 0x0a, 0x76, 0x87, 0x8e, 0x7e, 0x21, + 0xeb, 0xaa, 0xa9, 0xa8, 0x19, 0x50, 0x7b, 0x11, 0x16, 0x9c, 0xa1, 0x1d, 0x5a, 0x9e, 0x8d, 0x4d, + 0x32, 0xd0, 0xd7, 0x98, 0x90, 0x40, 0x4e, 0xed, 0x0d, 0x94, 0xd6, 0x72, 0x71, 0x2e, 0x6b, 0xa9, + 0x42, 0xad, 0x8b, 0x51, 0x1f, 0xfb, 0xca, 0xb4, 0x38, 0xd6, 0xc5, 0x92, 0x5a, 0x17, 0xcb, 0x67, + 0xd3, 0xc5, 0xca, 0x74, 0x5d, 0xac, 0xce, 0xae, 0x8b, 0xb5, 0x19, 0x74, 0xb1, 0x3e, 0x5d, 0x17, + 0x1b, 0x33, 0xe8, 0x62, 0x73, 0x26, 0x5d, 0x84, 0xc9, 0xba, 0xb8, 0x30, 0x41, 0x17, 0x17, 0x27, + 0xe8, 0x62, 0x6b, 0x92, 0x2e, 0xb6, 0xa7, 0xe8, 0xe2, 0x52, 0xbe, 0x2e, 0x76, 0xe6, 0xd0, 0xc5, + 0xe5, 0x8c, 0x2e, 0x8e, 0x79, 0x4b, 0x6d, 0xb6, 0x23, 0xd4, 0xca, 0x3c, 0xda, 0xfa, 0xb7, 0x2a, + 0xe8, 0x5c, 0x5b, 0xff, 0x2d, 0x9e, 0x5d, 0x5a, 0x48, 0x55, 0x69, 0x21, 0x35, 0xb5, 0x85, 0xd4, + 0xcf, 0x66, 0x21, 0x8d, 0xe9, 0x16, 0xd2, 0x9c, 0xdd, 0x42, 0x60, 0x06, 0x0b, 0x59, 0x98, 0x6e, + 0x21, 0x8b, 0x33, 0x58, 0x48, 0x6b, 0x26, 0x0b, 0x69, 0x4f, 0xb6, 0x90, 0xa5, 0x09, 0x16, 0xd2, + 0x99, 0x60, 0x21, 0xcb, 0x93, 0x2c, 0x44, 0x9b, 0x62, 0x21, 0x2b, 0xf9, 0x16, 0xb2, 0x3a, 0x87, + 0x85, 0x5c, 0x98, 0xc9, 0x5b, 0xaf, 0xcd, 0xa3, 0xff, 0xdf, 0x82, 0x3a, 0x57, 0xff, 0x67, 0x38, + 0x7e, 0xf2, 0x85, 0x39, 0xc9, 0xf3, 0xe7, 0x25, 0xa8, 0xd0, 0x03, 0x64, 0x9c, 0x98, 0x16, 0x93, + 0x89, 0xa9, 0x0e, 0xf5, 0x13, 0xec, 0x07, 0x71, 0x65, 0x44, 0x0e, 0x67, 0x30, 0xa4, 0x6b, 0xd0, + 0x09, 0xb1, 0xef, 0x04, 0x26, 0x19, 0x98, 0x01, 0xf6, 0x4f, 0xac, 0x9e, 0x34, 0xaa, 0x36, 0x9b, + 0xdf, 0x1b, 0x1c, 0xf0, 0x59, 0xed, 0x26, 0xd4, 0x7b, 0xbc, 0x7c, 0x20, 0x9c, 0xfe, 0x4a, 0xf2, + 0x21, 0x44, 0x65, 0xc1, 0x90, 0x38, 0x14, 0xdd, 0xb6, 0x7a, 0xd8, 0x0d, 0x78, 0xfa, 0x34, 0x86, + 0xfe, 0x90, 0x83, 0x0c, 0x89, 0xa3, 0x14, 0x7e, 0x7d, 0x1e, 0xe1, 0xbf, 0x05, 0x4d, 0xa6, 0x0c, + 0xac, 0x56, 0x77, 0x23, 0x51, 0xab, 0x2b, 0x4f, 0x2e, 0xac, 0x6c, 0xdd, 0x85, 0xd6, 0x37, 0x02, + 0xe2, 0x1a, 0x78, 0x80, 0x7d, 0xec, 0xf6, 0xb0, 0xb6, 0x0c, 0x15, 0xd3, 0xc7, 0x03, 0x21, 0xe3, + 0xb2, 0x81, 0x07, 0xd3, 0xeb, 0x4f, 0x5b, 0x1e, 0xd4, 0xc5, 0x33, 0xcd, 0x58, 0x5c, 0x39, 0xf3, + 0x59, 0xe6, 0x1e, 0x34, 0x24, 0x50, 0xb9, 0xe5, 0x2b, 0xb2, 0xaa, 0x58, 0x52, 0x3b, 0x20, 0x0e, + 0xdd, 0x7a, 0x17, 0x16, 0x12, 0x0a, 0xa8, 0xa4, 0x74, 0x2d, 0x4d, 0x29, 0x25, 0x4c, 0xa1, 0xb7, + 0x82, 0xd8, 0xfb, 0xd0, 0x66, 0xc4, 0xe2, 0x22, 0x9a, 0x8a, 0xde, 0xeb, 0x69, 0x7a, 0x17, 0x94, + 0x45, 0x01, 0x49, 0x72, 0x0f, 0x5a, 0x82, 0x64, 0x78, 0xcc, 0xde, 0xad, 0x8a, 0xe2, 0x8d, 0x34, + 0xc5, 0xd5, 0xf1, 0x7a, 0x06, 0x5d, 0x38, 0x4e, 0x50, 0x56, 0x0f, 0xe6, 0x26, 0x28, 0x17, 0x4a, + 0x82, 0x1f, 0x81, 0x96, 0x22, 0x18, 0x9d, 0x1d, 0x32, 0x54, 0x6f, 0xa5, 0xa9, 0xae, 0xab, 0xa8, + 0xb2, 0xd5, 0xe3, 0x2f, 0x47, 0xc4, 0xd0, 0x79, 0x5f, 0x8e, 0xd0, 0x74, 0x41, 0xcc, 0x81, 0x4b, + 0x9c, 0x58, 0xb6, 0x34, 0x91, 0x2b, 0xd8, 0xb7, 0xd3, 0xd4, 0xaf, 0x4e, 0xa9, 0x7b, 0x24, 0xe5, + 0xfc, 0x96, 0xe4, 0x3d, 0xf4, 0x2d, 0xf7, 0x48, 0x49, 0x7d, 0x35, 0x49, 0xbd, 0x29, 0x17, 0x3e, + 0x86, 0x4e, 0x62, 0xe1, 0xae, 0xef, 0x23, 0xb5, 0x82, 0xdf, 0x4c, 0xf3, 0x96, 0xf2, 0xa9, 0x89, + 0xb5, 0x92, 0xec, 0x6f, 0xca, 0xd0, 0x79, 0x8f, 0xb8, 0xe9, 0x1a, 0x2f, 0x86, 0xcd, 0x63, 0xa6, + 0xc1, 0x66, 0x54, 0x77, 0x32, 0x83, 0xe1, 0xa1, 0x99, 0xaa, 0xf4, 0xbf, 0x9c, 0x55, 0xf8, 0x6c, + 0x82, 0xd3, 0x2d, 0x18, 0xfa, 0x71, 0x5e, 0xf2, 0x63, 0xc3, 0x65, 0x9a, 0x30, 0x98, 0x7d, 0x14, + 0x22, 0xf5, 0x4e, 0xfc, 0x19, 0x5e, 0x4d, 0xee, 0x94, 0x7f, 0x4c, 0xee, 0x16, 0x8c, 0x8d, 0x41, + 0xfe, 0x21, 0xfa, 0x10, 0x36, 0x9e, 0x0c, 0xb1, 0x3f, 0x52, 0xef, 0x54, 0xce, 0xbe, 0xc9, 0xf7, + 0x29, 0xb6, 0x72, 0x9b, 0x8b, 0x4f, 0xd4, 0x20, 0xcd, 0x84, 0x75, 0x0f, 0x85, 0xc7, 0xea, 0x2d, + 0x78, 0xf1, 0x63, 0x6b, 0xdc, 0x0a, 0x95, 0x3b, 0xac, 0x79, 0x4a, 0x48, 0xdc, 0x24, 0xf9, 0xbc, + 0x04, 0xfa, 0x1e, 0x1a, 0x86, 0xc7, 0x3b, 0xbb, 0xbd, 0x1e, 0x0e, 0x82, 0x3b, 0xa4, 0x8f, 0xa7, + 0xf5, 0x39, 0x06, 0x36, 0x79, 0x2a, 0xab, 0xf2, 0xf4, 0xbf, 0xf6, 0x06, 0x0d, 0x08, 0xc4, 0xc3, + 0xf2, 0x48, 0x94, 0x2a, 0x8d, 0x70, 0xea, 0x07, 0x0c, 0x6e, 0x08, 0x3c, 0x9a, 0x35, 0xd1, 0x69, + 0xe2, 0x5b, 0xdf, 0x67, 0xfd, 0x09, 0x93, 0xfa, 0x6f, 0x71, 0x20, 0x4a, 0x01, 0x1e, 0xfb, 0x36, + 0x4d, 0x60, 0x42, 0xf2, 0x29, 0xe6, 0x48, 0x3c, 0xff, 0x6c, 0xb0, 0x09, 0x0a, 0x1c, 0x0b, 0x1e, + 0xb5, 0xd9, 0x32, 0xef, 0xb9, 0x82, 0xdf, 0x5f, 0x8a, 0xb0, 0x2e, 0x64, 0xe4, 0x79, 0xf6, 0x2c, + 0x1d, 0x95, 0xe7, 0x23, 0xa4, 0xd4, 0x73, 0x57, 0x26, 0x3f, 0x77, 0x75, 0xb6, 0xe7, 0x9e, 0xab, + 0xa7, 0xf1, 0xc3, 0x12, 0xac, 0x71, 0xc6, 0x1e, 0x38, 0xf4, 0xb9, 0xad, 0xf0, 0x3f, 0x4d, 0x33, + 0xfe, 0x05, 0x42, 0xf8, 0x73, 0x51, 0x0a, 0x61, 0x1f, 0x05, 0xc1, 0x53, 0xe2, 0xf7, 0xff, 0x07, + 0xde, 0xfc, 0xc7, 0xb0, 0x98, 0xe4, 0xeb, 0x19, 0xfa, 0x3d, 0x2c, 0x42, 0xe4, 0x24, 0xdc, 0x3f, + 0xaf, 0x40, 0x73, 0xcf, 0xc3, 0x3e, 0x92, 0x87, 0x4d, 0x56, 0xb7, 0x2f, 0xb2, 0x3a, 0x2d, 0x2f, + 0xd3, 0xeb, 0x50, 0x0f, 0x86, 0x8e, 0x83, 0xfc, 0x91, 0xcc, 0xb9, 0xc5, 0x70, 0x86, 0x9c, 0x3b, + 0x53, 0xae, 0xad, 0xcc, 0x55, 0xae, 0x7d, 0x09, 0x16, 0x89, 0xe4, 0xcd, 0xb4, 0xfa, 0x52, 0xbc, + 0xd1, 0xdc, 0x83, 0x7e, 0xaa, 0xf7, 0x53, 0x1b, 0xeb, 0xfd, 0x24, 0x7b, 0x46, 0xf5, 0xb1, 0x9e, + 0xd1, 0x57, 0x52, 0x3d, 0x9b, 0x06, 0x13, 0xdd, 0x86, 0x32, 0x3d, 0xe3, 0xa1, 0x3e, 0xd9, 0xad, + 0x79, 0x33, 0xd9, 0xad, 0x69, 0x66, 0x33, 0x3b, 0x99, 0xe0, 0xa4, 0x7a, 0x34, 0x89, 0xd6, 0x16, + 0xa4, 0x5b, 0x5b, 0x97, 0x01, 0xfa, 0xd8, 0xf3, 0x71, 0x0f, 0x85, 0xb8, 0x2f, 0x4e, 0xbd, 0x89, + 0x99, 0xb3, 0x75, 0x77, 0x54, 0xea, 0xd7, 0x9a, 0x47, 0xfd, 0x7e, 0x59, 0x84, 0x66, 0x9c, 0x45, + 0xdc, 0x86, 0xf6, 0x21, 0xe9, 0x27, 0xe2, 0xad, 0x48, 0x1c, 0x52, 0x09, 0x5e, 0x2a, 0xf1, 0xe8, + 0x16, 0x8c, 0xd6, 0x61, 0x2a, 0x13, 0x79, 0x08, 0x9a, 0x4b, 0x5c, 0x73, 0x8c, 0x0e, 0x4f, 0x0b, + 0x2e, 0xa5, 0x98, 0x1a, 0xcb, 0x61, 0xba, 0x05, 0xa3, 0xe3, 0x8e, 0xcd, 0xc5, 0xd1, 0xf3, 0x08, + 0x56, 0x55, 0x7d, 0x36, 0x6d, 0x6f, 0xb2, 0xbd, 0x6c, 0x64, 0xc4, 0x10, 0x27, 0xe6, 0x6a, 0x93, + 0xf9, 0xac, 0x08, 0xed, 0xb4, 0x76, 0x68, 0x5f, 0x82, 0xe6, 0xb8, 0x44, 0xd4, 0xb9, 0x7e, 0xb7, + 0x60, 0xc4, 0x98, 0x54, 0x9a, 0x9f, 0x04, 0xc4, 0xa5, 0x67, 0x30, 0x7e, 0x22, 0x53, 0xa5, 0xcb, + 0xa9, 0x23, 0x1b, 0x95, 0xe6, 0x27, 0xc9, 0x89, 0xf8, 0xf9, 0x7f, 0x5f, 0x86, 0x46, 0x74, 0x74, + 0x50, 0x9c, 0xec, 0x5e, 0x83, 0xf2, 0x11, 0x0e, 0x55, 0x27, 0x91, 0xc8, 0xfe, 0x0d, 0x8a, 0x41, + 0x11, 0xbd, 0x61, 0x28, 0xfc, 0x63, 0x1e, 0xa2, 0x37, 0x0c, 0xb5, 0xeb, 0x50, 0xf1, 0x48, 0x20, + 0x3b, 0x40, 0x39, 0x98, 0x0c, 0x45, 0xbb, 0x09, 0xb5, 0x3e, 0xb6, 0x71, 0x88, 0xc5, 0x89, 0x3a, + 0x07, 0x59, 0x20, 0x69, 0xb7, 0xa0, 0x4e, 0x3c, 0xde, 0x86, 0xac, 0x4d, 0xc2, 0x97, 0x58, 0x94, + 0x15, 0x9a, 0x92, 0x8a, 0x22, 0x57, 0x1e, 0x2b, 0x14, 0x85, 0x9e, 0xc9, 0x3c, 0x14, 0xf6, 0x8e, + 0x45, 0xfb, 0x22, 0x07, 0x97, 0xe3, 0x8c, 0xb9, 0x89, 0xe6, 0x5c, 0x6e, 0xe2, 0xcc, 0x1d, 0xa4, + 0xbf, 0x56, 0x61, 0x4d, 0x9d, 0x4d, 0x9e, 0xd7, 0x18, 0xcf, 0x6b, 0x8c, 0xff, 0xed, 0x35, 0xc6, + 0xa7, 0x50, 0x65, 0x17, 0x34, 0x94, 0x94, 0x8a, 0x73, 0x50, 0xd2, 0x6e, 0x42, 0x85, 0xdd, 0x36, + 0x29, 0xb1, 0x45, 0xeb, 0x0a, 0x87, 0x2f, 0xea, 0x26, 0x0c, 0x6d, 0xeb, 0x67, 0x55, 0x58, 0x1a, + 0xd3, 0xda, 0xf3, 0x9e, 0xd4, 0x79, 0x4f, 0xea, 0x4c, 0x3d, 0x29, 0x95, 0x0e, 0x6b, 0xf3, 0x58, + 0xc3, 0xb7, 0x01, 0xe2, 0x14, 0xe4, 0x39, 0xdf, 0xf9, 0xfa, 0x55, 0x0d, 0x2e, 0xe6, 0x14, 0x46, + 0xce, 0xaf, 0x29, 0x9c, 0x5f, 0x53, 0x38, 0xbf, 0xa6, 0x10, 0x9b, 0xe1, 0xdf, 0x8b, 0xd0, 0x88, + 0xca, 0xe9, 0xd3, 0x2f, 0x76, 0x6d, 0x47, 0xdd, 0x19, 0x9e, 0x76, 0xaf, 0x65, 0x6b, 0xd6, 0x2c, + 0xf0, 0xc8, 0xab, 0xaf, 0x37, 0xa1, 0xce, 0x2b, 0xab, 0x32, 0x78, 0xac, 0x64, 0x0b, 0xb2, 0x81, + 0x21, 0x71, 0xb4, 0x37, 0xa0, 0x21, 0xae, 0x2b, 0xc9, 0x93, 0xf5, 0x6a, 0xfa, 0x64, 0xcd, 0x61, + 0x46, 0x84, 0x75, 0xf6, 0x3b, 0xcd, 0x18, 0x56, 0x14, 0x97, 0x11, 0xb5, 0xf7, 0x26, 0x3b, 0xa4, + 0x6c, 0xcc, 0x8d, 0x5a, 0x0b, 0x6a, 0x97, 0xf4, 0x93, 0x22, 0xb4, 0xd2, 0x5d, 0x86, 0x1d, 0xea, + 0x88, 0xf8, 0x44, 0x74, 0x7b, 0x5c, 0x71, 0xe6, 0xee, 0x16, 0x8c, 0x08, 0xef, 0xf9, 0x9e, 0xaf, + 0x7e, 0x5a, 0x84, 0x66, 0x74, 0xb2, 0xd7, 0xee, 0x40, 0x4b, 0x6e, 0x63, 0xf6, 0x48, 0x1f, 0x8b, + 0x07, 0xbd, 0x9c, 0xfb, 0xa0, 0xbc, 0xdb, 0xb1, 0x28, 0x17, 0xdd, 0x21, 0x7d, 0x75, 0x2b, 0xb0, + 0x34, 0xcf, 0xdb, 0xf8, 0x75, 0x13, 0x6a, 0xc2, 0x51, 0x2b, 0x4e, 0x7c, 0x79, 0x09, 0x4a, 0xd4, + 0x5b, 0x2d, 0x4f, 0xb8, 0xf4, 0x57, 0x99, 0x78, 0xe9, 0x6f, 0x5a, 0xe2, 0x31, 0x66, 0x89, 0xb5, + 0x8c, 0x25, 0x26, 0x5c, 0x62, 0x7d, 0x06, 0x97, 0xd8, 0x98, 0xee, 0x12, 0x9b, 0x33, 0xb8, 0x44, + 0x98, 0xc9, 0x25, 0x2e, 0x4c, 0x76, 0x89, 0x8b, 0x13, 0x5c, 0x62, 0x6b, 0x82, 0x4b, 0x6c, 0x4f, + 0x72, 0x89, 0x4b, 0x53, 0x5c, 0x62, 0x27, 0xeb, 0x12, 0x5f, 0x81, 0x36, 0x25, 0x9e, 0x30, 0x36, + 0x7e, 0x12, 0x68, 0x39, 0xe8, 0x34, 0x91, 0x2b, 0x50, 0x34, 0xcb, 0x4d, 0xa2, 0x69, 0x02, 0xcd, + 0x72, 0x13, 0x68, 0xc9, 0x40, 0xbf, 0x32, 0x76, 0x4d, 0x73, 0xa6, 0x13, 0xc1, 0x47, 0x79, 0x2e, + 0xe0, 0x42, 0xb6, 0xb5, 0x94, 0xf7, 0xe9, 0x89, 0xda, 0x1b, 0x68, 0xd7, 0x44, 0xd8, 0x5f, 0xcb, + 0xda, 0xfd, 0xa3, 0x91, 0x87, 0x79, 0xee, 0xce, 0x92, 0x81, 0xd7, 0x65, 0xd0, 0xbf, 0x98, 0x3d, + 0xdc, 0x47, 0x4d, 0x73, 0x19, 0xee, 0xaf, 0x43, 0x0d, 0xd9, 0x36, 0xd5, 0x4f, 0x3d, 0xb7, 0x77, + 0x5e, 0x45, 0xb6, 0xbd, 0x37, 0xd0, 0xbe, 0x0c, 0x90, 0x78, 0xa2, 0xf5, 0xac, 0x33, 0x8f, 0xb9, + 0x35, 0x12, 0x98, 0xda, 0xcb, 0xd0, 0xea, 0x5b, 0xd4, 0x82, 0x1c, 0xcb, 0x45, 0x21, 0xf1, 0xf5, + 0x0d, 0xa6, 0x20, 0xe9, 0xc9, 0xf4, 0x95, 0xd7, 0xcd, 0xb1, 0x2b, 0xaf, 0x2f, 0x41, 0xf9, 0xd4, + 0xb1, 0xf5, 0x4b, 0x59, 0x8b, 0xfb, 0xd0, 0xb1, 0x0d, 0x0a, 0xcb, 0x96, 0x59, 0x5f, 0x78, 0xd6, + 0x5b, 0xb1, 0x97, 0x9f, 0xe1, 0x56, 0xec, 0x8b, 0xf3, 0x78, 0xac, 0x1f, 0x00, 0xc4, 0x71, 0x6f, + 0xce, 0x2f, 0x8d, 0xde, 0x86, 0x85, 0x81, 0x65, 0x63, 0x33, 0x3f, 0xa4, 0xc6, 0x37, 0x9e, 0xbb, + 0x05, 0x03, 0x06, 0xd1, 0x28, 0xf6, 0xe2, 0x21, 0xac, 0x28, 0xba, 0xb9, 0xda, 0x77, 0x27, 0xc7, + 0xaf, 0x6b, 0xd9, 0x84, 0x3a, 0xa7, 0x25, 0xac, 0x0e, 0x67, 0x7f, 0xaa, 0xc0, 0xc5, 0xbc, 0x66, + 0xb4, 0x03, 0x2f, 0x1c, 0xa2, 0xc0, 0xea, 0x99, 0x28, 0xf5, 0x95, 0x90, 0x19, 0xd5, 0x7c, 0xb9, + 0x68, 0x5e, 0x4b, 0x55, 0x58, 0xf3, 0xbf, 0x2a, 0xea, 0x16, 0x8c, 0xcd, 0xc3, 0x09, 0x1f, 0x1d, + 0xdd, 0x87, 0x0e, 0xf2, 0x2c, 0xf3, 0x53, 0x3c, 0x8a, 0x77, 0xe0, 0x92, 0x4c, 0xd5, 0xb5, 0xd2, + 0x5f, 0x59, 0x75, 0x0b, 0x46, 0x1b, 0xa5, 0xbf, 0xbb, 0xfa, 0x1e, 0xe8, 0x84, 0xb5, 0x25, 0x4c, + 0x4b, 0x34, 0xa4, 0x62, 0x7a, 0xe5, 0x6c, 0x57, 0x54, 0xdd, 0xbb, 0xea, 0x16, 0x8c, 0x35, 0xa2, + 0xee, 0x6a, 0xc5, 0xf4, 0x3d, 0xd1, 0xeb, 0x89, 0xe9, 0x57, 0xf2, 0xe8, 0x8f, 0xb7, 0x85, 0x62, + 0xfa, 0x99, 0x86, 0xd1, 0x11, 0x6c, 0x0a, 0xfa, 0x28, 0x6e, 0x24, 0xc6, 0x5b, 0xf0, 0x00, 0xf7, + 0x4a, 0x76, 0x0b, 0x45, 0xdb, 0xb1, 0x5b, 0x30, 0xd6, 0x49, 0x6e, 0x4f, 0x12, 0xc7, 0x1b, 0xb1, + 0xae, 0x2e, 0x4b, 0x17, 0xe2, 0x8d, 0x6a, 0x59, 0xef, 0x98, 0xd7, 0x03, 0xee, 0x16, 0x0c, 0x21, + 0x93, 0x2c, 0x2c, 0xd6, 0xf0, 0xe3, 0x58, 0xc3, 0x13, 0x2d, 0x01, 0xed, 0xfd, 0xc9, 0x1a, 0x7e, + 0x29, 0xa7, 0x6d, 0xc4, 0x2f, 0x16, 0xa8, 0xb5, 0xfa, 0x2a, 0x2c, 0x24, 0x6f, 0x2e, 0xac, 0xc6, + 0x1f, 0xf7, 0x95, 0xe3, 0x3b, 0x0e, 0xbf, 0x2d, 0x42, 0xf9, 0x11, 0x52, 0xdf, 0x8a, 0x98, 0xfe, + 0xb1, 0x5b, 0xc6, 0xb3, 0x95, 0xcf, 0xfc, 0x8d, 0xc8, 0x5c, 0x5f, 0x70, 0x5d, 0x81, 0x86, 0x8c, + 0x30, 0x39, 0xcf, 0xf7, 0x31, 0x2c, 0x7d, 0x30, 0x56, 0x6f, 0x7a, 0x8e, 0x1f, 0x93, 0xfc, 0xae, + 0x08, 0xe5, 0x0f, 0x1d, 0x5b, 0x29, 0xbd, 0x4b, 0xd0, 0xa4, 0xbf, 0x81, 0x87, 0x7a, 0xf2, 0x5e, + 0x49, 0x3c, 0x41, 0x93, 0x3f, 0xcf, 0xc7, 0x03, 0xeb, 0x54, 0x64, 0x79, 0x62, 0x44, 0x57, 0xa1, + 0x30, 0xf4, 0xad, 0xc3, 0x61, 0x88, 0xc5, 0x67, 0x7a, 0xf1, 0x04, 0x4d, 0x65, 0x9e, 0xfa, 0xc8, + 0xf3, 0x70, 0x5f, 0x1c, 0xc1, 0xe5, 0xf0, 0xcc, 0x7d, 0xcc, 0xdb, 0xaf, 0x42, 0x9b, 0xf8, 0x47, + 0x12, 0xd7, 0x3c, 0xd9, 0xb9, 0xbd, 0x28, 0xbe, 0x5d, 0xdd, 0xf7, 0x49, 0x48, 0xf6, 0x8b, 0xbf, + 0x28, 0x95, 0xf7, 0x76, 0x0f, 0x0e, 0x6b, 0xec, 0x63, 0xd0, 0x37, 0xff, 0x19, 0x00, 0x00, 0xff, + 0xff, 0xd4, 0x0a, 0xef, 0xca, 0xe4, 0x3a, 0x00, 0x00, +} diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto new file mode 100644 index 0000000000..557c88072c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto @@ -0,0 +1,663 @@ +// Copyright 2017 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +syntax = "proto3"; + +package openapi.v2; + +import "google/protobuf/any.proto"; + +// This option lets the proto compiler generate Java code inside the package +// name (see below) instead of inside an outer class. It creates a simpler +// developer experience by reducing one-level of name nesting and be +// consistent with most programming languages that don't support outer classes. +option java_multiple_files = true; + +// The Java outer classname should be the filename in UpperCamelCase. This +// class is only used to hold proto descriptor, so developers don't need to +// work with it directly. +option java_outer_classname = "OpenAPIProto"; + +// The Java package name must be proto package name with proper prefix. +option java_package = "org.openapi_v2"; + +// A reasonable prefix for the Objective-C symbols generated from the package. +// It should at a minimum be 3 characters long, all uppercase, and convention +// is to use an abbreviation of the package name. Something short, but +// hopefully unique enough to not conflict with things that may come along in +// the future. 'GPB' is reserved for the protocol buffer implementation itself. +option objc_class_prefix = "OAS"; + +message AdditionalPropertiesItem { + oneof oneof { + Schema schema = 1; + bool boolean = 2; + } +} + +message Any { + google.protobuf.Any value = 1; + string yaml = 2; +} + +message ApiKeySecurity { + string type = 1; + string name = 2; + string in = 3; + string description = 4; + repeated NamedAny vendor_extension = 5; +} + +message BasicAuthenticationSecurity { + string type = 1; + string description = 2; + repeated NamedAny vendor_extension = 3; +} + +message BodyParameter { + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + string description = 1; + // The name of the parameter. + string name = 2; + // Determines the location of the parameter. + string in = 3; + // Determines whether or not this parameter is required or optional. + bool required = 4; + Schema schema = 5; + repeated NamedAny vendor_extension = 6; +} + +// Contact information for the owners of the API. +message Contact { + // The identifying name of the contact person/organization. + string name = 1; + // The URL pointing to the contact information. + string url = 2; + // The email address of the contact person/organization. + string email = 3; + repeated NamedAny vendor_extension = 4; +} + +message Default { + repeated NamedAny additional_properties = 1; +} + +// One or more JSON objects describing the schemas being consumed and produced by the API. +message Definitions { + repeated NamedSchema additional_properties = 1; +} + +message Document { + // The Swagger version of this document. + string swagger = 1; + Info info = 2; + // The host (name or ip) of the API. Example: 'swagger.io' + string host = 3; + // The base path to the API. Example: '/api'. + string base_path = 4; + // The transfer protocol of the API. + repeated string schemes = 5; + // A list of MIME types accepted by the API. + repeated string consumes = 6; + // A list of MIME types the API can produce. + repeated string produces = 7; + Paths paths = 8; + Definitions definitions = 9; + ParameterDefinitions parameters = 10; + ResponseDefinitions responses = 11; + repeated SecurityRequirement security = 12; + SecurityDefinitions security_definitions = 13; + repeated Tag tags = 14; + ExternalDocs external_docs = 15; + repeated NamedAny vendor_extension = 16; +} + +message Examples { + repeated NamedAny additional_properties = 1; +} + +// information about external documentation +message ExternalDocs { + string description = 1; + string url = 2; + repeated NamedAny vendor_extension = 3; +} + +// A deterministic version of a JSON Schema object. +message FileSchema { + string format = 1; + string title = 2; + string description = 3; + Any default = 4; + repeated string required = 5; + string type = 6; + bool read_only = 7; + ExternalDocs external_docs = 8; + Any example = 9; + repeated NamedAny vendor_extension = 10; +} + +message FormDataParameterSubSchema { + // Determines whether or not this parameter is required or optional. + bool required = 1; + // Determines the location of the parameter. + string in = 2; + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + string description = 3; + // The name of the parameter. + string name = 4; + // allows sending a parameter by name only or with an empty value. + bool allow_empty_value = 5; + string type = 6; + string format = 7; + PrimitivesItems items = 8; + string collection_format = 9; + Any default = 10; + double maximum = 11; + bool exclusive_maximum = 12; + double minimum = 13; + bool exclusive_minimum = 14; + int64 max_length = 15; + int64 min_length = 16; + string pattern = 17; + int64 max_items = 18; + int64 min_items = 19; + bool unique_items = 20; + repeated Any enum = 21; + double multiple_of = 22; + repeated NamedAny vendor_extension = 23; +} + +message Header { + string type = 1; + string format = 2; + PrimitivesItems items = 3; + string collection_format = 4; + Any default = 5; + double maximum = 6; + bool exclusive_maximum = 7; + double minimum = 8; + bool exclusive_minimum = 9; + int64 max_length = 10; + int64 min_length = 11; + string pattern = 12; + int64 max_items = 13; + int64 min_items = 14; + bool unique_items = 15; + repeated Any enum = 16; + double multiple_of = 17; + string description = 18; + repeated NamedAny vendor_extension = 19; +} + +message HeaderParameterSubSchema { + // Determines whether or not this parameter is required or optional. + bool required = 1; + // Determines the location of the parameter. + string in = 2; + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + string description = 3; + // The name of the parameter. + string name = 4; + string type = 5; + string format = 6; + PrimitivesItems items = 7; + string collection_format = 8; + Any default = 9; + double maximum = 10; + bool exclusive_maximum = 11; + double minimum = 12; + bool exclusive_minimum = 13; + int64 max_length = 14; + int64 min_length = 15; + string pattern = 16; + int64 max_items = 17; + int64 min_items = 18; + bool unique_items = 19; + repeated Any enum = 20; + double multiple_of = 21; + repeated NamedAny vendor_extension = 22; +} + +message Headers { + repeated NamedHeader additional_properties = 1; +} + +// General information about the API. +message Info { + // A unique and precise title of the API. + string title = 1; + // A semantic version number of the API. + string version = 2; + // A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed. + string description = 3; + // The terms of service for the API. + string terms_of_service = 4; + Contact contact = 5; + License license = 6; + repeated NamedAny vendor_extension = 7; +} + +message ItemsItem { + repeated Schema schema = 1; +} + +message JsonReference { + string _ref = 1; + string description = 2; +} + +message License { + // The name of the license type. It's encouraged to use an OSI compatible license. + string name = 1; + // The URL pointing to the license. + string url = 2; + repeated NamedAny vendor_extension = 3; +} + +// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +message NamedAny { + // Map key + string name = 1; + // Mapped value + Any value = 2; +} + +// Automatically-generated message used to represent maps of Header as ordered (name,value) pairs. +message NamedHeader { + // Map key + string name = 1; + // Mapped value + Header value = 2; +} + +// Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs. +message NamedParameter { + // Map key + string name = 1; + // Mapped value + Parameter value = 2; +} + +// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +message NamedPathItem { + // Map key + string name = 1; + // Mapped value + PathItem value = 2; +} + +// Automatically-generated message used to represent maps of Response as ordered (name,value) pairs. +message NamedResponse { + // Map key + string name = 1; + // Mapped value + Response value = 2; +} + +// Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs. +message NamedResponseValue { + // Map key + string name = 1; + // Mapped value + ResponseValue value = 2; +} + +// Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs. +message NamedSchema { + // Map key + string name = 1; + // Mapped value + Schema value = 2; +} + +// Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs. +message NamedSecurityDefinitionsItem { + // Map key + string name = 1; + // Mapped value + SecurityDefinitionsItem value = 2; +} + +// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +message NamedString { + // Map key + string name = 1; + // Mapped value + string value = 2; +} + +// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. +message NamedStringArray { + // Map key + string name = 1; + // Mapped value + StringArray value = 2; +} + +message NonBodyParameter { + oneof oneof { + HeaderParameterSubSchema header_parameter_sub_schema = 1; + FormDataParameterSubSchema form_data_parameter_sub_schema = 2; + QueryParameterSubSchema query_parameter_sub_schema = 3; + PathParameterSubSchema path_parameter_sub_schema = 4; + } +} + +message Oauth2AccessCodeSecurity { + string type = 1; + string flow = 2; + Oauth2Scopes scopes = 3; + string authorization_url = 4; + string token_url = 5; + string description = 6; + repeated NamedAny vendor_extension = 7; +} + +message Oauth2ApplicationSecurity { + string type = 1; + string flow = 2; + Oauth2Scopes scopes = 3; + string token_url = 4; + string description = 5; + repeated NamedAny vendor_extension = 6; +} + +message Oauth2ImplicitSecurity { + string type = 1; + string flow = 2; + Oauth2Scopes scopes = 3; + string authorization_url = 4; + string description = 5; + repeated NamedAny vendor_extension = 6; +} + +message Oauth2PasswordSecurity { + string type = 1; + string flow = 2; + Oauth2Scopes scopes = 3; + string token_url = 4; + string description = 5; + repeated NamedAny vendor_extension = 6; +} + +message Oauth2Scopes { + repeated NamedString additional_properties = 1; +} + +message Operation { + repeated string tags = 1; + // A brief summary of the operation. + string summary = 2; + // A longer description of the operation, GitHub Flavored Markdown is allowed. + string description = 3; + ExternalDocs external_docs = 4; + // A unique identifier of the operation. + string operation_id = 5; + // A list of MIME types the API can produce. + repeated string produces = 6; + // A list of MIME types the API can consume. + repeated string consumes = 7; + // The parameters needed to send a valid API call. + repeated ParametersItem parameters = 8; + Responses responses = 9; + // The transfer protocol of the API. + repeated string schemes = 10; + bool deprecated = 11; + repeated SecurityRequirement security = 12; + repeated NamedAny vendor_extension = 13; +} + +message Parameter { + oneof oneof { + BodyParameter body_parameter = 1; + NonBodyParameter non_body_parameter = 2; + } +} + +// One or more JSON representations for parameters +message ParameterDefinitions { + repeated NamedParameter additional_properties = 1; +} + +message ParametersItem { + oneof oneof { + Parameter parameter = 1; + JsonReference json_reference = 2; + } +} + +message PathItem { + string _ref = 1; + Operation get = 2; + Operation put = 3; + Operation post = 4; + Operation delete = 5; + Operation options = 6; + Operation head = 7; + Operation patch = 8; + // The parameters needed to send a valid API call. + repeated ParametersItem parameters = 9; + repeated NamedAny vendor_extension = 10; +} + +message PathParameterSubSchema { + // Determines whether or not this parameter is required or optional. + bool required = 1; + // Determines the location of the parameter. + string in = 2; + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + string description = 3; + // The name of the parameter. + string name = 4; + string type = 5; + string format = 6; + PrimitivesItems items = 7; + string collection_format = 8; + Any default = 9; + double maximum = 10; + bool exclusive_maximum = 11; + double minimum = 12; + bool exclusive_minimum = 13; + int64 max_length = 14; + int64 min_length = 15; + string pattern = 16; + int64 max_items = 17; + int64 min_items = 18; + bool unique_items = 19; + repeated Any enum = 20; + double multiple_of = 21; + repeated NamedAny vendor_extension = 22; +} + +// Relative paths to the individual endpoints. They must be relative to the 'basePath'. +message Paths { + repeated NamedAny vendor_extension = 1; + repeated NamedPathItem path = 2; +} + +message PrimitivesItems { + string type = 1; + string format = 2; + PrimitivesItems items = 3; + string collection_format = 4; + Any default = 5; + double maximum = 6; + bool exclusive_maximum = 7; + double minimum = 8; + bool exclusive_minimum = 9; + int64 max_length = 10; + int64 min_length = 11; + string pattern = 12; + int64 max_items = 13; + int64 min_items = 14; + bool unique_items = 15; + repeated Any enum = 16; + double multiple_of = 17; + repeated NamedAny vendor_extension = 18; +} + +message Properties { + repeated NamedSchema additional_properties = 1; +} + +message QueryParameterSubSchema { + // Determines whether or not this parameter is required or optional. + bool required = 1; + // Determines the location of the parameter. + string in = 2; + // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + string description = 3; + // The name of the parameter. + string name = 4; + // allows sending a parameter by name only or with an empty value. + bool allow_empty_value = 5; + string type = 6; + string format = 7; + PrimitivesItems items = 8; + string collection_format = 9; + Any default = 10; + double maximum = 11; + bool exclusive_maximum = 12; + double minimum = 13; + bool exclusive_minimum = 14; + int64 max_length = 15; + int64 min_length = 16; + string pattern = 17; + int64 max_items = 18; + int64 min_items = 19; + bool unique_items = 20; + repeated Any enum = 21; + double multiple_of = 22; + repeated NamedAny vendor_extension = 23; +} + +message Response { + string description = 1; + SchemaItem schema = 2; + Headers headers = 3; + Examples examples = 4; + repeated NamedAny vendor_extension = 5; +} + +// One or more JSON representations for parameters +message ResponseDefinitions { + repeated NamedResponse additional_properties = 1; +} + +message ResponseValue { + oneof oneof { + Response response = 1; + JsonReference json_reference = 2; + } +} + +// Response objects names can either be any valid HTTP status code or 'default'. +message Responses { + repeated NamedResponseValue response_code = 1; + repeated NamedAny vendor_extension = 2; +} + +// A deterministic version of a JSON Schema object. +message Schema { + string _ref = 1; + string format = 2; + string title = 3; + string description = 4; + Any default = 5; + double multiple_of = 6; + double maximum = 7; + bool exclusive_maximum = 8; + double minimum = 9; + bool exclusive_minimum = 10; + int64 max_length = 11; + int64 min_length = 12; + string pattern = 13; + int64 max_items = 14; + int64 min_items = 15; + bool unique_items = 16; + int64 max_properties = 17; + int64 min_properties = 18; + repeated string required = 19; + repeated Any enum = 20; + AdditionalPropertiesItem additional_properties = 21; + TypeItem type = 22; + ItemsItem items = 23; + repeated Schema all_of = 24; + Properties properties = 25; + string discriminator = 26; + bool read_only = 27; + Xml xml = 28; + ExternalDocs external_docs = 29; + Any example = 30; + repeated NamedAny vendor_extension = 31; +} + +message SchemaItem { + oneof oneof { + Schema schema = 1; + FileSchema file_schema = 2; + } +} + +message SecurityDefinitions { + repeated NamedSecurityDefinitionsItem additional_properties = 1; +} + +message SecurityDefinitionsItem { + oneof oneof { + BasicAuthenticationSecurity basic_authentication_security = 1; + ApiKeySecurity api_key_security = 2; + Oauth2ImplicitSecurity oauth2_implicit_security = 3; + Oauth2PasswordSecurity oauth2_password_security = 4; + Oauth2ApplicationSecurity oauth2_application_security = 5; + Oauth2AccessCodeSecurity oauth2_access_code_security = 6; + } +} + +message SecurityRequirement { + repeated NamedStringArray additional_properties = 1; +} + +message StringArray { + repeated string value = 1; +} + +message Tag { + string name = 1; + string description = 2; + ExternalDocs external_docs = 3; + repeated NamedAny vendor_extension = 4; +} + +message TypeItem { + repeated string value = 1; +} + +// Any property starting with x- is valid. +message VendorExtension { + repeated NamedAny additional_properties = 1; +} + +message Xml { + string name = 1; + string namespace = 2; + string prefix = 3; + bool attribute = 4; + bool wrapped = 5; + repeated NamedAny vendor_extension = 6; +} + diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md b/vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md new file mode 100644 index 0000000000..836fb32a7e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md @@ -0,0 +1,16 @@ +# OpenAPI v2 Protocol Buffer Models + +This directory contains a Protocol Buffer-language model +and related code for supporting OpenAPI v2. + +Gnostic applications and plugins can use OpenAPIv2.proto +to generate Protocol Buffer support code for their preferred languages. + +OpenAPIv2.go is used by Gnostic to read JSON and YAML OpenAPI +descriptions into the Protocol Buffer-based datastructures +generated from OpenAPIv2.proto. + +OpenAPIv2.proto and OpenAPIv2.go are generated by the Gnostic +compiler generator, and OpenAPIv2.pb.go is generated by +protoc, the Protocol Buffer compiler, and protoc-gen-go, the +Protocol Buffer Go code generation plugin. diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json b/vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json new file mode 100644 index 0000000000..2815a26ea7 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json @@ -0,0 +1,1610 @@ +{ + "title": "A JSON Schema for Swagger 2.0 API.", + "id": "http://swagger.io/v2/schema.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ + "swagger", + "info", + "paths" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "swagger": { + "type": "string", + "enum": [ + "2.0" + ], + "description": "The Swagger version of this document." + }, + "info": { + "$ref": "#/definitions/info" + }, + "host": { + "type": "string", + "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$", + "description": "The host (name or ip) of the API. Example: 'swagger.io'" + }, + "basePath": { + "type": "string", + "pattern": "^/", + "description": "The base path to the API. Example: '/api'." + }, + "schemes": { + "$ref": "#/definitions/schemesList" + }, + "consumes": { + "description": "A list of MIME types accepted by the API.", + "allOf": [ + { + "$ref": "#/definitions/mediaTypeList" + } + ] + }, + "produces": { + "description": "A list of MIME types the API can produce.", + "allOf": [ + { + "$ref": "#/definitions/mediaTypeList" + } + ] + }, + "paths": { + "$ref": "#/definitions/paths" + }, + "definitions": { + "$ref": "#/definitions/definitions" + }, + "parameters": { + "$ref": "#/definitions/parameterDefinitions" + }, + "responses": { + "$ref": "#/definitions/responseDefinitions" + }, + "security": { + "$ref": "#/definitions/security" + }, + "securityDefinitions": { + "$ref": "#/definitions/securityDefinitions" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/tag" + }, + "uniqueItems": true + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + }, + "definitions": { + "info": { + "type": "object", + "description": "General information about the API.", + "required": [ + "version", + "title" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "title": { + "type": "string", + "description": "A unique and precise title of the API." + }, + "version": { + "type": "string", + "description": "A semantic version number of the API." + }, + "description": { + "type": "string", + "description": "A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed." + }, + "termsOfService": { + "type": "string", + "description": "The terms of service for the API." + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "license": { + "$ref": "#/definitions/license" + } + } + }, + "contact": { + "type": "object", + "description": "Contact information for the owners of the API.", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "The identifying name of the contact person/organization." + }, + "url": { + "type": "string", + "description": "The URL pointing to the contact information.", + "format": "uri" + }, + "email": { + "type": "string", + "description": "The email address of the contact person/organization.", + "format": "email" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "license": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "The name of the license type. It's encouraged to use an OSI compatible license." + }, + "url": { + "type": "string", + "description": "The URL pointing to the license.", + "format": "uri" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "paths": { + "type": "object", + "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.", + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + }, + "^/": { + "$ref": "#/definitions/pathItem" + } + }, + "additionalProperties": false + }, + "definitions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schema" + }, + "description": "One or more JSON objects describing the schemas being consumed and produced by the API." + }, + "parameterDefinitions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/parameter" + }, + "description": "One or more JSON representations for parameters" + }, + "responseDefinitions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/response" + }, + "description": "One or more JSON representations for parameters" + }, + "externalDocs": { + "type": "object", + "additionalProperties": false, + "description": "information about external documentation", + "required": [ + "url" + ], + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "examples": { + "type": "object", + "additionalProperties": true + }, + "mimeType": { + "type": "string", + "description": "The MIME type of the HTTP message." + }, + "operation": { + "type": "object", + "required": [ + "responses" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "summary": { + "type": "string", + "description": "A brief summary of the operation." + }, + "description": { + "type": "string", + "description": "A longer description of the operation, GitHub Flavored Markdown is allowed." + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "operationId": { + "type": "string", + "description": "A unique identifier of the operation." + }, + "produces": { + "description": "A list of MIME types the API can produce.", + "allOf": [ + { + "$ref": "#/definitions/mediaTypeList" + } + ] + }, + "consumes": { + "description": "A list of MIME types the API can consume.", + "allOf": [ + { + "$ref": "#/definitions/mediaTypeList" + } + ] + }, + "parameters": { + "$ref": "#/definitions/parametersList" + }, + "responses": { + "$ref": "#/definitions/responses" + }, + "schemes": { + "$ref": "#/definitions/schemesList" + }, + "deprecated": { + "type": "boolean", + "default": false + }, + "security": { + "$ref": "#/definitions/security" + } + } + }, + "pathItem": { + "type": "object", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "$ref": { + "type": "string" + }, + "get": { + "$ref": "#/definitions/operation" + }, + "put": { + "$ref": "#/definitions/operation" + }, + "post": { + "$ref": "#/definitions/operation" + }, + "delete": { + "$ref": "#/definitions/operation" + }, + "options": { + "$ref": "#/definitions/operation" + }, + "head": { + "$ref": "#/definitions/operation" + }, + "patch": { + "$ref": "#/definitions/operation" + }, + "parameters": { + "$ref": "#/definitions/parametersList" + } + } + }, + "responses": { + "type": "object", + "description": "Response objects names can either be any valid HTTP status code or 'default'.", + "minProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^([0-9]{3})$|^(default)$": { + "$ref": "#/definitions/responseValue" + }, + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "not": { + "type": "object", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + } + }, + "responseValue": { + "oneOf": [ + { + "$ref": "#/definitions/response" + }, + { + "$ref": "#/definitions/jsonReference" + } + ] + }, + "response": { + "type": "object", + "required": [ + "description" + ], + "properties": { + "description": { + "type": "string" + }, + "schema": { + "oneOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "$ref": "#/definitions/fileSchema" + } + ] + }, + "headers": { + "$ref": "#/definitions/headers" + }, + "examples": { + "$ref": "#/definitions/examples" + } + }, + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "headers": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/header" + } + }, + "header": { + "type": "object", + "additionalProperties": false, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "string", + "number", + "integer", + "boolean", + "array" + ] + }, + "format": { + "type": "string" + }, + "items": { + "$ref": "#/definitions/primitivesItems" + }, + "collectionFormat": { + "$ref": "#/definitions/collectionFormat" + }, + "default": { + "$ref": "#/definitions/default" + }, + "maximum": { + "$ref": "#/definitions/maximum" + }, + "exclusiveMaximum": { + "$ref": "#/definitions/exclusiveMaximum" + }, + "minimum": { + "$ref": "#/definitions/minimum" + }, + "exclusiveMinimum": { + "$ref": "#/definitions/exclusiveMinimum" + }, + "maxLength": { + "$ref": "#/definitions/maxLength" + }, + "minLength": { + "$ref": "#/definitions/minLength" + }, + "pattern": { + "$ref": "#/definitions/pattern" + }, + "maxItems": { + "$ref": "#/definitions/maxItems" + }, + "minItems": { + "$ref": "#/definitions/minItems" + }, + "uniqueItems": { + "$ref": "#/definitions/uniqueItems" + }, + "enum": { + "$ref": "#/definitions/enum" + }, + "multipleOf": { + "$ref": "#/definitions/multipleOf" + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "vendorExtension": { + "description": "Any property starting with x- is valid.", + "additionalProperties": true, + "additionalItems": true + }, + "bodyParameter": { + "type": "object", + "required": [ + "name", + "in", + "schema" + ], + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "description": { + "type": "string", + "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." + }, + "name": { + "type": "string", + "description": "The name of the parameter." + }, + "in": { + "type": "string", + "description": "Determines the location of the parameter.", + "enum": [ + "body" + ] + }, + "required": { + "type": "boolean", + "description": "Determines whether or not this parameter is required or optional.", + "default": false + }, + "schema": { + "$ref": "#/definitions/schema" + } + }, + "additionalProperties": false + }, + "headerParameterSubSchema": { + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "required": { + "type": "boolean", + "description": "Determines whether or not this parameter is required or optional.", + "default": false + }, + "in": { + "type": "string", + "description": "Determines the location of the parameter.", + "enum": [ + "header" + ] + }, + "description": { + "type": "string", + "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." + }, + "name": { + "type": "string", + "description": "The name of the parameter." + }, + "type": { + "type": "string", + "enum": [ + "string", + "number", + "boolean", + "integer", + "array" + ] + }, + "format": { + "type": "string" + }, + "items": { + "$ref": "#/definitions/primitivesItems" + }, + "collectionFormat": { + "$ref": "#/definitions/collectionFormat" + }, + "default": { + "$ref": "#/definitions/default" + }, + "maximum": { + "$ref": "#/definitions/maximum" + }, + "exclusiveMaximum": { + "$ref": "#/definitions/exclusiveMaximum" + }, + "minimum": { + "$ref": "#/definitions/minimum" + }, + "exclusiveMinimum": { + "$ref": "#/definitions/exclusiveMinimum" + }, + "maxLength": { + "$ref": "#/definitions/maxLength" + }, + "minLength": { + "$ref": "#/definitions/minLength" + }, + "pattern": { + "$ref": "#/definitions/pattern" + }, + "maxItems": { + "$ref": "#/definitions/maxItems" + }, + "minItems": { + "$ref": "#/definitions/minItems" + }, + "uniqueItems": { + "$ref": "#/definitions/uniqueItems" + }, + "enum": { + "$ref": "#/definitions/enum" + }, + "multipleOf": { + "$ref": "#/definitions/multipleOf" + } + } + }, + "queryParameterSubSchema": { + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "required": { + "type": "boolean", + "description": "Determines whether or not this parameter is required or optional.", + "default": false + }, + "in": { + "type": "string", + "description": "Determines the location of the parameter.", + "enum": [ + "query" + ] + }, + "description": { + "type": "string", + "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." + }, + "name": { + "type": "string", + "description": "The name of the parameter." + }, + "allowEmptyValue": { + "type": "boolean", + "default": false, + "description": "allows sending a parameter by name only or with an empty value." + }, + "type": { + "type": "string", + "enum": [ + "string", + "number", + "boolean", + "integer", + "array" + ] + }, + "format": { + "type": "string" + }, + "items": { + "$ref": "#/definitions/primitivesItems" + }, + "collectionFormat": { + "$ref": "#/definitions/collectionFormatWithMulti" + }, + "default": { + "$ref": "#/definitions/default" + }, + "maximum": { + "$ref": "#/definitions/maximum" + }, + "exclusiveMaximum": { + "$ref": "#/definitions/exclusiveMaximum" + }, + "minimum": { + "$ref": "#/definitions/minimum" + }, + "exclusiveMinimum": { + "$ref": "#/definitions/exclusiveMinimum" + }, + "maxLength": { + "$ref": "#/definitions/maxLength" + }, + "minLength": { + "$ref": "#/definitions/minLength" + }, + "pattern": { + "$ref": "#/definitions/pattern" + }, + "maxItems": { + "$ref": "#/definitions/maxItems" + }, + "minItems": { + "$ref": "#/definitions/minItems" + }, + "uniqueItems": { + "$ref": "#/definitions/uniqueItems" + }, + "enum": { + "$ref": "#/definitions/enum" + }, + "multipleOf": { + "$ref": "#/definitions/multipleOf" + } + } + }, + "formDataParameterSubSchema": { + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "required": { + "type": "boolean", + "description": "Determines whether or not this parameter is required or optional.", + "default": false + }, + "in": { + "type": "string", + "description": "Determines the location of the parameter.", + "enum": [ + "formData" + ] + }, + "description": { + "type": "string", + "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." + }, + "name": { + "type": "string", + "description": "The name of the parameter." + }, + "allowEmptyValue": { + "type": "boolean", + "default": false, + "description": "allows sending a parameter by name only or with an empty value." + }, + "type": { + "type": "string", + "enum": [ + "string", + "number", + "boolean", + "integer", + "array", + "file" + ] + }, + "format": { + "type": "string" + }, + "items": { + "$ref": "#/definitions/primitivesItems" + }, + "collectionFormat": { + "$ref": "#/definitions/collectionFormatWithMulti" + }, + "default": { + "$ref": "#/definitions/default" + }, + "maximum": { + "$ref": "#/definitions/maximum" + }, + "exclusiveMaximum": { + "$ref": "#/definitions/exclusiveMaximum" + }, + "minimum": { + "$ref": "#/definitions/minimum" + }, + "exclusiveMinimum": { + "$ref": "#/definitions/exclusiveMinimum" + }, + "maxLength": { + "$ref": "#/definitions/maxLength" + }, + "minLength": { + "$ref": "#/definitions/minLength" + }, + "pattern": { + "$ref": "#/definitions/pattern" + }, + "maxItems": { + "$ref": "#/definitions/maxItems" + }, + "minItems": { + "$ref": "#/definitions/minItems" + }, + "uniqueItems": { + "$ref": "#/definitions/uniqueItems" + }, + "enum": { + "$ref": "#/definitions/enum" + }, + "multipleOf": { + "$ref": "#/definitions/multipleOf" + } + } + }, + "pathParameterSubSchema": { + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "required": [ + "required" + ], + "properties": { + "required": { + "type": "boolean", + "enum": [ + true + ], + "description": "Determines whether or not this parameter is required or optional." + }, + "in": { + "type": "string", + "description": "Determines the location of the parameter.", + "enum": [ + "path" + ] + }, + "description": { + "type": "string", + "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." + }, + "name": { + "type": "string", + "description": "The name of the parameter." + }, + "type": { + "type": "string", + "enum": [ + "string", + "number", + "boolean", + "integer", + "array" + ] + }, + "format": { + "type": "string" + }, + "items": { + "$ref": "#/definitions/primitivesItems" + }, + "collectionFormat": { + "$ref": "#/definitions/collectionFormat" + }, + "default": { + "$ref": "#/definitions/default" + }, + "maximum": { + "$ref": "#/definitions/maximum" + }, + "exclusiveMaximum": { + "$ref": "#/definitions/exclusiveMaximum" + }, + "minimum": { + "$ref": "#/definitions/minimum" + }, + "exclusiveMinimum": { + "$ref": "#/definitions/exclusiveMinimum" + }, + "maxLength": { + "$ref": "#/definitions/maxLength" + }, + "minLength": { + "$ref": "#/definitions/minLength" + }, + "pattern": { + "$ref": "#/definitions/pattern" + }, + "maxItems": { + "$ref": "#/definitions/maxItems" + }, + "minItems": { + "$ref": "#/definitions/minItems" + }, + "uniqueItems": { + "$ref": "#/definitions/uniqueItems" + }, + "enum": { + "$ref": "#/definitions/enum" + }, + "multipleOf": { + "$ref": "#/definitions/multipleOf" + } + } + }, + "nonBodyParameter": { + "type": "object", + "required": [ + "name", + "in", + "type" + ], + "oneOf": [ + { + "$ref": "#/definitions/headerParameterSubSchema" + }, + { + "$ref": "#/definitions/formDataParameterSubSchema" + }, + { + "$ref": "#/definitions/queryParameterSubSchema" + }, + { + "$ref": "#/definitions/pathParameterSubSchema" + } + ] + }, + "parameter": { + "oneOf": [ + { + "$ref": "#/definitions/bodyParameter" + }, + { + "$ref": "#/definitions/nonBodyParameter" + } + ] + }, + "schema": { + "type": "object", + "description": "A deterministic version of a JSON Schema object.", + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "properties": { + "$ref": { + "type": "string" + }, + "format": { + "type": "string" + }, + "title": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/title" + }, + "description": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/description" + }, + "default": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/default" + }, + "multipleOf": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" + }, + "maximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" + }, + "exclusiveMaximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" + }, + "minimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" + }, + "exclusiveMinimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" + }, + "maxLength": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" + }, + "minLength": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" + }, + "pattern": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" + }, + "maxItems": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" + }, + "minItems": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" + }, + "uniqueItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" + }, + "maxProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" + }, + "minProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" + }, + "required": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" + }, + "enum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" + }, + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "type": "boolean" + } + ], + "default": {} + }, + "type": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/type" + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/schema" + } + } + ], + "default": {} + }, + "allOf": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/schema" + } + }, + "properties": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schema" + }, + "default": {} + }, + "discriminator": { + "type": "string" + }, + "readOnly": { + "type": "boolean", + "default": false + }, + "xml": { + "$ref": "#/definitions/xml" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "example": {} + }, + "additionalProperties": false + }, + "fileSchema": { + "type": "object", + "description": "A deterministic version of a JSON Schema object.", + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + }, + "required": [ + "type" + ], + "properties": { + "format": { + "type": "string" + }, + "title": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/title" + }, + "description": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/description" + }, + "default": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/default" + }, + "required": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" + }, + "type": { + "type": "string", + "enum": [ + "file" + ] + }, + "readOnly": { + "type": "boolean", + "default": false + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "example": {} + }, + "additionalProperties": false + }, + "primitivesItems": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "type": "string", + "enum": [ + "string", + "number", + "integer", + "boolean", + "array" + ] + }, + "format": { + "type": "string" + }, + "items": { + "$ref": "#/definitions/primitivesItems" + }, + "collectionFormat": { + "$ref": "#/definitions/collectionFormat" + }, + "default": { + "$ref": "#/definitions/default" + }, + "maximum": { + "$ref": "#/definitions/maximum" + }, + "exclusiveMaximum": { + "$ref": "#/definitions/exclusiveMaximum" + }, + "minimum": { + "$ref": "#/definitions/minimum" + }, + "exclusiveMinimum": { + "$ref": "#/definitions/exclusiveMinimum" + }, + "maxLength": { + "$ref": "#/definitions/maxLength" + }, + "minLength": { + "$ref": "#/definitions/minLength" + }, + "pattern": { + "$ref": "#/definitions/pattern" + }, + "maxItems": { + "$ref": "#/definitions/maxItems" + }, + "minItems": { + "$ref": "#/definitions/minItems" + }, + "uniqueItems": { + "$ref": "#/definitions/uniqueItems" + }, + "enum": { + "$ref": "#/definitions/enum" + }, + "multipleOf": { + "$ref": "#/definitions/multipleOf" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "securityRequirement": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + }, + "xml": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "attribute": { + "type": "boolean", + "default": false + }, + "wrapped": { + "type": "boolean", + "default": false + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "tag": { + "type": "object", + "additionalProperties": false, + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "securityDefinitions": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/definitions/basicAuthenticationSecurity" + }, + { + "$ref": "#/definitions/apiKeySecurity" + }, + { + "$ref": "#/definitions/oauth2ImplicitSecurity" + }, + { + "$ref": "#/definitions/oauth2PasswordSecurity" + }, + { + "$ref": "#/definitions/oauth2ApplicationSecurity" + }, + { + "$ref": "#/definitions/oauth2AccessCodeSecurity" + } + ] + } + }, + "basicAuthenticationSecurity": { + "type": "object", + "additionalProperties": false, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "basic" + ] + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "apiKeySecurity": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "name", + "in" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "apiKey" + ] + }, + "name": { + "type": "string" + }, + "in": { + "type": "string", + "enum": [ + "header", + "query" + ] + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "oauth2ImplicitSecurity": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "flow", + "authorizationUrl" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "oauth2" + ] + }, + "flow": { + "type": "string", + "enum": [ + "implicit" + ] + }, + "scopes": { + "$ref": "#/definitions/oauth2Scopes" + }, + "authorizationUrl": { + "type": "string", + "format": "uri" + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "oauth2PasswordSecurity": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "flow", + "tokenUrl" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "oauth2" + ] + }, + "flow": { + "type": "string", + "enum": [ + "password" + ] + }, + "scopes": { + "$ref": "#/definitions/oauth2Scopes" + }, + "tokenUrl": { + "type": "string", + "format": "uri" + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "oauth2ApplicationSecurity": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "flow", + "tokenUrl" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "oauth2" + ] + }, + "flow": { + "type": "string", + "enum": [ + "application" + ] + }, + "scopes": { + "$ref": "#/definitions/oauth2Scopes" + }, + "tokenUrl": { + "type": "string", + "format": "uri" + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "oauth2AccessCodeSecurity": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "flow", + "authorizationUrl", + "tokenUrl" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "oauth2" + ] + }, + "flow": { + "type": "string", + "enum": [ + "accessCode" + ] + }, + "scopes": { + "$ref": "#/definitions/oauth2Scopes" + }, + "authorizationUrl": { + "type": "string", + "format": "uri" + }, + "tokenUrl": { + "type": "string", + "format": "uri" + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/vendorExtension" + } + } + }, + "oauth2Scopes": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "mediaTypeList": { + "type": "array", + "items": { + "$ref": "#/definitions/mimeType" + }, + "uniqueItems": true + }, + "parametersList": { + "type": "array", + "description": "The parameters needed to send a valid API call.", + "additionalItems": false, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/parameter" + }, + { + "$ref": "#/definitions/jsonReference" + } + ] + }, + "uniqueItems": true + }, + "schemesList": { + "type": "array", + "description": "The transfer protocol of the API.", + "items": { + "type": "string", + "enum": [ + "http", + "https", + "ws", + "wss" + ] + }, + "uniqueItems": true + }, + "collectionFormat": { + "type": "string", + "enum": [ + "csv", + "ssv", + "tsv", + "pipes" + ], + "default": "csv" + }, + "collectionFormatWithMulti": { + "type": "string", + "enum": [ + "csv", + "ssv", + "tsv", + "pipes", + "multi" + ], + "default": "csv" + }, + "title": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/title" + }, + "description": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/description" + }, + "default": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/default" + }, + "multipleOf": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" + }, + "maximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" + }, + "exclusiveMaximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" + }, + "minimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" + }, + "exclusiveMinimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" + }, + "maxLength": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" + }, + "minLength": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" + }, + "pattern": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" + }, + "maxItems": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" + }, + "minItems": { + "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" + }, + "uniqueItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" + }, + "enum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" + }, + "jsonReference": { + "type": "object", + "required": [ + "$ref" + ], + "additionalProperties": false, + "properties": { + "$ref": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go new file mode 100644 index 0000000000..2559f82370 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go @@ -0,0 +1,8333 @@ +// Copyright 2017 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +package openapi_v3 + +import ( + "fmt" + "github.com/googleapis/gnostic/compiler" + "gopkg.in/yaml.v2" + "regexp" + "strings" +) + +// Version returns the package name (and OpenAPI version). +func Version() string { + return "openapi_v3" +} + +// NewAdditionalPropertiesItem creates an object of type AdditionalPropertiesItem if possible, returning an error if not. +func NewAdditionalPropertiesItem(in interface{}, context *compiler.Context) (*AdditionalPropertiesItem, error) { + errors := make([]error, 0) + x := &AdditionalPropertiesItem{} + matched := false + // SchemaOrReference schema_or_reference = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSchemaOrReference(m, compiler.NewContext("schemaOrReference", context)) + if matchingError == nil { + x.Oneof = &AdditionalPropertiesItem_SchemaOrReference{SchemaOrReference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // bool boolean = 2; + boolValue, ok := in.(bool) + if ok { + x.Oneof = &AdditionalPropertiesItem_Boolean{Boolean: boolValue} + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewAny creates an object of type Any if possible, returning an error if not. +func NewAny(in interface{}, context *compiler.Context) (*Any, error) { + errors := make([]error, 0) + x := &Any{} + bytes, _ := yaml.Marshal(in) + x.Yaml = string(bytes) + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewAnyOrExpression creates an object of type AnyOrExpression if possible, returning an error if not. +func NewAnyOrExpression(in interface{}, context *compiler.Context) (*AnyOrExpression, error) { + errors := make([]error, 0) + x := &AnyOrExpression{} + matched := false + // Any any = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewAny(m, compiler.NewContext("any", context)) + if matchingError == nil { + x.Oneof = &AnyOrExpression_Any{Any: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Expression expression = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewExpression(m, compiler.NewContext("expression", context)) + if matchingError == nil { + x.Oneof = &AnyOrExpression_Expression{Expression: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewAnysOrExpressions creates an object of type AnysOrExpressions if possible, returning an error if not. +func NewAnysOrExpressions(in interface{}, context *compiler.Context) (*AnysOrExpressions, error) { + errors := make([]error, 0) + x := &AnysOrExpressions{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAnyOrExpression additional_properties = 1; + // MAP: AnyOrExpression + x.AdditionalProperties = make([]*NamedAnyOrExpression, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedAnyOrExpression{} + pair.Name = k + var err error + pair.Value, err = NewAnyOrExpression(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewCallback creates an object of type Callback if possible, returning an error if not. +func NewCallback(in interface{}, context *compiler.Context) (*Callback, error) { + errors := make([]error, 0) + x := &Callback{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern0, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated NamedPathItem path = 1; + // MAP: PathItem ^ + x.Path = make([]*NamedPathItem, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if true { + pair := &NamedPathItem{} + pair.Name = k + var err error + pair.Value, err = NewPathItem(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.Path = append(x.Path, pair) + } + } + } + // repeated NamedAny specification_extension = 2; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewCallbackOrReference creates an object of type CallbackOrReference if possible, returning an error if not. +func NewCallbackOrReference(in interface{}, context *compiler.Context) (*CallbackOrReference, error) { + errors := make([]error, 0) + x := &CallbackOrReference{} + matched := false + // Callback callback = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewCallback(m, compiler.NewContext("callback", context)) + if matchingError == nil { + x.Oneof = &CallbackOrReference_Callback{Callback: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &CallbackOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewCallbacksOrReferences creates an object of type CallbacksOrReferences if possible, returning an error if not. +func NewCallbacksOrReferences(in interface{}, context *compiler.Context) (*CallbacksOrReferences, error) { + errors := make([]error, 0) + x := &CallbacksOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedCallbackOrReference additional_properties = 1; + // MAP: CallbackOrReference + x.AdditionalProperties = make([]*NamedCallbackOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedCallbackOrReference{} + pair.Name = k + var err error + pair.Value, err = NewCallbackOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewComponents creates an object of type Components if possible, returning an error if not. +func NewComponents(in interface{}, context *compiler.Context) (*Components, error) { + errors := make([]error, 0) + x := &Components{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"callbacks", "examples", "headers", "links", "parameters", "requestBodies", "responses", "schemas", "securitySchemes"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // SchemasOrReferences schemas = 1; + v1 := compiler.MapValueForKey(m, "schemas") + if v1 != nil { + var err error + x.Schemas, err = NewSchemasOrReferences(v1, compiler.NewContext("schemas", context)) + if err != nil { + errors = append(errors, err) + } + } + // ResponsesOrReferences responses = 2; + v2 := compiler.MapValueForKey(m, "responses") + if v2 != nil { + var err error + x.Responses, err = NewResponsesOrReferences(v2, compiler.NewContext("responses", context)) + if err != nil { + errors = append(errors, err) + } + } + // ParametersOrReferences parameters = 3; + v3 := compiler.MapValueForKey(m, "parameters") + if v3 != nil { + var err error + x.Parameters, err = NewParametersOrReferences(v3, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 4; + v4 := compiler.MapValueForKey(m, "examples") + if v4 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v4, compiler.NewContext("examples", context)) + if err != nil { + errors = append(errors, err) + } + } + // RequestBodiesOrReferences request_bodies = 5; + v5 := compiler.MapValueForKey(m, "requestBodies") + if v5 != nil { + var err error + x.RequestBodies, err = NewRequestBodiesOrReferences(v5, compiler.NewContext("requestBodies", context)) + if err != nil { + errors = append(errors, err) + } + } + // HeadersOrReferences headers = 6; + v6 := compiler.MapValueForKey(m, "headers") + if v6 != nil { + var err error + x.Headers, err = NewHeadersOrReferences(v6, compiler.NewContext("headers", context)) + if err != nil { + errors = append(errors, err) + } + } + // SecuritySchemesOrReferences security_schemes = 7; + v7 := compiler.MapValueForKey(m, "securitySchemes") + if v7 != nil { + var err error + x.SecuritySchemes, err = NewSecuritySchemesOrReferences(v7, compiler.NewContext("securitySchemes", context)) + if err != nil { + errors = append(errors, err) + } + } + // LinksOrReferences links = 8; + v8 := compiler.MapValueForKey(m, "links") + if v8 != nil { + var err error + x.Links, err = NewLinksOrReferences(v8, compiler.NewContext("links", context)) + if err != nil { + errors = append(errors, err) + } + } + // CallbacksOrReferences callbacks = 9; + v9 := compiler.MapValueForKey(m, "callbacks") + if v9 != nil { + var err error + x.Callbacks, err = NewCallbacksOrReferences(v9, compiler.NewContext("callbacks", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 10; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewContact creates an object of type Contact if possible, returning an error if not. +func NewContact(in interface{}, context *compiler.Context) (*Contact, error) { + errors := make([]error, 0) + x := &Contact{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"email", "name", "url"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string email = 3; + v3 := compiler.MapValueForKey(m, "email") + if v3 != nil { + x.Email, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for email: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDefaultType creates an object of type DefaultType if possible, returning an error if not. +func NewDefaultType(in interface{}, context *compiler.Context) (*DefaultType, error) { + errors := make([]error, 0) + x := &DefaultType{} + matched := false + switch in := in.(type) { + case bool: + x.Oneof = &DefaultType_Boolean{Boolean: in} + matched = true + case string: + x.Oneof = &DefaultType_String_{String_: in} + matched = true + case int64: + x.Oneof = &DefaultType_Number{Number: float64(in)} + matched = true + case int32: + x.Oneof = &DefaultType_Number{Number: float64(in)} + matched = true + case int: + x.Oneof = &DefaultType_Number{Number: float64(in)} + matched = true + case float64: + x.Oneof = &DefaultType_Number{Number: in} + matched = true + case float32: + x.Oneof = &DefaultType_Number{Number: float64(in)} + matched = true + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDiscriminator creates an object of type Discriminator if possible, returning an error if not. +func NewDiscriminator(in interface{}, context *compiler.Context) (*Discriminator, error) { + errors := make([]error, 0) + x := &Discriminator{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"propertyName"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"mapping", "propertyName"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string property_name = 1; + v1 := compiler.MapValueForKey(m, "propertyName") + if v1 != nil { + x.PropertyName, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for propertyName: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Strings mapping = 2; + v2 := compiler.MapValueForKey(m, "mapping") + if v2 != nil { + var err error + x.Mapping, err = NewStrings(v2, compiler.NewContext("mapping", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewDocument creates an object of type Document if possible, returning an error if not. +func NewDocument(in interface{}, context *compiler.Context) (*Document, error) { + errors := make([]error, 0) + x := &Document{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"info", "openapi", "paths"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"components", "externalDocs", "info", "openapi", "paths", "security", "servers", "tags"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string openapi = 1; + v1 := compiler.MapValueForKey(m, "openapi") + if v1 != nil { + x.Openapi, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for openapi: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Info info = 2; + v2 := compiler.MapValueForKey(m, "info") + if v2 != nil { + var err error + x.Info, err = NewInfo(v2, compiler.NewContext("info", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated Server servers = 3; + v3 := compiler.MapValueForKey(m, "servers") + if v3 != nil { + // repeated Server + x.Servers = make([]*Server, 0) + a, ok := v3.([]interface{}) + if ok { + for _, item := range a { + y, err := NewServer(item, compiler.NewContext("servers", context)) + if err != nil { + errors = append(errors, err) + } + x.Servers = append(x.Servers, y) + } + } + } + // Paths paths = 4; + v4 := compiler.MapValueForKey(m, "paths") + if v4 != nil { + var err error + x.Paths, err = NewPaths(v4, compiler.NewContext("paths", context)) + if err != nil { + errors = append(errors, err) + } + } + // Components components = 5; + v5 := compiler.MapValueForKey(m, "components") + if v5 != nil { + var err error + x.Components, err = NewComponents(v5, compiler.NewContext("components", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated SecurityRequirement security = 6; + v6 := compiler.MapValueForKey(m, "security") + if v6 != nil { + // repeated SecurityRequirement + x.Security = make([]*SecurityRequirement, 0) + a, ok := v6.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSecurityRequirement(item, compiler.NewContext("security", context)) + if err != nil { + errors = append(errors, err) + } + x.Security = append(x.Security, y) + } + } + } + // repeated Tag tags = 7; + v7 := compiler.MapValueForKey(m, "tags") + if v7 != nil { + // repeated Tag + x.Tags = make([]*Tag, 0) + a, ok := v7.([]interface{}) + if ok { + for _, item := range a { + y, err := NewTag(item, compiler.NewContext("tags", context)) + if err != nil { + errors = append(errors, err) + } + x.Tags = append(x.Tags, y) + } + } + } + // ExternalDocs external_docs = 8; + v8 := compiler.MapValueForKey(m, "externalDocs") + if v8 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v8, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 9; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewEncoding creates an object of type Encoding if possible, returning an error if not. +func NewEncoding(in interface{}, context *compiler.Context) (*Encoding, error) { + errors := make([]error, 0) + x := &Encoding{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"allowReserved", "contentType", "explode", "headers", "style"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string content_type = 1; + v1 := compiler.MapValueForKey(m, "contentType") + if v1 != nil { + x.ContentType, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for contentType: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // HeadersOrReferences headers = 2; + v2 := compiler.MapValueForKey(m, "headers") + if v2 != nil { + var err error + x.Headers, err = NewHeadersOrReferences(v2, compiler.NewContext("headers", context)) + if err != nil { + errors = append(errors, err) + } + } + // string style = 3; + v3 := compiler.MapValueForKey(m, "style") + if v3 != nil { + x.Style, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for style: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool explode = 4; + v4 := compiler.MapValueForKey(m, "explode") + if v4 != nil { + x.Explode, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for explode: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_reserved = 5; + v5 := compiler.MapValueForKey(m, "allowReserved") + if v5 != nil { + x.AllowReserved, ok = v5.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowReserved: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 6; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewEncodings creates an object of type Encodings if possible, returning an error if not. +func NewEncodings(in interface{}, context *compiler.Context) (*Encodings, error) { + errors := make([]error, 0) + x := &Encodings{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedEncoding additional_properties = 1; + // MAP: Encoding + x.AdditionalProperties = make([]*NamedEncoding, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedEncoding{} + pair.Name = k + var err error + pair.Value, err = NewEncoding(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExample creates an object of type Example if possible, returning an error if not. +func NewExample(in interface{}, context *compiler.Context) (*Example, error) { + errors := make([]error, 0) + x := &Example{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"description", "externalValue", "summary", "value"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string summary = 1; + v1 := compiler.MapValueForKey(m, "summary") + if v1 != nil { + x.Summary, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any value = 3; + v3 := compiler.MapValueForKey(m, "value") + if v3 != nil { + var err error + x.Value, err = NewAny(v3, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + // string external_value = 4; + v4 := compiler.MapValueForKey(m, "externalValue") + if v4 != nil { + x.ExternalValue, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for externalValue: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExampleOrReference creates an object of type ExampleOrReference if possible, returning an error if not. +func NewExampleOrReference(in interface{}, context *compiler.Context) (*ExampleOrReference, error) { + errors := make([]error, 0) + x := &ExampleOrReference{} + matched := false + // Example example = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewExample(m, compiler.NewContext("example", context)) + if matchingError == nil { + x.Oneof = &ExampleOrReference_Example{Example: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &ExampleOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExamples creates an object of type Examples if possible, returning an error if not. +func NewExamples(in interface{}, context *compiler.Context) (*Examples, error) { + errors := make([]error, 0) + x := &Examples{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExamplesOrReferences creates an object of type ExamplesOrReferences if possible, returning an error if not. +func NewExamplesOrReferences(in interface{}, context *compiler.Context) (*ExamplesOrReferences, error) { + errors := make([]error, 0) + x := &ExamplesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedExampleOrReference additional_properties = 1; + // MAP: ExampleOrReference + x.AdditionalProperties = make([]*NamedExampleOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedExampleOrReference{} + pair.Name = k + var err error + pair.Value, err = NewExampleOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExpression creates an object of type Expression if possible, returning an error if not. +func NewExpression(in interface{}, context *compiler.Context) (*Expression, error) { + errors := make([]error, 0) + x := &Expression{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewExternalDocs creates an object of type ExternalDocs if possible, returning an error if not. +func NewExternalDocs(in interface{}, context *compiler.Context) (*ExternalDocs, error) { + errors := make([]error, 0) + x := &ExternalDocs{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"url"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "url"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeader creates an object of type Header if possible, returning an error if not. +func NewHeader(in interface{}, context *compiler.Context) (*Header, error) { + errors := make([]error, 0) + x := &Header{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"allowEmptyValue", "allowReserved", "content", "deprecated", "description", "example", "examples", "explode", "required", "schema", "style"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool required = 2; + v2 := compiler.MapValueForKey(m, "required") + if v2 != nil { + x.Required, ok = v2.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool deprecated = 3; + v3 := compiler.MapValueForKey(m, "deprecated") + if v3 != nil { + x.Deprecated, ok = v3.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_empty_value = 4; + v4 := compiler.MapValueForKey(m, "allowEmptyValue") + if v4 != nil { + x.AllowEmptyValue, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string style = 5; + v5 := compiler.MapValueForKey(m, "style") + if v5 != nil { + x.Style, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for style: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool explode = 6; + v6 := compiler.MapValueForKey(m, "explode") + if v6 != nil { + x.Explode, ok = v6.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for explode: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_reserved = 7; + v7 := compiler.MapValueForKey(m, "allowReserved") + if v7 != nil { + x.AllowReserved, ok = v7.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowReserved: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaOrReference schema = 8; + v8 := compiler.MapValueForKey(m, "schema") + if v8 != nil { + var err error + x.Schema, err = NewSchemaOrReference(v8, compiler.NewContext("schema", context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 9; + v9 := compiler.MapValueForKey(m, "example") + if v9 != nil { + var err error + x.Example, err = NewAny(v9, compiler.NewContext("example", context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 10; + v10 := compiler.MapValueForKey(m, "examples") + if v10 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v10, compiler.NewContext("examples", context)) + if err != nil { + errors = append(errors, err) + } + } + // MediaTypes content = 11; + v11 := compiler.MapValueForKey(m, "content") + if v11 != nil { + var err error + x.Content, err = NewMediaTypes(v11, compiler.NewContext("content", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 12; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeaderOrReference creates an object of type HeaderOrReference if possible, returning an error if not. +func NewHeaderOrReference(in interface{}, context *compiler.Context) (*HeaderOrReference, error) { + errors := make([]error, 0) + x := &HeaderOrReference{} + matched := false + // Header header = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewHeader(m, compiler.NewContext("header", context)) + if matchingError == nil { + x.Oneof = &HeaderOrReference_Header{Header: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &HeaderOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewHeadersOrReferences creates an object of type HeadersOrReferences if possible, returning an error if not. +func NewHeadersOrReferences(in interface{}, context *compiler.Context) (*HeadersOrReferences, error) { + errors := make([]error, 0) + x := &HeadersOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedHeaderOrReference additional_properties = 1; + // MAP: HeaderOrReference + x.AdditionalProperties = make([]*NamedHeaderOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedHeaderOrReference{} + pair.Name = k + var err error + pair.Value, err = NewHeaderOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewInfo creates an object of type Info if possible, returning an error if not. +func NewInfo(in interface{}, context *compiler.Context) (*Info, error) { + errors := make([]error, 0) + x := &Info{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"title", "version"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"contact", "description", "license", "termsOfService", "title", "version"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string title = 1; + v1 := compiler.MapValueForKey(m, "title") + if v1 != nil { + x.Title, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string terms_of_service = 3; + v3 := compiler.MapValueForKey(m, "termsOfService") + if v3 != nil { + x.TermsOfService, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for termsOfService: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Contact contact = 4; + v4 := compiler.MapValueForKey(m, "contact") + if v4 != nil { + var err error + x.Contact, err = NewContact(v4, compiler.NewContext("contact", context)) + if err != nil { + errors = append(errors, err) + } + } + // License license = 5; + v5 := compiler.MapValueForKey(m, "license") + if v5 != nil { + var err error + x.License, err = NewLicense(v5, compiler.NewContext("license", context)) + if err != nil { + errors = append(errors, err) + } + } + // string version = 6; + v6 := compiler.MapValueForKey(m, "version") + if v6 != nil { + x.Version, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for version: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 7; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewItemsItem creates an object of type ItemsItem if possible, returning an error if not. +func NewItemsItem(in interface{}, context *compiler.Context) (*ItemsItem, error) { + errors := make([]error, 0) + x := &ItemsItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value for item array: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + x.SchemaOrReference = make([]*SchemaOrReference, 0) + y, err := NewSchemaOrReference(m, compiler.NewContext("", context)) + if err != nil { + return nil, err + } + x.SchemaOrReference = append(x.SchemaOrReference, y) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLicense creates an object of type License if possible, returning an error if not. +func NewLicense(in interface{}, context *compiler.Context) (*License, error) { + errors := make([]error, 0) + x := &License{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"name", "url"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string url = 2; + v2 := compiler.MapValueForKey(m, "url") + if v2 != nil { + x.Url, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLink creates an object of type Link if possible, returning an error if not. +func NewLink(in interface{}, context *compiler.Context) (*Link, error) { + errors := make([]error, 0) + x := &Link{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"description", "operationId", "operationRef", "parameters", "requestBody", "server"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string operation_ref = 1; + v1 := compiler.MapValueForKey(m, "operationRef") + if v1 != nil { + x.OperationRef, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for operationRef: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string operation_id = 2; + v2 := compiler.MapValueForKey(m, "operationId") + if v2 != nil { + x.OperationId, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for operationId: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // AnysOrExpressions parameters = 3; + v3 := compiler.MapValueForKey(m, "parameters") + if v3 != nil { + var err error + x.Parameters, err = NewAnysOrExpressions(v3, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + } + // AnyOrExpression request_body = 4; + v4 := compiler.MapValueForKey(m, "requestBody") + if v4 != nil { + var err error + x.RequestBody, err = NewAnyOrExpression(v4, compiler.NewContext("requestBody", context)) + if err != nil { + errors = append(errors, err) + } + } + // string description = 5; + v5 := compiler.MapValueForKey(m, "description") + if v5 != nil { + x.Description, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Server server = 6; + v6 := compiler.MapValueForKey(m, "server") + if v6 != nil { + var err error + x.Server, err = NewServer(v6, compiler.NewContext("server", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 7; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLinkOrReference creates an object of type LinkOrReference if possible, returning an error if not. +func NewLinkOrReference(in interface{}, context *compiler.Context) (*LinkOrReference, error) { + errors := make([]error, 0) + x := &LinkOrReference{} + matched := false + // Link link = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewLink(m, compiler.NewContext("link", context)) + if matchingError == nil { + x.Oneof = &LinkOrReference_Link{Link: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &LinkOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewLinksOrReferences creates an object of type LinksOrReferences if possible, returning an error if not. +func NewLinksOrReferences(in interface{}, context *compiler.Context) (*LinksOrReferences, error) { + errors := make([]error, 0) + x := &LinksOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedLinkOrReference additional_properties = 1; + // MAP: LinkOrReference + x.AdditionalProperties = make([]*NamedLinkOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedLinkOrReference{} + pair.Name = k + var err error + pair.Value, err = NewLinkOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewMediaType creates an object of type MediaType if possible, returning an error if not. +func NewMediaType(in interface{}, context *compiler.Context) (*MediaType, error) { + errors := make([]error, 0) + x := &MediaType{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"encoding", "example", "examples", "schema"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // SchemaOrReference schema = 1; + v1 := compiler.MapValueForKey(m, "schema") + if v1 != nil { + var err error + x.Schema, err = NewSchemaOrReference(v1, compiler.NewContext("schema", context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 2; + v2 := compiler.MapValueForKey(m, "example") + if v2 != nil { + var err error + x.Example, err = NewAny(v2, compiler.NewContext("example", context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 3; + v3 := compiler.MapValueForKey(m, "examples") + if v3 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v3, compiler.NewContext("examples", context)) + if err != nil { + errors = append(errors, err) + } + } + // Encodings encoding = 4; + v4 := compiler.MapValueForKey(m, "encoding") + if v4 != nil { + var err error + x.Encoding, err = NewEncodings(v4, compiler.NewContext("encoding", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewMediaTypes creates an object of type MediaTypes if possible, returning an error if not. +func NewMediaTypes(in interface{}, context *compiler.Context) (*MediaTypes, error) { + errors := make([]error, 0) + x := &MediaTypes{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedMediaType additional_properties = 1; + // MAP: MediaType + x.AdditionalProperties = make([]*NamedMediaType, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedMediaType{} + pair.Name = k + var err error + pair.Value, err = NewMediaType(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedAny creates an object of type NamedAny if possible, returning an error if not. +func NewNamedAny(in interface{}, context *compiler.Context) (*NamedAny, error) { + errors := make([]error, 0) + x := &NamedAny{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Any value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewAny(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedAnyOrExpression creates an object of type NamedAnyOrExpression if possible, returning an error if not. +func NewNamedAnyOrExpression(in interface{}, context *compiler.Context) (*NamedAnyOrExpression, error) { + errors := make([]error, 0) + x := &NamedAnyOrExpression{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // AnyOrExpression value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewAnyOrExpression(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedCallbackOrReference creates an object of type NamedCallbackOrReference if possible, returning an error if not. +func NewNamedCallbackOrReference(in interface{}, context *compiler.Context) (*NamedCallbackOrReference, error) { + errors := make([]error, 0) + x := &NamedCallbackOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // CallbackOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewCallbackOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedEncoding creates an object of type NamedEncoding if possible, returning an error if not. +func NewNamedEncoding(in interface{}, context *compiler.Context) (*NamedEncoding, error) { + errors := make([]error, 0) + x := &NamedEncoding{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Encoding value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewEncoding(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedExampleOrReference creates an object of type NamedExampleOrReference if possible, returning an error if not. +func NewNamedExampleOrReference(in interface{}, context *compiler.Context) (*NamedExampleOrReference, error) { + errors := make([]error, 0) + x := &NamedExampleOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExampleOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewExampleOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedHeaderOrReference creates an object of type NamedHeaderOrReference if possible, returning an error if not. +func NewNamedHeaderOrReference(in interface{}, context *compiler.Context) (*NamedHeaderOrReference, error) { + errors := make([]error, 0) + x := &NamedHeaderOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // HeaderOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewHeaderOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedLinkOrReference creates an object of type NamedLinkOrReference if possible, returning an error if not. +func NewNamedLinkOrReference(in interface{}, context *compiler.Context) (*NamedLinkOrReference, error) { + errors := make([]error, 0) + x := &NamedLinkOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // LinkOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewLinkOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedMediaType creates an object of type NamedMediaType if possible, returning an error if not. +func NewNamedMediaType(in interface{}, context *compiler.Context) (*NamedMediaType, error) { + errors := make([]error, 0) + x := &NamedMediaType{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // MediaType value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewMediaType(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedParameterOrReference creates an object of type NamedParameterOrReference if possible, returning an error if not. +func NewNamedParameterOrReference(in interface{}, context *compiler.Context) (*NamedParameterOrReference, error) { + errors := make([]error, 0) + x := &NamedParameterOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ParameterOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewParameterOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedPathItem creates an object of type NamedPathItem if possible, returning an error if not. +func NewNamedPathItem(in interface{}, context *compiler.Context) (*NamedPathItem, error) { + errors := make([]error, 0) + x := &NamedPathItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // PathItem value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewPathItem(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedRequestBodyOrReference creates an object of type NamedRequestBodyOrReference if possible, returning an error if not. +func NewNamedRequestBodyOrReference(in interface{}, context *compiler.Context) (*NamedRequestBodyOrReference, error) { + errors := make([]error, 0) + x := &NamedRequestBodyOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // RequestBodyOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewRequestBodyOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedResponseOrReference creates an object of type NamedResponseOrReference if possible, returning an error if not. +func NewNamedResponseOrReference(in interface{}, context *compiler.Context) (*NamedResponseOrReference, error) { + errors := make([]error, 0) + x := &NamedResponseOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ResponseOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewResponseOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedSchemaOrReference creates an object of type NamedSchemaOrReference if possible, returning an error if not. +func NewNamedSchemaOrReference(in interface{}, context *compiler.Context) (*NamedSchemaOrReference, error) { + errors := make([]error, 0) + x := &NamedSchemaOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewSchemaOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedSecuritySchemeOrReference creates an object of type NamedSecuritySchemeOrReference if possible, returning an error if not. +func NewNamedSecuritySchemeOrReference(in interface{}, context *compiler.Context) (*NamedSecuritySchemeOrReference, error) { + errors := make([]error, 0) + x := &NamedSecuritySchemeOrReference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SecuritySchemeOrReference value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewSecuritySchemeOrReference(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedServerVariable creates an object of type NamedServerVariable if possible, returning an error if not. +func NewNamedServerVariable(in interface{}, context *compiler.Context) (*NamedServerVariable, error) { + errors := make([]error, 0) + x := &NamedServerVariable{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ServerVariable value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + var err error + x.Value, err = NewServerVariable(v2, compiler.NewContext("value", context)) + if err != nil { + errors = append(errors, err) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewNamedString creates an object of type NamedString if possible, returning an error if not. +func NewNamedString(in interface{}, context *compiler.Context) (*NamedString, error) { + errors := make([]error, 0) + x := &NamedString{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"name", "value"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string value = 2; + v2 := compiler.MapValueForKey(m, "value") + if v2 != nil { + x.Value, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for value: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauthFlow creates an object of type OauthFlow if possible, returning an error if not. +func NewOauthFlow(in interface{}, context *compiler.Context) (*OauthFlow, error) { + errors := make([]error, 0) + x := &OauthFlow{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"authorizationUrl", "refreshUrl", "scopes", "tokenUrl"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string authorization_url = 1; + v1 := compiler.MapValueForKey(m, "authorizationUrl") + if v1 != nil { + x.AuthorizationUrl, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for authorizationUrl: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string token_url = 2; + v2 := compiler.MapValueForKey(m, "tokenUrl") + if v2 != nil { + x.TokenUrl, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for tokenUrl: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string refresh_url = 3; + v3 := compiler.MapValueForKey(m, "refreshUrl") + if v3 != nil { + x.RefreshUrl, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for refreshUrl: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Strings scopes = 4; + v4 := compiler.MapValueForKey(m, "scopes") + if v4 != nil { + var err error + x.Scopes, err = NewStrings(v4, compiler.NewContext("scopes", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOauthFlows creates an object of type OauthFlows if possible, returning an error if not. +func NewOauthFlows(in interface{}, context *compiler.Context) (*OauthFlows, error) { + errors := make([]error, 0) + x := &OauthFlows{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"authorizationCode", "clientCredentials", "implicit", "password"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // OauthFlow implicit = 1; + v1 := compiler.MapValueForKey(m, "implicit") + if v1 != nil { + var err error + x.Implicit, err = NewOauthFlow(v1, compiler.NewContext("implicit", context)) + if err != nil { + errors = append(errors, err) + } + } + // OauthFlow password = 2; + v2 := compiler.MapValueForKey(m, "password") + if v2 != nil { + var err error + x.Password, err = NewOauthFlow(v2, compiler.NewContext("password", context)) + if err != nil { + errors = append(errors, err) + } + } + // OauthFlow client_credentials = 3; + v3 := compiler.MapValueForKey(m, "clientCredentials") + if v3 != nil { + var err error + x.ClientCredentials, err = NewOauthFlow(v3, compiler.NewContext("clientCredentials", context)) + if err != nil { + errors = append(errors, err) + } + } + // OauthFlow authorization_code = 4; + v4 := compiler.MapValueForKey(m, "authorizationCode") + if v4 != nil { + var err error + x.AuthorizationCode, err = NewOauthFlow(v4, compiler.NewContext("authorizationCode", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewObject creates an object of type Object if possible, returning an error if not. +func NewObject(in interface{}, context *compiler.Context) (*Object, error) { + errors := make([]error, 0) + x := &Object{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedAny additional_properties = 1; + // MAP: Any + x.AdditionalProperties = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewOperation creates an object of type Operation if possible, returning an error if not. +func NewOperation(in interface{}, context *compiler.Context) (*Operation, error) { + errors := make([]error, 0) + x := &Operation{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"responses"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"callbacks", "deprecated", "description", "externalDocs", "operationId", "parameters", "requestBody", "responses", "security", "servers", "summary", "tags"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated string tags = 1; + v1 := compiler.MapValueForKey(m, "tags") + if v1 != nil { + v, ok := v1.([]interface{}) + if ok { + x.Tags = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for tags: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 2; + v2 := compiler.MapValueForKey(m, "summary") + if v2 != nil { + x.Summary, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 4; + v4 := compiler.MapValueForKey(m, "externalDocs") + if v4 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v4, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // string operation_id = 5; + v5 := compiler.MapValueForKey(m, "operationId") + if v5 != nil { + x.OperationId, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for operationId: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated ParameterOrReference parameters = 6; + v6 := compiler.MapValueForKey(m, "parameters") + if v6 != nil { + // repeated ParameterOrReference + x.Parameters = make([]*ParameterOrReference, 0) + a, ok := v6.([]interface{}) + if ok { + for _, item := range a { + y, err := NewParameterOrReference(item, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + x.Parameters = append(x.Parameters, y) + } + } + } + // RequestBodyOrReference request_body = 7; + v7 := compiler.MapValueForKey(m, "requestBody") + if v7 != nil { + var err error + x.RequestBody, err = NewRequestBodyOrReference(v7, compiler.NewContext("requestBody", context)) + if err != nil { + errors = append(errors, err) + } + } + // Responses responses = 8; + v8 := compiler.MapValueForKey(m, "responses") + if v8 != nil { + var err error + x.Responses, err = NewResponses(v8, compiler.NewContext("responses", context)) + if err != nil { + errors = append(errors, err) + } + } + // CallbacksOrReferences callbacks = 9; + v9 := compiler.MapValueForKey(m, "callbacks") + if v9 != nil { + var err error + x.Callbacks, err = NewCallbacksOrReferences(v9, compiler.NewContext("callbacks", context)) + if err != nil { + errors = append(errors, err) + } + } + // bool deprecated = 10; + v10 := compiler.MapValueForKey(m, "deprecated") + if v10 != nil { + x.Deprecated, ok = v10.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated SecurityRequirement security = 11; + v11 := compiler.MapValueForKey(m, "security") + if v11 != nil { + // repeated SecurityRequirement + x.Security = make([]*SecurityRequirement, 0) + a, ok := v11.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSecurityRequirement(item, compiler.NewContext("security", context)) + if err != nil { + errors = append(errors, err) + } + x.Security = append(x.Security, y) + } + } + } + // repeated Server servers = 12; + v12 := compiler.MapValueForKey(m, "servers") + if v12 != nil { + // repeated Server + x.Servers = make([]*Server, 0) + a, ok := v12.([]interface{}) + if ok { + for _, item := range a { + y, err := NewServer(item, compiler.NewContext("servers", context)) + if err != nil { + errors = append(errors, err) + } + x.Servers = append(x.Servers, y) + } + } + } + // repeated NamedAny specification_extension = 13; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParameter creates an object of type Parameter if possible, returning an error if not. +func NewParameter(in interface{}, context *compiler.Context) (*Parameter, error) { + errors := make([]error, 0) + x := &Parameter{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"in", "name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"allowEmptyValue", "allowReserved", "content", "deprecated", "description", "example", "examples", "explode", "in", "name", "required", "schema", "style"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 2; + v2 := compiler.MapValueForKey(m, "in") + if v2 != nil { + x.In, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool required = 4; + v4 := compiler.MapValueForKey(m, "required") + if v4 != nil { + x.Required, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool deprecated = 5; + v5 := compiler.MapValueForKey(m, "deprecated") + if v5 != nil { + x.Deprecated, ok = v5.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_empty_value = 6; + v6 := compiler.MapValueForKey(m, "allowEmptyValue") + if v6 != nil { + x.AllowEmptyValue, ok = v6.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowEmptyValue: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string style = 7; + v7 := compiler.MapValueForKey(m, "style") + if v7 != nil { + x.Style, ok = v7.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for style: %+v (%T)", v7, v7) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool explode = 8; + v8 := compiler.MapValueForKey(m, "explode") + if v8 != nil { + x.Explode, ok = v8.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for explode: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool allow_reserved = 9; + v9 := compiler.MapValueForKey(m, "allowReserved") + if v9 != nil { + x.AllowReserved, ok = v9.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for allowReserved: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // SchemaOrReference schema = 10; + v10 := compiler.MapValueForKey(m, "schema") + if v10 != nil { + var err error + x.Schema, err = NewSchemaOrReference(v10, compiler.NewContext("schema", context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 11; + v11 := compiler.MapValueForKey(m, "example") + if v11 != nil { + var err error + x.Example, err = NewAny(v11, compiler.NewContext("example", context)) + if err != nil { + errors = append(errors, err) + } + } + // ExamplesOrReferences examples = 12; + v12 := compiler.MapValueForKey(m, "examples") + if v12 != nil { + var err error + x.Examples, err = NewExamplesOrReferences(v12, compiler.NewContext("examples", context)) + if err != nil { + errors = append(errors, err) + } + } + // MediaTypes content = 13; + v13 := compiler.MapValueForKey(m, "content") + if v13 != nil { + var err error + x.Content, err = NewMediaTypes(v13, compiler.NewContext("content", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 14; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParameterOrReference creates an object of type ParameterOrReference if possible, returning an error if not. +func NewParameterOrReference(in interface{}, context *compiler.Context) (*ParameterOrReference, error) { + errors := make([]error, 0) + x := &ParameterOrReference{} + matched := false + // Parameter parameter = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewParameter(m, compiler.NewContext("parameter", context)) + if matchingError == nil { + x.Oneof = &ParameterOrReference_Parameter{Parameter: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &ParameterOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewParametersOrReferences creates an object of type ParametersOrReferences if possible, returning an error if not. +func NewParametersOrReferences(in interface{}, context *compiler.Context) (*ParametersOrReferences, error) { + errors := make([]error, 0) + x := &ParametersOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedParameterOrReference additional_properties = 1; + // MAP: ParameterOrReference + x.AdditionalProperties = make([]*NamedParameterOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedParameterOrReference{} + pair.Name = k + var err error + pair.Value, err = NewParameterOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPathItem creates an object of type PathItem if possible, returning an error if not. +func NewPathItem(in interface{}, context *compiler.Context) (*PathItem, error) { + errors := make([]error, 0) + x := &PathItem{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"$ref", "delete", "description", "get", "head", "options", "parameters", "patch", "post", "put", "servers", "summary", "trace"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string summary = 2; + v2 := compiler.MapValueForKey(m, "summary") + if v2 != nil { + x.Summary, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for summary: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Operation get = 4; + v4 := compiler.MapValueForKey(m, "get") + if v4 != nil { + var err error + x.Get, err = NewOperation(v4, compiler.NewContext("get", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation put = 5; + v5 := compiler.MapValueForKey(m, "put") + if v5 != nil { + var err error + x.Put, err = NewOperation(v5, compiler.NewContext("put", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation post = 6; + v6 := compiler.MapValueForKey(m, "post") + if v6 != nil { + var err error + x.Post, err = NewOperation(v6, compiler.NewContext("post", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation delete = 7; + v7 := compiler.MapValueForKey(m, "delete") + if v7 != nil { + var err error + x.Delete, err = NewOperation(v7, compiler.NewContext("delete", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation options = 8; + v8 := compiler.MapValueForKey(m, "options") + if v8 != nil { + var err error + x.Options, err = NewOperation(v8, compiler.NewContext("options", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation head = 9; + v9 := compiler.MapValueForKey(m, "head") + if v9 != nil { + var err error + x.Head, err = NewOperation(v9, compiler.NewContext("head", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation patch = 10; + v10 := compiler.MapValueForKey(m, "patch") + if v10 != nil { + var err error + x.Patch, err = NewOperation(v10, compiler.NewContext("patch", context)) + if err != nil { + errors = append(errors, err) + } + } + // Operation trace = 11; + v11 := compiler.MapValueForKey(m, "trace") + if v11 != nil { + var err error + x.Trace, err = NewOperation(v11, compiler.NewContext("trace", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated Server servers = 12; + v12 := compiler.MapValueForKey(m, "servers") + if v12 != nil { + // repeated Server + x.Servers = make([]*Server, 0) + a, ok := v12.([]interface{}) + if ok { + for _, item := range a { + y, err := NewServer(item, compiler.NewContext("servers", context)) + if err != nil { + errors = append(errors, err) + } + x.Servers = append(x.Servers, y) + } + } + } + // repeated ParameterOrReference parameters = 13; + v13 := compiler.MapValueForKey(m, "parameters") + if v13 != nil { + // repeated ParameterOrReference + x.Parameters = make([]*ParameterOrReference, 0) + a, ok := v13.([]interface{}) + if ok { + for _, item := range a { + y, err := NewParameterOrReference(item, compiler.NewContext("parameters", context)) + if err != nil { + errors = append(errors, err) + } + x.Parameters = append(x.Parameters, y) + } + } + } + // repeated NamedAny specification_extension = 14; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewPaths creates an object of type Paths if possible, returning an error if not. +func NewPaths(in interface{}, context *compiler.Context) (*Paths, error) { + errors := make([]error, 0) + x := &Paths{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern2, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated NamedPathItem path = 1; + // MAP: PathItem ^/ + x.Path = make([]*NamedPathItem, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "/") { + pair := &NamedPathItem{} + pair.Name = k + var err error + pair.Value, err = NewPathItem(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.Path = append(x.Path, pair) + } + } + } + // repeated NamedAny specification_extension = 2; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewProperties creates an object of type Properties if possible, returning an error if not. +func NewProperties(in interface{}, context *compiler.Context) (*Properties, error) { + errors := make([]error, 0) + x := &Properties{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSchemaOrReference additional_properties = 1; + // MAP: SchemaOrReference + x.AdditionalProperties = make([]*NamedSchemaOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedSchemaOrReference{} + pair.Name = k + var err error + pair.Value, err = NewSchemaOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewReference creates an object of type Reference if possible, returning an error if not. +func NewReference(in interface{}, context *compiler.Context) (*Reference, error) { + errors := make([]error, 0) + x := &Reference{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"$ref"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"$ref"} + var allowedPatterns []*regexp.Regexp + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string _ref = 1; + v1 := compiler.MapValueForKey(m, "$ref") + if v1 != nil { + x.XRef, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for $ref: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewRequestBodiesOrReferences creates an object of type RequestBodiesOrReferences if possible, returning an error if not. +func NewRequestBodiesOrReferences(in interface{}, context *compiler.Context) (*RequestBodiesOrReferences, error) { + errors := make([]error, 0) + x := &RequestBodiesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedRequestBodyOrReference additional_properties = 1; + // MAP: RequestBodyOrReference + x.AdditionalProperties = make([]*NamedRequestBodyOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedRequestBodyOrReference{} + pair.Name = k + var err error + pair.Value, err = NewRequestBodyOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewRequestBody creates an object of type RequestBody if possible, returning an error if not. +func NewRequestBody(in interface{}, context *compiler.Context) (*RequestBody, error) { + errors := make([]error, 0) + x := &RequestBody{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"content"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"content", "description", "required"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // MediaTypes content = 2; + v2 := compiler.MapValueForKey(m, "content") + if v2 != nil { + var err error + x.Content, err = NewMediaTypes(v2, compiler.NewContext("content", context)) + if err != nil { + errors = append(errors, err) + } + } + // bool required = 3; + v3 := compiler.MapValueForKey(m, "required") + if v3 != nil { + x.Required, ok = v3.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewRequestBodyOrReference creates an object of type RequestBodyOrReference if possible, returning an error if not. +func NewRequestBodyOrReference(in interface{}, context *compiler.Context) (*RequestBodyOrReference, error) { + errors := make([]error, 0) + x := &RequestBodyOrReference{} + matched := false + // RequestBody request_body = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewRequestBody(m, compiler.NewContext("requestBody", context)) + if matchingError == nil { + x.Oneof = &RequestBodyOrReference_RequestBody{RequestBody: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &RequestBodyOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponse creates an object of type Response if possible, returning an error if not. +func NewResponse(in interface{}, context *compiler.Context) (*Response, error) { + errors := make([]error, 0) + x := &Response{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"description"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"content", "description", "headers", "links"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string description = 1; + v1 := compiler.MapValueForKey(m, "description") + if v1 != nil { + x.Description, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // HeadersOrReferences headers = 2; + v2 := compiler.MapValueForKey(m, "headers") + if v2 != nil { + var err error + x.Headers, err = NewHeadersOrReferences(v2, compiler.NewContext("headers", context)) + if err != nil { + errors = append(errors, err) + } + } + // MediaTypes content = 3; + v3 := compiler.MapValueForKey(m, "content") + if v3 != nil { + var err error + x.Content, err = NewMediaTypes(v3, compiler.NewContext("content", context)) + if err != nil { + errors = append(errors, err) + } + } + // LinksOrReferences links = 4; + v4 := compiler.MapValueForKey(m, "links") + if v4 != nil { + var err error + x.Links, err = NewLinksOrReferences(v4, compiler.NewContext("links", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 5; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponseOrReference creates an object of type ResponseOrReference if possible, returning an error if not. +func NewResponseOrReference(in interface{}, context *compiler.Context) (*ResponseOrReference, error) { + errors := make([]error, 0) + x := &ResponseOrReference{} + matched := false + // Response response = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewResponse(m, compiler.NewContext("response", context)) + if matchingError == nil { + x.Oneof = &ResponseOrReference_Response{Response: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &ResponseOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponses creates an object of type Responses if possible, returning an error if not. +func NewResponses(in interface{}, context *compiler.Context) (*Responses, error) { + errors := make([]error, 0) + x := &Responses{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"default"} + allowedPatterns := []*regexp.Regexp{pattern3, pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // ResponseOrReference default = 1; + v1 := compiler.MapValueForKey(m, "default") + if v1 != nil { + var err error + x.Default, err = NewResponseOrReference(v1, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedResponseOrReference response_or_reference = 2; + // MAP: ResponseOrReference ^([0-9X]{3})$ + x.ResponseOrReference = make([]*NamedResponseOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if pattern3.MatchString(k) { + pair := &NamedResponseOrReference{} + pair.Name = k + var err error + pair.Value, err = NewResponseOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.ResponseOrReference = append(x.ResponseOrReference, pair) + } + } + } + // repeated NamedAny specification_extension = 3; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewResponsesOrReferences creates an object of type ResponsesOrReferences if possible, returning an error if not. +func NewResponsesOrReferences(in interface{}, context *compiler.Context) (*ResponsesOrReferences, error) { + errors := make([]error, 0) + x := &ResponsesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedResponseOrReference additional_properties = 1; + // MAP: ResponseOrReference + x.AdditionalProperties = make([]*NamedResponseOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedResponseOrReference{} + pair.Name = k + var err error + pair.Value, err = NewResponseOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchema creates an object of type Schema if possible, returning an error if not. +func NewSchema(in interface{}, context *compiler.Context) (*Schema, error) { + errors := make([]error, 0) + x := &Schema{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"additionalProperties", "allOf", "anyOf", "default", "deprecated", "description", "discriminator", "enum", "example", "exclusiveMaximum", "exclusiveMinimum", "externalDocs", "format", "items", "maxItems", "maxLength", "maxProperties", "maximum", "minItems", "minLength", "minProperties", "minimum", "multipleOf", "not", "nullable", "oneOf", "pattern", "properties", "readOnly", "required", "title", "type", "uniqueItems", "writeOnly", "xml"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // bool nullable = 1; + v1 := compiler.MapValueForKey(m, "nullable") + if v1 != nil { + x.Nullable, ok = v1.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for nullable: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Discriminator discriminator = 2; + v2 := compiler.MapValueForKey(m, "discriminator") + if v2 != nil { + var err error + x.Discriminator, err = NewDiscriminator(v2, compiler.NewContext("discriminator", context)) + if err != nil { + errors = append(errors, err) + } + } + // bool read_only = 3; + v3 := compiler.MapValueForKey(m, "readOnly") + if v3 != nil { + x.ReadOnly, ok = v3.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for readOnly: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool write_only = 4; + v4 := compiler.MapValueForKey(m, "writeOnly") + if v4 != nil { + x.WriteOnly, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for writeOnly: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // Xml xml = 5; + v5 := compiler.MapValueForKey(m, "xml") + if v5 != nil { + var err error + x.Xml, err = NewXml(v5, compiler.NewContext("xml", context)) + if err != nil { + errors = append(errors, err) + } + } + // ExternalDocs external_docs = 6; + v6 := compiler.MapValueForKey(m, "externalDocs") + if v6 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v6, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // Any example = 7; + v7 := compiler.MapValueForKey(m, "example") + if v7 != nil { + var err error + x.Example, err = NewAny(v7, compiler.NewContext("example", context)) + if err != nil { + errors = append(errors, err) + } + } + // bool deprecated = 8; + v8 := compiler.MapValueForKey(m, "deprecated") + if v8 != nil { + x.Deprecated, ok = v8.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for deprecated: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string title = 9; + v9 := compiler.MapValueForKey(m, "title") + if v9 != nil { + x.Title, ok = v9.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for title: %+v (%T)", v9, v9) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float multiple_of = 10; + v10 := compiler.MapValueForKey(m, "multipleOf") + if v10 != nil { + switch v10 := v10.(type) { + case float64: + x.MultipleOf = v10 + case float32: + x.MultipleOf = float64(v10) + case uint64: + x.MultipleOf = float64(v10) + case uint32: + x.MultipleOf = float64(v10) + case int64: + x.MultipleOf = float64(v10) + case int32: + x.MultipleOf = float64(v10) + case int: + x.MultipleOf = float64(v10) + default: + message := fmt.Sprintf("has unexpected value for multipleOf: %+v (%T)", v10, v10) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float maximum = 11; + v11 := compiler.MapValueForKey(m, "maximum") + if v11 != nil { + switch v11 := v11.(type) { + case float64: + x.Maximum = v11 + case float32: + x.Maximum = float64(v11) + case uint64: + x.Maximum = float64(v11) + case uint32: + x.Maximum = float64(v11) + case int64: + x.Maximum = float64(v11) + case int32: + x.Maximum = float64(v11) + case int: + x.Maximum = float64(v11) + default: + message := fmt.Sprintf("has unexpected value for maximum: %+v (%T)", v11, v11) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_maximum = 12; + v12 := compiler.MapValueForKey(m, "exclusiveMaximum") + if v12 != nil { + x.ExclusiveMaximum, ok = v12.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMaximum: %+v (%T)", v12, v12) + errors = append(errors, compiler.NewError(context, message)) + } + } + // float minimum = 13; + v13 := compiler.MapValueForKey(m, "minimum") + if v13 != nil { + switch v13 := v13.(type) { + case float64: + x.Minimum = v13 + case float32: + x.Minimum = float64(v13) + case uint64: + x.Minimum = float64(v13) + case uint32: + x.Minimum = float64(v13) + case int64: + x.Minimum = float64(v13) + case int32: + x.Minimum = float64(v13) + case int: + x.Minimum = float64(v13) + default: + message := fmt.Sprintf("has unexpected value for minimum: %+v (%T)", v13, v13) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool exclusive_minimum = 14; + v14 := compiler.MapValueForKey(m, "exclusiveMinimum") + if v14 != nil { + x.ExclusiveMinimum, ok = v14.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for exclusiveMinimum: %+v (%T)", v14, v14) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_length = 15; + v15 := compiler.MapValueForKey(m, "maxLength") + if v15 != nil { + t, ok := v15.(int) + if ok { + x.MaxLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxLength: %+v (%T)", v15, v15) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_length = 16; + v16 := compiler.MapValueForKey(m, "minLength") + if v16 != nil { + t, ok := v16.(int) + if ok { + x.MinLength = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minLength: %+v (%T)", v16, v16) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string pattern = 17; + v17 := compiler.MapValueForKey(m, "pattern") + if v17 != nil { + x.Pattern, ok = v17.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for pattern: %+v (%T)", v17, v17) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_items = 18; + v18 := compiler.MapValueForKey(m, "maxItems") + if v18 != nil { + t, ok := v18.(int) + if ok { + x.MaxItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxItems: %+v (%T)", v18, v18) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_items = 19; + v19 := compiler.MapValueForKey(m, "minItems") + if v19 != nil { + t, ok := v19.(int) + if ok { + x.MinItems = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minItems: %+v (%T)", v19, v19) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool unique_items = 20; + v20 := compiler.MapValueForKey(m, "uniqueItems") + if v20 != nil { + x.UniqueItems, ok = v20.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for uniqueItems: %+v (%T)", v20, v20) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 max_properties = 21; + v21 := compiler.MapValueForKey(m, "maxProperties") + if v21 != nil { + t, ok := v21.(int) + if ok { + x.MaxProperties = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for maxProperties: %+v (%T)", v21, v21) + errors = append(errors, compiler.NewError(context, message)) + } + } + // int64 min_properties = 22; + v22 := compiler.MapValueForKey(m, "minProperties") + if v22 != nil { + t, ok := v22.(int) + if ok { + x.MinProperties = int64(t) + } else { + message := fmt.Sprintf("has unexpected value for minProperties: %+v (%T)", v22, v22) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated string required = 23; + v23 := compiler.MapValueForKey(m, "required") + if v23 != nil { + v, ok := v23.([]interface{}) + if ok { + x.Required = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for required: %+v (%T)", v23, v23) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated Any enum = 24; + v24 := compiler.MapValueForKey(m, "enum") + if v24 != nil { + // repeated Any + x.Enum = make([]*Any, 0) + a, ok := v24.([]interface{}) + if ok { + for _, item := range a { + y, err := NewAny(item, compiler.NewContext("enum", context)) + if err != nil { + errors = append(errors, err) + } + x.Enum = append(x.Enum, y) + } + } + } + // string type = 25; + v25 := compiler.MapValueForKey(m, "type") + if v25 != nil { + x.Type, ok = v25.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v25, v25) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated SchemaOrReference all_of = 26; + v26 := compiler.MapValueForKey(m, "allOf") + if v26 != nil { + // repeated SchemaOrReference + x.AllOf = make([]*SchemaOrReference, 0) + a, ok := v26.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSchemaOrReference(item, compiler.NewContext("allOf", context)) + if err != nil { + errors = append(errors, err) + } + x.AllOf = append(x.AllOf, y) + } + } + } + // repeated SchemaOrReference one_of = 27; + v27 := compiler.MapValueForKey(m, "oneOf") + if v27 != nil { + // repeated SchemaOrReference + x.OneOf = make([]*SchemaOrReference, 0) + a, ok := v27.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSchemaOrReference(item, compiler.NewContext("oneOf", context)) + if err != nil { + errors = append(errors, err) + } + x.OneOf = append(x.OneOf, y) + } + } + } + // repeated SchemaOrReference any_of = 28; + v28 := compiler.MapValueForKey(m, "anyOf") + if v28 != nil { + // repeated SchemaOrReference + x.AnyOf = make([]*SchemaOrReference, 0) + a, ok := v28.([]interface{}) + if ok { + for _, item := range a { + y, err := NewSchemaOrReference(item, compiler.NewContext("anyOf", context)) + if err != nil { + errors = append(errors, err) + } + x.AnyOf = append(x.AnyOf, y) + } + } + } + // Schema not = 29; + v29 := compiler.MapValueForKey(m, "not") + if v29 != nil { + var err error + x.Not, err = NewSchema(v29, compiler.NewContext("not", context)) + if err != nil { + errors = append(errors, err) + } + } + // ItemsItem items = 30; + v30 := compiler.MapValueForKey(m, "items") + if v30 != nil { + var err error + x.Items, err = NewItemsItem(v30, compiler.NewContext("items", context)) + if err != nil { + errors = append(errors, err) + } + } + // Properties properties = 31; + v31 := compiler.MapValueForKey(m, "properties") + if v31 != nil { + var err error + x.Properties, err = NewProperties(v31, compiler.NewContext("properties", context)) + if err != nil { + errors = append(errors, err) + } + } + // AdditionalPropertiesItem additional_properties = 32; + v32 := compiler.MapValueForKey(m, "additionalProperties") + if v32 != nil { + var err error + x.AdditionalProperties, err = NewAdditionalPropertiesItem(v32, compiler.NewContext("additionalProperties", context)) + if err != nil { + errors = append(errors, err) + } + } + // DefaultType default = 33; + v33 := compiler.MapValueForKey(m, "default") + if v33 != nil { + var err error + x.Default, err = NewDefaultType(v33, compiler.NewContext("default", context)) + if err != nil { + errors = append(errors, err) + } + } + // string description = 34; + v34 := compiler.MapValueForKey(m, "description") + if v34 != nil { + x.Description, ok = v34.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v34, v34) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string format = 35; + v35 := compiler.MapValueForKey(m, "format") + if v35 != nil { + x.Format, ok = v35.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for format: %+v (%T)", v35, v35) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 36; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchemaOrReference creates an object of type SchemaOrReference if possible, returning an error if not. +func NewSchemaOrReference(in interface{}, context *compiler.Context) (*SchemaOrReference, error) { + errors := make([]error, 0) + x := &SchemaOrReference{} + matched := false + // Schema schema = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSchema(m, compiler.NewContext("schema", context)) + if matchingError == nil { + x.Oneof = &SchemaOrReference_Schema{Schema: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &SchemaOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSchemasOrReferences creates an object of type SchemasOrReferences if possible, returning an error if not. +func NewSchemasOrReferences(in interface{}, context *compiler.Context) (*SchemasOrReferences, error) { + errors := make([]error, 0) + x := &SchemasOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSchemaOrReference additional_properties = 1; + // MAP: SchemaOrReference + x.AdditionalProperties = make([]*NamedSchemaOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedSchemaOrReference{} + pair.Name = k + var err error + pair.Value, err = NewSchemaOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityRequirement creates an object of type SecurityRequirement if possible, returning an error if not. +func NewSecurityRequirement(in interface{}, context *compiler.Context) (*SecurityRequirement, error) { + errors := make([]error, 0) + x := &SecurityRequirement{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{} + allowedPatterns := []*regexp.Regexp{pattern4} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecurityScheme creates an object of type SecurityScheme if possible, returning an error if not. +func NewSecurityScheme(in interface{}, context *compiler.Context) (*SecurityScheme, error) { + errors := make([]error, 0) + x := &SecurityScheme{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"type"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"bearerFormat", "description", "flows", "in", "name", "openIdConnectUrl", "scheme", "type"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string type = 1; + v1 := compiler.MapValueForKey(m, "type") + if v1 != nil { + x.Type, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for type: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string name = 3; + v3 := compiler.MapValueForKey(m, "name") + if v3 != nil { + x.Name, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string in = 4; + v4 := compiler.MapValueForKey(m, "in") + if v4 != nil { + x.In, ok = v4.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for in: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string scheme = 5; + v5 := compiler.MapValueForKey(m, "scheme") + if v5 != nil { + x.Scheme, ok = v5.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for scheme: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string bearer_format = 6; + v6 := compiler.MapValueForKey(m, "bearerFormat") + if v6 != nil { + x.BearerFormat, ok = v6.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for bearerFormat: %+v (%T)", v6, v6) + errors = append(errors, compiler.NewError(context, message)) + } + } + // OauthFlows flows = 7; + v7 := compiler.MapValueForKey(m, "flows") + if v7 != nil { + var err error + x.Flows, err = NewOauthFlows(v7, compiler.NewContext("flows", context)) + if err != nil { + errors = append(errors, err) + } + } + // string open_id_connect_url = 8; + v8 := compiler.MapValueForKey(m, "openIdConnectUrl") + if v8 != nil { + x.OpenIdConnectUrl, ok = v8.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for openIdConnectUrl: %+v (%T)", v8, v8) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 9; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecuritySchemeOrReference creates an object of type SecuritySchemeOrReference if possible, returning an error if not. +func NewSecuritySchemeOrReference(in interface{}, context *compiler.Context) (*SecuritySchemeOrReference, error) { + errors := make([]error, 0) + x := &SecuritySchemeOrReference{} + matched := false + // SecurityScheme security_scheme = 1; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewSecurityScheme(m, compiler.NewContext("securityScheme", context)) + if matchingError == nil { + x.Oneof = &SecuritySchemeOrReference_SecurityScheme{SecurityScheme: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + // Reference reference = 2; + { + m, ok := compiler.UnpackMap(in) + if ok { + // errors might be ok here, they mean we just don't have the right subtype + t, matchingError := NewReference(m, compiler.NewContext("reference", context)) + if matchingError == nil { + x.Oneof = &SecuritySchemeOrReference_Reference{Reference: t} + matched = true + } else { + errors = append(errors, matchingError) + } + } + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSecuritySchemesOrReferences creates an object of type SecuritySchemesOrReferences if possible, returning an error if not. +func NewSecuritySchemesOrReferences(in interface{}, context *compiler.Context) (*SecuritySchemesOrReferences, error) { + errors := make([]error, 0) + x := &SecuritySchemesOrReferences{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedSecuritySchemeOrReference additional_properties = 1; + // MAP: SecuritySchemeOrReference + x.AdditionalProperties = make([]*NamedSecuritySchemeOrReference, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedSecuritySchemeOrReference{} + pair.Name = k + var err error + pair.Value, err = NewSecuritySchemeOrReference(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewServer creates an object of type Server if possible, returning an error if not. +func NewServer(in interface{}, context *compiler.Context) (*Server, error) { + errors := make([]error, 0) + x := &Server{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"url"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "url", "variables"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string url = 1; + v1 := compiler.MapValueForKey(m, "url") + if v1 != nil { + x.Url, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for url: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ServerVariables variables = 3; + v3 := compiler.MapValueForKey(m, "variables") + if v3 != nil { + var err error + x.Variables, err = NewServerVariables(v3, compiler.NewContext("variables", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewServerVariable creates an object of type ServerVariable if possible, returning an error if not. +func NewServerVariable(in interface{}, context *compiler.Context) (*ServerVariable, error) { + errors := make([]error, 0) + x := &ServerVariable{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"default"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"default", "description", "enum"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // repeated string enum = 1; + v1 := compiler.MapValueForKey(m, "enum") + if v1 != nil { + v, ok := v1.([]interface{}) + if ok { + x.Enum = compiler.ConvertInterfaceArrayToStringArray(v) + } else { + message := fmt.Sprintf("has unexpected value for enum: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string default = 2; + v2 := compiler.MapValueForKey(m, "default") + if v2 != nil { + x.Default, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for default: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 3; + v3 := compiler.MapValueForKey(m, "description") + if v3 != nil { + x.Description, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewServerVariables creates an object of type ServerVariables if possible, returning an error if not. +func NewServerVariables(in interface{}, context *compiler.Context) (*ServerVariables, error) { + errors := make([]error, 0) + x := &ServerVariables{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedServerVariable additional_properties = 1; + // MAP: ServerVariable + x.AdditionalProperties = make([]*NamedServerVariable, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedServerVariable{} + pair.Name = k + var err error + pair.Value, err = NewServerVariable(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewSpecificationExtension creates an object of type SpecificationExtension if possible, returning an error if not. +func NewSpecificationExtension(in interface{}, context *compiler.Context) (*SpecificationExtension, error) { + errors := make([]error, 0) + x := &SpecificationExtension{} + matched := false + switch in := in.(type) { + case bool: + x.Oneof = &SpecificationExtension_Boolean{Boolean: in} + matched = true + case string: + x.Oneof = &SpecificationExtension_String_{String_: in} + matched = true + case int64: + x.Oneof = &SpecificationExtension_Number{Number: float64(in)} + matched = true + case int32: + x.Oneof = &SpecificationExtension_Number{Number: float64(in)} + matched = true + case int: + x.Oneof = &SpecificationExtension_Number{Number: float64(in)} + matched = true + case float64: + x.Oneof = &SpecificationExtension_Number{Number: in} + matched = true + case float32: + x.Oneof = &SpecificationExtension_Number{Number: float64(in)} + matched = true + } + if matched { + // since the oneof matched one of its possibilities, discard any matching errors + errors = make([]error, 0) + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewStringArray creates an object of type StringArray if possible, returning an error if not. +func NewStringArray(in interface{}, context *compiler.Context) (*StringArray, error) { + errors := make([]error, 0) + x := &StringArray{} + a, ok := in.([]interface{}) + if !ok { + message := fmt.Sprintf("has unexpected value for StringArray: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + x.Value = make([]string, 0) + for _, s := range a { + x.Value = append(x.Value, s.(string)) + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewStrings creates an object of type Strings if possible, returning an error if not. +func NewStrings(in interface{}, context *compiler.Context) (*Strings, error) { + errors := make([]error, 0) + x := &Strings{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + // repeated NamedString additional_properties = 1; + // MAP: string + x.AdditionalProperties = make([]*NamedString, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + pair := &NamedString{} + pair.Name = k + pair.Value = v.(string) + x.AdditionalProperties = append(x.AdditionalProperties, pair) + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewTag creates an object of type Tag if possible, returning an error if not. +func NewTag(in interface{}, context *compiler.Context) (*Tag, error) { + errors := make([]error, 0) + x := &Tag{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + requiredKeys := []string{"name"} + missingKeys := compiler.MissingKeysInMap(m, requiredKeys) + if len(missingKeys) > 0 { + message := fmt.Sprintf("is missing required %s: %+v", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + allowedKeys := []string{"description", "externalDocs", "name"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string description = 2; + v2 := compiler.MapValueForKey(m, "description") + if v2 != nil { + x.Description, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for description: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // ExternalDocs external_docs = 3; + v3 := compiler.MapValueForKey(m, "externalDocs") + if v3 != nil { + var err error + x.ExternalDocs, err = NewExternalDocs(v3, compiler.NewContext("externalDocs", context)) + if err != nil { + errors = append(errors, err) + } + } + // repeated NamedAny specification_extension = 4; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// NewXml creates an object of type Xml if possible, returning an error if not. +func NewXml(in interface{}, context *compiler.Context) (*Xml, error) { + errors := make([]error, 0) + x := &Xml{} + m, ok := compiler.UnpackMap(in) + if !ok { + message := fmt.Sprintf("has unexpected value: %+v (%T)", in, in) + errors = append(errors, compiler.NewError(context, message)) + } else { + allowedKeys := []string{"attribute", "name", "namespace", "prefix", "wrapped"} + allowedPatterns := []*regexp.Regexp{pattern1} + invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns) + if len(invalidKeys) > 0 { + message := fmt.Sprintf("has invalid %s: %+v", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, ", ")) + errors = append(errors, compiler.NewError(context, message)) + } + // string name = 1; + v1 := compiler.MapValueForKey(m, "name") + if v1 != nil { + x.Name, ok = v1.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for name: %+v (%T)", v1, v1) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string namespace = 2; + v2 := compiler.MapValueForKey(m, "namespace") + if v2 != nil { + x.Namespace, ok = v2.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for namespace: %+v (%T)", v2, v2) + errors = append(errors, compiler.NewError(context, message)) + } + } + // string prefix = 3; + v3 := compiler.MapValueForKey(m, "prefix") + if v3 != nil { + x.Prefix, ok = v3.(string) + if !ok { + message := fmt.Sprintf("has unexpected value for prefix: %+v (%T)", v3, v3) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool attribute = 4; + v4 := compiler.MapValueForKey(m, "attribute") + if v4 != nil { + x.Attribute, ok = v4.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for attribute: %+v (%T)", v4, v4) + errors = append(errors, compiler.NewError(context, message)) + } + } + // bool wrapped = 5; + v5 := compiler.MapValueForKey(m, "wrapped") + if v5 != nil { + x.Wrapped, ok = v5.(bool) + if !ok { + message := fmt.Sprintf("has unexpected value for wrapped: %+v (%T)", v5, v5) + errors = append(errors, compiler.NewError(context, message)) + } + } + // repeated NamedAny specification_extension = 6; + // MAP: Any ^x- + x.SpecificationExtension = make([]*NamedAny, 0) + for _, item := range m { + k, ok := compiler.StringValue(item.Key) + if ok { + v := item.Value + if strings.HasPrefix(k, "x-") { + pair := &NamedAny{} + pair.Name = k + result := &Any{} + handled, resultFromExt, err := compiler.HandleExtension(context, v, k) + if handled { + if err != nil { + errors = append(errors, err) + } else { + bytes, _ := yaml.Marshal(v) + result.Yaml = string(bytes) + result.Value = resultFromExt + pair.Value = result + } + } else { + pair.Value, err = NewAny(v, compiler.NewContext(k, context)) + if err != nil { + errors = append(errors, err) + } + } + x.SpecificationExtension = append(x.SpecificationExtension, pair) + } + } + } + } + return x, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside AdditionalPropertiesItem objects. +func (m *AdditionalPropertiesItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*AdditionalPropertiesItem_SchemaOrReference) + if ok { + _, err := p.SchemaOrReference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Any objects. +func (m *Any) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside AnyOrExpression objects. +func (m *AnyOrExpression) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*AnyOrExpression_Any) + if ok { + _, err := p.Any.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*AnyOrExpression_Expression) + if ok { + _, err := p.Expression.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside AnysOrExpressions objects. +func (m *AnysOrExpressions) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Callback objects. +func (m *Callback) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.Path { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside CallbackOrReference objects. +func (m *CallbackOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*CallbackOrReference_Callback) + if ok { + _, err := p.Callback.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*CallbackOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside CallbacksOrReferences objects. +func (m *CallbacksOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Components objects. +func (m *Components) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Schemas != nil { + _, err := m.Schemas.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Responses != nil { + _, err := m.Responses.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Parameters != nil { + _, err := m.Parameters.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.RequestBodies != nil { + _, err := m.RequestBodies.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.SecuritySchemes != nil { + _, err := m.SecuritySchemes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Links != nil { + _, err := m.Links.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Callbacks != nil { + _, err := m.Callbacks.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Contact objects. +func (m *Contact) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside DefaultType objects. +func (m *DefaultType) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Discriminator objects. +func (m *Discriminator) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Mapping != nil { + _, err := m.Mapping.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Document objects. +func (m *Document) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Info != nil { + _, err := m.Info.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Servers { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.Paths != nil { + _, err := m.Paths.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Components != nil { + _, err := m.Components.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Security { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Tags { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Encoding objects. +func (m *Encoding) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Encodings objects. +func (m *Encodings) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Example objects. +func (m *Example) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExampleOrReference objects. +func (m *ExampleOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ExampleOrReference_Example) + if ok { + _, err := p.Example.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ExampleOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Examples objects. +func (m *Examples) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExamplesOrReferences objects. +func (m *ExamplesOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Expression objects. +func (m *Expression) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ExternalDocs objects. +func (m *ExternalDocs) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Header objects. +func (m *Header) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside HeaderOrReference objects. +func (m *HeaderOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*HeaderOrReference_Header) + if ok { + _, err := p.Header.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*HeaderOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside HeadersOrReferences objects. +func (m *HeadersOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Info objects. +func (m *Info) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Contact != nil { + _, err := m.Contact.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.License != nil { + _, err := m.License.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ItemsItem objects. +func (m *ItemsItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.SchemaOrReference { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside License objects. +func (m *License) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Link objects. +func (m *Link) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Parameters != nil { + _, err := m.Parameters.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.RequestBody != nil { + _, err := m.RequestBody.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Server != nil { + _, err := m.Server.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside LinkOrReference objects. +func (m *LinkOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*LinkOrReference_Link) + if ok { + _, err := p.Link.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*LinkOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside LinksOrReferences objects. +func (m *LinksOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside MediaType objects. +func (m *MediaType) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Encoding != nil { + _, err := m.Encoding.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside MediaTypes objects. +func (m *MediaTypes) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedAny objects. +func (m *NamedAny) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedAnyOrExpression objects. +func (m *NamedAnyOrExpression) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedCallbackOrReference objects. +func (m *NamedCallbackOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedEncoding objects. +func (m *NamedEncoding) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedExampleOrReference objects. +func (m *NamedExampleOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedHeaderOrReference objects. +func (m *NamedHeaderOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedLinkOrReference objects. +func (m *NamedLinkOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedMediaType objects. +func (m *NamedMediaType) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedParameterOrReference objects. +func (m *NamedParameterOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedPathItem objects. +func (m *NamedPathItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedRequestBodyOrReference objects. +func (m *NamedRequestBodyOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedResponseOrReference objects. +func (m *NamedResponseOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedSchemaOrReference objects. +func (m *NamedSchemaOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedSecuritySchemeOrReference objects. +func (m *NamedSecuritySchemeOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedServerVariable objects. +func (m *NamedServerVariable) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Value != nil { + _, err := m.Value.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside NamedString objects. +func (m *NamedString) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside OauthFlow objects. +func (m *OauthFlow) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Scopes != nil { + _, err := m.Scopes.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside OauthFlows objects. +func (m *OauthFlows) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Implicit != nil { + _, err := m.Implicit.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Password != nil { + _, err := m.Password.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.ClientCredentials != nil { + _, err := m.ClientCredentials.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.AuthorizationCode != nil { + _, err := m.AuthorizationCode.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Object objects. +func (m *Object) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Operation objects. +func (m *Operation) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Parameters { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.RequestBody != nil { + _, err := m.RequestBody.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Responses != nil { + _, err := m.Responses.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Callbacks != nil { + _, err := m.Callbacks.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Security { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Servers { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Parameter objects. +func (m *Parameter) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Schema != nil { + _, err := m.Schema.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Examples != nil { + _, err := m.Examples.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ParameterOrReference objects. +func (m *ParameterOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ParameterOrReference_Parameter) + if ok { + _, err := p.Parameter.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ParameterOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ParametersOrReferences objects. +func (m *ParametersOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside PathItem objects. +func (m *PathItem) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + if info != nil { + replacement, err := NewPathItem(info, nil) + if err == nil { + *m = *replacement + return m.ResolveReferences(root) + } + } + return info, nil + } + if m.Get != nil { + _, err := m.Get.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Put != nil { + _, err := m.Put.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Post != nil { + _, err := m.Post.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Delete != nil { + _, err := m.Delete.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Options != nil { + _, err := m.Options.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Head != nil { + _, err := m.Head.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Patch != nil { + _, err := m.Patch.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Trace != nil { + _, err := m.Trace.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Servers { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.Parameters { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Paths objects. +func (m *Paths) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.Path { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Properties objects. +func (m *Properties) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Reference objects. +func (m *Reference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.XRef != "" { + info, err := compiler.ReadInfoForRef(root, m.XRef) + if err != nil { + return nil, err + } + return info, nil + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside RequestBodiesOrReferences objects. +func (m *RequestBodiesOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside RequestBody objects. +func (m *RequestBody) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside RequestBodyOrReference objects. +func (m *RequestBodyOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*RequestBodyOrReference_RequestBody) + if ok { + _, err := p.RequestBody.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*RequestBodyOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Response objects. +func (m *Response) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Headers != nil { + _, err := m.Headers.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Content != nil { + _, err := m.Content.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Links != nil { + _, err := m.Links.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ResponseOrReference objects. +func (m *ResponseOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*ResponseOrReference_Response) + if ok { + _, err := p.Response.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*ResponseOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Responses objects. +func (m *Responses) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.ResponseOrReference { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ResponsesOrReferences objects. +func (m *ResponsesOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Schema objects. +func (m *Schema) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Discriminator != nil { + _, err := m.Discriminator.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Xml != nil { + _, err := m.Xml.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Example != nil { + _, err := m.Example.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.Enum { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.AllOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.OneOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + for _, item := range m.AnyOf { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + if m.Not != nil { + _, err := m.Not.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Items != nil { + _, err := m.Items.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Properties != nil { + _, err := m.Properties.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.AdditionalProperties != nil { + _, err := m.AdditionalProperties.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + if m.Default != nil { + _, err := m.Default.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SchemaOrReference objects. +func (m *SchemaOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*SchemaOrReference_Schema) + if ok { + _, err := p.Schema.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SchemaOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SchemasOrReferences objects. +func (m *SchemasOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityRequirement objects. +func (m *SecurityRequirement) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecurityScheme objects. +func (m *SecurityScheme) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Flows != nil { + _, err := m.Flows.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecuritySchemeOrReference objects. +func (m *SecuritySchemeOrReference) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + { + p, ok := m.Oneof.(*SecuritySchemeOrReference_SecurityScheme) + if ok { + _, err := p.SecurityScheme.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + { + p, ok := m.Oneof.(*SecuritySchemeOrReference_Reference) + if ok { + _, err := p.Reference.ResolveReferences(root) + if err != nil { + return nil, err + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SecuritySchemesOrReferences objects. +func (m *SecuritySchemesOrReferences) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Server objects. +func (m *Server) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.Variables != nil { + _, err := m.Variables.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ServerVariable objects. +func (m *ServerVariable) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside ServerVariables objects. +func (m *ServerVariables) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside SpecificationExtension objects. +func (m *SpecificationExtension) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside StringArray objects. +func (m *StringArray) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Strings objects. +func (m *Strings) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.AdditionalProperties { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Tag objects. +func (m *Tag) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + if m.ExternalDocs != nil { + _, err := m.ExternalDocs.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ResolveReferences resolves references found inside Xml objects. +func (m *Xml) ResolveReferences(root string) (interface{}, error) { + errors := make([]error, 0) + for _, item := range m.SpecificationExtension { + if item != nil { + _, err := item.ResolveReferences(root) + if err != nil { + errors = append(errors, err) + } + } + } + return nil, compiler.NewErrorGroupOrNil(errors) +} + +// ToRawInfo returns a description of AdditionalPropertiesItem suitable for JSON or YAML export. +func (m *AdditionalPropertiesItem) ToRawInfo() interface{} { + // ONE OF WRAPPER + // AdditionalPropertiesItem + // {Name:schemaOrReference Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSchemaOrReference() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { + return v1.Boolean + } + return nil +} + +// ToRawInfo returns a description of Any suitable for JSON or YAML export. +func (m *Any) ToRawInfo() interface{} { + var err error + var info1 []yaml.MapSlice + err = yaml.Unmarshal([]byte(m.Yaml), &info1) + if err == nil { + return info1 + } + var info2 yaml.MapSlice + err = yaml.Unmarshal([]byte(m.Yaml), &info2) + if err == nil { + return info2 + } + var info3 interface{} + err = yaml.Unmarshal([]byte(m.Yaml), &info3) + if err == nil { + return info3 + } + return nil +} + +// ToRawInfo returns a description of AnyOrExpression suitable for JSON or YAML export. +func (m *AnyOrExpression) ToRawInfo() interface{} { + // ONE OF WRAPPER + // AnyOrExpression + // {Name:any Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetAny() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:expression Type:Expression StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetExpression() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of AnysOrExpressions suitable for JSON or YAML export. +func (m *AnysOrExpressions) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedAnyOrExpression StringEnumValues:[] MapType:AnyOrExpression Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Callback suitable for JSON or YAML export. +func (m *Callback) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Path != nil { + for _, item := range m.Path { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:Path Type:NamedPathItem StringEnumValues:[] MapType:PathItem Repeated:true Pattern:^ Implicit:true Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of CallbackOrReference suitable for JSON or YAML export. +func (m *CallbackOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // CallbackOrReference + // {Name:callback Type:Callback StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetCallback() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of CallbacksOrReferences suitable for JSON or YAML export. +func (m *CallbacksOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedCallbackOrReference StringEnumValues:[] MapType:CallbackOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Components suitable for JSON or YAML export. +func (m *Components) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Schemas != nil { + info = append(info, yaml.MapItem{"schemas", m.Schemas.ToRawInfo()}) + } + // &{Name:schemas Type:SchemasOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Responses != nil { + info = append(info, yaml.MapItem{"responses", m.Responses.ToRawInfo()}) + } + // &{Name:responses Type:ResponsesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Parameters != nil { + info = append(info, yaml.MapItem{"parameters", m.Parameters.ToRawInfo()}) + } + // &{Name:parameters Type:ParametersOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Examples != nil { + info = append(info, yaml.MapItem{"examples", m.Examples.ToRawInfo()}) + } + // &{Name:examples Type:ExamplesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.RequestBodies != nil { + info = append(info, yaml.MapItem{"requestBodies", m.RequestBodies.ToRawInfo()}) + } + // &{Name:requestBodies Type:RequestBodiesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Headers != nil { + info = append(info, yaml.MapItem{"headers", m.Headers.ToRawInfo()}) + } + // &{Name:headers Type:HeadersOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SecuritySchemes != nil { + info = append(info, yaml.MapItem{"securitySchemes", m.SecuritySchemes.ToRawInfo()}) + } + // &{Name:securitySchemes Type:SecuritySchemesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Links != nil { + info = append(info, yaml.MapItem{"links", m.Links.ToRawInfo()}) + } + // &{Name:links Type:LinksOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Callbacks != nil { + info = append(info, yaml.MapItem{"callbacks", m.Callbacks.ToRawInfo()}) + } + // &{Name:callbacks Type:CallbacksOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Contact suitable for JSON or YAML export. +func (m *Contact) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.Email != "" { + info = append(info, yaml.MapItem{"email", m.Email}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of DefaultType suitable for JSON or YAML export. +func (m *DefaultType) ToRawInfo() interface{} { + // ONE OF WRAPPER + // DefaultType + // {Name:number Type:float StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v0, ok := m.GetOneof().(*DefaultType_Number); ok { + return v0.Number + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*DefaultType_Boolean); ok { + return v1.Boolean + } + // {Name:string Type:string StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v2, ok := m.GetOneof().(*DefaultType_String_); ok { + return v2.String_ + } + return nil +} + +// ToRawInfo returns a description of Discriminator suitable for JSON or YAML export. +func (m *Discriminator) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.PropertyName != "" { + info = append(info, yaml.MapItem{"propertyName", m.PropertyName}) + } + if m.Mapping != nil { + info = append(info, yaml.MapItem{"mapping", m.Mapping.ToRawInfo()}) + } + // &{Name:mapping Type:Strings StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + return info +} + +// ToRawInfo returns a description of Document suitable for JSON or YAML export. +func (m *Document) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Openapi != "" { + info = append(info, yaml.MapItem{"openapi", m.Openapi}) + } + if m.Info != nil { + info = append(info, yaml.MapItem{"info", m.Info.ToRawInfo()}) + } + // &{Name:info Type:Info StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Servers) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Servers { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"servers", items}) + } + // &{Name:servers Type:Server StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.Paths != nil { + info = append(info, yaml.MapItem{"paths", m.Paths.ToRawInfo()}) + } + // &{Name:paths Type:Paths StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Components != nil { + info = append(info, yaml.MapItem{"components", m.Components.ToRawInfo()}) + } + // &{Name:components Type:Components StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Security) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Security { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"security", items}) + } + // &{Name:security Type:SecurityRequirement StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if len(m.Tags) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Tags { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"tags", items}) + } + // &{Name:tags Type:Tag StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Encoding suitable for JSON or YAML export. +func (m *Encoding) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.ContentType != "" { + info = append(info, yaml.MapItem{"contentType", m.ContentType}) + } + if m.Headers != nil { + info = append(info, yaml.MapItem{"headers", m.Headers.ToRawInfo()}) + } + // &{Name:headers Type:HeadersOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Style != "" { + info = append(info, yaml.MapItem{"style", m.Style}) + } + if m.Explode != false { + info = append(info, yaml.MapItem{"explode", m.Explode}) + } + if m.AllowReserved != false { + info = append(info, yaml.MapItem{"allowReserved", m.AllowReserved}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Encodings suitable for JSON or YAML export. +func (m *Encodings) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedEncoding StringEnumValues:[] MapType:Encoding Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Example suitable for JSON or YAML export. +func (m *Example) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Summary != "" { + info = append(info, yaml.MapItem{"summary", m.Summary}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + // &{Name:value Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.ExternalValue != "" { + info = append(info, yaml.MapItem{"externalValue", m.ExternalValue}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ExampleOrReference suitable for JSON or YAML export. +func (m *ExampleOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // ExampleOrReference + // {Name:example Type:Example StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetExample() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of Examples suitable for JSON or YAML export. +func (m *Examples) ToRawInfo() interface{} { + info := yaml.MapSlice{} + return info +} + +// ToRawInfo returns a description of ExamplesOrReferences suitable for JSON or YAML export. +func (m *ExamplesOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedExampleOrReference StringEnumValues:[] MapType:ExampleOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Expression suitable for JSON or YAML export. +func (m *Expression) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ExternalDocs suitable for JSON or YAML export. +func (m *ExternalDocs) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Header suitable for JSON or YAML export. +func (m *Header) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.Deprecated != false { + info = append(info, yaml.MapItem{"deprecated", m.Deprecated}) + } + if m.AllowEmptyValue != false { + info = append(info, yaml.MapItem{"allowEmptyValue", m.AllowEmptyValue}) + } + if m.Style != "" { + info = append(info, yaml.MapItem{"style", m.Style}) + } + if m.Explode != false { + info = append(info, yaml.MapItem{"explode", m.Explode}) + } + if m.AllowReserved != false { + info = append(info, yaml.MapItem{"allowReserved", m.AllowReserved}) + } + if m.Schema != nil { + info = append(info, yaml.MapItem{"schema", m.Schema.ToRawInfo()}) + } + // &{Name:schema Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Example != nil { + info = append(info, yaml.MapItem{"example", m.Example.ToRawInfo()}) + } + // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Examples != nil { + info = append(info, yaml.MapItem{"examples", m.Examples.ToRawInfo()}) + } + // &{Name:examples Type:ExamplesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Content != nil { + info = append(info, yaml.MapItem{"content", m.Content.ToRawInfo()}) + } + // &{Name:content Type:MediaTypes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of HeaderOrReference suitable for JSON or YAML export. +func (m *HeaderOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // HeaderOrReference + // {Name:header Type:Header StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetHeader() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of HeadersOrReferences suitable for JSON or YAML export. +func (m *HeadersOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedHeaderOrReference StringEnumValues:[] MapType:HeaderOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Info suitable for JSON or YAML export. +func (m *Info) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Title != "" { + info = append(info, yaml.MapItem{"title", m.Title}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.TermsOfService != "" { + info = append(info, yaml.MapItem{"termsOfService", m.TermsOfService}) + } + if m.Contact != nil { + info = append(info, yaml.MapItem{"contact", m.Contact.ToRawInfo()}) + } + // &{Name:contact Type:Contact StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.License != nil { + info = append(info, yaml.MapItem{"license", m.License.ToRawInfo()}) + } + // &{Name:license Type:License StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Version != "" { + info = append(info, yaml.MapItem{"version", m.Version}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ItemsItem suitable for JSON or YAML export. +func (m *ItemsItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if len(m.SchemaOrReference) != 0 { + items := make([]interface{}, 0) + for _, item := range m.SchemaOrReference { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"schemaOrReference", items}) + } + // &{Name:schemaOrReference Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + return info +} + +// ToRawInfo returns a description of License suitable for JSON or YAML export. +func (m *License) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Link suitable for JSON or YAML export. +func (m *Link) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.OperationRef != "" { + info = append(info, yaml.MapItem{"operationRef", m.OperationRef}) + } + if m.OperationId != "" { + info = append(info, yaml.MapItem{"operationId", m.OperationId}) + } + if m.Parameters != nil { + info = append(info, yaml.MapItem{"parameters", m.Parameters.ToRawInfo()}) + } + // &{Name:parameters Type:AnysOrExpressions StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.RequestBody != nil { + info = append(info, yaml.MapItem{"requestBody", m.RequestBody.ToRawInfo()}) + } + // &{Name:requestBody Type:AnyOrExpression StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Server != nil { + info = append(info, yaml.MapItem{"server", m.Server.ToRawInfo()}) + } + // &{Name:server Type:Server StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of LinkOrReference suitable for JSON or YAML export. +func (m *LinkOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // LinkOrReference + // {Name:link Type:Link StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetLink() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of LinksOrReferences suitable for JSON or YAML export. +func (m *LinksOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedLinkOrReference StringEnumValues:[] MapType:LinkOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of MediaType suitable for JSON or YAML export. +func (m *MediaType) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Schema != nil { + info = append(info, yaml.MapItem{"schema", m.Schema.ToRawInfo()}) + } + // &{Name:schema Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Example != nil { + info = append(info, yaml.MapItem{"example", m.Example.ToRawInfo()}) + } + // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Examples != nil { + info = append(info, yaml.MapItem{"examples", m.Examples.ToRawInfo()}) + } + // &{Name:examples Type:ExamplesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Encoding != nil { + info = append(info, yaml.MapItem{"encoding", m.Encoding.ToRawInfo()}) + } + // &{Name:encoding Type:Encodings StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of MediaTypes suitable for JSON or YAML export. +func (m *MediaTypes) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedMediaType StringEnumValues:[] MapType:MediaType Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of NamedAny suitable for JSON or YAML export. +func (m *NamedAny) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedAnyOrExpression suitable for JSON or YAML export. +func (m *NamedAnyOrExpression) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:AnyOrExpression StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedCallbackOrReference suitable for JSON or YAML export. +func (m *NamedCallbackOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:CallbackOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedEncoding suitable for JSON or YAML export. +func (m *NamedEncoding) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:Encoding StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedExampleOrReference suitable for JSON or YAML export. +func (m *NamedExampleOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:ExampleOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedHeaderOrReference suitable for JSON or YAML export. +func (m *NamedHeaderOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:HeaderOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedLinkOrReference suitable for JSON or YAML export. +func (m *NamedLinkOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:LinkOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedMediaType suitable for JSON or YAML export. +func (m *NamedMediaType) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:MediaType StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedParameterOrReference suitable for JSON or YAML export. +func (m *NamedParameterOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:ParameterOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedPathItem suitable for JSON or YAML export. +func (m *NamedPathItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:PathItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedRequestBodyOrReference suitable for JSON or YAML export. +func (m *NamedRequestBodyOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:RequestBodyOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedResponseOrReference suitable for JSON or YAML export. +func (m *NamedResponseOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:ResponseOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedSchemaOrReference suitable for JSON or YAML export. +func (m *NamedSchemaOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedSecuritySchemeOrReference suitable for JSON or YAML export. +func (m *NamedSecuritySchemeOrReference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:SecuritySchemeOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedServerVariable suitable for JSON or YAML export. +func (m *NamedServerVariable) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + // &{Name:value Type:ServerVariable StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:Mapped value} + return info +} + +// ToRawInfo returns a description of NamedString suitable for JSON or YAML export. +func (m *NamedString) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Value != "" { + info = append(info, yaml.MapItem{"value", m.Value}) + } + return info +} + +// ToRawInfo returns a description of OauthFlow suitable for JSON or YAML export. +func (m *OauthFlow) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AuthorizationUrl != "" { + info = append(info, yaml.MapItem{"authorizationUrl", m.AuthorizationUrl}) + } + if m.TokenUrl != "" { + info = append(info, yaml.MapItem{"tokenUrl", m.TokenUrl}) + } + if m.RefreshUrl != "" { + info = append(info, yaml.MapItem{"refreshUrl", m.RefreshUrl}) + } + if m.Scopes != nil { + info = append(info, yaml.MapItem{"scopes", m.Scopes.ToRawInfo()}) + } + // &{Name:scopes Type:Strings StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of OauthFlows suitable for JSON or YAML export. +func (m *OauthFlows) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Implicit != nil { + info = append(info, yaml.MapItem{"implicit", m.Implicit.ToRawInfo()}) + } + // &{Name:implicit Type:OauthFlow StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Password != nil { + info = append(info, yaml.MapItem{"password", m.Password.ToRawInfo()}) + } + // &{Name:password Type:OauthFlow StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.ClientCredentials != nil { + info = append(info, yaml.MapItem{"clientCredentials", m.ClientCredentials.ToRawInfo()}) + } + // &{Name:clientCredentials Type:OauthFlow StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.AuthorizationCode != nil { + info = append(info, yaml.MapItem{"authorizationCode", m.AuthorizationCode.ToRawInfo()}) + } + // &{Name:authorizationCode Type:OauthFlow StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Object suitable for JSON or YAML export. +func (m *Object) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Operation suitable for JSON or YAML export. +func (m *Operation) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if len(m.Tags) != 0 { + info = append(info, yaml.MapItem{"tags", m.Tags}) + } + if m.Summary != "" { + info = append(info, yaml.MapItem{"summary", m.Summary}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.OperationId != "" { + info = append(info, yaml.MapItem{"operationId", m.OperationId}) + } + if len(m.Parameters) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Parameters { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"parameters", items}) + } + // &{Name:parameters Type:ParameterOrReference StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.RequestBody != nil { + info = append(info, yaml.MapItem{"requestBody", m.RequestBody.ToRawInfo()}) + } + // &{Name:requestBody Type:RequestBodyOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Responses != nil { + info = append(info, yaml.MapItem{"responses", m.Responses.ToRawInfo()}) + } + // &{Name:responses Type:Responses StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Callbacks != nil { + info = append(info, yaml.MapItem{"callbacks", m.Callbacks.ToRawInfo()}) + } + // &{Name:callbacks Type:CallbacksOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Deprecated != false { + info = append(info, yaml.MapItem{"deprecated", m.Deprecated}) + } + if len(m.Security) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Security { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"security", items}) + } + // &{Name:security Type:SecurityRequirement StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if len(m.Servers) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Servers { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"servers", items}) + } + // &{Name:servers Type:Server StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Parameter suitable for JSON or YAML export. +func (m *Parameter) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.Deprecated != false { + info = append(info, yaml.MapItem{"deprecated", m.Deprecated}) + } + if m.AllowEmptyValue != false { + info = append(info, yaml.MapItem{"allowEmptyValue", m.AllowEmptyValue}) + } + if m.Style != "" { + info = append(info, yaml.MapItem{"style", m.Style}) + } + if m.Explode != false { + info = append(info, yaml.MapItem{"explode", m.Explode}) + } + if m.AllowReserved != false { + info = append(info, yaml.MapItem{"allowReserved", m.AllowReserved}) + } + if m.Schema != nil { + info = append(info, yaml.MapItem{"schema", m.Schema.ToRawInfo()}) + } + // &{Name:schema Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Example != nil { + info = append(info, yaml.MapItem{"example", m.Example.ToRawInfo()}) + } + // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Examples != nil { + info = append(info, yaml.MapItem{"examples", m.Examples.ToRawInfo()}) + } + // &{Name:examples Type:ExamplesOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Content != nil { + info = append(info, yaml.MapItem{"content", m.Content.ToRawInfo()}) + } + // &{Name:content Type:MediaTypes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ParameterOrReference suitable for JSON or YAML export. +func (m *ParameterOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // ParameterOrReference + // {Name:parameter Type:Parameter StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetParameter() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of ParametersOrReferences suitable for JSON or YAML export. +func (m *ParametersOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedParameterOrReference StringEnumValues:[] MapType:ParameterOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of PathItem suitable for JSON or YAML export. +func (m *PathItem) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.XRef != "" { + info = append(info, yaml.MapItem{"$ref", m.XRef}) + } + if m.Summary != "" { + info = append(info, yaml.MapItem{"summary", m.Summary}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Get != nil { + info = append(info, yaml.MapItem{"get", m.Get.ToRawInfo()}) + } + // &{Name:get Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Put != nil { + info = append(info, yaml.MapItem{"put", m.Put.ToRawInfo()}) + } + // &{Name:put Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Post != nil { + info = append(info, yaml.MapItem{"post", m.Post.ToRawInfo()}) + } + // &{Name:post Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Delete != nil { + info = append(info, yaml.MapItem{"delete", m.Delete.ToRawInfo()}) + } + // &{Name:delete Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Options != nil { + info = append(info, yaml.MapItem{"options", m.Options.ToRawInfo()}) + } + // &{Name:options Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Head != nil { + info = append(info, yaml.MapItem{"head", m.Head.ToRawInfo()}) + } + // &{Name:head Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Patch != nil { + info = append(info, yaml.MapItem{"patch", m.Patch.ToRawInfo()}) + } + // &{Name:patch Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Trace != nil { + info = append(info, yaml.MapItem{"trace", m.Trace.ToRawInfo()}) + } + // &{Name:trace Type:Operation StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if len(m.Servers) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Servers { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"servers", items}) + } + // &{Name:servers Type:Server StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if len(m.Parameters) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Parameters { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"parameters", items}) + } + // &{Name:parameters Type:ParameterOrReference StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Paths suitable for JSON or YAML export. +func (m *Paths) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Path != nil { + for _, item := range m.Path { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:Path Type:NamedPathItem StringEnumValues:[] MapType:PathItem Repeated:true Pattern:^/ Implicit:true Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Properties suitable for JSON or YAML export. +func (m *Properties) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedSchemaOrReference StringEnumValues:[] MapType:SchemaOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Reference suitable for JSON or YAML export. +func (m *Reference) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.XRef != "" { + info = append(info, yaml.MapItem{"$ref", m.XRef}) + } + return info +} + +// ToRawInfo returns a description of RequestBodiesOrReferences suitable for JSON or YAML export. +func (m *RequestBodiesOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedRequestBodyOrReference StringEnumValues:[] MapType:RequestBodyOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of RequestBody suitable for JSON or YAML export. +func (m *RequestBody) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Content != nil { + info = append(info, yaml.MapItem{"content", m.Content.ToRawInfo()}) + } + // &{Name:content Type:MediaTypes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Required != false { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of RequestBodyOrReference suitable for JSON or YAML export. +func (m *RequestBodyOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // RequestBodyOrReference + // {Name:requestBody Type:RequestBody StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetRequestBody() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of Response suitable for JSON or YAML export. +func (m *Response) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Headers != nil { + info = append(info, yaml.MapItem{"headers", m.Headers.ToRawInfo()}) + } + // &{Name:headers Type:HeadersOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Content != nil { + info = append(info, yaml.MapItem{"content", m.Content.ToRawInfo()}) + } + // &{Name:content Type:MediaTypes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Links != nil { + info = append(info, yaml.MapItem{"links", m.Links.ToRawInfo()}) + } + // &{Name:links Type:LinksOrReferences StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ResponseOrReference suitable for JSON or YAML export. +func (m *ResponseOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // ResponseOrReference + // {Name:response Type:Response StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetResponse() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of Responses suitable for JSON or YAML export. +func (m *Responses) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:ResponseOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.ResponseOrReference != nil { + for _, item := range m.ResponseOrReference { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:ResponseOrReference Type:NamedResponseOrReference StringEnumValues:[] MapType:ResponseOrReference Repeated:true Pattern:^([0-9X]{3})$ Implicit:true Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ResponsesOrReferences suitable for JSON or YAML export. +func (m *ResponsesOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedResponseOrReference StringEnumValues:[] MapType:ResponseOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Schema suitable for JSON or YAML export. +func (m *Schema) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Nullable != false { + info = append(info, yaml.MapItem{"nullable", m.Nullable}) + } + if m.Discriminator != nil { + info = append(info, yaml.MapItem{"discriminator", m.Discriminator.ToRawInfo()}) + } + // &{Name:discriminator Type:Discriminator StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.ReadOnly != false { + info = append(info, yaml.MapItem{"readOnly", m.ReadOnly}) + } + if m.WriteOnly != false { + info = append(info, yaml.MapItem{"writeOnly", m.WriteOnly}) + } + if m.Xml != nil { + info = append(info, yaml.MapItem{"xml", m.Xml.ToRawInfo()}) + } + // &{Name:xml Type:Xml StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Example != nil { + info = append(info, yaml.MapItem{"example", m.Example.ToRawInfo()}) + } + // &{Name:example Type:Any StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Deprecated != false { + info = append(info, yaml.MapItem{"deprecated", m.Deprecated}) + } + if m.Title != "" { + info = append(info, yaml.MapItem{"title", m.Title}) + } + if m.MultipleOf != 0.0 { + info = append(info, yaml.MapItem{"multipleOf", m.MultipleOf}) + } + if m.Maximum != 0.0 { + info = append(info, yaml.MapItem{"maximum", m.Maximum}) + } + if m.ExclusiveMaximum != false { + info = append(info, yaml.MapItem{"exclusiveMaximum", m.ExclusiveMaximum}) + } + if m.Minimum != 0.0 { + info = append(info, yaml.MapItem{"minimum", m.Minimum}) + } + if m.ExclusiveMinimum != false { + info = append(info, yaml.MapItem{"exclusiveMinimum", m.ExclusiveMinimum}) + } + if m.MaxLength != 0 { + info = append(info, yaml.MapItem{"maxLength", m.MaxLength}) + } + if m.MinLength != 0 { + info = append(info, yaml.MapItem{"minLength", m.MinLength}) + } + if m.Pattern != "" { + info = append(info, yaml.MapItem{"pattern", m.Pattern}) + } + if m.MaxItems != 0 { + info = append(info, yaml.MapItem{"maxItems", m.MaxItems}) + } + if m.MinItems != 0 { + info = append(info, yaml.MapItem{"minItems", m.MinItems}) + } + if m.UniqueItems != false { + info = append(info, yaml.MapItem{"uniqueItems", m.UniqueItems}) + } + if m.MaxProperties != 0 { + info = append(info, yaml.MapItem{"maxProperties", m.MaxProperties}) + } + if m.MinProperties != 0 { + info = append(info, yaml.MapItem{"minProperties", m.MinProperties}) + } + if len(m.Required) != 0 { + info = append(info, yaml.MapItem{"required", m.Required}) + } + if len(m.Enum) != 0 { + items := make([]interface{}, 0) + for _, item := range m.Enum { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"enum", items}) + } + // &{Name:enum Type:Any StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if len(m.AllOf) != 0 { + items := make([]interface{}, 0) + for _, item := range m.AllOf { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"allOf", items}) + } + // &{Name:allOf Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if len(m.OneOf) != 0 { + items := make([]interface{}, 0) + for _, item := range m.OneOf { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"oneOf", items}) + } + // &{Name:oneOf Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if len(m.AnyOf) != 0 { + items := make([]interface{}, 0) + for _, item := range m.AnyOf { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"anyOf", items}) + } + // &{Name:anyOf Type:SchemaOrReference StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} + if m.Not != nil { + info = append(info, yaml.MapItem{"not", m.Not.ToRawInfo()}) + } + // &{Name:not Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Items != nil { + items := make([]interface{}, 0) + for _, item := range m.Items.SchemaOrReference { + items = append(items, item.ToRawInfo()) + } + info = append(info, yaml.MapItem{"items", items[0]}) + } + // &{Name:items Type:ItemsItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Properties != nil { + info = append(info, yaml.MapItem{"properties", m.Properties.ToRawInfo()}) + } + // &{Name:properties Type:Properties StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.AdditionalProperties != nil { + info = append(info, yaml.MapItem{"additionalProperties", m.AdditionalProperties.ToRawInfo()}) + } + // &{Name:additionalProperties Type:AdditionalPropertiesItem StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Default != nil { + info = append(info, yaml.MapItem{"default", m.Default.ToRawInfo()}) + } + // &{Name:default Type:DefaultType StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Format != "" { + info = append(info, yaml.MapItem{"format", m.Format}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of SchemaOrReference suitable for JSON or YAML export. +func (m *SchemaOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // SchemaOrReference + // {Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSchema() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of SchemasOrReferences suitable for JSON or YAML export. +func (m *SchemasOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedSchemaOrReference StringEnumValues:[] MapType:SchemaOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of SecurityRequirement suitable for JSON or YAML export. +func (m *SecurityRequirement) ToRawInfo() interface{} { + info := yaml.MapSlice{} + return info +} + +// ToRawInfo returns a description of SecurityScheme suitable for JSON or YAML export. +func (m *SecurityScheme) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Type != "" { + info = append(info, yaml.MapItem{"type", m.Type}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.In != "" { + info = append(info, yaml.MapItem{"in", m.In}) + } + if m.Scheme != "" { + info = append(info, yaml.MapItem{"scheme", m.Scheme}) + } + if m.BearerFormat != "" { + info = append(info, yaml.MapItem{"bearerFormat", m.BearerFormat}) + } + if m.Flows != nil { + info = append(info, yaml.MapItem{"flows", m.Flows.ToRawInfo()}) + } + // &{Name:flows Type:OauthFlows StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.OpenIdConnectUrl != "" { + info = append(info, yaml.MapItem{"openIdConnectUrl", m.OpenIdConnectUrl}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of SecuritySchemeOrReference suitable for JSON or YAML export. +func (m *SecuritySchemeOrReference) ToRawInfo() interface{} { + // ONE OF WRAPPER + // SecuritySchemeOrReference + // {Name:securityScheme Type:SecurityScheme StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v0 := m.GetSecurityScheme() + if v0 != nil { + return v0.ToRawInfo() + } + // {Name:reference Type:Reference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + v1 := m.GetReference() + if v1 != nil { + return v1.ToRawInfo() + } + return nil +} + +// ToRawInfo returns a description of SecuritySchemesOrReferences suitable for JSON or YAML export. +func (m *SecuritySchemesOrReferences) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedSecuritySchemeOrReference StringEnumValues:[] MapType:SecuritySchemeOrReference Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Server suitable for JSON or YAML export. +func (m *Server) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Url != "" { + info = append(info, yaml.MapItem{"url", m.Url}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.Variables != nil { + info = append(info, yaml.MapItem{"variables", m.Variables.ToRawInfo()}) + } + // &{Name:variables Type:ServerVariables StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ServerVariable suitable for JSON or YAML export. +func (m *ServerVariable) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if len(m.Enum) != 0 { + info = append(info, yaml.MapItem{"enum", m.Enum}) + } + if m.Default != "" { + info = append(info, yaml.MapItem{"default", m.Default}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of ServerVariables suitable for JSON or YAML export. +func (m *ServerVariables) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.AdditionalProperties != nil { + for _, item := range m.AdditionalProperties { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:additionalProperties Type:NamedServerVariable StringEnumValues:[] MapType:ServerVariable Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of SpecificationExtension suitable for JSON or YAML export. +func (m *SpecificationExtension) ToRawInfo() interface{} { + // ONE OF WRAPPER + // SpecificationExtension + // {Name:number Type:float StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v0, ok := m.GetOneof().(*SpecificationExtension_Number); ok { + return v0.Number + } + // {Name:boolean Type:bool StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v1, ok := m.GetOneof().(*SpecificationExtension_Boolean); ok { + return v1.Boolean + } + // {Name:string Type:string StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if v2, ok := m.GetOneof().(*SpecificationExtension_String_); ok { + return v2.String_ + } + return nil +} + +// ToRawInfo returns a description of StringArray suitable for JSON or YAML export. +func (m *StringArray) ToRawInfo() interface{} { + return m.Value +} + +// ToRawInfo returns a description of Strings suitable for JSON or YAML export. +func (m *Strings) ToRawInfo() interface{} { + info := yaml.MapSlice{} + // &{Name:additionalProperties Type:NamedString StringEnumValues:[] MapType:string Repeated:true Pattern: Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Tag suitable for JSON or YAML export. +func (m *Tag) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Description != "" { + info = append(info, yaml.MapItem{"description", m.Description}) + } + if m.ExternalDocs != nil { + info = append(info, yaml.MapItem{"externalDocs", m.ExternalDocs.ToRawInfo()}) + } + // &{Name:externalDocs Type:ExternalDocs StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +// ToRawInfo returns a description of Xml suitable for JSON or YAML export. +func (m *Xml) ToRawInfo() interface{} { + info := yaml.MapSlice{} + if m.Name != "" { + info = append(info, yaml.MapItem{"name", m.Name}) + } + if m.Namespace != "" { + info = append(info, yaml.MapItem{"namespace", m.Namespace}) + } + if m.Prefix != "" { + info = append(info, yaml.MapItem{"prefix", m.Prefix}) + } + if m.Attribute != false { + info = append(info, yaml.MapItem{"attribute", m.Attribute}) + } + if m.Wrapped != false { + info = append(info, yaml.MapItem{"wrapped", m.Wrapped}) + } + if m.SpecificationExtension != nil { + for _, item := range m.SpecificationExtension { + info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()}) + } + } + // &{Name:SpecificationExtension Type:NamedAny StringEnumValues:[] MapType:Any Repeated:true Pattern:^x- Implicit:true Description:} + return info +} + +var ( + pattern0 = regexp.MustCompile("^") + pattern1 = regexp.MustCompile("^x-") + pattern2 = regexp.MustCompile("^/") + pattern3 = regexp.MustCompile("^([0-9X]{3})$") + pattern4 = regexp.MustCompile("^[a-zA-Z0-9\\.\\-_]+$") +) diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.pb.go b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.pb.go new file mode 100644 index 0000000000..73aeb6f789 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.pb.go @@ -0,0 +1,4703 @@ +// Code generated by protoc-gen-go. +// source: OpenAPIv3/OpenAPIv3.proto +// DO NOT EDIT! + +/* +Package openapi_v3 is a generated protocol buffer package. + +It is generated from these files: + OpenAPIv3/OpenAPIv3.proto + +It has these top-level messages: + AdditionalPropertiesItem + Any + AnyOrExpression + AnysOrExpressions + Callback + CallbackOrReference + CallbacksOrReferences + Components + Contact + DefaultType + Discriminator + Document + Encoding + Encodings + Example + ExampleOrReference + Examples + ExamplesOrReferences + Expression + ExternalDocs + Header + HeaderOrReference + HeadersOrReferences + Info + ItemsItem + License + Link + LinkOrReference + LinksOrReferences + MediaType + MediaTypes + NamedAny + NamedAnyOrExpression + NamedCallbackOrReference + NamedEncoding + NamedExampleOrReference + NamedHeaderOrReference + NamedLinkOrReference + NamedMediaType + NamedParameterOrReference + NamedPathItem + NamedRequestBodyOrReference + NamedResponseOrReference + NamedSchemaOrReference + NamedSecuritySchemeOrReference + NamedServerVariable + NamedString + OauthFlow + OauthFlows + Object + Operation + Parameter + ParameterOrReference + ParametersOrReferences + PathItem + Paths + Properties + Reference + RequestBodiesOrReferences + RequestBody + RequestBodyOrReference + Response + ResponseOrReference + Responses + ResponsesOrReferences + Schema + SchemaOrReference + SchemasOrReferences + SecurityRequirement + SecurityScheme + SecuritySchemeOrReference + SecuritySchemesOrReferences + Server + ServerVariable + ServerVariables + SpecificationExtension + StringArray + Strings + Tag + Xml +*/ +package openapi_v3 + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import google_protobuf "github.com/golang/protobuf/ptypes/any" + +// 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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type AdditionalPropertiesItem struct { + // Types that are valid to be assigned to Oneof: + // *AdditionalPropertiesItem_SchemaOrReference + // *AdditionalPropertiesItem_Boolean + Oneof isAdditionalPropertiesItem_Oneof `protobuf_oneof:"oneof"` +} + +func (m *AdditionalPropertiesItem) Reset() { *m = AdditionalPropertiesItem{} } +func (m *AdditionalPropertiesItem) String() string { return proto.CompactTextString(m) } +func (*AdditionalPropertiesItem) ProtoMessage() {} +func (*AdditionalPropertiesItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +type isAdditionalPropertiesItem_Oneof interface { + isAdditionalPropertiesItem_Oneof() +} + +type AdditionalPropertiesItem_SchemaOrReference struct { + SchemaOrReference *SchemaOrReference `protobuf:"bytes,1,opt,name=schema_or_reference,json=schemaOrReference,oneof"` +} +type AdditionalPropertiesItem_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,oneof"` +} + +func (*AdditionalPropertiesItem_SchemaOrReference) isAdditionalPropertiesItem_Oneof() {} +func (*AdditionalPropertiesItem_Boolean) isAdditionalPropertiesItem_Oneof() {} + +func (m *AdditionalPropertiesItem) GetOneof() isAdditionalPropertiesItem_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *AdditionalPropertiesItem) GetSchemaOrReference() *SchemaOrReference { + if x, ok := m.GetOneof().(*AdditionalPropertiesItem_SchemaOrReference); ok { + return x.SchemaOrReference + } + return nil +} + +func (m *AdditionalPropertiesItem) GetBoolean() bool { + if x, ok := m.GetOneof().(*AdditionalPropertiesItem_Boolean); ok { + return x.Boolean + } + return false +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*AdditionalPropertiesItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _AdditionalPropertiesItem_OneofMarshaler, _AdditionalPropertiesItem_OneofUnmarshaler, _AdditionalPropertiesItem_OneofSizer, []interface{}{ + (*AdditionalPropertiesItem_SchemaOrReference)(nil), + (*AdditionalPropertiesItem_Boolean)(nil), + } +} + +func _AdditionalPropertiesItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*AdditionalPropertiesItem) + // oneof + switch x := m.Oneof.(type) { + case *AdditionalPropertiesItem_SchemaOrReference: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SchemaOrReference); err != nil { + return err + } + case *AdditionalPropertiesItem_Boolean: + t := uint64(0) + if x.Boolean { + t = 1 + } + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("AdditionalPropertiesItem.Oneof has unexpected type %T", x) + } + return nil +} + +func _AdditionalPropertiesItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*AdditionalPropertiesItem) + switch tag { + case 1: // oneof.schema_or_reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SchemaOrReference) + err := b.DecodeMessage(msg) + m.Oneof = &AdditionalPropertiesItem_SchemaOrReference{msg} + return true, err + case 2: // oneof.boolean + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Oneof = &AdditionalPropertiesItem_Boolean{x != 0} + return true, err + default: + return false, nil + } +} + +func _AdditionalPropertiesItem_OneofSizer(msg proto.Message) (n int) { + m := msg.(*AdditionalPropertiesItem) + // oneof + switch x := m.Oneof.(type) { + case *AdditionalPropertiesItem_SchemaOrReference: + s := proto.Size(x.SchemaOrReference) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AdditionalPropertiesItem_Boolean: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type Any struct { + Value *google_protobuf.Any `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` + Yaml string `protobuf:"bytes,2,opt,name=yaml" json:"yaml,omitempty"` +} + +func (m *Any) Reset() { *m = Any{} } +func (m *Any) String() string { return proto.CompactTextString(m) } +func (*Any) ProtoMessage() {} +func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *Any) GetValue() *google_protobuf.Any { + if m != nil { + return m.Value + } + return nil +} + +func (m *Any) GetYaml() string { + if m != nil { + return m.Yaml + } + return "" +} + +type AnyOrExpression struct { + // Types that are valid to be assigned to Oneof: + // *AnyOrExpression_Any + // *AnyOrExpression_Expression + Oneof isAnyOrExpression_Oneof `protobuf_oneof:"oneof"` +} + +func (m *AnyOrExpression) Reset() { *m = AnyOrExpression{} } +func (m *AnyOrExpression) String() string { return proto.CompactTextString(m) } +func (*AnyOrExpression) ProtoMessage() {} +func (*AnyOrExpression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +type isAnyOrExpression_Oneof interface { + isAnyOrExpression_Oneof() +} + +type AnyOrExpression_Any struct { + Any *Any `protobuf:"bytes,1,opt,name=any,oneof"` +} +type AnyOrExpression_Expression struct { + Expression *Expression `protobuf:"bytes,2,opt,name=expression,oneof"` +} + +func (*AnyOrExpression_Any) isAnyOrExpression_Oneof() {} +func (*AnyOrExpression_Expression) isAnyOrExpression_Oneof() {} + +func (m *AnyOrExpression) GetOneof() isAnyOrExpression_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *AnyOrExpression) GetAny() *Any { + if x, ok := m.GetOneof().(*AnyOrExpression_Any); ok { + return x.Any + } + return nil +} + +func (m *AnyOrExpression) GetExpression() *Expression { + if x, ok := m.GetOneof().(*AnyOrExpression_Expression); ok { + return x.Expression + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*AnyOrExpression) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _AnyOrExpression_OneofMarshaler, _AnyOrExpression_OneofUnmarshaler, _AnyOrExpression_OneofSizer, []interface{}{ + (*AnyOrExpression_Any)(nil), + (*AnyOrExpression_Expression)(nil), + } +} + +func _AnyOrExpression_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*AnyOrExpression) + // oneof + switch x := m.Oneof.(type) { + case *AnyOrExpression_Any: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Any); err != nil { + return err + } + case *AnyOrExpression_Expression: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Expression); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("AnyOrExpression.Oneof has unexpected type %T", x) + } + return nil +} + +func _AnyOrExpression_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*AnyOrExpression) + switch tag { + case 1: // oneof.any + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Any) + err := b.DecodeMessage(msg) + m.Oneof = &AnyOrExpression_Any{msg} + return true, err + case 2: // oneof.expression + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Expression) + err := b.DecodeMessage(msg) + m.Oneof = &AnyOrExpression_Expression{msg} + return true, err + default: + return false, nil + } +} + +func _AnyOrExpression_OneofSizer(msg proto.Message) (n int) { + m := msg.(*AnyOrExpression) + // oneof + switch x := m.Oneof.(type) { + case *AnyOrExpression_Any: + s := proto.Size(x.Any) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AnyOrExpression_Expression: + s := proto.Size(x.Expression) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type AnysOrExpressions struct { + AdditionalProperties []*NamedAnyOrExpression `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *AnysOrExpressions) Reset() { *m = AnysOrExpressions{} } +func (m *AnysOrExpressions) String() string { return proto.CompactTextString(m) } +func (*AnysOrExpressions) ProtoMessage() {} +func (*AnysOrExpressions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *AnysOrExpressions) GetAdditionalProperties() []*NamedAnyOrExpression { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation. +type Callback struct { + Path []*NamedPathItem `protobuf:"bytes,1,rep,name=path" json:"path,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,2,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Callback) Reset() { *m = Callback{} } +func (m *Callback) String() string { return proto.CompactTextString(m) } +func (*Callback) ProtoMessage() {} +func (*Callback) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *Callback) GetPath() []*NamedPathItem { + if m != nil { + return m.Path + } + return nil +} + +func (m *Callback) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type CallbackOrReference struct { + // Types that are valid to be assigned to Oneof: + // *CallbackOrReference_Callback + // *CallbackOrReference_Reference + Oneof isCallbackOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *CallbackOrReference) Reset() { *m = CallbackOrReference{} } +func (m *CallbackOrReference) String() string { return proto.CompactTextString(m) } +func (*CallbackOrReference) ProtoMessage() {} +func (*CallbackOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +type isCallbackOrReference_Oneof interface { + isCallbackOrReference_Oneof() +} + +type CallbackOrReference_Callback struct { + Callback *Callback `protobuf:"bytes,1,opt,name=callback,oneof"` +} +type CallbackOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*CallbackOrReference_Callback) isCallbackOrReference_Oneof() {} +func (*CallbackOrReference_Reference) isCallbackOrReference_Oneof() {} + +func (m *CallbackOrReference) GetOneof() isCallbackOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *CallbackOrReference) GetCallback() *Callback { + if x, ok := m.GetOneof().(*CallbackOrReference_Callback); ok { + return x.Callback + } + return nil +} + +func (m *CallbackOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*CallbackOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CallbackOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CallbackOrReference_OneofMarshaler, _CallbackOrReference_OneofUnmarshaler, _CallbackOrReference_OneofSizer, []interface{}{ + (*CallbackOrReference_Callback)(nil), + (*CallbackOrReference_Reference)(nil), + } +} + +func _CallbackOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CallbackOrReference) + // oneof + switch x := m.Oneof.(type) { + case *CallbackOrReference_Callback: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Callback); err != nil { + return err + } + case *CallbackOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CallbackOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _CallbackOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CallbackOrReference) + switch tag { + case 1: // oneof.callback + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Callback) + err := b.DecodeMessage(msg) + m.Oneof = &CallbackOrReference_Callback{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &CallbackOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _CallbackOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CallbackOrReference) + // oneof + switch x := m.Oneof.(type) { + case *CallbackOrReference_Callback: + s := proto.Size(x.Callback) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *CallbackOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type CallbacksOrReferences struct { + AdditionalProperties []*NamedCallbackOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *CallbacksOrReferences) Reset() { *m = CallbacksOrReferences{} } +func (m *CallbacksOrReferences) String() string { return proto.CompactTextString(m) } +func (*CallbacksOrReferences) ProtoMessage() {} +func (*CallbacksOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } + +func (m *CallbacksOrReferences) GetAdditionalProperties() []*NamedCallbackOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. +type Components struct { + Schemas *SchemasOrReferences `protobuf:"bytes,1,opt,name=schemas" json:"schemas,omitempty"` + Responses *ResponsesOrReferences `protobuf:"bytes,2,opt,name=responses" json:"responses,omitempty"` + Parameters *ParametersOrReferences `protobuf:"bytes,3,opt,name=parameters" json:"parameters,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,4,opt,name=examples" json:"examples,omitempty"` + RequestBodies *RequestBodiesOrReferences `protobuf:"bytes,5,opt,name=request_bodies,json=requestBodies" json:"request_bodies,omitempty"` + Headers *HeadersOrReferences `protobuf:"bytes,6,opt,name=headers" json:"headers,omitempty"` + SecuritySchemes *SecuritySchemesOrReferences `protobuf:"bytes,7,opt,name=security_schemes,json=securitySchemes" json:"security_schemes,omitempty"` + Links *LinksOrReferences `protobuf:"bytes,8,opt,name=links" json:"links,omitempty"` + Callbacks *CallbacksOrReferences `protobuf:"bytes,9,opt,name=callbacks" json:"callbacks,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,10,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Components) Reset() { *m = Components{} } +func (m *Components) String() string { return proto.CompactTextString(m) } +func (*Components) ProtoMessage() {} +func (*Components) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +func (m *Components) GetSchemas() *SchemasOrReferences { + if m != nil { + return m.Schemas + } + return nil +} + +func (m *Components) GetResponses() *ResponsesOrReferences { + if m != nil { + return m.Responses + } + return nil +} + +func (m *Components) GetParameters() *ParametersOrReferences { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *Components) GetExamples() *ExamplesOrReferences { + if m != nil { + return m.Examples + } + return nil +} + +func (m *Components) GetRequestBodies() *RequestBodiesOrReferences { + if m != nil { + return m.RequestBodies + } + return nil +} + +func (m *Components) GetHeaders() *HeadersOrReferences { + if m != nil { + return m.Headers + } + return nil +} + +func (m *Components) GetSecuritySchemes() *SecuritySchemesOrReferences { + if m != nil { + return m.SecuritySchemes + } + return nil +} + +func (m *Components) GetLinks() *LinksOrReferences { + if m != nil { + return m.Links + } + return nil +} + +func (m *Components) GetCallbacks() *CallbacksOrReferences { + if m != nil { + return m.Callbacks + } + return nil +} + +func (m *Components) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// Contact information for the exposed API. +type Contact struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` + Email string `protobuf:"bytes,3,opt,name=email" json:"email,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Contact) Reset() { *m = Contact{} } +func (m *Contact) String() string { return proto.CompactTextString(m) } +func (*Contact) ProtoMessage() {} +func (*Contact) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *Contact) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Contact) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *Contact) GetEmail() string { + if m != nil { + return m.Email + } + return "" +} + +func (m *Contact) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type DefaultType struct { + // Types that are valid to be assigned to Oneof: + // *DefaultType_Number + // *DefaultType_Boolean + // *DefaultType_String_ + Oneof isDefaultType_Oneof `protobuf_oneof:"oneof"` +} + +func (m *DefaultType) Reset() { *m = DefaultType{} } +func (m *DefaultType) String() string { return proto.CompactTextString(m) } +func (*DefaultType) ProtoMessage() {} +func (*DefaultType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + +type isDefaultType_Oneof interface { + isDefaultType_Oneof() +} + +type DefaultType_Number struct { + Number float64 `protobuf:"fixed64,1,opt,name=number,oneof"` +} +type DefaultType_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,oneof"` +} +type DefaultType_String_ struct { + String_ string `protobuf:"bytes,3,opt,name=string,oneof"` +} + +func (*DefaultType_Number) isDefaultType_Oneof() {} +func (*DefaultType_Boolean) isDefaultType_Oneof() {} +func (*DefaultType_String_) isDefaultType_Oneof() {} + +func (m *DefaultType) GetOneof() isDefaultType_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *DefaultType) GetNumber() float64 { + if x, ok := m.GetOneof().(*DefaultType_Number); ok { + return x.Number + } + return 0 +} + +func (m *DefaultType) GetBoolean() bool { + if x, ok := m.GetOneof().(*DefaultType_Boolean); ok { + return x.Boolean + } + return false +} + +func (m *DefaultType) GetString_() string { + if x, ok := m.GetOneof().(*DefaultType_String_); ok { + return x.String_ + } + return "" +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*DefaultType) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _DefaultType_OneofMarshaler, _DefaultType_OneofUnmarshaler, _DefaultType_OneofSizer, []interface{}{ + (*DefaultType_Number)(nil), + (*DefaultType_Boolean)(nil), + (*DefaultType_String_)(nil), + } +} + +func _DefaultType_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*DefaultType) + // oneof + switch x := m.Oneof.(type) { + case *DefaultType_Number: + b.EncodeVarint(1<<3 | proto.WireFixed64) + b.EncodeFixed64(math.Float64bits(x.Number)) + case *DefaultType_Boolean: + t := uint64(0) + if x.Boolean { + t = 1 + } + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(t) + case *DefaultType_String_: + b.EncodeVarint(3<<3 | proto.WireBytes) + b.EncodeStringBytes(x.String_) + case nil: + default: + return fmt.Errorf("DefaultType.Oneof has unexpected type %T", x) + } + return nil +} + +func _DefaultType_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*DefaultType) + switch tag { + case 1: // oneof.number + if wire != proto.WireFixed64 { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeFixed64() + m.Oneof = &DefaultType_Number{math.Float64frombits(x)} + return true, err + case 2: // oneof.boolean + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Oneof = &DefaultType_Boolean{x != 0} + return true, err + case 3: // oneof.string + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Oneof = &DefaultType_String_{x} + return true, err + default: + return false, nil + } +} + +func _DefaultType_OneofSizer(msg proto.Message) (n int) { + m := msg.(*DefaultType) + // oneof + switch x := m.Oneof.(type) { + case *DefaultType_Number: + n += proto.SizeVarint(1<<3 | proto.WireFixed64) + n += 8 + case *DefaultType_Boolean: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 + case *DefaultType_String_: + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.String_))) + n += len(x.String_) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered. +type Discriminator struct { + PropertyName string `protobuf:"bytes,1,opt,name=property_name,json=propertyName" json:"property_name,omitempty"` + Mapping *Strings `protobuf:"bytes,2,opt,name=mapping" json:"mapping,omitempty"` +} + +func (m *Discriminator) Reset() { *m = Discriminator{} } +func (m *Discriminator) String() string { return proto.CompactTextString(m) } +func (*Discriminator) ProtoMessage() {} +func (*Discriminator) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +func (m *Discriminator) GetPropertyName() string { + if m != nil { + return m.PropertyName + } + return "" +} + +func (m *Discriminator) GetMapping() *Strings { + if m != nil { + return m.Mapping + } + return nil +} + +type Document struct { + Openapi string `protobuf:"bytes,1,opt,name=openapi" json:"openapi,omitempty"` + Info *Info `protobuf:"bytes,2,opt,name=info" json:"info,omitempty"` + Servers []*Server `protobuf:"bytes,3,rep,name=servers" json:"servers,omitempty"` + Paths *Paths `protobuf:"bytes,4,opt,name=paths" json:"paths,omitempty"` + Components *Components `protobuf:"bytes,5,opt,name=components" json:"components,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,6,rep,name=security" json:"security,omitempty"` + Tags []*Tag `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,8,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,9,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Document) Reset() { *m = Document{} } +func (m *Document) String() string { return proto.CompactTextString(m) } +func (*Document) ProtoMessage() {} +func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } + +func (m *Document) GetOpenapi() string { + if m != nil { + return m.Openapi + } + return "" +} + +func (m *Document) GetInfo() *Info { + if m != nil { + return m.Info + } + return nil +} + +func (m *Document) GetServers() []*Server { + if m != nil { + return m.Servers + } + return nil +} + +func (m *Document) GetPaths() *Paths { + if m != nil { + return m.Paths + } + return nil +} + +func (m *Document) GetComponents() *Components { + if m != nil { + return m.Components + } + return nil +} + +func (m *Document) GetSecurity() []*SecurityRequirement { + if m != nil { + return m.Security + } + return nil +} + +func (m *Document) GetTags() []*Tag { + if m != nil { + return m.Tags + } + return nil +} + +func (m *Document) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Document) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// A single encoding definition applied to a single schema property. +type Encoding struct { + ContentType string `protobuf:"bytes,1,opt,name=content_type,json=contentType" json:"content_type,omitempty"` + Headers *HeadersOrReferences `protobuf:"bytes,2,opt,name=headers" json:"headers,omitempty"` + Style string `protobuf:"bytes,3,opt,name=style" json:"style,omitempty"` + Explode bool `protobuf:"varint,4,opt,name=explode" json:"explode,omitempty"` + AllowReserved bool `protobuf:"varint,5,opt,name=allow_reserved,json=allowReserved" json:"allow_reserved,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,6,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Encoding) Reset() { *m = Encoding{} } +func (m *Encoding) String() string { return proto.CompactTextString(m) } +func (*Encoding) ProtoMessage() {} +func (*Encoding) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } + +func (m *Encoding) GetContentType() string { + if m != nil { + return m.ContentType + } + return "" +} + +func (m *Encoding) GetHeaders() *HeadersOrReferences { + if m != nil { + return m.Headers + } + return nil +} + +func (m *Encoding) GetStyle() string { + if m != nil { + return m.Style + } + return "" +} + +func (m *Encoding) GetExplode() bool { + if m != nil { + return m.Explode + } + return false +} + +func (m *Encoding) GetAllowReserved() bool { + if m != nil { + return m.AllowReserved + } + return false +} + +func (m *Encoding) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type Encodings struct { + AdditionalProperties []*NamedEncoding `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Encodings) Reset() { *m = Encodings{} } +func (m *Encodings) String() string { return proto.CompactTextString(m) } +func (*Encodings) ProtoMessage() {} +func (*Encodings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } + +func (m *Encodings) GetAdditionalProperties() []*NamedEncoding { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type Example struct { + Summary string `protobuf:"bytes,1,opt,name=summary" json:"summary,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + Value *Any `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` + ExternalValue string `protobuf:"bytes,4,opt,name=external_value,json=externalValue" json:"external_value,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Example) Reset() { *m = Example{} } +func (m *Example) String() string { return proto.CompactTextString(m) } +func (*Example) ProtoMessage() {} +func (*Example) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *Example) GetSummary() string { + if m != nil { + return m.Summary + } + return "" +} + +func (m *Example) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Example) GetValue() *Any { + if m != nil { + return m.Value + } + return nil +} + +func (m *Example) GetExternalValue() string { + if m != nil { + return m.ExternalValue + } + return "" +} + +func (m *Example) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type ExampleOrReference struct { + // Types that are valid to be assigned to Oneof: + // *ExampleOrReference_Example + // *ExampleOrReference_Reference + Oneof isExampleOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *ExampleOrReference) Reset() { *m = ExampleOrReference{} } +func (m *ExampleOrReference) String() string { return proto.CompactTextString(m) } +func (*ExampleOrReference) ProtoMessage() {} +func (*ExampleOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +type isExampleOrReference_Oneof interface { + isExampleOrReference_Oneof() +} + +type ExampleOrReference_Example struct { + Example *Example `protobuf:"bytes,1,opt,name=example,oneof"` +} +type ExampleOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*ExampleOrReference_Example) isExampleOrReference_Oneof() {} +func (*ExampleOrReference_Reference) isExampleOrReference_Oneof() {} + +func (m *ExampleOrReference) GetOneof() isExampleOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *ExampleOrReference) GetExample() *Example { + if x, ok := m.GetOneof().(*ExampleOrReference_Example); ok { + return x.Example + } + return nil +} + +func (m *ExampleOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*ExampleOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ExampleOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ExampleOrReference_OneofMarshaler, _ExampleOrReference_OneofUnmarshaler, _ExampleOrReference_OneofSizer, []interface{}{ + (*ExampleOrReference_Example)(nil), + (*ExampleOrReference_Reference)(nil), + } +} + +func _ExampleOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ExampleOrReference) + // oneof + switch x := m.Oneof.(type) { + case *ExampleOrReference_Example: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Example); err != nil { + return err + } + case *ExampleOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ExampleOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _ExampleOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ExampleOrReference) + switch tag { + case 1: // oneof.example + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Example) + err := b.DecodeMessage(msg) + m.Oneof = &ExampleOrReference_Example{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &ExampleOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _ExampleOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ExampleOrReference) + // oneof + switch x := m.Oneof.(type) { + case *ExampleOrReference_Example: + s := proto.Size(x.Example) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ExampleOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type Examples struct { +} + +func (m *Examples) Reset() { *m = Examples{} } +func (m *Examples) String() string { return proto.CompactTextString(m) } +func (*Examples) ProtoMessage() {} +func (*Examples) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +type ExamplesOrReferences struct { + AdditionalProperties []*NamedExampleOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *ExamplesOrReferences) Reset() { *m = ExamplesOrReferences{} } +func (m *ExamplesOrReferences) String() string { return proto.CompactTextString(m) } +func (*ExamplesOrReferences) ProtoMessage() {} +func (*ExamplesOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } + +func (m *ExamplesOrReferences) GetAdditionalProperties() []*NamedExampleOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +type Expression struct { + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Expression) Reset() { *m = Expression{} } +func (m *Expression) String() string { return proto.CompactTextString(m) } +func (*Expression) ProtoMessage() {} +func (*Expression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } + +func (m *Expression) GetAdditionalProperties() []*NamedAny { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Allows referencing an external resource for extended documentation. +type ExternalDocs struct { + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *ExternalDocs) Reset() { *m = ExternalDocs{} } +func (m *ExternalDocs) String() string { return proto.CompactTextString(m) } +func (*ExternalDocs) ProtoMessage() {} +func (*ExternalDocs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } + +func (m *ExternalDocs) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ExternalDocs) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *ExternalDocs) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`). +type Header struct { + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Required bool `protobuf:"varint,2,opt,name=required" json:"required,omitempty"` + Deprecated bool `protobuf:"varint,3,opt,name=deprecated" json:"deprecated,omitempty"` + AllowEmptyValue bool `protobuf:"varint,4,opt,name=allow_empty_value,json=allowEmptyValue" json:"allow_empty_value,omitempty"` + Style string `protobuf:"bytes,5,opt,name=style" json:"style,omitempty"` + Explode bool `protobuf:"varint,6,opt,name=explode" json:"explode,omitempty"` + AllowReserved bool `protobuf:"varint,7,opt,name=allow_reserved,json=allowReserved" json:"allow_reserved,omitempty"` + Schema *SchemaOrReference `protobuf:"bytes,8,opt,name=schema" json:"schema,omitempty"` + Example *Any `protobuf:"bytes,9,opt,name=example" json:"example,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,10,opt,name=examples" json:"examples,omitempty"` + Content *MediaTypes `protobuf:"bytes,11,opt,name=content" json:"content,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,12,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Header) Reset() { *m = Header{} } +func (m *Header) String() string { return proto.CompactTextString(m) } +func (*Header) ProtoMessage() {} +func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } + +func (m *Header) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Header) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *Header) GetDeprecated() bool { + if m != nil { + return m.Deprecated + } + return false +} + +func (m *Header) GetAllowEmptyValue() bool { + if m != nil { + return m.AllowEmptyValue + } + return false +} + +func (m *Header) GetStyle() string { + if m != nil { + return m.Style + } + return "" +} + +func (m *Header) GetExplode() bool { + if m != nil { + return m.Explode + } + return false +} + +func (m *Header) GetAllowReserved() bool { + if m != nil { + return m.AllowReserved + } + return false +} + +func (m *Header) GetSchema() *SchemaOrReference { + if m != nil { + return m.Schema + } + return nil +} + +func (m *Header) GetExample() *Any { + if m != nil { + return m.Example + } + return nil +} + +func (m *Header) GetExamples() *ExamplesOrReferences { + if m != nil { + return m.Examples + } + return nil +} + +func (m *Header) GetContent() *MediaTypes { + if m != nil { + return m.Content + } + return nil +} + +func (m *Header) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type HeaderOrReference struct { + // Types that are valid to be assigned to Oneof: + // *HeaderOrReference_Header + // *HeaderOrReference_Reference + Oneof isHeaderOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *HeaderOrReference) Reset() { *m = HeaderOrReference{} } +func (m *HeaderOrReference) String() string { return proto.CompactTextString(m) } +func (*HeaderOrReference) ProtoMessage() {} +func (*HeaderOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } + +type isHeaderOrReference_Oneof interface { + isHeaderOrReference_Oneof() +} + +type HeaderOrReference_Header struct { + Header *Header `protobuf:"bytes,1,opt,name=header,oneof"` +} +type HeaderOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*HeaderOrReference_Header) isHeaderOrReference_Oneof() {} +func (*HeaderOrReference_Reference) isHeaderOrReference_Oneof() {} + +func (m *HeaderOrReference) GetOneof() isHeaderOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *HeaderOrReference) GetHeader() *Header { + if x, ok := m.GetOneof().(*HeaderOrReference_Header); ok { + return x.Header + } + return nil +} + +func (m *HeaderOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*HeaderOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*HeaderOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _HeaderOrReference_OneofMarshaler, _HeaderOrReference_OneofUnmarshaler, _HeaderOrReference_OneofSizer, []interface{}{ + (*HeaderOrReference_Header)(nil), + (*HeaderOrReference_Reference)(nil), + } +} + +func _HeaderOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*HeaderOrReference) + // oneof + switch x := m.Oneof.(type) { + case *HeaderOrReference_Header: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Header); err != nil { + return err + } + case *HeaderOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("HeaderOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _HeaderOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*HeaderOrReference) + switch tag { + case 1: // oneof.header + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Header) + err := b.DecodeMessage(msg) + m.Oneof = &HeaderOrReference_Header{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &HeaderOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _HeaderOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*HeaderOrReference) + // oneof + switch x := m.Oneof.(type) { + case *HeaderOrReference_Header: + s := proto.Size(x.Header) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *HeaderOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type HeadersOrReferences struct { + AdditionalProperties []*NamedHeaderOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *HeadersOrReferences) Reset() { *m = HeadersOrReferences{} } +func (m *HeadersOrReferences) String() string { return proto.CompactTextString(m) } +func (*HeadersOrReferences) ProtoMessage() {} +func (*HeadersOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } + +func (m *HeadersOrReferences) GetAdditionalProperties() []*NamedHeaderOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience. +type Info struct { + Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + TermsOfService string `protobuf:"bytes,3,opt,name=terms_of_service,json=termsOfService" json:"terms_of_service,omitempty"` + Contact *Contact `protobuf:"bytes,4,opt,name=contact" json:"contact,omitempty"` + License *License `protobuf:"bytes,5,opt,name=license" json:"license,omitempty"` + Version string `protobuf:"bytes,6,opt,name=version" json:"version,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,7,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Info) Reset() { *m = Info{} } +func (m *Info) String() string { return proto.CompactTextString(m) } +func (*Info) ProtoMessage() {} +func (*Info) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } + +func (m *Info) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *Info) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Info) GetTermsOfService() string { + if m != nil { + return m.TermsOfService + } + return "" +} + +func (m *Info) GetContact() *Contact { + if m != nil { + return m.Contact + } + return nil +} + +func (m *Info) GetLicense() *License { + if m != nil { + return m.License + } + return nil +} + +func (m *Info) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *Info) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type ItemsItem struct { + SchemaOrReference []*SchemaOrReference `protobuf:"bytes,1,rep,name=schema_or_reference,json=schemaOrReference" json:"schema_or_reference,omitempty"` +} + +func (m *ItemsItem) Reset() { *m = ItemsItem{} } +func (m *ItemsItem) String() string { return proto.CompactTextString(m) } +func (*ItemsItem) ProtoMessage() {} +func (*ItemsItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *ItemsItem) GetSchemaOrReference() []*SchemaOrReference { + if m != nil { + return m.SchemaOrReference + } + return nil +} + +// License information for the exposed API. +type License struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *License) Reset() { *m = License{} } +func (m *License) String() string { return proto.CompactTextString(m) } +func (*License) ProtoMessage() {} +func (*License) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } + +func (m *License) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *License) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *License) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation. +type Link struct { + OperationRef string `protobuf:"bytes,1,opt,name=operation_ref,json=operationRef" json:"operation_ref,omitempty"` + OperationId string `protobuf:"bytes,2,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` + Parameters *AnysOrExpressions `protobuf:"bytes,3,opt,name=parameters" json:"parameters,omitempty"` + RequestBody *AnyOrExpression `protobuf:"bytes,4,opt,name=request_body,json=requestBody" json:"request_body,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` + Server *Server `protobuf:"bytes,6,opt,name=server" json:"server,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,7,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Link) Reset() { *m = Link{} } +func (m *Link) String() string { return proto.CompactTextString(m) } +func (*Link) ProtoMessage() {} +func (*Link) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } + +func (m *Link) GetOperationRef() string { + if m != nil { + return m.OperationRef + } + return "" +} + +func (m *Link) GetOperationId() string { + if m != nil { + return m.OperationId + } + return "" +} + +func (m *Link) GetParameters() *AnysOrExpressions { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *Link) GetRequestBody() *AnyOrExpression { + if m != nil { + return m.RequestBody + } + return nil +} + +func (m *Link) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Link) GetServer() *Server { + if m != nil { + return m.Server + } + return nil +} + +func (m *Link) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type LinkOrReference struct { + // Types that are valid to be assigned to Oneof: + // *LinkOrReference_Link + // *LinkOrReference_Reference + Oneof isLinkOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *LinkOrReference) Reset() { *m = LinkOrReference{} } +func (m *LinkOrReference) String() string { return proto.CompactTextString(m) } +func (*LinkOrReference) ProtoMessage() {} +func (*LinkOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } + +type isLinkOrReference_Oneof interface { + isLinkOrReference_Oneof() +} + +type LinkOrReference_Link struct { + Link *Link `protobuf:"bytes,1,opt,name=link,oneof"` +} +type LinkOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*LinkOrReference_Link) isLinkOrReference_Oneof() {} +func (*LinkOrReference_Reference) isLinkOrReference_Oneof() {} + +func (m *LinkOrReference) GetOneof() isLinkOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *LinkOrReference) GetLink() *Link { + if x, ok := m.GetOneof().(*LinkOrReference_Link); ok { + return x.Link + } + return nil +} + +func (m *LinkOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*LinkOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*LinkOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _LinkOrReference_OneofMarshaler, _LinkOrReference_OneofUnmarshaler, _LinkOrReference_OneofSizer, []interface{}{ + (*LinkOrReference_Link)(nil), + (*LinkOrReference_Reference)(nil), + } +} + +func _LinkOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*LinkOrReference) + // oneof + switch x := m.Oneof.(type) { + case *LinkOrReference_Link: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Link); err != nil { + return err + } + case *LinkOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("LinkOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _LinkOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*LinkOrReference) + switch tag { + case 1: // oneof.link + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Link) + err := b.DecodeMessage(msg) + m.Oneof = &LinkOrReference_Link{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &LinkOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _LinkOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*LinkOrReference) + // oneof + switch x := m.Oneof.(type) { + case *LinkOrReference_Link: + s := proto.Size(x.Link) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *LinkOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type LinksOrReferences struct { + AdditionalProperties []*NamedLinkOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *LinksOrReferences) Reset() { *m = LinksOrReferences{} } +func (m *LinksOrReferences) String() string { return proto.CompactTextString(m) } +func (*LinksOrReferences) ProtoMessage() {} +func (*LinksOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } + +func (m *LinksOrReferences) GetAdditionalProperties() []*NamedLinkOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Each Media Type Object provides schema and examples for the media type identified by its key. +type MediaType struct { + Schema *SchemaOrReference `protobuf:"bytes,1,opt,name=schema" json:"schema,omitempty"` + Example *Any `protobuf:"bytes,2,opt,name=example" json:"example,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,3,opt,name=examples" json:"examples,omitempty"` + Encoding *Encodings `protobuf:"bytes,4,opt,name=encoding" json:"encoding,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *MediaType) Reset() { *m = MediaType{} } +func (m *MediaType) String() string { return proto.CompactTextString(m) } +func (*MediaType) ProtoMessage() {} +func (*MediaType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } + +func (m *MediaType) GetSchema() *SchemaOrReference { + if m != nil { + return m.Schema + } + return nil +} + +func (m *MediaType) GetExample() *Any { + if m != nil { + return m.Example + } + return nil +} + +func (m *MediaType) GetExamples() *ExamplesOrReferences { + if m != nil { + return m.Examples + } + return nil +} + +func (m *MediaType) GetEncoding() *Encodings { + if m != nil { + return m.Encoding + } + return nil +} + +func (m *MediaType) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type MediaTypes struct { + AdditionalProperties []*NamedMediaType `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *MediaTypes) Reset() { *m = MediaTypes{} } +func (m *MediaTypes) String() string { return proto.CompactTextString(m) } +func (*MediaTypes) ProtoMessage() {} +func (*MediaTypes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } + +func (m *MediaTypes) GetAdditionalProperties() []*NamedMediaType { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +type NamedAny struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Any `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedAny) Reset() { *m = NamedAny{} } +func (m *NamedAny) String() string { return proto.CompactTextString(m) } +func (*NamedAny) ProtoMessage() {} +func (*NamedAny) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } + +func (m *NamedAny) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedAny) GetValue() *Any { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of AnyOrExpression as ordered (name,value) pairs. +type NamedAnyOrExpression struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *AnyOrExpression `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedAnyOrExpression) Reset() { *m = NamedAnyOrExpression{} } +func (m *NamedAnyOrExpression) String() string { return proto.CompactTextString(m) } +func (*NamedAnyOrExpression) ProtoMessage() {} +func (*NamedAnyOrExpression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } + +func (m *NamedAnyOrExpression) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedAnyOrExpression) GetValue() *AnyOrExpression { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of CallbackOrReference as ordered (name,value) pairs. +type NamedCallbackOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *CallbackOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedCallbackOrReference) Reset() { *m = NamedCallbackOrReference{} } +func (m *NamedCallbackOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedCallbackOrReference) ProtoMessage() {} +func (*NamedCallbackOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } + +func (m *NamedCallbackOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedCallbackOrReference) GetValue() *CallbackOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of Encoding as ordered (name,value) pairs. +type NamedEncoding struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *Encoding `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedEncoding) Reset() { *m = NamedEncoding{} } +func (m *NamedEncoding) String() string { return proto.CompactTextString(m) } +func (*NamedEncoding) ProtoMessage() {} +func (*NamedEncoding) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } + +func (m *NamedEncoding) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedEncoding) GetValue() *Encoding { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ExampleOrReference as ordered (name,value) pairs. +type NamedExampleOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *ExampleOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedExampleOrReference) Reset() { *m = NamedExampleOrReference{} } +func (m *NamedExampleOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedExampleOrReference) ProtoMessage() {} +func (*NamedExampleOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } + +func (m *NamedExampleOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedExampleOrReference) GetValue() *ExampleOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of HeaderOrReference as ordered (name,value) pairs. +type NamedHeaderOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *HeaderOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedHeaderOrReference) Reset() { *m = NamedHeaderOrReference{} } +func (m *NamedHeaderOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedHeaderOrReference) ProtoMessage() {} +func (*NamedHeaderOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } + +func (m *NamedHeaderOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedHeaderOrReference) GetValue() *HeaderOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of LinkOrReference as ordered (name,value) pairs. +type NamedLinkOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *LinkOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedLinkOrReference) Reset() { *m = NamedLinkOrReference{} } +func (m *NamedLinkOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedLinkOrReference) ProtoMessage() {} +func (*NamedLinkOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } + +func (m *NamedLinkOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedLinkOrReference) GetValue() *LinkOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of MediaType as ordered (name,value) pairs. +type NamedMediaType struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *MediaType `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedMediaType) Reset() { *m = NamedMediaType{} } +func (m *NamedMediaType) String() string { return proto.CompactTextString(m) } +func (*NamedMediaType) ProtoMessage() {} +func (*NamedMediaType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } + +func (m *NamedMediaType) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedMediaType) GetValue() *MediaType { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ParameterOrReference as ordered (name,value) pairs. +type NamedParameterOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *ParameterOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedParameterOrReference) Reset() { *m = NamedParameterOrReference{} } +func (m *NamedParameterOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedParameterOrReference) ProtoMessage() {} +func (*NamedParameterOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } + +func (m *NamedParameterOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedParameterOrReference) GetValue() *ParameterOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +type NamedPathItem struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *PathItem `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedPathItem) Reset() { *m = NamedPathItem{} } +func (m *NamedPathItem) String() string { return proto.CompactTextString(m) } +func (*NamedPathItem) ProtoMessage() {} +func (*NamedPathItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } + +func (m *NamedPathItem) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedPathItem) GetValue() *PathItem { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of RequestBodyOrReference as ordered (name,value) pairs. +type NamedRequestBodyOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *RequestBodyOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedRequestBodyOrReference) Reset() { *m = NamedRequestBodyOrReference{} } +func (m *NamedRequestBodyOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedRequestBodyOrReference) ProtoMessage() {} +func (*NamedRequestBodyOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } + +func (m *NamedRequestBodyOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedRequestBodyOrReference) GetValue() *RequestBodyOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ResponseOrReference as ordered (name,value) pairs. +type NamedResponseOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *ResponseOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedResponseOrReference) Reset() { *m = NamedResponseOrReference{} } +func (m *NamedResponseOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedResponseOrReference) ProtoMessage() {} +func (*NamedResponseOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } + +func (m *NamedResponseOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedResponseOrReference) GetValue() *ResponseOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of SchemaOrReference as ordered (name,value) pairs. +type NamedSchemaOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *SchemaOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedSchemaOrReference) Reset() { *m = NamedSchemaOrReference{} } +func (m *NamedSchemaOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedSchemaOrReference) ProtoMessage() {} +func (*NamedSchemaOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } + +func (m *NamedSchemaOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedSchemaOrReference) GetValue() *SchemaOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of SecuritySchemeOrReference as ordered (name,value) pairs. +type NamedSecuritySchemeOrReference struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *SecuritySchemeOrReference `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedSecuritySchemeOrReference) Reset() { *m = NamedSecuritySchemeOrReference{} } +func (m *NamedSecuritySchemeOrReference) String() string { return proto.CompactTextString(m) } +func (*NamedSecuritySchemeOrReference) ProtoMessage() {} +func (*NamedSecuritySchemeOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } + +func (m *NamedSecuritySchemeOrReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedSecuritySchemeOrReference) GetValue() *SecuritySchemeOrReference { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of ServerVariable as ordered (name,value) pairs. +type NamedServerVariable struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value *ServerVariable `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedServerVariable) Reset() { *m = NamedServerVariable{} } +func (m *NamedServerVariable) String() string { return proto.CompactTextString(m) } +func (*NamedServerVariable) ProtoMessage() {} +func (*NamedServerVariable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } + +func (m *NamedServerVariable) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedServerVariable) GetValue() *ServerVariable { + if m != nil { + return m.Value + } + return nil +} + +// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +type NamedString struct { + // Map key + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Mapped value + Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *NamedString) Reset() { *m = NamedString{} } +func (m *NamedString) String() string { return proto.CompactTextString(m) } +func (*NamedString) ProtoMessage() {} +func (*NamedString) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } + +func (m *NamedString) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NamedString) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +// Configuration details for a supported OAuth Flow +type OauthFlow struct { + AuthorizationUrl string `protobuf:"bytes,1,opt,name=authorization_url,json=authorizationUrl" json:"authorization_url,omitempty"` + TokenUrl string `protobuf:"bytes,2,opt,name=token_url,json=tokenUrl" json:"token_url,omitempty"` + RefreshUrl string `protobuf:"bytes,3,opt,name=refresh_url,json=refreshUrl" json:"refresh_url,omitempty"` + Scopes *Strings `protobuf:"bytes,4,opt,name=scopes" json:"scopes,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *OauthFlow) Reset() { *m = OauthFlow{} } +func (m *OauthFlow) String() string { return proto.CompactTextString(m) } +func (*OauthFlow) ProtoMessage() {} +func (*OauthFlow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } + +func (m *OauthFlow) GetAuthorizationUrl() string { + if m != nil { + return m.AuthorizationUrl + } + return "" +} + +func (m *OauthFlow) GetTokenUrl() string { + if m != nil { + return m.TokenUrl + } + return "" +} + +func (m *OauthFlow) GetRefreshUrl() string { + if m != nil { + return m.RefreshUrl + } + return "" +} + +func (m *OauthFlow) GetScopes() *Strings { + if m != nil { + return m.Scopes + } + return nil +} + +func (m *OauthFlow) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// Allows configuration of the supported OAuth Flows. +type OauthFlows struct { + Implicit *OauthFlow `protobuf:"bytes,1,opt,name=implicit" json:"implicit,omitempty"` + Password *OauthFlow `protobuf:"bytes,2,opt,name=password" json:"password,omitempty"` + ClientCredentials *OauthFlow `protobuf:"bytes,3,opt,name=client_credentials,json=clientCredentials" json:"client_credentials,omitempty"` + AuthorizationCode *OauthFlow `protobuf:"bytes,4,opt,name=authorization_code,json=authorizationCode" json:"authorization_code,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *OauthFlows) Reset() { *m = OauthFlows{} } +func (m *OauthFlows) String() string { return proto.CompactTextString(m) } +func (*OauthFlows) ProtoMessage() {} +func (*OauthFlows) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } + +func (m *OauthFlows) GetImplicit() *OauthFlow { + if m != nil { + return m.Implicit + } + return nil +} + +func (m *OauthFlows) GetPassword() *OauthFlow { + if m != nil { + return m.Password + } + return nil +} + +func (m *OauthFlows) GetClientCredentials() *OauthFlow { + if m != nil { + return m.ClientCredentials + } + return nil +} + +func (m *OauthFlows) GetAuthorizationCode() *OauthFlow { + if m != nil { + return m.AuthorizationCode + } + return nil +} + +func (m *OauthFlows) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type Object struct { + AdditionalProperties []*NamedAny `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Object) Reset() { *m = Object{} } +func (m *Object) String() string { return proto.CompactTextString(m) } +func (*Object) ProtoMessage() {} +func (*Object) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } + +func (m *Object) GetAdditionalProperties() []*NamedAny { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Describes a single API operation on a path. +type Operation struct { + Tags []string `protobuf:"bytes,1,rep,name=tags" json:"tags,omitempty"` + Summary string `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,4,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + OperationId string `protobuf:"bytes,5,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` + Parameters []*ParameterOrReference `protobuf:"bytes,6,rep,name=parameters" json:"parameters,omitempty"` + RequestBody *RequestBodyOrReference `protobuf:"bytes,7,opt,name=request_body,json=requestBody" json:"request_body,omitempty"` + Responses *Responses `protobuf:"bytes,8,opt,name=responses" json:"responses,omitempty"` + Callbacks *CallbacksOrReferences `protobuf:"bytes,9,opt,name=callbacks" json:"callbacks,omitempty"` + Deprecated bool `protobuf:"varint,10,opt,name=deprecated" json:"deprecated,omitempty"` + Security []*SecurityRequirement `protobuf:"bytes,11,rep,name=security" json:"security,omitempty"` + Servers []*Server `protobuf:"bytes,12,rep,name=servers" json:"servers,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,13,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Operation) Reset() { *m = Operation{} } +func (m *Operation) String() string { return proto.CompactTextString(m) } +func (*Operation) ProtoMessage() {} +func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } + +func (m *Operation) GetTags() []string { + if m != nil { + return m.Tags + } + return nil +} + +func (m *Operation) GetSummary() string { + if m != nil { + return m.Summary + } + return "" +} + +func (m *Operation) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Operation) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Operation) GetOperationId() string { + if m != nil { + return m.OperationId + } + return "" +} + +func (m *Operation) GetParameters() []*ParameterOrReference { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *Operation) GetRequestBody() *RequestBodyOrReference { + if m != nil { + return m.RequestBody + } + return nil +} + +func (m *Operation) GetResponses() *Responses { + if m != nil { + return m.Responses + } + return nil +} + +func (m *Operation) GetCallbacks() *CallbacksOrReferences { + if m != nil { + return m.Callbacks + } + return nil +} + +func (m *Operation) GetDeprecated() bool { + if m != nil { + return m.Deprecated + } + return false +} + +func (m *Operation) GetSecurity() []*SecurityRequirement { + if m != nil { + return m.Security + } + return nil +} + +func (m *Operation) GetServers() []*Server { + if m != nil { + return m.Servers + } + return nil +} + +func (m *Operation) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// Describes a single operation parameter. A unique parameter is defined by a combination of a name and location. +type Parameter struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + In string `protobuf:"bytes,2,opt,name=in" json:"in,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + Required bool `protobuf:"varint,4,opt,name=required" json:"required,omitempty"` + Deprecated bool `protobuf:"varint,5,opt,name=deprecated" json:"deprecated,omitempty"` + AllowEmptyValue bool `protobuf:"varint,6,opt,name=allow_empty_value,json=allowEmptyValue" json:"allow_empty_value,omitempty"` + Style string `protobuf:"bytes,7,opt,name=style" json:"style,omitempty"` + Explode bool `protobuf:"varint,8,opt,name=explode" json:"explode,omitempty"` + AllowReserved bool `protobuf:"varint,9,opt,name=allow_reserved,json=allowReserved" json:"allow_reserved,omitempty"` + Schema *SchemaOrReference `protobuf:"bytes,10,opt,name=schema" json:"schema,omitempty"` + Example *Any `protobuf:"bytes,11,opt,name=example" json:"example,omitempty"` + Examples *ExamplesOrReferences `protobuf:"bytes,12,opt,name=examples" json:"examples,omitempty"` + Content *MediaTypes `protobuf:"bytes,13,opt,name=content" json:"content,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,14,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Parameter) Reset() { *m = Parameter{} } +func (m *Parameter) String() string { return proto.CompactTextString(m) } +func (*Parameter) ProtoMessage() {} +func (*Parameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } + +func (m *Parameter) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Parameter) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *Parameter) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Parameter) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *Parameter) GetDeprecated() bool { + if m != nil { + return m.Deprecated + } + return false +} + +func (m *Parameter) GetAllowEmptyValue() bool { + if m != nil { + return m.AllowEmptyValue + } + return false +} + +func (m *Parameter) GetStyle() string { + if m != nil { + return m.Style + } + return "" +} + +func (m *Parameter) GetExplode() bool { + if m != nil { + return m.Explode + } + return false +} + +func (m *Parameter) GetAllowReserved() bool { + if m != nil { + return m.AllowReserved + } + return false +} + +func (m *Parameter) GetSchema() *SchemaOrReference { + if m != nil { + return m.Schema + } + return nil +} + +func (m *Parameter) GetExample() *Any { + if m != nil { + return m.Example + } + return nil +} + +func (m *Parameter) GetExamples() *ExamplesOrReferences { + if m != nil { + return m.Examples + } + return nil +} + +func (m *Parameter) GetContent() *MediaTypes { + if m != nil { + return m.Content + } + return nil +} + +func (m *Parameter) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type ParameterOrReference struct { + // Types that are valid to be assigned to Oneof: + // *ParameterOrReference_Parameter + // *ParameterOrReference_Reference + Oneof isParameterOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *ParameterOrReference) Reset() { *m = ParameterOrReference{} } +func (m *ParameterOrReference) String() string { return proto.CompactTextString(m) } +func (*ParameterOrReference) ProtoMessage() {} +func (*ParameterOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } + +type isParameterOrReference_Oneof interface { + isParameterOrReference_Oneof() +} + +type ParameterOrReference_Parameter struct { + Parameter *Parameter `protobuf:"bytes,1,opt,name=parameter,oneof"` +} +type ParameterOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*ParameterOrReference_Parameter) isParameterOrReference_Oneof() {} +func (*ParameterOrReference_Reference) isParameterOrReference_Oneof() {} + +func (m *ParameterOrReference) GetOneof() isParameterOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *ParameterOrReference) GetParameter() *Parameter { + if x, ok := m.GetOneof().(*ParameterOrReference_Parameter); ok { + return x.Parameter + } + return nil +} + +func (m *ParameterOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*ParameterOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ParameterOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ParameterOrReference_OneofMarshaler, _ParameterOrReference_OneofUnmarshaler, _ParameterOrReference_OneofSizer, []interface{}{ + (*ParameterOrReference_Parameter)(nil), + (*ParameterOrReference_Reference)(nil), + } +} + +func _ParameterOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ParameterOrReference) + // oneof + switch x := m.Oneof.(type) { + case *ParameterOrReference_Parameter: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Parameter); err != nil { + return err + } + case *ParameterOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ParameterOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _ParameterOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ParameterOrReference) + switch tag { + case 1: // oneof.parameter + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Parameter) + err := b.DecodeMessage(msg) + m.Oneof = &ParameterOrReference_Parameter{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &ParameterOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _ParameterOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ParameterOrReference) + // oneof + switch x := m.Oneof.(type) { + case *ParameterOrReference_Parameter: + s := proto.Size(x.Parameter) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ParameterOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type ParametersOrReferences struct { + AdditionalProperties []*NamedParameterOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *ParametersOrReferences) Reset() { *m = ParametersOrReferences{} } +func (m *ParametersOrReferences) String() string { return proto.CompactTextString(m) } +func (*ParametersOrReferences) ProtoMessage() {} +func (*ParametersOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } + +func (m *ParametersOrReferences) GetAdditionalProperties() []*NamedParameterOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available. +type PathItem struct { + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref" json:"_ref,omitempty"` + Summary string `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + Get *Operation `protobuf:"bytes,4,opt,name=get" json:"get,omitempty"` + Put *Operation `protobuf:"bytes,5,opt,name=put" json:"put,omitempty"` + Post *Operation `protobuf:"bytes,6,opt,name=post" json:"post,omitempty"` + Delete *Operation `protobuf:"bytes,7,opt,name=delete" json:"delete,omitempty"` + Options *Operation `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"` + Head *Operation `protobuf:"bytes,9,opt,name=head" json:"head,omitempty"` + Patch *Operation `protobuf:"bytes,10,opt,name=patch" json:"patch,omitempty"` + Trace *Operation `protobuf:"bytes,11,opt,name=trace" json:"trace,omitempty"` + Servers []*Server `protobuf:"bytes,12,rep,name=servers" json:"servers,omitempty"` + Parameters []*ParameterOrReference `protobuf:"bytes,13,rep,name=parameters" json:"parameters,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,14,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *PathItem) Reset() { *m = PathItem{} } +func (m *PathItem) String() string { return proto.CompactTextString(m) } +func (*PathItem) ProtoMessage() {} +func (*PathItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } + +func (m *PathItem) GetXRef() string { + if m != nil { + return m.XRef + } + return "" +} + +func (m *PathItem) GetSummary() string { + if m != nil { + return m.Summary + } + return "" +} + +func (m *PathItem) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *PathItem) GetGet() *Operation { + if m != nil { + return m.Get + } + return nil +} + +func (m *PathItem) GetPut() *Operation { + if m != nil { + return m.Put + } + return nil +} + +func (m *PathItem) GetPost() *Operation { + if m != nil { + return m.Post + } + return nil +} + +func (m *PathItem) GetDelete() *Operation { + if m != nil { + return m.Delete + } + return nil +} + +func (m *PathItem) GetOptions() *Operation { + if m != nil { + return m.Options + } + return nil +} + +func (m *PathItem) GetHead() *Operation { + if m != nil { + return m.Head + } + return nil +} + +func (m *PathItem) GetPatch() *Operation { + if m != nil { + return m.Patch + } + return nil +} + +func (m *PathItem) GetTrace() *Operation { + if m != nil { + return m.Trace + } + return nil +} + +func (m *PathItem) GetServers() []*Server { + if m != nil { + return m.Servers + } + return nil +} + +func (m *PathItem) GetParameters() []*ParameterOrReference { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *PathItem) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints. +type Paths struct { + Path []*NamedPathItem `protobuf:"bytes,1,rep,name=path" json:"path,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,2,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Paths) Reset() { *m = Paths{} } +func (m *Paths) String() string { return proto.CompactTextString(m) } +func (*Paths) ProtoMessage() {} +func (*Paths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } + +func (m *Paths) GetPath() []*NamedPathItem { + if m != nil { + return m.Path + } + return nil +} + +func (m *Paths) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type Properties struct { + AdditionalProperties []*NamedSchemaOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Properties) Reset() { *m = Properties{} } +func (m *Properties) String() string { return proto.CompactTextString(m) } +func (*Properties) ProtoMessage() {} +func (*Properties) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } + +func (m *Properties) GetAdditionalProperties() []*NamedSchemaOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification. +type Reference struct { + XRef string `protobuf:"bytes,1,opt,name=_ref,json=Ref" json:"_ref,omitempty"` +} + +func (m *Reference) Reset() { *m = Reference{} } +func (m *Reference) String() string { return proto.CompactTextString(m) } +func (*Reference) ProtoMessage() {} +func (*Reference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } + +func (m *Reference) GetXRef() string { + if m != nil { + return m.XRef + } + return "" +} + +type RequestBodiesOrReferences struct { + AdditionalProperties []*NamedRequestBodyOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *RequestBodiesOrReferences) Reset() { *m = RequestBodiesOrReferences{} } +func (m *RequestBodiesOrReferences) String() string { return proto.CompactTextString(m) } +func (*RequestBodiesOrReferences) ProtoMessage() {} +func (*RequestBodiesOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } + +func (m *RequestBodiesOrReferences) GetAdditionalProperties() []*NamedRequestBodyOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Describes a single request body. +type RequestBody struct { + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Content *MediaTypes `protobuf:"bytes,2,opt,name=content" json:"content,omitempty"` + Required bool `protobuf:"varint,3,opt,name=required" json:"required,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *RequestBody) Reset() { *m = RequestBody{} } +func (m *RequestBody) String() string { return proto.CompactTextString(m) } +func (*RequestBody) ProtoMessage() {} +func (*RequestBody) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } + +func (m *RequestBody) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *RequestBody) GetContent() *MediaTypes { + if m != nil { + return m.Content + } + return nil +} + +func (m *RequestBody) GetRequired() bool { + if m != nil { + return m.Required + } + return false +} + +func (m *RequestBody) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type RequestBodyOrReference struct { + // Types that are valid to be assigned to Oneof: + // *RequestBodyOrReference_RequestBody + // *RequestBodyOrReference_Reference + Oneof isRequestBodyOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *RequestBodyOrReference) Reset() { *m = RequestBodyOrReference{} } +func (m *RequestBodyOrReference) String() string { return proto.CompactTextString(m) } +func (*RequestBodyOrReference) ProtoMessage() {} +func (*RequestBodyOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } + +type isRequestBodyOrReference_Oneof interface { + isRequestBodyOrReference_Oneof() +} + +type RequestBodyOrReference_RequestBody struct { + RequestBody *RequestBody `protobuf:"bytes,1,opt,name=request_body,json=requestBody,oneof"` +} +type RequestBodyOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*RequestBodyOrReference_RequestBody) isRequestBodyOrReference_Oneof() {} +func (*RequestBodyOrReference_Reference) isRequestBodyOrReference_Oneof() {} + +func (m *RequestBodyOrReference) GetOneof() isRequestBodyOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *RequestBodyOrReference) GetRequestBody() *RequestBody { + if x, ok := m.GetOneof().(*RequestBodyOrReference_RequestBody); ok { + return x.RequestBody + } + return nil +} + +func (m *RequestBodyOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*RequestBodyOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*RequestBodyOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _RequestBodyOrReference_OneofMarshaler, _RequestBodyOrReference_OneofUnmarshaler, _RequestBodyOrReference_OneofSizer, []interface{}{ + (*RequestBodyOrReference_RequestBody)(nil), + (*RequestBodyOrReference_Reference)(nil), + } +} + +func _RequestBodyOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*RequestBodyOrReference) + // oneof + switch x := m.Oneof.(type) { + case *RequestBodyOrReference_RequestBody: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RequestBody); err != nil { + return err + } + case *RequestBodyOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("RequestBodyOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _RequestBodyOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*RequestBodyOrReference) + switch tag { + case 1: // oneof.request_body + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(RequestBody) + err := b.DecodeMessage(msg) + m.Oneof = &RequestBodyOrReference_RequestBody{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &RequestBodyOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _RequestBodyOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*RequestBodyOrReference) + // oneof + switch x := m.Oneof.(type) { + case *RequestBodyOrReference_RequestBody: + s := proto.Size(x.RequestBody) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *RequestBodyOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Describes a single response from an API Operation, including design-time, static `links` to operations based on the response. +type Response struct { + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + Headers *HeadersOrReferences `protobuf:"bytes,2,opt,name=headers" json:"headers,omitempty"` + Content *MediaTypes `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` + Links *LinksOrReferences `protobuf:"bytes,4,opt,name=links" json:"links,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,5,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Response) Reset() { *m = Response{} } +func (m *Response) String() string { return proto.CompactTextString(m) } +func (*Response) ProtoMessage() {} +func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } + +func (m *Response) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Response) GetHeaders() *HeadersOrReferences { + if m != nil { + return m.Headers + } + return nil +} + +func (m *Response) GetContent() *MediaTypes { + if m != nil { + return m.Content + } + return nil +} + +func (m *Response) GetLinks() *LinksOrReferences { + if m != nil { + return m.Links + } + return nil +} + +func (m *Response) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type ResponseOrReference struct { + // Types that are valid to be assigned to Oneof: + // *ResponseOrReference_Response + // *ResponseOrReference_Reference + Oneof isResponseOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *ResponseOrReference) Reset() { *m = ResponseOrReference{} } +func (m *ResponseOrReference) String() string { return proto.CompactTextString(m) } +func (*ResponseOrReference) ProtoMessage() {} +func (*ResponseOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } + +type isResponseOrReference_Oneof interface { + isResponseOrReference_Oneof() +} + +type ResponseOrReference_Response struct { + Response *Response `protobuf:"bytes,1,opt,name=response,oneof"` +} +type ResponseOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*ResponseOrReference_Response) isResponseOrReference_Oneof() {} +func (*ResponseOrReference_Reference) isResponseOrReference_Oneof() {} + +func (m *ResponseOrReference) GetOneof() isResponseOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *ResponseOrReference) GetResponse() *Response { + if x, ok := m.GetOneof().(*ResponseOrReference_Response); ok { + return x.Response + } + return nil +} + +func (m *ResponseOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*ResponseOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ResponseOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ResponseOrReference_OneofMarshaler, _ResponseOrReference_OneofUnmarshaler, _ResponseOrReference_OneofSizer, []interface{}{ + (*ResponseOrReference_Response)(nil), + (*ResponseOrReference_Reference)(nil), + } +} + +func _ResponseOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ResponseOrReference) + // oneof + switch x := m.Oneof.(type) { + case *ResponseOrReference_Response: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Response); err != nil { + return err + } + case *ResponseOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ResponseOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _ResponseOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ResponseOrReference) + switch tag { + case 1: // oneof.response + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Response) + err := b.DecodeMessage(msg) + m.Oneof = &ResponseOrReference_Response{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &ResponseOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _ResponseOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ResponseOrReference) + // oneof + switch x := m.Oneof.(type) { + case *ResponseOrReference_Response: + s := proto.Size(x.Response) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ResponseOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as 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. +type Responses struct { + Default *ResponseOrReference `protobuf:"bytes,1,opt,name=default" json:"default,omitempty"` + ResponseOrReference []*NamedResponseOrReference `protobuf:"bytes,2,rep,name=response_or_reference,json=responseOrReference" json:"response_or_reference,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,3,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Responses) Reset() { *m = Responses{} } +func (m *Responses) String() string { return proto.CompactTextString(m) } +func (*Responses) ProtoMessage() {} +func (*Responses) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } + +func (m *Responses) GetDefault() *ResponseOrReference { + if m != nil { + return m.Default + } + return nil +} + +func (m *Responses) GetResponseOrReference() []*NamedResponseOrReference { + if m != nil { + return m.ResponseOrReference + } + return nil +} + +func (m *Responses) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type ResponsesOrReferences struct { + AdditionalProperties []*NamedResponseOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *ResponsesOrReferences) Reset() { *m = ResponsesOrReferences{} } +func (m *ResponsesOrReferences) String() string { return proto.CompactTextString(m) } +func (*ResponsesOrReferences) ProtoMessage() {} +func (*ResponsesOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } + +func (m *ResponsesOrReferences) GetAdditionalProperties() []*NamedResponseOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// 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 an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema. +type Schema struct { + Nullable bool `protobuf:"varint,1,opt,name=nullable" json:"nullable,omitempty"` + Discriminator *Discriminator `protobuf:"bytes,2,opt,name=discriminator" json:"discriminator,omitempty"` + ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly" json:"read_only,omitempty"` + WriteOnly bool `protobuf:"varint,4,opt,name=write_only,json=writeOnly" json:"write_only,omitempty"` + Xml *Xml `protobuf:"bytes,5,opt,name=xml" json:"xml,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,6,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + Example *Any `protobuf:"bytes,7,opt,name=example" json:"example,omitempty"` + Deprecated bool `protobuf:"varint,8,opt,name=deprecated" json:"deprecated,omitempty"` + Title string `protobuf:"bytes,9,opt,name=title" json:"title,omitempty"` + MultipleOf float64 `protobuf:"fixed64,10,opt,name=multiple_of,json=multipleOf" json:"multiple_of,omitempty"` + Maximum float64 `protobuf:"fixed64,11,opt,name=maximum" json:"maximum,omitempty"` + ExclusiveMaximum bool `protobuf:"varint,12,opt,name=exclusive_maximum,json=exclusiveMaximum" json:"exclusive_maximum,omitempty"` + Minimum float64 `protobuf:"fixed64,13,opt,name=minimum" json:"minimum,omitempty"` + ExclusiveMinimum bool `protobuf:"varint,14,opt,name=exclusive_minimum,json=exclusiveMinimum" json:"exclusive_minimum,omitempty"` + MaxLength int64 `protobuf:"varint,15,opt,name=max_length,json=maxLength" json:"max_length,omitempty"` + MinLength int64 `protobuf:"varint,16,opt,name=min_length,json=minLength" json:"min_length,omitempty"` + Pattern string `protobuf:"bytes,17,opt,name=pattern" json:"pattern,omitempty"` + MaxItems int64 `protobuf:"varint,18,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + MinItems int64 `protobuf:"varint,19,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + UniqueItems bool `protobuf:"varint,20,opt,name=unique_items,json=uniqueItems" json:"unique_items,omitempty"` + MaxProperties int64 `protobuf:"varint,21,opt,name=max_properties,json=maxProperties" json:"max_properties,omitempty"` + MinProperties int64 `protobuf:"varint,22,opt,name=min_properties,json=minProperties" json:"min_properties,omitempty"` + Required []string `protobuf:"bytes,23,rep,name=required" json:"required,omitempty"` + Enum []*Any `protobuf:"bytes,24,rep,name=enum" json:"enum,omitempty"` + Type string `protobuf:"bytes,25,opt,name=type" json:"type,omitempty"` + AllOf []*SchemaOrReference `protobuf:"bytes,26,rep,name=all_of,json=allOf" json:"all_of,omitempty"` + OneOf []*SchemaOrReference `protobuf:"bytes,27,rep,name=one_of,json=oneOf" json:"one_of,omitempty"` + AnyOf []*SchemaOrReference `protobuf:"bytes,28,rep,name=any_of,json=anyOf" json:"any_of,omitempty"` + Not *Schema `protobuf:"bytes,29,opt,name=not" json:"not,omitempty"` + Items *ItemsItem `protobuf:"bytes,30,opt,name=items" json:"items,omitempty"` + Properties *Properties `protobuf:"bytes,31,opt,name=properties" json:"properties,omitempty"` + AdditionalProperties *AdditionalPropertiesItem `protobuf:"bytes,32,opt,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` + Default *DefaultType `protobuf:"bytes,33,opt,name=default" json:"default,omitempty"` + Description string `protobuf:"bytes,34,opt,name=description" json:"description,omitempty"` + Format string `protobuf:"bytes,35,opt,name=format" json:"format,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,36,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Schema) Reset() { *m = Schema{} } +func (m *Schema) String() string { return proto.CompactTextString(m) } +func (*Schema) ProtoMessage() {} +func (*Schema) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } + +func (m *Schema) GetNullable() bool { + if m != nil { + return m.Nullable + } + return false +} + +func (m *Schema) GetDiscriminator() *Discriminator { + if m != nil { + return m.Discriminator + } + return nil +} + +func (m *Schema) GetReadOnly() bool { + if m != nil { + return m.ReadOnly + } + return false +} + +func (m *Schema) GetWriteOnly() bool { + if m != nil { + return m.WriteOnly + } + return false +} + +func (m *Schema) GetXml() *Xml { + if m != nil { + return m.Xml + } + return nil +} + +func (m *Schema) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Schema) GetExample() *Any { + if m != nil { + return m.Example + } + return nil +} + +func (m *Schema) GetDeprecated() bool { + if m != nil { + return m.Deprecated + } + return false +} + +func (m *Schema) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *Schema) GetMultipleOf() float64 { + if m != nil { + return m.MultipleOf + } + return 0 +} + +func (m *Schema) GetMaximum() float64 { + if m != nil { + return m.Maximum + } + return 0 +} + +func (m *Schema) GetExclusiveMaximum() bool { + if m != nil { + return m.ExclusiveMaximum + } + return false +} + +func (m *Schema) GetMinimum() float64 { + if m != nil { + return m.Minimum + } + return 0 +} + +func (m *Schema) GetExclusiveMinimum() bool { + if m != nil { + return m.ExclusiveMinimum + } + return false +} + +func (m *Schema) GetMaxLength() int64 { + if m != nil { + return m.MaxLength + } + return 0 +} + +func (m *Schema) GetMinLength() int64 { + if m != nil { + return m.MinLength + } + return 0 +} + +func (m *Schema) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +func (m *Schema) GetMaxItems() int64 { + if m != nil { + return m.MaxItems + } + return 0 +} + +func (m *Schema) GetMinItems() int64 { + if m != nil { + return m.MinItems + } + return 0 +} + +func (m *Schema) GetUniqueItems() bool { + if m != nil { + return m.UniqueItems + } + return false +} + +func (m *Schema) GetMaxProperties() int64 { + if m != nil { + return m.MaxProperties + } + return 0 +} + +func (m *Schema) GetMinProperties() int64 { + if m != nil { + return m.MinProperties + } + return 0 +} + +func (m *Schema) GetRequired() []string { + if m != nil { + return m.Required + } + return nil +} + +func (m *Schema) GetEnum() []*Any { + if m != nil { + return m.Enum + } + return nil +} + +func (m *Schema) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *Schema) GetAllOf() []*SchemaOrReference { + if m != nil { + return m.AllOf + } + return nil +} + +func (m *Schema) GetOneOf() []*SchemaOrReference { + if m != nil { + return m.OneOf + } + return nil +} + +func (m *Schema) GetAnyOf() []*SchemaOrReference { + if m != nil { + return m.AnyOf + } + return nil +} + +func (m *Schema) GetNot() *Schema { + if m != nil { + return m.Not + } + return nil +} + +func (m *Schema) GetItems() *ItemsItem { + if m != nil { + return m.Items + } + return nil +} + +func (m *Schema) GetProperties() *Properties { + if m != nil { + return m.Properties + } + return nil +} + +func (m *Schema) GetAdditionalProperties() *AdditionalPropertiesItem { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +func (m *Schema) GetDefault() *DefaultType { + if m != nil { + return m.Default + } + return nil +} + +func (m *Schema) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Schema) GetFormat() string { + if m != nil { + return m.Format + } + return "" +} + +func (m *Schema) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type SchemaOrReference struct { + // Types that are valid to be assigned to Oneof: + // *SchemaOrReference_Schema + // *SchemaOrReference_Reference + Oneof isSchemaOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *SchemaOrReference) Reset() { *m = SchemaOrReference{} } +func (m *SchemaOrReference) String() string { return proto.CompactTextString(m) } +func (*SchemaOrReference) ProtoMessage() {} +func (*SchemaOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} } + +type isSchemaOrReference_Oneof interface { + isSchemaOrReference_Oneof() +} + +type SchemaOrReference_Schema struct { + Schema *Schema `protobuf:"bytes,1,opt,name=schema,oneof"` +} +type SchemaOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*SchemaOrReference_Schema) isSchemaOrReference_Oneof() {} +func (*SchemaOrReference_Reference) isSchemaOrReference_Oneof() {} + +func (m *SchemaOrReference) GetOneof() isSchemaOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *SchemaOrReference) GetSchema() *Schema { + if x, ok := m.GetOneof().(*SchemaOrReference_Schema); ok { + return x.Schema + } + return nil +} + +func (m *SchemaOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*SchemaOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SchemaOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SchemaOrReference_OneofMarshaler, _SchemaOrReference_OneofUnmarshaler, _SchemaOrReference_OneofSizer, []interface{}{ + (*SchemaOrReference_Schema)(nil), + (*SchemaOrReference_Reference)(nil), + } +} + +func _SchemaOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SchemaOrReference) + // oneof + switch x := m.Oneof.(type) { + case *SchemaOrReference_Schema: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Schema); err != nil { + return err + } + case *SchemaOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SchemaOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _SchemaOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SchemaOrReference) + switch tag { + case 1: // oneof.schema + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Schema) + err := b.DecodeMessage(msg) + m.Oneof = &SchemaOrReference_Schema{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &SchemaOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _SchemaOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SchemaOrReference) + // oneof + switch x := m.Oneof.(type) { + case *SchemaOrReference_Schema: + s := proto.Size(x.Schema) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SchemaOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type SchemasOrReferences struct { + AdditionalProperties []*NamedSchemaOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *SchemasOrReferences) Reset() { *m = SchemasOrReferences{} } +func (m *SchemasOrReferences) String() string { return proto.CompactTextString(m) } +func (*SchemasOrReferences) ProtoMessage() {} +func (*SchemasOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} } + +func (m *SchemasOrReferences) GetAdditionalProperties() []*NamedSchemaOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the Open API object or Operation Object, only one of Security Requirement Objects in the list needs to be satisfied to authorize the request. +type SecurityRequirement struct { +} + +func (m *SecurityRequirement) Reset() { *m = SecurityRequirement{} } +func (m *SecurityRequirement) String() string { return proto.CompactTextString(m) } +func (*SecurityRequirement) ProtoMessage() {} +func (*SecurityRequirement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} } + +// Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect Discovery. +type SecurityScheme struct { + Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` + In string `protobuf:"bytes,4,opt,name=in" json:"in,omitempty"` + Scheme string `protobuf:"bytes,5,opt,name=scheme" json:"scheme,omitempty"` + BearerFormat string `protobuf:"bytes,6,opt,name=bearer_format,json=bearerFormat" json:"bearer_format,omitempty"` + Flows *OauthFlows `protobuf:"bytes,7,opt,name=flows" json:"flows,omitempty"` + OpenIdConnectUrl string `protobuf:"bytes,8,opt,name=open_id_connect_url,json=openIdConnectUrl" json:"open_id_connect_url,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,9,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *SecurityScheme) Reset() { *m = SecurityScheme{} } +func (m *SecurityScheme) String() string { return proto.CompactTextString(m) } +func (*SecurityScheme) ProtoMessage() {} +func (*SecurityScheme) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} } + +func (m *SecurityScheme) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *SecurityScheme) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *SecurityScheme) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *SecurityScheme) GetIn() string { + if m != nil { + return m.In + } + return "" +} + +func (m *SecurityScheme) GetScheme() string { + if m != nil { + return m.Scheme + } + return "" +} + +func (m *SecurityScheme) GetBearerFormat() string { + if m != nil { + return m.BearerFormat + } + return "" +} + +func (m *SecurityScheme) GetFlows() *OauthFlows { + if m != nil { + return m.Flows + } + return nil +} + +func (m *SecurityScheme) GetOpenIdConnectUrl() string { + if m != nil { + return m.OpenIdConnectUrl + } + return "" +} + +func (m *SecurityScheme) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type SecuritySchemeOrReference struct { + // Types that are valid to be assigned to Oneof: + // *SecuritySchemeOrReference_SecurityScheme + // *SecuritySchemeOrReference_Reference + Oneof isSecuritySchemeOrReference_Oneof `protobuf_oneof:"oneof"` +} + +func (m *SecuritySchemeOrReference) Reset() { *m = SecuritySchemeOrReference{} } +func (m *SecuritySchemeOrReference) String() string { return proto.CompactTextString(m) } +func (*SecuritySchemeOrReference) ProtoMessage() {} +func (*SecuritySchemeOrReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} } + +type isSecuritySchemeOrReference_Oneof interface { + isSecuritySchemeOrReference_Oneof() +} + +type SecuritySchemeOrReference_SecurityScheme struct { + SecurityScheme *SecurityScheme `protobuf:"bytes,1,opt,name=security_scheme,json=securityScheme,oneof"` +} +type SecuritySchemeOrReference_Reference struct { + Reference *Reference `protobuf:"bytes,2,opt,name=reference,oneof"` +} + +func (*SecuritySchemeOrReference_SecurityScheme) isSecuritySchemeOrReference_Oneof() {} +func (*SecuritySchemeOrReference_Reference) isSecuritySchemeOrReference_Oneof() {} + +func (m *SecuritySchemeOrReference) GetOneof() isSecuritySchemeOrReference_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *SecuritySchemeOrReference) GetSecurityScheme() *SecurityScheme { + if x, ok := m.GetOneof().(*SecuritySchemeOrReference_SecurityScheme); ok { + return x.SecurityScheme + } + return nil +} + +func (m *SecuritySchemeOrReference) GetReference() *Reference { + if x, ok := m.GetOneof().(*SecuritySchemeOrReference_Reference); ok { + return x.Reference + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SecuritySchemeOrReference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SecuritySchemeOrReference_OneofMarshaler, _SecuritySchemeOrReference_OneofUnmarshaler, _SecuritySchemeOrReference_OneofSizer, []interface{}{ + (*SecuritySchemeOrReference_SecurityScheme)(nil), + (*SecuritySchemeOrReference_Reference)(nil), + } +} + +func _SecuritySchemeOrReference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SecuritySchemeOrReference) + // oneof + switch x := m.Oneof.(type) { + case *SecuritySchemeOrReference_SecurityScheme: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SecurityScheme); err != nil { + return err + } + case *SecuritySchemeOrReference_Reference: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Reference); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SecuritySchemeOrReference.Oneof has unexpected type %T", x) + } + return nil +} + +func _SecuritySchemeOrReference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SecuritySchemeOrReference) + switch tag { + case 1: // oneof.security_scheme + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SecurityScheme) + err := b.DecodeMessage(msg) + m.Oneof = &SecuritySchemeOrReference_SecurityScheme{msg} + return true, err + case 2: // oneof.reference + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Reference) + err := b.DecodeMessage(msg) + m.Oneof = &SecuritySchemeOrReference_Reference{msg} + return true, err + default: + return false, nil + } +} + +func _SecuritySchemeOrReference_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SecuritySchemeOrReference) + // oneof + switch x := m.Oneof.(type) { + case *SecuritySchemeOrReference_SecurityScheme: + s := proto.Size(x.SecurityScheme) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *SecuritySchemeOrReference_Reference: + s := proto.Size(x.Reference) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type SecuritySchemesOrReferences struct { + AdditionalProperties []*NamedSecuritySchemeOrReference `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *SecuritySchemesOrReferences) Reset() { *m = SecuritySchemesOrReferences{} } +func (m *SecuritySchemesOrReferences) String() string { return proto.CompactTextString(m) } +func (*SecuritySchemesOrReferences) ProtoMessage() {} +func (*SecuritySchemesOrReferences) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } + +func (m *SecuritySchemesOrReferences) GetAdditionalProperties() []*NamedSecuritySchemeOrReference { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// An object representing a Server. +type Server struct { + Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + Variables *ServerVariables `protobuf:"bytes,3,opt,name=variables" json:"variables,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Server) Reset() { *m = Server{} } +func (m *Server) String() string { return proto.CompactTextString(m) } +func (*Server) ProtoMessage() {} +func (*Server) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} } + +func (m *Server) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +func (m *Server) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Server) GetVariables() *ServerVariables { + if m != nil { + return m.Variables + } + return nil +} + +func (m *Server) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// An object representing a Server Variable for server URL template substitution. +type ServerVariable struct { + Enum []string `protobuf:"bytes,1,rep,name=enum" json:"enum,omitempty"` + Default string `protobuf:"bytes,2,opt,name=default" json:"default,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *ServerVariable) Reset() { *m = ServerVariable{} } +func (m *ServerVariable) String() string { return proto.CompactTextString(m) } +func (*ServerVariable) ProtoMessage() {} +func (*ServerVariable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} } + +func (m *ServerVariable) GetEnum() []string { + if m != nil { + return m.Enum + } + return nil +} + +func (m *ServerVariable) GetDefault() string { + if m != nil { + return m.Default + } + return "" +} + +func (m *ServerVariable) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ServerVariable) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +type ServerVariables struct { + AdditionalProperties []*NamedServerVariable `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *ServerVariables) Reset() { *m = ServerVariables{} } +func (m *ServerVariables) String() string { return proto.CompactTextString(m) } +func (*ServerVariables) ProtoMessage() {} +func (*ServerVariables) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} } + +func (m *ServerVariables) GetAdditionalProperties() []*NamedServerVariable { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Any property starting with x- is valid. +type SpecificationExtension struct { + // Types that are valid to be assigned to Oneof: + // *SpecificationExtension_Number + // *SpecificationExtension_Boolean + // *SpecificationExtension_String_ + Oneof isSpecificationExtension_Oneof `protobuf_oneof:"oneof"` +} + +func (m *SpecificationExtension) Reset() { *m = SpecificationExtension{} } +func (m *SpecificationExtension) String() string { return proto.CompactTextString(m) } +func (*SpecificationExtension) ProtoMessage() {} +func (*SpecificationExtension) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} } + +type isSpecificationExtension_Oneof interface { + isSpecificationExtension_Oneof() +} + +type SpecificationExtension_Number struct { + Number float64 `protobuf:"fixed64,1,opt,name=number,oneof"` +} +type SpecificationExtension_Boolean struct { + Boolean bool `protobuf:"varint,2,opt,name=boolean,oneof"` +} +type SpecificationExtension_String_ struct { + String_ string `protobuf:"bytes,3,opt,name=string,oneof"` +} + +func (*SpecificationExtension_Number) isSpecificationExtension_Oneof() {} +func (*SpecificationExtension_Boolean) isSpecificationExtension_Oneof() {} +func (*SpecificationExtension_String_) isSpecificationExtension_Oneof() {} + +func (m *SpecificationExtension) GetOneof() isSpecificationExtension_Oneof { + if m != nil { + return m.Oneof + } + return nil +} + +func (m *SpecificationExtension) GetNumber() float64 { + if x, ok := m.GetOneof().(*SpecificationExtension_Number); ok { + return x.Number + } + return 0 +} + +func (m *SpecificationExtension) GetBoolean() bool { + if x, ok := m.GetOneof().(*SpecificationExtension_Boolean); ok { + return x.Boolean + } + return false +} + +func (m *SpecificationExtension) GetString_() string { + if x, ok := m.GetOneof().(*SpecificationExtension_String_); ok { + return x.String_ + } + return "" +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SpecificationExtension) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SpecificationExtension_OneofMarshaler, _SpecificationExtension_OneofUnmarshaler, _SpecificationExtension_OneofSizer, []interface{}{ + (*SpecificationExtension_Number)(nil), + (*SpecificationExtension_Boolean)(nil), + (*SpecificationExtension_String_)(nil), + } +} + +func _SpecificationExtension_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SpecificationExtension) + // oneof + switch x := m.Oneof.(type) { + case *SpecificationExtension_Number: + b.EncodeVarint(1<<3 | proto.WireFixed64) + b.EncodeFixed64(math.Float64bits(x.Number)) + case *SpecificationExtension_Boolean: + t := uint64(0) + if x.Boolean { + t = 1 + } + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(t) + case *SpecificationExtension_String_: + b.EncodeVarint(3<<3 | proto.WireBytes) + b.EncodeStringBytes(x.String_) + case nil: + default: + return fmt.Errorf("SpecificationExtension.Oneof has unexpected type %T", x) + } + return nil +} + +func _SpecificationExtension_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SpecificationExtension) + switch tag { + case 1: // oneof.number + if wire != proto.WireFixed64 { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeFixed64() + m.Oneof = &SpecificationExtension_Number{math.Float64frombits(x)} + return true, err + case 2: // oneof.boolean + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Oneof = &SpecificationExtension_Boolean{x != 0} + return true, err + case 3: // oneof.string + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Oneof = &SpecificationExtension_String_{x} + return true, err + default: + return false, nil + } +} + +func _SpecificationExtension_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SpecificationExtension) + // oneof + switch x := m.Oneof.(type) { + case *SpecificationExtension_Number: + n += proto.SizeVarint(1<<3 | proto.WireFixed64) + n += 8 + case *SpecificationExtension_Boolean: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 + case *SpecificationExtension_String_: + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.String_))) + n += len(x.String_) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type StringArray struct { + Value []string `protobuf:"bytes,1,rep,name=value" json:"value,omitempty"` +} + +func (m *StringArray) Reset() { *m = StringArray{} } +func (m *StringArray) String() string { return proto.CompactTextString(m) } +func (*StringArray) ProtoMessage() {} +func (*StringArray) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} } + +func (m *StringArray) GetValue() []string { + if m != nil { + return m.Value + } + return nil +} + +type Strings struct { + AdditionalProperties []*NamedString `protobuf:"bytes,1,rep,name=additional_properties,json=additionalProperties" json:"additional_properties,omitempty"` +} + +func (m *Strings) Reset() { *m = Strings{} } +func (m *Strings) String() string { return proto.CompactTextString(m) } +func (*Strings) ProtoMessage() {} +func (*Strings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} } + +func (m *Strings) GetAdditionalProperties() []*NamedString { + if m != nil { + return m.AdditionalProperties + } + return nil +} + +// Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances. +type Tag struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + ExternalDocs *ExternalDocs `protobuf:"bytes,3,opt,name=external_docs,json=externalDocs" json:"external_docs,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,4,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Tag) Reset() { *m = Tag{} } +func (m *Tag) String() string { return proto.CompactTextString(m) } +func (*Tag) ProtoMessage() {} +func (*Tag) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} } + +func (m *Tag) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Tag) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Tag) GetExternalDocs() *ExternalDocs { + if m != nil { + return m.ExternalDocs + } + return nil +} + +func (m *Tag) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +// A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior. +type Xml struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace" json:"namespace,omitempty"` + Prefix string `protobuf:"bytes,3,opt,name=prefix" json:"prefix,omitempty"` + Attribute bool `protobuf:"varint,4,opt,name=attribute" json:"attribute,omitempty"` + Wrapped bool `protobuf:"varint,5,opt,name=wrapped" json:"wrapped,omitempty"` + SpecificationExtension []*NamedAny `protobuf:"bytes,6,rep,name=specification_extension,json=specificationExtension" json:"specification_extension,omitempty"` +} + +func (m *Xml) Reset() { *m = Xml{} } +func (m *Xml) String() string { return proto.CompactTextString(m) } +func (*Xml) ProtoMessage() {} +func (*Xml) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} } + +func (m *Xml) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Xml) GetNamespace() string { + if m != nil { + return m.Namespace + } + return "" +} + +func (m *Xml) GetPrefix() string { + if m != nil { + return m.Prefix + } + return "" +} + +func (m *Xml) GetAttribute() bool { + if m != nil { + return m.Attribute + } + return false +} + +func (m *Xml) GetWrapped() bool { + if m != nil { + return m.Wrapped + } + return false +} + +func (m *Xml) GetSpecificationExtension() []*NamedAny { + if m != nil { + return m.SpecificationExtension + } + return nil +} + +func init() { + proto.RegisterType((*AdditionalPropertiesItem)(nil), "openapi.v3.AdditionalPropertiesItem") + proto.RegisterType((*Any)(nil), "openapi.v3.Any") + proto.RegisterType((*AnyOrExpression)(nil), "openapi.v3.AnyOrExpression") + proto.RegisterType((*AnysOrExpressions)(nil), "openapi.v3.AnysOrExpressions") + proto.RegisterType((*Callback)(nil), "openapi.v3.Callback") + proto.RegisterType((*CallbackOrReference)(nil), "openapi.v3.CallbackOrReference") + proto.RegisterType((*CallbacksOrReferences)(nil), "openapi.v3.CallbacksOrReferences") + proto.RegisterType((*Components)(nil), "openapi.v3.Components") + proto.RegisterType((*Contact)(nil), "openapi.v3.Contact") + proto.RegisterType((*DefaultType)(nil), "openapi.v3.DefaultType") + proto.RegisterType((*Discriminator)(nil), "openapi.v3.Discriminator") + proto.RegisterType((*Document)(nil), "openapi.v3.Document") + proto.RegisterType((*Encoding)(nil), "openapi.v3.Encoding") + proto.RegisterType((*Encodings)(nil), "openapi.v3.Encodings") + proto.RegisterType((*Example)(nil), "openapi.v3.Example") + proto.RegisterType((*ExampleOrReference)(nil), "openapi.v3.ExampleOrReference") + proto.RegisterType((*Examples)(nil), "openapi.v3.Examples") + proto.RegisterType((*ExamplesOrReferences)(nil), "openapi.v3.ExamplesOrReferences") + proto.RegisterType((*Expression)(nil), "openapi.v3.Expression") + proto.RegisterType((*ExternalDocs)(nil), "openapi.v3.ExternalDocs") + proto.RegisterType((*Header)(nil), "openapi.v3.Header") + proto.RegisterType((*HeaderOrReference)(nil), "openapi.v3.HeaderOrReference") + proto.RegisterType((*HeadersOrReferences)(nil), "openapi.v3.HeadersOrReferences") + proto.RegisterType((*Info)(nil), "openapi.v3.Info") + proto.RegisterType((*ItemsItem)(nil), "openapi.v3.ItemsItem") + proto.RegisterType((*License)(nil), "openapi.v3.License") + proto.RegisterType((*Link)(nil), "openapi.v3.Link") + proto.RegisterType((*LinkOrReference)(nil), "openapi.v3.LinkOrReference") + proto.RegisterType((*LinksOrReferences)(nil), "openapi.v3.LinksOrReferences") + proto.RegisterType((*MediaType)(nil), "openapi.v3.MediaType") + proto.RegisterType((*MediaTypes)(nil), "openapi.v3.MediaTypes") + proto.RegisterType((*NamedAny)(nil), "openapi.v3.NamedAny") + proto.RegisterType((*NamedAnyOrExpression)(nil), "openapi.v3.NamedAnyOrExpression") + proto.RegisterType((*NamedCallbackOrReference)(nil), "openapi.v3.NamedCallbackOrReference") + proto.RegisterType((*NamedEncoding)(nil), "openapi.v3.NamedEncoding") + proto.RegisterType((*NamedExampleOrReference)(nil), "openapi.v3.NamedExampleOrReference") + proto.RegisterType((*NamedHeaderOrReference)(nil), "openapi.v3.NamedHeaderOrReference") + proto.RegisterType((*NamedLinkOrReference)(nil), "openapi.v3.NamedLinkOrReference") + proto.RegisterType((*NamedMediaType)(nil), "openapi.v3.NamedMediaType") + proto.RegisterType((*NamedParameterOrReference)(nil), "openapi.v3.NamedParameterOrReference") + proto.RegisterType((*NamedPathItem)(nil), "openapi.v3.NamedPathItem") + proto.RegisterType((*NamedRequestBodyOrReference)(nil), "openapi.v3.NamedRequestBodyOrReference") + proto.RegisterType((*NamedResponseOrReference)(nil), "openapi.v3.NamedResponseOrReference") + proto.RegisterType((*NamedSchemaOrReference)(nil), "openapi.v3.NamedSchemaOrReference") + proto.RegisterType((*NamedSecuritySchemeOrReference)(nil), "openapi.v3.NamedSecuritySchemeOrReference") + proto.RegisterType((*NamedServerVariable)(nil), "openapi.v3.NamedServerVariable") + proto.RegisterType((*NamedString)(nil), "openapi.v3.NamedString") + proto.RegisterType((*OauthFlow)(nil), "openapi.v3.OauthFlow") + proto.RegisterType((*OauthFlows)(nil), "openapi.v3.OauthFlows") + proto.RegisterType((*Object)(nil), "openapi.v3.Object") + proto.RegisterType((*Operation)(nil), "openapi.v3.Operation") + proto.RegisterType((*Parameter)(nil), "openapi.v3.Parameter") + proto.RegisterType((*ParameterOrReference)(nil), "openapi.v3.ParameterOrReference") + proto.RegisterType((*ParametersOrReferences)(nil), "openapi.v3.ParametersOrReferences") + proto.RegisterType((*PathItem)(nil), "openapi.v3.PathItem") + proto.RegisterType((*Paths)(nil), "openapi.v3.Paths") + proto.RegisterType((*Properties)(nil), "openapi.v3.Properties") + proto.RegisterType((*Reference)(nil), "openapi.v3.Reference") + proto.RegisterType((*RequestBodiesOrReferences)(nil), "openapi.v3.RequestBodiesOrReferences") + proto.RegisterType((*RequestBody)(nil), "openapi.v3.RequestBody") + proto.RegisterType((*RequestBodyOrReference)(nil), "openapi.v3.RequestBodyOrReference") + proto.RegisterType((*Response)(nil), "openapi.v3.Response") + proto.RegisterType((*ResponseOrReference)(nil), "openapi.v3.ResponseOrReference") + proto.RegisterType((*Responses)(nil), "openapi.v3.Responses") + proto.RegisterType((*ResponsesOrReferences)(nil), "openapi.v3.ResponsesOrReferences") + proto.RegisterType((*Schema)(nil), "openapi.v3.Schema") + proto.RegisterType((*SchemaOrReference)(nil), "openapi.v3.SchemaOrReference") + proto.RegisterType((*SchemasOrReferences)(nil), "openapi.v3.SchemasOrReferences") + proto.RegisterType((*SecurityRequirement)(nil), "openapi.v3.SecurityRequirement") + proto.RegisterType((*SecurityScheme)(nil), "openapi.v3.SecurityScheme") + proto.RegisterType((*SecuritySchemeOrReference)(nil), "openapi.v3.SecuritySchemeOrReference") + proto.RegisterType((*SecuritySchemesOrReferences)(nil), "openapi.v3.SecuritySchemesOrReferences") + proto.RegisterType((*Server)(nil), "openapi.v3.Server") + proto.RegisterType((*ServerVariable)(nil), "openapi.v3.ServerVariable") + proto.RegisterType((*ServerVariables)(nil), "openapi.v3.ServerVariables") + proto.RegisterType((*SpecificationExtension)(nil), "openapi.v3.SpecificationExtension") + proto.RegisterType((*StringArray)(nil), "openapi.v3.StringArray") + proto.RegisterType((*Strings)(nil), "openapi.v3.Strings") + proto.RegisterType((*Tag)(nil), "openapi.v3.Tag") + proto.RegisterType((*Xml)(nil), "openapi.v3.Xml") +} + +func init() { proto.RegisterFile("OpenAPIv3/OpenAPIv3.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 3544 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xc4, 0x5b, 0x49, 0x6f, 0x1c, 0x47, + 0x96, 0x66, 0xd6, 0x5e, 0xaf, 0xb8, 0x06, 0x17, 0x95, 0x24, 0x4b, 0xa2, 0x48, 0xc9, 0x92, 0xb5, + 0xda, 0x92, 0xe5, 0xb1, 0x61, 0x7b, 0x3c, 0x94, 0x44, 0x83, 0x02, 0x24, 0x97, 0x26, 0x25, 0xdb, + 0x1a, 0x7b, 0x8c, 0x42, 0x30, 0x2b, 0x8a, 0x4c, 0x2b, 0x37, 0x65, 0x66, 0x49, 0xac, 0x39, 0x18, + 0x98, 0x83, 0x81, 0xf1, 0x00, 0x33, 0x98, 0x01, 0x1a, 0xbe, 0xf5, 0xc5, 0xe7, 0x6e, 0x18, 0xfd, + 0x27, 0x1a, 0x30, 0xd0, 0x7d, 0x6a, 0xa0, 0x7f, 0x40, 0x1f, 0xfb, 0xd2, 0x40, 0x1f, 0xfb, 0xd4, + 0x88, 0x2d, 0x97, 0xca, 0xc8, 0x24, 0xab, 0x58, 0x46, 0x9f, 0xc8, 0x8c, 0xf7, 0xc5, 0x8b, 0xed, + 0x6d, 0xf1, 0x5e, 0x14, 0x9c, 0xec, 0x78, 0xc4, 0xd9, 0x7a, 0xfc, 0xe0, 0xe5, 0xed, 0x9b, 0xd1, + 0x7f, 0x37, 0x3c, 0xdf, 0x0d, 0x5d, 0x04, 0xae, 0x47, 0x1c, 0xec, 0x99, 0x37, 0x5e, 0xde, 0x3e, + 0x75, 0x72, 0xcf, 0x75, 0xf7, 0x2c, 0x72, 0x93, 0x51, 0x76, 0x07, 0xfd, 0x9b, 0xd8, 0x19, 0x72, + 0xd8, 0xc6, 0xff, 0x69, 0xd0, 0xde, 0xea, 0xf5, 0xcc, 0xd0, 0x74, 0x1d, 0x6c, 0x3d, 0xf6, 0x5d, + 0x8f, 0xf8, 0xa1, 0x49, 0x82, 0x07, 0x21, 0xb1, 0x51, 0x07, 0x96, 0x03, 0x63, 0x9f, 0xd8, 0xb8, + 0xeb, 0xfa, 0x5d, 0x9f, 0xf4, 0x89, 0x4f, 0x1c, 0x83, 0xb4, 0xb5, 0x75, 0xed, 0x72, 0xeb, 0xd6, + 0x99, 0x1b, 0xf1, 0x08, 0x37, 0x9e, 0x30, 0x58, 0xc7, 0xd7, 0x25, 0x68, 0x67, 0x46, 0x5f, 0x0a, + 0x46, 0x1b, 0xd1, 0x29, 0xa8, 0xef, 0xba, 0xae, 0x45, 0xb0, 0xd3, 0x2e, 0xad, 0x6b, 0x97, 0x1b, + 0x3b, 0x33, 0xba, 0x6c, 0xb8, 0x5b, 0x87, 0xaa, 0xeb, 0x10, 0xb7, 0xbf, 0xb1, 0x0d, 0xe5, 0x2d, + 0x67, 0x88, 0xae, 0x40, 0xf5, 0x25, 0xb6, 0x06, 0x72, 0xb8, 0x95, 0x1b, 0x7c, 0x11, 0x37, 0xe4, + 0x22, 0x6e, 0x6c, 0x39, 0x43, 0x9d, 0x43, 0x10, 0x82, 0xca, 0x10, 0xdb, 0x16, 0x63, 0xda, 0xd4, + 0xd9, 0xff, 0x1b, 0x43, 0x58, 0xd8, 0x72, 0x86, 0x1d, 0x7f, 0xfb, 0xc0, 0xf3, 0x49, 0x10, 0x98, + 0xae, 0x83, 0x36, 0xa1, 0x8c, 0x9d, 0xa1, 0x60, 0xb8, 0x90, 0x9c, 0xff, 0x96, 0x33, 0xdc, 0x99, + 0xd1, 0x29, 0x15, 0xbd, 0x0b, 0x40, 0xa2, 0x2e, 0x8c, 0x63, 0xeb, 0xd6, 0x5a, 0x12, 0x1b, 0x33, + 0xdc, 0x99, 0xd1, 0x13, 0xd8, 0x78, 0x05, 0x5f, 0xc3, 0xd2, 0x96, 0x33, 0x0c, 0x92, 0x63, 0x07, + 0xe8, 0x53, 0x58, 0xc5, 0xd1, 0x46, 0x77, 0xbd, 0x68, 0xa7, 0xdb, 0xda, 0x7a, 0xf9, 0x72, 0xeb, + 0xd6, 0x7a, 0x72, 0x88, 0x4f, 0xb0, 0x4d, 0x7a, 0x23, 0xb3, 0xd7, 0x57, 0xb0, 0xe2, 0x9c, 0x36, + 0xfe, 0x4b, 0x83, 0xc6, 0x3d, 0x6c, 0x59, 0xbb, 0xd8, 0x78, 0x8e, 0xae, 0x43, 0xc5, 0xc3, 0xe1, + 0xbe, 0x60, 0x79, 0x32, 0xc3, 0xf2, 0x31, 0x0e, 0xf7, 0xe9, 0xc9, 0xea, 0x0c, 0x86, 0x1e, 0xc1, + 0x89, 0xc0, 0x23, 0x86, 0xd9, 0x37, 0x0d, 0x4c, 0x19, 0x77, 0xc9, 0x41, 0x48, 0x1c, 0xb1, 0xee, + 0x32, 0xdb, 0x74, 0xc5, 0xa4, 0xf4, 0xb5, 0x54, 0xa7, 0x6d, 0xd9, 0x67, 0xe3, 0x3b, 0x0d, 0x96, + 0xe5, 0x54, 0x92, 0xa7, 0x7e, 0x0b, 0x1a, 0x86, 0x68, 0x8e, 0x0e, 0x33, 0xc1, 0x57, 0x76, 0xd9, + 0x99, 0xd1, 0x23, 0x1c, 0xba, 0x03, 0xcd, 0x58, 0xe0, 0xf8, 0x21, 0xac, 0x26, 0x3b, 0x25, 0x05, + 0x2d, 0x46, 0xc6, 0x47, 0xe0, 0xc3, 0xaa, 0xe4, 0x1b, 0x24, 0xe6, 0x12, 0xa0, 0x7f, 0x2b, 0x3e, + 0x86, 0x0b, 0x99, 0x15, 0x2b, 0x56, 0x94, 0x73, 0x14, 0xbf, 0xaa, 0x02, 0xdc, 0x73, 0x6d, 0xcf, + 0x75, 0x88, 0x13, 0x06, 0xe8, 0x3d, 0xa8, 0x73, 0x0d, 0x08, 0xc4, 0xaa, 0xcf, 0x65, 0x35, 0x26, + 0x35, 0x37, 0x5d, 0xe2, 0xd1, 0x47, 0x74, 0xf5, 0x81, 0xe7, 0x3a, 0x01, 0x09, 0xc4, 0xea, 0xcf, + 0xa7, 0x57, 0x2f, 0x88, 0xa9, 0xee, 0x71, 0x1f, 0x74, 0x17, 0xc0, 0xc3, 0x3e, 0xb6, 0x49, 0x48, + 0xfc, 0xa0, 0x5d, 0x66, 0x1c, 0x36, 0x92, 0x1c, 0x1e, 0x47, 0xd4, 0x14, 0x8b, 0x44, 0x2f, 0xf4, + 0x01, 0x34, 0xc8, 0x01, 0xb6, 0x3d, 0x8b, 0x04, 0xed, 0x0a, 0xe3, 0xb0, 0x9e, 0x56, 0x03, 0x4e, + 0x4b, 0xf5, 0x8f, 0x7a, 0xa0, 0x87, 0x30, 0xef, 0x93, 0x17, 0x03, 0x12, 0x84, 0xdd, 0x5d, 0xb7, + 0x47, 0x37, 0xb8, 0xca, 0x78, 0x5c, 0x4c, 0xaf, 0x83, 0x21, 0xee, 0x32, 0x40, 0x8a, 0xd1, 0x9c, + 0x9f, 0x24, 0xd1, 0xbd, 0xdc, 0x27, 0xb8, 0x47, 0x17, 0x53, 0xcb, 0xee, 0xe5, 0x0e, 0x27, 0xa5, + 0xf7, 0x52, 0xe0, 0x91, 0x0e, 0x8b, 0x01, 0x31, 0x06, 0xbe, 0x19, 0x0e, 0xbb, 0x6c, 0x7f, 0x49, + 0xd0, 0xae, 0x33, 0x1e, 0x97, 0x52, 0xe7, 0x21, 0x30, 0x4f, 0x38, 0x24, 0xc5, 0x6b, 0x21, 0x48, + 0x13, 0xd1, 0x6d, 0xa8, 0x5a, 0xa6, 0xf3, 0x3c, 0x68, 0x37, 0xb2, 0xa6, 0xf0, 0x21, 0x25, 0xa4, + 0xba, 0x73, 0x2c, 0x3d, 0x54, 0x29, 0xde, 0x41, 0xbb, 0x99, 0x3d, 0x54, 0xa5, 0xbc, 0xea, 0x71, + 0x9f, 0x22, 0x75, 0x85, 0x09, 0xd4, 0xf5, 0x17, 0x1a, 0xd4, 0xef, 0xb9, 0x4e, 0x88, 0x8d, 0x90, + 0x1a, 0x50, 0x07, 0xdb, 0xdc, 0xd6, 0x36, 0x75, 0xf6, 0x3f, 0x5a, 0x84, 0xf2, 0xc0, 0x97, 0x36, + 0x95, 0xfe, 0x8b, 0x56, 0xa0, 0x4a, 0x6c, 0x6c, 0x5a, 0x4c, 0xa0, 0x9a, 0x3a, 0xff, 0x28, 0x9a, + 0x56, 0x65, 0x82, 0x69, 0xf5, 0xa1, 0x75, 0x9f, 0xf4, 0xf1, 0xc0, 0x0a, 0x9f, 0x0e, 0x3d, 0x82, + 0xda, 0x50, 0x73, 0x06, 0xf6, 0x2e, 0xf1, 0xd9, 0xdc, 0xb4, 0x9d, 0x19, 0x5d, 0x7c, 0x17, 0x39, + 0x13, 0xda, 0x2b, 0x08, 0x7d, 0xd3, 0xd9, 0xe3, 0x53, 0xa5, 0xbd, 0xf8, 0x77, 0x6c, 0x21, 0x0c, + 0x98, 0xbb, 0x6f, 0x06, 0x86, 0x6f, 0xda, 0xa6, 0x83, 0x43, 0xd7, 0x47, 0x9b, 0x30, 0x27, 0xcc, + 0xc1, 0xb0, 0x9b, 0xd8, 0x8c, 0x59, 0xd9, 0x48, 0x67, 0x8e, 0xae, 0x43, 0xdd, 0xc6, 0x9e, 0x47, + 0x39, 0x73, 0xbd, 0x5c, 0x4e, 0x09, 0x11, 0x1b, 0x23, 0xd0, 0x25, 0x66, 0xe3, 0xa7, 0x32, 0x34, + 0xee, 0xbb, 0xc6, 0xc0, 0x26, 0x4e, 0x88, 0xda, 0x50, 0x17, 0x58, 0xc1, 0x5a, 0x7e, 0xa2, 0x0b, + 0x50, 0x31, 0x9d, 0xbe, 0x2b, 0x58, 0x2e, 0x26, 0x59, 0x3e, 0x70, 0xfa, 0xae, 0xce, 0xa8, 0xe8, + 0x1a, 0xd4, 0x03, 0xe2, 0xbf, 0xe4, 0x1a, 0x4d, 0x37, 0x16, 0xa5, 0x05, 0x98, 0x92, 0x74, 0x09, + 0x41, 0x97, 0xa0, 0x4a, 0x8d, 0xbc, 0xd4, 0xdd, 0xa5, 0xb4, 0xf6, 0x87, 0xfb, 0x81, 0xce, 0xe9, + 0xe8, 0x1d, 0x00, 0x23, 0xb2, 0x5a, 0x42, 0x4b, 0x53, 0x0e, 0x2f, 0xb6, 0x69, 0x7a, 0x02, 0x89, + 0xde, 0x87, 0x86, 0xd4, 0x8b, 0x76, 0x8d, 0xcd, 0xe7, 0x9c, 0x4a, 0xa1, 0xa8, 0x8e, 0x9b, 0x3e, + 0xa1, 0x3b, 0xa0, 0x47, 0x1d, 0xd0, 0x26, 0x54, 0x42, 0xbc, 0x47, 0x35, 0xb1, 0x3c, 0xea, 0x8b, + 0x9f, 0xe2, 0x3d, 0x9d, 0x11, 0xd1, 0x87, 0x30, 0x47, 0x65, 0xc9, 0xa7, 0x96, 0xba, 0xe7, 0x1a, + 0x52, 0xdd, 0xda, 0x69, 0x33, 0xc4, 0x01, 0xf7, 0x5d, 0x23, 0xd0, 0x67, 0x49, 0xe2, 0xab, 0x48, + 0x30, 0x9b, 0x13, 0x08, 0xe6, 0xff, 0x96, 0xa0, 0xb1, 0xed, 0x18, 0x6e, 0xcf, 0x74, 0xf6, 0xd0, + 0x79, 0x98, 0x35, 0x5c, 0x27, 0x24, 0x4e, 0xd8, 0x0d, 0x87, 0x9e, 0x94, 0x95, 0x96, 0x68, 0x63, + 0x92, 0x9b, 0xb0, 0x59, 0xa5, 0x31, 0x6d, 0xd6, 0x0a, 0x54, 0x83, 0x70, 0x68, 0x11, 0xa9, 0x68, + 0xec, 0x83, 0xca, 0x0f, 0x39, 0xf0, 0x2c, 0xb7, 0x47, 0xd8, 0x99, 0x36, 0x74, 0xf9, 0x89, 0x2e, + 0xc2, 0x3c, 0xb6, 0x2c, 0xf7, 0x55, 0xd7, 0x27, 0xec, 0xf8, 0x7b, 0xec, 0x18, 0x1b, 0xfa, 0x1c, + 0x6b, 0xd5, 0x45, 0x63, 0xd1, 0x86, 0xd4, 0x26, 0xd8, 0x90, 0x2f, 0xa1, 0x29, 0xf7, 0x23, 0x40, + 0x9f, 0x14, 0xfb, 0xd5, 0x6c, 0x2c, 0x22, 0xbb, 0xe6, 0x38, 0xd3, 0x3f, 0x69, 0x50, 0x17, 0x2e, + 0x86, 0x2e, 0x3c, 0x18, 0xd8, 0x36, 0xf6, 0x87, 0x52, 0x71, 0xc4, 0x27, 0x5a, 0x87, 0x56, 0x8f, + 0x50, 0x25, 0xf6, 0x42, 0x19, 0xad, 0x35, 0xf5, 0x64, 0x13, 0xba, 0x28, 0xc3, 0xc8, 0xb2, 0x32, + 0xea, 0x93, 0x11, 0xe4, 0x45, 0x98, 0x8f, 0x44, 0x8d, 0xe3, 0x2b, 0x8c, 0x57, 0x24, 0x80, 0x9f, + 0x31, 0x58, 0xc1, 0x0e, 0x56, 0x27, 0xd8, 0xc1, 0x6f, 0x35, 0x40, 0x62, 0x91, 0xc9, 0x80, 0xe9, + 0x26, 0x3d, 0x68, 0xd6, 0x2a, 0x22, 0x87, 0x65, 0x85, 0xe3, 0xa5, 0xe6, 0x4e, 0xa0, 0x8e, 0x1d, + 0x2d, 0x01, 0x34, 0xa4, 0x3b, 0xdf, 0xf0, 0x60, 0x45, 0xe5, 0xda, 0xd1, 0xb3, 0xe2, 0x03, 0xde, + 0xcc, 0x1e, 0x70, 0x66, 0x61, 0x39, 0x47, 0xfd, 0x39, 0x40, 0x22, 0x48, 0x7f, 0x50, 0x3c, 0x8e, + 0x7a, 0x83, 0xd5, 0x8c, 0xff, 0x5f, 0x83, 0xd9, 0xa4, 0x7d, 0x18, 0x15, 0x17, 0x2d, 0x2b, 0x2e, + 0x59, 0xa7, 0x57, 0x70, 0xe4, 0xe5, 0x09, 0x8e, 0xfc, 0xbf, 0x2b, 0x50, 0xe3, 0xba, 0x7f, 0x84, + 0xd9, 0x9c, 0x82, 0x86, 0xcf, 0xcd, 0x67, 0x8f, 0xfb, 0x38, 0x3d, 0xfa, 0x46, 0x67, 0x01, 0x7a, + 0xc4, 0xf3, 0x89, 0x81, 0x43, 0xd2, 0x63, 0xd2, 0xdd, 0xd0, 0x13, 0x2d, 0xe8, 0x0a, 0x2c, 0x71, + 0x9b, 0x40, 0x6c, 0x2f, 0x1c, 0x26, 0x84, 0xba, 0xa1, 0x2f, 0x30, 0xc2, 0x36, 0x6d, 0xe7, 0x62, + 0x1d, 0xd9, 0x9b, 0x6a, 0x8e, 0xbd, 0xa9, 0x1d, 0x66, 0x6f, 0xea, 0x2a, 0x7b, 0x73, 0x07, 0x6a, + 0x3c, 0xa2, 0x55, 0xc5, 0x49, 0x99, 0x2b, 0xa3, 0x2e, 0xc0, 0xe8, 0x8d, 0x58, 0xfc, 0x9b, 0x6a, + 0xa5, 0x8d, 0x04, 0x3f, 0x19, 0xa3, 0xc2, 0xd8, 0x31, 0xea, 0x9b, 0x50, 0x17, 0x06, 0xbb, 0xdd, + 0xca, 0xba, 0xbd, 0x47, 0xa4, 0x67, 0x62, 0x6a, 0xc9, 0x03, 0x5d, 0xc2, 0x8a, 0x84, 0x61, 0x76, + 0x02, 0x61, 0xf8, 0x4f, 0x0d, 0x96, 0xb8, 0x30, 0x24, 0xd5, 0xff, 0x1a, 0xd4, 0xb8, 0x23, 0x10, + 0xda, 0x8f, 0xb2, 0x7e, 0x83, 0x06, 0x34, 0x1c, 0x73, 0x6c, 0xdd, 0x77, 0x60, 0x59, 0xe1, 0x8b, + 0xd0, 0xe7, 0xc5, 0x6a, 0xb8, 0x91, 0x59, 0x67, 0x66, 0x1d, 0x39, 0x4a, 0xf9, 0x63, 0x09, 0x2a, + 0x34, 0xa8, 0xa1, 0x42, 0x17, 0x9a, 0xa1, 0x25, 0x7d, 0x27, 0xff, 0x38, 0x82, 0x45, 0xbf, 0x0c, + 0x8b, 0x21, 0xf1, 0xed, 0xa0, 0xeb, 0xf6, 0xbb, 0x54, 0xd0, 0x4c, 0x43, 0xfa, 0xc9, 0x79, 0xd6, + 0xde, 0xe9, 0x3f, 0xe1, 0xad, 0x34, 0x58, 0x33, 0x78, 0x80, 0x2b, 0x82, 0xa0, 0xe5, 0x74, 0x58, + 0xc3, 0x48, 0xba, 0xc4, 0x50, 0xb8, 0x65, 0x1a, 0xc4, 0x09, 0x88, 0x88, 0x82, 0x96, 0xd3, 0x71, + 0x3d, 0x23, 0xe9, 0x12, 0x43, 0xd5, 0x83, 0x06, 0x5a, 0xdc, 0x7b, 0x32, 0xaf, 0x24, 0x3e, 0x8b, + 0xa4, 0xa4, 0x3e, 0x81, 0x94, 0x7c, 0x01, 0x4d, 0x7a, 0x69, 0xe7, 0x39, 0x99, 0x47, 0x79, 0x39, + 0x99, 0xf2, 0xe1, 0x0a, 0x96, 0xcd, 0xc8, 0x6c, 0x7c, 0x03, 0x75, 0xb1, 0xb0, 0x23, 0xde, 0x01, + 0xa6, 0x6c, 0x0e, 0xff, 0x5c, 0x82, 0x0a, 0xbd, 0x31, 0xd1, 0xe8, 0x9b, 0x8a, 0x08, 0xe7, 0xe9, + 0x93, 0xbe, 0x8c, 0xbe, 0xa3, 0x46, 0x9d, 0xf4, 0x69, 0xd4, 0x15, 0x83, 0xcc, 0x9e, 0x94, 0x8e, + 0xa8, 0xed, 0x41, 0x0f, 0x7d, 0xa8, 0xb8, 0xf9, 0x9e, 0x19, 0xb1, 0x1f, 0xe9, 0xcc, 0x4c, 0xea, + 0xd2, 0xfb, 0xcf, 0x30, 0x9b, 0xb8, 0xb6, 0x0e, 0x85, 0xdc, 0x9c, 0x1e, 0x61, 0x90, 0xca, 0xcb, + 0xb4, 0xe2, 0xab, 0x6a, 0x26, 0x20, 0xa9, 0x66, 0xc5, 0xf7, 0x0a, 0xd4, 0x78, 0x88, 0x2e, 0x6e, + 0xb2, 0xaa, 0x20, 0x5e, 0x20, 0xa6, 0x2d, 0x48, 0x43, 0x58, 0xa0, 0x7b, 0x9d, 0xb4, 0x35, 0xaf, + 0x43, 0x85, 0xde, 0x4e, 0x85, 0xa5, 0x59, 0x1c, 0xbd, 0xc8, 0xee, 0xcc, 0xe8, 0x8c, 0x7e, 0x6c, + 0x2b, 0xf3, 0x35, 0x2c, 0x65, 0x2e, 0xc6, 0xe3, 0xa7, 0xc4, 0x46, 0x66, 0x9f, 0x63, 0x61, 0x7e, + 0x5d, 0x82, 0x66, 0x64, 0xbc, 0x13, 0x4e, 0x48, 0x9b, 0xd0, 0x09, 0x95, 0xc6, 0x70, 0x42, 0xe5, + 0xb1, 0x9d, 0xd0, 0x5b, 0xd0, 0x20, 0x22, 0x14, 0x16, 0xd2, 0x96, 0xda, 0xd8, 0x28, 0xc2, 0xd6, + 0x23, 0xd8, 0xb4, 0xa3, 0xd0, 0xaf, 0x00, 0x62, 0x5f, 0x87, 0x3a, 0xc5, 0x87, 0x72, 0x2a, 0xc3, + 0x3a, 0xea, 0x9b, 0x73, 0x1c, 0xdb, 0xd0, 0x90, 0x53, 0x50, 0xda, 0x98, 0x28, 0x42, 0x2f, 0x15, + 0x45, 0xe8, 0x1b, 0x5f, 0xc1, 0x8a, 0x2a, 0x2d, 0xaa, 0x64, 0xf9, 0x56, 0x9a, 0x65, 0xa1, 0xfa, + 0x0a, 0xf6, 0x04, 0xda, 0x79, 0xe9, 0x3e, 0xe5, 0x10, 0x77, 0xd2, 0x43, 0x9c, 0x53, 0x65, 0x72, + 0x92, 0x72, 0x25, 0x86, 0xe9, 0xc0, 0x5c, 0xea, 0xf6, 0xa3, 0xe4, 0x7d, 0x25, 0xcd, 0x7b, 0x45, + 0x25, 0x0f, 0x92, 0xa1, 0x01, 0x27, 0x72, 0xa2, 0x6d, 0x25, 0xeb, 0xb7, 0xd3, 0xac, 0xcf, 0x2a, + 0x04, 0x55, 0x31, 0x6b, 0x0c, 0x6b, 0x6a, 0x1f, 0xaf, 0x1c, 0xe3, 0x76, 0x7a, 0x8c, 0x33, 0xd9, + 0xf0, 0x45, 0x31, 0x84, 0x3c, 0xde, 0x51, 0x03, 0x35, 0xee, 0xf1, 0x8e, 0x9a, 0x08, 0xc1, 0xfe, + 0x5f, 0x61, 0x3e, 0x2d, 0xac, 0x4a, 0xc6, 0x57, 0xd3, 0x8c, 0x57, 0x95, 0xe1, 0xa0, 0x64, 0xb9, + 0x07, 0x27, 0x45, 0x52, 0x5d, 0x78, 0x8f, 0xc3, 0xa6, 0xfd, 0x4e, 0x9a, 0xfb, 0xba, 0x32, 0x1f, + 0x5b, 0x20, 0x33, 0x32, 0x7b, 0x3f, 0xb6, 0xcc, 0x44, 0x69, 0x7f, 0xc1, 0xf0, 0x39, 0x9c, 0x66, + 0x0c, 0xe3, 0xf4, 0xeb, 0xf0, 0xb0, 0xb9, 0xbf, 0x9b, 0x66, 0xbf, 0xa1, 0xce, 0xe2, 0x0e, 0x15, + 0xb3, 0x97, 0x8a, 0x25, 0x73, 0xd6, 0xc7, 0x51, 0x2c, 0x05, 0x8f, 0x51, 0x11, 0xcd, 0x58, 0xf4, + 0xb1, 0x45, 0x34, 0xeb, 0x13, 0xc4, 0x10, 0x2f, 0xe0, 0x2c, 0x1f, 0x22, 0x95, 0x0d, 0x3e, 0x6c, + 0xa8, 0xf7, 0xd3, 0x43, 0x5d, 0xcc, 0x4f, 0x3a, 0x2b, 0x86, 0xfc, 0x12, 0x96, 0xc5, 0x90, 0x34, + 0x1e, 0xf8, 0x0c, 0xfb, 0x26, 0xde, 0xb5, 0xd4, 0xe3, 0xbc, 0x99, 0x1e, 0xe7, 0x54, 0x36, 0xac, + 0x90, 0xdd, 0x25, 0xf3, 0x7f, 0x82, 0x16, 0x67, 0xce, 0xb2, 0x96, 0x4a, 0xa6, 0x2b, 0x49, 0xa6, + 0x4d, 0xd9, 0xf1, 0xaf, 0x1a, 0x34, 0x3b, 0x78, 0x10, 0xee, 0x7f, 0x6c, 0xb9, 0xaf, 0xd0, 0x55, + 0x58, 0xa2, 0xff, 0xbb, 0xbe, 0xf9, 0x1f, 0xdc, 0x1b, 0xd1, 0x88, 0x91, 0x33, 0x59, 0x4c, 0x11, + 0x3e, 0xf5, 0x2d, 0x74, 0x1a, 0x9a, 0xa1, 0xfb, 0x9c, 0x70, 0x10, 0x67, 0xda, 0x60, 0x0d, 0x94, + 0x78, 0x0e, 0x5a, 0x3e, 0xe9, 0xfb, 0x24, 0xd8, 0x67, 0x64, 0x1e, 0xd4, 0x83, 0x68, 0xa2, 0x80, + 0xab, 0xd4, 0x97, 0xbb, 0x5e, 0x54, 0x90, 0x50, 0x26, 0x5f, 0x05, 0x64, 0xda, 0x5e, 0xf2, 0xf7, + 0x25, 0x80, 0x68, 0xd1, 0xcc, 0x6d, 0x9b, 0xb6, 0x67, 0x99, 0x86, 0x19, 0x8a, 0xc0, 0x22, 0x65, + 0x2d, 0x22, 0xa4, 0x1e, 0xc1, 0x68, 0x17, 0x0f, 0x07, 0xc1, 0x2b, 0xd7, 0xef, 0xa9, 0x0c, 0x4c, + 0xa2, 0x8b, 0x84, 0xa1, 0xfb, 0x80, 0x0c, 0xcb, 0x24, 0x4e, 0xd8, 0x35, 0x7c, 0xd2, 0x23, 0x4e, + 0x68, 0x62, 0x4b, 0x06, 0x19, 0x39, 0x9d, 0x97, 0x78, 0x87, 0x7b, 0x31, 0x9e, 0x72, 0x49, 0x9f, + 0x90, 0x21, 0x73, 0x88, 0xf9, 0x5c, 0x52, 0x1d, 0xee, 0xd1, 0x4b, 0xff, 0x94, 0xf7, 0xf3, 0x09, + 0xd4, 0x3a, 0xbb, 0x5f, 0x13, 0x23, 0x9c, 0x66, 0xc6, 0xe7, 0xfb, 0x2a, 0x34, 0x3b, 0xf2, 0x36, + 0x40, 0x25, 0x9a, 0x25, 0x99, 0x29, 0x9f, 0xa6, 0xc8, 0x29, 0x27, 0x72, 0x89, 0xa5, 0xc2, 0x5c, + 0x62, 0x39, 0x1b, 0xba, 0x67, 0xf2, 0xd1, 0x95, 0xb1, 0xf2, 0xd1, 0xa3, 0xb7, 0x97, 0x6a, 0xf6, + 0xf6, 0xf2, 0x2f, 0xa9, 0xdb, 0x4b, 0x2d, 0x1b, 0x06, 0x2b, 0xfd, 0x44, 0xf2, 0x02, 0xb3, 0x3d, + 0x72, 0x81, 0xa9, 0x1f, 0xd9, 0x5e, 0xa7, 0xee, 0x31, 0xb7, 0x93, 0x15, 0xc8, 0x86, 0x2a, 0xde, + 0x17, 0xc4, 0x64, 0xd5, 0xf1, 0xd8, 0x15, 0xae, 0x74, 0x4e, 0x0b, 0x32, 0x39, 0xad, 0x64, 0xc9, + 0xa1, 0x35, 0x6e, 0xc9, 0x21, 0x51, 0x3e, 0x99, 0x3d, 0xbc, 0x7c, 0x52, 0x20, 0xed, 0x73, 0x13, + 0x48, 0xfb, 0x6f, 0x2a, 0xd0, 0x8c, 0xce, 0x4e, 0x69, 0x6a, 0xe7, 0xa1, 0x64, 0xca, 0x7c, 0x47, + 0xc9, 0x74, 0x8e, 0x20, 0x8e, 0xc9, 0xec, 0x60, 0xa5, 0x30, 0x3b, 0x58, 0x3d, 0x5a, 0x76, 0xb0, + 0x76, 0x48, 0x76, 0xb0, 0x9e, 0x93, 0x1d, 0x6c, 0x1c, 0x96, 0x1d, 0x6c, 0x16, 0x67, 0x07, 0x61, + 0xc2, 0x8b, 0x59, 0x6b, 0x8c, 0x8b, 0xd9, 0xec, 0x71, 0xb2, 0x83, 0x73, 0xc7, 0xce, 0x0e, 0xce, + 0x4f, 0x20, 0x33, 0xff, 0xa3, 0xc1, 0x8a, 0x32, 0xb8, 0xbc, 0x03, 0xcd, 0x48, 0xe3, 0x55, 0xce, + 0x27, 0xea, 0x44, 0x2f, 0xe3, 0x11, 0xf2, 0xd8, 0x77, 0xf8, 0x10, 0xd6, 0xd4, 0xcf, 0x06, 0xd0, + 0x17, 0xc5, 0x16, 0xfc, 0xa2, 0xe2, 0x21, 0x8a, 0xc2, 0x8c, 0xa9, 0x4d, 0xfa, 0xdf, 0x2a, 0xd0, + 0x88, 0x22, 0xdf, 0x25, 0xa8, 0x24, 0x92, 0x43, 0x65, 0x9d, 0xf4, 0x8f, 0x65, 0xd0, 0x2f, 0x41, + 0x79, 0x8f, 0x84, 0x4a, 0x4f, 0x18, 0xa5, 0x9d, 0x28, 0x82, 0x02, 0xbd, 0x41, 0x28, 0xd2, 0x82, + 0x79, 0x40, 0x6f, 0x10, 0xa2, 0x37, 0xa0, 0xe2, 0xb9, 0x41, 0x28, 0x72, 0x3b, 0x39, 0x48, 0x06, + 0x41, 0xd7, 0xa1, 0xd6, 0x23, 0x16, 0x09, 0x89, 0xb0, 0xd1, 0x39, 0x60, 0x01, 0x42, 0x37, 0xa1, + 0xee, 0xb2, 0x59, 0x2b, 0xed, 0x71, 0x8c, 0x97, 0x28, 0x3a, 0x95, 0x7d, 0x82, 0x7b, 0xc2, 0x10, + 0xe7, 0x4d, 0x85, 0x42, 0xe8, 0xbd, 0xc7, 0xc3, 0xa1, 0xb1, 0x2f, 0x34, 0x31, 0x07, 0xcb, 0x31, + 0x14, 0x1c, 0xfa, 0xd8, 0x90, 0xea, 0x97, 0x07, 0x66, 0x98, 0x31, 0x8d, 0x6e, 0xda, 0xfd, 0xcd, + 0x4d, 0xe0, 0xfe, 0xa6, 0xac, 0x82, 0xdf, 0x6a, 0x50, 0x65, 0xc5, 0xf2, 0x7f, 0xf0, 0xd3, 0x2a, + 0x02, 0x10, 0xab, 0xc4, 0xf8, 0xb9, 0xf9, 0xac, 0x35, 0x55, 0xeb, 0xda, 0x59, 0x68, 0xc6, 0x56, + 0x26, 0xab, 0x6b, 0x1b, 0x43, 0x38, 0x99, 0xfb, 0x64, 0x07, 0xfd, 0x7b, 0xf1, 0xac, 0x2e, 0x65, + 0x66, 0x95, 0x13, 0x87, 0xa8, 0xa7, 0xf6, 0x3b, 0x0d, 0x5a, 0x7a, 0x7e, 0xa2, 0x55, 0x51, 0x3c, + 0x4b, 0xd8, 0xef, 0xd2, 0xd1, 0xec, 0x77, 0xd2, 0xa1, 0x96, 0x47, 0x1c, 0xea, 0x94, 0x5f, 0xb9, + 0x7c, 0xaf, 0xc1, 0x5a, 0xce, 0xf5, 0xfb, 0x83, 0x91, 0x08, 0x8e, 0x1b, 0xf8, 0x13, 0x39, 0x11, + 0xdc, 0xce, 0x4c, 0x3a, 0x70, 0x3b, 0xae, 0x91, 0xff, 0x65, 0x09, 0x1a, 0x32, 0xb8, 0x3b, 0xc2, + 0x26, 0x1f, 0xe3, 0x91, 0x43, 0xe2, 0x7c, 0xca, 0x47, 0x3b, 0x9f, 0xe8, 0xd9, 0x55, 0x65, 0x8c, + 0x67, 0x57, 0x53, 0xbe, 0xb6, 0x7c, 0xa7, 0xc1, 0xb2, 0x2a, 0x95, 0x71, 0x8b, 0xca, 0x0e, 0x6f, + 0x56, 0x3d, 0x72, 0x94, 0x5d, 0x76, 0x66, 0xf4, 0x08, 0x77, 0xec, 0xb3, 0xfa, 0x8b, 0x46, 0xf5, + 0x55, 0x46, 0xdf, 0xef, 0x41, 0xbd, 0xc7, 0x1f, 0x4e, 0xa9, 0xde, 0x1b, 0xaa, 0x52, 0x27, 0x12, + 0x8f, 0x9e, 0xc1, 0xaa, 0x9c, 0x54, 0xba, 0xac, 0x54, 0xca, 0x79, 0x14, 0xa9, 0xe2, 0xb6, 0xec, + 0x2b, 0xb6, 0x65, 0xca, 0xe5, 0x22, 0x1f, 0x56, 0x95, 0x6f, 0x1f, 0xc7, 0x7f, 0xd6, 0xa9, 0x5a, + 0x41, 0x4e, 0xc1, 0xb2, 0x05, 0x35, 0x6e, 0x40, 0xa9, 0x81, 0x70, 0x06, 0x96, 0x85, 0x77, 0x45, + 0xd5, 0xb2, 0xa1, 0x47, 0xdf, 0xe8, 0x23, 0x98, 0xeb, 0x25, 0xdf, 0x93, 0x89, 0x03, 0x4d, 0x79, + 0x8a, 0xd4, 0x83, 0x33, 0x3d, 0x8d, 0x47, 0xa7, 0xa9, 0x34, 0xe0, 0x5e, 0xd7, 0x75, 0xac, 0x61, + 0x6c, 0x7e, 0x70, 0xaf, 0xe3, 0x58, 0x43, 0x74, 0x06, 0xe0, 0x95, 0x6f, 0x86, 0x84, 0x53, 0x79, + 0xb4, 0xdf, 0x64, 0x2d, 0x8c, 0x7c, 0x1e, 0xca, 0x07, 0xb6, 0x25, 0xe2, 0x93, 0x54, 0x40, 0xfc, + 0xcc, 0xb6, 0x74, 0x4a, 0xcb, 0x5e, 0x5e, 0x6b, 0x63, 0x5d, 0x5e, 0x13, 0x61, 0x77, 0xfd, 0x90, + 0xb0, 0x3b, 0x7d, 0xf7, 0x68, 0x64, 0xee, 0x1e, 0x51, 0xe1, 0xb7, 0x99, 0x2c, 0xfc, 0x9e, 0x83, + 0x96, 0x3d, 0xb0, 0x42, 0xd3, 0xb3, 0x48, 0xd7, 0xed, 0xb3, 0x48, 0x44, 0xd3, 0x41, 0x36, 0x75, + 0x58, 0xa0, 0x67, 0xe3, 0x03, 0xd3, 0x1e, 0xd8, 0x2c, 0xf2, 0xd0, 0x74, 0xf9, 0x89, 0xae, 0xc2, + 0x12, 0x39, 0x30, 0xac, 0x41, 0x60, 0xbe, 0x24, 0x5d, 0x89, 0x99, 0x65, 0xe3, 0x2e, 0x46, 0x84, + 0x47, 0x02, 0x4c, 0xd9, 0x98, 0x0e, 0x83, 0xcc, 0x09, 0x36, 0xfc, 0x73, 0x84, 0x8d, 0xc0, 0xcc, + 0x8f, 0xb2, 0x11, 0xe0, 0x33, 0x00, 0x36, 0x3e, 0xe8, 0x5a, 0xc4, 0xd9, 0x0b, 0xf7, 0xdb, 0x0b, + 0xeb, 0xda, 0xe5, 0xb2, 0xde, 0xb4, 0xf1, 0xc1, 0x43, 0xd6, 0xc0, 0xc8, 0xa6, 0x23, 0xc9, 0x8b, + 0x82, 0x6c, 0x3a, 0x82, 0xdc, 0x86, 0xba, 0x87, 0x43, 0xba, 0xbd, 0xed, 0x25, 0x1e, 0xb4, 0x8a, + 0x4f, 0x2a, 0x05, 0x94, 0xaf, 0x19, 0x12, 0x3b, 0x68, 0x23, 0xd6, 0xaf, 0x61, 0xe3, 0x03, 0x56, + 0x00, 0x66, 0x44, 0xd3, 0x11, 0xc4, 0x65, 0x41, 0x34, 0x1d, 0x4e, 0x3c, 0x0f, 0xb3, 0x03, 0xc7, + 0x7c, 0x31, 0x20, 0x82, 0xbe, 0xc2, 0x66, 0xde, 0xe2, 0x6d, 0x1c, 0x72, 0x11, 0xe6, 0x29, 0xf3, + 0x84, 0x7a, 0xac, 0x32, 0x26, 0x73, 0x36, 0x3e, 0x48, 0xc4, 0x17, 0x14, 0x66, 0x3a, 0x49, 0xd8, + 0x9a, 0x80, 0x99, 0x4e, 0x02, 0x96, 0x74, 0x97, 0x27, 0x58, 0x8a, 0x25, 0x76, 0x97, 0x9b, 0x50, + 0x21, 0xce, 0xc0, 0x6e, 0xb7, 0xb3, 0xef, 0xfb, 0xa8, 0xac, 0x30, 0x22, 0xcb, 0xcf, 0x0c, 0x3d, + 0xd2, 0x3e, 0xc9, 0xaf, 0xc1, 0xf4, 0x7f, 0xf4, 0x36, 0xd4, 0xb0, 0x65, 0x51, 0x09, 0x38, 0x75, + 0x94, 0x92, 0x76, 0x15, 0x5b, 0x56, 0xa7, 0x4f, 0x7b, 0xb9, 0x0e, 0x93, 0x9b, 0xd3, 0x47, 0xea, + 0xe5, 0x3a, 0x84, 0xf7, 0xc2, 0xce, 0x90, 0xf6, 0x7a, 0xed, 0x68, 0x63, 0x39, 0xc3, 0x4e, 0x1f, + 0x5d, 0x80, 0xb2, 0xe3, 0x86, 0xed, 0x33, 0x8a, 0xea, 0x2d, 0xeb, 0xa2, 0x53, 0x32, 0x8d, 0x92, + 0xf9, 0x31, 0x9c, 0xcd, 0xda, 0xf5, 0xa8, 0x9a, 0xaf, 0x73, 0x0c, 0x7a, 0x07, 0x20, 0xb1, 0xd9, + 0xe7, 0xb2, 0xde, 0x30, 0xde, 0x75, 0x3d, 0x81, 0xcc, 0xb7, 0x7a, 0xeb, 0x8c, 0x45, 0xca, 0xea, + 0xe5, 0xfd, 0xca, 0x43, 0x6d, 0xf5, 0xd0, 0x5b, 0xb1, 0x37, 0x39, 0x9f, 0x0d, 0x40, 0x12, 0x2f, + 0x74, 0x63, 0x2f, 0x32, 0x12, 0x2d, 0x6c, 0x64, 0xa3, 0x85, 0x35, 0xa8, 0xf5, 0x5d, 0xdf, 0xc6, + 0x61, 0x7b, 0x93, 0x11, 0xc5, 0x57, 0x91, 0x97, 0xb8, 0x30, 0xe1, 0xb3, 0x9a, 0x6c, 0x1d, 0xe0, + 0xda, 0x48, 0x21, 0x58, 0x71, 0x74, 0xec, 0x9d, 0x30, 0x37, 0xf5, 0x53, 0x78, 0x56, 0xa3, 0x78, + 0xe2, 0xff, 0xf3, 0x85, 0xee, 0xab, 0xb0, 0xac, 0x48, 0x7f, 0x6d, 0xfc, 0xa1, 0x04, 0xf3, 0xe9, + 0x2a, 0x43, 0xa4, 0x75, 0x5a, 0x42, 0xeb, 0x0e, 0x7f, 0x75, 0x23, 0x53, 0x56, 0xe5, 0x4c, 0xca, + 0xaa, 0x12, 0xa5, 0xac, 0xd6, 0xc4, 0x0e, 0xcb, 0x77, 0x64, 0xe2, 0x0b, 0x6d, 0xc2, 0xdc, 0x2e, + 0xc1, 0x3e, 0xf1, 0xbb, 0xe2, 0xf4, 0xf9, 0x7b, 0x99, 0x59, 0xde, 0xf8, 0x31, 0x97, 0x81, 0x6b, + 0x50, 0xed, 0x5b, 0xee, 0x2b, 0xf9, 0x38, 0x7f, 0x4d, 0x99, 0x97, 0x0e, 0x74, 0x0e, 0x42, 0xd7, + 0x61, 0x99, 0xd2, 0xbb, 0x66, 0xaf, 0x6b, 0xb8, 0x8e, 0x43, 0x8c, 0x90, 0x95, 0x0c, 0x1a, 0xbc, + 0xec, 0x40, 0x49, 0x0f, 0x7a, 0xf7, 0x38, 0xe1, 0xd3, 0xe2, 0x57, 0x2b, 0x93, 0x3c, 0x05, 0xfe, + 0x41, 0x83, 0x93, 0xf9, 0x55, 0xa0, 0x6d, 0x58, 0x18, 0xf9, 0xc5, 0x81, 0x90, 0xb8, 0x53, 0xf9, + 0xb5, 0x9f, 0x9d, 0x19, 0x7d, 0x3e, 0xfd, 0x2b, 0x83, 0x63, 0x4b, 0xe0, 0x37, 0x70, 0xba, 0xe0, + 0x47, 0x0d, 0xa8, 0x5b, 0x2c, 0x89, 0x57, 0xb2, 0x92, 0x98, 0x5b, 0xac, 0x52, 0x4b, 0xe4, 0x6f, + 0x35, 0xa8, 0xf1, 0x0b, 0xbe, 0x7c, 0x46, 0xa4, 0xc5, 0xcf, 0x88, 0x0e, 0x17, 0xb8, 0xf7, 0xa0, + 0xf9, 0x52, 0x14, 0xac, 0x64, 0xc5, 0xe3, 0x74, 0x7e, 0x4d, 0x2b, 0xd0, 0x63, 0xf4, 0xb4, 0xef, + 0x6a, 0x3f, 0x6a, 0x54, 0x87, 0x46, 0x0b, 0x70, 0xcc, 0xbd, 0x89, 0xca, 0x02, 0xf3, 0x66, 0xed, + 0xd8, 0x62, 0x8a, 0x44, 0x54, 0x8e, 0x61, 0x54, 0x24, 0xa2, 0xa6, 0x3c, 0xe3, 0x3d, 0x58, 0x18, + 0xd9, 0x1e, 0xf4, 0xb4, 0xf8, 0xb8, 0xcf, 0x29, 0x8e, 0x3b, 0x55, 0x33, 0x54, 0x9f, 0xf1, 0x0b, + 0x58, 0x7b, 0xa2, 0x9c, 0xc2, 0xcf, 0xf7, 0xbb, 0x8d, 0x4d, 0x68, 0xf1, 0x4a, 0xdf, 0x96, 0xef, + 0xe3, 0x61, 0x5c, 0xa1, 0xe4, 0x47, 0x21, 0x2a, 0x94, 0x9f, 0x43, 0x5d, 0x94, 0x03, 0xd1, 0xc3, + 0xe2, 0x85, 0x9f, 0xc8, 0x2e, 0x9c, 0x75, 0xcc, 0x59, 0xf0, 0x4f, 0x1a, 0x94, 0x9f, 0x62, 0x75, + 0xb1, 0xf4, 0x70, 0x99, 0xce, 0xc4, 0xe0, 0xe5, 0x69, 0xfd, 0xa0, 0x61, 0x12, 0x29, 0xf9, 0xa3, + 0x06, 0xe5, 0x67, 0xb6, 0xa5, 0x5c, 0xcb, 0x6b, 0xd0, 0xa4, 0x7f, 0x03, 0x0f, 0x1b, 0xb2, 0xf8, + 0x1b, 0x37, 0x50, 0x43, 0xef, 0xf9, 0xa4, 0x6f, 0x1e, 0x08, 0x59, 0x16, 0x5f, 0xb4, 0x17, 0x0e, + 0x43, 0xdf, 0xdc, 0x1d, 0x84, 0xf2, 0xad, 0x71, 0xdc, 0x40, 0x15, 0xe4, 0x95, 0x8f, 0x3d, 0x2f, + 0x2a, 0x48, 0xc8, 0xcf, 0x29, 0xff, 0x30, 0xe1, 0xee, 0xeb, 0x30, 0xef, 0xfa, 0x7b, 0xb2, 0x4b, + 0xf7, 0xe5, 0xed, 0xbb, 0xb3, 0xe2, 0xe7, 0xb1, 0x8f, 0x7d, 0x37, 0x74, 0x1f, 0x6b, 0x3f, 0x94, + 0xca, 0x9d, 0xad, 0x27, 0xbb, 0x35, 0xf6, 0x5b, 0xd2, 0xdb, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, + 0x29, 0xfd, 0x14, 0x6b, 0x47, 0x3b, 0x00, 0x00, +} diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.proto b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.proto new file mode 100644 index 0000000000..f9a75c52cb --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.proto @@ -0,0 +1,671 @@ +// Copyright 2017 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +syntax = "proto3"; + +package openapi.v3; + +import "google/protobuf/any.proto"; + +// This option lets the proto compiler generate Java code inside the package +// name (see below) instead of inside an outer class. It creates a simpler +// developer experience by reducing one-level of name nesting and be +// consistent with most programming languages that don't support outer classes. +option java_multiple_files = true; + +// The Java outer classname should be the filename in UpperCamelCase. This +// class is only used to hold proto descriptor, so developers don't need to +// work with it directly. +option java_outer_classname = "OpenAPIProto"; + +// The Java package name must be proto package name with proper prefix. +option java_package = "org.openapi_v3"; + +// A reasonable prefix for the Objective-C symbols generated from the package. +// It should at a minimum be 3 characters long, all uppercase, and convention +// is to use an abbreviation of the package name. Something short, but +// hopefully unique enough to not conflict with things that may come along in +// the future. 'GPB' is reserved for the protocol buffer implementation itself. +option objc_class_prefix = "OAS"; + +message AdditionalPropertiesItem { + oneof oneof { + SchemaOrReference schema_or_reference = 1; + bool boolean = 2; + } +} + +message Any { + google.protobuf.Any value = 1; + string yaml = 2; +} + +message AnyOrExpression { + oneof oneof { + Any any = 1; + Expression expression = 2; + } +} + +message AnysOrExpressions { + repeated NamedAnyOrExpression additional_properties = 1; +} + +// A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation. +message Callback { + repeated NamedPathItem path = 1; + repeated NamedAny specification_extension = 2; +} + +message CallbackOrReference { + oneof oneof { + Callback callback = 1; + Reference reference = 2; + } +} + +message CallbacksOrReferences { + repeated NamedCallbackOrReference additional_properties = 1; +} + +// Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. +message Components { + SchemasOrReferences schemas = 1; + ResponsesOrReferences responses = 2; + ParametersOrReferences parameters = 3; + ExamplesOrReferences examples = 4; + RequestBodiesOrReferences request_bodies = 5; + HeadersOrReferences headers = 6; + SecuritySchemesOrReferences security_schemes = 7; + LinksOrReferences links = 8; + CallbacksOrReferences callbacks = 9; + repeated NamedAny specification_extension = 10; +} + +// Contact information for the exposed API. +message Contact { + string name = 1; + string url = 2; + string email = 3; + repeated NamedAny specification_extension = 4; +} + +message DefaultType { + oneof oneof { + double number = 1; + bool boolean = 2; + string string = 3; + } +} + +// When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered. +message Discriminator { + string property_name = 1; + Strings mapping = 2; +} + +message Document { + string openapi = 1; + Info info = 2; + repeated Server servers = 3; + Paths paths = 4; + Components components = 5; + repeated SecurityRequirement security = 6; + repeated Tag tags = 7; + ExternalDocs external_docs = 8; + repeated NamedAny specification_extension = 9; +} + +// A single encoding definition applied to a single schema property. +message Encoding { + string content_type = 1; + HeadersOrReferences headers = 2; + string style = 3; + bool explode = 4; + bool allow_reserved = 5; + repeated NamedAny specification_extension = 6; +} + +message Encodings { + repeated NamedEncoding additional_properties = 1; +} + +message Example { + string summary = 1; + string description = 2; + Any value = 3; + string external_value = 4; + repeated NamedAny specification_extension = 5; +} + +message ExampleOrReference { + oneof oneof { + Example example = 1; + Reference reference = 2; + } +} + +message Examples { +} + +message ExamplesOrReferences { + repeated NamedExampleOrReference additional_properties = 1; +} + +message Expression { + repeated NamedAny additional_properties = 1; +} + +// Allows referencing an external resource for extended documentation. +message ExternalDocs { + string description = 1; + string url = 2; + repeated NamedAny specification_extension = 3; +} + +// The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`). +message Header { + string description = 1; + bool required = 2; + bool deprecated = 3; + bool allow_empty_value = 4; + string style = 5; + bool explode = 6; + bool allow_reserved = 7; + SchemaOrReference schema = 8; + Any example = 9; + ExamplesOrReferences examples = 10; + MediaTypes content = 11; + repeated NamedAny specification_extension = 12; +} + +message HeaderOrReference { + oneof oneof { + Header header = 1; + Reference reference = 2; + } +} + +message HeadersOrReferences { + repeated NamedHeaderOrReference additional_properties = 1; +} + +// The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience. +message Info { + string title = 1; + string description = 2; + string terms_of_service = 3; + Contact contact = 4; + License license = 5; + string version = 6; + repeated NamedAny specification_extension = 7; +} + +message ItemsItem { + repeated SchemaOrReference schema_or_reference = 1; +} + +// License information for the exposed API. +message License { + string name = 1; + string url = 2; + repeated NamedAny specification_extension = 3; +} + +// The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation. +message Link { + string operation_ref = 1; + string operation_id = 2; + AnysOrExpressions parameters = 3; + AnyOrExpression request_body = 4; + string description = 5; + Server server = 6; + repeated NamedAny specification_extension = 7; +} + +message LinkOrReference { + oneof oneof { + Link link = 1; + Reference reference = 2; + } +} + +message LinksOrReferences { + repeated NamedLinkOrReference additional_properties = 1; +} + +// Each Media Type Object provides schema and examples for the media type identified by its key. +message MediaType { + SchemaOrReference schema = 1; + Any example = 2; + ExamplesOrReferences examples = 3; + Encodings encoding = 4; + repeated NamedAny specification_extension = 5; +} + +message MediaTypes { + repeated NamedMediaType additional_properties = 1; +} + +// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +message NamedAny { + // Map key + string name = 1; + // Mapped value + Any value = 2; +} + +// Automatically-generated message used to represent maps of AnyOrExpression as ordered (name,value) pairs. +message NamedAnyOrExpression { + // Map key + string name = 1; + // Mapped value + AnyOrExpression value = 2; +} + +// Automatically-generated message used to represent maps of CallbackOrReference as ordered (name,value) pairs. +message NamedCallbackOrReference { + // Map key + string name = 1; + // Mapped value + CallbackOrReference value = 2; +} + +// Automatically-generated message used to represent maps of Encoding as ordered (name,value) pairs. +message NamedEncoding { + // Map key + string name = 1; + // Mapped value + Encoding value = 2; +} + +// Automatically-generated message used to represent maps of ExampleOrReference as ordered (name,value) pairs. +message NamedExampleOrReference { + // Map key + string name = 1; + // Mapped value + ExampleOrReference value = 2; +} + +// Automatically-generated message used to represent maps of HeaderOrReference as ordered (name,value) pairs. +message NamedHeaderOrReference { + // Map key + string name = 1; + // Mapped value + HeaderOrReference value = 2; +} + +// Automatically-generated message used to represent maps of LinkOrReference as ordered (name,value) pairs. +message NamedLinkOrReference { + // Map key + string name = 1; + // Mapped value + LinkOrReference value = 2; +} + +// Automatically-generated message used to represent maps of MediaType as ordered (name,value) pairs. +message NamedMediaType { + // Map key + string name = 1; + // Mapped value + MediaType value = 2; +} + +// Automatically-generated message used to represent maps of ParameterOrReference as ordered (name,value) pairs. +message NamedParameterOrReference { + // Map key + string name = 1; + // Mapped value + ParameterOrReference value = 2; +} + +// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +message NamedPathItem { + // Map key + string name = 1; + // Mapped value + PathItem value = 2; +} + +// Automatically-generated message used to represent maps of RequestBodyOrReference as ordered (name,value) pairs. +message NamedRequestBodyOrReference { + // Map key + string name = 1; + // Mapped value + RequestBodyOrReference value = 2; +} + +// Automatically-generated message used to represent maps of ResponseOrReference as ordered (name,value) pairs. +message NamedResponseOrReference { + // Map key + string name = 1; + // Mapped value + ResponseOrReference value = 2; +} + +// Automatically-generated message used to represent maps of SchemaOrReference as ordered (name,value) pairs. +message NamedSchemaOrReference { + // Map key + string name = 1; + // Mapped value + SchemaOrReference value = 2; +} + +// Automatically-generated message used to represent maps of SecuritySchemeOrReference as ordered (name,value) pairs. +message NamedSecuritySchemeOrReference { + // Map key + string name = 1; + // Mapped value + SecuritySchemeOrReference value = 2; +} + +// Automatically-generated message used to represent maps of ServerVariable as ordered (name,value) pairs. +message NamedServerVariable { + // Map key + string name = 1; + // Mapped value + ServerVariable value = 2; +} + +// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +message NamedString { + // Map key + string name = 1; + // Mapped value + string value = 2; +} + +// Configuration details for a supported OAuth Flow +message OauthFlow { + string authorization_url = 1; + string token_url = 2; + string refresh_url = 3; + Strings scopes = 4; + repeated NamedAny specification_extension = 5; +} + +// Allows configuration of the supported OAuth Flows. +message OauthFlows { + OauthFlow implicit = 1; + OauthFlow password = 2; + OauthFlow client_credentials = 3; + OauthFlow authorization_code = 4; + repeated NamedAny specification_extension = 5; +} + +message Object { + repeated NamedAny additional_properties = 1; +} + +// Describes a single API operation on a path. +message Operation { + repeated string tags = 1; + string summary = 2; + string description = 3; + ExternalDocs external_docs = 4; + string operation_id = 5; + repeated ParameterOrReference parameters = 6; + RequestBodyOrReference request_body = 7; + Responses responses = 8; + CallbacksOrReferences callbacks = 9; + bool deprecated = 10; + repeated SecurityRequirement security = 11; + repeated Server servers = 12; + repeated NamedAny specification_extension = 13; +} + +// Describes a single operation parameter. A unique parameter is defined by a combination of a name and location. +message Parameter { + string name = 1; + string in = 2; + string description = 3; + bool required = 4; + bool deprecated = 5; + bool allow_empty_value = 6; + string style = 7; + bool explode = 8; + bool allow_reserved = 9; + SchemaOrReference schema = 10; + Any example = 11; + ExamplesOrReferences examples = 12; + MediaTypes content = 13; + repeated NamedAny specification_extension = 14; +} + +message ParameterOrReference { + oneof oneof { + Parameter parameter = 1; + Reference reference = 2; + } +} + +message ParametersOrReferences { + repeated NamedParameterOrReference additional_properties = 1; +} + +// Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available. +message PathItem { + string _ref = 1; + string summary = 2; + string description = 3; + Operation get = 4; + Operation put = 5; + Operation post = 6; + Operation delete = 7; + Operation options = 8; + Operation head = 9; + Operation patch = 10; + Operation trace = 11; + repeated Server servers = 12; + repeated ParameterOrReference parameters = 13; + repeated NamedAny specification_extension = 14; +} + +// Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints. +message Paths { + repeated NamedPathItem path = 1; + repeated NamedAny specification_extension = 2; +} + +message Properties { + repeated NamedSchemaOrReference additional_properties = 1; +} + +// A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification. +message Reference { + string _ref = 1; +} + +message RequestBodiesOrReferences { + repeated NamedRequestBodyOrReference additional_properties = 1; +} + +// Describes a single request body. +message RequestBody { + string description = 1; + MediaTypes content = 2; + bool required = 3; + repeated NamedAny specification_extension = 4; +} + +message RequestBodyOrReference { + oneof oneof { + RequestBody request_body = 1; + Reference reference = 2; + } +} + +// Describes a single response from an API Operation, including design-time, static `links` to operations based on the response. +message Response { + string description = 1; + HeadersOrReferences headers = 2; + MediaTypes content = 3; + LinksOrReferences links = 4; + repeated NamedAny specification_extension = 5; +} + +message ResponseOrReference { + oneof oneof { + Response response = 1; + Reference reference = 2; + } +} + +// A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as 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. +message Responses { + ResponseOrReference default = 1; + repeated NamedResponseOrReference response_or_reference = 2; + repeated NamedAny specification_extension = 3; +} + +message ResponsesOrReferences { + repeated NamedResponseOrReference additional_properties = 1; +} + +// 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 an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema. +message Schema { + bool nullable = 1; + Discriminator discriminator = 2; + bool read_only = 3; + bool write_only = 4; + Xml xml = 5; + ExternalDocs external_docs = 6; + Any example = 7; + bool deprecated = 8; + string title = 9; + double multiple_of = 10; + double maximum = 11; + bool exclusive_maximum = 12; + double minimum = 13; + bool exclusive_minimum = 14; + int64 max_length = 15; + int64 min_length = 16; + string pattern = 17; + int64 max_items = 18; + int64 min_items = 19; + bool unique_items = 20; + int64 max_properties = 21; + int64 min_properties = 22; + repeated string required = 23; + repeated Any enum = 24; + string type = 25; + repeated SchemaOrReference all_of = 26; + repeated SchemaOrReference one_of = 27; + repeated SchemaOrReference any_of = 28; + Schema not = 29; + ItemsItem items = 30; + Properties properties = 31; + AdditionalPropertiesItem additional_properties = 32; + DefaultType default = 33; + string description = 34; + string format = 35; + repeated NamedAny specification_extension = 36; +} + +message SchemaOrReference { + oneof oneof { + Schema schema = 1; + Reference reference = 2; + } +} + +message SchemasOrReferences { + repeated NamedSchemaOrReference additional_properties = 1; +} + +// Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the Open API object or Operation Object, only one of Security Requirement Objects in the list needs to be satisfied to authorize the request. +message SecurityRequirement { +} + +// Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect Discovery. +message SecurityScheme { + string type = 1; + string description = 2; + string name = 3; + string in = 4; + string scheme = 5; + string bearer_format = 6; + OauthFlows flows = 7; + string open_id_connect_url = 8; + repeated NamedAny specification_extension = 9; +} + +message SecuritySchemeOrReference { + oneof oneof { + SecurityScheme security_scheme = 1; + Reference reference = 2; + } +} + +message SecuritySchemesOrReferences { + repeated NamedSecuritySchemeOrReference additional_properties = 1; +} + +// An object representing a Server. +message Server { + string url = 1; + string description = 2; + ServerVariables variables = 3; + repeated NamedAny specification_extension = 4; +} + +// An object representing a Server Variable for server URL template substitution. +message ServerVariable { + repeated string enum = 1; + string default = 2; + string description = 3; + repeated NamedAny specification_extension = 4; +} + +message ServerVariables { + repeated NamedServerVariable additional_properties = 1; +} + +// Any property starting with x- is valid. +message SpecificationExtension { + oneof oneof { + double number = 1; + bool boolean = 2; + string string = 3; + } +} + +message StringArray { + repeated string value = 1; +} + +message Strings { + repeated NamedString additional_properties = 1; +} + +// Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances. +message Tag { + string name = 1; + string description = 2; + ExternalDocs external_docs = 3; + repeated NamedAny specification_extension = 4; +} + +// A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior. +message Xml { + string name = 1; + string namespace = 2; + string prefix = 3; + bool attribute = 4; + bool wrapped = 5; + repeated NamedAny specification_extension = 6; +} + diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/README.md b/vendor/github.com/googleapis/gnostic/OpenAPIv3/README.md new file mode 100644 index 0000000000..987822e8b5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/README.md @@ -0,0 +1,25 @@ +# OpenAPI v3 Protocol Buffer Models + +This directory contains a Protocol Buffer-language model +and related code for supporting OpenAPI v3. + +Gnostic applications and plugins can use OpenAPIv3.proto +to generate Protocol Buffer support code for their preferred +languages. + +OpenAPIv3.go is used by Gnostic to read JSON and YAML OpenAPI +descriptions into the Protocol Buffer-based datastructures +generated from OpenAPIv3.proto. + +OpenAPIv3.proto and OpenAPIv3.go are generated by the Gnostic +compiler generator, and OpenAPIv3.pb.go is generated by +protoc, the Protocol Buffer compiler, and protoc-gen-go, the +Protocol Buffer Go code generation plugin. + +openapi-3.0.json is a preliminary draft JSON schema for OpenAPI 3.0. +It is not the official OpenAPI 3.0 JSON Schema, which at the time +of this commit, does not exist. + +The schema-generator directory contains support code which +generates openapi-3.0.json from a draft of the OpenAPI 3.0 +specification document (Markdown). diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/openapi-3.0.json b/vendor/github.com/googleapis/gnostic/OpenAPIv3/openapi-3.0.json new file mode 100644 index 0000000000..c15fc2e5bd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/openapi-3.0.json @@ -0,0 +1,1248 @@ +{ + "title": "A JSON Schema for OpenAPI 3.0.", + "id": "http://openapis.org/v3/schema.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "description": "This is the root document object of the OpenAPI document.", + "required": [ + "openapi", + "info", + "paths" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "$ref": "#/definitions/info" + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + }, + "paths": { + "$ref": "#/definitions/paths" + }, + "components": { + "$ref": "#/definitions/components" + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/tag" + }, + "uniqueItems": true + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + }, + "definitions": { + "info": { + "type": "object", + "description": "The object provides metadata about the API. The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience.", + "required": [ + "title", + "version" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string" + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "license": { + "$ref": "#/definitions/license" + }, + "version": { + "type": "string" + } + } + }, + "contact": { + "type": "object", + "description": "Contact information for the exposed API.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "license": { + "type": "object", + "description": "License information for the exposed API.", + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "server": { + "type": "object", + "description": "An object representing a Server.", + "required": [ + "url" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "url": { + "type": "string" + }, + "description": { + "type": "string" + }, + "variables": { + "$ref": "#/definitions/serverVariables" + } + } + }, + "serverVariable": { + "type": "object", + "description": "An object representing a Server Variable for server URL template substitution.", + "required": [ + "default" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "enum": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "default": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "components": { + "type": "object", + "description": "Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "schemas": { + "$ref": "#/definitions/schemasOrReferences" + }, + "responses": { + "$ref": "#/definitions/responsesOrReferences" + }, + "parameters": { + "$ref": "#/definitions/parametersOrReferences" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "requestBodies": { + "$ref": "#/definitions/requestBodiesOrReferences" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "securitySchemes": { + "$ref": "#/definitions/securitySchemesOrReferences" + }, + "links": { + "$ref": "#/definitions/linksOrReferences" + }, + "callbacks": { + "$ref": "#/definitions/callbacksOrReferences" + } + } + }, + "paths": { + "type": "object", + "description": "Holds the relative paths to the individual endpoints and their operations. The path is appended to the URL from the `Server Object` in order to construct the full URL. The Paths MAY be empty, due to ACL constraints.", + "additionalProperties": false, + "patternProperties": { + "^/": { + "$ref": "#/definitions/pathItem" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + } + }, + "pathItem": { + "type": "object", + "description": "Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "$ref": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "get": { + "$ref": "#/definitions/operation" + }, + "put": { + "$ref": "#/definitions/operation" + }, + "post": { + "$ref": "#/definitions/operation" + }, + "delete": { + "$ref": "#/definitions/operation" + }, + "options": { + "$ref": "#/definitions/operation" + }, + "head": { + "$ref": "#/definitions/operation" + }, + "patch": { + "$ref": "#/definitions/operation" + }, + "trace": { + "$ref": "#/definitions/operation" + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameterOrReference" + }, + "uniqueItems": true + } + } + }, + "operation": { + "type": "object", + "description": "Describes a single API operation on a path.", + "required": [ + "responses" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "operationId": { + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/parameterOrReference" + }, + "uniqueItems": true + }, + "requestBody": { + "$ref": "#/definitions/requestBodyOrReference" + }, + "responses": { + "$ref": "#/definitions/responses" + }, + "callbacks": { + "$ref": "#/definitions/callbacksOrReferences" + }, + "deprecated": { + "type": "boolean" + }, + "security": { + "type": "array", + "items": { + "$ref": "#/definitions/securityRequirement" + }, + "uniqueItems": true + }, + "servers": { + "type": "array", + "items": { + "$ref": "#/definitions/server" + }, + "uniqueItems": true + } + } + }, + "externalDocs": { + "type": "object", + "description": "Allows referencing an external resource for extended documentation.", + "required": [ + "url" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "parameter": { + "type": "object", + "description": "Describes a single operation parameter. A unique parameter is defined by a combination of a name and location.", + "required": [ + "name", + "in" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "in": { + "type": "string" + }, + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + }, + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + } + } + }, + "requestBody": { + "type": "object", + "description": "Describes a single request body.", + "required": [ + "content" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + }, + "required": { + "type": "boolean" + } + } + }, + "mediaType": { + "type": "object", + "description": "Each Media Type Object provides schema and examples for the media type identified by its key.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "encoding": { + "$ref": "#/definitions/encodings" + } + } + }, + "encoding": { + "type": "object", + "description": "A single encoding definition applied to a single schema property.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "contentType": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + } + } + }, + "responses": { + "type": "object", + "description": "A container for the expected responses of an operation. The container maps a HTTP response code to the expected response. The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. However, documentation is expected to cover a successful operation response and any known errors. The `default` MAY be used as 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.", + "additionalProperties": false, + "patternProperties": { + "^([0-9X]{3})$": { + "$ref": "#/definitions/responseOrReference" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "default": { + "$ref": "#/definitions/responseOrReference" + } + } + }, + "response": { + "type": "object", + "description": "Describes a single response from an API Operation, including design-time, static `links` to operations based on the response.", + "required": [ + "description" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "headers": { + "$ref": "#/definitions/headersOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + }, + "links": { + "$ref": "#/definitions/linksOrReferences" + } + } + }, + "callback": { + "type": "object", + "description": "A map of possible out-of band callbacks related to the parent operation. Each value in the map is a Path Item Object that describes a set of requests that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation.", + "additionalProperties": false, + "patternProperties": { + "^": { + "$ref": "#/definitions/pathItem" + }, + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + } + }, + "example": { + "type": "object", + "description": "", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/any" + }, + "externalValue": { + "type": "string" + } + } + }, + "link": { + "type": "object", + "description": "The `Link object` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a runtime expression is used for accessing values in an operation and using them as parameters while invoking the linked operation.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "operationRef": { + "type": "string" + }, + "operationId": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/anysOrExpressions" + }, + "requestBody": { + "$ref": "#/definitions/anyOrExpression" + }, + "description": { + "type": "string" + }, + "server": { + "$ref": "#/definitions/server" + } + } + }, + "header": { + "type": "object", + "description": "The Header Object follows the structure of the Parameter Object with the following changes: 1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. 1. `in` MUST NOT be specified, it is implicitly in `header`. 1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, `style`).", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "allowEmptyValue": { + "type": "boolean" + }, + "style": { + "type": "string" + }, + "explode": { + "type": "boolean" + }, + "allowReserved": { + "type": "boolean" + }, + "schema": { + "$ref": "#/definitions/schemaOrReference" + }, + "example": { + "$ref": "#/definitions/any" + }, + "examples": { + "$ref": "#/definitions/examplesOrReferences" + }, + "content": { + "$ref": "#/definitions/mediaTypes" + } + } + }, + "tag": { + "type": "object", + "description": "Adds metadata to a single tag that is used by the Operation Object. It is not mandatory to have a Tag Object per tag defined in the Operation Object instances.", + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + } + } + }, + "examples": { + "type": "object", + "description": "", + "additionalProperties": false + }, + "reference": { + "type": "object", + "description": "A simple object to allow referencing other components in the specification, internally and externally. The Reference Object is defined by JSON Reference and follows the same structure, behavior and rules. For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification.", + "required": [ + "$ref" + ], + "additionalProperties": false, + "properties": { + "$ref": { + "type": "string" + } + } + }, + "schema": { + "type": "object", + "description": "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 an extended subset of the JSON Schema Specification Wright Draft 00. For more information about the properties, see JSON Schema Core and JSON Schema Validation. Unless stated otherwise, the property definitions follow the JSON Schema.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "nullable": { + "type": "boolean" + }, + "discriminator": { + "$ref": "#/definitions/discriminator" + }, + "readOnly": { + "type": "boolean" + }, + "writeOnly": { + "type": "boolean" + }, + "xml": { + "$ref": "#/definitions/xml" + }, + "externalDocs": { + "$ref": "#/definitions/externalDocs" + }, + "example": { + "$ref": "#/definitions/any" + }, + "deprecated": { + "type": "boolean" + }, + "title": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/title" + }, + "multipleOf": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" + }, + "maximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" + }, + "exclusiveMaximum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" + }, + "minimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" + }, + "exclusiveMinimum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" + }, + "maxLength": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxLength" + }, + "minLength": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minLength" + }, + "pattern": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" + }, + "maxItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxItems" + }, + "minItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minItems" + }, + "uniqueItems": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" + }, + "maxProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/maxProperties" + }, + "minProperties": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/minProperties" + }, + "required": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/required" + }, + "enum": { + "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" + }, + "type": { + "type": "string" + }, + "allOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "oneOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "anyOf": { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + }, + "not": { + "$ref": "#/definitions/schema" + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/schemaOrReference" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/schemaOrReference" + }, + "minItems": 1 + } + ] + }, + "properties": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schemaOrReference" + } + }, + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/definitions/schemaOrReference" + }, + { + "type": "boolean" + } + ] + }, + "default": { + "$ref": "#/definitions/defaultType" + }, + "description": { + "type": "string" + }, + "format": { + "type": "string" + } + } + }, + "discriminator": { + "type": "object", + "description": "When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. When using the discriminator, _inline_ schemas will not be considered.", + "required": [ + "propertyName" + ], + "additionalProperties": false, + "properties": { + "propertyName": { + "type": "string" + }, + "mapping": { + "$ref": "#/definitions/strings" + } + } + }, + "xml": { + "type": "object", + "description": "A metadata object that allows for more fine-tuned XML model definitions. When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. See examples for expected behavior.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "attribute": { + "type": "boolean" + }, + "wrapped": { + "type": "boolean" + } + } + }, + "securityScheme": { + "type": "object", + "description": "Defines a security scheme that can be used by the operations. Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and OpenID Connect Discovery.", + "required": [ + "type" + ], + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "in": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "bearerFormat": { + "type": "string" + }, + "flows": { + "$ref": "#/definitions/oauthFlows" + }, + "openIdConnectUrl": { + "type": "string" + } + } + }, + "oauthFlows": { + "type": "object", + "description": "Allows configuration of the supported OAuth Flows.", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "implicit": { + "$ref": "#/definitions/oauthFlow" + }, + "password": { + "$ref": "#/definitions/oauthFlow" + }, + "clientCredentials": { + "$ref": "#/definitions/oauthFlow" + }, + "authorizationCode": { + "$ref": "#/definitions/oauthFlow" + } + } + }, + "oauthFlow": { + "type": "object", + "description": "Configuration details for a supported OAuth Flow", + "additionalProperties": false, + "patternProperties": { + "^x-": { + "$ref": "#/definitions/specificationExtension" + } + }, + "properties": { + "authorizationUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "refreshUrl": { + "type": "string" + }, + "scopes": { + "$ref": "#/definitions/strings" + } + } + }, + "securityRequirement": { + "type": "object", + "description": "Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the Security Schemes under the Components Object. Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. When a list of Security Requirement Objects is defined on the Open API object or Operation Object, only one of Security Requirement Objects in the list needs to be satisfied to authorize the request.", + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9\\.\\-_]+$": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + } + }, + "anyOrExpression": { + "oneOf": [ + { + "$ref": "#/definitions/any" + }, + { + "$ref": "#/definitions/expression" + } + ] + }, + "callbackOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/callback" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "exampleOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/example" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "headerOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/header" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "linkOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/link" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "parameterOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/parameter" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "requestBodyOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/requestBody" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "responseOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/response" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "schemaOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "securitySchemeOrReference": { + "oneOf": [ + { + "$ref": "#/definitions/securityScheme" + }, + { + "$ref": "#/definitions/reference" + } + ] + }, + "anysOrExpressions": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/anyOrExpression" + } + }, + "callbacksOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/callbackOrReference" + } + }, + "encodings": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/encoding" + } + }, + "examplesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/exampleOrReference" + } + }, + "headersOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/headerOrReference" + } + }, + "linksOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/linkOrReference" + } + }, + "mediaTypes": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/mediaType" + } + }, + "parametersOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/parameterOrReference" + } + }, + "requestBodiesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/requestBodyOrReference" + } + }, + "responsesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/responseOrReference" + } + }, + "schemasOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/schemaOrReference" + } + }, + "securitySchemesOrReferences": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/securitySchemeOrReference" + } + }, + "serverVariables": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/serverVariable" + } + }, + "strings": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "object": { + "type": "object", + "additionalProperties": true + }, + "any": { + "additionalProperties": true + }, + "expression": { + "type": "object", + "additionalProperties": true + }, + "specificationExtension": { + "description": "Any property starting with x- is valid.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "array" + } + ] + }, + "defaultType": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "array" + }, + { + "type": "object" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + } + ] + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/3.0.md b/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/3.0.md new file mode 100644 index 0000000000..30a041ad84 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/3.0.md @@ -0,0 +1,3441 @@ +# OpenAPI Specification + +#### Version 3.0.0 + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [BCP 14](https://tools.ietf.org/html/bcp14) [RFC2119](https://tools.ietf.org/html/rfc2119) [RFC8174](https://tools.ietf.org/html/rfc8174) when, and only when, they appear in all capitals, as shown here. + +This document is licensed under [The Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). + +## Introduction + +The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. + +An OpenAPI definition can then be used by documentation generation tools to display the API, code generation tools to generate servers and clients in various programming languages, testing tools, and many other use cases. + +## Table of Contents + + +- [Definitions](#definitions) + - [OpenAPI Document](#oasDocument) + - [Path Templating](#pathTemplating) + - [Media Types](#mediaTypes) + - [HTTP Status Codes](#httpCodes) +- [Specification](#specification) + - [Versions](#versions) + - [Format](#format) + - [Document Structure](#documentStructure) + - [Data Types](#dataTypes) + - [Rich Text Formatting](#richText) + - [Relative References In URLs](#relativeReferences) + - [Schema](#schema) + - [OpenAPI Object](#oasObject) + - [Info Object](#infoObject) + - [Contact Object](#contactObject) + - [License Object](#licenseObject) + - [Server Object](#serverObject) + - [Server Variable Object](#serverVariableObject) + - [Components Object](#componentsObject) + - [Paths Object](#pathsObject) + - [Path Item Object](#pathItemObject) + - [Operation Object](#operationObject) + - [External Documentation Object](#externalDocumentationObject) + - [Parameter Object](#parameterObject) + - [Request Body Object](#requestBodyObject) + - [Media Type Object](#mediaTypeObject) + - [Encoding Object](#encodingObject) + - [Responses Object](#responsesObject) + - [Response Object](#responseObject) + - [Callback Object](#callbackObject) + - [Example Object](#exampleObject) + - [Link Object](#linkObject) + - [Header Object](#headerObject) + - [Tag Object](#tagObject) + - [Reference Object](#referenceObject) + - [Schema Object](#schemaObject) + - [Discriminator Object](#discriminatorObject) + - [XML Object](#xmlObject) + - [Security Scheme Object](#securitySchemeObject) + - [OAuth Flows Object](#oauthFlowsObject) + - [OAuth Flow Object](#oauthFlowObject) + - [Security Requirement Object](#securityRequirementObject) + - [Specification Extensions](#specificationExtensions) + - [Security Filtering](#securityFiltering) +- [Appendix A: Revision History](#revisionHistory) + + + + +## Definitions + +##### OpenAPI Document +A document (or set of documents) that defines or describes an API. An OpenAPI definition uses and conforms to the OpenAPI Specification. + +##### Path Templating +Path templating refers to the usage of curly braces ({}) to mark a section of a URL path as replaceable using path parameters. + +##### Media Types +Media type definitions are spread across several resources. +The media type definitions SHOULD be in compliance with [RFC6838](http://tools.ietf.org/html/rfc6838). + +Some examples of possible media type definitions: +``` + text/plain; charset=utf-8 + application/json + application/vnd.github+json + application/vnd.github.v3+json + application/vnd.github.v3.raw+json + application/vnd.github.v3.text+json + application/vnd.github.v3.html+json + application/vnd.github.v3.full+json + application/vnd.github.v3.diff + application/vnd.github.v3.patch +``` +##### HTTP Status Codes +The HTTP Status Codes are used to indicate the status of the executed operation. +The available status codes are defined by [RFC7231](http://tools.ietf.org/html/rfc7231#section-6) and registered status codes are listed in the [IANA Status Code Registry](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml). + +## Specification + +### Versions + +The OpenAPI Specification is versioned using [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) (semver) and follows the semver specification. + +The `major`.`minor` portion of the semver (for example `3.0`) SHALL designate the OAS feature set. Typically, *`.patch`* versions address errors in this document, not the feature set. Tooling which supports OAS 3.0 SHOULD be compatible with all OAS 3.0.\* versions. The patch version SHOULD NOT be considered by tooling, making no distinction between `3.0.0` and `3.0.1` for example. + +Subsequent minor version releases of the OpenAPI Specification (incrementing the `minor` version number) SHOULD NOT interfere with tooling developed to a lower minor version and same major version. Thus a hypothetical `3.1.0` specification SHOULD be usable with tooling designed for `3.0.0`. + +An OpenAPI document compatible with OAS 3.\*.\* contains a required [`openapi`](#oasVersion) field which designates the semantic version of the OAS that it uses. (OAS 2.0 documents contain a top-level version field named [`swagger`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swaggerObject) and value `"2.0"`.) + +### Format + +An OpenAPI document that conforms to the OpenAPI Specification is itself a JSON object, which may be represented either in JSON or YAML format. + +For example, if a field has an array value, the JSON array representation will be used: + +```json +{ + "field": [ 1, 2, 3 ] +} +``` +All field names in the specification are **case sensitive**. + +The schema exposes two types of fields: Fixed fields, which have a declared name, and Patterned fields, which declare a regex pattern for the field name. + +Patterned fields MUST have unique names within the containing object. + +In order to preserve the ability to round-trip between YAML and JSON formats, YAML version [1.2](http://www.yaml.org/spec/1.2/spec.html) is RECOMMENDED along with some additional constraints: + +- Tags MUST be limited to those allowed by the [JSON Schema ruleset](http://www.yaml.org/spec/1.2/spec.html#id2803231). +- Keys used in YAML maps MUST be limited to a scalar string, as defined by the [YAML Failsafe schema ruleset](http://yaml.org/spec/1.2/spec.html#id2802346). + +**Note:** While APIs may be defined by OpenAPI documents in either YAML or JSON format, the API request and response bodies and other content are not required to be JSON or YAML. + +### Document Structure + +An OpenAPI document MAY be made up of a single document or be divided into multiple, connected parts at the discretion of the user. In the latter case, `$ref` fields MUST be used in the specification to reference those parts as follows from the [JSON Schema](http://json-schema.org) definitions. + +It is RECOMMENDED that the root OpenAPI document be named: `openapi.json` or `openapi.yaml`. + +### Data Types + +Primitive data types in the OAS are based on the types supported by the [JSON Schema Specification Wright Draft 00](https://tools.ietf.org/html/draft-wright-json-schema-00#section-4.2). +Note that `integer` as a type is also supported and is defined as a JSON number without a fraction or exponent part. +`null` is not supported as a type (see [`nullable`](#schemaNullable) for an alternative solution). +Models are defined using the [Schema Object](#schemaObject), which is an extended subset of JSON Schema Specification Wright Draft 00. + +Primitives have an optional modifier property: `format`. +OAS uses several known formats to define in fine detail the data type being used. +However, to support documentation needs, the `format` property is an open `string`-valued property, and can have any value. +Formats such as `"email"`, `"uuid"`, and so on, MAY be used even though undefined by this specification. +Types that are not accompanied by a `format` property follow the type definition in the JSON Schema. Tools that do not recognize a specific `format` MAY default back to the `type` alone, as if the `format` is not specified. + +The formats defined by the OAS are: + +Common Name | [`type`](#dataTypes) | [`format`](#dataTypeFormat) | Comments +----------- | ------ | -------- | -------- +integer | `integer` | `int32` | signed 32 bits +long | `integer` | `int64` | signed 64 bits +float | `number` | `float` | | +double | `number` | `double` | | +string | `string` | | | +byte | `string` | `byte` | base64 encoded characters +binary | `string` | `binary` | any sequence of octets +boolean | `boolean` | | | +date | `string` | `date` | As defined by `full-date` - [RFC3339](http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14) +dateTime | `string` | `date-time` | As defined by `date-time` - [RFC3339](http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14) +password | `string` | `password` | A hint to UIs to obscure input. + +### Rich Text Formatting +Throughout the specification `description` fields are noted as supporting CommonMark markdown formatting. +Where OpenAPI tooling renders rich text it MUST support, at a minimum, markdown syntax as described by [CommonMark 0.27](http://spec.commonmark.org/0.27/). Tooling MAY choose to ignore some CommonMark features to address security concerns. + +### Relative References in URLs + +Unless specified otherwise, all properties that are URLs MAY be relative references as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-4.2). +Relative references are resolved using the URLs defined in the [`Server Object`](#serverObject) as a Base URI. + +Relative references used in `$ref` are processed as per [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03), using the URL of the current document as the base URI. See also the [Reference Object](#referenceObject). + +### Schema + +In the following description, if a field is not explicitly **REQUIRED** or described with a MUST or SHALL, it can be considered OPTIONAL. + +#### OpenAPI Object + +This is the root document object of the [OpenAPI document](#oasDocument). + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +openapi | `string` | **REQUIRED**. This string MUST be the [semantic version number](http://semver.org/spec/v2.0.0.html) of the [OpenAPI Specification version](#versions) that the OpenAPI document uses. The `openapi` field SHOULD be used by tooling specifications and clients to interpret the OpenAPI document. This is *not* related to the API [`info.version`](#infoVersion) string. +info | [Info Object](#infoObject) | **REQUIRED**. Provides metadata about the API. The metadata MAY be used by tooling as required. +servers | [[Server Object](#serverObject)] | An array of Server Objects, which provide connectivity information to a target server. If the `servers` property is not provided, or is an empty array, the default value would be a [Server Object](#serverObject) with a [url](#serverUrl) value of `/`. +paths | [Paths Object](#pathsObject) | **REQUIRED**. The available paths and operations for the API. +components | [Components Object](#componentsObject) | An element to hold various schemas for the specification. +security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used across the API. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a request. Individual operations can override this definition. +tags | [[Tag Object](#tagObject)] | A list of tags used by the specification with additional metadata. The order of the tags can be used to reflect on their order by the parsing tools. Not all tags that are used by the [Operation Object](#operationObject) must be declared. The tags that are not declared MAY be organized randomly or based on the tools' logic. Each tag name in the list MUST be unique. +externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +#### Info Object + +The object provides metadata about the API. +The metadata MAY be used by the clients if needed, and MAY be presented in editing or documentation generation tools for convenience. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +title | `string` | **REQUIRED**. The title of the application. +description | `string` | A short description of the application. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +termsOfService | `string` | A URL to the Terms of Service for the API. MUST be in the format of a URL. +contact | [Contact Object](#contactObject) | The contact information for the exposed API. +license | [License Object](#licenseObject) | The license information for the exposed API. +version | `string` | **REQUIRED**. The version of the OpenAPI document (which is distinct from the [OpenAPI Specification version](#oasVersion) or the API implementation version). + + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Info Object Example: + +```json +{ + "title": "Sample Pet Store App", + "description": "This is a sample server for a pet store.", + "termsOfService": "http://example.com/terms/", + "contact": { + "name": "API Support", + "url": "http://www.example.com/support", + "email": "support@example.com" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "1.0.1" +} +``` + +```yaml +title: Sample Pet Store App +description: This is a sample server for a pet store. +termsOfService: http://example.com/terms/ +contact: + name: API Support + url: http://www.example.com/support + email: support@example.com +license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html +version: 1.0.1 +``` + +#### Contact Object + +Contact information for the exposed API. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +name | `string` | The identifying name of the contact person/organization. +url | `string` | The URL pointing to the contact information. MUST be in the format of a URL. +email | `string` | The email address of the contact person/organization. MUST be in the format of an email address. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Contact Object Example: + +```json +{ + "name": "API Support", + "url": "http://www.example.com/support", + "email": "support@example.com" +} +``` + +```yaml +name: API Support +url: http://www.example.com/support +email: support@example.com +``` + +#### License Object + +License information for the exposed API. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +name | `string` | **REQUIRED**. The license name used for the API. +url | `string` | A URL to the license used for the API. MUST be in the format of a URL. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### License Object Example: + +```json +{ + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" +} +``` + +```yaml +name: Apache 2.0 +url: http://www.apache.org/licenses/LICENSE-2.0.html +``` + +#### Server Object + +An object representing a Server. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +url | `string` | **REQUIRED**. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the OpenAPI document is being served. Variable substitutions will be made when a variable is named in `{`brackets`}`. +description | `string` | An optional string describing the host designated by the URL. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +variables | Map[`string`, [Server Variable Object](#serverVariableObject)] | A map between a variable name and its value. The value is used for substitution in the server's URL template. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Server Object Example + +A single server would be described as: + +```json +{ + "url": "https://development.gigantic-server.com/v1", + "description": "Development server" +} +``` + +```yaml +url: https://development.gigantic-server.com/v1 +description: Development server +``` + +The following shows how multiple servers can be described, for example, at the OpenAPI Object's [`servers`](#oasServers): + +```json +{ + "servers": [ + { + "url": "https://development.gigantic-server.com/v1", + "description": "Development server" + }, + { + "url": "https://staging.gigantic-server.com/v1", + "description": "Staging server" + }, + { + "url": "https://api.gigantic-server.com/v1", + "description": "Production server" + } + ] +} +``` + +```yaml +servers: +- url: https://development.gigantic-server.com/v1 + description: Development server +- url: https://staging.gigantic-server.com/v1 + description: Staging server +- url: https://api.gigantic-server.com/v1 + description: Production server +``` + +The following shows how variables can be used for a server configuration: + +```json +{ + "servers": [ + { + "url": "https://{username}.gigantic-server.com:{port}/{basePath}", + "description": "The production API server", + "variables": { + "username": { + "default": "demo", + "description": "this value is assigned by the service provider, in this example `gigantic-server.com`" + }, + "port": { + "enum": [ + "8443", + "443" + ], + "default": "8443" + }, + "basePath": { + "default": "v2" + } + } + } + ] +} +``` + +```yaml +servers: +- url: https://{username}.gigantic-server.com:{port}/{basePath} + description: The production API server + variables: + username: + # note! no enum here means it is an open value + default: demo + description: this value is assigned by the service provider, in this example `gigantic-server.com` + port: + enum: + - '8443' + - '443' + default: '8443' + basePath: + # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2` + default: v2 +``` + + +#### Server Variable Object + +An object representing a Server Variable for server URL template substitution. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +enum | [`string`] | An enumeration of string values to be used if the substitution options are from a limited set. +default | `string` | **REQUIRED**. The default value to use for substitution, and to send, if an alternate value is _not_ supplied. Unlike the [Schema Object's](#schemaObject) `default`, this value MUST be provided by the consumer. +description | `string` | An optional description for the server variable. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +#### Components Object + +Holds a set of reusable objects for different aspects of the OAS. +All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object. + + +##### Fixed Fields + +Field Name | Type | Description +---|:---|--- + schemas | Map[`string`, [Schema Object](#schemaObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Schema Objects](#schemaObject). + responses | Map[`string`, [Response Object](#responseObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Response Objects](#responseObject). + parameters | Map[`string`, [Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Parameter Objects](#parameterObject). + examples | Map[`string`, [Example Object](#exampleObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Example Objects](#exampleObject). + requestBodies | Map[`string`, [Request Body Object](#requestBodyObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Request Body Objects](#requestBodyObject). + headers | Map[`string`, [Header Object](#headerObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Header Objects](#headerObject). + securitySchemes| Map[`string`, [Security Scheme Object](#securitySchemeObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Security Scheme Objects](#securitySchemeObject). + links | Map[`string`, [Link Object](#linkObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Link Objects](#linkObject). + callbacks | Map[`string`, [Callback Object](#callbackObject) \| [Reference Object](#referenceObject)] | An object to hold reusable [Callback Objects](#callbackObject). + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +All the fixed fields declared above are objects that MUST use keys that match the regular expression: `^[a-zA-Z0-9\.\-_]+$`. + +Field Name Examples: + +``` +User +User_1 +User_Name +user-name +my.org.User +``` + +##### Components Object Example + +```json +"components": { + "schemas": { + "Category": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + } + }, + "Tag": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + } + } + }, + "parameters": { + "skipParam": { + "name": "skip", + "in": "query", + "description": "number of items to skip", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + "limitParam": { + "name": "limit", + "in": "query", + "description": "max records to return", + "required": true, + "schema" : { + "type": "integer", + "format": "int32" + } + } + }, + "responses": { + "NotFound": { + "description": "Entity not found." + }, + "IllegalInput": { + "description": "Illegal input for operation." + }, + "GeneralError": { + "description": "General Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeneralError" + } + } + } + } + }, + "securitySchemes": { + "api_key": { + "type": "apiKey", + "name": "api_key", + "in": "header" + }, + "petstore_auth": { + "type": "oauth2", + "flows": { + "implicit": { + "authorizationUrl": "http://example.org/api/oauth/dialog", + "scopes": { + "write:pets": "modify pets in your account", + "read:pets": "read your pets" + } + } + } + } + } +} +``` + +```yaml +components: + schemas: + Category: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + Tag: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + parameters: + skipParam: + name: skip + in: query + description: number of items to skip + required: true + schema: + type: integer + format: int32 + limitParam: + name: limit + in: query + description: max records to return + required: true + schema: + type: integer + format: int32 + responses: + NotFound: + description: Entity not found. + IllegalInput: + description: Illegal input for operation. + GeneralError: + description: General Error + content: + application/json: + schema: + $ref: '#/components/schemas/GeneralError' + securitySchemes: + api_key: + type: apiKey + name: api_key + in: header + petstore_auth: + type: oauth2 + flows: + implicit: + authorizationUrl: http://example.org/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets +``` + + +#### Paths Object + +Holds the relative paths to the individual endpoints and their operations. +The path is appended to the URL from the [`Server Object`](#serverObject) in order to construct the full URL. The Paths MAY be empty, due to [ACL constraints](#securityFiltering). + +##### Patterned Fields + +Field Pattern | Type | Description +---|:---:|--- +/{path} | [Path Item Object](#pathItemObject) | A relative path to an individual endpoint. The field name MUST begin with a slash. The path is **appended** (no relative URL resolution) to the expanded URL from the [`Server Object`](#serverObject)'s `url` field in order to construct the full URL. [Path templating](#pathTemplating) is allowed. When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts. Templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical. In case of ambiguous matching, it's up to the tooling to decide which one to use. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Path Templating Matching + +Assuming the following paths, the concrete definition, `/pets/mine`, will be matched first if used: + +``` + /pets/{petId} + /pets/mine +``` + +The following paths are considered identical and invalid: + +``` + /pets/{petId} + /pets/{name} +``` + +The following may lead to ambiguous resolution: + +``` + /{entity}/me + /books/{id} +``` + +##### Paths Object Example + +```json +{ + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to", + "responses": { + "200": { + "description": "A list of pets.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/pet" + } + } + } + } + } + } + } + } +} +``` + +```yaml +/pets: + get: + description: Returns all pets from the system that the user has access to + responses: + '200': + description: A list of pets. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/pet' +``` + +#### Path Item Object + +Describes the operations available on a single path. +A Path Item MAY be empty, due to [ACL constraints](#securityFiltering). +The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +$ref | `string` | Allows for an external definition of this path item. The referenced structure MUST be in the format of a [Path Item Object](#pathItemObject). If there are conflicts between the referenced definition and this Path Item's definition, the behavior is *undefined*. +summary| `string` | An optional, string summary, intended to apply to all operations in this path. +description | `string` | An optional, string description, intended to apply to all operations in this path. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +get | [Operation Object](#operationObject) | A definition of a GET operation on this path. +put | [Operation Object](#operationObject) | A definition of a PUT operation on this path. +post | [Operation Object](#operationObject) | A definition of a POST operation on this path. +delete | [Operation Object](#operationObject) | A definition of a DELETE operation on this path. +options | [Operation Object](#operationObject) | A definition of a OPTIONS operation on this path. +head | [Operation Object](#operationObject) | A definition of a HEAD operation on this path. +patch | [Operation Object](#operationObject) | A definition of a PATCH operation on this path. +trace | [Operation Object](#operationObject) | A definition of a TRACE operation on this path. +servers | [[Server Object](#serverObject)] | An alternative `server` array to service all operations in this path. +parameters | [[Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | A list of parameters that are applicable for all the operations described under this path. These parameters can be overridden at the operation level, but cannot be removed there. The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). The list can use the [Reference Object](#referenceObject) to link to parameters that are defined at the [OpenAPI Object's components/parameters](#componentsParameters). + + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Path Item Object Example + +```json +{ + "get": { + "description": "Returns pets based on ID", + "summary": "Find pets by ID", + "operationId": "getPetsById", + "responses": { + "200": { + "description": "pet response", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Pet" + } + } + } + } + }, + "default": { + "description": "error payload", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/ErrorModel" + } + } + } + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to use", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "style": "simple" + } + ] +} +``` + +```yaml +get: + description: Returns pets based on ID + summary: Find pets by ID + operationId: getPetsById + responses: + '200': + description: pet response + content: + '*/*' : + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + default: + description: error payload + content: + 'text/html': + schema: + $ref: '#/components/schemas/ErrorModel' +parameters: +- name: id + in: path + description: ID of pet to use + required: true + schema: + type: array + style: simple + items: + type: string +``` + +#### Operation Object + +Describes a single API operation on a path. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +tags | [`string`] | A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier. +summary | `string` | A short summary of what the operation does. +description | `string` | A verbose explanation of the operation behavior. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this operation. +operationId | `string` | Unique string used to identify the operation. The id MUST be unique among all operations described in the API. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is RECOMMENDED to follow common programming naming conventions. +parameters | [[Parameter Object](#parameterObject) \| [Reference Object](#referenceObject)] | A list of parameters that are applicable for this operation. If a parameter is already defined at the [Path Item](#pathItemParameters), the new definition will override it but can never remove it. The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). The list can use the [Reference Object](#referenceObject) to link to parameters that are defined at the [OpenAPI Object's components/parameters](#componentsParameters). +requestBody | [Request Body Object](#requestBodyObject) \| [Reference Object](#referenceObject) | The request body applicable for this operation. The `requestBody` is only supported in HTTP methods where the HTTP 1.1 specification [RFC7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) has explicitly defined semantics for request bodies. In other cases where the HTTP spec is vague, `requestBody` SHALL be ignored by consumers. +responses | [Responses Object](#responsesObject) | **REQUIRED**. The list of possible responses as they are returned from executing this operation. +callbacks | Map[`string`, [Callback Object](#callbackObject) \| [Reference Object](#referenceObject)] | A map of possible out-of band callbacks related to the parent operation. The key is a unique identifier for the Callback Object. Each value in the map is a [Callback Object](#callbackObject) that describes a request that may be initiated by the API provider and the expected responses. The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation. +deprecated | `boolean` | Declares this operation to be deprecated. Consumers SHOULD refrain from usage of the declared operation. Default value is `false`. +security | [[Security Requirement Object](#securityRequirementObject)] | A declaration of which security mechanisms can be used for this operation. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a request. This definition overrides any declared top-level [`security`](#oasSecurity). To remove a top-level security declaration, an empty array can be used. +servers | [[Server Object](#serverObject)] | An alternative `server` array to service this operation. If an alternative `server` object is specified at the Path Item Object or Root level, it will be overridden by this value. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Operation Object Example + +```json +{ + "tags": [ + "pet" + ], + "summary": "Updates a pet in the store with form data", + "operationId": "updatePetWithForm", + "parameters": [ + { + "name": "petId", + "in": "path", + "description": "ID of pet that needs to be updated", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "type": "object", + "properties": { + "name": { + "description": "Updated name of the pet", + "type": "string" + }, + "status": { + "description": "Updated status of the pet", + "type": "string" + } + }, + "required": ["status"] + } + } + } + }, + "responses": { + "200": { + "description": "Pet updated.", + "content": { + "application/json": {}, + "application/xml": {} + } + }, + "405": { + "description": "Invalid input", + "content": { + "application/json": {}, + "application/xml": {} + } + } + }, + "security": [ + { + "petstore_auth": [ + "write:pets", + "read:pets" + ] + } + ] +} +``` + +```yaml +tags: +- pet +summary: Updates a pet in the store with form data +operationId: updatePetWithForm +parameters: +- name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: string +requestBody: + content: + 'application/x-www-form-urlencoded': + schema: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + required: + - status +responses: + '200': + description: Pet updated. + content: + 'application/json': {} + 'application/xml': {} + '405': + description: Invalid input + content: + 'application/json': {} + 'application/xml': {} +security: +- petstore_auth: + - write:pets + - read:pets +``` + + +#### External Documentation Object + +Allows referencing an external resource for extended documentation. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +description | `string` | A short description of the target documentation. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +url | `string` | **REQUIRED**. The URL for the target documentation. Value MUST be in the format of a URL. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### External Documentation Object Example + +```json +{ + "description": "Find more info here", + "url": "https://example.com" +} +``` + +```yaml +description: Find more info here +url: https://example.com +``` + +#### Parameter Object + +Describes a single operation parameter. + +A unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). + +##### Parameter Locations +There are four possible parameter locations specified by the `in` field: +* 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. Note that [RFC7230](https://tools.ietf.org/html/rfc7230#page-22) states header names are case insensitive. +* cookie - Used to pass a specific cookie value to the API. + + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +name | `string` | **REQUIRED**. The name of the parameter. Parameter names are *case sensitive*.
  • If [`in`](#parameterIn) is `"path"`, the `name` field MUST correspond to the associated path segment from the [path](#pathsPath) field in the [Paths Object](#pathsObject). See [Path Templating](#pathTemplating) for further information.
  • If [`in`](#parameterIn) is `"header"` and the `name` field is `"Accept"`, `"Content-Type"` or `"Authorization"`, the parameter definition SHALL be ignored.
  • For all other cases, the `name` corresponds to the parameter name used by the [`in`](#parameterIn) property.
+in | `string` | **REQUIRED**. The location of the parameter. Possible values are "query", "header", "path" or "cookie". +description | `string` | A brief description of the parameter. This could contain examples of use. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +required | `boolean` | Determines whether this parameter is mandatory. If the [parameter location](#parameterIn) is "path", this property is **REQUIRED** and its value MUST be `true`. Otherwise, the property MAY be included and its default value is `false`. + deprecated | `boolean` | Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. + allowEmptyValue | `boolean` | Sets the ability to pass empty-valued parameters. This is valid only for `query` parameters and allows sending a parameter with an empty value. Default value is `false`. If [`style`](#parameterStyle) is used, and if behavior is `n/a` (cannot be serialized), the value of `allowEmptyValue` SHALL be ignored. + +The rules for serialization of the parameter are specified in one of two ways. +For simpler scenarios, a [`schema`](#parameterSchema) and [`style`](#parameterStyle) can describe the structure and syntax of the parameter. + +Field Name | Type | Description +---|:---:|--- +style | `string` | Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of `in`): for `query` - `form`; for `path` - `simple`; for `header` - `simple`; for `cookie` - `form`. +explode | `boolean` | When this is true, parameter values of type `array` or `object` generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When [`style`](#parameterStyle) is `form`, the default value is `true`. For all other styles, the default value is `false`. +allowReserved | `boolean` | Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-2.2) `:/?#[]@!$&'()*+,;=` to be included without percent-encoding. This property only applies to parameters with an `in` value of `query`. The default value is `false`. +schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | The schema defining the type used for the parameter. +example | Any | Example of the media type. The example SHOULD match the specified schema and encoding properties if present. The `example` object is mutually exclusive of the `examples` object. Furthermore, if referencing a `schema` which contains an example, the `example` value SHALL _override_ the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary. +examples | Map[ `string`, [Example Object](#exampleObject) \| [Reference Object](#referenceObject)] | Examples of the media type. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The `examples` object is mutually exclusive of the `example` object. Furthermore, if referencing a `schema` which contains an example, the `examples` value SHALL _override_ the example provided by the schema. + +For more complex scenarios, the [`content`](#parameterContent) property can define the media type and schema of the parameter. +A parameter MUST contain either a `schema` property, or a `content` property, but not both. +When `example` or `examples` are provided in conjunction with the `schema` object, the example MUST follow the prescribed serialization strategy for the parameter. + + +Field Name | Type | Description +---|:---:|--- +content | Map[`string`, [Media Type Object](#mediaTypeObject)] | A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry. + +##### Style Values + +In order to support common ways of serializing simple parameters, a set of `style` values are defined. + +`style` | [`type`](#dataTypes) | `in` | Comments +----------- | ------ | -------- | -------- +matrix | `primitive`, `array`, `object` | `path` | Path-style parameters defined by [RFC6570](https://tools.ietf.org/html/rfc6570#section-3.2.7) +label | `primitive`, `array`, `object` | `path` | Label style parameters defined by [RFC6570](https://tools.ietf.org/html/rfc6570#section-3.2.5) +form | `primitive`, `array`, `object` | `query`, `cookie` | Form style parameters defined by [RFC6570](https://tools.ietf.org/html/rfc6570#section-3.2.8). This option replaces `collectionFormat` with a `csv` (when `explode` is false) or `multi` (when `explode` is true) value from OpenAPI 2.0. +simple | `array` | `path`, `header` | Simple style parameters defined by [RFC6570](https://tools.ietf.org/html/rfc6570#section-3.2.2). This option replaces `collectionFormat` with a `csv` value from OpenAPI 2.0. +spaceDelimited | `array` | `query` | Space separated array values. This option replaces `collectionFormat` equal to `ssv` from OpenAPI 2.0. +pipeDelimited | `array` | `query` | Pipe separated array values. This option replaces `collectionFormat` equal to `pipes` from OpenAPI 2.0. +deepObject | `object` | `query` | Provides a simple way of rendering nested objects using form parameters. + + +##### Style Examples + +Assume a parameter named `color` has one of the following values: + +``` + string -> "blue" + array -> ["blue","black","brown"] + object -> { "R": 100, "G": 200, "B": 150 } +``` +The following table shows examples of rendering differences for each value. + +[`style`](#dataTypeFormat) | `explode` | `empty` | `string` | `array` | `object` +----------- | ------ | -------- | -------- | --------|------- +matrix | false | ;color | ;color=blue | ;color=blue,black,brown | ;color=R,100,G,200,B,150 +matrix | true | ;color | ;color=blue | ;color=blue;color=black;color=brown | ;R=100;G=200;B=150 +label | false | . | .blue | .blue.black.brown | .R.100.G.200.B.150 +label | true | . | .blue | .blue.black.brown | .R=100.G=200.B=150 +form | false | color= | color=blue | color=blue,black,brown | color=R,100,G,200,B,150 +form | true | color= | color=blue | color=blue&color=black&color=brown | R=100&G=200&B=150 +simple | false | n/a | blue | blue,black,brown | R,100,G,200,B,150 +simple | true | n/a | blue | blue,black,brown | R=100,G=200,B=150 +spaceDelimited | false | n/a | n/a | blue%20black%20brown | R%20100%20G%20200%20B%20150 +pipeDelimited | false | n/a | n/a | blue\|black\|brown | R\|100\|G\|200|G\|150 +deepObject | true | n/a | n/a | n/a | color[R]=100&color[G]=200&color[B]=150 + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Parameter Object Examples + +A header parameter with an array of 64 bit integer numbers: + +```json +{ + "name": "token", + "in": "header", + "description": "token to be passed as a header", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + } + }, + "style": "simple" +} +``` + +```yaml +name: token +in: header +description: token to be passed as a header +required: true +schema: + type: array + items: + type: integer + format: int64 +style: simple +``` + +A path parameter of a string value: +```json +{ + "name": "username", + "in": "path", + "description": "username to fetch", + "required": true, + "schema": { + "type": "string" + } +} +``` + +```yaml +name: username +in: path +description: username to fetch +required: true +schema: + type: string +``` + +An optional query parameter of a string value, allowing multiple values by repeating the query parameter: +```json +{ + "name": "id", + "in": "query", + "description": "ID of the object to fetch", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "style": "form", + "explode": true +} +``` + +```yaml +name: id +in: query +description: ID of the object to fetch +required: false +schema: + type: array + items: + type: string +style: form +explode: true +``` + +A free-form query parameter, allowing undefined parameters of a specific type: +```json +{ + "in": "query", + "name": "freeForm", + "schema": { + "type": "object", + "additionalProperties": { + "type": "integer" + }, + }, + "style": "form" +} +``` + +```yaml +in: query +name: freeForm +schema: + type: object + additionalProperties: + type: integer +style: form +``` + +A complex parameter using `content` to define serialization: + +```json +{ + "in": "query", + "name": "coordinates", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "lat", + "long" + ], + "properties": { + "lat": { + "type": "number" + }, + "long": { + "type": "number" + } + } + } + } + } +} +``` + +```yaml +in: query +name: coordinates +content: + application/json: + schema: + type: object + required: + - lat + - long + properties: + lat: + type: number + long: + type: number +``` + +#### Request Body Object + +Describes a single request body. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +description | `string` | A brief description of the request body. This could contain examples of use. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +content | Map[`string`, [Media Type Object](#mediaTypeObject)] | **REQUIRED**. The content of the request body. The key is a media type or [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) and the value describes it. For requests that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/* +required | `boolean` | Determines if the request body is required in the request. Defaults to `false`. + + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Request Body Examples + +A request body with a referenced model definition. +```json +{ + "description": "user to add to the system", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + }, + "examples": { + "user" : { + "summary": "User Example", + "externalValue": "http://foo.bar/examples/user-example.json" + } + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/User" + }, + "examples": { + "user" : { + "summary": "User example in XML", + "externalValue": "http://foo.bar/examples/user-example.xml" + } + } + }, + "text/plain": { + "examples": { + "user" : { + "summary": "User example in Plain text", + "externalValue": "http://foo.bar/examples/user-example.txt" + } + } + }, + "*/*": { + "examples": { + "user" : { + "summary": "User example in other format", + "externalValue": "http://foo.bar/examples/user-example.whatever" + } + } + } + } +} +``` + +```yaml +description: user to add to the system +content: + 'application/json': + schema: + $ref: '#/components/schemas/User' + examples: + user: + summary: User Example + externalValue: 'http://foo.bar/examples/user-example.json' + 'application/xml': + schema: + $ref: '#/components/schemas/User' + examples: + user: + summary: User Example in XML + externalValue: 'http://foo.bar/examples/user-example.xml' + 'text/plain': + examples: + user: + summary: User example in text plain format + externalValue: 'http://foo.bar/examples/user-example.txt' + '*/*': + examples: + user: + summary: User example in other format + externalValue: 'http://foo.bar/examples/user-example.whatever' +``` + +A body parameter that is an array of string values: +```json +{ + "description": "user to add to the system", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } +} +``` + +```yaml +description: user to add to the system +required: true +content: + text/plain: + schema: + type: array + items: + type: string +``` + + +#### Media Type Object +Each Media Type Object provides schema and examples for the media type identified by its key. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +schema | [Schema Object](#schemaObject) \| [Reference Object](#referenceObject) | The schema defining the type used for the request body. +example | Any | Example of the media type. The example object SHOULD be in the correct format as specified by the media type. The `example` object is mutually exclusive of the `examples` object. Furthermore, if referencing a `schema` which contains an example, the `example` value SHALL _override_ the example provided by the schema. +examples | Map[ `string`, [Example Object](#exampleObject) \| [Reference Object](#referenceObject)] | Examples of the media type. Each example object SHOULD match the media type and specified schema if present. The `examples` object is mutually exclusive of the `example` object. Furthermore, if referencing a `schema` which contains an example, the `examples` value SHALL _override_ the example provided by the schema. +encoding | Map[`string`, [Encoding Object](#encodingObject)] | A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The encoding object SHALL only apply to `requestBody` objects when the media type is `multipart` or `application/x-www-form-urlencoded`. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Media Type Examples + +```js +{ + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pet" + }, + "examples": { + "cat" : { + "summary": "An example of a cat", + "value": + { + "name": "Fluffy", + "petType": "Cat", + "color": "White", + "gender": "male", + "breed": "Persian" + } + }, + "dog": { + "summary": "An example of a dog with a cat's name", + "value" : { + "name": "Puma", + "petType": "Dog", + "color": "Black", + "gender": "Female", + "breed": "Mixed" + }, + "frog": { + "$ref": "#/components/examples/frog-example" + } + } + } + } +} +``` + +```yaml +application/json: + schema: + $ref: "#/components/schemas/Pet" + examples: + cat: + summary: An example of a cat + value: + name: Fluffy + petType: Cat + color: White + gender: male + breed: Persian + dog: + summary: An example of a dog with a cat's name + value: + name: Puma + petType: Dog + color: Black + gender: Female + breed: Mixed + frog: + $ref: "#/components/examples/frog-example" +``` + +##### Considerations for File Uploads + +In contrast with the 2.0 specification, `file` input/output content in OpenAPI is described with the same semantics as any other schema type. Specifically: + +```yaml +# content transferred with base64 encoding +schema: + type: string + format: base64 +``` + +```yaml +# content transferred in binary (octet-stream): +schema: + type: string + format: binary +``` + +These examples apply to either input payloads of file uploads or response payloads. + +A `requestBody` for submitting a file in a `POST` operation may look like the following example: + +```yaml +requestBody: + content: + application/octet-stream: + # any media type is accepted, functionally equivalent to `*/*` + schema: + # a binary file of any type + type: string + format: binary +``` + +In addition, specific media types MAY be specified: + +```yaml +# multiple, specific media types may be specified: +requestBody: + content: + # a binary file of type png or jpeg + 'image/jpeg': + schema: + type: string + format: binary + 'image/png': + schema: + type: string + format: binary +``` + +To upload multiple files, a `multipart` media type MUST be used: + +```yaml +requestBody: + content: + multipart/form-data: + schema: + properties: + # The property name 'file' will be used for all files. + file: + type: array + items: + type: string + format: binary + +``` + +##### Support for x-www-form-urlencoded Request Bodies + +To submit content using form url encoding via [RFC1866](https://tools.ietf.org/html/rfc1866), the following +definition may be used: + +```yaml +requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + id: + type: string + format: uuid + address: + # complex types are stringified to support RFC 1866 + type: object + properties: {} +``` + +In this example, the contents in the `requestBody` MUST be stringified per [RFC1866](https://tools.ietf.org/html/rfc1866/) when passed to the server. In addition, the `address` field complex object will be stringified. + +When passing complex objects in the `application/x-www-form-urlencoded` content type, the default serialization strategy of such properties is described in the [`Encoding Object`](#encodingObject)'s [`style`](#encodingStyle) property as `form`. + +##### Special Considerations for `multipart` Content + +It is common to use `multipart/form-data` as a `Content-Type` when transferring request bodies to operations. In contrast to 2.0, a `schema` is REQUIRED to define the input parameters to the operation when using `multipart` content. This supports complex structures as well as supporting mechanisms for multiple file uploads. + +When passing in `multipart` types, boundaries MAY be used to separate sections of the content being transferred — thus, the following default `Content-Type`s are defined for `multipart`: + +* If the property is a primitive, or an array of primitive values, the default Content-Type is `text/plain` +* If the property is complex, or an array of complex values, the default Content-Type is `application/json` +* If the property is a `type: string` with `format: binary` or `format: base64` (aka a file object), the default Content-Type is `application/octet-stream` + + +Examples: + +```yaml +requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + id: + type: string + format: uuid + address: + # default Content-Type for objects is `application/json` + type: object + properties: {} + profileImage: + # default Content-Type for string/binary is `application/octet-stream` + type: string + format: binary + children: + # default Content-Type for arrays is based on the `inner` type (text/plain here) + type: array + items: + type: string + addresses: + # default Content-Type for arrays is based on the `inner` type (object shown, so `application/json` in this example) + type: array + items: + type: '#/components/schemas/Address' +``` + +An `encoding` attribute is introduced to give you control over the serialization of parts of `multipart` request bodies. This attribute is _only_ applicable to `multipart` and `application/x-www-form-urlencoded` request bodies. + +#### Encoding Object + +A single encoding definition applied to a single schema property. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +contentType | `string` | The Content-Type for encoding a specific property. Default value depends on the property type: for `string` with `format` being `binary` – `application/octet-stream`; for other primitive types – `text/plain`; for `object` - `application/json`; for `array` – the default is defined based on the inner type. The value can be a specific media type (e.g. `application/json`), a wildcard media type (e.g. `image/*`), or a comma-separated list of the two types. +headers | Map[`string`, [Header Object](#headerObject) \| [Reference Object](#referenceObject)] | A map allowing additional information to be provided as headers, for example `Content-Disposition`. `Content-Type` is described separately and SHALL be ignored in this section. This property SHALL be ignored if the request body media type is not a `multipart`. +style | `string` | Describes how a specific property value will be serialized depending on its type. See [Parameter Object](#parameterObject) for details on the [`style`](#parameterStyle) property. The behavior follows the same values as `query` parameters, including default values. This property SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded`. +explode | `boolean` | When this is true, property values of type `array` or `object` generate separate parameters for each value of the array, or key-value-pair of the map. For other types of properties this property has no effect. When [`style`](#encodingStyle) is `form`, the default value is `true`. For all other styles, the default value is `false`. This property SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded`. +allowReserved | `boolean` | Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-2.2) `:/?#[]@!$&'()*+,;=` to be included without percent-encoding. The default value is `false`. This property SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded`. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Encoding Object Example + +```yaml +requestBody: + content: + multipart/mixed: + schema: + type: object + properties: + id: + # default is text/plain + type: string + format: uuid + address: + # default is application/json + type: object + properties: {} + historyMetadata: + # need to declare XML format! + description: metadata in XML format + type: object + properties: {} + profileImage: + # default is application/octet-stream, need to declare an image type only! + type: string + format: binary + encoding: + historyMetadata: + # require XML Content-Type in utf-8 encoding + contentType: application/xml; charset=utf-8 + profileImage: + # only accept png/jpeg + contentType: image/png, image/jpeg + headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + schema: + type: integer +``` + +#### Responses Object + +A container for the expected responses of an operation. +The container maps a HTTP response code to the expected response. + +The documentation is not necessarily expected to cover all possible HTTP response codes because they may not be known in advance. +However, documentation is expected to cover a successful operation response and any known errors. + +The `default` MAY be used as 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. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +default | [Response Object](#responseObject) \| [Reference Object](#referenceObject) | The documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses. A [Reference Object](#referenceObject) can link to a response that the [OpenAPI Object's components/responses](#componentsResponses) section defines. + +##### Patterned Fields +Field Pattern | Type | Description +---|:---:|--- +[HTTP Status Code](#httpCodes) | [Response Object](#responseObject) \| [Reference Object](#referenceObject) | Any [HTTP status code](#httpCodes) can be used as the property name, but only one property per code, to describe the expected response for that HTTP status code. A [Reference Object](#referenceObject) can link to a response that is defined in the [OpenAPI Object's components/responses](#componentsResponses) section. This field MUST be enclosed in quotation marks (for example, "200") for compatibility between JSON and YAML. To define a range of response codes, this field MAY contain the uppercase wildcard character `X`. For example, `2XX` represents all response codes between `[200-299]`. The following range definitions are allowed: `1XX`, `2XX`, `3XX`, `4XX`, and `5XX`. If a response range is defined using an explicit code, the explicit code definition takes precedence over the range definition for that code. + + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Responses Object Example + +A 200 response for a successful operation and a default response for others (implying an error): + +```json +{ + "200": { + "description": "a pet to be returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pet" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorModel" + } + } + } + } +} +``` + +```yaml +'200': + description: a pet to be returned + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' +default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorModel' +``` + +#### Response Object +Describes a single response from an API Operation, including design-time, static +`links` to operations based on the response. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +description | `string` | **REQUIRED**. A short description of the response. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +headers | Map[`string`, [Header Object](#headerObject) \| [Reference Object](#referenceObject)] | Maps a header name to its definition. [RFC7230](https://tools.ietf.org/html/rfc7230#page-22) states header names are case insensitive. If a response header is defined with the name `"Content-Type"`, it SHALL be ignored. +content | Map[`string`, [Media Type Object](#mediaTypeObject)] | A map containing descriptions of potential response payloads. The key is a media type or [media type range](https://tools.ietf.org/html/rfc7231#appendix-D) and the value describes it. For responses that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/* +links | Map[`string`, [Link Object](#linkObject) \| [Reference Object](#referenceObject)] | A map of operations links that can be followed from the response. The key of the map is a short name for the link, following the naming constraints of the names for [Component Objects](#componentsObject). + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Response Object Examples + +Response of an array of a complex type: + +```json +{ + "description": "A complex object array response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VeryComplexType" + } + } + } + } +} +``` + +```yaml +description: A complex object array response +content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/VeryComplexType' +``` + +Response with a string type: + +```json +{ + "description": "A simple string response", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + +} +``` + +```yaml +description: A simple string response +representations: + text/plain: + schema: + type: string +``` + +Plain text response with headers: + +```json +{ + "description": "A simple string response", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "headers": { + "X-Rate-Limit-Limit": { + "description": "The number of allowed requests in the current period", + "schema": { + "type": "integer" + } + }, + "X-Rate-Limit-Remaining": { + "description": "The number of remaining requests in the current period", + "schema": { + "type": "integer" + } + }, + "X-Rate-Limit-Reset": { + "description": "The number of seconds left in the current period", + "schema": { + "type": "integer" + } + } + } +} +``` + +```yaml +description: A simple string response +content: + text/plain: + schema: + type: string + example: 'whoa!' +headers: + X-Rate-Limit-Limit: + description: The number of allowed requests in the current period + schema: + type: integer + X-Rate-Limit-Remaining: + description: The number of remaining requests in the current period + schema: + type: integer + X-Rate-Limit-Reset: + description: The number of seconds left in the current period + schema: + type: integer +``` + +Response with no return value: + +```json +{ + "description": "object created" +} +``` + +```yaml +description: object created +``` + +#### Callback Object + +A map of possible out-of band callbacks related to the parent operation. +Each value in the map is a [Path Item Object](#pathItemObject) that describes a set of requests that may be initiated by the API provider and the expected responses. +The key value used to identify the callback object is an expression, evaluated at runtime, that identifies a URL to use for the callback operation. + +##### Patterned Fields +Field Pattern | Type | Description +---|:---:|--- +{expression} | [Path Item Object](#pathItemObject) | A Path Item Object used to define a callback request and expected responses. A [complete example](../examples/v3.0/callback-example.yaml) is available. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Key Expression + +The key that identifies the [Path Item Object](#pathItemObject) is a [runtime expression](#runtimeExpression) that can be evaluated in the context of a runtime HTTP request/response to identify the URL to be used for the callback request. +A simple example might be `$request.body#/url`. +However, using a [runtime expression](#runtimeExpression) the complete HTTP message can be accessed. +This includes accessing any part of a body that a JSON Pointer [RFC6901](https://tools.ietf.org/html/rfc6901) can reference. + +For example, given the following HTTP request: + +```http +POST /subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning HTTP/1.1 +Host: example.org +Content-Type: application/json +Content-Length: 187 + +{ + "failedUrl" : "http://clientdomain.com/failed", + "successUrls" : [ + "http://clientdomain.com/fast", + "http://clientdomain.com/medium", + "http://clientdomain.com/slow" + ] +} + +201 Created +Location: http://example.org/subscription/1 +``` + +The following examples show how the various expressions evaluate, assuming the callback operation has a path parameter named `eventType` and a query parameter named `queryUrl`. + +Expression | Value +---|:--- +$url | http://example.org/subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning +$method | POST +$request.path.eventType | myevent +$request.query.queryUrl | http://clientdomain.com/stillrunning +$request.header.content-Type | application/json +$request.body#/failedUrl | http://clientdomain.com/stillrunning +$request.body#/successUrls/2 | http://clientdomain.com/medium +$response.header.Location | http://example.org/subscription/1 + + +##### Callback Object Example + +The following example shows a callback to the URL specified by the `id` and `email` property in the request body. + +```yaml +myWebhook: + 'http://notificationServer.com?transactionId={$request.body#/id}&email={$request.body#/email}': + post: + requestBody: + description: Callback payload + content: + 'application/json': + schema: + $ref: '#/components/schemas/SomePayload' + responses: + '200': + description: webhook successfully processed and no retries will be performed +``` + + +#### Example Object + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +summary | `string` | Short description for the example. +description | `string` | Long description for the example. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +value | Any | Embedded literal example. The `value` field and `externalValue` field are mutually exclusive. To represent examples of media types that cannot naturally represented in JSON or YAML, use a string value to contain the example, escaping where necessary. +externalValue | `string` | A URL that points to the literal example. This provides the capability to reference examples that cannot easily be included in JSON or YAML documents. The `value` field and `externalValue` field are mutually exclusive. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +In all cases, the example value is expected to be compatible with the type schema +of its associated value. Tooling implementations MAY choose to +validate compatibility automatically, and reject the example value(s) if incompatible. + +##### Example Object Example + +```yaml +# in a model +schemas: + properties: + name: + type: string + examples: + name: + $ref: http://example.org/petapi-examples/openapi.json#/components/examples/name-example + +# in a request body: + requestBody: + content: + 'application/json': + schema: + $ref: '#/components/schemas/Address' + examples: + foo: + summary: A foo example + value: {"foo": "bar"} + bar: + summary: A bar example + value: {"bar": "baz"} + 'application/xml': + examples: + xmlExample: + summary: This is an example in XML + externalValue: 'http://example.org/examples/address-example.xml' + 'text/plain': + examples: + textExample: + summary: This is a text example + externalValue: 'http://foo.bar/examples/address-example.txt' + + +# in a parameter + parameters: + - name: 'zipCode' + in: 'query' + schema: + type: 'string' + format: 'zip-code' + examples: + zip-example: + $ref: '#/components/examples/zip-example' + +# in a response + responses: + '200': + description: your car appointment has been booked + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessResponse' + examples: + confirmation-success: + $ref: '#/components/examples/confirmation-success' +``` + + +#### Link Object + +The `Link object` represents a possible design-time link for a response. +The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. + +Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. + +For computing links, and providing instructions to execute them, a [runtime expression](#runtimeExpression) is used for accessing values in an operation and using them as parameters while invoking the linked operation. + +##### Fixed Fields + +Field Name | Type | Description +---|:---:|--- +operationRef | `string` | A relative or absolute reference to an OAS operation. This field is mutually exclusive of the `operationId` field, and MUST point to an [Operation Object](#operationObject). Relative `operationRef` values MAY be used to locate an existing [Operation Object](#operationObject) in the OpenAPI definition. +operationId | `string` | The name of an _existing_, resolvable OAS operation, as defined with a unique `operationId`. This field is mutually exclusive of the `operationRef` field. +parameters | Map[`string`, Any \| [{expression}](#runtimeExpression)] | A map representing parameters to pass to an operation as specified with `operationId` or identified via `operationRef`. The key is the parameter name to be used, whereas the value can be a constant or an expression to be evaluated and passed to the linked operation. The parameter name can be qualified using the [parameter location](#parameterIn) `[{in}.]{name}` for operations that use the same parameter name in different locations (e.g. path.id). +requestBody | Any \| [{expression}](#runtimeExpression) | A literal value or [{expression}](#runtimeExpression) to use as a request body when calling the target operation. +description | `string` | A description of the link. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +server | [Server Object](#serverObject) | A server object to be used by the target operation. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +A linked operation MUST be identified using either an `operationRef` or `operationId`. +In the case of an `operationId`, it MUST be unique and resolved in the scope of the OAS document. +Because of the potential for name clashes, the `operationRef` syntax is preferred +for specifications with external references. + +##### Examples + +Computing a link from a request operation where the `$request.path.id` is used to pass a request parameter to the linked operation. + +```yaml +paths: + /users/{id}: + parameters: + - name: id + in: path + required: true + description: the user identifier, as userId + schema: + type: string + get: + responses: + '200': + description: the user being returned + content: + application/json: + schema: + type: object + properties: + uuid: # the unique user id + type: string + format: uuid + links: + address: + # the target link operationId + operationId: getUserAddress + parameters: + # get the `id` field from the request path parameter named `id` + userId: $request.path.id + # the path item of the linked operation + /users/{userid}/address: + parameters: + - name: userid + in: path + required: true + description: the user identifier, as userId + schema: + type: string + # linked operation + get: + operationId: getUserAddress + responses: + '200': + description: the user's address +``` + +When a runtime expression fails to evaluate, no parameter value is passed to the target operation. + +Values from the response body can be used to drive a linked operation. + +```yaml +links: + address: + operationId: getUserAddressByUUID + parameters: + # get the `id` field from the request path parameter named `id` + userUuid: $response.body#/uuid +``` + +Clients follow all links at their discretion. +Neither permissions, nor the capability to make a successful call to that link, is guaranteed +solely by the existence of a relationship. + + +##### OperationRef Examples + +As references to `operationId` MAY NOT be possible (the `operationId` is an optional +value), references MAY also be made through a relative `operationRef`: + +```yaml +links: + UserRepositories: + # returns array of '#/components/schemas/repository' + operationRef: '#/paths/~12.0~1repositories~1{username}/get' + parameters: + username: $response.body#/username +``` + +or an absolute `operationRef`: + +```yaml +links: + UserRepositories: + # returns array of '#/components/schemas/repository' + operationRef: 'https://na2.gigantic-server.com/#/paths/~12.0~1repositories~1{username}/get' + parameters: + username: $response.body#/username +``` + +Note that in the use of `operationRef`, the _escaped forward-slash_ is necessary when +using JSON references. + + +##### Runtime Expressions + +Runtime expressions allow defining values based on information that will only be available within the HTTP message in an actual API call. +This mechanism is used by [Link Objects](#linkObject) and [Callback Objects](#callbackObject). + +The runtime expression is defined by the following [ABNF](https://tools.ietf.org/html/rfc5234) syntax + +``` + expression = ( "$url" | "$method" | "$statusCode" | "$request." source | "$response." source ) + source = ( header-reference | query-reference | path-reference | body-reference ) + header-reference = "header." token + query-reference = "query." name + path-reference = "path." name + body-reference = "body" ["#" fragment] + fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901) + name = *( char ) + char = as per RFC [7159](https://tools.ietf.org/html/rfc7159#section-7) + token = as per RFC [7230](https://tools.ietf.org/html/rfc7230#section-3.2.6) +``` + +The `name` identifier is case-sensitive, whereas `token` is not. + +The table below provides examples of runtime expressions and examples of their use in a value: + +##### Examples + +Source Location | example expression | notes +---|:---|:---| +HTTP Method | `$method` | The allowable values for the `$method` will be those for the HTTP operation. +Requested media type | `$request.header.accept` | +Request parameter | `$request.path.id` | Request parameters MUST be declared in the `parameters` section of the parent operation or they cannot be evaluated. This includes request headers. +Request body property | `$request.body#/user/uuid` | In operations which accept payloads, references may be made to portions of the `requestBody` or the entire body. +Request URL | `$url` | +Response value | `$response.body#/status` | In operations which return payloads, references may be made to portions of the response body or the entire body. +Response header | `$response.header.Server` | Single header values only are available + +Runtime expressions preserve the type of the referenced value. +Expressions can be embedded into string values by surrounding the expression with `{}` curly braces. + +#### Header Object + +The Header Object follows the structure of the [Parameter Object](#parameterObject) with the following changes: + +1. `name` MUST NOT be specified, it is given in the corresponding `headers` map. +1. `in` MUST NOT be specified, it is implicitly in `header`. +1. All traits that are affected by the location MUST be applicable to a location of `header` (for example, [`style`](#parameterStyle)). + +##### Header Object Example + +A simple header of type `integer`: + +```json +{ + "description": "The number of allowed requests in the current period", + "schema": { + "type": "integer" + } +} +``` + +```yaml +description: The number of allowed requests in the current period +schema: + type: integer +``` + +#### Tag Object + +Adds metadata to a single tag that is used by the [Operation Object](#operationObject). +It is not mandatory to have a Tag Object per tag defined in the Operation Object instances. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +name | `string` | **REQUIRED**. The name of the tag. +description | `string` | A short description for the tag. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this tag. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Tag Object Example + +```json +{ + "name": "pet", + "description": "Pets operations" +} +``` + +```yaml +name: pet +description: Pets operations +``` + +#### Examples Object + +In an `example`, a JSON Reference MAY be used, with the +explicit restriction that examples having a JSON format with object named +`$ref` are not allowed. Therefore, that `example`, structurally, can be +either a string primitive or an object, similar to `additionalProperties`. + +In all cases, the payload is expected to be compatible with the type schema +for the associated value. Tooling implementations MAY choose to +validate compatibility automatically, and reject the example value(s) if they +are incompatible. + +```yaml +# in a model +schemas: + properties: + name: + type: string + example: + $ref: http://foo.bar#/examples/name-example + +# in a request body, note the plural `examples` + requestBody: + content: + 'application/json': + schema: + $ref: '#/components/schemas/Address' + examples: + foo: + value: {"foo": "bar"} + bar: + value: {"bar": "baz"} + 'application/xml': + examples: + xml: + externalValue: 'http://foo.bar/examples/address-example.xml' + 'text/plain': + examples: + text: + externalValue: 'http://foo.bar/examples/address-example.txt' + +# in a parameter + parameters: + - name: 'zipCode' + in: 'query' + schema: + type: 'string' + format: 'zip-code' + example: + $ref: 'http://foo.bar#/examples/zip-example' + +# in a response, note the singular `example`: + responses: + '200': + description: your car appointment has been booked + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessResponse' + example: + $ref: http://foo.bar#/examples/address-example.json +``` + +#### Reference Object + +A simple object to allow referencing other components in the specification, internally and externally. + +The Reference Object is defined by [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and follows the same structure, behavior and rules. + +For this specification, reference resolution is accomplished as defined by the JSON Reference specification and not by the JSON Schema specification. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +$ref | `string` | **REQUIRED**. The reference string. + +This object cannot be extended with additional properties and any properties added SHALL be ignored. + +##### Reference Object Example + +```json +{ + "$ref": "#/components/schemas/Pet" +} +``` + +```yaml +$ref: '#/components/schemas/Pet' +``` + +##### Relative Schema Document Example +```json +{ + "$ref": "Pet.json" +} +``` + +```yaml +$ref: Pet.yaml +``` + +##### Relative Documents With Embedded Schema Example +```json +{ + "$ref": "definitions.json#/Pet" +} +``` + +```yaml +$ref: definitions.yaml#/Pet +``` + +#### Schema Object + +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 an extended subset of the [JSON Schema Specification Wright Draft 00](http://json-schema.org/). + +For more information about the properties, see [JSON Schema Core](https://tools.ietf.org/html/draft-wright-json-schema-00) and [JSON Schema Validation](https://tools.ietf.org/html/draft-wright-json-schema-validation-00). +Unless stated otherwise, the property definitions follow the JSON Schema. + +##### Properties + +The following properties are taken directly from the JSON Schema definition and follow the same specifications: + +- title +- multipleOf +- maximum +- exclusiveMaximum +- minimum +- exclusiveMinimum +- maxLength +- minLength +- pattern (This string SHOULD be a valid regular expression, according to the [ECMA 262 regular expression](https://www.ecma-international.org/ecma-262/5.1/#sec-7.8.5) dialect) +- maxItems +- minItems +- uniqueItems +- maxProperties +- minProperties +- required +- enum + +The following properties are taken from the JSON Schema definition but their definitions were adjusted to the OpenAPI Specification. +- type - Value MUST be a string. Multiple types via an array are not supported. +- allOf - Inline or referenced schema MUST be of a [Schema Object](#schemaObject) and not a standard JSON Schema. +- oneOf - Inline or referenced schema MUST be of a [Schema Object](#schemaObject) and not a standard JSON Schema. +- anyOf - Inline or referenced schema MUST be of a [Schema Object](#schemaObject) and not a standard JSON Schema. +- not - Inline or referenced schema MUST be of a [Schema Object](#schemaObject) and not a standard JSON Schema. +- items - Value MUST be an object and not an array. Inline or referenced schema MUST be of a [Schema Object](#schemaObject) and not a standard JSON Schema. `items` MUST be present if the `type` is `array`. +- properties - Property definitions MUST be a [Schema Object](#schemaObject) and not a standard JSON Schema (inline or referenced). +- additionalProperties - Value can be boolean or object. Inline or referenced schema MUST be of a [Schema Object](#schemaObject) and not a standard JSON Schema. +- description - [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +- format - See [Data Type Formats](#dataTypeFormat) for further details. While relying on JSON Schema's defined formats, the OAS offers a few additional predefined formats. +- default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, if `type` is `string`, then `default` can be `"foo"` but cannot be `1`. + +Alternatively, any time a Schema Object can be used, a [Reference Object](#referenceObject) can be used in its place. This allows referencing definitions instead of defining them inline. + +Additional properties defined by the JSON Schema specification that are not mentioned here are strictly unsupported. + +Other than the JSON Schema subset fields, the following fields MAY be used for further schema documentation: + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +nullable | `boolean` | Allows sending a `null` value for the defined schema. Default value is `false`. +discriminator | [Discriminator Object](#discriminatorObject) | Adds support for polymorphism. The discriminator is an object name that is used to differentiate between other schemas which may satisfy the payload description. See [Composition and Inheritance](#schemaComposition) for more details. +readOnly | `boolean` | Relevant only for Schema `"properties"` definitions. Declares the property as "read only". This means that it MAY be sent as part of a response but SHOULD NOT be sent as part of the request. If the property is marked as `readOnly` being `true` and is in the `required` list, the `required` will take effect on the response only. A property MUST NOT be marked as both `readOnly` and `writeOnly` being `true`. Default value is `false`. +writeOnly | `boolean` | Relevant only for Schema `"properties"` definitions. Declares the property as "write only". Therefore, it MAY be sent as part of a request but SHOULD NOT be sent as part of the response. If the property is marked as `writeOnly` being `true` and is in the `required` list, the `required` will take effect on the request only. A property MUST NOT be marked as both `readOnly` and `writeOnly` being `true`. Default value is `false`. +xml | [XML Object](#xmlObject) | This MAY be used only on properties schemas. It has no effect on root schemas. Adds additional metadata to describe the XML representation of this property. +externalDocs | [External Documentation Object](#externalDocumentationObject) | Additional external documentation for this schema. +example | Any | A free-form property to include an example of an instance for this schema. To represent examples that cannot be naturally represented in JSON or YAML, a string value can be used to contain the example with escaping where necessary. + deprecated | `boolean` | Specifies that a schema is deprecated and SHOULD be transitioned out of usage. Default value is `false`. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +###### Composition and Inheritance (Polymorphism) + +The OpenAPI Specification allows combining and extending model definitions using the `allOf` property of JSON Schema, in effect offering model composition. +`allOf` takes an array of object definitions that are validated *independently* but together compose a single object. + +While composition offers model extensibility, it does not imply a hierarchy between the models. +To support polymorphism, the OpenAPI Specification adds the `discriminator` field. +When used, the `discriminator` will be the name of the property that decides which schema definition validates the structure of the model. +As such, the `discriminator` field MUST be a required field. +There are are two ways to define the value of a discriminator for an inheriting instance. +- Use the schema name. +- Override the schema name by overriding the property with a new value. If a new value exists, this takes precedence over the schema name. +As such, inline schema definitions, which do not have a given id, *cannot* be used in polymorphism. + +###### XML Modeling + +The [xml](#schemaXml) property allows extra definitions when translating the JSON definition to XML. +The [XML Object](#xmlObject) contains additional information about the available options. + +##### Schema Object Examples + +###### Primitive Sample + +```json +{ + "type": "string", + "format": "email" +} +``` + +```yaml +type: string +format: email +``` + +###### Simple Model + +```json +{ + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "address": { + "$ref": "#/components/schemas/Address" + }, + "age": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } +} +``` + +```yaml +type: object +required: +- name +properties: + name: + type: string + address: + $ref: '#/components/schemas/Address' + age: + type: integer + format: int32 + minimum: 0 +``` + +###### Model with Map/Dictionary Properties + +For a simple string to string mapping: + +```json +{ + "type": "object", + "additionalProperties": { + "type": "string" + } +} +``` + +```yaml +type: object +additionalProperties: + type: string +``` + +For a string to model mapping: + +```json +{ + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ComplexModel" + } +} +``` + +```yaml +type: object +additionalProperties: + $ref: '#/components/schemas/ComplexModel' +``` + +###### Model with Example + +```json +{ + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name" + ], + "example": { + "name": "Puma", + "id": 1 + } +} +``` + +```yaml +type: object +properties: + id: + type: integer + format: int64 + name: + type: string +required: +- name +example: + name: Puma + id: 1 +``` + +###### Models with Composition + +```json +{ + "components": { + "schemas": { + "ErrorModel": { + "type": "object", + "required": [ + "message", + "code" + ], + "properties": { + "message": { + "type": "string" + }, + "code": { + "type": "integer", + "minimum": 100, + "maximum": 600 + } + } + }, + "ExtendedErrorModel": { + "allOf": [ + { + "$ref": "#/components/schemas/ErrorModel" + }, + { + "type": "object", + "required": [ + "rootCause" + ], + "properties": { + "rootCause": { + "type": "string" + } + } + } + ] + } + } + } +} +``` + +```yaml +components: + schemas: + ErrorModel: + type: object + required: + - message + - code + properties: + message: + type: string + code: + type: integer + minimum: 100 + maximum: 600 + ExtendedErrorModel: + allOf: + - $ref: '#/components/schemas/ErrorModel' + - type: object + required: + - rootCause + properties: + rootCause: + type: string +``` + +###### Models with Polymorphism Support + +```json +{ + "components": { + "schemas": { + "Pet": { + "type": "object", + "discriminator": { + "propertyName": "petType" + }, + "properties": { + "name": { + "type": "string" + }, + "petType": { + "type": "string" + } + }, + "required": [ + "name", + "petType" + ] + }, + "Cat": { + "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.", + "allOf": [ + { + "$ref": "#/components/schemas/Pet" + }, + { + "type": "object", + "properties": { + "huntingSkill": { + "type": "string", + "description": "The measured skill for hunting", + "default": "lazy", + "enum": [ + "clueless", + "lazy", + "adventurous", + "aggressive" + ] + } + }, + "required": [ + "huntingSkill" + ] + } + ] + }, + "Dog": { + "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.", + "allOf": [ + { + "$ref": "#/components/schemas/Pet" + }, + { + "type": "object", + "properties": { + "packSize": { + "type": "integer", + "format": "int32", + "description": "the size of the pack the dog is from", + "default": 0, + "minimum": 0 + } + }, + "required": [ + "packSize" + ] + } + ] + } + } + } +} +``` + +```yaml +components: + schemas: + Pet: + type: object + discriminator: + propertyName: petType + properties: + name: + type: string + petType: + type: string + required: + - name + - petType + Cat: ## "Cat" will be used as the discriminator value + description: A representation of a cat + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + huntingSkill: + type: string + description: The measured skill for hunting + enum: + - clueless + - lazy + - adventurous + - aggressive + required: + - huntingSkill + Dog: ## "Dog" will be used as the discriminator value + description: A representation of a dog + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + packSize: + type: integer + format: int32 + description: the size of the pack the dog is from + default: 0 + minimum: 0 + required: + - packSize +``` + +#### Discriminator Object + +When request bodies or response payloads may be one of a number of different schemas, a `discriminator` object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it. + +When using the discriminator, _inline_ schemas will not be considered. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +propertyName | `string` | **REQUIRED**. The name of the property in the payload that will hold the discriminator value. + mapping | Map[`string`, `string`] | An object to hold mappings between payload values and schema names or references. + +The discriminator attribute is legal only when using one of the composite keywords `oneOf`, `anyOf`, `allOf`. + +In OAS 3.0, a response payload MAY be described to be exactly one of any number of types: + +``` +MyResponseType: + oneOf: + - $ref: '#/components/schemas/Cat' + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Lizard' +``` + +which means the payload _MUST_, by validation, match exactly one of the schemas described by `Cat`, `Dog`, or `Lizard`. In this case, a discriminator MAY act as a "hint" to shortcut validation and selection of the matching schema which may be a costly operation, depending on the complexity of the schema. We can then describe exactly which field tells us which schema to use: + + +``` +MyResponseType: + oneOf: + - $ref: '#/components/schemas/Cat' + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Lizard' + discriminator: + propertyName: pet_type +``` + +The expectation now is that a property with name `pet_type` _MUST_ be present in the response payload, and the value will correspond to the name of a schema defined in the OAS document. Thus the response payload: + +``` +{ + "id": 12345, + "pet_type": "Cat" +} +``` + +Will indicate that the `Cat` schema be used in conjunction with this payload. + +In scenarios where the value of the discriminator field does not match the schema name or implicit mapping is not possible, an optional `mapping` definition MAY be used: + +``` +MyResponseType: + oneOf: + - $ref: '#/components/schemas/Cat' + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Lizard' + - $ref: 'https://gigantic-server.com/schemas/Monster/schema.json' + discriminator: + propertyName: pet_type + mapping: + dog: '#/components/schemas/Dog' + monster: 'https://gigantic-server.com/schemas/Monster/schema.json' +``` + +Here the discriminator _value_ of `dog` will map to the schema `#/components/schemas/Dog`, rather than the default (implicit) value of `Dog`. If the discriminator _value_ does not match an implicit or explicit mapping, no schema can be determined and validation SHOULD fail. Mapping keys MUST be string values, but tooling MAY convert response values to strings for comparison. + +When used in conjunction with the `anyOf` construct, the use of the discriminator can avoid ambiguity where multiple schemas may satisfy a single payload. + +In both the `oneOf` and `anyOf` use cases, all possible schemas MUST be listed explicitly. To avoid redundancy, the discriminator MAY be added to a parent schema definition, and all schemas comprising the parent schema in an `allOf` construct may be used as an alternate schema. + +For example: + +``` +components: + schemas: + Pet: + type: object + required: + - pet_type + properties: + pet_type: + type: string + discriminator: + propertyName: pet_type + mapping: + cachorro: Dog + Cat: + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + # all other properties specific to a `Cat` + properties: + name: + type: string + Dog: + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + # all other properties specific to a `Dog` + properties: + bark: + type: string + Lizard: + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + # all other properties specific to a `Lizard` + properties: + lovesRocks: + type: boolean +``` + +a payload like this: + +``` +{ + "pet_type": "Cat", + "name": "misty" +} +``` + +will indicate that the `Cat` schema be used. Likewise this schema: + +``` +{ + "pet_type": "cachorro", + "bark": "soft" +} +``` + +will map to `Dog` because of the definition in the `mappings` element. + + +#### XML Object + +A metadata object that allows for more fine-tuned XML model definitions. + +When using arrays, XML element names are *not* inferred (for singular/plural forms) and the `name` property SHOULD be used to add that information. +See examples for expected behavior. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +name | `string` | Replaces the name of the element/attribute used for the described schema property. When defined within `items`, it will affect the name of the individual XML elements within the list. When defined alongside `type` being `array` (outside the `items`), it will affect the wrapping element and only if `wrapped` is `true`. If `wrapped` is `false`, it will be ignored. +namespace | `string` | The URI of the namespace definition. Value MUST be in the form of an absolute URI. +prefix | `string` | The prefix to be used for the [name](#xmlName). +attribute | `boolean` | Declares whether the property definition translates to an attribute instead of an element. Default value is `false`. +wrapped | `boolean` | MAY be used only for an array definition. Signifies whether the array is wrapped (for example, ``) or unwrapped (``). Default value is `false`. The definition takes effect only when defined alongside `type` being `array` (outside the `items`). + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### XML Object Examples + +The examples of the XML object definitions are included inside a property definition of a [Schema Object](#schemaObject) with a sample of the XML representation of it. + +###### No XML Element + +Basic string property: + +```json +{ + "animals": { + "type": "string" + } +} +``` + +```yaml +animals: + type: string +``` + +```xml +... +``` + +Basic string array property ([`wrapped`](#xmlWrapped) is `false` by default): + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string" + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string +``` + +```xml +... +... +... +``` + +###### XML Name Replacement + +```json +{ + "animals": { + "type": "string", + "xml": { + "name": "animal" + } + } +} +``` + +```yaml +animals: + type: string + xml: + name: animal +``` + +```xml +... +``` + + +###### XML Attribute, Prefix and Namespace + +In this example, a full model definition is shown. + +```json +{ + "Person": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "xml": { + "attribute": true + } + }, + "name": { + "type": "string", + "xml": { + "namespace": "http://example.com/schema/sample", + "prefix": "sample" + } + } + } + } +} +``` + +```yaml +Person: + type: object + properties: + id: + type: integer + format: int32 + xml: + attribute: true + name: + type: string + xml: + namespace: http://example.com/schema/sample + prefix: sample +``` + +```xml + + example + +``` + +###### XML Arrays + +Changing the element names: + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "animal" + } + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string + xml: + name: animal +``` + +```xml +value +value +``` + +The external `name` property has no effect on the XML: + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "animal" + } + }, + "xml": { + "name": "aliens" + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string + xml: + name: animal + xml: + name: aliens +``` + +```xml +value +value +``` + +Even when the array is wrapped, if a name is not explicitly defined, the same name will be used both internally and externally: + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string" + }, + "xml": { + "wrapped": true + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string + xml: + wrapped: true +``` + +```xml + + value + value + +``` + +To overcome the naming problem in the example above, the following definition can be used: + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "animal" + } + }, + "xml": { + "wrapped": true + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string + xml: + name: animal + xml: + wrapped: true +``` + +```xml + + value + value + +``` + +Affecting both internal and external names: + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string", + "xml": { + "name": "animal" + } + }, + "xml": { + "name": "aliens", + "wrapped": true + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string + xml: + name: animal + xml: + name: aliens + wrapped: true +``` + +```xml + + value + value + +``` + +If we change the external element but not the internal ones: + +```json +{ + "animals": { + "type": "array", + "items": { + "type": "string" + }, + "xml": { + "name": "aliens", + "wrapped": true + } + } +} +``` + +```yaml +animals: + type: array + items: + type: string + xml: + name: aliens + wrapped: true +``` + +```xml + + value + value + +``` + +#### Security Scheme Object + +Defines a security scheme that can be used by the operations. +Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2's common flows (implicit, password, application and access code) as defined in [RFC6749](https://tools.ietf.org/html/rfc6749), and [OpenID Connect Discovery](https://tools.ietf.org/html/draft-ietf-oauth-discovery-06). + +##### Fixed Fields +Field Name | Type | Applies To | Description +---|:---:|---|--- +type | `string` | Any | **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`. +description | `string` | Any | A short description for security scheme. [CommonMark syntax](http://spec.commonmark.org/) MAY be used for rich text representation. +name | `string` | `apiKey` | **REQUIRED**. The name of the header, query or cookie parameter to be used. +in | `string` | `apiKey` | **REQUIRED**. The location of the API key. Valid values are `"query"`, `"header"` or `"cookie"`. +scheme | `string` | `http` | **REQUIRED**. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235](https://tools.ietf.org/html/rfc7235#section-5.1). +bearerFormat | `string` | `http` (`"bearer"`) | A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes. +flows | [OAuth Flows Object](#oauthFlowsObject) | `oauth2` | **REQUIRED**. An object containing configuration information for the flow types supported. +openIdConnectUrl | `string` | `openIdConnect` | **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### Security Scheme Object Example + +###### Basic Authentication Sample + +```json +{ + "type": "http", + "scheme": "basic" +} +``` + +```yaml +type: http +scheme: basic +``` + +###### API Key Sample + +```json +{ + "type": "apiKey", + "name": "api_key", + "in": "header" +} +``` + +```yaml +type: apiKey +name: api_key +in: header +``` + +###### JWT Bearer Sample + +```json +{ + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", +} +``` + +```yaml +type: http +scheme: bearer +bearerFormat: JWT +``` + +###### Implicit OAuth2 Sample + +```json +{ + "type": "oauth2", + "flows": { + "implicit": { + "authorizationUrl": "https://example.com/api/oauth/dialog", + "scopes": { + "write:pets": "modify pets in your account", + "read:pets": "read your pets" + } + } + } +} +``` + +```yaml +type: oauth2 +flows: + implicit: + authorizationUrl: https://example.com/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets +``` + +#### OAuth Flows Object + +Allows configuration of the supported OAuth Flows. + +##### Fixed Fields +Field Name | Type | Description +---|:---:|--- +implicit| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Implicit flow +password| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Resource Owner Password flow +clientCredentials| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Client Credentials flow. Previously called `application` in OpenAPI 2.0. +authorizationCode| [OAuth Flow Object](#oauthFlowObject) | Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +#### OAuth Flow Object + +Configuration details for a supported OAuth Flow + +##### Fixed Fields +Field Name | Type | Applies To | Description +---|:---:|---|--- +authorizationUrl | `string` | `oauth2` (`"implicit"`, `"authorizationCode"`) | **REQUIRED**. The authorization URL to be used for this flow. This MUST be in the form of a URL. +tokenUrl | `string` | `oauth2` (`"password"`, `"clientCredentials"`, `"authorizationCode"`) | **REQUIRED**. The token URL to be used for this flow. This MUST be in the form of a URL. +refreshUrl | `string` | `oauth2` | The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL. +scopes | Map[`string`, `string`] | `oauth2` | **REQUIRED**. The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it. + +This object MAY be extended with [Specification Extensions](#specificationExtensions). + +##### OAuth Flow Object Examples + +```JSON +{ + "type": "oauth2", + "flows": { + "implicit": { + "authorizationUrl": "https://example.com/api/oauth/dialog", + "scopes": { + "write:pets": "modify pets in your account", + "read:pets": "read your pets" + } + }, + "authorizationCode": { + "authorizationUrl": "https://example.com/api/oauth/dialog", + "tokenUrl": "https://example.com/api/oauth/token", + "scopes": { + "write:pets": "modify pets in your account", + "read:pets": "read your pets" + } + } + } +} +``` + +```YAML +type: oauth2 +flows: + implicit: + authorizationUrl: https://example.com/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets + authorizationCode: + authorizationUrl: https://example.com/api/oauth/dialog + tokenUrl: https://example.com/api/oauth/token + scopes: + write:pets: modify pets in your account + read:pets: read your pets +``` + + +#### Security Requirement Object + +Lists the required security schemes to execute this operation. +The name used for each property MUST correspond to a security scheme declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). + +Security Requirement Objects that contain multiple schemes require that all schemes MUST be satisfied for a request to be authorized. +This enables support for scenarios where multiple query parameters or HTTP headers are required to convey security information. + +When a list of Security Requirement Objects is defined on the [Open API object](#oasObject) or [Operation Object](#operationObject), only one of Security Requirement Objects in the list needs to be satisfied to authorize the request. + +##### Patterned Fields + +Field Pattern | Type | Description +---|:---:|--- +{name} | [`string`] | Each name MUST correspond to a security scheme which is declared in the [Security Schemes](#componentsSecuritySchemes) under the [Components Object](#componentsObject). If the security scheme is of type `"oauth2"` or `"openIdConnect"`, then the value is a list of scope names required for the execution. For other security scheme types, the array MUST be empty. + +##### Security Requirement Object Examples + +###### Non-OAuth2 Security Requirement + +```json +{ + "api_key": [] +} +``` + +```yaml +api_key: [] +``` + +###### OAuth2 Security Requirement + +```json +{ + "petstore_auth": [ + "write:pets", + "read:pets" + ] +} +``` + +```yaml +petstore_auth: +- write:pets +- read:pets +``` + +### Specification Extensions + +While the OpenAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points. + +The extensions properties are implemented as patterned fields that are always prefixed by `"x-"`. + +Field Pattern | Type | Description +---|:---:|--- +^x- | Any | Allows extensions to the OpenAPI Schema. The field name MUST begin with `x-`, for example, `x-internal-id`. The value can be `null`, a primitive, an array or an object. Can have any valid JSON format value. + +The extensions may or may not be supported by the available tooling, but those may be extended as well to add requested support (if tools are internal or open-sourced). + +### Security Filtering + +Some objects in the OpenAPI Specification MAY be declared and remain empty, or be completely removed, even though they are inherently the core of the API documentation. + +The reasoning is to allow an additional layer of access control over the documentation. +While not part of the specification itself, certain libraries MAY choose to allow access to parts of the documentation based on some form of authentication/authorization. + +Two examples of this: + +1. The [Paths Object](#pathsObject) MAY be empty. It may be counterintuitive, but this may tell the viewer that they got to the right place, but can't access any documentation. They'd still have access to the [Info Object](#infoObject) which may contain additional information regarding authentication. +2. The [Path Item Object](#pathItemObject) MAY be empty. In this case, the viewer will be aware that the path exists, but will not be able to see any of its operations or parameters. This is different than hiding the path itself from the [Paths Object](#pathsObject), so the user will not be aware of its existence. This allows the documentation provider to finely control what the viewer can see. + +## Appendix A: Revision History + +Version | Date | Notes +--- | --- | --- +3.0.0 | 2017-07-26 | Release of the OpenAPI Specification 3.0.0 +3.0.0-rc2 | 2017-06-16 | rc2 of the 3.0 specification +3.0.0-rc1 | 2017-04-27 | rc1 of the 3.0 specification +3.0.0-rc0 | 2017-02-28 | Implementer's Draft of the 3.0 specification +2.0 | 2015-12-31 | Donation of Swagger 2.0 to the Open API Initiative +2.0 | 2014-09-08 | Release of Swagger 2.0 +1.2 | 2014-03-14 | Initial release of the formal document. +1.1 | 2012-08-22 | Release of Swagger 1.1 +1.0 | 2011-08-10 | First release of the Swagger Specification diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/README.md b/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/README.md new file mode 100644 index 0000000000..3987bd7b97 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/README.md @@ -0,0 +1,15 @@ +# OpenAPI 3.0 Schema Generator + +This directory contains a support tool that reads (scrapes) the +Markdown text specification for OpenAPI 3.0 and builds a +corresponding JSON schema. + +It also contains "3.0.md", a local copy of the OpenAPI specification +with modifications that fix minor inconsistencies and make it easier +to read. We hope to have these changes merged into the official +document. + +## Disclaimer + +This does not generate the official OpenAPI 3.0 JSON Schema, which +at the time of this commit, does not exist. diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/main.go b/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/main.go new file mode 100644 index 0000000000..91459310ab --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/schema-generator/main.go @@ -0,0 +1,846 @@ +// Copyright 2017 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. + +// schema-generator is a support tool that generates the OpenAPI v3 JSON schema. +// Yes, it's gross, but the OpenAPI 3.0 spec, which defines REST APIs with a +// rigorous JSON schema, is itself defined with a Markdown file. Ironic? +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "log" + "os" + "regexp" + "sort" + "strings" + "unicode" + "unicode/utf8" + + "github.com/googleapis/gnostic/jsonschema" +) + +// convert the first character of a string to lower case +func lowerFirst(s string) string { + if s == "" { + return "" + } + r, n := utf8.DecodeRuneInString(s) + return string(unicode.ToLower(r)) + s[n:] +} + +// Section models a section of the OpenAPI specification text document. +type Section struct { + Level int + Text string + Title string + Children []*Section +} + +// ReadSection reads a section of the OpenAPI Specification, recursively dividing it into subsections +func ReadSection(text string, level int) (section *Section) { + titlePattern := regexp.MustCompile("^" + strings.Repeat("#", level) + " .*$") + subtitlePattern := regexp.MustCompile("^" + strings.Repeat("#", level+1) + " .*$") + + section = &Section{Level: level, Text: text} + lines := strings.Split(string(text), "\n") + subsection := "" + for i, line := range lines { + if i == 0 && titlePattern.Match([]byte(line)) { + section.Title = line + } else if subtitlePattern.Match([]byte(line)) { + // we've found a subsection title. + // if there's a subsection that we've already been reading, save it + if len(subsection) != 0 { + child := ReadSection(subsection, level+1) + section.Children = append(section.Children, child) + } + // start a new subsection + subsection = line + "\n" + } else { + // add to the subsection we've been reading + subsection += line + "\n" + } + } + // if this section has subsections, save the last one + if len(section.Children) > 0 { + child := ReadSection(subsection, level+1) + section.Children = append(section.Children, child) + } + return +} + +// Display recursively displays a section of the specification. +func (s *Section) Display(section string) { + if len(s.Children) == 0 { + //fmt.Printf("%s\n", s.Text) + } else { + for i, child := range s.Children { + var subsection string + if section == "" { + subsection = fmt.Sprintf("%d", i) + } else { + subsection = fmt.Sprintf("%s.%d", section, i) + } + fmt.Printf("%-12s %s\n", subsection, child.NiceTitle()) + child.Display(subsection) + } + } +} + +// remove a link from a string, leaving only the text that follows it +// if there is no link, just return the string +func stripLink(input string) (output string) { + stringPattern := regexp.MustCompile("^(.*)$") + stringWithLinkPattern := regexp.MustCompile("^(.*)$") + if matches := stringWithLinkPattern.FindSubmatch([]byte(input)); matches != nil { + return string(matches[1]) + } else if matches := stringPattern.FindSubmatch([]byte(input)); matches != nil { + return string(matches[1]) + } else { + return input + } +} + +// NiceTitle returns a nice-to-display title for a section by removing the opening "###" and any links. +func (s *Section) NiceTitle() string { + titlePattern := regexp.MustCompile("^#+ (.*)$") + titleWithLinkPattern := regexp.MustCompile("^#+ (.*)$") + if matches := titleWithLinkPattern.FindSubmatch([]byte(s.Title)); matches != nil { + return string(matches[1]) + } else if matches := titlePattern.FindSubmatch([]byte(s.Title)); matches != nil { + return string(matches[1]) + } else { + return "" + } +} + +// replace markdown links with their link text (removing the URL part) +func removeMarkdownLinks(input string) (output string) { + markdownLink := regexp.MustCompile("\\[([^\\]\\[]*)\\]\\(([^\\)]*)\\)") // matches [link title](link url) + output = string(markdownLink.ReplaceAll([]byte(input), []byte("$1"))) + return +} + +// extract the fixed fields from a table in a section +func parseFixedFields(input string, schemaObject *SchemaObject) { + lines := strings.Split(input, "\n") + for _, line := range lines { + + // replace escaped bars with "OR", assuming these are used to describe union types + line = strings.Replace(line, " \\| ", " OR ", -1) + + // split the table on the remaining bars + parts := strings.Split(line, "|") + if len(parts) > 1 { + fieldName := strings.Trim(stripLink(parts[0]), " ") + if fieldName != "Field Name" && fieldName != "---" { + + if len(parts) == 3 || len(parts) == 4 { + // this is what we expect + } else { + log.Printf("ERROR: %+v", parts) + } + + typeName := parts[1] + typeName = strings.Replace(typeName, "{expression}", "Expression", -1) + typeName = strings.Trim(typeName, " ") + typeName = strings.Replace(typeName, "`", "", -1) + typeName = removeMarkdownLinks(typeName) + typeName = strings.Replace(typeName, " ", "", -1) + typeName = strings.Replace(typeName, "Object", "", -1) + isArray := false + if typeName[0] == '[' && typeName[len(typeName)-1] == ']' { + typeName = typeName[1 : len(typeName)-1] + isArray = true + } + isMap := false + mapPattern := regexp.MustCompile("^Mapstring,\\[(.*)\\]$") + if matches := mapPattern.FindSubmatch([]byte(typeName)); matches != nil { + typeName = string(matches[1]) + isMap = true + } else { + // match map[string,] + mapPattern2 := regexp.MustCompile("^Map\\[string,(.+)\\]$") + if matches := mapPattern2.FindSubmatch([]byte(typeName)); matches != nil { + typeName = string(matches[1]) + isMap = true + } + } + description := strings.Trim(parts[len(parts)-1], " ") + description = removeMarkdownLinks(description) + description = strings.Replace(description, "\n", " ", -1) + + requiredLabel1 := "**Required.** " + requiredLabel2 := "**REQUIRED**." + if strings.Contains(description, requiredLabel1) || + strings.Contains(description, requiredLabel2) { + // only include required values if their "Validity" is "Any" or if no validity is specified + valid := true + if len(parts) == 4 { + validity := parts[2] + if strings.Contains(validity, "Any") { + valid = true + } else { + valid = false + } + } + if valid { + schemaObject.RequiredFields = append(schemaObject.RequiredFields, fieldName) + } + description = strings.Replace(description, requiredLabel1, "", -1) + description = strings.Replace(description, requiredLabel2, "", -1) + } + schemaField := SchemaObjectField{ + Name: fieldName, + Type: typeName, + IsArray: isArray, + IsMap: isMap, + Description: description, + } + schemaObject.FixedFields = append(schemaObject.FixedFields, schemaField) + } + } + } +} + +// extract the patterned fields from a table in a section +func parsePatternedFields(input string, schemaObject *SchemaObject) { + lines := strings.Split(input, "\n") + for _, line := range lines { + + line = strings.Replace(line, " \\| ", " OR ", -1) + + parts := strings.Split(line, "|") + if len(parts) > 1 { + fieldName := strings.Trim(stripLink(parts[0]), " ") + fieldName = removeMarkdownLinks(fieldName) + if fieldName == "HTTP Status Code" { + fieldName = "^([0-9X]{3})$" + } + if fieldName != "Field Pattern" && fieldName != "---" { + typeName := parts[1] + typeName = strings.Trim(typeName, " ") + typeName = strings.Replace(typeName, "`", "", -1) + typeName = removeMarkdownLinks(typeName) + typeName = strings.Replace(typeName, " ", "", -1) + typeName = strings.Replace(typeName, "Object", "", -1) + typeName = strings.Replace(typeName, "{expression}", "Expression", -1) + isArray := false + if typeName[0] == '[' && typeName[len(typeName)-1] == ']' { + typeName = typeName[1 : len(typeName)-1] + isArray = true + } + isMap := false + mapPattern := regexp.MustCompile("^Mapstring,\\[(.*)\\]$") + if matches := mapPattern.FindSubmatch([]byte(typeName)); matches != nil { + typeName = string(matches[1]) + isMap = true + } + description := strings.Trim(parts[len(parts)-1], " ") + description = removeMarkdownLinks(description) + description = strings.Replace(description, "\n", " ", -1) + + schemaField := SchemaObjectField{ + Name: fieldName, + Type: typeName, + IsArray: isArray, + IsMap: isMap, + Description: description, + } + schemaObject.PatternedFields = append(schemaObject.PatternedFields, schemaField) + } + } + } +} + +// SchemaObjectField describes a field of a schema. +type SchemaObjectField struct { + Name string `json:"name"` + Type string `json:"type"` + IsArray bool `json:"is_array"` + IsMap bool `json:"is_map"` + Description string `json:"description"` +} + +// SchemaObject describes a schema. +type SchemaObject struct { + Name string `json:"name"` + ID string `json:"id"` + Description string `json:"description"` + Extendable bool `json:"extendable"` + RequiredFields []string `json:"required"` + FixedFields []SchemaObjectField `json:"fixed"` + PatternedFields []SchemaObjectField `json:"patterned"` +} + +// SchemaModel is a collection of schemas. +type SchemaModel struct { + Objects []SchemaObject +} + +func (m *SchemaModel) objectWithID(id string) *SchemaObject { + for _, object := range m.Objects { + if object.ID == id { + return &object + } + } + return nil +} + +// NewSchemaModel returns a new SchemaModel. +func NewSchemaModel(filename string) (schemaModel *SchemaModel, err error) { + + b, err := ioutil.ReadFile("3.0.md") + if err != nil { + return nil, err + } + + // divide the specification into sections + document := ReadSection(string(b), 1) + document.Display("") + + // read object names and their details + specification := document.Children[4] // fragile! the section title is "Specification" + schema := specification.Children[7] // fragile! the section title is "Schema" + anchor := regexp.MustCompile("^#### 0 { + description := section.Children[0].Text + description = removeMarkdownLinks(description) + description = strings.Trim(description, " \t\n") + description = strings.Replace(description, "\n", " ", -1) + schemaObject.Description = description + } + + // is the object extendable? + if strings.Contains(section.Text, "Specification Extensions") { + schemaObject.Extendable = true + } + + // look for fixed fields + for _, child := range section.Children { + if child.NiceTitle() == "Fixed Fields" { + parseFixedFields(child.Text, &schemaObject) + } + } + + // look for patterned fields + for _, child := range section.Children { + if child.NiceTitle() == "Patterned Fields" { + parsePatternedFields(child.Text, &schemaObject) + } + } + + schemaObjects = append(schemaObjects, schemaObject) + } + } + + return &SchemaModel{Objects: schemaObjects}, nil +} + +// UnionType represents a union of two types. +type UnionType struct { + Name string + ObjectType1 string + ObjectType2 string +} + +var unionTypes map[string]*UnionType + +func noteUnionType(typeName, objectType1, objectType2 string) { + if unionTypes == nil { + unionTypes = make(map[string]*UnionType, 0) + } + unionTypes[typeName] = &UnionType{ + Name: typeName, + ObjectType1: objectType1, + ObjectType2: objectType2, + } +} + +// MapType represents a map of a specified type (with string keys). +type MapType struct { + Name string + ObjectType string +} + +var mapTypes map[string]*MapType + +func noteMapType(typeName, objectType string) { + if mapTypes == nil { + mapTypes = make(map[string]*MapType, 0) + } + mapTypes[typeName] = &MapType{ + Name: typeName, + ObjectType: objectType, + } +} + +func definitionNameForType(typeName string) string { + name := typeName + switch typeName { + case "OAuthFlows": + name = "oauthFlows" + case "OAuthFlow": + name = "oauthFlow" + case "XML": + name = "xml" + case "ExternalDocumentation": + name = "externalDocs" + default: + // does the name contain an "OR" + if parts := strings.Split(typeName, "OR"); len(parts) > 1 { + name = lowerFirst(parts[0]) + "Or" + parts[1] + noteUnionType(name, parts[0], parts[1]) + } else { + name = lowerFirst(typeName) + } + } + return "#/definitions/" + name +} + +func pluralize(name string) string { + if name == "any" { + return "anys" + } + switch name[len(name)-1] { + case 'y': + name = name[0:len(name)-1] + "ies" + case 's': + name = name + "Map" + default: + name = name + "s" + } + return name +} + +func definitionNameForMapOfType(typeName string) string { + // pluralize the type name to get the name of an object representing a map of them + var elementTypeName string + var mapTypeName string + if parts := strings.Split(typeName, "OR"); len(parts) > 1 { + elementTypeName = lowerFirst(parts[0]) + "Or" + parts[1] + noteUnionType(elementTypeName, parts[0], parts[1]) + mapTypeName = pluralize(lowerFirst(parts[0])) + "Or" + pluralize(parts[1]) + } else { + elementTypeName = lowerFirst(typeName) + mapTypeName = pluralize(elementTypeName) + } + noteMapType(mapTypeName, elementTypeName) + return "#/definitions/" + mapTypeName +} + +func updateSchemaFieldWithModelField(schemaField *jsonschema.Schema, modelField *SchemaObjectField) { + // fmt.Printf("IN %s:%+v\n", name, schemaField) + // update the attributes of the schema field + if modelField.IsArray { + // is array + itemSchema := &jsonschema.Schema{} + switch modelField.Type { + case "string": + itemSchema.Type = jsonschema.NewStringOrStringArrayWithString("string") + case "boolean": + itemSchema.Type = jsonschema.NewStringOrStringArrayWithString("boolean") + case "primitive": + itemSchema.Ref = stringptr(definitionNameForType("Primitive")) + default: + itemSchema.Ref = stringptr(definitionNameForType(modelField.Type)) + } + schemaField.Items = jsonschema.NewSchemaOrSchemaArrayWithSchema(itemSchema) + schemaField.Type = jsonschema.NewStringOrStringArrayWithString("array") + boolValue := true // not sure about this + schemaField.UniqueItems = &boolValue + } else if modelField.IsMap { + schemaField.Ref = stringptr(definitionNameForMapOfType(modelField.Type)) + } else { + // is scalar + switch modelField.Type { + case "string": + schemaField.Type = jsonschema.NewStringOrStringArrayWithString("string") + case "boolean": + schemaField.Type = jsonschema.NewStringOrStringArrayWithString("boolean") + case "primitive": + schemaField.Ref = stringptr(definitionNameForType("Primitive")) + default: + schemaField.Ref = stringptr(definitionNameForType(modelField.Type)) + } + } +} + +func buildSchemaWithModel(modelObject *SchemaObject) (schema *jsonschema.Schema) { + + schema = &jsonschema.Schema{} + schema.Type = jsonschema.NewStringOrStringArrayWithString("object") + + if modelObject.RequiredFields != nil && len(modelObject.RequiredFields) > 0 { + // copy array + arrayCopy := modelObject.RequiredFields + schema.Required = &arrayCopy + } + + schema.AdditionalProperties = jsonschema.NewSchemaOrBooleanWithBoolean(false) + + schema.Description = stringptr(modelObject.Description) + + // handle fixed fields + if modelObject.FixedFields != nil { + newNamedSchemas := make([]*jsonschema.NamedSchema, 0) + for _, modelField := range modelObject.FixedFields { + schemaField := schema.PropertyWithName(modelField.Name) + if schemaField == nil { + // create and add the schema field + schemaField = &jsonschema.Schema{} + namedSchema := &jsonschema.NamedSchema{Name: modelField.Name, Value: schemaField} + newNamedSchemas = append(newNamedSchemas, namedSchema) + } + updateSchemaFieldWithModelField(schemaField, &modelField) + } + for _, pair := range newNamedSchemas { + if schema.Properties == nil { + properties := make([]*jsonschema.NamedSchema, 0) + schema.Properties = &properties + } + *(schema.Properties) = append(*(schema.Properties), pair) + } + + } else { + if schema.Properties != nil { + fmt.Printf("SCHEMA SHOULD NOT HAVE PROPERTIES %s\n", modelObject.ID) + } + } + + // handle patterned fields + if modelObject.PatternedFields != nil { + newNamedSchemas := make([]*jsonschema.NamedSchema, 0) + + for _, modelField := range modelObject.PatternedFields { + schemaField := schema.PatternPropertyWithName(modelField.Name) + if schemaField == nil { + // create and add the schema field + schemaField = &jsonschema.Schema{} + // Component names should match "^[a-zA-Z0-9\.\-_]+$" + // See https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/versions/3.0.md#componentsObject + nameRegex := "^[a-zA-Z0-9\\\\.\\\\-_]+$" + if modelObject.Name == "Scopes Object" { + nameRegex = "^" + } else if modelObject.Name == "Headers Object" { + nameRegex = "^[a-zA-Z0-9!#\\-\\$%&'\\*\\+\\\\\\.\\^_`\\|~]+" + } + propertyName := strings.Replace(modelField.Name, "{name}", nameRegex, -1) + // The field name MUST begin with a slash, see https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/versions/3.0.md#paths-object + // JSON Schema for OpenAPI v2 uses "^/" as regex for paths, see https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/schemas/v2.0/schema.json#L173 + propertyName = strings.Replace(propertyName, "/{path}", "^/", -1) + // Replace human-friendly (and regex-confusing) description with a blank pattern + propertyName = strings.Replace(propertyName, "{expression}", "^", -1) + propertyName = strings.Replace(propertyName, "{property}", "^", -1) + namedSchema := &jsonschema.NamedSchema{Name: propertyName, Value: schemaField} + newNamedSchemas = append(newNamedSchemas, namedSchema) + } + updateSchemaFieldWithModelField(schemaField, &modelField) + } + + for _, pair := range newNamedSchemas { + if schema.PatternProperties == nil { + properties := make([]*jsonschema.NamedSchema, 0) + schema.PatternProperties = &properties + } + *(schema.PatternProperties) = append(*(schema.PatternProperties), pair) + } + + } else { + if schema.PatternProperties != nil && !modelObject.Extendable { + fmt.Printf("SCHEMA SHOULD NOT HAVE PATTERN PROPERTIES %s\n", modelObject.ID) + } + } + + if modelObject.Extendable { + schemaField := schema.PatternPropertyWithName("^x-") + if schemaField != nil { + schemaField.Ref = stringptr("#/definitions/specificationExtension") + } else { + schemaField = &jsonschema.Schema{} + schemaField.Ref = stringptr("#/definitions/specificationExtension") + namedSchema := &jsonschema.NamedSchema{Name: "^x-", Value: schemaField} + if schema.PatternProperties == nil { + properties := make([]*jsonschema.NamedSchema, 0) + schema.PatternProperties = &properties + } + *(schema.PatternProperties) = append(*(schema.PatternProperties), namedSchema) + } + } else { + schemaField := schema.PatternPropertyWithName("^x-") + if schemaField != nil { + fmt.Printf("INVALID EXTENSION SUPPORT %s:%s\n", modelObject.ID, "^x-") + } + } + + return schema +} + +// return a pointer to a copy of a passed-in string +func stringptr(input string) (output *string) { + return &input +} + +func int64ptr(input int64) (output *int64) { + return &input +} + +func arrayOfSchema() *jsonschema.Schema { + return &jsonschema.Schema{ + Type: jsonschema.NewStringOrStringArrayWithString("array"), + MinItems: int64ptr(1), + Items: jsonschema.NewSchemaOrSchemaArrayWithSchema(&jsonschema.Schema{Ref: stringptr("#/definitions/schemaOrReference")}), + } +} + +func main() { + // read and parse the text specification into a model structure + model, err := NewSchemaModel("3.0.md") + if err != nil { + panic(err) + } + + // write the model as JSON (for debugging) + modelJSON, _ := json.MarshalIndent(model, "", " ") + err = ioutil.WriteFile("model.json", modelJSON, 0644) + if err != nil { + panic(err) + } + + // build the top-level schema using the "OAS" model + oasModel := model.objectWithID("oas") + if oasModel == nil { + log.Printf("Unable to find OAS model. Has the source document structure changed?") + os.Exit(-1) + } + schema := buildSchemaWithModel(oasModel) + + // manually set a few fields + schema.Title = stringptr("A JSON Schema for OpenAPI 3.0.") + schema.ID = stringptr("http://openapis.org/v3/schema.json#") + schema.Schema = stringptr("http://json-schema.org/draft-04/schema#") + + // loop over all models and create the corresponding schema objects + definitions := make([]*jsonschema.NamedSchema, 0) + schema.Definitions = &definitions + + for _, modelObject := range model.Objects { + if modelObject.ID == "oas" { + continue + } + definitionSchema := buildSchemaWithModel(&modelObject) + name := modelObject.ID + if name == "externalDocumentation" { + name = "externalDocs" + } + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema(name, definitionSchema)) + } + + // copy the properties of headerObject from parameterObject + headerObject := schema.DefinitionWithName("header") + parameterObject := schema.DefinitionWithName("parameter") + if parameterObject != nil { + newArray := make([]*jsonschema.NamedSchema, 0) + for _, property := range *(parameterObject.Properties) { + // we need to remove a few properties... + if property.Name != "name" && property.Name != "in" { + newArray = append(newArray, property) + } + } + headerObject.Properties = &newArray + // "So a shorthand for copying array arr would be tmp := append([]int{}, arr...)" + ppArray := make([]*jsonschema.NamedSchema, 0) + ppArray = append(ppArray, *(parameterObject.PatternProperties)...) + headerObject.PatternProperties = &ppArray + } + + // generate implied union types + unionTypeKeys := make([]string, 0, len(unionTypes)) + for key := range unionTypes { + unionTypeKeys = append(unionTypeKeys, key) + } + sort.Strings(unionTypeKeys) + for _, unionTypeKey := range unionTypeKeys { + unionType := unionTypes[unionTypeKey] + objectSchema := schema.DefinitionWithName(unionType.Name) + if objectSchema == nil { + objectSchema = &jsonschema.Schema{} + oneOf := make([]*jsonschema.Schema, 0) + oneOf = append(oneOf, &jsonschema.Schema{Ref: stringptr("#/definitions/" + lowerFirst(unionType.ObjectType1))}) + oneOf = append(oneOf, &jsonschema.Schema{Ref: stringptr("#/definitions/" + lowerFirst(unionType.ObjectType2))}) + objectSchema.OneOf = &oneOf + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema(unionType.Name, objectSchema)) + } + } + + // generate implied map types + mapTypeKeys := make([]string, 0, len(mapTypes)) + for key := range mapTypes { + mapTypeKeys = append(mapTypeKeys, key) + } + sort.Strings(mapTypeKeys) + for _, mapTypeKey := range mapTypeKeys { + mapType := mapTypes[mapTypeKey] + objectSchema := schema.DefinitionWithName(mapType.Name) + if objectSchema == nil { + objectSchema = &jsonschema.Schema{} + objectSchema.Type = jsonschema.NewStringOrStringArrayWithString("object") + additionalPropertiesSchema := &jsonschema.Schema{} + if mapType.ObjectType == "string" { + additionalPropertiesSchema.Type = jsonschema.NewStringOrStringArrayWithString("string") + } else { + additionalPropertiesSchema.Ref = stringptr("#/definitions/" + lowerFirst(mapType.ObjectType)) + } + objectSchema.AdditionalProperties = jsonschema.NewSchemaOrBooleanWithSchema(additionalPropertiesSchema) + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema(mapType.Name, objectSchema)) + } + } + + // add schema objects for "object", "any", and "expression" + if true { + objectSchema := &jsonschema.Schema{} + objectSchema.Type = jsonschema.NewStringOrStringArrayWithString("object") + objectSchema.AdditionalProperties = jsonschema.NewSchemaOrBooleanWithBoolean(true) + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema("object", objectSchema)) + } + if true { + objectSchema := &jsonschema.Schema{} + objectSchema.AdditionalProperties = jsonschema.NewSchemaOrBooleanWithBoolean(true) + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema("any", objectSchema)) + } + if true { + objectSchema := &jsonschema.Schema{} + objectSchema.Type = jsonschema.NewStringOrStringArrayWithString("object") + objectSchema.AdditionalProperties = jsonschema.NewSchemaOrBooleanWithBoolean(true) + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema("expression", objectSchema)) + } + + // add schema objects for "specificationExtension" + if true { + objectSchema := &jsonschema.Schema{} + objectSchema.Description = stringptr("Any property starting with x- is valid.") + oneOf := make([]*jsonschema.Schema, 0) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("null")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("number")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("boolean")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("string")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("object")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("array")}) + objectSchema.OneOf = &oneOf + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema("specificationExtension", objectSchema)) + } + + // add schema objects for "defaultType" + if true { + objectSchema := &jsonschema.Schema{} + oneOf := make([]*jsonschema.Schema, 0) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("null")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("array")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("object")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("number")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("boolean")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("string")}) + objectSchema.OneOf = &oneOf + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema("defaultType", objectSchema)) + } + + // add schema objects for "primitive" + if false { // we don't seem to need these for 3.0 RC2 + objectSchema := &jsonschema.Schema{} + oneOf := make([]*jsonschema.Schema, 0) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("number")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("boolean")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("string")}) + objectSchema.OneOf = &oneOf + *schema.Definitions = append(*schema.Definitions, jsonschema.NewNamedSchema("primitive", objectSchema)) + } + + // force a few more things into the "schema" schema + schemaObject := schema.DefinitionWithName("schema") + schemaObject.CopyOfficialSchemaProperties( + []string{ + "title", + "multipleOf", + "maximum", + "exclusiveMaximum", + "minimum", + "exclusiveMinimum", + "maxLength", + "minLength", + "pattern", + "maxItems", + "minItems", + "uniqueItems", + "maxProperties", + "minProperties", + "required", + "enum", + }) + schemaObject.AdditionalProperties = jsonschema.NewSchemaOrBooleanWithBoolean(false) + schemaObject.AddProperty("type", &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("string")}) + schemaObject.AddProperty("allOf", arrayOfSchema()) + schemaObject.AddProperty("oneOf", arrayOfSchema()) + schemaObject.AddProperty("anyOf", arrayOfSchema()) + schemaObject.AddProperty("not", &jsonschema.Schema{Ref: stringptr("#/definitions/schema")}) + anyOf := make([]*jsonschema.Schema, 0) + anyOf = append(anyOf, &jsonschema.Schema{Ref: stringptr("#/definitions/schemaOrReference")}) + anyOf = append(anyOf, arrayOfSchema()) + schemaObject.AddProperty("items", + &jsonschema.Schema{AnyOf: &anyOf}) + schemaObject.AddProperty("properties", &jsonschema.Schema{ + Type: jsonschema.NewStringOrStringArrayWithString("object"), + AdditionalProperties: jsonschema.NewSchemaOrBooleanWithSchema( + &jsonschema.Schema{Ref: stringptr("#/definitions/schemaOrReference")})}) + + if true { // add additionalProperties schema object + oneOf := make([]*jsonschema.Schema, 0) + oneOf = append(oneOf, &jsonschema.Schema{Ref: stringptr("#/definitions/schemaOrReference")}) + oneOf = append(oneOf, &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("boolean")}) + schemaObject.AddProperty("additionalProperties", &jsonschema.Schema{OneOf: &oneOf}) + } + + schemaObject.AddProperty("default", &jsonschema.Schema{Ref: stringptr("#/definitions/defaultType")}) + schemaObject.AddProperty("description", &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("string")}) + schemaObject.AddProperty("format", &jsonschema.Schema{Type: jsonschema.NewStringOrStringArrayWithString("string")}) + + // fix the content object + contentObject := schema.DefinitionWithName("content") + if contentObject != nil { + pairs := make([]*jsonschema.NamedSchema, 0) + contentObject.PatternProperties = &pairs + namedSchema := &jsonschema.NamedSchema{Name: "^", Value: &jsonschema.Schema{Ref: stringptr("#/definitions/mediaType")}} + *(contentObject.PatternProperties) = append(*(contentObject.PatternProperties), namedSchema) + } + + // write the updated schema + output := schema.JSONString() + err = ioutil.WriteFile("schema.json", []byte(output), 0644) + if err != nil { + panic(err) + } +} diff --git a/vendor/github.com/googleapis/gnostic/README.md b/vendor/github.com/googleapis/gnostic/README.md new file mode 100644 index 0000000000..d350f3f013 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/README.md @@ -0,0 +1,103 @@ +[![Build Status](https://travis-ci.org/googleapis/gnostic.svg?branch=master)](https://travis-ci.org/googleapis/gnostic) + +# ⨁ gnostic + +This repository contains a Go command line tool which converts +JSON and YAML [OpenAPI](https://github.com/OAI/OpenAPI-Specification) +descriptions to and from equivalent Protocol Buffer representations. + +[Protocol Buffers](https://developers.google.com/protocol-buffers/) +provide a language-neutral, platform-neutral, extensible mechanism +for serializing structured data. +**gnostic**'s Protocol Buffer models for the OpenAPI Specification +can be used to generate code that includes data structures with +explicit fields for the elements of an OpenAPI description. +This makes it possible for developers to work with OpenAPI +descriptions in type-safe ways, which is particularly useful +in strongly-typed languages like Go and Swift. + +**gnostic** reads OpenAPI descriptions into +these generated data structures, reports errors, +resolves internal dependencies, and writes the results +in a binary form that can be used in any language that is +supported by the Protocol Buffer tools. +A plugin interface simplifies integration with API +tools written in a variety of different languages, +and when necessary, Protocol Buffer OpenAPI descriptions +can be reexported as JSON or YAML. + +**gnostic** compilation code and OpenAPI Protocol Buffer +models are automatically generated from an +[OpenAPI JSON Schema](https://github.com/OAI/OpenAPI-Specification/blob/master/schemas/v2.0/schema.json). +Source code for the generator is in the [generate-gnostic](generate-gnostic) directory. + +## Disclaimer + +This is prerelease software and work in progress. Feedback and +contributions are welcome, but we currently make no guarantees of +function or stability. + +## Requirements + +**gnostic** can be run in any environment that supports [Go](http://golang.org) +and the [Google Protocol Buffer Compiler](https://github.com/google/protobuf). + +## Installation + +1. Get this package by downloading it with `go get`. + + go get github.com/googleapis/gnostic + +2. [Optional] Build and run the compiler generator. +This uses the OpenAPI JSON schema to generate a Protocol Buffer language file +that describes the OpenAPI specification and a Go-language file of code that +will read a JSON or YAML OpenAPI representation into the generated protocol +buffers. Pre-generated versions of these files are in the OpenAPIv2 directory. + + cd $GOPATH/src/github.com/googleapis/gnostic/generate-gnostic + go install + cd .. + generate-gnostic --v2 + +3. [Optional] Generate Protocol Buffer support code. +A pre-generated version of this file is checked into the OpenAPIv2 directory. +This step requires a local installation of protoc, the Protocol Buffer Compiler. +You can get protoc [here](https://github.com/google/protobuf). + + ./COMPILE-PROTOS.sh + +4. [Optional] Rebuild **gnostic**. This is only necessary if you've performed steps +2 or 3 above. + + go install github.com/googleapis/gnostic + +5. Run **gnostic**. This will create a file in the current directory named "petstore.pb" that contains a binary +Protocol Buffer description of a sample API. + + gnostic --pb-out=. examples/petstore.json + +6. You can also compile files that you specify with a URL. Here's another way to compile the previous +example. This time we're creating "petstore.text", which contains a textual representation of the +Protocol Buffer description. This is mainly for use in testing and debugging. + + gnostic --text-out=petstore.text https://raw.githubusercontent.com/googleapis/gnostic/master/examples/petstore.json + +7. For a sample application, see apps/report. + + go install github.com/googleapis/gnostic/apps/report + report petstore.pb + +8. **gnostic** supports plugins. This builds and runs a sample plugin +that reports some basic information about an API. The "-" causes the plugin to +write its output to stdout. + + go install github.com/googleapis/gnostic/plugins/gnostic-go-sample + gnostic examples/petstore.json --go-sample-out=- + +## Copyright + +Copyright 2017, Google Inc. + +## License + +Released under the Apache 2.0 license. diff --git a/vendor/github.com/googleapis/gnostic/apps/petstore-builder/README.md b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/README.md new file mode 100644 index 0000000000..12eebb628c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/README.md @@ -0,0 +1,5 @@ +# OpenAPI Builder Sample + +This directory contains a simple sample application that builds +and exports an OpenAPI 2.0 description of a sample API. + diff --git a/vendor/github.com/googleapis/gnostic/apps/petstore-builder/main.go b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/main.go new file mode 100644 index 0000000000..8a3eb8cdd8 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/main.go @@ -0,0 +1,82 @@ +// Copyright 2017 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 main + +import ( + "fmt" + "io/ioutil" + "os" + "path" + + "github.com/golang/protobuf/proto" +) + +func usage() string { + return fmt.Sprintf(` +Usage: %s [OPTIONS] +Options: + --v2 + Generate an OpenAPI v2 description. + --v3 + Generate an OpenAPI v3 description. +`, path.Base(os.Args[0])) +} + +func main() { + openAPIv2 := false + openAPIv3 := false + + for i, arg := range os.Args { + if i == 0 { + continue // skip the tool name + } + if arg == "--v2" { + openAPIv2 = true + } else if arg == "--v3" { + openAPIv3 = true + } else { + fmt.Printf("Unknown option: %s.\n%s\n", arg, usage()) + os.Exit(-1) + } + } + + if !openAPIv2 && !openAPIv3 { + openAPIv2 = true + } + + if openAPIv2 { + document := buildDocumentV2() + bytes, err := proto.Marshal(document) + if err != nil { + panic(err) + } + err = ioutil.WriteFile("petstore-v2.pb", bytes, 0644) + if err != nil { + panic(err) + } + } + + if openAPIv3 { + document := buildDocumentV3() + bytes, err := proto.Marshal(document) + if err != nil { + panic(err) + } + err = ioutil.WriteFile("petstore-v3.pb", bytes, 0644) + if err != nil { + panic(err) + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/apps/petstore-builder/petstore-v2.go b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/petstore-v2.go new file mode 100644 index 0000000000..5531d35ca3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/petstore-v2.go @@ -0,0 +1,260 @@ +// Copyright 2017 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 main + +import ( + v2 "github.com/googleapis/gnostic/OpenAPIv2" +) + +func buildDocumentV2() *v2.Document { + d := &v2.Document{} + d.Swagger = "2.0" + d.Info = &v2.Info{ + Title: "Swagger Petstore", + Version: "1.0.0", + License: &v2.License{Name: "MIT"}, + } + d.Host = "petstore.swagger.io" + d.BasePath = "/v1" + d.Schemes = []string{"http"} + d.Consumes = []string{"application/json"} + d.Produces = []string{"application/json"} + d.Paths = &v2.Paths{} + d.Paths.Path = append(d.Paths.Path, + &v2.NamedPathItem{ + Name: "/pets", + Value: &v2.PathItem{ + Get: &v2.Operation{ + Summary: "List all pets", + OperationId: "listPets", + Tags: []string{"pets"}, + Parameters: []*v2.ParametersItem{ + &v2.ParametersItem{ + Oneof: &v2.ParametersItem_Parameter{ + Parameter: &v2.Parameter{ + Oneof: &v2.Parameter_NonBodyParameter{ + NonBodyParameter: &v2.NonBodyParameter{ + Oneof: &v2.NonBodyParameter_QueryParameterSubSchema{ + QueryParameterSubSchema: &v2.QueryParameterSubSchema{ + Name: "limit", + In: "query", + Description: "How many items to return at one time (max 100)", + Required: false, + Type: "integer", + Format: "int32", + }, + }, + }, + }, + }, + }, + }, + }, + Responses: &v2.Responses{ + ResponseCode: []*v2.NamedResponseValue{ + &v2.NamedResponseValue{ + Name: "200", + Value: &v2.ResponseValue{ + Oneof: &v2.ResponseValue_Response{ + Response: &v2.Response{ + Description: "An paged array of pets", // [sic] match other examples + Schema: &v2.SchemaItem{ + Oneof: &v2.SchemaItem_Schema{ + Schema: &v2.Schema{ + XRef: "#/definitions/Pets", + }, + }, + }, + Headers: &v2.Headers{ + AdditionalProperties: []*v2.NamedHeader{ + &v2.NamedHeader{ + Name: "x-next", + Value: &v2.Header{ + Type: "string", + Description: "A link to the next page of responses", + }, + }, + }, + }, + }, + }, + }, + }, + &v2.NamedResponseValue{ + Name: "default", + Value: &v2.ResponseValue{ + Oneof: &v2.ResponseValue_Response{ + Response: &v2.Response{ + Description: "unexpected error", + Schema: &v2.SchemaItem{ + Oneof: &v2.SchemaItem_Schema{ + Schema: &v2.Schema{ + XRef: "#/definitions/Error", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + Post: &v2.Operation{ + Summary: "Create a pet", + OperationId: "createPets", + Tags: []string{"pets"}, + Parameters: []*v2.ParametersItem{}, + Responses: &v2.Responses{ + ResponseCode: []*v2.NamedResponseValue{ + &v2.NamedResponseValue{ + Name: "201", + Value: &v2.ResponseValue{ + Oneof: &v2.ResponseValue_Response{ + Response: &v2.Response{ + Description: "Null response", + }, + }, + }, + }, + &v2.NamedResponseValue{ + Name: "default", + Value: &v2.ResponseValue{ + Oneof: &v2.ResponseValue_Response{ + Response: &v2.Response{ + Description: "unexpected error", + Schema: &v2.SchemaItem{ + Oneof: &v2.SchemaItem_Schema{ + Schema: &v2.Schema{ + XRef: "#/definitions/Error", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }}) + d.Paths.Path = append(d.Paths.Path, + &v2.NamedPathItem{ + Name: "/pets/{petId}", + Value: &v2.PathItem{ + Get: &v2.Operation{ + Summary: "Info for a specific pet", + OperationId: "showPetById", + Tags: []string{"pets"}, + Parameters: []*v2.ParametersItem{ + &v2.ParametersItem{ + Oneof: &v2.ParametersItem_Parameter{ + Parameter: &v2.Parameter{ + Oneof: &v2.Parameter_NonBodyParameter{ + NonBodyParameter: &v2.NonBodyParameter{ + Oneof: &v2.NonBodyParameter_PathParameterSubSchema{ + PathParameterSubSchema: &v2.PathParameterSubSchema{ + Name: "petId", + In: "path", + Description: "The id of the pet to retrieve", + Required: true, + Type: "string", + }, + }, + }, + }, + }, + }, + }, + }, + Responses: &v2.Responses{ + ResponseCode: []*v2.NamedResponseValue{ + &v2.NamedResponseValue{ + Name: "200", + Value: &v2.ResponseValue{ + Oneof: &v2.ResponseValue_Response{ + Response: &v2.Response{ + Description: "Expected response to a valid request", + Schema: &v2.SchemaItem{ + Oneof: &v2.SchemaItem_Schema{ + Schema: &v2.Schema{ + XRef: "#/definitions/Pets", + }, + }, + }, + }, + }, + }, + }, + &v2.NamedResponseValue{ + Name: "default", + Value: &v2.ResponseValue{ + Oneof: &v2.ResponseValue_Response{ + Response: &v2.Response{ + Description: "unexpected error", + Schema: &v2.SchemaItem{ + Oneof: &v2.SchemaItem_Schema{ + Schema: &v2.Schema{ + XRef: "#/definitions/Error", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }}) + d.Definitions = &v2.Definitions{} + d.Definitions.AdditionalProperties = append(d.Definitions.AdditionalProperties, + &v2.NamedSchema{ + Name: "Pet", + Value: &v2.Schema{ + Required: []string{"id", "name"}, + Properties: &v2.Properties{ + AdditionalProperties: []*v2.NamedSchema{ + &v2.NamedSchema{Name: "id", Value: &v2.Schema{ + Type: &v2.TypeItem{[]string{"integer"}}, + Format: "int64"}}, + &v2.NamedSchema{Name: "name", Value: &v2.Schema{Type: &v2.TypeItem{[]string{"string"}}}}, + &v2.NamedSchema{Name: "tag", Value: &v2.Schema{Type: &v2.TypeItem{[]string{"string"}}}}, + }, + }, + }}) + d.Definitions.AdditionalProperties = append(d.Definitions.AdditionalProperties, + &v2.NamedSchema{ + Name: "Pets", + Value: &v2.Schema{ + Type: &v2.TypeItem{[]string{"array"}}, + Items: &v2.ItemsItem{[]*v2.Schema{&v2.Schema{XRef: "#/definitions/Pet"}}}, + }}) + d.Definitions.AdditionalProperties = append(d.Definitions.AdditionalProperties, + &v2.NamedSchema{ + Name: "Error", + Value: &v2.Schema{ + Required: []string{"code", "message"}, + Properties: &v2.Properties{ + AdditionalProperties: []*v2.NamedSchema{ + &v2.NamedSchema{Name: "code", Value: &v2.Schema{ + Type: &v2.TypeItem{[]string{"integer"}}, + Format: "int32"}}, + &v2.NamedSchema{Name: "message", Value: &v2.Schema{Type: &v2.TypeItem{[]string{"string"}}}}, + }, + }, + }}) + return d +} diff --git a/vendor/github.com/googleapis/gnostic/apps/petstore-builder/petstore-v3.go b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/petstore-v3.go new file mode 100644 index 0000000000..b5ea0e2ed2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/apps/petstore-builder/petstore-v3.go @@ -0,0 +1,369 @@ +// Copyright 2017 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 main + +import ( + v3 "github.com/googleapis/gnostic/OpenAPIv3" +) + +func buildDocumentV3() *v3.Document { + d := &v3.Document{} + d.Openapi = "3.0" + d.Info = &v3.Info{ + Title: "OpenAPI Petstore", + Version: "1.0.0", + License: &v3.License{Name: "MIT"}, + } + d.Servers = append(d.Servers, &v3.Server{ + Url: "https://petstore.openapis.org/v1", + Description: "Development server", + }) + d.Paths = &v3.Paths{} + d.Paths.Path = append(d.Paths.Path, + &v3.NamedPathItem{ + Name: "/pets", + Value: &v3.PathItem{ + Get: &v3.Operation{ + Summary: "List all pets", + OperationId: "listPets", + Tags: []string{"pets"}, + Parameters: []*v3.ParameterOrReference{ + &v3.ParameterOrReference{ + Oneof: &v3.ParameterOrReference_Parameter{ + Parameter: &v3.Parameter{ + Name: "limit", + In: "query", + Description: "How many items to return at one time (max 100)", + Required: false, + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "integer", + Format: "int32", + }, + }, + }, + }, + }, + }, + }, + Responses: &v3.Responses{ + Default: &v3.ResponseOrReference{ + Oneof: &v3.ResponseOrReference_Response{ + Response: &v3.Response{ + Description: "unexpected error", + Content: &v3.MediaTypes{ + AdditionalProperties: []*v3.NamedMediaType{ + &v3.NamedMediaType{ + Name: "application/json", + Value: &v3.MediaType{ + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Reference{ + Reference: &v3.Reference{ + XRef: "#/components/schemas/Error", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + ResponseOrReference: []*v3.NamedResponseOrReference{ + &v3.NamedResponseOrReference{ + Name: "200", + Value: &v3.ResponseOrReference{ + Oneof: &v3.ResponseOrReference_Response{ + Response: &v3.Response{ + Description: "An paged array of pets", // [sic] match other examples + Content: &v3.MediaTypes{ + AdditionalProperties: []*v3.NamedMediaType{ + &v3.NamedMediaType{ + Name: "application/json", + Value: &v3.MediaType{ + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Reference{ + Reference: &v3.Reference{ + XRef: "#/components/schemas/Pets", + }, + }, + }, + }, + }, + }, + }, + Headers: &v3.HeadersOrReferences{ + AdditionalProperties: []*v3.NamedHeaderOrReference{ + &v3.NamedHeaderOrReference{ + Name: "x-next", + Value: &v3.HeaderOrReference{ + Oneof: &v3.HeaderOrReference_Header{ + Header: &v3.Header{ + Description: "A link to the next page of responses", + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "string", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + Post: &v3.Operation{ + Summary: "Create a pet", + OperationId: "createPets", + Tags: []string{"pets"}, + Responses: &v3.Responses{ + Default: &v3.ResponseOrReference{ + Oneof: &v3.ResponseOrReference_Response{ + Response: &v3.Response{ + Description: "unexpected error", + Content: &v3.MediaTypes{ + AdditionalProperties: []*v3.NamedMediaType{ + &v3.NamedMediaType{ + Name: "application/json", + Value: &v3.MediaType{ + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Reference{ + Reference: &v3.Reference{ + XRef: "#/components/schemas/Error", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + ResponseOrReference: []*v3.NamedResponseOrReference{ + &v3.NamedResponseOrReference{ + Name: "201", + Value: &v3.ResponseOrReference{ + Oneof: &v3.ResponseOrReference_Response{ + Response: &v3.Response{ + Description: "Null response", + }, + }, + }, + }, + }, + }, + }, + }}, + &v3.NamedPathItem{ + Name: "/pets/{petId}", + Value: &v3.PathItem{ + Get: &v3.Operation{ + Summary: "Info for a specific pet", + OperationId: "showPetById", + Tags: []string{"pets"}, + Parameters: []*v3.ParameterOrReference{ + &v3.ParameterOrReference{ + Oneof: &v3.ParameterOrReference_Parameter{ + Parameter: &v3.Parameter{ + Name: "petId", + In: "path", + Description: "The id of the pet to retrieve", + Required: true, + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "string", + }, + }, + }, + }, + }, + }, + }, + Responses: &v3.Responses{ + Default: &v3.ResponseOrReference{ + Oneof: &v3.ResponseOrReference_Response{ + Response: &v3.Response{ + Description: "unexpected error", + Content: &v3.MediaTypes{ + AdditionalProperties: []*v3.NamedMediaType{ + &v3.NamedMediaType{ + Name: "application/json", + Value: &v3.MediaType{ + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Reference{ + Reference: &v3.Reference{ + XRef: "#/components/schemas/Error", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + ResponseOrReference: []*v3.NamedResponseOrReference{ + &v3.NamedResponseOrReference{ + Name: "200", + Value: &v3.ResponseOrReference{ + Oneof: &v3.ResponseOrReference_Response{ + Response: &v3.Response{ + Description: "Expected response to a valid request", + Content: &v3.MediaTypes{ + AdditionalProperties: []*v3.NamedMediaType{ + &v3.NamedMediaType{ + Name: "application/json", + Value: &v3.MediaType{ + Schema: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Reference{ + Reference: &v3.Reference{ + XRef: "#/components/schemas/Pets", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }}) + d.Components = &v3.Components{ + Schemas: &v3.SchemasOrReferences{ + AdditionalProperties: []*v3.NamedSchemaOrReference{ + &v3.NamedSchemaOrReference{ + Name: "Pet", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Required: []string{"id", "name"}, + Properties: &v3.Properties{ + AdditionalProperties: []*v3.NamedSchemaOrReference{ + &v3.NamedSchemaOrReference{ + Name: "id", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "integer", + Format: "int64", + }, + }, + }, + }, + &v3.NamedSchemaOrReference{ + Name: "name", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "string", + }, + }, + }, + }, + &v3.NamedSchemaOrReference{ + Name: "tag", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "string", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + &v3.NamedSchemaOrReference{ + Name: "Pets", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "array", + Items: &v3.ItemsItem{ + SchemaOrReference: []*v3.SchemaOrReference{ + &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Reference{ + Reference: &v3.Reference{ + XRef: "#/components/schemas/Pet", + }, + }, + }, + }, + }, + }, + }, + }, + }, + &v3.NamedSchemaOrReference{ + Name: "Error", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Required: []string{"code", "message"}, + Properties: &v3.Properties{ + AdditionalProperties: []*v3.NamedSchemaOrReference{ + &v3.NamedSchemaOrReference{ + Name: "code", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "integer", + Format: "int32", + }, + }, + }, + }, + &v3.NamedSchemaOrReference{ + Name: "message", + Value: &v3.SchemaOrReference{ + Oneof: &v3.SchemaOrReference_Schema{ + Schema: &v3.Schema{ + Type: "string", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + } + return d +} diff --git a/vendor/github.com/googleapis/gnostic/apps/report/README.md b/vendor/github.com/googleapis/gnostic/apps/report/README.md new file mode 100644 index 0000000000..64fcd792d4 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/apps/report/README.md @@ -0,0 +1,6 @@ +# OpenAPI Report Sample + +This directory contains a simple sample application that reads a binary +protocol buffer representation of an OpenAPI 2.0 specification that +was generated by gnostic. + diff --git a/vendor/github.com/googleapis/gnostic/apps/report/main.go b/vendor/github.com/googleapis/gnostic/apps/report/main.go new file mode 100644 index 0000000000..d2ed3f96f2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/apps/report/main.go @@ -0,0 +1,239 @@ +// Copyright 2017 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. + +// report is a demo application that displays information about an +// OpenAPI description. +package main + +import ( + "flag" + "fmt" + "io/ioutil" + "os" + + "github.com/golang/protobuf/proto" + "github.com/googleapis/gnostic/printer" + + pb "github.com/googleapis/gnostic/OpenAPIv2" +) + +func readDocumentFromFileWithName(filename string) *pb.Document { + data, err := ioutil.ReadFile(filename) + if err != nil { + fmt.Printf("File error: %v\n", err) + os.Exit(1) + } + document := &pb.Document{} + err = proto.Unmarshal(data, document) + if err != nil { + panic(err) + } + return document +} + +func printDocument(code *printer.Code, document *pb.Document) { + code.Print("BasePath: %+v", document.BasePath) + code.Print("Consumes: %+v", document.Consumes) + code.Print("Definitions:") + code.Indent() + if document.Definitions != nil && document.Definitions.AdditionalProperties != nil { + for _, pair := range document.Definitions.AdditionalProperties { + code.Print("%s", pair.Name) + code.Indent() + printSchema(code, pair.Value) + code.Outdent() + } + } + code.Outdent() + code.Print("ExternalDocs: %+v", document.ExternalDocs) + code.Print("Host: %+v", document.Host) + if document.Info != nil { + code.Print("Info:") + code.Indent() + code.Print("Title: %s", document.Info.Title) + code.Print("Description: %s", document.Info.Description) + code.Print("Version: %s", document.Info.Version) + code.Print("TermsOfService: %s", document.Info.TermsOfService) + if document.Info.Contact != nil { + code.Print("Contact Email: %s", document.Info.Contact.Email) + } + if document.Info.License != nil { + code.Print("License Name: %s", document.Info.License.Name) + code.Print("License URL: %s", document.Info.License.Url) + } + code.Outdent() + } + code.Print("Parameters: %+v", document.Parameters) + code.Print("Paths:") + code.Indent() + for _, pair := range document.Paths.Path { + code.Print("%+v", pair.Name) + code.Indent() + v := pair.Value + if v.Get != nil { + code.Print("GET") + code.Indent() + printOperation(code, v.Get) + code.Outdent() + } + if v.Post != nil { + code.Print("POST") + code.Indent() + printOperation(code, v.Post) + code.Outdent() + } + code.Outdent() + } + code.Outdent() + code.Print("Produces: %+v", document.Produces) + code.Print("Responses: %+v", document.Responses) + code.Print("Schemes: %+v", document.Schemes) + code.Print("Security: %+v", document.Security) + if document.SecurityDefinitions != nil { + code.Print("SecurityDefinitions:") + code.Indent() + for _, pair := range document.SecurityDefinitions.AdditionalProperties { + code.Print("%s", pair.Name) + code.Indent() + v := pair.Value + switch t := v.Oneof.(type) { + default: + code.Print("unexpected type %T", t) // %T prints whatever type t has + case *pb.SecurityDefinitionsItem_ApiKeySecurity: + code.Print("ApiKeySecurity: %+v", t) + case *pb.SecurityDefinitionsItem_BasicAuthenticationSecurity: + code.Print("BasicAuthenticationSecurity: %+v", t) + case *pb.SecurityDefinitionsItem_Oauth2AccessCodeSecurity: + code.Print("Oauth2AccessCodeSecurity: %+v", t) + case *pb.SecurityDefinitionsItem_Oauth2ApplicationSecurity: + code.Print("Oauth2ApplicationSecurity: %+v", t) + case *pb.SecurityDefinitionsItem_Oauth2ImplicitSecurity: + code.Print("Oauth2ImplicitSecurity") + code.Indent() + code.Print("AuthorizationUrl: %+v", t.Oauth2ImplicitSecurity.AuthorizationUrl) + code.Print("Flow: %+v", t.Oauth2ImplicitSecurity.Flow) + code.Print("Scopes:") + code.Indent() + for _, pair := range t.Oauth2ImplicitSecurity.Scopes.AdditionalProperties { + code.Print("%s -> %s", pair.Name, pair.Value) + } + code.Outdent() + code.Outdent() + case *pb.SecurityDefinitionsItem_Oauth2PasswordSecurity: + code.Print("Oauth2PasswordSecurity: %+v", t) + } + code.Outdent() + } + code.Outdent() + } + code.Print("Swagger: %+v", document.Swagger) + code.Print("Tags:") + code.Indent() + for _, tag := range document.Tags { + code.Print("Tag:") + code.Indent() + code.Print("Name: %s", tag.Name) + code.Print("Description: %s", tag.Description) + code.Print("ExternalDocs: %s", tag.ExternalDocs) + printVendorExtension(code, tag.VendorExtension) + code.Outdent() + } + code.Outdent() +} + +func printOperation(code *printer.Code, operation *pb.Operation) { + code.Print("Consumes: %+v", operation.Consumes) + code.Print("Deprecated: %+v", operation.Deprecated) + code.Print("Description: %+v", operation.Description) + code.Print("ExternalDocs: %+v", operation.ExternalDocs) + code.Print("OperationId: %+v", operation.OperationId) + code.Print("Parameters:") + code.Indent() + for _, item := range operation.Parameters { + switch t := item.Oneof.(type) { + default: + code.Print("unexpected type %T", t) // %T prints whatever type t has + case *pb.ParametersItem_JsonReference: + code.Print("JsonReference: %+v", t) + case *pb.ParametersItem_Parameter: + code.Print("Parameter: %+v", t) + } + } + code.Outdent() + code.Print("Produces: %+v", operation.Produces) + code.Print("Responses:") + code.Indent() + code.Print("ResponseCode:") + code.Indent() + for _, pair := range operation.Responses.ResponseCode { + code.Print("%s %s", pair.Name, pair.Value) + } + code.Outdent() + printVendorExtension(code, operation.Responses.VendorExtension) + code.Outdent() + code.Print("Schemes: %+v", operation.Schemes) + code.Print("Security: %+v", operation.Security) + code.Print("Summary: %+v", operation.Summary) + code.Print("Tags: %+v", operation.Tags) + printVendorExtension(code, operation.VendorExtension) +} + +func printSchema(code *printer.Code, schema *pb.Schema) { + //code.Print("%+v", schema) + if schema.Format != "" { + code.Print("Format: %+v", schema.Format) + } + if schema.Properties != nil { + code.Print("Properties") + code.Indent() + for _, pair := range schema.Properties.AdditionalProperties { + code.Print("%s", pair.Name) + code.Indent() + printSchema(code, pair.Value) + code.Outdent() + } + code.Outdent() + } + if schema.Type != nil { + code.Print("Type: %+v", schema.Type) + } + if schema.Xml != nil { + code.Print("Xml: %+v", schema.Xml) + } + printVendorExtension(code, schema.VendorExtension) +} + +func printVendorExtension(code *printer.Code, vendorExtension []*pb.NamedAny) { + if len(vendorExtension) > 0 { + code.Print("VendorExtension: %+v", vendorExtension) + } +} + +func main() { + flag.Parse() + args := flag.Args() + + if len(args) != 1 { + fmt.Printf("Usage: report \n") + return + } + + document := readDocumentFromFileWithName(args[0]) + + code := &printer.Code{} + code.Print("API REPORT") + code.Print("----------") + printDocument(code, document) + fmt.Printf("%s", code) +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/README.md b/vendor/github.com/googleapis/gnostic/compiler/README.md new file mode 100644 index 0000000000..848b16c69b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/README.md @@ -0,0 +1,3 @@ +# Compiler support code + +This directory contains compiler support code used by Gnostic and Gnostic extensions. \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/compiler/context.go b/vendor/github.com/googleapis/gnostic/compiler/context.go new file mode 100644 index 0000000000..a64c1b75db --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/context.go @@ -0,0 +1,43 @@ +// Copyright 2017 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 compiler + +// Context contains state of the compiler as it traverses a document. +type Context struct { + Parent *Context + Name string + ExtensionHandlers *[]ExtensionHandler +} + +// NewContextWithExtensions returns a new object representing the compiler state +func NewContextWithExtensions(name string, parent *Context, extensionHandlers *[]ExtensionHandler) *Context { + return &Context{Name: name, Parent: parent, ExtensionHandlers: extensionHandlers} +} + +// NewContext returns a new object representing the compiler state +func NewContext(name string, parent *Context) *Context { + if parent != nil { + return &Context{Name: name, Parent: parent, ExtensionHandlers: parent.ExtensionHandlers} + } + return &Context{Name: name, Parent: parent, ExtensionHandlers: nil} +} + +// Description returns a text description of the compiler state +func (context *Context) Description() string { + if context.Parent != nil { + return context.Parent.Description() + "." + context.Name + } + return context.Name +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/error.go b/vendor/github.com/googleapis/gnostic/compiler/error.go new file mode 100644 index 0000000000..d8672c1008 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/error.go @@ -0,0 +1,61 @@ +// Copyright 2017 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 compiler + +// Error represents compiler errors and their location in the document. +type Error struct { + Context *Context + Message string +} + +// NewError creates an Error. +func NewError(context *Context, message string) *Error { + return &Error{Context: context, Message: message} +} + +// Error returns the string value of an Error. +func (err *Error) Error() string { + if err.Context == nil { + return "ERROR " + err.Message + } + return "ERROR " + err.Context.Description() + " " + err.Message +} + +// ErrorGroup is a container for groups of Error values. +type ErrorGroup struct { + Errors []error +} + +// NewErrorGroupOrNil returns a new ErrorGroup for a slice of errors or nil if the slice is empty. +func NewErrorGroupOrNil(errors []error) error { + if len(errors) == 0 { + return nil + } else if len(errors) == 1 { + return errors[0] + } else { + return &ErrorGroup{Errors: errors} + } +} + +func (group *ErrorGroup) Error() string { + result := "" + for i, err := range group.Errors { + if i > 0 { + result += "\n" + } + result += err.Error() + } + return result +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go b/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go new file mode 100644 index 0000000000..1f85b650e8 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/extension-handler.go @@ -0,0 +1,101 @@ +// Copyright 2017 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 compiler + +import ( + "bytes" + "fmt" + "os/exec" + + "strings" + + "errors" + + "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes/any" + ext_plugin "github.com/googleapis/gnostic/extensions" + yaml "gopkg.in/yaml.v2" +) + +// ExtensionHandler describes a binary that is called by the compiler to handle specification extensions. +type ExtensionHandler struct { + Name string +} + +// HandleExtension calls a binary extension handler. +func HandleExtension(context *Context, in interface{}, extensionName string) (bool, *any.Any, error) { + handled := false + var errFromPlugin error + var outFromPlugin *any.Any + + if context != nil && context.ExtensionHandlers != nil && len(*(context.ExtensionHandlers)) != 0 { + for _, customAnyProtoGenerator := range *(context.ExtensionHandlers) { + outFromPlugin, errFromPlugin = customAnyProtoGenerator.handle(in, extensionName) + if outFromPlugin == nil { + continue + } else { + handled = true + break + } + } + } + return handled, outFromPlugin, errFromPlugin +} + +func (extensionHandlers *ExtensionHandler) handle(in interface{}, extensionName string) (*any.Any, error) { + if extensionHandlers.Name != "" { + binary, _ := yaml.Marshal(in) + + request := &ext_plugin.ExtensionHandlerRequest{} + + version := &ext_plugin.Version{} + version.Major = 0 + version.Minor = 1 + version.Patch = 0 + request.CompilerVersion = version + + request.Wrapper = &ext_plugin.Wrapper{} + + request.Wrapper.Version = "v2" + request.Wrapper.Yaml = string(binary) + request.Wrapper.ExtensionName = extensionName + + requestBytes, _ := proto.Marshal(request) + cmd := exec.Command(extensionHandlers.Name) + cmd.Stdin = bytes.NewReader(requestBytes) + output, err := cmd.Output() + + if err != nil { + fmt.Printf("Error: %+v\n", err) + return nil, err + } + response := &ext_plugin.ExtensionHandlerResponse{} + err = proto.Unmarshal(output, response) + if err != nil { + fmt.Printf("Error: %+v\n", err) + fmt.Printf("%s\n", string(output)) + return nil, err + } + if !response.Handled { + return nil, nil + } + if len(response.Error) != 0 { + message := fmt.Sprintf("Errors when parsing: %+v for field %s by vendor extension handler %s. Details %+v", in, extensionName, extensionHandlers.Name, strings.Join(response.Error, ",")) + return nil, errors.New(message) + } + return response.Value, nil + } + return nil, nil +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/helpers.go b/vendor/github.com/googleapis/gnostic/compiler/helpers.go new file mode 100644 index 0000000000..76df635ff9 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/helpers.go @@ -0,0 +1,197 @@ +// Copyright 2017 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 compiler + +import ( + "fmt" + "gopkg.in/yaml.v2" + "regexp" + "sort" + "strconv" +) + +// compiler helper functions, usually called from generated code + +// UnpackMap gets a yaml.MapSlice if possible. +func UnpackMap(in interface{}) (yaml.MapSlice, bool) { + m, ok := in.(yaml.MapSlice) + if ok { + return m, true + } + // do we have an empty array? + a, ok := in.([]interface{}) + if ok && len(a) == 0 { + // if so, return an empty map + return yaml.MapSlice{}, true + } + return nil, false +} + +// SortedKeysForMap returns the sorted keys of a yaml.MapSlice. +func SortedKeysForMap(m yaml.MapSlice) []string { + keys := make([]string, 0) + for _, item := range m { + keys = append(keys, item.Key.(string)) + } + sort.Strings(keys) + return keys +} + +// MapHasKey returns true if a yaml.MapSlice contains a specified key. +func MapHasKey(m yaml.MapSlice, key string) bool { + for _, item := range m { + itemKey, ok := item.Key.(string) + if ok && key == itemKey { + return true + } + } + return false +} + +// MapValueForKey gets the value of a map value for a specified key. +func MapValueForKey(m yaml.MapSlice, key string) interface{} { + for _, item := range m { + itemKey, ok := item.Key.(string) + if ok && key == itemKey { + return item.Value + } + } + return nil +} + +// ConvertInterfaceArrayToStringArray converts an array of interfaces to an array of strings, if possible. +func ConvertInterfaceArrayToStringArray(interfaceArray []interface{}) []string { + stringArray := make([]string, 0) + for _, item := range interfaceArray { + v, ok := item.(string) + if ok { + stringArray = append(stringArray, v) + } + } + return stringArray +} + +// MissingKeysInMap identifies which keys from a list of required keys are not in a map. +func MissingKeysInMap(m yaml.MapSlice, requiredKeys []string) []string { + missingKeys := make([]string, 0) + for _, k := range requiredKeys { + if !MapHasKey(m, k) { + missingKeys = append(missingKeys, k) + } + } + return missingKeys +} + +// InvalidKeysInMap returns keys in a map that don't match a list of allowed keys and patterns. +func InvalidKeysInMap(m yaml.MapSlice, allowedKeys []string, allowedPatterns []*regexp.Regexp) []string { + invalidKeys := make([]string, 0) + for _, item := range m { + itemKey, ok := item.Key.(string) + if ok { + key := itemKey + found := false + // does the key match an allowed key? + for _, allowedKey := range allowedKeys { + if key == allowedKey { + found = true + break + } + } + if !found { + // does the key match an allowed pattern? + for _, allowedPattern := range allowedPatterns { + if allowedPattern.MatchString(key) { + found = true + break + } + } + if !found { + invalidKeys = append(invalidKeys, key) + } + } + } + } + return invalidKeys +} + +// DescribeMap describes a map (for debugging purposes). +func DescribeMap(in interface{}, indent string) string { + description := "" + m, ok := in.(map[string]interface{}) + if ok { + keys := make([]string, 0) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + v := m[k] + description += fmt.Sprintf("%s%s:\n", indent, k) + description += DescribeMap(v, indent+" ") + } + return description + } + a, ok := in.([]interface{}) + if ok { + for i, v := range a { + description += fmt.Sprintf("%s%d:\n", indent, i) + description += DescribeMap(v, indent+" ") + } + return description + } + description += fmt.Sprintf("%s%+v\n", indent, in) + return description +} + +// PluralProperties returns the string "properties" pluralized. +func PluralProperties(count int) string { + if count == 1 { + return "property" + } + return "properties" +} + +// StringArrayContainsValue returns true if a string array contains a specified value. +func StringArrayContainsValue(array []string, value string) bool { + for _, item := range array { + if item == value { + return true + } + } + return false +} + +// StringArrayContainsValues returns true if a string array contains all of a list of specified values. +func StringArrayContainsValues(array []string, values []string) bool { + for _, value := range values { + if !StringArrayContainsValue(array, value) { + return false + } + } + return true +} + +// StringValue returns the string value of an item. +func StringValue(item interface{}) (value string, ok bool) { + value, ok = item.(string) + if ok { + return value, ok + } + intValue, ok := item.(int) + if ok { + return strconv.Itoa(intValue), true + } + return "", false +} diff --git a/vendor/github.com/googleapis/gnostic/compiler/main.go b/vendor/github.com/googleapis/gnostic/compiler/main.go new file mode 100644 index 0000000000..9713a21cca --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/main.go @@ -0,0 +1,16 @@ +// Copyright 2017 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 compiler provides support functions to generated compiler code. +package compiler diff --git a/vendor/github.com/googleapis/gnostic/compiler/reader.go b/vendor/github.com/googleapis/gnostic/compiler/reader.go new file mode 100644 index 0000000000..604a46a6a1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/reader.go @@ -0,0 +1,167 @@ +// Copyright 2017 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 compiler + +import ( + "fmt" + "gopkg.in/yaml.v2" + "io/ioutil" + "log" + "net/http" + "net/url" + "path/filepath" + "strings" +) + +var fileCache map[string][]byte +var infoCache map[string]interface{} +var count int64 + +var verboseReader = false + +func initializeFileCache() { + if fileCache == nil { + fileCache = make(map[string][]byte, 0) + } +} + +func initializeInfoCache() { + if infoCache == nil { + infoCache = make(map[string]interface{}, 0) + } +} + +// FetchFile gets a specified file from the local filesystem or a remote location. +func FetchFile(fileurl string) ([]byte, error) { + initializeFileCache() + bytes, ok := fileCache[fileurl] + if ok { + if verboseReader { + log.Printf("Cache hit %s", fileurl) + } + return bytes, nil + } + log.Printf("Fetching %s", fileurl) + response, err := http.Get(fileurl) + if err != nil { + return nil, err + } + defer response.Body.Close() + bytes, err = ioutil.ReadAll(response.Body) + if err == nil { + fileCache[fileurl] = bytes + } + return bytes, err +} + +// ReadBytesForFile reads the bytes of a file. +func ReadBytesForFile(filename string) ([]byte, error) { + // is the filename a url? + fileurl, _ := url.Parse(filename) + if fileurl.Scheme != "" { + // yes, fetch it + bytes, err := FetchFile(filename) + if err != nil { + return nil, err + } + return bytes, nil + } + // no, it's a local filename + bytes, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + return bytes, nil +} + +// ReadInfoFromBytes unmarshals a file as a yaml.MapSlice. +func ReadInfoFromBytes(filename string, bytes []byte) (interface{}, error) { + initializeInfoCache() + cachedInfo, ok := infoCache[filename] + if ok { + if verboseReader { + log.Printf("Cache hit info for file %s", filename) + } + return cachedInfo, nil + } + if verboseReader { + log.Printf("Reading info for file %s", filename) + } + var info yaml.MapSlice + err := yaml.Unmarshal(bytes, &info) + if err != nil { + return nil, err + } + infoCache[filename] = info + return info, nil +} + +// ReadInfoForRef reads a file and return the fragment needed to resolve a $ref. +func ReadInfoForRef(basefile string, ref string) (interface{}, error) { + initializeInfoCache() + { + info, ok := infoCache[ref] + if ok { + if verboseReader { + log.Printf("Cache hit for ref %s#%s", basefile, ref) + } + return info, nil + } + } + if verboseReader { + log.Printf("Reading info for ref %s#%s", basefile, ref) + } + count = count + 1 + basedir, _ := filepath.Split(basefile) + parts := strings.Split(ref, "#") + var filename string + if parts[0] != "" { + filename = basedir + parts[0] + } else { + filename = basefile + } + bytes, err := ReadBytesForFile(filename) + if err != nil { + return nil, err + } + info, err := ReadInfoFromBytes(filename, bytes) + if err != nil { + log.Printf("File error: %v\n", err) + } else { + if len(parts) > 1 { + path := strings.Split(parts[1], "/") + for i, key := range path { + if i > 0 { + m, ok := info.(yaml.MapSlice) + if ok { + found := false + for _, section := range m { + if section.Key == key { + info = section.Value + found = true + } + } + if !found { + infoCache[ref] = nil + return nil, NewError(nil, fmt.Sprintf("could not resolve %s", ref)) + } + } + } + } + } + } + infoCache[ref] = info + return info, nil +} diff --git a/vendor/github.com/googleapis/gnostic/examples/README.md b/vendor/github.com/googleapis/gnostic/examples/README.md new file mode 100644 index 0000000000..987960000d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/README.md @@ -0,0 +1,3 @@ +# examples + +This directory contains example descriptions of APIs. diff --git a/vendor/github.com/googleapis/gnostic/examples/errors/petstore-badproperties.yaml b/vendor/github.com/googleapis/gnostic/examples/errors/petstore-badproperties.yaml new file mode 100644 index 0000000000..2302a706c5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/errors/petstore-badproperties.yaml @@ -0,0 +1,101 @@ +swagger: "2.0" +info: + title: Swagger Petstore + myproperty: 123 + license: + name: MIT +host: petstore.swagger.io +basePath: /v1 +schemes: + - http +consumes: + - application/json +produces: + - application/json +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + type: integer + format: int32 + myproperty: 123 + responses: + "200": + description: An paged array of pets + headers: + x-next: + type: string + description: A link to the next page of responses + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + post: + summary: Create a pet + operationId: createPets + tags: pets + responses: + "201": + description: Null response + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + type: string + responses: + "200": + description: Expected response to a valid request + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' +definitions: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/definitions/Pet' + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/errors/petstore-missingversion.yaml b/vendor/github.com/googleapis/gnostic/examples/errors/petstore-missingversion.yaml new file mode 100644 index 0000000000..881722c99e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/errors/petstore-missingversion.yaml @@ -0,0 +1,100 @@ +info: + version: 1.0.0 + title: Swagger Petstore + license: + name: MIT +host: petstore.swagger.io +basePath: /v1 +schemes: + - http +consumes: + - application/json +produces: + - application/json +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + type: integer + format: int32 + responses: + "200": + description: An paged array of pets + headers: + x-next: + type: string + description: A link to the next page of responses + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + "201": + description: Null response + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + type: string + responses: + "200": + description: Expected response to a valid request + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' +definitions: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/definitions/Pet' + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/errors/petstore-unresolvedrefs.yaml b/vendor/github.com/googleapis/gnostic/examples/errors/petstore-unresolvedrefs.yaml new file mode 100644 index 0000000000..59c81e8de3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/errors/petstore-unresolvedrefs.yaml @@ -0,0 +1,101 @@ +swagger: "2.0" +info: + version: 1.0.0 + title: Swagger Petstore + license: + name: MIT +host: petstore.swagger.io +basePath: /v1 +schemes: + - http +consumes: + - application/json +produces: + - application/json +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + type: integer + format: int32 + responses: + "200": + description: An paged array of pets + headers: + x-next: + type: string + description: A link to the next page of responses + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + "201": + description: Null response + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + type: string + responses: + "200": + description: Expected response to a valid request + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' +definitions: + NotAPet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/definitions/Pet' + NotAnError: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/api-with-examples.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/api-with-examples.json new file mode 100644 index 0000000000..e1b371a070 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/api-with-examples.json @@ -0,0 +1,58 @@ +{ + "swagger": "2.0", + "info": { + "title": "Simple API overview", + "version": "v2" + }, + "paths": { + "/": { + "get": { + "operationId": "listVersionsv2", + "summary": "List API versions", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "200 300 response", + "examples": { + "application/json": "{\n \"versions\": [\n {\n \"status\": \"CURRENT\",\n \"updated\": \"2011-01-21T11:33:21Z\",\n \"id\": \"v2.0\",\n \"links\": [\n {\n \"href\": \"http://127.0.0.1:8774/v2/\",\n \"rel\": \"self\"\n }\n ]\n },\n {\n \"status\": \"EXPERIMENTAL\",\n \"updated\": \"2013-07-23T11:33:21Z\",\n \"id\": \"v3.0\",\n \"links\": [\n {\n \"href\": \"http://127.0.0.1:8774/v3/\",\n \"rel\": \"self\"\n }\n ]\n }\n ]\n}" + } + }, + "300": { + "description": "200 300 response", + "examples": { + "application/json": "{\n \"versions\": [\n {\n \"status\": \"CURRENT\",\n \"updated\": \"2011-01-21T11:33:21Z\",\n \"id\": \"v2.0\",\n \"links\": [\n {\n \"href\": \"http://127.0.0.1:8774/v2/\",\n \"rel\": \"self\"\n }\n ]\n },\n {\n \"status\": \"EXPERIMENTAL\",\n \"updated\": \"2013-07-23T11:33:21Z\",\n \"id\": \"v3.0\",\n \"links\": [\n {\n \"href\": \"http://127.0.0.1:8774/v3/\",\n \"rel\": \"self\"\n }\n ]\n }\n ]\n}" + } + } + } + } + }, + "/v2": { + "get": { + "operationId": "getVersionDetailsv2", + "summary": "Show API version details", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "200 203 response", + "examples": { + "application/json": "{\n \"version\": {\n \"status\": \"CURRENT\",\n \"updated\": \"2011-01-21T11:33:21Z\",\n \"media-types\": [\n {\n \"base\": \"application/xml\",\n \"type\": \"application/vnd.openstack.compute+xml;version=2\"\n },\n {\n \"base\": \"application/json\",\n \"type\": \"application/vnd.openstack.compute+json;version=2\"\n }\n ],\n \"id\": \"v2.0\",\n \"links\": [\n {\n \"href\": \"http://127.0.0.1:8774/v2/\",\n \"rel\": \"self\"\n },\n {\n \"href\": \"http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf\",\n \"type\": \"application/pdf\",\n \"rel\": \"describedby\"\n },\n {\n \"href\": \"http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl\",\n \"type\": \"application/vnd.sun.wadl+xml\",\n \"rel\": \"describedby\"\n },\n {\n \"href\": \"http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl\",\n \"type\": \"application/vnd.sun.wadl+xml\",\n \"rel\": \"describedby\"\n }\n ]\n }\n}" + } + }, + "203": { + "description": "200 203 response", + "examples": { + "application/json": "{\n \"version\": {\n \"status\": \"CURRENT\",\n \"updated\": \"2011-01-21T11:33:21Z\",\n \"media-types\": [\n {\n \"base\": \"application/xml\",\n \"type\": \"application/vnd.openstack.compute+xml;version=2\"\n },\n {\n \"base\": \"application/json\",\n \"type\": \"application/vnd.openstack.compute+json;version=2\"\n }\n ],\n \"id\": \"v2.0\",\n \"links\": [\n {\n \"href\": \"http://23.253.228.211:8774/v2/\",\n \"rel\": \"self\"\n },\n {\n \"href\": \"http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf\",\n \"type\": \"application/pdf\",\n \"rel\": \"describedby\"\n },\n {\n \"href\": \"http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl\",\n \"type\": \"application/vnd.sun.wadl+xml\",\n \"rel\": \"describedby\"\n }\n ]\n }\n}" + } + } + } + } + } + }, + "consumes": [ + "application/json" + ] +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-expanded.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-expanded.json new file mode 100644 index 0000000000..0c59f9a48e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-expanded.json @@ -0,0 +1,210 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "name": "Swagger API Team", + "email": "foo@example.com", + "url": "http://madskristensen.net" + }, + "license": { + "name": "MIT", + "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" + } + }, + "host": "petstore.swagger.io", + "basePath": "/api", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to\nNam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia.\n\nSed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.\n", + "operationId": "findPets", + "parameters": [ + { + "name": "tags", + "in": "query", + "description": "tags to filter by", + "required": false, + "type": "array", + "collectionFormat": "csv", + "items": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "maximum number of results to return", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "post": { + "description": "Creates a new pet in the store. Duplicates are allowed", + "operationId": "addPet", + "parameters": [ + { + "name": "pet", + "in": "body", + "description": "Pet to add to the store", + "required": true, + "schema": { + "$ref": "#/definitions/NewPet" + } + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/pets/{id}": { + "get": { + "description": "Returns a user based on a single ID, if the user does not have access to the pet", + "operationId": "find pet by id", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to fetch", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "delete": { + "description": "deletes a single pet based on the ID supplied", + "operationId": "deletePet", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to delete", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "204": { + "description": "pet deleted" + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + } + }, + "definitions": { + "Pet": { + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/NewPet" + }, + { + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + } + } + } + ] + }, + "NewPet": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "Error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-minimal.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-minimal.json new file mode 100644 index 0000000000..0c70baed7e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-minimal.json @@ -0,0 +1,68 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "name": "Swagger API Team" + }, + "license": { + "name": "MIT" + } + }, + "host": "petstore.swagger.io", + "basePath": "/api", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A list of pets.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + } + } + } + } + } + }, + "definitions": { + "Pet": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/common/Error.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/common/Error.json new file mode 100644 index 0000000000..dd0e65a0fa --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/common/Error.json @@ -0,0 +1,16 @@ +{ + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/NewPet.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/NewPet.json new file mode 100644 index 0000000000..9104f7f68a --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/NewPet.json @@ -0,0 +1,19 @@ +{ + "type": "object", + "allOf": [ + { + "$ref": "Pet.json" + }, + { + "required": [ + "name" + ], + "properties": { + "description": { + "type": "integer", + "format": "int64" + } + } + } + ] +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/Pet.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/Pet.json new file mode 100644 index 0000000000..c7ee9fbb05 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/Pet.json @@ -0,0 +1,19 @@ +{ + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/parameters.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/parameters.json new file mode 100644 index 0000000000..a7c11b0a0c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/parameters.json @@ -0,0 +1,21 @@ +{ + "tagsParam": { + "name": "tags", + "in": "query", + "description": "tags to filter by", + "required": false, + "type": "array", + "collectionFormat": "csv", + "items": { + "type": "string" + } + }, + "limitsParam": { + "name": "limit", + "in": "query", + "description": "maximum number of results to return", + "required": false, + "type": "integer", + "format": "int32" + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/swagger.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/swagger.json new file mode 100644 index 0000000000..542b76fc2a --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-separate/spec/swagger.json @@ -0,0 +1,146 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", + "termsOfService": "http://helloreverb.com/terms/", + "contact": { + "name": "Wordnik API Team", + "email": "foo@example.com", + "url": "http://madskristensen.net" + }, + "license": { + "name": "MIT", + "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" + } + }, + "host": "petstore.swagger.wordnik.com", + "basePath": "/api", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to\nNam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia.\n\nSed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.\n", + "operationId": "findPets", + "parameters": [ + { + "$ref": "parameters.json#/tagsParam" + }, + { + "$ref": "parameters.json#/limitsParam" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "type": "array", + "items": { + "$ref": "Pet.json" + } + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "../common/Error.json" + } + } + } + }, + "post": { + "description": "Creates a new pet in the store. Duplicates are allowed", + "operationId": "addPet", + "parameters": [ + { + "name": "pet", + "in": "body", + "description": "Pet to add to the store", + "required": true, + "schema": { + "$ref": "NewPet.json" + } + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "Pet.json" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "../common/Error.json" + } + } + } + } + }, + "/pets/{id}": { + "get": { + "description": "Returns a user based on a single ID, if the user does not have access to the pet", + "operationId": "find pet by id", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to fetch", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "Pet.json" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "../common/Error.json" + } + } + } + }, + "delete": { + "description": "deletes a single pet based on the ID supplied", + "operationId": "deletePet", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to delete", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "204": { + "description": "pet deleted" + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "../common/Error.json" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-simple.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-simple.json new file mode 100644 index 0000000000..306dc90c9c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-simple.json @@ -0,0 +1,222 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "name": "Swagger API Team" + }, + "license": { + "name": "MIT" + } + }, + "host": "petstore.swagger.io", + "basePath": "/api", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to", + "operationId": "findPets", + "produces": [ + "application/json", + "application/xml", + "text/xml", + "text/html" + ], + "parameters": [ + { + "name": "tags", + "in": "query", + "description": "tags to filter by", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv" + }, + { + "name": "limit", + "in": "query", + "description": "maximum number of results to return", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + }, + "post": { + "description": "Creates a new pet in the store. Duplicates are allowed", + "operationId": "addPet", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "pet", + "in": "body", + "description": "Pet to add to the store", + "required": true, + "schema": { + "$ref": "#/definitions/NewPet" + } + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, + "/pets/{id}": { + "get": { + "description": "Returns a user based on a single ID, if the user does not have access to the pet", + "operationId": "findPetById", + "produces": [ + "application/json", + "application/xml", + "text/xml", + "text/html" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to fetch", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + }, + "delete": { + "description": "deletes a single pet based on the ID supplied", + "operationId": "deletePet", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to delete", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "204": { + "description": "pet deleted" + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + } + }, + "definitions": { + "Pet": { + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/NewPet" + }, + { + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + } + } + } + ] + }, + "NewPet": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "ErrorModel": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-with-external-docs.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-with-external-docs.json new file mode 100644 index 0000000000..4c5154c233 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore-with-external-docs.json @@ -0,0 +1,233 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "name": "Swagger API Team", + "email": "apiteam@swagger.io", + "url": "http://swagger.io" + }, + "license": { + "name": "MIT", + "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" + } + }, + "externalDocs": { + "description": "find more info here", + "url": "https://swagger.io/about" + }, + "host": "petstore.swagger.io", + "basePath": "/api", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to", + "operationId": "findPets", + "externalDocs": { + "description": "find more info here", + "url": "https://swagger.io/about" + }, + "produces": [ + "application/json", + "application/xml", + "text/xml", + "text/html" + ], + "parameters": [ + { + "name": "tags", + "in": "query", + "description": "tags to filter by", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv" + }, + { + "name": "limit", + "in": "query", + "description": "maximum number of results to return", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + }, + "post": { + "description": "Creates a new pet in the store. Duplicates are allowed", + "operationId": "addPet", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "pet", + "in": "body", + "description": "Pet to add to the store", + "required": true, + "schema": { + "$ref": "#/definitions/NewPet" + } + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, + "/pets/{id}": { + "get": { + "description": "Returns a user based on a single ID, if the user does not have access to the pet", + "operationId": "findPetById", + "produces": [ + "application/json", + "application/xml", + "text/xml", + "text/html" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to fetch", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "pet response", + "schema": { + "$ref": "#/definitions/Pet" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + }, + "delete": { + "description": "deletes a single pet based on the ID supplied", + "operationId": "deletePet", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to delete", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "204": { + "description": "pet deleted" + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + } + }, + "definitions": { + "Pet": { + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/NewPet" + }, + { + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + } + } + } + ] + }, + "NewPet": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "ErrorModel": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore.json new file mode 100644 index 0000000000..415eb3f9ae --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/petstore.json @@ -0,0 +1,153 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "license": { + "name": "MIT" + } + }, + "host": "petstore.swagger.io", + "basePath": "/v1", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/pets": { + "get": { + "summary": "List all pets", + "operationId": "listPets", + "tags": [ + "pets" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "How many items to return at one time (max 100)", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "responses": { + "200": { + "description": "An paged array of pets", + "headers": { + "x-next": { + "type": "string", + "description": "A link to the next page of responses" + } + }, + "schema": { + "$ref": "#/definitions/Pets" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "post": { + "summary": "Create a pet", + "operationId": "createPets", + "tags": [ + "pets" + ], + "responses": { + "201": { + "description": "Null response" + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/pets/{petId}": { + "get": { + "summary": "Info for a specific pet", + "operationId": "showPetById", + "tags": [ + "pets" + ], + "parameters": [ + { + "name": "petId", + "in": "path", + "required": true, + "description": "The id of the pet to retrieve", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Expected response to a valid request", + "schema": { + "$ref": "#/definitions/Pets" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + } + }, + "definitions": { + "Pet": { + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "Pets": { + "type": "array", + "items": { + "$ref": "#/definitions/Pet" + } + }, + "Error": { + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/json/uber.json b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/uber.json new file mode 100644 index 0000000000..957782897d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/json/uber.json @@ -0,0 +1,370 @@ +{ + "swagger": "2.0", + "info": { + "title": "Uber API", + "description": "Move your app forward with the Uber API", + "version": "1.0.0" + }, + "host": "api.uber.com", + "schemes": [ + "https" + ], + "basePath": "/v1", + "produces": [ + "application/json" + ], + "paths": { + "/products": { + "get": { + "summary": "Product Types", + "description": "The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.", + "parameters": [ + { + "name": "latitude", + "in": "query", + "description": "Latitude component of location.", + "required": true, + "type": "number", + "format": "double" + }, + { + "name": "longitude", + "in": "query", + "description": "Longitude component of location.", + "required": true, + "type": "number", + "format": "double" + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "An array of products", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Product" + } + } + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/estimates/price": { + "get": { + "summary": "Price Estimates", + "description": "The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier.", + "parameters": [ + { + "name": "start_latitude", + "in": "query", + "description": "Latitude component of start location.", + "required": true, + "type": "number", + "format": "double" + }, + { + "name": "start_longitude", + "in": "query", + "description": "Longitude component of start location.", + "required": true, + "type": "number", + "format": "double" + }, + { + "name": "end_latitude", + "in": "query", + "description": "Latitude component of end location.", + "required": true, + "type": "number", + "format": "double" + }, + { + "name": "end_longitude", + "in": "query", + "description": "Longitude component of end location.", + "required": true, + "type": "number", + "format": "double" + } + ], + "tags": [ + "Estimates" + ], + "responses": { + "200": { + "description": "An array of price estimates by product", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/PriceEstimate" + } + } + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/estimates/time": { + "get": { + "summary": "Time Estimates", + "description": "The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs.", + "parameters": [ + { + "name": "start_latitude", + "in": "query", + "description": "Latitude component of start location.", + "required": true, + "type": "number", + "format": "double" + }, + { + "name": "start_longitude", + "in": "query", + "description": "Longitude component of start location.", + "required": true, + "type": "number", + "format": "double" + }, + { + "name": "customer_uuid", + "in": "query", + "type": "string", + "format": "uuid", + "description": "Unique customer identifier to be used for experience customization." + }, + { + "name": "product_id", + "in": "query", + "type": "string", + "description": "Unique identifier representing a specific product for a given latitude & longitude." + } + ], + "tags": [ + "Estimates" + ], + "responses": { + "200": { + "description": "An array of products", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Product" + } + } + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/me": { + "get": { + "summary": "User Profile", + "description": "The User Profile endpoint returns information about the Uber user that has authorized with the application.", + "tags": [ + "User" + ], + "responses": { + "200": { + "description": "Profile information for a user", + "schema": { + "$ref": "#/definitions/Profile" + } + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/history": { + "get": { + "summary": "User Activity", + "description": "The User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary.", + "parameters": [ + { + "name": "offset", + "in": "query", + "type": "integer", + "format": "int32", + "description": "Offset the list of returned results by this amount. Default is zero." + }, + { + "name": "limit", + "in": "query", + "type": "integer", + "format": "int32", + "description": "Number of items to retrieve. Default is 5, maximum is 100." + } + ], + "tags": [ + "User" + ], + "responses": { + "200": { + "description": "History information for the given user", + "schema": { + "$ref": "#/definitions/Activities" + } + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + } + }, + "definitions": { + "Product": { + "properties": { + "product_id": { + "type": "string", + "description": "Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles." + }, + "description": { + "type": "string", + "description": "Description of product." + }, + "display_name": { + "type": "string", + "description": "Display name of product." + }, + "capacity": { + "type": "string", + "description": "Capacity of product. For example, 4 people." + }, + "image": { + "type": "string", + "description": "Image URL representing the product." + } + } + }, + "PriceEstimate": { + "properties": { + "product_id": { + "type": "string", + "description": "Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles" + }, + "currency_code": { + "type": "string", + "description": "[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code." + }, + "display_name": { + "type": "string", + "description": "Display name of product." + }, + "estimate": { + "type": "string", + "description": "Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or \"Metered\" for TAXI." + }, + "low_estimate": { + "type": "number", + "description": "Lower bound of the estimated price." + }, + "high_estimate": { + "type": "number", + "description": "Upper bound of the estimated price." + }, + "surge_multiplier": { + "type": "number", + "description": "Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier." + } + } + }, + "Profile": { + "properties": { + "first_name": { + "type": "string", + "description": "First name of the Uber user." + }, + "last_name": { + "type": "string", + "description": "Last name of the Uber user." + }, + "email": { + "type": "string", + "description": "Email address of the Uber user" + }, + "picture": { + "type": "string", + "description": "Image URL of the Uber user." + }, + "promo_code": { + "type": "string", + "description": "Promo code of the Uber user." + } + } + }, + "Activity": { + "properties": { + "uuid": { + "type": "string", + "description": "Unique identifier for the activity" + } + } + }, + "Activities": { + "properties": { + "offset": { + "type": "integer", + "format": "int32", + "description": "Position in pagination." + }, + "limit": { + "type": "integer", + "format": "int32", + "description": "Number of items to retrieve (100 max)." + }, + "count": { + "type": "integer", + "format": "int32", + "description": "Total number of items available." + }, + "history": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } + } + } + }, + "Error": { + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "fields": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/api-with-examples.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/api-with-examples.yaml new file mode 100644 index 0000000000..2f4a1ccf10 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/api-with-examples.yaml @@ -0,0 +1,164 @@ +swagger: "2.0" +info: + title: Simple API overview + version: v2 +paths: + /: + get: + operationId: listVersionsv2 + summary: List API versions + produces: + - application/json + responses: + "200": + description: |- + 200 300 response + examples: + application/json: |- + { + "versions": [ + { + "status": "CURRENT", + "updated": "2011-01-21T11:33:21Z", + "id": "v2.0", + "links": [ + { + "href": "http://127.0.0.1:8774/v2/", + "rel": "self" + } + ] + }, + { + "status": "EXPERIMENTAL", + "updated": "2013-07-23T11:33:21Z", + "id": "v3.0", + "links": [ + { + "href": "http://127.0.0.1:8774/v3/", + "rel": "self" + } + ] + } + ] + } + "300": + description: |- + 200 300 response + examples: + application/json: |- + { + "versions": [ + { + "status": "CURRENT", + "updated": "2011-01-21T11:33:21Z", + "id": "v2.0", + "links": [ + { + "href": "http://127.0.0.1:8774/v2/", + "rel": "self" + } + ] + }, + { + "status": "EXPERIMENTAL", + "updated": "2013-07-23T11:33:21Z", + "id": "v3.0", + "links": [ + { + "href": "http://127.0.0.1:8774/v3/", + "rel": "self" + } + ] + } + ] + } + /v2: + get: + operationId: getVersionDetailsv2 + summary: Show API version details + produces: + - application/json + responses: + "200": + description: |- + 200 203 response + examples: + application/json: |- + { + "version": { + "status": "CURRENT", + "updated": "2011-01-21T11:33:21Z", + "media-types": [ + { + "base": "application/xml", + "type": "application/vnd.openstack.compute+xml;version=2" + }, + { + "base": "application/json", + "type": "application/vnd.openstack.compute+json;version=2" + } + ], + "id": "v2.0", + "links": [ + { + "href": "http://127.0.0.1:8774/v2/", + "rel": "self" + }, + { + "href": "http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf", + "type": "application/pdf", + "rel": "describedby" + }, + { + "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl", + "type": "application/vnd.sun.wadl+xml", + "rel": "describedby" + }, + { + "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl", + "type": "application/vnd.sun.wadl+xml", + "rel": "describedby" + } + ] + } + } + "203": + description: |- + 200 203 response + examples: + application/json: |- + { + "version": { + "status": "CURRENT", + "updated": "2011-01-21T11:33:21Z", + "media-types": [ + { + "base": "application/xml", + "type": "application/vnd.openstack.compute+xml;version=2" + }, + { + "base": "application/json", + "type": "application/vnd.openstack.compute+json;version=2" + } + ], + "id": "v2.0", + "links": [ + { + "href": "http://23.253.228.211:8774/v2/", + "rel": "self" + }, + { + "href": "http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf", + "type": "application/pdf", + "rel": "describedby" + }, + { + "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl", + "type": "application/vnd.sun.wadl+xml", + "rel": "describedby" + } + ] + } + } +consumes: +- application/json diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-expanded.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-expanded.yaml new file mode 100644 index 0000000000..a5fee3ad9a --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-expanded.yaml @@ -0,0 +1,142 @@ +swagger: "2.0" +info: + version: 1.0.0 + title: Swagger Petstore + description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification + termsOfService: http://swagger.io/terms/ + contact: + name: Swagger API Team + email: foo@example.com + url: http://madskristensen.net + license: + name: MIT + url: http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT +host: petstore.swagger.io +basePath: /api +schemes: + - http +consumes: + - application/json +produces: + - application/json +paths: + /pets: + get: + description: | + Returns all pets from the system that the user has access to + Nam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia. + + Sed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien. + operationId: findPets + parameters: + - name: tags + in: query + description: tags to filter by + required: false + type: array + collectionFormat: csv + items: + type: string + - name: limit + in: query + description: maximum number of results to return + required: false + type: integer + format: int32 + responses: + "200": + description: pet response + schema: + type: array + items: + $ref: '#/definitions/Pet' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + post: + description: Creates a new pet in the store. Duplicates are allowed + operationId: addPet + parameters: + - name: pet + in: body + description: Pet to add to the store + required: true + schema: + $ref: '#/definitions/NewPet' + responses: + "200": + description: pet response + schema: + $ref: '#/definitions/Pet' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + /pets/{id}: + get: + description: Returns a user based on a single ID, if the user does not have access to the pet + operationId: find pet by id + parameters: + - name: id + in: path + description: ID of pet to fetch + required: true + type: integer + format: int64 + responses: + "200": + description: pet response + schema: + $ref: '#/definitions/Pet' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + delete: + description: deletes a single pet based on the ID supplied + operationId: deletePet + parameters: + - name: id + in: path + description: ID of pet to delete + required: true + type: integer + format: int64 + responses: + "204": + description: pet deleted + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' +definitions: + Pet: + allOf: + - $ref: '#/definitions/NewPet' + - required: + - id + properties: + id: + type: integer + format: int64 + + NewPet: + required: + - name + properties: + name: + type: string + tag: + type: string + + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-minimal.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-minimal.yaml new file mode 100644 index 0000000000..c3e06e9152 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-minimal.yaml @@ -0,0 +1,47 @@ +--- + swagger: "2.0" + info: + version: "1.0.0" + title: "Swagger Petstore" + description: "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification" + termsOfService: "http://swagger.io/terms/" + contact: + name: "Swagger API Team" + license: + name: "MIT" + host: "petstore.swagger.io" + basePath: "/api" + schemes: + - "http" + consumes: + - "application/json" + produces: + - "application/json" + paths: + /pets: + get: + description: "Returns all pets from the system that the user has access to" + produces: + - "application/json" + responses: + "200": + description: "A list of pets." + schema: + type: "array" + items: + $ref: "#/definitions/Pet" + definitions: + Pet: + type: "object" + required: + - "id" + - "name" + properties: + id: + type: "integer" + format: "int64" + name: + type: "string" + tag: + type: "string" + diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/common/Error.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/common/Error.yaml new file mode 100644 index 0000000000..2d87b744fb --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/common/Error.yaml @@ -0,0 +1,10 @@ +type: object +required: + - code + - message +properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/NewPet.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/NewPet.yaml new file mode 100644 index 0000000000..35e67449c5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/NewPet.yaml @@ -0,0 +1,9 @@ +type: object +allOf: + - $ref: 'Pet.yaml' + - required: + - name + properties: + description: + type: integer + format: int64 diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/Pet.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/Pet.yaml new file mode 100644 index 0000000000..bb113196f1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/Pet.yaml @@ -0,0 +1,12 @@ +type: object +required: + - id + - name +properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/parameters.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/parameters.yaml new file mode 100644 index 0000000000..18736aebd0 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/parameters.yaml @@ -0,0 +1,16 @@ +tagsParam: + name: tags + in: query + description: tags to filter by + required: false + type: array + collectionFormat: csv + items: + type: string +limitsParam: + name: limit + in: query + description: maximum number of results to return + required: false + type: integer + format: int32 diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/swagger.text b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/swagger.text new file mode 100644 index 0000000000..8bb53c937b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/swagger.text @@ -0,0 +1,214 @@ +swagger: "2.0" +info: < + title: "Swagger Petstore" + version: "1.0.0" + description: "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification" + terms_of_service: "http://helloreverb.com/terms/" + contact: < + name: "Wordnik API Team" + url: "http://madskristensen.net" + email: "foo@example.com" + > + license: < + name: "MIT" + url: "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" + > +> +host: "petstore.swagger.wordnik.com" +base_path: "/api" +schemes: "http" +consumes: "application/json" +produces: "application/json" +paths: < + path: < + name: "/pets" + value: < + get: < + description: "Returns all pets from the system that the user has access to\nNam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia.\n\nSed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.\n" + operation_id: "findPets" + parameters: < + json_reference: < + _ref: "parameters.yaml#/tagsParam" + > + > + parameters: < + json_reference: < + _ref: "parameters.yaml#/limitsParam" + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "pet response" + schema: < + schema: < + type: < + value: "array" + > + items: < + schema: < + _ref: "Pet.yaml" + > + > + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + _ref: "../common/Error.yaml" + > + > + > + > + > + > + > + post: < + description: "Creates a new pet in the store. Duplicates are allowed" + operation_id: "addPet" + parameters: < + parameter: < + body_parameter: < + description: "Pet to add to the store" + name: "pet" + in: "body" + required: true + schema: < + _ref: "NewPet.yaml" + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "pet response" + schema: < + schema: < + _ref: "Pet.yaml" + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + _ref: "../common/Error.yaml" + > + > + > + > + > + > + > + > + > + path: < + name: "/pets/{id}" + value: < + get: < + description: "Returns a user based on a single ID, if the user does not have access to the pet" + operation_id: "find pet by id" + parameters: < + parameter: < + non_body_parameter: < + path_parameter_sub_schema: < + required: true + in: "path" + description: "ID of pet to fetch" + name: "id" + type: "integer" + format: "int64" + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "pet response" + schema: < + schema: < + _ref: "Pet.yaml" + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + _ref: "../common/Error.yaml" + > + > + > + > + > + > + > + delete: < + description: "deletes a single pet based on the ID supplied" + operation_id: "deletePet" + parameters: < + parameter: < + non_body_parameter: < + path_parameter_sub_schema: < + required: true + in: "path" + description: "ID of pet to delete" + name: "id" + type: "integer" + format: "int64" + > + > + > + > + responses: < + response_code: < + name: "204" + value: < + response: < + description: "pet deleted" + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + _ref: "../common/Error.yaml" + > + > + > + > + > + > + > + > + > +> diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/swagger.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/swagger.yaml new file mode 100644 index 0000000000..850527ebf6 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-separate/spec/swagger.yaml @@ -0,0 +1,100 @@ +swagger: "2.0" +info: + version: 1.0.0 + title: Swagger Petstore + description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification + termsOfService: http://helloreverb.com/terms/ + contact: + name: Wordnik API Team + email: foo@example.com + url: http://madskristensen.net + license: + name: MIT + url: http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT +host: petstore.swagger.wordnik.com +basePath: /api +schemes: + - http +consumes: + - application/json +produces: + - application/json +paths: + /pets: + get: + description: | + Returns all pets from the system that the user has access to + Nam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia. + + Sed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien. + operationId: findPets + parameters: + - $ref: 'parameters.yaml#/tagsParam' + - $ref: 'parameters.yaml#/limitsParam' + responses: + "200": + description: pet response + schema: + type: array + items: + $ref: 'Pet.yaml' + default: + description: unexpected error + schema: + $ref: '../common/Error.yaml' + post: + description: Creates a new pet in the store. Duplicates are allowed + operationId: addPet + parameters: + - name: pet + in: body + description: Pet to add to the store + required: true + schema: + $ref: 'NewPet.yaml' + responses: + "200": + description: pet response + schema: + $ref: 'Pet.yaml' + default: + description: unexpected error + schema: + $ref: '../common/Error.yaml' + /pets/{id}: + get: + description: Returns a user based on a single ID, if the user does not have access to the pet + operationId: find pet by id + parameters: + - name: id + in: path + description: ID of pet to fetch + required: true + type: integer + format: int64 + responses: + "200": + description: pet response + schema: + $ref: 'Pet.yaml' + default: + description: unexpected error + schema: + $ref: '../common/Error.yaml' + delete: + description: deletes a single pet based on the ID supplied + operationId: deletePet + parameters: + - name: id + in: path + description: ID of pet to delete + required: true + type: integer + format: int64 + responses: + "204": + description: pet deleted + default: + description: unexpected error + schema: + $ref: '../common/Error.yaml' diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-simple.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-simple.yaml new file mode 100644 index 0000000000..d5fa07b428 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-simple.yaml @@ -0,0 +1,157 @@ +--- + swagger: "2.0" + info: + version: "1.0.0" + title: "Swagger Petstore" + description: "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification" + termsOfService: "http://swagger.io/terms/" + contact: + name: "Swagger API Team" + license: + name: "MIT" + host: "petstore.swagger.io" + basePath: "/api" + schemes: + - "http" + consumes: + - "application/json" + produces: + - "application/json" + paths: + /pets: + get: + description: "Returns all pets from the system that the user has access to" + operationId: "findPets" + produces: + - "application/json" + - "application/xml" + - "text/xml" + - "text/html" + parameters: + - + name: "tags" + in: "query" + description: "tags to filter by" + required: false + type: "array" + items: + type: "string" + collectionFormat: "csv" + - + name: "limit" + in: "query" + description: "maximum number of results to return" + required: false + type: "integer" + format: "int32" + responses: + "200": + description: "pet response" + schema: + type: "array" + items: + $ref: "#/definitions/Pet" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + post: + description: "Creates a new pet in the store. Duplicates are allowed" + operationId: "addPet" + produces: + - "application/json" + parameters: + - + name: "pet" + in: "body" + description: "Pet to add to the store" + required: true + schema: + $ref: "#/definitions/NewPet" + responses: + "200": + description: "pet response" + schema: + $ref: "#/definitions/Pet" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + /pets/{id}: + get: + description: "Returns a user based on a single ID, if the user does not have access to the pet" + operationId: "findPetById" + produces: + - "application/json" + - "application/xml" + - "text/xml" + - "text/html" + parameters: + - + name: "id" + in: "path" + description: "ID of pet to fetch" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "pet response" + schema: + $ref: "#/definitions/Pet" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + delete: + description: "deletes a single pet based on the ID supplied" + operationId: "deletePet" + parameters: + - + name: "id" + in: "path" + description: "ID of pet to delete" + required: true + type: "integer" + format: "int64" + responses: + "204": + description: "pet deleted" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + definitions: + Pet: + type: "object" + allOf: + - + $ref: "#/definitions/NewPet" + - + required: + - "id" + properties: + id: + type: "integer" + format: "int64" + NewPet: + type: "object" + required: + - "name" + properties: + name: + type: "string" + tag: + type: "string" + ErrorModel: + type: "object" + required: + - "code" + - "message" + properties: + code: + type: "integer" + format: "int32" + message: + type: "string" + diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-with-external-docs.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-with-external-docs.yaml new file mode 100644 index 0000000000..3db47ff362 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore-with-external-docs.yaml @@ -0,0 +1,166 @@ +--- + swagger: "2.0" + info: + version: "1.0.0" + title: "Swagger Petstore" + description: "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification" + termsOfService: "http://swagger.io/terms/" + contact: + name: "Swagger API Team" + email: "apiteam@swagger.io" + url: "http://swagger.io" + license: + name: "MIT" + url: "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" + externalDocs: + description: "find more info here" + url: "https://swagger.io/about" + host: "petstore.swagger.io" + basePath: "/api" + schemes: + - "http" + consumes: + - "application/json" + produces: + - "application/json" + paths: + /pets: + get: + description: "Returns all pets from the system that the user has access to" + operationId: "findPets" + externalDocs: + description: "find more info here" + url: "https://swagger.io/about" + produces: + - "application/json" + - "application/xml" + - "text/xml" + - "text/html" + parameters: + - + name: "tags" + in: "query" + description: "tags to filter by" + required: false + type: "array" + items: + type: "string" + collectionFormat: "csv" + - + name: "limit" + in: "query" + description: "maximum number of results to return" + required: false + type: "integer" + format: "int32" + responses: + "200": + description: "pet response" + schema: + type: "array" + items: + $ref: "#/definitions/Pet" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + post: + description: "Creates a new pet in the store. Duplicates are allowed" + operationId: "addPet" + produces: + - "application/json" + parameters: + - + name: "pet" + in: "body" + description: "Pet to add to the store" + required: true + schema: + $ref: "#/definitions/NewPet" + responses: + "200": + description: "pet response" + schema: + $ref: "#/definitions/Pet" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + /pets/{id}: + get: + description: "Returns a user based on a single ID, if the user does not have access to the pet" + operationId: "findPetById" + produces: + - "application/json" + - "application/xml" + - "text/xml" + - "text/html" + parameters: + - + name: "id" + in: "path" + description: "ID of pet to fetch" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "pet response" + schema: + $ref: "#/definitions/Pet" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + delete: + description: "deletes a single pet based on the ID supplied" + operationId: "deletePet" + parameters: + - + name: "id" + in: "path" + description: "ID of pet to delete" + required: true + type: "integer" + format: "int64" + responses: + "204": + description: "pet deleted" + default: + description: "unexpected error" + schema: + $ref: "#/definitions/ErrorModel" + definitions: + Pet: + type: "object" + allOf: + - + $ref: "#/definitions/NewPet" + - + required: + - "id" + properties: + id: + type: "integer" + format: "int64" + NewPet: + type: "object" + required: + - "name" + properties: + name: + type: "string" + tag: + type: "string" + ErrorModel: + type: "object" + required: + - "code" + - "message" + properties: + code: + type: "integer" + format: "int32" + message: + type: "string" + diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore.yaml new file mode 100644 index 0000000000..790948cb93 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/petstore.yaml @@ -0,0 +1,101 @@ +swagger: "2.0" +info: + version: 1.0.0 + title: Swagger Petstore + license: + name: MIT +host: petstore.swagger.io +basePath: /v1 +schemes: + - http +consumes: + - application/json +produces: + - application/json +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + type: integer + format: int32 + responses: + "200": + description: An paged array of pets + headers: + x-next: + type: string + description: A link to the next page of responses + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + "201": + description: Null response + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + type: string + responses: + "200": + description: Expected response to a valid request + schema: + $ref: '#/definitions/Pets' + default: + description: unexpected error + schema: + $ref: '#/definitions/Error' +definitions: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/definitions/Pet' + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/uber.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/uber.yaml new file mode 100644 index 0000000000..12c14b08aa --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/uber.yaml @@ -0,0 +1,273 @@ +# this is an example of the Uber API +# as a demonstration of an API spec in YAML +swagger: "2.0" +info: + title: Uber API + description: Move your app forward with the Uber API + version: "1.0.0" +# the domain of the service +host: api.uber.com +# array of all schemes that your API supports +schemes: + - https +# will be prefixed to all paths +basePath: /v1 +securityDefinitions: + apikey: + type: apiKey + name: server_token + in: query +produces: + - application/json +paths: + /products: + get: + summary: Product Types + description: The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order. + parameters: + - name: latitude + in: query + description: Latitude component of location. + required: true + type: number + format: double + - name: longitude + in: query + description: Longitude component of location. + required: true + type: number + format: double + security: + - apikey: [] + tags: + - Products + responses: + "200": + description: An array of products + schema: + type: array + items: + $ref: '#/definitions/Product' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' + /estimates/price: + get: + summary: Price Estimates + description: The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier. + parameters: + - name: start_latitude + in: query + description: Latitude component of start location. + required: true + type: number + format: double + - name: start_longitude + in: query + description: Longitude component of start location. + required: true + type: number + format: double + - name: end_latitude + in: query + description: Latitude component of end location. + required: true + type: number + format: double + - name: end_longitude + in: query + description: Longitude component of end location. + required: true + type: number + format: double + tags: + - Estimates + responses: + "200": + description: An array of price estimates by product + schema: + type: array + items: + $ref: '#/definitions/PriceEstimate' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' + /estimates/time: + get: + summary: Time Estimates + description: The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs. + parameters: + - name: start_latitude + in: query + description: Latitude component of start location. + required: true + type: number + format: double + - name: start_longitude + in: query + description: Longitude component of start location. + required: true + type: number + format: double + - name: customer_uuid + in: query + type: string + format: uuid + description: Unique customer identifier to be used for experience customization. + - name: product_id + in: query + type: string + description: Unique identifier representing a specific product for a given latitude & longitude. + tags: + - Estimates + responses: + "200": + description: An array of products + schema: + type: array + items: + $ref: '#/definitions/Product' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' + /me: + get: + summary: User Profile + description: The User Profile endpoint returns information about the Uber user that has authorized with the application. + tags: + - User + responses: + "200": + description: Profile information for a user + schema: + $ref: '#/definitions/Profile' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' + /history: + get: + summary: User Activity + description: The User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary. + parameters: + - name: offset + in: query + type: integer + format: int32 + description: Offset the list of returned results by this amount. Default is zero. + - name: limit + in: query + type: integer + format: int32 + description: Number of items to retrieve. Default is 5, maximum is 100. + tags: + - User + responses: + "200": + description: History information for the given user + schema: + $ref: '#/definitions/Activities' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' +definitions: + Product: + properties: + product_id: + type: string + description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles. + description: + type: string + description: Description of product. + display_name: + type: string + description: Display name of product. + capacity: + type: integer + description: Capacity of product. For example, 4 people. + image: + type: string + description: Image URL representing the product. + ProductList: + properties: + products: + description: Contains the list of products + type: array + items: + $ref: "#/definitions/Product" + PriceEstimate: + properties: + product_id: + type: string + description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles + currency_code: + type: string + description: "[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code." + display_name: + type: string + description: Display name of product. + estimate: + type: string + description: Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or "Metered" for TAXI. + low_estimate: + type: number + description: Lower bound of the estimated price. + high_estimate: + type: number + description: Upper bound of the estimated price. + surge_multiplier: + type: number + description: Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier. + Profile: + properties: + first_name: + type: string + description: First name of the Uber user. + last_name: + type: string + description: Last name of the Uber user. + email: + type: string + description: Email address of the Uber user + picture: + type: string + description: Image URL of the Uber user. + promo_code: + type: string + description: Promo code of the Uber user. + Activity: + properties: + uuid: + type: string + description: Unique identifier for the activity + Activities: + properties: + offset: + type: integer + format: int32 + description: Position in pagination. + limit: + type: integer + format: int32 + description: Number of items to retrieve (100 max). + count: + type: integer + format: int32 + description: Total number of items available. + history: + type: array + items: + $ref: '#/definitions/Activity' + Error: + properties: + code: + type: integer + format: int32 + message: + type: string + fields: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v3.0/json/petstore.json b/vendor/github.com/googleapis/gnostic/examples/v3.0/json/petstore.json new file mode 100644 index 0000000000..af8a886d47 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v3.0/json/petstore.json @@ -0,0 +1,176 @@ +{ + "openapi": "3.0", + "info": { + "version": "1.0.0", + "title": "OpenAPI Petstore", + "license": { + "name": "MIT" + } + }, + "servers": [ + { + "url": "https://petstore.openapis.org/v1", + "description": "Development server" + } + ], + "paths": { + "/pets": { + "get": { + "summary": "List all pets", + "operationId": "listPets", + "tags": [ + "pets" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "How many items to return at one time (max 100)", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "An paged array of pets", + "headers": { + "x-next": { + "schema": { + "type": "string" + }, + "description": "A link to the next page of responses" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pets" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + }, + "post": { + "summary": "Create a pet", + "operationId": "createPets", + "tags": [ + "pets" + ], + "responses": { + "201": { + "description": "Null response" + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/pets/{petId}": { + "get": { + "summary": "Info for a specific pet", + "operationId": "showPetById", + "tags": [ + "pets" + ], + "parameters": [ + { + "name": "petId", + "in": "path", + "required": true, + "description": "The id of the pet to retrieve", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Expected response to a valid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pets" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Pet": { + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "Pets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Pet" + } + }, + "Error": { + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/petstore.yaml b/vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/petstore.yaml new file mode 100644 index 0000000000..6951bb2ffc --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/petstore.yaml @@ -0,0 +1,110 @@ +openapi: "3.0" +info: + version: 1.0.0 + title: OpenAPI Petstore + license: + name: MIT +servers: +- url: https://petstore.openapis.org/v1 + description: Development server +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + schema: + type: integer + format: int32 + responses: + "200": + description: An paged array of pets + headers: + x-next: + schema: + type: string + description: A link to the next page of responses + content: + application/json: + schema: + $ref: '#/components/schemas/Pets' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + "201": + description: Null response + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + "200": + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Pets' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +components: + schemas: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/components/schemas/Pet' + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh b/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh new file mode 100755 index 0000000000..68d02a02ac --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh @@ -0,0 +1,5 @@ +go get github.com/golang/protobuf/protoc-gen-go + +protoc \ +--go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. *.proto + diff --git a/vendor/github.com/googleapis/gnostic/extensions/README.md b/vendor/github.com/googleapis/gnostic/extensions/README.md new file mode 100644 index 0000000000..ff1c2eb1e3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/README.md @@ -0,0 +1,5 @@ +# Extensions + +This directory contains support code for building Gnostic extensions and associated examples. + +Extensions are used to compile vendor or specification extensions into protocol buffer structures. diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go new file mode 100644 index 0000000000..b14f1f945f --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go @@ -0,0 +1,219 @@ +// Code generated by protoc-gen-go. +// source: extension.proto +// DO NOT EDIT! + +/* +Package openapiextension_v1 is a generated protocol buffer package. + +It is generated from these files: + extension.proto + +It has these top-level messages: + Version + ExtensionHandlerRequest + ExtensionHandlerResponse + Wrapper +*/ +package openapiextension_v1 + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import google_protobuf "github.com/golang/protobuf/ptypes/any" + +// 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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// The version number of OpenAPI compiler. +type Version struct { + Major int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` + Minor int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` + Patch int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + Suffix string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"` +} + +func (m *Version) Reset() { *m = Version{} } +func (m *Version) String() string { return proto.CompactTextString(m) } +func (*Version) ProtoMessage() {} +func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *Version) GetMajor() int32 { + if m != nil { + return m.Major + } + return 0 +} + +func (m *Version) GetMinor() int32 { + if m != nil { + return m.Minor + } + return 0 +} + +func (m *Version) GetPatch() int32 { + if m != nil { + return m.Patch + } + return 0 +} + +func (m *Version) GetSuffix() string { + if m != nil { + return m.Suffix + } + return "" +} + +// An encoded Request is written to the ExtensionHandler's stdin. +type ExtensionHandlerRequest struct { + // The OpenAPI descriptions that were explicitly listed on the command line. + // The specifications will appear in the order they are specified to openapic. + Wrapper *Wrapper `protobuf:"bytes,1,opt,name=wrapper" json:"wrapper,omitempty"` + // The version number of openapi compiler. + CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` +} + +func (m *ExtensionHandlerRequest) Reset() { *m = ExtensionHandlerRequest{} } +func (m *ExtensionHandlerRequest) String() string { return proto.CompactTextString(m) } +func (*ExtensionHandlerRequest) ProtoMessage() {} +func (*ExtensionHandlerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *ExtensionHandlerRequest) GetWrapper() *Wrapper { + if m != nil { + return m.Wrapper + } + return nil +} + +func (m *ExtensionHandlerRequest) GetCompilerVersion() *Version { + if m != nil { + return m.CompilerVersion + } + return nil +} + +// The extensions writes an encoded ExtensionHandlerResponse to stdout. +type ExtensionHandlerResponse struct { + // true if the extension is handled by the extension handler; false otherwise + Handled bool `protobuf:"varint,1,opt,name=handled" json:"handled,omitempty"` + // Error message. If non-empty, the extension handling failed. + // The extension handler process should exit with status code zero + // even if it reports an error in this way. + // + // This should be used to indicate errors which prevent the extension from + // operating as intended. Errors which indicate a problem in gnostic + // itself -- such as the input Document being unparseable -- should be + // reported by writing a message to stderr and exiting with a non-zero + // status code. + Error []string `protobuf:"bytes,2,rep,name=error" json:"error,omitempty"` + // text output + Value *google_protobuf.Any `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` +} + +func (m *ExtensionHandlerResponse) Reset() { *m = ExtensionHandlerResponse{} } +func (m *ExtensionHandlerResponse) String() string { return proto.CompactTextString(m) } +func (*ExtensionHandlerResponse) ProtoMessage() {} +func (*ExtensionHandlerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *ExtensionHandlerResponse) GetHandled() bool { + if m != nil { + return m.Handled + } + return false +} + +func (m *ExtensionHandlerResponse) GetError() []string { + if m != nil { + return m.Error + } + return nil +} + +func (m *ExtensionHandlerResponse) GetValue() *google_protobuf.Any { + if m != nil { + return m.Value + } + return nil +} + +type Wrapper struct { + // version of the OpenAPI specification in which this extension was written. + Version string `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` + // Name of the extension + ExtensionName string `protobuf:"bytes,2,opt,name=extension_name,json=extensionName" json:"extension_name,omitempty"` + // Must be a valid yaml for the proto + Yaml string `protobuf:"bytes,3,opt,name=yaml" json:"yaml,omitempty"` +} + +func (m *Wrapper) Reset() { *m = Wrapper{} } +func (m *Wrapper) String() string { return proto.CompactTextString(m) } +func (*Wrapper) ProtoMessage() {} +func (*Wrapper) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *Wrapper) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *Wrapper) GetExtensionName() string { + if m != nil { + return m.ExtensionName + } + return "" +} + +func (m *Wrapper) GetYaml() string { + if m != nil { + return m.Yaml + } + return "" +} + +func init() { + proto.RegisterType((*Version)(nil), "openapiextension.v1.Version") + proto.RegisterType((*ExtensionHandlerRequest)(nil), "openapiextension.v1.ExtensionHandlerRequest") + proto.RegisterType((*ExtensionHandlerResponse)(nil), "openapiextension.v1.ExtensionHandlerResponse") + proto.RegisterType((*Wrapper)(nil), "openapiextension.v1.Wrapper") +} + +func init() { proto.RegisterFile("extension.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 355 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x91, 0x4d, 0x4b, 0xf3, 0x40, + 0x1c, 0xc4, 0x49, 0xdf, 0xf2, 0x64, 0x1f, 0xb4, 0xb2, 0x16, 0x8d, 0xe2, 0xa1, 0x04, 0x84, 0x22, + 0xb8, 0xa5, 0x0a, 0xde, 0x5b, 0x28, 0xea, 0xc5, 0x96, 0x3d, 0xd4, 0x9b, 0x65, 0x9b, 0xfe, 0xdb, + 0x46, 0x92, 0xdd, 0x75, 0xf3, 0x62, 0xfb, 0x55, 0x3c, 0xfa, 0x49, 0x25, 0xbb, 0xd9, 0x7a, 0x50, + 0x6f, 0x99, 0x1f, 0x93, 0xfc, 0x67, 0x26, 0xa8, 0x0d, 0xdb, 0x0c, 0x78, 0x1a, 0x09, 0x4e, 0xa4, + 0x12, 0x99, 0xc0, 0xc7, 0x42, 0x02, 0x67, 0x32, 0xfa, 0xe6, 0xc5, 0xe0, 0xfc, 0x6c, 0x2d, 0xc4, + 0x3a, 0x86, 0xbe, 0xb6, 0x2c, 0xf2, 0x55, 0x9f, 0xf1, 0x9d, 0xf1, 0x07, 0x21, 0x72, 0x67, 0xa0, + 0x4a, 0x23, 0xee, 0xa0, 0x66, 0xc2, 0x5e, 0x85, 0xf2, 0x9d, 0xae, 0xd3, 0x6b, 0x52, 0x23, 0x34, + 0x8d, 0xb8, 0x50, 0x7e, 0xad, 0xa2, 0xa5, 0x28, 0xa9, 0x64, 0x59, 0xb8, 0xf1, 0xeb, 0x86, 0x6a, + 0x81, 0x4f, 0x50, 0x2b, 0xcd, 0x57, 0xab, 0x68, 0xeb, 0x37, 0xba, 0x4e, 0xcf, 0xa3, 0x95, 0x0a, + 0x3e, 0x1c, 0x74, 0x3a, 0xb6, 0x81, 0x1e, 0x18, 0x5f, 0xc6, 0xa0, 0x28, 0xbc, 0xe5, 0x90, 0x66, + 0xf8, 0x0e, 0xb9, 0xef, 0x8a, 0x49, 0x09, 0xe6, 0xee, 0xff, 0x9b, 0x0b, 0xf2, 0x4b, 0x05, 0xf2, + 0x6c, 0x3c, 0xd4, 0x9a, 0xf1, 0x3d, 0x3a, 0x0a, 0x45, 0x22, 0xa3, 0x18, 0xd4, 0xbc, 0x30, 0x0d, + 0x74, 0x98, 0xbf, 0x3e, 0x50, 0xb5, 0xa4, 0x6d, 0xfb, 0x56, 0x05, 0x82, 0x02, 0xf9, 0x3f, 0xb3, + 0xa5, 0x52, 0xf0, 0x14, 0xb0, 0x8f, 0xdc, 0x8d, 0x46, 0x4b, 0x1d, 0xee, 0x1f, 0xb5, 0xb2, 0x1c, + 0x00, 0x94, 0xd2, 0xb3, 0xd4, 0x7b, 0x1e, 0x35, 0x02, 0x5f, 0xa1, 0x66, 0xc1, 0xe2, 0x1c, 0xaa, + 0x24, 0x1d, 0x62, 0x86, 0x27, 0x76, 0x78, 0x32, 0xe4, 0x3b, 0x6a, 0x2c, 0xc1, 0x0b, 0x72, 0xab, + 0x52, 0xe5, 0x19, 0x5b, 0xc1, 0xd1, 0xc3, 0x59, 0x89, 0x2f, 0xd1, 0xe1, 0xbe, 0xc5, 0x9c, 0xb3, + 0x04, 0xf4, 0x6f, 0xf0, 0xe8, 0xc1, 0x9e, 0x3e, 0xb1, 0x04, 0x30, 0x46, 0x8d, 0x1d, 0x4b, 0x62, + 0x7d, 0xd6, 0xa3, 0xfa, 0x79, 0x74, 0x8d, 0xda, 0x42, 0xad, 0xed, 0x16, 0x21, 0x29, 0x06, 0x23, + 0x3c, 0x91, 0xc0, 0x87, 0xd3, 0xc7, 0x7d, 0xdf, 0xd9, 0x60, 0xea, 0x7c, 0xd6, 0xea, 0x93, 0xe1, + 0x78, 0xd1, 0xd2, 0x19, 0x6f, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x56, 0x40, 0x4d, 0x52, + 0x02, 0x00, 0x00, +} diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.proto b/vendor/github.com/googleapis/gnostic/extensions/extension.proto new file mode 100644 index 0000000000..806760a132 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/extension.proto @@ -0,0 +1,93 @@ +// Copyright 2017 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. + +syntax = "proto3"; + +import "google/protobuf/any.proto"; +package openapiextension.v1; + +// This option lets the proto compiler generate Java code inside the package +// name (see below) instead of inside an outer class. It creates a simpler +// developer experience by reducing one-level of name nesting and be +// consistent with most programming languages that don't support outer classes. +option java_multiple_files = true; + +// The Java outer classname should be the filename in UpperCamelCase. This +// class is only used to hold proto descriptor, so developers don't need to +// work with it directly. +option java_outer_classname = "OpenAPIExtensionV1"; + +// The Java package name must be proto package name with proper prefix. +option java_package = "org.openapic.v1"; + +// A reasonable prefix for the Objective-C symbols generated from the package. +// It should at a minimum be 3 characters long, all uppercase, and convention +// is to use an abbreviation of the package name. Something short, but +// hopefully unique enough to not conflict with things that may come along in +// the future. 'GPB' is reserved for the protocol buffer implementation itself. +// +option objc_class_prefix = "OAE"; // "OpenAPI Extension" + +// The version number of OpenAPI compiler. +message Version { + int32 major = 1; + int32 minor = 2; + int32 patch = 3; + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + string suffix = 4; +} + +// An encoded Request is written to the ExtensionHandler's stdin. +message ExtensionHandlerRequest { + + // The OpenAPI descriptions that were explicitly listed on the command line. + // The specifications will appear in the order they are specified to openapic. + Wrapper wrapper = 1; + + // The version number of openapi compiler. + Version compiler_version = 3; +} + +// The extensions writes an encoded ExtensionHandlerResponse to stdout. +message ExtensionHandlerResponse { + + // true if the extension is handled by the extension handler; false otherwise + bool handled = 1; + + // Error message. If non-empty, the extension handling failed. + // The extension handler process should exit with status code zero + // even if it reports an error in this way. + // + // This should be used to indicate errors which prevent the extension from + // operating as intended. Errors which indicate a problem in gnostic + // itself -- such as the input Document being unparseable -- should be + // reported by writing a message to stderr and exiting with a non-zero + // status code. + repeated string error = 2; + + // text output + google.protobuf.Any value = 3; +} + +message Wrapper { + // version of the OpenAPI specification in which this extension was written. + string version = 1; + + // Name of the extension + string extension_name = 2; + + // Must be a valid yaml for the proto + string yaml = 3; +} diff --git a/vendor/github.com/googleapis/gnostic/extensions/extensions.go b/vendor/github.com/googleapis/gnostic/extensions/extensions.go new file mode 100644 index 0000000000..94a8e62a77 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/extensions.go @@ -0,0 +1,82 @@ +// Copyright 2017 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 openapiextension_v1 + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes" +) + +type documentHandler func(version string, extensionName string, document string) +type extensionHandler func(name string, yamlInput string) (bool, proto.Message, error) + +func forInputYamlFromOpenapic(handler documentHandler) { + data, err := ioutil.ReadAll(os.Stdin) + if err != nil { + fmt.Println("File error:", err.Error()) + os.Exit(1) + } + if len(data) == 0 { + fmt.Println("No input data.") + os.Exit(1) + } + request := &ExtensionHandlerRequest{} + err = proto.Unmarshal(data, request) + if err != nil { + fmt.Println("Input error:", err.Error()) + os.Exit(1) + } + handler(request.Wrapper.Version, request.Wrapper.ExtensionName, request.Wrapper.Yaml) +} + +// ProcessExtension calles the handler for a specified extension. +func ProcessExtension(handleExtension extensionHandler) { + response := &ExtensionHandlerResponse{} + forInputYamlFromOpenapic( + func(version string, extensionName string, yamlInput string) { + var newObject proto.Message + var err error + + handled, newObject, err := handleExtension(extensionName, yamlInput) + if !handled { + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) + os.Exit(0) + } + + // If we reach here, then the extension is handled + response.Handled = true + if err != nil { + response.Error = append(response.Error, err.Error()) + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) + os.Exit(0) + } + response.Value, err = ptypes.MarshalAny(newObject) + if err != nil { + response.Error = append(response.Error, err.Error()) + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) + os.Exit(0) + } + }) + + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) +} diff --git a/vendor/github.com/googleapis/gnostic/extensions/sample/Makefile b/vendor/github.com/googleapis/gnostic/extensions/sample/Makefile new file mode 100755 index 0000000000..bf8b1cd828 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/sample/Makefile @@ -0,0 +1,10 @@ + +build: + go get github.com/golang/protobuf/protoc-gen-go + cd ..; ./COMPILE-EXTENSION.sh + generate-gnostic --extension x-sampleone.json --out_dir=$(GOPATH)/src/github.com/googleapis/gnostic/extensions/sample/generated + cd generated/gnostic-x-sampleone/proto; protoc --go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. *.proto + cd generated/gnostic-x-sampleone; go get; go install + generate-gnostic --extension x-sampletwo.json --out_dir=$(GOPATH)/src/github.com/googleapis/gnostic/extensions/sample/generated + cd generated/gnostic-x-sampletwo/proto; protoc --go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. *.proto + cd generated/gnostic-x-sampletwo; go get; go install diff --git a/vendor/github.com/googleapis/gnostic/extensions/sample/x-sampleone.json b/vendor/github.com/googleapis/gnostic/extensions/sample/x-sampleone.json new file mode 100644 index 0000000000..e07ee149a8 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/sample/x-sampleone.json @@ -0,0 +1,55 @@ + { + "definitions": { + "Book": { + "type": "object", + "id": "x-sampleone-book", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "integer" + } + } + }, + "Shelf": { + "type": "object", + "id": "x-sampleone-shelf", + "required": [ + "foo1", + "bar" + ], + "properties": { + "foo1": { + "type": "integer", + "format": "int32" + }, + "bar": { + "type": "integer" + } + } + }, + "PrimitiveString": { + "type": "string", + "id": "x-sampleone-mysimplestring" + }, + "PrimitiveNumber": { + "type": "number", + "id": "x-sampleone-mysimplenumber" + }, + "PrimitiveBoolean": { + "type": "boolean", + "id": "x-sampleone-mysimpleboolean" + }, + "PrimitiveInt64": { + "type": "string", + "id": "x-sampleone-mysimpleint64" + } + + } + } diff --git a/vendor/github.com/googleapis/gnostic/extensions/sample/x-sampletwo.json b/vendor/github.com/googleapis/gnostic/extensions/sample/x-sampletwo.json new file mode 100644 index 0000000000..db707380b0 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/extensions/sample/x-sampletwo.json @@ -0,0 +1,38 @@ + { + "definitions": { + "Book": { + "type": "object", + "id": "x-sampletwo-book", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "integer" + } + } + }, + "Shelf": { + "type": "object", + "id": "x-sampletwo-shelf", + "required": [ + "foo1", + "bar" + ], + "properties": { + "foo1": { + "type": "integer", + "format": "int32" + }, + "bar": { + "type": "integer" + } + } + } + } + } diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/README.md b/vendor/github.com/googleapis/gnostic/generate-gnostic/README.md new file mode 100644 index 0000000000..5146b7e0d5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/README.md @@ -0,0 +1,13 @@ +# generate-gnostic + +## The gnostic compiler generator + +This directory contains code that generates a protocol buffer +representation and supporting code for a JSON schema. + +It is currently used to build models of OpenAPI specifications +and extensions which are described as "vendor extensions" in +OpenAPI 2.0 and "specification extensions" in OpenAPI 3.0. + +For usage information, run the `generate-gnostic` binary with no +options. diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/domain.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/domain.go new file mode 100644 index 0000000000..8987cce18d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/domain.go @@ -0,0 +1,622 @@ +// Copyright 2017 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 main + +import ( + "errors" + "fmt" + "log" + "sort" + "strings" + + "github.com/googleapis/gnostic/jsonschema" +) + +// Domain models a collection of types that is defined by a schema. +type Domain struct { + TypeModels map[string]*TypeModel // models of the types in the domain + Prefix string // type prefix to use + Schema *jsonschema.Schema // top-level schema + TypeNameOverrides map[string]string // a configured mapping from patterns to type names + PropertyNameOverrides map[string]string // a configured mapping from patterns to property names + ObjectTypeRequests map[string]*TypeRequest // anonymous types implied by type instantiation + MapTypeRequests map[string]string // "NamedObject" types that will be used to implement ordered maps + Version string // OpenAPI Version ("v2" or "v3") +} + +// NewDomain creates a domain representation. +func NewDomain(schema *jsonschema.Schema, version string) *Domain { + cc := &Domain{} + cc.TypeModels = make(map[string]*TypeModel, 0) + cc.TypeNameOverrides = make(map[string]string, 0) + cc.PropertyNameOverrides = make(map[string]string, 0) + cc.ObjectTypeRequests = make(map[string]*TypeRequest, 0) + cc.MapTypeRequests = make(map[string]string, 0) + cc.Schema = schema + cc.Version = version + return cc +} + +// TypeNameForStub returns a capitalized name to use for a generated type. +func (domain *Domain) TypeNameForStub(stub string) string { + return domain.Prefix + strings.ToUpper(stub[0:1]) + stub[1:len(stub)] +} + +// typeNameForReference returns a capitalized name to use for a generated type based on a JSON reference +func (domain *Domain) typeNameForReference(reference string) string { + parts := strings.Split(reference, "/") + first := parts[0] + last := parts[len(parts)-1] + if first == "#" { + return domain.TypeNameForStub(last) + } + return "Schema" +} + +// propertyNameForReference returns a property name to use for a JSON reference +func (domain *Domain) propertyNameForReference(reference string) *string { + parts := strings.Split(reference, "/") + first := parts[0] + last := parts[len(parts)-1] + if first == "#" { + return &last + } + return nil +} + +// arrayItemTypeForSchema determines the item type for arrays defined by a schema +func (domain *Domain) arrayItemTypeForSchema(propertyName string, schema *jsonschema.Schema) string { + // default + itemTypeName := "Any" + + if schema.Items != nil { + + if schema.Items.SchemaArray != nil { + + if len(*(schema.Items.SchemaArray)) > 0 { + ref := (*schema.Items.SchemaArray)[0].Ref + if ref != nil { + itemTypeName = domain.typeNameForReference(*ref) + } else { + types := (*schema.Items.SchemaArray)[0].Type + if types == nil { + // do nothing + } else if (types.StringArray != nil) && len(*(types.StringArray)) == 1 { + itemTypeName = (*types.StringArray)[0] + } else if (types.StringArray != nil) && len(*(types.StringArray)) > 1 { + itemTypeName = fmt.Sprintf("%+v", types.StringArray) + } else if types.String != nil { + itemTypeName = *(types.String) + } else { + itemTypeName = "UNKNOWN" + } + } + } + + } else if schema.Items.Schema != nil { + types := schema.Items.Schema.Type + + if schema.Items.Schema.Ref != nil { + itemTypeName = domain.typeNameForReference(*schema.Items.Schema.Ref) + } else if schema.Items.Schema.OneOf != nil { + // this type is implied by the "oneOf" + itemTypeName = domain.TypeNameForStub(propertyName + "Item") + domain.ObjectTypeRequests[itemTypeName] = + NewTypeRequest(itemTypeName, propertyName, schema.Items.Schema) + } else if types == nil { + // do nothing + } else if (types.StringArray != nil) && len(*(types.StringArray)) == 1 { + itemTypeName = (*types.StringArray)[0] + } else if (types.StringArray != nil) && len(*(types.StringArray)) > 1 { + itemTypeName = fmt.Sprintf("%+v", types.StringArray) + } else if types.String != nil { + itemTypeName = *(types.String) + } else { + itemTypeName = "UNKNOWN" + } + } + + } + return itemTypeName +} + +func (domain *Domain) buildTypeProperties(typeModel *TypeModel, schema *jsonschema.Schema) { + if schema.Properties != nil { + for _, pair := range *(schema.Properties) { + propertyName := pair.Name + propertySchema := pair.Value + if propertySchema.Ref != nil { + // the property schema is a reference, so we will add a property with the type of the referenced schema + propertyTypeName := domain.typeNameForReference(*(propertySchema.Ref)) + typeProperty := NewTypeProperty() + typeProperty.Name = propertyName + typeProperty.Type = propertyTypeName + typeModel.addProperty(typeProperty) + } else if propertySchema.Type != nil { + // the property schema specifies a type, so add a property with the specified type + if propertySchema.TypeIs("string") { + typeProperty := NewTypePropertyWithNameAndType(propertyName, "string") + if propertySchema.Description != nil { + typeProperty.Description = *propertySchema.Description + } + if propertySchema.Enumeration != nil { + allowedValues := make([]string, 0) + for _, enumValue := range *propertySchema.Enumeration { + if enumValue.String != nil { + allowedValues = append(allowedValues, *enumValue.String) + } + } + typeProperty.StringEnumValues = allowedValues + } + typeModel.addProperty(typeProperty) + } else if propertySchema.TypeIs("boolean") { + typeProperty := NewTypePropertyWithNameAndType(propertyName, "bool") + if propertySchema.Description != nil { + typeProperty.Description = *propertySchema.Description + } + typeModel.addProperty(typeProperty) + } else if propertySchema.TypeIs("number") { + typeProperty := NewTypePropertyWithNameAndType(propertyName, "float") + if propertySchema.Description != nil { + typeProperty.Description = *propertySchema.Description + } + typeModel.addProperty(typeProperty) + } else if propertySchema.TypeIs("integer") { + typeProperty := NewTypePropertyWithNameAndType(propertyName, "int") + if propertySchema.Description != nil { + typeProperty.Description = *propertySchema.Description + } + typeModel.addProperty(typeProperty) + } else if propertySchema.TypeIs("object") { + // the property has an "anonymous" object schema, so define a new type for it and request its creation + anonymousObjectTypeName := domain.TypeNameForStub(propertyName) + domain.ObjectTypeRequests[anonymousObjectTypeName] = + NewTypeRequest(anonymousObjectTypeName, propertyName, propertySchema) + // add a property with the type of the requested type + typeProperty := NewTypePropertyWithNameAndType(propertyName, anonymousObjectTypeName) + if propertySchema.Description != nil { + typeProperty.Description = *propertySchema.Description + } + typeModel.addProperty(typeProperty) + } else if propertySchema.TypeIs("array") { + // the property has an array type, so define it as a repeated property of the specified type + propertyTypeName := domain.arrayItemTypeForSchema(propertyName, propertySchema) + typeProperty := NewTypePropertyWithNameAndType(propertyName, propertyTypeName) + typeProperty.Repeated = true + if propertySchema.Description != nil { + typeProperty.Description = *propertySchema.Description + } + if typeProperty.Type == "string" { + itemSchema := propertySchema.Items.Schema + if itemSchema != nil { + if itemSchema.Enumeration != nil { + allowedValues := make([]string, 0) + for _, enumValue := range *itemSchema.Enumeration { + if enumValue.String != nil { + allowedValues = append(allowedValues, *enumValue.String) + } + } + typeProperty.StringEnumValues = allowedValues + } + } + } + typeModel.addProperty(typeProperty) + } else { + log.Printf("ignoring %+v, which has an unsupported property type '%s'", propertyName, propertySchema.Type.Description()) + } + } else if propertySchema.IsEmpty() { + // an empty schema can contain anything, so add an accessor for a generic object + typeName := "Any" + typeProperty := NewTypePropertyWithNameAndType(propertyName, typeName) + typeModel.addProperty(typeProperty) + } else if propertySchema.OneOf != nil { + anonymousObjectTypeName := domain.TypeNameForStub(propertyName + "Item") + domain.ObjectTypeRequests[anonymousObjectTypeName] = + NewTypeRequest(anonymousObjectTypeName, propertyName, propertySchema) + typeProperty := NewTypePropertyWithNameAndType(propertyName, anonymousObjectTypeName) + typeModel.addProperty(typeProperty) + } else if propertySchema.AnyOf != nil { + anonymousObjectTypeName := domain.TypeNameForStub(propertyName + "Item") + domain.ObjectTypeRequests[anonymousObjectTypeName] = + NewTypeRequest(anonymousObjectTypeName, propertyName, propertySchema) + typeProperty := NewTypePropertyWithNameAndType(propertyName, anonymousObjectTypeName) + typeModel.addProperty(typeProperty) + } else { + log.Printf("ignoring %s.%s, which has an unrecognized schema:\n%+v", typeModel.Name, propertyName, propertySchema.String()) + } + } + } +} + +func (domain *Domain) buildTypeRequirements(typeModel *TypeModel, schema *jsonschema.Schema) { + if schema.Required != nil { + typeModel.Required = (*schema.Required) + } +} + +func (domain *Domain) buildPatternPropertyAccessors(typeModel *TypeModel, schema *jsonschema.Schema) { + if schema.PatternProperties != nil { + typeModel.OpenPatterns = make([]string, 0) + for _, pair := range *(schema.PatternProperties) { + propertyPattern := pair.Name + propertySchema := pair.Value + typeModel.OpenPatterns = append(typeModel.OpenPatterns, propertyPattern) + if propertySchema.Ref != nil { + typeName := domain.typeNameForReference(*propertySchema.Ref) + if _, ok := domain.TypeNameOverrides[typeName]; ok { + typeName = domain.TypeNameOverrides[typeName] + } + propertyName := domain.typeNameForReference(*propertySchema.Ref) + if _, ok := domain.PropertyNameOverrides[propertyName]; ok { + propertyName = domain.PropertyNameOverrides[propertyName] + } + propertyTypeName := fmt.Sprintf("Named%s", typeName) + property := NewTypePropertyWithNameTypeAndPattern(propertyName, propertyTypeName, propertyPattern) + property.Implicit = true + property.MapType = typeName + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) + } + } + } +} + +func (domain *Domain) buildAdditionalPropertyAccessors(typeModel *TypeModel, schema *jsonschema.Schema) { + if schema.AdditionalProperties != nil { + if schema.AdditionalProperties.Boolean != nil { + if *schema.AdditionalProperties.Boolean == true { + typeModel.Open = true + propertyName := "additionalProperties" + typeName := "NamedAny" + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.Implicit = true + property.MapType = "Any" + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) + return + } + } else if schema.AdditionalProperties.Schema != nil { + typeModel.Open = true + schema := schema.AdditionalProperties.Schema + if schema.Ref != nil { + propertyName := "additionalProperties" + mapType := domain.typeNameForReference(*schema.Ref) + typeName := fmt.Sprintf("Named%s", mapType) + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.Implicit = true + property.MapType = mapType + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) + return + } else if schema.Type != nil { + typeName := *schema.Type.String + if typeName == "string" { + propertyName := "additionalProperties" + typeName := "NamedString" + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.Implicit = true + property.MapType = "string" + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) + return + } else if typeName == "array" { + if schema.Items != nil { + itemType := *schema.Items.Schema.Type.String + if itemType == "string" { + propertyName := "additionalProperties" + typeName := "NamedStringArray" + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.Implicit = true + property.MapType = "StringArray" + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) + return + } + } + } + } else if schema.OneOf != nil { + propertyTypeName := domain.TypeNameForStub(typeModel.Name + "Item") + propertyName := "additionalProperties" + typeName := fmt.Sprintf("Named%s", propertyTypeName) + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.Implicit = true + property.MapType = propertyTypeName + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) + + domain.ObjectTypeRequests[propertyTypeName] = + NewTypeRequest(propertyTypeName, propertyName, schema) + } + } + } +} + +func (domain *Domain) buildOneOfAccessors(typeModel *TypeModel, schema *jsonschema.Schema) { + oneOfs := schema.OneOf + if oneOfs == nil { + return + } + typeModel.Open = true + typeModel.OneOfWrapper = true + for _, oneOf := range *oneOfs { + if oneOf.Ref != nil { + ref := *oneOf.Ref + typeName := domain.typeNameForReference(ref) + propertyName := domain.propertyNameForReference(ref) + + if propertyName != nil { + typeProperty := NewTypePropertyWithNameAndType(*propertyName, typeName) + typeModel.addProperty(typeProperty) + } + } else if oneOf.Type != nil && oneOf.Type.String != nil { + switch *oneOf.Type.String { + case "boolean": + typeProperty := NewTypePropertyWithNameAndType("boolean", "bool") + typeModel.addProperty(typeProperty) + case "integer": + typeProperty := NewTypePropertyWithNameAndType("integer", "int") + typeModel.addProperty(typeProperty) + case "number": + typeProperty := NewTypePropertyWithNameAndType("number", "float") + typeModel.addProperty(typeProperty) + case "string": + typeProperty := NewTypePropertyWithNameAndType("string", "string") + typeModel.addProperty(typeProperty) + default: + log.Printf("Unsupported oneOf:\n%+v", oneOf.String()) + } + } else { + log.Printf("Unsupported oneOf:\n%+v", oneOf.String()) + } + + } +} + +func schemaIsContainedInArray(s1 *jsonschema.Schema, s2 *jsonschema.Schema) bool { + if s2.TypeIs("array") { + if s2.Items.Schema != nil { + if s1.IsEqual(s2.Items.Schema) { + return true + } + } + } + return false +} + +func (domain *Domain) addAnonymousAccessorForSchema( + typeModel *TypeModel, + schema *jsonschema.Schema, + repeated bool) { + ref := schema.Ref + if ref != nil { + typeName := domain.typeNameForReference(*ref) + propertyName := domain.propertyNameForReference(*ref) + if propertyName != nil { + property := NewTypePropertyWithNameAndType(*propertyName, typeName) + property.Repeated = true + typeModel.addProperty(property) + typeModel.IsItemArray = true + } + } else { + typeName := "string" + propertyName := "value" + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.Repeated = true + typeModel.addProperty(property) + typeModel.IsStringArray = true + } +} + +func (domain *Domain) buildAnyOfAccessors(typeModel *TypeModel, schema *jsonschema.Schema) { + anyOfs := schema.AnyOf + if anyOfs == nil { + return + } + if len(*anyOfs) == 2 { + if schemaIsContainedInArray((*anyOfs)[0], (*anyOfs)[1]) { + //log.Printf("ARRAY OF %+v", (*anyOfs)[0].String()) + schema := (*anyOfs)[0] + domain.addAnonymousAccessorForSchema(typeModel, schema, true) + } else if schemaIsContainedInArray((*anyOfs)[1], (*anyOfs)[0]) { + //log.Printf("ARRAY OF %+v", (*anyOfs)[1].String()) + schema := (*anyOfs)[1] + domain.addAnonymousAccessorForSchema(typeModel, schema, true) + } else { + for _, anyOf := range *anyOfs { + ref := anyOf.Ref + if ref != nil { + typeName := domain.typeNameForReference(*ref) + propertyName := domain.propertyNameForReference(*ref) + if propertyName != nil { + property := NewTypePropertyWithNameAndType(*propertyName, typeName) + typeModel.addProperty(property) + } + } else { + typeName := "bool" + propertyName := "boolean" + property := NewTypePropertyWithNameAndType(propertyName, typeName) + typeModel.addProperty(property) + } + } + } + } else { + log.Printf("Unhandled anyOfs:\n%s", schema.String()) + } +} + +func (domain *Domain) buildDefaultAccessors(typeModel *TypeModel, schema *jsonschema.Schema) { + typeModel.Open = true + propertyName := "additionalProperties" + typeName := "NamedAny" + property := NewTypePropertyWithNameAndType(propertyName, typeName) + property.MapType = "Any" + property.Repeated = true + domain.MapTypeRequests[property.MapType] = property.MapType + typeModel.addProperty(property) +} + +// BuildTypeForDefinition creates a type representation for a schema definition. +func (domain *Domain) BuildTypeForDefinition( + typeName string, + propertyName string, + schema *jsonschema.Schema) *TypeModel { + if (schema.Type == nil) || (*schema.Type.String == "object") { + return domain.buildTypeForDefinitionObject(typeName, propertyName, schema) + } + return nil +} + +func (domain *Domain) buildTypeForDefinitionObject( + typeName string, + propertyName string, + schema *jsonschema.Schema) *TypeModel { + typeModel := NewTypeModel() + typeModel.Name = typeName + if schema.IsEmpty() { + domain.buildDefaultAccessors(typeModel, schema) + } else { + if schema.Description != nil { + typeModel.Description = *schema.Description + } + domain.buildTypeProperties(typeModel, schema) + domain.buildTypeRequirements(typeModel, schema) + domain.buildPatternPropertyAccessors(typeModel, schema) + domain.buildAdditionalPropertyAccessors(typeModel, schema) + domain.buildOneOfAccessors(typeModel, schema) + domain.buildAnyOfAccessors(typeModel, schema) + } + return typeModel +} + +// Build builds a domain model. +func (domain *Domain) Build() (err error) { + if (domain.Schema == nil) || (domain.Schema.Definitions == nil) { + return errors.New("missing definitions section") + } + // create a type for the top-level schema + typeName := domain.Prefix + "Document" + typeModel := NewTypeModel() + typeModel.Name = typeName + domain.buildTypeProperties(typeModel, domain.Schema) + domain.buildTypeRequirements(typeModel, domain.Schema) + domain.buildPatternPropertyAccessors(typeModel, domain.Schema) + domain.buildAdditionalPropertyAccessors(typeModel, domain.Schema) + domain.buildOneOfAccessors(typeModel, domain.Schema) + domain.buildAnyOfAccessors(typeModel, domain.Schema) + if len(typeModel.Properties) > 0 { + domain.TypeModels[typeName] = typeModel + } + + // create a type for each object defined in the schema + if domain.Schema.Definitions != nil { + for _, pair := range *(domain.Schema.Definitions) { + definitionName := pair.Name + definitionSchema := pair.Value + typeName := domain.TypeNameForStub(definitionName) + typeModel := domain.BuildTypeForDefinition(typeName, definitionName, definitionSchema) + if typeModel != nil { + domain.TypeModels[typeName] = typeModel + } + } + } + // iterate over anonymous object types to be instantiated and generate a type for each + for typeName, typeRequest := range domain.ObjectTypeRequests { + domain.TypeModels[typeRequest.Name] = + domain.buildTypeForDefinitionObject(typeName, typeRequest.PropertyName, typeRequest.Schema) + } + + // iterate over map item types to be instantiated and generate a type for each + mapTypeNames := make([]string, 0) + for mapTypeName := range domain.MapTypeRequests { + mapTypeNames = append(mapTypeNames, mapTypeName) + } + sort.Strings(mapTypeNames) + + for _, mapTypeName := range mapTypeNames { + typeName := "Named" + strings.Title(mapTypeName) + typeModel := NewTypeModel() + typeModel.Name = typeName + typeModel.Description = fmt.Sprintf( + "Automatically-generated message used to represent maps of %s as ordered (name,value) pairs.", + mapTypeName) + typeModel.IsPair = true + typeModel.PairValueType = mapTypeName + + nameProperty := NewTypeProperty() + nameProperty.Name = "name" + nameProperty.Type = "string" + nameProperty.Description = "Map key" + typeModel.addProperty(nameProperty) + + valueProperty := NewTypeProperty() + valueProperty.Name = "value" + valueProperty.Type = mapTypeName + valueProperty.Description = "Mapped value" + typeModel.addProperty(valueProperty) + + domain.TypeModels[typeName] = typeModel + } + + // add a type for string arrays + stringArrayType := NewTypeModel() + stringArrayType.Name = "StringArray" + stringProperty := NewTypeProperty() + stringProperty.Name = "value" + stringProperty.Type = "string" + stringProperty.Repeated = true + stringArrayType.addProperty(stringProperty) + domain.TypeModels[stringArrayType.Name] = stringArrayType + + // add a type for "Any" + anyType := NewTypeModel() + anyType.Name = "Any" + anyType.Open = true + anyType.IsBlob = true + valueProperty := NewTypeProperty() + valueProperty.Name = "value" + valueProperty.Type = "google.protobuf.Any" + anyType.addProperty(valueProperty) + yamlProperty := NewTypeProperty() + yamlProperty.Name = "yaml" + yamlProperty.Type = "string" + anyType.addProperty(yamlProperty) + domain.TypeModels[anyType.Name] = anyType + return err +} + +func (domain *Domain) sortedTypeNames() []string { + typeNames := make([]string, 0) + for typeName := range domain.TypeModels { + typeNames = append(typeNames, typeName) + } + sort.Strings(typeNames) + return typeNames +} + +// Description returns a string representation of a domain. +func (domain *Domain) Description() string { + typeNames := domain.sortedTypeNames() + result := "" + for _, typeName := range typeNames { + result += domain.TypeModels[typeName].description() + } + return result +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go new file mode 100644 index 0000000000..a26ae32b2c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go @@ -0,0 +1,913 @@ +// Copyright 2017 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 main + +import ( + "fmt" + "regexp" + "sort" + "strings" + + "github.com/googleapis/gnostic/printer" +) + +// patternNames hands out unique names for a given string. +type patternNames struct { + prefix string + values map[string]int + last int + + specialCase map[string]func(variable string) string +} + +// SpecialCaseExpression returns true if the provided regex can be inlined as a faster +// expression. +func (p *patternNames) SpecialCaseExpression(value, variable string) (code string, ok bool) { + fn, ok := p.specialCase[value] + if !ok { + return "", false + } + return fn(variable), ok +} + +// VariableName returns the variable name for the given value. +func (p *patternNames) VariableName(value string) string { + num, ok := p.values[value] + if !ok { + if p.values == nil { + p.values = make(map[string]int) + } + num = p.last + p.last++ + p.values[value] = num + } + return fmt.Sprintf("%s%d", p.prefix, num) +} + +func (p *patternNames) Names() map[string]string { + names := make(map[string]string) + for value, num := range p.values { + names[fmt.Sprintf("%s%d", p.prefix, num)] = value + } + return names +} + +// GenerateCompiler generates the compiler code for a domain. +func (domain *Domain) GenerateCompiler(packageName string, license string, imports []string) string { + code := &printer.Code{} + code.Print(license) + code.Print("// THIS FILE IS AUTOMATICALLY GENERATED.\n") + + // generate package declaration + code.Print("package %s\n", packageName) + + code.Print("import (") + for _, filename := range imports { + code.Print("\"" + filename + "\"") + } + code.Print(")\n") + + // generate a simple Version() function + code.Print("// Version returns the package name (and OpenAPI version).") + code.Print("func Version() string {") + code.Print(" return \"%s\"", packageName) + code.Print("}\n") + + typeNames := domain.sortedTypeNames() + + regexPatterns := &patternNames{ + prefix: "pattern", + specialCase: map[string]func(string) string{ + "^x-": func(variable string) string { return fmt.Sprintf("strings.HasPrefix(%s, \"x-\")", variable) }, + "^/": func(variable string) string { return fmt.Sprintf("strings.HasPrefix(%s, \"/\")", variable) }, + "^": func(_ string) string { return "true" }, + }, + } + + // generate NewX() constructor functions for each type + for _, typeName := range typeNames { + domain.generateConstructorForType(code, typeName, regexPatterns) + } + + // generate ResolveReferences() methods for each type + for _, typeName := range typeNames { + domain.generateResolveReferencesMethodsForType(code, typeName) + } + + // generate ToRawInfo() methods for each type + for _, typeName := range typeNames { + domain.generateToRawInfoMethodForType(code, typeName) + } + + domain.generateConstantVariables(code, regexPatterns) + + return code.String() +} + +func escapeSlashes(pattern string) string { + return strings.Replace(pattern, "\\", "\\\\", -1) +} + +var subpatternPattern = regexp.MustCompile("^.*(\\{.*\\}).*$") + +func nameForPattern(regexPatterns *patternNames, pattern string) string { + if !strings.HasPrefix(pattern, "^") { + if matches := subpatternPattern.FindStringSubmatch(pattern); matches != nil { + match := string(matches[1]) + pattern = strings.Replace(pattern, match, ".*", -1) + } + } + return regexPatterns.VariableName(pattern) +} + +func (domain *Domain) generateConstructorForType(code *printer.Code, typeName string, regexPatterns *patternNames) { + code.Print("// New%s creates an object of type %s if possible, returning an error if not.", typeName, typeName) + code.Print("func New%s(in interface{}, context *compiler.Context) (*%s, error) {", typeName, typeName) + code.Print("errors := make([]error, 0)") + + typeModel := domain.TypeModels[typeName] + parentTypeName := typeName + + if typeModel.IsStringArray { + code.Print("x := &TypeItem{}") + code.Print("switch in := in.(type) {") + code.Print("case string:") + code.Print(" x.Value = make([]string, 0)") + code.Print(" x.Value = append(x.Value, in)") + code.Print("case []interface{}:") + code.Print(" x.Value = make([]string, 0)") + code.Print(" for _, v := range in {") + code.Print(" value, ok := v.(string)") + code.Print(" if ok {") + code.Print(" x.Value = append(x.Value, value)") + code.Print(" } else {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for string array element: %%+v (%%T)\", value, value)") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print(" }") + code.Print(" }") + code.Print("default:") + code.Print(" message := fmt.Sprintf(\"has unexpected value for string array: %%+v (%%T)\", in, in)") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("}") + } else if typeModel.IsItemArray { + if domain.Version == "v2" { + code.Print("x := &ItemsItem{}") + code.Print("m, ok := compiler.UnpackMap(in)") + code.Print("if !ok {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for item array: %%+v (%%T)\", in, in)") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("} else {") + code.Print(" x.Schema = make([]*Schema, 0)") + code.Print(" y, err := NewSchema(m, compiler.NewContext(\"\", context))") + code.Print(" if err != nil {") + code.Print(" return nil, err") + code.Print(" }") + code.Print(" x.Schema = append(x.Schema, y)") + code.Print("}") + } else if domain.Version == "v3" { + code.Print("x := &ItemsItem{}") + code.Print("m, ok := compiler.UnpackMap(in)") + code.Print("if !ok {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for item array: %%+v (%%T)\", in, in)") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("} else {") + code.Print(" x.SchemaOrReference = make([]*SchemaOrReference, 0)") + code.Print(" y, err := NewSchemaOrReference(m, compiler.NewContext(\"\", context))") + code.Print(" if err != nil {") + code.Print(" return nil, err") + code.Print(" }") + code.Print(" x.SchemaOrReference = append(x.SchemaOrReference, y)") + code.Print("}") + } + } else if typeModel.IsBlob { + code.Print("x := &Any{}") + code.Print("bytes, _ := yaml.Marshal(in)") + code.Print("x.Yaml = string(bytes)") + } else if typeModel.Name == "StringArray" { + code.Print("x := &StringArray{}") + code.Print("a, ok := in.([]interface{})") + code.Print("if !ok {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for StringArray: %%+v (%%T)\", in, in)") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("} else {") + code.Print(" x.Value = make([]string, 0)") + code.Print(" for _, s := range a {") + code.Print(" x.Value = append(x.Value, s.(string))") + code.Print(" }") + code.Print("}") + } else if typeModel.Name == "Primitive" { + code.Print(" x := &Primitive{}") + code.Print(" matched := false") + code.Print(" switch in := in.(type) {") + code.Print(" case bool:") + code.Print(" x.Oneof = &Primitive_Boolean{Boolean: in}") + code.Print(" matched = true") + code.Print(" case string:") + code.Print(" x.Oneof = &Primitive_String_{String_: in}") + code.Print(" matched = true") + code.Print(" case int64:") + code.Print(" x.Oneof = &Primitive_Integer{Integer: in}") + code.Print(" matched = true") + code.Print(" case int32:") + code.Print(" x.Oneof = &Primitive_Integer{Integer: int64(in)}") + code.Print(" matched = true") + code.Print(" case int:") + code.Print(" x.Oneof = &Primitive_Integer{Integer: int64(in)}") + code.Print(" matched = true") + code.Print(" case float64:") + code.Print(" x.Oneof = &Primitive_Number{Number: in}") + code.Print(" matched = true") + code.Print(" case float32:") + code.Print(" x.Oneof = &Primitive_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" }") + code.Print(" if matched {") + code.Print(" // since the oneof matched one of its possibilities, discard any matching errors") + code.Print(" errors = make([]error, 0)") + code.Print(" }") + } else if typeModel.Name == "SpecificationExtension" { + code.Print(" x := &SpecificationExtension{}") + code.Print(" matched := false") + code.Print(" switch in := in.(type) {") + code.Print(" case bool:") + code.Print(" x.Oneof = &SpecificationExtension_Boolean{Boolean: in}") + code.Print(" matched = true") + code.Print(" case string:") + code.Print(" x.Oneof = &SpecificationExtension_String_{String_: in}") + code.Print(" matched = true") + code.Print(" case int64:") + code.Print(" x.Oneof = &SpecificationExtension_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" case int32:") + code.Print(" x.Oneof = &SpecificationExtension_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" case int:") + code.Print(" x.Oneof = &SpecificationExtension_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" case float64:") + code.Print(" x.Oneof = &SpecificationExtension_Number{Number: in}") + code.Print(" matched = true") + code.Print(" case float32:") + code.Print(" x.Oneof = &SpecificationExtension_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" }") + code.Print(" if matched {") + code.Print(" // since the oneof matched one of its possibilities, discard any matching errors") + code.Print(" errors = make([]error, 0)") + code.Print(" }") + } else if typeModel.Name == "DefaultType" { + code.Print(" x := &DefaultType{}") + code.Print(" matched := false") + code.Print(" switch in := in.(type) {") + code.Print(" case bool:") + code.Print(" x.Oneof = &DefaultType_Boolean{Boolean: in}") + code.Print(" matched = true") + code.Print(" case string:") + code.Print(" x.Oneof = &DefaultType_String_{String_: in}") + code.Print(" matched = true") + code.Print(" case int64:") + code.Print(" x.Oneof = &DefaultType_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" case int32:") + code.Print(" x.Oneof = &DefaultType_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" case int:") + code.Print(" x.Oneof = &DefaultType_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" case float64:") + code.Print(" x.Oneof = &DefaultType_Number{Number: in}") + code.Print(" matched = true") + code.Print(" case float32:") + code.Print(" x.Oneof = &DefaultType_Number{Number: float64(in)}") + code.Print(" matched = true") + code.Print(" }") + code.Print(" if matched {") + code.Print(" // since the oneof matched one of its possibilities, discard any matching errors") + code.Print(" errors = make([]error, 0)") + code.Print(" }") + } else { + oneOfWrapper := typeModel.OneOfWrapper + + code.Print("x := &%s{}", typeName) + + if oneOfWrapper { + code.Print("matched := false") + } + + unpackAtTop := !oneOfWrapper || len(typeModel.Required) > 0 + if unpackAtTop { + code.Print("m, ok := compiler.UnpackMap(in)") + code.Print("if !ok {") + code.Print(" message := fmt.Sprintf(\"has unexpected value: %%+v (%%T)\", in, in)") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("} else {") + } + if len(typeModel.Required) > 0 { + // verify that map includes all required keys + keyString := "" + sort.Strings(typeModel.Required) + for _, k := range typeModel.Required { + if keyString != "" { + keyString += "," + } + keyString += "\"" + keyString += k + keyString += "\"" + } + code.Print("requiredKeys := []string{%s}", keyString) + code.Print("missingKeys := compiler.MissingKeysInMap(m, requiredKeys)") + code.Print("if len(missingKeys) > 0 {") + code.Print(" message := fmt.Sprintf(\"is missing required %%s: %%+v\", compiler.PluralProperties(len(missingKeys)), strings.Join(missingKeys, \", \"))") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("}") + } + + if !typeModel.Open { + // verify that map has no unspecified keys + allowedKeys := make([]string, 0) + for _, property := range typeModel.Properties { + if !property.Implicit { + allowedKeys = append(allowedKeys, property.Name) + } + } + sort.Strings(allowedKeys) + allowedKeyString := "" + for _, allowedKey := range allowedKeys { + if allowedKeyString != "" { + allowedKeyString += "," + } + allowedKeyString += "\"" + allowedKeyString += allowedKey + allowedKeyString += "\"" + } + allowedPatternString := "" + if typeModel.OpenPatterns != nil { + for _, pattern := range typeModel.OpenPatterns { + if allowedPatternString != "" { + allowedPatternString += "," + } + allowedPatternString += nameForPattern(regexPatterns, pattern) + } + } + // verify that map includes only allowed keys and patterns + code.Print("allowedKeys := []string{%s}", allowedKeyString) + if len(allowedPatternString) > 0 { + code.Print("allowedPatterns := []*regexp.Regexp{%s}", allowedPatternString) + } else { + code.Print("var allowedPatterns []*regexp.Regexp") + + } + code.Print("invalidKeys := compiler.InvalidKeysInMap(m, allowedKeys, allowedPatterns)") + code.Print("if len(invalidKeys) > 0 {") + code.Print(" message := fmt.Sprintf(\"has invalid %%s: %%+v\", compiler.PluralProperties(len(invalidKeys)), strings.Join(invalidKeys, \", \"))") + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("}") + } + + var fieldNumber = 0 + for _, propertyModel := range typeModel.Properties { + propertyName := propertyModel.Name + fieldNumber++ + propertyType := propertyModel.Type + if propertyType == "int" { + propertyType = "int64" + } + var displayName = propertyName + if displayName == "$ref" { + displayName = "_ref" + } + if displayName == "$schema" { + displayName = "_schema" + } + displayName = camelCaseToSnakeCase(displayName) + + var line = fmt.Sprintf("%s %s = %d;", propertyType, displayName, fieldNumber) + if propertyModel.Repeated { + line = "repeated " + line + } + code.Print("// " + line) + + fieldName := strings.Title(propertyName) + if propertyName == "$ref" { + fieldName = "XRef" + } + + typeModel, typeFound := domain.TypeModels[propertyType] + if typeFound && !typeModel.IsPair { + if propertyModel.Repeated { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" // repeated %s", typeModel.Name) + code.Print(" x.%s = make([]*%s, 0)", fieldName, typeModel.Name) + code.Print(" a, ok := v%d.([]interface{})", fieldNumber) + code.Print(" if ok {") + code.Print(" for _, item := range a {") + code.Print(" y, err := New%s(item, compiler.NewContext(\"%s\", context))", typeModel.Name, propertyName) + code.Print(" if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print(" }") + code.Print(" x.%s = append(x.%s, y)", fieldName, fieldName) + code.Print(" }") + code.Print(" }") + code.Print("}") + } else { + if oneOfWrapper { + code.Print("{") + if !unpackAtTop { + code.Print(" m, ok := compiler.UnpackMap(in)") + code.Print(" if ok {") + } + code.Print(" // errors might be ok here, they mean we just don't have the right subtype") + code.Print(" t, matchingError := New%s(m, compiler.NewContext(\"%s\", context))", typeModel.Name, propertyName) + code.Print(" if matchingError == nil {") + code.Print(" x.Oneof = &%s_%s{%s: t}", parentTypeName, typeModel.Name, typeModel.Name) + code.Print(" matched = true") + code.Print(" } else {") + code.Print(" errors = append(errors, matchingError)") + code.Print(" }") + if !unpackAtTop { + code.Print(" }") + } + code.Print("}") + } else { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" var err error") + code.Print(" x.%s, err = New%s(v%d, compiler.NewContext(\"%s\", context))", + fieldName, typeModel.Name, fieldNumber, propertyName) + code.Print(" if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print(" }") + code.Print("}") + } + } + } else if propertyType == "string" { + if propertyModel.Repeated { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" v, ok := v%d.([]interface{})", fieldNumber) + code.Print(" if ok {") + code.Print(" x.%s = compiler.ConvertInterfaceArrayToStringArray(v)", fieldName) + code.Print(" } else {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v (%%T)\", v%d, v%d)", propertyName, fieldNumber, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("}") + + if propertyModel.StringEnumValues != nil { + code.Print("// check for valid enum values") + code.Print("// %+v", propertyModel.StringEnumValues) + + stringArrayLiteral := "[]string{" + for i, item := range propertyModel.StringEnumValues { + if i > 0 { + stringArrayLiteral += "," + } + stringArrayLiteral += "\"" + item + "\"" + } + stringArrayLiteral += "}" + code.Print("if ok && !compiler.StringArrayContainsValues(%s, x.%s) {", stringArrayLiteral, fieldName) + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v\", v%d)", propertyName, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("}") + } + + code.Print("}") + } else { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" x.%s, ok = v%d.(string)", fieldName, fieldNumber) + code.Print(" if !ok {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v (%%T)\", v%d, v%d)", propertyName, fieldNumber, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print(" }") + + if propertyModel.StringEnumValues != nil { + code.Print("// check for valid enum values") + code.Print("// %+v", propertyModel.StringEnumValues) + + stringArrayLiteral := "[]string{" + for i, item := range propertyModel.StringEnumValues { + if i > 0 { + stringArrayLiteral += "," + } + stringArrayLiteral += "\"" + item + "\"" + } + stringArrayLiteral += "}" + + code.Print("if ok && !compiler.StringArrayContainsValue(%s, x.%s) {", stringArrayLiteral, fieldName) + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v (%%T)\", v%d, v%d)", propertyName, fieldNumber, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print("}") + } + code.Print("}") + } + } else if propertyType == "float" { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" switch v%d := v%d.(type) {", fieldNumber, fieldNumber) + code.Print(" case float64:") + code.Print(" x.%s = v%d", fieldName, fieldNumber) + code.Print(" case float32:") + code.Print(" x.%s = float64(v%d)", fieldName, fieldNumber) + code.Print(" case uint64:") + code.Print(" x.%s = float64(v%d)", fieldName, fieldNumber) + code.Print(" case uint32:") + code.Print(" x.%s = float64(v%d)", fieldName, fieldNumber) + code.Print(" case int64:") + code.Print(" x.%s = float64(v%d)", fieldName, fieldNumber) + code.Print(" case int32:") + code.Print(" x.%s = float64(v%d)", fieldName, fieldNumber) + code.Print(" case int:") + code.Print(" x.%s = float64(v%d)", fieldName, fieldNumber) + code.Print(" default:") + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v (%%T)\", v%d, v%d)", propertyName, fieldNumber, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print(" }") + code.Print("}") + } else if propertyType == "int64" { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" t, ok := v%d.(int)", fieldNumber) + code.Print(" if ok {") + code.Print(" x.%s = int64(t)", fieldName) + code.Print(" } else {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v (%%T)\", v%d, v%d)", propertyName, fieldNumber, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print(" }") + code.Print("}") + } else if propertyType == "bool" { + if oneOfWrapper { + propertyName := "Boolean" + code.Print("boolValue, ok := in.(bool)") + code.Print("if ok {") + code.Print(" x.Oneof = &%s_%s{%s: boolValue}", parentTypeName, propertyName, propertyName) + code.Print("}") + } else { + code.Print("v%d := compiler.MapValueForKey(m, \"%s\")", fieldNumber, propertyName) + code.Print("if (v%d != nil) {", fieldNumber) + code.Print(" x.%s, ok = v%d.(bool)", fieldName, fieldNumber) + code.Print(" if !ok {") + code.Print(" message := fmt.Sprintf(\"has unexpected value for %s: %%+v (%%T)\", v%d, v%d)", propertyName, fieldNumber, fieldNumber) + code.Print(" errors = append(errors, compiler.NewError(context, message))") + code.Print(" }") + code.Print("}") + } + } else { + mapTypeName := propertyModel.MapType + if mapTypeName != "" { + code.Print("// MAP: %s %s", mapTypeName, propertyModel.Pattern) + if mapTypeName == "string" { + code.Print("x.%s = make([]*NamedString, 0)", fieldName) + } else { + code.Print("x.%s = make([]*Named%s, 0)", fieldName, mapTypeName) + } + code.Print("for _, item := range m {") + code.Print("k, ok := compiler.StringValue(item.Key)") + code.Print("if ok {") + code.Print("v := item.Value") + if pattern := propertyModel.Pattern; pattern != "" { + if inline, ok := regexPatterns.SpecialCaseExpression(pattern, "k"); ok { + code.Print("if %s {", inline) + } else { + code.Print("if %s.MatchString(k) {", nameForPattern(regexPatterns, pattern)) + } + } + + code.Print("pair := &Named" + strings.Title(mapTypeName) + "{}") + code.Print("pair.Name = k") + + if mapTypeName == "string" { + code.Print("pair.Value = v.(string)") + } else if mapTypeName == "Any" { + code.Print("result := &Any{}") + code.Print("handled, resultFromExt, err := compiler.HandleExtension(context, v, k)") + code.Print("if handled {") + code.Print(" if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print(" } else {") + code.Print(" bytes, _ := yaml.Marshal(v)") + code.Print(" result.Yaml = string(bytes)") + code.Print(" result.Value = resultFromExt") + code.Print(" pair.Value = result") + code.Print(" }") + code.Print("} else {") + code.Print(" pair.Value, err = NewAny(v, compiler.NewContext(k, context))") + code.Print(" if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print(" }") + code.Print("}") + + } else { + code.Print("var err error") + code.Print("pair.Value, err = New%s(v, compiler.NewContext(k, context))", mapTypeName) + code.Print("if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print("}") + } + code.Print("x.%s = append(x.%s, pair)", fieldName, fieldName) + if propertyModel.Pattern != "" { + code.Print("}") + } + code.Print("}") + code.Print("}") + } else { + code.Print("// TODO: %s", propertyType) + } + } + } + if unpackAtTop { + code.Print("}") + } + if oneOfWrapper { + code.Print("if matched {") + code.Print(" // since the oneof matched one of its possibilities, discard any matching errors") + code.Print(" errors = make([]error, 0)") + code.Print("}") + } + } + + // assumes that the return value is in a variable named "x" + code.Print(" return x, compiler.NewErrorGroupOrNil(errors)") + code.Print("}\n") +} + +// ResolveReferences() methods +func (domain *Domain) generateResolveReferencesMethodsForType(code *printer.Code, typeName string) { + code.Print("// ResolveReferences resolves references found inside %s objects.", typeName) + code.Print("func (m *%s) ResolveReferences(root string) (interface{}, error) {", typeName) + code.Print("errors := make([]error, 0)") + + typeModel := domain.TypeModels[typeName] + if typeModel.OneOfWrapper { + // call ResolveReferences on whatever is in the Oneof. + for _, propertyModel := range typeModel.Properties { + propertyType := propertyModel.Type + _, typeFound := domain.TypeModels[propertyType] + if typeFound { + code.Print("{") + code.Print("p, ok := m.Oneof.(*%s_%s)", typeName, propertyType) + code.Print("if ok {") + if propertyType == "JsonReference" { // Special case for OpenAPI + code.Print("info, err := p.%s.ResolveReferences(root)", propertyType) + code.Print("if err != nil {") + code.Print(" return nil, err") + code.Print("} else if info != nil {") + code.Print(" n, err := New%s(info, nil)", typeName) + code.Print(" if err != nil {") + code.Print(" return nil, err") + code.Print(" } else if n != nil {") + code.Print(" *m = *n") + code.Print(" return nil, nil") + code.Print(" }") + code.Print("}") + } else { + code.Print("_, err := p.%s.ResolveReferences(root)", propertyType) + code.Print("if err != nil {") + code.Print(" return nil, err") + code.Print("}") + } + code.Print("}") + code.Print("}") + } + } + } else { + for _, propertyModel := range typeModel.Properties { + propertyName := propertyModel.Name + var displayName = propertyName + if displayName == "$ref" { + displayName = "_ref" + } + if displayName == "$schema" { + displayName = "_schema" + } + displayName = camelCaseToSnakeCase(displayName) + + fieldName := strings.Title(propertyName) + if propertyName == "$ref" { + fieldName = "XRef" + code.Print("if m.XRef != \"\" {") + //code.Print("log.Printf(\"%s reference to resolve %%+v\", m.XRef)", typeName) + code.Print("info, err := compiler.ReadInfoForRef(root, m.XRef)") + + code.Print("if err != nil {") + code.Print(" return nil, err") + code.Print("}") + //code.Print("log.Printf(\"%%+v\", info)") + + if len(typeModel.Properties) > 1 { + code.Print("if info != nil {") + code.Print(" replacement, err := New%s(info, nil)", typeName) + code.Print(" if err == nil {") + code.Print(" *m = *replacement") + code.Print(" return m.ResolveReferences(root)") + code.Print(" }") + code.Print("}") + } + + code.Print("return info, nil") + code.Print("}") + } + + if !propertyModel.Repeated { + propertyType := propertyModel.Type + typeModel, typeFound := domain.TypeModels[propertyType] + if typeFound && !typeModel.IsPair { + code.Print("if m.%s != nil {", fieldName) + code.Print(" _, err := m.%s.ResolveReferences(root)", fieldName) + code.Print(" if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print(" }") + code.Print("}") + } + } else { + propertyType := propertyModel.Type + _, typeFound := domain.TypeModels[propertyType] + if typeFound { + code.Print("for _, item := range m.%s {", fieldName) + code.Print("if item != nil {") + code.Print(" _, err := item.ResolveReferences(root)") + code.Print(" if err != nil {") + code.Print(" errors = append(errors, err)") + code.Print(" }") + code.Print("}") + code.Print("}") + } + + } + } + } + code.Print(" return nil, compiler.NewErrorGroupOrNil(errors)") + code.Print("}\n") +} + +// ToRawInfo() methods +func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeName string) { + code.Print("// ToRawInfo returns a description of %s suitable for JSON or YAML export.", typeName) + code.Print("func (m *%s) ToRawInfo() interface{} {", typeName) + typeModel := domain.TypeModels[typeName] + if typeName == "Any" { + code.Print("var err error") + code.Print("var info1 []yaml.MapSlice") + code.Print("err = yaml.Unmarshal([]byte(m.Yaml), &info1)") + code.Print("if err == nil {return info1}") + code.Print("var info2 yaml.MapSlice") + code.Print("err = yaml.Unmarshal([]byte(m.Yaml), &info2)") + code.Print("if err == nil {return info2}") + code.Print("var info3 interface{}") + code.Print("err = yaml.Unmarshal([]byte(m.Yaml), &info3)") + code.Print("if err == nil {return info3}") + code.Print("return nil") + } else if typeName == "StringArray" { + code.Print("return m.Value") + } else if typeModel.OneOfWrapper { + code.Print("// ONE OF WRAPPER") + code.Print("// %s", typeModel.Name) + for i, item := range typeModel.Properties { + code.Print("// %+v", *item) + if item.Type == "float" { + code.Print("if v%d, ok := m.GetOneof().(*%s_Number); ok {", i, typeName) + code.Print("return v%d.Number", i) + code.Print("}") + } else if item.Type == "bool" { + code.Print("if v%d, ok := m.GetOneof().(*%s_Boolean); ok {", i, typeName) + code.Print("return v%d.Boolean", i) + code.Print("}") + } else if item.Type == "string" { + code.Print("if v%d, ok := m.GetOneof().(*%s_String_); ok {", i, typeName) + code.Print("return v%d.String_", i) + code.Print("}") + } else { + code.Print("v%d := m.Get%s()", i, item.Type) + code.Print("if v%d != nil {", i) + code.Print(" return v%d.ToRawInfo()", i) + code.Print("}") + } + } + code.Print("return nil") + } else { + code.Print("info := yaml.MapSlice{}") + for _, propertyModel := range typeModel.Properties { + switch propertyModel.Type { + case "string": + propertyName := propertyModel.Name + if !propertyModel.Repeated { + code.Print("if m.%s != \"\" {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } else { + code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } + case "bool": + propertyName := propertyModel.Name + if !propertyModel.Repeated { + code.Print("if m.%s != false {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } else { + code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } + case "int": + propertyName := propertyModel.Name + if !propertyModel.Repeated { + code.Print("if m.%s != 0 {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } else { + code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } + case "float": + propertyName := propertyModel.Name + if !propertyModel.Repeated { + code.Print("if m.%s != 0.0 {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } else { + code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s})", propertyName, propertyModel.FieldName()) + code.Print("}") + } + default: + propertyName := propertyModel.Name + if propertyName == "value" { + code.Print("// %+v", propertyModel) + } else if !propertyModel.Repeated { + code.Print("if m.%s != nil {", propertyModel.FieldName()) + if propertyModel.Type == "TypeItem" { + code.Print("if len(m.Type.Value) == 1 {") + code.Print("info = append(info, yaml.MapItem{\"type\", m.Type.Value[0]})") + code.Print("} else {") + code.Print("info = append(info, yaml.MapItem{\"type\", m.Type.Value})") + code.Print("}") + } else if propertyModel.Type == "ItemsItem" { + code.Print("items := make([]interface{}, 0)") + if domain.Version == "v2" { + code.Print("for _, item := range m.Items.Schema {") + } else { + code.Print("for _, item := range m.Items.SchemaOrReference {") + } + code.Print(" items = append(items, item.ToRawInfo())") + code.Print("}") + code.Print("info = append(info, yaml.MapItem{\"items\", items[0]})") + } else { + code.Print("info = append(info, yaml.MapItem{\"%s\", m.%s.ToRawInfo()})", + propertyName, propertyModel.FieldName()) + } + code.Print("}") + code.Print("// %+v", propertyModel) + } else if propertyModel.MapType == "string" { + code.Print("// %+v", propertyModel) + } else if propertyModel.MapType != "" { + code.Print("if m.%s != nil {", propertyModel.FieldName()) + code.Print("for _, item := range m.%s {", propertyModel.FieldName()) + code.Print("info = append(info, yaml.MapItem{item.Name, item.Value.ToRawInfo()})") + code.Print("}") + code.Print("}") + code.Print("// %+v", propertyModel) + } else { + code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) + code.Print("items := make([]interface{}, 0)") + code.Print("for _, item := range m.%s {", propertyModel.FieldName()) + code.Print("items = append(items, item.ToRawInfo())") + code.Print("}") + code.Print("info = append(info, yaml.MapItem{\"%s\", items})", propertyName) + code.Print("}") + code.Print("// %+v", propertyModel) + } + } + } + code.Print("return info") + } + code.Print("}\n") +} + +func (domain *Domain) generateConstantVariables(code *printer.Code, regexPatterns *patternNames) { + names := regexPatterns.Names() + var sortedNames []string + for name, _ := range names { + sortedNames = append(sortedNames, name) + } + sort.Strings(sortedNames) + code.Print("var (") + for _, name := range sortedNames { + code.Print("%s = regexp.MustCompile(\"%s\")", name, escapeSlashes(names[name])) + } + code.Print(")\n") +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-extension.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-extension.go new file mode 100644 index 0000000000..87cfa462a2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-extension.go @@ -0,0 +1,363 @@ +// Copyright 2017 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 main + +import ( + "fmt" + "io/ioutil" + "os" + "os/exec" + "path" + "path/filepath" + "regexp" + "runtime" + "sort" + "strings" + + "github.com/googleapis/gnostic/compiler" + "github.com/googleapis/gnostic/jsonschema" + "github.com/googleapis/gnostic/printer" +) + +var protoOptionsForExtensions = []ProtoOption{ + ProtoOption{ + Name: "java_multiple_files", + Value: "true", + Comment: "// This option lets the proto compiler generate Java code inside the package\n" + + "// name (see below) instead of inside an outer class. It creates a simpler\n" + + "// developer experience by reducing one-level of name nesting and be\n" + + "// consistent with most programming languages that don't support outer classes.", + }, + + ProtoOption{ + Name: "java_outer_classname", + Value: "VendorExtensionProto", + Comment: "// The Java outer classname should be the filename in UpperCamelCase. This\n" + + "// class is only used to hold proto descriptor, so developers don't need to\n" + + "// work with it directly.", + }, +} + +const additionalCompilerCodeWithMain = "" + + "func handleExtension(extensionName string, yamlInput string) (bool, proto.Message, error) {\n" + + " switch extensionName {\n" + + " // All supported extensions\n" + + " %s\n" + + " default:\n" + + " return false, nil, nil\n" + + " }\n" + + "}\n" + + "\n" + + "func main() {\n" + + " openapiextension_v1.ProcessExtension(handleExtension)\n" + + "}\n" + +const caseStringForObjectTypes = "\n" + + "case \"%s\":\n" + + "var info yaml.MapSlice\n" + + "err := yaml.Unmarshal([]byte(yamlInput), &info)\n" + + "if err != nil {\n" + + " return true, nil, err\n" + + "}\n" + + "newObject, err := %s.New%s(info, compiler.NewContext(\"$root\", nil))\n" + + "return true, newObject, err" + +const caseStringForWrapperTypes = "\n" + + "case \"%s\":\n" + + "var info %s\n" + + "err := yaml.Unmarshal([]byte(yamlInput), &info)\n" + + "if err != nil {\n" + + " return true, nil, err\n" + + "}\n" + + "newObject := &wrappers.%s{Value: info}\n" + + "return true, newObject, nil" + +// generateMainFile generates the main program for an extension. +func generateMainFile(packageName string, license string, codeBody string, imports []string) string { + code := &printer.Code{} + code.Print(license) + code.Print("// THIS FILE IS AUTOMATICALLY GENERATED.\n") + + // generate package declaration + code.Print("package %s\n", packageName) + + code.Print("import (") + for _, filename := range imports { + code.Print("\"" + filename + "\"") + } + code.Print(")\n") + + code.Print(codeBody) + return code.String() +} + +func getBaseFileNameWithoutExt(filePath string) string { + tmp := filepath.Base(filePath) + return tmp[0 : len(tmp)-len(filepath.Ext(tmp))] +} + +func toProtoPackageName(input string) string { + var out = "" + nonAlphaNumeric := regexp.MustCompile("[^0-9A-Za-z_]+") + input = nonAlphaNumeric.ReplaceAllString(input, "") + for index, character := range input { + if character >= 'A' && character <= 'Z' { + if index > 0 && input[index-1] != '_' { + out += "_" + } + out += string(character - 'A' + 'a') + } else { + out += string(character) + } + + } + return out +} + +type primitiveTypeInfo struct { + goTypeName string + wrapperProtoName string +} + +var supportedPrimitiveTypeInfos = map[string]primitiveTypeInfo{ + "string": primitiveTypeInfo{goTypeName: "string", wrapperProtoName: "StringValue"}, + "number": primitiveTypeInfo{goTypeName: "float64", wrapperProtoName: "DoubleValue"}, + "integer": primitiveTypeInfo{goTypeName: "int64", wrapperProtoName: "Int64Value"}, + "boolean": primitiveTypeInfo{goTypeName: "bool", wrapperProtoName: "BoolValue"}, + // TODO: Investigate how to support arrays. For now users will not be allowed to + // create extension handlers for arrays and they will have to use the + // plane yaml string as is. +} + +type generatedTypeInfo struct { + schemaName string + // if this is not nil, the schema should be treataed as a primitive type. + optionalPrimitiveTypeInfo *primitiveTypeInfo +} + +// GenerateExtension generates the implementation of an extension. +func GenerateExtension(schemaFile string, outDir string) error { + outFileBaseName := getBaseFileNameWithoutExt(schemaFile) + extensionNameWithoutXDashPrefix := outFileBaseName[len("x-"):] + outDir = path.Join(outDir, "gnostic-x-"+extensionNameWithoutXDashPrefix) + protoPackage := toProtoPackageName(extensionNameWithoutXDashPrefix) + protoPackageName := strings.ToLower(protoPackage) + goPackageName := protoPackageName + + protoOutDirectory := outDir + "/" + "proto" + var err error + + projectRoot := os.Getenv("GOPATH") + "/src/github.com/googleapis/gnostic/" + baseSchema, err := jsonschema.NewSchemaFromFile(projectRoot + "jsonschema/schema.json") + if err != nil { + return err + } + baseSchema.ResolveRefs() + baseSchema.ResolveAllOfs() + + openapiSchema, err := jsonschema.NewSchemaFromFile(schemaFile) + if err != nil { + return err + } + openapiSchema.ResolveRefs() + openapiSchema.ResolveAllOfs() + + // build a simplified model of the types described by the schema + cc := NewDomain(openapiSchema, "v2") // TODO fix for OpenAPI v3 + + // create a type for each object defined in the schema + extensionNameToMessageName := make(map[string]generatedTypeInfo) + schemaErrors := make([]error, 0) + supportedPrimitives := make([]string, 0) + for key := range supportedPrimitiveTypeInfos { + supportedPrimitives = append(supportedPrimitives, key) + } + sort.Strings(supportedPrimitives) + if cc.Schema.Definitions != nil { + for _, pair := range *(cc.Schema.Definitions) { + definitionName := pair.Name + definitionSchema := pair.Value + // ensure the id field is set + if definitionSchema.ID == nil || len(*(definitionSchema.ID)) == 0 { + schemaErrors = append(schemaErrors, + fmt.Errorf("schema %s has no 'id' field, which must match the "+ + "name of the OpenAPI extension that the schema represents", + definitionName)) + } else { + if _, ok := extensionNameToMessageName[*(definitionSchema.ID)]; ok { + schemaErrors = append(schemaErrors, + fmt.Errorf("schema %s and %s have the same 'id' field value", + definitionName, extensionNameToMessageName[*(definitionSchema.ID)].schemaName)) + } else if (definitionSchema.Type == nil) || (*definitionSchema.Type.String == "object") { + extensionNameToMessageName[*(definitionSchema.ID)] = generatedTypeInfo{schemaName: definitionName} + } else { + // this is a primitive type + if val, ok := supportedPrimitiveTypeInfos[*definitionSchema.Type.String]; ok { + extensionNameToMessageName[*(definitionSchema.ID)] = generatedTypeInfo{schemaName: definitionName, optionalPrimitiveTypeInfo: &val} + } else { + schemaErrors = append(schemaErrors, + fmt.Errorf("Schema %s has type '%s' which is "+ + "not supported. Supported primitive types are "+ + "%s.\n", definitionName, + *definitionSchema.Type.String, + supportedPrimitives)) + } + } + } + typeName := cc.TypeNameForStub(definitionName) + typeModel := cc.BuildTypeForDefinition(typeName, definitionName, definitionSchema) + if typeModel != nil { + cc.TypeModels[typeName] = typeModel + } + } + } + if len(schemaErrors) > 0 { + // error has been reported. + return compiler.NewErrorGroupOrNil(schemaErrors) + } + + err = os.MkdirAll(outDir, os.ModePerm) + if err != nil { + return err + } + + err = os.MkdirAll(protoOutDirectory, os.ModePerm) + if err != nil { + return err + } + + // generate the protocol buffer description + protoOptions := append(protoOptionsForExtensions, + ProtoOption{Name: "java_package", Value: "org.openapi.extension." + strings.ToLower(protoPackage), Comment: "// The Java package name must be proto package name with proper prefix."}, + ProtoOption{Name: "objc_class_prefix", Value: strings.ToLower(protoPackage), + Comment: "// A reasonable prefix for the Objective-C symbols generated from the package.\n" + + "// It should at a minimum be 3 characters long, all uppercase, and convention\n" + + "// is to use an abbreviation of the package name. Something short, but\n" + + "// hopefully unique enough to not conflict with things that may come along in\n" + + "// the future. 'GPB' is reserved for the protocol buffer implementation itself.", + }) + + proto := cc.generateProto(protoPackageName, License, protoOptions, nil) + protoFilename := path.Join(protoOutDirectory, outFileBaseName+".proto") + + err = ioutil.WriteFile(protoFilename, []byte(proto), 0644) + if err != nil { + return err + } + + // generate the compiler + compiler := cc.GenerateCompiler(goPackageName, License, []string{ + "fmt", + "regexp", + "strings", + "github.com/googleapis/gnostic/compiler", + "gopkg.in/yaml.v2", + }) + goFilename := path.Join(protoOutDirectory, outFileBaseName+".go") + err = ioutil.WriteFile(goFilename, []byte(compiler), 0644) + if err != nil { + return err + } + err = exec.Command(runtime.GOROOT()+"/bin/gofmt", "-w", goFilename).Run() + + // generate the main file. + outDirRelativeToGoPathSrc := strings.Replace(outDir, path.Join(os.Getenv("GOPATH"), "src")+"/", "", 1) + + var extensionNameKeys []string + for k := range extensionNameToMessageName { + extensionNameKeys = append(extensionNameKeys, k) + } + sort.Strings(extensionNameKeys) + + wrapperTypeIncluded := false + var cases string + for _, extensionName := range extensionNameKeys { + if extensionNameToMessageName[extensionName].optionalPrimitiveTypeInfo == nil { + cases += fmt.Sprintf(caseStringForObjectTypes, extensionName, goPackageName, extensionNameToMessageName[extensionName].schemaName) + } else { + wrapperTypeIncluded = true + cases += fmt.Sprintf(caseStringForWrapperTypes, extensionName, extensionNameToMessageName[extensionName].optionalPrimitiveTypeInfo.goTypeName, extensionNameToMessageName[extensionName].optionalPrimitiveTypeInfo.wrapperProtoName) + } + + } + extMainCode := fmt.Sprintf(additionalCompilerCodeWithMain, cases) + imports := []string{ + "github.com/golang/protobuf/proto", + "github.com/googleapis/gnostic/extensions", + "github.com/googleapis/gnostic/compiler", + "gopkg.in/yaml.v2", + outDirRelativeToGoPathSrc + "/" + "proto", + } + if wrapperTypeIncluded { + imports = append(imports, "github.com/golang/protobuf/ptypes/wrappers") + } + main := generateMainFile("main", License, extMainCode, imports) + mainFileName := path.Join(outDir, "main.go") + err = ioutil.WriteFile(mainFileName, []byte(main), 0644) + if err != nil { + return err + } + + // format the compiler + return exec.Command(runtime.GOROOT()+"/bin/gofmt", "-w", mainFileName).Run() +} + +func processExtensionGenCommandline(usage string) error { + + outDir := "" + schameFile := "" + + extParamRegex, _ := regexp.Compile("--(.+)=(.+)") + + for i, arg := range os.Args { + if i == 0 { + continue // skip the tool name + } + var m [][]byte + if m = extParamRegex.FindSubmatch([]byte(arg)); m != nil { + flagName := string(m[1]) + flagValue := string(m[2]) + switch flagName { + case "out_dir": + outDir = flagValue + default: + fmt.Printf("Unknown option: %s.\n%s\n", arg, usage) + os.Exit(-1) + } + } else if arg == "--extension" { + continue + } else if arg[0] == '-' { + fmt.Printf("Unknown option: %s.\n%s\n", arg, usage) + os.Exit(-1) + } else { + schameFile = arg + } + } + + if schameFile == "" { + fmt.Printf("No input json schema specified.\n%s\n", usage) + os.Exit(-1) + } + if outDir == "" { + fmt.Printf("Missing output directive.\n%s\n", usage) + os.Exit(-1) + } + if !strings.HasPrefix(getBaseFileNameWithoutExt(schameFile), "x-") { + fmt.Printf("Schema file name has to start with 'x-'.\n%s\n", usage) + os.Exit(-1) + } + + return GenerateExtension(schameFile, outDir) +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-extension_test.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-extension_test.go new file mode 100644 index 0000000000..004a786110 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-extension_test.go @@ -0,0 +1,52 @@ +package main + +import ( + "io/ioutil" + "os" + "os/exec" + "testing" +) + +func TestErrorExtensionGeneratorUnsupportedPrimitive(t *testing.T) { + var err error + + output, err := exec.Command( + "generator", + "--extension", + "test/x-unsupportedprimitives.json", + "--out_dir=/tmp", + ).Output() + + outputFile := "x-unsupportedprimitives.errors" + _ = ioutil.WriteFile(outputFile, output, 0644) + err = exec.Command("diff", outputFile, "test/errors/x-unsupportedprimitives.errors").Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(outputFile) + } +} + +func TestErrorExtensionGeneratorNameCollision(t *testing.T) { + var err error + + output, err := exec.Command( + "generator", + "--extension", + "test/x-extension-name-collision.json", + "--out_dir=/tmp", + ).Output() + + outputFile := "x-extension-name-collision.errors" + _ = ioutil.WriteFile(outputFile, output, 0644) + err = exec.Command("diff", outputFile, "test/errors/x-extension-name-collision.errors").Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(outputFile) + } +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-proto.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-proto.go new file mode 100644 index 0000000000..4741af6adf --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-proto.go @@ -0,0 +1,119 @@ +// Copyright 2017 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 main + +import ( + "fmt" + "strings" + + "github.com/googleapis/gnostic/printer" +) + +// ProtoOption represents an option to be added to generated .proto files. +type ProtoOption struct { + Name string + Value string + Comment string +} + +func (domain *Domain) generateProto(packageName string, license string, options []ProtoOption, imports []string) string { + code := &printer.Code{} + code.Print(license) + code.Print("// THIS FILE IS AUTOMATICALLY GENERATED.") + code.Print() + + code.Print("syntax = \"proto3\";") + code.Print() + code.Print("package " + packageName + ";") + for _, importString := range imports { + code.Print() + code.Print("import \"" + importString + "\";") + } + code.Print() + + // generate option declarations + for _, option := range options { + commentLines := strings.Split(option.Comment, "\n") + for _, commentLine := range commentLines { + code.Print(commentLine) + } + line := "option " + option.Name + " = " + if option.Value == "true" || option.Value == "false" { + line += option.Value + } else { + line += "\"" + option.Value + "\"" + } + line += ";\n" + code.Print(line) + } + + // generate message definitions + typeNames := domain.sortedTypeNames() + for _, typeName := range typeNames { + typeModel := domain.TypeModels[typeName] + if typeModel.Description != "" { + code.Print("// %s", typeModel.Description) + } + code.Print("message %s {", typeName) + code.Indent() + if typeModel.OneOfWrapper { + code.Print("oneof oneof {") + code.Indent() + } + var fieldNumber = 0 + for _, propertyModel := range typeModel.Properties { + if propertyModel.Description != "" { + code.Print("// %s", propertyModel.Description) + } + propertyName := propertyModel.Name + fieldNumber++ + propertyType := propertyModel.Type + if propertyType == "int" { + propertyType = "int64" + } + if propertyType == "float" { + propertyType = "double" + } + + // TODO may be remove this. + if propertyType == "blob" { + propertyType = "string" + } + + var displayName = propertyName + if displayName == "$ref" { + displayName = "_ref" + } + if displayName == "$schema" { + displayName = "_schema" + } + displayName = camelCaseToSnakeCase(displayName) + + var line = fmt.Sprintf("%s %s = %d;", propertyType, displayName, fieldNumber) + if propertyModel.Repeated { + line = "repeated " + line + } + code.Print(line) + } + if typeModel.OneOfWrapper { + code.Outdent() + code.Print("}") + } + code.Outdent() + code.Print("}") + code.Print() + } + return code.String() +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/helpers.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/helpers.go new file mode 100644 index 0000000000..ac6203140e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/helpers.go @@ -0,0 +1,34 @@ +// Copyright 2017 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 main + +// Returns a "snake case" form of a camel-cased string. +func camelCaseToSnakeCase(input string) string { + var out = "" + + for index, runeValue := range input { + //fmt.Printf("%#U starts at byte position %d\n", runeValue, index) + if runeValue >= 'A' && runeValue <= 'Z' { + if index > 0 { + out += "_" + } + out += string(runeValue - 'A' + 'a') + } else { + out += string(runeValue) + } + + } + return out +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/main.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/main.go new file mode 100644 index 0000000000..4b8bb9cfd2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/main.go @@ -0,0 +1,248 @@ +// Copyright 2017 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. + +// generator generates Protocol Buffer models and support code from +// JSON Schemas. It is used to generate representations of the +// OpenAPI Specification and vendor and specification extensions +// that are added by third-party OpenAPI authors. +package main + +import ( + "fmt" + "io/ioutil" + "log" + "os" + "os/exec" + "path" + "runtime" + "strings" + + "github.com/googleapis/gnostic/jsonschema" +) + +// License is the software license applied to generated code. +const License = "" + + "// Copyright 2017 Google Inc. All Rights Reserved.\n" + + "//\n" + + "// Licensed under the Apache License, Version 2.0 (the \"License\");\n" + + "// you may not use this file except in compliance with the License.\n" + + "// You may obtain a copy of the License at\n" + + "//\n" + + "// http://www.apache.org/licenses/LICENSE-2.0\n" + + "//\n" + + "// Unless required by applicable law or agreed to in writing, software\n" + + "// distributed under the License is distributed on an \"AS IS\" BASIS,\n" + + "// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + + "// See the License for the specific language governing permissions and\n" + + "// limitations under the License.\n" + +func protoOptions(packageName string) []ProtoOption { + return []ProtoOption{ + ProtoOption{ + Name: "java_multiple_files", + Value: "true", + Comment: "// This option lets the proto compiler generate Java code inside the package\n" + + "// name (see below) instead of inside an outer class. It creates a simpler\n" + + "// developer experience by reducing one-level of name nesting and be\n" + + "// consistent with most programming languages that don't support outer classes.", + }, + + ProtoOption{ + Name: "java_outer_classname", + Value: "OpenAPIProto", + Comment: "// The Java outer classname should be the filename in UpperCamelCase. This\n" + + "// class is only used to hold proto descriptor, so developers don't need to\n" + + "// work with it directly.", + }, + + ProtoOption{ + Name: "java_package", + Value: "org." + packageName, + Comment: "// The Java package name must be proto package name with proper prefix.", + }, + + ProtoOption{ + Name: "objc_class_prefix", + Value: "OAS", + Comment: "// A reasonable prefix for the Objective-C symbols generated from the package.\n" + + "// It should at a minimum be 3 characters long, all uppercase, and convention\n" + + "// is to use an abbreviation of the package name. Something short, but\n" + + "// hopefully unique enough to not conflict with things that may come along in\n" + + "// the future. 'GPB' is reserved for the protocol buffer implementation itself.", + }, + } +} + +func generateOpenAPIModel(version string) error { + var input string + var filename string + var protoPackageName string + + switch version { + case "v2": + input = "openapi-2.0.json" + filename = "OpenAPIv2" + protoPackageName = "openapi.v2" + case "v3": + input = "openapi-3.0.json" + filename = "OpenAPIv3" + protoPackageName = "openapi.v3" + default: + return fmt.Errorf("Unknown OpenAPI version %s", version) + } + + goPackageName := strings.Replace(protoPackageName, ".", "_", -1) + + projectRoot := os.Getenv("GOPATH") + "/src/github.com/googleapis/gnostic/" + + baseSchema, err := jsonschema.NewSchemaFromFile(projectRoot + "jsonschema/schema.json") + if err != nil { + return err + } + baseSchema.ResolveRefs() + baseSchema.ResolveAllOfs() + + openapiSchema, err := jsonschema.NewSchemaFromFile(projectRoot + filename + "/" + input) + if err != nil { + return err + } + openapiSchema.ResolveRefs() + openapiSchema.ResolveAllOfs() + + // build a simplified model of the types described by the schema + cc := NewDomain(openapiSchema, version) + // generators will map these patterns to the associated property names + // these pattern names are a bit of a hack until we find a more automated way to obtain them + + switch version { + case "v2": + cc.TypeNameOverrides = map[string]string{ + "VendorExtension": "Any", + } + cc.PropertyNameOverrides = map[string]string{ + "PathItem": "Path", + "ResponseValue": "ResponseCode", + } + case "v3": + cc.TypeNameOverrides = map[string]string{ + "SpecificationExtension": "Any", + } + cc.PropertyNameOverrides = map[string]string{ + "PathItem": "Path", + "ResponseValue": "ResponseCode", + } + default: + return fmt.Errorf("Unknown OpenAPI version %s", version) + } + + err = cc.Build() + if err != nil { + return err + } + + if true { + log.Printf("Type Model:\n%s", cc.Description()) + } + + // ensure that the target directory exists + err = os.MkdirAll(projectRoot+filename, 0755) + if err != nil { + return err + } + + // generate the protocol buffer description + log.Printf("Generating protocol buffer description") + proto := cc.generateProto(protoPackageName, License, + protoOptions(goPackageName), []string{"google/protobuf/any.proto"}) + protoFileName := projectRoot + filename + "/" + filename + ".proto" + err = ioutil.WriteFile(protoFileName, []byte(proto), 0644) + if err != nil { + return err + } + + // generate the compiler + log.Printf("Generating compiler support code") + compiler := cc.GenerateCompiler(goPackageName, License, []string{ + "fmt", + "gopkg.in/yaml.v2", + "strings", + "regexp", + "github.com/googleapis/gnostic/compiler", + }) + goFileName := projectRoot + filename + "/" + filename + ".go" + err = ioutil.WriteFile(goFileName, []byte(compiler), 0644) + if err != nil { + return err + } + // format the compiler + log.Printf("Formatting compiler support code") + return exec.Command(runtime.GOROOT()+"/bin/gofmt", "-w", goFileName).Run() +} + +func usage() string { + return fmt.Sprintf(` +Usage: %s [OPTIONS] +Options: + --v2 + Generate Protocol Buffer representation and support code for OpenAPI v2. + Files are read from and written to appropriate locations in the gnostic + project directory. + --v3 + Generate Protocol Buffer representation and support code for OpenAPI v3 + Files are read from and written to appropriate locations in the gnostic + project directory. + --extension EXTENSION_SCHEMA [EXTENSIONOPTIONS] + Generate a gnostic extension that reads a set of OpenAPI extensions. + EXTENSION_SCHEMA is the json schema for the OpenAPI extensions to be + supported. + EXTENSION_OPTIONS + --out_dir=PATH: Location for writing extension models and support code. +`, path.Base(os.Args[0])) +} + +func main() { + var openapiVersion = "" + var generateExtensions = false + + for i, arg := range os.Args { + if i == 0 { + continue // skip the tool name + } + if arg == "--v2" { + openapiVersion = "v2" + } else if arg == "--v3" { + openapiVersion = "v3" + } else if arg == "--extension" { + generateExtensions = true + break + } else { + fmt.Printf("Unknown option: %s.\n%s\n", arg, usage()) + os.Exit(-1) + } + } + + if openapiVersion != "" { + err := generateOpenAPIModel(openapiVersion) + if err != nil { + fmt.Printf("%+v\n", err) + } + } else if generateExtensions { + err := processExtensionGenCommandline(usage()) + if err != nil { + fmt.Printf("%+v\n", err) + } + } else { + fmt.Printf("%s\n", usage()) + } +} diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/test/errors/x-extension-name-collision.errors b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/errors/x-extension-name-collision.errors new file mode 100644 index 0000000000..abea4309bd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/errors/x-extension-name-collision.errors @@ -0,0 +1,2 @@ +Schema SampleCompanyTwoPrimitiveString and SampleCompanyOnePrimitiveString have the same 'id' field value. + diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/test/errors/x-unsupportedprimitives.errors b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/errors/x-unsupportedprimitives.errors new file mode 100644 index 0000000000..721a5f22ca --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/errors/x-unsupportedprimitives.errors @@ -0,0 +1,2 @@ +Schema SampleCompanyOnePrimitiveString has type 'unsupportedtype' which is not supported. Supported primitive types are [boolean integer number string]. + diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/test/x-extension-name-collision.json b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/x-extension-name-collision.json new file mode 100644 index 0000000000..ed4ece5fa9 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/x-extension-name-collision.json @@ -0,0 +1,12 @@ + { + "definitions": { + "SampleCompanyOnePrimitiveString": { + "type": "string", + "id": "x-samplecompanyone-mystr" + }, + "SampleCompanyTwoPrimitiveString": { + "type": "string", + "id": "x-samplecompanyone-mystr" + } + } + } \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/test/x-unsupportedprimitives.json b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/x-unsupportedprimitives.json new file mode 100644 index 0000000000..612cd37b9b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/test/x-unsupportedprimitives.json @@ -0,0 +1,8 @@ + { + "definitions": { + "SampleCompanyOnePrimitiveString": { + "type": "unsupportedtype", + "id": "x-samplecompanyone-mystr" + } + } + } \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go new file mode 100644 index 0000000000..9c2ca6fb6d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go @@ -0,0 +1,132 @@ +// Copyright 2017 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 main + +import ( + "fmt" + "strings" + + "github.com/googleapis/gnostic/jsonschema" +) + +/// Type Modeling + +// TypeRequest models types that we encounter during model-building that have no named schema. +type TypeRequest struct { + Name string // name of type to be created + PropertyName string // name of a property that refers to this type + Schema *jsonschema.Schema // schema for type + OneOfWrapper bool // true if the type wraps "oneOfs" +} + +// NewTypeRequest creates a TypeRequest. +func NewTypeRequest(name string, propertyName string, schema *jsonschema.Schema) *TypeRequest { + return &TypeRequest{Name: name, PropertyName: propertyName, Schema: schema} +} + +// TypeProperty models type properties, eg. fields. +type TypeProperty struct { + Name string // name of property + Type string // type for property (scalar or message type) + StringEnumValues []string // possible values if this is an enumerated string type + MapType string // if this property is for a map, the name of the mapped type + Repeated bool // true if this property is repeated (an array) + Pattern string // if the property is a pattern property, names must match this pattern. + Implicit bool // true if this property is implied by a pattern or "additional properties" property + Description string // if present, the "description" field in the schema +} + +func (typeProperty *TypeProperty) description() string { + result := "" + if typeProperty.Description != "" { + result += fmt.Sprintf("\t// %+s\n", typeProperty.Description) + } + if typeProperty.Repeated { + result += fmt.Sprintf("\t%s %s repeated %s\n", typeProperty.Name, typeProperty.Type, typeProperty.Pattern) + } else { + result += fmt.Sprintf("\t%s %s %s \n", typeProperty.Name, typeProperty.Type, typeProperty.Pattern) + } + return result +} + +// NewTypeProperty creates a TypeProperty +func NewTypeProperty() *TypeProperty { + return &TypeProperty{} +} + +// NewTypePropertyWithNameAndType creates a TypeProperty +func NewTypePropertyWithNameAndType(name string, typeName string) *TypeProperty { + return &TypeProperty{Name: name, Type: typeName} +} + +// NewTypePropertyWithNameTypeAndPattern creates a TypeProperty +func NewTypePropertyWithNameTypeAndPattern(name string, typeName string, pattern string) *TypeProperty { + return &TypeProperty{Name: name, Type: typeName, Pattern: pattern} +} + +// FieldName returns the message field name to use for a property. +func (typeProperty *TypeProperty) FieldName() string { + propertyName := typeProperty.Name + if propertyName == "$ref" { + return "XRef" + } + return strings.Title(propertyName) +} + +// TypeModel models types. +type TypeModel struct { + Name string // type name + Properties []*TypeProperty // slice of properties + Required []string // required property names + OneOfWrapper bool // true if this type wraps "oneof" properties + Open bool // open types can have keys outside the specified set + OpenPatterns []string // patterns for properties that we allow + IsStringArray bool // ugly override + IsItemArray bool // ugly override + IsBlob bool // ugly override + IsPair bool // type is a name-value pair used to support ordered maps + PairValueType string // type for pair values (valid if IsPair == true) + Description string // if present, the "description" field in the schema +} + +func (typeModel *TypeModel) addProperty(property *TypeProperty) { + if typeModel.Properties == nil { + typeModel.Properties = make([]*TypeProperty, 0) + } + typeModel.Properties = append(typeModel.Properties, property) +} + +func (typeModel *TypeModel) description() string { + result := "" + if typeModel.Description != "" { + result += fmt.Sprintf("// %+s\n", typeModel.Description) + } + var wrapperinfo string + if typeModel.OneOfWrapper { + wrapperinfo = " oneof wrapper" + } + result += fmt.Sprintf("%+s%s\n", typeModel.Name, wrapperinfo) + for _, property := range typeModel.Properties { + result += property.description() + } + return result +} + +// NewTypeModel creates a TypeModel. +func NewTypeModel() *TypeModel { + typeModel := &TypeModel{} + typeModel.Properties = make([]*TypeProperty, 0) + return typeModel +} diff --git a/vendor/github.com/googleapis/gnostic/gnostic.go b/vendor/github.com/googleapis/gnostic/gnostic.go new file mode 100644 index 0000000000..d2670cdea9 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/gnostic.go @@ -0,0 +1,556 @@ +// Copyright 2017 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. + +//go:generate ./COMPILE-PROTOS.sh + +// Gnostic is a tool for building better REST APIs through knowledge. +// +// Gnostic reads declarative descriptions of REST APIs that conform +// to the OpenAPI Specification, reports errors, resolves internal +// dependencies, and puts the results in a binary form that can +// be used in any language that is supported by the Protocol Buffer +// tools. +// +// Gnostic models are validated and typed. This allows API tool +// developers to focus on their product and not worry about input +// validation and type checking. +// +// Gnostic calls plugins that implement a variety of API implementation +// and support features including generation of client and server +// support code. +package main + +import ( + "bytes" + "errors" + "fmt" + "io" + "os" + "os/exec" + "path" + "path/filepath" + "regexp" + "strings" + + "github.com/golang/protobuf/proto" + "github.com/googleapis/gnostic/OpenAPIv2" + "github.com/googleapis/gnostic/OpenAPIv3" + "github.com/googleapis/gnostic/compiler" + "github.com/googleapis/gnostic/jsonwriter" + plugins "github.com/googleapis/gnostic/plugins" + "gopkg.in/yaml.v2" +) + +const ( // OpenAPI Version + openAPIvUnknown = 0 + openAPIv2 = 2 + openAPIv3 = 3 +) + +// Determine the version of an OpenAPI description read from JSON or YAML. +func getOpenAPIVersionFromInfo(info interface{}) int { + m, ok := compiler.UnpackMap(info) + if !ok { + return openAPIvUnknown + } + swagger, ok := compiler.MapValueForKey(m, "swagger").(string) + if ok && strings.HasPrefix(swagger, "2.0") { + return openAPIv2 + } + openapi, ok := compiler.MapValueForKey(m, "openapi").(string) + if ok && strings.HasPrefix(openapi, "3.0") { + return openAPIv3 + } + return openAPIvUnknown +} + +const ( + pluginPrefix = "gnostic-" + extensionPrefix = "gnostic-x-" +) + +type pluginCall struct { + Name string + Invocation string +} + +// Invokes a plugin. +func (p *pluginCall) perform(document proto.Message, openAPIVersion int, sourceName string) error { + if p.Name != "" { + request := &plugins.Request{} + + // Infer the name of the executable by adding the prefix. + executableName := pluginPrefix + p.Name + + // Validate invocation string with regular expression. + invocation := p.Invocation + + // + // Plugin invocations must consist of + // zero or more comma-separated key=value pairs followed by a path. + // If pairs are present, a colon separates them from the path. + // Keys and values must be alphanumeric strings and may contain + // dashes, underscores, periods, or forward slashes. + // A path can contain any characters other than the separators ',', ':', and '='. + // + invocationRegex := regexp.MustCompile(`^([\w-_\/\.]+=[\w-_\/\.]+(,[\w-_\/\.]+=[\w-_\/\.]+)*:)?[^,:=]+$`) + if !invocationRegex.Match([]byte(p.Invocation)) { + return fmt.Errorf("Invalid invocation of %s: %s", executableName, invocation) + } + + invocationParts := strings.Split(p.Invocation, ":") + var outputLocation string + switch len(invocationParts) { + case 1: + outputLocation = invocationParts[0] + case 2: + parameters := strings.Split(invocationParts[0], ",") + for _, keyvalue := range parameters { + pair := strings.Split(keyvalue, "=") + if len(pair) == 2 { + request.Parameters = append(request.Parameters, &plugins.Parameter{Name: pair[0], Value: pair[1]}) + } + } + outputLocation = invocationParts[1] + default: + // badly-formed request + outputLocation = invocationParts[len(invocationParts)-1] + } + + version := &plugins.Version{} + version.Major = 0 + version.Minor = 1 + version.Patch = 0 + request.CompilerVersion = version + + request.OutputPath = outputLocation + + wrapper := &plugins.Wrapper{} + wrapper.Name = sourceName + switch openAPIVersion { + case openAPIv2: + wrapper.Version = "v2" + case openAPIv3: + wrapper.Version = "v3" + default: + wrapper.Version = "unknown" + } + protoBytes, _ := proto.Marshal(document) + wrapper.Value = protoBytes + request.Wrapper = wrapper + requestBytes, _ := proto.Marshal(request) + + cmd := exec.Command(executableName) + cmd.Stdin = bytes.NewReader(requestBytes) + cmd.Stderr = os.Stderr + output, err := cmd.Output() + if err != nil { + return err + } + response := &plugins.Response{} + err = proto.Unmarshal(output, response) + if err != nil { + return err + } + + if response.Errors != nil { + return fmt.Errorf("Plugin error: %+v", response.Errors) + } + + // Write files to the specified directory. + var writer io.Writer + switch { + case outputLocation == "!": + // Write nothing. + case outputLocation == "-": + writer = os.Stdout + for _, file := range response.Files { + writer.Write([]byte("\n\n" + file.Name + " -------------------- \n")) + writer.Write(file.Data) + } + case isFile(outputLocation): + return fmt.Errorf("unable to overwrite %s", outputLocation) + default: // write files into a directory named by outputLocation + if !isDirectory(outputLocation) { + os.Mkdir(outputLocation, 0755) + } + for _, file := range response.Files { + p := outputLocation + "/" + file.Name + dir := path.Dir(p) + os.MkdirAll(dir, 0755) + f, _ := os.Create(p) + defer f.Close() + f.Write(file.Data) + } + } + } + return nil +} + +func isFile(path string) bool { + fileInfo, err := os.Stat(path) + if err != nil { + return false + } + return !fileInfo.IsDir() +} + +func isDirectory(path string) bool { + fileInfo, err := os.Stat(path) + if err != nil { + return false + } + return fileInfo.IsDir() +} + +// Write bytes to a named file. +// Certain names have special meaning: +// ! writes nothing +// - writes to stdout +// = writes to stderr +// If a directory name is given, the file is written there with +// a name derived from the source and extension arguments. +func writeFile(name string, bytes []byte, source string, extension string) { + var writer io.Writer + if name == "!" { + return + } else if name == "-" { + writer = os.Stdout + } else if name == "=" { + writer = os.Stderr + } else if isDirectory(name) { + base := filepath.Base(source) + // Remove the original source extension. + base = base[0 : len(base)-len(filepath.Ext(base))] + // Build the path that puts the result in the passed-in directory. + filename := name + "/" + base + "." + extension + file, _ := os.Create(filename) + defer file.Close() + writer = file + } else { + file, _ := os.Create(name) + defer file.Close() + writer = file + } + writer.Write(bytes) + if name == "-" || name == "=" { + writer.Write([]byte("\n")) + } +} + +// The Gnostic structure holds global state information for gnostic. +type Gnostic struct { + usage string + sourceName string + binaryOutputPath string + textOutputPath string + yamlOutputPath string + jsonOutputPath string + errorOutputPath string + resolveReferences bool + pluginCalls []*pluginCall + extensionHandlers []compiler.ExtensionHandler + openAPIVersion int +} + +// Initialize a structure to store global application state. +func newGnostic() *Gnostic { + g := &Gnostic{} + // Option fields initialize to their default values. + g.usage = ` +Usage: gnostic OPENAPI_SOURCE [OPTIONS] + OPENAPI_SOURCE is the filename or URL of an OpenAPI description to read. +Options: + --pb-out=PATH Write a binary proto to the specified location. + --text-out=PATH Write a text proto to the specified location. + --json-out=PATH Write a json API description to the specified location. + --yaml-out=PATH Write a yaml API description to the specified location. + --errors-out=PATH Write compilation errors to the specified location. + --PLUGIN-out=PATH Run the plugin named gnostic_PLUGIN and write results + to the specified location. + --x-EXTENSION Use the extension named gnostic-x-EXTENSION + to process OpenAPI specification extensions. + --resolve-refs Explicitly resolve $ref references. + This could have problems with recursive definitions. +` + // Initialize internal structures. + g.pluginCalls = make([]*pluginCall, 0) + g.extensionHandlers = make([]compiler.ExtensionHandler, 0) + return g +} + +// Parse command-line options. +func (g *Gnostic) readOptions() { + // plugin processing matches patterns of the form "--PLUGIN-out=PATH" and "--PLUGIN_out=PATH" + pluginRegex := regexp.MustCompile("--(.+)[-_]out=(.+)") + + // extension processing matches patterns of the form "--x-EXTENSION" + extensionRegex := regexp.MustCompile("--x-(.+)") + + for i, arg := range os.Args { + if i == 0 { + continue // skip the tool name + } + var m [][]byte + if m = pluginRegex.FindSubmatch([]byte(arg)); m != nil { + pluginName := string(m[1]) + invocation := string(m[2]) + switch pluginName { + case "pb": + g.binaryOutputPath = invocation + case "text": + g.textOutputPath = invocation + case "json": + g.jsonOutputPath = invocation + case "yaml": + g.yamlOutputPath = invocation + case "errors": + g.errorOutputPath = invocation + default: + p := &pluginCall{Name: pluginName, Invocation: invocation} + g.pluginCalls = append(g.pluginCalls, p) + } + } else if m = extensionRegex.FindSubmatch([]byte(arg)); m != nil { + extensionName := string(m[1]) + extensionHandler := compiler.ExtensionHandler{Name: extensionPrefix + extensionName} + g.extensionHandlers = append(g.extensionHandlers, extensionHandler) + } else if arg == "--resolve-refs" { + g.resolveReferences = true + } else if arg[0] == '-' { + fmt.Fprintf(os.Stderr, "Unknown option: %s.\n%s\n", arg, g.usage) + os.Exit(-1) + } else { + g.sourceName = arg + } + } +} + +// Validate command-line options. +func (g *Gnostic) validateOptions() { + if g.binaryOutputPath == "" && + g.textOutputPath == "" && + g.yamlOutputPath == "" && + g.jsonOutputPath == "" && + g.errorOutputPath == "" && + len(g.pluginCalls) == 0 { + fmt.Fprintf(os.Stderr, "Missing output directives.\n%s\n", g.usage) + os.Exit(-1) + } + if g.sourceName == "" { + fmt.Fprintf(os.Stderr, "No input specified.\n%s\n", g.usage) + os.Exit(-1) + } + // If we get here and the error output is unspecified, write errors to stderr. + if g.errorOutputPath == "" { + g.errorOutputPath = "=" + } +} + +// Generate an error message to be written to stderr or a file. +func (g *Gnostic) errorBytes(err error) []byte { + return []byte("Errors reading " + g.sourceName + "\n" + err.Error()) +} + +// Read an OpenAPI description from YAML or JSON. +func (g *Gnostic) readOpenAPIText(bytes []byte) (message proto.Message, err error) { + info, err := compiler.ReadInfoFromBytes(g.sourceName, bytes) + if err != nil { + return nil, err + } + // Determine the OpenAPI version. + g.openAPIVersion = getOpenAPIVersionFromInfo(info) + if g.openAPIVersion == openAPIvUnknown { + return nil, errors.New("unable to identify OpenAPI version") + } + // Compile to the proto model. + if g.openAPIVersion == openAPIv2 { + document, err := openapi_v2.NewDocument(info, compiler.NewContextWithExtensions("$root", nil, &g.extensionHandlers)) + if err != nil { + return nil, err + } + message = document + } else if g.openAPIVersion == openAPIv3 { + document, err := openapi_v3.NewDocument(info, compiler.NewContextWithExtensions("$root", nil, &g.extensionHandlers)) + if err != nil { + return nil, err + } + message = document + } + return message, err +} + +// Read an OpenAPI binary file. +func (g *Gnostic) readOpenAPIBinary(data []byte) (message proto.Message, err error) { + // try to read an OpenAPI v3 document + documentV3 := &openapi_v3.Document{} + err = proto.Unmarshal(data, documentV3) + if err == nil && strings.HasPrefix(documentV3.Openapi, "3.0") { + g.openAPIVersion = openAPIv3 + return documentV3, nil + } + // if that failed, try to read an OpenAPI v2 document + documentV2 := &openapi_v2.Document{} + err = proto.Unmarshal(data, documentV2) + if err == nil && strings.HasPrefix(documentV2.Swagger, "2.0") { + g.openAPIVersion = openAPIv2 + return documentV2, nil + } + return nil, err +} + +// Write a binary pb representation. +func (g *Gnostic) writeBinaryOutput(message proto.Message) { + protoBytes, err := proto.Marshal(message) + if err != nil { + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + defer os.Exit(-1) + } else { + writeFile(g.binaryOutputPath, protoBytes, g.sourceName, "pb") + } +} + +// Write a text pb representation. +func (g *Gnostic) writeTextOutput(message proto.Message) { + bytes := []byte(proto.MarshalTextString(message)) + writeFile(g.textOutputPath, bytes, g.sourceName, "text") +} + +// Write JSON/YAML OpenAPI representations. +func (g *Gnostic) writeJSONYAMLOutput(message proto.Message) { + // Convert the OpenAPI document into an exportable MapSlice. + var rawInfo yaml.MapSlice + var ok bool + var err error + if g.openAPIVersion == openAPIv2 { + document := message.(*openapi_v2.Document) + rawInfo, ok = document.ToRawInfo().(yaml.MapSlice) + if !ok { + rawInfo = nil + } + } else if g.openAPIVersion == openAPIv3 { + document := message.(*openapi_v3.Document) + rawInfo, ok = document.ToRawInfo().(yaml.MapSlice) + if !ok { + rawInfo = nil + } + } + // Optionally write description in yaml format. + if g.yamlOutputPath != "" { + var bytes []byte + if rawInfo != nil { + bytes, err = yaml.Marshal(rawInfo) + if err != nil { + fmt.Fprintf(os.Stderr, "Error generating yaml output %s\n", err.Error()) + } + writeFile(g.yamlOutputPath, bytes, g.sourceName, "yaml") + } else { + fmt.Fprintf(os.Stderr, "No yaml output available.\n") + } + } + // Optionally write description in json format. + if g.jsonOutputPath != "" { + var bytes []byte + if rawInfo != nil { + bytes, _ = jsonwriter.Marshal(rawInfo) + if err != nil { + fmt.Fprintf(os.Stderr, "Error generating json output %s\n", err.Error()) + } + writeFile(g.jsonOutputPath, bytes, g.sourceName, "json") + } else { + fmt.Fprintf(os.Stderr, "No json output available.\n") + } + } +} + +// Perform all actions specified in the command-line options. +func (g *Gnostic) performActions(message proto.Message) (err error) { + // Optionally resolve internal references. + if g.resolveReferences { + if g.openAPIVersion == openAPIv2 { + document := message.(*openapi_v2.Document) + _, err = document.ResolveReferences(g.sourceName) + } else if g.openAPIVersion == openAPIv3 { + document := message.(*openapi_v3.Document) + _, err = document.ResolveReferences(g.sourceName) + } + if err != nil { + return err + } + } + // Optionally write proto in binary format. + if g.binaryOutputPath != "" { + g.writeBinaryOutput(message) + } + // Optionally write proto in text format. + if g.textOutputPath != "" { + g.writeTextOutput(message) + } + // Optionaly write document in yaml and/or json formats. + if g.yamlOutputPath != "" || g.jsonOutputPath != "" { + g.writeJSONYAMLOutput(message) + } + // Call all specified plugins. + for _, p := range g.pluginCalls { + err := p.perform(message, g.openAPIVersion, g.sourceName) + if err != nil { + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + defer os.Exit(-1) // run all plugins, even when some have errors + } + } + return nil +} + +func (g *Gnostic) main() { + var err error + g.readOptions() + g.validateOptions() + // Read the OpenAPI source. + bytes, err := compiler.ReadBytesForFile(g.sourceName) + if err != nil { + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + os.Exit(-1) + } + extension := strings.ToLower(filepath.Ext(g.sourceName)) + var message proto.Message + if extension == ".json" || extension == ".yaml" { + // Try to read the source as JSON/YAML. + message, err = g.readOpenAPIText(bytes) + if err != nil { + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + os.Exit(-1) + } + } else if extension == ".pb" { + // Try to read the source as a binary protocol buffer. + message, err = g.readOpenAPIBinary(bytes) + if err != nil { + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + os.Exit(-1) + } + } else { + err = errors.New("unknown file extension. 'json', 'yaml', and 'pb' are accepted") + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + os.Exit(-1) + } + // Perform actions specified by command options. + err = g.performActions(message) + if err != nil { + writeFile(g.errorOutputPath, g.errorBytes(err), g.sourceName, "errors") + os.Exit(-1) + } +} + +func main() { + g := newGnostic() + g.main() +} diff --git a/vendor/github.com/googleapis/gnostic/gnostic_test.go b/vendor/github.com/googleapis/gnostic/gnostic_test.go new file mode 100644 index 0000000000..c5ccf6da98 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/gnostic_test.go @@ -0,0 +1,453 @@ +package main + +import ( + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "strings" + "testing" +) + +func testCompiler(t *testing.T, inputFile string, referenceFile string, expectErrors bool) { + textFile := strings.Replace(filepath.Base(inputFile), filepath.Ext(inputFile), ".text", 1) + errorsFile := strings.Replace(filepath.Base(inputFile), filepath.Ext(inputFile), ".errors", 1) + // remove any preexisting output files + os.Remove(textFile) + os.Remove(errorsFile) + // run the compiler + var err error + var cmd = exec.Command( + "gnostic", + inputFile, + "--text-out=.", + "--errors-out=.", + "--resolve-refs") + //t.Log(cmd.Args) + err = cmd.Run() + if err != nil && !expectErrors { + t.Logf("Compile failed: %+v", err) + t.FailNow() + } + // verify the output against a reference + var outputFile string + if expectErrors { + outputFile = errorsFile + } else { + outputFile = textFile + } + err = exec.Command("diff", outputFile, referenceFile).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(textFile) + os.Remove(errorsFile) + } +} + +func testNormal(t *testing.T, inputFile string, referenceFile string) { + testCompiler(t, inputFile, referenceFile, false) +} + +func testErrors(t *testing.T, inputFile string, referenceFile string) { + testCompiler(t, inputFile, referenceFile, true) +} + +func TestPetstoreJSON(t *testing.T) { + testNormal(t, + "examples/v2.0/json/petstore.json", + "test/v2.0/petstore.text") +} + +func TestPetstoreYAML(t *testing.T) { + testNormal(t, + "examples/v2.0/yaml/petstore.yaml", + "test/v2.0/petstore.text") +} + +func TestSeparateYAML(t *testing.T) { + testNormal(t, + "examples/v2.0/yaml/petstore-separate/spec/swagger.yaml", + "test/v2.0/yaml/petstore-separate/spec/swagger.text") +} + +func TestSeparateJSON(t *testing.T) { + testNormal(t, + "examples/v2.0/json/petstore-separate/spec/swagger.json", + "test/v2.0/yaml/petstore-separate/spec/swagger.text") // yaml and json results should be identical +} + +func TestRemotePetstoreJSON(t *testing.T) { + testNormal(t, + "https://raw.githubusercontent.com/googleapis/openapi-compiler/master/examples/v2.0/json/petstore.json", + "test/v2.0/petstore.text") +} + +func TestRemotePetstoreYAML(t *testing.T) { + testNormal(t, + "https://raw.githubusercontent.com/googleapis/openapi-compiler/master/examples/v2.0/yaml/petstore.yaml", + "test/v2.0/petstore.text") +} + +func TestRemoteSeparateYAML(t *testing.T) { + testNormal(t, + "https://raw.githubusercontent.com/googleapis/openapi-compiler/master/examples/v2.0/yaml/petstore-separate/spec/swagger.yaml", + "test/v2.0/yaml/petstore-separate/spec/swagger.text") +} + +func TestRemoteSeparateJSON(t *testing.T) { + testNormal(t, + "https://raw.githubusercontent.com/googleapis/openapi-compiler/master/examples/v2.0/json/petstore-separate/spec/swagger.json", + "test/v2.0/yaml/petstore-separate/spec/swagger.text") +} + +func TestErrorBadProperties(t *testing.T) { + testErrors(t, + "examples/errors/petstore-badproperties.yaml", + "test/errors/petstore-badproperties.errors") +} + +func TestErrorUnresolvedRefs(t *testing.T) { + testErrors(t, + "examples/errors/petstore-unresolvedrefs.yaml", + "test/errors/petstore-unresolvedrefs.errors") +} + +func TestErrorMissingVersion(t *testing.T) { + testErrors(t, + "examples/errors/petstore-missingversion.yaml", + "test/errors/petstore-missingversion.errors") +} + +func testPlugin(t *testing.T, plugin string, inputFile string, outputFile string, referenceFile string) { + // remove any preexisting output files + os.Remove(outputFile) + // run the compiler + var err error + output, err := exec.Command( + "gnostic", + "--"+plugin+"-out=-", + inputFile).Output() + if err != nil { + t.Logf("Compile failed: %+v", err) + t.FailNow() + } + _ = ioutil.WriteFile(outputFile, output, 0644) + err = exec.Command("diff", outputFile, referenceFile).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(outputFile) + } +} + +func TestSamplePluginWithPetstore(t *testing.T) { + testPlugin(t, + "go-sample", + "examples/v2.0/yaml/petstore.yaml", + "sample-petstore.out", + "test/v2.0/yaml/sample-petstore.out") +} + +func TestErrorInvalidPluginInvocations(t *testing.T) { + var err error + output, err := exec.Command( + "gnostic", + "examples/v2.0/yaml/petstore.yaml", + "--errors-out=-", + "--plugin-out=foo=bar,:abc", + "--plugin-out=,foo=bar:abc", + "--plugin-out=foo=:abc", + "--plugin-out==bar:abc", + "--plugin-out=,,:abc", + "--plugin-out=foo=bar=baz:abc", + ).Output() + if err == nil { + t.Logf("Invalid invocations were accepted") + t.FailNow() + } + outputFile := "invalid-plugin-invocation.errors" + _ = ioutil.WriteFile(outputFile, output, 0644) + err = exec.Command("diff", outputFile, "test/errors/invalid-plugin-invocation.errors").Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(outputFile) + } +} + +func TestValidPluginInvocations(t *testing.T) { + var err error + output, err := exec.Command( + "gnostic", + "examples/v2.0/yaml/petstore.yaml", + "--errors-out=-", + // verify an invocation with no parameters + "--go-sample-out=!", // "!" indicates that no output should be generated + // verify single pair of parameters + "--go-sample-out=a=b:!", + // verify multiple parameters + "--go-sample-out=a=b,c=123,xyz=alphabetagammadelta:!", + // verify that special characters / . - _ can be included in parameter keys and values + "--go-sample-out=a/b/c=x/y/z:!", + "--go-sample-out=a.b.c=x.y.z:!", + "--go-sample-out=a-b-c=x-y-z:!", + "--go-sample-out=a_b_c=x_y_z:!", + ).Output() + if len(output) != 0 { + t.Logf("Valid invocations generated invalid errors\n%s", string(output)) + t.FailNow() + } + if err != nil { + t.Logf("Valid invocations were not accepted") + t.FailNow() + } +} + +func TestExtensionHandlerWithLibraryExample(t *testing.T) { + outputFile := "library-example-with-ext.text.out" + inputFile := "test/library-example-with-ext.json" + referenceFile := "test/library-example-with-ext.text.out" + + os.Remove(outputFile) + // run the compiler + var err error + + command := exec.Command( + "gnostic", + "--x-sampleone", + "--x-sampletwo", + "--text-out="+outputFile, + "--resolve-refs", + inputFile) + + _, err = command.Output() + if err != nil { + t.Logf("Compile failed for command %v: %+v", command, err) + t.FailNow() + } + //_ = ioutil.WriteFile(outputFile, output, 0644) + err = exec.Command("diff", outputFile, referenceFile).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(outputFile) + } +} + +func TestJSONOutput(t *testing.T) { + inputFile := "test/library-example-with-ext.json" + + textFile := "sample.text" + jsonFile := "sample.json" + textFile2 := "sample2.text" + jsonFile2 := "sample2.json" + + os.Remove(textFile) + os.Remove(jsonFile) + os.Remove(textFile2) + os.Remove(jsonFile2) + + var err error + + // Run the compiler once. + command := exec.Command( + "gnostic", + "--text-out="+textFile, + "--json-out="+jsonFile, + inputFile) + _, err = command.Output() + if err != nil { + t.Logf("Compile failed for command %v: %+v", command, err) + t.FailNow() + } + + // Run the compiler again, this time on the generated output. + command = exec.Command( + "gnostic", + "--text-out="+textFile2, + "--json-out="+jsonFile2, + jsonFile) + _, err = command.Output() + if err != nil { + t.Logf("Compile failed for command %v: %+v", command, err) + t.FailNow() + } + + // Verify that both models have the same internal representation. + err = exec.Command("diff", textFile, textFile2).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(textFile) + os.Remove(jsonFile) + os.Remove(textFile2) + os.Remove(jsonFile2) + } +} + +func TestYAMLOutput(t *testing.T) { + inputFile := "test/library-example-with-ext.json" + + textFile := "sample.text" + yamlFile := "sample.yaml" + textFile2 := "sample2.text" + yamlFile2 := "sample2.yaml" + + os.Remove(textFile) + os.Remove(yamlFile) + os.Remove(textFile2) + os.Remove(yamlFile2) + + var err error + + // Run the compiler once. + command := exec.Command( + "gnostic", + "--text-out="+textFile, + "--yaml-out="+yamlFile, + inputFile) + _, err = command.Output() + if err != nil { + t.Logf("Compile failed for command %v: %+v", command, err) + t.FailNow() + } + + // Run the compiler again, this time on the generated output. + command = exec.Command( + "gnostic", + "--text-out="+textFile2, + "--yaml-out="+yamlFile2, + yamlFile) + _, err = command.Output() + if err != nil { + t.Logf("Compile failed for command %v: %+v", command, err) + t.FailNow() + } + + // Verify that both models have the same internal representation. + err = exec.Command("diff", textFile, textFile2).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } else { + // if the test succeeded, clean up + os.Remove(textFile) + os.Remove(yamlFile) + os.Remove(textFile2) + os.Remove(yamlFile2) + } +} + +func testBuilder(version string, t *testing.T) { + var err error + + pbFile := "petstore-" + version + ".pb" + yamlFile := "petstore.yaml" + jsonFile := "petstore.json" + textFile := "petstore.text" + textReference := "test/" + version + ".0/petstore.text" + + os.Remove(pbFile) + os.Remove(textFile) + os.Remove(yamlFile) + os.Remove(jsonFile) + + // Generate petstore.pb. + command := exec.Command( + "petstore-builder", + "--"+version) + _, err = command.Output() + if err != nil { + t.Logf("Command %v failed: %+v", command, err) + t.FailNow() + } + + // Convert petstore.pb to yaml and json. + command = exec.Command( + "gnostic", + pbFile, + "--json-out="+jsonFile, + "--yaml-out="+yamlFile) + _, err = command.Output() + if err != nil { + t.Logf("Command %v failed: %+v", command, err) + t.FailNow() + } + + // Read petstore.yaml, resolve references, and export text. + command = exec.Command( + "gnostic", + yamlFile, + "--resolve-refs", + "--text-out="+textFile) + _, err = command.Output() + if err != nil { + t.Logf("Command %v failed: %+v", command, err) + t.FailNow() + } + + // Verify that the generated text matches our reference. + err = exec.Command("diff", textFile, textReference).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } + + // Read petstore.json, resolve references, and export text. + command = exec.Command( + "gnostic", + jsonFile, + "--resolve-refs", + "--text-out="+textFile) + _, err = command.Output() + if err != nil { + t.Logf("Command %v failed: %+v", command, err) + t.FailNow() + } + + // Verify that the generated text matches our reference. + err = exec.Command("diff", textFile, textReference).Run() + if err != nil { + t.Logf("Diff failed: %+v", err) + t.FailNow() + } + + // if the test succeeded, clean up + os.Remove(pbFile) + os.Remove(textFile) + os.Remove(yamlFile) + os.Remove(jsonFile) +} + +func TestBuilderV2(t *testing.T) { + testBuilder("v2", t) +} + +func TestBuilderV3(t *testing.T) { + testBuilder("v3", t) +} + +// OpenAPI 3.0 tests + +func TestPetstoreYAML_30(t *testing.T) { + testNormal(t, + "examples/v3.0/yaml/petstore.yaml", + "test/v3.0/petstore.text") +} + +func TestPetstoreJSON_30(t *testing.T) { + testNormal(t, + "examples/v3.0/json/petstore.json", + "test/v3.0/petstore.text") +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/README.md b/vendor/github.com/googleapis/gnostic/jsonschema/README.md new file mode 100644 index 0000000000..c0dbe4a933 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/README.md @@ -0,0 +1,3 @@ +# jsonschema + +This directory contains code for reading, writing, and manipulating JSON schemas. \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/display.go b/vendor/github.com/googleapis/gnostic/jsonschema/display.go new file mode 100644 index 0000000000..9b5c5611f5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/display.go @@ -0,0 +1,229 @@ +// Copyright 2017 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 jsonschema + +import ( + "fmt" + "strings" +) + +// +// DISPLAY +// The following methods display Schemas. +// + +// Description returns a string representation of a string or string array. +func (s *StringOrStringArray) Description() string { + if s.String != nil { + return *s.String + } + if s.StringArray != nil { + return strings.Join(*s.StringArray, ", ") + } + return "" +} + +// Returns a string representation of a Schema. +func (schema *Schema) String() string { + return schema.describeSchema("") +} + +// Helper: Returns a string representation of a Schema indented by a specified string. +func (schema *Schema) describeSchema(indent string) string { + result := "" + if schema.Schema != nil { + result += indent + "$schema: " + *(schema.Schema) + "\n" + } + if schema.ID != nil { + result += indent + "id: " + *(schema.ID) + "\n" + } + if schema.MultipleOf != nil { + result += indent + fmt.Sprintf("multipleOf: %+v\n", *(schema.MultipleOf)) + } + if schema.Maximum != nil { + result += indent + fmt.Sprintf("maximum: %+v\n", *(schema.Maximum)) + } + if schema.ExclusiveMaximum != nil { + result += indent + fmt.Sprintf("exclusiveMaximum: %+v\n", *(schema.ExclusiveMaximum)) + } + if schema.Minimum != nil { + result += indent + fmt.Sprintf("minimum: %+v\n", *(schema.Minimum)) + } + if schema.ExclusiveMinimum != nil { + result += indent + fmt.Sprintf("exclusiveMinimum: %+v\n", *(schema.ExclusiveMinimum)) + } + if schema.MaxLength != nil { + result += indent + fmt.Sprintf("maxLength: %+v\n", *(schema.MaxLength)) + } + if schema.MinLength != nil { + result += indent + fmt.Sprintf("minLength: %+v\n", *(schema.MinLength)) + } + if schema.Pattern != nil { + result += indent + fmt.Sprintf("pattern: %+v\n", *(schema.Pattern)) + } + if schema.AdditionalItems != nil { + s := schema.AdditionalItems.Schema + if s != nil { + result += indent + "additionalItems:\n" + result += s.describeSchema(indent + " ") + } else { + b := *(schema.AdditionalItems.Boolean) + result += indent + fmt.Sprintf("additionalItems: %+v\n", b) + } + } + if schema.Items != nil { + result += indent + "items:\n" + items := schema.Items + if items.SchemaArray != nil { + for i, s := range *(items.SchemaArray) { + result += indent + " " + fmt.Sprintf("%d", i) + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } else if items.Schema != nil { + result += items.Schema.describeSchema(indent + " " + " ") + } + } + if schema.MaxItems != nil { + result += indent + fmt.Sprintf("maxItems: %+v\n", *(schema.MaxItems)) + } + if schema.MinItems != nil { + result += indent + fmt.Sprintf("minItems: %+v\n", *(schema.MinItems)) + } + if schema.UniqueItems != nil { + result += indent + fmt.Sprintf("uniqueItems: %+v\n", *(schema.UniqueItems)) + } + if schema.MaxProperties != nil { + result += indent + fmt.Sprintf("maxProperties: %+v\n", *(schema.MaxProperties)) + } + if schema.MinProperties != nil { + result += indent + fmt.Sprintf("minProperties: %+v\n", *(schema.MinProperties)) + } + if schema.Required != nil { + result += indent + fmt.Sprintf("required: %+v\n", *(schema.Required)) + } + if schema.AdditionalProperties != nil { + s := schema.AdditionalProperties.Schema + if s != nil { + result += indent + "additionalProperties:\n" + result += s.describeSchema(indent + " ") + } else { + b := *(schema.AdditionalProperties.Boolean) + result += indent + fmt.Sprintf("additionalProperties: %+v\n", b) + } + } + if schema.Properties != nil { + result += indent + "properties:\n" + for _, pair := range *(schema.Properties) { + name := pair.Name + s := pair.Value + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } + if schema.PatternProperties != nil { + result += indent + "patternProperties:\n" + for _, pair := range *(schema.PatternProperties) { + name := pair.Name + s := pair.Value + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } + if schema.Dependencies != nil { + result += indent + "dependencies:\n" + for _, pair := range *(schema.Dependencies) { + name := pair.Name + schemaOrStringArray := pair.Value + s := schemaOrStringArray.Schema + if s != nil { + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } else { + a := schemaOrStringArray.StringArray + if a != nil { + result += indent + " " + name + ":\n" + for _, s2 := range *a { + result += indent + " " + " " + s2 + "\n" + } + } + } + + } + } + if schema.Enumeration != nil { + result += indent + "enumeration:\n" + for _, value := range *(schema.Enumeration) { + if value.String != nil { + result += indent + " " + fmt.Sprintf("%+v\n", *value.String) + } else { + result += indent + " " + fmt.Sprintf("%+v\n", *value.Bool) + } + } + } + if schema.Type != nil { + result += indent + fmt.Sprintf("type: %+v\n", schema.Type.Description()) + } + if schema.AllOf != nil { + result += indent + "allOf:\n" + for _, s := range *(schema.AllOf) { + result += s.describeSchema(indent + " ") + result += indent + "-\n" + } + } + if schema.AnyOf != nil { + result += indent + "anyOf:\n" + for _, s := range *(schema.AnyOf) { + result += s.describeSchema(indent + " ") + result += indent + "-\n" + } + } + if schema.OneOf != nil { + result += indent + "oneOf:\n" + for _, s := range *(schema.OneOf) { + result += s.describeSchema(indent + " ") + result += indent + "-\n" + } + } + if schema.Not != nil { + result += indent + "not:\n" + result += schema.Not.describeSchema(indent + " ") + } + if schema.Definitions != nil { + result += indent + "definitions:\n" + for _, pair := range *(schema.Definitions) { + name := pair.Name + s := pair.Value + result += indent + " " + name + ":\n" + result += s.describeSchema(indent + " " + " ") + } + } + if schema.Title != nil { + result += indent + "title: " + *(schema.Title) + "\n" + } + if schema.Description != nil { + result += indent + "description: " + *(schema.Description) + "\n" + } + if schema.Default != nil { + result += indent + "default:\n" + result += indent + fmt.Sprintf(" %+v\n", *(schema.Default)) + } + if schema.Format != nil { + result += indent + "format: " + *(schema.Format) + "\n" + } + if schema.Ref != nil { + result += indent + "$ref: " + *(schema.Ref) + "\n" + } + return result +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/models.go b/vendor/github.com/googleapis/gnostic/jsonschema/models.go new file mode 100644 index 0000000000..67f1f91487 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/models.go @@ -0,0 +1,226 @@ +// Copyright 2017 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 jsonschema supports the reading, writing, and manipulation +// of JSON Schemas. +package jsonschema + +// The Schema struct models a JSON Schema and, because schemas are +// defined hierarchically, contains many references to itself. +// All fields are pointers and are nil if the associated values +// are not specified. +type Schema struct { + Schema *string // $schema + ID *string // id keyword used for $ref resolution scope + Ref *string // $ref, i.e. JSON Pointers + + // http://json-schema.org/latest/json-schema-validation.html + // 5.1. Validation keywords for numeric instances (number and integer) + MultipleOf *SchemaNumber + Maximum *SchemaNumber + ExclusiveMaximum *bool + Minimum *SchemaNumber + ExclusiveMinimum *bool + + // 5.2. Validation keywords for strings + MaxLength *int64 + MinLength *int64 + Pattern *string + + // 5.3. Validation keywords for arrays + AdditionalItems *SchemaOrBoolean + Items *SchemaOrSchemaArray + MaxItems *int64 + MinItems *int64 + UniqueItems *bool + + // 5.4. Validation keywords for objects + MaxProperties *int64 + MinProperties *int64 + Required *[]string + AdditionalProperties *SchemaOrBoolean + Properties *[]*NamedSchema + PatternProperties *[]*NamedSchema + Dependencies *[]*NamedSchemaOrStringArray + + // 5.5. Validation keywords for any instance type + Enumeration *[]SchemaEnumValue + Type *StringOrStringArray + AllOf *[]*Schema + AnyOf *[]*Schema + OneOf *[]*Schema + Not *Schema + Definitions *[]*NamedSchema + + // 6. Metadata keywords + Title *string + Description *string + Default *interface{} + + // 7. Semantic validation with "format" + Format *string +} + +// These helper structs represent "combination" types that generally can +// have values of one type or another. All are used to represent parts +// of Schemas. + +// SchemaNumber represents a value that can be either an Integer or a Float. +type SchemaNumber struct { + Integer *int64 + Float *float64 +} + +// NewSchemaNumberWithInteger creates and returns a new object +func NewSchemaNumberWithInteger(i int64) *SchemaNumber { + result := &SchemaNumber{} + result.Integer = &i + return result +} + +// NewSchemaNumberWithFloat creates and returns a new object +func NewSchemaNumberWithFloat(f float64) *SchemaNumber { + result := &SchemaNumber{} + result.Float = &f + return result +} + +// SchemaOrBoolean represents a value that can be either a Schema or a Boolean. +type SchemaOrBoolean struct { + Schema *Schema + Boolean *bool +} + +// NewSchemaOrBooleanWithSchema creates and returns a new object +func NewSchemaOrBooleanWithSchema(s *Schema) *SchemaOrBoolean { + result := &SchemaOrBoolean{} + result.Schema = s + return result +} + +// NewSchemaOrBooleanWithBoolean creates and returns a new object +func NewSchemaOrBooleanWithBoolean(b bool) *SchemaOrBoolean { + result := &SchemaOrBoolean{} + result.Boolean = &b + return result +} + +// StringOrStringArray represents a value that can be either +// a String or an Array of Strings. +type StringOrStringArray struct { + String *string + StringArray *[]string +} + +// NewStringOrStringArrayWithString creates and returns a new object +func NewStringOrStringArrayWithString(s string) *StringOrStringArray { + result := &StringOrStringArray{} + result.String = &s + return result +} + +// NewStringOrStringArrayWithStringArray creates and returns a new object +func NewStringOrStringArrayWithStringArray(a []string) *StringOrStringArray { + result := &StringOrStringArray{} + result.StringArray = &a + return result +} + +// SchemaOrStringArray represents a value that can be either +// a Schema or an Array of Strings. +type SchemaOrStringArray struct { + Schema *Schema + StringArray *[]string +} + +// SchemaOrSchemaArray represents a value that can be either +// a Schema or an Array of Schemas. +type SchemaOrSchemaArray struct { + Schema *Schema + SchemaArray *[]*Schema +} + +// NewSchemaOrSchemaArrayWithSchema creates and returns a new object +func NewSchemaOrSchemaArrayWithSchema(s *Schema) *SchemaOrSchemaArray { + result := &SchemaOrSchemaArray{} + result.Schema = s + return result +} + +// NewSchemaOrSchemaArrayWithSchemaArray creates and returns a new object +func NewSchemaOrSchemaArrayWithSchemaArray(a []*Schema) *SchemaOrSchemaArray { + result := &SchemaOrSchemaArray{} + result.SchemaArray = &a + return result +} + +// SchemaEnumValue represents a value that can be part of an +// enumeration in a Schema. +type SchemaEnumValue struct { + String *string + Bool *bool +} + +// NamedSchema is a name-value pair that is used to emulate maps +// with ordered keys. +type NamedSchema struct { + Name string + Value *Schema +} + +// NewNamedSchema creates and returns a new object +func NewNamedSchema(name string, value *Schema) *NamedSchema { + return &NamedSchema{Name: name, Value: value} +} + +// NamedSchemaOrStringArray is a name-value pair that is used +// to emulate maps with ordered keys. +type NamedSchemaOrStringArray struct { + Name string + Value *SchemaOrStringArray +} + +// Access named subschemas by name + +func namedSchemaArrayElementWithName(array *[]*NamedSchema, name string) *Schema { + if array == nil { + return nil + } + for _, pair := range *array { + if pair.Name == name { + return pair.Value + } + } + return nil +} + +// PropertyWithName returns the selected element. +func (s *Schema) PropertyWithName(name string) *Schema { + return namedSchemaArrayElementWithName(s.Properties, name) +} + +// PatternPropertyWithName returns the selected element. +func (s *Schema) PatternPropertyWithName(name string) *Schema { + return namedSchemaArrayElementWithName(s.PatternProperties, name) +} + +// DefinitionWithName returns the selected element. +func (s *Schema) DefinitionWithName(name string) *Schema { + return namedSchemaArrayElementWithName(s.Definitions, name) +} + +// AddProperty adds a named property. +func (s *Schema) AddProperty(name string, property *Schema) { + *s.Properties = append(*s.Properties, NewNamedSchema(name, property)) +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/operations.go b/vendor/github.com/googleapis/gnostic/jsonschema/operations.go new file mode 100644 index 0000000000..0ce2271e21 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/operations.go @@ -0,0 +1,394 @@ +// Copyright 2017 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 jsonschema + +import ( + "fmt" + "log" + "strings" +) + +// +// OPERATIONS +// The following methods perform operations on Schemas. +// + +// IsEmpty returns true if no members of the Schema are specified. +func (schema *Schema) IsEmpty() bool { + return (schema.Schema == nil) && + (schema.ID == nil) && + (schema.MultipleOf == nil) && + (schema.Maximum == nil) && + (schema.ExclusiveMaximum == nil) && + (schema.Minimum == nil) && + (schema.ExclusiveMinimum == nil) && + (schema.MaxLength == nil) && + (schema.MinLength == nil) && + (schema.Pattern == nil) && + (schema.AdditionalItems == nil) && + (schema.Items == nil) && + (schema.MaxItems == nil) && + (schema.MinItems == nil) && + (schema.UniqueItems == nil) && + (schema.MaxProperties == nil) && + (schema.MinProperties == nil) && + (schema.Required == nil) && + (schema.AdditionalProperties == nil) && + (schema.Properties == nil) && + (schema.PatternProperties == nil) && + (schema.Dependencies == nil) && + (schema.Enumeration == nil) && + (schema.Type == nil) && + (schema.AllOf == nil) && + (schema.AnyOf == nil) && + (schema.OneOf == nil) && + (schema.Not == nil) && + (schema.Definitions == nil) && + (schema.Title == nil) && + (schema.Description == nil) && + (schema.Default == nil) && + (schema.Format == nil) && + (schema.Ref == nil) +} + +// IsEqual returns true if two schemas are equal. +func (schema *Schema) IsEqual(schema2 *Schema) bool { + return schema.String() == schema2.String() +} + +// SchemaOperation represents a function that can be applied to a Schema. +type SchemaOperation func(schema *Schema, context string) + +// Applies a specified function to a Schema and all of the Schemas that it contains. +func (schema *Schema) applyToSchemas(operation SchemaOperation, context string) { + + if schema.AdditionalItems != nil { + s := schema.AdditionalItems.Schema + if s != nil { + s.applyToSchemas(operation, "AdditionalItems") + } + } + + if schema.Items != nil { + if schema.Items.SchemaArray != nil { + for _, s := range *(schema.Items.SchemaArray) { + s.applyToSchemas(operation, "Items.SchemaArray") + } + } else if schema.Items.Schema != nil { + schema.Items.Schema.applyToSchemas(operation, "Items.Schema") + } + } + + if schema.AdditionalProperties != nil { + s := schema.AdditionalProperties.Schema + if s != nil { + s.applyToSchemas(operation, "AdditionalProperties") + } + } + + if schema.Properties != nil { + for _, pair := range *(schema.Properties) { + s := pair.Value + s.applyToSchemas(operation, "Properties") + } + } + if schema.PatternProperties != nil { + for _, pair := range *(schema.PatternProperties) { + s := pair.Value + s.applyToSchemas(operation, "PatternProperties") + } + } + + if schema.Dependencies != nil { + for _, pair := range *(schema.Dependencies) { + schemaOrStringArray := pair.Value + s := schemaOrStringArray.Schema + if s != nil { + s.applyToSchemas(operation, "Dependencies") + } + } + } + + if schema.AllOf != nil { + for _, s := range *(schema.AllOf) { + s.applyToSchemas(operation, "AllOf") + } + } + if schema.AnyOf != nil { + for _, s := range *(schema.AnyOf) { + s.applyToSchemas(operation, "AnyOf") + } + } + if schema.OneOf != nil { + for _, s := range *(schema.OneOf) { + s.applyToSchemas(operation, "OneOf") + } + } + if schema.Not != nil { + schema.Not.applyToSchemas(operation, "Not") + } + + if schema.Definitions != nil { + for _, pair := range *(schema.Definitions) { + s := pair.Value + s.applyToSchemas(operation, "Definitions") + } + } + + operation(schema, context) +} + +// CopyProperties copies all non-nil properties from the source Schema to the schema Schema. +func (schema *Schema) CopyProperties(source *Schema) { + if source.Schema != nil { + schema.Schema = source.Schema + } + if source.ID != nil { + schema.ID = source.ID + } + if source.MultipleOf != nil { + schema.MultipleOf = source.MultipleOf + } + if source.Maximum != nil { + schema.Maximum = source.Maximum + } + if source.ExclusiveMaximum != nil { + schema.ExclusiveMaximum = source.ExclusiveMaximum + } + if source.Minimum != nil { + schema.Minimum = source.Minimum + } + if source.ExclusiveMinimum != nil { + schema.ExclusiveMinimum = source.ExclusiveMinimum + } + if source.MaxLength != nil { + schema.MaxLength = source.MaxLength + } + if source.MinLength != nil { + schema.MinLength = source.MinLength + } + if source.Pattern != nil { + schema.Pattern = source.Pattern + } + if source.AdditionalItems != nil { + schema.AdditionalItems = source.AdditionalItems + } + if source.Items != nil { + schema.Items = source.Items + } + if source.MaxItems != nil { + schema.MaxItems = source.MaxItems + } + if source.MinItems != nil { + schema.MinItems = source.MinItems + } + if source.UniqueItems != nil { + schema.UniqueItems = source.UniqueItems + } + if source.MaxProperties != nil { + schema.MaxProperties = source.MaxProperties + } + if source.MinProperties != nil { + schema.MinProperties = source.MinProperties + } + if source.Required != nil { + schema.Required = source.Required + } + if source.AdditionalProperties != nil { + schema.AdditionalProperties = source.AdditionalProperties + } + if source.Properties != nil { + schema.Properties = source.Properties + } + if source.PatternProperties != nil { + schema.PatternProperties = source.PatternProperties + } + if source.Dependencies != nil { + schema.Dependencies = source.Dependencies + } + if source.Enumeration != nil { + schema.Enumeration = source.Enumeration + } + if source.Type != nil { + schema.Type = source.Type + } + if source.AllOf != nil { + schema.AllOf = source.AllOf + } + if source.AnyOf != nil { + schema.AnyOf = source.AnyOf + } + if source.OneOf != nil { + schema.OneOf = source.OneOf + } + if source.Not != nil { + schema.Not = source.Not + } + if source.Definitions != nil { + schema.Definitions = source.Definitions + } + if source.Title != nil { + schema.Title = source.Title + } + if source.Description != nil { + schema.Description = source.Description + } + if source.Default != nil { + schema.Default = source.Default + } + if source.Format != nil { + schema.Format = source.Format + } + if source.Ref != nil { + schema.Ref = source.Ref + } +} + +// TypeIs returns true if the Type of a Schema includes the specified type +func (schema *Schema) TypeIs(typeName string) bool { + if schema.Type != nil { + // the schema Type is either a string or an array of strings + if schema.Type.String != nil { + return (*(schema.Type.String) == typeName) + } else if schema.Type.StringArray != nil { + for _, n := range *(schema.Type.StringArray) { + if n == typeName { + return true + } + } + } + } + return false +} + +// ResolveRefs resolves "$ref" elements in a Schema and its children. +// But if a reference refers to an object type, is inside a oneOf, or contains a oneOf, +// the reference is kept and we expect downstream tools to separately model these +// referenced schemas. +func (schema *Schema) ResolveRefs() { + rootSchema := schema + count := 1 + for count > 0 { + count = 0 + schema.applyToSchemas( + func(schema *Schema, context string) { + if schema.Ref != nil { + resolvedRef, err := rootSchema.resolveJSONPointer(*(schema.Ref)) + if err != nil { + log.Printf("%+v", err) + } else if resolvedRef.TypeIs("object") { + // don't substitute for objects, we'll model the referenced schema with a class + } else if context == "OneOf" { + // don't substitute for references inside oneOf declarations + } else if resolvedRef.OneOf != nil { + // don't substitute for references that contain oneOf declarations + } else if resolvedRef.AdditionalProperties != nil { + // don't substitute for references that look like objects + } else { + schema.Ref = nil + schema.CopyProperties(resolvedRef) + count++ + } + } + }, "") + } +} + +// resolveJSONPointer resolves JSON pointers. +// This current implementation is very crude and custom for OpenAPI 2.0 schemas. +// It panics for any pointer that it is unable to resolve. +func (schema *Schema) resolveJSONPointer(ref string) (result *Schema, err error) { + parts := strings.Split(ref, "#") + if len(parts) == 2 { + documentName := parts[0] + "#" + if documentName == "#" && schema.ID != nil { + documentName = *(schema.ID) + } + path := parts[1] + document := schemas[documentName] + pathParts := strings.Split(path, "/") + + // we currently do a very limited (hard-coded) resolution of certain paths and log errors for missed cases + if len(pathParts) == 1 { + return document, nil + } else if len(pathParts) == 3 { + switch pathParts[1] { + case "definitions": + dictionary := document.Definitions + for _, pair := range *dictionary { + if pair.Name == pathParts[2] { + result = pair.Value + } + } + case "properties": + dictionary := document.Properties + for _, pair := range *dictionary { + if pair.Name == pathParts[2] { + result = pair.Value + } + } + default: + break + } + } + } + if result == nil { + return nil, fmt.Errorf("unresolved pointer: %+v", ref) + } + return result, nil +} + +// ResolveAllOfs replaces "allOf" elements by merging their properties into the parent Schema. +func (schema *Schema) ResolveAllOfs() { + schema.applyToSchemas( + func(schema *Schema, context string) { + if schema.AllOf != nil { + for _, allOf := range *(schema.AllOf) { + schema.CopyProperties(allOf) + } + schema.AllOf = nil + } + }, "resolveAllOfs") +} + +// ResolveAnyOfs replaces all "anyOf" elements with "oneOf". +func (schema *Schema) ResolveAnyOfs() { + schema.applyToSchemas( + func(schema *Schema, context string) { + if schema.AnyOf != nil { + schema.OneOf = schema.AnyOf + schema.AnyOf = nil + } + }, "resolveAnyOfs") +} + +// return a pointer to a copy of a passed-in string +func stringptr(input string) (output *string) { + return &input +} + +// CopyOfficialSchemaProperty copies a named property from the official JSON Schema definition +func (schema *Schema) CopyOfficialSchemaProperty(name string) { + *schema.Properties = append(*schema.Properties, + NewNamedSchema(name, + &Schema{Ref: stringptr("http://json-schema.org/draft-04/schema#/properties/" + name)})) +} + +// CopyOfficialSchemaProperties copies named properties from the official JSON Schema definition +func (schema *Schema) CopyOfficialSchemaProperties(names []string) { + for _, name := range names { + schema.CopyOfficialSchemaProperty(name) + } +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/reader.go b/vendor/github.com/googleapis/gnostic/jsonschema/reader.go new file mode 100644 index 0000000000..275fdaa168 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/reader.go @@ -0,0 +1,409 @@ +// Copyright 2017 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 jsonschema + +import ( + "fmt" + "io/ioutil" + + "gopkg.in/yaml.v2" +) + +// This is a global map of all known Schemas. +// It is initialized when the first Schema is created and inserted. +var schemas map[string]*Schema + +// NewSchemaFromFile reads a schema from a file. +// Currently this assumes that schemas are stored in the source distribution of this project. +func NewSchemaFromFile(filename string) (schema *Schema, err error) { + file, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + var info yaml.MapSlice + err = yaml.Unmarshal(file, &info) + if err != nil { + return nil, err + } + return NewSchemaFromObject(info), nil +} + +// NewSchemaFromObject constructs a schema from a parsed JSON object. +// Due to the complexity of the schema representation, this is a +// custom reader and not the standard Go JSON reader (encoding/json). +func NewSchemaFromObject(jsonData interface{}) *Schema { + switch t := jsonData.(type) { + default: + fmt.Printf("schemaValue: unexpected type %T\n", t) + return nil + case yaml.MapSlice: + schema := &Schema{} + for _, mapItem := range t { + k := mapItem.Key.(string) + v := mapItem.Value + + switch k { + case "$schema": + schema.Schema = schema.stringValue(v) + case "id": + schema.ID = schema.stringValue(v) + + case "multipleOf": + schema.MultipleOf = schema.numberValue(v) + case "maximum": + schema.Maximum = schema.numberValue(v) + case "exclusiveMaximum": + schema.ExclusiveMaximum = schema.boolValue(v) + case "minimum": + schema.Minimum = schema.numberValue(v) + case "exclusiveMinimum": + schema.ExclusiveMinimum = schema.boolValue(v) + + case "maxLength": + schema.MaxLength = schema.intValue(v) + case "minLength": + schema.MinLength = schema.intValue(v) + case "pattern": + schema.Pattern = schema.stringValue(v) + + case "additionalItems": + schema.AdditionalItems = schema.schemaOrBooleanValue(v) + case "items": + schema.Items = schema.schemaOrSchemaArrayValue(v) + case "maxItems": + schema.MaxItems = schema.intValue(v) + case "minItems": + schema.MinItems = schema.intValue(v) + case "uniqueItems": + schema.UniqueItems = schema.boolValue(v) + + case "maxProperties": + schema.MaxProperties = schema.intValue(v) + case "minProperties": + schema.MinProperties = schema.intValue(v) + case "required": + schema.Required = schema.arrayOfStringsValue(v) + case "additionalProperties": + schema.AdditionalProperties = schema.schemaOrBooleanValue(v) + case "properties": + schema.Properties = schema.mapOfSchemasValue(v) + case "patternProperties": + schema.PatternProperties = schema.mapOfSchemasValue(v) + case "dependencies": + schema.Dependencies = schema.mapOfSchemasOrStringArraysValue(v) + + case "enum": + schema.Enumeration = schema.arrayOfEnumValuesValue(v) + + case "type": + schema.Type = schema.stringOrStringArrayValue(v) + case "allOf": + schema.AllOf = schema.arrayOfSchemasValue(v) + case "anyOf": + schema.AnyOf = schema.arrayOfSchemasValue(v) + case "oneOf": + schema.OneOf = schema.arrayOfSchemasValue(v) + case "not": + schema.Not = NewSchemaFromObject(v) + case "definitions": + schema.Definitions = schema.mapOfSchemasValue(v) + + case "title": + schema.Title = schema.stringValue(v) + case "description": + schema.Description = schema.stringValue(v) + + case "default": + schema.Default = &v + + case "format": + schema.Format = schema.stringValue(v) + case "$ref": + schema.Ref = schema.stringValue(v) + default: + fmt.Printf("UNSUPPORTED (%s)\n", k) + } + } + + // insert schema in global map + if schema.ID != nil { + if schemas == nil { + schemas = make(map[string]*Schema, 0) + } + schemas[*(schema.ID)] = schema + } + return schema + } + return nil +} + +// +// BUILDERS +// The following methods build elements of Schemas from interface{} values. +// Each returns nil if it is unable to build the desired element. +// + +// Gets the string value of an interface{} value if possible. +func (schema *Schema) stringValue(v interface{}) *string { + switch v := v.(type) { + default: + fmt.Printf("stringValue: unexpected type %T\n", v) + case string: + return &v + } + return nil +} + +// Gets the numeric value of an interface{} value if possible. +func (schema *Schema) numberValue(v interface{}) *SchemaNumber { + number := &SchemaNumber{} + switch v := v.(type) { + default: + fmt.Printf("numberValue: unexpected type %T\n", v) + case float64: + v2 := float64(v) + number.Float = &v2 + return number + case float32: + v2 := float64(v) + number.Float = &v2 + return number + case int: + v2 := int64(v) + number.Integer = &v2 + } + return nil +} + +// Gets the integer value of an interface{} value if possible. +func (schema *Schema) intValue(v interface{}) *int64 { + switch v := v.(type) { + default: + fmt.Printf("intValue: unexpected type %T\n", v) + case float64: + v2 := int64(v) + return &v2 + case int64: + return &v + case int: + v2 := int64(v) + return &v2 + } + return nil +} + +// Gets the bool value of an interface{} value if possible. +func (schema *Schema) boolValue(v interface{}) *bool { + switch v := v.(type) { + default: + fmt.Printf("boolValue: unexpected type %T\n", v) + case bool: + return &v + } + return nil +} + +// Gets a map of Schemas from an interface{} value if possible. +func (schema *Schema) mapOfSchemasValue(v interface{}) *[]*NamedSchema { + switch v := v.(type) { + default: + fmt.Printf("mapOfSchemasValue: unexpected type %T\n", v) + case yaml.MapSlice: + m := make([]*NamedSchema, 0) + for _, mapItem := range v { + k2 := mapItem.Key.(string) + v2 := mapItem.Value + pair := &NamedSchema{Name: k2, Value: NewSchemaFromObject(v2)} + m = append(m, pair) + } + return &m + } + return nil +} + +// Gets an array of Schemas from an interface{} value if possible. +func (schema *Schema) arrayOfSchemasValue(v interface{}) *[]*Schema { + switch v := v.(type) { + default: + fmt.Printf("arrayOfSchemasValue: unexpected type %T\n", v) + case []interface{}: + m := make([]*Schema, 0) + for _, v2 := range v { + switch v2 := v2.(type) { + default: + fmt.Printf("arrayOfSchemasValue: unexpected type %T\n", v2) + case yaml.MapSlice: + s := NewSchemaFromObject(v2) + m = append(m, s) + } + } + return &m + case yaml.MapSlice: + m := make([]*Schema, 0) + s := NewSchemaFromObject(v) + m = append(m, s) + return &m + } + return nil +} + +// Gets a Schema or an array of Schemas from an interface{} value if possible. +func (schema *Schema) schemaOrSchemaArrayValue(v interface{}) *SchemaOrSchemaArray { + switch v := v.(type) { + default: + fmt.Printf("schemaOrSchemaArrayValue: unexpected type %T\n", v) + case []interface{}: + m := make([]*Schema, 0) + for _, v2 := range v { + switch v2 := v2.(type) { + default: + fmt.Printf("schemaOrSchemaArrayValue: unexpected type %T\n", v2) + case map[string]interface{}: + s := NewSchemaFromObject(v2) + m = append(m, s) + } + } + return &SchemaOrSchemaArray{SchemaArray: &m} + case yaml.MapSlice: + s := NewSchemaFromObject(v) + return &SchemaOrSchemaArray{Schema: s} + } + return nil +} + +// Gets an array of strings from an interface{} value if possible. +func (schema *Schema) arrayOfStringsValue(v interface{}) *[]string { + switch v := v.(type) { + default: + fmt.Printf("arrayOfStringsValue: unexpected type %T\n", v) + case []string: + return &v + case string: + a := []string{v} + return &a + case []interface{}: + a := make([]string, 0) + for _, v2 := range v { + switch v2 := v2.(type) { + default: + fmt.Printf("arrayOfStringsValue: unexpected type %T\n", v2) + case string: + a = append(a, v2) + } + } + return &a + } + return nil +} + +// Gets a string or an array of strings from an interface{} value if possible. +func (schema *Schema) stringOrStringArrayValue(v interface{}) *StringOrStringArray { + switch v := v.(type) { + default: + fmt.Printf("arrayOfStringsValue: unexpected type %T\n", v) + case []string: + s := &StringOrStringArray{} + s.StringArray = &v + return s + case string: + s := &StringOrStringArray{} + s.String = &v + return s + case []interface{}: + a := make([]string, 0) + for _, v2 := range v { + switch v2 := v2.(type) { + default: + fmt.Printf("arrayOfStringsValue: unexpected type %T\n", v2) + case string: + a = append(a, v2) + } + } + s := &StringOrStringArray{} + s.StringArray = &a + return s + } + return nil +} + +// Gets an array of enum values from an interface{} value if possible. +func (schema *Schema) arrayOfEnumValuesValue(v interface{}) *[]SchemaEnumValue { + a := make([]SchemaEnumValue, 0) + switch v := v.(type) { + default: + fmt.Printf("arrayOfEnumValuesValue: unexpected type %T\n", v) + case []interface{}: + for _, v2 := range v { + switch v2 := v2.(type) { + default: + fmt.Printf("arrayOfEnumValuesValue: unexpected type %T\n", v2) + case string: + a = append(a, SchemaEnumValue{String: &v2}) + case bool: + a = append(a, SchemaEnumValue{Bool: &v2}) + } + } + } + return &a +} + +// Gets a map of schemas or string arrays from an interface{} value if possible. +func (schema *Schema) mapOfSchemasOrStringArraysValue(v interface{}) *[]*NamedSchemaOrStringArray { + m := make([]*NamedSchemaOrStringArray, 0) + switch v := v.(type) { + default: + fmt.Printf("mapOfSchemasOrStringArraysValue: unexpected type %T %+v\n", v, v) + case yaml.MapSlice: + for _, mapItem := range v { + k2 := mapItem.Key.(string) + v2 := mapItem.Value + switch v2 := v2.(type) { + default: + fmt.Printf("mapOfSchemasOrStringArraysValue: unexpected type %T %+v\n", v2, v2) + case []interface{}: + a := make([]string, 0) + for _, v3 := range v2 { + switch v3 := v3.(type) { + default: + fmt.Printf("mapOfSchemasOrStringArraysValue: unexpected type %T %+v\n", v3, v3) + case string: + a = append(a, v3) + } + } + s := &SchemaOrStringArray{} + s.StringArray = &a + pair := &NamedSchemaOrStringArray{Name: k2, Value: s} + m = append(m, pair) + } + } + } + return &m +} + +// Gets a schema or a boolean value from an interface{} value if possible. +func (schema *Schema) schemaOrBooleanValue(v interface{}) *SchemaOrBoolean { + schemaOrBoolean := &SchemaOrBoolean{} + switch v := v.(type) { + case bool: + schemaOrBoolean.Boolean = &v + case yaml.MapSlice: + schemaOrBoolean.Schema = NewSchemaFromObject(v) + default: + fmt.Printf("schemaOrBooleanValue: unexpected type %T\n", v) + case []map[string]interface{}: + + } + return schemaOrBoolean +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/schema.json b/vendor/github.com/googleapis/gnostic/jsonschema/schema.json new file mode 100644 index 0000000000..85eb502a68 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/schema.json @@ -0,0 +1,150 @@ +{ + "id": "http://json-schema.org/draft-04/schema#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Core schema meta-schema", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": { "$ref": "#" } + }, + "positiveInteger": { + "type": "integer", + "minimum": 0 + }, + "positiveIntegerDefault0": { + "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] + }, + "simpleTypes": { + "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] + }, + "stringArray": { + "type": "array", + "items": { "type": "string" }, + "minItems": 1, + "uniqueItems": true + } + }, + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "$schema": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": {}, + "multipleOf": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + }, + "maximum": { + "type": "number" + }, + "exclusiveMaximum": { + "type": "boolean", + "default": false + }, + "minimum": { + "type": "number" + }, + "exclusiveMinimum": { + "type": "boolean", + "default": false + }, + "maxLength": { "$ref": "#/definitions/positiveInteger" }, + "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "pattern": { + "type": "string", + "format": "regex" + }, + "additionalItems": { + "anyOf": [ + { "type": "boolean" }, + { "$ref": "#" } + ], + "default": {} + }, + "items": { + "anyOf": [ + { "$ref": "#" }, + { "$ref": "#/definitions/schemaArray" } + ], + "default": {} + }, + "maxItems": { "$ref": "#/definitions/positiveInteger" }, + "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "uniqueItems": { + "type": "boolean", + "default": false + }, + "maxProperties": { "$ref": "#/definitions/positiveInteger" }, + "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "required": { "$ref": "#/definitions/stringArray" }, + "additionalProperties": { + "anyOf": [ + { "type": "boolean" }, + { "$ref": "#" } + ], + "default": {} + }, + "definitions": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "properties": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "patternProperties": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { "$ref": "#" }, + { "$ref": "#/definitions/stringArray" } + ] + } + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true + }, + "type": { + "anyOf": [ + { "$ref": "#/definitions/simpleTypes" }, + { + "type": "array", + "items": { "$ref": "#/definitions/simpleTypes" }, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "allOf": { "$ref": "#/definitions/schemaArray" }, + "anyOf": { "$ref": "#/definitions/schemaArray" }, + "oneOf": { "$ref": "#/definitions/schemaArray" }, + "not": { "$ref": "#" } + }, + "dependencies": { + "exclusiveMaximum": [ "maximum" ], + "exclusiveMinimum": [ "minimum" ] + }, + "default": {} +} diff --git a/vendor/github.com/googleapis/gnostic/jsonschema/writer.go b/vendor/github.com/googleapis/gnostic/jsonschema/writer.go new file mode 100644 index 0000000000..c82f3064bc --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonschema/writer.go @@ -0,0 +1,334 @@ +// Copyright 2017 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 jsonschema + +import ( + "fmt" + "gopkg.in/yaml.v2" +) + +const indentation = " " + +func renderMap(info interface{}, indent string) (result string) { + result = "{\n" + innerIndent := indent + indentation + switch pairs := info.(type) { + case yaml.MapSlice: + for i, pair := range pairs { + // first print the key + result += fmt.Sprintf("%s\"%+v\": ", innerIndent, pair.Key) + // then the value + switch value := pair.Value.(type) { + case string: + result += "\"" + value + "\"" + case bool: + if value { + result += "true" + } else { + result += "false" + } + case []interface{}: + result += renderArray(value, innerIndent) + case yaml.MapSlice: + result += renderMap(value, innerIndent) + case int: + result += fmt.Sprintf("%d", value) + case int64: + result += fmt.Sprintf("%d", value) + case []string: + result += renderStringArray(value, innerIndent) + default: + result += fmt.Sprintf("???MapItem(%+v, %T)", value, value) + } + if i < len(pairs)-1 { + result += "," + } + result += "\n" + } + default: + // t is some other type that we didn't name. + } + + result += indent + "}" + return result +} + +func renderArray(array []interface{}, indent string) (result string) { + result = "[\n" + innerIndent := indent + indentation + for i, item := range array { + switch item := item.(type) { + case string: + result += innerIndent + "\"" + item + "\"" + case bool: + if item { + result += innerIndent + "true" + } else { + result += innerIndent + "false" + } + case yaml.MapSlice: + result += innerIndent + renderMap(item, innerIndent) + "" + default: + result += innerIndent + fmt.Sprintf("???ArrayItem(%+v)", item) + } + if i < len(array)-1 { + result += "," + } + result += "\n" + } + result += indent + "]" + return result +} + +func renderStringArray(array []string, indent string) (result string) { + result = "[\n" + innerIndent := indent + indentation + for i, item := range array { + result += innerIndent + "\"" + item + "\"" + if i < len(array)-1 { + result += "," + } + result += "\n" + } + result += indent + "]" + return result +} + +func render(info yaml.MapSlice) string { + return renderMap(info, "") + "\n" +} + +func (object *SchemaNumber) jsonValue() interface{} { + if object.Integer != nil { + return object.Integer + } else if object.Float != nil { + return object.Float + } else { + return nil + } +} + +func (object *SchemaOrBoolean) jsonValue() interface{} { + if object.Schema != nil { + return object.Schema.jsonValue() + } else if object.Boolean != nil { + return *object.Boolean + } else { + return nil + } +} + +func (object *StringOrStringArray) jsonValue() interface{} { + if object.String != nil { + return *object.String + } else if object.StringArray != nil { + array := make([]interface{}, 0) + for _, item := range *(object.StringArray) { + array = append(array, item) + } + return array + } else { + return nil + } +} + +func (object *SchemaOrStringArray) jsonValue() interface{} { + if object.Schema != nil { + return object.Schema.jsonValue() + } else if object.StringArray != nil { + array := make([]interface{}, 0) + for _, item := range *(object.StringArray) { + array = append(array, item) + } + return array + } else { + return nil + } +} + +func (object *SchemaOrSchemaArray) jsonValue() interface{} { + if object.Schema != nil { + return object.Schema.jsonValue() + } else if object.SchemaArray != nil { + array := make([]interface{}, 0) + for _, item := range *(object.SchemaArray) { + array = append(array, item.jsonValue()) + } + return array + } else { + return nil + } +} + +func (object *SchemaEnumValue) jsonValue() interface{} { + if object.String != nil { + return *object.String + } else if object.Bool != nil { + return *object.Bool + } else { + return nil + } +} + +func namedSchemaArrayValue(array *[]*NamedSchema) interface{} { + m2 := yaml.MapSlice{} + for _, pair := range *(array) { + var item2 yaml.MapItem + item2.Key = pair.Name + item2.Value = pair.Value.jsonValue() + m2 = append(m2, item2) + } + return m2 +} + +func namedSchemaOrStringArrayValue(array *[]*NamedSchemaOrStringArray) interface{} { + m2 := yaml.MapSlice{} + for _, pair := range *(array) { + var item2 yaml.MapItem + item2.Key = pair.Name + item2.Value = pair.Value.jsonValue() + m2 = append(m2, item2) + } + return m2 +} + +func schemaEnumArrayValue(array *[]SchemaEnumValue) []interface{} { + a := make([]interface{}, 0) + for _, item := range *array { + a = append(a, item.jsonValue()) + } + return a +} + +func schemaArrayValue(array *[]*Schema) []interface{} { + a := make([]interface{}, 0) + for _, item := range *array { + a = append(a, item.jsonValue()) + } + return a +} + +func (schema *Schema) jsonValue() yaml.MapSlice { + m := yaml.MapSlice{} + if schema.Title != nil { + m = append(m, yaml.MapItem{"title", *schema.Title}) + } + if schema.ID != nil { + m = append(m, yaml.MapItem{"id", *schema.ID}) + } + if schema.Schema != nil { + m = append(m, yaml.MapItem{"$schema", *schema.Schema}) + } + if schema.Type != nil { + m = append(m, yaml.MapItem{"type", schema.Type.jsonValue()}) + } + if schema.Items != nil { + m = append(m, yaml.MapItem{"items", schema.Items.jsonValue()}) + } + if schema.Description != nil { + m = append(m, yaml.MapItem{"description", *schema.Description}) + } + if schema.Required != nil { + m = append(m, yaml.MapItem{"required", *schema.Required}) + } + if schema.AdditionalProperties != nil { + m = append(m, yaml.MapItem{"additionalProperties", schema.AdditionalProperties.jsonValue()}) + } + if schema.PatternProperties != nil { + m = append(m, yaml.MapItem{"patternProperties", namedSchemaArrayValue(schema.PatternProperties)}) + } + if schema.Properties != nil { + m = append(m, yaml.MapItem{"properties", namedSchemaArrayValue(schema.Properties)}) + } + if schema.Dependencies != nil { + m = append(m, yaml.MapItem{"dependencies", namedSchemaOrStringArrayValue(schema.Dependencies)}) + } + if schema.Ref != nil { + m = append(m, yaml.MapItem{"$ref", *schema.Ref}) + } + if schema.MultipleOf != nil { + m = append(m, yaml.MapItem{"multipleOf", schema.MultipleOf.jsonValue()}) + } + if schema.Maximum != nil { + m = append(m, yaml.MapItem{"maximum", schema.Maximum.jsonValue()}) + } + if schema.ExclusiveMaximum != nil { + m = append(m, yaml.MapItem{"exclusiveMaximum", *schema.ExclusiveMaximum}) + } + if schema.Minimum != nil { + m = append(m, yaml.MapItem{"minimum", schema.Minimum.jsonValue()}) + } + if schema.ExclusiveMinimum != nil { + m = append(m, yaml.MapItem{"exclusiveMinimum", *schema.ExclusiveMinimum}) + } + if schema.MaxLength != nil { + m = append(m, yaml.MapItem{"maxLength", *schema.MaxLength}) + } + if schema.MinLength != nil { + m = append(m, yaml.MapItem{"minLength", *schema.MinLength}) + } + if schema.Pattern != nil { + m = append(m, yaml.MapItem{"pattern", *schema.Pattern}) + } + if schema.AdditionalItems != nil { + m = append(m, yaml.MapItem{"additionalItems", schema.AdditionalItems.jsonValue()}) + } + if schema.MaxItems != nil { + m = append(m, yaml.MapItem{"maxItems", *schema.MaxItems}) + } + if schema.MinItems != nil { + m = append(m, yaml.MapItem{"minItems", *schema.MinItems}) + } + if schema.UniqueItems != nil { + m = append(m, yaml.MapItem{"uniqueItems", *schema.UniqueItems}) + } + if schema.MaxProperties != nil { + m = append(m, yaml.MapItem{"maxProperties", *schema.MaxProperties}) + } + if schema.MinProperties != nil { + m = append(m, yaml.MapItem{"minProperties", *schema.MinProperties}) + } + if schema.Enumeration != nil { + m = append(m, yaml.MapItem{"enum", schemaEnumArrayValue(schema.Enumeration)}) + } + if schema.AllOf != nil { + m = append(m, yaml.MapItem{"allOf", schemaArrayValue(schema.AllOf)}) + } + if schema.AnyOf != nil { + m = append(m, yaml.MapItem{"anyOf", schemaArrayValue(schema.AnyOf)}) + } + if schema.OneOf != nil { + m = append(m, yaml.MapItem{"oneOf", schemaArrayValue(schema.OneOf)}) + } + if schema.Not != nil { + m = append(m, yaml.MapItem{"not", schema.Not.jsonValue()}) + } + if schema.Definitions != nil { + m = append(m, yaml.MapItem{"definitions", namedSchemaArrayValue(schema.Definitions)}) + } + if schema.Default != nil { + m = append(m, yaml.MapItem{"default", *schema.Default}) + } + if schema.Format != nil { + m = append(m, yaml.MapItem{"format", *schema.Format}) + } + return m +} + +// JSONString returns a json representation of a schema. +func (schema *Schema) JSONString() string { + info := schema.jsonValue() + return render(info) +} diff --git a/vendor/github.com/googleapis/gnostic/jsonwriter/README.md b/vendor/github.com/googleapis/gnostic/jsonwriter/README.md new file mode 100644 index 0000000000..04700dc82a --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonwriter/README.md @@ -0,0 +1,3 @@ +# jsonwriter + +This directory contains code for writing yaml.MapSlice structures as JSON files. diff --git a/vendor/github.com/googleapis/gnostic/jsonwriter/writer.go b/vendor/github.com/googleapis/gnostic/jsonwriter/writer.go new file mode 100644 index 0000000000..c070cd6867 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/jsonwriter/writer.go @@ -0,0 +1,168 @@ +// Copyright 2017 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 jsonwriter + +import ( + "bytes" + "errors" + "fmt" + "strings" + + "gopkg.in/yaml.v2" +) + +const indentation = " " + +// basic escaping, will need to be improved or replaced +func escape(s string) string { + s = strings.Replace(s, "\n", "\\n", -1) + s = strings.Replace(s, "\"", "\\\"", -1) + return s +} + +type writer struct { + b bytes.Buffer +} + +func (w *writer) bytes() []byte { + return w.b.Bytes() +} + +func (w *writer) writeString(s string) { + w.b.Write([]byte(s)) +} + +func (w *writer) writeMap(info interface{}, indent string) { + w.writeString("{\n") + innerIndent := indent + indentation + switch pairs := info.(type) { + case yaml.MapSlice: + for i, pair := range pairs { + // first print the key + w.writeString(fmt.Sprintf("%s\"%+v\": ", innerIndent, pair.Key)) + // then the value + switch value := pair.Value.(type) { + case string: + w.writeString("\"") + w.writeString(escape(value)) + w.writeString("\"") + case bool: + if value { + w.writeString("true") + } else { + w.writeString("false") + } + case []interface{}: + w.writeArray(value, innerIndent) + case yaml.MapSlice: + w.writeMap(value, innerIndent) + case int: + w.writeString(fmt.Sprintf("%d", value)) + case int64: + w.writeString(fmt.Sprintf("%d", value)) + case []string: + w.writeStringArray(value, innerIndent) + case float64: + w.writeString(fmt.Sprintf("%f", value)) + case []yaml.MapSlice: + w.writeMapSliceArray(value, innerIndent) + default: + w.writeString(fmt.Sprintf("???MapItem(%+v, %T)", value, value)) + } + if i < len(pairs)-1 { + w.writeString(",") + } + w.writeString("\n") + } + default: + // t is some other type that we didn't name. + } + w.writeString(indent) + w.writeString("}") +} + +func (w *writer) writeArray(array []interface{}, indent string) { + w.writeString("[\n") + innerIndent := indent + indentation + for i, item := range array { + w.writeString(innerIndent) + switch item := item.(type) { + case string: + w.writeString("\"") + w.writeString(item) + w.writeString("\"") + case bool: + if item { + w.writeString("true") + } else { + w.writeString("false") + } + case yaml.MapSlice: + w.writeMap(item, innerIndent) + default: + w.writeString(fmt.Sprintf("???ArrayItem(%+v)", item)) + } + if i < len(array)-1 { + w.writeString(",") + } + w.writeString("\n") + } + w.writeString(indent) + w.writeString("]") +} + +func (w *writer) writeStringArray(array []string, indent string) { + w.writeString("[\n") + innerIndent := indent + indentation + for i, item := range array { + w.writeString(innerIndent) + w.writeString("\"") + w.writeString(escape(item)) + w.writeString("\"") + if i < len(array)-1 { + w.writeString(",") + } + w.writeString("\n") + } + w.writeString(indent) + w.writeString("]") +} + +func (w *writer) writeMapSliceArray(array []yaml.MapSlice, indent string) { + w.writeString("[\n") + innerIndent := indent + indentation + for i, item := range array { + w.writeString(innerIndent) + w.writeMap(item, innerIndent) + if i < len(array)-1 { + w.writeString(",") + } + w.writeString("\n") + } + w.writeString(indent) + w.writeString("]") +} + +// Marshal writes a yaml.MapSlice as JSON +func Marshal(in interface{}) (out []byte, err error) { + var w writer + m, ok := in.(yaml.MapSlice) + if !ok { + return nil, errors.New("invalid type passed to Marshal") + } + w.writeMap(m, "") + w.writeString("\n") + return w.bytes(), err +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/README.md b/vendor/github.com/googleapis/gnostic/plugins/README.md new file mode 100644 index 0000000000..68cbc942bd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/README.md @@ -0,0 +1,7 @@ +# Plugins + +This directory contains support code for building Gnostic plugins and associated examples. + +Plugins are used to process API descriptions and can perform tasks like documentation and +code generation. Plugins can be written in any language that is supported by the Protocol +Buffer tools. diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/README.md new file mode 100644 index 0000000000..f4567fe390 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/README.md @@ -0,0 +1,23 @@ +# gnostic-analyze + +This directory contains a `gnostic` plugin that analyzes an OpenAPI description for factors +that might influence code generation and other API automation. + +The plugin can be invoked like this: + + gnostic bookstore.json --analyze_out=. + +This will write analysis results to a file in the current directory. +Results are written to a file named `summary.json`. + +The plugin can be applied to a directory of descriptions using a command +like the following: + + find APIs -name "swagger.yaml" -exec gnostic --analyze_out=analysis {} \; + +This finds all `swagger.yaml` files in a directory named `APIs` and its subdirectories +and writes corresponding `summary.json` files into a directory named `analysis`. + +Results of multiple analysis runs can be gathered together and summarized +using the `summarize` program, which is in the `summarize` subdirectory. +Just run `summarize` in the same location as the `find` command shown above. diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/main.go new file mode 100644 index 0000000000..03bef713fb --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/main.go @@ -0,0 +1,101 @@ +// Copyright 2017 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. + +// gnostic_analyze is a tool for analyzing OpenAPI descriptions. +// +// It scans an API description and evaluates properties +// that influence the ease and quality of code generation. +// - The number of HTTP operations of each method (GET, POST, etc). +// - The number of HTTP operations with no OperationId value. +// - The parameter types used and their frequencies. +// - The response types used and their frequencies. +// - The types used in definition objects and arrays and their frequencies. +// Results are returned in a JSON structure. +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path" + "strings" + + "github.com/golang/protobuf/proto" + "github.com/googleapis/gnostic/plugins/gnostic-analyze/statistics" + + openapi "github.com/googleapis/gnostic/OpenAPIv2" + plugins "github.com/googleapis/gnostic/plugins" +) + +// Record an error, then serialize and return a response. +func sendAndExitIfError(err error, response *plugins.Response) { + if err != nil { + response.Errors = append(response.Errors, err.Error()) + sendAndExit(response) + } +} + +// Serialize and return a response. +func sendAndExit(response *plugins.Response) { + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) + os.Exit(0) +} + +func main() { + // Initialize the response. + response := &plugins.Response{} + + // Read the request. + data, err := ioutil.ReadAll(os.Stdin) + sendAndExitIfError(err, response) + if len(data) == 0 { + sendAndExitIfError(fmt.Errorf("no input data"), response) + } + + // Unmarshal the request. + request := &plugins.Request{} + err = proto.Unmarshal(data, request) + sendAndExitIfError(err, response) + + // Verify that the passed-in description is supported. + wrapper := request.Wrapper + if wrapper.Version != "v2" { + err = fmt.Errorf("%s requires an OpenAPI v2 description.", + os.Args[0]) + sendAndExitIfError(err, response) + } + + // Unmarshal the description. + document := &openapi.Document{} + err = proto.Unmarshal(wrapper.Value, document) + sendAndExitIfError(err, response) + + // Analyze the API document. + stats := statistics.NewDocumentStatistics(wrapper.Name, document) + + // Return the analysis results with an appropriate filename. + // Results are in files named "summary.json" in the same relative + // locations as the description source files. + file := &plugins.File{} + file.Name = strings.Replace(stats.Name, path.Base(stats.Name), "summary.json", -1) + file.Data, err = json.MarshalIndent(stats, "", " ") + file.Data = append(file.Data, []byte("\n")...) + sendAndExitIfError(err, response) + response.Files = append(response.Files, file) + + // Send the final results. Success! + sendAndExit(response) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/statistics/stats.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/statistics/stats.go new file mode 100644 index 0000000000..e6d095790b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/statistics/stats.go @@ -0,0 +1,331 @@ +// Copyright 2017 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 statistics + +import ( + "fmt" + "strings" + + openapi "github.com/googleapis/gnostic/OpenAPIv2" +) + +// DocumentStatistics contains information collected about an API description. +type DocumentStatistics struct { + Name string `json:"name"` + Title string `json:"title"` + Operations map[string]int `json:"operations"` + DefinitionCount int `json:"definitions"` + ParameterTypes map[string]int `json:"parameterTypes"` + ResultTypes map[string]int `json:"resultTypes"` + DefinitionFieldTypes map[string]int `json:"definitionFieldTypes"` + DefinitionArrayTypes map[string]int `json:"definitionArrayTypes"` + DefinitionPrimitiveTypes map[string]int `json:"definitionPrimitiveTypes"` + AnonymousOperations []string `json:"anonymousOperations"` + AnonymousObjects []string `json:"anonymousObjects"` +} + +// NewDocumentStatistics builds a new DocumentStatistics object. +func NewDocumentStatistics(source string, document *openapi.Document) *DocumentStatistics { + s := &DocumentStatistics{} + s.Operations = make(map[string]int, 0) + s.ParameterTypes = make(map[string]int, 0) + s.ResultTypes = make(map[string]int, 0) + s.DefinitionFieldTypes = make(map[string]int, 0) + s.DefinitionArrayTypes = make(map[string]int, 0) + s.DefinitionPrimitiveTypes = make(map[string]int, 0) + s.AnonymousOperations = make([]string, 0) + s.AnonymousObjects = make([]string, 0) + s.analyzeDocument(source, document) + return s +} + +func (s *DocumentStatistics) addOperation(name string) { + s.Operations[name] = s.Operations[name] + 1 +} + +func (s *DocumentStatistics) addParameterType(path string, name string) { + if strings.Contains(name, "object") { + s.AnonymousObjects = append(s.AnonymousObjects, path) + } + s.ParameterTypes[name] = s.ParameterTypes[name] + 1 +} + +func (s *DocumentStatistics) addResultType(path string, name string) { + if strings.Contains(name, "object") { + s.AnonymousObjects = append(s.AnonymousObjects, path) + } + s.ResultTypes[name] = s.ResultTypes[name] + 1 +} + +func (s *DocumentStatistics) addDefinitionFieldType(path string, name string) { + if strings.Contains(name, "object") { + s.AnonymousObjects = append(s.AnonymousObjects, path) + } + s.DefinitionFieldTypes[name] = s.DefinitionFieldTypes[name] + 1 +} + +func (s *DocumentStatistics) addDefinitionArrayType(path string, name string) { + if strings.Contains(name, "object") { + s.AnonymousObjects = append(s.AnonymousObjects, path) + } + s.DefinitionArrayTypes[name] = s.DefinitionArrayTypes[name] + 1 +} + +func (s *DocumentStatistics) addDefinitionPrimitiveType(path string, name string) { + s.DefinitionPrimitiveTypes[name] = s.DefinitionPrimitiveTypes[name] + 1 +} + +func typeForPrimitivesItems(p *openapi.PrimitivesItems) string { + switch { + case p == nil: + return "object" + case p.Type != "": + return p.Type + case p.Items != nil && p.Items.Type != "": + return p.Items.Type + default: + return "object" + } +} + +func (s *DocumentStatistics) analyzeOperation(method string, path string, operation *openapi.Operation) { + s.addOperation(method) + s.addOperation("total") + if operation.OperationId == "" { + s.addOperation("anonymous") + s.AnonymousOperations = append(s.AnonymousOperations, path) + } + for _, parameter := range operation.Parameters { + p := parameter.GetParameter() + if p != nil { + b := p.GetBodyParameter() + if b != nil { + typeName := typeForSchema(b.Schema) + s.addParameterType(path+"/"+b.Name, typeName) + } + n := p.GetNonBodyParameter() + if n != nil { + hp := n.GetHeaderParameterSubSchema() + if hp != nil { + t := hp.Type + if t == "array" { + t += "-of-" + typeForPrimitivesItems(hp.Items) + } + s.addParameterType(path+"/"+hp.Name, t) + } + fp := n.GetFormDataParameterSubSchema() + if fp != nil { + t := fp.Type + if t == "array" { + t += "-of-" + typeForPrimitivesItems(fp.Items) + } + s.addParameterType(path+"/"+fp.Name, t) + } + qp := n.GetQueryParameterSubSchema() + if qp != nil { + t := qp.Type + if t == "array" { + t += "-of-" + typeForPrimitivesItems(qp.Items) + } + s.addParameterType(path+"/"+qp.Name, t) + } + pp := n.GetPathParameterSubSchema() + if pp != nil { + t := pp.Type + if t == "array" { + if t == "array" { + t += "-of-" + typeForPrimitivesItems(pp.Items) + } + } + s.addParameterType(path+"/"+pp.Name, t) + } + } + } + r := parameter.GetJsonReference() + if r != nil { + s.addParameterType(path+"/", "reference") + } + } + + for _, pair := range operation.Responses.ResponseCode { + value := pair.Value + response := value.GetResponse() + if response != nil { + responseSchema := response.Schema + responseSchemaSchema := responseSchema.GetSchema() + if responseSchemaSchema != nil { + s.addResultType(path+"/responses/"+pair.Name, typeForSchema(responseSchemaSchema)) + } + responseFileSchema := responseSchema.GetFileSchema() + if responseFileSchema != nil { + s.addResultType(path+"/responses/"+pair.Name, typeForFileSchema(responseFileSchema)) + } + } + ref := value.GetJsonReference() + if ref != nil { + } + } + +} + +// Analyze a definition in an OpenAPI description. +// Collect information about the definition type and any subsidiary types, +// such as the types of object fields or array elements. +func (s *DocumentStatistics) analyzeDefinition(path string, definition *openapi.Schema) { + s.DefinitionCount++ + typeName := typeNameForSchema(definition) + switch typeName { + case "object": + if definition.Properties != nil { + for _, pair := range definition.Properties.AdditionalProperties { + propertySchema := pair.Value + propertyType := typeForSchema(propertySchema) + s.addDefinitionFieldType(path+"/"+pair.Name, propertyType) + } + } + case "array": + s.addDefinitionArrayType(path+"/", typeForSchema(definition)) + default: // string, boolean, integer, number, null... + s.addDefinitionPrimitiveType(path+"/", typeName) + } +} + +// Analyze an OpenAPI description. +// Collect information about types used in the API. +// This should be called exactly once per DocumentStatistics object. +func (s *DocumentStatistics) analyzeDocument(source string, document *openapi.Document) { + s.Name = source + + s.Title = document.Info.Title + for _, pair := range document.Paths.Path { + path := pair.Value + if path.Get != nil { + s.analyzeOperation("get", "paths"+pair.Name+"/get", path.Get) + } + if path.Post != nil { + s.analyzeOperation("post", "paths"+pair.Name+"/post", path.Post) + } + if path.Put != nil { + s.analyzeOperation("put", "paths"+pair.Name+"/put", path.Put) + } + if path.Delete != nil { + s.analyzeOperation("delete", "paths"+pair.Name+"/delete", path.Delete) + } + } + if document.Definitions != nil { + for _, pair := range document.Definitions.AdditionalProperties { + definition := pair.Value + s.analyzeDefinition("definitions/"+pair.Name, definition) + } + } +} + +// helpers + +func typeNameForSchema(schema *openapi.Schema) string { + typeName := "object" // default type + if schema.Type != nil && len(schema.Type.Value) > 0 { + typeName = "" + for i, name := range schema.Type.Value { + if i > 0 { + typeName += "|" + } + typeName += name + } + } + return typeName +} + +// Return a type name to use for a schema. +func typeForSchema(schema *openapi.Schema) string { + if schema.XRef != "" { + return "reference" + } + if len(schema.Enum) > 0 { + enumType := typeNameForSchema(schema) + return "enum-of-" + enumType + } + typeName := typeNameForSchema(schema) + if typeName == "array" { + if schema.Items != nil { + // items contains an array of schemas + itemType := "" + for i, itemSchema := range schema.Items.Schema { + if i > 0 { + itemType += "|" + } + itemType += typeForSchema(itemSchema) + } + return "array-of-" + itemType + } else if schema.XRef != "" { + return "array-of-reference" + } else { + // we need to do more work to understand this type + return fmt.Sprintf("array-of-[%+v]", schema) + } + } else if typeName == "object" { + // this object might be representable with a map + // but not if it has properties + if (schema.Properties != nil) && (len(schema.Properties.AdditionalProperties) > 0) { + return typeName + } + if schema.AdditionalProperties != nil { + if schema.AdditionalProperties.GetSchema() != nil { + additionalPropertiesSchemaType := typeForSchema(schema.AdditionalProperties.GetSchema()) + return "map-of-" + additionalPropertiesSchemaType + } + if schema.AdditionalProperties.GetBoolean() == false { + // no additional properties are allowed, so we're not sure what to do if we get here... + return typeName + } + } + if schema.Items != nil { + itemType := "" + for i, itemSchema := range schema.Items.Schema { + if i > 0 { + itemType += "|" + } + itemType += typeForSchema(itemSchema) + } + return "map-of-" + itemType + } + return "map-of-object" + } else { + return typeName + } +} + +func typeForFileSchema(schema *openapi.FileSchema) string { + if schema.Type != "" { + value := schema.Type + switch value { + case "boolean": + return "fileschema-" + value + case "string": + return "fileschema-" + value + case "file": + return "fileschema-" + value + case "number": + return "fileschema-" + value + case "integer": + return "fileschema-" + value + case "object": + return "fileschema-" + value + case "null": + return "fileschema-" + value + } + } + return fmt.Sprintf("FILE SCHEMA %+v", schema) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/summarize/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/summarize/main.go new file mode 100644 index 0000000000..69adad9ed5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-analyze/summarize/main.go @@ -0,0 +1,156 @@ +// Copyright 2017 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. + +// summarize is a tool for summarizing the results of gnostic_analyze runs. +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "sort" + + "github.com/googleapis/gnostic/plugins/gnostic-analyze/statistics" +) + +// Results are collected in this global slice. +var stats []statistics.DocumentStatistics + +// walker is called for each summary file found. +func walker(p string, info os.FileInfo, err error) error { + basename := path.Base(p) + if basename != "summary.json" { + return nil + } + data, err := ioutil.ReadFile(p) + if err != nil { + return err + } + var s statistics.DocumentStatistics + err = json.Unmarshal(data, &s) + if err != nil { + return err + } + stats = append(stats, s) + return nil +} + +func printFrequencies(m map[string]int) { + for _, pair := range rankByCount(m) { + fmt.Printf("%6d %s\n", pair.Value, pair.Key) + } +} + +func rankByCount(frequencies map[string]int) pairList { + pl := make(pairList, len(frequencies)) + i := 0 + for k, v := range frequencies { + pl[i] = pair{k, v} + i++ + } + sort.Sort(sort.Reverse(pl)) + return pl +} + +type pair struct { + Key string + Value int +} + +type pairList []pair + +func (p pairList) Len() int { return len(p) } +func (p pairList) Less(i, j int) bool { return p[i].Value < p[j].Value } +func (p pairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func main() { + // Collect all statistics in the current directory and its subdirectories. + stats = make([]statistics.DocumentStatistics, 0) + filepath.Walk(".", walker) + + // Compute some interesting properties. + apisWithAnonymousOperations := 0 + apisWithAnonymousObjects := 0 + apisWithAnonymousAnything := 0 + opFrequencies := make(map[string]int, 0) + parameterTypeFrequencies := make(map[string]int, 0) + resultTypeFrequencies := make(map[string]int, 0) + definitionFieldTypeFrequencies := make(map[string]int, 0) + definitionArrayTypeFrequencies := make(map[string]int, 0) + definitionPrimitiveTypeFrequencies := make(map[string]int, 0) + + for _, api := range stats { + if api.Operations["anonymous"] != 0 { + apisWithAnonymousOperations++ + } + if len(api.AnonymousObjects) > 0 { + apisWithAnonymousObjects++ + } + if len(api.AnonymousOperations) > 0 { + apisWithAnonymousAnything++ + if len(api.AnonymousObjects) > 0 { + fmt.Printf("%s has anonymous operations and objects\n", api.Name) + } else { + fmt.Printf("%s has anonymous operations\n", api.Name) + } + } else { + if len(api.AnonymousObjects) > 0 { + apisWithAnonymousAnything++ + fmt.Printf("%s has anonymous objects\n", api.Name) + } else { + fmt.Printf("%s has no anonymous operations or objects\n", api.Name) + } + } + for k, v := range api.Operations { + opFrequencies[k] += v + } + for k, v := range api.ParameterTypes { + parameterTypeFrequencies[k] += v + } + for k, v := range api.ResultTypes { + resultTypeFrequencies[k] += v + } + for k, v := range api.DefinitionFieldTypes { + definitionFieldTypeFrequencies[k] += v + } + for k, v := range api.DefinitionArrayTypes { + definitionArrayTypeFrequencies[k] += v + } + for k, v := range api.DefinitionPrimitiveTypes { + definitionPrimitiveTypeFrequencies[k] += v + } + } + + // Report the results. + fmt.Printf("\n") + fmt.Printf("Collected information on %d APIs.\n\n", len(stats)) + fmt.Printf("APIs with anonymous operations: %d\n", apisWithAnonymousOperations) + fmt.Printf("APIs with anonymous objects: %d\n", apisWithAnonymousObjects) + fmt.Printf("APIs with anonymous anything: %d\n", apisWithAnonymousAnything) + fmt.Printf("\nOperation frequencies:\n") + printFrequencies(opFrequencies) + fmt.Printf("\nParameter type frequencies:\n") + printFrequencies(parameterTypeFrequencies) + fmt.Printf("\nResult type frequencies:\n") + printFrequencies(resultTypeFrequencies) + fmt.Printf("\nDefinition object field type frequencies:\n") + printFrequencies(definitionFieldTypeFrequencies) + fmt.Printf("\nDefinition array type frequencies:\n") + printFrequencies(definitionArrayTypeFrequencies) + fmt.Printf("\nDefinition primitive type frequencies:\n") + printFrequencies(definitionPrimitiveTypeFrequencies) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile new file mode 100644 index 0000000000..d0b56a5ce5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile @@ -0,0 +1,10 @@ + +build: + go install github.com/googleapis/gnostic + go install github.com/googleapis/gnostic/plugins/gnostic-go-generator/encode-templates + go generate github.com/googleapis/gnostic/plugins/gnostic-go-generator + go install github.com/googleapis/gnostic/plugins/gnostic-go-generator + rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server + ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client + ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md new file mode 100644 index 0000000000..4dcd25aaee --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md @@ -0,0 +1,17 @@ +# OpenAPI Go Generator Plugin + +This directory contains an `openapic` plugin that can be used to generate a Go client library and scaffolding for a Go server for an API with an OpenAPI description. + +The plugin can be invoked like this: + + openapic bookstore.json --go_generator_out=package=bookstore:bookstore + +Where `bookstore` is the name of a directory where the generated code will be written and `package=bookstore` indicates that "bookstore" should also be the package name used for generated code. + +By default, both client and server code will be generated. If the `openapi_go_generator` binary is also linked from the names `openapi_go_client` and `openapi_go_server`, then only client or only server code can be generated as follows: + + openapic bookstore.json --go_client_out=package=bookstore:bookstore + + openapic bookstore.json --go_server_out=package=bookstore:bookstore + +For example usage, see the [examples/bookstore](examples/bookstore) directory. \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/encode-templates/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/encode-templates/main.go new file mode 100644 index 0000000000..dc13a8d0b0 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/encode-templates/main.go @@ -0,0 +1,87 @@ +// Copyright 2017 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. + +// encode-templates is a support tool for building text templates +// directly into an application binary. +// +// It reads files from a "templates" directory, and generates +// a Go source file containing base64-encoded representations of those +// files. This allows these files to be directly compiled into the +// executable. +package main + +import ( + "bytes" + "encoding/base64" + "io/ioutil" + "path/filepath" + "strings" + "text/template" +) + +const TEMPLATES_GO = `// Copyright 2017 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 main + +func templates() map[string]string { + return map[string]string{ {{range .TemplateStrings}} + "{{.Name}}": "{{.Encoding}}",{{end}} + } +}` + +type NamedTemplateString struct { + Name string // the name of the file to be generated by the template + Encoding string // base64-encoded string +} + +func main() { + fileinfos, err := ioutil.ReadDir("templates") + if err != nil { + panic(err) + } + templateStrings := make([]*NamedTemplateString, 0) + for _, fileinfo := range fileinfos { + name := fileinfo.Name() + if filepath.Ext(name) == ".tmpl" { + data, _ := ioutil.ReadFile("templates/" + name) + encoding := base64.StdEncoding.EncodeToString(data) + templateStrings = append(templateStrings, + &NamedTemplateString{ + Name: strings.TrimSuffix(name, ".tmpl"), + Encoding: encoding}) + } + } + t, err := template.New("").Parse(TEMPLATES_GO) + if err != nil { + panic(err) + } + f := new(bytes.Buffer) + err = t.Execute(f, struct{ TemplateStrings []*NamedTemplateString }{templateStrings}) + if err != nil { + panic(err) + } + ioutil.WriteFile("templates.go", f.Bytes(), 0644) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile new file mode 100644 index 0000000000..d1c57accdd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile @@ -0,0 +1,4 @@ + +all: + gnostic swagger.yaml --go-client-out=apis_guru + go install diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go new file mode 100644 index 0000000000..daaea180b2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go @@ -0,0 +1,41 @@ +package main + +import ( + "fmt" + "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/apis_guru" + "sort" +) + +func main() { + c := apis_guru.NewClient("http://api.apis.guru/v2") + + metrics, err := c.GetMetrics() + if err != nil { + panic(err) + } + fmt.Printf("%+v\n", metrics) + + apis, err := c.ListAPIs() + if err != nil { + panic(err) + } + + keys := make([]string, 0) + for key, _ := range *apis { + keys = append(keys, key) + } + sort.Strings(keys) + + for _, key := range keys { + api := (*apis)[key] + versions := make([]string, 0) + for key, _ := range api.Versions { + versions = append(versions, key) + } + sort.Strings(versions) + fmt.Printf("[%s]:%+v\n", key, versions) + } + + api := (*apis)["xkcd.com"].Versions["1.0.0"] + fmt.Printf("%+v\n", api.SwaggerUrl) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml new file mode 100644 index 0000000000..40e9399666 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml @@ -0,0 +1,186 @@ +swagger: '2.0' +schemes: + - https +host: api.apis.guru +basePath: /v2/ +info: + contact: + email: founders@apis.guru + name: APIs.guru + url: 'http://APIs.guru' + description: | + Wikipedia for Web APIs. Repository of API specs in OpenAPI(fka Swagger) 2.0 format. + + **Warning**: If you want to be notified about changes in advance please subscribe to our [Gitter channel](https://gitter.im/APIs-guru/api-models). + + Client sample: [[Demo]](https://apis.guru/simple-ui) [[Repo]](https://github.com/APIs-guru/simple-ui) + license: + name: CC0 1.0 + url: 'https://github.com/APIs-guru/api-models#licenses' + title: APIs.guru + version: '2.0' + x-logo: + url: 'https://apis.guru/branding/logo_vertical.svg' +externalDocs: + url: 'https://github.com/APIs-guru/api-models/blob/master/API.md' +produces: + - application/json +security: [] +paths: + /list.json: + get: + description: | + List all APIs in the directory. + Returns links to OpenAPI specification for each API in the directory. + If API exist in multiply versions `preferred` one is explicitly marked. + + Some basic info from OpenAPI spec is cached inside each object. + This allows to generate some simple views without need to fetch OpenAPI spec for each API. + operationId: listAPIs + responses: + '200': + description: OK + schema: + $ref: '#/definitions/APIs' + summary: List all APIs + /metrics.json: + get: + description: | + Some basic metrics for the entire directory. + Just stunning numbers to put on a front page and are intended purely for WoW effect :) + operationId: getMetrics + responses: + '200': + description: OK + schema: + $ref: '#/definitions/Metrics' + summary: Get basic metrics +definitions: + API: + additionalProperties: false + description: Meta information about API + properties: + added: + description: Timestamp when the API was first added to the directory + format: date-time + type: string + preferred: + description: Recommended version + type: string + versions: + additionalProperties: + $ref: '#/definitions/ApiVersion' + description: List of supported versions of the API + minProperties: 1 + type: object + required: + - added + - preferred + - versions + type: object + APIs: + additionalProperties: + $ref: '#/definitions/API' + description: | + List of API details. + It is a JSON object with API IDs(`[:]`) as keys. + example: + 'googleapis.com:drive': + added: '2015-02-22T20:00:45.000Z' + preferred: v3 + versions: + v2: + added: '2015-02-22T20:00:45.000Z' + info: + title: Drive + version: v2 + x-apiClientRegistration: + url: 'https://console.developers.google.com' + x-logo: + url: 'https://api.apis.guru/v2/cache/logo/https_www.gstatic.com_images_icons_material_product_2x_drive_32dp.png' + x-origin: + format: google + url: 'https://www.googleapis.com/discovery/v1/apis/drive/v2/rest' + version: v1 + x-preferred: false + x-providerName: googleapis.com + x-serviceName: drive + swaggerUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v2/swagger.json' + swaggerYamlUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v2/swagger.yaml' + updated: '2016-06-17T00:21:44.000Z' + v3: + added: '2015-12-12T00:25:13.000Z' + info: + title: Drive + version: v3 + x-apiClientRegistration: + url: 'https://console.developers.google.com' + x-logo: + url: 'https://api.apis.guru/v2/cache/logo/https_www.gstatic.com_images_icons_material_product_2x_drive_32dp.png' + x-origin: + format: google + url: 'https://www.googleapis.com/discovery/v1/apis/drive/v3/rest' + version: v1 + x-preferred: true + x-providerName: googleapis.com + x-serviceName: drive + swaggerUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v3/swagger.json' + swaggerYamlUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v3/swagger.yaml' + updated: '2016-06-17T00:21:44.000Z' + minProperties: 1 + type: object + ApiVersion: + additionalProperties: false + properties: + added: + description: Timestamp when the version was added + format: date-time + type: string + info: + description: Copy of `info` section from Swagger spec + minProperties: 1 + type: object + swaggerUrl: + description: URL to Swagger spec in JSON format + format: url + type: string + swaggerYamlUrl: + description: URL to Swagger spec in YAML format + format: url + type: string + updated: + description: Timestamp when the version was updated + format: date-time + type: string + required: + - added + - updated + - swaggerUrl + - swaggerYamlUrl + - info + type: object + Metrics: + additionalProperties: false + description: List of basic metrics + example: + numAPIs: 238 + numEndpoints: 6448 + numSpecs: 302 + properties: + numAPIs: + description: Number of APIs + minimum: 1 + type: integer + numEndpoints: + description: Total number of endpoints inside all specifications + minimum: 1 + type: integer + numSpecs: + description: Number of API specifications including different versions of the same API + minimum: 1 + type: integer + required: + - numSpecs + - numAPIs + - numEndpoints + type: object diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile new file mode 100644 index 0000000000..26bd6cf816 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile @@ -0,0 +1,21 @@ + +build: + go install github.com/googleapis/gnostic + go install github.com/googleapis/gnostic/plugins/gnostic-go-generator/encode-templates + go generate github.com/googleapis/gnostic/plugins/gnostic-go-generator + go install github.com/googleapis/gnostic/plugins/gnostic-go-generator + rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server + ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client + ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server + +all: build + gnostic bookstore.json --go-generator-out=bookstore + +clean: + rm -rf bookstore bookstore.text service/service + +test: all + cd service; go get .; go build; ./service & + go test + killall service + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md new file mode 100644 index 0000000000..6baa33706e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md @@ -0,0 +1,23 @@ +# Bookstore Example + +This directory contains an OpenAPI description of a simple bookstore API. + +Use this example to try the `openapi_go_generator` plugin, which implements +`openapi_go_client` and `openapi_go_server` for generating API client and +server code, respectively. + +Run "make all" to build and install `openapic` and the Go plugins. +It will generate both client and server code. The API client and +server code will be in the `bookstore` package. + +The `service` directory contains additional code that completes the server. +To build and run the service, `cd service` and do the following: + + go get . + go build + ./service & + +To test the service with the generated client, go back up to the top-level +directory and run `go test`. The test in `bookstore_test.go` uses client +code generated in `bookstore` to verify the service. + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json new file mode 100644 index 0000000000..c823cdedf3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json @@ -0,0 +1,357 @@ +{ + "swagger": "2.0", + "info": { + "description": "A simple Bookstore API example.", + "title": "Bookstore", + "version": "1.0.0" + }, + "host": "generated-bookstore.appspot.com", + "basePath": "/", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "schemes": [ + "https" + ], + "paths": { + "/shelves": { + "get": { + "description": "Return all shelves in the bookstore.", + "operationId": "listShelves", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "List of shelves in the bookstore.", + "schema": { + "$ref": "#/definitions/listShelvesResponse" + } + } + }, + "security": [ + + ] + }, + "post": { + "description": "Create a new shelf in the bookstore.", + "operationId": "createShelf", + "parameters": [ + { + "description": "A shelf resource to create.", + "in": "body", + "name": "shelf", + "required": true, + "schema": { + "$ref": "#/definitions/shelf" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A newly created shelf resource.", + "schema": { + "$ref": "#/definitions/shelf" + } + } + } + }, + "delete": { + "description": "Delete all shelves.", + "operationId": "deleteShelves", + "responses": { + "default": { + "description": "An empty response body." + } + } + } + }, + "/shelves/{shelf}": { + "get": { + "description": "Get a single shelf resource with the given ID.", + "operationId": "getShelf", + "parameters": [ + { + "description": "ID of the shelf to get.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A shelf resource.", + "schema": { + "$ref": "#/definitions/shelf" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "delete": { + "description": "Delete a single shelf with the given ID.", + "operationId": "deleteShelf", + "parameters": [ + { + "description": "ID of the shelf to delete.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + } + ], + "responses": { + "default": { + "description": "An empty response body." + } + } + } + }, + "/shelves/{shelf}/books": { + "get": { + "description": "Return all books in a shelf with the given ID.", + "operationId": "listBooks", + "parameters": [ + { + "description": "ID of the shelf whose books should be returned.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "List of books on the specified shelf.", + "schema": { + "$ref": "#/definitions/listBooksResponse" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "post": { + "description": "Create a new book on the shelf.", + "operationId": "createBook", + "parameters": [ + { + "description": "ID of the shelf where the book should be created.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + }, + { + "description": "Book to create.", + "in": "body", + "name": "book", + "required": true, + "schema": { + "$ref": "#/definitions/book" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A newly created book resource.", + "schema": { + "$ref": "#/definitions/book" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/shelves/{shelf}/books/{book}": { + "get": { + "description": "Get a single book with a given ID from a shelf.", + "operationId": "getBook", + "parameters": [ + { + "description": "ID of the shelf from which to get the book.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + }, + { + "description": "ID of the book to get from the shelf.", + "format": "int64", + "in": "path", + "name": "book", + "required": true, + "type": "integer" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A book resource.", + "schema": { + "$ref": "#/definitions/book" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "delete": { + "description": "Delete a single book with a given ID from a shelf.", + "operationId": "deleteBook", + "parameters": [ + { + "description": "ID of the shelf from which to delete the book.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + }, + { + "description": "ID of the book to delete from the shelf.", + "format": "int64", + "in": "path", + "name": "book", + "required": true, + "type": "integer" + } + ], + "responses": { + "default": { + "description": "An empty response body." + } + } + } + } + }, + "definitions": { + "book": { + "properties": { + "author": { + "type": "string" + }, + "name": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "name", + "author", + "title" + ] + }, + "listBooksResponse": { + "properties": { + "books": { + "items": { + "$ref": "#/definitions/book" + }, + "type": "array" + } + }, + "required": [ + "books" + ], + "type": "object" + }, + "listShelvesResponse": { + "properties": { + "shelves": { + "items": { + "$ref": "#/definitions/shelf" + }, + "type": "array" + } + }, + "type": "object" + }, + "shelf": { + "properties": { + "name": { + "type": "string" + }, + "theme": { + "type": "string" + } + }, + "required": [ + "name", + "theme" + ] + }, + "error": { + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + }, + "security": [ + { + "api_key": [ + + ] + } + ], + "securityDefinitions": { + "api_key": { + "in": "query", + "name": "key", + "type": "apiKey" + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go new file mode 100644 index 0000000000..5a5a6e882e --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go @@ -0,0 +1,209 @@ +/* + Copyright 2017 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 test + +import ( + "net/http" + "strings" + "testing" + + "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" +) + +const service = "http://localhost:8080" + +//const service = "http://generated-bookstore.appspot.com" + +func TestBookstore(t *testing.T) { + // create a client + b := bookstore.NewClient(service) + // reset the service by deleting all shelves + { + err := b.DeleteShelves() + if err != nil { + t.Fail() + } + } + // verify that the service has no shelves + { + response, err := b.ListShelves() + if err != nil { + t.Fail() + } + if len(response.Shelves) != 0 { + t.Fail() + } + } + // attempting to get a shelf should return an error + { + _, err := b.GetShelf(1) + if err == nil { + t.Fail() + } + } + // attempting to get a book should return an error + { + _, err := b.GetBook(1, 2) + if err == nil { + t.Fail() + } + } + // add a shelf + { + var shelf bookstore.Shelf + shelf.Theme = "mysteries" + response, err := b.CreateShelf(shelf) + if err != nil { + t.Fail() + } + if (response.Name != "shelves/1") || + (response.Theme != "mysteries") { + t.Fail() + } + } + // add another shelf + { + var shelf bookstore.Shelf + shelf.Theme = "comedies" + response, err := b.CreateShelf(shelf) + if err != nil { + t.Fail() + } + if (response.Name != "shelves/2") || + (response.Theme != "comedies") { + t.Fail() + } + } + // get the first shelf that was added + { + response, err := b.GetShelf(1) + if err != nil { + t.Fail() + } + if (response.Name != "shelves/1") || + (response.Theme != "mysteries") { + t.Fail() + } + } + // list shelves and verify that there are 2 + { + response, err := b.ListShelves() + if err != nil { + t.Fail() + } + if len(response.Shelves) != 2 { + t.Fail() + } + } + // delete a shelf + { + err := b.DeleteShelf(2) + if err != nil { + t.Fail() + } + } + // list shelves and verify that there is only 1 + { + response, err := b.ListShelves() + if err != nil { + t.Fail() + } + if len(response.Shelves) != 1 { + t.Fail() + } + } + // list books on a shelf, verify that there are none + { + response, err := b.ListBooks(1) + if err != nil { + t.Fail() + } + if len(response.Books) != 0 { + t.Fail() + } + } + // create a book + { + var book bookstore.Book + book.Author = "Agatha Christie" + book.Title = "And Then There Were None" + _, err := b.CreateBook(1, book) + if err != nil { + t.Fail() + } + } + // create another book + { + var book bookstore.Book + book.Author = "Agatha Christie" + book.Title = "Murder on the Orient Express" + _, err := b.CreateBook(1, book) + if err != nil { + t.Fail() + } + } + // get the first book that was added + { + _, err := b.GetBook(1, 1) + if err != nil { + t.Fail() + } + } + // list the books on a shelf and verify that there are 2 + { + response, err := b.ListBooks(1) + if err != nil { + t.Fail() + } + if len(response.Books) != 2 { + t.Fail() + } + } + // delete a book + { + err := b.DeleteBook(1, 2) + if err != nil { + t.Fail() + } + } + // list the books on a shelf and verify that is only 1 + { + response, err := b.ListBooks(1) + if err != nil { + t.Fail() + } + if len(response.Books) != 1 { + t.Fail() + } + } + // verify the handling of a badly-formed request + { + req, err := http.NewRequest("POST", service+"/shelves", strings.NewReader("")) + if err != nil { + return + } + resp, err := http.DefaultClient.Do(req) + if err != nil { + return + } + // we expect a 400 (Bad Request) code + if resp.StatusCode != 400 { + t.Fail() + } + return + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml new file mode 100644 index 0000000000..9c262ce193 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml @@ -0,0 +1,9 @@ +application: bookstore +version: 1 +runtime: go +api_version: go1 +handlers: +- url: /.* + script: _go_app +- url: / + static_dir: static diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go new file mode 100644 index 0000000000..53df81a53d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go @@ -0,0 +1,27 @@ +/* + Copyright 2017 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 main + +import ( + "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" +) + +// init() is called when the package is loaded +// this allows this app to be trivially deployed to Google App Engine, which does not call main() +func init() { + bookstore.Initialize(NewService()) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go new file mode 100644 index 0000000000..6a14ae944d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go @@ -0,0 +1,34 @@ +// +build !appengine + +// This file is omitted when the app is built for Google App Engine + +/* + Copyright 2017 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 main + +import ( + "log" + + "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" +) + +func main() { + err := bookstore.ServeHTTP(":8080") + if err != nil { + log.Printf("%v", err) + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go new file mode 100644 index 0000000000..67c128bebd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go @@ -0,0 +1,195 @@ +/* + Copyright 2017 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 main + +import ( + "errors" + "fmt" + "net/http" + "sync" + + "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" +) + +// +// The Service type implements a bookstore service. +// All objects are managed in an in-memory non-persistent store. +// +type Service struct { + // shelves are stored in a map keyed by shelf id + // books are stored in a two level map, keyed first by shelf id and then by book id + Shelves map[int64]*bookstore.Shelf + Books map[int64]map[int64]*bookstore.Book + LastShelfID int64 // the id of the last shelf that was added + LastBookID int64 // the id of the last book that was added + Mutex sync.Mutex // global mutex to synchronize service access +} + +func NewService() *Service { + return &Service{ + Shelves: make(map[int64]*bookstore.Shelf), + Books: make(map[int64]map[int64]*bookstore.Book), + } +} + +func (service *Service) ListShelves(responses *bookstore.ListShelvesResponses) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // copy shelf ids from Shelves map keys + shelves := make([]bookstore.Shelf, 0, len(service.Shelves)) + for _, shelf := range service.Shelves { + shelves = append(shelves, *shelf) + } + response := &bookstore.ListShelvesResponse{} + response.Shelves = shelves + (*responses).OK = response + return err +} + +func (service *Service) CreateShelf(parameters *bookstore.CreateShelfParameters, responses *bookstore.CreateShelfResponses) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // assign an id and name to a shelf and add it to the Shelves map. + shelf := parameters.Shelf + service.LastShelfID++ + sid := service.LastShelfID + shelf.Name = fmt.Sprintf("shelves/%d", sid) + service.Shelves[sid] = &shelf + (*responses).OK = &shelf + return err +} + +func (service *Service) DeleteShelves() (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // delete everything by reinitializing the Shelves and Books maps. + service.Shelves = make(map[int64]*bookstore.Shelf) + service.Books = make(map[int64]map[int64]*bookstore.Book) + service.LastShelfID = 0 + service.LastBookID = 0 + return nil +} + +func (service *Service) GetShelf(parameters *bookstore.GetShelfParameters, responses *bookstore.GetShelfResponses) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // look up a shelf from the Shelves map. + shelf, err := service.getShelf(parameters.Shelf) + if err != nil { + (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} + return nil + } else { + (*responses).OK = shelf + return nil + } +} + +func (service *Service) DeleteShelf(parameters *bookstore.DeleteShelfParameters) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // delete a shelf by removing the shelf from the Shelves map and the associated books from the Books map. + delete(service.Shelves, parameters.Shelf) + delete(service.Books, parameters.Shelf) + return nil +} + +func (service *Service) ListBooks(parameters *bookstore.ListBooksParameters, responses *bookstore.ListBooksResponses) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // list the books in a shelf + _, err = service.getShelf(parameters.Shelf) + if err != nil { + (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} + return nil + } + shelfBooks := service.Books[parameters.Shelf] + books := make([]bookstore.Book, 0, len(shelfBooks)) + for _, book := range shelfBooks { + books = append(books, *book) + } + response := &bookstore.ListBooksResponse{} + response.Books = books + (*responses).OK = response + return nil +} + +func (service *Service) CreateBook(parameters *bookstore.CreateBookParameters, responses *bookstore.CreateBookResponses) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // return "not found" if the shelf doesn't exist + shelf, err := service.getShelf(parameters.Shelf) + if err != nil { + (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} + return nil + } + // assign an id and name to a book and add it to the Books map. + service.LastBookID++ + bid := service.LastBookID + book := parameters.Book + book.Name = fmt.Sprintf("%s/books/%d", shelf.Name, bid) + if service.Books[parameters.Shelf] == nil { + service.Books[parameters.Shelf] = make(map[int64]*bookstore.Book) + } + service.Books[parameters.Shelf][bid] = &book + (*responses).OK = &book + return err +} + +func (service *Service) GetBook(parameters *bookstore.GetBookParameters, responses *bookstore.GetBookResponses) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // get a book from the Books map + book, err := service.getBook(parameters.Shelf, parameters.Book) + if err != nil { + (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} + } else { + (*responses).OK = book + } + return nil +} + +func (service *Service) DeleteBook(parameters *bookstore.DeleteBookParameters) (err error) { + service.Mutex.Lock() + defer service.Mutex.Unlock() + // delete a book by removing the book from the Books map. + delete(service.Books[parameters.Shelf], parameters.Book) + return nil +} + +// internal helpers + +func (service *Service) getShelf(sid int64) (shelf *bookstore.Shelf, err error) { + shelf, ok := service.Shelves[sid] + if !ok { + return nil, errors.New(fmt.Sprintf("Couldn't find shelf %d", sid)) + } else { + return shelf, nil + } +} + +func (service *Service) getBook(sid int64, bid int64) (book *bookstore.Book, err error) { + _, err = service.getShelf(sid) + if err != nil { + return nil, err + } + book, ok := service.Books[sid][bid] + if !ok { + return nil, errors.New(fmt.Sprintf("Couldn't find book %d on shelf %d", bid, sid)) + } else { + return book, nil + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile new file mode 100644 index 0000000000..5a71fb9bed --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile @@ -0,0 +1,3 @@ +all: + gnostic swagger.json --go-client-out=xkcd + go install diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go new file mode 100644 index 0000000000..1bd3448eed --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go @@ -0,0 +1,22 @@ +package main + +import ( + "fmt" + "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/xkcd" +) + +func main() { + c := xkcd.NewClient("http://xkcd.com") + + comic, err := c.Get_info_0_json() + if err != nil { + panic(err) + } + fmt.Printf("%+v\n", comic) + + comic, err = c.Get_comicId_info_0_json(1800) + if err != nil { + panic(err) + } + fmt.Printf("%+v\n", comic) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json new file mode 100644 index 0000000000..6a74c5f441 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json @@ -0,0 +1,111 @@ +{ + "swagger": "2.0", + "schemes": [ + "http" + ], + "host": "xkcd.com", + "basePath": "/", + "info": { + "description": "Webcomic of romance, sarcasm, math, and language.", + "title": "XKCD", + "version": "1.0.0", + "x-apisguru-categories": [ + "media" + ], + "x-logo": { + "url": "https://api.apis.guru/v2/cache/logo/http_imgs.xkcd.com_static_terrible_small_logo.png" + }, + "x-origin": { + "format": "swagger", + "url": "https://raw.githubusercontent.com/APIs-guru/unofficial_openapi_specs/master/xkcd.com/1.0.0/swagger.yaml", + "version": "2.0" + }, + "x-preferred": true, + "x-providerName": "xkcd.com", + "x-tags": [ + "humor", + "comics" + ], + "x-unofficialSpec": true + }, + "externalDocs": { + "url": "https://xkcd.com/json.html" + }, + "securityDefinitions": {}, + "paths": { + "/info.0.json": { + "get": { + "description": "Fetch current comic and metadata.\n", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/comic" + } + } + } + } + }, + "/{comicId}/info.0.json": { + "get": { + "description": "Fetch comics and metadata by comic id.\n", + "parameters": [ + { + "in": "path", + "name": "comicId", + "required": true, + "type": "number" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/comic" + } + } + } + } + } + }, + "definitions": { + "comic": { + "properties": { + "alt": { + "type": "string" + }, + "day": { + "type": "string" + }, + "img": { + "type": "string" + }, + "link": { + "type": "string" + }, + "month": { + "type": "string" + }, + "news": { + "type": "string" + }, + "num": { + "type": "number" + }, + "safe_title": { + "type": "string" + }, + "title": { + "type": "string" + }, + "transcript": { + "type": "string" + }, + "year": { + "type": "string" + } + }, + "type": "object" + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/funcmap.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/funcmap.go new file mode 100644 index 0000000000..df8a9b0b0f --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/funcmap.go @@ -0,0 +1,125 @@ +// Copyright 2017 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 main + +import ( + "strings" + "text/template" +) + +// This file contains support functions that are passed into template +// evaluation for use within templates. + +func hasFieldNamedOK(s *ServiceType) bool { + return s.hasFieldNamed("OK") +} + +func hasFieldNamedDefault(s *ServiceType) bool { + return s.hasFieldNamed("Default") +} + +func hasParameters(m *ServiceMethod) bool { + return m.ParametersType != nil +} + +func hasResponses(m *ServiceMethod) bool { + return m.ResponsesType != nil +} + +func hasPathParameters(m *ServiceMethod) bool { + for _, field := range m.ParametersType.Fields { + if field.Position == "path" { + return true + } + } + return false +} + +func hasFormParameters(m *ServiceMethod) bool { + for _, field := range m.ParametersType.Fields { + if field.Position == "formdata" { + return true + } + } + return false +} + +func goType(openapiType string) string { + switch openapiType { + case "number": + return "int" + default: + return openapiType + } +} + +func parameterList(m *ServiceMethod) string { + result := "" + if m.ParametersType != nil { + for i, field := range m.ParametersType.Fields { + if i > 0 { + result += ", " + } + result += field.ParameterName + " " + field.NativeType + } + } + return result +} + +func bodyParameterName(m *ServiceMethod) string { + for _, field := range m.ParametersType.Fields { + if field.Position == "body" { + return field.JSONName + } + } + return "" +} + +func bodyParameterFieldName(m *ServiceMethod) string { + for _, field := range m.ParametersType.Fields { + if field.Position == "body" { + return field.Name + } + } + return "" +} + +func commentForText(text string) string { + result := "" + lines := strings.Split(text, "\n") + for i, line := range lines { + if i > 0 { + result += "\n" + } + result += "// " + line + } + return result +} + +func templateHelpers() template.FuncMap { + return template.FuncMap{ + "hasFieldNamedOK": hasFieldNamedOK, + "hasFieldNamedDefault": hasFieldNamedDefault, + "hasParameters": hasParameters, + "hasPathParameters": hasPathParameters, + "hasFormParameters": hasFormParameters, + "hasResponses": hasResponses, + "goType": goType, + "parameterList": parameterList, + "bodyParameterName": bodyParameterName, + "bodyParameterFieldName": bodyParameterFieldName, + "commentForText": commentForText, + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/gofmt.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/gofmt.go new file mode 100644 index 0000000000..3386356061 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/gofmt.go @@ -0,0 +1,71 @@ +// Copyright 2017 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 main + +import ( + "io/ioutil" + "log" + "os/exec" + "runtime" + "strings" +) + +// Remove lines containing only "//-" after templates have been expanded. +// Code templates use "//-" prefixes to mark template operators +// that otherwise would add unnecessary blank lines. +func stripMarkers(inputBytes []byte) (outputBytes []byte) { + inputString := string(inputBytes) + inputLines := strings.Split(inputString, "\n") + outputLines := make([]string, 0) + for _, line := range inputLines { + if strings.Contains(line, "//-") { + removed := strings.TrimSpace(strings.Replace(line, "//-", "", 1)) + if removed != "" { + outputLines = append(outputLines, removed) + } + } else { + outputLines = append(outputLines, line) + } + } + outputString := strings.Join(outputLines, "\n") + return []byte(outputString) +} + +// Run the gofmt tool to format generated code. +func gofmt(filename string, inputBytes []byte) (outputBytes []byte, err error) { + if false { + return inputBytes, nil + } + cmd := exec.Command(runtime.GOROOT() + "/bin/gofmt") + input, _ := cmd.StdinPipe() + output, _ := cmd.StdoutPipe() + cmderr, _ := cmd.StderrPipe() + err = cmd.Start() + if err != nil { + return + } + input.Write(inputBytes) + input.Close() + + outputBytes, _ = ioutil.ReadAll(output) + errors, _ := ioutil.ReadAll(cmderr) + if len(errors) > 0 { + errors := strings.Replace(string(errors), "", filename, -1) + log.Printf("Syntax errors in generated code:\n%s", errors) + return inputBytes, nil + } + + return +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go new file mode 100644 index 0000000000..38a833d9a5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go @@ -0,0 +1,110 @@ +// Copyright 2017 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. + +//go:generate encode-templates + +// gnostic_go_generator is a sample Gnostic plugin that generates Go +// code that supports an API. +package main + +import ( + "fmt" + "io/ioutil" + "log" + "os" + + "github.com/golang/protobuf/proto" + + openapi "github.com/googleapis/gnostic/OpenAPIv2" + plugins "github.com/googleapis/gnostic/plugins" +) + +// Helper: if error is not nil, record it, serializes and returns the response and exits +func sendAndExitIfError(err error, response *plugins.Response) { + if err != nil { + response.Errors = append(response.Errors, err.Error()) + sendAndExit(response) + } +} + +// Helper: serializes and returns the response +func sendAndExit(response *plugins.Response) { + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) + os.Exit(0) +} + +// This is the main function for the code generation plugin. +func main() { + + // Use the name used to run the plugin to decide which files to generate. + var files []string + switch os.Args[0] { + case "gnostic_go_client": + files = []string{"client.go", "types.go"} + case "gnostic_go_server": + files = []string{"server.go", "provider.go", "types.go"} + default: + files = []string{"client.go", "server.go", "provider.go", "types.go"} + } + + // Initialize the plugin response. + response := &plugins.Response{} + + // Read the plugin input. + data, err := ioutil.ReadAll(os.Stdin) + sendAndExitIfError(err, response) + if len(data) == 0 { + sendAndExitIfError(fmt.Errorf("no input data"), response) + } + + // Deserialize the input. + request := &plugins.Request{} + err = proto.Unmarshal(data, request) + sendAndExitIfError(err, response) + + // Collect parameters passed to the plugin. + invocation := os.Args[0] + parameters := request.Parameters + packageName := request.OutputPath // the default package name is the output directory + for _, parameter := range parameters { + invocation += " " + parameter.Name + "=" + parameter.Value + if parameter.Name == "package" { + packageName = parameter.Value + } + } + + // Log the invocation. + log.Printf("Running %s(input:%s)", invocation, request.Wrapper.Version) + + // Read the document sent by the plugin and use it to generate client/server code. + if request.Wrapper.Version != "v2" { + err = fmt.Errorf("Unsupported OpenAPI version %s", request.Wrapper.Version) + sendAndExitIfError(err, response) + } + document := &openapi.Document{} + err = proto.Unmarshal(request.Wrapper.Value, document) + sendAndExitIfError(err, response) + + // Create the renderer. + renderer, err := NewServiceRenderer(document, packageName) + sendAndExitIfError(err, response) + + // Run the renderer to generate files and add them to the response object. + err = renderer.Generate(response, files) + sendAndExitIfError(err, response) + + // Return with success. + sendAndExit(response) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go new file mode 100644 index 0000000000..0457b09ee5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go @@ -0,0 +1,437 @@ +// Copyright 2017 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 main + +import ( + "bytes" + "encoding/base64" + "fmt" + "log" + _ "os" + "path" + "path/filepath" + "strings" + "text/template" + "unicode" + "unicode/utf8" + + openapi "github.com/googleapis/gnostic/OpenAPIv2" + plugins "github.com/googleapis/gnostic/plugins" +) + +// ServiceType typically corresponds to a definition, parameter, +// or response in the API and is represented by a type in generated code. +type ServiceType struct { + Name string + Kind string + Fields []*ServiceTypeField +} + +func (s *ServiceType) hasFieldNamed(name string) bool { + for _, f := range s.Fields { + if f.Name == name { + return true + } + } + return false +} + +// ServiceTypeField is a field in a definition and can be +// associated with a position in a request structure. +type ServiceTypeField struct { + Name string // the name as specified + Type string // the specified type of the field + NativeType string // the programming-language native type of the field + FieldName string // the name to use for data structure fields + ParameterName string // the name to use for parameters + JSONName string // the name to use in JSON serialization + Position string // "body", "header", "formdata", "query", or "path" +} + +// ServiceMethod is an operation of an API and typically +// has associated client and server code. +type ServiceMethod struct { + Name string // Operation name, possibly generated from method and path + Path string // HTTP path + Method string // HTTP method name + Description string // description of method + HandlerName string // name of the generated handler + ProcessorName string // name of the processing function in the service interface + ClientName string // name of client + ResultTypeName string // native type name for the result structure + ParametersTypeName string // native type name for the input parameters structure + ResponsesTypeName string // native type name for the responses + ParametersType *ServiceType // parameters (input) + ResponsesType *ServiceType // responses (output) +} + +// ServiceRenderer reads an OpenAPI document and generates code. +type ServiceRenderer struct { + Templates map[string]*template.Template + + Name string + Package string + Types []*ServiceType + Methods []*ServiceMethod +} + +// NewServiceRenderer creates a renderer. +func NewServiceRenderer(document *openapi.Document, packageName string) (renderer *ServiceRenderer, err error) { + renderer = &ServiceRenderer{} + // Load templates. + err = renderer.loadTemplates(templates()) + if err != nil { + return nil, err + } + // Set renderer properties from passed-in document. + renderer.Name = document.Info.Title + renderer.Package = packageName // Set package name from argument. + renderer.Types = make([]*ServiceType, 0) + renderer.Methods = make([]*ServiceMethod, 0) + err = renderer.loadService(document) + if err != nil { + return nil, err + } + return renderer, nil +} + +// Load templates that will be used by the renderer. +func (renderer *ServiceRenderer) loadTemplates(files map[string]string) (err error) { + helpers := templateHelpers() + renderer.Templates = make(map[string]*template.Template, 0) + for filename, encoding := range files { + templateData, err := base64.StdEncoding.DecodeString(encoding) + if err != nil { + return err + } + t, err := template.New(filename).Funcs(helpers).Parse(string(templateData)) + if err != nil { + return err + } + renderer.Templates[filename] = t + } + return err +} + +// Preprocess the types and methods of the API. +func (renderer *ServiceRenderer) loadService(document *openapi.Document) (err error) { + // Collect service type descriptions from Definitions section. + if document.Definitions != nil { + for _, pair := range document.Definitions.AdditionalProperties { + var t ServiceType + t.Fields = make([]*ServiceTypeField, 0) + schema := pair.Value + if schema.Properties != nil { + if len(schema.Properties.AdditionalProperties) > 0 { + // If the schema has properties, generate a struct. + t.Kind = "struct" + } + for _, pair2 := range schema.Properties.AdditionalProperties { + var f ServiceTypeField + f.Name = strings.Title(pair2.Name) + f.Type = typeForSchema(pair2.Value) + f.JSONName = pair2.Name + t.Fields = append(t.Fields, &f) + } + } + t.Name = strings.Title(filteredTypeName(pair.Name)) + if len(t.Fields) == 0 { + if schema.AdditionalProperties != nil { + // If the schema has no fixed properties and additional properties of a specified type, + // generate a map pointing to objects of that type. + mapType := typeForRef(schema.AdditionalProperties.GetSchema().XRef) + t.Kind = "map[string]" + mapType + } + } + renderer.Types = append(renderer.Types, &t) + } + } + // Collect service method descriptions from Paths section. + for _, pair := range document.Paths.Path { + v := pair.Value + if v.Get != nil { + renderer.loadOperation(v.Get, "GET", pair.Name) + } + if v.Post != nil { + renderer.loadOperation(v.Post, "POST", pair.Name) + } + if v.Put != nil { + renderer.loadOperation(v.Put, "PUT", pair.Name) + } + if v.Delete != nil { + renderer.loadOperation(v.Delete, "DELETE", pair.Name) + } + } + return err +} + +// convert the first character of a string to upper case +func upperFirst(s string) string { + if s == "" { + return "" + } + r, n := utf8.DecodeRuneInString(s) + return string(unicode.ToUpper(r)) + strings.ToLower(s[n:]) +} + +func generateOperationName(method, path string) string { + + filteredPath := strings.Replace(path, "/", "_", -1) + filteredPath = strings.Replace(filteredPath, ".", "_", -1) + filteredPath = strings.Replace(filteredPath, "{", "", -1) + filteredPath = strings.Replace(filteredPath, "}", "", -1) + + return upperFirst(method) + filteredPath +} + +func (renderer *ServiceRenderer) loadOperation(op *openapi.Operation, method string, path string) (err error) { + var m ServiceMethod + m.Name = strings.Title(op.OperationId) + m.Path = path + m.Method = method + if m.Name == "" { + m.Name = generateOperationName(method, path) + } + m.Description = op.Description + m.HandlerName = "Handle" + m.Name + m.ProcessorName = m.Name + m.ClientName = m.Name + m.ParametersType, err = renderer.loadServiceTypeFromParameters(m.Name+"Parameters", op.Parameters) + if m.ParametersType != nil { + m.ParametersTypeName = m.ParametersType.Name + } + m.ResponsesType, err = renderer.loadServiceTypeFromResponses(&m, m.Name+"Responses", op.Responses) + if m.ResponsesType != nil { + m.ResponsesTypeName = m.ResponsesType.Name + } + renderer.Methods = append(renderer.Methods, &m) + return err +} + +func (renderer *ServiceRenderer) loadServiceTypeFromParameters(name string, parameters []*openapi.ParametersItem) (t *ServiceType, err error) { + t = &ServiceType{} + t.Kind = "struct" + t.Fields = make([]*ServiceTypeField, 0) + for _, parametersItem := range parameters { + var f ServiceTypeField + f.Type = fmt.Sprintf("%+v", parametersItem) + parameter := parametersItem.GetParameter() + if parameter != nil { + bodyParameter := parameter.GetBodyParameter() + if bodyParameter != nil { + f.Name = bodyParameter.Name + f.FieldName = strings.Replace(f.Name, "-", "_", -1) + if bodyParameter.Schema != nil { + f.Type = typeForSchema(bodyParameter.Schema) + f.NativeType = f.Type + f.Position = "body" + } + } + nonBodyParameter := parameter.GetNonBodyParameter() + if nonBodyParameter != nil { + headerParameter := nonBodyParameter.GetHeaderParameterSubSchema() + if headerParameter != nil { + f.Name = headerParameter.Name + f.FieldName = strings.Replace(f.Name, "-", "_", -1) + f.Type = headerParameter.Type + f.NativeType = f.Type + f.Position = "header" + } + formDataParameter := nonBodyParameter.GetFormDataParameterSubSchema() + if formDataParameter != nil { + f.Name = formDataParameter.Name + f.FieldName = strings.Replace(f.Name, "-", "_", -1) + f.Type = formDataParameter.Type + f.NativeType = f.Type + f.Position = "formdata" + } + queryParameter := nonBodyParameter.GetQueryParameterSubSchema() + if queryParameter != nil { + f.Name = queryParameter.Name + f.FieldName = strings.Replace(f.Name, "-", "_", -1) + f.Type = queryParameter.Type + f.NativeType = f.Type + f.Position = "query" + } + pathParameter := nonBodyParameter.GetPathParameterSubSchema() + if pathParameter != nil { + f.Name = pathParameter.Name + f.FieldName = strings.Replace(f.Name, "-", "_", -1) + f.Type = pathParameter.Type + f.NativeType = f.Type + f.Position = "path" + f.Type = typeForName(pathParameter.Type, pathParameter.Format) + } + } + f.JSONName = f.Name + f.ParameterName = replaceReservedWords(f.FieldName) + f.Name = strings.Title(f.Name) + t.Fields = append(t.Fields, &f) + if f.NativeType == "integer" { + f.NativeType = "int64" + } + } + } + t.Name = name + if len(t.Fields) > 0 { + renderer.Types = append(renderer.Types, t) + return t, err + } + return nil, err +} + +func (renderer *ServiceRenderer) loadServiceTypeFromResponses(m *ServiceMethod, name string, responses *openapi.Responses) (t *ServiceType, err error) { + t = &ServiceType{} + t.Kind = "struct" + t.Fields = make([]*ServiceTypeField, 0) + + for _, responseCode := range responses.ResponseCode { + var f ServiceTypeField + f.Name = propertyNameForResponseCode(responseCode.Name) + f.JSONName = "" + response := responseCode.Value.GetResponse() + if response != nil && response.Schema != nil && response.Schema.GetSchema() != nil { + f.Type = "*" + typeForSchema(response.Schema.GetSchema()) + t.Fields = append(t.Fields, &f) + if f.Name == "OK" { + m.ResultTypeName = typeForSchema(response.Schema.GetSchema()) + } + } + } + + t.Name = name + if len(t.Fields) > 0 { + renderer.Types = append(renderer.Types, t) + return t, err + } + return nil, err +} + +func filteredTypeName(typeName string) (name string) { + // first take the last path segment + parts := strings.Split(typeName, "/") + name = parts[len(parts)-1] + // then take the last part of a dotted name + parts = strings.Split(name, ".") + name = parts[len(parts)-1] + return name +} + +func typeForName(name string, format string) (typeName string) { + switch name { + case "integer": + if format == "int32" { + return "int32" + } else if format == "int64" { + return "int64" + } else { + return "int32" + } + default: + return name + } +} + +func typeForSchema(schema *openapi.Schema) (typeName string) { + ref := schema.XRef + if ref != "" { + return typeForRef(ref) + } + if schema.Type != nil { + types := schema.Type.Value + format := schema.Format + if len(types) == 1 && types[0] == "string" { + return "string" + } + if len(types) == 1 && types[0] == "integer" && format == "int32" { + return "int32" + } + if len(types) == 1 && types[0] == "integer" { + return "int" + } + if len(types) == 1 && types[0] == "number" { + return "int" + } + if len(types) == 1 && types[0] == "array" && schema.Items != nil { + // we have an array.., but of what? + items := schema.Items.Schema + if len(items) == 1 && items[0].XRef != "" { + return "[]" + typeForRef(items[0].XRef) + } + } + if len(types) == 1 && types[0] == "object" && schema.AdditionalProperties == nil { + return "map[string]interface{}" + } + } + if schema.AdditionalProperties != nil { + additionalProperties := schema.AdditionalProperties + if propertySchema := additionalProperties.GetSchema(); propertySchema != nil { + if ref := propertySchema.XRef; ref != "" { + return "map[string]" + typeForRef(ref) + } + } + } + // this function is incomplete... so return a string representing anything that we don't handle + return fmt.Sprintf("%v", schema) +} + +func typeForRef(ref string) (typeName string) { + return strings.Replace(strings.Title(path.Base(ref)), "-", "_", -1) +} + +func propertyNameForResponseCode(code string) string { + if code == "200" { + return "OK" + } + return strings.Title(code) +} + +// Generate runs the renderer to generate the named files. +func (renderer *ServiceRenderer) Generate(response *plugins.Response, files []string) (err error) { + for _, filename := range files { + file := &plugins.File{} + file.Name = filename + f := new(bytes.Buffer) + t := renderer.Templates[filename] + log.Printf("Generating %s", filename) + err = t.Execute(f, struct { + Renderer *ServiceRenderer + }{ + renderer, + }) + if err != nil { + response.Errors = append(response.Errors, fmt.Sprintf("ERROR %v", err)) + } + inputBytes := f.Bytes() + // run generated Go files through gofmt + if filepath.Ext(file.Name) == ".go" { + strippedBytes := stripMarkers(inputBytes) + file.Data, err = gofmt(file.Name, strippedBytes) + } else { + file.Data = inputBytes + } + response.Files = append(response.Files, file) + } + return +} + +func replaceReservedWords(name string) string { + log.Printf("replacing %s\n", name) + if name == "type" { + return "ttttype" + } + return name + +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates.go new file mode 100644 index 0000000000..feb659006f --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates.go @@ -0,0 +1,24 @@ +// Copyright 2017 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 main + +func templates() map[string]string { + return map[string]string{ + "client.go": "Ly8gR0VORVJBVEVEIEZJTEU6IERPIE5PVCBFRElUIQoKcGFja2FnZSB7ey5SZW5kZXJlci5QYWNrYWdlfX0KCmltcG9ydCAoCiAgImJ5dGVzIgogICJlcnJvcnMiCiAgImVuY29kaW5nL2pzb24iCiAgImZtdCIKICAibmV0L2h0dHAiCiAgInN0cmluZ3MiCikKICAKLy8gQVBJIGNsaWVudCByZXByZXNlbnRhdGlvbi4KdHlwZSBDbGllbnQgc3RydWN0IHsKCXNlcnZpY2Ugc3RyaW5nCn0gCgovLyBDcmVhdGUgYW4gQVBJIGNsaWVudC4KZnVuYyBOZXdDbGllbnQoc2VydmljZSBzdHJpbmcpICpDbGllbnQgewoJY2xpZW50IDo9ICZDbGllbnR7fQoJY2xpZW50LnNlcnZpY2UgPSBzZXJ2aWNlCglyZXR1cm4gY2xpZW50Cn0KCi8vLXt7cmFuZ2UgLlJlbmRlcmVyLk1ldGhvZHN9fQp7e2NvbW1lbnRGb3JUZXh0IC5EZXNjcmlwdGlvbn19Ci8vLXt7aWYgZXEgLlJlc3VsdFR5cGVOYW1lICIifX0KZnVuYyAoY2xpZW50ICpDbGllbnQpIHt7LkNsaWVudE5hbWV9fSh7e3BhcmFtZXRlckxpc3QgLn19KSAoZXJyIGVycm9yKSB7Ci8vLXt7ZWxzZX19CmZ1bmMgKGNsaWVudCAqQ2xpZW50KSB7ey5DbGllbnROYW1lfX0oe3twYXJhbWV0ZXJMaXN0IC59fSkgKHJlc3VsdCAqe3suUmVzdWx0VHlwZU5hbWV9fSwgZXJyIGVycm9yKSB7Ci8vLXt7ZW5kfX0KCXBhdGggOj0gY2xpZW50LnNlcnZpY2UgKyAie3suUGF0aH19IgoJLy8te3tpZiBoYXNQYXJhbWV0ZXJzIC59fQoJLy8te3tyYW5nZSAuUGFyYW1ldGVyc1R5cGUuRmllbGRzfX0JCgkvLy17e2lmIGVxIC5Qb3NpdGlvbiAicGF0aCJ9fQoJcGF0aCA9IHN0cmluZ3MuUmVwbGFjZShwYXRoLCAieyIgKyAie3suSlNPTk5hbWV9fSIgKyAifSIsIGZtdC5TcHJpbnRmKCIldiIsIHt7LkpTT05OYW1lfX0pLCAxKQoJLy8te3tlbmR9fQoJLy8te3tlbmR9fQoJLy8te3tlbmR9fQoJLy8te3tpZiBlcSAuTWV0aG9kICJQT1NUIn19Cglib2R5IDo9IG5ldyhieXRlcy5CdWZmZXIpCglqc29uLk5ld0VuY29kZXIoYm9keSkuRW5jb2RlKHt7Ym9keVBhcmFtZXRlck5hbWUgLn19KQoJcmVxLCBlcnIgOj0gaHR0cC5OZXdSZXF1ZXN0KCJ7ey5NZXRob2R9fSIsIHBhdGgsIGJvZHkpCgkvLy17e2Vsc2V9fQoJcmVxLCBlcnIgOj0gaHR0cC5OZXdSZXF1ZXN0KCJ7ey5NZXRob2R9fSIsIHBhdGgsIG5pbCkKCS8vLXt7ZW5kfX0KCWlmIGVyciAhPSBuaWwgewoJCXJldHVybgoJfQoJcmVzcCwgZXJyIDo9IGh0dHAuRGVmYXVsdENsaWVudC5EbyhyZXEpCglpZiBlcnIgIT0gbmlsIHsKCQlyZXR1cm4KCX0KCWlmIHJlc3AuU3RhdHVzQ29kZSA9PSAyMDAgewoJCWRlZmVyIHJlc3AuQm9keS5DbG9zZSgpCgkJLy8te3tpZiBuZSAuUmVzdWx0VHlwZU5hbWUgIiJ9fQoJCWRlY29kZXIgOj0ganNvbi5OZXdEZWNvZGVyKHJlc3AuQm9keSkKCQlyZXN1bHQgPSAme3suUmVzdWx0VHlwZU5hbWV9fXt9CgkJZGVjb2Rlci5EZWNvZGUocmVzdWx0KQoJCS8vLXt7ZW5kfX0KCX0gZWxzZSB7CgkJZXJyID0gZXJyb3JzLk5ldyhyZXNwLlN0YXR1cykKCX0KCXJldHVybgp9CgovLy17e2VuZH19CgovLyByZWZlciB0byBpbXBvcnRlZCBwYWNrYWdlcyB0aGF0IG1heSBvciBtYXkgbm90IGJlIHVzZWQgaW4gZ2VuZXJhdGVkIGNvZGUKZnVuYyBmb3JjZWRfcGFja2FnZV9yZWZlcmVuY2VzKCkgewoJXyA9IG5ldyhieXRlcy5CdWZmZXIpCglfID0gZm10LlNwcmludGYoIiIpCglfID0gc3RyaW5ncy5TcGxpdCgiIiwiIikKfQ==", + "provider.go": "Ly8gR0VORVJBVEVEIEZJTEU6IERPIE5PVCBFRElUIQoKcGFja2FnZSB7ey5SZW5kZXJlci5QYWNrYWdlfX0KCi8vIFRvIGNyZWF0ZSBhIHNlcnZlciwgZmlyc3Qgd3JpdGUgYSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCi8vIFRoZW4gcGFzcyBhbiBpbnN0YW5jZSBvZiBpdCB0byBJbml0aWFsaXplKCkuCnR5cGUgUHJvdmlkZXIgaW50ZXJmYWNlIHsKLy8te3tyYW5nZSAuUmVuZGVyZXIuTWV0aG9kc319CgovLyBQcm92aWRlcgp7e2NvbW1lbnRGb3JUZXh0IC5EZXNjcmlwdGlvbn19Ci8vLXt7aWYgaGFzUGFyYW1ldGVycyAufX0KLy8te3tpZiBoYXNSZXNwb25zZXMgLn19CiAge3suUHJvY2Vzc29yTmFtZX19KHBhcmFtZXRlcnMgKnt7LlBhcmFtZXRlcnNUeXBlTmFtZX19LCByZXNwb25zZXMgKnt7LlJlc3BvbnNlc1R5cGVOYW1lfX0pIChlcnIgZXJyb3IpCi8vLXt7ZWxzZX19CiAge3suUHJvY2Vzc29yTmFtZX19KHBhcmFtZXRlcnMgKnt7LlBhcmFtZXRlcnNUeXBlTmFtZX19KSAoZXJyIGVycm9yKQovLy17e2VuZH19Ci8vLXt7ZWxzZX19Ci8vLXt7aWYgaGFzUmVzcG9uc2VzIC59fQogIHt7LlByb2Nlc3Nvck5hbWV9fShyZXNwb25zZXMgKnt7LlJlc3BvbnNlc1R5cGVOYW1lfX0pIChlcnIgZXJyb3IpCi8vLXt7ZWxzZX19CiAge3suUHJvY2Vzc29yTmFtZX19KCkgKGVyciBlcnJvcikKLy8te3tlbmR9fQovLy17e2VuZH19CQovLy17e2VuZH19Cn0K", + "server.go": "Ly8gR0VORVJBVEVEIEZJTEU6IERPIE5PVCBFRElUIQoKcGFja2FnZSB7ey5SZW5kZXJlci5QYWNrYWdlfX0KCmltcG9ydCAoCgkiZW5jb2RpbmcvanNvbiIKCSJlcnJvcnMiCgkibmV0L2h0dHAiCgkic3RyY29udiIKCgkiZ2l0aHViLmNvbS9nb3JpbGxhL211eCIKKQoKZnVuYyBpbnRWYWx1ZShzIHN0cmluZykgKHYgaW50NjQpIHsKCXYsIF8gPSBzdHJjb252LlBhcnNlSW50KHMsIDEwLCA2NCkKCXJldHVybiB2Cn0KCi8vIFRoaXMgcGFja2FnZS1nbG9iYWwgdmFyaWFibGUgaG9sZHMgdGhlIHVzZXItd3JpdHRlbiBQcm92aWRlciBmb3IgQVBJIHNlcnZpY2VzLgovLyBTZWUgdGhlIFByb3ZpZGVyIGludGVyZmFjZSBmb3IgZGV0YWlscy4KdmFyIHByb3ZpZGVyIFByb3ZpZGVyCgovLyBUaGVzZSBoYW5kbGVycyBzZXJ2ZSBBUEkgbWV0aG9kcy4KLy8te3tyYW5nZSAuUmVuZGVyZXIuTWV0aG9kc319CgovLyBIYW5kbGVyCnt7Y29tbWVudEZvclRleHQgLkRlc2NyaXB0aW9ufX0KZnVuYyB7ey5IYW5kbGVyTmFtZX19KHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7Cgl2YXIgZXJyIGVycm9yCgkvLy17e2lmIGhhc1BhcmFtZXRlcnMgLn19CgkvLyBpbnN0YW50aWF0ZSB0aGUgcGFyYW1ldGVycyBzdHJ1Y3R1cmUKCXZhciBwYXJhbWV0ZXJzIHt7LlBhcmFtZXRlcnNUeXBlTmFtZX19CgkvLy17e2lmIGVxIC5NZXRob2QgIlBPU1QifX0KCS8vIGRlc2VyaWFsaXplIHJlcXVlc3QgZnJvbSBwb3N0IGRhdGEKCWRlY29kZXIgOj0ganNvbi5OZXdEZWNvZGVyKHIuQm9keSkKCWVyciA9IGRlY29kZXIuRGVjb2RlKCZwYXJhbWV0ZXJzLnt7Ym9keVBhcmFtZXRlckZpZWxkTmFtZSAufX0pCglpZiBlcnIgIT0gbmlsIHsKCQl3LldyaXRlSGVhZGVyKGh0dHAuU3RhdHVzQmFkUmVxdWVzdCkKCQl3LldyaXRlKFtdYnl0ZShlcnIuRXJyb3IoKSArICJcbiIpKQoJCXJldHVybgoJfQoJLy8te3tlbmR9fQoJLy8gZ2V0IHJlcXVlc3QgZmllbGRzIGluIHBhdGggYW5kIHF1ZXJ5IHBhcmFtZXRlcnMKCS8vLXt7aWYgaGFzUGF0aFBhcmFtZXRlcnMgLn19Cgl2YXJzIDo9IG11eC5WYXJzKHIpCgkvLy17e2VuZH19CgkvLy17e2lmIGhhc0Zvcm1QYXJhbWV0ZXJzIC59fQoJci5QYXJzZUZvcm0oKQoJLy8te3tlbmR9fQoJLy8te3tyYW5nZSAuUGFyYW1ldGVyc1R5cGUuRmllbGRzfX0JCgkvLy17e2lmIGVxIC5Qb3NpdGlvbiAicGF0aCJ9fQoJaWYgdmFsdWUsIG9rIDo9IHZhcnNbInt7LkpTT05OYW1lfX0iXTsgb2sgewoJCXBhcmFtZXRlcnMue3suTmFtZX19ID0gaW50VmFsdWUodmFsdWUpCgl9CgkvLy17e2VuZH19CQoJLy8te3tpZiBlcSAuUG9zaXRpb24gImZvcm1kYXRhIn19CglpZiBsZW4oci5Gb3JtWyJ7ey5KU09OTmFtZX19Il0pID4gMCB7CgkJcGFyYW1ldGVycy57ey5OYW1lfX0gPSBpbnRWYWx1ZShyLkZvcm1bInt7LkpTT05OYW1lfX0iXVswXSkKCX0KCS8vLXt7ZW5kfX0KCS8vLXt7ZW5kfX0KCS8vLXt7ZW5kfX0KCS8vLXt7aWYgaGFzUmVzcG9uc2VzIC59fQkKCS8vIGluc3RhbnRpYXRlIHRoZSByZXNwb25zZXMgc3RydWN0dXJlCgl2YXIgcmVzcG9uc2VzIHt7LlJlc3BvbnNlc1R5cGVOYW1lfX0KCS8vLXt7ZW5kfX0KCS8vIGNhbGwgdGhlIHNlcnZpY2UgcHJvdmlkZXIJCgkvLy17e2lmIGhhc1BhcmFtZXRlcnMgLn19CgkvLy17e2lmIGhhc1Jlc3BvbnNlcyAufX0KCWVyciA9IHByb3ZpZGVyLnt7LlByb2Nlc3Nvck5hbWV9fSgmcGFyYW1ldGVycywgJnJlc3BvbnNlcykKCS8vLXt7ZWxzZX19CgllcnIgPSBwcm92aWRlci57ey5Qcm9jZXNzb3JOYW1lfX0oJnBhcmFtZXRlcnMpCgkvLy17e2VuZH19CgkvLy17e2Vsc2V9fQoJLy8te3tpZiBoYXNSZXNwb25zZXMgLn19CgllcnIgPSBwcm92aWRlci57ey5Qcm9jZXNzb3JOYW1lfX0oJnJlc3BvbnNlcykKCS8vLXt7ZWxzZX19CgllcnIgPSBwcm92aWRlci57ey5Qcm9jZXNzb3JOYW1lfX0oKQoJLy8te3tlbmR9fQoJLy8te3tlbmR9fQkKCWlmIGVyciA9PSBuaWwgewoJLy8te3sgaWYgaGFzUmVzcG9uc2VzIC59fQoJCS8vLXt7IGlmIC5SZXNwb25zZXNUeXBlIHwgaGFzRmllbGROYW1lZE9LIH19CQkKCQlpZiByZXNwb25zZXMuT0sgIT0gbmlsIHsKCQkJLy8gd3JpdGUgdGhlIG5vcm1hbCByZXNwb25zZQoJCQllbmNvZGVyIDo9IGpzb24uTmV3RW5jb2Rlcih3KQoJCQllbmNvZGVyLkVuY29kZShyZXNwb25zZXMuT0spCgkJCXJldHVybgoJCX0gCgkJLy8te3tlbmR9fQoJCS8vLXt7IGlmIC5SZXNwb25zZXNUeXBlIHwgaGFzRmllbGROYW1lZERlZmF1bHQgfX0JCQoJCWlmIHJlc3BvbnNlcy5EZWZhdWx0ICE9IG5pbCB7CgkJCXcuV3JpdGVIZWFkZXIoaW50KHJlc3BvbnNlcy5EZWZhdWx0LkNvZGUpKQoJCQl3LldyaXRlKFtdYnl0ZShyZXNwb25zZXMuRGVmYXVsdC5NZXNzYWdlICsgIlxuIikpCgkJCXJldHVybgoJCX0KCQkvLy17e2VuZH19CgkvLy17e2VuZH19Cgl9IGVsc2UgewoJCXcuV3JpdGVIZWFkZXIoaHR0cC5TdGF0dXNJbnRlcm5hbFNlcnZlckVycm9yKQoJCXcuV3JpdGUoW11ieXRlKGVyci5FcnJvcigpICsgIlxuIikpCgkJcmV0dXJuCgl9Cn0KLy8te3tlbmR9fQoKLy8gSW5pdGlhbGl6ZSB0aGUgQVBJIHNlcnZpY2UuCmZ1bmMgSW5pdGlhbGl6ZShwIFByb3ZpZGVyKSB7Cglwcm92aWRlciA9IHAKCXZhciByb3V0ZXIgPSBtdXguTmV3Um91dGVyKCl7e3JhbmdlIC5SZW5kZXJlci5NZXRob2RzfX0KCXJvdXRlci5IYW5kbGVGdW5jKCJ7ey5QYXRofX0iLCB7ey5IYW5kbGVyTmFtZX19KS5NZXRob2RzKCJ7ey5NZXRob2R9fSIpe3tlbmR9fQoJaHR0cC5IYW5kbGUoIi8iLCByb3V0ZXIpCn0KCi8vIFByb3ZpZGUgdGhlIEFQSSBzZXJ2aWNlIG92ZXIgSFRUUC4KZnVuYyBTZXJ2ZUhUVFAoYWRkcmVzcyBzdHJpbmcpIGVycm9yIHsKCWlmIHByb3ZpZGVyID09IG5pbCB7CgkJcmV0dXJuIGVycm9ycy5OZXcoIlVzZSB7ey5SZW5kZXJlci5QYWNrYWdlfX0uSW5pdGlhbGl6ZSgpIHRvIHNldCBhIHNlcnZpY2UgcHJvdmlkZXIuIikKCX0KCXJldHVybiBodHRwLkxpc3RlbkFuZFNlcnZlKGFkZHJlc3MsIG5pbCkKfQo=", + "types.go": "Ly8gR0VORVJBVEVEIEZJTEU6IERPIE5PVCBFRElUIQoKcGFja2FnZSB7ey5SZW5kZXJlci5QYWNrYWdlfX0KCi8vIFR5cGVzIHVzZWQgYnkgdGhlIEFQSS4KLy8te3tyYW5nZSAuUmVuZGVyZXIuVHlwZXN9fQoKLy8te3tpZiBlcSAuS2luZCAic3RydWN0In19CnR5cGUge3suTmFtZX19IHN0cnVjdCB7IAovLy17e3JhbmdlIC5GaWVsZHN9fQogIHt7Lk5hbWV9fSB7e2dvVHlwZSAuVHlwZX19e3tpZiBuZSAuSlNPTk5hbWUgIiJ9fSBganNvbjoie3suSlNPTk5hbWV9fSJgCi8vLXt7ZW5kfX0KLy8te3tlbmR9fQp9Ci8vLXt7ZWxzZX19CnR5cGUge3suTmFtZX19IHt7LktpbmR9fQovLy17e2VuZH19CgovLy17e2VuZH19", + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/client.go.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/client.go.tmpl new file mode 100644 index 0000000000..d56b4bb5d1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/client.go.tmpl @@ -0,0 +1,75 @@ +// GENERATED FILE: DO NOT EDIT! + +package {{.Renderer.Package}} + +import ( + "bytes" + "errors" + "encoding/json" + "fmt" + "net/http" + "strings" +) + +// API client representation. +type Client struct { + service string +} + +// Create an API client. +func NewClient(service string) *Client { + client := &Client{} + client.service = service + return client +} + +//-{{range .Renderer.Methods}} +{{commentForText .Description}} +//-{{if eq .ResultTypeName ""}} +func (client *Client) {{.ClientName}}({{parameterList .}}) (err error) { +//-{{else}} +func (client *Client) {{.ClientName}}({{parameterList .}}) (result *{{.ResultTypeName}}, err error) { +//-{{end}} + path := client.service + "{{.Path}}" + //-{{if hasParameters .}} + //-{{range .ParametersType.Fields}} + //-{{if eq .Position "path"}} + path = strings.Replace(path, "{" + "{{.JSONName}}" + "}", fmt.Sprintf("%v", {{.JSONName}}), 1) + //-{{end}} + //-{{end}} + //-{{end}} + //-{{if eq .Method "POST"}} + body := new(bytes.Buffer) + json.NewEncoder(body).Encode({{bodyParameterName .}}) + req, err := http.NewRequest("{{.Method}}", path, body) + //-{{else}} + req, err := http.NewRequest("{{.Method}}", path, nil) + //-{{end}} + if err != nil { + return + } + resp, err := http.DefaultClient.Do(req) + if err != nil { + return + } + if resp.StatusCode == 200 { + defer resp.Body.Close() + //-{{if ne .ResultTypeName ""}} + decoder := json.NewDecoder(resp.Body) + result = &{{.ResultTypeName}}{} + decoder.Decode(result) + //-{{end}} + } else { + err = errors.New(resp.Status) + } + return +} + +//-{{end}} + +// refer to imported packages that may or may not be used in generated code +func forced_package_references() { + _ = new(bytes.Buffer) + _ = fmt.Sprintf("") + _ = strings.Split("","") +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/provider.go.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/provider.go.tmpl new file mode 100644 index 0000000000..bf53001052 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/provider.go.tmpl @@ -0,0 +1,26 @@ +// GENERATED FILE: DO NOT EDIT! + +package {{.Renderer.Package}} + +// To create a server, first write a class that implements this interface. +// Then pass an instance of it to Initialize(). +type Provider interface { +//-{{range .Renderer.Methods}} + +// Provider +{{commentForText .Description}} +//-{{if hasParameters .}} +//-{{if hasResponses .}} + {{.ProcessorName}}(parameters *{{.ParametersTypeName}}, responses *{{.ResponsesTypeName}}) (err error) +//-{{else}} + {{.ProcessorName}}(parameters *{{.ParametersTypeName}}) (err error) +//-{{end}} +//-{{else}} +//-{{if hasResponses .}} + {{.ProcessorName}}(responses *{{.ResponsesTypeName}}) (err error) +//-{{else}} + {{.ProcessorName}}() (err error) +//-{{end}} +//-{{end}} +//-{{end}} +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/server.go.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/server.go.tmpl new file mode 100644 index 0000000000..59c3c7b0c5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/server.go.tmpl @@ -0,0 +1,121 @@ +// GENERATED FILE: DO NOT EDIT! + +package {{.Renderer.Package}} + +import ( + "encoding/json" + "errors" + "net/http" + "strconv" + + "github.com/gorilla/mux" +) + +func intValue(s string) (v int64) { + v, _ = strconv.ParseInt(s, 10, 64) + return v +} + +// This package-global variable holds the user-written Provider for API services. +// See the Provider interface for details. +var provider Provider + +// These handlers serve API methods. +//-{{range .Renderer.Methods}} + +// Handler +{{commentForText .Description}} +func {{.HandlerName}}(w http.ResponseWriter, r *http.Request) { + var err error + //-{{if hasParameters .}} + // instantiate the parameters structure + var parameters {{.ParametersTypeName}} + //-{{if eq .Method "POST"}} + // deserialize request from post data + decoder := json.NewDecoder(r.Body) + err = decoder.Decode(¶meters.{{bodyParameterFieldName .}}) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + w.Write([]byte(err.Error() + "\n")) + return + } + //-{{end}} + // get request fields in path and query parameters + //-{{if hasPathParameters .}} + vars := mux.Vars(r) + //-{{end}} + //-{{if hasFormParameters .}} + r.ParseForm() + //-{{end}} + //-{{range .ParametersType.Fields}} + //-{{if eq .Position "path"}} + if value, ok := vars["{{.JSONName}}"]; ok { + parameters.{{.Name}} = intValue(value) + } + //-{{end}} + //-{{if eq .Position "formdata"}} + if len(r.Form["{{.JSONName}}"]) > 0 { + parameters.{{.Name}} = intValue(r.Form["{{.JSONName}}"][0]) + } + //-{{end}} + //-{{end}} + //-{{end}} + //-{{if hasResponses .}} + // instantiate the responses structure + var responses {{.ResponsesTypeName}} + //-{{end}} + // call the service provider + //-{{if hasParameters .}} + //-{{if hasResponses .}} + err = provider.{{.ProcessorName}}(¶meters, &responses) + //-{{else}} + err = provider.{{.ProcessorName}}(¶meters) + //-{{end}} + //-{{else}} + //-{{if hasResponses .}} + err = provider.{{.ProcessorName}}(&responses) + //-{{else}} + err = provider.{{.ProcessorName}}() + //-{{end}} + //-{{end}} + if err == nil { + //-{{ if hasResponses .}} + //-{{ if .ResponsesType | hasFieldNamedOK }} + if responses.OK != nil { + // write the normal response + encoder := json.NewEncoder(w) + encoder.Encode(responses.OK) + return + } + //-{{end}} + //-{{ if .ResponsesType | hasFieldNamedDefault }} + if responses.Default != nil { + w.WriteHeader(int(responses.Default.Code)) + w.Write([]byte(responses.Default.Message + "\n")) + return + } + //-{{end}} + //-{{end}} + } else { + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte(err.Error() + "\n")) + return + } +} +//-{{end}} + +// Initialize the API service. +func Initialize(p Provider) { + provider = p + var router = mux.NewRouter(){{range .Renderer.Methods}} + router.HandleFunc("{{.Path}}", {{.HandlerName}}).Methods("{{.Method}}"){{end}} + http.Handle("/", router) +} + +// Provide the API service over HTTP. +func ServeHTTP(address string) error { + if provider == nil { + return errors.New("Use {{.Renderer.Package}}.Initialize() to set a service provider.") + } + return http.ListenAndServe(address, nil) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/types.go.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/types.go.tmpl new file mode 100644 index 0000000000..5162b1cc96 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/templates/types.go.tmpl @@ -0,0 +1,19 @@ +// GENERATED FILE: DO NOT EDIT! + +package {{.Renderer.Package}} + +// Types used by the API. +//-{{range .Renderer.Types}} + +//-{{if eq .Kind "struct"}} +type {{.Name}} struct { +//-{{range .Fields}} + {{.Name}} {{goType .Type}}{{if ne .JSONName ""}} `json:"{{.JSONName}}"` +//-{{end}} +//-{{end}} +} +//-{{else}} +type {{.Name}} {{.Kind}} +//-{{end}} + +//-{{end}} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-sample/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-sample/main.go new file mode 100644 index 0000000000..02937fb0d2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-sample/main.go @@ -0,0 +1,105 @@ +// Copyright 2017 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. + +// gnostic_go_sample is a sample Gnostic plugin written in Go. +package main + +import ( + "io/ioutil" + "os" + + "github.com/golang/protobuf/proto" + "github.com/googleapis/gnostic/printer" + + openapi "github.com/googleapis/gnostic/OpenAPIv2" + plugins "github.com/googleapis/gnostic/plugins" +) + +// generate a simple report of an OpenAPI document's contents +func printDocument(code *printer.Code, document *openapi.Document) { + code.Print("Swagger: %+v", document.Swagger) + code.Print("Host: %+v", document.Host) + code.Print("BasePath: %+v", document.BasePath) + if document.Info != nil { + code.Print("Info:") + code.Indent() + if document.Info.Title != "" { + code.Print("Title: %s", document.Info.Title) + } + if document.Info.Description != "" { + code.Print("Description: %s", document.Info.Description) + } + if document.Info.Version != "" { + code.Print("Version: %s", document.Info.Version) + } + code.Outdent() + } + code.Print("Paths:") + code.Indent() + for _, pair := range document.Paths.Path { + v := pair.Value + if v.Get != nil { + code.Print("GET %+v", pair.Name) + } + if v.Post != nil { + code.Print("POST %+v", pair.Name) + } + } + code.Outdent() +} + +// record an error, then serialize and return the response +func sendAndExitIfError(err error, response *plugins.Response) { + if err != nil { + response.Errors = append(response.Errors, err.Error()) + sendAndExit(response) + } +} + +// serialize and return the response +func sendAndExit(response *plugins.Response) { + responseBytes, _ := proto.Marshal(response) + os.Stdout.Write(responseBytes) + os.Exit(0) +} + +func main() { + // initialize the response + response := &plugins.Response{} + + // read and deserialize the request + data, err := ioutil.ReadAll(os.Stdin) + sendAndExitIfError(err, response) + + request := &plugins.Request{} + err = proto.Unmarshal(data, request) + sendAndExitIfError(err, response) + + wrapper := request.Wrapper + document := &openapi.Document{} + err = proto.Unmarshal(wrapper.Value, document) + sendAndExitIfError(err, response) + + // generate report + code := &printer.Code{} + code.Print("READING %s (%s)", wrapper.Name, wrapper.Version) + printDocument(code, document) + file := &plugins.File{} + file.Name = "report.txt" + file.Data = []byte(code.String()) + response.Files = append(response.Files, file) + + // send with success + sendAndExit(response) +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Makefile new file mode 100644 index 0000000000..e60ed2e944 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Makefile @@ -0,0 +1,13 @@ + +all: + swift build + .build/debug/TemplateEncoder > Sources/gnostic-swift-generator/Templates.swift + swift build + cp .build/debug/gnostic-swift-generator gnostic-swift-generator + rm -f gnostic-swift-client gnostic-swift-server + ln -s gnostic-swift-generator gnostic-swift-client + ln -s gnostic-swift-generator gnostic-swift-server + +clean: + rm -rf .build Packages + rm -rf gnostic-swift-client gnostic-swift-service diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Package.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Package.swift new file mode 100644 index 0000000000..20e5076ade --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Package.swift @@ -0,0 +1,30 @@ +// Copyright 2017 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. + +import PackageDescription + +let package = Package( + name: "SwiftOpenAPIPlugin", + targets: [ + Target(name: "gnostic-swift-generator", + dependencies: [ + "TemplateEncoder", + ]), + Target(name: "TemplateEncoder") + ], + dependencies: [ + .Package(url: "https://github.com/apple/swift-protobuf.git", Version(0,9,903)), + .Package(url: "https://github.com/kylef/Stencil.git", Version(0,8,0)) + ] +) diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/README.md new file mode 100644 index 0000000000..afa873980c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/README.md @@ -0,0 +1,15 @@ +# OpenAPI Swift Generator Plugin + +This directory contains an `openapic` plugin that can be used to generate a Swift client library and scaffolding for a Swift server for an API with an OpenAPI description. + +The plugin can be invoked like this: + + openapic bookstore.json --swift_generator_out=Bookstore + +Where `Bookstore` is the name of a directory where the generated code will be written. + +Both client and server code will be generated. + +For example usage, see the [examples/bookstore](examples/bookstore) directory. + +HTTP services are provided by the Kitura library. \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/TemplateEncoder/main.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/TemplateEncoder/main.swift new file mode 100644 index 0000000000..d62a61aa12 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/TemplateEncoder/main.swift @@ -0,0 +1,43 @@ +// Copyright 2017 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. + +import Foundation + +let TEMPLATES = "Templates" + +var s = "" +s += "// GENERATED: DO NOT EDIT\n" +s += "//\n" +s += "// This file contains base64 encodings of templates used for Swift OpenAPI code generation.\n" +s += "//\n" +s += "func loadTemplates() -> [String:String] {\n" +s += " return [\n" + +let filenames = try FileManager.default.contentsOfDirectory(atPath:TEMPLATES) +for filename in filenames { + if filename.hasSuffix(".tmpl") { + let fileURL = URL(fileURLWithPath:TEMPLATES + "/" + filename) + let filedata = try Data(contentsOf:fileURL) + let encoding = filedata.base64EncodedString() + var templatename = filename + if let extRange = templatename.range(of: ".tmpl") { + templatename.replaceSubrange(extRange, with: "") + } + s += " \"" + templatename + "\": \"" + encoding + "\",\n" + } +} + +s += " ]\n" +s += "}\n" +print(s) diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/OpenAPIv2.pb.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/OpenAPIv2.pb.swift new file mode 100644 index 0000000000..b95b7018ce --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/OpenAPIv2.pb.swift @@ -0,0 +1,8213 @@ +// DO NOT EDIT. +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: OpenAPIv2.proto +// +// For information on using the generated types, please see the documenation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2017 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that your are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +struct Openapi_V2_AdditionalPropertiesItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".AdditionalPropertiesItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var schema: Openapi_V2_Schema { + get { + if case .schema(let v)? = _storage._oneof {return v} + return Openapi_V2_Schema() + } + set {_uniqueStorage()._oneof = .schema(newValue)} + } + + var boolean: Bool { + get { + if case .boolean(let v)? = _storage._oneof {return v} + return false + } + set {_uniqueStorage()._oneof = .boolean(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case schema(Openapi_V2_Schema) + case boolean(Bool) + + static func ==(lhs: Openapi_V2_AdditionalPropertiesItem.OneOf_Oneof, rhs: Openapi_V2_AdditionalPropertiesItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.schema(let l), .schema(let r)): return l == r + case (.boolean(let l), .boolean(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Schema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .schema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .schema(v)} + case 2: + if _storage._oneof != nil {try decoder.handleConflictingOneOf()} + var v: Bool? + try decoder.decodeSingularBoolField(value: &v) + if let v = v {_storage._oneof = .boolean(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .schema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .boolean(let v)?: + try visitor.visitSingularBoolField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Any: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Any" + + var value: SwiftProtobuf.Google_Protobuf_Any { + get {return _storage._value ?? SwiftProtobuf.Google_Protobuf_Any()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var yaml: String { + get {return _storage._yaml} + set {_uniqueStorage()._yaml = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularMessageField(value: &_storage._value) + case 2: try decoder.decodeSingularStringField(value: &_storage._yaml) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } + if !_storage._yaml.isEmpty { + try visitor.visitSingularStringField(value: _storage._yaml, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_ApiKeySecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ApiKeySecurity" + + var type: String = String() + + var name: String = String() + + var `in`: String = String() + + var description_p: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.type) + case 2: try decoder.decodeSingularStringField(value: &self.name) + case 3: try decoder.decodeSingularStringField(value: &self.`in`) + case 4: try decoder.decodeSingularStringField(value: &self.description_p) + case 5: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.type.isEmpty { + try visitor.visitSingularStringField(value: self.type, fieldNumber: 1) + } + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 2) + } + if !self.`in`.isEmpty { + try visitor.visitSingularStringField(value: self.`in`, fieldNumber: 3) + } + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 4) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 5) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_BasicAuthenticationSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".BasicAuthenticationSecurity" + + var type: String = String() + + var description_p: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.type) + case 2: try decoder.decodeSingularStringField(value: &self.description_p) + case 3: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.type.isEmpty { + try visitor.visitSingularStringField(value: self.type, fieldNumber: 1) + } + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 2) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_BodyParameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".BodyParameter" + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + var schema: Openapi_V2_Schema { + get {return _storage._schema ?? Openapi_V2_Schema()} + set {_uniqueStorage()._schema = newValue} + } + /// Returns true if `schema` has been explicitly set. + var hasSchema: Bool {return _storage._schema != nil} + /// Clears the value of `schema`. Subsequent reads from it will return its default value. + mutating func clearSchema() {_storage._schema = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 2: try decoder.decodeSingularStringField(value: &_storage._name) + case 3: try decoder.decodeSingularStringField(value: &_storage._in) + case 4: try decoder.decodeSingularBoolField(value: &_storage._required) + case 5: try decoder.decodeSingularMessageField(value: &_storage._schema) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 1) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 2) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 3) + } + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 4) + } + if let v = _storage._schema { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Contact information for the owners of the API. +struct Openapi_V2_Contact: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Contact" + + /// The identifying name of the contact person/organization. + var name: String = String() + + /// The URL pointing to the contact information. + var url: String = String() + + /// The email address of the contact person/organization. + var email: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.url) + case 3: try decoder.decodeSingularStringField(value: &self.email) + case 4: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.url.isEmpty { + try visitor.visitSingularStringField(value: self.url, fieldNumber: 2) + } + if !self.email.isEmpty { + try visitor.visitSingularStringField(value: self.email, fieldNumber: 3) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 4) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Default: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Default" + + var additionalProperties: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// One or more JSON objects describing the schemas being consumed and produced by the API. +struct Openapi_V2_Definitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Definitions" + + var additionalProperties: [Openapi_V2_NamedSchema] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Document: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Document" + + /// The Swagger version of this document. + var swagger: String { + get {return _storage._swagger} + set {_uniqueStorage()._swagger = newValue} + } + + var info: Openapi_V2_Info { + get {return _storage._info ?? Openapi_V2_Info()} + set {_uniqueStorage()._info = newValue} + } + /// Returns true if `info` has been explicitly set. + var hasInfo: Bool {return _storage._info != nil} + /// Clears the value of `info`. Subsequent reads from it will return its default value. + mutating func clearInfo() {_storage._info = nil} + + /// The host (name or ip) of the API. Example: 'swagger.io' + var host: String { + get {return _storage._host} + set {_uniqueStorage()._host = newValue} + } + + /// The base path to the API. Example: '/api'. + var basePath: String { + get {return _storage._basePath} + set {_uniqueStorage()._basePath = newValue} + } + + /// The transfer protocol of the API. + var schemes: [String] { + get {return _storage._schemes} + set {_uniqueStorage()._schemes = newValue} + } + + /// A list of MIME types accepted by the API. + var consumes: [String] { + get {return _storage._consumes} + set {_uniqueStorage()._consumes = newValue} + } + + /// A list of MIME types the API can produce. + var produces: [String] { + get {return _storage._produces} + set {_uniqueStorage()._produces = newValue} + } + + var paths: Openapi_V2_Paths { + get {return _storage._paths ?? Openapi_V2_Paths()} + set {_uniqueStorage()._paths = newValue} + } + /// Returns true if `paths` has been explicitly set. + var hasPaths: Bool {return _storage._paths != nil} + /// Clears the value of `paths`. Subsequent reads from it will return its default value. + mutating func clearPaths() {_storage._paths = nil} + + var definitions: Openapi_V2_Definitions { + get {return _storage._definitions ?? Openapi_V2_Definitions()} + set {_uniqueStorage()._definitions = newValue} + } + /// Returns true if `definitions` has been explicitly set. + var hasDefinitions: Bool {return _storage._definitions != nil} + /// Clears the value of `definitions`. Subsequent reads from it will return its default value. + mutating func clearDefinitions() {_storage._definitions = nil} + + var parameters: Openapi_V2_ParameterDefinitions { + get {return _storage._parameters ?? Openapi_V2_ParameterDefinitions()} + set {_uniqueStorage()._parameters = newValue} + } + /// Returns true if `parameters` has been explicitly set. + var hasParameters: Bool {return _storage._parameters != nil} + /// Clears the value of `parameters`. Subsequent reads from it will return its default value. + mutating func clearParameters() {_storage._parameters = nil} + + var responses: Openapi_V2_ResponseDefinitions { + get {return _storage._responses ?? Openapi_V2_ResponseDefinitions()} + set {_uniqueStorage()._responses = newValue} + } + /// Returns true if `responses` has been explicitly set. + var hasResponses: Bool {return _storage._responses != nil} + /// Clears the value of `responses`. Subsequent reads from it will return its default value. + mutating func clearResponses() {_storage._responses = nil} + + var security: [Openapi_V2_SecurityRequirement] { + get {return _storage._security} + set {_uniqueStorage()._security = newValue} + } + + var securityDefinitions: Openapi_V2_SecurityDefinitions { + get {return _storage._securityDefinitions ?? Openapi_V2_SecurityDefinitions()} + set {_uniqueStorage()._securityDefinitions = newValue} + } + /// Returns true if `securityDefinitions` has been explicitly set. + var hasSecurityDefinitions: Bool {return _storage._securityDefinitions != nil} + /// Clears the value of `securityDefinitions`. Subsequent reads from it will return its default value. + mutating func clearSecurityDefinitions() {_storage._securityDefinitions = nil} + + var tags: [Openapi_V2_Tag] { + get {return _storage._tags} + set {_uniqueStorage()._tags = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._swagger) + case 2: try decoder.decodeSingularMessageField(value: &_storage._info) + case 3: try decoder.decodeSingularStringField(value: &_storage._host) + case 4: try decoder.decodeSingularStringField(value: &_storage._basePath) + case 5: try decoder.decodeRepeatedStringField(value: &_storage._schemes) + case 6: try decoder.decodeRepeatedStringField(value: &_storage._consumes) + case 7: try decoder.decodeRepeatedStringField(value: &_storage._produces) + case 8: try decoder.decodeSingularMessageField(value: &_storage._paths) + case 9: try decoder.decodeSingularMessageField(value: &_storage._definitions) + case 10: try decoder.decodeSingularMessageField(value: &_storage._parameters) + case 11: try decoder.decodeSingularMessageField(value: &_storage._responses) + case 12: try decoder.decodeRepeatedMessageField(value: &_storage._security) + case 13: try decoder.decodeSingularMessageField(value: &_storage._securityDefinitions) + case 14: try decoder.decodeRepeatedMessageField(value: &_storage._tags) + case 15: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 16: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._swagger.isEmpty { + try visitor.visitSingularStringField(value: _storage._swagger, fieldNumber: 1) + } + if let v = _storage._info { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if !_storage._host.isEmpty { + try visitor.visitSingularStringField(value: _storage._host, fieldNumber: 3) + } + if !_storage._basePath.isEmpty { + try visitor.visitSingularStringField(value: _storage._basePath, fieldNumber: 4) + } + if !_storage._schemes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._schemes, fieldNumber: 5) + } + if !_storage._consumes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._consumes, fieldNumber: 6) + } + if !_storage._produces.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._produces, fieldNumber: 7) + } + if let v = _storage._paths { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if let v = _storage._definitions { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if let v = _storage._parameters { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } + if let v = _storage._responses { + try visitor.visitSingularMessageField(value: v, fieldNumber: 11) + } + if !_storage._security.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._security, fieldNumber: 12) + } + if let v = _storage._securityDefinitions { + try visitor.visitSingularMessageField(value: v, fieldNumber: 13) + } + if !_storage._tags.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._tags, fieldNumber: 14) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 15) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 16) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Examples: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Examples" + + var additionalProperties: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// information about external documentation +struct Openapi_V2_ExternalDocs: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ExternalDocs" + + var description_p: String = String() + + var url: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.description_p) + case 2: try decoder.decodeSingularStringField(value: &self.url) + case 3: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 1) + } + if !self.url.isEmpty { + try visitor.visitSingularStringField(value: self.url, fieldNumber: 2) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// A deterministic version of a JSON Schema object. +struct Openapi_V2_FileSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".FileSchema" + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var title: String { + get {return _storage._title} + set {_uniqueStorage()._title = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var required: [String] { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var readOnly: Bool { + get {return _storage._readOnly} + set {_uniqueStorage()._readOnly = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var example: Openapi_V2_Any { + get {return _storage._example ?? Openapi_V2_Any()} + set {_uniqueStorage()._example = newValue} + } + /// Returns true if `example` has been explicitly set. + var hasExample: Bool {return _storage._example != nil} + /// Clears the value of `example`. Subsequent reads from it will return its default value. + mutating func clearExample() {_storage._example = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._format) + case 2: try decoder.decodeSingularStringField(value: &_storage._title) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularMessageField(value: &_storage._default) + case 5: try decoder.decodeRepeatedStringField(value: &_storage._required) + case 6: try decoder.decodeSingularStringField(value: &_storage._type) + case 7: try decoder.decodeSingularBoolField(value: &_storage._readOnly) + case 8: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 9: try decoder.decodeSingularMessageField(value: &_storage._example) + case 10: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 1) + } + if !_storage._title.isEmpty { + try visitor.visitSingularStringField(value: _storage._title, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._required.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._required, fieldNumber: 5) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 6) + } + if _storage._readOnly != false { + try visitor.visitSingularBoolField(value: _storage._readOnly, fieldNumber: 7) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if let v = _storage._example { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 10) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_FormDataParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".FormDataParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// allows sending a parameter by name only or with an empty value. + var allowEmptyValue: Bool { + get {return _storage._allowEmptyValue} + set {_uniqueStorage()._allowEmptyValue = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularBoolField(value: &_storage._allowEmptyValue) + case 6: try decoder.decodeSingularStringField(value: &_storage._type) + case 7: try decoder.decodeSingularStringField(value: &_storage._format) + case 8: try decoder.decodeSingularMessageField(value: &_storage._items) + case 9: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 10: try decoder.decodeSingularMessageField(value: &_storage._default) + case 11: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 12: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 13: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 14: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 16: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 17: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 19: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 20: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 21: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 22: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 23: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if _storage._allowEmptyValue != false { + try visitor.visitSingularBoolField(value: _storage._allowEmptyValue, fieldNumber: 5) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 6) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 7) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 9) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 11) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 12) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 13) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 14) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 15) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 16) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 17) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 18) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 19) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 20) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 21) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 22) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 23) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Header: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Header" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._format) + case 3: try decoder.decodeSingularMessageField(value: &_storage._items) + case 4: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 5: try decoder.decodeSingularMessageField(value: &_storage._default) + case 6: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 7: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 8: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 9: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 10: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 11: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 12: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 13: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 15: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 16: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 17: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 18: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 19: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 2) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 4) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 6) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 7) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 8) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 9) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 10) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 11) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 12) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 13) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 14) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 15) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 16) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 17) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 18) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 19) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_HeaderParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".HeaderParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularStringField(value: &_storage._type) + case 6: try decoder.decodeSingularStringField(value: &_storage._format) + case 7: try decoder.decodeSingularMessageField(value: &_storage._items) + case 8: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 9: try decoder.decodeSingularMessageField(value: &_storage._default) + case 10: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 11: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 12: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 13: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 16: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 17: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 19: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 20: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 21: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 22: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 5) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 6) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 8) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 10) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 11) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 12) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 13) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 14) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 15) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 16) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 17) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 18) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 19) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 20) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 21) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 22) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Headers: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Headers" + + var additionalProperties: [Openapi_V2_NamedHeader] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// General information about the API. +struct Openapi_V2_Info: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Info" + + /// A unique and precise title of the API. + var title: String { + get {return _storage._title} + set {_uniqueStorage()._title = newValue} + } + + /// A semantic version number of the API. + var version: String { + get {return _storage._version} + set {_uniqueStorage()._version = newValue} + } + + /// A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The terms of service for the API. + var termsOfService: String { + get {return _storage._termsOfService} + set {_uniqueStorage()._termsOfService = newValue} + } + + var contact: Openapi_V2_Contact { + get {return _storage._contact ?? Openapi_V2_Contact()} + set {_uniqueStorage()._contact = newValue} + } + /// Returns true if `contact` has been explicitly set. + var hasContact: Bool {return _storage._contact != nil} + /// Clears the value of `contact`. Subsequent reads from it will return its default value. + mutating func clearContact() {_storage._contact = nil} + + var license: Openapi_V2_License { + get {return _storage._license ?? Openapi_V2_License()} + set {_uniqueStorage()._license = newValue} + } + /// Returns true if `license` has been explicitly set. + var hasLicense: Bool {return _storage._license != nil} + /// Clears the value of `license`. Subsequent reads from it will return its default value. + mutating func clearLicense() {_storage._license = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._title) + case 2: try decoder.decodeSingularStringField(value: &_storage._version) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._termsOfService) + case 5: try decoder.decodeSingularMessageField(value: &_storage._contact) + case 6: try decoder.decodeSingularMessageField(value: &_storage._license) + case 7: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._title.isEmpty { + try visitor.visitSingularStringField(value: _storage._title, fieldNumber: 1) + } + if !_storage._version.isEmpty { + try visitor.visitSingularStringField(value: _storage._version, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._termsOfService.isEmpty { + try visitor.visitSingularStringField(value: _storage._termsOfService, fieldNumber: 4) + } + if let v = _storage._contact { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if let v = _storage._license { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 7) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_ItemsItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ItemsItem" + + var schema: [Openapi_V2_Schema] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.schema) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.schema.isEmpty { + try visitor.visitRepeatedMessageField(value: self.schema, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_JsonReference: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".JsonReference" + + var ref: String = String() + + var description_p: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.ref) + case 2: try decoder.decodeSingularStringField(value: &self.description_p) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.ref.isEmpty { + try visitor.visitSingularStringField(value: self.ref, fieldNumber: 1) + } + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_License: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".License" + + /// The name of the license type. It's encouraged to use an OSI compatible license. + var name: String = String() + + /// The URL pointing to the license. + var url: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.url) + case 3: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.url.isEmpty { + try visitor.visitSingularStringField(value: self.url, fieldNumber: 2) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +struct Openapi_V2_NamedAny: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedAny" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Any { + get {return _storage._value ?? Openapi_V2_Any()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Header as ordered (name,value) pairs. +struct Openapi_V2_NamedHeader: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedHeader" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Header { + get {return _storage._value ?? Openapi_V2_Header()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs. +struct Openapi_V2_NamedParameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedParameter" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Parameter { + get {return _storage._value ?? Openapi_V2_Parameter()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +struct Openapi_V2_NamedPathItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedPathItem" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_PathItem { + get {return _storage._value ?? Openapi_V2_PathItem()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Response as ordered (name,value) pairs. +struct Openapi_V2_NamedResponse: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedResponse" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Response { + get {return _storage._value ?? Openapi_V2_Response()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs. +struct Openapi_V2_NamedResponseValue: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedResponseValue" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_ResponseValue { + get {return _storage._value ?? Openapi_V2_ResponseValue()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs. +struct Openapi_V2_NamedSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedSchema" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Schema { + get {return _storage._value ?? Openapi_V2_Schema()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs. +struct Openapi_V2_NamedSecurityDefinitionsItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedSecurityDefinitionsItem" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_SecurityDefinitionsItem { + get {return _storage._value ?? Openapi_V2_SecurityDefinitionsItem()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +struct Openapi_V2_NamedString: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedString" + + /// Map key + var name: String = String() + + /// Mapped value + var value: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.value.isEmpty { + try visitor.visitSingularStringField(value: self.value, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. +struct Openapi_V2_NamedStringArray: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedStringArray" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_StringArray { + get {return _storage._value ?? Openapi_V2_StringArray()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_NonBodyParameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NonBodyParameter" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var headerParameterSubSchema: Openapi_V2_HeaderParameterSubSchema { + get { + if case .headerParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_HeaderParameterSubSchema() + } + set {_uniqueStorage()._oneof = .headerParameterSubSchema(newValue)} + } + + var formDataParameterSubSchema: Openapi_V2_FormDataParameterSubSchema { + get { + if case .formDataParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_FormDataParameterSubSchema() + } + set {_uniqueStorage()._oneof = .formDataParameterSubSchema(newValue)} + } + + var queryParameterSubSchema: Openapi_V2_QueryParameterSubSchema { + get { + if case .queryParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_QueryParameterSubSchema() + } + set {_uniqueStorage()._oneof = .queryParameterSubSchema(newValue)} + } + + var pathParameterSubSchema: Openapi_V2_PathParameterSubSchema { + get { + if case .pathParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_PathParameterSubSchema() + } + set {_uniqueStorage()._oneof = .pathParameterSubSchema(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case headerParameterSubSchema(Openapi_V2_HeaderParameterSubSchema) + case formDataParameterSubSchema(Openapi_V2_FormDataParameterSubSchema) + case queryParameterSubSchema(Openapi_V2_QueryParameterSubSchema) + case pathParameterSubSchema(Openapi_V2_PathParameterSubSchema) + + static func ==(lhs: Openapi_V2_NonBodyParameter.OneOf_Oneof, rhs: Openapi_V2_NonBodyParameter.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.headerParameterSubSchema(let l), .headerParameterSubSchema(let r)): return l == r + case (.formDataParameterSubSchema(let l), .formDataParameterSubSchema(let r)): return l == r + case (.queryParameterSubSchema(let l), .queryParameterSubSchema(let r)): return l == r + case (.pathParameterSubSchema(let l), .pathParameterSubSchema(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_HeaderParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .headerParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .headerParameterSubSchema(v)} + case 2: + var v: Openapi_V2_FormDataParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .formDataParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .formDataParameterSubSchema(v)} + case 3: + var v: Openapi_V2_QueryParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .queryParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .queryParameterSubSchema(v)} + case 4: + var v: Openapi_V2_PathParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .pathParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .pathParameterSubSchema(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .headerParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .formDataParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case .queryParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + case .pathParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2AccessCodeSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2AccessCodeSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var authorizationURL: String { + get {return _storage._authorizationURL} + set {_uniqueStorage()._authorizationURL = newValue} + } + + var tokenURL: String { + get {return _storage._tokenURL} + set {_uniqueStorage()._tokenURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._authorizationURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._tokenURL) + case 6: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 7: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._authorizationURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._authorizationURL, fieldNumber: 4) + } + if !_storage._tokenURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._tokenURL, fieldNumber: 5) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 6) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 7) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2ApplicationSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2ApplicationSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var tokenURL: String { + get {return _storage._tokenURL} + set {_uniqueStorage()._tokenURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._tokenURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._tokenURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._tokenURL, fieldNumber: 4) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2ImplicitSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2ImplicitSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var authorizationURL: String { + get {return _storage._authorizationURL} + set {_uniqueStorage()._authorizationURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._authorizationURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._authorizationURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._authorizationURL, fieldNumber: 4) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2PasswordSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2PasswordSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var tokenURL: String { + get {return _storage._tokenURL} + set {_uniqueStorage()._tokenURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._tokenURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._tokenURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._tokenURL, fieldNumber: 4) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2Scopes: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2Scopes" + + var additionalProperties: [Openapi_V2_NamedString] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Operation: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Operation" + + var tags: [String] { + get {return _storage._tags} + set {_uniqueStorage()._tags = newValue} + } + + /// A brief summary of the operation. + var summary: String { + get {return _storage._summary} + set {_uniqueStorage()._summary = newValue} + } + + /// A longer description of the operation, GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + /// A unique identifier of the operation. + var operationID: String { + get {return _storage._operationID} + set {_uniqueStorage()._operationID = newValue} + } + + /// A list of MIME types the API can produce. + var produces: [String] { + get {return _storage._produces} + set {_uniqueStorage()._produces = newValue} + } + + /// A list of MIME types the API can consume. + var consumes: [String] { + get {return _storage._consumes} + set {_uniqueStorage()._consumes = newValue} + } + + /// The parameters needed to send a valid API call. + var parameters: [Openapi_V2_ParametersItem] { + get {return _storage._parameters} + set {_uniqueStorage()._parameters = newValue} + } + + var responses: Openapi_V2_Responses { + get {return _storage._responses ?? Openapi_V2_Responses()} + set {_uniqueStorage()._responses = newValue} + } + /// Returns true if `responses` has been explicitly set. + var hasResponses: Bool {return _storage._responses != nil} + /// Clears the value of `responses`. Subsequent reads from it will return its default value. + mutating func clearResponses() {_storage._responses = nil} + + /// The transfer protocol of the API. + var schemes: [String] { + get {return _storage._schemes} + set {_uniqueStorage()._schemes = newValue} + } + + var deprecated: Bool { + get {return _storage._deprecated} + set {_uniqueStorage()._deprecated = newValue} + } + + var security: [Openapi_V2_SecurityRequirement] { + get {return _storage._security} + set {_uniqueStorage()._security = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &_storage._tags) + case 2: try decoder.decodeSingularStringField(value: &_storage._summary) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 5: try decoder.decodeSingularStringField(value: &_storage._operationID) + case 6: try decoder.decodeRepeatedStringField(value: &_storage._produces) + case 7: try decoder.decodeRepeatedStringField(value: &_storage._consumes) + case 8: try decoder.decodeRepeatedMessageField(value: &_storage._parameters) + case 9: try decoder.decodeSingularMessageField(value: &_storage._responses) + case 10: try decoder.decodeRepeatedStringField(value: &_storage._schemes) + case 11: try decoder.decodeSingularBoolField(value: &_storage._deprecated) + case 12: try decoder.decodeRepeatedMessageField(value: &_storage._security) + case 13: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._tags.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._tags, fieldNumber: 1) + } + if !_storage._summary.isEmpty { + try visitor.visitSingularStringField(value: _storage._summary, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._operationID.isEmpty { + try visitor.visitSingularStringField(value: _storage._operationID, fieldNumber: 5) + } + if !_storage._produces.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._produces, fieldNumber: 6) + } + if !_storage._consumes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._consumes, fieldNumber: 7) + } + if !_storage._parameters.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._parameters, fieldNumber: 8) + } + if let v = _storage._responses { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if !_storage._schemes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._schemes, fieldNumber: 10) + } + if _storage._deprecated != false { + try visitor.visitSingularBoolField(value: _storage._deprecated, fieldNumber: 11) + } + if !_storage._security.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._security, fieldNumber: 12) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 13) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Parameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Parameter" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var bodyParameter: Openapi_V2_BodyParameter { + get { + if case .bodyParameter(let v)? = _storage._oneof {return v} + return Openapi_V2_BodyParameter() + } + set {_uniqueStorage()._oneof = .bodyParameter(newValue)} + } + + var nonBodyParameter: Openapi_V2_NonBodyParameter { + get { + if case .nonBodyParameter(let v)? = _storage._oneof {return v} + return Openapi_V2_NonBodyParameter() + } + set {_uniqueStorage()._oneof = .nonBodyParameter(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case bodyParameter(Openapi_V2_BodyParameter) + case nonBodyParameter(Openapi_V2_NonBodyParameter) + + static func ==(lhs: Openapi_V2_Parameter.OneOf_Oneof, rhs: Openapi_V2_Parameter.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.bodyParameter(let l), .bodyParameter(let r)): return l == r + case (.nonBodyParameter(let l), .nonBodyParameter(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_BodyParameter? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .bodyParameter(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .bodyParameter(v)} + case 2: + var v: Openapi_V2_NonBodyParameter? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .nonBodyParameter(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .nonBodyParameter(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .bodyParameter(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .nonBodyParameter(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// One or more JSON representations for parameters +struct Openapi_V2_ParameterDefinitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ParameterDefinitions" + + var additionalProperties: [Openapi_V2_NamedParameter] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_ParametersItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ParametersItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var parameter: Openapi_V2_Parameter { + get { + if case .parameter(let v)? = _storage._oneof {return v} + return Openapi_V2_Parameter() + } + set {_uniqueStorage()._oneof = .parameter(newValue)} + } + + var jsonReference: Openapi_V2_JsonReference { + get { + if case .jsonReference(let v)? = _storage._oneof {return v} + return Openapi_V2_JsonReference() + } + set {_uniqueStorage()._oneof = .jsonReference(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case parameter(Openapi_V2_Parameter) + case jsonReference(Openapi_V2_JsonReference) + + static func ==(lhs: Openapi_V2_ParametersItem.OneOf_Oneof, rhs: Openapi_V2_ParametersItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.parameter(let l), .parameter(let r)): return l == r + case (.jsonReference(let l), .jsonReference(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Parameter? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .parameter(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .parameter(v)} + case 2: + var v: Openapi_V2_JsonReference? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .jsonReference(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .jsonReference(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .parameter(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .jsonReference(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_PathItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".PathItem" + + var ref: String { + get {return _storage._ref} + set {_uniqueStorage()._ref = newValue} + } + + var get: Openapi_V2_Operation { + get {return _storage._get ?? Openapi_V2_Operation()} + set {_uniqueStorage()._get = newValue} + } + /// Returns true if `get` has been explicitly set. + var hasGet: Bool {return _storage._get != nil} + /// Clears the value of `get`. Subsequent reads from it will return its default value. + mutating func clearGet() {_storage._get = nil} + + var put: Openapi_V2_Operation { + get {return _storage._put ?? Openapi_V2_Operation()} + set {_uniqueStorage()._put = newValue} + } + /// Returns true if `put` has been explicitly set. + var hasPut: Bool {return _storage._put != nil} + /// Clears the value of `put`. Subsequent reads from it will return its default value. + mutating func clearPut() {_storage._put = nil} + + var post: Openapi_V2_Operation { + get {return _storage._post ?? Openapi_V2_Operation()} + set {_uniqueStorage()._post = newValue} + } + /// Returns true if `post` has been explicitly set. + var hasPost: Bool {return _storage._post != nil} + /// Clears the value of `post`. Subsequent reads from it will return its default value. + mutating func clearPost() {_storage._post = nil} + + var delete: Openapi_V2_Operation { + get {return _storage._delete ?? Openapi_V2_Operation()} + set {_uniqueStorage()._delete = newValue} + } + /// Returns true if `delete` has been explicitly set. + var hasDelete: Bool {return _storage._delete != nil} + /// Clears the value of `delete`. Subsequent reads from it will return its default value. + mutating func clearDelete() {_storage._delete = nil} + + var options: Openapi_V2_Operation { + get {return _storage._options ?? Openapi_V2_Operation()} + set {_uniqueStorage()._options = newValue} + } + /// Returns true if `options` has been explicitly set. + var hasOptions: Bool {return _storage._options != nil} + /// Clears the value of `options`. Subsequent reads from it will return its default value. + mutating func clearOptions() {_storage._options = nil} + + var head: Openapi_V2_Operation { + get {return _storage._head ?? Openapi_V2_Operation()} + set {_uniqueStorage()._head = newValue} + } + /// Returns true if `head` has been explicitly set. + var hasHead: Bool {return _storage._head != nil} + /// Clears the value of `head`. Subsequent reads from it will return its default value. + mutating func clearHead() {_storage._head = nil} + + var patch: Openapi_V2_Operation { + get {return _storage._patch ?? Openapi_V2_Operation()} + set {_uniqueStorage()._patch = newValue} + } + /// Returns true if `patch` has been explicitly set. + var hasPatch: Bool {return _storage._patch != nil} + /// Clears the value of `patch`. Subsequent reads from it will return its default value. + mutating func clearPatch() {_storage._patch = nil} + + /// The parameters needed to send a valid API call. + var parameters: [Openapi_V2_ParametersItem] { + get {return _storage._parameters} + set {_uniqueStorage()._parameters = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._ref) + case 2: try decoder.decodeSingularMessageField(value: &_storage._get) + case 3: try decoder.decodeSingularMessageField(value: &_storage._put) + case 4: try decoder.decodeSingularMessageField(value: &_storage._post) + case 5: try decoder.decodeSingularMessageField(value: &_storage._delete) + case 6: try decoder.decodeSingularMessageField(value: &_storage._options) + case 7: try decoder.decodeSingularMessageField(value: &_storage._head) + case 8: try decoder.decodeSingularMessageField(value: &_storage._patch) + case 9: try decoder.decodeRepeatedMessageField(value: &_storage._parameters) + case 10: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._ref.isEmpty { + try visitor.visitSingularStringField(value: _storage._ref, fieldNumber: 1) + } + if let v = _storage._get { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if let v = _storage._put { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if let v = _storage._post { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if let v = _storage._delete { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if let v = _storage._options { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } + if let v = _storage._head { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } + if let v = _storage._patch { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._parameters.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._parameters, fieldNumber: 9) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 10) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_PathParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".PathParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularStringField(value: &_storage._type) + case 6: try decoder.decodeSingularStringField(value: &_storage._format) + case 7: try decoder.decodeSingularMessageField(value: &_storage._items) + case 8: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 9: try decoder.decodeSingularMessageField(value: &_storage._default) + case 10: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 11: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 12: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 13: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 16: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 17: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 19: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 20: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 21: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 22: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 5) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 6) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 8) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 10) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 11) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 12) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 13) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 14) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 15) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 16) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 17) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 18) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 19) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 20) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 21) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 22) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Relative paths to the individual endpoints. They must be relative to the 'basePath'. +struct Openapi_V2_Paths: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Paths" + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var path: [Openapi_V2_NamedPathItem] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + case 2: try decoder.decodeRepeatedMessageField(value: &self.path) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 1) + } + if !self.path.isEmpty { + try visitor.visitRepeatedMessageField(value: self.path, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_PrimitivesItems: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".PrimitivesItems" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._format) + case 3: try decoder.decodeSingularMessageField(value: &_storage._items) + case 4: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 5: try decoder.decodeSingularMessageField(value: &_storage._default) + case 6: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 7: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 8: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 9: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 10: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 11: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 12: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 13: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 15: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 16: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 17: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 18: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 2) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 4) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 6) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 7) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 8) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 9) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 10) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 11) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 12) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 13) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 14) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 15) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 16) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 17) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 18) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Properties: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Properties" + + var additionalProperties: [Openapi_V2_NamedSchema] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_QueryParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".QueryParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// allows sending a parameter by name only or with an empty value. + var allowEmptyValue: Bool { + get {return _storage._allowEmptyValue} + set {_uniqueStorage()._allowEmptyValue = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularBoolField(value: &_storage._allowEmptyValue) + case 6: try decoder.decodeSingularStringField(value: &_storage._type) + case 7: try decoder.decodeSingularStringField(value: &_storage._format) + case 8: try decoder.decodeSingularMessageField(value: &_storage._items) + case 9: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 10: try decoder.decodeSingularMessageField(value: &_storage._default) + case 11: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 12: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 13: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 14: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 16: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 17: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 19: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 20: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 21: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 22: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 23: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if _storage._allowEmptyValue != false { + try visitor.visitSingularBoolField(value: _storage._allowEmptyValue, fieldNumber: 5) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 6) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 7) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 9) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 11) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 12) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 13) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 14) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 15) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 16) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 17) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 18) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 19) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 20) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 21) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 22) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 23) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Response: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Response" + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var schema: Openapi_V2_SchemaItem { + get {return _storage._schema ?? Openapi_V2_SchemaItem()} + set {_uniqueStorage()._schema = newValue} + } + /// Returns true if `schema` has been explicitly set. + var hasSchema: Bool {return _storage._schema != nil} + /// Clears the value of `schema`. Subsequent reads from it will return its default value. + mutating func clearSchema() {_storage._schema = nil} + + var headers: Openapi_V2_Headers { + get {return _storage._headers ?? Openapi_V2_Headers()} + set {_uniqueStorage()._headers = newValue} + } + /// Returns true if `headers` has been explicitly set. + var hasHeaders: Bool {return _storage._headers != nil} + /// Clears the value of `headers`. Subsequent reads from it will return its default value. + mutating func clearHeaders() {_storage._headers = nil} + + var examples: Openapi_V2_Examples { + get {return _storage._examples ?? Openapi_V2_Examples()} + set {_uniqueStorage()._examples = newValue} + } + /// Returns true if `examples` has been explicitly set. + var hasExamples: Bool {return _storage._examples != nil} + /// Clears the value of `examples`. Subsequent reads from it will return its default value. + mutating func clearExamples() {_storage._examples = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 2: try decoder.decodeSingularMessageField(value: &_storage._schema) + case 3: try decoder.decodeSingularMessageField(value: &_storage._headers) + case 4: try decoder.decodeSingularMessageField(value: &_storage._examples) + case 5: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 1) + } + if let v = _storage._schema { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if let v = _storage._headers { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if let v = _storage._examples { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 5) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// One or more JSON representations for parameters +struct Openapi_V2_ResponseDefinitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ResponseDefinitions" + + var additionalProperties: [Openapi_V2_NamedResponse] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_ResponseValue: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ResponseValue" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var response: Openapi_V2_Response { + get { + if case .response(let v)? = _storage._oneof {return v} + return Openapi_V2_Response() + } + set {_uniqueStorage()._oneof = .response(newValue)} + } + + var jsonReference: Openapi_V2_JsonReference { + get { + if case .jsonReference(let v)? = _storage._oneof {return v} + return Openapi_V2_JsonReference() + } + set {_uniqueStorage()._oneof = .jsonReference(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case response(Openapi_V2_Response) + case jsonReference(Openapi_V2_JsonReference) + + static func ==(lhs: Openapi_V2_ResponseValue.OneOf_Oneof, rhs: Openapi_V2_ResponseValue.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.response(let l), .response(let r)): return l == r + case (.jsonReference(let l), .jsonReference(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Response? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .response(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .response(v)} + case 2: + var v: Openapi_V2_JsonReference? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .jsonReference(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .jsonReference(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .response(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .jsonReference(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Response objects names can either be any valid HTTP status code or 'default'. +struct Openapi_V2_Responses: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Responses" + + var responseCode: [Openapi_V2_NamedResponseValue] = [] + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.responseCode) + case 2: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.responseCode.isEmpty { + try visitor.visitRepeatedMessageField(value: self.responseCode, fieldNumber: 1) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// A deterministic version of a JSON Schema object. +struct Openapi_V2_Schema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Schema" + + var ref: String { + get {return _storage._ref} + set {_uniqueStorage()._ref = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var title: String { + get {return _storage._title} + set {_uniqueStorage()._title = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var maxProperties: Int64 { + get {return _storage._maxProperties} + set {_uniqueStorage()._maxProperties = newValue} + } + + var minProperties: Int64 { + get {return _storage._minProperties} + set {_uniqueStorage()._minProperties = newValue} + } + + var required: [String] { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var additionalProperties: Openapi_V2_AdditionalPropertiesItem { + get {return _storage._additionalProperties ?? Openapi_V2_AdditionalPropertiesItem()} + set {_uniqueStorage()._additionalProperties = newValue} + } + /// Returns true if `additionalProperties` has been explicitly set. + var hasAdditionalProperties: Bool {return _storage._additionalProperties != nil} + /// Clears the value of `additionalProperties`. Subsequent reads from it will return its default value. + mutating func clearAdditionalProperties() {_storage._additionalProperties = nil} + + var type: Openapi_V2_TypeItem { + get {return _storage._type ?? Openapi_V2_TypeItem()} + set {_uniqueStorage()._type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return _storage._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {_storage._type = nil} + + var items: Openapi_V2_ItemsItem { + get {return _storage._items ?? Openapi_V2_ItemsItem()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var allOf: [Openapi_V2_Schema] { + get {return _storage._allOf} + set {_uniqueStorage()._allOf = newValue} + } + + var properties: Openapi_V2_Properties { + get {return _storage._properties ?? Openapi_V2_Properties()} + set {_uniqueStorage()._properties = newValue} + } + /// Returns true if `properties` has been explicitly set. + var hasProperties: Bool {return _storage._properties != nil} + /// Clears the value of `properties`. Subsequent reads from it will return its default value. + mutating func clearProperties() {_storage._properties = nil} + + var discriminator: String { + get {return _storage._discriminator} + set {_uniqueStorage()._discriminator = newValue} + } + + var readOnly: Bool { + get {return _storage._readOnly} + set {_uniqueStorage()._readOnly = newValue} + } + + var xml: Openapi_V2_Xml { + get {return _storage._xml ?? Openapi_V2_Xml()} + set {_uniqueStorage()._xml = newValue} + } + /// Returns true if `xml` has been explicitly set. + var hasXml: Bool {return _storage._xml != nil} + /// Clears the value of `xml`. Subsequent reads from it will return its default value. + mutating func clearXml() {_storage._xml = nil} + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var example: Openapi_V2_Any { + get {return _storage._example ?? Openapi_V2_Any()} + set {_uniqueStorage()._example = newValue} + } + /// Returns true if `example` has been explicitly set. + var hasExample: Bool {return _storage._example != nil} + /// Clears the value of `example`. Subsequent reads from it will return its default value. + mutating func clearExample() {_storage._example = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._ref) + case 2: try decoder.decodeSingularStringField(value: &_storage._format) + case 3: try decoder.decodeSingularStringField(value: &_storage._title) + case 4: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 5: try decoder.decodeSingularMessageField(value: &_storage._default) + case 6: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 7: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 8: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 9: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 10: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 11: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 12: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 13: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 16: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 17: try decoder.decodeSingularInt64Field(value: &_storage._maxProperties) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._minProperties) + case 19: try decoder.decodeRepeatedStringField(value: &_storage._required) + case 20: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 21: try decoder.decodeSingularMessageField(value: &_storage._additionalProperties) + case 22: try decoder.decodeSingularMessageField(value: &_storage._type) + case 23: try decoder.decodeSingularMessageField(value: &_storage._items) + case 24: try decoder.decodeRepeatedMessageField(value: &_storage._allOf) + case 25: try decoder.decodeSingularMessageField(value: &_storage._properties) + case 26: try decoder.decodeSingularStringField(value: &_storage._discriminator) + case 27: try decoder.decodeSingularBoolField(value: &_storage._readOnly) + case 28: try decoder.decodeSingularMessageField(value: &_storage._xml) + case 29: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 30: try decoder.decodeSingularMessageField(value: &_storage._example) + case 31: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._ref.isEmpty { + try visitor.visitSingularStringField(value: _storage._ref, fieldNumber: 1) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 2) + } + if !_storage._title.isEmpty { + try visitor.visitSingularStringField(value: _storage._title, fieldNumber: 3) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 4) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 6) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 7) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 8) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 9) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 10) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 11) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 12) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 13) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 14) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 15) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 16) + } + if _storage._maxProperties != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxProperties, fieldNumber: 17) + } + if _storage._minProperties != 0 { + try visitor.visitSingularInt64Field(value: _storage._minProperties, fieldNumber: 18) + } + if !_storage._required.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._required, fieldNumber: 19) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 20) + } + if let v = _storage._additionalProperties { + try visitor.visitSingularMessageField(value: v, fieldNumber: 21) + } + if let v = _storage._type { + try visitor.visitSingularMessageField(value: v, fieldNumber: 22) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 23) + } + if !_storage._allOf.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._allOf, fieldNumber: 24) + } + if let v = _storage._properties { + try visitor.visitSingularMessageField(value: v, fieldNumber: 25) + } + if !_storage._discriminator.isEmpty { + try visitor.visitSingularStringField(value: _storage._discriminator, fieldNumber: 26) + } + if _storage._readOnly != false { + try visitor.visitSingularBoolField(value: _storage._readOnly, fieldNumber: 27) + } + if let v = _storage._xml { + try visitor.visitSingularMessageField(value: v, fieldNumber: 28) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 29) + } + if let v = _storage._example { + try visitor.visitSingularMessageField(value: v, fieldNumber: 30) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 31) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_SchemaItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SchemaItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var schema: Openapi_V2_Schema { + get { + if case .schema(let v)? = _storage._oneof {return v} + return Openapi_V2_Schema() + } + set {_uniqueStorage()._oneof = .schema(newValue)} + } + + var fileSchema: Openapi_V2_FileSchema { + get { + if case .fileSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_FileSchema() + } + set {_uniqueStorage()._oneof = .fileSchema(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case schema(Openapi_V2_Schema) + case fileSchema(Openapi_V2_FileSchema) + + static func ==(lhs: Openapi_V2_SchemaItem.OneOf_Oneof, rhs: Openapi_V2_SchemaItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.schema(let l), .schema(let r)): return l == r + case (.fileSchema(let l), .fileSchema(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Schema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .schema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .schema(v)} + case 2: + var v: Openapi_V2_FileSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .fileSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .fileSchema(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .schema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .fileSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_SecurityDefinitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SecurityDefinitions" + + var additionalProperties: [Openapi_V2_NamedSecurityDefinitionsItem] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_SecurityDefinitionsItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SecurityDefinitionsItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var basicAuthenticationSecurity: Openapi_V2_BasicAuthenticationSecurity { + get { + if case .basicAuthenticationSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_BasicAuthenticationSecurity() + } + set {_uniqueStorage()._oneof = .basicAuthenticationSecurity(newValue)} + } + + var apiKeySecurity: Openapi_V2_ApiKeySecurity { + get { + if case .apiKeySecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_ApiKeySecurity() + } + set {_uniqueStorage()._oneof = .apiKeySecurity(newValue)} + } + + var oauth2ImplicitSecurity: Openapi_V2_Oauth2ImplicitSecurity { + get { + if case .oauth2ImplicitSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2ImplicitSecurity() + } + set {_uniqueStorage()._oneof = .oauth2ImplicitSecurity(newValue)} + } + + var oauth2PasswordSecurity: Openapi_V2_Oauth2PasswordSecurity { + get { + if case .oauth2PasswordSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2PasswordSecurity() + } + set {_uniqueStorage()._oneof = .oauth2PasswordSecurity(newValue)} + } + + var oauth2ApplicationSecurity: Openapi_V2_Oauth2ApplicationSecurity { + get { + if case .oauth2ApplicationSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2ApplicationSecurity() + } + set {_uniqueStorage()._oneof = .oauth2ApplicationSecurity(newValue)} + } + + var oauth2AccessCodeSecurity: Openapi_V2_Oauth2AccessCodeSecurity { + get { + if case .oauth2AccessCodeSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2AccessCodeSecurity() + } + set {_uniqueStorage()._oneof = .oauth2AccessCodeSecurity(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case basicAuthenticationSecurity(Openapi_V2_BasicAuthenticationSecurity) + case apiKeySecurity(Openapi_V2_ApiKeySecurity) + case oauth2ImplicitSecurity(Openapi_V2_Oauth2ImplicitSecurity) + case oauth2PasswordSecurity(Openapi_V2_Oauth2PasswordSecurity) + case oauth2ApplicationSecurity(Openapi_V2_Oauth2ApplicationSecurity) + case oauth2AccessCodeSecurity(Openapi_V2_Oauth2AccessCodeSecurity) + + static func ==(lhs: Openapi_V2_SecurityDefinitionsItem.OneOf_Oneof, rhs: Openapi_V2_SecurityDefinitionsItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.basicAuthenticationSecurity(let l), .basicAuthenticationSecurity(let r)): return l == r + case (.apiKeySecurity(let l), .apiKeySecurity(let r)): return l == r + case (.oauth2ImplicitSecurity(let l), .oauth2ImplicitSecurity(let r)): return l == r + case (.oauth2PasswordSecurity(let l), .oauth2PasswordSecurity(let r)): return l == r + case (.oauth2ApplicationSecurity(let l), .oauth2ApplicationSecurity(let r)): return l == r + case (.oauth2AccessCodeSecurity(let l), .oauth2AccessCodeSecurity(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_BasicAuthenticationSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .basicAuthenticationSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .basicAuthenticationSecurity(v)} + case 2: + var v: Openapi_V2_ApiKeySecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .apiKeySecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .apiKeySecurity(v)} + case 3: + var v: Openapi_V2_Oauth2ImplicitSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2ImplicitSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2ImplicitSecurity(v)} + case 4: + var v: Openapi_V2_Oauth2PasswordSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2PasswordSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2PasswordSecurity(v)} + case 5: + var v: Openapi_V2_Oauth2ApplicationSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2ApplicationSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2ApplicationSecurity(v)} + case 6: + var v: Openapi_V2_Oauth2AccessCodeSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2AccessCodeSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2AccessCodeSecurity(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .basicAuthenticationSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .apiKeySecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case .oauth2ImplicitSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + case .oauth2PasswordSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + case .oauth2ApplicationSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + case .oauth2AccessCodeSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_SecurityRequirement: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SecurityRequirement" + + var additionalProperties: [Openapi_V2_NamedStringArray] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_StringArray: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".StringArray" + + var value: [String] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.value.isEmpty { + try visitor.visitRepeatedStringField(value: self.value, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Tag: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Tag" + + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 3: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 4: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 2) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 4) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_TypeItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".TypeItem" + + var value: [String] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.value.isEmpty { + try visitor.visitRepeatedStringField(value: self.value, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Any property starting with x- is valid. +struct Openapi_V2_VendorExtension: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".VendorExtension" + + var additionalProperties: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Xml: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Xml" + + var name: String = String() + + var namespace: String = String() + + var prefix: String = String() + + var attribute: Bool = false + + var wrapped: Bool = false + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.namespace) + case 3: try decoder.decodeSingularStringField(value: &self.prefix) + case 4: try decoder.decodeSingularBoolField(value: &self.attribute) + case 5: try decoder.decodeSingularBoolField(value: &self.wrapped) + case 6: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.namespace.isEmpty { + try visitor.visitSingularStringField(value: self.namespace, fieldNumber: 2) + } + if !self.prefix.isEmpty { + try visitor.visitSingularStringField(value: self.prefix, fieldNumber: 3) + } + if self.attribute != false { + try visitor.visitSingularBoolField(value: self.attribute, fieldNumber: 4) + } + if self.wrapped != false { + try visitor.visitSingularBoolField(value: self.wrapped, fieldNumber: 5) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 6) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "openapi.v2" + +extension Openapi_V2_AdditionalPropertiesItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "schema"), + 2: .same(proto: "boolean"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_AdditionalPropertiesItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_AdditionalPropertiesItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Any: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "value"), + 2: .same(proto: "yaml"), + ] + + fileprivate class _StorageClass { + var _value: SwiftProtobuf.Google_Protobuf_Any? = nil + var _yaml: String = String() + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _value = source._value + _yaml = source._yaml + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Any) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._value != other_storage._value {return false} + if _storage._yaml != other_storage._yaml {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ApiKeySecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "name"), + 3: .same(proto: "in"), + 4: .same(proto: "description"), + 5: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ApiKeySecurity) -> Bool { + if self.type != other.type {return false} + if self.name != other.name {return false} + if self.`in` != other.`in` {return false} + if self.description_p != other.description_p {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_BasicAuthenticationSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "description"), + 3: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_BasicAuthenticationSecurity) -> Bool { + if self.type != other.type {return false} + if self.description_p != other.description_p {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_BodyParameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "description"), + 2: .same(proto: "name"), + 3: .same(proto: "in"), + 4: .same(proto: "required"), + 5: .same(proto: "schema"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _description_p: String = String() + var _name: String = String() + var _in: String = String() + var _required: Bool = false + var _schema: Openapi_V2_Schema? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _description_p = source._description_p + _name = source._name + _in = source._in + _required = source._required + _schema = source._schema + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_BodyParameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._in != other_storage._in {return false} + if _storage._required != other_storage._required {return false} + if _storage._schema != other_storage._schema {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Contact: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "url"), + 3: .same(proto: "email"), + 4: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Contact) -> Bool { + if self.name != other.name {return false} + if self.url != other.url {return false} + if self.email != other.email {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Default: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Default) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Definitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Definitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Document: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "swagger"), + 2: .same(proto: "info"), + 3: .same(proto: "host"), + 4: .standard(proto: "base_path"), + 5: .same(proto: "schemes"), + 6: .same(proto: "consumes"), + 7: .same(proto: "produces"), + 8: .same(proto: "paths"), + 9: .same(proto: "definitions"), + 10: .same(proto: "parameters"), + 11: .same(proto: "responses"), + 12: .same(proto: "security"), + 13: .standard(proto: "security_definitions"), + 14: .same(proto: "tags"), + 15: .standard(proto: "external_docs"), + 16: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _swagger: String = String() + var _info: Openapi_V2_Info? = nil + var _host: String = String() + var _basePath: String = String() + var _schemes: [String] = [] + var _consumes: [String] = [] + var _produces: [String] = [] + var _paths: Openapi_V2_Paths? = nil + var _definitions: Openapi_V2_Definitions? = nil + var _parameters: Openapi_V2_ParameterDefinitions? = nil + var _responses: Openapi_V2_ResponseDefinitions? = nil + var _security: [Openapi_V2_SecurityRequirement] = [] + var _securityDefinitions: Openapi_V2_SecurityDefinitions? = nil + var _tags: [Openapi_V2_Tag] = [] + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _swagger = source._swagger + _info = source._info + _host = source._host + _basePath = source._basePath + _schemes = source._schemes + _consumes = source._consumes + _produces = source._produces + _paths = source._paths + _definitions = source._definitions + _parameters = source._parameters + _responses = source._responses + _security = source._security + _securityDefinitions = source._securityDefinitions + _tags = source._tags + _externalDocs = source._externalDocs + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Document) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._swagger != other_storage._swagger {return false} + if _storage._info != other_storage._info {return false} + if _storage._host != other_storage._host {return false} + if _storage._basePath != other_storage._basePath {return false} + if _storage._schemes != other_storage._schemes {return false} + if _storage._consumes != other_storage._consumes {return false} + if _storage._produces != other_storage._produces {return false} + if _storage._paths != other_storage._paths {return false} + if _storage._definitions != other_storage._definitions {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._responses != other_storage._responses {return false} + if _storage._security != other_storage._security {return false} + if _storage._securityDefinitions != other_storage._securityDefinitions {return false} + if _storage._tags != other_storage._tags {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Examples: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Examples) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ExternalDocs: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "description"), + 2: .same(proto: "url"), + 3: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ExternalDocs) -> Bool { + if self.description_p != other.description_p {return false} + if self.url != other.url {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_FileSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "format"), + 2: .same(proto: "title"), + 3: .same(proto: "description"), + 4: .same(proto: "default"), + 5: .same(proto: "required"), + 6: .same(proto: "type"), + 7: .standard(proto: "read_only"), + 8: .standard(proto: "external_docs"), + 9: .same(proto: "example"), + 10: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _format: String = String() + var _title: String = String() + var _description_p: String = String() + var _default: Openapi_V2_Any? = nil + var _required: [String] = [] + var _type: String = String() + var _readOnly: Bool = false + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _example: Openapi_V2_Any? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _format = source._format + _title = source._title + _description_p = source._description_p + _default = source._default + _required = source._required + _type = source._type + _readOnly = source._readOnly + _externalDocs = source._externalDocs + _example = source._example + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_FileSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._format != other_storage._format {return false} + if _storage._title != other_storage._title {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._default != other_storage._default {return false} + if _storage._required != other_storage._required {return false} + if _storage._type != other_storage._type {return false} + if _storage._readOnly != other_storage._readOnly {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._example != other_storage._example {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_FormDataParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .standard(proto: "allow_empty_value"), + 6: .same(proto: "type"), + 7: .same(proto: "format"), + 8: .same(proto: "items"), + 9: .standard(proto: "collection_format"), + 10: .same(proto: "default"), + 11: .same(proto: "maximum"), + 12: .standard(proto: "exclusive_maximum"), + 13: .same(proto: "minimum"), + 14: .standard(proto: "exclusive_minimum"), + 15: .standard(proto: "max_length"), + 16: .standard(proto: "min_length"), + 17: .same(proto: "pattern"), + 18: .standard(proto: "max_items"), + 19: .standard(proto: "min_items"), + 20: .standard(proto: "unique_items"), + 21: .same(proto: "enum"), + 22: .standard(proto: "multiple_of"), + 23: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _allowEmptyValue: Bool = false + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _allowEmptyValue = source._allowEmptyValue + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_FormDataParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._allowEmptyValue != other_storage._allowEmptyValue {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Header: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "format"), + 3: .same(proto: "items"), + 4: .standard(proto: "collection_format"), + 5: .same(proto: "default"), + 6: .same(proto: "maximum"), + 7: .standard(proto: "exclusive_maximum"), + 8: .same(proto: "minimum"), + 9: .standard(proto: "exclusive_minimum"), + 10: .standard(proto: "max_length"), + 11: .standard(proto: "min_length"), + 12: .same(proto: "pattern"), + 13: .standard(proto: "max_items"), + 14: .standard(proto: "min_items"), + 15: .standard(proto: "unique_items"), + 16: .same(proto: "enum"), + 17: .standard(proto: "multiple_of"), + 18: .same(proto: "description"), + 19: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Header) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_HeaderParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .same(proto: "type"), + 6: .same(proto: "format"), + 7: .same(proto: "items"), + 8: .standard(proto: "collection_format"), + 9: .same(proto: "default"), + 10: .same(proto: "maximum"), + 11: .standard(proto: "exclusive_maximum"), + 12: .same(proto: "minimum"), + 13: .standard(proto: "exclusive_minimum"), + 14: .standard(proto: "max_length"), + 15: .standard(proto: "min_length"), + 16: .same(proto: "pattern"), + 17: .standard(proto: "max_items"), + 18: .standard(proto: "min_items"), + 19: .standard(proto: "unique_items"), + 20: .same(proto: "enum"), + 21: .standard(proto: "multiple_of"), + 22: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_HeaderParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Headers: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Headers) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Info: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "title"), + 2: .same(proto: "version"), + 3: .same(proto: "description"), + 4: .standard(proto: "terms_of_service"), + 5: .same(proto: "contact"), + 6: .same(proto: "license"), + 7: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _title: String = String() + var _version: String = String() + var _description_p: String = String() + var _termsOfService: String = String() + var _contact: Openapi_V2_Contact? = nil + var _license: Openapi_V2_License? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _title = source._title + _version = source._version + _description_p = source._description_p + _termsOfService = source._termsOfService + _contact = source._contact + _license = source._license + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Info) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._title != other_storage._title {return false} + if _storage._version != other_storage._version {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._termsOfService != other_storage._termsOfService {return false} + if _storage._contact != other_storage._contact {return false} + if _storage._license != other_storage._license {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ItemsItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "schema"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ItemsItem) -> Bool { + if self.schema != other.schema {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_JsonReference: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "_ref"), + 2: .same(proto: "description"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_JsonReference) -> Bool { + if self.ref != other.ref {return false} + if self.description_p != other.description_p {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_License: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "url"), + 3: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_License) -> Bool { + if self.name != other.name {return false} + if self.url != other.url {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedAny: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Any? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedAny) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedHeader: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Header? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedHeader) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedParameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Parameter? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedParameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedPathItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_PathItem? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedPathItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedResponse: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Response? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedResponse) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedResponseValue: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_ResponseValue? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedResponseValue) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Schema? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedSecurityDefinitionsItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_SecurityDefinitionsItem? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedSecurityDefinitionsItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedString: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedString) -> Bool { + if self.name != other.name {return false} + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedStringArray: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_StringArray? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedStringArray) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NonBodyParameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "header_parameter_sub_schema"), + 2: .standard(proto: "form_data_parameter_sub_schema"), + 3: .standard(proto: "query_parameter_sub_schema"), + 4: .standard(proto: "path_parameter_sub_schema"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_NonBodyParameter.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NonBodyParameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2AccessCodeSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "authorization_url"), + 5: .standard(proto: "token_url"), + 6: .same(proto: "description"), + 7: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _authorizationURL: String = String() + var _tokenURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _authorizationURL = source._authorizationURL + _tokenURL = source._tokenURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2AccessCodeSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._authorizationURL != other_storage._authorizationURL {return false} + if _storage._tokenURL != other_storage._tokenURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2ApplicationSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "token_url"), + 5: .same(proto: "description"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _tokenURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _tokenURL = source._tokenURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2ApplicationSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._tokenURL != other_storage._tokenURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2ImplicitSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "authorization_url"), + 5: .same(proto: "description"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _authorizationURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _authorizationURL = source._authorizationURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2ImplicitSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._authorizationURL != other_storage._authorizationURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2PasswordSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "token_url"), + 5: .same(proto: "description"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _tokenURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _tokenURL = source._tokenURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2PasswordSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._tokenURL != other_storage._tokenURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2Scopes: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2Scopes) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Operation: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "tags"), + 2: .same(proto: "summary"), + 3: .same(proto: "description"), + 4: .standard(proto: "external_docs"), + 5: .standard(proto: "operation_id"), + 6: .same(proto: "produces"), + 7: .same(proto: "consumes"), + 8: .same(proto: "parameters"), + 9: .same(proto: "responses"), + 10: .same(proto: "schemes"), + 11: .same(proto: "deprecated"), + 12: .same(proto: "security"), + 13: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _tags: [String] = [] + var _summary: String = String() + var _description_p: String = String() + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _operationID: String = String() + var _produces: [String] = [] + var _consumes: [String] = [] + var _parameters: [Openapi_V2_ParametersItem] = [] + var _responses: Openapi_V2_Responses? = nil + var _schemes: [String] = [] + var _deprecated: Bool = false + var _security: [Openapi_V2_SecurityRequirement] = [] + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _tags = source._tags + _summary = source._summary + _description_p = source._description_p + _externalDocs = source._externalDocs + _operationID = source._operationID + _produces = source._produces + _consumes = source._consumes + _parameters = source._parameters + _responses = source._responses + _schemes = source._schemes + _deprecated = source._deprecated + _security = source._security + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Operation) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._tags != other_storage._tags {return false} + if _storage._summary != other_storage._summary {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._operationID != other_storage._operationID {return false} + if _storage._produces != other_storage._produces {return false} + if _storage._consumes != other_storage._consumes {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._responses != other_storage._responses {return false} + if _storage._schemes != other_storage._schemes {return false} + if _storage._deprecated != other_storage._deprecated {return false} + if _storage._security != other_storage._security {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Parameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "body_parameter"), + 2: .standard(proto: "non_body_parameter"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_Parameter.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Parameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ParameterDefinitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ParameterDefinitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ParametersItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "parameter"), + 2: .standard(proto: "json_reference"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_ParametersItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ParametersItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_PathItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "_ref"), + 2: .same(proto: "get"), + 3: .same(proto: "put"), + 4: .same(proto: "post"), + 5: .same(proto: "delete"), + 6: .same(proto: "options"), + 7: .same(proto: "head"), + 8: .same(proto: "patch"), + 9: .same(proto: "parameters"), + 10: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _ref: String = String() + var _get: Openapi_V2_Operation? = nil + var _put: Openapi_V2_Operation? = nil + var _post: Openapi_V2_Operation? = nil + var _delete: Openapi_V2_Operation? = nil + var _options: Openapi_V2_Operation? = nil + var _head: Openapi_V2_Operation? = nil + var _patch: Openapi_V2_Operation? = nil + var _parameters: [Openapi_V2_ParametersItem] = [] + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _ref = source._ref + _get = source._get + _put = source._put + _post = source._post + _delete = source._delete + _options = source._options + _head = source._head + _patch = source._patch + _parameters = source._parameters + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_PathItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._ref != other_storage._ref {return false} + if _storage._get != other_storage._get {return false} + if _storage._put != other_storage._put {return false} + if _storage._post != other_storage._post {return false} + if _storage._delete != other_storage._delete {return false} + if _storage._options != other_storage._options {return false} + if _storage._head != other_storage._head {return false} + if _storage._patch != other_storage._patch {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_PathParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .same(proto: "type"), + 6: .same(proto: "format"), + 7: .same(proto: "items"), + 8: .standard(proto: "collection_format"), + 9: .same(proto: "default"), + 10: .same(proto: "maximum"), + 11: .standard(proto: "exclusive_maximum"), + 12: .same(proto: "minimum"), + 13: .standard(proto: "exclusive_minimum"), + 14: .standard(proto: "max_length"), + 15: .standard(proto: "min_length"), + 16: .same(proto: "pattern"), + 17: .standard(proto: "max_items"), + 18: .standard(proto: "min_items"), + 19: .standard(proto: "unique_items"), + 20: .same(proto: "enum"), + 21: .standard(proto: "multiple_of"), + 22: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_PathParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Paths: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "vendor_extension"), + 2: .same(proto: "path"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Paths) -> Bool { + if self.vendorExtension != other.vendorExtension {return false} + if self.path != other.path {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_PrimitivesItems: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "format"), + 3: .same(proto: "items"), + 4: .standard(proto: "collection_format"), + 5: .same(proto: "default"), + 6: .same(proto: "maximum"), + 7: .standard(proto: "exclusive_maximum"), + 8: .same(proto: "minimum"), + 9: .standard(proto: "exclusive_minimum"), + 10: .standard(proto: "max_length"), + 11: .standard(proto: "min_length"), + 12: .same(proto: "pattern"), + 13: .standard(proto: "max_items"), + 14: .standard(proto: "min_items"), + 15: .standard(proto: "unique_items"), + 16: .same(proto: "enum"), + 17: .standard(proto: "multiple_of"), + 18: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_PrimitivesItems) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Properties: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Properties) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_QueryParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .standard(proto: "allow_empty_value"), + 6: .same(proto: "type"), + 7: .same(proto: "format"), + 8: .same(proto: "items"), + 9: .standard(proto: "collection_format"), + 10: .same(proto: "default"), + 11: .same(proto: "maximum"), + 12: .standard(proto: "exclusive_maximum"), + 13: .same(proto: "minimum"), + 14: .standard(proto: "exclusive_minimum"), + 15: .standard(proto: "max_length"), + 16: .standard(proto: "min_length"), + 17: .same(proto: "pattern"), + 18: .standard(proto: "max_items"), + 19: .standard(proto: "min_items"), + 20: .standard(proto: "unique_items"), + 21: .same(proto: "enum"), + 22: .standard(proto: "multiple_of"), + 23: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _allowEmptyValue: Bool = false + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _allowEmptyValue = source._allowEmptyValue + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_QueryParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._allowEmptyValue != other_storage._allowEmptyValue {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Response: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "description"), + 2: .same(proto: "schema"), + 3: .same(proto: "headers"), + 4: .same(proto: "examples"), + 5: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _description_p: String = String() + var _schema: Openapi_V2_SchemaItem? = nil + var _headers: Openapi_V2_Headers? = nil + var _examples: Openapi_V2_Examples? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _description_p = source._description_p + _schema = source._schema + _headers = source._headers + _examples = source._examples + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Response) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._description_p != other_storage._description_p {return false} + if _storage._schema != other_storage._schema {return false} + if _storage._headers != other_storage._headers {return false} + if _storage._examples != other_storage._examples {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ResponseDefinitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ResponseDefinitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ResponseValue: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "response"), + 2: .standard(proto: "json_reference"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_ResponseValue.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ResponseValue) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Responses: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "response_code"), + 2: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Responses) -> Bool { + if self.responseCode != other.responseCode {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Schema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "_ref"), + 2: .same(proto: "format"), + 3: .same(proto: "title"), + 4: .same(proto: "description"), + 5: .same(proto: "default"), + 6: .standard(proto: "multiple_of"), + 7: .same(proto: "maximum"), + 8: .standard(proto: "exclusive_maximum"), + 9: .same(proto: "minimum"), + 10: .standard(proto: "exclusive_minimum"), + 11: .standard(proto: "max_length"), + 12: .standard(proto: "min_length"), + 13: .same(proto: "pattern"), + 14: .standard(proto: "max_items"), + 15: .standard(proto: "min_items"), + 16: .standard(proto: "unique_items"), + 17: .standard(proto: "max_properties"), + 18: .standard(proto: "min_properties"), + 19: .same(proto: "required"), + 20: .same(proto: "enum"), + 21: .standard(proto: "additional_properties"), + 22: .same(proto: "type"), + 23: .same(proto: "items"), + 24: .standard(proto: "all_of"), + 25: .same(proto: "properties"), + 26: .same(proto: "discriminator"), + 27: .standard(proto: "read_only"), + 28: .same(proto: "xml"), + 29: .standard(proto: "external_docs"), + 30: .same(proto: "example"), + 31: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _ref: String = String() + var _format: String = String() + var _title: String = String() + var _description_p: String = String() + var _default: Openapi_V2_Any? = nil + var _multipleOf: Double = 0 + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _maxProperties: Int64 = 0 + var _minProperties: Int64 = 0 + var _required: [String] = [] + var _enum: [Openapi_V2_Any] = [] + var _additionalProperties: Openapi_V2_AdditionalPropertiesItem? = nil + var _type: Openapi_V2_TypeItem? = nil + var _items: Openapi_V2_ItemsItem? = nil + var _allOf: [Openapi_V2_Schema] = [] + var _properties: Openapi_V2_Properties? = nil + var _discriminator: String = String() + var _readOnly: Bool = false + var _xml: Openapi_V2_Xml? = nil + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _example: Openapi_V2_Any? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _ref = source._ref + _format = source._format + _title = source._title + _description_p = source._description_p + _default = source._default + _multipleOf = source._multipleOf + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _maxProperties = source._maxProperties + _minProperties = source._minProperties + _required = source._required + _enum = source._enum + _additionalProperties = source._additionalProperties + _type = source._type + _items = source._items + _allOf = source._allOf + _properties = source._properties + _discriminator = source._discriminator + _readOnly = source._readOnly + _xml = source._xml + _externalDocs = source._externalDocs + _example = source._example + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Schema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._ref != other_storage._ref {return false} + if _storage._format != other_storage._format {return false} + if _storage._title != other_storage._title {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._default != other_storage._default {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._maxProperties != other_storage._maxProperties {return false} + if _storage._minProperties != other_storage._minProperties {return false} + if _storage._required != other_storage._required {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._additionalProperties != other_storage._additionalProperties {return false} + if _storage._type != other_storage._type {return false} + if _storage._items != other_storage._items {return false} + if _storage._allOf != other_storage._allOf {return false} + if _storage._properties != other_storage._properties {return false} + if _storage._discriminator != other_storage._discriminator {return false} + if _storage._readOnly != other_storage._readOnly {return false} + if _storage._xml != other_storage._xml {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._example != other_storage._example {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SchemaItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "schema"), + 2: .standard(proto: "file_schema"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_SchemaItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SchemaItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SecurityDefinitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SecurityDefinitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SecurityDefinitionsItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "basic_authentication_security"), + 2: .standard(proto: "api_key_security"), + 3: .standard(proto: "oauth2_implicit_security"), + 4: .standard(proto: "oauth2_password_security"), + 5: .standard(proto: "oauth2_application_security"), + 6: .standard(proto: "oauth2_access_code_security"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_SecurityDefinitionsItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SecurityDefinitionsItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SecurityRequirement: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SecurityRequirement) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_StringArray: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_StringArray) -> Bool { + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Tag: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "description"), + 3: .standard(proto: "external_docs"), + 4: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _description_p: String = String() + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _description_p = source._description_p + _externalDocs = source._externalDocs + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Tag) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_TypeItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_TypeItem) -> Bool { + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_VendorExtension: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_VendorExtension) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Xml: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "namespace"), + 3: .same(proto: "prefix"), + 4: .same(proto: "attribute"), + 5: .same(proto: "wrapped"), + 6: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Xml) -> Bool { + if self.name != other.name {return false} + if self.namespace != other.namespace {return false} + if self.prefix != other.prefix {return false} + if self.attribute != other.attribute {return false} + if self.wrapped != other.wrapped {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/Renderer.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/Renderer.swift new file mode 100644 index 0000000000..3d259e6ee5 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/Renderer.swift @@ -0,0 +1,311 @@ +// Copyright 2017 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. + +import Stencil + +extension String { + func capitalizingFirstLetter() -> String { + let first = String(characters.prefix(1)).capitalized + let other = String(characters.dropFirst()) + return first + other + } + + mutating func capitalizeFirstLetter() { + self = self.capitalizingFirstLetter() + } +} + +class ServiceType { + var name : String = "" + var fields : [ServiceTypeField] = [] + var isInterfaceType : Bool = false +} + +class ServiceTypeField { + var name : String = "" + var typeName : String = "" + var isArrayType : Bool = false + var isCastableType : Bool = false + var isConvertibleType : Bool = false + var elementType : String = "" + var jsonName : String = "" + var position: String = "" // "body", "header", "formdata", "query", or "path" + var initialValue : String = "" + + + func setTypeForName(_ name : String, _ format : String) { + switch name { + case "integer": + if format == "int32" { + self.typeName = "Int32" + } else if format == "int64" { + self.typeName = "Int64" + } else { + self.typeName = "Int" + } + self.initialValue = "0" + self.isCastableType = true + default: + self.typeName = name.capitalizingFirstLetter() + self.initialValue = self.typeName + "()" + self.isConvertibleType = true + } + } + + + func setTypeForSchema(_ schema : Openapi_V2_Schema, optional : Bool = false) { + let ref = schema.ref + if ref != "" { + self.typeName = typeForRef(ref) + self.isConvertibleType = true + self.initialValue = self.typeName + "()" + } + if schema.hasType { + let types = schema.type.value + let format = schema.format + if types.count == 1 && types[0] == "string" { + self.typeName = "String" + self.isCastableType = true + self.initialValue = "\"\"" + } + if types.count == 1 && types[0] == "integer" && format == "int32" { + self.typeName = "Int32" + self.isCastableType = true + self.initialValue = "0" + } + if types.count == 1 && types[0] == "array" && schema.hasItems { + // we have an array.., but of what? + let items = schema.items.schema + if items.count == 1 && items[0].ref != "" { + self.isArrayType = true + self.elementType = typeForRef(items[0].ref) + self.typeName = "[" + self.elementType + "]" + self.initialValue = "[]" + } + } + } + // this function is incomplete... so return a string representing anything that we don't handle + if self.typeName == "" { + self.typeName = "\(schema)" + } + if optional { + self.typeName += "?" + self.initialValue = "nil" + } + } +} + +class ServiceMethod { + var name : String = "" + var path : String = "" + var method : String = "" + var description : String = "" + var handlerName : String = "" + var processorName : String = "" + var clientName : String = "" + var resultTypeName : String? + var parametersTypeName : String? + var responsesTypeName : String? + var parametersType : ServiceType? + var responsesType : ServiceType? +} + +func propertyNameForResponseCode(_ code:String) -> String { + switch code { + case "200": + return "ok" + case "default": + return "error" + default: + return code + } +} + +func typeForRef(_ ref : String) -> String { + let parts = ref.components(separatedBy:"/") + return parts.last!.capitalizingFirstLetter() +} + +class ServiceRenderer { + private var templateEnvironment : Environment + + private var name : String = "" + private var package: String = "" + private var types : [ServiceType] = [] + private var methods : [ServiceMethod] = [] + + public init(document : Openapi_V2_Document) { + templateEnvironment = Environment(loader:TemplateLoader(), extensions:[TemplateExtensions()]) + loadService(document:document) + } + + private func loadServiceTypeFromParameters(_ name:String, + _ parameters:[Openapi_V2_ParametersItem]) + -> ServiceType? { + let t = ServiceType() + t.name = name.capitalizingFirstLetter() + "Parameters" + for parametersItem in parameters { + let f = ServiceTypeField() + f.typeName = "\(parametersItem)" + + switch parametersItem.oneof! { + case .parameter(let parameter): + switch parameter.oneof! { + case .bodyParameter(let bodyParameter): + f.name = bodyParameter.name + if bodyParameter.hasSchema { + f.setTypeForSchema(bodyParameter.schema) + f.position = "body" + } + case .nonBodyParameter(let nonBodyParameter): + switch (nonBodyParameter.oneof!) { + case .headerParameterSubSchema(let headerParameter): + f.name = headerParameter.name + f.position = "header" + case .formDataParameterSubSchema(let formDataParameter): + f.name = formDataParameter.name + f.position = "formdata" + case .queryParameterSubSchema(let queryParameter): + f.name = queryParameter.name + f.position = "query" + case .pathParameterSubSchema(let pathParameter): + f.name = pathParameter.name + f.jsonName = pathParameter.name + f.position = "path" + f.setTypeForName(pathParameter.type, pathParameter.format) + } + } + case .jsonReference: // (let reference): + Log("?") + } + t.fields.append(f) + } + if t.fields.count > 0 { + self.types.append(t) + return t + } else { + return nil + } + } + + private func loadServiceTypeFromResponses(_ m:ServiceMethod, + _ name:String, + _ responses:Openapi_V2_Responses) + -> ServiceType? { + let t = ServiceType() + t.name = name.capitalizingFirstLetter() + "Responses" + for responseCode in responses.responseCode { + let f = ServiceTypeField() + f.name = propertyNameForResponseCode(responseCode.name) + f.jsonName = "" + if let responseCodeValueOneOf = responseCode.value.oneof { + switch responseCodeValueOneOf { + case .response(let response): + let schema = response.schema + if let schemaOneOf = schema.oneof { + switch schemaOneOf { + case .schema(let schema): + f.setTypeForSchema(schema, optional:true) + t.fields.append(f) + if f.name == "ok" { + m.resultTypeName = f.typeName.replacingOccurrences(of:"?", with:"") + } + default: + break + } + } + default: + break + } + } + } + if t.fields.count > 0 { + self.types.append(t) + return t + } else { + return nil + } + } + + private func loadOperation(_ operation : Openapi_V2_Operation, + method : String, + path : String) { + let m = ServiceMethod() + m.name = operation.operationID + m.path = path + m.method = method + m.description = operation.description_p + m.handlerName = "handle" + m.name + m.processorName = "" + m.name + m.clientName = m.name + m.parametersType = loadServiceTypeFromParameters(m.name, operation.parameters) + if m.parametersType != nil { + m.parametersTypeName = m.parametersType!.name + } + m.responsesType = loadServiceTypeFromResponses(m, m.name, operation.responses) + if m.responsesType != nil { + m.responsesTypeName = m.responsesType!.name + } + self.methods.append(m) + } + + private func loadService(document : Openapi_V2_Document) { + // collect service type descriptions + for pair in document.definitions.additionalProperties { + let t = ServiceType() + t.isInterfaceType = true + let schema = pair.value + for pair2 in schema.properties.additionalProperties { + let f = ServiceTypeField() + f.name = pair2.name + f.setTypeForSchema(pair2.value) + f.jsonName = pair2.name + t.fields.append(f) + } + t.name = pair.name.capitalizingFirstLetter() + self.types.append(t) + } + // collect service method descriptions + for pair in document.paths.path { + let v = pair.value + if v.hasGet { + loadOperation(v.get, method:"GET", path:pair.name) + } + if v.hasPost { + loadOperation(v.post, method:"POST", path:pair.name) + } + if v.hasPut { + loadOperation(v.put, method:"PUT", path:pair.name) + } + if v.hasDelete { + loadOperation(v.delete, method:"DELETE", path:pair.name) + } + } + } + + public func generate(filenames : [String], response : inout Openapi_Plugin_V1_Response) throws { + let context = ["renderer": self] + + for filename in filenames { + let clientcode = try templateEnvironment.renderTemplate(name:filename, + context:context) + if let data = stripMarkers(clientcode).data(using:.utf8) { + var clientfile = Openapi_Plugin_V1_File() + clientfile.name = filename + clientfile.data = data + response.files.append(clientfile) + } + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/TemplateFunctions.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/TemplateFunctions.swift new file mode 100644 index 0000000000..b91220a68c --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/TemplateFunctions.swift @@ -0,0 +1,157 @@ +// Copyright 2017 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. + +import Stencil + +func TemplateExtensions() -> Extension { + let ext = Extension() + + ext.registerFilter("hasParameters") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + return method.parametersType != nil + } + ext.registerFilter("hasResponses") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + return method.responsesType != nil + } + ext.registerFilter("syncClientParametersDeclaration") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var result = "" + if let parametersType = method.parametersType { + for field in parametersType.fields { + if result != "" { + result += ", " + } + result += field.name + " : " + field.typeName + } + } + return result + } + ext.registerFilter("syncClientReturnDeclaration") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var result = "" + if let resultTypeName = method.resultTypeName { + result = " -> " + resultTypeName + } + return result + } + ext.registerFilter("asyncClientParametersDeclaration") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var result = "" + if let parametersType = method.parametersType { + for field in parametersType.fields { + if result != "" { + result += ", " + } + result += field.name + " : " + field.typeName + } + } + // add callback + if result != "" { + result += ", " + } + if let resultTypeName = method.resultTypeName { + result += "callback : @escaping (" + resultTypeName + "?, Swift.Error?)->()" + } else { + result += "callback : @escaping (Swift.Error?)->()" + } + return result + } + ext.registerFilter("protocolParametersDeclaration") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var result = "" + if let parametersTypeName = method.parametersTypeName { + result = "_ parameters : " + parametersTypeName + } + return result + } + ext.registerFilter("protocolReturnDeclaration") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var result = "" + if let responsesTypeName = method.responsesTypeName { + result = "-> " + responsesTypeName + } + return result + } + ext.registerFilter("parameterFieldNames") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var result = "" + if let parametersType = method.parametersType { + for field in parametersType.fields { + if result != "" { + result += ", " + } + result += field.name + ":" + field.name + } + } + return result + } + ext.registerFilter("parametersTypeFields") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + if let parametersType = method.parametersType { + return parametersType.fields + } else { + return [] + } + } + ext.registerFilter("kituraPath") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + var path = method.path + if let parametersType = method.parametersType { + for field in parametersType.fields { + if field.position == "path" { + let original = "{" + field.jsonName + "}" + let replacement = ":" + field.jsonName + path = path.replacingOccurrences(of:original, with:replacement) + } + } + } + return path + } + ext.registerFilter("bodyParameterFieldName") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + if let parametersType = method.parametersType { + for field in parametersType.fields { + if field.position == "body" { + return field.name + } + } + } + return "" + } + ext.registerFilter("responsesHasFieldNamedOK") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + if let responsesType = method.responsesType { + for field in responsesType.fields { + if field.name == "ok" { + return true + } + } + } + return false + } + ext.registerFilter("responsesHasFieldNamedError") { (value: Any?, arguments: [Any?]) in + let method : ServiceMethod = value as! ServiceMethod + if let responsesType = method.responsesType { + for field in responsesType.fields { + if field.name == "error" { + return true + } + } + } + return false + } + + return ext +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/TemplateLoader.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/TemplateLoader.swift new file mode 100644 index 0000000000..7b64cbc7b9 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/TemplateLoader.swift @@ -0,0 +1,51 @@ +// Copyright 2017 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. + +import Stencil +import Foundation + +// A class for loading Stencil templates from compiled-in representations + +public class TemplateLoader: Loader { + private var templates: [String:String] + + public init() { + self.templates = loadTemplates() + } + + public func loadTemplate(name: String, environment: Environment) throws -> Template { + if let encoding = templates[name], + let data = Data(base64Encoded: encoding, options:[]), + let template = String(data:data, encoding:.utf8) { + return environment.templateClass.init(templateString: template, + environment: environment, + name: name) + } else { + throw TemplateDoesNotExist(templateNames: [name], loader: self) + } + } + + public func loadTemplate(names: [String], environment: Environment) throws -> Template { + for name in names { + if let encoding = templates[name], + let data = Data(base64Encoded: encoding, options:[]), + let template = String(data:data, encoding:.utf8) { + return environment.templateClass.init(templateString: template, + environment: environment, + name: name) + } + } + throw TemplateDoesNotExist(templateNames: names, loader: self) + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/Templates.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/Templates.swift new file mode 100644 index 0000000000..5b6b89da50 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/Templates.swift @@ -0,0 +1,13 @@ +// GENERATED: DO NOT EDIT +// +// This file contains base64 encodings of templates used for Swift OpenAPI code generation. +// +func loadTemplates() -> [String:String] { + return [ + "client.swift": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci8vCi8vICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLy8gQ2xpZW50IGNvZGUgCgppbXBvcnQgRm91bmRhdGlvbgppbXBvcnQgRGlzcGF0Y2gKCmVudW0gQ2xpZW50RXJyb3I6IFN3aWZ0LkVycm9yIHsKICBjYXNlIGVycm9yV2l0aENvZGUoSW50KQp9CgpwdWJsaWMgY2xhc3MgQ2xpZW50IHsKICB2YXIgc2VydmljZSA6IFN0cmluZwogIAogIHB1YmxpYyBpbml0KHNlcnZpY2U6IFN0cmluZykgewogICAgc2VsZi5zZXJ2aWNlID0gc2VydmljZQogIH0gCi8vLXslIGZvciBzZXJ2aWNlTWV0aG9kIGluIHJlbmRlcmVyLm1ldGhvZHMgJX0KCiAgLy8ge3sgc2VydmljZU1ldGhvZC5kZXNjcmlwdGlvbiB9fSBBc3luY2hyb25vdXMuCiAgcHVibGljIGZ1bmMge3sgc2VydmljZU1ldGhvZC5uYW1lIH19KHt7IHNlcnZpY2VNZXRob2R8YXN5bmNDbGllbnRQYXJhbWV0ZXJzRGVjbGFyYXRpb24gfX0pIHRocm93cyB7CiAgICAgIHZhciBwYXRoID0gc2VsZi5zZXJ2aWNlIAogICAgICBwYXRoID0gcGF0aCArICJ7eyBzZXJ2aWNlTWV0aG9kLnBhdGggfX0iCiAgICAgIC8vLXslIGZvciBzZXJ2aWNlVHlwZUZpZWxkIGluIHNlcnZpY2VNZXRob2R8cGFyYW1ldGVyc1R5cGVGaWVsZHMgJX0KICAgICAgLy8teyUgaWYgc2VydmljZVR5cGVGaWVsZC5wb3NpdGlvbiA9PSAicGF0aCIgJX0KICAgICAgcGF0aCA9IHBhdGgucmVwbGFjaW5nT2NjdXJyZW5jZXMob2Y6InsiKyJ7eyBzZXJ2aWNlVHlwZUZpZWxkLm5hbWUgfX0iKyJ9Iiwgd2l0aDoiXCh7eyBzZXJ2aWNlVHlwZUZpZWxkLm5hbWUgfX0pIikKICAgICAgLy8teyUgZW5kaWYgJX0KICAgICAgLy8teyUgZW5kZm9yICV9CiAgICAgIGd1YXJkIGxldCB1cmwgPSBVUkwoc3RyaW5nOnBhdGgpIGVsc2UgewogICAgICAgIHRocm93IENsaWVudEVycm9yLmVycm9yV2l0aENvZGUoMCkKICAgICAgfQogICAgICB2YXIgcmVxdWVzdCA9IFVSTFJlcXVlc3QodXJsOnVybCkKICAgICAgcmVxdWVzdC5odHRwTWV0aG9kID0gInt7IHNlcnZpY2VNZXRob2QubWV0aG9kIH19IgogICAgICAvLy17JSBmb3Igc2VydmljZVR5cGVGaWVsZCBpbiBzZXJ2aWNlTWV0aG9kfHBhcmFtZXRlcnNUeXBlRmllbGRzICV9CiAgICAgIC8vLXslIGlmIHNlcnZpY2VUeXBlRmllbGQucG9zaXRpb24gPT0gImJvZHkiICV9CiAgICAgIGxldCBqc29uT2JqZWN0ID0ge3sgc2VydmljZVR5cGVGaWVsZC5uYW1lIH19Lmpzb25PYmplY3QoKQogICAgICByZXF1ZXN0Lmh0dHBCb2R5ID0gdHJ5IEpTT05TZXJpYWxpemF0aW9uLmRhdGEod2l0aEpTT05PYmplY3Q6anNvbk9iamVjdCkKICAgICAgLy8teyUgZW5kaWYgJX0KICAgICAgLy8teyUgZW5kZm9yICV9CgkgIC8vLXslIGlmIHNlcnZpY2VNZXRob2R8aGFzUmVzcG9uc2VzICV9CiAgICAgIGZldGNoKHJlcXVlc3QpIHsoZGF0YSwgcmVzcG9uc2UsIGVycm9yKSBpbgogICAgICAgIGlmIGVycm9yICE9IG5pbCB7CiAgICAgICAgICBjYWxsYmFjayhuaWwsIENsaWVudEVycm9yLmVycm9yV2l0aENvZGUoMCkpCgkgIAkgIHJldHVybgogICAgICAgIH0KICAgICAgICBndWFyZCBsZXQgaHR0cFJlc3BvbnNlID0gcmVzcG9uc2UgZWxzZSB7CiAgICAgICAgICBjYWxsYmFjayhuaWwsIENsaWVudEVycm9yLmVycm9yV2l0aENvZGUoMCkpCgkJICByZXR1cm4KICAgICAgICB9CiAgICAgICAgaWYgaHR0cFJlc3BvbnNlLnN0YXR1c0NvZGUgPT0gMjAwIHsKICAgICAgICAgIGlmIGxldCBkYXRhID0gZGF0YSB7CiAgICAgICAgICAgIGxldCBqc29uT2JqZWN0ID0gdHJ5ISBKU09OU2VyaWFsaXphdGlvbi5qc29uT2JqZWN0KHdpdGg6ZGF0YSkKICAgICAgICAgICAgaWYgbGV0IHZhbHVlID0ge3sgc2VydmljZU1ldGhvZC5yZXN1bHRUeXBlTmFtZSAgfX0oanNvbk9iamVjdDpqc29uT2JqZWN0KSB7ICAgICAgICAgIAogICAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlLCBuaWwpCgkJCSAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCQkgIGNhbGxiYWNrKG5pbCwgbmlsKQoJICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjayhuaWwsIENsaWVudEVycm9yLmVycm9yV2l0aENvZGUoaHR0cFJlc3BvbnNlLnN0YXR1c0NvZGUpKQogICAgICAgIH0KCSAgfQoJICAvLy17JSBlbHNlICV9CiAgICAgIGZldGNoKHJlcXVlc3QpIHsoZGF0YSwgcmVzcG9uc2UsIGVycm9yKSBpbgogICAgICAgIGlmIGVycm9yICE9IG5pbCB7CiAgICAgICAgICBjYWxsYmFjayhDbGllbnRFcnJvci5lcnJvcldpdGhDb2RlKDApKQoJICAJICByZXR1cm4KICAgICAgICB9CiAgICAgICAgZ3VhcmQgbGV0IGh0dHBSZXNwb25zZSA9IHJlc3BvbnNlIGVsc2UgewogICAgICAgICAgY2FsbGJhY2soQ2xpZW50RXJyb3IuZXJyb3JXaXRoQ29kZSgwKSkKCQkgIHJldHVybgogICAgICAgIH0KICAgICAgICBpZiBodHRwUmVzcG9uc2Uuc3RhdHVzQ29kZSA9PSAyMDAgewoJCSAgY2FsbGJhY2sobmlsKQoJICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjayhDbGllbnRFcnJvci5lcnJvcldpdGhDb2RlKGh0dHBSZXNwb25zZS5zdGF0dXNDb2RlKSkKICAgICAgICB9CgkgIH0JICAJICAKCSAgLy8teyUgZW5kaWYgJX0JICAKICB9CiAgCiAgLy8ge3sgc2VydmljZU1ldGhvZC5kZXNjcmlwdGlvbiB9fSBTeW5jaHJvbm91cy4KICBwdWJsaWMgZnVuYyB7eyBzZXJ2aWNlTWV0aG9kLm5hbWUgfX0oe3sgc2VydmljZU1ldGhvZHxzeW5jQ2xpZW50UGFyYW1ldGVyc0RlY2xhcmF0aW9uIH19KSB0aHJvd3Mge3sgc2VydmljZU1ldGhvZHxzeW5jQ2xpZW50UmV0dXJuRGVjbGFyYXRpb24gfX0gewoJICBsZXQgc2VtID0gRGlzcGF0Y2hTZW1hcGhvcmUodmFsdWU6IDApCgkgIC8vLXslIGlmIHNlcnZpY2VNZXRob2R8aGFzUmVzcG9uc2VzICV9CgkgIHZhciByZXNwb25zZSA6IHt7IHNlcnZpY2VNZXRob2QucmVzdWx0VHlwZU5hbWUgfX0/CgkgIC8vLXslIGVuZGlmICV9CgkgIHZhciBlcnJvciA6IFN3aWZ0LkVycm9yPwoJICAvLy17JSBpZiBzZXJ2aWNlTWV0aG9kfGhhc1Jlc3BvbnNlcyAlfQkgIAoJICB0cnkge3sgc2VydmljZU1ldGhvZC5uYW1lIH19KHt7IHNlcnZpY2VNZXRob2R8cGFyYW1ldGVyRmllbGROYW1lcyB9fSkge3IsIGUgaW4KCSAgCSAgcmVzcG9uc2UgPSByIAoJICAvLy17JSBlbHNlICV9CgkgIHRyeSB7eyBzZXJ2aWNlTWV0aG9kLm5hbWUgfX0oe3sgc2VydmljZU1ldGhvZHxwYXJhbWV0ZXJGaWVsZE5hbWVzIH19KSB7ZSBpbgkgIAoJICAvLy17JSBlbmRpZiAlfQkgIAkgIAoJCSAgZXJyb3IgPSBlIAoJCSAgc2VtLnNpZ25hbCgpCgkgIH0KCSAgc2VtLndhaXQoKQoJICBpZiBsZXQgYWN0dWFsRXJyb3IgPSBlcnJvciB7CgkJICB0aHJvdyBhY3R1YWxFcnJvcgoJICB9CgkgIC8vLXslIGlmIHNlcnZpY2VNZXRob2R8aGFzUmVzcG9uc2VzICV9CSAgCgkgIGlmIGxldCBhY3R1YWxSZXNwb25zZSA9IHJlc3BvbnNlIHsKCQkgIHJldHVybiBhY3R1YWxSZXNwb25zZQoJICB9IGVsc2UgewoJCSAgdGhyb3cgQ2xpZW50RXJyb3IuZXJyb3JXaXRoQ29kZSgwKQoJICB9CgkgIC8vLXslIGVuZGlmICV9CiAgfQovLy17JSBlbmRmb3IgJX0KfQ==", + "fetch.swift": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci8vCi8vICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKaW1wb3J0IEZvdW5kYXRpb24KaW1wb3J0IERpc3BhdGNoCgovLyBmZXRjaCBtYWtlcyBhIHN5bmNocm9ub3VzIHJlcXVlc3QgdXNpbmcgVVJMU2Vzc2lvbkRhdGFUYXNrCnB1YmxpYyBmdW5jIGZldGNoKF8gdXJsUmVxdWVzdDogVVJMUmVxdWVzdCkgLT4gKERhdGE/LCBIVFRQVVJMUmVzcG9uc2U/LCBTd2lmdC5FcnJvcj8pIHsKICBsZXQgc2VtID0gRGlzcGF0Y2hTZW1hcGhvcmUodmFsdWU6IDApCiAgdmFyIHJlc3BvbnNlRGF0YTogRGF0YT8KICB2YXIgdXJsUmVzcG9uc2U6IEhUVFBVUkxSZXNwb25zZT8KICB2YXIgcmVzcG9uc2VFcnJvcjogU3dpZnQuRXJyb3I/ID0gbmlsIC8vIG1ha2UgdGhpcyBtdXRhYmxlIHdoZW4gd2Ugc3RhcnQgdXNpbmcgaXQKICBmZXRjaCh1cmxSZXF1ZXN0KSB7KGRhdGEsIHJlc3BvbnNlLCBlcnJvcikgaW4KICAgIHJlc3BvbnNlRGF0YSA9IGRhdGEKICAgIHVybFJlc3BvbnNlID0gcmVzcG9uc2UKICAgIHJlc3BvbnNlRXJyb3IgPSBlcnJvcgogICAgc2VtLnNpZ25hbCgpCiAgfQogIC8vIG5vdyB3YWl0IG9uIHRoZSBzZW1hcGhvcmUgZm9yIGEgcmVzcG9uc2UKICBsZXQgcmVzdWx0ID0gc2VtLndhaXQodGltZW91dDogRGlzcGF0Y2hUaW1lLmRpc3RhbnRGdXR1cmUpCiAgc3dpdGNoIHJlc3VsdCB7CiAgY2FzZSAuc3VjY2VzczoKICAgIHJldHVybiAocmVzcG9uc2VEYXRhLCB1cmxSZXNwb25zZSwgcmVzcG9uc2VFcnJvcikKICBkZWZhdWx0OiAvLyBpbmNsdWRlcyAudGltZW91dAogICAgcmV0dXJuIChyZXNwb25zZURhdGEsIHVybFJlc3BvbnNlLCByZXNwb25zZUVycm9yKQogIH0KfQoKLy8gZmV0Y2ggbWFrZXMgYW4gYXN5bmNocm9ub3VzIHJlcXVlc3QgdXNpbmcgVVJMU2Vzc2lvbkRhdGFUYXNrCnB1YmxpYyBmdW5jIGZldGNoKF8gdXJsUmVxdWVzdDogVVJMUmVxdWVzdCwgY2FsbGJhY2s6QGVzY2FwaW5nIChEYXRhPywgSFRUUFVSTFJlc3BvbnNlPywgU3dpZnQuRXJyb3I/KSAtPiAoKSkgewogIGxldCBzZXNzaW9uID0gVVJMU2Vzc2lvbihjb25maWd1cmF0aW9uOiBVUkxTZXNzaW9uQ29uZmlndXJhdGlvbi5kZWZhdWx0KQogIGxldCB0YXNrOiBVUkxTZXNzaW9uRGF0YVRhc2sgPSBzZXNzaW9uLmRhdGFUYXNrKHdpdGg6IHVybFJlcXVlc3QpIHsgKGRhdGEsIHJlc3BvbnNlLCBlcnJvcikgLT4gVm9pZCBpbgogICAgY2FsbGJhY2soZGF0YSwgcmVzcG9uc2UgYXM/IEhUVFBVUkxSZXNwb25zZSwgZXJyb3IpCiAgfQogIHRhc2sucmVzdW1lKCkKfQ==", + "server.swift": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci8vCi8vICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLy8gU2VydmljZSBjb2RlCgppbXBvcnQgS2l0dXJhCmltcG9ydCBLaXR1cmFOZXQKaW1wb3J0IEZvdW5kYXRpb24KCi8vIEEgc2VydmVyIHJlcXVpcmVzIGFuIGluc3RhbmNlIG9mIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgcHJvdG9jb2wuCnB1YmxpYyBwcm90b2NvbCBTZXJ2aWNlIHsKLy8teyUgZm9yIHNlcnZpY2VNZXRob2QgaW4gcmVuZGVyZXIubWV0aG9kcyAlfQogIC8vIHt7IHNlcnZpY2VNZXRob2QuZGVzY3JpcHRpb24gfX0KICBmdW5jIHt7IHNlcnZpY2VNZXRob2QubmFtZSB9fSAoe3sgc2VydmljZU1ldGhvZHxwcm90b2NvbFBhcmFtZXRlcnNEZWNsYXJhdGlvbiB9fSkgdGhyb3dzIHt7IHNlcnZpY2VNZXRob2R8cHJvdG9jb2xSZXR1cm5EZWNsYXJhdGlvbiB9fQovLy17JSBlbmRmb3IgJX0KfQoKZnVuYyBpbnRWYWx1ZShfIHM6U3RyaW5nPykgLT4gSW50NjQgewogIGd1YXJkIGxldCBzID0gcyBlbHNlIHsKICAgIHJldHVybiAwCiAgfQogIGd1YXJkIGxldCB2YWx1ZSA9IEludDY0KHMpIGVsc2UgewogICAgcmV0dXJuIDAKICB9CiAgcmV0dXJuIHZhbHVlCn0KCnB1YmxpYyBmdW5jIHNlcnZlcihzZXJ2aWNlIDogU2VydmljZSkgLT4gUm91dGVyIHsKICAvLyBDcmVhdGUgYSBuZXcgcm91dGVyCiAgbGV0IHJvdXRlciA9IFJvdXRlcigpCgovLy17JSBmb3Igc2VydmljZU1ldGhvZCBpbiByZW5kZXJlci5tZXRob2RzICV9CiAgLy8ge3sgc2VydmljZU1ldGhvZC5kZXNjcmlwdGlvbiB9fQogIHJvdXRlci57eyBzZXJ2aWNlTWV0aG9kLm1ldGhvZHxsb3dlcmNhc2UgfX0oInt7IHNlcnZpY2VNZXRob2R8a2l0dXJhUGF0aCB9fSIpIHsgcmVxLCByZXMsIG5leHQgaW4gICAgICAKICAgICAgLy8teyUgaWYgc2VydmljZU1ldGhvZHxoYXNQYXJhbWV0ZXJzICV9CiAgICAgIC8vIGluc3RhbnRpYXRlIHRoZSBwYXJhbWV0ZXJzIHN0cnVjdHVyZQogICAgICBsZXQgcGFyYW1ldGVycyA9IHt7IHNlcnZpY2VNZXRob2QucGFyYW1ldGVyc1R5cGVOYW1lIH19KCkKICAgICAgLy8teyUgZm9yIHNlcnZpY2VUeXBlRmllbGQgaW4gc2VydmljZU1ldGhvZHxwYXJhbWV0ZXJzVHlwZUZpZWxkcyAlfQogICAgICAvLy17JSBpZiBzZXJ2aWNlVHlwZUZpZWxkLnBvc2l0aW9uID09ICJwYXRoIiAlfQogICAgICBwYXJhbWV0ZXJzLnt7IHNlcnZpY2VUeXBlRmllbGQubmFtZSB9fSA9IGludFZhbHVlKHJlcS5wYXJhbWV0ZXJzWyJ7eyBzZXJ2aWNlVHlwZUZpZWxkLm5hbWUgfX0iXSkKICAgICAgLy8teyUgZW5kaWYgJX0KICAgICAgLy8teyUgZW5kZm9yICV9ICAgICAKICAgICAgLy8teyUgaWYgc2VydmljZU1ldGhvZC5tZXRob2QgPT0gIlBPU1QiICV9CiAgICAgIC8vIGRlc2VyaWFsaXplIHJlcXVlc3QgZnJvbSBwb3N0IGRhdGEKICAgICAgbGV0IGJvZHlTdHJpbmcgPSB0cnkgcmVxLnJlYWRTdHJpbmcoKSA/PyAiIgogICAgICBndWFyZCBsZXQgYm9keURhdGEgPSBib2R5U3RyaW5nLmRhdGEodXNpbmc6LnV0ZjgpIGVsc2UgewogICAgICAgIHRyeSByZXMuc2VuZChzdGF0dXM6LmJhZFJlcXVlc3QpLmVuZCgpCiAgICAgICAgcmV0dXJuCiAgICAgIH0KICAgICAgdmFyIGpzb25PYmplY3QgOiBBbnk/ID0gbmlsCiAgICAgIGRvIHsKICAgICAgICBqc29uT2JqZWN0ID0gdHJ5IEpTT05TZXJpYWxpemF0aW9uLmpzb25PYmplY3Qod2l0aDpib2R5RGF0YSkKICAgICAgfSBjYXRjaCB7CiAgICAgICAgdHJ5IHJlcy5zZW5kKHN0YXR1czouYmFkUmVxdWVzdCkuZW5kKCkKICAgICAgICByZXR1cm4KICAgICAgfQogICAgICBndWFyZCBsZXQgYm9keU9iamVjdCA9IHt7IHNlcnZpY2VNZXRob2QucmVzdWx0VHlwZU5hbWUgfX0oanNvbk9iamVjdDpqc29uT2JqZWN0KSBlbHNlIHsKICAgICAgICB0cnkgcmVzLnNlbmQoc3RhdHVzOi5iYWRSZXF1ZXN0KS5lbmQoKQogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIHBhcmFtZXRlcnMue3sgc2VydmljZU1ldGhvZHxib2R5UGFyYW1ldGVyRmllbGROYW1lIH19ID0gYm9keU9iamVjdAogICAgICAvLy17JSBlbmRpZiAlfQogICAgICAvLy17JSBlbmRpZiAlfQogICAgICAvLy17JSBpZiBzZXJ2aWNlTWV0aG9kfGhhc1BhcmFtZXRlcnMgJX0KICAgICAgLy8teyUgaWYgc2VydmljZU1ldGhvZHxoYXNSZXNwb25zZXMgJX0KICAgICAgbGV0IHJlc3BvbnNlcyA9IHRyeSBzZXJ2aWNlLnt7IHNlcnZpY2VNZXRob2QubmFtZSB9fShwYXJhbWV0ZXJzKQogICAgICAvLy17JSBlbHNlICV9CiAgICAgIHRyeSBzZXJ2aWNlLnt7IHNlcnZpY2VNZXRob2QubmFtZSB9fShwYXJhbWV0ZXJzKQogICAgICAvLy17JSBlbmRpZiAlfQogICAgICAvLy17JSBlbHNlICV9CiAgICAgIC8vLXslIGlmIHNlcnZpY2VNZXRob2R8aGFzUmVzcG9uc2VzICV9CiAgICAgIGxldCByZXNwb25zZXMgPSB0cnkgc2VydmljZS57eyBzZXJ2aWNlTWV0aG9kLm5hbWUgfX0oKQogICAgICAvLy17JSBlbHNlICV9CiAgICAgIHRyeSBzZXJ2aWNlLnt7IHNlcnZpY2VNZXRob2QubmFtZSB9fSgpCiAgICAgIC8vLXslIGVuZGlmICV9CiAgICAgIC8vLXslIGVuZGlmICV9CiAgICAgIC8vLXslIGlmIHNlcnZpY2VNZXRob2R8aGFzUmVzcG9uc2VzICV9CiAgICAgICAgLy8teyUgaWYgc2VydmljZU1ldGhvZHxyZXNwb25zZXNIYXNGaWVsZE5hbWVkT0sgJX0gICAgICAgICAgICAKICAgICAgICBpZiBsZXQgb2sgPSByZXNwb25zZXMub2sgewogICAgICAgICAgbGV0IGpzb25PYmplY3QgPSBvay5qc29uT2JqZWN0KCkKICAgICAgICAgIGxldCByZXNwb25zZURhdGEgPSB0cnkgSlNPTlNlcmlhbGl6YXRpb24uZGF0YSh3aXRoSlNPTk9iamVjdDpqc29uT2JqZWN0KQogICAgICAgICAgdHJ5IHJlcy5zZW5kKGRhdGE6cmVzcG9uc2VEYXRhKS5lbmQoKSAKICAgICAgICAgIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgfSAKICAgICAgICAvLy17JSBlbmRpZiAlfQogICAgICAgIC8vLXslIGlmIHNlcnZpY2VNZXRob2R8cmVzcG9uc2VzSGFzRmllbGROYW1lZEVycm9yICV9ICAgICAgICAgICAgICAgCiAgICAgICAgaWYgbGV0IGVycm9yUmVzcG9uc2UgPSByZXNwb25zZXMuZXJyb3IgewogICAgICAgICAgZ3VhcmQgbGV0IHN0YXR1c0NvZGUgPSBIVFRQU3RhdHVzQ29kZShyYXdWYWx1ZTpJbnQoZXJyb3JSZXNwb25zZS5jb2RlKSkgZWxzZSB7CiAgICAgICAgICAgIHRyeSByZXMuc2VuZChzdGF0dXM6LnVua25vd24pLmVuZCgpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgfQogICAgICAgICAgdHJ5IHJlcy5zZW5kKHN0YXR1czpzdGF0dXNDb2RlKS5lbmQoKQogICAgICAgICAgcmV0dXJuICAgICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIC8vLXslIGVuZGlmICV9CiAgICAgICAgdHJ5IHJlcy5zZW5kKHN0YXR1czouaW50ZXJuYWxTZXJ2ZXJFcnJvcikuZW5kKCkKICAgICAgLy8teyUgZWxzZSAlfQogICAgICB0cnkgcmVzLnNlbmQoc3RhdHVzOi5PSykuZW5kKCkKICAgICAgLy8teyUgZW5kaWYgJX0KICB9CgovLy17JSBlbmRmb3IgJX0KICByZXR1cm4gcm91dGVyCn0KCnB1YmxpYyBmdW5jIGluaXRpYWxpemUoc2VydmljZTogU2VydmljZSwgcG9ydDpJbnQpIHsKICAvLyBDcmVhdGUgYSBuZXcgcm91dGVyCiAgbGV0IHJvdXRlciA9IHNlcnZlcihzZXJ2aWNlOnNlcnZpY2UpCiAgLy8gQWRkIGFuIEhUVFAgc2VydmVyIGFuZCBjb25uZWN0IGl0IHRvIHRoZSByb3V0ZXIKICBLaXR1cmEuYWRkSFRUUFNlcnZlcihvblBvcnQ6cG9ydCwgd2l0aDogcm91dGVyKQp9CgpwdWJsaWMgZnVuYyBydW4oKSB7CiAgLy8gU3RhcnQgdGhlIEtpdHVyYSBydW5sb29wICh0aGlzIGNhbGwgbmV2ZXIgcmV0dXJucykKICBLaXR1cmEucnVuKCkKfQo=", + "types.swift": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci8vCi8vICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLy8gQ29tbW9uIHR5cGUgZGVjbGFyYXRpb25zCgovLy17JSBmb3Igc2VydmljZVR5cGUgaW4gcmVuZGVyZXIudHlwZXMgJX0KcHVibGljIGNsYXNzIHt7IHNlcnZpY2VUeXBlLm5hbWUgfX0gOiBDdXN0b21TdHJpbmdDb252ZXJ0aWJsZSB7CiAgLy8teyUgZm9yIHNlcnZpY2VUeXBlRmllbGQgaW4gc2VydmljZVR5cGUuZmllbGRzICV9CiAgcHVibGljIHZhciB7e3NlcnZpY2VUeXBlRmllbGQubmFtZX19IDoge3tzZXJ2aWNlVHlwZUZpZWxkLnR5cGVOYW1lfX0gPSB7e3NlcnZpY2VUeXBlRmllbGQuaW5pdGlhbFZhbHVlfX0KICAvLy17JSBlbmRmb3IgJX0KCiAgcHVibGljIGluaXQoKSB7fQoKLy8teyUgaWYgc2VydmljZVR5cGUuaXNJbnRlcmZhY2VUeXBlICV9CiAgcHVibGljIGluaXQ/KGpzb25PYmplY3Q6IEFueT8pIHsKICAgIGlmIGxldCBqc29uRGljdGlvbmFyeSA9IGpzb25PYmplY3QgYXM/IFtTdHJpbmc6QW55XSB7ICAKICAgICAgLy8teyUgZm9yIHNlcnZpY2VUeXBlRmllbGQgaW4gc2VydmljZVR5cGUuZmllbGRzICV9CiAgICAgIGlmIGxldCB2YWx1ZSA6IEFueSA9IGpzb25EaWN0aW9uYXJ5WyJ7eyBzZXJ2aWNlVHlwZUZpZWxkLmpzb25OYW1lIH19Il0gewogICAgICAgIC8vLXslIGlmIHNlcnZpY2VUeXBlRmllbGQuaXNBcnJheVR5cGUgJX0KICAgICAgICB2YXIgb3V0QXJyYXkgOiBbe3sgc2VydmljZVR5cGVGaWVsZC5lbGVtZW50VHlwZSB9fV0gPSBbXQogICAgICAgIGxldCBhcnJheSA9IHZhbHVlIGFzISBbQW55XQogICAgICAgIGZvciBhcnJheVZhbHVlIGluIGFycmF5IHsKICAgICAgICAgIGlmIGxldCBlbGVtZW50ID0ge3sgc2VydmljZVR5cGVGaWVsZC5lbGVtZW50VHlwZSB9fShqc29uT2JqZWN0OmFycmF5VmFsdWUpIHsKICAgICAgICAgICAgb3V0QXJyYXkuYXBwZW5kKGVsZW1lbnQpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHNlbGYue3tzZXJ2aWNlVHlwZUZpZWxkLm5hbWV9fSA9IG91dEFycmF5CiAgICAgICAgLy8teyUgZW5kaWYgJX0KICAgICAgICAvLy17JSBpZiBzZXJ2aWNlVHlwZUZpZWxkLmlzQ2FzdGFibGVUeXBlICV9CiAgICAgICAgc2VsZi57e3NlcnZpY2VUeXBlRmllbGQubmFtZX19ID0gdmFsdWUgYXMhIHt7c2VydmljZVR5cGVGaWVsZC50eXBlTmFtZX19IAogICAgICAgIC8vLXslIGVuZGlmICV9CiAgICAgICAgLy8teyUgaWYgc2VydmljZVR5cGVGaWVsZC5pc0NvbnZlcnRhYmxlVHlwZSAlfQogICAgICAgIHNlbGYue3tzZXJ2aWNlVHlwZUZpZWxkLm5hbWV9fSA9IHt7c2VydmljZVR5cGVGaWVsZC50eXBlTmFtZX19KHZhbHVlKQogICAgICAgIC8vLXslIGVuZGlmICV9CiAgICAgIH0KICAgICAgLy8teyUgZW5kZm9yICV9ICAgCiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmlsCiAgICB9CiAgfQogICAgCiAgcHVibGljIGZ1bmMganNvbk9iamVjdCgpIC0+IEFueSB7IAogICAgdmFyIHJlc3VsdCA6IFtTdHJpbmc6QW55XSA9IFs6XQogICAgLy8teyUgZm9yIHNlcnZpY2VUeXBlRmllbGQgaW4gc2VydmljZVR5cGUuZmllbGRzICV9CiAgICAvLy17JSBpZiBzZXJ2aWNlVHlwZUZpZWxkLmlzQXJyYXlUeXBlICV9CiAgICB2YXIgb3V0QXJyYXkgOiBbQW55XSA9IFtdCiAgICBmb3IgYXJyYXlWYWx1ZSBpbiBzZWxmLnt7IHNlcnZpY2VUeXBlRmllbGQubmFtZSB9fSB7CiAgICAgIG91dEFycmF5LmFwcGVuZChhcnJheVZhbHVlLmpzb25PYmplY3QoKSkKICAgIH0KICAgIHJlc3VsdFsie3sgc2VydmljZVR5cGVGaWVsZC5qc29uTmFtZSB9fSJdID0gb3V0QXJyYXkKICAgIC8vLXslIGVuZGlmICV9ICAgICAgCiAgICAvLy17JSBpZiBzZXJ2aWNlVHlwZUZpZWxkLmlzQ2FzdGFibGVUeXBlICV9CiAgICByZXN1bHRbInt7IHNlcnZpY2VUeXBlRmllbGQuanNvbk5hbWUgfX0iXSA9IHNlbGYue3tzZXJ2aWNlVHlwZUZpZWxkLm5hbWV9fSAKICAgIC8vLXslIGVuZGlmICV9ICAgICAgCiAgICAvLy17JSBpZiBzZXJ2aWNlVHlwZUZpZWxkLmlzQ29udmVydGFibGVUeXBlICV9CiAgICByZXN1bHRbInt7IHNlcnZpY2VUeXBlRmllbGQuanNvbk5hbWUgfX0iXSA9IHNlbGYue3tzZXJ2aWNlVHlwZUZpZWxkLm5hbWV9fS5qc29uT2JqZWN0KCkgCiAgICAvLy17JSBlbmRpZiAlfQogICAgLy8teyUgZW5kZm9yICV9IAogICAgcmV0dXJuIHJlc3VsdAogIH0KICAKLy8teyUgZW5kaWYgJX0KICBwdWJsaWMgdmFyIGRlc2NyaXB0aW9uOiBTdHJpbmd7CiAgICByZXR1cm4gIlt7eyBzZXJ2aWNlVHlwZS5uYW1lIH19IiArCiAgICAvLy17JSBmb3Igc2VydmljZVR5cGVGaWVsZCBpbiBzZXJ2aWNlVHlwZS5maWVsZHMgJX0KICAgICAgIiB7eyBzZXJ2aWNlVHlwZUZpZWxkLm5hbWUgfX06IFwoc2VsZi57eyBzZXJ2aWNlVHlwZUZpZWxkLm5hbWUgfX0pIiArICAgCiAgICAvLy17JSBlbmRmb3IgJX0gICAgICAKICAgICJdIgogIH0KfQoKLy8teyUgZW5kZm9yICV9", + ] +} + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/helpers.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/helpers.swift new file mode 100644 index 0000000000..87723ed407 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/helpers.swift @@ -0,0 +1,36 @@ +// Copyright 2017 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. + +import Foundation + +// Code templates use "//-" prefixes to comment-out template operators +// to keep them from interfering with Swift code formatting tools. +// Use this to remove them after templates have been expanded. +func stripMarkers(_ code:String) -> String { + let inputLines = code.components(separatedBy:"\n") + + var outputLines : [String] = [] + for line in inputLines { + if line.contains("//-") { + let removed = line.replacingOccurrences(of:"//-", with:"") + if (removed.trimmingCharacters(in:CharacterSet.whitespaces) != "") { + outputLines.append(removed) + } + } else { + outputLines.append(line) + } + } + return outputLines.joined(separator:"\n") +} + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/io.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/io.swift new file mode 100644 index 0000000000..0095ad40c1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/io.swift @@ -0,0 +1,100 @@ +// Copyright 2017 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. + +import Foundation + +// The I/O code below is derived from Apple's swift-protobuf project. +// https://github.com/apple/swift-protobuf +// BEGIN swift-protobuf derivation + +#if os(Linux) + import Glibc +#else + import Darwin.C +#endif + +enum PluginError: Error { + /// Raised for any errors reading the input + case readFailure +} + +// Alias clib's write() so Stdout.write(bytes:) can call it. +private let _write = write + +class Stdin { + static func readall() throws -> Data { + let fd: Int32 = 0 + let buffSize = 32 + var buff = [UInt8]() + while true { + var fragment = [UInt8](repeating: 0, count: buffSize) + let count = read(fd, &fragment, buffSize) + if count < 0 { + throw PluginError.readFailure + } + if count < buffSize { + buff += fragment[0..) -> () in + _ = _write(1, p, bytes.count) + } + } +} + +struct CodePrinter { + private(set) var content = "" + private var currentIndentDepth = 0 + private var currentIndent = "" + private var atLineStart = true + + mutating func print(_ text: String...) { + for t in text { + for c in t.characters { + if c == "\n" { + content.append(c) + atLineStart = true + } else { + if atLineStart { + content.append(currentIndent) + atLineStart = false + } + content.append(c) + } + } + } + } + + mutating private func resetIndent() { + currentIndent = (0.. String in return " " } .joined(separator:"") + } + + mutating func indent() { + currentIndentDepth += 1 + resetIndent() + } + mutating func outdent() { + currentIndentDepth -= 1 + resetIndent() + } +} + +// END swift-protobuf derivation diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/main.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/main.swift new file mode 100644 index 0000000000..a2ed646b6b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/main.swift @@ -0,0 +1,51 @@ +// Copyright 2017 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. + +import Foundation + +func Log(_ message : String) { + FileHandle.standardError.write((message + "\n").data(using:.utf8)!) +} + +func main() throws { + + // read the OpenAPI document + let rawRequest = try Stdin.readall() + let request = try Openapi_Plugin_V1_Request(serializedData:rawRequest) + let wrapper = request.wrapper + let document = try Openapi_V2_Document(serializedData:wrapper.value) + + // build the service renderer + let renderer = ServiceRenderer(document:document) + + // generate the desired files + var response = Openapi_Plugin_V1_Response() + + var filenames : [String] + switch CommandLine.arguments[0] { + case "openapi_swift_client": + filenames = ["client.swift", "types.swift", "fetch.swift"] + case "openapi_swift_server": + filenames = ["server.swift", "types.swift"] + default: + filenames = ["client.swift", "server.swift", "types.swift", "fetch.swift"] + } + try renderer.generate(filenames:filenames, response:&response) + + // return the results + let serializedResponse = try response.serializedData() + Stdout.write(bytes: serializedResponse) +} + +try main() diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/plugin.pb.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/plugin.pb.swift new file mode 100644 index 0000000000..9eb8f3ec27 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Sources/gnostic-swift-generator/plugin.pb.swift @@ -0,0 +1,497 @@ +// DO NOT EDIT. +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: plugin.proto +// +// For information on using the generated types, please see the documenation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2017 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. + +// openapic (aka the OpenAPI Compiler) can be extended via plugins. +// A plugin is just a program that reads a Request from stdin +// and writes a Response to stdout. +// +// A plugin executable needs only to be placed somewhere in the path. The +// plugin should be named "openapi_$NAME", and will then be used when the +// flag "--${NAME}_out" is passed to openapic. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that your are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +/// The version number of OpenAPI compiler. +struct Openapi_Plugin_V1_Version: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Version" + + var major: Int32 = 0 + + var minor: Int32 = 0 + + var patch: Int32 = 0 + + /// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + /// be empty for mainline stable releases. + var suffix: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularInt32Field(value: &self.major) + case 2: try decoder.decodeSingularInt32Field(value: &self.minor) + case 3: try decoder.decodeSingularInt32Field(value: &self.patch) + case 4: try decoder.decodeSingularStringField(value: &self.suffix) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if self.major != 0 { + try visitor.visitSingularInt32Field(value: self.major, fieldNumber: 1) + } + if self.minor != 0 { + try visitor.visitSingularInt32Field(value: self.minor, fieldNumber: 2) + } + if self.patch != 0 { + try visitor.visitSingularInt32Field(value: self.patch, fieldNumber: 3) + } + if !self.suffix.isEmpty { + try visitor.visitSingularStringField(value: self.suffix, fieldNumber: 4) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// A parameter passed to the plugin from (or through) the OpenAPI compiler. +struct Openapi_Plugin_V1_Parameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Parameter" + + /// The name of the parameter as specified in the option string + var name: String = String() + + /// The parameter value as specified in the option string + var value: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.value.isEmpty { + try visitor.visitSingularStringField(value: self.value, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// An encoded Request is written to the plugin's stdin. +struct Openapi_Plugin_V1_Request: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Request" + + /// A wrapped OpenAPI document to process. + var wrapper: Openapi_Plugin_V1_Wrapper { + get {return _storage._wrapper ?? Openapi_Plugin_V1_Wrapper()} + set {_uniqueStorage()._wrapper = newValue} + } + /// Returns true if `wrapper` has been explicitly set. + var hasWrapper: Bool {return _storage._wrapper != nil} + /// Clears the value of `wrapper`. Subsequent reads from it will return its default value. + mutating func clearWrapper() {_storage._wrapper = nil} + + /// Output path specified in the plugin invocation. + var outputPath: String { + get {return _storage._outputPath} + set {_uniqueStorage()._outputPath = newValue} + } + + /// Plugin parameters parsed from the invocation string. + var parameters: [Openapi_Plugin_V1_Parameter] { + get {return _storage._parameters} + set {_uniqueStorage()._parameters = newValue} + } + + /// The version number of openapi compiler. + var compilerVersion: Openapi_Plugin_V1_Version { + get {return _storage._compilerVersion ?? Openapi_Plugin_V1_Version()} + set {_uniqueStorage()._compilerVersion = newValue} + } + /// Returns true if `compilerVersion` has been explicitly set. + var hasCompilerVersion: Bool {return _storage._compilerVersion != nil} + /// Clears the value of `compilerVersion`. Subsequent reads from it will return its default value. + mutating func clearCompilerVersion() {_storage._compilerVersion = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularMessageField(value: &_storage._wrapper) + case 2: try decoder.decodeSingularStringField(value: &_storage._outputPath) + case 3: try decoder.decodeRepeatedMessageField(value: &_storage._parameters) + case 4: try decoder.decodeSingularMessageField(value: &_storage._compilerVersion) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._wrapper { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } + if !_storage._outputPath.isEmpty { + try visitor.visitSingularStringField(value: _storage._outputPath, fieldNumber: 2) + } + if !_storage._parameters.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._parameters, fieldNumber: 3) + } + if let v = _storage._compilerVersion { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// The plugin writes an encoded Response to stdout. +struct Openapi_Plugin_V1_Response: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Response" + + /// Error message. If non-empty, the plugin failed. + /// The plugin process should exit with status code zero + /// even if it reports an error in this way. + /// + /// This should be used to indicate errors which prevent the plugin from + /// operating as intended. Errors which indicate a problem in openapic + /// itself -- such as the input Document being unparseable -- should be + /// reported by writing a message to stderr and exiting with a non-zero + /// status code. + var errors: [String] = [] + + /// file output, each file will be written by openapic to an appropriate location. + var files: [Openapi_Plugin_V1_File] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &self.errors) + case 2: try decoder.decodeRepeatedMessageField(value: &self.files) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.errors.isEmpty { + try visitor.visitRepeatedStringField(value: self.errors, fieldNumber: 1) + } + if !self.files.isEmpty { + try visitor.visitRepeatedMessageField(value: self.files, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// File describes a file generated by a plugin. +struct Openapi_Plugin_V1_File: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".File" + + /// name of the file + var name: String = String() + + /// data to be written to the file + var data: Data = SwiftProtobuf.Internal.emptyData + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularBytesField(value: &self.data) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.data.isEmpty { + try visitor.visitSingularBytesField(value: self.data, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Wrapper wraps an OpenAPI document with its version. +struct Openapi_Plugin_V1_Wrapper: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Wrapper" + + /// filename or URL of the wrapped document + var name: String = String() + + /// version of the OpenAPI specification that is used by the wrapped document + var version: String = String() + + /// valid serialized protocol buffer of the named OpenAPI specification version + var value: Data = SwiftProtobuf.Internal.emptyData + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.version) + case 3: try decoder.decodeSingularBytesField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.version.isEmpty { + try visitor.visitSingularStringField(value: self.version, fieldNumber: 2) + } + if !self.value.isEmpty { + try visitor.visitSingularBytesField(value: self.value, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "openapi.plugin.v1" + +extension Openapi_Plugin_V1_Version: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "major"), + 2: .same(proto: "minor"), + 3: .same(proto: "patch"), + 4: .same(proto: "suffix"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Version) -> Bool { + if self.major != other.major {return false} + if self.minor != other.minor {return false} + if self.patch != other.patch {return false} + if self.suffix != other.suffix {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Parameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Parameter) -> Bool { + if self.name != other.name {return false} + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Request: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "wrapper"), + 2: .standard(proto: "output_path"), + 3: .same(proto: "parameters"), + 4: .standard(proto: "compiler_version"), + ] + + fileprivate class _StorageClass { + var _wrapper: Openapi_Plugin_V1_Wrapper? = nil + var _outputPath: String = String() + var _parameters: [Openapi_Plugin_V1_Parameter] = [] + var _compilerVersion: Openapi_Plugin_V1_Version? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _wrapper = source._wrapper + _outputPath = source._outputPath + _parameters = source._parameters + _compilerVersion = source._compilerVersion + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Request) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._wrapper != other_storage._wrapper {return false} + if _storage._outputPath != other_storage._outputPath {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._compilerVersion != other_storage._compilerVersion {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Response: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "errors"), + 2: .same(proto: "files"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Response) -> Bool { + if self.errors != other.errors {return false} + if self.files != other.files {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_File: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "data"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_File) -> Bool { + if self.name != other.name {return false} + if self.data != other.data {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Wrapper: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "version"), + 3: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Wrapper) -> Bool { + if self.name != other.name {return false} + if self.version != other.version {return false} + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/client.swift.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/client.swift.tmpl new file mode 100644 index 0000000000..f79e99bb47 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/client.swift.tmpl @@ -0,0 +1,123 @@ +// Copyright 2017 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. + +// Client code + +import Foundation +import Dispatch + +enum ClientError: Swift.Error { + case errorWithCode(Int) +} + +public class Client { + var service : String + + public init(service: String) { + self.service = service + } +//-{% for serviceMethod in renderer.methods %} + + // {{ serviceMethod.description }} Asynchronous. + public func {{ serviceMethod.name }}({{ serviceMethod|asyncClientParametersDeclaration }}) throws { + var path = self.service + path = path + "{{ serviceMethod.path }}" + //-{% for serviceTypeField in serviceMethod|parametersTypeFields %} + //-{% if serviceTypeField.position == "path" %} + path = path.replacingOccurrences(of:"{"+"{{ serviceTypeField.name }}"+"}", with:"\({{ serviceTypeField.name }})") + //-{% endif %} + //-{% endfor %} + guard let url = URL(string:path) else { + throw ClientError.errorWithCode(0) + } + var request = URLRequest(url:url) + request.httpMethod = "{{ serviceMethod.method }}" + //-{% for serviceTypeField in serviceMethod|parametersTypeFields %} + //-{% if serviceTypeField.position == "body" %} + let jsonObject = {{ serviceTypeField.name }}.jsonObject() + request.httpBody = try JSONSerialization.data(withJSONObject:jsonObject) + //-{% endif %} + //-{% endfor %} + //-{% if serviceMethod|hasResponses %} + fetch(request) {(data, response, error) in + if error != nil { + callback(nil, ClientError.errorWithCode(0)) + return + } + guard let httpResponse = response else { + callback(nil, ClientError.errorWithCode(0)) + return + } + if httpResponse.statusCode == 200 { + if let data = data { + let jsonObject = try! JSONSerialization.jsonObject(with:data) + if let value = {{ serviceMethod.resultTypeName }}(jsonObject:jsonObject) { + callback(value, nil) + return + } + } + callback(nil, nil) + } else { + callback(nil, ClientError.errorWithCode(httpResponse.statusCode)) + } + } + //-{% else %} + fetch(request) {(data, response, error) in + if error != nil { + callback(ClientError.errorWithCode(0)) + return + } + guard let httpResponse = response else { + callback(ClientError.errorWithCode(0)) + return + } + if httpResponse.statusCode == 200 { + callback(nil) + } else { + callback(ClientError.errorWithCode(httpResponse.statusCode)) + } + } + //-{% endif %} + } + + // {{ serviceMethod.description }} Synchronous. + public func {{ serviceMethod.name }}({{ serviceMethod|syncClientParametersDeclaration }}) throws {{ serviceMethod|syncClientReturnDeclaration }} { + let sem = DispatchSemaphore(value: 0) + //-{% if serviceMethod|hasResponses %} + var response : {{ serviceMethod.resultTypeName }}? + //-{% endif %} + var error : Swift.Error? + //-{% if serviceMethod|hasResponses %} + try {{ serviceMethod.name }}({{ serviceMethod|parameterFieldNames }}) {r, e in + response = r + //-{% else %} + try {{ serviceMethod.name }}({{ serviceMethod|parameterFieldNames }}) {e in + //-{% endif %} + error = e + sem.signal() + } + sem.wait() + if let actualError = error { + throw actualError + } + //-{% if serviceMethod|hasResponses %} + if let actualResponse = response { + return actualResponse + } else { + throw ClientError.errorWithCode(0) + } + //-{% endif %} + } +//-{% endfor %} +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/fetch.swift.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/fetch.swift.tmpl new file mode 100644 index 0000000000..632c55cd39 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/fetch.swift.tmpl @@ -0,0 +1,143 @@ +// Copyright 2017 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. + +import Foundation +import Dispatch +import KituraNet + +// fetch makes a synchronous request using KituraNet's ClientRequest class +// https://github.com/IBM-Swift/Kitura-net/blob/master/Sources/KituraNet/ClientRequest.swift +public func fetch(_ urlRequest: URLRequest) -> (Data?, HTTPURLResponse?, Error?) { + var data: Data? + var urlResponse: HTTPURLResponse? + let error: Error? = nil // make this mutable when we start using it + let sem = DispatchSemaphore(value: 0) + guard let method = urlRequest.httpMethod else { + return (data, urlResponse, error) + } + guard let url = urlRequest.url else { + return (data, urlResponse, error) + } + guard let scheme = url.scheme else { + return (data, urlResponse, error) + } + guard let host = url.host else { + return (data, urlResponse, error) + } + guard let port = url.port else { + return (data, urlResponse, error) + } + let options : [ClientRequest.Options] = [ + .method(method), + .schema(scheme), + .hostname(host), + .port(Int16(port)), + .path(url.path), + // headers, etc + ] + let request = HTTP.request(options) { (response) in + guard let response = response else { + sem.signal() + return + } + var responseData = Data() + do { + let code = response.httpStatusCode + try response.readAllData(into: &responseData) + data = responseData + urlResponse = HTTPURLResponse(url:url, + statusCode:code.rawValue, + httpVersion:"HTTP/1.1", + headerFields:[:]) + sem.signal() + return + } catch { + sem.signal() + return + } + } + if let requestData = urlRequest.httpBody { + request.write(from:requestData) + } + request.end() // send the request + // now wait on the semaphore for a response + let result = sem.wait(timeout: DispatchTime.distantFuture) + switch result { + case .success: + return (data, urlResponse, error) + default: // includes .timeout + return (data, urlResponse, error) + } +} + +// fetch makes an asynchronous request using KituraNet's ClientRequest class +// https://github.com/IBM-Swift/Kitura-net/blob/master/Sources/KituraNet/ClientRequest.swift +public func fetch(_ urlRequest: URLRequest, callback:@escaping (Data?, HTTPURLResponse?, Error?) -> ()) { + var data: Data? + var urlResponse: HTTPURLResponse? + let error: Error? = nil // make this mutable when we start using it + guard let method = urlRequest.httpMethod else { + callback (data, urlResponse, error) + return + } + guard let url = urlRequest.url else { + callback (data, urlResponse, error) + return + } + guard let scheme = url.scheme else { + callback (data, urlResponse, error) + return + } + guard let host = url.host else { + callback (data, urlResponse, error) + return + } + guard let port = url.port else { + callback (data, urlResponse, error) + return + } + let options : [ClientRequest.Options] = [ + .method(method), + .schema(scheme), + .hostname(host), + .port(Int16(port)), + .path(url.path), + // headers, etc + ] + let request = HTTP.request(options) { (response) in + guard let response = response else { + callback (data, urlResponse, nil) + return + } + var responseData = Data() + do { + let code = response.httpStatusCode + try response.readAllData(into: &responseData) + data = responseData + urlResponse = HTTPURLResponse(url:url, + statusCode:code.rawValue, + httpVersion:"HTTP/1.1", + headerFields:[:]) + callback (data, urlResponse, nil) + return + } catch { + callback (data, urlResponse, nil) + return + } + } + if let requestData = urlRequest.httpBody { + request.write(from:requestData) + } + request.end() // send the request +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/server.swift.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/server.swift.tmpl new file mode 100644 index 0000000000..b296d3aa01 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/server.swift.tmpl @@ -0,0 +1,127 @@ +// Copyright 2017 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. + +// Service code + +import Kitura +import KituraNet +import Foundation + +// A server requires an instance of an implementation of this protocol. +public protocol Service { +//-{% for serviceMethod in renderer.methods %} + // {{ serviceMethod.description }} + func {{ serviceMethod.name }} ({{ serviceMethod|protocolParametersDeclaration }}) throws {{ serviceMethod|protocolReturnDeclaration }} +//-{% endfor %} +} + +func intValue(_ s:String?) -> Int64 { + guard let s = s else { + return 0 + } + guard let value = Int64(s) else { + return 0 + } + return value +} + +public func server(service : Service) -> Router { + // Create a new router + let router = Router() + +//-{% for serviceMethod in renderer.methods %} + // {{ serviceMethod.description }} + router.{{ serviceMethod.method|lowercase }}("{{ serviceMethod|kituraPath }}") { req, res, next in + //-{% if serviceMethod|hasParameters %} + // instantiate the parameters structure + let parameters = {{ serviceMethod.parametersTypeName }}() + //-{% for serviceTypeField in serviceMethod|parametersTypeFields %} + //-{% if serviceTypeField.position == "path" %} + parameters.{{ serviceTypeField.name }} = intValue(req.parameters["{{ serviceTypeField.name }}"]) + //-{% endif %} + //-{% endfor %} + //-{% if serviceMethod.method == "POST" %} + // deserialize request from post data + let bodyString = try req.readString() ?? "" + guard let bodyData = bodyString.data(using:.utf8) else { + try res.send(status:.badRequest).end() + return + } + var jsonObject : Any? = nil + do { + jsonObject = try JSONSerialization.jsonObject(with:bodyData) + } catch { + try res.send(status:.badRequest).end() + return + } + guard let bodyObject = {{ serviceMethod.resultTypeName }}(jsonObject:jsonObject) else { + try res.send(status:.badRequest).end() + return + } + parameters.{{ serviceMethod|bodyParameterFieldName }} = bodyObject + //-{% endif %} + //-{% endif %} + //-{% if serviceMethod|hasParameters %} + //-{% if serviceMethod|hasResponses %} + let responses = try service.{{ serviceMethod.name }}(parameters) + //-{% else %} + try service.{{ serviceMethod.name }}(parameters) + //-{% endif %} + //-{% else %} + //-{% if serviceMethod|hasResponses %} + let responses = try service.{{ serviceMethod.name }}() + //-{% else %} + try service.{{ serviceMethod.name }}() + //-{% endif %} + //-{% endif %} + //-{% if serviceMethod|hasResponses %} + //-{% if serviceMethod|responsesHasFieldNamedOK %} + if let ok = responses.ok { + let jsonObject = ok.jsonObject() + let responseData = try JSONSerialization.data(withJSONObject:jsonObject) + try res.send(data:responseData).end() + return + } + //-{% endif %} + //-{% if serviceMethod|responsesHasFieldNamedError %} + if let errorResponse = responses.error { + guard let statusCode = HTTPStatusCode(rawValue:Int(errorResponse.code)) else { + try res.send(status:.unknown).end() + return + } + try res.send(status:statusCode).end() + return + } + //-{% endif %} + try res.send(status:.internalServerError).end() + //-{% else %} + try res.send(status:.OK).end() + //-{% endif %} + } + +//-{% endfor %} + return router +} + +public func initialize(service: Service, port:Int) { + // Create a new router + let router = server(service:service) + // Add an HTTP server and connect it to the router + Kitura.addHTTPServer(onPort:port, with: router) +} + +public func run() { + // Start the Kitura runloop (this call never returns) + Kitura.run() +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/types.swift.tmpl b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/types.swift.tmpl new file mode 100644 index 0000000000..26c7fa47e4 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/Templates/types.swift.tmpl @@ -0,0 +1,83 @@ +// Copyright 2017 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. + +// Common type declarations + +//-{% for serviceType in renderer.types %} +public class {{ serviceType.name }} : CustomStringConvertible { + //-{% for serviceTypeField in serviceType.fields %} + public var {{serviceTypeField.name}} : {{serviceTypeField.typeName}} = {{serviceTypeField.initialValue}} + //-{% endfor %} + + public init() {} + +//-{% if serviceType.isInterfaceType %} + public init?(jsonObject: Any?) { + if let jsonDictionary = jsonObject as? [String:Any] { + //-{% for serviceTypeField in serviceType.fields %} + if let value : Any = jsonDictionary["{{ serviceTypeField.jsonName }}"] { + //-{% if serviceTypeField.isArrayType %} + var outArray : [{{ serviceTypeField.elementType }}] = [] + let array = value as! [Any] + for arrayValue in array { + if let element = {{ serviceTypeField.elementType }}(jsonObject:arrayValue) { + outArray.append(element) + } + } + self.{{serviceTypeField.name}} = outArray + //-{% endif %} + //-{% if serviceTypeField.isCastableType %} + self.{{serviceTypeField.name}} = value as! {{serviceTypeField.typeName}} + //-{% endif %} + //-{% if serviceTypeField.isConvertableType %} + self.{{serviceTypeField.name}} = {{serviceTypeField.typeName}}(value) + //-{% endif %} + } + //-{% endfor %} + } else { + return nil + } + } + + public func jsonObject() -> Any { + var result : [String:Any] = [:] + //-{% for serviceTypeField in serviceType.fields %} + //-{% if serviceTypeField.isArrayType %} + var outArray : [Any] = [] + for arrayValue in self.{{ serviceTypeField.name }} { + outArray.append(arrayValue.jsonObject()) + } + result["{{ serviceTypeField.jsonName }}"] = outArray + //-{% endif %} + //-{% if serviceTypeField.isCastableType %} + result["{{ serviceTypeField.jsonName }}"] = self.{{serviceTypeField.name}} + //-{% endif %} + //-{% if serviceTypeField.isConvertableType %} + result["{{ serviceTypeField.jsonName }}"] = self.{{serviceTypeField.name}}.jsonObject() + //-{% endif %} + //-{% endfor %} + return result + } + +//-{% endif %} + public var description: String{ + return "[{{ serviceType.name }}" + + //-{% for serviceTypeField in serviceType.fields %} + " {{ serviceTypeField.name }}: \(self.{{ serviceTypeField.name }})" + + //-{% endfor %} + "]" + } +} + +//-{% endfor %} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Makefile new file mode 100644 index 0000000000..6d145622dd --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Makefile @@ -0,0 +1,9 @@ + +all: + rm -f gnostic-swift-generator + ln -s ../../gnostic-swift-generator + gnostic bookstore.json --swift-generator-out=Sources/Bookstore + swift build + +test: + swift test diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Package.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Package.swift new file mode 100644 index 0000000000..c41f52c352 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Package.swift @@ -0,0 +1,27 @@ +// Copyright 2017 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. + +import PackageDescription + +let package = Package( + name: "BookstoreExample", + targets: [ + Target(name: "Server", + dependencies: ["Bookstore"]), + ], + dependencies: [ + .Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 7) + ] +) + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/README.md new file mode 100644 index 0000000000..ee9fb3bad2 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/README.md @@ -0,0 +1,22 @@ +# Bookstore Example + +This directory contains an OpenAPI description of a simple bookstore API. + +Use this example to try the `openapi_swift_generator` plugin, which +generates Swift code that implements an API client and server for +an OpenAPI description. + +Run `make all` to build and install `openapic` and the Swift plugin. +It will generate both client and server code. The API client and +server code will be in the `Sources/Bookstore` package. + +The `Sources/Server` directory contains additional code that completes the server. +To build and run the server, do the following: + + swift build + .build/debug/Server & + +To test the service with the generated client, run `swift build`. +Tests are in the `Tests` directory and use client +code generated in `Bookstore` to verify the service. + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Sources/Server/main.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Sources/Server/main.swift new file mode 100644 index 0000000000..f8f43cfe97 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Sources/Server/main.swift @@ -0,0 +1,128 @@ +// Copyright 2017 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. + +import Bookstore + +class Server : Service { + private var shelves : [Int64:Shelf] = [:] + private var books : [Int64:[Int64:Book]] = [:] + private var lastShelfIndex : Int64 = 0 + private var lastBookIndex : Int64 = 0 + + // Return all shelves in the bookstore. + func listShelves () throws -> ListShelvesResponses { + let responses = ListShelvesResponses() + let response = ListShelvesResponse() + var shelves : [Shelf] = [] + for pair in self.shelves { + shelves.append(pair.value) + } + response.shelves = shelves + responses.ok = response + return responses + } + // Create a new shelf in the bookstore. + func createShelf (_ parameters : CreateShelfParameters) throws -> CreateShelfResponses { + lastShelfIndex += 1 + let shelf = parameters.shelf + shelf.name = "shelves/\(lastShelfIndex)" + shelves[lastShelfIndex] = shelf + let responses = CreateShelfResponses() + responses.ok = shelf + return responses + } + // Delete all shelves. + func deleteShelves () throws { + shelves = [:] + books = [:] + lastShelfIndex = 0 + lastBookIndex = 0 + } + // Get a single shelf resource with the given ID. + func getShelf (_ parameters : GetShelfParameters) throws -> GetShelfResponses { + let responses = GetShelfResponses() + if let shelf : Shelf = shelves[parameters.shelf] { + responses.ok = shelf + } else { + let err = Error() + err.code = 404 + err.message = "not found" + responses.error = err + } + return responses + } + // Delete a single shelf with the given ID. + func deleteShelf (_ parameters : DeleteShelfParameters) throws { + shelves[parameters.shelf] = nil + books[parameters.shelf] = nil + } + // Return all books in a shelf with the given ID. + func listBooks (_ parameters : ListBooksParameters) throws -> ListBooksResponses { + let responses = ListBooksResponses() + let response = ListBooksResponse() + var books : [Book] = [] + if let shelfBooks = self.books[parameters.shelf] { + for pair in shelfBooks { + books.append(pair.value) + } + } + response.books = books + responses.ok = response + return responses + } + // Create a new book on the shelf. + func createBook (_ parameters : CreateBookParameters) throws -> CreateBookResponses { + let responses = CreateBookResponses() + lastBookIndex += 1 + let shelf = parameters.shelf + let book = parameters.book + book.name = "shelves/\(shelf)/books/\(lastBookIndex)" + if var shelfBooks = self.books[shelf] { + shelfBooks[lastBookIndex] = book + self.books[shelf] = shelfBooks + } else { + var shelfBooks : [Int64:Book] = [:] + shelfBooks[lastBookIndex] = book + self.books[shelf] = shelfBooks + } + responses.ok = book + return responses + } + // Get a single book with a given ID from a shelf. + func getBook (_ parameters : GetBookParameters) throws -> GetBookResponses { + let responses = GetBookResponses() + if let shelfBooks = self.books[parameters.shelf], + let book = shelfBooks[parameters.book] { + responses.ok = book + } else { + let err = Error() + err.code = 404 + err.message = "not found" + responses.error = err + } + return responses + } + // Delete a single book with a given ID from a shelf. + func deleteBook (_ parameters : DeleteBookParameters) throws { + if var shelfBooks = self.books[parameters.shelf] { + shelfBooks[parameters.book] = nil + self.books[parameters.shelf] = shelfBooks + } + } +} + +initialize(service:Server(), port:8080) + +run() + diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Tests/BookstoreTests/BookstoreTests.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Tests/BookstoreTests/BookstoreTests.swift new file mode 100644 index 0000000000..1cd2afec07 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Tests/BookstoreTests/BookstoreTests.swift @@ -0,0 +1,208 @@ +/* + * + * Copyright 2017, 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. + * + */ +import XCTest +import Foundation +@testable import Bookstore + +func Log(_ message : String) { + FileHandle.standardError.write((message + "\n").data(using:.utf8)!) +} + +let service = "http://localhost:8080" + +class BookstoreTests: XCTestCase { + + func testBasic() { + // create a client + let b = Bookstore.Client(service:service) + Log("// reset the service by deleting all shelves") + do { + try b.deleteShelves() + } catch (let error) { + XCTFail("\(error)") + } + Log("// verify that the service has no shelves") + do { + let response = try b.listShelves() + XCTAssertEqual(response.shelves.count, 0) + } catch (let error) { + XCTFail("\(error)") + } + Log("// attempting to get a shelf should return an error") + do { + let _ = try b.getShelf(shelf:1) + XCTFail("server error") + } catch { + } + Log("// attempting to get a book should return an error") + do { + let _ = try b.getBook(shelf:1, book:2) + } catch { + } + Log("// add a shelf") + do { + let shelf = Shelf() + shelf.theme = "mysteries" + let response = try b.createShelf(shelf:shelf) + if (response.name != "shelves/1") || + (response.theme != "mysteries") { + XCTFail("mismatch") + } + } catch (let error) { + XCTFail("\(error)") + } + Log("// add another shelf") + do { + let shelf = Shelf() + shelf.theme = "comedies" + let response = try b.createShelf(shelf:shelf) + if (response.name != "shelves/2") || + (response.theme != "comedies") { + XCTFail("mismatch") + } + } catch (let error) { + XCTFail("\(error)") + } + Log("// get the first shelf that was added") + do { + let response = try b.getShelf(shelf:1) + if (response.name != "shelves/1") || + (response.theme != "mysteries") { + XCTFail("mismatch") + } + } catch (let error) { + XCTFail("\(error)") + } + Log("// list shelves and verify that there are 2") + do { + let response = try b.listShelves() + XCTAssertEqual(response.shelves.count, 2) + } catch (let error) { + XCTFail("\(error)") + } + Log("// delete a shelf") + do { + try b.deleteShelf(shelf:2) + } catch (let error) { + XCTFail("\(error)") + } + Log("// list shelves and verify that there is only 1") + do { + let response = try b.listShelves() + XCTAssertEqual(response.shelves.count, 1) + } catch (let error) { + XCTFail("\(error)") + } + Log("// list books on a shelf, verify that there are none") + do { + let response = try b.listBooks(shelf:1) + XCTAssertEqual(response.books.count, 0) + } catch (let error) { + XCTFail("\(error)") + } + Log("// create a book") + do { + let book = Book() + book.author = "Agatha Christie" + book.title = "And Then There Were None" + let _ = try b.createBook(shelf:1, book:book) + } catch (let error) { + XCTFail("\(error)") + } + Log("// create another book") + do { + let book = Book() + book.author = "Agatha Christie" + book.title = "Murder on the Orient Express" + let _ = try b.createBook(shelf:1, book:book) + } catch (let error) { + XCTFail("\(error)") + } + Log("// get the first book that was added") + do { + let response = try b.getBook(shelf:1, book:1) + if (response.author != "Agatha Christie") || + (response.title != "And Then There Were None") { + XCTFail("mismatch") + } + } catch (let error) { + XCTFail("\(error)") + } + Log("// list the books on a shelf and verify that there are 2") + do { + let response = try b.listBooks(shelf:1) + XCTAssertEqual(response.books.count, 2) + } catch (let error) { + XCTFail("\(error)") + } + Log("// delete a book") + do { + try b.deleteBook(shelf:1, book:2) + } catch (let error) { + XCTFail("\(error)") + } + Log("// list the books on a shelf and verify that is only 1") + do { + let response = try b.listBooks(shelf:1) + XCTAssertEqual(response.books.count, 1) + } catch (let error) { + XCTFail("\(error)") + } + Log("// verify the handling of a badly-formed request") + var path = service + path = path + "/shelves" + guard let url = URL(string:path) else { + XCTFail("Failed to construct URL") + return + } + var request = URLRequest(url:url) + request.httpMethod = "POST" + request.httpBody = "".data(using:.utf8) + let (_, response, _) = fetch(request) + // we expect a 400 (Bad Request) code + if let response = response { + XCTAssertEqual(response.statusCode, 400) + } else { + // Failed requests are returning nil responses on Linux. For now we'll say that is OK. + //XCTFail("Null response for bad request") + } + } +} + +extension BookstoreTests { + static var allTests : [(String, (BookstoreTests) -> () throws -> Void)] { + return [ + ("testBasic", testBasic), + ] + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Tests/LinuxMain.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Tests/LinuxMain.swift new file mode 100644 index 0000000000..5b1e580087 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/Tests/LinuxMain.swift @@ -0,0 +1,38 @@ +/* + * + * Copyright 2017, 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. + * + */ +import XCTest +@testable import BookstoreTests + +XCTMain([ + testCase(BookstoreTests.allTests), +]) diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/bookstore.json b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/bookstore.json new file mode 100644 index 0000000000..c823cdedf3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-generator/examples/bookstore/bookstore.json @@ -0,0 +1,357 @@ +{ + "swagger": "2.0", + "info": { + "description": "A simple Bookstore API example.", + "title": "Bookstore", + "version": "1.0.0" + }, + "host": "generated-bookstore.appspot.com", + "basePath": "/", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "schemes": [ + "https" + ], + "paths": { + "/shelves": { + "get": { + "description": "Return all shelves in the bookstore.", + "operationId": "listShelves", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "List of shelves in the bookstore.", + "schema": { + "$ref": "#/definitions/listShelvesResponse" + } + } + }, + "security": [ + + ] + }, + "post": { + "description": "Create a new shelf in the bookstore.", + "operationId": "createShelf", + "parameters": [ + { + "description": "A shelf resource to create.", + "in": "body", + "name": "shelf", + "required": true, + "schema": { + "$ref": "#/definitions/shelf" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A newly created shelf resource.", + "schema": { + "$ref": "#/definitions/shelf" + } + } + } + }, + "delete": { + "description": "Delete all shelves.", + "operationId": "deleteShelves", + "responses": { + "default": { + "description": "An empty response body." + } + } + } + }, + "/shelves/{shelf}": { + "get": { + "description": "Get a single shelf resource with the given ID.", + "operationId": "getShelf", + "parameters": [ + { + "description": "ID of the shelf to get.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A shelf resource.", + "schema": { + "$ref": "#/definitions/shelf" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "delete": { + "description": "Delete a single shelf with the given ID.", + "operationId": "deleteShelf", + "parameters": [ + { + "description": "ID of the shelf to delete.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + } + ], + "responses": { + "default": { + "description": "An empty response body." + } + } + } + }, + "/shelves/{shelf}/books": { + "get": { + "description": "Return all books in a shelf with the given ID.", + "operationId": "listBooks", + "parameters": [ + { + "description": "ID of the shelf whose books should be returned.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "List of books on the specified shelf.", + "schema": { + "$ref": "#/definitions/listBooksResponse" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "post": { + "description": "Create a new book on the shelf.", + "operationId": "createBook", + "parameters": [ + { + "description": "ID of the shelf where the book should be created.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + }, + { + "description": "Book to create.", + "in": "body", + "name": "book", + "required": true, + "schema": { + "$ref": "#/definitions/book" + } + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A newly created book resource.", + "schema": { + "$ref": "#/definitions/book" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + } + }, + "/shelves/{shelf}/books/{book}": { + "get": { + "description": "Get a single book with a given ID from a shelf.", + "operationId": "getBook", + "parameters": [ + { + "description": "ID of the shelf from which to get the book.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + }, + { + "description": "ID of the book to get from the shelf.", + "format": "int64", + "in": "path", + "name": "book", + "required": true, + "type": "integer" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "A book resource.", + "schema": { + "$ref": "#/definitions/book" + } + }, + "default": { + "description": "unexpected error", + "schema": { + "$ref": "#/definitions/Error" + } + } + } + }, + "delete": { + "description": "Delete a single book with a given ID from a shelf.", + "operationId": "deleteBook", + "parameters": [ + { + "description": "ID of the shelf from which to delete the book.", + "format": "int64", + "in": "path", + "name": "shelf", + "required": true, + "type": "integer" + }, + { + "description": "ID of the book to delete from the shelf.", + "format": "int64", + "in": "path", + "name": "book", + "required": true, + "type": "integer" + } + ], + "responses": { + "default": { + "description": "An empty response body." + } + } + } + } + }, + "definitions": { + "book": { + "properties": { + "author": { + "type": "string" + }, + "name": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "name", + "author", + "title" + ] + }, + "listBooksResponse": { + "properties": { + "books": { + "items": { + "$ref": "#/definitions/book" + }, + "type": "array" + } + }, + "required": [ + "books" + ], + "type": "object" + }, + "listShelvesResponse": { + "properties": { + "shelves": { + "items": { + "$ref": "#/definitions/shelf" + }, + "type": "array" + } + }, + "type": "object" + }, + "shelf": { + "properties": { + "name": { + "type": "string" + }, + "theme": { + "type": "string" + } + }, + "required": [ + "name", + "theme" + ] + }, + "error": { + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + }, + "security": [ + { + "api_key": [ + + ] + } + ], + "securityDefinitions": { + "api_key": { + "in": "query", + "name": "key", + "type": "apiKey" + } + } +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Package.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Package.swift new file mode 100644 index 0000000000..89e9beb254 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Package.swift @@ -0,0 +1,22 @@ +// Copyright 2017 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. + +import PackageDescription + +let package = Package( + name: "openapi-swift-sample", + dependencies: [ + .Package(url: "https://github.com/apple/swift-protobuf.git", Version(0,9,903)) + ] +) diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/OpenAPIv2.pb.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/OpenAPIv2.pb.swift new file mode 100644 index 0000000000..b95b7018ce --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/OpenAPIv2.pb.swift @@ -0,0 +1,8213 @@ +// DO NOT EDIT. +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: OpenAPIv2.proto +// +// For information on using the generated types, please see the documenation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2017 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. + +// THIS FILE IS AUTOMATICALLY GENERATED. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that your are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +struct Openapi_V2_AdditionalPropertiesItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".AdditionalPropertiesItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var schema: Openapi_V2_Schema { + get { + if case .schema(let v)? = _storage._oneof {return v} + return Openapi_V2_Schema() + } + set {_uniqueStorage()._oneof = .schema(newValue)} + } + + var boolean: Bool { + get { + if case .boolean(let v)? = _storage._oneof {return v} + return false + } + set {_uniqueStorage()._oneof = .boolean(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case schema(Openapi_V2_Schema) + case boolean(Bool) + + static func ==(lhs: Openapi_V2_AdditionalPropertiesItem.OneOf_Oneof, rhs: Openapi_V2_AdditionalPropertiesItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.schema(let l), .schema(let r)): return l == r + case (.boolean(let l), .boolean(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Schema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .schema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .schema(v)} + case 2: + if _storage._oneof != nil {try decoder.handleConflictingOneOf()} + var v: Bool? + try decoder.decodeSingularBoolField(value: &v) + if let v = v {_storage._oneof = .boolean(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .schema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .boolean(let v)?: + try visitor.visitSingularBoolField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Any: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Any" + + var value: SwiftProtobuf.Google_Protobuf_Any { + get {return _storage._value ?? SwiftProtobuf.Google_Protobuf_Any()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var yaml: String { + get {return _storage._yaml} + set {_uniqueStorage()._yaml = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularMessageField(value: &_storage._value) + case 2: try decoder.decodeSingularStringField(value: &_storage._yaml) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } + if !_storage._yaml.isEmpty { + try visitor.visitSingularStringField(value: _storage._yaml, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_ApiKeySecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ApiKeySecurity" + + var type: String = String() + + var name: String = String() + + var `in`: String = String() + + var description_p: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.type) + case 2: try decoder.decodeSingularStringField(value: &self.name) + case 3: try decoder.decodeSingularStringField(value: &self.`in`) + case 4: try decoder.decodeSingularStringField(value: &self.description_p) + case 5: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.type.isEmpty { + try visitor.visitSingularStringField(value: self.type, fieldNumber: 1) + } + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 2) + } + if !self.`in`.isEmpty { + try visitor.visitSingularStringField(value: self.`in`, fieldNumber: 3) + } + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 4) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 5) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_BasicAuthenticationSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".BasicAuthenticationSecurity" + + var type: String = String() + + var description_p: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.type) + case 2: try decoder.decodeSingularStringField(value: &self.description_p) + case 3: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.type.isEmpty { + try visitor.visitSingularStringField(value: self.type, fieldNumber: 1) + } + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 2) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_BodyParameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".BodyParameter" + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + var schema: Openapi_V2_Schema { + get {return _storage._schema ?? Openapi_V2_Schema()} + set {_uniqueStorage()._schema = newValue} + } + /// Returns true if `schema` has been explicitly set. + var hasSchema: Bool {return _storage._schema != nil} + /// Clears the value of `schema`. Subsequent reads from it will return its default value. + mutating func clearSchema() {_storage._schema = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 2: try decoder.decodeSingularStringField(value: &_storage._name) + case 3: try decoder.decodeSingularStringField(value: &_storage._in) + case 4: try decoder.decodeSingularBoolField(value: &_storage._required) + case 5: try decoder.decodeSingularMessageField(value: &_storage._schema) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 1) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 2) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 3) + } + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 4) + } + if let v = _storage._schema { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Contact information for the owners of the API. +struct Openapi_V2_Contact: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Contact" + + /// The identifying name of the contact person/organization. + var name: String = String() + + /// The URL pointing to the contact information. + var url: String = String() + + /// The email address of the contact person/organization. + var email: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.url) + case 3: try decoder.decodeSingularStringField(value: &self.email) + case 4: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.url.isEmpty { + try visitor.visitSingularStringField(value: self.url, fieldNumber: 2) + } + if !self.email.isEmpty { + try visitor.visitSingularStringField(value: self.email, fieldNumber: 3) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 4) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Default: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Default" + + var additionalProperties: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// One or more JSON objects describing the schemas being consumed and produced by the API. +struct Openapi_V2_Definitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Definitions" + + var additionalProperties: [Openapi_V2_NamedSchema] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Document: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Document" + + /// The Swagger version of this document. + var swagger: String { + get {return _storage._swagger} + set {_uniqueStorage()._swagger = newValue} + } + + var info: Openapi_V2_Info { + get {return _storage._info ?? Openapi_V2_Info()} + set {_uniqueStorage()._info = newValue} + } + /// Returns true if `info` has been explicitly set. + var hasInfo: Bool {return _storage._info != nil} + /// Clears the value of `info`. Subsequent reads from it will return its default value. + mutating func clearInfo() {_storage._info = nil} + + /// The host (name or ip) of the API. Example: 'swagger.io' + var host: String { + get {return _storage._host} + set {_uniqueStorage()._host = newValue} + } + + /// The base path to the API. Example: '/api'. + var basePath: String { + get {return _storage._basePath} + set {_uniqueStorage()._basePath = newValue} + } + + /// The transfer protocol of the API. + var schemes: [String] { + get {return _storage._schemes} + set {_uniqueStorage()._schemes = newValue} + } + + /// A list of MIME types accepted by the API. + var consumes: [String] { + get {return _storage._consumes} + set {_uniqueStorage()._consumes = newValue} + } + + /// A list of MIME types the API can produce. + var produces: [String] { + get {return _storage._produces} + set {_uniqueStorage()._produces = newValue} + } + + var paths: Openapi_V2_Paths { + get {return _storage._paths ?? Openapi_V2_Paths()} + set {_uniqueStorage()._paths = newValue} + } + /// Returns true if `paths` has been explicitly set. + var hasPaths: Bool {return _storage._paths != nil} + /// Clears the value of `paths`. Subsequent reads from it will return its default value. + mutating func clearPaths() {_storage._paths = nil} + + var definitions: Openapi_V2_Definitions { + get {return _storage._definitions ?? Openapi_V2_Definitions()} + set {_uniqueStorage()._definitions = newValue} + } + /// Returns true if `definitions` has been explicitly set. + var hasDefinitions: Bool {return _storage._definitions != nil} + /// Clears the value of `definitions`. Subsequent reads from it will return its default value. + mutating func clearDefinitions() {_storage._definitions = nil} + + var parameters: Openapi_V2_ParameterDefinitions { + get {return _storage._parameters ?? Openapi_V2_ParameterDefinitions()} + set {_uniqueStorage()._parameters = newValue} + } + /// Returns true if `parameters` has been explicitly set. + var hasParameters: Bool {return _storage._parameters != nil} + /// Clears the value of `parameters`. Subsequent reads from it will return its default value. + mutating func clearParameters() {_storage._parameters = nil} + + var responses: Openapi_V2_ResponseDefinitions { + get {return _storage._responses ?? Openapi_V2_ResponseDefinitions()} + set {_uniqueStorage()._responses = newValue} + } + /// Returns true if `responses` has been explicitly set. + var hasResponses: Bool {return _storage._responses != nil} + /// Clears the value of `responses`. Subsequent reads from it will return its default value. + mutating func clearResponses() {_storage._responses = nil} + + var security: [Openapi_V2_SecurityRequirement] { + get {return _storage._security} + set {_uniqueStorage()._security = newValue} + } + + var securityDefinitions: Openapi_V2_SecurityDefinitions { + get {return _storage._securityDefinitions ?? Openapi_V2_SecurityDefinitions()} + set {_uniqueStorage()._securityDefinitions = newValue} + } + /// Returns true if `securityDefinitions` has been explicitly set. + var hasSecurityDefinitions: Bool {return _storage._securityDefinitions != nil} + /// Clears the value of `securityDefinitions`. Subsequent reads from it will return its default value. + mutating func clearSecurityDefinitions() {_storage._securityDefinitions = nil} + + var tags: [Openapi_V2_Tag] { + get {return _storage._tags} + set {_uniqueStorage()._tags = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._swagger) + case 2: try decoder.decodeSingularMessageField(value: &_storage._info) + case 3: try decoder.decodeSingularStringField(value: &_storage._host) + case 4: try decoder.decodeSingularStringField(value: &_storage._basePath) + case 5: try decoder.decodeRepeatedStringField(value: &_storage._schemes) + case 6: try decoder.decodeRepeatedStringField(value: &_storage._consumes) + case 7: try decoder.decodeRepeatedStringField(value: &_storage._produces) + case 8: try decoder.decodeSingularMessageField(value: &_storage._paths) + case 9: try decoder.decodeSingularMessageField(value: &_storage._definitions) + case 10: try decoder.decodeSingularMessageField(value: &_storage._parameters) + case 11: try decoder.decodeSingularMessageField(value: &_storage._responses) + case 12: try decoder.decodeRepeatedMessageField(value: &_storage._security) + case 13: try decoder.decodeSingularMessageField(value: &_storage._securityDefinitions) + case 14: try decoder.decodeRepeatedMessageField(value: &_storage._tags) + case 15: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 16: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._swagger.isEmpty { + try visitor.visitSingularStringField(value: _storage._swagger, fieldNumber: 1) + } + if let v = _storage._info { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if !_storage._host.isEmpty { + try visitor.visitSingularStringField(value: _storage._host, fieldNumber: 3) + } + if !_storage._basePath.isEmpty { + try visitor.visitSingularStringField(value: _storage._basePath, fieldNumber: 4) + } + if !_storage._schemes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._schemes, fieldNumber: 5) + } + if !_storage._consumes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._consumes, fieldNumber: 6) + } + if !_storage._produces.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._produces, fieldNumber: 7) + } + if let v = _storage._paths { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if let v = _storage._definitions { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if let v = _storage._parameters { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } + if let v = _storage._responses { + try visitor.visitSingularMessageField(value: v, fieldNumber: 11) + } + if !_storage._security.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._security, fieldNumber: 12) + } + if let v = _storage._securityDefinitions { + try visitor.visitSingularMessageField(value: v, fieldNumber: 13) + } + if !_storage._tags.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._tags, fieldNumber: 14) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 15) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 16) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Examples: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Examples" + + var additionalProperties: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// information about external documentation +struct Openapi_V2_ExternalDocs: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ExternalDocs" + + var description_p: String = String() + + var url: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.description_p) + case 2: try decoder.decodeSingularStringField(value: &self.url) + case 3: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 1) + } + if !self.url.isEmpty { + try visitor.visitSingularStringField(value: self.url, fieldNumber: 2) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// A deterministic version of a JSON Schema object. +struct Openapi_V2_FileSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".FileSchema" + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var title: String { + get {return _storage._title} + set {_uniqueStorage()._title = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var required: [String] { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var readOnly: Bool { + get {return _storage._readOnly} + set {_uniqueStorage()._readOnly = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var example: Openapi_V2_Any { + get {return _storage._example ?? Openapi_V2_Any()} + set {_uniqueStorage()._example = newValue} + } + /// Returns true if `example` has been explicitly set. + var hasExample: Bool {return _storage._example != nil} + /// Clears the value of `example`. Subsequent reads from it will return its default value. + mutating func clearExample() {_storage._example = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._format) + case 2: try decoder.decodeSingularStringField(value: &_storage._title) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularMessageField(value: &_storage._default) + case 5: try decoder.decodeRepeatedStringField(value: &_storage._required) + case 6: try decoder.decodeSingularStringField(value: &_storage._type) + case 7: try decoder.decodeSingularBoolField(value: &_storage._readOnly) + case 8: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 9: try decoder.decodeSingularMessageField(value: &_storage._example) + case 10: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 1) + } + if !_storage._title.isEmpty { + try visitor.visitSingularStringField(value: _storage._title, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._required.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._required, fieldNumber: 5) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 6) + } + if _storage._readOnly != false { + try visitor.visitSingularBoolField(value: _storage._readOnly, fieldNumber: 7) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if let v = _storage._example { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 10) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_FormDataParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".FormDataParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// allows sending a parameter by name only or with an empty value. + var allowEmptyValue: Bool { + get {return _storage._allowEmptyValue} + set {_uniqueStorage()._allowEmptyValue = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularBoolField(value: &_storage._allowEmptyValue) + case 6: try decoder.decodeSingularStringField(value: &_storage._type) + case 7: try decoder.decodeSingularStringField(value: &_storage._format) + case 8: try decoder.decodeSingularMessageField(value: &_storage._items) + case 9: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 10: try decoder.decodeSingularMessageField(value: &_storage._default) + case 11: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 12: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 13: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 14: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 16: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 17: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 19: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 20: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 21: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 22: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 23: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if _storage._allowEmptyValue != false { + try visitor.visitSingularBoolField(value: _storage._allowEmptyValue, fieldNumber: 5) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 6) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 7) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 9) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 11) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 12) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 13) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 14) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 15) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 16) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 17) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 18) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 19) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 20) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 21) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 22) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 23) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Header: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Header" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._format) + case 3: try decoder.decodeSingularMessageField(value: &_storage._items) + case 4: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 5: try decoder.decodeSingularMessageField(value: &_storage._default) + case 6: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 7: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 8: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 9: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 10: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 11: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 12: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 13: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 15: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 16: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 17: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 18: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 19: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 2) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 4) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 6) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 7) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 8) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 9) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 10) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 11) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 12) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 13) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 14) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 15) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 16) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 17) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 18) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 19) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_HeaderParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".HeaderParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularStringField(value: &_storage._type) + case 6: try decoder.decodeSingularStringField(value: &_storage._format) + case 7: try decoder.decodeSingularMessageField(value: &_storage._items) + case 8: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 9: try decoder.decodeSingularMessageField(value: &_storage._default) + case 10: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 11: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 12: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 13: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 16: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 17: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 19: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 20: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 21: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 22: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 5) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 6) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 8) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 10) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 11) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 12) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 13) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 14) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 15) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 16) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 17) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 18) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 19) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 20) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 21) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 22) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Headers: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Headers" + + var additionalProperties: [Openapi_V2_NamedHeader] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// General information about the API. +struct Openapi_V2_Info: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Info" + + /// A unique and precise title of the API. + var title: String { + get {return _storage._title} + set {_uniqueStorage()._title = newValue} + } + + /// A semantic version number of the API. + var version: String { + get {return _storage._version} + set {_uniqueStorage()._version = newValue} + } + + /// A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The terms of service for the API. + var termsOfService: String { + get {return _storage._termsOfService} + set {_uniqueStorage()._termsOfService = newValue} + } + + var contact: Openapi_V2_Contact { + get {return _storage._contact ?? Openapi_V2_Contact()} + set {_uniqueStorage()._contact = newValue} + } + /// Returns true if `contact` has been explicitly set. + var hasContact: Bool {return _storage._contact != nil} + /// Clears the value of `contact`. Subsequent reads from it will return its default value. + mutating func clearContact() {_storage._contact = nil} + + var license: Openapi_V2_License { + get {return _storage._license ?? Openapi_V2_License()} + set {_uniqueStorage()._license = newValue} + } + /// Returns true if `license` has been explicitly set. + var hasLicense: Bool {return _storage._license != nil} + /// Clears the value of `license`. Subsequent reads from it will return its default value. + mutating func clearLicense() {_storage._license = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._title) + case 2: try decoder.decodeSingularStringField(value: &_storage._version) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._termsOfService) + case 5: try decoder.decodeSingularMessageField(value: &_storage._contact) + case 6: try decoder.decodeSingularMessageField(value: &_storage._license) + case 7: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._title.isEmpty { + try visitor.visitSingularStringField(value: _storage._title, fieldNumber: 1) + } + if !_storage._version.isEmpty { + try visitor.visitSingularStringField(value: _storage._version, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._termsOfService.isEmpty { + try visitor.visitSingularStringField(value: _storage._termsOfService, fieldNumber: 4) + } + if let v = _storage._contact { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if let v = _storage._license { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 7) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_ItemsItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ItemsItem" + + var schema: [Openapi_V2_Schema] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.schema) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.schema.isEmpty { + try visitor.visitRepeatedMessageField(value: self.schema, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_JsonReference: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".JsonReference" + + var ref: String = String() + + var description_p: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.ref) + case 2: try decoder.decodeSingularStringField(value: &self.description_p) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.ref.isEmpty { + try visitor.visitSingularStringField(value: self.ref, fieldNumber: 1) + } + if !self.description_p.isEmpty { + try visitor.visitSingularStringField(value: self.description_p, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_License: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".License" + + /// The name of the license type. It's encouraged to use an OSI compatible license. + var name: String = String() + + /// The URL pointing to the license. + var url: String = String() + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.url) + case 3: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.url.isEmpty { + try visitor.visitSingularStringField(value: self.url, fieldNumber: 2) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. +struct Openapi_V2_NamedAny: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedAny" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Any { + get {return _storage._value ?? Openapi_V2_Any()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Header as ordered (name,value) pairs. +struct Openapi_V2_NamedHeader: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedHeader" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Header { + get {return _storage._value ?? Openapi_V2_Header()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs. +struct Openapi_V2_NamedParameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedParameter" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Parameter { + get {return _storage._value ?? Openapi_V2_Parameter()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. +struct Openapi_V2_NamedPathItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedPathItem" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_PathItem { + get {return _storage._value ?? Openapi_V2_PathItem()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Response as ordered (name,value) pairs. +struct Openapi_V2_NamedResponse: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedResponse" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Response { + get {return _storage._value ?? Openapi_V2_Response()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs. +struct Openapi_V2_NamedResponseValue: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedResponseValue" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_ResponseValue { + get {return _storage._value ?? Openapi_V2_ResponseValue()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs. +struct Openapi_V2_NamedSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedSchema" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_Schema { + get {return _storage._value ?? Openapi_V2_Schema()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs. +struct Openapi_V2_NamedSecurityDefinitionsItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedSecurityDefinitionsItem" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_SecurityDefinitionsItem { + get {return _storage._value ?? Openapi_V2_SecurityDefinitionsItem()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. +struct Openapi_V2_NamedString: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedString" + + /// Map key + var name: String = String() + + /// Mapped value + var value: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.value.isEmpty { + try visitor.visitSingularStringField(value: self.value, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. +struct Openapi_V2_NamedStringArray: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NamedStringArray" + + /// Map key + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// Mapped value + var value: Openapi_V2_StringArray { + get {return _storage._value ?? Openapi_V2_StringArray()} + set {_uniqueStorage()._value = newValue} + } + /// Returns true if `value` has been explicitly set. + var hasValue: Bool {return _storage._value != nil} + /// Clears the value of `value`. Subsequent reads from it will return its default value. + mutating func clearValue() {_storage._value = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularMessageField(value: &_storage._value) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if let v = _storage._value { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_NonBodyParameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".NonBodyParameter" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var headerParameterSubSchema: Openapi_V2_HeaderParameterSubSchema { + get { + if case .headerParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_HeaderParameterSubSchema() + } + set {_uniqueStorage()._oneof = .headerParameterSubSchema(newValue)} + } + + var formDataParameterSubSchema: Openapi_V2_FormDataParameterSubSchema { + get { + if case .formDataParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_FormDataParameterSubSchema() + } + set {_uniqueStorage()._oneof = .formDataParameterSubSchema(newValue)} + } + + var queryParameterSubSchema: Openapi_V2_QueryParameterSubSchema { + get { + if case .queryParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_QueryParameterSubSchema() + } + set {_uniqueStorage()._oneof = .queryParameterSubSchema(newValue)} + } + + var pathParameterSubSchema: Openapi_V2_PathParameterSubSchema { + get { + if case .pathParameterSubSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_PathParameterSubSchema() + } + set {_uniqueStorage()._oneof = .pathParameterSubSchema(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case headerParameterSubSchema(Openapi_V2_HeaderParameterSubSchema) + case formDataParameterSubSchema(Openapi_V2_FormDataParameterSubSchema) + case queryParameterSubSchema(Openapi_V2_QueryParameterSubSchema) + case pathParameterSubSchema(Openapi_V2_PathParameterSubSchema) + + static func ==(lhs: Openapi_V2_NonBodyParameter.OneOf_Oneof, rhs: Openapi_V2_NonBodyParameter.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.headerParameterSubSchema(let l), .headerParameterSubSchema(let r)): return l == r + case (.formDataParameterSubSchema(let l), .formDataParameterSubSchema(let r)): return l == r + case (.queryParameterSubSchema(let l), .queryParameterSubSchema(let r)): return l == r + case (.pathParameterSubSchema(let l), .pathParameterSubSchema(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_HeaderParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .headerParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .headerParameterSubSchema(v)} + case 2: + var v: Openapi_V2_FormDataParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .formDataParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .formDataParameterSubSchema(v)} + case 3: + var v: Openapi_V2_QueryParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .queryParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .queryParameterSubSchema(v)} + case 4: + var v: Openapi_V2_PathParameterSubSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .pathParameterSubSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .pathParameterSubSchema(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .headerParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .formDataParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case .queryParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + case .pathParameterSubSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2AccessCodeSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2AccessCodeSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var authorizationURL: String { + get {return _storage._authorizationURL} + set {_uniqueStorage()._authorizationURL = newValue} + } + + var tokenURL: String { + get {return _storage._tokenURL} + set {_uniqueStorage()._tokenURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._authorizationURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._tokenURL) + case 6: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 7: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._authorizationURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._authorizationURL, fieldNumber: 4) + } + if !_storage._tokenURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._tokenURL, fieldNumber: 5) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 6) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 7) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2ApplicationSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2ApplicationSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var tokenURL: String { + get {return _storage._tokenURL} + set {_uniqueStorage()._tokenURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._tokenURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._tokenURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._tokenURL, fieldNumber: 4) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2ImplicitSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2ImplicitSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var authorizationURL: String { + get {return _storage._authorizationURL} + set {_uniqueStorage()._authorizationURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._authorizationURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._authorizationURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._authorizationURL, fieldNumber: 4) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2PasswordSecurity: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2PasswordSecurity" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var flow: String { + get {return _storage._flow} + set {_uniqueStorage()._flow = newValue} + } + + var scopes: Openapi_V2_Oauth2Scopes { + get {return _storage._scopes ?? Openapi_V2_Oauth2Scopes()} + set {_uniqueStorage()._scopes = newValue} + } + /// Returns true if `scopes` has been explicitly set. + var hasScopes: Bool {return _storage._scopes != nil} + /// Clears the value of `scopes`. Subsequent reads from it will return its default value. + mutating func clearScopes() {_storage._scopes = nil} + + var tokenURL: String { + get {return _storage._tokenURL} + set {_uniqueStorage()._tokenURL = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._flow) + case 3: try decoder.decodeSingularMessageField(value: &_storage._scopes) + case 4: try decoder.decodeSingularStringField(value: &_storage._tokenURL) + case 5: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 6: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._flow.isEmpty { + try visitor.visitSingularStringField(value: _storage._flow, fieldNumber: 2) + } + if let v = _storage._scopes { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._tokenURL.isEmpty { + try visitor.visitSingularStringField(value: _storage._tokenURL, fieldNumber: 4) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 5) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 6) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Oauth2Scopes: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Oauth2Scopes" + + var additionalProperties: [Openapi_V2_NamedString] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Operation: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Operation" + + var tags: [String] { + get {return _storage._tags} + set {_uniqueStorage()._tags = newValue} + } + + /// A brief summary of the operation. + var summary: String { + get {return _storage._summary} + set {_uniqueStorage()._summary = newValue} + } + + /// A longer description of the operation, GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + /// A unique identifier of the operation. + var operationID: String { + get {return _storage._operationID} + set {_uniqueStorage()._operationID = newValue} + } + + /// A list of MIME types the API can produce. + var produces: [String] { + get {return _storage._produces} + set {_uniqueStorage()._produces = newValue} + } + + /// A list of MIME types the API can consume. + var consumes: [String] { + get {return _storage._consumes} + set {_uniqueStorage()._consumes = newValue} + } + + /// The parameters needed to send a valid API call. + var parameters: [Openapi_V2_ParametersItem] { + get {return _storage._parameters} + set {_uniqueStorage()._parameters = newValue} + } + + var responses: Openapi_V2_Responses { + get {return _storage._responses ?? Openapi_V2_Responses()} + set {_uniqueStorage()._responses = newValue} + } + /// Returns true if `responses` has been explicitly set. + var hasResponses: Bool {return _storage._responses != nil} + /// Clears the value of `responses`. Subsequent reads from it will return its default value. + mutating func clearResponses() {_storage._responses = nil} + + /// The transfer protocol of the API. + var schemes: [String] { + get {return _storage._schemes} + set {_uniqueStorage()._schemes = newValue} + } + + var deprecated: Bool { + get {return _storage._deprecated} + set {_uniqueStorage()._deprecated = newValue} + } + + var security: [Openapi_V2_SecurityRequirement] { + get {return _storage._security} + set {_uniqueStorage()._security = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &_storage._tags) + case 2: try decoder.decodeSingularStringField(value: &_storage._summary) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 5: try decoder.decodeSingularStringField(value: &_storage._operationID) + case 6: try decoder.decodeRepeatedStringField(value: &_storage._produces) + case 7: try decoder.decodeRepeatedStringField(value: &_storage._consumes) + case 8: try decoder.decodeRepeatedMessageField(value: &_storage._parameters) + case 9: try decoder.decodeSingularMessageField(value: &_storage._responses) + case 10: try decoder.decodeRepeatedStringField(value: &_storage._schemes) + case 11: try decoder.decodeSingularBoolField(value: &_storage._deprecated) + case 12: try decoder.decodeRepeatedMessageField(value: &_storage._security) + case 13: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._tags.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._tags, fieldNumber: 1) + } + if !_storage._summary.isEmpty { + try visitor.visitSingularStringField(value: _storage._summary, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._operationID.isEmpty { + try visitor.visitSingularStringField(value: _storage._operationID, fieldNumber: 5) + } + if !_storage._produces.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._produces, fieldNumber: 6) + } + if !_storage._consumes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._consumes, fieldNumber: 7) + } + if !_storage._parameters.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._parameters, fieldNumber: 8) + } + if let v = _storage._responses { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if !_storage._schemes.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._schemes, fieldNumber: 10) + } + if _storage._deprecated != false { + try visitor.visitSingularBoolField(value: _storage._deprecated, fieldNumber: 11) + } + if !_storage._security.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._security, fieldNumber: 12) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 13) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Parameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Parameter" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var bodyParameter: Openapi_V2_BodyParameter { + get { + if case .bodyParameter(let v)? = _storage._oneof {return v} + return Openapi_V2_BodyParameter() + } + set {_uniqueStorage()._oneof = .bodyParameter(newValue)} + } + + var nonBodyParameter: Openapi_V2_NonBodyParameter { + get { + if case .nonBodyParameter(let v)? = _storage._oneof {return v} + return Openapi_V2_NonBodyParameter() + } + set {_uniqueStorage()._oneof = .nonBodyParameter(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case bodyParameter(Openapi_V2_BodyParameter) + case nonBodyParameter(Openapi_V2_NonBodyParameter) + + static func ==(lhs: Openapi_V2_Parameter.OneOf_Oneof, rhs: Openapi_V2_Parameter.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.bodyParameter(let l), .bodyParameter(let r)): return l == r + case (.nonBodyParameter(let l), .nonBodyParameter(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_BodyParameter? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .bodyParameter(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .bodyParameter(v)} + case 2: + var v: Openapi_V2_NonBodyParameter? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .nonBodyParameter(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .nonBodyParameter(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .bodyParameter(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .nonBodyParameter(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// One or more JSON representations for parameters +struct Openapi_V2_ParameterDefinitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ParameterDefinitions" + + var additionalProperties: [Openapi_V2_NamedParameter] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_ParametersItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ParametersItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var parameter: Openapi_V2_Parameter { + get { + if case .parameter(let v)? = _storage._oneof {return v} + return Openapi_V2_Parameter() + } + set {_uniqueStorage()._oneof = .parameter(newValue)} + } + + var jsonReference: Openapi_V2_JsonReference { + get { + if case .jsonReference(let v)? = _storage._oneof {return v} + return Openapi_V2_JsonReference() + } + set {_uniqueStorage()._oneof = .jsonReference(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case parameter(Openapi_V2_Parameter) + case jsonReference(Openapi_V2_JsonReference) + + static func ==(lhs: Openapi_V2_ParametersItem.OneOf_Oneof, rhs: Openapi_V2_ParametersItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.parameter(let l), .parameter(let r)): return l == r + case (.jsonReference(let l), .jsonReference(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Parameter? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .parameter(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .parameter(v)} + case 2: + var v: Openapi_V2_JsonReference? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .jsonReference(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .jsonReference(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .parameter(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .jsonReference(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_PathItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".PathItem" + + var ref: String { + get {return _storage._ref} + set {_uniqueStorage()._ref = newValue} + } + + var get: Openapi_V2_Operation { + get {return _storage._get ?? Openapi_V2_Operation()} + set {_uniqueStorage()._get = newValue} + } + /// Returns true if `get` has been explicitly set. + var hasGet: Bool {return _storage._get != nil} + /// Clears the value of `get`. Subsequent reads from it will return its default value. + mutating func clearGet() {_storage._get = nil} + + var put: Openapi_V2_Operation { + get {return _storage._put ?? Openapi_V2_Operation()} + set {_uniqueStorage()._put = newValue} + } + /// Returns true if `put` has been explicitly set. + var hasPut: Bool {return _storage._put != nil} + /// Clears the value of `put`. Subsequent reads from it will return its default value. + mutating func clearPut() {_storage._put = nil} + + var post: Openapi_V2_Operation { + get {return _storage._post ?? Openapi_V2_Operation()} + set {_uniqueStorage()._post = newValue} + } + /// Returns true if `post` has been explicitly set. + var hasPost: Bool {return _storage._post != nil} + /// Clears the value of `post`. Subsequent reads from it will return its default value. + mutating func clearPost() {_storage._post = nil} + + var delete: Openapi_V2_Operation { + get {return _storage._delete ?? Openapi_V2_Operation()} + set {_uniqueStorage()._delete = newValue} + } + /// Returns true if `delete` has been explicitly set. + var hasDelete: Bool {return _storage._delete != nil} + /// Clears the value of `delete`. Subsequent reads from it will return its default value. + mutating func clearDelete() {_storage._delete = nil} + + var options: Openapi_V2_Operation { + get {return _storage._options ?? Openapi_V2_Operation()} + set {_uniqueStorage()._options = newValue} + } + /// Returns true if `options` has been explicitly set. + var hasOptions: Bool {return _storage._options != nil} + /// Clears the value of `options`. Subsequent reads from it will return its default value. + mutating func clearOptions() {_storage._options = nil} + + var head: Openapi_V2_Operation { + get {return _storage._head ?? Openapi_V2_Operation()} + set {_uniqueStorage()._head = newValue} + } + /// Returns true if `head` has been explicitly set. + var hasHead: Bool {return _storage._head != nil} + /// Clears the value of `head`. Subsequent reads from it will return its default value. + mutating func clearHead() {_storage._head = nil} + + var patch: Openapi_V2_Operation { + get {return _storage._patch ?? Openapi_V2_Operation()} + set {_uniqueStorage()._patch = newValue} + } + /// Returns true if `patch` has been explicitly set. + var hasPatch: Bool {return _storage._patch != nil} + /// Clears the value of `patch`. Subsequent reads from it will return its default value. + mutating func clearPatch() {_storage._patch = nil} + + /// The parameters needed to send a valid API call. + var parameters: [Openapi_V2_ParametersItem] { + get {return _storage._parameters} + set {_uniqueStorage()._parameters = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._ref) + case 2: try decoder.decodeSingularMessageField(value: &_storage._get) + case 3: try decoder.decodeSingularMessageField(value: &_storage._put) + case 4: try decoder.decodeSingularMessageField(value: &_storage._post) + case 5: try decoder.decodeSingularMessageField(value: &_storage._delete) + case 6: try decoder.decodeSingularMessageField(value: &_storage._options) + case 7: try decoder.decodeSingularMessageField(value: &_storage._head) + case 8: try decoder.decodeSingularMessageField(value: &_storage._patch) + case 9: try decoder.decodeRepeatedMessageField(value: &_storage._parameters) + case 10: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._ref.isEmpty { + try visitor.visitSingularStringField(value: _storage._ref, fieldNumber: 1) + } + if let v = _storage._get { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if let v = _storage._put { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if let v = _storage._post { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if let v = _storage._delete { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if let v = _storage._options { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } + if let v = _storage._head { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } + if let v = _storage._patch { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._parameters.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._parameters, fieldNumber: 9) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 10) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_PathParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".PathParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularStringField(value: &_storage._type) + case 6: try decoder.decodeSingularStringField(value: &_storage._format) + case 7: try decoder.decodeSingularMessageField(value: &_storage._items) + case 8: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 9: try decoder.decodeSingularMessageField(value: &_storage._default) + case 10: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 11: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 12: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 13: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 16: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 17: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 19: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 20: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 21: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 22: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 5) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 6) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 8) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 10) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 11) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 12) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 13) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 14) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 15) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 16) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 17) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 18) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 19) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 20) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 21) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 22) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Relative paths to the individual endpoints. They must be relative to the 'basePath'. +struct Openapi_V2_Paths: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Paths" + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var path: [Openapi_V2_NamedPathItem] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + case 2: try decoder.decodeRepeatedMessageField(value: &self.path) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 1) + } + if !self.path.isEmpty { + try visitor.visitRepeatedMessageField(value: self.path, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_PrimitivesItems: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".PrimitivesItems" + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._type) + case 2: try decoder.decodeSingularStringField(value: &_storage._format) + case 3: try decoder.decodeSingularMessageField(value: &_storage._items) + case 4: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 5: try decoder.decodeSingularMessageField(value: &_storage._default) + case 6: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 7: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 8: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 9: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 10: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 11: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 12: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 13: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 15: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 16: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 17: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 18: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 1) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 2) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 4) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 6) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 7) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 8) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 9) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 10) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 11) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 12) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 13) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 14) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 15) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 16) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 17) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 18) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Properties: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Properties" + + var additionalProperties: [Openapi_V2_NamedSchema] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_QueryParameterSubSchema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".QueryParameterSubSchema" + + /// Determines whether or not this parameter is required or optional. + var required: Bool { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + /// Determines the location of the parameter. + var `in`: String { + get {return _storage._in} + set {_uniqueStorage()._in = newValue} + } + + /// A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + /// The name of the parameter. + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + /// allows sending a parameter by name only or with an empty value. + var allowEmptyValue: Bool { + get {return _storage._allowEmptyValue} + set {_uniqueStorage()._allowEmptyValue = newValue} + } + + var type: String { + get {return _storage._type} + set {_uniqueStorage()._type = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var items: Openapi_V2_PrimitivesItems { + get {return _storage._items ?? Openapi_V2_PrimitivesItems()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var collectionFormat: String { + get {return _storage._collectionFormat} + set {_uniqueStorage()._collectionFormat = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBoolField(value: &_storage._required) + case 2: try decoder.decodeSingularStringField(value: &_storage._in) + case 3: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 4: try decoder.decodeSingularStringField(value: &_storage._name) + case 5: try decoder.decodeSingularBoolField(value: &_storage._allowEmptyValue) + case 6: try decoder.decodeSingularStringField(value: &_storage._type) + case 7: try decoder.decodeSingularStringField(value: &_storage._format) + case 8: try decoder.decodeSingularMessageField(value: &_storage._items) + case 9: try decoder.decodeSingularStringField(value: &_storage._collectionFormat) + case 10: try decoder.decodeSingularMessageField(value: &_storage._default) + case 11: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 12: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 13: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 14: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 16: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 17: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 19: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 20: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 21: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 22: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 23: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._required != false { + try visitor.visitSingularBoolField(value: _storage._required, fieldNumber: 1) + } + if !_storage._in.isEmpty { + try visitor.visitSingularStringField(value: _storage._in, fieldNumber: 2) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 3) + } + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 4) + } + if _storage._allowEmptyValue != false { + try visitor.visitSingularBoolField(value: _storage._allowEmptyValue, fieldNumber: 5) + } + if !_storage._type.isEmpty { + try visitor.visitSingularStringField(value: _storage._type, fieldNumber: 6) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 7) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._collectionFormat.isEmpty { + try visitor.visitSingularStringField(value: _storage._collectionFormat, fieldNumber: 9) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 11) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 12) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 13) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 14) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 15) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 16) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 17) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 18) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 19) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 20) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 21) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 22) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 23) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_Response: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Response" + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var schema: Openapi_V2_SchemaItem { + get {return _storage._schema ?? Openapi_V2_SchemaItem()} + set {_uniqueStorage()._schema = newValue} + } + /// Returns true if `schema` has been explicitly set. + var hasSchema: Bool {return _storage._schema != nil} + /// Clears the value of `schema`. Subsequent reads from it will return its default value. + mutating func clearSchema() {_storage._schema = nil} + + var headers: Openapi_V2_Headers { + get {return _storage._headers ?? Openapi_V2_Headers()} + set {_uniqueStorage()._headers = newValue} + } + /// Returns true if `headers` has been explicitly set. + var hasHeaders: Bool {return _storage._headers != nil} + /// Clears the value of `headers`. Subsequent reads from it will return its default value. + mutating func clearHeaders() {_storage._headers = nil} + + var examples: Openapi_V2_Examples { + get {return _storage._examples ?? Openapi_V2_Examples()} + set {_uniqueStorage()._examples = newValue} + } + /// Returns true if `examples` has been explicitly set. + var hasExamples: Bool {return _storage._examples != nil} + /// Clears the value of `examples`. Subsequent reads from it will return its default value. + mutating func clearExamples() {_storage._examples = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 2: try decoder.decodeSingularMessageField(value: &_storage._schema) + case 3: try decoder.decodeSingularMessageField(value: &_storage._headers) + case 4: try decoder.decodeSingularMessageField(value: &_storage._examples) + case 5: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 1) + } + if let v = _storage._schema { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if let v = _storage._headers { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if let v = _storage._examples { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 5) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// One or more JSON representations for parameters +struct Openapi_V2_ResponseDefinitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ResponseDefinitions" + + var additionalProperties: [Openapi_V2_NamedResponse] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_ResponseValue: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".ResponseValue" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var response: Openapi_V2_Response { + get { + if case .response(let v)? = _storage._oneof {return v} + return Openapi_V2_Response() + } + set {_uniqueStorage()._oneof = .response(newValue)} + } + + var jsonReference: Openapi_V2_JsonReference { + get { + if case .jsonReference(let v)? = _storage._oneof {return v} + return Openapi_V2_JsonReference() + } + set {_uniqueStorage()._oneof = .jsonReference(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case response(Openapi_V2_Response) + case jsonReference(Openapi_V2_JsonReference) + + static func ==(lhs: Openapi_V2_ResponseValue.OneOf_Oneof, rhs: Openapi_V2_ResponseValue.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.response(let l), .response(let r)): return l == r + case (.jsonReference(let l), .jsonReference(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Response? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .response(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .response(v)} + case 2: + var v: Openapi_V2_JsonReference? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .jsonReference(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .jsonReference(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .response(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .jsonReference(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// Response objects names can either be any valid HTTP status code or 'default'. +struct Openapi_V2_Responses: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Responses" + + var responseCode: [Openapi_V2_NamedResponseValue] = [] + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.responseCode) + case 2: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.responseCode.isEmpty { + try visitor.visitRepeatedMessageField(value: self.responseCode, fieldNumber: 1) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// A deterministic version of a JSON Schema object. +struct Openapi_V2_Schema: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Schema" + + var ref: String { + get {return _storage._ref} + set {_uniqueStorage()._ref = newValue} + } + + var format: String { + get {return _storage._format} + set {_uniqueStorage()._format = newValue} + } + + var title: String { + get {return _storage._title} + set {_uniqueStorage()._title = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var `default`: Openapi_V2_Any { + get {return _storage._default ?? Openapi_V2_Any()} + set {_uniqueStorage()._default = newValue} + } + /// Returns true if ``default`` has been explicitly set. + var hasDefault: Bool {return _storage._default != nil} + /// Clears the value of ``default``. Subsequent reads from it will return its default value. + mutating func clearDefault() {_storage._default = nil} + + var multipleOf: Double { + get {return _storage._multipleOf} + set {_uniqueStorage()._multipleOf = newValue} + } + + var maximum: Double { + get {return _storage._maximum} + set {_uniqueStorage()._maximum = newValue} + } + + var exclusiveMaximum: Bool { + get {return _storage._exclusiveMaximum} + set {_uniqueStorage()._exclusiveMaximum = newValue} + } + + var minimum: Double { + get {return _storage._minimum} + set {_uniqueStorage()._minimum = newValue} + } + + var exclusiveMinimum: Bool { + get {return _storage._exclusiveMinimum} + set {_uniqueStorage()._exclusiveMinimum = newValue} + } + + var maxLength: Int64 { + get {return _storage._maxLength} + set {_uniqueStorage()._maxLength = newValue} + } + + var minLength: Int64 { + get {return _storage._minLength} + set {_uniqueStorage()._minLength = newValue} + } + + var pattern: String { + get {return _storage._pattern} + set {_uniqueStorage()._pattern = newValue} + } + + var maxItems: Int64 { + get {return _storage._maxItems} + set {_uniqueStorage()._maxItems = newValue} + } + + var minItems: Int64 { + get {return _storage._minItems} + set {_uniqueStorage()._minItems = newValue} + } + + var uniqueItems: Bool { + get {return _storage._uniqueItems} + set {_uniqueStorage()._uniqueItems = newValue} + } + + var maxProperties: Int64 { + get {return _storage._maxProperties} + set {_uniqueStorage()._maxProperties = newValue} + } + + var minProperties: Int64 { + get {return _storage._minProperties} + set {_uniqueStorage()._minProperties = newValue} + } + + var required: [String] { + get {return _storage._required} + set {_uniqueStorage()._required = newValue} + } + + var `enum`: [Openapi_V2_Any] { + get {return _storage._enum} + set {_uniqueStorage()._enum = newValue} + } + + var additionalProperties: Openapi_V2_AdditionalPropertiesItem { + get {return _storage._additionalProperties ?? Openapi_V2_AdditionalPropertiesItem()} + set {_uniqueStorage()._additionalProperties = newValue} + } + /// Returns true if `additionalProperties` has been explicitly set. + var hasAdditionalProperties: Bool {return _storage._additionalProperties != nil} + /// Clears the value of `additionalProperties`. Subsequent reads from it will return its default value. + mutating func clearAdditionalProperties() {_storage._additionalProperties = nil} + + var type: Openapi_V2_TypeItem { + get {return _storage._type ?? Openapi_V2_TypeItem()} + set {_uniqueStorage()._type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return _storage._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {_storage._type = nil} + + var items: Openapi_V2_ItemsItem { + get {return _storage._items ?? Openapi_V2_ItemsItem()} + set {_uniqueStorage()._items = newValue} + } + /// Returns true if `items` has been explicitly set. + var hasItems: Bool {return _storage._items != nil} + /// Clears the value of `items`. Subsequent reads from it will return its default value. + mutating func clearItems() {_storage._items = nil} + + var allOf: [Openapi_V2_Schema] { + get {return _storage._allOf} + set {_uniqueStorage()._allOf = newValue} + } + + var properties: Openapi_V2_Properties { + get {return _storage._properties ?? Openapi_V2_Properties()} + set {_uniqueStorage()._properties = newValue} + } + /// Returns true if `properties` has been explicitly set. + var hasProperties: Bool {return _storage._properties != nil} + /// Clears the value of `properties`. Subsequent reads from it will return its default value. + mutating func clearProperties() {_storage._properties = nil} + + var discriminator: String { + get {return _storage._discriminator} + set {_uniqueStorage()._discriminator = newValue} + } + + var readOnly: Bool { + get {return _storage._readOnly} + set {_uniqueStorage()._readOnly = newValue} + } + + var xml: Openapi_V2_Xml { + get {return _storage._xml ?? Openapi_V2_Xml()} + set {_uniqueStorage()._xml = newValue} + } + /// Returns true if `xml` has been explicitly set. + var hasXml: Bool {return _storage._xml != nil} + /// Clears the value of `xml`. Subsequent reads from it will return its default value. + mutating func clearXml() {_storage._xml = nil} + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var example: Openapi_V2_Any { + get {return _storage._example ?? Openapi_V2_Any()} + set {_uniqueStorage()._example = newValue} + } + /// Returns true if `example` has been explicitly set. + var hasExample: Bool {return _storage._example != nil} + /// Clears the value of `example`. Subsequent reads from it will return its default value. + mutating func clearExample() {_storage._example = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._ref) + case 2: try decoder.decodeSingularStringField(value: &_storage._format) + case 3: try decoder.decodeSingularStringField(value: &_storage._title) + case 4: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 5: try decoder.decodeSingularMessageField(value: &_storage._default) + case 6: try decoder.decodeSingularDoubleField(value: &_storage._multipleOf) + case 7: try decoder.decodeSingularDoubleField(value: &_storage._maximum) + case 8: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMaximum) + case 9: try decoder.decodeSingularDoubleField(value: &_storage._minimum) + case 10: try decoder.decodeSingularBoolField(value: &_storage._exclusiveMinimum) + case 11: try decoder.decodeSingularInt64Field(value: &_storage._maxLength) + case 12: try decoder.decodeSingularInt64Field(value: &_storage._minLength) + case 13: try decoder.decodeSingularStringField(value: &_storage._pattern) + case 14: try decoder.decodeSingularInt64Field(value: &_storage._maxItems) + case 15: try decoder.decodeSingularInt64Field(value: &_storage._minItems) + case 16: try decoder.decodeSingularBoolField(value: &_storage._uniqueItems) + case 17: try decoder.decodeSingularInt64Field(value: &_storage._maxProperties) + case 18: try decoder.decodeSingularInt64Field(value: &_storage._minProperties) + case 19: try decoder.decodeRepeatedStringField(value: &_storage._required) + case 20: try decoder.decodeRepeatedMessageField(value: &_storage._enum) + case 21: try decoder.decodeSingularMessageField(value: &_storage._additionalProperties) + case 22: try decoder.decodeSingularMessageField(value: &_storage._type) + case 23: try decoder.decodeSingularMessageField(value: &_storage._items) + case 24: try decoder.decodeRepeatedMessageField(value: &_storage._allOf) + case 25: try decoder.decodeSingularMessageField(value: &_storage._properties) + case 26: try decoder.decodeSingularStringField(value: &_storage._discriminator) + case 27: try decoder.decodeSingularBoolField(value: &_storage._readOnly) + case 28: try decoder.decodeSingularMessageField(value: &_storage._xml) + case 29: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 30: try decoder.decodeSingularMessageField(value: &_storage._example) + case 31: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._ref.isEmpty { + try visitor.visitSingularStringField(value: _storage._ref, fieldNumber: 1) + } + if !_storage._format.isEmpty { + try visitor.visitSingularStringField(value: _storage._format, fieldNumber: 2) + } + if !_storage._title.isEmpty { + try visitor.visitSingularStringField(value: _storage._title, fieldNumber: 3) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 4) + } + if let v = _storage._default { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if _storage._multipleOf != 0 { + try visitor.visitSingularDoubleField(value: _storage._multipleOf, fieldNumber: 6) + } + if _storage._maximum != 0 { + try visitor.visitSingularDoubleField(value: _storage._maximum, fieldNumber: 7) + } + if _storage._exclusiveMaximum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMaximum, fieldNumber: 8) + } + if _storage._minimum != 0 { + try visitor.visitSingularDoubleField(value: _storage._minimum, fieldNumber: 9) + } + if _storage._exclusiveMinimum != false { + try visitor.visitSingularBoolField(value: _storage._exclusiveMinimum, fieldNumber: 10) + } + if _storage._maxLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxLength, fieldNumber: 11) + } + if _storage._minLength != 0 { + try visitor.visitSingularInt64Field(value: _storage._minLength, fieldNumber: 12) + } + if !_storage._pattern.isEmpty { + try visitor.visitSingularStringField(value: _storage._pattern, fieldNumber: 13) + } + if _storage._maxItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxItems, fieldNumber: 14) + } + if _storage._minItems != 0 { + try visitor.visitSingularInt64Field(value: _storage._minItems, fieldNumber: 15) + } + if _storage._uniqueItems != false { + try visitor.visitSingularBoolField(value: _storage._uniqueItems, fieldNumber: 16) + } + if _storage._maxProperties != 0 { + try visitor.visitSingularInt64Field(value: _storage._maxProperties, fieldNumber: 17) + } + if _storage._minProperties != 0 { + try visitor.visitSingularInt64Field(value: _storage._minProperties, fieldNumber: 18) + } + if !_storage._required.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._required, fieldNumber: 19) + } + if !_storage._enum.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._enum, fieldNumber: 20) + } + if let v = _storage._additionalProperties { + try visitor.visitSingularMessageField(value: v, fieldNumber: 21) + } + if let v = _storage._type { + try visitor.visitSingularMessageField(value: v, fieldNumber: 22) + } + if let v = _storage._items { + try visitor.visitSingularMessageField(value: v, fieldNumber: 23) + } + if !_storage._allOf.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._allOf, fieldNumber: 24) + } + if let v = _storage._properties { + try visitor.visitSingularMessageField(value: v, fieldNumber: 25) + } + if !_storage._discriminator.isEmpty { + try visitor.visitSingularStringField(value: _storage._discriminator, fieldNumber: 26) + } + if _storage._readOnly != false { + try visitor.visitSingularBoolField(value: _storage._readOnly, fieldNumber: 27) + } + if let v = _storage._xml { + try visitor.visitSingularMessageField(value: v, fieldNumber: 28) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 29) + } + if let v = _storage._example { + try visitor.visitSingularMessageField(value: v, fieldNumber: 30) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 31) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_SchemaItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SchemaItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var schema: Openapi_V2_Schema { + get { + if case .schema(let v)? = _storage._oneof {return v} + return Openapi_V2_Schema() + } + set {_uniqueStorage()._oneof = .schema(newValue)} + } + + var fileSchema: Openapi_V2_FileSchema { + get { + if case .fileSchema(let v)? = _storage._oneof {return v} + return Openapi_V2_FileSchema() + } + set {_uniqueStorage()._oneof = .fileSchema(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case schema(Openapi_V2_Schema) + case fileSchema(Openapi_V2_FileSchema) + + static func ==(lhs: Openapi_V2_SchemaItem.OneOf_Oneof, rhs: Openapi_V2_SchemaItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.schema(let l), .schema(let r)): return l == r + case (.fileSchema(let l), .fileSchema(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_Schema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .schema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .schema(v)} + case 2: + var v: Openapi_V2_FileSchema? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .fileSchema(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .fileSchema(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .schema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .fileSchema(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_SecurityDefinitions: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SecurityDefinitions" + + var additionalProperties: [Openapi_V2_NamedSecurityDefinitionsItem] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_SecurityDefinitionsItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SecurityDefinitionsItem" + + var oneof: OneOf_Oneof? { + get {return _storage._oneof} + set {_uniqueStorage()._oneof = newValue} + } + + var basicAuthenticationSecurity: Openapi_V2_BasicAuthenticationSecurity { + get { + if case .basicAuthenticationSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_BasicAuthenticationSecurity() + } + set {_uniqueStorage()._oneof = .basicAuthenticationSecurity(newValue)} + } + + var apiKeySecurity: Openapi_V2_ApiKeySecurity { + get { + if case .apiKeySecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_ApiKeySecurity() + } + set {_uniqueStorage()._oneof = .apiKeySecurity(newValue)} + } + + var oauth2ImplicitSecurity: Openapi_V2_Oauth2ImplicitSecurity { + get { + if case .oauth2ImplicitSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2ImplicitSecurity() + } + set {_uniqueStorage()._oneof = .oauth2ImplicitSecurity(newValue)} + } + + var oauth2PasswordSecurity: Openapi_V2_Oauth2PasswordSecurity { + get { + if case .oauth2PasswordSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2PasswordSecurity() + } + set {_uniqueStorage()._oneof = .oauth2PasswordSecurity(newValue)} + } + + var oauth2ApplicationSecurity: Openapi_V2_Oauth2ApplicationSecurity { + get { + if case .oauth2ApplicationSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2ApplicationSecurity() + } + set {_uniqueStorage()._oneof = .oauth2ApplicationSecurity(newValue)} + } + + var oauth2AccessCodeSecurity: Openapi_V2_Oauth2AccessCodeSecurity { + get { + if case .oauth2AccessCodeSecurity(let v)? = _storage._oneof {return v} + return Openapi_V2_Oauth2AccessCodeSecurity() + } + set {_uniqueStorage()._oneof = .oauth2AccessCodeSecurity(newValue)} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OneOf_Oneof: Equatable { + case basicAuthenticationSecurity(Openapi_V2_BasicAuthenticationSecurity) + case apiKeySecurity(Openapi_V2_ApiKeySecurity) + case oauth2ImplicitSecurity(Openapi_V2_Oauth2ImplicitSecurity) + case oauth2PasswordSecurity(Openapi_V2_Oauth2PasswordSecurity) + case oauth2ApplicationSecurity(Openapi_V2_Oauth2ApplicationSecurity) + case oauth2AccessCodeSecurity(Openapi_V2_Oauth2AccessCodeSecurity) + + static func ==(lhs: Openapi_V2_SecurityDefinitionsItem.OneOf_Oneof, rhs: Openapi_V2_SecurityDefinitionsItem.OneOf_Oneof) -> Bool { + switch (lhs, rhs) { + case (.basicAuthenticationSecurity(let l), .basicAuthenticationSecurity(let r)): return l == r + case (.apiKeySecurity(let l), .apiKeySecurity(let r)): return l == r + case (.oauth2ImplicitSecurity(let l), .oauth2ImplicitSecurity(let r)): return l == r + case (.oauth2PasswordSecurity(let l), .oauth2PasswordSecurity(let r)): return l == r + case (.oauth2ApplicationSecurity(let l), .oauth2ApplicationSecurity(let r)): return l == r + case (.oauth2AccessCodeSecurity(let l), .oauth2AccessCodeSecurity(let r)): return l == r + default: return false + } + } + } + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: + var v: Openapi_V2_BasicAuthenticationSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .basicAuthenticationSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .basicAuthenticationSecurity(v)} + case 2: + var v: Openapi_V2_ApiKeySecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .apiKeySecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .apiKeySecurity(v)} + case 3: + var v: Openapi_V2_Oauth2ImplicitSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2ImplicitSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2ImplicitSecurity(v)} + case 4: + var v: Openapi_V2_Oauth2PasswordSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2PasswordSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2PasswordSecurity(v)} + case 5: + var v: Openapi_V2_Oauth2ApplicationSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2ApplicationSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2ApplicationSecurity(v)} + case 6: + var v: Openapi_V2_Oauth2AccessCodeSecurity? + if let current = _storage._oneof { + try decoder.handleConflictingOneOf() + if case .oauth2AccessCodeSecurity(let m) = current {v = m} + } + try decoder.decodeSingularMessageField(value: &v) + if let v = v {_storage._oneof = .oauth2AccessCodeSecurity(v)} + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + switch _storage._oneof { + case .basicAuthenticationSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + case .apiKeySecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + case .oauth2ImplicitSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + case .oauth2PasswordSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + case .oauth2ApplicationSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + case .oauth2AccessCodeSecurity(let v)?: + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + case nil: break + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_SecurityRequirement: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".SecurityRequirement" + + var additionalProperties: [Openapi_V2_NamedStringArray] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_StringArray: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".StringArray" + + var value: [String] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.value.isEmpty { + try visitor.visitRepeatedStringField(value: self.value, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Tag: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Tag" + + var name: String { + get {return _storage._name} + set {_uniqueStorage()._name = newValue} + } + + var description_p: String { + get {return _storage._description_p} + set {_uniqueStorage()._description_p = newValue} + } + + var externalDocs: Openapi_V2_ExternalDocs { + get {return _storage._externalDocs ?? Openapi_V2_ExternalDocs()} + set {_uniqueStorage()._externalDocs = newValue} + } + /// Returns true if `externalDocs` has been explicitly set. + var hasExternalDocs: Bool {return _storage._externalDocs != nil} + /// Clears the value of `externalDocs`. Subsequent reads from it will return its default value. + mutating func clearExternalDocs() {_storage._externalDocs = nil} + + var vendorExtension: [Openapi_V2_NamedAny] { + get {return _storage._vendorExtension} + set {_uniqueStorage()._vendorExtension = newValue} + } + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._name) + case 2: try decoder.decodeSingularStringField(value: &_storage._description_p) + case 3: try decoder.decodeSingularMessageField(value: &_storage._externalDocs) + case 4: try decoder.decodeRepeatedMessageField(value: &_storage._vendorExtension) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !_storage._name.isEmpty { + try visitor.visitSingularStringField(value: _storage._name, fieldNumber: 1) + } + if !_storage._description_p.isEmpty { + try visitor.visitSingularStringField(value: _storage._description_p, fieldNumber: 2) + } + if let v = _storage._externalDocs { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._vendorExtension, fieldNumber: 4) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Openapi_V2_TypeItem: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".TypeItem" + + var value: [String] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.value.isEmpty { + try visitor.visitRepeatedStringField(value: self.value, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Any property starting with x- is valid. +struct Openapi_V2_VendorExtension: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".VendorExtension" + + var additionalProperties: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedMessageField(value: &self.additionalProperties) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.additionalProperties.isEmpty { + try visitor.visitRepeatedMessageField(value: self.additionalProperties, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +struct Openapi_V2_Xml: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Xml" + + var name: String = String() + + var namespace: String = String() + + var prefix: String = String() + + var attribute: Bool = false + + var wrapped: Bool = false + + var vendorExtension: [Openapi_V2_NamedAny] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.namespace) + case 3: try decoder.decodeSingularStringField(value: &self.prefix) + case 4: try decoder.decodeSingularBoolField(value: &self.attribute) + case 5: try decoder.decodeSingularBoolField(value: &self.wrapped) + case 6: try decoder.decodeRepeatedMessageField(value: &self.vendorExtension) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.namespace.isEmpty { + try visitor.visitSingularStringField(value: self.namespace, fieldNumber: 2) + } + if !self.prefix.isEmpty { + try visitor.visitSingularStringField(value: self.prefix, fieldNumber: 3) + } + if self.attribute != false { + try visitor.visitSingularBoolField(value: self.attribute, fieldNumber: 4) + } + if self.wrapped != false { + try visitor.visitSingularBoolField(value: self.wrapped, fieldNumber: 5) + } + if !self.vendorExtension.isEmpty { + try visitor.visitRepeatedMessageField(value: self.vendorExtension, fieldNumber: 6) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "openapi.v2" + +extension Openapi_V2_AdditionalPropertiesItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "schema"), + 2: .same(proto: "boolean"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_AdditionalPropertiesItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_AdditionalPropertiesItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Any: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "value"), + 2: .same(proto: "yaml"), + ] + + fileprivate class _StorageClass { + var _value: SwiftProtobuf.Google_Protobuf_Any? = nil + var _yaml: String = String() + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _value = source._value + _yaml = source._yaml + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Any) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._value != other_storage._value {return false} + if _storage._yaml != other_storage._yaml {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ApiKeySecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "name"), + 3: .same(proto: "in"), + 4: .same(proto: "description"), + 5: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ApiKeySecurity) -> Bool { + if self.type != other.type {return false} + if self.name != other.name {return false} + if self.`in` != other.`in` {return false} + if self.description_p != other.description_p {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_BasicAuthenticationSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "description"), + 3: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_BasicAuthenticationSecurity) -> Bool { + if self.type != other.type {return false} + if self.description_p != other.description_p {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_BodyParameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "description"), + 2: .same(proto: "name"), + 3: .same(proto: "in"), + 4: .same(proto: "required"), + 5: .same(proto: "schema"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _description_p: String = String() + var _name: String = String() + var _in: String = String() + var _required: Bool = false + var _schema: Openapi_V2_Schema? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _description_p = source._description_p + _name = source._name + _in = source._in + _required = source._required + _schema = source._schema + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_BodyParameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._in != other_storage._in {return false} + if _storage._required != other_storage._required {return false} + if _storage._schema != other_storage._schema {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Contact: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "url"), + 3: .same(proto: "email"), + 4: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Contact) -> Bool { + if self.name != other.name {return false} + if self.url != other.url {return false} + if self.email != other.email {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Default: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Default) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Definitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Definitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Document: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "swagger"), + 2: .same(proto: "info"), + 3: .same(proto: "host"), + 4: .standard(proto: "base_path"), + 5: .same(proto: "schemes"), + 6: .same(proto: "consumes"), + 7: .same(proto: "produces"), + 8: .same(proto: "paths"), + 9: .same(proto: "definitions"), + 10: .same(proto: "parameters"), + 11: .same(proto: "responses"), + 12: .same(proto: "security"), + 13: .standard(proto: "security_definitions"), + 14: .same(proto: "tags"), + 15: .standard(proto: "external_docs"), + 16: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _swagger: String = String() + var _info: Openapi_V2_Info? = nil + var _host: String = String() + var _basePath: String = String() + var _schemes: [String] = [] + var _consumes: [String] = [] + var _produces: [String] = [] + var _paths: Openapi_V2_Paths? = nil + var _definitions: Openapi_V2_Definitions? = nil + var _parameters: Openapi_V2_ParameterDefinitions? = nil + var _responses: Openapi_V2_ResponseDefinitions? = nil + var _security: [Openapi_V2_SecurityRequirement] = [] + var _securityDefinitions: Openapi_V2_SecurityDefinitions? = nil + var _tags: [Openapi_V2_Tag] = [] + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _swagger = source._swagger + _info = source._info + _host = source._host + _basePath = source._basePath + _schemes = source._schemes + _consumes = source._consumes + _produces = source._produces + _paths = source._paths + _definitions = source._definitions + _parameters = source._parameters + _responses = source._responses + _security = source._security + _securityDefinitions = source._securityDefinitions + _tags = source._tags + _externalDocs = source._externalDocs + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Document) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._swagger != other_storage._swagger {return false} + if _storage._info != other_storage._info {return false} + if _storage._host != other_storage._host {return false} + if _storage._basePath != other_storage._basePath {return false} + if _storage._schemes != other_storage._schemes {return false} + if _storage._consumes != other_storage._consumes {return false} + if _storage._produces != other_storage._produces {return false} + if _storage._paths != other_storage._paths {return false} + if _storage._definitions != other_storage._definitions {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._responses != other_storage._responses {return false} + if _storage._security != other_storage._security {return false} + if _storage._securityDefinitions != other_storage._securityDefinitions {return false} + if _storage._tags != other_storage._tags {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Examples: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Examples) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ExternalDocs: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "description"), + 2: .same(proto: "url"), + 3: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ExternalDocs) -> Bool { + if self.description_p != other.description_p {return false} + if self.url != other.url {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_FileSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "format"), + 2: .same(proto: "title"), + 3: .same(proto: "description"), + 4: .same(proto: "default"), + 5: .same(proto: "required"), + 6: .same(proto: "type"), + 7: .standard(proto: "read_only"), + 8: .standard(proto: "external_docs"), + 9: .same(proto: "example"), + 10: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _format: String = String() + var _title: String = String() + var _description_p: String = String() + var _default: Openapi_V2_Any? = nil + var _required: [String] = [] + var _type: String = String() + var _readOnly: Bool = false + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _example: Openapi_V2_Any? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _format = source._format + _title = source._title + _description_p = source._description_p + _default = source._default + _required = source._required + _type = source._type + _readOnly = source._readOnly + _externalDocs = source._externalDocs + _example = source._example + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_FileSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._format != other_storage._format {return false} + if _storage._title != other_storage._title {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._default != other_storage._default {return false} + if _storage._required != other_storage._required {return false} + if _storage._type != other_storage._type {return false} + if _storage._readOnly != other_storage._readOnly {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._example != other_storage._example {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_FormDataParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .standard(proto: "allow_empty_value"), + 6: .same(proto: "type"), + 7: .same(proto: "format"), + 8: .same(proto: "items"), + 9: .standard(proto: "collection_format"), + 10: .same(proto: "default"), + 11: .same(proto: "maximum"), + 12: .standard(proto: "exclusive_maximum"), + 13: .same(proto: "minimum"), + 14: .standard(proto: "exclusive_minimum"), + 15: .standard(proto: "max_length"), + 16: .standard(proto: "min_length"), + 17: .same(proto: "pattern"), + 18: .standard(proto: "max_items"), + 19: .standard(proto: "min_items"), + 20: .standard(proto: "unique_items"), + 21: .same(proto: "enum"), + 22: .standard(proto: "multiple_of"), + 23: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _allowEmptyValue: Bool = false + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _allowEmptyValue = source._allowEmptyValue + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_FormDataParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._allowEmptyValue != other_storage._allowEmptyValue {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Header: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "format"), + 3: .same(proto: "items"), + 4: .standard(proto: "collection_format"), + 5: .same(proto: "default"), + 6: .same(proto: "maximum"), + 7: .standard(proto: "exclusive_maximum"), + 8: .same(proto: "minimum"), + 9: .standard(proto: "exclusive_minimum"), + 10: .standard(proto: "max_length"), + 11: .standard(proto: "min_length"), + 12: .same(proto: "pattern"), + 13: .standard(proto: "max_items"), + 14: .standard(proto: "min_items"), + 15: .standard(proto: "unique_items"), + 16: .same(proto: "enum"), + 17: .standard(proto: "multiple_of"), + 18: .same(proto: "description"), + 19: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Header) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_HeaderParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .same(proto: "type"), + 6: .same(proto: "format"), + 7: .same(proto: "items"), + 8: .standard(proto: "collection_format"), + 9: .same(proto: "default"), + 10: .same(proto: "maximum"), + 11: .standard(proto: "exclusive_maximum"), + 12: .same(proto: "minimum"), + 13: .standard(proto: "exclusive_minimum"), + 14: .standard(proto: "max_length"), + 15: .standard(proto: "min_length"), + 16: .same(proto: "pattern"), + 17: .standard(proto: "max_items"), + 18: .standard(proto: "min_items"), + 19: .standard(proto: "unique_items"), + 20: .same(proto: "enum"), + 21: .standard(proto: "multiple_of"), + 22: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_HeaderParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Headers: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Headers) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Info: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "title"), + 2: .same(proto: "version"), + 3: .same(proto: "description"), + 4: .standard(proto: "terms_of_service"), + 5: .same(proto: "contact"), + 6: .same(proto: "license"), + 7: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _title: String = String() + var _version: String = String() + var _description_p: String = String() + var _termsOfService: String = String() + var _contact: Openapi_V2_Contact? = nil + var _license: Openapi_V2_License? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _title = source._title + _version = source._version + _description_p = source._description_p + _termsOfService = source._termsOfService + _contact = source._contact + _license = source._license + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Info) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._title != other_storage._title {return false} + if _storage._version != other_storage._version {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._termsOfService != other_storage._termsOfService {return false} + if _storage._contact != other_storage._contact {return false} + if _storage._license != other_storage._license {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ItemsItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "schema"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ItemsItem) -> Bool { + if self.schema != other.schema {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_JsonReference: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "_ref"), + 2: .same(proto: "description"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_JsonReference) -> Bool { + if self.ref != other.ref {return false} + if self.description_p != other.description_p {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_License: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "url"), + 3: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_License) -> Bool { + if self.name != other.name {return false} + if self.url != other.url {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedAny: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Any? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedAny) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedHeader: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Header? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedHeader) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedParameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Parameter? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedParameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedPathItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_PathItem? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedPathItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedResponse: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Response? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedResponse) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedResponseValue: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_ResponseValue? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedResponseValue) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_Schema? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedSecurityDefinitionsItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_SecurityDefinitionsItem? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedSecurityDefinitionsItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedString: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedString) -> Bool { + if self.name != other.name {return false} + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NamedStringArray: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _value: Openapi_V2_StringArray? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _value = source._value + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NamedStringArray) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._value != other_storage._value {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_NonBodyParameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "header_parameter_sub_schema"), + 2: .standard(proto: "form_data_parameter_sub_schema"), + 3: .standard(proto: "query_parameter_sub_schema"), + 4: .standard(proto: "path_parameter_sub_schema"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_NonBodyParameter.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_NonBodyParameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2AccessCodeSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "authorization_url"), + 5: .standard(proto: "token_url"), + 6: .same(proto: "description"), + 7: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _authorizationURL: String = String() + var _tokenURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _authorizationURL = source._authorizationURL + _tokenURL = source._tokenURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2AccessCodeSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._authorizationURL != other_storage._authorizationURL {return false} + if _storage._tokenURL != other_storage._tokenURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2ApplicationSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "token_url"), + 5: .same(proto: "description"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _tokenURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _tokenURL = source._tokenURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2ApplicationSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._tokenURL != other_storage._tokenURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2ImplicitSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "authorization_url"), + 5: .same(proto: "description"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _authorizationURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _authorizationURL = source._authorizationURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2ImplicitSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._authorizationURL != other_storage._authorizationURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2PasswordSecurity: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "flow"), + 3: .same(proto: "scopes"), + 4: .standard(proto: "token_url"), + 5: .same(proto: "description"), + 6: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _flow: String = String() + var _scopes: Openapi_V2_Oauth2Scopes? = nil + var _tokenURL: String = String() + var _description_p: String = String() + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _flow = source._flow + _scopes = source._scopes + _tokenURL = source._tokenURL + _description_p = source._description_p + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2PasswordSecurity) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._flow != other_storage._flow {return false} + if _storage._scopes != other_storage._scopes {return false} + if _storage._tokenURL != other_storage._tokenURL {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Oauth2Scopes: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Oauth2Scopes) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Operation: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "tags"), + 2: .same(proto: "summary"), + 3: .same(proto: "description"), + 4: .standard(proto: "external_docs"), + 5: .standard(proto: "operation_id"), + 6: .same(proto: "produces"), + 7: .same(proto: "consumes"), + 8: .same(proto: "parameters"), + 9: .same(proto: "responses"), + 10: .same(proto: "schemes"), + 11: .same(proto: "deprecated"), + 12: .same(proto: "security"), + 13: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _tags: [String] = [] + var _summary: String = String() + var _description_p: String = String() + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _operationID: String = String() + var _produces: [String] = [] + var _consumes: [String] = [] + var _parameters: [Openapi_V2_ParametersItem] = [] + var _responses: Openapi_V2_Responses? = nil + var _schemes: [String] = [] + var _deprecated: Bool = false + var _security: [Openapi_V2_SecurityRequirement] = [] + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _tags = source._tags + _summary = source._summary + _description_p = source._description_p + _externalDocs = source._externalDocs + _operationID = source._operationID + _produces = source._produces + _consumes = source._consumes + _parameters = source._parameters + _responses = source._responses + _schemes = source._schemes + _deprecated = source._deprecated + _security = source._security + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Operation) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._tags != other_storage._tags {return false} + if _storage._summary != other_storage._summary {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._operationID != other_storage._operationID {return false} + if _storage._produces != other_storage._produces {return false} + if _storage._consumes != other_storage._consumes {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._responses != other_storage._responses {return false} + if _storage._schemes != other_storage._schemes {return false} + if _storage._deprecated != other_storage._deprecated {return false} + if _storage._security != other_storage._security {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Parameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "body_parameter"), + 2: .standard(proto: "non_body_parameter"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_Parameter.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Parameter) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ParameterDefinitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ParameterDefinitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ParametersItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "parameter"), + 2: .standard(proto: "json_reference"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_ParametersItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ParametersItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_PathItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "_ref"), + 2: .same(proto: "get"), + 3: .same(proto: "put"), + 4: .same(proto: "post"), + 5: .same(proto: "delete"), + 6: .same(proto: "options"), + 7: .same(proto: "head"), + 8: .same(proto: "patch"), + 9: .same(proto: "parameters"), + 10: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _ref: String = String() + var _get: Openapi_V2_Operation? = nil + var _put: Openapi_V2_Operation? = nil + var _post: Openapi_V2_Operation? = nil + var _delete: Openapi_V2_Operation? = nil + var _options: Openapi_V2_Operation? = nil + var _head: Openapi_V2_Operation? = nil + var _patch: Openapi_V2_Operation? = nil + var _parameters: [Openapi_V2_ParametersItem] = [] + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _ref = source._ref + _get = source._get + _put = source._put + _post = source._post + _delete = source._delete + _options = source._options + _head = source._head + _patch = source._patch + _parameters = source._parameters + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_PathItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._ref != other_storage._ref {return false} + if _storage._get != other_storage._get {return false} + if _storage._put != other_storage._put {return false} + if _storage._post != other_storage._post {return false} + if _storage._delete != other_storage._delete {return false} + if _storage._options != other_storage._options {return false} + if _storage._head != other_storage._head {return false} + if _storage._patch != other_storage._patch {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_PathParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .same(proto: "type"), + 6: .same(proto: "format"), + 7: .same(proto: "items"), + 8: .standard(proto: "collection_format"), + 9: .same(proto: "default"), + 10: .same(proto: "maximum"), + 11: .standard(proto: "exclusive_maximum"), + 12: .same(proto: "minimum"), + 13: .standard(proto: "exclusive_minimum"), + 14: .standard(proto: "max_length"), + 15: .standard(proto: "min_length"), + 16: .same(proto: "pattern"), + 17: .standard(proto: "max_items"), + 18: .standard(proto: "min_items"), + 19: .standard(proto: "unique_items"), + 20: .same(proto: "enum"), + 21: .standard(proto: "multiple_of"), + 22: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_PathParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Paths: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "vendor_extension"), + 2: .same(proto: "path"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Paths) -> Bool { + if self.vendorExtension != other.vendorExtension {return false} + if self.path != other.path {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_PrimitivesItems: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "format"), + 3: .same(proto: "items"), + 4: .standard(proto: "collection_format"), + 5: .same(proto: "default"), + 6: .same(proto: "maximum"), + 7: .standard(proto: "exclusive_maximum"), + 8: .same(proto: "minimum"), + 9: .standard(proto: "exclusive_minimum"), + 10: .standard(proto: "max_length"), + 11: .standard(proto: "min_length"), + 12: .same(proto: "pattern"), + 13: .standard(proto: "max_items"), + 14: .standard(proto: "min_items"), + 15: .standard(proto: "unique_items"), + 16: .same(proto: "enum"), + 17: .standard(proto: "multiple_of"), + 18: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_PrimitivesItems) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Properties: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Properties) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_QueryParameterSubSchema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "required"), + 2: .same(proto: "in"), + 3: .same(proto: "description"), + 4: .same(proto: "name"), + 5: .standard(proto: "allow_empty_value"), + 6: .same(proto: "type"), + 7: .same(proto: "format"), + 8: .same(proto: "items"), + 9: .standard(proto: "collection_format"), + 10: .same(proto: "default"), + 11: .same(proto: "maximum"), + 12: .standard(proto: "exclusive_maximum"), + 13: .same(proto: "minimum"), + 14: .standard(proto: "exclusive_minimum"), + 15: .standard(proto: "max_length"), + 16: .standard(proto: "min_length"), + 17: .same(proto: "pattern"), + 18: .standard(proto: "max_items"), + 19: .standard(proto: "min_items"), + 20: .standard(proto: "unique_items"), + 21: .same(proto: "enum"), + 22: .standard(proto: "multiple_of"), + 23: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _required: Bool = false + var _in: String = String() + var _description_p: String = String() + var _name: String = String() + var _allowEmptyValue: Bool = false + var _type: String = String() + var _format: String = String() + var _items: Openapi_V2_PrimitivesItems? = nil + var _collectionFormat: String = String() + var _default: Openapi_V2_Any? = nil + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _enum: [Openapi_V2_Any] = [] + var _multipleOf: Double = 0 + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _required = source._required + _in = source._in + _description_p = source._description_p + _name = source._name + _allowEmptyValue = source._allowEmptyValue + _type = source._type + _format = source._format + _items = source._items + _collectionFormat = source._collectionFormat + _default = source._default + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _enum = source._enum + _multipleOf = source._multipleOf + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_QueryParameterSubSchema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._required != other_storage._required {return false} + if _storage._in != other_storage._in {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._name != other_storage._name {return false} + if _storage._allowEmptyValue != other_storage._allowEmptyValue {return false} + if _storage._type != other_storage._type {return false} + if _storage._format != other_storage._format {return false} + if _storage._items != other_storage._items {return false} + if _storage._collectionFormat != other_storage._collectionFormat {return false} + if _storage._default != other_storage._default {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Response: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "description"), + 2: .same(proto: "schema"), + 3: .same(proto: "headers"), + 4: .same(proto: "examples"), + 5: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _description_p: String = String() + var _schema: Openapi_V2_SchemaItem? = nil + var _headers: Openapi_V2_Headers? = nil + var _examples: Openapi_V2_Examples? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _description_p = source._description_p + _schema = source._schema + _headers = source._headers + _examples = source._examples + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Response) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._description_p != other_storage._description_p {return false} + if _storage._schema != other_storage._schema {return false} + if _storage._headers != other_storage._headers {return false} + if _storage._examples != other_storage._examples {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ResponseDefinitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ResponseDefinitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_ResponseValue: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "response"), + 2: .standard(proto: "json_reference"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_ResponseValue.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_ResponseValue) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Responses: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "response_code"), + 2: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Responses) -> Bool { + if self.responseCode != other.responseCode {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Schema: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "_ref"), + 2: .same(proto: "format"), + 3: .same(proto: "title"), + 4: .same(proto: "description"), + 5: .same(proto: "default"), + 6: .standard(proto: "multiple_of"), + 7: .same(proto: "maximum"), + 8: .standard(proto: "exclusive_maximum"), + 9: .same(proto: "minimum"), + 10: .standard(proto: "exclusive_minimum"), + 11: .standard(proto: "max_length"), + 12: .standard(proto: "min_length"), + 13: .same(proto: "pattern"), + 14: .standard(proto: "max_items"), + 15: .standard(proto: "min_items"), + 16: .standard(proto: "unique_items"), + 17: .standard(proto: "max_properties"), + 18: .standard(proto: "min_properties"), + 19: .same(proto: "required"), + 20: .same(proto: "enum"), + 21: .standard(proto: "additional_properties"), + 22: .same(proto: "type"), + 23: .same(proto: "items"), + 24: .standard(proto: "all_of"), + 25: .same(proto: "properties"), + 26: .same(proto: "discriminator"), + 27: .standard(proto: "read_only"), + 28: .same(proto: "xml"), + 29: .standard(proto: "external_docs"), + 30: .same(proto: "example"), + 31: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _ref: String = String() + var _format: String = String() + var _title: String = String() + var _description_p: String = String() + var _default: Openapi_V2_Any? = nil + var _multipleOf: Double = 0 + var _maximum: Double = 0 + var _exclusiveMaximum: Bool = false + var _minimum: Double = 0 + var _exclusiveMinimum: Bool = false + var _maxLength: Int64 = 0 + var _minLength: Int64 = 0 + var _pattern: String = String() + var _maxItems: Int64 = 0 + var _minItems: Int64 = 0 + var _uniqueItems: Bool = false + var _maxProperties: Int64 = 0 + var _minProperties: Int64 = 0 + var _required: [String] = [] + var _enum: [Openapi_V2_Any] = [] + var _additionalProperties: Openapi_V2_AdditionalPropertiesItem? = nil + var _type: Openapi_V2_TypeItem? = nil + var _items: Openapi_V2_ItemsItem? = nil + var _allOf: [Openapi_V2_Schema] = [] + var _properties: Openapi_V2_Properties? = nil + var _discriminator: String = String() + var _readOnly: Bool = false + var _xml: Openapi_V2_Xml? = nil + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _example: Openapi_V2_Any? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _ref = source._ref + _format = source._format + _title = source._title + _description_p = source._description_p + _default = source._default + _multipleOf = source._multipleOf + _maximum = source._maximum + _exclusiveMaximum = source._exclusiveMaximum + _minimum = source._minimum + _exclusiveMinimum = source._exclusiveMinimum + _maxLength = source._maxLength + _minLength = source._minLength + _pattern = source._pattern + _maxItems = source._maxItems + _minItems = source._minItems + _uniqueItems = source._uniqueItems + _maxProperties = source._maxProperties + _minProperties = source._minProperties + _required = source._required + _enum = source._enum + _additionalProperties = source._additionalProperties + _type = source._type + _items = source._items + _allOf = source._allOf + _properties = source._properties + _discriminator = source._discriminator + _readOnly = source._readOnly + _xml = source._xml + _externalDocs = source._externalDocs + _example = source._example + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Schema) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._ref != other_storage._ref {return false} + if _storage._format != other_storage._format {return false} + if _storage._title != other_storage._title {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._default != other_storage._default {return false} + if _storage._multipleOf != other_storage._multipleOf {return false} + if _storage._maximum != other_storage._maximum {return false} + if _storage._exclusiveMaximum != other_storage._exclusiveMaximum {return false} + if _storage._minimum != other_storage._minimum {return false} + if _storage._exclusiveMinimum != other_storage._exclusiveMinimum {return false} + if _storage._maxLength != other_storage._maxLength {return false} + if _storage._minLength != other_storage._minLength {return false} + if _storage._pattern != other_storage._pattern {return false} + if _storage._maxItems != other_storage._maxItems {return false} + if _storage._minItems != other_storage._minItems {return false} + if _storage._uniqueItems != other_storage._uniqueItems {return false} + if _storage._maxProperties != other_storage._maxProperties {return false} + if _storage._minProperties != other_storage._minProperties {return false} + if _storage._required != other_storage._required {return false} + if _storage._enum != other_storage._enum {return false} + if _storage._additionalProperties != other_storage._additionalProperties {return false} + if _storage._type != other_storage._type {return false} + if _storage._items != other_storage._items {return false} + if _storage._allOf != other_storage._allOf {return false} + if _storage._properties != other_storage._properties {return false} + if _storage._discriminator != other_storage._discriminator {return false} + if _storage._readOnly != other_storage._readOnly {return false} + if _storage._xml != other_storage._xml {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._example != other_storage._example {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SchemaItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "schema"), + 2: .standard(proto: "file_schema"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_SchemaItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SchemaItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SecurityDefinitions: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SecurityDefinitions) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SecurityDefinitionsItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "basic_authentication_security"), + 2: .standard(proto: "api_key_security"), + 3: .standard(proto: "oauth2_implicit_security"), + 4: .standard(proto: "oauth2_password_security"), + 5: .standard(proto: "oauth2_application_security"), + 6: .standard(proto: "oauth2_access_code_security"), + ] + + fileprivate class _StorageClass { + var _oneof: Openapi_V2_SecurityDefinitionsItem.OneOf_Oneof? + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _oneof = source._oneof + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SecurityDefinitionsItem) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._oneof != other_storage._oneof {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_SecurityRequirement: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_SecurityRequirement) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_StringArray: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_StringArray) -> Bool { + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Tag: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "description"), + 3: .standard(proto: "external_docs"), + 4: .standard(proto: "vendor_extension"), + ] + + fileprivate class _StorageClass { + var _name: String = String() + var _description_p: String = String() + var _externalDocs: Openapi_V2_ExternalDocs? = nil + var _vendorExtension: [Openapi_V2_NamedAny] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _name = source._name + _description_p = source._description_p + _externalDocs = source._externalDocs + _vendorExtension = source._vendorExtension + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Tag) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._name != other_storage._name {return false} + if _storage._description_p != other_storage._description_p {return false} + if _storage._externalDocs != other_storage._externalDocs {return false} + if _storage._vendorExtension != other_storage._vendorExtension {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_TypeItem: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_TypeItem) -> Bool { + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_VendorExtension: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "additional_properties"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_VendorExtension) -> Bool { + if self.additionalProperties != other.additionalProperties {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_V2_Xml: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "namespace"), + 3: .same(proto: "prefix"), + 4: .same(proto: "attribute"), + 5: .same(proto: "wrapped"), + 6: .standard(proto: "vendor_extension"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_V2_Xml) -> Bool { + if self.name != other.name {return false} + if self.namespace != other.namespace {return false} + if self.prefix != other.prefix {return false} + if self.attribute != other.attribute {return false} + if self.wrapped != other.wrapped {return false} + if self.vendorExtension != other.vendorExtension {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/io.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/io.swift new file mode 100644 index 0000000000..0095ad40c1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/io.swift @@ -0,0 +1,100 @@ +// Copyright 2017 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. + +import Foundation + +// The I/O code below is derived from Apple's swift-protobuf project. +// https://github.com/apple/swift-protobuf +// BEGIN swift-protobuf derivation + +#if os(Linux) + import Glibc +#else + import Darwin.C +#endif + +enum PluginError: Error { + /// Raised for any errors reading the input + case readFailure +} + +// Alias clib's write() so Stdout.write(bytes:) can call it. +private let _write = write + +class Stdin { + static func readall() throws -> Data { + let fd: Int32 = 0 + let buffSize = 32 + var buff = [UInt8]() + while true { + var fragment = [UInt8](repeating: 0, count: buffSize) + let count = read(fd, &fragment, buffSize) + if count < 0 { + throw PluginError.readFailure + } + if count < buffSize { + buff += fragment[0..) -> () in + _ = _write(1, p, bytes.count) + } + } +} + +struct CodePrinter { + private(set) var content = "" + private var currentIndentDepth = 0 + private var currentIndent = "" + private var atLineStart = true + + mutating func print(_ text: String...) { + for t in text { + for c in t.characters { + if c == "\n" { + content.append(c) + atLineStart = true + } else { + if atLineStart { + content.append(currentIndent) + atLineStart = false + } + content.append(c) + } + } + } + } + + mutating private func resetIndent() { + currentIndent = (0.. String in return " " } .joined(separator:"") + } + + mutating func indent() { + currentIndentDepth += 1 + resetIndent() + } + mutating func outdent() { + currentIndentDepth -= 1 + resetIndent() + } +} + +// END swift-protobuf derivation diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/main.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/main.swift new file mode 100644 index 0000000000..d8b204c4e9 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/main.swift @@ -0,0 +1,71 @@ +// Copyright 2017 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. + +import Foundation + +func printDocument(document:Openapi_V2_Document, + name:String, + version:String) -> String { + var code = CodePrinter() + code.print("READING \(name) (\(version))\n") + code.print("Swagger: \(document.swagger)\n") + code.print("Host: \(document.host)\n") + code.print("BasePath: \(document.basePath)\n") + if document.hasInfo { + code.print("Info:\n") + code.indent() + if document.info.title != "" { + code.print("Title: \(document.info.title)\n") + } + if document.info.description_p != "" { + code.print("Description: \(document.info.description_p)\n") + } + if document.info.version != "" { + code.print("Version: \(document.info.version)\n") + } + code.outdent() + } + code.print("Paths:\n") + code.indent() + for pair in document.paths.path { + let v = pair.value + if v.hasGet { + code.print("GET \(pair.name)\n") + } + if v.hasPost { + code.print("POST \(pair.name)\n") + } + } + code.outdent() + return code.content +} + +func main() throws { + var response = Openapi_Plugin_V1_Response() + let rawRequest = try Stdin.readall() + let request = try Openapi_Plugin_V1_Request(serializedData: rawRequest) + let wrapper = request.wrapper + let document = try Openapi_V2_Document(serializedData:wrapper.value) + let report = printDocument(document:document, name:wrapper.name, version:wrapper.version) + if let reportData = report.data(using:.utf8) { + var file = Openapi_Plugin_V1_File() + file.name = "report.txt" + file.data = reportData + response.files.append(file) + } + let serializedResponse = try response.serializedData() + Stdout.write(bytes: serializedResponse) +} + +try main() diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/plugin.pb.swift b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/plugin.pb.swift new file mode 100644 index 0000000000..9eb8f3ec27 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/gnostic-swift-sample/Sources/plugin.pb.swift @@ -0,0 +1,497 @@ +// DO NOT EDIT. +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: plugin.proto +// +// For information on using the generated types, please see the documenation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2017 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. + +// openapic (aka the OpenAPI Compiler) can be extended via plugins. +// A plugin is just a program that reads a Request from stdin +// and writes a Response to stdout. +// +// A plugin executable needs only to be placed somewhere in the path. The +// plugin should be named "openapi_$NAME", and will then be used when the +// flag "--${NAME}_out" is passed to openapic. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that your are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +/// The version number of OpenAPI compiler. +struct Openapi_Plugin_V1_Version: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Version" + + var major: Int32 = 0 + + var minor: Int32 = 0 + + var patch: Int32 = 0 + + /// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + /// be empty for mainline stable releases. + var suffix: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularInt32Field(value: &self.major) + case 2: try decoder.decodeSingularInt32Field(value: &self.minor) + case 3: try decoder.decodeSingularInt32Field(value: &self.patch) + case 4: try decoder.decodeSingularStringField(value: &self.suffix) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if self.major != 0 { + try visitor.visitSingularInt32Field(value: self.major, fieldNumber: 1) + } + if self.minor != 0 { + try visitor.visitSingularInt32Field(value: self.minor, fieldNumber: 2) + } + if self.patch != 0 { + try visitor.visitSingularInt32Field(value: self.patch, fieldNumber: 3) + } + if !self.suffix.isEmpty { + try visitor.visitSingularStringField(value: self.suffix, fieldNumber: 4) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// A parameter passed to the plugin from (or through) the OpenAPI compiler. +struct Openapi_Plugin_V1_Parameter: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Parameter" + + /// The name of the parameter as specified in the option string + var name: String = String() + + /// The parameter value as specified in the option string + var value: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.value.isEmpty { + try visitor.visitSingularStringField(value: self.value, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// An encoded Request is written to the plugin's stdin. +struct Openapi_Plugin_V1_Request: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Request" + + /// A wrapped OpenAPI document to process. + var wrapper: Openapi_Plugin_V1_Wrapper { + get {return _storage._wrapper ?? Openapi_Plugin_V1_Wrapper()} + set {_uniqueStorage()._wrapper = newValue} + } + /// Returns true if `wrapper` has been explicitly set. + var hasWrapper: Bool {return _storage._wrapper != nil} + /// Clears the value of `wrapper`. Subsequent reads from it will return its default value. + mutating func clearWrapper() {_storage._wrapper = nil} + + /// Output path specified in the plugin invocation. + var outputPath: String { + get {return _storage._outputPath} + set {_uniqueStorage()._outputPath = newValue} + } + + /// Plugin parameters parsed from the invocation string. + var parameters: [Openapi_Plugin_V1_Parameter] { + get {return _storage._parameters} + set {_uniqueStorage()._parameters = newValue} + } + + /// The version number of openapi compiler. + var compilerVersion: Openapi_Plugin_V1_Version { + get {return _storage._compilerVersion ?? Openapi_Plugin_V1_Version()} + set {_uniqueStorage()._compilerVersion = newValue} + } + /// Returns true if `compilerVersion` has been explicitly set. + var hasCompilerVersion: Bool {return _storage._compilerVersion != nil} + /// Clears the value of `compilerVersion`. Subsequent reads from it will return its default value. + mutating func clearCompilerVersion() {_storage._compilerVersion = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularMessageField(value: &_storage._wrapper) + case 2: try decoder.decodeSingularStringField(value: &_storage._outputPath) + case 3: try decoder.decodeRepeatedMessageField(value: &_storage._parameters) + case 4: try decoder.decodeSingularMessageField(value: &_storage._compilerVersion) + default: break + } + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._wrapper { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } + if !_storage._outputPath.isEmpty { + try visitor.visitSingularStringField(value: _storage._outputPath, fieldNumber: 2) + } + if !_storage._parameters.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._parameters, fieldNumber: 3) + } + if let v = _storage._compilerVersion { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + } + try unknownFields.traverse(visitor: &visitor) + } + + fileprivate var _storage = _StorageClass.defaultInstance +} + +/// The plugin writes an encoded Response to stdout. +struct Openapi_Plugin_V1_Response: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Response" + + /// Error message. If non-empty, the plugin failed. + /// The plugin process should exit with status code zero + /// even if it reports an error in this way. + /// + /// This should be used to indicate errors which prevent the plugin from + /// operating as intended. Errors which indicate a problem in openapic + /// itself -- such as the input Document being unparseable -- should be + /// reported by writing a message to stderr and exiting with a non-zero + /// status code. + var errors: [String] = [] + + /// file output, each file will be written by openapic to an appropriate location. + var files: [Openapi_Plugin_V1_File] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeRepeatedStringField(value: &self.errors) + case 2: try decoder.decodeRepeatedMessageField(value: &self.files) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.errors.isEmpty { + try visitor.visitRepeatedStringField(value: self.errors, fieldNumber: 1) + } + if !self.files.isEmpty { + try visitor.visitRepeatedMessageField(value: self.files, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// File describes a file generated by a plugin. +struct Openapi_Plugin_V1_File: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".File" + + /// name of the file + var name: String = String() + + /// data to be written to the file + var data: Data = SwiftProtobuf.Internal.emptyData + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularBytesField(value: &self.data) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.data.isEmpty { + try visitor.visitSingularBytesField(value: self.data, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +/// Wrapper wraps an OpenAPI document with its version. +struct Openapi_Plugin_V1_Wrapper: SwiftProtobuf.Message { + static let protoMessageName: String = _protobuf_package + ".Wrapper" + + /// filename or URL of the wrapped document + var name: String = String() + + /// version of the OpenAPI specification that is used by the wrapped document + var version: String = String() + + /// valid serialized protocol buffer of the named OpenAPI specification version + var value: Data = SwiftProtobuf.Internal.emptyData + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + /// Used by the decoding initializers in the SwiftProtobuf library, not generally + /// used directly. `init(serializedData:)`, `init(jsonUTF8Data:)`, and other decoding + /// initializers are defined in the SwiftProtobuf library. See the Message and + /// Message+*Additions` files. + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &self.name) + case 2: try decoder.decodeSingularStringField(value: &self.version) + case 3: try decoder.decodeSingularBytesField(value: &self.value) + default: break + } + } + } + + /// Used by the encoding methods of the SwiftProtobuf library, not generally + /// used directly. `Message.serializedData()`, `Message.jsonUTF8Data()`, and + /// other serializer methods are defined in the SwiftProtobuf library. See the + /// `Message` and `Message+*Additions` files. + func traverse(visitor: inout V) throws { + if !self.name.isEmpty { + try visitor.visitSingularStringField(value: self.name, fieldNumber: 1) + } + if !self.version.isEmpty { + try visitor.visitSingularStringField(value: self.version, fieldNumber: 2) + } + if !self.value.isEmpty { + try visitor.visitSingularBytesField(value: self.value, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } +} + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "openapi.plugin.v1" + +extension Openapi_Plugin_V1_Version: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "major"), + 2: .same(proto: "minor"), + 3: .same(proto: "patch"), + 4: .same(proto: "suffix"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Version) -> Bool { + if self.major != other.major {return false} + if self.minor != other.minor {return false} + if self.patch != other.patch {return false} + if self.suffix != other.suffix {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Parameter: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Parameter) -> Bool { + if self.name != other.name {return false} + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Request: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "wrapper"), + 2: .standard(proto: "output_path"), + 3: .same(proto: "parameters"), + 4: .standard(proto: "compiler_version"), + ] + + fileprivate class _StorageClass { + var _wrapper: Openapi_Plugin_V1_Wrapper? = nil + var _outputPath: String = String() + var _parameters: [Openapi_Plugin_V1_Parameter] = [] + var _compilerVersion: Openapi_Plugin_V1_Version? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _wrapper = source._wrapper + _outputPath = source._outputPath + _parameters = source._parameters + _compilerVersion = source._compilerVersion + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Request) -> Bool { + if _storage !== other._storage { + let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_storage, other_storage) in + if _storage._wrapper != other_storage._wrapper {return false} + if _storage._outputPath != other_storage._outputPath {return false} + if _storage._parameters != other_storage._parameters {return false} + if _storage._compilerVersion != other_storage._compilerVersion {return false} + return true + } + if !storagesAreEqual {return false} + } + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Response: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "errors"), + 2: .same(proto: "files"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Response) -> Bool { + if self.errors != other.errors {return false} + if self.files != other.files {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_File: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "data"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_File) -> Bool { + if self.name != other.name {return false} + if self.data != other.data {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} + +extension Openapi_Plugin_V1_Wrapper: SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "version"), + 3: .same(proto: "value"), + ] + + func _protobuf_generated_isEqualTo(other: Openapi_Plugin_V1_Wrapper) -> Bool { + if self.name != other.name {return false} + if self.version != other.version {return false} + if self.value != other.value {return false} + if unknownFields != other.unknownFields {return false} + return true + } +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/plugin.pb.go b/vendor/github.com/googleapis/gnostic/plugins/plugin.pb.go new file mode 100644 index 0000000000..4d50d9cc65 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/plugin.pb.go @@ -0,0 +1,287 @@ +// Code generated by protoc-gen-go. +// source: plugins/plugin.proto +// DO NOT EDIT! + +/* +Package openapi_plugin_v1 is a generated protocol buffer package. + +It is generated from these files: + plugins/plugin.proto + +It has these top-level messages: + Version + Parameter + Request + Response + File + Wrapper +*/ +package openapi_plugin_v1 + +import proto "github.com/golang/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// The version number of OpenAPI compiler. +type Version struct { + Major int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` + Minor int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` + Patch int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + Suffix string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"` +} + +func (m *Version) Reset() { *m = Version{} } +func (m *Version) String() string { return proto.CompactTextString(m) } +func (*Version) ProtoMessage() {} +func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *Version) GetMajor() int32 { + if m != nil { + return m.Major + } + return 0 +} + +func (m *Version) GetMinor() int32 { + if m != nil { + return m.Minor + } + return 0 +} + +func (m *Version) GetPatch() int32 { + if m != nil { + return m.Patch + } + return 0 +} + +func (m *Version) GetSuffix() string { + if m != nil { + return m.Suffix + } + return "" +} + +// A parameter passed to the plugin from (or through) the OpenAPI compiler. +type Parameter struct { + // The name of the parameter as specified in the option string + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The parameter value as specified in the option string + Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` +} + +func (m *Parameter) Reset() { *m = Parameter{} } +func (m *Parameter) String() string { return proto.CompactTextString(m) } +func (*Parameter) ProtoMessage() {} +func (*Parameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *Parameter) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Parameter) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +// An encoded Request is written to the plugin's stdin. +type Request struct { + // A wrapped OpenAPI document to process. + Wrapper *Wrapper `protobuf:"bytes,1,opt,name=wrapper" json:"wrapper,omitempty"` + // Output path specified in the plugin invocation. + OutputPath string `protobuf:"bytes,2,opt,name=output_path,json=outputPath" json:"output_path,omitempty"` + // Plugin parameters parsed from the invocation string. + Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters" json:"parameters,omitempty"` + // The version number of openapi compiler. + CompilerVersion *Version `protobuf:"bytes,4,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` +} + +func (m *Request) Reset() { *m = Request{} } +func (m *Request) String() string { return proto.CompactTextString(m) } +func (*Request) ProtoMessage() {} +func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *Request) GetWrapper() *Wrapper { + if m != nil { + return m.Wrapper + } + return nil +} + +func (m *Request) GetOutputPath() string { + if m != nil { + return m.OutputPath + } + return "" +} + +func (m *Request) GetParameters() []*Parameter { + if m != nil { + return m.Parameters + } + return nil +} + +func (m *Request) GetCompilerVersion() *Version { + if m != nil { + return m.CompilerVersion + } + return nil +} + +// The plugin writes an encoded Response to stdout. +type Response struct { + // Error message. If non-empty, the plugin failed. + // The plugin process should exit with status code zero + // even if it reports an error in this way. + // + // This should be used to indicate errors which prevent the plugin from + // operating as intended. Errors which indicate a problem in openapic + // itself -- such as the input Document being unparseable -- should be + // reported by writing a message to stderr and exiting with a non-zero + // status code. + Errors []string `protobuf:"bytes,1,rep,name=errors" json:"errors,omitempty"` + // file output, each file will be written by openapic to an appropriate location. + Files []*File `protobuf:"bytes,2,rep,name=files" json:"files,omitempty"` +} + +func (m *Response) Reset() { *m = Response{} } +func (m *Response) String() string { return proto.CompactTextString(m) } +func (*Response) ProtoMessage() {} +func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *Response) GetErrors() []string { + if m != nil { + return m.Errors + } + return nil +} + +func (m *Response) GetFiles() []*File { + if m != nil { + return m.Files + } + return nil +} + +// File describes a file generated by a plugin. +type File struct { + // name of the file + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // data to be written to the file + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *File) Reset() { *m = File{} } +func (m *File) String() string { return proto.CompactTextString(m) } +func (*File) ProtoMessage() {} +func (*File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *File) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *File) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +// Wrapper wraps an OpenAPI document with its version. +type Wrapper struct { + // filename or URL of the wrapped document + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // version of the OpenAPI specification that is used by the wrapped document + Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` + // valid serialized protocol buffer of the named OpenAPI specification version + Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *Wrapper) Reset() { *m = Wrapper{} } +func (m *Wrapper) String() string { return proto.CompactTextString(m) } +func (*Wrapper) ProtoMessage() {} +func (*Wrapper) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *Wrapper) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Wrapper) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *Wrapper) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + +func init() { + proto.RegisterType((*Version)(nil), "openapi.plugin.v1.Version") + proto.RegisterType((*Parameter)(nil), "openapi.plugin.v1.Parameter") + proto.RegisterType((*Request)(nil), "openapi.plugin.v1.Request") + proto.RegisterType((*Response)(nil), "openapi.plugin.v1.Response") + proto.RegisterType((*File)(nil), "openapi.plugin.v1.File") + proto.RegisterType((*Wrapper)(nil), "openapi.plugin.v1.Wrapper") +} + +func init() { proto.RegisterFile("plugins/plugin.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 390 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x92, 0x41, 0x8f, 0xd3, 0x30, + 0x10, 0x85, 0x95, 0x26, 0xdd, 0x90, 0x29, 0xd2, 0x82, 0xb5, 0x80, 0x85, 0x90, 0x88, 0x72, 0xea, + 0x85, 0xc0, 0x2e, 0x70, 0xe3, 0xd2, 0x56, 0x20, 0x71, 0x40, 0x0d, 0x3e, 0xc0, 0xb1, 0x32, 0x61, + 0xda, 0x1a, 0x25, 0xb1, 0xb1, 0x9d, 0xc0, 0xef, 0xe1, 0xbf, 0xf1, 0x3f, 0x50, 0x6c, 0x07, 0x90, + 0x36, 0xa7, 0xfa, 0x7b, 0x1a, 0x3f, 0xbf, 0x79, 0x0d, 0x5c, 0xa9, 0xa6, 0x3f, 0x89, 0xce, 0x3c, + 0xf7, 0xbf, 0xa5, 0xd2, 0xd2, 0x4a, 0x72, 0x5f, 0x2a, 0xec, 0xb8, 0x12, 0x65, 0x50, 0x87, 0xeb, + 0xa2, 0x86, 0xf4, 0x13, 0x6a, 0x23, 0x64, 0x47, 0xae, 0x60, 0xd9, 0xf2, 0x6f, 0x52, 0xd3, 0x28, + 0x8f, 0xd6, 0x4b, 0xe6, 0xc1, 0xa9, 0xa2, 0x93, 0x9a, 0x2e, 0x82, 0x3a, 0xc2, 0xa8, 0x2a, 0x6e, + 0xeb, 0x33, 0x8d, 0xbd, 0xea, 0x80, 0x3c, 0x84, 0x0b, 0xd3, 0x1f, 0x8f, 0xe2, 0x27, 0x4d, 0xf2, + 0x68, 0x9d, 0xb1, 0x40, 0xc5, 0x6b, 0xc8, 0x2a, 0xae, 0x79, 0x8b, 0x16, 0x35, 0x21, 0x90, 0x74, + 0xbc, 0x45, 0xf7, 0x4a, 0xc6, 0xdc, 0x79, 0xb4, 0x1b, 0x78, 0xd3, 0xa3, 0x7b, 0x24, 0x63, 0x1e, + 0x8a, 0xdf, 0x11, 0xa4, 0x0c, 0xbf, 0xf7, 0x68, 0x2c, 0x79, 0x05, 0xe9, 0x0f, 0xcd, 0x95, 0x42, + 0x1f, 0x6f, 0x75, 0xf3, 0xb8, 0xbc, 0xb5, 0x4c, 0xf9, 0xd9, 0x4f, 0xb0, 0x69, 0x94, 0x3c, 0x85, + 0x95, 0xec, 0xad, 0xea, 0xed, 0x41, 0x71, 0x7b, 0x0e, 0xee, 0xe0, 0xa5, 0x8a, 0xdb, 0x33, 0x79, + 0x03, 0xa0, 0xa6, 0x64, 0x86, 0xc6, 0x79, 0xbc, 0x5e, 0xdd, 0x3c, 0x99, 0x71, 0xfe, 0x1b, 0x9f, + 0xfd, 0x37, 0x4f, 0xde, 0xc2, 0xbd, 0x5a, 0xb6, 0x4a, 0x34, 0xa8, 0x0f, 0x83, 0x6f, 0xd1, 0x6d, + 0x3e, 0x9f, 0x2e, 0xf4, 0xcc, 0x2e, 0xa7, 0x3b, 0x41, 0x28, 0x3e, 0xc2, 0x1d, 0x86, 0x46, 0xc9, + 0xce, 0xe0, 0x58, 0x21, 0x6a, 0x2d, 0xb5, 0xa1, 0x51, 0x1e, 0x8f, 0x15, 0x7a, 0x22, 0xcf, 0x60, + 0x79, 0x14, 0x0d, 0x1a, 0xba, 0x70, 0x19, 0x1f, 0xcd, 0xf8, 0xbf, 0x13, 0x0d, 0x32, 0x3f, 0x55, + 0x94, 0x90, 0x8c, 0x38, 0x5b, 0x36, 0x81, 0xe4, 0x2b, 0xb7, 0xdc, 0xb5, 0x71, 0x97, 0xb9, 0x73, + 0xf1, 0x01, 0xd2, 0x50, 0xde, 0xec, 0x15, 0x0a, 0xe9, 0xb4, 0x9f, 0xef, 0x70, 0xc2, 0x7f, 0xff, + 0x5c, 0xec, 0xdc, 0x3c, 0x6c, 0x5f, 0xc0, 0xa5, 0xd4, 0xa7, 0x29, 0x63, 0x5d, 0x0e, 0xd7, 0xdb, + 0x07, 0x7b, 0x85, 0xdd, 0xa6, 0x7a, 0xbf, 0x0b, 0xcb, 0x57, 0x2e, 0x77, 0x15, 0xfd, 0x5a, 0xc4, + 0xfb, 0xcd, 0xee, 0xcb, 0x85, 0xfb, 0x42, 0x5f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x51, 0x4d, + 0xec, 0x80, 0xb9, 0x02, 0x00, 0x00, +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/plugin.proto b/vendor/github.com/googleapis/gnostic/plugins/plugin.proto new file mode 100644 index 0000000000..a2fce4b12d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/plugins/plugin.proto @@ -0,0 +1,123 @@ +// Copyright 2017 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. + +// openapic (aka the OpenAPI Compiler) can be extended via plugins. +// A plugin is just a program that reads a Request from stdin +// and writes a Response to stdout. +// +// A plugin executable needs only to be placed somewhere in the path. The +// plugin should be named "openapi_$NAME", and will then be used when the +// flag "--${NAME}_out" is passed to openapic. + +syntax = "proto3"; + +package openapi.plugin.v1; + +// This option lets the proto compiler generate Java code inside the package +// name (see below) instead of inside an outer class. It creates a simpler +// developer experience by reducing one-level of name nesting and be +// consistent with most programming languages that don't support outer classes. +option java_multiple_files = true; + +// The Java outer classname should be the filename in UpperCamelCase. This +// class is only used to hold proto descriptor, so developers don't need to +// work with it directly. +option java_outer_classname = "OpenAPICompilerPlugin"; + +// The Java package name must be proto package name with proper prefix. +option java_package = "org.openapic.v1"; + +// A reasonable prefix for the Objective-C symbols generated from the package. +// It should at a minimum be 3 characters long, all uppercase, and convention +// is to use an abbreviation of the package name. Something short, but +// hopefully unique enough to not conflict with things that may come along in +// the future. 'GPB' is reserved for the protocol buffer implementation itself. +// +option objc_class_prefix = "OAC"; // "OpenAPI Compiler" + +// The version number of OpenAPI compiler. +message Version { + int32 major = 1; + int32 minor = 2; + int32 patch = 3; + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + string suffix = 4; +} + +// A parameter passed to the plugin from (or through) the OpenAPI compiler. +message Parameter { + // The name of the parameter as specified in the option string + string name = 1; + + // The parameter value as specified in the option string + string value = 2; +} + +// An encoded Request is written to the plugin's stdin. +message Request { + + // A wrapped OpenAPI document to process. + Wrapper wrapper = 1; + + // Output path specified in the plugin invocation. + string output_path = 2; + + // Plugin parameters parsed from the invocation string. + repeated Parameter parameters = 3; + + // The version number of openapi compiler. + Version compiler_version = 4; +} + +// The plugin writes an encoded Response to stdout. +message Response { + + // Error message. If non-empty, the plugin failed. + // The plugin process should exit with status code zero + // even if it reports an error in this way. + // + // This should be used to indicate errors which prevent the plugin from + // operating as intended. Errors which indicate a problem in openapic + // itself -- such as the input Document being unparseable -- should be + // reported by writing a message to stderr and exiting with a non-zero + // status code. + repeated string errors = 1; + + // file output, each file will be written by openapic to an appropriate location. + repeated File files = 2; +} + +// File describes a file generated by a plugin. +message File { + + // name of the file + string name = 1; + + // data to be written to the file + bytes data = 2; +} + +// Wrapper wraps an OpenAPI document with its version. +message Wrapper { + + // filename or URL of the wrapped document + string name = 1; + + // version of the OpenAPI specification that is used by the wrapped document + string version = 2; + + // valid serialized protocol buffer of the named OpenAPI specification version + bytes value = 3; +} diff --git a/vendor/github.com/googleapis/gnostic/printer/README.md b/vendor/github.com/googleapis/gnostic/printer/README.md new file mode 100644 index 0000000000..ba2f8f2c0b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/printer/README.md @@ -0,0 +1,3 @@ +# printer + +This directory contains code for generating files of code. diff --git a/vendor/github.com/googleapis/gnostic/printer/code.go b/vendor/github.com/googleapis/gnostic/printer/code.go new file mode 100644 index 0000000000..1afc252f1d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/printer/code.go @@ -0,0 +1,57 @@ +// Copyright 2017 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 printer provides support for writing generated code. +package printer + +import ( + "fmt" +) + +const indentation = " " + +// Code represents a file of code to be printed. +type Code struct { + text string + indent int +} + +// Print adds a line of code using the current indentation. Accepts printf-style format strings and arguments. +func (c *Code) Print(args ...interface{}) { + if len(args) > 0 { + for i := 0; i < c.indent; i++ { + c.text += indentation + } + c.text += fmt.Sprintf(args[0].(string), args[1:]...) + } + c.text += "\n" +} + +// String returns the accumulated code as a string. +func (c *Code) String() string { + return c.text +} + +// Indent adds one level of indentation. +func (c *Code) Indent() { + c.indent++ +} + +// Outdent remvoes one level of indentation. +func (c *Code) Outdent() { + c.indent-- + if c.indent < 0 { + c.indent = 0 + } +} diff --git a/vendor/github.com/googleapis/gnostic/test/README.md b/vendor/github.com/googleapis/gnostic/test/README.md new file mode 100644 index 0000000000..236f378abb --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/README.md @@ -0,0 +1,3 @@ +# test + +This directory contains test data used to verify gnostic. diff --git a/vendor/github.com/googleapis/gnostic/test/errors/invalid-plugin-invocation.errors b/vendor/github.com/googleapis/gnostic/test/errors/invalid-plugin-invocation.errors new file mode 100644 index 0000000000..685664aefc --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/errors/invalid-plugin-invocation.errors @@ -0,0 +1,12 @@ +Errors reading examples/v2.0/yaml/petstore.yaml +Invalid invocation of gnostic-plugin: foo=bar,:abc +Errors reading examples/v2.0/yaml/petstore.yaml +Invalid invocation of gnostic-plugin: ,foo=bar:abc +Errors reading examples/v2.0/yaml/petstore.yaml +Invalid invocation of gnostic-plugin: foo=:abc +Errors reading examples/v2.0/yaml/petstore.yaml +Invalid invocation of gnostic-plugin: =bar:abc +Errors reading examples/v2.0/yaml/petstore.yaml +Invalid invocation of gnostic-plugin: ,,:abc +Errors reading examples/v2.0/yaml/petstore.yaml +Invalid invocation of gnostic-plugin: foo=bar=baz:abc diff --git a/vendor/github.com/googleapis/gnostic/test/errors/petstore-badproperties.errors b/vendor/github.com/googleapis/gnostic/test/errors/petstore-badproperties.errors new file mode 100644 index 0000000000..11b8293e9d --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/errors/petstore-badproperties.errors @@ -0,0 +1,16 @@ +Errors reading examples/errors/petstore-badproperties.yaml +ERROR $root.info is missing required property: version +ERROR $root.info has invalid property: myproperty +ERROR $root.paths./pets.get.parameters.parameter.bodyParameter is missing required property: schema +ERROR $root.paths./pets.get.parameters.parameter.bodyParameter has invalid properties: type, format, myproperty +ERROR $root.paths./pets.get.parameters.parameter.bodyParameter has unexpected value for in: query (string) +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.headerParameterSubSchema has invalid property: myproperty +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.headerParameterSubSchema has unexpected value for in: query (string) +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.formDataParameterSubSchema has invalid property: myproperty +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.formDataParameterSubSchema has unexpected value for in: query (string) +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.queryParameterSubSchema has invalid property: myproperty +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.pathParameterSubSchema has invalid property: myproperty +ERROR $root.paths./pets.get.parameters.parameter.nonBodyParameter.pathParameterSubSchema has unexpected value for in: query (string) +ERROR $root.paths./pets.get.parameters.jsonReference is missing required property: $ref +ERROR $root.paths./pets.get.parameters.jsonReference has invalid properties: name, in, required, type, format, myproperty +ERROR $root.paths./pets.post has unexpected value for tags: pets (string) \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/test/errors/petstore-missingversion.errors b/vendor/github.com/googleapis/gnostic/test/errors/petstore-missingversion.errors new file mode 100644 index 0000000000..c61b034bbf --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/errors/petstore-missingversion.errors @@ -0,0 +1,2 @@ +Errors reading examples/errors/petstore-missingversion.yaml +unable to identify OpenAPI version \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/test/errors/petstore-unresolvedrefs.errors b/vendor/github.com/googleapis/gnostic/test/errors/petstore-unresolvedrefs.errors new file mode 100644 index 0000000000..dd8035b46a --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/errors/petstore-unresolvedrefs.errors @@ -0,0 +1,3 @@ +Errors reading examples/errors/petstore-unresolvedrefs.yaml +ERROR could not resolve #/definitions/Pet +ERROR could not resolve #/definitions/Error \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json new file mode 100644 index 0000000000..e6b7f22089 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json @@ -0,0 +1,96 @@ +{ + "swagger": "2.0", + "info": { + "title": "Google Example Library API", + "description": "A simple Google Example Library API.", + "version": "v1" + }, + "host": "library-example.googleapis.com", + + "x-sampleone-book" : {"code": 123, "message": 999}, + "x-sampleone-shelf" : {"foo1": 123, "bar": 999}, + + "x-sampleone-mysimplestring" : "hello world", + "x-sampleone-mysimpleint64" : 12345, + "x-sampleone-mysimplenumber" : 111.222, + "x-sampleone-mysimpleboolean" : true, + + "x-sampletwo-book" : {"code": 123, "message": 999}, + "x-sampletwo-shelf" : {"foo1": 123, "bar": 999}, + + "x-unhandled" : {"code": 123, "message": 999}, + + "parameters" : { + "paramAtSwaggerScope": { + "name": "paramAtSwaggerScope", + "in": "query", + "description": "test", + "required": true, + "type": "integer", + "format": "int32" + } + }, + "paths": { + "/v1/{sharedParameter}/pets": { + "post": { + "operationId": "simpleMethod", + "parameters": [ + { + "name": "myBodyRef", + "in": "body", + "schema": { + "properties": { + "myStringA": { + "type": "string" + } + } + } + }, + { + "name": "paramToOverride", + "in": "query", + "description": "New description", + "required": true, + "type": "string" + }, + { + "$ref": "#/parameters/paramAtSwaggerScope" + } + ], + "responses": { + "default": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/SimpleDef" + } + } + } + }, + "parameters": [ + { + "name": "sharedParameter", + "in": "path", + "description": "Shared parameter", + "required": true, + "type": "string" + }, + { + "name": "paramToOverride", + "in": "query", + "description": "Description to override", + "required": true, + "type": "string" + } + ] + } + }, + "definitions": { + "SimpleDef": { + "properties": { + "myStringA": { + "type": "string" + } + } + } + } +} diff --git a/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out new file mode 100644 index 0000000000..b12e8f0810 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out @@ -0,0 +1,234 @@ +swagger: "2.0" +info: < + title: "Google Example Library API" + version: "v1" + description: "A simple Google Example Library API." +> +host: "library-example.googleapis.com" +paths: < + path: < + name: "/v1/{sharedParameter}/pets" + value: < + post: < + operation_id: "simpleMethod" + parameters: < + parameter: < + body_parameter: < + name: "myBodyRef" + in: "body" + schema: < + properties: < + additional_properties: < + name: "myStringA" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + parameters: < + parameter: < + non_body_parameter: < + query_parameter_sub_schema: < + required: true + in: "query" + description: "New description" + name: "paramToOverride" + type: "string" + > + > + > + > + parameters: < + parameter: < + non_body_parameter: < + query_parameter_sub_schema: < + required: true + in: "query" + description: "test" + name: "paramAtSwaggerScope" + type: "integer" + format: "int32" + > + > + > + > + responses: < + response_code: < + name: "default" + value: < + response: < + description: "successful operation" + schema: < + schema: < + properties: < + additional_properties: < + name: "myStringA" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + parameters: < + parameter: < + non_body_parameter: < + path_parameter_sub_schema: < + required: true + in: "path" + description: "Shared parameter" + name: "sharedParameter" + type: "string" + > + > + > + > + parameters: < + parameter: < + non_body_parameter: < + query_parameter_sub_schema: < + required: true + in: "query" + description: "Description to override" + name: "paramToOverride" + type: "string" + > + > + > + > + > + > +> +definitions: < + additional_properties: < + name: "SimpleDef" + value: < + properties: < + additional_properties: < + name: "myStringA" + value: < + type: < + value: "string" + > + > + > + > + > + > +> +parameters: < + additional_properties: < + name: "paramAtSwaggerScope" + value: < + non_body_parameter: < + query_parameter_sub_schema: < + required: true + in: "query" + description: "test" + name: "paramAtSwaggerScope" + type: "integer" + format: "int32" + > + > + > + > +> +vendor_extension: < + name: "x-sampleone-book" + value: < + value: < + type_url: "type.googleapis.com/sampleone.Book" + value: "\010{\020\347\007" + > + yaml: "code: 123\nmessage: 999\n" + > +> +vendor_extension: < + name: "x-sampleone-shelf" + value: < + value: < + type_url: "type.googleapis.com/sampleone.Shelf" + value: "\010{\020\347\007" + > + yaml: "foo1: 123\nbar: 999\n" + > +> +vendor_extension: < + name: "x-sampleone-mysimplestring" + value: < + value: < + type_url: "type.googleapis.com/google.protobuf.StringValue" + value: "\n\013hello world" + > + yaml: "hello world\n" + > +> +vendor_extension: < + name: "x-sampleone-mysimpleint64" + value: < + value: < + type_url: "type.googleapis.com/google.protobuf.StringValue" + value: "\n\00512345" + > + yaml: "12345\n" + > +> +vendor_extension: < + name: "x-sampleone-mysimplenumber" + value: < + value: < + type_url: "type.googleapis.com/google.protobuf.DoubleValue" + value: "\t\221\355|?5\316[@" + > + yaml: "111.222\n" + > +> +vendor_extension: < + name: "x-sampleone-mysimpleboolean" + value: < + value: < + type_url: "type.googleapis.com/google.protobuf.BoolValue" + value: "\010\001" + > + yaml: "true\n" + > +> +vendor_extension: < + name: "x-sampletwo-book" + value: < + value: < + type_url: "type.googleapis.com/sampletwo.Book" + value: "\010{\020\347\007" + > + yaml: "code: 123\nmessage: 999\n" + > +> +vendor_extension: < + name: "x-sampletwo-shelf" + value: < + value: < + type_url: "type.googleapis.com/sampletwo.Shelf" + value: "\010{\020\347\007" + > + yaml: "foo1: 123\nbar: 999\n" + > +> +vendor_extension: < + name: "x-unhandled" + value: < + yaml: "code: 123\nmessage: 999\n" + > +> diff --git a/vendor/github.com/googleapis/gnostic/test/v2.0/petstore.text b/vendor/github.com/googleapis/gnostic/test/v2.0/petstore.text new file mode 100644 index 0000000000..095e2fd0dc --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/v2.0/petstore.text @@ -0,0 +1,387 @@ +swagger: "2.0" +info: < + title: "Swagger Petstore" + version: "1.0.0" + license: < + name: "MIT" + > +> +host: "petstore.swagger.io" +base_path: "/v1" +schemes: "http" +consumes: "application/json" +produces: "application/json" +paths: < + path: < + name: "/pets" + value: < + get: < + tags: "pets" + summary: "List all pets" + operation_id: "listPets" + parameters: < + parameter: < + non_body_parameter: < + query_parameter_sub_schema: < + in: "query" + description: "How many items to return at one time (max 100)" + name: "limit" + type: "integer" + format: "int32" + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "An paged array of pets" + schema: < + schema: < + type: < + value: "array" + > + items: < + schema: < + required: "id" + required: "name" + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + headers: < + additional_properties: < + name: "x-next" + value: < + type: "string" + description: "A link to the next page of responses" + > + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + post: < + tags: "pets" + summary: "Create a pet" + operation_id: "createPets" + responses: < + response_code: < + name: "201" + value: < + response: < + description: "Null response" + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + > + > + path: < + name: "/pets/{petId}" + value: < + get: < + tags: "pets" + summary: "Info for a specific pet" + operation_id: "showPetById" + parameters: < + parameter: < + non_body_parameter: < + path_parameter_sub_schema: < + required: true + in: "path" + description: "The id of the pet to retrieve" + name: "petId" + type: "string" + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "Expected response to a valid request" + schema: < + schema: < + type: < + value: "array" + > + items: < + schema: < + required: "id" + required: "name" + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + > + > +> +definitions: < + additional_properties: < + name: "Pet" + value: < + required: "id" + required: "name" + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + additional_properties: < + name: "Pets" + value: < + type: < + value: "array" + > + items: < + schema: < + required: "id" + required: "name" + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + additional_properties: < + name: "Error" + value: < + required: "code" + required: "message" + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > +> diff --git a/vendor/github.com/googleapis/gnostic/test/v2.0/yaml/petstore-separate/spec/swagger.text b/vendor/github.com/googleapis/gnostic/test/v2.0/yaml/petstore-separate/spec/swagger.text new file mode 100644 index 0000000000..1685891bd1 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/v2.0/yaml/petstore-separate/spec/swagger.text @@ -0,0 +1,468 @@ +swagger: "2.0" +info: < + title: "Swagger Petstore" + version: "1.0.0" + description: "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification" + terms_of_service: "http://helloreverb.com/terms/" + contact: < + name: "Wordnik API Team" + url: "http://madskristensen.net" + email: "foo@example.com" + > + license: < + name: "MIT" + url: "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" + > +> +host: "petstore.swagger.wordnik.com" +base_path: "/api" +schemes: "http" +consumes: "application/json" +produces: "application/json" +paths: < + path: < + name: "/pets" + value: < + get: < + description: "Returns all pets from the system that the user has access to\nNam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia.\n\nSed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.\n" + operation_id: "findPets" + parameters: < + parameter: < + non_body_parameter: < + query_parameter_sub_schema: < + in: "query" + description: "tags to filter by" + name: "tags" + type: "array" + items: < + type: "string" + > + collection_format: "csv" + > + > + > + > + parameters: < + parameter: < + non_body_parameter: < + query_parameter_sub_schema: < + in: "query" + description: "maximum number of results to return" + name: "limit" + type: "integer" + format: "int32" + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "pet response" + schema: < + schema: < + type: < + value: "array" + > + items: < + schema: < + required: "id" + required: "name" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + post: < + description: "Creates a new pet in the store. Duplicates are allowed" + operation_id: "addPet" + parameters: < + parameter: < + body_parameter: < + description: "Pet to add to the store" + name: "pet" + in: "body" + required: true + schema: < + type: < + value: "object" + > + all_of: < + required: "id" + required: "name" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + all_of: < + required: "name" + properties: < + additional_properties: < + name: "description" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + > + > + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "pet response" + schema: < + schema: < + required: "id" + required: "name" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + > + > + path: < + name: "/pets/{id}" + value: < + get: < + description: "Returns a user based on a single ID, if the user does not have access to the pet" + operation_id: "find pet by id" + parameters: < + parameter: < + non_body_parameter: < + path_parameter_sub_schema: < + required: true + in: "path" + description: "ID of pet to fetch" + name: "id" + type: "integer" + format: "int64" + > + > + > + > + responses: < + response_code: < + name: "200" + value: < + response: < + description: "pet response" + schema: < + schema: < + required: "id" + required: "name" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "id" + value: < + format: "int64" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "name" + value: < + type: < + value: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + delete: < + description: "deletes a single pet based on the ID supplied" + operation_id: "deletePet" + parameters: < + parameter: < + non_body_parameter: < + path_parameter_sub_schema: < + required: true + in: "path" + description: "ID of pet to delete" + name: "id" + type: "integer" + format: "int64" + > + > + > + > + responses: < + response_code: < + name: "204" + value: < + response: < + description: "pet deleted" + > + > + > + response_code: < + name: "default" + value: < + response: < + description: "unexpected error" + schema: < + schema: < + required: "code" + required: "message" + type: < + value: "object" + > + properties: < + additional_properties: < + name: "code" + value: < + format: "int32" + type: < + value: "integer" + > + > + > + additional_properties: < + name: "message" + value: < + type: < + value: "string" + > + > + > + > + > + > + > + > + > + > + > + > + > +> diff --git a/vendor/github.com/googleapis/gnostic/test/v2.0/yaml/sample-petstore.out b/vendor/github.com/googleapis/gnostic/test/v2.0/yaml/sample-petstore.out new file mode 100644 index 0000000000..016b9b60db --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/v2.0/yaml/sample-petstore.out @@ -0,0 +1,14 @@ + + +report.txt -------------------- +READING examples/v2.0/yaml/petstore.yaml (v2) +Swagger: 2.0 +Host: petstore.swagger.io +BasePath: /v1 +Info: + Title: Swagger Petstore + Version: 1.0.0 +Paths: + GET /pets + POST /pets + GET /pets/{petId} diff --git a/vendor/github.com/googleapis/gnostic/test/v3.0/petstore.text b/vendor/github.com/googleapis/gnostic/test/v3.0/petstore.text new file mode 100644 index 0000000000..14aa3950ab --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/v3.0/petstore.text @@ -0,0 +1,268 @@ +openapi: "3.0" +info: < + title: "OpenAPI Petstore" + license: < + name: "MIT" + > + version: "1.0.0" +> +servers: < + url: "https://petstore.openapis.org/v1" + description: "Development server" +> +paths: < + path: < + name: "/pets" + value: < + get: < + tags: "pets" + summary: "List all pets" + operation_id: "listPets" + parameters: < + parameter: < + name: "limit" + in: "query" + description: "How many items to return at one time (max 100)" + schema: < + schema: < + type: "integer" + format: "int32" + > + > + > + > + responses: < + default: < + response: < + description: "unexpected error" + content: < + additional_properties: < + name: "application/json" + value: < + schema: < + reference: < + _ref: "#/components/schemas/Error" + > + > + > + > + > + > + > + response_or_reference: < + name: "200" + value: < + response: < + description: "An paged array of pets" + headers: < + additional_properties: < + name: "x-next" + value: < + header: < + description: "A link to the next page of responses" + schema: < + schema: < + type: "string" + > + > + > + > + > + > + content: < + additional_properties: < + name: "application/json" + value: < + schema: < + reference: < + _ref: "#/components/schemas/Pets" + > + > + > + > + > + > + > + > + > + > + post: < + tags: "pets" + summary: "Create a pet" + operation_id: "createPets" + responses: < + default: < + response: < + description: "unexpected error" + content: < + additional_properties: < + name: "application/json" + value: < + schema: < + reference: < + _ref: "#/components/schemas/Error" + > + > + > + > + > + > + > + response_or_reference: < + name: "201" + value: < + response: < + description: "Null response" + > + > + > + > + > + > + > + path: < + name: "/pets/{petId}" + value: < + get: < + tags: "pets" + summary: "Info for a specific pet" + operation_id: "showPetById" + parameters: < + parameter: < + name: "petId" + in: "path" + description: "The id of the pet to retrieve" + required: true + schema: < + schema: < + type: "string" + > + > + > + > + responses: < + default: < + response: < + description: "unexpected error" + content: < + additional_properties: < + name: "application/json" + value: < + schema: < + reference: < + _ref: "#/components/schemas/Error" + > + > + > + > + > + > + > + response_or_reference: < + name: "200" + value: < + response: < + description: "Expected response to a valid request" + content: < + additional_properties: < + name: "application/json" + value: < + schema: < + reference: < + _ref: "#/components/schemas/Pets" + > + > + > + > + > + > + > + > + > + > + > + > +> +components: < + schemas: < + additional_properties: < + name: "Pet" + value: < + schema: < + required: "id" + required: "name" + properties: < + additional_properties: < + name: "id" + value: < + schema: < + type: "integer" + format: "int64" + > + > + > + additional_properties: < + name: "name" + value: < + schema: < + type: "string" + > + > + > + additional_properties: < + name: "tag" + value: < + schema: < + type: "string" + > + > + > + > + > + > + > + additional_properties: < + name: "Pets" + value: < + schema: < + type: "array" + items: < + schema_or_reference: < + reference: < + _ref: "#/components/schemas/Pet" + > + > + > + > + > + > + additional_properties: < + name: "Error" + value: < + schema: < + required: "code" + required: "message" + properties: < + additional_properties: < + name: "code" + value: < + schema: < + type: "integer" + format: "int32" + > + > + > + additional_properties: < + name: "message" + value: < + schema: < + type: "string" + > + > + > + > + > + > + > + > +> diff --git a/vendor/github.com/googleapis/gnostic/tools/README.md b/vendor/github.com/googleapis/gnostic/tools/README.md new file mode 100644 index 0000000000..f2ba116ff7 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/tools/README.md @@ -0,0 +1,11 @@ +# tools + +This directory contains general utilities used by Gnostic and related programs. + +## j2y2j + +Converts JSON to YAML and YAML to JSON. + +## format-schema + +Formats a JSON schema canonically. diff --git a/vendor/github.com/googleapis/gnostic/tools/format-schema/main.go b/vendor/github.com/googleapis/gnostic/tools/format-schema/main.go new file mode 100644 index 0000000000..85edbd79e3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/tools/format-schema/main.go @@ -0,0 +1,37 @@ +// Copyright 2017 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. + +// format-schema canonically formats a JSON schema. +package main + +import ( + "fmt" + "github.com/googleapis/gnostic/jsonschema" + "os" + "path" +) + +func main() { + if len(os.Args) != 2 { + fmt.Printf("Usage: %s [filename]\n", path.Base(os.Args[0])) + fmt.Printf("where [filename] is a path to a JSON schema to format.\n") + os.Exit(0) + } + schema, err := jsonschema.NewSchemaFromFile(os.Args[1]) + if err != nil { + panic(err) + } + output := schema.JSONString() + fmt.Printf("%s\n", output) +} diff --git a/vendor/github.com/googleapis/gnostic/tools/j2y2j/main.go b/vendor/github.com/googleapis/gnostic/tools/j2y2j/main.go new file mode 100644 index 0000000000..d2fb042947 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/tools/j2y2j/main.go @@ -0,0 +1,60 @@ +// Copyright 2017 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. + +// j2y2j converts JSON to YAML and YAML to JSON. +package main + +import ( + "fmt" + "github.com/googleapis/gnostic/jsonschema" + "gopkg.in/yaml.v2" + "io/ioutil" + "os" + "path" +) + +func usage() { + fmt.Printf("Usage: %s [filename] [--json] [--yaml]\n", path.Base(os.Args[0])) + fmt.Printf("where [filename] is a path to a JSON or YAML file to convert\n") + fmt.Printf("and --json or --yaml indicates conversion to the corresponding format.\n") + os.Exit(0) +} + +func main() { + if len(os.Args) != 3 { + usage() + } + + filename := os.Args[1] + file, err := ioutil.ReadFile(filename) + if err != nil { + panic(err) + } + var info yaml.MapSlice + err = yaml.Unmarshal(file, &info) + + switch os.Args[2] { + case "--json": + result := jsonschema.Render(info) + fmt.Printf("%s", result) + case "--yaml": + result, err := yaml.Marshal(info) + if err != nil { + panic(err) + } + fmt.Printf("%s", string(result)) + default: + usage() + } +} diff --git a/vendor/github.com/gregjones/httpcache/.travis.yml b/vendor/github.com/gregjones/httpcache/.travis.yml new file mode 100644 index 0000000000..2bca4c599f --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/.travis.yml @@ -0,0 +1,18 @@ +sudo: false +language: go +go: + - 1.6.x + - 1.7.x + - 1.8.x + - master +matrix: + allow_failures: + - go: master + fast_finish: true +install: + - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step). +script: + - go get -t -v ./... + - diff -u <(echo -n) <(gofmt -d .) + - go tool vet . + - go test -v -race ./... diff --git a/vendor/github.com/gregjones/httpcache/LICENSE.txt b/vendor/github.com/gregjones/httpcache/LICENSE.txt new file mode 100644 index 0000000000..81316beb0c --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright © 2012 Greg Jones (greg.jones@gmail.com) + +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/gregjones/httpcache/README.md b/vendor/github.com/gregjones/httpcache/README.md new file mode 100644 index 0000000000..61bd830e57 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/README.md @@ -0,0 +1,24 @@ +httpcache +========= + +[![Build Status](https://travis-ci.org/gregjones/httpcache.svg?branch=master)](https://travis-ci.org/gregjones/httpcache) [![GoDoc](https://godoc.org/github.com/gregjones/httpcache?status.svg)](https://godoc.org/github.com/gregjones/httpcache) + +Package httpcache provides a http.RoundTripper implementation that works as a mostly RFC-compliant cache for http responses. + +It is only suitable for use as a 'private' cache (i.e. for a web-browser or an API-client and not for a shared proxy). + +Cache Backends +-------------- + +- The built-in 'memory' cache stores responses in an in-memory map. +- [`github.com/gregjones/httpcache/diskcache`](https://github.com/gregjones/httpcache/tree/master/diskcache) provides a filesystem-backed cache using the [diskv](https://github.com/peterbourgon/diskv) library. +- [`github.com/gregjones/httpcache/memcache`](https://github.com/gregjones/httpcache/tree/master/memcache) provides memcache implementations, for both App Engine and 'normal' memcache servers. +- [`sourcegraph.com/sourcegraph/s3cache`](https://sourcegraph.com/github.com/sourcegraph/s3cache) uses Amazon S3 for storage. +- [`github.com/gregjones/httpcache/leveldbcache`](https://github.com/gregjones/httpcache/tree/master/leveldbcache) provides a filesystem-backed cache using [leveldb](https://github.com/syndtr/goleveldb/leveldb). +- [`github.com/die-net/lrucache`](https://github.com/die-net/lrucache) provides an in-memory cache that will evict least-recently used entries. +- [`github.com/die-net/lrucache/twotier`](https://github.com/die-net/lrucache/tree/master/twotier) allows caches to be combined, for example to use lrucache above with a persistent disk-cache. + +License +------- + +- [MIT License](LICENSE.txt) diff --git a/vendor/github.com/gregjones/httpcache/diskcache/diskcache.go b/vendor/github.com/gregjones/httpcache/diskcache/diskcache.go new file mode 100644 index 0000000000..42e3129d82 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/diskcache/diskcache.go @@ -0,0 +1,61 @@ +// Package diskcache provides an implementation of httpcache.Cache that uses the diskv package +// to supplement an in-memory map with persistent storage +// +package diskcache + +import ( + "bytes" + "crypto/md5" + "encoding/hex" + "github.com/peterbourgon/diskv" + "io" +) + +// Cache is an implementation of httpcache.Cache that supplements the in-memory map with persistent storage +type Cache struct { + d *diskv.Diskv +} + +// Get returns the response corresponding to key if present +func (c *Cache) Get(key string) (resp []byte, ok bool) { + key = keyToFilename(key) + resp, err := c.d.Read(key) + if err != nil { + return []byte{}, false + } + return resp, true +} + +// Set saves a response to the cache as key +func (c *Cache) Set(key string, resp []byte) { + key = keyToFilename(key) + c.d.WriteStream(key, bytes.NewReader(resp), true) +} + +// Delete removes the response with key from the cache +func (c *Cache) Delete(key string) { + key = keyToFilename(key) + c.d.Erase(key) +} + +func keyToFilename(key string) string { + h := md5.New() + io.WriteString(h, key) + return hex.EncodeToString(h.Sum(nil)) +} + +// New returns a new Cache that will store files in basePath +func New(basePath string) *Cache { + return &Cache{ + d: diskv.New(diskv.Options{ + BasePath: basePath, + CacheSizeMax: 100 * 1024 * 1024, // 100MB + }), + } +} + +// NewWithDiskv returns a new Cache using the provided Diskv as underlying +// storage. +func NewWithDiskv(d *diskv.Diskv) *Cache { + return &Cache{d} +} diff --git a/vendor/github.com/gregjones/httpcache/diskcache/diskcache_test.go b/vendor/github.com/gregjones/httpcache/diskcache/diskcache_test.go new file mode 100644 index 0000000000..35c76cbd1c --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/diskcache/diskcache_test.go @@ -0,0 +1,42 @@ +package diskcache + +import ( + "bytes" + "io/ioutil" + "os" + "testing" +) + +func TestDiskCache(t *testing.T) { + tempDir, err := ioutil.TempDir("", "httpcache") + if err != nil { + t.Fatalf("TempDir: %v", err) + } + defer os.RemoveAll(tempDir) + + cache := New(tempDir) + + key := "testKey" + _, ok := cache.Get(key) + if ok { + t.Fatal("retrieved key before adding it") + } + + val := []byte("some bytes") + cache.Set(key, val) + + retVal, ok := cache.Get(key) + if !ok { + t.Fatal("could not retrieve an element we just added") + } + if !bytes.Equal(retVal, val) { + t.Fatal("retrieved a different value than what we put in") + } + + cache.Delete(key) + + _, ok = cache.Get(key) + if ok { + t.Fatal("deleted key still present") + } +} diff --git a/vendor/github.com/gregjones/httpcache/httpcache.go b/vendor/github.com/gregjones/httpcache/httpcache.go new file mode 100644 index 0000000000..8239edc2cb --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/httpcache.go @@ -0,0 +1,553 @@ +// Package httpcache provides a http.RoundTripper implementation that works as a +// mostly RFC-compliant cache for http responses. +// +// It is only suitable for use as a 'private' cache (i.e. for a web-browser or an API-client +// and not for a shared proxy). +// +package httpcache + +import ( + "bufio" + "bytes" + "errors" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/http/httputil" + "strings" + "sync" + "time" +) + +const ( + stale = iota + fresh + transparent + // XFromCache is the header added to responses that are returned from the cache + XFromCache = "X-From-Cache" +) + +// A Cache interface is used by the Transport to store and retrieve responses. +type Cache interface { + // Get returns the []byte representation of a cached response and a bool + // set to true if the value isn't empty + Get(key string) (responseBytes []byte, ok bool) + // Set stores the []byte representation of a response against a key + Set(key string, responseBytes []byte) + // Delete removes the value associated with the key + Delete(key string) +} + +// cacheKey returns the cache key for req. +func cacheKey(req *http.Request) string { + return req.URL.String() +} + +// CachedResponse returns the cached http.Response for req if present, and nil +// otherwise. +func CachedResponse(c Cache, req *http.Request) (resp *http.Response, err error) { + cachedVal, ok := c.Get(cacheKey(req)) + if !ok { + return + } + + b := bytes.NewBuffer(cachedVal) + return http.ReadResponse(bufio.NewReader(b), req) +} + +// MemoryCache is an implemtation of Cache that stores responses in an in-memory map. +type MemoryCache struct { + mu sync.RWMutex + items map[string][]byte +} + +// Get returns the []byte representation of the response and true if present, false if not +func (c *MemoryCache) Get(key string) (resp []byte, ok bool) { + c.mu.RLock() + resp, ok = c.items[key] + c.mu.RUnlock() + return resp, ok +} + +// Set saves response resp to the cache with key +func (c *MemoryCache) Set(key string, resp []byte) { + c.mu.Lock() + c.items[key] = resp + c.mu.Unlock() +} + +// Delete removes key from the cache +func (c *MemoryCache) Delete(key string) { + c.mu.Lock() + delete(c.items, key) + c.mu.Unlock() +} + +// NewMemoryCache returns a new Cache that will store items in an in-memory map +func NewMemoryCache() *MemoryCache { + c := &MemoryCache{items: map[string][]byte{}} + return c +} + +// Transport is an implementation of http.RoundTripper that will return values from a cache +// where possible (avoiding a network request) and will additionally add validators (etag/if-modified-since) +// to repeated requests allowing servers to return 304 / Not Modified +type Transport struct { + // The RoundTripper interface actually used to make requests + // If nil, http.DefaultTransport is used + Transport http.RoundTripper + Cache Cache + // If true, responses returned from the cache will be given an extra header, X-From-Cache + MarkCachedResponses bool +} + +// NewTransport returns a new Transport with the +// provided Cache implementation and MarkCachedResponses set to true +func NewTransport(c Cache) *Transport { + return &Transport{Cache: c, MarkCachedResponses: true} +} + +// Client returns an *http.Client that caches responses. +func (t *Transport) Client() *http.Client { + return &http.Client{Transport: t} +} + +// varyMatches will return false unless all of the cached values for the headers listed in Vary +// match the new request +func varyMatches(cachedResp *http.Response, req *http.Request) bool { + for _, header := range headerAllCommaSepValues(cachedResp.Header, "vary") { + header = http.CanonicalHeaderKey(header) + if header != "" && req.Header.Get(header) != cachedResp.Header.Get("X-Varied-"+header) { + return false + } + } + return true +} + +// RoundTrip takes a Request and returns a Response +// +// If there is a fresh Response already in cache, then it will be returned without connecting to +// the server. +// +// If there is a stale Response, then any validators it contains will be set on the new request +// to give the server a chance to respond with NotModified. If this happens, then the cached Response +// will be returned. +func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error) { + cacheKey := cacheKey(req) + cacheable := (req.Method == "GET" || req.Method == "HEAD") && req.Header.Get("range") == "" + var cachedResp *http.Response + if cacheable { + cachedResp, err = CachedResponse(t.Cache, req) + } else { + // Need to invalidate an existing value + t.Cache.Delete(cacheKey) + } + + transport := t.Transport + if transport == nil { + transport = http.DefaultTransport + } + + if cacheable && cachedResp != nil && err == nil { + if t.MarkCachedResponses { + cachedResp.Header.Set(XFromCache, "1") + } + + if varyMatches(cachedResp, req) { + // Can only use cached value if the new request doesn't Vary significantly + freshness := getFreshness(cachedResp.Header, req.Header) + if freshness == fresh { + return cachedResp, nil + } + + if freshness == stale { + var req2 *http.Request + // Add validators if caller hasn't already done so + etag := cachedResp.Header.Get("etag") + if etag != "" && req.Header.Get("etag") == "" { + req2 = cloneRequest(req) + req2.Header.Set("if-none-match", etag) + } + lastModified := cachedResp.Header.Get("last-modified") + if lastModified != "" && req.Header.Get("last-modified") == "" { + if req2 == nil { + req2 = cloneRequest(req) + } + req2.Header.Set("if-modified-since", lastModified) + } + if req2 != nil { + req = req2 + } + } + } + + resp, err = transport.RoundTrip(req) + if err == nil && req.Method == "GET" && resp.StatusCode == http.StatusNotModified { + // Replace the 304 response with the one from cache, but update with some new headers + endToEndHeaders := getEndToEndHeaders(resp.Header) + for _, header := range endToEndHeaders { + cachedResp.Header[header] = resp.Header[header] + } + cachedResp.Status = fmt.Sprintf("%d %s", http.StatusOK, http.StatusText(http.StatusOK)) + cachedResp.StatusCode = http.StatusOK + + resp = cachedResp + } else if (err != nil || (cachedResp != nil && resp.StatusCode >= 500)) && + req.Method == "GET" && canStaleOnError(cachedResp.Header, req.Header) { + // In case of transport failure and stale-if-error activated, returns cached content + // when available + cachedResp.Status = fmt.Sprintf("%d %s", http.StatusOK, http.StatusText(http.StatusOK)) + cachedResp.StatusCode = http.StatusOK + return cachedResp, nil + } else { + if err != nil || resp.StatusCode != http.StatusOK { + t.Cache.Delete(cacheKey) + } + if err != nil { + return nil, err + } + } + } else { + reqCacheControl := parseCacheControl(req.Header) + if _, ok := reqCacheControl["only-if-cached"]; ok { + resp = newGatewayTimeoutResponse(req) + } else { + resp, err = transport.RoundTrip(req) + if err != nil { + return nil, err + } + } + } + + if cacheable && canStore(parseCacheControl(req.Header), parseCacheControl(resp.Header)) { + for _, varyKey := range headerAllCommaSepValues(resp.Header, "vary") { + varyKey = http.CanonicalHeaderKey(varyKey) + fakeHeader := "X-Varied-" + varyKey + reqValue := req.Header.Get(varyKey) + if reqValue != "" { + resp.Header.Set(fakeHeader, reqValue) + } + } + switch req.Method { + case "GET": + // Delay caching until EOF is reached. + resp.Body = &cachingReadCloser{ + R: resp.Body, + OnEOF: func(r io.Reader) { + resp := *resp + resp.Body = ioutil.NopCloser(r) + respBytes, err := httputil.DumpResponse(&resp, true) + if err == nil { + t.Cache.Set(cacheKey, respBytes) + } + }, + } + default: + respBytes, err := httputil.DumpResponse(resp, true) + if err == nil { + t.Cache.Set(cacheKey, respBytes) + } + } + } else { + t.Cache.Delete(cacheKey) + } + return resp, nil +} + +// ErrNoDateHeader indicates that the HTTP headers contained no Date header. +var ErrNoDateHeader = errors.New("no Date header") + +// Date parses and returns the value of the Date header. +func Date(respHeaders http.Header) (date time.Time, err error) { + dateHeader := respHeaders.Get("date") + if dateHeader == "" { + err = ErrNoDateHeader + return + } + + return time.Parse(time.RFC1123, dateHeader) +} + +type realClock struct{} + +func (c *realClock) since(d time.Time) time.Duration { + return time.Since(d) +} + +type timer interface { + since(d time.Time) time.Duration +} + +var clock timer = &realClock{} + +// getFreshness will return one of fresh/stale/transparent based on the cache-control +// values of the request and the response +// +// fresh indicates the response can be returned +// stale indicates that the response needs validating before it is returned +// transparent indicates the response should not be used to fulfil the request +// +// Because this is only a private cache, 'public' and 'private' in cache-control aren't +// signficant. Similarly, smax-age isn't used. +func getFreshness(respHeaders, reqHeaders http.Header) (freshness int) { + respCacheControl := parseCacheControl(respHeaders) + reqCacheControl := parseCacheControl(reqHeaders) + if _, ok := reqCacheControl["no-cache"]; ok { + return transparent + } + if _, ok := respCacheControl["no-cache"]; ok { + return stale + } + if _, ok := reqCacheControl["only-if-cached"]; ok { + return fresh + } + + date, err := Date(respHeaders) + if err != nil { + return stale + } + currentAge := clock.since(date) + + var lifetime time.Duration + var zeroDuration time.Duration + + // If a response includes both an Expires header and a max-age directive, + // the max-age directive overrides the Expires header, even if the Expires header is more restrictive. + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err = time.ParseDuration(maxAge + "s") + if err != nil { + lifetime = zeroDuration + } + } else { + expiresHeader := respHeaders.Get("Expires") + if expiresHeader != "" { + expires, err := time.Parse(time.RFC1123, expiresHeader) + if err != nil { + lifetime = zeroDuration + } else { + lifetime = expires.Sub(date) + } + } + } + + if maxAge, ok := reqCacheControl["max-age"]; ok { + // the client is willing to accept a response whose age is no greater than the specified time in seconds + lifetime, err = time.ParseDuration(maxAge + "s") + if err != nil { + lifetime = zeroDuration + } + } + if minfresh, ok := reqCacheControl["min-fresh"]; ok { + // the client wants a response that will still be fresh for at least the specified number of seconds. + minfreshDuration, err := time.ParseDuration(minfresh + "s") + if err == nil { + currentAge = time.Duration(currentAge + minfreshDuration) + } + } + + if maxstale, ok := reqCacheControl["max-stale"]; ok { + // Indicates that the client is willing to accept a response that has exceeded its expiration time. + // If max-stale is assigned a value, then the client is willing to accept a response that has exceeded + // its expiration time by no more than the specified number of seconds. + // If no value is assigned to max-stale, then the client is willing to accept a stale response of any age. + // + // Responses served only because of a max-stale value are supposed to have a Warning header added to them, + // but that seems like a hassle, and is it actually useful? If so, then there needs to be a different + // return-value available here. + if maxstale == "" { + return fresh + } + maxstaleDuration, err := time.ParseDuration(maxstale + "s") + if err == nil { + currentAge = time.Duration(currentAge - maxstaleDuration) + } + } + + if lifetime > currentAge { + return fresh + } + + return stale +} + +// Returns true if either the request or the response includes the stale-if-error +// cache control extension: https://tools.ietf.org/html/rfc5861 +func canStaleOnError(respHeaders, reqHeaders http.Header) bool { + respCacheControl := parseCacheControl(respHeaders) + reqCacheControl := parseCacheControl(reqHeaders) + + var err error + lifetime := time.Duration(-1) + + if staleMaxAge, ok := respCacheControl["stale-if-error"]; ok { + if staleMaxAge != "" { + lifetime, err = time.ParseDuration(staleMaxAge + "s") + if err != nil { + return false + } + } else { + return true + } + } + if staleMaxAge, ok := reqCacheControl["stale-if-error"]; ok { + if staleMaxAge != "" { + lifetime, err = time.ParseDuration(staleMaxAge + "s") + if err != nil { + return false + } + } else { + return true + } + } + + if lifetime >= 0 { + date, err := Date(respHeaders) + if err != nil { + return false + } + currentAge := clock.since(date) + if lifetime > currentAge { + return true + } + } + + return false +} + +func getEndToEndHeaders(respHeaders http.Header) []string { + // These headers are always hop-by-hop + hopByHopHeaders := map[string]struct{}{ + "Connection": struct{}{}, + "Keep-Alive": struct{}{}, + "Proxy-Authenticate": struct{}{}, + "Proxy-Authorization": struct{}{}, + "Te": struct{}{}, + "Trailers": struct{}{}, + "Transfer-Encoding": struct{}{}, + "Upgrade": struct{}{}, + } + + for _, extra := range strings.Split(respHeaders.Get("connection"), ",") { + // any header listed in connection, if present, is also considered hop-by-hop + if strings.Trim(extra, " ") != "" { + hopByHopHeaders[http.CanonicalHeaderKey(extra)] = struct{}{} + } + } + endToEndHeaders := []string{} + for respHeader, _ := range respHeaders { + if _, ok := hopByHopHeaders[respHeader]; !ok { + endToEndHeaders = append(endToEndHeaders, respHeader) + } + } + return endToEndHeaders +} + +func canStore(reqCacheControl, respCacheControl cacheControl) (canStore bool) { + if _, ok := respCacheControl["no-store"]; ok { + return false + } + if _, ok := reqCacheControl["no-store"]; ok { + return false + } + return true +} + +func newGatewayTimeoutResponse(req *http.Request) *http.Response { + var braw bytes.Buffer + braw.WriteString("HTTP/1.1 504 Gateway Timeout\r\n\r\n") + resp, err := http.ReadResponse(bufio.NewReader(&braw), req) + if err != nil { + panic(err) + } + return resp +} + +// cloneRequest returns a clone of the provided *http.Request. +// The clone is a shallow copy of the struct and its Header map. +// (This function copyright goauth2 authors: https://code.google.com/p/goauth2) +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 +} + +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// headerAllCommaSepValues returns all comma-separated values (each +// with whitespace trimmed) for header name in headers. According to +// Section 4.2 of the HTTP/1.1 spec +// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2), +// values from multiple occurrences of a header should be concatenated, if +// the header's value is a comma-separated list. +func headerAllCommaSepValues(headers http.Header, name string) []string { + var vals []string + for _, val := range headers[http.CanonicalHeaderKey(name)] { + fields := strings.Split(val, ",") + for i, f := range fields { + fields[i] = strings.TrimSpace(f) + } + vals = append(vals, fields...) + } + return vals +} + +// cachingReadCloser is a wrapper around ReadCloser R that calls OnEOF +// handler with a full copy of the content read from R when EOF is +// reached. +type cachingReadCloser struct { + // Underlying ReadCloser. + R io.ReadCloser + // OnEOF is called with a copy of the content of R when EOF is reached. + OnEOF func(io.Reader) + + buf bytes.Buffer // buf stores a copy of the content of R. +} + +// Read reads the next len(p) bytes from R or until R is drained. The +// return value n is the number of bytes read. If R has no data to +// return, err is io.EOF and OnEOF is called with a full copy of what +// has been read so far. +func (r *cachingReadCloser) Read(p []byte) (n int, err error) { + n, err = r.R.Read(p) + r.buf.Write(p[:n]) + if err == io.EOF { + r.OnEOF(bytes.NewReader(r.buf.Bytes())) + } + return n, err +} + +func (r *cachingReadCloser) Close() error { + return r.R.Close() +} + +// NewMemoryCacheTransport returns a new Transport using the in-memory cache implementation +func NewMemoryCacheTransport() *Transport { + c := NewMemoryCache() + t := NewTransport(c) + return t +} diff --git a/vendor/github.com/gregjones/httpcache/httpcache_test.go b/vendor/github.com/gregjones/httpcache/httpcache_test.go new file mode 100644 index 0000000000..c2eab02310 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/httpcache_test.go @@ -0,0 +1,1360 @@ +package httpcache + +import ( + "bytes" + "errors" + "flag" + "io" + "io/ioutil" + "net/http" + "net/http/httptest" + "os" + "strconv" + "testing" + "time" +) + +var s struct { + server *httptest.Server + client http.Client + transport *Transport + done chan struct{} // Closed to unlock infinite handlers. +} + +type fakeClock struct { + elapsed time.Duration +} + +func (c *fakeClock) since(t time.Time) time.Duration { + return c.elapsed +} + +func TestMain(m *testing.M) { + flag.Parse() + setup() + code := m.Run() + teardown() + os.Exit(code) +} + +func setup() { + tp := NewMemoryCacheTransport() + client := http.Client{Transport: tp} + s.transport = tp + s.client = client + s.done = make(chan struct{}) + + mux := http.NewServeMux() + s.server = httptest.NewServer(mux) + + mux.HandleFunc("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "max-age=3600") + })) + + mux.HandleFunc("/method", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "max-age=3600") + w.Write([]byte(r.Method)) + })) + + mux.HandleFunc("/range", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + lm := "Fri, 14 Dec 2010 01:01:50 GMT" + if r.Header.Get("if-modified-since") == lm { + w.WriteHeader(http.StatusNotModified) + return + } + w.Header().Set("last-modified", lm) + if r.Header.Get("range") == "bytes=4-9" { + w.WriteHeader(http.StatusPartialContent) + w.Write([]byte(" text ")) + return + } + w.Write([]byte("Some text content")) + })) + + mux.HandleFunc("/nostore", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "no-store") + })) + + mux.HandleFunc("/etag", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + etag := "124567" + if r.Header.Get("if-none-match") == etag { + w.WriteHeader(http.StatusNotModified) + return + } + w.Header().Set("etag", etag) + })) + + mux.HandleFunc("/lastmodified", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + lm := "Fri, 14 Dec 2010 01:01:50 GMT" + if r.Header.Get("if-modified-since") == lm { + w.WriteHeader(http.StatusNotModified) + return + } + w.Header().Set("last-modified", lm) + })) + + mux.HandleFunc("/varyaccept", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "max-age=3600") + w.Header().Set("Content-Type", "text/plain") + w.Header().Set("Vary", "Accept") + w.Write([]byte("Some text content")) + })) + + mux.HandleFunc("/doublevary", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "max-age=3600") + w.Header().Set("Content-Type", "text/plain") + w.Header().Set("Vary", "Accept, Accept-Language") + w.Write([]byte("Some text content")) + })) + mux.HandleFunc("/2varyheaders", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "max-age=3600") + w.Header().Set("Content-Type", "text/plain") + w.Header().Add("Vary", "Accept") + w.Header().Add("Vary", "Accept-Language") + w.Write([]byte("Some text content")) + })) + mux.HandleFunc("/varyunused", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "max-age=3600") + w.Header().Set("Content-Type", "text/plain") + w.Header().Set("Vary", "X-Madeup-Header") + w.Write([]byte("Some text content")) + })) + + updateFieldsCounter := 0 + mux.HandleFunc("/updatefields", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("X-Counter", strconv.Itoa(updateFieldsCounter)) + w.Header().Set("Etag", `"e"`) + updateFieldsCounter++ + if r.Header.Get("if-none-match") != "" { + w.WriteHeader(http.StatusNotModified) + return + } + w.Write([]byte("Some text content")) + })) + + // Take 3 seconds to return 200 OK (for testing client timeouts). + mux.HandleFunc("/3seconds", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + time.Sleep(3 * time.Second) + })) + + mux.HandleFunc("/infinite", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + for { + select { + case <-s.done: + return + default: + w.Write([]byte{0}) + } + } + })) +} + +func teardown() { + close(s.done) + s.server.Close() +} + +func resetTest() { + s.transport.Cache = NewMemoryCache() + clock = &realClock{} +} + +// TestCacheableMethod ensures that uncacheable method does not get stored +// in cache and get incorrectly used for a following cacheable method request. +func TestCacheableMethod(t *testing.T) { + resetTest() + { + req, err := http.NewRequest("POST", s.server.URL+"/method", nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, resp.Body) + if err != nil { + t.Fatal(err) + } + err = resp.Body.Close() + if err != nil { + t.Fatal(err) + } + if got, want := buf.String(), "POST"; got != want { + t.Errorf("got %q, want %q", got, want) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("response status code isn't 200 OK: %v", resp.StatusCode) + } + } + { + req, err := http.NewRequest("GET", s.server.URL+"/method", nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, resp.Body) + if err != nil { + t.Fatal(err) + } + err = resp.Body.Close() + if err != nil { + t.Fatal(err) + } + if got, want := buf.String(), "GET"; got != want { + t.Errorf("got wrong body %q, want %q", got, want) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("response status code isn't 200 OK: %v", resp.StatusCode) + } + if resp.Header.Get(XFromCache) != "" { + t.Errorf("XFromCache header isn't blank") + } + } +} + +func TestDontStorePartialRangeInCache(t *testing.T) { + resetTest() + { + req, err := http.NewRequest("GET", s.server.URL+"/range", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("range", "bytes=4-9") + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, resp.Body) + if err != nil { + t.Fatal(err) + } + err = resp.Body.Close() + if err != nil { + t.Fatal(err) + } + if got, want := buf.String(), " text "; got != want { + t.Errorf("got %q, want %q", got, want) + } + if resp.StatusCode != http.StatusPartialContent { + t.Errorf("response status code isn't 206 Partial Content: %v", resp.StatusCode) + } + } + { + req, err := http.NewRequest("GET", s.server.URL+"/range", nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, resp.Body) + if err != nil { + t.Fatal(err) + } + err = resp.Body.Close() + if err != nil { + t.Fatal(err) + } + if got, want := buf.String(), "Some text content"; got != want { + t.Errorf("got %q, want %q", got, want) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("response status code isn't 200 OK: %v", resp.StatusCode) + } + if resp.Header.Get(XFromCache) != "" { + t.Error("XFromCache header isn't blank") + } + } + { + req, err := http.NewRequest("GET", s.server.URL+"/range", nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, resp.Body) + if err != nil { + t.Fatal(err) + } + err = resp.Body.Close() + if err != nil { + t.Fatal(err) + } + if got, want := buf.String(), "Some text content"; got != want { + t.Errorf("got %q, want %q", got, want) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("response status code isn't 200 OK: %v", resp.StatusCode) + } + if resp.Header.Get(XFromCache) != "1" { + t.Errorf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } + { + req, err := http.NewRequest("GET", s.server.URL+"/range", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("range", "bytes=4-9") + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, resp.Body) + if err != nil { + t.Fatal(err) + } + err = resp.Body.Close() + if err != nil { + t.Fatal(err) + } + if got, want := buf.String(), " text "; got != want { + t.Errorf("got %q, want %q", got, want) + } + if resp.StatusCode != http.StatusPartialContent { + t.Errorf("response status code isn't 206 Partial Content: %v", resp.StatusCode) + } + } +} + +func TestCacheOnlyIfBodyRead(t *testing.T) { + resetTest() + { + req, err := http.NewRequest("GET", s.server.URL, nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + // We do not read the body + resp.Body.Close() + } + { + req, err := http.NewRequest("GET", s.server.URL, nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatalf("XFromCache header isn't blank") + } + } +} + +func TestOnlyReadBodyOnDemand(t *testing.T) { + resetTest() + + req, err := http.NewRequest("GET", s.server.URL+"/infinite", nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) // This shouldn't hang forever. + if err != nil { + t.Fatal(err) + } + buf := make([]byte, 10) // Only partially read the body. + _, err = resp.Body.Read(buf) + if err != nil { + t.Fatal(err) + } + resp.Body.Close() +} + +func TestGetOnlyIfCachedHit(t *testing.T) { + resetTest() + { + req, err := http.NewRequest("GET", s.server.URL, nil) + if err != nil { + t.Fatal(err) + } + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + req, err := http.NewRequest("GET", s.server.URL, nil) + if err != nil { + t.Fatal(err) + } + req.Header.Add("cache-control", "only-if-cached") + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + if resp.StatusCode != http.StatusOK { + t.Fatalf("response status code isn't 200 OK: %v", resp.StatusCode) + } + } +} + +func TestGetOnlyIfCachedMiss(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL, nil) + if err != nil { + t.Fatal(err) + } + req.Header.Add("cache-control", "only-if-cached") + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + if resp.StatusCode != http.StatusGatewayTimeout { + t.Fatalf("response status code isn't 504 GatewayTimeout: %v", resp.StatusCode) + } +} + +func TestGetNoStoreRequest(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL, nil) + if err != nil { + t.Fatal(err) + } + req.Header.Add("Cache-Control", "no-store") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } +} + +func TestGetNoStoreResponse(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/nostore", nil) + if err != nil { + t.Fatal(err) + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } +} + +func TestGetWithEtag(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/etag", nil) + if err != nil { + t.Fatal(err) + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + // additional assertions to verify that 304 response is converted properly + if resp.StatusCode != http.StatusOK { + t.Fatalf("response status code isn't 200 OK: %v", resp.StatusCode) + } + if _, ok := resp.Header["Connection"]; ok { + t.Fatalf("Connection header isn't absent") + } + } +} + +func TestGetWithLastModified(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/lastmodified", nil) + if err != nil { + t.Fatal(err) + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } +} + +func TestGetWithVary(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/varyaccept", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("Accept", "text/plain") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get("Vary") != "Accept" { + t.Fatalf(`Vary header isn't "Accept": %v`, resp.Header.Get("Vary")) + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } + req.Header.Set("Accept", "text/html") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + req.Header.Set("Accept", "") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } +} + +func TestGetWithDoubleVary(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/doublevary", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("Accept", "text/plain") + req.Header.Set("Accept-Language", "da, en-gb;q=0.8, en;q=0.7") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get("Vary") == "" { + t.Fatalf(`Vary header is blank`) + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } + req.Header.Set("Accept-Language", "") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + req.Header.Set("Accept-Language", "da") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } +} + +func TestGetWith2VaryHeaders(t *testing.T) { + resetTest() + // Tests that multiple Vary headers' comma-separated lists are + // merged. See https://github.com/gregjones/httpcache/issues/27. + const ( + accept = "text/plain" + acceptLanguage = "da, en-gb;q=0.8, en;q=0.7" + ) + req, err := http.NewRequest("GET", s.server.URL+"/2varyheaders", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("Accept", accept) + req.Header.Set("Accept-Language", acceptLanguage) + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get("Vary") == "" { + t.Fatalf(`Vary header is blank`) + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } + req.Header.Set("Accept-Language", "") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + req.Header.Set("Accept-Language", "da") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + req.Header.Set("Accept-Language", acceptLanguage) + req.Header.Set("Accept", "") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + } + req.Header.Set("Accept", "image/png") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "" { + t.Fatal("XFromCache header isn't blank") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } +} + +func TestGetVaryUnused(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/varyunused", nil) + if err != nil { + t.Fatal(err) + } + req.Header.Set("Accept", "text/plain") + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get("Vary") == "" { + t.Fatalf(`Vary header is blank`) + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + } +} + +func TestUpdateFields(t *testing.T) { + resetTest() + req, err := http.NewRequest("GET", s.server.URL+"/updatefields", nil) + if err != nil { + t.Fatal(err) + } + var counter, counter2 string + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + counter = resp.Header.Get("x-counter") + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + } + { + resp, err := s.client.Do(req) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.Header.Get(XFromCache) != "1" { + t.Fatalf(`XFromCache header isn't "1": %v`, resp.Header.Get(XFromCache)) + } + counter2 = resp.Header.Get("x-counter") + } + if counter == counter2 { + t.Fatalf(`both "x-counter" values are equal: %v %v`, counter, counter2) + } +} + +func TestParseCacheControl(t *testing.T) { + resetTest() + h := http.Header{} + for range parseCacheControl(h) { + t.Fatal("cacheControl should be empty") + } + + h.Set("cache-control", "no-cache") + { + cc := parseCacheControl(h) + if _, ok := cc["foo"]; ok { + t.Error(`Value "foo" shouldn't exist`) + } + noCache, ok := cc["no-cache"] + if !ok { + t.Fatalf(`"no-cache" value isn't set`) + } + if noCache != "" { + t.Fatalf(`"no-cache" value isn't blank: %v`, noCache) + } + } + h.Set("cache-control", "no-cache, max-age=3600") + { + cc := parseCacheControl(h) + noCache, ok := cc["no-cache"] + if !ok { + t.Fatalf(`"no-cache" value isn't set`) + } + if noCache != "" { + t.Fatalf(`"no-cache" value isn't blank: %v`, noCache) + } + if cc["max-age"] != "3600" { + t.Fatalf(`"max-age" value isn't "3600": %v`, cc["max-age"]) + } + } +} + +func TestNoCacheRequestExpiration(t *testing.T) { + resetTest() + respHeaders := http.Header{} + respHeaders.Set("Cache-Control", "max-age=7200") + + reqHeaders := http.Header{} + reqHeaders.Set("Cache-Control", "no-cache") + if getFreshness(respHeaders, reqHeaders) != transparent { + t.Fatal("freshness isn't transparent") + } +} + +func TestNoCacheResponseExpiration(t *testing.T) { + resetTest() + respHeaders := http.Header{} + respHeaders.Set("Cache-Control", "no-cache") + respHeaders.Set("Expires", "Wed, 19 Apr 3000 11:43:00 GMT") + + reqHeaders := http.Header{} + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestReqMustRevalidate(t *testing.T) { + resetTest() + // not paying attention to request setting max-stale means never returning stale + // responses, so always acting as if must-revalidate is set + respHeaders := http.Header{} + + reqHeaders := http.Header{} + reqHeaders.Set("Cache-Control", "must-revalidate") + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestRespMustRevalidate(t *testing.T) { + resetTest() + respHeaders := http.Header{} + respHeaders.Set("Cache-Control", "must-revalidate") + + reqHeaders := http.Header{} + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestFreshExpiration(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("expires", now.Add(time.Duration(2)*time.Second).Format(time.RFC1123)) + + reqHeaders := http.Header{} + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } + + clock = &fakeClock{elapsed: 3 * time.Second} + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestMaxAge(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("cache-control", "max-age=2") + + reqHeaders := http.Header{} + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } + + clock = &fakeClock{elapsed: 3 * time.Second} + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestMaxAgeZero(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("cache-control", "max-age=0") + + reqHeaders := http.Header{} + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestBothMaxAge(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("cache-control", "max-age=2") + + reqHeaders := http.Header{} + reqHeaders.Set("cache-control", "max-age=0") + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestMinFreshWithExpires(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("expires", now.Add(time.Duration(2)*time.Second).Format(time.RFC1123)) + + reqHeaders := http.Header{} + reqHeaders.Set("cache-control", "min-fresh=1") + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } + + reqHeaders = http.Header{} + reqHeaders.Set("cache-control", "min-fresh=2") + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func TestEmptyMaxStale(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("cache-control", "max-age=20") + + reqHeaders := http.Header{} + reqHeaders.Set("cache-control", "max-stale") + clock = &fakeClock{elapsed: 10 * time.Second} + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } + + clock = &fakeClock{elapsed: 60 * time.Second} + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } +} + +func TestMaxStaleValue(t *testing.T) { + resetTest() + now := time.Now() + respHeaders := http.Header{} + respHeaders.Set("date", now.Format(time.RFC1123)) + respHeaders.Set("cache-control", "max-age=10") + + reqHeaders := http.Header{} + reqHeaders.Set("cache-control", "max-stale=20") + clock = &fakeClock{elapsed: 5 * time.Second} + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } + + clock = &fakeClock{elapsed: 15 * time.Second} + if getFreshness(respHeaders, reqHeaders) != fresh { + t.Fatal("freshness isn't fresh") + } + + clock = &fakeClock{elapsed: 30 * time.Second} + if getFreshness(respHeaders, reqHeaders) != stale { + t.Fatal("freshness isn't stale") + } +} + +func containsHeader(headers []string, header string) bool { + for _, v := range headers { + if http.CanonicalHeaderKey(v) == http.CanonicalHeaderKey(header) { + return true + } + } + return false +} + +func TestGetEndToEndHeaders(t *testing.T) { + resetTest() + var ( + headers http.Header + end2end []string + ) + + headers = http.Header{} + headers.Set("content-type", "text/html") + headers.Set("te", "deflate") + + end2end = getEndToEndHeaders(headers) + if !containsHeader(end2end, "content-type") { + t.Fatal(`doesn't contain "content-type" header`) + } + if containsHeader(end2end, "te") { + t.Fatal(`doesn't contain "te" header`) + } + + headers = http.Header{} + headers.Set("connection", "content-type") + headers.Set("content-type", "text/csv") + headers.Set("te", "deflate") + end2end = getEndToEndHeaders(headers) + if containsHeader(end2end, "connection") { + t.Fatal(`doesn't contain "connection" header`) + } + if containsHeader(end2end, "content-type") { + t.Fatal(`doesn't contain "content-type" header`) + } + if containsHeader(end2end, "te") { + t.Fatal(`doesn't contain "te" header`) + } + + headers = http.Header{} + end2end = getEndToEndHeaders(headers) + if len(end2end) != 0 { + t.Fatal(`non-zero end2end headers`) + } + + headers = http.Header{} + headers.Set("connection", "content-type") + end2end = getEndToEndHeaders(headers) + if len(end2end) != 0 { + t.Fatal(`non-zero end2end headers`) + } +} + +type transportMock struct { + response *http.Response + err error +} + +func (t transportMock) RoundTrip(req *http.Request) (resp *http.Response, err error) { + return t.response, t.err +} + +func TestStaleIfErrorRequest(t *testing.T) { + resetTest() + now := time.Now() + tmock := transportMock{ + response: &http.Response{ + Status: http.StatusText(http.StatusOK), + StatusCode: http.StatusOK, + Header: http.Header{ + "Date": []string{now.Format(time.RFC1123)}, + "Cache-Control": []string{"no-cache"}, + }, + Body: ioutil.NopCloser(bytes.NewBuffer([]byte("some data"))), + }, + err: nil, + } + tp := NewMemoryCacheTransport() + tp.Transport = &tmock + + // First time, response is cached on success + r, _ := http.NewRequest("GET", "http://somewhere.com/", nil) + r.Header.Set("Cache-Control", "stale-if-error") + resp, err := tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + // On failure, response is returned from the cache + tmock.response = nil + tmock.err = errors.New("some error") + resp, err = tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } +} + +func TestStaleIfErrorRequestLifetime(t *testing.T) { + resetTest() + now := time.Now() + tmock := transportMock{ + response: &http.Response{ + Status: http.StatusText(http.StatusOK), + StatusCode: http.StatusOK, + Header: http.Header{ + "Date": []string{now.Format(time.RFC1123)}, + "Cache-Control": []string{"no-cache"}, + }, + Body: ioutil.NopCloser(bytes.NewBuffer([]byte("some data"))), + }, + err: nil, + } + tp := NewMemoryCacheTransport() + tp.Transport = &tmock + + // First time, response is cached on success + r, _ := http.NewRequest("GET", "http://somewhere.com/", nil) + r.Header.Set("Cache-Control", "stale-if-error=100") + resp, err := tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + // On failure, response is returned from the cache + tmock.response = nil + tmock.err = errors.New("some error") + resp, err = tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + + // Same for http errors + tmock.response = &http.Response{StatusCode: http.StatusInternalServerError} + tmock.err = nil + resp, err = tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + + // If failure last more than max stale, error is returned + clock = &fakeClock{elapsed: 200 * time.Second} + _, err = tp.RoundTrip(r) + if err != tmock.err { + t.Fatalf("got err %v, want %v", err, tmock.err) + } +} + +func TestStaleIfErrorResponse(t *testing.T) { + resetTest() + now := time.Now() + tmock := transportMock{ + response: &http.Response{ + Status: http.StatusText(http.StatusOK), + StatusCode: http.StatusOK, + Header: http.Header{ + "Date": []string{now.Format(time.RFC1123)}, + "Cache-Control": []string{"no-cache, stale-if-error"}, + }, + Body: ioutil.NopCloser(bytes.NewBuffer([]byte("some data"))), + }, + err: nil, + } + tp := NewMemoryCacheTransport() + tp.Transport = &tmock + + // First time, response is cached on success + r, _ := http.NewRequest("GET", "http://somewhere.com/", nil) + resp, err := tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + // On failure, response is returned from the cache + tmock.response = nil + tmock.err = errors.New("some error") + resp, err = tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } +} + +func TestStaleIfErrorResponseLifetime(t *testing.T) { + resetTest() + now := time.Now() + tmock := transportMock{ + response: &http.Response{ + Status: http.StatusText(http.StatusOK), + StatusCode: http.StatusOK, + Header: http.Header{ + "Date": []string{now.Format(time.RFC1123)}, + "Cache-Control": []string{"no-cache, stale-if-error=100"}, + }, + Body: ioutil.NopCloser(bytes.NewBuffer([]byte("some data"))), + }, + err: nil, + } + tp := NewMemoryCacheTransport() + tp.Transport = &tmock + + // First time, response is cached on success + r, _ := http.NewRequest("GET", "http://somewhere.com/", nil) + resp, err := tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + _, err = ioutil.ReadAll(resp.Body) + if err != nil { + t.Fatal(err) + } + + // On failure, response is returned from the cache + tmock.response = nil + tmock.err = errors.New("some error") + resp, err = tp.RoundTrip(r) + if err != nil { + t.Fatal(err) + } + if resp == nil { + t.Fatal("resp is nil") + } + + // If failure last more than max stale, error is returned + clock = &fakeClock{elapsed: 200 * time.Second} + _, err = tp.RoundTrip(r) + if err != tmock.err { + t.Fatalf("got err %v, want %v", err, tmock.err) + } +} + +// Test that http.Client.Timeout is respected when cache transport is used. +// That is so as long as request cancellation is propagated correctly. +// In the past, that required CancelRequest to be implemented correctly, +// but modern http.Client uses Request.Cancel (or request context) instead, +// so we don't have to do anything. +func TestClientTimeout(t *testing.T) { + if testing.Short() { + t.Skip("skipping timeout test in short mode") // Because it takes at least 3 seconds to run. + } + resetTest() + client := &http.Client{ + Transport: NewMemoryCacheTransport(), + Timeout: time.Second, + } + started := time.Now() + resp, err := client.Get(s.server.URL + "/3seconds") + taken := time.Since(started) + if err == nil { + t.Error("got nil error, want timeout error") + } + if resp != nil { + t.Error("got non-nil resp, want nil resp") + } + if taken >= 2*time.Second { + t.Error("client.Do took 2+ seconds, want < 2 seconds") + } +} diff --git a/vendor/github.com/gregjones/httpcache/leveldbcache/leveldbcache.go b/vendor/github.com/gregjones/httpcache/leveldbcache/leveldbcache.go new file mode 100644 index 0000000000..9bcb7e2771 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/leveldbcache/leveldbcache.go @@ -0,0 +1,51 @@ +// Package leveldbcache provides an implementation of httpcache.Cache that +// uses github.com/syndtr/goleveldb/leveldb +package leveldbcache + +import ( + "github.com/syndtr/goleveldb/leveldb" +) + +// Cache is an implementation of httpcache.Cache with leveldb storage +type Cache struct { + db *leveldb.DB +} + +// Get returns the response corresponding to key if present +func (c *Cache) Get(key string) (resp []byte, ok bool) { + var err error + resp, err = c.db.Get([]byte(key), nil) + if err != nil { + return []byte{}, false + } + return resp, true +} + +// Set saves a response to the cache as key +func (c *Cache) Set(key string, resp []byte) { + c.db.Put([]byte(key), resp, nil) +} + +// Delete removes the response with key from the cache +func (c *Cache) Delete(key string) { + c.db.Delete([]byte(key), nil) +} + +// New returns a new Cache that will store leveldb in path +func New(path string) (*Cache, error) { + cache := &Cache{} + + var err error + cache.db, err = leveldb.OpenFile(path, nil) + + if err != nil { + return nil, err + } + return cache, nil +} + +// NewWithDB returns a new Cache using the provided leveldb as underlying +// storage. +func NewWithDB(db *leveldb.DB) *Cache { + return &Cache{db} +} diff --git a/vendor/github.com/gregjones/httpcache/leveldbcache/leveldbcache_test.go b/vendor/github.com/gregjones/httpcache/leveldbcache/leveldbcache_test.go new file mode 100644 index 0000000000..b885c01695 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/leveldbcache/leveldbcache_test.go @@ -0,0 +1,46 @@ +package leveldbcache + +import ( + "bytes" + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +func TestDiskCache(t *testing.T) { + tempDir, err := ioutil.TempDir("", "httpcache") + if err != nil { + t.Fatalf("TempDir: %v", err) + } + defer os.RemoveAll(tempDir) + + cache, err := New(filepath.Join(tempDir, "db")) + if err != nil { + t.Fatalf("New leveldb,: %v", err) + } + + key := "testKey" + _, ok := cache.Get(key) + if ok { + t.Fatal("retrieved key before adding it") + } + + val := []byte("some bytes") + cache.Set(key, val) + + retVal, ok := cache.Get(key) + if !ok { + t.Fatal("could not retrieve an element we just added") + } + if !bytes.Equal(retVal, val) { + t.Fatal("retrieved a different value than what we put in") + } + + cache.Delete(key) + + _, ok = cache.Get(key) + if ok { + t.Fatal("deleted key still present") + } +} diff --git a/vendor/github.com/gregjones/httpcache/memcache/appengine.go b/vendor/github.com/gregjones/httpcache/memcache/appengine.go new file mode 100644 index 0000000000..e68d9bc092 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/memcache/appengine.go @@ -0,0 +1,61 @@ +// +build appengine + +// Package memcache provides an implementation of httpcache.Cache that uses App +// Engine's memcache package to store cached responses. +// +// When not built for Google App Engine, this package will provide an +// implementation that connects to a specified memcached server. See the +// memcache.go file in this package for details. +package memcache + +import ( + "appengine" + "appengine/memcache" +) + +// Cache is an implementation of httpcache.Cache that caches responses in App +// Engine's memcache. +type Cache struct { + appengine.Context +} + +// cacheKey modifies an httpcache key for use in memcache. Specifically, it +// prefixes keys to avoid collision with other data stored in memcache. +func cacheKey(key string) string { + return "httpcache:" + key +} + +// Get returns the response corresponding to key if present. +func (c *Cache) Get(key string) (resp []byte, ok bool) { + item, err := memcache.Get(c.Context, cacheKey(key)) + if err != nil { + if err != memcache.ErrCacheMiss { + c.Context.Errorf("error getting cached response: %v", err) + } + return nil, false + } + return item.Value, true +} + +// Set saves a response to the cache as key. +func (c *Cache) Set(key string, resp []byte) { + item := &memcache.Item{ + Key: cacheKey(key), + Value: resp, + } + if err := memcache.Set(c.Context, item); err != nil { + c.Context.Errorf("error caching response: %v", err) + } +} + +// Delete removes the response with key from the cache. +func (c *Cache) Delete(key string) { + if err := memcache.Delete(c.Context, cacheKey(key)); err != nil { + c.Context.Errorf("error deleting cached response: %v", err) + } +} + +// New returns a new Cache for the given context. +func New(ctx appengine.Context) *Cache { + return &Cache{ctx} +} diff --git a/vendor/github.com/gregjones/httpcache/memcache/appengine_test.go b/vendor/github.com/gregjones/httpcache/memcache/appengine_test.go new file mode 100644 index 0000000000..818b2776ea --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/memcache/appengine_test.go @@ -0,0 +1,44 @@ +// +build appengine + +package memcache + +import ( + "bytes" + "testing" + + "appengine/aetest" +) + +func TestAppEngine(t *testing.T) { + ctx, err := aetest.NewContext(nil) + if err != nil { + t.Fatal(err) + } + defer ctx.Close() + + cache := New(ctx) + + key := "testKey" + _, ok := cache.Get(key) + if ok { + t.Fatal("retrieved key before adding it") + } + + val := []byte("some bytes") + cache.Set(key, val) + + retVal, ok := cache.Get(key) + if !ok { + t.Fatal("could not retrieve an element we just added") + } + if !bytes.Equal(retVal, val) { + t.Fatal("retrieved a different value than what we put in") + } + + cache.Delete(key) + + _, ok = cache.Get(key) + if ok { + t.Fatal("deleted key still present") + } +} diff --git a/vendor/github.com/gregjones/httpcache/memcache/memcache.go b/vendor/github.com/gregjones/httpcache/memcache/memcache.go new file mode 100644 index 0000000000..462f0e5419 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/memcache/memcache.go @@ -0,0 +1,60 @@ +// +build !appengine + +// Package memcache provides an implementation of httpcache.Cache that uses +// gomemcache to store cached responses. +// +// When built for Google App Engine, this package will provide an +// implementation that uses App Engine's memcache service. See the +// appengine.go file in this package for details. +package memcache + +import ( + "github.com/bradfitz/gomemcache/memcache" +) + +// Cache is an implementation of httpcache.Cache that caches responses in a +// memcache server. +type Cache struct { + *memcache.Client +} + +// cacheKey modifies an httpcache key for use in memcache. Specifically, it +// prefixes keys to avoid collision with other data stored in memcache. +func cacheKey(key string) string { + return "httpcache:" + key +} + +// Get returns the response corresponding to key if present. +func (c *Cache) Get(key string) (resp []byte, ok bool) { + item, err := c.Client.Get(cacheKey(key)) + if err != nil { + return nil, false + } + return item.Value, true +} + +// Set saves a response to the cache as key. +func (c *Cache) Set(key string, resp []byte) { + item := &memcache.Item{ + Key: cacheKey(key), + Value: resp, + } + c.Client.Set(item) +} + +// Delete removes the response with key from the cache. +func (c *Cache) Delete(key string) { + c.Client.Delete(cacheKey(key)) +} + +// New returns a new Cache using the provided memcache server(s) with equal +// weight. If a server is listed multiple times, it gets a proportional amount +// of weight. +func New(server ...string) *Cache { + return NewWithClient(memcache.New(server...)) +} + +// NewWithClient returns a new Cache with the given memcache client. +func NewWithClient(client *memcache.Client) *Cache { + return &Cache{client} +} diff --git a/vendor/github.com/gregjones/httpcache/memcache/memcache_test.go b/vendor/github.com/gregjones/httpcache/memcache/memcache_test.go new file mode 100644 index 0000000000..4dcc547c6e --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/memcache/memcache_test.go @@ -0,0 +1,47 @@ +// +build !appengine + +package memcache + +import ( + "bytes" + "net" + "testing" +) + +const testServer = "localhost:11211" + +func TestMemCache(t *testing.T) { + conn, err := net.Dial("tcp", testServer) + if err != nil { + // TODO: rather than skip the test, fall back to a faked memcached server + t.Skipf("skipping test; no server running at %s", testServer) + } + conn.Write([]byte("flush_all\r\n")) // flush memcache + conn.Close() + + cache := New(testServer) + + key := "testKey" + _, ok := cache.Get(key) + if ok { + t.Fatal("retrieved key before adding it") + } + + val := []byte("some bytes") + cache.Set(key, val) + + retVal, ok := cache.Get(key) + if !ok { + t.Fatal("could not retrieve an element we just added") + } + if !bytes.Equal(retVal, val) { + t.Fatal("retrieved a different value than what we put in") + } + + cache.Delete(key) + + _, ok = cache.Get(key) + if ok { + t.Fatal("deleted key still present") + } +} diff --git a/vendor/github.com/gregjones/httpcache/redis/redis.go b/vendor/github.com/gregjones/httpcache/redis/redis.go new file mode 100644 index 0000000000..3143d44388 --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/redis/redis.go @@ -0,0 +1,43 @@ +// Package redis provides a redis interface for http caching. +package redis + +import ( + "github.com/garyburd/redigo/redis" + "github.com/gregjones/httpcache" +) + +// cache is an implementation of httpcache.Cache that caches responses in a +// redis server. +type cache struct { + redis.Conn +} + +// cacheKey modifies an httpcache key for use in redis. Specifically, it +// prefixes keys to avoid collision with other data stored in redis. +func cacheKey(key string) string { + return "rediscache:" + key +} + +// Get returns the response corresponding to key if present. +func (c cache) Get(key string) (resp []byte, ok bool) { + item, err := redis.Bytes(c.Do("GET", cacheKey(key))) + if err != nil { + return nil, false + } + return item, true +} + +// Set saves a response to the cache as key. +func (c cache) Set(key string, resp []byte) { + c.Do("SET", cacheKey(key), resp) +} + +// Delete removes the response with key from the cache. +func (c cache) Delete(key string) { + c.Do("DEL", cacheKey(key)) +} + +// NewWithClient returns a new Cache with the given redis connection. +func NewWithClient(client redis.Conn) httpcache.Cache { + return cache{client} +} diff --git a/vendor/github.com/gregjones/httpcache/redis/redis_test.go b/vendor/github.com/gregjones/httpcache/redis/redis_test.go new file mode 100644 index 0000000000..72f6f619ae --- /dev/null +++ b/vendor/github.com/gregjones/httpcache/redis/redis_test.go @@ -0,0 +1,43 @@ +package redis + +import ( + "bytes" + "testing" + + "github.com/garyburd/redigo/redis" +) + +func TestRedisCache(t *testing.T) { + conn, err := redis.Dial("tcp", "localhost:6379") + if err != nil { + // TODO: rather than skip the test, fall back to a faked redis server + t.Skipf("skipping test; no server running at localhost:6379") + } + conn.Do("FLUSHALL") + + cache := NewWithClient(conn) + + key := "testKey" + _, ok := cache.Get(key) + if ok { + t.Fatal("retrieved key before adding it") + } + + val := []byte("some bytes") + cache.Set(key, val) + + retVal, ok := cache.Get(key) + if !ok { + t.Fatal("could not retrieve an element we just added") + } + if !bytes.Equal(retVal, val) { + t.Fatal("retrieved a different value than what we put in") + } + + cache.Delete(key) + + _, ok = cache.Get(key) + if ok { + t.Fatal("deleted key still present") + } +} diff --git a/vendor/github.com/json-iterator/go/.codecov.yml b/vendor/github.com/json-iterator/go/.codecov.yml new file mode 100644 index 0000000000..955dc0be5f --- /dev/null +++ b/vendor/github.com/json-iterator/go/.codecov.yml @@ -0,0 +1,3 @@ +ignore: + - "output_tests/.*" + diff --git a/vendor/github.com/json-iterator/go/.gitignore b/vendor/github.com/json-iterator/go/.gitignore new file mode 100644 index 0000000000..501fcdc9a6 --- /dev/null +++ b/vendor/github.com/json-iterator/go/.gitignore @@ -0,0 +1,3 @@ +.idea +/coverage.txt +/profile.out diff --git a/vendor/github.com/json-iterator/go/.travis.yml b/vendor/github.com/json-iterator/go/.travis.yml new file mode 100644 index 0000000000..945b9c5947 --- /dev/null +++ b/vendor/github.com/json-iterator/go/.travis.yml @@ -0,0 +1,13 @@ +language: go + +go: + - 1.8.x + +before_install: + - go get -t -v ./... + +script: + - ./test.sh + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/json-iterator/go/LICENSE b/vendor/github.com/json-iterator/go/LICENSE new file mode 100644 index 0000000000..2cf4f5ab28 --- /dev/null +++ b/vendor/github.com/json-iterator/go/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 json-iterator + +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/json-iterator/go/README.md b/vendor/github.com/json-iterator/go/README.md new file mode 100644 index 0000000000..23a4b57c8e --- /dev/null +++ b/vendor/github.com/json-iterator/go/README.md @@ -0,0 +1,80 @@ +[![Sourcegraph](https://sourcegraph.com/github.com/json-iterator/go/-/badge.svg)](https://sourcegraph.com/github.com/json-iterator/go?badge) +[![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/json-iterator/go) +[![Build Status](https://travis-ci.org/json-iterator/go.svg?branch=master)](https://travis-ci.org/json-iterator/go) +[![codecov](https://codecov.io/gh/json-iterator/go/branch/master/graph/badge.svg)](https://codecov.io/gh/json-iterator/go) +[![rcard](https://goreportcard.com/badge/github.com/json-iterator/go)](https://goreportcard.com/report/github.com/json-iterator/go) +[![License](http://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://raw.githubusercontent.com/json-iterator/go/master/LICENSE) +[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby) + +A high-performance 100% compatible drop-in replacement of "encoding/json" + +``` +Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com +``` + +# Benchmark + +![benchmark](http://jsoniter.com/benchmarks/go-benchmark.png) + +Source code: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go + +Raw Result (easyjson requires static code generation) + +| | ns/op | allocation bytes | allocation times | +| --- | --- | --- | --- | +| std decode | 35510 ns/op | 1960 B/op | 99 allocs/op | +| easyjson decode | 8499 ns/op | 160 B/op | 4 allocs/op | +| jsoniter decode | 5623 ns/op | 160 B/op | 3 allocs/op | +| std encode | 2213 ns/op | 712 B/op | 5 allocs/op | +| easyjson encode | 883 ns/op | 576 B/op | 3 allocs/op | +| jsoniter encode | 837 ns/op | 384 B/op | 4 allocs/op | + +# Usage + +100% compatibility with standard lib + +Replace + +```go +import "encoding/json" +json.Marshal(&data) +``` + +with + +```go +import "github.com/json-iterator/go" +jsoniter.Marshal(&data) +``` + +Replace + +```go +import "encoding/json" +json.Unmarshal(input, &data) +``` + +with + +```go +import "github.com/json-iterator/go" +jsoniter.Unmarshal(input, &data) +``` + +[More documentation](http://jsoniter.com/migrate-from-go-std.html) + +# How to get + +``` +go get github.com/json-iterator/go +``` + +# Contribution Welcomed ! + +Contributors + +* [thockin](https://github.com/thockin) +* [mattn](https://github.com/mattn) +* [cch123](https://github.com/cch123) + +Report issue or pull request, or email taowen@gmail.com, or [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby) diff --git a/vendor/github.com/json-iterator/go/example_test.go b/vendor/github.com/json-iterator/go/example_test.go new file mode 100644 index 0000000000..1c8f341c14 --- /dev/null +++ b/vendor/github.com/json-iterator/go/example_test.go @@ -0,0 +1,95 @@ +package jsoniter + +import ( + "fmt" + "os" +) + +func ExampleMarshal() { + type ColorGroup struct { + ID int + Name string + Colors []string + } + group := ColorGroup{ + ID: 1, + Name: "Reds", + Colors: []string{"Crimson", "Red", "Ruby", "Maroon"}, + } + b, err := Marshal(group) + if err != nil { + fmt.Println("error:", err) + } + os.Stdout.Write(b) + // Output: + // {"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]} +} + +func ExampleUnmarshal() { + var jsonBlob = []byte(`[ + {"Name": "Platypus", "Order": "Monotremata"}, + {"Name": "Quoll", "Order": "Dasyuromorphia"} + ]`) + type Animal struct { + Name string + Order string + } + var animals []Animal + err := Unmarshal(jsonBlob, &animals) + if err != nil { + fmt.Println("error:", err) + } + fmt.Printf("%+v", animals) + // Output: + // [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}] +} + +func ExampleConfigFastest_Marshal() { + type ColorGroup struct { + ID int + Name string + Colors []string + } + group := ColorGroup{ + ID: 1, + Name: "Reds", + Colors: []string{"Crimson", "Red", "Ruby", "Maroon"}, + } + stream := ConfigFastest.BorrowStream(nil) + defer ConfigFastest.ReturnStream(stream) + stream.WriteVal(group) + if stream.Error != nil { + fmt.Println("error:", stream.Error) + } + os.Stdout.Write(stream.Buffer()) + // Output: + // {"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]} +} + +func ExampleConfigFastest_Unmarshal() { + var jsonBlob = []byte(`[ + {"Name": "Platypus", "Order": "Monotremata"}, + {"Name": "Quoll", "Order": "Dasyuromorphia"} + ]`) + type Animal struct { + Name string + Order string + } + var animals []Animal + iter := ConfigFastest.BorrowIterator(jsonBlob) + defer ConfigFastest.ReturnIterator(iter) + iter.ReadVal(&animals) + if iter.Error != nil { + fmt.Println("error:", iter.Error) + } + fmt.Printf("%+v", animals) + // Output: + // [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}] +} + +func ExampleGet() { + val := []byte(`{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}`) + fmt.Printf(Get(val, "Colors", 0).ToString()) + // Output: + // Crimson +} diff --git a/vendor/github.com/json-iterator/go/extra/fuzzy_decoder.go b/vendor/github.com/json-iterator/go/extra/fuzzy_decoder.go new file mode 100644 index 0000000000..df602f3424 --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/fuzzy_decoder.go @@ -0,0 +1,256 @@ +package extra + +import ( + "encoding/json" + "github.com/json-iterator/go" + "math" + "reflect" + "strings" + "unsafe" +) + +const maxUint = ^uint(0) +const maxInt = int(maxUint >> 1) +const minInt = -maxInt - 1 + +// RegisterFuzzyDecoders decode input from PHP with tolerance. +// It will handle string/number auto conversation, and treat empty [] as empty struct. +func RegisterFuzzyDecoders() { + jsoniter.RegisterExtension(&tolerateEmptyArrayExtension{}) + jsoniter.RegisterTypeDecoder("string", &fuzzyStringDecoder{}) + jsoniter.RegisterTypeDecoder("float32", &fuzzyFloat32Decoder{}) + jsoniter.RegisterTypeDecoder("float64", &fuzzyFloat64Decoder{}) + jsoniter.RegisterTypeDecoder("int", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(maxInt) || val < float64(minInt) { + iter.ReportError("fuzzy decode int", "exceed range") + return + } + *((*int)(ptr)) = int(val) + } else { + *((*int)(ptr)) = iter.ReadInt() + } + }}) + jsoniter.RegisterTypeDecoder("uint", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(maxUint) || val < 0 { + iter.ReportError("fuzzy decode uint", "exceed range") + return + } + *((*uint)(ptr)) = uint(val) + } else { + *((*uint)(ptr)) = iter.ReadUint() + } + }}) + jsoniter.RegisterTypeDecoder("int8", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt8) || val < float64(math.MinInt8) { + iter.ReportError("fuzzy decode int8", "exceed range") + return + } + *((*int8)(ptr)) = int8(val) + } else { + *((*int8)(ptr)) = iter.ReadInt8() + } + }}) + jsoniter.RegisterTypeDecoder("uint8", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint8) || val < 0 { + iter.ReportError("fuzzy decode uint8", "exceed range") + return + } + *((*uint8)(ptr)) = uint8(val) + } else { + *((*uint8)(ptr)) = iter.ReadUint8() + } + }}) + jsoniter.RegisterTypeDecoder("int16", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt16) || val < float64(math.MinInt16) { + iter.ReportError("fuzzy decode int16", "exceed range") + return + } + *((*int16)(ptr)) = int16(val) + } else { + *((*int16)(ptr)) = iter.ReadInt16() + } + }}) + jsoniter.RegisterTypeDecoder("uint16", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint16) || val < 0 { + iter.ReportError("fuzzy decode uint16", "exceed range") + return + } + *((*uint16)(ptr)) = uint16(val) + } else { + *((*uint16)(ptr)) = iter.ReadUint16() + } + }}) + jsoniter.RegisterTypeDecoder("int32", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt32) || val < float64(math.MinInt32) { + iter.ReportError("fuzzy decode int32", "exceed range") + return + } + *((*int32)(ptr)) = int32(val) + } else { + *((*int32)(ptr)) = iter.ReadInt32() + } + }}) + jsoniter.RegisterTypeDecoder("uint32", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint32) || val < 0 { + iter.ReportError("fuzzy decode uint32", "exceed range") + return + } + *((*uint32)(ptr)) = uint32(val) + } else { + *((*uint32)(ptr)) = iter.ReadUint32() + } + }}) + jsoniter.RegisterTypeDecoder("int64", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt64) || val < float64(math.MinInt64) { + iter.ReportError("fuzzy decode int64", "exceed range") + return + } + *((*int64)(ptr)) = int64(val) + } else { + *((*int64)(ptr)) = iter.ReadInt64() + } + }}) + jsoniter.RegisterTypeDecoder("uint64", &fuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint64) || val < 0 { + iter.ReportError("fuzzy decode uint64", "exceed range") + return + } + *((*uint64)(ptr)) = uint64(val) + } else { + *((*uint64)(ptr)) = iter.ReadUint64() + } + }}) +} + +type tolerateEmptyArrayExtension struct { + jsoniter.DummyExtension +} + +func (extension *tolerateEmptyArrayExtension) DecorateDecoder(typ reflect.Type, decoder jsoniter.ValDecoder) jsoniter.ValDecoder { + if typ.Kind() == reflect.Struct || typ.Kind() == reflect.Map { + return &tolerateEmptyArrayDecoder{decoder} + } + return decoder +} + +type tolerateEmptyArrayDecoder struct { + valDecoder jsoniter.ValDecoder +} + +func (decoder *tolerateEmptyArrayDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if iter.WhatIsNext() == jsoniter.ArrayValue { + iter.Skip() + newIter := iter.Pool().BorrowIterator([]byte("{}")) + defer iter.Pool().ReturnIterator(newIter) + decoder.valDecoder.Decode(ptr, newIter) + } else { + decoder.valDecoder.Decode(ptr, iter) + } +} + +type fuzzyStringDecoder struct { +} + +func (decoder *fuzzyStringDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + switch valueType { + case jsoniter.NumberValue: + var number json.Number + iter.ReadVal(&number) + *((*string)(ptr)) = string(number) + case jsoniter.StringValue: + *((*string)(ptr)) = iter.ReadString() + default: + iter.ReportError("fuzzyStringDecoder", "not number or string") + } +} + +type fuzzyIntegerDecoder struct { + fun func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) +} + +func (decoder *fuzzyIntegerDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + var str string + switch valueType { + case jsoniter.NumberValue: + var number json.Number + iter.ReadVal(&number) + str = string(number) + case jsoniter.StringValue: + str = iter.ReadString() + default: + iter.ReportError("fuzzyIntegerDecoder", "not number or string") + } + newIter := iter.Pool().BorrowIterator([]byte(str)) + defer iter.Pool().ReturnIterator(newIter) + isFloat := strings.IndexByte(str, '.') != -1 + decoder.fun(isFloat, ptr, newIter) + if newIter.Error != nil { + iter.Error = newIter.Error + } +} + +type fuzzyFloat32Decoder struct { +} + +func (decoder *fuzzyFloat32Decoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + var str string + switch valueType { + case jsoniter.NumberValue: + *((*float32)(ptr)) = iter.ReadFloat32() + case jsoniter.StringValue: + str = iter.ReadString() + newIter := iter.Pool().BorrowIterator([]byte(str)) + defer iter.Pool().ReturnIterator(newIter) + *((*float32)(ptr)) = newIter.ReadFloat32() + if newIter.Error != nil { + iter.Error = newIter.Error + } + default: + iter.ReportError("fuzzyFloat32Decoder", "not number or string") + } +} + +type fuzzyFloat64Decoder struct { +} + +func (decoder *fuzzyFloat64Decoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + var str string + switch valueType { + case jsoniter.NumberValue: + *((*float64)(ptr)) = iter.ReadFloat64() + case jsoniter.StringValue: + str = iter.ReadString() + newIter := iter.Pool().BorrowIterator([]byte(str)) + defer iter.Pool().ReturnIterator(newIter) + *((*float64)(ptr)) = newIter.ReadFloat64() + if newIter.Error != nil { + iter.Error = newIter.Error + } + default: + iter.ReportError("fuzzyFloat32Decoder", "not number or string") + } +} diff --git a/vendor/github.com/json-iterator/go/extra/fuzzy_decoder_test.go b/vendor/github.com/json-iterator/go/extra/fuzzy_decoder_test.go new file mode 100644 index 0000000000..c4aad68072 --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/fuzzy_decoder_test.go @@ -0,0 +1,259 @@ +package extra + +import ( + "testing" + + "github.com/json-iterator/go" + "github.com/stretchr/testify/require" +) + +func init() { + RegisterFuzzyDecoders() +} + +func Test_any_to_string(t *testing.T) { + should := require.New(t) + var val string + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal("100", val) + should.Nil(jsoniter.UnmarshalFromString("10", &val)) + should.Equal("10", val) + should.Nil(jsoniter.UnmarshalFromString("10.1", &val)) + should.Equal("10.1", val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal("10.1", val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) +} +func Test_any_to_int64(t *testing.T) { + should := require.New(t) + var val int64 + + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(int64(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(int64(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(int64(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(int64(10), val) + + should.Nil(jsoniter.UnmarshalFromString(`-10`, &val)) + should.Equal(int64(-10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_int(t *testing.T) { + should := require.New(t) + var val int + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(100, val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(10, val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(10, val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(10, val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_int16(t *testing.T) { + should := require.New(t) + var val int16 + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(int16(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(int16(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(int16(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(int16(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_int32(t *testing.T) { + should := require.New(t) + var val int32 + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(int32(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(int32(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(int32(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(int32(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_int8(t *testing.T) { + should := require.New(t) + var val int8 + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(int8(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(int8(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(int8(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(int8(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_uint8(t *testing.T) { + should := require.New(t) + var val uint8 + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(uint8(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(uint8(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(uint8(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(uint8(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_uint64(t *testing.T) { + should := require.New(t) + var val uint64 + + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(uint64(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(uint64(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(uint64(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(uint64(10), val) + + // TODO fix? + should.NotNil(jsoniter.UnmarshalFromString(`-10`, &val)) + should.Equal(uint64(0), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} +func Test_any_to_uint32(t *testing.T) { + should := require.New(t) + var val uint32 + + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(uint32(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(uint32(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(uint32(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(uint32(10), val) + + // TODO fix? + should.NotNil(jsoniter.UnmarshalFromString(`-10`, &val)) + should.Equal(uint32(0), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} +func Test_any_to_uint16(t *testing.T) { + should := require.New(t) + var val uint16 + + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(uint16(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(uint16(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(uint16(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(uint16(10), val) + + // TODO fix? + should.NotNil(jsoniter.UnmarshalFromString(`-10`, &val)) + should.Equal(uint16(0), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} +func Test_any_to_uint(t *testing.T) { + should := require.New(t) + var val uint + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(uint(100), val) + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(uint(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(uint(10), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(uint(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) + // large float to int + should.NotNil(jsoniter.UnmarshalFromString(`1234512345123451234512345.0`, &val)) +} + +func Test_any_to_float32(t *testing.T) { + should := require.New(t) + var val float32 + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(float32(100), val) + + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(float32(10.1), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(float32(10.1), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(float32(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) +} + +func Test_any_to_float64(t *testing.T) { + should := require.New(t) + var val float64 + + should.Nil(jsoniter.UnmarshalFromString(`"100"`, &val)) + should.Equal(float64(100), val) + + should.Nil(jsoniter.UnmarshalFromString(`"10.1"`, &val)) + should.Equal(float64(10.1), val) + should.Nil(jsoniter.UnmarshalFromString(`10.1`, &val)) + should.Equal(float64(10.1), val) + should.Nil(jsoniter.UnmarshalFromString(`10`, &val)) + should.Equal(float64(10), val) + should.NotNil(jsoniter.UnmarshalFromString("{}", &val)) + should.NotNil(jsoniter.UnmarshalFromString("[]", &val)) +} + +func Test_empty_array_as_map(t *testing.T) { + should := require.New(t) + var val map[string]interface{} + should.Nil(jsoniter.UnmarshalFromString(`[]`, &val)) + should.Equal(map[string]interface{}{}, val) +} + +func Test_empty_array_as_object(t *testing.T) { + should := require.New(t) + var val struct{} + should.Nil(jsoniter.UnmarshalFromString(`[]`, &val)) + should.Equal(struct{}{}, val) +} diff --git a/vendor/github.com/json-iterator/go/extra/naming_strategy.go b/vendor/github.com/json-iterator/go/extra/naming_strategy.go new file mode 100644 index 0000000000..642556fed6 --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/naming_strategy.go @@ -0,0 +1,41 @@ +package extra + +import ( + "github.com/json-iterator/go" + "unicode" +) + +// SetNamingStrategy rename struct fields uniformly +func SetNamingStrategy(translate func(string) string) { + jsoniter.RegisterExtension(&namingStrategyExtension{jsoniter.DummyExtension{}, translate}) +} + +type namingStrategyExtension struct { + jsoniter.DummyExtension + translate func(string) string +} + +func (extension *namingStrategyExtension) UpdateStructDescriptor(structDescriptor *jsoniter.StructDescriptor) { + for _, binding := range structDescriptor.Fields { + binding.ToNames = []string{extension.translate(binding.Field.Name)} + binding.FromNames = []string{extension.translate(binding.Field.Name)} + } +} + +// LowerCaseWithUnderscores one strategy to SetNamingStrategy for. It will change HelloWorld to hello_world. +func LowerCaseWithUnderscores(name string) string { + newName := []rune{} + for i, c := range name { + if i == 0 { + newName = append(newName, unicode.ToLower(c)) + } else { + if unicode.IsUpper(c) { + newName = append(newName, '_') + newName = append(newName, unicode.ToLower(c)) + } else { + newName = append(newName, c) + } + } + } + return string(newName) +} diff --git a/vendor/github.com/json-iterator/go/extra/naming_strategy_test.go b/vendor/github.com/json-iterator/go/extra/naming_strategy_test.go new file mode 100644 index 0000000000..d15608126e --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/naming_strategy_test.go @@ -0,0 +1,23 @@ +package extra + +import ( + "github.com/json-iterator/go" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_lower_case_with_underscores(t *testing.T) { + should := require.New(t) + should.Equal("hello_world", LowerCaseWithUnderscores("helloWorld")) + should.Equal("hello_world", LowerCaseWithUnderscores("HelloWorld")) + SetNamingStrategy(LowerCaseWithUnderscores) + output, err := jsoniter.Marshal(struct { + UserName string + FirstLanguage string + }{ + UserName: "taowen", + FirstLanguage: "Chinese", + }) + should.Nil(err) + should.Equal(`{"user_name":"taowen","first_language":"Chinese"}`, string(output)) +} diff --git a/vendor/github.com/json-iterator/go/extra/privat_fields.go b/vendor/github.com/json-iterator/go/extra/privat_fields.go new file mode 100644 index 0000000000..18643961fb --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/privat_fields.go @@ -0,0 +1,25 @@ +package extra + +import ( + "github.com/json-iterator/go" + "unicode" +) + +// SupportPrivateFields include private fields when encoding/decoding +func SupportPrivateFields() { + jsoniter.RegisterExtension(&privateFieldsExtension{}) +} + +type privateFieldsExtension struct { + jsoniter.DummyExtension +} + +func (extension *privateFieldsExtension) UpdateStructDescriptor(structDescriptor *jsoniter.StructDescriptor) { + for _, binding := range structDescriptor.Fields { + isPrivate := unicode.IsLower(rune(binding.Field.Name[0])) + if isPrivate { + binding.FromNames = []string{binding.Field.Name} + binding.ToNames = []string{binding.Field.Name} + } + } +} diff --git a/vendor/github.com/json-iterator/go/extra/private_fields_test.go b/vendor/github.com/json-iterator/go/extra/private_fields_test.go new file mode 100644 index 0000000000..d3bc40dac5 --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/private_fields_test.go @@ -0,0 +1,18 @@ +package extra + +import ( + "github.com/json-iterator/go" + "github.com/stretchr/testify/require" + "testing" +) + +func Test_private_fields(t *testing.T) { + type TestObject struct { + field1 string + } + SupportPrivateFields() + should := require.New(t) + obj := TestObject{} + should.Nil(jsoniter.UnmarshalFromString(`{"field1":"Hello"}`, &obj)) + should.Equal("Hello", obj.field1) +} diff --git a/vendor/github.com/json-iterator/go/extra/time_as_int64_codec.go b/vendor/github.com/json-iterator/go/extra/time_as_int64_codec.go new file mode 100644 index 0000000000..e270cd403b --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/time_as_int64_codec.go @@ -0,0 +1,34 @@ +package extra + +import ( + "github.com/json-iterator/go" + "time" + "unsafe" +) + +// RegisterTimeAsInt64Codec encode/decode time since number of unit since epoch. the precision is the unit. +func RegisterTimeAsInt64Codec(precision time.Duration) { + jsoniter.RegisterTypeEncoder("time.Time", &timeAsInt64Codec{precision}) + jsoniter.RegisterTypeDecoder("time.Time", &timeAsInt64Codec{precision}) +} + +type timeAsInt64Codec struct { + precision time.Duration +} + +func (codec *timeAsInt64Codec) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + nanoseconds := iter.ReadInt64() * codec.precision.Nanoseconds() + *((*time.Time)(ptr)) = time.Unix(0, nanoseconds) +} + +func (codec *timeAsInt64Codec) IsEmpty(ptr unsafe.Pointer) bool { + ts := *((*time.Time)(ptr)) + return ts.UnixNano() == 0 +} +func (codec *timeAsInt64Codec) Encode(ptr unsafe.Pointer, stream *jsoniter.Stream) { + ts := *((*time.Time)(ptr)) + stream.WriteInt64(ts.UnixNano() / codec.precision.Nanoseconds()) +} +func (codec *timeAsInt64Codec) EncodeInterface(val interface{}, stream *jsoniter.Stream) { + jsoniter.WriteToStream(val, stream, codec) +} diff --git a/vendor/github.com/json-iterator/go/extra/time_as_int64_codec_test.go b/vendor/github.com/json-iterator/go/extra/time_as_int64_codec_test.go new file mode 100644 index 0000000000..b27220f184 --- /dev/null +++ b/vendor/github.com/json-iterator/go/extra/time_as_int64_codec_test.go @@ -0,0 +1,31 @@ +package extra + +import ( + "github.com/json-iterator/go" + "github.com/stretchr/testify/require" + "testing" + "time" +) + +func Test_time_as_int64(t *testing.T) { + should := require.New(t) + RegisterTimeAsInt64Codec(time.Nanosecond) + output, err := jsoniter.Marshal(time.Unix(1497952257, 1002)) + should.Nil(err) + should.Equal("1497952257000001002", string(output)) + var val time.Time + should.Nil(jsoniter.Unmarshal(output, &val)) + should.Equal(int64(1497952257000001002), val.UnixNano()) +} + +func Test_time_as_int64_keep_microsecond(t *testing.T) { + t.Skip("conflict") + should := require.New(t) + RegisterTimeAsInt64Codec(time.Microsecond) + output, err := jsoniter.Marshal(time.Unix(1, 1002)) + should.Nil(err) + should.Equal("1000001", string(output)) + var val time.Time + should.Nil(jsoniter.Unmarshal(output, &val)) + should.Equal(int64(1000001000), val.UnixNano()) +} diff --git a/vendor/github.com/json-iterator/go/feature_adapter.go b/vendor/github.com/json-iterator/go/feature_adapter.go new file mode 100644 index 0000000000..edb477c4fd --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_adapter.go @@ -0,0 +1,127 @@ +package jsoniter + +import ( + "bytes" + "io" +) + +// RawMessage to make replace json with jsoniter +type RawMessage []byte + +// Unmarshal adapts to json/encoding Unmarshal API +// +// Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v. +// Refer to https://godoc.org/encoding/json#Unmarshal for more information +func Unmarshal(data []byte, v interface{}) error { + return ConfigDefault.Unmarshal(data, v) +} + +func lastNotSpacePos(data []byte) int { + for i := len(data) - 1; i >= 0; i-- { + if data[i] != ' ' && data[i] != '\t' && data[i] != '\r' && data[i] != '\n' { + return i + 1 + } + } + return 0 +} + +// UnmarshalFromString convenient method to read from string instead of []byte +func UnmarshalFromString(str string, v interface{}) error { + return ConfigDefault.UnmarshalFromString(str, v) +} + +// Get quick method to get value from deeply nested JSON structure +func Get(data []byte, path ...interface{}) Any { + return ConfigDefault.Get(data, path...) +} + +// Marshal adapts to json/encoding Marshal API +// +// Marshal returns the JSON encoding of v, adapts to json/encoding Marshal API +// Refer to https://godoc.org/encoding/json#Marshal for more information +func Marshal(v interface{}) ([]byte, error) { + return ConfigDefault.Marshal(v) +} + +// MarshalIndent same as json.MarshalIndent. Prefix is not supported. +func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + return ConfigDefault.MarshalIndent(v, prefix, indent) +} + +// MarshalToString convenient method to write as string instead of []byte +func MarshalToString(v interface{}) (string, error) { + return ConfigDefault.MarshalToString(v) +} + +// NewDecoder adapts to json/stream NewDecoder API. +// +// NewDecoder returns a new decoder that reads from r. +// +// Instead of a json/encoding Decoder, an Decoder is returned +// Refer to https://godoc.org/encoding/json#NewDecoder for more information +func NewDecoder(reader io.Reader) *Decoder { + return ConfigDefault.NewDecoder(reader) +} + +// Decoder reads and decodes JSON values from an input stream. +// Decoder provides identical APIs with json/stream Decoder (Token() and UseNumber() are in progress) +type Decoder struct { + iter *Iterator +} + +// Decode decode JSON into interface{} +func (adapter *Decoder) Decode(obj interface{}) error { + adapter.iter.ReadVal(obj) + err := adapter.iter.Error + if err == io.EOF { + return nil + } + return adapter.iter.Error +} + +// More is there more? +func (adapter *Decoder) More() bool { + return adapter.iter.head != adapter.iter.tail +} + +// Buffered remaining buffer +func (adapter *Decoder) Buffered() io.Reader { + remaining := adapter.iter.buf[adapter.iter.head:adapter.iter.tail] + return bytes.NewReader(remaining) +} + +// UseNumber for number JSON element, use float64 or json.NumberValue (alias of string) +func (adapter *Decoder) UseNumber() { + origCfg := adapter.iter.cfg.configBeforeFrozen + origCfg.UseNumber = true + adapter.iter.cfg = origCfg.Froze().(*frozenConfig) +} + +// NewEncoder same as json.NewEncoder +func NewEncoder(writer io.Writer) *Encoder { + return ConfigDefault.NewEncoder(writer) +} + +// Encoder same as json.Encoder +type Encoder struct { + stream *Stream +} + +// Encode encode interface{} as JSON to io.Writer +func (adapter *Encoder) Encode(val interface{}) error { + adapter.stream.WriteVal(val) + adapter.stream.Flush() + return adapter.stream.Error +} + +// SetIndent set the indention. Prefix is not supported +func (adapter *Encoder) SetIndent(prefix, indent string) { + adapter.stream.cfg.indentionStep = len(indent) +} + +// SetEscapeHTML escape html by default, set to false to disable +func (adapter *Encoder) SetEscapeHTML(escapeHTML bool) { + config := adapter.stream.cfg.configBeforeFrozen + config.EscapeHTML = escapeHTML + adapter.stream.cfg = config.Froze().(*frozenConfig) +} diff --git a/vendor/github.com/json-iterator/go/feature_any.go b/vendor/github.com/json-iterator/go/feature_any.go new file mode 100644 index 0000000000..6733dce4cc --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any.go @@ -0,0 +1,242 @@ +package jsoniter + +import ( + "fmt" + "io" + "reflect" +) + +// Any generic object representation. +// The lazy json implementation holds []byte and parse lazily. +type Any interface { + LastError() error + ValueType() ValueType + MustBeValid() Any + ToBool() bool + ToInt() int + ToInt32() int32 + ToInt64() int64 + ToUint() uint + ToUint32() uint32 + ToUint64() uint64 + ToFloat32() float32 + ToFloat64() float64 + ToString() string + ToVal(val interface{}) + Get(path ...interface{}) Any + // TODO: add Set + Size() int + Keys() []string + GetInterface() interface{} + WriteTo(stream *Stream) +} + +type baseAny struct{} + +func (any *baseAny) Get(path ...interface{}) Any { + return &invalidAny{baseAny{}, fmt.Errorf("Get %v from simple value", path)} +} + +func (any *baseAny) Size() int { + return 0 +} + +func (any *baseAny) Keys() []string { + return []string{} +} + +func (any *baseAny) ToVal(obj interface{}) { + panic("not implemented") +} + +// WrapInt32 turn int32 into Any interface +func WrapInt32(val int32) Any { + return &int32Any{baseAny{}, val} +} + +// WrapInt64 turn int64 into Any interface +func WrapInt64(val int64) Any { + return &int64Any{baseAny{}, val} +} + +// WrapUint32 turn uint32 into Any interface +func WrapUint32(val uint32) Any { + return &uint32Any{baseAny{}, val} +} + +// WrapUint64 turn uint64 into Any interface +func WrapUint64(val uint64) Any { + return &uint64Any{baseAny{}, val} +} + +// WrapFloat64 turn float64 into Any interface +func WrapFloat64(val float64) Any { + return &floatAny{baseAny{}, val} +} + +// WrapString turn string into Any interface +func WrapString(val string) Any { + return &stringAny{baseAny{}, val} +} + +// Wrap turn a go object into Any interface +func Wrap(val interface{}) Any { + if val == nil { + return &nilAny{} + } + asAny, isAny := val.(Any) + if isAny { + return asAny + } + typ := reflect.TypeOf(val) + switch typ.Kind() { + case reflect.Slice: + return wrapArray(val) + case reflect.Struct: + return wrapStruct(val) + case reflect.Map: + return wrapMap(val) + case reflect.String: + return WrapString(val.(string)) + case reflect.Int: + return WrapInt64(int64(val.(int))) + case reflect.Int8: + return WrapInt32(int32(val.(int8))) + case reflect.Int16: + return WrapInt32(int32(val.(int16))) + case reflect.Int32: + return WrapInt32(val.(int32)) + case reflect.Int64: + return WrapInt64(val.(int64)) + case reflect.Uint: + return WrapUint64(uint64(val.(uint))) + case reflect.Uint8: + return WrapUint32(uint32(val.(uint8))) + case reflect.Uint16: + return WrapUint32(uint32(val.(uint16))) + case reflect.Uint32: + return WrapUint32(uint32(val.(uint32))) + case reflect.Uint64: + return WrapUint64(val.(uint64)) + case reflect.Float32: + return WrapFloat64(float64(val.(float32))) + case reflect.Float64: + return WrapFloat64(val.(float64)) + case reflect.Bool: + if val.(bool) == true { + return &trueAny{} + } + return &falseAny{} + } + return &invalidAny{baseAny{}, fmt.Errorf("unsupported type: %v", typ)} +} + +// ReadAny read next JSON element as an Any object. It is a better json.RawMessage. +func (iter *Iterator) ReadAny() Any { + return iter.readAny() +} + +func (iter *Iterator) readAny() Any { + c := iter.nextToken() + switch c { + case '"': + iter.unreadByte() + return &stringAny{baseAny{}, iter.ReadString()} + case 'n': + iter.skipThreeBytes('u', 'l', 'l') // null + return &nilAny{} + case 't': + iter.skipThreeBytes('r', 'u', 'e') // true + return &trueAny{} + case 'f': + iter.skipFourBytes('a', 'l', 's', 'e') // false + return &falseAny{} + case '{': + return iter.readObjectAny() + case '[': + return iter.readArrayAny() + case '-': + return iter.readNumberAny(false) + default: + return iter.readNumberAny(true) + } +} + +func (iter *Iterator) readNumberAny(positive bool) Any { + iter.startCapture(iter.head - 1) + iter.skipNumber() + lazyBuf := iter.stopCapture() + return &numberLazyAny{baseAny{}, iter.cfg, lazyBuf, nil} +} + +func (iter *Iterator) readObjectAny() Any { + iter.startCapture(iter.head - 1) + iter.skipObject() + lazyBuf := iter.stopCapture() + return &objectLazyAny{baseAny{}, iter.cfg, lazyBuf, nil} +} + +func (iter *Iterator) readArrayAny() Any { + iter.startCapture(iter.head - 1) + iter.skipArray() + lazyBuf := iter.stopCapture() + return &arrayLazyAny{baseAny{}, iter.cfg, lazyBuf, nil} +} + +func locateObjectField(iter *Iterator, target string) []byte { + var found []byte + iter.ReadObjectCB(func(iter *Iterator, field string) bool { + if field == target { + found = iter.SkipAndReturnBytes() + return false + } + iter.Skip() + return true + }) + return found +} + +func locateArrayElement(iter *Iterator, target int) []byte { + var found []byte + n := 0 + iter.ReadArrayCB(func(iter *Iterator) bool { + if n == target { + found = iter.SkipAndReturnBytes() + return false + } + iter.Skip() + n++ + return true + }) + return found +} + +func locatePath(iter *Iterator, path []interface{}) Any { + for i, pathKeyObj := range path { + switch pathKey := pathKeyObj.(type) { + case string: + valueBytes := locateObjectField(iter, pathKey) + if valueBytes == nil { + return newInvalidAny(path[i:]) + } + iter.ResetBytes(valueBytes) + case int: + valueBytes := locateArrayElement(iter, pathKey) + if valueBytes == nil { + return newInvalidAny(path[i:]) + } + iter.ResetBytes(valueBytes) + case int32: + if '*' == pathKey { + return iter.readAny().Get(path[i:]...) + } + return newInvalidAny(path[i:]) + default: + return newInvalidAny(path[i:]) + } + } + if iter.Error != nil && iter.Error != io.EOF { + return &invalidAny{baseAny{}, iter.Error} + } + return iter.readAny() +} diff --git a/vendor/github.com/json-iterator/go/feature_any_array.go b/vendor/github.com/json-iterator/go/feature_any_array.go new file mode 100644 index 0000000000..0449e9aa42 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_array.go @@ -0,0 +1,278 @@ +package jsoniter + +import ( + "reflect" + "unsafe" +) + +type arrayLazyAny struct { + baseAny + cfg *frozenConfig + buf []byte + err error +} + +func (any *arrayLazyAny) ValueType() ValueType { + return ArrayValue +} + +func (any *arrayLazyAny) MustBeValid() Any { + return any +} + +func (any *arrayLazyAny) LastError() error { + return any.err +} + +func (any *arrayLazyAny) ToBool() bool { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.ReadArray() +} + +func (any *arrayLazyAny) ToInt() int { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToInt32() int32 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToInt64() int64 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToUint() uint { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToUint32() uint32 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToUint64() uint64 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToFloat32() float32 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToFloat64() float64 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToString() string { + return *(*string)(unsafe.Pointer(&any.buf)) +} + +func (any *arrayLazyAny) ToVal(val interface{}) { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadVal(val) +} + +func (any *arrayLazyAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case int: + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + valueBytes := locateArrayElement(iter, firstPath) + if valueBytes == nil { + return newInvalidAny(path) + } + iter.ResetBytes(valueBytes) + return locatePath(iter, path[1:]) + case int32: + if '*' == firstPath { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + arr := make([]Any, 0) + iter.ReadArrayCB(func(iter *Iterator) bool { + found := iter.readAny().Get(path[1:]...) + if found.ValueType() != InvalidValue { + arr = append(arr, found) + } + return true + }) + return wrapArray(arr) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *arrayLazyAny) Size() int { + size := 0 + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadArrayCB(func(iter *Iterator) bool { + size++ + iter.Skip() + return true + }) + return size +} + +func (any *arrayLazyAny) WriteTo(stream *Stream) { + stream.Write(any.buf) +} + +func (any *arrayLazyAny) GetInterface() interface{} { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.Read() +} + +type arrayAny struct { + baseAny + val reflect.Value +} + +func wrapArray(val interface{}) *arrayAny { + return &arrayAny{baseAny{}, reflect.ValueOf(val)} +} + +func (any *arrayAny) ValueType() ValueType { + return ArrayValue +} + +func (any *arrayAny) MustBeValid() Any { + return any +} + +func (any *arrayAny) LastError() error { + return nil +} + +func (any *arrayAny) ToBool() bool { + return any.val.Len() != 0 +} + +func (any *arrayAny) ToInt() int { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToInt32() int32 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToInt64() int64 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToUint() uint { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToUint32() uint32 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToUint64() uint64 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToFloat32() float32 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToFloat64() float64 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToString() string { + str, _ := MarshalToString(any.val.Interface()) + return str +} + +func (any *arrayAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case int: + if firstPath < 0 || firstPath >= any.val.Len() { + return newInvalidAny(path) + } + return Wrap(any.val.Index(firstPath).Interface()) + case int32: + if '*' == firstPath { + mappedAll := make([]Any, 0) + for i := 0; i < any.val.Len(); i++ { + mapped := Wrap(any.val.Index(i).Interface()).Get(path[1:]...) + if mapped.ValueType() != InvalidValue { + mappedAll = append(mappedAll, mapped) + } + } + return wrapArray(mappedAll) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *arrayAny) Size() int { + return any.val.Len() +} + +func (any *arrayAny) WriteTo(stream *Stream) { + stream.WriteVal(any.val) +} + +func (any *arrayAny) GetInterface() interface{} { + return any.val.Interface() +} diff --git a/vendor/github.com/json-iterator/go/feature_any_bool.go b/vendor/github.com/json-iterator/go/feature_any_bool.go new file mode 100644 index 0000000000..9452324af5 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_bool.go @@ -0,0 +1,137 @@ +package jsoniter + +type trueAny struct { + baseAny +} + +func (any *trueAny) LastError() error { + return nil +} + +func (any *trueAny) ToBool() bool { + return true +} + +func (any *trueAny) ToInt() int { + return 1 +} + +func (any *trueAny) ToInt32() int32 { + return 1 +} + +func (any *trueAny) ToInt64() int64 { + return 1 +} + +func (any *trueAny) ToUint() uint { + return 1 +} + +func (any *trueAny) ToUint32() uint32 { + return 1 +} + +func (any *trueAny) ToUint64() uint64 { + return 1 +} + +func (any *trueAny) ToFloat32() float32 { + return 1 +} + +func (any *trueAny) ToFloat64() float64 { + return 1 +} + +func (any *trueAny) ToString() string { + return "true" +} + +func (any *trueAny) WriteTo(stream *Stream) { + stream.WriteTrue() +} + +func (any *trueAny) Parse() *Iterator { + return nil +} + +func (any *trueAny) GetInterface() interface{} { + return true +} + +func (any *trueAny) ValueType() ValueType { + return BoolValue +} + +func (any *trueAny) MustBeValid() Any { + return any +} + +type falseAny struct { + baseAny +} + +func (any *falseAny) LastError() error { + return nil +} + +func (any *falseAny) ToBool() bool { + return false +} + +func (any *falseAny) ToInt() int { + return 0 +} + +func (any *falseAny) ToInt32() int32 { + return 0 +} + +func (any *falseAny) ToInt64() int64 { + return 0 +} + +func (any *falseAny) ToUint() uint { + return 0 +} + +func (any *falseAny) ToUint32() uint32 { + return 0 +} + +func (any *falseAny) ToUint64() uint64 { + return 0 +} + +func (any *falseAny) ToFloat32() float32 { + return 0 +} + +func (any *falseAny) ToFloat64() float64 { + return 0 +} + +func (any *falseAny) ToString() string { + return "false" +} + +func (any *falseAny) WriteTo(stream *Stream) { + stream.WriteFalse() +} + +func (any *falseAny) Parse() *Iterator { + return nil +} + +func (any *falseAny) GetInterface() interface{} { + return false +} + +func (any *falseAny) ValueType() ValueType { + return BoolValue +} + +func (any *falseAny) MustBeValid() Any { + return any +} diff --git a/vendor/github.com/json-iterator/go/feature_any_float.go b/vendor/github.com/json-iterator/go/feature_any_float.go new file mode 100644 index 0000000000..35fdb09497 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_float.go @@ -0,0 +1,83 @@ +package jsoniter + +import ( + "strconv" +) + +type floatAny struct { + baseAny + val float64 +} + +func (any *floatAny) Parse() *Iterator { + return nil +} + +func (any *floatAny) ValueType() ValueType { + return NumberValue +} + +func (any *floatAny) MustBeValid() Any { + return any +} + +func (any *floatAny) LastError() error { + return nil +} + +func (any *floatAny) ToBool() bool { + return any.ToFloat64() != 0 +} + +func (any *floatAny) ToInt() int { + return int(any.val) +} + +func (any *floatAny) ToInt32() int32 { + return int32(any.val) +} + +func (any *floatAny) ToInt64() int64 { + return int64(any.val) +} + +func (any *floatAny) ToUint() uint { + if any.val > 0 { + return uint(any.val) + } + return 0 +} + +func (any *floatAny) ToUint32() uint32 { + if any.val > 0 { + return uint32(any.val) + } + return 0 +} + +func (any *floatAny) ToUint64() uint64 { + if any.val > 0 { + return uint64(any.val) + } + return 0 +} + +func (any *floatAny) ToFloat32() float32 { + return float32(any.val) +} + +func (any *floatAny) ToFloat64() float64 { + return any.val +} + +func (any *floatAny) ToString() string { + return strconv.FormatFloat(any.val, 'E', -1, 64) +} + +func (any *floatAny) WriteTo(stream *Stream) { + stream.WriteFloat64(any.val) +} + +func (any *floatAny) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/feature_any_int32.go b/vendor/github.com/json-iterator/go/feature_any_int32.go new file mode 100644 index 0000000000..1b56f39915 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_int32.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type int32Any struct { + baseAny + val int32 +} + +func (any *int32Any) LastError() error { + return nil +} + +func (any *int32Any) ValueType() ValueType { + return NumberValue +} + +func (any *int32Any) MustBeValid() Any { + return any +} + +func (any *int32Any) ToBool() bool { + return any.val != 0 +} + +func (any *int32Any) ToInt() int { + return int(any.val) +} + +func (any *int32Any) ToInt32() int32 { + return any.val +} + +func (any *int32Any) ToInt64() int64 { + return int64(any.val) +} + +func (any *int32Any) ToUint() uint { + return uint(any.val) +} + +func (any *int32Any) ToUint32() uint32 { + return uint32(any.val) +} + +func (any *int32Any) ToUint64() uint64 { + return uint64(any.val) +} + +func (any *int32Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *int32Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *int32Any) ToString() string { + return strconv.FormatInt(int64(any.val), 10) +} + +func (any *int32Any) WriteTo(stream *Stream) { + stream.WriteInt32(any.val) +} + +func (any *int32Any) Parse() *Iterator { + return nil +} + +func (any *int32Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/feature_any_int64.go b/vendor/github.com/json-iterator/go/feature_any_int64.go new file mode 100644 index 0000000000..c440d72b6d --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_int64.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type int64Any struct { + baseAny + val int64 +} + +func (any *int64Any) LastError() error { + return nil +} + +func (any *int64Any) ValueType() ValueType { + return NumberValue +} + +func (any *int64Any) MustBeValid() Any { + return any +} + +func (any *int64Any) ToBool() bool { + return any.val != 0 +} + +func (any *int64Any) ToInt() int { + return int(any.val) +} + +func (any *int64Any) ToInt32() int32 { + return int32(any.val) +} + +func (any *int64Any) ToInt64() int64 { + return any.val +} + +func (any *int64Any) ToUint() uint { + return uint(any.val) +} + +func (any *int64Any) ToUint32() uint32 { + return uint32(any.val) +} + +func (any *int64Any) ToUint64() uint64 { + return uint64(any.val) +} + +func (any *int64Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *int64Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *int64Any) ToString() string { + return strconv.FormatInt(any.val, 10) +} + +func (any *int64Any) WriteTo(stream *Stream) { + stream.WriteInt64(any.val) +} + +func (any *int64Any) Parse() *Iterator { + return nil +} + +func (any *int64Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/feature_any_invalid.go b/vendor/github.com/json-iterator/go/feature_any_invalid.go new file mode 100644 index 0000000000..1d859eac32 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_invalid.go @@ -0,0 +1,82 @@ +package jsoniter + +import "fmt" + +type invalidAny struct { + baseAny + err error +} + +func newInvalidAny(path []interface{}) *invalidAny { + return &invalidAny{baseAny{}, fmt.Errorf("%v not found", path)} +} + +func (any *invalidAny) LastError() error { + return any.err +} + +func (any *invalidAny) ValueType() ValueType { + return InvalidValue +} + +func (any *invalidAny) MustBeValid() Any { + panic(any.err) +} + +func (any *invalidAny) ToBool() bool { + return false +} + +func (any *invalidAny) ToInt() int { + return 0 +} + +func (any *invalidAny) ToInt32() int32 { + return 0 +} + +func (any *invalidAny) ToInt64() int64 { + return 0 +} + +func (any *invalidAny) ToUint() uint { + return 0 +} + +func (any *invalidAny) ToUint32() uint32 { + return 0 +} + +func (any *invalidAny) ToUint64() uint64 { + return 0 +} + +func (any *invalidAny) ToFloat32() float32 { + return 0 +} + +func (any *invalidAny) ToFloat64() float64 { + return 0 +} + +func (any *invalidAny) ToString() string { + return "" +} + +func (any *invalidAny) WriteTo(stream *Stream) { +} + +func (any *invalidAny) Get(path ...interface{}) Any { + if any.err == nil { + return &invalidAny{baseAny{}, fmt.Errorf("get %v from invalid", path)} + } + return &invalidAny{baseAny{}, fmt.Errorf("%v, get %v from invalid", any.err, path)} +} + +func (any *invalidAny) Parse() *Iterator { + return nil +} + +func (any *invalidAny) GetInterface() interface{} { + return nil +} diff --git a/vendor/github.com/json-iterator/go/feature_any_nil.go b/vendor/github.com/json-iterator/go/feature_any_nil.go new file mode 100644 index 0000000000..d04cb54c11 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_nil.go @@ -0,0 +1,69 @@ +package jsoniter + +type nilAny struct { + baseAny +} + +func (any *nilAny) LastError() error { + return nil +} + +func (any *nilAny) ValueType() ValueType { + return NilValue +} + +func (any *nilAny) MustBeValid() Any { + return any +} + +func (any *nilAny) ToBool() bool { + return false +} + +func (any *nilAny) ToInt() int { + return 0 +} + +func (any *nilAny) ToInt32() int32 { + return 0 +} + +func (any *nilAny) ToInt64() int64 { + return 0 +} + +func (any *nilAny) ToUint() uint { + return 0 +} + +func (any *nilAny) ToUint32() uint32 { + return 0 +} + +func (any *nilAny) ToUint64() uint64 { + return 0 +} + +func (any *nilAny) ToFloat32() float32 { + return 0 +} + +func (any *nilAny) ToFloat64() float64 { + return 0 +} + +func (any *nilAny) ToString() string { + return "" +} + +func (any *nilAny) WriteTo(stream *Stream) { + stream.WriteNil() +} + +func (any *nilAny) Parse() *Iterator { + return nil +} + +func (any *nilAny) GetInterface() interface{} { + return nil +} diff --git a/vendor/github.com/json-iterator/go/feature_any_number.go b/vendor/github.com/json-iterator/go/feature_any_number.go new file mode 100644 index 0000000000..4e1c27641d --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_number.go @@ -0,0 +1,104 @@ +package jsoniter + +import "unsafe" + +type numberLazyAny struct { + baseAny + cfg *frozenConfig + buf []byte + err error +} + +func (any *numberLazyAny) ValueType() ValueType { + return NumberValue +} + +func (any *numberLazyAny) MustBeValid() Any { + return any +} + +func (any *numberLazyAny) LastError() error { + return any.err +} + +func (any *numberLazyAny) ToBool() bool { + return any.ToFloat64() != 0 +} + +func (any *numberLazyAny) ToInt() int { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadInt() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToInt32() int32 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadInt32() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToInt64() int64 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadInt64() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToUint() uint { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadUint() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToUint32() uint32 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadUint32() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToUint64() uint64 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadUint64() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToFloat32() float32 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadFloat32() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToFloat64() float64 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadFloat64() + any.err = iter.Error + return val +} + +func (any *numberLazyAny) ToString() string { + return *(*string)(unsafe.Pointer(&any.buf)) +} + +func (any *numberLazyAny) WriteTo(stream *Stream) { + stream.Write(any.buf) +} + +func (any *numberLazyAny) GetInterface() interface{} { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.Read() +} diff --git a/vendor/github.com/json-iterator/go/feature_any_object.go b/vendor/github.com/json-iterator/go/feature_any_object.go new file mode 100644 index 0000000000..c44ef5c989 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_object.go @@ -0,0 +1,374 @@ +package jsoniter + +import ( + "reflect" + "unsafe" +) + +type objectLazyAny struct { + baseAny + cfg *frozenConfig + buf []byte + err error +} + +func (any *objectLazyAny) ValueType() ValueType { + return ObjectValue +} + +func (any *objectLazyAny) MustBeValid() Any { + return any +} + +func (any *objectLazyAny) LastError() error { + return any.err +} + +func (any *objectLazyAny) ToBool() bool { + return true +} + +func (any *objectLazyAny) ToInt() int { + return 0 +} + +func (any *objectLazyAny) ToInt32() int32 { + return 0 +} + +func (any *objectLazyAny) ToInt64() int64 { + return 0 +} + +func (any *objectLazyAny) ToUint() uint { + return 0 +} + +func (any *objectLazyAny) ToUint32() uint32 { + return 0 +} + +func (any *objectLazyAny) ToUint64() uint64 { + return 0 +} + +func (any *objectLazyAny) ToFloat32() float32 { + return 0 +} + +func (any *objectLazyAny) ToFloat64() float64 { + return 0 +} + +func (any *objectLazyAny) ToString() string { + return *(*string)(unsafe.Pointer(&any.buf)) +} + +func (any *objectLazyAny) ToVal(obj interface{}) { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadVal(obj) +} + +func (any *objectLazyAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case string: + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + valueBytes := locateObjectField(iter, firstPath) + if valueBytes == nil { + return newInvalidAny(path) + } + iter.ResetBytes(valueBytes) + return locatePath(iter, path[1:]) + case int32: + if '*' == firstPath { + mappedAll := map[string]Any{} + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadMapCB(func(iter *Iterator, field string) bool { + mapped := locatePath(iter, path[1:]) + if mapped.ValueType() != InvalidValue { + mappedAll[field] = mapped + } + return true + }) + return wrapMap(mappedAll) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *objectLazyAny) Keys() []string { + keys := []string{} + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadMapCB(func(iter *Iterator, field string) bool { + iter.Skip() + keys = append(keys, field) + return true + }) + return keys +} + +func (any *objectLazyAny) Size() int { + size := 0 + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadObjectCB(func(iter *Iterator, field string) bool { + iter.Skip() + size++ + return true + }) + return size +} + +func (any *objectLazyAny) WriteTo(stream *Stream) { + stream.Write(any.buf) +} + +func (any *objectLazyAny) GetInterface() interface{} { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.Read() +} + +type objectAny struct { + baseAny + err error + val reflect.Value +} + +func wrapStruct(val interface{}) *objectAny { + return &objectAny{baseAny{}, nil, reflect.ValueOf(val)} +} + +func (any *objectAny) ValueType() ValueType { + return ObjectValue +} + +func (any *objectAny) MustBeValid() Any { + return any +} + +func (any *objectAny) Parse() *Iterator { + return nil +} + +func (any *objectAny) LastError() error { + return any.err +} + +func (any *objectAny) ToBool() bool { + return any.val.NumField() != 0 +} + +func (any *objectAny) ToInt() int { + return 0 +} + +func (any *objectAny) ToInt32() int32 { + return 0 +} + +func (any *objectAny) ToInt64() int64 { + return 0 +} + +func (any *objectAny) ToUint() uint { + return 0 +} + +func (any *objectAny) ToUint32() uint32 { + return 0 +} + +func (any *objectAny) ToUint64() uint64 { + return 0 +} + +func (any *objectAny) ToFloat32() float32 { + return 0 +} + +func (any *objectAny) ToFloat64() float64 { + return 0 +} + +func (any *objectAny) ToString() string { + str, err := MarshalToString(any.val.Interface()) + any.err = err + return str +} + +func (any *objectAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case string: + field := any.val.FieldByName(firstPath) + if !field.IsValid() { + return newInvalidAny(path) + } + return Wrap(field.Interface()) + case int32: + if '*' == firstPath { + mappedAll := map[string]Any{} + for i := 0; i < any.val.NumField(); i++ { + field := any.val.Field(i) + if field.CanInterface() { + mapped := Wrap(field.Interface()).Get(path[1:]...) + if mapped.ValueType() != InvalidValue { + mappedAll[any.val.Type().Field(i).Name] = mapped + } + } + } + return wrapMap(mappedAll) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *objectAny) Keys() []string { + keys := make([]string, 0, any.val.NumField()) + for i := 0; i < any.val.NumField(); i++ { + keys = append(keys, any.val.Type().Field(i).Name) + } + return keys +} + +func (any *objectAny) Size() int { + return any.val.NumField() +} + +func (any *objectAny) WriteTo(stream *Stream) { + stream.WriteVal(any.val) +} + +func (any *objectAny) GetInterface() interface{} { + return any.val.Interface() +} + +type mapAny struct { + baseAny + err error + val reflect.Value +} + +func wrapMap(val interface{}) *mapAny { + return &mapAny{baseAny{}, nil, reflect.ValueOf(val)} +} + +func (any *mapAny) ValueType() ValueType { + return ObjectValue +} + +func (any *mapAny) MustBeValid() Any { + return any +} + +func (any *mapAny) Parse() *Iterator { + return nil +} + +func (any *mapAny) LastError() error { + return any.err +} + +func (any *mapAny) ToBool() bool { + return true +} + +func (any *mapAny) ToInt() int { + return 0 +} + +func (any *mapAny) ToInt32() int32 { + return 0 +} + +func (any *mapAny) ToInt64() int64 { + return 0 +} + +func (any *mapAny) ToUint() uint { + return 0 +} + +func (any *mapAny) ToUint32() uint32 { + return 0 +} + +func (any *mapAny) ToUint64() uint64 { + return 0 +} + +func (any *mapAny) ToFloat32() float32 { + return 0 +} + +func (any *mapAny) ToFloat64() float64 { + return 0 +} + +func (any *mapAny) ToString() string { + str, err := MarshalToString(any.val.Interface()) + any.err = err + return str +} + +func (any *mapAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case int32: + if '*' == firstPath { + mappedAll := map[string]Any{} + for _, key := range any.val.MapKeys() { + keyAsStr := key.String() + element := Wrap(any.val.MapIndex(key).Interface()) + mapped := element.Get(path[1:]...) + if mapped.ValueType() != InvalidValue { + mappedAll[keyAsStr] = mapped + } + } + return wrapMap(mappedAll) + } + return newInvalidAny(path) + default: + value := any.val.MapIndex(reflect.ValueOf(firstPath)) + if !value.IsValid() { + return newInvalidAny(path) + } + return Wrap(value.Interface()) + } +} + +func (any *mapAny) Keys() []string { + keys := make([]string, 0, any.val.Len()) + for _, key := range any.val.MapKeys() { + keys = append(keys, key.String()) + } + return keys +} + +func (any *mapAny) Size() int { + return any.val.Len() +} + +func (any *mapAny) WriteTo(stream *Stream) { + stream.WriteVal(any.val) +} + +func (any *mapAny) GetInterface() interface{} { + return any.val.Interface() +} diff --git a/vendor/github.com/json-iterator/go/feature_any_string.go b/vendor/github.com/json-iterator/go/feature_any_string.go new file mode 100644 index 0000000000..abf060bd59 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_string.go @@ -0,0 +1,166 @@ +package jsoniter + +import ( + "fmt" + "strconv" +) + +type stringAny struct { + baseAny + val string +} + +func (any *stringAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + return &invalidAny{baseAny{}, fmt.Errorf("Get %v from simple value", path)} +} + +func (any *stringAny) Parse() *Iterator { + return nil +} + +func (any *stringAny) ValueType() ValueType { + return StringValue +} + +func (any *stringAny) MustBeValid() Any { + return any +} + +func (any *stringAny) LastError() error { + return nil +} + +func (any *stringAny) ToBool() bool { + str := any.ToString() + if str == "0" { + return false + } + for _, c := range str { + switch c { + case ' ', '\n', '\r', '\t': + default: + return true + } + } + return false +} + +func (any *stringAny) ToInt() int { + return int(any.ToInt64()) + +} + +func (any *stringAny) ToInt32() int32 { + return int32(any.ToInt64()) +} + +func (any *stringAny) ToInt64() int64 { + if any.val == "" { + return 0 + } + + flag := 1 + startPos := 0 + endPos := 0 + if any.val[0] == '+' || any.val[0] == '-' { + startPos = 1 + } + + if any.val[0] == '-' { + flag = -1 + } + + for i := startPos; i < len(any.val); i++ { + if any.val[i] >= '0' && any.val[i] <= '9' { + endPos = i + 1 + } else { + break + } + } + parsed, _ := strconv.ParseInt(any.val[startPos:endPos], 10, 64) + return int64(flag) * parsed +} + +func (any *stringAny) ToUint() uint { + return uint(any.ToUint64()) +} + +func (any *stringAny) ToUint32() uint32 { + return uint32(any.ToUint64()) +} + +func (any *stringAny) ToUint64() uint64 { + if any.val == "" { + return 0 + } + + startPos := 0 + endPos := 0 + + if any.val[0] == '-' { + return 0 + } + if any.val[0] == '+' { + startPos = 1 + } + + for i := startPos; i < len(any.val); i++ { + if any.val[i] >= '0' && any.val[i] <= '9' { + endPos = i + 1 + } else { + break + } + } + parsed, _ := strconv.ParseUint(any.val[startPos:endPos], 10, 64) + return parsed +} + +func (any *stringAny) ToFloat32() float32 { + return float32(any.ToFloat64()) +} + +func (any *stringAny) ToFloat64() float64 { + if len(any.val) == 0 { + return 0 + } + + // first char invalid + if any.val[0] != '+' && any.val[0] != '-' && (any.val[0] > '9' || any.val[0] < '0') { + return 0 + } + + // extract valid num expression from string + // eg 123true => 123, -12.12xxa => -12.12 + endPos := 1 + for i := 1; i < len(any.val); i++ { + if any.val[i] == '.' || any.val[i] == 'e' || any.val[i] == 'E' || any.val[i] == '+' || any.val[i] == '-' { + endPos = i + 1 + continue + } + + // end position is the first char which is not digit + if any.val[i] >= '0' && any.val[i] <= '9' { + endPos = i + 1 + } else { + endPos = i + break + } + } + parsed, _ := strconv.ParseFloat(any.val[:endPos], 64) + return parsed +} + +func (any *stringAny) ToString() string { + return any.val +} + +func (any *stringAny) WriteTo(stream *Stream) { + stream.WriteString(any.val) +} + +func (any *stringAny) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/feature_any_uint32.go b/vendor/github.com/json-iterator/go/feature_any_uint32.go new file mode 100644 index 0000000000..656bbd33d7 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_uint32.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type uint32Any struct { + baseAny + val uint32 +} + +func (any *uint32Any) LastError() error { + return nil +} + +func (any *uint32Any) ValueType() ValueType { + return NumberValue +} + +func (any *uint32Any) MustBeValid() Any { + return any +} + +func (any *uint32Any) ToBool() bool { + return any.val != 0 +} + +func (any *uint32Any) ToInt() int { + return int(any.val) +} + +func (any *uint32Any) ToInt32() int32 { + return int32(any.val) +} + +func (any *uint32Any) ToInt64() int64 { + return int64(any.val) +} + +func (any *uint32Any) ToUint() uint { + return uint(any.val) +} + +func (any *uint32Any) ToUint32() uint32 { + return any.val +} + +func (any *uint32Any) ToUint64() uint64 { + return uint64(any.val) +} + +func (any *uint32Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *uint32Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *uint32Any) ToString() string { + return strconv.FormatInt(int64(any.val), 10) +} + +func (any *uint32Any) WriteTo(stream *Stream) { + stream.WriteUint32(any.val) +} + +func (any *uint32Any) Parse() *Iterator { + return nil +} + +func (any *uint32Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/feature_any_uint64.go b/vendor/github.com/json-iterator/go/feature_any_uint64.go new file mode 100644 index 0000000000..7df2fce33b --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_any_uint64.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type uint64Any struct { + baseAny + val uint64 +} + +func (any *uint64Any) LastError() error { + return nil +} + +func (any *uint64Any) ValueType() ValueType { + return NumberValue +} + +func (any *uint64Any) MustBeValid() Any { + return any +} + +func (any *uint64Any) ToBool() bool { + return any.val != 0 +} + +func (any *uint64Any) ToInt() int { + return int(any.val) +} + +func (any *uint64Any) ToInt32() int32 { + return int32(any.val) +} + +func (any *uint64Any) ToInt64() int64 { + return int64(any.val) +} + +func (any *uint64Any) ToUint() uint { + return uint(any.val) +} + +func (any *uint64Any) ToUint32() uint32 { + return uint32(any.val) +} + +func (any *uint64Any) ToUint64() uint64 { + return any.val +} + +func (any *uint64Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *uint64Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *uint64Any) ToString() string { + return strconv.FormatUint(any.val, 10) +} + +func (any *uint64Any) WriteTo(stream *Stream) { + stream.WriteUint64(any.val) +} + +func (any *uint64Any) Parse() *Iterator { + return nil +} + +func (any *uint64Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/feature_config.go b/vendor/github.com/json-iterator/go/feature_config.go new file mode 100644 index 0000000000..fc055d504e --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_config.go @@ -0,0 +1,312 @@ +package jsoniter + +import ( + "encoding/json" + "errors" + "io" + "reflect" + "sync/atomic" + "unsafe" +) + +// Config customize how the API should behave. +// The API is created from Config by Froze. +type Config struct { + IndentionStep int + MarshalFloatWith6Digits bool + EscapeHTML bool + SortMapKeys bool + UseNumber bool + TagKey string +} + +type frozenConfig struct { + configBeforeFrozen Config + sortMapKeys bool + indentionStep int + decoderCache unsafe.Pointer + encoderCache unsafe.Pointer + extensions []Extension + streamPool chan *Stream + iteratorPool chan *Iterator +} + +// API the public interface of this package. +// Primary Marshal and Unmarshal. +type API interface { + IteratorPool + StreamPool + MarshalToString(v interface{}) (string, error) + Marshal(v interface{}) ([]byte, error) + MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) + UnmarshalFromString(str string, v interface{}) error + Unmarshal(data []byte, v interface{}) error + Get(data []byte, path ...interface{}) Any + NewEncoder(writer io.Writer) *Encoder + NewDecoder(reader io.Reader) *Decoder +} + +// ConfigDefault the default API +var ConfigDefault = Config{ + EscapeHTML: true, +}.Froze() + +// ConfigCompatibleWithStandardLibrary tries to be 100% compatible with standard library behavior +var ConfigCompatibleWithStandardLibrary = Config{ + EscapeHTML: true, + SortMapKeys: true, +}.Froze() + +// ConfigFastest marshals float with only 6 digits precision +var ConfigFastest = Config{ + EscapeHTML: false, + MarshalFloatWith6Digits: true, +}.Froze() + +// Froze forge API from config +func (cfg Config) Froze() API { + // TODO: cache frozen config + frozenConfig := &frozenConfig{ + sortMapKeys: cfg.SortMapKeys, + indentionStep: cfg.IndentionStep, + streamPool: make(chan *Stream, 16), + iteratorPool: make(chan *Iterator, 16), + } + atomic.StorePointer(&frozenConfig.decoderCache, unsafe.Pointer(&map[string]ValDecoder{})) + atomic.StorePointer(&frozenConfig.encoderCache, unsafe.Pointer(&map[string]ValEncoder{})) + if cfg.MarshalFloatWith6Digits { + frozenConfig.marshalFloatWith6Digits() + } + if cfg.EscapeHTML { + frozenConfig.escapeHTML() + } + if cfg.UseNumber { + frozenConfig.useNumber() + } + frozenConfig.configBeforeFrozen = cfg + return frozenConfig +} + +func (cfg *frozenConfig) useNumber() { + cfg.addDecoderToCache(reflect.TypeOf((*interface{})(nil)).Elem(), &funcDecoder{func(ptr unsafe.Pointer, iter *Iterator) { + if iter.WhatIsNext() == NumberValue { + *((*interface{})(ptr)) = json.Number(iter.readNumberAsString()) + } else { + *((*interface{})(ptr)) = iter.Read() + } + }}) +} +func (cfg *frozenConfig) getTagKey() string { + tagKey := cfg.configBeforeFrozen.TagKey + if tagKey == "" { + return "json" + } + return tagKey +} + +func (cfg *frozenConfig) registerExtension(extension Extension) { + cfg.extensions = append(cfg.extensions, extension) +} + +type lossyFloat32Encoder struct { +} + +func (encoder *lossyFloat32Encoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat32Lossy(*((*float32)(ptr))) +} + +func (encoder *lossyFloat32Encoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *lossyFloat32Encoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float32)(ptr)) == 0 +} + +type lossyFloat64Encoder struct { +} + +func (encoder *lossyFloat64Encoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat64Lossy(*((*float64)(ptr))) +} + +func (encoder *lossyFloat64Encoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *lossyFloat64Encoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float64)(ptr)) == 0 +} + +// EnableLossyFloatMarshalling keeps 10**(-6) precision +// for float variables for better performance. +func (cfg *frozenConfig) marshalFloatWith6Digits() { + // for better performance + cfg.addEncoderToCache(reflect.TypeOf((*float32)(nil)).Elem(), &lossyFloat32Encoder{}) + cfg.addEncoderToCache(reflect.TypeOf((*float64)(nil)).Elem(), &lossyFloat64Encoder{}) +} + +type htmlEscapedStringEncoder struct { +} + +func (encoder *htmlEscapedStringEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + str := *((*string)(ptr)) + stream.WriteStringWithHTMLEscaped(str) +} + +func (encoder *htmlEscapedStringEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *htmlEscapedStringEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*string)(ptr)) == "" +} + +func (cfg *frozenConfig) escapeHTML() { + cfg.addEncoderToCache(reflect.TypeOf((*string)(nil)).Elem(), &htmlEscapedStringEncoder{}) +} + +func (cfg *frozenConfig) addDecoderToCache(cacheKey reflect.Type, decoder ValDecoder) { + done := false + for !done { + ptr := atomic.LoadPointer(&cfg.decoderCache) + cache := *(*map[reflect.Type]ValDecoder)(ptr) + copied := map[reflect.Type]ValDecoder{} + for k, v := range cache { + copied[k] = v + } + copied[cacheKey] = decoder + done = atomic.CompareAndSwapPointer(&cfg.decoderCache, ptr, unsafe.Pointer(&copied)) + } +} + +func (cfg *frozenConfig) addEncoderToCache(cacheKey reflect.Type, encoder ValEncoder) { + done := false + for !done { + ptr := atomic.LoadPointer(&cfg.encoderCache) + cache := *(*map[reflect.Type]ValEncoder)(ptr) + copied := map[reflect.Type]ValEncoder{} + for k, v := range cache { + copied[k] = v + } + copied[cacheKey] = encoder + done = atomic.CompareAndSwapPointer(&cfg.encoderCache, ptr, unsafe.Pointer(&copied)) + } +} + +func (cfg *frozenConfig) getDecoderFromCache(cacheKey reflect.Type) ValDecoder { + ptr := atomic.LoadPointer(&cfg.decoderCache) + cache := *(*map[reflect.Type]ValDecoder)(ptr) + return cache[cacheKey] +} + +func (cfg *frozenConfig) getEncoderFromCache(cacheKey reflect.Type) ValEncoder { + ptr := atomic.LoadPointer(&cfg.encoderCache) + cache := *(*map[reflect.Type]ValEncoder)(ptr) + return cache[cacheKey] +} + +func (cfg *frozenConfig) cleanDecoders() { + typeDecoders = map[string]ValDecoder{} + fieldDecoders = map[string]ValDecoder{} + *cfg = *(cfg.configBeforeFrozen.Froze().(*frozenConfig)) +} + +func (cfg *frozenConfig) cleanEncoders() { + typeEncoders = map[string]ValEncoder{} + fieldEncoders = map[string]ValEncoder{} + *cfg = *(cfg.configBeforeFrozen.Froze().(*frozenConfig)) +} + +func (cfg *frozenConfig) MarshalToString(v interface{}) (string, error) { + stream := cfg.BorrowStream(nil) + defer cfg.ReturnStream(stream) + stream.WriteVal(v) + if stream.Error != nil { + return "", stream.Error + } + return string(stream.Buffer()), nil +} + +func (cfg *frozenConfig) Marshal(v interface{}) ([]byte, error) { + stream := cfg.BorrowStream(nil) + defer cfg.ReturnStream(stream) + stream.WriteVal(v) + if stream.Error != nil { + return nil, stream.Error + } + result := stream.Buffer() + copied := make([]byte, len(result)) + copy(copied, result) + return copied, nil +} + +func (cfg *frozenConfig) MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + if prefix != "" { + panic("prefix is not supported") + } + for _, r := range indent { + if r != ' ' { + panic("indent can only be space") + } + } + newCfg := cfg.configBeforeFrozen + newCfg.IndentionStep = len(indent) + return newCfg.Froze().Marshal(v) +} + +func (cfg *frozenConfig) UnmarshalFromString(str string, v interface{}) error { + data := []byte(str) + data = data[:lastNotSpacePos(data)] + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + iter.ReadVal(v) + if iter.head == iter.tail { + iter.loadMore() + } + if iter.Error == io.EOF { + return nil + } + if iter.Error == nil { + iter.ReportError("UnmarshalFromString", "there are bytes left after unmarshal") + } + return iter.Error +} + +func (cfg *frozenConfig) Get(data []byte, path ...interface{}) Any { + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + return locatePath(iter, path) +} + +func (cfg *frozenConfig) Unmarshal(data []byte, v interface{}) error { + data = data[:lastNotSpacePos(data)] + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + typ := reflect.TypeOf(v) + if typ.Kind() != reflect.Ptr { + // return non-pointer error + return errors.New("the second param must be ptr type") + } + iter.ReadVal(v) + if iter.head == iter.tail { + iter.loadMore() + } + if iter.Error == io.EOF { + return nil + } + if iter.Error == nil { + iter.ReportError("Unmarshal", "there are bytes left after unmarshal") + } + return iter.Error +} + +func (cfg *frozenConfig) NewEncoder(writer io.Writer) *Encoder { + stream := NewStream(cfg, writer, 512) + return &Encoder{stream} +} + +func (cfg *frozenConfig) NewDecoder(reader io.Reader) *Decoder { + iter := Parse(cfg, reader, 512) + return &Decoder{iter} +} diff --git a/vendor/github.com/json-iterator/go/feature_iter.go b/vendor/github.com/json-iterator/go/feature_iter.go new file mode 100644 index 0000000000..4357d69bac --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter.go @@ -0,0 +1,307 @@ +package jsoniter + +import ( + "encoding/json" + "fmt" + "io" +) + +// ValueType the type for JSON element +type ValueType int + +const ( + // InvalidValue invalid JSON element + InvalidValue ValueType = iota + // StringValue JSON element "string" + StringValue + // NumberValue JSON element 100 or 0.10 + NumberValue + // NilValue JSON element null + NilValue + // BoolValue JSON element true or false + BoolValue + // ArrayValue JSON element [] + ArrayValue + // ObjectValue JSON element {} + ObjectValue +) + +var hexDigits []byte +var valueTypes []ValueType + +func init() { + hexDigits = make([]byte, 256) + for i := 0; i < len(hexDigits); i++ { + hexDigits[i] = 255 + } + for i := '0'; i <= '9'; i++ { + hexDigits[i] = byte(i - '0') + } + for i := 'a'; i <= 'f'; i++ { + hexDigits[i] = byte((i - 'a') + 10) + } + for i := 'A'; i <= 'F'; i++ { + hexDigits[i] = byte((i - 'A') + 10) + } + valueTypes = make([]ValueType, 256) + for i := 0; i < len(valueTypes); i++ { + valueTypes[i] = InvalidValue + } + valueTypes['"'] = StringValue + valueTypes['-'] = NumberValue + valueTypes['0'] = NumberValue + valueTypes['1'] = NumberValue + valueTypes['2'] = NumberValue + valueTypes['3'] = NumberValue + valueTypes['4'] = NumberValue + valueTypes['5'] = NumberValue + valueTypes['6'] = NumberValue + valueTypes['7'] = NumberValue + valueTypes['8'] = NumberValue + valueTypes['9'] = NumberValue + valueTypes['t'] = BoolValue + valueTypes['f'] = BoolValue + valueTypes['n'] = NilValue + valueTypes['['] = ArrayValue + valueTypes['{'] = ObjectValue +} + +// Iterator is a io.Reader like object, with JSON specific read functions. +// Error is not returned as return value, but stored as Error member on this iterator instance. +type Iterator struct { + cfg *frozenConfig + reader io.Reader + buf []byte + head int + tail int + captureStartedAt int + captured []byte + Error error +} + +// NewIterator creates an empty Iterator instance +func NewIterator(cfg API) *Iterator { + return &Iterator{ + cfg: cfg.(*frozenConfig), + reader: nil, + buf: nil, + head: 0, + tail: 0, + } +} + +// Parse creates an Iterator instance from io.Reader +func Parse(cfg API, reader io.Reader, bufSize int) *Iterator { + return &Iterator{ + cfg: cfg.(*frozenConfig), + reader: reader, + buf: make([]byte, bufSize), + head: 0, + tail: 0, + } +} + +// ParseBytes creates an Iterator instance from byte array +func ParseBytes(cfg API, input []byte) *Iterator { + return &Iterator{ + cfg: cfg.(*frozenConfig), + reader: nil, + buf: input, + head: 0, + tail: len(input), + } +} + +// ParseString creates an Iterator instance from string +func ParseString(cfg API, input string) *Iterator { + return ParseBytes(cfg, []byte(input)) +} + +// Pool returns a pool can provide more iterator with same configuration +func (iter *Iterator) Pool() IteratorPool { + return iter.cfg +} + +// Reset reuse iterator instance by specifying another reader +func (iter *Iterator) Reset(reader io.Reader) *Iterator { + iter.reader = reader + iter.head = 0 + iter.tail = 0 + return iter +} + +// ResetBytes reuse iterator instance by specifying another byte array as input +func (iter *Iterator) ResetBytes(input []byte) *Iterator { + iter.reader = nil + iter.buf = input + iter.head = 0 + iter.tail = len(input) + return iter +} + +// WhatIsNext gets ValueType of relatively next json element +func (iter *Iterator) WhatIsNext() ValueType { + valueType := valueTypes[iter.nextToken()] + iter.unreadByte() + return valueType +} + +func (iter *Iterator) skipWhitespacesWithoutLoadMore() bool { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case ' ', '\n', '\t', '\r': + continue + } + iter.head = i + return false + } + return true +} + +func (iter *Iterator) isObjectEnd() bool { + c := iter.nextToken() + if c == ',' { + return false + } + if c == '}' { + return true + } + iter.ReportError("isObjectEnd", "object ended prematurely") + return true +} + +func (iter *Iterator) nextToken() byte { + // a variation of skip whitespaces, returning the next non-whitespace token + for { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case ' ', '\n', '\t', '\r': + continue + } + iter.head = i + 1 + return c + } + if !iter.loadMore() { + return 0 + } + } +} + +// ReportError record a error in iterator instance with current position. +func (iter *Iterator) ReportError(operation string, msg string) { + if iter.Error != nil { + if iter.Error != io.EOF { + return + } + } + peekStart := iter.head - 10 + if peekStart < 0 { + peekStart = 0 + } + iter.Error = fmt.Errorf("%s: %s, parsing %v ...%s... at %s", operation, msg, iter.head, + string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail])) +} + +// CurrentBuffer gets current buffer as string for debugging purpose +func (iter *Iterator) CurrentBuffer() string { + peekStart := iter.head - 10 + if peekStart < 0 { + peekStart = 0 + } + return fmt.Sprintf("parsing %v ...|%s|... at %s", iter.head, + string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail])) +} + +func (iter *Iterator) readByte() (ret byte) { + if iter.head == iter.tail { + if iter.loadMore() { + ret = iter.buf[iter.head] + iter.head++ + return ret + } + return 0 + } + ret = iter.buf[iter.head] + iter.head++ + return ret +} + +func (iter *Iterator) loadMore() bool { + if iter.reader == nil { + if iter.Error == nil { + iter.head = iter.tail + iter.Error = io.EOF + } + return false + } + if iter.captured != nil { + iter.captured = append(iter.captured, + iter.buf[iter.captureStartedAt:iter.tail]...) + iter.captureStartedAt = 0 + } + for { + n, err := iter.reader.Read(iter.buf) + if n == 0 { + if err != nil { + if iter.Error == nil { + iter.Error = err + } + return false + } + } else { + iter.head = 0 + iter.tail = n + return true + } + } +} + +func (iter *Iterator) unreadByte() { + if iter.Error != nil { + return + } + iter.head-- + return +} + +// Read read the next JSON element as generic interface{}. +func (iter *Iterator) Read() interface{} { + valueType := iter.WhatIsNext() + switch valueType { + case StringValue: + return iter.ReadString() + case NumberValue: + if iter.cfg.configBeforeFrozen.UseNumber { + return json.Number(iter.readNumberAsString()) + } + return iter.ReadFloat64() + case NilValue: + iter.skipFourBytes('n', 'u', 'l', 'l') + return nil + case BoolValue: + return iter.ReadBool() + case ArrayValue: + arr := []interface{}{} + iter.ReadArrayCB(func(iter *Iterator) bool { + var elem interface{} + iter.ReadVal(&elem) + arr = append(arr, elem) + return true + }) + return arr + case ObjectValue: + obj := map[string]interface{}{} + iter.ReadMapCB(func(Iter *Iterator, field string) bool { + var elem interface{} + iter.ReadVal(&elem) + obj[field] = elem + return true + }) + return obj + default: + iter.ReportError("Read", fmt.Sprintf("unexpected value type: %v", valueType)) + return nil + } +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_array.go b/vendor/github.com/json-iterator/go/feature_iter_array.go new file mode 100644 index 0000000000..cbc3ec8d16 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_array.go @@ -0,0 +1,58 @@ +package jsoniter + +// ReadArray read array element, tells if the array has more element to read. +func (iter *Iterator) ReadArray() (ret bool) { + c := iter.nextToken() + switch c { + case 'n': + iter.skipThreeBytes('u', 'l', 'l') + return false // null + case '[': + c = iter.nextToken() + if c != ']' { + iter.unreadByte() + return true + } + return false + case ']': + return false + case ',': + return true + default: + iter.ReportError("ReadArray", "expect [ or , or ] or n, but found: "+string([]byte{c})) + return + } +} + +// ReadArrayCB read array with callback +func (iter *Iterator) ReadArrayCB(callback func(*Iterator) bool) (ret bool) { + c := iter.nextToken() + if c == '[' { + c = iter.nextToken() + if c != ']' { + iter.unreadByte() + if !callback(iter) { + return false + } + c = iter.nextToken() + for c == ',' { + if !callback(iter) { + return false + } + c = iter.nextToken() + } + if c != ']' { + iter.ReportError("ReadArrayCB", "expect ] in the end") + return false + } + return true + } + return true + } + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return true // null + } + iter.ReportError("ReadArrayCB", "expect [ or n, but found: "+string([]byte{c})) + return false +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_float.go b/vendor/github.com/json-iterator/go/feature_iter_float.go new file mode 100644 index 0000000000..86f4599122 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_float.go @@ -0,0 +1,341 @@ +package jsoniter + +import ( + "io" + "math/big" + "strconv" + "strings" + "unsafe" +) + +var floatDigits []int8 + +const invalidCharForNumber = int8(-1) +const endOfNumber = int8(-2) +const dotInNumber = int8(-3) + +func init() { + floatDigits = make([]int8, 256) + for i := 0; i < len(floatDigits); i++ { + floatDigits[i] = invalidCharForNumber + } + for i := int8('0'); i <= int8('9'); i++ { + floatDigits[i] = i - int8('0') + } + floatDigits[','] = endOfNumber + floatDigits[']'] = endOfNumber + floatDigits['}'] = endOfNumber + floatDigits[' '] = endOfNumber + floatDigits['\t'] = endOfNumber + floatDigits['\n'] = endOfNumber + floatDigits['.'] = dotInNumber +} + +// ReadBigFloat read big.Float +func (iter *Iterator) ReadBigFloat() (ret *big.Float) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return nil + } + prec := 64 + if len(str) > prec { + prec = len(str) + } + val, _, err := big.ParseFloat(str, 10, uint(prec), big.ToZero) + if err != nil { + iter.Error = err + return nil + } + return val +} + +// ReadBigInt read big.Int +func (iter *Iterator) ReadBigInt() (ret *big.Int) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return nil + } + ret = big.NewInt(0) + var success bool + ret, success = ret.SetString(str, 10) + if !success { + iter.ReportError("ReadBigInt", "invalid big int") + return nil + } + return ret +} + +//ReadFloat32 read float32 +func (iter *Iterator) ReadFloat32() (ret float32) { + c := iter.nextToken() + if c == '-' { + return -iter.readPositiveFloat32() + } + iter.unreadByte() + return iter.readPositiveFloat32() +} + +func (iter *Iterator) readPositiveFloat32() (ret float32) { + value := uint64(0) + c := byte(' ') + i := iter.head + // first char + if i == iter.tail { + return iter.readFloat32SlowPath() + } + c = iter.buf[i] + i++ + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat32SlowPath() + case endOfNumber: + iter.ReportError("readFloat32", "empty number") + return + case dotInNumber: + iter.ReportError("readFloat32", "leading dot is invalid") + return + case 0: + if i == iter.tail { + return iter.readFloat32SlowPath() + } + c = iter.buf[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + iter.ReportError("readFloat32", "leading zero is invalid") + return + } + } + value = uint64(ind) + // chars before dot +non_decimal_loop: + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat32SlowPath() + case endOfNumber: + iter.head = i + return float32(value) + case dotInNumber: + break non_decimal_loop + } + if value > uint64SafeToMultiple10 { + return iter.readFloat32SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) // value = value * 10 + ind; + } + // chars after dot + if c == '.' { + i++ + decimalPlaces := 0 + if i == iter.tail { + return iter.readFloat32SlowPath() + } + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case endOfNumber: + if decimalPlaces > 0 && decimalPlaces < len(pow10) { + iter.head = i + return float32(float64(value) / float64(pow10[decimalPlaces])) + } + // too many decimal places + return iter.readFloat32SlowPath() + case invalidCharForNumber: + fallthrough + case dotInNumber: + return iter.readFloat32SlowPath() + } + decimalPlaces++ + if value > uint64SafeToMultiple10 { + return iter.readFloat32SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) + } + } + return iter.readFloat32SlowPath() +} + +func (iter *Iterator) readNumberAsString() (ret string) { + strBuf := [16]byte{} + str := strBuf[0:0] +load_loop: + for { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case '+', '-', '.', 'e', 'E', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + str = append(str, c) + continue + default: + iter.head = i + break load_loop + } + } + if !iter.loadMore() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + return + } + if len(str) == 0 { + iter.ReportError("readNumberAsString", "invalid number") + } + return *(*string)(unsafe.Pointer(&str)) +} + +func (iter *Iterator) readFloat32SlowPath() (ret float32) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return + } + errMsg := validateFloat(str) + if errMsg != "" { + iter.ReportError("readFloat32SlowPath", errMsg) + return + } + val, err := strconv.ParseFloat(str, 32) + if err != nil { + iter.Error = err + return + } + return float32(val) +} + +// ReadFloat64 read float64 +func (iter *Iterator) ReadFloat64() (ret float64) { + c := iter.nextToken() + if c == '-' { + return -iter.readPositiveFloat64() + } + iter.unreadByte() + return iter.readPositiveFloat64() +} + +func (iter *Iterator) readPositiveFloat64() (ret float64) { + value := uint64(0) + c := byte(' ') + i := iter.head + // first char + if i == iter.tail { + return iter.readFloat64SlowPath() + } + c = iter.buf[i] + i++ + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat64SlowPath() + case endOfNumber: + iter.ReportError("readFloat64", "empty number") + return + case dotInNumber: + iter.ReportError("readFloat64", "leading dot is invalid") + return + case 0: + if i == iter.tail { + return iter.readFloat64SlowPath() + } + c = iter.buf[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + iter.ReportError("readFloat64", "leading zero is invalid") + return + } + } + value = uint64(ind) + // chars before dot +non_decimal_loop: + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat64SlowPath() + case endOfNumber: + iter.head = i + return float64(value) + case dotInNumber: + break non_decimal_loop + } + if value > uint64SafeToMultiple10 { + return iter.readFloat64SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) // value = value * 10 + ind; + } + // chars after dot + if c == '.' { + i++ + decimalPlaces := 0 + if i == iter.tail { + return iter.readFloat64SlowPath() + } + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case endOfNumber: + if decimalPlaces > 0 && decimalPlaces < len(pow10) { + iter.head = i + return float64(value) / float64(pow10[decimalPlaces]) + } + // too many decimal places + return iter.readFloat64SlowPath() + case invalidCharForNumber: + fallthrough + case dotInNumber: + return iter.readFloat64SlowPath() + } + decimalPlaces++ + if value > uint64SafeToMultiple10 { + return iter.readFloat64SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) + } + } + return iter.readFloat64SlowPath() +} + +func (iter *Iterator) readFloat64SlowPath() (ret float64) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return + } + errMsg := validateFloat(str) + if errMsg != "" { + iter.ReportError("readFloat64SlowPath", errMsg) + return + } + val, err := strconv.ParseFloat(str, 64) + if err != nil { + iter.Error = err + return + } + return val +} + +func validateFloat(str string) string { + // strconv.ParseFloat is not validating `1.` or `1.e1` + if len(str) == 0 { + return "empty number" + } + if str[0] == '-' { + return "-- is not valid" + } + dotPos := strings.IndexByte(str, '.') + if dotPos != -1 { + if dotPos == len(str)-1 { + return "dot can not be last character" + } + switch str[dotPos+1] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + return "missing digit after dot" + } + } + return "" +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_int.go b/vendor/github.com/json-iterator/go/feature_iter_int.go new file mode 100644 index 0000000000..886879efdb --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_int.go @@ -0,0 +1,258 @@ +package jsoniter + +import ( + "math" + "strconv" +) + +var intDigits []int8 + +const uint32SafeToMultiply10 = uint32(0xffffffff)/10 - 1 +const uint64SafeToMultiple10 = uint64(0xffffffffffffffff)/10 - 1 + +func init() { + intDigits = make([]int8, 256) + for i := 0; i < len(intDigits); i++ { + intDigits[i] = invalidCharForNumber + } + for i := int8('0'); i <= int8('9'); i++ { + intDigits[i] = i - int8('0') + } +} + +// ReadUint read uint +func (iter *Iterator) ReadUint() uint { + return uint(iter.ReadUint64()) +} + +// ReadInt read int +func (iter *Iterator) ReadInt() int { + return int(iter.ReadInt64()) +} + +// ReadInt8 read int8 +func (iter *Iterator) ReadInt8() (ret int8) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint32(iter.readByte()) + if val > math.MaxInt8+1 { + iter.ReportError("ReadInt8", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return -int8(val) + } + val := iter.readUint32(c) + if val > math.MaxInt8 { + iter.ReportError("ReadInt8", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return int8(val) +} + +// ReadUint8 read uint8 +func (iter *Iterator) ReadUint8() (ret uint8) { + val := iter.readUint32(iter.nextToken()) + if val > math.MaxUint8 { + iter.ReportError("ReadUint8", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return uint8(val) +} + +// ReadInt16 read int16 +func (iter *Iterator) ReadInt16() (ret int16) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint32(iter.readByte()) + if val > math.MaxInt16+1 { + iter.ReportError("ReadInt16", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return -int16(val) + } + val := iter.readUint32(c) + if val > math.MaxInt16 { + iter.ReportError("ReadInt16", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return int16(val) +} + +// ReadUint16 read uint16 +func (iter *Iterator) ReadUint16() (ret uint16) { + val := iter.readUint32(iter.nextToken()) + if val > math.MaxUint16 { + iter.ReportError("ReadUint16", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return uint16(val) +} + +// ReadInt32 read int32 +func (iter *Iterator) ReadInt32() (ret int32) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint32(iter.readByte()) + if val > math.MaxInt32+1 { + iter.ReportError("ReadInt32", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return -int32(val) + } + val := iter.readUint32(c) + if val > math.MaxInt32 { + iter.ReportError("ReadInt32", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return int32(val) +} + +// ReadUint32 read uint32 +func (iter *Iterator) ReadUint32() (ret uint32) { + return iter.readUint32(iter.nextToken()) +} + +func (iter *Iterator) readUint32(c byte) (ret uint32) { + ind := intDigits[c] + if ind == 0 { + return 0 // single zero + } + if ind == invalidCharForNumber { + iter.ReportError("readUint32", "unexpected character: "+string([]byte{byte(ind)})) + return + } + value := uint32(ind) + if iter.tail-iter.head > 10 { + i := iter.head + ind2 := intDigits[iter.buf[i]] + if ind2 == invalidCharForNumber { + iter.head = i + return value + } + i++ + ind3 := intDigits[iter.buf[i]] + if ind3 == invalidCharForNumber { + iter.head = i + return value*10 + uint32(ind2) + } + //iter.head = i + 1 + //value = value * 100 + uint32(ind2) * 10 + uint32(ind3) + i++ + ind4 := intDigits[iter.buf[i]] + if ind4 == invalidCharForNumber { + iter.head = i + return value*100 + uint32(ind2)*10 + uint32(ind3) + } + i++ + ind5 := intDigits[iter.buf[i]] + if ind5 == invalidCharForNumber { + iter.head = i + return value*1000 + uint32(ind2)*100 + uint32(ind3)*10 + uint32(ind4) + } + i++ + ind6 := intDigits[iter.buf[i]] + if ind6 == invalidCharForNumber { + iter.head = i + return value*10000 + uint32(ind2)*1000 + uint32(ind3)*100 + uint32(ind4)*10 + uint32(ind5) + } + i++ + ind7 := intDigits[iter.buf[i]] + if ind7 == invalidCharForNumber { + iter.head = i + return value*100000 + uint32(ind2)*10000 + uint32(ind3)*1000 + uint32(ind4)*100 + uint32(ind5)*10 + uint32(ind6) + } + i++ + ind8 := intDigits[iter.buf[i]] + if ind8 == invalidCharForNumber { + iter.head = i + return value*1000000 + uint32(ind2)*100000 + uint32(ind3)*10000 + uint32(ind4)*1000 + uint32(ind5)*100 + uint32(ind6)*10 + uint32(ind7) + } + i++ + ind9 := intDigits[iter.buf[i]] + value = value*10000000 + uint32(ind2)*1000000 + uint32(ind3)*100000 + uint32(ind4)*10000 + uint32(ind5)*1000 + uint32(ind6)*100 + uint32(ind7)*10 + uint32(ind8) + iter.head = i + if ind9 == invalidCharForNumber { + return value + } + } + for { + for i := iter.head; i < iter.tail; i++ { + ind = intDigits[iter.buf[i]] + if ind == invalidCharForNumber { + iter.head = i + return value + } + if value > uint32SafeToMultiply10 { + value2 := (value << 3) + (value << 1) + uint32(ind) + if value2 < value { + iter.ReportError("readUint32", "overflow") + return + } + value = value2 + continue + } + value = (value << 3) + (value << 1) + uint32(ind) + } + if !iter.loadMore() { + return value + } + } +} + +// ReadInt64 read int64 +func (iter *Iterator) ReadInt64() (ret int64) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint64(iter.readByte()) + if val > math.MaxInt64+1 { + iter.ReportError("ReadInt64", "overflow: "+strconv.FormatUint(uint64(val), 10)) + return + } + return -int64(val) + } + val := iter.readUint64(c) + if val > math.MaxInt64 { + iter.ReportError("ReadInt64", "overflow: "+strconv.FormatUint(uint64(val), 10)) + return + } + return int64(val) +} + +// ReadUint64 read uint64 +func (iter *Iterator) ReadUint64() uint64 { + return iter.readUint64(iter.nextToken()) +} + +func (iter *Iterator) readUint64(c byte) (ret uint64) { + ind := intDigits[c] + if ind == 0 { + return 0 // single zero + } + if ind == invalidCharForNumber { + iter.ReportError("readUint64", "unexpected character: "+string([]byte{byte(ind)})) + return + } + value := uint64(ind) + for { + for i := iter.head; i < iter.tail; i++ { + ind = intDigits[iter.buf[i]] + if ind == invalidCharForNumber { + iter.head = i + return value + } + if value > uint64SafeToMultiple10 { + value2 := (value << 3) + (value << 1) + uint64(ind) + if value2 < value { + iter.ReportError("readUint64", "overflow") + return + } + value = value2 + continue + } + value = (value << 3) + (value << 1) + uint64(ind) + } + if !iter.loadMore() { + return value + } + } +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_object.go b/vendor/github.com/json-iterator/go/feature_iter_object.go new file mode 100644 index 0000000000..3bdb5576ee --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_object.go @@ -0,0 +1,212 @@ +package jsoniter + +import ( + "fmt" + "unicode" + "unsafe" +) + +// ReadObject read one field from object. +// If object ended, returns empty string. +// Otherwise, returns the field name. +func (iter *Iterator) ReadObject() (ret string) { + c := iter.nextToken() + switch c { + case 'n': + iter.skipThreeBytes('u', 'l', 'l') + return "" // null + case '{': + c = iter.nextToken() + if c == '"' { + iter.unreadByte() + return string(iter.readObjectFieldAsBytes()) + } + if c == '}' { + return "" // end of object + } + iter.ReportError("ReadObject", `expect " after {`) + return + case ',': + return string(iter.readObjectFieldAsBytes()) + case '}': + return "" // end of object + default: + iter.ReportError("ReadObject", fmt.Sprintf(`expect { or , or } or n, but found %s`, string([]byte{c}))) + return + } +} + +func (iter *Iterator) readFieldHash() int32 { + hash := int64(0x811c9dc5) + c := iter.nextToken() + if c == '"' { + for { + for i := iter.head; i < iter.tail; i++ { + // require ascii string and no escape + b := iter.buf[i] + if 'A' <= b && b <= 'Z' { + b += 'a' - 'A' + } + if b == '"' { + iter.head = i + 1 + c = iter.nextToken() + if c != ':' { + iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c})) + } + return int32(hash) + } + hash ^= int64(b) + hash *= 0x1000193 + } + if !iter.loadMore() { + iter.ReportError("readFieldHash", `incomplete field name`) + return 0 + } + } + } + iter.ReportError("readFieldHash", `expect ", but found `+string([]byte{c})) + return 0 +} + +func calcHash(str string) int32 { + hash := int64(0x811c9dc5) + for _, b := range str { + hash ^= int64(unicode.ToLower(b)) + hash *= 0x1000193 + } + return int32(hash) +} + +// ReadObjectCB read object with callback, the key is ascii only and field name not copied +func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { + c := iter.nextToken() + if c == '{' { + c = iter.nextToken() + if c == '"' { + iter.unreadByte() + field := iter.readObjectFieldAsBytes() + if !callback(iter, *(*string)(unsafe.Pointer(&field))) { + return false + } + c = iter.nextToken() + for c == ',' { + field = iter.readObjectFieldAsBytes() + if !callback(iter, *(*string)(unsafe.Pointer(&field))) { + return false + } + c = iter.nextToken() + } + if c != '}' { + iter.ReportError("ReadObjectCB", `object not ended with }`) + return false + } + return true + } + if c == '}' { + return true + } + iter.ReportError("ReadObjectCB", `expect " after }`) + return false + } + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return true // null + } + iter.ReportError("ReadObjectCB", `expect { or n`) + return false +} + +// ReadMapCB read map with callback, the key can be any string +func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool { + c := iter.nextToken() + if c == '{' { + c = iter.nextToken() + if c == '"' { + iter.unreadByte() + field := iter.ReadString() + if iter.nextToken() != ':' { + iter.ReportError("ReadMapCB", "expect : after object field") + return false + } + if !callback(iter, field) { + return false + } + c = iter.nextToken() + for c == ',' { + field = iter.ReadString() + if iter.nextToken() != ':' { + iter.ReportError("ReadMapCB", "expect : after object field") + return false + } + if !callback(iter, field) { + return false + } + c = iter.nextToken() + } + if c != '}' { + iter.ReportError("ReadMapCB", `object not ended with }`) + return false + } + return true + } + if c == '}' { + return true + } + iter.ReportError("ReadMapCB", `expect " after }`) + return false + } + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return true // null + } + iter.ReportError("ReadMapCB", `expect { or n`) + return false +} + +func (iter *Iterator) readObjectStart() bool { + c := iter.nextToken() + if c == '{' { + c = iter.nextToken() + if c == '}' { + return false + } + iter.unreadByte() + return true + } else if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return false + } + iter.ReportError("readObjectStart", "expect { or n") + return false +} + +func (iter *Iterator) readObjectFieldAsBytes() (ret []byte) { + str := iter.ReadStringAsSlice() + if iter.skipWhitespacesWithoutLoadMore() { + if ret == nil { + ret = make([]byte, len(str)) + copy(ret, str) + } + if !iter.loadMore() { + return + } + } + if iter.buf[iter.head] != ':' { + iter.ReportError("readObjectFieldAsBytes", "expect : after object field") + return + } + iter.head++ + if iter.skipWhitespacesWithoutLoadMore() { + if ret == nil { + ret = make([]byte, len(str)) + copy(ret, str) + } + if !iter.loadMore() { + return + } + } + if ret == nil { + return str + } + return ret +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_skip.go b/vendor/github.com/json-iterator/go/feature_iter_skip.go new file mode 100644 index 0000000000..b008d98c99 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_skip.go @@ -0,0 +1,127 @@ +package jsoniter + +import "fmt" + +// ReadNil reads a json object as nil and +// returns whether it's a nil or not +func (iter *Iterator) ReadNil() (ret bool) { + c := iter.nextToken() + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') // null + return true + } + iter.unreadByte() + return false +} + +// ReadBool reads a json object as BoolValue +func (iter *Iterator) ReadBool() (ret bool) { + c := iter.nextToken() + if c == 't' { + iter.skipThreeBytes('r', 'u', 'e') + return true + } + if c == 'f' { + iter.skipFourBytes('a', 'l', 's', 'e') + return false + } + iter.ReportError("ReadBool", "expect t or f") + return +} + +// SkipAndReturnBytes skip next JSON element, and return its content as []byte. +// The []byte can be kept, it is a copy of data. +func (iter *Iterator) SkipAndReturnBytes() []byte { + iter.startCapture(iter.head) + iter.Skip() + return iter.stopCapture() +} + +type captureBuffer struct { + startedAt int + captured []byte +} + +func (iter *Iterator) startCapture(captureStartedAt int) { + if iter.captured != nil { + panic("already in capture mode") + } + iter.captureStartedAt = captureStartedAt + iter.captured = make([]byte, 0, 32) +} + +func (iter *Iterator) stopCapture() []byte { + if iter.captured == nil { + panic("not in capture mode") + } + captured := iter.captured + remaining := iter.buf[iter.captureStartedAt:iter.head] + iter.captureStartedAt = -1 + iter.captured = nil + if len(captured) == 0 { + return remaining + } + captured = append(captured, remaining...) + return captured +} + +// Skip skips a json object and positions to relatively the next json object +func (iter *Iterator) Skip() { + c := iter.nextToken() + switch c { + case '"': + iter.skipString() + case 'n': + iter.skipThreeBytes('u', 'l', 'l') // null + case 't': + iter.skipThreeBytes('r', 'u', 'e') // true + case 'f': + iter.skipFourBytes('a', 'l', 's', 'e') // false + case '0': + iter.unreadByte() + iter.ReadFloat32() + case '-', '1', '2', '3', '4', '5', '6', '7', '8', '9': + iter.skipNumber() + case '[': + iter.skipArray() + case '{': + iter.skipObject() + default: + iter.ReportError("Skip", fmt.Sprintf("do not know how to skip: %v", c)) + return + } +} + +func (iter *Iterator) skipFourBytes(b1, b2, b3, b4 byte) { + if iter.readByte() != b1 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } + if iter.readByte() != b2 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } + if iter.readByte() != b3 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } + if iter.readByte() != b4 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } +} + +func (iter *Iterator) skipThreeBytes(b1, b2, b3 byte) { + if iter.readByte() != b1 { + iter.ReportError("skipThreeBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3}))) + return + } + if iter.readByte() != b2 { + iter.ReportError("skipThreeBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3}))) + return + } + if iter.readByte() != b3 { + iter.ReportError("skipThreeBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3}))) + return + } +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go b/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go new file mode 100644 index 0000000000..047d58a4bc --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go @@ -0,0 +1,144 @@ +//+build jsoniter-sloppy + +package jsoniter + +// sloppy but faster implementation, do not validate the input json + +func (iter *Iterator) skipNumber() { + for { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case ' ', '\n', '\r', '\t', ',', '}', ']': + iter.head = i + return + } + } + if !iter.loadMore() { + return + } + } +} + +func (iter *Iterator) skipArray() { + level := 1 + for { + for i := iter.head; i < iter.tail; i++ { + switch iter.buf[i] { + case '"': // If inside string, skip it + iter.head = i + 1 + iter.skipString() + i = iter.head - 1 // it will be i++ soon + case '[': // If open symbol, increase level + level++ + case ']': // If close symbol, increase level + level-- + + // If we have returned to the original level, we're done + if level == 0 { + iter.head = i + 1 + return + } + } + } + if !iter.loadMore() { + iter.ReportError("skipObject", "incomplete array") + return + } + } +} + +func (iter *Iterator) skipObject() { + level := 1 + for { + for i := iter.head; i < iter.tail; i++ { + switch iter.buf[i] { + case '"': // If inside string, skip it + iter.head = i + 1 + iter.skipString() + i = iter.head - 1 // it will be i++ soon + case '{': // If open symbol, increase level + level++ + case '}': // If close symbol, increase level + level-- + + // If we have returned to the original level, we're done + if level == 0 { + iter.head = i + 1 + return + } + } + } + if !iter.loadMore() { + iter.ReportError("skipObject", "incomplete object") + return + } + } +} + +func (iter *Iterator) skipString() { + for { + end, escaped := iter.findStringEnd() + if end == -1 { + if !iter.loadMore() { + iter.ReportError("skipString", "incomplete string") + return + } + if escaped { + iter.head = 1 // skip the first char as last char read is \ + } + } else { + iter.head = end + return + } + } +} + +// adapted from: https://github.com/buger/jsonparser/blob/master/parser.go +// Tries to find the end of string +// Support if string contains escaped quote symbols. +func (iter *Iterator) findStringEnd() (int, bool) { + escaped := false + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + if c == '"' { + if !escaped { + return i + 1, false + } + j := i - 1 + for { + if j < iter.head || iter.buf[j] != '\\' { + // even number of backslashes + // either end of buffer, or " found + return i + 1, true + } + j-- + if j < iter.head || iter.buf[j] != '\\' { + // odd number of backslashes + // it is \" or \\\" + break + } + j-- + } + } else if c == '\\' { + escaped = true + } + } + j := iter.tail - 1 + for { + if j < iter.head || iter.buf[j] != '\\' { + // even number of backslashes + // either end of buffer, or " found + return -1, false // do not end with \ + } + j-- + if j < iter.head || iter.buf[j] != '\\' { + // odd number of backslashes + // it is \" or \\\" + break + } + j-- + + } + return -1, true // end with \ +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go b/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go new file mode 100644 index 0000000000..d267638254 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go @@ -0,0 +1,89 @@ +//+build !jsoniter-sloppy + +package jsoniter + +import "fmt" + +func (iter *Iterator) skipNumber() { + if !iter.trySkipNumber() { + iter.unreadByte() + iter.ReadFloat32() + } +} + +func (iter *Iterator) trySkipNumber() bool { + dotFound := false + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + case '.': + if dotFound { + iter.ReportError("validateNumber", `more than one dot found in number`) + return true // already failed + } + if i+1 == iter.tail { + return false + } + c = iter.buf[i+1] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + iter.ReportError("validateNumber", `missing digit after dot`) + return true // already failed + } + dotFound = true + default: + switch c { + case ',', ']', '}', ' ', '\t', '\n', '\r': + if iter.head == i { + return false // if - without following digits + } + iter.head = i + return true // must be valid + } + return false // may be invalid + } + } + return false +} + +func (iter *Iterator) skipString() { + if !iter.trySkipString() { + iter.unreadByte() + iter.ReadString() + } +} + +func (iter *Iterator) trySkipString() bool { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + if c == '"' { + iter.head = i + 1 + return true // valid + } else if c == '\\' { + return false + } else if c < ' ' { + iter.ReportError("ReadString", + fmt.Sprintf(`invalid control character found: %d`, c)) + return true // already failed + } + } + return false +} + +func (iter *Iterator) skipObject() { + iter.unreadByte() + iter.ReadObjectCB(func(iter *Iterator, field string) bool { + iter.Skip() + return true + }) +} + +func (iter *Iterator) skipArray() { + iter.unreadByte() + iter.ReadArrayCB(func(iter *Iterator) bool { + iter.Skip() + return true + }) +} diff --git a/vendor/github.com/json-iterator/go/feature_iter_string.go b/vendor/github.com/json-iterator/go/feature_iter_string.go new file mode 100644 index 0000000000..b764600460 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_iter_string.go @@ -0,0 +1,215 @@ +package jsoniter + +import ( + "fmt" + "unicode/utf16" +) + +// ReadString read string from iterator +func (iter *Iterator) ReadString() (ret string) { + c := iter.nextToken() + if c == '"' { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + if c == '"' { + ret = string(iter.buf[iter.head:i]) + iter.head = i + 1 + return ret + } else if c == '\\' { + break + } else if c < ' ' { + iter.ReportError("ReadString", + fmt.Sprintf(`invalid control character found: %d`, c)) + return + } + } + return iter.readStringSlowPath() + } else if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return "" + } + iter.ReportError("ReadString", `expects " or n`) + return +} + +func (iter *Iterator) readStringSlowPath() (ret string) { + var str []byte + var c byte + for iter.Error == nil { + c = iter.readByte() + if c == '"' { + return string(str) + } + if c == '\\' { + c = iter.readByte() + str = iter.readEscapedChar(c, str) + } else { + str = append(str, c) + } + } + iter.ReportError("ReadString", "unexpected end of input") + return +} + +func (iter *Iterator) readEscapedChar(c byte, str []byte) []byte { + switch c { + case 'u': + r := iter.readU4() + if utf16.IsSurrogate(r) { + c = iter.readByte() + if iter.Error != nil { + return nil + } + if c != '\\' { + iter.unreadByte() + str = appendRune(str, r) + return str + } + c = iter.readByte() + if iter.Error != nil { + return nil + } + if c != 'u' { + str = appendRune(str, r) + return iter.readEscapedChar(c, str) + } + r2 := iter.readU4() + if iter.Error != nil { + return nil + } + combined := utf16.DecodeRune(r, r2) + if combined == '\uFFFD' { + str = appendRune(str, r) + str = appendRune(str, r2) + } else { + str = appendRune(str, combined) + } + } else { + str = appendRune(str, r) + } + case '"': + str = append(str, '"') + case '\\': + str = append(str, '\\') + case '/': + str = append(str, '/') + case 'b': + str = append(str, '\b') + case 'f': + str = append(str, '\f') + case 'n': + str = append(str, '\n') + case 'r': + str = append(str, '\r') + case 't': + str = append(str, '\t') + default: + iter.ReportError("ReadString", + `invalid escape char after \`) + return nil + } + return str +} + +// ReadStringAsSlice read string from iterator without copying into string form. +// The []byte can not be kept, as it will change after next iterator call. +func (iter *Iterator) ReadStringAsSlice() (ret []byte) { + c := iter.nextToken() + if c == '"' { + for i := iter.head; i < iter.tail; i++ { + // require ascii string and no escape + // for: field name, base64, number + if iter.buf[i] == '"' { + // fast path: reuse the underlying buffer + ret = iter.buf[iter.head:i] + iter.head = i + 1 + return ret + } + } + readLen := iter.tail - iter.head + copied := make([]byte, readLen, readLen*2) + copy(copied, iter.buf[iter.head:iter.tail]) + iter.head = iter.tail + for iter.Error == nil { + c := iter.readByte() + if c == '"' { + return copied + } + copied = append(copied, c) + } + return copied + } + iter.ReportError("ReadString", `expects " or n`) + return +} + +func (iter *Iterator) readU4() (ret rune) { + for i := 0; i < 4; i++ { + c := iter.readByte() + if iter.Error != nil { + return + } + if c >= '0' && c <= '9' { + ret = ret*16 + rune(c-'0') + } else if c >= 'a' && c <= 'f' { + ret = ret*16 + rune(c-'a'+10) + } else if c >= 'A' && c <= 'F' { + ret = ret*16 + rune(c-'A'+10) + } else { + iter.ReportError("readU4", "expects 0~9 or a~f") + return + } + } + return ret +} + +const ( + t1 = 0x00 // 0000 0000 + tx = 0x80 // 1000 0000 + t2 = 0xC0 // 1100 0000 + t3 = 0xE0 // 1110 0000 + t4 = 0xF0 // 1111 0000 + t5 = 0xF8 // 1111 1000 + + maskx = 0x3F // 0011 1111 + mask2 = 0x1F // 0001 1111 + mask3 = 0x0F // 0000 1111 + mask4 = 0x07 // 0000 0111 + + rune1Max = 1<<7 - 1 + rune2Max = 1<<11 - 1 + rune3Max = 1<<16 - 1 + + surrogateMin = 0xD800 + surrogateMax = 0xDFFF + + maxRune = '\U0010FFFF' // Maximum valid Unicode code point. + runeError = '\uFFFD' // the "error" Rune or "Unicode replacement character" +) + +func appendRune(p []byte, r rune) []byte { + // Negative values are erroneous. Making it unsigned addresses the problem. + switch i := uint32(r); { + case i <= rune1Max: + p = append(p, byte(r)) + return p + case i <= rune2Max: + p = append(p, t2|byte(r>>6)) + p = append(p, tx|byte(r)&maskx) + return p + case i > maxRune, surrogateMin <= i && i <= surrogateMax: + r = runeError + fallthrough + case i <= rune3Max: + p = append(p, t3|byte(r>>12)) + p = append(p, tx|byte(r>>6)&maskx) + p = append(p, tx|byte(r)&maskx) + return p + default: + p = append(p, t4|byte(r>>18)) + p = append(p, tx|byte(r>>12)&maskx) + p = append(p, tx|byte(r>>6)&maskx) + p = append(p, tx|byte(r)&maskx) + return p + } +} diff --git a/vendor/github.com/json-iterator/go/feature_json_number.go b/vendor/github.com/json-iterator/go/feature_json_number.go new file mode 100644 index 0000000000..0439f67252 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_json_number.go @@ -0,0 +1,15 @@ +package jsoniter + +import "encoding/json" + +type Number string + +func CastJsonNumber(val interface{}) (string, bool) { + switch typedVal := val.(type) { + case json.Number: + return string(typedVal), true + case Number: + return string(typedVal), true + } + return "", false +} diff --git a/vendor/github.com/json-iterator/go/feature_pool.go b/vendor/github.com/json-iterator/go/feature_pool.go new file mode 100644 index 0000000000..73962bc6f6 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_pool.go @@ -0,0 +1,57 @@ +package jsoniter + +import ( + "io" +) + +// IteratorPool a thread safe pool of iterators with same configuration +type IteratorPool interface { + BorrowIterator(data []byte) *Iterator + ReturnIterator(iter *Iterator) +} + +// StreamPool a thread safe pool of streams with same configuration +type StreamPool interface { + BorrowStream(writer io.Writer) *Stream + ReturnStream(stream *Stream) +} + +func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream { + select { + case stream := <-cfg.streamPool: + stream.Reset(writer) + return stream + default: + return NewStream(cfg, writer, 512) + } +} + +func (cfg *frozenConfig) ReturnStream(stream *Stream) { + stream.Error = nil + select { + case cfg.streamPool <- stream: + return + default: + return + } +} + +func (cfg *frozenConfig) BorrowIterator(data []byte) *Iterator { + select { + case iter := <-cfg.iteratorPool: + iter.ResetBytes(data) + return iter + default: + return ParseBytes(cfg, data) + } +} + +func (cfg *frozenConfig) ReturnIterator(iter *Iterator) { + iter.Error = nil + select { + case cfg.iteratorPool <- iter: + return + default: + return + } +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect.go b/vendor/github.com/json-iterator/go/feature_reflect.go new file mode 100644 index 0000000000..05d91b49c8 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect.go @@ -0,0 +1,691 @@ +package jsoniter + +import ( + "encoding" + "encoding/json" + "fmt" + "reflect" + "time" + "unsafe" +) + +// ValDecoder is an internal type registered to cache as needed. +// Don't confuse jsoniter.ValDecoder with json.Decoder. +// For json.Decoder's adapter, refer to jsoniter.AdapterDecoder(todo link). +// +// Reflection on type to create decoders, which is then cached +// Reflection on value is avoided as we can, as the reflect.Value itself will allocate, with following exceptions +// 1. create instance of new value, for example *int will need a int to be allocated +// 2. append to slice, if the existing cap is not enough, allocate will be done using Reflect.New +// 3. assignment to map, both key and value will be reflect.Value +// For a simple struct binding, it will be reflect.Value free and allocation free +type ValDecoder interface { + Decode(ptr unsafe.Pointer, iter *Iterator) +} + +// ValEncoder is an internal type registered to cache as needed. +// Don't confuse jsoniter.ValEncoder with json.Encoder. +// For json.Encoder's adapter, refer to jsoniter.AdapterEncoder(todo godoc link). +type ValEncoder interface { + IsEmpty(ptr unsafe.Pointer) bool + Encode(ptr unsafe.Pointer, stream *Stream) + EncodeInterface(val interface{}, stream *Stream) +} + +type checkIsEmpty interface { + IsEmpty(ptr unsafe.Pointer) bool +} + +// WriteToStream the default implementation for TypeEncoder method EncodeInterface +func WriteToStream(val interface{}, stream *Stream, encoder ValEncoder) { + e := (*emptyInterface)(unsafe.Pointer(&val)) + if e.word == nil { + stream.WriteNil() + return + } + if reflect.TypeOf(val).Kind() == reflect.Ptr { + encoder.Encode(unsafe.Pointer(&e.word), stream) + } else { + encoder.Encode(e.word, stream) + } +} + +var jsonNumberType reflect.Type +var jsoniterNumberType reflect.Type +var jsonRawMessageType reflect.Type +var jsoniterRawMessageType reflect.Type +var anyType reflect.Type +var marshalerType reflect.Type +var unmarshalerType reflect.Type +var textMarshalerType reflect.Type +var textUnmarshalerType reflect.Type + +func init() { + jsonNumberType = reflect.TypeOf((*json.Number)(nil)).Elem() + jsoniterNumberType = reflect.TypeOf((*Number)(nil)).Elem() + jsonRawMessageType = reflect.TypeOf((*json.RawMessage)(nil)).Elem() + jsoniterRawMessageType = reflect.TypeOf((*RawMessage)(nil)).Elem() + anyType = reflect.TypeOf((*Any)(nil)).Elem() + marshalerType = reflect.TypeOf((*json.Marshaler)(nil)).Elem() + unmarshalerType = reflect.TypeOf((*json.Unmarshaler)(nil)).Elem() + textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() + textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() +} + +type optionalDecoder struct { + valueType reflect.Type + valueDecoder ValDecoder +} + +func (decoder *optionalDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if iter.ReadNil() { + *((*unsafe.Pointer)(ptr)) = nil + } else { + if *((*unsafe.Pointer)(ptr)) == nil { + //pointer to null, we have to allocate memory to hold the value + value := reflect.New(decoder.valueType) + newPtr := extractInterface(value.Interface()).word + decoder.valueDecoder.Decode(newPtr, iter) + *((*uintptr)(ptr)) = uintptr(newPtr) + } else { + //reuse existing instance + decoder.valueDecoder.Decode(*((*unsafe.Pointer)(ptr)), iter) + } + } +} + +type deferenceDecoder struct { + // only to deference a pointer + valueType reflect.Type + valueDecoder ValDecoder +} + +func (decoder *deferenceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if *((*unsafe.Pointer)(ptr)) == nil { + //pointer to null, we have to allocate memory to hold the value + value := reflect.New(decoder.valueType) + newPtr := extractInterface(value.Interface()).word + decoder.valueDecoder.Decode(newPtr, iter) + *((*uintptr)(ptr)) = uintptr(newPtr) + } else { + //reuse existing instance + decoder.valueDecoder.Decode(*((*unsafe.Pointer)(ptr)), iter) + } +} + +type optionalEncoder struct { + valueEncoder ValEncoder +} + +func (encoder *optionalEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if *((*unsafe.Pointer)(ptr)) == nil { + stream.WriteNil() + } else { + encoder.valueEncoder.Encode(*((*unsafe.Pointer)(ptr)), stream) + } +} + +func (encoder *optionalEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *optionalEncoder) IsEmpty(ptr unsafe.Pointer) bool { + if *((*unsafe.Pointer)(ptr)) == nil { + return true + } + return false +} + +type placeholderEncoder struct { + cfg *frozenConfig + cacheKey reflect.Type +} + +func (encoder *placeholderEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + encoder.getRealEncoder().Encode(ptr, stream) +} + +func (encoder *placeholderEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *placeholderEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.getRealEncoder().IsEmpty(ptr) +} + +func (encoder *placeholderEncoder) getRealEncoder() ValEncoder { + for i := 0; i < 30; i++ { + realDecoder := encoder.cfg.getEncoderFromCache(encoder.cacheKey) + _, isPlaceholder := realDecoder.(*placeholderEncoder) + if isPlaceholder { + time.Sleep(time.Second) + } else { + return realDecoder + } + } + panic(fmt.Sprintf("real encoder not found for cache key: %v", encoder.cacheKey)) +} + +type placeholderDecoder struct { + cfg *frozenConfig + cacheKey reflect.Type +} + +func (decoder *placeholderDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + for i := 0; i < 30; i++ { + realDecoder := decoder.cfg.getDecoderFromCache(decoder.cacheKey) + _, isPlaceholder := realDecoder.(*placeholderDecoder) + if isPlaceholder { + time.Sleep(time.Second) + } else { + realDecoder.Decode(ptr, iter) + return + } + } + panic(fmt.Sprintf("real decoder not found for cache key: %v", decoder.cacheKey)) +} + +// emptyInterface is the header for an interface{} value. +type emptyInterface struct { + typ unsafe.Pointer + word unsafe.Pointer +} + +// emptyInterface is the header for an interface with method (not interface{}) +type nonEmptyInterface struct { + // see ../runtime/iface.go:/Itab + itab *struct { + ityp unsafe.Pointer // static interface type + typ unsafe.Pointer // dynamic concrete type + link unsafe.Pointer + bad int32 + unused int32 + fun [100000]unsafe.Pointer // method table + } + word unsafe.Pointer +} + +// ReadVal copy the underlying JSON into go interface, same as json.Unmarshal +func (iter *Iterator) ReadVal(obj interface{}) { + typ := reflect.TypeOf(obj) + cacheKey := typ.Elem() + decoder, err := decoderOfType(iter.cfg, cacheKey) + if err != nil { + iter.Error = err + return + } + e := (*emptyInterface)(unsafe.Pointer(&obj)) + decoder.Decode(e.word, iter) +} + +// WriteVal copy the go interface into underlying JSON, same as json.Marshal +func (stream *Stream) WriteVal(val interface{}) { + if nil == val { + stream.WriteNil() + return + } + typ := reflect.TypeOf(val) + cacheKey := typ + encoder, err := encoderOfType(stream.cfg, cacheKey) + if err != nil { + stream.Error = err + return + } + encoder.EncodeInterface(val, stream) +} + +type prefix string + +func (p prefix) addToDecoder(decoder ValDecoder, err error) (ValDecoder, error) { + if err != nil { + return nil, fmt.Errorf("%s: %s", p, err.Error()) + } + return decoder, err +} + +func (p prefix) addToEncoder(encoder ValEncoder, err error) (ValEncoder, error) { + if err != nil { + return nil, fmt.Errorf("%s: %s", p, err.Error()) + } + return encoder, err +} + +func decoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + cacheKey := typ + decoder := cfg.getDecoderFromCache(cacheKey) + if decoder != nil { + return decoder, nil + } + decoder = getTypeDecoderFromExtension(typ) + if decoder != nil { + cfg.addDecoderToCache(cacheKey, decoder) + return decoder, nil + } + decoder = &placeholderDecoder{cfg: cfg, cacheKey: cacheKey} + cfg.addDecoderToCache(cacheKey, decoder) + decoder, err := createDecoderOfType(cfg, typ) + for _, extension := range extensions { + decoder = extension.DecorateDecoder(typ, decoder) + } + cfg.addDecoderToCache(cacheKey, decoder) + return decoder, err +} + +func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + typeName := typ.String() + if typ == jsonRawMessageType { + return &jsonRawMessageCodec{}, nil + } + if typ == jsoniterRawMessageType { + return &jsoniterRawMessageCodec{}, nil + } + if typ.AssignableTo(jsonNumberType) { + return &jsonNumberCodec{}, nil + } + if typ.AssignableTo(jsoniterNumberType) { + return &jsoniterNumberCodec{}, nil + } + if typ.Implements(unmarshalerType) { + templateInterface := reflect.New(typ).Elem().Interface() + var decoder ValDecoder = &unmarshalerDecoder{extractInterface(templateInterface)} + if typ.Kind() == reflect.Ptr { + decoder = &optionalDecoder{typ.Elem(), decoder} + } + return decoder, nil + } + if reflect.PtrTo(typ).Implements(unmarshalerType) { + templateInterface := reflect.New(typ).Interface() + var decoder ValDecoder = &unmarshalerDecoder{extractInterface(templateInterface)} + return decoder, nil + } + if typ.Implements(textUnmarshalerType) { + templateInterface := reflect.New(typ).Elem().Interface() + var decoder ValDecoder = &textUnmarshalerDecoder{extractInterface(templateInterface)} + if typ.Kind() == reflect.Ptr { + decoder = &optionalDecoder{typ.Elem(), decoder} + } + return decoder, nil + } + if reflect.PtrTo(typ).Implements(textUnmarshalerType) { + templateInterface := reflect.New(typ).Interface() + var decoder ValDecoder = &textUnmarshalerDecoder{extractInterface(templateInterface)} + return decoder, nil + } + if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Uint8 { + sliceDecoder, err := prefix("[slice]").addToDecoder(decoderOfSlice(cfg, typ)) + if err != nil { + return nil, err + } + return &base64Codec{sliceDecoder: sliceDecoder}, nil + } + if typ.Implements(anyType) { + return &anyCodec{}, nil + } + switch typ.Kind() { + case reflect.String: + if typeName != "string" { + return decoderOfType(cfg, reflect.TypeOf((*string)(nil)).Elem()) + } + return &stringCodec{}, nil + case reflect.Int: + if typeName != "int" { + return decoderOfType(cfg, reflect.TypeOf((*int)(nil)).Elem()) + } + return &intCodec{}, nil + case reflect.Int8: + if typeName != "int8" { + return decoderOfType(cfg, reflect.TypeOf((*int8)(nil)).Elem()) + } + return &int8Codec{}, nil + case reflect.Int16: + if typeName != "int16" { + return decoderOfType(cfg, reflect.TypeOf((*int16)(nil)).Elem()) + } + return &int16Codec{}, nil + case reflect.Int32: + if typeName != "int32" { + return decoderOfType(cfg, reflect.TypeOf((*int32)(nil)).Elem()) + } + return &int32Codec{}, nil + case reflect.Int64: + if typeName != "int64" { + return decoderOfType(cfg, reflect.TypeOf((*int64)(nil)).Elem()) + } + return &int64Codec{}, nil + case reflect.Uint: + if typeName != "uint" { + return decoderOfType(cfg, reflect.TypeOf((*uint)(nil)).Elem()) + } + return &uintCodec{}, nil + case reflect.Uint8: + if typeName != "uint8" { + return decoderOfType(cfg, reflect.TypeOf((*uint8)(nil)).Elem()) + } + return &uint8Codec{}, nil + case reflect.Uint16: + if typeName != "uint16" { + return decoderOfType(cfg, reflect.TypeOf((*uint16)(nil)).Elem()) + } + return &uint16Codec{}, nil + case reflect.Uint32: + if typeName != "uint32" { + return decoderOfType(cfg, reflect.TypeOf((*uint32)(nil)).Elem()) + } + return &uint32Codec{}, nil + case reflect.Uintptr: + if typeName != "uintptr" { + return decoderOfType(cfg, reflect.TypeOf((*uintptr)(nil)).Elem()) + } + return &uintptrCodec{}, nil + case reflect.Uint64: + if typeName != "uint64" { + return decoderOfType(cfg, reflect.TypeOf((*uint64)(nil)).Elem()) + } + return &uint64Codec{}, nil + case reflect.Float32: + if typeName != "float32" { + return decoderOfType(cfg, reflect.TypeOf((*float32)(nil)).Elem()) + } + return &float32Codec{}, nil + case reflect.Float64: + if typeName != "float64" { + return decoderOfType(cfg, reflect.TypeOf((*float64)(nil)).Elem()) + } + return &float64Codec{}, nil + case reflect.Bool: + if typeName != "bool" { + return decoderOfType(cfg, reflect.TypeOf((*bool)(nil)).Elem()) + } + return &boolCodec{}, nil + case reflect.Interface: + if typ.NumMethod() == 0 { + return &emptyInterfaceCodec{}, nil + } + return &nonEmptyInterfaceCodec{}, nil + case reflect.Struct: + return prefix(fmt.Sprintf("[%s]", typeName)).addToDecoder(decoderOfStruct(cfg, typ)) + case reflect.Array: + return prefix("[array]").addToDecoder(decoderOfArray(cfg, typ)) + case reflect.Slice: + return prefix("[slice]").addToDecoder(decoderOfSlice(cfg, typ)) + case reflect.Map: + return prefix("[map]").addToDecoder(decoderOfMap(cfg, typ)) + case reflect.Ptr: + return prefix("[optional]").addToDecoder(decoderOfOptional(cfg, typ)) + default: + return nil, fmt.Errorf("unsupported type: %v", typ) + } +} + +func encoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + cacheKey := typ + encoder := cfg.getEncoderFromCache(cacheKey) + if encoder != nil { + return encoder, nil + } + encoder = getTypeEncoderFromExtension(typ) + if encoder != nil { + cfg.addEncoderToCache(cacheKey, encoder) + return encoder, nil + } + encoder = &placeholderEncoder{cfg: cfg, cacheKey: cacheKey} + cfg.addEncoderToCache(cacheKey, encoder) + encoder, err := createEncoderOfType(cfg, typ) + for _, extension := range extensions { + encoder = extension.DecorateEncoder(typ, encoder) + } + cfg.addEncoderToCache(cacheKey, encoder) + return encoder, err +} + +func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + if typ == jsonRawMessageType { + return &jsonRawMessageCodec{}, nil + } + if typ == jsoniterRawMessageType { + return &jsoniterRawMessageCodec{}, nil + } + if typ.AssignableTo(jsonNumberType) { + return &jsonNumberCodec{}, nil + } + if typ.AssignableTo(jsoniterNumberType) { + return &jsoniterNumberCodec{}, nil + } + if typ.Implements(marshalerType) { + checkIsEmpty, err := createCheckIsEmpty(typ) + if err != nil { + return nil, err + } + templateInterface := reflect.New(typ).Elem().Interface() + var encoder ValEncoder = &marshalerEncoder{ + templateInterface: extractInterface(templateInterface), + checkIsEmpty: checkIsEmpty, + } + if typ.Kind() == reflect.Ptr { + encoder = &optionalEncoder{encoder} + } + return encoder, nil + } + if typ.Implements(textMarshalerType) { + checkIsEmpty, err := createCheckIsEmpty(typ) + if err != nil { + return nil, err + } + templateInterface := reflect.New(typ).Elem().Interface() + var encoder ValEncoder = &textMarshalerEncoder{ + templateInterface: extractInterface(templateInterface), + checkIsEmpty: checkIsEmpty, + } + if typ.Kind() == reflect.Ptr { + encoder = &optionalEncoder{encoder} + } + return encoder, nil + } + if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Uint8 { + return &base64Codec{}, nil + } + if typ.Implements(anyType) { + return &anyCodec{}, nil + } + return createEncoderOfSimpleType(cfg, typ) +} + +func createCheckIsEmpty(typ reflect.Type) (checkIsEmpty, error) { + kind := typ.Kind() + switch kind { + case reflect.String: + return &stringCodec{}, nil + case reflect.Int: + return &intCodec{}, nil + case reflect.Int8: + return &int8Codec{}, nil + case reflect.Int16: + return &int16Codec{}, nil + case reflect.Int32: + return &int32Codec{}, nil + case reflect.Int64: + return &int64Codec{}, nil + case reflect.Uint: + return &uintCodec{}, nil + case reflect.Uint8: + return &uint8Codec{}, nil + case reflect.Uint16: + return &uint16Codec{}, nil + case reflect.Uint32: + return &uint32Codec{}, nil + case reflect.Uintptr: + return &uintptrCodec{}, nil + case reflect.Uint64: + return &uint64Codec{}, nil + case reflect.Float32: + return &float32Codec{}, nil + case reflect.Float64: + return &float64Codec{}, nil + case reflect.Bool: + return &boolCodec{}, nil + case reflect.Interface: + if typ.NumMethod() == 0 { + return &emptyInterfaceCodec{}, nil + } + return &nonEmptyInterfaceCodec{}, nil + case reflect.Struct: + return &structEncoder{}, nil + case reflect.Array: + return &arrayEncoder{}, nil + case reflect.Slice: + return &sliceEncoder{}, nil + case reflect.Map: + return &mapEncoder{}, nil + case reflect.Ptr: + return &optionalEncoder{}, nil + default: + return nil, fmt.Errorf("unsupported type: %v", typ) + } +} + +func createEncoderOfSimpleType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + typeName := typ.String() + kind := typ.Kind() + switch kind { + case reflect.String: + if typeName != "string" { + return encoderOfType(cfg, reflect.TypeOf((*string)(nil)).Elem()) + } + return &stringCodec{}, nil + case reflect.Int: + if typeName != "int" { + return encoderOfType(cfg, reflect.TypeOf((*int)(nil)).Elem()) + } + return &intCodec{}, nil + case reflect.Int8: + if typeName != "int8" { + return encoderOfType(cfg, reflect.TypeOf((*int8)(nil)).Elem()) + } + return &int8Codec{}, nil + case reflect.Int16: + if typeName != "int16" { + return encoderOfType(cfg, reflect.TypeOf((*int16)(nil)).Elem()) + } + return &int16Codec{}, nil + case reflect.Int32: + if typeName != "int32" { + return encoderOfType(cfg, reflect.TypeOf((*int32)(nil)).Elem()) + } + return &int32Codec{}, nil + case reflect.Int64: + if typeName != "int64" { + return encoderOfType(cfg, reflect.TypeOf((*int64)(nil)).Elem()) + } + return &int64Codec{}, nil + case reflect.Uint: + if typeName != "uint" { + return encoderOfType(cfg, reflect.TypeOf((*uint)(nil)).Elem()) + } + return &uintCodec{}, nil + case reflect.Uint8: + if typeName != "uint8" { + return encoderOfType(cfg, reflect.TypeOf((*uint8)(nil)).Elem()) + } + return &uint8Codec{}, nil + case reflect.Uint16: + if typeName != "uint16" { + return encoderOfType(cfg, reflect.TypeOf((*uint16)(nil)).Elem()) + } + return &uint16Codec{}, nil + case reflect.Uint32: + if typeName != "uint32" { + return encoderOfType(cfg, reflect.TypeOf((*uint32)(nil)).Elem()) + } + return &uint32Codec{}, nil + case reflect.Uintptr: + if typeName != "uintptr" { + return encoderOfType(cfg, reflect.TypeOf((*uintptr)(nil)).Elem()) + } + return &uintptrCodec{}, nil + case reflect.Uint64: + if typeName != "uint64" { + return encoderOfType(cfg, reflect.TypeOf((*uint64)(nil)).Elem()) + } + return &uint64Codec{}, nil + case reflect.Float32: + if typeName != "float32" { + return encoderOfType(cfg, reflect.TypeOf((*float32)(nil)).Elem()) + } + return &float32Codec{}, nil + case reflect.Float64: + if typeName != "float64" { + return encoderOfType(cfg, reflect.TypeOf((*float64)(nil)).Elem()) + } + return &float64Codec{}, nil + case reflect.Bool: + if typeName != "bool" { + return encoderOfType(cfg, reflect.TypeOf((*bool)(nil)).Elem()) + } + return &boolCodec{}, nil + case reflect.Interface: + if typ.NumMethod() == 0 { + return &emptyInterfaceCodec{}, nil + } + return &nonEmptyInterfaceCodec{}, nil + case reflect.Struct: + return prefix(fmt.Sprintf("[%s]", typeName)).addToEncoder(encoderOfStruct(cfg, typ)) + case reflect.Array: + return prefix("[array]").addToEncoder(encoderOfArray(cfg, typ)) + case reflect.Slice: + return prefix("[slice]").addToEncoder(encoderOfSlice(cfg, typ)) + case reflect.Map: + return prefix("[map]").addToEncoder(encoderOfMap(cfg, typ)) + case reflect.Ptr: + return prefix("[optional]").addToEncoder(encoderOfOptional(cfg, typ)) + default: + return nil, fmt.Errorf("unsupported type: %v", typ) + } +} + +func decoderOfOptional(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + elemType := typ.Elem() + decoder, err := decoderOfType(cfg, elemType) + if err != nil { + return nil, err + } + return &optionalDecoder{elemType, decoder}, nil +} + +func encoderOfOptional(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + elemType := typ.Elem() + elemEncoder, err := encoderOfType(cfg, elemType) + if err != nil { + return nil, err + } + encoder := &optionalEncoder{elemEncoder} + if elemType.Kind() == reflect.Map { + encoder = &optionalEncoder{encoder} + } + return encoder, nil +} + +func decoderOfMap(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + decoder, err := decoderOfType(cfg, typ.Elem()) + if err != nil { + return nil, err + } + mapInterface := reflect.New(typ).Interface() + return &mapDecoder{typ, typ.Key(), typ.Elem(), decoder, extractInterface(mapInterface)}, nil +} + +func extractInterface(val interface{}) emptyInterface { + return *((*emptyInterface)(unsafe.Pointer(&val))) +} + +func encoderOfMap(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + elemType := typ.Elem() + encoder, err := encoderOfType(cfg, elemType) + if err != nil { + return nil, err + } + mapInterface := reflect.New(typ).Elem().Interface() + if cfg.sortMapKeys { + return &sortKeysMapEncoder{typ, elemType, encoder, *((*emptyInterface)(unsafe.Pointer(&mapInterface)))}, nil + } + return &mapEncoder{typ, elemType, encoder, *((*emptyInterface)(unsafe.Pointer(&mapInterface)))}, nil +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_array.go b/vendor/github.com/json-iterator/go/feature_reflect_array.go new file mode 100644 index 0000000000..e23f187b7c --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_array.go @@ -0,0 +1,99 @@ +package jsoniter + +import ( + "fmt" + "io" + "reflect" + "unsafe" +) + +func decoderOfArray(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + decoder, err := decoderOfType(cfg, typ.Elem()) + if err != nil { + return nil, err + } + return &arrayDecoder{typ, typ.Elem(), decoder}, nil +} + +func encoderOfArray(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + encoder, err := encoderOfType(cfg, typ.Elem()) + if err != nil { + return nil, err + } + if typ.Elem().Kind() == reflect.Map { + encoder = &optionalEncoder{encoder} + } + return &arrayEncoder{typ, typ.Elem(), encoder}, nil +} + +type arrayEncoder struct { + arrayType reflect.Type + elemType reflect.Type + elemEncoder ValEncoder +} + +func (encoder *arrayEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteArrayStart() + elemPtr := unsafe.Pointer(ptr) + encoder.elemEncoder.Encode(elemPtr, stream) + for i := 1; i < encoder.arrayType.Len(); i++ { + stream.WriteMore() + elemPtr = unsafe.Pointer(uintptr(elemPtr) + encoder.elemType.Size()) + encoder.elemEncoder.Encode(unsafe.Pointer(elemPtr), stream) + } + stream.WriteArrayEnd() + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%v: %s", encoder.arrayType, stream.Error.Error()) + } +} + +func (encoder *arrayEncoder) EncodeInterface(val interface{}, stream *Stream) { + // special optimization for interface{} + e := (*emptyInterface)(unsafe.Pointer(&val)) + if e.word == nil { + stream.WriteArrayStart() + stream.WriteNil() + stream.WriteArrayEnd() + return + } + elemType := encoder.arrayType.Elem() + if encoder.arrayType.Len() == 1 && (elemType.Kind() == reflect.Ptr || elemType.Kind() == reflect.Map) { + ptr := uintptr(e.word) + e.word = unsafe.Pointer(&ptr) + } + if reflect.TypeOf(val).Kind() == reflect.Ptr { + encoder.Encode(unsafe.Pointer(&e.word), stream) + } else { + encoder.Encode(e.word, stream) + } +} + +func (encoder *arrayEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type arrayDecoder struct { + arrayType reflect.Type + elemType reflect.Type + elemDecoder ValDecoder +} + +func (decoder *arrayDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.doDecode(ptr, iter) + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.arrayType, iter.Error.Error()) + } +} + +func (decoder *arrayDecoder) doDecode(ptr unsafe.Pointer, iter *Iterator) { + offset := uintptr(0) + iter.ReadArrayCB(func(iter *Iterator) bool { + if offset < decoder.arrayType.Size() { + decoder.elemDecoder.Decode(unsafe.Pointer(uintptr(ptr)+offset), iter) + offset += decoder.elemType.Size() + } else { + iter.Skip() + } + return true + }) +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_extension.go b/vendor/github.com/json-iterator/go/feature_reflect_extension.go new file mode 100644 index 0000000000..3dd38299d4 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_extension.go @@ -0,0 +1,413 @@ +package jsoniter + +import ( + "fmt" + "reflect" + "sort" + "strings" + "unicode" + "unsafe" +) + +var typeDecoders = map[string]ValDecoder{} +var fieldDecoders = map[string]ValDecoder{} +var typeEncoders = map[string]ValEncoder{} +var fieldEncoders = map[string]ValEncoder{} +var extensions = []Extension{} + +// StructDescriptor describe how should we encode/decode the struct +type StructDescriptor struct { + onePtrEmbedded bool + onePtrOptimization bool + Type reflect.Type + Fields []*Binding +} + +// GetField get one field from the descriptor by its name. +// Can not use map here to keep field orders. +func (structDescriptor *StructDescriptor) GetField(fieldName string) *Binding { + for _, binding := range structDescriptor.Fields { + if binding.Field.Name == fieldName { + return binding + } + } + return nil +} + +// Binding describe how should we encode/decode the struct field +type Binding struct { + levels []int + Field *reflect.StructField + FromNames []string + ToNames []string + Encoder ValEncoder + Decoder ValDecoder +} + +// Extension the one for all SPI. Customize encoding/decoding by specifying alternate encoder/decoder. +// Can also rename fields by UpdateStructDescriptor. +type Extension interface { + UpdateStructDescriptor(structDescriptor *StructDescriptor) + CreateDecoder(typ reflect.Type) ValDecoder + CreateEncoder(typ reflect.Type) ValEncoder + DecorateDecoder(typ reflect.Type, decoder ValDecoder) ValDecoder + DecorateEncoder(typ reflect.Type, encoder ValEncoder) ValEncoder +} + +// DummyExtension embed this type get dummy implementation for all methods of Extension +type DummyExtension struct { +} + +// UpdateStructDescriptor No-op +func (extension *DummyExtension) UpdateStructDescriptor(structDescriptor *StructDescriptor) { +} + +// CreateDecoder No-op +func (extension *DummyExtension) CreateDecoder(typ reflect.Type) ValDecoder { + return nil +} + +// CreateEncoder No-op +func (extension *DummyExtension) CreateEncoder(typ reflect.Type) ValEncoder { + return nil +} + +// DecorateDecoder No-op +func (extension *DummyExtension) DecorateDecoder(typ reflect.Type, decoder ValDecoder) ValDecoder { + return decoder +} + +// DecorateEncoder No-op +func (extension *DummyExtension) DecorateEncoder(typ reflect.Type, encoder ValEncoder) ValEncoder { + return encoder +} + +type funcDecoder struct { + fun DecoderFunc +} + +func (decoder *funcDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.fun(ptr, iter) +} + +type funcEncoder struct { + fun EncoderFunc + isEmptyFunc func(ptr unsafe.Pointer) bool +} + +func (encoder *funcEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + encoder.fun(ptr, stream) +} + +func (encoder *funcEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *funcEncoder) IsEmpty(ptr unsafe.Pointer) bool { + if encoder.isEmptyFunc == nil { + return false + } + return encoder.isEmptyFunc(ptr) +} + +// DecoderFunc the function form of TypeDecoder +type DecoderFunc func(ptr unsafe.Pointer, iter *Iterator) + +// EncoderFunc the function form of TypeEncoder +type EncoderFunc func(ptr unsafe.Pointer, stream *Stream) + +// RegisterTypeDecoderFunc register TypeDecoder for a type with function +func RegisterTypeDecoderFunc(typ string, fun DecoderFunc) { + typeDecoders[typ] = &funcDecoder{fun} +} + +// RegisterTypeDecoder register TypeDecoder for a typ +func RegisterTypeDecoder(typ string, decoder ValDecoder) { + typeDecoders[typ] = decoder +} + +// RegisterFieldDecoderFunc register TypeDecoder for a struct field with function +func RegisterFieldDecoderFunc(typ string, field string, fun DecoderFunc) { + RegisterFieldDecoder(typ, field, &funcDecoder{fun}) +} + +// RegisterFieldDecoder register TypeDecoder for a struct field +func RegisterFieldDecoder(typ string, field string, decoder ValDecoder) { + fieldDecoders[fmt.Sprintf("%s/%s", typ, field)] = decoder +} + +// RegisterTypeEncoderFunc register TypeEncoder for a type with encode/isEmpty function +func RegisterTypeEncoderFunc(typ string, fun EncoderFunc, isEmptyFunc func(unsafe.Pointer) bool) { + typeEncoders[typ] = &funcEncoder{fun, isEmptyFunc} +} + +// RegisterTypeEncoder register TypeEncoder for a type +func RegisterTypeEncoder(typ string, encoder ValEncoder) { + typeEncoders[typ] = encoder +} + +// RegisterFieldEncoderFunc register TypeEncoder for a struct field with encode/isEmpty function +func RegisterFieldEncoderFunc(typ string, field string, fun EncoderFunc, isEmptyFunc func(unsafe.Pointer) bool) { + RegisterFieldEncoder(typ, field, &funcEncoder{fun, isEmptyFunc}) +} + +// RegisterFieldEncoder register TypeEncoder for a struct field +func RegisterFieldEncoder(typ string, field string, encoder ValEncoder) { + fieldEncoders[fmt.Sprintf("%s/%s", typ, field)] = encoder +} + +// RegisterExtension register extension +func RegisterExtension(extension Extension) { + extensions = append(extensions, extension) +} + +func getTypeDecoderFromExtension(typ reflect.Type) ValDecoder { + decoder := _getTypeDecoderFromExtension(typ) + if decoder != nil { + for _, extension := range extensions { + decoder = extension.DecorateDecoder(typ, decoder) + } + } + return decoder +} +func _getTypeDecoderFromExtension(typ reflect.Type) ValDecoder { + for _, extension := range extensions { + decoder := extension.CreateDecoder(typ) + if decoder != nil { + return decoder + } + } + typeName := typ.String() + decoder := typeDecoders[typeName] + if decoder != nil { + return decoder + } + if typ.Kind() == reflect.Ptr { + decoder := typeDecoders[typ.Elem().String()] + if decoder != nil { + return &optionalDecoder{typ.Elem(), decoder} + } + } + return nil +} + +func getTypeEncoderFromExtension(typ reflect.Type) ValEncoder { + encoder := _getTypeEncoderFromExtension(typ) + if encoder != nil { + for _, extension := range extensions { + encoder = extension.DecorateEncoder(typ, encoder) + } + } + return encoder +} + +func _getTypeEncoderFromExtension(typ reflect.Type) ValEncoder { + for _, extension := range extensions { + encoder := extension.CreateEncoder(typ) + if encoder != nil { + return encoder + } + } + typeName := typ.String() + encoder := typeEncoders[typeName] + if encoder != nil { + return encoder + } + if typ.Kind() == reflect.Ptr { + encoder := typeEncoders[typ.Elem().String()] + if encoder != nil { + return &optionalEncoder{encoder} + } + } + return nil +} + +func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, error) { + embeddedBindings := []*Binding{} + bindings := []*Binding{} + for i := 0; i < typ.NumField(); i++ { + field := typ.Field(i) + tag := field.Tag.Get(cfg.getTagKey()) + tagParts := strings.Split(tag, ",") + if tag == "-" { + continue + } + if field.Anonymous && (tag == "" || tagParts[0] == "") { + if field.Type.Kind() == reflect.Struct { + structDescriptor, err := describeStruct(cfg, field.Type) + if err != nil { + return nil, err + } + for _, binding := range structDescriptor.Fields { + binding.levels = append([]int{i}, binding.levels...) + omitempty := binding.Encoder.(*structFieldEncoder).omitempty + binding.Encoder = &structFieldEncoder{&field, binding.Encoder, omitempty} + binding.Decoder = &structFieldDecoder{&field, binding.Decoder} + embeddedBindings = append(embeddedBindings, binding) + } + continue + } else if field.Type.Kind() == reflect.Ptr && field.Type.Elem().Kind() == reflect.Struct { + structDescriptor, err := describeStruct(cfg, field.Type.Elem()) + if err != nil { + return nil, err + } + for _, binding := range structDescriptor.Fields { + binding.levels = append([]int{i}, binding.levels...) + omitempty := binding.Encoder.(*structFieldEncoder).omitempty + binding.Encoder = &optionalEncoder{binding.Encoder} + binding.Encoder = &structFieldEncoder{&field, binding.Encoder, omitempty} + binding.Decoder = &deferenceDecoder{field.Type.Elem(), binding.Decoder} + binding.Decoder = &structFieldDecoder{&field, binding.Decoder} + embeddedBindings = append(embeddedBindings, binding) + } + continue + } + } + fieldNames := calcFieldNames(field.Name, tagParts[0], tag) + fieldCacheKey := fmt.Sprintf("%s/%s", typ.String(), field.Name) + decoder := fieldDecoders[fieldCacheKey] + if decoder == nil { + var err error + decoder, err = decoderOfType(cfg, field.Type) + if err != nil { + return nil, err + } + } + encoder := fieldEncoders[fieldCacheKey] + if encoder == nil { + var err error + encoder, err = encoderOfType(cfg, field.Type) + if err != nil { + return nil, err + } + // map is stored as pointer in the struct + if field.Type.Kind() == reflect.Map { + encoder = &optionalEncoder{encoder} + } + } + binding := &Binding{ + Field: &field, + FromNames: fieldNames, + ToNames: fieldNames, + Decoder: decoder, + Encoder: encoder, + } + binding.levels = []int{i} + bindings = append(bindings, binding) + } + return createStructDescriptor(cfg, typ, bindings, embeddedBindings), nil +} +func createStructDescriptor(cfg *frozenConfig, typ reflect.Type, bindings []*Binding, embeddedBindings []*Binding) *StructDescriptor { + onePtrEmbedded := false + onePtrOptimization := false + if typ.NumField() == 1 { + firstField := typ.Field(0) + switch firstField.Type.Kind() { + case reflect.Ptr: + if firstField.Anonymous && firstField.Type.Elem().Kind() == reflect.Struct { + onePtrEmbedded = true + } + fallthrough + case reflect.Map: + onePtrOptimization = true + case reflect.Struct: + onePtrOptimization = isStructOnePtr(firstField.Type) + } + } + structDescriptor := &StructDescriptor{ + onePtrEmbedded: onePtrEmbedded, + onePtrOptimization: onePtrOptimization, + Type: typ, + Fields: bindings, + } + for _, extension := range extensions { + extension.UpdateStructDescriptor(structDescriptor) + } + processTags(structDescriptor, cfg) + // merge normal & embedded bindings & sort with original order + allBindings := sortableBindings(append(embeddedBindings, structDescriptor.Fields...)) + sort.Sort(allBindings) + structDescriptor.Fields = allBindings + return structDescriptor +} + +func isStructOnePtr(typ reflect.Type) bool { + if typ.NumField() == 1 { + firstField := typ.Field(0) + switch firstField.Type.Kind() { + case reflect.Ptr: + return true + case reflect.Map: + return true + case reflect.Struct: + return isStructOnePtr(firstField.Type) + } + } + return false +} + +type sortableBindings []*Binding + +func (bindings sortableBindings) Len() int { + return len(bindings) +} + +func (bindings sortableBindings) Less(i, j int) bool { + left := bindings[i].levels + right := bindings[j].levels + k := 0 + for { + if left[k] < right[k] { + return true + } else if left[k] > right[k] { + return false + } + k++ + } +} + +func (bindings sortableBindings) Swap(i, j int) { + bindings[i], bindings[j] = bindings[j], bindings[i] +} + +func processTags(structDescriptor *StructDescriptor, cfg *frozenConfig) { + for _, binding := range structDescriptor.Fields { + shouldOmitEmpty := false + tagParts := strings.Split(binding.Field.Tag.Get(cfg.getTagKey()), ",") + for _, tagPart := range tagParts[1:] { + if tagPart == "omitempty" { + shouldOmitEmpty = true + } else if tagPart == "string" { + if binding.Field.Type.Kind() == reflect.String { + binding.Decoder = &stringModeStringDecoder{binding.Decoder, cfg} + binding.Encoder = &stringModeStringEncoder{binding.Encoder, cfg} + } else { + binding.Decoder = &stringModeNumberDecoder{binding.Decoder} + binding.Encoder = &stringModeNumberEncoder{binding.Encoder} + } + } + } + binding.Decoder = &structFieldDecoder{binding.Field, binding.Decoder} + binding.Encoder = &structFieldEncoder{binding.Field, binding.Encoder, shouldOmitEmpty} + } +} + +func calcFieldNames(originalFieldName string, tagProvidedFieldName string, wholeTag string) []string { + // ignore? + if wholeTag == "-" { + return []string{} + } + // rename? + var fieldNames []string + if tagProvidedFieldName == "" { + fieldNames = []string{originalFieldName} + } else { + fieldNames = []string{tagProvidedFieldName} + } + // private? + isNotExported := unicode.IsLower(rune(originalFieldName[0])) + if isNotExported { + fieldNames = []string{} + } + return fieldNames +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_map.go b/vendor/github.com/json-iterator/go/feature_reflect_map.go new file mode 100644 index 0000000000..005671e01b --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_map.go @@ -0,0 +1,244 @@ +package jsoniter + +import ( + "encoding" + "encoding/json" + "reflect" + "sort" + "strconv" + "unsafe" +) + +type mapDecoder struct { + mapType reflect.Type + keyType reflect.Type + elemType reflect.Type + elemDecoder ValDecoder + mapInterface emptyInterface +} + +func (decoder *mapDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + // dark magic to cast unsafe.Pointer back to interface{} using reflect.Type + mapInterface := decoder.mapInterface + mapInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&mapInterface)) + realVal := reflect.ValueOf(*realInterface).Elem() + if iter.ReadNil() { + realVal.Set(reflect.Zero(decoder.mapType)) + return + } + if realVal.IsNil() { + realVal.Set(reflect.MakeMap(realVal.Type())) + } + iter.ReadMapCB(func(iter *Iterator, keyStr string) bool { + elem := reflect.New(decoder.elemType) + decoder.elemDecoder.Decode(unsafe.Pointer(elem.Pointer()), iter) + // to put into map, we have to use reflection + keyType := decoder.keyType + // TODO: remove this from loop + switch { + case keyType.Kind() == reflect.String: + realVal.SetMapIndex(reflect.ValueOf(keyStr).Convert(keyType), elem.Elem()) + return true + case keyType.Implements(textUnmarshalerType): + textUnmarshaler := reflect.New(keyType.Elem()).Interface().(encoding.TextUnmarshaler) + err := textUnmarshaler.UnmarshalText([]byte(keyStr)) + if err != nil { + iter.ReportError("read map key as TextUnmarshaler", err.Error()) + return false + } + realVal.SetMapIndex(reflect.ValueOf(textUnmarshaler), elem.Elem()) + return true + case reflect.PtrTo(keyType).Implements(textUnmarshalerType): + textUnmarshaler := reflect.New(keyType).Interface().(encoding.TextUnmarshaler) + err := textUnmarshaler.UnmarshalText([]byte(keyStr)) + if err != nil { + iter.ReportError("read map key as TextUnmarshaler", err.Error()) + return false + } + realVal.SetMapIndex(reflect.ValueOf(textUnmarshaler).Elem(), elem.Elem()) + return true + default: + switch keyType.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + n, err := strconv.ParseInt(keyStr, 10, 64) + if err != nil || reflect.Zero(keyType).OverflowInt(n) { + iter.ReportError("read map key as int64", "read int64 failed") + return false + } + realVal.SetMapIndex(reflect.ValueOf(n).Convert(keyType), elem.Elem()) + return true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + n, err := strconv.ParseUint(keyStr, 10, 64) + if err != nil || reflect.Zero(keyType).OverflowUint(n) { + iter.ReportError("read map key as uint64", "read uint64 failed") + return false + } + realVal.SetMapIndex(reflect.ValueOf(n).Convert(keyType), elem.Elem()) + return true + } + } + iter.ReportError("read map key", "unexpected map key type "+keyType.String()) + return true + }) +} + +type mapEncoder struct { + mapType reflect.Type + elemType reflect.Type + elemEncoder ValEncoder + mapInterface emptyInterface +} + +func (encoder *mapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + mapInterface := encoder.mapInterface + mapInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&mapInterface)) + realVal := reflect.ValueOf(*realInterface) + stream.WriteObjectStart() + for i, key := range realVal.MapKeys() { + if i != 0 { + stream.WriteMore() + } + encodeMapKey(key, stream) + if stream.indention > 0 { + stream.writeTwoBytes(byte(':'), byte(' ')) + } else { + stream.writeByte(':') + } + val := realVal.MapIndex(key).Interface() + encoder.elemEncoder.EncodeInterface(val, stream) + } + stream.WriteObjectEnd() +} + +func encodeMapKey(key reflect.Value, stream *Stream) { + if key.Kind() == reflect.String { + stream.WriteString(key.String()) + return + } + if tm, ok := key.Interface().(encoding.TextMarshaler); ok { + buf, err := tm.MarshalText() + if err != nil { + stream.Error = err + return + } + stream.writeByte('"') + stream.Write(buf) + stream.writeByte('"') + return + } + switch key.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + stream.writeByte('"') + stream.WriteInt64(key.Int()) + stream.writeByte('"') + return + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + stream.writeByte('"') + stream.WriteUint64(key.Uint()) + stream.writeByte('"') + return + } + stream.Error = &json.UnsupportedTypeError{Type: key.Type()} +} + +func (encoder *mapEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *mapEncoder) IsEmpty(ptr unsafe.Pointer) bool { + mapInterface := encoder.mapInterface + mapInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&mapInterface)) + realVal := reflect.ValueOf(*realInterface) + return realVal.Len() == 0 +} + +type sortKeysMapEncoder struct { + mapType reflect.Type + elemType reflect.Type + elemEncoder ValEncoder + mapInterface emptyInterface +} + +func (encoder *sortKeysMapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + mapInterface := encoder.mapInterface + mapInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&mapInterface)) + realVal := reflect.ValueOf(*realInterface) + + // Extract and sort the keys. + keys := realVal.MapKeys() + sv := stringValues(make([]reflectWithString, len(keys))) + for i, v := range keys { + sv[i].v = v + if err := sv[i].resolve(); err != nil { + stream.Error = err + return + } + } + sort.Sort(sv) + + stream.WriteObjectStart() + for i, key := range sv { + if i != 0 { + stream.WriteMore() + } + stream.WriteVal(key.s) // might need html escape, so can not WriteString directly + if stream.indention > 0 { + stream.writeTwoBytes(byte(':'), byte(' ')) + } else { + stream.writeByte(':') + } + val := realVal.MapIndex(key.v).Interface() + encoder.elemEncoder.EncodeInterface(val, stream) + } + stream.WriteObjectEnd() +} + +// stringValues is a slice of reflect.Value holding *reflect.StringValue. +// It implements the methods to sort by string. +type stringValues []reflectWithString + +type reflectWithString struct { + v reflect.Value + s string +} + +func (w *reflectWithString) resolve() error { + if w.v.Kind() == reflect.String { + w.s = w.v.String() + return nil + } + if tm, ok := w.v.Interface().(encoding.TextMarshaler); ok { + buf, err := tm.MarshalText() + w.s = string(buf) + return err + } + switch w.v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + w.s = strconv.FormatInt(w.v.Int(), 10) + return nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + w.s = strconv.FormatUint(w.v.Uint(), 10) + return nil + } + return &json.UnsupportedTypeError{Type: w.v.Type()} +} + +func (sv stringValues) Len() int { return len(sv) } +func (sv stringValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] } +func (sv stringValues) Less(i, j int) bool { return sv[i].s < sv[j].s } + +func (encoder *sortKeysMapEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *sortKeysMapEncoder) IsEmpty(ptr unsafe.Pointer) bool { + mapInterface := encoder.mapInterface + mapInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&mapInterface)) + realVal := reflect.ValueOf(*realInterface) + return realVal.Len() == 0 +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_native.go b/vendor/github.com/json-iterator/go/feature_reflect_native.go new file mode 100644 index 0000000000..b37dab3d8a --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_native.go @@ -0,0 +1,672 @@ +package jsoniter + +import ( + "encoding" + "encoding/base64" + "encoding/json" + "unsafe" +) + +type stringCodec struct { +} + +func (codec *stringCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*string)(ptr)) = iter.ReadString() +} + +func (codec *stringCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + str := *((*string)(ptr)) + stream.WriteString(str) +} + +func (codec *stringCodec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *stringCodec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*string)(ptr)) == "" +} + +type intCodec struct { +} + +func (codec *intCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*int)(ptr)) = iter.ReadInt() +} + +func (codec *intCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt(*((*int)(ptr))) +} + +func (codec *intCodec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *intCodec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int)(ptr)) == 0 +} + +type uintptrCodec struct { +} + +func (codec *uintptrCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*uintptr)(ptr)) = uintptr(iter.ReadUint64()) +} + +func (codec *uintptrCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint64(uint64(*((*uintptr)(ptr)))) +} + +func (codec *uintptrCodec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *uintptrCodec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uintptr)(ptr)) == 0 +} + +type int8Codec struct { +} + +func (codec *int8Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*int8)(ptr)) = iter.ReadInt8() +} + +func (codec *int8Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt8(*((*int8)(ptr))) +} + +func (codec *int8Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *int8Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int8)(ptr)) == 0 +} + +type int16Codec struct { +} + +func (codec *int16Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*int16)(ptr)) = iter.ReadInt16() +} + +func (codec *int16Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt16(*((*int16)(ptr))) +} + +func (codec *int16Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *int16Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int16)(ptr)) == 0 +} + +type int32Codec struct { +} + +func (codec *int32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*int32)(ptr)) = iter.ReadInt32() +} + +func (codec *int32Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt32(*((*int32)(ptr))) +} + +func (codec *int32Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *int32Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int32)(ptr)) == 0 +} + +type int64Codec struct { +} + +func (codec *int64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*int64)(ptr)) = iter.ReadInt64() +} + +func (codec *int64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt64(*((*int64)(ptr))) +} + +func (codec *int64Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *int64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int64)(ptr)) == 0 +} + +type uintCodec struct { +} + +func (codec *uintCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*uint)(ptr)) = iter.ReadUint() +} + +func (codec *uintCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint(*((*uint)(ptr))) +} + +func (codec *uintCodec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *uintCodec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint)(ptr)) == 0 +} + +type uint8Codec struct { +} + +func (codec *uint8Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*uint8)(ptr)) = iter.ReadUint8() +} + +func (codec *uint8Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint8(*((*uint8)(ptr))) +} + +func (codec *uint8Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *uint8Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint8)(ptr)) == 0 +} + +type uint16Codec struct { +} + +func (codec *uint16Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*uint16)(ptr)) = iter.ReadUint16() +} + +func (codec *uint16Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint16(*((*uint16)(ptr))) +} + +func (codec *uint16Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *uint16Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint16)(ptr)) == 0 +} + +type uint32Codec struct { +} + +func (codec *uint32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*uint32)(ptr)) = iter.ReadUint32() +} + +func (codec *uint32Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint32(*((*uint32)(ptr))) +} + +func (codec *uint32Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *uint32Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint32)(ptr)) == 0 +} + +type uint64Codec struct { +} + +func (codec *uint64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*uint64)(ptr)) = iter.ReadUint64() +} + +func (codec *uint64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint64(*((*uint64)(ptr))) +} + +func (codec *uint64Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *uint64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint64)(ptr)) == 0 +} + +type float32Codec struct { +} + +func (codec *float32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*float32)(ptr)) = iter.ReadFloat32() +} + +func (codec *float32Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat32(*((*float32)(ptr))) +} + +func (codec *float32Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *float32Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float32)(ptr)) == 0 +} + +type float64Codec struct { +} + +func (codec *float64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*float64)(ptr)) = iter.ReadFloat64() +} + +func (codec *float64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat64(*((*float64)(ptr))) +} + +func (codec *float64Codec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *float64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float64)(ptr)) == 0 +} + +type boolCodec struct { +} + +func (codec *boolCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*bool)(ptr)) = iter.ReadBool() +} + +func (codec *boolCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteBool(*((*bool)(ptr))) +} + +func (codec *boolCodec) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, codec) +} + +func (codec *boolCodec) IsEmpty(ptr unsafe.Pointer) bool { + return !(*((*bool)(ptr))) +} + +type emptyInterfaceCodec struct { +} + +func (codec *emptyInterfaceCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*interface{})(ptr)) = iter.Read() +} + +func (codec *emptyInterfaceCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteVal(*((*interface{})(ptr))) +} + +func (codec *emptyInterfaceCodec) EncodeInterface(val interface{}, stream *Stream) { + stream.WriteVal(val) +} + +func (codec *emptyInterfaceCodec) IsEmpty(ptr unsafe.Pointer) bool { + return ptr == nil +} + +type nonEmptyInterfaceCodec struct { +} + +func (codec *nonEmptyInterfaceCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + nonEmptyInterface := (*nonEmptyInterface)(ptr) + if nonEmptyInterface.itab == nil { + iter.ReportError("read non-empty interface", "do not know which concrete type to decode to") + return + } + var i interface{} + e := (*emptyInterface)(unsafe.Pointer(&i)) + e.typ = nonEmptyInterface.itab.typ + e.word = nonEmptyInterface.word + iter.ReadVal(&i) + nonEmptyInterface.word = e.word +} + +func (codec *nonEmptyInterfaceCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + nonEmptyInterface := (*nonEmptyInterface)(ptr) + var i interface{} + e := (*emptyInterface)(unsafe.Pointer(&i)) + e.typ = nonEmptyInterface.itab.typ + e.word = nonEmptyInterface.word + stream.WriteVal(i) +} + +func (codec *nonEmptyInterfaceCodec) EncodeInterface(val interface{}, stream *Stream) { + stream.WriteVal(val) +} + +func (codec *nonEmptyInterfaceCodec) IsEmpty(ptr unsafe.Pointer) bool { + nonEmptyInterface := (*nonEmptyInterface)(ptr) + return nonEmptyInterface.word == nil +} + +type anyCodec struct { +} + +func (codec *anyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*Any)(ptr)) = iter.ReadAny() +} + +func (codec *anyCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + (*((*Any)(ptr))).WriteTo(stream) +} + +func (codec *anyCodec) EncodeInterface(val interface{}, stream *Stream) { + (val.(Any)).WriteTo(stream) +} + +func (codec *anyCodec) IsEmpty(ptr unsafe.Pointer) bool { + return (*((*Any)(ptr))).Size() == 0 +} + +type jsonNumberCodec struct { +} + +func (codec *jsonNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*json.Number)(ptr)) = json.Number([]byte(iter.readNumberAsString())) +} + +func (codec *jsonNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteRaw(string(*((*json.Number)(ptr)))) +} + +func (codec *jsonNumberCodec) EncodeInterface(val interface{}, stream *Stream) { + stream.WriteRaw(string(val.(json.Number))) +} + +func (codec *jsonNumberCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*json.Number)(ptr))) == 0 +} + +type jsoniterNumberCodec struct { +} + +func (codec *jsoniterNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*Number)(ptr)) = Number([]byte(iter.readNumberAsString())) +} + +func (codec *jsoniterNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteRaw(string(*((*Number)(ptr)))) +} + +func (codec *jsoniterNumberCodec) EncodeInterface(val interface{}, stream *Stream) { + stream.WriteRaw(string(val.(Number))) +} + +func (codec *jsoniterNumberCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*Number)(ptr))) == 0 +} + +type jsonRawMessageCodec struct { +} + +func (codec *jsonRawMessageCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*json.RawMessage)(ptr)) = json.RawMessage(iter.SkipAndReturnBytes()) +} + +func (codec *jsonRawMessageCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteRaw(string(*((*json.RawMessage)(ptr)))) +} + +func (codec *jsonRawMessageCodec) EncodeInterface(val interface{}, stream *Stream) { + stream.WriteRaw(string(val.(json.RawMessage))) +} + +func (codec *jsonRawMessageCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*json.RawMessage)(ptr))) == 0 +} + +type jsoniterRawMessageCodec struct { +} + +func (codec *jsoniterRawMessageCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*RawMessage)(ptr)) = RawMessage(iter.SkipAndReturnBytes()) +} + +func (codec *jsoniterRawMessageCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteRaw(string(*((*RawMessage)(ptr)))) +} + +func (codec *jsoniterRawMessageCodec) EncodeInterface(val interface{}, stream *Stream) { + stream.WriteRaw(string(val.(RawMessage))) +} + +func (codec *jsoniterRawMessageCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*RawMessage)(ptr))) == 0 +} + +type base64Codec struct { + sliceDecoder ValDecoder +} + +func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if iter.ReadNil() { + ptrSlice := (*sliceHeader)(ptr) + ptrSlice.Len = 0 + ptrSlice.Cap = 0 + ptrSlice.Data = nil + return + } + switch iter.WhatIsNext() { + case StringValue: + encoding := base64.StdEncoding + src := iter.SkipAndReturnBytes() + src = src[1 : len(src)-1] + decodedLen := encoding.DecodedLen(len(src)) + dst := make([]byte, decodedLen) + len, err := encoding.Decode(dst, src) + if err != nil { + iter.ReportError("decode base64", err.Error()) + } else { + dst = dst[:len] + dstSlice := (*sliceHeader)(unsafe.Pointer(&dst)) + ptrSlice := (*sliceHeader)(ptr) + ptrSlice.Data = dstSlice.Data + ptrSlice.Cap = dstSlice.Cap + ptrSlice.Len = dstSlice.Len + } + case ArrayValue: + codec.sliceDecoder.Decode(ptr, iter) + default: + iter.ReportError("base64Codec", "invalid input") + } +} + +func (codec *base64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + src := *((*[]byte)(ptr)) + if len(src) == 0 { + stream.WriteNil() + return + } + encoding := base64.StdEncoding + stream.writeByte('"') + toGrow := encoding.EncodedLen(len(src)) + stream.ensure(toGrow) + encoding.Encode(stream.buf[stream.n:], src) + stream.n += toGrow + stream.writeByte('"') +} + +func (codec *base64Codec) EncodeInterface(val interface{}, stream *Stream) { + ptr := extractInterface(val).word + src := *((*[]byte)(ptr)) + if len(src) == 0 { + stream.WriteNil() + return + } + encoding := base64.StdEncoding + stream.writeByte('"') + toGrow := encoding.EncodedLen(len(src)) + stream.ensure(toGrow) + encoding.Encode(stream.buf[stream.n:], src) + stream.n += toGrow + stream.writeByte('"') +} + +func (codec *base64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*[]byte)(ptr))) == 0 +} + +type stringModeNumberDecoder struct { + elemDecoder ValDecoder +} + +func (decoder *stringModeNumberDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + c := iter.nextToken() + if c != '"' { + iter.ReportError("stringModeNumberDecoder", `expect "`) + return + } + decoder.elemDecoder.Decode(ptr, iter) + if iter.Error != nil { + return + } + c = iter.readByte() + if c != '"' { + iter.ReportError("stringModeNumberDecoder", `expect "`) + return + } +} + +type stringModeStringDecoder struct { + elemDecoder ValDecoder + cfg *frozenConfig +} + +func (decoder *stringModeStringDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.elemDecoder.Decode(ptr, iter) + str := *((*string)(ptr)) + tempIter := decoder.cfg.BorrowIterator([]byte(str)) + defer decoder.cfg.ReturnIterator(tempIter) + *((*string)(ptr)) = tempIter.ReadString() +} + +type stringModeNumberEncoder struct { + elemEncoder ValEncoder +} + +func (encoder *stringModeNumberEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.writeByte('"') + encoder.elemEncoder.Encode(ptr, stream) + stream.writeByte('"') +} + +func (encoder *stringModeNumberEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *stringModeNumberEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.elemEncoder.IsEmpty(ptr) +} + +type stringModeStringEncoder struct { + elemEncoder ValEncoder + cfg *frozenConfig +} + +func (encoder *stringModeStringEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + tempStream := encoder.cfg.BorrowStream(nil) + defer encoder.cfg.ReturnStream(tempStream) + encoder.elemEncoder.Encode(ptr, tempStream) + stream.WriteString(string(tempStream.Buffer())) +} + +func (encoder *stringModeStringEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *stringModeStringEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.elemEncoder.IsEmpty(ptr) +} + +type marshalerEncoder struct { + templateInterface emptyInterface + checkIsEmpty checkIsEmpty +} + +func (encoder *marshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + templateInterface := encoder.templateInterface + templateInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&templateInterface)) + marshaler := (*realInterface).(json.Marshaler) + bytes, err := marshaler.MarshalJSON() + if err != nil { + stream.Error = err + } else { + stream.Write(bytes) + } +} +func (encoder *marshalerEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *marshalerEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.checkIsEmpty.IsEmpty(ptr) +} + +type textMarshalerEncoder struct { + templateInterface emptyInterface + checkIsEmpty checkIsEmpty +} + +func (encoder *textMarshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + templateInterface := encoder.templateInterface + templateInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&templateInterface)) + marshaler := (*realInterface).(encoding.TextMarshaler) + bytes, err := marshaler.MarshalText() + if err != nil { + stream.Error = err + } else { + stream.WriteString(string(bytes)) + } +} + +func (encoder *textMarshalerEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *textMarshalerEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.checkIsEmpty.IsEmpty(ptr) +} + +type unmarshalerDecoder struct { + templateInterface emptyInterface +} + +func (decoder *unmarshalerDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + templateInterface := decoder.templateInterface + templateInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&templateInterface)) + unmarshaler := (*realInterface).(json.Unmarshaler) + iter.nextToken() + iter.unreadByte() // skip spaces + bytes := iter.SkipAndReturnBytes() + err := unmarshaler.UnmarshalJSON(bytes) + if err != nil { + iter.ReportError("unmarshalerDecoder", err.Error()) + } +} + +type textUnmarshalerDecoder struct { + templateInterface emptyInterface +} + +func (decoder *textUnmarshalerDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + templateInterface := decoder.templateInterface + templateInterface.word = ptr + realInterface := (*interface{})(unsafe.Pointer(&templateInterface)) + unmarshaler := (*realInterface).(encoding.TextUnmarshaler) + str := iter.ReadString() + err := unmarshaler.UnmarshalText([]byte(str)) + if err != nil { + iter.ReportError("textUnmarshalerDecoder", err.Error()) + } +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_object.go b/vendor/github.com/json-iterator/go/feature_reflect_object.go new file mode 100644 index 0000000000..59b1235c0d --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_object.go @@ -0,0 +1,196 @@ +package jsoniter + +import ( + "fmt" + "io" + "reflect" + "strings" + "unsafe" +) + +func encoderOfStruct(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + type bindingTo struct { + binding *Binding + toName string + ignored bool + } + orderedBindings := []*bindingTo{} + structDescriptor, err := describeStruct(cfg, typ) + if err != nil { + return nil, err + } + for _, binding := range structDescriptor.Fields { + for _, toName := range binding.ToNames { + new := &bindingTo{ + binding: binding, + toName: toName, + } + for _, old := range orderedBindings { + if old.toName != toName { + continue + } + old.ignored, new.ignored = resolveConflictBinding(cfg, old.binding, new.binding) + } + orderedBindings = append(orderedBindings, new) + } + } + if len(orderedBindings) == 0 { + return &emptyStructEncoder{}, nil + } + finalOrderedFields := []structFieldTo{} + for _, bindingTo := range orderedBindings { + if !bindingTo.ignored { + finalOrderedFields = append(finalOrderedFields, structFieldTo{ + encoder: bindingTo.binding.Encoder.(*structFieldEncoder), + toName: bindingTo.toName, + }) + } + } + return &structEncoder{structDescriptor.onePtrEmbedded, structDescriptor.onePtrOptimization, finalOrderedFields}, nil +} + +func resolveConflictBinding(cfg *frozenConfig, old, new *Binding) (ignoreOld, ignoreNew bool) { + newTagged := new.Field.Tag.Get(cfg.getTagKey()) != "" + oldTagged := old.Field.Tag.Get(cfg.getTagKey()) != "" + if newTagged { + if oldTagged { + if len(old.levels) > len(new.levels) { + return true, false + } else if len(new.levels) > len(old.levels) { + return false, true + } else { + return true, true + } + } else { + return true, false + } + } else { + if oldTagged { + return true, false + } + if len(old.levels) > len(new.levels) { + return true, false + } else if len(new.levels) > len(old.levels) { + return false, true + } else { + return true, true + } + } +} + +func decoderOfStruct(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + bindings := map[string]*Binding{} + structDescriptor, err := describeStruct(cfg, typ) + if err != nil { + return nil, err + } + for _, binding := range structDescriptor.Fields { + for _, fromName := range binding.FromNames { + old := bindings[fromName] + if old == nil { + bindings[fromName] = binding + continue + } + ignoreOld, ignoreNew := resolveConflictBinding(cfg, old, binding) + if ignoreOld { + delete(bindings, fromName) + } + if !ignoreNew { + bindings[fromName] = binding + } + } + } + fields := map[string]*structFieldDecoder{} + for k, binding := range bindings { + fields[strings.ToLower(k)] = binding.Decoder.(*structFieldDecoder) + } + return createStructDecoder(typ, fields) +} + +type structFieldEncoder struct { + field *reflect.StructField + fieldEncoder ValEncoder + omitempty bool +} + +func (encoder *structFieldEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + fieldPtr := unsafe.Pointer(uintptr(ptr) + encoder.field.Offset) + encoder.fieldEncoder.Encode(fieldPtr, stream) + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%s: %s", encoder.field.Name, stream.Error.Error()) + } +} + +func (encoder *structFieldEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *structFieldEncoder) IsEmpty(ptr unsafe.Pointer) bool { + fieldPtr := unsafe.Pointer(uintptr(ptr) + encoder.field.Offset) + return encoder.fieldEncoder.IsEmpty(fieldPtr) +} + +type structEncoder struct { + onePtrEmbedded bool + onePtrOptimization bool + fields []structFieldTo +} + +type structFieldTo struct { + encoder *structFieldEncoder + toName string +} + +func (encoder *structEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteObjectStart() + isNotFirst := false + for _, field := range encoder.fields { + if field.encoder.omitempty && field.encoder.IsEmpty(ptr) { + continue + } + if isNotFirst { + stream.WriteMore() + } + stream.WriteObjectField(field.toName) + field.encoder.Encode(ptr, stream) + isNotFirst = true + } + stream.WriteObjectEnd() +} + +func (encoder *structEncoder) EncodeInterface(val interface{}, stream *Stream) { + e := (*emptyInterface)(unsafe.Pointer(&val)) + if encoder.onePtrOptimization { + if e.word == nil && encoder.onePtrEmbedded { + stream.WriteObjectStart() + stream.WriteObjectEnd() + return + } + ptr := uintptr(e.word) + e.word = unsafe.Pointer(&ptr) + } + if reflect.TypeOf(val).Kind() == reflect.Ptr { + encoder.Encode(unsafe.Pointer(&e.word), stream) + } else { + encoder.Encode(e.word, stream) + } +} + +func (encoder *structEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type emptyStructEncoder struct { +} + +func (encoder *emptyStructEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteEmptyObject() +} + +func (encoder *emptyStructEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *emptyStructEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_slice.go b/vendor/github.com/json-iterator/go/feature_reflect_slice.go new file mode 100644 index 0000000000..7377eec7b3 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_slice.go @@ -0,0 +1,149 @@ +package jsoniter + +import ( + "fmt" + "io" + "reflect" + "unsafe" +) + +func decoderOfSlice(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) { + decoder, err := decoderOfType(cfg, typ.Elem()) + if err != nil { + return nil, err + } + return &sliceDecoder{typ, typ.Elem(), decoder}, nil +} + +func encoderOfSlice(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) { + encoder, err := encoderOfType(cfg, typ.Elem()) + if err != nil { + return nil, err + } + if typ.Elem().Kind() == reflect.Map { + encoder = &optionalEncoder{encoder} + } + return &sliceEncoder{typ, typ.Elem(), encoder}, nil +} + +type sliceEncoder struct { + sliceType reflect.Type + elemType reflect.Type + elemEncoder ValEncoder +} + +func (encoder *sliceEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + slice := (*sliceHeader)(ptr) + if slice.Data == nil { + stream.WriteNil() + return + } + if slice.Len == 0 { + stream.WriteEmptyArray() + return + } + stream.WriteArrayStart() + elemPtr := unsafe.Pointer(slice.Data) + encoder.elemEncoder.Encode(unsafe.Pointer(elemPtr), stream) + for i := 1; i < slice.Len; i++ { + stream.WriteMore() + elemPtr = unsafe.Pointer(uintptr(elemPtr) + encoder.elemType.Size()) + encoder.elemEncoder.Encode(unsafe.Pointer(elemPtr), stream) + } + stream.WriteArrayEnd() + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%v: %s", encoder.sliceType, stream.Error.Error()) + } +} + +func (encoder *sliceEncoder) EncodeInterface(val interface{}, stream *Stream) { + WriteToStream(val, stream, encoder) +} + +func (encoder *sliceEncoder) IsEmpty(ptr unsafe.Pointer) bool { + slice := (*sliceHeader)(ptr) + return slice.Len == 0 +} + +type sliceDecoder struct { + sliceType reflect.Type + elemType reflect.Type + elemDecoder ValDecoder +} + +// sliceHeader is a safe version of SliceHeader used within this package. +type sliceHeader struct { + Data unsafe.Pointer + Len int + Cap int +} + +func (decoder *sliceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.doDecode(ptr, iter) + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.sliceType, iter.Error.Error()) + } +} + +func (decoder *sliceDecoder) doDecode(ptr unsafe.Pointer, iter *Iterator) { + slice := (*sliceHeader)(ptr) + if iter.ReadNil() { + slice.Len = 0 + slice.Cap = 0 + slice.Data = nil + return + } + reuseSlice(slice, decoder.sliceType, 4) + slice.Len = 0 + offset := uintptr(0) + iter.ReadArrayCB(func(iter *Iterator) bool { + growOne(slice, decoder.sliceType, decoder.elemType) + decoder.elemDecoder.Decode(unsafe.Pointer(uintptr(slice.Data)+offset), iter) + offset += decoder.elemType.Size() + return true + }) +} + +// grow grows the slice s so that it can hold extra more values, allocating +// more capacity if needed. It also returns the old and new slice lengths. +func growOne(slice *sliceHeader, sliceType reflect.Type, elementType reflect.Type) { + newLen := slice.Len + 1 + if newLen <= slice.Cap { + slice.Len = newLen + return + } + newCap := slice.Cap + if newCap == 0 { + newCap = 1 + } else { + for newCap < newLen { + if slice.Len < 1024 { + newCap += newCap + } else { + newCap += newCap / 4 + } + } + } + newVal := reflect.MakeSlice(sliceType, newLen, newCap) + dst := unsafe.Pointer(newVal.Pointer()) + // copy old array into new array + originalBytesCount := uintptr(slice.Len) * elementType.Size() + srcPtr := (*[1 << 30]byte)(slice.Data) + dstPtr := (*[1 << 30]byte)(dst) + for i := uintptr(0); i < originalBytesCount; i++ { + dstPtr[i] = srcPtr[i] + } + slice.Data = dst + slice.Len = newLen + slice.Cap = newCap +} + +func reuseSlice(slice *sliceHeader, sliceType reflect.Type, expectedCap int) { + if expectedCap <= slice.Cap { + return + } + newVal := reflect.MakeSlice(sliceType, 0, expectedCap) + dst := unsafe.Pointer(newVal.Pointer()) + slice.Data = dst + slice.Cap = expectedCap +} diff --git a/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go b/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go new file mode 100644 index 0000000000..b3417fd73a --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go @@ -0,0 +1,916 @@ +package jsoniter + +import ( + "fmt" + "io" + "reflect" + "strings" + "unsafe" +) + +func createStructDecoder(typ reflect.Type, fields map[string]*structFieldDecoder) (ValDecoder, error) { + knownHash := map[int32]struct{}{ + 0: {}, + } + switch len(fields) { + case 0: + return &skipObjectDecoder{typ}, nil + case 1: + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + return &oneFieldStructDecoder{typ, fieldHash, fieldDecoder}, nil + } + case 2: + var fieldHash1 int32 + var fieldHash2 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldHash1 == 0 { + fieldHash1 = fieldHash + fieldDecoder1 = fieldDecoder + } else { + fieldHash2 = fieldHash + fieldDecoder2 = fieldDecoder + } + } + return &twoFieldsStructDecoder{typ, fieldHash1, fieldDecoder1, fieldHash2, fieldDecoder2}, nil + case 3: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } + } + return &threeFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3}, nil + case 4: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } + } + return &fourFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4}, nil + case 5: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldName5 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } + } + return &fiveFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, fieldName5, fieldDecoder5}, nil + case 6: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldName5 int32 + var fieldName6 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } + } + return &sixFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, fieldName5, fieldDecoder5, fieldName6, fieldDecoder6}, nil + case 7: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldName5 int32 + var fieldName6 int32 + var fieldName7 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } + } + return &sevenFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, fieldName5, fieldDecoder5, fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7}, nil + case 8: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldName5 int32 + var fieldName6 int32 + var fieldName7 int32 + var fieldName8 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + var fieldDecoder8 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else if fieldName7 == 0 { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } else { + fieldName8 = fieldHash + fieldDecoder8 = fieldDecoder + } + } + return &eightFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, fieldName5, fieldDecoder5, fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7, fieldName8, fieldDecoder8}, nil + case 9: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldName5 int32 + var fieldName6 int32 + var fieldName7 int32 + var fieldName8 int32 + var fieldName9 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + var fieldDecoder8 *structFieldDecoder + var fieldDecoder9 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else if fieldName7 == 0 { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } else if fieldName8 == 0 { + fieldName8 = fieldHash + fieldDecoder8 = fieldDecoder + } else { + fieldName9 = fieldHash + fieldDecoder9 = fieldDecoder + } + } + return &nineFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, fieldName5, fieldDecoder5, fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7, fieldName8, fieldDecoder8, fieldName9, fieldDecoder9}, nil + case 10: + var fieldName1 int32 + var fieldName2 int32 + var fieldName3 int32 + var fieldName4 int32 + var fieldName5 int32 + var fieldName6 int32 + var fieldName7 int32 + var fieldName8 int32 + var fieldName9 int32 + var fieldName10 int32 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + var fieldDecoder8 *structFieldDecoder + var fieldDecoder9 *structFieldDecoder + var fieldDecoder10 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields}, nil + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else if fieldName7 == 0 { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } else if fieldName8 == 0 { + fieldName8 = fieldHash + fieldDecoder8 = fieldDecoder + } else if fieldName9 == 0 { + fieldName9 = fieldHash + fieldDecoder9 = fieldDecoder + } else { + fieldName10 = fieldHash + fieldDecoder10 = fieldDecoder + } + } + return &tenFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, fieldName2, fieldDecoder2, fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, fieldName5, fieldDecoder5, fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7, fieldName8, fieldDecoder8, fieldName9, fieldDecoder9, + fieldName10, fieldDecoder10}, nil + } + return &generalStructDecoder{typ, fields}, nil +} + +type generalStructDecoder struct { + typ reflect.Type + fields map[string]*structFieldDecoder +} + +func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + fieldBytes := iter.readObjectFieldAsBytes() + field := *(*string)(unsafe.Pointer(&fieldBytes)) + fieldDecoder := decoder.fields[strings.ToLower(field)] + if fieldDecoder == nil { + iter.Skip() + } else { + fieldDecoder.Decode(ptr, iter) + } + for iter.nextToken() == ',' { + fieldBytes = iter.readObjectFieldAsBytes() + field = *(*string)(unsafe.Pointer(&fieldBytes)) + fieldDecoder = decoder.fields[strings.ToLower(field)] + if fieldDecoder == nil { + iter.Skip() + } else { + fieldDecoder.Decode(ptr, iter) + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type skipObjectDecoder struct { + typ reflect.Type +} + +func (decoder *skipObjectDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + valueType := iter.WhatIsNext() + if valueType != ObjectValue && valueType != NilValue { + iter.ReportError("skipObjectDecoder", "expect object or null") + return + } + iter.Skip() +} + +type oneFieldStructDecoder struct { + typ reflect.Type + fieldHash int32 + fieldDecoder *structFieldDecoder +} + +func (decoder *oneFieldStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + if iter.readFieldHash() == decoder.fieldHash { + decoder.fieldDecoder.Decode(ptr, iter) + } else { + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type twoFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder +} + +func (decoder *twoFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type threeFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder +} + +func (decoder *threeFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type fourFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder +} + +func (decoder *fourFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type fiveFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder + fieldHash5 int32 + fieldDecoder5 *structFieldDecoder +} + +func (decoder *fiveFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type sixFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder + fieldHash5 int32 + fieldDecoder5 *structFieldDecoder + fieldHash6 int32 + fieldDecoder6 *structFieldDecoder +} + +func (decoder *sixFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type sevenFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder + fieldHash5 int32 + fieldDecoder5 *structFieldDecoder + fieldHash6 int32 + fieldDecoder6 *structFieldDecoder + fieldHash7 int32 + fieldDecoder7 *structFieldDecoder +} + +func (decoder *sevenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type eightFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder + fieldHash5 int32 + fieldDecoder5 *structFieldDecoder + fieldHash6 int32 + fieldDecoder6 *structFieldDecoder + fieldHash7 int32 + fieldDecoder7 *structFieldDecoder + fieldHash8 int32 + fieldDecoder8 *structFieldDecoder +} + +func (decoder *eightFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + case decoder.fieldHash8: + decoder.fieldDecoder8.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type nineFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder + fieldHash5 int32 + fieldDecoder5 *structFieldDecoder + fieldHash6 int32 + fieldDecoder6 *structFieldDecoder + fieldHash7 int32 + fieldDecoder7 *structFieldDecoder + fieldHash8 int32 + fieldDecoder8 *structFieldDecoder + fieldHash9 int32 + fieldDecoder9 *structFieldDecoder +} + +func (decoder *nineFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + case decoder.fieldHash8: + decoder.fieldDecoder8.Decode(ptr, iter) + case decoder.fieldHash9: + decoder.fieldDecoder9.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type tenFieldsStructDecoder struct { + typ reflect.Type + fieldHash1 int32 + fieldDecoder1 *structFieldDecoder + fieldHash2 int32 + fieldDecoder2 *structFieldDecoder + fieldHash3 int32 + fieldDecoder3 *structFieldDecoder + fieldHash4 int32 + fieldDecoder4 *structFieldDecoder + fieldHash5 int32 + fieldDecoder5 *structFieldDecoder + fieldHash6 int32 + fieldDecoder6 *structFieldDecoder + fieldHash7 int32 + fieldDecoder7 *structFieldDecoder + fieldHash8 int32 + fieldDecoder8 *structFieldDecoder + fieldHash9 int32 + fieldDecoder9 *structFieldDecoder + fieldHash10 int32 + fieldDecoder10 *structFieldDecoder +} + +func (decoder *tenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + case decoder.fieldHash8: + decoder.fieldDecoder8.Decode(ptr, iter) + case decoder.fieldHash9: + decoder.fieldDecoder9.Decode(ptr, iter) + case decoder.fieldHash10: + decoder.fieldDecoder10.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.typ, iter.Error.Error()) + } +} + +type structFieldDecoder struct { + field *reflect.StructField + fieldDecoder ValDecoder +} + +func (decoder *structFieldDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + fieldPtr := unsafe.Pointer(uintptr(ptr) + decoder.field.Offset) + decoder.fieldDecoder.Decode(fieldPtr, iter) + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%s: %s", decoder.field.Name, iter.Error.Error()) + } +} diff --git a/vendor/github.com/json-iterator/go/feature_stream.go b/vendor/github.com/json-iterator/go/feature_stream.go new file mode 100644 index 0000000000..9c8470a03a --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_stream.go @@ -0,0 +1,305 @@ +package jsoniter + +import ( + "io" +) + +// Stream is a io.Writer like object, with JSON specific write functions. +// Error is not returned as return value, but stored as Error member on this stream instance. +type Stream struct { + cfg *frozenConfig + out io.Writer + buf []byte + n int + Error error + indention int +} + +// NewStream create new stream instance. +// cfg can be jsoniter.ConfigDefault. +// out can be nil if write to internal buffer. +// bufSize is the initial size for the internal buffer in bytes. +func NewStream(cfg API, out io.Writer, bufSize int) *Stream { + return &Stream{ + cfg: cfg.(*frozenConfig), + out: out, + buf: make([]byte, bufSize), + n: 0, + Error: nil, + indention: 0, + } +} + +// Pool returns a pool can provide more stream with same configuration +func (stream *Stream) Pool() StreamPool { + return stream.cfg +} + +// Reset reuse this stream instance by assign a new writer +func (stream *Stream) Reset(out io.Writer) { + stream.out = out + stream.n = 0 +} + +// Available returns how many bytes are unused in the buffer. +func (stream *Stream) Available() int { + return len(stream.buf) - stream.n +} + +// Buffered returns the number of bytes that have been written into the current buffer. +func (stream *Stream) Buffered() int { + return stream.n +} + +// Buffer if writer is nil, use this method to take the result +func (stream *Stream) Buffer() []byte { + return stream.buf[:stream.n] +} + +// Write writes the contents of p into the buffer. +// It returns the number of bytes written. +// If nn < len(p), it also returns an error explaining +// why the write is short. +func (stream *Stream) Write(p []byte) (nn int, err error) { + for len(p) > stream.Available() && stream.Error == nil { + if stream.out == nil { + stream.growAtLeast(len(p)) + } else { + var n int + if stream.Buffered() == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, stream.Error = stream.out.Write(p) + } else { + n = copy(stream.buf[stream.n:], p) + stream.n += n + stream.Flush() + } + nn += n + p = p[n:] + } + } + if stream.Error != nil { + return nn, stream.Error + } + n := copy(stream.buf[stream.n:], p) + stream.n += n + nn += n + return nn, nil +} + +// WriteByte writes a single byte. +func (stream *Stream) writeByte(c byte) { + if stream.Error != nil { + return + } + if stream.Available() < 1 { + stream.growAtLeast(1) + } + stream.buf[stream.n] = c + stream.n++ +} + +func (stream *Stream) writeTwoBytes(c1 byte, c2 byte) { + if stream.Error != nil { + return + } + if stream.Available() < 2 { + stream.growAtLeast(2) + } + stream.buf[stream.n] = c1 + stream.buf[stream.n+1] = c2 + stream.n += 2 +} + +func (stream *Stream) writeThreeBytes(c1 byte, c2 byte, c3 byte) { + if stream.Error != nil { + return + } + if stream.Available() < 3 { + stream.growAtLeast(3) + } + stream.buf[stream.n] = c1 + stream.buf[stream.n+1] = c2 + stream.buf[stream.n+2] = c3 + stream.n += 3 +} + +func (stream *Stream) writeFourBytes(c1 byte, c2 byte, c3 byte, c4 byte) { + if stream.Error != nil { + return + } + if stream.Available() < 4 { + stream.growAtLeast(4) + } + stream.buf[stream.n] = c1 + stream.buf[stream.n+1] = c2 + stream.buf[stream.n+2] = c3 + stream.buf[stream.n+3] = c4 + stream.n += 4 +} + +func (stream *Stream) writeFiveBytes(c1 byte, c2 byte, c3 byte, c4 byte, c5 byte) { + if stream.Error != nil { + return + } + if stream.Available() < 5 { + stream.growAtLeast(5) + } + stream.buf[stream.n] = c1 + stream.buf[stream.n+1] = c2 + stream.buf[stream.n+2] = c3 + stream.buf[stream.n+3] = c4 + stream.buf[stream.n+4] = c5 + stream.n += 5 +} + +// Flush writes any buffered data to the underlying io.Writer. +func (stream *Stream) Flush() error { + if stream.out == nil { + return nil + } + if stream.Error != nil { + return stream.Error + } + if stream.n == 0 { + return nil + } + n, err := stream.out.Write(stream.buf[0:stream.n]) + if n < stream.n && err == nil { + err = io.ErrShortWrite + } + if err != nil { + if n > 0 && n < stream.n { + copy(stream.buf[0:stream.n-n], stream.buf[n:stream.n]) + } + stream.n -= n + stream.Error = err + return err + } + stream.n = 0 + return nil +} + +func (stream *Stream) ensure(minimal int) { + available := stream.Available() + if available < minimal { + stream.growAtLeast(minimal) + } +} + +func (stream *Stream) growAtLeast(minimal int) { + if stream.out != nil { + stream.Flush() + } + toGrow := len(stream.buf) + if toGrow < minimal { + toGrow = minimal + } + newBuf := make([]byte, len(stream.buf)+toGrow) + copy(newBuf, stream.Buffer()) + stream.buf = newBuf +} + +// WriteRaw write string out without quotes, just like []byte +func (stream *Stream) WriteRaw(s string) { + stream.ensure(len(s)) + if stream.Error != nil { + return + } + n := copy(stream.buf[stream.n:], s) + stream.n += n +} + +// WriteNil write null to stream +func (stream *Stream) WriteNil() { + stream.writeFourBytes('n', 'u', 'l', 'l') +} + +// WriteTrue write true to stream +func (stream *Stream) WriteTrue() { + stream.writeFourBytes('t', 'r', 'u', 'e') +} + +// WriteFalse write false to stream +func (stream *Stream) WriteFalse() { + stream.writeFiveBytes('f', 'a', 'l', 's', 'e') +} + +// WriteBool write true or false into stream +func (stream *Stream) WriteBool(val bool) { + if val { + stream.WriteTrue() + } else { + stream.WriteFalse() + } +} + +// WriteObjectStart write { with possible indention +func (stream *Stream) WriteObjectStart() { + stream.indention += stream.cfg.indentionStep + stream.writeByte('{') + stream.writeIndention(0) +} + +// WriteObjectField write "field": with possible indention +func (stream *Stream) WriteObjectField(field string) { + stream.WriteString(field) + if stream.indention > 0 { + stream.writeTwoBytes(':', ' ') + } else { + stream.writeByte(':') + } +} + +// WriteObjectEnd write } with possible indention +func (stream *Stream) WriteObjectEnd() { + stream.writeIndention(stream.cfg.indentionStep) + stream.indention -= stream.cfg.indentionStep + stream.writeByte('}') +} + +// WriteEmptyObject write {} +func (stream *Stream) WriteEmptyObject() { + stream.writeByte('{') + stream.writeByte('}') +} + +// WriteMore write , with possible indention +func (stream *Stream) WriteMore() { + stream.writeByte(',') + stream.writeIndention(0) +} + +// WriteArrayStart write [ with possible indention +func (stream *Stream) WriteArrayStart() { + stream.indention += stream.cfg.indentionStep + stream.writeByte('[') + stream.writeIndention(0) +} + +// WriteEmptyArray write [] +func (stream *Stream) WriteEmptyArray() { + stream.writeByte('[') + stream.writeByte(']') +} + +// WriteArrayEnd write ] with possible indention +func (stream *Stream) WriteArrayEnd() { + stream.writeIndention(stream.cfg.indentionStep) + stream.indention -= stream.cfg.indentionStep + stream.writeByte(']') +} + +func (stream *Stream) writeIndention(delta int) { + if stream.indention == 0 { + return + } + stream.writeByte('\n') + toWrite := stream.indention - delta + stream.ensure(toWrite) + for i := 0; i < toWrite && stream.n < len(stream.buf); i++ { + stream.buf[stream.n] = ' ' + stream.n++ + } +} diff --git a/vendor/github.com/json-iterator/go/feature_stream_float.go b/vendor/github.com/json-iterator/go/feature_stream_float.go new file mode 100644 index 0000000000..9a404e11d4 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_stream_float.go @@ -0,0 +1,96 @@ +package jsoniter + +import ( + "math" + "strconv" +) + +var pow10 []uint64 + +func init() { + pow10 = []uint64{1, 10, 100, 1000, 10000, 100000, 1000000} +} + +// WriteFloat32 write float32 to stream +func (stream *Stream) WriteFloat32(val float32) { + abs := math.Abs(float64(val)) + fmt := byte('f') + // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. + if abs != 0 { + if float32(abs) < 1e-6 || float32(abs) >= 1e21 { + fmt = 'e' + } + } + stream.WriteRaw(strconv.FormatFloat(float64(val), fmt, -1, 32)) +} + +// WriteFloat32Lossy write float32 to stream with ONLY 6 digits precision although much much faster +func (stream *Stream) WriteFloat32Lossy(val float32) { + if val < 0 { + stream.writeByte('-') + val = -val + } + if val > 0x4ffffff { + stream.WriteFloat32(val) + return + } + precision := 6 + exp := uint64(1000000) // 6 + lval := uint64(float64(val)*float64(exp) + 0.5) + stream.WriteUint64(lval / exp) + fval := lval % exp + if fval == 0 { + return + } + stream.writeByte('.') + stream.ensure(10) + for p := precision - 1; p > 0 && fval < pow10[p]; p-- { + stream.writeByte('0') + } + stream.WriteUint64(fval) + for stream.buf[stream.n-1] == '0' { + stream.n-- + } +} + +// WriteFloat64 write float64 to stream +func (stream *Stream) WriteFloat64(val float64) { + abs := math.Abs(val) + fmt := byte('f') + // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. + if abs != 0 { + if abs < 1e-6 || abs >= 1e21 { + fmt = 'e' + } + } + stream.WriteRaw(strconv.FormatFloat(float64(val), fmt, -1, 64)) +} + +// WriteFloat64Lossy write float64 to stream with ONLY 6 digits precision although much much faster +func (stream *Stream) WriteFloat64Lossy(val float64) { + if val < 0 { + stream.writeByte('-') + val = -val + } + if val > 0x4ffffff { + stream.WriteFloat64(val) + return + } + precision := 6 + exp := uint64(1000000) // 6 + lval := uint64(val*float64(exp) + 0.5) + stream.WriteUint64(lval / exp) + fval := lval % exp + if fval == 0 { + return + } + stream.writeByte('.') + stream.ensure(10) + for p := precision - 1; p > 0 && fval < pow10[p]; p-- { + stream.writeByte('0') + } + stream.WriteUint64(fval) + for stream.buf[stream.n-1] == '0' { + stream.n-- + } +} diff --git a/vendor/github.com/json-iterator/go/feature_stream_int.go b/vendor/github.com/json-iterator/go/feature_stream_int.go new file mode 100644 index 0000000000..7cfd522c10 --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_stream_int.go @@ -0,0 +1,320 @@ +package jsoniter + +var digits []uint32 + +func init() { + digits = make([]uint32, 1000) + for i := uint32(0); i < 1000; i++ { + digits[i] = (((i / 100) + '0') << 16) + ((((i / 10) % 10) + '0') << 8) + i%10 + '0' + if i < 10 { + digits[i] += 2 << 24 + } else if i < 100 { + digits[i] += 1 << 24 + } + } +} + +func writeFirstBuf(buf []byte, v uint32, n int) int { + start := v >> 24 + if start == 0 { + buf[n] = byte(v >> 16) + n++ + buf[n] = byte(v >> 8) + n++ + } else if start == 1 { + buf[n] = byte(v >> 8) + n++ + } + buf[n] = byte(v) + n++ + return n +} + +func writeBuf(buf []byte, v uint32, n int) { + buf[n] = byte(v >> 16) + buf[n+1] = byte(v >> 8) + buf[n+2] = byte(v) +} + +// WriteUint8 write uint8 to stream +func (stream *Stream) WriteUint8(val uint8) { + stream.ensure(3) + stream.n = writeFirstBuf(stream.buf, digits[val], stream.n) +} + +// WriteInt8 write int8 to stream +func (stream *Stream) WriteInt8(nval int8) { + stream.ensure(4) + n := stream.n + var val uint8 + if nval < 0 { + val = uint8(-nval) + stream.buf[n] = '-' + n++ + } else { + val = uint8(nval) + } + stream.n = writeFirstBuf(stream.buf, digits[val], n) +} + +// WriteUint16 write uint16 to stream +func (stream *Stream) WriteUint16(val uint16) { + stream.ensure(5) + q1 := val / 1000 + if q1 == 0 { + stream.n = writeFirstBuf(stream.buf, digits[val], stream.n) + return + } + r1 := val - q1*1000 + n := writeFirstBuf(stream.buf, digits[q1], stream.n) + writeBuf(stream.buf, digits[r1], n) + stream.n = n + 3 + return +} + +// WriteInt16 write int16 to stream +func (stream *Stream) WriteInt16(nval int16) { + stream.ensure(6) + n := stream.n + var val uint16 + if nval < 0 { + val = uint16(-nval) + stream.buf[n] = '-' + n++ + } else { + val = uint16(nval) + } + q1 := val / 1000 + if q1 == 0 { + stream.n = writeFirstBuf(stream.buf, digits[val], n) + return + } + r1 := val - q1*1000 + n = writeFirstBuf(stream.buf, digits[q1], n) + writeBuf(stream.buf, digits[r1], n) + stream.n = n + 3 + return +} + +// WriteUint32 write uint32 to stream +func (stream *Stream) WriteUint32(val uint32) { + stream.ensure(10) + n := stream.n + q1 := val / 1000 + if q1 == 0 { + stream.n = writeFirstBuf(stream.buf, digits[val], n) + return + } + r1 := val - q1*1000 + q2 := q1 / 1000 + if q2 == 0 { + n := writeFirstBuf(stream.buf, digits[q1], n) + writeBuf(stream.buf, digits[r1], n) + stream.n = n + 3 + return + } + r2 := q1 - q2*1000 + q3 := q2 / 1000 + if q3 == 0 { + n = writeFirstBuf(stream.buf, digits[q2], n) + } else { + r3 := q2 - q3*1000 + stream.buf[n] = byte(q3 + '0') + n++ + writeBuf(stream.buf, digits[r3], n) + n += 3 + } + writeBuf(stream.buf, digits[r2], n) + writeBuf(stream.buf, digits[r1], n+3) + stream.n = n + 6 +} + +// WriteInt32 write int32 to stream +func (stream *Stream) WriteInt32(nval int32) { + stream.ensure(11) + n := stream.n + var val uint32 + if nval < 0 { + val = uint32(-nval) + stream.buf[n] = '-' + n++ + } else { + val = uint32(nval) + } + q1 := val / 1000 + if q1 == 0 { + stream.n = writeFirstBuf(stream.buf, digits[val], n) + return + } + r1 := val - q1*1000 + q2 := q1 / 1000 + if q2 == 0 { + n := writeFirstBuf(stream.buf, digits[q1], n) + writeBuf(stream.buf, digits[r1], n) + stream.n = n + 3 + return + } + r2 := q1 - q2*1000 + q3 := q2 / 1000 + if q3 == 0 { + n = writeFirstBuf(stream.buf, digits[q2], n) + } else { + r3 := q2 - q3*1000 + stream.buf[n] = byte(q3 + '0') + n++ + writeBuf(stream.buf, digits[r3], n) + n += 3 + } + writeBuf(stream.buf, digits[r2], n) + writeBuf(stream.buf, digits[r1], n+3) + stream.n = n + 6 +} + +// WriteUint64 write uint64 to stream +func (stream *Stream) WriteUint64(val uint64) { + stream.ensure(20) + n := stream.n + q1 := val / 1000 + if q1 == 0 { + stream.n = writeFirstBuf(stream.buf, digits[val], n) + return + } + r1 := val - q1*1000 + q2 := q1 / 1000 + if q2 == 0 { + n := writeFirstBuf(stream.buf, digits[q1], n) + writeBuf(stream.buf, digits[r1], n) + stream.n = n + 3 + return + } + r2 := q1 - q2*1000 + q3 := q2 / 1000 + if q3 == 0 { + n = writeFirstBuf(stream.buf, digits[q2], n) + writeBuf(stream.buf, digits[r2], n) + writeBuf(stream.buf, digits[r1], n+3) + stream.n = n + 6 + return + } + r3 := q2 - q3*1000 + q4 := q3 / 1000 + if q4 == 0 { + n = writeFirstBuf(stream.buf, digits[q3], n) + writeBuf(stream.buf, digits[r3], n) + writeBuf(stream.buf, digits[r2], n+3) + writeBuf(stream.buf, digits[r1], n+6) + stream.n = n + 9 + return + } + r4 := q3 - q4*1000 + q5 := q4 / 1000 + if q5 == 0 { + n = writeFirstBuf(stream.buf, digits[q4], n) + writeBuf(stream.buf, digits[r4], n) + writeBuf(stream.buf, digits[r3], n+3) + writeBuf(stream.buf, digits[r2], n+6) + writeBuf(stream.buf, digits[r1], n+9) + stream.n = n + 12 + return + } + r5 := q4 - q5*1000 + q6 := q5 / 1000 + if q6 == 0 { + n = writeFirstBuf(stream.buf, digits[q5], n) + } else { + n = writeFirstBuf(stream.buf, digits[q6], n) + r6 := q5 - q6*1000 + writeBuf(stream.buf, digits[r6], n) + n += 3 + } + writeBuf(stream.buf, digits[r5], n) + writeBuf(stream.buf, digits[r4], n+3) + writeBuf(stream.buf, digits[r3], n+6) + writeBuf(stream.buf, digits[r2], n+9) + writeBuf(stream.buf, digits[r1], n+12) + stream.n = n + 15 +} + +// WriteInt64 write int64 to stream +func (stream *Stream) WriteInt64(nval int64) { + stream.ensure(20) + n := stream.n + var val uint64 + if nval < 0 { + val = uint64(-nval) + stream.buf[n] = '-' + n++ + } else { + val = uint64(nval) + } + q1 := val / 1000 + if q1 == 0 { + stream.n = writeFirstBuf(stream.buf, digits[val], n) + return + } + r1 := val - q1*1000 + q2 := q1 / 1000 + if q2 == 0 { + n := writeFirstBuf(stream.buf, digits[q1], n) + writeBuf(stream.buf, digits[r1], n) + stream.n = n + 3 + return + } + r2 := q1 - q2*1000 + q3 := q2 / 1000 + if q3 == 0 { + n = writeFirstBuf(stream.buf, digits[q2], n) + writeBuf(stream.buf, digits[r2], n) + writeBuf(stream.buf, digits[r1], n+3) + stream.n = n + 6 + return + } + r3 := q2 - q3*1000 + q4 := q3 / 1000 + if q4 == 0 { + n = writeFirstBuf(stream.buf, digits[q3], n) + writeBuf(stream.buf, digits[r3], n) + writeBuf(stream.buf, digits[r2], n+3) + writeBuf(stream.buf, digits[r1], n+6) + stream.n = n + 9 + return + } + r4 := q3 - q4*1000 + q5 := q4 / 1000 + if q5 == 0 { + n = writeFirstBuf(stream.buf, digits[q4], n) + writeBuf(stream.buf, digits[r4], n) + writeBuf(stream.buf, digits[r3], n+3) + writeBuf(stream.buf, digits[r2], n+6) + writeBuf(stream.buf, digits[r1], n+9) + stream.n = n + 12 + return + } + r5 := q4 - q5*1000 + q6 := q5 / 1000 + if q6 == 0 { + n = writeFirstBuf(stream.buf, digits[q5], n) + } else { + stream.buf[n] = byte(q6 + '0') + n++ + r6 := q5 - q6*1000 + writeBuf(stream.buf, digits[r6], n) + n += 3 + } + writeBuf(stream.buf, digits[r5], n) + writeBuf(stream.buf, digits[r4], n+3) + writeBuf(stream.buf, digits[r3], n+6) + writeBuf(stream.buf, digits[r2], n+9) + writeBuf(stream.buf, digits[r1], n+12) + stream.n = n + 15 +} + +// WriteInt write int to stream +func (stream *Stream) WriteInt(val int) { + stream.WriteInt64(int64(val)) +} + +// WriteUint write uint to stream +func (stream *Stream) WriteUint(val uint) { + stream.WriteUint64(uint64(val)) +} diff --git a/vendor/github.com/json-iterator/go/feature_stream_string.go b/vendor/github.com/json-iterator/go/feature_stream_string.go new file mode 100644 index 0000000000..334282f05f --- /dev/null +++ b/vendor/github.com/json-iterator/go/feature_stream_string.go @@ -0,0 +1,396 @@ +package jsoniter + +import ( + "unicode/utf8" +) + +// htmlSafeSet holds the value true if the ASCII character with the given +// array position can be safely represented inside a JSON string, embedded +// inside of HTML + + + + + + +
+ + + +
+... +
+ + + + +
+
+
+
+ Run + Format + + + +
+
+ + +
+
+ + +

Command go

+ + + + + + + + + + + + + + +

+Go is a tool for managing Go source code. +

+

+Usage: +

+
go command [arguments]
+
+

+The commands are: +

+
build       compile packages and dependencies
+clean       remove object files
+doc         show documentation for package or symbol
+env         print Go environment information
+bug         start a bug report
+fix         run go tool fix on packages
+fmt         run gofmt on package sources
+generate    generate Go files by processing source
+get         download and install packages and dependencies
+install     compile and install packages and dependencies
+list        list packages
+run         compile and run Go program
+test        test packages
+tool        run specified go tool
+version     print Go version
+vet         run go tool vet on packages
+
+

+Use "go help [command]" for more information about a command. +

+

+Additional help topics: +

+
c           calling between Go and C
+buildmode   description of build modes
+filetype    file types
+gopath      GOPATH environment variable
+environment environment variables
+importpath  import path syntax
+packages    description of package lists
+testflag    description of testing flags
+testfunc    description of testing functions
+
+

+Use "go help [topic]" for more information about that topic. +

+

Compile packages and dependencies

+

+Usage: +

+
go build [-o output] [-i] [build flags] [packages]
+
+

+Build compiles the packages named by the import paths, +along with their dependencies, but it does not install the results. +

+

+If the arguments to build are a list of .go files, build treats +them as a list of source files specifying a single package. +

+

+When compiling a single main package, build writes +the resulting executable to an output file named after +the first source file ('go build ed.go rx.go' writes 'ed' or 'ed.exe') +or the source code directory ('go build unix/sam' writes 'sam' or 'sam.exe'). +The '.exe' suffix is added when writing a Windows executable. +

+

+When compiling multiple packages or a single non-main package, +build compiles the packages but discards the resulting object, +serving only as a check that the packages can be built. +

+

+When compiling packages, build ignores files that end in '_test.go'. +

+

+The -o flag, only allowed when compiling a single package, +forces build to write the resulting executable or object +to the named output file, instead of the default behavior described +in the last two paragraphs. +

+

+The -i flag installs the packages that are dependencies of the target. +

+

+The build flags are shared by the build, clean, get, install, list, run, +and test commands: +

+
-a
+	force rebuilding of packages that are already up-to-date.
+-n
+	print the commands but do not run them.
+-p n
+	the number of programs, such as build commands or
+	test binaries, that can be run in parallel.
+	The default is the number of CPUs available.
+-race
+	enable data race detection.
+	Supported only on linux/amd64, freebsd/amd64, darwin/amd64 and windows/amd64.
+-msan
+	enable interoperation with memory sanitizer.
+	Supported only on linux/amd64,
+	and only with Clang/LLVM as the host C compiler.
+-v
+	print the names of packages as they are compiled.
+-work
+	print the name of the temporary work directory and
+	do not delete it when exiting.
+-x
+	print the commands.
+
+-asmflags 'flag list'
+	arguments to pass on each go tool asm invocation.
+-buildmode mode
+	build mode to use. See 'go help buildmode' for more.
+-compiler name
+	name of compiler to use, as in runtime.Compiler (gccgo or gc).
+-gccgoflags 'arg list'
+	arguments to pass on each gccgo compiler/linker invocation.
+-gcflags 'arg list'
+	arguments to pass on each go tool compile invocation.
+-installsuffix suffix
+	a suffix to use in the name of the package installation directory,
+	in order to keep output separate from default builds.
+	If using the -race flag, the install suffix is automatically set to race
+	or, if set explicitly, has _race appended to it.  Likewise for the -msan
+	flag.  Using a -buildmode option that requires non-default compile flags
+	has a similar effect.
+-ldflags 'flag list'
+	arguments to pass on each go tool link invocation.
+-linkshared
+	link against shared libraries previously created with
+	-buildmode=shared.
+-pkgdir dir
+	install and load all packages from dir instead of the usual locations.
+	For example, when building with a non-standard configuration,
+	use -pkgdir to keep generated packages in a separate location.
+-tags 'tag list'
+	a list of build tags to consider satisfied during the build.
+	For more information about build tags, see the description of
+	build constraints in the documentation for the go/build package.
+-toolexec 'cmd args'
+	a program to use to invoke toolchain programs like vet and asm.
+	For example, instead of running asm, the go command will run
+	'cmd args /path/to/asm <arguments for asm>'.
+
+

+The list flags accept a space-separated list of strings. To embed spaces +in an element in the list, surround it with either single or double quotes. +

+

+For more about specifying packages, see 'go help packages'. +For more about where packages and binaries are installed, +run 'go help gopath'. +For more about calling between Go and C/C++, run 'go help c'. +

+

+Note: Build adheres to certain conventions such as those described +by 'go help gopath'. Not all projects can follow these conventions, +however. Installations that have their own conventions or that use +a separate software build system may choose to use lower-level +invocations such as 'go tool compile' and 'go tool link' to avoid +some of the overheads and design decisions of the build tool. +

+

+See also: go install, go get, go clean. +

+

Remove object files

+

+Usage: +

+
go clean [-i] [-r] [-n] [-x] [build flags] [packages]
+
+

+Clean removes object files from package source directories. +The go command builds most objects in a temporary directory, +so go clean is mainly concerned with object files left by other +tools or by manual invocations of go build. +

+

+Specifically, clean removes the following files from each of the +source directories corresponding to the import paths: +

+
_obj/            old object directory, left from Makefiles
+_test/           old test directory, left from Makefiles
+_testmain.go     old gotest file, left from Makefiles
+test.out         old test log, left from Makefiles
+build.out        old test log, left from Makefiles
+*.[568ao]        object files, left from Makefiles
+
+DIR(.exe)        from go build
+DIR.test(.exe)   from go test -c
+MAINFILE(.exe)   from go build MAINFILE.go
+*.so             from SWIG
+
+

+In the list, DIR represents the final path element of the +directory, and MAINFILE is the base name of any Go source +file in the directory that is not included when building +the package. +

+

+The -i flag causes clean to remove the corresponding installed +archive or binary (what 'go install' would create). +

+

+The -n flag causes clean to print the remove commands it would execute, +but not run them. +

+

+The -r flag causes clean to be applied recursively to all the +dependencies of the packages named by the import paths. +

+

+The -x flag causes clean to print remove commands as it executes them. +

+

+For more about build flags, see 'go help build'. +

+

+For more about specifying packages, see 'go help packages'. +

+

Show documentation for package or symbol

+

+Usage: +

+
go doc [-u] [-c] [package|[package.]symbol[.method]]
+
+

+Doc prints the documentation comments associated with the item identified by its +arguments (a package, const, func, type, var, or method) followed by a one-line +summary of each of the first-level items "under" that item (package-level +declarations for a package, methods for a type, etc.). +

+

+Doc accepts zero, one, or two arguments. +

+

+Given no arguments, that is, when run as +

+
go doc
+
+

+it prints the package documentation for the package in the current directory. +If the package is a command (package main), the exported symbols of the package +are elided from the presentation unless the -cmd flag is provided. +

+

+When run with one argument, the argument is treated as a Go-syntax-like +representation of the item to be documented. What the argument selects depends +on what is installed in GOROOT and GOPATH, as well as the form of the argument, +which is schematically one of these: +

+
go doc <pkg>
+go doc <sym>[.<method>]
+go doc [<pkg>.]<sym>[.<method>]
+go doc [<pkg>.][<sym>.]<method>
+
+

+The first item in this list matched by the argument is the one whose documentation +is printed. (See the examples below.) However, if the argument starts with a capital +letter it is assumed to identify a symbol or method in the current directory. +

+

+For packages, the order of scanning is determined lexically in breadth-first order. +That is, the package presented is the one that matches the search and is nearest +the root and lexically first at its level of the hierarchy. The GOROOT tree is +always scanned in its entirety before GOPATH. +

+

+If there is no package specified or matched, the package in the current +directory is selected, so "go doc Foo" shows the documentation for symbol Foo in +the current package. +

+

+The package path must be either a qualified path or a proper suffix of a +path. The go tool's usual package mechanism does not apply: package path +elements like . and ... are not implemented by go doc. +

+

+When run with two arguments, the first must be a full package path (not just a +suffix), and the second is a symbol or symbol and method; this is similar to the +syntax accepted by godoc: +

+
go doc <pkg> <sym>[.<method>]
+
+

+In all forms, when matching symbols, lower-case letters in the argument match +either case but upper-case letters match exactly. This means that there may be +multiple matches of a lower-case argument in a package if different symbols have +different cases. If this occurs, documentation for all matches is printed. +

+

+Examples: +

+
go doc
+	Show documentation for current package.
+go doc Foo
+	Show documentation for Foo in the current package.
+	(Foo starts with a capital letter so it cannot match
+	a package path.)
+go doc encoding/json
+	Show documentation for the encoding/json package.
+go doc json
+	Shorthand for encoding/json.
+go doc json.Number (or go doc json.number)
+	Show documentation and method summary for json.Number.
+go doc json.Number.Int64 (or go doc json.number.int64)
+	Show documentation for json.Number's Int64 method.
+go doc cmd/doc
+	Show package docs for the doc command.
+go doc -cmd cmd/doc
+	Show package docs and exported symbols within the doc command.
+go doc template.new
+	Show documentation for html/template's New function.
+	(html/template is lexically before text/template)
+go doc text/template.new # One argument
+	Show documentation for text/template's New function.
+go doc text/template new # Two arguments
+	Show documentation for text/template's New function.
+
+At least in the current tree, these invocations all print the
+documentation for json.Decoder's Decode method:
+
+go doc json.Decoder.Decode
+go doc json.decoder.decode
+go doc json.decode
+cd go/src/encoding/json; go doc decode
+
+

+Flags: +

+
-c
+	Respect case when matching symbols.
+-cmd
+	Treat a command (package main) like a regular package.
+	Otherwise package main's exported symbols are hidden
+	when showing the package's top-level documentation.
+-u
+	Show documentation for unexported as well as exported
+	symbols and methods.
+
+

Print Go environment information

+

+Usage: +

+
go env [var ...]
+
+

+Env prints Go environment information. +

+

+By default env prints information as a shell script +(on Windows, a batch file). If one or more variable +names is given as arguments, env prints the value of +each named variable on its own line. +

+

Start a bug report

+

+Usage: +

+
go bug
+
+

+Bug opens the default browser and starts a new bug report. +The report includes useful system information. +

+

Run go tool fix on packages

+

+Usage: +

+
go fix [packages]
+
+

+Fix runs the Go fix command on the packages named by the import paths. +

+

+For more about fix, see 'go doc cmd/fix'. +For more about specifying packages, see 'go help packages'. +

+

+To run fix with specific options, run 'go tool fix'. +

+

+See also: go fmt, go vet. +

+

Run gofmt on package sources

+

+Usage: +

+
go fmt [-n] [-x] [packages]
+
+

+Fmt runs the command 'gofmt -l -w' on the packages named +by the import paths. It prints the names of the files that are modified. +

+

+For more about gofmt, see 'go doc cmd/gofmt'. +For more about specifying packages, see 'go help packages'. +

+

+The -n flag prints commands that would be executed. +The -x flag prints commands as they are executed. +

+

+To run gofmt with specific options, run gofmt itself. +

+

+See also: go fix, go vet. +

+

Generate Go files by processing source

+

+Usage: +

+
go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages]
+
+

+Generate runs commands described by directives within existing +files. Those commands can run any process but the intent is to +create or update Go source files. +

+

+Go generate is never run automatically by go build, go get, go test, +and so on. It must be run explicitly. +

+

+Go generate scans the file for directives, which are lines of +the form, +

+
//go:generate command argument...
+
+

+(note: no leading spaces and no space in "//go") where command +is the generator to be run, corresponding to an executable file +that can be run locally. It must either be in the shell path +(gofmt), a fully qualified path (/usr/you/bin/mytool), or a +command alias, described below. +

+

+Note that go generate does not parse the file, so lines that look +like directives in comments or multiline strings will be treated +as directives. +

+

+The arguments to the directive are space-separated tokens or +double-quoted strings passed to the generator as individual +arguments when it is run. +

+

+Quoted strings use Go syntax and are evaluated before execution; a +quoted string appears as a single argument to the generator. +

+

+Go generate sets several variables when it runs the generator: +

+
$GOARCH
+	The execution architecture (arm, amd64, etc.)
+$GOOS
+	The execution operating system (linux, windows, etc.)
+$GOFILE
+	The base name of the file.
+$GOLINE
+	The line number of the directive in the source file.
+$GOPACKAGE
+	The name of the package of the file containing the directive.
+$DOLLAR
+	A dollar sign.
+
+

+Other than variable substitution and quoted-string evaluation, no +special processing such as "globbing" is performed on the command +line. +

+

+As a last step before running the command, any invocations of any +environment variables with alphanumeric names, such as $GOFILE or +$HOME, are expanded throughout the command line. The syntax for +variable expansion is $NAME on all operating systems. Due to the +order of evaluation, variables are expanded even inside quoted +strings. If the variable NAME is not set, $NAME expands to the +empty string. +

+

+A directive of the form, +

+
//go:generate -command xxx args...
+
+

+specifies, for the remainder of this source file only, that the +string xxx represents the command identified by the arguments. This +can be used to create aliases or to handle multiword generators. +For example, +

+
//go:generate -command foo go tool foo
+
+

+specifies that the command "foo" represents the generator +"go tool foo". +

+

+Generate processes packages in the order given on the command line, +one at a time. If the command line lists .go files, they are treated +as a single package. Within a package, generate processes the +source files in a package in file name order, one at a time. Within +a source file, generate runs generators in the order they appear +in the file, one at a time. +

+

+If any generator returns an error exit status, "go generate" skips +all further processing for that package. +

+

+The generator is run in the package's source directory. +

+

+Go generate accepts one specific flag: +

+
-run=""
+	if non-empty, specifies a regular expression to select
+	directives whose full original source text (excluding
+	any trailing spaces and final newline) matches the
+	expression.
+
+

+It also accepts the standard build flags including -v, -n, and -x. +The -v flag prints the names of packages and files as they are +processed. +The -n flag prints commands that would be executed. +The -x flag prints commands as they are executed. +

+

+For more about build flags, see 'go help build'. +

+

+For more about specifying packages, see 'go help packages'. +

+

Download and install packages and dependencies

+

+Usage: +

+
go get [-d] [-f] [-fix] [-insecure] [-t] [-u] [build flags] [packages]
+
+

+Get downloads the packages named by the import paths, along with their +dependencies. It then installs the named packages, like 'go install'. +

+

+The -d flag instructs get to stop after downloading the packages; that is, +it instructs get not to install the packages. +

+

+The -f flag, valid only when -u is set, forces get -u not to verify that +each package has been checked out from the source control repository +implied by its import path. This can be useful if the source is a local fork +of the original. +

+

+The -fix flag instructs get to run the fix tool on the downloaded packages +before resolving dependencies or building the code. +

+

+The -insecure flag permits fetching from repositories and resolving +custom domains using insecure schemes such as HTTP. Use with caution. +

+

+The -t flag instructs get to also download the packages required to build +the tests for the specified packages. +

+

+The -u flag instructs get to use the network to update the named packages +and their dependencies. By default, get uses the network to check out +missing packages but does not use it to look for updates to existing packages. +

+

+The -v flag enables verbose progress and debug output. +

+

+Get also accepts build flags to control the installation. See 'go help build'. +

+

+When checking out a new package, get creates the target directory +GOPATH/src/<import-path>. If the GOPATH contains multiple entries, +get uses the first one. For more details see: 'go help gopath'. +

+

+When checking out or updating a package, get looks for a branch or tag +that matches the locally installed version of Go. The most important +rule is that if the local installation is running version "go1", get +searches for a branch or tag named "go1". If no such version exists it +retrieves the most recent version of the package. +

+

+When go get checks out or updates a Git repository, +it also updates any git submodules referenced by the repository. +

+

+Get never checks out or updates code stored in vendor directories. +

+

+For more about specifying packages, see 'go help packages'. +

+

+For more about how 'go get' finds source code to +download, see 'go help importpath'. +

+

+See also: go build, go install, go clean. +

+

Compile and install packages and dependencies

+

+Usage: +

+
go install [build flags] [packages]
+
+

+Install compiles and installs the packages named by the import paths, +along with their dependencies. +

+

+For more about the build flags, see 'go help build'. +For more about specifying packages, see 'go help packages'. +

+

+See also: go build, go get, go clean. +

+

List packages

+

+Usage: +

+
go list [-e] [-f format] [-json] [build flags] [packages]
+
+

+List lists the packages named by the import paths, one per line. +

+

+The default output shows the package import path: +

+
bytes
+encoding/json
+github.com/gorilla/mux
+golang.org/x/net/html
+
+

+The -f flag specifies an alternate format for the list, using the +syntax of package template. The default output is equivalent to -f +''. The struct being passed to the template is: +

+
type Package struct {
+    Dir           string // directory containing package sources
+    ImportPath    string // import path of package in dir
+    ImportComment string // path in import comment on package statement
+    Name          string // package name
+    Doc           string // package documentation string
+    Target        string // install path
+    Shlib         string // the shared library that contains this package (only set when -linkshared)
+    Goroot        bool   // is this package in the Go root?
+    Standard      bool   // is this package part of the standard Go library?
+    Stale         bool   // would 'go install' do anything for this package?
+    StaleReason   string // explanation for Stale==true
+    Root          string // Go root or Go path dir containing this package
+    ConflictDir   string // this directory shadows Dir in $GOPATH
+    BinaryOnly    bool   // binary-only package: cannot be recompiled from sources
+
+    // Source files
+    GoFiles        []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
+    CgoFiles       []string // .go sources files that import "C"
+    IgnoredGoFiles []string // .go sources ignored due to build constraints
+    CFiles         []string // .c source files
+    CXXFiles       []string // .cc, .cxx and .cpp source files
+    MFiles         []string // .m source files
+    HFiles         []string // .h, .hh, .hpp and .hxx source files
+    FFiles         []string // .f, .F, .for and .f90 Fortran source files
+    SFiles         []string // .s source files
+    SwigFiles      []string // .swig files
+    SwigCXXFiles   []string // .swigcxx files
+    SysoFiles      []string // .syso object files to add to archive
+    TestGoFiles    []string // _test.go files in package
+    XTestGoFiles   []string // _test.go files outside package
+
+    // Cgo directives
+    CgoCFLAGS    []string // cgo: flags for C compiler
+    CgoCPPFLAGS  []string // cgo: flags for C preprocessor
+    CgoCXXFLAGS  []string // cgo: flags for C++ compiler
+    CgoFFLAGS    []string // cgo: flags for Fortran compiler
+    CgoLDFLAGS   []string // cgo: flags for linker
+    CgoPkgConfig []string // cgo: pkg-config names
+
+    // Dependency information
+    Imports      []string // import paths used by this package
+    Deps         []string // all (recursively) imported dependencies
+    TestImports  []string // imports from TestGoFiles
+    XTestImports []string // imports from XTestGoFiles
+
+    // Error information
+    Incomplete bool            // this package or a dependency has an error
+    Error      *PackageError   // error loading package
+    DepsErrors []*PackageError // errors loading dependencies
+}
+
+

+Packages stored in vendor directories report an ImportPath that includes the +path to the vendor directory (for example, "d/vendor/p" instead of "p"), +so that the ImportPath uniquely identifies a given copy of a package. +The Imports, Deps, TestImports, and XTestImports lists also contain these +expanded imports paths. See golang.org/s/go15vendor for more about vendoring. +

+

+The error information, if any, is +

+
type PackageError struct {
+    ImportStack   []string // shortest path from package named on command line to this one
+    Pos           string   // position of error (if present, file:line:col)
+    Err           string   // the error itself
+}
+
+

+The template function "join" calls strings.Join. +

+

+The template function "context" returns the build context, defined as: +

+
type Context struct {
+	GOARCH        string   // target architecture
+	GOOS          string   // target operating system
+	GOROOT        string   // Go root
+	GOPATH        string   // Go path
+	CgoEnabled    bool     // whether cgo can be used
+	UseAllFiles   bool     // use files regardless of +build lines, file names
+	Compiler      string   // compiler to assume when computing target paths
+	BuildTags     []string // build constraints to match in +build lines
+	ReleaseTags   []string // releases the current release is compatible with
+	InstallSuffix string   // suffix to use in the name of the install dir
+}
+
+

+For more information about the meaning of these fields see the documentation +for the go/build package's Context type. +

+

+The -json flag causes the package data to be printed in JSON format +instead of using the template format. +

+

+The -e flag changes the handling of erroneous packages, those that +cannot be found or are malformed. By default, the list command +prints an error to standard error for each erroneous package and +omits the packages from consideration during the usual printing. +With the -e flag, the list command never prints errors to standard +error and instead processes the erroneous packages with the usual +printing. Erroneous packages will have a non-empty ImportPath and +a non-nil Error field; other information may or may not be missing +(zeroed). +

+

+For more about build flags, see 'go help build'. +

+

+For more about specifying packages, see 'go help packages'. +

+

Compile and run Go program

+

+Usage: +

+
go run [build flags] [-exec xprog] gofiles... [arguments...]
+
+

+Run compiles and runs the main package comprising the named Go source files. +A Go source file is defined to be a file ending in a literal ".go" suffix. +

+

+By default, 'go run' runs the compiled binary directly: 'a.out arguments...'. +If the -exec flag is given, 'go run' invokes the binary using xprog: +

+
'xprog a.out arguments...'.
+
+

+If the -exec flag is not given, GOOS or GOARCH is different from the system +default, and a program named go_$GOOS_$GOARCH_exec can be found +on the current search path, 'go run' invokes the binary using that program, +for example 'go_nacl_386_exec a.out arguments...'. This allows execution of +cross-compiled programs when a simulator or other execution method is +available. +

+

+For more about build flags, see 'go help build'. +

+

+See also: go build. +

+

Test packages

+

+Usage: +

+
go test [build/test flags] [packages] [build/test flags & test binary flags]
+
+

+'Go test' automates testing the packages named by the import paths. +It prints a summary of the test results in the format: +

+
ok   archive/tar   0.011s
+FAIL archive/zip   0.022s
+ok   compress/gzip 0.033s
+...
+
+

+followed by detailed output for each failed package. +

+

+'Go test' recompiles each package along with any files with names matching +the file pattern "*_test.go". +Files whose names begin with "_" (including "_test.go") or "." are ignored. +These additional files can contain test functions, benchmark functions, and +example functions. See 'go help testfunc' for more. +Each listed package causes the execution of a separate test binary. +

+

+Test files that declare a package with the suffix "_test" will be compiled as a +separate package, and then linked and run with the main test binary. +

+

+The go tool will ignore a directory named "testdata", making it available +to hold ancillary data needed by the tests. +

+

+By default, go test needs no arguments. It compiles and tests the package +with source in the current directory, including tests, and runs the tests. +

+

+The package is built in a temporary directory so it does not interfere with the +non-test installation. +

+

+In addition to the build flags, the flags handled by 'go test' itself are: +

+
-args
+    Pass the remainder of the command line (everything after -args)
+    to the test binary, uninterpreted and unchanged.
+    Because this flag consumes the remainder of the command line,
+    the package list (if present) must appear before this flag.
+
+-c
+    Compile the test binary to pkg.test but do not run it
+    (where pkg is the last element of the package's import path).
+    The file name can be changed with the -o flag.
+
+-exec xprog
+    Run the test binary using xprog. The behavior is the same as
+    in 'go run'. See 'go help run' for details.
+
+-i
+    Install packages that are dependencies of the test.
+    Do not run the test.
+
+-o file
+    Compile the test binary to the named file.
+    The test still runs (unless -c or -i is specified).
+
+

+The test binary also accepts flags that control execution of the test; these +flags are also accessible by 'go test'. See 'go help testflag' for details. +

+

+For more about build flags, see 'go help build'. +For more about specifying packages, see 'go help packages'. +

+

+See also: go build, go vet. +

+

Run specified go tool

+

+Usage: +

+
go tool [-n] command [args...]
+
+

+Tool runs the go tool command identified by the arguments. +With no arguments it prints the list of known tools. +

+

+The -n flag causes tool to print the command that would be +executed but not execute it. +

+

+For more about each tool command, see 'go tool command -h'. +

+

Print Go version

+

+Usage: +

+
go version
+
+

+Version prints the Go version, as reported by runtime.Version. +

+

Run go tool vet on packages

+

+Usage: +

+
go vet [-n] [-x] [build flags] [packages]
+
+

+Vet runs the Go vet command on the packages named by the import paths. +

+

+For more about vet, see 'go doc cmd/vet'. +For more about specifying packages, see 'go help packages'. +

+

+To run the vet tool with specific options, run 'go tool vet'. +

+

+The -n flag prints commands that would be executed. +The -x flag prints commands as they are executed. +

+

+For more about build flags, see 'go help build'. +

+

+See also: go fmt, go fix. +

+

Calling between Go and C

+

+There are two different ways to call between Go and C/C++ code. +

+

+The first is the cgo tool, which is part of the Go distribution. For +information on how to use it see the cgo documentation (go doc cmd/cgo). +

+

+The second is the SWIG program, which is a general tool for +interfacing between languages. For information on SWIG see +http://swig.org/. When running go build, any file with a .swig +extension will be passed to SWIG. Any file with a .swigcxx extension +will be passed to SWIG with the -c++ option. +

+

+When either cgo or SWIG is used, go build will pass any .c, .m, .s, +or .S files to the C compiler, and any .cc, .cpp, .cxx files to the C++ +compiler. The CC or CXX environment variables may be set to determine +the C or C++ compiler, respectively, to use. +

+

Description of build modes

+

+The 'go build' and 'go install' commands take a -buildmode argument which +indicates which kind of object file is to be built. Currently supported values +are: +

+
-buildmode=archive
+	Build the listed non-main packages into .a files. Packages named
+	main are ignored.
+
+-buildmode=c-archive
+	Build the listed main package, plus all packages it imports,
+	into a C archive file. The only callable symbols will be those
+	functions exported using a cgo //export comment. Requires
+	exactly one main package to be listed.
+
+-buildmode=c-shared
+	Build the listed main packages, plus all packages that they
+	import, into C shared libraries. The only callable symbols will
+	be those functions exported using a cgo //export comment.
+	Non-main packages are ignored.
+
+-buildmode=default
+	Listed main packages are built into executables and listed
+	non-main packages are built into .a files (the default
+	behavior).
+
+-buildmode=shared
+	Combine all the listed non-main packages into a single shared
+	library that will be used when building with the -linkshared
+	option. Packages named main are ignored.
+
+-buildmode=exe
+	Build the listed main packages and everything they import into
+	executables. Packages not named main are ignored.
+
+-buildmode=pie
+	Build the listed main packages and everything they import into
+	position independent executables (PIE). Packages not named
+	main are ignored.
+
+-buildmode=plugin
+	Build the listed main packages, plus all packages that they
+	import, into a Go plugin. Packages not named main are ignored.
+
+

File types

+

+The go command examines the contents of a restricted set of files +in each directory. It identifies which files to examine based on +the extension of the file name. These extensions are: +

+
.go
+	Go source files.
+.c, .h
+	C source files.
+	If the package uses cgo or SWIG, these will be compiled with the
+	OS-native compiler (typically gcc); otherwise they will
+	trigger an error.
+.cc, .cpp, .cxx, .hh, .hpp, .hxx
+	C++ source files. Only useful with cgo or SWIG, and always
+	compiled with the OS-native compiler.
+.m
+	Objective-C source files. Only useful with cgo, and always
+	compiled with the OS-native compiler.
+.s, .S
+	Assembler source files.
+	If the package uses cgo or SWIG, these will be assembled with the
+	OS-native assembler (typically gcc (sic)); otherwise they
+	will be assembled with the Go assembler.
+.swig, .swigcxx
+	SWIG definition files.
+.syso
+	System object files.
+
+

+Files of each of these types except .syso may contain build +constraints, but the go command stops scanning for build constraints +at the first item in the file that is not a blank line or //-style +line comment. See the go/build package documentation for +more details. +

+

+Non-test Go source files can also include a //go:binary-only-package +comment, indicating that the package sources are included +for documentation only and must not be used to build the +package binary. This enables distribution of Go packages in +their compiled form alone. See the go/build package documentation +for more details. +

+

GOPATH environment variable

+

+The Go path is used to resolve import statements. +It is implemented by and documented in the go/build package. +

+

+The GOPATH environment variable lists places to look for Go code. +On Unix, the value is a colon-separated string. +On Windows, the value is a semicolon-separated string. +On Plan 9, the value is a list. +

+

+If the environment variable is unset, GOPATH defaults +to a subdirectory named "go" in the user's home directory +($HOME/go on Unix, %USERPROFILE%\go on Windows), +unless that directory holds a Go distribution. +Run "go env GOPATH" to see the current GOPATH. +

+

+See https://golang.org/wiki/SettingGOPATH to set a custom GOPATH. +

+

+Each directory listed in GOPATH must have a prescribed structure: +

+

+The src directory holds source code. The path below src +determines the import path or executable name. +

+

+The pkg directory holds installed package objects. +As in the Go tree, each target operating system and +architecture pair has its own subdirectory of pkg +(pkg/GOOS_GOARCH). +

+

+If DIR is a directory listed in the GOPATH, a package with +source in DIR/src/foo/bar can be imported as "foo/bar" and +has its compiled form installed to "DIR/pkg/GOOS_GOARCH/foo/bar.a". +

+

+The bin directory holds compiled commands. +Each command is named for its source directory, but only +the final element, not the entire path. That is, the +command with source in DIR/src/foo/quux is installed into +DIR/bin/quux, not DIR/bin/foo/quux. The "foo/" prefix is stripped +so that you can add DIR/bin to your PATH to get at the +installed commands. If the GOBIN environment variable is +set, commands are installed to the directory it names instead +of DIR/bin. GOBIN must be an absolute path. +

+

+Here's an example directory layout: +

+
GOPATH=/home/user/go
+
+/home/user/go/
+    src/
+        foo/
+            bar/               (go code in package bar)
+                x.go
+            quux/              (go code in package main)
+                y.go
+    bin/
+        quux                   (installed command)
+    pkg/
+        linux_amd64/
+            foo/
+                bar.a          (installed package object)
+
+

+Go searches each directory listed in GOPATH to find source code, +but new packages are always downloaded into the first directory +in the list. +

+

+See https://golang.org/doc/code.html for an example. +

+

Internal Directories

+

+Code in or below a directory named "internal" is importable only +by code in the directory tree rooted at the parent of "internal". +Here's an extended version of the directory layout above: +

+
/home/user/go/
+    src/
+        crash/
+            bang/              (go code in package bang)
+                b.go
+        foo/                   (go code in package foo)
+            f.go
+            bar/               (go code in package bar)
+                x.go
+            internal/
+                baz/           (go code in package baz)
+                    z.go
+            quux/              (go code in package main)
+                y.go
+
+

+The code in z.go is imported as "foo/internal/baz", but that +import statement can only appear in source files in the subtree +rooted at foo. The source files foo/f.go, foo/bar/x.go, and +foo/quux/y.go can all import "foo/internal/baz", but the source file +crash/bang/b.go cannot. +

+

+See https://golang.org/s/go14internal for details. +

+

Vendor Directories

+

+Go 1.6 includes support for using local copies of external dependencies +to satisfy imports of those dependencies, often referred to as vendoring. +

+

+Code below a directory named "vendor" is importable only +by code in the directory tree rooted at the parent of "vendor", +and only using an import path that omits the prefix up to and +including the vendor element. +

+

+Here's the example from the previous section, +but with the "internal" directory renamed to "vendor" +and a new foo/vendor/crash/bang directory added: +

+
/home/user/go/
+    src/
+        crash/
+            bang/              (go code in package bang)
+                b.go
+        foo/                   (go code in package foo)
+            f.go
+            bar/               (go code in package bar)
+                x.go
+            vendor/
+                crash/
+                    bang/      (go code in package bang)
+                        b.go
+                baz/           (go code in package baz)
+                    z.go
+            quux/              (go code in package main)
+                y.go
+
+

+The same visibility rules apply as for internal, but the code +in z.go is imported as "baz", not as "foo/vendor/baz". +

+

+Code in vendor directories deeper in the source tree shadows +code in higher directories. Within the subtree rooted at foo, an import +of "crash/bang" resolves to "foo/vendor/crash/bang", not the +top-level "crash/bang". +

+

+Code in vendor directories is not subject to import path +checking (see 'go help importpath'). +

+

+When 'go get' checks out or updates a git repository, it now also +updates submodules. +

+

+Vendor directories do not affect the placement of new repositories +being checked out for the first time by 'go get': those are always +placed in the main GOPATH, never in a vendor subtree. +

+

+See https://golang.org/s/go15vendor for details. +

+

Environment variables

+

+The go command, and the tools it invokes, examine a few different +environment variables. For many of these, you can see the default +value of on your system by running 'go env NAME', where NAME is the +name of the variable. +

+

+General-purpose environment variables: +

+
GCCGO
+	The gccgo command to run for 'go build -compiler=gccgo'.
+GOARCH
+	The architecture, or processor, for which to compile code.
+	Examples are amd64, 386, arm, ppc64.
+GOBIN
+	The directory where 'go install' will install a command.
+GOOS
+	The operating system for which to compile code.
+	Examples are linux, darwin, windows, netbsd.
+GOPATH
+	For more details see: 'go help gopath'.
+GORACE
+	Options for the race detector.
+	See https://golang.org/doc/articles/race_detector.html.
+GOROOT
+	The root of the go tree.
+
+

+Environment variables for use with cgo: +

+
CC
+	The command to use to compile C code.
+CGO_ENABLED
+	Whether the cgo command is supported.  Either 0 or 1.
+CGO_CFLAGS
+	Flags that cgo will pass to the compiler when compiling
+	C code.
+CGO_CPPFLAGS
+	Flags that cgo will pass to the compiler when compiling
+	C or C++ code.
+CGO_CXXFLAGS
+	Flags that cgo will pass to the compiler when compiling
+	C++ code.
+CGO_FFLAGS
+	Flags that cgo will pass to the compiler when compiling
+	Fortran code.
+CGO_LDFLAGS
+	Flags that cgo will pass to the compiler when linking.
+CXX
+	The command to use to compile C++ code.
+PKG_CONFIG
+	Path to pkg-config tool.
+
+

+Architecture-specific environment variables: +

+
GOARM
+	For GOARCH=arm, the ARM architecture for which to compile.
+	Valid values are 5, 6, 7.
+GO386
+	For GOARCH=386, the floating point instruction set.
+	Valid values are 387, sse2.
+
+

+Special-purpose environment variables: +

+
GOROOT_FINAL
+	The root of the installed Go tree, when it is
+	installed in a location other than where it is built.
+	File names in stack traces are rewritten from GOROOT to
+	GOROOT_FINAL.
+GO_EXTLINK_ENABLED
+	Whether the linker should use external linking mode
+	when using -linkmode=auto with code that uses cgo.
+	Set to 0 to disable external linking mode, 1 to enable it.
+GIT_ALLOW_PROTOCOL
+	Defined by Git. A colon-separated list of schemes that are allowed to be used
+	with git fetch/clone. If set, any scheme not explicitly mentioned will be
+	considered insecure by 'go get'.
+
+

Import path syntax

+

+An import path (see 'go help packages') denotes a package stored in the local +file system. In general, an import path denotes either a standard package (such +as "unicode/utf8") or a package found in one of the work spaces (For more +details see: 'go help gopath'). +

+

Relative import paths

+

+An import path beginning with ./ or ../ is called a relative path. +The toolchain supports relative import paths as a shortcut in two ways. +

+

+First, a relative path can be used as a shorthand on the command line. +If you are working in the directory containing the code imported as +"unicode" and want to run the tests for "unicode/utf8", you can type +"go test ./utf8" instead of needing to specify the full path. +Similarly, in the reverse situation, "go test .." will test "unicode" from +the "unicode/utf8" directory. Relative patterns are also allowed, like +"go test ./..." to test all subdirectories. See 'go help packages' for details +on the pattern syntax. +

+

+Second, if you are compiling a Go program not in a work space, +you can use a relative path in an import statement in that program +to refer to nearby code also not in a work space. +This makes it easy to experiment with small multipackage programs +outside of the usual work spaces, but such programs cannot be +installed with "go install" (there is no work space in which to install them), +so they are rebuilt from scratch each time they are built. +To avoid ambiguity, Go programs cannot use relative import paths +within a work space. +

+

Remote import paths

+

+Certain import paths also +describe how to obtain the source code for the package using +a revision control system. +

+

+A few common code hosting sites have special syntax: +

+
Bitbucket (Git, Mercurial)
+
+	import "bitbucket.org/user/project"
+	import "bitbucket.org/user/project/sub/directory"
+
+GitHub (Git)
+
+	import "github.com/user/project"
+	import "github.com/user/project/sub/directory"
+
+Launchpad (Bazaar)
+
+	import "launchpad.net/project"
+	import "launchpad.net/project/series"
+	import "launchpad.net/project/series/sub/directory"
+
+	import "launchpad.net/~user/project/branch"
+	import "launchpad.net/~user/project/branch/sub/directory"
+
+IBM DevOps Services (Git)
+
+	import "hub.jazz.net/git/user/project"
+	import "hub.jazz.net/git/user/project/sub/directory"
+
+

+For code hosted on other servers, import paths may either be qualified +with the version control type, or the go tool can dynamically fetch +the import path over https/http and discover where the code resides +from a <meta> tag in the HTML. +

+

+To declare the code location, an import path of the form +

+
repository.vcs/path
+
+

+specifies the given repository, with or without the .vcs suffix, +using the named version control system, and then the path inside +that repository. The supported version control systems are: +

+
Bazaar      .bzr
+Git         .git
+Mercurial   .hg
+Subversion  .svn
+
+

+For example, +

+
import "example.org/user/foo.hg"
+
+

+denotes the root directory of the Mercurial repository at +example.org/user/foo or foo.hg, and +

+
import "example.org/repo.git/foo/bar"
+
+

+denotes the foo/bar directory of the Git repository at +example.org/repo or repo.git. +

+

+When a version control system supports multiple protocols, +each is tried in turn when downloading. For example, a Git +download tries https://, then git+ssh://. +

+

+By default, downloads are restricted to known secure protocols +(e.g. https, ssh). To override this setting for Git downloads, the +GIT_ALLOW_PROTOCOL environment variable can be set (For more details see: +'go help environment'). +

+

+If the import path is not a known code hosting site and also lacks a +version control qualifier, the go tool attempts to fetch the import +over https/http and looks for a <meta> tag in the document's HTML +<head>. +

+

+The meta tag has the form: +

+
<meta name="go-import" content="import-prefix vcs repo-root">
+
+

+The import-prefix is the import path corresponding to the repository +root. It must be a prefix or an exact match of the package being +fetched with "go get". If it's not an exact match, another http +request is made at the prefix to verify the <meta> tags match. +

+

+The meta tag should appear as early in the file as possible. +In particular, it should appear before any raw JavaScript or CSS, +to avoid confusing the go command's restricted parser. +

+

+The vcs is one of "git", "hg", "svn", etc, +

+

+The repo-root is the root of the version control system +containing a scheme and not containing a .vcs qualifier. +

+

+For example, +

+
import "example.org/pkg/foo"
+
+

+will result in the following requests: +

+
https://example.org/pkg/foo?go-get=1 (preferred)
+http://example.org/pkg/foo?go-get=1  (fallback, only with -insecure)
+
+

+If that page contains the meta tag +

+
<meta name="go-import" content="example.org git https://code.org/r/p/exproj">
+
+

+the go tool will verify that https://example.org/?go-get=1 contains the +same meta tag and then git clone https://code.org/r/p/exproj into +GOPATH/src/example.org. +

+

+New downloaded packages are written to the first directory listed in the GOPATH +environment variable (For more details see: 'go help gopath'). +

+

+The go command attempts to download the version of the +package appropriate for the Go release being used. +Run 'go help get' for more. +

+

Import path checking

+

+When the custom import path feature described above redirects to a +known code hosting site, each of the resulting packages has two possible +import paths, using the custom domain or the known hosting site. +

+

+A package statement is said to have an "import comment" if it is immediately +followed (before the next newline) by a comment of one of these two forms: +

+
package math // import "path"
+package math /* import "path" */
+
+

+The go command will refuse to install a package with an import comment +unless it is being referred to by that import path. In this way, import comments +let package authors make sure the custom import path is used and not a +direct path to the underlying code hosting site. +

+

+Import path checking is disabled for code found within vendor trees. +This makes it possible to copy code into alternate locations in vendor trees +without needing to update import comments. +

+

+See https://golang.org/s/go14customimport for details. +

+

Description of package lists

+

+Many commands apply to a set of packages: +

+
go action [packages]
+
+

+Usually, [packages] is a list of import paths. +

+

+An import path that is a rooted path or that begins with +a . or .. element is interpreted as a file system path and +denotes the package in that directory. +

+

+Otherwise, the import path P denotes the package found in +the directory DIR/src/P for some DIR listed in the GOPATH +environment variable (For more details see: 'go help gopath'). +

+

+If no import paths are given, the action applies to the +package in the current directory. +

+

+There are four reserved names for paths that should not be used +for packages to be built with the go tool: +

+

+- "main" denotes the top-level package in a stand-alone executable. +

+

+- "all" expands to all package directories found in all the GOPATH +trees. For example, 'go list all' lists all the packages on the local +system. +

+

+- "std" is like all but expands to just the packages in the standard +Go library. +

+

+- "cmd" expands to the Go repository's commands and their +internal libraries. +

+

+Import paths beginning with "cmd/" only match source code in +the Go repository. +

+

+An import path is a pattern if it includes one or more "..." wildcards, +each of which can match any string, including the empty string and +strings containing slashes. Such a pattern expands to all package +directories found in the GOPATH trees with names matching the +patterns. As a special case, x/... matches x as well as x's subdirectories. +For example, net/... expands to net and packages in its subdirectories. +

+

+An import path can also name a package to be downloaded from +a remote repository. Run 'go help importpath' for details. +

+

+Every package in a program must have a unique import path. +By convention, this is arranged by starting each path with a +unique prefix that belongs to you. For example, paths used +internally at Google all begin with 'google', and paths +denoting remote repositories begin with the path to the code, +such as 'github.com/user/repo'. +

+

+Packages in a program need not have unique package names, +but there are two reserved package names with special meaning. +The name main indicates a command, not a library. +Commands are built into binaries and cannot be imported. +The name documentation indicates documentation for +a non-Go program in the directory. Files in package documentation +are ignored by the go command. +

+

+As a special case, if the package list is a list of .go files from a +single directory, the command is applied to a single synthesized +package made up of exactly those files, ignoring any build constraints +in those files and ignoring any other files in the directory. +

+

+Directory and file names that begin with "." or "_" are ignored +by the go tool, as are directories named "testdata". +

+

Description of testing flags

+

+The 'go test' command takes both flags that apply to 'go test' itself +and flags that apply to the resulting test binary. +

+

+Several of the flags control profiling and write an execution profile +suitable for "go tool pprof"; run "go tool pprof -h" for more +information. The --alloc_space, --alloc_objects, and --show_bytes +options of pprof control how the information is presented. +

+

+The following flags are recognized by the 'go test' command and +control the execution of any test: +

+
-bench regexp
+    Run (sub)benchmarks matching a regular expression.
+    The given regular expression is split into smaller ones by
+    top-level '/', where each must match the corresponding part of a
+    benchmark's identifier.
+    By default, no benchmarks run. To run all benchmarks,
+    use '-bench .' or '-bench=.'.
+
+-benchtime t
+    Run enough iterations of each benchmark to take t, specified
+    as a time.Duration (for example, -benchtime 1h30s).
+    The default is 1 second (1s).
+
+-count n
+    Run each test and benchmark n times (default 1).
+    If -cpu is set, run n times for each GOMAXPROCS value.
+    Examples are always run once.
+
+-cover
+    Enable coverage analysis.
+
+-covermode set,count,atomic
+    Set the mode for coverage analysis for the package[s]
+    being tested. The default is "set" unless -race is enabled,
+    in which case it is "atomic".
+    The values:
+	set: bool: does this statement run?
+	count: int: how many times does this statement run?
+	atomic: int: count, but correct in multithreaded tests;
+		significantly more expensive.
+    Sets -cover.
+
+-coverpkg pkg1,pkg2,pkg3
+    Apply coverage analysis in each test to the given list of packages.
+    The default is for each test to analyze only the package being tested.
+    Packages are specified as import paths.
+    Sets -cover.
+
+-cpu 1,2,4
+    Specify a list of GOMAXPROCS values for which the tests or
+    benchmarks should be executed.  The default is the current value
+    of GOMAXPROCS.
+
+-parallel n
+    Allow parallel execution of test functions that call t.Parallel.
+    The value of this flag is the maximum number of tests to run
+    simultaneously; by default, it is set to the value of GOMAXPROCS.
+    Note that -parallel only applies within a single test binary.
+    The 'go test' command may run tests for different packages
+    in parallel as well, according to the setting of the -p flag
+    (see 'go help build').
+
+-run regexp
+    Run only those tests and examples matching the regular expression.
+    For tests the regular expression is split into smaller ones by
+    top-level '/', where each must match the corresponding part of a
+    test's identifier.
+
+-short
+    Tell long-running tests to shorten their run time.
+    It is off by default but set during all.bash so that installing
+    the Go tree can run a sanity check but not spend time running
+    exhaustive tests.
+
+-timeout t
+    If a test runs longer than t, panic.
+    The default is 10 minutes (10m).
+
+-v
+    Verbose output: log all tests as they are run. Also print all
+    text from Log and Logf calls even if the test succeeds.
+
+

+The following flags are also recognized by 'go test' and can be used to +profile the tests during execution: +

+
-benchmem
+    Print memory allocation statistics for benchmarks.
+
+-blockprofile block.out
+    Write a goroutine blocking profile to the specified file
+    when all tests are complete.
+    Writes test binary as -c would.
+
+-blockprofilerate n
+    Control the detail provided in goroutine blocking profiles by
+    calling runtime.SetBlockProfileRate with n.
+    See 'go doc runtime.SetBlockProfileRate'.
+    The profiler aims to sample, on average, one blocking event every
+    n nanoseconds the program spends blocked.  By default,
+    if -test.blockprofile is set without this flag, all blocking events
+    are recorded, equivalent to -test.blockprofilerate=1.
+
+-coverprofile cover.out
+    Write a coverage profile to the file after all tests have passed.
+    Sets -cover.
+
+-cpuprofile cpu.out
+    Write a CPU profile to the specified file before exiting.
+    Writes test binary as -c would.
+
+-memprofile mem.out
+    Write a memory profile to the file after all tests have passed.
+    Writes test binary as -c would.
+
+-memprofilerate n
+    Enable more precise (and expensive) memory profiles by setting
+    runtime.MemProfileRate.  See 'go doc runtime.MemProfileRate'.
+    To profile all memory allocations, use -test.memprofilerate=1
+    and pass --alloc_space flag to the pprof tool.
+
+-mutexprofile mutex.out
+    Write a mutex contention profile to the specified file
+    when all tests are complete.
+    Writes test binary as -c would.
+
+-mutexprofilefraction n
+    Sample 1 in n stack traces of goroutines holding a
+    contended mutex.
+
+-outputdir directory
+    Place output files from profiling in the specified directory,
+    by default the directory in which "go test" is running.
+
+-trace trace.out
+    Write an execution trace to the specified file before exiting.
+
+

+Each of these flags is also recognized with an optional 'test.' prefix, +as in -test.v. When invoking the generated test binary (the result of +'go test -c') directly, however, the prefix is mandatory. +

+

+The 'go test' command rewrites or removes recognized flags, +as appropriate, both before and after the optional package list, +before invoking the test binary. +

+

+For instance, the command +

+
go test -v -myflag testdata -cpuprofile=prof.out -x
+
+

+will compile the test binary and then run it as +

+
pkg.test -test.v -myflag testdata -test.cpuprofile=prof.out
+
+

+(The -x flag is removed because it applies only to the go command's +execution, not to the test itself.) +

+

+The test flags that generate profiles (other than for coverage) also +leave the test binary in pkg.test for use when analyzing the profiles. +

+

+When 'go test' runs a test binary, it does so from within the +corresponding package's source code directory. Depending on the test, +it may be necessary to do the same when invoking a generated test +binary directly. +

+

+The command-line package list, if present, must appear before any +flag not known to the go test command. Continuing the example above, +the package list would have to appear before -myflag, but could appear +on either side of -v. +

+

+To keep an argument for a test binary from being interpreted as a +known flag or a package name, use -args (see 'go help test') which +passes the remainder of the command line through to the test binary +uninterpreted and unaltered. +

+

+For instance, the command +

+
go test -v -args -x -v
+
+

+will compile the test binary and then run it as +

+
pkg.test -test.v -x -v
+
+

+Similarly, +

+
go test -args math
+
+

+will compile the test binary and then run it as +

+
pkg.test math
+
+

+In the first example, the -x and the second -v are passed through to the +test binary unchanged and with no effect on the go command itself. +In the second example, the argument math is passed through to the test +binary, instead of being interpreted as the package list. +

+

Description of testing functions

+

+The 'go test' command expects to find test, benchmark, and example functions +in the "*_test.go" files corresponding to the package under test. +

+

+A test function is one named TestXXX (where XXX is any alphanumeric string +not starting with a lower case letter) and should have the signature, +

+
func TestXXX(t *testing.T) { ... }
+
+

+A benchmark function is one named BenchmarkXXX and should have the signature, +

+
func BenchmarkXXX(b *testing.B) { ... }
+
+

+An example function is similar to a test function but, instead of using +*testing.T to report success or failure, prints output to os.Stdout. +If the last comment in the function starts with "Output:" then the output +is compared exactly against the comment (see examples below). If the last +comment begins with "Unordered output:" then the output is compared to the +comment, however the order of the lines is ignored. An example with no such +comment is compiled but not executed. An example with no text after +"Output:" is compiled, executed, and expected to produce no output. +

+

+Godoc displays the body of ExampleXXX to demonstrate the use +of the function, constant, or variable XXX. An example of a method M with +receiver type T or *T is named ExampleT_M. There may be multiple examples +for a given function, constant, or variable, distinguished by a trailing _xxx, +where xxx is a suffix not beginning with an upper case letter. +

+

+Here is an example of an example: +

+
func ExamplePrintln() {
+	Println("The output of\nthis example.")
+	// Output: The output of
+	// this example.
+}
+
+

+Here is another example where the ordering of the output is ignored: +

+
func ExamplePerm() {
+	for _, value := range Perm(4) {
+		fmt.Println(value)
+	}
+
+	// Unordered output: 4
+	// 2
+	// 1
+	// 3
+	// 0
+}
+
+

+The entire test file is presented as the example when it contains a single +example function, at least one other function, type, variable, or constant +declaration, and no test or benchmark functions. +

+

+See the documentation of the testing package for more information. +

+ + + +
+
+ + + + + + + + +`)) diff --git a/vendor/golang.org/x/net/http2/h2i/h2i.go b/vendor/golang.org/x/net/http2/h2i/h2i.go index 76c778711c..62e57527c8 100644 --- a/vendor/golang.org/x/net/http2/h2i/h2i.go +++ b/vendor/golang.org/x/net/http2/h2i/h2i.go @@ -45,6 +45,7 @@ var ( flagNextProto = flag.String("nextproto", "h2,h2-14", "Comma-separated list of NPN/ALPN protocol names to negotiate.") flagInsecure = flag.Bool("insecure", false, "Whether to skip TLS cert validation") flagSettings = flag.String("settings", "empty", "comma-separated list of KEY=value settings for the initial SETTINGS frame. The magic value 'empty' sends an empty initial settings frame, and the magic value 'omit' causes no initial settings frame to be sent.") + flagDial = flag.String("dial", "", "optional ip:port to dial, to connect to a host:port but use a different SNI name (including a SNI name without DNS)") ) type command struct { @@ -147,11 +148,14 @@ func (app *h2i) Main() error { InsecureSkipVerify: *flagInsecure, } - hostAndPort := withPort(app.host) + hostAndPort := *flagDial + if hostAndPort == "" { + hostAndPort = withPort(app.host) + } log.Printf("Connecting to %s ...", hostAndPort) tc, err := tls.Dial("tcp", hostAndPort, cfg) if err != nil { - return fmt.Errorf("Error dialing %s: %v", withPort(app.host), err) + return fmt.Errorf("Error dialing %s: %v", hostAndPort, err) } log.Printf("Connected to %v", tc.RemoteAddr()) defer tc.Close() @@ -460,6 +464,15 @@ func (app *h2i) readFrames() error { app.hdec = hpack.NewDecoder(tableSize, app.onNewHeaderField) } app.hdec.Write(f.HeaderBlockFragment()) + case *http2.PushPromiseFrame: + if app.hdec == nil { + // TODO: if the user uses h2i to send a SETTINGS frame advertising + // something larger, we'll need to respect SETTINGS_HEADER_TABLE_SIZE + // and stuff here instead of using the 4k default. But for now: + tableSize := uint32(4 << 10) + app.hdec = hpack.NewDecoder(tableSize, app.onNewHeaderField) + } + app.hdec.Write(f.HeaderBlockFragment()) } } } diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go index f9bb033984..54726c2a3c 100644 --- a/vendor/golang.org/x/net/http2/hpack/encode.go +++ b/vendor/golang.org/x/net/http2/hpack/encode.go @@ -39,13 +39,14 @@ func NewEncoder(w io.Writer) *Encoder { tableSizeUpdate: false, w: w, } + e.dynTab.table.init() 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. +// if necessary. If produced, it is done before encoding f. func (e *Encoder) WriteField(f HeaderField) error { e.buf = e.buf[:0] @@ -88,29 +89,17 @@ func (e *Encoder) WriteField(f HeaderField) error { // 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 + i, nameValueMatch = staticTable.search(f) + if nameValueMatch { + return i, true } - j, nameValueMatch := e.dynTab.search(f) + j, nameValueMatch := e.dynTab.table.search(f) if nameValueMatch || (i == 0 && j != 0) { - i = j + uint64(len(staticTable)) + return j + uint64(staticTable.len()), nameValueMatch } - return + + return i, false } // SetMaxDynamicTableSize changes the dynamic header table size to v. diff --git a/vendor/golang.org/x/net/http2/hpack/encode_test.go b/vendor/golang.org/x/net/http2/hpack/encode_test.go index 92286f3bad..05f12db9cd 100644 --- a/vendor/golang.org/x/net/http2/hpack/encode_test.go +++ b/vendor/golang.org/x/net/http2/hpack/encode_test.go @@ -7,6 +7,8 @@ package hpack import ( "bytes" "encoding/hex" + "fmt" + "math/rand" "reflect" "strings" "testing" @@ -101,17 +103,20 @@ func TestEncoderSearchTable(t *testing.T) { wantMatch bool }{ // Name and Value match - {pair("foo", "bar"), uint64(len(staticTable) + 3), true}, - {pair("blake", "miz"), uint64(len(staticTable) + 2), true}, + {pair("foo", "bar"), uint64(staticTable.len()) + 3, true}, + {pair("blake", "miz"), uint64(staticTable.len()) + 2, true}, {pair(":method", "GET"), 2, true}, - // Only name match because Sensitive == true - {HeaderField{":method", "GET", true}, 2, false}, + // Only name match because Sensitive == true. This is allowed to match + // any ":method" entry. The current implementation uses the last entry + // added in newStaticTable. + {HeaderField{":method", "GET", true}, 3, false}, // Only Name matches - {pair("foo", "..."), uint64(len(staticTable) + 3), false}, - {pair("blake", "..."), uint64(len(staticTable) + 2), false}, - {pair(":method", "..."), 2, false}, + {pair("foo", "..."), uint64(staticTable.len()) + 3, false}, + {pair("blake", "..."), uint64(staticTable.len()) + 2, false}, + // As before, this is allowed to match any ":method" entry. + {pair(":method", "..."), 3, false}, // None match {pair("foo-", "bar"), 0, false}, @@ -328,3 +333,54 @@ func TestEncoderSetMaxDynamicTableSizeLimit(t *testing.T) { func removeSpace(s string) string { return strings.Replace(s, " ", "", -1) } + +func BenchmarkEncoderSearchTable(b *testing.B) { + e := NewEncoder(nil) + + // A sample of possible header fields. + // This is not based on any actual data from HTTP/2 traces. + var possible []HeaderField + for _, f := range staticTable.ents { + if f.Value == "" { + possible = append(possible, f) + continue + } + // Generate 5 random values, except for cookie and set-cookie, + // which we know can have many values in practice. + num := 5 + if f.Name == "cookie" || f.Name == "set-cookie" { + num = 25 + } + for i := 0; i < num; i++ { + f.Value = fmt.Sprintf("%s-%d", f.Name, i) + possible = append(possible, f) + } + } + for k := 0; k < 10; k++ { + f := HeaderField{ + Name: fmt.Sprintf("x-header-%d", k), + Sensitive: rand.Int()%2 == 0, + } + for i := 0; i < 5; i++ { + f.Value = fmt.Sprintf("%s-%d", f.Name, i) + possible = append(possible, f) + } + } + + // Add a random sample to the dynamic table. This very loosely simulates + // a history of 100 requests with 20 header fields per request. + for r := 0; r < 100*20; r++ { + f := possible[rand.Int31n(int32(len(possible)))] + // Skip if this is in the staticTable verbatim. + if _, has := staticTable.search(f); !has { + e.dynTab.add(f) + } + } + + b.ResetTimer() + for n := 0; n < b.N; n++ { + for _, f := range possible { + e.searchTable(f) + } + } +} diff --git a/vendor/golang.org/x/net/http2/hpack/hpack.go b/vendor/golang.org/x/net/http2/hpack/hpack.go index 135b9f62cd..176644acda 100644 --- a/vendor/golang.org/x/net/http2/hpack/hpack.go +++ b/vendor/golang.org/x/net/http2/hpack/hpack.go @@ -61,7 +61,7 @@ func (hf HeaderField) String() string { 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 + // 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 @@ -102,6 +102,7 @@ func NewDecoder(maxDynamicTableSize uint32, emitFunc func(f HeaderField)) *Decod emit: emitFunc, emitEnabled: true, } + d.dynTab.table.init() d.dynTab.allowedMaxSize = maxDynamicTableSize d.dynTab.setMaxSize(maxDynamicTableSize) return d @@ -154,12 +155,9 @@ func (d *Decoder) SetAllowedMaxDynamicTableSize(v uint32) { } 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 + table headerFieldTable + size uint32 // in bytes maxSize uint32 // current maxSize allowedMaxSize uint32 // maxSize may go up to this, inclusive } @@ -169,95 +167,45 @@ func (dt *dynamicTable) setMaxSize(v uint32) { 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.table.addEntry(f) dt.size += f.Size() dt.evict() } -// If we're too big, evict old stuff (front of the slice) +// If we're too big, evict old stuff. 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)] + var n int + for dt.size > dt.maxSize && n < dt.table.len() { + dt.size -= dt.table.ents[n].Size() + n++ } -} - -// 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 + dt.table.evictOldest(n) } func (d *Decoder) maxTableIndex() int { - return len(d.dynTab.ents) + len(staticTable) + // This should never overflow. RFC 7540 Section 6.5.2 limits the size of + // the dynamic table to 2^32 bytes, where each entry will occupy more than + // one byte. Further, the staticTable has a fixed, small length. + return d.dynTab.table.len() + staticTable.len() } func (d *Decoder) at(i uint64) (hf HeaderField, ok bool) { - if i < 1 { + // See Section 2.3.3. + if i == 0 { return } + if i <= uint64(staticTable.len()) { + return staticTable.ents[i-1], true + } 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 + // In the dynamic table, newer entries have lower indices. + // However, dt.ents[0] is the oldest entry. Hence, dt.ents is + // the reversed dynamic table. + dt := d.dynTab.table + return dt.ents[dt.len()-(int(i)-staticTable.len())], true } // Decode decodes an entire block. @@ -307,7 +255,7 @@ func (d *Decoder) Write(p []byte) (n int, err error) { err = d.parseHeaderFieldRepr() if err == errNeedMore { // Extra paranoia, making sure saveBuf won't - // get too large. All the varint and string + // 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. diff --git a/vendor/golang.org/x/net/http2/hpack/hpack_test.go b/vendor/golang.org/x/net/http2/hpack/hpack_test.go index 4c7b17bfb1..bc7f476782 100644 --- a/vendor/golang.org/x/net/http2/hpack/hpack_test.go +++ b/vendor/golang.org/x/net/http2/hpack/hpack_test.go @@ -5,117 +5,16 @@ package hpack import ( - "bufio" "bytes" "encoding/hex" "fmt" "math/rand" "reflect" - "regexp" - "strconv" "strings" "testing" "time" ) -func TestStaticTable(t *testing.T) { - fromSpec := ` - +-------+-----------------------------+---------------+ - | 1 | :authority | | - | 2 | :method | GET | - | 3 | :method | POST | - | 4 | :path | / | - | 5 | :path | /index.html | - | 6 | :scheme | http | - | 7 | :scheme | https | - | 8 | :status | 200 | - | 9 | :status | 204 | - | 10 | :status | 206 | - | 11 | :status | 304 | - | 12 | :status | 400 | - | 13 | :status | 404 | - | 14 | :status | 500 | - | 15 | accept-charset | | - | 16 | accept-encoding | gzip, deflate | - | 17 | accept-language | | - | 18 | accept-ranges | | - | 19 | accept | | - | 20 | access-control-allow-origin | | - | 21 | age | | - | 22 | allow | | - | 23 | authorization | | - | 24 | cache-control | | - | 25 | content-disposition | | - | 26 | content-encoding | | - | 27 | content-language | | - | 28 | content-length | | - | 29 | content-location | | - | 30 | content-range | | - | 31 | content-type | | - | 32 | cookie | | - | 33 | date | | - | 34 | etag | | - | 35 | expect | | - | 36 | expires | | - | 37 | from | | - | 38 | host | | - | 39 | if-match | | - | 40 | if-modified-since | | - | 41 | if-none-match | | - | 42 | if-range | | - | 43 | if-unmodified-since | | - | 44 | last-modified | | - | 45 | link | | - | 46 | location | | - | 47 | max-forwards | | - | 48 | proxy-authenticate | | - | 49 | proxy-authorization | | - | 50 | range | | - | 51 | referer | | - | 52 | refresh | | - | 53 | retry-after | | - | 54 | server | | - | 55 | set-cookie | | - | 56 | strict-transport-security | | - | 57 | transfer-encoding | | - | 58 | user-agent | | - | 59 | vary | | - | 60 | via | | - | 61 | www-authenticate | | - +-------+-----------------------------+---------------+ -` - bs := bufio.NewScanner(strings.NewReader(fromSpec)) - re := regexp.MustCompile(`\| (\d+)\s+\| (\S+)\s*\| (\S(.*\S)?)?\s+\|`) - for bs.Scan() { - l := bs.Text() - if !strings.Contains(l, "|") { - continue - } - m := re.FindStringSubmatch(l) - if m == nil { - continue - } - i, err := strconv.Atoi(m[1]) - if err != nil { - t.Errorf("Bogus integer on line %q", l) - continue - } - if i < 1 || i > len(staticTable) { - t.Errorf("Bogus index %d on line %q", i, l) - continue - } - if got, want := staticTable[i-1].Name, m[2]; got != want { - t.Errorf("header index %d name = %q; want %q", i, got, want) - } - if got, want := staticTable[i-1].Value, m[3]; got != want { - t.Errorf("header index %d value = %q; want %q", i, got, want) - } - } - if err := bs.Err(); err != nil { - t.Error(err) - } -} - func (d *Decoder) mustAt(idx int) HeaderField { if hf, ok := d.at(uint64(idx)); !ok { panic(fmt.Sprintf("bogus index %d", idx)) @@ -132,10 +31,10 @@ func TestDynamicTableAt(t *testing.T) { } d.dynTab.add(pair("foo", "bar")) d.dynTab.add(pair("blake", "miz")) - if got, want := at(len(staticTable)+1), (pair("blake", "miz")); got != want { + if got, want := at(staticTable.len()+1), (pair("blake", "miz")); got != want { t.Errorf("at(dyn 1) = %v; want %v", got, want) } - if got, want := at(len(staticTable)+2), (pair("foo", "bar")); got != want { + if got, want := at(staticTable.len()+2), (pair("foo", "bar")); got != want { t.Errorf("at(dyn 2) = %v; want %v", got, want) } if got, want := at(3), (pair(":method", "POST")); got != want { @@ -143,41 +42,6 @@ func TestDynamicTableAt(t *testing.T) { } } -func TestDynamicTableSearch(t *testing.T) { - dt := dynamicTable{} - dt.setMaxSize(4096) - - dt.add(pair("foo", "bar")) - dt.add(pair("blake", "miz")) - dt.add(pair(":method", "GET")) - - tests := []struct { - hf HeaderField - wantI uint64 - wantMatch bool - }{ - // Name and Value match - {pair("foo", "bar"), 3, true}, - {pair(":method", "GET"), 1, true}, - - // Only name match because of Sensitive == true - {HeaderField{"blake", "miz", true}, 2, false}, - - // Only Name matches - {pair("foo", "..."), 3, false}, - {pair("blake", "..."), 2, false}, - {pair(":method", "..."), 1, false}, - - // None match - {pair("foo-", "bar"), 0, false}, - } - for _, tt := range tests { - if gotI, gotMatch := dt.search(tt.hf); gotI != tt.wantI || gotMatch != tt.wantMatch { - t.Errorf("d.search(%+v) = %v, %v; want %v, %v", tt.hf, gotI, gotMatch, tt.wantI, tt.wantMatch) - } - } -} - func TestDynamicTableSizeEvict(t *testing.T) { d := NewDecoder(4096, nil) if want := uint32(0); d.dynTab.size != want { @@ -196,7 +60,7 @@ func TestDynamicTableSizeEvict(t *testing.T) { if want := uint32(6 + 32); d.dynTab.size != want { t.Fatalf("after setMaxSize, size = %d; want %d", d.dynTab.size, want) } - if got, want := d.mustAt(len(staticTable)+1), (pair("foo", "bar")); got != want { + if got, want := d.mustAt(staticTable.len()+1), (pair("foo", "bar")); got != want { t.Errorf("at(dyn 1) = %v; want %v", got, want) } add(pair("long", strings.Repeat("x", 500))) @@ -255,9 +119,9 @@ func TestDecoderDecode(t *testing.T) { } func (dt *dynamicTable) reverseCopy() (hf []HeaderField) { - hf = make([]HeaderField, len(dt.ents)) + hf = make([]HeaderField, len(dt.table.ents)) for i := range hf { - hf[i] = dt.ents[len(dt.ents)-1-i] + hf[i] = dt.table.ents[len(dt.table.ents)-1-i] } return } @@ -784,6 +648,10 @@ func TestHuffmanFuzzCrash(t *testing.T) { } } +func pair(name, value string) HeaderField { + return HeaderField{Name: name, Value: value} +} + func dehex(s string) []byte { s = strings.Replace(s, " ", "", -1) s = strings.Replace(s, "\n", "", -1) diff --git a/vendor/golang.org/x/net/http2/hpack/tables.go b/vendor/golang.org/x/net/http2/hpack/tables.go index b9283a0233..a66cfbea69 100644 --- a/vendor/golang.org/x/net/http2/hpack/tables.go +++ b/vendor/golang.org/x/net/http2/hpack/tables.go @@ -4,73 +4,200 @@ package hpack -func pair(name, value string) HeaderField { - return HeaderField{Name: name, Value: value} +import ( + "fmt" +) + +// headerFieldTable implements a list of HeaderFields. +// This is used to implement the static and dynamic tables. +type headerFieldTable struct { + // For static tables, entries are never evicted. + // + // For dynamic tables, entries are evicted from ents[0] and added to the end. + // Each entry has a unique id that starts at one and increments for each + // entry that is added. This unique id is stable across evictions, meaning + // it can be used as a pointer to a specific entry. As in hpack, unique ids + // are 1-based. The unique id for ents[k] is k + evictCount + 1. + // + // Zero is not a valid unique id. + // + // evictCount should not overflow in any remotely practical situation. In + // practice, we will have one dynamic table per HTTP/2 connection. If we + // assume a very powerful server that handles 1M QPS per connection and each + // request adds (then evicts) 100 entries from the table, it would still take + // 2M years for evictCount to overflow. + ents []HeaderField + evictCount uint64 + + // byName maps a HeaderField name to the unique id of the newest entry with + // the same name. See above for a definition of "unique id". + byName map[string]uint64 + + // byNameValue maps a HeaderField name/value pair to the unique id of the newest + // entry with the same name and value. See above for a definition of "unique id". + byNameValue map[pairNameValue]uint64 +} + +type pairNameValue struct { + name, value string +} + +func (t *headerFieldTable) init() { + t.byName = make(map[string]uint64) + t.byNameValue = make(map[pairNameValue]uint64) +} + +// len reports the number of entries in the table. +func (t *headerFieldTable) len() int { + return len(t.ents) +} + +// addEntry adds a new entry. +func (t *headerFieldTable) addEntry(f HeaderField) { + id := uint64(t.len()) + t.evictCount + 1 + t.byName[f.Name] = id + t.byNameValue[pairNameValue{f.Name, f.Value}] = id + t.ents = append(t.ents, f) +} + +// evictOldest evicts the n oldest entries in the table. +func (t *headerFieldTable) evictOldest(n int) { + if n > t.len() { + panic(fmt.Sprintf("evictOldest(%v) on table with %v entries", n, t.len())) + } + for k := 0; k < n; k++ { + f := t.ents[k] + id := t.evictCount + uint64(k) + 1 + if t.byName[f.Name] == id { + delete(t.byName, f.Name) + } + if p := (pairNameValue{f.Name, f.Value}); t.byNameValue[p] == id { + delete(t.byNameValue, p) + } + } + copy(t.ents, t.ents[n:]) + for k := t.len() - n; k < t.len(); k++ { + t.ents[k] = HeaderField{} // so strings can be garbage collected + } + t.ents = t.ents[:t.len()-n] + if t.evictCount+uint64(n) < t.evictCount { + panic("evictCount overflow") + } + t.evictCount += uint64(n) +} + +// search finds f in the table. 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. +// +// The returned index is a 1-based HPACK index. For dynamic tables, HPACK says +// that index 1 should be the newest entry, but t.ents[0] is the oldest entry, +// meaning t.ents is reversed for dynamic tables. Hence, when t is a dynamic +// table, the return value i actually refers to the entry t.ents[t.len()-i]. +// +// All tables are assumed to be a dynamic tables except for the global +// staticTable pointer. +// +// See Section 2.3.3. +func (t *headerFieldTable) search(f HeaderField) (i uint64, nameValueMatch bool) { + if !f.Sensitive { + if id := t.byNameValue[pairNameValue{f.Name, f.Value}]; id != 0 { + return t.idToIndex(id), true + } + } + if id := t.byName[f.Name]; id != 0 { + return t.idToIndex(id), false + } + return 0, false +} + +// idToIndex converts a unique id to an HPACK index. +// See Section 2.3.3. +func (t *headerFieldTable) idToIndex(id uint64) uint64 { + if id <= t.evictCount { + panic(fmt.Sprintf("id (%v) <= evictCount (%v)", id, t.evictCount)) + } + k := id - t.evictCount - 1 // convert id to an index t.ents[k] + if t != staticTable { + return uint64(t.len()) - k // dynamic table + } + return k + 1 } // 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 staticTable = newStaticTable() +var staticTableEntries = [...]HeaderField{ + {Name: ":authority"}, + {Name: ":method", Value: "GET"}, + {Name: ":method", Value: "POST"}, + {Name: ":path", Value: "/"}, + {Name: ":path", Value: "/index.html"}, + {Name: ":scheme", Value: "http"}, + {Name: ":scheme", Value: "https"}, + {Name: ":status", Value: "200"}, + {Name: ":status", Value: "204"}, + {Name: ":status", Value: "206"}, + {Name: ":status", Value: "304"}, + {Name: ":status", Value: "400"}, + {Name: ":status", Value: "404"}, + {Name: ":status", Value: "500"}, + {Name: "accept-charset"}, + {Name: "accept-encoding", Value: "gzip, deflate"}, + {Name: "accept-language"}, + {Name: "accept-ranges"}, + {Name: "accept"}, + {Name: "access-control-allow-origin"}, + {Name: "age"}, + {Name: "allow"}, + {Name: "authorization"}, + {Name: "cache-control"}, + {Name: "content-disposition"}, + {Name: "content-encoding"}, + {Name: "content-language"}, + {Name: "content-length"}, + {Name: "content-location"}, + {Name: "content-range"}, + {Name: "content-type"}, + {Name: "cookie"}, + {Name: "date"}, + {Name: "etag"}, + {Name: "expect"}, + {Name: "expires"}, + {Name: "from"}, + {Name: "host"}, + {Name: "if-match"}, + {Name: "if-modified-since"}, + {Name: "if-none-match"}, + {Name: "if-range"}, + {Name: "if-unmodified-since"}, + {Name: "last-modified"}, + {Name: "link"}, + {Name: "location"}, + {Name: "max-forwards"}, + {Name: "proxy-authenticate"}, + {Name: "proxy-authorization"}, + {Name: "range"}, + {Name: "referer"}, + {Name: "refresh"}, + {Name: "retry-after"}, + {Name: "server"}, + {Name: "set-cookie"}, + {Name: "strict-transport-security"}, + {Name: "transfer-encoding"}, + {Name: "user-agent"}, + {Name: "vary"}, + {Name: "via"}, + {Name: "www-authenticate"}, +} + +func newStaticTable() *headerFieldTable { + t := &headerFieldTable{} + t.init() + for _, e := range staticTableEntries[:] { + t.addEntry(e) + } + return t } var huffmanCodes = [256]uint32{ diff --git a/vendor/golang.org/x/net/http2/hpack/tables_test.go b/vendor/golang.org/x/net/http2/hpack/tables_test.go new file mode 100644 index 0000000000..d963f36354 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/tables_test.go @@ -0,0 +1,214 @@ +// Copyright 2017 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 ( + "bufio" + "regexp" + "strconv" + "strings" + "testing" +) + +func TestHeaderFieldTable(t *testing.T) { + table := &headerFieldTable{} + table.init() + table.addEntry(pair("key1", "value1-1")) + table.addEntry(pair("key2", "value2-1")) + table.addEntry(pair("key1", "value1-2")) + table.addEntry(pair("key3", "value3-1")) + table.addEntry(pair("key4", "value4-1")) + table.addEntry(pair("key2", "value2-2")) + + // Tests will be run twice: once before evicting anything, and + // again after evicting the three oldest entries. + tests := []struct { + f HeaderField + beforeWantStaticI uint64 + beforeWantMatch bool + afterWantStaticI uint64 + afterWantMatch bool + }{ + {HeaderField{"key1", "value1-1", false}, 1, true, 0, false}, + {HeaderField{"key1", "value1-2", false}, 3, true, 0, false}, + {HeaderField{"key1", "value1-3", false}, 3, false, 0, false}, + {HeaderField{"key2", "value2-1", false}, 2, true, 3, false}, + {HeaderField{"key2", "value2-2", false}, 6, true, 3, true}, + {HeaderField{"key2", "value2-3", false}, 6, false, 3, false}, + {HeaderField{"key4", "value4-1", false}, 5, true, 2, true}, + // Name match only, because sensitive. + {HeaderField{"key4", "value4-1", true}, 5, false, 2, false}, + // Key not found. + {HeaderField{"key5", "value5-x", false}, 0, false, 0, false}, + } + + staticToDynamic := func(i uint64) uint64 { + if i == 0 { + return 0 + } + return uint64(table.len()) - i + 1 // dynamic is the reversed table + } + + searchStatic := func(f HeaderField) (uint64, bool) { + old := staticTable + staticTable = table + defer func() { staticTable = old }() + return staticTable.search(f) + } + + searchDynamic := func(f HeaderField) (uint64, bool) { + return table.search(f) + } + + for _, test := range tests { + gotI, gotMatch := searchStatic(test.f) + if wantI, wantMatch := test.beforeWantStaticI, test.beforeWantMatch; gotI != wantI || gotMatch != wantMatch { + t.Errorf("before evictions: searchStatic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) + } + gotI, gotMatch = searchDynamic(test.f) + wantDynamicI := staticToDynamic(test.beforeWantStaticI) + if wantI, wantMatch := wantDynamicI, test.beforeWantMatch; gotI != wantI || gotMatch != wantMatch { + t.Errorf("before evictions: searchDynamic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) + } + } + + table.evictOldest(3) + + for _, test := range tests { + gotI, gotMatch := searchStatic(test.f) + if wantI, wantMatch := test.afterWantStaticI, test.afterWantMatch; gotI != wantI || gotMatch != wantMatch { + t.Errorf("after evictions: searchStatic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) + } + gotI, gotMatch = searchDynamic(test.f) + wantDynamicI := staticToDynamic(test.afterWantStaticI) + if wantI, wantMatch := wantDynamicI, test.afterWantMatch; gotI != wantI || gotMatch != wantMatch { + t.Errorf("after evictions: searchDynamic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) + } + } +} + +func TestHeaderFieldTable_LookupMapEviction(t *testing.T) { + table := &headerFieldTable{} + table.init() + table.addEntry(pair("key1", "value1-1")) + table.addEntry(pair("key2", "value2-1")) + table.addEntry(pair("key1", "value1-2")) + table.addEntry(pair("key3", "value3-1")) + table.addEntry(pair("key4", "value4-1")) + table.addEntry(pair("key2", "value2-2")) + + // evict all pairs + table.evictOldest(table.len()) + + if l := table.len(); l > 0 { + t.Errorf("table.len() = %d, want 0", l) + } + + if l := len(table.byName); l > 0 { + t.Errorf("len(table.byName) = %d, want 0", l) + } + + if l := len(table.byNameValue); l > 0 { + t.Errorf("len(table.byNameValue) = %d, want 0", l) + } +} + +func TestStaticTable(t *testing.T) { + fromSpec := ` + +-------+-----------------------------+---------------+ + | 1 | :authority | | + | 2 | :method | GET | + | 3 | :method | POST | + | 4 | :path | / | + | 5 | :path | /index.html | + | 6 | :scheme | http | + | 7 | :scheme | https | + | 8 | :status | 200 | + | 9 | :status | 204 | + | 10 | :status | 206 | + | 11 | :status | 304 | + | 12 | :status | 400 | + | 13 | :status | 404 | + | 14 | :status | 500 | + | 15 | accept-charset | | + | 16 | accept-encoding | gzip, deflate | + | 17 | accept-language | | + | 18 | accept-ranges | | + | 19 | accept | | + | 20 | access-control-allow-origin | | + | 21 | age | | + | 22 | allow | | + | 23 | authorization | | + | 24 | cache-control | | + | 25 | content-disposition | | + | 26 | content-encoding | | + | 27 | content-language | | + | 28 | content-length | | + | 29 | content-location | | + | 30 | content-range | | + | 31 | content-type | | + | 32 | cookie | | + | 33 | date | | + | 34 | etag | | + | 35 | expect | | + | 36 | expires | | + | 37 | from | | + | 38 | host | | + | 39 | if-match | | + | 40 | if-modified-since | | + | 41 | if-none-match | | + | 42 | if-range | | + | 43 | if-unmodified-since | | + | 44 | last-modified | | + | 45 | link | | + | 46 | location | | + | 47 | max-forwards | | + | 48 | proxy-authenticate | | + | 49 | proxy-authorization | | + | 50 | range | | + | 51 | referer | | + | 52 | refresh | | + | 53 | retry-after | | + | 54 | server | | + | 55 | set-cookie | | + | 56 | strict-transport-security | | + | 57 | transfer-encoding | | + | 58 | user-agent | | + | 59 | vary | | + | 60 | via | | + | 61 | www-authenticate | | + +-------+-----------------------------+---------------+ +` + bs := bufio.NewScanner(strings.NewReader(fromSpec)) + re := regexp.MustCompile(`\| (\d+)\s+\| (\S+)\s*\| (\S(.*\S)?)?\s+\|`) + for bs.Scan() { + l := bs.Text() + if !strings.Contains(l, "|") { + continue + } + m := re.FindStringSubmatch(l) + if m == nil { + continue + } + i, err := strconv.Atoi(m[1]) + if err != nil { + t.Errorf("Bogus integer on line %q", l) + continue + } + if i < 1 || i > staticTable.len() { + t.Errorf("Bogus index %d on line %q", i, l) + continue + } + if got, want := staticTable.ents[i-1].Name, m[2]; got != want { + t.Errorf("header index %d name = %q; want %q", i, got, want) + } + if got, want := staticTable.ents[i-1].Value, m[3]; got != want { + t.Errorf("header index %d value = %q; want %q", i, got, want) + } + } + if err := bs.Err(); err != nil { + t.Error(err) + } +} diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index b6b0f9ad15..d565f40e0c 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -376,12 +376,16 @@ func (s *sorter) SortStrings(ss []string) { // validPseudoPath reports whether v is a valid :path pseudo-header // value. It must be either: // -// *) a non-empty string starting with '/', but not with with "//", +// *) a non-empty string starting with '/' // *) the string '*', for OPTIONS requests. // // For now this is only used a quick check for deciding when to clean // up Opaque URLs before sending requests from the Transport. // See golang.org/issue/16847 +// +// We used to enforce that the path also didn't start with "//", but +// Google's GFE accepts such paths and Chrome sends them, so ignore +// that part of the spec. See golang.org/issue/19103. func validPseudoPath(v string) bool { - return (len(v) > 0 && v[0] == '/' && (len(v) == 1 || v[1] != '/')) || v == "*" + return (len(v) > 0 && v[0] == '/') || v == "*" } diff --git a/vendor/golang.org/x/net/http2/not_go16.go b/vendor/golang.org/x/net/http2/not_go16.go index efd2e1282c..508cebcc4d 100644 --- a/vendor/golang.org/x/net/http2/not_go16.go +++ b/vendor/golang.org/x/net/http2/not_go16.go @@ -7,7 +7,6 @@ package http2 import ( - "crypto/tls" "net/http" "time" ) @@ -20,27 +19,3 @@ 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_go18.go b/vendor/golang.org/x/net/http2/not_go18.go index efbf83c32c..6f8d3f86fa 100644 --- a/vendor/golang.org/x/net/http2/not_go18.go +++ b/vendor/golang.org/x/net/http2/not_go18.go @@ -25,3 +25,5 @@ func reqGetBody(req *http.Request) func() (io.ReadCloser, error) { } func reqBodyIsNoBody(io.ReadCloser) bool { return false } + +func go18httpNoBody() io.ReadCloser { return nil } // for tests only diff --git a/vendor/golang.org/x/net/http2/not_go19.go b/vendor/golang.org/x/net/http2/not_go19.go new file mode 100644 index 0000000000..5ae07726b7 --- /dev/null +++ b/vendor/golang.org/x/net/http2/not_go19.go @@ -0,0 +1,16 @@ +// 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.9 + +package http2 + +import ( + "net/http" +) + +func configureServer19(s *http.Server, conf *Server) error { + // not supported prior to go1.9 + return nil +} diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go index 53b7a1daf6..a6140099cb 100644 --- a/vendor/golang.org/x/net/http2/pipe.go +++ b/vendor/golang.org/x/net/http2/pipe.go @@ -10,13 +10,13 @@ import ( "sync" ) -// pipe is a goroutine-safe io.Reader/io.Writer pair. It's like +// 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 + c sync.Cond // c.L lazily initialized to &p.mu + b pipeBuffer // nil when done reading 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 @@ -32,6 +32,9 @@ type pipeBuffer interface { func (p *pipe) Len() int { p.mu.Lock() defer p.mu.Unlock() + if p.b == nil { + return 0 + } return p.b.Len() } @@ -47,7 +50,7 @@ func (p *pipe) Read(d []byte) (n int, err error) { if p.breakErr != nil { return 0, p.breakErr } - if p.b.Len() > 0 { + if p.b != nil && p.b.Len() > 0 { return p.b.Read(d) } if p.err != nil { @@ -55,6 +58,7 @@ func (p *pipe) Read(d []byte) (n int, err error) { p.readFn() // e.g. copy trailers p.readFn = nil // not sticky like p.err } + p.b = nil return 0, p.err } p.c.Wait() @@ -75,6 +79,9 @@ func (p *pipe) Write(d []byte) (n int, err error) { if p.err != nil { return 0, errClosedPipeWrite } + if p.breakErr != nil { + return len(d), nil // discard when there is no reader + } return p.b.Write(d) } @@ -109,6 +116,9 @@ func (p *pipe) closeWithError(dst *error, err error, fn func()) { return } p.readFn = fn + if dst == &p.breakErr { + p.b = nil + } *dst = err p.closeDoneLocked() } diff --git a/vendor/golang.org/x/net/http2/pipe_test.go b/vendor/golang.org/x/net/http2/pipe_test.go index 7632299996..1bf351ff6b 100644 --- a/vendor/golang.org/x/net/http2/pipe_test.go +++ b/vendor/golang.org/x/net/http2/pipe_test.go @@ -92,6 +92,13 @@ func TestPipeCloseWithError(t *testing.T) { if err != a { t.Logf("read error = %v, %v", err, a) } + // Read and Write should fail. + if n, err := p.Write([]byte("abc")); err != errClosedPipeWrite || n != 0 { + t.Errorf("Write(abc) after close\ngot %v, %v\nwant 0, %v", n, err, errClosedPipeWrite) + } + if n, err := p.Read(make([]byte, 1)); err == nil || n != 0 { + t.Errorf("Read() after close\ngot %v, nil\nwant 0, %v", n, errClosedPipeWrite) + } } func TestPipeBreakWithError(t *testing.T) { @@ -106,4 +113,18 @@ func TestPipeBreakWithError(t *testing.T) { if err != a { t.Logf("read error = %v, %v", err, a) } + if p.b != nil { + t.Errorf("buffer should be nil after BreakWithError") + } + // Write should succeed silently. + if n, err := p.Write([]byte("abc")); err != nil || n != 3 { + t.Errorf("Write(abc) after break\ngot %v, %v\nwant 0, nil", n, err) + } + if p.b != nil { + t.Errorf("buffer should be nil after Write") + } + // Read should fail. + if n, err := p.Read(make([]byte, 1)); err == nil || n != 0 { + t.Errorf("Read() after close\ngot %v, nil\nwant 0, not nil", n) + } } diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 3c6b90ccd5..eae143ddff 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -110,9 +110,41 @@ type Server struct { // activity for the purposes of IdleTimeout. IdleTimeout time.Duration + // MaxUploadBufferPerConnection is the size of the initial flow + // control window for each connections. The HTTP/2 spec does not + // allow this to be smaller than 65535 or larger than 2^32-1. + // If the value is outside this range, a default value will be + // used instead. + MaxUploadBufferPerConnection int32 + + // MaxUploadBufferPerStream is the size of the initial flow control + // window for each stream. The HTTP/2 spec does not allow this to + // be larger than 2^32-1. If the value is zero or larger than the + // maximum, a default value will be used instead. + MaxUploadBufferPerStream int32 + // NewWriteScheduler constructs a write scheduler for a connection. // If nil, a default scheduler is chosen. NewWriteScheduler func() WriteScheduler + + // Internal state. This is a pointer (rather than embedded directly) + // so that we don't embed a Mutex in this struct, which will make the + // struct non-copyable, which might break some callers. + state *serverInternalState +} + +func (s *Server) initialConnRecvWindowSize() int32 { + if s.MaxUploadBufferPerConnection > initialWindowSize { + return s.MaxUploadBufferPerConnection + } + return 1 << 20 +} + +func (s *Server) initialStreamRecvWindowSize() int32 { + if s.MaxUploadBufferPerStream > 0 { + return s.MaxUploadBufferPerStream + } + return 1 << 20 } func (s *Server) maxReadFrameSize() uint32 { @@ -129,6 +161,40 @@ func (s *Server) maxConcurrentStreams() uint32 { return defaultMaxStreams } +type serverInternalState struct { + mu sync.Mutex + activeConns map[*serverConn]struct{} +} + +func (s *serverInternalState) registerConn(sc *serverConn) { + if s == nil { + return // if the Server was used without calling ConfigureServer + } + s.mu.Lock() + s.activeConns[sc] = struct{}{} + s.mu.Unlock() +} + +func (s *serverInternalState) unregisterConn(sc *serverConn) { + if s == nil { + return // if the Server was used without calling ConfigureServer + } + s.mu.Lock() + delete(s.activeConns, sc) + s.mu.Unlock() +} + +func (s *serverInternalState) startGracefulShutdown() { + if s == nil { + return // if the Server was used without calling ConfigureServer + } + s.mu.Lock() + for sc := range s.activeConns { + sc.startGracefulShutdown() + } + s.mu.Unlock() +} + // ConfigureServer adds HTTP/2 support to a net/http Server. // // The configuration conf may be nil. @@ -141,9 +207,13 @@ func ConfigureServer(s *http.Server, conf *Server) error { if conf == nil { conf = new(Server) } + conf.state = &serverInternalState{activeConns: make(map[*serverConn]struct{})} if err := configureServer18(s, conf); err != nil { return err } + if err := configureServer19(s, conf); err != nil { + return err + } if s.TLSConfig == nil { s.TLSConfig = new(tls.Config) @@ -255,35 +325,37 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { 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 FrameWriteRequest, 8), - wantStartPushCh: make(chan startPushRequest, 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{}), - clientMaxStreams: math.MaxUint32, // Section 6.5.2: "Initially, there is no limit to this value" - advMaxStreams: s.maxConcurrentStreams(), - initialWindowSize: initialWindowSize, - maxFrameSize: initialMaxFrameSize, - headerTableSize: initialHeaderTableSize, - serveG: newGoroutineLock(), - pushEnabled: true, - } + 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 FrameWriteRequest, 8), + serveMsgCh: make(chan interface{}, 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{}), + clientMaxStreams: math.MaxUint32, // Section 6.5.2: "Initially, there is no limit to this value" + advMaxStreams: s.maxConcurrentStreams(), + initialStreamSendWindowSize: initialWindowSize, + maxFrameSize: initialMaxFrameSize, + headerTableSize: initialHeaderTableSize, + serveG: newGoroutineLock(), + pushEnabled: true, + } + + s.state.registerConn(sc) + defer s.state.unregisterConn(sc) // The net/http package sets the write deadline from the // http.Server.WriteTimeout during the TLS handshake, but then - // passes the connection off to us with the deadline already - // set. Disarm it here so that it is not applied to additional - // streams opened on this connection. - // TODO: implement WriteTimeout fully. See Issue 18437. + // passes the connection off to us with the deadline already set. + // Write deadlines are set per stream in serverConn.newStream. + // Disarm the net.Conn write deadline here. if sc.hs.WriteTimeout != 0 { sc.conn.SetWriteDeadline(time.Time{}) } @@ -294,6 +366,9 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { sc.writeSched = NewRandomWriteScheduler() } + // These start at the RFC-specified defaults. If there is a higher + // configured value for inflow, that will be updated when we send a + // WINDOW_UPDATE shortly after sending SETTINGS. sc.flow.add(initialWindowSize) sc.inflow.add(initialWindowSize) sc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf) @@ -376,10 +451,9 @@ type serverConn struct { doneServing chan struct{} // closed when serverConn.serve ends readFrameCh chan readFrameResult // written by serverConn.readFrames wantWriteFrameCh chan FrameWriteRequest // from handlers -> serve - wantStartPushCh chan startPushRequest // 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 + serveMsgCh chan interface{} // misc messages & code to send 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 @@ -387,38 +461,39 @@ type serverConn struct { writeSched WriteScheduler // 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 - curClientStreams uint32 // number of open streams initiated by the client - curPushedStreams uint32 // number of open streams initiated by server push - maxClientStreamID uint32 // max ever seen from client (odd), or 0 if there have been no client requests - maxPushPromiseID uint32 // ID of the last push promise (even), or 0 if there have been no pushes - streams map[uint32]*stream - initialWindowSize int32 - maxFrameSize int32 - headerTableSize uint32 - peerMaxHeaderListSize uint32 // zero means unknown (default) - canonHeader map[string]string // http2-lower-case -> Go-Canonical-Case - writingFrame bool // started writing a frame (on serve goroutine or separate) - writingFrameAsync bool // started a frame on its own goroutine but haven't heard back on wroteFrameCh - needsFrameFlush bool // last frame write wasn't a flush - inGoAway bool // we've started to or sent GOAWAY - inFrameScheduleLoop bool // whether we're in the scheduleFrameWrite loop - 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 - idleTimer *time.Timer // nil if unused - idleTimerCh <-chan time.Time // nil if unused + 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 + curClientStreams uint32 // number of open streams initiated by the client + curPushedStreams uint32 // number of open streams initiated by server push + maxClientStreamID uint32 // max ever seen from client (odd), or 0 if there have been no client requests + maxPushPromiseID uint32 // ID of the last push promise (even), or 0 if there have been no pushes + streams map[uint32]*stream + initialStreamSendWindowSize int32 + maxFrameSize int32 + headerTableSize uint32 + peerMaxHeaderListSize uint32 // zero means unknown (default) + canonHeader map[string]string // http2-lower-case -> Go-Canonical-Case + writingFrame bool // started writing a frame (on serve goroutine or separate) + writingFrameAsync bool // started a frame on its own goroutine but haven't heard back on wroteFrameCh + needsFrameFlush bool // last frame write wasn't a flush + inGoAway bool // we've started to or sent GOAWAY + inFrameScheduleLoop bool // whether we're in the scheduleFrameWrite loop + needToSendGoAway bool // we need to schedule a GOAWAY frame write + goAwayCode ErrCode + shutdownTimer *time.Timer // nil until used + idleTimer *time.Timer // nil if unused // Owned by the writeFrameAsync goroutine: headerWriteBuf bytes.Buffer hpackEncoder *hpack.Encoder + + // Used by startGracefulShutdown. + shutdownOnce sync.Once } func (sc *serverConn) maxHeaderListSize() uint32 { @@ -463,10 +538,10 @@ type stream struct { numTrailerValues int64 weight uint8 state streamState - resetQueued bool // RST_STREAM queued for write; set by sc.resetStream - gotTrailerHeader bool // HEADER frame for trailers was seen - wroteHeaders bool // whether we wrote headers (not status 100) - reqBuf []byte // if non-nil, body pipe buffer to return later at EOF + resetQueued bool // RST_STREAM queued for write; set by sc.resetStream + gotTrailerHeader bool // HEADER frame for trailers was seen + wroteHeaders bool // whether we wrote headers (not status 100) + writeDeadline *time.Timer // nil if unused trailer http.Header // accumulated trailers reqTrailer http.Header // handler's Request.Trailer @@ -696,48 +771,48 @@ func (sc *serverConn) serve() { {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 + {SettingInitialWindowSize, uint32(sc.srv.initialStreamRecvWindowSize())}, }, }) sc.unackedSettings++ + // Each connection starts with intialWindowSize inflow tokens. + // If a higher value is configured, we add more tokens. + if diff := sc.srv.initialConnRecvWindowSize() - initialWindowSize; diff > 0 { + sc.sendWindowUpdate(nil, int(diff)) + } + 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. + // "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) if sc.srv.IdleTimeout != 0 { - sc.idleTimer = time.NewTimer(sc.srv.IdleTimeout) + sc.idleTimer = time.AfterFunc(sc.srv.IdleTimeout, sc.onIdleTimer) defer sc.idleTimer.Stop() - sc.idleTimerCh = sc.idleTimer.C - } - - var gracefulShutdownCh <-chan struct{} - if sc.hs != nil { - gracefulShutdownCh = h1ServerShutdownChan(sc.hs) } go sc.readFrames() // closed by defer sc.conn.Close above - settingsTimer := time.NewTimer(firstSettingsTimeout) + settingsTimer := time.AfterFunc(firstSettingsTimeout, sc.onSettingsTimer) + defer settingsTimer.Stop() + loopNum := 0 for { loopNum++ select { case wr := <-sc.wantWriteFrameCh: + if se, ok := wr.write.(StreamError); ok { + sc.resetStream(se) + break + } sc.writeFrame(wr) - case spr := <-sc.wantStartPushCh: - sc.startPush(spr) case res := <-sc.wroteFrameCh: sc.wroteFrame(res) case res := <-sc.readFrameCh: @@ -745,26 +820,37 @@ func (sc *serverConn) serve() { return } res.readMore() - if settingsTimer.C != nil { + if settingsTimer != nil { settingsTimer.Stop() - settingsTimer.C = nil + settingsTimer = 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 <-gracefulShutdownCh: - gracefulShutdownCh = nil - sc.startGracefulShutdown() - case <-sc.shutdownTimerCh: - sc.vlogf("GOAWAY close timer fired; closing conn from %v", sc.conn.RemoteAddr()) - return - case <-sc.idleTimerCh: - sc.vlogf("connection is idle") - sc.goAway(ErrCodeNo) - case fn := <-sc.testHookCh: - fn(loopNum) + case msg := <-sc.serveMsgCh: + switch v := msg.(type) { + case func(int): + v(loopNum) // for testing + case *serverMessage: + switch v { + case settingsTimerMsg: + sc.logf("timeout waiting for SETTINGS frames from %v", sc.conn.RemoteAddr()) + return + case idleTimerMsg: + sc.vlogf("connection is idle") + sc.goAway(ErrCodeNo) + case shutdownTimerMsg: + sc.vlogf("GOAWAY close timer fired; closing conn from %v", sc.conn.RemoteAddr()) + return + case gracefulShutdownMsg: + sc.startGracefulShutdownInternal() + default: + panic("unknown timer") + } + case *startPushRequest: + sc.startPush(v) + default: + panic(fmt.Sprintf("unexpected type %T", v)) + } } if sc.inGoAway && sc.curOpenStreams() == 0 && !sc.needToSendGoAway && !sc.writingFrame { @@ -773,6 +859,36 @@ func (sc *serverConn) serve() { } } +func (sc *serverConn) awaitGracefulShutdown(sharedCh <-chan struct{}, privateCh chan struct{}) { + select { + case <-sc.doneServing: + case <-sharedCh: + close(privateCh) + } +} + +type serverMessage int + +// Message values sent to serveMsgCh. +var ( + settingsTimerMsg = new(serverMessage) + idleTimerMsg = new(serverMessage) + shutdownTimerMsg = new(serverMessage) + gracefulShutdownMsg = new(serverMessage) +) + +func (sc *serverConn) onSettingsTimer() { sc.sendServeMsg(settingsTimerMsg) } +func (sc *serverConn) onIdleTimer() { sc.sendServeMsg(idleTimerMsg) } +func (sc *serverConn) onShutdownTimer() { sc.sendServeMsg(shutdownTimerMsg) } + +func (sc *serverConn) sendServeMsg(msg interface{}) { + sc.serveG.checkNotOn() // NOT + select { + case sc.serveMsgCh <- msg: + case <-sc.doneServing: + } +} + // readPreface reads the ClientPreface greeting from the peer // or returns an error on timeout or an invalid greeting. func (sc *serverConn) readPreface() error { @@ -1014,7 +1130,11 @@ func (sc *serverConn) wroteFrame(res frameWriteResult) { // stateClosed after the RST_STREAM frame is // written. st.state = stateHalfClosedLocal - sc.resetStream(streamError(st.id, ErrCodeCancel)) + // Section 8.1: a server MAY request that the client abort + // transmission of a request without error by sending a + // RST_STREAM with an error code of NO_ERROR after sending + // a complete response. + sc.resetStream(streamError(st.id, ErrCodeNo)) case stateHalfClosedRemote: sc.closeStream(st, errHandlerComplete) } @@ -1086,10 +1206,19 @@ func (sc *serverConn) scheduleFrameWrite() { sc.inFrameScheduleLoop = false } -// startGracefulShutdown sends a GOAWAY with ErrCodeNo to tell the -// client we're gracefully shutting down. The connection isn't closed -// until all current streams are done. +// startGracefulShutdown gracefully shuts down a connection. This +// sends GOAWAY with ErrCodeNo to tell the client we're gracefully +// shutting down. The connection isn't closed until all current +// streams are done. +// +// startGracefulShutdown returns immediately; it does not wait until +// the connection has shut down. func (sc *serverConn) startGracefulShutdown() { + sc.serveG.checkNotOn() // NOT + sc.shutdownOnce.Do(func() { sc.sendServeMsg(gracefulShutdownMsg) }) +} + +func (sc *serverConn) startGracefulShutdownInternal() { sc.goAwayIn(ErrCodeNo, 0) } @@ -1121,8 +1250,7 @@ func (sc *serverConn) goAwayIn(code ErrCode, forceCloseIn time.Duration) { func (sc *serverConn) shutDownIn(d time.Duration) { sc.serveG.check() - sc.shutdownTimer = time.NewTimer(d) - sc.shutdownTimerCh = sc.shutdownTimer.C + sc.shutdownTimer = time.AfterFunc(d, sc.onShutdownTimer) } func (sc *serverConn) resetStream(se StreamError) { @@ -1305,6 +1433,9 @@ func (sc *serverConn) closeStream(st *stream, err error) { panic(fmt.Sprintf("invariant; can't close stream in state %v", st.state)) } st.state = stateClosed + if st.writeDeadline != nil { + st.writeDeadline.Stop() + } if st.isPushed() { sc.curPushedStreams-- } else { @@ -1317,7 +1448,7 @@ func (sc *serverConn) closeStream(st *stream, err error) { sc.idleTimer.Reset(sc.srv.IdleTimeout) } if h1ServerKeepAlivesDisabled(sc.hs) { - sc.startGracefulShutdown() + sc.startGracefulShutdownInternal() } } if p := st.body; p != nil { @@ -1395,9 +1526,9 @@ func (sc *serverConn) processSettingInitialWindowSize(val uint32) error { // 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 + old := sc.initialStreamSendWindowSize + sc.initialStreamSendWindowSize = int32(val) + growth := int32(val) - old // may be negative for _, st := range sc.streams { if !st.flow.add(growth) { // 6.9.2 Initial Flow Control Window Size @@ -1504,7 +1635,7 @@ func (sc *serverConn) processGoAway(f *GoAwayFrame) error { } else { sc.vlogf("http2: received GOAWAY %+v, starting graceful shutdown", f) } - sc.startGracefulShutdown() + sc.startGracefulShutdownInternal() // http://tools.ietf.org/html/rfc7540#section-6.8 // We should not create any new streams, which means we should disable push. sc.pushEnabled = false @@ -1543,6 +1674,12 @@ func (st *stream) copyTrailersToHandlerRequest() { } } +// onWriteTimeout is run on its own goroutine (from time.AfterFunc) +// when the stream's WriteTimeout has fired. +func (st *stream) onWriteTimeout() { + st.sc.writeFrameFromHandler(FrameWriteRequest{write: streamError(st.id, ErrCodeInternal)}) +} + func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { sc.serveG.check() id := f.StreamID @@ -1719,9 +1856,12 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream } 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 + st.flow.add(sc.initialStreamSendWindowSize) + st.inflow.conn = &sc.inflow // link to conn-level counter + st.inflow.add(sc.srv.initialStreamRecvWindowSize()) + if sc.hs.WriteTimeout != 0 { + st.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, st.onWriteTimeout) + } sc.streams[id] = st sc.writeSched.OpenStream(st.id, OpenStreamOptions{PusherID: pusherID}) @@ -1785,16 +1925,14 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res return nil, nil, err } if bodyOpen { - st.reqBuf = getRequestBodyBuf() - req.Body.(*requestBody).pipe = &pipe{ - b: &fixedBuffer{buf: st.reqBuf}, - } - if vv, ok := rp.header["Content-Length"]; ok { req.ContentLength, _ = strconv.ParseInt(vv[0], 10, 64) } else { req.ContentLength = -1 } + req.Body.(*requestBody).pipe = &pipe{ + b: &dataBuffer{expected: req.ContentLength}, + } } return rw, req, nil } @@ -1890,24 +2028,6 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r return rw, req, nil } -var reqBodyCache = make(chan []byte, 8) - -func getRequestBodyBuf() []byte { - select { - case b := <-reqBodyCache: - return b - default: - return make([]byte, initialWindowSize) - } -} - -func putRequestBodyBuf(b []byte) { - select { - case reqBodyCache <- b: - default: - } -} - // Run on its own goroutine. func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) { didPanic := true @@ -2003,12 +2123,6 @@ func (sc *serverConn) noteBodyReadFromHandler(st *stream, n int, err error) { case <-sc.doneServing: } } - if err == io.EOF { - if buf := st.reqBuf; buf != nil { - st.reqBuf = nil // shouldn't matter; field unused by other - putRequestBodyBuf(buf) - } - } } func (sc *serverConn) noteBodyRead(st *stream, n int) { @@ -2103,8 +2217,8 @@ func (b *requestBody) Read(p []byte) (n int, err error) { return } -// responseWriter is the http.ResponseWriter implementation. It's -// intentionally small (1 pointer wide) to minimize garbage. The +// 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 @@ -2138,6 +2252,7 @@ type responseWriterState struct { 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 + dirty bool // a Write failed; don't reuse this responseWriterState sentContentLen int64 // non-zero if handler set a Content-Length header wroteBytes int64 @@ -2219,6 +2334,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { date: date, }) if err != nil { + rws.dirty = true return 0, err } if endStream { @@ -2240,6 +2356,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { 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 { + rws.dirty = true return 0, err } } @@ -2251,6 +2368,9 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { trailers: rws.trailers, endStream: true, }) + if err != nil { + rws.dirty = true + } return len(p), err } return len(p), nil @@ -2278,7 +2398,7 @@ const TrailerPrefix = "Trailer:" // 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 +// 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), @@ -2390,7 +2510,7 @@ func cloneHeader(h http.Header) http.Header { // // * Handler calls w.Write or w.WriteString -> // * -> rws.bw (*bufio.Writer) -> -// * (Handler migth call Flush) +// * (Handler might call Flush) // * -> chunkWriter{rws} // * -> responseWriterState.writeChunk(p []byte) // * -> responseWriterState.writeChunk (most of the magic; see comment there) @@ -2429,10 +2549,19 @@ func (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, func (w *responseWriter) handlerDone() { rws := w.rws + dirty := rws.dirty rws.handlerDone = true w.Flush() w.rws = nil - responseWriterStatePool.Put(rws) + if !dirty { + // Only recycle the pool if all prior Write calls to + // the serverConn goroutine completed successfully. If + // they returned earlier due to resets from the peer + // there might still be write goroutines outstanding + // from the serverConn referencing the rws memory. See + // issue 20704. + responseWriterStatePool.Put(rws) + } } // Push errors. @@ -2514,7 +2643,7 @@ func (w *responseWriter) push(target string, opts pushOptions) error { return fmt.Errorf("method %q must be GET or HEAD", opts.Method) } - msg := startPushRequest{ + msg := &startPushRequest{ parent: st, method: opts.Method, url: u, @@ -2527,7 +2656,7 @@ func (w *responseWriter) push(target string, opts pushOptions) error { return errClientDisconnected case <-st.cw: return errStreamClosed - case sc.wantStartPushCh <- msg: + case sc.serveMsgCh <- msg: } select { @@ -2549,7 +2678,7 @@ type startPushRequest struct { done chan error } -func (sc *serverConn) startPush(msg startPushRequest) { +func (sc *serverConn) startPush(msg *startPushRequest) { sc.serveG.check() // http://tools.ietf.org/html/rfc7540#section-6.6. @@ -2588,7 +2717,7 @@ func (sc *serverConn) startPush(msg startPushRequest) { // A server that is unable to establish a new stream identifier can send a GOAWAY // frame so that the client is forced to open a new connection for new streams. if sc.maxPushPromiseID+2 >= 1<<31 { - sc.startGracefulShutdown() + sc.startGracefulShutdownInternal() return 0, ErrPushLimitReached } sc.maxPushPromiseID += 2 @@ -2713,31 +2842,6 @@ var badTrailer = map[string]bool{ "Www-Authenticate": true, } -// h1ServerShutdownChan returns a channel that will be closed when the -// provided *http.Server wants to shut down. -// -// This is a somewhat hacky way to get at http1 innards. It works -// when the http2 code is bundled into the net/http package in the -// standard library. The alternatives ended up making the cmd/go tool -// depend on http Servers. This is the lightest option for now. -// This is tested via the TestServeShutdown* tests in net/http. -func h1ServerShutdownChan(hs *http.Server) <-chan struct{} { - if fn := testh1ServerShutdownChan; fn != nil { - return fn(hs) - } - var x interface{} = hs - type I interface { - getDoneChan() <-chan struct{} - } - if hs, ok := x.(I); ok { - return hs.getDoneChan() - } - return nil -} - -// optional test hook for h1ServerShutdownChan. -var testh1ServerShutdownChan func(hs *http.Server) <-chan struct{} - // h1ServerKeepAlivesDisabled reports whether hs has its keep-alives // disabled. See comments on h1ServerShutdownChan above for why // the code is written this way. diff --git a/vendor/golang.org/x/net/http2/server_push_test.go b/vendor/golang.org/x/net/http2/server_push_test.go index f70edd3c72..918fd30dc4 100644 --- a/vendor/golang.org/x/net/http2/server_push_test.go +++ b/vendor/golang.org/x/net/http2/server_push_test.go @@ -508,7 +508,7 @@ func TestServer_Push_RejectAfterGoAway(t *testing.T) { return default: } - st.sc.testHookCh <- func(loopNum int) { + st.sc.serveMsgCh <- func(loopNum int) { if !st.sc.pushEnabled { readyOnce.Do(func() { close(ready) }) } diff --git a/vendor/golang.org/x/net/http2/server_test.go b/vendor/golang.org/x/net/http2/server_test.go index dfa4cff2ea..b4e8328941 100644 --- a/vendor/golang.org/x/net/http2/server_test.go +++ b/vendor/golang.org/x/net/http2/server_test.go @@ -80,6 +80,7 @@ type serverTesterOpt string var optOnlyServer = serverTesterOpt("only_server") var optQuiet = serverTesterOpt("quiet_logging") +var optFramerReuseFrames = serverTesterOpt("frame_reuse_frames") func newServerTester(t testing.TB, handler http.HandlerFunc, opts ...interface{}) *serverTester { resetHooks() @@ -91,7 +92,7 @@ func newServerTester(t testing.TB, handler http.HandlerFunc, opts ...interface{} NextProtos: []string{NextProtoTLS}, } - var onlyServer, quiet bool + var onlyServer, quiet, framerReuseFrames bool h2server := new(Server) for _, opt := range opts { switch v := opt.(type) { @@ -107,6 +108,8 @@ func newServerTester(t testing.TB, handler http.HandlerFunc, opts ...interface{} onlyServer = true case optQuiet: quiet = true + case optFramerReuseFrames: + framerReuseFrames = true } case func(net.Conn, http.ConnState): ts.Config.ConnState = v @@ -139,7 +142,6 @@ func newServerTester(t testing.TB, handler http.HandlerFunc, opts ...interface{} st.scMu.Lock() defer st.scMu.Unlock() st.sc = v - st.sc.testHookCh = make(chan func(int)) } log.SetOutput(io.MultiWriter(stderrv(), twriter{t: t, st: st})) if !onlyServer { @@ -149,6 +151,9 @@ func newServerTester(t testing.TB, handler http.HandlerFunc, opts ...interface{} } st.cc = cc st.fr = NewFramer(cc, cc) + if framerReuseFrames { + st.fr.SetReuseFrames() + } if !logFrameReads && !logFrameWrites { st.fr.debugReadLoggerf = func(m string, v ...interface{}) { m = time.Now().Format("2006-01-02 15:04:05.999999999 ") + strings.TrimPrefix(m, "http2: ") + "\n" @@ -181,7 +186,7 @@ func (st *serverTester) addLogFilter(phrase string) { func (st *serverTester) stream(id uint32) *stream { ch := make(chan *stream, 1) - st.sc.testHookCh <- func(int) { + st.sc.serveMsgCh <- func(int) { ch <- st.sc.streams[id] } return <-ch @@ -189,7 +194,7 @@ func (st *serverTester) stream(id uint32) *stream { func (st *serverTester) streamState(id uint32) streamState { ch := make(chan streamState, 1) - st.sc.testHookCh <- func(int) { + st.sc.serveMsgCh <- func(int) { state, _ := st.sc.state(id) ch <- state } @@ -199,7 +204,7 @@ func (st *serverTester) streamState(id uint32) streamState { // loopNum reports how many times this conn's select loop has gone around. func (st *serverTester) loopNum() int { lastc := make(chan int, 1) - st.sc.testHookCh <- func(loopNum int) { + st.sc.serveMsgCh <- func(loopNum int) { lastc <- loopNum } return <-lastc @@ -254,11 +259,52 @@ func (st *serverTester) Close() { // greet initiates the client's HTTP/2 connection into a state where // frames may be sent. func (st *serverTester) greet() { + st.greetAndCheckSettings(func(Setting) error { return nil }) +} + +func (st *serverTester) greetAndCheckSettings(checkSetting func(s Setting) error) { st.writePreface() st.writeInitialSettings() - st.wantSettings() + st.wantSettings().ForeachSetting(checkSetting) st.writeSettingsAck() - st.wantSettingsAck() + + // The initial WINDOW_UPDATE and SETTINGS ACK can come in any order. + var gotSettingsAck bool + var gotWindowUpdate bool + + for i := 0; i < 2; i++ { + f, err := st.readFrame() + if err != nil { + st.t.Fatal(err) + } + switch f := f.(type) { + case *SettingsFrame: + if !f.Header().Flags.Has(FlagSettingsAck) { + st.t.Fatal("Settings Frame didn't have ACK set") + } + gotSettingsAck = true + + case *WindowUpdateFrame: + if f.FrameHeader.StreamID != 0 { + st.t.Fatalf("WindowUpdate StreamID = %d; want 0", f.FrameHeader.StreamID) + } + incr := uint32((&Server{}).initialConnRecvWindowSize() - initialWindowSize) + if f.Increment != incr { + st.t.Fatalf("WindowUpdate increment = %d; want %d", f.Increment, incr) + } + gotWindowUpdate = true + + default: + st.t.Fatalf("Wanting a settings ACK or window update, received a %T", f) + } + } + + if !gotSettingsAck { + st.t.Fatalf("Didn't get a settings ACK") + } + if !gotWindowUpdate { + st.t.Fatalf("Didn't get a window update") + } } func (st *serverTester) writePreface() { @@ -318,7 +364,7 @@ func (st *serverTester) encodeHeaderRaw(headers ...string) []byte { } // encodeHeader encodes headers and returns their HPACK bytes. headers -// must contain an even number of key/value pairs. There may be +// must contain an even number of key/value pairs. There may be // multiple pairs for keys (e.g. "cookie"). The :method, :path, and // :scheme headers default to GET, / and https. The :authority header // defaults to st.ts.Listener.Addr(). @@ -578,12 +624,7 @@ func TestServer(t *testing.T) { server sends in the HTTP/2 connection. `) - st.writePreface() - st.writeInitialSettings() - st.wantSettings() - st.writeSettingsAck() - st.wantSettingsAck() - + st.greet() st.writeHeaders(HeadersFrameParam{ StreamID: 1, // clients send odd numbers BlockFragment: st.encodeHeader(), @@ -656,7 +697,7 @@ func TestServer_Request_Get_PathSlashes(t *testing.T) { } // TODO: add a test with EndStream=true on the HEADERS but setting a -// Content-Length anyway. Should we just omit it and force it to +// Content-Length anyway. Should we just omit it and force it to // zero? func TestServer_Request_Post_NoContentLength_EndStream(t *testing.T) { @@ -1192,7 +1233,7 @@ func TestServer_Handler_Sends_WindowUpdate_Padding(t *testing.T) { EndStream: false, EndHeaders: true, }) - st.writeDataPadded(1, false, []byte("abcdef"), []byte("1234")) + st.writeDataPadded(1, false, []byte("abcdef"), []byte{0, 0, 0, 0}) // Expect to immediately get our 5 bytes of padding back for // both the connection and stream (4 bytes of padding + 1 byte of length) @@ -2310,7 +2351,7 @@ func TestServer_NoCrash_HandlerClose_Then_ClientClose(t *testing.T) { // Sent when the a Handler closes while a client has // indicated it's still sending DATA: - st.wantRSTStream(1, ErrCodeCancel) + st.wantRSTStream(1, ErrCodeNo) // Now the handler has ended, so it's ended its // stream, but the client hasn't closed its side @@ -2390,6 +2431,7 @@ func TestServer_Rejects_TLSBadCipher(t *testing.T) { 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, + cipher_TLS_RSA_WITH_AES_128_CBC_SHA256, } }) defer st.Close() @@ -2595,11 +2637,9 @@ func TestServerDoS_MaxHeaderListSize(t *testing.T) { defer st.Close() // shake hands - st.writePreface() - st.writeInitialSettings() frameSize := defaultMaxReadFrameSize var advHeaderListSize *uint32 - st.wantSettings().ForeachSetting(func(s Setting) error { + st.greetAndCheckSettings(func(s Setting) error { switch s.ID { case SettingMaxFrameSize: if s.Val < minMaxFrameSize { @@ -2614,8 +2654,6 @@ func TestServerDoS_MaxHeaderListSize(t *testing.T) { } return nil }) - st.writeSettingsAck() - st.wantSettingsAck() if advHeaderListSize == nil { t.Errorf("server didn't advertise a max header list size") @@ -2994,6 +3032,89 @@ func BenchmarkServerPosts(b *testing.B) { } } +// Send a stream of messages from server to client in separate data frames. +// Brings up performance issues seen in long streams. +// Created to show problem in go issue #18502 +func BenchmarkServerToClientStreamDefaultOptions(b *testing.B) { + benchmarkServerToClientStream(b) +} + +// Justification for Change-Id: Iad93420ef6c3918f54249d867098f1dadfa324d8 +// Expect to see memory/alloc reduction by opting in to Frame reuse with the Framer. +func BenchmarkServerToClientStreamReuseFrames(b *testing.B) { + benchmarkServerToClientStream(b, optFramerReuseFrames) +} + +func benchmarkServerToClientStream(b *testing.B, newServerOpts ...interface{}) { + defer disableGoroutineTracking()() + b.ReportAllocs() + const msgLen = 1 + // default window size + const windowSize = 1<<16 - 1 + + // next message to send from the server and for the client to expect + nextMsg := func(i int) []byte { + msg := make([]byte, msgLen) + msg[0] = byte(i) + if len(msg) != msgLen { + panic("invalid test setup msg length") + } + return msg + } + + st := newServerTester(b, func(w http.ResponseWriter, r *http.Request) { + // Consume the (empty) body from th peer before replying, otherwise + // the server will sometimes (depending on scheduling) send the peer a + // a RST_STREAM with the CANCEL error code. + if n, err := io.Copy(ioutil.Discard, r.Body); n != 0 || err != nil { + b.Errorf("Copy error; got %v, %v; want 0, nil", n, err) + } + for i := 0; i < b.N; i += 1 { + w.Write(nextMsg(i)) + w.(http.Flusher).Flush() + } + }, newServerOpts...) + defer st.Close() + st.greet() + + const id = uint32(1) + + st.writeHeaders(HeadersFrameParam{ + StreamID: id, + BlockFragment: st.encodeHeader(":method", "POST"), + EndStream: false, + EndHeaders: true, + }) + + st.writeData(id, true, nil) + st.wantHeaders() + + var pendingWindowUpdate = uint32(0) + + for i := 0; i < b.N; i += 1 { + expected := nextMsg(i) + df := st.wantData() + if bytes.Compare(expected, df.data) != 0 { + b.Fatalf("Bad message received; want %v; got %v", expected, df.data) + } + // try to send infrequent but large window updates so they don't overwhelm the test + pendingWindowUpdate += uint32(len(df.data)) + if pendingWindowUpdate >= windowSize/2 { + if err := st.fr.WriteWindowUpdate(0, pendingWindowUpdate); err != nil { + b.Fatal(err) + } + if err := st.fr.WriteWindowUpdate(id, pendingWindowUpdate); err != nil { + b.Fatal(err) + } + pendingWindowUpdate = 0 + } + } + df := st.wantData() + if !df.StreamEnded() { + b.Fatalf("DATA didn't have END_STREAM; got %v", df) + } +} + // go-fuzz bug, originally reported at https://github.com/bradfitz/http2/issues/53 // Verify we don't hang. func TestIssue53(t *testing.T) { @@ -3293,8 +3414,9 @@ func TestServerHandleCustomConn(t *testing.T) { }() const testString = "my custom ConnectionState" fakeConnState := tls.ConnectionState{ - ServerName: testString, - Version: tls.VersionTLS12, + ServerName: testString, + Version: tls.VersionTLS12, + CipherSuite: cipher_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, } go s.ServeConn(connStateConn{c1, fakeConnState}, &ServeConnOpts{ BaseConfig: &http.Server{ @@ -3564,47 +3686,36 @@ func TestRequestBodyReadCloseRace(t *testing.T) { } } -func TestServerGracefulShutdown(t *testing.T) { - shutdownCh := make(chan struct{}) - defer func() { testh1ServerShutdownChan = nil }() - testh1ServerShutdownChan = func(*http.Server) <-chan struct{} { return shutdownCh } - - var st *serverTester - handlerDone := make(chan struct{}) - st = newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - defer close(handlerDone) - close(shutdownCh) +func TestIssue20704Race(t *testing.T) { + if testing.Short() && os.Getenv("GO_BUILDER_NAME") == "" { + t.Skip("skipping in short mode") + } + const ( + itemSize = 1 << 10 + itemCount = 100 + ) - ga := st.wantGoAway() - if ga.ErrCode != ErrCodeNo { - t.Errorf("GOAWAY error = %v; want ErrCodeNo", ga.ErrCode) - } - if ga.LastStreamID != 1 { - t.Errorf("GOAWAY LastStreamID = %v; want 1", ga.LastStreamID) + st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { + for i := 0; i < itemCount; i++ { + _, err := w.Write(make([]byte, itemSize)) + if err != nil { + return + } } - - w.Header().Set("x-foo", "bar") - }) + }, optOnlyServer) defer st.Close() - st.greet() - st.bodylessReq1() - - <-handlerDone - hf := st.wantHeaders() - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"x-foo", "bar"}, - {"content-type", "text/plain; charset=utf-8"}, - {"content-length", "0"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } + tr := &Transport{TLSClientConfig: tlsConfigInsecure} + defer tr.CloseIdleConnections() + cl := &http.Client{Transport: tr} - n, err := st.cc.Read([]byte{0}) - if n != 0 || err == nil { - t.Errorf("Read = %v, %v; want 0, non-nil", n, err) + for i := 0; i < 1000; i++ { + resp, err := cl.Get(st.ts.URL) + if err != nil { + t.Fatal(err) + } + // Force a RST stream to the server by closing without + // reading the body: + resp.Body.Close() } } diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index 0c7e859db1..e0dfe9f6a6 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -18,6 +18,7 @@ import ( "io/ioutil" "log" "math" + mathrand "math/rand" "net" "net/http" "sort" @@ -164,6 +165,7 @@ type ClientConn struct { goAwayDebug string // goAway frame's debug data, retained as a string streams map[uint32]*clientStream // client-initiated nextStreamID uint32 + pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams pings map[[8]byte]chan struct{} // in flight ping data to notification channel bw *bufio.Writer br *bufio.Reader @@ -216,35 +218,45 @@ type clientStream struct { 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) { +// awaitRequestCancel waits for the user to cancel a request or for the done +// channel to be signaled. A non-nil error is returned only if the request was +// canceled. +func awaitRequestCancel(req *http.Request, done <-chan struct{}) error { ctx := reqContext(req) if req.Cancel == nil && ctx.Done() == nil { - return + return nil } select { case <-req.Cancel: - cs.cancelStream() - cs.bufPipe.CloseWithError(errRequestCanceled) + return errRequestCanceled case <-ctx.Done(): + return ctx.Err() + case <-done: + return nil + } +} + +// awaitRequestCancel waits for the user to cancel a 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). If the request is canceled, then cs will be canceled and closed. +func (cs *clientStream) awaitRequestCancel(req *http.Request) { + if err := awaitRequestCancel(req, cs.done); err != nil { cs.cancelStream() - cs.bufPipe.CloseWithError(ctx.Err()) - case <-cs.done: + cs.bufPipe.CloseWithError(err) } } func (cs *clientStream) cancelStream() { - cs.cc.mu.Lock() + cc := cs.cc + cc.mu.Lock() didReset := cs.didReset cs.didReset = true - cs.cc.mu.Unlock() + cc.mu.Unlock() if !didReset { - cs.cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + cc.forgetStreamID(cs.ID) } } @@ -329,7 +341,7 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res } addr := authorityAddr(req.URL.Scheme, req.URL.Host) - for { + for retry := 0; ; retry++ { cc, err := t.connPool().GetClientConn(req, addr) if err != nil { t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err) @@ -337,9 +349,25 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res } traceGotConn(req, cc) res, err := cc.RoundTrip(req) - if err != nil { - if req, err = shouldRetryRequest(req, err); err == nil { - continue + if err != nil && retry <= 6 { + afterBodyWrite := false + if e, ok := err.(afterReqBodyWriteError); ok { + err = e + afterBodyWrite = true + } + if req, err = shouldRetryRequest(req, err, afterBodyWrite); err == nil { + // After the first retry, do exponential backoff with 10% jitter. + if retry == 0 { + continue + } + backoff := float64(uint(1) << (uint(retry) - 1)) + backoff += backoff * (0.1 * mathrand.Float64()) + select { + case <-time.After(time.Second * time.Duration(backoff)): + continue + case <-reqContext(req).Done(): + return nil, reqContext(req).Err() + } } } if err != nil { @@ -360,43 +388,60 @@ func (t *Transport) CloseIdleConnections() { } var ( - errClientConnClosed = errors.New("http2: client conn is closed") - errClientConnUnusable = errors.New("http2: client conn not usable") - - errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY") - errClientConnGotGoAwayAfterSomeReqBody = errors.New("http2: Transport received Server's graceful shutdown GOAWAY; some request body already written") + errClientConnClosed = errors.New("http2: client conn is closed") + errClientConnUnusable = errors.New("http2: client conn not usable") + errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY") ) +// afterReqBodyWriteError is a wrapper around errors returned by ClientConn.RoundTrip. +// It is used to signal that err happened after part of Request.Body was sent to the server. +type afterReqBodyWriteError struct { + err error +} + +func (e afterReqBodyWriteError) Error() string { + return e.err.Error() + "; some request body already written" +} + // shouldRetryRequest is called by RoundTrip when a request fails to get // response headers. It is always called with a non-nil error. // It returns either a request to retry (either the same request, or a // modified clone), or an error if the request can't be replayed. -func shouldRetryRequest(req *http.Request, err error) (*http.Request, error) { - switch err { - default: +func shouldRetryRequest(req *http.Request, err error, afterBodyWrite bool) (*http.Request, error) { + if !canRetryError(err) { return nil, err - case errClientConnUnusable, errClientConnGotGoAway: + } + if !afterBodyWrite { return req, nil - case errClientConnGotGoAwayAfterSomeReqBody: - // If the Body is nil (or http.NoBody), it's safe to reuse - // this request and its Body. - if req.Body == nil || reqBodyIsNoBody(req.Body) { - return req, nil - } - // Otherwise we depend on the Request having its GetBody - // func defined. - getBody := reqGetBody(req) // Go 1.8: getBody = req.GetBody - if getBody == nil { - return nil, errors.New("http2: Transport: peer server initiated graceful shutdown after some of Request.Body was written; define Request.GetBody to avoid this error") - } - body, err := getBody() - if err != nil { - return nil, err - } - newReq := *req - newReq.Body = body - return &newReq, nil } + // If the Body is nil (or http.NoBody), it's safe to reuse + // this request and its Body. + if req.Body == nil || reqBodyIsNoBody(req.Body) { + return req, nil + } + // Otherwise we depend on the Request having its GetBody + // func defined. + getBody := reqGetBody(req) // Go 1.8: getBody = req.GetBody + if getBody == nil { + return nil, fmt.Errorf("http2: Transport: cannot retry err [%v] after Request.Body was written; define Request.GetBody to avoid this error", err) + } + body, err := getBody() + if err != nil { + return nil, err + } + newReq := *req + newReq.Body = body + return &newReq, nil +} + +func canRetryError(err error) bool { + if err == errClientConnUnusable || err == errClientConnGotGoAway { + return true + } + if se, ok := err.(StreamError); ok { + return se.Code == ErrCodeRefusedStream + } + return false } func (t *Transport) dialClientConn(addr string, singleUse bool) (*ClientConn, error) { @@ -560,6 +605,8 @@ func (cc *ClientConn) setGoAway(f *GoAwayFrame) { } } +// CanTakeNewRequest reports whether the connection can take a new request, +// meaning it has not been closed or received or sent a GOAWAY. func (cc *ClientConn) CanTakeNewRequest() bool { cc.mu.Lock() defer cc.mu.Unlock() @@ -571,11 +618,10 @@ func (cc *ClientConn) canTakeNewRequestLocked() bool { return false } return cc.goAway == nil && !cc.closed && - int64(len(cc.streams)+1) < int64(cc.maxConcurrentStreams) && - cc.nextStreamID < math.MaxInt32 + int64(cc.nextStreamID)+int64(cc.pendingRequests) < math.MaxInt32 } -// onIdleTimeout is called from a time.AfterFunc goroutine. It will +// onIdleTimeout is called from a time.AfterFunc goroutine. It will // only be called when we're idle, but because we're coming from a new // goroutine, there could be a new request coming in at the same time, // so this simply calls the synchronized closeIfIdle to shut down this @@ -694,7 +740,7 @@ func checkConnHeaders(req *http.Request) error { // req.ContentLength, where 0 actually means zero (not unknown) and -1 // means unknown. func actualContentLength(req *http.Request) int64 { - if req.Body == nil { + if req.Body == nil || reqBodyIsNoBody(req.Body) { return 0 } if req.ContentLength != 0 { @@ -718,15 +764,14 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { hasTrailers := trailers != "" cc.mu.Lock() - cc.lastActive = time.Now() - if cc.closed || !cc.canTakeNewRequestLocked() { + if err := cc.awaitOpenSlotForRequest(req); err != nil { cc.mu.Unlock() - return nil, errClientConnUnusable + return nil, err } body := req.Body - hasBody := body != nil contentLen := actualContentLength(req) + hasBody := contentLen != 0 // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? var requestedGzip bool @@ -809,21 +854,20 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { // 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 + // 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 { - if re.err == errClientConnGotGoAway { - cc.mu.Lock() - if cs.startedWrite { - re.err = errClientConnGotGoAwayAfterSomeReqBody - } - cc.mu.Unlock() - } + cc.mu.Lock() + afterBodyWrite := cs.startedWrite + cc.mu.Unlock() cc.forgetStreamID(cs.ID) + if afterBodyWrite { + return nil, afterReqBodyWriteError{re.err} + } return nil, re.err } res.Request = req @@ -836,31 +880,31 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { case re := <-readLoopResCh: return handleReadLoopResponse(re) case <-respHeaderTimer: - cc.forgetStreamID(cs.ID) if !hasBody || bodyWritten { cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) } else { bodyWriter.cancel() cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) } + cc.forgetStreamID(cs.ID) 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) } + cc.forgetStreamID(cs.ID) 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) } + cc.forgetStreamID(cs.ID) return nil, errRequestCanceled case <-cs.peerReset: // processResetStream already removed the @@ -887,6 +931,45 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { } } +// awaitOpenSlotForRequest waits until len(streams) < maxConcurrentStreams. +// Must hold cc.mu. +func (cc *ClientConn) awaitOpenSlotForRequest(req *http.Request) error { + var waitingForConn chan struct{} + var waitingForConnErr error // guarded by cc.mu + for { + cc.lastActive = time.Now() + if cc.closed || !cc.canTakeNewRequestLocked() { + return errClientConnUnusable + } + if int64(len(cc.streams))+1 <= int64(cc.maxConcurrentStreams) { + if waitingForConn != nil { + close(waitingForConn) + } + return nil + } + // Unfortunately, we cannot wait on a condition variable and channel at + // the same time, so instead, we spin up a goroutine to check if the + // request is canceled while we wait for a slot to open in the connection. + if waitingForConn == nil { + waitingForConn = make(chan struct{}) + go func() { + if err := awaitRequestCancel(req, waitingForConn); err != nil { + cc.mu.Lock() + waitingForConnErr = err + cc.cond.Broadcast() + cc.mu.Unlock() + } + }() + } + cc.pendingRequests++ + cc.cond.Wait() + cc.pendingRequests-- + if waitingForConnErr != nil { + return waitingForConnErr + } + } +} + // 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) @@ -1246,7 +1329,9 @@ func (cc *ClientConn) streamByID(id uint32, andRemove bool) *clientStream { cc.idleTimer.Reset(cc.idleTimeout) } close(cs.done) - cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl + // Wake up checkResetOrDone via clientStream.awaitFlowControl and + // wake up RoundTrip if there is a pending request. + cc.cond.Broadcast() } return cs } @@ -1345,8 +1430,9 @@ func (rl *clientConnReadLoop) run() error { cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) } if se, ok := err.(StreamError); ok { - if cs := cc.streamByID(se.StreamID, true /*ended; remove it*/); cs != nil { + if cs := cc.streamByID(se.StreamID, false); cs != nil { cs.cc.writeStreamReset(cs.ID, se.Code, err) + cs.cc.forgetStreamID(cs.ID) if se.Cause == nil { se.Cause = cc.fr.errDetail } @@ -1528,8 +1614,7 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra return res, nil } - buf := new(bytes.Buffer) // TODO(bradfitz): recycle this garbage - cs.bufPipe = pipe{b: buf} + cs.bufPipe = pipe{b: &dataBuffer{expected: res.ContentLength}} cs.bytesRemain = res.ContentLength res.Body = transportResponseBody{cs} go cs.awaitRequestCancel(cs.req) @@ -1656,6 +1741,7 @@ func (b transportResponseBody) Close() error { cc.wmu.Lock() if !serverSentStreamEnd { cc.fr.WriteRSTStream(cs.ID, ErrCodeCancel) + cs.didReset = true } // Return connection-level flow control. if unread > 0 { @@ -1668,6 +1754,7 @@ func (b transportResponseBody) Close() error { } cs.bufPipe.BreakWithError(errClosedResponseBody) + cc.forgetStreamID(cs.ID) return nil } @@ -1703,12 +1790,6 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { return nil } if f.Length > 0 { - if len(data) > 0 && 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(f.Length) { @@ -1719,16 +1800,27 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { } // Return any padded flow control now, since we won't // refund it later on body reads. - if pad := int32(f.Length) - int32(len(data)); pad > 0 { - cs.inflow.add(pad) - cc.inflow.add(pad) + var refund int + if pad := int(f.Length) - len(data); pad > 0 { + refund += pad + } + // Return len(data) now if the stream is already closed, + // since data will never be read. + didReset := cs.didReset + if didReset { + refund += len(data) + } + if refund > 0 { + cc.inflow.add(int32(refund)) cc.wmu.Lock() - cc.fr.WriteWindowUpdate(0, uint32(pad)) - cc.fr.WriteWindowUpdate(cs.ID, uint32(pad)) + cc.fr.WriteWindowUpdate(0, uint32(refund)) + if !didReset { + cs.inflow.add(int32(refund)) + cc.fr.WriteWindowUpdate(cs.ID, uint32(refund)) + } cc.bw.Flush() cc.wmu.Unlock() } - didReset := cs.didReset cc.mu.Unlock() if len(data) > 0 && !didReset { diff --git a/vendor/golang.org/x/net/http2/transport_test.go b/vendor/golang.org/x/net/http2/transport_test.go index 8ef4f33883..ac4661f487 100644 --- a/vendor/golang.org/x/net/http2/transport_test.go +++ b/vendor/golang.org/x/net/http2/transport_test.go @@ -65,7 +65,8 @@ type fakeTLSConn struct { func (c *fakeTLSConn) ConnectionState() tls.ConnectionState { return tls.ConnectionState{ - Version: tls.VersionTLS12, + Version: tls.VersionTLS12, + CipherSuite: cipher_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, } } @@ -416,6 +417,11 @@ func TestActualContentLength(t *testing.T) { req: &http.Request{Body: panicReader{}, ContentLength: 5}, want: 5, }, + // http.NoBody means 0, not -1. + 3: { + req: &http.Request{Body: go18httpNoBody()}, + want: 0, + }, } for i, tt := range tests { got := actualContentLength(tt.req) @@ -679,7 +685,7 @@ func newLocalListener(t *testing.T) net.Listener { return ln } -func (ct *clientTester) greet() { +func (ct *clientTester) greet(settings ...Setting) { buf := make([]byte, len(ClientPreface)) _, err := io.ReadFull(ct.sc, buf) if err != nil { @@ -693,7 +699,7 @@ func (ct *clientTester) greet() { ct.t.Fatalf("Wanted client settings frame; got %v", f) _ = sf // stash it away? } - if err := ct.fr.WriteSettings(); err != nil { + if err := ct.fr.WriteSettings(settings...); err != nil { ct.t.Fatal(err) } if err := ct.fr.WriteSettingsAck(); err != nil { @@ -2204,12 +2210,11 @@ func testTransportUsesGoAwayDebugError(t *testing.T, failMidBody bool) { ct.run() } -// See golang.org/issue/16481 -func TestTransportReturnsUnusedFlowControl(t *testing.T) { +func testTransportReturnsUnusedFlowControl(t *testing.T, oneDataFrame bool) { ct := newClientTester(t) - clientClosed := make(chan bool, 1) - serverWroteBody := make(chan bool, 1) + clientClosed := make(chan struct{}) + serverWroteFirstByte := make(chan struct{}) ct.client = func() error { req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) @@ -2217,13 +2222,13 @@ func TestTransportReturnsUnusedFlowControl(t *testing.T) { if err != nil { return err } - <-serverWroteBody + <-serverWroteFirstByte if n, err := res.Body.Read(make([]byte, 1)); err != nil || n != 1 { return fmt.Errorf("body read = %v, %v; want 1, nil", n, err) } res.Body.Close() // leaving 4999 bytes unread - clientClosed <- true + close(clientClosed) return nil } @@ -2258,10 +2263,27 @@ func TestTransportReturnsUnusedFlowControl(t *testing.T) { EndStream: false, BlockFragment: buf.Bytes(), }) - ct.fr.WriteData(hf.StreamID, false, make([]byte, 5000)) // without ending stream - serverWroteBody <- true - <-clientClosed + // Two cases: + // - Send one DATA frame with 5000 bytes. + // - Send two DATA frames with 1 and 4999 bytes each. + // + // In both cases, the client should consume one byte of data, + // refund that byte, then refund the following 4999 bytes. + // + // In the second case, the server waits for the client connection to + // close before seconding the second DATA frame. This tests the case + // where the client receives a DATA frame after it has reset the stream. + if oneDataFrame { + ct.fr.WriteData(hf.StreamID, false /* don't end stream */, make([]byte, 5000)) + close(serverWroteFirstByte) + <-clientClosed + } else { + ct.fr.WriteData(hf.StreamID, false /* don't end stream */, make([]byte, 1)) + close(serverWroteFirstByte) + <-clientClosed + ct.fr.WriteData(hf.StreamID, false /* don't end stream */, make([]byte, 4999)) + } waitingFor := "RSTStreamFrame" for { @@ -2275,7 +2297,7 @@ func TestTransportReturnsUnusedFlowControl(t *testing.T) { switch waitingFor { case "RSTStreamFrame": if rf, ok := f.(*RSTStreamFrame); !ok || rf.ErrCode != ErrCodeCancel { - return fmt.Errorf("Expected a WindowUpdateFrame with code cancel; got %v", summarizeFrame(f)) + return fmt.Errorf("Expected a RSTStreamFrame with code cancel; got %v", summarizeFrame(f)) } waitingFor = "WindowUpdateFrame" case "WindowUpdateFrame": @@ -2289,6 +2311,16 @@ func TestTransportReturnsUnusedFlowControl(t *testing.T) { ct.run() } +// See golang.org/issue/16481 +func TestTransportReturnsUnusedFlowControlSingleWrite(t *testing.T) { + testTransportReturnsUnusedFlowControl(t, true) +} + +// See golang.org/issue/20469 +func TestTransportReturnsUnusedFlowControlMultipleWrites(t *testing.T) { + testTransportReturnsUnusedFlowControl(t, false) +} + // Issue 16612: adjust flow control on open streams when transport // receives SETTINGS with INITIAL_WINDOW_SIZE from server. func TestTransportAdjustsFlowControl(t *testing.T) { @@ -2406,7 +2438,7 @@ func TestTransportReturnsDataPaddingFlowControl(t *testing.T) { EndStream: false, BlockFragment: buf.Bytes(), }) - pad := []byte("12345") + pad := make([]byte, 5) ct.fr.WriteDataPadded(hf.StreamID, false, make([]byte, 5000), pad) // without ending stream f, err := ct.readNonSettingsFrame() @@ -2528,7 +2560,7 @@ func TestTransportBodyDoubleEndStream(t *testing.T) { } } -// golangorg/issue/16847 +// golang.org/issue/16847, golang.org/issue/19103 func TestTransportRequestPathPseudo(t *testing.T) { type result struct { path string @@ -2548,9 +2580,9 @@ func TestTransportRequestPathPseudo(t *testing.T) { }, want: result{path: "/foo"}, }, - // I guess we just don't let users request "//foo" as - // a path, since it's illegal to start with two - // slashes.... + // In Go 1.7, we accepted paths of "//foo". + // In Go 1.8, we rejected it (issue 16847). + // In Go 1.9, we accepted it again (issue 19103). 1: { req: &http.Request{ Method: "GET", @@ -2559,7 +2591,7 @@ func TestTransportRequestPathPseudo(t *testing.T) { Path: "//foo", }, }, - want: result{err: `invalid request :path "//foo"`}, + want: result{path: "//foo"}, }, // Opaque with //$Matching_Hostname/path @@ -2894,6 +2926,285 @@ func TestTransportRetryAfterGOAWAY(t *testing.T) { } } +func TestTransportRetryAfterRefusedStream(t *testing.T) { + clientDone := make(chan struct{}) + ct := newClientTester(t) + ct.client = func() error { + defer ct.cc.(*net.TCPConn).CloseWrite() + defer close(clientDone) + req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) + resp, err := ct.tr.RoundTrip(req) + if err != nil { + return fmt.Errorf("RoundTrip: %v", err) + } + resp.Body.Close() + if resp.StatusCode != 204 { + return fmt.Errorf("Status = %v; want 204", resp.StatusCode) + } + return nil + } + ct.server = func() error { + ct.greet() + var buf bytes.Buffer + enc := hpack.NewEncoder(&buf) + nreq := 0 + + for { + f, err := ct.fr.ReadFrame() + if err != nil { + select { + case <-clientDone: + // If the client's done, it + // will have reported any + // errors on its side. + return nil + default: + return err + } + } + switch f := f.(type) { + case *WindowUpdateFrame, *SettingsFrame: + case *HeadersFrame: + if !f.HeadersEnded() { + return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) + } + nreq++ + if nreq == 1 { + ct.fr.WriteRSTStream(f.StreamID, ErrCodeRefusedStream) + } else { + enc.WriteField(hpack.HeaderField{Name: ":status", Value: "204"}) + ct.fr.WriteHeaders(HeadersFrameParam{ + StreamID: f.StreamID, + EndHeaders: true, + EndStream: true, + BlockFragment: buf.Bytes(), + }) + } + default: + return fmt.Errorf("Unexpected client frame %v", f) + } + } + } + ct.run() +} + +func TestTransportRetryHasLimit(t *testing.T) { + // Skip in short mode because the total expected delay is 1s+2s+4s+8s+16s=29s. + if testing.Short() { + t.Skip("skipping long test in short mode") + } + clientDone := make(chan struct{}) + ct := newClientTester(t) + ct.client = func() error { + defer ct.cc.(*net.TCPConn).CloseWrite() + defer close(clientDone) + req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) + resp, err := ct.tr.RoundTrip(req) + if err == nil { + return fmt.Errorf("RoundTrip expected error, got response: %+v", resp) + } + t.Logf("expected error, got: %v", err) + return nil + } + ct.server = func() error { + ct.greet() + for { + f, err := ct.fr.ReadFrame() + if err != nil { + select { + case <-clientDone: + // If the client's done, it + // will have reported any + // errors on its side. + return nil + default: + return err + } + } + switch f := f.(type) { + case *WindowUpdateFrame, *SettingsFrame: + case *HeadersFrame: + if !f.HeadersEnded() { + return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) + } + ct.fr.WriteRSTStream(f.StreamID, ErrCodeRefusedStream) + default: + return fmt.Errorf("Unexpected client frame %v", f) + } + } + } + ct.run() +} + +func TestTransportRequestsStallAtServerLimit(t *testing.T) { + const maxConcurrent = 2 + + greet := make(chan struct{}) // server sends initial SETTINGS frame + gotRequest := make(chan struct{}) // server received a request + clientDone := make(chan struct{}) + + // Collect errors from goroutines. + var wg sync.WaitGroup + errs := make(chan error, 100) + defer func() { + wg.Wait() + close(errs) + for err := range errs { + t.Error(err) + } + }() + + // We will send maxConcurrent+2 requests. This checker goroutine waits for the + // following stages: + // 1. The first maxConcurrent requests are received by the server. + // 2. The client will cancel the next request + // 3. The server is unblocked so it can service the first maxConcurrent requests + // 4. The client will send the final request + wg.Add(1) + unblockClient := make(chan struct{}) + clientRequestCancelled := make(chan struct{}) + unblockServer := make(chan struct{}) + go func() { + defer wg.Done() + // Stage 1. + for k := 0; k < maxConcurrent; k++ { + <-gotRequest + } + // Stage 2. + close(unblockClient) + <-clientRequestCancelled + // Stage 3: give some time for the final RoundTrip call to be scheduled and + // verify that the final request is not sent. + time.Sleep(50 * time.Millisecond) + select { + case <-gotRequest: + errs <- errors.New("last request did not stall") + close(unblockServer) + return + default: + } + close(unblockServer) + // Stage 4. + <-gotRequest + }() + + ct := newClientTester(t) + ct.client = func() error { + var wg sync.WaitGroup + defer func() { + wg.Wait() + close(clientDone) + ct.cc.(*net.TCPConn).CloseWrite() + }() + for k := 0; k < maxConcurrent+2; k++ { + wg.Add(1) + go func(k int) { + defer wg.Done() + // Don't send the second request until after receiving SETTINGS from the server + // to avoid a race where we use the default SettingMaxConcurrentStreams, which + // is much larger than maxConcurrent. We have to send the first request before + // waiting because the first request triggers the dial and greet. + if k > 0 { + <-greet + } + // Block until maxConcurrent requests are sent before sending any more. + if k >= maxConcurrent { + <-unblockClient + } + req, _ := http.NewRequest("GET", fmt.Sprintf("https://dummy.tld/%d", k), nil) + if k == maxConcurrent { + // This request will be canceled. + cancel := make(chan struct{}) + req.Cancel = cancel + close(cancel) + _, err := ct.tr.RoundTrip(req) + close(clientRequestCancelled) + if err == nil { + errs <- fmt.Errorf("RoundTrip(%d) should have failed due to cancel", k) + return + } + } else { + resp, err := ct.tr.RoundTrip(req) + if err != nil { + errs <- fmt.Errorf("RoundTrip(%d): %v", k, err) + return + } + ioutil.ReadAll(resp.Body) + resp.Body.Close() + if resp.StatusCode != 204 { + errs <- fmt.Errorf("Status = %v; want 204", resp.StatusCode) + return + } + } + }(k) + } + return nil + } + + ct.server = func() error { + var wg sync.WaitGroup + defer wg.Wait() + + ct.greet(Setting{SettingMaxConcurrentStreams, maxConcurrent}) + + // Server write loop. + var buf bytes.Buffer + enc := hpack.NewEncoder(&buf) + writeResp := make(chan uint32, maxConcurrent+1) + + wg.Add(1) + go func() { + defer wg.Done() + <-unblockServer + for id := range writeResp { + buf.Reset() + enc.WriteField(hpack.HeaderField{Name: ":status", Value: "204"}) + ct.fr.WriteHeaders(HeadersFrameParam{ + StreamID: id, + EndHeaders: true, + EndStream: true, + BlockFragment: buf.Bytes(), + }) + } + }() + + // Server read loop. + var nreq int + for { + f, err := ct.fr.ReadFrame() + if err != nil { + select { + case <-clientDone: + // If the client's done, it will have reported any errors on its side. + return nil + default: + return err + } + } + switch f := f.(type) { + case *WindowUpdateFrame: + case *SettingsFrame: + // Wait for the client SETTINGS ack until ending the greet. + close(greet) + case *HeadersFrame: + if !f.HeadersEnded() { + return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) + } + gotRequest <- struct{}{} + nreq++ + writeResp <- f.StreamID + if nreq == maxConcurrent+1 { + close(writeResp) + } + default: + return fmt.Errorf("Unexpected client frame %v", f) + } + } + } + + ct.run() +} + func TestAuthorityAddr(t *testing.T) { tests := []struct { scheme, authority string @@ -2914,3 +3225,96 @@ func TestAuthorityAddr(t *testing.T) { } } } + +// Issue 20448: stop allocating for DATA frames' payload after +// Response.Body.Close is called. +func TestTransportAllocationsAfterResponseBodyClose(t *testing.T) { + megabyteZero := make([]byte, 1<<20) + + writeErr := make(chan error, 1) + + st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { + w.(http.Flusher).Flush() + var sum int64 + for i := 0; i < 100; i++ { + n, err := w.Write(megabyteZero) + sum += int64(n) + if err != nil { + writeErr <- err + return + } + } + t.Logf("wrote all %d bytes", sum) + writeErr <- nil + }, optOnlyServer) + defer st.Close() + + tr := &Transport{TLSClientConfig: tlsConfigInsecure} + defer tr.CloseIdleConnections() + c := &http.Client{Transport: tr} + res, err := c.Get(st.ts.URL) + if err != nil { + t.Fatal(err) + } + var buf [1]byte + if _, err := res.Body.Read(buf[:]); err != nil { + t.Error(err) + } + if err := res.Body.Close(); err != nil { + t.Error(err) + } + + trb, ok := res.Body.(transportResponseBody) + if !ok { + t.Fatalf("res.Body = %T; want transportResponseBody", res.Body) + } + if trb.cs.bufPipe.b != nil { + t.Errorf("response body pipe is still open") + } + + gotErr := <-writeErr + if gotErr == nil { + t.Errorf("Handler unexpectedly managed to write its entire response without getting an error") + } else if gotErr != errStreamClosed { + t.Errorf("Handler Write err = %v; want errStreamClosed", gotErr) + } +} + +// Issue 18891: make sure Request.Body == NoBody means no DATA frame +// is ever sent, even if empty. +func TestTransportNoBodyMeansNoDATA(t *testing.T) { + ct := newClientTester(t) + + unblockClient := make(chan bool) + + ct.client = func() error { + req, _ := http.NewRequest("GET", "https://dummy.tld/", go18httpNoBody()) + ct.tr.RoundTrip(req) + <-unblockClient + return nil + } + ct.server = func() error { + defer close(unblockClient) + defer ct.cc.(*net.TCPConn).Close() + ct.greet() + + for { + f, err := ct.fr.ReadFrame() + if err != nil { + return fmt.Errorf("ReadFrame while waiting for Headers: %v", err) + } + switch f := f.(type) { + default: + return fmt.Errorf("Got %T; want HeadersFrame", f) + case *WindowUpdateFrame, *SettingsFrame: + continue + case *HeadersFrame: + if !f.StreamEnded() { + return fmt.Errorf("got headers frame without END_STREAM") + } + return nil + } + } + } + ct.run() +} diff --git a/vendor/golang.org/x/net/http2/writesched_priority.go b/vendor/golang.org/x/net/http2/writesched_priority.go index 01132721bd..848fed6ec7 100644 --- a/vendor/golang.org/x/net/http2/writesched_priority.go +++ b/vendor/golang.org/x/net/http2/writesched_priority.go @@ -53,7 +53,7 @@ type PriorityWriteSchedulerConfig struct { } // NewPriorityWriteScheduler constructs a WriteScheduler that schedules -// frames by following HTTP/2 priorities as described in RFC 7340 Section 5.3. +// frames by following HTTP/2 priorities as described in RFC 7540 Section 5.3. // If cfg is nil, default options are used. func NewPriorityWriteScheduler(cfg *PriorityWriteSchedulerConfig) WriteScheduler { if cfg == nil { diff --git a/vendor/golang.org/x/net/icmp/helper.go b/vendor/golang.org/x/net/icmp/helper.go deleted file mode 100644 index 6c4e633bc9..0000000000 --- a/vendor/golang.org/x/net/icmp/helper.go +++ /dev/null @@ -1,27 +0,0 @@ -// 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 icmp - -import ( - "encoding/binary" - "unsafe" -) - -var ( - // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. - freebsdVersion uint32 - - nativeEndian binary.ByteOrder -) - -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - nativeEndian = binary.LittleEndian - } else { - nativeEndian = binary.BigEndian - } -} diff --git a/vendor/golang.org/x/net/icmp/ipv4.go b/vendor/golang.org/x/net/icmp/ipv4.go index 729ddc97c0..ffc66ed4d8 100644 --- a/vendor/golang.org/x/net/icmp/ipv4.go +++ b/vendor/golang.org/x/net/icmp/ipv4.go @@ -9,9 +9,14 @@ import ( "net" "runtime" + "golang.org/x/net/internal/socket" "golang.org/x/net/ipv4" ) +// freebsdVersion is set in sys_freebsd.go. +// See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. +var freebsdVersion uint32 + // ParseIPv4Header parses b as an IPv4 header of ICMP error message // invoking packet, which is contained in ICMP error message. func ParseIPv4Header(b []byte) (*ipv4.Header, error) { @@ -36,12 +41,12 @@ func ParseIPv4Header(b []byte) (*ipv4.Header, error) { } switch runtime.GOOS { case "darwin": - h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) case "freebsd": if freebsdVersion >= 1000000 { h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) } else { - h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) } default: h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) diff --git a/vendor/golang.org/x/net/icmp/ipv4_test.go b/vendor/golang.org/x/net/icmp/ipv4_test.go index 47cc00d076..058953f430 100644 --- a/vendor/golang.org/x/net/icmp/ipv4_test.go +++ b/vendor/golang.org/x/net/icmp/ipv4_test.go @@ -11,6 +11,7 @@ import ( "runtime" "testing" + "golang.org/x/net/internal/socket" "golang.org/x/net/ipv4" ) @@ -55,7 +56,7 @@ var ipv4HeaderLittleEndianTest = ipv4HeaderTest{ func TestParseIPv4Header(t *testing.T) { tt := &ipv4HeaderLittleEndianTest - if nativeEndian != binary.LittleEndian { + if socket.NativeEndian != binary.LittleEndian { t.Skip("no test for non-little endian machine yet") } diff --git a/vendor/golang.org/x/net/idna/example_test.go b/vendor/golang.org/x/net/idna/example_test.go new file mode 100644 index 0000000000..948f6eb208 --- /dev/null +++ b/vendor/golang.org/x/net/idna/example_test.go @@ -0,0 +1,70 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// Copyright 2017 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_test + +import ( + "fmt" + + "golang.org/x/net/idna" +) + +func ExampleProfile() { + // Raw Punycode has no restrictions and does no mappings. + fmt.Println(idna.ToASCII("")) + fmt.Println(idna.ToASCII("*.faß.com")) + fmt.Println(idna.Punycode.ToASCII("*.faß.com")) + + // Rewrite IDN for lookup. This (currently) uses transitional mappings to + // find a balance between IDNA2003 and IDNA2008 compatibility. + fmt.Println(idna.Lookup.ToASCII("")) + fmt.Println(idna.Lookup.ToASCII("www.faß.com")) + + // Convert an IDN to ASCII for registration purposes. This changes the + // encoding, but reports an error if the input was illformed. + fmt.Println(idna.Registration.ToASCII("")) + fmt.Println(idna.Registration.ToASCII("www.faß.com")) + + // Output: + // + // *.xn--fa-hia.com + // *.xn--fa-hia.com + // + // www.fass.com + // idna: invalid label "" + // www.xn--fa-hia.com +} + +func ExampleNew() { + var p *idna.Profile + + // Raw Punycode has no restrictions and does no mappings. + p = idna.New() + fmt.Println(p.ToASCII("*.faß.com")) + + // Do mappings. Note that star is not allowed in a DNS lookup. + p = idna.New( + idna.MapForLookup(), + idna.Transitional(true)) // Map ß -> ss + fmt.Println(p.ToASCII("*.faß.com")) + + // Lookup for registration. Also does not allow '*'. + p = idna.New(idna.ValidateForRegistration()) + fmt.Println(p.ToUnicode("*.faß.com")) + + // Set up a profile maps for lookup, but allows wild cards. + p = idna.New( + idna.MapForLookup(), + idna.Transitional(true), // Map ß -> ss + idna.StrictDomainName(false)) // Set more permissive ASCII rules. + fmt.Println(p.ToASCII("*.faß.com")) + + // Output: + // *.xn--fa-hia.com + // *.fass.com idna: disallowed rune U+002A + // *.faß.com idna: disallowed rune U+002A + // *.fass.com +} diff --git a/vendor/golang.org/x/net/idna/idna.go b/vendor/golang.org/x/net/idna/idna.go index 3daa8979e1..eb2473507b 100644 --- a/vendor/golang.org/x/net/idna/idna.go +++ b/vendor/golang.org/x/net/idna/idna.go @@ -1,61 +1,673 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// 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 idna implements IDNA2008 (Internationalized Domain Names for -// Applications), defined in RFC 5890, RFC 5891, RFC 5892, RFC 5893 and -// RFC 5894. +// Package idna implements IDNA2008 using the compatibility processing +// defined by UTS (Unicode Technical Standard) #46, which defines a standard to +// deal with the transition from IDNA2003. +// +// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC +// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. +// UTS #46 is defined in http://www.unicode.org/reports/tr46. +// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the +// differences between these two standards. package idna // import "golang.org/x/net/idna" import ( + "fmt" "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 + "golang.org/x/text/secure/bidirule" + "golang.org/x/text/unicode/norm" +) -// acePrefix is the ASCII Compatible Encoding prefix. -const acePrefix = "xn--" +// NOTE: Unlike common practice in Go APIs, the functions will return a +// sanitized domain name in case of errors. Browsers sometimes use a partially +// evaluated string as lookup. +// TODO: the current error handling is, in my opinion, the least opinionated. +// Other strategies are also viable, though: +// Option 1) Return an empty string in case of error, but allow the user to +// specify explicitly which errors to ignore. +// Option 2) Return the partially evaluated string if it is itself a valid +// string, otherwise return the empty string in case of error. +// Option 3) Option 1 and 2. +// Option 4) Always return an empty string for now and implement Option 1 as +// needed, and document that the return string may not be empty in case of +// error in the future. +// I think Option 1 is best, but it is quite opinionated. -// 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". +// ToASCII is a wrapper for Punycode.ToASCII. 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 Punycode.process(s, true) +} + +// ToUnicode is a wrapper for Punycode.ToUnicode. +func ToUnicode(s string) (string, error) { + return Punycode.process(s, false) +} + +// An Option configures a Profile at creation time. +type Option func(*options) + +// Transitional sets a Profile to use the Transitional mapping as defined in UTS +// #46. This will cause, for example, "ß" to be mapped to "ss". Using the +// transitional mapping provides a compromise between IDNA2003 and IDNA2008 +// compatibility. It is used by most browsers when resolving domain names. This +// option is only meaningful if combined with MapForLookup. +func Transitional(transitional bool) Option { + return func(o *options) { o.transitional = true } +} + +// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts +// are longer than allowed by the RFC. +func VerifyDNSLength(verify bool) Option { + return func(o *options) { o.verifyDNSLength = verify } +} + +// RemoveLeadingDots removes leading label separators. Leading runes that map to +// dots, such as U+3002, are removed as well. +// +// This is the behavior suggested by the UTS #46 and is adopted by some +// browsers. +func RemoveLeadingDots(remove bool) Option { + return func(o *options) { o.removeLeadingDots = remove } +} + +// ValidateLabels sets whether to check the mandatory label validation criteria +// as defined in Section 5.4 of RFC 5891. This includes testing for correct use +// of hyphens ('-'), normalization, validity of runes, and the context rules. +func ValidateLabels(enable bool) Option { + return func(o *options) { + // Don't override existing mappings, but set one that at least checks + // normalization if it is not set. + if o.mapping == nil && enable { + o.mapping = normalize } + o.trie = trie + o.validateLabels = enable + o.fromPuny = validateFromPunycode + } +} + +// StrictDomainName limits the set of permissable ASCII characters to those +// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the +// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// +// This option is useful, for instance, for browsers that allow characters +// outside this range, for example a '_' (U+005F LOW LINE). See +// http://www.rfc-editor.org/std/std3.txt for more details This option +// corresponds to the UseSTD3ASCIIRules option in UTS #46. +func StrictDomainName(use bool) Option { + return func(o *options) { + o.trie = trie + o.useSTD3Rules = use + o.fromPuny = validateFromPunycode + } +} + +// NOTE: the following options pull in tables. The tables should not be linked +// in as long as the options are not used. + +// BidiRule enables the Bidi rule as defined in RFC 5893. Any application +// that relies on proper validation of labels should include this rule. +func BidiRule() Option { + return func(o *options) { o.bidirule = bidirule.ValidString } +} + +// ValidateForRegistration sets validation options to verify that a given IDN is +// properly formatted for registration as defined by Section 4 of RFC 5891. +func ValidateForRegistration() Option { + return func(o *options) { + o.mapping = validateRegistration + StrictDomainName(true)(o) + ValidateLabels(true)(o) + VerifyDNSLength(true)(o) + BidiRule()(o) + } +} + +// MapForLookup sets validation and mapping options such that a given IDN is +// transformed for domain name lookup according to the requirements set out in +// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, +// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option +// to add this check. +// +// The mappings include normalization and mapping case, width and other +// compatibility mappings. +func MapForLookup() Option { + return func(o *options) { + o.mapping = validateAndMap + StrictDomainName(true)(o) + ValidateLabels(true)(o) + RemoveLeadingDots(true)(o) + } +} + +type options struct { + transitional bool + useSTD3Rules bool + validateLabels bool + verifyDNSLength bool + removeLeadingDots bool + + trie *idnaTrie + + // fromPuny calls validation rules when converting A-labels to U-labels. + fromPuny func(p *Profile, s string) error + + // mapping implements a validation and mapping step as defined in RFC 5895 + // or UTS 46, tailored to, for example, domain registration or lookup. + mapping func(p *Profile, s string) (string, error) + + // bidirule, if specified, checks whether s conforms to the Bidi Rule + // defined in RFC 5893. + bidirule func(s string) bool +} + +// A Profile defines the configuration of a IDNA mapper. +type Profile struct { + options +} + +func apply(o *options, opts []Option) { + for _, f := range opts { + f(o) } - return strings.Join(labels, "."), nil +} + +// New creates a new Profile. +// +// With no options, the returned Profile is the most permissive and equals the +// Punycode Profile. Options can be passed to further restrict the Profile. The +// MapForLookup and ValidateForRegistration options set a collection of options, +// for lookup and registration purposes respectively, which can be tailored by +// adding more fine-grained options, where later options override earlier +// options. +func New(o ...Option) *Profile { + p := &Profile{} + apply(&p.options, o) + return p +} + +// 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". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToASCII(s string) (string, error) { + return p.process(s, true) } // 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 +// ToUnicode("golang") is "golang". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToUnicode(s string) (string, error) { + pp := *p + pp.transitional = false + return pp.process(s, false) +} + +// String reports a string with a description of the profile for debugging +// purposes. The string format may change with different versions. +func (p *Profile) String() string { + s := "" + if p.transitional { + s = "Transitional" + } else { + s = "NonTransitional" + } + if p.useSTD3Rules { + s += ":UseSTD3Rules" + } + if p.validateLabels { + s += ":ValidateLabels" } - labels := strings.Split(s, ".") - for i, label := range labels { + if p.verifyDNSLength { + s += ":VerifyDNSLength" + } + return s +} + +var ( + // Punycode is a Profile that does raw punycode processing with a minimum + // of validation. + Punycode *Profile = punycode + + // Lookup is the recommended profile for looking up domain names, according + // to Section 5 of RFC 5891. The exact configuration of this profile may + // change over time. + Lookup *Profile = lookup + + // Display is the recommended profile for displaying domain names. + // The configuration of this profile may change over time. + Display *Profile = display + + // Registration is the recommended profile for checking whether a given + // IDN is valid for registration, according to Section 4 of RFC 5891. + Registration *Profile = registration + + punycode = &Profile{} + lookup = &Profile{options{ + transitional: true, + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + display = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + registration = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + verifyDNSLength: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateRegistration, + bidirule: bidirule.ValidString, + }} + + // TODO: profiles + // Register: recommended for approving domain names: don't do any mappings + // but rather reject on invalid input. Bundle or block deviation characters. +) + +type labelError struct{ label, code_ string } + +func (e labelError) code() string { return e.code_ } +func (e labelError) Error() string { + return fmt.Sprintf("idna: invalid label %q", e.label) +} + +type runeError rune + +func (e runeError) code() string { return "P1" } +func (e runeError) Error() string { + return fmt.Sprintf("idna: disallowed rune %U", e) +} + +// process implements the algorithm described in section 4 of UTS #46, +// see http://www.unicode.org/reports/tr46. +func (p *Profile) process(s string, toASCII bool) (string, error) { + var err error + if p.mapping != nil { + s, err = p.mapping(p, s) + } + // Remove leading empty labels. + if p.removeLeadingDots { + for ; len(s) > 0 && s[0] == '.'; s = s[1:] { + } + } + // It seems like we should only create this error on ToASCII, but the + // UTS 46 conformance tests suggests we should always check this. + if err == nil && p.verifyDNSLength && s == "" { + err = &labelError{s, "A4"} + } + labels := labelIter{orig: s} + for ; !labels.done(); labels.next() { + label := labels.label() + if label == "" { + // Empty labels are not okay. The label iterator skips the last + // label if it is empty. + if err == nil && p.verifyDNSLength { + err = &labelError{s, "A4"} + } + continue + } if strings.HasPrefix(label, acePrefix) { - u, err := decode(label[len(acePrefix):]) - if err != nil { - return "", err + u, err2 := decode(label[len(acePrefix):]) + if err2 != nil { + if err == nil { + err = err2 + } + // Spec says keep the old label. + continue + } + labels.set(u) + if err == nil && p.validateLabels { + err = p.fromPuny(p, u) + } + if err == nil { + // This should be called on NonTransitional, according to the + // spec, but that currently does not have any effect. Use the + // original profile to preserve options. + err = p.validateLabel(u) } - labels[i] = u + } else if err == nil { + err = p.validateLabel(label) } } - return strings.Join(labels, "."), nil + if toASCII { + for labels.reset(); !labels.done(); labels.next() { + label := labels.label() + if !ascii(label) { + a, err2 := encode(acePrefix, label) + if err == nil { + err = err2 + } + label = a + labels.set(a) + } + n := len(label) + if p.verifyDNSLength && err == nil && (n == 0 || n > 63) { + err = &labelError{label, "A4"} + } + } + } + s = labels.result() + if toASCII && p.verifyDNSLength && err == nil { + // Compute the length of the domain name minus the root label and its dot. + n := len(s) + if n > 0 && s[n-1] == '.' { + n-- + } + if len(s) < 1 || n > 253 { + err = &labelError{s, "A4"} + } + } + return s, err +} + +func normalize(p *Profile, s string) (string, error) { + return norm.NFC.String(s), nil +} + +func validateRegistration(p *Profile, s string) (string, error) { + if !norm.NFC.IsNormalString(s) { + return s, &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + // TODO: handle the NV8 defined in the Unicode idna data set to allow + // for strict conformance to IDNA2008. + case valid, deviation: + case disallowed, mapped, unknown, ignored: + r, _ := utf8.DecodeRuneInString(s[i:]) + return s, runeError(r) + } + i += sz + } + return s, nil +} + +func validateAndMap(p *Profile, s string) (string, error) { + var ( + err error + b []byte + k int + ) + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + start := i + i += sz + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + case valid: + continue + case disallowed: + if err == nil { + r, _ := utf8.DecodeRuneInString(s[start:]) + err = runeError(r) + } + continue + case mapped, deviation: + b = append(b, s[k:start]...) + b = info(v).appendMapping(b, s[start:i]) + case ignored: + b = append(b, s[k:start]...) + // drop the rune + case unknown: + b = append(b, s[k:start]...) + b = append(b, "\ufffd"...) + } + k = i + } + if k == 0 { + // No changes so far. + s = norm.NFC.String(s) + } else { + b = append(b, s[k:]...) + if norm.NFC.QuickSpan(b) != len(b) { + b = norm.NFC.Bytes(b) + } + // TODO: the punycode converters require strings as input. + s = string(b) + } + return s, err +} + +// A labelIter allows iterating over domain name labels. +type labelIter struct { + orig string + slice []string + curStart int + curEnd int + i int +} + +func (l *labelIter) reset() { + l.curStart = 0 + l.curEnd = 0 + l.i = 0 +} + +func (l *labelIter) done() bool { + return l.curStart >= len(l.orig) +} + +func (l *labelIter) result() string { + if l.slice != nil { + return strings.Join(l.slice, ".") + } + return l.orig +} + +func (l *labelIter) label() string { + if l.slice != nil { + return l.slice[l.i] + } + p := strings.IndexByte(l.orig[l.curStart:], '.') + l.curEnd = l.curStart + p + if p == -1 { + l.curEnd = len(l.orig) + } + return l.orig[l.curStart:l.curEnd] +} + +// next sets the value to the next label. It skips the last label if it is empty. +func (l *labelIter) next() { + l.i++ + if l.slice != nil { + if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" { + l.curStart = len(l.orig) + } + } else { + l.curStart = l.curEnd + 1 + if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' { + l.curStart = len(l.orig) + } + } +} + +func (l *labelIter) set(s string) { + if l.slice == nil { + l.slice = strings.Split(l.orig, ".") + } + l.slice[l.i] = s +} + +// acePrefix is the ASCII Compatible Encoding prefix. +const acePrefix = "xn--" + +func (p *Profile) simplify(cat category) category { + switch cat { + case disallowedSTD3Mapped: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = mapped + } + case disallowedSTD3Valid: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = valid + } + case deviation: + if !p.transitional { + cat = valid + } + case validNV8, validXV8: + // TODO: handle V2008 + cat = valid + } + return cat +} + +func validateFromPunycode(p *Profile, s string) error { + if !norm.NFC.IsNormalString(s) { + return &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + if c := p.simplify(info(v).category()); c != valid && c != deviation { + return &labelError{s, "V6"} + } + i += sz + } + return nil +} + +const ( + zwnj = "\u200c" + zwj = "\u200d" +) + +type joinState int8 + +const ( + stateStart joinState = iota + stateVirama + stateBefore + stateBeforeVirama + stateAfter + stateFAIL +) + +var joinStates = [][numJoinTypes]joinState{ + stateStart: { + joiningL: stateBefore, + joiningD: stateBefore, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateVirama, + }, + stateVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + }, + stateBefore: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + joinZWNJ: stateAfter, + joinZWJ: stateFAIL, + joinVirama: stateBeforeVirama, + }, + stateBeforeVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + }, + stateAfter: { + joiningL: stateFAIL, + joiningD: stateBefore, + joiningT: stateAfter, + joiningR: stateStart, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateAfter, // no-op as we can't accept joiners here + }, + stateFAIL: { + 0: stateFAIL, + joiningL: stateFAIL, + joiningD: stateFAIL, + joiningT: stateFAIL, + joiningR: stateFAIL, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateFAIL, + }, +} + +// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are +// already implicitly satisfied by the overall implementation. +func (p *Profile) validateLabel(s string) error { + if s == "" { + if p.verifyDNSLength { + return &labelError{s, "A4"} + } + return nil + } + if p.bidirule != nil && !p.bidirule(s) { + return &labelError{s, "B"} + } + if !p.validateLabels { + return nil + } + trie := p.trie // p.validateLabels is only set if trie is set. + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + // TODO: merge the use of this in the trie. + v, sz := trie.lookupString(s) + x := info(v) + if x.isModifier() { + return &labelError{s, "V5"} + } + // Quickly return in the absence of zero-width (non) joiners. + if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 { + return nil + } + st := stateStart + for i := 0; ; { + jt := x.joinType() + if s[i:i+sz] == zwj { + jt = joinZWJ + } else if s[i:i+sz] == zwnj { + jt = joinZWNJ + } + st = joinStates[st][jt] + if x.isViramaModifier() { + st = joinStates[st][joinVirama] + } + if i += sz; i == len(s) { + break + } + v, sz = trie.lookupString(s[i:]) + x = info(v) + } + if st == stateFAIL || st == stateAfter { + return &labelError{s, "C"} + } + return nil } func ascii(s string) bool { diff --git a/vendor/golang.org/x/net/idna/punycode.go b/vendor/golang.org/x/net/idna/punycode.go index 92e733f6a7..02c7d59af3 100644 --- a/vendor/golang.org/x/net/idna/punycode.go +++ b/vendor/golang.org/x/net/idna/punycode.go @@ -1,4 +1,6 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// 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. @@ -7,7 +9,6 @@ package idna // This file implements the Punycode algorithm from RFC 3492. import ( - "fmt" "math" "strings" "unicode/utf8" @@ -27,6 +28,8 @@ const ( tmin int32 = 1 ) +func punyError(s string) error { return &labelError{s, "A3"} } + // decode decodes a string as specified in section 6.2. func decode(encoded string) (string, error) { if encoded == "" { @@ -34,7 +37,7 @@ func decode(encoded string) (string, error) { } pos := 1 + strings.LastIndex(encoded, "-") if pos == 1 { - return "", fmt.Errorf("idna: invalid label %q", encoded) + return "", punyError(encoded) } if pos == len(encoded) { return encoded[:len(encoded)-1], nil @@ -50,16 +53,16 @@ func decode(encoded string) (string, error) { oldI, w := i, int32(1) for k := base; ; k += base { if pos == len(encoded) { - return "", fmt.Errorf("idna: invalid label %q", encoded) + return "", punyError(encoded) } digit, ok := decodeDigit(encoded[pos]) if !ok { - return "", fmt.Errorf("idna: invalid label %q", encoded) + return "", punyError(encoded) } pos++ i += digit * w if i < 0 { - return "", fmt.Errorf("idna: invalid label %q", encoded) + return "", punyError(encoded) } t := k - bias if t < tmin { @@ -72,7 +75,7 @@ func decode(encoded string) (string, error) { } w *= base - t if w >= math.MaxInt32/base { - return "", fmt.Errorf("idna: invalid label %q", encoded) + return "", punyError(encoded) } } x := int32(len(output) + 1) @@ -80,7 +83,7 @@ func decode(encoded string) (string, error) { n += i / x i %= x if n > utf8.MaxRune || len(output) >= 1024 { - return "", fmt.Errorf("idna: invalid label %q", encoded) + return "", punyError(encoded) } output = append(output, 0) copy(output[i+1:], output[i:]) @@ -121,14 +124,14 @@ func encode(prefix, s string) (string, error) { } delta += (m - n) * (h + 1) if delta < 0 { - return "", fmt.Errorf("idna: invalid label %q", s) + return "", punyError(s) } n = m for _, r := range s { if r < n { delta++ if delta < 0 { - return "", fmt.Errorf("idna: invalid label %q", s) + return "", punyError(s) } continue } diff --git a/vendor/golang.org/x/net/idna/tables.go b/vendor/golang.org/x/net/idna/tables.go new file mode 100644 index 0000000000..d2819345fc --- /dev/null +++ b/vendor/golang.org/x/net/idna/tables.go @@ -0,0 +1,4477 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package idna + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +var mappings string = "" + // Size: 8176 bytes + "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + + "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + + "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + + "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + + "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + + "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + + "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + + "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + + "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + + "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + + "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + + "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + + "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + + "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + + "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + + "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + + "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + + "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + + "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + + "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + + "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + + "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + + "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + + "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + + ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + + "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + + "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + + "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + + "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + + "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + + "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + + "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + + "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + + "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + + "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + + "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + + "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + + "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + + "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + + "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + + "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + + "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + + "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + + "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + + "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + + "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + + "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + + "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + + "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + + "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + + "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + + "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + + "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + + "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + + "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + + "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + + "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + + "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + + "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + + "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + + "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + + "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + + "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + + "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + + "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + + "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + + "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + + "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + + "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + + "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + + "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + + " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + + "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + + "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + + "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + + "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + + "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + + "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + + "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + + "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + + "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + + "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + + "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + + "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + + "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + + "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + + "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + + "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + + "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + + "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + + "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + + "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + + "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + + "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + + "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + + "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + + "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + + "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + + "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + + "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + + "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + + "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + + "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + + "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + + "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + + "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + + "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + + "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + + "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + + "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + + "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + + "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + + "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + + "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + + "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + + "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + + "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + + "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + + "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + + "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + + "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + + "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + + "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + + "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + + "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + + "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + + "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + + "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + + "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + + "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + + "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + + "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + + "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + + "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + + "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" + +var xorData string = "" + // Size: 4855 bytes + "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + + "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + + "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + + "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + + "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + + "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + + "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + + "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + + "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + + "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + + "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + + "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + + "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + + "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + + "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + + "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + + "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + + "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + + "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + + "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + + "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + + "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + + "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + + "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + + "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + + "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + + "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + + "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + + "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + + "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + + "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + + "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + + "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + + "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + + "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + + "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + + "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + + "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + + "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + + "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + + "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + + "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + + ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + + "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + + "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + + "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + + "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + + "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + + "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + + "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + + "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + + "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + + "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + + "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + + "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + + "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + + "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + + "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + + "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + + "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + + "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + + "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + + "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + + "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + + "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + + "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + + "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + + "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + + "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + + "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + + "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + + "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + + "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + + "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + + "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + + "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + + "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + + "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + + "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + + "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + + "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + + "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + + "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + + "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + + "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + + "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + + "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + + "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + + "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + + "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + + "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + + "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + + "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + + ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + + "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + + "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + + "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + + "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + + "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + + "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + + "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + + "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + + "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + + "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + + "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + + "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + + "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + + "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + + "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + + "\x08\x1a\x0a\x03\x07\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + + "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + + "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + + "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + + "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + + "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + + "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + + "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + + "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + + "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + + "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + + "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + + "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + + "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + + "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + + "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + + "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + + "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + + "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + + "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + + "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + + "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + + "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + + "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + + "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + + "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + + "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + + "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + + "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + + "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + + "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + + "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + + "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + + "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + + "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + + "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + + "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + + "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + + "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + + "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + + "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + + "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + + "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + + "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + + "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + + "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + + "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + + "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + + "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + + "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + + "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + + "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + + "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + + "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + + "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + + "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + + "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + + "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + + "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + + "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + + "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + + "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + + "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + + "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + + "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + + "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + + "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + + "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + + "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + + "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + + "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + + "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + + "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + + "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + + "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + + "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + + "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + + "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + + "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + + "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + + "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + + "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + + "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + + "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + + "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + + "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + + "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + + "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + + "\x04\x03\x0c?\x05\x03\x0c" + + "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + + "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + + "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + + "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + + "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + + "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + + "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + + "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + + "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + + "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + + "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + + "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + + "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + + "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + + "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + + "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + + "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + + "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + + "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + + "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + + "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + + "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + + "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + + "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + + "\x05\x22\x05\x03\x050\x1d" + +// 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 *idnaTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[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 := idnaIndex[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 := idnaIndex[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 = idnaIndex[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 := idnaIndex[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 = idnaIndex[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 = idnaIndex[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 *idnaTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[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 *idnaTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[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 := idnaIndex[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 := idnaIndex[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 = idnaIndex[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 := idnaIndex[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 = idnaIndex[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 = idnaIndex[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 *idnaTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// idnaTrie. Total size: 28496 bytes (27.83 KiB). Checksum: 43288b883596640e. +type idnaTrie struct{} + +func newIdnaTrie(i int) *idnaTrie { + return &idnaTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 123: + return uint16(idnaValues[n<<6+uint32(b)]) + default: + n -= 123 + return uint16(idnaSparse.lookup(n, b)) + } +} + +// idnaValues: 125 blocks, 8000 entries, 16000 bytes +// The third block is the zero block. +var idnaValues = [8000]uint16{ + // Block 0x0, offset 0x0 + 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, + 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, + 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, + 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, + 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, + 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, + 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, + 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, + 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, + 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, + 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, + // Block 0x1, offset 0x40 + 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, + 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, + 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, + 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, + 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, + 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, + 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, + 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, + 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, + 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, + 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, + // 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: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, + 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, + 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, + 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, + 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, + 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, + // Block 0x4, offset 0x100 + 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, + 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, + 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, + 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, + 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, + 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, + 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, + 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, + 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, + 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, + 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, + // Block 0x5, offset 0x140 + 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, + 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, + 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, + 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, + 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, + 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, + 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, + 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, + 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, + 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, + 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, + // Block 0x6, offset 0x180 + 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, + 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, + 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, + 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, + 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, + 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, + 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, + 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, + 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, + 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, + 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, + 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, + 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, + 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, + 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, + 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, + 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, + 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, + 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, + 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, + 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, + // Block 0x8, offset 0x200 + 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, + 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, + 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, + 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, + 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, + 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, + 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, + 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, + 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, + 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, + 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, + // Block 0x9, offset 0x240 + 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, + 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, + 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, + 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, + 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, + 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, + 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, + 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, + 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, + 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, + 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, + // Block 0xa, offset 0x280 + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x1308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x1308, 0x287: 0x1308, 0x288: 0x1308, 0x289: 0x1308, 0x28a: 0x1308, 0x28b: 0x1308, + 0x28c: 0x1308, 0x28d: 0x1308, 0x28e: 0x1308, 0x28f: 0x13c0, 0x290: 0x1308, 0x291: 0x1308, + 0x292: 0x1308, 0x293: 0x1308, 0x294: 0x1308, 0x295: 0x1308, 0x296: 0x1308, 0x297: 0x1308, + 0x298: 0x1308, 0x299: 0x1308, 0x29a: 0x1308, 0x29b: 0x1308, 0x29c: 0x1308, 0x29d: 0x1308, + 0x29e: 0x1308, 0x29f: 0x1308, 0x2a0: 0x1308, 0x2a1: 0x1308, 0x2a2: 0x1308, 0x2a3: 0x1308, + 0x2a4: 0x1308, 0x2a5: 0x1308, 0x2a6: 0x1308, 0x2a7: 0x1308, 0x2a8: 0x1308, 0x2a9: 0x1308, + 0x2aa: 0x1308, 0x2ab: 0x1308, 0x2ac: 0x1308, 0x2ad: 0x1308, 0x2ae: 0x1308, 0x2af: 0x1308, + 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, + 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, + 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, + 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, + 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, + 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, + 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, + 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, + 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, + 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, + 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, + 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, + 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, + // Block 0xc, offset 0x300 + 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, + 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, + 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, + 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, + 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, + 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, + 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, + 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, + 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, + 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, + 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, + // Block 0xd, offset 0x340 + 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, + 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, + 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, + 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, + 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, + 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, + 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, + 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, + 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, + 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, + 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, + // Block 0xe, offset 0x380 + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x1308, 0x384: 0x1308, 0x385: 0x1308, + 0x386: 0x1308, 0x387: 0x1308, 0x388: 0x1318, 0x389: 0x1318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, + 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, + 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, + 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, + 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, + 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, + 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, + 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, + 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, + 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, + 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, + 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, + 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, + 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, + 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, + 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, + 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, + 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, + 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, + // Block 0x10, offset 0x400 + 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, + 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, + 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, + 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, + 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, + 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, + 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, + 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, + 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, + 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, + 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, + // Block 0x11, offset 0x440 + 0x440: 0x0040, 0x441: 0x0040, 0x442: 0x0040, 0x443: 0x0040, 0x444: 0x0040, 0x445: 0x0040, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0018, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0018, + 0x44c: 0x0018, 0x44d: 0x0018, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x1308, 0x451: 0x1308, + 0x452: 0x1308, 0x453: 0x1308, 0x454: 0x1308, 0x455: 0x1308, 0x456: 0x1308, 0x457: 0x1308, + 0x458: 0x1308, 0x459: 0x1308, 0x45a: 0x1308, 0x45b: 0x0018, 0x45c: 0x0340, 0x45d: 0x0040, + 0x45e: 0x0018, 0x45f: 0x0018, 0x460: 0x0208, 0x461: 0x0008, 0x462: 0x0408, 0x463: 0x0408, + 0x464: 0x0408, 0x465: 0x0408, 0x466: 0x0208, 0x467: 0x0408, 0x468: 0x0208, 0x469: 0x0408, + 0x46a: 0x0208, 0x46b: 0x0208, 0x46c: 0x0208, 0x46d: 0x0208, 0x46e: 0x0208, 0x46f: 0x0408, + 0x470: 0x0408, 0x471: 0x0408, 0x472: 0x0408, 0x473: 0x0208, 0x474: 0x0208, 0x475: 0x0208, + 0x476: 0x0208, 0x477: 0x0208, 0x478: 0x0208, 0x479: 0x0208, 0x47a: 0x0208, 0x47b: 0x0208, + 0x47c: 0x0208, 0x47d: 0x0208, 0x47e: 0x0208, 0x47f: 0x0208, + // Block 0x12, offset 0x480 + 0x480: 0x0408, 0x481: 0x0208, 0x482: 0x0208, 0x483: 0x0408, 0x484: 0x0408, 0x485: 0x0408, + 0x486: 0x0408, 0x487: 0x0408, 0x488: 0x0408, 0x489: 0x0408, 0x48a: 0x0408, 0x48b: 0x0408, + 0x48c: 0x0208, 0x48d: 0x0408, 0x48e: 0x0208, 0x48f: 0x0408, 0x490: 0x0208, 0x491: 0x0208, + 0x492: 0x0408, 0x493: 0x0408, 0x494: 0x0018, 0x495: 0x0408, 0x496: 0x1308, 0x497: 0x1308, + 0x498: 0x1308, 0x499: 0x1308, 0x49a: 0x1308, 0x49b: 0x1308, 0x49c: 0x1308, 0x49d: 0x0040, + 0x49e: 0x0018, 0x49f: 0x1308, 0x4a0: 0x1308, 0x4a1: 0x1308, 0x4a2: 0x1308, 0x4a3: 0x1308, + 0x4a4: 0x1308, 0x4a5: 0x0008, 0x4a6: 0x0008, 0x4a7: 0x1308, 0x4a8: 0x1308, 0x4a9: 0x0018, + 0x4aa: 0x1308, 0x4ab: 0x1308, 0x4ac: 0x1308, 0x4ad: 0x1308, 0x4ae: 0x0408, 0x4af: 0x0408, + 0x4b0: 0x0008, 0x4b1: 0x0008, 0x4b2: 0x0008, 0x4b3: 0x0008, 0x4b4: 0x0008, 0x4b5: 0x0008, + 0x4b6: 0x0008, 0x4b7: 0x0008, 0x4b8: 0x0008, 0x4b9: 0x0008, 0x4ba: 0x0208, 0x4bb: 0x0208, + 0x4bc: 0x0208, 0x4bd: 0x0008, 0x4be: 0x0008, 0x4bf: 0x0208, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0018, 0x4c1: 0x0018, 0x4c2: 0x0018, 0x4c3: 0x0018, 0x4c4: 0x0018, 0x4c5: 0x0018, + 0x4c6: 0x0018, 0x4c7: 0x0018, 0x4c8: 0x0018, 0x4c9: 0x0018, 0x4ca: 0x0018, 0x4cb: 0x0018, + 0x4cc: 0x0018, 0x4cd: 0x0018, 0x4ce: 0x0040, 0x4cf: 0x0340, 0x4d0: 0x0408, 0x4d1: 0x1308, + 0x4d2: 0x0208, 0x4d3: 0x0208, 0x4d4: 0x0208, 0x4d5: 0x0408, 0x4d6: 0x0408, 0x4d7: 0x0408, + 0x4d8: 0x0408, 0x4d9: 0x0408, 0x4da: 0x0208, 0x4db: 0x0208, 0x4dc: 0x0208, 0x4dd: 0x0208, + 0x4de: 0x0408, 0x4df: 0x0208, 0x4e0: 0x0208, 0x4e1: 0x0208, 0x4e2: 0x0208, 0x4e3: 0x0208, + 0x4e4: 0x0208, 0x4e5: 0x0208, 0x4e6: 0x0208, 0x4e7: 0x0208, 0x4e8: 0x0408, 0x4e9: 0x0208, + 0x4ea: 0x0408, 0x4eb: 0x0208, 0x4ec: 0x0408, 0x4ed: 0x0208, 0x4ee: 0x0208, 0x4ef: 0x0408, + 0x4f0: 0x1308, 0x4f1: 0x1308, 0x4f2: 0x1308, 0x4f3: 0x1308, 0x4f4: 0x1308, 0x4f5: 0x1308, + 0x4f6: 0x1308, 0x4f7: 0x1308, 0x4f8: 0x1308, 0x4f9: 0x1308, 0x4fa: 0x1308, 0x4fb: 0x1308, + 0x4fc: 0x1308, 0x4fd: 0x1308, 0x4fe: 0x1308, 0x4ff: 0x1308, + // Block 0x14, offset 0x500 + 0x500: 0x1008, 0x501: 0x1308, 0x502: 0x1308, 0x503: 0x1308, 0x504: 0x1308, 0x505: 0x1308, + 0x506: 0x1308, 0x507: 0x1308, 0x508: 0x1308, 0x509: 0x1008, 0x50a: 0x1008, 0x50b: 0x1008, + 0x50c: 0x1008, 0x50d: 0x1b08, 0x50e: 0x1008, 0x50f: 0x1008, 0x510: 0x0008, 0x511: 0x1308, + 0x512: 0x1308, 0x513: 0x1308, 0x514: 0x1308, 0x515: 0x1308, 0x516: 0x1308, 0x517: 0x1308, + 0x518: 0x04c9, 0x519: 0x0501, 0x51a: 0x0539, 0x51b: 0x0571, 0x51c: 0x05a9, 0x51d: 0x05e1, + 0x51e: 0x0619, 0x51f: 0x0651, 0x520: 0x0008, 0x521: 0x0008, 0x522: 0x1308, 0x523: 0x1308, + 0x524: 0x0018, 0x525: 0x0018, 0x526: 0x0008, 0x527: 0x0008, 0x528: 0x0008, 0x529: 0x0008, + 0x52a: 0x0008, 0x52b: 0x0008, 0x52c: 0x0008, 0x52d: 0x0008, 0x52e: 0x0008, 0x52f: 0x0008, + 0x530: 0x0018, 0x531: 0x0008, 0x532: 0x0008, 0x533: 0x0008, 0x534: 0x0008, 0x535: 0x0008, + 0x536: 0x0008, 0x537: 0x0008, 0x538: 0x0008, 0x539: 0x0008, 0x53a: 0x0008, 0x53b: 0x0008, + 0x53c: 0x0008, 0x53d: 0x0008, 0x53e: 0x0008, 0x53f: 0x0008, + // Block 0x15, offset 0x540 + 0x540: 0x0008, 0x541: 0x1308, 0x542: 0x1008, 0x543: 0x1008, 0x544: 0x0040, 0x545: 0x0008, + 0x546: 0x0008, 0x547: 0x0008, 0x548: 0x0008, 0x549: 0x0008, 0x54a: 0x0008, 0x54b: 0x0008, + 0x54c: 0x0008, 0x54d: 0x0040, 0x54e: 0x0040, 0x54f: 0x0008, 0x550: 0x0008, 0x551: 0x0040, + 0x552: 0x0040, 0x553: 0x0008, 0x554: 0x0008, 0x555: 0x0008, 0x556: 0x0008, 0x557: 0x0008, + 0x558: 0x0008, 0x559: 0x0008, 0x55a: 0x0008, 0x55b: 0x0008, 0x55c: 0x0008, 0x55d: 0x0008, + 0x55e: 0x0008, 0x55f: 0x0008, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x0008, 0x563: 0x0008, + 0x564: 0x0008, 0x565: 0x0008, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0040, + 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, + 0x570: 0x0008, 0x571: 0x0040, 0x572: 0x0008, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, + 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0040, 0x57b: 0x0040, + 0x57c: 0x1308, 0x57d: 0x0008, 0x57e: 0x1008, 0x57f: 0x1008, + // Block 0x16, offset 0x580 + 0x580: 0x1008, 0x581: 0x1308, 0x582: 0x1308, 0x583: 0x1308, 0x584: 0x1308, 0x585: 0x0040, + 0x586: 0x0040, 0x587: 0x1008, 0x588: 0x1008, 0x589: 0x0040, 0x58a: 0x0040, 0x58b: 0x1008, + 0x58c: 0x1008, 0x58d: 0x1b08, 0x58e: 0x0008, 0x58f: 0x0040, 0x590: 0x0040, 0x591: 0x0040, + 0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x1008, + 0x598: 0x0040, 0x599: 0x0040, 0x59a: 0x0040, 0x59b: 0x0040, 0x59c: 0x0689, 0x59d: 0x06c1, + 0x59e: 0x0040, 0x59f: 0x06f9, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x1308, 0x5a3: 0x1308, + 0x5a4: 0x0040, 0x5a5: 0x0040, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, + 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, + 0x5b0: 0x0008, 0x5b1: 0x0008, 0x5b2: 0x0018, 0x5b3: 0x0018, 0x5b4: 0x0018, 0x5b5: 0x0018, + 0x5b6: 0x0018, 0x5b7: 0x0018, 0x5b8: 0x0018, 0x5b9: 0x0018, 0x5ba: 0x0018, 0x5bb: 0x0018, + 0x5bc: 0x0040, 0x5bd: 0x0040, 0x5be: 0x0040, 0x5bf: 0x0040, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0040, 0x5c1: 0x1308, 0x5c2: 0x1308, 0x5c3: 0x1008, 0x5c4: 0x0040, 0x5c5: 0x0008, + 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0040, + 0x5cc: 0x0040, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, + 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, + 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, + 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, + 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, + 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, + 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0731, 0x5f4: 0x0040, 0x5f5: 0x0008, + 0x5f6: 0x0769, 0x5f7: 0x0040, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, + 0x5fc: 0x1308, 0x5fd: 0x0040, 0x5fe: 0x1008, 0x5ff: 0x1008, + // Block 0x18, offset 0x600 + 0x600: 0x1008, 0x601: 0x1308, 0x602: 0x1308, 0x603: 0x0040, 0x604: 0x0040, 0x605: 0x0040, + 0x606: 0x0040, 0x607: 0x1308, 0x608: 0x1308, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x1308, + 0x60c: 0x1308, 0x60d: 0x1b08, 0x60e: 0x0040, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x1308, + 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x0040, + 0x618: 0x0040, 0x619: 0x07a1, 0x61a: 0x07d9, 0x61b: 0x0811, 0x61c: 0x0008, 0x61d: 0x0040, + 0x61e: 0x0849, 0x61f: 0x0040, 0x620: 0x0040, 0x621: 0x0040, 0x622: 0x0040, 0x623: 0x0040, + 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, + 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, + 0x630: 0x1308, 0x631: 0x1308, 0x632: 0x0008, 0x633: 0x0008, 0x634: 0x0008, 0x635: 0x1308, + 0x636: 0x0040, 0x637: 0x0040, 0x638: 0x0040, 0x639: 0x0040, 0x63a: 0x0040, 0x63b: 0x0040, + 0x63c: 0x0040, 0x63d: 0x0040, 0x63e: 0x0040, 0x63f: 0x0040, + // Block 0x19, offset 0x640 + 0x640: 0x0040, 0x641: 0x1308, 0x642: 0x1308, 0x643: 0x1008, 0x644: 0x0040, 0x645: 0x0008, + 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0008, + 0x64c: 0x0008, 0x64d: 0x0008, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0008, + 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, + 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, + 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, + 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, + 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, + 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0040, 0x675: 0x0008, + 0x676: 0x0008, 0x677: 0x0008, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x1308, 0x67d: 0x0008, 0x67e: 0x1008, 0x67f: 0x1008, + // Block 0x1a, offset 0x680 + 0x680: 0x1008, 0x681: 0x1308, 0x682: 0x1308, 0x683: 0x1308, 0x684: 0x1308, 0x685: 0x1308, + 0x686: 0x0040, 0x687: 0x1308, 0x688: 0x1308, 0x689: 0x1008, 0x68a: 0x0040, 0x68b: 0x1008, + 0x68c: 0x1008, 0x68d: 0x1b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0008, 0x691: 0x0040, + 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, + 0x698: 0x0040, 0x699: 0x0040, 0x69a: 0x0040, 0x69b: 0x0040, 0x69c: 0x0040, 0x69d: 0x0040, + 0x69e: 0x0040, 0x69f: 0x0040, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x1308, 0x6a3: 0x1308, + 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, + 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, + 0x6b0: 0x0018, 0x6b1: 0x0018, 0x6b2: 0x0040, 0x6b3: 0x0040, 0x6b4: 0x0040, 0x6b5: 0x0040, + 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x0040, 0x6c1: 0x1308, 0x6c2: 0x1008, 0x6c3: 0x1008, 0x6c4: 0x0040, 0x6c5: 0x0008, + 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, + 0x6cc: 0x0008, 0x6cd: 0x0040, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0040, + 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, + 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, + 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, + 0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040, + 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, + 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, + 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, + 0x6fc: 0x1308, 0x6fd: 0x0008, 0x6fe: 0x1008, 0x6ff: 0x1308, + // Block 0x1c, offset 0x700 + 0x700: 0x1008, 0x701: 0x1308, 0x702: 0x1308, 0x703: 0x1308, 0x704: 0x1308, 0x705: 0x0040, + 0x706: 0x0040, 0x707: 0x1008, 0x708: 0x1008, 0x709: 0x0040, 0x70a: 0x0040, 0x70b: 0x1008, + 0x70c: 0x1008, 0x70d: 0x1b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0040, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x1308, 0x717: 0x1008, + 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0881, 0x71d: 0x08b9, + 0x71e: 0x0040, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x1308, 0x723: 0x1308, + 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, + 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, + 0x730: 0x0018, 0x731: 0x0008, 0x732: 0x0018, 0x733: 0x0018, 0x734: 0x0018, 0x735: 0x0018, + 0x736: 0x0018, 0x737: 0x0018, 0x738: 0x0040, 0x739: 0x0040, 0x73a: 0x0040, 0x73b: 0x0040, + 0x73c: 0x0040, 0x73d: 0x0040, 0x73e: 0x0040, 0x73f: 0x0040, + // Block 0x1d, offset 0x740 + 0x740: 0x0040, 0x741: 0x0040, 0x742: 0x1308, 0x743: 0x0008, 0x744: 0x0040, 0x745: 0x0008, + 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0040, + 0x74c: 0x0040, 0x74d: 0x0040, 0x74e: 0x0008, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, + 0x752: 0x0008, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0040, 0x757: 0x0040, + 0x758: 0x0040, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0040, 0x75c: 0x0008, 0x75d: 0x0040, + 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0040, 0x761: 0x0040, 0x762: 0x0040, 0x763: 0x0008, + 0x764: 0x0008, 0x765: 0x0040, 0x766: 0x0040, 0x767: 0x0040, 0x768: 0x0008, 0x769: 0x0008, + 0x76a: 0x0008, 0x76b: 0x0040, 0x76c: 0x0040, 0x76d: 0x0040, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0008, 0x771: 0x0008, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0008, 0x775: 0x0008, + 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, + 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x1008, 0x77f: 0x1008, + // Block 0x1e, offset 0x780 + 0x780: 0x1308, 0x781: 0x1008, 0x782: 0x1008, 0x783: 0x1008, 0x784: 0x1008, 0x785: 0x0040, + 0x786: 0x1308, 0x787: 0x1308, 0x788: 0x1308, 0x789: 0x0040, 0x78a: 0x1308, 0x78b: 0x1308, + 0x78c: 0x1308, 0x78d: 0x1b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, + 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x1308, 0x796: 0x1308, 0x797: 0x0040, + 0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0040, 0x79d: 0x0040, + 0x79e: 0x0040, 0x79f: 0x0040, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x1308, 0x7a3: 0x1308, + 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, + 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, + 0x7b0: 0x0040, 0x7b1: 0x0040, 0x7b2: 0x0040, 0x7b3: 0x0040, 0x7b4: 0x0040, 0x7b5: 0x0040, + 0x7b6: 0x0040, 0x7b7: 0x0040, 0x7b8: 0x0018, 0x7b9: 0x0018, 0x7ba: 0x0018, 0x7bb: 0x0018, + 0x7bc: 0x0018, 0x7bd: 0x0018, 0x7be: 0x0018, 0x7bf: 0x0018, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0008, 0x7c1: 0x1308, 0x7c2: 0x1008, 0x7c3: 0x1008, 0x7c4: 0x0040, 0x7c5: 0x0008, + 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0008, + 0x7cc: 0x0008, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, + 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0008, 0x7d7: 0x0008, + 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0008, 0x7dc: 0x0008, 0x7dd: 0x0008, + 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x0008, 0x7e3: 0x0008, + 0x7e4: 0x0008, 0x7e5: 0x0008, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0040, + 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0040, 0x7f5: 0x0008, + 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, + 0x7fc: 0x1308, 0x7fd: 0x0008, 0x7fe: 0x1008, 0x7ff: 0x1308, + // Block 0x20, offset 0x800 + 0x800: 0x1008, 0x801: 0x1008, 0x802: 0x1008, 0x803: 0x1008, 0x804: 0x1008, 0x805: 0x0040, + 0x806: 0x1308, 0x807: 0x1008, 0x808: 0x1008, 0x809: 0x0040, 0x80a: 0x1008, 0x80b: 0x1008, + 0x80c: 0x1308, 0x80d: 0x1b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, + 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x1008, 0x816: 0x1008, 0x817: 0x0040, + 0x818: 0x0040, 0x819: 0x0040, 0x81a: 0x0040, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, + 0x81e: 0x0008, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x1308, 0x823: 0x1308, + 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, + 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, + 0x830: 0x0040, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, + 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0040, 0x839: 0x0040, 0x83a: 0x0040, 0x83b: 0x0040, + 0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x0040, 0x83f: 0x0040, + // Block 0x21, offset 0x840 + 0x840: 0x1008, 0x841: 0x1308, 0x842: 0x1308, 0x843: 0x1308, 0x844: 0x1308, 0x845: 0x0040, + 0x846: 0x1008, 0x847: 0x1008, 0x848: 0x1008, 0x849: 0x0040, 0x84a: 0x1008, 0x84b: 0x1008, + 0x84c: 0x1008, 0x84d: 0x1b08, 0x84e: 0x0008, 0x84f: 0x0018, 0x850: 0x0040, 0x851: 0x0040, + 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x1008, + 0x858: 0x0018, 0x859: 0x0018, 0x85a: 0x0018, 0x85b: 0x0018, 0x85c: 0x0018, 0x85d: 0x0018, + 0x85e: 0x0018, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x1308, 0x863: 0x1308, + 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, + 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, + 0x870: 0x0018, 0x871: 0x0018, 0x872: 0x0018, 0x873: 0x0018, 0x874: 0x0018, 0x875: 0x0018, + 0x876: 0x0018, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0008, 0x87b: 0x0008, + 0x87c: 0x0008, 0x87d: 0x0008, 0x87e: 0x0008, 0x87f: 0x0008, + // Block 0x22, offset 0x880 + 0x880: 0x0040, 0x881: 0x0008, 0x882: 0x0008, 0x883: 0x0040, 0x884: 0x0008, 0x885: 0x0040, + 0x886: 0x0040, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0040, 0x88a: 0x0008, 0x88b: 0x0040, + 0x88c: 0x0040, 0x88d: 0x0008, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008, + 0x898: 0x0040, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008, + 0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0040, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008, + 0x8a4: 0x0040, 0x8a5: 0x0008, 0x8a6: 0x0040, 0x8a7: 0x0008, 0x8a8: 0x0040, 0x8a9: 0x0040, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0040, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0008, 0x8b1: 0x1308, 0x8b2: 0x0008, 0x8b3: 0x0929, 0x8b4: 0x1308, 0x8b5: 0x1308, + 0x8b6: 0x1308, 0x8b7: 0x1308, 0x8b8: 0x1308, 0x8b9: 0x1308, 0x8ba: 0x0040, 0x8bb: 0x1308, + 0x8bc: 0x1308, 0x8bd: 0x0008, 0x8be: 0x0040, 0x8bf: 0x0040, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0008, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x09d1, 0x8c4: 0x0008, 0x8c5: 0x0008, + 0x8c6: 0x0008, 0x8c7: 0x0008, 0x8c8: 0x0040, 0x8c9: 0x0008, 0x8ca: 0x0008, 0x8cb: 0x0008, + 0x8cc: 0x0008, 0x8cd: 0x0a09, 0x8ce: 0x0008, 0x8cf: 0x0008, 0x8d0: 0x0008, 0x8d1: 0x0008, + 0x8d2: 0x0a41, 0x8d3: 0x0008, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0a79, + 0x8d8: 0x0008, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0ab1, 0x8dd: 0x0008, + 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, + 0x8e4: 0x0008, 0x8e5: 0x0008, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0ae9, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0040, 0x8ee: 0x0040, 0x8ef: 0x0040, + 0x8f0: 0x0040, 0x8f1: 0x1308, 0x8f2: 0x1308, 0x8f3: 0x0b21, 0x8f4: 0x1308, 0x8f5: 0x0b59, + 0x8f6: 0x0b91, 0x8f7: 0x0bc9, 0x8f8: 0x0c19, 0x8f9: 0x0c51, 0x8fa: 0x1308, 0x8fb: 0x1308, + 0x8fc: 0x1308, 0x8fd: 0x1308, 0x8fe: 0x1308, 0x8ff: 0x1008, + // Block 0x24, offset 0x900 + 0x900: 0x1308, 0x901: 0x0ca1, 0x902: 0x1308, 0x903: 0x1308, 0x904: 0x1b08, 0x905: 0x0018, + 0x906: 0x1308, 0x907: 0x1308, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, + 0x90c: 0x0008, 0x90d: 0x1308, 0x90e: 0x1308, 0x90f: 0x1308, 0x910: 0x1308, 0x911: 0x1308, + 0x912: 0x1308, 0x913: 0x0cd9, 0x914: 0x1308, 0x915: 0x1308, 0x916: 0x1308, 0x917: 0x1308, + 0x918: 0x0040, 0x919: 0x1308, 0x91a: 0x1308, 0x91b: 0x1308, 0x91c: 0x1308, 0x91d: 0x0d11, + 0x91e: 0x1308, 0x91f: 0x1308, 0x920: 0x1308, 0x921: 0x1308, 0x922: 0x0d49, 0x923: 0x1308, + 0x924: 0x1308, 0x925: 0x1308, 0x926: 0x1308, 0x927: 0x0d81, 0x928: 0x1308, 0x929: 0x1308, + 0x92a: 0x1308, 0x92b: 0x1308, 0x92c: 0x0db9, 0x92d: 0x1308, 0x92e: 0x1308, 0x92f: 0x1308, + 0x930: 0x1308, 0x931: 0x1308, 0x932: 0x1308, 0x933: 0x1308, 0x934: 0x1308, 0x935: 0x1308, + 0x936: 0x1308, 0x937: 0x1308, 0x938: 0x1308, 0x939: 0x0df1, 0x93a: 0x1308, 0x93b: 0x1308, + 0x93c: 0x1308, 0x93d: 0x0040, 0x93e: 0x0018, 0x93f: 0x0018, + // Block 0x25, offset 0x940 + 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0008, 0x944: 0x0008, 0x945: 0x0008, + 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, + 0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008, + 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008, + 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, + 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008, + 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0039, 0x96d: 0x0ed1, 0x96e: 0x0ee9, 0x96f: 0x0008, + 0x970: 0x0ef9, 0x971: 0x0f09, 0x972: 0x0f19, 0x973: 0x0f31, 0x974: 0x0249, 0x975: 0x0f41, + 0x976: 0x0259, 0x977: 0x0f51, 0x978: 0x0359, 0x979: 0x0f61, 0x97a: 0x0f71, 0x97b: 0x0008, + 0x97c: 0x00d9, 0x97d: 0x0f81, 0x97e: 0x0f99, 0x97f: 0x0269, + // Block 0x26, offset 0x980 + 0x980: 0x0fa9, 0x981: 0x0fb9, 0x982: 0x0279, 0x983: 0x0039, 0x984: 0x0fc9, 0x985: 0x0fe1, + 0x986: 0x059d, 0x987: 0x0ee9, 0x988: 0x0ef9, 0x989: 0x0f09, 0x98a: 0x0ff9, 0x98b: 0x1011, + 0x98c: 0x1029, 0x98d: 0x0f31, 0x98e: 0x0008, 0x98f: 0x0f51, 0x990: 0x0f61, 0x991: 0x1041, + 0x992: 0x00d9, 0x993: 0x1059, 0x994: 0x05b5, 0x995: 0x05b5, 0x996: 0x0f99, 0x997: 0x0fa9, + 0x998: 0x0fb9, 0x999: 0x059d, 0x99a: 0x1071, 0x99b: 0x1089, 0x99c: 0x05cd, 0x99d: 0x1099, + 0x99e: 0x10b1, 0x99f: 0x10c9, 0x9a0: 0x10e1, 0x9a1: 0x10f9, 0x9a2: 0x0f41, 0x9a3: 0x0269, + 0x9a4: 0x0fb9, 0x9a5: 0x1089, 0x9a6: 0x1099, 0x9a7: 0x10b1, 0x9a8: 0x1111, 0x9a9: 0x10e1, + 0x9aa: 0x10f9, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0008, 0x9ae: 0x0008, 0x9af: 0x0008, + 0x9b0: 0x0008, 0x9b1: 0x0008, 0x9b2: 0x0008, 0x9b3: 0x0008, 0x9b4: 0x0008, 0x9b5: 0x0008, + 0x9b6: 0x0008, 0x9b7: 0x0008, 0x9b8: 0x1129, 0x9b9: 0x0008, 0x9ba: 0x0008, 0x9bb: 0x0008, + 0x9bc: 0x0008, 0x9bd: 0x0008, 0x9be: 0x0008, 0x9bf: 0x0008, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, + 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, + 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, + 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, + 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x1141, 0x9dc: 0x1159, 0x9dd: 0x1169, + 0x9de: 0x1181, 0x9df: 0x1029, 0x9e0: 0x1199, 0x9e1: 0x11a9, 0x9e2: 0x11c1, 0x9e3: 0x11d9, + 0x9e4: 0x11f1, 0x9e5: 0x1209, 0x9e6: 0x1221, 0x9e7: 0x05e5, 0x9e8: 0x1239, 0x9e9: 0x1251, + 0x9ea: 0xe17d, 0x9eb: 0x1269, 0x9ec: 0x1281, 0x9ed: 0x1299, 0x9ee: 0x12b1, 0x9ef: 0x12c9, + 0x9f0: 0x12e1, 0x9f1: 0x12f9, 0x9f2: 0x1311, 0x9f3: 0x1329, 0x9f4: 0x1341, 0x9f5: 0x1359, + 0x9f6: 0x1371, 0x9f7: 0x1389, 0x9f8: 0x05fd, 0x9f9: 0x13a1, 0x9fa: 0x13b9, 0x9fb: 0x13d1, + 0x9fc: 0x13e1, 0x9fd: 0x13f9, 0x9fe: 0x1411, 0x9ff: 0x1429, + // Block 0x28, offset 0xa00 + 0xa00: 0xe00d, 0xa01: 0x0008, 0xa02: 0xe00d, 0xa03: 0x0008, 0xa04: 0xe00d, 0xa05: 0x0008, + 0xa06: 0xe00d, 0xa07: 0x0008, 0xa08: 0xe00d, 0xa09: 0x0008, 0xa0a: 0xe00d, 0xa0b: 0x0008, + 0xa0c: 0xe00d, 0xa0d: 0x0008, 0xa0e: 0xe00d, 0xa0f: 0x0008, 0xa10: 0xe00d, 0xa11: 0x0008, + 0xa12: 0xe00d, 0xa13: 0x0008, 0xa14: 0xe00d, 0xa15: 0x0008, 0xa16: 0xe00d, 0xa17: 0x0008, + 0xa18: 0xe00d, 0xa19: 0x0008, 0xa1a: 0xe00d, 0xa1b: 0x0008, 0xa1c: 0xe00d, 0xa1d: 0x0008, + 0xa1e: 0xe00d, 0xa1f: 0x0008, 0xa20: 0xe00d, 0xa21: 0x0008, 0xa22: 0xe00d, 0xa23: 0x0008, + 0xa24: 0xe00d, 0xa25: 0x0008, 0xa26: 0xe00d, 0xa27: 0x0008, 0xa28: 0xe00d, 0xa29: 0x0008, + 0xa2a: 0xe00d, 0xa2b: 0x0008, 0xa2c: 0xe00d, 0xa2d: 0x0008, 0xa2e: 0xe00d, 0xa2f: 0x0008, + 0xa30: 0xe00d, 0xa31: 0x0008, 0xa32: 0xe00d, 0xa33: 0x0008, 0xa34: 0xe00d, 0xa35: 0x0008, + 0xa36: 0xe00d, 0xa37: 0x0008, 0xa38: 0xe00d, 0xa39: 0x0008, 0xa3a: 0xe00d, 0xa3b: 0x0008, + 0xa3c: 0xe00d, 0xa3d: 0x0008, 0xa3e: 0xe00d, 0xa3f: 0x0008, + // Block 0x29, offset 0xa40 + 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, + 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, + 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, + 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, + 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0615, 0xa5b: 0x0635, 0xa5c: 0x0008, 0xa5d: 0x0008, + 0xa5e: 0x1441, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, + 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, + 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, + 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, + 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, + 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, + // Block 0x2a, offset 0xa80 + 0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008, + 0xa86: 0x0040, 0xa87: 0x0040, 0xa88: 0xe045, 0xa89: 0xe045, 0xa8a: 0xe045, 0xa8b: 0xe045, + 0xa8c: 0xe045, 0xa8d: 0xe045, 0xa8e: 0x0040, 0xa8f: 0x0040, 0xa90: 0x0008, 0xa91: 0x0008, + 0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, + 0xa98: 0x0040, 0xa99: 0xe045, 0xa9a: 0x0040, 0xa9b: 0xe045, 0xa9c: 0x0040, 0xa9d: 0xe045, + 0xa9e: 0x0040, 0xa9f: 0xe045, 0xaa0: 0x0008, 0xaa1: 0x0008, 0xaa2: 0x0008, 0xaa3: 0x0008, + 0xaa4: 0x0008, 0xaa5: 0x0008, 0xaa6: 0x0008, 0xaa7: 0x0008, 0xaa8: 0xe045, 0xaa9: 0xe045, + 0xaaa: 0xe045, 0xaab: 0xe045, 0xaac: 0xe045, 0xaad: 0xe045, 0xaae: 0xe045, 0xaaf: 0xe045, + 0xab0: 0x0008, 0xab1: 0x1459, 0xab2: 0x0008, 0xab3: 0x1471, 0xab4: 0x0008, 0xab5: 0x1489, + 0xab6: 0x0008, 0xab7: 0x14a1, 0xab8: 0x0008, 0xab9: 0x14b9, 0xaba: 0x0008, 0xabb: 0x14d1, + 0xabc: 0x0008, 0xabd: 0x14e9, 0xabe: 0x0040, 0xabf: 0x0040, + // Block 0x2b, offset 0xac0 + 0xac0: 0x1501, 0xac1: 0x1531, 0xac2: 0x1561, 0xac3: 0x1591, 0xac4: 0x15c1, 0xac5: 0x15f1, + 0xac6: 0x1621, 0xac7: 0x1651, 0xac8: 0x1501, 0xac9: 0x1531, 0xaca: 0x1561, 0xacb: 0x1591, + 0xacc: 0x15c1, 0xacd: 0x15f1, 0xace: 0x1621, 0xacf: 0x1651, 0xad0: 0x1681, 0xad1: 0x16b1, + 0xad2: 0x16e1, 0xad3: 0x1711, 0xad4: 0x1741, 0xad5: 0x1771, 0xad6: 0x17a1, 0xad7: 0x17d1, + 0xad8: 0x1681, 0xad9: 0x16b1, 0xada: 0x16e1, 0xadb: 0x1711, 0xadc: 0x1741, 0xadd: 0x1771, + 0xade: 0x17a1, 0xadf: 0x17d1, 0xae0: 0x1801, 0xae1: 0x1831, 0xae2: 0x1861, 0xae3: 0x1891, + 0xae4: 0x18c1, 0xae5: 0x18f1, 0xae6: 0x1921, 0xae7: 0x1951, 0xae8: 0x1801, 0xae9: 0x1831, + 0xaea: 0x1861, 0xaeb: 0x1891, 0xaec: 0x18c1, 0xaed: 0x18f1, 0xaee: 0x1921, 0xaef: 0x1951, + 0xaf0: 0x0008, 0xaf1: 0x0008, 0xaf2: 0x1981, 0xaf3: 0x19b1, 0xaf4: 0x19d9, 0xaf5: 0x0040, + 0xaf6: 0x0008, 0xaf7: 0x1a01, 0xaf8: 0xe045, 0xaf9: 0xe045, 0xafa: 0x064d, 0xafb: 0x1459, + 0xafc: 0x19b1, 0xafd: 0x0666, 0xafe: 0x1a31, 0xaff: 0x0686, + // Block 0x2c, offset 0xb00 + 0xb00: 0x06a6, 0xb01: 0x1a4a, 0xb02: 0x1a79, 0xb03: 0x1aa9, 0xb04: 0x1ad1, 0xb05: 0x0040, + 0xb06: 0x0008, 0xb07: 0x1af9, 0xb08: 0x06c5, 0xb09: 0x1471, 0xb0a: 0x06dd, 0xb0b: 0x1489, + 0xb0c: 0x1aa9, 0xb0d: 0x1b2a, 0xb0e: 0x1b5a, 0xb0f: 0x1b8a, 0xb10: 0x0008, 0xb11: 0x0008, + 0xb12: 0x0008, 0xb13: 0x1bb9, 0xb14: 0x0040, 0xb15: 0x0040, 0xb16: 0x0008, 0xb17: 0x0008, + 0xb18: 0xe045, 0xb19: 0xe045, 0xb1a: 0x06f5, 0xb1b: 0x14a1, 0xb1c: 0x0040, 0xb1d: 0x1bd2, + 0xb1e: 0x1c02, 0xb1f: 0x1c32, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x1c61, + 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, + 0xb2a: 0x070d, 0xb2b: 0x14d1, 0xb2c: 0xe04d, 0xb2d: 0x1c7a, 0xb2e: 0x03d2, 0xb2f: 0x1caa, + 0xb30: 0x0040, 0xb31: 0x0040, 0xb32: 0x1cb9, 0xb33: 0x1ce9, 0xb34: 0x1d11, 0xb35: 0x0040, + 0xb36: 0x0008, 0xb37: 0x1d39, 0xb38: 0x0725, 0xb39: 0x14b9, 0xb3a: 0x0515, 0xb3b: 0x14e9, + 0xb3c: 0x1ce9, 0xb3d: 0x073e, 0xb3e: 0x075e, 0xb3f: 0x0040, + // Block 0x2d, offset 0xb40 + 0xb40: 0x000a, 0xb41: 0x000a, 0xb42: 0x000a, 0xb43: 0x000a, 0xb44: 0x000a, 0xb45: 0x000a, + 0xb46: 0x000a, 0xb47: 0x000a, 0xb48: 0x000a, 0xb49: 0x000a, 0xb4a: 0x000a, 0xb4b: 0x03c0, + 0xb4c: 0x0003, 0xb4d: 0x0003, 0xb4e: 0x0340, 0xb4f: 0x0340, 0xb50: 0x0018, 0xb51: 0xe00d, + 0xb52: 0x0018, 0xb53: 0x0018, 0xb54: 0x0018, 0xb55: 0x0018, 0xb56: 0x0018, 0xb57: 0x077e, + 0xb58: 0x0018, 0xb59: 0x0018, 0xb5a: 0x0018, 0xb5b: 0x0018, 0xb5c: 0x0018, 0xb5d: 0x0018, + 0xb5e: 0x0018, 0xb5f: 0x0018, 0xb60: 0x0018, 0xb61: 0x0018, 0xb62: 0x0018, 0xb63: 0x0018, + 0xb64: 0x0040, 0xb65: 0x0040, 0xb66: 0x0040, 0xb67: 0x0018, 0xb68: 0x0040, 0xb69: 0x0040, + 0xb6a: 0x0340, 0xb6b: 0x0340, 0xb6c: 0x0340, 0xb6d: 0x0340, 0xb6e: 0x0340, 0xb6f: 0x000a, + 0xb70: 0x0018, 0xb71: 0x0018, 0xb72: 0x0018, 0xb73: 0x1d69, 0xb74: 0x1da1, 0xb75: 0x0018, + 0xb76: 0x1df1, 0xb77: 0x1e29, 0xb78: 0x0018, 0xb79: 0x0018, 0xb7a: 0x0018, 0xb7b: 0x0018, + 0xb7c: 0x1e7a, 0xb7d: 0x0018, 0xb7e: 0x079e, 0xb7f: 0x0018, + // Block 0x2e, offset 0xb80 + 0xb80: 0x0018, 0xb81: 0x0018, 0xb82: 0x0018, 0xb83: 0x0018, 0xb84: 0x0018, 0xb85: 0x0018, + 0xb86: 0x0018, 0xb87: 0x1e92, 0xb88: 0x1eaa, 0xb89: 0x1ec2, 0xb8a: 0x0018, 0xb8b: 0x0018, + 0xb8c: 0x0018, 0xb8d: 0x0018, 0xb8e: 0x0018, 0xb8f: 0x0018, 0xb90: 0x0018, 0xb91: 0x0018, + 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x1ed9, + 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, + 0xb9e: 0x0018, 0xb9f: 0x000a, 0xba0: 0x03c0, 0xba1: 0x0340, 0xba2: 0x0340, 0xba3: 0x0340, + 0xba4: 0x03c0, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0040, 0xba8: 0x0040, 0xba9: 0x0040, + 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x0340, + 0xbb0: 0x1f41, 0xbb1: 0x0f41, 0xbb2: 0x0040, 0xbb3: 0x0040, 0xbb4: 0x1f51, 0xbb5: 0x1f61, + 0xbb6: 0x1f71, 0xbb7: 0x1f81, 0xbb8: 0x1f91, 0xbb9: 0x1fa1, 0xbba: 0x1fb2, 0xbbb: 0x07bd, + 0xbbc: 0x1fc2, 0xbbd: 0x1fd2, 0xbbe: 0x1fe2, 0xbbf: 0x0f71, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x1f41, 0xbc1: 0x00c9, 0xbc2: 0x0069, 0xbc3: 0x0079, 0xbc4: 0x1f51, 0xbc5: 0x1f61, + 0xbc6: 0x1f71, 0xbc7: 0x1f81, 0xbc8: 0x1f91, 0xbc9: 0x1fa1, 0xbca: 0x1fb2, 0xbcb: 0x07d5, + 0xbcc: 0x1fc2, 0xbcd: 0x1fd2, 0xbce: 0x1fe2, 0xbcf: 0x0040, 0xbd0: 0x0039, 0xbd1: 0x0f09, + 0xbd2: 0x00d9, 0xbd3: 0x0369, 0xbd4: 0x0ff9, 0xbd5: 0x0249, 0xbd6: 0x0f51, 0xbd7: 0x0359, + 0xbd8: 0x0f61, 0xbd9: 0x0f71, 0xbda: 0x0f99, 0xbdb: 0x01d9, 0xbdc: 0x0fa9, 0xbdd: 0x0040, + 0xbde: 0x0040, 0xbdf: 0x0040, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, + 0xbe4: 0x0018, 0xbe5: 0x0018, 0xbe6: 0x0018, 0xbe7: 0x0018, 0xbe8: 0x1ff1, 0xbe9: 0x0018, + 0xbea: 0x0018, 0xbeb: 0x0018, 0xbec: 0x0018, 0xbed: 0x0018, 0xbee: 0x0018, 0xbef: 0x0018, + 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0018, 0xbf4: 0x0018, 0xbf5: 0x0018, + 0xbf6: 0x0018, 0xbf7: 0x0018, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, + 0xbfc: 0x0018, 0xbfd: 0x0018, 0xbfe: 0x0018, 0xbff: 0x0040, + // Block 0x30, offset 0xc00 + 0xc00: 0x07ee, 0xc01: 0x080e, 0xc02: 0x1159, 0xc03: 0x082d, 0xc04: 0x0018, 0xc05: 0x084e, + 0xc06: 0x086e, 0xc07: 0x1011, 0xc08: 0x0018, 0xc09: 0x088d, 0xc0a: 0x0f31, 0xc0b: 0x0249, + 0xc0c: 0x0249, 0xc0d: 0x0249, 0xc0e: 0x0249, 0xc0f: 0x2009, 0xc10: 0x0f41, 0xc11: 0x0f41, + 0xc12: 0x0359, 0xc13: 0x0359, 0xc14: 0x0018, 0xc15: 0x0f71, 0xc16: 0x2021, 0xc17: 0x0018, + 0xc18: 0x0018, 0xc19: 0x0f99, 0xc1a: 0x2039, 0xc1b: 0x0269, 0xc1c: 0x0269, 0xc1d: 0x0269, + 0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x2049, 0xc21: 0x08ad, 0xc22: 0x2061, 0xc23: 0x0018, + 0xc24: 0x13d1, 0xc25: 0x0018, 0xc26: 0x2079, 0xc27: 0x0018, 0xc28: 0x13d1, 0xc29: 0x0018, + 0xc2a: 0x0f51, 0xc2b: 0x2091, 0xc2c: 0x0ee9, 0xc2d: 0x1159, 0xc2e: 0x0018, 0xc2f: 0x0f09, + 0xc30: 0x0f09, 0xc31: 0x1199, 0xc32: 0x0040, 0xc33: 0x0f61, 0xc34: 0x00d9, 0xc35: 0x20a9, + 0xc36: 0x20c1, 0xc37: 0x20d9, 0xc38: 0x20f1, 0xc39: 0x0f41, 0xc3a: 0x0018, 0xc3b: 0x08cd, + 0xc3c: 0x2109, 0xc3d: 0x10b1, 0xc3e: 0x10b1, 0xc3f: 0x2109, + // Block 0x31, offset 0xc40 + 0xc40: 0x08ed, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0ef9, + 0xc46: 0x0ef9, 0xc47: 0x0f09, 0xc48: 0x0f41, 0xc49: 0x0259, 0xc4a: 0x0018, 0xc4b: 0x0018, + 0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0008, 0xc4f: 0x0018, 0xc50: 0x2121, 0xc51: 0x2151, + 0xc52: 0x2181, 0xc53: 0x21b9, 0xc54: 0x21e9, 0xc55: 0x2219, 0xc56: 0x2249, 0xc57: 0x2279, + 0xc58: 0x22a9, 0xc59: 0x22d9, 0xc5a: 0x2309, 0xc5b: 0x2339, 0xc5c: 0x2369, 0xc5d: 0x2399, + 0xc5e: 0x23c9, 0xc5f: 0x23f9, 0xc60: 0x0f41, 0xc61: 0x2421, 0xc62: 0x0905, 0xc63: 0x2439, + 0xc64: 0x1089, 0xc65: 0x2451, 0xc66: 0x0925, 0xc67: 0x2469, 0xc68: 0x2491, 0xc69: 0x0369, + 0xc6a: 0x24a9, 0xc6b: 0x0945, 0xc6c: 0x0359, 0xc6d: 0x1159, 0xc6e: 0x0ef9, 0xc6f: 0x0f61, + 0xc70: 0x0f41, 0xc71: 0x2421, 0xc72: 0x0965, 0xc73: 0x2439, 0xc74: 0x1089, 0xc75: 0x2451, + 0xc76: 0x0985, 0xc77: 0x2469, 0xc78: 0x2491, 0xc79: 0x0369, 0xc7a: 0x24a9, 0xc7b: 0x09a5, + 0xc7c: 0x0359, 0xc7d: 0x1159, 0xc7e: 0x0ef9, 0xc7f: 0x0f61, + // Block 0x32, offset 0xc80 + 0xc80: 0x0018, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0018, + 0xc86: 0x0018, 0xc87: 0x0018, 0xc88: 0x0018, 0xc89: 0x0018, 0xc8a: 0x0018, 0xc8b: 0x0040, + 0xc8c: 0x0040, 0xc8d: 0x0040, 0xc8e: 0x0040, 0xc8f: 0x0040, 0xc90: 0x0040, 0xc91: 0x0040, + 0xc92: 0x0040, 0xc93: 0x0040, 0xc94: 0x0040, 0xc95: 0x0040, 0xc96: 0x0040, 0xc97: 0x0040, + 0xc98: 0x0040, 0xc99: 0x0040, 0xc9a: 0x0040, 0xc9b: 0x0040, 0xc9c: 0x0040, 0xc9d: 0x0040, + 0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x00c9, 0xca1: 0x0069, 0xca2: 0x0079, 0xca3: 0x1f51, + 0xca4: 0x1f61, 0xca5: 0x1f71, 0xca6: 0x1f81, 0xca7: 0x1f91, 0xca8: 0x1fa1, 0xca9: 0x2601, + 0xcaa: 0x2619, 0xcab: 0x2631, 0xcac: 0x2649, 0xcad: 0x2661, 0xcae: 0x2679, 0xcaf: 0x2691, + 0xcb0: 0x26a9, 0xcb1: 0x26c1, 0xcb2: 0x26d9, 0xcb3: 0x26f1, 0xcb4: 0x0a06, 0xcb5: 0x0a26, + 0xcb6: 0x0a46, 0xcb7: 0x0a66, 0xcb8: 0x0a86, 0xcb9: 0x0aa6, 0xcba: 0x0ac6, 0xcbb: 0x0ae6, + 0xcbc: 0x0b06, 0xcbd: 0x270a, 0xcbe: 0x2732, 0xcbf: 0x275a, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x2782, 0xcc1: 0x27aa, 0xcc2: 0x27d2, 0xcc3: 0x27fa, 0xcc4: 0x2822, 0xcc5: 0x284a, + 0xcc6: 0x2872, 0xcc7: 0x289a, 0xcc8: 0x0040, 0xcc9: 0x0040, 0xcca: 0x0040, 0xccb: 0x0040, + 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, + 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, + 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0b26, 0xcdd: 0x0b46, + 0xcde: 0x0b66, 0xcdf: 0x0b86, 0xce0: 0x0ba6, 0xce1: 0x0bc6, 0xce2: 0x0be6, 0xce3: 0x0c06, + 0xce4: 0x0c26, 0xce5: 0x0c46, 0xce6: 0x0c66, 0xce7: 0x0c86, 0xce8: 0x0ca6, 0xce9: 0x0cc6, + 0xcea: 0x0ce6, 0xceb: 0x0d06, 0xcec: 0x0d26, 0xced: 0x0d46, 0xcee: 0x0d66, 0xcef: 0x0d86, + 0xcf0: 0x0da6, 0xcf1: 0x0dc6, 0xcf2: 0x0de6, 0xcf3: 0x0e06, 0xcf4: 0x0e26, 0xcf5: 0x0e46, + 0xcf6: 0x0039, 0xcf7: 0x0ee9, 0xcf8: 0x1159, 0xcf9: 0x0ef9, 0xcfa: 0x0f09, 0xcfb: 0x1199, + 0xcfc: 0x0f31, 0xcfd: 0x0249, 0xcfe: 0x0f41, 0xcff: 0x0259, + // Block 0x34, offset 0xd00 + 0xd00: 0x0f51, 0xd01: 0x0359, 0xd02: 0x0f61, 0xd03: 0x0f71, 0xd04: 0x00d9, 0xd05: 0x0f99, + 0xd06: 0x2039, 0xd07: 0x0269, 0xd08: 0x01d9, 0xd09: 0x0fa9, 0xd0a: 0x0fb9, 0xd0b: 0x1089, + 0xd0c: 0x0279, 0xd0d: 0x0369, 0xd0e: 0x0289, 0xd0f: 0x13d1, 0xd10: 0x0039, 0xd11: 0x0ee9, + 0xd12: 0x1159, 0xd13: 0x0ef9, 0xd14: 0x0f09, 0xd15: 0x1199, 0xd16: 0x0f31, 0xd17: 0x0249, + 0xd18: 0x0f41, 0xd19: 0x0259, 0xd1a: 0x0f51, 0xd1b: 0x0359, 0xd1c: 0x0f61, 0xd1d: 0x0f71, + 0xd1e: 0x00d9, 0xd1f: 0x0f99, 0xd20: 0x2039, 0xd21: 0x0269, 0xd22: 0x01d9, 0xd23: 0x0fa9, + 0xd24: 0x0fb9, 0xd25: 0x1089, 0xd26: 0x0279, 0xd27: 0x0369, 0xd28: 0x0289, 0xd29: 0x13d1, + 0xd2a: 0x1f41, 0xd2b: 0x0018, 0xd2c: 0x0018, 0xd2d: 0x0018, 0xd2e: 0x0018, 0xd2f: 0x0018, + 0xd30: 0x0018, 0xd31: 0x0018, 0xd32: 0x0018, 0xd33: 0x0018, 0xd34: 0x0018, 0xd35: 0x0018, + 0xd36: 0x0018, 0xd37: 0x0018, 0xd38: 0x0018, 0xd39: 0x0018, 0xd3a: 0x0018, 0xd3b: 0x0018, + 0xd3c: 0x0018, 0xd3d: 0x0018, 0xd3e: 0x0018, 0xd3f: 0x0018, + // Block 0x35, offset 0xd40 + 0xd40: 0x0008, 0xd41: 0x0008, 0xd42: 0x0008, 0xd43: 0x0008, 0xd44: 0x0008, 0xd45: 0x0008, + 0xd46: 0x0008, 0xd47: 0x0008, 0xd48: 0x0008, 0xd49: 0x0008, 0xd4a: 0x0008, 0xd4b: 0x0008, + 0xd4c: 0x0008, 0xd4d: 0x0008, 0xd4e: 0x0008, 0xd4f: 0x0008, 0xd50: 0x0008, 0xd51: 0x0008, + 0xd52: 0x0008, 0xd53: 0x0008, 0xd54: 0x0008, 0xd55: 0x0008, 0xd56: 0x0008, 0xd57: 0x0008, + 0xd58: 0x0008, 0xd59: 0x0008, 0xd5a: 0x0008, 0xd5b: 0x0008, 0xd5c: 0x0008, 0xd5d: 0x0008, + 0xd5e: 0x0008, 0xd5f: 0x0040, 0xd60: 0xe00d, 0xd61: 0x0008, 0xd62: 0x2971, 0xd63: 0x0ebd, + 0xd64: 0x2989, 0xd65: 0x0008, 0xd66: 0x0008, 0xd67: 0xe07d, 0xd68: 0x0008, 0xd69: 0xe01d, + 0xd6a: 0x0008, 0xd6b: 0xe03d, 0xd6c: 0x0008, 0xd6d: 0x0fe1, 0xd6e: 0x1281, 0xd6f: 0x0fc9, + 0xd70: 0x1141, 0xd71: 0x0008, 0xd72: 0xe00d, 0xd73: 0x0008, 0xd74: 0x0008, 0xd75: 0xe01d, + 0xd76: 0x0008, 0xd77: 0x0008, 0xd78: 0x0008, 0xd79: 0x0008, 0xd7a: 0x0008, 0xd7b: 0x0008, + 0xd7c: 0x0259, 0xd7d: 0x1089, 0xd7e: 0x29a1, 0xd7f: 0x29b9, + // Block 0x36, offset 0xd80 + 0xd80: 0xe00d, 0xd81: 0x0008, 0xd82: 0xe00d, 0xd83: 0x0008, 0xd84: 0xe00d, 0xd85: 0x0008, + 0xd86: 0xe00d, 0xd87: 0x0008, 0xd88: 0xe00d, 0xd89: 0x0008, 0xd8a: 0xe00d, 0xd8b: 0x0008, + 0xd8c: 0xe00d, 0xd8d: 0x0008, 0xd8e: 0xe00d, 0xd8f: 0x0008, 0xd90: 0xe00d, 0xd91: 0x0008, + 0xd92: 0xe00d, 0xd93: 0x0008, 0xd94: 0xe00d, 0xd95: 0x0008, 0xd96: 0xe00d, 0xd97: 0x0008, + 0xd98: 0xe00d, 0xd99: 0x0008, 0xd9a: 0xe00d, 0xd9b: 0x0008, 0xd9c: 0xe00d, 0xd9d: 0x0008, + 0xd9e: 0xe00d, 0xd9f: 0x0008, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0xe00d, 0xda3: 0x0008, + 0xda4: 0x0008, 0xda5: 0x0018, 0xda6: 0x0018, 0xda7: 0x0018, 0xda8: 0x0018, 0xda9: 0x0018, + 0xdaa: 0x0018, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0xe01d, 0xdae: 0x0008, 0xdaf: 0x1308, + 0xdb0: 0x1308, 0xdb1: 0x1308, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0040, 0xdb5: 0x0040, + 0xdb6: 0x0040, 0xdb7: 0x0040, 0xdb8: 0x0040, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, + 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x26fd, 0xdc1: 0x271d, 0xdc2: 0x273d, 0xdc3: 0x275d, 0xdc4: 0x277d, 0xdc5: 0x279d, + 0xdc6: 0x27bd, 0xdc7: 0x27dd, 0xdc8: 0x27fd, 0xdc9: 0x281d, 0xdca: 0x283d, 0xdcb: 0x285d, + 0xdcc: 0x287d, 0xdcd: 0x289d, 0xdce: 0x28bd, 0xdcf: 0x28dd, 0xdd0: 0x28fd, 0xdd1: 0x291d, + 0xdd2: 0x293d, 0xdd3: 0x295d, 0xdd4: 0x297d, 0xdd5: 0x299d, 0xdd6: 0x0040, 0xdd7: 0x0040, + 0xdd8: 0x0040, 0xdd9: 0x0040, 0xdda: 0x0040, 0xddb: 0x0040, 0xddc: 0x0040, 0xddd: 0x0040, + 0xdde: 0x0040, 0xddf: 0x0040, 0xde0: 0x0040, 0xde1: 0x0040, 0xde2: 0x0040, 0xde3: 0x0040, + 0xde4: 0x0040, 0xde5: 0x0040, 0xde6: 0x0040, 0xde7: 0x0040, 0xde8: 0x0040, 0xde9: 0x0040, + 0xdea: 0x0040, 0xdeb: 0x0040, 0xdec: 0x0040, 0xded: 0x0040, 0xdee: 0x0040, 0xdef: 0x0040, + 0xdf0: 0x0040, 0xdf1: 0x0040, 0xdf2: 0x0040, 0xdf3: 0x0040, 0xdf4: 0x0040, 0xdf5: 0x0040, + 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0040, 0xdfa: 0x0040, 0xdfb: 0x0040, + 0xdfc: 0x0040, 0xdfd: 0x0040, 0xdfe: 0x0040, 0xdff: 0x0040, + // Block 0x38, offset 0xe00 + 0xe00: 0x000a, 0xe01: 0x0018, 0xe02: 0x29d1, 0xe03: 0x0018, 0xe04: 0x0018, 0xe05: 0x0008, + 0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0018, 0xe09: 0x0018, 0xe0a: 0x0018, 0xe0b: 0x0018, + 0xe0c: 0x0018, 0xe0d: 0x0018, 0xe0e: 0x0018, 0xe0f: 0x0018, 0xe10: 0x0018, 0xe11: 0x0018, + 0xe12: 0x0018, 0xe13: 0x0018, 0xe14: 0x0018, 0xe15: 0x0018, 0xe16: 0x0018, 0xe17: 0x0018, + 0xe18: 0x0018, 0xe19: 0x0018, 0xe1a: 0x0018, 0xe1b: 0x0018, 0xe1c: 0x0018, 0xe1d: 0x0018, + 0xe1e: 0x0018, 0xe1f: 0x0018, 0xe20: 0x0018, 0xe21: 0x0018, 0xe22: 0x0018, 0xe23: 0x0018, + 0xe24: 0x0018, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, + 0xe2a: 0x1308, 0xe2b: 0x1308, 0xe2c: 0x1308, 0xe2d: 0x1308, 0xe2e: 0x1018, 0xe2f: 0x1018, + 0xe30: 0x0018, 0xe31: 0x0018, 0xe32: 0x0018, 0xe33: 0x0018, 0xe34: 0x0018, 0xe35: 0x0018, + 0xe36: 0xe125, 0xe37: 0x0018, 0xe38: 0x29bd, 0xe39: 0x29dd, 0xe3a: 0x29fd, 0xe3b: 0x0018, + 0xe3c: 0x0008, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, + // Block 0x39, offset 0xe40 + 0xe40: 0x2b3d, 0xe41: 0x2b5d, 0xe42: 0x2b7d, 0xe43: 0x2b9d, 0xe44: 0x2bbd, 0xe45: 0x2bdd, + 0xe46: 0x2bdd, 0xe47: 0x2bdd, 0xe48: 0x2bfd, 0xe49: 0x2bfd, 0xe4a: 0x2bfd, 0xe4b: 0x2bfd, + 0xe4c: 0x2c1d, 0xe4d: 0x2c1d, 0xe4e: 0x2c1d, 0xe4f: 0x2c3d, 0xe50: 0x2c5d, 0xe51: 0x2c5d, + 0xe52: 0x2a7d, 0xe53: 0x2a7d, 0xe54: 0x2c5d, 0xe55: 0x2c5d, 0xe56: 0x2c7d, 0xe57: 0x2c7d, + 0xe58: 0x2c5d, 0xe59: 0x2c5d, 0xe5a: 0x2a7d, 0xe5b: 0x2a7d, 0xe5c: 0x2c5d, 0xe5d: 0x2c5d, + 0xe5e: 0x2c3d, 0xe5f: 0x2c3d, 0xe60: 0x2c9d, 0xe61: 0x2c9d, 0xe62: 0x2cbd, 0xe63: 0x2cbd, + 0xe64: 0x0040, 0xe65: 0x2cdd, 0xe66: 0x2cfd, 0xe67: 0x2d1d, 0xe68: 0x2d1d, 0xe69: 0x2d3d, + 0xe6a: 0x2d5d, 0xe6b: 0x2d7d, 0xe6c: 0x2d9d, 0xe6d: 0x2dbd, 0xe6e: 0x2ddd, 0xe6f: 0x2dfd, + 0xe70: 0x2e1d, 0xe71: 0x2e3d, 0xe72: 0x2e3d, 0xe73: 0x2e5d, 0xe74: 0x2e7d, 0xe75: 0x2e7d, + 0xe76: 0x2e9d, 0xe77: 0x2ebd, 0xe78: 0x2e5d, 0xe79: 0x2edd, 0xe7a: 0x2efd, 0xe7b: 0x2edd, + 0xe7c: 0x2e5d, 0xe7d: 0x2f1d, 0xe7e: 0x2f3d, 0xe7f: 0x2f5d, + // Block 0x3a, offset 0xe80 + 0xe80: 0x2f7d, 0xe81: 0x2f9d, 0xe82: 0x2cfd, 0xe83: 0x2cdd, 0xe84: 0x2fbd, 0xe85: 0x2fdd, + 0xe86: 0x2ffd, 0xe87: 0x301d, 0xe88: 0x303d, 0xe89: 0x305d, 0xe8a: 0x307d, 0xe8b: 0x309d, + 0xe8c: 0x30bd, 0xe8d: 0x30dd, 0xe8e: 0x30fd, 0xe8f: 0x0040, 0xe90: 0x0018, 0xe91: 0x0018, + 0xe92: 0x311d, 0xe93: 0x313d, 0xe94: 0x315d, 0xe95: 0x317d, 0xe96: 0x319d, 0xe97: 0x31bd, + 0xe98: 0x31dd, 0xe99: 0x31fd, 0xe9a: 0x321d, 0xe9b: 0x323d, 0xe9c: 0x315d, 0xe9d: 0x325d, + 0xe9e: 0x327d, 0xe9f: 0x329d, 0xea0: 0x0008, 0xea1: 0x0008, 0xea2: 0x0008, 0xea3: 0x0008, + 0xea4: 0x0008, 0xea5: 0x0008, 0xea6: 0x0008, 0xea7: 0x0008, 0xea8: 0x0008, 0xea9: 0x0008, + 0xeaa: 0x0008, 0xeab: 0x0008, 0xeac: 0x0008, 0xead: 0x0008, 0xeae: 0x0008, 0xeaf: 0x0008, + 0xeb0: 0x0008, 0xeb1: 0x0008, 0xeb2: 0x0008, 0xeb3: 0x0008, 0xeb4: 0x0008, 0xeb5: 0x0008, + 0xeb6: 0x0008, 0xeb7: 0x0008, 0xeb8: 0x0008, 0xeb9: 0x0008, 0xeba: 0x0008, 0xebb: 0x0040, + 0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040, + // Block 0x3b, offset 0xec0 + 0xec0: 0x36a2, 0xec1: 0x36d2, 0xec2: 0x3702, 0xec3: 0x3732, 0xec4: 0x32bd, 0xec5: 0x32dd, + 0xec6: 0x32fd, 0xec7: 0x331d, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018, + 0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x333d, 0xed1: 0x3761, + 0xed2: 0x3779, 0xed3: 0x3791, 0xed4: 0x37a9, 0xed5: 0x37c1, 0xed6: 0x37d9, 0xed7: 0x37f1, + 0xed8: 0x3809, 0xed9: 0x3821, 0xeda: 0x3839, 0xedb: 0x3851, 0xedc: 0x3869, 0xedd: 0x3881, + 0xede: 0x3899, 0xedf: 0x38b1, 0xee0: 0x335d, 0xee1: 0x337d, 0xee2: 0x339d, 0xee3: 0x33bd, + 0xee4: 0x33dd, 0xee5: 0x33dd, 0xee6: 0x33fd, 0xee7: 0x341d, 0xee8: 0x343d, 0xee9: 0x345d, + 0xeea: 0x347d, 0xeeb: 0x349d, 0xeec: 0x34bd, 0xeed: 0x34dd, 0xeee: 0x34fd, 0xeef: 0x351d, + 0xef0: 0x353d, 0xef1: 0x355d, 0xef2: 0x357d, 0xef3: 0x359d, 0xef4: 0x35bd, 0xef5: 0x35dd, + 0xef6: 0x35fd, 0xef7: 0x361d, 0xef8: 0x363d, 0xef9: 0x365d, 0xefa: 0x367d, 0xefb: 0x369d, + 0xefc: 0x38c9, 0xefd: 0x3901, 0xefe: 0x36bd, 0xeff: 0x0018, + // Block 0x3c, offset 0xf00 + 0xf00: 0x36dd, 0xf01: 0x36fd, 0xf02: 0x371d, 0xf03: 0x373d, 0xf04: 0x375d, 0xf05: 0x377d, + 0xf06: 0x379d, 0xf07: 0x37bd, 0xf08: 0x37dd, 0xf09: 0x37fd, 0xf0a: 0x381d, 0xf0b: 0x383d, + 0xf0c: 0x385d, 0xf0d: 0x387d, 0xf0e: 0x389d, 0xf0f: 0x38bd, 0xf10: 0x38dd, 0xf11: 0x38fd, + 0xf12: 0x391d, 0xf13: 0x393d, 0xf14: 0x395d, 0xf15: 0x397d, 0xf16: 0x399d, 0xf17: 0x39bd, + 0xf18: 0x39dd, 0xf19: 0x39fd, 0xf1a: 0x3a1d, 0xf1b: 0x3a3d, 0xf1c: 0x3a5d, 0xf1d: 0x3a7d, + 0xf1e: 0x3a9d, 0xf1f: 0x3abd, 0xf20: 0x3add, 0xf21: 0x3afd, 0xf22: 0x3b1d, 0xf23: 0x3b3d, + 0xf24: 0x3b5d, 0xf25: 0x3b7d, 0xf26: 0x127d, 0xf27: 0x3b9d, 0xf28: 0x3bbd, 0xf29: 0x3bdd, + 0xf2a: 0x3bfd, 0xf2b: 0x3c1d, 0xf2c: 0x3c3d, 0xf2d: 0x3c5d, 0xf2e: 0x239d, 0xf2f: 0x3c7d, + 0xf30: 0x3c9d, 0xf31: 0x3939, 0xf32: 0x3951, 0xf33: 0x3969, 0xf34: 0x3981, 0xf35: 0x3999, + 0xf36: 0x39b1, 0xf37: 0x39c9, 0xf38: 0x39e1, 0xf39: 0x39f9, 0xf3a: 0x3a11, 0xf3b: 0x3a29, + 0xf3c: 0x3a41, 0xf3d: 0x3a59, 0xf3e: 0x3a71, 0xf3f: 0x3a89, + // Block 0x3d, offset 0xf40 + 0xf40: 0x3aa1, 0xf41: 0x3ac9, 0xf42: 0x3af1, 0xf43: 0x3b19, 0xf44: 0x3b41, 0xf45: 0x3b69, + 0xf46: 0x3b91, 0xf47: 0x3bb9, 0xf48: 0x3be1, 0xf49: 0x3c09, 0xf4a: 0x3c39, 0xf4b: 0x3c69, + 0xf4c: 0x3c99, 0xf4d: 0x3cbd, 0xf4e: 0x3cb1, 0xf4f: 0x3cdd, 0xf50: 0x3cfd, 0xf51: 0x3d15, + 0xf52: 0x3d2d, 0xf53: 0x3d45, 0xf54: 0x3d5d, 0xf55: 0x3d5d, 0xf56: 0x3d45, 0xf57: 0x3d75, + 0xf58: 0x07bd, 0xf59: 0x3d8d, 0xf5a: 0x3da5, 0xf5b: 0x3dbd, 0xf5c: 0x3dd5, 0xf5d: 0x3ded, + 0xf5e: 0x3e05, 0xf5f: 0x3e1d, 0xf60: 0x3e35, 0xf61: 0x3e4d, 0xf62: 0x3e65, 0xf63: 0x3e7d, + 0xf64: 0x3e95, 0xf65: 0x3e95, 0xf66: 0x3ead, 0xf67: 0x3ead, 0xf68: 0x3ec5, 0xf69: 0x3ec5, + 0xf6a: 0x3edd, 0xf6b: 0x3ef5, 0xf6c: 0x3f0d, 0xf6d: 0x3f25, 0xf6e: 0x3f3d, 0xf6f: 0x3f3d, + 0xf70: 0x3f55, 0xf71: 0x3f55, 0xf72: 0x3f55, 0xf73: 0x3f6d, 0xf74: 0x3f85, 0xf75: 0x3f9d, + 0xf76: 0x3fb5, 0xf77: 0x3f9d, 0xf78: 0x3fcd, 0xf79: 0x3fe5, 0xf7a: 0x3f6d, 0xf7b: 0x3ffd, + 0xf7c: 0x4015, 0xf7d: 0x4015, 0xf7e: 0x4015, 0xf7f: 0x0040, + // Block 0x3e, offset 0xf80 + 0xf80: 0x3cc9, 0xf81: 0x3d31, 0xf82: 0x3d99, 0xf83: 0x3e01, 0xf84: 0x3e51, 0xf85: 0x3eb9, + 0xf86: 0x3f09, 0xf87: 0x3f59, 0xf88: 0x3fd9, 0xf89: 0x4041, 0xf8a: 0x4091, 0xf8b: 0x40e1, + 0xf8c: 0x4131, 0xf8d: 0x4199, 0xf8e: 0x4201, 0xf8f: 0x4251, 0xf90: 0x42a1, 0xf91: 0x42d9, + 0xf92: 0x4329, 0xf93: 0x4391, 0xf94: 0x43f9, 0xf95: 0x4431, 0xf96: 0x44b1, 0xf97: 0x4549, + 0xf98: 0x45c9, 0xf99: 0x4619, 0xf9a: 0x4699, 0xf9b: 0x4719, 0xf9c: 0x4781, 0xf9d: 0x47d1, + 0xf9e: 0x4821, 0xf9f: 0x4871, 0xfa0: 0x48d9, 0xfa1: 0x4959, 0xfa2: 0x49c1, 0xfa3: 0x4a11, + 0xfa4: 0x4a61, 0xfa5: 0x4ab1, 0xfa6: 0x4ae9, 0xfa7: 0x4b21, 0xfa8: 0x4b59, 0xfa9: 0x4b91, + 0xfaa: 0x4be1, 0xfab: 0x4c31, 0xfac: 0x4cb1, 0xfad: 0x4d01, 0xfae: 0x4d69, 0xfaf: 0x4de9, + 0xfb0: 0x4e39, 0xfb1: 0x4e71, 0xfb2: 0x4ea9, 0xfb3: 0x4f29, 0xfb4: 0x4f91, 0xfb5: 0x5011, + 0xfb6: 0x5061, 0xfb7: 0x50e1, 0xfb8: 0x5119, 0xfb9: 0x5169, 0xfba: 0x51b9, 0xfbb: 0x5209, + 0xfbc: 0x5259, 0xfbd: 0x52a9, 0xfbe: 0x5311, 0xfbf: 0x5361, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x5399, 0xfc1: 0x53e9, 0xfc2: 0x5439, 0xfc3: 0x5489, 0xfc4: 0x54f1, 0xfc5: 0x5541, + 0xfc6: 0x5591, 0xfc7: 0x55e1, 0xfc8: 0x5661, 0xfc9: 0x56c9, 0xfca: 0x5701, 0xfcb: 0x5781, + 0xfcc: 0x57b9, 0xfcd: 0x5821, 0xfce: 0x5889, 0xfcf: 0x58d9, 0xfd0: 0x5929, 0xfd1: 0x5979, + 0xfd2: 0x59e1, 0xfd3: 0x5a19, 0xfd4: 0x5a69, 0xfd5: 0x5ad1, 0xfd6: 0x5b09, 0xfd7: 0x5b89, + 0xfd8: 0x5bd9, 0xfd9: 0x5c01, 0xfda: 0x5c29, 0xfdb: 0x5c51, 0xfdc: 0x5c79, 0xfdd: 0x5ca1, + 0xfde: 0x5cc9, 0xfdf: 0x5cf1, 0xfe0: 0x5d19, 0xfe1: 0x5d41, 0xfe2: 0x5d69, 0xfe3: 0x5d99, + 0xfe4: 0x5dc9, 0xfe5: 0x5df9, 0xfe6: 0x5e29, 0xfe7: 0x5e59, 0xfe8: 0x5e89, 0xfe9: 0x5eb9, + 0xfea: 0x5ee9, 0xfeb: 0x5f19, 0xfec: 0x5f49, 0xfed: 0x5f79, 0xfee: 0x5fa9, 0xfef: 0x5fd9, + 0xff0: 0x6009, 0xff1: 0x402d, 0xff2: 0x6039, 0xff3: 0x6051, 0xff4: 0x404d, 0xff5: 0x6069, + 0xff6: 0x6081, 0xff7: 0x6099, 0xff8: 0x406d, 0xff9: 0x406d, 0xffa: 0x60b1, 0xffb: 0x60c9, + 0xffc: 0x6101, 0xffd: 0x6139, 0xffe: 0x6171, 0xfff: 0x61a9, + // Block 0x40, offset 0x1000 + 0x1000: 0x6211, 0x1001: 0x6229, 0x1002: 0x408d, 0x1003: 0x6241, 0x1004: 0x6259, 0x1005: 0x6271, + 0x1006: 0x6289, 0x1007: 0x62a1, 0x1008: 0x40ad, 0x1009: 0x62b9, 0x100a: 0x62e1, 0x100b: 0x62f9, + 0x100c: 0x40cd, 0x100d: 0x40cd, 0x100e: 0x6311, 0x100f: 0x6329, 0x1010: 0x6341, 0x1011: 0x40ed, + 0x1012: 0x410d, 0x1013: 0x412d, 0x1014: 0x414d, 0x1015: 0x416d, 0x1016: 0x6359, 0x1017: 0x6371, + 0x1018: 0x6389, 0x1019: 0x63a1, 0x101a: 0x63b9, 0x101b: 0x418d, 0x101c: 0x63d1, 0x101d: 0x63e9, + 0x101e: 0x6401, 0x101f: 0x41ad, 0x1020: 0x41cd, 0x1021: 0x6419, 0x1022: 0x41ed, 0x1023: 0x420d, + 0x1024: 0x422d, 0x1025: 0x6431, 0x1026: 0x424d, 0x1027: 0x6449, 0x1028: 0x6479, 0x1029: 0x6211, + 0x102a: 0x426d, 0x102b: 0x428d, 0x102c: 0x42ad, 0x102d: 0x42cd, 0x102e: 0x64b1, 0x102f: 0x64f1, + 0x1030: 0x6539, 0x1031: 0x6551, 0x1032: 0x42ed, 0x1033: 0x6569, 0x1034: 0x6581, 0x1035: 0x6599, + 0x1036: 0x430d, 0x1037: 0x65b1, 0x1038: 0x65c9, 0x1039: 0x65b1, 0x103a: 0x65e1, 0x103b: 0x65f9, + 0x103c: 0x432d, 0x103d: 0x6611, 0x103e: 0x6629, 0x103f: 0x6611, + // Block 0x41, offset 0x1040 + 0x1040: 0x434d, 0x1041: 0x436d, 0x1042: 0x0040, 0x1043: 0x6641, 0x1044: 0x6659, 0x1045: 0x6671, + 0x1046: 0x6689, 0x1047: 0x0040, 0x1048: 0x66c1, 0x1049: 0x66d9, 0x104a: 0x66f1, 0x104b: 0x6709, + 0x104c: 0x6721, 0x104d: 0x6739, 0x104e: 0x6401, 0x104f: 0x6751, 0x1050: 0x6769, 0x1051: 0x6781, + 0x1052: 0x438d, 0x1053: 0x6799, 0x1054: 0x6289, 0x1055: 0x43ad, 0x1056: 0x43cd, 0x1057: 0x67b1, + 0x1058: 0x0040, 0x1059: 0x43ed, 0x105a: 0x67c9, 0x105b: 0x67e1, 0x105c: 0x67f9, 0x105d: 0x6811, + 0x105e: 0x6829, 0x105f: 0x6859, 0x1060: 0x6889, 0x1061: 0x68b1, 0x1062: 0x68d9, 0x1063: 0x6901, + 0x1064: 0x6929, 0x1065: 0x6951, 0x1066: 0x6979, 0x1067: 0x69a1, 0x1068: 0x69c9, 0x1069: 0x69f1, + 0x106a: 0x6a21, 0x106b: 0x6a51, 0x106c: 0x6a81, 0x106d: 0x6ab1, 0x106e: 0x6ae1, 0x106f: 0x6b11, + 0x1070: 0x6b41, 0x1071: 0x6b71, 0x1072: 0x6ba1, 0x1073: 0x6bd1, 0x1074: 0x6c01, 0x1075: 0x6c31, + 0x1076: 0x6c61, 0x1077: 0x6c91, 0x1078: 0x6cc1, 0x1079: 0x6cf1, 0x107a: 0x6d21, 0x107b: 0x6d51, + 0x107c: 0x6d81, 0x107d: 0x6db1, 0x107e: 0x6de1, 0x107f: 0x440d, + // Block 0x42, offset 0x1080 + 0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008, + 0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008, + 0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008, + 0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008, + 0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008, + 0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008, + 0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008, + 0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x1308, + 0x10b0: 0x1318, 0x10b1: 0x1318, 0x10b2: 0x1318, 0x10b3: 0x0018, 0x10b4: 0x1308, 0x10b5: 0x1308, + 0x10b6: 0x1308, 0x10b7: 0x1308, 0x10b8: 0x1308, 0x10b9: 0x1308, 0x10ba: 0x1308, 0x10bb: 0x1308, + 0x10bc: 0x1308, 0x10bd: 0x1308, 0x10be: 0x0018, 0x10bf: 0x0008, + // Block 0x43, offset 0x10c0 + 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, + 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, + 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, + 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, + 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0x0ea1, 0x10dd: 0x6e11, + 0x10de: 0x1308, 0x10df: 0x1308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008, + 0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008, + 0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008, + 0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008, + 0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008, + 0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 0x10ff: 0x0008, + // Block 0x44, offset 0x1100 + 0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018, + 0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018, + 0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018, + 0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008, + 0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008, + 0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 0x1122: 0xe00d, 0x1123: 0x0008, + 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, + 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008, + 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008, + 0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008, + 0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 0x113f: 0x0008, + // Block 0x45, offset 0x1140 + 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, + 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, + 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, + 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, + 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008, + 0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 0x1162: 0xe00d, 0x1163: 0x0008, + 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, + 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, + 0x1170: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, + 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d, + 0x117c: 0x0008, 0x117d: 0x442d, 0x117e: 0xe00d, 0x117f: 0x0008, + // Block 0x46, offset 0x1180 + 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, + 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d, + 0x118c: 0x0008, 0x118d: 0x11d9, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, + 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, + 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, + 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, + 0x11aa: 0x6e29, 0x11ab: 0x1029, 0x11ac: 0x11c1, 0x11ad: 0x6e41, 0x11ae: 0x1221, 0x11af: 0x0040, + 0x11b0: 0x6e59, 0x11b1: 0x6e71, 0x11b2: 0x1239, 0x11b3: 0x444d, 0x11b4: 0xe00d, 0x11b5: 0x0008, + 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0x0040, 0x11b9: 0x0040, 0x11ba: 0x0040, 0x11bb: 0x0040, + 0x11bc: 0x0040, 0x11bd: 0x0040, 0x11be: 0x0040, 0x11bf: 0x0040, + // Block 0x47, offset 0x11c0 + 0x11c0: 0x64d5, 0x11c1: 0x64f5, 0x11c2: 0x6515, 0x11c3: 0x6535, 0x11c4: 0x6555, 0x11c5: 0x6575, + 0x11c6: 0x6595, 0x11c7: 0x65b5, 0x11c8: 0x65d5, 0x11c9: 0x65f5, 0x11ca: 0x6615, 0x11cb: 0x6635, + 0x11cc: 0x6655, 0x11cd: 0x6675, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x6695, 0x11d1: 0x0008, + 0x11d2: 0x66b5, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x66d5, 0x11d6: 0x66f5, 0x11d7: 0x6715, + 0x11d8: 0x6735, 0x11d9: 0x6755, 0x11da: 0x6775, 0x11db: 0x6795, 0x11dc: 0x67b5, 0x11dd: 0x67d5, + 0x11de: 0x67f5, 0x11df: 0x0008, 0x11e0: 0x6815, 0x11e1: 0x0008, 0x11e2: 0x6835, 0x11e3: 0x0008, + 0x11e4: 0x0008, 0x11e5: 0x6855, 0x11e6: 0x6875, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008, + 0x11ea: 0x6895, 0x11eb: 0x68b5, 0x11ec: 0x68d5, 0x11ed: 0x68f5, 0x11ee: 0x6915, 0x11ef: 0x6935, + 0x11f0: 0x6955, 0x11f1: 0x6975, 0x11f2: 0x6995, 0x11f3: 0x69b5, 0x11f4: 0x69d5, 0x11f5: 0x69f5, + 0x11f6: 0x6a15, 0x11f7: 0x6a35, 0x11f8: 0x6a55, 0x11f9: 0x6a75, 0x11fa: 0x6a95, 0x11fb: 0x6ab5, + 0x11fc: 0x6ad5, 0x11fd: 0x6af5, 0x11fe: 0x6b15, 0x11ff: 0x6b35, + // Block 0x48, offset 0x1200 + 0x1200: 0x7a95, 0x1201: 0x7ab5, 0x1202: 0x7ad5, 0x1203: 0x7af5, 0x1204: 0x7b15, 0x1205: 0x7b35, + 0x1206: 0x7b55, 0x1207: 0x7b75, 0x1208: 0x7b95, 0x1209: 0x7bb5, 0x120a: 0x7bd5, 0x120b: 0x7bf5, + 0x120c: 0x7c15, 0x120d: 0x7c35, 0x120e: 0x7c55, 0x120f: 0x6ec9, 0x1210: 0x6ef1, 0x1211: 0x6f19, + 0x1212: 0x7c75, 0x1213: 0x7c95, 0x1214: 0x7cb5, 0x1215: 0x6f41, 0x1216: 0x6f69, 0x1217: 0x6f91, + 0x1218: 0x7cd5, 0x1219: 0x7cf5, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040, + 0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040, + 0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040, + 0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040, + 0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040, + 0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, + 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, + // Block 0x49, offset 0x1240 + 0x1240: 0x6fb9, 0x1241: 0x6fd1, 0x1242: 0x6fe9, 0x1243: 0x7d15, 0x1244: 0x7d35, 0x1245: 0x7001, + 0x1246: 0x7001, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040, + 0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040, + 0x1252: 0x0040, 0x1253: 0x7019, 0x1254: 0x7041, 0x1255: 0x7069, 0x1256: 0x7091, 0x1257: 0x70b9, + 0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x70e1, + 0x125e: 0x1308, 0x125f: 0x7109, 0x1260: 0x7131, 0x1261: 0x20a9, 0x1262: 0x20f1, 0x1263: 0x7149, + 0x1264: 0x7161, 0x1265: 0x7179, 0x1266: 0x7191, 0x1267: 0x71a9, 0x1268: 0x71c1, 0x1269: 0x1fb2, + 0x126a: 0x71d9, 0x126b: 0x7201, 0x126c: 0x7229, 0x126d: 0x7261, 0x126e: 0x7299, 0x126f: 0x72c1, + 0x1270: 0x72e9, 0x1271: 0x7311, 0x1272: 0x7339, 0x1273: 0x7361, 0x1274: 0x7389, 0x1275: 0x73b1, + 0x1276: 0x73d9, 0x1277: 0x0040, 0x1278: 0x7401, 0x1279: 0x7429, 0x127a: 0x7451, 0x127b: 0x7479, + 0x127c: 0x74a1, 0x127d: 0x0040, 0x127e: 0x74c9, 0x127f: 0x0040, + // Block 0x4a, offset 0x1280 + 0x1280: 0x74f1, 0x1281: 0x7519, 0x1282: 0x0040, 0x1283: 0x7541, 0x1284: 0x7569, 0x1285: 0x0040, + 0x1286: 0x7591, 0x1287: 0x75b9, 0x1288: 0x75e1, 0x1289: 0x7609, 0x128a: 0x7631, 0x128b: 0x7659, + 0x128c: 0x7681, 0x128d: 0x76a9, 0x128e: 0x76d1, 0x128f: 0x76f9, 0x1290: 0x7721, 0x1291: 0x7721, + 0x1292: 0x7739, 0x1293: 0x7739, 0x1294: 0x7739, 0x1295: 0x7739, 0x1296: 0x7751, 0x1297: 0x7751, + 0x1298: 0x7751, 0x1299: 0x7751, 0x129a: 0x7769, 0x129b: 0x7769, 0x129c: 0x7769, 0x129d: 0x7769, + 0x129e: 0x7781, 0x129f: 0x7781, 0x12a0: 0x7781, 0x12a1: 0x7781, 0x12a2: 0x7799, 0x12a3: 0x7799, + 0x12a4: 0x7799, 0x12a5: 0x7799, 0x12a6: 0x77b1, 0x12a7: 0x77b1, 0x12a8: 0x77b1, 0x12a9: 0x77b1, + 0x12aa: 0x77c9, 0x12ab: 0x77c9, 0x12ac: 0x77c9, 0x12ad: 0x77c9, 0x12ae: 0x77e1, 0x12af: 0x77e1, + 0x12b0: 0x77e1, 0x12b1: 0x77e1, 0x12b2: 0x77f9, 0x12b3: 0x77f9, 0x12b4: 0x77f9, 0x12b5: 0x77f9, + 0x12b6: 0x7811, 0x12b7: 0x7811, 0x12b8: 0x7811, 0x12b9: 0x7811, 0x12ba: 0x7829, 0x12bb: 0x7829, + 0x12bc: 0x7829, 0x12bd: 0x7829, 0x12be: 0x7841, 0x12bf: 0x7841, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x7841, 0x12c1: 0x7841, 0x12c2: 0x7859, 0x12c3: 0x7859, 0x12c4: 0x7871, 0x12c5: 0x7871, + 0x12c6: 0x7889, 0x12c7: 0x7889, 0x12c8: 0x78a1, 0x12c9: 0x78a1, 0x12ca: 0x78b9, 0x12cb: 0x78b9, + 0x12cc: 0x78d1, 0x12cd: 0x78d1, 0x12ce: 0x78e9, 0x12cf: 0x78e9, 0x12d0: 0x78e9, 0x12d1: 0x78e9, + 0x12d2: 0x7901, 0x12d3: 0x7901, 0x12d4: 0x7901, 0x12d5: 0x7901, 0x12d6: 0x7919, 0x12d7: 0x7919, + 0x12d8: 0x7919, 0x12d9: 0x7919, 0x12da: 0x7931, 0x12db: 0x7931, 0x12dc: 0x7931, 0x12dd: 0x7931, + 0x12de: 0x7949, 0x12df: 0x7949, 0x12e0: 0x7961, 0x12e1: 0x7961, 0x12e2: 0x7961, 0x12e3: 0x7961, + 0x12e4: 0x7979, 0x12e5: 0x7979, 0x12e6: 0x7991, 0x12e7: 0x7991, 0x12e8: 0x7991, 0x12e9: 0x7991, + 0x12ea: 0x79a9, 0x12eb: 0x79a9, 0x12ec: 0x79a9, 0x12ed: 0x79a9, 0x12ee: 0x79c1, 0x12ef: 0x79c1, + 0x12f0: 0x79d9, 0x12f1: 0x79d9, 0x12f2: 0x0018, 0x12f3: 0x0018, 0x12f4: 0x0018, 0x12f5: 0x0018, + 0x12f6: 0x0018, 0x12f7: 0x0018, 0x12f8: 0x0018, 0x12f9: 0x0018, 0x12fa: 0x0018, 0x12fb: 0x0018, + 0x12fc: 0x0018, 0x12fd: 0x0018, 0x12fe: 0x0018, 0x12ff: 0x0018, + // Block 0x4c, offset 0x1300 + 0x1300: 0x0018, 0x1301: 0x0018, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040, + 0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040, + 0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040, + 0x1312: 0x0040, 0x1313: 0x79f1, 0x1314: 0x79f1, 0x1315: 0x79f1, 0x1316: 0x79f1, 0x1317: 0x7a09, + 0x1318: 0x7a09, 0x1319: 0x7a21, 0x131a: 0x7a21, 0x131b: 0x7a39, 0x131c: 0x7a39, 0x131d: 0x0479, + 0x131e: 0x7a51, 0x131f: 0x7a51, 0x1320: 0x7a69, 0x1321: 0x7a69, 0x1322: 0x7a81, 0x1323: 0x7a81, + 0x1324: 0x7a99, 0x1325: 0x7a99, 0x1326: 0x7a99, 0x1327: 0x7a99, 0x1328: 0x7ab1, 0x1329: 0x7ab1, + 0x132a: 0x7ac9, 0x132b: 0x7ac9, 0x132c: 0x7af1, 0x132d: 0x7af1, 0x132e: 0x7b19, 0x132f: 0x7b19, + 0x1330: 0x7b41, 0x1331: 0x7b41, 0x1332: 0x7b69, 0x1333: 0x7b69, 0x1334: 0x7b91, 0x1335: 0x7b91, + 0x1336: 0x7bb9, 0x1337: 0x7bb9, 0x1338: 0x7bb9, 0x1339: 0x7be1, 0x133a: 0x7be1, 0x133b: 0x7be1, + 0x133c: 0x7c09, 0x133d: 0x7c09, 0x133e: 0x7c09, 0x133f: 0x7c09, + // Block 0x4d, offset 0x1340 + 0x1340: 0x85f9, 0x1341: 0x8621, 0x1342: 0x8649, 0x1343: 0x8671, 0x1344: 0x8699, 0x1345: 0x86c1, + 0x1346: 0x86e9, 0x1347: 0x8711, 0x1348: 0x8739, 0x1349: 0x8761, 0x134a: 0x8789, 0x134b: 0x87b1, + 0x134c: 0x87d9, 0x134d: 0x8801, 0x134e: 0x8829, 0x134f: 0x8851, 0x1350: 0x8879, 0x1351: 0x88a1, + 0x1352: 0x88c9, 0x1353: 0x88f1, 0x1354: 0x8919, 0x1355: 0x8941, 0x1356: 0x8969, 0x1357: 0x8991, + 0x1358: 0x89b9, 0x1359: 0x89e1, 0x135a: 0x8a09, 0x135b: 0x8a31, 0x135c: 0x8a59, 0x135d: 0x8a81, + 0x135e: 0x8aaa, 0x135f: 0x8ada, 0x1360: 0x8b0a, 0x1361: 0x8b3a, 0x1362: 0x8b6a, 0x1363: 0x8b9a, + 0x1364: 0x8bc9, 0x1365: 0x8bf1, 0x1366: 0x7c71, 0x1367: 0x8c19, 0x1368: 0x7be1, 0x1369: 0x7c99, + 0x136a: 0x8c41, 0x136b: 0x8c69, 0x136c: 0x7d39, 0x136d: 0x8c91, 0x136e: 0x7d61, 0x136f: 0x7d89, + 0x1370: 0x8cb9, 0x1371: 0x8ce1, 0x1372: 0x7e29, 0x1373: 0x8d09, 0x1374: 0x7e51, 0x1375: 0x7e79, + 0x1376: 0x8d31, 0x1377: 0x8d59, 0x1378: 0x7ec9, 0x1379: 0x8d81, 0x137a: 0x7ef1, 0x137b: 0x7f19, + 0x137c: 0x83a1, 0x137d: 0x83c9, 0x137e: 0x8441, 0x137f: 0x8469, + // Block 0x4e, offset 0x1380 + 0x1380: 0x8491, 0x1381: 0x8531, 0x1382: 0x8559, 0x1383: 0x8581, 0x1384: 0x85a9, 0x1385: 0x8649, + 0x1386: 0x8671, 0x1387: 0x8699, 0x1388: 0x8da9, 0x1389: 0x8739, 0x138a: 0x8dd1, 0x138b: 0x8df9, + 0x138c: 0x8829, 0x138d: 0x8e21, 0x138e: 0x8851, 0x138f: 0x8879, 0x1390: 0x8a81, 0x1391: 0x8e49, + 0x1392: 0x8e71, 0x1393: 0x89b9, 0x1394: 0x8e99, 0x1395: 0x89e1, 0x1396: 0x8a09, 0x1397: 0x7c21, + 0x1398: 0x7c49, 0x1399: 0x8ec1, 0x139a: 0x7c71, 0x139b: 0x8ee9, 0x139c: 0x7cc1, 0x139d: 0x7ce9, + 0x139e: 0x7d11, 0x139f: 0x7d39, 0x13a0: 0x8f11, 0x13a1: 0x7db1, 0x13a2: 0x7dd9, 0x13a3: 0x7e01, + 0x13a4: 0x7e29, 0x13a5: 0x8f39, 0x13a6: 0x7ec9, 0x13a7: 0x7f41, 0x13a8: 0x7f69, 0x13a9: 0x7f91, + 0x13aa: 0x7fb9, 0x13ab: 0x7fe1, 0x13ac: 0x8031, 0x13ad: 0x8059, 0x13ae: 0x8081, 0x13af: 0x80a9, + 0x13b0: 0x80d1, 0x13b1: 0x80f9, 0x13b2: 0x8f61, 0x13b3: 0x8121, 0x13b4: 0x8149, 0x13b5: 0x8171, + 0x13b6: 0x8199, 0x13b7: 0x81c1, 0x13b8: 0x81e9, 0x13b9: 0x8239, 0x13ba: 0x8261, 0x13bb: 0x8289, + 0x13bc: 0x82b1, 0x13bd: 0x82d9, 0x13be: 0x8301, 0x13bf: 0x8329, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x8351, 0x13c1: 0x8379, 0x13c2: 0x83f1, 0x13c3: 0x8419, 0x13c4: 0x84b9, 0x13c5: 0x84e1, + 0x13c6: 0x8509, 0x13c7: 0x8531, 0x13c8: 0x8559, 0x13c9: 0x85d1, 0x13ca: 0x85f9, 0x13cb: 0x8621, + 0x13cc: 0x8649, 0x13cd: 0x8f89, 0x13ce: 0x86c1, 0x13cf: 0x86e9, 0x13d0: 0x8711, 0x13d1: 0x8739, + 0x13d2: 0x87b1, 0x13d3: 0x87d9, 0x13d4: 0x8801, 0x13d5: 0x8829, 0x13d6: 0x8fb1, 0x13d7: 0x88a1, + 0x13d8: 0x88c9, 0x13d9: 0x8fd9, 0x13da: 0x8941, 0x13db: 0x8969, 0x13dc: 0x8991, 0x13dd: 0x89b9, + 0x13de: 0x9001, 0x13df: 0x7c71, 0x13e0: 0x8ee9, 0x13e1: 0x7d39, 0x13e2: 0x8f11, 0x13e3: 0x7e29, + 0x13e4: 0x8f39, 0x13e5: 0x7ec9, 0x13e6: 0x9029, 0x13e7: 0x80d1, 0x13e8: 0x9051, 0x13e9: 0x9079, + 0x13ea: 0x90a1, 0x13eb: 0x8531, 0x13ec: 0x8559, 0x13ed: 0x8649, 0x13ee: 0x8829, 0x13ef: 0x8fb1, + 0x13f0: 0x89b9, 0x13f1: 0x9001, 0x13f2: 0x90c9, 0x13f3: 0x9101, 0x13f4: 0x9139, 0x13f5: 0x9171, + 0x13f6: 0x9199, 0x13f7: 0x91c1, 0x13f8: 0x91e9, 0x13f9: 0x9211, 0x13fa: 0x9239, 0x13fb: 0x9261, + 0x13fc: 0x9289, 0x13fd: 0x92b1, 0x13fe: 0x92d9, 0x13ff: 0x9301, + // Block 0x50, offset 0x1400 + 0x1400: 0x9329, 0x1401: 0x9351, 0x1402: 0x9379, 0x1403: 0x93a1, 0x1404: 0x93c9, 0x1405: 0x93f1, + 0x1406: 0x9419, 0x1407: 0x9441, 0x1408: 0x9469, 0x1409: 0x9491, 0x140a: 0x94b9, 0x140b: 0x94e1, + 0x140c: 0x9079, 0x140d: 0x9509, 0x140e: 0x9531, 0x140f: 0x9559, 0x1410: 0x9581, 0x1411: 0x9171, + 0x1412: 0x9199, 0x1413: 0x91c1, 0x1414: 0x91e9, 0x1415: 0x9211, 0x1416: 0x9239, 0x1417: 0x9261, + 0x1418: 0x9289, 0x1419: 0x92b1, 0x141a: 0x92d9, 0x141b: 0x9301, 0x141c: 0x9329, 0x141d: 0x9351, + 0x141e: 0x9379, 0x141f: 0x93a1, 0x1420: 0x93c9, 0x1421: 0x93f1, 0x1422: 0x9419, 0x1423: 0x9441, + 0x1424: 0x9469, 0x1425: 0x9491, 0x1426: 0x94b9, 0x1427: 0x94e1, 0x1428: 0x9079, 0x1429: 0x9509, + 0x142a: 0x9531, 0x142b: 0x9559, 0x142c: 0x9581, 0x142d: 0x9491, 0x142e: 0x94b9, 0x142f: 0x94e1, + 0x1430: 0x9079, 0x1431: 0x9051, 0x1432: 0x90a1, 0x1433: 0x8211, 0x1434: 0x8059, 0x1435: 0x8081, + 0x1436: 0x80a9, 0x1437: 0x9491, 0x1438: 0x94b9, 0x1439: 0x94e1, 0x143a: 0x8211, 0x143b: 0x8239, + 0x143c: 0x95a9, 0x143d: 0x95a9, 0x143e: 0x0018, 0x143f: 0x0018, + // Block 0x51, offset 0x1440 + 0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040, + 0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040, + 0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x95d1, 0x1451: 0x9609, + 0x1452: 0x9609, 0x1453: 0x9641, 0x1454: 0x9679, 0x1455: 0x96b1, 0x1456: 0x96e9, 0x1457: 0x9721, + 0x1458: 0x9759, 0x1459: 0x9759, 0x145a: 0x9791, 0x145b: 0x97c9, 0x145c: 0x9801, 0x145d: 0x9839, + 0x145e: 0x9871, 0x145f: 0x98a9, 0x1460: 0x98a9, 0x1461: 0x98e1, 0x1462: 0x9919, 0x1463: 0x9919, + 0x1464: 0x9951, 0x1465: 0x9951, 0x1466: 0x9989, 0x1467: 0x99c1, 0x1468: 0x99c1, 0x1469: 0x99f9, + 0x146a: 0x9a31, 0x146b: 0x9a31, 0x146c: 0x9a69, 0x146d: 0x9a69, 0x146e: 0x9aa1, 0x146f: 0x9ad9, + 0x1470: 0x9ad9, 0x1471: 0x9b11, 0x1472: 0x9b11, 0x1473: 0x9b49, 0x1474: 0x9b81, 0x1475: 0x9bb9, + 0x1476: 0x9bf1, 0x1477: 0x9bf1, 0x1478: 0x9c29, 0x1479: 0x9c61, 0x147a: 0x9c99, 0x147b: 0x9cd1, + 0x147c: 0x9d09, 0x147d: 0x9d09, 0x147e: 0x9d41, 0x147f: 0x9d79, + // Block 0x52, offset 0x1480 + 0x1480: 0xa949, 0x1481: 0xa981, 0x1482: 0xa9b9, 0x1483: 0xa8a1, 0x1484: 0x9bb9, 0x1485: 0x9989, + 0x1486: 0xa9f1, 0x1487: 0xaa29, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, + 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040, + 0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040, + 0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040, + 0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040, + 0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040, + 0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040, + 0x14b0: 0xaa61, 0x14b1: 0xaa99, 0x14b2: 0xaad1, 0x14b3: 0xab19, 0x14b4: 0xab61, 0x14b5: 0xaba9, + 0x14b6: 0xabf1, 0x14b7: 0xac39, 0x14b8: 0xac81, 0x14b9: 0xacc9, 0x14ba: 0xad02, 0x14bb: 0xae12, + 0x14bc: 0xae91, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x13c0, 0x14c1: 0x13c0, 0x14c2: 0x13c0, 0x14c3: 0x13c0, 0x14c4: 0x13c0, 0x14c5: 0x13c0, + 0x14c6: 0x13c0, 0x14c7: 0x13c0, 0x14c8: 0x13c0, 0x14c9: 0x13c0, 0x14ca: 0x13c0, 0x14cb: 0x13c0, + 0x14cc: 0x13c0, 0x14cd: 0x13c0, 0x14ce: 0x13c0, 0x14cf: 0x13c0, 0x14d0: 0xaeda, 0x14d1: 0x7d55, + 0x14d2: 0x0040, 0x14d3: 0xaeea, 0x14d4: 0x03c2, 0x14d5: 0xaefa, 0x14d6: 0xaf0a, 0x14d7: 0x7d75, + 0x14d8: 0x7d95, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, + 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x1308, 0x14e1: 0x1308, 0x14e2: 0x1308, 0x14e3: 0x1308, + 0x14e4: 0x1308, 0x14e5: 0x1308, 0x14e6: 0x1308, 0x14e7: 0x1308, 0x14e8: 0x1308, 0x14e9: 0x1308, + 0x14ea: 0x1308, 0x14eb: 0x1308, 0x14ec: 0x1308, 0x14ed: 0x1308, 0x14ee: 0x1308, 0x14ef: 0x1308, + 0x14f0: 0x0040, 0x14f1: 0x7db5, 0x14f2: 0x7dd5, 0x14f3: 0xaf1a, 0x14f4: 0xaf1a, 0x14f5: 0x1fd2, + 0x14f6: 0x1fe2, 0x14f7: 0xaf2a, 0x14f8: 0xaf3a, 0x14f9: 0x7df5, 0x14fa: 0x7e15, 0x14fb: 0x7e35, + 0x14fc: 0x7df5, 0x14fd: 0x7e55, 0x14fe: 0x7e75, 0x14ff: 0x7e55, + // Block 0x54, offset 0x1500 + 0x1500: 0x7e95, 0x1501: 0x7eb5, 0x1502: 0x7ed5, 0x1503: 0x7eb5, 0x1504: 0x7ef5, 0x1505: 0x0018, + 0x1506: 0x0018, 0x1507: 0xaf4a, 0x1508: 0xaf5a, 0x1509: 0x7f16, 0x150a: 0x7f36, 0x150b: 0x7f56, + 0x150c: 0x7f76, 0x150d: 0xaf1a, 0x150e: 0xaf1a, 0x150f: 0xaf1a, 0x1510: 0xaeda, 0x1511: 0x7f95, + 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x03c2, 0x1515: 0xaeea, 0x1516: 0xaf0a, 0x1517: 0xaefa, + 0x1518: 0x7fb5, 0x1519: 0x1fd2, 0x151a: 0x1fe2, 0x151b: 0xaf2a, 0x151c: 0xaf3a, 0x151d: 0x7e95, + 0x151e: 0x7ef5, 0x151f: 0xaf6a, 0x1520: 0xaf7a, 0x1521: 0xaf8a, 0x1522: 0x1fb2, 0x1523: 0xaf99, + 0x1524: 0xafaa, 0x1525: 0xafba, 0x1526: 0x1fc2, 0x1527: 0x0040, 0x1528: 0xafca, 0x1529: 0xafda, + 0x152a: 0xafea, 0x152b: 0xaffa, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, + 0x1530: 0x7fd6, 0x1531: 0xb009, 0x1532: 0x7ff6, 0x1533: 0x0008, 0x1534: 0x8016, 0x1535: 0x0040, + 0x1536: 0x8036, 0x1537: 0xb031, 0x1538: 0x8056, 0x1539: 0xb059, 0x153a: 0x8076, 0x153b: 0xb081, + 0x153c: 0x8096, 0x153d: 0xb0a9, 0x153e: 0x80b6, 0x153f: 0xb0d1, + // Block 0x55, offset 0x1540 + 0x1540: 0xb0f9, 0x1541: 0xb111, 0x1542: 0xb111, 0x1543: 0xb129, 0x1544: 0xb129, 0x1545: 0xb141, + 0x1546: 0xb141, 0x1547: 0xb159, 0x1548: 0xb159, 0x1549: 0xb171, 0x154a: 0xb171, 0x154b: 0xb171, + 0x154c: 0xb171, 0x154d: 0xb189, 0x154e: 0xb189, 0x154f: 0xb1a1, 0x1550: 0xb1a1, 0x1551: 0xb1a1, + 0x1552: 0xb1a1, 0x1553: 0xb1b9, 0x1554: 0xb1b9, 0x1555: 0xb1d1, 0x1556: 0xb1d1, 0x1557: 0xb1d1, + 0x1558: 0xb1d1, 0x1559: 0xb1e9, 0x155a: 0xb1e9, 0x155b: 0xb1e9, 0x155c: 0xb1e9, 0x155d: 0xb201, + 0x155e: 0xb201, 0x155f: 0xb201, 0x1560: 0xb201, 0x1561: 0xb219, 0x1562: 0xb219, 0x1563: 0xb219, + 0x1564: 0xb219, 0x1565: 0xb231, 0x1566: 0xb231, 0x1567: 0xb231, 0x1568: 0xb231, 0x1569: 0xb249, + 0x156a: 0xb249, 0x156b: 0xb261, 0x156c: 0xb261, 0x156d: 0xb279, 0x156e: 0xb279, 0x156f: 0xb291, + 0x1570: 0xb291, 0x1571: 0xb2a9, 0x1572: 0xb2a9, 0x1573: 0xb2a9, 0x1574: 0xb2a9, 0x1575: 0xb2c1, + 0x1576: 0xb2c1, 0x1577: 0xb2c1, 0x1578: 0xb2c1, 0x1579: 0xb2d9, 0x157a: 0xb2d9, 0x157b: 0xb2d9, + 0x157c: 0xb2d9, 0x157d: 0xb2f1, 0x157e: 0xb2f1, 0x157f: 0xb2f1, + // Block 0x56, offset 0x1580 + 0x1580: 0xb2f1, 0x1581: 0xb309, 0x1582: 0xb309, 0x1583: 0xb309, 0x1584: 0xb309, 0x1585: 0xb321, + 0x1586: 0xb321, 0x1587: 0xb321, 0x1588: 0xb321, 0x1589: 0xb339, 0x158a: 0xb339, 0x158b: 0xb339, + 0x158c: 0xb339, 0x158d: 0xb351, 0x158e: 0xb351, 0x158f: 0xb351, 0x1590: 0xb351, 0x1591: 0xb369, + 0x1592: 0xb369, 0x1593: 0xb369, 0x1594: 0xb369, 0x1595: 0xb381, 0x1596: 0xb381, 0x1597: 0xb381, + 0x1598: 0xb381, 0x1599: 0xb399, 0x159a: 0xb399, 0x159b: 0xb399, 0x159c: 0xb399, 0x159d: 0xb3b1, + 0x159e: 0xb3b1, 0x159f: 0xb3b1, 0x15a0: 0xb3b1, 0x15a1: 0xb3c9, 0x15a2: 0xb3c9, 0x15a3: 0xb3c9, + 0x15a4: 0xb3c9, 0x15a5: 0xb3e1, 0x15a6: 0xb3e1, 0x15a7: 0xb3e1, 0x15a8: 0xb3e1, 0x15a9: 0xb3f9, + 0x15aa: 0xb3f9, 0x15ab: 0xb3f9, 0x15ac: 0xb3f9, 0x15ad: 0xb411, 0x15ae: 0xb411, 0x15af: 0x7ab1, + 0x15b0: 0x7ab1, 0x15b1: 0xb429, 0x15b2: 0xb429, 0x15b3: 0xb429, 0x15b4: 0xb429, 0x15b5: 0xb441, + 0x15b6: 0xb441, 0x15b7: 0xb469, 0x15b8: 0xb469, 0x15b9: 0xb491, 0x15ba: 0xb491, 0x15bb: 0xb4b9, + 0x15bc: 0xb4b9, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x0040, 0x15c1: 0xaefa, 0x15c2: 0xb4e2, 0x15c3: 0xaf6a, 0x15c4: 0xafda, 0x15c5: 0xafea, + 0x15c6: 0xaf7a, 0x15c7: 0xb4f2, 0x15c8: 0x1fd2, 0x15c9: 0x1fe2, 0x15ca: 0xaf8a, 0x15cb: 0x1fb2, + 0x15cc: 0xaeda, 0x15cd: 0xaf99, 0x15ce: 0x29d1, 0x15cf: 0xb502, 0x15d0: 0x1f41, 0x15d1: 0x00c9, + 0x15d2: 0x0069, 0x15d3: 0x0079, 0x15d4: 0x1f51, 0x15d5: 0x1f61, 0x15d6: 0x1f71, 0x15d7: 0x1f81, + 0x15d8: 0x1f91, 0x15d9: 0x1fa1, 0x15da: 0xaeea, 0x15db: 0x03c2, 0x15dc: 0xafaa, 0x15dd: 0x1fc2, + 0x15de: 0xafba, 0x15df: 0xaf0a, 0x15e0: 0xaffa, 0x15e1: 0x0039, 0x15e2: 0x0ee9, 0x15e3: 0x1159, + 0x15e4: 0x0ef9, 0x15e5: 0x0f09, 0x15e6: 0x1199, 0x15e7: 0x0f31, 0x15e8: 0x0249, 0x15e9: 0x0f41, + 0x15ea: 0x0259, 0x15eb: 0x0f51, 0x15ec: 0x0359, 0x15ed: 0x0f61, 0x15ee: 0x0f71, 0x15ef: 0x00d9, + 0x15f0: 0x0f99, 0x15f1: 0x2039, 0x15f2: 0x0269, 0x15f3: 0x01d9, 0x15f4: 0x0fa9, 0x15f5: 0x0fb9, + 0x15f6: 0x1089, 0x15f7: 0x0279, 0x15f8: 0x0369, 0x15f9: 0x0289, 0x15fa: 0x13d1, 0x15fb: 0xaf4a, + 0x15fc: 0xafca, 0x15fd: 0xaf5a, 0x15fe: 0xb512, 0x15ff: 0xaf1a, + // Block 0x58, offset 0x1600 + 0x1600: 0x1caa, 0x1601: 0x0039, 0x1602: 0x0ee9, 0x1603: 0x1159, 0x1604: 0x0ef9, 0x1605: 0x0f09, + 0x1606: 0x1199, 0x1607: 0x0f31, 0x1608: 0x0249, 0x1609: 0x0f41, 0x160a: 0x0259, 0x160b: 0x0f51, + 0x160c: 0x0359, 0x160d: 0x0f61, 0x160e: 0x0f71, 0x160f: 0x00d9, 0x1610: 0x0f99, 0x1611: 0x2039, + 0x1612: 0x0269, 0x1613: 0x01d9, 0x1614: 0x0fa9, 0x1615: 0x0fb9, 0x1616: 0x1089, 0x1617: 0x0279, + 0x1618: 0x0369, 0x1619: 0x0289, 0x161a: 0x13d1, 0x161b: 0xaf2a, 0x161c: 0xb522, 0x161d: 0xaf3a, + 0x161e: 0xb532, 0x161f: 0x80d5, 0x1620: 0x80f5, 0x1621: 0x29d1, 0x1622: 0x8115, 0x1623: 0x8115, + 0x1624: 0x8135, 0x1625: 0x8155, 0x1626: 0x8175, 0x1627: 0x8195, 0x1628: 0x81b5, 0x1629: 0x81d5, + 0x162a: 0x81f5, 0x162b: 0x8215, 0x162c: 0x8235, 0x162d: 0x8255, 0x162e: 0x8275, 0x162f: 0x8295, + 0x1630: 0x82b5, 0x1631: 0x82d5, 0x1632: 0x82f5, 0x1633: 0x8315, 0x1634: 0x8335, 0x1635: 0x8355, + 0x1636: 0x8375, 0x1637: 0x8395, 0x1638: 0x83b5, 0x1639: 0x83d5, 0x163a: 0x83f5, 0x163b: 0x8415, + 0x163c: 0x81b5, 0x163d: 0x8435, 0x163e: 0x8455, 0x163f: 0x8215, + // Block 0x59, offset 0x1640 + 0x1640: 0x8475, 0x1641: 0x8495, 0x1642: 0x84b5, 0x1643: 0x84d5, 0x1644: 0x84f5, 0x1645: 0x8515, + 0x1646: 0x8535, 0x1647: 0x8555, 0x1648: 0x84d5, 0x1649: 0x8575, 0x164a: 0x84d5, 0x164b: 0x8595, + 0x164c: 0x8595, 0x164d: 0x85b5, 0x164e: 0x85b5, 0x164f: 0x85d5, 0x1650: 0x8515, 0x1651: 0x85f5, + 0x1652: 0x8615, 0x1653: 0x85f5, 0x1654: 0x8635, 0x1655: 0x8615, 0x1656: 0x8655, 0x1657: 0x8655, + 0x1658: 0x8675, 0x1659: 0x8675, 0x165a: 0x8695, 0x165b: 0x8695, 0x165c: 0x8615, 0x165d: 0x8115, + 0x165e: 0x86b5, 0x165f: 0x86d5, 0x1660: 0x0040, 0x1661: 0x86f5, 0x1662: 0x8715, 0x1663: 0x8735, + 0x1664: 0x8755, 0x1665: 0x8735, 0x1666: 0x8775, 0x1667: 0x8795, 0x1668: 0x87b5, 0x1669: 0x87b5, + 0x166a: 0x87d5, 0x166b: 0x87d5, 0x166c: 0x87f5, 0x166d: 0x87f5, 0x166e: 0x87d5, 0x166f: 0x87d5, + 0x1670: 0x8815, 0x1671: 0x8835, 0x1672: 0x8855, 0x1673: 0x8875, 0x1674: 0x8895, 0x1675: 0x88b5, + 0x1676: 0x88b5, 0x1677: 0x88b5, 0x1678: 0x88d5, 0x1679: 0x88d5, 0x167a: 0x88d5, 0x167b: 0x88d5, + 0x167c: 0x87b5, 0x167d: 0x87b5, 0x167e: 0x87b5, 0x167f: 0x0040, + // Block 0x5a, offset 0x1680 + 0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x8715, 0x1683: 0x86f5, 0x1684: 0x88f5, 0x1685: 0x86f5, + 0x1686: 0x8715, 0x1687: 0x86f5, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x8915, 0x168b: 0x8715, + 0x168c: 0x8935, 0x168d: 0x88f5, 0x168e: 0x8935, 0x168f: 0x8715, 0x1690: 0x0040, 0x1691: 0x0040, + 0x1692: 0x8955, 0x1693: 0x8975, 0x1694: 0x8875, 0x1695: 0x8935, 0x1696: 0x88f5, 0x1697: 0x8935, + 0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x8995, 0x169b: 0x89b5, 0x169c: 0x8995, 0x169d: 0x0040, + 0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0xb541, 0x16a1: 0xb559, 0x16a2: 0xb571, 0x16a3: 0x89d6, + 0x16a4: 0xb589, 0x16a5: 0xb5a1, 0x16a6: 0x89f5, 0x16a7: 0x0040, 0x16a8: 0x8a15, 0x16a9: 0x8a35, + 0x16aa: 0x8a55, 0x16ab: 0x8a35, 0x16ac: 0x8a75, 0x16ad: 0x8a95, 0x16ae: 0x8ab5, 0x16af: 0x0040, + 0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040, + 0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340, + 0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x0208, 0x16c1: 0x0208, 0x16c2: 0x0208, 0x16c3: 0x0208, 0x16c4: 0x0208, 0x16c5: 0x0408, + 0x16c6: 0x0008, 0x16c7: 0x0408, 0x16c8: 0x0018, 0x16c9: 0x0408, 0x16ca: 0x0408, 0x16cb: 0x0008, + 0x16cc: 0x0008, 0x16cd: 0x0108, 0x16ce: 0x0408, 0x16cf: 0x0408, 0x16d0: 0x0408, 0x16d1: 0x0408, + 0x16d2: 0x0408, 0x16d3: 0x0208, 0x16d4: 0x0208, 0x16d5: 0x0208, 0x16d6: 0x0208, 0x16d7: 0x0108, + 0x16d8: 0x0208, 0x16d9: 0x0208, 0x16da: 0x0208, 0x16db: 0x0208, 0x16dc: 0x0208, 0x16dd: 0x0408, + 0x16de: 0x0208, 0x16df: 0x0208, 0x16e0: 0x0208, 0x16e1: 0x0408, 0x16e2: 0x0008, 0x16e3: 0x0008, + 0x16e4: 0x0408, 0x16e5: 0x1308, 0x16e6: 0x1308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040, + 0x16ea: 0x0040, 0x16eb: 0x0218, 0x16ec: 0x0218, 0x16ed: 0x0218, 0x16ee: 0x0218, 0x16ef: 0x0418, + 0x16f0: 0x0018, 0x16f1: 0x0018, 0x16f2: 0x0018, 0x16f3: 0x0018, 0x16f4: 0x0018, 0x16f5: 0x0018, + 0x16f6: 0x0018, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040, + 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, + // Block 0x5c, offset 0x1700 + 0x1700: 0x0208, 0x1701: 0x0408, 0x1702: 0x0208, 0x1703: 0x0408, 0x1704: 0x0408, 0x1705: 0x0408, + 0x1706: 0x0208, 0x1707: 0x0208, 0x1708: 0x0208, 0x1709: 0x0408, 0x170a: 0x0208, 0x170b: 0x0208, + 0x170c: 0x0408, 0x170d: 0x0208, 0x170e: 0x0408, 0x170f: 0x0408, 0x1710: 0x0208, 0x1711: 0x0408, + 0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040, + 0x1718: 0x0040, 0x1719: 0x0018, 0x171a: 0x0018, 0x171b: 0x0018, 0x171c: 0x0018, 0x171d: 0x0040, + 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040, + 0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0418, + 0x172a: 0x0418, 0x172b: 0x0418, 0x172c: 0x0418, 0x172d: 0x0218, 0x172e: 0x0218, 0x172f: 0x0018, + 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, + 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, + 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, + // Block 0x5d, offset 0x1740 + 0x1740: 0x1308, 0x1741: 0x1308, 0x1742: 0x1008, 0x1743: 0x1008, 0x1744: 0x0040, 0x1745: 0x0008, + 0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008, + 0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040, + 0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008, + 0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008, + 0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008, + 0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040, + 0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008, + 0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008, + 0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x1308, 0x177d: 0x0008, 0x177e: 0x1008, 0x177f: 0x1008, + // Block 0x5e, offset 0x1780 + 0x1780: 0x1308, 0x1781: 0x1008, 0x1782: 0x1008, 0x1783: 0x1008, 0x1784: 0x1008, 0x1785: 0x0040, + 0x1786: 0x0040, 0x1787: 0x1008, 0x1788: 0x1008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x1008, + 0x178c: 0x1008, 0x178d: 0x1808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040, + 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x1008, + 0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008, + 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x1008, 0x17a3: 0x1008, + 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x1308, 0x17a7: 0x1308, 0x17a8: 0x1308, 0x17a9: 0x1308, + 0x17aa: 0x1308, 0x17ab: 0x1308, 0x17ac: 0x1308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040, + 0x17b0: 0x1308, 0x17b1: 0x1308, 0x17b2: 0x1308, 0x17b3: 0x1308, 0x17b4: 0x1308, 0x17b5: 0x0040, + 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, + 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x0039, 0x17c1: 0x0ee9, 0x17c2: 0x1159, 0x17c3: 0x0ef9, 0x17c4: 0x0f09, 0x17c5: 0x1199, + 0x17c6: 0x0f31, 0x17c7: 0x0249, 0x17c8: 0x0f41, 0x17c9: 0x0259, 0x17ca: 0x0f51, 0x17cb: 0x0359, + 0x17cc: 0x0f61, 0x17cd: 0x0f71, 0x17ce: 0x00d9, 0x17cf: 0x0f99, 0x17d0: 0x2039, 0x17d1: 0x0269, + 0x17d2: 0x01d9, 0x17d3: 0x0fa9, 0x17d4: 0x0fb9, 0x17d5: 0x1089, 0x17d6: 0x0279, 0x17d7: 0x0369, + 0x17d8: 0x0289, 0x17d9: 0x13d1, 0x17da: 0x0039, 0x17db: 0x0ee9, 0x17dc: 0x1159, 0x17dd: 0x0ef9, + 0x17de: 0x0f09, 0x17df: 0x1199, 0x17e0: 0x0f31, 0x17e1: 0x0249, 0x17e2: 0x0f41, 0x17e3: 0x0259, + 0x17e4: 0x0f51, 0x17e5: 0x0359, 0x17e6: 0x0f61, 0x17e7: 0x0f71, 0x17e8: 0x00d9, 0x17e9: 0x0f99, + 0x17ea: 0x2039, 0x17eb: 0x0269, 0x17ec: 0x01d9, 0x17ed: 0x0fa9, 0x17ee: 0x0fb9, 0x17ef: 0x1089, + 0x17f0: 0x0279, 0x17f1: 0x0369, 0x17f2: 0x0289, 0x17f3: 0x13d1, 0x17f4: 0x0039, 0x17f5: 0x0ee9, + 0x17f6: 0x1159, 0x17f7: 0x0ef9, 0x17f8: 0x0f09, 0x17f9: 0x1199, 0x17fa: 0x0f31, 0x17fb: 0x0249, + 0x17fc: 0x0f41, 0x17fd: 0x0259, 0x17fe: 0x0f51, 0x17ff: 0x0359, + // Block 0x60, offset 0x1800 + 0x1800: 0x0f61, 0x1801: 0x0f71, 0x1802: 0x00d9, 0x1803: 0x0f99, 0x1804: 0x2039, 0x1805: 0x0269, + 0x1806: 0x01d9, 0x1807: 0x0fa9, 0x1808: 0x0fb9, 0x1809: 0x1089, 0x180a: 0x0279, 0x180b: 0x0369, + 0x180c: 0x0289, 0x180d: 0x13d1, 0x180e: 0x0039, 0x180f: 0x0ee9, 0x1810: 0x1159, 0x1811: 0x0ef9, + 0x1812: 0x0f09, 0x1813: 0x1199, 0x1814: 0x0f31, 0x1815: 0x0040, 0x1816: 0x0f41, 0x1817: 0x0259, + 0x1818: 0x0f51, 0x1819: 0x0359, 0x181a: 0x0f61, 0x181b: 0x0f71, 0x181c: 0x00d9, 0x181d: 0x0f99, + 0x181e: 0x2039, 0x181f: 0x0269, 0x1820: 0x01d9, 0x1821: 0x0fa9, 0x1822: 0x0fb9, 0x1823: 0x1089, + 0x1824: 0x0279, 0x1825: 0x0369, 0x1826: 0x0289, 0x1827: 0x13d1, 0x1828: 0x0039, 0x1829: 0x0ee9, + 0x182a: 0x1159, 0x182b: 0x0ef9, 0x182c: 0x0f09, 0x182d: 0x1199, 0x182e: 0x0f31, 0x182f: 0x0249, + 0x1830: 0x0f41, 0x1831: 0x0259, 0x1832: 0x0f51, 0x1833: 0x0359, 0x1834: 0x0f61, 0x1835: 0x0f71, + 0x1836: 0x00d9, 0x1837: 0x0f99, 0x1838: 0x2039, 0x1839: 0x0269, 0x183a: 0x01d9, 0x183b: 0x0fa9, + 0x183c: 0x0fb9, 0x183d: 0x1089, 0x183e: 0x0279, 0x183f: 0x0369, + // Block 0x61, offset 0x1840 + 0x1840: 0x0289, 0x1841: 0x13d1, 0x1842: 0x0039, 0x1843: 0x0ee9, 0x1844: 0x1159, 0x1845: 0x0ef9, + 0x1846: 0x0f09, 0x1847: 0x1199, 0x1848: 0x0f31, 0x1849: 0x0249, 0x184a: 0x0f41, 0x184b: 0x0259, + 0x184c: 0x0f51, 0x184d: 0x0359, 0x184e: 0x0f61, 0x184f: 0x0f71, 0x1850: 0x00d9, 0x1851: 0x0f99, + 0x1852: 0x2039, 0x1853: 0x0269, 0x1854: 0x01d9, 0x1855: 0x0fa9, 0x1856: 0x0fb9, 0x1857: 0x1089, + 0x1858: 0x0279, 0x1859: 0x0369, 0x185a: 0x0289, 0x185b: 0x13d1, 0x185c: 0x0039, 0x185d: 0x0040, + 0x185e: 0x1159, 0x185f: 0x0ef9, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0f31, 0x1863: 0x0040, + 0x1864: 0x0040, 0x1865: 0x0259, 0x1866: 0x0f51, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0f71, + 0x186a: 0x00d9, 0x186b: 0x0f99, 0x186c: 0x2039, 0x186d: 0x0040, 0x186e: 0x01d9, 0x186f: 0x0fa9, + 0x1870: 0x0fb9, 0x1871: 0x1089, 0x1872: 0x0279, 0x1873: 0x0369, 0x1874: 0x0289, 0x1875: 0x13d1, + 0x1876: 0x0039, 0x1877: 0x0ee9, 0x1878: 0x1159, 0x1879: 0x0ef9, 0x187a: 0x0040, 0x187b: 0x1199, + 0x187c: 0x0040, 0x187d: 0x0249, 0x187e: 0x0f41, 0x187f: 0x0259, + // Block 0x62, offset 0x1880 + 0x1880: 0x0f51, 0x1881: 0x0359, 0x1882: 0x0f61, 0x1883: 0x0f71, 0x1884: 0x0040, 0x1885: 0x0f99, + 0x1886: 0x2039, 0x1887: 0x0269, 0x1888: 0x01d9, 0x1889: 0x0fa9, 0x188a: 0x0fb9, 0x188b: 0x1089, + 0x188c: 0x0279, 0x188d: 0x0369, 0x188e: 0x0289, 0x188f: 0x13d1, 0x1890: 0x0039, 0x1891: 0x0ee9, + 0x1892: 0x1159, 0x1893: 0x0ef9, 0x1894: 0x0f09, 0x1895: 0x1199, 0x1896: 0x0f31, 0x1897: 0x0249, + 0x1898: 0x0f41, 0x1899: 0x0259, 0x189a: 0x0f51, 0x189b: 0x0359, 0x189c: 0x0f61, 0x189d: 0x0f71, + 0x189e: 0x00d9, 0x189f: 0x0f99, 0x18a0: 0x2039, 0x18a1: 0x0269, 0x18a2: 0x01d9, 0x18a3: 0x0fa9, + 0x18a4: 0x0fb9, 0x18a5: 0x1089, 0x18a6: 0x0279, 0x18a7: 0x0369, 0x18a8: 0x0289, 0x18a9: 0x13d1, + 0x18aa: 0x0039, 0x18ab: 0x0ee9, 0x18ac: 0x1159, 0x18ad: 0x0ef9, 0x18ae: 0x0f09, 0x18af: 0x1199, + 0x18b0: 0x0f31, 0x18b1: 0x0249, 0x18b2: 0x0f41, 0x18b3: 0x0259, 0x18b4: 0x0f51, 0x18b5: 0x0359, + 0x18b6: 0x0f61, 0x18b7: 0x0f71, 0x18b8: 0x00d9, 0x18b9: 0x0f99, 0x18ba: 0x2039, 0x18bb: 0x0269, + 0x18bc: 0x01d9, 0x18bd: 0x0fa9, 0x18be: 0x0fb9, 0x18bf: 0x1089, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x0279, 0x18c1: 0x0369, 0x18c2: 0x0289, 0x18c3: 0x13d1, 0x18c4: 0x0039, 0x18c5: 0x0ee9, + 0x18c6: 0x0040, 0x18c7: 0x0ef9, 0x18c8: 0x0f09, 0x18c9: 0x1199, 0x18ca: 0x0f31, 0x18cb: 0x0040, + 0x18cc: 0x0040, 0x18cd: 0x0259, 0x18ce: 0x0f51, 0x18cf: 0x0359, 0x18d0: 0x0f61, 0x18d1: 0x0f71, + 0x18d2: 0x00d9, 0x18d3: 0x0f99, 0x18d4: 0x2039, 0x18d5: 0x0040, 0x18d6: 0x01d9, 0x18d7: 0x0fa9, + 0x18d8: 0x0fb9, 0x18d9: 0x1089, 0x18da: 0x0279, 0x18db: 0x0369, 0x18dc: 0x0289, 0x18dd: 0x0040, + 0x18de: 0x0039, 0x18df: 0x0ee9, 0x18e0: 0x1159, 0x18e1: 0x0ef9, 0x18e2: 0x0f09, 0x18e3: 0x1199, + 0x18e4: 0x0f31, 0x18e5: 0x0249, 0x18e6: 0x0f41, 0x18e7: 0x0259, 0x18e8: 0x0f51, 0x18e9: 0x0359, + 0x18ea: 0x0f61, 0x18eb: 0x0f71, 0x18ec: 0x00d9, 0x18ed: 0x0f99, 0x18ee: 0x2039, 0x18ef: 0x0269, + 0x18f0: 0x01d9, 0x18f1: 0x0fa9, 0x18f2: 0x0fb9, 0x18f3: 0x1089, 0x18f4: 0x0279, 0x18f5: 0x0369, + 0x18f6: 0x0289, 0x18f7: 0x13d1, 0x18f8: 0x0039, 0x18f9: 0x0ee9, 0x18fa: 0x0040, 0x18fb: 0x0ef9, + 0x18fc: 0x0f09, 0x18fd: 0x1199, 0x18fe: 0x0f31, 0x18ff: 0x0040, + // Block 0x64, offset 0x1900 + 0x1900: 0x0f41, 0x1901: 0x0259, 0x1902: 0x0f51, 0x1903: 0x0359, 0x1904: 0x0f61, 0x1905: 0x0040, + 0x1906: 0x00d9, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0040, 0x190a: 0x01d9, 0x190b: 0x0fa9, + 0x190c: 0x0fb9, 0x190d: 0x1089, 0x190e: 0x0279, 0x190f: 0x0369, 0x1910: 0x0289, 0x1911: 0x0040, + 0x1912: 0x0039, 0x1913: 0x0ee9, 0x1914: 0x1159, 0x1915: 0x0ef9, 0x1916: 0x0f09, 0x1917: 0x1199, + 0x1918: 0x0f31, 0x1919: 0x0249, 0x191a: 0x0f41, 0x191b: 0x0259, 0x191c: 0x0f51, 0x191d: 0x0359, + 0x191e: 0x0f61, 0x191f: 0x0f71, 0x1920: 0x00d9, 0x1921: 0x0f99, 0x1922: 0x2039, 0x1923: 0x0269, + 0x1924: 0x01d9, 0x1925: 0x0fa9, 0x1926: 0x0fb9, 0x1927: 0x1089, 0x1928: 0x0279, 0x1929: 0x0369, + 0x192a: 0x0289, 0x192b: 0x13d1, 0x192c: 0x0039, 0x192d: 0x0ee9, 0x192e: 0x1159, 0x192f: 0x0ef9, + 0x1930: 0x0f09, 0x1931: 0x1199, 0x1932: 0x0f31, 0x1933: 0x0249, 0x1934: 0x0f41, 0x1935: 0x0259, + 0x1936: 0x0f51, 0x1937: 0x0359, 0x1938: 0x0f61, 0x1939: 0x0f71, 0x193a: 0x00d9, 0x193b: 0x0f99, + 0x193c: 0x2039, 0x193d: 0x0269, 0x193e: 0x01d9, 0x193f: 0x0fa9, + // Block 0x65, offset 0x1940 + 0x1940: 0x0fb9, 0x1941: 0x1089, 0x1942: 0x0279, 0x1943: 0x0369, 0x1944: 0x0289, 0x1945: 0x13d1, + 0x1946: 0x0039, 0x1947: 0x0ee9, 0x1948: 0x1159, 0x1949: 0x0ef9, 0x194a: 0x0f09, 0x194b: 0x1199, + 0x194c: 0x0f31, 0x194d: 0x0249, 0x194e: 0x0f41, 0x194f: 0x0259, 0x1950: 0x0f51, 0x1951: 0x0359, + 0x1952: 0x0f61, 0x1953: 0x0f71, 0x1954: 0x00d9, 0x1955: 0x0f99, 0x1956: 0x2039, 0x1957: 0x0269, + 0x1958: 0x01d9, 0x1959: 0x0fa9, 0x195a: 0x0fb9, 0x195b: 0x1089, 0x195c: 0x0279, 0x195d: 0x0369, + 0x195e: 0x0289, 0x195f: 0x13d1, 0x1960: 0x0039, 0x1961: 0x0ee9, 0x1962: 0x1159, 0x1963: 0x0ef9, + 0x1964: 0x0f09, 0x1965: 0x1199, 0x1966: 0x0f31, 0x1967: 0x0249, 0x1968: 0x0f41, 0x1969: 0x0259, + 0x196a: 0x0f51, 0x196b: 0x0359, 0x196c: 0x0f61, 0x196d: 0x0f71, 0x196e: 0x00d9, 0x196f: 0x0f99, + 0x1970: 0x2039, 0x1971: 0x0269, 0x1972: 0x01d9, 0x1973: 0x0fa9, 0x1974: 0x0fb9, 0x1975: 0x1089, + 0x1976: 0x0279, 0x1977: 0x0369, 0x1978: 0x0289, 0x1979: 0x13d1, 0x197a: 0x0039, 0x197b: 0x0ee9, + 0x197c: 0x1159, 0x197d: 0x0ef9, 0x197e: 0x0f09, 0x197f: 0x1199, + // Block 0x66, offset 0x1980 + 0x1980: 0x0f31, 0x1981: 0x0249, 0x1982: 0x0f41, 0x1983: 0x0259, 0x1984: 0x0f51, 0x1985: 0x0359, + 0x1986: 0x0f61, 0x1987: 0x0f71, 0x1988: 0x00d9, 0x1989: 0x0f99, 0x198a: 0x2039, 0x198b: 0x0269, + 0x198c: 0x01d9, 0x198d: 0x0fa9, 0x198e: 0x0fb9, 0x198f: 0x1089, 0x1990: 0x0279, 0x1991: 0x0369, + 0x1992: 0x0289, 0x1993: 0x13d1, 0x1994: 0x0039, 0x1995: 0x0ee9, 0x1996: 0x1159, 0x1997: 0x0ef9, + 0x1998: 0x0f09, 0x1999: 0x1199, 0x199a: 0x0f31, 0x199b: 0x0249, 0x199c: 0x0f41, 0x199d: 0x0259, + 0x199e: 0x0f51, 0x199f: 0x0359, 0x19a0: 0x0f61, 0x19a1: 0x0f71, 0x19a2: 0x00d9, 0x19a3: 0x0f99, + 0x19a4: 0x2039, 0x19a5: 0x0269, 0x19a6: 0x01d9, 0x19a7: 0x0fa9, 0x19a8: 0x0fb9, 0x19a9: 0x1089, + 0x19aa: 0x0279, 0x19ab: 0x0369, 0x19ac: 0x0289, 0x19ad: 0x13d1, 0x19ae: 0x0039, 0x19af: 0x0ee9, + 0x19b0: 0x1159, 0x19b1: 0x0ef9, 0x19b2: 0x0f09, 0x19b3: 0x1199, 0x19b4: 0x0f31, 0x19b5: 0x0249, + 0x19b6: 0x0f41, 0x19b7: 0x0259, 0x19b8: 0x0f51, 0x19b9: 0x0359, 0x19ba: 0x0f61, 0x19bb: 0x0f71, + 0x19bc: 0x00d9, 0x19bd: 0x0f99, 0x19be: 0x2039, 0x19bf: 0x0269, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x01d9, 0x19c1: 0x0fa9, 0x19c2: 0x0fb9, 0x19c3: 0x1089, 0x19c4: 0x0279, 0x19c5: 0x0369, + 0x19c6: 0x0289, 0x19c7: 0x13d1, 0x19c8: 0x0039, 0x19c9: 0x0ee9, 0x19ca: 0x1159, 0x19cb: 0x0ef9, + 0x19cc: 0x0f09, 0x19cd: 0x1199, 0x19ce: 0x0f31, 0x19cf: 0x0249, 0x19d0: 0x0f41, 0x19d1: 0x0259, + 0x19d2: 0x0f51, 0x19d3: 0x0359, 0x19d4: 0x0f61, 0x19d5: 0x0f71, 0x19d6: 0x00d9, 0x19d7: 0x0f99, + 0x19d8: 0x2039, 0x19d9: 0x0269, 0x19da: 0x01d9, 0x19db: 0x0fa9, 0x19dc: 0x0fb9, 0x19dd: 0x1089, + 0x19de: 0x0279, 0x19df: 0x0369, 0x19e0: 0x0289, 0x19e1: 0x13d1, 0x19e2: 0x0039, 0x19e3: 0x0ee9, + 0x19e4: 0x1159, 0x19e5: 0x0ef9, 0x19e6: 0x0f09, 0x19e7: 0x1199, 0x19e8: 0x0f31, 0x19e9: 0x0249, + 0x19ea: 0x0f41, 0x19eb: 0x0259, 0x19ec: 0x0f51, 0x19ed: 0x0359, 0x19ee: 0x0f61, 0x19ef: 0x0f71, + 0x19f0: 0x00d9, 0x19f1: 0x0f99, 0x19f2: 0x2039, 0x19f3: 0x0269, 0x19f4: 0x01d9, 0x19f5: 0x0fa9, + 0x19f6: 0x0fb9, 0x19f7: 0x1089, 0x19f8: 0x0279, 0x19f9: 0x0369, 0x19fa: 0x0289, 0x19fb: 0x13d1, + 0x19fc: 0x0039, 0x19fd: 0x0ee9, 0x19fe: 0x1159, 0x19ff: 0x0ef9, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x0f09, 0x1a01: 0x1199, 0x1a02: 0x0f31, 0x1a03: 0x0249, 0x1a04: 0x0f41, 0x1a05: 0x0259, + 0x1a06: 0x0f51, 0x1a07: 0x0359, 0x1a08: 0x0f61, 0x1a09: 0x0f71, 0x1a0a: 0x00d9, 0x1a0b: 0x0f99, + 0x1a0c: 0x2039, 0x1a0d: 0x0269, 0x1a0e: 0x01d9, 0x1a0f: 0x0fa9, 0x1a10: 0x0fb9, 0x1a11: 0x1089, + 0x1a12: 0x0279, 0x1a13: 0x0369, 0x1a14: 0x0289, 0x1a15: 0x13d1, 0x1a16: 0x0039, 0x1a17: 0x0ee9, + 0x1a18: 0x1159, 0x1a19: 0x0ef9, 0x1a1a: 0x0f09, 0x1a1b: 0x1199, 0x1a1c: 0x0f31, 0x1a1d: 0x0249, + 0x1a1e: 0x0f41, 0x1a1f: 0x0259, 0x1a20: 0x0f51, 0x1a21: 0x0359, 0x1a22: 0x0f61, 0x1a23: 0x0f71, + 0x1a24: 0x00d9, 0x1a25: 0x0f99, 0x1a26: 0x2039, 0x1a27: 0x0269, 0x1a28: 0x01d9, 0x1a29: 0x0fa9, + 0x1a2a: 0x0fb9, 0x1a2b: 0x1089, 0x1a2c: 0x0279, 0x1a2d: 0x0369, 0x1a2e: 0x0289, 0x1a2f: 0x13d1, + 0x1a30: 0x0039, 0x1a31: 0x0ee9, 0x1a32: 0x1159, 0x1a33: 0x0ef9, 0x1a34: 0x0f09, 0x1a35: 0x1199, + 0x1a36: 0x0f31, 0x1a37: 0x0249, 0x1a38: 0x0f41, 0x1a39: 0x0259, 0x1a3a: 0x0f51, 0x1a3b: 0x0359, + 0x1a3c: 0x0f61, 0x1a3d: 0x0f71, 0x1a3e: 0x00d9, 0x1a3f: 0x0f99, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x2039, 0x1a41: 0x0269, 0x1a42: 0x01d9, 0x1a43: 0x0fa9, 0x1a44: 0x0fb9, 0x1a45: 0x1089, + 0x1a46: 0x0279, 0x1a47: 0x0369, 0x1a48: 0x0289, 0x1a49: 0x13d1, 0x1a4a: 0x0039, 0x1a4b: 0x0ee9, + 0x1a4c: 0x1159, 0x1a4d: 0x0ef9, 0x1a4e: 0x0f09, 0x1a4f: 0x1199, 0x1a50: 0x0f31, 0x1a51: 0x0249, + 0x1a52: 0x0f41, 0x1a53: 0x0259, 0x1a54: 0x0f51, 0x1a55: 0x0359, 0x1a56: 0x0f61, 0x1a57: 0x0f71, + 0x1a58: 0x00d9, 0x1a59: 0x0f99, 0x1a5a: 0x2039, 0x1a5b: 0x0269, 0x1a5c: 0x01d9, 0x1a5d: 0x0fa9, + 0x1a5e: 0x0fb9, 0x1a5f: 0x1089, 0x1a60: 0x0279, 0x1a61: 0x0369, 0x1a62: 0x0289, 0x1a63: 0x13d1, + 0x1a64: 0xba81, 0x1a65: 0xba99, 0x1a66: 0x0040, 0x1a67: 0x0040, 0x1a68: 0xbab1, 0x1a69: 0x1099, + 0x1a6a: 0x10b1, 0x1a6b: 0x10c9, 0x1a6c: 0xbac9, 0x1a6d: 0xbae1, 0x1a6e: 0xbaf9, 0x1a6f: 0x1429, + 0x1a70: 0x1a31, 0x1a71: 0xbb11, 0x1a72: 0xbb29, 0x1a73: 0xbb41, 0x1a74: 0xbb59, 0x1a75: 0xbb71, + 0x1a76: 0xbb89, 0x1a77: 0x2109, 0x1a78: 0x1111, 0x1a79: 0x1429, 0x1a7a: 0xbba1, 0x1a7b: 0xbbb9, + 0x1a7c: 0xbbd1, 0x1a7d: 0x10e1, 0x1a7e: 0x10f9, 0x1a7f: 0xbbe9, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x2079, 0x1a81: 0xbc01, 0x1a82: 0xbab1, 0x1a83: 0x1099, 0x1a84: 0x10b1, 0x1a85: 0x10c9, + 0x1a86: 0xbac9, 0x1a87: 0xbae1, 0x1a88: 0xbaf9, 0x1a89: 0x1429, 0x1a8a: 0x1a31, 0x1a8b: 0xbb11, + 0x1a8c: 0xbb29, 0x1a8d: 0xbb41, 0x1a8e: 0xbb59, 0x1a8f: 0xbb71, 0x1a90: 0xbb89, 0x1a91: 0x2109, + 0x1a92: 0x1111, 0x1a93: 0xbba1, 0x1a94: 0xbba1, 0x1a95: 0xbbb9, 0x1a96: 0xbbd1, 0x1a97: 0x10e1, + 0x1a98: 0x10f9, 0x1a99: 0xbbe9, 0x1a9a: 0x2079, 0x1a9b: 0xbc21, 0x1a9c: 0xbac9, 0x1a9d: 0x1429, + 0x1a9e: 0xbb11, 0x1a9f: 0x10e1, 0x1aa0: 0x1111, 0x1aa1: 0x2109, 0x1aa2: 0xbab1, 0x1aa3: 0x1099, + 0x1aa4: 0x10b1, 0x1aa5: 0x10c9, 0x1aa6: 0xbac9, 0x1aa7: 0xbae1, 0x1aa8: 0xbaf9, 0x1aa9: 0x1429, + 0x1aaa: 0x1a31, 0x1aab: 0xbb11, 0x1aac: 0xbb29, 0x1aad: 0xbb41, 0x1aae: 0xbb59, 0x1aaf: 0xbb71, + 0x1ab0: 0xbb89, 0x1ab1: 0x2109, 0x1ab2: 0x1111, 0x1ab3: 0x1429, 0x1ab4: 0xbba1, 0x1ab5: 0xbbb9, + 0x1ab6: 0xbbd1, 0x1ab7: 0x10e1, 0x1ab8: 0x10f9, 0x1ab9: 0xbbe9, 0x1aba: 0x2079, 0x1abb: 0xbc01, + 0x1abc: 0xbab1, 0x1abd: 0x1099, 0x1abe: 0x10b1, 0x1abf: 0x10c9, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0xbac9, 0x1ac1: 0xbae1, 0x1ac2: 0xbaf9, 0x1ac3: 0x1429, 0x1ac4: 0x1a31, 0x1ac5: 0xbb11, + 0x1ac6: 0xbb29, 0x1ac7: 0xbb41, 0x1ac8: 0xbb59, 0x1ac9: 0xbb71, 0x1aca: 0xbb89, 0x1acb: 0x2109, + 0x1acc: 0x1111, 0x1acd: 0xbba1, 0x1ace: 0xbba1, 0x1acf: 0xbbb9, 0x1ad0: 0xbbd1, 0x1ad1: 0x10e1, + 0x1ad2: 0x10f9, 0x1ad3: 0xbbe9, 0x1ad4: 0x2079, 0x1ad5: 0xbc21, 0x1ad6: 0xbac9, 0x1ad7: 0x1429, + 0x1ad8: 0xbb11, 0x1ad9: 0x10e1, 0x1ada: 0x1111, 0x1adb: 0x2109, 0x1adc: 0xbab1, 0x1add: 0x1099, + 0x1ade: 0x10b1, 0x1adf: 0x10c9, 0x1ae0: 0xbac9, 0x1ae1: 0xbae1, 0x1ae2: 0xbaf9, 0x1ae3: 0x1429, + 0x1ae4: 0x1a31, 0x1ae5: 0xbb11, 0x1ae6: 0xbb29, 0x1ae7: 0xbb41, 0x1ae8: 0xbb59, 0x1ae9: 0xbb71, + 0x1aea: 0xbb89, 0x1aeb: 0x2109, 0x1aec: 0x1111, 0x1aed: 0x1429, 0x1aee: 0xbba1, 0x1aef: 0xbbb9, + 0x1af0: 0xbbd1, 0x1af1: 0x10e1, 0x1af2: 0x10f9, 0x1af3: 0xbbe9, 0x1af4: 0x2079, 0x1af5: 0xbc01, + 0x1af6: 0xbab1, 0x1af7: 0x1099, 0x1af8: 0x10b1, 0x1af9: 0x10c9, 0x1afa: 0xbac9, 0x1afb: 0xbae1, + 0x1afc: 0xbaf9, 0x1afd: 0x1429, 0x1afe: 0x1a31, 0x1aff: 0xbb11, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0xbb29, 0x1b01: 0xbb41, 0x1b02: 0xbb59, 0x1b03: 0xbb71, 0x1b04: 0xbb89, 0x1b05: 0x2109, + 0x1b06: 0x1111, 0x1b07: 0xbba1, 0x1b08: 0xbba1, 0x1b09: 0xbbb9, 0x1b0a: 0xbbd1, 0x1b0b: 0x10e1, + 0x1b0c: 0x10f9, 0x1b0d: 0xbbe9, 0x1b0e: 0x2079, 0x1b0f: 0xbc21, 0x1b10: 0xbac9, 0x1b11: 0x1429, + 0x1b12: 0xbb11, 0x1b13: 0x10e1, 0x1b14: 0x1111, 0x1b15: 0x2109, 0x1b16: 0xbab1, 0x1b17: 0x1099, + 0x1b18: 0x10b1, 0x1b19: 0x10c9, 0x1b1a: 0xbac9, 0x1b1b: 0xbae1, 0x1b1c: 0xbaf9, 0x1b1d: 0x1429, + 0x1b1e: 0x1a31, 0x1b1f: 0xbb11, 0x1b20: 0xbb29, 0x1b21: 0xbb41, 0x1b22: 0xbb59, 0x1b23: 0xbb71, + 0x1b24: 0xbb89, 0x1b25: 0x2109, 0x1b26: 0x1111, 0x1b27: 0x1429, 0x1b28: 0xbba1, 0x1b29: 0xbbb9, + 0x1b2a: 0xbbd1, 0x1b2b: 0x10e1, 0x1b2c: 0x10f9, 0x1b2d: 0xbbe9, 0x1b2e: 0x2079, 0x1b2f: 0xbc01, + 0x1b30: 0xbab1, 0x1b31: 0x1099, 0x1b32: 0x10b1, 0x1b33: 0x10c9, 0x1b34: 0xbac9, 0x1b35: 0xbae1, + 0x1b36: 0xbaf9, 0x1b37: 0x1429, 0x1b38: 0x1a31, 0x1b39: 0xbb11, 0x1b3a: 0xbb29, 0x1b3b: 0xbb41, + 0x1b3c: 0xbb59, 0x1b3d: 0xbb71, 0x1b3e: 0xbb89, 0x1b3f: 0x2109, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0x1111, 0x1b41: 0xbba1, 0x1b42: 0xbba1, 0x1b43: 0xbbb9, 0x1b44: 0xbbd1, 0x1b45: 0x10e1, + 0x1b46: 0x10f9, 0x1b47: 0xbbe9, 0x1b48: 0x2079, 0x1b49: 0xbc21, 0x1b4a: 0xbac9, 0x1b4b: 0x1429, + 0x1b4c: 0xbb11, 0x1b4d: 0x10e1, 0x1b4e: 0x1111, 0x1b4f: 0x2109, 0x1b50: 0xbab1, 0x1b51: 0x1099, + 0x1b52: 0x10b1, 0x1b53: 0x10c9, 0x1b54: 0xbac9, 0x1b55: 0xbae1, 0x1b56: 0xbaf9, 0x1b57: 0x1429, + 0x1b58: 0x1a31, 0x1b59: 0xbb11, 0x1b5a: 0xbb29, 0x1b5b: 0xbb41, 0x1b5c: 0xbb59, 0x1b5d: 0xbb71, + 0x1b5e: 0xbb89, 0x1b5f: 0x2109, 0x1b60: 0x1111, 0x1b61: 0x1429, 0x1b62: 0xbba1, 0x1b63: 0xbbb9, + 0x1b64: 0xbbd1, 0x1b65: 0x10e1, 0x1b66: 0x10f9, 0x1b67: 0xbbe9, 0x1b68: 0x2079, 0x1b69: 0xbc01, + 0x1b6a: 0xbab1, 0x1b6b: 0x1099, 0x1b6c: 0x10b1, 0x1b6d: 0x10c9, 0x1b6e: 0xbac9, 0x1b6f: 0xbae1, + 0x1b70: 0xbaf9, 0x1b71: 0x1429, 0x1b72: 0x1a31, 0x1b73: 0xbb11, 0x1b74: 0xbb29, 0x1b75: 0xbb41, + 0x1b76: 0xbb59, 0x1b77: 0xbb71, 0x1b78: 0xbb89, 0x1b79: 0x2109, 0x1b7a: 0x1111, 0x1b7b: 0xbba1, + 0x1b7c: 0xbba1, 0x1b7d: 0xbbb9, 0x1b7e: 0xbbd1, 0x1b7f: 0x10e1, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x10f9, 0x1b81: 0xbbe9, 0x1b82: 0x2079, 0x1b83: 0xbc21, 0x1b84: 0xbac9, 0x1b85: 0x1429, + 0x1b86: 0xbb11, 0x1b87: 0x10e1, 0x1b88: 0x1111, 0x1b89: 0x2109, 0x1b8a: 0xbc41, 0x1b8b: 0xbc41, + 0x1b8c: 0x0040, 0x1b8d: 0x0040, 0x1b8e: 0x1f41, 0x1b8f: 0x00c9, 0x1b90: 0x0069, 0x1b91: 0x0079, + 0x1b92: 0x1f51, 0x1b93: 0x1f61, 0x1b94: 0x1f71, 0x1b95: 0x1f81, 0x1b96: 0x1f91, 0x1b97: 0x1fa1, + 0x1b98: 0x1f41, 0x1b99: 0x00c9, 0x1b9a: 0x0069, 0x1b9b: 0x0079, 0x1b9c: 0x1f51, 0x1b9d: 0x1f61, + 0x1b9e: 0x1f71, 0x1b9f: 0x1f81, 0x1ba0: 0x1f91, 0x1ba1: 0x1fa1, 0x1ba2: 0x1f41, 0x1ba3: 0x00c9, + 0x1ba4: 0x0069, 0x1ba5: 0x0079, 0x1ba6: 0x1f51, 0x1ba7: 0x1f61, 0x1ba8: 0x1f71, 0x1ba9: 0x1f81, + 0x1baa: 0x1f91, 0x1bab: 0x1fa1, 0x1bac: 0x1f41, 0x1bad: 0x00c9, 0x1bae: 0x0069, 0x1baf: 0x0079, + 0x1bb0: 0x1f51, 0x1bb1: 0x1f61, 0x1bb2: 0x1f71, 0x1bb3: 0x1f81, 0x1bb4: 0x1f91, 0x1bb5: 0x1fa1, + 0x1bb6: 0x1f41, 0x1bb7: 0x00c9, 0x1bb8: 0x0069, 0x1bb9: 0x0079, 0x1bba: 0x1f51, 0x1bbb: 0x1f61, + 0x1bbc: 0x1f71, 0x1bbd: 0x1f81, 0x1bbe: 0x1f91, 0x1bbf: 0x1fa1, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0xe115, 0x1bc1: 0xe115, 0x1bc2: 0xe135, 0x1bc3: 0xe135, 0x1bc4: 0xe115, 0x1bc5: 0xe115, + 0x1bc6: 0xe175, 0x1bc7: 0xe175, 0x1bc8: 0xe115, 0x1bc9: 0xe115, 0x1bca: 0xe135, 0x1bcb: 0xe135, + 0x1bcc: 0xe115, 0x1bcd: 0xe115, 0x1bce: 0xe1f5, 0x1bcf: 0xe1f5, 0x1bd0: 0xe115, 0x1bd1: 0xe115, + 0x1bd2: 0xe135, 0x1bd3: 0xe135, 0x1bd4: 0xe115, 0x1bd5: 0xe115, 0x1bd6: 0xe175, 0x1bd7: 0xe175, + 0x1bd8: 0xe115, 0x1bd9: 0xe115, 0x1bda: 0xe135, 0x1bdb: 0xe135, 0x1bdc: 0xe115, 0x1bdd: 0xe115, + 0x1bde: 0x8b05, 0x1bdf: 0x8b05, 0x1be0: 0x04b5, 0x1be1: 0x04b5, 0x1be2: 0x0208, 0x1be3: 0x0208, + 0x1be4: 0x0208, 0x1be5: 0x0208, 0x1be6: 0x0208, 0x1be7: 0x0208, 0x1be8: 0x0208, 0x1be9: 0x0208, + 0x1bea: 0x0208, 0x1beb: 0x0208, 0x1bec: 0x0208, 0x1bed: 0x0208, 0x1bee: 0x0208, 0x1bef: 0x0208, + 0x1bf0: 0x0208, 0x1bf1: 0x0208, 0x1bf2: 0x0208, 0x1bf3: 0x0208, 0x1bf4: 0x0208, 0x1bf5: 0x0208, + 0x1bf6: 0x0208, 0x1bf7: 0x0208, 0x1bf8: 0x0208, 0x1bf9: 0x0208, 0x1bfa: 0x0208, 0x1bfb: 0x0208, + 0x1bfc: 0x0208, 0x1bfd: 0x0208, 0x1bfe: 0x0208, 0x1bff: 0x0208, + // Block 0x70, offset 0x1c00 + 0x1c00: 0xb189, 0x1c01: 0xb1a1, 0x1c02: 0xb201, 0x1c03: 0xb249, 0x1c04: 0x0040, 0x1c05: 0xb411, + 0x1c06: 0xb291, 0x1c07: 0xb219, 0x1c08: 0xb309, 0x1c09: 0xb429, 0x1c0a: 0xb399, 0x1c0b: 0xb3b1, + 0x1c0c: 0xb3c9, 0x1c0d: 0xb3e1, 0x1c0e: 0xb2a9, 0x1c0f: 0xb339, 0x1c10: 0xb369, 0x1c11: 0xb2d9, + 0x1c12: 0xb381, 0x1c13: 0xb279, 0x1c14: 0xb2c1, 0x1c15: 0xb1d1, 0x1c16: 0xb1e9, 0x1c17: 0xb231, + 0x1c18: 0xb261, 0x1c19: 0xb2f1, 0x1c1a: 0xb321, 0x1c1b: 0xb351, 0x1c1c: 0xbc59, 0x1c1d: 0x7949, + 0x1c1e: 0xbc71, 0x1c1f: 0xbc89, 0x1c20: 0x0040, 0x1c21: 0xb1a1, 0x1c22: 0xb201, 0x1c23: 0x0040, + 0x1c24: 0xb3f9, 0x1c25: 0x0040, 0x1c26: 0x0040, 0x1c27: 0xb219, 0x1c28: 0x0040, 0x1c29: 0xb429, + 0x1c2a: 0xb399, 0x1c2b: 0xb3b1, 0x1c2c: 0xb3c9, 0x1c2d: 0xb3e1, 0x1c2e: 0xb2a9, 0x1c2f: 0xb339, + 0x1c30: 0xb369, 0x1c31: 0xb2d9, 0x1c32: 0xb381, 0x1c33: 0x0040, 0x1c34: 0xb2c1, 0x1c35: 0xb1d1, + 0x1c36: 0xb1e9, 0x1c37: 0xb231, 0x1c38: 0x0040, 0x1c39: 0xb2f1, 0x1c3a: 0x0040, 0x1c3b: 0xb351, + 0x1c3c: 0x0040, 0x1c3d: 0x0040, 0x1c3e: 0x0040, 0x1c3f: 0x0040, + // Block 0x71, offset 0x1c40 + 0x1c40: 0x0040, 0x1c41: 0x0040, 0x1c42: 0xb201, 0x1c43: 0x0040, 0x1c44: 0x0040, 0x1c45: 0x0040, + 0x1c46: 0x0040, 0x1c47: 0xb219, 0x1c48: 0x0040, 0x1c49: 0xb429, 0x1c4a: 0x0040, 0x1c4b: 0xb3b1, + 0x1c4c: 0x0040, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0x0040, 0x1c51: 0xb2d9, + 0x1c52: 0xb381, 0x1c53: 0x0040, 0x1c54: 0xb2c1, 0x1c55: 0x0040, 0x1c56: 0x0040, 0x1c57: 0xb231, + 0x1c58: 0x0040, 0x1c59: 0xb2f1, 0x1c5a: 0x0040, 0x1c5b: 0xb351, 0x1c5c: 0x0040, 0x1c5d: 0x7949, + 0x1c5e: 0x0040, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, + 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0xb309, 0x1c69: 0xb429, + 0x1c6a: 0xb399, 0x1c6b: 0x0040, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, + 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, + 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0xb321, 0x1c7b: 0xb351, + 0x1c7c: 0xbc59, 0x1c7d: 0x0040, 0x1c7e: 0xbc71, 0x1c7f: 0x0040, + // Block 0x72, offset 0x1c80 + 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0xb3f9, 0x1c85: 0xb411, + 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, + 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, + 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, + 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x0040, + 0x1c9e: 0x0040, 0x1c9f: 0x0040, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0xb249, + 0x1ca4: 0x0040, 0x1ca5: 0xb411, 0x1ca6: 0xb291, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, + 0x1caa: 0x0040, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0xb279, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0xb261, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, + 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x0040, 0x1cc1: 0xbca2, 0x1cc2: 0xbcba, 0x1cc3: 0xbcd2, 0x1cc4: 0xbcea, 0x1cc5: 0xbd02, + 0x1cc6: 0xbd1a, 0x1cc7: 0xbd32, 0x1cc8: 0xbd4a, 0x1cc9: 0xbd62, 0x1cca: 0xbd7a, 0x1ccb: 0x0018, + 0x1ccc: 0x0018, 0x1ccd: 0x0040, 0x1cce: 0x0040, 0x1ccf: 0x0040, 0x1cd0: 0xbd92, 0x1cd1: 0xbdb2, + 0x1cd2: 0xbdd2, 0x1cd3: 0xbdf2, 0x1cd4: 0xbe12, 0x1cd5: 0xbe32, 0x1cd6: 0xbe52, 0x1cd7: 0xbe72, + 0x1cd8: 0xbe92, 0x1cd9: 0xbeb2, 0x1cda: 0xbed2, 0x1cdb: 0xbef2, 0x1cdc: 0xbf12, 0x1cdd: 0xbf32, + 0x1cde: 0xbf52, 0x1cdf: 0xbf72, 0x1ce0: 0xbf92, 0x1ce1: 0xbfb2, 0x1ce2: 0xbfd2, 0x1ce3: 0xbff2, + 0x1ce4: 0xc012, 0x1ce5: 0xc032, 0x1ce6: 0xc052, 0x1ce7: 0xc072, 0x1ce8: 0xc092, 0x1ce9: 0xc0b2, + 0x1cea: 0xc0d1, 0x1ceb: 0x1159, 0x1cec: 0x0269, 0x1ced: 0x6671, 0x1cee: 0xc111, 0x1cef: 0x0040, + 0x1cf0: 0x0039, 0x1cf1: 0x0ee9, 0x1cf2: 0x1159, 0x1cf3: 0x0ef9, 0x1cf4: 0x0f09, 0x1cf5: 0x1199, + 0x1cf6: 0x0f31, 0x1cf7: 0x0249, 0x1cf8: 0x0f41, 0x1cf9: 0x0259, 0x1cfa: 0x0f51, 0x1cfb: 0x0359, + 0x1cfc: 0x0f61, 0x1cfd: 0x0f71, 0x1cfe: 0x00d9, 0x1cff: 0x0f99, + // Block 0x74, offset 0x1d00 + 0x1d00: 0x2039, 0x1d01: 0x0269, 0x1d02: 0x01d9, 0x1d03: 0x0fa9, 0x1d04: 0x0fb9, 0x1d05: 0x1089, + 0x1d06: 0x0279, 0x1d07: 0x0369, 0x1d08: 0x0289, 0x1d09: 0x13d1, 0x1d0a: 0xc129, 0x1d0b: 0x65b1, + 0x1d0c: 0xc141, 0x1d0d: 0x1441, 0x1d0e: 0xc159, 0x1d0f: 0xc179, 0x1d10: 0x0018, 0x1d11: 0x0018, + 0x1d12: 0x0018, 0x1d13: 0x0018, 0x1d14: 0x0018, 0x1d15: 0x0018, 0x1d16: 0x0018, 0x1d17: 0x0018, + 0x1d18: 0x0018, 0x1d19: 0x0018, 0x1d1a: 0x0018, 0x1d1b: 0x0018, 0x1d1c: 0x0018, 0x1d1d: 0x0018, + 0x1d1e: 0x0018, 0x1d1f: 0x0018, 0x1d20: 0x0018, 0x1d21: 0x0018, 0x1d22: 0x0018, 0x1d23: 0x0018, + 0x1d24: 0x0018, 0x1d25: 0x0018, 0x1d26: 0x0018, 0x1d27: 0x0018, 0x1d28: 0x0018, 0x1d29: 0x0018, + 0x1d2a: 0xc191, 0x1d2b: 0xc1a9, 0x1d2c: 0x0040, 0x1d2d: 0x0040, 0x1d2e: 0x0040, 0x1d2f: 0x0040, + 0x1d30: 0x0018, 0x1d31: 0x0018, 0x1d32: 0x0018, 0x1d33: 0x0018, 0x1d34: 0x0018, 0x1d35: 0x0018, + 0x1d36: 0x0018, 0x1d37: 0x0018, 0x1d38: 0x0018, 0x1d39: 0x0018, 0x1d3a: 0x0018, 0x1d3b: 0x0018, + 0x1d3c: 0x0018, 0x1d3d: 0x0018, 0x1d3e: 0x0018, 0x1d3f: 0x0018, + // Block 0x75, offset 0x1d40 + 0x1d40: 0xc1d9, 0x1d41: 0xc211, 0x1d42: 0xc249, 0x1d43: 0x0040, 0x1d44: 0x0040, 0x1d45: 0x0040, + 0x1d46: 0x0040, 0x1d47: 0x0040, 0x1d48: 0x0040, 0x1d49: 0x0040, 0x1d4a: 0x0040, 0x1d4b: 0x0040, + 0x1d4c: 0x0040, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xc269, 0x1d51: 0xc289, + 0x1d52: 0xc2a9, 0x1d53: 0xc2c9, 0x1d54: 0xc2e9, 0x1d55: 0xc309, 0x1d56: 0xc329, 0x1d57: 0xc349, + 0x1d58: 0xc369, 0x1d59: 0xc389, 0x1d5a: 0xc3a9, 0x1d5b: 0xc3c9, 0x1d5c: 0xc3e9, 0x1d5d: 0xc409, + 0x1d5e: 0xc429, 0x1d5f: 0xc449, 0x1d60: 0xc469, 0x1d61: 0xc489, 0x1d62: 0xc4a9, 0x1d63: 0xc4c9, + 0x1d64: 0xc4e9, 0x1d65: 0xc509, 0x1d66: 0xc529, 0x1d67: 0xc549, 0x1d68: 0xc569, 0x1d69: 0xc589, + 0x1d6a: 0xc5a9, 0x1d6b: 0xc5c9, 0x1d6c: 0xc5e9, 0x1d6d: 0xc609, 0x1d6e: 0xc629, 0x1d6f: 0xc649, + 0x1d70: 0xc669, 0x1d71: 0xc689, 0x1d72: 0xc6a9, 0x1d73: 0xc6c9, 0x1d74: 0xc6e9, 0x1d75: 0xc709, + 0x1d76: 0xc729, 0x1d77: 0xc749, 0x1d78: 0xc769, 0x1d79: 0xc789, 0x1d7a: 0xc7a9, 0x1d7b: 0xc7c9, + 0x1d7c: 0x0040, 0x1d7d: 0x0040, 0x1d7e: 0x0040, 0x1d7f: 0x0040, + // Block 0x76, offset 0x1d80 + 0x1d80: 0xcaf9, 0x1d81: 0xcb19, 0x1d82: 0xcb39, 0x1d83: 0x8b1d, 0x1d84: 0xcb59, 0x1d85: 0xcb79, + 0x1d86: 0xcb99, 0x1d87: 0xcbb9, 0x1d88: 0xcbd9, 0x1d89: 0xcbf9, 0x1d8a: 0xcc19, 0x1d8b: 0xcc39, + 0x1d8c: 0xcc59, 0x1d8d: 0x8b3d, 0x1d8e: 0xcc79, 0x1d8f: 0xcc99, 0x1d90: 0xccb9, 0x1d91: 0xccd9, + 0x1d92: 0x8b5d, 0x1d93: 0xccf9, 0x1d94: 0xcd19, 0x1d95: 0xc429, 0x1d96: 0x8b7d, 0x1d97: 0xcd39, + 0x1d98: 0xcd59, 0x1d99: 0xcd79, 0x1d9a: 0xcd99, 0x1d9b: 0xcdb9, 0x1d9c: 0x8b9d, 0x1d9d: 0xcdd9, + 0x1d9e: 0xcdf9, 0x1d9f: 0xce19, 0x1da0: 0xce39, 0x1da1: 0xce59, 0x1da2: 0xc789, 0x1da3: 0xce79, + 0x1da4: 0xce99, 0x1da5: 0xceb9, 0x1da6: 0xced9, 0x1da7: 0xcef9, 0x1da8: 0xcf19, 0x1da9: 0xcf39, + 0x1daa: 0xcf59, 0x1dab: 0xcf79, 0x1dac: 0xcf99, 0x1dad: 0xcfb9, 0x1dae: 0xcfd9, 0x1daf: 0xcff9, + 0x1db0: 0xd019, 0x1db1: 0xd039, 0x1db2: 0xd039, 0x1db3: 0xd039, 0x1db4: 0x8bbd, 0x1db5: 0xd059, + 0x1db6: 0xd079, 0x1db7: 0xd099, 0x1db8: 0x8bdd, 0x1db9: 0xd0b9, 0x1dba: 0xd0d9, 0x1dbb: 0xd0f9, + 0x1dbc: 0xd119, 0x1dbd: 0xd139, 0x1dbe: 0xd159, 0x1dbf: 0xd179, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0xd199, 0x1dc1: 0xd1b9, 0x1dc2: 0xd1d9, 0x1dc3: 0xd1f9, 0x1dc4: 0xd219, 0x1dc5: 0xd239, + 0x1dc6: 0xd239, 0x1dc7: 0xd259, 0x1dc8: 0xd279, 0x1dc9: 0xd299, 0x1dca: 0xd2b9, 0x1dcb: 0xd2d9, + 0x1dcc: 0xd2f9, 0x1dcd: 0xd319, 0x1dce: 0xd339, 0x1dcf: 0xd359, 0x1dd0: 0xd379, 0x1dd1: 0xd399, + 0x1dd2: 0xd3b9, 0x1dd3: 0xd3d9, 0x1dd4: 0xd3f9, 0x1dd5: 0xd419, 0x1dd6: 0xd439, 0x1dd7: 0xd459, + 0x1dd8: 0xd479, 0x1dd9: 0x8bfd, 0x1dda: 0xd499, 0x1ddb: 0xd4b9, 0x1ddc: 0xd4d9, 0x1ddd: 0xc309, + 0x1dde: 0xd4f9, 0x1ddf: 0xd519, 0x1de0: 0x8c1d, 0x1de1: 0x8c3d, 0x1de2: 0xd539, 0x1de3: 0xd559, + 0x1de4: 0xd579, 0x1de5: 0xd599, 0x1de6: 0xd5b9, 0x1de7: 0xd5d9, 0x1de8: 0x0040, 0x1de9: 0xd5f9, + 0x1dea: 0xd619, 0x1deb: 0xd619, 0x1dec: 0x8c5d, 0x1ded: 0xd639, 0x1dee: 0xd659, 0x1def: 0xd679, + 0x1df0: 0xd699, 0x1df1: 0x8c7d, 0x1df2: 0xd6b9, 0x1df3: 0xd6d9, 0x1df4: 0x0040, 0x1df5: 0xd6f9, + 0x1df6: 0xd719, 0x1df7: 0xd739, 0x1df8: 0xd759, 0x1df9: 0xd779, 0x1dfa: 0xd799, 0x1dfb: 0x8c9d, + 0x1dfc: 0xd7b9, 0x1dfd: 0x8cbd, 0x1dfe: 0xd7d9, 0x1dff: 0xd7f9, + // Block 0x78, offset 0x1e00 + 0x1e00: 0xd819, 0x1e01: 0xd839, 0x1e02: 0xd859, 0x1e03: 0xd879, 0x1e04: 0xd899, 0x1e05: 0xd8b9, + 0x1e06: 0xd8d9, 0x1e07: 0xd8f9, 0x1e08: 0xd919, 0x1e09: 0x8cdd, 0x1e0a: 0xd939, 0x1e0b: 0xd959, + 0x1e0c: 0xd979, 0x1e0d: 0xd999, 0x1e0e: 0xd9b9, 0x1e0f: 0x8cfd, 0x1e10: 0xd9d9, 0x1e11: 0x8d1d, + 0x1e12: 0x8d3d, 0x1e13: 0xd9f9, 0x1e14: 0xda19, 0x1e15: 0xda19, 0x1e16: 0xda39, 0x1e17: 0x8d5d, + 0x1e18: 0x8d7d, 0x1e19: 0xda59, 0x1e1a: 0xda79, 0x1e1b: 0xda99, 0x1e1c: 0xdab9, 0x1e1d: 0xdad9, + 0x1e1e: 0xdaf9, 0x1e1f: 0xdb19, 0x1e20: 0xdb39, 0x1e21: 0xdb59, 0x1e22: 0xdb79, 0x1e23: 0xdb99, + 0x1e24: 0x8d9d, 0x1e25: 0xdbb9, 0x1e26: 0xdbd9, 0x1e27: 0xdbf9, 0x1e28: 0xdc19, 0x1e29: 0xdbf9, + 0x1e2a: 0xdc39, 0x1e2b: 0xdc59, 0x1e2c: 0xdc79, 0x1e2d: 0xdc99, 0x1e2e: 0xdcb9, 0x1e2f: 0xdcd9, + 0x1e30: 0xdcf9, 0x1e31: 0xdd19, 0x1e32: 0xdd39, 0x1e33: 0xdd59, 0x1e34: 0xdd79, 0x1e35: 0xdd99, + 0x1e36: 0xddb9, 0x1e37: 0xddd9, 0x1e38: 0x8dbd, 0x1e39: 0xddf9, 0x1e3a: 0xde19, 0x1e3b: 0xde39, + 0x1e3c: 0xde59, 0x1e3d: 0xde79, 0x1e3e: 0x8ddd, 0x1e3f: 0xde99, + // Block 0x79, offset 0x1e40 + 0x1e40: 0xe599, 0x1e41: 0xe5b9, 0x1e42: 0xe5d9, 0x1e43: 0xe5f9, 0x1e44: 0xe619, 0x1e45: 0xe639, + 0x1e46: 0x8efd, 0x1e47: 0xe659, 0x1e48: 0xe679, 0x1e49: 0xe699, 0x1e4a: 0xe6b9, 0x1e4b: 0xe6d9, + 0x1e4c: 0xe6f9, 0x1e4d: 0x8f1d, 0x1e4e: 0xe719, 0x1e4f: 0xe739, 0x1e50: 0x8f3d, 0x1e51: 0x8f5d, + 0x1e52: 0xe759, 0x1e53: 0xe779, 0x1e54: 0xe799, 0x1e55: 0xe7b9, 0x1e56: 0xe7d9, 0x1e57: 0xe7f9, + 0x1e58: 0xe819, 0x1e59: 0xe839, 0x1e5a: 0xe859, 0x1e5b: 0x8f7d, 0x1e5c: 0xe879, 0x1e5d: 0x8f9d, + 0x1e5e: 0xe899, 0x1e5f: 0x0040, 0x1e60: 0xe8b9, 0x1e61: 0xe8d9, 0x1e62: 0xe8f9, 0x1e63: 0x8fbd, + 0x1e64: 0xe919, 0x1e65: 0xe939, 0x1e66: 0x8fdd, 0x1e67: 0x8ffd, 0x1e68: 0xe959, 0x1e69: 0xe979, + 0x1e6a: 0xe999, 0x1e6b: 0xe9b9, 0x1e6c: 0xe9d9, 0x1e6d: 0xe9d9, 0x1e6e: 0xe9f9, 0x1e6f: 0xea19, + 0x1e70: 0xea39, 0x1e71: 0xea59, 0x1e72: 0xea79, 0x1e73: 0xea99, 0x1e74: 0xeab9, 0x1e75: 0x901d, + 0x1e76: 0xead9, 0x1e77: 0x903d, 0x1e78: 0xeaf9, 0x1e79: 0x905d, 0x1e7a: 0xeb19, 0x1e7b: 0x907d, + 0x1e7c: 0x909d, 0x1e7d: 0x90bd, 0x1e7e: 0xeb39, 0x1e7f: 0xeb59, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0xeb79, 0x1e81: 0x90dd, 0x1e82: 0x90fd, 0x1e83: 0x911d, 0x1e84: 0x913d, 0x1e85: 0xeb99, + 0x1e86: 0xebb9, 0x1e87: 0xebb9, 0x1e88: 0xebd9, 0x1e89: 0xebf9, 0x1e8a: 0xec19, 0x1e8b: 0xec39, + 0x1e8c: 0xec59, 0x1e8d: 0x915d, 0x1e8e: 0xec79, 0x1e8f: 0xec99, 0x1e90: 0xecb9, 0x1e91: 0xecd9, + 0x1e92: 0x917d, 0x1e93: 0xecf9, 0x1e94: 0x919d, 0x1e95: 0x91bd, 0x1e96: 0xed19, 0x1e97: 0xed39, + 0x1e98: 0xed59, 0x1e99: 0xed79, 0x1e9a: 0xed99, 0x1e9b: 0xedb9, 0x1e9c: 0x91dd, 0x1e9d: 0x91fd, + 0x1e9e: 0x921d, 0x1e9f: 0x0040, 0x1ea0: 0xedd9, 0x1ea1: 0x923d, 0x1ea2: 0xedf9, 0x1ea3: 0xee19, + 0x1ea4: 0xee39, 0x1ea5: 0x925d, 0x1ea6: 0xee59, 0x1ea7: 0xee79, 0x1ea8: 0xee99, 0x1ea9: 0xeeb9, + 0x1eaa: 0xeed9, 0x1eab: 0x927d, 0x1eac: 0xeef9, 0x1ead: 0xef19, 0x1eae: 0xef39, 0x1eaf: 0xef59, + 0x1eb0: 0xef79, 0x1eb1: 0xef99, 0x1eb2: 0x929d, 0x1eb3: 0x92bd, 0x1eb4: 0xefb9, 0x1eb5: 0x92dd, + 0x1eb6: 0xefd9, 0x1eb7: 0x92fd, 0x1eb8: 0xeff9, 0x1eb9: 0xf019, 0x1eba: 0xf039, 0x1ebb: 0x931d, + 0x1ebc: 0x933d, 0x1ebd: 0xf059, 0x1ebe: 0x935d, 0x1ebf: 0xf079, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0xf6b9, 0x1ec1: 0xf6d9, 0x1ec2: 0xf6f9, 0x1ec3: 0xf719, 0x1ec4: 0xf739, 0x1ec5: 0x951d, + 0x1ec6: 0xf759, 0x1ec7: 0xf779, 0x1ec8: 0xf799, 0x1ec9: 0xf7b9, 0x1eca: 0xf7d9, 0x1ecb: 0x953d, + 0x1ecc: 0x955d, 0x1ecd: 0xf7f9, 0x1ece: 0xf819, 0x1ecf: 0xf839, 0x1ed0: 0xf859, 0x1ed1: 0xf879, + 0x1ed2: 0xf899, 0x1ed3: 0x957d, 0x1ed4: 0xf8b9, 0x1ed5: 0xf8d9, 0x1ed6: 0xf8f9, 0x1ed7: 0xf919, + 0x1ed8: 0x959d, 0x1ed9: 0x95bd, 0x1eda: 0xf939, 0x1edb: 0xf959, 0x1edc: 0xf979, 0x1edd: 0x95dd, + 0x1ede: 0xf999, 0x1edf: 0xf9b9, 0x1ee0: 0x6815, 0x1ee1: 0x95fd, 0x1ee2: 0xf9d9, 0x1ee3: 0xf9f9, + 0x1ee4: 0xfa19, 0x1ee5: 0x961d, 0x1ee6: 0xfa39, 0x1ee7: 0xfa59, 0x1ee8: 0xfa79, 0x1ee9: 0xfa99, + 0x1eea: 0xfab9, 0x1eeb: 0xfad9, 0x1eec: 0xfaf9, 0x1eed: 0x963d, 0x1eee: 0xfb19, 0x1eef: 0xfb39, + 0x1ef0: 0xfb59, 0x1ef1: 0x965d, 0x1ef2: 0xfb79, 0x1ef3: 0xfb99, 0x1ef4: 0xfbb9, 0x1ef5: 0xfbd9, + 0x1ef6: 0x7b35, 0x1ef7: 0x967d, 0x1ef8: 0xfbf9, 0x1ef9: 0xfc19, 0x1efa: 0xfc39, 0x1efb: 0x969d, + 0x1efc: 0xfc59, 0x1efd: 0x96bd, 0x1efe: 0xfc79, 0x1eff: 0xfc79, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0xfc99, 0x1f01: 0x96dd, 0x1f02: 0xfcb9, 0x1f03: 0xfcd9, 0x1f04: 0xfcf9, 0x1f05: 0xfd19, + 0x1f06: 0xfd39, 0x1f07: 0xfd59, 0x1f08: 0xfd79, 0x1f09: 0x96fd, 0x1f0a: 0xfd99, 0x1f0b: 0xfdb9, + 0x1f0c: 0xfdd9, 0x1f0d: 0xfdf9, 0x1f0e: 0xfe19, 0x1f0f: 0xfe39, 0x1f10: 0x971d, 0x1f11: 0xfe59, + 0x1f12: 0x973d, 0x1f13: 0x975d, 0x1f14: 0x977d, 0x1f15: 0xfe79, 0x1f16: 0xfe99, 0x1f17: 0xfeb9, + 0x1f18: 0xfed9, 0x1f19: 0xfef9, 0x1f1a: 0xff19, 0x1f1b: 0xff39, 0x1f1c: 0xff59, 0x1f1d: 0x979d, + 0x1f1e: 0x0040, 0x1f1f: 0x0040, 0x1f20: 0x0040, 0x1f21: 0x0040, 0x1f22: 0x0040, 0x1f23: 0x0040, + 0x1f24: 0x0040, 0x1f25: 0x0040, 0x1f26: 0x0040, 0x1f27: 0x0040, 0x1f28: 0x0040, 0x1f29: 0x0040, + 0x1f2a: 0x0040, 0x1f2b: 0x0040, 0x1f2c: 0x0040, 0x1f2d: 0x0040, 0x1f2e: 0x0040, 0x1f2f: 0x0040, + 0x1f30: 0x0040, 0x1f31: 0x0040, 0x1f32: 0x0040, 0x1f33: 0x0040, 0x1f34: 0x0040, 0x1f35: 0x0040, + 0x1f36: 0x0040, 0x1f37: 0x0040, 0x1f38: 0x0040, 0x1f39: 0x0040, 0x1f3a: 0x0040, 0x1f3b: 0x0040, + 0x1f3c: 0x0040, 0x1f3d: 0x0040, 0x1f3e: 0x0040, 0x1f3f: 0x0040, +} + +// idnaIndex: 35 blocks, 2240 entries, 4480 bytes +// Block 0 is the zero block. +var idnaIndex = [2240]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x7b, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7c, 0xca: 0x7d, 0xcb: 0x07, 0xcc: 0x7e, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x7f, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x80, 0xd6: 0x81, 0xd7: 0x82, + 0xd8: 0x0f, 0xd9: 0x83, 0xda: 0x84, 0xdb: 0x10, 0xdc: 0x11, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, + 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, + // Block 0x4, offset 0x100 + 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x12, 0x126: 0x13, 0x127: 0x14, + 0x128: 0x15, 0x129: 0x16, 0x12a: 0x17, 0x12b: 0x18, 0x12c: 0x19, 0x12d: 0x1a, 0x12e: 0x1b, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1c, 0x132: 0x1d, 0x133: 0x1e, 0x134: 0x8f, 0x135: 0x1f, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x20, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x21, 0x13e: 0x22, 0x13f: 0x96, + // Block 0x5, offset 0x140 + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9b, 0x147: 0x9b, + 0x148: 0x9d, 0x149: 0x9e, 0x14a: 0x9f, 0x14b: 0xa0, 0x14c: 0xa1, 0x14d: 0xa2, 0x14e: 0xa3, 0x14f: 0xa4, + 0x150: 0xa5, 0x151: 0x9d, 0x152: 0x9d, 0x153: 0x9d, 0x154: 0x9d, 0x155: 0x9d, 0x156: 0x9d, 0x157: 0x9d, + 0x158: 0x9d, 0x159: 0xa6, 0x15a: 0xa7, 0x15b: 0xa8, 0x15c: 0xa9, 0x15d: 0xaa, 0x15e: 0xab, 0x15f: 0xac, + 0x160: 0xad, 0x161: 0xae, 0x162: 0xaf, 0x163: 0xb0, 0x164: 0xb1, 0x165: 0xb2, 0x166: 0xb3, 0x167: 0xb4, + 0x168: 0xb5, 0x169: 0xb6, 0x16a: 0xb7, 0x16b: 0xb8, 0x16c: 0xb9, 0x16d: 0xba, 0x16e: 0xbb, 0x16f: 0xbc, + 0x170: 0xbd, 0x171: 0xbe, 0x172: 0xbf, 0x173: 0xc0, 0x174: 0x23, 0x175: 0x24, 0x176: 0x25, 0x177: 0xc1, + 0x178: 0x26, 0x179: 0x26, 0x17a: 0x27, 0x17b: 0x26, 0x17c: 0xc2, 0x17d: 0x28, 0x17e: 0x29, 0x17f: 0x2a, + // Block 0x6, offset 0x180 + 0x180: 0x2b, 0x181: 0x2c, 0x182: 0x2d, 0x183: 0xc3, 0x184: 0x2e, 0x185: 0x2f, 0x186: 0xc4, 0x187: 0x9b, + 0x188: 0xc5, 0x189: 0xc6, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc7, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xc8, + 0x190: 0xc9, 0x191: 0x30, 0x192: 0x31, 0x193: 0x32, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, + 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, + 0x1a8: 0xca, 0x1a9: 0xcb, 0x1aa: 0x9b, 0x1ab: 0xcc, 0x1ac: 0x9b, 0x1ad: 0xcd, 0x1ae: 0xce, 0x1af: 0xcf, + 0x1b0: 0xd0, 0x1b1: 0x33, 0x1b2: 0x26, 0x1b3: 0x34, 0x1b4: 0xd1, 0x1b5: 0xd2, 0x1b6: 0xd3, 0x1b7: 0xd4, + 0x1b8: 0xd5, 0x1b9: 0xd6, 0x1ba: 0xd7, 0x1bb: 0xd8, 0x1bc: 0xd9, 0x1bd: 0xda, 0x1be: 0xdb, 0x1bf: 0x35, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x36, 0x1c1: 0xdc, 0x1c2: 0xdd, 0x1c3: 0xde, 0x1c4: 0xdf, 0x1c5: 0x37, 0x1c6: 0x38, 0x1c7: 0xe0, + 0x1c8: 0xe1, 0x1c9: 0x39, 0x1ca: 0x3a, 0x1cb: 0x3b, 0x1cc: 0x3c, 0x1cd: 0x3d, 0x1ce: 0x3e, 0x1cf: 0x3f, + 0x1d0: 0x9d, 0x1d1: 0x9d, 0x1d2: 0x9d, 0x1d3: 0x9d, 0x1d4: 0x9d, 0x1d5: 0x9d, 0x1d6: 0x9d, 0x1d7: 0x9d, + 0x1d8: 0x9d, 0x1d9: 0x9d, 0x1da: 0x9d, 0x1db: 0x9d, 0x1dc: 0x9d, 0x1dd: 0x9d, 0x1de: 0x9d, 0x1df: 0x9d, + 0x1e0: 0x9d, 0x1e1: 0x9d, 0x1e2: 0x9d, 0x1e3: 0x9d, 0x1e4: 0x9d, 0x1e5: 0x9d, 0x1e6: 0x9d, 0x1e7: 0x9d, + 0x1e8: 0x9d, 0x1e9: 0x9d, 0x1ea: 0x9d, 0x1eb: 0x9d, 0x1ec: 0x9d, 0x1ed: 0x9d, 0x1ee: 0x9d, 0x1ef: 0x9d, + 0x1f0: 0x9d, 0x1f1: 0x9d, 0x1f2: 0x9d, 0x1f3: 0x9d, 0x1f4: 0x9d, 0x1f5: 0x9d, 0x1f6: 0x9d, 0x1f7: 0x9d, + 0x1f8: 0x9d, 0x1f9: 0x9d, 0x1fa: 0x9d, 0x1fb: 0x9d, 0x1fc: 0x9d, 0x1fd: 0x9d, 0x1fe: 0x9d, 0x1ff: 0x9d, + // Block 0x8, offset 0x200 + 0x200: 0x9d, 0x201: 0x9d, 0x202: 0x9d, 0x203: 0x9d, 0x204: 0x9d, 0x205: 0x9d, 0x206: 0x9d, 0x207: 0x9d, + 0x208: 0x9d, 0x209: 0x9d, 0x20a: 0x9d, 0x20b: 0x9d, 0x20c: 0x9d, 0x20d: 0x9d, 0x20e: 0x9d, 0x20f: 0x9d, + 0x210: 0x9d, 0x211: 0x9d, 0x212: 0x9d, 0x213: 0x9d, 0x214: 0x9d, 0x215: 0x9d, 0x216: 0x9d, 0x217: 0x9d, + 0x218: 0x9d, 0x219: 0x9d, 0x21a: 0x9d, 0x21b: 0x9d, 0x21c: 0x9d, 0x21d: 0x9d, 0x21e: 0x9d, 0x21f: 0x9d, + 0x220: 0x9d, 0x221: 0x9d, 0x222: 0x9d, 0x223: 0x9d, 0x224: 0x9d, 0x225: 0x9d, 0x226: 0x9d, 0x227: 0x9d, + 0x228: 0x9d, 0x229: 0x9d, 0x22a: 0x9d, 0x22b: 0x9d, 0x22c: 0x9d, 0x22d: 0x9d, 0x22e: 0x9d, 0x22f: 0x9d, + 0x230: 0x9d, 0x231: 0x9d, 0x232: 0x9d, 0x233: 0x9d, 0x234: 0x9d, 0x235: 0x9d, 0x236: 0xb0, 0x237: 0x9b, + 0x238: 0x9d, 0x239: 0x9d, 0x23a: 0x9d, 0x23b: 0x9d, 0x23c: 0x9d, 0x23d: 0x9d, 0x23e: 0x9d, 0x23f: 0x9d, + // Block 0x9, offset 0x240 + 0x240: 0x9d, 0x241: 0x9d, 0x242: 0x9d, 0x243: 0x9d, 0x244: 0x9d, 0x245: 0x9d, 0x246: 0x9d, 0x247: 0x9d, + 0x248: 0x9d, 0x249: 0x9d, 0x24a: 0x9d, 0x24b: 0x9d, 0x24c: 0x9d, 0x24d: 0x9d, 0x24e: 0x9d, 0x24f: 0x9d, + 0x250: 0x9d, 0x251: 0x9d, 0x252: 0x9d, 0x253: 0x9d, 0x254: 0x9d, 0x255: 0x9d, 0x256: 0x9d, 0x257: 0x9d, + 0x258: 0x9d, 0x259: 0x9d, 0x25a: 0x9d, 0x25b: 0x9d, 0x25c: 0x9d, 0x25d: 0x9d, 0x25e: 0x9d, 0x25f: 0x9d, + 0x260: 0x9d, 0x261: 0x9d, 0x262: 0x9d, 0x263: 0x9d, 0x264: 0x9d, 0x265: 0x9d, 0x266: 0x9d, 0x267: 0x9d, + 0x268: 0x9d, 0x269: 0x9d, 0x26a: 0x9d, 0x26b: 0x9d, 0x26c: 0x9d, 0x26d: 0x9d, 0x26e: 0x9d, 0x26f: 0x9d, + 0x270: 0x9d, 0x271: 0x9d, 0x272: 0x9d, 0x273: 0x9d, 0x274: 0x9d, 0x275: 0x9d, 0x276: 0x9d, 0x277: 0x9d, + 0x278: 0x9d, 0x279: 0x9d, 0x27a: 0x9d, 0x27b: 0x9d, 0x27c: 0x9d, 0x27d: 0x9d, 0x27e: 0x9d, 0x27f: 0x9d, + // Block 0xa, offset 0x280 + 0x280: 0x9d, 0x281: 0x9d, 0x282: 0x9d, 0x283: 0x9d, 0x284: 0x9d, 0x285: 0x9d, 0x286: 0x9d, 0x287: 0x9d, + 0x288: 0x9d, 0x289: 0x9d, 0x28a: 0x9d, 0x28b: 0x9d, 0x28c: 0x9d, 0x28d: 0x9d, 0x28e: 0x9d, 0x28f: 0x9d, + 0x290: 0x9d, 0x291: 0x9d, 0x292: 0x9d, 0x293: 0x9d, 0x294: 0x9d, 0x295: 0x9d, 0x296: 0x9d, 0x297: 0x9d, + 0x298: 0x9d, 0x299: 0x9d, 0x29a: 0x9d, 0x29b: 0x9d, 0x29c: 0x9d, 0x29d: 0x9d, 0x29e: 0x9d, 0x29f: 0x9d, + 0x2a0: 0x9d, 0x2a1: 0x9d, 0x2a2: 0x9d, 0x2a3: 0x9d, 0x2a4: 0x9d, 0x2a5: 0x9d, 0x2a6: 0x9d, 0x2a7: 0x9d, + 0x2a8: 0x9d, 0x2a9: 0x9d, 0x2aa: 0x9d, 0x2ab: 0x9d, 0x2ac: 0x9d, 0x2ad: 0x9d, 0x2ae: 0x9d, 0x2af: 0x9d, + 0x2b0: 0x9d, 0x2b1: 0x9d, 0x2b2: 0x9d, 0x2b3: 0x9d, 0x2b4: 0x9d, 0x2b5: 0x9d, 0x2b6: 0x9d, 0x2b7: 0x9d, + 0x2b8: 0x9d, 0x2b9: 0x9d, 0x2ba: 0x9d, 0x2bb: 0x9d, 0x2bc: 0x9d, 0x2bd: 0x9d, 0x2be: 0x9d, 0x2bf: 0xe2, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x9d, 0x2c1: 0x9d, 0x2c2: 0x9d, 0x2c3: 0x9d, 0x2c4: 0x9d, 0x2c5: 0x9d, 0x2c6: 0x9d, 0x2c7: 0x9d, + 0x2c8: 0x9d, 0x2c9: 0x9d, 0x2ca: 0x9d, 0x2cb: 0x9d, 0x2cc: 0x9d, 0x2cd: 0x9d, 0x2ce: 0x9d, 0x2cf: 0x9d, + 0x2d0: 0x9d, 0x2d1: 0x9d, 0x2d2: 0xe3, 0x2d3: 0xe4, 0x2d4: 0x9d, 0x2d5: 0x9d, 0x2d6: 0x9d, 0x2d7: 0x9d, + 0x2d8: 0xe5, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe6, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xe7, + 0x2e0: 0xe8, 0x2e1: 0xe9, 0x2e2: 0xea, 0x2e3: 0xeb, 0x2e4: 0xec, 0x2e5: 0xed, 0x2e6: 0xee, 0x2e7: 0xef, + 0x2e8: 0xf0, 0x2e9: 0xf1, 0x2ea: 0xf2, 0x2eb: 0xf3, 0x2ec: 0xf4, 0x2ed: 0xf5, 0x2ee: 0xf6, 0x2ef: 0xf7, + 0x2f0: 0x9d, 0x2f1: 0x9d, 0x2f2: 0x9d, 0x2f3: 0x9d, 0x2f4: 0x9d, 0x2f5: 0x9d, 0x2f6: 0x9d, 0x2f7: 0x9d, + 0x2f8: 0x9d, 0x2f9: 0x9d, 0x2fa: 0x9d, 0x2fb: 0x9d, 0x2fc: 0x9d, 0x2fd: 0x9d, 0x2fe: 0x9d, 0x2ff: 0x9d, + // Block 0xc, offset 0x300 + 0x300: 0x9d, 0x301: 0x9d, 0x302: 0x9d, 0x303: 0x9d, 0x304: 0x9d, 0x305: 0x9d, 0x306: 0x9d, 0x307: 0x9d, + 0x308: 0x9d, 0x309: 0x9d, 0x30a: 0x9d, 0x30b: 0x9d, 0x30c: 0x9d, 0x30d: 0x9d, 0x30e: 0x9d, 0x30f: 0x9d, + 0x310: 0x9d, 0x311: 0x9d, 0x312: 0x9d, 0x313: 0x9d, 0x314: 0x9d, 0x315: 0x9d, 0x316: 0x9d, 0x317: 0x9d, + 0x318: 0x9d, 0x319: 0x9d, 0x31a: 0x9d, 0x31b: 0x9d, 0x31c: 0x9d, 0x31d: 0x9d, 0x31e: 0xf8, 0x31f: 0xf9, + // Block 0xd, offset 0x340 + 0x340: 0xb8, 0x341: 0xb8, 0x342: 0xb8, 0x343: 0xb8, 0x344: 0xb8, 0x345: 0xb8, 0x346: 0xb8, 0x347: 0xb8, + 0x348: 0xb8, 0x349: 0xb8, 0x34a: 0xb8, 0x34b: 0xb8, 0x34c: 0xb8, 0x34d: 0xb8, 0x34e: 0xb8, 0x34f: 0xb8, + 0x350: 0xb8, 0x351: 0xb8, 0x352: 0xb8, 0x353: 0xb8, 0x354: 0xb8, 0x355: 0xb8, 0x356: 0xb8, 0x357: 0xb8, + 0x358: 0xb8, 0x359: 0xb8, 0x35a: 0xb8, 0x35b: 0xb8, 0x35c: 0xb8, 0x35d: 0xb8, 0x35e: 0xb8, 0x35f: 0xb8, + 0x360: 0xb8, 0x361: 0xb8, 0x362: 0xb8, 0x363: 0xb8, 0x364: 0xb8, 0x365: 0xb8, 0x366: 0xb8, 0x367: 0xb8, + 0x368: 0xb8, 0x369: 0xb8, 0x36a: 0xb8, 0x36b: 0xb8, 0x36c: 0xb8, 0x36d: 0xb8, 0x36e: 0xb8, 0x36f: 0xb8, + 0x370: 0xb8, 0x371: 0xb8, 0x372: 0xb8, 0x373: 0xb8, 0x374: 0xb8, 0x375: 0xb8, 0x376: 0xb8, 0x377: 0xb8, + 0x378: 0xb8, 0x379: 0xb8, 0x37a: 0xb8, 0x37b: 0xb8, 0x37c: 0xb8, 0x37d: 0xb8, 0x37e: 0xb8, 0x37f: 0xb8, + // Block 0xe, offset 0x380 + 0x380: 0xb8, 0x381: 0xb8, 0x382: 0xb8, 0x383: 0xb8, 0x384: 0xb8, 0x385: 0xb8, 0x386: 0xb8, 0x387: 0xb8, + 0x388: 0xb8, 0x389: 0xb8, 0x38a: 0xb8, 0x38b: 0xb8, 0x38c: 0xb8, 0x38d: 0xb8, 0x38e: 0xb8, 0x38f: 0xb8, + 0x390: 0xb8, 0x391: 0xb8, 0x392: 0xb8, 0x393: 0xb8, 0x394: 0xb8, 0x395: 0xb8, 0x396: 0xb8, 0x397: 0xb8, + 0x398: 0xb8, 0x399: 0xb8, 0x39a: 0xb8, 0x39b: 0xb8, 0x39c: 0xb8, 0x39d: 0xb8, 0x39e: 0xb8, 0x39f: 0xb8, + 0x3a0: 0xb8, 0x3a1: 0xb8, 0x3a2: 0xb8, 0x3a3: 0xb8, 0x3a4: 0xfa, 0x3a5: 0xfb, 0x3a6: 0xfc, 0x3a7: 0xfd, + 0x3a8: 0x45, 0x3a9: 0xfe, 0x3aa: 0xff, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a, + 0x3b0: 0x100, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x101, 0x3b7: 0x50, + 0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x102, 0x3c1: 0x103, 0x3c2: 0x9d, 0x3c3: 0x104, 0x3c4: 0x105, 0x3c5: 0x9b, 0x3c6: 0x106, 0x3c7: 0x107, + 0x3c8: 0xb8, 0x3c9: 0xb8, 0x3ca: 0x108, 0x3cb: 0x109, 0x3cc: 0x10a, 0x3cd: 0x10b, 0x3ce: 0x10c, 0x3cf: 0x10d, + 0x3d0: 0x10e, 0x3d1: 0x9d, 0x3d2: 0x10f, 0x3d3: 0x110, 0x3d4: 0x111, 0x3d5: 0x112, 0x3d6: 0xb8, 0x3d7: 0xb8, + 0x3d8: 0x9d, 0x3d9: 0x9d, 0x3da: 0x9d, 0x3db: 0x9d, 0x3dc: 0x113, 0x3dd: 0x114, 0x3de: 0xb8, 0x3df: 0xb8, + 0x3e0: 0x115, 0x3e1: 0x116, 0x3e2: 0x117, 0x3e3: 0x118, 0x3e4: 0x119, 0x3e5: 0xb8, 0x3e6: 0x11a, 0x3e7: 0x11b, + 0x3e8: 0x11c, 0x3e9: 0x11d, 0x3ea: 0x11e, 0x3eb: 0x59, 0x3ec: 0x11f, 0x3ed: 0x120, 0x3ee: 0x5a, 0x3ef: 0xb8, + 0x3f0: 0x9d, 0x3f1: 0x121, 0x3f2: 0x122, 0x3f3: 0x123, 0x3f4: 0xb8, 0x3f5: 0xb8, 0x3f6: 0xb8, 0x3f7: 0xb8, + 0x3f8: 0xb8, 0x3f9: 0x124, 0x3fa: 0xb8, 0x3fb: 0xb8, 0x3fc: 0xb8, 0x3fd: 0xb8, 0x3fe: 0xb8, 0x3ff: 0xb8, + // Block 0x10, offset 0x400 + 0x400: 0x125, 0x401: 0x126, 0x402: 0x127, 0x403: 0x128, 0x404: 0x129, 0x405: 0x12a, 0x406: 0x12b, 0x407: 0x12c, + 0x408: 0x12d, 0x409: 0xb8, 0x40a: 0x12e, 0x40b: 0x12f, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xb8, 0x40f: 0xb8, + 0x410: 0x130, 0x411: 0x131, 0x412: 0x132, 0x413: 0x133, 0x414: 0xb8, 0x415: 0xb8, 0x416: 0x134, 0x417: 0x135, + 0x418: 0x136, 0x419: 0x137, 0x41a: 0x138, 0x41b: 0x139, 0x41c: 0x13a, 0x41d: 0xb8, 0x41e: 0xb8, 0x41f: 0xb8, + 0x420: 0xb8, 0x421: 0xb8, 0x422: 0x13b, 0x423: 0x13c, 0x424: 0xb8, 0x425: 0xb8, 0x426: 0xb8, 0x427: 0xb8, + 0x428: 0xb8, 0x429: 0xb8, 0x42a: 0xb8, 0x42b: 0x13d, 0x42c: 0xb8, 0x42d: 0xb8, 0x42e: 0xb8, 0x42f: 0xb8, + 0x430: 0x13e, 0x431: 0x13f, 0x432: 0x140, 0x433: 0xb8, 0x434: 0xb8, 0x435: 0xb8, 0x436: 0xb8, 0x437: 0xb8, + 0x438: 0xb8, 0x439: 0xb8, 0x43a: 0xb8, 0x43b: 0xb8, 0x43c: 0xb8, 0x43d: 0xb8, 0x43e: 0xb8, 0x43f: 0xb8, + // Block 0x11, offset 0x440 + 0x440: 0x9d, 0x441: 0x9d, 0x442: 0x9d, 0x443: 0x9d, 0x444: 0x9d, 0x445: 0x9d, 0x446: 0x9d, 0x447: 0x9d, + 0x448: 0x9d, 0x449: 0x9d, 0x44a: 0x9d, 0x44b: 0x9d, 0x44c: 0x9d, 0x44d: 0x9d, 0x44e: 0x141, 0x44f: 0xb8, + 0x450: 0x9b, 0x451: 0x142, 0x452: 0x9d, 0x453: 0x9d, 0x454: 0x9d, 0x455: 0x143, 0x456: 0xb8, 0x457: 0xb8, + 0x458: 0xb8, 0x459: 0xb8, 0x45a: 0xb8, 0x45b: 0xb8, 0x45c: 0xb8, 0x45d: 0xb8, 0x45e: 0xb8, 0x45f: 0xb8, + 0x460: 0xb8, 0x461: 0xb8, 0x462: 0xb8, 0x463: 0xb8, 0x464: 0xb8, 0x465: 0xb8, 0x466: 0xb8, 0x467: 0xb8, + 0x468: 0xb8, 0x469: 0xb8, 0x46a: 0xb8, 0x46b: 0xb8, 0x46c: 0xb8, 0x46d: 0xb8, 0x46e: 0xb8, 0x46f: 0xb8, + 0x470: 0xb8, 0x471: 0xb8, 0x472: 0xb8, 0x473: 0xb8, 0x474: 0xb8, 0x475: 0xb8, 0x476: 0xb8, 0x477: 0xb8, + 0x478: 0xb8, 0x479: 0xb8, 0x47a: 0xb8, 0x47b: 0xb8, 0x47c: 0xb8, 0x47d: 0xb8, 0x47e: 0xb8, 0x47f: 0xb8, + // Block 0x12, offset 0x480 + 0x480: 0x9d, 0x481: 0x9d, 0x482: 0x9d, 0x483: 0x9d, 0x484: 0x9d, 0x485: 0x9d, 0x486: 0x9d, 0x487: 0x9d, + 0x488: 0x9d, 0x489: 0x9d, 0x48a: 0x9d, 0x48b: 0x9d, 0x48c: 0x9d, 0x48d: 0x9d, 0x48e: 0x9d, 0x48f: 0x9d, + 0x490: 0x144, 0x491: 0xb8, 0x492: 0xb8, 0x493: 0xb8, 0x494: 0xb8, 0x495: 0xb8, 0x496: 0xb8, 0x497: 0xb8, + 0x498: 0xb8, 0x499: 0xb8, 0x49a: 0xb8, 0x49b: 0xb8, 0x49c: 0xb8, 0x49d: 0xb8, 0x49e: 0xb8, 0x49f: 0xb8, + 0x4a0: 0xb8, 0x4a1: 0xb8, 0x4a2: 0xb8, 0x4a3: 0xb8, 0x4a4: 0xb8, 0x4a5: 0xb8, 0x4a6: 0xb8, 0x4a7: 0xb8, + 0x4a8: 0xb8, 0x4a9: 0xb8, 0x4aa: 0xb8, 0x4ab: 0xb8, 0x4ac: 0xb8, 0x4ad: 0xb8, 0x4ae: 0xb8, 0x4af: 0xb8, + 0x4b0: 0xb8, 0x4b1: 0xb8, 0x4b2: 0xb8, 0x4b3: 0xb8, 0x4b4: 0xb8, 0x4b5: 0xb8, 0x4b6: 0xb8, 0x4b7: 0xb8, + 0x4b8: 0xb8, 0x4b9: 0xb8, 0x4ba: 0xb8, 0x4bb: 0xb8, 0x4bc: 0xb8, 0x4bd: 0xb8, 0x4be: 0xb8, 0x4bf: 0xb8, + // Block 0x13, offset 0x4c0 + 0x4c0: 0xb8, 0x4c1: 0xb8, 0x4c2: 0xb8, 0x4c3: 0xb8, 0x4c4: 0xb8, 0x4c5: 0xb8, 0x4c6: 0xb8, 0x4c7: 0xb8, + 0x4c8: 0xb8, 0x4c9: 0xb8, 0x4ca: 0xb8, 0x4cb: 0xb8, 0x4cc: 0xb8, 0x4cd: 0xb8, 0x4ce: 0xb8, 0x4cf: 0xb8, + 0x4d0: 0x9d, 0x4d1: 0x9d, 0x4d2: 0x9d, 0x4d3: 0x9d, 0x4d4: 0x9d, 0x4d5: 0x9d, 0x4d6: 0x9d, 0x4d7: 0x9d, + 0x4d8: 0x9d, 0x4d9: 0x145, 0x4da: 0xb8, 0x4db: 0xb8, 0x4dc: 0xb8, 0x4dd: 0xb8, 0x4de: 0xb8, 0x4df: 0xb8, + 0x4e0: 0xb8, 0x4e1: 0xb8, 0x4e2: 0xb8, 0x4e3: 0xb8, 0x4e4: 0xb8, 0x4e5: 0xb8, 0x4e6: 0xb8, 0x4e7: 0xb8, + 0x4e8: 0xb8, 0x4e9: 0xb8, 0x4ea: 0xb8, 0x4eb: 0xb8, 0x4ec: 0xb8, 0x4ed: 0xb8, 0x4ee: 0xb8, 0x4ef: 0xb8, + 0x4f0: 0xb8, 0x4f1: 0xb8, 0x4f2: 0xb8, 0x4f3: 0xb8, 0x4f4: 0xb8, 0x4f5: 0xb8, 0x4f6: 0xb8, 0x4f7: 0xb8, + 0x4f8: 0xb8, 0x4f9: 0xb8, 0x4fa: 0xb8, 0x4fb: 0xb8, 0x4fc: 0xb8, 0x4fd: 0xb8, 0x4fe: 0xb8, 0x4ff: 0xb8, + // Block 0x14, offset 0x500 + 0x500: 0xb8, 0x501: 0xb8, 0x502: 0xb8, 0x503: 0xb8, 0x504: 0xb8, 0x505: 0xb8, 0x506: 0xb8, 0x507: 0xb8, + 0x508: 0xb8, 0x509: 0xb8, 0x50a: 0xb8, 0x50b: 0xb8, 0x50c: 0xb8, 0x50d: 0xb8, 0x50e: 0xb8, 0x50f: 0xb8, + 0x510: 0xb8, 0x511: 0xb8, 0x512: 0xb8, 0x513: 0xb8, 0x514: 0xb8, 0x515: 0xb8, 0x516: 0xb8, 0x517: 0xb8, + 0x518: 0xb8, 0x519: 0xb8, 0x51a: 0xb8, 0x51b: 0xb8, 0x51c: 0xb8, 0x51d: 0xb8, 0x51e: 0xb8, 0x51f: 0xb8, + 0x520: 0x9d, 0x521: 0x9d, 0x522: 0x9d, 0x523: 0x9d, 0x524: 0x9d, 0x525: 0x9d, 0x526: 0x9d, 0x527: 0x9d, + 0x528: 0x13d, 0x529: 0x146, 0x52a: 0xb8, 0x52b: 0x147, 0x52c: 0x148, 0x52d: 0x149, 0x52e: 0x14a, 0x52f: 0xb8, + 0x530: 0xb8, 0x531: 0xb8, 0x532: 0xb8, 0x533: 0xb8, 0x534: 0xb8, 0x535: 0xb8, 0x536: 0xb8, 0x537: 0xb8, + 0x538: 0xb8, 0x539: 0xb8, 0x53a: 0xb8, 0x53b: 0xb8, 0x53c: 0x9d, 0x53d: 0x14b, 0x53e: 0x14c, 0x53f: 0x14d, + // Block 0x15, offset 0x540 + 0x540: 0x9d, 0x541: 0x9d, 0x542: 0x9d, 0x543: 0x9d, 0x544: 0x9d, 0x545: 0x9d, 0x546: 0x9d, 0x547: 0x9d, + 0x548: 0x9d, 0x549: 0x9d, 0x54a: 0x9d, 0x54b: 0x9d, 0x54c: 0x9d, 0x54d: 0x9d, 0x54e: 0x9d, 0x54f: 0x9d, + 0x550: 0x9d, 0x551: 0x9d, 0x552: 0x9d, 0x553: 0x9d, 0x554: 0x9d, 0x555: 0x9d, 0x556: 0x9d, 0x557: 0x9d, + 0x558: 0x9d, 0x559: 0x9d, 0x55a: 0x9d, 0x55b: 0x9d, 0x55c: 0x9d, 0x55d: 0x9d, 0x55e: 0x9d, 0x55f: 0x14e, + 0x560: 0x9d, 0x561: 0x9d, 0x562: 0x9d, 0x563: 0x9d, 0x564: 0x9d, 0x565: 0x9d, 0x566: 0x9d, 0x567: 0x9d, + 0x568: 0x9d, 0x569: 0x9d, 0x56a: 0x9d, 0x56b: 0x14f, 0x56c: 0xb8, 0x56d: 0xb8, 0x56e: 0xb8, 0x56f: 0xb8, + 0x570: 0xb8, 0x571: 0xb8, 0x572: 0xb8, 0x573: 0xb8, 0x574: 0xb8, 0x575: 0xb8, 0x576: 0xb8, 0x577: 0xb8, + 0x578: 0xb8, 0x579: 0xb8, 0x57a: 0xb8, 0x57b: 0xb8, 0x57c: 0xb8, 0x57d: 0xb8, 0x57e: 0xb8, 0x57f: 0xb8, + // Block 0x16, offset 0x580 + 0x580: 0x150, 0x581: 0xb8, 0x582: 0xb8, 0x583: 0xb8, 0x584: 0xb8, 0x585: 0xb8, 0x586: 0xb8, 0x587: 0xb8, + 0x588: 0xb8, 0x589: 0xb8, 0x58a: 0xb8, 0x58b: 0xb8, 0x58c: 0xb8, 0x58d: 0xb8, 0x58e: 0xb8, 0x58f: 0xb8, + 0x590: 0xb8, 0x591: 0xb8, 0x592: 0xb8, 0x593: 0xb8, 0x594: 0xb8, 0x595: 0xb8, 0x596: 0xb8, 0x597: 0xb8, + 0x598: 0xb8, 0x599: 0xb8, 0x59a: 0xb8, 0x59b: 0xb8, 0x59c: 0xb8, 0x59d: 0xb8, 0x59e: 0xb8, 0x59f: 0xb8, + 0x5a0: 0xb8, 0x5a1: 0xb8, 0x5a2: 0xb8, 0x5a3: 0xb8, 0x5a4: 0xb8, 0x5a5: 0xb8, 0x5a6: 0xb8, 0x5a7: 0xb8, + 0x5a8: 0xb8, 0x5a9: 0xb8, 0x5aa: 0xb8, 0x5ab: 0xb8, 0x5ac: 0xb8, 0x5ad: 0xb8, 0x5ae: 0xb8, 0x5af: 0xb8, + 0x5b0: 0x9d, 0x5b1: 0x151, 0x5b2: 0x152, 0x5b3: 0xb8, 0x5b4: 0xb8, 0x5b5: 0xb8, 0x5b6: 0xb8, 0x5b7: 0xb8, + 0x5b8: 0xb8, 0x5b9: 0xb8, 0x5ba: 0xb8, 0x5bb: 0xb8, 0x5bc: 0xb8, 0x5bd: 0xb8, 0x5be: 0xb8, 0x5bf: 0xb8, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x153, 0x5c4: 0x154, 0x5c5: 0x155, 0x5c6: 0x156, 0x5c7: 0x157, + 0x5c8: 0x9b, 0x5c9: 0x158, 0x5ca: 0xb8, 0x5cb: 0xb8, 0x5cc: 0x9b, 0x5cd: 0x159, 0x5ce: 0xb8, 0x5cf: 0xb8, + 0x5d0: 0x5d, 0x5d1: 0x5e, 0x5d2: 0x5f, 0x5d3: 0x60, 0x5d4: 0x61, 0x5d5: 0x62, 0x5d6: 0x63, 0x5d7: 0x64, + 0x5d8: 0x65, 0x5d9: 0x66, 0x5da: 0x67, 0x5db: 0x68, 0x5dc: 0x69, 0x5dd: 0x6a, 0x5de: 0x6b, 0x5df: 0x6c, + 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, + 0x5e8: 0x15a, 0x5e9: 0x15b, 0x5ea: 0x15c, 0x5eb: 0xb8, 0x5ec: 0xb8, 0x5ed: 0xb8, 0x5ee: 0xb8, 0x5ef: 0xb8, + 0x5f0: 0xb8, 0x5f1: 0xb8, 0x5f2: 0xb8, 0x5f3: 0xb8, 0x5f4: 0xb8, 0x5f5: 0xb8, 0x5f6: 0xb8, 0x5f7: 0xb8, + 0x5f8: 0xb8, 0x5f9: 0xb8, 0x5fa: 0xb8, 0x5fb: 0xb8, 0x5fc: 0xb8, 0x5fd: 0xb8, 0x5fe: 0xb8, 0x5ff: 0xb8, + // Block 0x18, offset 0x600 + 0x600: 0x15d, 0x601: 0xb8, 0x602: 0xb8, 0x603: 0xb8, 0x604: 0xb8, 0x605: 0xb8, 0x606: 0xb8, 0x607: 0xb8, + 0x608: 0xb8, 0x609: 0xb8, 0x60a: 0xb8, 0x60b: 0xb8, 0x60c: 0xb8, 0x60d: 0xb8, 0x60e: 0xb8, 0x60f: 0xb8, + 0x610: 0xb8, 0x611: 0xb8, 0x612: 0xb8, 0x613: 0xb8, 0x614: 0xb8, 0x615: 0xb8, 0x616: 0xb8, 0x617: 0xb8, + 0x618: 0xb8, 0x619: 0xb8, 0x61a: 0xb8, 0x61b: 0xb8, 0x61c: 0xb8, 0x61d: 0xb8, 0x61e: 0xb8, 0x61f: 0xb8, + 0x620: 0x9d, 0x621: 0x9d, 0x622: 0x9d, 0x623: 0x15e, 0x624: 0x6d, 0x625: 0x15f, 0x626: 0xb8, 0x627: 0xb8, + 0x628: 0xb8, 0x629: 0xb8, 0x62a: 0xb8, 0x62b: 0xb8, 0x62c: 0xb8, 0x62d: 0xb8, 0x62e: 0xb8, 0x62f: 0xb8, + 0x630: 0xb8, 0x631: 0xb8, 0x632: 0xb8, 0x633: 0xb8, 0x634: 0xb8, 0x635: 0xb8, 0x636: 0xb8, 0x637: 0xb8, + 0x638: 0x6e, 0x639: 0x6f, 0x63a: 0x70, 0x63b: 0x160, 0x63c: 0xb8, 0x63d: 0xb8, 0x63e: 0xb8, 0x63f: 0xb8, + // Block 0x19, offset 0x640 + 0x640: 0x161, 0x641: 0x9b, 0x642: 0x162, 0x643: 0x163, 0x644: 0x71, 0x645: 0x72, 0x646: 0x164, 0x647: 0x165, + 0x648: 0x73, 0x649: 0x166, 0x64a: 0xb8, 0x64b: 0xb8, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x167, 0x65c: 0x9b, 0x65d: 0x168, 0x65e: 0x9b, 0x65f: 0x169, + 0x660: 0x16a, 0x661: 0x16b, 0x662: 0x16c, 0x663: 0xb8, 0x664: 0x16d, 0x665: 0x16e, 0x666: 0x16f, 0x667: 0x170, + 0x668: 0xb8, 0x669: 0xb8, 0x66a: 0xb8, 0x66b: 0xb8, 0x66c: 0xb8, 0x66d: 0xb8, 0x66e: 0xb8, 0x66f: 0xb8, + 0x670: 0xb8, 0x671: 0xb8, 0x672: 0xb8, 0x673: 0xb8, 0x674: 0xb8, 0x675: 0xb8, 0x676: 0xb8, 0x677: 0xb8, + 0x678: 0xb8, 0x679: 0xb8, 0x67a: 0xb8, 0x67b: 0xb8, 0x67c: 0xb8, 0x67d: 0xb8, 0x67e: 0xb8, 0x67f: 0xb8, + // Block 0x1a, offset 0x680 + 0x680: 0x9d, 0x681: 0x9d, 0x682: 0x9d, 0x683: 0x9d, 0x684: 0x9d, 0x685: 0x9d, 0x686: 0x9d, 0x687: 0x9d, + 0x688: 0x9d, 0x689: 0x9d, 0x68a: 0x9d, 0x68b: 0x9d, 0x68c: 0x9d, 0x68d: 0x9d, 0x68e: 0x9d, 0x68f: 0x9d, + 0x690: 0x9d, 0x691: 0x9d, 0x692: 0x9d, 0x693: 0x9d, 0x694: 0x9d, 0x695: 0x9d, 0x696: 0x9d, 0x697: 0x9d, + 0x698: 0x9d, 0x699: 0x9d, 0x69a: 0x9d, 0x69b: 0x171, 0x69c: 0x9d, 0x69d: 0x9d, 0x69e: 0x9d, 0x69f: 0x9d, + 0x6a0: 0x9d, 0x6a1: 0x9d, 0x6a2: 0x9d, 0x6a3: 0x9d, 0x6a4: 0x9d, 0x6a5: 0x9d, 0x6a6: 0x9d, 0x6a7: 0x9d, + 0x6a8: 0x9d, 0x6a9: 0x9d, 0x6aa: 0x9d, 0x6ab: 0x9d, 0x6ac: 0x9d, 0x6ad: 0x9d, 0x6ae: 0x9d, 0x6af: 0x9d, + 0x6b0: 0x9d, 0x6b1: 0x9d, 0x6b2: 0x9d, 0x6b3: 0x9d, 0x6b4: 0x9d, 0x6b5: 0x9d, 0x6b6: 0x9d, 0x6b7: 0x9d, + 0x6b8: 0x9d, 0x6b9: 0x9d, 0x6ba: 0x9d, 0x6bb: 0x9d, 0x6bc: 0x9d, 0x6bd: 0x9d, 0x6be: 0x9d, 0x6bf: 0x9d, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x9d, 0x6c1: 0x9d, 0x6c2: 0x9d, 0x6c3: 0x9d, 0x6c4: 0x9d, 0x6c5: 0x9d, 0x6c6: 0x9d, 0x6c7: 0x9d, + 0x6c8: 0x9d, 0x6c9: 0x9d, 0x6ca: 0x9d, 0x6cb: 0x9d, 0x6cc: 0x9d, 0x6cd: 0x9d, 0x6ce: 0x9d, 0x6cf: 0x9d, + 0x6d0: 0x9d, 0x6d1: 0x9d, 0x6d2: 0x9d, 0x6d3: 0x9d, 0x6d4: 0x9d, 0x6d5: 0x9d, 0x6d6: 0x9d, 0x6d7: 0x9d, + 0x6d8: 0x9d, 0x6d9: 0x9d, 0x6da: 0x9d, 0x6db: 0x9d, 0x6dc: 0x172, 0x6dd: 0x9d, 0x6de: 0x9d, 0x6df: 0x9d, + 0x6e0: 0x173, 0x6e1: 0x9d, 0x6e2: 0x9d, 0x6e3: 0x9d, 0x6e4: 0x9d, 0x6e5: 0x9d, 0x6e6: 0x9d, 0x6e7: 0x9d, + 0x6e8: 0x9d, 0x6e9: 0x9d, 0x6ea: 0x9d, 0x6eb: 0x9d, 0x6ec: 0x9d, 0x6ed: 0x9d, 0x6ee: 0x9d, 0x6ef: 0x9d, + 0x6f0: 0x9d, 0x6f1: 0x9d, 0x6f2: 0x9d, 0x6f3: 0x9d, 0x6f4: 0x9d, 0x6f5: 0x9d, 0x6f6: 0x9d, 0x6f7: 0x9d, + 0x6f8: 0x9d, 0x6f9: 0x9d, 0x6fa: 0x9d, 0x6fb: 0x9d, 0x6fc: 0x9d, 0x6fd: 0x9d, 0x6fe: 0x9d, 0x6ff: 0x9d, + // Block 0x1c, offset 0x700 + 0x700: 0x9d, 0x701: 0x9d, 0x702: 0x9d, 0x703: 0x9d, 0x704: 0x9d, 0x705: 0x9d, 0x706: 0x9d, 0x707: 0x9d, + 0x708: 0x9d, 0x709: 0x9d, 0x70a: 0x9d, 0x70b: 0x9d, 0x70c: 0x9d, 0x70d: 0x9d, 0x70e: 0x9d, 0x70f: 0x9d, + 0x710: 0x9d, 0x711: 0x9d, 0x712: 0x9d, 0x713: 0x9d, 0x714: 0x9d, 0x715: 0x9d, 0x716: 0x9d, 0x717: 0x9d, + 0x718: 0x9d, 0x719: 0x9d, 0x71a: 0x9d, 0x71b: 0x9d, 0x71c: 0x9d, 0x71d: 0x9d, 0x71e: 0x9d, 0x71f: 0x9d, + 0x720: 0x9d, 0x721: 0x9d, 0x722: 0x9d, 0x723: 0x9d, 0x724: 0x9d, 0x725: 0x9d, 0x726: 0x9d, 0x727: 0x9d, + 0x728: 0x9d, 0x729: 0x9d, 0x72a: 0x9d, 0x72b: 0x9d, 0x72c: 0x9d, 0x72d: 0x9d, 0x72e: 0x9d, 0x72f: 0x9d, + 0x730: 0x9d, 0x731: 0x9d, 0x732: 0x9d, 0x733: 0x9d, 0x734: 0x9d, 0x735: 0x9d, 0x736: 0x9d, 0x737: 0x9d, + 0x738: 0x9d, 0x739: 0x9d, 0x73a: 0x174, 0x73b: 0xb8, 0x73c: 0xb8, 0x73d: 0xb8, 0x73e: 0xb8, 0x73f: 0xb8, + // Block 0x1d, offset 0x740 + 0x740: 0xb8, 0x741: 0xb8, 0x742: 0xb8, 0x743: 0xb8, 0x744: 0xb8, 0x745: 0xb8, 0x746: 0xb8, 0x747: 0xb8, + 0x748: 0xb8, 0x749: 0xb8, 0x74a: 0xb8, 0x74b: 0xb8, 0x74c: 0xb8, 0x74d: 0xb8, 0x74e: 0xb8, 0x74f: 0xb8, + 0x750: 0xb8, 0x751: 0xb8, 0x752: 0xb8, 0x753: 0xb8, 0x754: 0xb8, 0x755: 0xb8, 0x756: 0xb8, 0x757: 0xb8, + 0x758: 0xb8, 0x759: 0xb8, 0x75a: 0xb8, 0x75b: 0xb8, 0x75c: 0xb8, 0x75d: 0xb8, 0x75e: 0xb8, 0x75f: 0xb8, + 0x760: 0x74, 0x761: 0x75, 0x762: 0x76, 0x763: 0x175, 0x764: 0x77, 0x765: 0x78, 0x766: 0x176, 0x767: 0x79, + 0x768: 0x7a, 0x769: 0xb8, 0x76a: 0xb8, 0x76b: 0xb8, 0x76c: 0xb8, 0x76d: 0xb8, 0x76e: 0xb8, 0x76f: 0xb8, + 0x770: 0xb8, 0x771: 0xb8, 0x772: 0xb8, 0x773: 0xb8, 0x774: 0xb8, 0x775: 0xb8, 0x776: 0xb8, 0x777: 0xb8, + 0x778: 0xb8, 0x779: 0xb8, 0x77a: 0xb8, 0x77b: 0xb8, 0x77c: 0xb8, 0x77d: 0xb8, 0x77e: 0xb8, 0x77f: 0xb8, + // Block 0x1e, offset 0x780 + 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, + 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, + 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, + 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, + 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, + 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, + 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, + 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, + 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, + 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, + 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, + 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, + 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, + // Block 0x20, offset 0x800 + 0x800: 0x177, 0x801: 0x178, 0x802: 0xb8, 0x803: 0xb8, 0x804: 0x179, 0x805: 0x179, 0x806: 0x179, 0x807: 0x17a, + 0x808: 0xb8, 0x809: 0xb8, 0x80a: 0xb8, 0x80b: 0xb8, 0x80c: 0xb8, 0x80d: 0xb8, 0x80e: 0xb8, 0x80f: 0xb8, + 0x810: 0xb8, 0x811: 0xb8, 0x812: 0xb8, 0x813: 0xb8, 0x814: 0xb8, 0x815: 0xb8, 0x816: 0xb8, 0x817: 0xb8, + 0x818: 0xb8, 0x819: 0xb8, 0x81a: 0xb8, 0x81b: 0xb8, 0x81c: 0xb8, 0x81d: 0xb8, 0x81e: 0xb8, 0x81f: 0xb8, + 0x820: 0xb8, 0x821: 0xb8, 0x822: 0xb8, 0x823: 0xb8, 0x824: 0xb8, 0x825: 0xb8, 0x826: 0xb8, 0x827: 0xb8, + 0x828: 0xb8, 0x829: 0xb8, 0x82a: 0xb8, 0x82b: 0xb8, 0x82c: 0xb8, 0x82d: 0xb8, 0x82e: 0xb8, 0x82f: 0xb8, + 0x830: 0xb8, 0x831: 0xb8, 0x832: 0xb8, 0x833: 0xb8, 0x834: 0xb8, 0x835: 0xb8, 0x836: 0xb8, 0x837: 0xb8, + 0x838: 0xb8, 0x839: 0xb8, 0x83a: 0xb8, 0x83b: 0xb8, 0x83c: 0xb8, 0x83d: 0xb8, 0x83e: 0xb8, 0x83f: 0xb8, + // Block 0x21, offset 0x840 + 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, + 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, + 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, + 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, + 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, + 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, + 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, + 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, + // Block 0x22, offset 0x880 + 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, + 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, +} + +// idnaSparseOffset: 256 entries, 512 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x5c, 0x60, 0x6f, 0x74, 0x7b, 0x87, 0x95, 0xa3, 0xa8, 0xb1, 0xc1, 0xcf, 0xdc, 0xe8, 0xf9, 0x103, 0x10a, 0x117, 0x128, 0x12f, 0x13a, 0x149, 0x157, 0x161, 0x163, 0x167, 0x169, 0x175, 0x180, 0x188, 0x18e, 0x194, 0x199, 0x19e, 0x1a1, 0x1a5, 0x1ab, 0x1b0, 0x1bc, 0x1c6, 0x1cc, 0x1dd, 0x1e7, 0x1ea, 0x1f2, 0x1f5, 0x202, 0x20a, 0x20e, 0x215, 0x21d, 0x22d, 0x239, 0x23b, 0x245, 0x251, 0x25d, 0x269, 0x271, 0x276, 0x280, 0x291, 0x295, 0x2a0, 0x2a4, 0x2ad, 0x2b5, 0x2bb, 0x2c0, 0x2c3, 0x2c6, 0x2ca, 0x2d0, 0x2d4, 0x2d8, 0x2de, 0x2e5, 0x2eb, 0x2f3, 0x2fa, 0x305, 0x30f, 0x313, 0x316, 0x31c, 0x320, 0x322, 0x325, 0x327, 0x32a, 0x334, 0x337, 0x346, 0x34a, 0x34f, 0x352, 0x356, 0x35b, 0x360, 0x366, 0x36c, 0x37b, 0x381, 0x385, 0x394, 0x399, 0x3a1, 0x3ab, 0x3b6, 0x3be, 0x3cf, 0x3d8, 0x3e8, 0x3f5, 0x3ff, 0x404, 0x411, 0x415, 0x41a, 0x41c, 0x420, 0x422, 0x426, 0x42f, 0x435, 0x439, 0x449, 0x453, 0x458, 0x45b, 0x461, 0x468, 0x46d, 0x471, 0x477, 0x47c, 0x485, 0x48a, 0x490, 0x497, 0x49e, 0x4a5, 0x4a9, 0x4ae, 0x4b1, 0x4b6, 0x4c2, 0x4c8, 0x4cd, 0x4d4, 0x4dc, 0x4e1, 0x4e5, 0x4f5, 0x4fc, 0x500, 0x504, 0x50b, 0x50e, 0x511, 0x515, 0x519, 0x51f, 0x528, 0x534, 0x53b, 0x544, 0x54c, 0x553, 0x561, 0x56e, 0x57b, 0x584, 0x588, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5e5, 0x5ea, 0x5ed, 0x5f7, 0x600, 0x60c, 0x60f, 0x614, 0x617, 0x61a, 0x61d, 0x624, 0x62b, 0x62f, 0x63a, 0x63d, 0x643, 0x648, 0x64c, 0x64f, 0x652, 0x655, 0x65a, 0x664, 0x667, 0x66b, 0x67a, 0x686, 0x68a, 0x68f, 0x694, 0x698, 0x69d, 0x6a6, 0x6b1, 0x6b7, 0x6bf, 0x6c3, 0x6c7, 0x6cd, 0x6d3, 0x6d8, 0x6db, 0x6e9, 0x6f0, 0x6f3, 0x6f6, 0x6fa, 0x700, 0x705, 0x70f, 0x714, 0x717, 0x71a, 0x71d, 0x720, 0x724, 0x727, 0x737, 0x748, 0x74d, 0x74f, 0x751} + +// idnaSparseValues: 1876 entries, 7504 bytes +var idnaSparseValues = [1876]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x07}, + {value: 0xe105, lo: 0x80, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x97}, + {value: 0xe105, lo: 0x98, hi: 0x9e}, + {value: 0x001f, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbf}, + // Block 0x1, offset 0x8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0xe01d, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0335, lo: 0x83, hi: 0x83}, + {value: 0x034d, lo: 0x84, hi: 0x84}, + {value: 0x0365, lo: 0x85, hi: 0x85}, + {value: 0xe00d, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0xe00d, lo: 0x88, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x89}, + {value: 0xe00d, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe00d, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0x8d}, + {value: 0xe00d, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0xbf}, + // Block 0x2, offset 0x19 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0249, lo: 0xb0, hi: 0xb0}, + {value: 0x037d, lo: 0xb1, hi: 0xb1}, + {value: 0x0259, lo: 0xb2, hi: 0xb2}, + {value: 0x0269, lo: 0xb3, hi: 0xb3}, + {value: 0x034d, lo: 0xb4, hi: 0xb4}, + {value: 0x0395, lo: 0xb5, hi: 0xb5}, + {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, + {value: 0x0279, lo: 0xb7, hi: 0xb7}, + {value: 0x0289, lo: 0xb8, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbf}, + // Block 0x3, offset 0x25 + {value: 0x0000, lo: 0x01}, + {value: 0x1308, lo: 0x80, hi: 0xbf}, + // Block 0x4, offset 0x27 + {value: 0x0000, lo: 0x04}, + {value: 0x03f5, lo: 0x80, hi: 0x8f}, + {value: 0xe105, lo: 0x90, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x5, offset 0x2c + {value: 0x0000, lo: 0x07}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x0545, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x6, offset 0x34 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0401, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x88}, + {value: 0x0018, lo: 0x89, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x1308, lo: 0x91, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbe}, + {value: 0x1308, lo: 0xbf, hi: 0xbf}, + // Block 0x7, offset 0x3f + {value: 0x0000, lo: 0x0b}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x83}, + {value: 0x1308, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x1308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x8, offset 0x4b + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0208, lo: 0x81, hi: 0x87}, + {value: 0x0408, lo: 0x88, hi: 0x88}, + {value: 0x0208, lo: 0x89, hi: 0x8a}, + {value: 0x1308, lo: 0x8b, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xad}, + {value: 0x0208, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb0}, + {value: 0x0408, lo: 0xb1, hi: 0xb3}, + {value: 0x0008, lo: 0xb4, hi: 0xb4}, + {value: 0x0429, lo: 0xb5, hi: 0xb5}, + {value: 0x0451, lo: 0xb6, hi: 0xb6}, + {value: 0x0479, lo: 0xb7, hi: 0xb7}, + {value: 0x04a1, lo: 0xb8, hi: 0xb8}, + {value: 0x0208, lo: 0xb9, hi: 0xbf}, + // Block 0x9, offset 0x5c + {value: 0x0000, lo: 0x03}, + {value: 0x0208, lo: 0x80, hi: 0x87}, + {value: 0x0408, lo: 0x88, hi: 0x99}, + {value: 0x0208, lo: 0x9a, hi: 0xbf}, + // Block 0xa, offset 0x60 + {value: 0x0000, lo: 0x0e}, + {value: 0x1308, lo: 0x80, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0408, lo: 0x8d, hi: 0x8d}, + {value: 0x0208, lo: 0x8e, hi: 0x98}, + {value: 0x0408, lo: 0x99, hi: 0x9b}, + {value: 0x0208, lo: 0x9c, hi: 0xaa}, + {value: 0x0408, lo: 0xab, hi: 0xac}, + {value: 0x0208, lo: 0xad, hi: 0xb0}, + {value: 0x0408, lo: 0xb1, hi: 0xb1}, + {value: 0x0208, lo: 0xb2, hi: 0xb2}, + {value: 0x0408, lo: 0xb3, hi: 0xb4}, + {value: 0x0208, lo: 0xb5, hi: 0xb7}, + {value: 0x0408, lo: 0xb8, hi: 0xb9}, + {value: 0x0208, lo: 0xba, hi: 0xbf}, + // Block 0xb, offset 0x6f + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xc, offset 0x74 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0208, lo: 0x8a, hi: 0xaa}, + {value: 0x1308, lo: 0xab, hi: 0xb3}, + {value: 0x0008, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0xd, offset 0x7b + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x1308, lo: 0x96, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0xa3}, + {value: 0x0008, lo: 0xa4, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xa8}, + {value: 0x1308, lo: 0xa9, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xe, offset 0x87 + {value: 0x0000, lo: 0x0d}, + {value: 0x0408, lo: 0x80, hi: 0x80}, + {value: 0x0208, lo: 0x81, hi: 0x85}, + {value: 0x0408, lo: 0x86, hi: 0x87}, + {value: 0x0208, lo: 0x88, hi: 0x88}, + {value: 0x0408, lo: 0x89, hi: 0x89}, + {value: 0x0208, lo: 0x8a, hi: 0x93}, + {value: 0x0408, lo: 0x94, hi: 0x94}, + {value: 0x0208, lo: 0x95, hi: 0x95}, + {value: 0x0008, lo: 0x96, hi: 0x98}, + {value: 0x1308, lo: 0x99, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xf, offset 0x95 + {value: 0x0000, lo: 0x0d}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xa9}, + {value: 0x0408, lo: 0xaa, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0408, lo: 0xae, hi: 0xae}, + {value: 0x0208, lo: 0xaf, hi: 0xb0}, + {value: 0x0408, lo: 0xb1, hi: 0xb2}, + {value: 0x0208, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0208, lo: 0xb6, hi: 0xb8}, + {value: 0x0408, lo: 0xb9, hi: 0xb9}, + {value: 0x0208, lo: 0xba, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x10, offset 0xa3 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x93}, + {value: 0x1308, lo: 0x94, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x1308, lo: 0xa3, hi: 0xbf}, + // Block 0x11, offset 0xa8 + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb9}, + {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x12, offset 0xb1 + {value: 0x0000, lo: 0x0f}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x1008, lo: 0x81, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x85}, + {value: 0x1008, lo: 0x86, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x1008, lo: 0x8a, hi: 0x8c}, + {value: 0x1b08, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x96}, + {value: 0x1008, lo: 0x97, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x13, offset 0xc1 + {value: 0x0000, lo: 0x0d}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x1008, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x1308, lo: 0xbe, hi: 0xbf}, + // Block 0x14, offset 0xcf + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x15, offset 0xdc + {value: 0x0000, lo: 0x0b}, + {value: 0x0040, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x16, offset 0xe8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x89}, + {value: 0x1b08, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8e}, + {value: 0x1008, lo: 0x8f, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x95}, + {value: 0x1308, lo: 0x96, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x1008, lo: 0x98, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb1}, + {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x17, offset 0xf9 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xb0}, + {value: 0x1308, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb2}, + {value: 0x08f1, lo: 0xb3, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb9}, + {value: 0x1b08, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x18, offset 0x103 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x1308, lo: 0x87, hi: 0x8e}, + {value: 0x0018, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0xbf}, + // Block 0x19, offset 0x10a + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x1308, lo: 0x88, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0961, lo: 0x9c, hi: 0x9c}, + {value: 0x0999, lo: 0x9d, hi: 0x9d}, + {value: 0x0008, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1a, offset 0x117 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe03d, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x97}, + {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xb8}, + {value: 0x1308, lo: 0xb9, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x1b, offset 0x128 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0x1c, offset 0x12f + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x1008, lo: 0xab, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xb0}, + {value: 0x1008, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb7}, + {value: 0x1008, lo: 0xb8, hi: 0xb8}, + {value: 0x1b08, lo: 0xb9, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbc}, + {value: 0x1308, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x1d, offset 0x13a + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x1008, lo: 0x96, hi: 0x97}, + {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x1308, lo: 0x9e, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xa1}, + {value: 0x1008, lo: 0xa2, hi: 0xa4}, + {value: 0x0008, lo: 0xa5, hi: 0xa6}, + {value: 0x1008, lo: 0xa7, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x1308, lo: 0xb1, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xbf}, + // Block 0x1e, offset 0x149 + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x1008, lo: 0x87, hi: 0x8c}, + {value: 0x1308, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x8e}, + {value: 0x1008, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x1008, lo: 0x9a, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1f, offset 0x157 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x86}, + {value: 0x055d, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8c}, + {value: 0x055d, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0xe105, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0x20, offset 0x161 + {value: 0x0000, lo: 0x01}, + {value: 0x0018, lo: 0x80, hi: 0xbf}, + // Block 0x21, offset 0x163 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbf}, + // Block 0x22, offset 0x167 + {value: 0x0000, lo: 0x01}, + {value: 0x0008, lo: 0x80, hi: 0xbf}, + // Block 0x23, offset 0x169 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x24, offset 0x175 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x25, offset 0x180 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x26, offset 0x188 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x27, offset 0x18e + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x28, offset 0x194 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x29, offset 0x199 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x2a, offset 0x19e + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x2b, offset 0x1a1 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xbf}, + // Block 0x2c, offset 0x1a5 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2d, offset 0x1ab + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x2e, offset 0x1b0 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0x93}, + {value: 0x1b08, lo: 0x94, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x1b08, lo: 0xb4, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x2f, offset 0x1bc + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x30, offset 0x1c6 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xb3}, + {value: 0x1340, lo: 0xb4, hi: 0xb5}, + {value: 0x1008, lo: 0xb6, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x31, offset 0x1cc + {value: 0x0000, lo: 0x10}, + {value: 0x1008, lo: 0x80, hi: 0x85}, + {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x1008, lo: 0x87, hi: 0x88}, + {value: 0x1308, lo: 0x89, hi: 0x91}, + {value: 0x1b08, lo: 0x92, hi: 0x92}, + {value: 0x1308, lo: 0x93, hi: 0x93}, + {value: 0x0018, lo: 0x94, hi: 0x96}, + {value: 0x0008, lo: 0x97, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x32, offset 0x1dd + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x86}, + {value: 0x0218, lo: 0x87, hi: 0x87}, + {value: 0x0018, lo: 0x88, hi: 0x8a}, + {value: 0x13c0, lo: 0x8b, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xbf}, + // Block 0x33, offset 0x1e7 + {value: 0x0000, lo: 0x02}, + {value: 0x0208, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x34, offset 0x1ea + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x0208, lo: 0x87, hi: 0xa8}, + {value: 0x1308, lo: 0xa9, hi: 0xa9}, + {value: 0x0208, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x35, offset 0x1f2 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0x36, offset 0x1f5 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa6}, + {value: 0x1308, lo: 0xa7, hi: 0xa8}, + {value: 0x1008, lo: 0xa9, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb2}, + {value: 0x1008, lo: 0xb3, hi: 0xb8}, + {value: 0x1308, lo: 0xb9, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x37, offset 0x202 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x38, offset 0x20a + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x39, offset 0x20e + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0028, lo: 0x9a, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xbf}, + // Block 0x3a, offset 0x215 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x1308, lo: 0x97, hi: 0x98}, + {value: 0x1008, lo: 0x99, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x3b, offset 0x21d + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x94}, + {value: 0x1008, lo: 0x95, hi: 0x95}, + {value: 0x1308, lo: 0x96, hi: 0x96}, + {value: 0x1008, lo: 0x97, hi: 0x97}, + {value: 0x1308, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x1b08, lo: 0xa0, hi: 0xa0}, + {value: 0x1008, lo: 0xa1, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xac}, + {value: 0x1008, lo: 0xad, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x1308, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x22d + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xbd}, + {value: 0x1318, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x239 + {value: 0x0000, lo: 0x01}, + {value: 0x0040, lo: 0x80, hi: 0xbf}, + // Block 0x3e, offset 0x23b + {value: 0x0000, lo: 0x09}, + {value: 0x1308, lo: 0x80, hi: 0x83}, + {value: 0x1008, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x1008, lo: 0xb5, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x1008, lo: 0xbd, hi: 0xbf}, + // Block 0x3f, offset 0x245 + {value: 0x0000, lo: 0x0b}, + {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x1808, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xaa}, + {value: 0x1308, lo: 0xab, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x40, offset 0x251 + {value: 0x0000, lo: 0x0b}, + {value: 0x1308, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa0}, + {value: 0x1008, lo: 0xa1, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa5}, + {value: 0x1008, lo: 0xa6, hi: 0xa7}, + {value: 0x1308, lo: 0xa8, hi: 0xa9}, + {value: 0x1808, lo: 0xaa, hi: 0xaa}, + {value: 0x1b08, lo: 0xab, hi: 0xab}, + {value: 0x1308, lo: 0xac, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xbf}, + // Block 0x41, offset 0x25d + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xa6}, + {value: 0x1008, lo: 0xa7, hi: 0xa7}, + {value: 0x1308, lo: 0xa8, hi: 0xa9}, + {value: 0x1008, lo: 0xaa, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x1008, lo: 0xae, hi: 0xae}, + {value: 0x1308, lo: 0xaf, hi: 0xb1}, + {value: 0x1808, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x42, offset 0x269 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x1008, lo: 0xa4, hi: 0xab}, + {value: 0x1308, lo: 0xac, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x43, offset 0x271 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x44, offset 0x276 + {value: 0x0000, lo: 0x09}, + {value: 0x0e29, lo: 0x80, hi: 0x80}, + {value: 0x0e41, lo: 0x81, hi: 0x81}, + {value: 0x0e59, lo: 0x82, hi: 0x82}, + {value: 0x0e71, lo: 0x83, hi: 0x83}, + {value: 0x0e89, lo: 0x84, hi: 0x85}, + {value: 0x0ea1, lo: 0x86, hi: 0x86}, + {value: 0x0eb9, lo: 0x87, hi: 0x87}, + {value: 0x057d, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0x45, offset 0x280 + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x1308, lo: 0x90, hi: 0x92}, + {value: 0x0018, lo: 0x93, hi: 0x93}, + {value: 0x1308, lo: 0x94, hi: 0xa0}, + {value: 0x1008, lo: 0xa1, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa8}, + {value: 0x0008, lo: 0xa9, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb1}, + {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x46, offset 0x291 + {value: 0x0000, lo: 0x03}, + {value: 0x1308, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x1308, lo: 0xbb, hi: 0xbf}, + // Block 0x47, offset 0x295 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x87}, + {value: 0xe045, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0xe045, lo: 0x98, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0xe045, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbf}, + // Block 0x48, offset 0x2a0 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x1318, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbf}, + // Block 0x49, offset 0x2a4 + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x24c1, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x4a, offset 0x2ad + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x24f1, lo: 0xac, hi: 0xac}, + {value: 0x2529, lo: 0xad, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xae}, + {value: 0x2579, lo: 0xaf, hi: 0xaf}, + {value: 0x25b1, lo: 0xb0, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0x4b, offset 0x2b5 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x9f}, + {value: 0x0080, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xad}, + {value: 0x0080, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x4c, offset 0x2bb + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa8}, + {value: 0x09c5, lo: 0xa9, hi: 0xa9}, + {value: 0x09e5, lo: 0xaa, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xbf}, + // Block 0x4d, offset 0x2c0 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x4e, offset 0x2c3 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0x4f, offset 0x2c6 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x28c1, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0xbf}, + // Block 0x50, offset 0x2ca + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0e66, lo: 0xb4, hi: 0xb4}, + {value: 0x292a, lo: 0xb5, hi: 0xb5}, + {value: 0x0e86, lo: 0xb6, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x51, offset 0x2d0 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9b}, + {value: 0x2941, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0xbf}, + // Block 0x52, offset 0x2d4 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x53, offset 0x2d8 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0018, lo: 0xbd, hi: 0xbf}, + // Block 0x54, offset 0x2de + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xab}, + {value: 0x0018, lo: 0xac, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x55, offset 0x2e5 + {value: 0x0000, lo: 0x05}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x03f5, lo: 0x90, hi: 0x9f}, + {value: 0x0ea5, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x56, offset 0x2eb + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x57, offset 0x2f3 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xae}, + {value: 0xe075, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0x58, offset 0x2fa + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x59, offset 0x305 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xbf}, + // Block 0x5a, offset 0x30f + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x5b, offset 0x313 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0xbf}, + // Block 0x5c, offset 0x316 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9e}, + {value: 0x0edd, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x5d, offset 0x31c + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb2}, + {value: 0x0efd, lo: 0xb3, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x5e, offset 0x320 + {value: 0x0020, lo: 0x01}, + {value: 0x0f1d, lo: 0x80, hi: 0xbf}, + // Block 0x5f, offset 0x322 + {value: 0x0020, lo: 0x02}, + {value: 0x171d, lo: 0x80, hi: 0x8f}, + {value: 0x18fd, lo: 0x90, hi: 0xbf}, + // Block 0x60, offset 0x325 + {value: 0x0020, lo: 0x01}, + {value: 0x1efd, lo: 0x80, hi: 0xbf}, + // Block 0x61, offset 0x327 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x62, offset 0x32a + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x1308, lo: 0x99, hi: 0x9a}, + {value: 0x29e2, lo: 0x9b, hi: 0x9b}, + {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9e}, + {value: 0x2a31, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x63, offset 0x334 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbe}, + {value: 0x2a69, lo: 0xbf, hi: 0xbf}, + // Block 0x64, offset 0x337 + {value: 0x0000, lo: 0x0e}, + {value: 0x0040, lo: 0x80, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xb0}, + {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, + {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, + {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, + {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, + {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, + {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, + {value: 0x2abd, lo: 0xb7, hi: 0xb7}, + {value: 0x2add, lo: 0xb8, hi: 0xb9}, + {value: 0x2afd, lo: 0xba, hi: 0xbb}, + {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, + {value: 0x2afd, lo: 0xbe, hi: 0xbf}, + // Block 0x65, offset 0x346 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x66, offset 0x34a + {value: 0x0030, lo: 0x04}, + {value: 0x2aa2, lo: 0x80, hi: 0x9d}, + {value: 0x305a, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x30a2, lo: 0xa0, hi: 0xbf}, + // Block 0x67, offset 0x34f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x68, offset 0x352 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x69, offset 0x356 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x6a, offset 0x35b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0x6b, offset 0x360 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb1}, + {value: 0x0018, lo: 0xb2, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6c, offset 0x366 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb7}, + {value: 0x2009, lo: 0xb8, hi: 0xb8}, + {value: 0x6e89, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xbf}, + // Block 0x6d, offset 0x36c + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0x85}, + {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x1308, lo: 0x8b, hi: 0x8b}, + {value: 0x0008, lo: 0x8c, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa6}, + {value: 0x1008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x6e, offset 0x37b + {value: 0x0000, lo: 0x05}, + {value: 0x0208, lo: 0x80, hi: 0xb1}, + {value: 0x0108, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6f, offset 0x381 + {value: 0x0000, lo: 0x03}, + {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xbf}, + // Block 0x70, offset 0x385 + {value: 0x0000, lo: 0x0e}, + {value: 0x1008, lo: 0x80, hi: 0x83}, + {value: 0x1b08, lo: 0x84, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xba}, + {value: 0x0008, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x71, offset 0x394 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x72, offset 0x399 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x1308, lo: 0x87, hi: 0x91}, + {value: 0x1008, lo: 0x92, hi: 0x92}, + {value: 0x1808, lo: 0x93, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x73, offset 0x3a1 + {value: 0x0000, lo: 0x09}, + {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xb9}, + {value: 0x1008, lo: 0xba, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x1008, lo: 0xbd, hi: 0xbf}, + // Block 0x74, offset 0x3ab + {value: 0x0000, lo: 0x0a}, + {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x75, offset 0x3b6 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa8}, + {value: 0x1308, lo: 0xa9, hi: 0xae}, + {value: 0x1008, lo: 0xaf, hi: 0xb0}, + {value: 0x1308, lo: 0xb1, hi: 0xb2}, + {value: 0x1008, lo: 0xb3, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x76, offset 0x3be + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x82}, + {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x8b}, + {value: 0x1308, lo: 0x8c, hi: 0x8c}, + {value: 0x1008, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x1008, lo: 0xbd, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0x77, offset 0x3cf + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbd}, + {value: 0x1308, lo: 0xbe, hi: 0xbf}, + // Block 0x78, offset 0x3d8 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x9a}, + {value: 0x0008, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xaa}, + {value: 0x1008, lo: 0xab, hi: 0xab}, + {value: 0x1308, lo: 0xac, hi: 0xad}, + {value: 0x1008, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb4}, + {value: 0x1008, lo: 0xb5, hi: 0xb5}, + {value: 0x1b08, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x79, offset 0x3e8 + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x90}, + {value: 0x0008, lo: 0x91, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x7a, offset 0x3f5 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x4465, lo: 0x9c, hi: 0x9c}, + {value: 0x447d, lo: 0x9d, hi: 0x9d}, + {value: 0x2971, lo: 0x9e, hi: 0x9e}, + {value: 0xe06d, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xaf}, + {value: 0x4495, lo: 0xb0, hi: 0xbf}, + // Block 0x7b, offset 0x3ff + {value: 0x0000, lo: 0x04}, + {value: 0x44b5, lo: 0x80, hi: 0x8f}, + {value: 0x44d5, lo: 0x90, hi: 0x9f}, + {value: 0x44f5, lo: 0xa0, hi: 0xaf}, + {value: 0x44d5, lo: 0xb0, hi: 0xbf}, + // Block 0x7c, offset 0x404 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa5}, + {value: 0x1008, lo: 0xa6, hi: 0xa7}, + {value: 0x1308, lo: 0xa8, hi: 0xa8}, + {value: 0x1008, lo: 0xa9, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xac}, + {value: 0x1b08, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x7d, offset 0x411 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x7e, offset 0x415 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x7f, offset 0x41a + {value: 0x0020, lo: 0x01}, + {value: 0x4515, lo: 0x80, hi: 0xbf}, + // Block 0x80, offset 0x41c + {value: 0x0020, lo: 0x03}, + {value: 0x4d15, lo: 0x80, hi: 0x94}, + {value: 0x4ad5, lo: 0x95, hi: 0x95}, + {value: 0x4fb5, lo: 0x96, hi: 0xbf}, + // Block 0x81, offset 0x420 + {value: 0x0020, lo: 0x01}, + {value: 0x54f5, lo: 0x80, hi: 0xbf}, + // Block 0x82, offset 0x422 + {value: 0x0020, lo: 0x03}, + {value: 0x5cf5, lo: 0x80, hi: 0x84}, + {value: 0x5655, lo: 0x85, hi: 0x85}, + {value: 0x5d95, lo: 0x86, hi: 0xbf}, + // Block 0x83, offset 0x426 + {value: 0x0020, lo: 0x08}, + {value: 0x6b55, lo: 0x80, hi: 0x8f}, + {value: 0x6d15, lo: 0x90, hi: 0x90}, + {value: 0x6d55, lo: 0x91, hi: 0xab}, + {value: 0x6ea1, lo: 0xac, hi: 0xac}, + {value: 0x70b5, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x70d5, lo: 0xb0, hi: 0xbf}, + // Block 0x84, offset 0x42f + {value: 0x0020, lo: 0x05}, + {value: 0x72d5, lo: 0x80, hi: 0xad}, + {value: 0x6535, lo: 0xae, hi: 0xae}, + {value: 0x7895, lo: 0xaf, hi: 0xb5}, + {value: 0x6f55, lo: 0xb6, hi: 0xb6}, + {value: 0x7975, lo: 0xb7, hi: 0xbf}, + // Block 0x85, offset 0x435 + {value: 0x0028, lo: 0x03}, + {value: 0x7c21, lo: 0x80, hi: 0x82}, + {value: 0x7be1, lo: 0x83, hi: 0x83}, + {value: 0x7c99, lo: 0x84, hi: 0xbf}, + // Block 0x86, offset 0x439 + {value: 0x0038, lo: 0x0f}, + {value: 0x9db1, lo: 0x80, hi: 0x83}, + {value: 0x9e59, lo: 0x84, hi: 0x85}, + {value: 0x9e91, lo: 0x86, hi: 0x87}, + {value: 0x9ec9, lo: 0x88, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0xa089, lo: 0x92, hi: 0x97}, + {value: 0xa1a1, lo: 0x98, hi: 0x9c}, + {value: 0xa281, lo: 0x9d, hi: 0xb3}, + {value: 0x9d41, lo: 0xb4, hi: 0xb4}, + {value: 0x9db1, lo: 0xb5, hi: 0xb5}, + {value: 0xa789, lo: 0xb6, hi: 0xbb}, + {value: 0xa869, lo: 0xbc, hi: 0xbc}, + {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, + {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, + // Block 0x87, offset 0x449 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x88, offset 0x453 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0x89, offset 0x458 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x8a, offset 0x45b + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x8b, offset 0x461 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x8c, offset 0x468 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbc}, + {value: 0x1308, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x8d, offset 0x46d + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x8e, offset 0x471 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x8f, offset 0x477 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x90, offset 0x47c + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x91, offset 0x485 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x92, offset 0x48a + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x93, offset 0x490 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x97}, + {value: 0x8ad5, lo: 0x98, hi: 0x9f}, + {value: 0x8aed, lo: 0xa0, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xbf}, + // Block 0x94, offset 0x497 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x8aed, lo: 0xb0, hi: 0xb7}, + {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, + // Block 0x95, offset 0x49e + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x96, offset 0x4a5 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x97, offset 0x4a9 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xae}, + {value: 0x0018, lo: 0xaf, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x98, offset 0x4ae + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x99, offset 0x4b1 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xbf}, + // Block 0x9a, offset 0x4b6 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x9b, offset 0x4c2 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x9c, offset 0x4c8 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa6}, + {value: 0x0018, lo: 0xa7, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x9d, offset 0x4cd + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb3}, + {value: 0x0008, lo: 0xb4, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x9e, offset 0x4d4 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0018, lo: 0x96, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x9f, offset 0x4dc + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0xa0, offset 0x4e1 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xbf}, + // Block 0xa1, offset 0x4e5 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8b}, + {value: 0x1308, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x94}, + {value: 0x0008, lo: 0x95, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa2, offset 0x4f5 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbc}, + {value: 0x0018, lo: 0xbd, hi: 0xbf}, + // Block 0xa3, offset 0x4fc + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xa4, offset 0x500 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb8}, + {value: 0x0018, lo: 0xb9, hi: 0xbf}, + // Block 0xa5, offset 0x504 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbf}, + // Block 0xa6, offset 0x50b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0xa7, offset 0x50e + {value: 0x0000, lo: 0x02}, + {value: 0x03dd, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xa8, offset 0x511 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xa9, offset 0x515 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xaa, offset 0x519 + {value: 0x0000, lo: 0x05}, + {value: 0x1008, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x51f + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x85}, + {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xac, offset 0x528 + {value: 0x0000, lo: 0x0b}, + {value: 0x1308, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb6}, + {value: 0x1008, lo: 0xb7, hi: 0xb8}, + {value: 0x1b08, lo: 0xb9, hi: 0xb9}, + {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbc}, + {value: 0x0340, lo: 0xbd, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0xad, offset 0x534 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xae, offset 0x53b + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa6}, + {value: 0x1308, lo: 0xa7, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xb2}, + {value: 0x1b08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xbf}, + // Block 0xaf, offset 0x544 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xb0, offset 0x54c + {value: 0x0000, lo: 0x06}, + {value: 0x1308, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb2}, + {value: 0x1008, lo: 0xb3, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xbe}, + {value: 0x1008, lo: 0xbf, hi: 0xbf}, + // Block 0xb1, offset 0x553 + {value: 0x0000, lo: 0x0d}, + {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x89}, + {value: 0x1308, lo: 0x8a, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xb2, offset 0x561 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xae}, + {value: 0x1308, lo: 0xaf, hi: 0xb1}, + {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x1808, lo: 0xb5, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbd}, + {value: 0x1308, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x56e + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0008, lo: 0x9f, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xb4, offset 0x57b + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x1308, lo: 0x9f, hi: 0x9f}, + {value: 0x1008, lo: 0xa0, hi: 0xa2}, + {value: 0x1308, lo: 0xa3, hi: 0xa9}, + {value: 0x1b08, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb5, offset 0x584 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x1008, lo: 0xb5, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xbf}, + // Block 0xb6, offset 0x588 + {value: 0x0000, lo: 0x0d}, + {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x1b08, lo: 0x82, hi: 0x82}, + {value: 0x1308, lo: 0x83, hi: 0x84}, + {value: 0x1008, lo: 0x85, hi: 0x85}, + {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xb7, offset 0x596 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb8}, + {value: 0x1008, lo: 0xb9, hi: 0xb9}, + {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbe}, + {value: 0x1308, lo: 0xbf, hi: 0xbf}, + // Block 0xb8, offset 0x59e + {value: 0x0000, lo: 0x0a}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x1008, lo: 0x81, hi: 0x81}, + {value: 0x1b08, lo: 0x82, hi: 0x82}, + {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xb9, offset 0x5a9 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x1008, lo: 0xaf, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x1008, lo: 0xb8, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xba, offset 0x5b2 + {value: 0x0000, lo: 0x05}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9b}, + {value: 0x1308, lo: 0x9c, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xbb, offset 0x5b8 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbc}, + {value: 0x1308, lo: 0xbd, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbc, offset 0x5c0 + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xbd, offset 0x5c9 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x1308, lo: 0xab, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x1008, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb5}, + {value: 0x1808, lo: 0xb6, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0xbe, offset 0x5d3 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0xbf, offset 0x5d6 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9f}, + {value: 0x1008, lo: 0xa0, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa5}, + {value: 0x1008, lo: 0xa6, hi: 0xa6}, + {value: 0x1308, lo: 0xa7, hi: 0xaa}, + {value: 0x1b08, lo: 0xab, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xc0, offset 0x5e2 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xbf}, + // Block 0xc1, offset 0x5e5 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0xc2, offset 0x5ea + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xc3, offset 0x5ed + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xae}, + {value: 0x1008, lo: 0xaf, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xc4, offset 0x5f7 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xbf}, + // Block 0xc5, offset 0x600 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xa8}, + {value: 0x1008, lo: 0xa9, hi: 0xa9}, + {value: 0x1308, lo: 0xaa, hi: 0xb0}, + {value: 0x1008, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xc6, offset 0x60c + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xc7, offset 0x60f + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xc8, offset 0x614 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0xbf}, + // Block 0xc9, offset 0x617 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xbf}, + // Block 0xca, offset 0x61a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0xbf}, + // Block 0xcb, offset 0x61d + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xcc, offset 0x624 + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xcd, offset 0x62b + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0xce, offset 0x62f + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x0008, lo: 0xa3, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0xcf, offset 0x63a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0xbf}, + // Block 0xd0, offset 0x63d + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x1008, lo: 0x91, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd1, offset 0x643 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8e}, + {value: 0x1308, lo: 0x8f, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xd2, offset 0x648 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0xd3, offset 0x64c + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xd4, offset 0x64f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xd5, offset 0x652 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0xbf}, + // Block 0xd6, offset 0x655 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0xd7, offset 0x65a + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x03c0, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xbf}, + // Block 0xd8, offset 0x664 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xd9, offset 0x667 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xbf}, + // Block 0xda, offset 0x66b + {value: 0x0000, lo: 0x0e}, + {value: 0x0018, lo: 0x80, hi: 0x9d}, + {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, + {value: 0xb601, lo: 0x9f, hi: 0x9f}, + {value: 0xb649, lo: 0xa0, hi: 0xa0}, + {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, + {value: 0xb719, lo: 0xa2, hi: 0xa2}, + {value: 0xb781, lo: 0xa3, hi: 0xa3}, + {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, + {value: 0x1018, lo: 0xa5, hi: 0xa6}, + {value: 0x1318, lo: 0xa7, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xac}, + {value: 0x1018, lo: 0xad, hi: 0xb2}, + {value: 0x0340, lo: 0xb3, hi: 0xba}, + {value: 0x1318, lo: 0xbb, hi: 0xbf}, + // Block 0xdb, offset 0x67a + {value: 0x0000, lo: 0x0b}, + {value: 0x1318, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x84}, + {value: 0x1318, lo: 0x85, hi: 0x8b}, + {value: 0x0018, lo: 0x8c, hi: 0xa9}, + {value: 0x1318, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xba}, + {value: 0xb851, lo: 0xbb, hi: 0xbb}, + {value: 0xb899, lo: 0xbc, hi: 0xbc}, + {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, + {value: 0xb949, lo: 0xbe, hi: 0xbe}, + {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, + // Block 0xdc, offset 0x686 + {value: 0x0000, lo: 0x03}, + {value: 0xba19, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xbf}, + // Block 0xdd, offset 0x68a + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x1318, lo: 0x82, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0xbf}, + // Block 0xde, offset 0x68f + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xdf, offset 0x694 + {value: 0x0000, lo: 0x03}, + {value: 0x1308, lo: 0x80, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xba}, + {value: 0x1308, lo: 0xbb, hi: 0xbf}, + // Block 0xe0, offset 0x698 + {value: 0x0000, lo: 0x04}, + {value: 0x1308, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0xe1, offset 0x69d + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x1308, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x1308, lo: 0xa1, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xe2, offset 0x6a6 + {value: 0x0000, lo: 0x0a}, + {value: 0x1308, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x1308, lo: 0x88, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x1308, lo: 0xa3, hi: 0xa4}, + {value: 0x0040, lo: 0xa5, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0xe3, offset 0x6b1 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8f}, + {value: 0x1308, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xe4, offset 0x6b7 + {value: 0x0000, lo: 0x07}, + {value: 0x0208, lo: 0x80, hi: 0x83}, + {value: 0x1308, lo: 0x84, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xe5, offset 0x6bf + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe6, offset 0x6c3 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0xe7, offset 0x6c7 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0xe8, offset 0x6cd + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xe9, offset 0x6d3 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0xc1c1, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xea, offset 0x6d8 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xbf}, + // Block 0xeb, offset 0x6db + {value: 0x0000, lo: 0x0d}, + {value: 0xc7e9, lo: 0x80, hi: 0x80}, + {value: 0xc839, lo: 0x81, hi: 0x81}, + {value: 0xc889, lo: 0x82, hi: 0x82}, + {value: 0xc8d9, lo: 0x83, hi: 0x83}, + {value: 0xc929, lo: 0x84, hi: 0x84}, + {value: 0xc979, lo: 0x85, hi: 0x85}, + {value: 0xc9c9, lo: 0x86, hi: 0x86}, + {value: 0xca19, lo: 0x87, hi: 0x87}, + {value: 0xca69, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0xcab9, lo: 0x90, hi: 0x90}, + {value: 0xcad9, lo: 0x91, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xec, offset 0x6e9 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x92}, + {value: 0x0040, lo: 0x93, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xed, offset 0x6f0 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0xee, offset 0x6f3 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0xbf}, + // Block 0xef, offset 0x6f6 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0xf0, offset 0x6fa + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0xf1, offset 0x700 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0xf2, offset 0x705 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb2}, + {value: 0x0018, lo: 0xb3, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xf3, offset 0x70f + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xf4, offset 0x714 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xf5, offset 0x717 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0xbf}, + // Block 0xf6, offset 0x71a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xf7, offset 0x71d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xf8, offset 0x720 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0xf9, offset 0x724 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xfa, offset 0x727 + {value: 0x0020, lo: 0x0f}, + {value: 0xdeb9, lo: 0x80, hi: 0x89}, + {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, + {value: 0xdff9, lo: 0x8b, hi: 0x9c}, + {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, + {value: 0xe239, lo: 0x9e, hi: 0xa2}, + {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, + {value: 0xe2d9, lo: 0xa4, hi: 0xab}, + {value: 0x7ed5, lo: 0xac, hi: 0xac}, + {value: 0xe3d9, lo: 0xad, hi: 0xaf}, + {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, + {value: 0xe439, lo: 0xb1, hi: 0xb6}, + {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, + {value: 0xe4f9, lo: 0xba, hi: 0xba}, + {value: 0x8edd, lo: 0xbb, hi: 0xbb}, + {value: 0xe519, lo: 0xbc, hi: 0xbf}, + // Block 0xfb, offset 0x737 + {value: 0x0020, lo: 0x10}, + {value: 0x937d, lo: 0x80, hi: 0x80}, + {value: 0xf099, lo: 0x81, hi: 0x86}, + {value: 0x939d, lo: 0x87, hi: 0x8a}, + {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, + {value: 0xf159, lo: 0x8c, hi: 0x96}, + {value: 0x941d, lo: 0x97, hi: 0x97}, + {value: 0xf2b9, lo: 0x98, hi: 0xa3}, + {value: 0x943d, lo: 0xa4, hi: 0xa6}, + {value: 0xf439, lo: 0xa7, hi: 0xaa}, + {value: 0x949d, lo: 0xab, hi: 0xab}, + {value: 0xf4b9, lo: 0xac, hi: 0xac}, + {value: 0x94bd, lo: 0xad, hi: 0xad}, + {value: 0xf4d9, lo: 0xae, hi: 0xaf}, + {value: 0x94dd, lo: 0xb0, hi: 0xb1}, + {value: 0xf519, lo: 0xb2, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xfc, offset 0x748 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0340, lo: 0x81, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x9f}, + {value: 0x0340, lo: 0xa0, hi: 0xbf}, + // Block 0xfd, offset 0x74d + {value: 0x0000, lo: 0x01}, + {value: 0x0340, lo: 0x80, hi: 0xbf}, + // Block 0xfe, offset 0x74f + {value: 0x0000, lo: 0x01}, + {value: 0x13c0, lo: 0x80, hi: 0xbf}, + // Block 0xff, offset 0x751 + {value: 0x0000, lo: 0x02}, + {value: 0x13c0, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, +} + +// Total table size 41559 bytes (40KiB); checksum: F4A1FA4E diff --git a/vendor/golang.org/x/net/idna/trie.go b/vendor/golang.org/x/net/idna/trie.go new file mode 100644 index 0000000000..c4ef847e7a --- /dev/null +++ b/vendor/golang.org/x/net/idna/trie.go @@ -0,0 +1,72 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// 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 idna + +// appendMapping appends the mapping for the respective rune. isMapped must be +// true. A mapping is a categorization of a rune as defined in UTS #46. +func (c info) appendMapping(b []byte, s string) []byte { + index := int(c >> indexShift) + if c&xorBit == 0 { + s := mappings[index:] + return append(b, s[1:s[0]+1]...) + } + b = append(b, s...) + if c&inlineXOR == inlineXOR { + // TODO: support and handle two-byte inline masks + b[len(b)-1] ^= byte(index) + } else { + for p := len(b) - int(xorData[index]); p < len(b); p++ { + index++ + b[p] ^= xorData[index] + } + } + return b +} + +// Sparse block handling code. + +type valueRange struct { + value uint16 // header: value:stride + lo, hi byte // header: lo:n +} + +type sparseBlocks struct { + values []valueRange + offset []uint16 +} + +var idnaSparse = sparseBlocks{ + values: idnaSparseValues[:], + offset: idnaSparseOffset[:], +} + +// Don't use newIdnaTrie to avoid unconditional linking in of the table. +var trie = &idnaTrie{} + +// lookup 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/net/idna/trieval.go b/vendor/golang.org/x/net/idna/trieval.go new file mode 100644 index 0000000000..63cb03b59b --- /dev/null +++ b/vendor/golang.org/x/net/idna/trieval.go @@ -0,0 +1,114 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package idna + +// This file contains definitions for interpreting the trie value of the idna +// 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 information from the IDNA mapping table for a single rune. It is +// the value returned by a trie lookup. In most cases, all information fits in +// a 16-bit value. For mappings, this value may contain an index into a slice +// with the mapped string. Such mappings can consist of the actual mapped value +// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the +// input rune. This technique is used by the cases packages and reduces the +// table size significantly. +// +// The per-rune values have the following format: +// +// if mapped { +// if inlinedXOR { +// 15..13 inline XOR marker +// 12..11 unused +// 10..3 inline XOR mask +// } else { +// 15..3 index into xor or mapping table +// } +// } else { +// 15..13 unused +// 12 modifier (including virama) +// 11 virama modifier +// 10..8 joining type +// 7..3 category type +// } +// 2 use xor pattern +// 1..0 mapped category +// +// See the definitions below for a more detailed description of the various +// bits. +type info uint16 + +const ( + catSmallMask = 0x3 + catBigMask = 0xF8 + indexShift = 3 + xorBit = 0x4 // interpret the index as an xor pattern + inlineXOR = 0xE000 // These bits are set if the XOR pattern is inlined. + + joinShift = 8 + joinMask = 0x07 + + viramaModifier = 0x0800 + modifier = 0x1000 +) + +// A category corresponds to a category defined in the IDNA mapping table. +type category uint16 + +const ( + unknown category = 0 // not defined currently in unicode. + mapped category = 1 + disallowedSTD3Mapped category = 2 + deviation category = 3 +) + +const ( + valid category = 0x08 + validNV8 category = 0x18 + validXV8 category = 0x28 + disallowed category = 0x40 + disallowedSTD3Valid category = 0x80 + ignored category = 0xC0 +) + +// join types and additional rune information +const ( + joiningL = (iota + 1) + joiningD + joiningT + joiningR + + //the following types are derived during processing + joinZWJ + joinZWNJ + joinVirama + numJoinTypes +) + +func (c info) isMapped() bool { + return c&0x3 != 0 +} + +func (c info) category() category { + small := c & catSmallMask + if small != 0 { + return category(small) + } + return category(c & catBigMask) +} + +func (c info) joinType() info { + if c.isMapped() { + return 0 + } + return (c >> joinShift) & joinMask +} + +func (c info) isModifier() bool { + return c&(modifier|catSmallMask) == modifier +} + +func (c info) isViramaModifier() bool { + return c&(viramaModifier|catSmallMask) == viramaModifier +} diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go index 3438a27c8d..c9df24d95f 100644 --- a/vendor/golang.org/x/net/internal/iana/const.go +++ b/vendor/golang.org/x/net/internal/iana/const.go @@ -4,7 +4,7 @@ // Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). package iana // import "golang.org/x/net/internal/iana" -// Differentiated Services Field Codepoints (DSCP), Updated: 2013-06-25 +// Differentiated Services Field Codepoints (DSCP), Updated: 2017-05-12 const ( DiffServCS0 = 0x0 // CS0 DiffServCS1 = 0x20 // CS1 @@ -26,7 +26,7 @@ const ( DiffServAF41 = 0x88 // AF41 DiffServAF42 = 0x90 // AF42 DiffServAF43 = 0x98 // AF43 - DiffServEFPHB = 0xb8 // EF PHB + DiffServEF = 0xb8 // EF DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT ) @@ -38,7 +38,7 @@ const ( CongestionExperienced = 0x3 // CE (Congestion Experienced) ) -// Protocol Numbers, Updated: 2015-10-06 +// Protocol Numbers, Updated: 2016-06-22 const ( ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option diff --git a/vendor/golang.org/x/net/internal/netreflect/socket.go b/vendor/golang.org/x/net/internal/netreflect/socket.go deleted file mode 100644 index e82e51c447..0000000000 --- a/vendor/golang.org/x/net/internal/netreflect/socket.go +++ /dev/null @@ -1,37 +0,0 @@ -// 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 netreflect implements run-time reflection for the -// facilities of net package. -package netreflect - -import ( - "errors" - "net" -) - -var ( - errInvalidType = errors.New("invalid type") - errOpNoSupport = errors.New("operation not supported") -) - -// SocketOf returns the socket descriptor of c. -func SocketOf(c net.Conn) (uintptr, error) { - switch c.(type) { - case *net.TCPConn, *net.UDPConn, *net.IPConn, *net.UnixConn: - return socketOf(c) - default: - return 0, errInvalidType - } -} - -// PacketSocketOf returns the socket descriptor of c. -func PacketSocketOf(c net.PacketConn) (uintptr, error) { - switch c.(type) { - case *net.UDPConn, *net.IPConn, *net.UnixConn: - return socketOf(c.(net.Conn)) - default: - return 0, errInvalidType - } -} diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_posix.go b/vendor/golang.org/x/net/internal/netreflect/socket_posix.go deleted file mode 100644 index df475a2b22..0000000000 --- a/vendor/golang.org/x/net/internal/netreflect/socket_posix.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package netreflect - -import ( - "net" - "reflect" - "runtime" -) - -func socketOf(c net.Conn) (uintptr, error) { - v := reflect.ValueOf(c) - switch e := v.Elem(); e.Kind() { - case reflect.Struct: - fd := e.FieldByName("conn").FieldByName("fd") - switch e := fd.Elem(); e.Kind() { - case reflect.Struct: - sysfd := e.FieldByName("sysfd") - if runtime.GOOS == "windows" { - return uintptr(sysfd.Uint()), nil - } - return uintptr(sysfd.Int()), nil - } - } - return 0, errInvalidType -} diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_stub.go b/vendor/golang.org/x/net/internal/netreflect/socket_stub.go deleted file mode 100644 index 85adb4b7f4..0000000000 --- a/vendor/golang.org/x/net/internal/netreflect/socket_stub.go +++ /dev/null @@ -1,11 +0,0 @@ -// 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package netreflect - -import "net" - -func socketOf(c net.Conn) (uintptr, error) { return 0, errOpNoSupport } diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_test.go b/vendor/golang.org/x/net/internal/netreflect/socket_test.go deleted file mode 100644 index 49b97ed540..0000000000 --- a/vendor/golang.org/x/net/internal/netreflect/socket_test.go +++ /dev/null @@ -1,62 +0,0 @@ -// 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 netreflect_test - -import ( - "net" - "os" - "testing" - - "golang.org/x/net/internal/netreflect" - "golang.org/x/net/internal/nettest" -) - -func TestSocketOf(t *testing.T) { - for _, network := range []string{"tcp", "unix", "unixpacket"} { - if !nettest.TestableNetwork(network) { - continue - } - ln, err := nettest.NewLocalListener(network) - if err != nil { - t.Error(err) - continue - } - defer func() { - path := ln.Addr().String() - ln.Close() - if network == "unix" || network == "unixpacket" { - os.Remove(path) - } - }() - c, err := net.Dial(ln.Addr().Network(), ln.Addr().String()) - if err != nil { - t.Error(err) - continue - } - defer c.Close() - if _, err := netreflect.SocketOf(c); err != nil { - t.Error(err) - continue - } - } -} - -func TestPacketSocketOf(t *testing.T) { - for _, network := range []string{"udp", "unixgram"} { - if !nettest.TestableNetwork(network) { - continue - } - c, err := nettest.NewLocalPacketListener(network) - if err != nil { - t.Error(err) - continue - } - defer c.Close() - if _, err := netreflect.PacketSocketOf(c); err != nil { - t.Error(err) - continue - } - } -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr.go b/vendor/golang.org/x/net/internal/socket/cmsghdr.go new file mode 100644 index 0000000000..1eb07d26de --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr.go @@ -0,0 +1,11 @@ +// Copyright 2017 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 darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +func (h *cmsghdr) len() int { return int(h.Len) } +func (h *cmsghdr) lvl() int { return int(h.Level) } +func (h *cmsghdr) typ() int { return int(h.Type) } diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go new file mode 100644 index 0000000000..d1d0c2de54 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go @@ -0,0 +1,13 @@ +// Copyright 2017 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 darwin dragonfly freebsd netbsd openbsd + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go new file mode 100644 index 0000000000..bac66811dd --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 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 arm mips mipsle 386 +// +build linux + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go new file mode 100644 index 0000000000..63f0534fa7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 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 arm64 amd64 ppc64 ppc64le mips64 mips64le s390x +// +build linux + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint64(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go new file mode 100644 index 0000000000..7dedd430eb --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 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 amd64 +// +build solaris + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go new file mode 100644 index 0000000000..a4e71226f8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go @@ -0,0 +1,17 @@ +// Copyright 2017 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type cmsghdr struct{} + +const sizeofCmsghdr = 0 + +func (h *cmsghdr) len() int { return 0 } +func (h *cmsghdr) lvl() int { return 0 } +func (h *cmsghdr) typ() int { return 0 } + +func (h *cmsghdr) set(l, lvl, typ int) {} diff --git a/vendor/golang.org/x/net/internal/socket/defs_darwin.go b/vendor/golang.org/x/net/internal/socket/defs_darwin.go new file mode 100644 index 0000000000..14e28c0b45 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_darwin.go @@ -0,0 +1,44 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go new file mode 100644 index 0000000000..14e28c0b45 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go @@ -0,0 +1,44 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go new file mode 100644 index 0000000000..14e28c0b45 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go @@ -0,0 +1,44 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_linux.go b/vendor/golang.org/x/net/internal/socket/defs_linux.go new file mode 100644 index 0000000000..ce9ec2f6d7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_linux.go @@ -0,0 +1,49 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include +#include + +#define _GNU_SOURCE +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofMmsghdr = C.sizeof_struct_mmsghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go new file mode 100644 index 0000000000..3f84335699 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go @@ -0,0 +1,47 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofMmsghdr = C.sizeof_struct_mmsghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go new file mode 100644 index 0000000000..14e28c0b45 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go @@ -0,0 +1,44 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_solaris.go b/vendor/golang.org/x/net/internal/socket/defs_solaris.go new file mode 100644 index 0000000000..14e28c0b45 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_solaris.go @@ -0,0 +1,44 @@ +// Copyright 2017 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 + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +const ( + sysAF_UNSPEC = C.AF_UNSPEC + sysAF_INET = C.AF_INET + sysAF_INET6 = C.AF_INET6 + + sysSOCK_RAW = C.SOCK_RAW +) + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/error_unix.go b/vendor/golang.org/x/net/internal/socket/error_unix.go new file mode 100644 index 0000000000..93dff91802 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/error_unix.go @@ -0,0 +1,31 @@ +// Copyright 2017 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 darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +import "syscall" + +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +// errnoErr returns common boxed Errno values, to prevent allocations +// at runtime. +func errnoErr(errno syscall.Errno) error { + switch errno { + case 0: + return nil + case syscall.EAGAIN: + return errEAGAIN + case syscall.EINVAL: + return errEINVAL + case syscall.ENOENT: + return errENOENT + } + return errno +} diff --git a/vendor/golang.org/x/net/internal/socket/error_windows.go b/vendor/golang.org/x/net/internal/socket/error_windows.go new file mode 100644 index 0000000000..6a6379a8b0 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/error_windows.go @@ -0,0 +1,26 @@ +// Copyright 2017 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 socket + +import "syscall" + +var ( + errERROR_IO_PENDING error = syscall.ERROR_IO_PENDING + errEINVAL error = syscall.EINVAL +) + +// errnoErr returns common boxed Errno values, to prevent allocations +// at runtime. +func errnoErr(errno syscall.Errno) error { + switch errno { + case 0: + return nil + case syscall.ERROR_IO_PENDING: + return errERROR_IO_PENDING + case syscall.EINVAL: + return errEINVAL + } + return errno +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go new file mode 100644 index 0000000000..d6a570c900 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go @@ -0,0 +1,15 @@ +// Copyright 2017 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 arm mips mipsle 386 +// +build darwin dragonfly freebsd linux netbsd openbsd + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + v.Base = (*byte)(unsafe.Pointer(&b[0])) + v.Len = uint32(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go new file mode 100644 index 0000000000..2ae435e64c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go @@ -0,0 +1,15 @@ +// Copyright 2017 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 arm64 amd64 ppc64 ppc64le mips64 mips64le s390x +// +build darwin dragonfly freebsd linux netbsd openbsd + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + v.Base = (*byte)(unsafe.Pointer(&b[0])) + v.Len = uint64(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go new file mode 100644 index 0000000000..100a62820f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go @@ -0,0 +1,15 @@ +// Copyright 2017 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 amd64 +// +build solaris + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + v.Base = (*int8)(unsafe.Pointer(&b[0])) + v.Len = uint64(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_stub.go b/vendor/golang.org/x/net/internal/socket/iovec_stub.go new file mode 100644 index 0000000000..c87d2a9339 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_stub.go @@ -0,0 +1,11 @@ +// Copyright 2017 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type iovec struct{} + +func (v *iovec) set(b []byte) {} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go new file mode 100644 index 0000000000..2e80a9cb74 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go @@ -0,0 +1,21 @@ +// Copyright 2017 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 !linux,!netbsd + +package socket + +import "net" + +type mmsghdr struct{} + +type mmsghdrs []mmsghdr + +func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { + return nil +} + +func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go new file mode 100644 index 0000000000..3c42ea7ad8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go @@ -0,0 +1,42 @@ +// Copyright 2017 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 linux netbsd + +package socket + +import "net" + +type mmsghdrs []mmsghdr + +func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { + for i := range hs { + vs := make([]iovec, len(ms[i].Buffers)) + var sa []byte + if parseFn != nil { + sa = make([]byte, sizeofSockaddrInet6) + } + if marshalFn != nil { + sa = marshalFn(ms[i].Addr) + } + hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa) + } + return nil +} + +func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { + for i := range hs { + ms[i].N = int(hs[i].Len) + ms[i].NN = hs[i].Hdr.controllen() + ms[i].Flags = hs[i].Hdr.flags() + if parseFn != nil { + var err error + ms[i].Addr, err = parseFn(hs[i].Hdr.name(), hint) + if err != nil { + return err + } + } + } + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go new file mode 100644 index 0000000000..5567afc88d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go @@ -0,0 +1,39 @@ +// Copyright 2017 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 darwin dragonfly freebsd netbsd openbsd + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.setIov(vs) + if len(oob) > 0 { + h.Control = (*byte)(unsafe.Pointer(&oob[0])) + h.Controllen = uint32(len(oob)) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) name() []byte { + if h.Name != nil && h.Namelen > 0 { + return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] + } + return nil +} + +func (h *msghdr) controllen() int { + return int(h.Controllen) +} + +func (h *msghdr) flags() int { + return int(h.Flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go new file mode 100644 index 0000000000..3fcb042801 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go @@ -0,0 +1,12 @@ +// Copyright 2017 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 darwin dragonfly freebsd netbsd + +package socket + +func (h *msghdr) setIov(vs []iovec) { + h.Iov = &vs[0] + h.Iovlen = int32(len(vs)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go new file mode 100644 index 0000000000..5a38798cc0 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go @@ -0,0 +1,36 @@ +// Copyright 2017 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 socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.setIov(vs) + if len(oob) > 0 { + h.setControl(oob) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) name() []byte { + if h.Name != nil && h.Namelen > 0 { + return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] + } + return nil +} + +func (h *msghdr) controllen() int { + return int(h.Controllen) +} + +func (h *msghdr) flags() int { + return int(h.Flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go new file mode 100644 index 0000000000..9f671aec01 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go @@ -0,0 +1,20 @@ +// Copyright 2017 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 arm mips mipsle 386 +// +build linux + +package socket + +import "unsafe" + +func (h *msghdr) setIov(vs []iovec) { + h.Iov = &vs[0] + h.Iovlen = uint32(len(vs)) +} + +func (h *msghdr) setControl(b []byte) { + h.Control = (*byte)(unsafe.Pointer(&b[0])) + h.Controllen = uint32(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go new file mode 100644 index 0000000000..9f78706214 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go @@ -0,0 +1,20 @@ +// Copyright 2017 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 arm64 amd64 ppc64 ppc64le mips64 mips64le s390x +// +build linux + +package socket + +import "unsafe" + +func (h *msghdr) setIov(vs []iovec) { + h.Iov = &vs[0] + h.Iovlen = uint64(len(vs)) +} + +func (h *msghdr) setControl(b []byte) { + h.Control = (*byte)(unsafe.Pointer(&b[0])) + h.Controllen = uint64(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go new file mode 100644 index 0000000000..be354ff847 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +func (h *msghdr) setIov(vs []iovec) { + h.Iov = &vs[0] + h.Iovlen = uint32(len(vs)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go new file mode 100644 index 0000000000..d1b0593973 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go @@ -0,0 +1,34 @@ +// Copyright 2017 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 amd64 +// +build solaris + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.Iov = &vs[0] + h.Iovlen = int32(len(vs)) + if len(oob) > 0 { + h.Accrights = (*int8)(unsafe.Pointer(&oob[0])) + h.Accrightslen = int32(len(oob)) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) controllen() int { + return int(h.Accrightslen) +} + +func (h *msghdr) flags() int { + return int(NativeEndian.Uint32(h.Pad_cgo_2[:])) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go new file mode 100644 index 0000000000..64e8173352 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go @@ -0,0 +1,14 @@ +// Copyright 2017 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type msghdr struct{} + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {} +func (h *msghdr) name() []byte { return nil } +func (h *msghdr) controllen() int { return 0 } +func (h *msghdr) flags() int { return 0 } diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go new file mode 100644 index 0000000000..d6871d55f7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn.go @@ -0,0 +1,66 @@ +// Copyright 2017 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.9 + +package socket + +import ( + "errors" + "net" + "os" + "syscall" +) + +// A Conn represents a raw connection. +type Conn struct { + network string + c syscall.RawConn +} + +// NewConn returns a new raw connection. +func NewConn(c net.Conn) (*Conn, error) { + var err error + var cc Conn + switch c := c.(type) { + case *net.TCPConn: + cc.network = "tcp" + cc.c, err = c.SyscallConn() + case *net.UDPConn: + cc.network = "udp" + cc.c, err = c.SyscallConn() + case *net.IPConn: + cc.network = "ip" + cc.c, err = c.SyscallConn() + default: + return nil, errors.New("unknown connection type") + } + if err != nil { + return nil, err + } + return &cc, nil +} + +func (o *Option) get(c *Conn, b []byte) (int, error) { + var operr error + var n int + fn := func(s uintptr) { + n, operr = getsockopt(s, o.Level, o.Name, b) + } + if err := c.c.Control(fn); err != nil { + return 0, err + } + return n, os.NewSyscallError("getsockopt", operr) +} + +func (o *Option) set(c *Conn, b []byte) error { + var operr error + fn := func(s uintptr) { + operr = setsockopt(s, o.Level, o.Name, b) + } + if err := c.c.Control(fn); err != nil { + return err + } + return os.NewSyscallError("setsockopt", operr) +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go new file mode 100644 index 0000000000..499164a3fb --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go @@ -0,0 +1,74 @@ +// Copyright 2017 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.9 +// +build linux + +package socket + +import ( + "net" + "os" + "syscall" +) + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + hs := make(mmsghdrs, len(ms)) + var parseFn func([]byte, string) (net.Addr, error) + if c.network != "tcp" { + parseFn = parseInetAddr + } + if err := hs.pack(ms, parseFn, nil); err != nil { + return 0, err + } + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = recvmmsg(s, hs, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Read(fn); err != nil { + return n, err + } + if operr != nil { + return n, os.NewSyscallError("recvmmsg", operr) + } + if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil { + return n, err + } + return n, nil +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + hs := make(mmsghdrs, len(ms)) + var marshalFn func(net.Addr) []byte + if c.network != "tcp" { + marshalFn = marshalInetAddr + } + if err := hs.pack(ms, nil, marshalFn); err != nil { + return 0, err + } + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = sendmmsg(s, hs, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Write(fn); err != nil { + return n, err + } + if operr != nil { + return n, os.NewSyscallError("sendmmsg", operr) + } + if err := hs[:n].unpack(ms[:n], nil, ""); err != nil { + return n, err + } + return n, nil +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go new file mode 100644 index 0000000000..b21d2e6418 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go @@ -0,0 +1,77 @@ +// Copyright 2017 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.9 +// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket + +import ( + "os" + "syscall" +) + +func (c *Conn) recvMsg(m *Message, flags int) error { + var h msghdr + vs := make([]iovec, len(m.Buffers)) + var sa []byte + if c.network != "tcp" { + sa = make([]byte, sizeofSockaddrInet6) + } + h.pack(vs, m.Buffers, m.OOB, sa) + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = recvmsg(s, &h, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Read(fn); err != nil { + return err + } + if operr != nil { + return os.NewSyscallError("recvmsg", operr) + } + if c.network != "tcp" { + var err error + m.Addr, err = parseInetAddr(sa[:], c.network) + if err != nil { + return err + } + } + m.N = n + m.NN = h.controllen() + m.Flags = h.flags() + return nil +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + var h msghdr + vs := make([]iovec, len(m.Buffers)) + var sa []byte + if m.Addr != nil { + sa = marshalInetAddr(m.Addr) + } + h.pack(vs, m.Buffers, m.OOB, sa) + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = sendmsg(s, &h, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Write(fn); err != nil { + return err + } + if operr != nil { + return os.NewSyscallError("sendmsg", operr) + } + m.N = n + m.NN = len(m.OOB) + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go new file mode 100644 index 0000000000..f78832aa4a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go @@ -0,0 +1,18 @@ +// Copyright 2017 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.9 +// +build !linux + +package socket + +import "errors" + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + return 0, errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go new file mode 100644 index 0000000000..96733cbe1b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go @@ -0,0 +1,18 @@ +// Copyright 2017 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.9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package socket + +import "errors" + +func (c *Conn) recvMsg(m *Message, flags int) error { + return errors.New("not implemented") +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + return errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_stub.go b/vendor/golang.org/x/net/internal/socket/rawconn_stub.go new file mode 100644 index 0000000000..d2add1a0aa --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_stub.go @@ -0,0 +1,25 @@ +// Copyright 2017 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.9 + +package socket + +import "errors" + +func (c *Conn) recvMsg(m *Message, flags int) error { + return errors.New("not implemented") +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + return errors.New("not implemented") +} + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + return 0, errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/reflect.go b/vendor/golang.org/x/net/internal/socket/reflect.go new file mode 100644 index 0000000000..bb179f11d8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/reflect.go @@ -0,0 +1,62 @@ +// Copyright 2017 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.9 + +package socket + +import ( + "errors" + "net" + "os" + "reflect" + "runtime" +) + +// A Conn represents a raw connection. +type Conn struct { + c net.Conn +} + +// NewConn returns a new raw connection. +func NewConn(c net.Conn) (*Conn, error) { + return &Conn{c: c}, nil +} + +func (o *Option) get(c *Conn, b []byte) (int, error) { + s, err := socketOf(c.c) + if err != nil { + return 0, err + } + n, err := getsockopt(s, o.Level, o.Name, b) + return n, os.NewSyscallError("getsockopt", err) +} + +func (o *Option) set(c *Conn, b []byte) error { + s, err := socketOf(c.c) + if err != nil { + return err + } + return os.NewSyscallError("setsockopt", setsockopt(s, o.Level, o.Name, b)) +} + +func socketOf(c net.Conn) (uintptr, error) { + switch c.(type) { + case *net.TCPConn, *net.UDPConn, *net.IPConn: + v := reflect.ValueOf(c) + switch e := v.Elem(); e.Kind() { + case reflect.Struct: + fd := e.FieldByName("conn").FieldByName("fd") + switch e := fd.Elem(); e.Kind() { + case reflect.Struct: + sysfd := e.FieldByName("sysfd") + if runtime.GOOS == "windows" { + return uintptr(sysfd.Uint()), nil + } + return uintptr(sysfd.Int()), nil + } + } + } + return 0, errors.New("invalid type") +} diff --git a/vendor/golang.org/x/net/internal/socket/socket.go b/vendor/golang.org/x/net/internal/socket/socket.go new file mode 100644 index 0000000000..729dea14b3 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/socket.go @@ -0,0 +1,285 @@ +// Copyright 2017 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 socket provides a portable interface for socket system +// calls. +package socket // import "golang.org/x/net/internal/socket" + +import ( + "errors" + "net" + "unsafe" +) + +// An Option represents a sticky socket option. +type Option struct { + Level int // level + Name int // name; must be equal or greater than 1 + Len int // length of value in bytes; must be equal or greater than 1 +} + +// Get reads a value for the option from the kernel. +// It returns the number of bytes written into b. +func (o *Option) Get(c *Conn, b []byte) (int, error) { + if o.Name < 1 || o.Len < 1 { + return 0, errors.New("invalid option") + } + if len(b) < o.Len { + return 0, errors.New("short buffer") + } + return o.get(c, b) +} + +// GetInt returns an integer value for the option. +// +// The Len field of Option must be either 1 or 4. +func (o *Option) GetInt(c *Conn) (int, error) { + if o.Len != 1 && o.Len != 4 { + return 0, errors.New("invalid option") + } + var b []byte + var bb [4]byte + if o.Len == 1 { + b = bb[:1] + } else { + b = bb[:4] + } + n, err := o.get(c, b) + if err != nil { + return 0, err + } + if n != o.Len { + return 0, errors.New("invalid option length") + } + if o.Len == 1 { + return int(b[0]), nil + } + return int(NativeEndian.Uint32(b[:4])), nil +} + +// Set writes the option and value to the kernel. +func (o *Option) Set(c *Conn, b []byte) error { + if o.Name < 1 || o.Len < 1 { + return errors.New("invalid option") + } + if len(b) < o.Len { + return errors.New("short buffer") + } + return o.set(c, b) +} + +// SetInt writes the option and value to the kernel. +// +// The Len field of Option must be either 1 or 4. +func (o *Option) SetInt(c *Conn, v int) error { + if o.Len != 1 && o.Len != 4 { + return errors.New("invalid option") + } + var b []byte + if o.Len == 1 { + b = []byte{byte(v)} + } else { + var bb [4]byte + NativeEndian.PutUint32(bb[:o.Len], uint32(v)) + b = bb[:4] + } + return o.set(c, b) +} + +func controlHeaderLen() int { + return roundup(sizeofCmsghdr) +} + +func controlMessageLen(dataLen int) int { + return roundup(sizeofCmsghdr) + dataLen +} + +// ControlMessageSpace returns the whole length of control message. +func ControlMessageSpace(dataLen int) int { + return roundup(sizeofCmsghdr) + roundup(dataLen) +} + +// A ControlMessage represents the head message in a stream of control +// messages. +// +// A control message comprises of a header, data and a few padding +// fields to conform to the interface to the kernel. +// +// See RFC 3542 for further information. +type ControlMessage []byte + +// Data returns the data field of the control message at the head on +// w. +func (m ControlMessage) Data(dataLen int) []byte { + l := controlHeaderLen() + if len(m) < l || len(m) < l+dataLen { + return nil + } + return m[l : l+dataLen] +} + +// Next returns the control message at the next on w. +// +// Next works only for standard control messages. +func (m ControlMessage) Next(dataLen int) ControlMessage { + l := ControlMessageSpace(dataLen) + if len(m) < l { + return nil + } + return m[l:] +} + +// MarshalHeader marshals the header fields of the control message at +// the head on w. +func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error { + if len(m) < controlHeaderLen() { + return errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + h.set(controlMessageLen(dataLen), lvl, typ) + return nil +} + +// ParseHeader parses and returns the header fields of the control +// message at the head on w. +func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error) { + l := controlHeaderLen() + if len(m) < l { + return 0, 0, 0, errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + return h.lvl(), h.typ(), int(uint64(h.len()) - uint64(l)), nil +} + +// Marshal marshals the control message at the head on w, and returns +// the next control message. +func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error) { + l := len(data) + if len(m) < ControlMessageSpace(l) { + return nil, errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + h.set(controlMessageLen(l), lvl, typ) + if l > 0 { + copy(m.Data(l), data) + } + return m.Next(l), nil +} + +// Parse parses w as a single or multiple control messages. +// +// Parse works for both standard and compatible messages. +func (m ControlMessage) Parse() ([]ControlMessage, error) { + var ms []ControlMessage + for len(m) >= controlHeaderLen() { + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + l := h.len() + if l <= 0 { + return nil, errors.New("invalid header length") + } + if uint64(l) < uint64(controlHeaderLen()) { + return nil, errors.New("invalid message length") + } + if uint64(l) > uint64(len(m)) { + return nil, errors.New("short buffer") + } + // On message reception: + // + // |<- ControlMessageSpace --------------->| + // |<- controlMessageLen ---------->| | + // |<- controlHeaderLen ->| | | + // +---------------+------+---------+------+ + // | Header | PadH | Data | PadD | + // +---------------+------+---------+------+ + // + // On compatible message reception: + // + // | ... |<- controlMessageLen ----------->| + // | ... |<- controlHeaderLen ->| | + // +-----+---------------+------+----------+ + // | ... | Header | PadH | Data | + // +-----+---------------+------+----------+ + ms = append(ms, ControlMessage(m[:l])) + ll := l - controlHeaderLen() + if len(m) >= ControlMessageSpace(ll) { + m = m[ControlMessageSpace(ll):] + } else { + m = m[controlMessageLen(ll):] + } + } + return ms, nil +} + +// NewControlMessage returns a new stream of control messages. +func NewControlMessage(dataLen []int) ControlMessage { + var l int + for i := range dataLen { + l += ControlMessageSpace(dataLen[i]) + } + return make([]byte, l) +} + +// A Message represents an IO message. +type Message struct { + // When writing, the Buffers field must contain at least one + // byte to write. + // When reading, the Buffers field will always contain a byte + // to read. + Buffers [][]byte + + // OOB contains protocol-specific control or miscellaneous + // ancillary data known as out-of-band data. + OOB []byte + + // Addr specifies a destination address when writing. + // It can be nil when the underlying protocol of the raw + // connection uses connection-oriented communication. + // After a successful read, it may contain the source address + // on the received packet. + Addr net.Addr + + N int // # of bytes read or written from/to Buffers + NN int // # of bytes read or written from/to OOB + Flags int // protocol-specific information on the received message +} + +// RecvMsg wraps recvmsg system call. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +func (c *Conn) RecvMsg(m *Message, flags int) error { + return c.recvMsg(m, flags) +} + +// SendMsg wraps sendmsg system call. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +func (c *Conn) SendMsg(m *Message, flags int) error { + return c.sendMsg(m, flags) +} + +// RecvMsgs wraps recvmmsg system call. +// +// It returns the number of processed messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// Only Linux supports this. +func (c *Conn) RecvMsgs(ms []Message, flags int) (int, error) { + return c.recvMsgs(ms, flags) +} + +// SendMsgs wraps sendmmsg system call. +// +// It returns the number of processed messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// Only Linux supports this. +func (c *Conn) SendMsgs(ms []Message, flags int) (int, error) { + return c.sendMsgs(ms, flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go new file mode 100644 index 0000000000..109fed762e --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go @@ -0,0 +1,256 @@ +// Copyright 2017 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.9 +// +build darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket_test + +import ( + "bytes" + "fmt" + "net" + "runtime" + "testing" + + "golang.org/x/net/internal/nettest" + "golang.org/x/net/internal/socket" +) + +type mockControl struct { + Level int + Type int + Data []byte +} + +func TestControlMessage(t *testing.T) { + for _, tt := range []struct { + cs []mockControl + }{ + { + []mockControl{ + {Level: 1, Type: 1}, + }, + }, + { + []mockControl{ + {Level: 2, Type: 2, Data: []byte{0xfe}}, + }, + }, + { + []mockControl{ + {Level: 3, Type: 3, Data: []byte{0xfe, 0xff, 0xff, 0xfe}}, + }, + }, + { + []mockControl{ + {Level: 4, Type: 4, Data: []byte{0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfe}}, + }, + }, + { + []mockControl{ + {Level: 4, Type: 4, Data: []byte{0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfe}}, + {Level: 2, Type: 2, Data: []byte{0xfe}}, + }, + }, + } { + var w []byte + var tailPadLen int + mm := socket.NewControlMessage([]int{0}) + for i, c := range tt.cs { + m := socket.NewControlMessage([]int{len(c.Data)}) + l := len(m) - len(mm) + if i == len(tt.cs)-1 && l > len(c.Data) { + tailPadLen = l - len(c.Data) + } + w = append(w, m...) + } + + var err error + ww := make([]byte, len(w)) + copy(ww, w) + m := socket.ControlMessage(ww) + for _, c := range tt.cs { + if err = m.MarshalHeader(c.Level, c.Type, len(c.Data)); err != nil { + t.Fatalf("(%v).MarshalHeader() = %v", tt.cs, err) + } + copy(m.Data(len(c.Data)), c.Data) + m = m.Next(len(c.Data)) + } + m = socket.ControlMessage(w) + for _, c := range tt.cs { + m, err = m.Marshal(c.Level, c.Type, c.Data) + if err != nil { + t.Fatalf("(%v).Marshal() = %v", tt.cs, err) + } + } + if !bytes.Equal(ww, w) { + t.Fatalf("got %#v; want %#v", ww, w) + } + + ws := [][]byte{w} + if tailPadLen > 0 { + // Test a message with no tail padding. + nopad := w[:len(w)-tailPadLen] + ws = append(ws, [][]byte{nopad}...) + } + for _, w := range ws { + ms, err := socket.ControlMessage(w).Parse() + if err != nil { + t.Fatalf("(%v).Parse() = %v", tt.cs, err) + } + for i, m := range ms { + lvl, typ, dataLen, err := m.ParseHeader() + if err != nil { + t.Fatalf("(%v).ParseHeader() = %v", tt.cs, err) + } + if lvl != tt.cs[i].Level || typ != tt.cs[i].Type || dataLen != len(tt.cs[i].Data) { + t.Fatalf("%v: got %d, %d, %d; want %d, %d, %d", tt.cs[i], lvl, typ, dataLen, tt.cs[i].Level, tt.cs[i].Type, len(tt.cs[i].Data)) + } + } + } + } +} + +func TestUDP(t *testing.T) { + c, err := nettest.NewLocalPacketListener("udp") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + + t.Run("Message", func(t *testing.T) { + testUDPMessage(t, c.(net.Conn)) + }) + switch runtime.GOOS { + case "linux": + t.Run("Messages", func(t *testing.T) { + testUDPMessages(t, c.(net.Conn)) + }) + } +} + +func testUDPMessage(t *testing.T, c net.Conn) { + cc, err := socket.NewConn(c) + if err != nil { + t.Fatal(err) + } + data := []byte("HELLO-R-U-THERE") + wm := socket.Message{ + Buffers: bytes.SplitAfter(data, []byte("-")), + Addr: c.LocalAddr(), + } + if err := cc.SendMsg(&wm, 0); err != nil { + t.Fatal(err) + } + b := make([]byte, 32) + rm := socket.Message{ + Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]}, + } + if err := cc.RecvMsg(&rm, 0); err != nil { + t.Fatal(err) + } + if !bytes.Equal(b[:rm.N], data) { + t.Fatalf("got %#v; want %#v", b[:rm.N], data) + } +} + +func testUDPMessages(t *testing.T, c net.Conn) { + cc, err := socket.NewConn(c) + if err != nil { + t.Fatal(err) + } + data := []byte("HELLO-R-U-THERE") + wmbs := bytes.SplitAfter(data, []byte("-")) + wms := []socket.Message{ + {Buffers: wmbs[:1], Addr: c.LocalAddr()}, + {Buffers: wmbs[1:], Addr: c.LocalAddr()}, + } + n, err := cc.SendMsgs(wms, 0) + if err != nil { + t.Fatal(err) + } + if n != len(wms) { + t.Fatalf("got %d; want %d", n, len(wms)) + } + b := make([]byte, 32) + rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}} + rms := []socket.Message{ + {Buffers: rmbs[0]}, + {Buffers: rmbs[1]}, + } + n, err = cc.RecvMsgs(rms, 0) + if err != nil { + t.Fatal(err) + } + if n != len(rms) { + t.Fatalf("got %d; want %d", n, len(rms)) + } + nn := 0 + for i := 0; i < n; i++ { + nn += rms[i].N + } + if !bytes.Equal(b[:nn], data) { + t.Fatalf("got %#v; want %#v", b[:nn], data) + } +} + +func BenchmarkUDP(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + cc, err := socket.NewConn(c.(net.Conn)) + if err != nil { + b.Fatal(err) + } + data := []byte("HELLO-R-U-THERE") + wm := socket.Message{ + Buffers: [][]byte{data}, + Addr: c.LocalAddr(), + } + rm := socket.Message{ + Buffers: [][]byte{make([]byte, 128)}, + OOB: make([]byte, 128), + } + + for M := 1; M <= 1<<9; M = M << 1 { + b.Run(fmt.Sprintf("Iter-%d", M), func(b *testing.B) { + for i := 0; i < b.N; i++ { + for j := 0; j < M; j++ { + if err := cc.SendMsg(&wm, 0); err != nil { + b.Fatal(err) + } + if err := cc.RecvMsg(&rm, 0); err != nil { + b.Fatal(err) + } + } + } + }) + switch runtime.GOOS { + case "linux": + wms := make([]socket.Message, M) + for i := range wms { + wms[i].Buffers = [][]byte{data} + wms[i].Addr = c.LocalAddr() + } + rms := make([]socket.Message, M) + for i := range rms { + rms[i].Buffers = [][]byte{make([]byte, 128)} + rms[i].OOB = make([]byte, 128) + } + b.Run(fmt.Sprintf("Batch-%d", M), func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := cc.SendMsgs(wms, 0); err != nil { + b.Fatal(err) + } + if _, err := cc.RecvMsgs(rms, 0); err != nil { + b.Fatal(err) + } + } + }) + } + } +} diff --git a/vendor/golang.org/x/net/internal/socket/socket_test.go b/vendor/golang.org/x/net/internal/socket/socket_test.go new file mode 100644 index 0000000000..bf3751b5e0 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/socket_test.go @@ -0,0 +1,46 @@ +// Copyright 2017 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket_test + +import ( + "net" + "runtime" + "syscall" + "testing" + + "golang.org/x/net/internal/nettest" + "golang.org/x/net/internal/socket" +) + +func TestSocket(t *testing.T) { + t.Run("Option", func(t *testing.T) { + testSocketOption(t, &socket.Option{Level: syscall.SOL_SOCKET, Name: syscall.SO_RCVBUF, Len: 4}) + }) +} + +func testSocketOption(t *testing.T, so *socket.Option) { + c, err := nettest.NewLocalPacketListener("udp") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + cc, err := socket.NewConn(c.(net.Conn)) + if err != nil { + t.Fatal(err) + } + const N = 2048 + if err := so.SetInt(cc, N); err != nil { + t.Fatal(err) + } + n, err := so.GetInt(cc) + if err != nil { + t.Fatal(err) + } + if n < N { + t.Fatalf("got %d; want greater than or equal to %d", n, N) + } +} diff --git a/vendor/golang.org/x/net/internal/socket/sys.go b/vendor/golang.org/x/net/internal/socket/sys.go new file mode 100644 index 0000000000..4f0eead138 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys.go @@ -0,0 +1,33 @@ +// Copyright 2017 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 socket + +import ( + "encoding/binary" + "unsafe" +) + +var ( + // NativeEndian is the machine native endian implementation of + // ByteOrder. + NativeEndian binary.ByteOrder + + kernelAlign int +) + +func init() { + i := uint32(1) + b := (*[4]byte)(unsafe.Pointer(&i)) + if b[0] == 1 { + NativeEndian = binary.LittleEndian + } else { + NativeEndian = binary.BigEndian + } + kernelAlign = probeProtocolStack() +} + +func roundup(l int) int { + return (l + kernelAlign - 1) & ^(kernelAlign - 1) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsd.go b/vendor/golang.org/x/net/internal/socket/sys_bsd.go new file mode 100644 index 0000000000..f13e14ff36 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_bsd.go @@ -0,0 +1,17 @@ +// Copyright 2017 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 darwin dragonfly freebsd openbsd + +package socket + +import "errors" + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go new file mode 100644 index 0000000000..f723fa36af --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go @@ -0,0 +1,14 @@ +// Copyright 2017 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 freebsd netbsd openbsd + +package socket + +import "unsafe" + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_darwin.go new file mode 100644 index 0000000000..b17d223bff --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_darwin.go @@ -0,0 +1,7 @@ +// Copyright 2017 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 socket + +func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go new file mode 100644 index 0000000000..b17d223bff --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go @@ -0,0 +1,7 @@ +// Copyright 2017 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 socket + +func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux.go b/vendor/golang.org/x/net/internal/socket/sys_linux.go new file mode 100644 index 0000000000..1559521e03 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux.go @@ -0,0 +1,27 @@ +// Copyright 2017 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 linux,!s390x,!386 + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go new file mode 100644 index 0000000000..235b2cc08a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go @@ -0,0 +1,55 @@ +// Copyright 2017 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 socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { return 4 } + +const ( + sysSETSOCKOPT = 0xe + sysGETSOCKOPT = 0xf + sysSENDMSG = 0x10 + sysRECVMSG = 0x11 + sysRECVMMSG = 0x13 + sysSENDMMSG = 0x14 +) + +func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) +func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s new file mode 100644 index 0000000000..93e7d75ec0 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s @@ -0,0 +1,11 @@ +// 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. + +#include "textflag.h" + +TEXT ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 + JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go new file mode 100644 index 0000000000..9decee2e59 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x12b + sysSENDMMSG = 0x133 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go new file mode 100644 index 0000000000..d753b436df --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x16d + sysSENDMMSG = 0x176 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go new file mode 100644 index 0000000000..b670894366 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0xf3 + sysSENDMMSG = 0x10d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go new file mode 100644 index 0000000000..9c0d74014f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x10ef + sysSENDMMSG = 0x10f7 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go new file mode 100644 index 0000000000..071a4aba8b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x14ae + sysSENDMMSG = 0x14b6 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go new file mode 100644 index 0000000000..071a4aba8b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x14ae + sysSENDMMSG = 0x14b6 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go new file mode 100644 index 0000000000..9c0d74014f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x10ef + sysSENDMMSG = 0x10f7 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go new file mode 100644 index 0000000000..21c1e3f004 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x157 + sysSENDMMSG = 0x15d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go new file mode 100644 index 0000000000..21c1e3f004 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go @@ -0,0 +1,10 @@ +// Copyright 2017 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 socket + +const ( + sysRECVMMSG = 0x157 + sysSENDMMSG = 0x15d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go new file mode 100644 index 0000000000..327979efbb --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go @@ -0,0 +1,55 @@ +// Copyright 2017 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 socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { return 8 } + +const ( + sysSETSOCKOPT = 0xe + sysGETSOCKOPT = 0xf + sysSENDMSG = 0x10 + sysRECVMSG = 0x11 + sysRECVMMSG = 0x13 + sysSENDMMSG = 0x14 +) + +func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) +func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s new file mode 100644 index 0000000000..06d75628c9 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s @@ -0,0 +1,11 @@ +// Copyright 2017 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. + +#include "textflag.h" + +TEXT ·socketcall(SB),NOSPLIT,$0-72 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-72 + JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go new file mode 100644 index 0000000000..431851c12e --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go @@ -0,0 +1,25 @@ +// Copyright 2017 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 socket + +import ( + "syscall" + "unsafe" +) + +const ( + sysRECVMMSG = 0x1db + sysSENDMMSG = 0x1dc +) + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go new file mode 100644 index 0000000000..9a0dbcfb98 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go @@ -0,0 +1,168 @@ +// Copyright 2017 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.9 +// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket + +import ( + "encoding/binary" + "errors" + "net" + "runtime" + "strconv" + "sync" + "time" +) + +func marshalInetAddr(a net.Addr) []byte { + switch a := a.(type) { + case *net.TCPAddr: + return marshalSockaddr(a.IP, a.Port, a.Zone) + case *net.UDPAddr: + return marshalSockaddr(a.IP, a.Port, a.Zone) + case *net.IPAddr: + return marshalSockaddr(a.IP, 0, a.Zone) + default: + return nil + } +} + +func marshalSockaddr(ip net.IP, port int, zone string) []byte { + if ip4 := ip.To4(); ip4 != nil { + b := make([]byte, sizeofSockaddrInet) + switch runtime.GOOS { + case "linux", "solaris", "windows": + NativeEndian.PutUint16(b[:2], uint16(sysAF_INET)) + default: + b[0] = sizeofSockaddrInet + b[1] = sysAF_INET + } + binary.BigEndian.PutUint16(b[2:4], uint16(port)) + copy(b[4:8], ip4) + return b + } + if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil { + b := make([]byte, sizeofSockaddrInet6) + switch runtime.GOOS { + case "linux", "solaris", "windows": + NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6)) + default: + b[0] = sizeofSockaddrInet6 + b[1] = sysAF_INET6 + } + binary.BigEndian.PutUint16(b[2:4], uint16(port)) + copy(b[8:24], ip6) + if zone != "" { + NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone))) + } + return b + } + return nil +} + +func parseInetAddr(b []byte, network string) (net.Addr, error) { + if len(b) < 2 { + return nil, errors.New("invalid address") + } + var af int + switch runtime.GOOS { + case "linux", "solaris", "windows": + af = int(NativeEndian.Uint16(b[:2])) + default: + af = int(b[1]) + } + var ip net.IP + var zone string + if af == sysAF_INET { + if len(b) < sizeofSockaddrInet { + return nil, errors.New("short address") + } + ip = make(net.IP, net.IPv4len) + copy(ip, b[4:8]) + } + if af == sysAF_INET6 { + if len(b) < sizeofSockaddrInet6 { + return nil, errors.New("short address") + } + ip = make(net.IP, net.IPv6len) + copy(ip, b[8:24]) + if id := int(NativeEndian.Uint32(b[24:28])); id > 0 { + zone = zoneCache.name(id) + } + } + switch network { + case "tcp", "tcp4", "tcp6": + return &net.TCPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil + case "udp", "udp4", "udp6": + return &net.UDPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil + default: + return &net.IPAddr{IP: ip, Zone: zone}, nil + } +} + +// An ipv6ZoneCache represents a cache holding partial network +// interface information. It is used for reducing the cost of IPv6 +// addressing scope zone resolution. +// +// Multiple names sharing the index are managed by first-come +// first-served basis for consistency. +type ipv6ZoneCache struct { + sync.RWMutex // guard the following + lastFetched time.Time // last time routing information was fetched + toIndex map[string]int // interface name to its index + toName map[int]string // interface index to its name +} + +var zoneCache = ipv6ZoneCache{ + toIndex: make(map[string]int), + toName: make(map[int]string), +} + +func (zc *ipv6ZoneCache) update(ift []net.Interface) { + zc.Lock() + defer zc.Unlock() + now := time.Now() + if zc.lastFetched.After(now.Add(-60 * time.Second)) { + return + } + zc.lastFetched = now + if len(ift) == 0 { + var err error + if ift, err = net.Interfaces(); err != nil { + return + } + } + zc.toIndex = make(map[string]int, len(ift)) + zc.toName = make(map[int]string, len(ift)) + for _, ifi := range ift { + zc.toIndex[ifi.Name] = ifi.Index + if _, ok := zc.toName[ifi.Index]; !ok { + zc.toName[ifi.Index] = ifi.Name + } + } +} + +func (zc *ipv6ZoneCache) name(zone int) string { + zoneCache.update(nil) + zoneCache.RLock() + defer zoneCache.RUnlock() + name, ok := zoneCache.toName[zone] + if !ok { + name = strconv.Itoa(zone) + } + return name +} + +func (zc *ipv6ZoneCache) index(zone string) int { + zoneCache.update(nil) + zoneCache.RLock() + defer zoneCache.RUnlock() + index, ok := zoneCache.toIndex[zone] + if !ok { + index, _ = strconv.Atoi(zone) + } + return index +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris.go b/vendor/golang.org/x/net/internal/socket/sys_solaris.go new file mode 100644 index 0000000000..cced74e60d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_solaris.go @@ -0,0 +1,71 @@ +// Copyright 2017 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 socket + +import ( + "errors" + "runtime" + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + switch runtime.GOARCH { + case "amd64": + return 4 + default: + var p uintptr + return int(unsafe.Sizeof(p)) + } +} + +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" + +//go:linkname procGetsockopt libc___xnet_getsockopt +//go:linkname procSetsockopt libc_setsockopt +//go:linkname procRecvmsg libc___xnet_recvmsg +//go:linkname procSendmsg libc___xnet_sendmsg + +var ( + procGetsockopt uintptr + procSetsockopt uintptr + procRecvmsg uintptr + procSendmsg uintptr +) + +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procRecvmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSendmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s new file mode 100644 index 0000000000..a18ac5ed75 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s @@ -0,0 +1,11 @@ +// 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. + +#include "textflag.h" + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go new file mode 100644 index 0000000000..d9f06d00e9 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_stub.go @@ -0,0 +1,64 @@ +// Copyright 2017 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package socket + +import ( + "errors" + "net" + "runtime" + "unsafe" +) + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +func probeProtocolStack() int { + switch runtime.GOARCH { + case "amd64p32", "mips64p32": + return 4 + default: + var p uintptr + return int(unsafe.Sizeof(p)) + } +} + +func marshalInetAddr(ip net.IP, port int, zone string) []byte { + return nil +} + +func parseInetAddr(b []byte, network string) (net.Addr, error) { + return nil, errors.New("not implemented") +} + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + return 0, errors.New("not implemented") +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + return errors.New("not implemented") +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_unix.go b/vendor/golang.org/x/net/internal/socket/sys_unix.go new file mode 100644 index 0000000000..18eba30853 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_unix.go @@ -0,0 +1,33 @@ +// Copyright 2017 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 darwin dragonfly freebsd linux,!s390x,!386 netbsd openbsd + +package socket + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go new file mode 100644 index 0000000000..54a470ebe3 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_windows.go @@ -0,0 +1,70 @@ +// Copyright 2017 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 socket + +import ( + "errors" + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x17 + + sysSOCK_RAW = 0x3 +) + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l))) + return int(l), err +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b))) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errors.New("not implemented") +} diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go new file mode 100644 index 0000000000..26f8feff3a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_darwin.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1e + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go new file mode 100644 index 0000000000..e2987f7db8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go @@ -0,0 +1,61 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_darwin.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1e + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go new file mode 100644 index 0000000000..26f8feff3a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_darwin.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1e + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go new file mode 100644 index 0000000000..c582abd57d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go @@ -0,0 +1,61 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_dragonfly.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1c + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go new file mode 100644 index 0000000000..04a24886c7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_freebsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1c + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go new file mode 100644 index 0000000000..35c7cb9c95 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go @@ -0,0 +1,61 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_freebsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1c + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go new file mode 100644 index 0000000000..04a24886c7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_freebsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1c + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go new file mode 100644 index 0000000000..430206930b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go @@ -0,0 +1,63 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofMmsghdr = 0x20 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go new file mode 100644 index 0000000000..430206930b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go @@ -0,0 +1,63 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofMmsghdr = 0x20 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go new file mode 100644 index 0000000000..430206930b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go @@ -0,0 +1,63 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofMmsghdr = 0x20 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go new file mode 100644 index 0000000000..430206930b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go @@ -0,0 +1,63 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofMmsghdr = 0x20 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go new file mode 100644 index 0000000000..1502f6c552 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go @@ -0,0 +1,66 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_linux.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go new file mode 100644 index 0000000000..db60491fe3 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go @@ -0,0 +1,65 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_netbsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x18 + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofMmsghdr = 0x20 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go new file mode 100644 index 0000000000..2a1a79985a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go @@ -0,0 +1,68 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_netbsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x18 + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofMmsghdr = 0x40 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go new file mode 100644 index 0000000000..206ea2d115 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_netbsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x18 + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go new file mode 100644 index 0000000000..1c836361e8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_openbsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x18 + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go new file mode 100644 index 0000000000..a6c0bf464a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go @@ -0,0 +1,61 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_openbsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x18 + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go new file mode 100644 index 0000000000..1c836361e8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go @@ -0,0 +1,59 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_openbsd.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x18 + + sysSOCK_RAW = 0x3 +) + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go new file mode 100644 index 0000000000..327c63290c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go @@ -0,0 +1,60 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs defs_solaris.go + +package socket + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0x1a + + sysSOCK_RAW = 0x4 +) + +type iovec struct { + Base *int8 + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Accrights *int8 + Accrightslen int32 + Pad_cgo_2 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x20 +) diff --git a/vendor/golang.org/x/net/internal/timeseries/timeseries.go b/vendor/golang.org/x/net/internal/timeseries/timeseries.go index 1119f34482..685f0e7ea2 100644 --- a/vendor/golang.org/x/net/internal/timeseries/timeseries.go +++ b/vendor/golang.org/x/net/internal/timeseries/timeseries.go @@ -371,7 +371,7 @@ func (ts *timeSeries) ComputeRange(start, finish time.Time, num int) []Observabl } } - // Failed to find a level that covers the desired range. So just + // Failed to find a level that covers the desired range. So just // extract from the last level, even if it doesn't cover the entire // desired range. ts.extract(ts.levels[len(ts.levels)-1], start, finish, num, results) diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go new file mode 100644 index 0000000000..b445499288 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/batch.go @@ -0,0 +1,191 @@ +// Copyright 2017 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.9 + +package ipv4 + +import ( + "net" + "runtime" + "syscall" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// PacketConn are not implemented. + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// RawConn are not implemented. + +// A Message represents an IO message. +// +// type Message struct { +// Buffers [][]byte +// OOB []byte +// Addr net.Addr +// N int +// NN int +// Flags int +// } +// +// The Buffers fields represents a list of contiguous buffers, which +// can be used for vectored IO, for example, putting a header and a +// payload in each slice. +// When writing, the Buffers field must contain at least one byte to +// write. +// When reading, the Buffers field will always contain a byte to read. +// +// The OOB field contains protocol-specific control or miscellaneous +// ancillary data known as out-of-band data. +// It can be nil when not required. +// +// The Addr field specifies a destination address when writing. +// It can be nil when the underlying protocol of the endpoint uses +// connection-oriented communication. +// After a successful read, it may contain the source address on the +// received packet. +// +// The N field indicates the number of bytes read or written from/to +// Buffers. +// +// The NN field indicates the number of bytes read or written from/to +// OOB. +// +// The Flags field contains protocol-specific information on the +// received message. +type Message = socket.Message + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +// +// Unlike the ReadFrom method, it doesn't strip the IPv4 header +// followed by option headers from the received IPv4 datagram when the +// underlying transport is net.IPConn. Each Buffers field of Message +// must be large enough to accommodate an IPv4 header and option +// headers. +func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + } +} diff --git a/vendor/golang.org/x/net/ipv4/bpfopt_linux.go b/vendor/golang.org/x/net/ipv4/bpfopt_linux.go deleted file mode 100644 index 2d626d924c..0000000000 --- a/vendor/golang.org/x/net/ipv4/bpfopt_linux.go +++ /dev/null @@ -1,28 +0,0 @@ -// 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 ipv4 - -import ( - "os" - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/netreflect" -) - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - prog := sockFProg{ - Len: uint16(len(filter)), - Filter: (*sockFilter)(unsafe.Pointer(&filter[0])), - } - return os.NewSyscallError("setsockopt", setsockopt(s, sysSOL_SOCKET, sysSO_ATTACH_FILTER, unsafe.Pointer(&prog), uint32(unsafe.Sizeof(prog)))) -} diff --git a/vendor/golang.org/x/net/ipv4/bpfopt_stub.go b/vendor/golang.org/x/net/ipv4/bpfopt_stub.go deleted file mode 100644 index c4a8481f08..0000000000 --- a/vendor/golang.org/x/net/ipv4/bpfopt_stub.go +++ /dev/null @@ -1,16 +0,0 @@ -// 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 !linux - -package ipv4 - -import "golang.org/x/net/bpf" - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go index da4da2dd0e..a2b02ca95b 100644 --- a/vendor/golang.org/x/net/ipv4/control.go +++ b/vendor/golang.org/x/net/ipv4/control.go @@ -8,6 +8,9 @@ import ( "fmt" "net" "sync" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) type rawOpt struct { @@ -51,6 +54,77 @@ func (cm *ControlMessage) String() string { return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) } +// Marshal returns the binary encoding of cm. +func (cm *ControlMessage) Marshal() []byte { + if cm == nil { + return nil + } + var m socket.ControlMessage + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { + m = socket.NewControlMessage([]int{ctlOpts[ctlPacketInfo].length}) + } + if len(m) > 0 { + ctlOpts[ctlPacketInfo].marshal(m, cm) + } + return m +} + +// Parse parses b as a control message and stores the result in cm. +func (cm *ControlMessage) Parse(b []byte) error { + ms, err := socket.ControlMessage(b).Parse() + if err != nil { + return err + } + for _, m := range ms { + lvl, typ, l, err := m.ParseHeader() + if err != nil { + return err + } + if lvl != iana.ProtocolIP { + continue + } + switch { + case typ == ctlOpts[ctlTTL].name && l >= ctlOpts[ctlTTL].length: + ctlOpts[ctlTTL].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlDst].name && l >= ctlOpts[ctlDst].length: + ctlOpts[ctlDst].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlInterface].name && l >= ctlOpts[ctlInterface].length: + ctlOpts[ctlInterface].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: + ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) + } + } + return nil +} + +// NewControlMessage returns a new control message. +// +// The returned message is large enough for options specified by cf. +func NewControlMessage(cf ControlFlags) []byte { + opt := rawOpt{cflags: cf} + var l int + if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlTTL].length) + } + if ctlOpts[ctlPacketInfo].name > 0 { + if opt.isset(FlagSrc | FlagDst | FlagInterface) { + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + } else { + if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlDst].length) + } + if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlInterface].length) + } + } + var b []byte + if l > 0 { + b = make([]byte, l) + } + return b +} + // Ancillary data socket options const ( ctlTTL = iota // header field diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go index 3f27f99452..77e7ad5bed 100644 --- a/vendor/golang.org/x/net/ipv4/control_bsd.go +++ b/vendor/golang.org/x/net/ipv4/control_bsd.go @@ -12,26 +12,26 @@ import ( "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) func marshalDst(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIP - m.Type = sysIP_RECVDSTADDR - m.SetLen(syscall.CmsgLen(net.IPv4len)) - return b[syscall.CmsgSpace(net.IPv4len):] + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len) + return m.Next(net.IPv4len) } func parseDst(cm *ControlMessage, b []byte) { - cm.Dst = b[:net.IPv4len] + if len(cm.Dst) < net.IPv4len { + cm.Dst = make(net.IP, net.IPv4len) + } + copy(cm.Dst, b[:net.IPv4len]) } func marshalInterface(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIP - m.Type = sysIP_RECVIF - m.SetLen(syscall.CmsgLen(syscall.SizeofSockaddrDatalink)) - return b[syscall.CmsgSpace(syscall.SizeofSockaddrDatalink):] + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink) + return m.Next(syscall.SizeofSockaddrDatalink) } func parseInterface(cm *ControlMessage, b []byte) { diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go index 9ed9773416..425338f35b 100644 --- a/vendor/golang.org/x/net/ipv4/control_pktinfo.go +++ b/vendor/golang.org/x/net/ipv4/control_pktinfo.go @@ -7,19 +7,18 @@ package ipv4 import ( - "syscall" + "net" "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIP - m.Type = sysIP_PKTINFO - m.SetLen(syscall.CmsgLen(sizeofInetPktinfo)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo) if cm != nil { - pi := (*inetPktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)])) + pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0])) if ip := cm.Src.To4(); ip != nil { copy(pi.Spec_dst[:], ip) } @@ -27,11 +26,14 @@ func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { pi.setIfindex(cm.IfIndex) } } - return b[syscall.CmsgSpace(sizeofInetPktinfo):] + return m.Next(sizeofInetPktinfo) } func parsePacketInfo(cm *ControlMessage, b []byte) { pi := (*inetPktinfo)(unsafe.Pointer(&b[0])) cm.IfIndex = int(pi.Ifindex) - cm.Dst = pi.Addr[:] + if len(cm.Dst) < net.IPv4len { + cm.Dst = make(net.IP, net.IPv4len) + } + copy(cm.Dst, pi.Addr[:]) } diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go index 27e618bc2f..5a2f7d8d3c 100644 --- a/vendor/golang.org/x/net/ipv4/control_stub.go +++ b/vendor/golang.org/x/net/ipv4/control_stub.go @@ -2,22 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv4 -func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { - return errOpNoSupport -} - -func newControlMessage(opt *rawOpt) []byte { - return nil -} +import "golang.org/x/net/internal/socket" -func parseControlMessage(b []byte) (*ControlMessage, error) { - return nil, errOpNoSupport -} - -func marshalControlMessage(cm *ControlMessage) []byte { - return nil +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + return errOpNoSupport } diff --git a/vendor/golang.org/x/net/ipv4/control_test.go b/vendor/golang.org/x/net/ipv4/control_test.go new file mode 100644 index 0000000000..f87fe124b1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_test.go @@ -0,0 +1,21 @@ +// Copyright 2017 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 ipv4_test + +import ( + "testing" + + "golang.org/x/net/ipv4" +) + +func TestControlMessageParseWithFuzz(t *testing.T) { + var cm ipv4.ControlMessage + for _, fuzz := range []string{ + "\f\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00", + "\f\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00", + } { + cm.Parse([]byte(fuzz)) + } +} diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go index 25ef661925..e1ae8167b3 100644 --- a/vendor/golang.org/x/net/ipv4/control_unix.go +++ b/vendor/golang.org/x/net/ipv4/control_unix.go @@ -7,18 +7,17 @@ package ipv4 import ( - "os" - "syscall" "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) -func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { opt.Lock() defer opt.Unlock() - if cf&FlagTTL != 0 && sockOpts[ssoReceiveTTL].name > 0 { - if err := setInt(s, &sockOpts[ssoReceiveTTL], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceiveTTL]; ok && cf&FlagTTL != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -27,9 +26,9 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { opt.clear(FlagTTL) } } - if sockOpts[ssoPacketInfo].name > 0 { + if so, ok := sockOpts[ssoPacketInfo]; ok { if cf&(FlagSrc|FlagDst|FlagInterface) != 0 { - if err := setInt(s, &sockOpts[ssoPacketInfo], boolint(on)); err != nil { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -39,8 +38,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { } } } else { - if cf&FlagDst != 0 && sockOpts[ssoReceiveDst].name > 0 { - if err := setInt(s, &sockOpts[ssoReceiveDst], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceiveDst]; ok && cf&FlagDst != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -49,8 +48,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { opt.clear(FlagDst) } } - if cf&FlagInterface != 0 && sockOpts[ssoReceiveInterface].name > 0 { - if err := setInt(s, &sockOpts[ssoReceiveInterface], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceiveInterface]; ok && cf&FlagInterface != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -63,84 +62,10 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { return nil } -func newControlMessage(opt *rawOpt) (oob []byte) { - opt.RLock() - var l int - if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlTTL].length) - } - if ctlOpts[ctlPacketInfo].name > 0 { - if opt.isset(FlagSrc | FlagDst | FlagInterface) { - l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length) - } - } else { - if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlDst].length) - } - if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlInterface].length) - } - } - if l > 0 { - oob = make([]byte, l) - } - opt.RUnlock() - return -} - -func parseControlMessage(b []byte) (*ControlMessage, error) { - if len(b) == 0 { - return nil, nil - } - cmsgs, err := syscall.ParseSocketControlMessage(b) - if err != nil { - return nil, os.NewSyscallError("parse socket control message", err) - } - cm := &ControlMessage{} - for _, m := range cmsgs { - if m.Header.Level != iana.ProtocolIP { - continue - } - switch int(m.Header.Type) { - case ctlOpts[ctlTTL].name: - ctlOpts[ctlTTL].parse(cm, m.Data[:]) - case ctlOpts[ctlDst].name: - ctlOpts[ctlDst].parse(cm, m.Data[:]) - case ctlOpts[ctlInterface].name: - ctlOpts[ctlInterface].parse(cm, m.Data[:]) - case ctlOpts[ctlPacketInfo].name: - ctlOpts[ctlPacketInfo].parse(cm, m.Data[:]) - } - } - return cm, nil -} - -func marshalControlMessage(cm *ControlMessage) (oob []byte) { - if cm == nil { - return nil - } - var l int - pktinfo := false - if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { - pktinfo = true - l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length) - } - if l > 0 { - oob = make([]byte, l) - b := oob - if pktinfo { - b = ctlOpts[ctlPacketInfo].marshal(b, cm) - } - } - return -} - func marshalTTL(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIP - m.Type = sysIP_RECVTTL - m.SetLen(syscall.CmsgLen(1)) - return b[syscall.CmsgSpace(1):] + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1) + return m.Next(1) } func parseTTL(cm *ControlMessage, b []byte) { diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go index b27407db95..ce55c66447 100644 --- a/vendor/golang.org/x/net/ipv4/control_windows.go +++ b/vendor/golang.org/x/net/ipv4/control_windows.go @@ -4,24 +4,13 @@ package ipv4 -import "syscall" +import ( + "syscall" -func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { - // TODO(mikio): implement this - return syscall.EWINDOWS -} - -func newControlMessage(opt *rawOpt) []byte { - // TODO(mikio): implement this - return nil -} + "golang.org/x/net/internal/socket" +) -func parseControlMessage(b []byte) (*ControlMessage, error) { +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { // TODO(mikio): implement this - return nil, syscall.EWINDOWS -} - -func marshalControlMessage(cm *ControlMessage) []byte { - // TODO(mikio): implement this - return nil + return syscall.EWINDOWS } diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go index 31dfa093cb..beb11071ad 100644 --- a/vendor/golang.org/x/net/ipv4/defs_linux.go +++ b/vendor/golang.org/x/net/ipv4/defs_linux.go @@ -93,6 +93,8 @@ const ( sizeofGroupSourceReq = C.sizeof_struct_group_source_req sizeofICMPFilter = C.sizeof_struct_icmp_filter + + sizeofSockFprog = C.sizeof_struct_sock_fprog ) type kernelSockaddrStorage C.struct___kernel_sockaddr_storage diff --git a/vendor/golang.org/x/net/ipv4/dgramopt.go b/vendor/golang.org/x/net/ipv4/dgramopt.go new file mode 100644 index 0000000000..54d77d5fed --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/dgramopt.go @@ -0,0 +1,265 @@ +// 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 ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/bpf" +) + +// MulticastTTL returns the time-to-live field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastTTL() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastTTL] + if !ok { + return 0, errOpNoSupport + } + return so.GetInt(c.Conn) +} + +// SetMulticastTTL sets the time-to-live field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastTTL(ttl int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastTTL] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, ttl) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return nil, errOpNoSupport + } + return so.getMulticastInterface(c.Conn) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return errOpNoSupport + } + return so.setMulticastInterface(c.Conn, ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return false, errOpNoSupport + } + on, err := so.GetInt(c.Conn) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoJoinGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoLeaveGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoJoinSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoLeaveSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoBlockSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoUnblockSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ICMPFilter returns an ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, syscall.EINVAL + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return nil, errOpNoSupport + } + return so.getICMPFilter(c.Conn) +} + +// SetICMPFilter deploys the ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return errOpNoSupport + } + return so.setICMPFilter(c.Conn, f) +} + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoAttachFilter] + if !ok { + return errOpNoSupport + } + return so.setBPF(c.Conn, filter) +} diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_posix.go b/vendor/golang.org/x/net/ipv4/dgramopt_posix.go deleted file mode 100644 index fbc5df198d..0000000000 --- a/vendor/golang.org/x/net/ipv4/dgramopt_posix.go +++ /dev/null @@ -1,253 +0,0 @@ -// 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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/netreflect" -) - -// MulticastTTL returns the time-to-live field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastTTL() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return 0, err - } - return getInt(s, &sockOpts[ssoMulticastTTL]) -} - -// SetMulticastTTL sets the time-to-live field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastTTL(ttl int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoMulticastTTL], ttl) -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return nil, err - } - return getInterface(s, &sockOpts[ssoMulticastInterface]) -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setInterface(s, &sockOpts[ssoMulticastInterface], ifi) -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - if !c.ok() { - return false, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return false, err - } - on, err := getInt(s, &sockOpts[ssoMulticastLoopback]) - if err != nil { - return false, err - } - return on == 1, nil -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoMulticastLoopback], boolint(on)) -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - return setGroup(s, &sockOpts[ssoJoinGroup], ifi, grp) -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - return setGroup(s, &sockOpts[ssoLeaveGroup], ifi, grp) -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoJoinSourceGroup], ifi, grp, src) -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src) -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoBlockSourceGroup], ifi, grp, src) -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src) -} - -// ICMPFilter returns an ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return nil, err - } - return getICMPFilter(s, &sockOpts[ssoICMPFilter]) -} - -// SetICMPFilter deploys the ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setICMPFilter(s, &sockOpts[ssoICMPFilter], f) -} diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_stub.go b/vendor/golang.org/x/net/ipv4/dgramopt_stub.go deleted file mode 100644 index f6b867f929..0000000000 --- a/vendor/golang.org/x/net/ipv4/dgramopt_stub.go +++ /dev/null @@ -1,106 +0,0 @@ -// 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. - -// +build nacl plan9 - -package ipv4 - -import "net" - -// MulticastTTL returns the time-to-live field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastTTL() (int, error) { - return 0, errOpNoSupport -} - -// SetMulticastTTL sets the time-to-live field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastTTL(ttl int) error { - return errOpNoSupport -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - return nil, errOpNoSupport -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - return errOpNoSupport -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - return false, errOpNoSupport -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - return errOpNoSupport -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - return errOpNoSupport -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - return errOpNoSupport -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// ICMPFilter returns an ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - return nil, errOpNoSupport -} - -// SetICMPFilter deploys the ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go index b4ce40fbc6..b43935a5ae 100644 --- a/vendor/golang.org/x/net/ipv4/doc.go +++ b/vendor/golang.org/x/net/ipv4/doc.go @@ -21,7 +21,7 @@ // // The options for unicasting are available for net.TCPConn, // net.UDPConn and net.IPConn which are created as network connections -// that use the IPv4 transport. When a single TCP connection carrying +// that use the IPv4 transport. When a single TCP connection carrying // a data flow of multiple packets needs to indicate the flow is // important, Conn is used to set the type-of-service field on the // IPv4 header for each packet. @@ -56,7 +56,7 @@ // // The options for multicasting are available for net.UDPConn and // net.IPconn which are created as network connections that use the -// IPv4 transport. A few network facilities must be prepared before +// IPv4 transport. A few network facilities must be prepared before // you begin multicasting, at a minimum joining network interfaces and // multicast groups. // @@ -80,7 +80,7 @@ // defer c.Close() // // Second, the application joins multicast groups, starts listening to -// the groups on the specified network interfaces. Note that the +// the groups on the specified network interfaces. Note that the // service port for transport layer protocol does not matter with this // operation as joining groups affects only network and link layer // protocols, such as IPv4 and Ethernet. @@ -94,7 +94,7 @@ // } // // The application might set per packet control message transmissions -// between the protocol stack within the kernel. When the application +// between the protocol stack within the kernel. When the application // needs a destination address on an incoming packet, // SetControlMessage of PacketConn is used to enable control message // transmissions. @@ -145,7 +145,7 @@ // More multicasting // // An application that uses PacketConn or RawConn may join multiple -// multicast groups. For example, a UDP listener with port 1024 might +// multicast groups. For example, a UDP listener with port 1024 might // join two different groups across over two different network // interfaces by using: // @@ -166,7 +166,7 @@ // } // // It is possible for multiple UDP listeners that listen on the same -// UDP port to join the same multicast group. The net package will +// UDP port to join the same multicast group. The net package will // provide a socket that listens to a wildcard address with reusable // UDP port when an appropriate multicast address prefix is passed to // the net.ListenPacket or net.ListenUDP. diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go index 01c4e399bf..2ab8773630 100644 --- a/vendor/golang.org/x/net/ipv4/endpoint.go +++ b/vendor/golang.org/x/net/ipv4/endpoint.go @@ -9,7 +9,7 @@ import ( "syscall" "time" - "golang.org/x/net/internal/netreflect" + "golang.org/x/net/internal/socket" ) // BUG(mikio): On Windows, the JoinSourceSpecificGroup, @@ -25,21 +25,22 @@ type Conn struct { } type genericOpt struct { - net.Conn + *socket.Conn } func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } // NewConn returns a new Conn. func NewConn(c net.Conn) *Conn { + cc, _ := socket.NewConn(c) return &Conn{ - genericOpt: genericOpt{Conn: c}, + genericOpt: genericOpt{Conn: cc}, } } // A PacketConn represents a packet network endpoint that uses the -// IPv4 transport. It is used to control several IP-level socket -// options including multicasting. It also provides datagram based +// IPv4 transport. It is used to control several IP-level socket +// options including multicasting. It also provides datagram based // network I/O methods specific to the IPv4 and higher layer protocols // such as UDP. type PacketConn struct { @@ -49,21 +50,17 @@ type PacketConn struct { } type dgramOpt struct { - net.PacketConn + *socket.Conn } -func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil } +func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } // SetControlMessage sets the per packet IP-level socket options. func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { if !c.payloadHandler.ok() { return syscall.EINVAL } - s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn) - if err != nil { - return err - } - return setControlMessage(s, &c.payloadHandler.rawOpt, cf, on) + return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) } // SetDeadline sets the read and write deadlines associated with the @@ -104,22 +101,18 @@ func (c *PacketConn) Close() error { // NewPacketConn returns a new PacketConn using c as its underlying // transport. func NewPacketConn(c net.PacketConn) *PacketConn { + cc, _ := socket.NewConn(c.(net.Conn)) p := &PacketConn{ - genericOpt: genericOpt{Conn: c.(net.Conn)}, - dgramOpt: dgramOpt{PacketConn: c}, - payloadHandler: payloadHandler{PacketConn: c}, - } - if _, ok := c.(*net.IPConn); ok && sockOpts[ssoStripHeader].name > 0 { - if s, err := netreflect.PacketSocketOf(c); err == nil { - setInt(s, &sockOpts[ssoStripHeader], boolint(true)) - } + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, } return p } // A RawConn represents a packet network endpoint that uses the IPv4 -// transport. It is used to control several IP-level socket options -// including IPv4 header manipulation. It also provides datagram +// transport. It is used to control several IP-level socket options +// including IPv4 header manipulation. It also provides datagram // based network I/O methods specific to the IPv4 and higher layer // protocols that handle IPv4 datagram directly such as OSPF, GRE. type RawConn struct { @@ -133,11 +126,7 @@ func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { if !c.packetHandler.ok() { return syscall.EINVAL } - s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn) - if err != nil { - return err - } - return setControlMessage(s, &c.packetHandler.rawOpt, cf, on) + return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on) } // SetDeadline sets the read and write deadlines associated with the @@ -146,7 +135,7 @@ func (c *RawConn) SetDeadline(t time.Time) error { if !c.packetHandler.ok() { return syscall.EINVAL } - return c.packetHandler.c.SetDeadline(t) + return c.packetHandler.IPConn.SetDeadline(t) } // SetReadDeadline sets the read deadline associated with the @@ -155,7 +144,7 @@ func (c *RawConn) SetReadDeadline(t time.Time) error { if !c.packetHandler.ok() { return syscall.EINVAL } - return c.packetHandler.c.SetReadDeadline(t) + return c.packetHandler.IPConn.SetReadDeadline(t) } // SetWriteDeadline sets the write deadline associated with the @@ -164,7 +153,7 @@ func (c *RawConn) SetWriteDeadline(t time.Time) error { if !c.packetHandler.ok() { return syscall.EINVAL } - return c.packetHandler.c.SetWriteDeadline(t) + return c.packetHandler.IPConn.SetWriteDeadline(t) } // Close closes the endpoint. @@ -172,22 +161,26 @@ func (c *RawConn) Close() error { if !c.packetHandler.ok() { return syscall.EINVAL } - return c.packetHandler.c.Close() + return c.packetHandler.IPConn.Close() } // NewRawConn returns a new RawConn using c as its underlying // transport. func NewRawConn(c net.PacketConn) (*RawConn, error) { - r := &RawConn{ - genericOpt: genericOpt{Conn: c.(net.Conn)}, - dgramOpt: dgramOpt{PacketConn: c}, - packetHandler: packetHandler{c: c.(*net.IPConn)}, - } - s, err := netreflect.PacketSocketOf(c) + cc, err := socket.NewConn(c.(net.Conn)) if err != nil { return nil, err } - if err := setInt(s, &sockOpts[ssoHeaderPrepend], boolint(true)); err != nil { + r := &RawConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + packetHandler: packetHandler{IPConn: c.(*net.IPConn), Conn: cc}, + } + so, ok := sockOpts[ssoHeaderPrepend] + if !ok { + return nil, errOpNoSupport + } + if err := so.SetInt(r.dgramOpt.Conn, boolint(true)); err != nil { return nil, err } return r, nil diff --git a/vendor/golang.org/x/net/ipv4/genericopt.go b/vendor/golang.org/x/net/ipv4/genericopt.go new file mode 100644 index 0000000000..119bf841b6 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/genericopt.go @@ -0,0 +1,57 @@ +// 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 ipv4 + +import "syscall" + +// TOS returns the type-of-service field value for outgoing packets. +func (c *genericOpt) TOS() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + so, ok := sockOpts[ssoTOS] + if !ok { + return 0, errOpNoSupport + } + return so.GetInt(c.Conn) +} + +// SetTOS sets the type-of-service field value for future outgoing +// packets. +func (c *genericOpt) SetTOS(tos int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoTOS] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, tos) +} + +// TTL returns the time-to-live field value for outgoing packets. +func (c *genericOpt) TTL() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + so, ok := sockOpts[ssoTTL] + if !ok { + return 0, errOpNoSupport + } + return so.GetInt(c.Conn) +} + +// SetTTL sets the time-to-live field value for future outgoing +// packets. +func (c *genericOpt) SetTTL(ttl int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoTTL] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, ttl) +} diff --git a/vendor/golang.org/x/net/ipv4/genericopt_posix.go b/vendor/golang.org/x/net/ipv4/genericopt_posix.go deleted file mode 100644 index 58168b737d..0000000000 --- a/vendor/golang.org/x/net/ipv4/genericopt_posix.go +++ /dev/null @@ -1,63 +0,0 @@ -// 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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv4 - -import ( - "syscall" - - "golang.org/x/net/internal/netreflect" -) - -// TOS returns the type-of-service field value for outgoing packets. -func (c *genericOpt) TOS() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return 0, err - } - return getInt(s, &sockOpts[ssoTOS]) -} - -// SetTOS sets the type-of-service field value for future outgoing -// packets. -func (c *genericOpt) SetTOS(tos int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoTOS], tos) -} - -// TTL returns the time-to-live field value for outgoing packets. -func (c *genericOpt) TTL() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return 0, err - } - return getInt(s, &sockOpts[ssoTTL]) -} - -// SetTTL sets the time-to-live field value for future outgoing -// packets. -func (c *genericOpt) SetTTL(ttl int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoTTL], ttl) -} diff --git a/vendor/golang.org/x/net/ipv4/genericopt_stub.go b/vendor/golang.org/x/net/ipv4/genericopt_stub.go deleted file mode 100644 index 661a4d1ab1..0000000000 --- a/vendor/golang.org/x/net/ipv4/genericopt_stub.go +++ /dev/null @@ -1,29 +0,0 @@ -// 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. - -// +build nacl plan9 - -package ipv4 - -// TOS returns the type-of-service field value for outgoing packets. -func (c *genericOpt) TOS() (int, error) { - return 0, errOpNoSupport -} - -// SetTOS sets the type-of-service field value for future outgoing -// packets. -func (c *genericOpt) SetTOS(tos int) error { - return errOpNoSupport -} - -// TTL returns the time-to-live field value for outgoing packets. -func (c *genericOpt) TTL() (int, error) { - return 0, errOpNoSupport -} - -// SetTTL sets the time-to-live field value for future outgoing -// packets. -func (c *genericOpt) SetTTL(ttl int) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go index 6dc26d43fa..8bb0f0f4d4 100644 --- a/vendor/golang.org/x/net/ipv4/header.go +++ b/vendor/golang.org/x/net/ipv4/header.go @@ -10,6 +10,8 @@ import ( "net" "runtime" "syscall" + + "golang.org/x/net/internal/socket" ) const ( @@ -49,7 +51,7 @@ func (h *Header) String() string { return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst) } -// Marshal returns the binary encoding of the IPv4 header h. +// Marshal returns the binary encoding of h. func (h *Header) Marshal() ([]byte, error) { if h == nil { return nil, syscall.EINVAL @@ -64,12 +66,12 @@ func (h *Header) Marshal() ([]byte, error) { flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13) switch runtime.GOOS { case "darwin", "dragonfly", "netbsd": - nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) case "freebsd": if freebsdVersion < 1100000 { - nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) } else { binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) @@ -96,37 +98,35 @@ func (h *Header) Marshal() ([]byte, error) { return b, nil } -// ParseHeader parses b as an IPv4 header. -func ParseHeader(b []byte) (*Header, error) { - if len(b) < HeaderLen { - return nil, errHeaderTooShort +// Parse parses b as an IPv4 header and sotres the result in h. +func (h *Header) Parse(b []byte) error { + if h == nil || len(b) < HeaderLen { + return errHeaderTooShort } hdrlen := int(b[0]&0x0f) << 2 if hdrlen > len(b) { - return nil, errBufferTooShort - } - h := &Header{ - Version: int(b[0] >> 4), - Len: hdrlen, - TOS: int(b[1]), - ID: int(binary.BigEndian.Uint16(b[4:6])), - TTL: int(b[8]), - Protocol: int(b[9]), - Checksum: int(binary.BigEndian.Uint16(b[10:12])), - Src: net.IPv4(b[12], b[13], b[14], b[15]), - Dst: net.IPv4(b[16], b[17], b[18], b[19]), + return errBufferTooShort } + h.Version = int(b[0] >> 4) + h.Len = hdrlen + h.TOS = int(b[1]) + h.ID = int(binary.BigEndian.Uint16(b[4:6])) + h.TTL = int(b[8]) + h.Protocol = int(b[9]) + h.Checksum = int(binary.BigEndian.Uint16(b[10:12])) + h.Src = net.IPv4(b[12], b[13], b[14], b[15]) + h.Dst = net.IPv4(b[16], b[17], b[18], b[19]) switch runtime.GOOS { case "darwin", "dragonfly", "netbsd": - h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + hdrlen - h.FragOff = int(nativeEndian.Uint16(b[6:8])) + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen + h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) case "freebsd": if freebsdVersion < 1100000 { - h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) if freebsdVersion < 1000000 { h.TotalLen += hdrlen } - h.FragOff = int(nativeEndian.Uint16(b[6:8])) + h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) } else { h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) @@ -137,9 +137,23 @@ func ParseHeader(b []byte) (*Header, error) { } h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13 h.FragOff = h.FragOff & 0x1fff - if hdrlen-HeaderLen > 0 { - h.Options = make([]byte, hdrlen-HeaderLen) - copy(h.Options, b[HeaderLen:]) + optlen := hdrlen - HeaderLen + if optlen > 0 && len(b) >= hdrlen { + if cap(h.Options) < optlen { + h.Options = make([]byte, optlen) + } else { + h.Options = h.Options[:optlen] + } + copy(h.Options, b[HeaderLen:hdrlen]) + } + return nil +} + +// ParseHeader parses b as an IPv4 header. +func ParseHeader(b []byte) (*Header, error) { + h := new(Header) + if err := h.Parse(b); err != nil { + return nil, err } return h, nil } diff --git a/vendor/golang.org/x/net/ipv4/header_test.go b/vendor/golang.org/x/net/ipv4/header_test.go index cdf27fd03f..a246aeea19 100644 --- a/vendor/golang.org/x/net/ipv4/header_test.go +++ b/vendor/golang.org/x/net/ipv4/header_test.go @@ -12,141 +12,217 @@ import ( "runtime" "strings" "testing" + + "golang.org/x/net/internal/socket" ) type headerTest struct { - wireHeaderFromKernel [HeaderLen]byte - wireHeaderToKernel [HeaderLen]byte - wireHeaderFromTradBSDKernel [HeaderLen]byte - wireHeaderToTradBSDKernel [HeaderLen]byte - wireHeaderFromFreeBSD10Kernel [HeaderLen]byte - wireHeaderToFreeBSD10Kernel [HeaderLen]byte + wireHeaderFromKernel []byte + wireHeaderToKernel []byte + wireHeaderFromTradBSDKernel []byte + wireHeaderToTradBSDKernel []byte + wireHeaderFromFreeBSD10Kernel []byte + wireHeaderToFreeBSD10Kernel []byte *Header } -var headerLittleEndianTest = headerTest{ +var headerLittleEndianTests = []headerTest{ // TODO(mikio): Add platform dependent wire header formats when // we support new platforms. - wireHeaderFromKernel: [HeaderLen]byte{ - 0x45, 0x01, 0xbe, 0xef, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderToKernel: [HeaderLen]byte{ - 0x45, 0x01, 0xbe, 0xef, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderFromTradBSDKernel: [HeaderLen]byte{ - 0x45, 0x01, 0xdb, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderToTradBSDKernel: [HeaderLen]byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderFromFreeBSD10Kernel: [HeaderLen]byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, + { + wireHeaderFromKernel: []byte{ + 0x45, 0x01, 0xbe, 0xef, + 0xca, 0xfe, 0x45, 0xdc, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + }, + wireHeaderToKernel: []byte{ + 0x45, 0x01, 0xbe, 0xef, + 0xca, 0xfe, 0x45, 0xdc, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + }, + wireHeaderFromTradBSDKernel: []byte{ + 0x45, 0x01, 0xdb, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + }, + wireHeaderToTradBSDKernel: []byte{ + 0x45, 0x01, 0xef, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + }, + wireHeaderFromFreeBSD10Kernel: []byte{ + 0x45, 0x01, 0xef, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + }, + wireHeaderToFreeBSD10Kernel: []byte{ + 0x45, 0x01, 0xef, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + }, + Header: &Header{ + Version: Version, + Len: HeaderLen, + TOS: 1, + TotalLen: 0xbeef, + ID: 0xcafe, + Flags: DontFragment, + FragOff: 1500, + TTL: 255, + Protocol: 1, + Checksum: 0xdead, + Src: net.IPv4(172, 16, 254, 254), + Dst: net.IPv4(192, 168, 0, 1), + }, }, - wireHeaderToFreeBSD10Kernel: [HeaderLen]byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - Header: &Header{ - Version: Version, - Len: HeaderLen, - TOS: 1, - TotalLen: 0xbeef, - ID: 0xcafe, - Flags: DontFragment, - FragOff: 1500, - TTL: 255, - Protocol: 1, - Checksum: 0xdead, - Src: net.IPv4(172, 16, 254, 254), - Dst: net.IPv4(192, 168, 0, 1), + + // with option headers + { + wireHeaderFromKernel: []byte{ + 0x46, 0x01, 0xbe, 0xf3, + 0xca, 0xfe, 0x45, 0xdc, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + 0xff, 0xfe, 0xfe, 0xff, + }, + wireHeaderToKernel: []byte{ + 0x46, 0x01, 0xbe, 0xf3, + 0xca, 0xfe, 0x45, 0xdc, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + 0xff, 0xfe, 0xfe, 0xff, + }, + wireHeaderFromTradBSDKernel: []byte{ + 0x46, 0x01, 0xdb, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + 0xff, 0xfe, 0xfe, 0xff, + }, + wireHeaderToTradBSDKernel: []byte{ + 0x46, 0x01, 0xf3, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + 0xff, 0xfe, 0xfe, 0xff, + }, + wireHeaderFromFreeBSD10Kernel: []byte{ + 0x46, 0x01, 0xf3, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + 0xff, 0xfe, 0xfe, 0xff, + }, + wireHeaderToFreeBSD10Kernel: []byte{ + 0x46, 0x01, 0xf3, 0xbe, + 0xca, 0xfe, 0xdc, 0x45, + 0xff, 0x01, 0xde, 0xad, + 172, 16, 254, 254, + 192, 168, 0, 1, + 0xff, 0xfe, 0xfe, 0xff, + }, + Header: &Header{ + Version: Version, + Len: HeaderLen + 4, + TOS: 1, + TotalLen: 0xbef3, + ID: 0xcafe, + Flags: DontFragment, + FragOff: 1500, + TTL: 255, + Protocol: 1, + Checksum: 0xdead, + Src: net.IPv4(172, 16, 254, 254), + Dst: net.IPv4(192, 168, 0, 1), + Options: []byte{0xff, 0xfe, 0xfe, 0xff}, + }, }, } func TestMarshalHeader(t *testing.T) { - tt := &headerLittleEndianTest - if nativeEndian != binary.LittleEndian { + if socket.NativeEndian != binary.LittleEndian { t.Skip("no test for non-little endian machine yet") } - b, err := tt.Header.Marshal() - if err != nil { - t.Fatal(err) - } - var wh []byte - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - wh = tt.wireHeaderToTradBSDKernel[:] - case "freebsd": - switch { - case freebsdVersion < 1000000: - wh = tt.wireHeaderToTradBSDKernel[:] - case 1000000 <= freebsdVersion && freebsdVersion < 1100000: - wh = tt.wireHeaderToFreeBSD10Kernel[:] + for _, tt := range headerLittleEndianTests { + b, err := tt.Header.Marshal() + if err != nil { + t.Fatal(err) + } + var wh []byte + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + wh = tt.wireHeaderToTradBSDKernel + case "freebsd": + switch { + case freebsdVersion < 1000000: + wh = tt.wireHeaderToTradBSDKernel + case 1000000 <= freebsdVersion && freebsdVersion < 1100000: + wh = tt.wireHeaderToFreeBSD10Kernel + default: + wh = tt.wireHeaderToKernel + } default: - wh = tt.wireHeaderToKernel[:] + wh = tt.wireHeaderToKernel + } + if !bytes.Equal(b, wh) { + t.Fatalf("got %#v; want %#v", b, wh) } - default: - wh = tt.wireHeaderToKernel[:] - } - if !bytes.Equal(b, wh) { - t.Fatalf("got %#v; want %#v", b, wh) } } func TestParseHeader(t *testing.T) { - tt := &headerLittleEndianTest - if nativeEndian != binary.LittleEndian { + if socket.NativeEndian != binary.LittleEndian { t.Skip("no test for big endian machine yet") } - var wh []byte - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - wh = tt.wireHeaderFromTradBSDKernel[:] - case "freebsd": - switch { - case freebsdVersion < 1000000: - wh = tt.wireHeaderFromTradBSDKernel[:] - case 1000000 <= freebsdVersion && freebsdVersion < 1100000: - wh = tt.wireHeaderFromFreeBSD10Kernel[:] + for _, tt := range headerLittleEndianTests { + var wh []byte + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + wh = tt.wireHeaderFromTradBSDKernel + case "freebsd": + switch { + case freebsdVersion < 1000000: + wh = tt.wireHeaderFromTradBSDKernel + case 1000000 <= freebsdVersion && freebsdVersion < 1100000: + wh = tt.wireHeaderFromFreeBSD10Kernel + default: + wh = tt.wireHeaderFromKernel + } default: - wh = tt.wireHeaderFromKernel[:] + wh = tt.wireHeaderFromKernel + } + h, err := ParseHeader(wh) + if err != nil { + t.Fatal(err) + } + if err := h.Parse(wh); err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(h, tt.Header) { + t.Fatalf("got %#v; want %#v", h, tt.Header) + } + s := h.String() + if strings.Contains(s, ",") { + t.Fatalf("should be space-separated values: %s", s) } - default: - wh = tt.wireHeaderFromKernel[:] - } - h, err := ParseHeader(wh) - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(h, tt.Header) { - t.Fatalf("got %#v; want %#v", h, tt.Header) - } - s := h.String() - if strings.Contains(s, ",") { - t.Fatalf("should be space-separated values: %s", s) } } diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go index 083897995e..a5052e3249 100644 --- a/vendor/golang.org/x/net/ipv4/helper.go +++ b/vendor/golang.org/x/net/ipv4/helper.go @@ -5,10 +5,8 @@ package ipv4 import ( - "encoding/binary" "errors" "net" - "unsafe" ) var ( @@ -23,20 +21,8 @@ var ( // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. freebsdVersion uint32 - - nativeEndian binary.ByteOrder ) -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - nativeEndian = binary.LittleEndian - } else { - nativeEndian = binary.BigEndian - } -} - func boolint(b bool) int { if b { return 1 @@ -57,3 +43,21 @@ func netAddrToIP4(a net.Addr) net.IP { } return nil } + +func opAddr(a net.Addr) net.Addr { + switch a.(type) { + case *net.TCPAddr: + if a == nil { + return nil + } + case *net.UDPAddr: + if a == nil { + return nil + } + case *net.IPAddr: + if a == nil { + return nil + } + } + return a +} diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go index 097bea8465..9902bb3d2a 100644 --- a/vendor/golang.org/x/net/ipv4/icmp.go +++ b/vendor/golang.org/x/net/ipv4/icmp.go @@ -26,7 +26,7 @@ func (typ ICMPType) Protocol() int { // packets. The filter belongs to a packet delivery path on a host and // it cannot interact with forwarding packets or tunnel-outer packets. // -// Note: RFC 2460 defines a reasonable role model and it works not +// Note: RFC 8200 defines a reasonable role model and it works not // only for IPv6 but IPv4. A node means a device that implements IP. // A router means a node that forwards IP packets not explicitly // addressed to itself, and a host means a node that is not a router. diff --git a/vendor/golang.org/x/net/ipv4/multicastlistener_test.go b/vendor/golang.org/x/net/ipv4/multicastlistener_test.go index a0c24b55b0..e43fbbe082 100644 --- a/vendor/golang.org/x/net/ipv4/multicastlistener_test.go +++ b/vendor/golang.org/x/net/ipv4/multicastlistener_test.go @@ -69,13 +69,16 @@ func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) { } for _, gaddr := range udpMultipleGroupListenerTests { - c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") // wildcard address with reusable port + c1, err := net.ListenPacket("udp4", "224.0.0.0:0") // wildcard address with reusable port if err != nil { t.Fatal(err) } defer c1.Close() - - c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") // wildcard address with reusable port + _, port, err := net.SplitHostPort(c1.LocalAddr().String()) + if err != nil { + t.Fatal(err) + } + c2, err := net.ListenPacket("udp4", net.JoinHostPort("224.0.0.0", port)) // wildcard address with reusable port if err != nil { t.Fatal(err) } @@ -131,16 +134,29 @@ func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) { if err != nil { t.Fatal(err) } + port := "0" for i, ifi := range ift { ip, ok := nettest.IsMulticastCapable("ip4", &ifi) if !ok { continue } - c, err := net.ListenPacket("udp4", ip.String()+":"+"1024") // unicast address with non-reusable port + c, err := net.ListenPacket("udp4", net.JoinHostPort(ip.String(), port)) // unicast address with non-reusable port if err != nil { - t.Fatal(err) + // The listen may fail when the serivce is + // already in use, but it's fine because the + // purpose of this is not to test the + // bookkeeping of IP control block inside the + // kernel. + t.Log(err) + continue } defer c.Close() + if port == "0" { + _, port, err = net.SplitHostPort(c.LocalAddr().String()) + if err != nil { + t.Fatal(err) + } + } p := ipv4.NewPacketConn(c) if err := p.JoinGroup(&ifi, &gaddr); err != nil { t.Fatal(err) diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go index 7f3bf48982..f00f5b052f 100644 --- a/vendor/golang.org/x/net/ipv4/packet.go +++ b/vendor/golang.org/x/net/ipv4/packet.go @@ -7,6 +7,8 @@ package ipv4 import ( "net" "syscall" + + "golang.org/x/net/internal/socket" ) // BUG(mikio): On Windows, the ReadFrom and WriteTo methods of RawConn @@ -14,38 +16,21 @@ import ( // A packetHandler represents the IPv4 datagram handler. type packetHandler struct { - c *net.IPConn + *net.IPConn + *socket.Conn rawOpt } -func (c *packetHandler) ok() bool { return c != nil && c.c != nil } +func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn != nil } // ReadFrom reads an IPv4 datagram from the endpoint c, copying the -// datagram into b. It returns the received datagram as the IPv4 +// datagram into b. It returns the received datagram as the IPv4 // header h, the payload p and the control message cm. func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { if !c.ok() { return nil, nil, nil, syscall.EINVAL } - oob := newControlMessage(&c.rawOpt) - n, oobn, _, src, err := c.c.ReadMsgIP(b, oob) - if err != nil { - return nil, nil, nil, err - } - var hs []byte - if hs, p, err = slicePacket(b[:n]); err != nil { - return nil, nil, nil, err - } - if h, err = ParseHeader(hs); err != nil { - return nil, nil, nil, err - } - if cm, err = parseControlMessage(oob[:oobn]); err != nil { - return nil, nil, nil, err - } - if src != nil && cm != nil { - cm.Src = src.IP - } - return + return c.readFrom(b) } func slicePacket(b []byte) (h, p []byte, err error) { @@ -57,9 +42,9 @@ func slicePacket(b []byte) (h, p []byte, err error) { } // WriteTo writes an IPv4 datagram through the endpoint c, copying the -// datagram from the IPv4 header h and the payload p. The control +// datagram from the IPv4 header h and the payload p. The control // message cm allows the datagram path and the outgoing interface to be -// specified. Currently only Darwin and Linux support this. The cm +// specified. Currently only Darwin and Linux support this. The cm // may be nil if control of the outgoing datagram is not required. // // The IPv4 header h must contain appropriate fields that include: @@ -80,21 +65,5 @@ func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { if !c.ok() { return syscall.EINVAL } - oob := marshalControlMessage(cm) - wh, err := h.Marshal() - if err != nil { - return err - } - dst := &net.IPAddr{} - if cm != nil { - if ip := cm.Dst.To4(); ip != nil { - dst.IP = ip - } - } - if dst.IP == nil { - dst.IP = h.Dst - } - wh = append(wh, p...) - _, _, err = c.c.WriteMsgIP(wh, oob, dst) - return err + return c.writeTo(h, p, cm) } diff --git a/vendor/golang.org/x/net/ipv4/packet_go1_8.go b/vendor/golang.org/x/net/ipv4/packet_go1_8.go new file mode 100644 index 0000000000..b47d186834 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/packet_go1_8.go @@ -0,0 +1,56 @@ +// 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. + +// +build !go1.9 + +package ipv4 + +import "net" + +func (c *packetHandler) readFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { + c.rawOpt.RLock() + oob := NewControlMessage(c.rawOpt.cflags) + c.rawOpt.RUnlock() + n, nn, _, src, err := c.ReadMsgIP(b, oob) + if err != nil { + return nil, nil, nil, err + } + var hs []byte + if hs, p, err = slicePacket(b[:n]); err != nil { + return nil, nil, nil, err + } + if h, err = ParseHeader(hs); err != nil { + return nil, nil, nil, err + } + if nn > 0 { + cm = new(ControlMessage) + if err := cm.Parse(oob[:nn]); err != nil { + return nil, nil, nil, err + } + } + if src != nil && cm != nil { + cm.Src = src.IP + } + return +} + +func (c *packetHandler) writeTo(h *Header, p []byte, cm *ControlMessage) error { + oob := cm.Marshal() + wh, err := h.Marshal() + if err != nil { + return err + } + dst := new(net.IPAddr) + if cm != nil { + if ip := cm.Dst.To4(); ip != nil { + dst.IP = ip + } + } + if dst.IP == nil { + dst.IP = h.Dst + } + wh = append(wh, p...) + _, _, err = c.WriteMsgIP(wh, oob, dst) + return err +} diff --git a/vendor/golang.org/x/net/ipv4/packet_go1_9.go b/vendor/golang.org/x/net/ipv4/packet_go1_9.go new file mode 100644 index 0000000000..082c36d73e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/packet_go1_9.go @@ -0,0 +1,67 @@ +// Copyright 2017 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.9 + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (c *packetHandler) readFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { + c.rawOpt.RLock() + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + if err := c.RecvMsg(&m, 0); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + var hs []byte + if hs, p, err = slicePacket(b[:m.N]); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if h, err = ParseHeader(hs); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if m.NN > 0 { + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + } + if src, ok := m.Addr.(*net.IPAddr); ok && cm != nil { + cm.Src = src.IP + } + return +} + +func (c *packetHandler) writeTo(h *Header, p []byte, cm *ControlMessage) error { + m := socket.Message{ + OOB: cm.Marshal(), + } + wh, err := h.Marshal() + if err != nil { + return err + } + m.Buffers = [][]byte{wh, p} + dst := new(net.IPAddr) + if cm != nil { + if ip := cm.Dst.To4(); ip != nil { + dst.IP = ip + } + } + if dst.IP == nil { + dst.IP = h.Dst + } + m.Addr = dst + if err := c.SendMsg(&m, 0); err != nil { + return &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go index be130e424d..f95f811acd 100644 --- a/vendor/golang.org/x/net/ipv4/payload.go +++ b/vendor/golang.org/x/net/ipv4/payload.go @@ -4,7 +4,11 @@ package ipv4 -import "net" +import ( + "net" + + "golang.org/x/net/internal/socket" +) // BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo // methods of PacketConn is not implemented. @@ -12,7 +16,8 @@ import "net" // A payloadHandler represents the IPv4 datagram payload handler. type payloadHandler struct { net.PacketConn + *socket.Conn rawOpt } -func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil } +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go index 9bcde8f9a4..3f06d76063 100644 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg.go +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !plan9,!windows +// +build !nacl,!plan9,!windows package ipv4 @@ -12,70 +12,25 @@ import ( ) // ReadFrom reads a payload of the received IPv4 datagram, from the -// endpoint c, copying the payload into b. It returns the number of +// endpoint c, copying the payload into b. It returns the number of // bytes copied into b, the control message cm and the source address // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { if !c.ok() { return 0, nil, nil, syscall.EINVAL } - oob := newControlMessage(&c.rawOpt) - var oobn int - switch c := c.PacketConn.(type) { - case *net.UDPConn: - if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { - return 0, nil, nil, err - } - case *net.IPConn: - if sockOpts[ssoStripHeader].name > 0 { - if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil { - return 0, nil, nil, err - } - } else { - nb := make([]byte, maxHeaderLen+len(b)) - if n, oobn, _, src, err = c.ReadMsgIP(nb, oob); err != nil { - return 0, nil, nil, err - } - hdrlen := int(nb[0]&0x0f) << 2 - copy(b, nb[hdrlen:]) - n -= hdrlen - } - default: - return 0, nil, nil, errInvalidConnType - } - if cm, err = parseControlMessage(oob[:oobn]); err != nil { - return 0, nil, nil, err - } - if cm != nil { - cm.Src = netAddrToIP4(src) - } - return + return c.readFrom(b) } // WriteTo writes a payload of the IPv4 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows // the datagram path and the outgoing interface to be specified. -// Currently only Darwin and Linux support this. The cm may be nil if +// Currently only Darwin and Linux support this. The cm may be nil if // control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { return 0, syscall.EINVAL } - oob := marshalControlMessage(cm) - if dst == nil { - return 0, errMissingAddress - } - switch c := c.PacketConn.(type) { - case *net.UDPConn: - n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) - case *net.IPConn: - n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) - default: - return 0, errInvalidConnType - } - if err != nil { - return 0, err - } - return + return c.writeTo(b, cm, dst) } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go new file mode 100644 index 0000000000..d26ccd90c4 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go @@ -0,0 +1,59 @@ +// 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. + +// +build !go1.9 +// +build !nacl,!plan9,!windows + +package ipv4 + +import "net" + +func (c *payloadHandler) readFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + c.rawOpt.RLock() + oob := NewControlMessage(c.rawOpt.cflags) + c.rawOpt.RUnlock() + var nn int + switch c := c.PacketConn.(type) { + case *net.UDPConn: + if n, nn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { + return 0, nil, nil, err + } + case *net.IPConn: + nb := make([]byte, maxHeaderLen+len(b)) + if n, nn, _, src, err = c.ReadMsgIP(nb, oob); err != nil { + return 0, nil, nil, err + } + hdrlen := int(nb[0]&0x0f) << 2 + copy(b, nb[hdrlen:]) + n -= hdrlen + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType} + } + if nn > 0 { + cm = new(ControlMessage) + if err = cm.Parse(oob[:nn]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + } + if cm != nil { + cm.Src = netAddrToIP4(src) + } + return +} + +func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + oob := cm.Marshal() + if dst == nil { + return 0, &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errMissingAddress} + } + switch c := c.PacketConn.(type) { + case *net.UDPConn: + n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) + case *net.IPConn: + n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) + default: + return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Addr: opAddr(dst), Err: errInvalidConnType} + } + return +} diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go new file mode 100644 index 0000000000..2f19311839 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go @@ -0,0 +1,67 @@ +// Copyright 2017 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.9 +// +build !nacl,!plan9,!windows + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (c *payloadHandler) readFrom(b []byte) (int, *ControlMessage, net.Addr, error) { + c.rawOpt.RLock() + m := socket.Message{ + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + switch c.PacketConn.(type) { + case *net.UDPConn: + m.Buffers = [][]byte{b} + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + case *net.IPConn: + h := make([]byte, HeaderLen) + m.Buffers = [][]byte{h, b} + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + hdrlen := int(h[0]&0x0f) << 2 + if hdrlen > len(h) { + d := hdrlen - len(h) + copy(b, b[d:]) + m.N -= d + } else { + m.N -= hdrlen + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} + } + var cm *ControlMessage + if m.NN > 0 { + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + cm.Src = netAddrToIP4(m.Addr) + } + return m.N, cm, m.Addr, nil +} + +func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (int, error) { + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: cm.Marshal(), + Addr: dst, + } + err := c.SendMsg(&m, 0) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return m.N, err +} diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go index 6f1b402f72..3926de70b8 100644 --- a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +++ b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build plan9 windows +// +build nacl plan9 windows package ipv4 @@ -12,7 +12,7 @@ import ( ) // ReadFrom reads a payload of the received IPv4 datagram, from the -// endpoint c, copying the payload into b. It returns the number of +// endpoint c, copying the payload into b. It returns the number of // bytes copied into b, the control message cm and the source address // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { @@ -26,10 +26,10 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net. } // WriteTo writes a payload of the IPv4 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows // the datagram path and the outgoing interface to be specified. -// Currently only Darwin and Linux support this. The cm may be nil if +// Currently only Darwin and Linux support this. The cm may be nil if // control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { diff --git a/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go b/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go new file mode 100644 index 0000000000..1cd926e7fd --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go @@ -0,0 +1,248 @@ +// 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. + +// +build !go1.9 + +package ipv4_test + +import ( + "bytes" + "fmt" + "net" + "runtime" + "strings" + "sync" + "testing" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/nettest" + "golang.org/x/net/ipv4" +) + +func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + b.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph, err := (&ipv4.Header{ + Version: ipv4.Version, + Len: ipv4.HeaderLen, + TotalLen: ipv4.HeaderLen + len(payload), + TTL: 1, + Protocol: iana.ProtocolReserved, + Src: net.IPv4(192, 0, 2, 1), + Dst: net.IPv4(192, 0, 2, 254), + }).Marshal() + if err != nil { + b.Fatal(err) + } + greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + bb := make([]byte, 128) + cm := ipv4.ControlMessage{ + Src: net.IPv4(127, 0, 0, 1), + } + if ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback); ifi != nil { + cm.IfIndex = ifi.Index + } + + b.Run("UDP", func(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp4") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv4.FlagTTL | ipv4.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(payload, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(payload, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + }) + b.Run("IP", func(b *testing.B) { + switch runtime.GOOS { + case "netbsd": + b.Skip("need to configure gre on netbsd") + case "openbsd": + b.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv4.FlagTTL | ipv4.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(datagram, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(datagram, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + }) +} + +func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + t.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph, err := (&ipv4.Header{ + Version: ipv4.Version, + Len: ipv4.HeaderLen, + TotalLen: ipv4.HeaderLen + len(payload), + TTL: 1, + Protocol: iana.ProtocolReserved, + Src: net.IPv4(192, 0, 2, 1), + Dst: net.IPv4(192, 0, 2, 254), + }).Marshal() + if err != nil { + t.Fatal(err) + } + greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + + t.Run("UDP", func(t *testing.T) { + c, err := nettest.NewLocalPacketListener("udp4") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr()) + }) + }) + t.Run("IP", func(t *testing.T) { + switch runtime.GOOS { + case "netbsd": + t.Skip("need to configure gre on netbsd") + case "openbsd": + t.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr()) + }) + }) +} + +func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv4.PacketConn, data []byte, dst net.Addr) { + ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) + cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface + + if err := p.SetControlMessage(cf, true); err != nil { // probe before test + if nettest.ProtocolNotSupported(err) { + t.Skipf("not supported on %s", runtime.GOOS) + } + t.Fatal(err) + } + + var wg sync.WaitGroup + reader := func() { + defer wg.Done() + b := make([]byte, 128) + n, cm, _, err := p.ReadFrom(b) + if err != nil { + t.Error(err) + return + } + if !bytes.Equal(b[:n], data) { + t.Errorf("got %#v; want %#v", b[:n], data) + return + } + s := cm.String() + if strings.Contains(s, ",") { + t.Errorf("should be space-separated values: %s", s) + return + } + } + writer := func(toggle bool) { + defer wg.Done() + cm := ipv4.ControlMessage{ + Src: net.IPv4(127, 0, 0, 1), + } + if ifi != nil { + cm.IfIndex = ifi.Index + } + if err := p.SetControlMessage(cf, toggle); err != nil { + t.Error(err) + return + } + n, err := p.WriteTo(data, &cm, dst) + if err != nil { + t.Error(err) + return + } + if n != len(data) { + t.Errorf("got %d; want %d", n, len(data)) + return + } + } + + const N = 10 + wg.Add(N) + for i := 0; i < N; i++ { + go reader() + } + wg.Add(2 * N) + for i := 0; i < 2*N; i++ { + go writer(i%2 != 0) + + } + wg.Add(N) + for i := 0; i < N; i++ { + go reader() + } + wg.Wait() +} diff --git a/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go b/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go new file mode 100644 index 0000000000..365de022ae --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go @@ -0,0 +1,388 @@ +// Copyright 2017 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.9 + +package ipv4_test + +import ( + "bytes" + "fmt" + "net" + "runtime" + "strings" + "sync" + "testing" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/nettest" + "golang.org/x/net/ipv4" +) + +func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + b.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph, err := (&ipv4.Header{ + Version: ipv4.Version, + Len: ipv4.HeaderLen, + TotalLen: ipv4.HeaderLen + len(payload), + TTL: 1, + Protocol: iana.ProtocolReserved, + Src: net.IPv4(192, 0, 2, 1), + Dst: net.IPv4(192, 0, 2, 254), + }).Marshal() + if err != nil { + b.Fatal(err) + } + greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + bb := make([]byte, 128) + cm := ipv4.ControlMessage{ + Src: net.IPv4(127, 0, 0, 1), + } + if ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback); ifi != nil { + cm.IfIndex = ifi.Index + } + + b.Run("UDP", func(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp4") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv4.FlagTTL | ipv4.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + wms := []ipv4.Message{ + { + Buffers: [][]byte{payload}, + Addr: dst, + OOB: cm.Marshal(), + }, + } + rms := []ipv4.Message{ + { + Buffers: [][]byte{bb}, + OOB: ipv4.NewControlMessage(cf), + }, + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(payload, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(payload, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("Batch", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteBatch(wms, 0); err != nil { + b.Fatal(err) + } + if _, err := p.ReadBatch(rms, 0); err != nil { + b.Fatal(err) + } + } + }) + }) + b.Run("IP", func(b *testing.B) { + switch runtime.GOOS { + case "netbsd": + b.Skip("need to configure gre on netbsd") + case "openbsd": + b.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv4.FlagTTL | ipv4.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + wms := []ipv4.Message{ + { + Buffers: [][]byte{datagram}, + Addr: dst, + OOB: cm.Marshal(), + }, + } + rms := []ipv4.Message{ + { + Buffers: [][]byte{bb}, + OOB: ipv4.NewControlMessage(cf), + }, + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(datagram, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(datagram, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("Batch", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteBatch(wms, 0); err != nil { + b.Fatal(err) + } + if _, err := p.ReadBatch(rms, 0); err != nil { + b.Fatal(err) + } + } + }) + }) +} + +func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + t.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph, err := (&ipv4.Header{ + Version: ipv4.Version, + Len: ipv4.HeaderLen, + TotalLen: ipv4.HeaderLen + len(payload), + TTL: 1, + Protocol: iana.ProtocolReserved, + Src: net.IPv4(192, 0, 2, 1), + Dst: net.IPv4(192, 0, 2, 254), + }).Marshal() + if err != nil { + t.Fatal(err) + } + greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + + t.Run("UDP", func(t *testing.T) { + c, err := nettest.NewLocalPacketListener("udp4") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), false) + }) + t.Run("Batch", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), true) + }) + }) + t.Run("IP", func(t *testing.T) { + switch runtime.GOOS { + case "netbsd": + t.Skip("need to configure gre on netbsd") + case "openbsd": + t.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv4.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), false) + }) + t.Run("Batch", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), true) + }) + }) +} + +func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv4.PacketConn, data []byte, dst net.Addr, batch bool) { + ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) + cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface + + if err := p.SetControlMessage(cf, true); err != nil { // probe before test + if nettest.ProtocolNotSupported(err) { + t.Skipf("not supported on %s", runtime.GOOS) + } + t.Fatal(err) + } + + var wg sync.WaitGroup + reader := func() { + defer wg.Done() + b := make([]byte, 128) + n, cm, _, err := p.ReadFrom(b) + if err != nil { + t.Error(err) + return + } + if !bytes.Equal(b[:n], data) { + t.Errorf("got %#v; want %#v", b[:n], data) + return + } + s := cm.String() + if strings.Contains(s, ",") { + t.Errorf("should be space-separated values: %s", s) + return + } + } + batchReader := func() { + defer wg.Done() + ms := []ipv4.Message{ + { + Buffers: [][]byte{make([]byte, 128)}, + OOB: ipv4.NewControlMessage(cf), + }, + } + n, err := p.ReadBatch(ms, 0) + if err != nil { + t.Error(err) + return + } + if n != len(ms) { + t.Errorf("got %d; want %d", n, len(ms)) + return + } + var cm ipv4.ControlMessage + if err := cm.Parse(ms[0].OOB[:ms[0].NN]); err != nil { + t.Error(err) + return + } + var b []byte + if _, ok := dst.(*net.IPAddr); ok { + var h ipv4.Header + if err := h.Parse(ms[0].Buffers[0][:ms[0].N]); err != nil { + t.Error(err) + return + } + b = ms[0].Buffers[0][h.Len:ms[0].N] + } else { + b = ms[0].Buffers[0][:ms[0].N] + } + if !bytes.Equal(b, data) { + t.Errorf("got %#v; want %#v", b, data) + return + } + s := cm.String() + if strings.Contains(s, ",") { + t.Errorf("should be space-separated values: %s", s) + return + } + } + writer := func(toggle bool) { + defer wg.Done() + cm := ipv4.ControlMessage{ + Src: net.IPv4(127, 0, 0, 1), + } + if ifi != nil { + cm.IfIndex = ifi.Index + } + if err := p.SetControlMessage(cf, toggle); err != nil { + t.Error(err) + return + } + n, err := p.WriteTo(data, &cm, dst) + if err != nil { + t.Error(err) + return + } + if n != len(data) { + t.Errorf("got %d; want %d", n, len(data)) + return + } + } + batchWriter := func(toggle bool) { + defer wg.Done() + cm := ipv4.ControlMessage{ + Src: net.IPv4(127, 0, 0, 1), + } + if ifi != nil { + cm.IfIndex = ifi.Index + } + if err := p.SetControlMessage(cf, toggle); err != nil { + t.Error(err) + return + } + ms := []ipv4.Message{ + { + Buffers: [][]byte{data}, + OOB: cm.Marshal(), + Addr: dst, + }, + } + n, err := p.WriteBatch(ms, 0) + if err != nil { + t.Error(err) + return + } + if n != len(ms) { + t.Errorf("got %d; want %d", n, len(ms)) + return + } + if ms[0].N != len(data) { + t.Errorf("got %d; want %d", ms[0].N, len(data)) + return + } + } + + const N = 10 + wg.Add(N) + for i := 0; i < N; i++ { + if batch { + go batchReader() + } else { + go reader() + } + } + wg.Add(2 * N) + for i := 0; i < 2*N; i++ { + if batch { + go batchWriter(i%2 != 0) + } else { + go writer(i%2 != 0) + } + + } + wg.Add(N) + for i := 0; i < N; i++ { + if batch { + go batchReader() + } else { + go reader() + } + } + wg.Wait() +} diff --git a/vendor/golang.org/x/net/ipv4/readwrite_test.go b/vendor/golang.org/x/net/ipv4/readwrite_test.go index a2384b8f9a..3896a8ae46 100644 --- a/vendor/golang.org/x/net/ipv4/readwrite_test.go +++ b/vendor/golang.org/x/net/ipv4/readwrite_test.go @@ -16,77 +16,47 @@ import ( "golang.org/x/net/ipv4" ) -func benchmarkUDPListener() (net.PacketConn, net.Addr, error) { - c, err := net.ListenPacket("udp4", "127.0.0.1:0") +func BenchmarkReadWriteUnicast(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp4") if err != nil { - return nil, nil, err - } - dst, err := net.ResolveUDPAddr("udp4", c.LocalAddr().String()) - if err != nil { - c.Close() - return nil, nil, err - } - return c, dst, nil -} - -func BenchmarkReadWriteNetUDP(b *testing.B) { - c, dst, err := benchmarkUDPListener() - if err != nil { - b.Fatal(err) + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) } defer c.Close() + dst := c.LocalAddr() wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128) - b.ResetTimer() - for i := 0; i < b.N; i++ { - benchmarkReadWriteNetUDP(b, c, wb, rb, dst) - } -} - -func benchmarkReadWriteNetUDP(b *testing.B, c net.PacketConn, wb, rb []byte, dst net.Addr) { - if _, err := c.WriteTo(wb, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(rb); err != nil { - b.Fatal(err) - } -} - -func BenchmarkReadWriteIPv4UDP(b *testing.B) { - c, dst, err := benchmarkUDPListener() - if err != nil { - b.Fatal(err) - } - defer c.Close() - - p := ipv4.NewPacketConn(c) - defer p.Close() - cf := ipv4.FlagTTL | ipv4.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128) - b.ResetTimer() - for i := 0; i < b.N; i++ { - benchmarkReadWriteIPv4UDP(b, p, wb, rb, dst, ifi) - } -} + b.Run("NetUDP", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(wb, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(rb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("IPv4UDP", func(b *testing.B) { + p := ipv4.NewPacketConn(c) + cf := ipv4.FlagTTL | ipv4.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + cm := ipv4.ControlMessage{TTL: 1} + ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) + if ifi != nil { + cm.IfIndex = ifi.Index + } -func benchmarkReadWriteIPv4UDP(b *testing.B, p *ipv4.PacketConn, wb, rb []byte, dst net.Addr, ifi *net.Interface) { - cm := ipv4.ControlMessage{TTL: 1} - if ifi != nil { - cm.IfIndex = ifi.Index - } - if n, err := p.WriteTo(wb, &cm, dst); err != nil { - b.Fatal(err) - } else if n != len(wb) { - b.Fatalf("got %v; want %v", n, len(wb)) - } - if _, _, _, err := p.ReadFrom(rb); err != nil { - b.Fatal(err) - } + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(wb, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(rb); err != nil { + b.Fatal(err) + } + } + }) } func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { @@ -95,7 +65,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { t.Skipf("not supported on %s", runtime.GOOS) } - c, err := net.ListenPacket("udp4", "127.0.0.1:0") + c, err := nettest.NewLocalPacketListener("udp4") if err != nil { t.Fatal(err) } @@ -103,11 +73,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { p := ipv4.NewPacketConn(c) defer p.Close() - dst, err := net.ResolveUDPAddr("udp4", c.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - + dst := c.LocalAddr() ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface wb := []byte("HELLO-R-U-THERE") @@ -152,7 +118,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { t.Error(err) return } else if n != len(wb) { - t.Errorf("short write: %v", n) + t.Errorf("got %d; want %d", n, len(wb)) return } } diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go index ace37d30f5..22e90c0392 100644 --- a/vendor/golang.org/x/net/ipv4/sockopt.go +++ b/vendor/golang.org/x/net/ipv4/sockopt.go @@ -4,6 +4,8 @@ package ipv4 +import "golang.org/x/net/internal/socket" + // Sticky socket options const ( ssoTOS = iota // header field for unicast packet @@ -24,16 +26,12 @@ const ( ssoLeaveSourceGroup // source-specific multicast ssoBlockSourceGroup // any-source or source-specific multicast ssoUnblockSourceGroup // any-source or source-specific multicast - ssoMax + ssoAttachFilter // attach BPF for filtering inbound traffic ) // Sticky socket option value types const ( - ssoTypeByte = iota + 1 - ssoTypeInt - ssoTypeInterface - ssoTypeICMPFilter - ssoTypeIPMreq + ssoTypeIPMreq = iota + 1 ssoTypeIPMreqn ssoTypeGroupReq ssoTypeGroupSourceReq @@ -41,6 +39,6 @@ const ( // A sockOpt represents a binding for sticky socket option. type sockOpt struct { - name int // option name, must be equal or greater than 1 - typ int // option value type, must be equal or greater than 1 + socket.Option + typ int // hint for option value type; optional } diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go deleted file mode 100644 index 8092f1db08..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go +++ /dev/null @@ -1,83 +0,0 @@ -// 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. - -// +build darwin dragonfly freebsd netbsd openbsd solaris windows - -package ipv4 - -import "net" - -func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { - if ifi == nil { - return nil - } - ifat, err := ifi.Addrs() - if err != nil { - return err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := ifa.IP.To4(); ip != nil { - copy(mreq.Interface[:], ip) - return nil - } - case *net.IPNet: - if ip := ifa.IP.To4(); ip != nil { - copy(mreq.Interface[:], ip) - return nil - } - } - } - return errNoSuchInterface -} - -func netIP4ToInterface(ip net.IP) (*net.Interface, error) { - ift, err := net.Interfaces() - if err != nil { - return nil, err - } - for _, ifi := range ift { - ifat, err := ifi.Addrs() - if err != nil { - return nil, err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip.Equal(ifa.IP) { - return &ifi, nil - } - case *net.IPNet: - if ip.Equal(ifa.IP) { - return &ifi, nil - } - } - } - } - return nil, errNoSuchInterface -} - -func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { - if ifi == nil { - return net.IPv4zero.To4(), nil - } - ifat, err := ifi.Addrs() - if err != nil { - return nil, err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := ifa.IP.To4(); ip != nil { - return ip, nil - } - case *net.IPNet: - if ip := ifa.IP.To4(); ip != nil { - return ip, nil - } - } - } - return nil, errNoSuchInterface -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go deleted file mode 100644 index 2259a39033..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go +++ /dev/null @@ -1,46 +0,0 @@ -// 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. - -// +build darwin dragonfly freebsd netbsd openbsd solaris windows - -package ipv4 - -import ( - "net" - "os" - "unsafe" - - "golang.org/x/net/internal/iana" -) - -func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { - mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} - if err := setIPMreqInterface(&mreq, ifi); err != nil { - return err - } - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreq), sizeofIPMreq)) -} - -func getsockoptInterface(s uintptr, name int) (*net.Interface, error) { - var b [4]byte - l := uint32(4) - if err := getsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), &l); err != nil { - return nil, os.NewSyscallError("getsockopt", err) - } - ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) - if err != nil { - return nil, err - } - return ifi, nil -} - -func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error { - ip, err := netInterfaceToIP4(ifi) - if err != nil { - return err - } - var b [4]byte - copy(b[:], ip) - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), uint32(4))) -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go deleted file mode 100644 index e655635ecb..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go +++ /dev/null @@ -1,21 +0,0 @@ -// 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. - -// +build !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import "net" - -func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func getsockoptInterface(s uintptr, name int) (*net.Interface, error) { - return nil, errOpNoSupport -} - -func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go deleted file mode 100644 index 0c7f0f8166..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go +++ /dev/null @@ -1,17 +0,0 @@ -// 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 !darwin,!freebsd,!linux - -package ipv4 - -import "net" - -func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) { - return nil, errOpNoSupport -} - -func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go deleted file mode 100644 index 92daffb0d3..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go +++ /dev/null @@ -1,42 +0,0 @@ -// 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 darwin freebsd linux - -package ipv4 - -import ( - "net" - "os" - "unsafe" - - "golang.org/x/net/internal/iana" -) - -func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) { - var mreqn ipMreqn - l := uint32(sizeofIPMreqn) - if err := getsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), &l); err != nil { - return nil, os.NewSyscallError("getsockopt", err) - } - if mreqn.Ifindex == 0 { - return nil, nil - } - ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) - if err != nil { - return nil, err - } - return ifi, nil -} - -func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) error { - var mreqn ipMreqn - if ifi != nil { - mreqn.Ifindex = int32(ifi.Index) - } - if grp != nil { - mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} - } - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), sizeofIPMreqn)) -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go index d80680373d..e96955bc18 100644 --- a/vendor/golang.org/x/net/ipv4/sockopt_posix.go +++ b/vendor/golang.org/x/net/ipv4/sockopt_posix.go @@ -8,115 +8,64 @@ package ipv4 import ( "net" - "os" "unsafe" - "golang.org/x/net/internal/iana" + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" ) -func getInt(s uintptr, opt *sockOpt) (int, error) { - if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) { - return 0, errOpNoSupport - } - var i int32 - var b byte - p := unsafe.Pointer(&i) - l := uint32(4) - if opt.typ == ssoTypeByte { - p = unsafe.Pointer(&b) - l = 1 - } - if err := getsockopt(s, iana.ProtocolIP, opt.name, p, &l); err != nil { - return 0, os.NewSyscallError("getsockopt", err) - } - if opt.typ == ssoTypeByte { - return int(b), nil - } - return int(i), nil -} - -func setInt(s uintptr, opt *sockOpt, v int) error { - if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) { - return errOpNoSupport - } - i := int32(v) - var b byte - p := unsafe.Pointer(&i) - l := uint32(4) - if opt.typ == ssoTypeByte { - b = byte(v) - p = unsafe.Pointer(&b) - l = 1 - } - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, opt.name, p, l)) -} - -func getInterface(s uintptr, opt *sockOpt) (*net.Interface, error) { - if opt.name < 1 { - return nil, errOpNoSupport - } - switch opt.typ { - case ssoTypeInterface: - return getsockoptInterface(s, opt.name) +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + switch so.typ { case ssoTypeIPMreqn: - return getsockoptIPMreqn(s, opt.name) + return so.getIPMreqn(c) default: - return nil, errOpNoSupport + return so.getMulticastIf(c) } } -func setInterface(s uintptr, opt *sockOpt, ifi *net.Interface) error { - if opt.name < 1 { - return errOpNoSupport - } - switch opt.typ { - case ssoTypeInterface: - return setsockoptInterface(s, opt.name, ifi) +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + switch so.typ { case ssoTypeIPMreqn: - return setsockoptIPMreqn(s, opt.name, ifi, nil) + return so.setIPMreqn(c, ifi, nil) default: - return errOpNoSupport + return so.setMulticastIf(c, ifi) } } -func getICMPFilter(s uintptr, opt *sockOpt) (*ICMPFilter, error) { - if opt.name < 1 || opt.typ != ssoTypeICMPFilter { - return nil, errOpNoSupport +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, err } - var f ICMPFilter - l := uint32(sizeofICMPFilter) - if err := getsockopt(s, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.icmpFilter), &l); err != nil { - return nil, os.NewSyscallError("getsockopt", err) + if n != sizeofICMPFilter { + return nil, errOpNoSupport } - return &f, nil + return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil } -func setICMPFilter(s uintptr, opt *sockOpt, f *ICMPFilter) error { - if opt.name < 1 || opt.typ != ssoTypeICMPFilter { - return errOpNoSupport - } - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.icmpFilter), sizeofICMPFilter)) +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + b := (*[sizeofICMPFilter]byte)(unsafe.Pointer(f))[:sizeofICMPFilter] + return so.Set(c, b) } -func setGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error { - if opt.name < 1 { - return errOpNoSupport - } - switch opt.typ { +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + switch so.typ { case ssoTypeIPMreq: - return setsockoptIPMreq(s, opt.name, ifi, grp) + return so.setIPMreq(c, ifi, grp) case ssoTypeIPMreqn: - return setsockoptIPMreqn(s, opt.name, ifi, grp) + return so.setIPMreqn(c, ifi, grp) case ssoTypeGroupReq: - return setsockoptGroupReq(s, opt.name, ifi, grp) + return so.setGroupReq(c, ifi, grp) default: return errOpNoSupport } } -func setSourceGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error { - if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq { - return errOpNoSupport - } - return setsockoptGroupSourceReq(s, opt.name, ifi, grp, src) +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return so.setGroupSourceReq(c, ifi, grp, src) +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return so.setAttachFilter(c, f) } diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go deleted file mode 100644 index 02873962e9..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go +++ /dev/null @@ -1,17 +0,0 @@ -// 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 !darwin,!freebsd,!linux,!solaris - -package ipv4 - -import "net" - -func setsockoptGroupReq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func setsockoptGroupSourceReq(s uintptr, name int, ifi *net.Interface, grp, src net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go deleted file mode 100644 index c9af55b91f..0000000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go +++ /dev/null @@ -1,61 +0,0 @@ -// 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 darwin freebsd linux solaris - -package ipv4 - -import ( - "net" - "os" - "unsafe" - - "golang.org/x/net/internal/iana" -) - -var freebsd32o64 bool - -func setsockoptGroupReq(s uintptr, name int, ifi *net.Interface, grp net.IP) error { - var gr groupReq - if ifi != nil { - gr.Interface = uint32(ifi.Index) - } - gr.setGroup(grp) - var p unsafe.Pointer - var l uint32 - if freebsd32o64 { - var d [sizeofGroupReq + 4]byte - s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - p = unsafe.Pointer(&d[0]) - l = sizeofGroupReq + 4 - } else { - p = unsafe.Pointer(&gr) - l = sizeofGroupReq - } - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, p, l)) -} - -func setsockoptGroupSourceReq(s uintptr, name int, ifi *net.Interface, grp, src net.IP) error { - var gsr groupSourceReq - if ifi != nil { - gsr.Interface = uint32(ifi.Index) - } - gsr.setSourceGroup(grp, src) - var p unsafe.Pointer - var l uint32 - if freebsd32o64 { - var d [sizeofGroupSourceReq + 4]byte - s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - p = unsafe.Pointer(&d[0]) - l = sizeofGroupSourceReq + 4 - } else { - p = unsafe.Pointer(&gsr) - l = sizeofGroupSourceReq - } - return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, p, l)) -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go index 4ff609917a..23249b782e 100644 --- a/vendor/golang.org/x/net/ipv4/sockopt_stub.go +++ b/vendor/golang.org/x/net/ipv4/sockopt_stub.go @@ -2,10 +2,41 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv4 -func setInt(s uintptr, opt *sockOpt, v int) error { +import ( + "net" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + return nil, errOpNoSupport +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + return errOpNoSupport +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + return nil, errOpNoSupport +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + return errOpNoSupport +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { return errOpNoSupport } diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go new file mode 100644 index 0000000000..0388cba00c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq.go @@ -0,0 +1,119 @@ +// 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. + +// +build darwin dragonfly freebsd netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} + if err := setIPMreqInterface(&mreq, ifi); err != nil { + return err + } + b := (*[sizeofIPMreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPMreq] + return so.Set(c, b) +} + +func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { + var b [4]byte + if _, err := so.Get(c, b[:]); err != nil { + return nil, err + } + ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) + if err != nil { + return nil, err + } + return ifi, nil +} + +func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { + ip, err := netInterfaceToIP4(ifi) + if err != nil { + return err + } + var b [4]byte + copy(b[:], ip) + return so.Set(c, b[:]) +} + +func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { + if ifi == nil { + return nil + } + ifat, err := ifi.Addrs() + if err != nil { + return err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + } + } + return errNoSuchInterface +} + +func netIP4ToInterface(ip net.IP) (*net.Interface, error) { + ift, err := net.Interfaces() + if err != nil { + return nil, err + } + for _, ifi := range ift { + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + case *net.IPNet: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + } + } + } + return nil, errNoSuchInterface +} + +func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { + if ifi == nil { + return net.IPv4zero.To4(), nil + } + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + } + } + return nil, errNoSuchInterface +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go new file mode 100644 index 0000000000..f3919208b6 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go @@ -0,0 +1,25 @@ +// Copyright 2017 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 !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { + return nil, errOpNoSupport +} + +func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go new file mode 100644 index 0000000000..1f24f69f3b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go @@ -0,0 +1,42 @@ +// 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 darwin freebsd linux + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { + b := make([]byte, so.Len) + if _, err := so.Get(c, b); err != nil { + return nil, err + } + mreqn := (*ipMreqn)(unsafe.Pointer(&b[0])) + if mreqn.Ifindex == 0 { + return nil, nil + } + ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) + if err != nil { + return nil, err + } + return ifi, nil +} + +func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var mreqn ipMreqn + if ifi != nil { + mreqn.Ifindex = int32(ifi.Index) + } + if grp != nil { + mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} + } + b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go new file mode 100644 index 0000000000..0711d3d786 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go @@ -0,0 +1,21 @@ +// 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 !darwin,!freebsd,!linux + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { + return nil, errOpNoSupport +} + +func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf.go b/vendor/golang.org/x/net/ipv4/sys_bpf.go new file mode 100644 index 0000000000..9f30b7308e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bpf.go @@ -0,0 +1,23 @@ +// Copyright 2017 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 linux + +package ipv4 + +import ( + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + prog := sockFProg{ + Len: uint16(len(f)), + Filter: (*sockFilter)(unsafe.Pointer(&f[0])), + } + b := (*[sizeofSockFprog]byte)(unsafe.Pointer(&prog))[:sizeofSockFprog] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go new file mode 100644 index 0000000000..9a2132093d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go @@ -0,0 +1,16 @@ +// Copyright 2017 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 !linux + +package ipv4 + +import ( + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go index 203033db0f..58256dd9d6 100644 --- a/vendor/golang.org/x/net/ipv4/sys_bsd.go +++ b/vendor/golang.org/x/net/ipv4/sys_bsd.go @@ -2,13 +2,16 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build dragonfly netbsd +// +build netbsd openbsd package ipv4 import ( "net" "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -18,17 +21,17 @@ var ( ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, } - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, - ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, - ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, - ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, } ) diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go index abfffca871..e8fb191692 100644 --- a/vendor/golang.org/x/net/ipv4/sys_darwin.go +++ b/vendor/golang.org/x/net/ipv4/sys_darwin.go @@ -10,6 +10,9 @@ import ( "strings" "syscall" "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -19,19 +22,19 @@ var ( ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, } - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, - ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, - ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoStripHeader: {sysIP_STRIPHDR, ssoTypeInt}, - ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, - ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, } ) @@ -57,21 +60,14 @@ func init() { ctlOpts[ctlPacketInfo].length = sizeofInetPktinfo ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo ctlOpts[ctlPacketInfo].parse = parsePacketInfo - sockOpts[ssoPacketInfo].name = sysIP_RECVPKTINFO - sockOpts[ssoPacketInfo].typ = ssoTypeInt - sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn - sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP - sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq - sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP - sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq - sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP - sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq - sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP - sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq - sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE - sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq - sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE - sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq + sockOpts[ssoPacketInfo] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}} + sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} + sockOpts[ssoJoinGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} + sockOpts[ssoLeaveGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} + sockOpts[ssoJoinSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} + sockOpts[ssoLeaveSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} + sockOpts[ssoBlockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} + sockOpts[ssoUnblockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} } func (pi *inetPktinfo) setIfindex(i int) { diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go new file mode 100644 index 0000000000..859764f33a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go @@ -0,0 +1,35 @@ +// Copyright 2017 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 ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go index fceffe98e5..b80032454a 100644 --- a/vendor/golang.org/x/net/ipv4/sys_freebsd.go +++ b/vendor/golang.org/x/net/ipv4/sys_freebsd.go @@ -10,6 +10,9 @@ import ( "strings" "syscall" "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -19,29 +22,29 @@ var ( ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, } - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, - ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, - ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, - ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, - ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, } ) func init() { freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") if freebsdVersion >= 1000000 { - sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn + sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} } if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { archs, _ := syscall.Sysctl("kern.supported_archs") diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go index c6c2a50676..60defe1326 100644 --- a/vendor/golang.org/x/net/ipv4/sys_linux.go +++ b/vendor/golang.org/x/net/ipv4/sys_linux.go @@ -8,6 +8,9 @@ import ( "net" "syscall" "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -16,22 +19,23 @@ var ( ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, } - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeIPMreqn}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, - ssoPacketInfo: {sysIP_PKTINFO, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoICMPFilter: {sysICMP_FILTER, ssoTypeICMPFilter}, - ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, - ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, - ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoAttachFilter: {Option: socket.Option{Level: sysSOL_SOCKET, Name: sysSO_ATTACH_FILTER, Len: sizeofSockFprog}}, } ) diff --git a/vendor/golang.org/x/net/ipv4/sys_linux_386.s b/vendor/golang.org/x/net/ipv4/sys_linux_386.s deleted file mode 100644 index b85551a5c1..0000000000 --- a/vendor/golang.org/x/net/ipv4/sys_linux_386.s +++ /dev/null @@ -1,8 +0,0 @@ -// 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. - -#include "textflag.h" - -TEXT ·socketcall(SB),NOSPLIT,$0-36 - JMP syscall·socketcall(SB) diff --git a/vendor/golang.org/x/net/ipv4/sys_openbsd.go b/vendor/golang.org/x/net/ipv4/sys_openbsd.go deleted file mode 100644 index d78083a285..0000000000 --- a/vendor/golang.org/x/net/ipv4/sys_openbsd.go +++ /dev/null @@ -1,32 +0,0 @@ -// 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 ipv4 - -import ( - "net" - "syscall" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeByte}, - ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, - ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt}, - ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, - ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, - } -) diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go index 879f39e0a1..832fef1e2e 100644 --- a/vendor/golang.org/x/net/ipv4/sys_solaris.go +++ b/vendor/golang.org/x/net/ipv4/sys_solaris.go @@ -8,6 +8,9 @@ import ( "net" "syscall" "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -16,21 +19,21 @@ var ( ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, } - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeByte}, - ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt}, - ssoPacketInfo: {sysIP_RECVPKTINFO, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, - ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, - ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + sockOpts = map[int]sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, } ) diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s b/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s deleted file mode 100644 index 39d76af794..0000000000 --- a/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s +++ /dev/null @@ -1,8 +0,0 @@ -// 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. - -#include "textflag.h" - -TEXT ·sysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·sysvicall6(SB) diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go new file mode 100644 index 0000000000..ae5704e77a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go @@ -0,0 +1,54 @@ +// 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 darwin freebsd linux solaris + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +var freebsd32o64 bool + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var b []byte + if freebsd32o64 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] + } + return so.Set(c, b) +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var b []byte + if freebsd32o64 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] + } + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go new file mode 100644 index 0000000000..e6b7623d0d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go @@ -0,0 +1,21 @@ +// 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 !darwin,!freebsd,!linux,!solaris + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go index d6dd812fd7..4f076473bd 100644 --- a/vendor/golang.org/x/net/ipv4/sys_stub.go +++ b/vendor/golang.org/x/net/ipv4/sys_stub.go @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv4 var ( ctlOpts = [ctlMax]ctlOpt{} - sockOpts = [ssoMax]sockOpt{} + sockOpts = map[int]*sockOpt{} ) diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go index fac00bda86..b0913d539c 100644 --- a/vendor/golang.org/x/net/ipv4/sys_windows.go +++ b/vendor/golang.org/x/net/ipv4/sys_windows.go @@ -4,6 +4,11 @@ package ipv4 +import ( + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + const ( // See ws2tcpip.h. sysIP_OPTIONS = 0x1 @@ -45,15 +50,15 @@ type ipMreqSource struct { var ( ctlOpts = [ctlMax]ctlOpt{} - sockOpts = [ssoMax]sockOpt{ - ssoTOS: {sysIP_TOS, ssoTypeInt}, - ssoTTL: {sysIP_TTL, ssoTypeInt}, - ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt}, - ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt}, - ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt}, - ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq}, - ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq}, + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, } ) diff --git a/vendor/golang.org/x/net/ipv4/syscall_linux_386.go b/vendor/golang.org/x/net/ipv4/syscall_linux_386.go deleted file mode 100644 index 84f60bfb20..0000000000 --- a/vendor/golang.org/x/net/ipv4/syscall_linux_386.go +++ /dev/null @@ -1,31 +0,0 @@ -// 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 ipv4 - -import ( - "syscall" - "unsafe" -) - -const ( - sysGETSOCKOPT = 0xf - sysSETSOCKOPT = 0xe -) - -func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - if _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 { - return error(errno) - } - return nil -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - if _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv4/syscall_solaris.go b/vendor/golang.org/x/net/ipv4/syscall_solaris.go deleted file mode 100644 index 8b0e1e447d..0000000000 --- a/vendor/golang.org/x/net/ipv4/syscall_solaris.go +++ /dev/null @@ -1,38 +0,0 @@ -// 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 ipv4 - -import ( - "syscall" - "unsafe" -) - -//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" -//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" - -//go:linkname procGetsockopt libc___xnet_getsockopt -//go:linkname procSetsockopt libc_setsockopt - -var ( - procGetsockopt uintptr - procSetsockopt uintptr -) - -func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0) - if errno != 0 { - return error(errno) - } - return nil -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - if _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv4/syscall_unix.go b/vendor/golang.org/x/net/ipv4/syscall_unix.go deleted file mode 100644 index d952763f59..0000000000 --- a/vendor/golang.org/x/net/ipv4/syscall_unix.go +++ /dev/null @@ -1,26 +0,0 @@ -// 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 darwin dragonfly freebsd linux,!386 netbsd openbsd - -package ipv4 - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 { - return error(errno) - } - return nil -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv4/syscall_windows.go b/vendor/golang.org/x/net/ipv4/syscall_windows.go deleted file mode 100644 index 0f42d22eba..0000000000 --- a/vendor/golang.org/x/net/ipv4/syscall_windows.go +++ /dev/null @@ -1,18 +0,0 @@ -// 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 ipv4 - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - return syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), (*int32)(unsafe.Pointer(l))) -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), int32(l)) -} diff --git a/vendor/golang.org/x/net/ipv4/unicast_test.go b/vendor/golang.org/x/net/ipv4/unicast_test.go index bce8763f78..02c089f008 100644 --- a/vendor/golang.org/x/net/ipv4/unicast_test.go +++ b/vendor/golang.org/x/net/ipv4/unicast_test.go @@ -28,18 +28,15 @@ func TestPacketConnReadWriteUnicastUDP(t *testing.T) { t.Skipf("not available on %s", runtime.GOOS) } - c, err := net.ListenPacket("udp4", "127.0.0.1:0") + c, err := nettest.NewLocalPacketListener("udp4") if err != nil { t.Fatal(err) } defer c.Close() - - dst, err := net.ResolveUDPAddr("udp4", c.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } p := ipv4.NewPacketConn(c) defer p.Close() + + dst := c.LocalAddr() cf := ipv4.FlagTTL | ipv4.FlagDst | ipv4.FlagInterface wb := []byte("HELLO-R-U-THERE") diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go index 4da672013e..c0260f0ce3 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go index 4da672013e..c0260f0ce3 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go index 4da672013e..c0260f0ce3 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go index 4da672013e..c0260f0ce3 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go index b825a18e96..f65bd9a7a6 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go index 65945bbd09..9c967eaa64 100644 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go @@ -70,6 +70,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPFilter = 0x4 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go new file mode 100644 index 0000000000..4f5fe683d5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/batch.go @@ -0,0 +1,119 @@ +// Copyright 2017 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.9 + +package ipv6 + +import ( + "net" + "runtime" + "syscall" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// PacketConn are not implemented. + +// A Message represents an IO message. +// +// type Message struct { +// Buffers [][]byte +// OOB []byte +// Addr net.Addr +// N int +// NN int +// Flags int +// } +// +// The Buffers fields represents a list of contiguous buffers, which +// can be used for vectored IO, for example, putting a header and a +// payload in each slice. +// When writing, the Buffers field must contain at least one byte to +// write. +// When reading, the Buffers field will always contain a byte to read. +// +// The OOB field contains protocol-specific control or miscellaneous +// ancillary data known as out-of-band data. +// It can be nil when not required. +// +// The Addr field specifies a destination address when writing. +// It can be nil when the underlying protocol of the endpoint uses +// connection-oriented communication. +// After a successful read, it may contain the source address on the +// received packet. +// +// The N field indicates the number of bytes read or written from/to +// Buffers. +// +// The NN field indicates the number of bytes read or written from/to +// OOB. +// +// The Flags field contains protocol-specific information on the +// received message. +type Message = socket.Message + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} diff --git a/vendor/golang.org/x/net/ipv6/bpfopt_linux.go b/vendor/golang.org/x/net/ipv6/bpfopt_linux.go deleted file mode 100644 index daf7ea853f..0000000000 --- a/vendor/golang.org/x/net/ipv6/bpfopt_linux.go +++ /dev/null @@ -1,28 +0,0 @@ -// 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 ipv6 - -import ( - "os" - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/netreflect" -) - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - prog := sockFProg{ - Len: uint16(len(filter)), - Filter: (*sockFilter)(unsafe.Pointer(&filter[0])), - } - return os.NewSyscallError("setsockopt", setsockopt(s, sysSOL_SOCKET, sysSO_ATTACH_FILTER, unsafe.Pointer(&prog), uint32(unsafe.Sizeof(prog)))) -} diff --git a/vendor/golang.org/x/net/ipv6/bpfopt_stub.go b/vendor/golang.org/x/net/ipv6/bpfopt_stub.go deleted file mode 100644 index 2e4de5f0d5..0000000000 --- a/vendor/golang.org/x/net/ipv6/bpfopt_stub.go +++ /dev/null @@ -1,16 +0,0 @@ -// 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 !linux - -package ipv6 - -import "golang.org/x/net/bpf" - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go index 56303f08d3..2da644413b 100644 --- a/vendor/golang.org/x/net/ipv6/control.go +++ b/vendor/golang.org/x/net/ipv6/control.go @@ -8,10 +8,13 @@ import ( "fmt" "net" "sync" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) // Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the -// former still support RFC 2292 only. Please be aware that almost +// former still support RFC 2292 only. Please be aware that almost // all protocol implementations prohibit using a combination of RFC // 2292 and RFC 3542 for some practical reasons. @@ -66,6 +69,105 @@ func (cm *ControlMessage) String() string { return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU) } +// Marshal returns the binary encoding of cm. +func (cm *ControlMessage) Marshal() []byte { + if cm == nil { + return nil + } + var l int + tclass := false + if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 { + tclass = true + l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) + } + hoplimit := false + if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 { + hoplimit = true + l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) + } + pktinfo := false + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) { + pktinfo = true + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + nexthop := false + if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil { + nexthop = true + l += socket.ControlMessageSpace(ctlOpts[ctlNextHop].length) + } + var b []byte + if l > 0 { + b = make([]byte, l) + bb := b + if tclass { + bb = ctlOpts[ctlTrafficClass].marshal(bb, cm) + } + if hoplimit { + bb = ctlOpts[ctlHopLimit].marshal(bb, cm) + } + if pktinfo { + bb = ctlOpts[ctlPacketInfo].marshal(bb, cm) + } + if nexthop { + bb = ctlOpts[ctlNextHop].marshal(bb, cm) + } + } + return b +} + +// Parse parses b as a control message and stores the result in cm. +func (cm *ControlMessage) Parse(b []byte) error { + ms, err := socket.ControlMessage(b).Parse() + if err != nil { + return err + } + for _, m := range ms { + lvl, typ, l, err := m.ParseHeader() + if err != nil { + return err + } + if lvl != iana.ProtocolIPv6 { + continue + } + switch { + case typ == ctlOpts[ctlTrafficClass].name && l >= ctlOpts[ctlTrafficClass].length: + ctlOpts[ctlTrafficClass].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlHopLimit].name && l >= ctlOpts[ctlHopLimit].length: + ctlOpts[ctlHopLimit].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: + ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPathMTU].name && l >= ctlOpts[ctlPathMTU].length: + ctlOpts[ctlPathMTU].parse(cm, m.Data(l)) + } + } + return nil +} + +// NewControlMessage returns a new control message. +// +// The returned message is large enough for options specified by cf. +func NewControlMessage(cf ControlFlags) []byte { + opt := rawOpt{cflags: cf} + var l int + if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) + } + if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) + } + if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlPathMTU].length) + } + var b []byte + if l > 0 { + b = make([]byte, l) + } + return b +} + // Ancillary data socket options const ( ctlTrafficClass = iota // header field diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go index d1693af1fd..9fd9eb15e3 100644 --- a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +++ b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go @@ -7,31 +7,26 @@ package ipv6 import ( - "syscall" "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_2292HOPLIMIT - m.SetLen(syscall.CmsgLen(4)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, 4) if cm != nil { - data := b[syscall.CmsgLen(0):] - nativeEndian.PutUint32(data[:4], uint32(cm.HopLimit)) + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) } - return b[syscall.CmsgSpace(4):] + return m.Next(4) } func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_2292PKTINFO - m.SetLen(syscall.CmsgLen(sizeofInet6Pktinfo)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292PKTINFO, sizeofInet6Pktinfo) if cm != nil { - pi := (*inet6Pktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)])) + pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { copy(pi.Addr[:], ip) } @@ -39,17 +34,15 @@ func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte { pi.setIfindex(cm.IfIndex) } } - return b[syscall.CmsgSpace(sizeofInet6Pktinfo):] + return m.Next(sizeofInet6Pktinfo) } func marshal2292NextHop(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_2292NEXTHOP - m.SetLen(syscall.CmsgLen(sizeofSockaddrInet6)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292NEXTHOP, sizeofSockaddrInet6) if cm != nil { - sa := (*sockaddrInet6)(unsafe.Pointer(&b[syscall.CmsgLen(0)])) + sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) sa.setSockaddr(cm.NextHop, cm.IfIndex) } - return b[syscall.CmsgSpace(sizeofSockaddrInet6):] + return m.Next(sizeofSockaddrInet6) } diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go index 2800df4bc9..eec529c205 100644 --- a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +++ b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go @@ -7,51 +7,44 @@ package ipv6 import ( - "syscall" + "net" "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) func marshalTrafficClass(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_TCLASS - m.SetLen(syscall.CmsgLen(4)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_TCLASS, 4) if cm != nil { - data := b[syscall.CmsgLen(0):] - nativeEndian.PutUint32(data[:4], uint32(cm.TrafficClass)) + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.TrafficClass)) } - return b[syscall.CmsgSpace(4):] + return m.Next(4) } func parseTrafficClass(cm *ControlMessage, b []byte) { - cm.TrafficClass = int(nativeEndian.Uint32(b[:4])) + cm.TrafficClass = int(socket.NativeEndian.Uint32(b[:4])) } func marshalHopLimit(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_HOPLIMIT - m.SetLen(syscall.CmsgLen(4)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_HOPLIMIT, 4) if cm != nil { - data := b[syscall.CmsgLen(0):] - nativeEndian.PutUint32(data[:4], uint32(cm.HopLimit)) + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) } - return b[syscall.CmsgSpace(4):] + return m.Next(4) } func parseHopLimit(cm *ControlMessage, b []byte) { - cm.HopLimit = int(nativeEndian.Uint32(b[:4])) + cm.HopLimit = int(socket.NativeEndian.Uint32(b[:4])) } func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_PKTINFO - m.SetLen(syscall.CmsgLen(sizeofInet6Pktinfo)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PKTINFO, sizeofInet6Pktinfo) if cm != nil { - pi := (*inet6Pktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)])) + pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { copy(pi.Addr[:], ip) } @@ -59,41 +52,43 @@ func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { pi.setIfindex(cm.IfIndex) } } - return b[syscall.CmsgSpace(sizeofInet6Pktinfo):] + return m.Next(sizeofInet6Pktinfo) } func parsePacketInfo(cm *ControlMessage, b []byte) { pi := (*inet6Pktinfo)(unsafe.Pointer(&b[0])) - cm.Dst = pi.Addr[:] + if len(cm.Dst) < net.IPv6len { + cm.Dst = make(net.IP, net.IPv6len) + } + copy(cm.Dst, pi.Addr[:]) cm.IfIndex = int(pi.Ifindex) } func marshalNextHop(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_NEXTHOP - m.SetLen(syscall.CmsgLen(sizeofSockaddrInet6)) + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_NEXTHOP, sizeofSockaddrInet6) if cm != nil { - sa := (*sockaddrInet6)(unsafe.Pointer(&b[syscall.CmsgLen(0)])) + sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) sa.setSockaddr(cm.NextHop, cm.IfIndex) } - return b[syscall.CmsgSpace(sizeofSockaddrInet6):] + return m.Next(sizeofSockaddrInet6) } func parseNextHop(cm *ControlMessage, b []byte) { } func marshalPathMTU(b []byte, cm *ControlMessage) []byte { - m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0])) - m.Level = iana.ProtocolIPv6 - m.Type = sysIPV6_PATHMTU - m.SetLen(syscall.CmsgLen(sizeofIPv6Mtuinfo)) - return b[syscall.CmsgSpace(sizeofIPv6Mtuinfo):] + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PATHMTU, sizeofIPv6Mtuinfo) + return m.Next(sizeofIPv6Mtuinfo) } func parsePathMTU(cm *ControlMessage, b []byte) { mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) - cm.Dst = mi.Addr.Addr[:] + if len(cm.Dst) < net.IPv6len { + cm.Dst = make(net.IP, net.IPv6len) + } + copy(cm.Dst, mi.Addr.Addr[:]) cm.IfIndex = int(mi.Addr.Scope_id) cm.MTU = int(mi.Mtu) } diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go index 24b40a82d2..a045f28f74 100644 --- a/vendor/golang.org/x/net/ipv6/control_stub.go +++ b/vendor/golang.org/x/net/ipv6/control_stub.go @@ -2,22 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv6 -func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { - return errOpNoSupport -} - -func newControlMessage(opt *rawOpt) (oob []byte) { - return nil -} +import "golang.org/x/net/internal/socket" -func parseControlMessage(b []byte) (*ControlMessage, error) { - return nil, errOpNoSupport -} - -func marshalControlMessage(cm *ControlMessage) (oob []byte) { - return nil +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + return errOpNoSupport } diff --git a/vendor/golang.org/x/net/ipv6/control_test.go b/vendor/golang.org/x/net/ipv6/control_test.go new file mode 100644 index 0000000000..c186ca99f8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_test.go @@ -0,0 +1,21 @@ +// Copyright 2017 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 ipv6_test + +import ( + "testing" + + "golang.org/x/net/ipv6" +) + +func TestControlMessageParseWithFuzz(t *testing.T) { + var cm ipv6.ControlMessage + for _, fuzz := range []string{ + "\f\x00\x00\x00)\x00\x00\x00.\x00\x00\x00", + "\f\x00\x00\x00)\x00\x00\x00,\x00\x00\x00", + } { + cm.Parse([]byte(fuzz)) + } +} diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go index 7bd421053e..66515060a8 100644 --- a/vendor/golang.org/x/net/ipv6/control_unix.go +++ b/vendor/golang.org/x/net/ipv6/control_unix.go @@ -6,18 +6,13 @@ package ipv6 -import ( - "os" - "syscall" +import "golang.org/x/net/internal/socket" - "golang.org/x/net/internal/iana" -) - -func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { opt.Lock() defer opt.Unlock() - if cf&FlagTrafficClass != 0 && sockOpts[ssoReceiveTrafficClass].name > 0 { - if err := setInt(s, &sockOpts[ssoReceiveTrafficClass], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -26,8 +21,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { opt.clear(FlagTrafficClass) } } - if cf&FlagHopLimit != 0 && sockOpts[ssoReceiveHopLimit].name > 0 { - if err := setInt(s, &sockOpts[ssoReceiveHopLimit], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -36,8 +31,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { opt.clear(FlagHopLimit) } } - if cf&flagPacketInfo != 0 && sockOpts[ssoReceivePacketInfo].name > 0 { - if err := setInt(s, &sockOpts[ssoReceivePacketInfo], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -46,8 +41,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { opt.clear(cf & flagPacketInfo) } } - if cf&FlagPathMTU != 0 && sockOpts[ssoReceivePathMTU].name > 0 { - if err := setInt(s, &sockOpts[ssoReceivePathMTU], boolint(on)); err != nil { + if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { return err } if on { @@ -58,96 +53,3 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { } return nil } - -func newControlMessage(opt *rawOpt) (oob []byte) { - opt.RLock() - var l int - if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlTrafficClass].length) - } - if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlHopLimit].length) - } - if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length) - } - if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 { - l += syscall.CmsgSpace(ctlOpts[ctlPathMTU].length) - } - if l > 0 { - oob = make([]byte, l) - } - opt.RUnlock() - return -} - -func parseControlMessage(b []byte) (*ControlMessage, error) { - if len(b) == 0 { - return nil, nil - } - cmsgs, err := syscall.ParseSocketControlMessage(b) - if err != nil { - return nil, os.NewSyscallError("parse socket control message", err) - } - cm := &ControlMessage{} - for _, m := range cmsgs { - if m.Header.Level != iana.ProtocolIPv6 { - continue - } - switch int(m.Header.Type) { - case ctlOpts[ctlTrafficClass].name: - ctlOpts[ctlTrafficClass].parse(cm, m.Data[:]) - case ctlOpts[ctlHopLimit].name: - ctlOpts[ctlHopLimit].parse(cm, m.Data[:]) - case ctlOpts[ctlPacketInfo].name: - ctlOpts[ctlPacketInfo].parse(cm, m.Data[:]) - case ctlOpts[ctlPathMTU].name: - ctlOpts[ctlPathMTU].parse(cm, m.Data[:]) - } - } - return cm, nil -} - -func marshalControlMessage(cm *ControlMessage) (oob []byte) { - if cm == nil { - return - } - var l int - tclass := false - if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 { - tclass = true - l += syscall.CmsgSpace(ctlOpts[ctlTrafficClass].length) - } - hoplimit := false - if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 { - hoplimit = true - l += syscall.CmsgSpace(ctlOpts[ctlHopLimit].length) - } - pktinfo := false - if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) { - pktinfo = true - l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length) - } - nexthop := false - if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil { - nexthop = true - l += syscall.CmsgSpace(ctlOpts[ctlNextHop].length) - } - if l > 0 { - oob = make([]byte, l) - b := oob - if tclass { - b = ctlOpts[ctlTrafficClass].marshal(b, cm) - } - if hoplimit { - b = ctlOpts[ctlHopLimit].marshal(b, cm) - } - if pktinfo { - b = ctlOpts[ctlPacketInfo].marshal(b, cm) - } - if nexthop { - b = ctlOpts[ctlNextHop].marshal(b, cm) - } - } - return -} diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go index feef6ab86a..ef2563b3fc 100644 --- a/vendor/golang.org/x/net/ipv6/control_windows.go +++ b/vendor/golang.org/x/net/ipv6/control_windows.go @@ -4,24 +4,13 @@ package ipv6 -import "syscall" +import ( + "syscall" -func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error { - // TODO(mikio): implement this - return syscall.EWINDOWS -} - -func newControlMessage(opt *rawOpt) (oob []byte) { - // TODO(mikio): implement this - return nil -} + "golang.org/x/net/internal/socket" +) -func parseControlMessage(b []byte) (*ControlMessage, error) { +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { // TODO(mikio): implement this - return nil, syscall.EWINDOWS -} - -func marshalControlMessage(cm *ControlMessage) (oob []byte) { - // TODO(mikio): implement this - return nil + return syscall.EWINDOWS } diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go index 8a967fd214..3308cb2c38 100644 --- a/vendor/golang.org/x/net/ipv6/defs_linux.go +++ b/vendor/golang.org/x/net/ipv6/defs_linux.go @@ -120,6 +120,8 @@ const ( sizeofGroupSourceReq = C.sizeof_struct_group_source_req sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter + + sizeofSockFprog = C.sizeof_struct_sock_fprog ) type kernelSockaddrStorage C.struct___kernel_sockaddr_storage diff --git a/vendor/golang.org/x/net/ipv6/dgramopt.go b/vendor/golang.org/x/net/ipv6/dgramopt.go new file mode 100644 index 0000000000..703dafe84a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/dgramopt.go @@ -0,0 +1,302 @@ +// 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 ipv6 + +import ( + "net" + "syscall" + + "golang.org/x/net/bpf" +) + +// MulticastHopLimit returns the hop limit field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastHopLimit() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastHopLimit] + if !ok { + return 0, errOpNoSupport + } + return so.GetInt(c.Conn) +} + +// SetMulticastHopLimit sets the hop limit field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastHopLimit] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, hoplim) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return nil, errOpNoSupport + } + return so.getMulticastInterface(c.Conn) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return errOpNoSupport + } + return so.setMulticastInterface(c.Conn, ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return false, errOpNoSupport + } + on, err := so.GetInt(c.Conn) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoJoinGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoLeaveGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoJoinSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoLeaveSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoBlockSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoUnblockSourceGroup] + if !ok { + return errOpNoSupport + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// Checksum reports whether the kernel will compute, store or verify a +// checksum for both incoming and outgoing packets. If on is true, it +// returns an offset in bytes into the data of where the checksum +// field is located. +func (c *dgramOpt) Checksum() (on bool, offset int, err error) { + if !c.ok() { + return false, 0, syscall.EINVAL + } + so, ok := sockOpts[ssoChecksum] + if !ok { + return false, 0, errOpNoSupport + } + offset, err = so.GetInt(c.Conn) + if err != nil { + return false, 0, err + } + if offset < 0 { + return false, 0, nil + } + return true, offset, nil +} + +// SetChecksum enables the kernel checksum processing. If on is ture, +// the offset should be an offset in bytes into the data of where the +// checksum field is located. +func (c *dgramOpt) SetChecksum(on bool, offset int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoChecksum] + if !ok { + return errOpNoSupport + } + if !on { + offset = -1 + } + return so.SetInt(c.Conn, offset) +} + +// ICMPFilter returns an ICMP filter. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, syscall.EINVAL + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return nil, errOpNoSupport + } + return so.getICMPFilter(c.Conn) +} + +// SetICMPFilter deploys the ICMP filter. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return errOpNoSupport + } + return so.setICMPFilter(c.Conn, f) +} + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoAttachFilter] + if !ok { + return errOpNoSupport + } + return so.setBPF(c.Conn, filter) +} diff --git a/vendor/golang.org/x/net/ipv6/dgramopt_posix.go b/vendor/golang.org/x/net/ipv6/dgramopt_posix.go deleted file mode 100644 index 5714308488..0000000000 --- a/vendor/golang.org/x/net/ipv6/dgramopt_posix.go +++ /dev/null @@ -1,290 +0,0 @@ -// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/netreflect" -) - -// MulticastHopLimit returns the hop limit field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastHopLimit() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return 0, err - } - return getInt(s, &sockOpts[ssoMulticastHopLimit]) -} - -// SetMulticastHopLimit sets the hop limit field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoMulticastHopLimit], hoplim) -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return nil, err - } - return getInterface(s, &sockOpts[ssoMulticastInterface]) -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setInterface(s, &sockOpts[ssoMulticastInterface], ifi) -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - if !c.ok() { - return false, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return false, err - } - on, err := getInt(s, &sockOpts[ssoMulticastLoopback]) - if err != nil { - return false, err - } - return on == 1, nil -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoMulticastLoopback], boolint(on)) -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - return setGroup(s, &sockOpts[ssoJoinGroup], ifi, grp) -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - return setGroup(s, &sockOpts[ssoLeaveGroup], ifi, grp) -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoJoinSourceGroup], ifi, grp, src) -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src) -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoBlockSourceGroup], ifi, grp, src) -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return setSourceGroup(s, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src) -} - -// Checksum reports whether the kernel will compute, store or verify a -// checksum for both incoming and outgoing packets. If on is true, it -// returns an offset in bytes into the data of where the checksum -// field is located. -func (c *dgramOpt) Checksum() (on bool, offset int, err error) { - if !c.ok() { - return false, 0, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return false, 0, err - } - offset, err = getInt(s, &sockOpts[ssoChecksum]) - if err != nil { - return false, 0, err - } - if offset < 0 { - return false, 0, nil - } - return true, offset, nil -} - -// SetChecksum enables the kernel checksum processing. If on is ture, -// the offset should be an offset in bytes into the data of where the -// checksum field is located. -func (c *dgramOpt) SetChecksum(on bool, offset int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - if !on { - offset = -1 - } - return setInt(s, &sockOpts[ssoChecksum], offset) -} - -// ICMPFilter returns an ICMP filter. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return nil, err - } - return getICMPFilter(s, &sockOpts[ssoICMPFilter]) -} - -// SetICMPFilter deploys the ICMP filter. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.PacketSocketOf(c.PacketConn) - if err != nil { - return err - } - return setICMPFilter(s, &sockOpts[ssoICMPFilter], f) -} diff --git a/vendor/golang.org/x/net/ipv6/dgramopt_stub.go b/vendor/golang.org/x/net/ipv6/dgramopt_stub.go deleted file mode 100644 index bc3290ad84..0000000000 --- a/vendor/golang.org/x/net/ipv6/dgramopt_stub.go +++ /dev/null @@ -1,119 +0,0 @@ -// 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 nacl plan9 - -package ipv6 - -import "net" - -// MulticastHopLimit returns the hop limit field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastHopLimit() (int, error) { - return 0, errOpNoSupport -} - -// SetMulticastHopLimit sets the hop limit field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { - return errOpNoSupport -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - return nil, errOpNoSupport -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - return errOpNoSupport -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - return false, errOpNoSupport -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - return errOpNoSupport -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - return errOpNoSupport -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - return errOpNoSupport -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - return errOpNoSupport -} - -// Checksum reports whether the kernel will compute, store or verify a -// checksum for both incoming and outgoing packets. If on is true, it -// returns an offset in bytes into the data of where the checksum -// field is located. -func (c *dgramOpt) Checksum() (on bool, offset int, err error) { - return false, 0, errOpNoSupport -} - -// SetChecksum enables the kernel checksum processing. If on is ture, -// the offset should be an offset in bytes into the data of where the -// checksum field is located. -func (c *dgramOpt) SetChecksum(on bool, offset int) error { - return errOpNoSupport -} - -// ICMPFilter returns an ICMP filter. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - return nil, errOpNoSupport -} - -// SetICMPFilter deploys the ICMP filter. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go index 88383e9156..664a97dea1 100644 --- a/vendor/golang.org/x/net/ipv6/doc.go +++ b/vendor/golang.org/x/net/ipv6/doc.go @@ -8,7 +8,7 @@ // The package provides IP-level socket options that allow // manipulation of IPv6 facilities. // -// The IPv6 protocol is defined in RFC 2460. +// The IPv6 protocol is defined in RFC 8200. // Socket interface extensions are defined in RFC 3493, RFC 3542 and // RFC 3678. // MLDv1 and MLDv2 are defined in RFC 2710 and RFC 3810. @@ -22,7 +22,7 @@ // // The options for unicasting are available for net.TCPConn, // net.UDPConn and net.IPConn which are created as network connections -// that use the IPv6 transport. When a single TCP connection carrying +// that use the IPv6 transport. When a single TCP connection carrying // a data flow of multiple packets needs to indicate the flow is // important, Conn is used to set the traffic class field on the IPv6 // header for each packet. @@ -57,7 +57,7 @@ // // The options for multicasting are available for net.UDPConn and // net.IPconn which are created as network connections that use the -// IPv6 transport. A few network facilities must be prepared before +// IPv6 transport. A few network facilities must be prepared before // you begin multicasting, at a minimum joining network interfaces and // multicast groups. // @@ -81,7 +81,7 @@ // defer c.Close() // // Second, the application joins multicast groups, starts listening to -// the groups on the specified network interfaces. Note that the +// the groups on the specified network interfaces. Note that the // service port for transport layer protocol does not matter with this // operation as joining groups affects only network and link layer // protocols, such as IPv6 and Ethernet. @@ -95,7 +95,7 @@ // } // // The application might set per packet control message transmissions -// between the protocol stack within the kernel. When the application +// between the protocol stack within the kernel. When the application // needs a destination address on an incoming packet, // SetControlMessage of PacketConn is used to enable control message // transmissions. @@ -144,7 +144,7 @@ // More multicasting // // An application that uses PacketConn may join multiple multicast -// groups. For example, a UDP listener with port 1024 might join two +// groups. For example, a UDP listener with port 1024 might join two // different groups across over two different network interfaces by // using: // @@ -165,7 +165,7 @@ // } // // It is possible for multiple UDP listeners that listen on the same -// UDP port to join the same multicast group. The net package will +// UDP port to join the same multicast group. The net package will // provide a socket that listens to a wildcard address with reusable // UDP port when an appropriate multicast address prefix is passed to // the net.ListenPacket or net.ListenUDP. diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go index f6a68ab41f..0624c17404 100644 --- a/vendor/golang.org/x/net/ipv6/endpoint.go +++ b/vendor/golang.org/x/net/ipv6/endpoint.go @@ -9,7 +9,7 @@ import ( "syscall" "time" - "golang.org/x/net/internal/netreflect" + "golang.org/x/net/internal/socket" ) // BUG(mikio): On Windows, the JoinSourceSpecificGroup, @@ -25,7 +25,7 @@ type Conn struct { } type genericOpt struct { - net.Conn + *socket.Conn } func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } @@ -33,14 +33,14 @@ func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } // PathMTU returns a path MTU value for the destination associated // with the endpoint. func (c *Conn) PathMTU() (int, error) { - if !c.genericOpt.ok() { + if !c.ok() { return 0, syscall.EINVAL } - s, err := netreflect.SocketOf(c.genericOpt.Conn) - if err != nil { - return 0, err + so, ok := sockOpts[ssoPathMTU] + if !ok { + return 0, errOpNoSupport } - _, mtu, err := getMTUInfo(s, &sockOpts[ssoPathMTU]) + _, mtu, err := so.getMTUInfo(c.Conn) if err != nil { return 0, err } @@ -49,14 +49,15 @@ func (c *Conn) PathMTU() (int, error) { // NewConn returns a new Conn. func NewConn(c net.Conn) *Conn { + cc, _ := socket.NewConn(c) return &Conn{ - genericOpt: genericOpt{Conn: c}, + genericOpt: genericOpt{Conn: cc}, } } // A PacketConn represents a packet network endpoint that uses IPv6 -// transport. It is used to control several IP-level socket options -// including IPv6 header manipulation. It also provides datagram +// transport. It is used to control several IP-level socket options +// including IPv6 header manipulation. It also provides datagram // based network I/O methods specific to the IPv6 and higher layer // protocols such as OSPF, GRE, and UDP. type PacketConn struct { @@ -66,10 +67,10 @@ type PacketConn struct { } type dgramOpt struct { - net.PacketConn + *socket.Conn } -func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil } +func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } // SetControlMessage allows to receive the per packet basis IP-level // socket options. @@ -77,11 +78,7 @@ func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { if !c.payloadHandler.ok() { return syscall.EINVAL } - s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn) - if err != nil { - return err - } - return setControlMessage(s, &c.payloadHandler.rawOpt, cf, on) + return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) } // SetDeadline sets the read and write deadlines associated with the @@ -122,9 +119,10 @@ func (c *PacketConn) Close() error { // NewPacketConn returns a new PacketConn using c as its underlying // transport. func NewPacketConn(c net.PacketConn) *PacketConn { + cc, _ := socket.NewConn(c.(net.Conn)) return &PacketConn{ - genericOpt: genericOpt{Conn: c.(net.Conn)}, - dgramOpt: dgramOpt{PacketConn: c}, - payloadHandler: payloadHandler{PacketConn: c}, + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, } } diff --git a/vendor/golang.org/x/net/ipv6/genericopt.go b/vendor/golang.org/x/net/ipv6/genericopt.go new file mode 100644 index 0000000000..e9dbc2e189 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/genericopt.go @@ -0,0 +1,58 @@ +// 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 ipv6 + +import "syscall" + +// TrafficClass returns the traffic class field value for outgoing +// packets. +func (c *genericOpt) TrafficClass() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + so, ok := sockOpts[ssoTrafficClass] + if !ok { + return 0, errOpNoSupport + } + return so.GetInt(c.Conn) +} + +// SetTrafficClass sets the traffic class field value for future +// outgoing packets. +func (c *genericOpt) SetTrafficClass(tclass int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoTrafficClass] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, tclass) +} + +// HopLimit returns the hop limit field value for outgoing packets. +func (c *genericOpt) HopLimit() (int, error) { + if !c.ok() { + return 0, syscall.EINVAL + } + so, ok := sockOpts[ssoHopLimit] + if !ok { + return 0, errOpNoSupport + } + return so.GetInt(c.Conn) +} + +// SetHopLimit sets the hop limit field value for future outgoing +// packets. +func (c *genericOpt) SetHopLimit(hoplim int) error { + if !c.ok() { + return syscall.EINVAL + } + so, ok := sockOpts[ssoHopLimit] + if !ok { + return errOpNoSupport + } + return so.SetInt(c.Conn, hoplim) +} diff --git a/vendor/golang.org/x/net/ipv6/genericopt_posix.go b/vendor/golang.org/x/net/ipv6/genericopt_posix.go deleted file mode 100644 index 0a8d9883d2..0000000000 --- a/vendor/golang.org/x/net/ipv6/genericopt_posix.go +++ /dev/null @@ -1,64 +0,0 @@ -// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "syscall" - - "golang.org/x/net/internal/netreflect" -) - -// TrafficClass returns the traffic class field value for outgoing -// packets. -func (c *genericOpt) TrafficClass() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return 0, err - } - return getInt(s, &sockOpts[ssoTrafficClass]) -} - -// SetTrafficClass sets the traffic class field value for future -// outgoing packets. -func (c *genericOpt) SetTrafficClass(tclass int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoTrafficClass], tclass) -} - -// HopLimit returns the hop limit field value for outgoing packets. -func (c *genericOpt) HopLimit() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return 0, err - } - return getInt(s, &sockOpts[ssoHopLimit]) -} - -// SetHopLimit sets the hop limit field value for future outgoing -// packets. -func (c *genericOpt) SetHopLimit(hoplim int) error { - if !c.ok() { - return syscall.EINVAL - } - s, err := netreflect.SocketOf(c.Conn) - if err != nil { - return err - } - return setInt(s, &sockOpts[ssoHopLimit], hoplim) -} diff --git a/vendor/golang.org/x/net/ipv6/genericopt_stub.go b/vendor/golang.org/x/net/ipv6/genericopt_stub.go deleted file mode 100644 index 9dfc57daec..0000000000 --- a/vendor/golang.org/x/net/ipv6/genericopt_stub.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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 nacl plan9 - -package ipv6 - -// TrafficClass returns the traffic class field value for outgoing -// packets. -func (c *genericOpt) TrafficClass() (int, error) { - return 0, errOpNoSupport -} - -// SetTrafficClass sets the traffic class field value for future -// outgoing packets. -func (c *genericOpt) SetTrafficClass(tclass int) error { - return errOpNoSupport -} - -// HopLimit returns the hop limit field value for outgoing packets. -func (c *genericOpt) HopLimit() (int, error) { - return 0, errOpNoSupport -} - -// SetHopLimit sets the hop limit field value for future outgoing -// packets. -func (c *genericOpt) SetHopLimit(hoplim int) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go index 7a42e5860b..259740132c 100644 --- a/vendor/golang.org/x/net/ipv6/helper.go +++ b/vendor/golang.org/x/net/ipv6/helper.go @@ -5,10 +5,8 @@ package ipv6 import ( - "encoding/binary" "errors" "net" - "unsafe" ) var ( @@ -17,20 +15,8 @@ var ( errInvalidConnType = errors.New("invalid conn type") errOpNoSupport = errors.New("operation not supported") errNoSuchInterface = errors.New("no such interface") - - nativeEndian binary.ByteOrder ) -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - nativeEndian = binary.LittleEndian - } else { - nativeEndian = binary.BigEndian - } -} - func boolint(b bool) int { if b { return 1 @@ -51,3 +37,21 @@ func netAddrToIP16(a net.Addr) net.IP { } return nil } + +func opAddr(a net.Addr) net.Addr { + switch a.(type) { + case *net.TCPAddr: + if a == nil { + return nil + } + case *net.UDPAddr: + if a == nil { + return nil + } + case *net.IPAddr: + if a == nil { + return nil + } + } + return a +} diff --git a/vendor/golang.org/x/net/ipv6/icmp.go b/vendor/golang.org/x/net/ipv6/icmp.go index ff21d10712..b7f48e27b8 100644 --- a/vendor/golang.org/x/net/ipv6/icmp.go +++ b/vendor/golang.org/x/net/ipv6/icmp.go @@ -29,7 +29,7 @@ func (typ ICMPType) Protocol() int { // packets. The filter belongs to a packet delivery path on a host and // it cannot interact with forwarding packets or tunnel-outer packets. // -// Note: RFC 2460 defines a reasonable role model. A node means a +// Note: RFC 8200 defines a reasonable role model. A node means a // device that implements IP. A router means a node that forwards IP // packets not explicitly addressed to itself, and a host means a node // that is not a router. diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go index 3cd84e1956..c4b9be6dbf 100644 --- a/vendor/golang.org/x/net/ipv6/icmp_stub.go +++ b/vendor/golang.org/x/net/ipv6/icmp_stub.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv6 diff --git a/vendor/golang.org/x/net/ipv6/multicastlistener_test.go b/vendor/golang.org/x/net/ipv6/multicastlistener_test.go index 044db157b0..b27713e2f5 100644 --- a/vendor/golang.org/x/net/ipv6/multicastlistener_test.go +++ b/vendor/golang.org/x/net/ipv6/multicastlistener_test.go @@ -5,7 +5,6 @@ package ipv6_test import ( - "fmt" "net" "runtime" "testing" @@ -70,13 +69,16 @@ func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) { } for _, gaddr := range udpMultipleGroupListenerTests { - c1, err := net.ListenPacket("udp6", "[ff02::]:1024") // wildcard address with reusable port + c1, err := net.ListenPacket("udp6", "[ff02::]:0") // wildcard address with reusable port if err != nil { t.Fatal(err) } defer c1.Close() - - c2, err := net.ListenPacket("udp6", "[ff02::]:1024") // wildcard address with reusable port + _, port, err := net.SplitHostPort(c1.LocalAddr().String()) + if err != nil { + t.Fatal(err) + } + c2, err := net.ListenPacket("udp6", net.JoinHostPort("ff02::", port)) // wildcard address with reusable port if err != nil { t.Fatal(err) } @@ -132,16 +134,29 @@ func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) { if err != nil { t.Fatal(err) } + port := "0" for i, ifi := range ift { ip, ok := nettest.IsMulticastCapable("ip6", &ifi) if !ok { continue } - c, err := net.ListenPacket("udp6", fmt.Sprintf("[%s%%%s]:1024", ip.String(), ifi.Name)) // unicast address with non-reusable port + c, err := net.ListenPacket("udp6", net.JoinHostPort(ip.String()+"%"+ifi.Name, port)) // unicast address with non-reusable port if err != nil { - t.Fatal(err) + // The listen may fail when the serivce is + // already in use, but it's fine because the + // purpose of this is not to test the + // bookkeeping of IP control block inside the + // kernel. + t.Log(err) + continue } defer c.Close() + if port == "0" { + _, port, err = net.SplitHostPort(c.LocalAddr().String()) + if err != nil { + t.Fatal(err) + } + } p := ipv6.NewPacketConn(c) if err := p.JoinGroup(&ifi, &gaddr); err != nil { t.Fatal(err) @@ -227,7 +242,7 @@ func TestIPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) { if !ok { continue } - c, err := net.ListenPacket("ip6:ipv6-icmp", fmt.Sprintf("%s%%%s", ip.String(), ifi.Name)) // unicast address + c, err := net.ListenPacket("ip6:ipv6-icmp", ip.String()+"%"+ifi.Name) // unicast address if err != nil { t.Fatal(err) } diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go index d9f822510e..a8197f1695 100644 --- a/vendor/golang.org/x/net/ipv6/payload.go +++ b/vendor/golang.org/x/net/ipv6/payload.go @@ -4,7 +4,11 @@ package ipv6 -import "net" +import ( + "net" + + "golang.org/x/net/internal/socket" +) // BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo // methods of PacketConn is not implemented. @@ -12,7 +16,8 @@ import "net" // A payloadHandler represents the IPv6 datagram payload handler. type payloadHandler struct { net.PacketConn + *socket.Conn rawOpt } -func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil } +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go index 3a33585ef3..4ee4b062ca 100644 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg.go +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg.go @@ -12,59 +12,24 @@ import ( ) // ReadFrom reads a payload of the received IPv6 datagram, from the -// endpoint c, copying the payload into b. It returns the number of +// endpoint c, copying the payload into b. It returns the number of // bytes copied into b, the control message cm and the source address // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { if !c.ok() { return 0, nil, nil, syscall.EINVAL } - oob := newControlMessage(&c.rawOpt) - var oobn int - switch c := c.PacketConn.(type) { - case *net.UDPConn: - if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { - return 0, nil, nil, err - } - case *net.IPConn: - if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil { - return 0, nil, nil, err - } - default: - return 0, nil, nil, errInvalidConnType - } - if cm, err = parseControlMessage(oob[:oobn]); err != nil { - return 0, nil, nil, err - } - if cm != nil { - cm.Src = netAddrToIP16(src) - } - return + return c.readFrom(b) } // WriteTo writes a payload of the IPv6 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the IPv6 header fields and the datagram path to be specified. The +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the IPv6 header fields and the datagram path to be specified. The // cm may be nil if control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { return 0, syscall.EINVAL } - oob := marshalControlMessage(cm) - if dst == nil { - return 0, errMissingAddress - } - switch c := c.PacketConn.(type) { - case *net.UDPConn: - n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) - case *net.IPConn: - n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) - default: - return 0, errInvalidConnType - } - if err != nil { - return 0, err - } - return + return c.writeTo(b, cm, dst) } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go new file mode 100644 index 0000000000..fdc6c39941 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go @@ -0,0 +1,55 @@ +// 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.9 +// +build !nacl,!plan9,!windows + +package ipv6 + +import "net" + +func (c *payloadHandler) readFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + c.rawOpt.RLock() + oob := NewControlMessage(c.rawOpt.cflags) + c.rawOpt.RUnlock() + var nn int + switch c := c.PacketConn.(type) { + case *net.UDPConn: + if n, nn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { + return 0, nil, nil, err + } + case *net.IPConn: + if n, nn, _, src, err = c.ReadMsgIP(b, oob); err != nil { + return 0, nil, nil, err + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType} + } + if nn > 0 { + cm = new(ControlMessage) + if err = cm.Parse(oob[:nn]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + } + if cm != nil { + cm.Src = netAddrToIP16(src) + } + return +} + +func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + oob := cm.Marshal() + if dst == nil { + return 0, &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errMissingAddress} + } + switch c := c.PacketConn.(type) { + case *net.UDPConn: + n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) + case *net.IPConn: + n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) + default: + return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Addr: opAddr(dst), Err: errInvalidConnType} + } + return +} diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go new file mode 100644 index 0000000000..8f6d02e2f8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go @@ -0,0 +1,57 @@ +// Copyright 2017 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.9 +// +build !nacl,!plan9,!windows + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (c *payloadHandler) readFrom(b []byte) (int, *ControlMessage, net.Addr, error) { + c.rawOpt.RLock() + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + switch c.PacketConn.(type) { + case *net.UDPConn: + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + case *net.IPConn: + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} + } + var cm *ControlMessage + if m.NN > 0 { + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + cm.Src = netAddrToIP16(m.Addr) + } + return m.N, cm, m.Addr, nil +} + +func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (int, error) { + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: cm.Marshal(), + Addr: dst, + } + err := c.SendMsg(&m, 0) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return m.N, err +} diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go index 9731cba437..99a43542b4 100644 --- a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +++ b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go @@ -12,7 +12,7 @@ import ( ) // ReadFrom reads a payload of the received IPv6 datagram, from the -// endpoint c, copying the payload into b. It returns the number of +// endpoint c, copying the payload into b. It returns the number of // bytes copied into b, the control message cm and the source address // src of the received datagram. func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { @@ -26,9 +26,9 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net. } // WriteTo writes a payload of the IPv6 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the IPv6 header fields and the datagram path to be specified. The +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the IPv6 header fields and the datagram path to be specified. The // cm may be nil if control of the outgoing datagram is not required. func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { if !c.ok() { diff --git a/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go b/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go new file mode 100644 index 0000000000..c11d92ae96 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go @@ -0,0 +1,242 @@ +// 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.9 + +package ipv6_test + +import ( + "bytes" + "fmt" + "net" + "runtime" + "strings" + "sync" + "testing" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/nettest" + "golang.org/x/net/ipv6" +) + +func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + b.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph := []byte{ + 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + } + greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + bb := make([]byte, 128) + cm := ipv6.ControlMessage{ + TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, + HopLimit: 1, + Src: net.IPv6loopback, + } + if ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback); ifi != nil { + cm.IfIndex = ifi.Index + } + + b.Run("UDP", func(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp6") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv6.FlagHopLimit | ipv6.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(payload, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(payload, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + }) + b.Run("IP", func(b *testing.B) { + switch runtime.GOOS { + case "netbsd": + b.Skip("need to configure gre on netbsd") + case "openbsd": + b.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(datagram, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(datagram, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + }) +} + +func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + t.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph := []byte{ + 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + } + greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + + t.Run("UDP", func(t *testing.T) { + c, err := nettest.NewLocalPacketListener("udp6") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr()) + }) + }) + t.Run("IP", func(t *testing.T) { + switch runtime.GOOS { + case "netbsd": + t.Skip("need to configure gre on netbsd") + case "openbsd": + t.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr()) + }) + }) +} + +func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv6.PacketConn, data []byte, dst net.Addr) { + ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) + cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU + + if err := p.SetControlMessage(cf, true); err != nil { // probe before test + if nettest.ProtocolNotSupported(err) { + t.Skipf("not supported on %s", runtime.GOOS) + } + t.Fatal(err) + } + + var wg sync.WaitGroup + reader := func() { + defer wg.Done() + b := make([]byte, 128) + n, cm, _, err := p.ReadFrom(b) + if err != nil { + t.Error(err) + return + } + if !bytes.Equal(b[:n], data) { + t.Errorf("got %#v; want %#v", b[:n], data) + return + } + s := cm.String() + if strings.Contains(s, ",") { + t.Errorf("should be space-separated values: %s", s) + return + } + } + writer := func(toggle bool) { + defer wg.Done() + cm := ipv6.ControlMessage{ + TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, + HopLimit: 1, + Src: net.IPv6loopback, + } + if ifi != nil { + cm.IfIndex = ifi.Index + } + if err := p.SetControlMessage(cf, toggle); err != nil { + t.Error(err) + return + } + n, err := p.WriteTo(data, &cm, dst) + if err != nil { + t.Error(err) + return + } + if n != len(data) { + t.Errorf("got %d; want %d", n, len(data)) + return + } + } + + const N = 10 + wg.Add(N) + for i := 0; i < N; i++ { + go reader() + } + wg.Add(2 * N) + for i := 0; i < 2*N; i++ { + go writer(i%2 != 0) + + } + wg.Add(N) + for i := 0; i < N; i++ { + go reader() + } + wg.Wait() +} diff --git a/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go b/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go new file mode 100644 index 0000000000..e2fd73370d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go @@ -0,0 +1,373 @@ +// Copyright 2017 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.9 + +package ipv6_test + +import ( + "bytes" + "fmt" + "net" + "runtime" + "strings" + "sync" + "testing" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/nettest" + "golang.org/x/net/ipv6" +) + +func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + b.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph := []byte{ + 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + } + greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + bb := make([]byte, 128) + cm := ipv6.ControlMessage{ + TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, + HopLimit: 1, + Src: net.IPv6loopback, + } + if ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback); ifi != nil { + cm.IfIndex = ifi.Index + } + + b.Run("UDP", func(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp6") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv6.FlagHopLimit | ipv6.FlagInterface + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + wms := []ipv6.Message{ + { + Buffers: [][]byte{payload}, + Addr: dst, + OOB: cm.Marshal(), + }, + } + rms := []ipv6.Message{ + { + Buffers: [][]byte{bb}, + OOB: ipv6.NewControlMessage(cf), + }, + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(payload, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(payload, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("Batch", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteBatch(wms, 0); err != nil { + b.Fatal(err) + } + if _, err := p.ReadBatch(rms, 0); err != nil { + b.Fatal(err) + } + } + }) + }) + b.Run("IP", func(b *testing.B) { + switch runtime.GOOS { + case "netbsd": + b.Skip("need to configure gre on netbsd") + case "openbsd": + b.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") + if err != nil { + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + dst := c.LocalAddr() + cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + wms := []ipv6.Message{ + { + Buffers: [][]byte{datagram}, + Addr: dst, + OOB: cm.Marshal(), + }, + } + rms := []ipv6.Message{ + { + Buffers: [][]byte{bb}, + OOB: ipv6.NewControlMessage(cf), + }, + } + b.Run("Net", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(datagram, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("ToFrom", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(datagram, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(bb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("Batch", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := p.WriteBatch(wms, 0); err != nil { + b.Fatal(err) + } + if _, err := p.ReadBatch(rms, 0); err != nil { + b.Fatal(err) + } + } + }) + }) +} + +func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + t.Skipf("not supported on %s", runtime.GOOS) + } + + payload := []byte("HELLO-R-U-THERE") + iph := []byte{ + 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + } + greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} + datagram := append(greh, append(iph, payload...)...) + + t.Run("UDP", func(t *testing.T) { + c, err := nettest.NewLocalPacketListener("udp6") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), false) + }) + t.Run("Batch", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), true) + }) + }) + t.Run("IP", func(t *testing.T) { + switch runtime.GOOS { + case "netbsd": + t.Skip("need to configure gre on netbsd") + case "openbsd": + t.Skip("net.inet.gre.allow=0 by default on openbsd") + } + + c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") + if err != nil { + t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) + } + defer c.Close() + p := ipv6.NewPacketConn(c) + t.Run("ToFrom", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), false) + }) + t.Run("Batch", func(t *testing.T) { + testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), true) + }) + }) +} + +func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv6.PacketConn, data []byte, dst net.Addr, batch bool) { + ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) + cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU + + if err := p.SetControlMessage(cf, true); err != nil { // probe before test + if nettest.ProtocolNotSupported(err) { + t.Skipf("not supported on %s", runtime.GOOS) + } + t.Fatal(err) + } + + var wg sync.WaitGroup + reader := func() { + defer wg.Done() + b := make([]byte, 128) + n, cm, _, err := p.ReadFrom(b) + if err != nil { + t.Error(err) + return + } + if !bytes.Equal(b[:n], data) { + t.Errorf("got %#v; want %#v", b[:n], data) + return + } + s := cm.String() + if strings.Contains(s, ",") { + t.Errorf("should be space-separated values: %s", s) + return + } + } + batchReader := func() { + defer wg.Done() + ms := []ipv6.Message{ + { + Buffers: [][]byte{make([]byte, 128)}, + OOB: ipv6.NewControlMessage(cf), + }, + } + n, err := p.ReadBatch(ms, 0) + if err != nil { + t.Error(err) + return + } + if n != len(ms) { + t.Errorf("got %d; want %d", n, len(ms)) + return + } + var cm ipv6.ControlMessage + if err := cm.Parse(ms[0].OOB[:ms[0].NN]); err != nil { + t.Error(err) + return + } + b := ms[0].Buffers[0][:ms[0].N] + if !bytes.Equal(b, data) { + t.Errorf("got %#v; want %#v", b, data) + return + } + s := cm.String() + if strings.Contains(s, ",") { + t.Errorf("should be space-separated values: %s", s) + return + } + } + writer := func(toggle bool) { + defer wg.Done() + cm := ipv6.ControlMessage{ + TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, + HopLimit: 1, + Src: net.IPv6loopback, + } + if ifi != nil { + cm.IfIndex = ifi.Index + } + if err := p.SetControlMessage(cf, toggle); err != nil { + t.Error(err) + return + } + n, err := p.WriteTo(data, &cm, dst) + if err != nil { + t.Error(err) + return + } + if n != len(data) { + t.Errorf("got %d; want %d", n, len(data)) + return + } + } + batchWriter := func(toggle bool) { + defer wg.Done() + cm := ipv6.ControlMessage{ + TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, + HopLimit: 1, + Src: net.IPv6loopback, + } + if ifi != nil { + cm.IfIndex = ifi.Index + } + if err := p.SetControlMessage(cf, toggle); err != nil { + t.Error(err) + return + } + ms := []ipv6.Message{ + { + Buffers: [][]byte{data}, + OOB: cm.Marshal(), + Addr: dst, + }, + } + n, err := p.WriteBatch(ms, 0) + if err != nil { + t.Error(err) + return + } + if n != len(ms) { + t.Errorf("got %d; want %d", n, len(ms)) + return + } + if ms[0].N != len(data) { + t.Errorf("got %d; want %d", ms[0].N, len(data)) + return + } + } + + const N = 10 + wg.Add(N) + for i := 0; i < N; i++ { + if batch { + go batchReader() + } else { + go reader() + } + } + wg.Add(2 * N) + for i := 0; i < 2*N; i++ { + if batch { + go batchWriter(i%2 != 0) + } else { + go writer(i%2 != 0) + } + } + wg.Add(N) + for i := 0; i < N; i++ { + if batch { + go batchReader() + } else { + go reader() + } + } + wg.Wait() +} diff --git a/vendor/golang.org/x/net/ipv6/readwrite_test.go b/vendor/golang.org/x/net/ipv6/readwrite_test.go index 41f59be5af..206b915ce3 100644 --- a/vendor/golang.org/x/net/ipv6/readwrite_test.go +++ b/vendor/golang.org/x/net/ipv6/readwrite_test.go @@ -17,87 +17,50 @@ import ( "golang.org/x/net/ipv6" ) -func benchmarkUDPListener() (net.PacketConn, net.Addr, error) { - c, err := net.ListenPacket("udp6", "[::1]:0") +func BenchmarkReadWriteUnicast(b *testing.B) { + c, err := nettest.NewLocalPacketListener("udp6") if err != nil { - return nil, nil, err - } - dst, err := net.ResolveUDPAddr("udp6", c.LocalAddr().String()) - if err != nil { - c.Close() - return nil, nil, err - } - return c, dst, nil -} - -func BenchmarkReadWriteNetUDP(b *testing.B) { - if !supportsIPv6 { - b.Skip("ipv6 is not supported") - } - - c, dst, err := benchmarkUDPListener() - if err != nil { - b.Fatal(err) + b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) } defer c.Close() + dst := c.LocalAddr() wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128) - b.ResetTimer() - for i := 0; i < b.N; i++ { - benchmarkReadWriteNetUDP(b, c, wb, rb, dst) - } -} - -func benchmarkReadWriteNetUDP(b *testing.B, c net.PacketConn, wb, rb []byte, dst net.Addr) { - if _, err := c.WriteTo(wb, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(rb); err != nil { - b.Fatal(err) - } -} -func BenchmarkReadWriteIPv6UDP(b *testing.B) { - if !supportsIPv6 { - b.Skip("ipv6 is not supported") - } - - c, dst, err := benchmarkUDPListener() - if err != nil { - b.Fatal(err) - } - defer c.Close() - - p := ipv6.NewPacketConn(c) - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - - wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128) - b.ResetTimer() - for i := 0; i < b.N; i++ { - benchmarkReadWriteIPv6UDP(b, p, wb, rb, dst, ifi) - } -} + b.Run("NetUDP", func(b *testing.B) { + for i := 0; i < b.N; i++ { + if _, err := c.WriteTo(wb, dst); err != nil { + b.Fatal(err) + } + if _, _, err := c.ReadFrom(rb); err != nil { + b.Fatal(err) + } + } + }) + b.Run("IPv6UDP", func(b *testing.B) { + p := ipv6.NewPacketConn(c) + cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU + if err := p.SetControlMessage(cf, true); err != nil { + b.Fatal(err) + } + cm := ipv6.ControlMessage{ + TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, + HopLimit: 1, + } + ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) + if ifi != nil { + cm.IfIndex = ifi.Index + } -func benchmarkReadWriteIPv6UDP(b *testing.B, p *ipv6.PacketConn, wb, rb []byte, dst net.Addr, ifi *net.Interface) { - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if n, err := p.WriteTo(wb, &cm, dst); err != nil { - b.Fatal(err) - } else if n != len(wb) { - b.Fatalf("got %v; want %v", n, len(wb)) - } - if _, _, _, err := p.ReadFrom(rb); err != nil { - b.Fatal(err) - } + for i := 0; i < b.N; i++ { + if _, err := p.WriteTo(wb, &cm, dst); err != nil { + b.Fatal(err) + } + if _, _, _, err := p.ReadFrom(rb); err != nil { + b.Fatal(err) + } + } + }) } func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { @@ -109,7 +72,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { t.Skip("ipv6 is not supported") } - c, err := net.ListenPacket("udp6", "[::1]:0") + c, err := nettest.NewLocalPacketListener("udp6") if err != nil { t.Fatal(err) } @@ -117,11 +80,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { p := ipv6.NewPacketConn(c) defer p.Close() - dst, err := net.ResolveUDPAddr("udp6", c.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - + dst := c.LocalAddr() ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU wb := []byte("HELLO-R-U-THERE") @@ -167,7 +126,7 @@ func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { t.Error(err) return } else if n != len(wb) { - t.Errorf("got %v; want %v", n, len(wb)) + t.Errorf("got %d; want %d", n, len(wb)) return } } diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go index f0cfc2f94a..cc3907df38 100644 --- a/vendor/golang.org/x/net/ipv6/sockopt.go +++ b/vendor/golang.org/x/net/ipv6/sockopt.go @@ -4,6 +4,8 @@ package ipv6 +import "golang.org/x/net/internal/socket" + // Sticky socket options const ( ssoTrafficClass = iota // header field for unicast packet, RFC 3542 @@ -24,23 +26,18 @@ const ( ssoLeaveSourceGroup // source-specific multicast ssoBlockSourceGroup // any-source or source-specific multicast ssoUnblockSourceGroup // any-source or source-specific multicast - ssoMax + ssoAttachFilter // attach BPF for filtering inbound traffic ) // Sticky socket option value types const ( - ssoTypeInt = iota + 1 - ssoTypeInterface - ssoTypeICMPFilter - ssoTypeMTUInfo - ssoTypeIPMreq + ssoTypeIPMreq = iota + 1 ssoTypeGroupReq ssoTypeGroupSourceReq ) // A sockOpt represents a binding for sticky socket option. type sockOpt struct { - level int // option level - name int // option name, must be equal or greater than 1 - typ int // option value type, must be equal or greater than 1 + socket.Option + typ int // hint for option value type; optional } diff --git a/vendor/golang.org/x/net/ipv6/sockopt_asmreq_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_asmreq_posix.go deleted file mode 100644 index cd36739df3..0000000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_asmreq_posix.go +++ /dev/null @@ -1,22 +0,0 @@ -// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "net" - "os" - "unsafe" -) - -func setsockoptIPMreq(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error { - var mreq ipv6Mreq - copy(mreq.Multiaddr[:], grp) - if ifi != nil { - mreq.setIfindex(ifi.Index) - } - return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&mreq), sizeofIPv6Mreq)) -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_posix.go index e0a3fa693e..0eac86eb8c 100644 --- a/vendor/golang.org/x/net/ipv6/sockopt_posix.go +++ b/vendor/golang.org/x/net/ipv6/sockopt_posix.go @@ -8,88 +8,55 @@ package ipv6 import ( "net" - "os" "unsafe" -) - -func getInt(s uintptr, opt *sockOpt) (int, error) { - if opt.name < 1 || opt.typ != ssoTypeInt { - return 0, errOpNoSupport - } - var i int32 - l := uint32(4) - if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), &l); err != nil { - return 0, os.NewSyscallError("getsockopt", err) - } - return int(i), nil -} -func setInt(s uintptr, opt *sockOpt, v int) error { - if opt.name < 1 || opt.typ != ssoTypeInt { - return errOpNoSupport - } - i := int32(v) - return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), 4)) -} + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) -func getInterface(s uintptr, opt *sockOpt) (*net.Interface, error) { - if opt.name < 1 || opt.typ != ssoTypeInterface { - return nil, errOpNoSupport - } - var i int32 - l := uint32(4) - if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), &l); err != nil { - return nil, os.NewSyscallError("getsockopt", err) - } - if i == 0 { - return nil, nil - } - ifi, err := net.InterfaceByIndex(int(i)) +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + n, err := so.GetInt(c) if err != nil { return nil, err } - return ifi, nil + return net.InterfaceByIndex(n) } -func setInterface(s uintptr, opt *sockOpt, ifi *net.Interface) error { - if opt.name < 1 || opt.typ != ssoTypeInterface { - return errOpNoSupport - } - var i int32 +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + var n int if ifi != nil { - i = int32(ifi.Index) + n = ifi.Index } - return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), 4)) + return so.SetInt(c, n) } -func getICMPFilter(s uintptr, opt *sockOpt) (*ICMPFilter, error) { - if opt.name < 1 || opt.typ != ssoTypeICMPFilter { - return nil, errOpNoSupport +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, err } - var f ICMPFilter - l := uint32(sizeofICMPv6Filter) - if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&f.icmpv6Filter), &l); err != nil { - return nil, os.NewSyscallError("getsockopt", err) + if n != sizeofICMPv6Filter { + return nil, errOpNoSupport } - return &f, nil + return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil } -func setICMPFilter(s uintptr, opt *sockOpt, f *ICMPFilter) error { - if opt.name < 1 || opt.typ != ssoTypeICMPFilter { - return errOpNoSupport - } - return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&f.icmpv6Filter), sizeofICMPv6Filter)) +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + b := (*[sizeofICMPv6Filter]byte)(unsafe.Pointer(f))[:sizeofICMPv6Filter] + return so.Set(c, b) } -func getMTUInfo(s uintptr, opt *sockOpt) (*net.Interface, int, error) { - if opt.name < 1 || opt.typ != ssoTypeMTUInfo { - return nil, 0, errOpNoSupport +func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, 0, err } - var mi ipv6Mtuinfo - l := uint32(sizeofIPv6Mtuinfo) - if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&mi), &l); err != nil { - return nil, 0, os.NewSyscallError("getsockopt", err) + if n != sizeofIPv6Mtuinfo { + return nil, 0, errOpNoSupport } + mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) if mi.Addr.Scope_id == 0 { return nil, int(mi.Mtu), nil } @@ -100,23 +67,21 @@ func getMTUInfo(s uintptr, opt *sockOpt) (*net.Interface, int, error) { return ifi, int(mi.Mtu), nil } -func setGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error { - if opt.name < 1 { - return errOpNoSupport - } - switch opt.typ { +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + switch so.typ { case ssoTypeIPMreq: - return setsockoptIPMreq(s, opt, ifi, grp) + return so.setIPMreq(c, ifi, grp) case ssoTypeGroupReq: - return setsockoptGroupReq(s, opt, ifi, grp) + return so.setGroupReq(c, ifi, grp) default: return errOpNoSupport } } -func setSourceGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error { - if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq { - return errOpNoSupport - } - return setsockoptGroupSourceReq(s, opt, ifi, grp, src) +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return so.setGroupSourceReq(c, ifi, grp, src) +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return so.setAttachFilter(c, f) } diff --git a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go deleted file mode 100644 index 1a8829092c..0000000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go +++ /dev/null @@ -1,17 +0,0 @@ -// 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 !darwin,!freebsd,!linux,!solaris - -package ipv6 - -import "net" - -func setsockoptGroupReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func setsockoptGroupSourceReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go deleted file mode 100644 index f3668aefc5..0000000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go +++ /dev/null @@ -1,59 +0,0 @@ -// 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 darwin freebsd linux solaris - -package ipv6 - -import ( - "net" - "os" - "unsafe" -) - -var freebsd32o64 bool - -func setsockoptGroupReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error { - var gr groupReq - if ifi != nil { - gr.Interface = uint32(ifi.Index) - } - gr.setGroup(grp) - var p unsafe.Pointer - var l uint32 - if freebsd32o64 { - var d [sizeofGroupReq + 4]byte - s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - p = unsafe.Pointer(&d[0]) - l = sizeofGroupReq + 4 - } else { - p = unsafe.Pointer(&gr) - l = sizeofGroupReq - } - return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, p, l)) -} - -func setsockoptGroupSourceReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error { - var gsr groupSourceReq - if ifi != nil { - gsr.Interface = uint32(ifi.Index) - } - gsr.setSourceGroup(grp, src) - var p unsafe.Pointer - var l uint32 - if freebsd32o64 { - var d [sizeofGroupSourceReq + 4]byte - s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - p = unsafe.Pointer(&d[0]) - l = sizeofGroupSourceReq + 4 - } else { - p = unsafe.Pointer(&gsr) - l = sizeofGroupSourceReq - } - return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, p, l)) -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go index 6d59a00c24..1f4a273e44 100644 --- a/vendor/golang.org/x/net/ipv6/sockopt_stub.go +++ b/vendor/golang.org/x/net/ipv6/sockopt_stub.go @@ -2,12 +2,45 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv6 -import "net" +import ( + "net" -func getMTUInfo(s uintptr, opt *sockOpt) (*net.Interface, int, error) { + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + return nil, errOpNoSupport +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + return errOpNoSupport +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + return nil, errOpNoSupport +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + return errOpNoSupport +} + +func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { return nil, 0, errOpNoSupport } + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq.go b/vendor/golang.org/x/net/ipv6/sys_asmreq.go new file mode 100644 index 0000000000..b0510c0b5d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_asmreq.go @@ -0,0 +1,24 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var mreq ipv6Mreq + copy(mreq.Multiaddr[:], grp) + if ifi != nil { + mreq.setIfindex(ifi.Index) + } + b := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPv6Mreq] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go new file mode 100644 index 0000000000..eece96187b --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go @@ -0,0 +1,17 @@ +// 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 !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf.go b/vendor/golang.org/x/net/ipv6/sys_bpf.go new file mode 100644 index 0000000000..b2dbcb2f28 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bpf.go @@ -0,0 +1,23 @@ +// Copyright 2017 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 linux + +package ipv6 + +import ( + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + prog := sockFProg{ + Len: uint16(len(f)), + Filter: (*sockFilter)(unsafe.Pointer(&f[0])), + } + b := (*[sizeofSockFprog]byte)(unsafe.Pointer(&prog))[:sizeofSockFprog] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go new file mode 100644 index 0000000000..676bea555f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go @@ -0,0 +1,16 @@ +// Copyright 2017 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 !linux + +package ipv6 + +import ( + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go index c22f8ac630..e416eaa1fe 100644 --- a/vendor/golang.org/x/net/ipv6/sys_bsd.go +++ b/vendor/golang.org/x/net/ipv6/sys_bsd.go @@ -11,6 +11,7 @@ import ( "syscall" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -22,21 +23,21 @@ var ( ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, } - sockOpts = [ssoMax]sockOpt{ - ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt}, - ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt}, - ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt}, - ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt}, - ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt}, - ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt}, - ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt}, - ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo}, - ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt}, - ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter}, - ssoJoinGroup: {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq}, - ssoLeaveGroup: {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq}, + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, } ) diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go index ffcc9d4c40..e3d0443927 100644 --- a/vendor/golang.org/x/net/ipv6/sys_darwin.go +++ b/vendor/golang.org/x/net/ipv6/sys_darwin.go @@ -12,6 +12,7 @@ import ( "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -20,17 +21,17 @@ var ( ctlPacketInfo: {sysIPV6_2292PKTINFO, sizeofInet6Pktinfo, marshal2292PacketInfo, parsePacketInfo}, } - sockOpts = [ssoMax]sockOpt{ - ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt}, - ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt}, - ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, ssoTypeInt}, - ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_2292PKTINFO, ssoTypeInt}, - ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt}, - ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter}, - ssoJoinGroup: {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq}, - ssoLeaveGroup: {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq}, + sockOpts = map[int]*sockOpt{ + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_2292HOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_2292PKTINFO, Len: 4}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, } ) @@ -57,18 +58,18 @@ func init() { ctlOpts[ctlPacketInfo] = ctlOpt{sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo} ctlOpts[ctlNextHop] = ctlOpt{sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop} ctlOpts[ctlPathMTU] = ctlOpt{sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU} - sockOpts[ssoTrafficClass] = sockOpt{iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt} - sockOpts[ssoReceiveTrafficClass] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt} - sockOpts[ssoReceiveHopLimit] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt} - sockOpts[ssoReceivePacketInfo] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt} - sockOpts[ssoReceivePathMTU] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt} - sockOpts[ssoPathMTU] = sockOpt{iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo} - sockOpts[ssoJoinGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq} - sockOpts[ssoLeaveGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq} - sockOpts[ssoJoinSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq} - sockOpts[ssoLeaveSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq} - sockOpts[ssoBlockSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq} - sockOpts[ssoUnblockSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq} + sockOpts[ssoTrafficClass] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}} + sockOpts[ssoReceiveTrafficClass] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}} + sockOpts[ssoReceiveHopLimit] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}} + sockOpts[ssoReceivePacketInfo] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}} + sockOpts[ssoReceivePathMTU] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}} + sockOpts[ssoPathMTU] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}} + sockOpts[ssoJoinGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} + sockOpts[ssoLeaveGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} + sockOpts[ssoJoinSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} + sockOpts[ssoLeaveSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} + sockOpts[ssoBlockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} + sockOpts[ssoUnblockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} } func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go index fd5204bebd..e9349dc2cc 100644 --- a/vendor/golang.org/x/net/ipv6/sys_freebsd.go +++ b/vendor/golang.org/x/net/ipv6/sys_freebsd.go @@ -12,6 +12,7 @@ import ( "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -23,25 +24,25 @@ var ( ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, } - sockOpts = [ssoMax]sockOpt{ - ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt}, - ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt}, - ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt}, - ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt}, - ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt}, - ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt}, - ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt}, - ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo}, - ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt}, - ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter}, - ssoJoinGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, - ssoLeaveGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, - ssoJoinSourceGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + sockOpts = map[int]sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, } ) diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go index 42f5f78538..bc218103c1 100644 --- a/vendor/golang.org/x/net/ipv6/sys_linux.go +++ b/vendor/golang.org/x/net/ipv6/sys_linux.go @@ -10,6 +10,7 @@ import ( "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -20,25 +21,26 @@ var ( ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, } - sockOpts = [ssoMax]sockOpt{ - ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt}, - ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt}, - ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt}, - ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt}, - ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt}, - ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt}, - ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt}, - ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo}, - ssoChecksum: {iana.ProtocolReserved, sysIPV6_CHECKSUM, ssoTypeInt}, - ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMPV6_FILTER, ssoTypeICMPFilter}, - ssoJoinGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, - ssoLeaveGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, - ssoJoinSourceGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMPV6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoAttachFilter: {Option: socket.Option{Level: sysSOL_SOCKET, Name: sysSO_ATTACH_FILTER, Len: sizeofSockFprog}}, } ) diff --git a/vendor/golang.org/x/net/ipv6/sys_linux_386.s b/vendor/golang.org/x/net/ipv6/sys_linux_386.s deleted file mode 100644 index b85551a5c1..0000000000 --- a/vendor/golang.org/x/net/ipv6/sys_linux_386.s +++ /dev/null @@ -1,8 +0,0 @@ -// 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. - -#include "textflag.h" - -TEXT ·socketcall(SB),NOSPLIT,$0-36 - JMP syscall·socketcall(SB) diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris.go b/vendor/golang.org/x/net/ipv6/sys_solaris.go index 9bd2d66fd3..d348b5f6e4 100644 --- a/vendor/golang.org/x/net/ipv6/sys_solaris.go +++ b/vendor/golang.org/x/net/ipv6/sys_solaris.go @@ -10,6 +10,7 @@ import ( "unsafe" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) var ( @@ -21,25 +22,25 @@ var ( ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, } - sockOpts = [ssoMax]sockOpt{ - ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt}, - ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt}, - ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt}, - ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt}, - ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt}, - ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt}, - ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt}, - ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt}, - ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo}, - ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt}, - ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter}, - ssoJoinGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq}, - ssoLeaveGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}, - ssoJoinSourceGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}, + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, } ) diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris_amd64.s b/vendor/golang.org/x/net/ipv6/sys_solaris_amd64.s deleted file mode 100644 index 39d76af794..0000000000 --- a/vendor/golang.org/x/net/ipv6/sys_solaris_amd64.s +++ /dev/null @@ -1,8 +0,0 @@ -// 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. - -#include "textflag.h" - -TEXT ·sysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·sysvicall6(SB) diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go new file mode 100644 index 0000000000..add8ccc0b1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go @@ -0,0 +1,54 @@ +// 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 darwin freebsd linux solaris + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +var freebsd32o64 bool + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var b []byte + if freebsd32o64 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] + } + return so.Set(c, b) +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var b []byte + if freebsd32o64 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] + } + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go new file mode 100644 index 0000000000..581ee490ff --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go @@ -0,0 +1,21 @@ +// 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 !darwin,!freebsd,!linux,!solaris + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errOpNoSupport +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errOpNoSupport +} diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go index 7663bfc09a..b845388ea4 100644 --- a/vendor/golang.org/x/net/ipv6/sys_stub.go +++ b/vendor/golang.org/x/net/ipv6/sys_stub.go @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build nacl plan9 +// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows package ipv6 var ( ctlOpts = [ctlMax]ctlOpt{} - sockOpts = [ssoMax]sockOpt{} + sockOpts = map[int]*sockOpt{} ) diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go index 003c507d56..fc36b018bd 100644 --- a/vendor/golang.org/x/net/ipv6/sys_windows.go +++ b/vendor/golang.org/x/net/ipv6/sys_windows.go @@ -9,6 +9,7 @@ import ( "syscall" "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" ) const ( @@ -53,13 +54,13 @@ type icmpv6Filter struct { var ( ctlOpts = [ctlMax]ctlOpt{} - sockOpts = [ssoMax]sockOpt{ - ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt}, - ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface}, - ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt}, - ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt}, - ssoJoinGroup: {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq}, - ssoLeaveGroup: {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq}, + sockOpts = map[int]*sockOpt{ + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, } ) diff --git a/vendor/golang.org/x/net/ipv6/syscall_linux_386.go b/vendor/golang.org/x/net/ipv6/syscall_linux_386.go deleted file mode 100644 index 5184dbe881..0000000000 --- a/vendor/golang.org/x/net/ipv6/syscall_linux_386.go +++ /dev/null @@ -1,31 +0,0 @@ -// 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 ipv6 - -import ( - "syscall" - "unsafe" -) - -const ( - sysGETSOCKOPT = 0xf - sysSETSOCKOPT = 0xe -) - -func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - if _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 { - return error(errno) - } - return nil -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - if _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv6/syscall_solaris.go b/vendor/golang.org/x/net/ipv6/syscall_solaris.go deleted file mode 100644 index 2a5c8ee47c..0000000000 --- a/vendor/golang.org/x/net/ipv6/syscall_solaris.go +++ /dev/null @@ -1,38 +0,0 @@ -// 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 ipv6 - -import ( - "syscall" - "unsafe" -) - -//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" -//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" - -//go:linkname procGetsockopt libc___xnet_getsockopt -//go:linkname procSetsockopt libc_setsockopt - -var ( - procGetsockopt uintptr - procSetsockopt uintptr -) - -func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0) - if errno != 0 { - return error(errno) - } - return nil -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - if _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv6/syscall_unix.go b/vendor/golang.org/x/net/ipv6/syscall_unix.go deleted file mode 100644 index 58a75b5281..0000000000 --- a/vendor/golang.org/x/net/ipv6/syscall_unix.go +++ /dev/null @@ -1,26 +0,0 @@ -// 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 darwin dragonfly freebsd linux,!386 netbsd openbsd - -package ipv6 - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 { - return error(errno) - } - return nil -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv6/syscall_windows.go b/vendor/golang.org/x/net/ipv6/syscall_windows.go deleted file mode 100644 index c1f649d388..0000000000 --- a/vendor/golang.org/x/net/ipv6/syscall_windows.go +++ /dev/null @@ -1,18 +0,0 @@ -// 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 ipv6 - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error { - return syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), (*int32)(unsafe.Pointer(l))) -} - -func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error { - return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), int32(l)) -} diff --git a/vendor/golang.org/x/net/ipv6/unicast_test.go b/vendor/golang.org/x/net/ipv6/unicast_test.go index 406d07128b..a0b7d95504 100644 --- a/vendor/golang.org/x/net/ipv6/unicast_test.go +++ b/vendor/golang.org/x/net/ipv6/unicast_test.go @@ -27,7 +27,7 @@ func TestPacketConnReadWriteUnicastUDP(t *testing.T) { t.Skip("ipv6 is not supported") } - c, err := net.ListenPacket("udp6", "[::1]:0") + c, err := nettest.NewLocalPacketListener("udp6") if err != nil { t.Fatal(err) } @@ -35,11 +35,7 @@ func TestPacketConnReadWriteUnicastUDP(t *testing.T) { p := ipv6.NewPacketConn(c) defer p.Close() - dst, err := net.ResolveUDPAddr("udp6", c.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - + dst := c.LocalAddr() cm := ipv6.ControlMessage{ TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, Src: net.IPv6loopback, @@ -54,7 +50,8 @@ func TestPacketConnReadWriteUnicastUDP(t *testing.T) { for i, toggle := range []bool{true, false, true} { if err := p.SetControlMessage(cf, toggle); err != nil { if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) + t.Logf("not supported on %s", runtime.GOOS) + continue } t.Fatal(err) } @@ -151,7 +148,8 @@ func TestPacketConnReadWriteUnicastICMP(t *testing.T) { } if err := p.SetControlMessage(cf, toggle); err != nil { if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) + t.Logf("not supported on %s", runtime.GOOS) + continue } t.Fatal(err) } diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go index f5a4109450..73aa8c6dfc 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go index f5a4109450..73aa8c6dfc 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go index f5a4109450..73aa8c6dfc 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go index f5a4109450..73aa8c6dfc 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go index be2dbd6661..c9bf6a87ef 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x104 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x8 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go index f9376b65ce..b64f0157d7 100644 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go @@ -98,6 +98,8 @@ const ( sizeofGroupSourceReq = 0x108 sizeofICMPv6Filter = 0x20 + + sizeofSockFprog = 0x10 ) type kernelSockaddrStorage struct { diff --git a/vendor/golang.org/x/net/lif/address.go b/vendor/golang.org/x/net/lif/address.go index f9b34aed03..afb957fd8e 100644 --- a/vendor/golang.org/x/net/lif/address.go +++ b/vendor/golang.org/x/net/lif/address.go @@ -67,7 +67,7 @@ func Addrs(af int, name string) ([]Addr, error) { continue } sa := (*sockaddrStorage)(unsafe.Pointer(&lifr.Lifru[0])) - l := int(littleEndian.Uint32(lifr.Lifru1[:4])) + l := int(nativeEndian.Uint32(lifr.Lifru1[:4])) if l == 0 { continue } @@ -77,7 +77,7 @@ func Addrs(af int, name string) ([]Addr, error) { copy(a.IP[:], lifr.Lifru[4:8]) as = append(as, a) case sysAF_INET6: - a := &Inet6Addr{PrefixLen: l, ZoneID: int(littleEndian.Uint32(lifr.Lifru[24:28]))} + a := &Inet6Addr{PrefixLen: l, ZoneID: int(nativeEndian.Uint32(lifr.Lifru[24:28]))} copy(a.IP[:], lifr.Lifru[8:24]) as = append(as, a) } diff --git a/vendor/golang.org/x/net/lif/address_test.go b/vendor/golang.org/x/net/lif/address_test.go index f62ed93471..a25f10b67a 100644 --- a/vendor/golang.org/x/net/lif/address_test.go +++ b/vendor/golang.org/x/net/lif/address_test.go @@ -78,15 +78,17 @@ type addrPack struct { } func addrPacks() ([]addrPack, error) { + var lastErr error var aps []addrPack for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { as, err := Addrs(af, "") if err != nil { - return nil, err + lastErr = err + continue } aps = append(aps, addrPack{af: af, as: as}) } - return aps, nil + return aps, lastErr } func TestAddrs(t *testing.T) { diff --git a/vendor/golang.org/x/net/lif/binary.go b/vendor/golang.org/x/net/lif/binary.go index aade9eafa2..738a94f422 100644 --- a/vendor/golang.org/x/net/lif/binary.go +++ b/vendor/golang.org/x/net/lif/binary.go @@ -12,7 +12,10 @@ package lif // library. Therefore the package set used in the package must be the // same as net package. -var littleEndian binaryLittleEndian +var ( + littleEndian binaryLittleEndian + bigEndian binaryBigEndian +) type binaryByteOrder interface { Uint16([]byte) uint16 @@ -66,3 +69,47 @@ func (binaryLittleEndian) PutUint64(b []byte, v uint64) { b[6] = byte(v >> 48) b[7] = byte(v >> 56) } + +type binaryBigEndian struct{} + +func (binaryBigEndian) Uint16(b []byte) uint16 { + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint16(b[1]) | uint16(b[0])<<8 +} + +func (binaryBigEndian) PutUint16(b []byte, v uint16) { + _ = b[1] // early bounds check to guarantee safety of writes below + b[0] = byte(v >> 8) + b[1] = byte(v) +} + +func (binaryBigEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 +} + +func (binaryBigEndian) PutUint32(b []byte, v uint32) { + _ = b[3] // early bounds check to guarantee safety of writes below + b[0] = byte(v >> 24) + b[1] = byte(v >> 16) + b[2] = byte(v >> 8) + b[3] = byte(v) +} + +func (binaryBigEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 +} + +func (binaryBigEndian) PutUint64(b []byte, v uint64) { + _ = b[7] // early bounds check to guarantee safety of writes below + b[0] = byte(v >> 56) + b[1] = byte(v >> 48) + b[2] = byte(v >> 40) + b[3] = byte(v >> 32) + b[4] = byte(v >> 24) + b[5] = byte(v >> 16) + b[6] = byte(v >> 8) + b[7] = byte(v) +} diff --git a/vendor/golang.org/x/net/lif/defs_solaris.go b/vendor/golang.org/x/net/lif/defs_solaris.go index 8b84ba5e33..02c19981d2 100644 --- a/vendor/golang.org/x/net/lif/defs_solaris.go +++ b/vendor/golang.org/x/net/lif/defs_solaris.go @@ -75,7 +75,7 @@ const ( sizeofLifIfinfoReq = C.sizeof_struct_lif_ifinfo_req ) -type sysLifnum C.struct_lifnum +type lifnum C.struct_lifnum type lifreq C.struct_lifreq diff --git a/vendor/golang.org/x/net/lif/link.go b/vendor/golang.org/x/net/lif/link.go index 76fa6c6875..913a53e118 100644 --- a/vendor/golang.org/x/net/lif/link.go +++ b/vendor/golang.org/x/net/lif/link.go @@ -31,15 +31,15 @@ func (ll *Link) fetch(s uintptr) { } ioc := int64(sysSIOCGLIFINDEX) if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.Index = int(littleEndian.Uint32(lifr.Lifru[:4])) + ll.Index = int(nativeEndian.Uint32(lifr.Lifru[:4])) } ioc = int64(sysSIOCGLIFFLAGS) if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.Flags = int(littleEndian.Uint64(lifr.Lifru[:8])) + ll.Flags = int(nativeEndian.Uint64(lifr.Lifru[:8])) } ioc = int64(sysSIOCGLIFMTU) if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.MTU = int(littleEndian.Uint32(lifr.Lifru[:4])) + ll.MTU = int(nativeEndian.Uint32(lifr.Lifru[:4])) } switch ll.Type { case sysIFT_IPV4, sysIFT_IPV6, sysIFT_6TO4: @@ -70,7 +70,7 @@ func Links(af int, name string) ([]Link, error) { func links(eps []endpoint, name string) ([]Link, error) { var lls []Link - lifn := sysLifnum{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP} + lifn := lifnum{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP} lifc := lifconf{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP} for _, ep := range eps { lifn.Family = uint16(ep.af) @@ -84,7 +84,11 @@ func links(eps []endpoint, name string) ([]Link, error) { b := make([]byte, lifn.Count*sizeofLifreq) lifc.Family = uint16(ep.af) lifc.Len = lifn.Count * sizeofLifreq - littleEndian.PutUint64(lifc.Lifcu[:], uint64(uintptr(unsafe.Pointer(&b[0])))) + if len(lifc.Lifcu) == 8 { + nativeEndian.PutUint64(lifc.Lifcu[:], uint64(uintptr(unsafe.Pointer(&b[0])))) + } else { + nativeEndian.PutUint32(lifc.Lifcu[:], uint32(uintptr(unsafe.Pointer(&b[0])))) + } ioc = int64(sysSIOCGLIFCONF) if err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifc)); err != nil { continue diff --git a/vendor/golang.org/x/net/lif/link_test.go b/vendor/golang.org/x/net/lif/link_test.go index 8fb2bf6f34..0cb9b95c69 100644 --- a/vendor/golang.org/x/net/lif/link_test.go +++ b/vendor/golang.org/x/net/lif/link_test.go @@ -21,15 +21,17 @@ type linkPack struct { } func linkPacks() ([]linkPack, error) { + var lastErr error var lps []linkPack for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { lls, err := Links(af, "") if err != nil { - return nil, err + lastErr = err + continue } lps = append(lps, linkPack{af: af, lls: lls}) } - return lps, nil + return lps, lastErr } func TestLinks(t *testing.T) { diff --git a/vendor/golang.org/x/net/lif/sys.go b/vendor/golang.org/x/net/lif/sys.go new file mode 100644 index 0000000000..c896041b7b --- /dev/null +++ b/vendor/golang.org/x/net/lif/sys.go @@ -0,0 +1,21 @@ +// Copyright 2017 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 solaris + +package lif + +import "unsafe" + +var nativeEndian binaryByteOrder + +func init() { + i := uint32(1) + b := (*[4]byte)(unsafe.Pointer(&i)) + if b[0] == 1 { + nativeEndian = littleEndian + } else { + nativeEndian = bigEndian + } +} diff --git a/vendor/golang.org/x/net/lif/sys_solaris_amd64.s b/vendor/golang.org/x/net/lif/sys_solaris_amd64.s index 1ebca37391..39d76af794 100644 --- a/vendor/golang.org/x/net/lif/sys_solaris_amd64.s +++ b/vendor/golang.org/x/net/lif/sys_solaris_amd64.s @@ -6,6 +6,3 @@ TEXT ·sysvicall6(SB),NOSPLIT,$0-88 JMP syscall·sysvicall6(SB) - -TEXT ·keepAlive(SB),NOSPLIT,$0 - RET diff --git a/vendor/golang.org/x/net/lif/syscall.go b/vendor/golang.org/x/net/lif/syscall.go index 5fe073620a..aadab2e14b 100644 --- a/vendor/golang.org/x/net/lif/syscall.go +++ b/vendor/golang.org/x/net/lif/syscall.go @@ -19,13 +19,8 @@ var procIoctl uintptr func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) -// TODO: replace with runtime.KeepAlive when available -//go:noescape -func keepAlive(p unsafe.Pointer) - func ioctl(s, ioc uintptr, arg unsafe.Pointer) error { _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procIoctl)), 3, s, ioc, uintptr(arg), 0, 0, 0) - keepAlive(arg) if errno != 0 { return error(errno) } diff --git a/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go b/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go index 94231c49c9..b5e999bec3 100644 --- a/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +++ b/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go @@ -65,7 +65,7 @@ const ( sizeofLifIfinfoReq = 0x10 ) -type sysLifnum struct { +type lifnum struct { Family uint16 Pad_cgo_0 [2]byte Flags int32 diff --git a/vendor/golang.org/x/net/nettest/conntest.go b/vendor/golang.org/x/net/nettest/conntest.go index c246bbe399..5bd3a8c68c 100644 --- a/vendor/golang.org/x/net/nettest/conntest.go +++ b/vendor/golang.org/x/net/nettest/conntest.go @@ -12,6 +12,7 @@ import ( "io/ioutil" "math/rand" "net" + "runtime" "sync" "testing" "time" @@ -341,6 +342,9 @@ func testCloseTimeout(t *testing.T, c1, c2 net.Conn) { // testConcurrentMethods tests that the methods of net.Conn can safely // be called concurrently. func testConcurrentMethods(t *testing.T, c1, c2 net.Conn) { + if runtime.GOOS == "plan9" { + t.Skip("skipping on plan9; see https://golang.org/issue/20489") + } go chunkedCopy(c2, c2) // The results of the calls may be nonsensical, but this should @@ -433,6 +437,7 @@ func resyncConn(t *testing.T, c net.Conn) { } if err != nil { t.Errorf("unexpected Read error: %v", err) + break } } if err := <-errCh; err != nil { diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go index f540b196f7..242d5623f8 100644 --- a/vendor/golang.org/x/net/proxy/per_host.go +++ b/vendor/golang.org/x/net/proxy/per_host.go @@ -9,7 +9,7 @@ import ( "strings" ) -// A PerHost directs connections to a default Dialer unless the hostname +// A PerHost directs connections to a default Dialer unless the host name // requested matches one of a number of exceptions. type PerHost struct { def, bypass Dialer @@ -76,7 +76,7 @@ func (p *PerHost) dialerForRequest(host string) Dialer { // AddFromString parses a string that contains comma-separated values // specifying hosts that should use the bypass proxy. Each value is either an -// IP address, a CIDR range, a zone (*.example.com) or a hostname +// IP address, a CIDR range, a zone (*.example.com) or a host name // (localhost). A best effort is made to parse the string and errors are // ignored. func (p *PerHost) AddFromString(s string) { @@ -131,7 +131,7 @@ func (p *PerHost) AddZone(zone string) { p.bypassZones = append(p.bypassZones, zone) } -// AddHost specifies a hostname that will use the bypass proxy. +// AddHost specifies a host name that will use the bypass proxy. func (p *PerHost) AddHost(host string) { if strings.HasSuffix(host, ".") { host = host[:len(host)-1] diff --git a/vendor/golang.org/x/net/proxy/proxy.go b/vendor/golang.org/x/net/proxy/proxy.go index 78a8b7bee9..553ead7cf0 100644 --- a/vendor/golang.org/x/net/proxy/proxy.go +++ b/vendor/golang.org/x/net/proxy/proxy.go @@ -11,6 +11,7 @@ import ( "net" "net/url" "os" + "sync" ) // A Dialer is a means to establish a connection. @@ -27,7 +28,7 @@ type Auth struct { // FromEnvironment returns the dialer specified by the proxy related variables in // the environment. func FromEnvironment() Dialer { - allProxy := os.Getenv("all_proxy") + allProxy := allProxyEnv.Get() if len(allProxy) == 0 { return Direct } @@ -41,7 +42,7 @@ func FromEnvironment() Dialer { return Direct } - noProxy := os.Getenv("no_proxy") + noProxy := noProxyEnv.Get() if len(noProxy) == 0 { return proxy } @@ -92,3 +93,42 @@ func FromURL(u *url.URL, forward Dialer) (Dialer, error) { return nil, errors.New("proxy: unknown scheme: " + u.Scheme) } + +var ( + allProxyEnv = &envOnce{ + names: []string{"ALL_PROXY", "all_proxy"}, + } + noProxyEnv = &envOnce{ + names: []string{"NO_PROXY", "no_proxy"}, + } +) + +// envOnce looks up an environment variable (optionally by multiple +// names) once. It mitigates expensive lookups on some platforms +// (e.g. Windows). +// (Borrowed from net/http/transport.go) +type envOnce struct { + names []string + once sync.Once + val string +} + +func (e *envOnce) Get() string { + e.once.Do(e.init) + return e.val +} + +func (e *envOnce) init() { + for _, n := range e.names { + e.val = os.Getenv(n) + if e.val != "" { + return + } + } +} + +// reset is used by tests +func (e *envOnce) reset() { + e.once = sync.Once{} + e.val = "" +} diff --git a/vendor/golang.org/x/net/proxy/proxy_test.go b/vendor/golang.org/x/net/proxy/proxy_test.go index c19a5c0635..0f31e211c1 100644 --- a/vendor/golang.org/x/net/proxy/proxy_test.go +++ b/vendor/golang.org/x/net/proxy/proxy_test.go @@ -5,14 +5,73 @@ package proxy import ( + "bytes" + "fmt" "io" "net" "net/url" + "os" "strconv" + "strings" "sync" "testing" ) +type proxyFromEnvTest struct { + allProxyEnv string + noProxyEnv string + wantTypeOf Dialer +} + +func (t proxyFromEnvTest) String() string { + var buf bytes.Buffer + space := func() { + if buf.Len() > 0 { + buf.WriteByte(' ') + } + } + if t.allProxyEnv != "" { + fmt.Fprintf(&buf, "all_proxy=%q", t.allProxyEnv) + } + if t.noProxyEnv != "" { + space() + fmt.Fprintf(&buf, "no_proxy=%q", t.noProxyEnv) + } + return strings.TrimSpace(buf.String()) +} + +func TestFromEnvironment(t *testing.T) { + ResetProxyEnv() + + type dummyDialer struct { + direct + } + + RegisterDialerType("irc", func(_ *url.URL, _ Dialer) (Dialer, error) { + return dummyDialer{}, nil + }) + + proxyFromEnvTests := []proxyFromEnvTest{ + {allProxyEnv: "127.0.0.1:8080", noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: direct{}}, + {allProxyEnv: "ftp://example.com:8000", noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: direct{}}, + {allProxyEnv: "socks5://example.com:8080", noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: &PerHost{}}, + {allProxyEnv: "irc://example.com:8000", wantTypeOf: dummyDialer{}}, + {noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: direct{}}, + {wantTypeOf: direct{}}, + } + + for _, tt := range proxyFromEnvTests { + os.Setenv("ALL_PROXY", tt.allProxyEnv) + os.Setenv("NO_PROXY", tt.noProxyEnv) + ResetCachedEnvironment() + + d := FromEnvironment() + if got, want := fmt.Sprintf("%T", d), fmt.Sprintf("%T", tt.wantTypeOf); got != want { + t.Errorf("%v: got type = %T, want %T", tt, d, tt.wantTypeOf) + } + } +} + func TestFromURL(t *testing.T) { endSystem, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { @@ -140,3 +199,17 @@ func socks5Gateway(t *testing.T, gateway, endSystem net.Listener, typ byte, wg * return } } + +func ResetProxyEnv() { + for _, env := range []*envOnce{allProxyEnv, noProxyEnv} { + for _, v := range env.names { + os.Setenv(v, "") + } + } + ResetCachedEnvironment() +} + +func ResetCachedEnvironment() { + allProxyEnv.reset() + noProxyEnv.reset() +} diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go index 9b9628239a..2efec6e8d7 100644 --- a/vendor/golang.org/x/net/proxy/socks5.go +++ b/vendor/golang.org/x/net/proxy/socks5.go @@ -72,24 +72,28 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { if err != nil { return nil, err } - closeConn := &conn - defer func() { - if closeConn != nil { - (*closeConn).Close() - } - }() + if err := s.connect(conn, addr); err != nil { + conn.Close() + return nil, err + } + return conn, nil +} - host, portStr, err := net.SplitHostPort(addr) +// connect takes an existing connection to a socks5 proxy server, +// and commands the server to extend that connection to target, +// which must be a canonical address with a host and port. +func (s *socks5) connect(conn net.Conn, target string) error { + host, portStr, err := net.SplitHostPort(target) if err != nil { - return nil, err + return err } port, err := strconv.Atoi(portStr) if err != nil { - return nil, errors.New("proxy: failed to parse port number: " + portStr) + return errors.New("proxy: failed to parse port number: " + portStr) } if port < 1 || port > 0xffff { - return nil, errors.New("proxy: port number out of range: " + portStr) + return errors.New("proxy: port number out of range: " + portStr) } // the size here is just an estimate @@ -103,17 +107,17 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { } if _, err := conn.Write(buf); err != nil { - return nil, errors.New("proxy: failed to write greeting to SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to write greeting to SOCKS5 proxy at " + s.addr + ": " + err.Error()) } if _, err := io.ReadFull(conn, buf[:2]); err != nil { - return nil, errors.New("proxy: failed to read greeting from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to read greeting from SOCKS5 proxy at " + s.addr + ": " + err.Error()) } if buf[0] != 5 { - return nil, errors.New("proxy: SOCKS5 proxy at " + s.addr + " has unexpected version " + strconv.Itoa(int(buf[0]))) + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " has unexpected version " + strconv.Itoa(int(buf[0]))) } if buf[1] == 0xff { - return nil, errors.New("proxy: SOCKS5 proxy at " + s.addr + " requires authentication") + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " requires authentication") } if buf[1] == socks5AuthPassword { @@ -125,15 +129,15 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { buf = append(buf, s.password...) if _, err := conn.Write(buf); err != nil { - return nil, errors.New("proxy: failed to write authentication request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to write authentication request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) } if _, err := io.ReadFull(conn, buf[:2]); err != nil { - return nil, errors.New("proxy: failed to read authentication reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to read authentication reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) } if buf[1] != 0 { - return nil, errors.New("proxy: SOCKS5 proxy at " + s.addr + " rejected username/password") + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " rejected username/password") } } @@ -150,7 +154,7 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { buf = append(buf, ip...) } else { if len(host) > 255 { - return nil, errors.New("proxy: destination hostname too long: " + host) + return errors.New("proxy: destination host name too long: " + host) } buf = append(buf, socks5Domain) buf = append(buf, byte(len(host))) @@ -159,11 +163,11 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { buf = append(buf, byte(port>>8), byte(port)) if _, err := conn.Write(buf); err != nil { - return nil, errors.New("proxy: failed to write connect request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to write connect request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) } if _, err := io.ReadFull(conn, buf[:4]); err != nil { - return nil, errors.New("proxy: failed to read connect reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to read connect reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) } failure := "unknown error" @@ -172,7 +176,7 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { } if len(failure) > 0 { - return nil, errors.New("proxy: SOCKS5 proxy at " + s.addr + " failed to connect: " + failure) + return errors.New("proxy: SOCKS5 proxy at " + s.addr + " failed to connect: " + failure) } bytesToDiscard := 0 @@ -184,11 +188,11 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { case socks5Domain: _, err := io.ReadFull(conn, buf[:1]) if err != nil { - return nil, errors.New("proxy: failed to read domain length from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to read domain length from SOCKS5 proxy at " + s.addr + ": " + err.Error()) } bytesToDiscard = int(buf[0]) default: - return nil, errors.New("proxy: got unknown address type " + strconv.Itoa(int(buf[3])) + " from SOCKS5 proxy at " + s.addr) + return errors.New("proxy: got unknown address type " + strconv.Itoa(int(buf[3])) + " from SOCKS5 proxy at " + s.addr) } if cap(buf) < bytesToDiscard { @@ -197,14 +201,13 @@ func (s *socks5) Dial(network, addr string) (net.Conn, error) { buf = buf[:bytesToDiscard] } if _, err := io.ReadFull(conn, buf); err != nil { - return nil, errors.New("proxy: failed to read address from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to read address from SOCKS5 proxy at " + s.addr + ": " + err.Error()) } // Also need to discard the port number if _, err := io.ReadFull(conn, buf[:2]); err != nil { - return nil, errors.New("proxy: failed to read port from SOCKS5 proxy at " + s.addr + ": " + err.Error()) + return errors.New("proxy: failed to read port from SOCKS5 proxy at " + s.addr + ": " + err.Error()) } - closeConn = nil - return conn, nil + return nil } diff --git a/vendor/golang.org/x/net/publicsuffix/list_test.go b/vendor/golang.org/x/net/publicsuffix/list_test.go index a08e64eaf4..42d79cc43e 100644 --- a/vendor/golang.org/x/net/publicsuffix/list_test.go +++ b/vendor/golang.org/x/net/publicsuffix/list_test.go @@ -216,13 +216,13 @@ var publicSuffixTestCases = []struct { {"aaa.xn--p1ai", "xn--p1ai"}, {"www.xxx.yyy.xn--p1ai", "xn--p1ai"}, - // The .zw rules are: - // *.zw - {"zw", "zw"}, - {"www.zw", "www.zw"}, - {"zzz.zw", "zzz.zw"}, - {"www.zzz.zw", "zzz.zw"}, - {"www.xxx.yyy.zzz.zw", "zzz.zw"}, + // The .bd rules are: + // *.bd + {"bd", "bd"}, + {"www.bd", "www.bd"}, + {"zzz.bd", "zzz.bd"}, + {"www.zzz.bd", "zzz.bd"}, + {"www.xxx.yyy.zzz.bd", "zzz.bd"}, // There are no .nosuchtld rules. {"nosuchtld", "nosuchtld"}, diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go index bf20c036bb..50f070a92d 100644 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ b/vendor/golang.org/x/net/publicsuffix/table.go @@ -2,7 +2,7 @@ package publicsuffix -const version = "publicsuffix.org's public_suffix_list.dat, git revision 915565885d0fbd25caf7d8b339cd3478f558da94 (2016-10-19T08:16:09Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision f47d806df99585862c8426c3e064a50eb5a278f5 (2017-06-14T11:49:01Z)" const ( nodesBitsChildren = 9 @@ -23,446 +23,453 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1553 +const numTLD = 1549 // Text is the combined text of all labels. -const text = "biellaakesvuemieleccebieszczadygeyachimatainaircraftraeumtgerade" + - "alstahaugesunderseaportsinfolldalaskanittedallasalleasinglesango" + - "ppdalinzaintuitateshinanomachintaifun-dnsaliaskimitsubatamicable" + - "-modembetsukuinuyamanouchikuhokuryugasakitaurayasudabievatmallor" + - "cadaquesanjotateyamabifukagawalmartatsunobihorologyuzhno-sakhali" + - "nskaszubybikedagestangebilbaogakievenesannaninomiyakonojoshkar-o" + - "lawabillustrationirasakinvestmentsannohelplfinancialipetskatowic" + - "ebiobirdartcenterprisesakikuchikuseikarugapartmentsanokatsushika" + - "beeldengeluidunloppacificasinore-og-uvdalivornobirkenesoddtangen" + - "ovarabirthplacebjarkoybjerkreimdbalatinorddalillyonagoyastronomy" + - "asustor-elvdalwaysdatabaseballangenoamishirasatochigiessenebakke" + - "shibechambagriculturennebudapest-a-la-masionativeamericanantique" + - "s3-ap-northeast-2bjugnieznordlandunsantabarbarablockbusternidupo" + - "ntariobloombergbauernrtattoolsztynsettlersantacruzsantafedextras" + - "pace-to-rentalstomakomaibarabloxcmsanukis-a-candidatebluedaplier" + - "neustarhubalestrandabergamoarekeymachineues3-us-west-1bmoattachm" + - "entsaotomeloyalistjordalshalsenishiazais-a-catererbmsapodhalewis" + - "millerbmweirbnpparibaselburgloppenzaogashimadachicagoboatsapporo" + - "bnrwfarmsteadurbanamexhibitionishigotsukisosakitagawabomloanswat" + - "ch-and-clockerbondurhamburgmbhartiffanybonnishiharabookingminaka" + - "michiharabootsaratovalleaostatoilomzaporizhzheguris-a-celticsfan" + - "ishiizunazukis-a-chefarsundvrcambridgestonewyorkshirecreationish" + - "ikatakayamatsuzakis-a-conservativefsncfdvrdnsiskinkyotobetsumida" + - "tlanticateringebudejjuedischesapeakebayernurembergmodenakanotodd" + - "enishikatsuragithubusercontentaxihuanishikawazukanazawaboschaeff" + - "lerdalorenskogmxfinitybostikatsuyamaseratis-a-cpadoval-daostaval" + - "leybostonakijinsekikogentingrimstadwgripebotanicalgardenishimera" + - "botanicgardenishinomiyashironobotanybouncemerckmsdnipropetrovskl" + - "eppalmspringsakerbounty-fullensakerrypropertiesardegnamsosnowiec" + - "atholicheltenham-radio-openair-traffic-controlleyboutiquebecngri" + - "wataraidyndns-ipamperedchefashionishinoomotegovtgorybozentsujiie" + - "bradescorporationishinoshimatta-varjjatjeldsundyndns-mailotenkaw" + - "abrandywinevalleybrasiliabresciabrindisibenikebristolgaulardalot" + - "tebritishcolumbialowiezaganquannefrankfurtjmaxxxjaworznowtvalled" + - "-aostavangerbroadcastleclerchelyabinskypescaravantaabroadwaybrok" + - "e-itjometlifeinsurancebrokerbronnoysundyndns-office-on-the-webca" + - "mpobassociatesardiniabrothermesaverdeatnuorockartuzybrowsersafet" + - "ymarketsarlottokorozawabrumunddalouvreitjxn--0trq7p7nnishiokoppe" + - "gardyndns-picsarpsborgroks-thisayamanashiibaghdadultkmaxxn--11b4" + - "c3dyndns-remotegildeskalmykiabrunelblagdenesnaaseralingenkainana" + - "ejrietisalatinabenoboribetsucksarufutsunomiyawakasaikaitakoelnis" + - "hitosashimizunaminamiashigarabrusselsasayamabruxellesaseboknowsi" + - "tallowiczest-le-patrondheimperiabryanskodjeepostfoldnavyatkakami" + - "gaharabrynewhampshirebungoonordreisa-geekaufenishiwakis-a-cubicl" + - "e-slavellinotteroybuskerudinewhollandyndns-servercellikes-piedmo" + - "ntblancomeeresaskatchewanggouvicenzabuzenissandnessjoenissayokos" + - "hibahikariwanumatakazakis-a-democratmpanamabuzzgradyndns-weberli" + - "ncolnissedalucaniabwhalingrondarbzhitomirkutskydivingrongacomput" + - "erhistoryofscience-fictioncomsecuritytacticschulezajskddielddanu" + - "orrikuzentakatajirissagamiharacondoshichinohealth-carereformitak" + - "eharaconferenceconstructionconsuladoharuhrconsultanthropologycon" + - "sultingvollutskfhappoumuenchencontactoyotomiyazakis-a-geekgalaxy" + - "contemporaryarteducationalchikugojomedio-campidano-mediocampidan" + - "omediocontractorskenconventureshinodesashibetsuikinderoycookingc" + - "hannelveruminamibosogndaluxembourgujolstercoolkuszippodlasiellak" + - "asamatsudovre-eikercoopencraftoyotsukaidownloadcopenhagencyclope" + - "dichernovtsykkylvenetogakushimotoganewmexicoldwarmiamiastalowa-w" + - "oladbrokesassaris-a-designerimarumorimachidacorsicagliaridagawal" + - "tercorvettenrightathomegoodschwarzgwangjuifminamidaitomangotemba" + - "ixadacosenzamamibuilderschmidtre-gauldaluxurycostumedizinhistori" + - "scheschweizjcbnluzerncouchpotatofriesciencecentersciencehistoryc" + - "ouncilvivano-frankivskhabarovskhakassiacouponscientistockholmest" + - "randcoursescjohnsoncq-acranbrookuwanalyticscotlandcreditcardcred" + - "itunioncremonashorokanaiecrewiiheyaizuwakamatsubushikusakadogawa" + - "cricketrzyncrimeacrotonewspapercrownprovidercrsvparaglidingulenc" + - "ruisescrapper-sitecryptonomichigangwoncuisinellajollamericanexpr" + - "essexyculturalcentertainmentoyouracuneocupcakecxn--1ctwolominama" + - "takkofuefukihabororostrowwlkpmgunmarnardalcymruovatoystre-slidre" + - "ttozawacyonabarussiacyouthdfcbankzlguovdageaidnufcfanfieldfiguer" + - "estaurantozsdefilateliafilminamiechizenfinalfinancefineartservef" + - "tparisor-fronfinlandfinnoyfirebaseapparliamentranbyfirenzefirest" + - "onexus-east-1firmdaleirfjordfishingolffanservegame-serverisignfi" + - "tjarqhachiojiyahikobeatservehalflifestylefitnessettlementrani-an" + - "dria-barletta-trani-andriafjalerflesbergflickragerotikamakurazak" + - "irkeneservehttparmaflightservehumourflirumansionserveirchiryukyu" + - "ragifuchukotkakegawassamukawataricohdavvenjargausdaluccapitalone" + - "wjerseyflogintogurafloraflorencefloridafloristanohatakaharulvikh" + - "arkovalledaostavernflorokunohealthcareerserveminecraftraniandria" + - "barlettatraniandriaflowerservemp3utilitiesquarezzoologicalvinkle" + - "in-addrammenuernbergdyniabogadocscbggfareastcoastaldefence-burgj" + - "emnes3-ap-northeast-1kappleaseating-organicbcg12000emmafanconaga" + - "wakayamadridvagsoyericsson-aptibleangaviikadenaamesjevuemielno-i" + - "p6flynnhubalsfjordiscountysnes3-us-west-2fndfoodnetworkshoppingf" + - "or-ourfor-someetnedalfor-theaterforexrothruheredstoneforgotdnser" + - "vep2parocherkasyzrankoshigayaltaijis-a-greenforli-cesena-forlice" + - "senaforlikescandyndns-at-workinggrouparservepicservequakeforsale" + - "irvikhersonforsandasuoloftranoyfortmissoulan-udefenseljordfortwo" + - "rthachirogatakamoriokamikitayamatotakadaforuminamifuranofosneser" + - "vesarcasmatartanddesignfotaruis-a-gurunzenfoxfordegreefreeboxost" + - "rowiechitachinakagawatchandclockazimierz-dolnyfreemasonryfreibur" + - "gfreightcmwildlifedjejuegoshikiminokamoenairlinedre-eikerfreseni" + - "uscountryestateofdelawaredumbrellanbibaidarfribourgfriuli-v-giul" + - "iafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-ven" + - "eziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiu" + - "liafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfrogan" + - "servicesettsurgeonshalloffamemergencyberlevagangaviikanonjis-a-h" + - "ard-workerfrognfrolandfrom-akrehamnfrom-alfrom-arfrom-azpartis-a" + - "-hunterfrom-capebretonamiasakuchinotsuchiurakawarszawashingtondc" + - "lkhmelnitskiyamasfjordenfrom-collectionfrom-ctransportransurlfro" + - "m-dchitosetogitsuldalucernefrom-dell-ogliastrakhanawafrom-flande" + - "rsevastopolefrom-gafrom-higashiagatsumagoirminamiiselectrapaniim" + - "imatakatoris-a-knightpointtokamachippubetsubetsugaruslivinghisto" + - "ryfrom-iafrom-idfrom-ilfrom-incheonfrom-ksevenassisicilyfrom-kyo" + - "wariasahikawafrom-lancashireggio-calabriafrom-manxn--1qqw23afrom" + - "-mdfrom-meguromskoguchikuzenfrom-microsoftbankhmelnytskyivallee-" + - "aosteroyfrom-mnfrom-mochizukirovogradoyfrom-msewilliamhillfrom-m" + - "tnfrom-nchloefrom-ndfrom-nefrom-nhktravelchannelfrom-njcpartners" + - "franziskanerdpolicefrom-nminamiizukamitondabayashiogamagoriziafr" + - "om-nvalleeaosteigenfrom-nyfrom-ohkurafrom-oketohmaorivnefrom-orf" + - "rom-paderbornfrom-pratohnoshoooshikamaishimofusartshangrilangeva" + - "grarboretumbriafrom-ris-a-landscaperugiafrom-schoenbrunnfrom-sdf" + - "rom-tnfrom-txn--2m4a15efrom-utazuerichardlillehammerfest-mon-blo" + - "gueurovisionfrom-vaksdalfrom-vtravelersinsurancefrom-wafrom-wiel" + - "unnerfrom-wvanylvenicefrom-wyfrosinonefrostalbansharis-a-lawyerf" + - "royahabadajozoraholtalenvironmentalconservationfstavropolitienda" + - "fujiiderafujikawaguchikonefujiminohtawaramotoineppubolognakaniik" + - "awatanagurafujinomiyadafujiokayamapartsharpartyfujisatoshonairpo" + - "rtland-4-salernogatagajobojis-a-liberalfujisawafujishiroishidaka" + - "biratoridellogliastraderfujitsurugashimamateramodalenfujixeroxn-" + - "-30rr7yfujiyoshidafukayabeardubaiduckdnshomebuiltrdfukuchiyamada" + - "fukudominichocolatemasekazofukuis-a-libertarianfukumitsubishigak" + - "iryuohadanoshiroomurafukuokazakisarazurewebsiteshikagamiishibuka" + - "wafukuroishikarikaturindalfukusakishiwadafukuyamagatakahashimama" + - "kisofukushimarburgfunabashiriuchinadafunagatakahatakaishimoichin" + - "osekigaharafunahashikamiamakusatsumasendaisennangonohejis-a-linu" + - "x-useranishiaritabashikaoizumizakitchenfundaciofuoiskujukuriyama" + - "rcheapasadenaklodzkodairafuosskoczowinbaltimore-og-romsdalimited" + - "iscoveryonaguniversityoriikashibatakashimarylhurstjohnaval-d-aos" + - "ta-valleyukibestadishakotankashiharaukraanghkepnord-frontierepai" + - "rbusantiquest-a-la-maisondre-landebusinessebyklefrakkestadds3-ap" + - "-southeast-2furnitureggio-emilia-romagnakanojohanamakinoharafuru" + - "biraquarellebesbyglandfurudonostiafurukawairtelecityeatshawaiiji" + - "marugame-hostingfusodegaurafussaintlouis-a-anarchistoireggiocala" + - "briafutabayamaguchinomigawafutboldlygoingnowhere-for-moregontrai" + - "lroadfuttsurugiminamimakis-a-llamarylandfuturemailingfvgfyis-a-m" + - "usicianfylkesbiblackfridayfyresdalhannanmokuizumodernhannovarese" + - "rveblogspotrentino-a-adigehanyuzenhapmirhareidsbergenharstadharv" + - "estcelebrationhasamarahasaminami-alpssells-itrentino-aadigehashb" + - "anghasudahasura-appassenger-associationhasviklabudhabikinokawaba" + - "rthaebaruminamiminowahatogayahoohatoyamazakitahiroshimarriottren" + - "tino-alto-adigehatsukaichikaiseis-a-painteractivegarsheis-a-pats" + - "fanhattfjelldalhayashimamotobuildinghazuminobusellsyourhomeipavi" + - "ancargodaddyndns-at-homednshimonosekikawahboehringerikehelsinkit" + - "akamiizumisanofidelitysvardollshimosuwalkis-a-personaltrainerhem" + - "bygdsforbundhemneshimotsukehemsedalhepforgeherokussldheroyhgtvsh" + - "imotsumahigashichichibungotakadatinghigashihiroshimanehigashiizu" + - "mozakitakatakanezawahigashikagawahigashikagurasoedahigashikawaki" + - "taaikitakyushuaiahigashikurumeiwamarshallstatebankmpspbamblebtim" + - "netz-2higashimatsushimarinehigashimatsuyamakitaakitadaitoigawahi" + - "gashimurayamalatvuopmidoris-a-photographerokuappfizerhigashinaru" + - "sembokukitamidsundhigashinehigashiomihachimanchesterhigashiosaka" + - "sayamamotorcycleshinichinanhigashishirakawamatakaokamikoaniikapp" + - "ugliahigashisumiyoshikawaminamiaikitamotosumitakaginankokubunjis" + - "-a-playerhigashitsunotogawahigashiurausukitanakagusukumoduminami" + - "ogunicomcastresistancehigashiyamatokoriyamanakakogawahigashiyodo" + - "gawahigashiyoshinogaris-a-republicancerresearchaeologicalifornia" + - "hiraizumisatohobby-sitehirakatashinagawahiranairtraffichofunator" + - "ientexpressatxn--1ck2e1balsanagochihayaakasakawaharavennagasakik" + - "onaikawachinaganoharamcoalaheadjudaicaaarborteaches-yogasawaraci" + - "ngroks-theatreemersongdalenviknakamuratakahamannortonsbergladelm" + - "enhorstackspacekitagataiwanairguardigitalimanowarudaugustowadaeg" + - "ubs3-ap-southeast-1hirarahiratsukagawahirayaitakarazukamiminersh" + - "injournalismailillesandefjordhistorichouseshinjukumanohitachiomi" + - "yaginowaniihamatamakawajimaritimodellinghitachiotagooglecodespot" + - "rentino-altoadigehitoyoshimifunehitradinghjartdalhjelmelandholec" + - "kobierzyceholidayhomelinuxn--32vp30hagakhanamigawahomesecurityma" + - "ceratakasagoperaunitextileitungsenhomesecuritypccwindmillhomesen" + - "seminehomeunixn--3bst00minamisanrikubetsupplyhondahoneywellbeing" + - "zonehongorgehonjyoitakasakitashiobarahornindalhorseoulminamitane" + - "hortendofinternetrentino-s-tirollagrigentomologyhoteleshinkamigo" + - "toyohashimototalhotmailhoyangerhoylandetroitskokonoehumanitieshi" + - "nshinotsurgeryhurdalhurumajis-a-rockstarachowicehyllestadhyogori" + - "s-a-socialistmeindianapolis-a-bloggerhyugawarahyundaiwafunehzcho" + - "nanbugattipschlesischesaudajgorajlchoshibuyachiyodavvesiidazaifu" + - "daigodoesntexistanbullensvanguardyndns-wikindleikangerjlljmpharm" + - "acienshiojirishirifujiedajnjelenia-gorajoyentrentino-sued-tirolj" + - "oyokaichibahcavuotnagaraumalselvendrelljpmorganjpnchoyodobashich" + - "ikashukujitawarajprshioyamemorialjuniperjurkristiansundkrodshera" + - "dkrokstadelvaldaostarnbergkryminamiyamashirokawanabelgorodeokuma" + - "torinokumejimassa-carrara-massacarraramassabunkyonanaoshimageand" + - "soundandvisionkumenanyokkaichirurgiens-dentistes-en-francekunisa" + - "kis-an-artistcgroupgfoggiakunitachiarailwaykunitomigusukumamotoy" + - "amasoykunneppulawykunstsammlungkunstunddesignkuokgrouphdkureisen" + - "kurgankurobelaudibleborkdalkurogimilitarykuroisoftwarendalenugku" + - "romatsunais-an-engineeringkurotakikawasakis-an-entertainerkursko" + - "mmunalforbundkushirogawakustanais-bykusupplieshiranukaniepcekutc" + - "hanelkutnokuzbassnillfjordkuzumakis-certifiedogawarabikomaezakir" + - "unorthwesternmutualkvafjordkvalsundkvamfamberkeleykvanangenkvine" + - "sdalkvinnheradkviteseidskogkvitsoykwpspjelkavikommunemitourismol" + - "anciamitoyoakemiuramiyazumiyotamanomjondalenmlbfanmonmouthagebos" + - "tadmonstermonticellombardiamondshiraois-into-carshintomikasahara" + - "montrealestatefarmequipmentrentino-suedtirolmonza-brianzaporizhz" + - "hiamonza-e-della-brianzapposhiraokanmakiyokawaramonzabrianzaptok" + - "yotangotpantheonsitemonzaebrianzaramonzaedellabrianzamoparachuti" + - "ngmordoviajessheiminanomoriyamatsunomoriyoshiokamitsuemormoneymo" + - "royamatsusakahoginozawaonsenmortgagemoscowindowshiratakahagivest" + - "bytomaritimekeepingmoseushistorymosjoenmoskeneshishikuis-into-ca" + - "rtoonshinyoshitomiokaneyamaxunusualpersonmosshisognemosvikomorot" + - "sukamisunagawamoviemovistargardmtpchristmasakikugawatchesauherad" + - "yndns-workisboringrossetouchijiwadeloittevadsoccertificationissh" + - "ingugemtranakatsugawamuenstermugithubcloudusercontentrentinoa-ad" + - "igemuikamogawamukochikushinonsenergymulhouservebeermunakatanemun" + - "cieszynmuosattemuphiladelphiaareadmyblogsitemurmanskomvuxn--3ds4" + - "43gmurotorcraftrentinoaadigemusashimurayamatsushigemusashinohara" + - "museetrentinoalto-adigemuseumverenigingmutsuzawamutuellevangermy" + - "dissentrentinoaltoadigemydrobofagemydshisuifuelmyeffectrentinos-" + - "tirolmyfritzwinnershitaramamyftphilatelymykolaivarggatrentinosti" + - "rolmymediapchromedicaltanissettaishinomakimobetsuliguriamyokoham" + - "amatsudamypepsonyoursidedyn-o-saurecipesaro-urbino-pesarourbinop" + - "esaromamurogawawioshizukuishimogosenmypetshizuokannamiharumyphot" + - "oshibahccavuotnagareyamalvikongsbergmypsxn--3e0b707emysecurityca" + - "merakermyshopblockshoujis-into-gamessinashikiwakunigamihamadamyt" + - "is-a-bookkeepermincommbankomonomyvnchryslerpictetrentinosud-tiro" + - "lpictureshowtimeteorapphoenixn--3oq18vl8pn36apiemontepilotshrira" + - "mlidlugolekagaminogiftsienaplesigdalpimientaketomisatomskongsvin" + - "gerpinkoninjamisonpioneerpippuphonefosshowapiszpittsburghofastly" + - "piwatepizzapkonskowolayangroupharmacyshirahamatonbetsurgutsiracu" + - "saitoshimaplanetariuminnesotaketakatsukis-foundationplantationpl" + - "antsilkonsulatrobeepilepsydneyplatformintelligenceplaystationpla" + - "zaplchungbukazunoplombardyndns-blogdnsimbirskonyvelolplumbingopm" + - "npodzonepohlpoivronpokerpokrovskooris-a-techietis-a-soxfanpolkow" + - "icepoltavalle-aostarostwodzislawitdkopervikomforbananarepublicar" + - "toonartdecoffeedbackplaneappalacemreviewskrakoweddinglassassinat" + - "ionalheritagematsubarakawagoeu-1pomorzeszowithgoogleapisa-hockey" + - "nutrentinosudtirolpordenonepornporsangerporsanguideltajimicrolig" + - "htingporsgrunnanpoznanpraxis-a-bruinsfanprdpreservationpresidiop" + - "rgmrprimelhusgardenprincipeprivatizehealthinsuranceprochowicepro" + - "ductionsimple-urlprofauskedsmokorsetagayasells-for-ulsandoyprogr" + - "essivegasiaprojectrentinosued-tirolpromombetsurfbsbxn--1lqs03npr" + - "opertyprotectionprotonetrentinosuedtirolprudentialpruszkowithyou" + - "tubeneventoeidsvollprzeworskogptplusterptzpvtrentoyonakagyokutoy" + - "akokamishihoronobeokaminoyamatsuris-leetrentino-stirolpwchungnam" + - "dalseidfjordynnsavannahgapzqldqponqslgbtrevisohughesirdalquicksy" + - "teslingqvchurchaseljeffersoniyodogawastoragestordalstorenburgsto" + - "rfjordstpetersburgstreamsterdamnserverbaniastudiostudyndns-homef" + - "tpaccessnoasakakinokiastuff-4-salestufftoread-booksnesnzstuttgar" + - "trogstadsurreysusakis-not-certifieducatorahimeshimakanegasakinko" + - "bayashikshacknethnologysusonosuzakanrasuzukanumazurysuzukis-save" + - "dunetbankolobrzegersundsvalbardudinkakudamatsuesveiosvelvikoseis" + - "-a-therapistoiasvizzeraswedenswidnicarrierswiebodzindianmarketin" + - "gswiftcoveronaritakurashikis-slickomaganeswinoujscienceandhistor" + - "yswisshikis-uberleetrentino-sud-tirolturystykarasjohkamiokaminok" + - "awanishiaizubangetuscanytushuissier-justicetuvalle-daostatichuva" + - "shiatuxfamilyversicherungvestfoldvestnesolutionslupskoryolasitev" + - "estre-slidreamhostersomavestre-totennishiawakuravestvagoyvevelst" + - "advibo-valentiavibovalentiavideovillaskoyabearalvahkijobserverda" + - "lvdalcesomnarashinovinnicartiervinnytsiavipsinaapphotographysiov" + - "irginiavirtualvirtueeldomeindustriesteambulancevirtuelvisakegawa" + - "vistaprinternationalfirearmsooviterboltromsakatakinouevivoldavla" + - "dikavkazanvladimirvladivostokaizukarasuyamazoevlogoipiagetmyiphi" + - "lipsyvolkenkundenvolkswagentsopotritonvologdanskoshunantokonameg" + - "atakasugais-an-accountantshinshirovolvolgogradvolyngdalvoronezhy" + - "tomyrvossevangenvotevotingvotoyonezawavrnworldworse-thanggliding" + - "wowiwatsukiyonowruzhgorodoywritesthisblogsytewroclawloclawekostr" + - "omahachijorpelandwtcirclegnicafederationwtfbx-oslodingenwuozuwww" + - "mflabsor-odalwzmiuwajimaxn--4gq48lf9jeonnamerikawauexn--4it168dx" + - "n--4it797kotohiradomainsurehabmerxn--4pvxsor-varangerxn--54b7fta" + - "0ccitichernigovernmentoyookanzakiyosatokigawaxn--55qw42gxn--55qx" + - "5dxn--5js045dxn--5rtp49civilaviationxn--5rtq34kotouraxn--5su34j9" + - "36bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn-" + - "-7t0a264civilisationxn--80adxhksorfoldxn--80ao21axn--80aqecdr1ax" + - "n--80asehdbarclaycardsakuraibigawaurskog-holandroverhalla-spezia" + - "grocerybnikahokutobishimaizurubtsovskiervaapsteiermarkariyakumol" + - "dev-myqnapcloudcontrolappagefrontappagespeedmobilizerobiraeropor" + - "talabamagasakishimabarackmaze12xn--80aswgxn--80audnedalnxn--8ltr" + - "62kouhokutamakis-an-actorxn--8pvr4uxn--8y0a063axn--90a3academyac" + - "tivedirectoryazannakadomari-elasticbeanstalkounosunndalxn--90ais" + - "hobaraomoriguchiharahkkeravjudygarlandxn--90azhaibarakitahatakan" + - "abeautydalxn--9dbhblg6dietcimmobilienxn--9dbq2axn--9et52uxn--9kr" + - "t00axn--andy-iraxn--aroport-byanagawaxn--asky-iraxn--aurskog-hla" + - "nd-jnbarclaysakyotanabellunordkappgafanpachigasakidsmynasushioba" + - "ragusaarlandiskstationavigationavuotnakayamatsuuraustevollavagis" + - "kebinagisochildrensgardenaturalhistorymuseumcenterepbodyndns-fre" + - "ebox-oskolegokasells-for-less3-eu-central-1xn--avery-yuasakuhokk" + - "aidontexisteingeekouyamashikis-an-actresshintokushimaxn--b-5gaxn" + - "--b4w605ferdxn--bck1b9a5dre4civilizationxn--bdddj-mrabdxn--beara" + - "lvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn-" + - "-bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyanaizuxn--bjddar-" + - "ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--bod-2n" + - "aroyxn--brnny-wuaccident-investigationjukudoyamagadancebetsukuba" + - "bia-goracleaningatlantabusebastopologyeonggiehtavuoatnadexeterim" + - "o-i-ranagahamaroygardendoftheinternetflixilovecollegefantasyleag" + - "uernseyxn--brnnysund-m8accident-preventionlineat-urlxn--brum-voa" + - "gatromsojavald-aostaplesokanoyakagexn--btsfjord-9zaxn--c1avgxn--" + - "c2br7gxn--c3s14misasaguris-into-animelbournexn--cck2b3barefootba" + - "llooningliwiceventsalangenayoroddaustinnaturalsciencesnaturelles" + - "3-eu-west-1xn--cg4bkis-very-badaddjamalborkangerxn--ciqpnxn--clc" + - "hc0ea0b2g2a9gcdn77-sslattumisawaxn--comunicaes-v6a2oxn--correios" + - "-e-telecomunicaes-ghc29axn--czr694bargainstitutelemarkashiwaraus" + - "traliaisondriodejaneirochestereportarantours3-external-1xn--czrs" + - "0trusteexn--czru2dxn--czrw28barreauctionflfanfshostrodawaraustrh" + - "eimatunduhrennesoyokotebinorilskarlsoyokozebizenakamagayachts3-e" + - "xternal-2xn--d1acj3barrel-of-knowledgeologyukuhashimojibmditchyo" + - "uripalanakhodkanagawauthordalandroidgcahcesuolocalhistoryggeelvi" + - "nckarmoyomitanobninskarpaczeladz-1xn--d1alfaromeoxn--d1atrvbarce" + - "lonagasukeu-2xn--d5qv7z876civilwarmanagementoyosatoyokawaxn--dav" + - "venjrga-y4axn--djrs72d6uyxn--djty4kouzushimashikokuchuoxn--dnna-" + - "grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e1a4claimsaves-th" + - "e-whalessandria-trani-barletta-andriatranibarlettaandriaxn--eckv" + - "dtc9dxn--efvn9sorreisahayakawakamiichikawamisatottoris-lostre-to" + - "teneis-a-studentalxn--efvy88hair-surveillancexn--ehqz56nxn--elqq" + - "16hakatanotaireshimokawaxn--estv75gxn--eveni-0qa01gaxn--f6qx53ax" + - "n--fct429kozagawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hsortlandx" + - "n--fiq64barrell-of-knowledgeometre-experts-comptablesalondonetsk" + - "ashiwazakiyosemiteverbankasukabedzin-the-bandaioiraseeklogesuran" + - "certmgretachikawakkanaibetsubamericanfamilydscloudcontrolledekaf" + - "jordivtasvuodnagatorogersaltdalimoliserniautomotivecodynaliascol" + - "i-picenoipirangamvikaruizawamusementaobaokinawashirosatochiokino" + - "shimakeupowiathletajimabariakembuchikumagayagawakuyabukihokumako" + - "gengerdalipayekaterinburgjerdrumckinseyokosukareliance164xn--fiq" + - "s8sorumisakis-gonexn--fiqz9southcarolinazawaxn--fjord-lraxn--fjq" + - "720axn--fl-ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-grand" + - "rapidsouthwestfalenxn--frna-woaraisaijosoyrovigorlicexn--frya-hr" + - "axn--fzc2c9e2clickchristiansburgroundhandlingroznyxn--fzys8d69uv" + - "gmailxn--g2xx48clinichernihivanovosibirskautokeinoxn--gckr3f0fbx" + - "ostrolekaluganskharkivgucciprianiigataitogliattirescrappingushik" + - "amifuranosegawaxn--gecrj9cliniquenoharaxn--ggaviika-8ya47hakodat" + - "exn--gildeskl-g0axn--givuotna-8yandexn--3pxu8kosugexn--gjvik-wua" + - "xn--gk3at1exn--gls-elacaixaxn--gmq050is-very-evillagexn--gmqw5ax" + - "n--h-2failxn--h1aeghakonexn--h2brj9clintonoshoesavonamsskoganeis" + - "-a-doctorayxn--hbmer-xqaxn--hcesuolo-7ya35bashkiriautoscanadaeje" + - "onbukarumaifarmerseinextdirectargets-itargivingjesdalavangenatur" + - "bruksgymnaturhistorisches3-fips-us-gov-west-1xn--hery-iraxn--hge" + - "bostad-g3axn--hmmrfeasta-s4acctrysiljan-mayenxn--hnefoss-q1axn--" + - "hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn" + - "--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyaotsurnadal" + - "xn--io0a7is-very-goodhandsonxn--j1aefermobilyxn--j1amhakubankhva" + - "olbia-tempio-olbiatempioolbialystokkemerovodkagoshimalopolskanla" + - "ndxn--j6w193gxn--jlq61u9w7basilicataniaveroykeniwaizumiotsukumiy" + - "amazonawsabaerobaticketsaritsynologyeongnamegawakeisenbahnatuurw" + - "etenschappenaumburgjovikasaokamisatokashikiwienaustdalazioceanog" + - "raphics3-sa-east-1xn--jlster-byaroslavlaanderenxn--jrpeland-54ax" + - "n--jvr189misconfusedxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77" + - "d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn" + - "--klty5xn--42c2d9axn--koluokta-7ya57hakuis-a-nascarfanxn--kprw13" + - "dxn--kpry57dxn--kpu716ferraraxn--kput3is-very-nicexn--krager-gya" + - "sakaiminatoyonoxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxax" + - "n--krjohka-hwab49jetztrentino-sudtirolxn--ksnes-uuaxn--kvfjord-n" + - "xaxn--kvitsy-fyasugis-very-sweetpepperxn--kvnangen-k0axn--l-1fai" + - "rwindsowaxn--l1accentureklamborghiniizaxn--laheadju-7yasuokarate" + - "xn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52basket" + - "ballfinanzgoravocatanzarowebhopocznoceanographiquehimeji234xn--l" + - "esund-huaxn--lgbbat1ad8jevnakershuscultureggioemiliaromagnakasat" + - "sunais-a-teacherkassymantechnologyxn--lgrd-poacoachampionshiphop" + - "tobamagazinebraskaunjargallupinbatodayurihonjournalisteinkjerusa" + - "lembroideryusuharavoues3-us-gov-west-1xn--lhppi-xqaxn--linds-pra" + - "mericanartulansokndalxn--lns-qlanxesspreadbettingxn--loabt-0qaxn" + - "--lrdal-sraxn--lrenskog-54axn--lt-liaclothingrpanasonichernivtsi" + - "ciliaxn--lten-granexn--lury-iraxn--mely-iraxn--merker-kuaxn--mgb" + - "2ddespydebergxn--mgb9awbferrarittogoldpoint2thisamitsukexn--mgba" + - "3a3ejtunesolarssonxn--mgba3a4f16axn--mgba3a4franamizuholdingsmil" + - "eksvikozakis-an-anarchistoricalsocietyumenxn--mgba7c0bbn0axn--mg" + - "baakc7dvferreroticanonoichinomiyakexn--mgbaam7a8hakusandiegoodye" + - "arthadselfipassagenshellaspeziaxn--mgbab2bdxn--mgbai9a5eva00bats" + - "fjordivttasvuotnaharimaniwakuratexascolipicenord-aurdalpha-myqna" + - "pcloudappspotagerhcloudfunctionsalvadordalibabaikaliszczytnord-o" + - "dalindasdaburyatiaarpaleomutashinaiinetarnobrzegyptianhlfanhsalz" + - "burglobalashovhachinohedmarkasumigaurawa-mazowszexboxenapponazur" + - "e-mobilevje-og-hornnesamegawaxasnesoddenmarkhangelskjervoyagemol" + - "ogicallyngenglanddnskingjerstadotsuruokamchatkameokameyamashinat" + - "sukigatakamatsukawaetnagaivuotnagaokakyotambabydgoszczecinemagen" + - "tositelekommunikationthewifiat-band-campaniamallamaintenanceobih" + - "irosakikamijimattelefonicarbonia-iglesias-carboniaiglesiascarbon" + - "iabruzzoologyeongbuk-uralsk12xn--mgbai9azgqp6jewelryxn--mgbayh7g" + - "paduaxn--mgbb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca" + - "7dzdoxn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbi4ecexposedxn--m" + - "gbpl2fhskpnxn--mgbqly7c0a67fbcloudnsdojoetsuwanouchikujogaszkola" + - "hppiacenzakopanerairforcexn--mgbqly7cvafredrikstadtverranzanxn--" + - "mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhausposts-and-telecommun" + - "icationsnasadodgeorgeorgiaxn--mgbx4cd0abbottunkosherbrookegawaxn" + - "--mix082fetsundxn--mix891fgxn--1lqs71dxn--mjndalen-64axn--mk0axi" + - "nfinitis-with-thebandoomdnsfor-better-thandaxn--mk1bu44cnsaxoxn-" + - "-mkru45isleofmandalxn--mlatvuopmi-s4axn--mli-tlapyatigorskppspie" + - "gelxn--mlselv-iuaxn--moreke-juaxn--mori-qsakuragawaxn--mosjen-ey" + - "atominamiawajikissmarterthanyoustkarasjokomakiyosumycdn77-secure" + - "chtrainingxn--mot-tlaquilancasterxn--mre-og-romsdal-qqbbcasadela" + - "monedatsunanjoburglobodoes-itvedestrandiyusuisserveexchangexn--m" + - "sy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycntoyotaris-a-finan" + - "cialadvisor-aurdalukowhoswhokksundynv6xn--muost-0qaxn--mxtq1mish" + - "imatsumaebashimodatexn--ngbc5azdxn--ngbe9e0axn--ngbrxn--45brj9ci" + - "rcus-2xn--nit225krasnodarxn--nmesjevuemie-tcbajddarchaeologyxn--" + - "nnx388axn--nodexn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--nts" + - "q17gxn--nttery-byaeservecounterstrikexn--nvuotna-hwaxn--nyqy26ax" + - "n--o1achattanooganorfolkebiblegallocus-1xn--o3cw4halsaitamatsuku" + - "ris-a-nurservebbshimokitayamaxn--od0algxn--od0aq3bbtarumizusawax" + - "n--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyatsukaratsuginam" + - "ikatagamihoboleslawiecolonialwilliamsburgruexn--osyro-wuaxn--p1a" + - "cfhvalerxn--p1aiwchoseirouterxn--pbt977coloradoplateaudioxn--pgb" + - "s0dhlxn--porsgu-sta26fidonnakaiwamizawaxn--pssu33lxn--pssy2uxn--" + - "q9jyb4columbusheyxn--qcka1pmcdonaldsrlxn--qqqt11missilelxn--qxam" + - "urskjakdnepropetrovskiptveterinairealtorlandxn--rady-iraxn--rdal" + - "-poaxn--rde-ularvikrasnoyarskomitamamuraxn--rdy-0nabarixn--renne" + - "sy-v1axn--rhkkervju-01aflakstadaokagakibichuoxn--rholt-mragowood" + - "sidexn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn" + - "--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byatsushiroxn--" + - "rny31hammarfeastafricapetownnews-stagingxn--rovu88bbvacationsupd" + - "atelevisionikiitatebayashijonawatexn--rros-granvindafjordxn--rsk" + - "og-uuaxn--rst-0narutomobellevuelosangelesjaguarchitecturealtychy" + - "attorneyagawalbrzycharternopilawalesundxn--rsta-francaiseharaxn-" + - "-ryken-vuaxn--ryrvik-byawaraxn--s-1faitheguardianxn--s9brj9commu" + - "nitysfjordyroyrvikinguitarsbschokoladenxn--sandnessjen-ogbizhevs" + - "kredirectmeldalxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gra" + - "tangenxn--skierv-utazaskvolloabathsbcomobaraxn--skjervy-v1axn--s" + - "kjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5narviikananporovnox" + - "n--slt-elabbvieeexn--smla-hraxn--smna-gratis-a-bulls-fanxn--snas" + - "e-nraxn--sndre-land-0cbremangerxn--snes-poaxn--snsa-roaxn--sr-au" + - "rdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbentleyu" + - "uconnectatamotorsamnangerxn--srfold-byawatahamaxn--srreisa-q1axn" + - "--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbep" + - "publishproxyzgorzeleccolognewportlligatewayuzawaxn--stre-toten-z" + - "cbsrtroandinosaurlandesmolenskosaigawaxn--t60b56axn--tckweatherc" + - "hannelxn--tiq49xqyjewishartgalleryxn--tjme-hraxn--tn0agrinet-fre" + - "aksrvaroyxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trgstad-r1ax" + - "n--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvdonskoshimizumaki" + - "zunokunimilanoxn--uc0ay4axn--uist22hamurakamigoriginshimonitayan" + - "agitlaborxn--uisz3gxn--unjrga-rtambovenneslaskerrylogisticsologn" + - "exn--unup4yxn--uuwu58axn--vads-jraxn--vard-jraxn--vegrshei-c0axn" + - "--vermgensberater-ctberndnpalermomasvuotnakatombetsupportatarsta" + - "nikkoebenhavnikolaevennodessaikiraxn--vermgensberatung-pwbeskidy" + - "nathomedepotenzachpomorskienikonantanangerxn--vestvgy-ixa6oxn--v" + - "g-yiabcn-north-1xn--vgan-qoaxn--vgsy-qoa0jfkomatsushimashikexn--" + - "vgu402comparemarkerryhotelscholarshipschooluroyxn--vhquversaille" + - "solundbeckosakaerodromegalsacechirealminamiuonumasudaxn--vler-qo" + - "axn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bestbuysh" + - "ousesamsclubindalindesnesamsunglogowegroweibolzanordre-landrange" + - "dalinkasuyakutiaxn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wg" + - "bh1compute-1xn--wgbl6axn--xhq521betainaboxfusejnynysagaeroclubme" + - "decincinnationwidealerxn--xkc2al3hye2axn--xkc2dl3a5ee0hangoutsys" + - "temscloudfrontdoorxn--y9a3aquariumisugitokuyamatsumotofukexn--ye" + - "r-znarvikristiansandcatshirakoenigxn--yfro4i67oxn--ygarden-p1axn" + - "--ygbi2ammxn--45q11citadeliveryokamikawanehonbetsurutaharaxn--ys" + - "tre-slidre-ujbieigersundrivelandrobaknoluoktaikicks-assedicaseih" + - "ichisobetsuitaipeiheijiiyamanobeauxartsandcraftsandvikcoromantov" + - "alle-d-aostathellexusdecorativeartsanfranciscofreakunemurorangei" + - "seiyoichiropracticasertairaxn--zbx025dxn--zf0ao64axn--zf0avxn--4" + - "gbriminingxn--zfr164bielawallonieruchomoscienceandindustryninohe" + - "kinannestadrudmurtiaxperiaxz" +const text = "bifukagawalterbihorologybikedagestangeorgeorgiaxasnesoddenmarkha" + + "ngelskjakdnepropetrovskiervaapsteiermarkaragandabruzzoologicalvi" + + "nklein-addrammenuernberggfarmerseine12bilbaogakidsmynasushiobara" + + "gusartsalangeninohekinannestadray-dnsiskinkyotobetsumidatlantica" + + "tholicheltenham-radio-opencraftranagatorodoybillustrationinomiya" + + "konojosoyrorosalondonetskarpaczeladzjavald-aostarnbergladegreevj" + + "e-og-hornnesaltdalimitedraydnsupdaternopilawabioceanographiquebi" + + "rdartcenterprisesakikuchikuseikarugamvikaruizawabirkenesoddtange" + + "novaraumalopolskanlandrivelandrobaknoluoktachikawakembuchikumaga" + + "yagawakkanaibetsubamericanfamilydscloudcontrolledekafjordrudunsa" + + "lvadordalibabalatinord-aurdalvdalaskanittedallasalleasinglesuran" + + "certmgretagajobojinzais-a-candidatebirthplacebjarkoybjerkreimbal" + + "sfjordgcahcesuolocus-1bjugnirasakis-a-catererblockbustermezlglas" + + "sassinationalheritagematsubarakawagoebloombergbauernishiazais-a-" + + "celticsfanishigoddabloxcmsalzburgliwicebluedancebmoattachmentsam" + + "egawabmsamnangerbmwegroweibolzanordkappgafanquannefrankfurtjmaxx" + + "xboxenapponazure-mobilebnpparibaselburglobalashovhachinohedmarka" + + "rumaifarmsteadupontariomutashinais-a-chefarsundurbanamexnethnolo" + + "gybnrweirbonnishiharabookinglobodoes-itvedestrandurhamburglogowf" + + "ashionishiizunazukis-a-conservativefsnillfjordvrcambridgestonexu" + + "s-2bootsamsclubindalimoliserniaboschaefflerdalindashorokanaiebos" + + "tikasaokaminokawanishiaizubangebostonakijinsekikogentingloppenza" + + "ogashimadachicagoboatsamsungmbhartiffanybotanicalgardenishikatak" + + "ayamatta-varjjatjometlifeinsurancebotanicgardenishikatsuragithub" + + "usercontentjxfinitybotanybouncemerckmsdnipropetrovskjervoyagebou" + + "nty-fullensakerrypropertiesandvikcoromantovalle-d-aostatic-acces" + + "sanfranciscofreakunemurorangeiseiyoichippubetsubetsugaruhrboutiq" + + "uebecngminakamichiharabozentsujiiebplacedogawarabikomaezakirunor" + + "dlandvrdnsangoppdalindesnesanjournalismailillesandefjordyndns-at" + + "-workinggroupaleobrandywinevalleybrasiliabresciabrindisibenikebr" + + "istoloslocalhistorybritishcolumbialowiezachpomorskienishikawazuk" + + "amitondabayashiogamagoriziabroadcastlegallocalhostrodawaravennag" + + "asukebroadwaybroke-itkmaxxjaworznowtvalled-aostavangerbrokerbron" + + "noysundyndns-blogdnsannanishimerabrothermesaverdeatnurembergmode" + + "nakasatsunais-a-cpadualstackspace-to-rentalstomakomaibarabrowser" + + "safetymarketsannohelplfinancialivornobrumunddalombardiamondsanok" + + "ashibatakashimaseratis-a-cubicle-slavellinotteroybrunelasticbean" + + "stalkashiharabrusselsantabarbarabruxellesantacruzsantafedjeffers" + + "onishinomiyashironobryanskleppalermomahachijorpelandyndns-freebo" + + "x-ostrowwlkpmgmxn--0trq7p7nnishinoomotegobrynewhollandyndns-home" + + "dnsanukis-a-democratmpalmspringsakerbuskerudinewmexicodyn-vpnplu" + + "sterbuzenishinoshimattelefonicarbonia-iglesias-carboniaiglesiasc" + + "arboniabuzzpamperedchefastlylbaltimore-og-romsdalwaysdatabasebal" + + "langenoamishirasatochigiessensiositelemarkarateu-1bwhalingrimsta" + + "dyndns-ipirangaulardalombardynamisches-dnsaotomemergencyachtsapo" + + "dlasiellaktyubinskiptveterinairealtorlandyndns-mailomzaporizhzhe" + + "guris-a-designerimarumorimachidabzhitomirumalselvendrellorenskog" + + "ripescaravantaacondoshichinohealth-carereformitakeharaconference" + + "constructionconsuladoesntexistanbullensvanguardyndns1consultanth" + + "ropologyconsultingvolluroycontactoyotsukaidownloadynnsaskatchewa" + + "ncontemporaryarteducationalchikugodoharuovatoyouracontractorsken" + + "conventureshinodesashibetsuikinderoycookingchannelblagdenesnaase" + + "ralingenkainanaejrietisalatinabenonichernivtsiciliacoolkuszczytn" + + "ore-og-uvdalutskasuyameldaluxembourgrpanamacooperaunitenrightath" + + "omeftpanasonichernovtsykkylvenetogakushimotoganewspapercopenhage" + + "ncyclopedichirurgiens-dentistes-en-francecorsicagliaridagawarsza" + + "washingtondclkaszubycorvettevadsoccertificationcosenzagancosidns" + + "dojoetsuwanouchikujogaszkoladbrokesassaris-a-huntercostumedio-ca" + + "mpidano-mediocampidanomediocouchpotatofriesatxn--11b4c3dynv6coun" + + "ciluxurycouponsaudacoursesauheradynvpnchiryukyuragifuchungbukhar" + + "acq-acranbrookuwanalyticsavannahgacreditcardyroyrvikingruecredit" + + "unioncremonashgabadaddjambyluzerncrewiiheyakagecricketrzyncrimea" + + "st-kazakhstanangercrotonextdirectoystre-slidrettozawacrownprovid" + + "ercrsvparaglidinguitarsaves-the-whalessandria-trani-barletta-and" + + "riatranibarlettaandriacruisesavonaplesaxocryptonomichigangwoncui" + + "sinellahppiacenzakopanerairguardiannakadomarinebraskaunjargalsac" + + "eoculturalcentertainmentozsdeltaitogliattiresbschokoladencuneocu" + + "pcakecxn--12c1fe0bradescorporationcyberlevagangaviikanonjis-a-kn" + + "ightpointtokaizukamikitayamatsuris-a-landscapercymrussiacyonabar" + + "ulvikatowicecyouthdfcbankatsushikabeeldengeluidfidonnakamurataji" + + "mibuildingulenfieldfiguerestaurantraniandriabarlettatraniandriaf" + + "ilateliafilegearthachiojiyahoofilminamidaitomangotsukisosakitaga" + + "wafinalfinancefineartschwarzgwangjuifminamiechizenfinlandfinnoyf" + + "irebaseapparisor-fronfirenzefirestonefirmdaleirvikaufenfishingol" + + "ffanschweizwildlifedorainfracloudfrontdoorfitjarmeniafitnessettl" + + "ementranoyfjalerflesbergunmarburguovdageaidnuslivinghistoryflick" + + "ragerotikakamigaharaflightsciencecentersciencehistoryflirflogint" + + "ogurafloraflorencefloridavvesiidazaifudaigojomedizinhistorisches" + + "cientistoragefloripaderbornfloristanohatakahamangyshlakasamatsud" + + "ontexisteingeekautokeinoflorogerscjohnsonflowerscotlandflynnhuba" + + "mblefrakkestadiscountysnes3-sa-east-1fndfoodnetworkshoppingushik" + + "amifuranortonsbergxn--12co0c3b4evalleaostatoilfor-ourfor-someetn" + + "edalfor-theaterforexrothachirogatakahatakaishimogosenforgotdnscr" + + "apper-siteforli-cesena-forlicesenaforlikescandynamic-dnscrapping" + + "forsaleitungsenforsandasuolodingenfortmissoulair-traffic-control" + + "leyfortworthadanosegawaforuminamifuranofosneserveftparliamentran" + + "sportransurlfotaruis-a-lawyerfoxfordedyn-ip24freeboxoservegame-s" + + "erversailleservehalflifestylefreemasonryfreetlservehttparmafreib" + + "urgfreightcminamiiselectrapaniimimatakatoris-a-liberalfresenius-" + + "3fribourgfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-ve" + + "nezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriu" + + "live-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiulia" + + "friulivgiuliafrlfroganservehumourfrognfrolandfrom-akrehamnfrom-a" + + "lfrom-arqhadselfiparocherkasyno-dserveirchitachinakagawassamukaw" + + "ataricohdatsunanjoburgriwataraidyndns-office-on-the-webcampobass" + + "ociatesapporofrom-azfrom-capebretonamiastapleserveminecraftravel" + + "channelfrom-collectionfrom-ctravelersinsurancefrom-dchitosetogit" + + "suldalotenkawafrom-defenseljordfrom-flanderservemp3from-gausdalf" + + "rom-higashiagatsumagoizumizakirkeneservep2parservepicservequakef" + + "rom-iafrom-idfrom-ilfrom-incheonfrom-kservesarcasmatartanddesign" + + "from-kyowariasahikawafrom-lajollamericanexpressexyfrom-maniwakur" + + "atextileksvikazofrom-mdfrom-megurokunohealthcareerservicesettsur" + + "geonshalloffamemorialfrom-microsoftbankazunofrom-mnfrom-modellin" + + "gfrom-msevastopolefrom-mtnfrom-nchloefrom-ndfrom-nefrom-nhktrdfr" + + "om-njcbnlfrom-nminamiizukamisatokamachintaifun-dnsaliasdaburfrom" + + "-nvalledaostavernfrom-nyfrom-ohkurafrom-oketohmannorth-kazakhsta" + + "nfrom-orfrom-padovaksdalfrom-pratohnoshoooshikamaishimodatefrom-" + + "rivnefrom-schoenbrunnfrom-sdfrom-tnfrom-txn--1ck2e1bananarepubli" + + "caseihichisobetsuitainairforcechirealminamiawajikibmdiscoveryomb" + + "ondishakotanavigationavoiitatebayashiibahcavuotnagaraholtaleniwa" + + "izumiotsukumiyamazonawsadodgemologicallyngenvironmentalconservat" + + "ionavuotnaklodzkodairassnasabaerobaticketselinogradultashkentata" + + "motors3-ap-northeast-2from-utazuerichardlillehammerfeste-ipartis" + + "-a-libertarianfrom-val-daostavalleyfrom-vtrentino-a-adigefrom-wa" + + "from-wielunnerfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wo" + + "lawafroyahikobeardubaiduckdnsevenassisicilyfstcgroupartnersewill" + + "iamhillfujiiderafujikawaguchikonefujiminohtawaramotoineppubologn" + + "akanotoddenfujinomiyadafujiokayamansionsfranziskanerdpolicefujis" + + "atoshonairtelecityeatsharis-a-linux-useranishiaritabashijonawate" + + "fujisawafujishiroishidakabiratoridefinimakanegasakindlegokasells" + + "-for-lessharpartshawaiijimarugame-hostrolekameokameyamatotakadaf" + + "ujitsurugashimaritimekeepingfujixeroxn--1ctwolominamatakkokamino" + + "yamaxunusualpersonfujiyoshidafukayabeatshellaspeziafukuchiyamada" + + "fukudominichocolatemasekashiwazakiyosatokashikiyosemitefukuis-a-" + + "llamarylandfukumitsubishigakirovogradoyfukuokazakiryuohaebarumin" + + "amimakis-a-musicianfukuroishikarikaturindalfukusakisarazurewebsi" + + "teshikagamiishibukawafukuyamagatakaharustkanoyakumoldeloittexasc" + + "olipicenoipifonynysaarlandfunabashiriuchinadafunagatakahashimama" + + "kishiwadafunahashikamiamakusatsumasendaisennangonohejis-a-nascar" + + "fanfundaciofuoiskujukuriyamanxn--1lqs03nfuosskoczowinbarcelonaga" + + "sakijobserverisignieznord-frontiereviewskrakowedeployomitanobihi" + + "rosakikamijimastronomy-gatewaybomloans3-ap-south-1furnituredston" + + "efurubiraquarelleborkangerfurudonostiaarpartyfurukawairtrafficho" + + "funatoriginsurecifedexhibitionishiokoppegardyndns-picsardegnamss" + + "koganeis-a-doctorayfusodegaurafussaikisofukushimaoris-a-nurserve" + + "bbshimojis-a-painteractivegarsheis-a-patsfanfutabayamaguchinomig" + + "awafutboldlygoingnowhere-for-moregontrailroadfuttsurugimperiafut" + + "urehostingfuturemailingfvgfyis-a-personaltrainerfylkesbiblackfri" + + "dayfyresdalhangoutsystemscloudfunctionshimokawahannanmokuizumode" + + "rnhannotaireshimokitayamahanyuzenhapmirhareidsbergenharstadharve" + + "stcelebrationhasamarcheapassagenshimonitayanagitlaborhasaminami-" + + "alpssells-itrentino-aadigehashbanghasudahasura-appassenger-assoc" + + "iationhasvikddielddanuorrikuzentakataiwanairlinedre-eikerhatogay" + + "aitakamoriokalmykiahatoyamazakitahiroshimarnardalhatsukaichikais" + + "eis-a-republicancerresearchaeologicaliforniahattfjelldalhayashim" + + "amotobungotakadapliernewjerseyhazuminobusellsyourhomegoodshimono" + + "sekikawahboehringerikehelsinkitakamiizumisanofidelitysvardollshi" + + "mosuwalkis-a-rockstarachowicehembygdsforbundhemneshimotsukehemse" + + "dalhepforgeherokussldheroyhgtvalleeaosteigenhigashichichibunkyon" + + "anaoshimageandsoundandvisionhigashihiroshimanehigashiizumozakita" + + "katakanabeautydalhigashikagawahigashikagurasoedahigashikawakitaa" + + "ikitakyushuaiahigashikurumeiwamarriottrentino-alto-adigehigashim" + + "atsushimarshallstatebankfhappouhigashimatsuyamakitaakitadaitoiga" + + "wahigashimurayamamotorcycleshimotsumahigashinarusembokukitamidor" + + "is-a-socialistmein-vigorgehigashinehigashiomihachimanchesterhiga" + + "shiosakasayamanakakogawahigashishirakawamatakanezawahigashisumiy" + + "oshikawaminamiaikitamotosumitakagildeskaliszhigashitsunotogawahi" + + "gashiurausukitanakagusukumoduminamiminowahigashiyamatokoriyamana" + + "shifteditchyouripaviancarrierhigashiyodogawahigashiyoshinogaris-" + + "a-soxfanhiraizumisatohobby-sitehirakatashinagawahiranais-a-stude" + + "ntalhirarahiratsukagawahirayaizuwakamatsubushikusakadogawahistor" + + "ichouseshinichinanhitachiomiyaginankokubunjis-a-teacherkassymant" + + "echnologyhitachiotagooglecodespotrentino-altoadigehitraeumtgerad" + + "elmenhorstalbanshinjournalistjohnhjartdalhjelmelandholeckobierzy" + + "ceholidayhomeipfizerhomelinkhakassiahomelinuxn--1lqs71dhomeoffic" + + "ehomesecuritymaceratakaokaluganskolevangerhomesecuritypccwindmil" + + "lhomesenseminehomeunixn--1qqw23ahondahoneywellbeingzonehongopocz" + + "northwesternmutualhonjyoitakarazukamakurazakitashiobarahornindal" + + "horseoulminamiogunicomcastresistancehortendofinternet-dnshinjuku" + + "manohospitalhoteleshinkamigotoyohashimotoshimahotmailhoyangerhoy" + + "landetroitskydivinghumanitieshinshinotsurgeryhurdalhurumajis-a-t" + + "echietis-a-therapistoiahyllestadhyogoris-an-accountantshinshiroh" + + "yugawarahyundaiwafunehzchoseiroumuenchenishitosashimizunaminamia" + + "shigarajfkhmelnitskiyamashikejgorajlchoyodobashichikashukujitawa" + + "rajlljmpharmacienshiojirishirifujiedajnjcpgfoggiajoyokaichibahcc" + + "avuotnagareyamalborkdalpha-myqnapcloudapplebesbyglandjpmorganjpn" + + "jprshioyanaizujuniperjurkoshimizumakis-an-engineeringkoshunantok" + + "igawakosugekotohiradomainshirakofuefukihaboromskoguchikuzenkotou" + + "rakouhokutamakis-an-entertainerkounosupplieshiranukamogawakouyam" + + "ashikokuchuokouzushimasoykozagawakozakis-bykpnkppspdnshiraois-ce" + + "rtifieducatorahimeshimamateramochizukirakrasnodarkredirectmelhus" + + "cultureggio-calabriakristiansandcatshiraokanagawakristiansundkro" + + "dsheradkrokstadelvaldaostarostwodzislawindowshiratakahagivestbyk" + + "ryminamisanrikubetsupportrentino-sued-tirolkumatorinokumejimasud" + + "akumenanyokkaichiropractichristmasakikugawatchandclockasukabedzi" + + "n-the-bandaikawachinaganoharamcoachampionshiphoptobishimaizurugb" + + "ydgoszczecinemakeupowiathletajimabariakeisenbahnishiwakis-a-fina" + + "ncialadvisor-aurdalottokonamegatakasugais-a-geekgalaxykunisakis-" + + "foundationkunitachiarailwaykunitomigusukumamotoyamassa-carrara-m" + + "assacarraramassabusinessebytomaritimobarakunneppulawykunstsammlu" + + "ngkunstunddesignkuokgrouphdkureggio-emilia-romagnakatsugawakurga" + + "nkurobelaudiblebtimnetzkurogimilanokuroisoftwarendalenugkuromats" + + "unais-gonekurotakikawasakis-into-animelbournekushirogawakustanai" + + "s-into-carshintomikasaharakusupplykutchanelkutnokuzumakis-into-c" + + "artoonshinyoshitomiokamitsuekvafjordkvalsundkvamfamberkeleykvana" + + "ngenkvinesdalkvinnheradkviteseidskogkvitsoykwpspiegelkzmissilewi" + + "smillermisugitokorozawamitourismolancastermitoyoakemiuramiyazumi" + + "yotamanomjondalenmlbfanmonmouthagebostadmonstermonticellolmontre" + + "alestatefarmequipmentrentino-suedtirolmonza-brianzaporizhzhiamon" + + "za-e-della-brianzapposhishikuis-not-certifiedunetbankharkovanylv" + + "enicemonzabrianzaptokuyamatsusakahoginowaniihamatamakawajimaphil" + + "adelphiaareadmyblogsitemonzaebrianzaramonzaedellabrianzamoonscal" + + "exusdecorativeartshisognemoparachutingmordoviajessheiminamitanem" + + "oriyamatsushigemoriyoshimilitarymormoneymoroyamatsuuramortgagemo" + + "scowinnershisuifuelveruminamiuonumatsumotofukemoseushistorymosjo" + + "enmoskeneshitaramamosshizukuishimofusaitamatsukuris-savedmosvikn" + + "x-serveronakatombetsunndalmoteginozawaonsenmoviemovistargardmtpc" + + "hromedicaltanissettairamtranbymuenstermugithubcloudusercontentre" + + "ntinoa-adigemuikamishihoronobeauxartsandcraftshizuokananporovigo" + + "tpantheonsitemukochikushinonsenergymulhouservebeermunakatanemunc" + + "ieszynmuosattemuphilatelymurmanskolobrzegersundmurotorcraftrenti" + + "noaadigemusashimurayamatsuzakis-slickhersonmusashinoharamuseetre" + + "ntinoalto-adigemuseumverenigingmusicargodaddynaliascoli-picenogi" + + "ftshoujis-uberleetrentino-stirolmutsuzawamy-vigorlicemy-wanggouv" + + "icenzamyactivedirectorymyasustor-elvdalmycdn77-securechtrainingm" + + "ydissentrentinoaltoadigemydrobofagemydshowamyeffectrentinos-tiro" + + "lmyfirewallonieruchomoscienceandindustrynmyfritzmyftpaccesshowti" + + "meteorapphilipsynology-diskstationmyfusionmyhome-serverrankoshig" + + "ayanagawamykolaivaporcloudmymailermymediapchryslermyokohamamatsu" + + "damypepsongdalenviknakanojohanamakinoharamypetshriramlidlugoleka" + + "gaminoduminamiyamashirokawanabelembroideryggeelvincklabudhabikin" + + "okawabarthagakhanamigawamyphotoshibajddarchaeologyeongnamegawalb" + + "rzycharternidmypsxn--30rr7ymysecuritycamerakermyshopblocksienara" + + "shinomytis-a-bookkeeperugiamyvnchungnamdalseidfjordyndns-remotew" + + "dyndns-serverdalouvreggioemiliaromagnakayamatsumaebashikshacknet" + + "oyookanmakiwakunigamidsundyndns-weberlincolnissandnessjoenissayo" + + "koshibahikariwanumatakazakis-a-greenissedalowiczest-le-patrondhe" + + "immobilienisshingugepicturesilkomaganepiemontepilotsimple-urlpim" + + "ientaketomisatolgapinkomakiyosumy-routerpioneerpippuphonefossigd" + + "alpiszpittsburghofauskedsmokorsetagayasells-for-unzenpiwatepizza" + + "pkomatsushimashikizunokunimihoboleslawiechristiansburgroks-thisa" + + "yamanobeokakudamatsueplanetariuminanoplantationplantsirdalplatfo" + + "rmshangrilanciaplaystationplazaplchurchaseljeepostfoldnavyplumbi" + + "ngopmnpodzonepohlpoivronpokerpokrovskomforbarclays3-us-gov-west-" + + "1politiendapolkowicepoltavalle-aostathellezajskommunalforbundpom" + + "orzeszowioslingpordenonepornporsangerporsanguidellogliastradingp" + + "orsgrunnanpoznanpraxis-a-bruinsfanprdpreservationpresidioprgmrpr" + + "imeloyalistockholmestrandprincipeprivatizehealthinsuranceprochow" + + "iceproductionslupskommuneprofbsbxn--12cfi8ixb8lvivano-frankivska" + + "tsuyamasfjordenprogressivegasiapromombetsurfbx-oscholarshipschoo" + + "lpropertyprotectionprotonetrentinosud-tirolprudentialpruszkowitd" + + "komonoprzeworskogptplusgardenpvtrentinosudtirolpwcirclegnicafede" + + "rationiyodogawapzqldqponqslgbtrentinosued-tirolquicksytesnoasait" + + "omobellevuelosangelesjaguarchitecturealtychyattorneyagawalesundq" + + "uipelementsokanazawaqvcircustomerstuff-4-salestufftoread-booksne" + + "solognestuttgartritonsusakis-very-evillagesusonosuzakaneyamazoes" + + "uzukaniepcesuzukis-very-goodhandsonsvalbardunloppacificitadelive" + + "rysveiosvelvikongsbergsvizzeraswedenswidnicartierswiebodzindiana" + + "polis-a-bloggerswiftcoversicherungswinoujscienceandhistoryswissh" + + "ikis-very-nicesynology-dsolundbeckomorotsukamiokamikoaniikappugl" + + "iatushuissier-justicetuvalle-daostaticsomatuxfamilytwmailvennesl" + + "askerrylogisticsomnaritakurashikis-very-badajozoravestfoldvestne" + + "soovestre-slidreamhostersopotrentinosuedtirolvestre-totennishiaw" + + "akuravestvagoyvevelstadvibo-valentiavibovalentiavideovillaskimit" + + "subatamicable-modembetsukuis-very-sweetpeppervinnicartoonartdeco" + + "ffeedbackplaneappspotagervinnytsiavipsinaappiagetmyiphoenixn--32" + + "vp30haibarakitahatakamatsukawavirginiavirtualvirtueeldomeindianm" + + "arketingvirtuelvisakegawavistaprinternationalfirearmsor-odalvite" + + "rboltrogstadvivoldavixn--3bst00minnesotaketakatsukis-into-gamess" + + "inatsukigatakasagotembaixadavlaanderenvladikavkazimierz-dolnyvla" + + "dimirvlogoipictetrentinostirolvolkswagentsor-varangervologdansko" + + "ninjamisonvolvolkenkundenvolyngdalvossevangenvotevotingvotoyonak" + + "agyokutoursorfoldwloclawekonskowolayangroupharmacyshirahamatonbe" + + "tsurnadalwmflabsorreisahayakawakamiichikawamisatotalworldworse-t" + + "handawowithgoogleapisa-hockeynutsiracusakatakinouewritesthisblog" + + "sytewroclawithyoutubeneventoeidsvollwtcitichernigovernmentoyonow" + + "tfbxoschulewuozuwwwiwatsukiyonowruzhgorodeowzmiuwajimaxn--45brj9" + + "civilaviationxn--45q11civilisationxn--4gbriminingxn--4it168dxn--" + + "4it797konyveloftrentino-sudtirolxn--4pvxs4allxn--54b7fta0ccivili" + + "zationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilwarmanageme" + + "ntoyosatoyakokonoexn--5rtq34kooris-an-anarchistoricalsocietyxn--" + + "5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986" + + "b3xlxn--7t0a264claimsarlucaniaxn--80adxhksortlandxn--80ao21axn--" + + "80aqecdr1axn--80asehdbarreauctionflfanfshostrowiecasertaipeiheij" + + "iiyamanouchikuhokuryugasakitaurayasudaukraanghkeymachineustarhub" + + "alsanagochihayaakasakawaharanzanpachigasakicks-assedicasadelamon" + + "edatingjemnes3-ap-southeast-2xn--80aswgxn--80audnedalnxn--8ltr62" + + "kopervikhmelnytskyivaolbia-tempio-olbiatempioolbialystokkepnogat" + + "aijis-an-actresshintokushimaxn--8pvr4uxn--8y0a063axn--90a3academ" + + "y-firewall-gatewayxn--90aishobaraomoriguchiharahkkeravjuedisches" + + "apeakebayernrtromsakakinokiaxn--90azhytomyrxn--9dbhblg6dietcimdb" + + "arrel-of-knowledgeologyonagoyaurskog-holandroverhalla-speziaerop" + + "ortalaheadjudaicaaarborteaches-yogasawaracingroks-theatree164xn-" + + "-9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byandexn--3d" + + "s443gxn--asky-iraxn--aurskog-hland-jnbarrell-of-knowledgeometre-" + + "experts-comptables3-us-west-1xn--avery-yuasakuhokkaidoomdnshome-" + + "webservercellikes-piedmontblancomeeresorumincommbankmpspbarclayc" + + "ards3-us-east-2xn--b-5gaxn--b4w605ferdxn--bck1b9a5dre4cldmailucc" + + "apitalonewportlligatoyotaris-a-gurulsandoyxn--bdddj-mrabdxn--bea" + + "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" + + "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsurreyxn--bj" + + "ddar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--b" + + "od-2naroyxn--brnny-wuaccident-investigation-aptibleaseating-orga" + + "nicbcn-north-1xn--brnnysund-m8accident-prevention-webhopenairbus" + + "antiquest-a-la-maisondre-landebudapest-a-la-masionionjukudoyamag" + + "entositelekommunikationthewifiat-band-campaniaxn--brum-voagatrom" + + "sojampagefrontapphotographysioxn--btsfjord-9zaxn--c1avgxn--c2br7" + + "gxn--c3s14mintelligencexn--cck2b3barsyonlinewhampshirebungoonord" + + "-odalazioceanographics3-us-west-2xn--cg4bkis-with-thebandovre-ei" + + "kerxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumisakis-leetrentino" + + "-s-tirollagrigentomologyeongbukharkivgucciprianiigataishinomakim" + + "obetsuliguriaxn--comunicaes-v6a2oxn--correios-e-telecomunicaes-g" + + "hc29axn--czr694bashkiriaustevollarvikarasjohkamiminers3-ca-centr" + + "al-1xn--czrs0trusteexn--czru2dxn--czrw28basilicataniaustinnatura" + + "lsciencesnaturelles3-eu-central-1xn--d1acj3basketballfinanzgorau" + + "straliaisondriodejaneirochesterepbodynathomebuiltatarantottoribe" + + "staddnskingjerdrumckinseyokosukanzakiwienaturbruksgymnaturhistor" + + "isches3-eu-west-1xn--d1alfaromeoxn--d1atrvarggatroandinosaureise" + + "nxn--d5qv7z876clickasumigaurawa-mazowszextraspacekitagatajirissa" + + "gamiharaxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawane" + + "honbetsurutaharaxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry" + + "-iraxn--e1a4clinichernihivanovodkagoshimalvikashiwaraxn--eckvdtc" + + "9dxn--efvn9southcarolinazawaxn--efvy88hair-surveillancexn--ehqz5" + + "6nxn--elqq16hakatanoshiroomuraxn--estv75gxn--eveni-0qa01gaxn--f6" + + "qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hso" + + "uthwestfalenxn--fiq64batodayonaguniversityoriikariyaltakasakiyok" + + "awaraustrheimatunduhrennesoyokoteastcoastaldefencebinagisochildr" + + "ensgardenatuurwetenschappenaumburgjerstadotsuruokakegawaetnagaha" + + "maroygardenebakkeshibechambagriculturennebudejjudygarlandd-dnsfo" + + "r-better-thanawawdev-myqnapcloudcontrolapplinzi234xn--fiqs8sowax" + + "n--fiqz9spjelkavikomvuxn--2m4a15exn--fjord-lraxn--fjq720axn--fl-" + + "ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-grandrapidspread" + + "bettingxn--frna-woaraisaijotrysiljanxn--frya-hraxn--fzc2c9e2clin" + + "iquenoharaxn--fzys8d69uvgmailxn--g2xx48clintonoshoesarpsborgrond" + + "arxn--gckr3f0fedorapeopleirfjordxn--gecrj9clothingrongaxn--ggavi" + + "ika-8ya47hakodatexn--gildeskl-g0axn--givuotna-8yasakaiminatoyone" + + "zawaxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050isleofmand" + + "alxn--gmqw5axn--h-2failxn--h1aeghakonexn--h2brj9cnsarufutsunomiy" + + "awakasaikaitakoelnxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7y" + + "a35batsfjordivtasvuodnakaiwamizawauthordalandroiddnss3-eu-west-2" + + "xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4acctulangevagrarbo" + + "retumbriaxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqa" + + "xn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr" + + "513nxn--indery-fyasugissmarterthanyouxn--io0a7iwchoshibuyachiyod" + + "avvenjargapartmentsardiniaxn--j1aefedoraprojectrani-andria-barle" + + "tta-trani-andriaxn--j1amhakubaghdadxn--j6w193gxn--jlq61u9w7bauha" + + "usposts-and-telecommunicationsncfdivttasvuotnakamagayahababyklec" + + "lercasinordre-landiyoshiokaracoldwarmiamihamadautomotivecoalipay" + + "okozebinorfolkebibleikangereportateshinanomachimkentateyamagroce" + + "rybnikahokutobamaintenancebetsukubank12xn--jlster-byasuokanraxn-" + + "-jrpeland-54axn--jvr189misasaguris-lostre-toteneis-an-actorxn--k" + + "7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--kl" + + "bu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3e0b707exn--ko" + + "luokta-7ya57hakuis-a-photographerokuappasadenamsosnowiechonanbui" + + "lderschmidtre-gauldalottexn--kprw13dxn--kpry57dxn--kpu716fermoda" + + "lenxn--kput3ixn--krager-gyatomitamamuraxn--kranghke-b0axn--krdsh" + + "erad-m8axn--krehamn-dxaxn--krjohka-hwab49jeonnamerikawauexn--ksn" + + "es-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazuryxn--kvnangen-k0a" + + "xn--l-1fairwindspydebergxn--l1accentureklamborghiniizaxn--lahead" + + "ju-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leaga" + + "viika-52bbcateringebugattipschlesisches3-website-ap-northeast-1x" + + "n--lesund-huaxn--lgbbat1ad8jetztrentino-sud-tirolxn--lgrd-poacnt" + + "oyotomiyazakis-a-hard-workerxn--lhppi-xqaxn--linds-pramericanart" + + "unesolutionsokndalxn--lns-qlansrlxn--loabt-0qaxn--lrdal-sraxn--l" + + "renskog-54axn--lt-liacolonialwilliamsburgrossetouchijiwadell-ogl" + + "iastraderxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--m" + + "erker-kuaxn--mgb2ddesrtrentoyokawaxn--mgb9awbferraraxn--mgba3a3e" + + "jtunkongsvingerxn--mgba3a4f16axn--mgba3a4franamizuholdingsmilelx" + + "n--mgba7c0bbn0axn--mgbaakc7dvferrarittogoldpoint2thisamitsukexn-" + + "-mgbaam7a8hakusandiegoodyearxn--mgbab2bdxn--mgbai9a5eva00bbtatto" + + "olsztynsettlers3-website-ap-southeast-1xn--mgbai9azgqp6jevnakers" + + "huscountryestateofdelawarezzoologyxn--mgbayh7gpagespeedmobilizer" + + "oxn--mgbb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzd" + + "oxn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbi4ecexposedxn--mgbpl" + + "2fhskodjejuegoshikiminokamoenairportland-4-salernoboribetsucksrv" + + "areserveblogspotrevisohughesolarssonxn--mgbqly7c0a67fbcoloradopl" + + "ateaudioxn--mgbqly7cvafredrikstadtvstordalxn--mgbt3dhdxn--mgbtf8" + + "flatangerxn--mgbtx2bbvacationswatch-and-clockerhcloudns3-website" + + "-ap-southeast-2xn--mgbx4cd0abbotturystykannamifunexn--mix082ferr" + + "eroticanonoichinomiyakexn--mix891fetsundxn--mjndalen-64axn--mk0a" + + "xindustriesteambulancexn--mk1bu44columbusheyxn--mkru45ixn--mlatv" + + "uopmi-s4axn--mli-tlanxesstorehabmerxn--mlselv-iuaxn--moreke-juax" + + "n--mori-qsakuragawaxn--mosjen-eyawaraxn--mot-tlapyatigorskypexn-" + + "-mre-og-romsdal-qqbentleyukinfinitintuitaxihuanhlfanhs3-website-" + + "eu-west-1xn--msy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycommu" + + "nitysfjordyndns-wikinkobayashikaoirminamibosogndalucernexn--muos" + + "t-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3oq18vl8" + + "pn36axn--nit225kosakaerodromegallupinbarefootballooningjovikarat" + + "suginamikatagamiharuconnectatsunobiraugustowadaegubs3-ap-southea" + + "st-1xn--nmesjevuemie-tcbalestrandabergamoarekexn--nnx388axn--nod" + + "exn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery" + + "-byaeservecounterstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattano" + + "oganordreisa-geekoseis-an-artisteinkjerusalemrxn--o3cw4halsaintl" + + "ouis-a-anarchistoiredumbrellanbibaidarxn--o3cyx2axn--od0algxn--o" + + "d0aq3beppublishproxyzgorzeleccolognewyorkshirecipesaro-urbino-pe" + + "sarourbinopesaromasvuotnaharimamurogawatches3-website-sa-east-1x" + + "n--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyawatahamaxn--osy" + + "ro-wuaxn--p1acfgujolsterxn--p1aixn--pbt977comobilyxn--pgbs0dhlxn" + + "--porsgu-sta26fhvalerxn--pssu33lxn--pssy2uxn--q9jyb4comparemarke" + + "rryhotelsasayamaxn--qcka1pmcdonaldstorfjordxn--qqqt11misconfused" + + "xn--qxamuneuestorjelenia-goraxn--rady-iraxn--rdal-poaxn--rde-ula" + + "quilancashireggiocalabriaxn--rdy-0nabarixn--rennesy-v1axn--rhkke" + + "rvju-01aflakstadaokagakibichuoxn--rholt-mragowoodsidexn--rhqv96g" + + "xn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn--risr-iraxn--r" + + "land-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31hammarfeastafricap" + + "etownnews-stagingxn--rovu88bernuorockartuzyukuhashimoichinosekig" + + "aharautoscanadaejeonbukarasjokarasuyamarylhurstjordalshalsenaust" + + "dalavagiskebizenakaniikawatanaguramusementarnobrzegyptianaturalh" + + "istorymuseumcenterepaircraftarumizusawabogadocscbgdyniabkhaziama" + + "llamagazineat-url-o-g-i-nativeamericanantiques3-ap-northeast-1ka" + + "ppchizippodhaleangaviikadenadexetereit3l3p0rtargets-itargiving12" + + "000emmafanconagawakayamadridvagsoyericssonyoursidealerimo-i-rana" + + "amesjevuemielno-ip6xn--rros-granvindafjordxn--rskog-uuaxn--rst-0" + + "narutokyotangovtuscanyxn--rsta-francaiseharaxn--ryken-vuaxn--ryr" + + "vik-byaxn--s-1faithruherecreationxn--s9brj9compute-1xn--sandness" + + "jen-ogbizxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gratangen" + + "xn--skierv-utazaskoyabearalvahkihokumakogengerdalcestpetersburgx" + + "n--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5" + + "narviikamisunagawaxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-" + + "a-bulls-fanxn--snase-nraxn--sndre-land-0cbremangerxn--snes-poaxn" + + "--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-" + + "varanger-ggbeskidyn-o-saurlandes3-website-us-east-1xn--srfold-by" + + "axn--srreisa-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--st" + + "jrdalshalsen-sqbestbuyshouses3-website-us-west-1xn--stre-toten-z" + + "cbstreamsterdamnserverbaniaxn--t60b56axn--tckweatherchannelxn--t" + + "iq49xqyjewelryxn--tjme-hraxn--tn0agrinet-freakstudioxn--tnsberg-" + + "q1axn--tor131oxn--trany-yuaxn--trgstad-r1axn--trna-woaxn--troms-" + + "zuaxn--tysvr-vraxn--uc0atvaroyxn--uc0ay4axn--uist22hamurakamigor" + + "is-a-playerxn--uisz3gxn--unjrga-rtaobaokinawashirosatochiokinosh" + + "imalatvuopmiasakuchinotsuchiurakawakuyabukievenestudyndns-at-hom" + + "edepotenzamamicrolightingxn--unup4yxn--uuwu58axn--vads-jraxn--va" + + "rd-jraxn--vegrshei-c0axn--vermgensberater-ctbetainaboxfusejnyuri" + + "honjoyentgoryusuharaveroykenglandds3-external-1xn--vermgensberat" + + "ung-pwbieigersundnpalaceu-3utilitiesquare7xn--vestvgy-ixa6oxn--v" + + "g-yiabcgxn--vgan-qoaxn--vgsy-qoa0jewishartgalleryxn--vgu402compu" + + "terhistoryofscience-fictionxn--vhquvbargainstitutelevisionayorov" + + "nobninskarelianceu-2xn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadx" + + "n--vry-yla5gxn--vuq861bielawalmartjeldsundrangedalillyusuisserve" + + "exchangevents3-website-us-west-2xn--w4r85el8fhu5dnraxn--w4rs40lx" + + "n--wcvs22dxn--wgbh1comsecuritytacticsaseboknowsitallukowhoswhokk" + + "sundyndns-workisboringroundhandlingroznyxn--wgbl6axn--xhq521biel" + + "laakesvuemielecceverbankarlsoyuufcfanikinuyamashinashikitchenikk" + + "oebenhavnikolaevennodessagaeroclubmedecincinnationwidealstahauge" + + "sunderseaportsinfolldalabamagasakishimabarackmazerbaijan-mayendo" + + "ftheinternetflixilovecollegefantasyleaguernseyuzawavocatanzarowe" + + "ddingjesdalavangenaval-d-aosta-valleyolasitehimejibigawaskvolloa" + + "bathsbc66xn--xkc2al3hye2axn--xkc2dl3a5ee0hangglidingxn--y9a3aqua" + + "riumishimatsunoxn--yer-znarvikosherbrookegawaxn--yfro4i67oxn--yg" + + "arden-p1axn--ygbi2ammxn--3pxu8konsulatrobeepilepsydneyxn--ystre-" + + "slidre-ujbieszczadygeyachimataikikonaioirasebastopologyeonggieht" + + "avuoatnagaivuotnagaokakyotambabia-goracleaningatlantabuseekloges" + + "t-mon-blogueurovisionikonantankarmoyxn--zbx025dxn--zf0ao64axn--z" + + "f0avxn--42c2d9axn--zfr164bievatmallorcadaquesakurainvestmentsaky" + + "otanabellunorddalimanowarudavoues3-fips-us-gov-west-1xperiaxz" // nodes is the list of nodes. Each node is represented as a uint32, which // encodes the node's children, wildcard bit and node type (as an index into @@ -482,8141 +489,8268 @@ const text = "biellaakesvuemieleccebieszczadygeyachimatainaircraftraeumtgerade" // [15 bits] text index // [ 6 bits] text length var nodes = [...]uint32{ - 0x29e943, - 0x364444, - 0x28af46, - 0x371983, - 0x371986, - 0x394246, - 0x3a4103, - 0x202f04, - 0x24f607, - 0x28ab88, - 0x1a00882, - 0x309dc7, - 0x3533c9, - 0x2fb3ca, - 0x2fb3cb, - 0x22fe43, - 0x28cac6, - 0x2352c5, - 0x1e00702, - 0x211ac4, - 0x2c7a83, - 0x226bc5, - 0x2200d42, - 0x2a0f43, - 0x2707e44, - 0x368485, - 0x2a00c42, - 0x3797ce, - 0x24a483, - 0x38b406, - 0x2e04642, - 0x2a5907, - 0x237d46, - 0x3200a42, - 0x2ae043, - 0x2ae044, - 0x280f86, - 0x36f448, - 0x283a46, - 0x386144, - 0x3601002, - 0x326a09, - 0x363a07, - 0x3351c6, - 0x355049, - 0x293988, - 0x367104, - 0x3a6606, - 0x20e306, - 0x3a02e02, - 0x241d0f, - 0x33174e, + 0x31a403, + 0x284944, + 0x2dd106, + 0x3706c3, + 0x3706c6, + 0x398706, + 0x3a8103, + 0x2fe244, + 0x38e987, + 0x2dcd48, + 0x1a05702, + 0x316e87, + 0x35c789, + 0x2abb0a, + 0x2abb0b, + 0x22f383, + 0x287506, + 0x232dc5, + 0x1e021c2, + 0x2161c4, + 0x238743, + 0x26fc45, + 0x2214902, + 0x347743, + 0x266f744, + 0x33ddc5, + 0x2a04702, + 0x376b4e, + 0x24c4c3, + 0x38ae46, + 0x2e00142, + 0x2dd287, + 0x236f46, + 0x3209282, + 0x229d83, + 0x24d9c4, + 0x325e86, + 0x26c588, + 0x2761c6, + 0x2011c4, + 0x3600242, + 0x3335c9, + 0x20a1c7, + 0x351e86, + 0x330c89, + 0x298308, + 0x26e904, + 0x241ec6, + 0x222a46, + 0x3a022c2, + 0x26480f, + 0x20948e, + 0x211d04, + 0x2c2b85, + 0x2fe145, + 0x39e189, + 0x23c409, + 0x349a87, + 0x20fa86, + 0x275a83, + 0x3e02a82, + 0x315503, + 0x34e24a, + 0x20f903, + 0x2af985, + 0x284202, + 0x284209, + 0x4200ec2, 0x212484, - 0x2bb945, - 0x202e05, - 0x2ea589, - 0x23e889, - 0x325747, - 0x221646, - 0x26b083, - 0x3e056c2, - 0x346fc3, - 0x207a4a, - 0x211e83, - 0x250585, - 0x2040c2, - 0x2830c9, - 0x4204802, - 0x209084, - 0x29e486, - 0x284b45, - 0x34c904, - 0x4a74a04, - 0x204803, - 0x234304, - 0x4e01842, - 0x364184, - 0x52e41c4, - 0x22410a, - 0x56009c2, - 0x334307, - 0x38e008, - 0x6201182, - 0x322847, - 0x2b7344, - 0x2b7347, - 0x383d05, - 0x370a47, - 0x325506, - 0x332a44, - 0x340c85, - 0x28df47, - 0x72046c2, - 0x349183, - 0x218782, - 0x366703, - 0x76108c2, - 0x2798c5, - 0x7a02d42, - 0x368ac4, - 0x277785, - 0x2123c7, - 0x2ddc0e, - 0x330a44, - 0x244744, - 0x20ca03, - 0x326ec9, - 0x30528b, - 0x30e148, - 0x31cd88, - 0x320888, - 0x20a588, - 0x354e8a, - 0x370947, - 0x217906, - 0x7e9c3c2, - 0x377d83, - 0x380c43, - 0x38bc84, - 0x250ac3, - 0x3a4143, - 0x1713b02, - 0x8203182, - 0x2484c5, - 0x30c046, - 0x2c9bc4, - 0x396e07, - 0x22eec6, - 0x280304, - 0x3a7dc7, - 0x203183, - 0x86bdb82, - 0x8a4f882, - 0x8e13702, - 0x213706, + 0x2b9686, + 0x2f3645, + 0x3552c4, + 0x4a05644, + 0x2030c3, + 0x232344, + 0x4e00c02, + 0x268d44, + 0x52ef6c4, + 0x25ef4a, + 0x5603dc2, + 0x2ba587, + 0x2f3b08, + 0x6208142, + 0x311687, + 0x2bf204, + 0x2bf207, + 0x36e0c5, + 0x34ffc7, + 0x349846, + 0x24f3c4, + 0x38c105, + 0x29e447, + 0x72001c2, + 0x26e503, + 0x200b82, + 0x200b83, + 0x760de02, + 0x2102c5, + 0x7a02a42, + 0x350e04, + 0x2734c5, + 0x211c47, + 0x26bcce, + 0x2b9184, + 0x245544, + 0x202f03, + 0x281d49, + 0x31ee0b, + 0x2e9a88, + 0x379948, + 0x3a9908, + 0x22ae48, + 0x330aca, + 0x34fec7, + 0x318186, + 0x7e87002, + 0x35e203, + 0x367e43, + 0x36f4c4, + 0x3a8143, + 0x3250c3, + 0x1720b82, + 0x8202502, + 0x27a8c5, + 0x296206, + 0x2d1b84, + 0x375487, + 0x2e1886, + 0x331f84, + 0x39d3c7, + 0x203bc3, + 0x86c54c2, + 0x8b0f242, + 0x8e16742, + 0x216746, 0x9200002, - 0x37f645, - 0x315043, - 0x205244, - 0x2dbe44, - 0x2dbe45, - 0x207043, - 0x9723ac3, - 0x9a093c2, - 0x2873c5, - 0x2873cb, - 0x22d086, - 0x20cbcb, - 0x26ff44, - 0x20d189, - 0x20ed44, - 0x9e0fd82, - 0x210c83, - 0x211183, - 0x1611302, - 0x23c343, - 0x21130a, - 0xa211d42, - 0x211d45, - 0x28ea8a, - 0x2cd704, - 0x212d43, - 0x213384, - 0x213cc3, - 0x213cc4, - 0x213cc7, - 0x214245, - 0x218dc5, - 0x219586, - 0x21a0c6, - 0x21aa43, - 0x21dc48, - 0x258e83, - 0xa615802, - 0x21f008, - 0x21580b, - 0x222d08, - 0x223586, - 0x224547, - 0x229748, - 0xb279a82, - 0xb693f02, - 0x20b608, - 0x2ad0c7, - 0x23b405, - 0x23b408, - 0x281888, - 0x2ada03, - 0x22eac4, - 0x38bcc2, - 0xba2f482, - 0xbe051c2, - 0xc62f802, - 0x22f803, - 0xca02ec2, - 0x202ec3, - 0x2fe704, - 0x21abc3, - 0x3670c4, - 0x24edcb, - 0x215743, - 0x2d2f86, - 0x223f84, - 0x29b84e, - 0x360445, - 0x38b508, - 0x24bd87, - 0x24bd8a, - 0x222a83, - 0x222a87, - 0x305445, - 0x231c84, - 0x24d886, - 0x24d887, - 0x2beb44, - 0x2f6607, - 0x377e04, - 0x3afe84, - 0x3afe86, - 0x267544, - 0x208606, - 0x210ac3, - 0x217188, - 0x21cfc8, - 0x244703, - 0x23c303, - 0x395544, - 0x39a003, - 0xce00482, - 0xd304e82, - 0x2004c3, - 0x2072c6, - 0x369e83, - 0x263584, - 0xd616942, - 0x244c43, - 0x216943, - 0x21b182, - 0xda008c2, - 0x2b9fc6, - 0x235fc7, - 0x2e9345, - 0x367a44, - 0x27e045, - 0x2026c7, - 0x26a205, - 0x2c6889, - 0x2cf2c6, - 0x2d48c8, - 0x2e9246, - 0xde06c02, - 0x33b648, - 0x2fe4c6, - 0x3b1a45, - 0x3ae4c7, - 0x301084, - 0x301085, - 0x283c04, - 0x283c08, - 0xe20cc82, - 0xe6131c2, - 0x329cc6, - 0x318208, - 0x339345, - 0x33a3c6, - 0x33c648, - 0x35b948, - 0xeac8945, - 0xefa8204, - 0x3aae87, - 0xf20e802, - 0xf61dec2, - 0x10a16582, - 0x357b85, - 0x2a3e05, - 0x2de246, - 0x319b87, - 0x399547, - 0x1122d183, - 0x29a147, - 0x2d4488, - 0x38fec9, - 0x379987, - 0x3a5187, - 0x22fe88, - 0x230686, - 0x231786, - 0x2323cc, - 0x232f4a, - 0x233787, - 0x23518b, - 0x235e07, - 0x235e0e, - 0x236a84, - 0x2374c4, - 0x239b07, - 0x25b087, - 0x23d9c6, - 0x23d9c7, - 0x23e107, - 0x14600bc2, - 0x23ec86, - 0x23ec8a, - 0x23ef0b, - 0x240007, - 0x2407c5, - 0x240b03, - 0x240fc6, - 0x240fc7, - 0x230a83, - 0x14a0b382, - 0x24198a, - 0x14f54502, - 0x152a6c02, - 0x15642b82, - 0x15a37e42, - 0x243a85, - 0x244504, - 0x16200682, - 0x364205, - 0x226b83, - 0x317c85, - 0x20a484, - 0x20ec44, - 0x291786, - 0x378106, - 0x2875c3, - 0x261f84, - 0x281e43, - 0x16600f82, - 0x200f84, - 0x3ab406, - 0x200f85, - 0x258c06, - 0x3ae5c8, - 0x263804, - 0x2c7848, - 0x2e0c45, - 0x22e708, - 0x32c306, - 0x2b49c7, - 0x239504, - 0x239506, - 0x307003, - 0x384083, - 0x2be608, - 0x30c584, - 0x2a0887, - 0x30a106, - 0x30a109, - 0x252448, - 0x27efc8, - 0x280444, - 0x378983, - 0x22aa02, - 0x16ab1d82, - 0x16e2cf42, - 0x3a1603, - 0x17219c42, - 0x24f744, - 0x3400c6, - 0x371305, - 0x23fe83, + 0x3523c5, + 0x3220c3, + 0x200604, + 0x2e8f84, + 0x2e8f85, + 0x206b43, + 0x978d2c3, + 0x9a0bb42, + 0x289e05, + 0x289e0b, + 0x31e686, + 0x20cb4b, + 0x221344, + 0x20d949, + 0x20e9c4, + 0x9e0ec02, + 0x20f143, + 0x20f403, + 0x16105c2, + 0x268183, + 0x2105ca, + 0xa20b382, + 0x216445, + 0x29224a, + 0x2d7744, + 0x283783, + 0x26cfc4, + 0x212543, + 0x212544, + 0x212547, + 0x2140c5, + 0x2147c5, + 0x214f46, + 0x2157c6, + 0x216a03, + 0x21ae88, + 0x210043, + 0xa601c02, + 0x243448, + 0x213ccb, + 0x220148, + 0x220d86, + 0x221847, + 0x225348, + 0xb642b42, + 0xbabf3c2, + 0x326788, + 0x35e4c7, + 0x246085, + 0x357f48, + 0x2bd408, + 0x34dd83, + 0x22a1c4, + 0x36f502, + 0xbe2bc82, + 0xc238482, + 0xca2e802, + 0x22e803, + 0xce01ec2, + 0x2fe203, + 0x2f1e84, + 0x201ec3, + 0x26e8c4, + 0x201ecb, + 0x213c03, + 0x2de946, + 0x239f84, + 0x29034e, + 0x371145, + 0x38af48, + 0x31ffc7, + 0x31ffca, + 0x229743, + 0x22f147, + 0x31efc5, + 0x22f8c4, + 0x265b06, + 0x265b07, + 0x2c11c4, + 0x2f7a87, + 0x313d44, + 0x26c004, + 0x26c006, + 0x387184, + 0x3510c6, + 0x203f83, + 0x35e288, + 0x203f88, + 0x245503, + 0x268143, + 0x399a04, + 0x39e003, + 0xd219f02, + 0xd6d6a42, + 0x20bac3, + 0x207146, + 0x241fc3, + 0x377cc4, + 0xdaee982, + 0x3af843, + 0x3507c3, + 0x217a02, + 0xde04142, + 0x2c1946, + 0x233ac7, + 0x2e8945, + 0x37de04, + 0x28c505, + 0x268907, + 0x267805, + 0x2b8649, + 0x2cefc6, + 0x2daa88, + 0x2e8846, + 0xe21a1c2, + 0x32ca08, + 0x2f1c46, + 0x21a1c5, + 0x2f6d87, + 0x309984, + 0x309985, + 0x276384, + 0x276388, + 0xe60cc02, + 0xea09882, + 0x3103c6, + 0x3b8988, + 0x334385, + 0x337306, + 0x342f08, + 0x344a88, + 0xee09885, + 0xf2142c4, + 0x3b0787, + 0xf60e5c2, + 0xfa1b102, + 0x10a099c2, + 0x2b9785, + 0x2a2645, + 0x2fef86, + 0x3b2547, + 0x380747, + 0x112a84c3, + 0x2a84c7, + 0x31eb08, + 0x376ec9, + 0x376d07, + 0x384d07, + 0x3a8ec8, + 0x3ad4c6, + 0x22f3c6, + 0x23000c, + 0x23120a, + 0x231687, + 0x232c8b, + 0x233907, + 0x23390e, + 0x234cc4, + 0x235ac4, + 0x237a47, + 0x3690c7, + 0x23b206, + 0x23b207, + 0x23b4c7, + 0x19604682, + 0x23c886, + 0x23c88a, + 0x23ce8b, + 0x23dbc7, + 0x23ed45, + 0x23f083, + 0x240586, + 0x240587, + 0x38eb43, + 0x19a0c442, + 0x240f4a, + 0x19f5d882, + 0x1a2a5e02, + 0x1a643142, + 0x1aa2cd82, + 0x244bc5, + 0x245304, + 0x1b205742, + 0x268dc5, + 0x23d483, + 0x20eac5, + 0x22ad44, + 0x206804, + 0x314046, + 0x25e206, + 0x28a003, + 0x238284, + 0x3a6803, + 0x1b600dc2, + 0x391c04, + 0x391c06, + 0x3b0d05, + 0x205e06, + 0x2f6e88, + 0x266e84, + 0x27ed08, + 0x2426c5, + 0x228308, + 0x29ff86, + 0x237587, + 0x22e204, + 0x22e206, + 0x33f443, + 0x383ec3, + 0x223d08, + 0x318dc4, + 0x348747, + 0x23e6c6, + 0x2d6389, + 0x250348, + 0x26cd08, + 0x26d084, + 0x351443, + 0x225e02, + 0x1c60f882, + 0x1ca10e82, + 0x3a7403, + 0x1ce04a42, + 0x38eac4, + 0x2862c6, + 0x26e605, + 0x21ba03, 0x232884, - 0x300447, - 0x367783, - 0x2379c8, - 0x3af5c5, - 0x36fc43, - 0x277705, - 0x277844, - 0x208306, - 0x20c804, - 0x20cf06, - 0x212306, - 0x2512c4, - 0x215683, - 0x21a883, - 0x1767e402, + 0x2b14c7, + 0x33da03, + 0x231a88, + 0x208545, + 0x36e803, + 0x273445, + 0x273584, + 0x2f6a86, + 0x209ec4, + 0x211346, + 0x211b86, + 0x3916c4, + 0x213b43, + 0x1d205882, + 0x247345, + 0x221c03, + 0x1d61b0c2, + 0x22ffc3, + 0x209bc5, + 0x232403, + 0x232409, + 0x1da05f02, + 0x1e205e42, + 0x2893c5, + 0x218786, + 0x2d1746, + 0x2b0a88, + 0x2b0a8b, + 0x20718b, + 0x2e8b45, + 0x2db145, + 0x2c6309, + 0x1600302, + 0x391888, + 0x20dc44, + 0x1ea007c2, + 0x3a7883, + 0x1f2c6086, + 0x20ae88, + 0x1f601402, + 0x2344c8, + 0x1fa2bb82, + 0x3b92ca, + 0x1feccc43, + 0x3ac1c6, + 0x3af408, + 0x3ac008, + 0x31d006, + 0x36bc07, + 0x264a07, + 0x3349ca, + 0x2d77c4, + 0x3474c4, + 0x35c1c9, + 0x20794385, + 0x209686, + 0x20e1c3, + 0x24a044, + 0x20a02644, + 0x202647, + 0x212fc7, + 0x22a584, + 0x285445, + 0x2ff048, + 0x366747, + 0x370f07, + 0x20e18342, + 0x327704, + 0x292b48, + 0x245bc4, + 0x247784, + 0x248085, + 0x2481c7, + 0x223589, + 0x248fc4, + 0x249709, + 0x249948, + 0x249dc4, + 0x249dc7, + 0x2124aa83, + 0x24ad47, + 0x1609d02, + 0x16ad202, + 0x24bec6, + 0x24c507, + 0x24cd44, + 0x24e6c7, + 0x24fa47, + 0x24fdc3, + 0x248902, + 0x229642, + 0x250a03, + 0x250a04, + 0x250a0b, + 0x379a48, + 0x256804, + 0x2523c5, + 0x254007, + 0x2555c5, + 0x2bc00a, + 0x256743, + 0x2160fc82, + 0x226e84, + 0x258d89, + 0x25c343, + 0x25c407, + 0x24a849, + 0x282688, + 0x204743, + 0x278fc7, + 0x279709, + 0x268ac3, + 0x2810c4, + 0x283c89, + 0x2880c6, + 0x289683, + 0x200182, + 0x21f983, + 0x3a8a87, + 0x21f985, + 0x379746, + 0x256e84, + 0x302e85, + 0x2e4403, + 0x216c46, + 0x20db42, + 0x395144, + 0x221402, + 0x221403, + 0x21a00782, + 0x247303, + 0x215c44, + 0x215c47, + 0x200906, + 0x202602, + 0x21e025c2, + 0x2dca84, + 0x22235e82, + 0x22600b02, + 0x2d4f84, + 0x2d4f85, + 0x2b6dc5, + 0x390e06, + 0x22a05d42, + 0x205d45, + 0x20cf05, + 0x20ae03, + 0x210986, + 0x2126c5, + 0x2166c2, + 0x343605, + 0x2166c4, + 0x221ec3, + 0x227343, + 0x22e0c642, + 0x2d4987, + 0x3669c4, + 0x3669c9, + 0x249f44, + 0x291d43, + 0x2f6609, + 0x367508, + 0x232a24c4, + 0x2a24c6, + 0x21c303, + 0x247bc3, + 0x2e9dc3, + 0x236eb382, + 0x368cc2, + 0x23a05e82, + 0x323cc8, + 0x32a388, + 0x398e46, + 0x2e27c5, + 0x22efc5, + 0x352ec7, + 0x21d205, + 0x228782, + 0x23e38182, + 0x1603002, + 0x2416c8, + 0x32c945, + 0x2e3404, + 0x2ebac5, + 0x23f407, + 0x3207c4, + 0x240e42, + 0x24200582, + 0x338984, + 0x212cc7, + 0x28a2c7, + 0x34ff84, + 0x292203, + 0x245444, + 0x245448, + 0x22f706, + 0x26598a, + 0x223444, + 0x292588, + 0x288504, + 0x221946, + 0x294684, + 0x2b9a86, + 0x366c89, + 0x25da47, + 0x3375c3, + 0x24667e42, + 0x267e43, + 0x20ee02, + 0x24a11ec2, + 0x3085c6, + 0x365c88, + 0x2a4087, + 0x3a3f49, + 0x291c49, + 0x2a5045, + 0x2a6049, + 0x2a6805, + 0x2a6949, + 0x2a8005, + 0x2a9108, + 0x21fb84, + 0x24e890c7, + 0x2a9303, + 0x2a9307, + 0x3850c6, + 0x2a9b87, + 0x2a1085, + 0x2935c3, + 0x2521ae02, + 0x3b40c4, + 0x2562ce82, + 0x258203, + 0x25a17f42, + 0x36d586, + 0x2f3a85, + 0x2ac207, + 0x26cc43, + 0x325044, + 0x20e903, + 0x33e783, + 0x25e02bc2, + 0x266015c2, + 0x398804, + 0x2488c3, + 0x243c85, + 0x26a029c2, + 0x27206482, + 0x2b4506, + 0x318f04, + 0x2e3004, + 0x2e300a, + 0x27a01fc2, + 0x37204a, + 0x3756c8, + 0x27fb1384, + 0x20ad83, + 0x201fc3, + 0x3a9a49, + 0x217649, + 0x285246, + 0x28244183, + 0x3292c5, + 0x30180d, + 0x375886, + 0x3bac8b, + 0x28602e82, + 0x22c1c8, + 0x29206e82, + 0x29606fc2, + 0x2ae585, + 0x29a03942, + 0x258447, + 0x21c907, + 0x21e003, + 0x2306c8, + 0x29e06502, + 0x312684, + 0x212943, + 0x351d45, + 0x34db83, + 0x2f3546, + 0x205904, + 0x268103, + 0x2ae9c3, + 0x2a205fc2, + 0x2e8ac4, + 0x35f6c5, + 0x39f1c7, + 0x275643, + 0x2ad883, + 0x2ae083, + 0x160fec2, + 0x2ae143, + 0x2ae943, + 0x2a605102, + 0x282104, + 0x25e406, + 0x342643, + 0x2aec43, + 0x2aaafd42, + 0x2afd48, + 0x2b0004, + 0x36c246, + 0x2b0387, + 0x249c46, + 0x28e2c4, + 0x38600682, + 0x384f8b, + 0x2fb08e, + 0x21930f, + 0x2985c3, + 0x38ebbbc2, + 0x1600f42, + 0x39201582, + 0x28f403, + 0x2fdec3, + 0x233706, + 0x277c46, + 0x3afd87, + 0x3328c4, + 0x396188c2, + 0x39a08882, + 0x348345, + 0x2e6047, + 0x3b5746, + 0x39e27282, + 0x227284, + 0x2b3ac3, + 0x3a20be02, + 0x3a759ec3, + 0x2b4c44, + 0x2be409, + 0x16c3ac2, + 0x3aa03a82, + 0x203a85, + 0x3aec3d42, + 0x3b203202, + 0x346947, + 0x239689, + 0x35ca0b, + 0x2647c5, + 0x2c4849, + 0x2e8246, + 0x31e6c7, + 0x3b608484, + 0x3199c9, + 0x373487, + 0x20ab47, + 0x20a383, + 0x20a386, + 0x3b68c7, + 0x206a43, + 0x2565c6, + 0x3be02a02, + 0x3c232682, + 0x385803, + 0x324c45, + 0x350f47, + 0x250086, + 0x21f905, + 0x277d44, + 0x2c9fc5, + 0x2f2684, + 0x3c6040c2, + 0x331107, + 0x2dbd44, + 0x217544, + 0x21754d, + 0x257509, + 0x3a4448, + 0x253944, + 0x3abc45, + 0x206447, + 0x2144c4, + 0x2e1947, + 0x21c485, + 0x3caa4604, + 0x2d92c5, + 0x25b004, + 0x24bb86, + 0x3b2345, + 0x3ce250c2, + 0x283844, + 0x283845, + 0x36fa46, + 0x20c3c5, + 0x30c304, + 0x2c5dc3, + 0x2053c6, + 0x358505, + 0x2bb485, + 0x3b2444, + 0x2234c3, + 0x2234cc, + 0x3d288a02, + 0x3d6010c2, + 0x3da00282, + 0x206343, + 0x206344, + 0x3de04bc2, + 0x2f9688, + 0x379805, + 0x235684, + 0x23b086, + 0x3e201f42, + 0x3e609782, + 0x3ea00e82, + 0x306b85, + 0x391586, + 0x211084, + 0x3263c6, + 0x2ba346, + 0x219943, + 0x3ef0de0a, + 0x247b05, + 0x2c8e83, + 0x223186, + 0x300fc9, + 0x223187, + 0x297788, + 0x2981c9, + 0x224348, + 0x229486, + 0x20bf03, + 0x3f2a8542, + 0x385683, + 0x385689, + 0x332448, + 0x3f649a02, + 0x3fa02342, + 0x227f83, + 0x2da905, + 0x251ec4, + 0x2c0909, + 0x22cb84, + 0x266348, + 0x202343, + 0x202344, + 0x278b03, + 0x2187c8, + 0x217487, + 0x4020b102, + 0x274082, + 0x351905, + 0x266689, + 0x209703, + 0x27b184, + 0x329284, + 0x2064c3, + 0x27c3ca, + 0x40752bc2, + 0x40a83802, + 0x2c5443, + 0x3739c3, + 0x1602302, + 0x38ac03, + 0x40e0f242, + 0x4120ec42, + 0x41610444, + 0x210446, + 0x383b06, + 0x26ad44, + 0x36c643, + 0x38bcc3, + 0x226883, + 0x23d206, + 0x2cb8c5, + 0x2c5a07, + 0x31e589, + 0x2ca645, + 0x2cb806, + 0x2cbd88, + 0x2cbf86, + 0x236a04, + 0x29944b, + 0x2ceac3, + 0x2ceac5, + 0x2cec08, + 0x228502, + 0x346c42, + 0x41a44c42, + 0x41e0e602, + 0x218903, + 0x422675c2, + 0x2675c3, + 0x2cef04, + 0x2cf5c3, + 0x42a115c2, + 0x42ed43c6, + 0x2a7306, + 0x43207902, + 0x4360f442, + 0x43a27382, + 0x43e02c82, + 0x4422dd02, + 0x44602d02, + 0x234703, + 0x390685, + 0x319606, + 0x44a11cc4, + 0x3b0b0a, + 0x32fe86, + 0x2e8d84, + 0x281d03, + 0x45604642, + 0x200c82, + 0x25fd03, + 0x45a05503, + 0x2c7b87, + 0x3b2247, + 0x47250b07, + 0x312d87, + 0x227b03, + 0x227b0a, + 0x236b84, + 0x23e5c4, + 0x23e5ca, + 0x213f05, + 0x47609642, + 0x24e683, + 0x47a008c2, + 0x21c2c3, + 0x267e03, + 0x48203342, + 0x2a8444, + 0x21de84, + 0x3b9505, + 0x305005, + 0x2e1ac6, + 0x2e1e46, + 0x48608442, + 0x48a033c2, + 0x3185c5, + 0x2a7012, + 0x2511c6, + 0x220803, + 0x30a746, + 0x220805, + 0x1610602, + 0x50e120c2, + 0x353e83, + 0x2120c3, + 0x2441c3, + 0x512023c2, + 0x376e43, + 0x5160b482, + 0x210483, + 0x282148, + 0x25e983, + 0x25e986, + 0x3a2987, + 0x306806, + 0x30680b, + 0x2e8cc7, + 0x3b3ec4, + 0x51e04ec2, + 0x379685, + 0x522054c3, + 0x2a6e03, + 0x326c05, + 0x329983, + 0x52729986, + 0x391a0a, + 0x26a9c3, + 0x204584, + 0x3b88c6, + 0x21a5c6, + 0x52a00983, + 0x324f07, + 0x285147, + 0x29b0c5, + 0x2318c6, + 0x224a83, + 0x54a10bc3, + 0x54e056c2, + 0x328144, + 0x22a2cc, + 0x236149, + 0x2414c7, + 0x249245, + 0x262a84, + 0x273cc8, + 0x278305, + 0x55284a05, + 0x28c609, + 0x351f43, + 0x2a5d84, + 0x556013c2, + 0x2013c3, + 0x55a94142, + 0x2a4386, + 0x160f982, + 0x55e06e02, + 0x306a88, + 0x2be603, + 0x2d9207, + 0x2e4d05, + 0x2dd685, + 0x32840b, + 0x2dd686, + 0x328606, + 0x2ffac6, + 0x262c84, + 0x3042c6, + 0x2e3508, + 0x23a043, + 0x250dc3, + 0x250dc4, + 0x2e4484, + 0x2e4a07, + 0x2e5ec5, + 0x562e6002, + 0x5660ba02, + 0x20ba05, + 0x2e83c4, + 0x2e83cb, + 0x2e8e88, + 0x228f44, + 0x2272c2, + 0x56e28ec2, + 0x23b903, + 0x2e9344, + 0x2e9605, + 0x2ea047, + 0x2eb604, + 0x2e8b84, + 0x57201302, + 0x360cc9, + 0x2ec405, + 0x264a85, + 0x2ecf85, + 0x57601303, + 0x2ee0c4, + 0x2ee0cb, + 0x2ee644, + 0x2ef3cb, + 0x2ef7c5, + 0x21944a, + 0x2f0048, + 0x2f024a, + 0x2f0ac3, + 0x2f0aca, + 0x57a01742, + 0x57e2d4c2, + 0x21aa03, + 0x582f1bc2, + 0x2f1bc3, + 0x5875c402, + 0x58b22842, + 0x2f2504, + 0x21afc6, + 0x326105, + 0x2f4503, + 0x31a9c6, + 0x204405, + 0x25e704, + 0x58e05ec2, + 0x2c9244, + 0x2c5f8a, + 0x22d787, + 0x2f38c6, + 0x380b07, + 0x22a403, + 0x283e48, + 0x37f48b, + 0x3736c5, + 0x333ec5, + 0x333ec6, + 0x390884, + 0x3aa248, + 0x222943, + 0x222944, + 0x222947, + 0x38e446, + 0x352686, + 0x29018a, + 0x246604, + 0x24660a, + 0x59282846, + 0x282847, + 0x252447, + 0x270844, + 0x270849, + 0x25e0c5, + 0x235e0b, + 0x2e81c3, + 0x211503, + 0x22f003, + 0x22fac4, + 0x59600482, + 0x25d4c6, + 0x293345, + 0x30a985, + 0x24f6c6, + 0x3395c4, + 0x59a02782, + 0x23f0c4, + 0x59e01c42, + 0x2b9f05, + 0x21ad84, + 0x21bec3, + 0x5a612102, + 0x212103, + 0x23ba46, + 0x5aa03082, + 0x27f488, + 0x223004, + 0x223006, + 0x374246, + 0x2540c4, + 0x205345, + 0x2141c8, + 0x216547, + 0x219687, + 0x21968f, + 0x292a46, + 0x22cf03, + 0x22cf04, + 0x310504, + 0x20d003, + 0x221a84, + 0x240944, + 0x5ae42b02, + 0x289d43, + 0x242b03, + 0x5b209842, + 0x229f83, + 0x38eb83, + 0x21484a, + 0x358107, + 0x2efc0c, + 0x2efec6, + 0x30a146, + 0x248547, + 0x5b64c687, + 0x24f809, + 0x243584, + 0x24fbc4, + 0x5ba18942, + 0x5be027c2, + 0x290546, + 0x324d04, + 0x2d6bc6, + 0x2a5148, + 0x3b8dc4, + 0x258486, + 0x2d1705, + 0x265c88, + 0x207383, + 0x273705, + 0x273e83, + 0x264b83, + 0x264b84, + 0x2759c3, + 0x5c2ec082, + 0x5c602e02, + 0x2e8089, + 0x278205, + 0x278404, + 0x27a9c5, + 0x20dd44, + 0x2e0d07, + 0x343bc5, + 0x250cc4, + 0x250cc8, + 0x2d5086, + 0x2d7984, + 0x2d8e88, + 0x2dbb87, + 0x5ca03902, + 0x2e36c4, + 0x20d0c4, + 0x20ad47, + 0x5ce2b804, + 0x2ccf42, + 0x5d201102, + 0x201543, + 0x203984, + 0x2aa283, + 0x374e05, + 0x5d61e182, + 0x2eb285, + 0x202c42, + 0x34d5c5, + 0x365e45, + 0x5da00c42, + 0x350744, + 0x5de00d02, + 0x2387c6, + 0x29a146, + 0x2667c8, + 0x2bfa08, + 0x36d504, + 0x36d6c5, + 0x3610c9, + 0x2db1c4, + 0x3919c4, + 0x205183, + 0x5e222705, + 0x2c3b87, + 0x2a2744, + 0x341e8d, + 0x361782, + 0x361783, + 0x364503, + 0x5e600802, + 0x388305, + 0x25f9c7, + 0x205b44, + 0x312e47, + 0x2983c9, + 0x2c60c9, + 0x2519c7, + 0x273b03, + 0x273b08, + 0x2ed249, + 0x24e187, + 0x373605, + 0x39e086, + 0x39fb86, + 0x3a3c05, + 0x257605, + 0x5ea02d82, + 0x36ce45, + 0x2b2908, + 0x2c1706, + 0x5eeb7487, + 0x2efa04, + 0x2aa987, + 0x2f62c6, + 0x5f230982, + 0x36f746, + 0x2f83ca, + 0x2f8e85, + 0x5f6de402, + 0x5fa36542, + 0x3b6c06, + 0x2a1e88, + 0x5fe8a487, + 0x60234e42, + 0x2255c3, + 0x311d86, + 0x225044, + 0x3a2846, + 0x390b06, + 0x26ff0a, + 0x331c05, + 0x367ec6, + 0x3759c3, + 0x3759c4, + 0x207102, + 0x309943, + 0x60606382, + 0x2f0f83, + 0x3722c4, + 0x2a1fc4, + 0x2a1fca, + 0x229543, + 0x276288, + 0x22954a, + 0x27b447, + 0x2fcd86, + 0x238684, + 0x290bc2, + 0x2a2e82, + 0x60a04002, + 0x245403, + 0x252207, + 0x31ac87, + 0x2848c4, + 0x26f8c7, + 0x2ea146, + 0x216847, + 0x35e604, + 0x242a05, + 0x2b7985, + 0x60e0fe82, + 0x20fe86, + 0x218283, + 0x220502, + 0x220506, + 0x61203e02, + 0x6160b0c2, + 0x3ba785, + 0x61a21c82, + 0x61e03b42, + 0x33b5c5, + 0x393105, + 0x367f85, + 0x267303, + 0x286385, + 0x2dd747, + 0x307bc5, + 0x306185, + 0x38b044, + 0x3204c6, + 0x23e804, + 0x62201442, + 0x62f630c5, + 0x2ebe07, + 0x2d6dc8, + 0x25fe86, + 0x25fe8d, + 0x260709, + 0x260712, + 0x32f345, + 0x3339c3, + 0x6320a9c2, + 0x309444, + 0x375903, 0x360fc5, - 0x215dc3, - 0x17a00442, - 0x232383, - 0x331e85, - 0x2343c3, - 0x2343c9, - 0x17e08042, - 0x18614b42, - 0x286b45, - 0x21ba46, - 0x29f387, - 0x2c9786, - 0x2b83c8, - 0x2b83cb, - 0x20730b, - 0x22aac5, - 0x2d02c5, - 0x2bf489, - 0x1600ec2, - 0x251488, - 0x20ce04, - 0x18e00202, - 0x24ea03, - 0x1965b246, - 0x330e88, - 0x19a031c2, - 0x228108, - 0x19e00d82, - 0x27008a, - 0x20f043, - 0x31d346, - 0x330448, - 0x378cc8, - 0x32f8c6, - 0x36dd07, - 0x241f07, - 0x20de8a, - 0x2cd784, - 0x33f184, - 0x352f49, - 0x38f8c5, - 0x2f31c6, - 0x2138c3, - 0x247984, - 0x212104, - 0x3412c7, - 0x21e687, - 0x2d7e84, - 0x20ddc5, - 0x2de308, - 0x35d607, - 0x360207, - 0x1a206ac2, - 0x369684, - 0x28f388, - 0x384544, - 0x2455c4, - 0x2459c5, - 0x245b07, - 0x206ac9, - 0x246684, - 0x246e89, - 0x247348, - 0x247704, - 0x247707, - 0x1a647f83, - 0x248a47, - 0x16475c2, - 0x17a4a82, - 0x249a06, - 0x24a4c7, - 0x24a904, - 0x24c9c7, - 0x24e4c7, - 0x252083, - 0x23aa82, + 0x2fa085, + 0x63612982, + 0x36e843, + 0x63a50b82, + 0x642bf542, + 0x6460fb42, + 0x353805, + 0x37ac43, + 0x37a4c8, + 0x64a07842, + 0x64e000c2, + 0x2a8406, + 0x33b80a, + 0x21bf03, + 0x20c343, + 0x2ee3c3, + 0x65a02dc2, + 0x73e35482, + 0x74601c82, 0x201682, - 0x252b03, - 0x252b04, - 0x252b0b, - 0x31ce88, - 0x258b44, - 0x253805, - 0x255e47, - 0x257a05, - 0x2d9a8a, - 0x258a83, - 0x1aa21842, - 0x258d84, - 0x25ae49, - 0x25edc3, - 0x25ee87, - 0x3ac249, - 0x280d08, - 0x200c83, - 0x276607, - 0x276d49, - 0x202883, - 0x27d9c4, - 0x282309, - 0x2856c6, - 0x286e03, - 0x2038c2, - 0x233e83, - 0x39b6c7, - 0x37f785, - 0x3585c6, - 0x247b84, - 0x2d37c5, - 0x207a03, - 0x21ac86, - 0x20d382, - 0x390e04, - 0x227982, - 0x2db883, - 0x1ae007c2, - 0x244a43, - 0x21a544, - 0x21a547, - 0x3713c6, - 0x2499c2, - 0x1b22d642, - 0x325e44, - 0x1b626b02, - 0x1ba0acc2, - 0x2d6484, - 0x2d6485, - 0x2c3e85, - 0x341a46, - 0x1be01e02, - 0x29fe45, - 0x2ded05, - 0x201e03, - 0x3650c6, - 0x378445, - 0x213682, - 0x33a005, - 0x213684, - 0x217c43, - 0x219343, - 0x1c20c502, - 0x28e147, - 0x35d884, - 0x35d889, - 0x247884, - 0x22b603, - 0x346449, - 0x360e88, - 0x2a3c84, - 0x2a3c86, + 0x36f549, + 0x2c2f04, + 0x2309c8, + 0x74af4542, + 0x74e08602, + 0x2ef605, + 0x2330c8, + 0x282288, + 0x2f858c, + 0x22d543, + 0x25a9c2, + 0x75201f82, + 0x2caac6, + 0x2fdc05, + 0x26d343, + 0x23cc46, + 0x2fdd46, 0x201f83, - 0x212883, - 0x21eb03, - 0x1c6e1102, - 0x2e9182, - 0x1ca0b2c2, - 0x316b88, - 0x34afc8, - 0x394986, - 0x2549c5, - 0x21a905, - 0x306007, - 0x255805, - 0x21c2c2, - 0x1ce61e82, - 0x1614b82, - 0x38fa48, - 0x33b585, - 0x2c8084, - 0x2e0b85, - 0x390507, - 0x258884, - 0x23a882, - 0x1d204c42, - 0x32c704, - 0x213507, - 0x3abd87, - 0x370a04, - 0x28ea43, - 0x244644, - 0x244648, - 0x231ac6, - 0x24d70a, - 0x206984, - 0x28edc8, - 0x253ac4, - 0x224646, - 0x290e84, - 0x357e86, - 0x35db49, - 0x259187, - 0x33a683, - 0x1d605e82, - 0x26a843, - 0x20ff82, - 0x1da04d42, - 0x2dfe86, - 0x35ed48, - 0x2a5287, - 0x3a30c9, - 0x23a4c9, - 0x2a5c85, - 0x2a6e49, - 0x2a7b45, - 0x2a7c89, - 0x2a8b85, - 0x284244, - 0x1de84247, - 0x2957c3, - 0x2a9c07, - 0x3a5546, - 0x2aa407, - 0x2a2945, - 0x2aba83, - 0x1e232a02, - 0x392844, - 0x1e63a3c2, - 0x25a183, - 0x1ea0f1c2, - 0x2e8b86, - 0x38df85, - 0x2acb87, - 0x324d83, - 0x250a44, - 0x206f83, - 0x20b343, - 0x1ee082c2, - 0x1f600042, - 0x394344, - 0x23aa43, - 0x364885, - 0x25fcc5, - 0x1fa05602, - 0x20200942, - 0x276946, - 0x209744, - 0x30c6c4, - 0x30c6ca, - 0x20a00a82, - 0x2f768a, - 0x372fc8, - 0x20e01604, - 0x201d83, - 0x216c03, - 0x3209c9, - 0x223349, - 0x300546, - 0x21202243, - 0x2da985, - 0x2f81cd, - 0x202246, - 0x2065cb, - 0x21606382, - 0x333208, - 0x21a0bf02, - 0x21e00b42, - 0x2af285, - 0x222074c2, - 0x264c47, - 0x2a2247, - 0x2103c3, - 0x2ae348, - 0x22601982, - 0x203a04, - 0x3786c3, - 0x332c05, - 0x3833c3, - 0x38da46, - 0x31b204, - 0x23c2c3, - 0x26ad83, - 0x22a095c2, - 0x22aa44, - 0x351445, - 0x36bb47, - 0x274643, - 0x2ad803, - 0x2aed83, - 0x1621a82, - 0x2aee43, - 0x2af643, - 0x22e04282, - 0x2f5d44, - 0x378306, - 0x204283, - 0x2af9c3, - 0x232b09c2, - 0x2b09c8, - 0x2b1404, - 0x25a546, - 0x2b1847, - 0x22ba06, - 0x230d44, - 0x30e001c2, - 0x3a540b, - 0x39fb4e, - 0x21c80f, - 0x233383, - 0x31633e42, - 0x1604ec2, - 0x31a02b82, - 0x227683, - 0x202b83, - 0x235c06, - 0x2aea46, - 0x27d807, - 0x34aa44, - 0x31e1bb82, - 0x32229e82, - 0x228e45, - 0x3a4ac7, - 0x371b86, - 0x326436c2, - 0x2436c4, - 0x36e203, - 0x32a09682, - 0x32f508c3, - 0x391004, - 0x2b6b49, - 0x16bc882, - 0x33216c82, - 0x216c85, - 0x33644802, - 0x33a00102, - 0x33e507, - 0x239049, - 0x35364b, - 0x241cc5, - 0x377609, - 0x2bcfc6, - 0x22d0c7, - 0x33e0c744, - 0x305ac9, - 0x35a787, - 0x201b47, - 0x209883, - 0x209886, - 0x2da2c7, - 0x206003, - 0x271e46, - 0x34605642, - 0x34a34642, - 0x21fa43, - 0x250645, - 0x222547, - 0x281b86, - 0x37f705, - 0x311244, - 0x3b1405, - 0x2e8904, - 0x34e02102, - 0x3210c7, - 0x2d6044, - 0x223244, - 0x22324d, - 0x248809, - 0x2e0f48, - 0x22cd04, - 0x209b05, - 0x27ee47, - 0x332784, - 0x22ef87, - 0x3a8405, - 0x353a9084, - 0x2fa005, - 0x25da84, - 0x265d46, - 0x319985, - 0x35636b42, - 0x212e04, - 0x212e05, - 0x213206, - 0x37f845, - 0x256584, - 0x2dbc83, - 0x32fd86, - 0x220f45, - 0x225285, - 0x319a84, - 0x206a03, - 0x206a0c, - 0x35a86002, - 0x35e01042, - 0x3620b402, - 0x332683, - 0x332684, - 0x366061c2, - 0x3a6088, - 0x358685, - 0x236604, - 0x23b9c6, - 0x36a0a242, - 0x36e09bc2, - 0x37200982, - 0x2d8845, - 0x251186, - 0x341204, - 0x2814c6, - 0x3340c6, - 0x203483, - 0x3772788a, - 0x23ad85, - 0x274803, - 0x225046, - 0x2efe09, - 0x225047, - 0x28bd48, - 0x293849, - 0x219888, - 0x36a346, - 0x20b203, - 0x37a9a1c2, - 0x3856c3, - 0x3856c9, - 0x3357c8, - 0x37e09782, - 0x38206742, - 0x2348c3, - 0x2cf145, - 0x253304, - 0x31c8c9, - 0x25f6c4, - 0x2b1648, - 0x206743, - 0x24f244, - 0x326b83, - 0x21ba88, - 0x223187, - 0x38643742, - 0x269d42, - 0x238c45, - 0x268849, - 0x211003, - 0x278184, - 0x2da944, - 0x202c03, - 0x278cca, - 0x38b72e82, - 0x38e12dc2, - 0x2bdb03, - 0x3751c3, - 0x164f202, - 0x250d03, - 0x39250042, - 0x39603042, - 0x39b07b04, - 0x366086, - 0x3469c6, - 0x276b84, - 0x25a943, - 0x27be43, - 0x2e4983, - 0x23f286, - 0x2c2e45, - 0x2be0c7, - 0x22cf89, - 0x2c1d45, - 0x2c2d86, - 0x2c3708, - 0x2c3906, - 0x238744, - 0x29718b, - 0x2c6383, - 0x2c6385, - 0x2c64c8, - 0x21e442, - 0x33e802, - 0x39e43b02, - 0x3a20e842, - 0x21bbc3, - 0x3a600e02, - 0x269fc3, - 0x2c67c4, - 0x2c8183, - 0x3ae25682, - 0x3b2cc5c6, - 0x2bb346, - 0x2ccc08, - 0x3b6cad42, - 0x3ba111c2, - 0x3be19382, - 0x3c209f82, - 0x3c614882, - 0x3ca00ac2, - 0x228343, - 0x318d45, - 0x209c86, - 0x3ce12444, - 0x3ab20a, - 0x310606, - 0x22ad04, - 0x27e943, - 0x3da06bc2, - 0x205902, - 0x24dbc3, - 0x3de38483, - 0x2ee087, - 0x319887, - 0x3f252c07, - 0x20f007, - 0x215a43, - 0x22c6ca, - 0x240584, - 0x341504, - 0x34150a, - 0x247045, - 0x3f601642, - 0x24d483, - 0x3fa01dc2, - 0x201f43, - 0x26a803, - 0x40201942, - 0x29a0c4, - 0x220a84, - 0x3a36c5, - 0x2d7205, - 0x22da06, - 0x22dd86, - 0x40608382, - 0x40a025c2, - 0x2eb445, - 0x2bb052, - 0x29fbc6, - 0x21ce83, - 0x2fd346, - 0x221d85, - 0x1611342, - 0x48e0d502, - 0x2ed8c3, - 0x212043, - 0x265603, - 0x49203382, - 0x379ac3, - 0x49602182, - 0x204a03, - 0x2f5d88, - 0x223b43, - 0x223b46, - 0x333a07, - 0x2d84c6, - 0x2d84cb, - 0x22ac47, - 0x392644, - 0x49e02602, - 0x3a6505, - 0x215a03, - 0x22fd83, - 0x31aa03, - 0x31aa06, - 0x2d038a, - 0x26d703, + 0x2ff883, + 0x300786, + 0x3013c4, + 0x295586, + 0x2cec85, + 0x30164a, + 0x2eebc4, + 0x302304, + 0x30370a, + 0x7566b082, + 0x337745, + 0x30478a, + 0x305285, + 0x305b44, + 0x305c46, + 0x305dc4, + 0x218dc6, + 0x75a6dac2, + 0x2f3206, + 0x2f3dc5, + 0x3ab6c7, + 0x200206, + 0x248744, + 0x2d5e07, + 0x30dd46, + 0x2b8a45, + 0x381947, + 0x39eb47, + 0x39eb4e, + 0x25ed06, + 0x2e1805, + 0x27dec7, + 0x282b43, + 0x3b2f87, + 0x20f5c5, + 0x212144, + 0x212f82, + 0x3addc7, + 0x332944, + 0x377404, + 0x273f0b, + 0x21d5c3, + 0x2b6987, 0x21d5c4, - 0x318146, - 0x3b1e46, - 0x4a2264c3, - 0x250907, - 0x29cf8d, - 0x39eb87, - 0x296ec5, - 0x237806, - 0x220f83, - 0x4bb65303, - 0x4be07a82, - 0x307604, - 0x21e3cc, - 0x35bb89, - 0x36f307, - 0x246045, - 0x255904, - 0x26ae08, - 0x274885, - 0x274a85, - 0x3612c9, - 0x335283, - 0x2a6b84, - 0x4c206d42, - 0x206d43, - 0x4c690942, - 0x295bc6, - 0x16b5482, - 0x4ca95782, - 0x2d8748, - 0x2b6d43, - 0x2f9f47, - 0x2d7785, - 0x295785, - 0x2f6c4b, - 0x2d1f06, - 0x2f6e46, - 0x2f9d06, - 0x226284, - 0x2d4ac6, - 0x2d5048, - 0x234b03, - 0x252ec3, - 0x252ec4, - 0x2d70c4, - 0x2d7487, - 0x2d8185, - 0x4ced82c2, - 0x4d206a42, - 0x209285, - 0x2990c4, - 0x2dac8b, - 0x2dbd48, - 0x2e6804, - 0x243702, - 0x4da80b82, - 0x2b0c03, - 0x2dc204, - 0x2dc4c5, - 0x272d87, - 0x2e06c4, - 0x22ab04, - 0x4de07442, - 0x359f49, - 0x2e1585, - 0x241f85, - 0x2e2105, - 0x4e21bd03, - 0x2e2f44, - 0x2e2f4b, - 0x2e3444, - 0x2e3ecb, - 0x2e48c5, - 0x21c94a, - 0x2e4f88, - 0x2e518a, - 0x2e5a03, - 0x2e5a0a, - 0x4e626402, - 0x4ea41542, - 0x265903, - 0x4eee7d82, - 0x2e7d83, - 0x4f35d142, - 0x4f7157c2, - 0x2e8784, - 0x21dd86, - 0x281205, - 0x2e91c3, - 0x29ef06, - 0x21d445, - 0x21e104, - 0x4fa08782, - 0x2ca784, - 0x2bf10a, - 0x386847, - 0x38ddc6, - 0x2d0847, - 0x21e503, - 0x253b48, - 0x25b5cb, - 0x300645, - 0x2b6e85, - 0x2b6e86, - 0x225904, - 0x335b88, - 0x20b4c3, - 0x20e204, - 0x20e207, - 0x280ec6, - 0x321746, - 0x29b68a, - 0x244fc4, - 0x244fca, - 0x2de886, - 0x2de887, - 0x253887, - 0x26f884, - 0x26f889, - 0x24b7c5, - 0x23a30b, - 0x26ddc3, - 0x20d0c3, - 0x21a943, - 0x231e84, - 0x4fe04b42, - 0x254186, - 0x2ab805, - 0x2b2dc5, - 0x3324c6, - 0x279384, - 0x502013c2, - 0x240b44, - 0x50607982, - 0x232984, - 0x227783, - 0x50a12082, - 0x349f83, - 0x24ae86, - 0x50e01bc2, - 0x30f108, - 0x224ec4, - 0x224ec6, - 0x305546, - 0x255f04, - 0x32fd05, - 0x3a8108, - 0x3a8607, - 0x3b0bc7, - 0x3b0bcf, - 0x28f286, - 0x210d03, - 0x210d04, - 0x2251c4, - 0x229103, - 0x224784, - 0x373e44, - 0x51226442, - 0x287303, - 0x390683, - 0x51617642, - 0x222a43, - 0x24f803, - 0x218e4a, - 0x23b5c7, - 0x3a568c, - 0x3a5946, - 0x230ac6, - 0x23a6c7, - 0x2302c7, - 0x23e289, - 0x21f144, - 0x23ea84, - 0x51a0a442, - 0x51e01402, - 0x29ba46, - 0x250704, - 0x376e86, - 0x230748, - 0x330cc4, - 0x264c86, - 0x2c9745, - 0x25f008, - 0x207503, - 0x266a45, - 0x269b43, - 0x242083, - 0x242084, - 0x26afc3, - 0x522e1202, - 0x52602482, - 0x26dc89, - 0x274985, - 0x283dc4, - 0x3614c5, - 0x210804, - 0x2ed107, - 0x33fac5, - 0x252dc4, - 0x252dc8, - 0x2d3486, - 0x2d5204, - 0x2d5208, - 0x2d5e87, - 0x52a015c2, - 0x2da0c4, - 0x2d3904, - 0x201d47, - 0x52e41384, - 0x22dc82, - 0x53201882, - 0x202b43, - 0x216b84, - 0x222903, - 0x222905, - 0x5362c082, - 0x2e9085, - 0x210fc2, - 0x376445, - 0x35ef05, - 0x53a168c2, - 0x2168c4, - 0x53e08d82, - 0x2c7b06, - 0x2ac106, - 0x268988, - 0x2b7b88, - 0x2e8b04, - 0x35e245, - 0x2f39c9, - 0x29f484, - 0x2d0344, - 0x2513c3, - 0x5420dfc5, - 0x374f07, - 0x2881c4, - 0x35a90d, - 0x35b202, - 0x3858c3, - 0x39a083, - 0x54601082, - 0x3886c5, - 0x31b447, - 0x20f0c4, - 0x20f0c7, - 0x293a49, - 0x2bf249, - 0x214687, - 0x24fa83, - 0x2b52c8, - 0x23dd09, - 0x2e9947, - 0x2e9cc5, - 0x2ea486, - 0x2eaac6, - 0x2eac45, - 0x248905, - 0x54a01282, - 0x228685, - 0x2b9988, - 0x2a79c6, - 0x3a1c87, - 0x2e4b04, - 0x2ab1c7, - 0x2edd06, - 0x54e00242, - 0x212f06, - 0x2f004a, - 0x2f1045, - 0x552d29c2, - 0x55638282, - 0x2da606, - 0x3574c8, - 0x55babf47, - 0x55e00602, - 0x20a503, - 0x3b0306, - 0x30aa04, - 0x3338c6, - 0x341746, - 0x3971ca, - 0x3a1e05, - 0x20d586, - 0x218743, - 0x218744, - 0x207282, - 0x2fe483, - 0x56253e82, - 0x2dd843, - 0x2f7904, - 0x2dca04, - 0x35760a, - 0x245483, - 0x283b08, - 0x36a40a, - 0x278447, - 0x2f4846, - 0x2c79c4, - 0x22abc2, - 0x200e42, - 0x56609202, - 0x244603, - 0x253647, - 0x29f1c7, - 0x38f98b, - 0x3643c4, - 0x349447, - 0x272e86, - 0x213807, - 0x2ad204, - 0x33bb85, - 0x2a96c5, - 0x56a10442, - 0x221a46, - 0x2259c3, - 0x226cc2, - 0x226cc6, - 0x56e0d942, - 0x57203e42, - 0x203e45, - 0x57624982, - 0x57a06ec2, - 0x358845, - 0x2c0f45, - 0x20d645, - 0x264183, - 0x340185, - 0x2d1fc7, - 0x2aa2c5, - 0x3219c5, - 0x38b604, - 0x379bc6, - 0x243c84, - 0x57e00cc2, - 0x276485, - 0x2a4887, - 0x377088, - 0x26a8c6, - 0x26a8cd, - 0x270789, - 0x270792, - 0x322045, - 0x326e03, - 0x58a019c2, - 0x2e6004, - 0x2022c3, - 0x35e145, - 0x2f2605, - 0x58e21e42, - 0x290f03, - 0x59242d42, - 0x59694082, - 0x59a18882, - 0x346e05, - 0x2a1003, - 0x397008, - 0x59e011c2, - 0x5a203282, - 0x29a086, - 0x27f30a, - 0x204983, - 0x256503, - 0x2f3c43, - 0x5ae06202, - 0x692033c2, - 0x69a04cc2, - 0x203dc2, - 0x38bd09, - 0x2bbcc4, - 0x2ae648, - 0x69ee9202, - 0x6a205882, - 0x2e4105, - 0x2355c8, - 0x247d88, - 0x2f334c, - 0x23a183, - 0x25d442, - 0x6a62d742, - 0x2c21c6, - 0x2f56c5, - 0x30f5c3, - 0x3903c6, - 0x2f5806, - 0x22fc43, - 0x2f6a03, - 0x2f6fc6, - 0x2f7d84, - 0x270186, - 0x2c6545, - 0x2f800a, - 0x23d184, - 0x2f8d84, - 0x34b94a, - 0x6aa6cd42, - 0x347a45, - 0x2fa44a, - 0x2fb885, - 0x2fc404, - 0x2fc506, - 0x2fc684, - 0x366dc6, - 0x6ae00282, - 0x38d706, - 0x38e7c5, - 0x204707, - 0x239f46, - 0x22d584, - 0x22d587, - 0x3277c6, - 0x212f45, - 0x2c6c87, - 0x39ae07, - 0x39ae0e, - 0x223ec6, - 0x22ee45, - 0x279a07, - 0x2deb83, - 0x2deb87, - 0x3a8a05, - 0x211204, - 0x2120c2, - 0x37a547, - 0x34aac4, - 0x2ae9c4, - 0x269bcb, - 0x2201c3, - 0x2c3a47, - 0x2201c4, - 0x2ce307, - 0x238943, - 0x32914d, - 0x388f08, - 0x252cc4, - 0x252cc5, - 0x2fca45, - 0x2fd003, - 0x6b224dc2, - 0x2fe443, - 0x2fea03, - 0x365c44, - 0x276e45, - 0x2193c7, - 0x2187c6, - 0x372f83, - 0x226e0b, - 0x29d34b, - 0x267c4b, - 0x276f4a, - 0x2a734b, - 0x2cae0b, - 0x2d2a0c, - 0x2d5711, - 0x33d90a, - 0x34e1cb, - 0x37bd0b, - 0x3ae28a, - 0x3b2eca, - 0x2ff60d, - 0x300d4e, - 0x301b4b, - 0x301e0a, - 0x302d51, - 0x30318a, - 0x30368b, - 0x303bce, - 0x30450c, - 0x30498b, - 0x304c4e, - 0x304fcc, - 0x3087ca, - 0x3098cc, - 0x6b709bca, - 0x30adc9, - 0x30c94a, - 0x30cbca, - 0x30ce4b, - 0x312f8e, - 0x313311, - 0x31bcc9, - 0x31bf0a, - 0x31cb0b, - 0x31e2ca, - 0x31ee56, - 0x32060b, - 0x321e0a, - 0x32220a, - 0x32424b, - 0x326889, - 0x329ac9, - 0x32ae0d, - 0x32c48b, - 0x32d60b, - 0x32dfcb, - 0x32e449, - 0x32ea8e, - 0x32efca, - 0x335e4a, - 0x33648a, - 0x336e4b, - 0x33768b, - 0x33794d, - 0x33904d, - 0x339c90, + 0x2cc0c7, + 0x228bc3, + 0x33678d, + 0x388b48, + 0x21d044, + 0x250bc5, + 0x307d05, + 0x308143, + 0x75e22f02, + 0x309903, + 0x309fc3, + 0x210004, + 0x279805, + 0x218307, + 0x375a46, + 0x372003, + 0x23ab4b, + 0x26ba4b, + 0x2a654b, + 0x2de44a, + 0x30254b, + 0x31be8b, + 0x356b8c, + 0x378d11, + 0x3b654a, + 0x3ba10b, + 0x30ad8b, + 0x30b34a, + 0x30b88a, + 0x30cb4e, + 0x30d18b, + 0x30d44a, + 0x30ef11, + 0x30f34a, + 0x30f84b, + 0x30fd8e, + 0x31078c, + 0x310c4b, + 0x310f0e, + 0x31128c, + 0x31474a, + 0x31698c, + 0x76316c8a, + 0x317489, + 0x31af4a, + 0x31b1ca, + 0x31b44b, + 0x31f60e, + 0x31f991, + 0x328b89, + 0x328dca, + 0x3295cb, + 0x32a84a, + 0x32b316, + 0x32e14b, + 0x32f10a, + 0x32f50a, + 0x33084b, + 0x333449, + 0x337109, + 0x337d4d, + 0x33870b, + 0x33978b, 0x33a14b, - 0x33ac8c, - 0x33c3cb, - 0x33e00b, - 0x33f64b, - 0x34490b, - 0x34538f, - 0x34574b, - 0x34600a, - 0x346709, - 0x346b49, - 0x34808b, - 0x34834e, - 0x34bfcb, - 0x34cd8f, - 0x34ed8b, - 0x34f04b, - 0x34f30b, - 0x34f74a, - 0x353249, - 0x35624f, - 0x35ce4c, - 0x35d34c, - 0x35de0e, - 0x35e48f, - 0x35e84e, - 0x35fa90, - 0x35fe8f, - 0x3608ce, - 0x3617cc, - 0x361ad2, - 0x36b751, - 0x36bd0e, - 0x36c14e, - 0x36c68e, - 0x36ca0f, - 0x36cdce, - 0x36d153, - 0x36d611, - 0x36da4e, - 0x36decc, - 0x36e2d3, - 0x36f650, - 0x36ff0c, - 0x37020c, - 0x3706cb, - 0x37168e, - 0x371f8b, - 0x3723cb, - 0x373b0c, - 0x37acca, - 0x37b50c, - 0x37b80c, - 0x37bb09, - 0x37cf0b, - 0x37d1c8, - 0x37d3c9, - 0x37d3cf, - 0x37ed0b, - 0x37fa0a, - 0x380fcc, - 0x382e49, - 0x383208, - 0x38374b, - 0x383e4b, - 0x384c8a, - 0x384f0b, - 0x38544c, - 0x385e08, - 0x38910b, - 0x38ba0b, - 0x38fc4b, - 0x391a4b, - 0x39a98b, - 0x39ac49, - 0x39b18d, - 0x3a004a, - 0x3a0f97, - 0x3a2898, - 0x3a5bc9, - 0x3a7b4b, - 0x3a9414, - 0x3a990b, - 0x3a9e8a, - 0x3aa30a, - 0x3aa58b, - 0x3ab590, - 0x3ab991, - 0x3ac48a, - 0x3ad88d, - 0x3adf8d, - 0x3b328b, - 0x3b4506, - 0x221b43, - 0x6bb99283, - 0x323dc6, - 0x28b6c5, - 0x2c55c7, - 0x33d7c6, - 0x1617982, - 0x2b0d49, - 0x29ed04, - 0x2cfe48, - 0x242743, - 0x2e5f47, - 0x230902, - 0x2acbc3, - 0x6be006c2, - 0x2c0586, - 0x2c17c4, - 0x307c84, - 0x236c43, - 0x236c45, - 0x6c6ff382, - 0x6caa8004, - 0x26f7c7, - 0x16ce2c2, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x2025c3, - 0x200882, - 0x880c8, - 0x216582, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x217643, - 0x317416, - 0x31a5d3, - 0x3492c9, - 0x3aad88, - 0x3a6389, - 0x2fa5c6, - 0x32c750, - 0x21d6d3, - 0x200b08, - 0x25aa47, - 0x274ec7, - 0x29cb4a, - 0x2f7989, - 0x3336c9, - 0x28a70b, - 0x325506, - 0x31cf8a, - 0x223586, - 0x29e903, - 0x28e085, - 0x217188, - 0x2c7bcd, - 0x357c4c, - 0x38e487, - 0x3025cd, - 0x3a8204, - 0x23214a, - 0x232a8a, - 0x232f4a, - 0x21d9c7, - 0x23cfc7, - 0x23f644, - 0x239506, - 0x3258c4, - 0x2ec848, - 0x25f709, - 0x2b83c6, - 0x2b83c8, - 0x2423cd, - 0x2bf489, - 0x378cc8, - 0x241f07, - 0x2fe78a, - 0x24a4c6, - 0x25a047, - 0x2cdac4, - 0x240d07, - 0x30130a, - 0x3397ce, - 0x255805, - 0x2fcd4b, - 0x277a09, - 0x223349, - 0x2a2087, - 0x358b0a, - 0x201c87, - 0x39fc89, - 0x358108, - 0x369c4b, - 0x2cf145, - 0x2e0e0a, - 0x2a37c9, - 0x30f54a, - 0x2c1dcb, - 0x240c0b, - 0x28a495, - 0x2d5d45, - 0x241f85, - 0x2e2f4a, - 0x215cca, - 0x310c47, - 0x220683, - 0x29b9c8, - 0x2cb14a, - 0x224ec6, - 0x23db49, - 0x25f008, - 0x2d5204, - 0x22fb09, - 0x2b7b88, - 0x32c247, - 0x276486, - 0x2a4887, - 0x28fd87, - 0x23f085, - 0x25564c, - 0x252cc5, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x216582, - 0x22d183, - 0x238483, - 0x2025c3, - 0x2264c3, - 0x22d183, - 0x238483, - 0x223b43, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x880c8, - 0x216582, - 0x201a42, - 0x233182, - 0x201982, - 0x204c02, - 0x293d42, - 0x462d183, - 0x2343c3, - 0x211cc3, - 0x21eb03, - 0x202243, - 0x211003, - 0x238483, - 0x2264c3, - 0x20b443, - 0x880c8, - 0x335d44, - 0x24f007, - 0x251fc3, - 0x231404, - 0x214bc3, - 0x282343, - 0x21eb03, - 0x16e747, - 0x200882, - 0x123ac3, - 0x5a16582, - 0x86a0d, - 0x233182, - 0x1604, - 0x201502, - 0x5e01508, - 0xe26c4, - 0x880c8, - 0x140de82, - 0x14fa2c6, - 0x230983, - 0x316403, - 0x662d183, - 0x232144, - 0x6a343c3, - 0x6e1eb03, - 0x2082c2, - 0x201604, - 0x238483, - 0x212ec3, - 0x202282, - 0x2264c3, - 0x21ed42, - 0x2e86c3, - 0x201bc2, - 0x29c743, - 0x22d743, - 0x204702, - 0x880c8, - 0x230983, - 0x212ec3, - 0x202282, - 0x2e86c3, - 0x201bc2, - 0x29c743, - 0x22d743, - 0x204702, - 0x2e86c3, - 0x201bc2, - 0x29c743, - 0x22d743, - 0x204702, - 0x22d183, - 0x323ac3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x202243, - 0x211003, - 0x212444, - 0x238483, - 0x2264c3, - 0x202002, - 0x21bd03, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x323ac3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x238483, - 0x2264c3, - 0x2e9cc5, - 0x221e42, - 0x200882, - 0x880c8, - 0x1462d48, - 0x21eb03, - 0x225b41, - 0x20fd41, - 0x20c401, - 0x20c041, - 0x226fc1, - 0x26f541, - 0x252041, - 0x225c41, - 0x2d5901, - 0x2ff8c1, + 0x33a609, + 0x33ac4e, + 0x33b30a, + 0x33fc8a, + 0x33ffca, + 0x340b8b, + 0x3413cb, + 0x34168d, + 0x342c0d, + 0x343290, + 0x34374b, + 0x34408c, + 0x34480b, + 0x34644b, + 0x34798b, + 0x34c00b, + 0x34ca8f, + 0x34ce4b, + 0x34d94a, + 0x34e689, + 0x34f409, + 0x34f8cb, + 0x34fb8e, + 0x35434b, + 0x35574f, + 0x35864b, + 0x35890b, + 0x358bcb, + 0x3590ca, + 0x35c609, + 0x35f34f, + 0x36424c, + 0x36488c, + 0x364d0e, + 0x3653cf, + 0x36578e, + 0x365fd0, + 0x3663cf, + 0x366f4e, + 0x36770c, + 0x367a12, + 0x3689d1, + 0x36988e, + 0x36a04e, + 0x36a58e, + 0x36a90f, + 0x36acce, + 0x36b053, + 0x36b511, + 0x36b94e, + 0x36bdcc, + 0x36d913, + 0x36e210, + 0x36ea8c, + 0x36ed8c, + 0x36f24b, + 0x3703ce, + 0x370c8b, + 0x3715cb, + 0x37258c, + 0x37814a, + 0x37850c, + 0x37880c, + 0x378b09, + 0x37bb8b, + 0x37be48, + 0x37c049, + 0x37c04f, + 0x37d98b, + 0x7677eb8a, + 0x381fcc, + 0x383189, + 0x383608, + 0x38380b, + 0x383c8b, + 0x38480a, + 0x384a8b, + 0x38540c, + 0x386008, + 0x388d4b, + 0x38b44b, + 0x39484b, + 0x3958cb, + 0x39e6cb, + 0x39e989, + 0x39eecd, + 0x3a464a, + 0x3a5597, + 0x3a6bd8, + 0x3a96c9, + 0x3ab30b, + 0x3ac814, + 0x3acd0b, + 0x3ad28a, + 0x3aea0a, + 0x3aec8b, + 0x3b4250, + 0x3b4651, + 0x3b4d0a, + 0x3b5b4d, + 0x3b624d, + 0x3ba3cb, + 0x3bbd46, + 0x20ff83, + 0x76b80483, + 0x22cdc6, + 0x247645, + 0x27a007, + 0x31bd46, + 0x1656682, + 0x2ad9c9, + 0x31a7c4, + 0x2dacc8, + 0x232b43, + 0x309387, + 0x234f42, + 0x2ac243, + 0x76e07b02, + 0x2c7406, + 0x2c9884, + 0x369f44, + 0x390143, + 0x390145, + 0x776c3d82, + 0x77aa6cc4, + 0x270787, + 0x77e4a282, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x204e83, + 0x205702, + 0x16d208, + 0x2099c2, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x214843, + 0x324556, + 0x325793, + 0x26f749, + 0x3b0688, + 0x379509, + 0x304906, + 0x3389d0, + 0x254b53, + 0x38e508, + 0x28ea47, + 0x36c747, + 0x284d0a, + 0x372349, + 0x38d849, + 0x28decb, + 0x349846, + 0x379b4a, + 0x220d86, + 0x31a3c3, + 0x2d48c5, + 0x35e288, + 0x23888d, + 0x2b984c, + 0x2de0c7, + 0x30b00d, + 0x2142c4, + 0x22fd8a, + 0x230d4a, + 0x23120a, + 0x2099c7, + 0x23af07, + 0x23d844, + 0x22e206, + 0x20c144, + 0x2b4148, + 0x22cbc9, + 0x2b0a86, + 0x2b0a88, + 0x2422cd, + 0x2c6309, + 0x3ac008, + 0x264a07, + 0x2f1f0a, + 0x24c506, + 0x2580c7, + 0x2cc3c4, + 0x23f287, + 0x309c0a, + 0x3ae54e, + 0x21d205, + 0x3b4a4b, + 0x331a09, + 0x217649, + 0x21c747, + 0x2a34ca, + 0x20ac87, + 0x2fb1c9, + 0x38f0c8, + 0x3533cb, + 0x2da905, + 0x3a430a, + 0x266e09, + 0x26d2ca, + 0x2ca6cb, + 0x23f18b, + 0x28dc55, + 0x2e3b85, + 0x264a85, + 0x2ee0ca, + 0x3945ca, + 0x331787, + 0x21da83, + 0x2904c8, + 0x2d2c4a, + 0x223006, + 0x24dfc9, + 0x265c88, + 0x2d7984, + 0x2aa289, + 0x2bfa08, + 0x29fec7, + 0x3630c6, + 0x2ebe07, + 0x289a47, + 0x23d005, + 0x21d04c, + 0x250bc5, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2099c2, + 0x2a84c3, + 0x205503, + 0x204e83, + 0x200983, + 0x2a84c3, + 0x205503, + 0x25e983, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x16d208, + 0x2099c2, + 0x2006c2, + 0x231442, + 0x206502, + 0x200542, + 0x2decc2, + 0x46a84c3, + 0x232403, + 0x2163c3, + 0x2e9dc3, + 0x244183, + 0x209703, + 0x2d47c6, + 0x205503, + 0x200983, + 0x233183, + 0x16d208, + 0x31ae44, + 0x202107, + 0x392403, + 0x2ae584, + 0x22e043, + 0x21c7c3, + 0x2e9dc3, + 0x16fc07, + 0x205702, + 0x18d2c3, + 0x5a099c2, + 0x88f4d, + 0x8928d, + 0x231442, + 0x1b1384, + 0x200442, + 0x5fb1288, + 0xed844, + 0x16d208, + 0x1411d82, + 0x15054c6, + 0x231783, + 0x200c03, + 0x66a84c3, + 0x22fd84, + 0x6a32403, + 0x6ee9dc3, + 0x202bc2, + 0x3b1384, + 0x205503, + 0x2f78c3, + 0x203ec2, + 0x200983, + 0x21b5c2, + 0x2f2443, + 0x203082, + 0x211643, + 0x265d43, + 0x200202, + 0x16d208, + 0x231783, + 0x2f78c3, + 0x203ec2, + 0x2f2443, + 0x203082, + 0x211643, + 0x265d43, + 0x200202, + 0x2f2443, + 0x203082, + 0x211643, + 0x265d43, + 0x200202, + 0x2a84c3, + 0x38d2c3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x244183, + 0x209703, + 0x211cc4, + 0x205503, + 0x200983, + 0x20f942, + 0x201303, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x38d2c3, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x205503, + 0x200983, + 0x373605, + 0x212982, + 0x205702, + 0x16d208, + 0x1456108, + 0x2e9dc3, + 0x2274c1, + 0x202901, + 0x202941, + 0x23ad81, + 0x23ad01, + 0x30aec1, + 0x23aec1, + 0x2275c1, + 0x2eea41, + 0x30afc1, 0x200141, 0x200001, - 0x880c8, - 0x200481, - 0x200741, + 0x129845, + 0x16d208, + 0x201ec1, + 0x200701, + 0x200301, 0x200081, - 0x200c81, - 0x2007c1, - 0x200901, + 0x200181, + 0x200401, 0x200041, - 0x204281, - 0x2001c1, - 0x2000c1, + 0x201181, + 0x200101, + 0x200281, + 0x200e81, + 0x2008c1, + 0x200441, + 0x201301, + 0x206ec1, 0x200341, - 0x200ac1, - 0x201501, - 0x2014c1, - 0x204101, - 0x200b81, - 0x200241, - 0x200a01, + 0x200801, 0x2002c1, - 0x200281, - 0x204701, - 0x20dec1, - 0x200781, - 0x200641, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x201502, - 0x2264c3, - 0x16e747, - 0x131ac7, - 0x1e1c6, - 0x1736ca, - 0x85c48, - 0x53188, - 0x53547, - 0x50d06, - 0xce6c5, - 0x51f05, - 0x161186, - 0x155646, - 0x224104, - 0x322707, - 0x880c8, - 0x22d684, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x21eb03, - 0x202243, - 0x211003, - 0x238483, - 0x2264c3, - 0x221e42, - 0x2be043, - 0x2f5003, - 0x20b283, - 0x202e02, - 0x248083, - 0x204803, - 0x206e83, + 0x2000c1, + 0x201501, + 0x200201, + 0x200bc1, + 0x2005c1, + 0x201cc1, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x200442, + 0x200983, + 0x16fc07, + 0x9807, + 0x1cdc6, + 0x13ef8a, + 0x88648, + 0x51d48, + 0x52107, + 0x191106, + 0xd8c05, + 0x192345, + 0x5d306, + 0x125c86, + 0x25ef44, + 0x311547, + 0x16d208, + 0x2d5f04, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x2e9dc3, + 0x244183, + 0x209703, + 0x205503, + 0x200983, + 0x212982, + 0x2c5983, + 0x2bb143, + 0x32c243, + 0x2022c2, + 0x25d183, + 0x2030c3, + 0x204903, 0x200001, - 0x207043, - 0x26ff44, - 0x324dc3, - 0x30c683, - 0x21dec3, - 0x379b43, - 0xaa2d183, - 0x2374c4, - 0x21de83, - 0x232383, - 0x2343c3, - 0x234103, - 0x208143, - 0x2a3ec3, - 0x30c603, - 0x228103, - 0x212103, - 0x24c1c4, - 0x23aa82, - 0x252a43, - 0x2585c3, - 0x272bc3, - 0x250b43, - 0x24f8c3, - 0x21eb03, - 0x2db983, - 0x220883, - 0x201603, - 0x210483, - 0x2f2903, - 0xaefe5c3, - 0x385d43, - 0x200983, - 0x2348c3, - 0x211003, - 0x21e442, - 0x286fc3, - 0x238483, - 0x16025c3, - 0x217e83, - 0x21da43, - 0x29af43, - 0x2264c3, - 0x30e803, - 0x21bd03, - 0x2ad283, - 0x2f6a83, - 0x2e8883, - 0x21d445, - 0x215cc3, - 0x2e88c3, - 0x39c083, - 0x218744, - 0x25b343, - 0x22e8c3, - 0x277c03, - 0x20b443, - 0x221e42, - 0x23a183, - 0x2f9b84, - 0x2ae9c4, - 0x244843, - 0x880c8, - 0x882, - 0x1002, - 0x2e02, - 0x1482, - 0x2d42, - 0x4c2, - 0x44682, - 0x202, - 0x1f82, - 0x982, - 0x43742, - 0xe842, - 0xe02, - 0x7a82, - 0x93d42, - 0x6d42, - 0x26282, - 0x7442, - 0x1f882, - 0x8b02, - 0x4b42, - 0x1c882, + 0x2dc745, + 0x206b43, + 0x221344, + 0x26cc83, + 0x318ec3, + 0x21b103, + 0x35ff43, + 0xaaa84c3, + 0x235ac4, + 0x23dbc3, + 0x21cc43, + 0x21b0c3, + 0x22ffc3, + 0x232403, + 0x232143, + 0x2459c3, + 0x2a2703, + 0x318e43, + 0x2344c3, + 0x202643, + 0x24ce44, + 0x24e347, + 0x248902, + 0x250943, + 0x256303, + 0x273ac3, + 0x390f43, + 0x2025c3, + 0xaee9dc3, + 0x20bec3, + 0x2143c3, + 0x24a5c3, + 0x328085, + 0x209d43, + 0x2fa383, + 0xb21f903, + 0x365f03, + 0x20d543, + 0x227f83, + 0x209703, + 0x228502, + 0x27d2c3, + 0x205503, + 0x1604e83, + 0x224a43, + 0x209a43, + 0x204a03, + 0x200983, + 0x35fe83, + 0x20f943, + 0x201303, + 0x2efe83, + 0x2ff903, + 0x2f2603, + 0x204405, + 0x23e743, + 0x285346, + 0x2f2643, + 0x36cf43, + 0x3759c4, + 0x2d9083, + 0x2284c3, + 0x267ec3, + 0x233183, + 0x212982, + 0x22d543, + 0x3024c3, + 0x304144, + 0x377404, + 0x20ce83, + 0x16d208, + 0x205702, + 0x200242, + 0x2022c2, + 0x201702, + 0x202a42, + 0x206c02, + 0x245482, + 0x2007c2, + 0x20d882, + 0x200e82, + 0x20b102, + 0x20e602, + 0x2675c2, + 0x2056c2, + 0x2decc2, + 0x2013c2, + 0x2069c2, + 0x201302, + 0x2172c2, + 0x202482, + 0x200482, + 0x219382, + 0x202782, + 0x209842, + 0x2027c2, + 0x222702, + 0x203b42, + 0x5702, + 0x242, + 0x22c2, + 0x1702, + 0x2a42, + 0x6c02, + 0x45482, + 0x7c2, + 0xd882, + 0xe82, + 0xb102, + 0xe602, + 0x675c2, + 0x56c2, + 0xdecc2, 0x13c2, - 0x17642, - 0x1402, - 0xdfc2, - 0x6ec2, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x216582, - 0x2264c3, - 0xc22d183, - 0x21eb03, - 0x211003, - 0x223b42, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x6c2, - 0x202f02, - 0x223f42, - 0x880c8, - 0x16582, - 0x235f82, - 0x203142, - 0x23e682, - 0x201642, - 0x208382, - 0x51f05, - 0x2029c2, - 0x202282, - 0x203382, - 0x205d02, - 0x206d42, - 0x385542, - 0x201882, - 0x227642, - 0x16e747, - 0x119d4d, - 0xeafc9, - 0x47b8b, - 0xd1e88, - 0x13bc89, - 0x21eb03, - 0x880c8, - 0x880c8, - 0x53e06, - 0x200882, - 0x224104, - 0x216582, - 0x22d183, - 0x201a42, - 0x2343c3, - 0x201f82, - 0x22d684, - 0x202243, - 0x209782, - 0x238483, - 0x201502, - 0x2264c3, - 0x241f86, - 0x30d40f, - 0x6fef43, - 0x880c8, - 0x216582, - 0x211cc3, - 0x21eb03, - 0x211003, - 0x1568ecb, - 0x16e747, - 0x216582, - 0x22d183, - 0x21eb03, - 0x238483, - 0x200882, + 0x69c2, + 0x1302, + 0x172c2, + 0x2482, + 0x482, + 0x19382, + 0x2782, + 0x9842, + 0x27c2, + 0x22702, + 0x3b42, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2099c2, + 0x200983, + 0xc6a84c3, + 0x2e9dc3, + 0x209703, + 0x21a2c2, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x7b02, + 0x201bc2, + 0x153f3c5, + 0x25ed82, + 0x16d208, + 0x99c2, + 0x20c182, + 0x208d02, + 0x2024c2, + 0x209642, + 0x208442, + 0x192345, + 0x2038c2, + 0x203ec2, + 0x2023c2, + 0x204dc2, + 0x2013c2, + 0x385502, 0x201102, - 0x2093c2, - 0xfa2d183, - 0x23e4c2, - 0x2343c3, - 0x2475c2, - 0x227982, - 0x21eb03, - 0x21c2c2, - 0x301dc2, - 0x2a7fc2, - 0x201142, - 0x289f82, - 0x206982, - 0x200902, - 0x205e82, - 0x26a242, - 0x204d42, - 0x2ad802, - 0x230cc2, - 0x225a02, - 0x228f02, - 0x211003, - 0x203042, - 0x238483, - 0x2425c2, - 0x267c02, - 0x2264c3, - 0x248102, - 0x217642, - 0x20a442, - 0x202482, - 0x2168c2, - 0x2d29c2, - 0x210442, - 0x242d42, - 0x221bc2, - 0x301e0a, - 0x34600a, - 0x38074a, - 0x3b4682, - 0x20d802, - 0x23c282, - 0xff49009, - 0x103a418a, - 0x1042fe87, - 0xc002, - 0x1a418a, - 0x245dc4, - 0x10e2d183, - 0x2343c3, - 0x247344, - 0x21eb03, - 0x201604, - 0x202243, - 0x211003, - 0x238483, - 0x2025c3, - 0x2264c3, - 0x215cc3, - 0x223ec3, - 0x880c8, - 0x1450c84, - 0x50505, - 0x4e80a, - 0x109842, - 0x18b406, - 0x162d51, - 0x11749009, - 0x163187, - 0x4802, - 0x1aa80a, - 0xdb7c7, - 0x880c8, - 0xfd948, - 0xe707, - 0x1281c44b, - 0x15802, - 0x1a6707, - 0x1b1a4a, - 0x10728f, - 0x131b4f, - 0x1dec2, - 0x16582, - 0xa3e08, - 0xea70a, - 0x167408, - 0xf82, - 0x10700f, - 0x124e4b, - 0x2988, - 0x16e847, - 0x16a8a, - 0xae14b, - 0x112089, - 0x173507, - 0xf424c, - 0x10ec87, - 0xd060a, - 0x132d48, - 0x8e28e, - 0x553ce, - 0xdb60b, - 0x110d8b, - 0xead0b, - 0x1e1c9, - 0x1fb8b, - 0x2398d, - 0x260cb, - 0x2708d, - 0x2c90d, - 0x2ec8a, - 0xae80b, - 0xc6fcb, - 0xe82c5, - 0x10a710, - 0x8128f, - 0xb74f, - 0x2a24d, - 0x6fd50, - 0xd82, - 0x12fa2488, - 0x131948, - 0x132e4bc5, - 0x4668b, - 0x52088, - 0x110f4a, - 0x58d89, + 0x236582, + 0x16fc07, + 0x1b270d, + 0xd8c89, + 0x56e8b, + 0xdd608, + 0x53dc9, + 0xfacc6, + 0x2e9dc3, + 0x16d208, + 0x16d208, + 0x52e06, + 0x1a78c7, + 0x205702, + 0x25ef44, + 0x2099c2, + 0x2a84c3, + 0x2006c2, + 0x232403, + 0x20d882, + 0x2d5f04, + 0x244183, + 0x249a02, + 0x205503, + 0x200442, + 0x200983, + 0x264a86, + 0x31ba0f, + 0x70a403, + 0x16d208, + 0x2099c2, + 0x2163c3, + 0x2e9dc3, + 0x209703, + 0x1526f4b, + 0xd9888, + 0x142b68a, + 0x14fa807, + 0xda405, + 0x16fc07, + 0x2099c2, + 0x2a84c3, + 0x2e9dc3, + 0x205503, + 0x205702, + 0x20c202, + 0x20bb42, + 0xfea84c3, + 0x23c042, + 0x232403, + 0x209d02, + 0x221402, + 0x2e9dc3, + 0x228782, + 0x251442, + 0x2a6c82, + 0x200f82, + 0x28d742, + 0x203442, + 0x202e42, + 0x267e42, + 0x24ecc2, + 0x211ec2, + 0x2ad882, + 0x2eab02, + 0x2182c2, + 0x2ad342, + 0x209703, + 0x20ec42, + 0x205503, + 0x200e42, + 0x281702, + 0x200983, + 0x25d202, + 0x209842, + 0x218942, + 0x202e02, + 0x200c42, + 0x2de402, + 0x20fe82, + 0x250b82, + 0x220642, + 0x30d44a, + 0x34d94a, + 0x37fc4a, + 0x3bbec2, + 0x202cc2, + 0x2058c2, + 0x1026e389, + 0x1072510a, + 0x1594ac7, + 0x1410843, + 0x24d50, + 0x50642, + 0x2030c4, + 0x10ea84c3, + 0x232403, + 0x249944, + 0x2e9dc3, + 0x3b1384, + 0x244183, + 0x209703, + 0x205503, + 0xdc105, + 0x204e83, + 0x200983, + 0x23e743, + 0x25ed03, + 0x16d208, + 0x1591084, + 0x18ff45, + 0x1a768a, + 0x116902, + 0x18ae46, + 0xaf551, + 0x1166e389, + 0x18ffc8, + 0x13f9c8, + 0xff387, + 0xec2, + 0x12984b, + 0x1a5b0a, + 0x21347, + 0x16d208, + 0x108f08, + 0xe4c7, + 0x17818f4b, + 0x1b887, + 0x1c02, + 0x6c707, + 0x1a1ca, + 0x13f6cf, + 0x988f, + 0x1b102, + 0x99c2, + 0xa2648, + 0x19e30a, + 0x1320c8, + 0xdc2, + 0x13f44f, + 0x9e18b, + 0x68bc8, + 0x38f47, + 0x388a, + 0x304cb, + 0x4efc9, + 0x11dd07, + 0xfc34c, + 0x2c07, + 0x19b40a, + 0xd4ac8, + 0x1a3cce, + 0x1cdce, + 0x2118b, + 0x26ccb, + 0x27d4b, + 0x2c009, + 0x2da0b, + 0x5e7cd, + 0x85acb, + 0xdfc8d, + 0xe000d, + 0xe164a, + 0x17724b, + 0x1ae0cb, + 0x31c45, + 0x1424d50, + 0x12618f, + 0x1268cf, + 0xe2c0d, + 0x1b8f90, + 0x2bb82, + 0x17fb0388, + 0x9688, + 0x182ee705, + 0x48fcb, + 0x117090, + 0x4fdc8, + 0x26e8a, + 0x56b49, + 0x5cb47, + 0x5ce87, + 0x5d047, + 0x5f507, 0x60587, - 0x608c7, - 0x60a87, - 0x611c7, - 0x629c7, - 0x62f47, - 0x636c7, - 0x63d47, - 0x64307, - 0x644c7, - 0x66087, - 0x66247, - 0x66407, - 0x665c7, - 0x668c7, - 0x66e07, - 0x67a47, - 0x67f07, - 0x68707, - 0x69207, - 0x693c7, - 0x699c7, - 0x69e87, - 0x6a087, - 0x6a347, - 0x6a507, - 0x6a6c7, - 0x6ac07, - 0x6b4c7, - 0x6bf87, - 0x6c687, - 0x6c947, - 0x6ce07, - 0x6cfc7, - 0x6d347, - 0x6e3c7, - 0x6ea07, - 0x6ee07, - 0x6efc7, - 0x6f187, - 0x6f5c7, - 0x70307, - 0x70607, - 0x70c07, - 0x70dc7, - 0x71147, - 0x71587, - 0xd382, - 0x33d8a, - 0xf9dc7, - 0x134c87cb, - 0x14c87d6, - 0x18351, - 0xdfb8a, - 0xa3c8a, - 0x53e06, - 0xc114b, - 0xb2c2, - 0x31ad1, - 0x959c9, - 0x90ac9, + 0x60b87, + 0x61387, + 0x617c7, + 0x61cc7, + 0x61fc7, + 0x62fc7, + 0x63187, + 0x63347, + 0x63507, + 0x63807, + 0x64007, + 0x64c87, + 0x65407, + 0x66547, + 0x66b07, + 0x66cc7, + 0x67047, + 0x67487, + 0x67687, + 0x67947, + 0x67b07, + 0x67cc7, + 0x67f87, + 0x68247, + 0x68f07, + 0x69607, + 0x698c7, + 0x6a047, + 0x6a207, + 0x6a607, + 0x6aec7, + 0x6b147, + 0x6b547, + 0x6b707, + 0x6b8c7, + 0x70587, + 0x71387, + 0x718c7, + 0x71e47, + 0x72007, + 0x72387, + 0x728c7, + 0xdb42, + 0xbbb0a, + 0xffb87, + 0x184cfa0b, + 0x14cfa16, + 0x17e91, + 0x1082ca, + 0xa24ca, + 0x52e06, + 0xd0f8b, 0x5e82, - 0x9c34a, - 0xa5449, - 0xa5c8f, - 0xa688e, - 0xa7188, - 0xf1c2, - 0x169a89, - 0x8498e, - 0xac64c, - 0xd400f, - 0x194a8e, - 0x1098c, - 0x15309, - 0x16451, - 0x19a48, - 0x2bd52, - 0x2e5cd, - 0x393cd, - 0x13ff8b, - 0x179d95, - 0x33c49, - 0x5488a, - 0x58749, - 0x5fe90, - 0x60f0b, - 0x6e54f, - 0x71d0b, - 0x756cc, - 0x787d0, - 0x8660a, - 0x86e8d, - 0x14ea0e, - 0x18004a, - 0x8c7cc, - 0x8fa54, - 0x95651, - 0x98f8b, - 0x9b54f, - 0xab6cd, - 0xabfce, - 0x12c10c, - 0x15710c, - 0xdc8cb, - 0xeef8e, - 0xfb250, - 0x10938b, - 0x11270d, - 0x15f28f, - 0xb504c, - 0xb824e, - 0xb8a51, - 0xba84c, - 0x1362c7, - 0x11c60d, - 0xbe94c, - 0xc4d90, - 0xd35cd, - 0xe7847, - 0xec4d0, - 0xf0688, - 0xf124b, - 0x17318f, - 0x2b848, - 0xdfd8d, - 0x1763d0, - 0x13aaf9c6, - 0xb0bc3, - 0x9682, - 0x2cd09, - 0x551ca, - 0xf9bc6, - 0x13cd5389, - 0x124c3, - 0x109f11, - 0x9f89, - 0xcd5c7, - 0x10710b, - 0xd2d10, - 0xd31cc, - 0xd47c5, - 0x11ab08, - 0x19be4a, - 0x122b07, - 0x25c2, - 0x5160a, - 0x1694c9, - 0xa62ca, - 0x1abe8f, - 0x4084b, - 0x10760c, - 0x1078d2, - 0xb5485, - 0x15d98a, - 0x142e1fc5, - 0x19900c, - 0x1157c3, - 0x185542, - 0xe8e4a, - 0x108548, - 0x163407, - 0x4b42, - 0x7982, - 0x1bc2, - 0x129e10, - 0x1402, - 0x3074f, - 0x161186, - 0x1113ce, - 0xe3a4b, - 0x180248, - 0xc9a89, - 0x17e4d2, - 0x178b8d, - 0x45e88, - 0x47a49, - 0x485cd, - 0x4a189, - 0x4a64b, - 0x4ac08, - 0x4e648, - 0x53f48, - 0x559c9, - 0x55bca, - 0x57f4c, - 0xe31ca, - 0xf6ac7, - 0xdfcd, - 0xeb88b, - 0x9eb0c, - 0x18b610, - 0x3282, - 0xc570d, - 0x6202, + 0x2f711, + 0x157789, + 0x942c9, + 0x67e42, + 0x9f54a, + 0xa4909, + 0xa504f, + 0xa5a8e, + 0xa6388, + 0x17f42, + 0x18ef09, + 0x17f08e, + 0xf80cc, + 0xdf20f, + 0x198f4e, + 0xc84c, + 0x11809, + 0x13491, + 0x222c8, + 0x24512, + 0x281cd, + 0x2e0cd, + 0x8618b, + 0xbadd5, + 0xbb9c9, + 0xe268a, + 0x120689, + 0x160310, + 0x39a0b, + 0x4480f, + 0x5648b, + 0x58a8c, + 0x70f90, + 0x7beca, + 0x7d18d, + 0x80d4e, + 0x86cca, + 0x8720c, + 0x89714, + 0x157411, + 0x1a200b, + 0x9004f, + 0x9320d, + 0x9a00e, + 0x9fd8c, + 0xa1acc, + 0xaae8b, + 0xab18e, + 0xab990, + 0x154c0b, + 0x1160cd, + 0x10e80f, + 0x17e50c, + 0xb090e, + 0xb2391, + 0xb3ecc, + 0xc00c7, + 0xc064d, + 0xc0fcc, + 0xc1dd0, + 0x102c8d, + 0x12bc87, + 0xc7750, + 0xd3748, + 0xd51cb, + 0x12aa8f, + 0x17e248, + 0x1084cd, + 0x14d550, + 0x18ba60c6, + 0xaff43, + 0xbe02, + 0x11e309, + 0x5394a, + 0x104186, + 0x18cd9009, + 0x11d43, + 0xd6191, + 0xd65c9, + 0xd7607, + 0xaf6cb, + 0xde6d0, + 0xdeb8c, + 0xdf6c5, + 0x18f248, + 0x19f94a, + 0x111947, 0x33c2, - 0xf6a0a, - 0xdfa8a, - 0xe5e4b, - 0xc718c, - 0xfd6ce, - 0x165d0d, - 0xf3dc8, - 0x6c2, - 0x11a0c0ce, - 0x11c2fe87, - 0x121aa0c9, - 0x11583, - 0x127117cc, - 0xc002, - 0x50111, - 0xc011, - 0xa1091, - 0x81ed1, - 0x11170f, - 0x11dfcc, - 0x121acd, - 0x123f0d, - 0x142615, - 0x14b18c, - 0x159590, - 0xfa8c, - 0x5274c, - 0x47109, - 0xc002, - 0x501ce, - 0xc0ce, - 0xa114e, - 0x81f8e, - 0x1117cc, - 0x11e089, - 0x14b249, - 0x14280d, - 0xfb49, - 0x52809, - 0x1267c3, - 0x940c3, - 0xc002, - 0x162d45, - 0x1aa804, - 0xdf704, - 0x127244, - 0x17f904, - 0x17c084, - 0x163184, - 0x144bdc3, - 0x140de83, - 0x19fd04, - 0x1573dc3, - 0xd82, - 0x165d03, - 0x200882, - 0x216582, - 0x201a42, - 0x206ac2, - 0x201f82, - 0x201502, - 0x201bc2, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201603, - 0x238483, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x238483, - 0x2264c3, - 0x1d003, - 0x21eb03, - 0x200882, - 0x323ac3, - 0x15e2d183, - 0x330d47, - 0x21eb03, - 0x332683, - 0x212444, - 0x238483, - 0x2264c3, - 0x24690a, - 0x241f85, - 0x21bd03, - 0x203e42, - 0x880c8, - 0x880c8, - 0x16582, - 0x113682, - 0x1a6845, - 0x880c8, - 0x2d183, - 0x77947, - 0x1161cf, - 0xf9c44, - 0x11220a, - 0xac287, - 0xf78a, - 0x93e8a, - 0xa660a, - 0xf9bc6, - 0x27ca, - 0xccd, - 0x123ac3, - 0x880c8, - 0x16582, - 0x47344, - 0x67683, - 0xe9cc5, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x204803, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x290c83, - 0x223ec3, - 0x204803, - 0x224104, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x232dc3, - 0x22d183, - 0x2343c3, - 0x206ac3, - 0x211cc3, - 0x21eb03, - 0x201604, - 0x36b683, - 0x2348c3, - 0x211003, - 0x238483, - 0x2264c3, - 0x21bd03, - 0x3b0343, - 0x1822d183, - 0x2343c3, - 0x244d43, - 0x21eb03, - 0x275803, - 0x2348c3, - 0x2264c3, - 0x207443, - 0x27f5c4, - 0x880c8, - 0x18a2d183, - 0x2343c3, - 0x2a7243, - 0x21eb03, - 0x211003, - 0x212444, - 0x238483, - 0x2264c3, - 0x220703, - 0x880c8, - 0x1922d183, - 0x2343c3, - 0x211cc3, - 0x2025c3, - 0x2264c3, - 0x880c8, - 0x142fe87, - 0x323ac3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x212444, - 0x238483, - 0x2264c3, - 0x16e747, - 0x176c84, - 0x1462d48, - 0xa7dcd, - 0x3256c5, - 0x880c8, - 0x742, - 0x35bc3, - 0xe6786, - 0x307e48, - 0x3afd07, - 0x224104, - 0x355346, - 0x359446, - 0x880c8, - 0x301043, - 0x20b149, - 0x2b46d5, - 0xb46df, - 0x22d183, - 0x32f8d2, - 0xfea86, - 0x13af45, - 0x110f4a, - 0x58d89, - 0x32f68f, - 0x22d684, - 0x331145, - 0x2f26d0, - 0x3aaf87, - 0x2025c3, - 0x32d208, - 0x2aeeca, - 0x2014c4, - 0x2e1a03, - 0x241f86, - 0x203e42, - 0x38660b, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x2e6a83, - 0x216582, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x332683, - 0x203043, - 0x2264c3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x238483, - 0x2264c3, - 0x200882, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x224104, - 0x22d183, - 0x2343c3, - 0x307b04, - 0x238483, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x220883, - 0x211003, - 0x238483, - 0x2264c3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x251283, - 0x2efc3, - 0x132683, - 0x238483, - 0x2264c3, - 0x301e0a, - 0x31ec09, - 0x33e6cb, - 0x33ed4a, - 0x34600a, - 0x3543cb, - 0x372d8a, - 0x37acca, - 0x38074a, - 0x3809cb, - 0x39bb89, - 0x39d94a, - 0x39e38b, - 0x3a9bcb, - 0x3b2c8a, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x211003, - 0x238483, - 0x2264c3, - 0x37549, - 0x880c8, - 0x22d183, - 0x260584, - 0x214a02, - 0x212444, - 0x226bc5, - 0x204803, - 0x224104, - 0x22d183, - 0x2374c4, - 0x2343c3, - 0x247344, - 0x22d684, - 0x201604, - 0x2348c3, - 0x238483, - 0x2264c3, - 0x28fb85, - 0x232dc3, - 0x21bd03, - 0x25b743, - 0x252dc4, - 0x250bc4, - 0x26dfc5, - 0x880c8, - 0x2f88c4, - 0x208606, - 0x283c04, - 0x216582, - 0x360307, - 0x249c07, - 0x2455c4, - 0x257a05, - 0x2d37c5, - 0x2a9c05, - 0x201604, - 0x318348, - 0x36ed86, - 0x2dbb08, - 0x236f45, - 0x2cf145, - 0x240584, - 0x2264c3, - 0x2e26c4, - 0x353586, - 0x242083, - 0x252dc4, - 0x262c45, - 0x2cfbc4, - 0x365b84, - 0x203e42, - 0x245206, - 0x392446, - 0x2f56c5, - 0x200882, - 0x323ac3, - 0x1f216582, - 0x2358c4, - 0x201f82, - 0x211003, - 0x209f82, - 0x238483, - 0x201502, - 0x217643, - 0x223ec3, - 0x880c8, - 0x880c8, - 0x21eb03, - 0x200882, - 0x1fe16582, - 0x21eb03, - 0x266383, - 0x36b683, - 0x31f984, - 0x238483, - 0x2264c3, - 0x880c8, - 0x200882, - 0x20616582, - 0x22d183, - 0x238483, - 0x2264c3, - 0x4b42, - 0x2019c2, - 0x221e42, - 0x332683, - 0x2db083, - 0x200882, - 0x880c8, - 0x16e747, - 0x216582, - 0x2343c3, - 0x247344, - 0x208f43, - 0x21eb03, - 0x220883, - 0x211003, - 0x238483, - 0x21ab43, - 0x2264c3, - 0x220683, - 0x1244d3, - 0x12f214, - 0x16e747, - 0x15686, - 0x1e1c6, - 0x52fc7, - 0x9f049, - 0x2654a, - 0x85b0d, - 0x119a4c, - 0x29e8a, - 0x51f05, - 0x18bec8, - 0x161186, - 0x155646, - 0x200d82, - 0xde40c, - 0x1aa9c7, - 0x24d11, - 0x22d183, - 0xd0585, - 0x1b4284, - 0x18346, - 0x19f046, - 0x8a24a, - 0xacec3, - 0x9f005, - 0xce83, - 0xc120c, - 0xe5408, - 0x1ad408, - 0xa0288, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, + 0x124a4a, + 0x127549, + 0x35b4a, + 0x8a3cf, + 0x3edcb, + 0x12814c, + 0x169b92, + 0xaea45, + 0x166aca, + 0x192ece45, + 0x18020c, + 0x122843, + 0x185502, + 0xf2bca, + 0x14f3fcc, + 0x1b1a48, + 0xdfe48, + 0x16fb87, + 0x1c42, + 0x3082, + 0x3f590, + 0x27c2, + 0x1ad58f, + 0x5d306, + 0x77ece, + 0xe598b, + 0x86ec8, + 0xd1a49, + 0x17d152, + 0x1abecd, + 0x55b08, + 0x56d49, + 0x572cd, + 0x57b89, + 0x5c58b, + 0x5d848, + 0x61ac8, + 0x628c8, + 0x62b49, + 0x62d4a, + 0x6398c, + 0xe3cca, + 0xff947, + 0x2270d, + 0xf4b4b, + 0x11a5cc, + 0x18b050, + 0xc2, + 0x7a14d, + 0x2dc2, + 0x35482, + 0xff88a, + 0x1081ca, + 0x10928b, + 0x1ae28c, + 0x108c8e, + 0x100cd, + 0x1b3908, + 0x7b02, + 0x11b5ec4e, + 0x1227020e, + 0x12a83a0a, + 0x1336864e, + 0x13b143ce, + 0x1432ee0c, + 0x1594ac7, + 0x1594ac9, + 0x1410843, + 0x14b3054c, + 0x15333209, + 0x15b49dc9, + 0x50642, + 0x18fb51, + 0x70151, + 0x8394d, + 0x17acd1, + 0x114311, + 0x12ed4f, + 0x13048f, + 0x13314c, + 0x149d0c, + 0x1a688d, + 0x1bb815, + 0x5064c, + 0x11f0cc, + 0xe9c50, + 0x11d44c, + 0x12a54c, + 0x15e999, + 0x168399, + 0x16fd99, + 0x175d54, + 0x181ad4, + 0x19b7d4, + 0x19d714, + 0x1ac314, + 0x16250709, + 0x1699ba89, + 0x1731f189, + 0x11e224c9, + 0x50642, + 0x126224c9, + 0x50642, + 0x15e98a, + 0x50642, + 0x12e224c9, + 0x50642, + 0x15e98a, + 0x50642, + 0x136224c9, + 0x50642, + 0x13e224c9, + 0x50642, + 0x146224c9, + 0x50642, + 0x15e98a, + 0x50642, + 0x14e224c9, + 0x50642, + 0x15e98a, + 0x50642, + 0x156224c9, + 0x50642, + 0x15e224c9, + 0x50642, + 0x15e98a, + 0x50642, + 0x166224c9, + 0x50642, + 0x16e224c9, + 0x50642, + 0x176224c9, + 0x50642, + 0x15e98a, + 0x50642, + 0xaf545, + 0x1a5b04, + 0x2bb84, + 0x1aa404, + 0x1a75c4, + 0xc484, + 0x13fc4, + 0x58f44, + 0xff384, + 0x14ab3c3, + 0x143e603, + 0xfb244, + 0x1547c03, + 0x2bb82, + 0x100c3, + 0x205702, + 0x2099c2, + 0x2006c2, + 0x218342, + 0x20d882, + 0x200442, + 0x203082, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x24a5c3, + 0x205503, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x205503, + 0x200983, + 0x3fc3, + 0x2e9dc3, + 0x205702, + 0x38d2c3, + 0x1aea84c3, + 0x3b8e47, + 0x2e9dc3, + 0x206343, + 0x211cc4, + 0x205503, + 0x200983, + 0x255cca, + 0x264a85, + 0x201303, + 0x20b0c2, + 0x16d208, + 0x16d208, + 0x99c2, + 0x11fd02, + 0x6c845, + 0x129845, + 0x16d208, + 0x1b887, + 0xa84c3, + 0x1ba38e47, + 0x13ee06, + 0x1bd49c05, + 0x11de07, + 0x66ca, + 0x3748, + 0x65c7, + 0x56948, + 0x28d87, + 0x2c6cf, + 0x30b87, + 0x3b806, + 0x117090, + 0x12330f, + 0x104204, + 0x1c11dece, + 0xa8b4c, + 0x4f14a, + 0x9a2c7, + 0x112b8a, + 0x18f409, + 0xbf34a, + 0x5414a, + 0x104186, + 0x9a38a, + 0x8350a, + 0xe47c9, + 0xd5a48, + 0xd5d46, + 0xd9a8d, + 0xb3c45, + 0x1a78c7, + 0x5d6c7, + 0xd9394, + 0xf938b, + 0x68a0a, + 0xa2d0d, + 0x1cdc3, + 0x1cdc3, + 0x1cdc6, + 0x1cdc3, + 0x18d2c3, + 0x16d208, + 0x99c2, + 0x49944, + 0x887c3, + 0x173605, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2030c3, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x294483, + 0x25ed03, + 0x2030c3, + 0x25ef44, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2082c3, + 0x2a84c3, + 0x232403, + 0x218343, + 0x2163c3, + 0x2e9dc3, + 0x3b1384, + 0x353903, + 0x227f83, + 0x209703, + 0x205503, + 0x200983, + 0x201303, + 0x311dc3, + 0x1dea84c3, + 0x232403, + 0x246383, + 0x2e9dc3, + 0x20a203, + 0x227f83, + 0x200983, + 0x2072c3, + 0x33bac4, + 0x16d208, + 0x1e6a84c3, + 0x232403, + 0x2a6443, + 0x2e9dc3, + 0x209703, + 0x211cc4, + 0x205503, + 0x200983, + 0x21db03, + 0x16d208, + 0x1eea84c3, + 0x232403, + 0x2163c3, + 0x204e83, + 0x200983, + 0x16d208, + 0x1594ac7, + 0x38d2c3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x211cc4, + 0x205503, + 0x200983, + 0x129845, + 0x16fc07, + 0xd95cb, + 0xd69c4, + 0xb3c45, + 0x1456108, + 0xa6a8d, + 0x20284a05, + 0x18004, + 0x169c3, + 0x186345, + 0x349a05, + 0x16d208, + 0x1cdc2, + 0x336c3, + 0xf1446, + 0x319ec8, + 0x313bc7, + 0x25ef44, + 0x3b2c86, + 0x3bb6c6, + 0x16d208, + 0x30ce43, + 0x33e589, + 0x237295, + 0x3729f, + 0x2a84c3, + 0x31d012, + 0xefac6, + 0x10a045, + 0x26e8a, + 0x56b49, + 0x31cdcf, + 0x2d5f04, + 0x20b145, + 0x2fa150, + 0x3b0887, + 0x204e83, + 0x28b148, + 0x125bc6, + 0x2ae1ca, + 0x256044, + 0x2ec883, + 0x264a86, + 0x20b0c2, + 0x22d54b, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x2f1743, + 0x2099c2, + 0x2cd83, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x206343, + 0x221f03, + 0x200983, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x205503, + 0x200983, + 0x205702, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x9885, + 0x25ef44, + 0x2a84c3, + 0x232403, + 0x210444, + 0x205503, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x2143c3, + 0x209703, + 0x205503, + 0x200983, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x391683, + 0x63643, + 0x6343, + 0x205503, + 0x200983, + 0x30d44a, + 0x32b0c9, + 0x346b0b, + 0x34708a, + 0x34d94a, + 0x35d74b, + 0x371e0a, + 0x37814a, + 0x37fc4a, + 0x37fecb, + 0x39f689, + 0x3a140a, + 0x3a178b, + 0x3acfcb, + 0x3b9eca, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x209703, + 0x205503, + 0x200983, + 0x4589, + 0x16d208, + 0x2a84c3, + 0x25cb44, + 0x207ac2, + 0x211cc4, + 0x26fc45, + 0x2030c3, + 0x25ef44, + 0x2a84c3, + 0x235ac4, + 0x232403, + 0x249944, + 0x2d5f04, + 0x3b1384, + 0x227f83, + 0x205503, + 0x200983, + 0x27a305, + 0x2082c3, + 0x201303, + 0x22ed03, + 0x250cc4, + 0x390fc4, + 0x34ae45, + 0x16d208, + 0x302044, + 0x3510c6, + 0x276384, + 0x2099c2, + 0x371007, + 0x24c0c7, + 0x247784, + 0x2555c5, + 0x302e85, + 0x2a9305, + 0x3b1384, + 0x3b8ac8, + 0x239486, + 0x30c188, + 0x24ed05, + 0x2da905, + 0x236b84, + 0x200983, + 0x2ed844, + 0x35c946, + 0x264b83, + 0x250cc4, + 0x256005, + 0x32d104, + 0x334944, + 0x20b0c2, + 0x2425c6, + 0x3962c6, + 0x2fdc05, + 0x205702, + 0x38d2c3, + 0x262099c2, + 0x2333c4, + 0x20d882, + 0x209703, + 0x202c82, + 0x205503, + 0x200442, + 0x214843, + 0x25ed03, + 0x16d208, + 0x16d208, + 0x2e9dc3, + 0x205702, + 0x26e099c2, + 0x2e9dc3, + 0x245b43, + 0x353903, + 0x327344, + 0x205503, + 0x200983, + 0x16d208, + 0x205702, + 0x276099c2, + 0x2a84c3, + 0x205503, + 0x200983, + 0x482, + 0x20a9c2, + 0x212982, + 0x206343, + 0x2e87c3, + 0x205702, + 0x129845, + 0x16d208, + 0x16fc07, + 0x2099c2, + 0x232403, + 0x249944, + 0x2032c3, + 0x2e9dc3, + 0x2143c3, + 0x209703, + 0x205503, + 0x216b03, + 0x200983, + 0x21da83, + 0x118fd3, + 0x11c954, + 0x16fc07, + 0x13b46, + 0x53b4b, + 0x1cdc6, + 0x51b87, + 0x11ab09, + 0xe6d4a, + 0x8850d, + 0x1b240c, + 0x1ada8a, + 0x192345, + 0x6708, + 0x5d306, + 0x125c86, + 0x22bb82, + 0xff14c, + 0x1a5cc7, + 0x22e51, + 0x2a84c3, + 0x568c5, + 0x77848, + 0x9e04, + 0x288347c6, + 0x17e86, + 0x8cb46, + 0x8da0a, + 0xac543, + 0x28e54b04, + 0x11aac5, + 0xde283, + 0xdc105, + 0xd104c, + 0xf04c8, + 0xb5708, + 0x9e009, + 0x134b08, + 0x141e046, + 0xda40a, + 0x82b48, + 0xf4648, + 0xff384, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x205702, + 0x2099c2, + 0x2e9dc3, + 0x202bc2, + 0x205503, + 0x200983, + 0x214843, + 0x3653cf, + 0x36578e, + 0x16d208, + 0x2a84c3, + 0x42f87, + 0x232403, + 0x2e9dc3, + 0x244183, + 0x205503, + 0x200983, + 0x201bc3, + 0x201bc7, + 0x200142, + 0x32c249, + 0x200242, + 0x23f88b, + 0x297b8a, + 0x2a2a49, 0x200882, - 0x216582, - 0x21eb03, - 0x2082c2, - 0x238483, - 0x2264c3, - 0x217643, - 0x35e48f, - 0x35e84e, - 0x880c8, - 0x22d183, - 0x429c7, - 0x2343c3, - 0x21eb03, - 0x202243, - 0x238483, - 0x2264c3, - 0x220003, - 0x36b047, - 0x204642, - 0x2a9849, - 0x201002, - 0x32a10b, - 0x28c14a, - 0x2a4209, - 0x201902, - 0x250e06, - 0x248f95, - 0x32a255, - 0x24de93, - 0x32a7d3, - 0x2056c2, - 0x214605, - 0x27ff4c, - 0x219e0b, - 0x269005, - 0x201482, - 0x2040c2, - 0x377506, - 0x204802, - 0x24eb06, - 0x332ecd, - 0x36288c, - 0x30a784, - 0x2009c2, - 0x219f02, - 0x22c108, - 0x202d42, - 0x29d5c6, - 0x3345c4, - 0x249155, - 0x24e013, - 0x20a583, - 0x34868a, - 0x30e547, - 0x2e6089, - 0x20f507, - 0x24f882, + 0x391206, + 0x34ed15, + 0x23f9d5, + 0x246993, + 0x23ff53, + 0x202a82, + 0x205ac5, + 0x3b364c, + 0x27160b, + 0x2726c5, + 0x201702, + 0x284202, + 0x386fc6, + 0x200ec2, + 0x3695c6, + 0x2d4c4d, + 0x27ef4c, + 0x224dc4, + 0x203dc2, + 0x205942, + 0x2248c8, + 0x202a42, + 0x312fc6, + 0x2ba844, + 0x34eed5, + 0x246b13, + 0x210783, + 0x32fa0a, + 0x3bb147, + 0x3094c9, + 0x37b887, + 0x30f242, 0x200002, - 0x200006, - 0x202f42, - 0x880c8, - 0x211302, - 0x211d42, - 0x273cc7, - 0x3a8ac7, - 0x21ed05, - 0x215802, - 0x220647, - 0x220808, - 0x279a82, - 0x293f02, - 0x22f802, - 0x202ec2, - 0x239c48, - 0x21abc3, - 0x267848, - 0x2cf4cd, - 0x215743, - 0x369908, - 0x234a4f, - 0x234e0e, - 0x223f8a, - 0x36a611, - 0x36aa90, - 0x2b348d, - 0x2b37cc, - 0x3b2447, - 0x348807, - 0x355409, - 0x23c302, - 0x2004c2, - 0x254c8c, - 0x254f8b, - 0x2008c2, - 0x2dca86, + 0x3aef06, + 0x20cb42, + 0x16d208, + 0x2105c2, + 0x20b382, + 0x274e87, + 0x20f687, + 0x21b585, + 0x201c02, + 0x21da47, + 0x21dc08, + 0x242b42, + 0x2bf3c2, + 0x22e802, + 0x201ec2, + 0x237b88, + 0x201ec3, + 0x2b5308, + 0x2cf1cd, + 0x213c03, + 0x327988, + 0x239f8f, + 0x23a34e, + 0x25edca, + 0x229751, + 0x229bd0, + 0x2bcdcd, + 0x2bd10c, + 0x311c47, + 0x32fb87, + 0x3b2d49, + 0x224ec2, 0x206c02, - 0x2131c2, - 0x21dec2, - 0x216582, - 0x392904, - 0x23b147, - 0x200bc2, - 0x23f1c7, - 0x240447, - 0x214ec2, - 0x230542, - 0x242885, - 0x200682, - 0x26380e, - 0x27620d, - 0x2343c3, - 0x28268e, - 0x356b8d, - 0x2de803, - 0x2058c2, - 0x27cac4, - 0x2446c2, - 0x20ddc2, - 0x346905, - 0x34f587, - 0x372642, - 0x206ac2, - 0x246cc7, - 0x24c608, - 0x23aa82, - 0x2b5506, - 0x254b0c, - 0x254e4b, - 0x221842, - 0x25bccf, - 0x25c090, - 0x25c48f, - 0x25c855, - 0x25cd94, - 0x25d28e, - 0x25d60e, - 0x25d98f, - 0x25dd4e, - 0x25e0d4, - 0x25e5d3, - 0x25ea8d, - 0x271749, - 0x286d43, - 0x2007c2, - 0x20a805, - 0x208f46, - 0x201f82, - 0x26bdc7, - 0x21eb03, - 0x20b2c2, - 0x2c7448, - 0x36a851, - 0x36ac90, - 0x200942, - 0x22a647, - 0x2074c2, - 0x3328c7, - 0x209682, - 0x305dc9, - 0x3774c7, - 0x3615c8, - 0x228246, - 0x2daf83, - 0x34ad45, - 0x234642, - 0x200402, - 0x200405, - 0x399485, - 0x202102, - 0x24a503, - 0x2cfc47, - 0x208a07, - 0x203f42, - 0x2fec04, - 0x214803, - 0x2be489, - 0x2db488, - 0x20b402, - 0x2061c2, - 0x22f2c7, - 0x24bcc5, - 0x2a5f88, - 0x3b0e87, - 0x2047c3, - 0x27df86, - 0x2b330d, - 0x2b368c, - 0x276a06, - 0x203142, - 0x29a1c2, - 0x206742, - 0x2348cf, - 0x234cce, - 0x2d3847, - 0x200342, - 0x39e205, - 0x39e206, - 0x250042, - 0x203042, - 0x217c86, - 0x2a9a83, - 0x332806, - 0x2bfb05, - 0x2bfb0d, - 0x2c00d5, - 0x2c0c0c, - 0x2c150d, - 0x2c18d2, - 0x20e842, + 0x25340c, + 0x25370b, + 0x204142, + 0x2ab046, + 0x21a1c2, + 0x209882, + 0x21b102, + 0x2099c2, + 0x383a84, + 0x238bc7, + 0x204682, + 0x23d147, + 0x23e487, + 0x20e142, + 0x2301c2, + 0x242e45, + 0x205742, + 0x362e0e, + 0x2ebb8d, + 0x232403, + 0x2be90e, + 0x2e064d, + 0x37eac3, 0x200e02, - 0x200ac2, - 0x2d6646, - 0x2ac506, - 0x2025c2, - 0x208fc6, - 0x203382, - 0x2249c5, - 0x204c02, - 0x263949, - 0x34700c, - 0x34734b, - 0x201502, - 0x24ca48, - 0x2042c2, - 0x207a82, - 0x219bc6, - 0x36c005, - 0x3a1687, - 0x24a385, - 0x28df05, - 0x242a42, - 0x202042, - 0x206d42, - 0x26e847, - 0x2d094d, - 0x2d0ccc, - 0x2229c7, - 0x2b5482, - 0x226282, - 0x36f088, - 0x22ce88, - 0x2d5b48, - 0x2dfd44, - 0x2ef207, - 0x2dbf83, - 0x280b82, - 0x2014c2, - 0x2e0489, - 0x3a3247, - 0x207442, - 0x26d485, - 0x241542, - 0x22ff42, - 0x297fc3, - 0x297fc6, - 0x2e6a82, - 0x2e8642, - 0x200c02, - 0x30f006, - 0x29dc87, - 0x200b82, - 0x208782, - 0x26768f, - 0x2824cd, - 0x284d8e, - 0x356a0c, - 0x20d342, - 0x207482, - 0x228085, - 0x3b3086, - 0x212182, - 0x208b02, - 0x204b42, - 0x282844, - 0x2cf344, - 0x338a86, - 0x201bc2, - 0x275247, - 0x214343, - 0x21cb88, - 0x224348, - 0x239247, - 0x33fbc6, - 0x2015c2, - 0x239bc3, - 0x35bf87, - 0x266c86, - 0x2d6585, - 0x2d8e88, - 0x208d82, - 0x3211c7, - 0x20dfc2, - 0x35b202, - 0x20ad82, - 0x2bf8c9, - 0x200242, - 0x200a02, - 0x222c43, - 0x321887, - 0x201a02, - 0x34718c, - 0x34748b, - 0x276a86, - 0x20cdc5, - 0x224982, - 0x206ec2, - 0x2b3006, - 0x229083, - 0x340d07, - 0x246002, - 0x200cc2, - 0x248e15, - 0x32a415, - 0x24dd53, - 0x32a953, - 0x264dc7, - 0x288288, - 0x288290, - 0x289b0f, - 0x28bf13, - 0x2a3fd2, - 0x2a9410, - 0x2e79cf, - 0x2f14d2, - 0x351551, - 0x2afb13, - 0x2bf692, - 0x2c8d0f, - 0x2cb38e, - 0x2cc152, - 0x2cd191, - 0x2cdd8f, - 0x2ced4e, - 0x2d4c11, - 0x2e0090, - 0x2e4452, - 0x2e55d1, - 0x2e6b06, - 0x2e89c7, - 0x2f77c7, - 0x201582, - 0x27a485, - 0x2f2447, - 0x221e42, - 0x203c42, - 0x22c605, - 0x221303, - 0x26e246, - 0x2d0b0d, - 0x2d0e4c, - 0x203dc2, - 0x27fdcb, - 0x219cca, - 0x31b28a, - 0x2b22c9, - 0x2dd20b, - 0x3b0fcd, - 0x2f2b4c, - 0x2144ca, - 0x221e8c, - 0x24d10b, - 0x268e4c, - 0x26c10b, - 0x346f83, - 0x287e86, - 0x326e82, - 0x2e9202, - 0x208943, - 0x205882, - 0x205883, - 0x238406, - 0x25ca07, - 0x271406, - 0x2ea8c8, - 0x22cb88, - 0x2f0206, - 0x22d742, - 0x2f508d, - 0x2f53cc, - 0x22d747, - 0x2f8787, - 0x2156c2, - 0x21bf02, - 0x21eb82, - 0x24b982, - 0x216582, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x212444, - 0x238483, - 0x2264c3, - 0x217643, - 0x200882, - 0x200702, - 0x2368c545, - 0x23a03985, - 0x23f0b146, - 0x880c8, - 0x242b0185, - 0x216582, + 0x21fec4, + 0x2454c2, + 0x2175c2, + 0x358e45, + 0x364b47, + 0x383382, + 0x218342, + 0x249547, + 0x24d288, + 0x248902, + 0x2aeac6, + 0x25328c, + 0x2535cb, + 0x20fc82, + 0x25924f, + 0x259610, + 0x259a0f, + 0x259dd5, + 0x25a314, + 0x25a80e, + 0x25ab8e, + 0x25af0f, + 0x25b2ce, + 0x25b654, + 0x25bb53, + 0x25c00d, + 0x272a89, + 0x2895c3, + 0x200782, + 0x22b0c5, + 0x207f86, + 0x20d882, + 0x21f507, + 0x2e9dc3, + 0x205e82, + 0x362a08, + 0x229991, + 0x229dd0, + 0x206482, + 0x288d87, + 0x203942, + 0x214607, + 0x20be02, + 0x319cc9, + 0x386f87, + 0x27aac8, + 0x234606, + 0x2e86c3, + 0x32a105, + 0x232682, + 0x202082, + 0x3af305, + 0x380685, + 0x2040c2, + 0x24c543, + 0x32d187, + 0x223787, + 0x200502, + 0x254684, + 0x223b83, + 0x223b89, + 0x22c548, + 0x200282, + 0x204bc2, + 0x3105c7, + 0x31ff05, + 0x2a5348, + 0x219947, + 0x200e83, + 0x28c446, + 0x2bcc4d, + 0x2bcfcc, + 0x2b45c6, + 0x208d02, + 0x2a8542, + 0x202342, + 0x239e0f, + 0x23a20e, + 0x302f07, + 0x203d02, + 0x2bf745, + 0x2bf746, + 0x20f242, + 0x20ec42, + 0x221f06, + 0x214543, + 0x214546, + 0x2c6985, + 0x2c698d, + 0x2c6f55, + 0x2c814c, + 0x2c95cd, + 0x2c9992, + 0x20e602, + 0x2675c2, + 0x202d02, + 0x240806, + 0x2f7f86, + 0x2033c2, + 0x208006, + 0x2023c2, + 0x38b785, + 0x200542, + 0x2ebc89, + 0x31554c, + 0x31588b, + 0x200442, + 0x24e748, + 0x203b02, + 0x2056c2, + 0x26a346, + 0x222445, + 0x226747, + 0x257d85, + 0x29e405, + 0x243002, + 0x2067c2, + 0x2013c2, + 0x2df507, + 0x380c0d, + 0x380f8c, + 0x22f087, + 0x20f982, + 0x2069c2, + 0x241248, + 0x31e488, + 0x2e3988, + 0x308484, + 0x2ab407, + 0x2e90c3, + 0x228ec2, + 0x2082c2, + 0x2eb3c9, + 0x3a40c7, + 0x201302, + 0x26a745, + 0x22d4c2, + 0x21aa02, + 0x2f9f03, + 0x2f9f06, + 0x2f1742, + 0x2f23c2, 0x201a42, - 0x24755c45, - 0x24a786c5, - 0x24e79547, - 0x2527b109, - 0x2564b084, + 0x202f86, + 0x21fe07, + 0x213bc2, + 0x205ec2, + 0x2b514f, + 0x2be74d, + 0x3872ce, + 0x2e04cc, + 0x2009c2, + 0x207302, + 0x234445, + 0x30ba46, + 0x2018c2, + 0x202482, + 0x200482, + 0x2198c4, + 0x2cf044, + 0x2d0e86, + 0x203082, + 0x36cac7, + 0x203083, + 0x285d48, + 0x34e488, + 0x239887, + 0x240706, + 0x203902, + 0x234b03, + 0x234b07, + 0x273946, + 0x2dee45, + 0x308808, + 0x200d02, + 0x331207, + 0x222702, + 0x361782, + 0x20cfc2, + 0x2c6749, + 0x230982, + 0x200842, + 0x22f303, + 0x331c87, + 0x2002c2, + 0x3156cc, + 0x3159cb, + 0x2b4646, + 0x2de1c5, + 0x221c82, + 0x203b42, + 0x2b7bc6, + 0x260dc3, + 0x38c187, + 0x236102, + 0x201442, + 0x34eb95, + 0x23fb95, + 0x246853, + 0x2400d3, + 0x2585c7, + 0x271a48, + 0x271a50, + 0x28d2cf, + 0x297953, + 0x2a2812, + 0x32be10, + 0x2d544f, + 0x35f7d2, + 0x30c3d1, + 0x2b7613, + 0x2c6512, + 0x2cff4f, + 0x2d2e8e, + 0x2d3f52, + 0x2d71d1, + 0x2d7c8f, + 0x30440e, + 0x2f0691, + 0x2f17d0, + 0x2f2752, + 0x2fc711, + 0x364586, + 0x36d3c7, + 0x372187, + 0x203142, + 0x27d8c5, + 0x3933c7, + 0x212982, + 0x209942, + 0x228a85, + 0x21e743, + 0x34b0c6, + 0x380dcd, + 0x38110c, + 0x201682, + 0x3b34cb, + 0x2714ca, + 0x20598a, + 0x2b6449, + 0x2ea64b, + 0x219a8d, + 0x2fa5cc, + 0x25180a, + 0x22090c, + 0x26908b, + 0x27250c, + 0x29474b, + 0x3154c3, + 0x36cfc6, + 0x3a98c2, + 0x2f4542, + 0x20a743, + 0x208602, + 0x21fe83, + 0x2366c6, + 0x259f87, + 0x2c7fc6, + 0x39e4c8, + 0x31e188, + 0x2ce146, 0x201f82, - 0x20b2c2, - 0x25a43785, - 0x25e8bb89, - 0x26311f08, - 0x266abe45, - 0x26b0bc07, - 0x26e18948, - 0x272d8045, - 0x27604606, - 0x27b47b09, - 0x27f25348, - 0x282b8888, - 0x2869310a, - 0x28a48444, - 0x28ec9405, - 0x292b5dc8, - 0x29616c85, - 0x21ac42, - 0x29a00343, - 0x29ea2f86, - 0x2a233a88, - 0x2a69e2c6, - 0x2aa9ddc8, - 0x2ae09c86, - 0x2b2f6284, - 0x205902, - 0x2b73b7c7, - 0x2baa8444, - 0x2be746c7, - 0x2c333a07, + 0x2fd5cd, + 0x2fd90c, + 0x2d5fc7, + 0x301f07, + 0x213b82, 0x201502, - 0x2c696ec5, - 0x2ca31504, - 0x2cf7fd07, - 0x2d211e47, - 0x2d67c906, - 0x2da29585, - 0x2de91bc7, - 0x2e2d1a48, - 0x2e60ab87, - 0x2eb12b09, - 0x2eec0f45, - 0x2f32bb87, - 0x2f68b886, - 0x2fa51008, - 0x225a4d, - 0x242bc9, - 0x2e4ccb, - 0x3726cb, - 0x26f30b, - 0x2a564b, - 0x2ffd0b, - 0x2fffcb, - 0x300849, - 0x30208b, - 0x30234b, - 0x30290b, - 0x30340a, - 0x30394a, - 0x303f4c, - 0x308e0b, - 0x30964a, - 0x31c18a, - 0x32734e, - 0x3282ce, - 0x32864a, - 0x32b14a, - 0x32cb4b, - 0x32ce0b, - 0x32dd0b, - 0x34c50b, - 0x34cb0a, - 0x34d7cb, - 0x34da8a, - 0x34dd0a, - 0x34df8a, - 0x373f4b, - 0x37c18b, - 0x37dace, - 0x37de4b, - 0x3849cb, - 0x38598b, - 0x3893ca, - 0x389649, - 0x38988a, - 0x38af0a, - 0x39c60b, - 0x39e64b, - 0x39f24a, - 0x3a02cb, - 0x3a4f0b, - 0x3b26cb, - 0x2fe7ab48, - 0x30285289, - 0x30626809, - 0x30acfe48, - 0x338805, - 0x203443, - 0x204204, - 0x327145, - 0x24adc6, - 0x259145, - 0x284404, - 0x26bcc8, - 0x3739c5, - 0x28d904, - 0x3b3f87, - 0x2996ca, - 0x3605ca, - 0x336947, - 0x203347, - 0x2f10c7, - 0x362607, - 0x2b9d05, - 0x306d46, - 0x2fb0c7, - 0x3a2784, - 0x376b06, - 0x376a06, - 0x3a3745, - 0x280584, - 0x2d3d46, - 0x298387, - 0x225d46, - 0x2c7ec7, - 0x28d6c3, - 0x268446, + 0x234a82, + 0x24d642, + 0x2099c2, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x211cc4, + 0x205503, + 0x200983, + 0x214843, + 0x205702, + 0x2021c2, + 0x2ae8fdc5, + 0x2b247e45, + 0x2b717806, + 0x16d208, + 0x2baaee05, + 0x2099c2, + 0x2006c2, + 0x2bfb3ac5, + 0x2c27bdc5, + 0x2c67c9c7, + 0x2ca86a09, + 0x2ce3bc44, + 0x20d882, + 0x205e82, + 0x2d24b5c5, + 0x2d68f849, + 0x2db1db88, + 0x2deab805, + 0x2e300187, + 0x2e61ed48, + 0x2eae5d85, + 0x2ee00106, + 0x2f337809, + 0x2f6b5a48, + 0x2fac0488, + 0x2fe9704a, + 0x302732c4, + 0x306d13c5, + 0x30abc9c8, + 0x30e03a85, + 0x20cec2, + 0x31248a43, + 0x316a1686, + 0x31b60148, + 0x31eb94c6, + 0x32281f08, + 0x32719606, + 0x32adef04, + 0x200c82, + 0x32f2cb87, + 0x332a75c4, + 0x336756c7, + 0x33ba2987, + 0x200442, + 0x33e9b0c5, + 0x34334f84, + 0x346cd907, + 0x34a5f187, + 0x34e80886, + 0x3527c585, + 0x356959c7, + 0x35ad0b48, + 0x35e2b447, + 0x363164c9, + 0x36793105, + 0x36b31dc7, + 0x36e8f546, + 0x37391408, + 0x2273cd, + 0x279909, + 0x28174b, + 0x2a4b0b, + 0x34058b, + 0x2ffe8b, + 0x30bc4b, + 0x30bf0b, + 0x30c809, + 0x30d6cb, + 0x30d98b, + 0x30e48b, + 0x30f5ca, + 0x30fb0a, + 0x31010c, + 0x314d8b, + 0x31670a, + 0x32904a, + 0x33404e, + 0x33568e, + 0x335a0a, + 0x33808a, + 0x338dcb, + 0x33908b, + 0x339e8b, + 0x354ecb, + 0x3554ca, + 0x35618b, + 0x35644a, + 0x3566ca, + 0x35694a, + 0x372b0b, + 0x37914b, + 0x37c74e, + 0x37cacb, + 0x38454b, + 0x385acb, + 0x38900a, + 0x389289, + 0x3894ca, + 0x38a94a, + 0x3a00cb, + 0x3a1a4b, + 0x3a22ca, + 0x3a48cb, + 0x3a8c4b, + 0x3b990b, + 0x3767e648, + 0x37a87c89, + 0x37e9de89, + 0x382dacc8, + 0x342505, + 0x217083, + 0x21c6c4, + 0x220005, + 0x23b986, + 0x25da05, + 0x2864c4, + 0x21f408, + 0x308005, + 0x291784, + 0x203447, + 0x29cf8a, + 0x3712ca, + 0x338547, + 0x3af9c7, + 0x2f8f07, + 0x264e87, + 0x2f60c5, + 0x33bb86, + 0x2bb847, + 0x2b4904, + 0x2e4646, + 0x2e4546, + 0x3b9585, + 0x26d1c4, + 0x3519c6, + 0x29bf47, + 0x285746, + 0x2e3247, + 0x25e443, + 0x2b1c06, 0x2328c5, - 0x279647, - 0x266fca, - 0x263204, - 0x2180c8, - 0x2fb649, - 0x2ce487, - 0x3aed06, - 0x29f988, - 0x306409, - 0x2e6244, - 0x35d804, - 0x2f9685, - 0x2fadc8, - 0x2bd1c7, - 0x2aa009, - 0x327c48, - 0x2fc706, - 0x379bc6, - 0x2943c8, - 0x375fc6, - 0x203985, - 0x27c9c6, - 0x274bc8, - 0x2347c6, - 0x25708b, - 0x233406, - 0x295d4d, - 0x358a45, - 0x2a8306, - 0x218a05, - 0x297c89, - 0x2f1d07, - 0x382048, - 0x2db2c6, - 0x294ac9, - 0x3a6246, - 0x266f45, - 0x29c1c6, - 0x2a8e86, - 0x2c2909, - 0x306206, - 0x279247, - 0x33cf05, - 0x205703, - 0x257205, - 0x296007, - 0x323446, - 0x358949, - 0x30b146, - 0x27cc06, - 0x365389, - 0x27c3c9, - 0x29ca07, - 0x369fc8, - 0x39ee89, - 0x27a108, - 0x31f686, - 0x2cc9c5, - 0x30a44a, - 0x27cc86, - 0x330bc6, - 0x2a3145, - 0x24d588, - 0x206847, - 0x2318ca, - 0x247786, - 0x243005, - 0x2a0e06, - 0x265b47, - 0x3aebc7, + 0x27cac7, + 0x2641ca, + 0x260e44, + 0x217c08, + 0x2abd89, + 0x2cd247, + 0x336286, + 0x24e9c8, + 0x2b9c09, + 0x309684, + 0x366944, + 0x244245, + 0x2bb548, + 0x2c4b07, + 0x2a9709, + 0x364688, + 0x345e86, + 0x3204c6, + 0x298048, + 0x359646, + 0x247e45, + 0x280946, + 0x275ec8, + 0x24da46, + 0x2525cb, + 0x298646, + 0x29994d, + 0x3a6005, + 0x2a7486, + 0x208b45, + 0x2f9bc9, + 0x2f9a87, + 0x37a208, + 0x266986, + 0x298bc9, + 0x3793c6, + 0x264145, + 0x268686, + 0x2cae46, + 0x2cb3c9, + 0x3530c6, + 0x339487, + 0x26ad85, + 0x202ac3, + 0x252745, + 0x299c07, + 0x33c6c6, + 0x3a5f09, + 0x317806, + 0x280b86, + 0x210c49, + 0x280349, + 0x29fc07, + 0x282f88, + 0x28c989, + 0x27d548, + 0x378386, + 0x2d5805, + 0x2418ca, + 0x280c06, + 0x3b7986, + 0x2c8985, + 0x265808, + 0x223307, + 0x22f50a, + 0x249e46, + 0x279d45, + 0x37aa46, + 0x21ac47, + 0x336147, + 0x21bbc5, + 0x264305, + 0x357dc6, + 0x2ac5c6, + 0x34dc06, + 0x2b3204, + 0x27f689, + 0x288b46, + 0x2dd38a, + 0x21b388, + 0x3078c8, + 0x3712ca, + 0x20b445, + 0x29be85, + 0x350b88, + 0x2b2c88, + 0x27b5c7, + 0x258946, + 0x322388, + 0x2fdec7, + 0x27dc48, + 0x2b3846, + 0x281408, + 0x294f06, + 0x24ee87, + 0x299ec6, + 0x3519c6, + 0x3778ca, + 0x2bd8c6, + 0x2d5809, + 0x26dbc6, + 0x2af14a, + 0x2def09, + 0x2fb486, + 0x2b4b04, + 0x22b18d, + 0x287f07, + 0x326cc6, + 0x2c0345, + 0x379445, + 0x374246, + 0x2cd749, + 0x2b1647, + 0x277306, + 0x2cc246, + 0x286549, + 0x247d84, + 0x3482c4, + 0x352cc8, + 0x236a86, + 0x26a808, + 0x2e41c8, + 0x312747, + 0x3b7549, + 0x34de07, + 0x2aecca, + 0x2e1f8f, + 0x23188a, + 0x234245, + 0x276105, + 0x216e85, + 0x2ba787, + 0x21a803, + 0x283188, + 0x396786, + 0x396889, + 0x2b87c6, + 0x3b5207, + 0x298989, + 0x37a108, + 0x2c8a47, + 0x30a343, + 0x342585, + 0x21a785, + 0x2b304b, + 0x203b44, + 0x2c2084, + 0x274646, + 0x30abc7, + 0x382bca, + 0x248ac7, + 0x311e87, + 0x27bdc5, + 0x200645, + 0x2eef89, + 0x3519c6, + 0x24894d, + 0x353305, + 0x2b1383, + 0x205043, + 0x26f685, + 0x345c45, + 0x24e9c8, + 0x2790c7, + 0x348046, + 0x29db06, + 0x229105, + 0x2326c7, + 0x312247, + 0x239347, + 0x2d144a, + 0x2b1cc8, + 0x2b3204, + 0x24d7c7, + 0x27acc7, + 0x339306, + 0x262107, + 0x2dc4c8, + 0x2e6f08, + 0x268506, + 0x303008, + 0x2c87c4, + 0x2bb846, + 0x2353c6, + 0x33bfc6, + 0x2ba986, + 0x286004, + 0x264f46, + 0x2bf5c6, + 0x297546, + 0x247846, + 0x204f06, + 0x26e2c6, + 0x347f48, + 0x2b0748, + 0x2d1c88, + 0x25dc08, + 0x350b06, + 0x20dcc5, + 0x315ec6, + 0x2ab885, + 0x388447, + 0x215305, + 0x2125c3, + 0x211585, + 0x344cc4, + 0x205045, + 0x203b03, + 0x33a447, + 0x354648, + 0x2e3306, + 0x2c218d, + 0x2760c6, + 0x296ac5, + 0x2b7843, + 0x2bc389, + 0x247f06, + 0x28e7c6, + 0x29f4c4, + 0x231807, + 0x233606, + 0x2b1905, + 0x203cc3, + 0x3abd84, + 0x27ae86, + 0x2354c4, + 0x2da048, + 0x38ba89, + 0x215589, + 0x29f2ca, + 0x2a070d, + 0x313447, + 0x2b9186, + 0x206804, + 0x286a09, + 0x284688, + 0x287b06, + 0x33f286, + 0x262107, + 0x2b6b46, + 0x226346, + 0x26d606, + 0x3a2a0a, + 0x21ed48, 0x2bacc5, - 0x267105, - 0x2acf46, - 0x383446, - 0x2ad886, - 0x328cc4, - 0x27b489, - 0x286146, - 0x2a5a0a, - 0x214048, - 0x32b888, - 0x3605ca, - 0x202145, - 0x2982c5, - 0x323c48, - 0x2c9188, - 0x320d47, - 0x265146, - 0x315308, - 0x202b87, - 0x279788, - 0x35f146, - 0x27dd08, - 0x2b3b86, - 0x2370c7, - 0x295506, - 0x2d3d46, - 0x23628a, - 0x392986, - 0x2cc9c9, - 0x2b0486, - 0x2d238a, - 0x2f6289, - 0x2f0306, - 0x37c504, - 0x20a8cd, - 0x285507, - 0x317906, - 0x2b8745, - 0x3a62c5, - 0x305546, - 0x26d9c9, - 0x3ad5c7, - 0x275cc6, - 0x2cd946, - 0x284489, - 0x212a44, - 0x228dc4, - 0x204308, - 0x2387c6, - 0x26d548, - 0x2d6b88, - 0x203ac7, - 0x200849, - 0x2ada87, - 0x2b004a, - 0x22decf, - 0x2377ca, - 0x227e85, - 0x274e05, - 0x216005, - 0x334507, - 0x277283, - 0x36a1c8, - 0x334d86, - 0x334e89, - 0x2c6a06, - 0x2c2747, - 0x294889, - 0x381f48, - 0x2a3207, - 0x2fee83, - 0x338885, - 0x3b2005, - 0x328b0b, - 0x216d44, - 0x2c5044, - 0x273486, - 0x2ff447, - 0x39794a, - 0x245807, - 0x3b0407, - 0x2786c5, - 0x205285, - 0x2196c9, - 0x2d3d46, - 0x24568d, - 0x358045, - 0x2a2d43, - 0x205d03, - 0x349205, - 0x350005, - 0x29f988, - 0x276707, - 0x228b46, - 0x29a646, - 0x22d905, - 0x234687, - 0x2035c7, - 0x36ec47, - 0x2c948a, - 0x268508, - 0x328cc4, - 0x2ade47, - 0x277cc7, - 0x32d086, - 0x264607, - 0x2b2a08, - 0x226708, - 0x26b786, - 0x367f08, - 0x2c32c4, - 0x2fb0c6, - 0x3a9146, - 0x2c0a86, - 0x349c06, - 0x29abc4, - 0x3626c6, - 0x2b76c6, - 0x293606, - 0x2293c6, - 0x205bc6, - 0x2b2846, - 0x228a48, - 0x39de08, - 0x2c9cc8, - 0x259348, - 0x323bc6, - 0x210785, - 0x275386, - 0x2abec5, - 0x388807, - 0x28ae45, - 0x213d43, - 0x364605, - 0x22fd84, - 0x205d05, - 0x210143, - 0x39a7c7, - 0x31c448, - 0x2c7f86, - 0x2c514d, - 0x274dc6, - 0x292b85, - 0x2afd43, - 0x2b5789, - 0x212bc6, - 0x231246, - 0x29c2c4, - 0x237747, - 0x235b06, - 0x243245, - 0x216ec3, - 0x378a44, - 0x277e86, - 0x2b15c4, - 0x30d748, - 0x324a89, - 0x2f2209, - 0x29c0ca, - 0x23f88d, - 0x29da47, - 0x330a46, - 0x20ec44, - 0x27b109, - 0x283588, - 0x285106, - 0x263bc6, - 0x264607, - 0x2c3c06, - 0x21b606, - 0x38c346, - 0x333a8a, - 0x218948, - 0x22bc45, - 0x27d649, - 0x279c8a, - 0x2c54c8, - 0x2979c8, - 0x292108, - 0x2a864c, - 0x2dc7c5, - 0x29a8c8, - 0x39e106, - 0x2d1d06, - 0x37af07, - 0x245705, - 0x27cb45, - 0x2f20c9, - 0x212747, - 0x2b2ec5, - 0x21e9c7, - 0x205d03, - 0x2bd705, - 0x366548, - 0x2d1687, - 0x297889, + 0x262549, + 0x27e14a, + 0x2f5d08, + 0x29b908, + 0x295f08, + 0x2a7acc, + 0x30e705, + 0x29dd88, + 0x2e6586, + 0x37a386, + 0x3b50c7, + 0x2489c5, + 0x280ac5, + 0x215449, + 0x20e247, + 0x396845, + 0x227887, + 0x205043, + 0x2c5045, + 0x20ef48, + 0x252ac7, + 0x29b7c9, 0x2d7985, - 0x2f4504, - 0x2a1788, - 0x2cf787, - 0x2a33c8, - 0x2740c8, - 0x32c005, - 0x334c86, - 0x257706, - 0x2e7649, - 0x315b87, - 0x2ac986, - 0x30e947, - 0x217d43, - 0x24b084, - 0x298c45, - 0x2ae0c4, - 0x236844, - 0x27adc7, - 0x3affc7, - 0x239a04, - 0x2976d0, - 0x3056c7, - 0x205285, - 0x22ae8c, - 0x2018c4, - 0x2bee08, - 0x236fc9, - 0x2ffb86, + 0x2fa984, 0x2a03c8, - 0x25a7c4, - 0x25a7c8, - 0x231ec6, - 0x229248, - 0x298946, - 0x2c828b, - 0x205705, - 0x2c3248, - 0x21a3c4, - 0x27c04a, - 0x297889, - 0x2e0d06, - 0x2160c8, - 0x258645, - 0x301944, - 0x2bed06, - 0x36eb08, - 0x27ab48, - 0x345d06, - 0x31d6c4, - 0x30a3c6, - 0x2adb07, - 0x2745c7, - 0x26460f, - 0x2074c7, - 0x2f03c7, - 0x2d1bc5, - 0x2ed845, - 0x29c6c9, - 0x28ae86, - 0x278fc5, - 0x27c6c7, - 0x37b188, - 0x293705, - 0x295506, - 0x213e88, - 0x29e2ca, - 0x282988, - 0x287947, - 0x22e306, - 0x27d606, - 0x21f283, - 0x2042c3, - 0x279e49, - 0x39ed09, - 0x2bec06, - 0x2d7985, - 0x2a84c8, - 0x2160c8, - 0x387808, - 0x38c3cb, - 0x2c5387, - 0x2fd189, - 0x264888, - 0x33c7c4, - 0x2c2a08, - 0x2895c9, - 0x2acc85, - 0x334407, - 0x24b105, - 0x27aa48, - 0x28c3cb, - 0x291910, - 0x2a8105, - 0x21a30c, - 0x228d05, - 0x2032c3, - 0x2a2c06, - 0x2b6e04, - 0x231606, - 0x298387, - 0x213f04, - 0x2415c8, - 0x36a08d, - 0x2d9685, - 0x23fd84, - 0x219904, - 0x27d0c9, - 0x297408, - 0x30afc7, - 0x231f48, - 0x27b548, - 0x275fc5, - 0x331547, - 0x275f47, - 0x20af07, - 0x267109, - 0x235989, - 0x23f346, - 0x2b39c6, - 0x264846, - 0x25b8c5, - 0x3af344, - 0x204506, - 0x204a46, - 0x276008, - 0x26580b, - 0x2630c7, - 0x20ec44, - 0x317d86, - 0x203107, - 0x348b45, - 0x318f05, - 0x201e84, - 0x235906, - 0x204588, - 0x27b109, - 0x257c86, - 0x282f08, - 0x243306, - 0x33ce48, - 0x2d8a8c, - 0x275e86, - 0x29284d, - 0x292ccb, - 0x279305, - 0x203707, - 0x306306, - 0x3aea88, - 0x23f3c9, - 0x2e7288, - 0x205285, - 0x2ecc07, - 0x27a208, - 0x384789, - 0x2a05c6, - 0x33bfca, - 0x3ae808, - 0x2e70cb, - 0x2c608c, - 0x25a8c8, - 0x277506, - 0x334708, - 0x29df47, - 0x2cfa09, - 0x28ba8d, - 0x2961c6, - 0x3017c8, - 0x39dcc9, - 0x2b6188, - 0x27de08, - 0x2b7f8c, - 0x2b9347, - 0x2b9f07, - 0x266f45, - 0x3a4d47, - 0x37b048, - 0x2bed86, - 0x257b0c, - 0x2e4988, - 0x2c44c8, - 0x24b5c6, - 0x3b1d87, - 0x23f544, - 0x259348, - 0x356e4c, - 0x3a1a0c, - 0x227f05, - 0x393d47, - 0x31d646, - 0x3b1d06, - 0x297e48, - 0x38c284, - 0x225d4b, - 0x22844b, - 0x22e306, - 0x369f07, - 0x307d45, - 0x26ca85, - 0x225e86, - 0x258605, - 0x216d05, - 0x3accc7, - 0x273a89, - 0x233504, - 0x2722c5, - 0x2d7645, - 0x254448, - 0x22b4c5, - 0x2a7809, - 0x2af2c7, - 0x2af2cb, - 0x2d1046, - 0x228789, - 0x2804c8, - 0x271c05, - 0x20b008, - 0x2359c8, - 0x207ec7, - 0x27d4c7, - 0x27ae49, - 0x229187, - 0x32d3c9, - 0x2aaf4c, - 0x312a08, - 0x2b9b49, - 0x2be7c7, - 0x27b609, - 0x3b0107, - 0x2c6188, - 0x3afac5, - 0x2fb046, - 0x2b8788, - 0x2f8b88, - 0x279b49, - 0x216d47, - 0x26cb45, - 0x20e3c9, - 0x2c4086, - 0x28b884, - 0x2e6f46, - 0x233908, - 0x2426c7, - 0x265a08, - 0x367fc9, - 0x261a47, - 0x299886, - 0x2037c4, - 0x364689, - 0x3313c8, - 0x24b487, - 0x306e46, - 0x3b20c6, - 0x330b44, - 0x27f886, - 0x205c83, - 0x308149, - 0x2056c6, - 0x2a61c5, - 0x29a646, - 0x2a3505, - 0x27a688, - 0x25a607, - 0x362446, - 0x355c86, - 0x32b888, - 0x29c847, - 0x296205, - 0x29ab48, - 0x39ea48, - 0x3ae808, - 0x228bc5, - 0x2fb0c6, - 0x2f1fc9, - 0x257584, - 0x3760cb, - 0x21b30b, - 0x22bb49, - 0x205d03, + 0x32ccc7, + 0x2c8c08, + 0x38d688, + 0x354b05, + 0x3a3946, + 0x278cc6, + 0x244609, + 0x2b01c7, + 0x2ac006, + 0x313787, + 0x210103, + 0x23bc44, + 0x2a1785, + 0x232804, + 0x3833c4, + 0x27fdc7, + 0x26c147, + 0x22e704, + 0x29b610, + 0x3b3c47, + 0x200645, + 0x24c20c, + 0x20a8c4, + 0x2c1488, + 0x24ed89, + 0x35acc6, + 0x334c48, + 0x215244, + 0x36c4c8, + 0x22fb06, + 0x2accc8, + 0x29c506, + 0x2bec0b, + 0x202ac5, + 0x2c8748, + 0x215ac4, + 0x38beca, + 0x29b7c9, + 0x245f06, + 0x216f48, 0x256385, - 0x205986, - 0x229908, - 0x22de44, - 0x2c7f86, - 0x2c95c9, - 0x2c5b05, - 0x3acc06, - 0x2cf786, - 0x2160c4, - 0x2a1b4a, - 0x2a6108, - 0x2f8b86, - 0x368a05, - 0x204887, - 0x301547, - 0x334c84, - 0x21b547, - 0x2b0044, - 0x2c0a06, - 0x202e03, - 0x267105, - 0x373445, - 0x207708, - 0x2ae005, - 0x275bc9, - 0x259187, - 0x25918b, - 0x2a2d8c, - 0x2a3a0a, - 0x30bc07, - 0x200a83, - 0x2d3948, - 0x228d85, - 0x293785, - 0x338944, - 0x2c6086, - 0x236fc6, - 0x27f8c7, - 0x3656cb, - 0x29abc4, - 0x3821c4, - 0x26b904, - 0x2c25c6, - 0x213f04, - 0x2faec8, - 0x338745, - 0x23fec5, - 0x387747, - 0x203809, - 0x350005, - 0x375a4a, - 0x37b2c9, - 0x290f8a, - 0x333bc9, - 0x353144, - 0x2cda05, - 0x2c3d08, - 0x37fdcb, - 0x2f9685, - 0x38d4c6, - 0x2159c4, - 0x276106, - 0x2618c9, - 0x317e47, - 0x30b308, - 0x23fc06, - 0x2ada87, - 0x27ab48, - 0x38f586, - 0x280204, - 0x35eb87, - 0x34e905, - 0x360c07, - 0x204604, - 0x306286, - 0x218bc8, - 0x292e88, - 0x3a4ac7, - 0x217d88, - 0x2b3c45, - 0x205b44, - 0x3604c8, - 0x217e84, - 0x207ec5, - 0x2ed984, - 0x202c87, - 0x286207, - 0x27b748, - 0x2a3546, - 0x2adf85, - 0x2759c8, - 0x282b88, - 0x29c009, - 0x21b606, - 0x231948, - 0x27beca, - 0x348bc8, - 0x2d8045, - 0x275586, - 0x26d888, - 0x2eccca, - 0x341107, - 0x283985, - 0x28ef48, - 0x2b1184, - 0x24d606, - 0x2ba688, - 0x205bc6, - 0x380dc8, - 0x2573c7, - 0x3b3e86, - 0x37c504, - 0x29ce07, - 0x2fac04, - 0x261887, - 0x23108d, - 0x22bbc5, - 0x2d148b, - 0x298a46, - 0x24cb48, - 0x241584, - 0x272086, - 0x277e86, - 0x334a47, - 0x29250d, - 0x25fd07, - 0x300248, - 0x29fb05, - 0x284008, - 0x2bd146, - 0x2b3cc8, - 0x20e886, - 0x367707, - 0x368189, - 0x33f9c7, - 0x2853c8, - 0x26f705, - 0x21ed88, - 0x3b1c45, - 0x23b2c5, - 0x333e45, - 0x226743, - 0x27ca44, - 0x27d645, - 0x347b09, - 0x31b646, - 0x2b2b08, - 0x2ecec5, - 0x312447, - 0x249dca, - 0x3acb49, - 0x2a8d8a, - 0x2c9d48, - 0x21e80c, - 0x27c74d, - 0x2f86c3, - 0x380cc8, - 0x378a05, - 0x29e086, - 0x381dc6, - 0x2e3985, - 0x30ea49, - 0x310045, - 0x2759c8, - 0x279146, - 0x33f4c6, - 0x2a1649, - 0x38ed87, - 0x28c686, - 0x249d48, - 0x2c0988, - 0x2d0047, - 0x2293ce, - 0x2bd385, - 0x384685, - 0x205ac8, - 0x322d07, - 0x214782, - 0x2b7b04, - 0x23150a, - 0x24b548, - 0x203206, - 0x2949c8, - 0x257706, - 0x335988, - 0x2ac988, - 0x23b284, - 0x328945, - 0x683c04, - 0x683c04, - 0x683c04, - 0x203983, - 0x3b1f46, - 0x275e86, - 0x29924c, - 0x205b03, - 0x279c86, - 0x213f84, - 0x212b48, - 0x2c9405, - 0x231606, - 0x2b5ec8, - 0x2cb0c6, - 0x3623c6, - 0x29f788, - 0x298cc7, - 0x228f49, - 0x2e96ca, - 0x20abc4, - 0x28ae45, - 0x2a9fc5, - 0x2128c6, - 0x29da86, - 0x299c86, - 0x2ec386, - 0x229084, - 0x22908b, - 0x233904, - 0x204905, - 0x2ab5c5, - 0x203b86, - 0x359288, - 0x27c607, - 0x30b0c4, - 0x259cc3, - 0x2b0c85, - 0x2e6e07, - 0x2a4449, - 0x27c50b, - 0x27f8c7, - 0x207607, - 0x2b5dc8, - 0x312587, - 0x2a4686, - 0x242e88, - 0x299e8b, - 0x327086, - 0x213a89, - 0x29a005, - 0x2fee83, - 0x3acc06, - 0x2572c8, - 0x20e943, - 0x2e6f03, - 0x27ab46, - 0x257706, - 0x38ac8a, - 0x277545, - 0x277ccb, - 0x29a58b, - 0x240a03, - 0x20f943, - 0x2affc4, - 0x367b47, - 0x257344, - 0x2039c4, - 0x39df84, - 0x348ec8, - 0x368948, - 0x30e389, - 0x2c0fc8, - 0x3065c7, - 0x2293c6, - 0x2b274f, - 0x2bd4c6, - 0x2c9384, - 0x36878a, - 0x2e6d07, - 0x3a37c6, - 0x28b8c9, - 0x30e305, - 0x207845, - 0x30e446, - 0x21eec3, - 0x2b11c9, - 0x218ac6, - 0x367d89, - 0x397946, - 0x267105, - 0x228305, - 0x2074c3, - 0x367c88, - 0x2df587, - 0x334d84, - 0x2129c8, - 0x2d3ac4, - 0x2d4646, - 0x2a2c06, - 0x23e7c6, - 0x2c3109, - 0x293705, - 0x2d3d46, - 0x264ac9, - 0x3ac846, - 0x2b2846, - 0x387c46, - 0x2119c5, - 0x2ed986, - 0x367704, - 0x3afac5, - 0x2b8784, - 0x309246, - 0x358004, - 0x202c83, - 0x283645, - 0x2356c8, - 0x21e007, - 0x2b4549, - 0x283888, - 0x294191, - 0x2cf80a, - 0x22e247, - 0x2ee8c6, - 0x213f84, - 0x2b8888, - 0x239748, - 0x29434a, - 0x2a75cd, - 0x29c1c6, - 0x29f886, - 0x29cec6, - 0x2bab47, - 0x300305, - 0x250ec7, - 0x212a85, - 0x2af404, - 0x2a7006, - 0x27f707, - 0x2b0ecd, - 0x26d7c7, - 0x26bbc8, - 0x275cc9, - 0x275486, - 0x2a0545, - 0x210184, - 0x233a06, - 0x334b86, - 0x24b6c6, - 0x297088, - 0x211883, - 0x203b43, - 0x323585, - 0x3112c6, - 0x2ac945, - 0x23fe08, - 0x29854a, - 0x2f5cc4, - 0x212b48, - 0x292108, - 0x2039c7, - 0x2ecf89, - 0x2b5ac8, - 0x27b187, - 0x264fc6, - 0x205bca, - 0x233a88, - 0x2c5ec9, - 0x2974c8, - 0x21adc9, - 0x2e7387, - 0x2d9005, - 0x226986, - 0x2bec08, - 0x24ccc8, - 0x30bec8, - 0x22e408, - 0x204905, - 0x200884, - 0x2df288, - 0x20bdc4, - 0x3339c4, - 0x267105, - 0x28d947, - 0x2035c9, - 0x334847, - 0x231985, - 0x273686, - 0x346d46, - 0x213bc4, - 0x2a1986, - 0x2addc4, - 0x283f06, - 0x3b0586, - 0x2150c6, - 0x205285, - 0x23fcc7, - 0x200a83, - 0x3334c9, - 0x32b688, - 0x2129c4, - 0x27b00d, - 0x292f88, - 0x2f0848, - 0x2c5e46, - 0x368289, - 0x3acb49, - 0x2615c5, - 0x29864a, - 0x2863ca, - 0x28b24c, - 0x28b3c6, - 0x274446, - 0x2bd646, - 0x269509, - 0x29e2c6, - 0x250f06, - 0x310106, - 0x259348, - 0x217d86, - 0x2c344b, - 0x28dac5, - 0x23fec5, - 0x2746c5, - 0x202606, - 0x205b83, - 0x23e746, - 0x26d747, - 0x2b8745, - 0x379c85, - 0x3a62c5, - 0x2eb2c6, - 0x261684, - 0x311e06, - 0x28f789, - 0x20248c, - 0x2af148, - 0x28f8c4, - 0x2ed746, - 0x298b46, - 0x2572c8, - 0x2160c8, - 0x202389, - 0x204887, - 0x238509, - 0x24c346, - 0x22f904, - 0x20edc4, - 0x27a944, - 0x27ab48, - 0x20340a, - 0x34ff86, - 0x353d47, - 0x2c7687, - 0x228885, - 0x2a9f84, - 0x289586, - 0x300346, - 0x235bc3, - 0x32b4c7, - 0x273fc8, - 0x26170a, - 0x30fa88, - 0x29ddc8, - 0x358045, - 0x279405, - 0x2631c5, - 0x228c46, - 0x229d06, - 0x3aff05, - 0x308389, - 0x2a9d8c, - 0x263287, - 0x2943c8, - 0x258945, - 0x683c04, - 0x2e3d84, - 0x2d17c4, - 0x214b06, - 0x29b10e, - 0x2078c7, - 0x2bad45, - 0x25750c, - 0x2c0847, - 0x27f687, - 0x2806c9, - 0x218189, - 0x283985, - 0x32b688, - 0x2f1fc9, - 0x2f3d05, - 0x2b8688, - 0x2c2c06, - 0x360746, - 0x2f6284, - 0x33c1c8, - 0x248283, - 0x3630c4, - 0x2b0d05, - 0x305547, - 0x201ec5, - 0x27bd89, - 0x38040d, - 0x2a1f86, - 0x2e9644, - 0x2650c8, - 0x2738ca, - 0x21fe87, - 0x23a245, - 0x203c43, - 0x29a74e, - 0x25770c, - 0x2f99c7, - 0x29b2c7, - 0x204643, - 0x29e305, - 0x2d17c5, - 0x294d88, - 0x291f49, - 0x36e986, - 0x257344, - 0x22e186, - 0x32ffcb, - 0x3a694c, - 0x35dc47, - 0x2c90c5, - 0x39e948, - 0x2cfe05, - 0x368787, - 0x33b7c7, - 0x248285, - 0x205b83, - 0x371284, - 0x2041c5, - 0x383505, - 0x383506, - 0x28e848, - 0x27f707, - 0x3820c6, - 0x200a06, - 0x333d86, - 0x265689, - 0x331647, - 0x378186, - 0x3a6ac6, - 0x248346, - 0x2a8405, - 0x399a86, - 0x398f45, - 0x22b548, - 0x29154b, - 0x289386, - 0x2c76c4, - 0x2eca89, - 0x259184, - 0x2c2b88, - 0x2aab47, - 0x27dd04, - 0x2b4e88, - 0x2b9904, - 0x2a8444, - 0x3a26c5, - 0x2d96c6, - 0x348e07, - 0x23fd43, - 0x299945, - 0x316144, - 0x3846c6, - 0x261648, - 0x323ac5, - 0x28d3c9, - 0x20e5c5, - 0x2d6288, - 0x34a5c7, - 0x388948, - 0x2b4387, - 0x2f0489, - 0x362546, - 0x336186, - 0x310104, - 0x264f05, - 0x2f490c, - 0x2746c7, - 0x274cc7, - 0x2c7548, - 0x2a1f86, - 0x26d684, - 0x31b184, - 0x27acc9, - 0x2bd746, - 0x219747, - 0x349b84, - 0x31b746, - 0x27f285, - 0x2a3087, - 0x2c33c6, - 0x33be89, - 0x28b087, - 0x264607, - 0x2a14c6, - 0x23f785, - 0x278e48, - 0x218948, - 0x23acc6, - 0x323b05, - 0x251a46, - 0x206583, - 0x294c09, - 0x299a0e, - 0x2b3188, - 0x2d3bc8, - 0x23aacb, - 0x28d606, - 0x209c84, - 0x27c344, - 0x299b0a, - 0x21a207, - 0x378245, - 0x213a89, - 0x2b7785, - 0x333a07, - 0x2ff984, - 0x324c07, - 0x2d6a88, - 0x2ce546, - 0x34a889, - 0x2b5bca, - 0x21a186, - 0x292ac6, - 0x2ab545, - 0x37e405, - 0x3261c7, - 0x244208, - 0x27f1c8, - 0x23b286, - 0x228385, - 0x29d80e, - 0x328cc4, - 0x23ac45, - 0x273009, - 0x28ac88, - 0x287886, - 0x296d0c, - 0x298150, - 0x29ad4f, - 0x29c5c8, - 0x30bc07, - 0x205285, - 0x27d645, - 0x348c89, - 0x28f149, - 0x30a4c6, - 0x2f9707, - 0x393cc5, - 0x320d49, - 0x32d106, - 0x29e10d, - 0x27a809, - 0x2039c4, - 0x2b2f08, - 0x2df349, - 0x350146, - 0x273785, - 0x336186, - 0x30b1c9, - 0x38e148, - 0x210785, - 0x27bfc4, - 0x296ecb, - 0x350005, - 0x226786, - 0x27ca86, - 0x25f1c6, - 0x38c5cb, - 0x28d4c9, - 0x3b0245, - 0x388707, - 0x2cf786, - 0x231346, - 0x27bc48, - 0x2d97c9, - 0x26b98c, - 0x2e6c08, - 0x350246, - 0x345d03, - 0x334606, - 0x27d305, - 0x278008, - 0x227d86, - 0x2a32c8, - 0x245885, - 0x294505, - 0x2a1d48, - 0x301687, - 0x381d07, - 0x27f8c7, - 0x2a03c8, - 0x30bd48, - 0x262286, - 0x309087, - 0x24af47, - 0x27d1ca, - 0x24c243, - 0x202606, - 0x203545, - 0x231504, - 0x275cc9, - 0x2f0404, - 0x21e084, - 0x2989c4, - 0x29b2cb, - 0x2df4c7, - 0x29da45, - 0x2913c8, - 0x273686, - 0x273688, - 0x277486, - 0x287d45, - 0x288685, - 0x28a0c6, - 0x28b548, - 0x28b808, - 0x275e86, - 0x29120f, - 0x2946d0, - 0x358a45, - 0x200a83, - 0x24a985, - 0x2fd0c8, - 0x28f049, - 0x3ae808, - 0x34a708, - 0x330608, - 0x2df587, - 0x273349, - 0x2a34c8, - 0x2785c4, - 0x298848, - 0x254509, - 0x30aac7, - 0x296144, - 0x334908, - 0x23fa8a, - 0x2c2446, - 0x29c1c6, - 0x21b4c9, - 0x298387, - 0x2c2f88, - 0x332348, - 0x349a08, - 0x353885, - 0x37f385, - 0x23fec5, - 0x2d1785, - 0x371dc7, - 0x205b85, - 0x2b8745, - 0x36fd86, - 0x3ae747, - 0x37fd07, - 0x23fd86, - 0x2ca285, - 0x226786, - 0x25a685, - 0x2c06c8, - 0x31b5c4, - 0x3ac8c6, - 0x358844, - 0x301948, - 0x22534a, - 0x27670c, - 0x3658c5, - 0x2bac06, - 0x26bb46, - 0x323946, - 0x2fd2c4, - 0x27f545, - 0x2772c7, - 0x298409, - 0x2a4547, - 0x683c04, - 0x683c04, - 0x30af45, - 0x20f5c4, - 0x2966ca, - 0x273506, - 0x2e7044, - 0x3a3745, - 0x2eee85, - 0x300244, - 0x27c6c7, - 0x20e547, - 0x2c25c8, - 0x319188, - 0x210789, - 0x2994c8, - 0x29688b, - 0x2128c4, - 0x35d745, - 0x279045, - 0x27f849, - 0x2d97c9, - 0x2ec988, - 0x327ac8, - 0x203b84, - 0x298b85, - 0x203443, - 0x212885, - 0x2d3dc6, - 0x291d8c, - 0x2189c6, - 0x25a6c6, - 0x287b05, - 0x2eb348, - 0x3a6bc6, - 0x2eea46, - 0x29c1c6, - 0x21f40c, - 0x24b884, - 0x333eca, - 0x287a48, - 0x291bc7, - 0x316046, - 0x36ea47, - 0x2e12c5, - 0x306e46, - 0x352386, - 0x381bc7, - 0x21e0c4, - 0x202d85, - 0x273004, - 0x2af487, - 0x273248, - 0x2742ca, - 0x27a087, - 0x23ae47, - 0x30bb87, - 0x2cff49, - 0x291d8a, - 0x229043, - 0x21dfc5, - 0x215103, - 0x39dfc9, - 0x24b308, - 0x2d1bc7, - 0x3ae909, - 0x218a46, - 0x2c6b08, - 0x39a745, - 0x282c8a, - 0x216249, - 0x26b649, - 0x37af07, - 0x239849, - 0x214fc8, - 0x2edb06, - 0x2badc8, - 0x2119c7, - 0x229187, - 0x37b2c7, - 0x2d1a48, - 0x2ed5c6, - 0x23f845, - 0x2772c7, - 0x2925c8, - 0x3587c4, - 0x2a58c4, - 0x28c587, - 0x2acd07, - 0x2f1e4a, - 0x2eda86, - 0x2f984a, - 0x2b7a47, - 0x328a87, - 0x23b384, - 0x32d484, - 0x2272c6, - 0x30ed84, - 0x30ed8c, - 0x3a2005, - 0x215f09, - 0x2d6404, - 0x300305, - 0x273848, - 0x28b8c5, - 0x305546, - 0x207c84, - 0x29044a, - 0x2b14c6, - 0x29228a, - 0x20ab87, - 0x265b45, - 0x21eec5, - 0x2288ca, - 0x2a1a85, - 0x29c0c6, - 0x20bdc4, - 0x2b0146, - 0x326285, - 0x227e46, - 0x3a4acc, - 0x2cba4a, - 0x264fc4, - 0x2293c6, - 0x298387, - 0x2c8744, - 0x259348, - 0x38d3c6, - 0x29d689, - 0x2c4b89, - 0x312b09, - 0x376286, - 0x211ac6, - 0x2baf07, - 0x3082c8, - 0x2118c9, - 0x2df4c7, - 0x2b3ac6, - 0x2adb07, - 0x29cd85, - 0x328cc4, - 0x2baac7, - 0x24b105, - 0x2846c5, - 0x2fe0c7, - 0x248148, - 0x39e8c6, - 0x29344d, - 0x294f8f, - 0x29a58d, - 0x21b3c4, - 0x2357c6, - 0x2cbe08, - 0x3100c5, - 0x27d388, - 0x207d8a, - 0x2039c4, - 0x330206, - 0x27e487, - 0x33fe07, - 0x298d89, - 0x2bad85, - 0x300244, - 0x32888a, - 0x2b5689, - 0x239947, - 0x268206, - 0x350146, - 0x298ac6, - 0x35ec46, - 0x2cb70f, - 0x2cbcc9, - 0x217d86, - 0x239646, - 0x29ed49, - 0x309187, - 0x2101c3, - 0x21f586, - 0x2042c3, - 0x2e3848, - 0x2ad947, - 0x29c7c9, - 0x2a2a88, - 0x381e48, - 0x216e86, - 0x331209, - 0x33b905, - 0x2a33c4, - 0x2d90c7, - 0x269585, - 0x21b3c4, - 0x29db08, - 0x21a4c4, - 0x302b87, - 0x31c3c6, - 0x2ad005, - 0x2974c8, - 0x35000b, - 0x32bb87, - 0x228b46, - 0x2bd544, - 0x209c06, - 0x267105, - 0x24b105, - 0x278bc9, - 0x27c2c9, - 0x2291c4, - 0x229205, - 0x229405, - 0x282b06, - 0x32b788, - 0x2b7186, - 0x273e0b, - 0x2ffa0a, - 0x2fad05, - 0x288706, - 0x2f59c5, - 0x3b2585, - 0x297b47, - 0x204308, - 0x238504, - 0x2614c6, - 0x28b886, - 0x215187, - 0x2fee44, - 0x277e86, - 0x239d85, - 0x239d89, - 0x211cc4, - 0x2aa109, - 0x275e86, - 0x2b9408, - 0x229405, - 0x2c7785, - 0x227e46, - 0x26b889, - 0x218189, - 0x25a746, - 0x28ad88, - 0x257608, - 0x2f5984, - 0x32e244, - 0x32e248, - 0x317a08, - 0x238609, - 0x2d3d46, - 0x29c1c6, - 0x3151cd, - 0x2c7f86, - 0x2d8949, - 0x254785, - 0x30e446, - 0x251008, - 0x311d45, - 0x24af84, - 0x267105, - 0x27b948, - 0x296489, - 0x2730c4, - 0x306286, - 0x2e74ca, - 0x2c54c8, - 0x2f1fc9, - 0x2d114a, - 0x3ae886, - 0x295148, - 0x368545, - 0x30f908, - 0x2b4485, - 0x218909, - 0x36c449, - 0x228e82, - 0x29a005, - 0x26c7c6, - 0x275dc7, - 0x3aacc5, - 0x2f8a86, - 0x2f7e08, - 0x2a1f86, - 0x2c3bc9, - 0x274dc6, - 0x27bac8, - 0x2a90c5, - 0x244046, - 0x367808, - 0x27ab48, - 0x3b0608, - 0x2fc788, - 0x399a84, - 0x22d8c3, - 0x2c3e04, - 0x22e106, - 0x29cdc4, - 0x2d3b07, - 0x2ee949, - 0x2bcd45, - 0x332346, - 0x21f586, - 0x28e68b, - 0x2fac46, - 0x318546, - 0x3ac9c8, - 0x379bc6, - 0x265943, - 0x396f83, - 0x328cc4, - 0x231845, - 0x243147, - 0x273248, - 0x27324f, - 0x2771cb, - 0x32b588, - 0x306306, - 0x32b88e, - 0x227e43, - 0x2430c4, - 0x2fabc5, - 0x33db46, - 0x28968b, - 0x28da06, - 0x213f09, - 0x2ad005, - 0x389d88, - 0x206408, - 0x21804c, - 0x29b306, - 0x2128c6, + 0x2b0f44, + 0x2c1386, + 0x239208, + 0x27e648, + 0x322c06, + 0x3a9ec4, + 0x241846, + 0x34de87, + 0x2755c7, + 0x26210f, + 0x207347, + 0x2fb547, + 0x3709c5, + 0x353e05, + 0x29f8c9, + 0x2dd046, + 0x27cc05, + 0x280647, + 0x2e0bc8, + 0x297645, + 0x299ec6, + 0x21b1c8, + 0x2b94ca, + 0x2db4c8, + 0x28ac87, + 0x2e23c6, + 0x262506, + 0x21a5c3, + 0x216a43, + 0x27e309, + 0x28c809, + 0x2c1286, 0x2d7985, - 0x285188, - 0x276705, - 0x33c7c8, - 0x29a9ca, - 0x226809, - 0x683c04, - 0x31216582, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x323ac3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x238483, - 0x2264c3, - 0x224103, - 0x224104, - 0x22d183, - 0x2374c4, - 0x2343c3, - 0x22d684, - 0x21eb03, - 0x3aaf87, - 0x211003, - 0x2025c3, - 0x32d208, - 0x2264c3, - 0x2aeecb, - 0x2e1a03, - 0x241f86, - 0x203e42, - 0x38660b, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x2264c3, - 0x280ec3, - 0x200cc3, - 0x200882, - 0x880c8, - 0x281045, - 0x2db108, - 0x2e7e08, - 0x216582, - 0x2a0f05, - 0x340ec7, - 0x200202, - 0x2417c7, - 0x201f82, - 0x23a887, - 0x36b2c9, - 0x318908, - 0x349889, - 0x32ed82, - 0x266707, - 0x25a4c4, - 0x340f87, - 0x2ff907, - 0x233e42, - 0x211003, - 0x20e842, - 0x205902, - 0x201502, - 0x206d42, - 0x208782, - 0x217642, - 0x2a8c45, - 0x2e3cc5, - 0x16582, - 0x343c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x12003, - 0x481, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x202243, - 0x238483, - 0x2264c3, - 0x21ca03, - 0x340f2d86, - 0x107003, - 0x79ac5, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x9502, - 0x880c8, - 0x441c4, - 0xd0205, - 0x200882, - 0x2ba384, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x35bb03, - 0x2a9c05, - 0x202243, - 0x332683, - 0x238483, - 0x201f43, - 0x2264c3, - 0x217643, - 0x224183, - 0x223ec3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x216582, - 0x2264c3, - 0x880c8, - 0x21eb03, - 0x880c8, - 0x316403, - 0x22d183, - 0x232144, - 0x2343c3, - 0x21eb03, - 0x2082c2, - 0x211003, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x2082c2, - 0x2348c3, - 0x238483, - 0x2264c3, - 0x2db083, - 0x217643, - 0x200882, - 0x216582, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x241f85, - 0x1835c6, - 0x224104, - 0x203e42, - 0x880c8, - 0x200882, - 0x20448, - 0x216582, - 0xee46, - 0x167404, - 0x10f2cb, - 0x173606, - 0x131ac7, - 0x2343c3, - 0x21eb03, - 0x157f45, - 0x155dc4, - 0x202c43, - 0x4c207, - 0xcd884, - 0x238483, - 0x133184, - 0x2264c3, - 0x2e26c4, - 0x149708, - 0x155646, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x2025c3, - 0x2264c3, - 0x2e1a03, - 0x203e42, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201603, - 0x212444, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x22d684, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x241f86, - 0x2343c3, - 0x21eb03, - 0x179ac3, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x131ac7, - 0x880c8, - 0x21eb03, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x3aa2d183, - 0x2343c3, - 0x238483, - 0x2264c3, - 0x880c8, - 0x200882, - 0x216582, - 0x22d183, - 0x21eb03, - 0x238483, - 0x201502, - 0x2264c3, - 0x309dc7, - 0x20b28b, - 0x200b03, - 0x2a06c8, - 0x308047, - 0x2017c6, - 0x2bba05, - 0x2f7989, - 0x20bc48, - 0x20bc49, - 0x20bc50, - 0x359fcb, - 0x2ea589, - 0x20c783, - 0x221749, - 0x232c46, - 0x232c4c, - 0x20be48, - 0x3ac688, - 0x26e089, - 0x29bace, - 0x37cc4b, - 0x38db4c, - 0x204803, - 0x2582cc, - 0x207209, - 0x2de107, - 0x23430c, - 0x39b60a, - 0x245dc4, - 0x3b08cd, - 0x258188, - 0x2ded8d, - 0x266b86, - 0x28a70b, - 0x209dc9, - 0x318407, - 0x31d846, - 0x320f49, - 0x332a4a, - 0x302708, - 0x2e1604, - 0x272187, - 0x226a87, - 0x349d84, - 0x20f244, - 0x27e989, - 0x326ec9, - 0x20a588, - 0x2114c5, - 0x392785, - 0x20d3c6, - 0x3b0789, - 0x20800d, - 0x38d5c8, - 0x20d2c7, - 0x2bba88, - 0x22eec6, - 0x3a1504, - 0x37f645, - 0x2055c6, - 0x206104, - 0x207107, - 0x20914a, - 0x2139c4, - 0x21a0c6, - 0x21aa49, - 0x21aa4f, - 0x21b00d, - 0x21b786, - 0x220050, - 0x220446, - 0x220b87, - 0x221087, - 0x22108f, - 0x222309, - 0x227746, - 0x229747, - 0x229748, - 0x229b09, - 0x28d708, - 0x2d7d07, - 0x20cd03, - 0x3852c6, - 0x204008, - 0x29bd8a, - 0x215749, - 0x20bd83, - 0x340dc6, - 0x26130a, - 0x2ef8c7, - 0x2ddf4a, - 0x377e0e, - 0x222446, - 0x29a207, - 0x214d86, - 0x2072c6, - 0x37f18b, - 0x21d18a, - 0x21768d, - 0x211b87, - 0x310288, - 0x310289, - 0x31028f, - 0x3b218c, - 0x278289, - 0x33948e, - 0x3ab08a, - 0x368dc6, - 0x37bf86, - 0x30420c, - 0x31370c, - 0x327688, - 0x33f8c7, - 0x2131c5, - 0x29e584, - 0x24fb0e, - 0x332cc4, - 0x238a87, - 0x26274a, - 0x382554, - 0x3839cf, - 0x221248, - 0x385188, - 0x370e8d, - 0x370e8e, - 0x38fec9, - 0x22fe88, - 0x22fe8f, - 0x23400c, - 0x23400f, - 0x235507, - 0x237bca, - 0x21f18b, - 0x23a0c8, - 0x23bb47, - 0x25b08d, - 0x252506, - 0x3b0a86, - 0x23e5c9, - 0x215d48, - 0x242188, - 0x24218e, - 0x20b387, - 0x25f8c5, - 0x243a85, - 0x202084, - 0x201a86, - 0x20a488, - 0x24f103, - 0x3b154e, - 0x25b448, - 0x29ff0b, - 0x366947, - 0x3a31c5, - 0x239506, - 0x2aa947, - 0x39a248, - 0x27efc9, - 0x28f685, - 0x283688, - 0x213446, - 0x38b30a, - 0x24fa09, - 0x2343c9, - 0x2343cb, - 0x364b88, - 0x349c49, - 0x211586, - 0x2b074a, - 0x35904a, - 0x237dcc, + 0x33bd48, + 0x216f48, + 0x3597c8, + 0x26d68b, + 0x2c23c7, + 0x30a589, + 0x262388, + 0x343084, + 0x3514c8, + 0x28cd89, + 0x2ac305, + 0x2ba687, + 0x23bcc5, + 0x27e548, + 0x28fc4b, + 0x295710, + 0x2a6dc5, + 0x215a0c, + 0x348205, + 0x27be43, + 0x2a8f86, + 0x2be6c4, + 0x335086, + 0x29bf47, + 0x21b244, + 0x240b88, + 0x28304d, + 0x302945, + 0x29b104, + 0x2243c4, + 0x276949, + 0x2a11c8, + 0x317687, + 0x22fb88, + 0x27f748, + 0x277605, + 0x209287, + 0x277587, + 0x33e347, + 0x264309, + 0x233489, + 0x214c46, + 0x2bd306, + 0x262346, + 0x37f785, + 0x3a7184, + 0x200006, + 0x200386, + 0x277648, + 0x21a90b, + 0x260d07, + 0x206804, + 0x353646, + 0x2fe447, + 0x26dec5, + 0x391d05, + 0x219644, + 0x233406, + 0x200088, + 0x286a09, + 0x2510c6, + 0x284048, + 0x2b19c6, + 0x345248, + 0x306dcc, + 0x2774c6, + 0x29678d, + 0x296c0b, + 0x339545, + 0x312387, + 0x3531c6, + 0x336008, + 0x214cc9, + 0x2d0588, + 0x200645, + 0x277987, + 0x27d648, + 0x349649, + 0x28e946, + 0x250fca, + 0x335d88, + 0x2d03cb, + 0x39818c, + 0x36c5c8, + 0x27a7c6, + 0x208c88, + 0x3b77c7, + 0x32cf49, + 0x28f74d, + 0x299dc6, + 0x27b808, + 0x2b0609, + 0x2bda48, + 0x281508, + 0x2bfe0c, + 0x2c0b47, + 0x2c1887, + 0x264145, + 0x2ad587, + 0x2e0a88, + 0x2c1406, + 0x2556cc, + 0x2ef888, + 0x2ccb88, + 0x25dec6, + 0x21a507, + 0x214e44, + 0x25dc08, + 0x22200c, + 0x2ce24c, + 0x2342c5, + 0x2d0d47, + 0x3a9e46, + 0x21a486, + 0x2f9d88, + 0x3af904, + 0x28574b, + 0x36cc0b, + 0x2e23c6, + 0x282ec7, + 0x37a805, + 0x269a05, + 0x285886, + 0x256345, + 0x203b05, + 0x2cc9c7, + 0x274c49, + 0x2ac784, + 0x2fbb45, + 0x2e4bc5, + 0x2d9dc8, + 0x329d05, + 0x2b72c9, + 0x2ae5c7, + 0x2ae5cb, + 0x381306, + 0x347c89, + 0x26d108, + 0x276545, + 0x33e448, + 0x2334c8, + 0x245747, + 0x3776c7, + 0x27fe49, + 0x2acc07, + 0x28a989, + 0x2aa70c, + 0x3163c8, + 0x2b2ac9, + 0x2b3d47, + 0x27f809, + 0x26c287, + 0x398288, + 0x3b7705, + 0x2bb7c6, + 0x2c0388, + 0x308a88, + 0x27e009, + 0x203b47, + 0x269ac5, + 0x222b09, + 0x2bd6c6, + 0x28f544, + 0x30e1c6, + 0x35ffc8, + 0x232ac7, + 0x21ab08, + 0x3030c9, + 0x3a3707, + 0x29d146, + 0x312444, + 0x211609, + 0x209108, + 0x25dd87, + 0x27eb46, + 0x21a846, + 0x3b7904, + 0x2241c6, + 0x204fc3, + 0x3b1649, + 0x202a86, + 0x303345, + 0x29db06, + 0x26cac5, + 0x27dac8, + 0x36c307, + 0x381646, + 0x3b3b06, + 0x3078c8, + 0x29fa47, + 0x299e05, + 0x29b408, + 0x3a1e48, + 0x335d88, + 0x3480c5, + 0x2bb846, + 0x215349, + 0x244484, + 0x26c94b, + 0x22604b, + 0x2babc9, + 0x205043, + 0x254485, + 0x2214c6, + 0x385208, + 0x2e1f04, + 0x2e3306, + 0x2d1589, + 0x2ca445, + 0x2cc906, + 0x32ccc6, + 0x216f44, + 0x2a764a, + 0x303288, + 0x308a86, + 0x3b8645, + 0x37a687, + 0x2e0fc7, + 0x3a3944, + 0x226287, + 0x2aecc4, + 0x33bf46, + 0x2096c3, + 0x264305, + 0x32ad45, + 0x207588, + 0x24d985, + 0x277209, + 0x25da47, + 0x25da4b, + 0x2a148c, + 0x2a224a, + 0x300187, + 0x203503, + 0x3afc08, + 0x348285, + 0x2976c5, + 0x205104, + 0x398186, + 0x24ed86, + 0x224207, + 0x33448b, + 0x286004, + 0x2e6684, + 0x21f044, + 0x2cafc6, + 0x21b244, + 0x2bb648, + 0x342445, + 0x21ba45, + 0x359707, + 0x312489, + 0x345c45, + 0x37424a, + 0x26ac89, + 0x2996ca, + 0x3a2b49, + 0x33fec4, + 0x2cc305, + 0x2b6c48, + 0x2cd9cb, + 0x244245, + 0x2f2fc6, + 0x213e84, + 0x277746, + 0x3a3589, + 0x353707, + 0x3179c8, + 0x2a0a86, + 0x34de07, + 0x27e648, + 0x3747c6, + 0x375604, + 0x365ac7, + 0x357305, 0x367287, - 0x2a998a, - 0x27258b, - 0x272599, - 0x2da488, - 0x242005, - 0x25b246, - 0x2ed389, - 0x318e06, - 0x21250a, - 0x2f31c6, - 0x212104, - 0x2bf38d, - 0x3412c7, - 0x212109, - 0x244d45, - 0x244e88, - 0x245389, - 0x2455c4, - 0x245cc7, - 0x245cc8, - 0x246347, - 0x263e88, - 0x24c807, - 0x36f505, - 0x2567cc, - 0x256e89, - 0x2d9a8a, - 0x38ec09, - 0x221849, - 0x26b00c, - 0x259b8b, - 0x259e48, - 0x25bac8, - 0x25ee84, - 0x27d9c8, - 0x282309, - 0x39b6c7, - 0x21ac86, - 0x399907, - 0x325e89, - 0x366ecb, - 0x324907, - 0x3714c7, - 0x20acc7, - 0x2ded04, - 0x2ded05, - 0x2a81c5, - 0x337ecb, - 0x3981c4, - 0x319fc8, - 0x25f4ca, - 0x213507, - 0x346547, - 0x288f12, - 0x283e06, - 0x231ac6, - 0x322fce, - 0x361506, - 0x28edc8, - 0x28ff4f, - 0x2df148, - 0x284c08, - 0x35f54a, - 0x35f551, - 0x2a274e, - 0x23be4a, - 0x23be4c, - 0x230087, - 0x230090, - 0x204ac8, - 0x2a2945, - 0x2aad0a, - 0x20614c, - 0x2b3e0d, - 0x2ac3c6, - 0x2ac3c7, - 0x2ac3cc, - 0x2efc8c, - 0x2da98c, - 0x28c98b, - 0x283044, - 0x21b644, - 0x3741c9, - 0x2d72c7, - 0x2e94c9, - 0x358e89, - 0x36bb47, - 0x39b486, - 0x39b489, - 0x3a4a43, - 0x2a208a, - 0x29e7c7, - 0x30b6cb, - 0x21750a, - 0x23a9c4, - 0x353e86, - 0x27a309, - 0x30ec04, - 0x3a20ca, - 0x228e45, - 0x2b6485, - 0x2b648d, - 0x2b67ce, - 0x39f105, - 0x3167c6, - 0x241b87, - 0x26748a, - 0x39a446, - 0x35a2c4, - 0x35e2c7, - 0x210ecb, - 0x22ef87, - 0x202104, - 0x265d46, - 0x265d4d, - 0x325b4c, - 0x32fd86, - 0x38d7ca, - 0x225806, - 0x210288, - 0x263507, - 0x23660a, - 0x23c3c6, - 0x211a83, - 0x251186, - 0x203e88, - 0x296a8a, - 0x24aa47, - 0x24aa48, - 0x267b84, - 0x27b2c7, - 0x2c4108, - 0x2a3648, - 0x286808, - 0x27fa0a, - 0x2cf145, - 0x2cf3c7, - 0x23bc93, - 0x22d206, - 0x2b1648, - 0x224709, - 0x241688, - 0x216f0b, - 0x2b7848, - 0x211004, - 0x2a1e46, - 0x3b3106, - 0x2d9509, - 0x385c07, - 0x2568c8, - 0x287bc6, - 0x3a17c4, - 0x2c2e45, - 0x2bdc88, - 0x2be28a, - 0x2bf008, - 0x2c3906, - 0x29718a, - 0x233588, - 0x2c8548, - 0x2c9908, - 0x2c9f46, - 0x2cc006, - 0x31098c, - 0x2cc5d0, - 0x286fc5, - 0x2def48, - 0x2f8310, - 0x2def50, - 0x20bace, - 0x31060e, - 0x310614, - 0x31d9cf, - 0x31dd86, - 0x342211, - 0x349e53, - 0x34a2c8, - 0x27fd45, - 0x358288, - 0x20f985, - 0x22b24c, - 0x24bf89, - 0x2388c9, - 0x399687, - 0x240589, - 0x215a47, - 0x2b9d86, - 0x37f447, - 0x20c185, - 0x212043, - 0x24f2c9, - 0x217a49, - 0x379ac3, - 0x3aabc4, - 0x34ae4d, - 0x3558cf, - 0x2fe005, - 0x31aa06, - 0x20cfc7, - 0x21d5c7, - 0x285d86, - 0x285d8b, - 0x2a3bc5, - 0x258ac6, - 0x208487, - 0x26d109, - 0x2de6c6, - 0x364505, - 0x21c08b, - 0x22e946, - 0x246045, - 0x27e148, - 0x2d8748, - 0x2ca44c, - 0x2ca450, - 0x2ce7c9, - 0x2d5587, - 0x2f6c4b, - 0x2d5d46, - 0x2d7bca, - 0x2d928b, - 0x2d9d0a, - 0x2d9f86, - 0x2daf45, - 0x307f46, - 0x274f88, - 0x39974a, - 0x370b1c, - 0x2e1acc, - 0x2e1dc8, - 0x241f85, - 0x2e42c7, - 0x29b706, - 0x273c45, - 0x21dd86, - 0x285f48, - 0x2b5907, - 0x29b9c8, - 0x29a30a, - 0x3212cc, - 0x321549, - 0x224a87, - 0x282844, - 0x244386, - 0x28478a, - 0x358f85, - 0x3637cc, - 0x364f08, - 0x360d08, - 0x3b188c, - 0x20c8cc, - 0x20da49, - 0x20dc87, - 0x22d34c, - 0x29d284, - 0x2e83ca, - 0x2ad2cc, - 0x26eb4b, - 0x39070b, - 0x3a5946, - 0x23c107, - 0x2302c7, - 0x2302cf, - 0x2f0c11, - 0x3b3a12, - 0x23c90d, - 0x23c90e, - 0x23cc4e, - 0x31db88, - 0x31db92, - 0x23ea88, - 0x201407, - 0x248bca, - 0x20d888, - 0x3614c5, - 0x371c0a, - 0x220987, - 0x2da0c4, + 0x200104, + 0x353146, + 0x2f4308, + 0x296dc8, + 0x2e6047, + 0x274fc8, + 0x294fc5, + 0x204e84, + 0x3711c8, + 0x2750c4, + 0x216e05, + 0x2f5fc4, + 0x2fdfc7, + 0x288c07, + 0x27f948, + 0x2c8d86, + 0x24d905, + 0x277008, + 0x2db6c8, + 0x29f209, + 0x226346, + 0x22f588, + 0x38bd4a, + 0x26df48, + 0x2e5d85, + 0x20b306, + 0x26ab48, + 0x277a4a, + 0x210f87, + 0x284c45, + 0x292708, + 0x2ade04, + 0x265886, + 0x2c1c08, + 0x204f06, + 0x38e7c8, + 0x28f187, + 0x203346, + 0x2b4b04, + 0x284fc7, + 0x2b0d84, + 0x3a3547, + 0x28e60d, + 0x27b645, + 0x2cd54b, + 0x29c606, + 0x24e848, + 0x240b44, + 0x350d06, + 0x27ae86, + 0x208fc7, + 0x29644d, + 0x243cc7, + 0x2b12c8, + 0x269b85, + 0x278648, + 0x2c4a86, + 0x295048, + 0x228086, + 0x33d987, + 0x300449, + 0x343ac7, + 0x287dc8, + 0x2706c5, + 0x21b608, + 0x21a3c5, + 0x3a4245, + 0x3a2dc5, + 0x234543, + 0x2809c4, + 0x262545, + 0x337809, + 0x27ea46, + 0x2dc5c8, + 0x377485, + 0x2b2e87, + 0x2a78ca, + 0x2cc849, + 0x2cad4a, + 0x2d1d08, + 0x2276cc, + 0x2806cd, + 0x2fc003, + 0x38e6c8, + 0x3abd45, + 0x2b9286, + 0x379f86, + 0x2e58c5, + 0x313889, + 0x33cc45, + 0x277008, + 0x2552c6, + 0x347806, + 0x2a0289, + 0x393947, + 0x28ff06, + 0x2a7848, + 0x33bec8, + 0x2daec7, + 0x2ace4e, + 0x2c4cc5, + 0x349545, + 0x204e08, + 0x21fcc7, + 0x21a882, + 0x2bf984, + 0x334f8a, + 0x25de48, + 0x2fe546, + 0x298ac8, + 0x278cc6, + 0x332608, + 0x2ac008, + 0x3a4204, + 0x2b33c5, + 0x676384, + 0x676384, + 0x676384, 0x202b43, - 0x311185, - 0x35f7c7, - 0x39fe87, - 0x2b400e, - 0x3366cd, - 0x338149, - 0x20dfc5, - 0x35d103, - 0x24ea46, - 0x36fb85, - 0x271a48, - 0x2b2449, - 0x25b285, - 0x25b28f, - 0x2dad87, - 0x2f78c5, - 0x306b0a, - 0x27fc06, - 0x23dd09, - 0x2ea18c, - 0x2ebe09, - 0x378a86, - 0x25f2cc, - 0x2ec206, - 0x2ef3c8, - 0x2ef5c6, - 0x2da606, - 0x280604, - 0x25a1c3, - 0x35760a, - 0x369111, - 0x38c04a, - 0x3627c5, - 0x2a64c7, - 0x253647, - 0x2c4204, - 0x2c420b, - 0x318788, - 0x2b3006, - 0x2c75c5, - 0x38b604, - 0x262b49, - 0x29f2c4, - 0x21da87, - 0x322045, - 0x322047, - 0x323205, - 0x2a8d03, - 0x2012c8, - 0x27f30a, - 0x23fd43, - 0x28108a, - 0x26db46, - 0x25b00f, - 0x356849, - 0x3b14d0, - 0x2e22c8, - 0x2c45c9, - 0x293287, - 0x265ccf, - 0x3aecc4, - 0x22d704, - 0x219f46, - 0x222b86, - 0x3a5dca, - 0x3903c6, - 0x33eb87, - 0x2f6fc8, - 0x2f71c7, - 0x2f7bc7, - 0x34b94a, - 0x2fa14b, - 0x38e7c5, - 0x3b3648, - 0x238b83, - 0x261d0c, - 0x212f4f, - 0x2594cd, - 0x2bb187, - 0x338289, - 0x22f4c7, - 0x25a288, - 0x38274c, - 0x2a6c48, - 0x252cc8, - 0x30c28e, - 0x31f814, - 0x31fd24, - 0x33f28a, - 0x35a54b, - 0x215b04, - 0x215b09, - 0x330288, - 0x244545, - 0x24ec0a, - 0x36b187, - 0x307e44, - 0x323ac3, - 0x22d183, - 0x2374c4, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x202243, - 0x211003, - 0x2cc5c6, - 0x212444, - 0x238483, - 0x2264c3, - 0x21bd03, - 0x200882, - 0x323ac3, - 0x216582, - 0x22d183, - 0x2374c4, - 0x2343c3, - 0x21eb03, - 0x202243, - 0x2cc5c6, - 0x238483, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x238483, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x212444, - 0x238483, - 0x2264c3, - 0x200882, - 0x2f5003, - 0x216582, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x202ec2, - 0x200482, - 0x216582, - 0x22d183, - 0x22b782, - 0x200a82, - 0x201604, - 0x307b04, - 0x219382, + 0x21a6c6, + 0x2774c6, + 0x29cb0c, + 0x203383, + 0x27e146, + 0x2151c4, + 0x247e88, + 0x2d13c5, + 0x335086, + 0x2bcac8, + 0x2d2bc6, + 0x3815c6, + 0x245d08, + 0x2a1807, + 0x2ac9c9, + 0x2f214a, + 0x22b484, + 0x215305, + 0x2a96c5, + 0x247c06, + 0x313486, + 0x29d546, + 0x2f5546, + 0x2acb04, + 0x2acb0b, + 0x231804, + 0x29ccc5, + 0x2aad85, + 0x312806, + 0x3a6308, + 0x280587, + 0x317784, + 0x236203, + 0x2ad905, + 0x306047, + 0x28048b, + 0x207487, + 0x2bc9c8, + 0x2e62c7, + 0x370b06, + 0x279bc8, + 0x2a820b, + 0x21ff46, + 0x212309, + 0x2a8385, + 0x30a343, + 0x2cc906, + 0x28f088, + 0x213403, + 0x24f403, + 0x27e646, + 0x278cc6, + 0x35d10a, + 0x27a805, + 0x27accb, + 0x29da4b, + 0x23ef83, + 0x202843, + 0x2aec44, + 0x278a87, + 0x28f104, + 0x244504, + 0x2e6404, + 0x26e248, + 0x3b8588, + 0x3baf89, + 0x393188, + 0x2b9dc7, + 0x247846, + 0x2dc20f, + 0x2c4e06, + 0x2d1344, + 0x3b83ca, + 0x305f47, + 0x3b9606, + 0x28f589, + 0x3baf05, + 0x2076c5, + 0x3bb046, + 0x21b743, + 0x2ade49, + 0x21eec6, + 0x3afa89, + 0x382bc6, + 0x264305, + 0x2346c5, + 0x207343, + 0x278bc8, + 0x20d787, + 0x396784, + 0x247d08, + 0x2e1244, + 0x2f1006, + 0x2a8f86, + 0x23c346, + 0x2c8609, + 0x297645, + 0x3519c6, + 0x2582c9, + 0x2c41c6, + 0x26e2c6, + 0x387886, + 0x2160c5, + 0x2f5fc6, + 0x33d984, + 0x3b7705, + 0x2c0384, + 0x2b2246, + 0x3532c4, + 0x203c43, + 0x284745, + 0x2331c8, + 0x25e607, + 0x2b8209, + 0x284b48, + 0x297e11, + 0x32cd4a, + 0x2e2307, + 0x2e7246, + 0x2151c4, + 0x2c0488, + 0x22e448, + 0x297fca, + 0x2b708d, + 0x268686, + 0x245e06, + 0x285086, + 0x21ba47, + 0x2b1385, + 0x3912c7, + 0x247dc5, + 0x2ae704, + 0x2a6206, + 0x224047, + 0x2adb4d, + 0x26aa87, + 0x21f308, + 0x277309, + 0x20b206, + 0x28e8c5, + 0x22cb04, + 0x3600c6, + 0x3a3846, + 0x25dfc6, + 0x299348, + 0x215f83, + 0x208fc3, + 0x352105, + 0x277dc6, + 0x2abfc5, + 0x2a0c88, + 0x29c10a, + 0x282084, + 0x247e88, + 0x295f08, + 0x312647, + 0x377549, + 0x2bc6c8, + 0x286a87, + 0x2587c6, + 0x204f0a, + 0x360148, + 0x2f98c9, + 0x2a1288, + 0x221609, + 0x2e7107, + 0x2f2f05, + 0x26d886, + 0x2c1288, + 0x27e7c8, + 0x296088, + 0x2e24c8, + 0x29ccc5, + 0x208a84, + 0x20d488, + 0x23e2c4, + 0x3a2944, + 0x264305, + 0x2917c7, + 0x312249, + 0x208dc7, + 0x210cc5, + 0x274846, + 0x34f606, 0x212444, - 0x201502, - 0x2264c3, - 0x21bd03, - 0x3a5946, - 0x221e42, - 0x206202, - 0x224dc2, - 0x3d224643, - 0x3d626703, - 0x53d46, - 0x53d46, - 0x224104, - 0x140a30a, - 0x16970c, - 0x165f0c, - 0x798cd, - 0xdb7c7, - 0x1b908, - 0x22f08, - 0x1a7eca, - 0x3e31f345, - 0x11f349, - 0x163048, - 0x1ac10a, - 0x16348e, - 0x144148b, - 0x167404, - 0x2988, - 0x16e847, - 0x178587, - 0x112089, - 0x10ec87, - 0x132d48, - 0x1a2f89, - 0x17a845, - 0x5074e, - 0xa910d, - 0x131948, - 0x3e6d7e86, - 0x60c47, - 0x62607, - 0x67347, - 0x6c4c7, - 0xd382, - 0x141807, - 0x1d34c, - 0xeaec7, - 0x8ddc6, - 0xa5449, - 0xa7188, - 0xf1c2, - 0xa82, - 0x13088b, - 0x15309, - 0x33c49, - 0x2b848, - 0xb09c2, - 0x1afb89, - 0xccf89, - 0xcdbc8, - 0xce147, - 0xcf0c9, - 0xd2905, - 0xd2d10, - 0x164d46, - 0x51f05, - 0x23b4d, - 0x10e846, - 0xdc047, - 0xe26d8, - 0x108548, - 0x19104a, - 0x4114d, - 0x1402, - 0x161186, - 0x89948, - 0x180248, - 0x87f89, - 0x45e88, - 0x4da0e, - 0xe8f85, - 0x539c8, - 0x3282, - 0x155646, - 0x6c2, - 0xb81, - 0x3eae2f44, - 0x3ee90c43, + 0x2a05c6, + 0x24d744, + 0x278546, + 0x312006, + 0x213246, + 0x200645, + 0x2a0b47, + 0x203503, + 0x2079c9, + 0x3076c8, + 0x247d04, + 0x28690d, + 0x296ec8, + 0x2e3788, + 0x2f9846, + 0x300549, + 0x2cc849, + 0x3a3285, + 0x29c20a, + 0x27cf4a, + 0x29d74c, + 0x29d8c6, + 0x275446, + 0x2c4f86, + 0x2b4749, + 0x2b94c6, + 0x29fa86, + 0x33cd06, + 0x25dc08, + 0x274fc6, + 0x2ce80b, + 0x291945, + 0x21ba45, + 0x2756c5, + 0x352a46, + 0x204ec3, + 0x23c2c6, + 0x26aa07, + 0x2c0345, + 0x320585, + 0x379445, + 0x318446, + 0x31da84, + 0x31da86, + 0x292f49, + 0x3528cc, + 0x2ae448, + 0x239184, + 0x2f5c06, + 0x29c706, + 0x28f088, + 0x216f48, + 0x3527c9, + 0x37a687, + 0x2367c9, + 0x24cfc6, + 0x22e904, + 0x20ea44, + 0x280144, + 0x27e648, + 0x31208a, + 0x345bc6, + 0x353cc7, + 0x362c47, + 0x347d85, + 0x2a9684, + 0x28cd46, + 0x2b13c6, + 0x2336c3, + 0x307507, + 0x38d588, + 0x3a33ca, + 0x2cbb88, + 0x281f08, + 0x353305, + 0x339645, + 0x260e05, + 0x348146, + 0x3ad906, + 0x26c085, + 0x3b1889, + 0x2a948c, + 0x260ec7, + 0x298048, + 0x2e5c05, + 0x676384, + 0x320944, + 0x252c04, + 0x22df86, + 0x29eb0e, + 0x207747, + 0x21bc45, + 0x24440c, + 0x2e1107, + 0x223fc7, + 0x225109, + 0x217cc9, + 0x284c45, + 0x3076c8, + 0x215349, + 0x335c45, + 0x2c0288, + 0x2c2586, + 0x371446, + 0x2def04, + 0x2553c8, + 0x20b3c3, + 0x2af8c4, + 0x2ad985, + 0x3bab07, + 0x21c245, + 0x38bc09, + 0x28b30d, + 0x2a33c6, + 0x225fc4, + 0x2588c8, + 0x274a8a, + 0x2611c7, + 0x235d45, + 0x23b403, + 0x29dc0e, + 0x278ccc, + 0x2f5e07, + 0x29ecc7, + 0x200143, + 0x2b9505, + 0x252c05, + 0x298e88, + 0x295d49, + 0x239086, + 0x28f104, + 0x2e2246, + 0x27b5cb, + 0x2cc5cc, + 0x366d87, + 0x2d0305, + 0x3a1d48, + 0x2dac85, + 0x3b83c7, + 0x32cb87, + 0x247585, + 0x204ec3, + 0x26e584, + 0x21c685, + 0x2ac685, + 0x2ac686, + 0x292008, + 0x224047, + 0x37a286, + 0x26c486, + 0x3a2d06, + 0x268789, + 0x209387, + 0x25e286, + 0x2cc746, + 0x2731c6, + 0x2a7585, + 0x3b2b46, + 0x380145, + 0x329d88, + 0x29114b, + 0x28c346, + 0x362c84, + 0x2b4389, + 0x25da44, + 0x2c2508, + 0x30e2c7, + 0x281404, + 0x2bbd88, + 0x2c1684, + 0x2a75c4, + 0x286845, + 0x302986, + 0x26e187, + 0x203043, + 0x29d205, + 0x323284, + 0x349586, + 0x3a3308, + 0x38d2c5, + 0x290e09, + 0x222d05, + 0x2dbf88, + 0x215087, + 0x388588, + 0x2b8047, + 0x2fb609, + 0x264dc6, + 0x32bb46, + 0x28cac4, + 0x258705, + 0x2fce4c, + 0x2756c7, + 0x275fc7, + 0x362b08, + 0x2a33c6, + 0x26a944, + 0x328004, + 0x27fcc9, + 0x2c5086, + 0x298a07, + 0x208c04, + 0x23da46, + 0x33b785, + 0x2c88c7, + 0x2ce786, + 0x250e89, + 0x27cd87, + 0x262107, + 0x2a0106, + 0x23d985, + 0x27c548, + 0x21ed48, + 0x247a46, + 0x38d305, + 0x390586, + 0x2034c3, + 0x298d09, + 0x29d2ce, + 0x2b7d48, + 0x2e1348, + 0x24784b, + 0x291046, + 0x313104, + 0x2802c4, + 0x29d3ca, + 0x215907, + 0x25e345, + 0x212309, + 0x2bf685, + 0x3a2987, + 0x245c84, + 0x287087, + 0x2e40c8, + 0x2cd306, + 0x27b989, + 0x2bc7ca, + 0x215886, + 0x296a06, + 0x2aad05, + 0x37d085, + 0x282d07, + 0x244e48, + 0x33b6c8, + 0x3a4206, + 0x234745, + 0x31320e, + 0x2b3204, + 0x2479c5, + 0x2741c9, + 0x2dce48, + 0x28abc6, + 0x29af0c, + 0x29bd10, + 0x29e74f, + 0x29f7c8, + 0x300187, + 0x200645, + 0x262545, + 0x26e009, + 0x292909, + 0x241946, + 0x2442c7, + 0x2d0cc5, + 0x337b09, + 0x339386, + 0x2b930d, + 0x280009, + 0x244504, + 0x2b7ac8, + 0x20d549, + 0x345d86, + 0x274945, + 0x32bb46, + 0x317889, + 0x2f3c48, + 0x20dcc5, + 0x2553c4, + 0x29b0cb, + 0x345c45, + 0x29b206, + 0x280a06, + 0x265e46, + 0x276d4b, + 0x290f09, + 0x26c3c5, + 0x388347, + 0x32ccc6, + 0x334dc6, + 0x252988, + 0x302a89, + 0x21f0cc, + 0x305e48, + 0x309e46, + 0x322c03, + 0x2ba886, + 0x276b85, + 0x27b008, + 0x234146, + 0x2c8b08, + 0x248b45, + 0x279305, + 0x32eb08, + 0x332787, + 0x379ec7, + 0x224207, + 0x334c48, + 0x3002c8, + 0x2ad486, + 0x2b2087, + 0x23bb07, + 0x276a4a, + 0x201e03, + 0x352a46, + 0x2392c5, + 0x334f84, + 0x277309, + 0x2fb584, + 0x25e684, + 0x29c584, + 0x29eccb, + 0x20d6c7, + 0x313445, + 0x294cc8, + 0x274846, + 0x274848, + 0x27a746, + 0x28b085, + 0x28b645, + 0x28d886, + 0x28ee48, + 0x28f4c8, + 0x2774c6, + 0x294b0f, + 0x2987d0, + 0x3a6005, + 0x203503, + 0x22e9c5, + 0x30a4c8, + 0x292809, + 0x335d88, + 0x268608, + 0x2b8d48, + 0x20d787, + 0x274509, + 0x2c8d08, + 0x265304, + 0x29c408, + 0x2d9e89, + 0x2b27c7, + 0x299d44, + 0x208e88, + 0x2a090a, + 0x2e77c6, + 0x268686, + 0x226209, + 0x29bf47, + 0x2cba08, + 0x204848, + 0x2ddd88, + 0x35cc45, + 0x37e005, + 0x21ba45, + 0x252bc5, + 0x3b5987, + 0x204ec5, + 0x2c0345, + 0x313686, + 0x335cc7, + 0x2cd907, + 0x2a0c06, + 0x2d2245, + 0x29b206, + 0x27ba85, + 0x2b58c8, + 0x2f4284, + 0x2c4246, + 0x33b5c4, + 0x2b0f48, + 0x2c434a, + 0x2790cc, + 0x334685, + 0x21bb06, + 0x21f286, + 0x351fc6, + 0x309ec4, + 0x33ba45, + 0x27a587, + 0x29bfc9, + 0x2cb4c7, + 0x676384, + 0x676384, + 0x317605, + 0x37b944, + 0x29a8ca, + 0x2746c6, + 0x279e04, + 0x3b9585, + 0x37e405, + 0x2b12c4, + 0x280647, + 0x222c87, + 0x2cafc8, + 0x33de88, + 0x20dcc9, + 0x29cd88, + 0x29aa8b, + 0x2318c4, + 0x366885, + 0x27cc85, + 0x224189, + 0x302a89, + 0x2b4288, + 0x30e048, + 0x2d6604, + 0x29c745, + 0x217083, + 0x247bc5, + 0x351a46, + 0x295b8c, + 0x208b06, + 0x36c3c6, + 0x28ae45, + 0x3184c8, + 0x2b7ec6, + 0x2e73c6, + 0x268686, + 0x22920c, + 0x25e184, + 0x3a2e4a, + 0x28ad88, + 0x2959c7, + 0x323186, + 0x239147, + 0x2ec145, + 0x27eb46, + 0x34d406, + 0x35b847, + 0x25e6c4, + 0x2fe0c5, + 0x2741c4, + 0x2ae787, + 0x274408, + 0x2752ca, + 0x27d4c7, + 0x303407, + 0x300107, + 0x2dadc9, + 0x295b8a, + 0x21f083, + 0x25e5c5, + 0x213283, + 0x2e6449, + 0x33dc08, + 0x3709c7, + 0x335e89, + 0x21ee46, + 0x2b88c8, + 0x33a3c5, + 0x2db7ca, + 0x2d3549, + 0x2683c9, + 0x3b50c7, + 0x22e549, + 0x213148, + 0x35ba06, + 0x21bcc8, + 0x2160c7, + 0x2acc07, + 0x26ac87, + 0x2d0b48, + 0x2f5a86, + 0x2a06c5, + 0x27a587, + 0x296508, + 0x33b544, + 0x2dd244, + 0x28fe07, + 0x2ac387, + 0x2151ca, + 0x35b986, + 0x38c74a, + 0x2bf8c7, + 0x2b2fc7, + 0x246004, + 0x28aa44, + 0x2ce686, + 0x202d04, + 0x202d0c, + 0x3aff05, + 0x216d89, + 0x2d4f04, + 0x2b1385, + 0x274a08, + 0x279fc5, + 0x374246, + 0x223ec4, + 0x293c4a, + 0x2b00c6, + 0x29ba8a, + 0x22b447, + 0x21ac45, + 0x21b745, + 0x347dca, + 0x28efc5, + 0x26dfc6, + 0x23e2c4, + 0x2aedc6, + 0x282dc5, + 0x234206, + 0x2e604c, + 0x2cb14a, + 0x2587c4, + 0x247846, + 0x29bf47, + 0x2cf984, + 0x25dc08, + 0x393006, + 0x313089, + 0x2c7549, + 0x3164c9, + 0x26cb06, + 0x2161c6, + 0x21be07, + 0x3b17c8, + 0x215fc9, + 0x20d6c7, + 0x294e46, + 0x34de87, + 0x284f45, + 0x2b3204, + 0x21b9c7, + 0x23bcc5, + 0x286785, + 0x226987, + 0x247448, + 0x3a1cc6, + 0x29738d, + 0x29908f, + 0x29da4d, + 0x210d04, + 0x2332c6, + 0x2d3c08, + 0x33ccc5, + 0x276c08, + 0x24560a, + 0x244504, + 0x27bb46, + 0x26f3c7, + 0x286007, + 0x2a18c9, + 0x21bc85, + 0x2b12c4, + 0x2b330a, + 0x2bc289, + 0x22e647, + 0x265706, + 0x345d86, + 0x29c686, + 0x365b86, + 0x2d320f, + 0x2d3ac9, + 0x274fc6, + 0x22e346, + 0x31a809, + 0x2b2187, + 0x217443, + 0x229386, + 0x216a43, + 0x2e5788, + 0x34dcc7, + 0x29f9c9, + 0x2a8e08, + 0x37a008, + 0x203c86, + 0x208a49, + 0x242785, + 0x2b2244, + 0x2a99c7, + 0x2b47c5, + 0x210d04, + 0x313508, + 0x215bc4, + 0x2b1ec7, + 0x3545c6, + 0x357e85, + 0x2a1288, + 0x345c4b, + 0x331dc7, + 0x348046, + 0x2c4e84, + 0x319586, + 0x264305, + 0x23bcc5, + 0x27c2c9, + 0x280249, + 0x2acc44, + 0x2acc85, + 0x247885, + 0x2db646, + 0x3077c8, + 0x2bf046, + 0x38d3cb, + 0x35ab4a, + 0x2b0e85, + 0x28b6c6, + 0x396485, + 0x2cf485, + 0x2a54c7, + 0x352cc8, + 0x2367c4, + 0x25f806, + 0x28f546, + 0x213307, + 0x30a304, + 0x27ae86, + 0x237cc5, + 0x237cc9, + 0x2163c4, + 0x2a9809, + 0x2774c6, + 0x2c0c08, + 0x247885, + 0x362d45, + 0x234206, + 0x21efc9, + 0x217cc9, + 0x36c446, + 0x2dcf48, + 0x244508, + 0x396444, + 0x2b3644, + 0x2b3648, + 0x326dc8, + 0x2368c9, + 0x3519c6, + 0x268686, + 0x32224d, + 0x2e3306, + 0x306c89, + 0x315fc5, + 0x3bb046, + 0x391408, + 0x31d9c5, + 0x23bb44, + 0x264305, + 0x27fb48, + 0x29a689, + 0x274284, + 0x353146, + 0x279e8a, + 0x2f5d08, + 0x215349, + 0x38174a, + 0x335e06, + 0x299248, + 0x3b8185, + 0x2e0908, + 0x2b8145, + 0x21ed09, + 0x36a349, + 0x20d8c2, + 0x2a8385, + 0x269746, + 0x277407, + 0x3b05c5, + 0x308986, + 0x301448, + 0x2a33c6, + 0x2b6b09, + 0x2760c6, + 0x252808, + 0x2a89c5, + 0x23ebc6, + 0x33da88, + 0x27e648, + 0x2e7008, + 0x345f08, + 0x3b2b44, + 0x22a183, + 0x2b6d44, + 0x27d6c6, + 0x284f84, + 0x2e1287, + 0x2e72c9, + 0x2c45c5, + 0x204846, + 0x229386, + 0x291e4b, + 0x2b0dc6, + 0x3b8cc6, + 0x2c8488, + 0x3204c6, + 0x21aa43, + 0x3af743, + 0x2b3204, + 0x22f485, + 0x2b1807, + 0x274408, + 0x27440f, + 0x27a48b, + 0x3075c8, + 0x3531c6, + 0x3078ce, + 0x2319c3, + 0x2b1784, + 0x2b0d45, + 0x2b1146, + 0x28ce4b, + 0x291886, + 0x21b249, + 0x357e85, + 0x3899c8, + 0x20c688, + 0x217b8c, + 0x29ed06, + 0x247c06, + 0x2d7985, + 0x287b88, + 0x2790c5, + 0x343088, + 0x29b28a, + 0x29de89, + 0x676384, + 0x38a099c2, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x38d2c3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x205503, + 0x200983, + 0x20cf83, + 0x25ef44, + 0x2a84c3, + 0x235ac4, + 0x232403, + 0x2d5f04, + 0x2e9dc3, + 0x3b0887, + 0x209703, + 0x204e83, + 0x28b148, + 0x200983, + 0x2ae1cb, + 0x2ec883, + 0x264a86, + 0x20b0c2, + 0x22d54b, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x200983, + 0x26be43, + 0x204783, + 0x205702, + 0x16d208, + 0x325f45, + 0x23bd48, + 0x2df7c8, + 0x2099c2, + 0x37ab45, + 0x38c347, + 0x2007c2, + 0x240d87, + 0x20d882, + 0x248707, + 0x32c589, + 0x3b7d48, + 0x2ddc09, + 0x23e202, + 0x263647, + 0x36c1c4, + 0x38c407, + 0x35aa47, + 0x2bbbc2, + 0x209703, + 0x20e602, + 0x200c82, + 0x200442, + 0x2013c2, + 0x205ec2, + 0x209842, + 0x2a80c5, + 0x320885, + 0x99c2, + 0x32403, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x12083, + 0x1ec1, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x244183, + 0x205503, + 0x200983, + 0x219503, + 0x3b819d06, + 0x13f443, + 0x7df85, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x4a82, + 0x16d208, + 0x44e04, + 0xdb085, + 0x205702, + 0x26f544, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x2358c3, + 0x2a9305, + 0x244183, + 0x206343, + 0x205503, + 0x21c2c3, + 0x200983, + 0x214843, + 0x2387c3, + 0x25ed03, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2099c2, + 0x200983, + 0x16d208, + 0x2e9dc3, + 0x16d208, + 0x200c03, + 0x2a84c3, + 0x22fd84, + 0x232403, + 0x2e9dc3, + 0x202bc2, + 0x209703, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x202bc2, + 0x227f83, + 0x205503, + 0x200983, + 0x2e87c3, + 0x214843, + 0x205702, + 0x2099c2, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x264a85, + 0xe4886, + 0x25ef44, + 0x20b0c2, + 0x16d208, + 0x205702, + 0x1d848, + 0x1b4183, + 0x2099c2, + 0x3fc91386, + 0x1320c4, + 0xd95cb, + 0x13eec6, + 0x9807, + 0x232403, + 0x47208, + 0x2e9dc3, + 0xb9b45, + 0x13fb84, + 0x260f83, + 0x4ce87, + 0xd78c4, + 0x205503, + 0x7f1c4, + 0x200983, + 0x2ed844, + 0xd9388, + 0x125c86, + 0x82b48, + 0x6cf05, + 0x1fa49, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x204e83, + 0x200983, + 0x2ec883, + 0x20b0c2, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x24a5c3, + 0x211cc4, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2d5f04, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x264a86, + 0x232403, + 0x2e9dc3, + 0x176e43, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x9807, + 0x16d208, + 0x2e9dc3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x426a84c3, + 0x232403, + 0x205503, + 0x200983, + 0x16d208, + 0x205702, + 0x2099c2, + 0x2a84c3, + 0x2e9dc3, + 0x205503, + 0x200442, + 0x200983, + 0x316e87, + 0x33e6cb, + 0x22d703, + 0x241608, + 0x3b1547, + 0x20a7c6, + 0x2c2c45, + 0x372349, + 0x209488, + 0x360d49, + 0x38f790, + 0x360d4b, + 0x39e189, + 0x201b03, + 0x20fb89, + 0x230f06, + 0x230f0c, + 0x326008, + 0x3b4f08, + 0x34af09, + 0x2905ce, + 0x2dd9cb, + 0x2f364c, + 0x2030c3, + 0x263d0c, + 0x207089, + 0x2fee47, + 0x23234c, + 0x3a89ca, + 0x2030c4, + 0x2d084d, + 0x263bc8, + 0x20cf8d, + 0x273846, + 0x28decb, + 0x283349, + 0x3b8b87, + 0x32fd06, + 0x330f89, + 0x351b8a, + 0x30b148, + 0x2ec484, + 0x2fba07, + 0x34f707, + 0x2bab04, + 0x37b5c4, + 0x22a749, + 0x281d49, + 0x22ae48, + 0x210785, + 0x3b4005, + 0x20db86, + 0x2d0709, + 0x24588d, + 0x2f30c8, + 0x20da87, + 0x2c2cc8, + 0x2e1886, + 0x38b6c4, + 0x3523c5, + 0x202986, + 0x204b04, + 0x206f87, + 0x20b8ca, + 0x212244, + 0x2157c6, + 0x216a09, + 0x216a0f, + 0x21788d, + 0x2184c6, + 0x21d450, + 0x21d846, + 0x21df87, + 0x21e4c7, + 0x21e4cf, + 0x21f6c9, + 0x224c46, + 0x225347, + 0x225348, + 0x225809, + 0x246088, + 0x2e52c7, + 0x20cc83, + 0x372986, + 0x3ba948, + 0x29088a, + 0x213c09, + 0x2095c3, + 0x38c246, + 0x25f64a, + 0x29e587, + 0x2fec8a, + 0x313d4e, + 0x21f806, + 0x2a8587, + 0x20e006, + 0x207146, + 0x37de0b, + 0x20414a, + 0x317f0d, + 0x216287, + 0x33ce88, + 0x33ce89, + 0x33ce8f, + 0x2b838c, + 0x27b289, + 0x2e6a0e, + 0x3b098a, + 0x2ba246, + 0x2f4586, + 0x30b58c, + 0x30ce8c, + 0x30dc08, + 0x3439c7, + 0x2b8c45, + 0x351e04, + 0x33c90e, + 0x228d04, + 0x351747, + 0x26030a, + 0x362554, + 0x36dd8f, + 0x21e688, + 0x372848, + 0x35040d, + 0x35040e, + 0x376ec9, + 0x3a8ec8, + 0x3a8ecf, + 0x23204c, + 0x23204f, + 0x233007, + 0x236dca, + 0x2435cb, + 0x238508, + 0x239cc7, + 0x3690cd, + 0x250406, + 0x2d0a06, + 0x23c149, + 0x394648, + 0x242088, + 0x24208e, + 0x2b5007, + 0x243885, + 0x244bc5, + 0x2063c4, + 0x20aa86, + 0x22ad48, + 0x202203, + 0x2ca10e, + 0x369488, + 0x2a2fcb, + 0x200dc7, + 0x3a4045, + 0x22e206, + 0x2aa0c7, + 0x333d08, + 0x26cd09, + 0x292e45, + 0x284788, + 0x212c06, + 0x38ad4a, + 0x33c809, + 0x232409, + 0x23240b, + 0x38dc48, + 0x2ba9c9, + 0x210846, + 0x22eb8a, + 0x2dc80a, + 0x236fcc, + 0x3a6687, + 0x32c38a, + 0x26ea8b, + 0x26ea99, + 0x3b6a88, + 0x264b05, + 0x2c6086, + 0x211e49, + 0x390746, + 0x28550a, + 0x209686, + 0x202644, + 0x2c620d, + 0x202647, + 0x211149, + 0x246385, + 0x2464c8, + 0x246fc9, + 0x247784, + 0x248387, + 0x248388, + 0x248c87, + 0x261908, + 0x24d487, + 0x26c645, + 0x25488c, + 0x2550c9, + 0x2bc00a, + 0x3937c9, + 0x20fc89, + 0x275a0c, + 0x25774b, + 0x257ec8, + 0x259048, + 0x25c404, + 0x2810c8, + 0x283c89, + 0x3a8a87, + 0x216c46, + 0x2835c7, + 0x2dcac9, + 0x26e6cb, + 0x319407, + 0x200a07, + 0x22b587, + 0x20cf04, + 0x20cf05, + 0x29a545, + 0x341c0b, + 0x39c644, + 0x3b2988, + 0x26614a, + 0x212cc7, + 0x2f6707, + 0x28bed2, + 0x278446, + 0x22f706, + 0x33c24e, + 0x27aa06, + 0x292588, + 0x29374f, + 0x20d348, + 0x37f308, + 0x30eaca, + 0x30ead1, + 0x2a0e8e, + 0x24dd0a, + 0x24dd0c, + 0x21e307, + 0x3a90d0, + 0x200408, + 0x2a1085, + 0x2aa4ca, + 0x204b4c, + 0x29518d, + 0x2f7e46, + 0x2f7e47, + 0x2f7e4c, + 0x300e4c, + 0x3292cc, + 0x2873cb, + 0x284184, + 0x226384, + 0x346d89, + 0x3050c7, + 0x225e49, + 0x37e909, + 0x39f1c7, + 0x3a8846, + 0x3a8849, + 0x2ad1c3, + 0x21c74a, + 0x31a287, + 0x33eb8b, + 0x317d8a, + 0x248844, + 0x22ba46, + 0x27d749, + 0x202b84, + 0x3affca, + 0x348345, + 0x2bdd45, + 0x2bdd4d, + 0x2be08e, + 0x28cc05, + 0x323906, + 0x264687, + 0x3870ca, + 0x39b686, + 0x3616c4, + 0x36d747, + 0x2c3f0b, + 0x2e1947, + 0x33fa84, + 0x24bb86, + 0x24bb8d, + 0x21e1cc, + 0x2053c6, + 0x2f32ca, + 0x2e03c6, + 0x2ed0c8, + 0x377c47, + 0x23568a, + 0x23d6c6, + 0x216183, + 0x391586, + 0x3ba7c8, + 0x29ac8a, + 0x275807, + 0x275808, + 0x281684, + 0x24b687, + 0x279348, + 0x2bd748, + 0x27c0c8, + 0x38c94a, + 0x2da905, + 0x2cf0c7, + 0x24db53, + 0x31e806, + 0x266348, + 0x221a09, + 0x240c48, + 0x203d0b, + 0x2cb608, + 0x2a5f44, + 0x32ec06, + 0x30bac6, + 0x3027c9, + 0x2c3dc7, + 0x254988, + 0x28af06, + 0x226884, + 0x2cb8c5, + 0x2c55c8, + 0x2c5bca, + 0x2c5e88, + 0x2cbf86, + 0x29944a, + 0x2ac808, + 0x2cf788, + 0x2d18c8, + 0x2d1f06, + 0x2d3e06, + 0x38e18c, + 0x2d43d0, + 0x27d2c5, + 0x20d148, + 0x301950, + 0x20d150, + 0x38f60e, + 0x38de0e, + 0x38de14, + 0x32fe8f, + 0x330246, + 0x332d51, + 0x33d213, + 0x33d688, + 0x3b3445, + 0x241b48, + 0x386245, + 0x329a8c, + 0x291549, + 0x228b49, + 0x3201c7, + 0x236b89, + 0x380887, + 0x2f6146, + 0x3521c7, + 0x269c45, + 0x2120c3, + 0x2023c9, + 0x221cc9, + 0x376e43, + 0x27f384, + 0x32a20d, + 0x206bcf, + 0x2268c5, + 0x329986, + 0x211407, + 0x325d87, + 0x288786, + 0x28878b, + 0x2a2405, + 0x256786, + 0x2f6c07, + 0x24e489, + 0x3a7486, + 0x21d305, + 0x22854b, + 0x235946, + 0x249245, + 0x357988, + 0x306a88, + 0x2c8f0c, + 0x2c8f10, + 0x2d2409, + 0x2ffd07, + 0x32840b, + 0x2e3b86, + 0x2e518a, + 0x2e754b, + 0x2e794a, + 0x2e7bc6, + 0x2e8685, + 0x319fc6, + 0x36c808, + 0x32028a, + 0x35009c, + 0x2ec94c, + 0x2ecc48, + 0x264a85, + 0x34ea07, + 0x26bec6, + 0x274e05, + 0x21afc6, + 0x288948, + 0x2bc507, + 0x2904c8, + 0x2a868a, + 0x33130c, + 0x331589, + 0x38b847, + 0x2198c4, + 0x244c86, + 0x37ee8a, + 0x37ea05, + 0x209f8c, + 0x20e648, + 0x367388, + 0x21a00c, + 0x22550c, + 0x225a09, + 0x225c47, + 0x231d4c, + 0x23aa84, + 0x23c60a, + 0x35e6cc, + 0x26b28b, + 0x242b8b, + 0x2efec6, + 0x24a107, + 0x24c687, + 0x3a930f, + 0x2f8a51, + 0x2d8592, + 0x24c68d, + 0x24c68e, + 0x24c9ce, + 0x330048, + 0x330052, + 0x24fbc8, + 0x3b1187, + 0x24aeca, + 0x3681c8, + 0x27a9c5, + 0x3b57ca, + 0x21dd87, + 0x2e36c4, + 0x201543, + 0x2a57c5, + 0x30ed47, + 0x2f5007, + 0x29538e, + 0x3382cd, + 0x33af89, + 0x222705, + 0x35c3c3, + 0x3a78c6, + 0x36e745, + 0x2a3208, + 0x205b49, + 0x2983c5, + 0x3692cf, + 0x2d96c7, + 0x372285, + 0x20178a, + 0x2a36c6, + 0x2ed249, + 0x396ccc, + 0x2f51c9, + 0x3abdc6, + 0x265f4c, + 0x322d06, + 0x2f7588, + 0x2f7786, + 0x3b6c06, + 0x3b96c4, + 0x258243, + 0x2a1fca, + 0x327191, + 0x3a9c0a, + 0x27ee85, + 0x265047, + 0x252207, + 0x279444, + 0x27944b, + 0x3b7bc8, + 0x2b7bc6, + 0x362b85, + 0x38b044, + 0x255f09, + 0x31ad84, + 0x254f07, + 0x32f345, + 0x32f347, + 0x33c485, + 0x2a8183, + 0x3b1048, + 0x33b80a, + 0x203043, + 0x325f8a, + 0x203046, + 0x36904f, + 0x2b4f89, + 0x2ca090, + 0x2f1548, + 0x2ccc89, + 0x2971c7, + 0x24bb0f, + 0x336244, + 0x2d5f84, + 0x21d6c6, + 0x22f246, + 0x25708a, + 0x23cc46, + 0x2f58c7, + 0x300788, + 0x300987, + 0x301207, + 0x30370a, + 0x30534b, + 0x2f3dc5, + 0x2d81c8, + 0x21bb03, + 0x23800c, + 0x36f78f, + 0x2b8a4d, + 0x2a7147, + 0x33b0c9, + 0x22bcc7, + 0x24a2c8, + 0x36274c, + 0x2a5e48, + 0x250bc8, + 0x318ace, + 0x32d354, + 0x32d864, + 0x3475ca, + 0x36148b, + 0x380944, + 0x380949, + 0x27bbc8, + 0x245345, + 0x201d0a, + 0x3696c7, + 0x26f744, + 0x38d2c3, + 0x2a84c3, + 0x235ac4, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x244183, + 0x209703, + 0x2d43c6, + 0x211cc4, + 0x205503, + 0x200983, + 0x201303, + 0x205702, + 0x38d2c3, + 0x2099c2, + 0x2a84c3, + 0x235ac4, + 0x232403, + 0x2e9dc3, + 0x244183, + 0x2d43c6, + 0x205503, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x205503, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x211cc4, + 0x205503, + 0x200983, + 0x205702, + 0x2bb143, + 0x2099c2, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x201ec2, + 0x219f02, + 0x2099c2, + 0x2a84c3, + 0x202242, + 0x201fc2, + 0x3b1384, + 0x210444, + 0x227382, + 0x211cc4, + 0x200442, + 0x200983, + 0x201303, + 0x2efec6, + 0x212982, + 0x202dc2, + 0x222f02, + 0x44e0d343, + 0x4521e303, + 0x52d46, + 0x52d46, + 0x25ef44, + 0x204e83, + 0x142abca, + 0x12778c, + 0x102cc, + 0x7dd8d, + 0x129845, + 0x21347, + 0x18648, + 0x1b887, + 0x20348, + 0x19d4ca, + 0x45ed6a45, + 0x12b809, + 0xaf848, + 0x4a70a, + 0x8a64e, + 0x1440a4b, + 0x1320c4, + 0x77848, + 0x68bc8, + 0x38f47, + 0x12807, + 0x4efc9, + 0x2c07, + 0xd4ac8, + 0x1318c9, + 0x3adc5, + 0x124d4e, + 0xa8a0d, + 0x9688, + 0x4622a586, + 0x46c2a588, + 0x70cc8, + 0x117090, + 0x5f347, + 0x601c7, + 0x64547, + 0x69447, + 0xdb42, + 0x190bc7, + 0x430c, + 0x35fc7, + 0xa4246, + 0xa4909, + 0xa6388, + 0x17f42, + 0x1fc2, + 0xb8fcb, + 0x7f247, + 0x11809, + 0xbb9c9, + 0x17e248, + 0xafd42, + 0x113a49, + 0xcdf8a, + 0xc9e09, + 0xd6fc9, + 0xd7ac8, + 0xd8a47, + 0xda889, + 0xde345, + 0xde6d0, + 0x175b86, + 0x192345, + 0x5e98d, + 0xf986, + 0xe9187, + 0xed858, + 0x1b1a48, + 0xb4c8a, + 0x1c42, + 0x52f4d, + 0x27c2, + 0x5d306, + 0x8d108, + 0x86ec8, + 0x16d0c9, + 0x55b08, + 0x5fb4e, + 0x1a78c7, + 0x19d0d, + 0xf2d05, + 0x190948, + 0x194448, + 0xfacc6, + 0xc2, + 0x125c86, + 0x7b02, + 0x341, + 0x57a07, + 0xc8e83, + 0x466ee0c4, + 0x46a94443, 0x141, - 0x1650c6, + 0x10986, 0x141, 0x1, - 0x1650c6, - 0x14f60c5, - 0x245dc4, - 0x22d183, - 0x247344, - 0x201604, - 0x238483, - 0x2245c5, - 0x21ca03, - 0x215cc3, - 0x2e9cc5, - 0x223ec3, - 0x3fe2d183, - 0x2343c3, - 0x21eb03, + 0x10986, + 0xc8e83, + 0x1596bc5, + 0x2030c4, + 0x2a84c3, + 0x249944, + 0x3b1384, + 0x205503, + 0x2218c5, + 0x219503, + 0x23e743, + 0x373605, + 0x25ed03, + 0x47ea84c3, + 0x232403, + 0x2e9dc3, 0x200041, - 0x211003, - 0x307b04, - 0x212444, - 0x238483, - 0x2264c3, - 0x217643, - 0x880c8, - 0x200882, - 0x323ac3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x200a82, - 0x201604, - 0x202243, - 0x211003, - 0x238483, - 0x2025c3, - 0x2264c3, - 0x223ec3, - 0x880c8, - 0x38bcc2, - 0x16582, - 0x1462d48, - 0xf738e, - 0x40e00142, - 0x29e988, - 0x227fc6, - 0x2bb546, - 0x227947, - 0x41201102, - 0x417566c8, - 0x3af8ca, - 0x2606c8, - 0x201002, - 0x29e609, - 0x38e807, - 0x21ac06, - 0x201009, - 0x254704, - 0x2f5fc6, - 0x2d5fc4, - 0x273a04, - 0x2563c9, - 0x281786, - 0x2e3d85, - 0x220e45, - 0x3a5287, - 0x2b7cc7, - 0x243884, - 0x227b86, - 0x39fac5, - 0x202b05, - 0x2f5905, - 0x392547, - 0x366785, - 0x308bc9, - 0x2808c5, - 0x2d07c4, - 0x39a387, - 0x30584e, - 0x30fc49, - 0x322e89, - 0x348986, - 0x31e708, - 0x2b024b, - 0x2d210c, - 0x25b946, - 0x37cb07, - 0x209805, - 0x20f24a, - 0x20a689, - 0x252249, - 0x293d86, - 0x2ee6c5, - 0x28b145, - 0x361f09, - 0x2f5a8b, - 0x277606, - 0x32e5c6, - 0x20d2c4, - 0x288bc6, - 0x25f948, - 0x203d06, - 0x3a82c6, - 0x208bc8, - 0x2093c7, - 0x209589, - 0x20c445, - 0x880c8, - 0x378504, - 0x229e04, - 0x212d45, - 0x395589, - 0x223707, - 0x22370b, - 0x2255ca, - 0x22b185, - 0x41a0b602, - 0x2173c7, - 0x41e2c488, - 0x2833c7, - 0x281ac5, - 0x32594a, - 0x16582, - 0x24b90b, - 0x2adc4a, - 0x2248c6, - 0x3a31c3, - 0x230dcd, - 0x3320cc, - 0x36210d, - 0x3845c5, - 0x237205, - 0x24f147, - 0x3a8e89, - 0x3af7c6, - 0x390245, - 0x2ee3c8, - 0x288ac3, - 0x2e8108, - 0x288ac8, - 0x2bc507, - 0x2e62c8, - 0x3af3c9, - 0x236107, - 0x20ae07, - 0x335048, - 0x253384, - 0x253387, - 0x266a88, - 0x205846, - 0x3661cf, - 0x215507, - 0x2e3506, - 0x25a405, - 0x224f43, - 0x372207, - 0x36e143, - 0x246506, - 0x247f86, - 0x249686, - 0x28d1c5, - 0x263e83, - 0x3885c8, - 0x370489, - 0x38124b, - 0x249808, - 0x24c4c5, - 0x24d4c5, - 0x4223aa82, - 0x37f509, - 0x201687, - 0x258b45, - 0x2562c7, - 0x257e06, - 0x35eb05, - 0x36f9cb, - 0x259e44, - 0x260285, - 0x2603c7, - 0x271986, - 0x271fc5, - 0x27dbc7, - 0x27e647, - 0x26db04, - 0x2871ca, - 0x287688, - 0x3685c9, - 0x3a65c5, - 0x333386, - 0x25fb0a, - 0x220d46, - 0x24bb47, - 0x318a8d, - 0x2273c9, - 0x30ff45, - 0x24ff87, - 0x335608, - 0x3675c8, - 0x341b87, - 0x34a486, - 0x2116c7, - 0x247883, - 0x337ec4, - 0x35c385, - 0x38cac7, - 0x391f49, - 0x21a6c8, - 0x22fd05, - 0x382a04, - 0x240e85, - 0x2448cd, - 0x201142, - 0x3006c6, - 0x3610c6, - 0x2bde4a, - 0x3791c6, - 0x37fc45, - 0x319285, - 0x319287, - 0x38b14c, - 0x26fb8a, - 0x288886, - 0x29e445, - 0x288a06, - 0x288d47, - 0x28a9c6, - 0x28d0cc, - 0x201149, - 0x42765547, - 0x290305, - 0x290306, - 0x2906c8, - 0x2b1f05, - 0x2a4805, - 0x2a4a48, - 0x2a4c4a, - 0x42a6a242, - 0x42e0ff82, - 0x382245, - 0x29cdc3, - 0x37a688, - 0x21d083, - 0x2a4ec4, - 0x23de4b, - 0x272408, - 0x2d77c8, - 0x433255c9, - 0x2a8949, - 0x2a9006, - 0x2aa5c8, - 0x2aa7c9, - 0x2ab386, - 0x2ab505, - 0x383086, - 0x2abc09, - 0x2802c7, - 0x243f06, - 0x235c47, - 0x3af647, - 0x33b504, - 0x43743909, - 0x2c2288, - 0x3565c8, - 0x2368c7, - 0x2bd906, - 0x2fe209, - 0x331f47, - 0x2f1b0a, - 0x376848, - 0x3237c7, - 0x326086, - 0x33aa0a, - 0x249fc8, - 0x28ab05, - 0x21bf85, - 0x2bcb87, - 0x2d26c9, - 0x2d6e0b, - 0x2dd8c8, - 0x280949, - 0x249b07, - 0x3ad20c, - 0x2b1acc, - 0x2b1dca, - 0x2b204c, - 0x2bb4c8, - 0x2bb6c8, - 0x2bb8c4, - 0x2bbc89, - 0x2bbec9, - 0x2bc10a, - 0x2bc389, - 0x2bc6c7, - 0x20010c, - 0x36ef86, - 0x26de48, - 0x220e06, - 0x387346, - 0x30fe47, - 0x341d08, - 0x25180b, - 0x283287, - 0x2aeb49, - 0x2474c9, - 0x255f87, - 0x2d6204, - 0x35efc7, - 0x29f606, - 0x219006, - 0x38d985, - 0x2ccd88, - 0x20ef04, - 0x20ef06, - 0x26fa4b, - 0x2a2389, - 0x364086, - 0x3a8409, - 0x3926c6, - 0x2fec08, - 0x214803, - 0x2083c5, - 0x219149, - 0x21fe05, - 0x3a6084, - 0x270fc6, - 0x3a5a85, - 0x2e6846, - 0x2fbc07, - 0x367186, - 0x2952cb, - 0x2b0647, - 0x2d2586, - 0x374346, - 0x3a5346, - 0x243849, - 0x26238a, - 0x2b6045, - 0x21f68d, - 0x2a4d46, - 0x391246, - 0x2e21c6, - 0x210205, - 0x2d3007, - 0x2962c7, - 0x23b68e, - 0x211003, - 0x2bd8c9, - 0x318fc9, - 0x20f647, - 0x276b87, - 0x299d85, - 0x306f45, - 0x43a7eacf, - 0x2c4807, - 0x2c49c8, - 0x2c5a44, - 0x2c5d06, - 0x43e43b02, - 0x2ca1c6, - 0x2cc5c6, - 0x251b4e, - 0x2e7f4a, - 0x21cd06, - 0x33fcca, - 0x3b4089, - 0x316fc5, - 0x393b48, - 0x3ad0c6, - 0x34ab88, - 0x30f788, - 0x25ab8b, + 0x209703, + 0x210444, + 0x211cc4, + 0x205503, + 0x200983, + 0x214843, + 0x16d208, + 0x205702, + 0x38d2c3, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x201fc2, + 0x3b1384, + 0x244183, + 0x209703, + 0x205503, + 0x204e83, + 0x200983, + 0x25ed03, + 0x16d208, + 0x36f502, + 0x99c2, + 0x1456108, + 0x100b4e, + 0x48e016c2, + 0x31a448, + 0x234386, + 0x209cc6, + 0x233d07, + 0x4920c202, + 0x49768ec8, + 0x20884a, + 0x25cc88, + 0x200242, + 0x31a0c9, + 0x2f3e07, + 0x216bc6, + 0x3b0d89, + 0x2cf204, + 0x20a6c6, + 0x2dbcc4, + 0x26ffc4, + 0x2544c9, + 0x326686, + 0x320945, + 0x22c445, + 0x384e07, + 0x2bfb47, + 0x28fa44, + 0x233f46, + 0x2fb005, + 0x2fde45, + 0x3963c5, + 0x3b3dc7, + 0x200c05, + 0x314b49, + 0x312945, + 0x333e44, + 0x39b5c7, + 0x31974e, + 0x32e5c9, + 0x33c109, + 0x3a64c6, + 0x23d408, + 0x26d98b, + 0x2aeecc, + 0x37f806, + 0x2dd887, + 0x20a305, + 0x37b5ca, + 0x22af49, + 0x20bf49, + 0x24ff86, + 0x2f69c5, + 0x27ce45, + 0x3490c9, + 0x39654b, + 0x273346, + 0x33a786, + 0x202504, + 0x28bb86, + 0x243908, + 0x3ba646, + 0x214386, + 0x207c08, + 0x20bb47, + 0x20bd09, + 0x20c585, + 0x16d208, + 0x212784, + 0x3ada04, + 0x283785, + 0x399a49, + 0x220f07, + 0x220f0b, + 0x22394a, 0x227a45, - 0x366808, - 0x208d0c, - 0x281987, - 0x248b06, - 0x22f108, - 0x201948, - 0x44208382, - 0x362b0b, - 0x280bc9, - 0x363e89, - 0x209987, - 0x30e688, - 0x4460c648, - 0x3a8c0b, - 0x22b6c9, - 0x20870d, - 0x217e88, - 0x22c288, - 0x44a02282, - 0x31d784, - 0x44e23b42, - 0x2ebc06, - 0x452016c2, - 0x3a180a, - 0x201fc6, - 0x225f08, - 0x31ea08, - 0x2b7546, - 0x386986, - 0x2e6606, - 0x2a00c5, - 0x23b184, - 0x456feb84, - 0x338986, - 0x269047, - 0x45a2ab47, - 0x32be0b, - 0x305c09, - 0x23724a, - 0x251404, - 0x3193c8, - 0x243ccd, - 0x2e07c9, - 0x2e0a08, - 0x2e1149, - 0x2e26c4, - 0x200f04, - 0x269885, - 0x30b48b, - 0x272386, - 0x3387c5, - 0x281c49, - 0x227c48, - 0x29ca84, - 0x20f3c9, - 0x2b0585, - 0x2b7d08, - 0x20b4c7, - 0x323288, - 0x27a506, - 0x217287, - 0x28eb89, - 0x21c209, - 0x2460c5, - 0x231445, - 0x45e25242, - 0x39a144, - 0x2fd585, - 0x2a9746, - 0x2f89c5, - 0x268307, - 0x243405, + 0x49a08d42, + 0x33ea47, + 0x49e28908, + 0x2afb87, + 0x350e85, + 0x20c1ca, + 0x99c2, + 0x34dfcb, + 0x24d5ca, + 0x221bc6, + 0x282bc3, + 0x28e34d, + 0x3492cc, + 0x35084d, + 0x245c45, + 0x32ae05, + 0x202247, + 0x3aba49, + 0x208746, + 0x23cac5, + 0x2d29c8, + 0x28ba83, + 0x2dfac8, + 0x28ba88, + 0x2c3747, + 0x309708, + 0x3a7209, + 0x2cc447, + 0x33e247, + 0x396a48, + 0x251f44, + 0x251f47, + 0x273748, + 0x3a3ac6, + 0x205f4f, + 0x211a07, + 0x2e5446, + 0x225d85, + 0x223083, + 0x371847, + 0x36c043, + 0x248e46, + 0x24aa86, + 0x24b286, + 0x290c05, + 0x261903, + 0x388208, + 0x36f009, + 0x38224b, + 0x24b408, + 0x24d145, + 0x24f605, + 0x4a248902, + 0x352289, + 0x3b1407, + 0x256805, + 0x2543c7, + 0x2559c6, + 0x365a45, + 0x36e58b, + 0x257ec4, + 0x25c845, + 0x25c987, + 0x272cc6, + 0x273105, + 0x2812c7, + 0x281a07, + 0x2cd884, + 0x289c0a, + 0x28a0c8, + 0x3b8209, + 0x241e85, + 0x207886, + 0x243aca, + 0x22c346, + 0x261e07, + 0x3b7ecd, + 0x29c809, + 0x38d185, + 0x314187, + 0x332288, + 0x33d848, + 0x3b3107, + 0x379d86, + 0x215dc7, + 0x249f43, + 0x341c04, + 0x363485, + 0x392707, + 0x395dc9, + 0x22be48, + 0x344c45, + 0x23cd84, + 0x246245, + 0x24b80d, + 0x200f82, + 0x373746, + 0x25d246, + 0x2c578a, + 0x376546, + 0x37edc5, + 0x33df85, + 0x33df87, + 0x38ab8c, + 0x270b4a, + 0x28b846, + 0x2b9645, + 0x28b9c6, + 0x28bd07, + 0x28e186, + 0x290b0c, + 0x3b0ec9, + 0x4a610e07, + 0x293b05, + 0x293b06, + 0x293ec8, + 0x23b705, + 0x2a2c85, + 0x2a3848, + 0x2a3a4a, + 0x4aa4ecc2, + 0x4ae0ee02, + 0x2e6705, + 0x284f83, + 0x3adf08, + 0x204043, + 0x2a3cc4, + 0x2ed38b, + 0x26dd48, + 0x2e4d48, + 0x4b349909, + 0x2a7dc9, + 0x2a8906, + 0x2a9d48, + 0x2a9f49, + 0x2aab46, + 0x2aacc5, + 0x3843c6, + 0x2ab5c9, + 0x331f47, + 0x23ea86, + 0x233747, + 0x2085c7, + 0x32c8c4, + 0x4b7b1d49, + 0x2cab88, + 0x368dc8, + 0x383447, + 0x2c5246, + 0x226ac9, + 0x209c87, + 0x32e90a, + 0x38c588, + 0x3af5c7, + 0x3b9786, + 0x24f38a, + 0x262708, + 0x2dccc5, + 0x226645, + 0x2ee487, + 0x2f7349, + 0x36510b, + 0x315008, + 0x3129c9, + 0x24bfc7, + 0x2b550c, + 0x2b5c4c, + 0x2b5f4a, + 0x2b61cc, + 0x2c2708, + 0x2c2908, + 0x2c2b04, + 0x2c2ec9, + 0x2c3109, + 0x2c334a, + 0x2c35c9, + 0x2c3907, + 0x3af00c, + 0x241146, + 0x34acc8, + 0x22c406, + 0x32e7c6, + 0x38d087, + 0x3b3288, + 0x39034b, + 0x2afa47, + 0x352489, + 0x3445c9, + 0x249ac7, + 0x278a04, + 0x265187, + 0x2db346, + 0x214a06, + 0x2f3485, + 0x2a5888, + 0x291444, + 0x291446, + 0x270a0b, + 0x21ca49, + 0x214b46, + 0x21c489, + 0x3b3f46, + 0x254688, + 0x223b83, + 0x2f6b45, + 0x22edc9, + 0x261145, + 0x2f9684, + 0x272206, + 0x231545, + 0x228f86, + 0x3056c7, + 0x26e986, + 0x3a304b, + 0x22ea87, + 0x3379c6, + 0x346f06, + 0x384ec6, + 0x28fa09, + 0x2ef14a, + 0x2b3505, + 0x2170cd, + 0x2a3b46, + 0x235546, + 0x2b4e86, + 0x2ed045, + 0x2de9c7, + 0x2e14c7, + 0x3581ce, + 0x209703, + 0x2c5209, + 0x391dc9, + 0x37b9c7, + 0x358f07, + 0x29d645, + 0x27ec45, + 0x4ba2a88f, + 0x2ccec7, + 0x2cd088, + 0x2cd484, + 0x2cde46, + 0x4be44c42, + 0x2d2186, + 0x2d43c6, + 0x391f8e, + 0x2df90a, + 0x357b06, + 0x285eca, + 0x203549, + 0x324105, + 0x398008, + 0x3b5606, + 0x38cec8, + 0x26f088, + 0x28eb8b, + 0x233e05, + 0x200c88, + 0x207d4c, + 0x2bd507, + 0x24ae06, + 0x2e28c8, + 0x20a948, + 0x4c208442, + 0x20a48b, + 0x282549, + 0x329f09, + 0x3bb287, + 0x20f7c8, + 0x4c61bf48, + 0x3511cb, + 0x37e0c9, + 0x234fcd, + 0x2750c8, + 0x224a48, + 0x4ca03ec2, + 0x20e3c4, + 0x4ce1a2c2, + 0x2f4ec6, + 0x4d2004c2, + 0x3813ca, + 0x21c346, + 0x285908, + 0x284488, + 0x2af446, + 0x22d8c6, + 0x2f12c6, + 0x2a3185, + 0x238c04, + 0x4d61e144, + 0x205146, + 0x272707, + 0x4dae8bc7, + 0x35490b, + 0x319b09, + 0x32ae4a, + 0x391804, + 0x33e0c8, + 0x23e84d, + 0x2eb709, + 0x2eb948, + 0x2ebfc9, + 0x2ed844, 0x243484, - 0x348a46, - 0x3902c7, - 0x243b46, - 0x325dc5, - 0x31d488, - 0x2281c5, - 0x332607, - 0x397409, - 0x2a24ca, - 0x22dac7, - 0x22dacc, - 0x2e3d46, - 0x226349, - 0x2ad585, - 0x2c6e08, - 0x211543, - 0x211545, - 0x2e9405, - 0x256cc7, - 0x46214f02, - 0x236e47, - 0x2d6786, - 0x343846, - 0x2e8cc6, - 0x201886, - 0x347e88, - 0x3583c5, - 0x2e35c7, - 0x2e35cd, - 0x202b43, - 0x3a35c5, - 0x3068c7, - 0x3864c8, - 0x386085, - 0x366c88, - 0x22a946, - 0x31f507, - 0x2bcf05, - 0x227ac6, - 0x3711c5, - 0x2ba40a, - 0x2eb1c6, - 0x236487, - 0x2c5bc5, - 0x35a387, - 0x35e244, - 0x3a6006, - 0x2f61c5, - 0x28158b, - 0x29f489, - 0x37a20a, - 0x246148, - 0x2ff148, - 0x300a4c, - 0x3047c7, - 0x32b388, - 0x32edc8, - 0x336085, - 0x2bc94a, - 0x35d109, - 0x46601082, - 0x205446, - 0x214684, - 0x3b1249, - 0x2220c9, - 0x24d307, - 0x26c307, - 0x358d09, - 0x210408, - 0x21040f, - 0x3477c6, - 0x20a0cb, - 0x2e9b05, - 0x2e9b07, - 0x2e9f49, - 0x20f346, - 0x20f347, - 0x3b3d85, - 0x232784, - 0x2633c6, - 0x201284, - 0x30ac07, - 0x345e08, - 0x46aee5c8, - 0x2eebc5, - 0x2eed07, - 0x238289, - 0x2740c4, - 0x3a3888, - 0x46f20b88, - 0x2c4204, - 0x2330c8, - 0x31d904, - 0x21f989, - 0x2230c5, - 0x47203e42, - 0x347805, - 0x220c85, - 0x29fc88, - 0x235347, - 0x47600cc2, - 0x2c81c5, - 0x246b46, - 0x256646, - 0x39a108, - 0x2ec008, - 0x2f8986, - 0x31b086, - 0x22a489, - 0x343786, - 0x37870b, - 0x30c145, - 0x20d7c6, - 0x390088, - 0x252606, - 0x28f506, - 0x21c64a, - 0x2ae4ca, - 0x24ce85, - 0x358487, - 0x2d8e06, - 0x47a03dc2, - 0x306a07, - 0x2c7a45, - 0x25fa84, - 0x25fa85, - 0x251306, - 0x270447, - 0x2144c5, - 0x222184, - 0x2712c8, - 0x28f5c5, - 0x2cebc7, - 0x39c105, - 0x216805, - 0x247b04, - 0x28cbc9, - 0x39f908, - 0x2f5ec6, - 0x36fcc6, - 0x2c3f06, - 0x47ef3648, - 0x2f3847, - 0x2f3fcd, - 0x2f460c, - 0x2f4c09, - 0x2f4e49, - 0x48351e02, - 0x3a4803, - 0x24cf03, - 0x29f6c5, - 0x38cbca, - 0x31af46, - 0x2f8e05, - 0x2fc144, - 0x2fc14b, - 0x30d10c, - 0x30d94c, - 0x30dc55, - 0x311acd, - 0x313a0f, - 0x313dd2, - 0x31424f, - 0x314612, - 0x314a93, - 0x314f4d, - 0x31550d, - 0x31588e, - 0x315d4e, - 0x31658c, - 0x31694c, - 0x316d8b, - 0x31710e, - 0x31a1d2, - 0x31ad0c, - 0x31b8d0, - 0x327e52, - 0x328dcc, - 0x32948d, - 0x3297cc, - 0x32d8d1, - 0x32e74d, - 0x336b0d, - 0x33710a, - 0x33738c, - 0x337c8c, - 0x3384cc, - 0x338d4c, - 0x33c9d3, - 0x33d050, - 0x33d450, - 0x33dccd, - 0x33e2cc, - 0x33efc9, - 0x3402cd, - 0x340613, - 0x342e51, - 0x343293, - 0x343b4f, - 0x343f0c, - 0x34420f, - 0x3445cd, - 0x344bcf, - 0x344f90, - 0x345a0e, - 0x34b48e, - 0x34bbd0, - 0x34c7cd, - 0x34d14e, - 0x34d4cc, - 0x34e493, - 0x34fc8e, - 0x3503d0, - 0x3507d1, - 0x350c0f, - 0x350fd3, - 0x35198d, - 0x351ccf, - 0x35208e, - 0x352990, - 0x352d89, - 0x3539d0, - 0x35400f, - 0x35468f, - 0x354a52, - 0x355ece, - 0x35788d, - 0x35998d, - 0x359ccd, - 0x35ac4d, - 0x35af8d, - 0x35b2d0, - 0x35b6cb, - 0x35c14c, - 0x35c4cc, - 0x35c7cc, - 0x35cace, - 0x372990, - 0x3744d2, + 0x27c885, + 0x317b4b, + 0x26dcc6, + 0x3424c5, + 0x250149, + 0x234008, + 0x2047c4, + 0x37b749, + 0x208105, + 0x2bfb88, + 0x33e907, + 0x33c508, + 0x27d946, + 0x35e387, + 0x292349, + 0x2286c9, + 0x2492c5, + 0x334ec5, + 0x4de2d902, + 0x333c04, + 0x2049c5, + 0x32c146, + 0x318385, + 0x2b1ac7, + 0x205245, + 0x272d04, + 0x3a6586, + 0x23cb47, + 0x232986, + 0x2dca05, + 0x203188, + 0x234585, + 0x2062c7, + 0x20f1c9, + 0x21cb8a, + 0x2e1b87, + 0x2e1b8c, + 0x320906, + 0x343cc9, + 0x23b385, + 0x23b648, + 0x210803, + 0x210805, + 0x2e8a05, + 0x261607, + 0x4e20c002, + 0x22d0c7, + 0x2e4f06, + 0x342786, + 0x2e7d06, + 0x20a886, + 0x208388, + 0x241c85, + 0x2e5507, + 0x2e550d, + 0x201543, + 0x21ec05, + 0x201547, + 0x22d408, + 0x201105, + 0x218c88, + 0x36c0c6, + 0x32b9c7, + 0x2c4785, + 0x233e86, + 0x26f5c5, + 0x21390a, + 0x2f2e06, + 0x377ac7, + 0x2ca505, + 0x3612c7, + 0x36d6c4, + 0x2f9606, + 0x2fb3c5, + 0x32648b, + 0x2db1c9, + 0x2bb24a, + 0x249348, + 0x301d08, + 0x304a4c, + 0x306287, + 0x3073c8, + 0x310a48, + 0x31e945, + 0x34020a, + 0x35c3c9, + 0x4e600802, + 0x200806, + 0x219d04, + 0x2ea849, + 0x220b49, + 0x269287, + 0x294947, + 0x37e789, + 0x38cb48, + 0x38cb4f, + 0x315d06, + 0x2d670b, + 0x36e8c5, + 0x36e8c7, + 0x385889, + 0x212ac6, + 0x37b6c7, + 0x2d8905, + 0x2303c4, + 0x261006, + 0x211ac4, + 0x2ce4c7, + 0x307048, + 0x4eaf68c8, + 0x2f7085, + 0x2f71c7, + 0x236549, + 0x23e284, + 0x23e288, + 0x4ee2b888, + 0x279444, + 0x231388, + 0x32fdc4, + 0x3ab849, + 0x2173c5, + 0x4f20b0c2, + 0x315d45, + 0x2e4345, + 0x251288, + 0x232e47, + 0x4f601442, + 0x204785, + 0x2cf606, + 0x24b106, + 0x333bc8, + 0x302108, + 0x318346, + 0x327f06, + 0x2e2e49, + 0x3426c6, + 0x21298b, + 0x296305, + 0x368106, + 0x377088, + 0x250506, + 0x292cc6, + 0x21914a, + 0x23084a, + 0x245005, + 0x241d47, + 0x308786, + 0x4fa01682, + 0x201687, + 0x238705, + 0x243a44, + 0x243a45, + 0x391706, + 0x26a447, + 0x219a85, + 0x220c04, + 0x2c7e88, + 0x292d85, + 0x333a47, + 0x3a1645, + 0x213845, + 0x256e04, + 0x287609, + 0x2fae48, + 0x2e0286, + 0x2d9d06, + 0x2b6e46, + 0x4fefbc88, + 0x2fbe87, + 0x2fc0cd, + 0x2fcb4c, + 0x2fd149, + 0x2fd389, + 0x5035b2c2, + 0x3a8603, + 0x207943, + 0x2db405, + 0x39280a, + 0x327dc6, + 0x302385, + 0x305884, + 0x30588b, + 0x31b70c, + 0x31c14c, + 0x31c455, + 0x31d74d, + 0x320a8f, + 0x320e52, + 0x3212cf, + 0x321692, + 0x321b13, + 0x321fcd, + 0x32258d, + 0x32290e, + 0x322e8e, + 0x3236cc, + 0x323a8c, + 0x323ecb, + 0x32424e, + 0x325392, + 0x327b8c, + 0x328790, + 0x335212, + 0x33640c, + 0x336acd, + 0x336e0c, + 0x339a51, + 0x33a90d, + 0x34084d, + 0x340e4a, + 0x3410cc, + 0x3419cc, + 0x3421cc, + 0x34290c, + 0x344dd3, + 0x345450, + 0x345850, + 0x34610d, + 0x34670c, + 0x347309, + 0x34890d, + 0x348c53, + 0x34a311, + 0x34a753, + 0x34b24f, + 0x34b60c, + 0x34b90f, + 0x34bccd, + 0x34c2cf, + 0x34c690, + 0x34d10e, + 0x3539ce, + 0x353f50, + 0x35518d, + 0x355b0e, + 0x355e8c, + 0x356e93, + 0x35934e, + 0x3599d0, + 0x359dd1, + 0x35a20f, + 0x35a5d3, + 0x35ae4d, + 0x35b18f, + 0x35b54e, + 0x35bc10, + 0x35c009, + 0x35cd90, + 0x35d38f, + 0x35da0f, + 0x35ddd2, + 0x35efce, + 0x35fc4d, + 0x36070d, + 0x360a4d, + 0x36184d, + 0x361b8d, + 0x361ed0, + 0x3622cb, + 0x36324c, + 0x3635cc, + 0x363bcc, + 0x363ece, + 0x371a10, + 0x372dd2, + 0x37324b, + 0x3738ce, + 0x373c4e, + 0x3744ce, 0x37494b, - 0x3750ce, - 0x37544e, - 0x375cce, - 0x37728b, - 0x48777856, - 0x378ecd, - 0x379354, - 0x37a98d, - 0x37c655, - 0x37d78d, - 0x37e10f, - 0x37e94f, - 0x38150f, - 0x3818ce, - 0x382b0d, - 0x384151, - 0x386b0c, - 0x386e0c, - 0x38710b, - 0x387a0c, - 0x387dcf, - 0x388192, - 0x388b4d, - 0x389b0c, - 0x389f8c, - 0x38a28d, - 0x38a5cf, - 0x38a98e, - 0x38c88c, - 0x38ce4d, - 0x38d18b, - 0x38e9cc, - 0x38ef4d, - 0x38f28e, - 0x38f709, - 0x3909d3, - 0x3913cd, - 0x39170d, - 0x391d0c, - 0x39218e, - 0x392b0f, - 0x392ecc, - 0x3931cd, - 0x39350f, - 0x3938cc, - 0x393fcc, - 0x39444c, - 0x39474c, - 0x394e0d, - 0x395152, - 0x3957cc, - 0x395acc, - 0x395dd1, - 0x39620f, - 0x3965cf, - 0x396993, - 0x39764e, - 0x397bcf, - 0x397f8c, - 0x48b982ce, - 0x39864f, - 0x398a16, - 0x399c12, - 0x39b88c, - 0x39c24f, - 0x39c8cd, - 0x39cc0f, - 0x39cfcc, - 0x39d2cd, - 0x39d60d, - 0x39f4ce, - 0x3a058c, - 0x3a088c, - 0x3a0b90, - 0x3a3a91, - 0x3a3ecb, - 0x3a440c, - 0x3a470e, - 0x3a7051, - 0x3a748e, - 0x3a780d, - 0x3ace8b, - 0x3adbcf, - 0x3aee94, - 0x21c2c2, - 0x21c2c2, - 0x205903, - 0x21c2c2, - 0x205903, - 0x21c2c2, - 0x205e02, - 0x3830c5, - 0x3a6d4c, - 0x21c2c2, - 0x21c2c2, - 0x205e02, - 0x21c2c2, - 0x290d45, - 0x2a24c5, - 0x21c2c2, - 0x21c2c2, - 0x211d42, - 0x290d45, - 0x312d49, - 0x342b4c, - 0x21c2c2, - 0x21c2c2, - 0x21c2c2, - 0x21c2c2, - 0x3830c5, - 0x21c2c2, - 0x21c2c2, - 0x21c2c2, - 0x21c2c2, - 0x211d42, - 0x312d49, - 0x21c2c2, - 0x21c2c2, - 0x21c2c2, - 0x2a24c5, - 0x21c2c2, - 0x2a24c5, - 0x342b4c, - 0x3a6d4c, - 0x323ac3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x238483, - 0x2264c3, - 0x141388, - 0x4db44, - 0xed208, - 0x200882, - 0x49a16582, - 0x240003, - 0x22b944, - 0x208f43, - 0x21eb04, - 0x231ac6, - 0x31d243, - 0x34aa44, - 0x26cc05, - 0x211003, - 0x238483, - 0x2264c3, - 0x24690a, - 0x3a5946, - 0x3757cc, - 0x880c8, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x2348c3, - 0x2cc5c6, - 0x238483, - 0x2264c3, - 0x21bd03, - 0xd42, - 0xdb7c7, - 0xca908, - 0xfd8e, - 0x85792, - 0x2ecb, - 0x4a71f345, - 0x4ab76d0c, - 0x131007, - 0x16e747, - 0x119b8a, - 0x3c550, - 0x2988, - 0x16e847, - 0xae14b, - 0x112089, - 0x173507, - 0x10ec87, - 0x77847, - 0x169c6, - 0x132d48, - 0x4b01e1c6, - 0xa910d, - 0x119550, - 0x4b400d82, - 0x131948, - 0x680c7, - 0x84109, - 0x53e06, - 0x908c8, + 0x50774f56, + 0x37624d, + 0x3766d4, + 0x377e0d, + 0x37b115, + 0x37c40d, + 0x37cd8f, + 0x37d5cf, + 0x38250f, + 0x3828ce, + 0x382e4d, + 0x383f91, + 0x38674c, + 0x386a4c, + 0x386d4b, + 0x38764c, + 0x387a0f, + 0x387dd2, + 0x38878d, + 0x38974c, + 0x389bcc, + 0x389ecd, + 0x38a20f, + 0x38a5ce, + 0x3924cc, + 0x392a8d, + 0x392dcb, + 0x39358c, + 0x393b0d, + 0x393e4e, + 0x3941c9, + 0x394d13, + 0x39524d, + 0x39558d, + 0x395b8c, + 0x39600e, + 0x396fcf, + 0x39738c, + 0x39768d, + 0x3979cf, + 0x397d8c, + 0x39848c, + 0x39890c, + 0x398c0c, + 0x3992cd, + 0x399612, + 0x399c8c, + 0x399f8c, + 0x39a291, + 0x39a6cf, + 0x39aa8f, + 0x39ae53, + 0x39bcce, + 0x39c04f, + 0x39c40c, + 0x50b9c74e, + 0x39cacf, + 0x39ce96, + 0x39dc12, + 0x39f38c, + 0x39fd0f, + 0x3a038d, + 0x3a06cf, + 0x3a0a8c, + 0x3a0d8d, + 0x3a10cd, + 0x3a254e, + 0x3a4b8c, + 0x3a4e8c, + 0x3a5190, + 0x3a7a91, + 0x3a7ecb, + 0x3a820c, + 0x3a850e, + 0x3aa811, + 0x3aac4e, + 0x3aafcd, + 0x3b53cb, + 0x3b5e8f, + 0x3b6d94, + 0x228782, + 0x228782, + 0x200c83, + 0x228782, + 0x200c83, + 0x228782, + 0x205142, + 0x384405, + 0x3aa50c, + 0x228782, + 0x228782, + 0x205142, + 0x228782, + 0x294545, + 0x21cb85, + 0x228782, + 0x228782, + 0x20b382, + 0x294545, + 0x31f3c9, + 0x34a00c, + 0x228782, + 0x228782, + 0x228782, + 0x228782, + 0x384405, + 0x228782, + 0x228782, + 0x228782, + 0x228782, + 0x20b382, + 0x31f3c9, + 0x228782, + 0x228782, + 0x228782, + 0x21cb85, + 0x228782, + 0x21cb85, + 0x34a00c, + 0x3aa50c, + 0x38d2c3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x205503, + 0x200983, + 0x2708, + 0x5fc84, + 0xe0e08, + 0x205702, + 0x51a099c2, + 0x23dbc3, + 0x24f2c4, + 0x2032c3, + 0x393304, + 0x22f706, + 0x20e883, + 0x3328c4, + 0x286bc5, + 0x209703, + 0x205503, + 0x200983, + 0x255cca, + 0x2efec6, + 0x373fcc, + 0x16d208, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x227f83, + 0x2d43c6, + 0x205503, + 0x200983, + 0x201303, + 0xa4508, + 0x129845, + 0x14902, + 0x52f86185, + 0x21347, + 0xc93c8, + 0xec0e, + 0x88192, + 0xfe20b, + 0x532d6a45, + 0x536d6a4c, + 0xb007, + 0x16fc07, + 0x1b254a, + 0x3a6d0, + 0x149c05, + 0xd95cb, + 0x68bc8, + 0x38f47, + 0x304cb, + 0x4efc9, + 0x11dd07, + 0x2c07, + 0x73587, + 0x1c106, + 0xd4ac8, + 0x53c1cdc6, + 0xa8a0d, + 0x1b1f10, + 0x5402bb82, + 0x9688, + 0x4a450, + 0x14434c, + 0x5474e88d, + 0x655c7, + 0x78749, + 0x52e06, + 0x940c8, + 0x67e42, + 0x9f54a, + 0x27f07, + 0x35fc7, + 0xa4909, + 0xa6388, + 0xb9b45, + 0xec50e, + 0xb54e, + 0xdecf, + 0x11809, + 0xbb9c9, + 0x43e4b, + 0x7664f, + 0x8780c, + 0x9ef4b, + 0xbbf48, + 0x154807, + 0xcdc48, + 0xfb80b, + 0xf568c, + 0xf640c, + 0xf908c, + 0xfe68d, + 0x17e248, + 0xeab02, + 0x113a49, + 0x185d4b, + 0xc5446, + 0x116fcb, + 0xd804a, + 0xd8c05, + 0xde6d0, + 0x111806, + 0x192345, + 0xe3f48, + 0xe9187, + 0xe9447, + 0xff487, + 0xf4d0a, + 0xc924a, + 0x5d306, + 0x91a0d, + 0x86ec8, + 0x55b08, + 0x56d49, + 0xb3c45, + 0xf484c, + 0xfe88b, + 0x165044, + 0xfaa89, + 0xfacc6, + 0x1af7c6, + 0x2dc2, + 0x125c86, + 0x107247, + 0x7b02, + 0xc83c5, + 0x29544, + 0x1ec1, + 0x4c983, + 0x53a85146, + 0x94443, + 0xd882, + 0x27f04, + 0x242, + 0x5ef44, + 0x3dc2, + 0x8142, + 0x2502, + 0x10f242, + 0x1ec2, + 0xd6a42, + 0x4142, + 0x1b102, + 0x2cd82, + 0x5742, + 0xdc2, + 0xf882, + 0x32403, + 0x5f02, + 0x7c2, + 0x18342, + 0xfc82, 0x5e82, - 0x9c34a, - 0x8e507, - 0xeaec7, - 0xa5449, - 0xa7188, - 0x157f45, - 0xe168e, - 0xe9ce, - 0x14c4f, - 0x15309, - 0x33c49, - 0x6528b, - 0x7cdcf, - 0x8cdcc, - 0xdcbcb, - 0xd99c8, - 0x12bd07, - 0xede48, - 0x11e50b, - 0x13e94c, - 0x14624c, - 0x14f98c, - 0x1524cd, - 0x2b848, - 0x30cc2, - 0x1afb89, - 0x14c24b, - 0xbdb06, - 0xce6c5, - 0xd2d10, - 0x1229c6, - 0x51f05, - 0xd6908, - 0xdc047, - 0xdc307, - 0x163287, - 0xeba4a, - 0xca78a, - 0x161186, - 0x8db8d, - 0x180248, - 0x45e88, - 0x47a49, - 0xeb58c, - 0x1526cb, - 0x171ac4, - 0xf3109, - 0x44bc6, - 0x6202, - 0x155646, - 0xfefc7, - 0x6c2, - 0xc0e85, - 0x481, - 0x3b583, - 0x4af9eb86, - 0x90c43, - 0x1f82, - 0x3a4c4, - 0x1002, - 0x24104, - 0x9c2, - 0x1182, - 0x3182, - 0x4f882, - 0x2ec2, - 0x104e82, - 0x8c2, - 0x1dec2, - 0x37e42, - 0x682, - 0xf82, - 0xb1d82, - 0x343c3, - 0x8042, - 0x202, - 0x6ac2, - 0x21842, - 0xb2c2, - 0x32a02, - 0xf1c2, - 0x42, - 0x5602, - 0xa82, - 0x2243, - 0x74c2, - 0x1982, - 0xb09c2, - 0x9682, - 0xb402, - 0x61c2, - 0xa242, - 0x9a1c2, - 0x6742, - 0x172e82, - 0xe02, - 0x9f82, - 0x38483, - 0x1dc2, - 0x8382, - 0x25c2, - 0x2182, - 0x46045, - 0x6a42, - 0x41542, - 0x3e503, - 0x4b42, - 0x7982, - 0x1402, + 0x1ae02, + 0x17f42, 0x15c2, - 0x1882, - 0xcc2, - 0x3282, - 0x6202, - 0x6b247, - 0x212d03, - 0x200882, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x201d83, - 0x2348c3, - 0x238483, - 0x2025c3, - 0x2264c3, - 0x290c83, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x211003, - 0x238483, - 0x2025c3, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, + 0x29c2, + 0x1fc2, + 0x44183, + 0x3942, + 0x6502, + 0xafd42, + 0xbe02, + 0x282, + 0x4bc2, + 0x1f42, + 0xa8542, + 0x2342, + 0x152bc2, + 0x675c2, + 0x2c82, + 0x5503, + 0x8c2, + 0x8442, + 0x33c2, + 0xb482, + 0x49245, + 0xba02, + 0x2d4c2, + 0x3c083, + 0x482, + 0x1c42, + 0x27c2, + 0x3902, + 0x1102, + 0x1442, + 0xc2, + 0x2dc2, + 0x9885, + 0x75c47, + 0x212503, + 0x205702, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x20ad83, + 0x227f83, + 0x205503, + 0x204e83, + 0x200983, + 0x294483, + 0x169c3, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x209703, + 0x205503, + 0x204e83, + 0x200983, + 0x2a84c3, + 0x232403, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, 0x200041, - 0x211003, - 0x238483, - 0x201f43, - 0x2264c3, - 0x323ac3, - 0x22d183, - 0x2343c3, - 0x25f643, - 0x211cc3, - 0x3112c3, - 0x27cc03, - 0x201f83, - 0x25a603, - 0x21eb03, - 0x201604, - 0x238483, - 0x2264c3, - 0x223ec3, - 0x305fc4, - 0x21e143, - 0x4803, - 0x203e03, - 0x2a0cc8, - 0x332a44, - 0x317f8a, - 0x330786, - 0xda404, - 0x3a2e47, - 0x22138a, - 0x347689, - 0x3b3507, - 0x20054a, - 0x323ac3, - 0x3822cb, - 0x368b49, - 0x2c4005, - 0x2ca007, - 0x16582, - 0x22d183, - 0x326647, - 0x22a1c5, - 0x2d60c9, - 0x2343c3, - 0x227846, - 0x2ba0c3, - 0x9f543, - 0xfaa86, - 0x4f4c6, - 0x11d1c7, - 0x3a8786, - 0x213e45, - 0x20c507, - 0x338b87, - 0x4d61eb03, - 0x329007, - 0x35eec3, - 0x38e705, - 0x201604, - 0x221c08, - 0x2af6cc, - 0x2ad6c5, - 0x363c06, - 0x326507, - 0x224b47, - 0x205087, - 0x206e48, - 0x2597cf, - 0x280b05, - 0x240107, - 0x27e347, - 0x2a500a, - 0x2ee209, - 0x2d7185, - 0x2d830a, - 0xdea46, - 0x2ba145, + 0x209703, + 0x205503, + 0x21c2c3, + 0x200983, + 0x38d2c3, + 0x2a84c3, + 0x232403, + 0x209683, + 0x2163c3, + 0x277dc3, + 0x280b83, + 0x21c303, + 0x252c03, + 0x2e9dc3, + 0x3b1384, + 0x205503, + 0x200983, + 0x25ed03, + 0x352e84, + 0x231a03, + 0x30c3, + 0x228483, + 0x37a908, + 0x24f3c4, + 0x3b870a, + 0x2b8ec6, + 0x1b6a04, + 0x39b2c7, + 0x21e7ca, + 0x315bc9, + 0x3ab587, + 0x3b724a, + 0x38d2c3, + 0x2e678b, + 0x2b9fc9, + 0x2bd645, + 0x2d1fc7, + 0x99c2, + 0x2a84c3, + 0x205747, + 0x2e2b85, + 0x2dbdc9, + 0x232403, + 0x233c06, + 0x2c1a43, + 0xdb283, + 0x104e46, + 0x18ec46, + 0xe807, + 0x212e46, + 0x21b185, + 0x282407, + 0x2d5b87, + 0x56ae9dc3, + 0x336647, + 0x365e03, + 0x206a05, + 0x3b1384, + 0x220688, + 0x38644c, + 0x2ad745, + 0x29c986, + 0x205607, + 0x38b907, + 0x238347, + 0x245108, + 0x303b8f, + 0x315e05, + 0x23dcc7, + 0x26f287, + 0x2a3e0a, + 0x2d2809, + 0x304f85, + 0x30664a, + 0x82a06, + 0x2c1ac5, 0x374b84, - 0x2b7486, - 0x2fe5c7, - 0x230bc7, - 0x2a0a08, - 0x214805, - 0x22a0c6, - 0x3a8245, - 0x37a445, - 0x21fd44, - 0x31e907, - 0x347cca, - 0x365a48, - 0x2edb86, - 0x348c3, - 0x2cf145, - 0x238d06, - 0x200346, - 0x251e06, - 0x211003, - 0x388dc7, - 0x27e2c5, - 0x238483, - 0x3b378d, - 0x2025c3, - 0x2a0b08, - 0x3aac44, - 0x205fc5, - 0x2a4f06, - 0x236b06, - 0x20d6c7, - 0x355747, - 0x2641c5, - 0x2264c3, - 0x322c07, - 0x33b009, - 0x258f49, - 0x2434ca, - 0x242a42, - 0x38e6c4, - 0x2d7ac4, - 0x210d87, - 0x236d08, - 0x2dce89, - 0x3a3489, - 0x2df807, - 0x334206, - 0xe1406, - 0x2e26c4, - 0x2e2cca, - 0x2e5c88, - 0x2e64c9, - 0x2b6306, - 0x3003c5, - 0x365908, - 0x2bf10a, - 0x25b743, - 0x306146, - 0x2df907, - 0x207c85, - 0x3aab05, - 0x242083, - 0x252dc4, - 0x21bf45, - 0x27e747, - 0x39fa45, - 0x2f3bc6, - 0xfa705, - 0x212a43, - 0x21cdc9, - 0x238dcc, - 0x2ab90c, - 0x2c65c8, - 0x28f8c7, - 0x2ef748, - 0x2efa8a, - 0x2f0a4b, - 0x368c88, - 0x363d08, - 0x36ee86, - 0x341985, - 0x36498a, - 0x21ebc5, - 0x203e42, - 0x2bcdc7, - 0x26a8c6, - 0x353505, - 0x2f1949, - 0x38dec5, - 0x376785, - 0x38e2c9, - 0x238b86, - 0x261b88, - 0x2d1343, - 0x3a88c6, - 0x270f06, - 0x2fdcc5, - 0x2fdcc9, - 0x2dd5c9, - 0x242d87, - 0xfdb44, - 0x2fdb47, - 0x3a3389, - 0x221585, - 0x16f208, - 0x355545, - 0x355245, - 0x399309, - 0x201482, - 0x21df44, - 0x202e82, - 0x2074c2, - 0x293c45, - 0x2da188, - 0x374e45, - 0x2bc883, - 0x2bc885, - 0x2ca3c3, - 0x2111c2, - 0x264a04, - 0x233503, - 0x207a82, - 0x358704, - 0x2d8003, - 0x2014c2, - 0x293cc3, - 0x2898c4, - 0x2d7703, - 0x23a804, - 0x201bc2, - 0x21bc03, - 0x219283, - 0x208d82, - 0x35b202, - 0x2dd409, - 0x2011c2, - 0x286304, - 0x200dc2, - 0x365784, - 0x3341c4, - 0x3a1cc4, - 0x206202, - 0x23e802, - 0x20dc03, - 0x2f0083, - 0x23f704, - 0x27e8c4, - 0x2d13c4, - 0x2dd7c4, - 0x2fd083, - 0x3491c3, - 0x2de9c4, - 0x2fee04, - 0x2ff346, - 0x260dc2, - 0x216582, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x200882, - 0x323ac3, - 0x22d183, - 0x2343c3, - 0x205403, - 0x21eb03, - 0x201604, - 0x2dd6c4, - 0x212444, - 0x238483, - 0x2264c3, - 0x21bd03, - 0x2e3444, - 0x29e943, - 0x2b3783, - 0x3436c4, - 0x355346, - 0x20ca03, - 0x16e747, - 0x219b83, - 0x208143, - 0x2b1a03, - 0x206003, - 0x2348c3, - 0x376f85, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x2db443, - 0x230743, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x202243, - 0x238483, - 0x234fc4, - 0x2264c3, - 0x29b704, - 0x2b7285, - 0x16e747, - 0x216582, - 0x201a42, - 0x201f82, - 0x205902, - 0x201502, - 0x22d183, - 0x2374c4, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x212444, - 0x238483, - 0x2264c3, - 0x217643, - 0x224104, - 0x880c8, - 0x22d183, - 0x2025c3, - 0x245dc4, - 0x880c8, - 0x22d183, - 0x247344, - 0x201604, - 0x2025c3, - 0x202282, - 0x2264c3, - 0x215cc3, - 0x52dc4, - 0x2e9cc5, - 0x203e42, - 0x2fef43, - 0x200882, - 0x880c8, - 0x216582, - 0x2343c3, - 0x21eb03, - 0x200a82, - 0x2264c3, - 0x200882, - 0x200707, - 0x254705, - 0x29f844, - 0x385f86, - 0x366a4b, - 0x263a49, - 0x363b46, - 0x340a89, - 0x2b2c88, - 0x207103, - 0x880c8, - 0x22a807, - 0x364288, - 0x24f843, - 0x21d184, - 0x2226cb, - 0x259145, - 0x24b188, - 0x2f2ec9, - 0x25a203, - 0x22d183, - 0x205348, - 0x2ee787, - 0x24fe46, - 0x2343c3, - 0x24f947, - 0x21eb03, - 0x339b06, - 0x202243, - 0x22f9c7, - 0x33a6c7, - 0x390e87, - 0x31e885, - 0x209403, - 0x205dcb, - 0x36b4c8, - 0x227548, - 0x33b1c6, - 0x367989, - 0x335b07, - 0x2f9145, - 0x339444, - 0x3478c8, - 0x23d54a, - 0x23d789, - 0x346f03, - 0x2696c5, - 0x21bb83, - 0x3ad706, - 0x387704, - 0x2fdec8, - 0x38748b, - 0x346dc5, - 0x2b7006, - 0x2b8e85, - 0x2b9608, - 0x2ba287, - 0x206cc7, - 0x317b87, - 0x294544, - 0x30a5c7, - 0x294546, - 0x211003, - 0x2c2088, - 0x268383, - 0x2cab08, - 0x2d3f45, - 0x3251c8, - 0x2345c7, - 0x238483, - 0x2447c3, - 0x287dc4, - 0x323647, - 0x208fc3, - 0x33a78b, - 0x205003, - 0x268344, - 0x2e9d48, - 0x2264c3, - 0x2f3d45, - 0x311145, - 0x3250c6, - 0x2117c5, - 0x2d4304, - 0x202002, - 0x2e69c3, - 0x374c0a, - 0x3a1583, - 0x306709, - 0x30a2c6, - 0x204e48, - 0x289406, - 0x214347, - 0x2db948, - 0x39a588, - 0x2ebd43, - 0x293d03, - 0x272c09, - 0x2f4c83, - 0x2d8d06, - 0x254386, - 0x39f7c6, - 0x3a1e09, - 0x2fd784, - 0x20e3c3, - 0x2d6d05, - 0x349589, - 0x206dc3, - 0x35a244, - 0x2f2ac4, - 0x36fc84, - 0x35f906, - 0x3b4303, - 0x3b4308, - 0x256a08, - 0x39db86, - 0x2f8f4b, - 0x2f9288, - 0x2f948b, - 0x2fb949, - 0x2fa987, - 0x2fbdc8, - 0x2fc983, - 0x22ad86, - 0x3a9247, - 0x295245, - 0x34b789, - 0x33530d, - 0x204c91, - 0x22eb85, - 0x200882, - 0x216582, - 0x22d183, - 0x2343c3, - 0x22d684, - 0x21eb03, - 0x202243, - 0x211003, - 0x238483, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x2348c3, - 0x238483, - 0x2264c3, - 0x265903, - 0x217643, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x2348c3, - 0x238483, - 0x2264c3, - 0x221e42, + 0x2843c6, + 0x2f1d47, + 0x2eaa07, + 0x3bb408, + 0x22dc85, + 0x2e2a86, + 0x214305, + 0x3adcc5, + 0x21c984, + 0x2af347, + 0x2081ca, + 0x334808, + 0x35ba86, + 0x27f83, + 0x2da905, + 0x25f906, + 0x3af246, + 0x392246, + 0x209703, + 0x388a07, + 0x26f205, + 0x205503, + 0x2d830d, + 0x204e83, + 0x3bb508, + 0x27f404, + 0x272fc5, + 0x2a3d06, + 0x234d46, + 0x368007, + 0x2a6ec7, + 0x267345, + 0x200983, + 0x21fbc7, + 0x2788c9, + 0x311a49, + 0x22708a, + 0x243002, + 0x2069c4, + 0x2e5084, + 0x390207, + 0x22cf88, + 0x2ea2c9, + 0x21eac9, + 0x2eaf47, + 0x2ba486, + 0xec286, + 0x2ed844, + 0x2ede4a, + 0x2f0d48, + 0x2f1189, + 0x2bdbc6, + 0x2b1445, + 0x3346c8, + 0x2c5f8a, + 0x22ed03, + 0x353006, + 0x2eb047, + 0x223ec5, + 0x3a5e05, + 0x264b83, + 0x250cc4, + 0x226605, + 0x281b07, + 0x2faf85, + 0x2ee346, + 0xfc605, + 0x247d83, + 0x357bc9, + 0x272d8c, + 0x29344c, + 0x2ced08, + 0x293087, + 0x2f7908, + 0x2f7c4a, + 0x2f888b, + 0x2ba108, + 0x234e48, + 0x239586, + 0x390d45, + 0x38da4a, + 0x3a6205, + 0x20b0c2, + 0x2c4647, + 0x25fe86, + 0x35c8c5, + 0x370809, + 0x2f39c5, + 0x27e985, + 0x2ddf09, + 0x351846, + 0x237e88, + 0x33f383, + 0x20f486, + 0x272146, + 0x306445, + 0x306449, + 0x2b6789, + 0x279ac7, + 0x109104, + 0x309107, + 0x21e9c9, + 0x238d05, + 0x413c8, + 0x3b2e85, + 0x330e85, + 0x380509, + 0x201702, + 0x25e544, + 0x201e82, + 0x203942, + 0x31ecc5, + 0x3b6788, + 0x2b3b85, + 0x2c3ac3, + 0x2c3ac5, + 0x2d2383, + 0x20f442, + 0x377804, + 0x2ac783, + 0x2056c2, + 0x379884, + 0x2e5d43, + 0x2082c2, + 0x2b3c03, + 0x28d084, + 0x2e4c83, + 0x248684, + 0x203082, + 0x218943, + 0x22ef03, + 0x200d02, + 0x361782, + 0x2b65c9, + 0x207842, + 0x288d04, + 0x203cc2, + 0x334544, + 0x2ba444, + 0x2b74c4, + 0x202dc2, + 0x2391c2, + 0x225bc3, + 0x2f8403, + 0x23d904, + 0x281c84, + 0x2eb1c4, + 0x2f0f04, + 0x30a483, + 0x26e543, + 0x282984, + 0x30a2c4, + 0x30aac6, + 0x22a282, + 0x2099c2, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x205702, + 0x38d2c3, + 0x2a84c3, + 0x232403, + 0x2007c3, + 0x2e9dc3, + 0x3b1384, + 0x2b6884, + 0x211cc4, + 0x205503, + 0x200983, + 0x201303, + 0x2ee644, + 0x31a403, + 0x2bd0c3, + 0x34ab84, + 0x3b2c86, + 0x202f03, + 0x16fc07, + 0x222403, + 0x2459c3, + 0x2b0543, + 0x206a43, + 0x227f83, + 0x2d6cc5, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x282c43, + 0x2a5143, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x244183, + 0x205503, + 0x23a504, + 0x200983, + 0x26bec4, + 0x2bf145, + 0x16fc07, + 0x2099c2, + 0x2006c2, + 0x20d882, + 0x200c82, + 0x200442, + 0x2a84c3, + 0x235ac4, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x211cc4, + 0x205503, + 0x200983, + 0x214843, + 0x25ef44, + 0x16d208, + 0x2a84c3, + 0x204e83, + 0x169c3, + 0x2030c4, + 0x16d208, + 0x2a84c3, + 0x249944, + 0x3b1384, + 0x204e83, + 0x203ec2, + 0x200983, + 0x23e743, + 0x50cc4, + 0x373605, + 0x20b0c2, + 0x30a403, + 0x205702, + 0x16d208, + 0x2099c2, + 0x232403, + 0x2e9dc3, + 0x201fc2, + 0x200983, + 0x205702, + 0x1b7407, + 0x12e3c9, + 0x6f83, + 0x16d208, + 0x18ebc3, + 0x5a31fd87, + 0xa84c3, + 0x708, + 0x232403, + 0x2e9dc3, + 0x1ae886, + 0x244183, + 0x8f2c8, + 0xc0e08, + 0x41a46, + 0x209703, + 0xca988, + 0xb1b43, + 0xdf145, + 0x32607, + 0x8003, + 0x174c0a, + 0x11ed83, + 0x308d44, + 0x10398b, + 0x103f48, + 0x8d742, + 0x205702, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2d5f04, + 0x2e9dc3, + 0x244183, + 0x209703, + 0x205503, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x227f83, + 0x205503, + 0x200983, + 0x21aa03, + 0x214843, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x169c3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x227f83, + 0x205503, + 0x200983, + 0x212982, 0x200141, - 0x200882, + 0x205702, 0x200001, - 0x313b02, - 0x880c8, - 0x220045, - 0x200481, - 0x2d183, - 0x200741, + 0x320b82, + 0x16d208, + 0x21d445, + 0x201ec1, + 0xa84c3, + 0x200701, + 0x200301, 0x200081, - 0x200c81, - 0x2333c2, - 0x36e144, - 0x383043, - 0x2007c1, - 0x200901, + 0x298602, + 0x36c044, + 0x384383, + 0x200181, + 0x200401, 0x200041, - 0x2001c1, - 0x2dda87, - 0x2b8f8f, - 0x2cacc6, - 0x2000c1, - 0x25b806, + 0x200101, + 0x2e9907, + 0x2eab8f, + 0x340446, + 0x200281, + 0x37f6c6, + 0x200e81, + 0x2008c1, + 0x332a0e, + 0x200441, + 0x200983, + 0x201301, + 0x270e85, + 0x20f942, + 0x264a85, 0x200341, - 0x200ac1, - 0x341ece, - 0x201501, - 0x2264c3, - 0x2014c1, - 0x260e05, - 0x202002, - 0x241f85, - 0x200b81, - 0x200241, - 0x200a01, - 0x203e42, + 0x200801, 0x2002c1, - 0x204701, - 0x20dec1, - 0x200781, - 0x200641, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x21ca03, - 0x22d183, - 0x21eb03, - 0x89ec8, - 0x211003, - 0x238483, - 0x2264c3, - 0x14da788, - 0x880c8, - 0x441c4, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x238483, - 0x2264c3, - 0x204803, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x22d684, - 0x2264c3, - 0x28fb85, - 0x27f304, - 0x22d183, - 0x238483, - 0x2264c3, - 0xa014a, - 0x216582, - 0x22d183, - 0x2326c9, - 0x2343c3, - 0x23af09, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x2e24c8, - 0x2100c7, - 0x2e9cc5, - 0x200707, - 0x366a4b, - 0x365188, - 0x340a89, - 0x22a807, - 0x205348, - 0x339b06, - 0x33a6c7, - 0x227548, - 0x33b1c6, - 0x335b07, - 0x23d789, - 0x37c409, - 0x2b7006, - 0x2b7e45, - 0x2c2088, - 0x268383, - 0x2cab08, - 0x2345c7, - 0x208fc3, - 0x326387, - 0x2117c5, - 0x2dc608, - 0x310205, - 0x293d03, - 0x33b9c9, - 0x2aa9c7, - 0x35a244, - 0x2f2ac4, - 0x2f8f4b, - 0x2f9288, - 0x2fa987, - 0x22d183, - 0x2343c3, - 0x211cc3, - 0x2264c3, - 0x21e503, - 0x21eb03, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x653cb, - 0x200882, - 0x216582, - 0x2264c3, - 0x880c8, - 0x200882, - 0x216582, - 0x201f82, - 0x200a82, - 0x200342, - 0x238483, - 0x201502, - 0x200882, - 0x323ac3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x201f82, - 0x21eb03, - 0x202243, - 0x211003, - 0x212444, - 0x238483, - 0x21ab43, - 0x2264c3, - 0x2fd784, - 0x223ec3, - 0x21eb03, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2025c3, - 0x2264c3, - 0x39bd47, - 0x22d183, - 0x256b87, - 0x2edfc6, + 0x20b0c2, + 0x2000c1, + 0x200201, + 0x200bc1, + 0x2005c1, + 0x201cc1, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x219503, + 0x2a84c3, + 0x2e9dc3, + 0x8d688, + 0x209703, + 0x205503, + 0x20803, + 0x200983, + 0x14e7e88, + 0x16d208, + 0x44e04, + 0x14e7e8a, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x205503, + 0x200983, + 0x2030c3, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2d5f04, + 0x200983, + 0x27a305, + 0x33b804, + 0x2a84c3, + 0x205503, + 0x200983, + 0x225ca, + 0xd5284, + 0x10c9c6, + 0x2099c2, + 0x2a84c3, + 0x230309, + 0x232403, + 0x3034c9, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x2ed648, + 0x22ca47, + 0x373605, + 0x18ed88, + 0x1b7407, + 0x2d20a, + 0xecb, + 0x4ab87, + 0x3d2c8, + 0x1b1b8a, + 0x10a48, + 0x12e3c9, + 0x264c7, + 0x3be87, + 0x152b08, + 0x708, + 0x3df8f, + 0x11d85, + 0xa07, + 0x1ae886, + 0x137607, + 0x3d586, + 0x8f2c8, + 0xa5606, + 0x151647, + 0x19c9, + 0x1aa1c7, + 0xa46c9, + 0xb4a09, + 0xbeec6, + 0xc0e08, + 0xbfcc5, + 0x4eb4a, + 0xca988, + 0xb1b43, + 0xd2648, + 0x32607, + 0x6d505, + 0x69c50, + 0x8003, + 0x1aa047, + 0x15ec5, + 0xe9748, + 0x13ce05, + 0x11ed83, + 0x6fd48, + 0xcd46, + 0x42849, + 0xaa147, + 0x6fa0b, + 0x14ac44, + 0xfa544, + 0x10398b, + 0x103f48, + 0x104d47, + 0x129845, + 0x2a84c3, + 0x232403, + 0x2163c3, + 0x200983, + 0x22a403, + 0x2e9dc3, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x43f8b, + 0x205702, + 0x2099c2, + 0x200983, + 0x16d208, + 0x205702, + 0x2099c2, + 0x20d882, + 0x201fc2, + 0x203d02, + 0x205503, + 0x200442, + 0x205702, + 0x38d2c3, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x20d882, + 0x2e9dc3, + 0x244183, + 0x209703, + 0x211cc4, + 0x205503, + 0x216b03, + 0x200983, + 0x308d44, + 0x25ed03, + 0x2e9dc3, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x204e83, + 0x200983, + 0x39f847, + 0x2a84c3, + 0x2614c7, + 0x2c7ac6, 0x219203, - 0x206ac3, - 0x21eb03, - 0x220883, - 0x201604, - 0x284804, + 0x218343, + 0x2e9dc3, + 0x2143c3, + 0x3b1384, + 0x37ef04, + 0x31ea46, + 0x20d143, + 0x205503, + 0x200983, + 0x27a305, + 0x318284, + 0x3b2a43, + 0x38b743, + 0x2c4647, + 0x33e885, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x28e87, + 0x205942, + 0x287003, + 0x2bf143, + 0x38d2c3, + 0x626a84c3, + 0x202242, + 0x232403, + 0x2032c3, + 0x2e9dc3, + 0x3b1384, + 0x353903, + 0x315e03, + 0x209703, + 0x211cc4, + 0x62a04642, + 0x205503, + 0x200983, + 0x2082c3, + 0x229543, + 0x212982, + 0x25ed03, + 0x16d208, + 0x2e9dc3, + 0x169c3, + 0x26f744, + 0x38d2c3, + 0x2099c2, + 0x2a84c3, + 0x235ac4, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x244183, + 0x282104, + 0x210444, 0x2d43c6, - 0x20bac3, - 0x238483, - 0x2264c3, - 0x28fb85, - 0x20d4c4, - 0x31a083, - 0x217a03, - 0x2bcdc7, - 0x20b445, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, + 0x211cc4, + 0x205503, + 0x200983, + 0x201303, + 0x25fe86, + 0x13f08b, + 0x1cdc6, + 0x5eb4a, + 0x107e4a, + 0x16d208, + 0x2142c4, + 0x63ea84c3, + 0x38d284, + 0x232403, + 0x256e84, + 0x2e9dc3, + 0x391683, + 0x209703, + 0x205503, + 0x200983, + 0x56243, + 0x32f78b, + 0x3a140a, + 0x3b9bcc, + 0xda688, + 0x205702, + 0x2099c2, + 0x20d882, + 0x2a9305, + 0x3b1384, + 0x202342, + 0x209703, + 0x210444, + 0x200c82, + 0x200442, + 0x209842, + 0x212982, + 0x18d2c3, + 0x19f02, + 0x2a1cc9, + 0x25d548, + 0x309a89, + 0x337449, + 0x23490a, + 0x23634a, + 0x20cc02, + 0x21b102, + 0x99c2, + 0x2a84c3, + 0x204682, + 0x23de86, + 0x35d882, + 0x201242, + 0x20124e, + 0x21898e, + 0x27b107, + 0x205487, + 0x275d02, + 0x232403, + 0x2e9dc3, + 0x200042, + 0x201fc2, + 0x4a5c3, + 0x2eec0f, + 0x200f42, + 0x32c787, + 0x2c7d07, + 0x2d3907, + 0x2ad24c, + 0x3151cc, + 0x3a3a44, + 0x27c6ca, + 0x2188c2, + 0x20be02, + 0x2b6fc4, + 0x2226c2, + 0x2c2702, + 0x315404, + 0x20cec2, + 0x200282, + 0x6343, + 0x2a5687, + 0x2352c5, + 0x201f42, + 0x2eeb84, + 0x352bc2, + 0x2da248, + 0x205503, + 0x3b0208, + 0x200d42, + 0x233385, + 0x3b04c6, + 0x200983, + 0x20ba02, + 0x2ea507, + 0xf942, + 0x26b005, + 0x3a9f45, + 0x201642, + 0x242b02, + 0x3b7a8a, + 0x2671ca, + 0x202c42, + 0x2e4744, + 0x2002c2, + 0x206888, + 0x201c82, + 0x30a848, + 0x2feb47, + 0x2ff649, + 0x26b082, + 0x305645, + 0x33bc85, + 0x22dd4b, + 0x2c6c4c, + 0x22e848, + 0x3188c8, + 0x22a282, + 0x35f782, + 0x205702, + 0x16d208, + 0x2099c2, + 0x2a84c3, + 0x20d882, + 0x200c82, + 0x200442, + 0x200983, + 0x209842, + 0x205702, + 0x652099c2, + 0x656e9dc3, + 0x206343, + 0x202342, + 0x205503, + 0x375cc3, + 0x200983, + 0x2e87c3, + 0x275d46, + 0x1614843, + 0x16d208, + 0x192345, + 0xa6a8d, + 0xa4dca, + 0x65c87, + 0x65e011c2, + 0x66200242, + 0x66600ec2, + 0x66a00c02, + 0x66e0de02, + 0x67201ec2, + 0x16fc07, + 0x676099c2, + 0x67a301c2, + 0x67e09982, + 0x68200dc2, + 0x218983, + 0x9e04, + 0x225d83, + 0x686149c2, + 0x68a00182, + 0x49f47, + 0x68e03002, + 0x69202e42, + 0x69600b42, + 0x69a02bc2, + 0x69e029c2, + 0x6a201fc2, + 0xb3985, + 0x234543, + 0x202b84, + 0x6a6226c2, + 0x6aa03a82, + 0x6ae03202, + 0x16c90b, + 0x6b200e82, + 0x6ba49a02, + 0x6be02342, + 0x6c203d02, + 0x6c60f242, + 0x6ca0ec42, + 0x6ce0e602, + 0x6d2675c2, + 0x6d604642, + 0x6da01b42, + 0x6de00c82, + 0x6e2042c2, + 0x6e61c702, + 0x6ea00e42, + 0x7f1c4, + 0x350703, + 0x6ee33082, + 0x6f216982, + 0x6f603402, + 0x6fa089c2, + 0x6fe00442, + 0x702056c2, + 0x44107, + 0x70601302, + 0x70a07302, + 0x70e09842, + 0x71218942, + 0xf484c, + 0x71621c82, + 0x71a3ab02, + 0x71e11602, + 0x72201682, + 0x72601f82, + 0x72a34a82, + 0x72e00202, + 0x7320e8c2, + 0x736724c2, + 0x73a56642, 0x219f02, - 0x380383, - 0x2b2c83, - 0x323ac3, - 0x5822d183, - 0x22b782, - 0x2343c3, - 0x208f43, - 0x21eb03, - 0x201604, - 0x36b683, - 0x280b03, - 0x211003, - 0x212444, - 0x58606bc2, - 0x238483, - 0x2264c3, - 0x232dc3, - 0x245483, - 0x221e42, - 0x223ec3, - 0x880c8, - 0x21eb03, - 0x307e44, - 0x323ac3, - 0x216582, - 0x22d183, - 0x2374c4, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x202243, - 0x2f5d44, - 0x307b04, - 0x2cc5c6, - 0x212444, - 0x238483, - 0x2264c3, - 0x21bd03, - 0x26a8c6, - 0x1737cb, - 0x1e1c6, - 0x23d0a, - 0xfcb8a, - 0x880c8, - 0x3a8204, - 0x22d183, - 0x323a84, - 0x2343c3, - 0x247b84, - 0x21eb03, - 0x251283, - 0x211003, - 0x238483, - 0x2264c3, - 0x32248b, - 0x39d94a, - 0x3b298c, - 0x200882, - 0x216582, - 0x201f82, - 0x2a9c05, - 0x201604, - 0x206742, - 0x211003, - 0x307b04, - 0x205902, - 0x201502, - 0x217642, - 0x221e42, - 0x123ac3, - 0x357309, - 0x254208, - 0x301189, - 0x33a509, - 0x35bd8a, - 0x23808a, - 0x20cc82, - 0x21dec2, - 0x16582, - 0x22d183, - 0x200bc2, - 0x2402c6, - 0x354502, - 0x202982, - 0x3861ce, - 0x21bc4e, - 0x278107, - 0x32fe47, - 0x26b302, - 0x2343c3, - 0x21eb03, - 0x202842, - 0x200a82, - 0x23d1cf, - 0x204ec2, - 0x33b3c7, - 0x24cf87, - 0x256107, - 0x26204c, - 0x268b4c, - 0x2057c4, - 0x2696ca, - 0x21bb82, - 0x209682, - 0x2b2684, - 0x215bc2, - 0x2bb4c2, - 0x268d84, - 0x21ac42, - 0x20b402, - 0x33b247, - 0x233285, - 0x20a242, - 0x23d144, - 0x372e82, - 0x2cea08, - 0x238483, - 0x3a2308, - 0x203082, - 0x235885, - 0x3a25c6, - 0x2264c3, - 0x206a42, - 0x2dd0c7, - 0x2002, - 0x26ccc5, - 0x393e85, - 0x2166c2, - 0x226442, - 0x31864a, - 0x26404a, - 0x210fc2, - 0x376c04, - 0x201a02, - 0x38e588, - 0x204cc2, - 0x2fd448, - 0x2f64c7, - 0x2f67c9, - 0x26cd42, - 0x2fbb85, - 0x2546c5, - 0x2148cb, - 0x2bfdcc, - 0x22f848, - 0x2fbf48, - 0x260dc2, - 0x20d782, - 0x200882, - 0x880c8, - 0x216582, - 0x22d183, - 0x201f82, - 0x205902, - 0x201502, - 0x2264c3, - 0x217642, - 0x200882, - 0x5a616582, - 0x5aa1eb03, - 0x332683, - 0x206742, - 0x238483, - 0x364e83, - 0x2264c3, - 0x2db083, - 0x26b346, - 0x1617643, - 0x880c8, - 0x51f05, - 0xa7dcd, - 0x5f007, - 0x5b200182, - 0x5b601002, - 0x5ba04802, - 0x5be01842, - 0x5c2108c2, - 0x5c602ec2, - 0x16e747, - 0x5ca16582, - 0x5ce30542, - 0x5d21e582, - 0x5d600f82, - 0x21bc43, - 0x1b4284, - 0x20ddc3, - 0x5da18fc2, - 0x5de038c2, - 0x47887, - 0x5e214b82, - 0x5e600902, - 0x5ea02ac2, - 0x5ee082c2, - 0x5f205602, - 0x5f600a82, - 0xb97c5, - 0x226743, - 0x30ec04, - 0x5fa15bc2, - 0x5fe16c82, - 0x60200102, - 0x7508b, - 0x60600982, - 0x60e09782, - 0x61206742, - 0x61600342, - 0x61a50042, - 0x61e03042, - 0x6220e842, - 0x62600e02, - 0x62a06bc2, - 0x62e01302, - 0x63205902, - 0x6361d302, - 0x63a04242, - 0x63e425c2, - 0x133184, - 0x371183, - 0x64206602, - 0x64613942, - 0x64a06942, - 0x64e03742, - 0x65201502, - 0x65607a82, - 0x65547, - 0x65a07442, - 0x65e07482, - 0x66217642, - 0x6660a442, - 0xeb58c, - 0x66a24982, - 0x66e6f2c2, - 0x6721dcc2, - 0x67603dc2, - 0x67a2d742, - 0x67e1eb82, - 0x68204702, - 0x68606f42, - 0x68a71282, - 0x68e15ac2, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x75803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x60b6b683, - 0x275803, - 0x377004, - 0x254106, - 0x2e6a83, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x36b683, - 0x275803, - 0x200482, - 0x200482, - 0x36b683, - 0x275803, - 0x6962d183, - 0x2343c3, - 0x2a0fc3, - 0x211003, - 0x238483, - 0x2264c3, - 0x880c8, - 0x216582, - 0x22d183, - 0x238483, - 0x2264c3, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x211003, - 0x238483, - 0x2264c3, - 0x245dc4, - 0x216582, - 0x22d183, - 0x308703, - 0x2343c3, - 0x247344, - 0x211cc3, - 0x21eb03, - 0x201604, - 0x202243, - 0x211003, - 0x238483, - 0x2264c3, - 0x215cc3, - 0x2e9cc5, - 0x241403, - 0x223ec3, - 0x216582, - 0x22d183, - 0x36b683, - 0x238483, - 0x2264c3, - 0x200882, - 0x323ac3, - 0x880c8, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x231ac6, - 0x201604, - 0x202243, - 0x212444, - 0x238483, - 0x2264c3, - 0x21bd03, - 0x22d183, - 0x2343c3, - 0x238483, - 0x2264c3, - 0x22d183, - 0x1e1c6, - 0x2343c3, - 0x21eb03, - 0xd1906, - 0x238483, - 0x2264c3, - 0x308a48, - 0x30b989, - 0x31bcc9, - 0x326c48, - 0x37efc8, - 0x37efc9, - 0x333c5, - 0x200882, - 0x20b285, - 0x231b43, - 0x6c216582, - 0x2343c3, - 0x21eb03, - 0x22f647, - 0x206003, - 0x211003, - 0x238483, - 0x201f43, - 0x210783, - 0x2025c3, - 0x2264c3, - 0x3a5946, - 0x203e42, - 0x223ec3, - 0x880c8, - 0x200882, - 0x323ac3, - 0x216582, - 0x22d183, - 0x2343c3, - 0x21eb03, - 0x201604, - 0x211003, - 0x238483, - 0x2264c3, - 0x217643, - 0x14fa806, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0xa203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x6b753903, + 0x20a203, + 0x2d6d44, + 0x25d446, + 0x2f1743, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x353903, + 0x20a203, + 0x219f02, + 0x219f02, + 0x353903, + 0x20a203, + 0x742a84c3, + 0x232403, + 0x37ac03, + 0x209703, + 0x205503, + 0x200983, + 0x16d208, + 0x2099c2, + 0x2a84c3, + 0x205503, + 0x200983, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x209703, + 0x205503, + 0x200983, + 0x2030c4, + 0x2099c2, + 0x2a84c3, + 0x2028c3, + 0x232403, + 0x249944, + 0x2163c3, + 0x2e9dc3, + 0x3b1384, + 0x244183, + 0x209703, + 0x205503, + 0x200983, + 0x23e743, + 0x373605, + 0x2a1fc3, + 0x25ed03, + 0x2099c2, + 0x2a84c3, + 0x353903, + 0x205503, + 0x200983, + 0x205702, + 0x38d2c3, + 0x16d208, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x22f706, + 0x3b1384, + 0x244183, + 0x211cc4, + 0x205503, + 0x200983, + 0x201303, + 0x2a84c3, + 0x232403, + 0x205503, + 0x200983, + 0x14bb147, + 0x2a84c3, + 0x1cdc6, + 0x232403, + 0x2e9dc3, + 0xdba46, + 0x205503, + 0x200983, + 0x3149c8, + 0x318709, + 0x328b89, + 0x333808, + 0x37dc48, + 0x37dc49, + 0x24318d, + 0x2ee80f, + 0x251490, + 0x34848d, + 0x3638cc, + 0x37f98b, + 0x98605, + 0x205702, + 0x33e6c5, + 0x200243, + 0x772099c2, + 0x232403, + 0x2e9dc3, + 0x343ec7, + 0x206a43, + 0x209703, + 0x205503, + 0x21c2c3, + 0x20dcc3, + 0x204e83, + 0x200983, + 0x2efec6, + 0x20b0c2, + 0x25ed03, + 0x16d208, + 0x205702, + 0x38d2c3, + 0x2099c2, + 0x2a84c3, + 0x232403, + 0x2e9dc3, + 0x3b1384, + 0x209703, + 0x205503, + 0x200983, + 0x214843, + 0x14f53c6, + 0x205702, + 0x2099c2, + 0x2e9dc3, + 0x209703, + 0x200983, } // children is the list of nodes' children, the parent's wildcard bit and the @@ -8636,439 +8770,484 @@ var children = [...]uint32{ 0x40000000, 0x50000000, 0x60000000, - 0x185c611, - 0x1860617, - 0x1880618, - 0x19dc620, - 0x19f0677, - 0x1a0467c, - 0x1a14681, - 0x1a30685, - 0x1a3468c, - 0x1a4c68d, - 0x1a70693, - 0x1a7469c, - 0x1a8c69d, - 0x1a906a3, - 0x1a946a4, - 0x1ab86a5, - 0x1abc6ae, - 0x21ac46af, - 0x1b0c6b1, - 0x1b106c3, - 0x1b306c4, - 0x1b446cc, - 0x1b486d1, - 0x1b786d2, - 0x1b946de, - 0x1bbc6e5, - 0x1bc86ef, - 0x1bcc6f2, - 0x1c606f3, - 0x1c74718, - 0x1c8871d, - 0x1cb8722, - 0x1cc872e, - 0x1cdc732, - 0x1d00737, - 0x1e18740, - 0x1e1c786, - 0x1e88787, - 0x1e9c7a2, - 0x1eb07a7, - 0x1eb87ac, - 0x1ec87ae, - 0x1ecc7b2, - 0x1ee47b3, - 0x1f2c7b9, - 0x1f447cb, - 0x1f487d1, - 0x1f4c7d2, - 0x1f547d3, - 0x1f907d5, - 0x61f947e4, - 0x1fa87e5, - 0x1fac7ea, - 0x1fb07eb, - 0x1fc07ec, - 0x20707f0, - 0x207481c, - 0x2207c81d, - 0x2208081f, - 0x2084820, - 0x20b8821, - 0x20bc82e, - 0x24f482f, - 0x2254493d, - 0x22548951, - 0x2570952, - 0x257895c, - 0x2257c95e, - 0x258495f, - 0x22594961, - 0x22598965, - 0x25a4966, - 0x225a8969, - 0x25ac96a, - 0x225b096b, - 0x25cc96c, - 0x25e4973, - 0x25e8979, - 0x25f897a, - 0x260097e, - 0x22634980, - 0x263898d, - 0x264898e, - 0x267c992, - 0x269499f, - 0x26a89a5, - 0x26d09aa, - 0x26f09b4, - 0x27209bc, - 0x27489c8, - 0x274c9d2, - 0x27709d3, - 0x27749dc, - 0x27889dd, - 0x278c9e2, - 0x27909e3, - 0x27b09e4, - 0x27c09ec, - 0x27d09f0, - 0x27d49f4, - 0x28489f5, - 0x2864a12, - 0x2870a19, - 0x2884a1c, - 0x289ca21, - 0x28b0a27, - 0x28c8a2c, - 0x28e0a32, - 0x28f8a38, - 0x2914a3e, - 0x292ca45, - 0x298ca4b, - 0x29a4a63, - 0x29a8a69, - 0x29bca6a, - 0x2a00a6f, - 0x2a80a80, - 0x2aacaa0, - 0x2ab0aab, - 0x2ab8aac, - 0x2ad8aae, - 0x2adcab6, - 0x2afcab7, - 0x2b04abf, - 0x2b3cac1, - 0x2b78acf, - 0x2b7cade, - 0x2bbcadf, - 0x2bd4aef, - 0x2bf8af5, - 0x2c18afe, - 0x31dcb06, - 0x31e8c77, - 0x3208c7a, - 0x33c4c82, - 0x3494cf1, - 0x3504d25, - 0x355cd41, - 0x3644d57, - 0x369cd91, - 0x36d8da7, - 0x37d4db6, - 0x38a0df5, - 0x3938e28, - 0x39c8e4e, - 0x3a2ce72, - 0x3c64e8b, - 0x3d1cf19, - 0x3de8f47, - 0x3e34f7a, - 0x3ebcf8d, - 0x3ef8faf, - 0x3f48fbe, - 0x3fc0fd2, - 0x63fc4ff0, - 0x63fc8ff1, - 0x63fccff2, - 0x4048ff3, - 0x40ad012, - 0x412902b, - 0x41a104a, - 0x4221068, - 0x428d088, - 0x43b90a3, - 0x44110ee, - 0x64415104, - 0x44ad105, - 0x453512b, - 0x458114d, - 0x45e9160, - 0x469117a, - 0x47591a4, - 0x47c11d6, - 0x48d51f0, - 0x648d9235, - 0x648dd236, - 0x4939237, - 0x499524e, - 0x4a25265, - 0x4aa1289, - 0x4ae52a8, - 0x4bc92b9, - 0x4bfd2f2, - 0x4c5d2ff, - 0x4cd1317, - 0x4d59334, - 0x4d99356, - 0x4e09366, - 0x64e0d382, - 0x64e11383, - 0x24e15384, - 0x4e2d385, - 0x4e4938b, - 0x4e8d392, - 0x4e9d3a3, - 0x4eb53a7, - 0x4f2d3ad, - 0x4f353cb, - 0x4f493cd, - 0x4f613d2, - 0x4f893d8, - 0x4f8d3e2, - 0x4f953e3, - 0x4fa93e5, - 0x4fc53ea, - 0x4fc93f1, - 0x4fd13f2, - 0x500d3f4, - 0x5021403, - 0x5029408, - 0x503140a, - 0x503540c, - 0x505940d, - 0x507d416, - 0x509541f, - 0x5099425, - 0x50a1426, - 0x50a5428, - 0x50f9429, - 0x511d43e, - 0x513d447, - 0x515944f, - 0x5169456, - 0x517d45a, - 0x518145f, - 0x5189460, - 0x519d462, - 0x51ad467, - 0x51b146b, - 0x51cd46c, - 0x5a5d473, - 0x5a95697, - 0x5ac16a5, - 0x5ad96b0, - 0x5af96b6, - 0x5b196be, - 0x5b5d6c6, - 0x5b656d7, - 0x25b696d9, - 0x25b6d6da, - 0x5b716db, - 0x5c956dc, - 0x25c99725, - 0x25ca1726, - 0x25ca9728, - 0x25cb572a, - 0x5cb972d, - 0x5ce172e, - 0x5d09738, - 0x5d0d742, - 0x25d45743, - 0x5d59751, - 0x68b1756, - 0x68b5a2c, - 0x68b9a2d, - 0x268bda2e, - 0x68c1a2f, - 0x268c5a30, - 0x68c9a31, - 0x268d5a32, - 0x68d9a35, - 0x68dda36, - 0x268e1a37, - 0x68e5a38, - 0x268eda39, - 0x68f1a3b, - 0x68f5a3c, - 0x26905a3d, - 0x6909a41, - 0x690da42, - 0x6911a43, - 0x6915a44, - 0x26919a45, - 0x691da46, - 0x6921a47, - 0x6925a48, - 0x6929a49, - 0x26931a4a, - 0x6935a4c, - 0x6939a4d, - 0x693da4e, - 0x26941a4f, - 0x6945a50, - 0x2694da51, - 0x26951a53, - 0x696da54, - 0x6979a5b, - 0x69b9a5e, - 0x69bda6e, - 0x69e1a6f, - 0x6b31a78, - 0x26b39acc, - 0x26b3dace, - 0x26b41acf, - 0x6b49ad0, - 0x6c25ad2, - 0x6c29b09, - 0x6c55b0a, - 0x6c75b15, - 0x6c81b1d, - 0x6ca1b20, - 0x6cd9b28, - 0x6f71b36, - 0x702dbdc, - 0x7041c0b, - 0x7075c10, - 0x70a5c1d, - 0x70c1c29, - 0x70e5c30, - 0x7101c39, - 0x711dc40, - 0x7141c47, - 0x7151c50, - 0x7185c54, - 0x71a1c61, - 0x73adc68, - 0x73d1ceb, - 0x73f1cf4, - 0x7405cfc, - 0x7419d01, - 0x7439d06, - 0x74ddd0e, - 0x74f9d37, - 0x7515d3e, - 0x7519d45, - 0x751dd46, - 0x7521d47, - 0x7535d48, - 0x7555d4d, - 0x7561d55, - 0x7565d58, - 0x7595d59, - 0x7615d65, - 0x7629d85, - 0x762dd8a, - 0x7645d8b, - 0x7649d91, - 0x7655d92, - 0x7659d95, - 0x7675d96, - 0x76b1d9d, - 0x76b5dac, - 0x76d5dad, - 0x7725db5, - 0x773ddc9, - 0x7791dcf, - 0x7795de4, - 0x7799de5, - 0x77ddde6, - 0x77eddf7, - 0x7825dfb, - 0x7855e09, - 0x7991e15, - 0x79b5e64, - 0x79e1e6d, - 0x79ede78, - 0x79f1e7b, - 0x7b01e7c, - 0x7b0dec0, - 0x7b19ec3, - 0x7b25ec6, - 0x7b31ec9, - 0x7b3decc, - 0x7b49ecf, - 0x7b55ed2, - 0x7b61ed5, - 0x7b6ded8, - 0x7b79edb, - 0x7b85ede, - 0x7b91ee1, - 0x7b9dee4, - 0x7ba5ee7, - 0x7bb1ee9, - 0x7bbdeec, - 0x7bc9eef, - 0x7bd5ef2, - 0x7be1ef5, - 0x7bedef8, - 0x7bf9efb, - 0x7c05efe, - 0x7c11f01, - 0x7c1df04, - 0x7c29f07, - 0x7c35f0a, - 0x7c41f0d, - 0x7c4df10, - 0x7c59f13, - 0x7c65f16, - 0x7c71f19, - 0x7c79f1c, - 0x7c85f1e, - 0x7c91f21, - 0x7c9df24, - 0x7ca9f27, - 0x7cb5f2a, - 0x7cc1f2d, - 0x7ccdf30, + 0x184c60d, + 0x1850613, + 0x1870614, + 0x19cc61c, + 0x19e0673, + 0x19f4678, + 0x1a0467d, + 0x1a20681, + 0x1a24688, + 0x1a3c689, + 0x1a6468f, + 0x1a68699, + 0x1a8069a, + 0x1a846a0, + 0x1a886a1, + 0x1ab06a2, + 0x1ab46ac, + 0x21abc6ad, + 0x1b046af, + 0x1b086c1, + 0x1b286c2, + 0x1b3c6ca, + 0x1b406cf, + 0x1b706d0, + 0x1b8c6dc, + 0x1bb46e3, + 0x1bc06ed, + 0x1bc46f0, + 0x1c5c6f1, + 0x1c70717, + 0x1c8471c, + 0x1cb4721, + 0x1cc472d, + 0x1cd8731, + 0x1cfc736, + 0x1e3473f, + 0x1e3878d, + 0x1ea478e, + 0x1f107a9, + 0x1f247c4, + 0x1f387c9, + 0x1f407ce, + 0x1f507d0, + 0x1f547d4, + 0x1f6c7d5, + 0x1fb87db, + 0x1fd47ee, + 0x1fd87f5, + 0x1fdc7f6, + 0x1fe87f7, + 0x20247fa, + 0x62028809, + 0x203c80a, + 0x205080f, + 0x2054814, + 0x2064815, + 0x2114819, + 0x2118845, + 0x22124846, + 0x2212c849, + 0x216484b, + 0x2168859, + 0x25b885a, + 0x2265896e, + 0x2265c996, + 0x22660997, + 0x2266c998, + 0x2267099b, + 0x2267c99c, + 0x2268099f, + 0x226849a0, + 0x226889a1, + 0x2268c9a2, + 0x226909a3, + 0x2269c9a4, + 0x226a09a7, + 0x226ac9a8, + 0x226b09ab, + 0x226b49ac, + 0x226b89ad, + 0x226c49ae, + 0x226c89b1, + 0x226cc9b2, + 0x226d09b3, + 0x26d49b4, + 0x226d89b5, + 0x226e49b6, + 0x226e89b9, + 0x26f09ba, + 0x227089bc, + 0x2270c9c2, + 0x27189c3, + 0x2271c9c6, + 0x27209c7, + 0x227249c8, + 0x27409c9, + 0x27589d0, + 0x275c9d6, + 0x276c9d7, + 0x27749db, + 0x27a89dd, + 0x27ac9ea, + 0x27bc9eb, + 0x28609ef, + 0x22864a18, + 0x286ca19, + 0x2870a1b, + 0x2888a1c, + 0x289ca22, + 0x28c4a27, + 0x28e4a31, + 0x2914a39, + 0x293ca45, + 0x2940a4f, + 0x2964a50, + 0x2968a59, + 0x297ca5a, + 0x2980a5f, + 0x2984a60, + 0x29a4a61, + 0x29c0a69, + 0x29c4a70, + 0x229c8a71, + 0x29cca72, + 0x29d0a73, + 0x29e0a74, + 0x29e4a78, + 0x2a5ca79, + 0x2a78a97, + 0x2a88a9e, + 0x2a9caa2, + 0x2ab4aa7, + 0x2ac8aad, + 0x2ae0ab2, + 0x2ae4ab8, + 0x2afcab9, + 0x2b14abf, + 0x2b30ac5, + 0x2b48acc, + 0x2ba8ad2, + 0x2bc0aea, + 0x2bc4af0, + 0x2bd8af1, + 0x2c1caf6, + 0x2c9cb07, + 0x2cc8b27, + 0x2cccb32, + 0x2cd4b33, + 0x2cf4b35, + 0x2cf8b3d, + 0x2d18b3e, + 0x2d20b46, + 0x2d5cb48, + 0x2d9cb57, + 0x2da0b67, + 0x2e00b68, + 0x2e04b80, + 0x22e08b81, + 0x2e20b82, + 0x2e44b88, + 0x2e64b91, + 0x3428b99, + 0x3434d0a, + 0x3454d0d, + 0x3610d15, + 0x36e0d84, + 0x3750db8, + 0x37a8dd4, + 0x3890dea, + 0x38e8e24, + 0x3924e3a, + 0x3a20e49, + 0x3aece88, + 0x3b84ebb, + 0x3c14ee1, + 0x3c78f05, + 0x3eb0f1e, + 0x3f68fac, + 0x4034fda, + 0x408100d, + 0x4109020, + 0x4145042, + 0x4195051, + 0x420d065, + 0x64211083, + 0x64215084, + 0x64219085, + 0x4295086, + 0x42f10a5, + 0x436d0bc, + 0x43e50db, + 0x44650f9, + 0x44d1119, + 0x45fd134, + 0x465517f, + 0x64659195, + 0x46f1196, + 0x47791bc, + 0x47c51de, + 0x482d1f1, + 0x48d520b, + 0x499d235, + 0x4a05267, + 0x4b19281, + 0x64b1d2c6, + 0x64b212c7, + 0x4b7d2c8, + 0x4bd92df, + 0x4c692f6, + 0x4ce531a, + 0x4d29339, + 0x4e0d34a, + 0x4e41383, + 0x4ea1390, + 0x4f153a8, + 0x4f9d3c5, + 0x4fdd3e7, + 0x504d3f7, + 0x65051413, + 0x65055414, + 0x25059415, + 0x5071416, + 0x508d41c, + 0x50d1423, + 0x50e1434, + 0x50f9438, + 0x517143e, + 0x517945c, + 0x518d45e, + 0x51a5463, + 0x51cd469, + 0x51d1473, + 0x51d9474, + 0x51ed476, + 0x520947b, + 0x520d482, + 0x5215483, + 0x5251485, + 0x5265494, + 0x526d499, + 0x527549b, + 0x527949d, + 0x529d49e, + 0x52c14a7, + 0x52d94b0, + 0x52dd4b6, + 0x52e54b7, + 0x52e94b9, + 0x534d4ba, + 0x53514d3, + 0x53754d4, + 0x53954dd, + 0x53b14e5, + 0x53c14ec, + 0x53d54f0, + 0x53d94f5, + 0x53e14f6, + 0x53f54f8, + 0x54054fd, + 0x5409501, + 0x5425502, + 0x5cb5509, + 0x5ced72d, + 0x5d1973b, + 0x5d31746, + 0x5d5174c, + 0x5d71754, + 0x5db575c, + 0x5dbd76d, + 0x25dc176f, + 0x25dc5770, + 0x5dcd771, + 0x5f29773, + 0x25f2d7ca, + 0x25f3d7cb, + 0x25f457cf, + 0x25f517d1, + 0x5f557d4, + 0x5f597d5, + 0x5f817d6, + 0x5fa97e0, + 0x5fad7ea, + 0x5fe57eb, + 0x5ff97f9, + 0x6b517fe, + 0x6b55ad4, + 0x6b59ad5, + 0x26b5dad6, + 0x6b61ad7, + 0x26b65ad8, + 0x6b69ad9, + 0x26b75ada, + 0x6b79add, + 0x6b7dade, + 0x26b81adf, + 0x6b85ae0, + 0x26b8dae1, + 0x6b91ae3, + 0x6b95ae4, + 0x26ba5ae5, + 0x6ba9ae9, + 0x6badaea, + 0x6bb1aeb, + 0x6bb5aec, + 0x26bb9aed, + 0x6bbdaee, + 0x6bc1aef, + 0x6bc5af0, + 0x6bc9af1, + 0x26bd1af2, + 0x6bd5af4, + 0x6bd9af5, + 0x6bddaf6, + 0x26be1af7, + 0x6be5af8, + 0x26bedaf9, + 0x26bf1afb, + 0x6c0dafc, + 0x6c19b03, + 0x6c59b06, + 0x6c5db16, + 0x6c81b17, + 0x6c85b20, + 0x6c89b21, + 0x6e01b22, + 0x26e05b80, + 0x26e0db81, + 0x26e11b83, + 0x26e15b84, + 0x6e1db85, + 0x6ef9b87, + 0x26efdbbe, + 0x6f01bbf, + 0x6f2dbc0, + 0x6f31bcb, + 0x6f51bcc, + 0x6f5dbd4, + 0x6f7dbd7, + 0x6fb5bdf, + 0x724dbed, + 0x7309c93, + 0x731dcc2, + 0x7351cc7, + 0x7381cd4, + 0x739dce0, + 0x73c1ce7, + 0x73ddcf0, + 0x73f9cf7, + 0x741dcfe, + 0x742dd07, + 0x7431d0b, + 0x7465d0c, + 0x7481d19, + 0x74edd20, + 0x274f1d3b, + 0x7515d3c, + 0x7535d45, + 0x7549d4d, + 0x755dd52, + 0x7561d57, + 0x7581d58, + 0x7625d60, + 0x7641d89, + 0x7661d90, + 0x7665d98, + 0x766dd99, + 0x7671d9b, + 0x7685d9c, + 0x76a5da1, + 0x76b1da9, + 0x76bddac, + 0x76eddaf, + 0x77bddbb, + 0x77c1def, + 0x77d5df0, + 0x77d9df5, + 0x77f1df6, + 0x77f5dfc, + 0x7801dfd, + 0x7805e00, + 0x7821e01, + 0x785de08, + 0x7861e17, + 0x7881e18, + 0x78d1e20, + 0x78ede34, + 0x7941e3b, + 0x7945e50, + 0x7949e51, + 0x794de52, + 0x7991e53, + 0x79a1e64, + 0x79dde68, + 0x79e1e77, + 0x7a11e78, + 0x7b59e84, + 0x7b7ded6, + 0x7ba9edf, + 0x7bb5eea, + 0x7bbdeed, + 0x7ccdeef, 0x7cd9f33, 0x7ce5f36, 0x7cf1f39, 0x7cfdf3c, 0x7d09f3f, 0x7d15f42, - 0x7d1df45, - 0x7d29f47, - 0x7d35f4a, - 0x7d41f4d, - 0x7d4df50, - 0x7d59f53, - 0x7d65f56, - 0x7d71f59, + 0x7d21f45, + 0x7d2df48, + 0x7d39f4b, + 0x7d45f4e, + 0x7d51f51, + 0x7d5df54, + 0x7d69f57, + 0x7d71f5a, 0x7d7df5c, - 0x7d81f5f, - 0x7d8df60, - 0x7da5f63, - 0x7da9f69, - 0x7db9f6a, - 0x7dd1f6e, - 0x7e15f74, - 0x7e29f85, - 0x7e5df8a, - 0x7e6df97, - 0x7e89f9b, - 0x7ea1fa2, - 0x7ea5fa8, - 0x27ee9fa9, - 0x7eedfba, - 0x7f19fbb, - 0x7f1dfc6, + 0x7d89f5f, + 0x7d95f62, + 0x7da1f65, + 0x7dadf68, + 0x7db9f6b, + 0x7dc5f6e, + 0x7dd1f71, + 0x7dddf74, + 0x7de9f77, + 0x7df5f7a, + 0x7e01f7d, + 0x7e0df80, + 0x7e19f83, + 0x7e25f86, + 0x7e31f89, + 0x7e3df8c, + 0x7e45f8f, + 0x7e51f91, + 0x7e5df94, + 0x7e69f97, + 0x7e75f9a, + 0x7e81f9d, + 0x7e8dfa0, + 0x7e99fa3, + 0x7ea5fa6, + 0x7eb1fa9, + 0x7ebdfac, + 0x7ec9faf, + 0x7ed5fb2, + 0x7ee1fb5, + 0x7ee9fb8, + 0x7ef5fba, + 0x7f01fbd, + 0x7f0dfc0, + 0x7f19fc3, + 0x7f25fc6, + 0x7f31fc9, + 0x7f3dfcc, + 0x7f49fcf, + 0x7f4dfd2, + 0x7f59fd3, + 0x7f71fd6, + 0x7f75fdc, + 0x7f85fdd, + 0x7f9dfe1, + 0x7fe1fe7, + 0x7ff5ff8, + 0x8029ffd, + 0x803a00a, + 0x805a00e, + 0x8072016, + 0x808a01c, + 0x808e022, + 0x280d2023, + 0x80d6034, + 0x8102035, + 0x8106040, + 0x811a041, } -// max children 434 (capacity 511) -// max text offset 27930 (capacity 32767) +// max children 479 (capacity 511) +// max text offset 28411 (capacity 32767) // max text length 36 (capacity 63) -// max hi 8135 (capacity 16383) -// max lo 8134 (capacity 16383) +// max hi 8262 (capacity 16383) +// max lo 8257 (capacity 16383) diff --git a/vendor/golang.org/x/net/publicsuffix/table_test.go b/vendor/golang.org/x/net/publicsuffix/table_test.go index 5433f3b175..416512cb92 100644 --- a/vendor/golang.org/x/net/publicsuffix/table_test.go +++ b/vendor/golang.org/x/net/publicsuffix/table_test.go @@ -148,6 +148,7 @@ var rules = [...]string{ "gov.ar", "int.ar", "mil.ar", + "musica.ar", "net.ar", "org.ar", "tur.ar", @@ -317,6 +318,7 @@ var rules = [...]string{ "art.br", "ato.br", "b.br", + "belem.br", "bio.br", "blog.br", "bmd.br", @@ -325,6 +327,8 @@ var rules = [...]string{ "cnt.br", "com.br", "coop.br", + "cri.br", + "def.br", "ecn.br", "eco.br", "edu.br", @@ -335,6 +339,7 @@ var rules = [...]string{ "eti.br", "far.br", "flog.br", + "floripa.br", "fm.br", "fnd.br", "fot.br", @@ -342,9 +347,37 @@ var rules = [...]string{ "g12.br", "ggf.br", "gov.br", + "ac.gov.br", + "al.gov.br", + "am.gov.br", + "ap.gov.br", + "ba.gov.br", + "ce.gov.br", + "df.gov.br", + "es.gov.br", + "go.gov.br", + "ma.gov.br", + "mg.gov.br", + "ms.gov.br", + "mt.gov.br", + "pa.gov.br", + "pb.gov.br", + "pe.gov.br", + "pi.gov.br", + "pr.gov.br", + "rj.gov.br", + "rn.gov.br", + "ro.gov.br", + "rr.gov.br", + "rs.gov.br", + "sc.gov.br", + "se.gov.br", + "sp.gov.br", + "to.gov.br", "imb.br", "ind.br", "inf.br", + "jampa.br", "jor.br", "jus.br", "leg.br", @@ -360,6 +393,7 @@ var rules = [...]string{ "ntr.br", "odo.br", "org.br", + "poa.br", "ppg.br", "pro.br", "psc.br", @@ -367,6 +401,7 @@ var rules = [...]string{ "qsl.br", "radio.br", "rec.br", + "recife.br", "slg.br", "srv.br", "taxi.br", @@ -376,6 +411,7 @@ var rules = [...]string{ "tur.br", "tv.br", "vet.br", + "vix.br", "vlog.br", "wiki.br", "zlg.br", @@ -541,6 +577,7 @@ var rules = [...]string{ "org.cw", "cx", "gov.cx", + "cy", "ac.cy", "biz.cy", "com.cy", @@ -2207,9 +2244,7 @@ var rules = [...]string{ "aso.kumamoto.jp", "choyo.kumamoto.jp", "gyokuto.kumamoto.jp", - "hitoyoshi.kumamoto.jp", "kamiamakusa.kumamoto.jp", - "kashima.kumamoto.jp", "kikuchi.kumamoto.jp", "kumamoto.kumamoto.jp", "mashiki.kumamoto.jp", @@ -3944,6 +3979,7 @@ var rules = [...]string{ "name", "nc", "asso.nc", + "nom.nc", "ne", "net", "nf", @@ -3968,20 +4004,21 @@ var rules = [...]string{ "net.ng", "org.ng", "sch.ng", + "ni", + "ac.ni", + "biz.ni", + "co.ni", "com.ni", - "gob.ni", "edu.ni", - "org.ni", - "nom.ni", - "net.ni", - "mil.ni", - "co.ni", - "biz.ni", - "web.ni", - "int.ni", - "ac.ni", + "gob.ni", "in.ni", "info.ni", + "int.ni", + "mil.ni", + "net.ni", + "nom.ni", + "org.ni", + "web.ni", "nl", "bv.nl", "no", @@ -4775,6 +4812,7 @@ var rules = [...]string{ "net.om", "org.om", "pro.om", + "onion", "org", "pa", "ac.pa", @@ -5126,133 +5164,9 @@ var rules = [...]string{ "org.rs", "ru", "ac.ru", - "com.ru", "edu.ru", - "int.ru", - "net.ru", - "org.ru", - "pp.ru", - "adygeya.ru", - "altai.ru", - "amur.ru", - "arkhangelsk.ru", - "astrakhan.ru", - "bashkiria.ru", - "belgorod.ru", - "bir.ru", - "bryansk.ru", - "buryatia.ru", - "cbg.ru", - "chel.ru", - "chelyabinsk.ru", - "chita.ru", - "chukotka.ru", - "chuvashia.ru", - "dagestan.ru", - "dudinka.ru", - "e-burg.ru", - "grozny.ru", - "irkutsk.ru", - "ivanovo.ru", - "izhevsk.ru", - "jar.ru", - "joshkar-ola.ru", - "kalmykia.ru", - "kaluga.ru", - "kamchatka.ru", - "karelia.ru", - "kazan.ru", - "kchr.ru", - "kemerovo.ru", - "khabarovsk.ru", - "khakassia.ru", - "khv.ru", - "kirov.ru", - "koenig.ru", - "komi.ru", - "kostroma.ru", - "krasnoyarsk.ru", - "kuban.ru", - "kurgan.ru", - "kursk.ru", - "lipetsk.ru", - "magadan.ru", - "mari.ru", - "mari-el.ru", - "marine.ru", - "mordovia.ru", - "msk.ru", - "murmansk.ru", - "nalchik.ru", - "nnov.ru", - "nov.ru", - "novosibirsk.ru", - "nsk.ru", - "omsk.ru", - "orenburg.ru", - "oryol.ru", - "palana.ru", - "penza.ru", - "perm.ru", - "ptz.ru", - "rnd.ru", - "ryazan.ru", - "sakhalin.ru", - "samara.ru", - "saratov.ru", - "simbirsk.ru", - "smolensk.ru", - "spb.ru", - "stavropol.ru", - "stv.ru", - "surgut.ru", - "tambov.ru", - "tatarstan.ru", - "tom.ru", - "tomsk.ru", - "tsaritsyn.ru", - "tsk.ru", - "tula.ru", - "tuva.ru", - "tver.ru", - "tyumen.ru", - "udm.ru", - "udmurtia.ru", - "ulan-ude.ru", - "vladikavkaz.ru", - "vladimir.ru", - "vladivostok.ru", - "volgograd.ru", - "vologda.ru", - "voronezh.ru", - "vrn.ru", - "vyatka.ru", - "yakutia.ru", - "yamal.ru", - "yaroslavl.ru", - "yekaterinburg.ru", - "yuzhno-sakhalinsk.ru", - "amursk.ru", - "baikal.ru", - "cmw.ru", - "fareast.ru", - "jamal.ru", - "kms.ru", - "k-uralsk.ru", - "kustanai.ru", - "kuzbass.ru", - "mytis.ru", - "nakhodka.ru", - "nkz.ru", - "norilsk.ru", - "oskol.ru", - "pyatigorsk.ru", - "rubtsovsk.ru", - "snz.ru", - "syzran.ru", - "vdonsk.ru", - "zgrad.ru", "gov.ru", + "int.ru", "mil.ru", "test.ru", "rw", @@ -5385,38 +5299,6 @@ var rules = [...]string{ "saotome.st", "store.st", "su", - "adygeya.su", - "arkhangelsk.su", - "balashov.su", - "bashkiria.su", - "bryansk.su", - "dagestan.su", - "grozny.su", - "ivanovo.su", - "kalmykia.su", - "kaluga.su", - "karelia.su", - "khakassia.su", - "krasnodar.su", - "kurgan.su", - "lenug.su", - "mordovia.su", - "msk.su", - "murmansk.su", - "nalchik.su", - "nov.su", - "obninsk.su", - "penza.su", - "pokrovsk.su", - "sochi.su", - "spb.su", - "togliatti.su", - "troitsk.su", - "tula.su", - "tuva.su", - "vladikavkaz.su", - "vladimir.su", - "vologda.su", "sv", "com.sv", "edu.sv", @@ -6023,6 +5905,12 @@ var rules = [...]string{ "xn--ogbpf8fl", "xn--mgbtf8fl", "xn--o3cw4h", + "xn--12c1fe0br.xn--o3cw4h", + "xn--12co0c3b4eva.xn--o3cw4h", + "xn--h3cuzk1di.xn--o3cw4h", + "xn--o3cyx2a.xn--o3cw4h", + "xn--m3ch0j3a.xn--o3cw4h", + "xn--12cfi8ixb8l.xn--o3cw4h", "xn--pgbs0dh", "xn--kpry57d", "xn--kprw13d", @@ -6060,7 +5948,12 @@ var rules = [...]string{ "net.zm", "org.zm", "sch.zm", - "*.zw", + "zw", + "ac.zw", + "co.zw", + "gov.zw", + "mil.zw", + "org.zw", "aaa", "aarp", "abarth", @@ -6371,7 +6264,6 @@ var rules = [...]string{ "durban", "dvag", "dvr", - "dwg", "earth", "eat", "eco", @@ -6379,7 +6271,6 @@ var rules = [...]string{ "education", "email", "emerck", - "emerson", "energy", "engineer", "engineering", @@ -6542,6 +6433,7 @@ var rules = [...]string{ "honda", "honeywell", "horse", + "hospital", "host", "hosting", "hot", @@ -6561,7 +6453,6 @@ var rules = [...]string{ "icu", "ieee", "ifm", - "iinet", "ikano", "imamat", "imdb", @@ -6751,7 +6642,6 @@ var rules = [...]string{ "mtpc", "mtr", "mutual", - "mutuelle", "nab", "nadex", "nagoya", @@ -6809,7 +6699,6 @@ var rules = [...]string{ "oracle", "orange", "organic", - "orientexpress", "origins", "osaka", "otsuka", @@ -6918,6 +6807,7 @@ var rules = [...]string{ "rogers", "room", "rsvp", + "rugby", "ruhr", "run", "rwe", @@ -7060,7 +6950,6 @@ var rules = [...]string{ "thd", "theater", "theatre", - "theguardian", "tiaa", "tickets", "tienda", @@ -7185,7 +7074,6 @@ var rules = [...]string{ "xn--42c2d9a", "xn--45q11c", "xn--4gbrim", - "xn--4gq48lf9j", "xn--55qw42g", "xn--55qx5d", "xn--5su34j936bgsg", @@ -7288,58 +7176,94 @@ var rules = [...]string{ "zippo", "zone", "zuerich", + "cc.ua", + "inf.ua", + "ltd.ua", "beep.pl", "*.compute.estate", "*.alces.network", "*.alwaysdata.net", "cloudfront.net", - "compute.amazonaws.com", - "ap-northeast-1.compute.amazonaws.com", - "ap-northeast-2.compute.amazonaws.com", - "ap-southeast-1.compute.amazonaws.com", - "ap-southeast-2.compute.amazonaws.com", - "eu-central-1.compute.amazonaws.com", - "eu-west-1.compute.amazonaws.com", - "sa-east-1.compute.amazonaws.com", - "us-gov-west-1.compute.amazonaws.com", - "us-west-1.compute.amazonaws.com", - "us-west-2.compute.amazonaws.com", - "compute-1.amazonaws.com", - "z-1.compute-1.amazonaws.com", - "z-2.compute-1.amazonaws.com", + "*.compute.amazonaws.com", + "*.compute-1.amazonaws.com", + "*.compute.amazonaws.com.cn", "us-east-1.amazonaws.com", - "compute.amazonaws.com.cn", - "cn-north-1.compute.amazonaws.com.cn", - "elasticbeanstalk.com", - "elb.amazonaws.com", + "elasticbeanstalk.cn-north-1.amazonaws.com.cn", + "*.elasticbeanstalk.com", + "*.elb.amazonaws.com", + "*.elb.amazonaws.com.cn", "s3.amazonaws.com", "s3-ap-northeast-1.amazonaws.com", "s3-ap-northeast-2.amazonaws.com", + "s3-ap-south-1.amazonaws.com", "s3-ap-southeast-1.amazonaws.com", "s3-ap-southeast-2.amazonaws.com", + "s3-ca-central-1.amazonaws.com", "s3-eu-central-1.amazonaws.com", "s3-eu-west-1.amazonaws.com", + "s3-eu-west-2.amazonaws.com", "s3-external-1.amazonaws.com", - "s3-external-2.amazonaws.com", "s3-fips-us-gov-west-1.amazonaws.com", "s3-sa-east-1.amazonaws.com", "s3-us-gov-west-1.amazonaws.com", + "s3-us-east-2.amazonaws.com", "s3-us-west-1.amazonaws.com", "s3-us-west-2.amazonaws.com", "s3.ap-northeast-2.amazonaws.com", + "s3.ap-south-1.amazonaws.com", "s3.cn-north-1.amazonaws.com.cn", + "s3.ca-central-1.amazonaws.com", "s3.eu-central-1.amazonaws.com", + "s3.eu-west-2.amazonaws.com", + "s3.us-east-2.amazonaws.com", + "s3.dualstack.ap-northeast-1.amazonaws.com", + "s3.dualstack.ap-northeast-2.amazonaws.com", + "s3.dualstack.ap-south-1.amazonaws.com", + "s3.dualstack.ap-southeast-1.amazonaws.com", + "s3.dualstack.ap-southeast-2.amazonaws.com", + "s3.dualstack.ca-central-1.amazonaws.com", + "s3.dualstack.eu-central-1.amazonaws.com", + "s3.dualstack.eu-west-1.amazonaws.com", + "s3.dualstack.eu-west-2.amazonaws.com", + "s3.dualstack.sa-east-1.amazonaws.com", + "s3.dualstack.us-east-1.amazonaws.com", + "s3.dualstack.us-east-2.amazonaws.com", + "s3-website-us-east-1.amazonaws.com", + "s3-website-us-west-1.amazonaws.com", + "s3-website-us-west-2.amazonaws.com", + "s3-website-ap-northeast-1.amazonaws.com", + "s3-website-ap-southeast-1.amazonaws.com", + "s3-website-ap-southeast-2.amazonaws.com", + "s3-website-eu-west-1.amazonaws.com", + "s3-website-sa-east-1.amazonaws.com", + "s3-website.ap-northeast-2.amazonaws.com", + "s3-website.ap-south-1.amazonaws.com", + "s3-website.ca-central-1.amazonaws.com", + "s3-website.eu-central-1.amazonaws.com", + "s3-website.eu-west-2.amazonaws.com", + "s3-website.us-east-2.amazonaws.com", + "t3l3p0rt.net", + "tele.amune.org", "on-aptible.com", + "user.party.eus", "pimienta.org", "poivron.org", "potager.org", "sweetpepper.org", "myasustor.com", "myfritz.net", + "*.awdev.ca", + "*.advisor.ws", "backplaneapp.io", "betainabox.com", "bnr.la", "boxfuse.io", + "square7.ch", + "bplaced.com", + "bplaced.de", + "square7.de", + "bplaced.net", + "square7.net", "browsersafetymark.io", "mycd.eu", "ae.org", @@ -7379,6 +7303,7 @@ var rules = [...]string{ "certmgr.org", "xenapponazure.com", "virtueeldomein.nl", + "c66.me", "cloudcontrolled.com", "cloudcontrolapp.com", "co.ca", @@ -7401,13 +7326,22 @@ var rules = [...]string{ "cloudns.us", "co.nl", "co.no", - "*.platform.sh", + "dyn.cosidns.de", + "dynamisches-dns.de", + "dnsupdater.de", + "internet-dns.de", + "l-o-g-i-n.de", + "dynamic-dns.info", + "feste-ip.net", + "knx-server.net", + "static-access.net", "realm.cz", "*.cryptonomic.net", "cupcake.is", "cyon.link", "cyon.site", "daplie.me", + "localhost.daplie.me", "biz.dk", "co.dk", "firm.dk", @@ -7701,8 +7635,21 @@ var rules = [...]string{ "webhop.org", "worse-than.tv", "writesthisblog.com", + "ddnss.de", + "dyn.ddnss.de", + "dyndns.ddnss.de", + "dyndns1.de", + "dyn-ip24.de", + "home-webserver.de", + "dyn.home-webserver.de", + "myhome-server.de", + "ddnss.org", + "definima.net", + "definima.io", "dynv6.net", "e4.cz", + "enonic.io", + "customer.enonic.io", "eu.org", "al.eu.org", "asso.eu.org", @@ -7761,15 +7708,102 @@ var rules = [...]string{ "us.eu.org", "eu-1.evennode.com", "eu-2.evennode.com", + "eu-3.evennode.com", "us-1.evennode.com", "us-2.evennode.com", + "us-3.evennode.com", + "twmail.cc", + "twmail.net", + "twmail.org", + "mymailer.com.tw", + "url.tw", "apps.fbsbx.com", + "ru.net", + "adygeya.ru", + "bashkiria.ru", + "bir.ru", + "cbg.ru", + "com.ru", + "dagestan.ru", + "grozny.ru", + "kalmykia.ru", + "kustanai.ru", + "marine.ru", + "mordovia.ru", + "msk.ru", + "mytis.ru", + "nalchik.ru", + "nov.ru", + "pyatigorsk.ru", + "spb.ru", + "vladikavkaz.ru", + "vladimir.ru", + "abkhazia.su", + "adygeya.su", + "aktyubinsk.su", + "arkhangelsk.su", + "armenia.su", + "ashgabad.su", + "azerbaijan.su", + "balashov.su", + "bashkiria.su", + "bryansk.su", + "bukhara.su", + "chimkent.su", + "dagestan.su", + "east-kazakhstan.su", + "exnet.su", + "georgia.su", + "grozny.su", + "ivanovo.su", + "jambyl.su", + "kalmykia.su", + "kaluga.su", + "karacol.su", + "karaganda.su", + "karelia.su", + "khakassia.su", + "krasnodar.su", + "kurgan.su", + "kustanai.su", + "lenug.su", + "mangyshlak.su", + "mordovia.su", + "msk.su", + "murmansk.su", + "nalchik.su", + "navoi.su", + "north-kazakhstan.su", + "nov.su", + "obninsk.su", + "penza.su", + "pokrovsk.su", + "sochi.su", + "spb.su", + "tashkent.su", + "termez.su", + "togliatti.su", + "troitsk.su", + "tselinograd.su", + "tula.su", + "tuva.su", + "vladikavkaz.su", + "vladimir.su", + "vologda.su", + "fastlylb.net", + "map.fastlylb.net", + "freetls.fastly.net", + "map.fastly.net", + "a.prod.fastly.net", + "global.prod.fastly.net", "a.ssl.fastly.net", "b.ssl.fastly.net", "global.ssl.fastly.net", - "a.prod.fastly.net", - "global.prod.fastly.net", "fhapp.xyz", + "fedorainfracloud.org", + "fedorapeople.org", + "cloud.fedoraproject.org", + "filegear.me", "firebaseapp.com", "flynnhub.com", "freebox-os.com", @@ -7778,9 +7812,12 @@ var rules = [...]string{ "fbxos.fr", "freebox-os.fr", "freeboxos.fr", + "myfusion.cloud", + "futurehosting.at", "futuremailing.at", "*.ex.ortsinfo.at", "*.kunden.ortsinfo.at", + "*.statics.cloud", "service.gov.uk", "github.io", "githubusercontent.com", @@ -7790,7 +7827,7 @@ var rules = [...]string{ "gist.githubcloud.com", "*.githubcloudusercontent.com", "gitlab.io", - "ro.com", + "homeoffice.gov.uk", "ro.im", "shop.ro", "goip.de", @@ -7871,6 +7908,7 @@ var rules = [...]string{ "blogspot.ug", "blogspot.vn", "cloudfunctions.net", + "cloud.goog", "codespot.com", "googleapis.com", "googlecode.com", @@ -7883,6 +7921,7 @@ var rules = [...]string{ "hepforge.org", "herokuapp.com", "herokussl.com", + "moonscale.net", "iki.fi", "biz.at", "info.at", @@ -7913,6 +7952,7 @@ var rules = [...]string{ "se.leg.br", "sp.leg.br", "to.leg.br", + "ipifony.net", "*.triton.zone", "*.cns.joyent.com", "js.org", @@ -7920,7 +7960,16 @@ var rules = [...]string{ "knightpoint.systems", "co.krd", "edu.krd", + "barsy.bg", + "barsyonline.com", + "barsy.de", + "barsy.eu", + "barsy.in", + "barsy.net", + "barsy.online", + "barsy.support", "*.magentosite.cloud", + "hb.cldmail.ru", "meteorapp.com", "eu.meteorapp.com", "co.pl", @@ -8018,7 +8067,10 @@ var rules = [...]string{ "sytes.net", "webhop.me", "zapto.org", + "nodum.co", + "nodum.io", "nyc.mn", + "cya.gg", "nid.io", "opencraft.hosting", "operaunite.com", @@ -8036,6 +8088,9 @@ var rules = [...]string{ "pantheonsite.io", "gotpantheon.com", "mypep.link", + "on-web.fr", + "*.platform.sh", + "*.platformsh.site", "xen.prgmr.com", "priv.at", "protonet.io", @@ -8044,6 +8099,9 @@ var rules = [...]string{ "dev-myqnapcloud.com", "alpha-myqnapcloud.com", "myqnapcloud.com", + "*.quipelements.com", + "vapor.cloud", + "vaporcloud.io", "rackmaze.com", "rackmaze.net", "rhcloud.com", @@ -8054,21 +8112,38 @@ var rules = [...]string{ "sandcats.io", "logoip.de", "logoip.com", + "firewall-gateway.com", + "firewall-gateway.de", + "my-gateway.de", + "my-router.de", + "spdns.de", + "spdns.eu", + "firewall-gateway.net", + "my-firewall.org", + "myfirewall.org", + "spdns.org", + "*.sensiosite.cloud", "biz.ua", "co.ua", "pp.ua", + "shiftedit.io", "myshopblocks.com", + "1kapp.com", + "appchizi.com", + "applinzi.com", "sinaapp.com", "vipsinaapp.com", - "1kapp.com", "bounty-full.com", "alpha.bounty-full.com", "beta.bounty-full.com", "static.land", "dev.static.land", "sites.static.land", + "apps.lair.io", + "*.stolos.io", "spacekit.io", "stackspace.space", + "storj.farm", "diskstation.me", "dscloud.biz", "dscloud.me", @@ -8082,6 +8157,7 @@ var rules = [...]string{ "i234.me", "myds.me", "synology.me", + "vpnplus.to", "taifun-dns.de", "gda.pl", "gdansk.pl", @@ -8094,16 +8170,42 @@ var rules = [...]string{ "*.transurl.eu", "*.transurl.nl", "tuxfamily.org", + "dd-dns.de", + "diskstation.eu", + "diskstation.org", + "dray-dns.de", + "draydns.de", + "dyn-vpn.de", + "dynvpn.de", + "mein-vigor.de", + "my-vigor.de", + "my-wan.de", + "syno-ds.de", + "synology-diskstation.de", + "synology-ds.de", + "uber.space", "hk.com", "hk.org", "ltd.hk", "inc.hk", "lib.de.us", "router.management", + "wedeploy.io", + "wedeploy.me", + "remotewd.com", "wmflabs.org", + "xs4all.space", "yolasite.com", + "ybo.faith", + "yombo.me", + "homelink.one", + "ybo.party", + "ybo.review", + "ybo.science", + "ybo.trade", "za.net", "za.org", + "now.sh", } var nodeLabels = [...]string{ @@ -8484,7 +8586,6 @@ var nodeLabels = [...]string{ "durban", "dvag", "dvr", - "dwg", "dz", "earth", "eat", @@ -8497,7 +8598,6 @@ var nodeLabels = [...]string{ "eg", "email", "emerck", - "emerson", "energy", "engineer", "engineering", @@ -8693,6 +8793,7 @@ var nodeLabels = [...]string{ "honda", "honeywell", "horse", + "hospital", "host", "hosting", "hot", @@ -8717,7 +8818,6 @@ var nodeLabels = [...]string{ "ie", "ieee", "ifm", - "iinet", "ikano", "il", "im", @@ -8964,7 +9064,6 @@ var nodeLabels = [...]string{ "mu", "museum", "mutual", - "mutuelle", "mv", "mw", "mx", @@ -9034,6 +9133,7 @@ var nodeLabels = [...]string{ "omega", "one", "ong", + "onion", "onl", "online", "onyourside", @@ -9043,7 +9143,6 @@ var nodeLabels = [...]string{ "orange", "org", "organic", - "orientexpress", "origins", "osaka", "otsuka", @@ -9173,6 +9272,7 @@ var nodeLabels = [...]string{ "rs", "rsvp", "ru", + "rugby", "ruhr", "run", "rw", @@ -9343,7 +9443,6 @@ var nodeLabels = [...]string{ "thd", "theater", "theatre", - "theguardian", "tiaa", "tickets", "tienda", @@ -9497,7 +9596,6 @@ var nodeLabels = [...]string{ "xn--45brj9c", "xn--45q11c", "xn--4gbrim", - "xn--4gq48lf9j", "xn--54b7fta0cc", "xn--55qw42g", "xn--55qx5d", @@ -9796,6 +9894,7 @@ var nodeLabels = [...]string{ "gov", "int", "mil", + "musica", "net", "org", "tur", @@ -9811,6 +9910,7 @@ var nodeLabels = [...]string{ "ac", "biz", "co", + "futurehosting", "futuremailing", "gv", "info", @@ -9898,6 +9998,7 @@ var nodeLabels = [...]string{ "9", "a", "b", + "barsy", "blogspot", "c", "d", @@ -9971,6 +10072,7 @@ var nodeLabels = [...]string{ "art", "ato", "b", + "belem", "bio", "blog", "bmd", @@ -9979,6 +10081,8 @@ var nodeLabels = [...]string{ "cnt", "com", "coop", + "cri", + "def", "ecn", "eco", "edu", @@ -9989,6 +10093,7 @@ var nodeLabels = [...]string{ "eti", "far", "flog", + "floripa", "fm", "fnd", "fot", @@ -9999,6 +10104,7 @@ var nodeLabels = [...]string{ "imb", "ind", "inf", + "jampa", "jor", "jus", "leg", @@ -10014,6 +10120,7 @@ var nodeLabels = [...]string{ "ntr", "odo", "org", + "poa", "ppg", "pro", "psc", @@ -10021,6 +10128,7 @@ var nodeLabels = [...]string{ "qsl", "radio", "rec", + "recife", "slg", "srv", "taxi", @@ -10030,6 +10138,7 @@ var nodeLabels = [...]string{ "tur", "tv", "vet", + "vix", "vlog", "wiki", "zlg", @@ -10061,6 +10170,33 @@ var nodeLabels = [...]string{ "se", "sp", "to", + "ac", + "al", + "am", + "ap", + "ba", + "ce", + "df", + "es", + "go", + "ma", + "mg", + "ms", + "mt", + "pa", + "pb", + "pe", + "pi", + "pr", + "rj", + "rn", + "ro", + "rr", + "rs", + "sc", + "se", + "sp", + "to", "com", "edu", "gov", @@ -10085,6 +10221,7 @@ var nodeLabels = [...]string{ "org", "za", "ab", + "awdev", "bc", "blogspot", "co", @@ -10108,10 +10245,12 @@ var nodeLabels = [...]string{ "game-server", "myphotos", "scrapping", + "twmail", "gov", "blogspot", "blogspot", "gotdns", + "square7", "ac", "asso", "co", @@ -10134,6 +10273,10 @@ var nodeLabels = [...]string{ "gov", "mil", "magentosite", + "myfusion", + "sensiosite", + "statics", + "vapor", "cloudns", "co", "com", @@ -10186,8 +10329,9 @@ var nodeLabels = [...]string{ "amazonaws", "cn-north-1", "compute", + "elb", + "elasticbeanstalk", "s3", - "cn-north-1", "arts", "com", "edu", @@ -10197,6 +10341,7 @@ var nodeLabels = [...]string{ "int", "mil", "net", + "nodum", "nom", "org", "rec", @@ -10209,14 +10354,18 @@ var nodeLabels = [...]string{ "africa", "alpha-myqnapcloud", "amazonaws", + "appchizi", + "applinzi", "appspot", "ar", + "barsyonline", "betainabox", "blogdns", "blogspot", "blogsyte", "bloxcms", "bounty-full", + "bplaced", "br", "cechire", "ciscofreak", @@ -10265,6 +10414,7 @@ var nodeLabels = [...]string{ "familyds", "fbsbx", "firebaseapp", + "firewall-gateway", "flynnhub", "freebox-os", "freeboxos", @@ -10428,9 +10578,10 @@ var nodeLabels = [...]string{ "qa2", "qc", "quicksytes", + "quipelements", "rackmaze", + "remotewd", "rhcloud", - "ro", "ru", "sa", "saves-the-whales", @@ -10472,46 +10623,90 @@ var nodeLabels = [...]string{ "xenapponazure", "yolasite", "za", + "ap-northeast-1", "ap-northeast-2", + "ap-south-1", + "ap-southeast-1", + "ap-southeast-2", + "ca-central-1", "compute", "compute-1", "elb", "eu-central-1", + "eu-west-1", + "eu-west-2", "s3", "s3-ap-northeast-1", "s3-ap-northeast-2", + "s3-ap-south-1", "s3-ap-southeast-1", "s3-ap-southeast-2", + "s3-ca-central-1", "s3-eu-central-1", "s3-eu-west-1", + "s3-eu-west-2", "s3-external-1", - "s3-external-2", "s3-fips-us-gov-west-1", "s3-sa-east-1", + "s3-us-east-2", "s3-us-gov-west-1", "s3-us-west-1", "s3-us-west-2", + "s3-website-ap-northeast-1", + "s3-website-ap-southeast-1", + "s3-website-ap-southeast-2", + "s3-website-eu-west-1", + "s3-website-sa-east-1", + "s3-website-us-east-1", + "s3-website-us-west-1", + "s3-website-us-west-2", + "sa-east-1", "us-east-1", + "us-east-2", + "dualstack", "s3", - "ap-northeast-1", - "ap-northeast-2", - "ap-southeast-1", - "ap-southeast-2", - "eu-central-1", - "eu-west-1", - "sa-east-1", - "us-gov-west-1", - "us-west-1", - "us-west-2", - "z-1", - "z-2", + "dualstack", + "s3", + "s3-website", + "s3", + "dualstack", + "s3", + "s3-website", + "s3", + "dualstack", + "s3", + "dualstack", + "s3", + "dualstack", + "s3", + "s3-website", + "s3", + "dualstack", + "s3", + "s3-website", + "s3", + "dualstack", + "s3", + "dualstack", + "s3", + "s3-website", + "s3", + "dualstack", + "s3", + "dualstack", + "s3", + "dualstack", + "s3", + "s3-website", "s3", "alpha", "beta", "eu-1", "eu-2", + "eu-3", "us-1", "us-2", + "us-3", "apps", "api", "ext", @@ -10557,19 +10752,51 @@ var nodeLabels = [...]string{ "co", "e4", "realm", + "barsy", "blogspot", + "bplaced", "com", + "cosidns", + "dd-dns", + "ddnss", "dnshome", + "dnsupdater", + "dray-dns", + "draydns", + "dyn-ip24", + "dyn-vpn", + "dynamisches-dns", + "dyndns1", + "dynvpn", + "firewall-gateway", "fuettertdasnetz", "goip", + "home-webserver", + "internet-dns", "isteingeek", "istmein", "keymachine", + "l-o-g-i-n", "lebtimnetz", "leitungsen", "logoip", + "mein-vigor", + "my-gateway", + "my-router", + "my-vigor", + "my-wan", + "myhome-server", + "spdns", + "square7", + "syno-ds", + "synology-diskstation", + "synology-ds", "taifun-dns", "traeumtgerade", + "dyn", + "dyn", + "dyndns", + "dyn", "biz", "blogspot", "co", @@ -10647,10 +10874,17 @@ var nodeLabels = [...]string{ "name", "net", "org", + "barsy", "cloudns", + "diskstation", "mycd", + "spdns", "transurl", "wellbeingzone", + "party", + "user", + "ybo", + "storj", "aland", "blogspot", "dy", @@ -10679,6 +10913,7 @@ var nodeLabels = [...]string{ "medecin", "nom", "notaires", + "on-web", "pharmacien", "port", "prd", @@ -10693,6 +10928,7 @@ var nodeLabels = [...]string{ "org", "pvt", "co", + "cya", "net", "org", "com", @@ -10717,6 +10953,7 @@ var nodeLabels = [...]string{ "gov", "net", "org", + "cloud", "asso", "com", "edu", @@ -10861,6 +11098,7 @@ var nodeLabels = [...]string{ "ltd", "plc", "ac", + "barsy", "blogspot", "cloudns", "co", @@ -10878,6 +11116,7 @@ var nodeLabels = [...]string{ "barrell-of-knowledge", "cloudns", "dvrcam", + "dynamic-dns", "dyndns", "for-our", "groks-the", @@ -10895,17 +11134,27 @@ var nodeLabels = [...]string{ "browsersafetymark", "com", "dedyn", + "definima", "drud", + "enonic", "github", "gitlab", "hasura-app", "hzc", + "lair", "ngrok", "nid", + "nodum", "pantheonsite", "protonet", "sandcats", + "shiftedit", "spacekit", + "stolos", + "vaporcloud", + "wedeploy", + "customer", + "apps", "com", "edu", "gov", @@ -12226,9 +12475,7 @@ var nodeLabels = [...]string{ "aso", "choyo", "gyokuto", - "hitoyoshi", "kamiamakusa", - "kashima", "kikuchi", "kumamoto", "mashiki", @@ -13270,6 +13517,7 @@ var nodeLabels = [...]string{ "blogspot", "ac", "brasilia", + "c66", "co", "daplie", "ddns", @@ -13277,6 +13525,7 @@ var nodeLabels = [...]string{ "dnsfor", "dscloud", "edu", + "filegear", "gov", "hopto", "i234", @@ -13289,6 +13538,9 @@ var nodeLabels = [...]string{ "priv", "synology", "webhop", + "wedeploy", + "yombo", + "localhost", "co", "com", "edu", @@ -13959,12 +14211,15 @@ var nodeLabels = [...]string{ "forgot", "forgot", "asso", + "nom", "alwaysdata", "at-band-camp", "azure-mobile", "azurewebsites", + "barsy", "blogdns", "bounceme", + "bplaced", "broke-it", "buyshouses", "cdn77", @@ -13974,6 +14229,7 @@ var nodeLabels = [...]string{ "cloudfunctions", "cryptonomic", "ddns", + "definima", "dnsalias", "dnsdojo", "does-it", @@ -13986,6 +14242,9 @@ var nodeLabels = [...]string{ "endofinternet", "familyds", "fastly", + "fastlylb", + "feste-ip", + "firewall-gateway", "from-az", "from-co", "from-la", @@ -14000,11 +14259,14 @@ var nodeLabels = [...]string{ "hu", "in", "in-the-band", + "ipifony", "is-a-chef", "is-a-geek", "isa-geek", "jp", "kicks-ass", + "knx-server", + "moonscale", "mydissent", "myeffect", "myfritz", @@ -14019,6 +14281,7 @@ var nodeLabels = [...]string{ "privatizehealthinsurance", "rackmaze", "redirectme", + "ru", "scrapper-site", "se", "selfip", @@ -14027,12 +14290,18 @@ var nodeLabels = [...]string{ "serveblog", "serveftp", "serveminecraft", + "square7", + "static-access", "sytes", + "t3l3p0rt", "thruhere", + "twmail", "uk", "webhop", "za", "r", + "freetls", + "map", "prod", "ssl", "a", @@ -14040,6 +14309,7 @@ var nodeLabels = [...]string{ "a", "b", "global", + "map", "alces", "arts", "com", @@ -14883,7 +15153,10 @@ var nodeLabels = [...]string{ "net", "org", "pro", + "homelink", + "barsy", "ae", + "amune", "blogdns", "blogsite", "bmoattachments", @@ -14895,6 +15168,8 @@ var nodeLabels = [...]string{ "cloudns", "collegefan", "couchpotatofries", + "ddnss", + "diskstation", "dnsalias", "dnsdojo", "doesntexist", @@ -14909,6 +15184,9 @@ var nodeLabels = [...]string{ "endoftheinternet", "eu", "familyds", + "fedorainfracloud", + "fedorapeople", + "fedoraproject", "from-me", "game-host", "gotdns", @@ -14942,6 +15220,8 @@ var nodeLabels = [...]string{ "kicks-ass", "misconfused", "mlbfan", + "my-firewall", + "myfirewall", "myftp", "mysecuritycamera", "nflfan", @@ -14957,16 +15237,19 @@ var nodeLabels = [...]string{ "servebbs", "serveftp", "servegame", + "spdns", "stuff-4-sale", "sweetpepper", "tunk", "tuxfamily", + "twmail", "ufcfan", "us", "webhop", "wmflabs", "za", "zapto", + "tele", "c", "rsc", "origin", @@ -15028,6 +15311,7 @@ var nodeLabels = [...]string{ "tr", "uk", "us", + "cloud", "nerdpol", "abo", "ac", @@ -15040,6 +15324,7 @@ var nodeLabels = [...]string{ "nom", "org", "sld", + "ybo", "blogspot", "com", "edu", @@ -15359,6 +15644,7 @@ var nodeLabels = [...]string{ "blogspot", "com", "nom", + "ybo", "arts", "blogspot", "com", @@ -15381,135 +15667,32 @@ var nodeLabels = [...]string{ "org", "ac", "adygeya", - "altai", - "amur", - "amursk", - "arkhangelsk", - "astrakhan", - "baikal", "bashkiria", - "belgorod", "bir", "blogspot", - "bryansk", - "buryatia", "cbg", - "chel", - "chelyabinsk", - "chita", - "chukotka", - "chuvashia", - "cmw", + "cldmail", "com", "dagestan", - "dudinka", - "e-burg", "edu", - "fareast", "gov", "grozny", "int", - "irkutsk", - "ivanovo", - "izhevsk", - "jamal", - "jar", - "joshkar-ola", - "k-uralsk", "kalmykia", - "kaluga", - "kamchatka", - "karelia", - "kazan", - "kchr", - "kemerovo", - "khabarovsk", - "khakassia", - "khv", - "kirov", - "kms", - "koenig", - "komi", - "kostroma", - "krasnoyarsk", - "kuban", - "kurgan", - "kursk", "kustanai", - "kuzbass", - "lipetsk", - "magadan", - "mari", - "mari-el", "marine", "mil", "mordovia", "msk", - "murmansk", "mytis", - "nakhodka", "nalchik", - "net", - "nkz", - "nnov", - "norilsk", "nov", - "novosibirsk", - "nsk", - "omsk", - "orenburg", - "org", - "oryol", - "oskol", - "palana", - "penza", - "perm", - "pp", - "ptz", "pyatigorsk", - "rnd", - "rubtsovsk", - "ryazan", - "sakhalin", - "samara", - "saratov", - "simbirsk", - "smolensk", - "snz", "spb", - "stavropol", - "stv", - "surgut", - "syzran", - "tambov", - "tatarstan", "test", - "tom", - "tomsk", - "tsaritsyn", - "tsk", - "tula", - "tuva", - "tver", - "tyumen", - "udm", - "udmurtia", - "ulan-ude", - "vdonsk", "vladikavkaz", "vladimir", - "vladivostok", - "volgograd", - "vologda", - "voronezh", - "vrn", - "vyatka", - "yakutia", - "yamal", - "yaroslavl", - "yekaterinburg", - "yuzhno-sakhalinsk", - "zgrad", + "hb", "ac", "co", "com", @@ -15537,6 +15720,7 @@ var nodeLabels = [...]string{ "gov", "net", "org", + "ybo", "com", "edu", "gov", @@ -15598,10 +15782,12 @@ var nodeLabels = [...]string{ "hashbang", "mil", "net", + "now", "org", "platform", "blogspot", "cyon", + "platformsh", "blogspot", "com", "edu", @@ -15620,6 +15806,8 @@ var nodeLabels = [...]string{ "net", "org", "stackspace", + "uber", + "xs4all", "co", "com", "consulado", @@ -15632,38 +15820,59 @@ var nodeLabels = [...]string{ "principe", "saotome", "store", + "abkhazia", "adygeya", + "aktyubinsk", "arkhangelsk", + "armenia", + "ashgabad", + "azerbaijan", "balashov", "bashkiria", "bryansk", + "bukhara", + "chimkent", "dagestan", + "east-kazakhstan", + "exnet", + "georgia", "grozny", "ivanovo", + "jambyl", "kalmykia", "kaluga", + "karacol", + "karaganda", "karelia", "khakassia", "krasnodar", "kurgan", + "kustanai", "lenug", + "mangyshlak", "mordovia", "msk", "murmansk", "nalchik", + "navoi", + "north-kazakhstan", "nov", "obninsk", "penza", "pokrovsk", "sochi", "spb", + "tashkent", + "termez", "togliatti", "troitsk", + "tselinograd", "tula", "tuva", "vladikavkaz", "vladimir", "vologda", + "barsy", "com", "edu", "gob", @@ -15738,6 +15947,7 @@ var nodeLabels = [...]string{ "mil", "net", "org", + "vpnplus", "av", "bbs", "bel", @@ -15761,6 +15971,7 @@ var nodeLabels = [...]string{ "web", "blogspot", "gov", + "ybo", "aero", "biz", "co", @@ -15793,9 +16004,11 @@ var nodeLabels = [...]string{ "mil", "net", "org", + "url", "xn--czrw28b", "xn--uc0atv", "xn--zf0ao64a", + "mymailer", "ac", "co", "go", @@ -15809,6 +16022,7 @@ var nodeLabels = [...]string{ "sc", "tv", "biz", + "cc", "cherkassy", "cherkasy", "chernigov", @@ -15832,6 +16046,7 @@ var nodeLabels = [...]string{ "gov", "if", "in", + "inf", "ivano-frankivsk", "kh", "kharkiv", @@ -15849,6 +16064,7 @@ var nodeLabels = [...]string{ "kyiv", "lg", "lt", + "ltd", "lugansk", "lutsk", "lv", @@ -15910,6 +16126,7 @@ var nodeLabels = [...]string{ "blogspot", "no-ip", "wellbeingzone", + "homeoffice", "service", "ak", "al", @@ -16198,6 +16415,7 @@ var nodeLabels = [...]string{ "edu", "net", "org", + "advisor", "com", "dyndns", "edu", @@ -16211,6 +16429,12 @@ var nodeLabels = [...]string{ "xn--d1at", "xn--o1ac", "xn--o1ach", + "xn--12c1fe0br", + "xn--12cfi8ixb8l", + "xn--12co0c3b4eva", + "xn--h3cuzk1di", + "xn--m3ch0j3a", + "xn--o3cyx2a", "fhapp", "ac", "agric", @@ -16242,4 +16466,9 @@ var nodeLabels = [...]string{ "org", "sch", "triton", + "ac", + "co", + "gov", + "mil", + "org", } diff --git a/vendor/golang.org/x/net/route/address.go b/vendor/golang.org/x/net/route/address.go index a56909c105..e6bfa39e93 100644 --- a/vendor/golang.org/x/net/route/address.go +++ b/vendor/golang.org/x/net/route/address.go @@ -24,6 +24,39 @@ type LinkAddr struct { // Family implements the Family method of Addr interface. func (a *LinkAddr) Family() int { return sysAF_LINK } +func (a *LinkAddr) lenAndSpace() (int, int) { + l := 8 + len(a.Name) + len(a.Addr) + return l, roundup(l) +} + +func (a *LinkAddr) marshal(b []byte) (int, error) { + l, ll := a.lenAndSpace() + if len(b) < ll { + return 0, errShortBuffer + } + nlen, alen := len(a.Name), len(a.Addr) + if nlen > 255 || alen > 255 { + return 0, errInvalidAddr + } + b[0] = byte(l) + b[1] = sysAF_LINK + if a.Index > 0 { + nativeEndian.PutUint16(b[2:4], uint16(a.Index)) + } + data := b[8:] + if nlen > 0 { + b[5] = byte(nlen) + copy(data[:nlen], a.Addr) + data = data[nlen:] + } + if alen > 0 { + b[6] = byte(alen) + copy(data[:alen], a.Name) + data = data[alen:] + } + return ll, nil +} + func parseLinkAddr(b []byte) (Addr, error) { if len(b) < 8 { return nil, errInvalidAddr @@ -90,6 +123,21 @@ type Inet4Addr struct { // Family implements the Family method of Addr interface. func (a *Inet4Addr) Family() int { return sysAF_INET } +func (a *Inet4Addr) lenAndSpace() (int, int) { + return sizeofSockaddrInet, roundup(sizeofSockaddrInet) +} + +func (a *Inet4Addr) marshal(b []byte) (int, error) { + l, ll := a.lenAndSpace() + if len(b) < ll { + return 0, errShortBuffer + } + b[0] = byte(l) + b[1] = sysAF_INET + copy(b[4:8], a.IP[:]) + return ll, nil +} + // An Inet6Addr represents an internet address for IPv6. type Inet6Addr struct { IP [16]byte // IP address @@ -99,18 +147,36 @@ type Inet6Addr struct { // Family implements the Family method of Addr interface. func (a *Inet6Addr) Family() int { return sysAF_INET6 } +func (a *Inet6Addr) lenAndSpace() (int, int) { + return sizeofSockaddrInet6, roundup(sizeofSockaddrInet6) +} + +func (a *Inet6Addr) marshal(b []byte) (int, error) { + l, ll := a.lenAndSpace() + if len(b) < ll { + return 0, errShortBuffer + } + b[0] = byte(l) + b[1] = sysAF_INET6 + copy(b[8:24], a.IP[:]) + if a.ZoneID > 0 { + nativeEndian.PutUint32(b[24:28], uint32(a.ZoneID)) + } + return ll, nil +} + // parseInetAddr parses b as an internet address for IPv4 or IPv6. func parseInetAddr(af int, b []byte) (Addr, error) { switch af { case sysAF_INET: - if len(b) < 16 { + if len(b) < sizeofSockaddrInet { return nil, errInvalidAddr } a := &Inet4Addr{} copy(a.IP[:], b[4:8]) return a, nil case sysAF_INET6: - if len(b) < 28 { + if len(b) < sizeofSockaddrInet6 { return nil, errInvalidAddr } a := &Inet6Addr{ZoneID: int(nativeEndian.Uint32(b[24:28]))} @@ -174,7 +240,7 @@ func parseKernelInetAddr(af int, b []byte) (int, Addr, error) { off6 = 8 // offset of in6_addr ) switch { - case b[0] == 28: // size of sockaddr_in6 + case b[0] == sizeofSockaddrInet6: a := &Inet6Addr{} copy(a.IP[:], b[off6:off6+16]) return int(b[0]), a, nil @@ -186,7 +252,7 @@ func parseKernelInetAddr(af int, b []byte) (int, Addr, error) { copy(a.IP[:], b[l-off6:l]) } return int(b[0]), a, nil - case b[0] == 16: // size of sockaddr_in + case b[0] == sizeofSockaddrInet: a := &Inet4Addr{} copy(a.IP[:], b[off4:off4+4]) return int(b[0]), a, nil @@ -211,6 +277,24 @@ type DefaultAddr struct { // Family implements the Family method of Addr interface. func (a *DefaultAddr) Family() int { return a.af } +func (a *DefaultAddr) lenAndSpace() (int, int) { + l := len(a.Raw) + return l, roundup(l) +} + +func (a *DefaultAddr) marshal(b []byte) (int, error) { + l, ll := a.lenAndSpace() + if len(b) < ll { + return 0, errShortBuffer + } + if l > 255 { + return 0, errInvalidAddr + } + b[1] = byte(l) + copy(b[:l], a.Raw) + return ll, nil +} + func parseDefaultAddr(b []byte) (Addr, error) { if len(b) < 2 || len(b) < int(b[0]) { return nil, errInvalidAddr @@ -219,6 +303,66 @@ func parseDefaultAddr(b []byte) (Addr, error) { return a, nil } +func addrsSpace(as []Addr) int { + var l int + for _, a := range as { + switch a := a.(type) { + case *LinkAddr: + _, ll := a.lenAndSpace() + l += ll + case *Inet4Addr: + _, ll := a.lenAndSpace() + l += ll + case *Inet6Addr: + _, ll := a.lenAndSpace() + l += ll + case *DefaultAddr: + _, ll := a.lenAndSpace() + l += ll + } + } + return l +} + +// marshalAddrs marshals as and returns a bitmap indicating which +// address is stored in b. +func marshalAddrs(b []byte, as []Addr) (uint, error) { + var attrs uint + for i, a := range as { + switch a := a.(type) { + case *LinkAddr: + l, err := a.marshal(b) + if err != nil { + return 0, err + } + b = b[l:] + attrs |= 1 << uint(i) + case *Inet4Addr: + l, err := a.marshal(b) + if err != nil { + return 0, err + } + b = b[l:] + attrs |= 1 << uint(i) + case *Inet6Addr: + l, err := a.marshal(b) + if err != nil { + return 0, err + } + b = b[l:] + attrs |= 1 << uint(i) + case *DefaultAddr: + l, err := a.marshal(b) + if err != nil { + return 0, err + } + b = b[l:] + attrs |= 1 << uint(i) + } + } + return attrs, nil +} + func parseAddrs(attrs uint, fn func(int, []byte) (int, Addr, error), b []byte) ([]Addr, error) { var as [sysRTAX_MAX]Addr af := int(sysAF_UNSPEC) diff --git a/vendor/golang.org/x/net/route/binary.go b/vendor/golang.org/x/net/route/binary.go index 4c561631b9..6910520eca 100644 --- a/vendor/golang.org/x/net/route/binary.go +++ b/vendor/golang.org/x/net/route/binary.go @@ -9,7 +9,7 @@ package route // This file contains duplicates of encoding/binary package. // // This package is supposed to be used by the net package of standard -// library. Therefore a package set used in the package must be the +// library. Therefore the package set used in the package must be the // same as net package. var ( diff --git a/vendor/golang.org/x/net/route/defs_darwin.go b/vendor/golang.org/x/net/route/defs_darwin.go index f452ad14ce..e7716442d2 100644 --- a/vendor/golang.org/x/net/route/defs_darwin.go +++ b/vendor/golang.org/x/net/route/defs_darwin.go @@ -13,6 +13,8 @@ package route #include #include #include + +#include */ import "C" @@ -23,6 +25,8 @@ const ( sysAF_LINK = C.AF_LINK sysAF_INET6 = C.AF_INET6 + sysSOCK_RAW = C.SOCK_RAW + sysNET_RT_DUMP = C.NET_RT_DUMP sysNET_RT_FLAGS = C.NET_RT_FLAGS sysNET_RT_IFLIST = C.NET_RT_IFLIST @@ -103,4 +107,8 @@ const ( sizeofRtMsghdrDarwin15 = C.sizeof_struct_rt_msghdr sizeofRtMsghdr2Darwin15 = C.sizeof_struct_rt_msghdr2 sizeofRtMetricsDarwin15 = C.sizeof_struct_rt_metrics + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 ) diff --git a/vendor/golang.org/x/net/route/defs_dragonfly.go b/vendor/golang.org/x/net/route/defs_dragonfly.go index c737751d76..dd31de269a 100644 --- a/vendor/golang.org/x/net/route/defs_dragonfly.go +++ b/vendor/golang.org/x/net/route/defs_dragonfly.go @@ -13,6 +13,8 @@ package route #include #include #include + +#include */ import "C" @@ -23,6 +25,8 @@ const ( sysAF_LINK = C.AF_LINK sysAF_INET6 = C.AF_INET6 + sysSOCK_RAW = C.SOCK_RAW + sysNET_RT_DUMP = C.NET_RT_DUMP sysNET_RT_FLAGS = C.NET_RT_FLAGS sysNET_RT_IFLIST = C.NET_RT_IFLIST @@ -102,4 +106,8 @@ const ( sizeofRtMsghdrDragonFlyBSD4 = C.sizeof_struct_rt_msghdr sizeofRtMetricsDragonFlyBSD4 = C.sizeof_struct_rt_metrics + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 ) diff --git a/vendor/golang.org/x/net/route/defs_freebsd.go b/vendor/golang.org/x/net/route/defs_freebsd.go index 8f834e81db..d95594d8ea 100644 --- a/vendor/golang.org/x/net/route/defs_freebsd.go +++ b/vendor/golang.org/x/net/route/defs_freebsd.go @@ -14,6 +14,8 @@ package route #include #include +#include + struct if_data_freebsd7 { u_char ifi_type; u_char ifi_physical; @@ -222,6 +224,8 @@ const ( sysAF_LINK = C.AF_LINK sysAF_INET6 = C.AF_INET6 + sysSOCK_RAW = C.SOCK_RAW + sysNET_RT_DUMP = C.NET_RT_DUMP sysNET_RT_FLAGS = C.NET_RT_FLAGS sysNET_RT_IFLIST = C.NET_RT_IFLIST @@ -326,4 +330,8 @@ const ( sizeofIfDataFreeBSD9Emu = C.sizeof_struct_if_data_freebsd9 sizeofIfDataFreeBSD10Emu = C.sizeof_struct_if_data_freebsd10 sizeofIfDataFreeBSD11Emu = C.sizeof_struct_if_data_freebsd11 + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 ) diff --git a/vendor/golang.org/x/net/route/defs_netbsd.go b/vendor/golang.org/x/net/route/defs_netbsd.go index b18d85e016..b0abd549a0 100644 --- a/vendor/golang.org/x/net/route/defs_netbsd.go +++ b/vendor/golang.org/x/net/route/defs_netbsd.go @@ -13,6 +13,8 @@ package route #include #include #include + +#include */ import "C" @@ -23,6 +25,8 @@ const ( sysAF_LINK = C.AF_LINK sysAF_INET6 = C.AF_INET6 + sysSOCK_RAW = C.SOCK_RAW + sysNET_RT_DUMP = C.NET_RT_DUMP sysNET_RT_FLAGS = C.NET_RT_FLAGS sysNET_RT_IFLIST = C.NET_RT_IFLIST @@ -101,4 +105,8 @@ const ( sizeofRtMsghdrNetBSD7 = C.sizeof_struct_rt_msghdr sizeofRtMetricsNetBSD7 = C.sizeof_struct_rt_metrics + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 ) diff --git a/vendor/golang.org/x/net/route/defs_openbsd.go b/vendor/golang.org/x/net/route/defs_openbsd.go index 5df7a43bc3..173bb5d513 100644 --- a/vendor/golang.org/x/net/route/defs_openbsd.go +++ b/vendor/golang.org/x/net/route/defs_openbsd.go @@ -13,6 +13,8 @@ package route #include #include #include + +#include */ import "C" @@ -23,6 +25,8 @@ const ( sysAF_LINK = C.AF_LINK sysAF_INET6 = C.AF_INET6 + sysSOCK_RAW = C.SOCK_RAW + sysNET_RT_DUMP = C.NET_RT_DUMP sysNET_RT_FLAGS = C.NET_RT_FLAGS sysNET_RT_IFLIST = C.NET_RT_IFLIST @@ -65,6 +69,9 @@ const ( sysRTM_IFINFO = C.RTM_IFINFO sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE sysRTM_DESYNC = C.RTM_DESYNC + sysRTM_INVALIDATE = C.RTM_INVALIDATE + sysRTM_BFD = C.RTM_BFD + sysRTM_PROPOSAL = C.RTM_PROPOSAL sysRTA_DST = C.RTA_DST sysRTA_GATEWAY = C.RTA_GATEWAY @@ -77,6 +84,10 @@ const ( sysRTA_SRC = C.RTA_SRC sysRTA_SRCMASK = C.RTA_SRCMASK sysRTA_LABEL = C.RTA_LABEL + sysRTA_BFD = C.RTA_BFD + sysRTA_DNS = C.RTA_DNS + sysRTA_STATIC = C.RTA_STATIC + sysRTA_SEARCH = C.RTA_SEARCH sysRTAX_DST = C.RTAX_DST sysRTAX_GATEWAY = C.RTAX_GATEWAY @@ -89,5 +100,17 @@ const ( sysRTAX_SRC = C.RTAX_SRC sysRTAX_SRCMASK = C.RTAX_SRCMASK sysRTAX_LABEL = C.RTAX_LABEL + sysRTAX_BFD = C.RTAX_BFD + sysRTAX_DNS = C.RTAX_DNS + sysRTAX_STATIC = C.RTAX_STATIC + sysRTAX_SEARCH = C.RTAX_SEARCH sysRTAX_MAX = C.RTAX_MAX ) + +const ( + sizeofRtMsghdr = C.sizeof_struct_rt_msghdr + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/route/message.go b/vendor/golang.org/x/net/route/message.go index d7ae0eb50f..0fa7e09f46 100644 --- a/vendor/golang.org/x/net/route/message.go +++ b/vendor/golang.org/x/net/route/message.go @@ -7,9 +7,6 @@ package route // A Message represents a routing message. -// -// Note: This interface will be changed to support Marshal method in -// future version. type Message interface { // Sys returns operating system-specific information. Sys() []Sys @@ -52,11 +49,10 @@ func ParseRIB(typ RIBType, b []byte) ([]Message, error) { b = b[l:] continue } - mtyp := int(b[3]) - if fn, ok := parseFns[mtyp]; !ok { + if w, ok := wireFormats[int(b[3])]; !ok { nskips++ } else { - m, err := fn(typ, b) + m, err := w.parse(typ, b) if err != nil { return nil, err } diff --git a/vendor/golang.org/x/net/route/message_darwin_test.go b/vendor/golang.org/x/net/route/message_darwin_test.go index 3fdd12df55..316aa75071 100644 --- a/vendor/golang.org/x/net/route/message_darwin_test.go +++ b/vendor/golang.org/x/net/route/message_darwin_test.go @@ -7,21 +7,28 @@ package route import "testing" func TestFetchAndParseRIBOnDarwin(t *testing.T) { - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - for _, typ := range []RIBType{sysNET_RT_FLAGS, sysNET_RT_DUMP2, sysNET_RT_IFLIST2} { - ms, err := fetchAndParseRIB(af, typ) + for _, typ := range []RIBType{sysNET_RT_FLAGS, sysNET_RT_DUMP2, sysNET_RT_IFLIST2} { + var lastErr error + var ms []Message + for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { + rs, err := fetchAndParseRIB(af, typ) if err != nil { - t.Error(err) + lastErr = err continue } - ss, err := msgs(ms).validate() - if err != nil { - t.Errorf("%v %d %v", addrFamily(af), typ, err) - continue - } - for _, s := range ss { - t.Log(s) - } + ms = append(ms, rs...) + } + if len(ms) == 0 && lastErr != nil { + t.Error(typ, lastErr) + continue + } + ss, err := msgs(ms).validate() + if err != nil { + t.Error(typ, err) + continue + } + for _, s := range ss { + t.Log(s) } } } diff --git a/vendor/golang.org/x/net/route/message_freebsd_test.go b/vendor/golang.org/x/net/route/message_freebsd_test.go index 785c273f65..db4b56752c 100644 --- a/vendor/golang.org/x/net/route/message_freebsd_test.go +++ b/vendor/golang.org/x/net/route/message_freebsd_test.go @@ -6,26 +6,32 @@ package route import ( "testing" - "time" "unsafe" ) func TestFetchAndParseRIBOnFreeBSD(t *testing.T) { - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - for _, typ := range []RIBType{sysNET_RT_IFMALIST} { - ms, err := fetchAndParseRIB(af, typ) - if err != nil { - t.Error(err) - continue - } - ss, err := msgs(ms).validate() + for _, typ := range []RIBType{sysNET_RT_IFMALIST} { + var lastErr error + var ms []Message + for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { + rs, err := fetchAndParseRIB(af, typ) if err != nil { - t.Errorf("%v %d %v", addrFamily(af), typ, err) + lastErr = err continue } - for _, s := range ss { - t.Log(s) - } + ms = append(ms, rs...) + } + if len(ms) == 0 && lastErr != nil { + t.Error(typ, lastErr) + continue + } + ss, err := msgs(ms).validate() + if err != nil { + t.Error(typ, err) + continue + } + for _, s := range ss { + t.Log(s) } } } @@ -48,58 +54,38 @@ func TestFetchAndParseRIBOnFreeBSD10AndAbove(t *testing.T) { {typ: sysNET_RT_IFLIST}, {typ: sysNET_RT_IFLISTL}, } - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { + for i := range tests { var lastErr error - for i := 0; i < 3; i++ { - for j := range tests { - var err error - if tests[j].b, err = FetchRIB(af, tests[j].typ, 0); err != nil { - lastErr = err - time.Sleep(10 * time.Millisecond) - } - } - if lastErr == nil { - break + for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { + rs, err := fetchAndParseRIB(af, tests[i].typ) + if err != nil { + lastErr = err + continue } + tests[i].msgs = append(tests[i].msgs, rs...) } - if lastErr != nil { - t.Error(af, lastErr) + if len(tests[i].msgs) == 0 && lastErr != nil { + t.Error(tests[i].typ, lastErr) continue } - for i := range tests { - var err error - if tests[i].msgs, err = ParseRIB(tests[i].typ, tests[i].b); err != nil { - lastErr = err - t.Error(af, err) - } - } + tests[i].ss, lastErr = msgs(tests[i].msgs).validate() if lastErr != nil { + t.Error(tests[i].typ, lastErr) continue } - for i := range tests { - var err error - tests[i].ss, err = msgs(tests[i].msgs).validate() - if err != nil { - lastErr = err - t.Error(af, err) - } - for _, s := range tests[i].ss { - t.Log(s) - } + for _, s := range tests[i].ss { + t.Log(s) } - if lastErr != nil { + } + for i := len(tests) - 1; i > 0; i-- { + if len(tests[i].ss) != len(tests[i-1].ss) { + t.Errorf("got %v; want %v", tests[i].ss, tests[i-1].ss) continue } - for i := len(tests) - 1; i > 0; i-- { - if len(tests[i].ss) != len(tests[i-1].ss) { - t.Errorf("got %v; want %v", tests[i].ss, tests[i-1].ss) - continue - } - for j, s1 := range tests[i].ss { - s0 := tests[i-1].ss[j] - if s1 != s0 { - t.Errorf("got %s; want %s", s1, s0) - } + for j, s1 := range tests[i].ss { + s0 := tests[i-1].ss[j] + if s1 != s0 { + t.Errorf("got %s; want %s", s1, s0) } } } diff --git a/vendor/golang.org/x/net/route/message_test.go b/vendor/golang.org/x/net/route/message_test.go index c0c7c57a9a..e848dabf4f 100644 --- a/vendor/golang.org/x/net/route/message_test.go +++ b/vendor/golang.org/x/net/route/message_test.go @@ -14,30 +14,54 @@ import ( ) func TestFetchAndParseRIB(t *testing.T) { - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - for _, typ := range []RIBType{sysNET_RT_DUMP, sysNET_RT_IFLIST} { - ms, err := fetchAndParseRIB(af, typ) + for _, typ := range []RIBType{sysNET_RT_DUMP, sysNET_RT_IFLIST} { + var lastErr error + var ms []Message + for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { + rs, err := fetchAndParseRIB(af, typ) if err != nil { - t.Error(err) - continue - } - ss, err := msgs(ms).validate() - if err != nil { - t.Errorf("%v %d %v", addrFamily(af), typ, err) + lastErr = err continue } - for _, s := range ss { - t.Log(s) - } + ms = append(ms, rs...) + } + if len(ms) == 0 && lastErr != nil { + t.Error(typ, lastErr) + continue + } + ss, err := msgs(ms).validate() + if err != nil { + t.Error(typ, err) + continue + } + for _, s := range ss { + t.Log(typ, s) } } } +var ( + rtmonSock int + rtmonErr error +) + +func init() { + // We need to keep rtmonSock alive to avoid treading on + // recycled socket descriptors. + rtmonSock, rtmonErr = syscall.Socket(sysAF_ROUTE, sysSOCK_RAW, sysAF_UNSPEC) +} + +// TestMonitorAndParseRIB leaks a worker goroutine and a socket +// descriptor but that's intentional. func TestMonitorAndParseRIB(t *testing.T) { if testing.Short() || os.Getuid() != 0 { t.Skip("must be root") } + if rtmonErr != nil { + t.Fatal(rtmonErr) + } + // We suppose that using an IPv4 link-local address and the // dot1Q ID for Token Ring and FDDI doesn't harm anyone. pv := &propVirtual{addr: "169.254.0.1", mask: "255.255.255.0"} @@ -49,16 +73,18 @@ func TestMonitorAndParseRIB(t *testing.T) { } pv.teardown() - s, err := syscall.Socket(syscall.AF_ROUTE, syscall.SOCK_RAW, syscall.AF_UNSPEC) - if err != nil { - t.Fatal(err) - } - defer syscall.Close(s) - go func() { b := make([]byte, os.Getpagesize()) for { - n, err := syscall.Read(s, b) + // There's no easy way to unblock this read + // call because the routing message exchange + // over routing socket is a connectionless + // message-oriented protocol, no control plane + // for signaling connectivity, and we cannot + // use the net package of standard library due + // to the lack of support for routing socket + // and circular dependency. + n, err := syscall.Read(rtmonSock, b) if err != nil { return } @@ -116,3 +142,98 @@ func TestParseRIBWithFuzz(t *testing.T) { } } } + +func TestRouteMessage(t *testing.T) { + s, err := syscall.Socket(sysAF_ROUTE, sysSOCK_RAW, sysAF_UNSPEC) + if err != nil { + t.Fatal(err) + } + defer syscall.Close(s) + + var ms []RouteMessage + for _, af := range []int{sysAF_INET, sysAF_INET6} { + if _, err := fetchAndParseRIB(af, sysNET_RT_DUMP); err != nil { + t.Log(err) + continue + } + switch af { + case sysAF_INET: + ms = append(ms, []RouteMessage{ + { + Type: sysRTM_GET, + Addrs: []Addr{ + &Inet4Addr{IP: [4]byte{127, 0, 0, 1}}, + nil, + nil, + nil, + &LinkAddr{}, + &Inet4Addr{}, + nil, + &Inet4Addr{}, + }, + }, + { + Type: sysRTM_GET, + Addrs: []Addr{ + &Inet4Addr{IP: [4]byte{127, 0, 0, 1}}, + }, + }, + }...) + case sysAF_INET6: + ms = append(ms, []RouteMessage{ + { + Type: sysRTM_GET, + Addrs: []Addr{ + &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}, + nil, + nil, + nil, + &LinkAddr{}, + &Inet6Addr{}, + nil, + &Inet6Addr{}, + }, + }, + { + Type: sysRTM_GET, + Addrs: []Addr{ + &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}, + }, + }, + }...) + } + } + for i, m := range ms { + m.ID = uintptr(os.Getpid()) + m.Seq = i + 1 + wb, err := m.Marshal() + if err != nil { + t.Fatalf("%v: %v", m, err) + } + if _, err := syscall.Write(s, wb); err != nil { + t.Fatalf("%v: %v", m, err) + } + rb := make([]byte, os.Getpagesize()) + n, err := syscall.Read(s, rb) + if err != nil { + t.Fatalf("%v: %v", m, err) + } + rms, err := ParseRIB(0, rb[:n]) + if err != nil { + t.Fatalf("%v: %v", m, err) + } + for _, rm := range rms { + err := rm.(*RouteMessage).Err + if err != nil { + t.Errorf("%v: %v", m, err) + } + } + ss, err := msgs(rms).validate() + if err != nil { + t.Fatalf("%v: %v", m, err) + } + for _, s := range ss { + t.Log(s) + } + } +} diff --git a/vendor/golang.org/x/net/route/route.go b/vendor/golang.org/x/net/route/route.go index c986e29ebc..081da0d5c1 100644 --- a/vendor/golang.org/x/net/route/route.go +++ b/vendor/golang.org/x/net/route/route.go @@ -24,21 +24,70 @@ var ( errMessageTooShort = errors.New("message too short") errInvalidMessage = errors.New("invalid message") errInvalidAddr = errors.New("invalid address") + errShortBuffer = errors.New("short buffer") ) // A RouteMessage represents a message conveying an address prefix, a // nexthop address and an output interface. +// +// Unlike other messages, this message can be used to query adjacency +// information for the given address prefix, to add a new route, and +// to delete or modify the existing route from the routing information +// base inside the kernel by writing and reading route messages on a +// routing socket. +// +// For the manipulation of routing information, the route message must +// contain appropriate fields that include: +// +// Version = +// Type = +// Flags = +// Index = +// ID = +// Seq = +// Addrs = +// +// The Type field specifies a type of manipulation, the Flags field +// specifies a class of target information and the Addrs field +// specifies target information like the following: +// +// route.RouteMessage{ +// Version: RTM_VERSION, +// Type: RTM_GET, +// Flags: RTF_UP | RTF_HOST, +// ID: uintptr(os.Getpid()), +// Seq: 1, +// Addrs: []route.Addrs{ +// RTAX_DST: &route.Inet4Addr{ ... }, +// RTAX_IFP: &route.LinkAddr{ ... }, +// RTAX_BRD: &route.Inet4Addr{ ... }, +// }, +// } +// +// The values for the above fields depend on the implementation of +// each operating system. +// +// The Err field on a response message contains an error value on the +// requested operation. If non-nil, the requested operation is failed. type RouteMessage struct { - Version int // message version - Type int // message type - Flags int // route flags - Index int // interface index when atatched - Addrs []Addr // addresses + Version int // message version + Type int // message type + Flags int // route flags + Index int // interface index when atatched + ID uintptr // sender's identifier; usually process ID + Seq int // sequence number + Err error // error on requested operation + Addrs []Addr // addresses extOff int // offset of header extension raw []byte // raw message } +// Marshal returns the binary encoding of m. +func (m *RouteMessage) Marshal() ([]byte, error) { + return m.marshal() +} + // A RIBType reprensents a type of routing information base. type RIBType int diff --git a/vendor/golang.org/x/net/route/route_classic.go b/vendor/golang.org/x/net/route/route_classic.go index d333c6aa52..61b2bb4add 100644 --- a/vendor/golang.org/x/net/route/route_classic.go +++ b/vendor/golang.org/x/net/route/route_classic.go @@ -6,6 +6,36 @@ package route +import "syscall" + +func (m *RouteMessage) marshal() ([]byte, error) { + w, ok := wireFormats[m.Type] + if !ok { + return nil, errUnsupportedMessage + } + l := w.bodyOff + addrsSpace(m.Addrs) + b := make([]byte, l) + nativeEndian.PutUint16(b[:2], uint16(l)) + if m.Version == 0 { + b[2] = sysRTM_VERSION + } else { + b[2] = byte(m.Version) + } + b[3] = byte(m.Type) + nativeEndian.PutUint32(b[8:12], uint32(m.Flags)) + nativeEndian.PutUint16(b[4:6], uint16(m.Index)) + nativeEndian.PutUint32(b[16:20], uint32(m.ID)) + nativeEndian.PutUint32(b[20:24], uint32(m.Seq)) + attrs, err := marshalAddrs(b[w.bodyOff:], m.Addrs) + if err != nil { + return nil, err + } + if attrs > 0 { + nativeEndian.PutUint32(b[12:16], uint32(attrs)) + } + return b, nil +} + func (w *wireFormat) parseRouteMessage(typ RIBType, b []byte) (Message, error) { if len(b) < w.bodyOff { return nil, errMessageTooShort @@ -19,9 +49,15 @@ func (w *wireFormat) parseRouteMessage(typ RIBType, b []byte) (Message, error) { Type: int(b[3]), Flags: int(nativeEndian.Uint32(b[8:12])), Index: int(nativeEndian.Uint16(b[4:6])), + ID: uintptr(nativeEndian.Uint32(b[16:20])), + Seq: int(nativeEndian.Uint32(b[20:24])), extOff: w.extOff, raw: b[:l], } + errno := syscall.Errno(nativeEndian.Uint32(b[28:32])) + if errno != 0 { + m.Err = errno + } var err error m.Addrs, err = parseAddrs(uint(nativeEndian.Uint32(b[12:16])), parseKernelInetAddr, b[w.bodyOff:]) if err != nil { diff --git a/vendor/golang.org/x/net/route/route_openbsd.go b/vendor/golang.org/x/net/route/route_openbsd.go index 76eae40d80..daf2e90c47 100644 --- a/vendor/golang.org/x/net/route/route_openbsd.go +++ b/vendor/golang.org/x/net/route/route_openbsd.go @@ -4,8 +4,35 @@ package route +import "syscall" + +func (m *RouteMessage) marshal() ([]byte, error) { + l := sizeofRtMsghdr + addrsSpace(m.Addrs) + b := make([]byte, l) + nativeEndian.PutUint16(b[:2], uint16(l)) + if m.Version == 0 { + b[2] = sysRTM_VERSION + } else { + b[2] = byte(m.Version) + } + b[3] = byte(m.Type) + nativeEndian.PutUint16(b[4:6], uint16(sizeofRtMsghdr)) + nativeEndian.PutUint32(b[16:20], uint32(m.Flags)) + nativeEndian.PutUint16(b[6:8], uint16(m.Index)) + nativeEndian.PutUint32(b[24:28], uint32(m.ID)) + nativeEndian.PutUint32(b[28:32], uint32(m.Seq)) + attrs, err := marshalAddrs(b[sizeofRtMsghdr:], m.Addrs) + if err != nil { + return nil, err + } + if attrs > 0 { + nativeEndian.PutUint32(b[12:16], uint32(attrs)) + } + return b, nil +} + func (*wireFormat) parseRouteMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < 40 { + if len(b) < sizeofRtMsghdr { return nil, errMessageTooShort } l := int(nativeEndian.Uint16(b[:2])) @@ -17,12 +44,18 @@ func (*wireFormat) parseRouteMessage(_ RIBType, b []byte) (Message, error) { Type: int(b[3]), Flags: int(nativeEndian.Uint32(b[16:20])), Index: int(nativeEndian.Uint16(b[6:8])), + ID: uintptr(nativeEndian.Uint32(b[24:28])), + Seq: int(nativeEndian.Uint32(b[28:32])), raw: b[:l], } ll := int(nativeEndian.Uint16(b[4:6])) if len(b) < ll { return nil, errInvalidMessage } + errno := syscall.Errno(nativeEndian.Uint32(b[32:36])) + if errno != 0 { + m.Err = errno + } as, err := parseAddrs(uint(nativeEndian.Uint32(b[12:16])), parseKernelInetAddr, b[ll:]) if err != nil { return nil, err diff --git a/vendor/golang.org/x/net/route/route_test.go b/vendor/golang.org/x/net/route/route_test.go index 63fd8c5618..61bd174543 100644 --- a/vendor/golang.org/x/net/route/route_test.go +++ b/vendor/golang.org/x/net/route/route_test.go @@ -74,6 +74,10 @@ var addrAttrNames = [...]string{ "df:mpls1-n:tag-o:src", // mpls1 for dragonfly, tag for netbsd, src for openbsd "df:mpls2-o:srcmask", // mpls2 for dragonfly, srcmask for openbsd "df:mpls3-o:label", // mpls3 for dragonfly, label for openbsd + "o:bfd", // bfd for openbsd + "o:dns", // dns for openbsd + "o:static", // static for openbsd + "o:search", // search for openbsd } func (attrs addrAttrs) String() string { diff --git a/vendor/golang.org/x/net/route/sys.go b/vendor/golang.org/x/net/route/sys.go index 80ca83ae13..3d0ee9b148 100644 --- a/vendor/golang.org/x/net/route/sys.go +++ b/vendor/golang.org/x/net/route/sys.go @@ -11,7 +11,7 @@ import "unsafe" var ( nativeEndian binaryByteOrder kernelAlign int - parseFns map[int]parseFn + wireFormats map[int]*wireFormat ) func init() { @@ -22,7 +22,7 @@ func init() { } else { nativeEndian = bigEndian } - kernelAlign, parseFns = probeRoutingStack() + kernelAlign, wireFormats = probeRoutingStack() } func roundup(l int) int { @@ -32,9 +32,8 @@ func roundup(l int) int { return (l + kernelAlign - 1) & ^(kernelAlign - 1) } -type parseFn func(RIBType, []byte) (Message, error) - type wireFormat struct { extOff int // offset of header extension bodyOff int // offset of message body + parse func(RIBType, []byte) (Message, error) } diff --git a/vendor/golang.org/x/net/route/sys_darwin.go b/vendor/golang.org/x/net/route/sys_darwin.go index fff3a0fd1d..d2daf5c05a 100644 --- a/vendor/golang.org/x/net/route/sys_darwin.go +++ b/vendor/golang.org/x/net/route/sys_darwin.go @@ -13,7 +13,7 @@ func (typ RIBType) parseable() bool { } } -// A RouteMetrics represents route metrics. +// RouteMetrics represents route metrics. type RouteMetrics struct { PathMTU int // path maximum transmission unit } @@ -30,7 +30,7 @@ func (m *RouteMessage) Sys() []Sys { } } -// A InterfaceMetrics represents interface metrics. +// InterfaceMetrics represents interface metrics. type InterfaceMetrics struct { Type int // interface type MTU int // maximum transmission unit @@ -49,32 +49,39 @@ func (m *InterfaceMessage) Sys() []Sys { } } -func probeRoutingStack() (int, map[int]parseFn) { +func probeRoutingStack() (int, map[int]*wireFormat) { rtm := &wireFormat{extOff: 36, bodyOff: sizeofRtMsghdrDarwin15} + rtm.parse = rtm.parseRouteMessage rtm2 := &wireFormat{extOff: 36, bodyOff: sizeofRtMsghdr2Darwin15} + rtm2.parse = rtm2.parseRouteMessage ifm := &wireFormat{extOff: 16, bodyOff: sizeofIfMsghdrDarwin15} + ifm.parse = ifm.parseInterfaceMessage ifm2 := &wireFormat{extOff: 32, bodyOff: sizeofIfMsghdr2Darwin15} + ifm2.parse = ifm2.parseInterfaceMessage ifam := &wireFormat{extOff: sizeofIfaMsghdrDarwin15, bodyOff: sizeofIfaMsghdrDarwin15} + ifam.parse = ifam.parseInterfaceAddrMessage ifmam := &wireFormat{extOff: sizeofIfmaMsghdrDarwin15, bodyOff: sizeofIfmaMsghdrDarwin15} + ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage ifmam2 := &wireFormat{extOff: sizeofIfmaMsghdr2Darwin15, bodyOff: sizeofIfmaMsghdr2Darwin15} + ifmam2.parse = ifmam2.parseInterfaceMulticastAddrMessage // Darwin kernels require 32-bit aligned access to routing facilities. - return 4, map[int]parseFn{ - sysRTM_ADD: rtm.parseRouteMessage, - sysRTM_DELETE: rtm.parseRouteMessage, - sysRTM_CHANGE: rtm.parseRouteMessage, - sysRTM_GET: rtm.parseRouteMessage, - sysRTM_LOSING: rtm.parseRouteMessage, - sysRTM_REDIRECT: rtm.parseRouteMessage, - sysRTM_MISS: rtm.parseRouteMessage, - sysRTM_LOCK: rtm.parseRouteMessage, - sysRTM_RESOLVE: rtm.parseRouteMessage, - sysRTM_NEWADDR: ifam.parseInterfaceAddrMessage, - sysRTM_DELADDR: ifam.parseInterfaceAddrMessage, - sysRTM_IFINFO: ifm.parseInterfaceMessage, - sysRTM_NEWMADDR: ifmam.parseInterfaceMulticastAddrMessage, - sysRTM_DELMADDR: ifmam.parseInterfaceMulticastAddrMessage, - sysRTM_IFINFO2: ifm2.parseInterfaceMessage, - sysRTM_NEWMADDR2: ifmam2.parseInterfaceMulticastAddrMessage, - sysRTM_GET2: rtm2.parseRouteMessage, + return 4, map[int]*wireFormat{ + sysRTM_ADD: rtm, + sysRTM_DELETE: rtm, + sysRTM_CHANGE: rtm, + sysRTM_GET: rtm, + sysRTM_LOSING: rtm, + sysRTM_REDIRECT: rtm, + sysRTM_MISS: rtm, + sysRTM_LOCK: rtm, + sysRTM_RESOLVE: rtm, + sysRTM_NEWADDR: ifam, + sysRTM_DELADDR: ifam, + sysRTM_IFINFO: ifm, + sysRTM_NEWMADDR: ifmam, + sysRTM_DELMADDR: ifmam, + sysRTM_IFINFO2: ifm2, + sysRTM_NEWMADDR2: ifmam2, + sysRTM_GET2: rtm2, } } diff --git a/vendor/golang.org/x/net/route/sys_dragonfly.go b/vendor/golang.org/x/net/route/sys_dragonfly.go index da848b3d07..0c14bc2b4d 100644 --- a/vendor/golang.org/x/net/route/sys_dragonfly.go +++ b/vendor/golang.org/x/net/route/sys_dragonfly.go @@ -8,7 +8,7 @@ import "unsafe" func (typ RIBType) parseable() bool { return true } -// A RouteMetrics represents route metrics. +// RouteMetrics represents route metrics. type RouteMetrics struct { PathMTU int // path maximum transmission unit } @@ -25,7 +25,7 @@ func (m *RouteMessage) Sys() []Sys { } } -// A InterfaceMetrics represents interface metrics. +// InterfaceMetrics represents interface metrics. type InterfaceMetrics struct { Type int // interface type MTU int // maximum transmission unit @@ -44,28 +44,33 @@ func (m *InterfaceMessage) Sys() []Sys { } } -func probeRoutingStack() (int, map[int]parseFn) { +func probeRoutingStack() (int, map[int]*wireFormat) { var p uintptr rtm := &wireFormat{extOff: 40, bodyOff: sizeofRtMsghdrDragonFlyBSD4} + rtm.parse = rtm.parseRouteMessage ifm := &wireFormat{extOff: 16, bodyOff: sizeofIfMsghdrDragonFlyBSD4} + ifm.parse = ifm.parseInterfaceMessage ifam := &wireFormat{extOff: sizeofIfaMsghdrDragonFlyBSD4, bodyOff: sizeofIfaMsghdrDragonFlyBSD4} + ifam.parse = ifam.parseInterfaceAddrMessage ifmam := &wireFormat{extOff: sizeofIfmaMsghdrDragonFlyBSD4, bodyOff: sizeofIfmaMsghdrDragonFlyBSD4} + ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage ifanm := &wireFormat{extOff: sizeofIfAnnouncemsghdrDragonFlyBSD4, bodyOff: sizeofIfAnnouncemsghdrDragonFlyBSD4} - return int(unsafe.Sizeof(p)), map[int]parseFn{ - sysRTM_ADD: rtm.parseRouteMessage, - sysRTM_DELETE: rtm.parseRouteMessage, - sysRTM_CHANGE: rtm.parseRouteMessage, - sysRTM_GET: rtm.parseRouteMessage, - sysRTM_LOSING: rtm.parseRouteMessage, - sysRTM_REDIRECT: rtm.parseRouteMessage, - sysRTM_MISS: rtm.parseRouteMessage, - sysRTM_LOCK: rtm.parseRouteMessage, - sysRTM_RESOLVE: rtm.parseRouteMessage, - sysRTM_NEWADDR: ifam.parseInterfaceAddrMessage, - sysRTM_DELADDR: ifam.parseInterfaceAddrMessage, - sysRTM_IFINFO: ifm.parseInterfaceMessage, - sysRTM_NEWMADDR: ifmam.parseInterfaceMulticastAddrMessage, - sysRTM_DELMADDR: ifmam.parseInterfaceMulticastAddrMessage, - sysRTM_IFANNOUNCE: ifanm.parseInterfaceAnnounceMessage, + ifanm.parse = ifanm.parseInterfaceAnnounceMessage + return int(unsafe.Sizeof(p)), map[int]*wireFormat{ + sysRTM_ADD: rtm, + sysRTM_DELETE: rtm, + sysRTM_CHANGE: rtm, + sysRTM_GET: rtm, + sysRTM_LOSING: rtm, + sysRTM_REDIRECT: rtm, + sysRTM_MISS: rtm, + sysRTM_LOCK: rtm, + sysRTM_RESOLVE: rtm, + sysRTM_NEWADDR: ifam, + sysRTM_DELADDR: ifam, + sysRTM_IFINFO: ifm, + sysRTM_NEWMADDR: ifmam, + sysRTM_DELMADDR: ifmam, + sysRTM_IFANNOUNCE: ifanm, } } diff --git a/vendor/golang.org/x/net/route/sys_freebsd.go b/vendor/golang.org/x/net/route/sys_freebsd.go index 7b05c1a5a0..89ba1c4e26 100644 --- a/vendor/golang.org/x/net/route/sys_freebsd.go +++ b/vendor/golang.org/x/net/route/sys_freebsd.go @@ -11,7 +11,7 @@ import ( func (typ RIBType) parseable() bool { return true } -// A RouteMetrics represents route metrics. +// RouteMetrics represents route metrics. type RouteMetrics struct { PathMTU int // path maximum transmission unit } @@ -35,7 +35,7 @@ func (m *RouteMessage) Sys() []Sys { } } -// A InterfaceMetrics represents interface metrics. +// InterfaceMetrics represents interface metrics. type InterfaceMetrics struct { Type int // interface type MTU int // maximum transmission unit @@ -54,7 +54,7 @@ func (m *InterfaceMessage) Sys() []Sys { } } -func probeRoutingStack() (int, map[int]parseFn) { +func probeRoutingStack() (int, map[int]*wireFormat) { var p uintptr wordSize := int(unsafe.Sizeof(p)) align := int(unsafe.Sizeof(p)) @@ -130,21 +130,26 @@ func probeRoutingStack() (int, map[int]parseFn) { ifm.bodyOff = sizeofIfMsghdrFreeBSD11 } } - return align, map[int]parseFn{ - sysRTM_ADD: rtm.parseRouteMessage, - sysRTM_DELETE: rtm.parseRouteMessage, - sysRTM_CHANGE: rtm.parseRouteMessage, - sysRTM_GET: rtm.parseRouteMessage, - sysRTM_LOSING: rtm.parseRouteMessage, - sysRTM_REDIRECT: rtm.parseRouteMessage, - sysRTM_MISS: rtm.parseRouteMessage, - sysRTM_LOCK: rtm.parseRouteMessage, - sysRTM_RESOLVE: rtm.parseRouteMessage, - sysRTM_NEWADDR: ifam.parseInterfaceAddrMessage, - sysRTM_DELADDR: ifam.parseInterfaceAddrMessage, - sysRTM_IFINFO: ifm.parseInterfaceMessage, - sysRTM_NEWMADDR: ifmam.parseInterfaceMulticastAddrMessage, - sysRTM_DELMADDR: ifmam.parseInterfaceMulticastAddrMessage, - sysRTM_IFANNOUNCE: ifanm.parseInterfaceAnnounceMessage, + rtm.parse = rtm.parseRouteMessage + ifm.parse = ifm.parseInterfaceMessage + ifam.parse = ifam.parseInterfaceAddrMessage + ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage + ifanm.parse = ifanm.parseInterfaceAnnounceMessage + return align, map[int]*wireFormat{ + sysRTM_ADD: rtm, + sysRTM_DELETE: rtm, + sysRTM_CHANGE: rtm, + sysRTM_GET: rtm, + sysRTM_LOSING: rtm, + sysRTM_REDIRECT: rtm, + sysRTM_MISS: rtm, + sysRTM_LOCK: rtm, + sysRTM_RESOLVE: rtm, + sysRTM_NEWADDR: ifam, + sysRTM_DELADDR: ifam, + sysRTM_IFINFO: ifm, + sysRTM_NEWMADDR: ifmam, + sysRTM_DELMADDR: ifmam, + sysRTM_IFANNOUNCE: ifanm, } } diff --git a/vendor/golang.org/x/net/route/sys_netbsd.go b/vendor/golang.org/x/net/route/sys_netbsd.go index 4d8076b518..02f71d54bb 100644 --- a/vendor/golang.org/x/net/route/sys_netbsd.go +++ b/vendor/golang.org/x/net/route/sys_netbsd.go @@ -6,7 +6,7 @@ package route func (typ RIBType) parseable() bool { return true } -// A RouteMetrics represents route metrics. +// RouteMetrics represents route metrics. type RouteMetrics struct { PathMTU int // path maximum transmission unit } @@ -23,7 +23,7 @@ func (m *RouteMessage) Sys() []Sys { } } -// A InterfaceMetrics represents interface metrics. +// RouteMetrics represents route metrics. type InterfaceMetrics struct { Type int // interface type MTU int // maximum transmission unit @@ -42,26 +42,30 @@ func (m *InterfaceMessage) Sys() []Sys { } } -func probeRoutingStack() (int, map[int]parseFn) { +func probeRoutingStack() (int, map[int]*wireFormat) { rtm := &wireFormat{extOff: 40, bodyOff: sizeofRtMsghdrNetBSD7} + rtm.parse = rtm.parseRouteMessage ifm := &wireFormat{extOff: 16, bodyOff: sizeofIfMsghdrNetBSD7} + ifm.parse = ifm.parseInterfaceMessage ifam := &wireFormat{extOff: sizeofIfaMsghdrNetBSD7, bodyOff: sizeofIfaMsghdrNetBSD7} + ifam.parse = ifam.parseInterfaceAddrMessage ifanm := &wireFormat{extOff: sizeofIfAnnouncemsghdrNetBSD7, bodyOff: sizeofIfAnnouncemsghdrNetBSD7} + ifanm.parse = ifanm.parseInterfaceAnnounceMessage // NetBSD 6 and above kernels require 64-bit aligned access to // routing facilities. - return 8, map[int]parseFn{ - sysRTM_ADD: rtm.parseRouteMessage, - sysRTM_DELETE: rtm.parseRouteMessage, - sysRTM_CHANGE: rtm.parseRouteMessage, - sysRTM_GET: rtm.parseRouteMessage, - sysRTM_LOSING: rtm.parseRouteMessage, - sysRTM_REDIRECT: rtm.parseRouteMessage, - sysRTM_MISS: rtm.parseRouteMessage, - sysRTM_LOCK: rtm.parseRouteMessage, - sysRTM_RESOLVE: rtm.parseRouteMessage, - sysRTM_NEWADDR: ifam.parseInterfaceAddrMessage, - sysRTM_DELADDR: ifam.parseInterfaceAddrMessage, - sysRTM_IFANNOUNCE: ifanm.parseInterfaceAnnounceMessage, - sysRTM_IFINFO: ifm.parseInterfaceMessage, + return 8, map[int]*wireFormat{ + sysRTM_ADD: rtm, + sysRTM_DELETE: rtm, + sysRTM_CHANGE: rtm, + sysRTM_GET: rtm, + sysRTM_LOSING: rtm, + sysRTM_REDIRECT: rtm, + sysRTM_MISS: rtm, + sysRTM_LOCK: rtm, + sysRTM_RESOLVE: rtm, + sysRTM_NEWADDR: ifam, + sysRTM_DELADDR: ifam, + sysRTM_IFANNOUNCE: ifanm, + sysRTM_IFINFO: ifm, } } diff --git a/vendor/golang.org/x/net/route/sys_openbsd.go b/vendor/golang.org/x/net/route/sys_openbsd.go index 26d0438696..c5674e83d0 100644 --- a/vendor/golang.org/x/net/route/sys_openbsd.go +++ b/vendor/golang.org/x/net/route/sys_openbsd.go @@ -15,7 +15,7 @@ func (typ RIBType) parseable() bool { } } -// A RouteMetrics represents route metrics. +// RouteMetrics represents route metrics. type RouteMetrics struct { PathMTU int // path maximum transmission unit } @@ -32,7 +32,7 @@ func (m *RouteMessage) Sys() []Sys { } } -// A InterfaceMetrics represents interface metrics. +// InterfaceMetrics represents interface metrics. type InterfaceMetrics struct { Type int // interface type MTU int // maximum transmission unit @@ -51,22 +51,30 @@ func (m *InterfaceMessage) Sys() []Sys { } } -func probeRoutingStack() (int, map[int]parseFn) { +func probeRoutingStack() (int, map[int]*wireFormat) { var p uintptr - nooff := &wireFormat{extOff: -1, bodyOff: -1} - return int(unsafe.Sizeof(p)), map[int]parseFn{ - sysRTM_ADD: nooff.parseRouteMessage, - sysRTM_DELETE: nooff.parseRouteMessage, - sysRTM_CHANGE: nooff.parseRouteMessage, - sysRTM_GET: nooff.parseRouteMessage, - sysRTM_LOSING: nooff.parseRouteMessage, - sysRTM_REDIRECT: nooff.parseRouteMessage, - sysRTM_MISS: nooff.parseRouteMessage, - sysRTM_LOCK: nooff.parseRouteMessage, - sysRTM_RESOLVE: nooff.parseRouteMessage, - sysRTM_NEWADDR: nooff.parseInterfaceAddrMessage, - sysRTM_DELADDR: nooff.parseInterfaceAddrMessage, - sysRTM_IFINFO: nooff.parseInterfaceMessage, - sysRTM_IFANNOUNCE: nooff.parseInterfaceAnnounceMessage, + rtm := &wireFormat{extOff: -1, bodyOff: -1} + rtm.parse = rtm.parseRouteMessage + ifm := &wireFormat{extOff: -1, bodyOff: -1} + ifm.parse = ifm.parseInterfaceMessage + ifam := &wireFormat{extOff: -1, bodyOff: -1} + ifam.parse = ifam.parseInterfaceAddrMessage + ifanm := &wireFormat{extOff: -1, bodyOff: -1} + ifanm.parse = ifanm.parseInterfaceAnnounceMessage + return int(unsafe.Sizeof(p)), map[int]*wireFormat{ + sysRTM_ADD: rtm, + sysRTM_DELETE: rtm, + sysRTM_CHANGE: rtm, + sysRTM_GET: rtm, + sysRTM_LOSING: rtm, + sysRTM_REDIRECT: rtm, + sysRTM_MISS: rtm, + sysRTM_LOCK: rtm, + sysRTM_RESOLVE: rtm, + sysRTM_NEWADDR: ifam, + sysRTM_DELADDR: ifam, + sysRTM_IFINFO: ifm, + sysRTM_IFANNOUNCE: ifanm, + sysRTM_DESYNC: rtm, } } diff --git a/vendor/golang.org/x/net/route/syscall.go b/vendor/golang.org/x/net/route/syscall.go index d136325a30..c211188b10 100644 --- a/vendor/golang.org/x/net/route/syscall.go +++ b/vendor/golang.org/x/net/route/syscall.go @@ -11,10 +11,6 @@ import ( "unsafe" ) -// TODO: replace with runtime.KeepAlive when available -//go:noescape -func keepAlive(p unsafe.Pointer) - var zero uintptr func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { @@ -25,7 +21,6 @@ func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) p = unsafe.Pointer(&zero) } _, _, errno := syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(p), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - keepAlive(p) if errno != 0 { return error(errno) } diff --git a/vendor/golang.org/x/net/route/syscall.s b/vendor/golang.org/x/net/route/syscall.s deleted file mode 100644 index fa6297f0aa..0000000000 --- a/vendor/golang.org/x/net/route/syscall.s +++ /dev/null @@ -1,8 +0,0 @@ -// 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. - -#include "textflag.h" - -TEXT ·keepAlive(SB),NOSPLIT,$0 - RET diff --git a/vendor/golang.org/x/net/route/zsys_darwin.go b/vendor/golang.org/x/net/route/zsys_darwin.go index 265b81cd50..4e2e1ab090 100644 --- a/vendor/golang.org/x/net/route/zsys_darwin.go +++ b/vendor/golang.org/x/net/route/zsys_darwin.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x1e + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x3 @@ -90,4 +92,8 @@ const ( sizeofRtMsghdrDarwin15 = 0x5c sizeofRtMsghdr2Darwin15 = 0x5c sizeofRtMetricsDarwin15 = 0x38 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/route/zsys_dragonfly.go b/vendor/golang.org/x/net/route/zsys_dragonfly.go index dd36dece0f..719c88d11f 100644 --- a/vendor/golang.org/x/net/route/zsys_dragonfly.go +++ b/vendor/golang.org/x/net/route/zsys_dragonfly.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x1c + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x3 @@ -89,4 +91,8 @@ const ( sizeofRtMsghdrDragonFlyBSD4 = 0x98 sizeofRtMetricsDragonFlyBSD4 = 0x70 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/route/zsys_freebsd_386.go b/vendor/golang.org/x/net/route/zsys_freebsd_386.go index 9bac2e3900..b03bc01f65 100644 --- a/vendor/golang.org/x/net/route/zsys_freebsd_386.go +++ b/vendor/golang.org/x/net/route/zsys_freebsd_386.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x1c + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x3 @@ -117,4 +119,8 @@ const ( sizeofIfDataFreeBSD9Emu = 0x98 sizeofIfDataFreeBSD10Emu = 0x98 sizeofIfDataFreeBSD11Emu = 0x98 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go index b1920d7ac1..0b675b3d3f 100644 --- a/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +++ b/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x1c + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x3 @@ -114,4 +116,8 @@ const ( sizeofIfDataFreeBSD9Emu = 0x98 sizeofIfDataFreeBSD10Emu = 0x98 sizeofIfDataFreeBSD11Emu = 0x98 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/route/zsys_freebsd_arm.go b/vendor/golang.org/x/net/route/zsys_freebsd_arm.go index a034d6fcbf..58f8ea16f2 100644 --- a/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +++ b/vendor/golang.org/x/net/route/zsys_freebsd_arm.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x1c + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x3 @@ -114,4 +116,8 @@ const ( sizeofIfDataFreeBSD9Emu = 0x60 sizeofIfDataFreeBSD10Emu = 0x60 sizeofIfDataFreeBSD11Emu = 0x98 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/route/zsys_netbsd.go b/vendor/golang.org/x/net/route/zsys_netbsd.go index aa4aad1613..e0df45e8b5 100644 --- a/vendor/golang.org/x/net/route/zsys_netbsd.go +++ b/vendor/golang.org/x/net/route/zsys_netbsd.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x18 + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x5 @@ -88,4 +90,8 @@ const ( sizeofRtMsghdrNetBSD7 = 0x78 sizeofRtMetricsNetBSD7 = 0x50 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/route/zsys_openbsd.go b/vendor/golang.org/x/net/route/zsys_openbsd.go index 4fadc4e8fa..db8c8efb49 100644 --- a/vendor/golang.org/x/net/route/zsys_openbsd.go +++ b/vendor/golang.org/x/net/route/zsys_openbsd.go @@ -10,6 +10,8 @@ const ( sysAF_LINK = 0x12 sysAF_INET6 = 0x18 + sysSOCK_RAW = 0x3 + sysNET_RT_DUMP = 0x1 sysNET_RT_FLAGS = 0x2 sysNET_RT_IFLIST = 0x3 @@ -52,6 +54,9 @@ const ( sysRTM_IFINFO = 0xe sysRTM_IFANNOUNCE = 0xf sysRTM_DESYNC = 0x10 + sysRTM_INVALIDATE = 0x11 + sysRTM_BFD = 0x12 + sysRTM_PROPOSAL = 0x13 sysRTA_DST = 0x1 sysRTA_GATEWAY = 0x2 @@ -64,6 +69,10 @@ const ( sysRTA_SRC = 0x100 sysRTA_SRCMASK = 0x200 sysRTA_LABEL = 0x400 + sysRTA_BFD = 0x800 + sysRTA_DNS = 0x1000 + sysRTA_STATIC = 0x2000 + sysRTA_SEARCH = 0x4000 sysRTAX_DST = 0x0 sysRTAX_GATEWAY = 0x1 @@ -76,5 +85,17 @@ const ( sysRTAX_SRC = 0x8 sysRTAX_SRCMASK = 0x9 sysRTAX_LABEL = 0xa - sysRTAX_MAX = 0xb + sysRTAX_BFD = 0xb + sysRTAX_DNS = 0xc + sysRTAX_STATIC = 0xd + sysRTAX_SEARCH = 0xe + sysRTAX_MAX = 0xf +) + +const ( + sizeofRtMsghdr = 0x60 + + sizeofSockaddrStorage = 0x100 + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c ) diff --git a/vendor/golang.org/x/net/trace/events.go b/vendor/golang.org/x/net/trace/events.go index d8daec1a79..c646a6952e 100644 --- a/vendor/golang.org/x/net/trace/events.go +++ b/vendor/golang.org/x/net/trace/events.go @@ -39,9 +39,9 @@ var buckets = []bucket{ } // RenderEvents renders the HTML page typically served at /debug/events. -// It does not do any auth checking; see AuthRequest for the default auth check -// used by the handler registered on http.DefaultServeMux. -// req may be nil. +// It does not do any auth checking. The request may be nil. +// +// Most users will use the Events handler. func RenderEvents(w http.ResponseWriter, req *http.Request, sensitive bool) { now := time.Now() data := &struct { diff --git a/vendor/golang.org/x/net/trace/trace.go b/vendor/golang.org/x/net/trace/trace.go index 64f56a3736..bb72a527e8 100644 --- a/vendor/golang.org/x/net/trace/trace.go +++ b/vendor/golang.org/x/net/trace/trace.go @@ -77,7 +77,6 @@ import ( "sync/atomic" "time" - "golang.org/x/net/context" "golang.org/x/net/internal/timeseries" ) @@ -111,30 +110,46 @@ var AuthRequest = func(req *http.Request) (any, sensitive bool) { } func init() { - http.HandleFunc("/debug/requests", func(w http.ResponseWriter, req *http.Request) { - any, sensitive := AuthRequest(req) - if !any { - http.Error(w, "not allowed", http.StatusUnauthorized) - return - } - w.Header().Set("Content-Type", "text/html; charset=utf-8") - Render(w, req, sensitive) - }) - http.HandleFunc("/debug/events", func(w http.ResponseWriter, req *http.Request) { - any, sensitive := AuthRequest(req) - if !any { - http.Error(w, "not allowed", http.StatusUnauthorized) - return - } - w.Header().Set("Content-Type", "text/html; charset=utf-8") - RenderEvents(w, req, sensitive) - }) + // TODO(jbd): Serve Traces from /debug/traces in the future? + // There is no requirement for a request to be present to have traces. + http.HandleFunc("/debug/requests", Traces) + http.HandleFunc("/debug/events", Events) +} + +// Traces responds with traces from the program. +// The package initialization registers it in http.DefaultServeMux +// at /debug/requests. +// +// It performs authorization by running AuthRequest. +func Traces(w http.ResponseWriter, req *http.Request) { + any, sensitive := AuthRequest(req) + if !any { + http.Error(w, "not allowed", http.StatusUnauthorized) + return + } + w.Header().Set("Content-Type", "text/html; charset=utf-8") + Render(w, req, sensitive) +} + +// Events responds with a page of events collected by EventLogs. +// The package initialization registers it in http.DefaultServeMux +// at /debug/events. +// +// It performs authorization by running AuthRequest. +func Events(w http.ResponseWriter, req *http.Request) { + any, sensitive := AuthRequest(req) + if !any { + http.Error(w, "not allowed", http.StatusUnauthorized) + return + } + w.Header().Set("Content-Type", "text/html; charset=utf-8") + RenderEvents(w, req, sensitive) } // Render renders the HTML page typically served at /debug/requests. -// It does not do any auth checking; see AuthRequest for the default auth check -// used by the handler registered on http.DefaultServeMux. -// req may be nil. +// It does not do any auth checking. The request may be nil. +// +// Most users will use the Traces handler. func Render(w io.Writer, req *http.Request, sensitive bool) { data := &struct { Families []string @@ -271,18 +286,6 @@ type contextKeyT string var contextKey = contextKeyT("golang.org/x/net/trace.Trace") -// NewContext returns a copy of the parent context -// and associates it with a Trace. -func NewContext(ctx context.Context, tr Trace) context.Context { - return context.WithValue(ctx, contextKey, tr) -} - -// FromContext returns the Trace bound to the context, if any. -func FromContext(ctx context.Context) (tr Trace, ok bool) { - tr, ok = ctx.Value(contextKey).(Trace) - return -} - // Trace represents an active request. type Trace interface { // LazyLog adds x to the event log. It will be evaluated each time the diff --git a/vendor/golang.org/x/net/trace/trace_go16.go b/vendor/golang.org/x/net/trace/trace_go16.go new file mode 100644 index 0000000000..d608191185 --- /dev/null +++ b/vendor/golang.org/x/net/trace/trace_go16.go @@ -0,0 +1,21 @@ +// Copyright 2017 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 trace + +import "golang.org/x/net/context" + +// NewContext returns a copy of the parent context +// and associates it with a Trace. +func NewContext(ctx context.Context, tr Trace) context.Context { + return context.WithValue(ctx, contextKey, tr) +} + +// FromContext returns the Trace bound to the context, if any. +func FromContext(ctx context.Context) (tr Trace, ok bool) { + tr, ok = ctx.Value(contextKey).(Trace) + return +} diff --git a/vendor/golang.org/x/net/trace/trace_go17.go b/vendor/golang.org/x/net/trace/trace_go17.go new file mode 100644 index 0000000000..df6e1fba7c --- /dev/null +++ b/vendor/golang.org/x/net/trace/trace_go17.go @@ -0,0 +1,21 @@ +// Copyright 2017 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 trace + +import "context" + +// NewContext returns a copy of the parent context +// and associates it with a Trace. +func NewContext(ctx context.Context, tr Trace) context.Context { + return context.WithValue(ctx, contextKey, tr) +} + +// FromContext returns the Trace bound to the context, if any. +func FromContext(ctx context.Context) (tr Trace, ok bool) { + tr, ok = ctx.Value(contextKey).(Trace) + return +} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/marshal.go b/vendor/golang.org/x/net/webdav/internal/xml/marshal.go index 3c3b6aca58..cb82ec2143 100644 --- a/vendor/golang.org/x/net/webdav/internal/xml/marshal.go +++ b/vendor/golang.org/x/net/webdav/internal/xml/marshal.go @@ -26,9 +26,9 @@ const ( // // Marshal handles an array or slice by marshalling each of the elements. // Marshal handles a pointer by marshalling the value it points at or, if the -// pointer is nil, by writing nothing. Marshal handles an interface value by +// pointer is nil, by writing nothing. Marshal handles an interface value by // marshalling the value it contains or, if the interface value is nil, by -// writing nothing. Marshal handles all other data by writing one or more XML +// writing nothing. Marshal handles all other data by writing one or more XML // elements containing the data. // // The name for the XML elements is taken from, in order of preference: @@ -61,7 +61,7 @@ const ( // value were part of the outer struct. // // If a field uses a tag "a>b>c", then the element c will be nested inside -// parent elements a and b. Fields that appear next to each other that name +// parent elements a and b. Fields that appear next to each other that name // the same parent will be enclosed in one XML element. // // See MarshalIndent for an example. @@ -222,7 +222,7 @@ func (enc *Encoder) EncodeToken(t Token) error { return p.cachedWriteError() case ProcInst: // First token to be encoded which is also a ProcInst with target of xml - // is the xml declaration. The only ProcInst where target of xml is allowed. + // is the xml declaration. The only ProcInst where target of xml is allowed. if t.Target == "xml" && p.Buffered() != 0 { return fmt.Errorf("xml: EncodeToken of ProcInst xml target only valid for xml declaration, first token encoded") } diff --git a/vendor/golang.org/x/net/webdav/internal/xml/read.go b/vendor/golang.org/x/net/webdav/internal/xml/read.go index 3ece08c497..4089056a1f 100644 --- a/vendor/golang.org/x/net/webdav/internal/xml/read.go +++ b/vendor/golang.org/x/net/webdav/internal/xml/read.go @@ -27,7 +27,7 @@ import ( // discarded. // // Because Unmarshal uses the reflect package, it can only assign -// to exported (upper case) fields. Unmarshal uses a case-sensitive +// to exported (upper case) fields. Unmarshal uses a case-sensitive // comparison to match XML element names to tag values and struct // field names. // @@ -37,7 +37,7 @@ import ( // // * If the struct has a field of type []byte or string with tag // ",innerxml", Unmarshal accumulates the raw XML nested inside the -// element in that field. The rest of the rules still apply. +// element in that field. The rest of the rules still apply. // // * If the struct has a field named XMLName of type xml.Name, // Unmarshal records the element name in that field. @@ -59,7 +59,7 @@ import ( // // * If the XML element contains comments, they are accumulated in // the first struct field that has tag ",comment". The struct -// field may have type []byte or string. If there is no such +// field may have type []byte or string. If there is no such // field, the comments are discarded. // // * If the XML element contains a sub-element whose name matches @@ -102,7 +102,7 @@ import ( // // Unmarshal maps an XML element or attribute value to an integer or // floating-point field by setting the field to the result of -// interpreting the string value in decimal. There is no check for +// interpreting the string value in decimal. There is no check for // overflow. // // Unmarshal maps an XML element to an xml.Name by recording the diff --git a/vendor/golang.org/x/net/webdav/internal/xml/xml.go b/vendor/golang.org/x/net/webdav/internal/xml/xml.go index ffab4a70c9..5b79cbecb4 100644 --- a/vendor/golang.org/x/net/webdav/internal/xml/xml.go +++ b/vendor/golang.org/x/net/webdav/internal/xml/xml.go @@ -252,7 +252,7 @@ func NewDecoder(r io.Reader) *Decoder { // // Slices of bytes in the returned token data refer to the // parser's internal buffer and remain valid only until the next -// call to Token. To acquire a copy of the bytes, call CopyToken +// call to Token. To acquire a copy of the bytes, call CopyToken // or the token's Copy method. // // Token expands self-closing elements such as
@@ -360,7 +360,7 @@ func (d *Decoder) switchToReader(r io.Reader) { } // Parsing state - stack holds old name space translations -// and the current set of open elements. The translations to pop when +// and the current set of open elements. The translations to pop when // ending a given tag are *below* it on the stack, which is // more work but forced on us by XML. type stack struct { @@ -1253,7 +1253,7 @@ func isNameString(s string) bool { // These tables were generated by cut and paste from Appendix B of // the XML spec at http://www.xml.com/axml/testaxml.htm -// and then reformatting. First corresponds to (Letter | '_' | ':') +// and then reformatting. First corresponds to (Letter | '_' | ':') // and second corresponds to NameChar. var first = &unicode.RangeTable{ diff --git a/vendor/golang.org/x/net/xsrftoken/xsrf.go b/vendor/golang.org/x/net/xsrftoken/xsrf.go index 881bf199fd..bc861e1f35 100644 --- a/vendor/golang.org/x/net/xsrftoken/xsrf.go +++ b/vendor/golang.org/x/net/xsrftoken/xsrf.go @@ -27,15 +27,18 @@ func clean(s string) string { // Generate returns a URL-safe secure XSRF token that expires in 24 hours. // -// key is a secret key for your application. -// userID is a unique identifier for the user. -// actionID is the action the user is taking (e.g. POSTing to a particular path). +// key is a secret key for your application; it must be non-empty. +// userID is an optional unique identifier for the user. +// actionID is an optional action the user is taking (e.g. POSTing to a particular path). func Generate(key, userID, actionID string) string { return generateTokenAtTime(key, userID, actionID, time.Now()) } // generateTokenAtTime is like Generate, but returns a token that expires 24 hours from now. func generateTokenAtTime(key, userID, actionID string, now time.Time) string { + if len(key) == 0 { + panic("zero length xsrf secret key") + } // Round time up and convert to milliseconds. milliTime := (now.UnixNano() + 1e6 - 1) / 1e6 @@ -57,6 +60,9 @@ func Valid(token, key, userID, actionID string) bool { // validTokenAtTime reports whether a token is valid at the given time. func validTokenAtTime(token, key, userID, actionID string, now time.Time) bool { + if len(key) == 0 { + panic("zero length xsrf secret key") + } // Extract the issue time of the token. sep := strings.LastIndex(token, ":") if sep < 0 { diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md new file mode 100644 index 0000000000..bc6f6031f1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/README.md @@ -0,0 +1,173 @@ +# Building `sys/unix` + +The sys/unix package provides access to the raw system call interface of the +underlying operating system. See: https://godoc.org/golang.org/x/sys/unix + +Porting Go to a new architecture/OS combination or adding syscalls, types, or +constants to an existing architecture/OS pair requires some manual effort; +however, there are tools that automate much of the process. + +## Build Systems + +There are currently two ways we generate the necessary files. We are currently +migrating the build system to use containers so the builds are reproducible. +This is being done on an OS-by-OS basis. Please update this documentation as +components of the build system change. + +### Old Build System (currently for `GOOS != "Linux" || GOARCH == "sparc64"`) + +The old build system generates the Go files based on the C header files +present on your system. This means that files +for a given GOOS/GOARCH pair must be generated on a system with that OS and +architecture. This also means that the generated code can differ from system +to system, based on differences in the header files. + +To avoid this, if you are using the old build system, only generate the Go +files on an installation with unmodified header files. It is also important to +keep track of which version of the OS the files were generated from (ex. +Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes +and have each OS upgrade correspond to a single change. + +To build the files for your current OS and architecture, make sure GOOS and +GOARCH are set correctly and run `mkall.sh`. This will generate the files for +your specific system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, perl, go + +### New Build System (currently for `GOOS == "Linux" && GOARCH != "sparc64"`) + +The new build system uses a Docker container to generate the go files directly +from source checkouts of the kernel and various system libraries. This means +that on any platform that supports Docker, all the files using the new build +system can be generated at once, and generated files will not change based on +what the person running the scripts has installed on their computer. + +The OS specific files for the new build system are located in the `${GOOS}` +directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When +the kernel or system library updates, modify the Dockerfile at +`${GOOS}/Dockerfile` to checkout the new release of the source. + +To build all the files under the new build system, you must be on an amd64/Linux +system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will +then generate all of the files for all of the GOOS/GOARCH pairs in the new build +system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, perl, go, docker + +## Component files + +This section describes the various files used in the code generation process. +It also contains instructions on how to modify these files to add a new +architecture/OS or to add additional syscalls, types, or constants. Note that +if you are using the new build system, the scripts cannot be called normally. +They must be called from within the docker container. + +### asm files + +The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system +call dispatch. There are three entry points: +``` + func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) + func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) + func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) +``` +The first and second are the standard ones; they differ only in how many +arguments can be passed to the kernel. The third is for low-level use by the +ForkExec wrapper. Unlike the first two, it does not call into the scheduler to +let it know that a system call is running. + +When porting Go to an new architecture/OS, this file must be implemented for +each GOOS/GOARCH pair. + +### mksysnum + +Mksysnum is a script located at `${GOOS}/mksysnum.pl` (or `mksysnum_${GOOS}.pl` +for the old system). This script takes in a list of header files containing the +syscall number declarations and parses them to produce the corresponding list of +Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated +constants. + +Adding new syscall numbers is mostly done by running the build on a sufficiently +new installation of the target OS (or updating the source checkouts for the +new build system). However, depending on the OS, you make need to update the +parsing in mksysnum. + +### mksyscall.pl + +The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are +hand-written Go files which implement system calls (for unix, the specific OS, +or the specific OS/Architecture pair respectively) that need special handling +and list `//sys` comments giving prototypes for ones that can be generated. + +The mksyscall.pl script takes the `//sys` and `//sysnb` comments and converts +them into syscalls. This requires the name of the prototype in the comment to +match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function +prototype can be exported (capitalized) or not. + +Adding a new syscall often just requires adding a new `//sys` function prototype +with the desired arguments and a capitalized name so it is exported. However, if +you want the interface to the syscall to be different, often one will make an +unexported `//sys` prototype, an then write a custom wrapper in +`syscall_${GOOS}.go`. + +### types files + +For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or +`types_${GOOS}.go` on the old system). This file includes standard C headers and +creates Go type aliases to the corresponding C types. The file is then fed +through godef to get the Go compatible definitions. Finally, the generated code +is fed though mkpost.go to format the code correctly and remove any hidden or +private identifiers. This cleaned-up code is written to +`ztypes_${GOOS}_${GOARCH}.go`. + +The hardest part about preparing this file is figuring out which headers to +include and which symbols need to be `#define`d to get the actual data +structures that pass through to the kernel system calls. Some C libraries +preset alternate versions for binary compatibility and translate them on the +way in and out of system calls, but there is almost always a `#define` that can +get the real ones. +See `types_darwin.go` and `linux/types.go` for examples. + +To add a new type, add in the necessary include statement at the top of the +file (if it is not already there) and add in a type alias line. Note that if +your type is significantly different on different architectures, you may need +some `#if/#elif` macros in your include statements. + +### mkerrors.sh + +This script is used to generate the system's various constants. This doesn't +just include the error numbers and error strings, but also the signal numbers +an a wide variety of miscellaneous constants. The constants come from the list +of include files in the `includes_${uname}` variable. A regex then picks out +the desired `#define` statements, and generates the corresponding Go constants. +The error numbers and strings are generated from `#include `, and the +signal numbers and strings are generated from `#include `. All of +these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program, +`_errors.c`, which prints out all the constants. + +To add a constant, add the header that includes it to the appropriate variable. +Then, edit the regex (if necessary) to match the desired constant. Avoid making +the regex too broad to avoid matching unintended constants. + + +## Generated files + +### `zerror_${GOOS}_${GOARCH}.go` + +A file containing all of the system's generated error numbers, error strings, +signal numbers, and constants. Generated by `mkerrors.sh` (see above). + +### `zsyscall_${GOOS}_${GOARCH}.go` + +A file containing all the generated syscalls for a specific GOOS and GOARCH. +Generated by `mksyscall.pl` (see above). + +### `zsysnum_${GOOS}_${GOARCH}.go` + +A list of numeric constants for all the syscall number of the specific GOOS +and GOARCH. Generated by mksysnum (see above). + +### `ztypes_${GOOS}_${GOARCH}.go` + +A file containing Go types for passing into (or returning from) syscalls. +Generated by godefs and the types file (see above). diff --git a/vendor/golang.org/x/sys/unix/asm.s b/vendor/golang.org/x/sys/unix/asm.s deleted file mode 100644 index 8ed2fdb94b..0000000000 --- a/vendor/golang.org/x/sys/unix/asm.s +++ /dev/null @@ -1,10 +0,0 @@ -// 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 !gccgo - -#include "textflag.h" - -TEXT ·use(SB),NOSPLIT,$0 - RET diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s new file mode 100644 index 0000000000..2ea425755e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s @@ -0,0 +1,31 @@ +// 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 linux +// +build mips mipsle +// +build !gccgo + +#include "textflag.h" + +// +// System calls for mips, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s new file mode 100644 index 0000000000..469bfa1003 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s @@ -0,0 +1,29 @@ +// Copyright 2017 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 !gccgo + +#include "textflag.h" + +// +// System call support for ARM, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s index 43ed17a05f..ded8260f3e 100644 --- a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s @@ -10,8 +10,8 @@ // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go // -TEXT ·sysvicall6(SB),NOSPLIT,$0-64 +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 JMP syscall·sysvicall6(SB) -TEXT ·rawSysvicall6(SB),NOSPLIT,$0-64 +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go new file mode 100644 index 0000000000..83b6bceab4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -0,0 +1,195 @@ +// Copyright 2017 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 freebsd + +package unix + +import ( + errorspkg "errors" + "fmt" +) + +// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c + +const ( + // This is the version of CapRights this package understands. See C implementation for parallels. + capRightsGoVersion = CAP_RIGHTS_VERSION_00 + capArSizeMin = CAP_RIGHTS_VERSION_00 + 2 + capArSizeMax = capRightsGoVersion + 2 +) + +var ( + bit2idx = []int{ + -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + } +) + +func capidxbit(right uint64) int { + return int((right >> 57) & 0x1f) +} + +func rightToIndex(right uint64) (int, error) { + idx := capidxbit(right) + if idx < 0 || idx >= len(bit2idx) { + return -2, fmt.Errorf("index for right 0x%x out of range", right) + } + return bit2idx[idx], nil +} + +func caprver(right uint64) int { + return int(right >> 62) +} + +func capver(rights *CapRights) int { + return caprver(rights.Rights[0]) +} + +func caparsize(rights *CapRights) int { + return capver(rights) + 2 +} + +// CapRightsSet sets the permissions in setrights in rights. +func CapRightsSet(rights *CapRights, setrights []uint64) error { + // This is essentially a copy of cap_rights_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errorspkg.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errorspkg.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errorspkg.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch") + } + rights.Rights[i] |= right + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsClear clears the permissions in clearrights from rights. +func CapRightsClear(rights *CapRights, clearrights []uint64) error { + // This is essentially a copy of cap_rights_vclear() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errorspkg.New("bad rights size") + } + + for _, right := range clearrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errorspkg.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errorspkg.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch") + } + rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF) + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsIsSet checks whether all the permissions in setrights are present in rights. +func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) { + // This is essentially a copy of cap_rights_is_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return false, fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return false, errorspkg.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return false, errorspkg.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return false, err + } + if i >= n { + return false, errorspkg.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return false, errorspkg.New("index mismatch") + } + if (rights.Rights[i] & right) != right { + return false, nil + } + } + + return true, nil +} + +func capright(idx uint64, bit uint64) uint64 { + return ((1 << (57 + idx)) | bit) +} + +// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights. +// See man cap_rights_init(3) and rights(4). +func CapRightsInit(rights []uint64) (*CapRights, error) { + var r CapRights + r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0) + r.Rights[1] = capright(1, 0) + + err := CapRightsSet(&r, rights) + if err != nil { + return nil, err + } + return &r, nil +} + +// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights. +// The capability rights on fd can never be increased by CapRightsLimit. +// See man cap_rights_limit(2) and rights(4). +func CapRightsLimit(fd uintptr, rights *CapRights) error { + return capRightsLimit(int(fd), rights) +} + +// CapRightsGet returns a CapRights structure containing the operations permitted on fd. +// See man cap_rights_get(3) and rights(4). +func CapRightsGet(fd uintptr) (*CapRights, error) { + r, err := CapRightsInit(nil) + if err != nil { + return nil, err + } + err = capRightsGet(capRightsGoVersion, int(fd), r) + if err != nil { + return nil, err + } + return r, nil +} diff --git a/vendor/golang.org/x/sys/unix/creds_test.go b/vendor/golang.org/x/sys/unix/creds_test.go index eaae7c367f..7ae3305320 100644 --- a/vendor/golang.org/x/sys/unix/creds_test.go +++ b/vendor/golang.org/x/sys/unix/creds_test.go @@ -21,101 +21,116 @@ import ( // sockets. The SO_PASSCRED socket option is enabled on the sending // socket for this to work. func TestSCMCredentials(t *testing.T) { - fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0) - if err != nil { - t.Fatalf("Socketpair: %v", err) + socketTypeTests := []struct { + socketType int + dataLen int + }{ + { + unix.SOCK_STREAM, + 1, + }, { + unix.SOCK_DGRAM, + 0, + }, } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) - err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1) - if err != nil { - t.Fatalf("SetsockoptInt: %v", err) - } + for _, tt := range socketTypeTests { + fds, err := unix.Socketpair(unix.AF_LOCAL, tt.socketType, 0) + if err != nil { + t.Fatalf("Socketpair: %v", err) + } + defer unix.Close(fds[0]) + defer unix.Close(fds[1]) - srvFile := os.NewFile(uintptr(fds[0]), "server") - defer srvFile.Close() - srv, err := net.FileConn(srvFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer srv.Close() + err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1) + if err != nil { + t.Fatalf("SetsockoptInt: %v", err) + } - cliFile := os.NewFile(uintptr(fds[1]), "client") - defer cliFile.Close() - cli, err := net.FileConn(cliFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer cli.Close() + srvFile := os.NewFile(uintptr(fds[0]), "server") + defer srvFile.Close() + srv, err := net.FileConn(srvFile) + if err != nil { + t.Errorf("FileConn: %v", err) + return + } + defer srv.Close() + + cliFile := os.NewFile(uintptr(fds[1]), "client") + defer cliFile.Close() + cli, err := net.FileConn(cliFile) + if err != nil { + t.Errorf("FileConn: %v", err) + return + } + defer cli.Close() + + var ucred unix.Ucred + if os.Getuid() != 0 { + ucred.Pid = int32(os.Getpid()) + ucred.Uid = 0 + ucred.Gid = 0 + oob := unix.UnixCredentials(&ucred) + _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) + if op, ok := err.(*net.OpError); ok { + err = op.Err + } + if sys, ok := err.(*os.SyscallError); ok { + err = sys.Err + } + if err != syscall.EPERM { + t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err) + } + } - var ucred unix.Ucred - if os.Getuid() != 0 { ucred.Pid = int32(os.Getpid()) - ucred.Uid = 0 - ucred.Gid = 0 + ucred.Uid = uint32(os.Getuid()) + ucred.Gid = uint32(os.Getgid()) oob := unix.UnixCredentials(&ucred) - _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if op, ok := err.(*net.OpError); ok { - err = op.Err + + // On SOCK_STREAM, this is internally going to send a dummy byte + n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) + if err != nil { + t.Fatalf("WriteMsgUnix: %v", err) } - if sys, ok := err.(*os.SyscallError); ok { - err = sys.Err + if n != 0 { + t.Fatalf("WriteMsgUnix n = %d, want 0", n) } - if err != syscall.EPERM { - t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err) + if oobn != len(oob) { + t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob)) } - } - - ucred.Pid = int32(os.Getpid()) - ucred.Uid = uint32(os.Getuid()) - ucred.Gid = uint32(os.Getgid()) - oob := unix.UnixCredentials(&ucred) - - // this is going to send a dummy byte - n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if err != nil { - t.Fatalf("WriteMsgUnix: %v", err) - } - if n != 0 { - t.Fatalf("WriteMsgUnix n = %d, want 0", n) - } - if oobn != len(oob) { - t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob)) - } - oob2 := make([]byte, 10*len(oob)) - n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2) - if err != nil { - t.Fatalf("ReadMsgUnix: %v", err) - } - if flags != 0 { - t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags) - } - if n != 1 { - t.Fatalf("ReadMsgUnix n = %d, want 1 (dummy byte)", n) - } - if oobn2 != oobn { - // without SO_PASSCRED set on the socket, ReadMsgUnix will - // return zero oob bytes - t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn) - } - oob2 = oob2[:oobn2] - if !bytes.Equal(oob, oob2) { - t.Fatal("ReadMsgUnix oob bytes don't match") - } + oob2 := make([]byte, 10*len(oob)) + n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2) + if err != nil { + t.Fatalf("ReadMsgUnix: %v", err) + } + if flags != 0 { + t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags) + } + if n != tt.dataLen { + t.Fatalf("ReadMsgUnix n = %d, want %d", n, tt.dataLen) + } + if oobn2 != oobn { + // without SO_PASSCRED set on the socket, ReadMsgUnix will + // return zero oob bytes + t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn) + } + oob2 = oob2[:oobn2] + if !bytes.Equal(oob, oob2) { + t.Fatal("ReadMsgUnix oob bytes don't match") + } - scm, err := unix.ParseSocketControlMessage(oob2) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - newUcred, err := unix.ParseUnixCredentials(&scm[0]) - if err != nil { - t.Fatalf("ParseUnixCredentials: %v", err) - } - if *newUcred != ucred { - t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred) + scm, err := unix.ParseSocketControlMessage(oob2) + if err != nil { + t.Fatalf("ParseSocketControlMessage: %v", err) + } + newUcred, err := unix.ParseUnixCredentials(&scm[0]) + if err != nil { + t.Fatalf("ParseUnixCredentials: %v", err) + } + if *newUcred != ucred { + t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred) + } } } diff --git a/vendor/golang.org/x/sys/unix/dev_darwin.go b/vendor/golang.org/x/sys/unix/dev_darwin.go new file mode 100644 index 0000000000..7d101d5272 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Darwin's sys/types.h header. + +package unix + +// Major returns the major component of a Darwin device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 24) & 0xff) +} + +// Minor returns the minor component of a Darwin device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffffff) +} + +// Mkdev returns a Darwin device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return uint64((major << 24) | minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_darwin_test.go b/vendor/golang.org/x/sys/unix/dev_darwin_test.go new file mode 100644 index 0000000000..48d0448603 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_darwin_test.go @@ -0,0 +1,49 @@ +// Copyright 2017 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 unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // Most of the device major/minor numbers on Darwin are + // dynamically generated by devfs. These are some well-known + // static numbers. + {"/dev/ttyp0", 4, 0}, + {"/dev/ttys0", 4, 48}, + {"/dev/ptyp0", 5, 0}, + {"/dev/ptyr0", 5, 32}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go new file mode 100644 index 0000000000..c902c39e81 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_linux.go @@ -0,0 +1,42 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + major := uint32((dev & 0x00000000000fff00) >> 8) + major |= uint32((dev & 0xfffff00000000000) >> 32) + return major +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x00000000000000ff) >> 0) + minor |= uint32((dev & 0x00000ffffff00000) >> 12) + return minor +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := uint64((major & 0x00000fff) << 8) + dev |= uint64((major & 0xfffff000) << 32) + dev |= uint64((minor & 0x000000ff) << 0) + dev |= uint64((minor & 0xffffff00) << 12) + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_linux_test.go b/vendor/golang.org/x/sys/unix/dev_linux_test.go new file mode 100644 index 0000000000..6e001f37ae --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_linux_test.go @@ -0,0 +1,51 @@ +// Copyright 2017 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 unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // well known major/minor numbers according to + // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/devices.txt + {"/dev/null", 1, 3}, + {"/dev/zero", 1, 5}, + {"/dev/random", 1, 8}, + {"/dev/full", 1, 7}, + {"/dev/urandom", 1, 9}, + {"/dev/tty", 5, 0}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + + } +} diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd.go b/vendor/golang.org/x/sys/unix/dev_netbsd.go new file mode 100644 index 0000000000..08db58ee3d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_netbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in NetBSD's sys/types.h header. + +package unix + +// Major returns the major component of a NetBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x000fff00) >> 8) +} + +// Minor returns the minor component of a NetBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xfff00000) >> 12) + return minor +} + +// Mkdev returns a NetBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := uint64((major << 8) & 0x000fff00) + dev |= uint64((minor << 12) & 0xfff00000) + dev |= uint64((minor << 0) & 0x000000ff) + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd_test.go b/vendor/golang.org/x/sys/unix/dev_netbsd_test.go new file mode 100644 index 0000000000..c39a80a48e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_netbsd_test.go @@ -0,0 +1,50 @@ +// Copyright 2017 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 unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // well known major/minor numbers according to /dev/MAKEDEV on + // NetBSD 7.0 + {"/dev/null", 2, 2}, + {"/dev/zero", 2, 12}, + {"/dev/ttyp0", 5, 0}, + {"/dev/ttyp1", 5, 1}, + {"/dev/random", 46, 0}, + {"/dev/urandom", 46, 1}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go new file mode 100644 index 0000000000..bd475812b7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -0,0 +1,102 @@ +// 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. + +// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris + +package unix + +import "unsafe" + +// readInt returns the size-bytes unsigned integer in native byte order at offset off. +func readInt(b []byte, off, size uintptr) (u uint64, ok bool) { + if len(b) < int(off+size) { + return 0, false + } + if isBigEndian { + return readIntBE(b[off:], size), true + } + return readIntLE(b[off:], size), true +} + +func readIntBE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[1]) | uint64(b[0])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +func readIntLE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +// ParseDirent parses up to max directory entries in buf, +// appending the names to names. It returns the number of +// bytes consumed from buf, the number of entries added +// to names, and the new names slice. +func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { + origlen := len(buf) + count = 0 + for max != 0 && len(buf) > 0 { + reclen, ok := direntReclen(buf) + if !ok || reclen > uint64(len(buf)) { + return origlen, count, names + } + rec := buf[:reclen] + buf = buf[reclen:] + ino, ok := direntIno(rec) + if !ok { + break + } + if ino == 0 { // File absent in directory. + continue + } + const namoff = uint64(unsafe.Offsetof(Dirent{}.Name)) + namlen, ok := direntNamlen(rec) + if !ok || namoff+namlen > uint64(len(rec)) { + break + } + name := rec[namoff : namoff+namlen] + for i, c := range name { + if c == 0 { + name = name[:i] + break + } + } + // Check for useless names before allocating a string. + if string(name) == "." || string(name) == ".." { + continue + } + max-- + count++ + names = append(names, string(name)) + } + return origlen - len(buf), count, names +} diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go new file mode 100644 index 0000000000..5e9269063f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/endian_big.go @@ -0,0 +1,9 @@ +// 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 ppc64 s390x mips mips64 + +package unix + +const isBigEndian = true diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go new file mode 100644 index 0000000000..085df2d8dd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -0,0 +1,9 @@ +// 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 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le + +package unix + +const isBigEndian = false diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go new file mode 100644 index 0000000000..c56bc8b05e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go @@ -0,0 +1,227 @@ +// Copyright 2017 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. + +// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep +// them here for backwards compatibility. + +package unix + +const ( + IFF_SMART = 0x20 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_IPXIP = 0xf9 + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8030720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8030720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go new file mode 100644 index 0000000000..3e9771175a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go @@ -0,0 +1,227 @@ +// Copyright 2017 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. + +// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep +// them here for backwards compatibility. + +package unix + +const ( + IFF_SMART = 0x20 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_IPXIP = 0xf9 + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8040720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8040720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go new file mode 100644 index 0000000000..856dca3254 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go @@ -0,0 +1,226 @@ +// Copyright 2017 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 unix + +const ( + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + + // missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go + IFF_SMART = 0x20 + IFT_FAITH = 0xf2 + IFT_IPXIP = 0xf9 + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8030720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8030720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/file_unix.go b/vendor/golang.org/x/sys/unix/file_unix.go new file mode 100644 index 0000000000..47f6a83f21 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/file_unix.go @@ -0,0 +1,27 @@ +// Copyright 2017 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 unix + +import ( + "os" + "syscall" +) + +// FIXME: unexported function from os +// syscallMode returns the syscall-specific mode bits from Go's portable mode bits. +func syscallMode(i os.FileMode) (o uint32) { + o |= uint32(i.Perm()) + if i&os.ModeSetuid != 0 { + o |= syscall.S_ISUID + } + if i&os.ModeSetgid != 0 { + o |= syscall.S_ISGID + } + if i&os.ModeSticky != 0 { + o |= syscall.S_ISVTX + } + // No mapping for Go's ModeTemporary (plan9 only). + return +} diff --git a/vendor/golang.org/x/sys/unix/flock.go b/vendor/golang.org/x/sys/unix/flock.go index ce67a59528..2994ce75f2 100644 --- a/vendor/golang.org/x/sys/unix/flock.go +++ b/vendor/golang.org/x/sys/unix/flock.go @@ -1,5 +1,3 @@ -// +build linux darwin freebsd openbsd netbsd dragonfly - // 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. diff --git a/vendor/golang.org/x/sys/unix/flock_linux_32bit.go b/vendor/golang.org/x/sys/unix/flock_linux_32bit.go index 362831c3f7..fc0e50e037 100644 --- a/vendor/golang.org/x/sys/unix/flock_linux_32bit.go +++ b/vendor/golang.org/x/sys/unix/flock_linux_32bit.go @@ -1,4 +1,4 @@ -// +build linux,386 linux,arm +// +build linux,386 linux,arm linux,mips linux,mipsle // Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go new file mode 100644 index 0000000000..56332692c4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go @@ -0,0 +1,20 @@ +// 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 gccgo,linux,sparc64 + +package unix + +import "syscall" + +//extern sysconf +func realSysconf(name int) int64 + +func sysconf(name int) (n int64, err syscall.Errno) { + r := realSysconf(name) + if r < 0 { + return 0, syscall.GetErrno() + } + return r, 0 +} diff --git a/vendor/golang.org/x/sys/unix/linux/Dockerfile b/vendor/golang.org/x/sys/unix/linux/Dockerfile new file mode 100644 index 0000000000..4397143c9d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/linux/Dockerfile @@ -0,0 +1,48 @@ +FROM ubuntu:16.04 + +# Dependencies to get the git sources and go binaries +RUN apt-get update && apt-get install -y \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +# Get the git sources. If not cached, this takes O(5 minutes). +WORKDIR /git +RUN git config --global advice.detachedHead false +# Linux Kernel: Released 19 Feb 2017 +RUN git clone --branch v4.10 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux +# GNU C library: Released 05 Feb 2017 (we should try to get a secure way to clone this) +RUN git clone --branch glibc-2.25 --depth 1 git://sourceware.org/git/glibc.git + +# Get Go 1.8 (https://github.com/docker-library/golang/blob/master/1.8/Dockerfile) +ENV GOLANG_VERSION 1.8 +ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz +ENV GOLANG_DOWNLOAD_SHA256 53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca + +RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ + && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ + && tar -C /usr/local -xzf golang.tar.gz \ + && rm golang.tar.gz + +ENV PATH /usr/local/go/bin:$PATH + +# Linux and Glibc build dependencies +RUN apt-get update && apt-get install -y \ + gawk make python \ + gcc gcc-multilib \ + gettext texinfo \ + && rm -rf /var/lib/apt/lists/* +# Emulator and cross compilers +RUN apt-get update && apt-get install -y \ + qemu \ + gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi \ + gcc-mips-linux-gnu gcc-mips64-linux-gnuabi64 \ + gcc-mips64el-linux-gnuabi64 gcc-mipsel-linux-gnu \ + gcc-powerpc64-linux-gnu gcc-powerpc64le-linux-gnu \ + gcc-s390x-linux-gnu gcc-sparc64-linux-gnu \ + && rm -rf /var/lib/apt/lists/* + +# Let the scripts know they are in the docker environment +ENV GOLANG_SYS_BUILD docker +WORKDIR /build +ENTRYPOINT ["go", "run", "linux/mkall.go", "/git/linux", "/git/glibc"] diff --git a/vendor/golang.org/x/sys/unix/linux/mkall.go b/vendor/golang.org/x/sys/unix/linux/mkall.go new file mode 100644 index 0000000000..429754f162 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/linux/mkall.go @@ -0,0 +1,379 @@ +// Copyright 2017 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. + +// linux/mkall.go - Generates all Linux zsysnum, zsyscall, zerror, and ztype +// files for all 11 linux architectures supported by the go compiler. See +// README.md for more information about the build system. + +// To run it you must have a git checkout of the Linux kernel and glibc. Once +// the appropriate sources are ready, the program is run as: +// go run linux/mkall.go + +// +build ignore + +package main + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "runtime" + "strings" +) + +// These will be paths to the appropriate source directories. +var LinuxDir string +var GlibcDir string + +const TempDir = "/tmp" +const IncludeDir = TempDir + "/include" // To hold our C headers +const BuildDir = TempDir + "/build" // To hold intermediate build files + +const GOOS = "linux" // Only for Linux targets +const BuildArch = "amd64" // Must be built on this architecture +const MinKernel = "2.6.23" // https://golang.org/doc/install#requirements + +type target struct { + GoArch string // Architecture name according to Go + LinuxArch string // Architecture name according to the Linux Kernel + GNUArch string // Architecture name according to GNU tools (https://wiki.debian.org/Multiarch/Tuples) + BigEndian bool // Default Little Endian + SignedChar bool // Is -fsigned-char needed (default no) + Bits int +} + +// List of the 11 Linux targets supported by the go compiler. sparc64 is not +// currently supported, though a port is in progress. +var targets = []target{ + { + GoArch: "386", + LinuxArch: "x86", + GNUArch: "i686-linux-gnu", // Note "i686" not "i386" + Bits: 32, + }, + { + GoArch: "amd64", + LinuxArch: "x86", + GNUArch: "x86_64-linux-gnu", + Bits: 64, + }, + { + GoArch: "arm64", + LinuxArch: "arm64", + GNUArch: "aarch64-linux-gnu", + SignedChar: true, + Bits: 64, + }, + { + GoArch: "arm", + LinuxArch: "arm", + GNUArch: "arm-linux-gnueabi", + Bits: 32, + }, + { + GoArch: "mips", + LinuxArch: "mips", + GNUArch: "mips-linux-gnu", + BigEndian: true, + Bits: 32, + }, + { + GoArch: "mipsle", + LinuxArch: "mips", + GNUArch: "mipsel-linux-gnu", + Bits: 32, + }, + { + GoArch: "mips64", + LinuxArch: "mips", + GNUArch: "mips64-linux-gnuabi64", + BigEndian: true, + Bits: 64, + }, + { + GoArch: "mips64le", + LinuxArch: "mips", + GNUArch: "mips64el-linux-gnuabi64", + Bits: 64, + }, + { + GoArch: "ppc64", + LinuxArch: "powerpc", + GNUArch: "powerpc64-linux-gnu", + BigEndian: true, + Bits: 64, + }, + { + GoArch: "ppc64le", + LinuxArch: "powerpc", + GNUArch: "powerpc64le-linux-gnu", + Bits: 64, + }, + { + GoArch: "s390x", + LinuxArch: "s390", + GNUArch: "s390x-linux-gnu", + BigEndian: true, + SignedChar: true, + Bits: 64, + }, + // { + // GoArch: "sparc64", + // LinuxArch: "sparc", + // GNUArch: "sparc64-linux-gnu", + // BigEndian: true, + // Bits: 64, + // }, +} + +func main() { + if runtime.GOOS != GOOS || runtime.GOARCH != BuildArch { + fmt.Printf("Build system has GOOS_GOARCH = %s_%s, need %s_%s\n", + runtime.GOOS, runtime.GOARCH, GOOS, BuildArch) + return + } + + // Check that we are using the new build system if we should + if os.Getenv("GOLANG_SYS_BUILD") != "docker" { + fmt.Println("In the new build system, mkall.go should not be called directly.") + fmt.Println("See README.md") + return + } + + // Parse the command line options + if len(os.Args) != 3 { + fmt.Println("USAGE: go run linux/mkall.go ") + return + } + LinuxDir = os.Args[1] + GlibcDir = os.Args[2] + + for _, t := range targets { + fmt.Printf("----- GENERATING: %s -----\n", t.GoArch) + if err := t.generateFiles(); err != nil { + fmt.Printf("%v\n***** FAILURE: %s *****\n\n", err, t.GoArch) + } else { + fmt.Printf("----- SUCCESS: %s -----\n\n", t.GoArch) + } + } +} + +// Makes an exec.Cmd with Stderr attached to os.Stderr +func makeCommand(name string, args ...string) *exec.Cmd { + cmd := exec.Command(name, args...) + cmd.Stderr = os.Stderr + return cmd +} + +// Runs the command, pipes output to a formatter, pipes that to an output file. +func (t *target) commandFormatOutput(formatter string, outputFile string, + name string, args ...string) (err error) { + mainCmd := makeCommand(name, args...) + + fmtCmd := makeCommand(formatter) + if formatter == "mkpost" { + fmtCmd = makeCommand("go", "run", "mkpost.go") + // Set GOARCH_TARGET so mkpost knows what GOARCH is.. + fmtCmd.Env = append(os.Environ(), "GOARCH_TARGET="+t.GoArch) + // Set GOARCH to host arch for mkpost, so it can run natively. + for i, s := range fmtCmd.Env { + if strings.HasPrefix(s, "GOARCH=") { + fmtCmd.Env[i] = "GOARCH=" + BuildArch + } + } + } + + // mainCmd | fmtCmd > outputFile + if fmtCmd.Stdin, err = mainCmd.StdoutPipe(); err != nil { + return + } + if fmtCmd.Stdout, err = os.Create(outputFile); err != nil { + return + } + + // Make sure the formatter eventually closes + if err = fmtCmd.Start(); err != nil { + return + } + defer func() { + fmtErr := fmtCmd.Wait() + if err == nil { + err = fmtErr + } + }() + + return mainCmd.Run() +} + +// Generates all the files for a Linux target +func (t *target) generateFiles() error { + // Setup environment variables + os.Setenv("GOOS", GOOS) + os.Setenv("GOARCH", t.GoArch) + + // Get appropriate compiler and emulator (unless on x86) + if t.LinuxArch != "x86" { + // Check/Setup cross compiler + compiler := t.GNUArch + "-gcc" + if _, err := exec.LookPath(compiler); err != nil { + return err + } + os.Setenv("CC", compiler) + + // Check/Setup emulator (usually first component of GNUArch) + qemuArchName := t.GNUArch[:strings.Index(t.GNUArch, "-")] + if t.LinuxArch == "powerpc" { + qemuArchName = t.GoArch + } + os.Setenv("GORUN", "qemu-"+qemuArchName) + } else { + os.Setenv("CC", "gcc") + } + + // Make the include directory and fill it with headers + if err := os.MkdirAll(IncludeDir, os.ModePerm); err != nil { + return err + } + defer os.RemoveAll(IncludeDir) + if err := t.makeHeaders(); err != nil { + return fmt.Errorf("could not make header files: %v", err) + } + fmt.Println("header files generated") + + // Make each of the four files + if err := t.makeZSysnumFile(); err != nil { + return fmt.Errorf("could not make zsysnum file: %v", err) + } + fmt.Println("zsysnum file generated") + + if err := t.makeZSyscallFile(); err != nil { + return fmt.Errorf("could not make zsyscall file: %v", err) + } + fmt.Println("zsyscall file generated") + + if err := t.makeZTypesFile(); err != nil { + return fmt.Errorf("could not make ztypes file: %v", err) + } + fmt.Println("ztypes file generated") + + if err := t.makeZErrorsFile(); err != nil { + return fmt.Errorf("could not make zerrors file: %v", err) + } + fmt.Println("zerrors file generated") + + return nil +} + +// Create the Linux and glibc headers in the include directory. +func (t *target) makeHeaders() error { + // Make the Linux headers we need for this architecture + linuxMake := makeCommand("make", "headers_install", "ARCH="+t.LinuxArch, "INSTALL_HDR_PATH="+TempDir) + linuxMake.Dir = LinuxDir + if err := linuxMake.Run(); err != nil { + return err + } + + // A Temporary build directory for glibc + if err := os.MkdirAll(BuildDir, os.ModePerm); err != nil { + return err + } + defer os.RemoveAll(BuildDir) + + // Make the glibc headers we need for this architecture + confScript := filepath.Join(GlibcDir, "configure") + glibcConf := makeCommand(confScript, "--prefix="+TempDir, "--host="+t.GNUArch, "--enable-kernel="+MinKernel) + glibcConf.Dir = BuildDir + if err := glibcConf.Run(); err != nil { + return err + } + glibcMake := makeCommand("make", "install-headers") + glibcMake.Dir = BuildDir + if err := glibcMake.Run(); err != nil { + return err + } + // We only need an empty stubs file + stubsFile := filepath.Join(IncludeDir, "gnu/stubs.h") + if file, err := os.Create(stubsFile); err != nil { + return err + } else { + file.Close() + } + + return nil +} + +// makes the zsysnum_linux_$GOARCH.go file +func (t *target) makeZSysnumFile() error { + zsysnumFile := fmt.Sprintf("zsysnum_linux_%s.go", t.GoArch) + unistdFile := filepath.Join(IncludeDir, "asm/unistd.h") + + args := append(t.cFlags(), unistdFile) + return t.commandFormatOutput("gofmt", zsysnumFile, "linux/mksysnum.pl", args...) +} + +// makes the zsyscall_linux_$GOARCH.go file +func (t *target) makeZSyscallFile() error { + zsyscallFile := fmt.Sprintf("zsyscall_linux_%s.go", t.GoArch) + // Find the correct architecture syscall file (might end with x.go) + archSyscallFile := fmt.Sprintf("syscall_linux_%s.go", t.GoArch) + if _, err := os.Stat(archSyscallFile); os.IsNotExist(err) { + shortArch := strings.TrimSuffix(t.GoArch, "le") + archSyscallFile = fmt.Sprintf("syscall_linux_%sx.go", shortArch) + } + + args := append(t.mksyscallFlags(), "-tags", "linux,"+t.GoArch, + "syscall_linux.go", archSyscallFile) + return t.commandFormatOutput("gofmt", zsyscallFile, "./mksyscall.pl", args...) +} + +// makes the zerrors_linux_$GOARCH.go file +func (t *target) makeZErrorsFile() error { + zerrorsFile := fmt.Sprintf("zerrors_linux_%s.go", t.GoArch) + + return t.commandFormatOutput("gofmt", zerrorsFile, "./mkerrors.sh", t.cFlags()...) +} + +// makes the ztypes_linux_$GOARCH.go file +func (t *target) makeZTypesFile() error { + ztypesFile := fmt.Sprintf("ztypes_linux_%s.go", t.GoArch) + + args := []string{"tool", "cgo", "-godefs", "--"} + args = append(args, t.cFlags()...) + args = append(args, "linux/types.go") + return t.commandFormatOutput("mkpost", ztypesFile, "go", args...) +} + +// Flags that should be given to gcc and cgo for this target +func (t *target) cFlags() []string { + // Compile statically to avoid cross-architecture dynamic linking. + flags := []string{"-Wall", "-Werror", "-static", "-I" + IncludeDir} + + // Architecture-specific flags + if t.SignedChar { + flags = append(flags, "-fsigned-char") + } + if t.LinuxArch == "x86" { + flags = append(flags, fmt.Sprintf("-m%d", t.Bits)) + } + + return flags +} + +// Flags that should be given to mksyscall for this target +func (t *target) mksyscallFlags() (flags []string) { + if t.Bits == 32 { + if t.BigEndian { + flags = append(flags, "-b32") + } else { + flags = append(flags, "-l32") + } + } + + // This flag menas a 64-bit value should use (even, odd)-pair. + if t.GoArch == "arm" || (t.LinuxArch == "mips" && t.Bits == 32) { + flags = append(flags, "-arm") + } + return +} diff --git a/vendor/golang.org/x/sys/unix/linux/mksysnum.pl b/vendor/golang.org/x/sys/unix/linux/mksysnum.pl new file mode 100755 index 0000000000..63fd800bcb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/linux/mksysnum.pl @@ -0,0 +1,85 @@ +#!/usr/bin/env perl +# 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. + +use strict; + +if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { + print STDERR "GOARCH or GOOS not defined in environment\n"; + exit 1; +} + +# Check that we are using the new build system if we should +if($ENV{'GOLANG_SYS_BUILD'} ne "docker") { + print STDERR "In the new build system, mksysnum should not be called directly.\n"; + print STDERR "See README.md\n"; + exit 1; +} + +my $command = "$0 ". join(' ', @ARGV); + +print < 999){ + # ignore deprecated syscalls that are no longer implemented + # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716 + return; + } + $name =~ y/a-z/A-Z/; + $num = $num + $offset; + print " SYS_$name = $num;\n"; +} + +my $prev; +open(CC, "$ENV{'CC'} -E -dD @ARGV |") || die "can't run $ENV{'CC'}"; +while(){ + if(/^#define __NR_Linux\s+([0-9]+)/){ + # mips/mips64: extract offset + $offset = $1; + } + elsif(/^#define __NR(\w*)_SYSCALL_BASE\s+([0-9]+)/){ + # arm: extract offset + $offset = $1; + } + elsif(/^#define __NR_syscalls\s+/) { + # ignore redefinitions of __NR_syscalls + } + elsif(/^#define __NR_(\w*)Linux_syscalls\s+/) { + # mips/mips64: ignore definitions about the number of syscalls + } + elsif(/^#define __NR_(\w+)\s+([0-9]+)/){ + $prev = $2; + fmt($1, $2); + } + elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){ + $prev = $2; + fmt($1, $2); + } + elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){ + fmt($1, $prev+$2) + } + elsif(/^#define __NR_(\w+)\s+\(__NR_Linux \+ ([0-9]+)/){ + fmt($1, $2); + } + elsif(/^#define __NR_(\w+)\s+\(__NR_SYSCALL_BASE \+ ([0-9]+)/){ + fmt($1, $2); + } +} + +print < +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// On mips64, the glibc stat and kernel stat do not agree +#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) + +// Use the stat defined by the kernel with a few modifications. These are: +// * The time fields (like st_atime and st_atimensec) use the timespec +// struct (like st_atim) for consitancy with the glibc fields. +// * The padding fields get different names to not break compatibility. +// * st_blocks is signed, again for compatibility. +struct stat { + unsigned int st_dev; + unsigned int st_pad1[3]; // Reserved for st_dev expansion + + unsigned long st_ino; + + mode_t st_mode; + __u32 st_nlink; + + uid_t st_uid; + gid_t st_gid; + + unsigned int st_rdev; + unsigned int st_pad2[3]; // Reserved for st_rdev expansion + + off_t st_size; + + // These are declared as speperate fields in the kernel. Here we use + // the timespec struct for consistancy with the other stat structs. + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + + unsigned int st_blksize; + unsigned int st_pad4; + + long st_blocks; +}; + +// These are needed because we do not include fcntl.h or sys/types.h +#include +#include + +#else + +// Use the stat defined by glibc +#include +#include + +#endif + +// Certain constants and structs are missing from the fs/crypto UAPI +#define FS_MAX_KEY_SIZE 64 +struct fscrypt_key { + __u32 mode; + __u8 raw[FS_MAX_KEY_SIZE]; + __u32 size; +}; + +#ifdef TCSETS2 +// On systems that have "struct termios2" use this as type Termios. +typedef struct termios2 termios_t; +#else +typedef struct termios termios_t; +#endif + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_ll s5; + struct sockaddr_nl s6; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +// copied from /usr/include/bluetooth/hci.h +struct sockaddr_hci { + sa_family_t hci_family; + unsigned short hci_dev; + unsigned short hci_channel; +};; + +// copied from /usr/include/linux/un.h +struct my_sockaddr_un { + sa_family_t sun_family; +#if defined(__ARM_EABI__) || defined(__powerpc64__) + // on ARM char is by default unsigned + signed char sun_path[108]; +#else + char sun_path[108]; +#endif +}; + +#ifdef __ARM_EABI__ +typedef struct user_regs PtraceRegs; +#elif defined(__aarch64__) +typedef struct user_pt_regs PtraceRegs; +#elif defined(__mips__) || defined(__powerpc64__) +typedef struct pt_regs PtraceRegs; +#elif defined(__s390x__) +typedef struct _user_regs_struct PtraceRegs; +#elif defined(__sparc__) +#include +typedef struct pt_regs PtraceRegs; +#else +typedef struct user_regs_struct PtraceRegs; +#endif + +#if defined(__s390x__) +typedef struct _user_psw_struct ptracePsw; +typedef struct _user_fpregs_struct ptraceFpregs; +typedef struct _user_per_struct ptracePer; +#else +typedef struct {} ptracePsw; +typedef struct {} ptraceFpregs; +typedef struct {} ptracePer; +#endif + +// The real epoll_event is a union, and godefs doesn't handle it well. +struct my_epoll_event { + uint32_t events; +#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32) + // padding is not specified in linux/eventpoll.h but added to conform to the + // alignment requirements of EABI + int32_t padFd; +#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) + int32_t _padFd; +#endif + int32_t fd; + int32_t pad; +}; + +*/ +import "C" + +// Machine characteristics; for internal use. + +const ( + sizeofPtr = C.sizeofPtr + sizeofShort = C.sizeof_short + sizeofInt = C.sizeof_int + sizeofLong = C.sizeof_long + sizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +type Timex C.struct_timex + +type Time_t C.time_t + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Dirent C.struct_dirent + +type Fsid C.fsid_t + +type Flock_t C.struct_flock + +// Filesystem Encryption + +type FscryptPolicy C.struct_fscrypt_policy + +type FscryptKey C.struct_fscrypt_key + +// Structure for Keyctl + +type KeyctlDHParams C.struct_keyctl_dh_params + +// Advice to Fadvise + +const ( + FADV_NORMAL = C.POSIX_FADV_NORMAL + FADV_RANDOM = C.POSIX_FADV_RANDOM + FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL + FADV_WILLNEED = C.POSIX_FADV_WILLNEED + FADV_DONTNEED = C.POSIX_FADV_DONTNEED + FADV_NOREUSE = C.POSIX_FADV_NOREUSE +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_my_sockaddr_un + +type RawSockaddrLinklayer C.struct_sockaddr_ll + +type RawSockaddrNetlink C.struct_sockaddr_nl + +type RawSockaddrHCI C.struct_sockaddr_hci + +type RawSockaddrCAN C.struct_sockaddr_can + +type RawSockaddrALG C.struct_sockaddr_alg + +type RawSockaddrVM C.struct_sockaddr_vm + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPMreqn C.struct_ip_mreqn + +type IPv6Mreq C.struct_ipv6_mreq + +type PacketMreq C.struct_packet_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet4Pktinfo C.struct_in_pktinfo + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +type Ucred C.struct_ucred + +type TCPInfo C.struct_tcp_info + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll + SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl + SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci + SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can + SizeofSockaddrALG = C.sizeof_struct_sockaddr_alg + SizeofSockaddrVM = C.sizeof_struct_sockaddr_vm + SizeofLinger = C.sizeof_struct_linger + SizeofIovec = C.sizeof_struct_iovec + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPMreqn = C.sizeof_struct_ip_mreqn + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofPacketMreq = C.sizeof_struct_packet_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter + SizeofUcred = C.sizeof_struct_ucred + SizeofTCPInfo = C.sizeof_struct_tcp_info +) + +// Netlink routing and interface messages + +const ( + IFA_UNSPEC = C.IFA_UNSPEC + IFA_ADDRESS = C.IFA_ADDRESS + IFA_LOCAL = C.IFA_LOCAL + IFA_LABEL = C.IFA_LABEL + IFA_BROADCAST = C.IFA_BROADCAST + IFA_ANYCAST = C.IFA_ANYCAST + IFA_CACHEINFO = C.IFA_CACHEINFO + IFA_MULTICAST = C.IFA_MULTICAST + IFLA_UNSPEC = C.IFLA_UNSPEC + IFLA_ADDRESS = C.IFLA_ADDRESS + IFLA_BROADCAST = C.IFLA_BROADCAST + IFLA_IFNAME = C.IFLA_IFNAME + IFLA_MTU = C.IFLA_MTU + IFLA_LINK = C.IFLA_LINK + IFLA_QDISC = C.IFLA_QDISC + IFLA_STATS = C.IFLA_STATS + IFLA_COST = C.IFLA_COST + IFLA_PRIORITY = C.IFLA_PRIORITY + IFLA_MASTER = C.IFLA_MASTER + IFLA_WIRELESS = C.IFLA_WIRELESS + IFLA_PROTINFO = C.IFLA_PROTINFO + IFLA_TXQLEN = C.IFLA_TXQLEN + IFLA_MAP = C.IFLA_MAP + IFLA_WEIGHT = C.IFLA_WEIGHT + IFLA_OPERSTATE = C.IFLA_OPERSTATE + IFLA_LINKMODE = C.IFLA_LINKMODE + IFLA_LINKINFO = C.IFLA_LINKINFO + IFLA_NET_NS_PID = C.IFLA_NET_NS_PID + IFLA_IFALIAS = C.IFLA_IFALIAS + IFLA_MAX = C.IFLA_MAX + RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE + RT_SCOPE_SITE = C.RT_SCOPE_SITE + RT_SCOPE_LINK = C.RT_SCOPE_LINK + RT_SCOPE_HOST = C.RT_SCOPE_HOST + RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE + RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC + RT_TABLE_COMPAT = C.RT_TABLE_COMPAT + RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT + RT_TABLE_MAIN = C.RT_TABLE_MAIN + RT_TABLE_LOCAL = C.RT_TABLE_LOCAL + RT_TABLE_MAX = C.RT_TABLE_MAX + RTA_UNSPEC = C.RTA_UNSPEC + RTA_DST = C.RTA_DST + RTA_SRC = C.RTA_SRC + RTA_IIF = C.RTA_IIF + RTA_OIF = C.RTA_OIF + RTA_GATEWAY = C.RTA_GATEWAY + RTA_PRIORITY = C.RTA_PRIORITY + RTA_PREFSRC = C.RTA_PREFSRC + RTA_METRICS = C.RTA_METRICS + RTA_MULTIPATH = C.RTA_MULTIPATH + RTA_FLOW = C.RTA_FLOW + RTA_CACHEINFO = C.RTA_CACHEINFO + RTA_TABLE = C.RTA_TABLE + RTN_UNSPEC = C.RTN_UNSPEC + RTN_UNICAST = C.RTN_UNICAST + RTN_LOCAL = C.RTN_LOCAL + RTN_BROADCAST = C.RTN_BROADCAST + RTN_ANYCAST = C.RTN_ANYCAST + RTN_MULTICAST = C.RTN_MULTICAST + RTN_BLACKHOLE = C.RTN_BLACKHOLE + RTN_UNREACHABLE = C.RTN_UNREACHABLE + RTN_PROHIBIT = C.RTN_PROHIBIT + RTN_THROW = C.RTN_THROW + RTN_NAT = C.RTN_NAT + RTN_XRESOLVE = C.RTN_XRESOLVE + RTNLGRP_NONE = C.RTNLGRP_NONE + RTNLGRP_LINK = C.RTNLGRP_LINK + RTNLGRP_NOTIFY = C.RTNLGRP_NOTIFY + RTNLGRP_NEIGH = C.RTNLGRP_NEIGH + RTNLGRP_TC = C.RTNLGRP_TC + RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR + RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE + RTNLGRP_IPV4_ROUTE = C.RTNLGRP_IPV4_ROUTE + RTNLGRP_IPV4_RULE = C.RTNLGRP_IPV4_RULE + RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR + RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE + RTNLGRP_IPV6_ROUTE = C.RTNLGRP_IPV6_ROUTE + RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO + RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX + RTNLGRP_IPV6_RULE = C.RTNLGRP_IPV6_RULE + RTNLGRP_ND_USEROPT = C.RTNLGRP_ND_USEROPT + SizeofNlMsghdr = C.sizeof_struct_nlmsghdr + SizeofNlMsgerr = C.sizeof_struct_nlmsgerr + SizeofRtGenmsg = C.sizeof_struct_rtgenmsg + SizeofNlAttr = C.sizeof_struct_nlattr + SizeofRtAttr = C.sizeof_struct_rtattr + SizeofIfInfomsg = C.sizeof_struct_ifinfomsg + SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg + SizeofRtMsg = C.sizeof_struct_rtmsg + SizeofRtNexthop = C.sizeof_struct_rtnexthop +) + +type NlMsghdr C.struct_nlmsghdr + +type NlMsgerr C.struct_nlmsgerr + +type RtGenmsg C.struct_rtgenmsg + +type NlAttr C.struct_nlattr + +type RtAttr C.struct_rtattr + +type IfInfomsg C.struct_ifinfomsg + +type IfAddrmsg C.struct_ifaddrmsg + +type RtMsg C.struct_rtmsg + +type RtNexthop C.struct_rtnexthop + +// Linux socket filter + +const ( + SizeofSockFilter = C.sizeof_struct_sock_filter + SizeofSockFprog = C.sizeof_struct_sock_fprog +) + +type SockFilter C.struct_sock_filter + +type SockFprog C.struct_sock_fprog + +// Inotify + +type InotifyEvent C.struct_inotify_event + +const SizeofInotifyEvent = C.sizeof_struct_inotify_event + +// Ptrace + +// Register structures +type PtraceRegs C.PtraceRegs + +// Structures contained in PtraceRegs on s390x (exported by mkpost.go) +type PtracePsw C.ptracePsw + +type PtraceFpregs C.ptraceFpregs + +type PtracePer C.ptracePer + +// Misc + +type FdSet C.fd_set + +type Sysinfo_t C.struct_sysinfo + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +type EpollEvent C.struct_my_epoll_event + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +type PollFd C.struct_pollfd + +const ( + POLLIN = C.POLLIN + POLLPRI = C.POLLPRI + POLLOUT = C.POLLOUT + POLLRDHUP = C.POLLRDHUP + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLNVAL = C.POLLNVAL +) + +type Sigset_t C.sigset_t + +const RNDGETENTCNT = C.RNDGETENTCNT + +const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP + +// sysconf information + +const _SC_PAGESIZE = C._SC_PAGESIZE + +// Terminal handling + +type Termios C.termios_t + +type Winsize C.struct_winsize + +// Taskstats + +type Taskstats C.struct_taskstats + +const ( + TASKSTATS_CMD_UNSPEC = C.TASKSTATS_CMD_UNSPEC + TASKSTATS_CMD_GET = C.TASKSTATS_CMD_GET + TASKSTATS_CMD_NEW = C.TASKSTATS_CMD_NEW + TASKSTATS_TYPE_UNSPEC = C.TASKSTATS_TYPE_UNSPEC + TASKSTATS_TYPE_PID = C.TASKSTATS_TYPE_PID + TASKSTATS_TYPE_TGID = C.TASKSTATS_TYPE_TGID + TASKSTATS_TYPE_STATS = C.TASKSTATS_TYPE_STATS + TASKSTATS_TYPE_AGGR_PID = C.TASKSTATS_TYPE_AGGR_PID + TASKSTATS_TYPE_AGGR_TGID = C.TASKSTATS_TYPE_AGGR_TGID + TASKSTATS_TYPE_NULL = C.TASKSTATS_TYPE_NULL + TASKSTATS_CMD_ATTR_UNSPEC = C.TASKSTATS_CMD_ATTR_UNSPEC + TASKSTATS_CMD_ATTR_PID = C.TASKSTATS_CMD_ATTR_PID + TASKSTATS_CMD_ATTR_TGID = C.TASKSTATS_CMD_ATTR_TGID + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK +) + +// Generic netlink + +type Genlmsghdr C.struct_genlmsghdr + +const ( + CTRL_CMD_UNSPEC = C.CTRL_CMD_UNSPEC + CTRL_CMD_NEWFAMILY = C.CTRL_CMD_NEWFAMILY + CTRL_CMD_DELFAMILY = C.CTRL_CMD_DELFAMILY + CTRL_CMD_GETFAMILY = C.CTRL_CMD_GETFAMILY + CTRL_CMD_NEWOPS = C.CTRL_CMD_NEWOPS + CTRL_CMD_DELOPS = C.CTRL_CMD_DELOPS + CTRL_CMD_GETOPS = C.CTRL_CMD_GETOPS + CTRL_CMD_NEWMCAST_GRP = C.CTRL_CMD_NEWMCAST_GRP + CTRL_CMD_DELMCAST_GRP = C.CTRL_CMD_DELMCAST_GRP + CTRL_CMD_GETMCAST_GRP = C.CTRL_CMD_GETMCAST_GRP + CTRL_ATTR_UNSPEC = C.CTRL_ATTR_UNSPEC + CTRL_ATTR_FAMILY_ID = C.CTRL_ATTR_FAMILY_ID + CTRL_ATTR_FAMILY_NAME = C.CTRL_ATTR_FAMILY_NAME + CTRL_ATTR_VERSION = C.CTRL_ATTR_VERSION + CTRL_ATTR_HDRSIZE = C.CTRL_ATTR_HDRSIZE + CTRL_ATTR_MAXATTR = C.CTRL_ATTR_MAXATTR + CTRL_ATTR_OPS = C.CTRL_ATTR_OPS + CTRL_ATTR_MCAST_GROUPS = C.CTRL_ATTR_MCAST_GROUPS + CTRL_ATTR_OP_UNSPEC = C.CTRL_ATTR_OP_UNSPEC + CTRL_ATTR_OP_ID = C.CTRL_ATTR_OP_ID + CTRL_ATTR_OP_FLAGS = C.CTRL_ATTR_OP_FLAGS + CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC + CTRL_ATTR_MCAST_GRP_NAME = C.CTRL_ATTR_MCAST_GRP_NAME + CTRL_ATTR_MCAST_GRP_ID = C.CTRL_ATTR_MCAST_GRP_ID +) diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index 3e224c57e2..c3a0809268 100755 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -3,75 +3,9 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. -# The unix package provides access to the raw system call -# interface of the underlying operating system. Porting Go to -# a new architecture/operating system combination requires -# some manual effort, though there are tools that automate -# much of the process. The auto-generated files have names -# beginning with z. -# -# This script runs or (given -n) prints suggested commands to generate z files -# for the current system. Running those commands is not automatic. -# This script is documentation more than anything else. -# -# * asm_${GOOS}_${GOARCH}.s -# -# This hand-written assembly file implements system call dispatch. -# There are three entry points: -# -# func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr); -# func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr); -# func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr); -# -# The first and second are the standard ones; they differ only in -# how many arguments can be passed to the kernel. -# The third is for low-level use by the ForkExec wrapper; -# unlike the first two, it does not call into the scheduler to -# let it know that a system call is running. -# -# * syscall_${GOOS}.go -# -# This hand-written Go file implements system calls that need -# special handling and lists "//sys" comments giving prototypes -# for ones that can be auto-generated. Mksyscall reads those -# comments to generate the stubs. -# -# * syscall_${GOOS}_${GOARCH}.go -# -# Same as syscall_${GOOS}.go except that it contains code specific -# to ${GOOS} on one particular architecture. -# -# * types_${GOOS}.c -# -# This hand-written C file includes standard C headers and then -# creates typedef or enum names beginning with a dollar sign -# (use of $ in variable names is a gcc extension). The hardest -# part about preparing this file is figuring out which headers to -# include and which symbols need to be #defined to get the -# actual data structures that pass through to the kernel system calls. -# Some C libraries present alternate versions for binary compatibility -# and translate them on the way in and out of system calls, but -# there is almost always a #define that can get the real ones. -# See types_darwin.c and types_linux.c for examples. -# -# * zerror_${GOOS}_${GOARCH}.go -# -# This machine-generated file defines the system's error numbers, -# error strings, and signal numbers. The generator is "mkerrors.sh". -# Usually no arguments are needed, but mkerrors.sh will pass its -# arguments on to godefs. -# -# * zsyscall_${GOOS}_${GOARCH}.go -# -# Generated by mksyscall.pl; see syscall_${GOOS}.go above. -# -# * zsysnum_${GOOS}_${GOARCH}.go -# -# Generated by mksysnum_${GOOS}. -# -# * ztypes_${GOOS}_${GOARCH}.go -# -# Generated by godefs; see types_${GOOS}.c above. +# This script runs or (given -n) prints suggested commands to generate files for +# the Architecture/OS specified by the GOARCH and GOOS environment variables. +# See README.md for more information about how the build system works. GOOSARCH="${GOOS}_${GOARCH}" @@ -84,11 +18,14 @@ zsysctl="zsysctl_$GOOSARCH.go" mksysnum= mktypes= run="sh" +cmd="" case "$1" in -syscalls) for i in zsyscall*go do + # Run the command line that appears in the first line + # of the generated file to regenerate it. sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i rm _$i done @@ -96,6 +33,7 @@ case "$1" in ;; -n) run="cat" + cmd="echo" shift esac @@ -107,6 +45,14 @@ case "$#" in exit 2 esac +if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then + # Use then new build system + # Files generated through docker (use $cmd so you can Ctl-C the build or run) + $cmd docker build --tag generate:$GOOS $GOOS + $cmd docker run --interactive --tty --volume $(dirname "$(readlink -f "$0")"):/build generate:$GOOS + exit +fi + GOOSARCH_in=syscall_$GOOSARCH.go case "$GOOSARCH" in _* | *_ | _) @@ -126,7 +72,7 @@ darwin_amd64) ;; darwin_arm) mkerrors="$mkerrors" - mksysnum="./mksysnum_darwin.pl /usr/include/sys/syscall.h" + mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; darwin_arm64) @@ -162,67 +108,16 @@ freebsd_arm) mksyscall="./mksyscall.pl -l32 -arm" mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" # Let the type of C char be signed for making the bare syscall - # API consistent across over platforms. - mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" - ;; -linux_386) - mkerrors="$mkerrors -m32" - mksyscall="./mksyscall.pl -l32" - mksysnum="./mksysnum_linux.pl /usr/include/asm/unistd_32.h" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - ;; -linux_amd64) - unistd_h=$(ls -1 /usr/include/asm/unistd_64.h /usr/include/x86_64-linux-gnu/asm/unistd_64.h 2>/dev/null | head -1) - if [ "$unistd_h" = "" ]; then - echo >&2 cannot find unistd_64.h - exit 1 - fi - mkerrors="$mkerrors -m64" - mksysnum="./mksysnum_linux.pl $unistd_h" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - ;; -linux_arm) - mkerrors="$mkerrors" - mksyscall="./mksyscall.pl -l32 -arm" - mksysnum="curl -s 'http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/arch/arm/include/uapi/asm/unistd.h' | ./mksysnum_linux.pl -" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - ;; -linux_arm64) - unistd_h=$(ls -1 /usr/include/asm/unistd.h /usr/include/asm-generic/unistd.h 2>/dev/null | head -1) - if [ "$unistd_h" = "" ]; then - echo >&2 cannot find unistd_64.h - exit 1 - fi - mksysnum="./mksysnum_linux.pl $unistd_h" - # Let the type of C char be signed for making the bare syscall - # API consistent across over platforms. + # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; -linux_ppc64) - GOOSARCH_in=syscall_linux_ppc64x.go - unistd_h=/usr/include/asm/unistd.h +linux_sparc64) + GOOSARCH_in=syscall_linux_sparc64.go + unistd_h=/usr/include/sparc64-linux-gnu/asm/unistd.h mkerrors="$mkerrors -m64" mksysnum="./mksysnum_linux.pl $unistd_h" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; -linux_ppc64le) - GOOSARCH_in=syscall_linux_ppc64x.go - unistd_h=/usr/include/powerpc64le-linux-gnu/asm/unistd.h - mkerrors="$mkerrors -m64" - mksysnum="./mksysnum_linux.pl $unistd_h" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - ;; -linux_s390x) - GOOSARCH_in=syscall_linux_s390x.go - unistd_h=/usr/include/asm/unistd.h - mkerrors="$mkerrors -m64" - mksysnum="./mksysnum_linux.pl $unistd_h" - # Let the type of C char be signed to make the bare sys - # API more consistent between platforms. - # This is a deliberate departure from the way the syscall - # package generates its version of the types file. - mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" - ;; netbsd_386) mkerrors="$mkerrors -m32" mksyscall="./mksyscall.pl -l32 -netbsd" @@ -235,6 +130,14 @@ netbsd_amd64) mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; +netbsd_arm) + mkerrors="$mkerrors" + mksyscall="./mksyscall.pl -l32 -netbsd -arm" + mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; openbsd_386) mkerrors="$mkerrors -m32" mksyscall="./mksyscall.pl -l32 -openbsd" @@ -251,6 +154,16 @@ openbsd_amd64) mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; +openbsd_arm) + mkerrors="$mkerrors" + mksyscall="./mksyscall.pl -l32 -openbsd -arm" + mksysctl="./mksysctl_openbsd.pl" + zsysctl="zsysctl_openbsd.go" + mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; solaris_amd64) mksyscall="./mksyscall_solaris.pl" mkerrors="$mkerrors -m64" @@ -273,13 +186,12 @@ esac syscall_goos="syscall_bsd.go $syscall_goos" ;; esac - if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi + if [ -n "$mksyscall" ]; then echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi ;; esac if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi if [ -n "$mktypes" ]; then - echo "echo // +build $GOARCH,$GOOS > ztypes_$GOOSARCH.go"; - echo "$mktypes types_$GOOS.go | go run mkpost.go >>ztypes_$GOOSARCH.go"; + echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi ) | $run diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index c40d788c4a..2c434f7ae7 100755 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -16,6 +16,15 @@ if test -z "$GOARCH" -o -z "$GOOS"; then exit 1 fi +# Check that we are using the new build system if we should +if [[ "$GOOS" -eq "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then + if [[ "$GOLANG_SYS_BUILD" -ne "docker" ]]; then + echo 1>&2 "In the new build system, mkerrors should not be called directly." + echo 1>&2 "See README.md" + exit 1 + fi +fi + CC=${CC:-cc} if [[ "$GOOS" -eq "solaris" ]]; then @@ -36,6 +45,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -66,6 +76,7 @@ includes_DragonFly=' ' includes_FreeBSD=' +#include #include #include #include @@ -102,8 +113,39 @@ includes_Linux=' #endif #define _GNU_SOURCE +// is broken on powerpc64, as it fails to include definitions of +// these structures. We just include them copied from . +#if defined(__powerpc__) +struct sgttyb { + char sg_ispeed; + char sg_ospeed; + char sg_erase; + char sg_kill; + short sg_flags; +}; + +struct tchars { + char t_intrc; + char t_quitc; + char t_startc; + char t_stopc; + char t_eofc; + char t_brkc; +}; + +struct ltchars { + char t_suspc; + char t_dsuspc; + char t_rprntc; + char t_flushc; + char t_werasc; + char t_lnextc; +}; +#endif + #include #include +#include #include #include #include @@ -113,20 +155,34 @@ includes_Linux=' #include #include #include +#include #include +#include #include #include #include #include #include +#include #include +#include +#include #include +#include +#include #include #include #include #include +#include +#include #include #include +#include +#include +#include +#include +#include #include #include @@ -141,6 +197,21 @@ includes_Linux=' #ifndef PTRACE_SETREGS #define PTRACE_SETREGS 0xd #endif + +#ifndef SOL_NETLINK +#define SOL_NETLINK 270 +#endif + +#ifdef SOL_BLUETOOTH +// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h +// but it is already in bluetooth_linux.go +#undef SOL_BLUETOOTH +#endif + +// Certain constants are missing from the fs/crypto UAPI +#define FS_KEY_DESC_PREFIX "fscrypt:" +#define FS_KEY_DESC_PREFIX_SIZE 8 +#define FS_MAX_KEY_SIZE 64 ' includes_NetBSD=' @@ -304,15 +375,16 @@ ccflags="$@" $2 ~ /^IN_/ || $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^FALLOC_/ || $2 == "ICMPV6_FILTER" || $2 == "SOMAXCONN" || $2 == "NAME_MAX" || $2 == "IFNAMSIZ" || $2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ || $2 ~ /^SYSCTL_VERS/ || - $2 ~ /^(MS|MNT)_/ || + $2 ~ /^(MS|MNT|UMOUNT)_/ || $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || - $2 ~ /^(O|F|FD|NAME|S|PTRACE|PT)_/ || + $2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ || $2 ~ /^LINUX_REBOOT_CMD_/ || $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || $2 !~ "NLA_TYPE_MASK" && @@ -326,14 +398,29 @@ ccflags="$@" $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ || $2 ~ /^BIOC/ || $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ || - $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|NOFILE|STACK)|RLIM_INFINITY/ || + $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || $2 ~ /^CLONE_[A-Z_]+/ || $2 !~ /^(BPF_TIMEVAL)$/ && $2 ~ /^(BPF|DLT)_/ || $2 ~ /^CLOCK_/ || + $2 ~ /^CAN_/ || + $2 ~ /^CAP_/ || + $2 ~ /^ALG_/ || + $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ || + $2 ~ /^GRND_/ || + $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || + $2 ~ /^KEYCTL_/ || + $2 ~ /^PERF_EVENT_IOC_/ || + $2 ~ /^SECCOMP_MODE_/ || + $2 ~ /^SPLICE_/ || + $2 ~ /^(VM|VMADDR)_/ || + $2 ~ /^(TASKSTATS|TS)_/ || + $2 ~ /^GENL_/ || + $2 ~ /^XATTR_(CREATE|REPLACE)/ || $2 !~ "WMESGLEN" && - $2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)} + $2 ~ /^W[A-Z0-9]+$/ || + $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} $2 ~ /^__WCOREFLAG$/ {next} $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} @@ -368,7 +455,7 @@ echo '#include ' | $CC -x c - -E -dM $ccflags | sort >_signal.grep echo '// mkerrors.sh' "$@" -echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT' +echo '// Code generated by the command above; see README.md. DO NOT EDIT.' echo echo "// +build ${GOARCH},${GOOS}" echo @@ -430,7 +517,7 @@ intcmp(const void *a, const void *b) int main(void) { - int i, j, e; + int i, e; char buf[1024], *p; printf("\n\n// Error table\n"); @@ -447,7 +534,7 @@ main(void) printf("\t%d: \"%s\",\n", e, buf); } printf("}\n\n"); - + printf("\n\n// Signal table\n"); printf("var signals = [...]string {\n"); qsort(signals, nelem(signals), sizeof signals[0], intcmp); diff --git a/vendor/golang.org/x/sys/unix/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go index ed50d902af..d3ff659bb3 100644 --- a/vendor/golang.org/x/sys/unix/mkpost.go +++ b/vendor/golang.org/x/sys/unix/mkpost.go @@ -8,10 +8,11 @@ // modify the generated types. It is used to clean up // the sys API in an architecture specific manner. // -// mkpost is run after cgo -godefs by mkall.sh. +// mkpost is run after cgo -godefs; see README.md. package main import ( + "bytes" "fmt" "go/format" "io/ioutil" @@ -21,42 +22,67 @@ import ( ) func main() { + // Get the OS and architecture (using GOARCH_TARGET if it exists) + goos := os.Getenv("GOOS") + goarch := os.Getenv("GOARCH_TARGET") + if goarch == "" { + goarch = os.Getenv("GOARCH") + } + // Check that we are using the new build system if we should be. + if goos == "linux" && goarch != "sparc64" { + if os.Getenv("GOLANG_SYS_BUILD") != "docker" { + os.Stderr.WriteString("In the new build system, mkpost should not be called directly.\n") + os.Stderr.WriteString("See README.md\n") + os.Exit(1) + } + } + b, err := ioutil.ReadAll(os.Stdin) if err != nil { log.Fatal(err) } - s := string(b) - goarch := os.Getenv("GOARCH") - goos := os.Getenv("GOOS") - if goarch == "s390x" && goos == "linux" { - // Export the types of PtraceRegs fields. - re := regexp.MustCompile("ptrace(Psw|Fpregs|Per)") - s = re.ReplaceAllString(s, "Ptrace$1") + // If we have empty Ptrace structs, we should delete them. Only s390x emits + // nonempty Ptrace structs. + ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`) + b = ptraceRexexp.ReplaceAll(b, nil) - // Replace padding fields inserted by cgo with blank identifiers. - re = regexp.MustCompile("Pad_cgo[A-Za-z0-9_]*") - s = re.ReplaceAllString(s, "_") + // Replace the control_regs union with a blank identifier for now. + controlRegsRegex := regexp.MustCompile(`(Control_regs)\s+\[0\]uint64`) + b = controlRegsRegex.ReplaceAll(b, []byte("_ [0]uint64")) - // Replace other unwanted fields with blank identifiers. - re = regexp.MustCompile("X_[A-Za-z0-9_]*") - s = re.ReplaceAllString(s, "_") + // Remove fields that are added by glibc + // Note that this is unstable as the identifers are private. + removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`) + b = removeFieldsRegex.ReplaceAll(b, []byte("_")) - // Replace the control_regs union with a blank identifier for now. - re = regexp.MustCompile("(Control_regs)\\s+\\[0\\]uint64") - s = re.ReplaceAllString(s, "_ [0]uint64") + // We refuse to export private fields on s390x + if goarch == "s390x" && goos == "linux" { + // Remove cgo padding fields + removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`) + b = removeFieldsRegex.ReplaceAll(b, []byte("_")) + + // Remove padding, hidden, or unused fields + removeFieldsRegex = regexp.MustCompile(`X_\S+`) + b = removeFieldsRegex.ReplaceAll(b, []byte("_")) } + // Remove the first line of warning from cgo + b = b[bytes.IndexByte(b, '\n')+1:] + // Modify the command in the header to include: + // mkpost, our own warning, and a build tag. + replacement := fmt.Sprintf(`$1 | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build %s,%s`, goarch, goos) + cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`) + b = cgoCommandRegex.ReplaceAll(b, []byte(replacement)) + // gofmt - b, err = format.Source([]byte(s)) + b, err = format.Source(b) if err != nil { log.Fatal(err) } - // Append this command to the header to show where the new file - // came from. - re := regexp.MustCompile("(cgo -godefs [a-zA-Z0-9_]+\\.go.*)") - b = re.ReplaceAll(b, []byte("$1 | go run mkpost.go")) - - fmt.Printf("%s", b) + os.Stdout.Write(b) } diff --git a/vendor/golang.org/x/sys/unix/mksyscall.pl b/vendor/golang.org/x/sys/unix/mksyscall.pl index b1e7766dae..fb929b4ce1 100755 --- a/vendor/golang.org/x/sys/unix/mksyscall.pl +++ b/vendor/golang.org/x/sys/unix/mksyscall.pl @@ -29,6 +29,7 @@ my $netbsd = 0; my $dragonfly = 0; my $arm = 0; # 64-bit value should use (even, odd)-pair +my $tags = ""; # build tags if($ARGV[0] eq "-b32") { $_32bit = "big-endian"; @@ -57,17 +58,27 @@ $arm = 1; shift; } +if($ARGV[0] eq "-tags") { + shift; + $tags = $ARGV[0]; + shift; +} if($ARGV[0] =~ /^-/) { - print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n"; + print STDERR "usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\n"; exit 1; } -if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { - print STDERR "GOARCH or GOOS not defined in environment\n"; - exit 1; +# Check that we are using the new build system if we should +if($ENV{'GOOS'} eq "linux" && $ENV{'GOARCH'} ne "sparc64") { + if($ENV{'GOLANG_SYS_BUILD'} ne "docker") { + print STDERR "In the new build system, mksyscall should not be called directly.\n"; + print STDERR "See README.md\n"; + exit 1; + } } + sub parseparamlist($) { my ($list) = @_; $list =~ s/^\s*//; @@ -132,7 +143,6 @@ ($) # Prepare arguments to Syscall. my @args = (); - my @uses = (); my $n = 0; foreach my $p (@in) { my ($name, $type) = parseparam($p); @@ -143,14 +153,12 @@ ($) $text .= "\t_p$n, $errvar = BytePtrFromString($name)\n"; $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n"; push @args, "uintptr(unsafe.Pointer(_p$n))"; - push @uses, "use(unsafe.Pointer(_p$n))"; $n++; } elsif($type eq "string") { print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n"; $text .= "\tvar _p$n *byte\n"; $text .= "\t_p$n, _ = BytePtrFromString($name)\n"; push @args, "uintptr(unsafe.Pointer(_p$n))"; - push @uses, "use(unsafe.Pointer(_p$n))"; $n++; } elsif($type =~ /^\[\](.*)/) { # Convert slice into pointer, length. @@ -185,7 +193,7 @@ ($) } } elsif($type eq "int64" && $_32bit ne "") { if(@args % 2 && $arm) { - # arm abi specifies 64-bit argument uses + # arm abi specifies 64-bit argument uses # (even, odd) pair push @args, "0" } @@ -278,11 +286,8 @@ ($) } else { $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n"; } - foreach my $use (@uses) { - $text .= "\t$use\n"; - } $text .= $body; - + if ($plan9 && $ret[2] eq "e1") { $text .= "\tif int32(r0) == -1 {\n"; $text .= "\t\terr = e1\n"; @@ -305,9 +310,9 @@ ($) print < 999){ - # ignore deprecated syscalls that are no longer implemented - # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716 - return; - } - $name =~ y/a-z/A-Z/; - print " SYS_$name = $num;\n"; -} - -my $prev; -open(GCC, "gcc -E -dD $ARGV[0] |") || die "can't run gcc"; -while(){ - if(/^#define __NR_syscalls\s+/) { - # ignore redefinitions of __NR_syscalls - } - elsif(/^#define __NR_(\w+)\s+([0-9]+)/){ - $prev = $2; - fmt($1, $2); - } - elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){ - $prev = $2; - fmt($1, $2); - } - elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){ - fmt($1, $prev+$2) - } -} - -print < 0 && buf[n-1] == '\x00' { @@ -575,13 +561,19 @@ func Utimes(path string, tv []Timeval) error { func UtimesNano(path string, ts []Timespec) error { if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } return utimes(path, nil) } - // TODO: The BSDs can do utimensat with SYS_UTIMENSAT but it - // isn't supported by darwin so this uses utimes instead if len(ts) != 2 { return EINVAL } + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } // Not as efficient as it could be because Timespec and // Timeval have different types in the different OSes tv := [2]Timeval{ @@ -591,6 +583,16 @@ func UtimesNano(path string, ts []Timespec) error { return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + //sys futimes(fd int, timeval *[2]Timeval) (err error) func Futimes(fd int, tv []Timeval) error { @@ -608,9 +610,6 @@ func Futimes(fd int, tv []Timeval) error { // TODO: wrap // Acct(name nil-string) (err error) // Gethostuuid(uuid *byte, timeout *Timespec) (err error) -// Madvise(addr *byte, len int, behav int) (err error) -// Mprotect(addr *byte, len int, prot int) (err error) -// Msync(addr *byte, len int, flags int) (err error) // Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) var mapper = &mmapper{ @@ -626,3 +625,11 @@ func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, e func Munmap(b []byte) (err error) { return mapper.Munmap(b) } + +//sys Madvise(b []byte, behav int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 3d534d2daa..ad74a11fb3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -76,32 +76,16 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -// ParseDirent parses up to max directory entries in buf, -// appending the names to names. It returns the number -// bytes consumed from buf, the number of entries added -// to names, and the new names slice. -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - if dirent.Reclen == 0 { - buf = nil - break - } - buf = buf[dirent.Reclen:] - if dirent.Ino == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:dirent.Namlen]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) - } - return origlen - len(buf), count, names +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } //sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) @@ -144,7 +128,6 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) ( uintptr(options), 0, ) - use(unsafe.Pointer(_p0)) if e1 != 0 { return nil, e1 } @@ -197,7 +180,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags)) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = e1 @@ -205,6 +187,11 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { return } +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { + // Darwin doesn't support SYS_UTIMENSAT + return ENOSYS +} + /* * Wrapped */ @@ -213,6 +200,45 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + /* * Exposed directly */ @@ -228,10 +254,13 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig //sys Dup2(from int, to int) (err error) //sys Exchangedata(path1 string, path2 string, options int) (err error) //sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchdir(fd int) (err error) //sys Fchflags(fd int, flags int) (err error) //sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys Flock(fd int, how int) (err error) //sys Fpathconf(fd int, name int) (val int, err error) //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 @@ -256,23 +285,23 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig //sys Kqueue() (fd int, err error) //sys Lchown(path string, uid int, gid int) (err error) //sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) //sys Listen(s int, backlog int) (err error) //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) -//sys Mlock(b []byte) (err error) -//sys Mlockall(flags int) (err error) -//sys Mprotect(b []byte, prot int) (err error) -//sys Munlock(b []byte) (err error) -//sys Munlockall() (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) //sys Pread(fd int, p []byte, offset int64) (n int, err error) //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) //sys read(fd int, p []byte) (n int, err error) //sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) //sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK @@ -293,11 +322,13 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 //sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) //sys Sync() (err error) //sys Truncate(path string, length int64) (err error) //sys Umask(newmask int) (oldmask int) //sys Undelete(path string) (err error) //sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) @@ -337,9 +368,6 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig // Add_profil // Kdebug_trace // Sigreturn -// Mmap -// Mlock -// Munlock // Atsocket // Kqueue_from_portset_np // Kqueue_portset @@ -432,8 +460,6 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig // Lio_listio // __pthread_cond_wait // Iopolicysys -// Mlockall -// Munlockall // __pthread_kill // __pthread_sigmask // __sigwait @@ -487,7 +513,6 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig // Sendmsg_nocancel // Recvfrom_nocancel // Accept_nocancel -// Msync_nocancel // Fcntl_nocancel // Select_nocancel // Fsync_nocancel diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index fc1e5a4a82..c6c99c13a7 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -11,8 +11,6 @@ import ( "unsafe" ) -//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) - func Getpagesize() int { return 4096 } func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index ec408ee789..3a483373dc 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -1,8 +1,8 @@ -// Copyright 2009,2010 The Go Authors. All rights reserved. +// 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. -// FreeBSD system calls. +// DragonFly BSD system calls. // This file is compiled as ordinary Go code, // but it is also input to mksyscall, // which parses the //sys lines and generates system call stubs. @@ -34,7 +34,7 @@ func nametomib(name string) (mib []_C_int, err error) { // NOTE(rsc): It seems strange to set the buffer to have // size CTL_MAXNAME+2 but use only CTL_MAXNAME - // as the size. I don't know why the +2 is here, but the + // as the size. I don't know why the +2 is here, but the // kernel uses +2 for its own implementation of this function. // I am scared that if we don't include the +2 here, the kernel // will silently write 2 words farther than we specify @@ -56,29 +56,20 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -// ParseDirent parses up to max directory entries in buf, -// appending the names to names. It returns the number -// bytes consumed from buf, the number of entries added -// to names, and the new names slice. -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - reclen := int(16+dirent.Namlen+1+7) & ^7 - buf = buf[reclen:] - if dirent.Fileno == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:dirent.Namlen]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + namlen, ok := direntNamlen(buf) + if !ok { + return 0, false } - return origlen - len(buf), count, names + return (16 + namlen + 1 + 7) &^ 7, true +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } //sysnb pipe() (r int, w int, err error) @@ -101,6 +92,24 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { return extpwrite(fd, p, 0, offset) } +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(&rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { var _p0 unsafe.Pointer var bufsize uintptr @@ -109,7 +118,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = e1 @@ -166,11 +174,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { //sys Mkdir(path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) -//sys Mlock(b []byte) (err error) -//sys Mlockall(flags int) (err error) -//sys Mprotect(b []byte, prot int) (err error) -//sys Munlock(b []byte) (err error) -//sys Munlockall() (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) @@ -209,6 +212,8 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { //sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) /* * Unimplemented @@ -243,7 +248,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // Add_profil // Kdebug_trace // Sigreturn -// Mmap // Atsocket // Kqueue_from_portset_np // Kqueue_portset @@ -388,7 +392,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // Sendmsg_nocancel // Recvfrom_nocancel // Accept_nocancel -// Msync_nocancel // Fcntl_nocancel // Select_nocancel // Fsync_nocancel diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index 520ccbeaf7..d26e52eaef 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -54,32 +54,16 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -// ParseDirent parses up to max directory entries in buf, -// appending the names to names. It returns the number -// bytes consumed from buf, the number of entries added -// to names, and the new names slice. -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - if dirent.Reclen == 0 { - buf = nil - break - } - buf = buf[dirent.Reclen:] - if dirent.Fileno == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:dirent.Namlen]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) - } - return origlen - len(buf), count, names +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } //sysnb pipe() (r int, w int, err error) @@ -129,7 +113,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = e1 @@ -369,11 +352,53 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { return s, e } +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + /* * Exposed directly */ //sys Access(path string, mode uint32) (err error) //sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys CapEnter() (err error) +//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET +//sys capRightsLimit(fd int, rightsp *CapRights) (err error) //sys Chdir(path string) (err error) //sys Chflags(path string, flags int) (err error) //sys Chmod(path string, mode uint32) (err error) @@ -396,10 +421,13 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { //sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) //sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchdir(fd int) (err error) //sys Fchflags(fd int, flags int) (err error) //sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys Flock(fd int, how int) (err error) //sys Fpathconf(fd int, name int) (val int, err error) //sys Fstat(fd int, stat *Stat_t) (err error) @@ -426,24 +454,24 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { //sys Kqueue() (fd int, err error) //sys Lchown(path string, uid int, gid int) (err error) //sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) //sys Listen(s int, backlog int) (err error) //sys Lstat(path string, stat *Stat_t) (err error) //sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) -//sys Mlock(b []byte) (err error) -//sys Mlockall(flags int) (err error) -//sys Mprotect(b []byte, prot int) (err error) -//sys Munlock(b []byte) (err error) -//sys Munlockall() (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) //sys Pread(fd int, p []byte, offset int64) (n int, err error) //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) //sys read(fd int, p []byte) (n int, err error) //sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) //sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK @@ -465,11 +493,13 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) //sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) //sys Sync() (err error) //sys Truncate(path string, length int64) (err error) //sys Umask(newmask int) (oldmask int) //sys Undelete(path string) (err error) //sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) @@ -477,6 +507,7 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) /* * Unimplemented @@ -510,9 +541,6 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { // Add_profil // Kdebug_trace // Sigreturn -// Mmap -// Mlock -// Munlock // Atsocket // Kqueue_from_portset_np // Kqueue_portset @@ -605,8 +633,6 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { // Lio_listio // __pthread_cond_wait // Iopolicysys -// Mlockall -// Munlockall // __pthread_kill // __pthread_sigmask // __sigwait @@ -659,7 +685,6 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { // Sendmsg_nocancel // Recvfrom_nocancel // Accept_nocancel -// Msync_nocancel // Fcntl_nocancel // Select_nocancel // Fsync_nocancel diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go index cd13080ad7..654439e02b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go @@ -7,18 +7,291 @@ package unix_test import ( + "flag" + "fmt" + "io/ioutil" "os" + "os/exec" + "path" + "path/filepath" + "runtime" "testing" "golang.org/x/sys/unix" ) -func TestSysctUint64(t *testing.T) { - _, err := unix.SysctlUint64("vm.max_kernel_address") +func TestSysctlUint64(t *testing.T) { + _, err := unix.SysctlUint64("vm.swap_total") if err != nil { - if os.Getenv("GO_BUILDER_NAME") == "freebsd-386-gce101" { - t.Skipf("Ignoring known failing test (golang.org/issue/15186). Failed with: %v", err) - } t.Fatal(err) } } + +// FIXME: Infrastructure for launching tests in subprocesses stolen from openbsd_test.go - refactor? +// testCmd generates a proper command that, when executed, runs the test +// corresponding to the given key. + +type testProc struct { + fn func() // should always exit instead of returning + arg func(t *testing.T) string // generate argument for test + cleanup func(arg string) error // for instance, delete coredumps from testing pledge + success bool // whether zero-exit means success or failure +} + +var ( + testProcs = map[string]testProc{} + procName = "" + procArg = "" +) + +const ( + optName = "sys-unix-internal-procname" + optArg = "sys-unix-internal-arg" +) + +func init() { + flag.StringVar(&procName, optName, "", "internal use only") + flag.StringVar(&procArg, optArg, "", "internal use only") + +} + +func testCmd(procName string, procArg string) (*exec.Cmd, error) { + exe, err := filepath.Abs(os.Args[0]) + if err != nil { + return nil, err + } + cmd := exec.Command(exe, "-"+optName+"="+procName, "-"+optArg+"="+procArg) + cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr + return cmd, nil +} + +// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing +// a testProc with a key. +func ExitsCorrectly(t *testing.T, procName string) { + s := testProcs[procName] + arg := "-" + if s.arg != nil { + arg = s.arg(t) + } + c, err := testCmd(procName, arg) + defer func(arg string) { + if err := s.cleanup(arg); err != nil { + t.Fatalf("Failed to run cleanup for %s %s %#v", procName, err, err) + } + }(arg) + if err != nil { + t.Fatalf("Failed to construct command for %s", procName) + } + if (c.Run() == nil) != s.success { + result := "succeed" + if !s.success { + result = "fail" + } + t.Fatalf("Process did not %s when it was supposed to", result) + } +} + +func TestMain(m *testing.M) { + flag.Parse() + if procName != "" { + t := testProcs[procName] + t.fn() + os.Stderr.WriteString("test function did not exit\n") + if t.success { + os.Exit(1) + } else { + os.Exit(0) + } + } + os.Exit(m.Run()) +} + +// end of infrastructure + +const testfile = "gocapmodetest" +const testfile2 = testfile + "2" + +func CapEnterTest() { + _, err := os.OpenFile(path.Join(procArg, testfile), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + panic(fmt.Sprintf("OpenFile: %s", err)) + } + + err = unix.CapEnter() + if err != nil { + panic(fmt.Sprintf("CapEnter: %s", err)) + } + + _, err = os.OpenFile(path.Join(procArg, testfile2), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) + if err == nil { + panic("OpenFile works!") + } + if err.(*os.PathError).Err != unix.ECAPMODE { + panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err)) + } + os.Exit(0) +} + +func makeTempDir(t *testing.T) string { + d, err := ioutil.TempDir("", "go_openat_test") + if err != nil { + t.Fatalf("TempDir failed: %s", err) + } + return d +} + +func removeTempDir(arg string) error { + err := os.RemoveAll(arg) + if err != nil && err.(*os.PathError).Err == unix.ENOENT { + return nil + } + return err +} + +func init() { + testProcs["cap_enter"] = testProc{ + CapEnterTest, + makeTempDir, + removeTempDir, + true, + } +} + +func TestCapEnter(t *testing.T) { + if runtime.GOARCH != "amd64" { + t.Skipf("skipping test on %s", runtime.GOARCH) + } + ExitsCorrectly(t, "cap_enter") +} + +func OpenatTest() { + f, err := os.Open(procArg) + if err != nil { + panic(err) + } + + err = unix.CapEnter() + if err != nil { + panic(fmt.Sprintf("CapEnter: %s", err)) + } + + fxx, err := unix.Openat(int(f.Fd()), "xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + panic(err) + } + unix.Close(fxx) + + // The right to open BASE/xx is not ambient + _, err = os.OpenFile(procArg+"/xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) + if err == nil { + panic("OpenFile succeeded") + } + if err.(*os.PathError).Err != unix.ECAPMODE { + panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err)) + } + + // Can't make a new directory either + err = os.Mkdir(procArg+"2", 0777) + if err == nil { + panic("MKdir succeeded") + } + if err.(*os.PathError).Err != unix.ECAPMODE { + panic(fmt.Sprintf("Mkdir failed wrong: %s %#v", err, err)) + } + + // Remove all caps except read and lookup. + r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_LOOKUP}) + if err != nil { + panic(fmt.Sprintf("CapRightsInit failed: %s %#v", err, err)) + } + err = unix.CapRightsLimit(f.Fd(), r) + if err != nil { + panic(fmt.Sprintf("CapRightsLimit failed: %s %#v", err, err)) + } + + // Check we can get the rights back again + r, err = unix.CapRightsGet(f.Fd()) + if err != nil { + panic(fmt.Sprintf("CapRightsGet failed: %s %#v", err, err)) + } + b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP}) + if err != nil { + panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err)) + } + if !b { + panic(fmt.Sprintf("Unexpected rights")) + } + b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP, unix.CAP_WRITE}) + if err != nil { + panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err)) + } + if b { + panic(fmt.Sprintf("Unexpected rights (2)")) + } + + // Can no longer create a file + _, err = unix.Openat(int(f.Fd()), "xx2", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) + if err == nil { + panic("Openat succeeded") + } + if err != unix.ENOTCAPABLE { + panic(fmt.Sprintf("OpenFileAt failed wrong: %s %#v", err, err)) + } + + // But can read an existing one + _, err = unix.Openat(int(f.Fd()), "xx", os.O_RDONLY, 0666) + if err != nil { + panic(fmt.Sprintf("Openat failed: %s %#v", err, err)) + } + + os.Exit(0) +} + +func init() { + testProcs["openat"] = testProc{ + OpenatTest, + makeTempDir, + removeTempDir, + true, + } +} + +func TestOpenat(t *testing.T) { + if runtime.GOARCH != "amd64" { + t.Skipf("skipping test on %s", runtime.GOARCH) + } + ExitsCorrectly(t, "openat") +} + +func TestCapRightsSetAndClear(t *testing.T) { + r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT}) + if err != nil { + t.Fatalf("CapRightsInit failed: %s", err) + } + + err = unix.CapRightsSet(r, []uint64{unix.CAP_EVENT, unix.CAP_LISTEN}) + if err != nil { + t.Fatalf("CapRightsSet failed: %s", err) + } + + b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT, unix.CAP_EVENT, unix.CAP_LISTEN}) + if err != nil { + t.Fatalf("CapRightsIsSet failed: %s", err) + } + if !b { + t.Fatalf("Wrong rights set") + } + + err = unix.CapRightsClear(r, []uint64{unix.CAP_READ, unix.CAP_PDWAIT}) + if err != nil { + t.Fatalf("CapRightsClear failed: %s", err) + } + + b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_WRITE, unix.CAP_EVENT, unix.CAP_LISTEN}) + if err != nil { + t.Fatalf("CapRightsIsSet failed: %s", err) + } + if !b { + t.Fatalf("Wrong rights set") + } +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 6d10c9cffa..1b7d59d896 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -36,6 +36,59 @@ func Creat(path string, mode uint32) (fd int, err error) { return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) } +//sys fchmodat(dirfd int, path string, mode uint32) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + // Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior + // and check the flags. Otherwise the mode would be applied to the symlink + // destination which is not what the user expects. + if flags&^AT_SYMLINK_NOFOLLOW != 0 { + return EINVAL + } else if flags&AT_SYMLINK_NOFOLLOW != 0 { + return EOPNOTSUPP + } + return fchmodat(dirfd, path, mode) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + //sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) func Link(oldpath string, newpath string) (err error) { @@ -69,10 +122,10 @@ func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error return ppoll(&fds[0], len(fds), timeout, sigmask) } -//sys readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) func Readlink(path string, buf []byte) (n int, err error) { - return readlinkat(AT_FDCWD, path, buf) + return Readlinkat(AT_FDCWD, path, buf) } func Rename(oldpath string, newpath string) (err error) { @@ -80,24 +133,20 @@ func Rename(oldpath string, newpath string) (err error) { } func Rmdir(path string) error { - return unlinkat(AT_FDCWD, path, AT_REMOVEDIR) + return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR) } -//sys symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) func Symlink(oldpath string, newpath string) (err error) { - return symlinkat(oldpath, AT_FDCWD, newpath) + return Symlinkat(oldpath, AT_FDCWD, newpath) } func Unlink(path string) error { - return unlinkat(AT_FDCWD, path, 0) + return Unlinkat(AT_FDCWD, path, 0) } -//sys unlinkat(dirfd int, path string, flags int) (err error) - -func Unlinkat(dirfd int, path string, flags int) error { - return unlinkat(dirfd, path, flags) -} +//sys Unlinkat(dirfd int, path string, flags int) (err error) //sys utimes(path string, times *[2]Timeval) (err error) @@ -143,8 +192,7 @@ func UtimesNano(path string, ts []Timespec) error { // in 2.6.22, Released, 8 July 2007) then fall back to utimes var tv [2]Timeval for i := 0; i < 2; i++ { - tv[i].Sec = ts[i].Sec - tv[i].Usec = ts[i].Nsec / 1000 + tv[i] = NsecToTimeval(TimespecToNsec(ts[i])) } return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } @@ -304,10 +352,14 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, return } -func Mkfifo(path string, mode uint32) (err error) { +func Mkfifo(path string, mode uint32) error { return Mknod(path, mode|S_IFIFO, 0) } +func Mkfifoat(dirfd int, path string, mode uint32) error { + return Mknodat(dirfd, path, mode|S_IFIFO, 0) +} + func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { if sa.Port < 0 || sa.Port > 0xFFFF { return nil, 0, EINVAL @@ -416,6 +468,168 @@ func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil } +// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. +// The RxID and TxID fields are used for transport protocol addressing in +// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with +// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning. +// +// The SockaddrCAN struct must be bound to the socket file descriptor +// using Bind before the CAN socket can be used. +// +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) +// +// The full SocketCAN documentation can be found in the linux kernel +// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt +type SockaddrCAN struct { + Ifindex int + RxID uint32 + TxID uint32 + raw RawSockaddrCAN +} + +func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i] = rx[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i+4] = tx[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. +// SockaddrALG enables userspace access to the Linux kernel's cryptography +// subsystem. The Type and Name fields specify which type of hash or cipher +// should be used with a given socket. +// +// To create a file descriptor that provides access to a hash or cipher, both +// Bind and Accept must be used. Once the setup process is complete, input +// data can be written to the socket, processed by the kernel, and then read +// back as hash output or ciphertext. +// +// Here is an example of using an AF_ALG socket with SHA1 hashing. +// The initial socket setup process is as follows: +// +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// +// Once a file descriptor has been returned from Accept, it may be used to +// perform SHA1 hashing. The descriptor is not safe for concurrent use, but +// may be re-used repeatedly with subsequent Write and Read operations. +// +// When hashing a small byte slice or string, a single Write and Read may +// be used: +// +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// +// For hashing larger byte slices, or byte streams such as those read from +// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update +// the hash digest instead of creating a new one for a given chunk and finalizing it. +// +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// +// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. +type SockaddrALG struct { + Type string + Name string + Feature uint32 + Mask uint32 + raw RawSockaddrALG +} + +func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { + // Leave room for NUL byte terminator. + if len(sa.Type) > 13 { + return nil, 0, EINVAL + } + if len(sa.Name) > 63 { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_ALG + sa.raw.Feat = sa.Feature + sa.raw.Mask = sa.Mask + + typ, err := ByteSliceFromString(sa.Type) + if err != nil { + return nil, 0, err + } + name, err := ByteSliceFromString(sa.Name) + if err != nil { + return nil, 0, err + } + + copy(sa.raw.Type[:], typ) + copy(sa.raw.Name[:], name) + + return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_NETLINK: @@ -485,6 +699,14 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { sa.Addr[i] = pp.Addr[i] } return sa, nil + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil } return nil, EAFNOSUPPORT } @@ -579,10 +801,124 @@ func GetsockoptUcred(fd, level, opt int) (*Ucred, error) { return &value, err } +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + var value TCPInfo + vallen := _Socklen(SizeofTCPInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) } +// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) + +// KeyctlInt calls keyctl commands in which each argument is an int. +// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK, +// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT, +// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT, +// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT. +//sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlBuffer calls keyctl commands in which the third and fourth +// arguments are a buffer and its length, respectively. +// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE. +//sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlString calls keyctl commands which return a string. +// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY. +func KeyctlString(cmd int, id int) (string, error) { + // We must loop as the string data may change in between the syscalls. + // We could allocate a large buffer here to reduce the chance that the + // syscall needs to be called twice; however, this is unnecessary as + // the performance loss is negligible. + var buffer []byte + for { + // Try to fill the buffer with data + length, err := KeyctlBuffer(cmd, id, buffer, 0) + if err != nil { + return "", err + } + + // Check if the data was written + if length <= len(buffer) { + // Exclude the null terminator + return string(buffer[:length-1]), nil + } + + // Make a bigger buffer if needed + buffer = make([]byte, length) + } +} + +// Keyctl commands with special signatures. + +// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html +func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) { + createInt := 0 + if create { + createInt = 1 + } + return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0) +} + +// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the +// key handle permission mask as described in the "keyctl setperm" section of +// http://man7.org/linux/man-pages/man1/keyctl.1.html. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html +func KeyctlSetperm(id int, perm uint32) error { + _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0) + return err +} + +//sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL + +// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html +func KeyctlJoinSessionKeyring(name string) (ringid int, err error) { + return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name) +} + +//sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlSearch implements the KEYCTL_SEARCH command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_search.3.html +func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) { + return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid) +} + +//sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL + +// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This +// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice +// of Iovec (each of which represents a buffer) instead of a single buffer. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html +func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error { + return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid) +} + +//sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL + +// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command +// computes a Diffie-Hellman shared secret based on the provide params. The +// secret is written to the provided buffer and the returned size is the number +// of bytes written (returning an error if there is insufficient space in the +// buffer). If a nil buffer is passed in, this function returns the minimum +// buffer length needed to store the appropriate data. Note that this differs +// from KEYCTL_READ's behavior which always returns the requested payload size. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html +func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) { + return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) +} + func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { var msg Msghdr var rsa RawSockaddrAny @@ -595,8 +931,13 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from } var dummy byte if len(oob) > 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } // receive at least one normal byte - if len(p) == 0 { + if sockType != SOCK_DGRAM && len(p) == 0 { iov.Base = &dummy iov.SetLen(1) } @@ -642,8 +983,13 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) } var dummy byte if len(oob) > 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } // send at least one normal byte - if len(p) == 0 { + if sockType != SOCK_DGRAM && len(p) == 0 { iov.Base = &dummy iov.SetLen(1) } @@ -716,6 +1062,10 @@ func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { return ptracePeek(PTRACE_PEEKDATA, pid, addr, out) } +func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKUSR, pid, addr, out) +} + func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) { // As for ptracePeek, we need to align our accesses to deal // with the possibility of straddling an invalid page. @@ -814,38 +1164,24 @@ func Reboot(cmd int) (err error) { return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") } -func clen(n []byte) int { - for i := 0; i < len(n); i++ { - if n[i] == 0 { - return i - } - } - return len(n) -} - func ReadDirent(fd int, buf []byte) (n int, err error) { return Getdents(fd, buf) } -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - count = 0 - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - buf = buf[dirent.Reclen:] - if dirent.Ino == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:clen(bytes[:])]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false } - return origlen - len(buf), count, names + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true } //sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) @@ -871,22 +1207,24 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri * Direct access */ //sys Acct(path string) (err error) +//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) //sys Adjtimex(buf *Timex) (state int, err error) //sys Chdir(path string) (err error) //sys Chroot(path string) (err error) //sys ClockGettime(clockid int32, time *Timespec) (err error) //sys Close(fd int) (err error) +//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys Dup(oldfd int) (fd int, err error) //sys Dup3(oldfd int, newfd int, flags int) (err error) //sysnb EpollCreate(size int) (fd int, err error) //sysnb EpollCreate1(flag int) (fd int, err error) //sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 //sys Exit(code int) = SYS_EXIT_GROUP //sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) //sys Fchdir(fd int) (err error) //sys Fchmod(fd int, mode uint32) (err error) -//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys fcntl(fd int, cmd int, arg int) (val int, err error) //sys Fdatasync(fd int) (err error) @@ -903,7 +1241,9 @@ func Getpgrp() (pid int) { //sysnb Getpid() (pid int) //sysnb Getppid() (ppid int) //sys Getpriority(which int, who int) (prio int, err error) +//sys Getrandom(buf []byte, flags int) (n int, err error) //sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) //sysnb Gettid() (tid int) //sys Getxattr(path string, attr string, dest []byte) (sz int, err error) //sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) @@ -911,16 +1251,21 @@ func Getpgrp() (pid int) { //sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) //sysnb Kill(pid int, sig syscall.Signal) (err error) //sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG +//sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error) //sys Listxattr(path string, dest []byte) (sz int, err error) +//sys Llistxattr(path string, dest []byte) (sz int, err error) +//sys Lremovexattr(path string, attr string) (err error) +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) //sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT -//sysnb prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) = SYS_PRLIMIT64 +//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 //sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) //sys Setdomainname(p []byte) (err error) //sys Sethostname(p []byte) (err error) //sysnb Setpgid(pid int, pgid int) (err error) @@ -944,6 +1289,7 @@ func Setgid(uid int) (err error) { //sys Setpriority(which int, who int, prio int) (err error) //sys Setxattr(path string, attr string, data []byte, flags int) (err error) //sys Sync() +//sys Syncfs(fd int) (err error) //sysnb Sysinfo(info *Sysinfo_t) (err error) //sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) //sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) @@ -978,14 +1324,33 @@ func Munmap(b []byte) (err error) { //sys Madvise(b []byte, advice int) (err error) //sys Mprotect(b []byte, prot int) (err error) //sys Mlock(b []byte) (err error) -//sys Munlock(b []byte) (err error) //sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) //sys Munlockall() (err error) +// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, +// using the specified flags. +func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { + n, _, errno := Syscall6( + SYS_VMSPLICE, + uintptr(fd), + uintptr(unsafe.Pointer(&iovs[0])), + uintptr(len(iovs)), + uintptr(flags), + 0, + 0, + ) + if errno != 0 { + return 0, syscall.Errno(errno) + } + + return int(n), nil +} + /* * Unimplemented */ -// AddKey // AfsSyscall // Alarm // ArchPrctl @@ -1001,7 +1366,6 @@ func Munmap(b []byte) (err error) { // EpollCtlOld // EpollPwait // EpollWaitOld -// Eventfd // Execve // Fgetxattr // Flistxattr @@ -1020,23 +1384,16 @@ func Munmap(b []byte) (err error) { // IoGetevents // IoSetup // IoSubmit -// Ioctl // IoprioGet // IoprioSet // KexecLoad -// Keyctl -// Lgetxattr -// Llistxattr // LookupDcookie -// Lremovexattr -// Lsetxattr // Mbind // MigratePages // Mincore // ModifyLdt // Mount // MovePages -// Mprotect // MqGetsetattr // MqNotify // MqOpen @@ -1048,7 +1405,6 @@ func Munmap(b []byte) (err error) { // Msgget // Msgrcv // Msgsnd -// Msync // Newfstatat // Nfsservctl // Personality @@ -1060,7 +1416,6 @@ func Munmap(b []byte) (err error) { // Readahead // Readv // RemapFilePages -// RequestKey // RestartSyscall // RtSigaction // RtSigpending @@ -1109,7 +1464,6 @@ func Munmap(b []byte) (err error) { // Utimensat // Vfork // Vhangup -// Vmsplice // Vserver // Waitid // _Sysctl diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 18911c2d98..9516a3fd7e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -6,8 +6,6 @@ package unix -import "syscall" - //sys Dup2(oldfd int, newfd int) (err error) //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 @@ -63,9 +61,6 @@ import "syscall" //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) -//go:noescape -func gettimeofday(tv *Timeval) (err syscall.Errno) - func Gettimeofday(tv *Timeval) (err error) { errno := gettimeofday(tv) if errno != 0 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go new file mode 100644 index 0000000000..21a4946ba5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -0,0 +1,13 @@ +// 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 amd64,linux +// +build !gccgo + +package unix + +import "syscall" + +//go:noescape +func gettimeofday(tv *Timeval) (err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index 4b6ff2a80d..4a136396cd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -6,8 +6,6 @@ package unix -const _SYS_dup = SYS_DUP3 - //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 440f54ee9c..73318e5c64 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -7,13 +7,7 @@ package unix -// Linux introduced getdents64 syscall for N64 ABI only in 3.10 -// (May 21 2013, rev dec33abaafc89bcbd78f85fad0513170415a26d5), -// to support older kernels, we have to use getdents for mips64. -// Also note that struct dirent is different for these two. -// Lookup linux_dirent{,64} in kernel source code for details. -const _SYS_getdents = SYS_GETDENTS - +//sys Dup2(oldfd int, newfd int) (err error) //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstatfs(fd int, buf *Statfs_t) (err error) @@ -189,9 +183,9 @@ func fillStat_t(s *Stat_t, st *stat_t) { s.Blocks = st.Blocks } -func (r *PtraceRegs) PC() uint64 { return r.Regs[64] } +func (r *PtraceRegs) PC() uint64 { return r.Epc } -func (r *PtraceRegs) SetPC(pc uint64) { r.Regs[64] = pc } +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } func (iov *Iovec) SetLen(length int) { iov.Len = uint64(length) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go new file mode 100644 index 0000000000..b83d93fdff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -0,0 +1,239 @@ +// 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 linux +// +build mips mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) + +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) + +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Pause() (err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + p, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0) + if e != 0 { + err = errnoErr(e) + } + return +} + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = int32(nsec / 1e9) + ts.Nsec = int32(nsec % 1e9) + return +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + nsec += 999 // round up to microsecond + tv.Sec = int32(nsec / 1e9) + tv.Usec = int32(nsec % 1e9 / 1e3) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +func Getpagesize() int { return 4096 } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index 81c5f47322..1708a4bbf9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -132,7 +132,6 @@ func (cmsg *Cmsghdr) SetLen(length int) { func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)} r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0) - use(unsafe.Pointer(&mmap_args[0])) xaddr = uintptr(r0) if e1 != 0 { err = errnoErr(e1) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go new file mode 100644 index 0000000000..20b7454d77 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -0,0 +1,169 @@ +// 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. + +// +build sparc64,linux + +package unix + +import ( + "sync/atomic" + "syscall" +) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func sysconf(name int) (n int64, err syscall.Errno) + +// pageSize caches the value of Getpagesize, since it can't change +// once the system is booted. +var pageSize int64 // accessed atomically + +func Getpagesize() int { + n := atomic.LoadInt64(&pageSize) + if n == 0 { + n, _ = sysconf(_SC_PAGESIZE) + atomic.StoreInt64(&pageSize, n) + } + return int(n) +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = nsec / 1e9 + ts.Nsec = nsec % 1e9 + return +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + nsec += 999 // round up to microsecond + tv.Sec = nsec / 1e9 + tv.Usec = int32(nsec % 1e9 / 1e3) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Tpc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_test.go b/vendor/golang.org/x/sys/unix/syscall_linux_test.go index 91184cae06..3770231307 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_test.go @@ -15,6 +15,47 @@ import ( "golang.org/x/sys/unix" ) +func TestFchmodat(t *testing.T) { + defer chtmpdir(t)() + + touch(t, "file1") + os.Symlink("file1", "symlink1") + + err := unix.Fchmodat(unix.AT_FDCWD, "symlink1", 0444, 0) + if err != nil { + t.Fatalf("Fchmodat: unexpected error: %v", err) + } + + fi, err := os.Stat("file1") + if err != nil { + t.Fatal(err) + } + + if fi.Mode() != 0444 { + t.Errorf("Fchmodat: failed to change mode: expected %v, got %v", 0444, fi.Mode()) + } + + err = unix.Fchmodat(unix.AT_FDCWD, "symlink1", 0444, unix.AT_SYMLINK_NOFOLLOW) + if err != unix.EOPNOTSUPP { + t.Fatalf("Fchmodat: unexpected error: %v, expected EOPNOTSUPP", err) + } +} + +func TestIoctlGetInt(t *testing.T) { + f, err := os.Open("/dev/random") + if err != nil { + t.Fatalf("failed to open device: %v", err) + } + defer f.Close() + + v, err := unix.IoctlGetInt(int(f.Fd()), unix.RNDGETENTCNT) + if err != nil { + t.Fatalf("failed to perform ioctl: %v", err) + } + + t.Logf("%d bits of entropy available", v) +} + func TestPoll(t *testing.T) { f, cleanup := mktmpfifo(t) defer cleanup() diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index c4e945cd69..e129668459 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -93,32 +93,16 @@ func nametomib(name string) (mib []_C_int, err error) { return mib, nil } -// ParseDirent parses up to max directory entries in buf, -// appending the names to names. It returns the number -// bytes consumed from buf, the number of entries added -// to names, and the new names slice. -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - if dirent.Reclen == 0 { - buf = nil - break - } - buf = buf[dirent.Reclen:] - if dirent.Fileno == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:dirent.Namlen]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) - } - return origlen - len(buf), count, names +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } //sysnb pipe() (fd1 int, fd2 int, err error) @@ -186,11 +170,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Mkdir(path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) -//sys Mlock(b []byte) (err error) -//sys Mlockall(flags int) (err error) -//sys Mprotect(b []byte, prot int) (err error) -//sys Munlock(b []byte) (err error) -//sys Munlockall() (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) @@ -226,6 +205,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) /* * Unimplemented diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 554a823426..408e63081c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -53,32 +53,16 @@ func nametomib(name string) (mib []_C_int, err error) { return nil, EINVAL } -// ParseDirent parses up to max directory entries in buf, -// appending the names to names. It returns the number -// bytes consumed from buf, the number of entries added -// to names, and the new names slice. -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - if dirent.Reclen == 0 { - buf = nil - break - } - buf = buf[dirent.Reclen:] - if dirent.Fileno == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:dirent.Namlen]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) - } - return origlen - len(buf), count, names +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } //sysnb pipe(p *[2]_C_int) (err error) @@ -111,7 +95,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = e1 @@ -166,11 +149,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { //sys Mkdir(path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) -//sys Mlock(b []byte) (err error) -//sys Mlockall(flags int) (err error) -//sys Mprotect(b []byte, prot int) (err error) -//sys Munlock(b []byte) (err error) -//sys Munlockall() (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) @@ -210,6 +188,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { //sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) /* * Unimplemented @@ -299,6 +278,5 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // thrsleep // thrwakeup // unlinkat -// utimensat // vfork // writev diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 0000000000..14ddaf3f33 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,44 @@ +// Copyright 2017 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 arm,openbsd + +package unix + +import "syscall" + +func Getpagesize() int { return syscall.Getpagesize() } + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = int64(nsec / 1e9) + ts.Nsec = int32(nsec % 1e9) + return +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + nsec += 999 // round up to microsecond + tv.Usec = int32(nsec % 1e9 / 1e3) + tv.Sec = int64(nsec / 1e9) + return +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index acb74b1d15..0d4e5c4e6c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -44,32 +44,20 @@ func clen(n []byte) int { return len(n) } -// ParseDirent parses up to max directory entries in buf, -// appending the names to names. It returns the number -// bytes consumed from buf, the number of entries added -// to names, and the new names slice. -func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - origlen := len(buf) - for max != 0 && len(buf) > 0 { - dirent := (*Dirent)(unsafe.Pointer(&buf[0])) - if dirent.Reclen == 0 { - buf = nil - break - } - buf = buf[dirent.Reclen:] - if dirent.Ino == 0 { // File absent in directory. - continue - } - bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0])) - var name = string(bytes[0:clen(bytes[:])]) - if name == "." || name == ".." { // Useless names - continue - } - max-- - count++ - names = append(names, name) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false } - return origlen - len(buf), count, names + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true } //sysnb pipe(p *[2]_C_int) (n int, err error) @@ -434,7 +422,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { return } -//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.recvmsg +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { var msg Msghdr @@ -453,7 +441,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from iov.Base = &dummy iov.SetLen(1) } - msg.Accrights = (*int8)(unsafe.Pointer(&oob[0])) + msg.Accrightslen = int32(len(oob)) } msg.Iov = &iov msg.Iovlen = 1 @@ -473,7 +461,7 @@ func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { return } -//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.sendmsg +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { var ptr unsafe.Pointer @@ -499,7 +487,7 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) iov.Base = &dummy iov.SetLen(1) } - msg.Accrights = (*int8)(unsafe.Pointer(&oob[0])) + msg.Accrightslen = int32(len(oob)) } msg.Iov = &iov msg.Iovlen = 1 @@ -531,43 +519,43 @@ func Acct(path string) (err error) { * Expose the ioctl function */ -//sys ioctl(fd int, req int, arg uintptr) (err error) +//sys ioctl(fd int, req uint, arg uintptr) (err error) -func IoctlSetInt(fd int, req int, value int) (err error) { +func IoctlSetInt(fd int, req uint, value int) (err error) { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req int, value *Winsize) (err error) { +func IoctlSetWinsize(fd int, req uint, value *Winsize) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req int, value *Termios) (err error) { +func IoctlSetTermios(fd int, req uint, value *Termios) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermio(fd int, req int, value *Termio) (err error) { +func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlGetInt(fd int, req int) (int, error) { +func IoctlGetInt(fd int, req uint) (int, error) { var value int err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) return value, err } -func IoctlGetWinsize(fd int, req int) (*Winsize, error) { +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { var value Winsize err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) return &value, err } -func IoctlGetTermios(fd int, req int) (*Termios, error) { +func IoctlGetTermios(fd int, req uint) (*Termios, error) { var value Termios err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) return &value, err } -func IoctlGetTermio(fd int, req int) (*Termio, error) { +func IoctlGetTermio(fd int, req uint) (*Termio, error) { var value Termio err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) return &value, err @@ -593,8 +581,10 @@ func IoctlGetTermio(fd int, req int) (*Termio, error) { //sys Fchown(fd int, uid int, gid int) (err error) //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys Fdatasync(fd int) (err error) +//sys Flock(fd int, how int) (err error) //sys Fpathconf(fd int, name int) (val int, err error) //sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) //sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) //sysnb Getgid() (gid int) //sysnb Getpid() (pid int) @@ -611,7 +601,7 @@ func IoctlGetTermio(fd int, req int) (*Termio, error) { //sys Kill(pid int, signum syscall.Signal) (err error) //sys Lchown(path string, uid int, gid int) (err error) //sys Link(path string, link string) (err error) -//sys Listen(s int, backlog int) (err error) = libsocket.listen +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten //sys Lstat(path string, stat *Stat_t) (err error) //sys Madvise(b []byte, advice int) (err error) //sys Mkdir(path string, mode uint32) (err error) @@ -651,6 +641,7 @@ func IoctlGetTermio(fd int, req int) (*Termio, error) { //sysnb Setuid(uid int) (err error) //sys Shutdown(s int, how int) (err error) = libsocket.shutdown //sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs(path string, vfsstat *Statvfs_t) (err error) //sys Symlink(path string, link string) (err error) //sys Sync() (err error) //sysnb Times(tms *Tms) (ticks uintptr, err error) @@ -664,15 +655,15 @@ func IoctlGetTermio(fd int, req int) (*Termio, error) { //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys Utime(path string, buf *Utimbuf) (err error) -//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.bind -//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.connect +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) -//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.sendto -//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.socket -//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.socketpair +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto +//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair //sys write(fd int, p []byte) (n int, err error) -//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.getsockopt +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt //sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername //sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt //sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_test.go b/vendor/golang.org/x/sys/unix/syscall_solaris_test.go new file mode 100644 index 0000000000..d3e7d2b2e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_test.go @@ -0,0 +1,34 @@ +// Copyright 2017 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 solaris + +package unix_test + +import ( + "os/exec" + "testing" + + "golang.org/x/sys/unix" +) + +func TestStatvfs(t *testing.T) { + if err := unix.Statvfs("", nil); err == nil { + t.Fatal(`Statvfs("") expected failure`) + } + + statvfs := unix.Statvfs_t{} + if err := unix.Statvfs("/", &statvfs); err != nil { + t.Errorf(`Statvfs("/") failed: %v`, err) + } + + if t.Failed() { + mount, err := exec.Command("mount").CombinedOutput() + if err != nil { + t.Logf("mount: %v\n%s", err, mount) + } else { + t.Logf("mount: %s", mount) + } + } +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index b46b25028c..3ed8a91f5c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -23,6 +23,7 @@ const ( darwin64Bit = runtime.GOOS == "darwin" && sizeofPtr == 8 dragonfly64Bit = runtime.GOOS == "dragonfly" && sizeofPtr == 8 netbsd32Bit = runtime.GOOS == "netbsd" && sizeofPtr == 4 + solaris64Bit = runtime.GOOS == "solaris" && sizeofPtr == 8 ) // Do the interface allocations only once for common @@ -49,11 +50,6 @@ func errnoErr(e syscall.Errno) error { return e } -func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) -func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) -func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) -func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) - // Mmap manager, for use by operating system-specific implementations. type mmapper struct { diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go new file mode 100644 index 0000000000..4cb8e8edf1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -0,0 +1,15 @@ +// 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 darwin dragonfly freebsd linux netbsd openbsd solaris +// +build !gccgo + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_test.go b/vendor/golang.org/x/sys/unix/syscall_unix_test.go index 49208a000d..394b3502ea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_test.go @@ -86,14 +86,6 @@ func TestFcntlFlock(t *testing.T) { // "-test.run=^TestPassFD$" and an environment variable used to signal // that the test should become the child process instead. func TestPassFD(t *testing.T) { - switch runtime.GOOS { - case "dragonfly": - // TODO(jsing): Figure out why sendmsg is returning EINVAL. - t.Skip("skipping test on dragonfly") - case "solaris": - // TODO(aram): Figure out why ReadMsgUnix is returning empty message. - t.Skip("skipping test on solaris, see issue 7402") - } if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { passFDChild() return diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go index 1153261822..415124d4a1 100644 --- a/vendor/golang.org/x/sys/unix/types_darwin.go +++ b/vendor/golang.org/x/sys/unix/types_darwin.go @@ -5,7 +5,7 @@ // +build ignore /* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh +Input to cgo -godefs. See README.md */ // +godefs map struct_in_addr [4]byte /* in_addr */ @@ -242,9 +242,13 @@ type BpfHdr C.struct_bpf_hdr type Termios C.struct_termios +type Winsize C.struct_winsize + // fchmodat-like syscalls. const ( AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go index f3c971dffd..80b27781d1 100644 --- a/vendor/golang.org/x/sys/unix/types_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go @@ -5,7 +5,7 @@ // +build ignore /* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh +Input to cgo -godefs. See README.md */ // +godefs map struct_in_addr [4]byte /* in_addr */ @@ -240,3 +240,10 @@ type BpfHdr C.struct_bpf_hdr // Terminal handling type Termios C.struct_termios + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go index ae24557ad1..934fd7ace2 100644 --- a/vendor/golang.org/x/sys/unix/types_freebsd.go +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -5,7 +5,7 @@ // +build ignore /* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh +Input to cgo -godefs. See README.md */ // +godefs map struct_in_addr [4]byte /* in_addr */ @@ -21,6 +21,7 @@ package unix #include #include #include +#include #include #include #include @@ -130,7 +131,10 @@ struct if_data8 { u_long ifi_iqdrops; u_long ifi_noproto; u_long ifi_hwassist; +// FIXME: these are now unions, so maybe need to change definitions? +#undef ifi_epoch time_t ifi_epoch; +#undef ifi_lastchange struct timeval ifi_lastchange; }; @@ -351,3 +355,18 @@ type BpfZbufHeader C.struct_bpf_zbuf_header // Terminal handling type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// Capabilities + +type CapRights C.struct_cap_rights diff --git a/vendor/golang.org/x/sys/unix/types_linux.go b/vendor/golang.org/x/sys/unix/types_linux.go deleted file mode 100644 index 7dea79a8ef..0000000000 --- a/vendor/golang.org/x/sys/unix/types_linux.go +++ /dev/null @@ -1,450 +0,0 @@ -// 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. - -// +build ignore - -/* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define _LARGEFILE_SOURCE -#define _LARGEFILE64_SOURCE -#define _FILE_OFFSET_BITS 64 -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef TCSETS2 -// On systems that have "struct termios2" use this as type Termios. -typedef struct termios2 termios_t; -#else -typedef struct termios termios_t; -#endif - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_ll s5; - struct sockaddr_nl s6; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -// copied from /usr/include/linux/un.h -struct my_sockaddr_un { - sa_family_t sun_family; -#if defined(__ARM_EABI__) || defined(__powerpc64__) - // on ARM char is by default unsigned - signed char sun_path[108]; -#else - char sun_path[108]; -#endif -}; - -#ifdef __ARM_EABI__ -typedef struct user_regs PtraceRegs; -#elif defined(__aarch64__) -typedef struct user_pt_regs PtraceRegs; -#elif defined(__powerpc64__) -typedef struct pt_regs PtraceRegs; -#elif defined(__mips__) -typedef struct user PtraceRegs; -#elif defined(__s390x__) -typedef struct _user_regs_struct PtraceRegs; -#else -typedef struct user_regs_struct PtraceRegs; -#endif - -#if defined(__s390x__) -typedef struct _user_psw_struct ptracePsw; -typedef struct _user_fpregs_struct ptraceFpregs; -typedef struct _user_per_struct ptracePer; -#else -typedef struct {} ptracePsw; -typedef struct {} ptraceFpregs; -typedef struct {} ptracePer; -#endif - -// The real epoll_event is a union, and godefs doesn't handle it well. -struct my_epoll_event { - uint32_t events; -#if defined(__ARM_EABI__) || defined(__aarch64__) - // padding is not specified in linux/eventpoll.h but added to conform to the - // alignment requirements of EABI - int32_t padFd; -#elif defined(__powerpc64__) || defined(__s390x__) - int32_t _padFd; -#endif - int32_t fd; - int32_t pad; -}; - -*/ -import "C" - -// Machine characteristics; for internal use. - -const ( - sizeofPtr = C.sizeofPtr - sizeofShort = C.sizeof_short - sizeofInt = C.sizeof_int - sizeofLong = C.sizeof_long - sizeofLongLong = C.sizeof_longlong - PathMax = C.PATH_MAX -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -type Timex C.struct_timex - -type Time_t C.time_t - -type Tms C.struct_tms - -type Utimbuf C.struct_utimbuf - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat - -type Statfs_t C.struct_statfs - -type Dirent C.struct_dirent - -type Fsid C.fsid_t - -type Flock_t C.struct_flock - -// Advice to Fadvise - -const ( - FADV_NORMAL = C.POSIX_FADV_NORMAL - FADV_RANDOM = C.POSIX_FADV_RANDOM - FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL - FADV_WILLNEED = C.POSIX_FADV_WILLNEED - FADV_DONTNEED = C.POSIX_FADV_DONTNEED - FADV_NOREUSE = C.POSIX_FADV_NOREUSE -) - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_my_sockaddr_un - -type RawSockaddrLinklayer C.struct_sockaddr_ll - -type RawSockaddrNetlink C.struct_sockaddr_nl - -type RawSockaddrHCI C.struct_sockaddr_hci - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPMreqn C.struct_ip_mreqn - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet4Pktinfo C.struct_in_pktinfo - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -type Ucred C.struct_ucred - -type TCPInfo C.struct_tcp_info - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll - SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl - SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPMreqn = C.sizeof_struct_ip_mreqn - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter - SizeofUcred = C.sizeof_struct_ucred - SizeofTCPInfo = C.sizeof_struct_tcp_info -) - -// Netlink routing and interface messages - -const ( - IFA_UNSPEC = C.IFA_UNSPEC - IFA_ADDRESS = C.IFA_ADDRESS - IFA_LOCAL = C.IFA_LOCAL - IFA_LABEL = C.IFA_LABEL - IFA_BROADCAST = C.IFA_BROADCAST - IFA_ANYCAST = C.IFA_ANYCAST - IFA_CACHEINFO = C.IFA_CACHEINFO - IFA_MULTICAST = C.IFA_MULTICAST - IFLA_UNSPEC = C.IFLA_UNSPEC - IFLA_ADDRESS = C.IFLA_ADDRESS - IFLA_BROADCAST = C.IFLA_BROADCAST - IFLA_IFNAME = C.IFLA_IFNAME - IFLA_MTU = C.IFLA_MTU - IFLA_LINK = C.IFLA_LINK - IFLA_QDISC = C.IFLA_QDISC - IFLA_STATS = C.IFLA_STATS - IFLA_COST = C.IFLA_COST - IFLA_PRIORITY = C.IFLA_PRIORITY - IFLA_MASTER = C.IFLA_MASTER - IFLA_WIRELESS = C.IFLA_WIRELESS - IFLA_PROTINFO = C.IFLA_PROTINFO - IFLA_TXQLEN = C.IFLA_TXQLEN - IFLA_MAP = C.IFLA_MAP - IFLA_WEIGHT = C.IFLA_WEIGHT - IFLA_OPERSTATE = C.IFLA_OPERSTATE - IFLA_LINKMODE = C.IFLA_LINKMODE - IFLA_LINKINFO = C.IFLA_LINKINFO - IFLA_NET_NS_PID = C.IFLA_NET_NS_PID - IFLA_IFALIAS = C.IFLA_IFALIAS - IFLA_MAX = C.IFLA_MAX - RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE - RT_SCOPE_SITE = C.RT_SCOPE_SITE - RT_SCOPE_LINK = C.RT_SCOPE_LINK - RT_SCOPE_HOST = C.RT_SCOPE_HOST - RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE - RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC - RT_TABLE_COMPAT = C.RT_TABLE_COMPAT - RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT - RT_TABLE_MAIN = C.RT_TABLE_MAIN - RT_TABLE_LOCAL = C.RT_TABLE_LOCAL - RT_TABLE_MAX = C.RT_TABLE_MAX - RTA_UNSPEC = C.RTA_UNSPEC - RTA_DST = C.RTA_DST - RTA_SRC = C.RTA_SRC - RTA_IIF = C.RTA_IIF - RTA_OIF = C.RTA_OIF - RTA_GATEWAY = C.RTA_GATEWAY - RTA_PRIORITY = C.RTA_PRIORITY - RTA_PREFSRC = C.RTA_PREFSRC - RTA_METRICS = C.RTA_METRICS - RTA_MULTIPATH = C.RTA_MULTIPATH - RTA_FLOW = C.RTA_FLOW - RTA_CACHEINFO = C.RTA_CACHEINFO - RTA_TABLE = C.RTA_TABLE - RTN_UNSPEC = C.RTN_UNSPEC - RTN_UNICAST = C.RTN_UNICAST - RTN_LOCAL = C.RTN_LOCAL - RTN_BROADCAST = C.RTN_BROADCAST - RTN_ANYCAST = C.RTN_ANYCAST - RTN_MULTICAST = C.RTN_MULTICAST - RTN_BLACKHOLE = C.RTN_BLACKHOLE - RTN_UNREACHABLE = C.RTN_UNREACHABLE - RTN_PROHIBIT = C.RTN_PROHIBIT - RTN_THROW = C.RTN_THROW - RTN_NAT = C.RTN_NAT - RTN_XRESOLVE = C.RTN_XRESOLVE - RTNLGRP_NONE = C.RTNLGRP_NONE - RTNLGRP_LINK = C.RTNLGRP_LINK - RTNLGRP_NOTIFY = C.RTNLGRP_NOTIFY - RTNLGRP_NEIGH = C.RTNLGRP_NEIGH - RTNLGRP_TC = C.RTNLGRP_TC - RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR - RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE - RTNLGRP_IPV4_ROUTE = C.RTNLGRP_IPV4_ROUTE - RTNLGRP_IPV4_RULE = C.RTNLGRP_IPV4_RULE - RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR - RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE - RTNLGRP_IPV6_ROUTE = C.RTNLGRP_IPV6_ROUTE - RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO - RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX - RTNLGRP_IPV6_RULE = C.RTNLGRP_IPV6_RULE - RTNLGRP_ND_USEROPT = C.RTNLGRP_ND_USEROPT - SizeofNlMsghdr = C.sizeof_struct_nlmsghdr - SizeofNlMsgerr = C.sizeof_struct_nlmsgerr - SizeofRtGenmsg = C.sizeof_struct_rtgenmsg - SizeofNlAttr = C.sizeof_struct_nlattr - SizeofRtAttr = C.sizeof_struct_rtattr - SizeofIfInfomsg = C.sizeof_struct_ifinfomsg - SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg - SizeofRtMsg = C.sizeof_struct_rtmsg - SizeofRtNexthop = C.sizeof_struct_rtnexthop -) - -type NlMsghdr C.struct_nlmsghdr - -type NlMsgerr C.struct_nlmsgerr - -type RtGenmsg C.struct_rtgenmsg - -type NlAttr C.struct_nlattr - -type RtAttr C.struct_rtattr - -type IfInfomsg C.struct_ifinfomsg - -type IfAddrmsg C.struct_ifaddrmsg - -type RtMsg C.struct_rtmsg - -type RtNexthop C.struct_rtnexthop - -// Linux socket filter - -const ( - SizeofSockFilter = C.sizeof_struct_sock_filter - SizeofSockFprog = C.sizeof_struct_sock_fprog -) - -type SockFilter C.struct_sock_filter - -type SockFprog C.struct_sock_fprog - -// Inotify - -type InotifyEvent C.struct_inotify_event - -const SizeofInotifyEvent = C.sizeof_struct_inotify_event - -// Ptrace - -// Register structures -type PtraceRegs C.PtraceRegs - -// Structures contained in PtraceRegs on s390x (exported by mkpost.go) -type ptracePsw C.ptracePsw - -type ptraceFpregs C.ptraceFpregs - -type ptracePer C.ptracePer - -// Misc - -type FdSet C.fd_set - -type Sysinfo_t C.struct_sysinfo - -type Utsname C.struct_utsname - -type Ustat_t C.struct_ustat - -type EpollEvent C.struct_my_epoll_event - -const ( - AT_FDCWD = C.AT_FDCWD - AT_REMOVEDIR = C.AT_REMOVEDIR - AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -type PollFd C.struct_pollfd - -const ( - POLLIN = C.POLLIN - POLLPRI = C.POLLPRI - POLLOUT = C.POLLOUT - POLLRDHUP = C.POLLRDHUP - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLNVAL = C.POLLNVAL -) - -type Sigset_t C.sigset_t - -// Terminal handling - -type Termios C.termios_t diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go index d15f93d192..cb95c80aab 100644 --- a/vendor/golang.org/x/sys/unix/types_netbsd.go +++ b/vendor/golang.org/x/sys/unix/types_netbsd.go @@ -5,7 +5,7 @@ // +build ignore /* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh +Input to cgo -godefs. See README.md */ // +godefs map struct_in_addr [4]byte /* in_addr */ @@ -227,6 +227,13 @@ type BpfTimeval C.struct_bpf_timeval type Termios C.struct_termios +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + // Sysctl type Sysctlnode C.struct_sysctlnode diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go index b66fe25f73..392da69bf0 100644 --- a/vendor/golang.org/x/sys/unix/types_openbsd.go +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -5,7 +5,7 @@ // +build ignore /* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh +Input to cgo -godefs. See README.md */ // +godefs map struct_in_addr [4]byte /* in_addr */ @@ -242,3 +242,10 @@ type BpfTimeval C.struct_bpf_timeval // Terminal handling type Termios C.struct_termios + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go index c5d5c8f16a..393c7f04fb 100644 --- a/vendor/golang.org/x/sys/unix/types_solaris.go +++ b/vendor/golang.org/x/sys/unix/types_solaris.go @@ -5,7 +5,7 @@ // +build ignore /* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh +Input to cgo -godefs. See README.md */ // +godefs map struct_in_addr [4]byte /* in_addr */ @@ -37,6 +37,7 @@ package unix #include #include #include +#include #include #include #include @@ -139,6 +140,12 @@ type Flock_t C.struct_flock type Dirent C.struct_dirent +// Filesystems + +type _Fsblkcnt_t C.fsblkcnt_t + +type Statvfs_t C.struct_statvfs + // Sockets type RawSockaddrInet4 C.struct_sockaddr_in diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index 8e63888351..1c68758b64 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -1,5 +1,5 @@ // mkerrors.sh -m32 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,darwin @@ -48,6 +48,7 @@ const ( AF_UNIX = 0x1 AF_UNSPEC = 0x0 AF_UTUN = 0x26 + ALTWERASE = 0x200 B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -138,9 +139,26 @@ const ( BPF_W = 0x0 BPF_X = 0x8 BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 CFLUSH = 0xf CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 CREAD = 0x800 + CRTSCTS = 0x30000 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -332,13 +350,14 @@ const ( ECHONL = 0x10 ECHOPRT = 0x20 EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf EVFILT_FS = -0x9 EVFILT_MACHPORT = -0x8 EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xe - EVFILT_THREADMARKER = 0xe + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf EVFILT_TIMER = -0x7 EVFILT_USER = -0xa EVFILT_VM = -0xc @@ -349,6 +368,7 @@ const ( EV_DELETE = 0x2 EV_DISABLE = 0x8 EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 EV_ENABLE = 0x4 EV_EOF = 0x8000 EV_ERROR = 0x4000 @@ -359,16 +379,25 @@ const ( EV_POLL = 0x1000 EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 EXTA = 0x4b00 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 FLUSHO = 0x800000 F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 F_ADDSIGS = 0x3b F_ALLOCATEALL = 0x4 F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 F_CHKCLEAN = 0x29 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x43 @@ -770,11 +799,13 @@ const ( MADV_FREE_REUSABLE = 0x7 MADV_FREE_REUSE = 0x8 MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa MADV_RANDOM = 0x1 MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 MADV_ZERO_WIRED_PAGES = 0x6 MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 @@ -786,9 +817,43 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x20 MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 MAP_SHARED = 0x1 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 MSG_DONTWAIT = 0x80 @@ -819,7 +884,13 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 NOTE_ABSOLUTE = 0x8 NOTE_ATTRIB = 0x8 NOTE_BACKGROUND = 0x40 @@ -843,11 +914,14 @@ const ( NOTE_FFNOP = 0x0 NOTE_FFOR = 0x80000000 NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 NOTE_LEEWAY = 0x10 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 NOTE_NONE = 0x80 NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 NOTE_PCTRLMASK = -0x100000 NOTE_PDATAMASK = 0xfffff NOTE_REAP = 0x10000000 @@ -872,6 +946,7 @@ const ( ONOCR = 0x20 ONOEOT = 0x8 OPOST = 0x1 + OXTABS = 0x4 O_ACCMODE = 0x3 O_ALERT = 0x20000000 O_APPEND = 0x8 @@ -880,6 +955,7 @@ const ( O_CREAT = 0x200 O_DIRECTORY = 0x100000 O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 O_DSYNC = 0x400000 O_EVTONLY = 0x8000 O_EXCL = 0x800 @@ -932,7 +1008,10 @@ const ( RLIMIT_CPU_USAGE_MONITOR = 0x2 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 @@ -1102,6 +1181,8 @@ const ( SO_LABEL = 0x1010 SO_LINGER = 0x80 SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 SO_NKE = 0x1021 SO_NOADDRERR = 0x1023 SO_NOSIGPIPE = 0x1022 @@ -1157,11 +1238,22 @@ const ( S_IXGRP = 0x8 S_IXOTH = 0x1 S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 TCIFLUSH = 0x1 + TCIOFF = 0x3 TCIOFLUSH = 0x3 + TCION = 0x4 TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 TCP_KEEPALIVE = 0x10 TCP_KEEPCNT = 0x102 TCP_KEEPINTVL = 0x101 @@ -1261,6 +1353,11 @@ const ( VKILL = 0x5 VLNEXT = 0xe VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 VQUIT = 0x9 VREPRINT = 0x6 VSTART = 0xc diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 9594f93817..48f63d4f0c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -1,5 +1,5 @@ // mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,darwin @@ -48,6 +48,7 @@ const ( AF_UNIX = 0x1 AF_UNSPEC = 0x0 AF_UTUN = 0x26 + ALTWERASE = 0x200 B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -138,9 +139,26 @@ const ( BPF_W = 0x0 BPF_X = 0x8 BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 CFLUSH = 0xf CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 CREAD = 0x800 + CRTSCTS = 0x30000 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -332,13 +350,14 @@ const ( ECHONL = 0x10 ECHOPRT = 0x20 EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf EVFILT_FS = -0x9 EVFILT_MACHPORT = -0x8 EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xe - EVFILT_THREADMARKER = 0xe + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf EVFILT_TIMER = -0x7 EVFILT_USER = -0xa EVFILT_VM = -0xc @@ -349,6 +368,7 @@ const ( EV_DELETE = 0x2 EV_DISABLE = 0x8 EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 EV_ENABLE = 0x4 EV_EOF = 0x8000 EV_ERROR = 0x4000 @@ -359,16 +379,25 @@ const ( EV_POLL = 0x1000 EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 EXTA = 0x4b00 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 FLUSHO = 0x800000 F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 F_ADDSIGS = 0x3b F_ALLOCATEALL = 0x4 F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 F_CHKCLEAN = 0x29 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x43 @@ -770,11 +799,13 @@ const ( MADV_FREE_REUSABLE = 0x7 MADV_FREE_REUSE = 0x8 MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa MADV_RANDOM = 0x1 MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 MADV_ZERO_WIRED_PAGES = 0x6 MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 @@ -786,9 +817,43 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x20 MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 MAP_SHARED = 0x1 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 MSG_DONTWAIT = 0x80 @@ -819,7 +884,13 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 NOTE_ABSOLUTE = 0x8 NOTE_ATTRIB = 0x8 NOTE_BACKGROUND = 0x40 @@ -843,11 +914,14 @@ const ( NOTE_FFNOP = 0x0 NOTE_FFOR = 0x80000000 NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 NOTE_LEEWAY = 0x10 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 NOTE_NONE = 0x80 NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 NOTE_PCTRLMASK = -0x100000 NOTE_PDATAMASK = 0xfffff NOTE_REAP = 0x10000000 @@ -872,6 +946,7 @@ const ( ONOCR = 0x20 ONOEOT = 0x8 OPOST = 0x1 + OXTABS = 0x4 O_ACCMODE = 0x3 O_ALERT = 0x20000000 O_APPEND = 0x8 @@ -880,6 +955,7 @@ const ( O_CREAT = 0x200 O_DIRECTORY = 0x100000 O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 O_DSYNC = 0x400000 O_EVTONLY = 0x8000 O_EXCL = 0x800 @@ -932,7 +1008,10 @@ const ( RLIMIT_CPU_USAGE_MONITOR = 0x2 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 @@ -1102,6 +1181,8 @@ const ( SO_LABEL = 0x1010 SO_LINGER = 0x80 SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 SO_NKE = 0x1021 SO_NOADDRERR = 0x1023 SO_NOSIGPIPE = 0x1022 @@ -1157,11 +1238,22 @@ const ( S_IXGRP = 0x8 S_IXOTH = 0x1 S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 TCIFLUSH = 0x1 + TCIOFF = 0x3 TCIOFLUSH = 0x3 + TCION = 0x4 TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 TCP_KEEPALIVE = 0x10 TCP_KEEPCNT = 0x102 TCP_KEEPINTVL = 0x101 @@ -1261,6 +1353,11 @@ const ( VKILL = 0x5 VLNEXT = 0xe VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 VQUIT = 0x9 VREPRINT = 0x6 VSTART = 0xc diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index a410e88edd..24cb522d9b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -1,11 +1,11 @@ // mkerrors.sh -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin // Created by cgo -godefs - DO NOT EDIT // cgo -godefs -- _const.go -// +build arm,darwin - package unix import "syscall" @@ -48,6 +48,7 @@ const ( AF_UNIX = 0x1 AF_UNSPEC = 0x0 AF_UTUN = 0x26 + ALTWERASE = 0x200 B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -86,6 +87,7 @@ const ( BIOCSBLEN = 0xc0044266 BIOCSDLT = 0x80044278 BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e BIOCSETIF = 0x8020426c BIOCSHDRCMPLT = 0x80044275 BIOCSRSIG = 0x80044273 @@ -137,9 +139,26 @@ const ( BPF_W = 0x0 BPF_X = 0x8 BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 CFLUSH = 0xf CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 CREAD = 0x800 + CRTSCTS = 0x30000 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -152,33 +171,168 @@ const ( CSUSP = 0x1a CTL_MAXNAME = 0xc CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde DLT_APPLE_IP_OVER_IEEE1394 = 0x8a DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 DLT_ATM_CLIP = 0x13 DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 DLT_CHAOS = 0x5 DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 DLT_EN10MB = 0x1 DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 DLT_IEEE802 = 0x6 DLT_IEEE802_11 = 0x69 DLT_IEEE802_11_RADIO = 0x7f DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d DLT_PFLOG = 0x75 DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 DLT_PPP = 0x9 DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 DLT_SLIP = 0x8 DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -196,13 +350,14 @@ const ( ECHONL = 0x10 ECHOPRT = 0x20 EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf EVFILT_FS = -0x9 EVFILT_MACHPORT = -0x8 EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xe - EVFILT_THREADMARKER = 0xe + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf EVFILT_TIMER = -0x7 EVFILT_USER = -0xa EVFILT_VM = -0xc @@ -213,6 +368,7 @@ const ( EV_DELETE = 0x2 EV_DISABLE = 0x8 EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 EV_ENABLE = 0x4 EV_EOF = 0x8000 EV_ERROR = 0x4000 @@ -223,16 +379,25 @@ const ( EV_POLL = 0x1000 EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 EXTA = 0x4b00 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 FLUSHO = 0x800000 F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 F_ADDSIGS = 0x3b F_ALLOCATEALL = 0x4 F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 F_CHKCLEAN = 0x29 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x43 @@ -347,6 +512,7 @@ const ( IFT_PDP = 0xff IFT_PFLOG = 0xf5 IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe IFT_PPP = 0x17 IFT_PROPMUX = 0x36 IFT_PROPVIRTUAL = 0x35 @@ -515,7 +681,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 - IPV6_FRAGTTL = 0x78 + IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f IPV6_FW_FLUSH = 0x20 @@ -633,11 +799,13 @@ const ( MADV_FREE_REUSABLE = 0x7 MADV_FREE_REUSE = 0x8 MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa MADV_RANDOM = 0x1 MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 MADV_ZERO_WIRED_PAGES = 0x6 MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 @@ -649,9 +817,43 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x20 MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 MAP_SHARED = 0x1 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 MSG_DONTWAIT = 0x80 @@ -682,7 +884,13 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 NOTE_ABSOLUTE = 0x8 NOTE_ATTRIB = 0x8 NOTE_BACKGROUND = 0x40 @@ -706,11 +914,14 @@ const ( NOTE_FFNOP = 0x0 NOTE_FFOR = 0x80000000 NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 NOTE_LEEWAY = 0x10 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 NOTE_NONE = 0x80 NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 NOTE_PCTRLMASK = -0x100000 NOTE_PDATAMASK = 0xfffff NOTE_REAP = 0x10000000 @@ -735,6 +946,7 @@ const ( ONOCR = 0x20 ONOEOT = 0x8 OPOST = 0x1 + OXTABS = 0x4 O_ACCMODE = 0x3 O_ALERT = 0x20000000 O_APPEND = 0x8 @@ -743,6 +955,7 @@ const ( O_CREAT = 0x200 O_DIRECTORY = 0x100000 O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 O_DSYNC = 0x400000 O_EVTONLY = 0x8000 O_EXCL = 0x800 @@ -795,7 +1008,10 @@ const ( RLIMIT_CPU_USAGE_MONITOR = 0x2 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 @@ -830,6 +1046,7 @@ const ( RTF_LOCAL = 0x200000 RTF_MODIFIED = 0x20 RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 RTF_PINNED = 0x100000 RTF_PRCLONING = 0x10000 RTF_PROTO1 = 0x8000 @@ -964,6 +1181,8 @@ const ( SO_LABEL = 0x1010 SO_LINGER = 0x80 SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 SO_NKE = 0x1021 SO_NOADDRERR = 0x1023 SO_NOSIGPIPE = 0x1022 @@ -1019,11 +1238,22 @@ const ( S_IXGRP = 0x8 S_IXOTH = 0x1 S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 TCIFLUSH = 0x1 + TCIOFF = 0x3 TCIOFLUSH = 0x3 + TCION = 0x4 TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 TCP_KEEPALIVE = 0x10 TCP_KEEPCNT = 0x102 TCP_KEEPINTVL = 0x101 @@ -1123,6 +1353,11 @@ const ( VKILL = 0x5 VLNEXT = 0xe VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 VQUIT = 0x9 VREPRINT = 0x6 VSTART = 0xc @@ -1291,3 +1526,148 @@ const ( SIGXCPU = syscall.Signal(0x18) SIGXFSZ = syscall.Signal(0x19) ) + +// Error table +var errors = [...]string{ + 1: "operation not permitted", + 2: "no such file or directory", + 3: "no such process", + 4: "interrupted system call", + 5: "input/output error", + 6: "device not configured", + 7: "argument list too long", + 8: "exec format error", + 9: "bad file descriptor", + 10: "no child processes", + 11: "resource deadlock avoided", + 12: "cannot allocate memory", + 13: "permission denied", + 14: "bad address", + 15: "block device required", + 16: "resource busy", + 17: "file exists", + 18: "cross-device link", + 19: "operation not supported by device", + 20: "not a directory", + 21: "is a directory", + 22: "invalid argument", + 23: "too many open files in system", + 24: "too many open files", + 25: "inappropriate ioctl for device", + 26: "text file busy", + 27: "file too large", + 28: "no space left on device", + 29: "illegal seek", + 30: "read-only file system", + 31: "too many links", + 32: "broken pipe", + 33: "numerical argument out of domain", + 34: "result too large", + 35: "resource temporarily unavailable", + 36: "operation now in progress", + 37: "operation already in progress", + 38: "socket operation on non-socket", + 39: "destination address required", + 40: "message too long", + 41: "protocol wrong type for socket", + 42: "protocol not available", + 43: "protocol not supported", + 44: "socket type not supported", + 45: "operation not supported", + 46: "protocol family not supported", + 47: "address family not supported by protocol family", + 48: "address already in use", + 49: "can't assign requested address", + 50: "network is down", + 51: "network is unreachable", + 52: "network dropped connection on reset", + 53: "software caused connection abort", + 54: "connection reset by peer", + 55: "no buffer space available", + 56: "socket is already connected", + 57: "socket is not connected", + 58: "can't send after socket shutdown", + 59: "too many references: can't splice", + 60: "operation timed out", + 61: "connection refused", + 62: "too many levels of symbolic links", + 63: "file name too long", + 64: "host is down", + 65: "no route to host", + 66: "directory not empty", + 67: "too many processes", + 68: "too many users", + 69: "disc quota exceeded", + 70: "stale NFS file handle", + 71: "too many levels of remote in path", + 72: "RPC struct is bad", + 73: "RPC version wrong", + 74: "RPC prog. not avail", + 75: "program version wrong", + 76: "bad procedure for program", + 77: "no locks available", + 78: "function not implemented", + 79: "inappropriate file type or format", + 80: "authentication error", + 81: "need authenticator", + 82: "device power is off", + 83: "device error", + 84: "value too large to be stored in data type", + 85: "bad executable (or shared library)", + 86: "bad CPU type in executable", + 87: "shared library version mismatch", + 88: "malformed Mach-o file", + 89: "operation canceled", + 90: "identifier removed", + 91: "no message of desired type", + 92: "illegal byte sequence", + 93: "attribute not found", + 94: "bad message", + 95: "EMULTIHOP (Reserved)", + 96: "no message available on STREAM", + 97: "ENOLINK (Reserved)", + 98: "no STREAM resources", + 99: "not a STREAM", + 100: "protocol error", + 101: "STREAM ioctl timeout", + 102: "operation not supported on socket", + 103: "policy not found", + 104: "state not recoverable", + 105: "previous owner died", + 106: "interface output queue is full", +} + +// Signal table +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/BPT trap", + 6: "abort trap", + 7: "EMT trap", + 8: "floating point exception", + 9: "killed", + 10: "bus error", + 11: "segmentation fault", + 12: "bad system call", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", + 16: "urgent I/O condition", + 17: "suspended (signal)", + 18: "suspended", + 19: "continued", + 20: "child exited", + 21: "stopped (tty input)", + 22: "stopped (tty output)", + 23: "I/O possible", + 24: "cputime limit exceeded", + 25: "filesize limit exceeded", + 26: "virtual timer expired", + 27: "profiling timer expired", + 28: "window size changes", + 29: "information request", + 30: "user defined signal 1", + 31: "user defined signal 2", +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index 3189c6b345..cc8cc5b57c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -1,5 +1,5 @@ // mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,darwin @@ -48,6 +48,7 @@ const ( AF_UNIX = 0x1 AF_UNSPEC = 0x0 AF_UTUN = 0x26 + ALTWERASE = 0x200 B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -138,9 +139,26 @@ const ( BPF_W = 0x0 BPF_X = 0x8 BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 CFLUSH = 0xf CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 CREAD = 0x800 + CRTSCTS = 0x30000 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -332,13 +350,14 @@ const ( ECHONL = 0x10 ECHOPRT = 0x20 EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf EVFILT_FS = -0x9 EVFILT_MACHPORT = -0x8 EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xe - EVFILT_THREADMARKER = 0xe + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf EVFILT_TIMER = -0x7 EVFILT_USER = -0xa EVFILT_VM = -0xc @@ -349,6 +368,7 @@ const ( EV_DELETE = 0x2 EV_DISABLE = 0x8 EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 EV_ENABLE = 0x4 EV_EOF = 0x8000 EV_ERROR = 0x4000 @@ -359,16 +379,25 @@ const ( EV_POLL = 0x1000 EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 EXTA = 0x4b00 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 FLUSHO = 0x800000 F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 F_ADDSIGS = 0x3b F_ALLOCATEALL = 0x4 F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 F_CHKCLEAN = 0x29 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x43 @@ -770,11 +799,13 @@ const ( MADV_FREE_REUSABLE = 0x7 MADV_FREE_REUSE = 0x8 MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa MADV_RANDOM = 0x1 MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 MADV_ZERO_WIRED_PAGES = 0x6 MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 @@ -786,9 +817,43 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x20 MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 MAP_SHARED = 0x1 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 MSG_DONTWAIT = 0x80 @@ -819,7 +884,13 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 NOTE_ABSOLUTE = 0x8 NOTE_ATTRIB = 0x8 NOTE_BACKGROUND = 0x40 @@ -843,11 +914,14 @@ const ( NOTE_FFNOP = 0x0 NOTE_FFOR = 0x80000000 NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 NOTE_LEEWAY = 0x10 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 NOTE_NONE = 0x80 NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 NOTE_PCTRLMASK = -0x100000 NOTE_PDATAMASK = 0xfffff NOTE_REAP = 0x10000000 @@ -872,6 +946,7 @@ const ( ONOCR = 0x20 ONOEOT = 0x8 OPOST = 0x1 + OXTABS = 0x4 O_ACCMODE = 0x3 O_ALERT = 0x20000000 O_APPEND = 0x8 @@ -880,6 +955,7 @@ const ( O_CREAT = 0x200 O_DIRECTORY = 0x100000 O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 O_DSYNC = 0x400000 O_EVTONLY = 0x8000 O_EXCL = 0x800 @@ -932,7 +1008,10 @@ const ( RLIMIT_CPU_USAGE_MONITOR = 0x2 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 @@ -1102,6 +1181,8 @@ const ( SO_LABEL = 0x1010 SO_LINGER = 0x80 SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 SO_NKE = 0x1021 SO_NOADDRERR = 0x1023 SO_NOSIGPIPE = 0x1022 @@ -1157,11 +1238,22 @@ const ( S_IXGRP = 0x8 S_IXOTH = 0x1 S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 TCIFLUSH = 0x1 + TCIOFF = 0x3 TCIOFLUSH = 0x3 + TCION = 0x4 TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 TCP_KEEPALIVE = 0x10 TCP_KEEPCNT = 0x102 TCP_KEEPINTVL = 0x101 @@ -1261,6 +1353,11 @@ const ( VKILL = 0x5 VLNEXT = 0xe VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 VQUIT = 0x9 VREPRINT = 0x6 VSTART = 0xc diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index 0feceee151..8f40598bb3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -1,5 +1,5 @@ // mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,dragonfly @@ -37,8 +37,8 @@ const ( AF_MAX = 0x24 AF_MPLS = 0x22 AF_NATM = 0x1d + AF_NETBIOS = 0x6 AF_NETGRAPH = 0x20 - AF_NS = 0x6 AF_OSI = 0x7 AF_PUP = 0x4 AF_ROUTE = 0x11 @@ -46,6 +46,7 @@ const ( AF_SNA = 0xb AF_UNIX = 0x1 AF_UNSPEC = 0x0 + ALTWERASE = 0x200 B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -141,7 +142,22 @@ const ( BRKINT = 0x2 CFLUSH = 0xf CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 CREAD = 0x800 + CRTSCTS = 0x30000 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -286,24 +302,28 @@ const ( ECHOPRT = 0x20 EVFILT_AIO = -0x3 EVFILT_EXCEPT = -0x8 + EVFILT_FS = -0xa EVFILT_MARKER = 0xf EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0x8 + EVFILT_SYSCOUNT = 0xa EVFILT_TIMER = -0x7 + EVFILT_USER = -0x9 EVFILT_VNODE = -0x4 EVFILT_WRITE = -0x2 EV_ADD = 0x1 EV_CLEAR = 0x20 EV_DELETE = 0x2 EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 EV_ENABLE = 0x4 EV_EOF = 0x8000 EV_ERROR = 0x4000 EV_FLAG1 = 0x2000 EV_NODATA = 0x1000 EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 EXTB = 0x9600 @@ -679,7 +699,6 @@ const ( IPPROTO_SATEXPAK = 0x40 IPPROTO_SATMON = 0x45 IPPROTO_SCCSP = 0x60 - IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEP = 0x21 IPPROTO_SKIP = 0x39 @@ -730,6 +749,7 @@ const ( IPV6_LEAVE_GROUP = 0xd IPV6_MAXHLIM = 0xff IPV6_MAXPACKET = 0xffff + IPV6_MINHLIM = 0x28 IPV6_MMTU = 0x500 IPV6_MSFILTER = 0x4a IPV6_MULTICAST_HOPS = 0xa @@ -778,6 +798,7 @@ const ( IP_FW_FLUSH = 0x34 IP_FW_GET = 0x36 IP_FW_RESETLOG = 0x37 + IP_FW_X = 0x31 IP_FW_ZERO = 0x35 IP_HDRINCL = 0x2 IP_IPSEC_POLICY = 0x15 @@ -833,6 +854,7 @@ const ( MADV_SETMAP = 0xb MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 @@ -851,6 +873,7 @@ const ( MAP_VPAGETABLE = 0x2000 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MSG_CMSG_CLOEXEC = 0x1000 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 MSG_DONTWAIT = 0x80 @@ -860,11 +883,11 @@ const ( MSG_FMASK = 0xffff0000 MSG_FNONBLOCKING = 0x20000 MSG_NOSIGNAL = 0x400 - MSG_NOTIFICATION = 0x200 MSG_OOB = 0x1 MSG_PEEK = 0x2 MSG_SYNC = 0x800 MSG_TRUNC = 0x10 + MSG_UNUSED09 = 0x200 MSG_WAITALL = 0x40 MS_ASYNC = 0x1 MS_INVALIDATE = 0x2 @@ -875,12 +898,19 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_MAXID = 0x4 NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 NOTE_DELETE = 0x1 NOTE_EXEC = 0x20000000 NOTE_EXIT = 0x80000000 NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 NOTE_FORK = 0x40000000 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 @@ -891,6 +921,7 @@ const ( NOTE_REVOKE = 0x40 NOTE_TRACK = 0x1 NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 NOTE_WRITE = 0x2 OCRNL = 0x10 ONLCR = 0x2 @@ -898,6 +929,7 @@ const ( ONOCR = 0x20 ONOEOT = 0x8 OPOST = 0x1 + OXTABS = 0x4 O_ACCMODE = 0x3 O_APPEND = 0x8 O_ASYNC = 0x40 @@ -910,14 +942,11 @@ const ( O_FAPPEND = 0x100000 O_FASYNCWRITE = 0x800000 O_FBLOCKING = 0x40000 - O_FBUFFERED = 0x2000000 - O_FMASK = 0x7fc0000 + O_FMASK = 0xfc0000 O_FNONBLOCKING = 0x80000 O_FOFFSET = 0x200000 O_FSYNC = 0x80 O_FSYNCWRITE = 0x400000 - O_FUNBUFFERED = 0x1000000 - O_MAPONREAD = 0x4000000 O_NDELAY = 0x4 O_NOCTTY = 0x8000 O_NOFOLLOW = 0x100 @@ -1096,8 +1125,10 @@ const ( SIOCSLIFPHYADDR = 0x8118694a SIOCSLOWAT = 0x80047302 SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x10000000 SOCK_DGRAM = 0x2 SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 SOCK_RAW = 0x3 SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 @@ -1107,6 +1138,7 @@ const ( SO_ACCEPTCONN = 0x2 SO_ACCEPTFILTER = 0x1000 SO_BROADCAST = 0x20 + SO_CPUHINT = 0x1030 SO_DEBUG = 0x1 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 @@ -1127,8 +1159,12 @@ const ( SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 TCIFLUSH = 0x1 + TCIOFF = 0x3 TCIOFLUSH = 0x3 + TCION = 0x4 TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 TCP_FASTKEEP = 0x80 TCP_KEEPCNT = 0x400 TCP_KEEPIDLE = 0x100 @@ -1227,6 +1263,8 @@ const ( VKILL = 0x5 VLNEXT = 0xe VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x0 + VM_SWZONE_SIZE_MAX = 0x4000000000 VQUIT = 0x9 VREPRINT = 0x6 VSTART = 0xc diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 7b95751c3d..1d3eec44d4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -1,5 +1,5 @@ // mkerrors.sh -m32 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,freebsd @@ -11,1456 +11,1419 @@ package unix import "syscall" const ( - AF_APPLETALK = 0x10 - AF_ARP = 0x23 - AF_ATM = 0x1e - AF_BLUETOOTH = 0x24 - AF_CCITT = 0xa - AF_CHAOS = 0x5 - AF_CNT = 0x15 - AF_COIP = 0x14 - AF_DATAKIT = 0x9 - AF_DECnet = 0xc - AF_DLI = 0xd - AF_E164 = 0x1a - AF_ECMA = 0x8 - AF_HYLINK = 0xf - AF_IEEE80211 = 0x25 - AF_IMPLINK = 0x3 - AF_INET = 0x2 - AF_INET6 = 0x1c - AF_INET6_SDP = 0x2a - AF_INET_SDP = 0x28 - AF_IPX = 0x17 - AF_ISDN = 0x1a - AF_ISO = 0x7 - AF_LAT = 0xe - AF_LINK = 0x12 - AF_LOCAL = 0x1 - AF_MAX = 0x2a - AF_NATM = 0x1d - AF_NETBIOS = 0x6 - AF_NETGRAPH = 0x20 - AF_OSI = 0x7 - AF_PUP = 0x4 - AF_ROUTE = 0x11 - AF_SCLUSTER = 0x22 - AF_SIP = 0x18 - AF_SLOW = 0x21 - AF_SNA = 0xb - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VENDOR00 = 0x27 - AF_VENDOR01 = 0x29 - AF_VENDOR02 = 0x2b - AF_VENDOR03 = 0x2d - AF_VENDOR04 = 0x2f - AF_VENDOR05 = 0x31 - AF_VENDOR06 = 0x33 - AF_VENDOR07 = 0x35 - AF_VENDOR08 = 0x37 - AF_VENDOR09 = 0x39 - AF_VENDOR10 = 0x3b - AF_VENDOR11 = 0x3d - AF_VENDOR12 = 0x3f - AF_VENDOR13 = 0x41 - AF_VENDOR14 = 0x43 - AF_VENDOR15 = 0x45 - AF_VENDOR16 = 0x47 - AF_VENDOR17 = 0x49 - AF_VENDOR18 = 0x4b - AF_VENDOR19 = 0x4d - AF_VENDOR20 = 0x4f - AF_VENDOR21 = 0x51 - AF_VENDOR22 = 0x53 - AF_VENDOR23 = 0x55 - AF_VENDOR24 = 0x57 - AF_VENDOR25 = 0x59 - AF_VENDOR26 = 0x5b - AF_VENDOR27 = 0x5d - AF_VENDOR28 = 0x5f - AF_VENDOR29 = 0x61 - AF_VENDOR30 = 0x63 - AF_VENDOR31 = 0x65 - AF_VENDOR32 = 0x67 - AF_VENDOR33 = 0x69 - AF_VENDOR34 = 0x6b - AF_VENDOR35 = 0x6d - AF_VENDOR36 = 0x6f - AF_VENDOR37 = 0x71 - AF_VENDOR38 = 0x73 - AF_VENDOR39 = 0x75 - AF_VENDOR40 = 0x77 - AF_VENDOR41 = 0x79 - AF_VENDOR42 = 0x7b - AF_VENDOR43 = 0x7d - AF_VENDOR44 = 0x7f - AF_VENDOR45 = 0x81 - AF_VENDOR46 = 0x83 - AF_VENDOR47 = 0x85 - B0 = 0x0 - B110 = 0x6e - B115200 = 0x1c200 - B1200 = 0x4b0 - B134 = 0x86 - B14400 = 0x3840 - B150 = 0x96 - B1800 = 0x708 - B19200 = 0x4b00 - B200 = 0xc8 - B230400 = 0x38400 - B2400 = 0x960 - B28800 = 0x7080 - B300 = 0x12c - B38400 = 0x9600 - B460800 = 0x70800 - B4800 = 0x12c0 - B50 = 0x32 - B57600 = 0xe100 - B600 = 0x258 - B7200 = 0x1c20 - B75 = 0x4b - B76800 = 0x12c00 - B921600 = 0xe1000 - B9600 = 0x2580 - BIOCFEEDBACK = 0x8004427c - BIOCFLUSH = 0x20004268 - BIOCGBLEN = 0x40044266 - BIOCGDIRECTION = 0x40044276 - BIOCGDLT = 0x4004426a - BIOCGDLTLIST = 0xc0084279 - BIOCGETBUFMODE = 0x4004427d - BIOCGETIF = 0x4020426b - BIOCGETZMAX = 0x4004427f - BIOCGHDRCMPLT = 0x40044274 - BIOCGRSIG = 0x40044272 - BIOCGRTIMEOUT = 0x4008426e - BIOCGSEESENT = 0x40044276 - BIOCGSTATS = 0x4008426f - BIOCGTSTAMP = 0x40044283 - BIOCIMMEDIATE = 0x80044270 - BIOCLOCK = 0x2000427a - BIOCPROMISC = 0x20004269 - BIOCROTZBUF = 0x400c4280 - BIOCSBLEN = 0xc0044266 - BIOCSDIRECTION = 0x80044277 - BIOCSDLT = 0x80044278 - BIOCSETBUFMODE = 0x8004427e - BIOCSETF = 0x80084267 - BIOCSETFNR = 0x80084282 - BIOCSETIF = 0x8020426c - BIOCSETWF = 0x8008427b - BIOCSETZBUF = 0x800c4281 - BIOCSHDRCMPLT = 0x80044275 - BIOCSRSIG = 0x80044273 - BIOCSRTIMEOUT = 0x8008426d - BIOCSSEESENT = 0x80044277 - BIOCSTSTAMP = 0x80044284 - BIOCVERSION = 0x40044271 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALIGNMENT = 0x4 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_BUFMODE_BUFFER = 0x1 - BPF_BUFMODE_ZBUF = 0x2 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXBUFSIZE = 0x80000 - BPF_MAXINSNS = 0x200 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINBUFSIZE = 0x20 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_T_BINTIME = 0x2 - BPF_T_BINTIME_FAST = 0x102 - BPF_T_BINTIME_MONOTONIC = 0x202 - BPF_T_BINTIME_MONOTONIC_FAST = 0x302 - BPF_T_FAST = 0x100 - BPF_T_FLAG_MASK = 0x300 - BPF_T_FORMAT_MASK = 0x3 - BPF_T_MICROTIME = 0x0 - BPF_T_MICROTIME_FAST = 0x100 - BPF_T_MICROTIME_MONOTONIC = 0x200 - BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 - BPF_T_MONOTONIC = 0x200 - BPF_T_MONOTONIC_FAST = 0x300 - BPF_T_NANOTIME = 0x1 - BPF_T_NANOTIME_FAST = 0x101 - BPF_T_NANOTIME_MONOTONIC = 0x201 - BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 - BPF_T_NONE = 0x3 - BPF_T_NORMAL = 0x0 - BPF_W = 0x0 - BPF_X = 0x8 - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x8000 - CLOCK_MONOTONIC = 0x4 - CLOCK_MONOTONIC_FAST = 0xc - CLOCK_MONOTONIC_PRECISE = 0xb - CLOCK_PROCESS_CPUTIME_ID = 0xf - CLOCK_PROF = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_FAST = 0xa - CLOCK_REALTIME_PRECISE = 0x9 - CLOCK_SECOND = 0xd - CLOCK_THREAD_CPUTIME_ID = 0xe - CLOCK_UPTIME = 0x5 - CLOCK_UPTIME_FAST = 0x8 - CLOCK_UPTIME_PRECISE = 0x7 - CLOCK_VIRTUAL = 0x1 - CREAD = 0x800 - CS5 = 0x0 - CS6 = 0x100 - CS7 = 0x200 - CS8 = 0x300 - CSIZE = 0x300 - CSTART = 0x11 - CSTATUS = 0x14 - CSTOP = 0x13 - CSTOPB = 0x400 - CSUSP = 0x1a - CTL_MAXNAME = 0x18 - CTL_NET = 0x4 - DLT_A429 = 0xb8 - DLT_A653_ICM = 0xb9 - DLT_AIRONET_HEADER = 0x78 - DLT_AOS = 0xde - DLT_APPLE_IP_OVER_IEEE1394 = 0x8a - DLT_ARCNET = 0x7 - DLT_ARCNET_LINUX = 0x81 - DLT_ATM_CLIP = 0x13 - DLT_ATM_RFC1483 = 0xb - DLT_AURORA = 0x7e - DLT_AX25 = 0x3 - DLT_AX25_KISS = 0xca - DLT_BACNET_MS_TP = 0xa5 - DLT_BLUETOOTH_HCI_H4 = 0xbb - DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 - DLT_CAN20B = 0xbe - DLT_CAN_SOCKETCAN = 0xe3 - DLT_CHAOS = 0x5 - DLT_CHDLC = 0x68 - DLT_CISCO_IOS = 0x76 - DLT_C_HDLC = 0x68 - DLT_C_HDLC_WITH_DIR = 0xcd - DLT_DBUS = 0xe7 - DLT_DECT = 0xdd - DLT_DOCSIS = 0x8f - DLT_DVB_CI = 0xeb - DLT_ECONET = 0x73 - DLT_EN10MB = 0x1 - DLT_EN3MB = 0x2 - DLT_ENC = 0x6d - DLT_ERF = 0xc5 - DLT_ERF_ETH = 0xaf - DLT_ERF_POS = 0xb0 - DLT_FC_2 = 0xe0 - DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 - DLT_FDDI = 0xa - DLT_FLEXRAY = 0xd2 - DLT_FRELAY = 0x6b - DLT_FRELAY_WITH_DIR = 0xce - DLT_GCOM_SERIAL = 0xad - DLT_GCOM_T1E1 = 0xac - DLT_GPF_F = 0xab - DLT_GPF_T = 0xaa - DLT_GPRS_LLC = 0xa9 - DLT_GSMTAP_ABIS = 0xda - DLT_GSMTAP_UM = 0xd9 - DLT_HHDLC = 0x79 - DLT_IBM_SN = 0x92 - DLT_IBM_SP = 0x91 - DLT_IEEE802 = 0x6 - DLT_IEEE802_11 = 0x69 - DLT_IEEE802_11_RADIO = 0x7f - DLT_IEEE802_11_RADIO_AVS = 0xa3 - DLT_IEEE802_15_4 = 0xc3 - DLT_IEEE802_15_4_LINUX = 0xbf - DLT_IEEE802_15_4_NOFCS = 0xe6 - DLT_IEEE802_15_4_NONASK_PHY = 0xd7 - DLT_IEEE802_16_MAC_CPS = 0xbc - DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 - DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 - DLT_IPMB_LINUX = 0xd1 - DLT_IPNET = 0xe2 - DLT_IPOIB = 0xf2 - DLT_IPV4 = 0xe4 - DLT_IPV6 = 0xe5 - DLT_IP_OVER_FC = 0x7a - DLT_JUNIPER_ATM1 = 0x89 - DLT_JUNIPER_ATM2 = 0x87 - DLT_JUNIPER_ATM_CEMIC = 0xee - DLT_JUNIPER_CHDLC = 0xb5 - DLT_JUNIPER_ES = 0x84 - DLT_JUNIPER_ETHER = 0xb2 - DLT_JUNIPER_FIBRECHANNEL = 0xea - DLT_JUNIPER_FRELAY = 0xb4 - DLT_JUNIPER_GGSN = 0x85 - DLT_JUNIPER_ISM = 0xc2 - DLT_JUNIPER_MFR = 0x86 - DLT_JUNIPER_MLFR = 0x83 - DLT_JUNIPER_MLPPP = 0x82 - DLT_JUNIPER_MONITOR = 0xa4 - DLT_JUNIPER_PIC_PEER = 0xae - DLT_JUNIPER_PPP = 0xb3 - DLT_JUNIPER_PPPOE = 0xa7 - DLT_JUNIPER_PPPOE_ATM = 0xa8 - DLT_JUNIPER_SERVICES = 0x88 - DLT_JUNIPER_SRX_E2E = 0xe9 - DLT_JUNIPER_ST = 0xc8 - DLT_JUNIPER_VP = 0xb7 - DLT_JUNIPER_VS = 0xe8 - DLT_LAPB_WITH_DIR = 0xcf - DLT_LAPD = 0xcb - DLT_LIN = 0xd4 - DLT_LINUX_EVDEV = 0xd8 - DLT_LINUX_IRDA = 0x90 - DLT_LINUX_LAPD = 0xb1 - DLT_LINUX_PPP_WITHDIRECTION = 0xa6 - DLT_LINUX_SLL = 0x71 - DLT_LOOP = 0x6c - DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0xf6 - DLT_MATCHING_MIN = 0x68 - DLT_MFR = 0xb6 - DLT_MOST = 0xd3 - DLT_MPEG_2_TS = 0xf3 - DLT_MPLS = 0xdb - DLT_MTP2 = 0x8c - DLT_MTP2_WITH_PHDR = 0x8b - DLT_MTP3 = 0x8d - DLT_MUX27010 = 0xec - DLT_NETANALYZER = 0xf0 - DLT_NETANALYZER_TRANSPARENT = 0xf1 - DLT_NFC_LLCP = 0xf5 - DLT_NFLOG = 0xef - DLT_NG40 = 0xf4 - DLT_NULL = 0x0 - DLT_PCI_EXP = 0x7d - DLT_PFLOG = 0x75 - DLT_PFSYNC = 0x79 - DLT_PPI = 0xc0 - DLT_PPP = 0x9 - DLT_PPP_BSDOS = 0x10 - DLT_PPP_ETHER = 0x33 - DLT_PPP_PPPD = 0xa6 - DLT_PPP_SERIAL = 0x32 - DLT_PPP_WITH_DIR = 0xcc - DLT_PPP_WITH_DIRECTION = 0xa6 - DLT_PRISM_HEADER = 0x77 - DLT_PRONET = 0x4 - DLT_RAIF1 = 0xc6 - DLT_RAW = 0xc - DLT_RIO = 0x7c - DLT_SCCP = 0x8e - DLT_SITA = 0xc4 - DLT_SLIP = 0x8 - DLT_SLIP_BSDOS = 0xf - DLT_STANAG_5066_D_PDU = 0xed - DLT_SUNATM = 0x7b - DLT_SYMANTEC_FIREWALL = 0x63 - DLT_TZSP = 0x80 - DLT_USB = 0xba - DLT_USB_LINUX = 0xbd - DLT_USB_LINUX_MMAPPED = 0xdc - DLT_USER0 = 0x93 - DLT_USER1 = 0x94 - DLT_USER10 = 0x9d - DLT_USER11 = 0x9e - DLT_USER12 = 0x9f - DLT_USER13 = 0xa0 - DLT_USER14 = 0xa1 - DLT_USER15 = 0xa2 - DLT_USER2 = 0x95 - DLT_USER3 = 0x96 - DLT_USER4 = 0x97 - DLT_USER5 = 0x98 - DLT_USER6 = 0x99 - DLT_USER7 = 0x9a - DLT_USER8 = 0x9b - DLT_USER9 = 0x9c - DLT_WIHART = 0xdf - DLT_X2E_SERIAL = 0xd5 - DLT_X2E_XORAYA = 0xd6 - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x40 - ECHOE = 0x2 - ECHOK = 0x4 - ECHOKE = 0x1 - ECHONL = 0x10 - ECHOPRT = 0x20 - EVFILT_AIO = -0x3 - EVFILT_FS = -0x9 - EVFILT_LIO = -0xa - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xb - EVFILT_TIMER = -0x7 - EVFILT_USER = -0xb - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 - EV_ADD = 0x1 - EV_CLEAR = 0x20 - EV_DELETE = 0x2 - EV_DISABLE = 0x8 - EV_DISPATCH = 0x80 - EV_DROP = 0x1000 - EV_ENABLE = 0x4 - EV_EOF = 0x8000 - EV_ERROR = 0x4000 - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 - EV_RECEIPT = 0x40 - EV_SYSFLAGS = 0xf000 - EXTA = 0x4b00 - EXTATTR_NAMESPACE_EMPTY = 0x0 - EXTATTR_NAMESPACE_SYSTEM = 0x2 - EXTATTR_NAMESPACE_USER = 0x1 - EXTB = 0x9600 - EXTPROC = 0x800 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FLUSHO = 0x800000 - F_CANCEL = 0x5 - F_DUP2FD = 0xa - F_DUP2FD_CLOEXEC = 0x12 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x11 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLK = 0xb - F_GETOWN = 0x5 - F_OGETLK = 0x7 - F_OK = 0x0 - F_OSETLK = 0x8 - F_OSETLKW = 0x9 - F_RDAHEAD = 0x10 - F_RDLCK = 0x1 - F_READAHEAD = 0xf - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLK = 0xc - F_SETLKW = 0xd - F_SETLK_REMOTE = 0xe - F_SETOWN = 0x6 - F_UNLCK = 0x2 - F_UNLCKSYS = 0x4 - F_WRLCK = 0x3 - HUPCL = 0x4000 - ICANON = 0x100 - ICMP6_FILTER = 0x12 - ICRNL = 0x100 - IEXTEN = 0x400 - IFAN_ARRIVAL = 0x0 - IFAN_DEPARTURE = 0x1 - IFF_ALLMULTI = 0x200 - IFF_ALTPHYS = 0x4000 - IFF_BROADCAST = 0x2 - IFF_CANTCHANGE = 0x218f72 - IFF_CANTCONFIG = 0x10000 - IFF_DEBUG = 0x4 - IFF_DRV_OACTIVE = 0x400 - IFF_DRV_RUNNING = 0x40 - IFF_DYING = 0x200000 - IFF_LINK0 = 0x1000 - IFF_LINK1 = 0x2000 - IFF_LINK2 = 0x4000 - IFF_LOOPBACK = 0x8 - IFF_MONITOR = 0x40000 - IFF_MULTICAST = 0x8000 - IFF_NOARP = 0x80 - IFF_OACTIVE = 0x400 - IFF_POINTOPOINT = 0x10 - IFF_PPROMISC = 0x20000 - IFF_PROMISC = 0x100 - IFF_RENAMING = 0x400000 - IFF_RUNNING = 0x40 - IFF_SIMPLEX = 0x800 - IFF_SMART = 0x20 - IFF_STATICARP = 0x80000 - IFF_UP = 0x1 - IFNAMSIZ = 0x10 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BRIDGE = 0xd1 - IFT_BSC = 0x53 - IFT_CARP = 0xf8 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE1394 = 0x90 - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INFINIBAND = 0xc7 - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L2VLAN = 0x87 - IFT_L3IPVLAN = 0x88 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPP = 0x17 - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPVIRTUAL = 0x35 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLASSD_HOST = 0xfffffff - IN_CLASSD_NET = 0xf0000000 - IN_CLASSD_NSHIFT = 0x1c - IN_LOOPBACKNET = 0x7f - IN_RFC3021_MASK = 0xfffffffe - IPPROTO_3PC = 0x22 - IPPROTO_ADFS = 0x44 - IPPROTO_AH = 0x33 - IPPROTO_AHIP = 0x3d - IPPROTO_APES = 0x63 - IPPROTO_ARGUS = 0xd - IPPROTO_AX25 = 0x5d - IPPROTO_BHA = 0x31 - IPPROTO_BLT = 0x1e - IPPROTO_BRSATMON = 0x4c - IPPROTO_CARP = 0x70 - IPPROTO_CFTP = 0x3e - IPPROTO_CHAOS = 0x10 - IPPROTO_CMTP = 0x26 - IPPROTO_CPHB = 0x49 - IPPROTO_CPNX = 0x48 - IPPROTO_DDP = 0x25 - IPPROTO_DGP = 0x56 - IPPROTO_DIVERT = 0x102 - IPPROTO_DONE = 0x101 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_EMCON = 0xe - IPPROTO_ENCAP = 0x62 - IPPROTO_EON = 0x50 - IPPROTO_ESP = 0x32 - IPPROTO_ETHERIP = 0x61 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GGP = 0x3 - IPPROTO_GMTP = 0x64 - IPPROTO_GRE = 0x2f - IPPROTO_HELLO = 0x3f - IPPROTO_HIP = 0x8b - IPPROTO_HMP = 0x14 - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IDPR = 0x23 - IPPROTO_IDRP = 0x2d - IPPROTO_IGMP = 0x2 - IPPROTO_IGP = 0x55 - IPPROTO_IGRP = 0x58 - IPPROTO_IL = 0x28 - IPPROTO_INLSP = 0x34 - IPPROTO_INP = 0x20 - IPPROTO_IP = 0x0 - IPPROTO_IPCOMP = 0x6c - IPPROTO_IPCV = 0x47 - IPPROTO_IPEIP = 0x5e - IPPROTO_IPIP = 0x4 - IPPROTO_IPPC = 0x43 - IPPROTO_IPV4 = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_IRTP = 0x1c - IPPROTO_KRYPTOLAN = 0x41 - IPPROTO_LARP = 0x5b - IPPROTO_LEAF1 = 0x19 - IPPROTO_LEAF2 = 0x1a - IPPROTO_MAX = 0x100 - IPPROTO_MAXID = 0x34 - IPPROTO_MEAS = 0x13 - IPPROTO_MH = 0x87 - IPPROTO_MHRP = 0x30 - IPPROTO_MICP = 0x5f - IPPROTO_MOBILE = 0x37 - IPPROTO_MPLS = 0x89 - IPPROTO_MTP = 0x5c - IPPROTO_MUX = 0x12 - IPPROTO_ND = 0x4d - IPPROTO_NHRP = 0x36 - IPPROTO_NONE = 0x3b - IPPROTO_NSP = 0x1f - IPPROTO_NVPII = 0xb - IPPROTO_OLD_DIVERT = 0xfe - IPPROTO_OSPFIGP = 0x59 - IPPROTO_PFSYNC = 0xf0 - IPPROTO_PGM = 0x71 - IPPROTO_PIGP = 0x9 - IPPROTO_PIM = 0x67 - IPPROTO_PRM = 0x15 - IPPROTO_PUP = 0xc - IPPROTO_PVP = 0x4b - IPPROTO_RAW = 0xff - IPPROTO_RCCMON = 0xa - IPPROTO_RDP = 0x1b - IPPROTO_RESERVED_253 = 0xfd - IPPROTO_RESERVED_254 = 0xfe - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_RVD = 0x42 - IPPROTO_SATEXPAK = 0x40 - IPPROTO_SATMON = 0x45 - IPPROTO_SCCSP = 0x60 - IPPROTO_SCTP = 0x84 - IPPROTO_SDRP = 0x2a - IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 - IPPROTO_SHIM6 = 0x8c - IPPROTO_SKIP = 0x39 - IPPROTO_SPACER = 0x7fff - IPPROTO_SRPC = 0x5a - IPPROTO_ST = 0x7 - IPPROTO_SVMTP = 0x52 - IPPROTO_SWIPE = 0x35 - IPPROTO_TCF = 0x57 - IPPROTO_TCP = 0x6 - IPPROTO_TLSP = 0x38 - IPPROTO_TP = 0x1d - IPPROTO_TPXX = 0x27 - IPPROTO_TRUNK1 = 0x17 - IPPROTO_TRUNK2 = 0x18 - IPPROTO_TTP = 0x54 - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPPROTO_VINES = 0x53 - IPPROTO_VISA = 0x46 - IPPROTO_VMTP = 0x51 - IPPROTO_WBEXPAK = 0x4f - IPPROTO_WBMON = 0x4e - IPPROTO_WSN = 0x4a - IPPROTO_XNET = 0xf - IPPROTO_XTP = 0x24 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_BINDANY = 0x40 - IPV6_BINDV6ONLY = 0x1b - IPV6_CHECKSUM = 0x1a - IPV6_DEFAULT_MULTICAST_HOPS = 0x1 - IPV6_DEFAULT_MULTICAST_LOOP = 0x1 - IPV6_DEFHLIM = 0x40 - IPV6_DONTFRAG = 0x3e - IPV6_DSTOPTS = 0x32 - IPV6_FAITH = 0x1d - IPV6_FLOWINFO_MASK = 0xffffff0f - IPV6_FLOWLABEL_MASK = 0xffff0f00 - IPV6_FRAGTTL = 0x78 - IPV6_FW_ADD = 0x1e - IPV6_FW_DEL = 0x1f - IPV6_FW_FLUSH = 0x20 - IPV6_FW_GET = 0x22 - IPV6_FW_ZERO = 0x21 - IPV6_HLIMDEC = 0x1 - IPV6_HOPLIMIT = 0x2f - IPV6_HOPOPTS = 0x31 - IPV6_IPSEC_POLICY = 0x1c - IPV6_JOIN_GROUP = 0xc - IPV6_LEAVE_GROUP = 0xd - IPV6_MAXHLIM = 0xff - IPV6_MAXOPTHDR = 0x800 - IPV6_MAXPACKET = 0xffff - IPV6_MAX_GROUP_SRC_FILTER = 0x200 - IPV6_MAX_MEMBERSHIPS = 0xfff - IPV6_MAX_SOCK_SRC_FILTER = 0x80 - IPV6_MIN_MEMBERSHIPS = 0x1f - IPV6_MMTU = 0x500 - IPV6_MSFILTER = 0x4a - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_IF = 0x9 - IPV6_MULTICAST_LOOP = 0xb - IPV6_NEXTHOP = 0x30 - IPV6_PATHMTU = 0x2c - IPV6_PKTINFO = 0x2e - IPV6_PORTRANGE = 0xe - IPV6_PORTRANGE_DEFAULT = 0x0 - IPV6_PORTRANGE_HIGH = 0x1 - IPV6_PORTRANGE_LOW = 0x2 - IPV6_PREFER_TEMPADDR = 0x3f - IPV6_RECVDSTOPTS = 0x28 - IPV6_RECVHOPLIMIT = 0x25 - IPV6_RECVHOPOPTS = 0x27 - IPV6_RECVPATHMTU = 0x2b - IPV6_RECVPKTINFO = 0x24 - IPV6_RECVRTHDR = 0x26 - IPV6_RECVTCLASS = 0x39 - IPV6_RTHDR = 0x33 - IPV6_RTHDRDSTOPTS = 0x23 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_SOCKOPT_RESERVED1 = 0x3 - IPV6_TCLASS = 0x3d - IPV6_UNICAST_HOPS = 0x4 - IPV6_USE_MIN_MTU = 0x2a - IPV6_V6ONLY = 0x1b - IPV6_VERSION = 0x60 - IPV6_VERSION_MASK = 0xf0 - IP_ADD_MEMBERSHIP = 0xc - IP_ADD_SOURCE_MEMBERSHIP = 0x46 - IP_BINDANY = 0x18 - IP_BLOCK_SOURCE = 0x48 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DONTFRAG = 0x43 - IP_DROP_MEMBERSHIP = 0xd - IP_DROP_SOURCE_MEMBERSHIP = 0x47 - IP_DUMMYNET3 = 0x31 - IP_DUMMYNET_CONFIGURE = 0x3c - IP_DUMMYNET_DEL = 0x3d - IP_DUMMYNET_FLUSH = 0x3e - IP_DUMMYNET_GET = 0x40 - IP_FAITH = 0x16 - IP_FW3 = 0x30 - IP_FW_ADD = 0x32 - IP_FW_DEL = 0x33 - IP_FW_FLUSH = 0x34 - IP_FW_GET = 0x36 - IP_FW_NAT_CFG = 0x38 - IP_FW_NAT_DEL = 0x39 - IP_FW_NAT_GET_CONFIG = 0x3a - IP_FW_NAT_GET_LOG = 0x3b - IP_FW_RESETLOG = 0x37 - IP_FW_TABLE_ADD = 0x28 - IP_FW_TABLE_DEL = 0x29 - IP_FW_TABLE_FLUSH = 0x2a - IP_FW_TABLE_GETSIZE = 0x2b - IP_FW_TABLE_LIST = 0x2c - IP_FW_ZERO = 0x35 - IP_HDRINCL = 0x2 - IP_IPSEC_POLICY = 0x15 - IP_MAXPACKET = 0xffff - IP_MAX_GROUP_SRC_FILTER = 0x200 - IP_MAX_MEMBERSHIPS = 0xfff - IP_MAX_SOCK_MUTE_FILTER = 0x80 - IP_MAX_SOCK_SRC_FILTER = 0x80 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MF = 0x2000 - IP_MINTTL = 0x42 - IP_MIN_MEMBERSHIPS = 0x1f - IP_MSFILTER = 0x4a - IP_MSS = 0x240 - IP_MULTICAST_IF = 0x9 - IP_MULTICAST_LOOP = 0xb - IP_MULTICAST_TTL = 0xa - IP_MULTICAST_VIF = 0xe - IP_OFFMASK = 0x1fff - IP_ONESBCAST = 0x17 - IP_OPTIONS = 0x1 - IP_PORTRANGE = 0x13 - IP_PORTRANGE_DEFAULT = 0x0 - IP_PORTRANGE_HIGH = 0x1 - IP_PORTRANGE_LOW = 0x2 - IP_RECVDSTADDR = 0x7 - IP_RECVIF = 0x14 - IP_RECVOPTS = 0x5 - IP_RECVRETOPTS = 0x6 - IP_RECVTOS = 0x44 - IP_RECVTTL = 0x41 - IP_RETOPTS = 0x8 - IP_RF = 0x8000 - IP_RSVP_OFF = 0x10 - IP_RSVP_ON = 0xf - IP_RSVP_VIF_OFF = 0x12 - IP_RSVP_VIF_ON = 0x11 - IP_SENDSRCADDR = 0x7 - IP_TOS = 0x3 - IP_TTL = 0x4 - IP_UNBLOCK_SOURCE = 0x49 - ISIG = 0x80 - ISTRIP = 0x20 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_AUTOSYNC = 0x7 - MADV_CORE = 0x9 - MADV_DONTNEED = 0x4 - MADV_FREE = 0x5 - MADV_NOCORE = 0x8 - MADV_NORMAL = 0x0 - MADV_NOSYNC = 0x6 - MADV_PROTECT = 0xa - MADV_RANDOM = 0x1 - MADV_SEQUENTIAL = 0x2 - MADV_WILLNEED = 0x3 - MAP_ALIGNED_SUPER = 0x1000000 - MAP_ALIGNMENT_MASK = -0x1000000 - MAP_ALIGNMENT_SHIFT = 0x18 - MAP_ANON = 0x1000 - MAP_ANONYMOUS = 0x1000 - MAP_COPY = 0x2 - MAP_EXCL = 0x4000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_HASSEMAPHORE = 0x200 - MAP_NOCORE = 0x20000 - MAP_NORESERVE = 0x40 - MAP_NOSYNC = 0x800 - MAP_PREFAULT_READ = 0x40000 - MAP_PRIVATE = 0x2 - MAP_RENAME = 0x20 - MAP_RESERVED0080 = 0x80 - MAP_RESERVED0100 = 0x100 - MAP_SHARED = 0x1 - MAP_STACK = 0x400 - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MSG_CMSG_CLOEXEC = 0x40000 - MSG_COMPAT = 0x8000 - MSG_CTRUNC = 0x20 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x80 - MSG_EOF = 0x100 - MSG_EOR = 0x8 - MSG_NBIO = 0x4000 - MSG_NOSIGNAL = 0x20000 - MSG_NOTIFICATION = 0x2000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x2 - MS_SYNC = 0x0 - NAME_MAX = 0xff - NET_RT_DUMP = 0x1 - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 - NET_RT_IFLISTL = 0x5 - NET_RT_IFMALIST = 0x4 - NET_RT_MAXID = 0x6 - NOFLSH = 0x80000000 - NOTE_ATTRIB = 0x8 - NOTE_CHILD = 0x4 - NOTE_DELETE = 0x1 - NOTE_EXEC = 0x20000000 - NOTE_EXIT = 0x80000000 - NOTE_EXTEND = 0x4 - NOTE_FFAND = 0x40000000 - NOTE_FFCOPY = 0xc0000000 - NOTE_FFCTRLMASK = 0xc0000000 - NOTE_FFLAGSMASK = 0xffffff - NOTE_FFNOP = 0x0 - NOTE_FFOR = 0x80000000 - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 - NOTE_REVOKE = 0x40 - NOTE_TRACK = 0x1 - NOTE_TRACKERR = 0x2 - NOTE_TRIGGER = 0x1000000 - NOTE_WRITE = 0x2 - OCRNL = 0x10 - ONLCR = 0x2 - ONLRET = 0x40 - ONOCR = 0x20 - ONOEOT = 0x8 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x40 - O_CLOEXEC = 0x100000 - O_CREAT = 0x200 - O_DIRECT = 0x10000 - O_DIRECTORY = 0x20000 - O_EXCL = 0x800 - O_EXEC = 0x40000 - O_EXLOCK = 0x20 - O_FSYNC = 0x80 - O_NDELAY = 0x4 - O_NOCTTY = 0x8000 - O_NOFOLLOW = 0x100 - O_NONBLOCK = 0x4 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_SHLOCK = 0x10 - O_SYNC = 0x80 - O_TRUNC = 0x400 - O_TTY_INIT = 0x80000 - O_WRONLY = 0x1 - PARENB = 0x1000 - PARMRK = 0x8 - PARODD = 0x2000 - PENDIN = 0x20000000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - RLIMIT_AS = 0xa - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x8 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = 0x7fffffffffffffff - RTAX_AUTHOR = 0x6 - RTAX_BRD = 0x7 - RTAX_DST = 0x0 - RTAX_GATEWAY = 0x1 - RTAX_GENMASK = 0x3 - RTAX_IFA = 0x5 - RTAX_IFP = 0x4 - RTAX_MAX = 0x8 - RTAX_NETMASK = 0x2 - RTA_AUTHOR = 0x40 - RTA_BRD = 0x80 - RTA_DST = 0x1 - RTA_GATEWAY = 0x2 - RTA_GENMASK = 0x8 - RTA_IFA = 0x20 - RTA_IFP = 0x10 - RTA_NETMASK = 0x4 - RTF_BLACKHOLE = 0x1000 - RTF_BROADCAST = 0x400000 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 - RTF_FMASK = 0x1004d808 - RTF_GATEWAY = 0x2 - RTF_GWFLAG_COMPAT = 0x80000000 - RTF_HOST = 0x4 - RTF_LLDATA = 0x400 - RTF_LLINFO = 0x400 - RTF_LOCAL = 0x200000 - RTF_MODIFIED = 0x20 - RTF_MULTICAST = 0x800000 - RTF_PINNED = 0x100000 - RTF_PRCLONING = 0x10000 - RTF_PROTO1 = 0x8000 - RTF_PROTO2 = 0x4000 - RTF_PROTO3 = 0x40000 - RTF_REJECT = 0x8 - RTF_RNH_LOCKED = 0x40000000 - RTF_STATIC = 0x800 - RTF_STICKY = 0x10000000 - RTF_UP = 0x1 - RTF_XRESOLVE = 0x200 - RTM_ADD = 0x1 - RTM_CHANGE = 0x3 - RTM_DELADDR = 0xd - RTM_DELETE = 0x2 - RTM_DELMADDR = 0x10 - RTM_GET = 0x4 - RTM_IEEE80211 = 0x12 - RTM_IFANNOUNCE = 0x11 - RTM_IFINFO = 0xe - RTM_LOCK = 0x8 - RTM_LOSING = 0x5 - RTM_MISS = 0x7 - RTM_NEWADDR = 0xc - RTM_NEWMADDR = 0xf - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb - RTM_RTTUNIT = 0xf4240 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 - RTV_MTU = 0x1 - RTV_RPIPE = 0x8 - RTV_RTT = 0x40 - RTV_RTTVAR = 0x80 - RTV_SPIPE = 0x10 - RTV_SSTHRESH = 0x20 - RTV_WEIGHT = 0x100 - RT_ALL_FIBS = -0x1 - RT_CACHING_CONTEXT = 0x1 - RT_DEFAULT_FIB = 0x0 - RT_NORTREF = 0x2 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_BINTIME = 0x4 - SCM_CREDS = 0x3 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x2 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDMULTI = 0x80206931 - SIOCADDRT = 0x8030720a - SIOCAIFADDR = 0x8040691a - SIOCAIFGROUP = 0x80246987 - SIOCALIFADDR = 0x8118691b - SIOCATMARK = 0x40047307 - SIOCDELMULTI = 0x80206932 - SIOCDELRT = 0x8030720b - SIOCDIFADDR = 0x80206919 - SIOCDIFGROUP = 0x80246989 - SIOCDIFPHYADDR = 0x80206949 - SIOCDLIFADDR = 0x8118691d - SIOCGDRVSPEC = 0xc01c697b - SIOCGETSGCNT = 0xc0147210 - SIOCGETVIFCNT = 0xc014720f - SIOCGHIWAT = 0x40047301 - SIOCGIFADDR = 0xc0206921 - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCAP = 0xc020691f - SIOCGIFCONF = 0xc0086924 - SIOCGIFDESCR = 0xc020692a - SIOCGIFDSTADDR = 0xc0206922 - SIOCGIFFIB = 0xc020695c - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFGENERIC = 0xc020693a - SIOCGIFGMEMB = 0xc024698a - SIOCGIFGROUP = 0xc0246988 - SIOCGIFINDEX = 0xc0206920 - SIOCGIFMAC = 0xc0206926 - SIOCGIFMEDIA = 0xc0286938 - SIOCGIFMETRIC = 0xc0206917 - SIOCGIFMTU = 0xc0206933 - SIOCGIFNETMASK = 0xc0206925 - SIOCGIFPDSTADDR = 0xc0206948 - SIOCGIFPHYS = 0xc0206935 - SIOCGIFPSRCADDR = 0xc0206947 - SIOCGIFSTATUS = 0xc331693b - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 - SIOCGPRIVATE_0 = 0xc0206950 - SIOCGPRIVATE_1 = 0xc0206951 - SIOCIFCREATE = 0xc020697a - SIOCIFCREATE2 = 0xc020697c - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc00c6978 - SIOCSDRVSPEC = 0x801c697b - SIOCSHIWAT = 0x80047300 - SIOCSIFADDR = 0x8020690c - SIOCSIFBRDADDR = 0x80206913 - SIOCSIFCAP = 0x8020691e - SIOCSIFDESCR = 0x80206929 - SIOCSIFDSTADDR = 0x8020690e - SIOCSIFFIB = 0x8020695d - SIOCSIFFLAGS = 0x80206910 - SIOCSIFGENERIC = 0x80206939 - SIOCSIFLLADDR = 0x8020693c - SIOCSIFMAC = 0x80206927 - SIOCSIFMEDIA = 0xc0206937 - SIOCSIFMETRIC = 0x80206918 - SIOCSIFMTU = 0x80206934 - SIOCSIFNAME = 0x80206928 - SIOCSIFNETMASK = 0x80206916 - SIOCSIFPHYADDR = 0x80406946 - SIOCSIFPHYS = 0x80206936 - SIOCSIFRVNET = 0xc020695b - SIOCSIFVNET = 0xc020695a - SIOCSLIFPHYADDR = 0x8118694a - SIOCSLOWAT = 0x80047302 - SIOCSPGRP = 0x80047308 - SOCK_CLOEXEC = 0x10000000 - SOCK_DGRAM = 0x2 - SOCK_MAXADDRLEN = 0xff - SOCK_NONBLOCK = 0x20000000 - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_SOCKET = 0xffff - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x2 - SO_ACCEPTFILTER = 0x1000 - SO_BINTIME = 0x2000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 - SO_LABEL = 0x1009 - SO_LINGER = 0x80 - SO_LISTENINCQLEN = 0x1013 - SO_LISTENQLEN = 0x1012 - SO_LISTENQLIMIT = 0x1011 - SO_NOSIGPIPE = 0x800 - SO_NO_DDP = 0x8000 - SO_NO_OFFLOAD = 0x4000 - SO_OOBINLINE = 0x100 - SO_PEERLABEL = 0x1010 - SO_PROTOCOL = 0x1016 - SO_PROTOTYPE = 0x1016 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 - SO_REUSEADDR = 0x4 - SO_REUSEPORT = 0x200 - SO_SETFIB = 0x1014 - SO_SNDBUF = 0x1001 - SO_SNDLOWAT = 0x1003 - SO_SNDTIMEO = 0x1005 - SO_TIMESTAMP = 0x400 - SO_TYPE = 0x1008 - SO_USELOOPBACK = 0x40 - SO_USER_COOKIE = 0x1015 - SO_VENDOR = 0x80000000 - TCIFLUSH = 0x1 - TCIOFLUSH = 0x3 - TCOFLUSH = 0x2 - TCP_CA_NAME_MAX = 0x10 - TCP_CONGESTION = 0x40 - TCP_INFO = 0x20 - TCP_KEEPCNT = 0x400 - TCP_KEEPIDLE = 0x100 - TCP_KEEPINIT = 0x80 - TCP_KEEPINTVL = 0x200 - TCP_MAXBURST = 0x4 - TCP_MAXHLEN = 0x3c - TCP_MAXOLEN = 0x28 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x4 - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0x10 - TCP_MINMSS = 0xd8 - TCP_MSS = 0x218 - TCP_NODELAY = 0x1 - TCP_NOOPT = 0x8 - TCP_NOPUSH = 0x4 - TCP_VENDOR = 0x80000000 - TCSAFLUSH = 0x2 - TIOCCBRK = 0x2000747a - TIOCCDTR = 0x20007478 - TIOCCONS = 0x80047462 - TIOCDRAIN = 0x2000745e - TIOCEXCL = 0x2000740d - TIOCEXT = 0x80047460 - TIOCFLUSH = 0x80047410 - TIOCGDRAINWAIT = 0x40047456 - TIOCGETA = 0x402c7413 - TIOCGETD = 0x4004741a - TIOCGPGRP = 0x40047477 - TIOCGPTN = 0x4004740f - TIOCGSID = 0x40047463 - TIOCGWINSZ = 0x40087468 - TIOCMBIC = 0x8004746b - TIOCMBIS = 0x8004746c - TIOCMGDTRWAIT = 0x4004745a - TIOCMGET = 0x4004746a - TIOCMSDTRWAIT = 0x8004745b - TIOCMSET = 0x8004746d - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DCD = 0x40 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x20007471 - TIOCNXCL = 0x2000740e - TIOCOUTQ = 0x40047473 - TIOCPKT = 0x80047470 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCPTMASTER = 0x2000741c - TIOCSBRK = 0x2000747b - TIOCSCTTY = 0x20007461 - TIOCSDRAINWAIT = 0x80047457 - TIOCSDTR = 0x20007479 - TIOCSETA = 0x802c7414 - TIOCSETAF = 0x802c7416 - TIOCSETAW = 0x802c7415 - TIOCSETD = 0x8004741b - TIOCSIG = 0x2004745f - TIOCSPGRP = 0x80047476 - TIOCSTART = 0x2000746e - TIOCSTAT = 0x20007465 - TIOCSTI = 0x80017472 - TIOCSTOP = 0x2000746f - TIOCSWINSZ = 0x80087467 - TIOCTIMESTAMP = 0x40087459 - TIOCUCNTL = 0x80047466 - TOSTOP = 0x400000 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 - VEOL = 0x1 - VEOL2 = 0x2 - VERASE = 0x3 - VERASE2 = 0x7 - VINTR = 0x8 - VKILL = 0x5 - VLNEXT = 0xe - VMIN = 0x10 - VQUIT = 0x9 - VREPRINT = 0x6 - VSTART = 0xc - VSTATUS = 0x12 - VSTOP = 0xd - VSUSP = 0xa - VTIME = 0x11 - VWERASE = 0x4 - WCONTINUED = 0x4 - WCOREFLAG = 0x80 - WEXITED = 0x10 - WLINUXCLONE = 0x80000000 - WNOHANG = 0x1 - WNOWAIT = 0x8 - WSTOPPED = 0x2 - WTRAPPED = 0x20 - WUNTRACED = 0x2 + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index e48e7799a1..ac094f9cf3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -1,5 +1,5 @@ // mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,freebsd @@ -11,1461 +11,1420 @@ package unix import "syscall" const ( - AF_APPLETALK = 0x10 - AF_ARP = 0x23 - AF_ATM = 0x1e - AF_BLUETOOTH = 0x24 - AF_CCITT = 0xa - AF_CHAOS = 0x5 - AF_CNT = 0x15 - AF_COIP = 0x14 - AF_DATAKIT = 0x9 - AF_DECnet = 0xc - AF_DLI = 0xd - AF_E164 = 0x1a - AF_ECMA = 0x8 - AF_HYLINK = 0xf - AF_IEEE80211 = 0x25 - AF_IMPLINK = 0x3 - AF_INET = 0x2 - AF_INET6 = 0x1c - AF_INET6_SDP = 0x2a - AF_INET_SDP = 0x28 - AF_IPX = 0x17 - AF_ISDN = 0x1a - AF_ISO = 0x7 - AF_LAT = 0xe - AF_LINK = 0x12 - AF_LOCAL = 0x1 - AF_MAX = 0x2a - AF_NATM = 0x1d - AF_NETBIOS = 0x6 - AF_NETGRAPH = 0x20 - AF_OSI = 0x7 - AF_PUP = 0x4 - AF_ROUTE = 0x11 - AF_SCLUSTER = 0x22 - AF_SIP = 0x18 - AF_SLOW = 0x21 - AF_SNA = 0xb - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VENDOR00 = 0x27 - AF_VENDOR01 = 0x29 - AF_VENDOR02 = 0x2b - AF_VENDOR03 = 0x2d - AF_VENDOR04 = 0x2f - AF_VENDOR05 = 0x31 - AF_VENDOR06 = 0x33 - AF_VENDOR07 = 0x35 - AF_VENDOR08 = 0x37 - AF_VENDOR09 = 0x39 - AF_VENDOR10 = 0x3b - AF_VENDOR11 = 0x3d - AF_VENDOR12 = 0x3f - AF_VENDOR13 = 0x41 - AF_VENDOR14 = 0x43 - AF_VENDOR15 = 0x45 - AF_VENDOR16 = 0x47 - AF_VENDOR17 = 0x49 - AF_VENDOR18 = 0x4b - AF_VENDOR19 = 0x4d - AF_VENDOR20 = 0x4f - AF_VENDOR21 = 0x51 - AF_VENDOR22 = 0x53 - AF_VENDOR23 = 0x55 - AF_VENDOR24 = 0x57 - AF_VENDOR25 = 0x59 - AF_VENDOR26 = 0x5b - AF_VENDOR27 = 0x5d - AF_VENDOR28 = 0x5f - AF_VENDOR29 = 0x61 - AF_VENDOR30 = 0x63 - AF_VENDOR31 = 0x65 - AF_VENDOR32 = 0x67 - AF_VENDOR33 = 0x69 - AF_VENDOR34 = 0x6b - AF_VENDOR35 = 0x6d - AF_VENDOR36 = 0x6f - AF_VENDOR37 = 0x71 - AF_VENDOR38 = 0x73 - AF_VENDOR39 = 0x75 - AF_VENDOR40 = 0x77 - AF_VENDOR41 = 0x79 - AF_VENDOR42 = 0x7b - AF_VENDOR43 = 0x7d - AF_VENDOR44 = 0x7f - AF_VENDOR45 = 0x81 - AF_VENDOR46 = 0x83 - AF_VENDOR47 = 0x85 - B0 = 0x0 - B110 = 0x6e - B115200 = 0x1c200 - B1200 = 0x4b0 - B134 = 0x86 - B14400 = 0x3840 - B150 = 0x96 - B1800 = 0x708 - B19200 = 0x4b00 - B200 = 0xc8 - B230400 = 0x38400 - B2400 = 0x960 - B28800 = 0x7080 - B300 = 0x12c - B38400 = 0x9600 - B460800 = 0x70800 - B4800 = 0x12c0 - B50 = 0x32 - B57600 = 0xe100 - B600 = 0x258 - B7200 = 0x1c20 - B75 = 0x4b - B76800 = 0x12c00 - B921600 = 0xe1000 - B9600 = 0x2580 - BIOCFEEDBACK = 0x8004427c - BIOCFLUSH = 0x20004268 - BIOCGBLEN = 0x40044266 - BIOCGDIRECTION = 0x40044276 - BIOCGDLT = 0x4004426a - BIOCGDLTLIST = 0xc0104279 - BIOCGETBUFMODE = 0x4004427d - BIOCGETIF = 0x4020426b - BIOCGETZMAX = 0x4008427f - BIOCGHDRCMPLT = 0x40044274 - BIOCGRSIG = 0x40044272 - BIOCGRTIMEOUT = 0x4010426e - BIOCGSEESENT = 0x40044276 - BIOCGSTATS = 0x4008426f - BIOCGTSTAMP = 0x40044283 - BIOCIMMEDIATE = 0x80044270 - BIOCLOCK = 0x2000427a - BIOCPROMISC = 0x20004269 - BIOCROTZBUF = 0x40184280 - BIOCSBLEN = 0xc0044266 - BIOCSDIRECTION = 0x80044277 - BIOCSDLT = 0x80044278 - BIOCSETBUFMODE = 0x8004427e - BIOCSETF = 0x80104267 - BIOCSETFNR = 0x80104282 - BIOCSETIF = 0x8020426c - BIOCSETWF = 0x8010427b - BIOCSETZBUF = 0x80184281 - BIOCSHDRCMPLT = 0x80044275 - BIOCSRSIG = 0x80044273 - BIOCSRTIMEOUT = 0x8010426d - BIOCSSEESENT = 0x80044277 - BIOCSTSTAMP = 0x80044284 - BIOCVERSION = 0x40044271 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALIGNMENT = 0x8 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_BUFMODE_BUFFER = 0x1 - BPF_BUFMODE_ZBUF = 0x2 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXBUFSIZE = 0x80000 - BPF_MAXINSNS = 0x200 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINBUFSIZE = 0x20 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_T_BINTIME = 0x2 - BPF_T_BINTIME_FAST = 0x102 - BPF_T_BINTIME_MONOTONIC = 0x202 - BPF_T_BINTIME_MONOTONIC_FAST = 0x302 - BPF_T_FAST = 0x100 - BPF_T_FLAG_MASK = 0x300 - BPF_T_FORMAT_MASK = 0x3 - BPF_T_MICROTIME = 0x0 - BPF_T_MICROTIME_FAST = 0x100 - BPF_T_MICROTIME_MONOTONIC = 0x200 - BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 - BPF_T_MONOTONIC = 0x200 - BPF_T_MONOTONIC_FAST = 0x300 - BPF_T_NANOTIME = 0x1 - BPF_T_NANOTIME_FAST = 0x101 - BPF_T_NANOTIME_MONOTONIC = 0x201 - BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 - BPF_T_NONE = 0x3 - BPF_T_NORMAL = 0x0 - BPF_W = 0x0 - BPF_X = 0x8 - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x8000 - CLOCK_MONOTONIC = 0x4 - CLOCK_MONOTONIC_FAST = 0xc - CLOCK_MONOTONIC_PRECISE = 0xb - CLOCK_PROCESS_CPUTIME_ID = 0xf - CLOCK_PROF = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_FAST = 0xa - CLOCK_REALTIME_PRECISE = 0x9 - CLOCK_SECOND = 0xd - CLOCK_THREAD_CPUTIME_ID = 0xe - CLOCK_UPTIME = 0x5 - CLOCK_UPTIME_FAST = 0x8 - CLOCK_UPTIME_PRECISE = 0x7 - CLOCK_VIRTUAL = 0x1 - CREAD = 0x800 - CS5 = 0x0 - CS6 = 0x100 - CS7 = 0x200 - CS8 = 0x300 - CSIZE = 0x300 - CSTART = 0x11 - CSTATUS = 0x14 - CSTOP = 0x13 - CSTOPB = 0x400 - CSUSP = 0x1a - CTL_MAXNAME = 0x18 - CTL_NET = 0x4 - DLT_A429 = 0xb8 - DLT_A653_ICM = 0xb9 - DLT_AIRONET_HEADER = 0x78 - DLT_AOS = 0xde - DLT_APPLE_IP_OVER_IEEE1394 = 0x8a - DLT_ARCNET = 0x7 - DLT_ARCNET_LINUX = 0x81 - DLT_ATM_CLIP = 0x13 - DLT_ATM_RFC1483 = 0xb - DLT_AURORA = 0x7e - DLT_AX25 = 0x3 - DLT_AX25_KISS = 0xca - DLT_BACNET_MS_TP = 0xa5 - DLT_BLUETOOTH_HCI_H4 = 0xbb - DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 - DLT_CAN20B = 0xbe - DLT_CAN_SOCKETCAN = 0xe3 - DLT_CHAOS = 0x5 - DLT_CHDLC = 0x68 - DLT_CISCO_IOS = 0x76 - DLT_C_HDLC = 0x68 - DLT_C_HDLC_WITH_DIR = 0xcd - DLT_DBUS = 0xe7 - DLT_DECT = 0xdd - DLT_DOCSIS = 0x8f - DLT_DVB_CI = 0xeb - DLT_ECONET = 0x73 - DLT_EN10MB = 0x1 - DLT_EN3MB = 0x2 - DLT_ENC = 0x6d - DLT_ERF = 0xc5 - DLT_ERF_ETH = 0xaf - DLT_ERF_POS = 0xb0 - DLT_FC_2 = 0xe0 - DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 - DLT_FDDI = 0xa - DLT_FLEXRAY = 0xd2 - DLT_FRELAY = 0x6b - DLT_FRELAY_WITH_DIR = 0xce - DLT_GCOM_SERIAL = 0xad - DLT_GCOM_T1E1 = 0xac - DLT_GPF_F = 0xab - DLT_GPF_T = 0xaa - DLT_GPRS_LLC = 0xa9 - DLT_GSMTAP_ABIS = 0xda - DLT_GSMTAP_UM = 0xd9 - DLT_HHDLC = 0x79 - DLT_IBM_SN = 0x92 - DLT_IBM_SP = 0x91 - DLT_IEEE802 = 0x6 - DLT_IEEE802_11 = 0x69 - DLT_IEEE802_11_RADIO = 0x7f - DLT_IEEE802_11_RADIO_AVS = 0xa3 - DLT_IEEE802_15_4 = 0xc3 - DLT_IEEE802_15_4_LINUX = 0xbf - DLT_IEEE802_15_4_NOFCS = 0xe6 - DLT_IEEE802_15_4_NONASK_PHY = 0xd7 - DLT_IEEE802_16_MAC_CPS = 0xbc - DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 - DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 - DLT_IPMB_LINUX = 0xd1 - DLT_IPNET = 0xe2 - DLT_IPOIB = 0xf2 - DLT_IPV4 = 0xe4 - DLT_IPV6 = 0xe5 - DLT_IP_OVER_FC = 0x7a - DLT_JUNIPER_ATM1 = 0x89 - DLT_JUNIPER_ATM2 = 0x87 - DLT_JUNIPER_ATM_CEMIC = 0xee - DLT_JUNIPER_CHDLC = 0xb5 - DLT_JUNIPER_ES = 0x84 - DLT_JUNIPER_ETHER = 0xb2 - DLT_JUNIPER_FIBRECHANNEL = 0xea - DLT_JUNIPER_FRELAY = 0xb4 - DLT_JUNIPER_GGSN = 0x85 - DLT_JUNIPER_ISM = 0xc2 - DLT_JUNIPER_MFR = 0x86 - DLT_JUNIPER_MLFR = 0x83 - DLT_JUNIPER_MLPPP = 0x82 - DLT_JUNIPER_MONITOR = 0xa4 - DLT_JUNIPER_PIC_PEER = 0xae - DLT_JUNIPER_PPP = 0xb3 - DLT_JUNIPER_PPPOE = 0xa7 - DLT_JUNIPER_PPPOE_ATM = 0xa8 - DLT_JUNIPER_SERVICES = 0x88 - DLT_JUNIPER_SRX_E2E = 0xe9 - DLT_JUNIPER_ST = 0xc8 - DLT_JUNIPER_VP = 0xb7 - DLT_JUNIPER_VS = 0xe8 - DLT_LAPB_WITH_DIR = 0xcf - DLT_LAPD = 0xcb - DLT_LIN = 0xd4 - DLT_LINUX_EVDEV = 0xd8 - DLT_LINUX_IRDA = 0x90 - DLT_LINUX_LAPD = 0xb1 - DLT_LINUX_PPP_WITHDIRECTION = 0xa6 - DLT_LINUX_SLL = 0x71 - DLT_LOOP = 0x6c - DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0xf6 - DLT_MATCHING_MIN = 0x68 - DLT_MFR = 0xb6 - DLT_MOST = 0xd3 - DLT_MPEG_2_TS = 0xf3 - DLT_MPLS = 0xdb - DLT_MTP2 = 0x8c - DLT_MTP2_WITH_PHDR = 0x8b - DLT_MTP3 = 0x8d - DLT_MUX27010 = 0xec - DLT_NETANALYZER = 0xf0 - DLT_NETANALYZER_TRANSPARENT = 0xf1 - DLT_NFC_LLCP = 0xf5 - DLT_NFLOG = 0xef - DLT_NG40 = 0xf4 - DLT_NULL = 0x0 - DLT_PCI_EXP = 0x7d - DLT_PFLOG = 0x75 - DLT_PFSYNC = 0x79 - DLT_PPI = 0xc0 - DLT_PPP = 0x9 - DLT_PPP_BSDOS = 0x10 - DLT_PPP_ETHER = 0x33 - DLT_PPP_PPPD = 0xa6 - DLT_PPP_SERIAL = 0x32 - DLT_PPP_WITH_DIR = 0xcc - DLT_PPP_WITH_DIRECTION = 0xa6 - DLT_PRISM_HEADER = 0x77 - DLT_PRONET = 0x4 - DLT_RAIF1 = 0xc6 - DLT_RAW = 0xc - DLT_RIO = 0x7c - DLT_SCCP = 0x8e - DLT_SITA = 0xc4 - DLT_SLIP = 0x8 - DLT_SLIP_BSDOS = 0xf - DLT_STANAG_5066_D_PDU = 0xed - DLT_SUNATM = 0x7b - DLT_SYMANTEC_FIREWALL = 0x63 - DLT_TZSP = 0x80 - DLT_USB = 0xba - DLT_USB_LINUX = 0xbd - DLT_USB_LINUX_MMAPPED = 0xdc - DLT_USER0 = 0x93 - DLT_USER1 = 0x94 - DLT_USER10 = 0x9d - DLT_USER11 = 0x9e - DLT_USER12 = 0x9f - DLT_USER13 = 0xa0 - DLT_USER14 = 0xa1 - DLT_USER15 = 0xa2 - DLT_USER2 = 0x95 - DLT_USER3 = 0x96 - DLT_USER4 = 0x97 - DLT_USER5 = 0x98 - DLT_USER6 = 0x99 - DLT_USER7 = 0x9a - DLT_USER8 = 0x9b - DLT_USER9 = 0x9c - DLT_WIHART = 0xdf - DLT_X2E_SERIAL = 0xd5 - DLT_X2E_XORAYA = 0xd6 - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x40 - ECHOE = 0x2 - ECHOK = 0x4 - ECHOKE = 0x1 - ECHONL = 0x10 - ECHOPRT = 0x20 - EVFILT_AIO = -0x3 - EVFILT_FS = -0x9 - EVFILT_LIO = -0xa - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xb - EVFILT_TIMER = -0x7 - EVFILT_USER = -0xb - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 - EV_ADD = 0x1 - EV_CLEAR = 0x20 - EV_DELETE = 0x2 - EV_DISABLE = 0x8 - EV_DISPATCH = 0x80 - EV_DROP = 0x1000 - EV_ENABLE = 0x4 - EV_EOF = 0x8000 - EV_ERROR = 0x4000 - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 - EV_RECEIPT = 0x40 - EV_SYSFLAGS = 0xf000 - EXTA = 0x4b00 - EXTATTR_NAMESPACE_EMPTY = 0x0 - EXTATTR_NAMESPACE_SYSTEM = 0x2 - EXTATTR_NAMESPACE_USER = 0x1 - EXTB = 0x9600 - EXTPROC = 0x800 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FLUSHO = 0x800000 - F_CANCEL = 0x5 - F_DUP2FD = 0xa - F_DUP2FD_CLOEXEC = 0x12 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x11 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLK = 0xb - F_GETOWN = 0x5 - F_OGETLK = 0x7 - F_OK = 0x0 - F_OSETLK = 0x8 - F_OSETLKW = 0x9 - F_RDAHEAD = 0x10 - F_RDLCK = 0x1 - F_READAHEAD = 0xf - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLK = 0xc - F_SETLKW = 0xd - F_SETLK_REMOTE = 0xe - F_SETOWN = 0x6 - F_UNLCK = 0x2 - F_UNLCKSYS = 0x4 - F_WRLCK = 0x3 - HUPCL = 0x4000 - ICANON = 0x100 - ICMP6_FILTER = 0x12 - ICRNL = 0x100 - IEXTEN = 0x400 - IFAN_ARRIVAL = 0x0 - IFAN_DEPARTURE = 0x1 - IFF_ALLMULTI = 0x200 - IFF_ALTPHYS = 0x4000 - IFF_BROADCAST = 0x2 - IFF_CANTCHANGE = 0x218f72 - IFF_CANTCONFIG = 0x10000 - IFF_DEBUG = 0x4 - IFF_DRV_OACTIVE = 0x400 - IFF_DRV_RUNNING = 0x40 - IFF_DYING = 0x200000 - IFF_LINK0 = 0x1000 - IFF_LINK1 = 0x2000 - IFF_LINK2 = 0x4000 - IFF_LOOPBACK = 0x8 - IFF_MONITOR = 0x40000 - IFF_MULTICAST = 0x8000 - IFF_NOARP = 0x80 - IFF_OACTIVE = 0x400 - IFF_POINTOPOINT = 0x10 - IFF_PPROMISC = 0x20000 - IFF_PROMISC = 0x100 - IFF_RENAMING = 0x400000 - IFF_RUNNING = 0x40 - IFF_SIMPLEX = 0x800 - IFF_SMART = 0x20 - IFF_STATICARP = 0x80000 - IFF_UP = 0x1 - IFNAMSIZ = 0x10 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BRIDGE = 0xd1 - IFT_BSC = 0x53 - IFT_CARP = 0xf8 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE1394 = 0x90 - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INFINIBAND = 0xc7 - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L2VLAN = 0x87 - IFT_L3IPVLAN = 0x88 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPP = 0x17 - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPVIRTUAL = 0x35 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLASSD_HOST = 0xfffffff - IN_CLASSD_NET = 0xf0000000 - IN_CLASSD_NSHIFT = 0x1c - IN_LOOPBACKNET = 0x7f - IN_RFC3021_MASK = 0xfffffffe - IPPROTO_3PC = 0x22 - IPPROTO_ADFS = 0x44 - IPPROTO_AH = 0x33 - IPPROTO_AHIP = 0x3d - IPPROTO_APES = 0x63 - IPPROTO_ARGUS = 0xd - IPPROTO_AX25 = 0x5d - IPPROTO_BHA = 0x31 - IPPROTO_BLT = 0x1e - IPPROTO_BRSATMON = 0x4c - IPPROTO_CARP = 0x70 - IPPROTO_CFTP = 0x3e - IPPROTO_CHAOS = 0x10 - IPPROTO_CMTP = 0x26 - IPPROTO_CPHB = 0x49 - IPPROTO_CPNX = 0x48 - IPPROTO_DDP = 0x25 - IPPROTO_DGP = 0x56 - IPPROTO_DIVERT = 0x102 - IPPROTO_DONE = 0x101 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_EMCON = 0xe - IPPROTO_ENCAP = 0x62 - IPPROTO_EON = 0x50 - IPPROTO_ESP = 0x32 - IPPROTO_ETHERIP = 0x61 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GGP = 0x3 - IPPROTO_GMTP = 0x64 - IPPROTO_GRE = 0x2f - IPPROTO_HELLO = 0x3f - IPPROTO_HIP = 0x8b - IPPROTO_HMP = 0x14 - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IDPR = 0x23 - IPPROTO_IDRP = 0x2d - IPPROTO_IGMP = 0x2 - IPPROTO_IGP = 0x55 - IPPROTO_IGRP = 0x58 - IPPROTO_IL = 0x28 - IPPROTO_INLSP = 0x34 - IPPROTO_INP = 0x20 - IPPROTO_IP = 0x0 - IPPROTO_IPCOMP = 0x6c - IPPROTO_IPCV = 0x47 - IPPROTO_IPEIP = 0x5e - IPPROTO_IPIP = 0x4 - IPPROTO_IPPC = 0x43 - IPPROTO_IPV4 = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_IRTP = 0x1c - IPPROTO_KRYPTOLAN = 0x41 - IPPROTO_LARP = 0x5b - IPPROTO_LEAF1 = 0x19 - IPPROTO_LEAF2 = 0x1a - IPPROTO_MAX = 0x100 - IPPROTO_MAXID = 0x34 - IPPROTO_MEAS = 0x13 - IPPROTO_MH = 0x87 - IPPROTO_MHRP = 0x30 - IPPROTO_MICP = 0x5f - IPPROTO_MOBILE = 0x37 - IPPROTO_MPLS = 0x89 - IPPROTO_MTP = 0x5c - IPPROTO_MUX = 0x12 - IPPROTO_ND = 0x4d - IPPROTO_NHRP = 0x36 - IPPROTO_NONE = 0x3b - IPPROTO_NSP = 0x1f - IPPROTO_NVPII = 0xb - IPPROTO_OLD_DIVERT = 0xfe - IPPROTO_OSPFIGP = 0x59 - IPPROTO_PFSYNC = 0xf0 - IPPROTO_PGM = 0x71 - IPPROTO_PIGP = 0x9 - IPPROTO_PIM = 0x67 - IPPROTO_PRM = 0x15 - IPPROTO_PUP = 0xc - IPPROTO_PVP = 0x4b - IPPROTO_RAW = 0xff - IPPROTO_RCCMON = 0xa - IPPROTO_RDP = 0x1b - IPPROTO_RESERVED_253 = 0xfd - IPPROTO_RESERVED_254 = 0xfe - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_RVD = 0x42 - IPPROTO_SATEXPAK = 0x40 - IPPROTO_SATMON = 0x45 - IPPROTO_SCCSP = 0x60 - IPPROTO_SCTP = 0x84 - IPPROTO_SDRP = 0x2a - IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 - IPPROTO_SHIM6 = 0x8c - IPPROTO_SKIP = 0x39 - IPPROTO_SPACER = 0x7fff - IPPROTO_SRPC = 0x5a - IPPROTO_ST = 0x7 - IPPROTO_SVMTP = 0x52 - IPPROTO_SWIPE = 0x35 - IPPROTO_TCF = 0x57 - IPPROTO_TCP = 0x6 - IPPROTO_TLSP = 0x38 - IPPROTO_TP = 0x1d - IPPROTO_TPXX = 0x27 - IPPROTO_TRUNK1 = 0x17 - IPPROTO_TRUNK2 = 0x18 - IPPROTO_TTP = 0x54 - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPPROTO_VINES = 0x53 - IPPROTO_VISA = 0x46 - IPPROTO_VMTP = 0x51 - IPPROTO_WBEXPAK = 0x4f - IPPROTO_WBMON = 0x4e - IPPROTO_WSN = 0x4a - IPPROTO_XNET = 0xf - IPPROTO_XTP = 0x24 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_BINDANY = 0x40 - IPV6_BINDV6ONLY = 0x1b - IPV6_CHECKSUM = 0x1a - IPV6_DEFAULT_MULTICAST_HOPS = 0x1 - IPV6_DEFAULT_MULTICAST_LOOP = 0x1 - IPV6_DEFHLIM = 0x40 - IPV6_DONTFRAG = 0x3e - IPV6_DSTOPTS = 0x32 - IPV6_FAITH = 0x1d - IPV6_FLOWINFO_MASK = 0xffffff0f - IPV6_FLOWLABEL_MASK = 0xffff0f00 - IPV6_FRAGTTL = 0x78 - IPV6_FW_ADD = 0x1e - IPV6_FW_DEL = 0x1f - IPV6_FW_FLUSH = 0x20 - IPV6_FW_GET = 0x22 - IPV6_FW_ZERO = 0x21 - IPV6_HLIMDEC = 0x1 - IPV6_HOPLIMIT = 0x2f - IPV6_HOPOPTS = 0x31 - IPV6_IPSEC_POLICY = 0x1c - IPV6_JOIN_GROUP = 0xc - IPV6_LEAVE_GROUP = 0xd - IPV6_MAXHLIM = 0xff - IPV6_MAXOPTHDR = 0x800 - IPV6_MAXPACKET = 0xffff - IPV6_MAX_GROUP_SRC_FILTER = 0x200 - IPV6_MAX_MEMBERSHIPS = 0xfff - IPV6_MAX_SOCK_SRC_FILTER = 0x80 - IPV6_MIN_MEMBERSHIPS = 0x1f - IPV6_MMTU = 0x500 - IPV6_MSFILTER = 0x4a - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_IF = 0x9 - IPV6_MULTICAST_LOOP = 0xb - IPV6_NEXTHOP = 0x30 - IPV6_PATHMTU = 0x2c - IPV6_PKTINFO = 0x2e - IPV6_PORTRANGE = 0xe - IPV6_PORTRANGE_DEFAULT = 0x0 - IPV6_PORTRANGE_HIGH = 0x1 - IPV6_PORTRANGE_LOW = 0x2 - IPV6_PREFER_TEMPADDR = 0x3f - IPV6_RECVDSTOPTS = 0x28 - IPV6_RECVHOPLIMIT = 0x25 - IPV6_RECVHOPOPTS = 0x27 - IPV6_RECVPATHMTU = 0x2b - IPV6_RECVPKTINFO = 0x24 - IPV6_RECVRTHDR = 0x26 - IPV6_RECVTCLASS = 0x39 - IPV6_RTHDR = 0x33 - IPV6_RTHDRDSTOPTS = 0x23 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_SOCKOPT_RESERVED1 = 0x3 - IPV6_TCLASS = 0x3d - IPV6_UNICAST_HOPS = 0x4 - IPV6_USE_MIN_MTU = 0x2a - IPV6_V6ONLY = 0x1b - IPV6_VERSION = 0x60 - IPV6_VERSION_MASK = 0xf0 - IP_ADD_MEMBERSHIP = 0xc - IP_ADD_SOURCE_MEMBERSHIP = 0x46 - IP_BINDANY = 0x18 - IP_BLOCK_SOURCE = 0x48 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DONTFRAG = 0x43 - IP_DROP_MEMBERSHIP = 0xd - IP_DROP_SOURCE_MEMBERSHIP = 0x47 - IP_DUMMYNET3 = 0x31 - IP_DUMMYNET_CONFIGURE = 0x3c - IP_DUMMYNET_DEL = 0x3d - IP_DUMMYNET_FLUSH = 0x3e - IP_DUMMYNET_GET = 0x40 - IP_FAITH = 0x16 - IP_FW3 = 0x30 - IP_FW_ADD = 0x32 - IP_FW_DEL = 0x33 - IP_FW_FLUSH = 0x34 - IP_FW_GET = 0x36 - IP_FW_NAT_CFG = 0x38 - IP_FW_NAT_DEL = 0x39 - IP_FW_NAT_GET_CONFIG = 0x3a - IP_FW_NAT_GET_LOG = 0x3b - IP_FW_RESETLOG = 0x37 - IP_FW_TABLE_ADD = 0x28 - IP_FW_TABLE_DEL = 0x29 - IP_FW_TABLE_FLUSH = 0x2a - IP_FW_TABLE_GETSIZE = 0x2b - IP_FW_TABLE_LIST = 0x2c - IP_FW_ZERO = 0x35 - IP_HDRINCL = 0x2 - IP_IPSEC_POLICY = 0x15 - IP_MAXPACKET = 0xffff - IP_MAX_GROUP_SRC_FILTER = 0x200 - IP_MAX_MEMBERSHIPS = 0xfff - IP_MAX_SOCK_MUTE_FILTER = 0x80 - IP_MAX_SOCK_SRC_FILTER = 0x80 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MF = 0x2000 - IP_MINTTL = 0x42 - IP_MIN_MEMBERSHIPS = 0x1f - IP_MSFILTER = 0x4a - IP_MSS = 0x240 - IP_MULTICAST_IF = 0x9 - IP_MULTICAST_LOOP = 0xb - IP_MULTICAST_TTL = 0xa - IP_MULTICAST_VIF = 0xe - IP_OFFMASK = 0x1fff - IP_ONESBCAST = 0x17 - IP_OPTIONS = 0x1 - IP_PORTRANGE = 0x13 - IP_PORTRANGE_DEFAULT = 0x0 - IP_PORTRANGE_HIGH = 0x1 - IP_PORTRANGE_LOW = 0x2 - IP_RECVDSTADDR = 0x7 - IP_RECVIF = 0x14 - IP_RECVOPTS = 0x5 - IP_RECVRETOPTS = 0x6 - IP_RECVTOS = 0x44 - IP_RECVTTL = 0x41 - IP_RETOPTS = 0x8 - IP_RF = 0x8000 - IP_RSVP_OFF = 0x10 - IP_RSVP_ON = 0xf - IP_RSVP_VIF_OFF = 0x12 - IP_RSVP_VIF_ON = 0x11 - IP_SENDSRCADDR = 0x7 - IP_TOS = 0x3 - IP_TTL = 0x4 - IP_UNBLOCK_SOURCE = 0x49 - ISIG = 0x80 - ISTRIP = 0x20 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_AUTOSYNC = 0x7 - MADV_CORE = 0x9 - MADV_DONTNEED = 0x4 - MADV_FREE = 0x5 - MADV_NOCORE = 0x8 - MADV_NORMAL = 0x0 - MADV_NOSYNC = 0x6 - MADV_PROTECT = 0xa - MADV_RANDOM = 0x1 - MADV_SEQUENTIAL = 0x2 - MADV_WILLNEED = 0x3 - MAP_32BIT = 0x80000 - MAP_ALIGNED_SUPER = 0x1000000 - MAP_ALIGNMENT_MASK = -0x1000000 - MAP_ALIGNMENT_SHIFT = 0x18 - MAP_ANON = 0x1000 - MAP_ANONYMOUS = 0x1000 - MAP_COPY = 0x2 - MAP_EXCL = 0x4000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_HASSEMAPHORE = 0x200 - MAP_NOCORE = 0x20000 - MAP_NORESERVE = 0x40 - MAP_NOSYNC = 0x800 - MAP_PREFAULT_READ = 0x40000 - MAP_PRIVATE = 0x2 - MAP_RENAME = 0x20 - MAP_RESERVED0080 = 0x80 - MAP_RESERVED0100 = 0x100 - MAP_SHARED = 0x1 - MAP_STACK = 0x400 - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MSG_CMSG_CLOEXEC = 0x40000 - MSG_COMPAT = 0x8000 - MSG_CTRUNC = 0x20 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x80 - MSG_EOF = 0x100 - MSG_EOR = 0x8 - MSG_NBIO = 0x4000 - MSG_NOSIGNAL = 0x20000 - MSG_NOTIFICATION = 0x2000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x2 - MS_SYNC = 0x0 - NAME_MAX = 0xff - NET_RT_DUMP = 0x1 - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 - NET_RT_IFLISTL = 0x5 - NET_RT_IFMALIST = 0x4 - NET_RT_MAXID = 0x6 - NOFLSH = 0x80000000 - NOTE_ATTRIB = 0x8 - NOTE_CHILD = 0x4 - NOTE_DELETE = 0x1 - NOTE_EXEC = 0x20000000 - NOTE_EXIT = 0x80000000 - NOTE_EXTEND = 0x4 - NOTE_FFAND = 0x40000000 - NOTE_FFCOPY = 0xc0000000 - NOTE_FFCTRLMASK = 0xc0000000 - NOTE_FFLAGSMASK = 0xffffff - NOTE_FFNOP = 0x0 - NOTE_FFOR = 0x80000000 - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 - NOTE_MSECONDS = 0x2 - NOTE_NSECONDS = 0x8 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 - NOTE_REVOKE = 0x40 - NOTE_SECONDS = 0x1 - NOTE_TRACK = 0x1 - NOTE_TRACKERR = 0x2 - NOTE_TRIGGER = 0x1000000 - NOTE_USECONDS = 0x4 - NOTE_WRITE = 0x2 - OCRNL = 0x10 - ONLCR = 0x2 - ONLRET = 0x40 - ONOCR = 0x20 - ONOEOT = 0x8 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x40 - O_CLOEXEC = 0x100000 - O_CREAT = 0x200 - O_DIRECT = 0x10000 - O_DIRECTORY = 0x20000 - O_EXCL = 0x800 - O_EXEC = 0x40000 - O_EXLOCK = 0x20 - O_FSYNC = 0x80 - O_NDELAY = 0x4 - O_NOCTTY = 0x8000 - O_NOFOLLOW = 0x100 - O_NONBLOCK = 0x4 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_SHLOCK = 0x10 - O_SYNC = 0x80 - O_TRUNC = 0x400 - O_TTY_INIT = 0x80000 - O_WRONLY = 0x1 - PARENB = 0x1000 - PARMRK = 0x8 - PARODD = 0x2000 - PENDIN = 0x20000000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - RLIMIT_AS = 0xa - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x8 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = 0x7fffffffffffffff - RTAX_AUTHOR = 0x6 - RTAX_BRD = 0x7 - RTAX_DST = 0x0 - RTAX_GATEWAY = 0x1 - RTAX_GENMASK = 0x3 - RTAX_IFA = 0x5 - RTAX_IFP = 0x4 - RTAX_MAX = 0x8 - RTAX_NETMASK = 0x2 - RTA_AUTHOR = 0x40 - RTA_BRD = 0x80 - RTA_DST = 0x1 - RTA_GATEWAY = 0x2 - RTA_GENMASK = 0x8 - RTA_IFA = 0x20 - RTA_IFP = 0x10 - RTA_NETMASK = 0x4 - RTF_BLACKHOLE = 0x1000 - RTF_BROADCAST = 0x400000 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 - RTF_FMASK = 0x1004d808 - RTF_GATEWAY = 0x2 - RTF_GWFLAG_COMPAT = 0x80000000 - RTF_HOST = 0x4 - RTF_LLDATA = 0x400 - RTF_LLINFO = 0x400 - RTF_LOCAL = 0x200000 - RTF_MODIFIED = 0x20 - RTF_MULTICAST = 0x800000 - RTF_PINNED = 0x100000 - RTF_PRCLONING = 0x10000 - RTF_PROTO1 = 0x8000 - RTF_PROTO2 = 0x4000 - RTF_PROTO3 = 0x40000 - RTF_REJECT = 0x8 - RTF_RNH_LOCKED = 0x40000000 - RTF_STATIC = 0x800 - RTF_STICKY = 0x10000000 - RTF_UP = 0x1 - RTF_XRESOLVE = 0x200 - RTM_ADD = 0x1 - RTM_CHANGE = 0x3 - RTM_DELADDR = 0xd - RTM_DELETE = 0x2 - RTM_DELMADDR = 0x10 - RTM_GET = 0x4 - RTM_IEEE80211 = 0x12 - RTM_IFANNOUNCE = 0x11 - RTM_IFINFO = 0xe - RTM_LOCK = 0x8 - RTM_LOSING = 0x5 - RTM_MISS = 0x7 - RTM_NEWADDR = 0xc - RTM_NEWMADDR = 0xf - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb - RTM_RTTUNIT = 0xf4240 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 - RTV_MTU = 0x1 - RTV_RPIPE = 0x8 - RTV_RTT = 0x40 - RTV_RTTVAR = 0x80 - RTV_SPIPE = 0x10 - RTV_SSTHRESH = 0x20 - RTV_WEIGHT = 0x100 - RT_ALL_FIBS = -0x1 - RT_CACHING_CONTEXT = 0x1 - RT_DEFAULT_FIB = 0x0 - RT_NORTREF = 0x2 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_BINTIME = 0x4 - SCM_CREDS = 0x3 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x2 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDMULTI = 0x80206931 - SIOCADDRT = 0x8040720a - SIOCAIFADDR = 0x8040691a - SIOCAIFGROUP = 0x80286987 - SIOCALIFADDR = 0x8118691b - SIOCATMARK = 0x40047307 - SIOCDELMULTI = 0x80206932 - SIOCDELRT = 0x8040720b - SIOCDIFADDR = 0x80206919 - SIOCDIFGROUP = 0x80286989 - SIOCDIFPHYADDR = 0x80206949 - SIOCDLIFADDR = 0x8118691d - SIOCGDRVSPEC = 0xc028697b - SIOCGETSGCNT = 0xc0207210 - SIOCGETVIFCNT = 0xc028720f - SIOCGHIWAT = 0x40047301 - SIOCGIFADDR = 0xc0206921 - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCAP = 0xc020691f - SIOCGIFCONF = 0xc0106924 - SIOCGIFDESCR = 0xc020692a - SIOCGIFDSTADDR = 0xc0206922 - SIOCGIFFIB = 0xc020695c - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFGENERIC = 0xc020693a - SIOCGIFGMEMB = 0xc028698a - SIOCGIFGROUP = 0xc0286988 - SIOCGIFINDEX = 0xc0206920 - SIOCGIFMAC = 0xc0206926 - SIOCGIFMEDIA = 0xc0306938 - SIOCGIFMETRIC = 0xc0206917 - SIOCGIFMTU = 0xc0206933 - SIOCGIFNETMASK = 0xc0206925 - SIOCGIFPDSTADDR = 0xc0206948 - SIOCGIFPHYS = 0xc0206935 - SIOCGIFPSRCADDR = 0xc0206947 - SIOCGIFSTATUS = 0xc331693b - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 - SIOCGPRIVATE_0 = 0xc0206950 - SIOCGPRIVATE_1 = 0xc0206951 - SIOCIFCREATE = 0xc020697a - SIOCIFCREATE2 = 0xc020697c - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc0106978 - SIOCSDRVSPEC = 0x8028697b - SIOCSHIWAT = 0x80047300 - SIOCSIFADDR = 0x8020690c - SIOCSIFBRDADDR = 0x80206913 - SIOCSIFCAP = 0x8020691e - SIOCSIFDESCR = 0x80206929 - SIOCSIFDSTADDR = 0x8020690e - SIOCSIFFIB = 0x8020695d - SIOCSIFFLAGS = 0x80206910 - SIOCSIFGENERIC = 0x80206939 - SIOCSIFLLADDR = 0x8020693c - SIOCSIFMAC = 0x80206927 - SIOCSIFMEDIA = 0xc0206937 - SIOCSIFMETRIC = 0x80206918 - SIOCSIFMTU = 0x80206934 - SIOCSIFNAME = 0x80206928 - SIOCSIFNETMASK = 0x80206916 - SIOCSIFPHYADDR = 0x80406946 - SIOCSIFPHYS = 0x80206936 - SIOCSIFRVNET = 0xc020695b - SIOCSIFVNET = 0xc020695a - SIOCSLIFPHYADDR = 0x8118694a - SIOCSLOWAT = 0x80047302 - SIOCSPGRP = 0x80047308 - SOCK_CLOEXEC = 0x10000000 - SOCK_DGRAM = 0x2 - SOCK_MAXADDRLEN = 0xff - SOCK_NONBLOCK = 0x20000000 - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_SOCKET = 0xffff - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x2 - SO_ACCEPTFILTER = 0x1000 - SO_BINTIME = 0x2000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 - SO_LABEL = 0x1009 - SO_LINGER = 0x80 - SO_LISTENINCQLEN = 0x1013 - SO_LISTENQLEN = 0x1012 - SO_LISTENQLIMIT = 0x1011 - SO_NOSIGPIPE = 0x800 - SO_NO_DDP = 0x8000 - SO_NO_OFFLOAD = 0x4000 - SO_OOBINLINE = 0x100 - SO_PEERLABEL = 0x1010 - SO_PROTOCOL = 0x1016 - SO_PROTOTYPE = 0x1016 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 - SO_REUSEADDR = 0x4 - SO_REUSEPORT = 0x200 - SO_SETFIB = 0x1014 - SO_SNDBUF = 0x1001 - SO_SNDLOWAT = 0x1003 - SO_SNDTIMEO = 0x1005 - SO_TIMESTAMP = 0x400 - SO_TYPE = 0x1008 - SO_USELOOPBACK = 0x40 - SO_USER_COOKIE = 0x1015 - SO_VENDOR = 0x80000000 - TCIFLUSH = 0x1 - TCIOFLUSH = 0x3 - TCOFLUSH = 0x2 - TCP_CA_NAME_MAX = 0x10 - TCP_CONGESTION = 0x40 - TCP_INFO = 0x20 - TCP_KEEPCNT = 0x400 - TCP_KEEPIDLE = 0x100 - TCP_KEEPINIT = 0x80 - TCP_KEEPINTVL = 0x200 - TCP_MAXBURST = 0x4 - TCP_MAXHLEN = 0x3c - TCP_MAXOLEN = 0x28 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x4 - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0x10 - TCP_MINMSS = 0xd8 - TCP_MSS = 0x218 - TCP_NODELAY = 0x1 - TCP_NOOPT = 0x8 - TCP_NOPUSH = 0x4 - TCP_VENDOR = 0x80000000 - TCSAFLUSH = 0x2 - TIOCCBRK = 0x2000747a - TIOCCDTR = 0x20007478 - TIOCCONS = 0x80047462 - TIOCDRAIN = 0x2000745e - TIOCEXCL = 0x2000740d - TIOCEXT = 0x80047460 - TIOCFLUSH = 0x80047410 - TIOCGDRAINWAIT = 0x40047456 - TIOCGETA = 0x402c7413 - TIOCGETD = 0x4004741a - TIOCGPGRP = 0x40047477 - TIOCGPTN = 0x4004740f - TIOCGSID = 0x40047463 - TIOCGWINSZ = 0x40087468 - TIOCMBIC = 0x8004746b - TIOCMBIS = 0x8004746c - TIOCMGDTRWAIT = 0x4004745a - TIOCMGET = 0x4004746a - TIOCMSDTRWAIT = 0x8004745b - TIOCMSET = 0x8004746d - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DCD = 0x40 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x20007471 - TIOCNXCL = 0x2000740e - TIOCOUTQ = 0x40047473 - TIOCPKT = 0x80047470 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCPTMASTER = 0x2000741c - TIOCSBRK = 0x2000747b - TIOCSCTTY = 0x20007461 - TIOCSDRAINWAIT = 0x80047457 - TIOCSDTR = 0x20007479 - TIOCSETA = 0x802c7414 - TIOCSETAF = 0x802c7416 - TIOCSETAW = 0x802c7415 - TIOCSETD = 0x8004741b - TIOCSIG = 0x2004745f - TIOCSPGRP = 0x80047476 - TIOCSTART = 0x2000746e - TIOCSTAT = 0x20007465 - TIOCSTI = 0x80017472 - TIOCSTOP = 0x2000746f - TIOCSWINSZ = 0x80087467 - TIOCTIMESTAMP = 0x40107459 - TIOCUCNTL = 0x80047466 - TOSTOP = 0x400000 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 - VEOL = 0x1 - VEOL2 = 0x2 - VERASE = 0x3 - VERASE2 = 0x7 - VINTR = 0x8 - VKILL = 0x5 - VLNEXT = 0xe - VMIN = 0x10 - VQUIT = 0x9 - VREPRINT = 0x6 - VSTART = 0xc - VSTATUS = 0x12 - VSTOP = 0xd - VSUSP = 0xa - VTIME = 0x11 - VWERASE = 0x4 - WCONTINUED = 0x4 - WCOREFLAG = 0x80 - WEXITED = 0x10 - WLINUXCLONE = 0x80000000 - WNOHANG = 0x1 - WNOWAIT = 0x8 - WSTOPPED = 0x2 - WTRAPPED = 0x20 - WUNTRACED = 0x2 + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 2afbe2d5ed..c5c6f13e53 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -1,5 +1,5 @@ // mkerrors.sh -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,freebsd @@ -11,1442 +11,1428 @@ package unix import "syscall" const ( - AF_APPLETALK = 0x10 - AF_ARP = 0x23 - AF_ATM = 0x1e - AF_BLUETOOTH = 0x24 - AF_CCITT = 0xa - AF_CHAOS = 0x5 - AF_CNT = 0x15 - AF_COIP = 0x14 - AF_DATAKIT = 0x9 - AF_DECnet = 0xc - AF_DLI = 0xd - AF_E164 = 0x1a - AF_ECMA = 0x8 - AF_HYLINK = 0xf - AF_IEEE80211 = 0x25 - AF_IMPLINK = 0x3 - AF_INET = 0x2 - AF_INET6 = 0x1c - AF_INET6_SDP = 0x2a - AF_INET_SDP = 0x28 - AF_IPX = 0x17 - AF_ISDN = 0x1a - AF_ISO = 0x7 - AF_LAT = 0xe - AF_LINK = 0x12 - AF_LOCAL = 0x1 - AF_MAX = 0x2a - AF_NATM = 0x1d - AF_NETBIOS = 0x6 - AF_NETGRAPH = 0x20 - AF_OSI = 0x7 - AF_PUP = 0x4 - AF_ROUTE = 0x11 - AF_SCLUSTER = 0x22 - AF_SIP = 0x18 - AF_SLOW = 0x21 - AF_SNA = 0xb - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VENDOR00 = 0x27 - AF_VENDOR01 = 0x29 - AF_VENDOR02 = 0x2b - AF_VENDOR03 = 0x2d - AF_VENDOR04 = 0x2f - AF_VENDOR05 = 0x31 - AF_VENDOR06 = 0x33 - AF_VENDOR07 = 0x35 - AF_VENDOR08 = 0x37 - AF_VENDOR09 = 0x39 - AF_VENDOR10 = 0x3b - AF_VENDOR11 = 0x3d - AF_VENDOR12 = 0x3f - AF_VENDOR13 = 0x41 - AF_VENDOR14 = 0x43 - AF_VENDOR15 = 0x45 - AF_VENDOR16 = 0x47 - AF_VENDOR17 = 0x49 - AF_VENDOR18 = 0x4b - AF_VENDOR19 = 0x4d - AF_VENDOR20 = 0x4f - AF_VENDOR21 = 0x51 - AF_VENDOR22 = 0x53 - AF_VENDOR23 = 0x55 - AF_VENDOR24 = 0x57 - AF_VENDOR25 = 0x59 - AF_VENDOR26 = 0x5b - AF_VENDOR27 = 0x5d - AF_VENDOR28 = 0x5f - AF_VENDOR29 = 0x61 - AF_VENDOR30 = 0x63 - AF_VENDOR31 = 0x65 - AF_VENDOR32 = 0x67 - AF_VENDOR33 = 0x69 - AF_VENDOR34 = 0x6b - AF_VENDOR35 = 0x6d - AF_VENDOR36 = 0x6f - AF_VENDOR37 = 0x71 - AF_VENDOR38 = 0x73 - AF_VENDOR39 = 0x75 - AF_VENDOR40 = 0x77 - AF_VENDOR41 = 0x79 - AF_VENDOR42 = 0x7b - AF_VENDOR43 = 0x7d - AF_VENDOR44 = 0x7f - AF_VENDOR45 = 0x81 - AF_VENDOR46 = 0x83 - AF_VENDOR47 = 0x85 - B0 = 0x0 - B110 = 0x6e - B115200 = 0x1c200 - B1200 = 0x4b0 - B134 = 0x86 - B14400 = 0x3840 - B150 = 0x96 - B1800 = 0x708 - B19200 = 0x4b00 - B200 = 0xc8 - B230400 = 0x38400 - B2400 = 0x960 - B28800 = 0x7080 - B300 = 0x12c - B38400 = 0x9600 - B460800 = 0x70800 - B4800 = 0x12c0 - B50 = 0x32 - B57600 = 0xe100 - B600 = 0x258 - B7200 = 0x1c20 - B75 = 0x4b - B76800 = 0x12c00 - B921600 = 0xe1000 - B9600 = 0x2580 - BIOCFEEDBACK = 0x8004427c - BIOCFLUSH = 0x20004268 - BIOCGBLEN = 0x40044266 - BIOCGDIRECTION = 0x40044276 - BIOCGDLT = 0x4004426a - BIOCGDLTLIST = 0xc0084279 - BIOCGETBUFMODE = 0x4004427d - BIOCGETIF = 0x4020426b - BIOCGETZMAX = 0x4004427f - BIOCGHDRCMPLT = 0x40044274 - BIOCGRSIG = 0x40044272 - BIOCGRTIMEOUT = 0x4008426e - BIOCGSEESENT = 0x40044276 - BIOCGSTATS = 0x4008426f - BIOCGTSTAMP = 0x40044283 - BIOCIMMEDIATE = 0x80044270 - BIOCLOCK = 0x2000427a - BIOCPROMISC = 0x20004269 - BIOCROTZBUF = 0x400c4280 - BIOCSBLEN = 0xc0044266 - BIOCSDIRECTION = 0x80044277 - BIOCSDLT = 0x80044278 - BIOCSETBUFMODE = 0x8004427e - BIOCSETF = 0x80084267 - BIOCSETFNR = 0x80084282 - BIOCSETIF = 0x8020426c - BIOCSETWF = 0x8008427b - BIOCSETZBUF = 0x800c4281 - BIOCSHDRCMPLT = 0x80044275 - BIOCSRSIG = 0x80044273 - BIOCSRTIMEOUT = 0x8008426d - BIOCSSEESENT = 0x80044277 - BIOCSTSTAMP = 0x80044284 - BIOCVERSION = 0x40044271 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALIGNMENT = 0x4 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_BUFMODE_BUFFER = 0x1 - BPF_BUFMODE_ZBUF = 0x2 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXBUFSIZE = 0x80000 - BPF_MAXINSNS = 0x200 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINBUFSIZE = 0x20 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RELEASE = 0x30bb6 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_T_BINTIME = 0x2 - BPF_T_BINTIME_FAST = 0x102 - BPF_T_BINTIME_MONOTONIC = 0x202 - BPF_T_BINTIME_MONOTONIC_FAST = 0x302 - BPF_T_FAST = 0x100 - BPF_T_FLAG_MASK = 0x300 - BPF_T_FORMAT_MASK = 0x3 - BPF_T_MICROTIME = 0x0 - BPF_T_MICROTIME_FAST = 0x100 - BPF_T_MICROTIME_MONOTONIC = 0x200 - BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 - BPF_T_MONOTONIC = 0x200 - BPF_T_MONOTONIC_FAST = 0x300 - BPF_T_NANOTIME = 0x1 - BPF_T_NANOTIME_FAST = 0x101 - BPF_T_NANOTIME_MONOTONIC = 0x201 - BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 - BPF_T_NONE = 0x3 - BPF_T_NORMAL = 0x0 - BPF_W = 0x0 - BPF_X = 0x8 - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x8000 - CREAD = 0x800 - CS5 = 0x0 - CS6 = 0x100 - CS7 = 0x200 - CS8 = 0x300 - CSIZE = 0x300 - CSTART = 0x11 - CSTATUS = 0x14 - CSTOP = 0x13 - CSTOPB = 0x400 - CSUSP = 0x1a - CTL_MAXNAME = 0x18 - CTL_NET = 0x4 - DLT_A429 = 0xb8 - DLT_A653_ICM = 0xb9 - DLT_AIRONET_HEADER = 0x78 - DLT_AOS = 0xde - DLT_APPLE_IP_OVER_IEEE1394 = 0x8a - DLT_ARCNET = 0x7 - DLT_ARCNET_LINUX = 0x81 - DLT_ATM_CLIP = 0x13 - DLT_ATM_RFC1483 = 0xb - DLT_AURORA = 0x7e - DLT_AX25 = 0x3 - DLT_AX25_KISS = 0xca - DLT_BACNET_MS_TP = 0xa5 - DLT_BLUETOOTH_HCI_H4 = 0xbb - DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 - DLT_CAN20B = 0xbe - DLT_CAN_SOCKETCAN = 0xe3 - DLT_CHAOS = 0x5 - DLT_CHDLC = 0x68 - DLT_CISCO_IOS = 0x76 - DLT_C_HDLC = 0x68 - DLT_C_HDLC_WITH_DIR = 0xcd - DLT_DBUS = 0xe7 - DLT_DECT = 0xdd - DLT_DOCSIS = 0x8f - DLT_DVB_CI = 0xeb - DLT_ECONET = 0x73 - DLT_EN10MB = 0x1 - DLT_EN3MB = 0x2 - DLT_ENC = 0x6d - DLT_ERF = 0xc5 - DLT_ERF_ETH = 0xaf - DLT_ERF_POS = 0xb0 - DLT_FC_2 = 0xe0 - DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 - DLT_FDDI = 0xa - DLT_FLEXRAY = 0xd2 - DLT_FRELAY = 0x6b - DLT_FRELAY_WITH_DIR = 0xce - DLT_GCOM_SERIAL = 0xad - DLT_GCOM_T1E1 = 0xac - DLT_GPF_F = 0xab - DLT_GPF_T = 0xaa - DLT_GPRS_LLC = 0xa9 - DLT_GSMTAP_ABIS = 0xda - DLT_GSMTAP_UM = 0xd9 - DLT_HHDLC = 0x79 - DLT_IBM_SN = 0x92 - DLT_IBM_SP = 0x91 - DLT_IEEE802 = 0x6 - DLT_IEEE802_11 = 0x69 - DLT_IEEE802_11_RADIO = 0x7f - DLT_IEEE802_11_RADIO_AVS = 0xa3 - DLT_IEEE802_15_4 = 0xc3 - DLT_IEEE802_15_4_LINUX = 0xbf - DLT_IEEE802_15_4_NOFCS = 0xe6 - DLT_IEEE802_15_4_NONASK_PHY = 0xd7 - DLT_IEEE802_16_MAC_CPS = 0xbc - DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 - DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 - DLT_IPMB_LINUX = 0xd1 - DLT_IPNET = 0xe2 - DLT_IPOIB = 0xf2 - DLT_IPV4 = 0xe4 - DLT_IPV6 = 0xe5 - DLT_IP_OVER_FC = 0x7a - DLT_JUNIPER_ATM1 = 0x89 - DLT_JUNIPER_ATM2 = 0x87 - DLT_JUNIPER_ATM_CEMIC = 0xee - DLT_JUNIPER_CHDLC = 0xb5 - DLT_JUNIPER_ES = 0x84 - DLT_JUNIPER_ETHER = 0xb2 - DLT_JUNIPER_FIBRECHANNEL = 0xea - DLT_JUNIPER_FRELAY = 0xb4 - DLT_JUNIPER_GGSN = 0x85 - DLT_JUNIPER_ISM = 0xc2 - DLT_JUNIPER_MFR = 0x86 - DLT_JUNIPER_MLFR = 0x83 - DLT_JUNIPER_MLPPP = 0x82 - DLT_JUNIPER_MONITOR = 0xa4 - DLT_JUNIPER_PIC_PEER = 0xae - DLT_JUNIPER_PPP = 0xb3 - DLT_JUNIPER_PPPOE = 0xa7 - DLT_JUNIPER_PPPOE_ATM = 0xa8 - DLT_JUNIPER_SERVICES = 0x88 - DLT_JUNIPER_SRX_E2E = 0xe9 - DLT_JUNIPER_ST = 0xc8 - DLT_JUNIPER_VP = 0xb7 - DLT_JUNIPER_VS = 0xe8 - DLT_LAPB_WITH_DIR = 0xcf - DLT_LAPD = 0xcb - DLT_LIN = 0xd4 - DLT_LINUX_EVDEV = 0xd8 - DLT_LINUX_IRDA = 0x90 - DLT_LINUX_LAPD = 0xb1 - DLT_LINUX_PPP_WITHDIRECTION = 0xa6 - DLT_LINUX_SLL = 0x71 - DLT_LOOP = 0x6c - DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0xf6 - DLT_MATCHING_MIN = 0x68 - DLT_MFR = 0xb6 - DLT_MOST = 0xd3 - DLT_MPEG_2_TS = 0xf3 - DLT_MPLS = 0xdb - DLT_MTP2 = 0x8c - DLT_MTP2_WITH_PHDR = 0x8b - DLT_MTP3 = 0x8d - DLT_MUX27010 = 0xec - DLT_NETANALYZER = 0xf0 - DLT_NETANALYZER_TRANSPARENT = 0xf1 - DLT_NFC_LLCP = 0xf5 - DLT_NFLOG = 0xef - DLT_NG40 = 0xf4 - DLT_NULL = 0x0 - DLT_PCI_EXP = 0x7d - DLT_PFLOG = 0x75 - DLT_PFSYNC = 0x79 - DLT_PPI = 0xc0 - DLT_PPP = 0x9 - DLT_PPP_BSDOS = 0x10 - DLT_PPP_ETHER = 0x33 - DLT_PPP_PPPD = 0xa6 - DLT_PPP_SERIAL = 0x32 - DLT_PPP_WITH_DIR = 0xcc - DLT_PPP_WITH_DIRECTION = 0xa6 - DLT_PRISM_HEADER = 0x77 - DLT_PRONET = 0x4 - DLT_RAIF1 = 0xc6 - DLT_RAW = 0xc - DLT_RIO = 0x7c - DLT_SCCP = 0x8e - DLT_SITA = 0xc4 - DLT_SLIP = 0x8 - DLT_SLIP_BSDOS = 0xf - DLT_STANAG_5066_D_PDU = 0xed - DLT_SUNATM = 0x7b - DLT_SYMANTEC_FIREWALL = 0x63 - DLT_TZSP = 0x80 - DLT_USB = 0xba - DLT_USB_LINUX = 0xbd - DLT_USB_LINUX_MMAPPED = 0xdc - DLT_USER0 = 0x93 - DLT_USER1 = 0x94 - DLT_USER10 = 0x9d - DLT_USER11 = 0x9e - DLT_USER12 = 0x9f - DLT_USER13 = 0xa0 - DLT_USER14 = 0xa1 - DLT_USER15 = 0xa2 - DLT_USER2 = 0x95 - DLT_USER3 = 0x96 - DLT_USER4 = 0x97 - DLT_USER5 = 0x98 - DLT_USER6 = 0x99 - DLT_USER7 = 0x9a - DLT_USER8 = 0x9b - DLT_USER9 = 0x9c - DLT_WIHART = 0xdf - DLT_X2E_SERIAL = 0xd5 - DLT_X2E_XORAYA = 0xd6 - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x40 - ECHOE = 0x2 - ECHOK = 0x4 - ECHOKE = 0x1 - ECHONL = 0x10 - ECHOPRT = 0x20 - EVFILT_AIO = -0x3 - EVFILT_FS = -0x9 - EVFILT_LIO = -0xa - EVFILT_PROC = -0x5 - EVFILT_READ = -0x1 - EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xb - EVFILT_TIMER = -0x7 - EVFILT_USER = -0xb - EVFILT_VNODE = -0x4 - EVFILT_WRITE = -0x2 - EV_ADD = 0x1 - EV_CLEAR = 0x20 - EV_DELETE = 0x2 - EV_DISABLE = 0x8 - EV_DISPATCH = 0x80 - EV_DROP = 0x1000 - EV_ENABLE = 0x4 - EV_EOF = 0x8000 - EV_ERROR = 0x4000 - EV_FLAG1 = 0x2000 - EV_ONESHOT = 0x10 - EV_RECEIPT = 0x40 - EV_SYSFLAGS = 0xf000 - EXTA = 0x4b00 - EXTATTR_NAMESPACE_EMPTY = 0x0 - EXTATTR_NAMESPACE_SYSTEM = 0x2 - EXTATTR_NAMESPACE_USER = 0x1 - EXTB = 0x9600 - EXTPROC = 0x800 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FLUSHO = 0x800000 - F_CANCEL = 0x5 - F_DUP2FD = 0xa - F_DUP2FD_CLOEXEC = 0x12 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x11 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLK = 0xb - F_GETOWN = 0x5 - F_OGETLK = 0x7 - F_OK = 0x0 - F_OSETLK = 0x8 - F_OSETLKW = 0x9 - F_RDAHEAD = 0x10 - F_RDLCK = 0x1 - F_READAHEAD = 0xf - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLK = 0xc - F_SETLKW = 0xd - F_SETLK_REMOTE = 0xe - F_SETOWN = 0x6 - F_UNLCK = 0x2 - F_UNLCKSYS = 0x4 - F_WRLCK = 0x3 - HUPCL = 0x4000 - ICANON = 0x100 - ICMP6_FILTER = 0x12 - ICRNL = 0x100 - IEXTEN = 0x400 - IFAN_ARRIVAL = 0x0 - IFAN_DEPARTURE = 0x1 - IFF_ALLMULTI = 0x200 - IFF_ALTPHYS = 0x4000 - IFF_BROADCAST = 0x2 - IFF_CANTCHANGE = 0x218f72 - IFF_CANTCONFIG = 0x10000 - IFF_DEBUG = 0x4 - IFF_DRV_OACTIVE = 0x400 - IFF_DRV_RUNNING = 0x40 - IFF_DYING = 0x200000 - IFF_LINK0 = 0x1000 - IFF_LINK1 = 0x2000 - IFF_LINK2 = 0x4000 - IFF_LOOPBACK = 0x8 - IFF_MONITOR = 0x40000 - IFF_MULTICAST = 0x8000 - IFF_NOARP = 0x80 - IFF_OACTIVE = 0x400 - IFF_POINTOPOINT = 0x10 - IFF_PPROMISC = 0x20000 - IFF_PROMISC = 0x100 - IFF_RENAMING = 0x400000 - IFF_RUNNING = 0x40 - IFF_SIMPLEX = 0x800 - IFF_SMART = 0x20 - IFF_STATICARP = 0x80000 - IFF_UP = 0x1 - IFNAMSIZ = 0x10 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BRIDGE = 0xd1 - IFT_BSC = 0x53 - IFT_CARP = 0xf8 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE1394 = 0x90 - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INFINIBAND = 0xc7 - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L2VLAN = 0x87 - IFT_L3IPVLAN = 0x88 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPP = 0x17 - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPVIRTUAL = 0x35 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLASSD_HOST = 0xfffffff - IN_CLASSD_NET = 0xf0000000 - IN_CLASSD_NSHIFT = 0x1c - IN_LOOPBACKNET = 0x7f - IN_RFC3021_MASK = 0xfffffffe - IPPROTO_3PC = 0x22 - IPPROTO_ADFS = 0x44 - IPPROTO_AH = 0x33 - IPPROTO_AHIP = 0x3d - IPPROTO_APES = 0x63 - IPPROTO_ARGUS = 0xd - IPPROTO_AX25 = 0x5d - IPPROTO_BHA = 0x31 - IPPROTO_BLT = 0x1e - IPPROTO_BRSATMON = 0x4c - IPPROTO_CARP = 0x70 - IPPROTO_CFTP = 0x3e - IPPROTO_CHAOS = 0x10 - IPPROTO_CMTP = 0x26 - IPPROTO_CPHB = 0x49 - IPPROTO_CPNX = 0x48 - IPPROTO_DDP = 0x25 - IPPROTO_DGP = 0x56 - IPPROTO_DIVERT = 0x102 - IPPROTO_DONE = 0x101 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_EMCON = 0xe - IPPROTO_ENCAP = 0x62 - IPPROTO_EON = 0x50 - IPPROTO_ESP = 0x32 - IPPROTO_ETHERIP = 0x61 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GGP = 0x3 - IPPROTO_GMTP = 0x64 - IPPROTO_GRE = 0x2f - IPPROTO_HELLO = 0x3f - IPPROTO_HIP = 0x8b - IPPROTO_HMP = 0x14 - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IDPR = 0x23 - IPPROTO_IDRP = 0x2d - IPPROTO_IGMP = 0x2 - IPPROTO_IGP = 0x55 - IPPROTO_IGRP = 0x58 - IPPROTO_IL = 0x28 - IPPROTO_INLSP = 0x34 - IPPROTO_INP = 0x20 - IPPROTO_IP = 0x0 - IPPROTO_IPCOMP = 0x6c - IPPROTO_IPCV = 0x47 - IPPROTO_IPEIP = 0x5e - IPPROTO_IPIP = 0x4 - IPPROTO_IPPC = 0x43 - IPPROTO_IPV4 = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_IRTP = 0x1c - IPPROTO_KRYPTOLAN = 0x41 - IPPROTO_LARP = 0x5b - IPPROTO_LEAF1 = 0x19 - IPPROTO_LEAF2 = 0x1a - IPPROTO_MAX = 0x100 - IPPROTO_MAXID = 0x34 - IPPROTO_MEAS = 0x13 - IPPROTO_MH = 0x87 - IPPROTO_MHRP = 0x30 - IPPROTO_MICP = 0x5f - IPPROTO_MOBILE = 0x37 - IPPROTO_MPLS = 0x89 - IPPROTO_MTP = 0x5c - IPPROTO_MUX = 0x12 - IPPROTO_ND = 0x4d - IPPROTO_NHRP = 0x36 - IPPROTO_NONE = 0x3b - IPPROTO_NSP = 0x1f - IPPROTO_NVPII = 0xb - IPPROTO_OLD_DIVERT = 0xfe - IPPROTO_OSPFIGP = 0x59 - IPPROTO_PFSYNC = 0xf0 - IPPROTO_PGM = 0x71 - IPPROTO_PIGP = 0x9 - IPPROTO_PIM = 0x67 - IPPROTO_PRM = 0x15 - IPPROTO_PUP = 0xc - IPPROTO_PVP = 0x4b - IPPROTO_RAW = 0xff - IPPROTO_RCCMON = 0xa - IPPROTO_RDP = 0x1b - IPPROTO_RESERVED_253 = 0xfd - IPPROTO_RESERVED_254 = 0xfe - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_RVD = 0x42 - IPPROTO_SATEXPAK = 0x40 - IPPROTO_SATMON = 0x45 - IPPROTO_SCCSP = 0x60 - IPPROTO_SCTP = 0x84 - IPPROTO_SDRP = 0x2a - IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 - IPPROTO_SHIM6 = 0x8c - IPPROTO_SKIP = 0x39 - IPPROTO_SPACER = 0x7fff - IPPROTO_SRPC = 0x5a - IPPROTO_ST = 0x7 - IPPROTO_SVMTP = 0x52 - IPPROTO_SWIPE = 0x35 - IPPROTO_TCF = 0x57 - IPPROTO_TCP = 0x6 - IPPROTO_TLSP = 0x38 - IPPROTO_TP = 0x1d - IPPROTO_TPXX = 0x27 - IPPROTO_TRUNK1 = 0x17 - IPPROTO_TRUNK2 = 0x18 - IPPROTO_TTP = 0x54 - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPPROTO_VINES = 0x53 - IPPROTO_VISA = 0x46 - IPPROTO_VMTP = 0x51 - IPPROTO_WBEXPAK = 0x4f - IPPROTO_WBMON = 0x4e - IPPROTO_WSN = 0x4a - IPPROTO_XNET = 0xf - IPPROTO_XTP = 0x24 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_BINDANY = 0x40 - IPV6_BINDV6ONLY = 0x1b - IPV6_CHECKSUM = 0x1a - IPV6_DEFAULT_MULTICAST_HOPS = 0x1 - IPV6_DEFAULT_MULTICAST_LOOP = 0x1 - IPV6_DEFHLIM = 0x40 - IPV6_DONTFRAG = 0x3e - IPV6_DSTOPTS = 0x32 - IPV6_FAITH = 0x1d - IPV6_FLOWINFO_MASK = 0xffffff0f - IPV6_FLOWLABEL_MASK = 0xffff0f00 - IPV6_FRAGTTL = 0x78 - IPV6_FW_ADD = 0x1e - IPV6_FW_DEL = 0x1f - IPV6_FW_FLUSH = 0x20 - IPV6_FW_GET = 0x22 - IPV6_FW_ZERO = 0x21 - IPV6_HLIMDEC = 0x1 - IPV6_HOPLIMIT = 0x2f - IPV6_HOPOPTS = 0x31 - IPV6_IPSEC_POLICY = 0x1c - IPV6_JOIN_GROUP = 0xc - IPV6_LEAVE_GROUP = 0xd - IPV6_MAXHLIM = 0xff - IPV6_MAXOPTHDR = 0x800 - IPV6_MAXPACKET = 0xffff - IPV6_MAX_GROUP_SRC_FILTER = 0x200 - IPV6_MAX_MEMBERSHIPS = 0xfff - IPV6_MAX_SOCK_SRC_FILTER = 0x80 - IPV6_MIN_MEMBERSHIPS = 0x1f - IPV6_MMTU = 0x500 - IPV6_MSFILTER = 0x4a - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_IF = 0x9 - IPV6_MULTICAST_LOOP = 0xb - IPV6_NEXTHOP = 0x30 - IPV6_PATHMTU = 0x2c - IPV6_PKTINFO = 0x2e - IPV6_PORTRANGE = 0xe - IPV6_PORTRANGE_DEFAULT = 0x0 - IPV6_PORTRANGE_HIGH = 0x1 - IPV6_PORTRANGE_LOW = 0x2 - IPV6_PREFER_TEMPADDR = 0x3f - IPV6_RECVDSTOPTS = 0x28 - IPV6_RECVHOPLIMIT = 0x25 - IPV6_RECVHOPOPTS = 0x27 - IPV6_RECVPATHMTU = 0x2b - IPV6_RECVPKTINFO = 0x24 - IPV6_RECVRTHDR = 0x26 - IPV6_RECVTCLASS = 0x39 - IPV6_RTHDR = 0x33 - IPV6_RTHDRDSTOPTS = 0x23 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_SOCKOPT_RESERVED1 = 0x3 - IPV6_TCLASS = 0x3d - IPV6_UNICAST_HOPS = 0x4 - IPV6_USE_MIN_MTU = 0x2a - IPV6_V6ONLY = 0x1b - IPV6_VERSION = 0x60 - IPV6_VERSION_MASK = 0xf0 - IP_ADD_MEMBERSHIP = 0xc - IP_ADD_SOURCE_MEMBERSHIP = 0x46 - IP_BINDANY = 0x18 - IP_BLOCK_SOURCE = 0x48 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DONTFRAG = 0x43 - IP_DROP_MEMBERSHIP = 0xd - IP_DROP_SOURCE_MEMBERSHIP = 0x47 - IP_DUMMYNET3 = 0x31 - IP_DUMMYNET_CONFIGURE = 0x3c - IP_DUMMYNET_DEL = 0x3d - IP_DUMMYNET_FLUSH = 0x3e - IP_DUMMYNET_GET = 0x40 - IP_FAITH = 0x16 - IP_FW3 = 0x30 - IP_FW_ADD = 0x32 - IP_FW_DEL = 0x33 - IP_FW_FLUSH = 0x34 - IP_FW_GET = 0x36 - IP_FW_NAT_CFG = 0x38 - IP_FW_NAT_DEL = 0x39 - IP_FW_NAT_GET_CONFIG = 0x3a - IP_FW_NAT_GET_LOG = 0x3b - IP_FW_RESETLOG = 0x37 - IP_FW_TABLE_ADD = 0x28 - IP_FW_TABLE_DEL = 0x29 - IP_FW_TABLE_FLUSH = 0x2a - IP_FW_TABLE_GETSIZE = 0x2b - IP_FW_TABLE_LIST = 0x2c - IP_FW_ZERO = 0x35 - IP_HDRINCL = 0x2 - IP_IPSEC_POLICY = 0x15 - IP_MAXPACKET = 0xffff - IP_MAX_GROUP_SRC_FILTER = 0x200 - IP_MAX_MEMBERSHIPS = 0xfff - IP_MAX_SOCK_MUTE_FILTER = 0x80 - IP_MAX_SOCK_SRC_FILTER = 0x80 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MF = 0x2000 - IP_MINTTL = 0x42 - IP_MIN_MEMBERSHIPS = 0x1f - IP_MSFILTER = 0x4a - IP_MSS = 0x240 - IP_MULTICAST_IF = 0x9 - IP_MULTICAST_LOOP = 0xb - IP_MULTICAST_TTL = 0xa - IP_MULTICAST_VIF = 0xe - IP_OFFMASK = 0x1fff - IP_ONESBCAST = 0x17 - IP_OPTIONS = 0x1 - IP_PORTRANGE = 0x13 - IP_PORTRANGE_DEFAULT = 0x0 - IP_PORTRANGE_HIGH = 0x1 - IP_PORTRANGE_LOW = 0x2 - IP_RECVDSTADDR = 0x7 - IP_RECVIF = 0x14 - IP_RECVOPTS = 0x5 - IP_RECVRETOPTS = 0x6 - IP_RECVTOS = 0x44 - IP_RECVTTL = 0x41 - IP_RETOPTS = 0x8 - IP_RF = 0x8000 - IP_RSVP_OFF = 0x10 - IP_RSVP_ON = 0xf - IP_RSVP_VIF_OFF = 0x12 - IP_RSVP_VIF_ON = 0x11 - IP_SENDSRCADDR = 0x7 - IP_TOS = 0x3 - IP_TTL = 0x4 - IP_UNBLOCK_SOURCE = 0x49 - ISIG = 0x80 - ISTRIP = 0x20 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_AUTOSYNC = 0x7 - MADV_CORE = 0x9 - MADV_DONTNEED = 0x4 - MADV_FREE = 0x5 - MADV_NOCORE = 0x8 - MADV_NORMAL = 0x0 - MADV_NOSYNC = 0x6 - MADV_PROTECT = 0xa - MADV_RANDOM = 0x1 - MADV_SEQUENTIAL = 0x2 - MADV_WILLNEED = 0x3 - MAP_ALIGNED_SUPER = 0x1000000 - MAP_ALIGNMENT_MASK = -0x1000000 - MAP_ALIGNMENT_SHIFT = 0x18 - MAP_ANON = 0x1000 - MAP_ANONYMOUS = 0x1000 - MAP_COPY = 0x2 - MAP_EXCL = 0x4000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_HASSEMAPHORE = 0x200 - MAP_NOCORE = 0x20000 - MAP_NORESERVE = 0x40 - MAP_NOSYNC = 0x800 - MAP_PREFAULT_READ = 0x40000 - MAP_PRIVATE = 0x2 - MAP_RENAME = 0x20 - MAP_RESERVED0080 = 0x80 - MAP_RESERVED0100 = 0x100 - MAP_SHARED = 0x1 - MAP_STACK = 0x400 - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MSG_CMSG_CLOEXEC = 0x40000 - MSG_COMPAT = 0x8000 - MSG_CTRUNC = 0x20 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x80 - MSG_EOF = 0x100 - MSG_EOR = 0x8 - MSG_NBIO = 0x4000 - MSG_NOSIGNAL = 0x20000 - MSG_NOTIFICATION = 0x2000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_TRUNC = 0x10 - MSG_WAITALL = 0x40 - MS_ASYNC = 0x1 - MS_INVALIDATE = 0x2 - MS_SYNC = 0x0 - NAME_MAX = 0xff - NET_RT_DUMP = 0x1 - NET_RT_FLAGS = 0x2 - NET_RT_IFLIST = 0x3 - NET_RT_IFLISTL = 0x5 - NET_RT_IFMALIST = 0x4 - NET_RT_MAXID = 0x6 - NOFLSH = 0x80000000 - NOTE_ATTRIB = 0x8 - NOTE_CHILD = 0x4 - NOTE_DELETE = 0x1 - NOTE_EXEC = 0x20000000 - NOTE_EXIT = 0x80000000 - NOTE_EXTEND = 0x4 - NOTE_FFAND = 0x40000000 - NOTE_FFCOPY = 0xc0000000 - NOTE_FFCTRLMASK = 0xc0000000 - NOTE_FFLAGSMASK = 0xffffff - NOTE_FFNOP = 0x0 - NOTE_FFOR = 0x80000000 - NOTE_FORK = 0x40000000 - NOTE_LINK = 0x10 - NOTE_LOWAT = 0x1 - NOTE_PCTRLMASK = 0xf0000000 - NOTE_PDATAMASK = 0xfffff - NOTE_RENAME = 0x20 - NOTE_REVOKE = 0x40 - NOTE_TRACK = 0x1 - NOTE_TRACKERR = 0x2 - NOTE_TRIGGER = 0x1000000 - NOTE_WRITE = 0x2 - OCRNL = 0x10 - ONLCR = 0x2 - ONLRET = 0x40 - ONOCR = 0x20 - ONOEOT = 0x8 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x40 - O_CLOEXEC = 0x100000 - O_CREAT = 0x200 - O_DIRECT = 0x10000 - O_DIRECTORY = 0x20000 - O_EXCL = 0x800 - O_EXEC = 0x40000 - O_EXLOCK = 0x20 - O_FSYNC = 0x80 - O_NDELAY = 0x4 - O_NOCTTY = 0x8000 - O_NOFOLLOW = 0x100 - O_NONBLOCK = 0x4 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_SHLOCK = 0x10 - O_SYNC = 0x80 - O_TRUNC = 0x400 - O_TTY_INIT = 0x80000 - O_WRONLY = 0x1 - PARENB = 0x1000 - PARMRK = 0x8 - PARODD = 0x2000 - PENDIN = 0x20000000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - RLIMIT_AS = 0xa - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x8 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = 0x7fffffffffffffff - RTAX_AUTHOR = 0x6 - RTAX_BRD = 0x7 - RTAX_DST = 0x0 - RTAX_GATEWAY = 0x1 - RTAX_GENMASK = 0x3 - RTAX_IFA = 0x5 - RTAX_IFP = 0x4 - RTAX_MAX = 0x8 - RTAX_NETMASK = 0x2 - RTA_AUTHOR = 0x40 - RTA_BRD = 0x80 - RTA_DST = 0x1 - RTA_GATEWAY = 0x2 - RTA_GENMASK = 0x8 - RTA_IFA = 0x20 - RTA_IFP = 0x10 - RTA_NETMASK = 0x4 - RTF_BLACKHOLE = 0x1000 - RTF_BROADCAST = 0x400000 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 - RTF_FMASK = 0x1004d808 - RTF_GATEWAY = 0x2 - RTF_GWFLAG_COMPAT = 0x80000000 - RTF_HOST = 0x4 - RTF_LLDATA = 0x400 - RTF_LLINFO = 0x400 - RTF_LOCAL = 0x200000 - RTF_MODIFIED = 0x20 - RTF_MULTICAST = 0x800000 - RTF_PINNED = 0x100000 - RTF_PRCLONING = 0x10000 - RTF_PROTO1 = 0x8000 - RTF_PROTO2 = 0x4000 - RTF_PROTO3 = 0x40000 - RTF_REJECT = 0x8 - RTF_RNH_LOCKED = 0x40000000 - RTF_STATIC = 0x800 - RTF_STICKY = 0x10000000 - RTF_UP = 0x1 - RTF_XRESOLVE = 0x200 - RTM_ADD = 0x1 - RTM_CHANGE = 0x3 - RTM_DELADDR = 0xd - RTM_DELETE = 0x2 - RTM_DELMADDR = 0x10 - RTM_GET = 0x4 - RTM_IEEE80211 = 0x12 - RTM_IFANNOUNCE = 0x11 - RTM_IFINFO = 0xe - RTM_LOCK = 0x8 - RTM_LOSING = 0x5 - RTM_MISS = 0x7 - RTM_NEWADDR = 0xc - RTM_NEWMADDR = 0xf - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RTM_REDIRECT = 0x6 - RTM_RESOLVE = 0xb - RTM_RTTUNIT = 0xf4240 - RTM_VERSION = 0x5 - RTV_EXPIRE = 0x4 - RTV_HOPCOUNT = 0x2 - RTV_MTU = 0x1 - RTV_RPIPE = 0x8 - RTV_RTT = 0x40 - RTV_RTTVAR = 0x80 - RTV_SPIPE = 0x10 - RTV_SSTHRESH = 0x20 - RTV_WEIGHT = 0x100 - RT_ALL_FIBS = -0x1 - RT_CACHING_CONTEXT = 0x1 - RT_DEFAULT_FIB = 0x0 - RT_NORTREF = 0x2 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_BINTIME = 0x4 - SCM_CREDS = 0x3 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x2 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDMULTI = 0x80206931 - SIOCADDRT = 0x8030720a - SIOCAIFADDR = 0x8040691a - SIOCAIFGROUP = 0x80246987 - SIOCALIFADDR = 0x8118691b - SIOCATMARK = 0x40047307 - SIOCDELMULTI = 0x80206932 - SIOCDELRT = 0x8030720b - SIOCDIFADDR = 0x80206919 - SIOCDIFGROUP = 0x80246989 - SIOCDIFPHYADDR = 0x80206949 - SIOCDLIFADDR = 0x8118691d - SIOCGDRVSPEC = 0xc01c697b - SIOCGETSGCNT = 0xc0147210 - SIOCGETVIFCNT = 0xc014720f - SIOCGHIWAT = 0x40047301 - SIOCGIFADDR = 0xc0206921 - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCAP = 0xc020691f - SIOCGIFCONF = 0xc0086924 - SIOCGIFDESCR = 0xc020692a - SIOCGIFDSTADDR = 0xc0206922 - SIOCGIFFIB = 0xc020695c - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFGENERIC = 0xc020693a - SIOCGIFGMEMB = 0xc024698a - SIOCGIFGROUP = 0xc0246988 - SIOCGIFINDEX = 0xc0206920 - SIOCGIFMAC = 0xc0206926 - SIOCGIFMEDIA = 0xc0286938 - SIOCGIFMETRIC = 0xc0206917 - SIOCGIFMTU = 0xc0206933 - SIOCGIFNETMASK = 0xc0206925 - SIOCGIFPDSTADDR = 0xc0206948 - SIOCGIFPHYS = 0xc0206935 - SIOCGIFPSRCADDR = 0xc0206947 - SIOCGIFSTATUS = 0xc331693b - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 - SIOCGPRIVATE_0 = 0xc0206950 - SIOCGPRIVATE_1 = 0xc0206951 - SIOCIFCREATE = 0xc020697a - SIOCIFCREATE2 = 0xc020697c - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc00c6978 - SIOCSDRVSPEC = 0x801c697b - SIOCSHIWAT = 0x80047300 - SIOCSIFADDR = 0x8020690c - SIOCSIFBRDADDR = 0x80206913 - SIOCSIFCAP = 0x8020691e - SIOCSIFDESCR = 0x80206929 - SIOCSIFDSTADDR = 0x8020690e - SIOCSIFFIB = 0x8020695d - SIOCSIFFLAGS = 0x80206910 - SIOCSIFGENERIC = 0x80206939 - SIOCSIFLLADDR = 0x8020693c - SIOCSIFMAC = 0x80206927 - SIOCSIFMEDIA = 0xc0206937 - SIOCSIFMETRIC = 0x80206918 - SIOCSIFMTU = 0x80206934 - SIOCSIFNAME = 0x80206928 - SIOCSIFNETMASK = 0x80206916 - SIOCSIFPHYADDR = 0x80406946 - SIOCSIFPHYS = 0x80206936 - SIOCSIFRVNET = 0xc020695b - SIOCSIFVNET = 0xc020695a - SIOCSLIFPHYADDR = 0x8118694a - SIOCSLOWAT = 0x80047302 - SIOCSPGRP = 0x80047308 - SOCK_CLOEXEC = 0x10000000 - SOCK_DGRAM = 0x2 - SOCK_MAXADDRLEN = 0xff - SOCK_NONBLOCK = 0x20000000 - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_SOCKET = 0xffff - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x2 - SO_ACCEPTFILTER = 0x1000 - SO_BINTIME = 0x2000 - SO_BROADCAST = 0x20 - SO_DEBUG = 0x1 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_KEEPALIVE = 0x8 - SO_LABEL = 0x1009 - SO_LINGER = 0x80 - SO_LISTENINCQLEN = 0x1013 - SO_LISTENQLEN = 0x1012 - SO_LISTENQLIMIT = 0x1011 - SO_NOSIGPIPE = 0x800 - SO_NO_DDP = 0x8000 - SO_NO_OFFLOAD = 0x4000 - SO_OOBINLINE = 0x100 - SO_PEERLABEL = 0x1010 - SO_PROTOCOL = 0x1016 - SO_PROTOTYPE = 0x1016 - SO_RCVBUF = 0x1002 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 - SO_REUSEADDR = 0x4 - SO_REUSEPORT = 0x200 - SO_SETFIB = 0x1014 - SO_SNDBUF = 0x1001 - SO_SNDLOWAT = 0x1003 - SO_SNDTIMEO = 0x1005 - SO_TIMESTAMP = 0x400 - SO_TYPE = 0x1008 - SO_USELOOPBACK = 0x40 - SO_USER_COOKIE = 0x1015 - SO_VENDOR = 0x80000000 - TCIFLUSH = 0x1 - TCIOFLUSH = 0x3 - TCOFLUSH = 0x2 - TCP_CA_NAME_MAX = 0x10 - TCP_CONGESTION = 0x40 - TCP_INFO = 0x20 - TCP_KEEPCNT = 0x400 - TCP_KEEPIDLE = 0x100 - TCP_KEEPINIT = 0x80 - TCP_KEEPINTVL = 0x200 - TCP_MAXBURST = 0x4 - TCP_MAXHLEN = 0x3c - TCP_MAXOLEN = 0x28 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_SACK = 0x4 - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0x10 - TCP_MINMSS = 0xd8 - TCP_MSS = 0x218 - TCP_NODELAY = 0x1 - TCP_NOOPT = 0x8 - TCP_NOPUSH = 0x4 - TCP_VENDOR = 0x80000000 - TCSAFLUSH = 0x2 - TIOCCBRK = 0x2000747a - TIOCCDTR = 0x20007478 - TIOCCONS = 0x80047462 - TIOCDRAIN = 0x2000745e - TIOCEXCL = 0x2000740d - TIOCEXT = 0x80047460 - TIOCFLUSH = 0x80047410 - TIOCGDRAINWAIT = 0x40047456 - TIOCGETA = 0x402c7413 - TIOCGETD = 0x4004741a - TIOCGPGRP = 0x40047477 - TIOCGPTN = 0x4004740f - TIOCGSID = 0x40047463 - TIOCGWINSZ = 0x40087468 - TIOCMBIC = 0x8004746b - TIOCMBIS = 0x8004746c - TIOCMGDTRWAIT = 0x4004745a - TIOCMGET = 0x4004746a - TIOCMSDTRWAIT = 0x8004745b - TIOCMSET = 0x8004746d - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DCD = 0x40 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x20007471 - TIOCNXCL = 0x2000740e - TIOCOUTQ = 0x40047473 - TIOCPKT = 0x80047470 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCPTMASTER = 0x2000741c - TIOCSBRK = 0x2000747b - TIOCSCTTY = 0x20007461 - TIOCSDRAINWAIT = 0x80047457 - TIOCSDTR = 0x20007479 - TIOCSETA = 0x802c7414 - TIOCSETAF = 0x802c7416 - TIOCSETAW = 0x802c7415 - TIOCSETD = 0x8004741b - TIOCSIG = 0x2004745f - TIOCSPGRP = 0x80047476 - TIOCSTART = 0x2000746e - TIOCSTAT = 0x20007465 - TIOCSTI = 0x80017472 - TIOCSTOP = 0x2000746f - TIOCSWINSZ = 0x80087467 - TIOCTIMESTAMP = 0x40087459 - TIOCUCNTL = 0x80047466 - TOSTOP = 0x400000 - VDISCARD = 0xf - VDSUSP = 0xb - VEOF = 0x0 - VEOL = 0x1 - VEOL2 = 0x2 - VERASE = 0x3 - VERASE2 = 0x7 - VINTR = 0x8 - VKILL = 0x5 - VLNEXT = 0xe - VMIN = 0x10 - VQUIT = 0x9 - VREPRINT = 0x6 - VSTART = 0xc - VSTATUS = 0x12 - VSTOP = 0xd - VSUSP = 0xa - VTIME = 0x11 - VWERASE = 0x4 - WCONTINUED = 0x4 - WCOREFLAG = 0x80 - WEXITED = 0x10 - WLINUXCLONE = 0x80000000 - WNOHANG = 0x1 - WNOWAIT = 0x8 - WSTOPPED = 0x2 - WTRAPPED = 0x20 - WUNTRACED = 0x2 + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 8f920124b8..33ced1ae40 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -1,1474 +1,1855 @@ -// mkerrors.sh -m32 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -m32 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x28 - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BOTHER = 0x1000 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x2000 - BSDLY = 0x2000 - CBAUD = 0x100f - CBAUDEX = 0x1000 - CFLUSH = 0xf - CIBAUD = 0x100f0000 - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x200 - CR2 = 0x400 - CR3 = 0x600 - CRDLY = 0x600 - CREAD = 0x80 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - EPOLL_NONBLOCK = 0x800 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x8000 - FFDLY = 0x8000 - FLUSHO = 0x1000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0xc - F_GETLK64 = 0xc - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0xd - F_SETLK64 = 0xd - F_SETLKW = 0xe - F_SETLKW64 = 0xe - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - IBSHIFT = 0x10 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x8000 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_NODAD = 0x2 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x7 - IFF_802_1Q_VLAN = 0x1 - IFF_ALLMULTI = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BONDING = 0x20 - IFF_BRIDGE_PORT = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DISABLE_NETPOLL = 0x1000 - IFF_DONT_BRIDGE = 0x800 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_EBRIDGE = 0x2 - IFF_ECHO = 0x40000 - IFF_ISATAP = 0x80 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MACVLAN_PORT = 0x2000 - IFF_MASTER = 0x400 - IFF_MASTER_8023AD = 0x8 - IFF_MASTER_ALB = 0x10 - IFF_MASTER_ARPMON = 0x100 - IFF_MULTICAST = 0x1000 - IFF_NOARP = 0x80 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_OVS_DATAPATH = 0x8000 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_SLAVE_INACTIVE = 0x4 - IFF_SLAVE_NEEDARP = 0x40 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_TX_SKB_SHARING = 0x10000 - IFF_UNICAST_FLT = 0x20000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFF_WAN_HDLC = 0x200 - IFF_XMIT_DST_RELEASE = 0x400 - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUCLC = 0x200 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DOFORK = 0xb - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_32BIT = 0x40 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_HUGETLB = 0x40000 - MAP_LOCKED = 0x2000 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x4000 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_STACK = 0x20000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x100 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x2 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x4000 - O_DIRECTORY = 0x10000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x101000 - O_LARGEFILE = 0x8000 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x20000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x101000 - O_SYNC = 0x101000 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x100 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = 0xffffffff - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETFPREGS = 0xe - PTRACE_GETFPXREGS = 0x12 - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GET_THREAD_AREA = 0x19 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_OLDSETOPTIONS = 0x15 - PTRACE_O_MASK = 0xff - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKETEXT = 0x4 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SEIZE_DEVEL = 0x80000000 - PTRACE_SETFPREGS = 0xf - PTRACE_SETFPXREGS = 0x13 - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SET_THREAD_AREA = 0x1a - PTRACE_SINGLEBLOCK = 0x21 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_SYSEMU = 0x1f - PTRACE_SYSEMU_SINGLESTEP = 0x20 - PTRACE_TRACEME = 0x0 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0xe - RTAX_MTU = 0x2 - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x10 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELNEIGH = 0x1d - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x4f - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x10 - RTM_NR_MSGTYPES = 0x40 - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_F_DEAD = 0x1 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_DEBUG = 0x1 - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_MARK = 0x24 - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 - SO_PASSSEC = 0x22 - SO_PEERCRED = 0x11 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x12 - SO_RCVTIMEO = 0x14 - SO_REUSEADDR = 0x2 - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x13 - SO_SNDTIMEO = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x800 - TAB2 = 0x1000 - TAB3 = 0x1800 - TABDLY = 0x1800 - TCFLSH = 0x540b - TCGETA = 0x5405 - TCGETS = 0x5401 - TCGETS2 = 0x802c542a - TCGETX = 0x5432 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CONGESTION = 0xd - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_QUICKACK = 0xc - TCP_SYNCNT = 0x7 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x5409 - TCSBRKP = 0x5425 - TCSETA = 0x5406 - TCSETAF = 0x5408 - TCSETAW = 0x5407 - TCSETS = 0x5402 - TCSETS2 = 0x402c542b - TCSETSF = 0x5404 - TCSETSF2 = 0x402c542d - TCSETSW = 0x5403 - TCSETSW2 = 0x402c542c - TCSETX = 0x5433 - TCSETXF = 0x5434 - TCSETXW = 0x5435 - TCXONC = 0x540a - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x80045432 - TIOCGETD = 0x5424 - TIOCGEXCL = 0x80045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGPGRP = 0x540f - TIOCGPKT = 0x80045438 - TIOCGPTLCK = 0x80045439 - TIOCGPTN = 0x80045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x5413 - TIOCINQ = 0x541b - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x5411 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x5423 - TIOCSIG = 0x40045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSPGRP = 0x5410 - TIOCSPTLCK = 0x40045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTI = 0x5412 - TIOCSWINSZ = 0x5414 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x100 - TUNATTACHFILTER = 0x400854d5 - TUNDETACHFILTER = 0x400854d6 - TUNGETFEATURES = 0x800454cf - TUNGETIFF = 0x800454d2 - TUNGETSNDBUF = 0x800454d3 - TUNGETVNETHDRSZ = 0x800454d7 - TUNSETDEBUG = 0x400454c9 - TUNSETGROUP = 0x400454ce - TUNSETIFF = 0x400454ca - TUNSETLINK = 0x400454cd - TUNSETNOCSUM = 0x400454c8 - TUNSETOFFLOAD = 0x400454d0 - TUNSETOWNER = 0x400454cc - TUNSETPERSIST = 0x400454cb - TUNSETSNDBUF = 0x400454d4 - TUNSETTXFILTER = 0x400454d1 - TUNSETVNETHDRSZ = 0x400454d8 - VDISCARD = 0xd - VEOF = 0x4 - VEOL = 0xb - VEOL2 = 0x10 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x6 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x20 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4 - XTABS = 0x1800 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x8000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETDEBUG = 0x400454c9 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors @@ -1763,7 +2144,7 @@ var errors = [...]string{ 113: "no route to host", 114: "operation already in progress", 115: "operation now in progress", - 116: "stale NFS file handle", + 116: "stale file handle", 117: "structure needs cleaning", 118: "not a XENIX named type file", 119: "no XENIX semaphores available", @@ -1780,7 +2161,7 @@ var errors = [...]string{ 130: "owner died", 131: "state not recoverable", 132: "operation not possible due to RF-kill", - 133: "unknown error 133", + 133: "memory page has hardware error", } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 49b6c35467..a6618fc118 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -1,1475 +1,1856 @@ -// mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -m64 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x28 - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BOTHER = 0x1000 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x2000 - BSDLY = 0x2000 - CBAUD = 0x100f - CBAUDEX = 0x1000 - CFLUSH = 0xf - CIBAUD = 0x100f0000 - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x200 - CR2 = 0x400 - CR3 = 0x600 - CRDLY = 0x600 - CREAD = 0x80 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - EPOLL_NONBLOCK = 0x800 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x8000 - FFDLY = 0x8000 - FLUSHO = 0x1000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0x5 - F_GETLK64 = 0x5 - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0x6 - F_SETLKW = 0x7 - F_SETLKW64 = 0x7 - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - IBSHIFT = 0x10 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x8000 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_NODAD = 0x2 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x7 - IFF_802_1Q_VLAN = 0x1 - IFF_ALLMULTI = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BONDING = 0x20 - IFF_BRIDGE_PORT = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DISABLE_NETPOLL = 0x1000 - IFF_DONT_BRIDGE = 0x800 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_EBRIDGE = 0x2 - IFF_ECHO = 0x40000 - IFF_ISATAP = 0x80 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MACVLAN_PORT = 0x2000 - IFF_MASTER = 0x400 - IFF_MASTER_8023AD = 0x8 - IFF_MASTER_ALB = 0x10 - IFF_MASTER_ARPMON = 0x100 - IFF_MULTICAST = 0x1000 - IFF_NOARP = 0x80 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_OVS_DATAPATH = 0x8000 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_SLAVE_INACTIVE = 0x4 - IFF_SLAVE_NEEDARP = 0x40 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_TX_SKB_SHARING = 0x10000 - IFF_UNICAST_FLT = 0x20000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFF_WAN_HDLC = 0x200 - IFF_XMIT_DST_RELEASE = 0x400 - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUCLC = 0x200 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DOFORK = 0xb - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_32BIT = 0x40 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_HUGETLB = 0x40000 - MAP_LOCKED = 0x2000 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x4000 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_STACK = 0x20000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x100 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x2 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x4000 - O_DIRECTORY = 0x10000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x101000 - O_LARGEFILE = 0x0 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x20000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x101000 - O_SYNC = 0x101000 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x100 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ARCH_PRCTL = 0x1e - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETFPREGS = 0xe - PTRACE_GETFPXREGS = 0x12 - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GET_THREAD_AREA = 0x19 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_OLDSETOPTIONS = 0x15 - PTRACE_O_MASK = 0xff - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKETEXT = 0x4 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SEIZE_DEVEL = 0x80000000 - PTRACE_SETFPREGS = 0xf - PTRACE_SETFPXREGS = 0x13 - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SET_THREAD_AREA = 0x1a - PTRACE_SINGLEBLOCK = 0x21 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_SYSEMU = 0x1f - PTRACE_SYSEMU_SINGLESTEP = 0x20 - PTRACE_TRACEME = 0x0 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0xe - RTAX_MTU = 0x2 - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x10 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELNEIGH = 0x1d - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x4f - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x10 - RTM_NR_MSGTYPES = 0x40 - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_F_DEAD = 0x1 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_DEBUG = 0x1 - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_MARK = 0x24 - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 - SO_PASSSEC = 0x22 - SO_PEERCRED = 0x11 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x12 - SO_RCVTIMEO = 0x14 - SO_REUSEADDR = 0x2 - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x13 - SO_SNDTIMEO = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x800 - TAB2 = 0x1000 - TAB3 = 0x1800 - TABDLY = 0x1800 - TCFLSH = 0x540b - TCGETA = 0x5405 - TCGETS = 0x5401 - TCGETS2 = 0x802c542a - TCGETX = 0x5432 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CONGESTION = 0xd - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_QUICKACK = 0xc - TCP_SYNCNT = 0x7 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x5409 - TCSBRKP = 0x5425 - TCSETA = 0x5406 - TCSETAF = 0x5408 - TCSETAW = 0x5407 - TCSETS = 0x5402 - TCSETS2 = 0x402c542b - TCSETSF = 0x5404 - TCSETSF2 = 0x402c542d - TCSETSW = 0x5403 - TCSETSW2 = 0x402c542c - TCSETX = 0x5433 - TCSETXF = 0x5434 - TCSETXW = 0x5435 - TCXONC = 0x540a - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x80045432 - TIOCGETD = 0x5424 - TIOCGEXCL = 0x80045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGPGRP = 0x540f - TIOCGPKT = 0x80045438 - TIOCGPTLCK = 0x80045439 - TIOCGPTN = 0x80045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x5413 - TIOCINQ = 0x541b - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x5411 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x5423 - TIOCSIG = 0x40045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSPGRP = 0x5410 - TIOCSPTLCK = 0x40045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTI = 0x5412 - TIOCSWINSZ = 0x5414 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x100 - TUNATTACHFILTER = 0x401054d5 - TUNDETACHFILTER = 0x401054d6 - TUNGETFEATURES = 0x800454cf - TUNGETIFF = 0x800454d2 - TUNGETSNDBUF = 0x800454d3 - TUNGETVNETHDRSZ = 0x800454d7 - TUNSETDEBUG = 0x400454c9 - TUNSETGROUP = 0x400454ce - TUNSETIFF = 0x400454ca - TUNSETLINK = 0x400454cd - TUNSETNOCSUM = 0x400454c8 - TUNSETOFFLOAD = 0x400454d0 - TUNSETOWNER = 0x400454cc - TUNSETPERSIST = 0x400454cb - TUNSETSNDBUF = 0x400454d4 - TUNSETTXFILTER = 0x400454d1 - TUNSETVNETHDRSZ = 0x400454d8 - VDISCARD = 0xd - VEOF = 0x4 - VEOL = 0xb - VEOL2 = 0x10 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x6 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4 - XTABS = 0x1800 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ARCH_PRCTL = 0x1e + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETDEBUG = 0x400454c9 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors @@ -1764,7 +2145,7 @@ var errors = [...]string{ 113: "no route to host", 114: "operation already in progress", 115: "operation now in progress", - 116: "stale NFS file handle", + 116: "stale file handle", 117: "structure needs cleaning", 118: "not a XENIX named type file", 119: "no XENIX semaphores available", @@ -1781,7 +2162,7 @@ var errors = [...]string{ 130: "owner died", 131: "state not recoverable", 132: "operation not possible due to RF-kill", - 133: "unknown error 133", + 133: "memory page has hardware error", } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index f036758f92..1adff0b28c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -1,1398 +1,1860 @@ -// mkerrors.sh -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x27 - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_PHY = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BOTHER = 0x1000 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x2000 - BSDLY = 0x2000 - CBAUD = 0x100f - CBAUDEX = 0x1000 - CFLUSH = 0xf - CIBAUD = 0x100f0000 - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x200 - CR2 = 0x400 - CR3 = 0x600 - CRDLY = 0x600 - CREAD = 0x80 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ELF_NGREG = 0x12 - ELF_PRARGSZ = 0x50 - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - EPOLLERR = 0x8 - EPOLLET = -0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - EPOLL_NONBLOCK = 0x800 - ETH_P_1588 = 0x88f7 - ETH_P_8021Q = 0x8100 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_AARP = 0x80f3 - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x8000 - FFDLY = 0x8000 - FLUSHO = 0x1000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0xc - F_GETLK64 = 0xc - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0xd - F_SETLK64 = 0xd - F_SETLKW = 0xe - F_SETLKW64 = 0xe - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - IBSHIFT = 0x10 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x8000 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_NODAD = 0x2 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x7 - IFF_ALLMULTI = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DYNAMIC = 0x8000 - IFF_LOOPBACK = 0x8 - IFF_MASTER = 0x400 - IFF_MULTICAST = 0x1000 - IFF_NOARP = 0x80 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUCLC = 0x200 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DOFORK = 0xb - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_LOCKED = 0x2000 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x4000 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CONNECTOR = 0xb - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x100 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x2 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x10000 - O_DIRECTORY = 0x4000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x1000 - O_LARGEFILE = 0x20000 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x8000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x1000 - O_SYNC = 0x1000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_BROADCAST = 0x1 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FASTROUTE = 0x6 - PACKET_HOST = 0x0 - PACKET_LOOPBACK = 0x5 - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MULTICAST = 0x2 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PARENB = 0x100 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_CLEAR_SECCOMP_FILTER = 0x25 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECCOMP_FILTER = 0x23 - PR_GET_SECUREBITS = 0x1b - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_SECCOMP_FILTER_EVENT = 0x1 - PR_SECCOMP_FILTER_SYSCALL = 0x0 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_KEEPCAPS = 0x8 - PR_SET_NAME = 0xf - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_SECCOMP = 0x16 - PR_SET_SECCOMP_FILTER = 0x24 - PR_SET_SECUREBITS = 0x1c - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETCRUNCHREGS = 0x19 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETFPREGS = 0xe - PTRACE_GETHBPREGS = 0x1d - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETVFPREGS = 0x1b - PTRACE_GETWMMXREGS = 0x12 - PTRACE_GET_THREAD_AREA = 0x16 - PTRACE_KILL = 0x8 - PTRACE_OLDSETOPTIONS = 0x15 - PTRACE_O_MASK = 0x7f - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKETEXT = 0x4 - PTRACE_POKEUSR = 0x6 - PTRACE_SETCRUNCHREGS = 0x1a - PTRACE_SETFPREGS = 0xf - PTRACE_SETHBPREGS = 0x1e - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETVFPREGS = 0x1c - PTRACE_SETWMMXREGS = 0x13 - PTRACE_SET_SYSCALL = 0x17 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TRACEME = 0x0 - PT_DATA_ADDR = 0x10004 - PT_TEXT_ADDR = 0x10000 - PT_TEXT_END_ADDR = 0x10008 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0xe - RTAX_MTU = 0x2 - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x10 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELNEIGH = 0x1d - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x4f - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x10 - RTM_NR_MSGTYPES = 0x40 - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_F_DEAD = 0x1 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_DEBUG = 0x1 - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_MARK = 0x24 - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 - SO_PASSSEC = 0x22 - SO_PEERCRED = 0x11 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x12 - SO_RCVTIMEO = 0x14 - SO_REUSEADDR = 0x2 - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x13 - SO_SNDTIMEO = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x800 - TAB2 = 0x1000 - TAB3 = 0x1800 - TABDLY = 0x1800 - TCFLSH = 0x540b - TCGETA = 0x5405 - TCGETS = 0x5401 - TCGETS2 = 0x802c542a - TCGETX = 0x5432 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CONGESTION = 0xd - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_NODELAY = 0x1 - TCP_QUICKACK = 0xc - TCP_SYNCNT = 0x7 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x5409 - TCSBRKP = 0x5425 - TCSETA = 0x5406 - TCSETAF = 0x5408 - TCSETAW = 0x5407 - TCSETS = 0x5402 - TCSETS2 = 0x402c542b - TCSETSF = 0x5404 - TCSETSF2 = 0x402c542d - TCSETSW = 0x5403 - TCSETSW2 = 0x402c542c - TCSETX = 0x5433 - TCSETXF = 0x5434 - TCSETXW = 0x5435 - TCXONC = 0x540a - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x80045432 - TIOCGETD = 0x5424 - TIOCGEXCL = 0x80045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGPGRP = 0x540f - TIOCGPKT = 0x80045438 - TIOCGPTLCK = 0x80045439 - TIOCGPTN = 0x80045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x5413 - TIOCINQ = 0x541b - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x5411 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x5423 - TIOCSIG = 0x40045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSPGRP = 0x5410 - TIOCSPTLCK = 0x40045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTI = 0x5412 - TIOCSWINSZ = 0x5414 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x100 - TUNATTACHFILTER = 0x400854d5 - TUNDETACHFILTER = 0x400854d6 - TUNGETFEATURES = 0x800454cf - TUNGETIFF = 0x800454d2 - TUNGETSNDBUF = 0x800454d3 - TUNGETVNETHDRSZ = 0x800454d7 - TUNSETDEBUG = 0x400454c9 - TUNSETGROUP = 0x400454ce - TUNSETIFF = 0x400454ca - TUNSETLINK = 0x400454cd - TUNSETNOCSUM = 0x400454c8 - TUNSETOFFLOAD = 0x400454d0 - TUNSETOWNER = 0x400454cc - TUNSETPERSIST = 0x400454cb - TUNSETSNDBUF = 0x400454d4 - TUNSETTXFILTER = 0x400454d1 - TUNSETVNETHDRSZ = 0x400454d8 - VDISCARD = 0xd - VEOF = 0x4 - VEOL = 0xb - VEOL2 = 0x10 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x6 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x20 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4 - XTABS = 0x1800 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x20000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETCRUNCHREGS = 0x19 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVFPREGS = 0x1b + PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x16 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETCRUNCHREGS = 0x1a + PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVFPREGS = 0x1c + PTRACE_SETWMMXREGS = 0x13 + PTRACE_SET_SYSCALL = 0x17 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PT_DATA_ADDR = 0x10004 + PT_TEXT_ADDR = 0x10000 + PT_TEXT_END_ADDR = 0x10008 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETDEBUG = 0x400454c9 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors @@ -1687,7 +2149,7 @@ var errors = [...]string{ 113: "no route to host", 114: "operation already in progress", 115: "operation now in progress", - 116: "stale NFS file handle", + 116: "stale file handle", 117: "structure needs cleaning", 118: "not a XENIX named type file", 119: "no XENIX semaphores available", @@ -1704,7 +2166,7 @@ var errors = [...]string{ 130: "owner died", 131: "state not recoverable", 132: "operation not possible due to RF-kill", - 133: "unknown error 133", + 133: "memory page has hardware error", } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 16dcbc9cb2..c0ecd47c2a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -1,1552 +1,1845 @@ -// mkerrors.sh -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x29 - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VSOCK = 0x28 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_MONITOR = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IP6GRE = 0x337 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETLINK = 0x338 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BOTHER = 0x1000 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MOD = 0x90 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XOR = 0xa0 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x2000 - BSDLY = 0x2000 - CBAUD = 0x100f - CBAUDEX = 0x1000 - CFLUSH = 0xf - CIBAUD = 0x100f0000 - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x200 - CR2 = 0x400 - CR3 = 0x600 - CRDLY = 0x600 - CREAD = 0x80 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - ELF_NGREG = 0x22 - ELF_PRARGSZ = 0x50 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWAKEUP = 0x20000000 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_802_3_MIN = 0x600 - ETH_P_802_EX1 = 0x88b5 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BATMAN = 0x4305 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_MVRP = 0x88f5 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PRP = 0x88fb - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x8000 - FFDLY = 0x8000 - FLUSHO = 0x1000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0x5 - F_GETLK64 = 0x5 - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0x6 - F_SETLKW = 0x7 - F_SETLKW64 = 0x7 - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - IBSHIFT = 0x10 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x8000 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_NODAD = 0x2 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x7 - IFF_802_1Q_VLAN = 0x1 - IFF_ALLMULTI = 0x200 - IFF_ATTACH_QUEUE = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BONDING = 0x20 - IFF_BRIDGE_PORT = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DETACH_QUEUE = 0x400 - IFF_DISABLE_NETPOLL = 0x1000 - IFF_DONT_BRIDGE = 0x800 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_EBRIDGE = 0x2 - IFF_ECHO = 0x40000 - IFF_ISATAP = 0x80 - IFF_LIVE_ADDR_CHANGE = 0x100000 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MACVLAN = 0x200000 - IFF_MACVLAN_PORT = 0x2000 - IFF_MASTER = 0x400 - IFF_MASTER_8023AD = 0x8 - IFF_MASTER_ALB = 0x10 - IFF_MASTER_ARPMON = 0x100 - IFF_MULTICAST = 0x1000 - IFF_MULTI_QUEUE = 0x100 - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_OVS_DATAPATH = 0x8000 - IFF_PERSIST = 0x800 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_SLAVE_INACTIVE = 0x4 - IFF_SLAVE_NEEDARP = 0x40 - IFF_SUPP_NOFCS = 0x80000 - IFF_TAP = 0x2 - IFF_TEAM_PORT = 0x40000 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_TX_SKB_SHARING = 0x10000 - IFF_UNICAST_FLT = 0x20000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFF_WAN_HDLC = 0x200 - IFF_XMIT_DST_RELEASE = 0x400 - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_BEETPH = 0x5e - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MH = 0x87 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_UNICAST_IF = 0x32 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUCLC = 0x200 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_HUGETLB = 0x40000 - MAP_HUGE_MASK = 0x3f - MAP_HUGE_SHIFT = 0x1a - MAP_LOCKED = 0x2000 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x4000 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_STACK = 0x20000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_RX_RING = 0x6 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_SOCK_DIAG = 0x4 - NETLINK_TX_RING = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x100 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x2 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x10000 - O_DIRECTORY = 0x4000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x101000 - O_LARGEFILE = 0x0 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x8000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x101000 - O_SYNC = 0x101000 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FANOUT_RND = 0x4 - PACKET_FANOUT_ROLLOVER = 0x3 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_HAS_OFF = 0x13 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x100 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_TID_ADDRESS = 0x28 - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_SET_CHILD_SUBREAPER = 0x24 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 - PR_SET_MM_AUXV = 0xc - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_ENV_END = 0xb - PR_SET_MM_ENV_START = 0xa - PR_SET_MM_EXE_FILE = 0xd - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETSIGMASK = 0x420a - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_O_EXITKILL = 0x100000 - PTRACE_O_MASK = 0x1000ff - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKSIGINFO = 0x4209 - PTRACE_PEEKSIGINFO_SHARED = 0x1 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKETEXT = 0x4 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TRACEME = 0x0 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0xf - RTAX_MTU = 0x2 - RTAX_QUICKACK = 0xf - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x11 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELMDB = 0x55 - RTM_DELNEIGH = 0x1d - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMDB = 0x56 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETNETCONF = 0x52 - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x57 - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWMDB = 0x54 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWNETCONF = 0x50 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x12 - RTM_NR_MSGTYPES = 0x48 - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_F_DEAD = 0x1 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MROUTED = 0x11 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SCM_WIFI_STATUS = 0x29 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_BUSY_POLL = 0x2e - SO_DEBUG = 0x1 - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_GET_FILTER = 0x1a - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_LOCK_FILTER = 0x2c - SO_MARK = 0x24 - SO_MAX_PACING_RATE = 0x2f - SO_NOFCS = 0x2b - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x12 - SO_RCVTIMEO = 0x14 - SO_REUSEADDR = 0x2 - SO_REUSEPORT = 0xf - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SELECT_ERR_QUEUE = 0x2d - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x13 - SO_SNDTIMEO = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - SO_WIFI_STATUS = 0x29 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x800 - TAB2 = 0x1000 - TAB3 = 0x1800 - TABDLY = 0x1800 - TCFLSH = 0x540b - TCGETA = 0x5405 - TCGETS = 0x5401 - TCGETS2 = 0x802c542a - TCGETX = 0x5432 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CONGESTION = 0xd - TCP_COOKIE_IN_ALWAYS = 0x1 - TCP_COOKIE_MAX = 0x10 - TCP_COOKIE_MIN = 0x8 - TCP_COOKIE_OUT_NEVER = 0x2 - TCP_COOKIE_PAIR_SIZE = 0x20 - TCP_COOKIE_TRANSACTIONS = 0xf - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_FASTOPEN = 0x17 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_MSS_DEFAULT = 0x218 - TCP_MSS_DESIRED = 0x4c4 - TCP_NODELAY = 0x1 - TCP_QUEUE_SEQ = 0x15 - TCP_QUICKACK = 0xc - TCP_REPAIR = 0x13 - TCP_REPAIR_OPTIONS = 0x16 - TCP_REPAIR_QUEUE = 0x14 - TCP_SYNCNT = 0x7 - TCP_S_DATA_IN = 0x4 - TCP_S_DATA_OUT = 0x8 - TCP_THIN_DUPACK = 0x11 - TCP_THIN_LINEAR_TIMEOUTS = 0x10 - TCP_TIMESTAMP = 0x18 - TCP_USER_TIMEOUT = 0x12 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x5409 - TCSBRKP = 0x5425 - TCSETA = 0x5406 - TCSETAF = 0x5408 - TCSETAW = 0x5407 - TCSETS = 0x5402 - TCSETS2 = 0x402c542b - TCSETSF = 0x5404 - TCSETSF2 = 0x402c542d - TCSETSW = 0x5403 - TCSETSW2 = 0x402c542c - TCSETX = 0x5433 - TCSETXF = 0x5434 - TCSETXW = 0x5435 - TCXONC = 0x540a - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x80045432 - TIOCGETD = 0x5424 - TIOCGEXCL = 0x80045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGPGRP = 0x540f - TIOCGPKT = 0x80045438 - TIOCGPTLCK = 0x80045439 - TIOCGPTN = 0x80045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x5413 - TIOCINQ = 0x541b - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x5411 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x5423 - TIOCSIG = 0x40045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSPGRP = 0x5410 - TIOCSPTLCK = 0x40045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTI = 0x5412 - TIOCSWINSZ = 0x5414 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x100 - TUNATTACHFILTER = 0x401054d5 - TUNDETACHFILTER = 0x401054d6 - TUNGETFEATURES = 0x800454cf - TUNGETFILTER = 0x801054db - TUNGETIFF = 0x800454d2 - TUNGETSNDBUF = 0x800454d3 - TUNGETVNETHDRSZ = 0x800454d7 - TUNSETDEBUG = 0x400454c9 - TUNSETGROUP = 0x400454ce - TUNSETIFF = 0x400454ca - TUNSETIFINDEX = 0x400454da - TUNSETLINK = 0x400454cd - TUNSETNOCSUM = 0x400454c8 - TUNSETOFFLOAD = 0x400454d0 - TUNSETOWNER = 0x400454cc - TUNSETPERSIST = 0x400454cb - TUNSETQUEUE = 0x400454d9 - TUNSETSNDBUF = 0x400454d4 - TUNSETTXFILTER = 0x400454d1 - TUNSETVNETHDRSZ = 0x400454d8 - VDISCARD = 0xd - VEOF = 0x4 - VEOL = 0xb - VEOL2 = 0x10 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x6 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4 - XTABS = 0x1800 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ESR_MAGIC = 0x45535201 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETDEBUG = 0x400454c9 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go new file mode 100644 index 0000000000..900f568af1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -0,0 +1,2209 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errors = [...]string{ + 1: "operation not permitted", + 2: "no such file or directory", + 3: "no such process", + 4: "interrupted system call", + 5: "input/output error", + 6: "no such device or address", + 7: "argument list too long", + 8: "exec format error", + 9: "bad file descriptor", + 10: "no child processes", + 11: "resource temporarily unavailable", + 12: "cannot allocate memory", + 13: "permission denied", + 14: "bad address", + 15: "block device required", + 16: "device or resource busy", + 17: "file exists", + 18: "invalid cross-device link", + 19: "no such device", + 20: "not a directory", + 21: "is a directory", + 22: "invalid argument", + 23: "too many open files in system", + 24: "too many open files", + 25: "inappropriate ioctl for device", + 26: "text file busy", + 27: "file too large", + 28: "no space left on device", + 29: "illegal seek", + 30: "read-only file system", + 31: "too many links", + 32: "broken pipe", + 33: "numerical argument out of domain", + 34: "numerical result out of range", + 35: "no message of desired type", + 36: "identifier removed", + 37: "channel number out of range", + 38: "level 2 not synchronized", + 39: "level 3 halted", + 40: "level 3 reset", + 41: "link number out of range", + 42: "protocol driver not attached", + 43: "no CSI structure available", + 44: "level 2 halted", + 45: "resource deadlock avoided", + 46: "no locks available", + 50: "invalid exchange", + 51: "invalid request descriptor", + 52: "exchange full", + 53: "no anode", + 54: "invalid request code", + 55: "invalid slot", + 56: "file locking deadlock error", + 59: "bad font file format", + 60: "device not a stream", + 61: "no data available", + 62: "timer expired", + 63: "out of streams resources", + 64: "machine is not on the network", + 65: "package not installed", + 66: "object is remote", + 67: "link has been severed", + 68: "advertise error", + 69: "srmount error", + 70: "communication error on send", + 71: "protocol error", + 73: "RFS specific error", + 74: "multihop attempted", + 77: "bad message", + 78: "file name too long", + 79: "value too large for defined data type", + 80: "name not unique on network", + 81: "file descriptor in bad state", + 82: "remote address changed", + 83: "can not access a needed shared library", + 84: "accessing a corrupted shared library", + 85: ".lib section in a.out corrupted", + 86: "attempting to link in too many shared libraries", + 87: "cannot exec a shared library directly", + 88: "invalid or incomplete multibyte or wide character", + 89: "function not implemented", + 90: "too many levels of symbolic links", + 91: "interrupted system call should be restarted", + 92: "streams pipe error", + 93: "directory not empty", + 94: "too many users", + 95: "socket operation on non-socket", + 96: "destination address required", + 97: "message too long", + 98: "protocol wrong type for socket", + 99: "protocol not available", + 120: "protocol not supported", + 121: "socket type not supported", + 122: "operation not supported", + 123: "protocol family not supported", + 124: "address family not supported by protocol", + 125: "address already in use", + 126: "cannot assign requested address", + 127: "network is down", + 128: "network is unreachable", + 129: "network dropped connection on reset", + 130: "software caused connection abort", + 131: "connection reset by peer", + 132: "no buffer space available", + 133: "transport endpoint is already connected", + 134: "transport endpoint is not connected", + 135: "structure needs cleaning", + 137: "not a XENIX named type file", + 138: "no XENIX semaphores available", + 139: "is a named type file", + 140: "remote I/O error", + 141: "unknown error 141", + 142: "unknown error 142", + 143: "cannot send after transport endpoint shutdown", + 144: "too many references: cannot splice", + 145: "connection timed out", + 146: "connection refused", + 147: "host is down", + 148: "no route to host", + 149: "operation already in progress", + 150: "operation now in progress", + 151: "stale file handle", + 158: "operation canceled", + 159: "no medium found", + 160: "wrong medium type", + 161: "required key not available", + 162: "key has expired", + 163: "key has been revoked", + 164: "key was rejected by service", + 165: "owner died", + 166: "state not recoverable", + 167: "operation not possible due to RF-kill", + 168: "memory page has hardware error", + 1133: "disk quota exceeded", +} + +// Signal table +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "EMT trap", + 8: "floating point exception", + 9: "killed", + 10: "bus error", + 11: "segmentation fault", + 12: "bad system call", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", + 16: "user defined signal 1", + 17: "user defined signal 2", + 18: "child exited", + 19: "power failure", + 20: "window changed", + 21: "urgent I/O condition", + 22: "I/O possible", + 23: "stopped (signal)", + 24: "stopped", + 25: "continued", + 26: "stopped (tty input)", + 27: "stopped (tty output)", + 28: "virtual timer expired", + 29: "profiling timer expired", + 30: "CPU time limit exceeded", + 31: "file size limit exceeded", +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 36535b242d..4148f27730 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -1,1568 +1,1860 @@ -// mkerrors.sh -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. // +build mips64,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IB = 0x1b - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x29 - AF_MPLS = 0x1c - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VSOCK = 0x28 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_6LOWPAN = 0x339 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_MONITOR = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IP6GRE = 0x337 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETLINK = 0x338 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LL_OFF = -0x200000 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MOD = 0x90 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XOR = 0xa0 - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_TAI = 0xb - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CREAD = 0x80 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWAKEUP = 0x20000000 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_80221 = 0x8917 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_802_3_MIN = 0x600 - ETH_P_802_EX1 = 0x88b5 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BATMAN = 0x4305 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_LOOPBACK = 0x9000 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_MVRP = 0x88f5 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PRP = 0x88fb - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_TSN = 0x22f0 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - ETH_P_XDSA = 0xf8 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FLUSHO = 0x2000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0xe - F_GETLK64 = 0xe - F_GETOWN = 0x17 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OFD_GETLK = 0x24 - F_OFD_SETLK = 0x25 - F_OFD_SETLKW = 0x26 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0x6 - F_SETLKW = 0x7 - F_SETLKW64 = 0x7 - F_SETOWN = 0x18 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x100 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_MANAGETEMPADDR = 0x100 - IFA_F_MCAUTOJOIN = 0x400 - IFA_F_NODAD = 0x2 - IFA_F_NOPREFIXROUTE = 0x200 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_STABLE_PRIVACY = 0x800 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 - IFF_ALLMULTI = 0x200 - IFF_ATTACH_QUEUE = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DETACH_QUEUE = 0x400 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_ECHO = 0x40000 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MASTER = 0x400 - IFF_MULTICAST = 0x1000 - IFF_MULTI_QUEUE = 0x100 - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_PERSIST = 0x800 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x80 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_BEETPH = 0x5e - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MH = 0x87 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DONTFRAG = 0x3e - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PATHMTU = 0x3d - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_INTERFACE = 0x4 - IPV6_PMTUDISC_OMIT = 0x5 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPATHMTU = 0x3c - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_CHECKSUM = 0x17 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_NODEFRAG = 0x16 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_INTERFACE = 0x4 - IP_PMTUDISC_OMIT = 0x5 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_UNICAST_IF = 0x32 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x800 - MAP_ANONYMOUS = 0x800 - MAP_DENYWRITE = 0x2000 - MAP_EXECUTABLE = 0x4000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x1000 - MAP_HUGETLB = 0x80000 - MAP_HUGE_MASK = 0x3f - MAP_HUGE_SHIFT = 0x1a - MAP_LOCKED = 0x8000 - MAP_NONBLOCK = 0x20000 - MAP_NORESERVE = 0x400 - MAP_POPULATE = 0x10000 - MAP_PRIVATE = 0x2 - MAP_RENAME = 0x800 - MAP_SHARED = 0x1 - MAP_STACK = 0x40000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_LAZYTIME = 0x2000000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x2800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CAP_ACK = 0xa - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_LISTEN_ALL_NSID = 0x8 - NETLINK_LIST_MEMBERSHIPS = 0x9 - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_RX_RING = 0x6 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_SOCK_DIAG = 0x4 - NETLINK_TX_RING = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x1000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x100 - O_DIRECT = 0x8000 - O_DIRECTORY = 0x10000 - O_DSYNC = 0x10 - O_EXCL = 0x400 - O_FSYNC = 0x4010 - O_LARGEFILE = 0x0 - O_NDELAY = 0x80 - O_NOATIME = 0x40000 - O_NOCTTY = 0x800 - O_NOFOLLOW = 0x20000 - O_NONBLOCK = 0x80 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x4010 - O_SYNC = 0x4010 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CBPF = 0x6 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_DATA = 0x16 - PACKET_FANOUT_EBPF = 0x7 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FANOUT_QM = 0x5 - PACKET_FANOUT_RND = 0x4 - PACKET_FANOUT_ROLLOVER = 0x3 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_KERNEL = 0x7 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_QDISC_BYPASS = 0x14 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_ROLLOVER_STATS = 0x15 - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_HAS_OFF = 0x13 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_USER = 0x6 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x100 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_CAP_AMBIENT = 0x2f - PR_CAP_AMBIENT_CLEAR_ALL = 0x4 - PR_CAP_AMBIENT_IS_SET = 0x1 - PR_CAP_AMBIENT_LOWER = 0x3 - PR_CAP_AMBIENT_RAISE = 0x2 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_FP_MODE_FR = 0x1 - PR_FP_MODE_FRE = 0x2 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_FP_MODE = 0x2e - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_THP_DISABLE = 0x2a - PR_GET_TID_ADDRESS = 0x28 - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_MPX_DISABLE_MANAGEMENT = 0x2c - PR_MPX_ENABLE_MANAGEMENT = 0x2b - PR_SET_CHILD_SUBREAPER = 0x24 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_FP_MODE = 0x2d - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 - PR_SET_MM_AUXV = 0xc - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_ENV_END = 0xb - PR_SET_MM_ENV_START = 0xa - PR_SET_MM_EXE_FILE = 0xd - PR_SET_MM_MAP = 0xe - PR_SET_MM_MAP_SIZE = 0xf - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_THP_DISABLE = 0x29 - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETFPREGS = 0xe - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETSIGMASK = 0x420a - PTRACE_GET_THREAD_AREA = 0x19 - PTRACE_GET_THREAD_AREA_3264 = 0xc4 - PTRACE_GET_WATCH_REGS = 0xd0 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_OLDSETOPTIONS = 0x15 - PTRACE_O_EXITKILL = 0x100000 - PTRACE_O_MASK = 0x3000ff - PTRACE_O_SUSPEND_SECCOMP = 0x200000 - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKDATA_3264 = 0xc1 - PTRACE_PEEKSIGINFO = 0x4209 - PTRACE_PEEKSIGINFO_SHARED = 0x1 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKTEXT_3264 = 0xc0 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKEDATA_3264 = 0xc3 - PTRACE_POKETEXT = 0x4 - PTRACE_POKETEXT_3264 = 0xc2 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SETFPREGS = 0xf - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b - PTRACE_SET_THREAD_AREA = 0x1a - PTRACE_SET_WATCH_REGS = 0xd1 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TRACEME = 0x0 - RLIMIT_AS = 0x6 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x5 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CC_ALGO = 0x10 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_MASK = 0xf - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0x10 - RTAX_MTU = 0x2 - RTAX_QUICKACK = 0xf - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x16 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELMDB = 0x55 - RTM_DELNEIGH = 0x1d - RTM_DELNSID = 0x59 - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMDB = 0x56 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETNETCONF = 0x52 - RTM_GETNSID = 0x5a - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5b - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWMDB = 0x54 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWNETCONF = 0x50 - RTM_NEWNSID = 0x58 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x13 - RTM_NR_MSGTYPES = 0x4c - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_COMPARE_MASK = 0x11 - RTNH_F_DEAD = 0x1 - RTNH_F_LINKDOWN = 0x10 - RTNH_F_OFFLOAD = 0x8 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BABEL = 0x2a - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MROUTED = 0x11 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SCM_WIFI_STATUS = 0x29 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x40047307 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x40047309 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x80047308 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x1 - SOCK_NONBLOCK = 0x80 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x2 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0xffff - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1009 - SO_ATTACH_BPF = 0x32 - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BPF_EXTENSIONS = 0x30 - SO_BROADCAST = 0x20 - SO_BSDCOMPAT = 0xe - SO_BUSY_POLL = 0x2e - SO_DEBUG = 0x1 - SO_DETACH_BPF = 0x1b - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x1029 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_GET_FILTER = 0x1a - SO_INCOMING_CPU = 0x31 - SO_KEEPALIVE = 0x8 - SO_LINGER = 0x80 - SO_LOCK_FILTER = 0x2c - SO_MARK = 0x24 - SO_MAX_PACING_RATE = 0x2f - SO_NOFCS = 0x2b - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x11 - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x12 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1e - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x1028 - SO_RCVBUF = 0x1002 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 - SO_REUSEADDR = 0x4 - SO_REUSEPORT = 0x200 - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SELECT_ERR_QUEUE = 0x2d - SO_SNDBUF = 0x1001 - SO_SNDBUFFORCE = 0x1f - SO_SNDLOWAT = 0x1003 - SO_SNDTIMEO = 0x1005 - SO_STYLE = 0x1008 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x1008 - SO_WIFI_STATUS = 0x29 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TCFLSH = 0x5407 - TCIFLUSH = 0x0 - TCIOFLUSH = 0x2 - TCOFLUSH = 0x1 - TCP_CONGESTION = 0xd - TCP_COOKIE_IN_ALWAYS = 0x1 - TCP_COOKIE_MAX = 0x10 - TCP_COOKIE_MIN = 0x8 - TCP_COOKIE_OUT_NEVER = 0x2 - TCP_COOKIE_PAIR_SIZE = 0x20 - TCP_COOKIE_TRANSACTIONS = 0xf - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_FASTOPEN = 0x17 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_MSS_DEFAULT = 0x218 - TCP_MSS_DESIRED = 0x4c4 - TCP_NODELAY = 0x1 - TCP_QUEUE_SEQ = 0x15 - TCP_QUICKACK = 0xc - TCP_REPAIR = 0x13 - TCP_REPAIR_OPTIONS = 0x16 - TCP_REPAIR_QUEUE = 0x14 - TCP_SYNCNT = 0x7 - TCP_S_DATA_IN = 0x4 - TCP_S_DATA_OUT = 0x8 - TCP_THIN_DUPACK = 0x11 - TCP_THIN_LINEAR_TIMEOUTS = 0x10 - TCP_TIMESTAMP = 0x18 - TCP_USER_TIMEOUT = 0x12 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x5410 - TCSBRK = 0x5405 - TCXONC = 0x5406 - TIOCCBRK = 0x5428 - TIOCCONS = 0x80047478 - TIOCEXCL = 0x740d - TIOCGDEV = 0x40045432 - TIOCGETD = 0x7400 - TIOCGETP = 0x7408 - TIOCGEXCL = 0x40045440 - TIOCGICOUNT = 0x5492 - TIOCGLCKTRMIOS = 0x548b - TIOCGLTC = 0x7474 - TIOCGPGRP = 0x40047477 - TIOCGPKT = 0x40045438 - TIOCGPTLCK = 0x40045439 - TIOCGPTN = 0x40045430 - TIOCGRS485 = 0x4020542e - TIOCGSERIAL = 0x5484 - TIOCGSID = 0x7416 - TIOCGSOFTCAR = 0x5481 - TIOCGWINSZ = 0x40087468 - TIOCINQ = 0x467f - TIOCLINUX = 0x5483 - TIOCMBIC = 0x741c - TIOCMBIS = 0x741b - TIOCMGET = 0x741d - TIOCMIWAIT = 0x5491 - TIOCMSET = 0x741a - TIOCM_CAR = 0x100 - TIOCM_CD = 0x100 - TIOCM_CTS = 0x40 - TIOCM_DSR = 0x400 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x200 - TIOCM_RNG = 0x200 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x20 - TIOCM_ST = 0x10 - TIOCNOTTY = 0x5471 - TIOCNXCL = 0x740e - TIOCOUTQ = 0x7472 - TIOCPKT = 0x5470 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x5480 - TIOCSERCONFIG = 0x5488 - TIOCSERGETLSR = 0x548e - TIOCSERGETMULTI = 0x548f - TIOCSERGSTRUCT = 0x548d - TIOCSERGWILD = 0x5489 - TIOCSERSETMULTI = 0x5490 - TIOCSERSWILD = 0x548a - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x7401 - TIOCSETN = 0x740a - TIOCSETP = 0x7409 - TIOCSIG = 0x80045436 - TIOCSLCKTRMIOS = 0x548c - TIOCSLTC = 0x7475 - TIOCSPGRP = 0x80047476 - TIOCSPTLCK = 0x80045431 - TIOCSRS485 = 0xc020542f - TIOCSSERIAL = 0x5485 - TIOCSSOFTCAR = 0x5482 - TIOCSTI = 0x5472 - TIOCSWINSZ = 0x80087467 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x8000 - TUNATTACHFILTER = 0x801054d5 - TUNDETACHFILTER = 0x801054d6 - TUNGETFEATURES = 0x400454cf - TUNGETFILTER = 0x401054db - TUNGETIFF = 0x400454d2 - TUNGETSNDBUF = 0x400454d3 - TUNGETVNETBE = 0x400454df - TUNGETVNETHDRSZ = 0x400454d7 - TUNGETVNETLE = 0x400454dd - TUNSETDEBUG = 0x800454c9 - TUNSETGROUP = 0x800454ce - TUNSETIFF = 0x800454ca - TUNSETIFINDEX = 0x800454da - TUNSETLINK = 0x800454cd - TUNSETNOCSUM = 0x800454c8 - TUNSETOFFLOAD = 0x800454d0 - TUNSETOWNER = 0x800454cc - TUNSETPERSIST = 0x800454cb - TUNSETQUEUE = 0x800454d9 - TUNSETSNDBUF = 0x800454d4 - TUNSETTXFILTER = 0x800454d1 - TUNSETVNETBE = 0x800454de - TUNSETVNETHDRSZ = 0x800454d8 - TUNSETVNETLE = 0x800454dc - VDISCARD = 0xd - VEOF = 0x10 - VEOL = 0x11 - VEOL2 = 0x6 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x4 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VSWTCH = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 112f05de56..2310beebd4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -1,1568 +1,1860 @@ -// mkerrors.sh -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. // +build mips64le,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IB = 0x1b - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x29 - AF_MPLS = 0x1c - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VSOCK = 0x28 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_6LOWPAN = 0x339 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_MONITOR = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IP6GRE = 0x337 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETLINK = 0x338 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LL_OFF = -0x200000 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MOD = 0x90 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XOR = 0xa0 - BRKINT = 0x2 - CFLUSH = 0xf - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_TAI = 0xb - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CREAD = 0x80 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWAKEUP = 0x20000000 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_80221 = 0x8917 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_802_3_MIN = 0x600 - ETH_P_802_EX1 = 0x88b5 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BATMAN = 0x4305 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_LOOPBACK = 0x9000 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_MVRP = 0x88f5 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PRP = 0x88fb - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_TSN = 0x22f0 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - ETH_P_XDSA = 0xf8 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FLUSHO = 0x2000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0xe - F_GETLK64 = 0xe - F_GETOWN = 0x17 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OFD_GETLK = 0x24 - F_OFD_SETLK = 0x25 - F_OFD_SETLKW = 0x26 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0x6 - F_SETLKW = 0x7 - F_SETLKW64 = 0x7 - F_SETOWN = 0x18 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x100 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_MANAGETEMPADDR = 0x100 - IFA_F_MCAUTOJOIN = 0x400 - IFA_F_NODAD = 0x2 - IFA_F_NOPREFIXROUTE = 0x200 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_STABLE_PRIVACY = 0x800 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 - IFF_ALLMULTI = 0x200 - IFF_ATTACH_QUEUE = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DETACH_QUEUE = 0x400 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_ECHO = 0x40000 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MASTER = 0x400 - IFF_MULTICAST = 0x1000 - IFF_MULTI_QUEUE = 0x100 - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_PERSIST = 0x800 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x80 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_BEETPH = 0x5e - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MH = 0x87 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DONTFRAG = 0x3e - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PATHMTU = 0x3d - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_INTERFACE = 0x4 - IPV6_PMTUDISC_OMIT = 0x5 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPATHMTU = 0x3c - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_CHECKSUM = 0x17 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_NODEFRAG = 0x16 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_INTERFACE = 0x4 - IP_PMTUDISC_OMIT = 0x5 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_UNICAST_IF = 0x32 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x800 - MAP_ANONYMOUS = 0x800 - MAP_DENYWRITE = 0x2000 - MAP_EXECUTABLE = 0x4000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x1000 - MAP_HUGETLB = 0x80000 - MAP_HUGE_MASK = 0x3f - MAP_HUGE_SHIFT = 0x1a - MAP_LOCKED = 0x8000 - MAP_NONBLOCK = 0x20000 - MAP_NORESERVE = 0x400 - MAP_POPULATE = 0x10000 - MAP_PRIVATE = 0x2 - MAP_RENAME = 0x800 - MAP_SHARED = 0x1 - MAP_STACK = 0x40000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_LAZYTIME = 0x2000000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x2800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CAP_ACK = 0xa - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_LISTEN_ALL_NSID = 0x8 - NETLINK_LIST_MEMBERSHIPS = 0x9 - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_RX_RING = 0x6 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_SOCK_DIAG = 0x4 - NETLINK_TX_RING = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x8 - O_ASYNC = 0x1000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x100 - O_DIRECT = 0x8000 - O_DIRECTORY = 0x10000 - O_DSYNC = 0x10 - O_EXCL = 0x400 - O_FSYNC = 0x4010 - O_LARGEFILE = 0x0 - O_NDELAY = 0x80 - O_NOATIME = 0x40000 - O_NOCTTY = 0x800 - O_NOFOLLOW = 0x20000 - O_NONBLOCK = 0x80 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x4010 - O_SYNC = 0x4010 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CBPF = 0x6 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_DATA = 0x16 - PACKET_FANOUT_EBPF = 0x7 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FANOUT_QM = 0x5 - PACKET_FANOUT_RND = 0x4 - PACKET_FANOUT_ROLLOVER = 0x3 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_KERNEL = 0x7 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_QDISC_BYPASS = 0x14 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_ROLLOVER_STATS = 0x15 - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_HAS_OFF = 0x13 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_USER = 0x6 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x100 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_CAP_AMBIENT = 0x2f - PR_CAP_AMBIENT_CLEAR_ALL = 0x4 - PR_CAP_AMBIENT_IS_SET = 0x1 - PR_CAP_AMBIENT_LOWER = 0x3 - PR_CAP_AMBIENT_RAISE = 0x2 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_FP_MODE_FR = 0x1 - PR_FP_MODE_FRE = 0x2 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_FP_MODE = 0x2e - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_THP_DISABLE = 0x2a - PR_GET_TID_ADDRESS = 0x28 - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_MPX_DISABLE_MANAGEMENT = 0x2c - PR_MPX_ENABLE_MANAGEMENT = 0x2b - PR_SET_CHILD_SUBREAPER = 0x24 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_FP_MODE = 0x2d - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 - PR_SET_MM_AUXV = 0xc - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_ENV_END = 0xb - PR_SET_MM_ENV_START = 0xa - PR_SET_MM_EXE_FILE = 0xd - PR_SET_MM_MAP = 0xe - PR_SET_MM_MAP_SIZE = 0xf - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_THP_DISABLE = 0x29 - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETFPREGS = 0xe - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETSIGMASK = 0x420a - PTRACE_GET_THREAD_AREA = 0x19 - PTRACE_GET_THREAD_AREA_3264 = 0xc4 - PTRACE_GET_WATCH_REGS = 0xd0 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_OLDSETOPTIONS = 0x15 - PTRACE_O_EXITKILL = 0x100000 - PTRACE_O_MASK = 0x3000ff - PTRACE_O_SUSPEND_SECCOMP = 0x200000 - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKDATA_3264 = 0xc1 - PTRACE_PEEKSIGINFO = 0x4209 - PTRACE_PEEKSIGINFO_SHARED = 0x1 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKTEXT_3264 = 0xc0 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKEDATA_3264 = 0xc3 - PTRACE_POKETEXT = 0x4 - PTRACE_POKETEXT_3264 = 0xc2 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SETFPREGS = 0xf - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b - PTRACE_SET_THREAD_AREA = 0x1a - PTRACE_SET_WATCH_REGS = 0xd1 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TRACEME = 0x0 - RLIMIT_AS = 0x6 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x5 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CC_ALGO = 0x10 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_MASK = 0xf - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0x10 - RTAX_MTU = 0x2 - RTAX_QUICKACK = 0xf - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x16 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELMDB = 0x55 - RTM_DELNEIGH = 0x1d - RTM_DELNSID = 0x59 - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMDB = 0x56 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETNETCONF = 0x52 - RTM_GETNSID = 0x5a - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5b - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWMDB = 0x54 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWNETCONF = 0x50 - RTM_NEWNSID = 0x58 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x13 - RTM_NR_MSGTYPES = 0x4c - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_COMPARE_MASK = 0x11 - RTNH_F_DEAD = 0x1 - RTNH_F_LINKDOWN = 0x10 - RTNH_F_OFFLOAD = 0x8 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BABEL = 0x2a - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MROUTED = 0x11 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SCM_WIFI_STATUS = 0x29 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x40047307 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x40047309 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x80047308 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x1 - SOCK_NONBLOCK = 0x80 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x2 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0xffff - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1009 - SO_ATTACH_BPF = 0x32 - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BPF_EXTENSIONS = 0x30 - SO_BROADCAST = 0x20 - SO_BSDCOMPAT = 0xe - SO_BUSY_POLL = 0x2e - SO_DEBUG = 0x1 - SO_DETACH_BPF = 0x1b - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x1029 - SO_DONTROUTE = 0x10 - SO_ERROR = 0x1007 - SO_GET_FILTER = 0x1a - SO_INCOMING_CPU = 0x31 - SO_KEEPALIVE = 0x8 - SO_LINGER = 0x80 - SO_LOCK_FILTER = 0x2c - SO_MARK = 0x24 - SO_MAX_PACING_RATE = 0x2f - SO_NOFCS = 0x2b - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0x100 - SO_PASSCRED = 0x11 - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x12 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1e - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x1028 - SO_RCVBUF = 0x1002 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x1004 - SO_RCVTIMEO = 0x1006 - SO_REUSEADDR = 0x4 - SO_REUSEPORT = 0x200 - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SELECT_ERR_QUEUE = 0x2d - SO_SNDBUF = 0x1001 - SO_SNDBUFFORCE = 0x1f - SO_SNDLOWAT = 0x1003 - SO_SNDTIMEO = 0x1005 - SO_STYLE = 0x1008 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x1008 - SO_WIFI_STATUS = 0x29 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TCFLSH = 0x5407 - TCIFLUSH = 0x0 - TCIOFLUSH = 0x2 - TCOFLUSH = 0x1 - TCP_CONGESTION = 0xd - TCP_COOKIE_IN_ALWAYS = 0x1 - TCP_COOKIE_MAX = 0x10 - TCP_COOKIE_MIN = 0x8 - TCP_COOKIE_OUT_NEVER = 0x2 - TCP_COOKIE_PAIR_SIZE = 0x20 - TCP_COOKIE_TRANSACTIONS = 0xf - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_FASTOPEN = 0x17 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_MSS_DEFAULT = 0x218 - TCP_MSS_DESIRED = 0x4c4 - TCP_NODELAY = 0x1 - TCP_QUEUE_SEQ = 0x15 - TCP_QUICKACK = 0xc - TCP_REPAIR = 0x13 - TCP_REPAIR_OPTIONS = 0x16 - TCP_REPAIR_QUEUE = 0x14 - TCP_SYNCNT = 0x7 - TCP_S_DATA_IN = 0x4 - TCP_S_DATA_OUT = 0x8 - TCP_THIN_DUPACK = 0x11 - TCP_THIN_LINEAR_TIMEOUTS = 0x10 - TCP_TIMESTAMP = 0x18 - TCP_USER_TIMEOUT = 0x12 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x5410 - TCSBRK = 0x5405 - TCXONC = 0x5406 - TIOCCBRK = 0x5428 - TIOCCONS = 0x80047478 - TIOCEXCL = 0x740d - TIOCGDEV = 0x40045432 - TIOCGETD = 0x7400 - TIOCGETP = 0x7408 - TIOCGEXCL = 0x40045440 - TIOCGICOUNT = 0x5492 - TIOCGLCKTRMIOS = 0x548b - TIOCGLTC = 0x7474 - TIOCGPGRP = 0x40047477 - TIOCGPKT = 0x40045438 - TIOCGPTLCK = 0x40045439 - TIOCGPTN = 0x40045430 - TIOCGRS485 = 0x4020542e - TIOCGSERIAL = 0x5484 - TIOCGSID = 0x7416 - TIOCGSOFTCAR = 0x5481 - TIOCGWINSZ = 0x40087468 - TIOCINQ = 0x467f - TIOCLINUX = 0x5483 - TIOCMBIC = 0x741c - TIOCMBIS = 0x741b - TIOCMGET = 0x741d - TIOCMIWAIT = 0x5491 - TIOCMSET = 0x741a - TIOCM_CAR = 0x100 - TIOCM_CD = 0x100 - TIOCM_CTS = 0x40 - TIOCM_DSR = 0x400 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x200 - TIOCM_RNG = 0x200 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x20 - TIOCM_ST = 0x10 - TIOCNOTTY = 0x5471 - TIOCNXCL = 0x740e - TIOCOUTQ = 0x7472 - TIOCPKT = 0x5470 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x5480 - TIOCSERCONFIG = 0x5488 - TIOCSERGETLSR = 0x548e - TIOCSERGETMULTI = 0x548f - TIOCSERGSTRUCT = 0x548d - TIOCSERGWILD = 0x5489 - TIOCSERSETMULTI = 0x5490 - TIOCSERSWILD = 0x548a - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x7401 - TIOCSETN = 0x740a - TIOCSETP = 0x7409 - TIOCSIG = 0x80045436 - TIOCSLCKTRMIOS = 0x548c - TIOCSLTC = 0x7475 - TIOCSPGRP = 0x80047476 - TIOCSPTLCK = 0x80045431 - TIOCSRS485 = 0xc020542f - TIOCSSERIAL = 0x5485 - TIOCSSOFTCAR = 0x5482 - TIOCSTI = 0x5472 - TIOCSWINSZ = 0x80087467 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x8000 - TUNATTACHFILTER = 0x801054d5 - TUNDETACHFILTER = 0x801054d6 - TUNGETFEATURES = 0x400454cf - TUNGETFILTER = 0x401054db - TUNGETIFF = 0x400454d2 - TUNGETSNDBUF = 0x400454d3 - TUNGETVNETBE = 0x400454df - TUNGETVNETHDRSZ = 0x400454d7 - TUNGETVNETLE = 0x400454dd - TUNSETDEBUG = 0x800454c9 - TUNSETGROUP = 0x800454ce - TUNSETIFF = 0x800454ca - TUNSETIFINDEX = 0x800454da - TUNSETLINK = 0x800454cd - TUNSETNOCSUM = 0x800454c8 - TUNSETOFFLOAD = 0x800454d0 - TUNSETOWNER = 0x800454cc - TUNSETPERSIST = 0x800454cb - TUNSETQUEUE = 0x800454d9 - TUNSETSNDBUF = 0x800454d4 - TUNSETTXFILTER = 0x800454d1 - TUNSETVNETBE = 0x800454de - TUNSETVNETHDRSZ = 0x800454d8 - TUNSETVNETLE = 0x800454dc - VDISCARD = 0xd - VEOF = 0x10 - VEOL = 0x11 - VEOL2 = 0x6 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x4 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VSWTCH = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go new file mode 100644 index 0000000000..44191b0c20 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -0,0 +1,2209 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errors = [...]string{ + 1: "operation not permitted", + 2: "no such file or directory", + 3: "no such process", + 4: "interrupted system call", + 5: "input/output error", + 6: "no such device or address", + 7: "argument list too long", + 8: "exec format error", + 9: "bad file descriptor", + 10: "no child processes", + 11: "resource temporarily unavailable", + 12: "cannot allocate memory", + 13: "permission denied", + 14: "bad address", + 15: "block device required", + 16: "device or resource busy", + 17: "file exists", + 18: "invalid cross-device link", + 19: "no such device", + 20: "not a directory", + 21: "is a directory", + 22: "invalid argument", + 23: "too many open files in system", + 24: "too many open files", + 25: "inappropriate ioctl for device", + 26: "text file busy", + 27: "file too large", + 28: "no space left on device", + 29: "illegal seek", + 30: "read-only file system", + 31: "too many links", + 32: "broken pipe", + 33: "numerical argument out of domain", + 34: "numerical result out of range", + 35: "no message of desired type", + 36: "identifier removed", + 37: "channel number out of range", + 38: "level 2 not synchronized", + 39: "level 3 halted", + 40: "level 3 reset", + 41: "link number out of range", + 42: "protocol driver not attached", + 43: "no CSI structure available", + 44: "level 2 halted", + 45: "resource deadlock avoided", + 46: "no locks available", + 50: "invalid exchange", + 51: "invalid request descriptor", + 52: "exchange full", + 53: "no anode", + 54: "invalid request code", + 55: "invalid slot", + 56: "file locking deadlock error", + 59: "bad font file format", + 60: "device not a stream", + 61: "no data available", + 62: "timer expired", + 63: "out of streams resources", + 64: "machine is not on the network", + 65: "package not installed", + 66: "object is remote", + 67: "link has been severed", + 68: "advertise error", + 69: "srmount error", + 70: "communication error on send", + 71: "protocol error", + 73: "RFS specific error", + 74: "multihop attempted", + 77: "bad message", + 78: "file name too long", + 79: "value too large for defined data type", + 80: "name not unique on network", + 81: "file descriptor in bad state", + 82: "remote address changed", + 83: "can not access a needed shared library", + 84: "accessing a corrupted shared library", + 85: ".lib section in a.out corrupted", + 86: "attempting to link in too many shared libraries", + 87: "cannot exec a shared library directly", + 88: "invalid or incomplete multibyte or wide character", + 89: "function not implemented", + 90: "too many levels of symbolic links", + 91: "interrupted system call should be restarted", + 92: "streams pipe error", + 93: "directory not empty", + 94: "too many users", + 95: "socket operation on non-socket", + 96: "destination address required", + 97: "message too long", + 98: "protocol wrong type for socket", + 99: "protocol not available", + 120: "protocol not supported", + 121: "socket type not supported", + 122: "operation not supported", + 123: "protocol family not supported", + 124: "address family not supported by protocol", + 125: "address already in use", + 126: "cannot assign requested address", + 127: "network is down", + 128: "network is unreachable", + 129: "network dropped connection on reset", + 130: "software caused connection abort", + 131: "connection reset by peer", + 132: "no buffer space available", + 133: "transport endpoint is already connected", + 134: "transport endpoint is not connected", + 135: "structure needs cleaning", + 137: "not a XENIX named type file", + 138: "no XENIX semaphores available", + 139: "is a named type file", + 140: "remote I/O error", + 141: "unknown error 141", + 142: "unknown error 142", + 143: "cannot send after transport endpoint shutdown", + 144: "too many references: cannot splice", + 145: "connection timed out", + 146: "connection refused", + 147: "host is down", + 148: "no route to host", + 149: "operation already in progress", + 150: "operation now in progress", + 151: "stale file handle", + 158: "operation canceled", + 159: "no medium found", + 160: "wrong medium type", + 161: "required key not available", + 162: "key has expired", + 163: "key has been revoked", + 164: "key was rejected by service", + 165: "owner died", + 166: "state not recoverable", + 167: "operation not possible due to RF-kill", + 168: "memory page has hardware error", + 1133: "disk quota exceeded", +} + +// Signal table +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "EMT trap", + 8: "floating point exception", + 9: "killed", + 10: "bus error", + 11: "segmentation fault", + 12: "bad system call", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", + 16: "user defined signal 1", + 17: "user defined signal 2", + 18: "child exited", + 19: "power failure", + 20: "window changed", + 21: "urgent I/O condition", + 22: "I/O possible", + 23: "stopped (signal)", + 24: "stopped", + 25: "continued", + 26: "stopped (tty input)", + 27: "stopped (tty output)", + 28: "virtual timer expired", + 29: "profiling timer expired", + 30: "CPU time limit exceeded", + 31: "file size limit exceeded", +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 8b42ca2fe9..6772a59beb 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -1,1624 +1,1917 @@ -// mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. // +build ppc64,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -m64 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x29 - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VSOCK = 0x28 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_6LOWPAN = 0x339 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_MONITOR = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IP6GRE = 0x337 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETLINK = 0x338 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x17 - B110 = 0x3 - B115200 = 0x11 - B1152000 = 0x18 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x19 - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x1a - B230400 = 0x12 - B2400 = 0xb - B2500000 = 0x1b - B300 = 0x7 - B3000000 = 0x1c - B3500000 = 0x1d - B38400 = 0xf - B4000000 = 0x1e - B460800 = 0x13 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x14 - B57600 = 0x10 - B576000 = 0x15 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x16 - B9600 = 0xd - BOTHER = 0x1f - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MOD = 0x90 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XOR = 0xa0 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x8000 - BSDLY = 0x8000 - CBAUD = 0xff - CBAUDEX = 0x0 - CFLUSH = 0xf - CIBAUD = 0xff0000 - CLOCAL = 0x8000 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x1000 - CR2 = 0x2000 - CR3 = 0x3000 - CRDLY = 0x3000 - CREAD = 0x800 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x100 - CS7 = 0x200 - CS8 = 0x300 - CSIGNAL = 0xff - CSIZE = 0x300 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x400 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x40 - ECHOE = 0x2 - ECHOK = 0x4 - ECHOKE = 0x1 - ECHONL = 0x10 - ECHOPRT = 0x20 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWAKEUP = 0x20000000 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_80221 = 0x8917 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_802_3_MIN = 0x600 - ETH_P_802_EX1 = 0x88b5 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BATMAN = 0x4305 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_LOOPBACK = 0x9000 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_MVRP = 0x88f5 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PRP = 0x88fb - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - ETH_P_XDSA = 0xf8 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x4000 - FFDLY = 0x4000 - FLUSHO = 0x800000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0x5 - F_GETLK64 = 0xc - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OFD_GETLK = 0x24 - F_OFD_SETLK = 0x25 - F_OFD_SETLKW = 0x26 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0xd - F_SETLKW = 0x7 - F_SETLKW64 = 0xe - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x4000 - IBSHIFT = 0x10 - ICANON = 0x100 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x400 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_MANAGETEMPADDR = 0x100 - IFA_F_NODAD = 0x2 - IFA_F_NOPREFIXROUTE = 0x200 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 - IFF_ALLMULTI = 0x200 - IFF_ATTACH_QUEUE = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DETACH_QUEUE = 0x400 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_ECHO = 0x40000 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MASTER = 0x400 - IFF_MULTICAST = 0x1000 - IFF_MULTI_QUEUE = 0x100 - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_PERSIST = 0x800 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_BEETPH = 0x5e - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MH = 0x87 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_INTERFACE = 0x4 - IPV6_PMTUDISC_OMIT = 0x5 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_NODEFRAG = 0x16 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_INTERFACE = 0x4 - IP_PMTUDISC_OMIT = 0x5 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_UNICAST_IF = 0x32 - IP_XFRM_POLICY = 0x11 - ISIG = 0x80 - ISTRIP = 0x20 - IUCLC = 0x1000 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_HUGETLB = 0x40000 - MAP_HUGE_MASK = 0x3f - MAP_HUGE_SHIFT = 0x1a - MAP_LOCKED = 0x80 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x40 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_STACK = 0x20000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x2000 - MCL_FUTURE = 0x4000 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_RX_RING = 0x6 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_SOCK_DIAG = 0x4 - NETLINK_TX_RING = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NL2 = 0x200 - NL3 = 0x300 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x300 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80000000 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x4 - ONLCR = 0x2 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x20000 - O_DIRECTORY = 0x4000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x101000 - O_LARGEFILE = 0x0 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x8000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x101000 - O_SYNC = 0x101000 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FANOUT_QM = 0x5 - PACKET_FANOUT_RND = 0x4 - PACKET_FANOUT_ROLLOVER = 0x3 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_KERNEL = 0x7 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_QDISC_BYPASS = 0x14 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_HAS_OFF = 0x13 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_USER = 0x6 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x1000 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x2000 - PENDIN = 0x20000000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_SAO = 0x10 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_THP_DISABLE = 0x2a - PR_GET_TID_ADDRESS = 0x28 - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_SET_CHILD_SUBREAPER = 0x24 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 - PR_SET_MM_AUXV = 0xc - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_ENV_END = 0xb - PR_SET_MM_ENV_START = 0xa - PR_SET_MM_EXE_FILE = 0xd - PR_SET_MM_MAP = 0xe - PR_SET_MM_MAP_SIZE = 0xf - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_THP_DISABLE = 0x29 - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETEVRREGS = 0x14 - PTRACE_GETFPREGS = 0xe - PTRACE_GETREGS = 0xc - PTRACE_GETREGS64 = 0x16 - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETSIGMASK = 0x420a - PTRACE_GETVRREGS = 0x12 - PTRACE_GETVSRREGS = 0x1b - PTRACE_GET_DEBUGREG = 0x19 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_O_EXITKILL = 0x100000 - PTRACE_O_MASK = 0x1000ff - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKSIGINFO = 0x4209 - PTRACE_PEEKSIGINFO_SHARED = 0x1 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKETEXT = 0x4 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SETEVRREGS = 0x15 - PTRACE_SETFPREGS = 0xf - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGS64 = 0x17 - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b - PTRACE_SETVRREGS = 0x13 - PTRACE_SETVSRREGS = 0x1c - PTRACE_SET_DEBUGREG = 0x1a - PTRACE_SINGLEBLOCK = 0x100 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TRACEME = 0x0 - PT_CCR = 0x26 - PT_CTR = 0x23 - PT_DAR = 0x29 - PT_DSCR = 0x2c - PT_DSISR = 0x2a - PT_FPR0 = 0x30 - PT_FPSCR = 0x50 - PT_LNK = 0x24 - PT_MSR = 0x21 - PT_NIP = 0x20 - PT_ORIG_R3 = 0x22 - PT_R0 = 0x0 - PT_R1 = 0x1 - PT_R10 = 0xa - PT_R11 = 0xb - PT_R12 = 0xc - PT_R13 = 0xd - PT_R14 = 0xe - PT_R15 = 0xf - PT_R16 = 0x10 - PT_R17 = 0x11 - PT_R18 = 0x12 - PT_R19 = 0x13 - PT_R2 = 0x2 - PT_R20 = 0x14 - PT_R21 = 0x15 - PT_R22 = 0x16 - PT_R23 = 0x17 - PT_R24 = 0x18 - PT_R25 = 0x19 - PT_R26 = 0x1a - PT_R27 = 0x1b - PT_R28 = 0x1c - PT_R29 = 0x1d - PT_R3 = 0x3 - PT_R30 = 0x1e - PT_R31 = 0x1f - PT_R4 = 0x4 - PT_R5 = 0x5 - PT_R6 = 0x6 - PT_R7 = 0x7 - PT_R8 = 0x8 - PT_R9 = 0x9 - PT_REGS_COUNT = 0x2c - PT_RESULT = 0x2b - PT_SOFTE = 0x27 - PT_TRAP = 0x28 - PT_VR0 = 0x52 - PT_VRSAVE = 0x94 - PT_VSCR = 0x93 - PT_VSR0 = 0x96 - PT_VSR31 = 0xd4 - PT_XER = 0x25 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0xf - RTAX_MTU = 0x2 - RTAX_QUICKACK = 0xf - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x11 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELMDB = 0x55 - RTM_DELNEIGH = 0x1d - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMDB = 0x56 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETNETCONF = 0x52 - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x57 - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWMDB = 0x54 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWNETCONF = 0x50 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x12 - RTM_NR_MSGTYPES = 0x48 - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_F_DEAD = 0x1 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MROUTED = 0x11 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SCM_WIFI_STATUS = 0x29 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BPF_EXTENSIONS = 0x30 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_BUSY_POLL = 0x2e - SO_DEBUG = 0x1 - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_GET_FILTER = 0x1a - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_LOCK_FILTER = 0x2c - SO_MARK = 0x24 - SO_MAX_PACING_RATE = 0x2f - SO_NOFCS = 0x2b - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x14 - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x15 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x10 - SO_RCVTIMEO = 0x12 - SO_REUSEADDR = 0x2 - SO_REUSEPORT = 0xf - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SELECT_ERR_QUEUE = 0x2d - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x11 - SO_SNDTIMEO = 0x13 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - SO_WIFI_STATUS = 0x29 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x400 - TAB2 = 0x800 - TAB3 = 0xc00 - TABDLY = 0xc00 - TCFLSH = 0x2000741f - TCGETA = 0x40147417 - TCGETS = 0x402c7413 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CONGESTION = 0xd - TCP_COOKIE_IN_ALWAYS = 0x1 - TCP_COOKIE_MAX = 0x10 - TCP_COOKIE_MIN = 0x8 - TCP_COOKIE_OUT_NEVER = 0x2 - TCP_COOKIE_PAIR_SIZE = 0x20 - TCP_COOKIE_TRANSACTIONS = 0xf - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_FASTOPEN = 0x17 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_MSS_DEFAULT = 0x218 - TCP_MSS_DESIRED = 0x4c4 - TCP_NODELAY = 0x1 - TCP_QUEUE_SEQ = 0x15 - TCP_QUICKACK = 0xc - TCP_REPAIR = 0x13 - TCP_REPAIR_OPTIONS = 0x16 - TCP_REPAIR_QUEUE = 0x14 - TCP_SYNCNT = 0x7 - TCP_S_DATA_IN = 0x4 - TCP_S_DATA_OUT = 0x8 - TCP_THIN_DUPACK = 0x11 - TCP_THIN_LINEAR_TIMEOUTS = 0x10 - TCP_TIMESTAMP = 0x18 - TCP_USER_TIMEOUT = 0x12 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x2000741d - TCSBRKP = 0x5425 - TCSETA = 0x80147418 - TCSETAF = 0x8014741c - TCSETAW = 0x80147419 - TCSETS = 0x802c7414 - TCSETSF = 0x802c7416 - TCSETSW = 0x802c7415 - TCXONC = 0x2000741e - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x40045432 - TIOCGETC = 0x40067412 - TIOCGETD = 0x5424 - TIOCGETP = 0x40067408 - TIOCGEXCL = 0x40045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGLTC = 0x40067474 - TIOCGPGRP = 0x40047477 - TIOCGPKT = 0x40045438 - TIOCGPTLCK = 0x40045439 - TIOCGPTN = 0x40045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x40087468 - TIOCINQ = 0x4004667f - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_LOOP = 0x8000 - TIOCM_OUT1 = 0x2000 - TIOCM_OUT2 = 0x4000 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x40047473 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETC = 0x80067411 - TIOCSETD = 0x5423 - TIOCSETN = 0x8006740a - TIOCSETP = 0x80067409 - TIOCSIG = 0x80045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSLTC = 0x80067475 - TIOCSPGRP = 0x80047476 - TIOCSPTLCK = 0x80045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTART = 0x2000746e - TIOCSTI = 0x5412 - TIOCSTOP = 0x2000746f - TIOCSWINSZ = 0x80087467 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x400000 - TUNATTACHFILTER = 0x801054d5 - TUNDETACHFILTER = 0x801054d6 - TUNGETFEATURES = 0x400454cf - TUNGETFILTER = 0x401054db - TUNGETIFF = 0x400454d2 - TUNGETSNDBUF = 0x400454d3 - TUNGETVNETHDRSZ = 0x400454d7 - TUNSETDEBUG = 0x800454c9 - TUNSETGROUP = 0x800454ce - TUNSETIFF = 0x800454ca - TUNSETIFINDEX = 0x800454da - TUNSETLINK = 0x800454cd - TUNSETNOCSUM = 0x800454c8 - TUNSETOFFLOAD = 0x800454d0 - TUNSETOWNER = 0x800454cc - TUNSETPERSIST = 0x800454cb - TUNSETQUEUE = 0x800454d9 - TUNSETSNDBUF = 0x800454d4 - TUNSETTXFILTER = 0x800454d1 - TUNSETVNETHDRSZ = 0x800454d8 - VDISCARD = 0x10 - VEOF = 0x4 - VEOL = 0x6 - VEOL2 = 0x8 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x5 - VQUIT = 0x1 - VREPRINT = 0xb - VSTART = 0xd - VSTOP = 0xe - VSUSP = 0xc - VSWTC = 0x9 - VT0 = 0x0 - VT1 = 0x10000 - VTDLY = 0x10000 - VTIME = 0x7 - VWERASE = 0xa - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4000 - XTABS = 0xc00 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XTABS = 0xc00 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index e8d12b5d6d..ad29c3d3d4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -1,1623 +1,1917 @@ -// mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. // +build ppc64le,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -m64 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x29 - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VSOCK = 0x28 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_MONITOR = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IP6GRE = 0x337 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETLINK = 0x338 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x17 - B110 = 0x3 - B115200 = 0x11 - B1152000 = 0x18 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x19 - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x1a - B230400 = 0x12 - B2400 = 0xb - B2500000 = 0x1b - B300 = 0x7 - B3000000 = 0x1c - B3500000 = 0x1d - B38400 = 0xf - B4000000 = 0x1e - B460800 = 0x13 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x14 - B57600 = 0x10 - B576000 = 0x15 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x16 - B9600 = 0xd - BOTHER = 0x1f - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MOD = 0x90 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XOR = 0xa0 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x8000 - BSDLY = 0x8000 - CBAUD = 0xff - CBAUDEX = 0x0 - CFLUSH = 0xf - CIBAUD = 0xff0000 - CLOCAL = 0x8000 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x1000 - CR2 = 0x2000 - CR3 = 0x3000 - CRDLY = 0x3000 - CREAD = 0x800 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x100 - CS7 = 0x200 - CS8 = 0x300 - CSIGNAL = 0xff - CSIZE = 0x300 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x400 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x40 - ECHOE = 0x2 - ECHOK = 0x4 - ECHOKE = 0x1 - ECHONL = 0x10 - ECHOPRT = 0x20 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWAKEUP = 0x20000000 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_802_3_MIN = 0x600 - ETH_P_802_EX1 = 0x88b5 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BATMAN = 0x4305 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_MVRP = 0x88f5 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PRP = 0x88fb - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x4000 - FFDLY = 0x4000 - FLUSHO = 0x800000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0x5 - F_GETLK64 = 0xc - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0xd - F_SETLKW = 0x7 - F_SETLKW64 = 0xe - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x4000 - IBSHIFT = 0x10 - ICANON = 0x100 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x400 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_NODAD = 0x2 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x7 - IFF_802_1Q_VLAN = 0x1 - IFF_ALLMULTI = 0x200 - IFF_ATTACH_QUEUE = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BONDING = 0x20 - IFF_BRIDGE_PORT = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DETACH_QUEUE = 0x400 - IFF_DISABLE_NETPOLL = 0x1000 - IFF_DONT_BRIDGE = 0x800 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_EBRIDGE = 0x2 - IFF_ECHO = 0x40000 - IFF_ISATAP = 0x80 - IFF_LIVE_ADDR_CHANGE = 0x100000 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MACVLAN = 0x200000 - IFF_MACVLAN_PORT = 0x2000 - IFF_MASTER = 0x400 - IFF_MASTER_8023AD = 0x8 - IFF_MASTER_ALB = 0x10 - IFF_MASTER_ARPMON = 0x100 - IFF_MULTICAST = 0x1000 - IFF_MULTI_QUEUE = 0x100 - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_OVS_DATAPATH = 0x8000 - IFF_PERSIST = 0x800 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_SLAVE_INACTIVE = 0x4 - IFF_SLAVE_NEEDARP = 0x40 - IFF_SUPP_NOFCS = 0x80000 - IFF_TAP = 0x2 - IFF_TEAM_PORT = 0x40000 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_TX_SKB_SHARING = 0x10000 - IFF_UNICAST_FLT = 0x20000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFF_WAN_HDLC = 0x200 - IFF_XMIT_DST_RELEASE = 0x400 - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_BEETPH = 0x5e - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MH = 0x87 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BLOCK_SOURCE = 0x26 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_UNICAST_IF = 0x32 - IP_XFRM_POLICY = 0x11 - ISIG = 0x80 - ISTRIP = 0x20 - IUCLC = 0x1000 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x400 - IXON = 0x200 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_HUGETLB = 0x40000 - MAP_HUGE_MASK = 0x3f - MAP_HUGE_SHIFT = 0x1a - MAP_LOCKED = 0x80 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x40 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_STACK = 0x20000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x2000 - MCL_FUTURE = 0x4000 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_RX_RING = 0x6 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_SOCK_DIAG = 0x4 - NETLINK_TX_RING = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NL2 = 0x200 - NL3 = 0x300 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x300 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80000000 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x4 - ONLCR = 0x2 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x20000 - O_DIRECTORY = 0x4000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x101000 - O_LARGEFILE = 0x0 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x8000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x101000 - O_SYNC = 0x101000 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FANOUT_RND = 0x4 - PACKET_FANOUT_ROLLOVER = 0x3 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_HAS_OFF = 0x13 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x1000 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x2000 - PENDIN = 0x20000000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_SAO = 0x10 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_TID_ADDRESS = 0x28 - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_SET_CHILD_SUBREAPER = 0x24 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 - PR_SET_MM_AUXV = 0xc - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_ENV_END = 0xb - PR_SET_MM_ENV_START = 0xa - PR_SET_MM_EXE_FILE = 0xd - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETEVRREGS = 0x14 - PTRACE_GETFPREGS = 0xe - PTRACE_GETREGS = 0xc - PTRACE_GETREGS64 = 0x16 - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETSIGMASK = 0x420a - PTRACE_GETVRREGS = 0x12 - PTRACE_GETVSRREGS = 0x1b - PTRACE_GET_DEBUGREG = 0x19 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_O_EXITKILL = 0x100000 - PTRACE_O_MASK = 0x1000ff - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKSIGINFO = 0x4209 - PTRACE_PEEKSIGINFO_SHARED = 0x1 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKUSR = 0x3 - PTRACE_POKEDATA = 0x5 - PTRACE_POKETEXT = 0x4 - PTRACE_POKEUSR = 0x6 - PTRACE_SEIZE = 0x4206 - PTRACE_SETEVRREGS = 0x15 - PTRACE_SETFPREGS = 0xf - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGS64 = 0x17 - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b - PTRACE_SETVRREGS = 0x13 - PTRACE_SETVSRREGS = 0x1c - PTRACE_SET_DEBUGREG = 0x1a - PTRACE_SINGLEBLOCK = 0x100 - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TRACEME = 0x0 - PT_CCR = 0x26 - PT_CTR = 0x23 - PT_DAR = 0x29 - PT_DSCR = 0x2c - PT_DSISR = 0x2a - PT_FPR0 = 0x30 - PT_FPSCR = 0x50 - PT_LNK = 0x24 - PT_MSR = 0x21 - PT_NIP = 0x20 - PT_ORIG_R3 = 0x22 - PT_R0 = 0x0 - PT_R1 = 0x1 - PT_R10 = 0xa - PT_R11 = 0xb - PT_R12 = 0xc - PT_R13 = 0xd - PT_R14 = 0xe - PT_R15 = 0xf - PT_R16 = 0x10 - PT_R17 = 0x11 - PT_R18 = 0x12 - PT_R19 = 0x13 - PT_R2 = 0x2 - PT_R20 = 0x14 - PT_R21 = 0x15 - PT_R22 = 0x16 - PT_R23 = 0x17 - PT_R24 = 0x18 - PT_R25 = 0x19 - PT_R26 = 0x1a - PT_R27 = 0x1b - PT_R28 = 0x1c - PT_R29 = 0x1d - PT_R3 = 0x3 - PT_R30 = 0x1e - PT_R31 = 0x1f - PT_R4 = 0x4 - PT_R5 = 0x5 - PT_R6 = 0x6 - PT_R7 = 0x7 - PT_R8 = 0x8 - PT_R9 = 0x9 - PT_REGS_COUNT = 0x2c - PT_RESULT = 0x2b - PT_SOFTE = 0x27 - PT_TRAP = 0x28 - PT_VR0 = 0x52 - PT_VRSAVE = 0x94 - PT_VSCR = 0x93 - PT_VSR0 = 0x96 - PT_VSR31 = 0xd4 - PT_XER = 0x25 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0xf - RTAX_MTU = 0x2 - RTAX_QUICKACK = 0xf - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x11 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELMDB = 0x55 - RTM_DELNEIGH = 0x1d - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMDB = 0x56 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETNETCONF = 0x52 - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x57 - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWMDB = 0x54 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWNETCONF = 0x50 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x12 - RTM_NR_MSGTYPES = 0x48 - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_F_DEAD = 0x1 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MROUTED = 0x11 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SCM_WIFI_STATUS = 0x29 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_BUSY_POLL = 0x2e - SO_DEBUG = 0x1 - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_GET_FILTER = 0x1a - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_LOCK_FILTER = 0x2c - SO_MARK = 0x24 - SO_MAX_PACING_RATE = 0x2f - SO_NOFCS = 0x2b - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x14 - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x15 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x10 - SO_RCVTIMEO = 0x12 - SO_REUSEADDR = 0x2 - SO_REUSEPORT = 0xf - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SELECT_ERR_QUEUE = 0x2d - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x11 - SO_SNDTIMEO = 0x13 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - SO_WIFI_STATUS = 0x29 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x400 - TAB2 = 0x800 - TAB3 = 0xc00 - TABDLY = 0xc00 - TCFLSH = 0x2000741f - TCGETA = 0x40147417 - TCGETS = 0x402c7413 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CONGESTION = 0xd - TCP_COOKIE_IN_ALWAYS = 0x1 - TCP_COOKIE_MAX = 0x10 - TCP_COOKIE_MIN = 0x8 - TCP_COOKIE_OUT_NEVER = 0x2 - TCP_COOKIE_PAIR_SIZE = 0x20 - TCP_COOKIE_TRANSACTIONS = 0xf - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_FASTOPEN = 0x17 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_MSS_DEFAULT = 0x218 - TCP_MSS_DESIRED = 0x4c4 - TCP_NODELAY = 0x1 - TCP_QUEUE_SEQ = 0x15 - TCP_QUICKACK = 0xc - TCP_REPAIR = 0x13 - TCP_REPAIR_OPTIONS = 0x16 - TCP_REPAIR_QUEUE = 0x14 - TCP_SYNCNT = 0x7 - TCP_S_DATA_IN = 0x4 - TCP_S_DATA_OUT = 0x8 - TCP_THIN_DUPACK = 0x11 - TCP_THIN_LINEAR_TIMEOUTS = 0x10 - TCP_TIMESTAMP = 0x18 - TCP_USER_TIMEOUT = 0x12 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x2000741d - TCSBRKP = 0x5425 - TCSETA = 0x80147418 - TCSETAF = 0x8014741c - TCSETAW = 0x80147419 - TCSETS = 0x802c7414 - TCSETSF = 0x802c7416 - TCSETSW = 0x802c7415 - TCXONC = 0x2000741e - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x40045432 - TIOCGETC = 0x40067412 - TIOCGETD = 0x5424 - TIOCGETP = 0x40067408 - TIOCGEXCL = 0x40045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGLTC = 0x40067474 - TIOCGPGRP = 0x40047477 - TIOCGPKT = 0x40045438 - TIOCGPTLCK = 0x40045439 - TIOCGPTN = 0x40045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x40087468 - TIOCINQ = 0x4004667f - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_LOOP = 0x8000 - TIOCM_OUT1 = 0x2000 - TIOCM_OUT2 = 0x4000 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x40047473 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETC = 0x80067411 - TIOCSETD = 0x5423 - TIOCSETN = 0x8006740a - TIOCSETP = 0x80067409 - TIOCSIG = 0x80045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSLTC = 0x80067475 - TIOCSPGRP = 0x80047476 - TIOCSPTLCK = 0x80045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTART = 0x2000746e - TIOCSTI = 0x5412 - TIOCSTOP = 0x2000746f - TIOCSWINSZ = 0x80087467 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x400000 - TUNATTACHFILTER = 0x801054d5 - TUNDETACHFILTER = 0x801054d6 - TUNGETFEATURES = 0x400454cf - TUNGETFILTER = 0x401054db - TUNGETIFF = 0x400454d2 - TUNGETSNDBUF = 0x400454d3 - TUNGETVNETHDRSZ = 0x400454d7 - TUNSETDEBUG = 0x800454c9 - TUNSETGROUP = 0x800454ce - TUNSETIFF = 0x800454ca - TUNSETIFINDEX = 0x800454da - TUNSETLINK = 0x800454cd - TUNSETNOCSUM = 0x800454c8 - TUNSETOFFLOAD = 0x800454d0 - TUNSETOWNER = 0x800454cc - TUNSETPERSIST = 0x800454cb - TUNSETQUEUE = 0x800454d9 - TUNSETSNDBUF = 0x800454d4 - TUNSETTXFILTER = 0x800454d1 - TUNSETVNETHDRSZ = 0x800454d8 - VDISCARD = 0x10 - VEOF = 0x4 - VEOL = 0x6 - VEOL2 = 0x8 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x5 - VQUIT = 0x1 - VREPRINT = 0xb - VSTART = 0xd - VSTOP = 0xe - VSUSP = 0xc - VSWTC = 0x9 - VT0 = 0x0 - VT1 = 0x10000 - VTDLY = 0x10000 - VTIME = 0x7 - VWERASE = 0xa - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4000 - XTABS = 0xc00 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XTABS = 0xc00 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 329f25e7cf..3b5707548a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -1,1682 +1,1917 @@ -// mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. // +build s390x,linux // Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -m64 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go package unix import "syscall" const ( - AF_ALG = 0x26 - AF_APPLETALK = 0x5 - AF_ASH = 0x12 - AF_ATMPVC = 0x8 - AF_ATMSVC = 0x14 - AF_AX25 = 0x3 - AF_BLUETOOTH = 0x1f - AF_BRIDGE = 0x7 - AF_CAIF = 0x25 - AF_CAN = 0x1d - AF_DECnet = 0xc - AF_ECONET = 0x13 - AF_FILE = 0x1 - AF_IB = 0x1b - AF_IEEE802154 = 0x24 - AF_INET = 0x2 - AF_INET6 = 0xa - AF_IPX = 0x4 - AF_IRDA = 0x17 - AF_ISDN = 0x22 - AF_IUCV = 0x20 - AF_KEY = 0xf - AF_LLC = 0x1a - AF_LOCAL = 0x1 - AF_MAX = 0x29 - AF_MPLS = 0x1c - AF_NETBEUI = 0xd - AF_NETLINK = 0x10 - AF_NETROM = 0x6 - AF_NFC = 0x27 - AF_PACKET = 0x11 - AF_PHONET = 0x23 - AF_PPPOX = 0x18 - AF_RDS = 0x15 - AF_ROSE = 0xb - AF_ROUTE = 0x10 - AF_RXRPC = 0x21 - AF_SECURITY = 0xe - AF_SNA = 0x16 - AF_TIPC = 0x1e - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_VSOCK = 0x28 - AF_WANPIPE = 0x19 - AF_X25 = 0x9 - ARPHRD_6LOWPAN = 0x339 - ARPHRD_ADAPT = 0x108 - ARPHRD_APPLETLK = 0x8 - ARPHRD_ARCNET = 0x7 - ARPHRD_ASH = 0x30d - ARPHRD_ATM = 0x13 - ARPHRD_AX25 = 0x3 - ARPHRD_BIF = 0x307 - ARPHRD_CAIF = 0x336 - ARPHRD_CAN = 0x118 - ARPHRD_CHAOS = 0x5 - ARPHRD_CISCO = 0x201 - ARPHRD_CSLIP = 0x101 - ARPHRD_CSLIP6 = 0x103 - ARPHRD_DDCMP = 0x205 - ARPHRD_DLCI = 0xf - ARPHRD_ECONET = 0x30e - ARPHRD_EETHER = 0x2 - ARPHRD_ETHER = 0x1 - ARPHRD_EUI64 = 0x1b - ARPHRD_FCAL = 0x311 - ARPHRD_FCFABRIC = 0x313 - ARPHRD_FCPL = 0x312 - ARPHRD_FCPP = 0x310 - ARPHRD_FDDI = 0x306 - ARPHRD_FRAD = 0x302 - ARPHRD_HDLC = 0x201 - ARPHRD_HIPPI = 0x30c - ARPHRD_HWX25 = 0x110 - ARPHRD_IEEE1394 = 0x18 - ARPHRD_IEEE802 = 0x6 - ARPHRD_IEEE80211 = 0x321 - ARPHRD_IEEE80211_PRISM = 0x322 - ARPHRD_IEEE80211_RADIOTAP = 0x323 - ARPHRD_IEEE802154 = 0x324 - ARPHRD_IEEE802154_MONITOR = 0x325 - ARPHRD_IEEE802_TR = 0x320 - ARPHRD_INFINIBAND = 0x20 - ARPHRD_IP6GRE = 0x337 - ARPHRD_IPDDP = 0x309 - ARPHRD_IPGRE = 0x30a - ARPHRD_IRDA = 0x30f - ARPHRD_LAPB = 0x204 - ARPHRD_LOCALTLK = 0x305 - ARPHRD_LOOPBACK = 0x304 - ARPHRD_METRICOM = 0x17 - ARPHRD_NETLINK = 0x338 - ARPHRD_NETROM = 0x0 - ARPHRD_NONE = 0xfffe - ARPHRD_PHONET = 0x334 - ARPHRD_PHONET_PIPE = 0x335 - ARPHRD_PIMREG = 0x30b - ARPHRD_PPP = 0x200 - ARPHRD_PRONET = 0x4 - ARPHRD_RAWHDLC = 0x206 - ARPHRD_ROSE = 0x10e - ARPHRD_RSRVD = 0x104 - ARPHRD_SIT = 0x308 - ARPHRD_SKIP = 0x303 - ARPHRD_SLIP = 0x100 - ARPHRD_SLIP6 = 0x102 - ARPHRD_TUNNEL = 0x300 - ARPHRD_TUNNEL6 = 0x301 - ARPHRD_VOID = 0xffff - ARPHRD_X25 = 0x10f - B0 = 0x0 - B1000000 = 0x1008 - B110 = 0x3 - B115200 = 0x1002 - B1152000 = 0x1009 - B1200 = 0x9 - B134 = 0x4 - B150 = 0x5 - B1500000 = 0x100a - B1800 = 0xa - B19200 = 0xe - B200 = 0x6 - B2000000 = 0x100b - B230400 = 0x1003 - B2400 = 0xb - B2500000 = 0x100c - B300 = 0x7 - B3000000 = 0x100d - B3500000 = 0x100e - B38400 = 0xf - B4000000 = 0x100f - B460800 = 0x1004 - B4800 = 0xc - B50 = 0x1 - B500000 = 0x1005 - B57600 = 0x1001 - B576000 = 0x1006 - B600 = 0x8 - B75 = 0x2 - B921600 = 0x1007 - B9600 = 0xd - BOTHER = 0x1000 - BPF_A = 0x10 - BPF_ABS = 0x20 - BPF_ADD = 0x0 - BPF_ALU = 0x4 - BPF_AND = 0x50 - BPF_B = 0x10 - BPF_DIV = 0x30 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JMP = 0x5 - BPF_JSET = 0x40 - BPF_K = 0x0 - BPF_LD = 0x0 - BPF_LDX = 0x1 - BPF_LEN = 0x80 - BPF_LL_OFF = -0x200000 - BPF_LSH = 0x60 - BPF_MAJOR_VERSION = 0x1 - BPF_MAXINSNS = 0x1000 - BPF_MEM = 0x60 - BPF_MEMWORDS = 0x10 - BPF_MINOR_VERSION = 0x1 - BPF_MISC = 0x7 - BPF_MOD = 0x90 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_OR = 0x40 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAX = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XOR = 0xa0 - BRKINT = 0x2 - BS0 = 0x0 - BS1 = 0x2000 - BSDLY = 0x2000 - CBAUD = 0x100f - CBAUDEX = 0x1000 - CFLUSH = 0xf - CIBAUD = 0x100f0000 - CLOCAL = 0x800 - CLOCK_BOOTTIME = 0x7 - CLOCK_BOOTTIME_ALARM = 0x9 - CLOCK_DEFAULT = 0x0 - CLOCK_EXT = 0x1 - CLOCK_INT = 0x2 - CLOCK_MONOTONIC = 0x1 - CLOCK_MONOTONIC_COARSE = 0x6 - CLOCK_MONOTONIC_RAW = 0x4 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_REALTIME_ALARM = 0x8 - CLOCK_REALTIME_COARSE = 0x5 - CLOCK_TAI = 0xb - CLOCK_THREAD_CPUTIME_ID = 0x3 - CLOCK_TXFROMRX = 0x4 - CLOCK_TXINT = 0x3 - CLONE_CHILD_CLEARTID = 0x200000 - CLONE_CHILD_SETTID = 0x1000000 - CLONE_DETACHED = 0x400000 - CLONE_FILES = 0x400 - CLONE_FS = 0x200 - CLONE_IO = 0x80000000 - CLONE_NEWCGROUP = 0x2000000 - CLONE_NEWIPC = 0x8000000 - CLONE_NEWNET = 0x40000000 - CLONE_NEWNS = 0x20000 - CLONE_NEWPID = 0x20000000 - CLONE_NEWUSER = 0x10000000 - CLONE_NEWUTS = 0x4000000 - CLONE_PARENT = 0x8000 - CLONE_PARENT_SETTID = 0x100000 - CLONE_PTRACE = 0x2000 - CLONE_SETTLS = 0x80000 - CLONE_SIGHAND = 0x800 - CLONE_SYSVSEM = 0x40000 - CLONE_THREAD = 0x10000 - CLONE_UNTRACED = 0x800000 - CLONE_VFORK = 0x4000 - CLONE_VM = 0x100 - CMSPAR = 0x40000000 - CR0 = 0x0 - CR1 = 0x200 - CR2 = 0x400 - CR3 = 0x600 - CRDLY = 0x600 - CREAD = 0x80 - CRTSCTS = 0x80000000 - CS5 = 0x0 - CS6 = 0x10 - CS7 = 0x20 - CS8 = 0x30 - CSIGNAL = 0xff - CSIZE = 0x30 - CSTART = 0x11 - CSTATUS = 0x0 - CSTOP = 0x13 - CSTOPB = 0x40 - CSUSP = 0x1a - DT_BLK = 0x6 - DT_CHR = 0x2 - DT_DIR = 0x4 - DT_FIFO = 0x1 - DT_LNK = 0xa - DT_REG = 0x8 - DT_SOCK = 0xc - DT_UNKNOWN = 0x0 - DT_WHT = 0xe - ECHO = 0x8 - ECHOCTL = 0x200 - ECHOE = 0x10 - ECHOK = 0x20 - ECHOKE = 0x800 - ECHONL = 0x40 - ECHOPRT = 0x400 - ENCODING_DEFAULT = 0x0 - ENCODING_FM_MARK = 0x3 - ENCODING_FM_SPACE = 0x4 - ENCODING_MANCHESTER = 0x5 - ENCODING_NRZ = 0x1 - ENCODING_NRZI = 0x2 - EPOLLERR = 0x8 - EPOLLET = 0x80000000 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLONESHOT = 0x40000000 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDHUP = 0x2000 - EPOLLRDNORM = 0x40 - EPOLLWAKEUP = 0x20000000 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CLOEXEC = 0x80000 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - ETH_P_1588 = 0x88f7 - ETH_P_8021AD = 0x88a8 - ETH_P_8021AH = 0x88e7 - ETH_P_8021Q = 0x8100 - ETH_P_80221 = 0x8917 - ETH_P_802_2 = 0x4 - ETH_P_802_3 = 0x1 - ETH_P_802_3_MIN = 0x600 - ETH_P_802_EX1 = 0x88b5 - ETH_P_AARP = 0x80f3 - ETH_P_AF_IUCV = 0xfbfb - ETH_P_ALL = 0x3 - ETH_P_AOE = 0x88a2 - ETH_P_ARCNET = 0x1a - ETH_P_ARP = 0x806 - ETH_P_ATALK = 0x809b - ETH_P_ATMFATE = 0x8884 - ETH_P_ATMMPOA = 0x884c - ETH_P_AX25 = 0x2 - ETH_P_BATMAN = 0x4305 - ETH_P_BPQ = 0x8ff - ETH_P_CAIF = 0xf7 - ETH_P_CAN = 0xc - ETH_P_CANFD = 0xd - ETH_P_CONTROL = 0x16 - ETH_P_CUST = 0x6006 - ETH_P_DDCMP = 0x6 - ETH_P_DEC = 0x6000 - ETH_P_DIAG = 0x6005 - ETH_P_DNA_DL = 0x6001 - ETH_P_DNA_RC = 0x6002 - ETH_P_DNA_RT = 0x6003 - ETH_P_DSA = 0x1b - ETH_P_ECONET = 0x18 - ETH_P_EDSA = 0xdada - ETH_P_FCOE = 0x8906 - ETH_P_FIP = 0x8914 - ETH_P_HDLC = 0x19 - ETH_P_IEEE802154 = 0xf6 - ETH_P_IEEEPUP = 0xa00 - ETH_P_IEEEPUPAT = 0xa01 - ETH_P_IP = 0x800 - ETH_P_IPV6 = 0x86dd - ETH_P_IPX = 0x8137 - ETH_P_IRDA = 0x17 - ETH_P_LAT = 0x6004 - ETH_P_LINK_CTL = 0x886c - ETH_P_LOCALTALK = 0x9 - ETH_P_LOOP = 0x60 - ETH_P_LOOPBACK = 0x9000 - ETH_P_MOBITEX = 0x15 - ETH_P_MPLS_MC = 0x8848 - ETH_P_MPLS_UC = 0x8847 - ETH_P_MVRP = 0x88f5 - ETH_P_PAE = 0x888e - ETH_P_PAUSE = 0x8808 - ETH_P_PHONET = 0xf5 - ETH_P_PPPTALK = 0x10 - ETH_P_PPP_DISC = 0x8863 - ETH_P_PPP_MP = 0x8 - ETH_P_PPP_SES = 0x8864 - ETH_P_PRP = 0x88fb - ETH_P_PUP = 0x200 - ETH_P_PUPAT = 0x201 - ETH_P_QINQ1 = 0x9100 - ETH_P_QINQ2 = 0x9200 - ETH_P_QINQ3 = 0x9300 - ETH_P_RARP = 0x8035 - ETH_P_SCA = 0x6007 - ETH_P_SLOW = 0x8809 - ETH_P_SNAP = 0x5 - ETH_P_TDLS = 0x890d - ETH_P_TEB = 0x6558 - ETH_P_TIPC = 0x88ca - ETH_P_TRAILER = 0x1c - ETH_P_TR_802_2 = 0x11 - ETH_P_TSN = 0x22f0 - ETH_P_WAN_PPP = 0x7 - ETH_P_WCCP = 0x883e - ETH_P_X25 = 0x805 - ETH_P_XDSA = 0xf8 - EXTA = 0xe - EXTB = 0xf - EXTPROC = 0x10000 - FD_CLOEXEC = 0x1 - FD_SETSIZE = 0x400 - FF0 = 0x0 - FF1 = 0x8000 - FFDLY = 0x8000 - FLUSHO = 0x1000 - F_DUPFD = 0x0 - F_DUPFD_CLOEXEC = 0x406 - F_EXLCK = 0x4 - F_GETFD = 0x1 - F_GETFL = 0x3 - F_GETLEASE = 0x401 - F_GETLK = 0x5 - F_GETLK64 = 0x5 - F_GETOWN = 0x9 - F_GETOWN_EX = 0x10 - F_GETPIPE_SZ = 0x408 - F_GETSIG = 0xb - F_LOCK = 0x1 - F_NOTIFY = 0x402 - F_OFD_GETLK = 0x24 - F_OFD_SETLK = 0x25 - F_OFD_SETLKW = 0x26 - F_OK = 0x0 - F_RDLCK = 0x0 - F_SETFD = 0x2 - F_SETFL = 0x4 - F_SETLEASE = 0x400 - F_SETLK = 0x6 - F_SETLK64 = 0x6 - F_SETLKW = 0x7 - F_SETLKW64 = 0x7 - F_SETOWN = 0x8 - F_SETOWN_EX = 0xf - F_SETPIPE_SZ = 0x407 - F_SETSIG = 0xa - F_SHLCK = 0x8 - F_TEST = 0x3 - F_TLOCK = 0x2 - F_ULOCK = 0x0 - F_UNLCK = 0x2 - F_WRLCK = 0x1 - HUPCL = 0x400 - IBSHIFT = 0x10 - ICANON = 0x2 - ICMPV6_FILTER = 0x1 - ICRNL = 0x100 - IEXTEN = 0x8000 - IFA_F_DADFAILED = 0x8 - IFA_F_DEPRECATED = 0x20 - IFA_F_HOMEADDRESS = 0x10 - IFA_F_MANAGETEMPADDR = 0x100 - IFA_F_MCAUTOJOIN = 0x400 - IFA_F_NODAD = 0x2 - IFA_F_NOPREFIXROUTE = 0x200 - IFA_F_OPTIMISTIC = 0x4 - IFA_F_PERMANENT = 0x80 - IFA_F_SECONDARY = 0x1 - IFA_F_STABLE_PRIVACY = 0x800 - IFA_F_TEMPORARY = 0x1 - IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 - IFF_ALLMULTI = 0x200 - IFF_ATTACH_QUEUE = 0x200 - IFF_AUTOMEDIA = 0x4000 - IFF_BROADCAST = 0x2 - IFF_DEBUG = 0x4 - IFF_DETACH_QUEUE = 0x400 - IFF_DORMANT = 0x20000 - IFF_DYNAMIC = 0x8000 - IFF_ECHO = 0x40000 - IFF_LOOPBACK = 0x8 - IFF_LOWER_UP = 0x10000 - IFF_MASTER = 0x400 - IFF_MULTICAST = 0x1000 - IFF_MULTI_QUEUE = 0x100 - IFF_NOARP = 0x80 - IFF_NOFILTER = 0x1000 - IFF_NOTRAILERS = 0x20 - IFF_NO_PI = 0x1000 - IFF_ONE_QUEUE = 0x2000 - IFF_PERSIST = 0x800 - IFF_POINTOPOINT = 0x10 - IFF_PORTSEL = 0x2000 - IFF_PROMISC = 0x100 - IFF_RUNNING = 0x40 - IFF_SLAVE = 0x800 - IFF_TAP = 0x2 - IFF_TUN = 0x1 - IFF_TUN_EXCL = 0x8000 - IFF_UP = 0x1 - IFF_VNET_HDR = 0x4000 - IFF_VOLATILE = 0x70c5a - IFNAMSIZ = 0x10 - IGNBRK = 0x1 - IGNCR = 0x80 - IGNPAR = 0x4 - IMAXBEL = 0x2000 - INLCR = 0x40 - INPCK = 0x10 - IN_ACCESS = 0x1 - IN_ALL_EVENTS = 0xfff - IN_ATTRIB = 0x4 - IN_CLASSA_HOST = 0xffffff - IN_CLASSA_MAX = 0x80 - IN_CLASSA_NET = 0xff000000 - IN_CLASSA_NSHIFT = 0x18 - IN_CLASSB_HOST = 0xffff - IN_CLASSB_MAX = 0x10000 - IN_CLASSB_NET = 0xffff0000 - IN_CLASSB_NSHIFT = 0x10 - IN_CLASSC_HOST = 0xff - IN_CLASSC_NET = 0xffffff00 - IN_CLASSC_NSHIFT = 0x8 - IN_CLOEXEC = 0x80000 - IN_CLOSE = 0x18 - IN_CLOSE_NOWRITE = 0x10 - IN_CLOSE_WRITE = 0x8 - IN_CREATE = 0x100 - IN_DELETE = 0x200 - IN_DELETE_SELF = 0x400 - IN_DONT_FOLLOW = 0x2000000 - IN_EXCL_UNLINK = 0x4000000 - IN_IGNORED = 0x8000 - IN_ISDIR = 0x40000000 - IN_LOOPBACKNET = 0x7f - IN_MASK_ADD = 0x20000000 - IN_MODIFY = 0x2 - IN_MOVE = 0xc0 - IN_MOVED_FROM = 0x40 - IN_MOVED_TO = 0x80 - IN_MOVE_SELF = 0x800 - IN_NONBLOCK = 0x800 - IN_ONESHOT = 0x80000000 - IN_ONLYDIR = 0x1000000 - IN_OPEN = 0x20 - IN_Q_OVERFLOW = 0x4000 - IN_UNMOUNT = 0x2000 - IPPROTO_AH = 0x33 - IPPROTO_BEETPH = 0x5e - IPPROTO_COMP = 0x6c - IPPROTO_DCCP = 0x21 - IPPROTO_DSTOPTS = 0x3c - IPPROTO_EGP = 0x8 - IPPROTO_ENCAP = 0x62 - IPPROTO_ESP = 0x32 - IPPROTO_FRAGMENT = 0x2c - IPPROTO_GRE = 0x2f - IPPROTO_HOPOPTS = 0x0 - IPPROTO_ICMP = 0x1 - IPPROTO_ICMPV6 = 0x3a - IPPROTO_IDP = 0x16 - IPPROTO_IGMP = 0x2 - IPPROTO_IP = 0x0 - IPPROTO_IPIP = 0x4 - IPPROTO_IPV6 = 0x29 - IPPROTO_MH = 0x87 - IPPROTO_MPLS = 0x89 - IPPROTO_MTP = 0x5c - IPPROTO_NONE = 0x3b - IPPROTO_PIM = 0x67 - IPPROTO_PUP = 0xc - IPPROTO_RAW = 0xff - IPPROTO_ROUTING = 0x2b - IPPROTO_RSVP = 0x2e - IPPROTO_SCTP = 0x84 - IPPROTO_TCP = 0x6 - IPPROTO_TP = 0x1d - IPPROTO_UDP = 0x11 - IPPROTO_UDPLITE = 0x88 - IPV6_2292DSTOPTS = 0x4 - IPV6_2292HOPLIMIT = 0x8 - IPV6_2292HOPOPTS = 0x3 - IPV6_2292PKTINFO = 0x2 - IPV6_2292PKTOPTIONS = 0x6 - IPV6_2292RTHDR = 0x5 - IPV6_ADDRFORM = 0x1 - IPV6_ADD_MEMBERSHIP = 0x14 - IPV6_AUTHHDR = 0xa - IPV6_CHECKSUM = 0x7 - IPV6_DONTFRAG = 0x3e - IPV6_DROP_MEMBERSHIP = 0x15 - IPV6_DSTOPTS = 0x3b - IPV6_HOPLIMIT = 0x34 - IPV6_HOPOPTS = 0x36 - IPV6_IPSEC_POLICY = 0x22 - IPV6_JOIN_ANYCAST = 0x1b - IPV6_JOIN_GROUP = 0x14 - IPV6_LEAVE_ANYCAST = 0x1c - IPV6_LEAVE_GROUP = 0x15 - IPV6_MTU = 0x18 - IPV6_MTU_DISCOVER = 0x17 - IPV6_MULTICAST_HOPS = 0x12 - IPV6_MULTICAST_IF = 0x11 - IPV6_MULTICAST_LOOP = 0x13 - IPV6_NEXTHOP = 0x9 - IPV6_PATHMTU = 0x3d - IPV6_PKTINFO = 0x32 - IPV6_PMTUDISC_DO = 0x2 - IPV6_PMTUDISC_DONT = 0x0 - IPV6_PMTUDISC_INTERFACE = 0x4 - IPV6_PMTUDISC_OMIT = 0x5 - IPV6_PMTUDISC_PROBE = 0x3 - IPV6_PMTUDISC_WANT = 0x1 - IPV6_RECVDSTOPTS = 0x3a - IPV6_RECVERR = 0x19 - IPV6_RECVHOPLIMIT = 0x33 - IPV6_RECVHOPOPTS = 0x35 - IPV6_RECVPATHMTU = 0x3c - IPV6_RECVPKTINFO = 0x31 - IPV6_RECVRTHDR = 0x38 - IPV6_RECVTCLASS = 0x42 - IPV6_ROUTER_ALERT = 0x16 - IPV6_RTHDR = 0x39 - IPV6_RTHDRDSTOPTS = 0x37 - IPV6_RTHDR_LOOSE = 0x0 - IPV6_RTHDR_STRICT = 0x1 - IPV6_RTHDR_TYPE_0 = 0x0 - IPV6_RXDSTOPTS = 0x3b - IPV6_RXHOPOPTS = 0x36 - IPV6_TCLASS = 0x43 - IPV6_UNICAST_HOPS = 0x10 - IPV6_V6ONLY = 0x1a - IPV6_XFRM_POLICY = 0x23 - IP_ADD_MEMBERSHIP = 0x23 - IP_ADD_SOURCE_MEMBERSHIP = 0x27 - IP_BIND_ADDRESS_NO_PORT = 0x18 - IP_BLOCK_SOURCE = 0x26 - IP_CHECKSUM = 0x17 - IP_DEFAULT_MULTICAST_LOOP = 0x1 - IP_DEFAULT_MULTICAST_TTL = 0x1 - IP_DF = 0x4000 - IP_DROP_MEMBERSHIP = 0x24 - IP_DROP_SOURCE_MEMBERSHIP = 0x28 - IP_FREEBIND = 0xf - IP_HDRINCL = 0x3 - IP_IPSEC_POLICY = 0x10 - IP_MAXPACKET = 0xffff - IP_MAX_MEMBERSHIPS = 0x14 - IP_MF = 0x2000 - IP_MINTTL = 0x15 - IP_MSFILTER = 0x29 - IP_MSS = 0x240 - IP_MTU = 0xe - IP_MTU_DISCOVER = 0xa - IP_MULTICAST_ALL = 0x31 - IP_MULTICAST_IF = 0x20 - IP_MULTICAST_LOOP = 0x22 - IP_MULTICAST_TTL = 0x21 - IP_NODEFRAG = 0x16 - IP_OFFMASK = 0x1fff - IP_OPTIONS = 0x4 - IP_ORIGDSTADDR = 0x14 - IP_PASSSEC = 0x12 - IP_PKTINFO = 0x8 - IP_PKTOPTIONS = 0x9 - IP_PMTUDISC = 0xa - IP_PMTUDISC_DO = 0x2 - IP_PMTUDISC_DONT = 0x0 - IP_PMTUDISC_INTERFACE = 0x4 - IP_PMTUDISC_OMIT = 0x5 - IP_PMTUDISC_PROBE = 0x3 - IP_PMTUDISC_WANT = 0x1 - IP_RECVERR = 0xb - IP_RECVOPTS = 0x6 - IP_RECVORIGDSTADDR = 0x14 - IP_RECVRETOPTS = 0x7 - IP_RECVTOS = 0xd - IP_RECVTTL = 0xc - IP_RETOPTS = 0x7 - IP_RF = 0x8000 - IP_ROUTER_ALERT = 0x5 - IP_TOS = 0x1 - IP_TRANSPARENT = 0x13 - IP_TTL = 0x2 - IP_UNBLOCK_SOURCE = 0x25 - IP_UNICAST_IF = 0x32 - IP_XFRM_POLICY = 0x11 - ISIG = 0x1 - ISTRIP = 0x20 - IUCLC = 0x200 - IUTF8 = 0x4000 - IXANY = 0x800 - IXOFF = 0x1000 - IXON = 0x400 - LINUX_REBOOT_CMD_CAD_OFF = 0x0 - LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef - LINUX_REBOOT_CMD_HALT = 0xcdef0123 - LINUX_REBOOT_CMD_KEXEC = 0x45584543 - LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc - LINUX_REBOOT_CMD_RESTART = 0x1234567 - LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 - LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 - LINUX_REBOOT_MAGIC1 = 0xfee1dead - LINUX_REBOOT_MAGIC2 = 0x28121969 - LOCK_EX = 0x2 - LOCK_NB = 0x4 - LOCK_SH = 0x1 - LOCK_UN = 0x8 - MADV_DODUMP = 0x11 - MADV_DOFORK = 0xb - MADV_DONTDUMP = 0x10 - MADV_DONTFORK = 0xa - MADV_DONTNEED = 0x4 - MADV_HUGEPAGE = 0xe - MADV_HWPOISON = 0x64 - MADV_MERGEABLE = 0xc - MADV_NOHUGEPAGE = 0xf - MADV_NORMAL = 0x0 - MADV_RANDOM = 0x1 - MADV_REMOVE = 0x9 - MADV_SEQUENTIAL = 0x2 - MADV_UNMERGEABLE = 0xd - MADV_WILLNEED = 0x3 - MAP_ANON = 0x20 - MAP_ANONYMOUS = 0x20 - MAP_DENYWRITE = 0x800 - MAP_EXECUTABLE = 0x1000 - MAP_FILE = 0x0 - MAP_FIXED = 0x10 - MAP_GROWSDOWN = 0x100 - MAP_HUGETLB = 0x40000 - MAP_HUGE_MASK = 0x3f - MAP_HUGE_SHIFT = 0x1a - MAP_LOCKED = 0x2000 - MAP_NONBLOCK = 0x10000 - MAP_NORESERVE = 0x4000 - MAP_POPULATE = 0x8000 - MAP_PRIVATE = 0x2 - MAP_SHARED = 0x1 - MAP_STACK = 0x20000 - MAP_TYPE = 0xf - MCL_CURRENT = 0x1 - MCL_FUTURE = 0x2 - MCL_ONFAULT = 0x4 - MNT_DETACH = 0x2 - MNT_EXPIRE = 0x4 - MNT_FORCE = 0x1 - MSG_CMSG_CLOEXEC = 0x40000000 - MSG_CONFIRM = 0x800 - MSG_CTRUNC = 0x8 - MSG_DONTROUTE = 0x4 - MSG_DONTWAIT = 0x40 - MSG_EOR = 0x80 - MSG_ERRQUEUE = 0x2000 - MSG_FASTOPEN = 0x20000000 - MSG_FIN = 0x200 - MSG_MORE = 0x8000 - MSG_NOSIGNAL = 0x4000 - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_PROXY = 0x10 - MSG_RST = 0x1000 - MSG_SYN = 0x400 - MSG_TRUNC = 0x20 - MSG_TRYHARD = 0x4 - MSG_WAITALL = 0x100 - MSG_WAITFORONE = 0x10000 - MS_ACTIVE = 0x40000000 - MS_ASYNC = 0x1 - MS_BIND = 0x1000 - MS_DIRSYNC = 0x80 - MS_INVALIDATE = 0x2 - MS_I_VERSION = 0x800000 - MS_KERNMOUNT = 0x400000 - MS_LAZYTIME = 0x2000000 - MS_MANDLOCK = 0x40 - MS_MGC_MSK = 0xffff0000 - MS_MGC_VAL = 0xc0ed0000 - MS_MOVE = 0x2000 - MS_NOATIME = 0x400 - MS_NODEV = 0x4 - MS_NODIRATIME = 0x800 - MS_NOEXEC = 0x8 - MS_NOSUID = 0x2 - MS_NOUSER = -0x80000000 - MS_POSIXACL = 0x10000 - MS_PRIVATE = 0x40000 - MS_RDONLY = 0x1 - MS_REC = 0x4000 - MS_RELATIME = 0x200000 - MS_REMOUNT = 0x20 - MS_RMT_MASK = 0x2800051 - MS_SHARED = 0x100000 - MS_SILENT = 0x8000 - MS_SLAVE = 0x80000 - MS_STRICTATIME = 0x1000000 - MS_SYNC = 0x4 - MS_SYNCHRONOUS = 0x10 - MS_UNBINDABLE = 0x20000 - NAME_MAX = 0xff - NETLINK_ADD_MEMBERSHIP = 0x1 - NETLINK_AUDIT = 0x9 - NETLINK_BROADCAST_ERROR = 0x4 - NETLINK_CAP_ACK = 0xa - NETLINK_CONNECTOR = 0xb - NETLINK_CRYPTO = 0x15 - NETLINK_DNRTMSG = 0xe - NETLINK_DROP_MEMBERSHIP = 0x2 - NETLINK_ECRYPTFS = 0x13 - NETLINK_FIB_LOOKUP = 0xa - NETLINK_FIREWALL = 0x3 - NETLINK_GENERIC = 0x10 - NETLINK_INET_DIAG = 0x4 - NETLINK_IP6_FW = 0xd - NETLINK_ISCSI = 0x8 - NETLINK_KOBJECT_UEVENT = 0xf - NETLINK_LISTEN_ALL_NSID = 0x8 - NETLINK_LIST_MEMBERSHIPS = 0x9 - NETLINK_NETFILTER = 0xc - NETLINK_NFLOG = 0x5 - NETLINK_NO_ENOBUFS = 0x5 - NETLINK_PKTINFO = 0x3 - NETLINK_RDMA = 0x14 - NETLINK_ROUTE = 0x0 - NETLINK_RX_RING = 0x6 - NETLINK_SCSITRANSPORT = 0x12 - NETLINK_SELINUX = 0x7 - NETLINK_SOCK_DIAG = 0x4 - NETLINK_TX_RING = 0x7 - NETLINK_UNUSED = 0x1 - NETLINK_USERSOCK = 0x2 - NETLINK_XFRM = 0x6 - NL0 = 0x0 - NL1 = 0x100 - NLA_ALIGNTO = 0x4 - NLA_F_NESTED = 0x8000 - NLA_F_NET_BYTEORDER = 0x4000 - NLA_HDRLEN = 0x4 - NLDLY = 0x100 - NLMSG_ALIGNTO = 0x4 - NLMSG_DONE = 0x3 - NLMSG_ERROR = 0x2 - NLMSG_HDRLEN = 0x10 - NLMSG_MIN_TYPE = 0x10 - NLMSG_NOOP = 0x1 - NLMSG_OVERRUN = 0x4 - NLM_F_ACK = 0x4 - NLM_F_APPEND = 0x800 - NLM_F_ATOMIC = 0x400 - NLM_F_CREATE = 0x400 - NLM_F_DUMP = 0x300 - NLM_F_DUMP_FILTERED = 0x20 - NLM_F_DUMP_INTR = 0x10 - NLM_F_ECHO = 0x8 - NLM_F_EXCL = 0x200 - NLM_F_MATCH = 0x200 - NLM_F_MULTI = 0x2 - NLM_F_REPLACE = 0x100 - NLM_F_REQUEST = 0x1 - NLM_F_ROOT = 0x100 - NOFLSH = 0x80 - OCRNL = 0x8 - OFDEL = 0x80 - OFILL = 0x40 - OLCUC = 0x2 - ONLCR = 0x4 - ONLRET = 0x20 - ONOCR = 0x10 - OPOST = 0x1 - O_ACCMODE = 0x3 - O_APPEND = 0x400 - O_ASYNC = 0x2000 - O_CLOEXEC = 0x80000 - O_CREAT = 0x40 - O_DIRECT = 0x4000 - O_DIRECTORY = 0x10000 - O_DSYNC = 0x1000 - O_EXCL = 0x80 - O_FSYNC = 0x101000 - O_LARGEFILE = 0x0 - O_NDELAY = 0x800 - O_NOATIME = 0x40000 - O_NOCTTY = 0x100 - O_NOFOLLOW = 0x20000 - O_NONBLOCK = 0x800 - O_PATH = 0x200000 - O_RDONLY = 0x0 - O_RDWR = 0x2 - O_RSYNC = 0x101000 - O_SYNC = 0x101000 - O_TMPFILE = 0x410000 - O_TRUNC = 0x200 - O_WRONLY = 0x1 - PACKET_ADD_MEMBERSHIP = 0x1 - PACKET_AUXDATA = 0x8 - PACKET_BROADCAST = 0x1 - PACKET_COPY_THRESH = 0x7 - PACKET_DROP_MEMBERSHIP = 0x2 - PACKET_FANOUT = 0x12 - PACKET_FANOUT_CBPF = 0x6 - PACKET_FANOUT_CPU = 0x2 - PACKET_FANOUT_DATA = 0x16 - PACKET_FANOUT_EBPF = 0x7 - PACKET_FANOUT_FLAG_DEFRAG = 0x8000 - PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 - PACKET_FANOUT_HASH = 0x0 - PACKET_FANOUT_LB = 0x1 - PACKET_FANOUT_QM = 0x5 - PACKET_FANOUT_RND = 0x4 - PACKET_FANOUT_ROLLOVER = 0x3 - PACKET_FASTROUTE = 0x6 - PACKET_HDRLEN = 0xb - PACKET_HOST = 0x0 - PACKET_KERNEL = 0x7 - PACKET_LOOPBACK = 0x5 - PACKET_LOSS = 0xe - PACKET_MR_ALLMULTI = 0x2 - PACKET_MR_MULTICAST = 0x0 - PACKET_MR_PROMISC = 0x1 - PACKET_MR_UNICAST = 0x3 - PACKET_MULTICAST = 0x2 - PACKET_ORIGDEV = 0x9 - PACKET_OTHERHOST = 0x3 - PACKET_OUTGOING = 0x4 - PACKET_QDISC_BYPASS = 0x14 - PACKET_RECV_OUTPUT = 0x3 - PACKET_RESERVE = 0xc - PACKET_ROLLOVER_STATS = 0x15 - PACKET_RX_RING = 0x5 - PACKET_STATISTICS = 0x6 - PACKET_TIMESTAMP = 0x11 - PACKET_TX_HAS_OFF = 0x13 - PACKET_TX_RING = 0xd - PACKET_TX_TIMESTAMP = 0x10 - PACKET_USER = 0x6 - PACKET_VERSION = 0xa - PACKET_VNET_HDR = 0xf - PARENB = 0x100 - PARITY_CRC16_PR0 = 0x2 - PARITY_CRC16_PR0_CCITT = 0x4 - PARITY_CRC16_PR1 = 0x3 - PARITY_CRC16_PR1_CCITT = 0x5 - PARITY_CRC32_PR0_CCITT = 0x6 - PARITY_CRC32_PR1_CCITT = 0x7 - PARITY_DEFAULT = 0x0 - PARITY_NONE = 0x1 - PARMRK = 0x8 - PARODD = 0x200 - PENDIN = 0x4000 - PRIO_PGRP = 0x1 - PRIO_PROCESS = 0x0 - PRIO_USER = 0x2 - PROT_EXEC = 0x4 - PROT_GROWSDOWN = 0x1000000 - PROT_GROWSUP = 0x2000000 - PROT_NONE = 0x0 - PROT_READ = 0x1 - PROT_WRITE = 0x2 - PR_CAPBSET_DROP = 0x18 - PR_CAPBSET_READ = 0x17 - PR_CAP_AMBIENT = 0x2f - PR_CAP_AMBIENT_CLEAR_ALL = 0x4 - PR_CAP_AMBIENT_IS_SET = 0x1 - PR_CAP_AMBIENT_LOWER = 0x3 - PR_CAP_AMBIENT_RAISE = 0x2 - PR_ENDIAN_BIG = 0x0 - PR_ENDIAN_LITTLE = 0x1 - PR_ENDIAN_PPC_LITTLE = 0x2 - PR_FPEMU_NOPRINT = 0x1 - PR_FPEMU_SIGFPE = 0x2 - PR_FP_EXC_ASYNC = 0x2 - PR_FP_EXC_DISABLED = 0x0 - PR_FP_EXC_DIV = 0x10000 - PR_FP_EXC_INV = 0x100000 - PR_FP_EXC_NONRECOV = 0x1 - PR_FP_EXC_OVF = 0x20000 - PR_FP_EXC_PRECISE = 0x3 - PR_FP_EXC_RES = 0x80000 - PR_FP_EXC_SW_ENABLE = 0x80 - PR_FP_EXC_UND = 0x40000 - PR_FP_MODE_FR = 0x1 - PR_FP_MODE_FRE = 0x2 - PR_GET_CHILD_SUBREAPER = 0x25 - PR_GET_DUMPABLE = 0x3 - PR_GET_ENDIAN = 0x13 - PR_GET_FPEMU = 0x9 - PR_GET_FPEXC = 0xb - PR_GET_FP_MODE = 0x2e - PR_GET_KEEPCAPS = 0x7 - PR_GET_NAME = 0x10 - PR_GET_NO_NEW_PRIVS = 0x27 - PR_GET_PDEATHSIG = 0x2 - PR_GET_SECCOMP = 0x15 - PR_GET_SECUREBITS = 0x1b - PR_GET_THP_DISABLE = 0x2a - PR_GET_TID_ADDRESS = 0x28 - PR_GET_TIMERSLACK = 0x1e - PR_GET_TIMING = 0xd - PR_GET_TSC = 0x19 - PR_GET_UNALIGN = 0x5 - PR_MCE_KILL = 0x21 - PR_MCE_KILL_CLEAR = 0x0 - PR_MCE_KILL_DEFAULT = 0x2 - PR_MCE_KILL_EARLY = 0x1 - PR_MCE_KILL_GET = 0x22 - PR_MCE_KILL_LATE = 0x0 - PR_MCE_KILL_SET = 0x1 - PR_MPX_DISABLE_MANAGEMENT = 0x2c - PR_MPX_ENABLE_MANAGEMENT = 0x2b - PR_SET_CHILD_SUBREAPER = 0x24 - PR_SET_DUMPABLE = 0x4 - PR_SET_ENDIAN = 0x14 - PR_SET_FPEMU = 0xa - PR_SET_FPEXC = 0xc - PR_SET_FP_MODE = 0x2d - PR_SET_KEEPCAPS = 0x8 - PR_SET_MM = 0x23 - PR_SET_MM_ARG_END = 0x9 - PR_SET_MM_ARG_START = 0x8 - PR_SET_MM_AUXV = 0xc - PR_SET_MM_BRK = 0x7 - PR_SET_MM_END_CODE = 0x2 - PR_SET_MM_END_DATA = 0x4 - PR_SET_MM_ENV_END = 0xb - PR_SET_MM_ENV_START = 0xa - PR_SET_MM_EXE_FILE = 0xd - PR_SET_MM_MAP = 0xe - PR_SET_MM_MAP_SIZE = 0xf - PR_SET_MM_START_BRK = 0x6 - PR_SET_MM_START_CODE = 0x1 - PR_SET_MM_START_DATA = 0x3 - PR_SET_MM_START_STACK = 0x5 - PR_SET_NAME = 0xf - PR_SET_NO_NEW_PRIVS = 0x26 - PR_SET_PDEATHSIG = 0x1 - PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 - PR_SET_SECCOMP = 0x16 - PR_SET_SECUREBITS = 0x1c - PR_SET_THP_DISABLE = 0x29 - PR_SET_TIMERSLACK = 0x1d - PR_SET_TIMING = 0xe - PR_SET_TSC = 0x1a - PR_SET_UNALIGN = 0x6 - PR_TASK_PERF_EVENTS_DISABLE = 0x1f - PR_TASK_PERF_EVENTS_ENABLE = 0x20 - PR_TIMING_STATISTICAL = 0x0 - PR_TIMING_TIMESTAMP = 0x1 - PR_TSC_ENABLE = 0x1 - PR_TSC_SIGSEGV = 0x2 - PR_UNALIGN_NOPRINT = 0x1 - PR_UNALIGN_SIGBUS = 0x2 - PTRACE_ATTACH = 0x10 - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0x11 - PTRACE_DISABLE_TE = 0x5010 - PTRACE_ENABLE_TE = 0x5009 - PTRACE_EVENT_CLONE = 0x3 - PTRACE_EVENT_EXEC = 0x4 - PTRACE_EVENT_EXIT = 0x6 - PTRACE_EVENT_FORK = 0x1 - PTRACE_EVENT_SECCOMP = 0x7 - PTRACE_EVENT_STOP = 0x80 - PTRACE_EVENT_VFORK = 0x2 - PTRACE_EVENT_VFORK_DONE = 0x5 - PTRACE_GETEVENTMSG = 0x4201 - PTRACE_GETREGS = 0xc - PTRACE_GETREGSET = 0x4204 - PTRACE_GETSIGINFO = 0x4202 - PTRACE_GETSIGMASK = 0x420a - PTRACE_GET_LAST_BREAK = 0x5006 - PTRACE_INTERRUPT = 0x4207 - PTRACE_KILL = 0x8 - PTRACE_LISTEN = 0x4208 - PTRACE_OLDSETOPTIONS = 0x15 - PTRACE_O_EXITKILL = 0x100000 - PTRACE_O_MASK = 0x3000ff - PTRACE_O_SUSPEND_SECCOMP = 0x200000 - PTRACE_O_TRACECLONE = 0x8 - PTRACE_O_TRACEEXEC = 0x10 - PTRACE_O_TRACEEXIT = 0x40 - PTRACE_O_TRACEFORK = 0x2 - PTRACE_O_TRACESECCOMP = 0x80 - PTRACE_O_TRACESYSGOOD = 0x1 - PTRACE_O_TRACEVFORK = 0x4 - PTRACE_O_TRACEVFORKDONE = 0x20 - PTRACE_PEEKDATA = 0x2 - PTRACE_PEEKDATA_AREA = 0x5003 - PTRACE_PEEKSIGINFO = 0x4209 - PTRACE_PEEKSIGINFO_SHARED = 0x1 - PTRACE_PEEKTEXT = 0x1 - PTRACE_PEEKTEXT_AREA = 0x5002 - PTRACE_PEEKUSR = 0x3 - PTRACE_PEEKUSR_AREA = 0x5000 - PTRACE_PEEK_SYSTEM_CALL = 0x5007 - PTRACE_POKEDATA = 0x5 - PTRACE_POKEDATA_AREA = 0x5005 - PTRACE_POKETEXT = 0x4 - PTRACE_POKETEXT_AREA = 0x5004 - PTRACE_POKEUSR = 0x6 - PTRACE_POKEUSR_AREA = 0x5001 - PTRACE_POKE_SYSTEM_CALL = 0x5008 - PTRACE_PROT = 0x15 - PTRACE_SECCOMP_GET_FILTER = 0x420c - PTRACE_SEIZE = 0x4206 - PTRACE_SETOPTIONS = 0x4200 - PTRACE_SETREGS = 0xd - PTRACE_SETREGSET = 0x4205 - PTRACE_SETSIGINFO = 0x4203 - PTRACE_SETSIGMASK = 0x420b - PTRACE_SINGLEBLOCK = 0xc - PTRACE_SINGLESTEP = 0x9 - PTRACE_SYSCALL = 0x18 - PTRACE_TE_ABORT_RAND = 0x5011 - PTRACE_TRACEME = 0x0 - PT_ACR0 = 0x90 - PT_ACR1 = 0x94 - PT_ACR10 = 0xb8 - PT_ACR11 = 0xbc - PT_ACR12 = 0xc0 - PT_ACR13 = 0xc4 - PT_ACR14 = 0xc8 - PT_ACR15 = 0xcc - PT_ACR2 = 0x98 - PT_ACR3 = 0x9c - PT_ACR4 = 0xa0 - PT_ACR5 = 0xa4 - PT_ACR6 = 0xa8 - PT_ACR7 = 0xac - PT_ACR8 = 0xb0 - PT_ACR9 = 0xb4 - PT_CR_10 = 0x168 - PT_CR_11 = 0x170 - PT_CR_9 = 0x160 - PT_ENDREGS = 0x1af - PT_FPC = 0xd8 - PT_FPR0 = 0xe0 - PT_FPR1 = 0xe8 - PT_FPR10 = 0x130 - PT_FPR11 = 0x138 - PT_FPR12 = 0x140 - PT_FPR13 = 0x148 - PT_FPR14 = 0x150 - PT_FPR15 = 0x158 - PT_FPR2 = 0xf0 - PT_FPR3 = 0xf8 - PT_FPR4 = 0x100 - PT_FPR5 = 0x108 - PT_FPR6 = 0x110 - PT_FPR7 = 0x118 - PT_FPR8 = 0x120 - PT_FPR9 = 0x128 - PT_GPR0 = 0x10 - PT_GPR1 = 0x18 - PT_GPR10 = 0x60 - PT_GPR11 = 0x68 - PT_GPR12 = 0x70 - PT_GPR13 = 0x78 - PT_GPR14 = 0x80 - PT_GPR15 = 0x88 - PT_GPR2 = 0x20 - PT_GPR3 = 0x28 - PT_GPR4 = 0x30 - PT_GPR5 = 0x38 - PT_GPR6 = 0x40 - PT_GPR7 = 0x48 - PT_GPR8 = 0x50 - PT_GPR9 = 0x58 - PT_IEEE_IP = 0x1a8 - PT_LASTOFF = 0x1a8 - PT_ORIGGPR2 = 0xd0 - PT_PSWADDR = 0x8 - PT_PSWMASK = 0x0 - RLIMIT_AS = 0x9 - RLIMIT_CORE = 0x4 - RLIMIT_CPU = 0x0 - RLIMIT_DATA = 0x2 - RLIMIT_FSIZE = 0x1 - RLIMIT_NOFILE = 0x7 - RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 - RTAX_ADVMSS = 0x8 - RTAX_CC_ALGO = 0x10 - RTAX_CWND = 0x7 - RTAX_FEATURES = 0xc - RTAX_FEATURE_ALLFRAG = 0x8 - RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_MASK = 0xf - RTAX_FEATURE_SACK = 0x2 - RTAX_FEATURE_TIMESTAMP = 0x4 - RTAX_HOPLIMIT = 0xa - RTAX_INITCWND = 0xb - RTAX_INITRWND = 0xe - RTAX_LOCK = 0x1 - RTAX_MAX = 0x10 - RTAX_MTU = 0x2 - RTAX_QUICKACK = 0xf - RTAX_REORDERING = 0x9 - RTAX_RTO_MIN = 0xd - RTAX_RTT = 0x4 - RTAX_RTTVAR = 0x5 - RTAX_SSTHRESH = 0x6 - RTAX_UNSPEC = 0x0 - RTAX_WINDOW = 0x3 - RTA_ALIGNTO = 0x4 - RTA_MAX = 0x16 - RTCF_DIRECTSRC = 0x4000000 - RTCF_DOREDIRECT = 0x1000000 - RTCF_LOG = 0x2000000 - RTCF_MASQ = 0x400000 - RTCF_NAT = 0x800000 - RTCF_VALVE = 0x200000 - RTF_ADDRCLASSMASK = 0xf8000000 - RTF_ADDRCONF = 0x40000 - RTF_ALLONLINK = 0x20000 - RTF_BROADCAST = 0x10000000 - RTF_CACHE = 0x1000000 - RTF_DEFAULT = 0x10000 - RTF_DYNAMIC = 0x10 - RTF_FLOW = 0x2000000 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_INTERFACE = 0x40000000 - RTF_IRTT = 0x100 - RTF_LINKRT = 0x100000 - RTF_LOCAL = 0x80000000 - RTF_MODIFIED = 0x20 - RTF_MSS = 0x40 - RTF_MTU = 0x40 - RTF_MULTICAST = 0x20000000 - RTF_NAT = 0x8000000 - RTF_NOFORWARD = 0x1000 - RTF_NONEXTHOP = 0x200000 - RTF_NOPMTUDISC = 0x4000 - RTF_POLICY = 0x4000000 - RTF_REINSTATE = 0x8 - RTF_REJECT = 0x200 - RTF_STATIC = 0x400 - RTF_THROW = 0x2000 - RTF_UP = 0x1 - RTF_WINDOW = 0x80 - RTF_XRESOLVE = 0x800 - RTM_BASE = 0x10 - RTM_DELACTION = 0x31 - RTM_DELADDR = 0x15 - RTM_DELADDRLABEL = 0x49 - RTM_DELLINK = 0x11 - RTM_DELMDB = 0x55 - RTM_DELNEIGH = 0x1d - RTM_DELNSID = 0x59 - RTM_DELQDISC = 0x25 - RTM_DELROUTE = 0x19 - RTM_DELRULE = 0x21 - RTM_DELTCLASS = 0x29 - RTM_DELTFILTER = 0x2d - RTM_F_CLONED = 0x200 - RTM_F_EQUALIZE = 0x400 - RTM_F_LOOKUP_TABLE = 0x1000 - RTM_F_NOTIFY = 0x100 - RTM_F_PREFIX = 0x800 - RTM_GETACTION = 0x32 - RTM_GETADDR = 0x16 - RTM_GETADDRLABEL = 0x4a - RTM_GETANYCAST = 0x3e - RTM_GETDCB = 0x4e - RTM_GETLINK = 0x12 - RTM_GETMDB = 0x56 - RTM_GETMULTICAST = 0x3a - RTM_GETNEIGH = 0x1e - RTM_GETNEIGHTBL = 0x42 - RTM_GETNETCONF = 0x52 - RTM_GETNSID = 0x5a - RTM_GETQDISC = 0x26 - RTM_GETROUTE = 0x1a - RTM_GETRULE = 0x22 - RTM_GETTCLASS = 0x2a - RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5b - RTM_NEWACTION = 0x30 - RTM_NEWADDR = 0x14 - RTM_NEWADDRLABEL = 0x48 - RTM_NEWLINK = 0x10 - RTM_NEWMDB = 0x54 - RTM_NEWNDUSEROPT = 0x44 - RTM_NEWNEIGH = 0x1c - RTM_NEWNEIGHTBL = 0x40 - RTM_NEWNETCONF = 0x50 - RTM_NEWNSID = 0x58 - RTM_NEWPREFIX = 0x34 - RTM_NEWQDISC = 0x24 - RTM_NEWROUTE = 0x18 - RTM_NEWRULE = 0x20 - RTM_NEWTCLASS = 0x28 - RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x13 - RTM_NR_MSGTYPES = 0x4c - RTM_SETDCB = 0x4f - RTM_SETLINK = 0x13 - RTM_SETNEIGHTBL = 0x43 - RTNH_ALIGNTO = 0x4 - RTNH_COMPARE_MASK = 0x11 - RTNH_F_DEAD = 0x1 - RTNH_F_LINKDOWN = 0x10 - RTNH_F_OFFLOAD = 0x8 - RTNH_F_ONLINK = 0x4 - RTNH_F_PERVASIVE = 0x2 - RTN_MAX = 0xb - RTPROT_BABEL = 0x2a - RTPROT_BIRD = 0xc - RTPROT_BOOT = 0x3 - RTPROT_DHCP = 0x10 - RTPROT_DNROUTED = 0xd - RTPROT_GATED = 0x8 - RTPROT_KERNEL = 0x2 - RTPROT_MROUTED = 0x11 - RTPROT_MRT = 0xa - RTPROT_NTK = 0xf - RTPROT_RA = 0x9 - RTPROT_REDIRECT = 0x1 - RTPROT_STATIC = 0x4 - RTPROT_UNSPEC = 0x0 - RTPROT_XORP = 0xe - RTPROT_ZEBRA = 0xb - RT_CLASS_DEFAULT = 0xfd - RT_CLASS_LOCAL = 0xff - RT_CLASS_MAIN = 0xfe - RT_CLASS_MAX = 0xff - RT_CLASS_UNSPEC = 0x0 - RUSAGE_CHILDREN = -0x1 - RUSAGE_SELF = 0x0 - RUSAGE_THREAD = 0x1 - SCM_CREDENTIALS = 0x2 - SCM_RIGHTS = 0x1 - SCM_TIMESTAMP = 0x1d - SCM_TIMESTAMPING = 0x25 - SCM_TIMESTAMPNS = 0x23 - SCM_WIFI_STATUS = 0x29 - SHUT_RD = 0x0 - SHUT_RDWR = 0x2 - SHUT_WR = 0x1 - SIOCADDDLCI = 0x8980 - SIOCADDMULTI = 0x8931 - SIOCADDRT = 0x890b - SIOCATMARK = 0x8905 - SIOCDARP = 0x8953 - SIOCDELDLCI = 0x8981 - SIOCDELMULTI = 0x8932 - SIOCDELRT = 0x890c - SIOCDEVPRIVATE = 0x89f0 - SIOCDIFADDR = 0x8936 - SIOCDRARP = 0x8960 - SIOCGARP = 0x8954 - SIOCGIFADDR = 0x8915 - SIOCGIFBR = 0x8940 - SIOCGIFBRDADDR = 0x8919 - SIOCGIFCONF = 0x8912 - SIOCGIFCOUNT = 0x8938 - SIOCGIFDSTADDR = 0x8917 - SIOCGIFENCAP = 0x8925 - SIOCGIFFLAGS = 0x8913 - SIOCGIFHWADDR = 0x8927 - SIOCGIFINDEX = 0x8933 - SIOCGIFMAP = 0x8970 - SIOCGIFMEM = 0x891f - SIOCGIFMETRIC = 0x891d - SIOCGIFMTU = 0x8921 - SIOCGIFNAME = 0x8910 - SIOCGIFNETMASK = 0x891b - SIOCGIFPFLAGS = 0x8935 - SIOCGIFSLAVE = 0x8929 - SIOCGIFTXQLEN = 0x8942 - SIOCGPGRP = 0x8904 - SIOCGRARP = 0x8961 - SIOCGSTAMP = 0x8906 - SIOCGSTAMPNS = 0x8907 - SIOCPROTOPRIVATE = 0x89e0 - SIOCRTMSG = 0x890d - SIOCSARP = 0x8955 - SIOCSIFADDR = 0x8916 - SIOCSIFBR = 0x8941 - SIOCSIFBRDADDR = 0x891a - SIOCSIFDSTADDR = 0x8918 - SIOCSIFENCAP = 0x8926 - SIOCSIFFLAGS = 0x8914 - SIOCSIFHWADDR = 0x8924 - SIOCSIFHWBROADCAST = 0x8937 - SIOCSIFLINK = 0x8911 - SIOCSIFMAP = 0x8971 - SIOCSIFMEM = 0x8920 - SIOCSIFMETRIC = 0x891e - SIOCSIFMTU = 0x8922 - SIOCSIFNAME = 0x8923 - SIOCSIFNETMASK = 0x891c - SIOCSIFPFLAGS = 0x8934 - SIOCSIFSLAVE = 0x8930 - SIOCSIFTXQLEN = 0x8943 - SIOCSPGRP = 0x8902 - SIOCSRARP = 0x8962 - SOCK_CLOEXEC = 0x80000 - SOCK_DCCP = 0x6 - SOCK_DGRAM = 0x2 - SOCK_NONBLOCK = 0x800 - SOCK_PACKET = 0xa - SOCK_RAW = 0x3 - SOCK_RDM = 0x4 - SOCK_SEQPACKET = 0x5 - SOCK_STREAM = 0x1 - SOL_AAL = 0x109 - SOL_ATM = 0x108 - SOL_DECNET = 0x105 - SOL_ICMPV6 = 0x3a - SOL_IP = 0x0 - SOL_IPV6 = 0x29 - SOL_IRDA = 0x10a - SOL_PACKET = 0x107 - SOL_RAW = 0xff - SOL_SOCKET = 0x1 - SOL_TCP = 0x6 - SOL_X25 = 0x106 - SOMAXCONN = 0x80 - SO_ACCEPTCONN = 0x1e - SO_ATTACH_BPF = 0x32 - SO_ATTACH_FILTER = 0x1a - SO_BINDTODEVICE = 0x19 - SO_BPF_EXTENSIONS = 0x30 - SO_BROADCAST = 0x6 - SO_BSDCOMPAT = 0xe - SO_BUSY_POLL = 0x2e - SO_DEBUG = 0x1 - SO_DETACH_BPF = 0x1b - SO_DETACH_FILTER = 0x1b - SO_DOMAIN = 0x27 - SO_DONTROUTE = 0x5 - SO_ERROR = 0x4 - SO_GET_FILTER = 0x1a - SO_INCOMING_CPU = 0x31 - SO_KEEPALIVE = 0x9 - SO_LINGER = 0xd - SO_LOCK_FILTER = 0x2c - SO_MARK = 0x24 - SO_MAX_PACING_RATE = 0x2f - SO_NOFCS = 0x2b - SO_NO_CHECK = 0xb - SO_OOBINLINE = 0xa - SO_PASSCRED = 0x10 - SO_PASSSEC = 0x22 - SO_PEEK_OFF = 0x2a - SO_PEERCRED = 0x11 - SO_PEERNAME = 0x1c - SO_PEERSEC = 0x1f - SO_PRIORITY = 0xc - SO_PROTOCOL = 0x26 - SO_RCVBUF = 0x8 - SO_RCVBUFFORCE = 0x21 - SO_RCVLOWAT = 0x12 - SO_RCVTIMEO = 0x14 - SO_REUSEADDR = 0x2 - SO_REUSEPORT = 0xf - SO_RXQ_OVFL = 0x28 - SO_SECURITY_AUTHENTICATION = 0x16 - SO_SECURITY_ENCRYPTION_NETWORK = 0x18 - SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 - SO_SELECT_ERR_QUEUE = 0x2d - SO_SNDBUF = 0x7 - SO_SNDBUFFORCE = 0x20 - SO_SNDLOWAT = 0x13 - SO_SNDTIMEO = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TYPE = 0x3 - SO_WIFI_STATUS = 0x29 - S_BLKSIZE = 0x200 - S_IEXEC = 0x40 - S_IFBLK = 0x6000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFIFO = 0x1000 - S_IFLNK = 0xa000 - S_IFMT = 0xf000 - S_IFREG = 0x8000 - S_IFSOCK = 0xc000 - S_IREAD = 0x100 - S_IRGRP = 0x20 - S_IROTH = 0x4 - S_IRUSR = 0x100 - S_IRWXG = 0x38 - S_IRWXO = 0x7 - S_IRWXU = 0x1c0 - S_ISGID = 0x400 - S_ISUID = 0x800 - S_ISVTX = 0x200 - S_IWGRP = 0x10 - S_IWOTH = 0x2 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXGRP = 0x8 - S_IXOTH = 0x1 - S_IXUSR = 0x40 - TAB0 = 0x0 - TAB1 = 0x800 - TAB2 = 0x1000 - TAB3 = 0x1800 - TABDLY = 0x1800 - TCFLSH = 0x540b - TCGETA = 0x5405 - TCGETS = 0x5401 - TCGETS2 = 0x802c542a - TCGETX = 0x5432 - TCIFLUSH = 0x0 - TCIOFF = 0x2 - TCIOFLUSH = 0x2 - TCION = 0x3 - TCOFLUSH = 0x1 - TCOOFF = 0x0 - TCOON = 0x1 - TCP_CC_INFO = 0x1a - TCP_CONGESTION = 0xd - TCP_COOKIE_IN_ALWAYS = 0x1 - TCP_COOKIE_MAX = 0x10 - TCP_COOKIE_MIN = 0x8 - TCP_COOKIE_OUT_NEVER = 0x2 - TCP_COOKIE_PAIR_SIZE = 0x20 - TCP_COOKIE_TRANSACTIONS = 0xf - TCP_CORK = 0x3 - TCP_DEFER_ACCEPT = 0x9 - TCP_FASTOPEN = 0x17 - TCP_INFO = 0xb - TCP_KEEPCNT = 0x6 - TCP_KEEPIDLE = 0x4 - TCP_KEEPINTVL = 0x5 - TCP_LINGER2 = 0x8 - TCP_MAXSEG = 0x2 - TCP_MAXWIN = 0xffff - TCP_MAX_WINSHIFT = 0xe - TCP_MD5SIG = 0xe - TCP_MD5SIG_MAXKEYLEN = 0x50 - TCP_MSS = 0x200 - TCP_MSS_DEFAULT = 0x218 - TCP_MSS_DESIRED = 0x4c4 - TCP_NODELAY = 0x1 - TCP_NOTSENT_LOWAT = 0x19 - TCP_QUEUE_SEQ = 0x15 - TCP_QUICKACK = 0xc - TCP_REPAIR = 0x13 - TCP_REPAIR_OPTIONS = 0x16 - TCP_REPAIR_QUEUE = 0x14 - TCP_SAVED_SYN = 0x1c - TCP_SAVE_SYN = 0x1b - TCP_SYNCNT = 0x7 - TCP_S_DATA_IN = 0x4 - TCP_S_DATA_OUT = 0x8 - TCP_THIN_DUPACK = 0x11 - TCP_THIN_LINEAR_TIMEOUTS = 0x10 - TCP_TIMESTAMP = 0x18 - TCP_USER_TIMEOUT = 0x12 - TCP_WINDOW_CLAMP = 0xa - TCSAFLUSH = 0x2 - TCSBRK = 0x5409 - TCSBRKP = 0x5425 - TCSETA = 0x5406 - TCSETAF = 0x5408 - TCSETAW = 0x5407 - TCSETS = 0x5402 - TCSETS2 = 0x402c542b - TCSETSF = 0x5404 - TCSETSF2 = 0x402c542d - TCSETSW = 0x5403 - TCSETSW2 = 0x402c542c - TCSETX = 0x5433 - TCSETXF = 0x5434 - TCSETXW = 0x5435 - TCXONC = 0x540a - TIOCCBRK = 0x5428 - TIOCCONS = 0x541d - TIOCEXCL = 0x540c - TIOCGDEV = 0x80045432 - TIOCGETD = 0x5424 - TIOCGEXCL = 0x80045440 - TIOCGICOUNT = 0x545d - TIOCGLCKTRMIOS = 0x5456 - TIOCGPGRP = 0x540f - TIOCGPKT = 0x80045438 - TIOCGPTLCK = 0x80045439 - TIOCGPTN = 0x80045430 - TIOCGRS485 = 0x542e - TIOCGSERIAL = 0x541e - TIOCGSID = 0x5429 - TIOCGSOFTCAR = 0x5419 - TIOCGWINSZ = 0x5413 - TIOCINQ = 0x541b - TIOCLINUX = 0x541c - TIOCMBIC = 0x5417 - TIOCMBIS = 0x5416 - TIOCMGET = 0x5415 - TIOCMIWAIT = 0x545c - TIOCMSET = 0x5418 - TIOCM_CAR = 0x40 - TIOCM_CD = 0x40 - TIOCM_CTS = 0x20 - TIOCM_DSR = 0x100 - TIOCM_DTR = 0x2 - TIOCM_LE = 0x1 - TIOCM_RI = 0x80 - TIOCM_RNG = 0x80 - TIOCM_RTS = 0x4 - TIOCM_SR = 0x10 - TIOCM_ST = 0x8 - TIOCNOTTY = 0x5422 - TIOCNXCL = 0x540d - TIOCOUTQ = 0x5411 - TIOCPKT = 0x5420 - TIOCPKT_DATA = 0x0 - TIOCPKT_DOSTOP = 0x20 - TIOCPKT_FLUSHREAD = 0x1 - TIOCPKT_FLUSHWRITE = 0x2 - TIOCPKT_IOCTL = 0x40 - TIOCPKT_NOSTOP = 0x10 - TIOCPKT_START = 0x8 - TIOCPKT_STOP = 0x4 - TIOCSBRK = 0x5427 - TIOCSCTTY = 0x540e - TIOCSERCONFIG = 0x5453 - TIOCSERGETLSR = 0x5459 - TIOCSERGETMULTI = 0x545a - TIOCSERGSTRUCT = 0x5458 - TIOCSERGWILD = 0x5454 - TIOCSERSETMULTI = 0x545b - TIOCSERSWILD = 0x5455 - TIOCSER_TEMT = 0x1 - TIOCSETD = 0x5423 - TIOCSIG = 0x40045436 - TIOCSLCKTRMIOS = 0x5457 - TIOCSPGRP = 0x5410 - TIOCSPTLCK = 0x40045431 - TIOCSRS485 = 0x542f - TIOCSSERIAL = 0x541f - TIOCSSOFTCAR = 0x541a - TIOCSTI = 0x5412 - TIOCSWINSZ = 0x5414 - TIOCVHANGUP = 0x5437 - TOSTOP = 0x100 - TUNATTACHFILTER = 0x401054d5 - TUNDETACHFILTER = 0x401054d6 - TUNGETFEATURES = 0x800454cf - TUNGETFILTER = 0x801054db - TUNGETIFF = 0x800454d2 - TUNGETSNDBUF = 0x800454d3 - TUNGETVNETBE = 0x800454df - TUNGETVNETHDRSZ = 0x800454d7 - TUNGETVNETLE = 0x800454dd - TUNSETDEBUG = 0x400454c9 - TUNSETGROUP = 0x400454ce - TUNSETIFF = 0x400454ca - TUNSETIFINDEX = 0x400454da - TUNSETLINK = 0x400454cd - TUNSETNOCSUM = 0x400454c8 - TUNSETOFFLOAD = 0x400454d0 - TUNSETOWNER = 0x400454cc - TUNSETPERSIST = 0x400454cb - TUNSETQUEUE = 0x400454d9 - TUNSETSNDBUF = 0x400454d4 - TUNSETTXFILTER = 0x400454d1 - TUNSETVNETBE = 0x400454de - TUNSETVNETHDRSZ = 0x400454d8 - TUNSETVNETLE = 0x400454dc - VDISCARD = 0xd - VEOF = 0x4 - VEOL = 0xb - VEOL2 = 0x10 - VERASE = 0x2 - VINTR = 0x0 - VKILL = 0x3 - VLNEXT = 0xf - VMIN = 0x6 - VQUIT = 0x1 - VREPRINT = 0xc - VSTART = 0x8 - VSTOP = 0x9 - VSUSP = 0xa - VSWTC = 0x7 - VT0 = 0x0 - VT1 = 0x4000 - VTDLY = 0x4000 - VTIME = 0x5 - VWERASE = 0xe - WALL = 0x40000000 - WCLONE = 0x80000000 - WCONTINUED = 0x8 - WEXITED = 0x4 - WNOHANG = 0x1 - WNOTHREAD = 0x20000000 - WNOWAIT = 0x1000000 - WORDSIZE = 0x40 - WSTOPPED = 0x2 - WUNTRACED = 0x2 - XCASE = 0x4 - XTABS = 0x1800 + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_DISABLE_TE = 0x5010 + PTRACE_ENABLE_TE = 0x5009 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_AREA = 0x5003 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_AREA = 0x5002 + PTRACE_PEEKUSR = 0x3 + PTRACE_PEEKUSR_AREA = 0x5000 + PTRACE_PEEK_SYSTEM_CALL = 0x5007 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_AREA = 0x5005 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_AREA = 0x5004 + PTRACE_POKEUSR = 0x6 + PTRACE_POKEUSR_AREA = 0x5001 + PTRACE_POKE_SYSTEM_CALL = 0x5008 + PTRACE_PROT = 0x15 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLEBLOCK = 0xc + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TE_ABORT_RAND = 0x5011 + PTRACE_TRACEME = 0x0 + PT_ACR0 = 0x90 + PT_ACR1 = 0x94 + PT_ACR10 = 0xb8 + PT_ACR11 = 0xbc + PT_ACR12 = 0xc0 + PT_ACR13 = 0xc4 + PT_ACR14 = 0xc8 + PT_ACR15 = 0xcc + PT_ACR2 = 0x98 + PT_ACR3 = 0x9c + PT_ACR4 = 0xa0 + PT_ACR5 = 0xa4 + PT_ACR6 = 0xa8 + PT_ACR7 = 0xac + PT_ACR8 = 0xb0 + PT_ACR9 = 0xb4 + PT_CR_10 = 0x168 + PT_CR_11 = 0x170 + PT_CR_9 = 0x160 + PT_ENDREGS = 0x1af + PT_FPC = 0xd8 + PT_FPR0 = 0xe0 + PT_FPR1 = 0xe8 + PT_FPR10 = 0x130 + PT_FPR11 = 0x138 + PT_FPR12 = 0x140 + PT_FPR13 = 0x148 + PT_FPR14 = 0x150 + PT_FPR15 = 0x158 + PT_FPR2 = 0xf0 + PT_FPR3 = 0xf8 + PT_FPR4 = 0x100 + PT_FPR5 = 0x108 + PT_FPR6 = 0x110 + PT_FPR7 = 0x118 + PT_FPR8 = 0x120 + PT_FPR9 = 0x128 + PT_GPR0 = 0x10 + PT_GPR1 = 0x18 + PT_GPR10 = 0x60 + PT_GPR11 = 0x68 + PT_GPR12 = 0x70 + PT_GPR13 = 0x78 + PT_GPR14 = 0x80 + PT_GPR15 = 0x88 + PT_GPR2 = 0x20 + PT_GPR3 = 0x28 + PT_GPR4 = 0x30 + PT_GPR5 = 0x38 + PT_GPR6 = 0x40 + PT_GPR7 = 0x48 + PT_GPR8 = 0x50 + PT_GPR9 = 0x58 + PT_IEEE_IP = 0x1a8 + PT_LASTOFF = 0x1a8 + PT_ORIGGPR2 = 0xd0 + PT_PSWADDR = 0x8 + PT_PSWMASK = 0x0 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x19 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETDEBUG = 0x400454c9 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UMOUNT_NOFOLLOW = 0x8 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go new file mode 100644 index 0000000000..95de199fc4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -0,0 +1,2142 @@ +// mkerrors.sh -m64 +// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT + +// +build sparc64,linux + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_X25 = 0x10f + ASI_LEON_DFLUSH = 0x11 + ASI_LEON_IFLUSH = 0x10 + ASI_LEON_MMUFLUSH = 0x18 + B0 = 0x0 + B1000000 = 0x100c + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x100d + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100e + B153600 = 0x1006 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100f + B230400 = 0x1003 + B2400 = 0xb + B300 = 0x7 + B307200 = 0x1007 + B38400 = 0xf + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x100a + B57600 = 0x1001 + B576000 = 0x100b + B600 = 0x8 + B614400 = 0x1008 + B75 = 0x2 + B76800 = 0x1005 + B921600 = 0x1009 + B9600 = 0xd + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EMT_TAGOVF = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x400000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x7 + F_GETLK64 = 0x7 + F_GETOWN = 0x5 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x8 + F_SETLK64 = 0x8 + F_SETLKW = 0x9 + F_SETLKW64 = 0x9 + F_SETOWN = 0x6 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x8 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x400000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x4000 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_UNICAST_HOPS = 0x10 + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GROWSDOWN = 0x200 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x100 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + NAME_MAX = 0xff + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x100000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x2000 + O_EXCL = 0x800 + O_FSYNC = 0x802000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x4004 + O_NOATIME = 0x200000 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x4000 + O_PATH = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x802000 + O_SYNC = 0x802000 + O_TMPFILE = 0x2010000 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = -0x1 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPAREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPREGS64 = 0x19 + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_READDATA = 0x10 + PTRACE_READTEXT = 0x12 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPAREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPREGS64 = 0x1a + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SPARC_DETACH = 0xb + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PTRACE_WRITEDATA = 0x11 + PTRACE_WRITETEXT = 0x13 + PT_FP = 0x48 + PT_G0 = 0x10 + PT_G1 = 0x14 + PT_G2 = 0x18 + PT_G3 = 0x1c + PT_G4 = 0x20 + PT_G5 = 0x24 + PT_G6 = 0x28 + PT_G7 = 0x2c + PT_I0 = 0x30 + PT_I1 = 0x34 + PT_I2 = 0x38 + PT_I3 = 0x3c + PT_I4 = 0x40 + PT_I5 = 0x44 + PT_I6 = 0x48 + PT_I7 = 0x4c + PT_NPC = 0x8 + PT_PC = 0x4 + PT_PSR = 0x0 + PT_REGS_MAGIC = 0x57ac6c00 + PT_TNPC = 0x90 + PT_TPC = 0x88 + PT_TSTATE = 0x80 + PT_V9_FP = 0x70 + PT_V9_G0 = 0x0 + PT_V9_G1 = 0x8 + PT_V9_G2 = 0x10 + PT_V9_G3 = 0x18 + PT_V9_G4 = 0x20 + PT_V9_G5 = 0x28 + PT_V9_G6 = 0x30 + PT_V9_G7 = 0x38 + PT_V9_I0 = 0x40 + PT_V9_I1 = 0x48 + PT_V9_I2 = 0x50 + PT_V9_I3 = 0x58 + PT_V9_I4 = 0x60 + PT_V9_I5 = 0x68 + PT_V9_I6 = 0x70 + PT_V9_I7 = 0x78 + PT_V9_MAGIC = 0x9c + PT_V9_TNPC = 0x90 + PT_V9_TPC = 0x88 + PT_V9_TSTATE = 0x80 + PT_V9_Y = 0x98 + PT_WIM = 0x10 + PT_Y = 0xc + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x6 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x1 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x10 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x18 + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x5f + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x14 + RTM_NR_MSGTYPES = 0x50 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x11 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_GATED = 0x8 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPNS = 0x21 + SCM_WIFI_STATUS = 0x25 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SOCK_CLOEXEC = 0x400000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x8000 + SO_ATTACH_BPF = 0x34 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x35 + SO_ATTACH_REUSEPORT_EBPF = 0x36 + SO_BINDTODEVICE = 0xd + SO_BPF_EXTENSIONS = 0x32 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0x400 + SO_BUSY_POLL = 0x30 + SO_CNX_ADVICE = 0x37 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x33 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x28 + SO_MARK = 0x22 + SO_MAX_PACING_RATE = 0x31 + SO_NOFCS = 0x27 + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x2 + SO_PASSSEC = 0x1f + SO_PEEK_OFF = 0x26 + SO_PEERCRED = 0x40 + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x100b + SO_RCVLOWAT = 0x800 + SO_RCVTIMEO = 0x2000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x24 + SO_SECURITY_AUTHENTICATION = 0x5001 + SO_SECURITY_ENCRYPTION_NETWORK = 0x5004 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002 + SO_SELECT_ERR_QUEUE = 0x29 + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x100a + SO_SNDLOWAT = 0x1000 + SO_SNDTIMEO = 0x4000 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPNS = 0x21 + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x25 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x20005407 + TCGETA = 0x40125401 + TCGETS = 0x40245408 + TCGETS2 = 0x402c540c + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x20005405 + TCSBRKP = 0x5425 + TCSETA = 0x80125402 + TCSETAF = 0x80125404 + TCSETAW = 0x80125403 + TCSETS = 0x80245409 + TCSETS2 = 0x802c540d + TCSETSF = 0x8024540b + TCSETSF2 = 0x802c540f + TCSETSW = 0x8024540a + TCSETSW2 = 0x802c540e + TCXONC = 0x20005406 + TIOCCBRK = 0x2000747a + TIOCCONS = 0x20007424 + TIOCEXCL = 0x2000740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x40047400 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x40047483 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40047486 + TIOCGRS485 = 0x40205441 + TIOCGSERIAL = 0x541e + TIOCGSID = 0x40047485 + TIOCGSOFTCAR = 0x40047464 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x545c + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007484 + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x80047401 + TIOCSIG = 0x80047488 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x80047482 + TIOCSPTLCK = 0x80047487 + TIOCSRS485 = 0xc0205442 + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x80047465 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x20005437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETDEBUG = 0x800454c9 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + VDISCARD = 0xd + VDSUSP = 0xb + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WRAP = 0x20000 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XCASE = 0x4 + XTABS = 0x1800 + __TIOCFLUSH = 0x80047410 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EADV = syscall.Errno(0x53) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x25) + EBADE = syscall.Errno(0x66) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x5d) + EBADMSG = syscall.Errno(0x4c) + EBADR = syscall.Errno(0x67) + EBADRQC = syscall.Errno(0x6a) + EBADSLT = syscall.Errno(0x6b) + EBFONT = syscall.Errno(0x6d) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x5e) + ECOMM = syscall.Errno(0x55) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0x4e) + EDEADLOCK = syscall.Errno(0x6c) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EHWPOISON = syscall.Errno(0x87) + EIDRM = syscall.Errno(0x4d) + EILSEQ = syscall.Errno(0x7a) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x81) + EKEYREJECTED = syscall.Errno(0x83) + EKEYREVOKED = syscall.Errno(0x82) + EL2HLT = syscall.Errno(0x65) + EL2NSYNC = syscall.Errno(0x5f) + EL3HLT = syscall.Errno(0x60) + EL3RST = syscall.Errno(0x61) + ELIBACC = syscall.Errno(0x72) + ELIBBAD = syscall.Errno(0x70) + ELIBEXEC = syscall.Errno(0x6e) + ELIBMAX = syscall.Errno(0x7b) + ELIBSCN = syscall.Errno(0x7c) + ELNRNG = syscall.Errno(0x62) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x7e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x57) + ENAMETOOLONG = syscall.Errno(0x3f) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x69) + ENOBUFS = syscall.Errno(0x37) + ENOCSI = syscall.Errno(0x64) + ENODATA = syscall.Errno(0x6f) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x80) + ENOLCK = syscall.Errno(0x4f) + ENOLINK = syscall.Errno(0x52) + ENOMEDIUM = syscall.Errno(0x7d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x4b) + ENONET = syscall.Errno(0x50) + ENOPKG = syscall.Errno(0x71) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x4a) + ENOSTR = syscall.Errno(0x48) + ENOSYS = syscall.Errno(0x5a) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x85) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x73) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x5c) + EOWNERDEAD = syscall.Errno(0x84) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROTO = syscall.Errno(0x56) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x59) + EREMOTE = syscall.Errno(0x47) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x74) + ERFKILL = syscall.Errno(0x86) + EROFS = syscall.Errno(0x1e) + ERREMOTE = syscall.Errno(0x51) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x54) + ESTALE = syscall.Errno(0x46) + ESTRPIPE = syscall.Errno(0x5b) + ETIME = syscall.Errno(0x49) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x63) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x68) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x1d) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errors = [...]string{ + 1: "operation not permitted", + 2: "no such file or directory", + 3: "no such process", + 4: "interrupted system call", + 5: "input/output error", + 6: "no such device or address", + 7: "argument list too long", + 8: "exec format error", + 9: "bad file descriptor", + 10: "no child processes", + 11: "resource temporarily unavailable", + 12: "cannot allocate memory", + 13: "permission denied", + 14: "bad address", + 15: "block device required", + 16: "device or resource busy", + 17: "file exists", + 18: "invalid cross-device link", + 19: "no such device", + 20: "not a directory", + 21: "is a directory", + 22: "invalid argument", + 23: "too many open files in system", + 24: "too many open files", + 25: "inappropriate ioctl for device", + 26: "text file busy", + 27: "file too large", + 28: "no space left on device", + 29: "illegal seek", + 30: "read-only file system", + 31: "too many links", + 32: "broken pipe", + 33: "numerical argument out of domain", + 34: "numerical result out of range", + 36: "operation now in progress", + 37: "operation already in progress", + 38: "socket operation on non-socket", + 39: "destination address required", + 40: "message too long", + 41: "protocol wrong type for socket", + 42: "protocol not available", + 43: "protocol not supported", + 44: "socket type not supported", + 45: "operation not supported", + 46: "protocol family not supported", + 47: "address family not supported by protocol", + 48: "address already in use", + 49: "cannot assign requested address", + 50: "network is down", + 51: "network is unreachable", + 52: "network dropped connection on reset", + 53: "software caused connection abort", + 54: "connection reset by peer", + 55: "no buffer space available", + 56: "transport endpoint is already connected", + 57: "transport endpoint is not connected", + 58: "cannot send after transport endpoint shutdown", + 59: "too many references: cannot splice", + 60: "connection timed out", + 61: "connection refused", + 62: "too many levels of symbolic links", + 63: "file name too long", + 64: "host is down", + 65: "no route to host", + 66: "directory not empty", + 67: "too many processes", + 68: "too many users", + 69: "disk quota exceeded", + 70: "stale file handle", + 71: "object is remote", + 72: "device not a stream", + 73: "timer expired", + 74: "out of streams resources", + 75: "no message of desired type", + 76: "bad message", + 77: "identifier removed", + 78: "resource deadlock avoided", + 79: "no locks available", + 80: "machine is not on the network", + 81: "unknown error 81", + 82: "link has been severed", + 83: "advertise error", + 84: "srmount error", + 85: "communication error on send", + 86: "protocol error", + 87: "multihop attempted", + 88: "RFS specific error", + 89: "remote address changed", + 90: "function not implemented", + 91: "streams pipe error", + 92: "value too large for defined data type", + 93: "file descriptor in bad state", + 94: "channel number out of range", + 95: "level 2 not synchronized", + 96: "level 3 halted", + 97: "level 3 reset", + 98: "link number out of range", + 99: "protocol driver not attached", + 100: "no CSI structure available", + 101: "level 2 halted", + 102: "invalid exchange", + 103: "invalid request descriptor", + 104: "exchange full", + 105: "no anode", + 106: "invalid request code", + 107: "invalid slot", + 108: "file locking deadlock error", + 109: "bad font file format", + 110: "cannot exec a shared library directly", + 111: "no data available", + 112: "accessing a corrupted shared library", + 113: "package not installed", + 114: "can not access a needed shared library", + 115: "name not unique on network", + 116: "interrupted system call should be restarted", + 117: "structure needs cleaning", + 118: "not a XENIX named type file", + 119: "no XENIX semaphores available", + 120: "is a named type file", + 121: "remote I/O error", + 122: "invalid or incomplete multibyte or wide character", + 123: "attempting to link in too many shared libraries", + 124: ".lib section in a.out corrupted", + 125: "no medium found", + 126: "wrong medium type", + 127: "operation canceled", + 128: "required key not available", + 129: "key has expired", + 130: "key has been revoked", + 131: "key was rejected by service", + 132: "owner died", + 133: "state not recoverable", + 134: "operation not possible due to RF-kill", + 135: "memory page has hardware error", +} + +// Signal table +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "EMT trap", + 8: "floating point exception", + 9: "killed", + 10: "bus error", + 11: "segmentation fault", + 12: "bad system call", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", + 16: "urgent I/O condition", + 17: "stopped (signal)", + 18: "stopped", + 19: "continued", + 20: "child exited", + 21: "stopped (tty input)", + 22: "stopped (tty output)", + 23: "I/O possible", + 24: "CPU time limit exceeded", + 25: "file size limit exceeded", + 26: "virtual timer expired", + 27: "profiling timer expired", + 28: "window changed", + 29: "resource lost", + 30: "user defined signal 1", + 31: "user defined signal 2", +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index ac85ca6452..206c75f094 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -1006,6 +1006,9 @@ const ( MSG_TRUNC = 0x10 MSG_USERFLAGS = 0xffffff MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 NAME_MAX = 0x1ff NET_RT_DUMP = 0x1 NET_RT_FLAGS = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 0000000000..3ed0b2602f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1586 @@ +// mkerrors.sh +// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +// +build arm,openbsd + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x3ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x70f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errors = [...]string{ + 1: "operation not permitted", + 2: "no such file or directory", + 3: "no such process", + 4: "interrupted system call", + 5: "input/output error", + 6: "device not configured", + 7: "argument list too long", + 8: "exec format error", + 9: "bad file descriptor", + 10: "no child processes", + 11: "resource deadlock avoided", + 12: "cannot allocate memory", + 13: "permission denied", + 14: "bad address", + 15: "block device required", + 16: "device busy", + 17: "file exists", + 18: "cross-device link", + 19: "operation not supported by device", + 20: "not a directory", + 21: "is a directory", + 22: "invalid argument", + 23: "too many open files in system", + 24: "too many open files", + 25: "inappropriate ioctl for device", + 26: "text file busy", + 27: "file too large", + 28: "no space left on device", + 29: "illegal seek", + 30: "read-only file system", + 31: "too many links", + 32: "broken pipe", + 33: "numerical argument out of domain", + 34: "result too large", + 35: "resource temporarily unavailable", + 36: "operation now in progress", + 37: "operation already in progress", + 38: "socket operation on non-socket", + 39: "destination address required", + 40: "message too long", + 41: "protocol wrong type for socket", + 42: "protocol not available", + 43: "protocol not supported", + 44: "socket type not supported", + 45: "operation not supported", + 46: "protocol family not supported", + 47: "address family not supported by protocol family", + 48: "address already in use", + 49: "can't assign requested address", + 50: "network is down", + 51: "network is unreachable", + 52: "network dropped connection on reset", + 53: "software caused connection abort", + 54: "connection reset by peer", + 55: "no buffer space available", + 56: "socket is already connected", + 57: "socket is not connected", + 58: "can't send after socket shutdown", + 59: "too many references: can't splice", + 60: "connection timed out", + 61: "connection refused", + 62: "too many levels of symbolic links", + 63: "file name too long", + 64: "host is down", + 65: "no route to host", + 66: "directory not empty", + 67: "too many processes", + 68: "too many users", + 69: "disc quota exceeded", + 70: "stale NFS file handle", + 71: "too many levels of remote in path", + 72: "RPC struct is bad", + 73: "RPC version wrong", + 74: "RPC prog. not avail", + 75: "program version wrong", + 76: "bad procedure for program", + 77: "no locks available", + 78: "function not implemented", + 79: "inappropriate file type or format", + 80: "authentication error", + 81: "need authenticator", + 82: "IPsec processing failure", + 83: "attribute not found", + 84: "illegal byte sequence", + 85: "no medium found", + 86: "wrong medium type", + 87: "value too large to be stored in data type", + 88: "operation canceled", + 89: "identifier removed", + 90: "no message of desired type", + 91: "not supported", +} + +// Signal table +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/BPT trap", + 6: "abort trap", + 7: "EMT trap", + 8: "floating point exception", + 9: "killed", + 10: "bus error", + 11: "segmentation fault", + 12: "bad system call", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", + 16: "urgent I/O condition", + 17: "stopped (signal)", + 18: "stopped", + 19: "continued", + 20: "child exited", + 21: "stopped (tty input)", + 22: "stopped (tty output)", + 23: "I/O possible", + 24: "cputime limit exceeded", + 25: "filesize limit exceeded", + 26: "virtual timer expired", + 27: "profiling timer expired", + 28: "window size changes", + 29: "information request", + 30: "user defined signal 1", + 31: "user defined signal 2", + 32: "thread AST", +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index a08922b981..81e83d78fc 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -1,5 +1,5 @@ // mkerrors.sh -m64 -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,solaris @@ -159,7 +159,12 @@ const ( BPF_W = 0x0 BPF_X = 0x8 BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0xf CFLUSH = 0xf + CIBAUD = 0xf0000 CLOCAL = 0x800 CLOCK_HIGHRES = 0x4 CLOCK_LEVEL = 0xa @@ -169,7 +174,13 @@ const ( CLOCK_REALTIME = 0x3 CLOCK_THREAD_CPUTIME_ID = 0x2 CLOCK_VIRTUAL = 0x1 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 CREAD = 0x80 + CRTSCTS = 0x80000000 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -276,6 +287,9 @@ const ( FD_CLOEXEC = 0x1 FD_NFDBITS = 0x40 FD_SETSIZE = 0x10000 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 FLUSHALL = 0x1 FLUSHDATA = 0x0 FLUSHO = 0x2000 @@ -290,6 +304,10 @@ const ( F_DUP2FD_CLOEXEC = 0x24 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x25 + F_FLOCK = 0x35 + F_FLOCK64 = 0x35 + F_FLOCKW = 0x36 + F_FLOCKW64 = 0x36 F_FREESP = 0xb F_FREESP64 = 0xb F_GETFD = 0x1 @@ -304,6 +322,12 @@ const ( F_MDACC = 0x20 F_NODNY = 0x0 F_NPRIV = 0x10 + F_OFD_GETLK = 0x2f + F_OFD_GETLK64 = 0x2f + F_OFD_SETLK = 0x30 + F_OFD_SETLK64 = 0x30 + F_OFD_SETLKW = 0x31 + F_OFD_SETLKW64 = 0x31 F_PRIV = 0xf F_QUOTACTL = 0x11 F_RDACC = 0x1 @@ -332,6 +356,7 @@ const ( F_WRDNY = 0x2 F_WRLCK = 0x2 HUPCL = 0x400 + IBSHIFT = 0x10 ICANON = 0x2 ICRNL = 0x100 IEXTEN = 0x8000 @@ -589,15 +614,21 @@ const ( IP_UNSPEC_SRC = 0x42 ISIG = 0x1 ISTRIP = 0x20 + IUCLC = 0x200 IXANY = 0x800 IXOFF = 0x1000 IXON = 0x400 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 MADV_ACCESS_DEFAULT = 0x6 MADV_ACCESS_LWP = 0x7 MADV_ACCESS_MANY = 0x8 MADV_DONTNEED = 0x4 MADV_FREE = 0x5 MADV_NORMAL = 0x0 + MADV_PURGE = 0x9 MADV_RANDOM = 0x1 MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 @@ -605,6 +636,7 @@ const ( MAP_ALIGN = 0x200 MAP_ANON = 0x100 MAP_ANONYMOUS = 0x100 + MAP_FILE = 0x0 MAP_FIXED = 0x10 MAP_INITDATA = 0x800 MAP_NORESERVE = 0x40 @@ -632,10 +664,14 @@ const ( MS_OLDSYNC = 0x0 MS_SYNC = 0x4 M_FLUSH = 0x86 + NL0 = 0x0 + NL1 = 0x100 + NLDLY = 0x100 NOFLSH = 0x80 OCRNL = 0x8 OFDEL = 0x80 OFILL = 0x40 + OLCUC = 0x2 ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 @@ -955,12 +991,21 @@ const ( SO_USELOOPBACK = 0x40 SO_VRRP = 0x1017 SO_WROFF = 0x2 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 TCFLSH = 0x5407 TCGETA = 0x5401 TCGETS = 0x540d TCIFLUSH = 0x0 + TCIOFF = 0x2 TCIOFLUSH = 0x2 + TCION = 0x3 TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 TCP_ABORT_THRESHOLD = 0x11 TCP_ANONPRIVBIND = 0x20 TCP_CONN_ABORT_THRESHOLD = 0x13 @@ -1089,6 +1134,8 @@ const ( WSTOPPED = 0x4 WTRAPPED = 0x2 WUNTRACED = 0x4 + XCASE = 0x4 + XTABS = 0x1800 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 031034a345..10491e9ed3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build 386,darwin +// +build darwin,386 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -300,6 +398,16 @@ func kill(pid int, signum int, posix int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -307,7 +415,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -333,7 +440,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -349,7 +455,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -365,7 +470,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -381,7 +485,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -397,7 +500,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -449,8 +551,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { return } _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -466,6 +566,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -496,6 +611,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -506,6 +636,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -727,7 +872,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -748,8 +892,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -775,7 +937,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -791,7 +952,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -800,14 +960,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -816,40 +975,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -858,14 +990,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -874,24 +1005,14 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -900,14 +1021,13 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -924,7 +1044,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -998,7 +1117,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1020,8 +1160,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1037,7 +1195,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1053,7 +1210,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1120,7 +1276,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1227,7 +1382,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1397,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1264,8 +1417,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1291,7 +1462,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1315,7 +1485,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1331,7 +1500,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1347,7 +1530,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index ee96f78bad..5f1f6bfef7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,darwin +// +build darwin,amd64 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -300,6 +398,16 @@ func kill(pid int, signum int, posix int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -307,7 +415,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -333,7 +440,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -349,7 +455,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -365,7 +470,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -381,7 +485,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -397,7 +500,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -449,8 +551,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { return } _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -466,6 +566,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -496,6 +611,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -506,6 +636,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -727,7 +872,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -748,8 +892,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -775,7 +937,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -791,7 +952,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -800,14 +960,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -816,40 +975,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -858,14 +990,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -874,24 +1005,14 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -900,14 +1021,13 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -924,7 +1044,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -998,7 +1117,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1020,8 +1160,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1037,7 +1195,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1053,7 +1210,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1120,7 +1276,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1227,7 +1382,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1397,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1264,8 +1417,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1291,7 +1462,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1315,7 +1485,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1331,7 +1500,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1347,7 +1530,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1416,22 +1598,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) sec = int64(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index e52cd0d54c..7a40974594 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build arm,darwin +// +build darwin,arm package unix @@ -221,8 +221,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) + _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -300,6 +398,16 @@ func kill(pid int, signum int, posix int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -307,7 +415,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -333,7 +440,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -349,7 +455,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -365,7 +470,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -381,7 +485,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -397,7 +500,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -449,8 +551,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { return } _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -466,6 +566,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -496,6 +611,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -506,6 +636,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -558,7 +703,7 @@ func Fsync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Ftruncate(fd int, length int64) (err error) { - _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) if e1 != 0 { err = errnoErr(e1) } @@ -727,7 +872,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -748,8 +892,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -775,7 +937,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -791,7 +952,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -800,14 +960,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -816,40 +975,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -858,14 +990,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -874,24 +1005,14 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -900,14 +1021,13 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -924,7 +1044,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -941,7 +1060,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -958,7 +1077,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -998,7 +1117,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1020,8 +1160,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1037,7 +1195,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1053,7 +1210,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1063,8 +1219,8 @@ func Rmdir(path string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) - newoffset = int64(r0) + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) if e1 != 0 { err = errnoErr(e1) } @@ -1120,7 +1276,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1227,7 +1382,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1397,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1264,8 +1417,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1290,8 +1461,7 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) if e1 != 0 { err = errnoErr(e1) } @@ -1315,7 +1485,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1331,7 +1500,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1347,7 +1530,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1374,7 +1556,7 @@ func write(fd int, p []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { - r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 9863ef99e3..07c6ebc9f4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build arm64,darwin +// +build darwin,arm64 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -300,6 +398,16 @@ func kill(pid int, signum int, posix int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -307,7 +415,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -333,7 +440,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -349,7 +455,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -365,7 +470,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -381,7 +485,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -397,7 +500,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -449,8 +551,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { return } _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -466,6 +566,21 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -496,6 +611,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -506,6 +636,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -727,7 +872,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -748,8 +892,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -775,7 +937,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -791,7 +952,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -800,14 +960,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -816,40 +975,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -858,14 +990,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -874,24 +1005,14 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -900,14 +1021,13 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -924,7 +1044,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -998,7 +1117,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1020,8 +1160,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1037,7 +1195,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1053,7 +1210,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1120,7 +1276,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1227,7 +1382,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1397,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1264,8 +1417,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1291,7 +1462,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1315,7 +1485,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1331,7 +1500,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1347,7 +1530,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index 78de48dcf3..7fa205cd03 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -1,7 +1,7 @@ -// mksyscall.pl -dragonfly syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,dragonfly +// +build dragonfly,amd64 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (r int, w int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) r = int(r0) @@ -321,7 +419,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -347,7 +444,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -363,7 +459,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -379,7 +474,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -395,7 +489,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -411,7 +504,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -739,7 +831,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -760,8 +851,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -787,7 +876,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -803,7 +891,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -819,7 +906,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -835,75 +921,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -929,7 +946,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -946,7 +962,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -986,7 +1001,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1008,8 +1022,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1025,7 +1037,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1041,7 +1052,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1108,7 +1118,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1225,7 +1234,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1241,7 +1249,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1262,8 +1269,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1289,7 +1294,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1313,7 +1317,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1329,7 +1332,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1345,7 +1347,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1411,3 +1412,29 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index fade994dcf..1a0bb4cb0e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build 386,freebsd +// +build freebsd,386 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (r int, w int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) r = int(r0) @@ -280,6 +378,16 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -287,7 +395,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -306,6 +413,36 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -313,7 +450,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -329,7 +465,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -345,7 +480,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -361,7 +495,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -377,7 +510,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -431,7 +563,6 @@ func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbyt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -448,7 +579,6 @@ func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbyt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -465,7 +595,6 @@ func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -497,8 +626,6 @@ func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -520,8 +647,6 @@ func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -543,8 +668,6 @@ func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err err return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -560,7 +683,6 @@ func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) ( return } r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -582,8 +704,6 @@ func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -605,8 +725,6 @@ func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -628,8 +746,6 @@ func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err err return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -645,7 +761,6 @@ func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) ( return } r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -665,6 +780,21 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -695,6 +825,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -705,6 +850,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -946,7 +1106,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -967,8 +1126,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -994,7 +1171,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1010,7 +1186,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1019,14 +1194,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -1035,40 +1209,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1077,14 +1224,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -1093,14 +1239,8 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1109,18 +1249,14 @@ func Munlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Nanosleep(time *Timespec, leftover *Timespec) (err error) { - _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1129,14 +1265,13 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1153,7 +1288,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1227,7 +1361,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1249,8 +1404,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1266,7 +1439,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1282,7 +1454,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1349,7 +1520,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1466,7 +1636,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1482,7 +1651,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1503,8 +1671,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1530,7 +1716,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1554,7 +1739,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1570,7 +1754,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1586,7 +1784,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1663,3 +1860,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index c28281e83e..ac1e8e0136 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,freebsd +// +build freebsd,amd64 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (r int, w int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) r = int(r0) @@ -280,6 +378,16 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -287,7 +395,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -306,6 +413,36 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -313,7 +450,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -329,7 +465,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -345,7 +480,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -361,7 +495,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -377,7 +510,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -431,7 +563,6 @@ func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbyt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -448,7 +579,6 @@ func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbyt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -465,7 +595,6 @@ func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -497,8 +626,6 @@ func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -520,8 +647,6 @@ func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -543,8 +668,6 @@ func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err err return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -560,7 +683,6 @@ func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) ( return } r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -582,8 +704,6 @@ func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -605,8 +725,6 @@ func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -628,8 +746,6 @@ func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err err return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -645,7 +761,6 @@ func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) ( return } r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -665,6 +780,21 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -695,6 +825,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -705,6 +850,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -946,7 +1106,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -967,8 +1126,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -994,7 +1171,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1010,7 +1186,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1019,14 +1194,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -1035,40 +1209,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1077,14 +1224,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -1093,14 +1239,8 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1109,18 +1249,14 @@ func Munlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Nanosleep(time *Timespec, leftover *Timespec) (err error) { - _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1129,14 +1265,13 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1153,7 +1288,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1227,7 +1361,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1249,8 +1404,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1266,7 +1439,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1282,7 +1454,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1349,7 +1520,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1466,7 +1636,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1482,7 +1651,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1503,8 +1671,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1530,7 +1716,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1554,7 +1739,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1570,7 +1754,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1586,7 +1784,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1663,3 +1860,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index a18ba5c88b..2b4e6acf04 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 -arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build arm,freebsd +// +build freebsd,arm package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (r int, w int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) r = int(r0) @@ -280,6 +378,16 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -287,7 +395,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -306,6 +413,36 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -313,7 +450,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -329,7 +465,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -345,7 +480,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -361,7 +495,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -377,7 +510,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -431,7 +563,6 @@ func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbyt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -448,7 +579,6 @@ func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbyt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -465,7 +595,6 @@ func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -497,8 +626,6 @@ func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -520,8 +647,6 @@ func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -543,8 +668,6 @@ func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err err return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -560,7 +683,6 @@ func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) ( return } r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -582,8 +704,6 @@ func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -605,8 +725,6 @@ func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintpt return } r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -628,8 +746,6 @@ func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err err return } _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -645,7 +761,6 @@ func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) ( return } r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) - use(unsafe.Pointer(_p0)) ret = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -665,6 +780,21 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchdir(fd int) (err error) { _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) if e1 != 0 { @@ -695,6 +825,21 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fchown(fd int, uid int, gid int) (err error) { _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { @@ -705,6 +850,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -946,7 +1106,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -967,8 +1126,26 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -994,7 +1171,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1010,7 +1186,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1019,14 +1194,13 @@ func Mkdir(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } @@ -1035,40 +1209,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { +func Mkfifo(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1077,14 +1224,13 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } @@ -1093,14 +1239,8 @@ func Mprotect(b []byte, prot int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1109,18 +1249,14 @@ func Munlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Nanosleep(time *Timespec, leftover *Timespec) (err error) { - _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1129,14 +1265,13 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Open(path string, mode int, perm uint32) (fd int, err error) { +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1153,7 +1288,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1227,7 +1361,28 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1249,8 +1404,26 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1266,7 +1439,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1282,7 +1454,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1349,7 +1520,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1466,7 +1636,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1482,7 +1651,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1503,8 +1671,26 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } @@ -1530,7 +1716,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1554,7 +1739,6 @@ func Undelete(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1570,7 +1754,21 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } @@ -1586,7 +1784,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1663,3 +1860,18 @@ func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 1f7a756695..38c1bbdf96 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 syscall_linux.go syscall_linux_386.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build 386,linux +// +build linux,386 package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1340,7 +1638,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1356,7 +1653,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1488,7 +1784,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1514,7 +1809,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1641,7 +1935,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index b4e24fc0a0..dc8fe0a84d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,linux +// +build linux,amd64 package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1357,7 +1655,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1383,7 +1680,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1567,7 +1863,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1583,7 +1878,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1609,7 +1903,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1815,7 +2108,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index 20bf33ce5f..4d28042785 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 -arm syscall_linux.go syscall_linux_arm.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build arm,linux +// +build linux,arm package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1469,7 +1767,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1495,7 +1792,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1614,7 +1910,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1701,7 +1996,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index c7286db485..20ad4b6c9b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_arm64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build arm64,linux +// +build linux,arm64 package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1244,7 +1542,6 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1490,7 +1787,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1516,7 +1812,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go new file mode 100644 index 0000000000..9f194dc4ad --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -0,0 +1,2111 @@ +// mksyscall.pl -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + Syscall(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index b709ed2f53..4fde3ef08a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_mips64x.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build mips64,linux +// +build linux,mips64 package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1200,6 +1498,16 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { @@ -1296,7 +1604,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1490,7 +1797,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1516,7 +1822,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1732,7 +2037,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1768,7 +2072,6 @@ func lstat(path string, st *stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1784,7 +2087,6 @@ func stat(path string, st *stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index 5cb1c56715..f6463423c4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_mips64x.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build mips64le,linux +// +build linux,mips64le package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1200,6 +1498,16 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { @@ -1296,7 +1604,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1490,7 +1797,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1516,7 +1822,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1732,7 +2037,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1768,7 +2072,6 @@ func lstat(path string, st *stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1784,7 +2087,6 @@ func stat(path string, st *stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go new file mode 100644 index 0000000000..964591e5e8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -0,0 +1,2111 @@ +// mksyscall.pl -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + Syscall(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 873bb18f78..204ab1ae38 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_ppc64x.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build ppc64,linux +// +build linux,ppc64 package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1347,7 +1645,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1373,7 +1670,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1557,7 +1853,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1573,7 +1868,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1599,7 +1893,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1826,7 +2119,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index bf08835c5c..a8a2b0b0a3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_ppc64x.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build ppc64le,linux +// +build linux,ppc64le package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1347,7 +1645,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1373,7 +1670,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1557,7 +1853,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1573,7 +1868,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1599,7 +1893,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1826,7 +2119,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index dbaa53b984..b6ff9e3923 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -1,7 +1,7 @@ -// mksyscall.pl syscall_linux.go syscall_linux_s390x.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build s390x,linux +// +build linux,s390x package unix @@ -14,6 +14,31 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -26,8 +51,6 @@ func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags in return } _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -43,7 +66,6 @@ func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -64,7 +86,7 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -77,7 +99,6 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,7 +108,7 @@ func readlinkat(dirfd int, path string, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) if err != nil { @@ -99,8 +120,6 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -109,14 +128,13 @@ func symlinkat(oldpath string, newdirfd int, newpath string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func unlinkat(dirfd int, path string, flags int) (err error) { +func Unlinkat(dirfd int, path string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -132,7 +150,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -148,7 +165,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error return } _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -195,6 +211,104 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -212,7 +326,6 @@ func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { return } _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -238,9 +351,6 @@ func mount(source string, target string, fstype string, flags uintptr, data *byt return } _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - use(unsafe.Pointer(_p2)) if e1 != 0 { err = errnoErr(e1) } @@ -256,7 +366,33 @@ func Acct(path string) (err error) { return } _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -283,7 +419,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -299,7 +434,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,6 +462,17 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup(oldfd int) (fd int, err error) { r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) fd = int(r0) @@ -381,6 +526,17 @@ func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) return @@ -395,7 +551,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -434,22 +589,6 @@ func Fchmod(fd int, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -457,7 +596,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -562,6 +700,23 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -572,6 +727,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettid() (tid int) { r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) tid = int(r0) @@ -598,8 +764,6 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) { _p2 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -616,7 +780,6 @@ func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err e return } r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) - use(unsafe.Pointer(_p0)) watchdesc = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -675,6 +838,33 @@ func Klogctl(typ int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Listxattr(path string, dest []byte) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -688,7 +878,6 @@ func Listxattr(path string, dest []byte) (sz int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) - use(unsafe.Pointer(_p0)) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -698,6 +887,74 @@ func Listxattr(path string, dest []byte) (sz int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Mkdirat(dirfd int, path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -705,7 +962,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -721,7 +977,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -752,8 +1007,6 @@ func PivotRoot(newroot string, putold string) (err error) { return } _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -762,8 +1015,8 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) { - _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0) +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -811,8 +1064,6 @@ func Removexattr(path string, attr string) (err error) { return } _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -833,8 +1084,32 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -944,8 +1219,6 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { _p2 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -961,6 +1234,16 @@ func Sync() { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Sysinfo(info *Sysinfo_t) (err error) { _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) if e1 != 0 { @@ -1028,7 +1311,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1190,6 +1472,22 @@ func Mlockall(flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1337,7 +1635,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1353,7 +1650,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1527,7 +1823,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1543,7 +1838,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1569,7 +1863,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1616,7 +1909,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go new file mode 100644 index 0000000000..2dd98434ea --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -0,0 +1,1833 @@ +// mksyscall.pl -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,sparc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + Syscall(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index b16e1d0ee3..db99fd0c99 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 -netbsd syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build 386,netbsd +// +build netbsd,386 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -304,7 +402,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -330,7 +427,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -346,7 +442,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -362,7 +457,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -378,7 +472,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -394,7 +487,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -687,7 +779,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -708,8 +799,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -735,7 +824,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -751,7 +839,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -767,7 +854,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -783,75 +869,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -877,7 +894,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -894,7 +910,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -968,7 +983,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -990,8 +1004,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1007,7 +1019,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1023,7 +1034,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1171,7 +1181,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1192,8 +1201,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1219,7 +1226,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1249,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1259,7 +1264,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1325,3 +1329,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index b63667da9c..7b6c2c87e6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -1,7 +1,7 @@ -// mksyscall.pl -netbsd syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,netbsd +// +build netbsd,amd64 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -304,7 +402,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -330,7 +427,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -346,7 +442,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -362,7 +457,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -378,7 +472,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -394,7 +487,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -687,7 +779,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -708,8 +799,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -735,7 +824,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -751,7 +839,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -767,7 +854,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -783,75 +869,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -877,7 +894,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -894,7 +910,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -968,7 +983,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -990,8 +1004,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1007,7 +1019,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1023,7 +1034,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1171,7 +1181,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1192,8 +1201,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1219,7 +1226,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1249,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1259,7 +1264,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1325,3 +1329,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index b0d19038d2..0f4cc3b528 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 -arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build arm,netbsd +// +build netbsd,arm package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -304,7 +402,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -330,7 +427,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -346,7 +442,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -362,7 +457,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -378,7 +472,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -394,7 +487,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -687,7 +779,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -708,8 +799,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -735,7 +824,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -751,7 +839,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -767,7 +854,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -783,75 +869,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -877,7 +894,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -894,7 +910,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -968,7 +983,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -990,8 +1004,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1007,7 +1019,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1023,7 +1034,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1171,7 +1181,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1192,8 +1201,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1219,7 +1226,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1243,7 +1249,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1259,7 +1264,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1325,3 +1329,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index f91a5b8564..7baea87c7b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -1,7 +1,7 @@ -// mksyscall.pl -l32 -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build 386,openbsd +// +build openbsd,386 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -302,7 +400,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,7 +425,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -344,7 +440,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -360,7 +455,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -376,7 +470,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -392,7 +485,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -695,7 +787,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -716,8 +807,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -743,7 +832,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -759,7 +847,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -775,7 +862,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -791,75 +877,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -885,7 +902,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -902,7 +918,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -976,7 +991,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -998,8 +1012,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1015,7 +1027,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1031,7 +1042,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1098,7 +1108,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1215,7 +1224,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1231,7 +1239,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1252,8 +1259,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1279,7 +1284,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1303,7 +1307,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1319,7 +1322,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1385,3 +1387,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 2e8d59d724..0d69ce6b52 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -1,7 +1,7 @@ -// mksyscall.pl -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall.pl -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,openbsd +// +build openbsd,amd64 package unix @@ -222,7 +222,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) _p0 = unsafe.Pointer(&_zero) } _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - use(_p0) if e1 != 0 { err = errnoErr(e1) } @@ -238,7 +237,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { return } _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -268,6 +266,106 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -302,7 +400,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -328,7 +425,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -344,7 +440,6 @@ func Chflags(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -360,7 +455,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -376,7 +470,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -392,7 +485,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -695,7 +787,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -716,8 +807,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -743,7 +832,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -759,7 +847,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -775,7 +862,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -791,75 +877,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - use(unsafe.Pointer(_p0)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Mprotect(b []byte, prot int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -885,7 +902,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -902,7 +918,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -976,7 +991,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = unsafe.Pointer(&_zero) } r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -998,8 +1012,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1015,7 +1027,6 @@ func Revoke(path string) (err error) { return } _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1031,7 +1042,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1098,7 +1108,6 @@ func Setlogin(name string) (err error) { return } _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1215,7 +1224,6 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1231,7 +1239,6 @@ func Statfs(path string, stat *Statfs_t) (err error) { return } _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1252,8 +1259,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = errnoErr(e1) } @@ -1279,7 +1284,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1303,7 +1307,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1319,7 +1322,6 @@ func Unmount(path string, flags int) (err error) { return } _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = errnoErr(e1) } @@ -1385,3 +1387,18 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 0000000000..41572c26e4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,1404 @@ +// mksyscall.pl -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index c0ecfc044a..4287133d07 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -1,7 +1,7 @@ -// mksyscall_solaris.pl syscall_solaris.go syscall_solaris_amd64.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// mksyscall_solaris.pl -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. -// +build amd64,solaris +// +build solaris,amd64 package unix @@ -22,8 +22,8 @@ import ( //go:cgo_import_dynamic libc_fcntl fcntl "libc.so" //go:cgo_import_dynamic libc_futimesat futimesat "libc.so" //go:cgo_import_dynamic libc_accept accept "libsocket.so" -//go:cgo_import_dynamic libc_recvmsg recvmsg "libsocket.so" -//go:cgo_import_dynamic libc_sendmsg sendmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" //go:cgo_import_dynamic libc_acct acct "libc.so" //go:cgo_import_dynamic libc_ioctl ioctl "libc.so" //go:cgo_import_dynamic libc_access access "libc.so" @@ -43,8 +43,10 @@ import ( //go:cgo_import_dynamic libc_fchown fchown "libc.so" //go:cgo_import_dynamic libc_fchownat fchownat "libc.so" //go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so" +//go:cgo_import_dynamic libc_flock flock "libc.so" //go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" //go:cgo_import_dynamic libc_fstat fstat "libc.so" +//go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so" //go:cgo_import_dynamic libc_getdents getdents "libc.so" //go:cgo_import_dynamic libc_getgid getgid "libc.so" //go:cgo_import_dynamic libc_getpid getpid "libc.so" @@ -61,7 +63,7 @@ import ( //go:cgo_import_dynamic libc_kill kill "libc.so" //go:cgo_import_dynamic libc_lchown lchown "libc.so" //go:cgo_import_dynamic libc_link link "libc.so" -//go:cgo_import_dynamic libc_listen listen "libsocket.so" +//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so" //go:cgo_import_dynamic libc_lstat lstat "libc.so" //go:cgo_import_dynamic libc_madvise madvise "libc.so" //go:cgo_import_dynamic libc_mkdir mkdir "libc.so" @@ -101,6 +103,7 @@ import ( //go:cgo_import_dynamic libc_setuid setuid "libc.so" //go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" //go:cgo_import_dynamic libc_stat stat "libc.so" +//go:cgo_import_dynamic libc_statvfs statvfs "libc.so" //go:cgo_import_dynamic libc_symlink symlink "libc.so" //go:cgo_import_dynamic libc_sync sync "libc.so" //go:cgo_import_dynamic libc_times times "libc.so" @@ -114,15 +117,15 @@ import ( //go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" //go:cgo_import_dynamic libc_ustat ustat "libc.so" //go:cgo_import_dynamic libc_utime utime "libc.so" -//go:cgo_import_dynamic libc_bind bind "libsocket.so" -//go:cgo_import_dynamic libc_connect connect "libsocket.so" +//go:cgo_import_dynamic libc___xnet_bind __xnet_bind "libsocket.so" +//go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so" //go:cgo_import_dynamic libc_mmap mmap "libc.so" //go:cgo_import_dynamic libc_munmap munmap "libc.so" -//go:cgo_import_dynamic libc_sendto sendto "libsocket.so" -//go:cgo_import_dynamic libc_socket socket "libsocket.so" -//go:cgo_import_dynamic libc_socketpair socketpair "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so" //go:cgo_import_dynamic libc_write write "libc.so" -//go:cgo_import_dynamic libc_getsockopt getsockopt "libsocket.so" +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" @@ -140,8 +143,8 @@ import ( //go:linkname procfcntl libc_fcntl //go:linkname procfutimesat libc_futimesat //go:linkname procaccept libc_accept -//go:linkname procrecvmsg libc_recvmsg -//go:linkname procsendmsg libc_sendmsg +//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg +//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg //go:linkname procacct libc_acct //go:linkname procioctl libc_ioctl //go:linkname procAccess libc_access @@ -161,8 +164,10 @@ import ( //go:linkname procFchown libc_fchown //go:linkname procFchownat libc_fchownat //go:linkname procFdatasync libc_fdatasync +//go:linkname procFlock libc_flock //go:linkname procFpathconf libc_fpathconf //go:linkname procFstat libc_fstat +//go:linkname procFstatvfs libc_fstatvfs //go:linkname procGetdents libc_getdents //go:linkname procGetgid libc_getgid //go:linkname procGetpid libc_getpid @@ -179,7 +184,7 @@ import ( //go:linkname procKill libc_kill //go:linkname procLchown libc_lchown //go:linkname procLink libc_link -//go:linkname proclisten libc_listen +//go:linkname proc__xnet_llisten libc___xnet_llisten //go:linkname procLstat libc_lstat //go:linkname procMadvise libc_madvise //go:linkname procMkdir libc_mkdir @@ -219,6 +224,7 @@ import ( //go:linkname procSetuid libc_setuid //go:linkname procshutdown libc_shutdown //go:linkname procStat libc_stat +//go:linkname procStatvfs libc_statvfs //go:linkname procSymlink libc_symlink //go:linkname procSync libc_sync //go:linkname procTimes libc_times @@ -232,15 +238,15 @@ import ( //go:linkname procUnlinkat libc_unlinkat //go:linkname procUstat libc_ustat //go:linkname procUtime libc_utime -//go:linkname procbind libc_bind -//go:linkname procconnect libc_connect +//go:linkname proc__xnet_bind libc___xnet_bind +//go:linkname proc__xnet_connect libc___xnet_connect //go:linkname procmmap libc_mmap //go:linkname procmunmap libc_munmap -//go:linkname procsendto libc_sendto -//go:linkname procsocket libc_socket -//go:linkname procsocketpair libc_socketpair +//go:linkname proc__xnet_sendto libc___xnet_sendto +//go:linkname proc__xnet_socket libc___xnet_socket +//go:linkname proc__xnet_socketpair libc___xnet_socketpair //go:linkname procwrite libc_write -//go:linkname procgetsockopt libc_getsockopt +//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt //go:linkname procgetpeername libc_getpeername //go:linkname procsetsockopt libc_setsockopt //go:linkname procrecvfrom libc_recvfrom @@ -259,8 +265,8 @@ var ( procfcntl, procfutimesat, procaccept, - procrecvmsg, - procsendmsg, + proc__xnet_recvmsg, + proc__xnet_sendmsg, procacct, procioctl, procAccess, @@ -280,8 +286,10 @@ var ( procFchown, procFchownat, procFdatasync, + procFlock, procFpathconf, procFstat, + procFstatvfs, procGetdents, procGetgid, procGetpid, @@ -298,7 +306,7 @@ var ( procKill, procLchown, procLink, - proclisten, + proc__xnet_llisten, procLstat, procMadvise, procMkdir, @@ -338,6 +346,7 @@ var ( procSetuid, procshutdown, procStat, + procStatvfs, procSymlink, procSync, procTimes, @@ -351,15 +360,15 @@ var ( procUnlinkat, procUstat, procUtime, - procbind, - procconnect, + proc__xnet_bind, + proc__xnet_connect, procmmap, procmunmap, - procsendto, - procsocket, - procsocketpair, + proc__xnet_sendto, + proc__xnet_socket, + proc__xnet_socketpair, procwrite, - procgetsockopt, + proc__xnet_getsockopt, procgetpeername, procsetsockopt, procrecvfrom, @@ -442,7 +451,6 @@ func utimes(path string, times *[2]Timeval) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -456,7 +464,6 @@ func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -490,7 +497,7 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { } func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) n = int(r0) if e1 != 0 { err = e1 @@ -499,7 +506,7 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { } func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) n = int(r0) if e1 != 0 { err = e1 @@ -515,7 +522,7 @@ func acct(path *byte) (err error) { return } -func ioctl(fd int, req int, arg uintptr) (err error) { +func ioctl(fd int, req uint, arg uintptr) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) if e1 != 0 { err = e1 @@ -530,7 +537,6 @@ func Access(path string, mode uint32) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -552,7 +558,6 @@ func Chdir(path string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -566,7 +571,6 @@ func Chmod(path string, mode uint32) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -580,7 +584,6 @@ func Chown(path string, uid int, gid int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -594,7 +597,6 @@ func Chroot(path string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -616,7 +618,6 @@ func Creat(path string, mode uint32) (fd int, err error) { return } r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = e1 @@ -669,7 +670,6 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -691,7 +691,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -706,6 +705,14 @@ func Fdatasync(fd int) (err error) { return } +func Flock(fd int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + func Fpathconf(fd int, name int) (val int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) val = int(r0) @@ -723,6 +730,14 @@ func Fstat(fd int, stat *Stat_t) (err error) { return } +func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 *byte if len(buf) > 0 { @@ -838,7 +853,6 @@ func Lchown(path string, uid int, gid int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -857,8 +871,6 @@ func Link(path string, link string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = e1 } @@ -866,7 +878,7 @@ func Link(path string, link string) (err error) { } func Listen(s int, backlog int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) if e1 != 0 { err = e1 } @@ -880,7 +892,6 @@ func Lstat(path string, stat *Stat_t) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -906,7 +917,6 @@ func Mkdir(path string, mode uint32) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -920,7 +930,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -934,7 +943,6 @@ func Mkfifo(path string, mode uint32) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -948,7 +956,6 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -962,7 +969,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -976,7 +982,6 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1050,7 +1055,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = e1 @@ -1065,7 +1069,6 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) return } r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) - use(unsafe.Pointer(_p0)) fd = int(r0) if e1 != 0 { err = e1 @@ -1080,7 +1083,6 @@ func Pathconf(path string, name int) (val int, err error) { return } r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) val = int(r0) if e1 != 0 { err = e1 @@ -1146,7 +1148,6 @@ func Readlink(path string, buf []byte) (n int, err error) { _p1 = &buf[0] } r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) - use(unsafe.Pointer(_p0)) n = int(r0) if e1 != 0 { err = e1 @@ -1166,8 +1167,6 @@ func Rename(from string, to string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = e1 } @@ -1186,8 +1185,6 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = e1 } @@ -1201,7 +1198,6 @@ func Rmdir(path string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1325,7 +1321,19 @@ func Stat(path string, stat *Stat_t) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) + if e1 != 0 { + err = e1 + } + return +} + +func Statvfs(path string, vfsstat *Statvfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) if e1 != 0 { err = e1 } @@ -1344,8 +1352,6 @@ func Symlink(path string, link string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) if e1 != 0 { err = e1 } @@ -1376,7 +1382,6 @@ func Truncate(path string, length int64) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1420,7 +1425,6 @@ func Unmount(target string, flags int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1434,7 +1438,6 @@ func Unlink(path string) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1448,7 +1451,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1470,7 +1472,6 @@ func Utime(path string, buf *Utimbuf) (err error) { return } _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) - use(unsafe.Pointer(_p0)) if e1 != 0 { err = e1 } @@ -1478,7 +1479,7 @@ func Utime(path string, buf *Utimbuf) (err error) { } func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procbind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) if e1 != 0 { err = e1 } @@ -1486,7 +1487,7 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { } func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procconnect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) if e1 != 0 { err = e1 } @@ -1515,7 +1516,7 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( if len(buf) > 0 { _p0 = &buf[0] } - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = e1 } @@ -1523,7 +1524,7 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } func socket(domain int, typ int, proto int) (fd int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsocket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) fd = int(r0) if e1 != 0 { err = e1 @@ -1532,7 +1533,7 @@ func socket(domain int, typ int, proto int) (fd int, err error) { } func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsocketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = e1 } @@ -1553,7 +1554,7 @@ func write(fd int, p []byte) (n int, err error) { } func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = e1 } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go index b8c9aea852..41cb6ed399 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -1,5 +1,5 @@ -// mksysnum_darwin.pl /usr/include/sys/syscall.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,darwin @@ -121,12 +121,14 @@ const ( SYS_CSOPS = 169 SYS_CSOPS_AUDITTOKEN = 170 SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 SYS_KDEBUG_TRACE = 180 SYS_SETGID = 181 SYS_SETEGID = 182 SYS_SETEUID = 183 SYS_SIGRETURN = 184 - SYS_CHUD = 185 SYS_FDATASYNC = 187 SYS_STAT = 188 SYS_FSTAT = 189 @@ -140,17 +142,10 @@ const ( SYS_LSEEK = 199 SYS_TRUNCATE = 200 SYS_FTRUNCATE = 201 - SYS___SYSCTL = 202 + SYS_SYSCTL = 202 SYS_MLOCK = 203 SYS_MUNLOCK = 204 SYS_UNDELETE = 205 - SYS_ATSOCKET = 206 - SYS_ATGETMSG = 207 - SYS_ATPUTMSG = 208 - SYS_ATPSNDREQ = 209 - SYS_ATPSNDRSP = 210 - SYS_ATPGETREQ = 211 - SYS_ATPGETRSP = 212 SYS_OPEN_DPROTECTED_NP = 216 SYS_GETATTRLIST = 220 SYS_SETATTRLIST = 221 @@ -202,9 +197,7 @@ const ( SYS_SEM_WAIT = 271 SYS_SEM_TRYWAIT = 272 SYS_SEM_POST = 273 - SYS_SEM_GETVALUE = 274 - SYS_SEM_INIT = 275 - SYS_SEM_DESTROY = 276 + SYS_SYSCTLBYNAME = 274 SYS_OPEN_EXTENDED = 277 SYS_UMASK_EXTENDED = 278 SYS_STAT_EXTENDED = 279 @@ -286,7 +279,6 @@ const ( SYS_KQUEUE = 362 SYS_KEVENT = 363 SYS_LCHOWN = 364 - SYS_STACK_SNAPSHOT = 365 SYS_BSDTHREAD_REGISTER = 366 SYS_WORKQ_OPEN = 367 SYS_WORKQ_KERNRETURN = 368 @@ -295,6 +287,7 @@ const ( SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 SYS_THREAD_SELFID = 372 SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 SYS___MAC_EXECVE = 380 SYS___MAC_SYSCALL = 381 SYS___MAC_GET_FILE = 382 @@ -306,11 +299,8 @@ const ( SYS___MAC_GET_FD = 388 SYS___MAC_SET_FD = 389 SYS___MAC_GET_PID = 390 - SYS___MAC_GET_LCID = 391 - SYS___MAC_GET_LCTX = 392 - SYS___MAC_SET_LCTX = 393 - SYS_SETLCID = 394 - SYS_GETLCID = 395 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 SYS_READ_NOCANCEL = 396 SYS_WRITE_NOCANCEL = 397 SYS_OPEN_NOCANCEL = 398 @@ -354,5 +344,83 @@ const ( SYS_PID_SHUTDOWN_SOCKETS = 436 SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 SYS_KAS_INFO = 439 - SYS_MAXSYSCALL = 440 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_MAXSYSCALL = 522 + SYS_INVALID = 63 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go index 26677ebbf5..075816c348 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -1,5 +1,5 @@ -// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/sys/syscall.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,darwin @@ -121,13 +121,14 @@ const ( SYS_CSOPS = 169 SYS_CSOPS_AUDITTOKEN = 170 SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 SYS_KDEBUG_TRACE64 = 179 SYS_KDEBUG_TRACE = 180 SYS_SETGID = 181 SYS_SETEGID = 182 SYS_SETEUID = 183 SYS_SIGRETURN = 184 - SYS_CHUD = 185 SYS_FDATASYNC = 187 SYS_STAT = 188 SYS_FSTAT = 189 @@ -278,7 +279,6 @@ const ( SYS_KQUEUE = 362 SYS_KEVENT = 363 SYS_LCHOWN = 364 - SYS_STACK_SNAPSHOT = 365 SYS_BSDTHREAD_REGISTER = 366 SYS_WORKQ_OPEN = 367 SYS_WORKQ_KERNRETURN = 368 @@ -287,6 +287,7 @@ const ( SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 SYS_THREAD_SELFID = 372 SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 SYS___MAC_EXECVE = 380 SYS___MAC_SYSCALL = 381 SYS___MAC_GET_FILE = 382 @@ -298,11 +299,8 @@ const ( SYS___MAC_GET_FD = 388 SYS___MAC_SET_FD = 389 SYS___MAC_GET_PID = 390 - SYS___MAC_GET_LCID = 391 - SYS___MAC_GET_LCTX = 392 - SYS___MAC_SET_LCTX = 393 - SYS_SETLCID = 394 - SYS_GETLCID = 395 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 SYS_READ_NOCANCEL = 396 SYS_WRITE_NOCANCEL = 397 SYS_OPEN_NOCANCEL = 398 @@ -351,6 +349,7 @@ const ( SYS_GUARDED_CLOSE_NP = 442 SYS_GUARDED_KQUEUE_NP = 443 SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 SYS_PROC_RLIMIT_CONTROL = 446 SYS_CONNECTX = 447 SYS_DISCONNECTX = 448 @@ -367,6 +366,7 @@ const ( SYS_COALITION_INFO = 459 SYS_NECP_MATCH_POLICY = 460 SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 SYS_OPENAT = 463 SYS_OPENAT_NOCANCEL = 464 SYS_RENAMEAT = 465 @@ -392,7 +392,35 @@ const ( SYS_GUARDED_WRITE_NP = 485 SYS_GUARDED_PWRITE_NP = 486 SYS_GUARDED_WRITEV_NP = 487 - SYS_RENAME_EXT = 488 + SYS_RENAMEATX_NP = 488 SYS_MREMAP_ENCRYPTED = 489 - SYS_MAXSYSCALL = 490 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_MAXSYSCALL = 522 + SYS_INVALID = 63 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go index d6038fa9b0..b2c9ef81b8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -1,5 +1,5 @@ // mksysnum_dragonfly.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,dragonfly @@ -42,7 +42,7 @@ const ( SYS_SYNC = 36 // { int sync(void); } SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } + SYS_DUP = 41 // { int dup(int fd); } SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ @@ -76,7 +76,7 @@ const ( SYS_SWAPON = 85 // { int swapon(char *name); } SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_DUP2 = 90 // { int dup2(int from, int to); } SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ SYS_FSYNC = 95 // { int fsync(int fd); } @@ -144,7 +144,7 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, \ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } - SYS_MSGSND = 226 // { int msgsnd(int msqid, void *msgp, size_t msgsz, \ + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, \ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \ SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \ SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, \ @@ -224,7 +224,7 @@ const ( SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_SCTP_PEELOFF = 364 // { int sctp_peeloff(int sd, caddr_t name ); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); } SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \ @@ -301,4 +301,15 @@ const ( SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); } SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); } SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); } + SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); } + SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);} + SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); } + SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); } + SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); } + SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); } + SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); } + SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); } + SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); } + SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 262a84536a..b64a8122ce 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,5 +1,5 @@ // mksysnum_freebsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,freebsd @@ -7,345 +7,347 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } - SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ - SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); } - SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 57a60ea126..81722ac9f3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,5 +1,5 @@ // mksysnum_freebsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,freebsd @@ -7,345 +7,347 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } - SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ - SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); } - SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 206b9f612d..4488314181 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,5 +1,5 @@ // mksysnum_freebsd.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,freebsd @@ -7,345 +7,347 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } - SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ - SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); } - SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index ba952c6754..cef4fed02c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm/unistd_32.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,linux @@ -226,7 +226,6 @@ const ( SYS_PIVOT_ROOT = 217 SYS_MINCORE = 218 SYS_MADVISE = 219 - SYS_MADVISE1 = 219 SYS_GETDENTS64 = 220 SYS_FCNTL64 = 221 SYS_GETTID = 224 @@ -352,4 +351,38 @@ const ( SYS_SETNS = 346 SYS_PROCESS_VM_READV = 347 SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index ddac31f58a..49bfa1270a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm/unistd_64.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,linux @@ -318,4 +318,24 @@ const ( SYS_GETCPU = 309 SYS_PROCESS_VM_READV = 310 SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 45ced17fc4..97b182ef5b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -1,13 +1,11 @@ -// mksysnum_linux.pl -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,linux package unix const ( - SYS_OABI_SYSCALL_BASE = 0 - SYS_SYSCALL_BASE = 0 SYS_RESTART_SYSCALL = 0 SYS_EXIT = 1 SYS_FORK = 2 @@ -20,21 +18,16 @@ const ( SYS_UNLINK = 10 SYS_EXECVE = 11 SYS_CHDIR = 12 - SYS_TIME = 13 SYS_MKNOD = 14 SYS_CHMOD = 15 SYS_LCHOWN = 16 SYS_LSEEK = 19 SYS_GETPID = 20 SYS_MOUNT = 21 - SYS_UMOUNT = 22 SYS_SETUID = 23 SYS_GETUID = 24 - SYS_STIME = 25 SYS_PTRACE = 26 - SYS_ALARM = 27 SYS_PAUSE = 29 - SYS_UTIME = 30 SYS_ACCESS = 33 SYS_NICE = 34 SYS_SYNC = 36 @@ -69,20 +62,16 @@ const ( SYS_SIGPENDING = 73 SYS_SETHOSTNAME = 74 SYS_SETRLIMIT = 75 - SYS_GETRLIMIT = 76 SYS_GETRUSAGE = 77 SYS_GETTIMEOFDAY = 78 SYS_SETTIMEOFDAY = 79 SYS_GETGROUPS = 80 SYS_SETGROUPS = 81 - SYS_SELECT = 82 SYS_SYMLINK = 83 SYS_READLINK = 85 SYS_USELIB = 86 SYS_SWAPON = 87 SYS_REBOOT = 88 - SYS_READDIR = 89 - SYS_MMAP = 90 SYS_MUNMAP = 91 SYS_TRUNCATE = 92 SYS_FTRUNCATE = 93 @@ -92,7 +81,6 @@ const ( SYS_SETPRIORITY = 97 SYS_STATFS = 99 SYS_FSTATFS = 100 - SYS_SOCKETCALL = 102 SYS_SYSLOG = 103 SYS_SETITIMER = 104 SYS_GETITIMER = 105 @@ -100,11 +88,9 @@ const ( SYS_LSTAT = 107 SYS_FSTAT = 108 SYS_VHANGUP = 111 - SYS_SYSCALL = 113 SYS_WAIT4 = 114 SYS_SWAPOFF = 115 SYS_SYSINFO = 116 - SYS_IPC = 117 SYS_FSYNC = 118 SYS_SIGRETURN = 119 SYS_CLONE = 120 @@ -353,4 +339,23 @@ const ( SYS_SETNS = 375 SYS_PROCESS_VM_READV = 376 SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 2e9514f280..640784357f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm-generic/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,linux @@ -269,4 +269,17 @@ const ( SYS_SCHED_GETATTR = 275 SYS_RENAMEAT2 = 276 SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go new file mode 100644 index 0000000000..939567c099 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -0,0 +1,374 @@ +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 5ffe1c7191..09db959690 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build mips64,linux @@ -324,4 +324,11 @@ const ( SYS_EXECVEAT = 5316 SYS_USERFAULTFD = 5317 SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index d192b940ce..d1b872a09b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build mips64le,linux @@ -324,4 +324,11 @@ const ( SYS_EXECVEAT = 5316 SYS_USERFAULTFD = 5317 SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go new file mode 100644 index 0000000000..82ba20f28b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -0,0 +1,374 @@ +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index e1b08f00d3..8944448aee 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build ppc64,linux @@ -357,4 +357,13 @@ const ( SYS_GETRANDOM = 359 SYS_MEMFD_CREATE = 360 SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 45e63f51a4..90a039be4f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/powerpc64le-linux-gnu/asm/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build ppc64le,linux @@ -350,4 +350,20 @@ const ( SYS_PROCESS_VM_WRITEV = 352 SYS_FINIT_MODULE = 353 SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 42d4f5cda8..aab0cdb183 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -1,5 +1,5 @@ -// mksysnum_linux.pl /usr/include/asm/unistd.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build s390x,linux @@ -303,6 +303,9 @@ const ( SYS_RECVMSG = 372 SYS_SHUTDOWN = 373 SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 SYS_SELECT = 142 SYS_GETRLIMIT = 191 SYS_LCHOWN = 198 diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go new file mode 100644 index 0000000000..c9c129dc42 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -0,0 +1,348 @@ +// mksysnum_linux.pl -Ilinux/usr/include -m64 -D__arch64__ linux/usr/include/asm/unistd.h +// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT + +// +build sparc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go index f60d8f9882..8afda9c451 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -134,6 +134,7 @@ const ( SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go index 48a91d4646..aea8dbec43 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -134,6 +134,7 @@ const ( SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go index 612ba662cb..c6158a7ef9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -134,6 +134,7 @@ const ( SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 0000000000..32653e53c7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,213 @@ +// mksysnum_openbsd.pl +// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT + +// +build arm,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int sys_open(const char *path, \ + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \ + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \ + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \ + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \ + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \ + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \ + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \ + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \ + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \ + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \ + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \ + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \ + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \ + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \ + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \ + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, \ + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \ + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, \ + SYS_EXECVE = 59 // { int sys_execve(const char *path, \ + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \ + SYS_STATFS = 63 // { int sys_statfs(const char *path, \ + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \ + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \ + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \ + SYS_SETITIMER = 69 // { int sys_setitimer(int which, \ + SYS_GETITIMER = 70 // { int sys_getitimer(int which, \ + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \ + SYS_KEVENT = 72 // { int sys_kevent(int fd, \ + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \ + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \ + SYS_UTIMES = 76 // { int sys_utimes(const char *path, \ + SYS_FUTIMES = 77 // { int sys_futimes(int fd, \ + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \ + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \ + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_SENDSYSLOG = 83 // { int sys_sendsyslog(const void *buf, size_t nbyte); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \ + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \ + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \ + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \ + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \ + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, \ + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \ + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \ + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \ + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, \ + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \ + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \ + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { ssize_t sys_readv(int fd, \ + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \ + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \ + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \ + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \ + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \ + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \ + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \ + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \ + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \ + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \ + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \ + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \ + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \ + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \ + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \ + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \ + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \ + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \ + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \ + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \ + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \ + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \ + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \ + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \ + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \ + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \ + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \ + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \ + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \ + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \ + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \ + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \ + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \ + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \ + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \ + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \ + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \ + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \ + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \ + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \ + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \ + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \ + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \ + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index 2de1d44e28..e61d78a54f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -1,6 +1,7 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build 386,darwin -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_darwin.go package unix @@ -445,3 +446,17 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 044657878c..2619155ff8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -1,6 +1,7 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build amd64,darwin -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_darwin.go package unix @@ -456,7 +457,16 @@ type Termios struct { Ospeed uint64 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 AT_SYMLINK_NOFOLLOW = 0x20 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index 66df363ce5..4dca0d4db2 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -447,3 +447,17 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index 85d56eabd3..f2881fd142 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -455,3 +455,17 @@ type Termios struct { Ispeed uint64 Ospeed uint64 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 8a6f4e1ce3..67c6bf883c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_dragonfly.go +// cgo -godefs types_dragonfly.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,dragonfly @@ -324,7 +324,7 @@ type IfData struct { Iqdrops uint64 Noproto uint64 Hwassist uint64 - Unused uint64 + Oqdrops uint64 Lastchange Timeval } @@ -441,3 +441,8 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +const ( + AT_FDCWD = 0xfffafdcd + AT_SYMLINK_NOFOLLOW = 0x1 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 8cf30947b4..5b28bcbbac 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -1,6 +1,7 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build 386,freebsd -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go package unix @@ -85,7 +86,7 @@ type Stat_t struct { Ctimespec Timespec Size int64 Blocks int64 - Blksize uint32 + Blksize int32 Flags uint32 Gen uint32 Lspare int32 @@ -288,9 +289,9 @@ type FdSet struct { } const ( - sizeofIfMsghdr = 0x64 + sizeofIfMsghdr = 0xa8 SizeofIfMsghdr = 0x60 - sizeofIfData = 0x54 + sizeofIfData = 0x98 SizeofIfData = 0x50 SizeofIfaMsghdr = 0x14 SizeofIfmaMsghdr = 0x10 @@ -322,31 +323,31 @@ type IfMsghdr struct { } type ifData struct { - Type uint8 - Physical uint8 - Addrlen uint8 - Hdrlen uint8 - Link_state uint8 - Vhid uint8 - Baudrate_pf uint8 - Datalen uint8 - Mtu uint32 - Metric uint32 - Baudrate uint32 - Ipackets uint32 - Ierrors uint32 - Opackets uint32 - Oerrors uint32 - Collisions uint32 - Ibytes uint32 - Obytes uint32 - Imcasts uint32 - Omcasts uint32 - Iqdrops uint32 - Noproto uint32 - Hwassist uint64 - Epoch int32 - Lastchange Timeval + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + X__ifi_epoch [8]byte + X__ifi_lastchange [16]byte } type IfData struct { @@ -500,3 +501,21 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type CapRights struct { + Rights [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index e5feb207be..c65d89e497 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -1,6 +1,7 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build amd64,freebsd -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go package unix @@ -85,7 +86,7 @@ type Stat_t struct { Ctimespec Timespec Size int64 Blocks int64 - Blksize uint32 + Blksize int32 Flags uint32 Gen uint32 Lspare int32 @@ -324,31 +325,31 @@ type IfMsghdr struct { } type ifData struct { - Type uint8 - Physical uint8 - Addrlen uint8 - Hdrlen uint8 - Link_state uint8 - Vhid uint8 - Baudrate_pf uint8 - Datalen uint8 - Mtu uint64 - Metric uint64 - Baudrate uint64 - Ipackets uint64 - Ierrors uint64 - Opackets uint64 - Oerrors uint64 - Collisions uint64 - Ibytes uint64 - Obytes uint64 - Imcasts uint64 - Omcasts uint64 - Iqdrops uint64 - Noproto uint64 - Hwassist uint64 - Epoch int64 - Lastchange Timeval + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + X__ifi_epoch [8]byte + X__ifi_lastchange [16]byte } type IfData struct { @@ -503,3 +504,21 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type CapRights struct { + Rights [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 5472b54284..42c0a502cf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -fsigned-char types_freebsd.go +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,freebsd @@ -88,7 +88,7 @@ type Stat_t struct { Ctimespec Timespec Size int64 Blocks int64 - Blksize uint32 + Blksize int32 Flags uint32 Gen uint32 Lspare int32 @@ -142,6 +142,15 @@ type Fsid struct { Val [2]int32 } +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + type RawSockaddrInet4 struct { Len uint8 Family uint8 @@ -282,9 +291,9 @@ type FdSet struct { } const ( - sizeofIfMsghdr = 0x70 + sizeofIfMsghdr = 0xa8 SizeofIfMsghdr = 0x70 - sizeofIfData = 0x60 + sizeofIfData = 0x98 SizeofIfData = 0x60 SizeofIfaMsghdr = 0x14 SizeofIfmaMsghdr = 0x10 @@ -316,31 +325,31 @@ type IfMsghdr struct { } type ifData struct { - Type uint8 - Physical uint8 - Addrlen uint8 - Hdrlen uint8 - Link_state uint8 - Vhid uint8 - Baudrate_pf uint8 - Datalen uint8 - Mtu uint32 - Metric uint32 - Baudrate uint32 - Ipackets uint32 - Ierrors uint32 - Opackets uint32 - Oerrors uint32 - Collisions uint32 - Ibytes uint32 - Obytes uint32 - Imcasts uint32 - Omcasts uint32 - Iqdrops uint32 - Noproto uint32 - Hwassist uint64 - Epoch int64 - Lastchange Timeval + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + X__ifi_epoch [8]byte + X__ifi_lastchange [16]byte } type IfData struct { @@ -495,3 +504,21 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type CapRights struct { + Rights [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index f3ddf5345b..7b36896ea3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build 386,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -151,6 +152,26 @@ type Flock_t struct { Pid int32 } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -203,6 +224,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -241,6 +285,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -252,10 +303,9 @@ type Msghdr struct { } type Cmsghdr struct { - Len uint32 - Level int32 - Type int32 - X__cmsg_data [0]uint8 + Len uint32 + Level int32 + Type int32 } type Inet4Pktinfo struct { @@ -326,10 +376,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x1c SizeofCmsghdr = 0xc SizeofInet4Pktinfo = 0xc @@ -370,7 +425,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x1d + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -520,7 +575,6 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]int8 } const SizeofInotifyEvent = 0x10 @@ -612,9 +666,15 @@ const ( ) type Sigset_t struct { - X__val [16]uint64 + X__val [32]uint32 } +const RNDGETENTCNT = 0x80045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -625,3 +685,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index a923bef353..e54fa9847d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build amd64,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -98,21 +99,21 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint32 - Uid uint32 - Gid uint32 - X__pad0 int32 - Rdev uint64 - Size int64 - Blksize int64 - Blocks int64 - Atim Timespec - Mtim Timespec - Ctim Timespec - X__unused [3]int64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + X__pad0 int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [3]int64 } type Statfs_t struct { @@ -153,6 +154,26 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -205,6 +226,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -243,6 +287,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -256,10 +307,9 @@ type Msghdr struct { } type Cmsghdr struct { - Len uint64 - Level int32 - Type int32 - X__cmsg_data [0]uint8 + Len uint64 + Level int32 + Type int32 } type Inet4Pktinfo struct { @@ -330,10 +380,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -374,7 +429,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x1d + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -524,7 +579,6 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]int8 } const SizeofInotifyEvent = 0x10 @@ -633,6 +687,12 @@ type Sigset_t struct { X__val [16]uint64 } +const RNDGETENTCNT = 0x80045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -643,3 +703,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 817ac9c29a..bff6ce2580 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build arm,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -155,6 +156,35 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + type RawSockaddrInet4 struct { Family uint16 Port uint16 @@ -198,6 +228,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -236,6 +289,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -247,10 +307,9 @@ type Msghdr struct { } type Cmsghdr struct { - Len uint32 - Level int32 - Type int32 - X__cmsg_data [0]uint8 + Len uint32 + Level int32 + Type int32 } type Inet4Pktinfo struct { @@ -321,10 +380,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x1c SizeofCmsghdr = 0xc SizeofInet4Pktinfo = 0xc @@ -365,7 +429,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x1d + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -515,7 +579,6 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]uint8 } const SizeofInotifyEvent = 0x10 @@ -592,9 +655,15 @@ const ( ) type Sigset_t struct { - X__val [16]uint64 + X__val [32]uint32 } +const RNDGETENTCNT = 0x80045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -605,3 +674,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index e786addf78..a3d0cc4a15 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build arm64,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -fsigned-char types_linux.go package unix @@ -98,22 +99,22 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Ino uint64 - Mode uint32 - Nlink uint32 - Uid uint32 - Gid uint32 - Rdev uint64 - X__pad1 uint64 - Size int64 - Blksize int32 - X__pad2 int32 - Blocks int64 - Atim Timespec - Mtim Timespec - Ctim Timespec - X__glibc_reserved [2]int32 + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + X__pad1 uint64 + Size int64 + Blksize int32 + X__pad2 int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 } type Statfs_t struct { @@ -154,6 +155,26 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -206,6 +227,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -244,6 +288,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -257,10 +308,9 @@ type Msghdr struct { } type Cmsghdr struct { - Len uint64 - Level int32 - Type int32 - X__cmsg_data [0]uint8 + Len uint64 + Level int32 + Type int32 } type Inet4Pktinfo struct { @@ -331,10 +381,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -375,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x22 + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -525,7 +580,6 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]int8 } const SizeofInotifyEvent = 0x10 @@ -612,6 +666,12 @@ type Sigset_t struct { X__val [16]uint64 } +const RNDGETENTCNT = 0x80045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -622,3 +682,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go new file mode 100644 index 0000000000..8fa6603fb8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -0,0 +1,789 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + Pad_cgo_0 [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + Pad_cgo_0 [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + Pad_cgo_1 [4]byte +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + Pad_cgo_0 [5]byte +} + +type Fsid struct { + X__val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Pad_cgo_0 [4]byte + Start int64 + Len int64 + Pid int32 + Pad_cgo_1 [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Pad_cgo_0 [2]byte + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 +) + +const ( + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_MAX = 0x2b + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + X__ifi_pad uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Pad_cgo_0 [2]byte + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + X_f [8]int8 +} + +type Utsname struct { + Sysname [65]int8 + Nodename [65]int8 + Release [65]int8 + Version [65]int8 + Machine [65]int8 + Domainname [65]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + X__val [32]uint32 +} + +const RNDGETENTCNT = 0x40045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index b29894deba..3e5fc62524 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build mips64,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -99,7 +100,7 @@ type _Gid_t uint32 type Stat_t struct { Dev uint32 - Pad1 [3]int32 + Pad1 [3]uint32 Ino uint64 Mode uint32 Nlink uint32 @@ -154,6 +155,26 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -206,6 +227,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -244,6 +288,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -330,10 +381,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -374,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x27 + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -529,17 +585,13 @@ type InotifyEvent struct { const SizeofInotifyEvent = 0x10 type PtraceRegs struct { - Regs [102]uint64 - U_tsize uint64 - U_dsize uint64 - U_ssize uint64 - Start_code uint64 - Start_data uint64 - Start_stack uint64 - Signal int64 - U_ar0 uint64 - Magic uint64 - U_comm [32]int8 + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 } type FdSet struct { @@ -616,12 +668,127 @@ type Sigset_t struct { X__val [16]uint64 } +const RNDGETENTCNT = 0x40045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { - Iflag uint32 - Oflag uint32 - Cflag uint32 - Lflag uint32 - Line uint8 - Cc [32]uint8 - Pad_cgo_0 [3]byte + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 } + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index d9af71b696..f9bd1ab0cf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build mips64le,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -99,7 +100,7 @@ type _Gid_t uint32 type Stat_t struct { Dev uint32 - Pad1 [3]int32 + Pad1 [3]uint32 Ino uint64 Mode uint32 Nlink uint32 @@ -154,6 +155,26 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -206,6 +227,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -244,6 +288,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -330,10 +381,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -374,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x27 + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -529,17 +585,13 @@ type InotifyEvent struct { const SizeofInotifyEvent = 0x10 type PtraceRegs struct { - Regs [102]uint64 - U_tsize uint64 - U_dsize uint64 - U_ssize uint64 - Start_code uint64 - Start_data uint64 - Start_stack uint64 - Signal int64 - U_ar0 uint64 - Magic uint64 - U_comm [32]int8 + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 } type FdSet struct { @@ -616,12 +668,127 @@ type Sigset_t struct { X__val [16]uint64 } +const RNDGETENTCNT = 0x40045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { - Iflag uint32 - Oflag uint32 - Cflag uint32 - Lflag uint32 - Line uint8 - Cc [32]uint8 - Pad_cgo_0 [3]byte + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 } + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go new file mode 100644 index 0000000000..74c5421327 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -0,0 +1,789 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + Pad_cgo_0 [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + Pad_cgo_0 [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + Pad_cgo_1 [4]byte +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + Pad_cgo_0 [5]byte +} + +type Fsid struct { + X__val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Pad_cgo_0 [4]byte + Start int64 + Len int64 + Pid int32 + Pad_cgo_1 [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Pad_cgo_0 [2]byte + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 +) + +const ( + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_MAX = 0x2b + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + X__ifi_pad uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Pad_cgo_0 [2]byte + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + X_f [8]int8 +} + +type Utsname struct { + Sysname [65]int8 + Nodename [65]int8 + Release [65]int8 + Version [65]int8 + Machine [65]int8 + Domainname [65]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + X__val [32]uint32 +} + +const RNDGETENTCNT = 0x40045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 4218170a9c..2b0b18e94b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build ppc64,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -98,23 +99,23 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint32 - Uid uint32 - Gid uint32 - X__pad2 int32 - Rdev uint64 - Size int64 - Blksize int64 - Blocks int64 - Atim Timespec - Mtim Timespec - Ctim Timespec - X__glibc_reserved4 uint64 - X__glibc_reserved5 uint64 - X__glibc_reserved6 uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + X__pad2 int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 } type Statfs_t struct { @@ -155,6 +156,26 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -207,6 +228,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -245,6 +289,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -258,10 +309,9 @@ type Msghdr struct { } type Cmsghdr struct { - Len uint64 - Level int32 - Type int32 - X__cmsg_data [0]uint8 + Len uint64 + Level int32 + Type int32 } type Inet4Pktinfo struct { @@ -332,10 +382,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -376,7 +431,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x23 + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -526,7 +581,6 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]uint8 } const SizeofInotifyEvent = 0x10 @@ -622,6 +676,12 @@ type Sigset_t struct { X__val [16]uint64 } +const RNDGETENTCNT = 0x40045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -632,3 +692,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 7db4c78c60..b2b59992d4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build ppc64le,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go package unix @@ -98,23 +99,23 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint32 - Uid uint32 - Gid uint32 - X__pad2 int32 - Rdev uint64 - Size int64 - Blksize int64 - Blocks int64 - Atim Timespec - Mtim Timespec - Ctim Timespec - X__glibc_reserved4 uint64 - X__glibc_reserved5 uint64 - X__glibc_reserved6 uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + X__pad2 int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 } type Statfs_t struct { @@ -155,6 +156,26 @@ type Flock_t struct { Pad_cgo_1 [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -207,6 +228,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -245,6 +289,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -258,10 +309,9 @@ type Msghdr struct { } type Cmsghdr struct { - Len uint64 - Level int32 - Type int32 - X__cmsg_data [0]uint8 + Len uint64 + Level int32 + Type int32 } type Inet4Pktinfo struct { @@ -332,10 +382,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -376,7 +431,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x22 + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -526,7 +581,6 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]uint8 } const SizeofInotifyEvent = 0x10 @@ -622,6 +676,12 @@ type Sigset_t struct { X__val [16]uint64 } +const RNDGETENTCNT = 0x40045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -632,3 +692,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 76ee57cbfd..5e0aa6636c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,6 +1,7 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build s390x,linux -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- -fsigned-char types_linux.go package unix @@ -154,6 +155,26 @@ type Flock_t struct { _ [4]byte } +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + const ( FADV_NORMAL = 0x0 FADV_RANDOM = 0x1 @@ -206,6 +227,29 @@ type RawSockaddrHCI struct { Channel uint16 } +type RawSockaddrCAN struct { + Family uint16 + _ [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -244,6 +288,13 @@ type IPv6Mreq struct { Interface uint32 } +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + type Msghdr struct { Name *byte Namelen uint32 @@ -330,10 +381,15 @@ const ( SizeofSockaddrLinklayer = 0x14 SizeofSockaddrNetlink = 0xc SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 SizeofMsghdr = 0x38 SizeofCmsghdr = 0x10 SizeofInet4Pktinfo = 0xc @@ -374,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x27 + IFLA_MAX = 0x2b RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -634,9 +690,15 @@ const ( ) type Sigset_t struct { - X__val [16]uint64 + _ [16]uint64 } +const RNDGETENTCNT = 0x80045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +const _SC_PAGESIZE = 0x1e + type Termios struct { Iflag uint32 Oflag uint32 @@ -647,3 +709,111 @@ type Termios struct { Ispeed uint32 Ospeed uint32 } + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + _ [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go new file mode 100644 index 0000000000..22bdab9614 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -0,0 +1,666 @@ +// +build sparc64,linux +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_linux.go | go run mkpost.go + +package unix + +const ( + sizeofPtr = 0x8 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Timex struct { + Modes uint32 + Pad_cgo_0 [4]byte + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Pad_cgo_1 [4]byte + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Pad_cgo_2 [4]byte + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + Pad_cgo_3 [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + X__pad1 uint16 + Pad_cgo_0 [6]byte + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + X__pad2 uint16 + Pad_cgo_1 [6]byte + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + X__glibc_reserved4 uint64 + X__glibc_reserved5 uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + Pad_cgo_0 [5]byte +} + +type Fsid struct { + X__val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Pad_cgo_0 [4]byte + Start int64 + Len int64 + Pid int32 + X__glibc_reserved int16 + Pad_cgo_1 [2]byte +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrCAN struct { + Family uint16 + Pad_cgo_0 [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Pad_cgo_0 [2]byte + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 +) + +const ( + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_MAX = 0x2a + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + X__ifi_pad uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Pad_cgo_0 [6]byte + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [16]uint64 + Tstate uint64 + Tpc uint64 + Tnpc uint64 + Y uint32 + Magic uint32 +} + +type ptracePsw struct { +} + +type ptraceFpregs struct { +} + +type ptracePer struct { +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Pad_cgo_0 [4]byte + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + X_f [0]int8 + Pad_cgo_1 [4]byte +} + +type Utsname struct { + Sysname [65]int8 + Nodename [65]int8 + Release [65]int8 + Version [65]int8 + Machine [65]int8 + Domainname [65]int8 +} + +type Ustat_t struct { + Tfree int32 + Pad_cgo_0 [4]byte + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + Pad_cgo_1 [4]byte +} + +type EpollEvent struct { + Events uint32 + X_padFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x800 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + X__val [16]uint64 +} + +const _SC_PAGESIZE = 0x1e + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index caf755fb86..42f99c0a30 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -382,6 +382,11 @@ type Termios struct { Ospeed int32 } +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + type Sysctlnode struct { Flags uint32 Num int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 91b4a5305a..ff290ba069 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -389,6 +389,11 @@ type Termios struct { Ospeed int32 } +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + type Sysctlnode struct { Flags uint32 Num int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index c0758f9d3f..66dbd7c050 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -387,6 +387,11 @@ type Termios struct { Ospeed int32 } +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + type Sysctlnode struct { Flags uint32 Num int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 860a469796..20fc9f450c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -439,3 +439,8 @@ type Termios struct { Ispeed int32 Ospeed int32 } + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 23c52727f7..46fe9490c8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -446,3 +446,8 @@ type Termios struct { Ispeed int32 Ospeed int32 } + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 0000000000..62e1f7c04d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,439 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_openbsd.go + +// +build arm,openbsd + +package unix + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +const ( + S_IFMT = 0xf000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + X__st_birthtim Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]uint8 + F_mntonname [90]uint8 + F_mntfromname [90]uint8 + F_mntfromspec [90]uint8 + Pad_cgo_0 [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + X__d_padding [4]uint8 + Name [256]uint8 +} + +type Fsid struct { + Val [2]int32 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x80 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Pad uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]uint8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 02777e4d8d..92336f9f92 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -1,6 +1,7 @@ -// +build amd64,solaris -// Created by cgo -godefs - DO NOT EDIT // cgo -godefs types_solaris.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris package unix @@ -128,6 +129,24 @@ type Dirent struct { Pad_cgo_0 [5]byte } +type _Fsblkcnt_t uint64 + +type Statvfs_t struct { + Bsize uint64 + Frsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fsid uint64 + Basetype [16]int8 + Flag uint64 + Namemax uint64 + Fstr [32]int8 +} + type RawSockaddrInet4 struct { Family uint16 Port uint16 diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index 0f62046748..e77a370550 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -160,7 +160,6 @@ func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { default: panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".") } - return } // A LazyDLL implements access to a single DLL. diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go new file mode 100644 index 0000000000..f63e899acb --- /dev/null +++ b/vendor/golang.org/x/sys/windows/memory_windows.go @@ -0,0 +1,26 @@ +// Copyright 2017 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 windows + +const ( + MEM_COMMIT = 0x00001000 + MEM_RESERVE = 0x00002000 + MEM_DECOMMIT = 0x00004000 + MEM_RELEASE = 0x00008000 + MEM_RESET = 0x00080000 + MEM_TOP_DOWN = 0x00100000 + MEM_WRITE_WATCH = 0x00200000 + MEM_PHYSICAL = 0x00400000 + MEM_RESET_UNDO = 0x01000000 + MEM_LARGE_PAGES = 0x20000000 + + PAGE_NOACCESS = 0x01 + PAGE_READONLY = 0x02 + PAGE_READWRITE = 0x04 + PAGE_WRITECOPY = 0x08 + PAGE_EXECUTE_READ = 0x20 + PAGE_EXECUTE_READWRITE = 0x40 + PAGE_EXECUTE_WRITECOPY = 0x80 +) diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go index f087ce5ada..d0beb19564 100644 --- a/vendor/golang.org/x/sys/windows/registry/key.go +++ b/vendor/golang.org/x/sys/windows/registry/key.go @@ -57,11 +57,12 @@ const ( // An application can use these keys as entry points to the registry. // Normally these keys are used in OpenKey to open new keys, // but they can also be used anywhere a Key is required. - CLASSES_ROOT = Key(syscall.HKEY_CLASSES_ROOT) - CURRENT_USER = Key(syscall.HKEY_CURRENT_USER) - LOCAL_MACHINE = Key(syscall.HKEY_LOCAL_MACHINE) - USERS = Key(syscall.HKEY_USERS) - CURRENT_CONFIG = Key(syscall.HKEY_CURRENT_CONFIG) + CLASSES_ROOT = Key(syscall.HKEY_CLASSES_ROOT) + CURRENT_USER = Key(syscall.HKEY_CURRENT_USER) + LOCAL_MACHINE = Key(syscall.HKEY_LOCAL_MACHINE) + USERS = Key(syscall.HKEY_USERS) + CURRENT_CONFIG = Key(syscall.HKEY_CURRENT_CONFIG) + PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA) ) // Close closes open key k. @@ -87,6 +88,27 @@ func OpenKey(k Key, path string, access uint32) (Key, error) { return Key(subkey), nil } +// OpenRemoteKey opens a predefined registry key on another +// computer pcname. The key to be opened is specified by k, but +// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS. +// If pcname is "", OpenRemoteKey returns local computer key. +func OpenRemoteKey(pcname string, k Key) (Key, error) { + var err error + var p *uint16 + if pcname != "" { + p, err = syscall.UTF16PtrFromString(`\\` + pcname) + if err != nil { + return 0, err + } + } + var remoteKey syscall.Handle + err = regConnectRegistry(p, syscall.Handle(k), &remoteKey) + if err != nil { + return 0, err + } + return Key(remoteKey), nil +} + // ReadSubKeyNames returns the names of subkeys of key k. // The parameter n controls the number of returned names, // analogous to the way os.File.Readdirnames works. diff --git a/vendor/golang.org/x/sys/windows/registry/registry_test.go b/vendor/golang.org/x/sys/windows/registry/registry_test.go index 9c1b7820e9..3cb9771ca0 100644 --- a/vendor/golang.org/x/sys/windows/registry/registry_test.go +++ b/vendor/golang.org/x/sys/windows/registry/registry_test.go @@ -336,7 +336,7 @@ func testGetValue(t *testing.T, k registry.Key, test ValueTest, size int) { // read data with short buffer gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size-1)) if err == nil { - t.Errorf("GetValue(%s, [%d]byte) should fail, but suceeded", test.Name, size-1) + t.Errorf("GetValue(%s, [%d]byte) should fail, but succeeded", test.Name, size-1) return } if err != registry.ErrShortBuffer { diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go index a6525dac5d..e66643cbaa 100644 --- a/vendor/golang.org/x/sys/windows/registry/syscall.go +++ b/vendor/golang.org/x/sys/windows/registry/syscall.go @@ -27,5 +27,6 @@ func LoadRegLoadMUIString() error { //sys regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW //sys regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW //sys regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW +//sys regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW //sys expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go index 0fa24c6db4..ceebdd7726 100644 --- a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go @@ -3,13 +3,39 @@ package registry import ( - "golang.org/x/sys/windows" "syscall" "unsafe" + + "golang.org/x/sys/windows" ) var _ unsafe.Pointer +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + var ( modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") modkernel32 = windows.NewLazySystemDLL("kernel32.dll") @@ -20,6 +46,7 @@ var ( procRegEnumValueW = modadvapi32.NewProc("RegEnumValueW") procRegDeleteValueW = modadvapi32.NewProc("RegDeleteValueW") procRegLoadMUIStringW = modadvapi32.NewProc("RegLoadMUIStringW") + procRegConnectRegistryW = modadvapi32.NewProc("RegConnectRegistryW") procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW") ) @@ -71,12 +98,20 @@ func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint return } +func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go index 1c11d392f0..a500dd7dfc 100644 --- a/vendor/golang.org/x/sys/windows/service.go +++ b/vendor/golang.org/x/sys/windows/service.go @@ -95,6 +95,8 @@ const ( SERVICE_CONFIG_FAILURE_ACTIONS = 2 NO_ERROR = 0 + + SC_ENUM_PROCESS_INFO = 0 ) type SERVICE_STATUS struct { @@ -128,6 +130,24 @@ type SERVICE_DESCRIPTION struct { Description *uint16 } +type SERVICE_STATUS_PROCESS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 + ProcessId uint32 + ServiceFlags uint32 +} + +type ENUM_SERVICE_STATUS_PROCESS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatusProcess SERVICE_STATUS_PROCESS +} + //sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle //sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW //sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW @@ -141,3 +161,4 @@ type SERVICE_DESCRIPTION struct { //sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW //sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W //sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W +//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW diff --git a/vendor/golang.org/x/sys/windows/svc/debug/service.go b/vendor/golang.org/x/sys/windows/svc/debug/service.go index d5ab94b2c7..123df98939 100644 --- a/vendor/golang.org/x/sys/windows/svc/debug/service.go +++ b/vendor/golang.org/x/sys/windows/svc/debug/service.go @@ -31,7 +31,7 @@ func Run(name string, handler svc.Handler) error { for { select { case <-sig: - cmds <- svc.ChangeRequest{svc.Stop, status} + cmds <- svc.ChangeRequest{svc.Stop, 0, 0, status} case status = <-changes: } } diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go index da8ceb6ed8..76965b5601 100644 --- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go +++ b/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go @@ -14,6 +14,7 @@ package mgr import ( "syscall" "unicode/utf16" + "unsafe" "golang.org/x/sys/windows" ) @@ -76,8 +77,10 @@ func toStringBlock(ss []string) *uint16 { // CreateService installs new service name on the system. // The service will be executed by running exepath binary. // Use config c to specify service parameters. -// If service StartType is set to StartAutomatic, -// args will be passed to svc.Handle.Execute. +// Any args will be passed as command-line arguments when +// the service is started; these arguments are distinct from +// the arguments passed to Service.Start or via the "Start +// parameters" field in the service's Properties dialog box. func (m *Mgr) CreateService(name, exepath string, c Config, args ...string) (*Service, error) { if c.StartType == 0 { c.StartType = StartManual @@ -117,3 +120,43 @@ func (m *Mgr) OpenService(name string) (*Service, error) { } return &Service{Name: name, Handle: h}, nil } + +// ListServices enumerates services in the specified +// service control manager database m. +// If the caller does not have the SERVICE_QUERY_STATUS +// access right to a service, the service is silently +// omitted from the list of services returned. +func (m *Mgr) ListServices() ([]string, error) { + var err error + var bytesNeeded, servicesReturned uint32 + var buf []byte + for { + var p *byte + if len(buf) > 0 { + p = &buf[0] + } + err = windows.EnumServicesStatusEx(m.Handle, windows.SC_ENUM_PROCESS_INFO, + windows.SERVICE_WIN32, windows.SERVICE_STATE_ALL, + p, uint32(len(buf)), &bytesNeeded, &servicesReturned, nil, nil) + if err == nil { + break + } + if err != syscall.ERROR_MORE_DATA { + return nil, err + } + if bytesNeeded <= uint32(len(buf)) { + return nil, err + } + buf = make([]byte, bytesNeeded) + } + if servicesReturned == 0 { + return nil, nil + } + services := (*[1 << 20]windows.ENUM_SERVICE_STATUS_PROCESS)(unsafe.Pointer(&buf[0]))[:servicesReturned] + var names []string + for _, s := range services { + name := syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(s.ServiceName))[:]) + names = append(names, name) + } + return names, nil +} diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go index 78be970c05..e67407cf11 100644 --- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go +++ b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go @@ -150,5 +150,20 @@ func TestMyService(t *testing.T) { testConfig(t, s, c) + svcnames, err := m.ListServices() + if err != nil { + t.Fatalf("ListServices failed: %v", err) + } + var myserviceIsInstalled bool + for _, sn := range svcnames { + if sn == name { + myserviceIsInstalled = true + break + } + } + if !myserviceIsInstalled { + t.Errorf("ListServices failed to find %q service", name) + } + remove(t, s) } diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/service.go b/vendor/golang.org/x/sys/windows/svc/mgr/service.go index 465f3c3d23..fdc46af5fc 100644 --- a/vendor/golang.org/x/sys/windows/svc/mgr/service.go +++ b/vendor/golang.org/x/sys/windows/svc/mgr/service.go @@ -15,8 +15,6 @@ import ( // TODO(brainman): Use EnumDependentServices to enumerate dependent services. -// TODO(brainman): Use EnumServicesStatus to enumerate services in the specified service control manager database. - // Service is used to access Windows service. type Service struct { Name string @@ -39,7 +37,7 @@ func (s *Service) Start(args ...string) error { var p **uint16 if len(args) > 0 { vs := make([]*uint16, len(args)) - for i, _ := range vs { + for i := range vs { vs[i] = syscall.StringToUTF16Ptr(args[i]) } p = &vs[0] diff --git a/vendor/golang.org/x/sys/windows/svc/service.go b/vendor/golang.org/x/sys/windows/svc/service.go index 9864f7a72f..903cba3f12 100644 --- a/vendor/golang.org/x/sys/windows/svc/service.go +++ b/vendor/golang.org/x/sys/windows/svc/service.go @@ -35,11 +35,20 @@ const ( type Cmd uint32 const ( - Stop = Cmd(windows.SERVICE_CONTROL_STOP) - Pause = Cmd(windows.SERVICE_CONTROL_PAUSE) - Continue = Cmd(windows.SERVICE_CONTROL_CONTINUE) - Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE) - Shutdown = Cmd(windows.SERVICE_CONTROL_SHUTDOWN) + Stop = Cmd(windows.SERVICE_CONTROL_STOP) + Pause = Cmd(windows.SERVICE_CONTROL_PAUSE) + Continue = Cmd(windows.SERVICE_CONTROL_CONTINUE) + Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE) + Shutdown = Cmd(windows.SERVICE_CONTROL_SHUTDOWN) + ParamChange = Cmd(windows.SERVICE_CONTROL_PARAMCHANGE) + NetBindAdd = Cmd(windows.SERVICE_CONTROL_NETBINDADD) + NetBindRemove = Cmd(windows.SERVICE_CONTROL_NETBINDREMOVE) + NetBindEnable = Cmd(windows.SERVICE_CONTROL_NETBINDENABLE) + NetBindDisable = Cmd(windows.SERVICE_CONTROL_NETBINDDISABLE) + DeviceEvent = Cmd(windows.SERVICE_CONTROL_DEVICEEVENT) + HardwareProfileChange = Cmd(windows.SERVICE_CONTROL_HARDWAREPROFILECHANGE) + PowerEvent = Cmd(windows.SERVICE_CONTROL_POWEREVENT) + SessionChange = Cmd(windows.SERVICE_CONTROL_SESSIONCHANGE) ) // Accepted is used to describe commands accepted by the service. @@ -47,9 +56,14 @@ const ( type Accepted uint32 const ( - AcceptStop = Accepted(windows.SERVICE_ACCEPT_STOP) - AcceptShutdown = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN) - AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE) + AcceptStop = Accepted(windows.SERVICE_ACCEPT_STOP) + AcceptShutdown = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN) + AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE) + AcceptParamChange = Accepted(windows.SERVICE_ACCEPT_PARAMCHANGE) + AcceptNetBindChange = Accepted(windows.SERVICE_ACCEPT_NETBINDCHANGE) + AcceptHardwareProfileChange = Accepted(windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE) + AcceptPowerEvent = Accepted(windows.SERVICE_ACCEPT_POWEREVENT) + AcceptSessionChange = Accepted(windows.SERVICE_ACCEPT_SESSIONCHANGE) ) // Status combines State and Accepted commands to fully describe running service. @@ -63,6 +77,8 @@ type Status struct { // ChangeRequest is sent to the service Handler to request service status change. type ChangeRequest struct { Cmd Cmd + EventType uint32 + EventData uintptr CurrentStatus Status } @@ -85,16 +101,16 @@ type Handler interface { var ( // These are used by asm code. - goWaitsH uintptr - cWaitsH uintptr - ssHandle uintptr - sName *uint16 - sArgc uintptr - sArgv **uint16 - ctlHandlerProc uintptr - cSetEvent uintptr - cWaitForSingleObject uintptr - cRegisterServiceCtrlHandlerW uintptr + goWaitsH uintptr + cWaitsH uintptr + ssHandle uintptr + sName *uint16 + sArgc uintptr + sArgv **uint16 + ctlHandlerExProc uintptr + cSetEvent uintptr + cWaitForSingleObject uintptr + cRegisterServiceCtrlHandlerExW uintptr ) func init() { @@ -102,12 +118,16 @@ func init() { cSetEvent = k.MustFindProc("SetEvent").Addr() cWaitForSingleObject = k.MustFindProc("WaitForSingleObject").Addr() a := syscall.MustLoadDLL("advapi32.dll") - cRegisterServiceCtrlHandlerW = a.MustFindProc("RegisterServiceCtrlHandlerW").Addr() + cRegisterServiceCtrlHandlerExW = a.MustFindProc("RegisterServiceCtrlHandlerExW").Addr() } +// The HandlerEx prototype also has a context pointer but since we don't use +// it at start-up time we don't have to pass it over either. type ctlEvent struct { - cmd Cmd - errno uint32 + cmd Cmd + eventType uint32 + eventData uintptr + errno uint32 } // service provides access to windows service api. @@ -165,6 +185,21 @@ func (s *service) updateStatus(status *Status, ec *exitCode) error { if status.Accepts&AcceptPauseAndContinue != 0 { t.ControlsAccepted |= windows.SERVICE_ACCEPT_PAUSE_CONTINUE } + if status.Accepts&AcceptParamChange != 0 { + t.ControlsAccepted |= windows.SERVICE_ACCEPT_PARAMCHANGE + } + if status.Accepts&AcceptNetBindChange != 0 { + t.ControlsAccepted |= windows.SERVICE_ACCEPT_NETBINDCHANGE + } + if status.Accepts&AcceptHardwareProfileChange != 0 { + t.ControlsAccepted |= windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE + } + if status.Accepts&AcceptPowerEvent != 0 { + t.ControlsAccepted |= windows.SERVICE_ACCEPT_POWEREVENT + } + if status.Accepts&AcceptSessionChange != 0 { + t.ControlsAccepted |= windows.SERVICE_ACCEPT_SESSIONCHANGE + } if ec.errno == 0 { t.Win32ExitCode = windows.NO_ERROR t.ServiceSpecificExitCode = windows.NO_ERROR @@ -208,6 +243,8 @@ func (s *service) run() { var outch chan ChangeRequest inch := s.c var cmd Cmd + var evtype uint32 + var evdata uintptr loop: for { select { @@ -219,7 +256,9 @@ loop: inch = nil outch = cmdsToHandler cmd = r.cmd - case outch <- ChangeRequest{cmd, status}: + evtype = r.eventType + evdata = r.eventData + case outch <- ChangeRequest{cmd, evtype, evdata, status}: inch = s.c outch = nil case c := <-changesFromHandler: @@ -276,8 +315,8 @@ func Run(name string, handler Handler) error { return err } - ctlHandler := func(ctl uint32) uintptr { - e := ctlEvent{cmd: Cmd(ctl)} + ctlHandler := func(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr { + e := ctlEvent{cmd: Cmd(ctl), eventType: evtype, eventData: evdata} // We assume that this callback function is running on // the same thread as Run. Nowhere in MS documentation // I could find statement to guarantee that. So putting @@ -288,6 +327,7 @@ func Run(name string, handler Handler) error { e.errno = sysErrNewThreadInCallback } s.c <- e + // Always return NO_ERROR (0) for now. return 0 } @@ -301,7 +341,7 @@ func Run(name string, handler Handler) error { goWaitsH = uintptr(s.goWaits.h) cWaitsH = uintptr(s.cWaits.h) sName = t[0].ServiceName - ctlHandlerProc, err = newCallback(ctlHandler) + ctlHandlerExProc, err = newCallback(ctlHandler) if err != nil { return err } @@ -314,3 +354,10 @@ func Run(name string, handler Handler) error { } return nil } + +// StatusHandle returns service status handle. It is safe to call this function +// from inside the Handler.Execute because then it is guaranteed to be set. +// This code will have to change once multiple services are possible per process. +func StatusHandle() windows.Handle { + return windows.Handle(ssHandle) +} diff --git a/vendor/golang.org/x/sys/windows/svc/sys_386.s b/vendor/golang.org/x/sys/windows/svc/sys_386.s index 5e11bfadb5..2c82a9d91d 100644 --- a/vendor/golang.org/x/sys/windows/svc/sys_386.s +++ b/vendor/golang.org/x/sys/windows/svc/sys_386.s @@ -22,7 +22,8 @@ TEXT ·servicemain(SB),7,$0 MOVL AX, (SP) MOVL $·servicectlhandler(SB), AX MOVL AX, 4(SP) - MOVL ·cRegisterServiceCtrlHandlerW(SB), AX + MOVL $0, 8(SP) + MOVL ·cRegisterServiceCtrlHandlerExW(SB), AX MOVL SP, BP CALL AX MOVL BP, SP @@ -61,7 +62,7 @@ exit: // I do not know why, but this seems to be the only way to call // ctlHandlerProc on Windows 7. -// func servicectlhandler(ctl uint32) uintptr +// func servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr { TEXT ·servicectlhandler(SB),7,$0 - MOVL ·ctlHandlerProc(SB), CX + MOVL ·ctlHandlerExProc(SB), CX JMP CX diff --git a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s index 87dbec8395..06b425900d 100644 --- a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s +++ b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s @@ -13,7 +13,8 @@ TEXT ·servicemain(SB),7,$0 MOVQ ·sName(SB), CX MOVQ $·servicectlhandler(SB), DX - MOVQ ·cRegisterServiceCtrlHandlerW(SB), AX + // BUG(pastarmovj): Figure out a way to pass in context in R8. + MOVQ ·cRegisterServiceCtrlHandlerExW(SB), AX CALL AX CMPQ AX, $0 JE exit @@ -35,7 +36,7 @@ exit: // I do not know why, but this seems to be the only way to call // ctlHandlerProc on Windows 7. -// func servicectlhandler(ctl uint32) uintptr +// func ·servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr { TEXT ·servicectlhandler(SB),7,$0 - MOVQ ·ctlHandlerProc(SB), AX + MOVQ ·ctlHandlerExProc(SB), AX JMP AX diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 592d73e036..c7ff24b554 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -93,7 +93,8 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] //sys CloseHandle(handle Handle) (err error) -//sys GetStdHandle(stdhandle int) (handle Handle, err error) [failretval==InvalidHandle] +//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] +//sys SetStdHandle(stdhandle uint32, handle Handle) (err error) //sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW //sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW //sys FindClose(handle Handle) (err error) @@ -109,6 +110,7 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW //sys SetEndOfFile(handle Handle) (err error) //sys GetSystemTimeAsFileTime(time *Filetime) +//sys GetSystemTimePreciseAsFileTime(time *Filetime) //sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] //sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) //sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) @@ -152,6 +154,9 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys FlushViewOfFile(addr uintptr, length uintptr) (err error) //sys VirtualLock(addr uintptr, length uintptr) (err error) //sys VirtualUnlock(addr uintptr, length uintptr) (err error) +//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc +//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree +//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect //sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile //sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW //sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW @@ -171,6 +176,8 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW //sys getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId //sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode +//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode +//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo //sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW //sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW //sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot @@ -181,8 +188,12 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW //sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW //sys GetCurrentThreadId() (id uint32) -//sys CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW +//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW +//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateEventExW +//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW //sys SetEvent(event Handle) (err error) = kernel32.SetEvent +//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent +//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent // syscall interface implementation for other packages @@ -311,8 +322,8 @@ var ( Stderr = getStdHandle(STD_ERROR_HANDLE) ) -func getStdHandle(h int) (fd Handle) { - r, _ := GetStdHandle(h) +func getStdHandle(stdhandle uint32) (fd Handle) { + r, _ := GetStdHandle(stdhandle) CloseOnExec(r) return r } @@ -484,6 +495,10 @@ func Chmod(path string, mode uint32) (err error) { return SetFileAttributes(p, attrs) } +func LoadGetSystemTimePreciseAsFileTime() error { + return procGetSystemTimePreciseAsFileTime.Find() +} + func LoadCancelIoEx() error { return procCancelIoEx.Find() } diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go new file mode 100644 index 0000000000..401a5f2d9a --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -0,0 +1,1282 @@ +// 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 windows + +import "syscall" + +const ( + // Windows errors. + ERROR_FILE_NOT_FOUND syscall.Errno = 2 + ERROR_PATH_NOT_FOUND syscall.Errno = 3 + ERROR_ACCESS_DENIED syscall.Errno = 5 + ERROR_NO_MORE_FILES syscall.Errno = 18 + ERROR_HANDLE_EOF syscall.Errno = 38 + ERROR_NETNAME_DELETED syscall.Errno = 64 + ERROR_FILE_EXISTS syscall.Errno = 80 + ERROR_BROKEN_PIPE syscall.Errno = 109 + ERROR_BUFFER_OVERFLOW syscall.Errno = 111 + ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 + ERROR_MOD_NOT_FOUND syscall.Errno = 126 + ERROR_PROC_NOT_FOUND syscall.Errno = 127 + ERROR_ALREADY_EXISTS syscall.Errno = 183 + ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 + ERROR_MORE_DATA syscall.Errno = 234 + ERROR_OPERATION_ABORTED syscall.Errno = 995 + ERROR_IO_PENDING syscall.Errno = 997 + ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 + ERROR_NOT_FOUND syscall.Errno = 1168 + ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + WSAEACCES syscall.Errno = 10013 + WSAECONNRESET syscall.Errno = 10054 +) + +const ( + // Invented values to support what package os expects. + O_RDONLY = 0x00000 + O_WRONLY = 0x00001 + O_RDWR = 0x00002 + O_CREAT = 0x00040 + O_EXCL = 0x00080 + O_NOCTTY = 0x00100 + O_TRUNC = 0x00200 + O_NONBLOCK = 0x00800 + O_APPEND = 0x00400 + O_SYNC = 0x01000 + O_ASYNC = 0x02000 + O_CLOEXEC = 0x80000 +) + +const ( + // More invented values for signals + SIGHUP = Signal(0x1) + SIGINT = Signal(0x2) + SIGQUIT = Signal(0x3) + SIGILL = Signal(0x4) + SIGTRAP = Signal(0x5) + SIGABRT = Signal(0x6) + SIGBUS = Signal(0x7) + SIGFPE = Signal(0x8) + SIGKILL = Signal(0x9) + SIGSEGV = Signal(0xb) + SIGPIPE = Signal(0xd) + SIGALRM = Signal(0xe) + SIGTERM = Signal(0xf) +) + +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "bus error", + 8: "floating point exception", + 9: "killed", + 10: "user defined signal 1", + 11: "segmentation fault", + 12: "user defined signal 2", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", +} + +const ( + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_APPEND_DATA = 0x00000004 + FILE_WRITE_ATTRIBUTES = 0x00000100 + + FILE_SHARE_READ = 0x00000001 + FILE_SHARE_WRITE = 0x00000002 + FILE_SHARE_DELETE = 0x00000004 + FILE_ATTRIBUTE_READONLY = 0x00000001 + FILE_ATTRIBUTE_HIDDEN = 0x00000002 + FILE_ATTRIBUTE_SYSTEM = 0x00000004 + FILE_ATTRIBUTE_DIRECTORY = 0x00000010 + FILE_ATTRIBUTE_ARCHIVE = 0x00000020 + FILE_ATTRIBUTE_NORMAL = 0x00000080 + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 + + INVALID_FILE_ATTRIBUTES = 0xffffffff + + CREATE_NEW = 1 + CREATE_ALWAYS = 2 + OPEN_EXISTING = 3 + OPEN_ALWAYS = 4 + TRUNCATE_EXISTING = 5 + + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 + FILE_FLAG_OVERLAPPED = 0x40000000 + + HANDLE_FLAG_INHERIT = 0x00000001 + STARTF_USESTDHANDLES = 0x00000100 + STARTF_USESHOWWINDOW = 0x00000001 + DUPLICATE_CLOSE_SOURCE = 0x00000001 + DUPLICATE_SAME_ACCESS = 0x00000002 + + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) + + FILE_BEGIN = 0 + FILE_CURRENT = 1 + FILE_END = 2 + + LANG_ENGLISH = 0x09 + SUBLANG_ENGLISH_US = 0x01 + + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 + FORMAT_MESSAGE_IGNORE_INSERTS = 512 + FORMAT_MESSAGE_FROM_STRING = 1024 + FORMAT_MESSAGE_FROM_HMODULE = 2048 + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 + FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 + + MAX_PATH = 260 + MAX_LONG_PATH = 32768 + + MAX_COMPUTERNAME_LENGTH = 15 + + TIME_ZONE_ID_UNKNOWN = 0 + TIME_ZONE_ID_STANDARD = 1 + + TIME_ZONE_ID_DAYLIGHT = 2 + IGNORE = 0 + INFINITE = 0xffffffff + + WAIT_TIMEOUT = 258 + WAIT_ABANDONED = 0x00000080 + WAIT_OBJECT_0 = 0x00000000 + WAIT_FAILED = 0xFFFFFFFF + + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + + PROCESS_TERMINATE = 1 + PROCESS_QUERY_INFORMATION = 0x00000400 + SYNCHRONIZE = 0x00100000 + + FILE_MAP_COPY = 0x01 + FILE_MAP_WRITE = 0x02 + FILE_MAP_READ = 0x04 + FILE_MAP_EXECUTE = 0x20 + + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + + // Windows reserves errors >= 1<<29 for application use. + APPLICATION_ERROR = 1 << 29 +) + +const ( + // flags for CreateToolhelp32Snapshot + TH32CS_SNAPHEAPLIST = 0x01 + TH32CS_SNAPPROCESS = 0x02 + TH32CS_SNAPTHREAD = 0x04 + TH32CS_SNAPMODULE = 0x08 + TH32CS_SNAPMODULE32 = 0x10 + TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD + TH32CS_INHERIT = 0x80000000 +) + +const ( + // filters for ReadDirectoryChangesW + FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 + FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 + FILE_NOTIFY_CHANGE_SIZE = 0x008 + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 + FILE_NOTIFY_CHANGE_CREATION = 0x040 + FILE_NOTIFY_CHANGE_SECURITY = 0x100 +) + +const ( + // do not reorder + FILE_ACTION_ADDED = iota + 1 + FILE_ACTION_REMOVED + FILE_ACTION_MODIFIED + FILE_ACTION_RENAMED_OLD_NAME + FILE_ACTION_RENAMED_NEW_NAME +) + +const ( + // wincrypt.h + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + CRYPT_VERIFYCONTEXT = 0xF0000000 + CRYPT_NEWKEYSET = 0x00000008 + CRYPT_DELETEKEYSET = 0x00000010 + CRYPT_MACHINE_KEYSET = 0x00000020 + CRYPT_SILENT = 0x00000040 + CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + CERT_STORE_PROV_MEMORY = 2 + + CERT_STORE_ADD_ALWAYS = 4 + + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + CERT_CHAIN_POLICY_BASE = 1 + CERT_CHAIN_POLICY_AUTHENTICODE = 2 + CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 + CERT_CHAIN_POLICY_SSL = 4 + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 + CERT_CHAIN_POLICY_NT_AUTH = 6 + CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 + CERT_CHAIN_POLICY_EV = 8 + + CERT_E_EXPIRED = 0x800B0101 + CERT_E_ROLE = 0x800B0103 + CERT_E_PURPOSE = 0x800B0106 + CERT_E_UNTRUSTEDROOT = 0x800B0109 + CERT_E_CN_NO_MATCH = 0x800B010F + + AUTHTYPE_CLIENT = 1 + AUTHTYPE_SERVER = 2 +) + +var ( + OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") + OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") + OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") +) + +// Invented values to support what package os expects. +type Timeval struct { + Sec int32 + Usec int32 +} + +func (tv *Timeval) Nanoseconds() int64 { + return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + tv.Sec = int32(nsec / 1e9) + tv.Usec = int32(nsec % 1e9 / 1e3) + return +} + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor uintptr + InheritHandle uint32 +} + +type Overlapped struct { + Internal uintptr + InternalHigh uintptr + Offset uint32 + OffsetHigh uint32 + HEvent Handle +} + +type FileNotifyInformation struct { + NextEntryOffset uint32 + Action uint32 + FileNameLength uint32 + FileName uint16 +} + +type Filetime struct { + LowDateTime uint32 + HighDateTime uint32 +} + +// Nanoseconds returns Filetime ft in nanoseconds +// since Epoch (00:00:00 UTC, January 1, 1970). +func (ft *Filetime) Nanoseconds() int64 { + // 100-nanosecond intervals since January 1, 1601 + nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) + // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) + nsec -= 116444736000000000 + // convert into nanoseconds + nsec *= 100 + return nsec +} + +func NsecToFiletime(nsec int64) (ft Filetime) { + // convert into 100-nanosecond + nsec /= 100 + // change starting time to January 1, 1601 + nsec += 116444736000000000 + // split into high / low + ft.LowDateTime = uint32(nsec & 0xffffffff) + ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) + return ft +} + +type Win32finddata struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH - 1]uint16 + AlternateFileName [13]uint16 +} + +// This is the actual system call structure. +// Win32finddata is what we committed to in Go 1. +type win32finddata1 struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH]uint16 + AlternateFileName [14]uint16 +} + +func copyFindData(dst *Win32finddata, src *win32finddata1) { + dst.FileAttributes = src.FileAttributes + dst.CreationTime = src.CreationTime + dst.LastAccessTime = src.LastAccessTime + dst.LastWriteTime = src.LastWriteTime + dst.FileSizeHigh = src.FileSizeHigh + dst.FileSizeLow = src.FileSizeLow + dst.Reserved0 = src.Reserved0 + dst.Reserved1 = src.Reserved1 + + // The src is 1 element bigger than dst, but it must be NUL. + copy(dst.FileName[:], src.FileName[:]) + copy(dst.AlternateFileName[:], src.AlternateFileName[:]) +} + +type ByHandleFileInformation struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + VolumeSerialNumber uint32 + FileSizeHigh uint32 + FileSizeLow uint32 + NumberOfLinks uint32 + FileIndexHigh uint32 + FileIndexLow uint32 +} + +const ( + GetFileExInfoStandard = 0 + GetFileExMaxInfoLevel = 1 +) + +type Win32FileAttributeData struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 +} + +// ShowWindow constants +const ( + // winuser.h + SW_HIDE = 0 + SW_NORMAL = 1 + SW_SHOWNORMAL = 1 + SW_SHOWMINIMIZED = 2 + SW_SHOWMAXIMIZED = 3 + SW_MAXIMIZE = 3 + SW_SHOWNOACTIVATE = 4 + SW_SHOW = 5 + SW_MINIMIZE = 6 + SW_SHOWMINNOACTIVE = 7 + SW_SHOWNA = 8 + SW_RESTORE = 9 + SW_SHOWDEFAULT = 10 + SW_FORCEMINIMIZE = 11 +) + +type StartupInfo struct { + Cb uint32 + _ *uint16 + Desktop *uint16 + Title *uint16 + X uint32 + Y uint32 + XSize uint32 + YSize uint32 + XCountChars uint32 + YCountChars uint32 + FillAttribute uint32 + Flags uint32 + ShowWindow uint16 + _ uint16 + _ *byte + StdInput Handle + StdOutput Handle + StdErr Handle +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type ProcessEntry32 struct { + Size uint32 + Usage uint32 + ProcessID uint32 + DefaultHeapID uintptr + ModuleID uint32 + Threads uint32 + ParentProcessID uint32 + PriClassBase int32 + Flags uint32 + ExeFile [MAX_PATH]uint16 +} + +type Systemtime struct { + Year uint16 + Month uint16 + DayOfWeek uint16 + Day uint16 + Hour uint16 + Minute uint16 + Second uint16 + Milliseconds uint16 +} + +type Timezoneinformation struct { + Bias int32 + StandardName [32]uint16 + StandardDate Systemtime + StandardBias int32 + DaylightName [32]uint16 + DaylightDate Systemtime + DaylightBias int32 +} + +// Socket related. + +const ( + AF_UNSPEC = 0 + AF_UNIX = 1 + AF_INET = 2 + AF_INET6 = 23 + AF_NETBIOS = 17 + + SOCK_STREAM = 1 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_SEQPACKET = 5 + + IPPROTO_IP = 0 + IPPROTO_IPV6 = 0x29 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + + SOL_SOCKET = 0xffff + SO_REUSEADDR = 4 + SO_KEEPALIVE = 8 + SO_DONTROUTE = 16 + SO_BROADCAST = 32 + SO_LINGER = 128 + SO_RCVBUF = 0x1002 + SO_SNDBUF = 0x1001 + SO_UPDATE_ACCEPT_CONTEXT = 0x700b + SO_UPDATE_CONNECT_CONTEXT = 0x7010 + + IOC_OUT = 0x40000000 + IOC_IN = 0x80000000 + IOC_VENDOR = 0x18000000 + IOC_INOUT = IOC_IN | IOC_OUT + IOC_WS2 = 0x08000000 + SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 + SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 + SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + + // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 + + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_LOOP = 0xb + IP_ADD_MEMBERSHIP = 0xc + IP_DROP_MEMBERSHIP = 0xd + + IPV6_V6ONLY = 0x1b + IPV6_UNICAST_HOPS = 0x4 + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_LOOP = 0xb + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + + SOMAXCONN = 0x7fffffff + + TCP_NODELAY = 1 + + SHUT_RD = 0 + SHUT_WR = 1 + SHUT_RDWR = 2 + + WSADESCRIPTION_LEN = 256 + WSASYS_STATUS_LEN = 128 +) + +type WSABuf struct { + Len uint32 + Buf *byte +} + +// Invented values to support what package os expects. +const ( + S_IFMT = 0x1f000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +const ( + FILE_TYPE_CHAR = 0x0002 + FILE_TYPE_DISK = 0x0001 + FILE_TYPE_PIPE = 0x0003 + FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0x0000 +) + +type Hostent struct { + Name *byte + Aliases **byte + AddrType uint16 + Length uint16 + AddrList **byte +} + +type Protoent struct { + Name *byte + Aliases **byte + Proto uint16 +} + +const ( + DNS_TYPE_A = 0x0001 + DNS_TYPE_NS = 0x0002 + DNS_TYPE_MD = 0x0003 + DNS_TYPE_MF = 0x0004 + DNS_TYPE_CNAME = 0x0005 + DNS_TYPE_SOA = 0x0006 + DNS_TYPE_MB = 0x0007 + DNS_TYPE_MG = 0x0008 + DNS_TYPE_MR = 0x0009 + DNS_TYPE_NULL = 0x000a + DNS_TYPE_WKS = 0x000b + DNS_TYPE_PTR = 0x000c + DNS_TYPE_HINFO = 0x000d + DNS_TYPE_MINFO = 0x000e + DNS_TYPE_MX = 0x000f + DNS_TYPE_TEXT = 0x0010 + DNS_TYPE_RP = 0x0011 + DNS_TYPE_AFSDB = 0x0012 + DNS_TYPE_X25 = 0x0013 + DNS_TYPE_ISDN = 0x0014 + DNS_TYPE_RT = 0x0015 + DNS_TYPE_NSAP = 0x0016 + DNS_TYPE_NSAPPTR = 0x0017 + DNS_TYPE_SIG = 0x0018 + DNS_TYPE_KEY = 0x0019 + DNS_TYPE_PX = 0x001a + DNS_TYPE_GPOS = 0x001b + DNS_TYPE_AAAA = 0x001c + DNS_TYPE_LOC = 0x001d + DNS_TYPE_NXT = 0x001e + DNS_TYPE_EID = 0x001f + DNS_TYPE_NIMLOC = 0x0020 + DNS_TYPE_SRV = 0x0021 + DNS_TYPE_ATMA = 0x0022 + DNS_TYPE_NAPTR = 0x0023 + DNS_TYPE_KX = 0x0024 + DNS_TYPE_CERT = 0x0025 + DNS_TYPE_A6 = 0x0026 + DNS_TYPE_DNAME = 0x0027 + DNS_TYPE_SINK = 0x0028 + DNS_TYPE_OPT = 0x0029 + DNS_TYPE_DS = 0x002B + DNS_TYPE_RRSIG = 0x002E + DNS_TYPE_NSEC = 0x002F + DNS_TYPE_DNSKEY = 0x0030 + DNS_TYPE_DHCID = 0x0031 + DNS_TYPE_UINFO = 0x0064 + DNS_TYPE_UID = 0x0065 + DNS_TYPE_GID = 0x0066 + DNS_TYPE_UNSPEC = 0x0067 + DNS_TYPE_ADDRS = 0x00f8 + DNS_TYPE_TKEY = 0x00f9 + DNS_TYPE_TSIG = 0x00fa + DNS_TYPE_IXFR = 0x00fb + DNS_TYPE_AXFR = 0x00fc + DNS_TYPE_MAILB = 0x00fd + DNS_TYPE_MAILA = 0x00fe + DNS_TYPE_ALL = 0x00ff + DNS_TYPE_ANY = 0x00ff + DNS_TYPE_WINS = 0xff01 + DNS_TYPE_WINSR = 0xff02 + DNS_TYPE_NBSTAT = 0xff01 +) + +const ( + DNS_INFO_NO_RECORDS = 0x251D +) + +const ( + // flags inside DNSRecord.Dw + DnsSectionQuestion = 0x0000 + DnsSectionAnswer = 0x0001 + DnsSectionAuthority = 0x0002 + DnsSectionAdditional = 0x0003 +) + +type DNSSRVData struct { + Target *uint16 + Priority uint16 + Weight uint16 + Port uint16 + Pad uint16 +} + +type DNSPTRData struct { + Host *uint16 +} + +type DNSMXData struct { + NameExchange *uint16 + Preference uint16 + Pad uint16 +} + +type DNSTXTData struct { + StringCount uint16 + StringArray [1]*uint16 +} + +type DNSRecord struct { + Next *DNSRecord + Name *uint16 + Type uint16 + Length uint16 + Dw uint32 + Ttl uint32 + Reserved uint32 + Data [40]byte +} + +const ( + TF_DISCONNECT = 1 + TF_REUSE_SOCKET = 2 + TF_WRITE_BEHIND = 4 + TF_USE_DEFAULT_WORKER = 0 + TF_USE_SYSTEM_THREAD = 16 + TF_USE_KERNEL_APC = 32 +) + +type TransmitFileBuffers struct { + Head uintptr + HeadLength uint32 + Tail uintptr + TailLength uint32 +} + +const ( + IFF_UP = 1 + IFF_BROADCAST = 2 + IFF_LOOPBACK = 4 + IFF_POINTTOPOINT = 8 + IFF_MULTICAST = 16 +) + +const SIO_GET_INTERFACE_LIST = 0x4004747F + +// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. +// will be fixed to change variable type as suitable. + +type SockaddrGen [24]byte + +type InterfaceInfo struct { + Flags uint32 + Address SockaddrGen + BroadcastAddress SockaddrGen + Netmask SockaddrGen +} + +type IpAddressString struct { + String [16]byte +} + +type IpMaskString IpAddressString + +type IpAddrString struct { + Next *IpAddrString + IpAddress IpAddressString + IpMask IpMaskString + Context uint32 +} + +const MAX_ADAPTER_NAME_LENGTH = 256 +const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +const MAX_ADAPTER_ADDRESS_LENGTH = 8 + +type IpAdapterInfo struct { + Next *IpAdapterInfo + ComboIndex uint32 + AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte + Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte + AddressLength uint32 + Address [MAX_ADAPTER_ADDRESS_LENGTH]byte + Index uint32 + Type uint32 + DhcpEnabled uint32 + CurrentIpAddress *IpAddrString + IpAddressList IpAddrString + GatewayList IpAddrString + DhcpServer IpAddrString + HaveWins bool + PrimaryWinsServer IpAddrString + SecondaryWinsServer IpAddrString + LeaseObtained int64 + LeaseExpires int64 +} + +const MAXLEN_PHYSADDR = 8 +const MAX_INTERFACE_NAME_LEN = 256 +const MAXLEN_IFDESCR = 256 + +type MibIfRow struct { + Name [MAX_INTERFACE_NAME_LEN]uint16 + Index uint32 + Type uint32 + Mtu uint32 + Speed uint32 + PhysAddrLen uint32 + PhysAddr [MAXLEN_PHYSADDR]byte + AdminStatus uint32 + OperStatus uint32 + LastChange uint32 + InOctets uint32 + InUcastPkts uint32 + InNUcastPkts uint32 + InDiscards uint32 + InErrors uint32 + InUnknownProtos uint32 + OutOctets uint32 + OutUcastPkts uint32 + OutNUcastPkts uint32 + OutDiscards uint32 + OutErrors uint32 + OutQLen uint32 + DescrLen uint32 + Descr [MAXLEN_IFDESCR]byte +} + +type CertContext struct { + EncodingType uint32 + EncodedCert *byte + Length uint32 + CertInfo uintptr + Store Handle +} + +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo uintptr + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo uintptr + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo uintptr // *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara uintptr +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus uintptr +} + +const ( + // do not reorder + HKEY_CLASSES_ROOT = 0x80000000 + iota + HKEY_CURRENT_USER + HKEY_LOCAL_MACHINE + HKEY_USERS + HKEY_PERFORMANCE_DATA + HKEY_CURRENT_CONFIG + HKEY_DYN_DATA + + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_ENUMERATE_SUB_KEYS = 8 + KEY_NOTIFY = 16 + KEY_CREATE_LINK = 32 + KEY_WRITE = 0x20006 + KEY_EXECUTE = 0x20019 + KEY_READ = 0x20019 + KEY_WOW64_64KEY = 0x0100 + KEY_WOW64_32KEY = 0x0200 + KEY_ALL_ACCESS = 0xf003f +) + +const ( + // do not reorder + REG_NONE = iota + REG_SZ + REG_EXPAND_SZ + REG_BINARY + REG_DWORD_LITTLE_ENDIAN + REG_DWORD_BIG_ENDIAN + REG_LINK + REG_MULTI_SZ + REG_RESOURCE_LIST + REG_FULL_RESOURCE_DESCRIPTOR + REG_RESOURCE_REQUIREMENTS_LIST + REG_QWORD_LITTLE_ENDIAN + REG_DWORD = REG_DWORD_LITTLE_ENDIAN + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +) + +type AddrinfoW struct { + Flags int32 + Family int32 + Socktype int32 + Protocol int32 + Addrlen uintptr + Canonname *uint16 + Addr uintptr + Next *AddrinfoW +} + +const ( + AI_PASSIVE = 1 + AI_CANONNAME = 2 + AI_NUMERICHOST = 4 +) + +type GUID struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +var WSAID_CONNECTEX = GUID{ + 0x25a207b9, + 0xddf3, + 0x4660, + [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, +} + +const ( + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 + FILE_SKIP_SET_EVENT_ON_HANDLE = 2 +) + +const ( + WSAPROTOCOL_LEN = 255 + MAX_PROTOCOL_CHAIN = 7 + BASE_PROTOCOL = 1 + LAYERED_PROTOCOL = 0 + + XP1_CONNECTIONLESS = 0x00000001 + XP1_GUARANTEED_DELIVERY = 0x00000002 + XP1_GUARANTEED_ORDER = 0x00000004 + XP1_MESSAGE_ORIENTED = 0x00000008 + XP1_PSEUDO_STREAM = 0x00000010 + XP1_GRACEFUL_CLOSE = 0x00000020 + XP1_EXPEDITED_DATA = 0x00000040 + XP1_CONNECT_DATA = 0x00000080 + XP1_DISCONNECT_DATA = 0x00000100 + XP1_SUPPORT_BROADCAST = 0x00000200 + XP1_SUPPORT_MULTIPOINT = 0x00000400 + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 + XP1_MULTIPOINT_DATA_PLANE = 0x00001000 + XP1_QOS_SUPPORTED = 0x00002000 + XP1_UNI_SEND = 0x00008000 + XP1_UNI_RECV = 0x00010000 + XP1_IFS_HANDLES = 0x00020000 + XP1_PARTIAL_MESSAGE = 0x00040000 + XP1_SAN_SUPPORT_SDP = 0x00080000 + + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 + PFL_HIDDEN = 0x00000004 + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 + PFL_NETWORKDIRECT_PROVIDER = 0x00000010 +) + +type WSAProtocolInfo struct { + ServiceFlags1 uint32 + ServiceFlags2 uint32 + ServiceFlags3 uint32 + ServiceFlags4 uint32 + ProviderFlags uint32 + ProviderId GUID + CatalogEntryId uint32 + ProtocolChain WSAProtocolChain + Version int32 + AddressFamily int32 + MaxSockAddr int32 + MinSockAddr int32 + SocketType int32 + Protocol int32 + ProtocolMaxOffset int32 + NetworkByteOrder int32 + SecurityScheme int32 + MessageSize uint32 + ProviderReserved uint32 + ProtocolName [WSAPROTOCOL_LEN + 1]uint16 +} + +type WSAProtocolChain struct { + ChainLen int32 + ChainEntries [MAX_PROTOCOL_CHAIN]uint32 +} + +type TCPKeepalive struct { + OnOff uint32 + Time uint32 + Interval uint32 +} + +type symbolicLinkReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + Flags uint32 + PathBuffer [1]uint16 +} + +type mountPointReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + PathBuffer [1]uint16 +} + +type reparseDataBuffer struct { + ReparseTag uint32 + ReparseDataLength uint16 + Reserved uint16 + + // GenericReparseBuffer + reparseBuffer byte +} + +const ( + FSCTL_GET_REPARSE_POINT = 0x900A8 + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 + IO_REPARSE_TAG_SYMLINK = 0xA000000C + SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 +) + +const ( + ComputerNameNetBIOS = 0 + ComputerNameDnsHostname = 1 + ComputerNameDnsDomain = 2 + ComputerNameDnsFullyQualified = 3 + ComputerNamePhysicalNetBIOS = 4 + ComputerNamePhysicalDnsHostname = 5 + ComputerNamePhysicalDnsDomain = 6 + ComputerNamePhysicalDnsFullyQualified = 7 + ComputerNameMax = 8 +) + +const ( + MOVEFILE_REPLACE_EXISTING = 0x1 + MOVEFILE_COPY_ALLOWED = 0x2 + MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 + MOVEFILE_WRITE_THROUGH = 0x8 + MOVEFILE_CREATE_HARDLINK = 0x10 + MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 +) + +const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 + +const ( + IF_TYPE_OTHER = 1 + IF_TYPE_ETHERNET_CSMACD = 6 + IF_TYPE_ISO88025_TOKENRING = 9 + IF_TYPE_PPP = 23 + IF_TYPE_SOFTWARE_LOOPBACK = 24 + IF_TYPE_ATM = 37 + IF_TYPE_IEEE80211 = 71 + IF_TYPE_TUNNEL = 131 + IF_TYPE_IEEE1394 = 144 +) + +type SocketAddress struct { + Sockaddr *syscall.RawSockaddrAny + SockaddrLength int32 +} + +type IpAdapterUnicastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterUnicastAddress + Address SocketAddress + PrefixOrigin int32 + SuffixOrigin int32 + DadState int32 + ValidLifetime uint32 + PreferredLifetime uint32 + LeaseLifetime uint32 + OnLinkPrefixLength uint8 +} + +type IpAdapterAnycastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterAnycastAddress + Address SocketAddress +} + +type IpAdapterMulticastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterMulticastAddress + Address SocketAddress +} + +type IpAdapterDnsServerAdapter struct { + Length uint32 + Reserved uint32 + Next *IpAdapterDnsServerAdapter + Address SocketAddress +} + +type IpAdapterPrefix struct { + Length uint32 + Flags uint32 + Next *IpAdapterPrefix + Address SocketAddress + PrefixLength uint32 +} + +type IpAdapterAddresses struct { + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + /* more fields might be present here. */ +} + +const ( + IfOperStatusUp = 1 + IfOperStatusDown = 2 + IfOperStatusTesting = 3 + IfOperStatusUnknown = 4 + IfOperStatusDormant = 5 + IfOperStatusNotPresent = 6 + IfOperStatusLowerLayerDown = 7 +) + +// Console related constants used for the mode parameter to SetConsoleMode. See +// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. + +const ( + ENABLE_PROCESSED_INPUT = 0x1 + ENABLE_LINE_INPUT = 0x2 + ENABLE_ECHO_INPUT = 0x4 + ENABLE_WINDOW_INPUT = 0x8 + ENABLE_MOUSE_INPUT = 0x10 + ENABLE_INSERT_MODE = 0x20 + ENABLE_QUICK_EDIT_MODE = 0x40 + ENABLE_EXTENDED_FLAGS = 0x80 + ENABLE_AUTO_POSITION = 0x100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 + + ENABLE_PROCESSED_OUTPUT = 0x1 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 + DISABLE_NEWLINE_AUTO_RETURN = 0x8 + ENABLE_LVB_GRID_WORLDWIDE = 0x10 +) + +type Coord struct { + X int16 + Y int16 +} + +type SmallRect struct { + Left int16 + Top int16 + Right int16 + Bottom int16 +} + +// Used with GetConsoleScreenBuffer to retreive information about a console +// screen buffer. See +// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str +// for details. + +type ConsoleScreenBufferInfo struct { + Size Coord + CursorPosition Coord + Attributes uint16 + Window SmallRect + MaximumWindowSize Coord +} diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go similarity index 100% rename from vendor/golang.org/x/sys/windows/ztypes_windows_386.go rename to vendor/golang.org/x/sys/windows/types_windows_386.go diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go similarity index 100% rename from vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go rename to vendor/golang.org/x/sys/windows/types_windows_amd64.go diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 3ff8f52532..2f893d2efc 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -9,6 +9,31 @@ import ( var _ unsafe.Pointer +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + var ( modadvapi32 = NewLazySystemDLL("advapi32.dll") modkernel32 = NewLazySystemDLL("kernel32.dll") @@ -39,6 +64,7 @@ var ( procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") + procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") procGetLastError = modkernel32.NewProc("GetLastError") procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") @@ -53,6 +79,7 @@ var ( procSetFilePointer = modkernel32.NewProc("SetFilePointer") procCloseHandle = modkernel32.NewProc("CloseHandle") procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procSetStdHandle = modkernel32.NewProc("SetStdHandle") procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") procFindNextFileW = modkernel32.NewProc("FindNextFileW") procFindClose = modkernel32.NewProc("FindClose") @@ -68,6 +95,7 @@ var ( procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") @@ -111,6 +139,9 @@ var ( procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") procVirtualLock = modkernel32.NewProc("VirtualLock") procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") + procVirtualFree = modkernel32.NewProc("VirtualFree") + procVirtualProtect = modkernel32.NewProc("VirtualProtect") procTransmitFile = modmswsock.NewProc("TransmitFile") procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") @@ -130,6 +161,8 @@ var ( procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") procReadConsoleW = modkernel32.NewProc("ReadConsoleW") procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") @@ -140,7 +173,11 @@ var ( procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") procCreateEventW = modkernel32.NewProc("CreateEventW") + procCreateEventExW = modkernel32.NewProc("CreateEventExW") + procOpenEventW = modkernel32.NewProc("OpenEventW") procSetEvent = modkernel32.NewProc("SetEvent") + procResetEvent = modkernel32.NewProc("ResetEvent") + procPulseEvent = modkernel32.NewProc("PulseEvent") procWSAStartup = modws2_32.NewProc("WSAStartup") procWSACleanup = modws2_32.NewProc("WSACleanup") procWSAIoctl = modws2_32.NewProc("WSAIoctl") @@ -200,7 +237,7 @@ func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Hand handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -212,7 +249,7 @@ func DeregisterEventSource(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -224,7 +261,7 @@ func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrS r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -237,7 +274,7 @@ func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (ha handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -249,7 +286,7 @@ func CloseServiceHandle(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -262,7 +299,7 @@ func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -275,7 +312,7 @@ func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -287,7 +324,7 @@ func DeleteService(service Handle) (err error) { r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -299,7 +336,7 @@ func StartService(service Handle, numArgs uint32, argVectors **uint16) (err erro r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -311,7 +348,7 @@ func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -323,7 +360,7 @@ func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -335,7 +372,7 @@ func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -347,7 +384,7 @@ func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -359,7 +396,7 @@ func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, e r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -371,7 +408,7 @@ func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, buf r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -383,7 +420,7 @@ func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err err r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -395,7 +432,19 @@ func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -425,7 +474,7 @@ func _LoadLibrary(libname *uint16) (handle Handle, err error) { handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -447,7 +496,7 @@ func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -459,7 +508,7 @@ func FreeLibrary(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -481,7 +530,7 @@ func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { proc = uintptr(r0) if proc == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -494,7 +543,7 @@ func GetVersion() (ver uint32, err error) { ver = uint32(r0) if ver == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -511,7 +560,7 @@ func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, bu n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -529,7 +578,7 @@ func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes handle = Handle(r0) if handle == InvalidHandle { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -545,7 +594,7 @@ func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) ( r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -561,7 +610,7 @@ func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -574,7 +623,7 @@ func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence newlowoffset = uint32(r0) if newlowoffset == 0xffffffff { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -586,7 +635,7 @@ func CloseHandle(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -594,12 +643,24 @@ func CloseHandle(handle Handle) (err error) { return } -func GetStdHandle(stdhandle int) (handle Handle, err error) { +func GetStdHandle(stdhandle uint32) (handle Handle, err error) { r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) handle = Handle(r0) if handle == InvalidHandle { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetStdHandle(stdhandle uint32, handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -612,7 +673,7 @@ func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err erro handle = Handle(r0) if handle == InvalidHandle { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -624,7 +685,7 @@ func findNextFile1(handle Handle, data *win32finddata1) (err error) { r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -636,7 +697,7 @@ func FindClose(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -648,7 +709,7 @@ func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (e r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -661,7 +722,7 @@ func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -673,7 +734,7 @@ func SetCurrentDirectory(path *uint16) (err error) { r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -685,7 +746,7 @@ func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -697,7 +758,7 @@ func RemoveDirectory(path *uint16) (err error) { r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -709,7 +770,7 @@ func DeleteFile(path *uint16) (err error) { r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -721,7 +782,7 @@ func MoveFile(from *uint16, to *uint16) (err error) { r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -733,7 +794,7 @@ func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -745,7 +806,7 @@ func GetComputerName(buf *uint16, n *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -757,7 +818,7 @@ func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -769,7 +830,7 @@ func SetEndOfFile(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -782,12 +843,17 @@ func GetSystemTimeAsFileTime(time *Filetime) { return } +func GetSystemTimePreciseAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0) rc = uint32(r0) if rc == 0xffffffff { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -800,7 +866,7 @@ func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, thre handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -812,7 +878,7 @@ func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overla r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -824,7 +890,7 @@ func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlap r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -836,7 +902,7 @@ func CancelIo(s Handle) (err error) { r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -848,7 +914,7 @@ func CancelIoEx(s Handle, o *Overlapped) (err error) { r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -866,7 +932,7 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -885,7 +951,7 @@ func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -897,7 +963,7 @@ func TerminateProcess(handle Handle, exitcode uint32) (err error) { r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -909,7 +975,7 @@ func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -921,7 +987,7 @@ func GetStartupInfo(startupInfo *StartupInfo) (err error) { r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -934,7 +1000,7 @@ func GetCurrentProcess() (pseudoHandle Handle, err error) { pseudoHandle = Handle(r0) if pseudoHandle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -946,7 +1012,7 @@ func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -964,7 +1030,7 @@ func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetP r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -977,7 +1043,7 @@ func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, event = uint32(r0) if event == 0xffffffff { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -990,7 +1056,7 @@ func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1002,7 +1068,7 @@ func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1015,7 +1081,7 @@ func GetFileType(filehandle Handle) (n uint32, err error) { n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1027,7 +1093,7 @@ func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16 r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1039,7 +1105,7 @@ func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1051,7 +1117,7 @@ func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1064,7 +1130,7 @@ func GetEnvironmentStrings() (envs *uint16, err error) { envs = (*uint16)(unsafe.Pointer(r0)) if envs == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1076,7 +1142,7 @@ func FreeEnvironmentStrings(envs *uint16) (err error) { r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1089,7 +1155,7 @@ func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32 n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1101,7 +1167,7 @@ func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1113,7 +1179,7 @@ func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetim r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1126,7 +1192,7 @@ func GetFileAttributes(name *uint16) (attrs uint32, err error) { attrs = uint32(r0) if attrs == INVALID_FILE_ATTRIBUTES { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1138,7 +1204,7 @@ func SetFileAttributes(name *uint16, attrs uint32) (err error) { r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1150,7 +1216,7 @@ func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1169,7 +1235,7 @@ func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0)) if argv == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1182,7 +1248,7 @@ func LocalFree(hmem Handle) (handle Handle, err error) { handle = Handle(r0) if handle != 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1194,7 +1260,7 @@ func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1206,7 +1272,7 @@ func FlushFileBuffers(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1219,7 +1285,7 @@ func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) ( n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1232,7 +1298,7 @@ func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err er n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1245,7 +1311,7 @@ func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uin n = uint32(r0) if n == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1258,7 +1324,7 @@ func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxS handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1271,7 +1337,7 @@ func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow ui addr = uintptr(r0) if addr == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1283,7 +1349,7 @@ func UnmapViewOfFile(addr uintptr) (err error) { r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1295,7 +1361,7 @@ func FlushViewOfFile(addr uintptr, length uintptr) (err error) { r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1307,7 +1373,7 @@ func VirtualLock(addr uintptr, length uintptr) (err error) { r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1319,7 +1385,44 @@ func VirtualUnlock(addr uintptr, length uintptr) (err error) { r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0) + value = uintptr(r0) + if value == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1331,7 +1434,7 @@ func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1349,7 +1452,7 @@ func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1362,7 +1465,7 @@ func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { store = Handle(r0) if store == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1375,7 +1478,7 @@ func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptPr handle = Handle(r0) if handle == InvalidHandle { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1388,7 +1491,7 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex context = (*CertContext)(unsafe.Pointer(r0)) if context == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1400,7 +1503,7 @@ func CertAddCertificateContextToStore(store Handle, certContext *CertContext, ad r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1412,7 +1515,7 @@ func CertCloseStore(store Handle, flags uint32) (err error) { r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1424,7 +1527,7 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1442,7 +1545,7 @@ func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, en context = (*CertContext)(unsafe.Pointer(r0)) if context == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1454,7 +1557,7 @@ func CertFreeCertificateContext(ctx *CertContext) (err error) { r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1466,7 +1569,7 @@ func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1524,7 +1627,31 @@ func GetConsoleMode(console Handle, mode *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetConsoleMode(console Handle, mode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1536,7 +1663,7 @@ func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1548,7 +1675,7 @@ func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, input r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1561,7 +1688,7 @@ func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, er handle = Handle(r0) if handle == InvalidHandle { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1573,7 +1700,7 @@ func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1585,7 +1712,7 @@ func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1597,7 +1724,7 @@ func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBuff r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1609,7 +1736,7 @@ func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags u r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) if r1&0xff == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1621,7 +1748,7 @@ func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) if r1&0xff == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1635,12 +1762,44 @@ func GetCurrentThreadId() (id uint32) { return } -func CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { +func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0) handle = Handle(r0) if handle == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1652,7 +1811,31 @@ func SetEvent(event Handle) (err error) { r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ResetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func PulseEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1672,7 +1855,7 @@ func WSACleanup() (err error) { r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1684,7 +1867,7 @@ func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbo r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1697,7 +1880,7 @@ func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { handle = Handle(r0) if handle == InvalidHandle { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1709,7 +1892,7 @@ func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32 r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1721,7 +1904,7 @@ func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int3 r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1733,7 +1916,7 @@ func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1745,7 +1928,7 @@ func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1757,7 +1940,7 @@ func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1769,7 +1952,7 @@ func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1781,7 +1964,7 @@ func listen(s Handle, backlog int32) (err error) { r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1793,7 +1976,7 @@ func shutdown(s Handle, how int32) (err error) { r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1805,7 +1988,7 @@ func Closesocket(s Handle) (err error) { r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1817,7 +2000,7 @@ func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32 r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1834,7 +2017,7 @@ func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32 r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1846,7 +2029,7 @@ func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1858,7 +2041,7 @@ func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *ui r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1870,7 +2053,7 @@ func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32 r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) if r1 == socket_error { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1892,7 +2075,7 @@ func _GetHostByName(name *byte) (h *Hostent, err error) { h = (*Hostent)(unsafe.Pointer(r0)) if h == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1919,7 +2102,7 @@ func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { s = (*Servent)(unsafe.Pointer(r0)) if s == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -1947,7 +2130,7 @@ func _GetProtoByName(name *byte) (p *Protoent, err error) { p = (*Protoent)(unsafe.Pointer(r0)) if p == nil { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2016,7 +2199,7 @@ func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2029,7 +2212,7 @@ func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferL n = int32(r0) if n == -1 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2056,7 +2239,7 @@ func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, nwrite = int32(r0) if nwrite == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2068,7 +2251,7 @@ func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) if r1&0xff == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2080,7 +2263,7 @@ func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err er r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) if r1&0xff == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2116,7 +2299,7 @@ func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint3 r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2128,7 +2311,7 @@ func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2140,7 +2323,7 @@ func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2152,7 +2335,7 @@ func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2170,7 +2353,7 @@ func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2182,7 +2365,7 @@ func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, s r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2194,7 +2377,7 @@ func FreeSid(sid *SID) (err error) { r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) if r1 != 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2212,7 +2395,7 @@ func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2224,7 +2407,7 @@ func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } @@ -2236,7 +2419,7 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) if r1 == 0 { if e1 != 0 { - err = error(e1) + err = errnoErr(e1) } else { err = syscall.EINVAL } diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows.go b/vendor/golang.org/x/sys/windows/ztypes_windows.go deleted file mode 100644 index 1fe19d1d7f..0000000000 --- a/vendor/golang.org/x/sys/windows/ztypes_windows.go +++ /dev/null @@ -1,1242 +0,0 @@ -// 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 windows - -import "syscall" - -const ( - // Windows errors. - ERROR_FILE_NOT_FOUND syscall.Errno = 2 - ERROR_PATH_NOT_FOUND syscall.Errno = 3 - ERROR_ACCESS_DENIED syscall.Errno = 5 - ERROR_NO_MORE_FILES syscall.Errno = 18 - ERROR_HANDLE_EOF syscall.Errno = 38 - ERROR_NETNAME_DELETED syscall.Errno = 64 - ERROR_FILE_EXISTS syscall.Errno = 80 - ERROR_BROKEN_PIPE syscall.Errno = 109 - ERROR_BUFFER_OVERFLOW syscall.Errno = 111 - ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 - ERROR_MOD_NOT_FOUND syscall.Errno = 126 - ERROR_PROC_NOT_FOUND syscall.Errno = 127 - ERROR_ALREADY_EXISTS syscall.Errno = 183 - ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 - ERROR_MORE_DATA syscall.Errno = 234 - ERROR_OPERATION_ABORTED syscall.Errno = 995 - ERROR_IO_PENDING syscall.Errno = 997 - ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 - ERROR_NOT_FOUND syscall.Errno = 1168 - ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 - WSAEACCES syscall.Errno = 10013 - WSAECONNRESET syscall.Errno = 10054 -) - -const ( - // Invented values to support what package os expects. - O_RDONLY = 0x00000 - O_WRONLY = 0x00001 - O_RDWR = 0x00002 - O_CREAT = 0x00040 - O_EXCL = 0x00080 - O_NOCTTY = 0x00100 - O_TRUNC = 0x00200 - O_NONBLOCK = 0x00800 - O_APPEND = 0x00400 - O_SYNC = 0x01000 - O_ASYNC = 0x02000 - O_CLOEXEC = 0x80000 -) - -const ( - // More invented values for signals - SIGHUP = Signal(0x1) - SIGINT = Signal(0x2) - SIGQUIT = Signal(0x3) - SIGILL = Signal(0x4) - SIGTRAP = Signal(0x5) - SIGABRT = Signal(0x6) - SIGBUS = Signal(0x7) - SIGFPE = Signal(0x8) - SIGKILL = Signal(0x9) - SIGSEGV = Signal(0xb) - SIGPIPE = Signal(0xd) - SIGALRM = Signal(0xe) - SIGTERM = Signal(0xf) -) - -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", -} - -const ( - GENERIC_READ = 0x80000000 - GENERIC_WRITE = 0x40000000 - GENERIC_EXECUTE = 0x20000000 - GENERIC_ALL = 0x10000000 - - FILE_LIST_DIRECTORY = 0x00000001 - FILE_APPEND_DATA = 0x00000004 - FILE_WRITE_ATTRIBUTES = 0x00000100 - - FILE_SHARE_READ = 0x00000001 - FILE_SHARE_WRITE = 0x00000002 - FILE_SHARE_DELETE = 0x00000004 - FILE_ATTRIBUTE_READONLY = 0x00000001 - FILE_ATTRIBUTE_HIDDEN = 0x00000002 - FILE_ATTRIBUTE_SYSTEM = 0x00000004 - FILE_ATTRIBUTE_DIRECTORY = 0x00000010 - FILE_ATTRIBUTE_ARCHIVE = 0x00000020 - FILE_ATTRIBUTE_NORMAL = 0x00000080 - FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 - - INVALID_FILE_ATTRIBUTES = 0xffffffff - - CREATE_NEW = 1 - CREATE_ALWAYS = 2 - OPEN_EXISTING = 3 - OPEN_ALWAYS = 4 - TRUNCATE_EXISTING = 5 - - FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 - FILE_FLAG_OVERLAPPED = 0x40000000 - - HANDLE_FLAG_INHERIT = 0x00000001 - STARTF_USESTDHANDLES = 0x00000100 - STARTF_USESHOWWINDOW = 0x00000001 - DUPLICATE_CLOSE_SOURCE = 0x00000001 - DUPLICATE_SAME_ACCESS = 0x00000002 - - STD_INPUT_HANDLE = -10 - STD_OUTPUT_HANDLE = -11 - STD_ERROR_HANDLE = -12 - - FILE_BEGIN = 0 - FILE_CURRENT = 1 - FILE_END = 2 - - LANG_ENGLISH = 0x09 - SUBLANG_ENGLISH_US = 0x01 - - FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 - FORMAT_MESSAGE_IGNORE_INSERTS = 512 - FORMAT_MESSAGE_FROM_STRING = 1024 - FORMAT_MESSAGE_FROM_HMODULE = 2048 - FORMAT_MESSAGE_FROM_SYSTEM = 4096 - FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 - FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 - - MAX_PATH = 260 - MAX_LONG_PATH = 32768 - - MAX_COMPUTERNAME_LENGTH = 15 - - TIME_ZONE_ID_UNKNOWN = 0 - TIME_ZONE_ID_STANDARD = 1 - - TIME_ZONE_ID_DAYLIGHT = 2 - IGNORE = 0 - INFINITE = 0xffffffff - - WAIT_TIMEOUT = 258 - WAIT_ABANDONED = 0x00000080 - WAIT_OBJECT_0 = 0x00000000 - WAIT_FAILED = 0xFFFFFFFF - - CREATE_NEW_PROCESS_GROUP = 0x00000200 - CREATE_UNICODE_ENVIRONMENT = 0x00000400 - - PROCESS_TERMINATE = 1 - PROCESS_QUERY_INFORMATION = 0x00000400 - SYNCHRONIZE = 0x00100000 - - PAGE_READONLY = 0x02 - PAGE_READWRITE = 0x04 - PAGE_WRITECOPY = 0x08 - PAGE_EXECUTE_READ = 0x20 - PAGE_EXECUTE_READWRITE = 0x40 - PAGE_EXECUTE_WRITECOPY = 0x80 - - FILE_MAP_COPY = 0x01 - FILE_MAP_WRITE = 0x02 - FILE_MAP_READ = 0x04 - FILE_MAP_EXECUTE = 0x20 - - CTRL_C_EVENT = 0 - CTRL_BREAK_EVENT = 1 - - // Windows reserves errors >= 1<<29 for application use. - APPLICATION_ERROR = 1 << 29 -) - -const ( - // flags for CreateToolhelp32Snapshot - TH32CS_SNAPHEAPLIST = 0x01 - TH32CS_SNAPPROCESS = 0x02 - TH32CS_SNAPTHREAD = 0x04 - TH32CS_SNAPMODULE = 0x08 - TH32CS_SNAPMODULE32 = 0x10 - TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD - TH32CS_INHERIT = 0x80000000 -) - -const ( - // filters for ReadDirectoryChangesW - FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 - FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 - FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 - FILE_NOTIFY_CHANGE_SIZE = 0x008 - FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 - FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 - FILE_NOTIFY_CHANGE_CREATION = 0x040 - FILE_NOTIFY_CHANGE_SECURITY = 0x100 -) - -const ( - // do not reorder - FILE_ACTION_ADDED = iota + 1 - FILE_ACTION_REMOVED - FILE_ACTION_MODIFIED - FILE_ACTION_RENAMED_OLD_NAME - FILE_ACTION_RENAMED_NEW_NAME -) - -const ( - // wincrypt.h - PROV_RSA_FULL = 1 - PROV_RSA_SIG = 2 - PROV_DSS = 3 - PROV_FORTEZZA = 4 - PROV_MS_EXCHANGE = 5 - PROV_SSL = 6 - PROV_RSA_SCHANNEL = 12 - PROV_DSS_DH = 13 - PROV_EC_ECDSA_SIG = 14 - PROV_EC_ECNRA_SIG = 15 - PROV_EC_ECDSA_FULL = 16 - PROV_EC_ECNRA_FULL = 17 - PROV_DH_SCHANNEL = 18 - PROV_SPYRUS_LYNKS = 20 - PROV_RNG = 21 - PROV_INTEL_SEC = 22 - PROV_REPLACE_OWF = 23 - PROV_RSA_AES = 24 - CRYPT_VERIFYCONTEXT = 0xF0000000 - CRYPT_NEWKEYSET = 0x00000008 - CRYPT_DELETEKEYSET = 0x00000010 - CRYPT_MACHINE_KEYSET = 0x00000020 - CRYPT_SILENT = 0x00000040 - CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 - - USAGE_MATCH_TYPE_AND = 0 - USAGE_MATCH_TYPE_OR = 1 - - X509_ASN_ENCODING = 0x00000001 - PKCS_7_ASN_ENCODING = 0x00010000 - - CERT_STORE_PROV_MEMORY = 2 - - CERT_STORE_ADD_ALWAYS = 4 - - CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 - - CERT_TRUST_NO_ERROR = 0x00000000 - CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 - CERT_TRUST_IS_REVOKED = 0x00000004 - CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 - CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 - CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 - CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 - CERT_TRUST_IS_CYCLIC = 0x00000080 - CERT_TRUST_INVALID_EXTENSION = 0x00000100 - CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 - CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 - CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 - CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 - CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 - CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 - CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 - CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 - CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 - CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 - CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 - - CERT_CHAIN_POLICY_BASE = 1 - CERT_CHAIN_POLICY_AUTHENTICODE = 2 - CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 - CERT_CHAIN_POLICY_SSL = 4 - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 - CERT_CHAIN_POLICY_NT_AUTH = 6 - CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 - CERT_CHAIN_POLICY_EV = 8 - - CERT_E_EXPIRED = 0x800B0101 - CERT_E_ROLE = 0x800B0103 - CERT_E_PURPOSE = 0x800B0106 - CERT_E_UNTRUSTEDROOT = 0x800B0109 - CERT_E_CN_NO_MATCH = 0x800B010F - - AUTHTYPE_CLIENT = 1 - AUTHTYPE_SERVER = 2 -) - -var ( - OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") - OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") - OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") -) - -// Invented values to support what package os expects. -type Timeval struct { - Sec int32 - Usec int32 -} - -func (tv *Timeval) Nanoseconds() int64 { - return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 -} - -func NsecToTimeval(nsec int64) (tv Timeval) { - tv.Sec = int32(nsec / 1e9) - tv.Usec = int32(nsec % 1e9 / 1e3) - return -} - -type SecurityAttributes struct { - Length uint32 - SecurityDescriptor uintptr - InheritHandle uint32 -} - -type Overlapped struct { - Internal uintptr - InternalHigh uintptr - Offset uint32 - OffsetHigh uint32 - HEvent Handle -} - -type FileNotifyInformation struct { - NextEntryOffset uint32 - Action uint32 - FileNameLength uint32 - FileName uint16 -} - -type Filetime struct { - LowDateTime uint32 - HighDateTime uint32 -} - -// Nanoseconds returns Filetime ft in nanoseconds -// since Epoch (00:00:00 UTC, January 1, 1970). -func (ft *Filetime) Nanoseconds() int64 { - // 100-nanosecond intervals since January 1, 1601 - nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) - // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) - nsec -= 116444736000000000 - // convert into nanoseconds - nsec *= 100 - return nsec -} - -func NsecToFiletime(nsec int64) (ft Filetime) { - // convert into 100-nanosecond - nsec /= 100 - // change starting time to January 1, 1601 - nsec += 116444736000000000 - // split into high / low - ft.LowDateTime = uint32(nsec & 0xffffffff) - ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) - return ft -} - -type Win32finddata struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - FileSizeHigh uint32 - FileSizeLow uint32 - Reserved0 uint32 - Reserved1 uint32 - FileName [MAX_PATH - 1]uint16 - AlternateFileName [13]uint16 -} - -// This is the actual system call structure. -// Win32finddata is what we committed to in Go 1. -type win32finddata1 struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - FileSizeHigh uint32 - FileSizeLow uint32 - Reserved0 uint32 - Reserved1 uint32 - FileName [MAX_PATH]uint16 - AlternateFileName [14]uint16 -} - -func copyFindData(dst *Win32finddata, src *win32finddata1) { - dst.FileAttributes = src.FileAttributes - dst.CreationTime = src.CreationTime - dst.LastAccessTime = src.LastAccessTime - dst.LastWriteTime = src.LastWriteTime - dst.FileSizeHigh = src.FileSizeHigh - dst.FileSizeLow = src.FileSizeLow - dst.Reserved0 = src.Reserved0 - dst.Reserved1 = src.Reserved1 - - // The src is 1 element bigger than dst, but it must be NUL. - copy(dst.FileName[:], src.FileName[:]) - copy(dst.AlternateFileName[:], src.AlternateFileName[:]) -} - -type ByHandleFileInformation struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - VolumeSerialNumber uint32 - FileSizeHigh uint32 - FileSizeLow uint32 - NumberOfLinks uint32 - FileIndexHigh uint32 - FileIndexLow uint32 -} - -const ( - GetFileExInfoStandard = 0 - GetFileExMaxInfoLevel = 1 -) - -type Win32FileAttributeData struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - FileSizeHigh uint32 - FileSizeLow uint32 -} - -// ShowWindow constants -const ( - // winuser.h - SW_HIDE = 0 - SW_NORMAL = 1 - SW_SHOWNORMAL = 1 - SW_SHOWMINIMIZED = 2 - SW_SHOWMAXIMIZED = 3 - SW_MAXIMIZE = 3 - SW_SHOWNOACTIVATE = 4 - SW_SHOW = 5 - SW_MINIMIZE = 6 - SW_SHOWMINNOACTIVE = 7 - SW_SHOWNA = 8 - SW_RESTORE = 9 - SW_SHOWDEFAULT = 10 - SW_FORCEMINIMIZE = 11 -) - -type StartupInfo struct { - Cb uint32 - _ *uint16 - Desktop *uint16 - Title *uint16 - X uint32 - Y uint32 - XSize uint32 - YSize uint32 - XCountChars uint32 - YCountChars uint32 - FillAttribute uint32 - Flags uint32 - ShowWindow uint16 - _ uint16 - _ *byte - StdInput Handle - StdOutput Handle - StdErr Handle -} - -type ProcessInformation struct { - Process Handle - Thread Handle - ProcessId uint32 - ThreadId uint32 -} - -type ProcessEntry32 struct { - Size uint32 - Usage uint32 - ProcessID uint32 - DefaultHeapID uintptr - ModuleID uint32 - Threads uint32 - ParentProcessID uint32 - PriClassBase int32 - Flags uint32 - ExeFile [MAX_PATH]uint16 -} - -type Systemtime struct { - Year uint16 - Month uint16 - DayOfWeek uint16 - Day uint16 - Hour uint16 - Minute uint16 - Second uint16 - Milliseconds uint16 -} - -type Timezoneinformation struct { - Bias int32 - StandardName [32]uint16 - StandardDate Systemtime - StandardBias int32 - DaylightName [32]uint16 - DaylightDate Systemtime - DaylightBias int32 -} - -// Socket related. - -const ( - AF_UNSPEC = 0 - AF_UNIX = 1 - AF_INET = 2 - AF_INET6 = 23 - AF_NETBIOS = 17 - - SOCK_STREAM = 1 - SOCK_DGRAM = 2 - SOCK_RAW = 3 - SOCK_SEQPACKET = 5 - - IPPROTO_IP = 0 - IPPROTO_IPV6 = 0x29 - IPPROTO_TCP = 6 - IPPROTO_UDP = 17 - - SOL_SOCKET = 0xffff - SO_REUSEADDR = 4 - SO_KEEPALIVE = 8 - SO_DONTROUTE = 16 - SO_BROADCAST = 32 - SO_LINGER = 128 - SO_RCVBUF = 0x1002 - SO_SNDBUF = 0x1001 - SO_UPDATE_ACCEPT_CONTEXT = 0x700b - SO_UPDATE_CONNECT_CONTEXT = 0x7010 - - IOC_OUT = 0x40000000 - IOC_IN = 0x80000000 - IOC_VENDOR = 0x18000000 - IOC_INOUT = IOC_IN | IOC_OUT - IOC_WS2 = 0x08000000 - SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 - SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 - SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 - - // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 - - IP_TOS = 0x3 - IP_TTL = 0x4 - IP_MULTICAST_IF = 0x9 - IP_MULTICAST_TTL = 0xa - IP_MULTICAST_LOOP = 0xb - IP_ADD_MEMBERSHIP = 0xc - IP_DROP_MEMBERSHIP = 0xd - - IPV6_V6ONLY = 0x1b - IPV6_UNICAST_HOPS = 0x4 - IPV6_MULTICAST_IF = 0x9 - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_LOOP = 0xb - IPV6_JOIN_GROUP = 0xc - IPV6_LEAVE_GROUP = 0xd - - SOMAXCONN = 0x7fffffff - - TCP_NODELAY = 1 - - SHUT_RD = 0 - SHUT_WR = 1 - SHUT_RDWR = 2 - - WSADESCRIPTION_LEN = 256 - WSASYS_STATUS_LEN = 128 -) - -type WSABuf struct { - Len uint32 - Buf *byte -} - -// Invented values to support what package os expects. -const ( - S_IFMT = 0x1f000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - -const ( - FILE_TYPE_CHAR = 0x0002 - FILE_TYPE_DISK = 0x0001 - FILE_TYPE_PIPE = 0x0003 - FILE_TYPE_REMOTE = 0x8000 - FILE_TYPE_UNKNOWN = 0x0000 -) - -type Hostent struct { - Name *byte - Aliases **byte - AddrType uint16 - Length uint16 - AddrList **byte -} - -type Protoent struct { - Name *byte - Aliases **byte - Proto uint16 -} - -const ( - DNS_TYPE_A = 0x0001 - DNS_TYPE_NS = 0x0002 - DNS_TYPE_MD = 0x0003 - DNS_TYPE_MF = 0x0004 - DNS_TYPE_CNAME = 0x0005 - DNS_TYPE_SOA = 0x0006 - DNS_TYPE_MB = 0x0007 - DNS_TYPE_MG = 0x0008 - DNS_TYPE_MR = 0x0009 - DNS_TYPE_NULL = 0x000a - DNS_TYPE_WKS = 0x000b - DNS_TYPE_PTR = 0x000c - DNS_TYPE_HINFO = 0x000d - DNS_TYPE_MINFO = 0x000e - DNS_TYPE_MX = 0x000f - DNS_TYPE_TEXT = 0x0010 - DNS_TYPE_RP = 0x0011 - DNS_TYPE_AFSDB = 0x0012 - DNS_TYPE_X25 = 0x0013 - DNS_TYPE_ISDN = 0x0014 - DNS_TYPE_RT = 0x0015 - DNS_TYPE_NSAP = 0x0016 - DNS_TYPE_NSAPPTR = 0x0017 - DNS_TYPE_SIG = 0x0018 - DNS_TYPE_KEY = 0x0019 - DNS_TYPE_PX = 0x001a - DNS_TYPE_GPOS = 0x001b - DNS_TYPE_AAAA = 0x001c - DNS_TYPE_LOC = 0x001d - DNS_TYPE_NXT = 0x001e - DNS_TYPE_EID = 0x001f - DNS_TYPE_NIMLOC = 0x0020 - DNS_TYPE_SRV = 0x0021 - DNS_TYPE_ATMA = 0x0022 - DNS_TYPE_NAPTR = 0x0023 - DNS_TYPE_KX = 0x0024 - DNS_TYPE_CERT = 0x0025 - DNS_TYPE_A6 = 0x0026 - DNS_TYPE_DNAME = 0x0027 - DNS_TYPE_SINK = 0x0028 - DNS_TYPE_OPT = 0x0029 - DNS_TYPE_DS = 0x002B - DNS_TYPE_RRSIG = 0x002E - DNS_TYPE_NSEC = 0x002F - DNS_TYPE_DNSKEY = 0x0030 - DNS_TYPE_DHCID = 0x0031 - DNS_TYPE_UINFO = 0x0064 - DNS_TYPE_UID = 0x0065 - DNS_TYPE_GID = 0x0066 - DNS_TYPE_UNSPEC = 0x0067 - DNS_TYPE_ADDRS = 0x00f8 - DNS_TYPE_TKEY = 0x00f9 - DNS_TYPE_TSIG = 0x00fa - DNS_TYPE_IXFR = 0x00fb - DNS_TYPE_AXFR = 0x00fc - DNS_TYPE_MAILB = 0x00fd - DNS_TYPE_MAILA = 0x00fe - DNS_TYPE_ALL = 0x00ff - DNS_TYPE_ANY = 0x00ff - DNS_TYPE_WINS = 0xff01 - DNS_TYPE_WINSR = 0xff02 - DNS_TYPE_NBSTAT = 0xff01 -) - -const ( - DNS_INFO_NO_RECORDS = 0x251D -) - -const ( - // flags inside DNSRecord.Dw - DnsSectionQuestion = 0x0000 - DnsSectionAnswer = 0x0001 - DnsSectionAuthority = 0x0002 - DnsSectionAdditional = 0x0003 -) - -type DNSSRVData struct { - Target *uint16 - Priority uint16 - Weight uint16 - Port uint16 - Pad uint16 -} - -type DNSPTRData struct { - Host *uint16 -} - -type DNSMXData struct { - NameExchange *uint16 - Preference uint16 - Pad uint16 -} - -type DNSTXTData struct { - StringCount uint16 - StringArray [1]*uint16 -} - -type DNSRecord struct { - Next *DNSRecord - Name *uint16 - Type uint16 - Length uint16 - Dw uint32 - Ttl uint32 - Reserved uint32 - Data [40]byte -} - -const ( - TF_DISCONNECT = 1 - TF_REUSE_SOCKET = 2 - TF_WRITE_BEHIND = 4 - TF_USE_DEFAULT_WORKER = 0 - TF_USE_SYSTEM_THREAD = 16 - TF_USE_KERNEL_APC = 32 -) - -type TransmitFileBuffers struct { - Head uintptr - HeadLength uint32 - Tail uintptr - TailLength uint32 -} - -const ( - IFF_UP = 1 - IFF_BROADCAST = 2 - IFF_LOOPBACK = 4 - IFF_POINTTOPOINT = 8 - IFF_MULTICAST = 16 -) - -const SIO_GET_INTERFACE_LIST = 0x4004747F - -// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. -// will be fixed to change variable type as suitable. - -type SockaddrGen [24]byte - -type InterfaceInfo struct { - Flags uint32 - Address SockaddrGen - BroadcastAddress SockaddrGen - Netmask SockaddrGen -} - -type IpAddressString struct { - String [16]byte -} - -type IpMaskString IpAddressString - -type IpAddrString struct { - Next *IpAddrString - IpAddress IpAddressString - IpMask IpMaskString - Context uint32 -} - -const MAX_ADAPTER_NAME_LENGTH = 256 -const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 -const MAX_ADAPTER_ADDRESS_LENGTH = 8 - -type IpAdapterInfo struct { - Next *IpAdapterInfo - ComboIndex uint32 - AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte - Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte - AddressLength uint32 - Address [MAX_ADAPTER_ADDRESS_LENGTH]byte - Index uint32 - Type uint32 - DhcpEnabled uint32 - CurrentIpAddress *IpAddrString - IpAddressList IpAddrString - GatewayList IpAddrString - DhcpServer IpAddrString - HaveWins bool - PrimaryWinsServer IpAddrString - SecondaryWinsServer IpAddrString - LeaseObtained int64 - LeaseExpires int64 -} - -const MAXLEN_PHYSADDR = 8 -const MAX_INTERFACE_NAME_LEN = 256 -const MAXLEN_IFDESCR = 256 - -type MibIfRow struct { - Name [MAX_INTERFACE_NAME_LEN]uint16 - Index uint32 - Type uint32 - Mtu uint32 - Speed uint32 - PhysAddrLen uint32 - PhysAddr [MAXLEN_PHYSADDR]byte - AdminStatus uint32 - OperStatus uint32 - LastChange uint32 - InOctets uint32 - InUcastPkts uint32 - InNUcastPkts uint32 - InDiscards uint32 - InErrors uint32 - InUnknownProtos uint32 - OutOctets uint32 - OutUcastPkts uint32 - OutNUcastPkts uint32 - OutDiscards uint32 - OutErrors uint32 - OutQLen uint32 - DescrLen uint32 - Descr [MAXLEN_IFDESCR]byte -} - -type CertContext struct { - EncodingType uint32 - EncodedCert *byte - Length uint32 - CertInfo uintptr - Store Handle -} - -type CertChainContext struct { - Size uint32 - TrustStatus CertTrustStatus - ChainCount uint32 - Chains **CertSimpleChain - LowerQualityChainCount uint32 - LowerQualityChains **CertChainContext - HasRevocationFreshnessTime uint32 - RevocationFreshnessTime uint32 -} - -type CertSimpleChain struct { - Size uint32 - TrustStatus CertTrustStatus - NumElements uint32 - Elements **CertChainElement - TrustListInfo uintptr - HasRevocationFreshnessTime uint32 - RevocationFreshnessTime uint32 -} - -type CertChainElement struct { - Size uint32 - CertContext *CertContext - TrustStatus CertTrustStatus - RevocationInfo *CertRevocationInfo - IssuanceUsage *CertEnhKeyUsage - ApplicationUsage *CertEnhKeyUsage - ExtendedErrorInfo *uint16 -} - -type CertRevocationInfo struct { - Size uint32 - RevocationResult uint32 - RevocationOid *byte - OidSpecificInfo uintptr - HasFreshnessTime uint32 - FreshnessTime uint32 - CrlInfo uintptr // *CertRevocationCrlInfo -} - -type CertTrustStatus struct { - ErrorStatus uint32 - InfoStatus uint32 -} - -type CertUsageMatch struct { - Type uint32 - Usage CertEnhKeyUsage -} - -type CertEnhKeyUsage struct { - Length uint32 - UsageIdentifiers **byte -} - -type CertChainPara struct { - Size uint32 - RequestedUsage CertUsageMatch - RequstedIssuancePolicy CertUsageMatch - URLRetrievalTimeout uint32 - CheckRevocationFreshnessTime uint32 - RevocationFreshnessTime uint32 - CacheResync *Filetime -} - -type CertChainPolicyPara struct { - Size uint32 - Flags uint32 - ExtraPolicyPara uintptr -} - -type SSLExtraCertChainPolicyPara struct { - Size uint32 - AuthType uint32 - Checks uint32 - ServerName *uint16 -} - -type CertChainPolicyStatus struct { - Size uint32 - Error uint32 - ChainIndex uint32 - ElementIndex uint32 - ExtraPolicyStatus uintptr -} - -const ( - // do not reorder - HKEY_CLASSES_ROOT = 0x80000000 + iota - HKEY_CURRENT_USER - HKEY_LOCAL_MACHINE - HKEY_USERS - HKEY_PERFORMANCE_DATA - HKEY_CURRENT_CONFIG - HKEY_DYN_DATA - - KEY_QUERY_VALUE = 1 - KEY_SET_VALUE = 2 - KEY_CREATE_SUB_KEY = 4 - KEY_ENUMERATE_SUB_KEYS = 8 - KEY_NOTIFY = 16 - KEY_CREATE_LINK = 32 - KEY_WRITE = 0x20006 - KEY_EXECUTE = 0x20019 - KEY_READ = 0x20019 - KEY_WOW64_64KEY = 0x0100 - KEY_WOW64_32KEY = 0x0200 - KEY_ALL_ACCESS = 0xf003f -) - -const ( - // do not reorder - REG_NONE = iota - REG_SZ - REG_EXPAND_SZ - REG_BINARY - REG_DWORD_LITTLE_ENDIAN - REG_DWORD_BIG_ENDIAN - REG_LINK - REG_MULTI_SZ - REG_RESOURCE_LIST - REG_FULL_RESOURCE_DESCRIPTOR - REG_RESOURCE_REQUIREMENTS_LIST - REG_QWORD_LITTLE_ENDIAN - REG_DWORD = REG_DWORD_LITTLE_ENDIAN - REG_QWORD = REG_QWORD_LITTLE_ENDIAN -) - -type AddrinfoW struct { - Flags int32 - Family int32 - Socktype int32 - Protocol int32 - Addrlen uintptr - Canonname *uint16 - Addr uintptr - Next *AddrinfoW -} - -const ( - AI_PASSIVE = 1 - AI_CANONNAME = 2 - AI_NUMERICHOST = 4 -) - -type GUID struct { - Data1 uint32 - Data2 uint16 - Data3 uint16 - Data4 [8]byte -} - -var WSAID_CONNECTEX = GUID{ - 0x25a207b9, - 0xddf3, - 0x4660, - [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, -} - -const ( - FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 - FILE_SKIP_SET_EVENT_ON_HANDLE = 2 -) - -const ( - WSAPROTOCOL_LEN = 255 - MAX_PROTOCOL_CHAIN = 7 - BASE_PROTOCOL = 1 - LAYERED_PROTOCOL = 0 - - XP1_CONNECTIONLESS = 0x00000001 - XP1_GUARANTEED_DELIVERY = 0x00000002 - XP1_GUARANTEED_ORDER = 0x00000004 - XP1_MESSAGE_ORIENTED = 0x00000008 - XP1_PSEUDO_STREAM = 0x00000010 - XP1_GRACEFUL_CLOSE = 0x00000020 - XP1_EXPEDITED_DATA = 0x00000040 - XP1_CONNECT_DATA = 0x00000080 - XP1_DISCONNECT_DATA = 0x00000100 - XP1_SUPPORT_BROADCAST = 0x00000200 - XP1_SUPPORT_MULTIPOINT = 0x00000400 - XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 - XP1_MULTIPOINT_DATA_PLANE = 0x00001000 - XP1_QOS_SUPPORTED = 0x00002000 - XP1_UNI_SEND = 0x00008000 - XP1_UNI_RECV = 0x00010000 - XP1_IFS_HANDLES = 0x00020000 - XP1_PARTIAL_MESSAGE = 0x00040000 - XP1_SAN_SUPPORT_SDP = 0x00080000 - - PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 - PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 - PFL_HIDDEN = 0x00000004 - PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 - PFL_NETWORKDIRECT_PROVIDER = 0x00000010 -) - -type WSAProtocolInfo struct { - ServiceFlags1 uint32 - ServiceFlags2 uint32 - ServiceFlags3 uint32 - ServiceFlags4 uint32 - ProviderFlags uint32 - ProviderId GUID - CatalogEntryId uint32 - ProtocolChain WSAProtocolChain - Version int32 - AddressFamily int32 - MaxSockAddr int32 - MinSockAddr int32 - SocketType int32 - Protocol int32 - ProtocolMaxOffset int32 - NetworkByteOrder int32 - SecurityScheme int32 - MessageSize uint32 - ProviderReserved uint32 - ProtocolName [WSAPROTOCOL_LEN + 1]uint16 -} - -type WSAProtocolChain struct { - ChainLen int32 - ChainEntries [MAX_PROTOCOL_CHAIN]uint32 -} - -type TCPKeepalive struct { - OnOff uint32 - Time uint32 - Interval uint32 -} - -type symbolicLinkReparseBuffer struct { - SubstituteNameOffset uint16 - SubstituteNameLength uint16 - PrintNameOffset uint16 - PrintNameLength uint16 - Flags uint32 - PathBuffer [1]uint16 -} - -type mountPointReparseBuffer struct { - SubstituteNameOffset uint16 - SubstituteNameLength uint16 - PrintNameOffset uint16 - PrintNameLength uint16 - PathBuffer [1]uint16 -} - -type reparseDataBuffer struct { - ReparseTag uint32 - ReparseDataLength uint16 - Reserved uint16 - - // GenericReparseBuffer - reparseBuffer byte -} - -const ( - FSCTL_GET_REPARSE_POINT = 0x900A8 - MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 - IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 - IO_REPARSE_TAG_SYMLINK = 0xA000000C - SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 -) - -const ( - ComputerNameNetBIOS = 0 - ComputerNameDnsHostname = 1 - ComputerNameDnsDomain = 2 - ComputerNameDnsFullyQualified = 3 - ComputerNamePhysicalNetBIOS = 4 - ComputerNamePhysicalDnsHostname = 5 - ComputerNamePhysicalDnsDomain = 6 - ComputerNamePhysicalDnsFullyQualified = 7 - ComputerNameMax = 8 -) - -const ( - MOVEFILE_REPLACE_EXISTING = 0x1 - MOVEFILE_COPY_ALLOWED = 0x2 - MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 - MOVEFILE_WRITE_THROUGH = 0x8 - MOVEFILE_CREATE_HARDLINK = 0x10 - MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 -) - -const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 - -const ( - IF_TYPE_OTHER = 1 - IF_TYPE_ETHERNET_CSMACD = 6 - IF_TYPE_ISO88025_TOKENRING = 9 - IF_TYPE_PPP = 23 - IF_TYPE_SOFTWARE_LOOPBACK = 24 - IF_TYPE_ATM = 37 - IF_TYPE_IEEE80211 = 71 - IF_TYPE_TUNNEL = 131 - IF_TYPE_IEEE1394 = 144 -) - -type SocketAddress struct { - Sockaddr *syscall.RawSockaddrAny - SockaddrLength int32 -} - -type IpAdapterUnicastAddress struct { - Length uint32 - Flags uint32 - Next *IpAdapterUnicastAddress - Address SocketAddress - PrefixOrigin int32 - SuffixOrigin int32 - DadState int32 - ValidLifetime uint32 - PreferredLifetime uint32 - LeaseLifetime uint32 - OnLinkPrefixLength uint8 -} - -type IpAdapterAnycastAddress struct { - Length uint32 - Flags uint32 - Next *IpAdapterAnycastAddress - Address SocketAddress -} - -type IpAdapterMulticastAddress struct { - Length uint32 - Flags uint32 - Next *IpAdapterMulticastAddress - Address SocketAddress -} - -type IpAdapterDnsServerAdapter struct { - Length uint32 - Reserved uint32 - Next *IpAdapterDnsServerAdapter - Address SocketAddress -} - -type IpAdapterPrefix struct { - Length uint32 - Flags uint32 - Next *IpAdapterPrefix - Address SocketAddress - PrefixLength uint32 -} - -type IpAdapterAddresses struct { - Length uint32 - IfIndex uint32 - Next *IpAdapterAddresses - AdapterName *byte - FirstUnicastAddress *IpAdapterUnicastAddress - FirstAnycastAddress *IpAdapterAnycastAddress - FirstMulticastAddress *IpAdapterMulticastAddress - FirstDnsServerAddress *IpAdapterDnsServerAdapter - DnsSuffix *uint16 - Description *uint16 - FriendlyName *uint16 - PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte - PhysicalAddressLength uint32 - Flags uint32 - Mtu uint32 - IfType uint32 - OperStatus uint32 - Ipv6IfIndex uint32 - ZoneIndices [16]uint32 - FirstPrefix *IpAdapterPrefix - /* more fields might be present here. */ -} - -const ( - IfOperStatusUp = 1 - IfOperStatusDown = 2 - IfOperStatusTesting = 3 - IfOperStatusUnknown = 4 - IfOperStatusDormant = 5 - IfOperStatusNotPresent = 6 - IfOperStatusLowerLayerDown = 7 -) diff --git a/vendor/golang.org/x/text/.gitignore b/vendor/golang.org/x/text/.gitignore index 5a9d62efd4..b2de568ba1 100644 --- a/vendor/golang.org/x/text/.gitignore +++ b/vendor/golang.org/x/text/.gitignore @@ -1,2 +1,6 @@ # Add no patterns to .gitignore except for files generated by the build. last-change +/DATA +# This file is rather large and the tests really only need to be run +# after generation. +/unicode/norm/data_test.go \ No newline at end of file diff --git a/vendor/golang.org/x/text/README b/vendor/golang.org/x/text/README index 9ec24ea4c6..4826fe8fb6 100644 --- a/vendor/golang.org/x/text/README +++ b/vendor/golang.org/x/text/README @@ -1,3 +1,23 @@ This repository holds supplementary Go libraries for text processing, many involving Unicode. To submit changes to this repository, see http://golang.org/doc/contribute.html. + +To generate the tables in this repository (except for the encoding tables), +run go generate from this directory. By default tables are generated for the +Unicode version in core and the CLDR version defined in +golang.org/x/text/unicode/cldr. + +Running go generate will as a side effect create a DATA subdirectory in this +directory which holds all files that are used as a source for generating the +tables. This directory will also serve as a cache. + +Run + + go test ./... + +from this directory to run all tests. Add the "-tags icu" flag to also run +ICU conformance tests (if available). This requires that you have the correct +ICU version installed on your system. + +TODO: +- updating unversioned source files. \ No newline at end of file diff --git a/vendor/golang.org/x/text/cases/cases.go b/vendor/golang.org/x/text/cases/cases.go index 60a58d514c..736c0c312a 100644 --- a/vendor/golang.org/x/text/cases/cases.go +++ b/vendor/golang.org/x/text/cases/cases.go @@ -35,7 +35,7 @@ import ( // A Caser may be stateful and should therefore not be shared between // goroutines. type Caser struct { - t transform.Transformer + t transform.SpanningTransformer } // Bytes returns a new byte slice with the result of converting b to the case @@ -56,12 +56,17 @@ func (c Caser) String(s string) string { // 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. +// Transform implements the transform.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) } +// Span implements the transform.SpanningTransformer interface. +func (c Caser) Span(src []byte, atEOF bool) (n int, err error) { + return c.t.Span(src, atEOF) +} + // Upper returns a Caser for language-specific uppercasing. func Upper(t language.Tag, opts ...Option) Caser { return Caser{makeUpper(t, getOpts(opts...))} @@ -83,14 +88,20 @@ func Title(t language.Tag, opts ...Option) Caser { // // 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. +// sound comparisons. Use golang.org/x/text/secure/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) +type Option func(o options) options + +// TODO: consider these options to take a boolean as well, like FinalSigma. +// The advantage of using this approach is that other providers of a lower-case +// algorithm could set different defaults by prefixing a user-provided slice +// of options with their own. This is handy, for instance, for the precis +// package which would override the default to not handle the Greek final sigma. var ( // NoLower disables the lowercasing of non-leading letters for a title @@ -110,20 +121,42 @@ type options struct { // TODO: segmenter, max ignorable, alternative versions, etc. - noFinalSigma bool // Only used for testing. + ignoreFinalSigma bool } func getOpts(o ...Option) (res options) { for _, f := range o { - f(&res) + res = f(res) } return } -func noLower(o *options) { +func noLower(o options) options { o.noLower = true + return o } -func compact(o *options) { +func compact(o options) options { o.simple = true + return o +} + +// HandleFinalSigma specifies whether the special handling of Greek final sigma +// should be enabled. Unicode prescribes handling the Greek final sigma for all +// locales, but standards like IDNA and PRECIS override this default. +func HandleFinalSigma(enable bool) Option { + if enable { + return handleFinalSigma + } + return ignoreFinalSigma +} + +func ignoreFinalSigma(o options) options { + o.ignoreFinalSigma = true + return o +} + +func handleFinalSigma(o options) options { + o.ignoreFinalSigma = false + return o } diff --git a/vendor/golang.org/x/text/cases/context.go b/vendor/golang.org/x/text/cases/context.go index 0d2e497ebc..e9aa9e1936 100644 --- a/vendor/golang.org/x/text/cases/context.go +++ b/vendor/golang.org/x/text/cases/context.go @@ -4,9 +4,7 @@ package cases -import ( - "golang.org/x/text/transform" -) +import "golang.org/x/text/transform" // A context is used for iterating over source bytes, fetching case info and // writing to a destination buffer. @@ -56,6 +54,14 @@ func (c *context) ret() (nDst, nSrc int, err error) { return c.nDst, c.nSrc, transform.ErrShortSrc } +// retSpan returns the return values for the Span method. It checks whether +// there were insufficient bytes in src to complete and introduces an error +// accordingly, if necessary. +func (c *context) retSpan() (n int, err error) { + _, nSrc, err := c.ret() + return nSrc, err +} + // checkpoint sets the return value buffer points for Transform to the current // positions. func (c *context) checkpoint() { @@ -200,6 +206,23 @@ func lower(c *context) bool { return c.copy() } +func isLower(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cLower { + return true + } + if c.info&exceptionBit == 0 { + c.err = transform.ErrEndOfSpan + return false + } + e := exceptions[c.info>>exceptionShift:] + if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange { + c.err = transform.ErrEndOfSpan + return false + } + return true +} + // upper writes the uppercase version of the current rune to dst. func upper(c *context) bool { ct := c.caseType() @@ -226,6 +249,29 @@ func upper(c *context) bool { return c.copy() } +// isUpper writes the isUppercase version of the current rune to dst. +func isUpper(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cUpper { + return true + } + if c.info&exceptionBit == 0 { + c.err = transform.ErrEndOfSpan + return false + } + e := exceptions[c.info>>exceptionShift:] + // Get length of first special case mapping. + n := (e[1] >> lengthBits) & lengthMask + if ct == cTitle { + n = e[1] & lengthMask + } + if n != noChange { + c.err = transform.ErrEndOfSpan + return false + } + return true +} + // title writes the title case version of the current rune to dst. func title(c *context) bool { ct := c.caseType() @@ -257,6 +303,33 @@ func title(c *context) bool { return c.copy() } +// isTitle reports whether the current rune is in title case. +func isTitle(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cTitle { + return true + } + if c.info&exceptionBit == 0 { + if ct == cLower { + c.err = transform.ErrEndOfSpan + return false + } + return true + } + // Get the exception data. + e := exceptions[c.info>>exceptionShift:] + if nTitle := e[1] & lengthMask; nTitle != noChange { + c.err = transform.ErrEndOfSpan + return false + } + nFirst := (e[1] >> lengthBits) & lengthMask + if ct == cLower && nFirst != noChange { + c.err = transform.ErrEndOfSpan + return false + } + return true +} + // foldFull writes the foldFull version of the current rune to dst. func foldFull(c *context) bool { if c.info&hasMappingMask == 0 { @@ -279,3 +352,25 @@ func foldFull(c *context) bool { } return c.writeString(e[2 : 2+n]) } + +// isFoldFull reports whether the current run is mapped to foldFull +func isFoldFull(c *context) bool { + if c.info&hasMappingMask == 0 { + return true + } + ct := c.caseType() + if c.info&exceptionBit == 0 { + if ct != cLower || c.info&inverseFoldBit != 0 { + c.err = transform.ErrEndOfSpan + return false + } + return true + } + e := exceptions[c.info>>exceptionShift:] + n := e[0] & lengthMask + if n == 0 && ct == cLower { + return true + } + c.err = transform.ErrEndOfSpan + return false +} diff --git a/vendor/golang.org/x/text/cases/context_test.go b/vendor/golang.org/x/text/cases/context_test.go index 51e5130e49..f590878077 100644 --- a/vendor/golang.org/x/text/cases/context_test.go +++ b/vendor/golang.org/x/text/cases/context_test.go @@ -9,6 +9,7 @@ import ( "testing" "unicode" + "golang.org/x/text/internal/testtext" "golang.org/x/text/language" "golang.org/x/text/transform" "golang.org/x/text/unicode/norm" @@ -211,17 +212,31 @@ func TestCCC(t *testing.T) { } func TestWordBreaks(t *testing.T) { - for i, tt := range breakTest { - parts := strings.Split(tt, "|") - want := "" - for _, s := range parts { - want += Title(language.Und).String(s) - } - src := strings.Join(parts, "") - got := Title(language.Und).String(src) - if got != want { - t.Errorf("%d: title(%q) = %q; want %q", i, src, got, want) - } + for _, tt := range breakTest { + testtext.Run(t, tt, func(t *testing.T) { + parts := strings.Split(tt, "|") + want := "" + for _, s := range parts { + found := false + // This algorithm implements title casing given word breaks + // as defined in the Unicode standard 3.13 R3. + for _, r := range s { + title := unicode.ToTitle(r) + lower := unicode.ToLower(r) + if !found && title != lower { + found = true + want += string(title) + } else { + want += string(lower) + } + } + } + src := strings.Join(parts, "") + got := Title(language.Und).String(src) + if got != want { + t.Errorf("got %q; want %q", got, want) + } + }) } } diff --git a/vendor/golang.org/x/text/cases/fold.go b/vendor/golang.org/x/text/cases/fold.go index e95bfa8ea2..85cc434fac 100644 --- a/vendor/golang.org/x/text/cases/fold.go +++ b/vendor/golang.org/x/text/cases/fold.go @@ -18,7 +18,15 @@ func (t *caseFolder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err return c.ret() } -func makeFold(o options) transform.Transformer { +func (t *caseFolder) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isFoldFull(&c) { + c.checkpoint() + } + return c.retSpan() +} + +func makeFold(o options) transform.SpanningTransformer { // TODO: Special case folding, through option Language, Special/Turkic, or // both. // TODO: Implement Compact options. diff --git a/vendor/golang.org/x/text/cases/fold_test.go b/vendor/golang.org/x/text/cases/fold_test.go index 3c8a79d473..ca939c7c16 100644 --- a/vendor/golang.org/x/text/cases/fold_test.go +++ b/vendor/golang.org/x/text/cases/fold_test.go @@ -10,15 +10,16 @@ import ( "golang.org/x/text/internal/testtext" ) +var foldTestCases = []string{ + "βß\u13f8", // "βssᏰ" + "ab\u13fc\uab7aꭰ", // abᏴᎪᎠ + "affifflast", // affifflast + "Iİiı\u0345", // ii̇iıι + "µµΜΜςσΣΣ", // μμμμσσσσ +} + func TestFold(t *testing.T) { - testCases := []string{ - "βß\u13f8", // "βssᏰ" - "ab\u13fc\uab7aꭰ", // abᏴᎪᎠ - "affifflast", // affifflast - "Iİiı\u0345", // ii̇iıι - "µµΜΜςσΣΣ", // μμμμσσσσ - } - for _, tc := range testCases { + for _, tc := range foldTestCases { testEntry := func(name string, c Caser, m func(r rune) string) { want := "" for _, r := range tc { @@ -48,6 +49,3 @@ func TestFold(t *testing.T) { // }) } } - -func BenchmarkFullFold(b *testing.B) { benchTransformer(b, Fold(), txtNonASCII) } -func BenchmarkFullFoldASCII(b *testing.B) { benchTransformer(b, Fold(), txtASCII) } diff --git a/vendor/golang.org/x/text/cases/gen.go b/vendor/golang.org/x/text/cases/gen.go index f46170fca1..24b7230039 100644 --- a/vendor/golang.org/x/text/cases/gen.go +++ b/vendor/golang.org/x/text/cases/gen.go @@ -76,7 +76,7 @@ type breakCategory int const ( breakBreak breakCategory = iota breakLetter - breakIgnored + breakMid ) // mapping returns the case mapping for the given case type. @@ -162,9 +162,14 @@ func parseUCD() []runeInfo { // 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": + case "MidLetter", "MidNumLet", "Single_Quote": + ri.BreakCat = breakMid + if !ri.CaseIgnorable { + // finalSigma relies on the fact that all breakMid runes are + // also a Case_Ignorable. Revisit this code when this changes. + log.Fatalf("Rune %U, which has a break category mid, is not a case ignorable", ri) + } + case "ALetter", "Hebrew_Letter", "Numeric", "Extend", "ExtendNumLet", "Format", "ZWJ": ri.BreakCat = breakLetter } }) @@ -240,8 +245,11 @@ func makeEntry(ri *runeInfo) { case above: // Above ccc = cccAbove } - if ri.BreakCat == breakBreak { + switch ri.BreakCat { + case breakBreak: ccc = cccBreak + case breakMid: + ri.entry |= isMidBit } ri.entry |= ccc @@ -588,7 +596,7 @@ func verifyProperties(chars []runeInfo) { // 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) + log.Fatalf("%U: expected 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 @@ -597,7 +605,7 @@ func verifyProperties(chars []runeInfo) { 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) + log.Fatalf("%U: modifier %U is outside of expected Greek modifier set", r, m) } } } @@ -690,7 +698,7 @@ func genTablesTest() { parse("auxiliary/WordBreakProperty.txt", func(p *ucd.Parser) { switch p.String(1) { case "Extend", "Format", "MidLetter", "MidNumLet", "Single_Quote", - "ALetter", "Hebrew_Letter", "Numeric", "ExtendNumLet": + "ALetter", "Hebrew_Letter", "Numeric", "ExtendNumLet", "ZWJ": notBreak[p.Rune(0)] = true } }) diff --git a/vendor/golang.org/x/text/cases/gen_trieval.go b/vendor/golang.org/x/text/cases/gen_trieval.go index cf1a99d5e5..376d22c8f9 100644 --- a/vendor/golang.org/x/text/cases/gen_trieval.go +++ b/vendor/golang.org/x/text/cases/gen_trieval.go @@ -26,6 +26,7 @@ package main // 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 +// or isMid if case mode is cIgnorableUncased. // 5..4 CCC: zero (normal or break), above or other // } // 3 exception: interpret this value as an exception index @@ -48,6 +49,7 @@ const ( ignorableValue = 0x0004 inverseFoldBit = 1 << 7 + isMidBit = 1 << 6 exceptionBit = 1 << 3 exceptionShift = 5 @@ -57,7 +59,7 @@ const ( xorShift = 8 // There is no mapping if all xor bits and the exception bit are zero. - hasMappingMask = 0xffc0 | exceptionBit + hasMappingMask = 0xff80 | exceptionBit ) // The case mode bits encodes the case type of a rune. This includes uncased, @@ -95,10 +97,6 @@ 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 } @@ -107,6 +105,10 @@ func (c info) isCaseIgnorableAndNotCased() bool { return c&fullCasedMask == cIgnorableUncased } +func (c info) isMid() bool { + return c&(fullCasedMask|isMidBit) == isMidBit|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 diff --git a/vendor/golang.org/x/text/cases/icu.go b/vendor/golang.org/x/text/cases/icu.go new file mode 100644 index 0000000000..46530d1e40 --- /dev/null +++ b/vendor/golang.org/x/text/cases/icu.go @@ -0,0 +1,61 @@ +// 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 icu + +package cases + +// Ideally these functions would be defined in a test file, but go test doesn't +// allow CGO in tests. The build tag should ensure either way that these +// functions will not end up in the package. + +// TODO: Ensure that the correct ICU version is set. + +/* +#cgo LDFLAGS: -licui18n.57 -licuuc.57 +#include +#include +#include +#include +#include +*/ +import "C" + +import "unsafe" + +func doICU(tag, caser, input string) string { + err := C.UErrorCode(0) + loc := C.CString(tag) + cm := C.ucasemap_open(loc, C.uint32_t(0), &err) + + buf := make([]byte, len(input)*4) + dst := (*C.char)(unsafe.Pointer(&buf[0])) + src := C.CString(input) + + cn := C.int32_t(0) + + switch caser { + case "fold": + cn = C.ucasemap_utf8FoldCase(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + case "lower": + cn = C.ucasemap_utf8ToLower(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + case "upper": + cn = C.ucasemap_utf8ToUpper(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + case "title": + cn = C.ucasemap_utf8ToTitle(cm, + dst, C.int32_t(len(buf)), + src, C.int32_t(len(input)), + &err) + } + return string(buf[:cn]) +} diff --git a/vendor/golang.org/x/text/cases/icu_test.go b/vendor/golang.org/x/text/cases/icu_test.go new file mode 100644 index 0000000000..3d07e2588e --- /dev/null +++ b/vendor/golang.org/x/text/cases/icu_test.go @@ -0,0 +1,210 @@ +// 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 icu + +package cases + +import ( + "path" + "strings" + "testing" + + "golang.org/x/text/internal/testtext" + "golang.org/x/text/language" + "golang.org/x/text/unicode/norm" +) + +func TestICUConformance(t *testing.T) { + // Build test set. + input := []string{ + "a.a a_a", + "a\u05d0a", + "\u05d0'a", + "a\u03084a", + "a\u0308a", + "a3\u30a3a", + "a\u303aa", + "a_\u303a_a", + "1_a..a", + "1_a.a", + "a..a.", + "a--a-", + "a-a-", + "a\u200ba", + "a\u200b\u200ba", + "a\u00ad\u00ada", // Format + "a\u00ada", + "a''a", // SingleQuote + "a'a", + "a::a", // MidLetter + "a:a", + "a..a", // MidNumLet + "a.a", + "a;;a", // MidNum + "a;a", + "a__a", // ExtendNumlet + "a_a", + "ΟΣ''a", + } + add := func(x interface{}) { + switch v := x.(type) { + case string: + input = append(input, v) + case []string: + for _, s := range v { + input = append(input, s) + } + } + } + for _, tc := range testCases { + add(tc.src) + add(tc.lower) + add(tc.upper) + add(tc.title) + } + for _, tc := range bufferTests { + add(tc.src) + } + for _, tc := range breakTest { + add(strings.Replace(tc, "|", "", -1)) + } + for _, tc := range foldTestCases { + add(tc) + } + + // Compare ICU to Go. + for _, c := range []string{"lower", "upper", "title", "fold"} { + for _, tag := range []string{ + "und", "af", "az", "el", "lt", "nl", "tr", + } { + for _, s := range input { + if exclude(c, tag, s) { + continue + } + testtext.Run(t, path.Join(c, tag, s), func(t *testing.T) { + want := doICU(tag, c, s) + got := doGo(tag, c, s) + if norm.NFC.String(got) != norm.NFC.String(want) { + t.Errorf("\n in %[3]q (%+[3]q)\n got %[1]q (%+[1]q)\n want %[2]q (%+[2]q)", got, want, s) + } + }) + } + } + } +} + +// exclude indicates if a string should be excluded from testing. +func exclude(cm, tag, s string) bool { + list := []struct{ cm, tags, pattern string }{ + // TODO: Go does not handle certain esoteric breaks correctly. This will be + // fixed once we have a real word break iterator. Alternatively, it + // seems like we're not too far off from making it work, so we could + // fix these last steps. But first verify that using a separate word + // breaker does not hurt performance. + {"title", "af nl", "a''a"}, + {"", "", "א'a"}, + + // All the exclusions below seem to be issues with the ICU + // implementation (at version 57) and thus are not marked as TODO. + + // ICU does not handle leading apostrophe for Dutch and + // Afrikaans correctly. See http://unicode.org/cldr/trac/ticket/7078. + {"title", "af nl", "'n"}, + {"title", "af nl", "'N"}, + + // Go terminates the final sigma check after a fixed number of + // ignorables have been found. This ensures that the algorithm can make + // progress in a streaming scenario. + {"lower title", "", "\u039f\u03a3...............................a"}, + // This also applies to upper in Greek. + // NOTE: we could fix the following two cases by adding state to elUpper + // and aztrLower. However, considering a modifier to not belong to the + // preceding letter after the maximum modifiers count is reached is + // consistent with the behavior of unicode/norm. + {"upper", "el", "\u03bf" + strings.Repeat("\u0321", 29) + "\u0313"}, + {"lower", "az tr lt", "I" + strings.Repeat("\u0321", 30) + "\u0307\u0300"}, + {"upper", "lt", "i" + strings.Repeat("\u0321", 30) + "\u0307\u0300"}, + {"lower", "lt", "I" + strings.Repeat("\u0321", 30) + "\u0300"}, + + // ICU title case seems to erroneously removes \u0307 from an upper case + // I unconditionally, instead of only when lowercasing. The ICU + // transform algorithm transforms these cases consistently with our + // implementation. + {"title", "az tr", "\u0307"}, + + // The spec says to remove \u0307 after Soft-Dotted characters. ICU + // transforms conform but ucasemap_utf8ToUpper does not. + {"upper title", "lt", "i\u0307"}, + {"upper title", "lt", "i" + strings.Repeat("\u0321", 29) + "\u0307\u0300"}, + + // Both Unicode and CLDR prescribe an extra explicit dot above after a + // Soft_Dotted character if there are other modifiers. + // ucasemap_utf8ToUpper does not do this; ICU transforms do. + // The issue with ucasemap_utf8ToUpper seems to be that it does not + // consider the modifiers that are part of composition in the evaluation + // of More_Above. For instance, according to the More_Above rule for lt, + // a dotted capital I (U+0130) becomes i\u0307\u0307 (an small i with + // two additional dots). This seems odd, but is correct. ICU is + // definitely not correct as it produces different results for different + // normal forms. For instance, for an İ: + // \u0130 (NFC) -> i\u0307 (incorrect) + // I\u0307 (NFD) -> i\u0307\u0307 (correct) + // We could argue that we should not add a \u0307 if there already is + // one, but this may be hard to get correct and is not conform the + // standard. + {"lower title", "lt", "\u0130"}, + {"lower title", "lt", "\u00cf"}, + + // We are conform ICU ucasemap_utf8ToUpper if we remove support for + // elUpper. However, this is clearly not conform the spec. Moreover, the + // ICU transforms _do_ implement this transform and produces results + // consistent with our implementation. Note that we still prefer to use + // ucasemap_utf8ToUpper instead of transforms as the latter have + // inconsistencies in the word breaking algorithm. + {"upper", "el", "\u0386"}, // GREEK CAPITAL LETTER ALPHA WITH TONOS + {"upper", "el", "\u0389"}, // GREEK CAPITAL LETTER ETA WITH TONOS + {"upper", "el", "\u038A"}, // GREEK CAPITAL LETTER IOTA WITH TONOS + + {"upper", "el", "\u0391"}, // GREEK CAPITAL LETTER ALPHA + {"upper", "el", "\u0397"}, // GREEK CAPITAL LETTER ETA + {"upper", "el", "\u0399"}, // GREEK CAPITAL LETTER IOTA + + {"upper", "el", "\u03AC"}, // GREEK SMALL LETTER ALPHA WITH TONOS + {"upper", "el", "\u03AE"}, // GREEK SMALL LETTER ALPHA WITH ETA + {"upper", "el", "\u03AF"}, // GREEK SMALL LETTER ALPHA WITH IOTA + + {"upper", "el", "\u03B1"}, // GREEK SMALL LETTER ALPHA + {"upper", "el", "\u03B7"}, // GREEK SMALL LETTER ETA + {"upper", "el", "\u03B9"}, // GREEK SMALL LETTER IOTA + } + for _, x := range list { + if x.cm != "" && strings.Index(x.cm, cm) == -1 { + continue + } + if x.tags != "" && strings.Index(x.tags, tag) == -1 { + continue + } + if strings.Index(s, x.pattern) != -1 { + return true + } + } + return false +} + +func doGo(tag, caser, input string) string { + var c Caser + t := language.MustParse(tag) + switch caser { + case "lower": + c = Lower(t) + case "upper": + c = Upper(t) + case "title": + c = Title(t) + case "fold": + c = Fold() + } + return c.String(input) +} diff --git a/vendor/golang.org/x/text/cases/info.go b/vendor/golang.org/x/text/cases/info.go index 669d7ae1fa..3b51f03d68 100644 --- a/vendor/golang.org/x/text/cases/info.go +++ b/vendor/golang.org/x/text/cases/info.go @@ -28,9 +28,6 @@ func (c info) cccType() info { // 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 @@ -41,17 +38,19 @@ func (c info) cccType() info { // categories, with associated rules: // // 1) Letter: -// ALetter, Hebrew_Letter, Numeric, ExtendNumLet, Extend. +// ALetter, Hebrew_Letter, Numeric, ExtendNumLet, Extend, Format_FE, ZWJ. // 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). +// MidLetter, MidNumLet, Single_Quote. +// (Cf. case-ignorable: MidLetter, MidNumLet, Single_Quote 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. +// Any other category: NewLine, MidNum, CR, LF, Double_Quote, Katakana, and +// Other. +// 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 diff --git a/vendor/golang.org/x/text/cases/map.go b/vendor/golang.org/x/text/cases/map.go index f2a8e96d09..4baebaaa6e 100644 --- a/vendor/golang.org/x/text/cases/map.go +++ b/vendor/golang.org/x/text/cases/map.go @@ -13,6 +13,7 @@ import ( "unicode" "unicode/utf8" + "golang.org/x/text/internal" "golang.org/x/text/language" "golang.org/x/text/transform" "golang.org/x/text/unicode/norm" @@ -24,6 +25,11 @@ import ( // dst so far won't need changing as we see more source bytes. type mapFunc func(*context) bool +// A spanFunc takes a context set to the current rune and returns whether this +// rune would be altered when written to the output. It may advance the context +// to the next rune. It returns whether a checkpoint is possible. +type spanFunc func(*context) bool + // maxIgnorable defines the maximum number of ignorables to consider for // lookahead operations. const maxIgnorable = 30 @@ -36,12 +42,12 @@ func init() { for _, s := range strings.Split(supported, " ") { tags = append(tags, language.MustParse(s)) } - matcher = language.NewMatcher(tags) + matcher = internal.NewInheritanceMatcher(tags) Supported = language.NewCoverage(tags) } var ( - matcher language.Matcher + matcher *internal.InheritanceMatcher Supported language.Coverage @@ -50,56 +56,69 @@ var ( // 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 + upperFunc = []struct { + upper mapFunc + span spanFunc + }{ + {nil, nil}, // und + {nil, nil}, // af + {aztrUpper(upper), isUpper}, // az + {elUpper, noSpan}, // el + {ltUpper(upper), noSpan}, // lt + {nil, nil}, // nl + {aztrUpper(upper), isUpper}, // tr } - undUpper transform.Transformer = &undUpperCaser{} + undUpper transform.SpanningTransformer = &undUpperCaser{} + undLower transform.SpanningTransformer = &undLowerCaser{} + undLowerIgnoreSigma transform.SpanningTransformer = &undLowerIgnoreSigmaCaser{} lowerFunc = []mapFunc{ - lower, // und - lower, // af + nil, // und + nil, // af aztrLower, // az - lower, // el + nil, // el ltLower, // lt - lower, // nl + nil, // nl aztrLower, // tr } titleInfos = []struct { - title, lower mapFunc - rewrite func(*context) + title mapFunc + lower mapFunc + titleSpan spanFunc + 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 + {title, lower, isTitle, nil}, // und + {title, lower, isTitle, afnlRewrite}, // af + {aztrUpper(title), aztrLower, isTitle, nil}, // az + {title, lower, isTitle, nil}, // el + {ltUpper(title), ltLower, noSpan, nil}, // lt + {nlTitle, lower, nlTitleSpan, afnlRewrite}, // nl + {aztrUpper(title), aztrLower, isTitle, nil}, // tr } ) -func makeUpper(t language.Tag, o options) transform.Transformer { +func makeUpper(t language.Tag, o options) transform.SpanningTransformer { _, i, _ := matcher.Match(t) - f := upperFunc[i] + f := upperFunc[i].upper if f == nil { return undUpper } - return &simpleCaser{f: f} + return &simpleCaser{f: f, span: upperFunc[i].span} } -func makeLower(t language.Tag, o options) transform.Transformer { +func makeLower(t language.Tag, o options) transform.SpanningTransformer { _, i, _ := matcher.Match(t) f := lowerFunc[i] - if o.noFinalSigma { - return &simpleCaser{f: f} + if f == nil { + if o.ignoreFinalSigma { + return undLowerIgnoreSigma + } + return undLower + } + if o.ignoreFinalSigma { + return &simpleCaser{f: f, span: isLower} } return &lowerCaser{ first: f, @@ -107,22 +126,28 @@ func makeLower(t language.Tag, o options) transform.Transformer { } } -func makeTitle(t language.Tag, o options) transform.Transformer { +func makeTitle(t language.Tag, o options) transform.SpanningTransformer { _, i, _ := matcher.Match(t) x := &titleInfos[i] lower := x.lower if o.noLower { lower = (*context).copy - } else if !o.noFinalSigma { + } else if !o.ignoreFinalSigma { lower = finalSigma(lower) } return &titleCaser{ - title: x.title, - lower: lower, - rewrite: x.rewrite, + title: x.title, + lower: lower, + titleSpan: x.titleSpan, + rewrite: x.rewrite, } } +func noSpan(c *context) bool { + c.err = transform.ErrEndOfSpan + return false +} + // 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. @@ -132,7 +157,7 @@ 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) { +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) @@ -141,26 +166,117 @@ func (t *undUpperCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, return c.ret() } +func (t undUpperCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isUpper(&c) { + c.checkpoint() + } + return c.retSpan() +} + +// undLowerIgnoreSigmaCaser implements the Transformer interface for doing +// a lower case mapping for the root locale (und) ignoring final sigma +// handling. This casing algorithm is used in some performance-critical packages +// like secure/precis and x/net/http/idna, which warrants its special-casing. +type undLowerIgnoreSigmaCaser struct{ transform.NopResetter } + +func (t undLowerIgnoreSigmaCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() && lower(&c) { + c.checkpoint() + } + return c.ret() + +} + +// Span implements a generic lower-casing. This is possible as isLower works +// for all lowercasing variants. All lowercase variants only vary in how they +// transform a non-lowercase letter. They will never change an already lowercase +// letter. In addition, there is no state. +func (t undLowerIgnoreSigmaCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isLower(&c) { + c.checkpoint() + } + return c.retSpan() +} + type simpleCaser struct { context - f mapFunc + f mapFunc + span spanFunc } // 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 := context{dst: dst, src: src, atEOF: atEOF} + for c.next() && t.f(&c) { + c.checkpoint() + } + return c.ret() +} + +func (t *simpleCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && t.span(&c) { + c.checkpoint() + } + return c.retSpan() +} + +// undLowerCaser implements the Transformer interface for doing a lower case +// mapping for the root locale (und) ignoring final sigma handling. This casing +// algorithm is used in some performance-critical packages like secure/precis +// and x/net/http/idna, which warrants its special-casing. +type undLowerCaser struct{ transform.NopResetter } + +func (t undLowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + + for isInterWord := true; c.next(); { + if isInterWord { + if c.info.isCased() { + if !lower(&c) { + break + } + isInterWord = false + } else if !c.copy() { + break + } + } else { + if c.info.isNotCasedAndNotCaseIgnorable() { + if !c.copy() { + break + } + isInterWord = true + } else if !c.hasPrefix("Σ") { + if !lower(&c) { + break + } + } else if !finalSigmaBody(&c) { + break + } + } c.checkpoint() } return c.ret() } +func (t undLowerCaser) Span(src []byte, atEOF bool) (n int, err error) { + c := context{src: src, atEOF: atEOF} + for c.next() && isLower(&c) { + c.checkpoint() + } + return c.retSpan() +} + // 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 { + undLowerIgnoreSigmaCaser + context first, midWord mapFunc @@ -202,7 +318,9 @@ type titleCaser struct { context // rune mappings used by the actual casing algorithms. - title, lower mapFunc + title mapFunc + lower mapFunc + titleSpan spanFunc rewrite func(*context) } @@ -228,10 +346,10 @@ func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err t.rewrite(c) } - wasMid := p.isCaseIgnorableAndNonBreakStarter() + wasMid := p.isMid() // Break out of this loop on failure to ensure we do not modify the // state incorrectly. - if p.isCased() && !p.isCaseIgnorableAndNotCased() { + if p.isCased() { if !c.isMidWord { if !t.title(c) { break @@ -242,26 +360,69 @@ func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err } } else if !c.copy() { break + } else if p.isBreak() { + c.isMidWord = false + } + + // As we save the state of the transformer, it is safe to call + // checkpoint after any successful write. + if !(c.isMidWord && wasMid) { + c.checkpoint() } - // 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() { + if !c.next() { + break + } + if wasMid && c.info.isMid() { c.isMidWord = false } + } + return c.ret() +} + +func (t *titleCaser) Span(src []byte, atEOF bool) (n int, err error) { + t.context = context{src: src, atEOF: atEOF, isMidWord: t.isMidWord} + c := &t.context + + if !c.next() { + return c.retSpan() + } + + for { + p := c.info + if t.rewrite != nil { + t.rewrite(c) + } + wasMid := p.isMid() + // Break out of this loop on failure to ensure we do not modify the + // state incorrectly. + if p.isCased() { + if !c.isMidWord { + if !t.titleSpan(c) { + break + } + c.isMidWord = true + } else if !isLower(c) { + break + } + } else 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.isMidWord && wasMid) { + c.checkpoint() + } if !c.next() { break } - if wasMid && c.info.isCaseIgnorableAndNonBreakStarter() { + if wasMid && c.info.isMid() { c.isMidWord = false } } - return c.ret() + return c.retSpan() } // finalSigma adds Greek final Sigma handing to another casing function. It @@ -269,44 +430,69 @@ func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err // 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) } + return finalSigmaBody(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 +func finalSigmaBody(c *context) bool { + // Current rune must be ∑. + + // ::NFD(); + // # 03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA + // Σ } [:case-ignorable:]* [:cased:] → σ; + // [:cased:] [:case-ignorable:]* { Σ → ς; + // ::Any-Lower; + // ::NFC(); + + p := c.pDst + c.writeString("ς") + + // TODO: we should do this here, but right now this will never have an + // effect as this is called when the prefix is Sigma, whereas Dutch and + // Afrikaans only test for an apostrophe. + // + // if t.rewrite != nil { + // t.rewrite(c) + // } + + // We need to do one more iteration after maxIgnorable, as a cased + // letter is not an ignorable and may modify the result. + wasMid := false + for i := 0; i < maxIgnorable+1; i++ { + if !c.next() { + return false + } + if !c.info.isCaseIgnorable() { + // All Midword runes are also case ignorable, so we are + // guaranteed to have a letter or word break here. As we are + // unreading the run, there is no need to unset c.isMidWord; + // the title caser will handle this. + 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]++ // ς → σ } - // 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() + c.unreadRune() + return true } - return true + // A case ignorable may also introduce a word break, so we may need + // to continue searching even after detecting a break. + isMid := c.info.isMid() + if (wasMid && isMid) || c.info.isBreak() { + c.isMidWord = false + } + wasMid = isMid + c.copy() } + return true } +// finalSigmaSpan would be the same as isLower. + // 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! @@ -376,6 +562,8 @@ func elUpper(c *context) bool { return i == maxIgnorable } +// TODO: implement elUpperSpan (low-priority: complex and infrequent). + func ltLower(c *context) bool { // From CLDR: // # Introduce an explicit dot above when lowercasing capital I's and J's @@ -390,10 +578,10 @@ func ltLower(c *context) bool { // ::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; + // I \u0328 (Į) } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0328 \u0307; + // I \u0300 (Ì) → i \u0307 \u0300; + // I \u0301 (Í) → i \u0307 \u0301; + // I \u0303 (Ĩ) → i \u0307 \u0303; // ::Any-Lower(); // ::NFC(); @@ -445,9 +633,16 @@ func ltLower(c *context) bool { return i == maxIgnorable } +// ltLowerSpan would be the same as isLower. + func ltUpper(f mapFunc) mapFunc { return func(c *context) bool { + // Unicode: + // 0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE + // // From CLDR: + // # Remove \u0307 following soft-dotteds (i, j, and the like), with possible + // # intervening non-230 marks. // ::NFD(); // [:Soft_Dotted:] [^[:ccc=Not_Reordered:][:ccc=Above:]]* { \u0307 → ; // ::Any-Upper(); @@ -511,6 +706,8 @@ func ltUpper(f mapFunc) mapFunc { } } +// TODO: implement ltUpperSpan (low priority: complex and infrequent). + func aztrUpper(f mapFunc) mapFunc { return func(c *context) bool { // i→İ; @@ -571,6 +768,8 @@ Loop: return c.writeString("ı") && c.writeBytes(c.src[start:c.pSrc+c.sz]) && done } +// aztrLowerSpan would be the same as isLower. + func nlTitle(c *context) bool { // From CLDR: // # Special titlecasing for Dutch initial "ij". @@ -591,6 +790,24 @@ func nlTitle(c *context) bool { return true } +func nlTitleSpan(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' { + return isTitle(c) + } + if !c.next() || c.src[c.pSrc] == 'j' { + return false + } + if c.src[c.pSrc] != '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("’") { diff --git a/vendor/golang.org/x/text/cases/map_test.go b/vendor/golang.org/x/text/cases/map_test.go index 42d12aee0b..8ac39118da 100644 --- a/vendor/golang.org/x/text/cases/map_test.go +++ b/vendor/golang.org/x/text/cases/map_test.go @@ -6,8 +6,11 @@ package cases import ( "bytes" + "fmt" + "path" "strings" "testing" + "unicode/utf8" "golang.org/x/text/internal/testtext" "golang.org/x/text/language" @@ -24,12 +27,6 @@ type testCase struct { opts options } -// We don't support the NoFinalSigma option, but we use it to test the -// underlying lower casers and to be able to compare differences in performance. -func noFinalSigma(o *options) { - o.noFinalSigma = true -} - var testCases = []testCase{ 0: { lang: "und", @@ -37,7 +34,7 @@ var testCases = []testCase{ title: "Abc Abc Abc Abc İsıi Εσάσ", lower: "abc abc abc abc i\u0307sıi εσάσ", upper: "ABC ABC ABC ABC İSII ΕΣΆΣ", - opts: getOpts(noFinalSigma), + opts: getOpts(HandleFinalSigma(false)), }, 1: { @@ -46,6 +43,7 @@ var testCases = []testCase{ title: "Abc Abc Abc Abc İsıi Εσάς Σ _Σ -Σ", lower: "abc abc abc abc i\u0307sıi εσάς σ _σ -σ", upper: "ABC ABC ABC ABC İSII ΕΣΆΣ Σ _Σ -Σ", + opts: getOpts(HandleFinalSigma(true)), }, 2: { // Title cased runes. @@ -164,7 +162,7 @@ func TestCaseMappings(t *testing.T) { for _, lang := range strings.Split(tt.lang, " ") { tag := language.MustParse(lang) - testEntry := func(name string, mk func(language.Tag, options) transform.Transformer, gold interface{}) { + testEntry := func(name string, mk func(language.Tag, options) transform.SpanningTransformer, gold interface{}) { c := Caser{mk(tag, tt.opts)} if gold != nil { wants, ok := gold.([]string) @@ -201,38 +199,140 @@ func TestAlloc(t *testing.T) { for i, f := range []func() Caser{ func() Caser { return Upper(language.Und) }, func() Caser { return Lower(language.Und) }, - func() Caser { return Title(language.Und) }, + func() Caser { return Lower(language.Und, HandleFinalSigma(false)) }, + // TODO: use a shared copy for these casers as well, in order of + // importance, starting with the most important: + // func() Caser { return Title(language.Und) }, + // func() Caser { return Title(language.Und, HandleFinalSigma(false)) }, } { - var c Caser - v := testtext.AllocsPerRun(2, func() { - c = f() + testtext.Run(t, "", func(t *testing.T) { + var c Caser + v := testtext.AllocsPerRun(10, func() { + c = f() + }) + if v > 0 { + // TODO: Right now only Upper has 1 allocation. Special-case Lower + // and Title as well to have less allocations for the root locale. + t.Errorf("%d:init: number of allocs was %f; want 0", i, v) + } + v = testtext.AllocsPerRun(2, func() { + c.Transform(dst, src, true) + }) + if v > 0 { + t.Errorf("%d:transform: number of allocs was %f; want 0", i, v) + } }) - if v > 1 { - // TODO: Right now only Upper has 1 allocation. Special-case Lower - // and Title as well to have less allocations for the root locale. - t.Skipf("%d:init: number of allocs was %f; want 0", i, v) - } - v = testtext.AllocsPerRun(2, func() { - c.Transform(dst, src, true) + } +} + +func testHandover(t *testing.T, c Caser, src string) { + want := c.String(src) + // Find the common prefix. + pSrc := 0 + for ; pSrc < len(src) && pSrc < len(want) && want[pSrc] == src[pSrc]; pSrc++ { + } + + // Test handover for each substring of the prefix. + for i := 0; i < pSrc; i++ { + testtext.Run(t, fmt.Sprint("interleave/", i), func(t *testing.T) { + dst := make([]byte, 4*len(src)) + c.Reset() + nSpan, _ := c.Span([]byte(src[:i]), false) + copy(dst, src[:nSpan]) + nTransform, _, _ := c.Transform(dst[nSpan:], []byte(src[nSpan:]), true) + got := string(dst[:nSpan+nTransform]) + if got != want { + t.Errorf("full string: got %q; want %q", got, want) + } }) - if v > 0 { - t.Errorf("%d:transform: number of allocs was %f; want 0", i, v) - } } } -func TestShortBuffersAndOverflow(t *testing.T) { - // minBufSize is the size of the buffer by which the casing operation in - // this package are guaranteed to make progress. - const minBufSize = norm.MaxSegmentSize - - for i, tt := range []struct { - desc, src, want string - firstErr error - dstSize, srcSize int - t transform.Transformer +func TestHandover(t *testing.T) { + testCases := []struct { + desc string + t Caser + first, second string }{{ - desc: "und upper: short dst", + "title/nosigma/single midword", + Title(language.Und, HandleFinalSigma(false)), + "A.", "a", + }, { + "title/nosigma/single midword", + Title(language.Und, HandleFinalSigma(false)), + "A", ".a", + }, { + "title/nosigma/double midword", + Title(language.Und, HandleFinalSigma(false)), + "A..", "a", + }, { + "title/nosigma/double midword", + Title(language.Und, HandleFinalSigma(false)), + "A.", ".a", + }, { + "title/nosigma/double midword", + Title(language.Und, HandleFinalSigma(false)), + "A", "..a", + }, { + "title/sigma/single midword", + Title(language.Und), + "ΟΣ.", "a", + }, { + "title/sigma/single midword", + Title(language.Und), + "ΟΣ", ".a", + }, { + "title/sigma/double midword", + Title(language.Und), + "ΟΣ..", "a", + }, { + "title/sigma/double midword", + Title(language.Und), + "ΟΣ.", ".a", + }, { + "title/sigma/double midword", + Title(language.Und), + "ΟΣ", "..a", + }, { + "title/af/leading apostrophe", + Title(language.Afrikaans), + "'", "n bietje", + }} + for _, tc := range testCases { + testtext.Run(t, tc.desc, func(t *testing.T) { + src := tc.first + tc.second + want := tc.t.String(src) + tc.t.Reset() + n, _ := tc.t.Span([]byte(tc.first), false) + + dst := make([]byte, len(want)) + copy(dst, tc.first[:n]) + + nDst, _, _ := tc.t.Transform(dst[n:], []byte(src[n:]), true) + got := string(dst[:n+nDst]) + if got != want { + t.Errorf("got %q; want %q", got, want) + } + }) + } +} + +// minBufSize is the size of the buffer by which the casing operation in +// this package are guaranteed to make progress. +const minBufSize = norm.MaxSegmentSize + +type bufferTest struct { + desc, src, want string + firstErr error + dstSize, srcSize int + t transform.SpanningTransformer +} + +var bufferTests []bufferTest + +func init() { + bufferTests = []bufferTest{{ + desc: "und/upper/short dst", src: "abcdefg", want: "ABCDEFG", firstErr: transform.ErrShortDst, @@ -240,7 +340,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Upper(language.Und), }, { - desc: "und upper: short src", + desc: "und/upper/short src", src: "123é56", want: "123É56", firstErr: transform.ErrShortSrc, @@ -248,7 +348,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: 4, t: Upper(language.Und), }, { - desc: "und upper: no error on short", + desc: "und/upper/no error on short", src: "12", want: "12", firstErr: nil, @@ -256,7 +356,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: 1, t: Upper(language.Und), }, { - desc: "und lower: short dst", + desc: "und/lower/short dst", src: "ABCDEFG", want: "abcdefg", firstErr: transform.ErrShortDst, @@ -264,7 +364,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Lower(language.Und), }, { - desc: "und lower: short src", + desc: "und/lower/short src", src: "123É56", want: "123é56", firstErr: transform.ErrShortSrc, @@ -272,7 +372,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: 4, t: Lower(language.Und), }, { - desc: "und lower: no error on short", + desc: "und/lower/no error on short", src: "12", want: "12", firstErr: nil, @@ -280,14 +380,28 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: 1, t: Lower(language.Und), }, { - desc: "final sigma: no error", + desc: "und/lower/simple (no final sigma)", + src: "ΟΣ ΟΣΣ", + want: "οσ οσσ", + dstSize: minBufSize, + srcSize: minBufSize, + t: Lower(language.Und, HandleFinalSigma(false)), + }, { + desc: "und/title/simple (no final sigma)", + src: "ΟΣ ΟΣΣ", + want: "Οσ Οσσ", + dstSize: minBufSize, + srcSize: minBufSize, + t: Title(language.Und, HandleFinalSigma(false)), + }, { + desc: "und/title/final sigma: no error", src: "ΟΣ", want: "Ος", dstSize: minBufSize, srcSize: minBufSize, t: Title(language.Und), }, { - desc: "final sigma: short source", + desc: "und/title/final sigma: short source", src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", firstErr: transform.ErrShortSrc, @@ -295,7 +409,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: 10, t: Title(language.Und), }, { - desc: "final sigma: short destination 1", + desc: "und/title/final sigma: short destination 1", src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", firstErr: transform.ErrShortDst, @@ -303,7 +417,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Title(language.Und), }, { - desc: "final sigma: short destination 2", + desc: "und/title/final sigma: short destination 2", src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", firstErr: transform.ErrShortDst, @@ -311,7 +425,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Title(language.Und), }, { - desc: "final sigma: short destination 3", + desc: "und/title/final sigma: short destination 3", src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", firstErr: transform.ErrShortDst, @@ -319,7 +433,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Title(language.Und), }, { - desc: "clipped UTF-8 rune", + desc: "und/title/clipped UTF-8 rune", src: "σσσσσσσσσσσ", want: "Σσσσσσσσσσσ", firstErr: transform.ErrShortSrc, @@ -327,9 +441,9 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: 5, t: Title(language.Und), }, { - desc: "clipped UTF-8 rune atEOF", - src: "σσσ" + string([]byte{0xC0}), - want: "Σσσ" + string([]byte{0xC0}), + desc: "und/title/clipped UTF-8 rune atEOF", + src: "σσσ" + string([]byte{0xCF}), + want: "Σσσ" + string([]byte{0xCF}), dstSize: minBufSize, srcSize: minBufSize, t: Title(language.Und), @@ -337,9 +451,9 @@ func TestShortBuffersAndOverflow(t *testing.T) { // Note: the choice to change the final sigma at the end in case of // too many case ignorables is arbitrary. The main reason for this // choice is that it results in simpler code. - desc: "final sigma: max ignorables", + desc: "und/title/final sigma: max ignorables", src: "ΟΣ" + strings.Repeat(".", maxIgnorable) + "a", - want: "Οσ" + strings.Repeat(".", maxIgnorable) + "a", + want: "Οσ" + strings.Repeat(".", maxIgnorable) + "A", dstSize: minBufSize, srcSize: minBufSize, t: Title(language.Und), @@ -347,28 +461,45 @@ func TestShortBuffersAndOverflow(t *testing.T) { // Note: the choice to change the final sigma at the end in case of // too many case ignorables is arbitrary. The main reason for this // choice is that it results in simpler code. - desc: "final sigma: too many ignorables", + desc: "und/title/long string", + src: "AA" + strings.Repeat(".", maxIgnorable+1) + "a", + want: "Aa" + strings.Repeat(".", maxIgnorable+1) + "A", + dstSize: minBufSize, + srcSize: len("AA" + strings.Repeat(".", maxIgnorable+1)), + t: Title(language.Und), + }, { + // Note: the choice to change the final sigma at the end in case of + // too many case ignorables is arbitrary. The main reason for this + // choice is that it results in simpler code. + desc: "und/title/final sigma: too many ignorables", src: "ΟΣ" + strings.Repeat(".", maxIgnorable+1) + "a", - want: "Ος" + strings.Repeat(".", maxIgnorable+1) + "a", + want: "Ος" + strings.Repeat(".", maxIgnorable+1) + "A", dstSize: minBufSize, srcSize: len("ΟΣ" + strings.Repeat(".", maxIgnorable+1)), t: Title(language.Und), }, { - desc: "el upper: max ignorables", + desc: "und/title/final sigma: apostrophe", + src: "ΟΣ''a", + want: "Οσ''A", + dstSize: minBufSize, + srcSize: minBufSize, + t: Title(language.Und), + }, { + desc: "el/upper/max ignorables", src: "ο" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0313", want: "Ο" + strings.Repeat("\u0321", maxIgnorable-1), dstSize: minBufSize, srcSize: minBufSize, t: Upper(language.Greek), }, { - desc: "el upper: too many ignorables", + desc: "el/upper/too many ignorables", src: "ο" + strings.Repeat("\u0321", maxIgnorable) + "\u0313", want: "Ο" + strings.Repeat("\u0321", maxIgnorable) + "\u0313", dstSize: minBufSize, srcSize: len("ο" + strings.Repeat("\u0321", maxIgnorable)), t: Upper(language.Greek), }, { - desc: "el upper: short dst", + desc: "el/upper/short dst", src: "123ο", want: "123Ο", firstErr: transform.ErrShortDst, @@ -376,21 +507,21 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Upper(language.Greek), }, { - desc: "lt lower: max ignorables", + desc: "lt/lower/max ignorables", src: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", want: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", dstSize: minBufSize, srcSize: minBufSize, t: Lower(language.Lithuanian), }, { - desc: "lt lower: too many ignorables", + desc: "lt/lower/too many ignorables", src: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0300", want: "i" + strings.Repeat("\u0321", maxIgnorable) + "\u0300", dstSize: minBufSize, srcSize: len("I" + strings.Repeat("\u0321", maxIgnorable)), t: Lower(language.Lithuanian), }, { - desc: "lt lower: decomposition with short dst buffer 1", + desc: "lt/lower/decomposition with short dst buffer 1", src: "aaaaa\u00cc", // U+00CC LATIN CAPITAL LETTER I GRAVE firstErr: transform.ErrShortDst, want: "aaaaai\u0307\u0300", @@ -398,7 +529,7 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Lower(language.Lithuanian), }, { - desc: "lt lower: decomposition with short dst buffer 2", + desc: "lt/lower/decomposition with short dst buffer 2", src: "aaaa\u00cc", // U+00CC LATIN CAPITAL LETTER I GRAVE firstErr: transform.ErrShortDst, want: "aaaai\u0307\u0300", @@ -406,21 +537,21 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Lower(language.Lithuanian), }, { - desc: "lt upper: max ignorables", + desc: "lt/upper/max ignorables", src: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", want: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", dstSize: minBufSize, srcSize: minBufSize, t: Upper(language.Lithuanian), }, { - desc: "lt upper: too many ignorables", + desc: "lt/upper/too many ignorables", src: "i" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", want: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", dstSize: minBufSize, srcSize: len("i" + strings.Repeat("\u0321", maxIgnorable)), t: Upper(language.Lithuanian), }, { - desc: "lt upper: short dst", + desc: "lt/upper/short dst", src: "12i\u0307\u0300", want: "12\u00cc", firstErr: transform.ErrShortDst, @@ -428,21 +559,21 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Upper(language.Lithuanian), }, { - desc: "aztr lower: max ignorables", + desc: "aztr/lower/max ignorables", src: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", want: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", dstSize: minBufSize, srcSize: minBufSize, t: Lower(language.Turkish), }, { - desc: "aztr lower: too many ignorables", + desc: "aztr/lower/too many ignorables", src: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", want: "\u0131" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", dstSize: minBufSize, srcSize: len("I" + strings.Repeat("\u0321", maxIgnorable)), t: Lower(language.Turkish), }, { - desc: "nl title: pre-IJ cutoff", + desc: "nl/title/pre-IJ cutoff", src: " ij", want: " IJ", firstErr: transform.ErrShortDst, @@ -450,34 +581,268 @@ func TestShortBuffersAndOverflow(t *testing.T) { srcSize: minBufSize, t: Title(language.Dutch), }, { - desc: "nl title: mid-IJ cutoff", + desc: "nl/title/mid-IJ cutoff", src: " ij", want: " IJ", firstErr: transform.ErrShortDst, dstSize: 3, srcSize: minBufSize, t: Title(language.Dutch), - }} { - buf := make([]byte, tt.dstSize) - got := []byte{} - var nSrc, nDst int - var err error - for p := 0; p < len(tt.src); p += nSrc { - q := p + tt.srcSize - if q > len(tt.src) { - q = len(tt.src) + }, { + desc: "af/title/apostrophe", + src: "'n bietje", + want: "'n Bietje", + firstErr: transform.ErrShortDst, + dstSize: 3, + srcSize: minBufSize, + t: Title(language.Afrikaans), + }} +} + +func TestShortBuffersAndOverflow(t *testing.T) { + for i, tt := range bufferTests { + testtext.Run(t, tt.desc, func(t *testing.T) { + buf := make([]byte, tt.dstSize) + got := []byte{} + var nSrc, nDst int + var err error + for p := 0; p < len(tt.src); p += nSrc { + q := p + tt.srcSize + if q > len(tt.src) { + q = len(tt.src) + } + nDst, nSrc, err = tt.t.Transform(buf, []byte(tt.src[p:q]), q == len(tt.src)) + got = append(got, buf[:nDst]...) + + if p == 0 && err != tt.firstErr { + t.Errorf("%d:%s:\n error was %v; want %v", i, tt.desc, err, tt.firstErr) + break + } } - nDst, nSrc, err = tt.t.Transform(buf, []byte(tt.src[p:q]), q == len(tt.src)) - got = append(got, buf[:nDst]...) + if string(got) != tt.want { + t.Errorf("%d:%s:\ngot %+q;\nwant %+q", i, tt.desc, got, tt.want) + } + testHandover(t, Caser{tt.t}, tt.src) + }) + } +} - if p == 0 && err != tt.firstErr { - t.Errorf("%d:%s:\n error was %v; want %v", i, tt.desc, err, tt.firstErr) - break +func TestSpan(t *testing.T) { + for _, tt := range []struct { + desc string + src string + want string + atEOF bool + err error + t Caser + }{{ + desc: "und/upper/basic", + src: "abcdefg", + want: "", + atEOF: true, + err: transform.ErrEndOfSpan, + t: Upper(language.Und), + }, { + desc: "und/upper/short src", + src: "123É"[:4], + want: "123", + atEOF: false, + err: transform.ErrShortSrc, + t: Upper(language.Und), + }, { + desc: "und/upper/no error on short", + src: "12", + want: "12", + atEOF: false, + t: Upper(language.Und), + }, { + desc: "und/lower/basic", + src: "ABCDEFG", + want: "", + atEOF: true, + err: transform.ErrEndOfSpan, + t: Lower(language.Und), + }, { + desc: "und/lower/short src num", + src: "123é"[:4], + want: "123", + atEOF: false, + err: transform.ErrShortSrc, + t: Lower(language.Und), + }, { + desc: "und/lower/short src greek", + src: "αβγé"[:7], + want: "αβγ", + atEOF: false, + err: transform.ErrShortSrc, + t: Lower(language.Und), + }, { + desc: "und/lower/no error on short", + src: "12", + want: "12", + atEOF: false, + t: Lower(language.Und), + }, { + desc: "und/lower/simple (no final sigma)", + src: "ος οσσ", + want: "οσ οσσ", + atEOF: true, + t: Lower(language.Und, HandleFinalSigma(false)), + }, { + desc: "und/title/simple (no final sigma)", + src: "Οσ Οσσ", + want: "Οσ Οσσ", + atEOF: true, + t: Title(language.Und, HandleFinalSigma(false)), + }, { + desc: "und/lower/final sigma: no error", + src: "οΣ", // Oς + want: "ο", // Oς + err: transform.ErrEndOfSpan, + t: Lower(language.Und), + }, { + desc: "und/title/final sigma: no error", + src: "ΟΣ", // Oς + want: "Ο", // Oς + err: transform.ErrEndOfSpan, + t: Title(language.Und), + }, { + desc: "und/title/final sigma: no short source!", + src: "ΟσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσΣ", + want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσ", + err: transform.ErrEndOfSpan, + t: Title(language.Und), + }, { + desc: "und/title/clipped UTF-8 rune", + src: "Σσ" + string([]byte{0xCF}), + want: "Σσ", + atEOF: false, + err: transform.ErrShortSrc, + t: Title(language.Und), + }, { + desc: "und/title/clipped UTF-8 rune atEOF", + src: "Σσσ" + string([]byte{0xCF}), + want: "Σσσ" + string([]byte{0xCF}), + atEOF: true, + t: Title(language.Und), + }, { + // Note: the choice to change the final sigma at the end in case of + // too many case ignorables is arbitrary. The main reason for this + // choice is that it results in simpler code. + desc: "und/title/long string", + src: "A" + strings.Repeat("a", maxIgnorable+5), + want: "A" + strings.Repeat("a", maxIgnorable+5), + t: Title(language.Und), + }, { + // Note: the choice to change the final sigma at the end in case of + // too many case ignorables is arbitrary. The main reason for this + // choice is that it results in simpler code. + desc: "und/title/cyrillic", + src: "При", + want: "При", + atEOF: true, + t: Title(language.Und, HandleFinalSigma(false)), + }, { + // Note: the choice to change the final sigma at the end in case of + // too many case ignorables is arbitrary. The main reason for this + // choice is that it results in simpler code. + desc: "und/title/final sigma: max ignorables", + src: "Οσ" + strings.Repeat(".", maxIgnorable) + "A", + want: "Οσ" + strings.Repeat(".", maxIgnorable) + "A", + t: Title(language.Und), + }, { + desc: "el/upper/max ignorables - not implemented", + src: "Ο" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0313", + want: "", + err: transform.ErrEndOfSpan, + t: Upper(language.Greek), + }, { + desc: "el/upper/too many ignorables - not implemented", + src: "Ο" + strings.Repeat("\u0321", maxIgnorable) + "\u0313", + want: "", + err: transform.ErrEndOfSpan, + t: Upper(language.Greek), + }, { + desc: "el/upper/short dst", + src: "123ο", + want: "", + err: transform.ErrEndOfSpan, + t: Upper(language.Greek), + }, { + desc: "lt/lower/max ignorables", + src: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", + want: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", + t: Lower(language.Lithuanian), + }, { + desc: "lt/lower/isLower", + src: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0300", + want: "", + err: transform.ErrEndOfSpan, + t: Lower(language.Lithuanian), + }, { + desc: "lt/lower/not identical", + src: "aaaaa\u00cc", // U+00CC LATIN CAPITAL LETTER I GRAVE + err: transform.ErrEndOfSpan, + want: "aaaaa", + t: Lower(language.Lithuanian), + }, { + desc: "lt/lower/identical", + src: "aaaai\u0307\u0300", // U+00CC LATIN CAPITAL LETTER I GRAVE + want: "aaaai\u0307\u0300", + t: Lower(language.Lithuanian), + }, { + desc: "lt/upper/not implemented", + src: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", + want: "", + err: transform.ErrEndOfSpan, + t: Upper(language.Lithuanian), + }, { + desc: "lt/upper/not implemented, ascii", + src: "AB", + want: "", + err: transform.ErrEndOfSpan, + t: Upper(language.Lithuanian), + }, { + desc: "nl/title/pre-IJ cutoff", + src: " IJ", + want: " IJ", + t: Title(language.Dutch), + }, { + desc: "nl/title/mid-IJ cutoff", + src: " Ia", + want: " Ia", + t: Title(language.Dutch), + }, { + desc: "af/title/apostrophe", + src: "'n Bietje", + want: "'n Bietje", + t: Title(language.Afrikaans), + }, { + desc: "af/title/apostrophe-incorrect", + src: "'N Bietje", + // The Single_Quote (a MidWord), needs to be retained as unspanned so + // that a successive call to Transform can detect that N should not be + // capitalized. + want: "", + err: transform.ErrEndOfSpan, + t: Title(language.Afrikaans), + }} { + testtext.Run(t, tt.desc, func(t *testing.T) { + for p := 0; p < len(tt.want); p += utf8.RuneLen([]rune(tt.src[p:])[0]) { + tt.t.Reset() + n, err := tt.t.Span([]byte(tt.src[:p]), false) + if err != nil && err != transform.ErrShortSrc { + t.Errorf("early failure:Span(%+q): %v (%d < %d)", tt.src[:p], err, n, len(tt.want)) + break + } } - } - if string(got) != tt.want { - t.Errorf("%d:%s:\ngot %+q;\nwant %+q", i, tt.desc, got, tt.want) - } + tt.t.Reset() + n, err := tt.t.Span([]byte(tt.src), tt.atEOF) + if n != len(tt.want) || err != tt.err { + t.Errorf("Span(%+q, %v): got %d, %v; want %d, %v", tt.src, tt.atEOF, n, err, len(tt.want), tt.err) + } + testHandover(t, tt.t, tt.src) + }) } } @@ -520,101 +885,66 @@ const txtNonASCII = txt_vn + txt_cn + txt_ru + txt_gr // TODO: Improve ASCII performance. -func benchFunc(b *testing.B, f func(b []byte) []byte, s string) { - src := []byte(s) - b.SetBytes(int64(len(src))) - for i := 0; i < b.N; i++ { - f(src) - } -} - -func benchTransformer(b *testing.B, t transform.Transformer, s string) { - src := []byte(s) - dst := make([]byte, len(src)) - b.SetBytes(int64(len(src))) - - for i := 0; i < b.N; i++ { - t.Reset() - t.Transform(dst, src, true) +func BenchmarkCasers(b *testing.B) { + for _, s := range []struct{ name, text string }{ + {"ascii", txtASCII}, + {"nonASCII", txtNonASCII}, + {"short", "При"}, + } { + src := []byte(s.text) + // Measure case mappings in bytes package for comparison. + for _, f := range []struct { + name string + fn func(b []byte) []byte + }{ + {"lower", bytes.ToLower}, + {"title", bytes.ToTitle}, + {"upper", bytes.ToUpper}, + } { + testtext.Bench(b, path.Join(s.name, "bytes", f.name), func(b *testing.B) { + b.SetBytes(int64(len(src))) + for i := 0; i < b.N; i++ { + f.fn(src) + } + }) + } + for _, t := range []struct { + name string + caser transform.SpanningTransformer + }{ + {"fold/default", Fold()}, + {"upper/default", Upper(language.Und)}, + {"lower/sigma", Lower(language.Und)}, + {"lower/simple", Lower(language.Und, HandleFinalSigma(false))}, + {"title/sigma", Title(language.Und)}, + {"title/simple", Title(language.Und, HandleFinalSigma(false))}, + } { + c := Caser{t.caser} + dst := make([]byte, len(src)) + testtext.Bench(b, path.Join(s.name, t.name, "transform"), func(b *testing.B) { + b.SetBytes(int64(len(src))) + for i := 0; i < b.N; i++ { + c.Reset() + c.Transform(dst, src, true) + } + }) + // No need to check span for simple cases, as they will be the same + // as sigma. + if strings.HasSuffix(t.name, "/simple") { + continue + } + spanSrc := c.Bytes(src) + testtext.Bench(b, path.Join(s.name, t.name, "span"), func(b *testing.B) { + c.Reset() + if n, _ := c.Span(spanSrc, true); n < len(spanSrc) { + b.Fatalf("spanner is not recognizing text %q as done (at %d)", spanSrc, n) + } + b.SetBytes(int64(len(spanSrc))) + for i := 0; i < b.N; i++ { + c.Reset() + c.Span(spanSrc, true) + } + }) + } } } - -var ( - noSigma = options{noFinalSigma: true} -) - -func BenchmarkBytesToLower(b *testing.B) { - benchFunc(b, bytes.ToLower, txtNonASCII) -} - -func BenchmarkSigmaLower(b *testing.B) { - benchTransformer(b, makeLower(language.Und, options{}), txtNonASCII) -} - -func BenchmarkSimpleLower(b *testing.B) { - benchTransformer(b, makeLower(language.Und, noSigma), txtNonASCII) -} - -func BenchmarkBytesToLowerASCII(b *testing.B) { - benchFunc(b, bytes.ToLower, txtASCII) -} - -func BenchmarkSigmaLowerASCII(b *testing.B) { - benchTransformer(b, makeLower(language.Und, options{}), txtASCII) -} - -func BenchmarkSimpleLowerASCII(b *testing.B) { - benchTransformer(b, makeLower(language.Und, noSigma), txtASCII) -} - -func BenchmarkBytesToTitle(b *testing.B) { - benchFunc(b, bytes.ToTitle, txtNonASCII) -} - -func BenchmarkSigmaTitle(b *testing.B) { - benchTransformer(b, makeTitle(language.Und, options{}), txtNonASCII) -} - -func BenchmarkSimpleTitle(b *testing.B) { - benchTransformer(b, makeTitle(language.Und, noSigma), txtNonASCII) -} - -func BenchmarkBytesToTitleASCII(b *testing.B) { - benchFunc(b, bytes.ToTitle, txtASCII) -} - -func BenchmarkSigmaTitleASCII(b *testing.B) { - benchTransformer(b, makeTitle(language.Und, options{}), txtASCII) -} - -func BenchmarkSimpleTitleASCII(b *testing.B) { - benchTransformer(b, makeTitle(language.Und, noSigma), txtASCII) -} - -func BenchmarkBytesUpper(b *testing.B) { - benchFunc(b, bytes.ToUpper, txtNonASCII) -} - -func BenchmarkUpper(b *testing.B) { - benchTransformer(b, Upper(language.Und), txtNonASCII) -} - -func BenchmarkBytesUpperASCII(b *testing.B) { - benchFunc(b, bytes.ToUpper, txtASCII) -} - -func BenchmarkUpperASCII(b *testing.B) { - benchTransformer(b, Upper(language.Und), txtASCII) -} - -func BenchmarkUpperSmall(b *testing.B) { - benchTransformer(b, Upper(language.Und), "При") -} - -func BenchmarkLowerSmall(b *testing.B) { - benchTransformer(b, Lower(language.Und), "При") -} - -func BenchmarkTitleSmall(b *testing.B) { - benchTransformer(b, Title(language.Und), "при") -} diff --git a/vendor/golang.org/x/text/cases/tables.go b/vendor/golang.org/x/text/cases/tables.go index 4257e57aef..e6e95a6854 100644 --- a/vendor/golang.org/x/text/cases/tables.go +++ b/vendor/golang.org/x/text/cases/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package cases @@ -216,7 +216,7 @@ func (t *caseTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// caseTrie. Total size: 11750 bytes (11.47 KiB). Checksum: 9ec26581a3006e0d. +// caseTrie. Total size: 11742 bytes (11.47 KiB). Checksum: 147a11466b427436. type caseTrie struct{} func newCaseTrie(i int) *caseTrie { @@ -238,10 +238,10 @@ func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { // The third block is the zero block. var caseValues = [1280]uint16{ // Block 0x0, offset 0x0 - 0x27: 0x0014, - 0x2e: 0x0014, + 0x27: 0x0054, + 0x2e: 0x0054, 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, - 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0014, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, // 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, @@ -316,7 +316,7 @@ var caseValues = [1280]uint16{ 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, // Block 0x8, offset 0x200 0x204: 0x0004, 0x205: 0x0004, - 0x206: 0x2a13, 0x207: 0x0014, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x206: 0x2a13, 0x207: 0x0054, 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, @@ -571,10 +571,10 @@ var caseIndex = [1600]uint16{ } // 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} +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, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x327, 0x32e, 0x332, 0x33b, 0x33c, 0x344, 0x348, 0x34d, 0x355, 0x35b, 0x361, 0x36b, 0x370, 0x379, 0x37f, 0x386, 0x38a, 0x392, 0x394, 0x396, 0x399, 0x39b, 0x39d, 0x39e, 0x39f, 0x3a1, 0x3a3, 0x3a9, 0x3ae, 0x3b0, 0x3b6, 0x3b9, 0x3bb, 0x3c1, 0x3c6, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cd, 0x3cf, 0x3d1, 0x3d4, 0x3d6, 0x3d9, 0x3e1, 0x3e4, 0x3e8, 0x3f0, 0x3f2, 0x3f3, 0x3f4, 0x3f6, 0x3fc, 0x3fe, 0x3ff, 0x401, 0x403, 0x405, 0x412, 0x413, 0x414, 0x418, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x422, 0x426, 0x42c, 0x42e, 0x435, 0x438, 0x43c, 0x442, 0x44b, 0x451, 0x457, 0x461, 0x46b, 0x46d, 0x474, 0x47a, 0x480, 0x486, 0x489, 0x48f, 0x492, 0x49a, 0x49b, 0x4a2, 0x4a3, 0x4a6, 0x4a7, 0x4ad, 0x4b0, 0x4b8, 0x4b9, 0x4ba, 0x4bb, 0x4bc, 0x4be, 0x4c0, 0x4c2, 0x4c6, 0x4c7, 0x4c9, 0x4ca, 0x4cb, 0x4cd, 0x4d2, 0x4d7, 0x4db, 0x4dc, 0x4df, 0x4e3, 0x4ee, 0x4f2, 0x4fa, 0x4ff, 0x503, 0x506, 0x50a, 0x50d, 0x510, 0x515, 0x519, 0x51d, 0x521, 0x525, 0x527, 0x529, 0x52c, 0x531, 0x533, 0x538, 0x541, 0x546, 0x547, 0x54a, 0x54b, 0x54c, 0x54e, 0x54f, 0x550} -// sparseValues: 1362 entries, 5448 bytes -var sparseValues = [1362]valueRange{ +// sparseValues: 1360 entries, 5440 bytes +var sparseValues = [1360]valueRange{ // Block 0x0, offset 0x0 {value: 0x0004, lo: 0xa8, hi: 0xa8}, {value: 0x0012, lo: 0xaa, hi: 0xaa}, @@ -582,7 +582,7 @@ var sparseValues = [1362]valueRange{ {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: 0x0054, lo: 0xb7, hi: 0xb7}, {value: 0x0004, lo: 0xb8, hi: 0xb8}, {value: 0x0012, lo: 0xba, hi: 0xba}, // Block 0x1, offset 0x9 @@ -631,7 +631,7 @@ var sparseValues = [1362]valueRange{ {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: 0x0054, lo: 0x97, hi: 0x97}, {value: 0x0004, lo: 0x98, hi: 0x9f}, {value: 0x0015, lo: 0xa0, hi: 0xa4}, {value: 0x0004, lo: 0xa5, hi: 0xab}, @@ -701,7 +701,7 @@ var sparseValues = [1362]valueRange{ {value: 0x0034, lo: 0x87, hi: 0x87}, {value: 0x0010, lo: 0x90, hi: 0xaa}, {value: 0x0010, lo: 0xb0, hi: 0xb3}, - {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0054, lo: 0xb4, hi: 0xb4}, // Block 0xf, offset 0x70 {value: 0x0014, lo: 0x80, hi: 0x85}, {value: 0x0024, lo: 0x90, hi: 0x97}, @@ -1372,25 +1372,23 @@ var sparseValues = [1362]valueRange{ {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: 0x8c, hi: 0x8f}, + {value: 0x0054, lo: 0x98, hi: 0x99}, + {value: 0x0054, lo: 0xa4, hi: 0xa4}, + {value: 0x0054, 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 + // Block 0x64, offset 0x2c0 {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 + // Block 0x65, offset 0x2c6 {value: 0x0015, lo: 0x90, hi: 0x9c}, - // Block 0x66, offset 0x2c9 + // Block 0x66, offset 0x2c7 {value: 0x0024, lo: 0x90, hi: 0x91}, {value: 0x0034, lo: 0x92, hi: 0x93}, {value: 0x0024, lo: 0x94, hi: 0x97}, @@ -1405,112 +1403,112 @@ var sparseValues = [1362]valueRange{ {value: 0x0024, lo: 0xa9, hi: 0xa9}, {value: 0x0034, lo: 0xaa, hi: 0xaf}, {value: 0x0024, lo: 0xb0, hi: 0xb0}, - // Block 0x67, offset 0x2d7 + // Block 0x67, offset 0x2d5 {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 + // Block 0x68, offset 0x2da {value: 0x0010, lo: 0x80, hi: 0x82}, {value: 0x0716, lo: 0x83, hi: 0x84}, {value: 0x0010, lo: 0x85, hi: 0x88}, - // Block 0x69, offset 0x2df + // Block 0x69, offset 0x2dd {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 + // Block 0x6a, offset 0x2e2 {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 + // Block 0x6b, offset 0x2e6 {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 + // Block 0x6c, offset 0x2ec {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 + // Block 0x6d, offset 0x2f1 {value: 0x0010, lo: 0x80, hi: 0xa7}, {value: 0x0014, lo: 0xaf, hi: 0xaf}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x6e, offset 0x2f6 + // Block 0x6e, offset 0x2f4 {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 + // Block 0x6f, offset 0x2f9 {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 + // Block 0x70, offset 0x2fe {value: 0x0014, lo: 0xaf, hi: 0xaf}, - // Block 0x71, offset 0x301 + // Block 0x71, offset 0x2ff {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 + // Block 0x72, offset 0x305 {value: 0x0034, lo: 0x99, hi: 0x9a}, {value: 0x0004, lo: 0x9b, hi: 0x9e}, - // Block 0x73, offset 0x309 + // Block 0x73, offset 0x307 {value: 0x0004, lo: 0xbc, hi: 0xbe}, - // Block 0x74, offset 0x30a + // Block 0x74, offset 0x308 {value: 0x0010, lo: 0x85, hi: 0xad}, {value: 0x0010, lo: 0xb1, hi: 0xbf}, - // Block 0x75, offset 0x30c + // Block 0x75, offset 0x30a {value: 0x0010, lo: 0x80, hi: 0x8e}, {value: 0x0010, lo: 0xa0, hi: 0xba}, - // Block 0x76, offset 0x30e + // Block 0x76, offset 0x30c {value: 0x0010, lo: 0x80, hi: 0x94}, {value: 0x0014, lo: 0x95, hi: 0x95}, {value: 0x0010, lo: 0x96, hi: 0xbf}, - // Block 0x77, offset 0x311 + // Block 0x77, offset 0x30f {value: 0x0010, lo: 0x80, hi: 0x8c}, - // Block 0x78, offset 0x312 + // Block 0x78, offset 0x310 {value: 0x0010, lo: 0x90, hi: 0xb7}, {value: 0x0014, lo: 0xb8, hi: 0xbd}, - // Block 0x79, offset 0x314 + // Block 0x79, offset 0x312 {value: 0x0010, lo: 0x80, hi: 0x8b}, {value: 0x0014, lo: 0x8c, hi: 0x8c}, {value: 0x0010, lo: 0x90, hi: 0xab}, - // Block 0x7a, offset 0x317 + // Block 0x7a, offset 0x315 {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 + // Block 0x7b, offset 0x31b {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 + // Block 0x7c, offset 0x31f {value: 0x0010, lo: 0x80, hi: 0xaf}, {value: 0x0024, lo: 0xb0, hi: 0xb1}, - // Block 0x7d, offset 0x323 + // Block 0x7d, offset 0x321 {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 + // Block 0x7e, offset 0x327 {value: 0x0117, lo: 0x80, hi: 0xaf}, {value: 0x0015, lo: 0xb0, hi: 0xb0}, {value: 0x0012, lo: 0xb1, hi: 0xb8}, @@ -1518,12 +1516,12 @@ var sparseValues = [1362]valueRange{ {value: 0x0716, lo: 0xbb, hi: 0xbc}, {value: 0x8453, lo: 0xbd, hi: 0xbd}, {value: 0x0117, lo: 0xbe, hi: 0xbf}, - // Block 0x7f, offset 0x330 + // Block 0x7f, offset 0x32e {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 + // Block 0x80, offset 0x332 {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0014, lo: 0x82, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x85}, @@ -1533,9 +1531,9 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0x8c, hi: 0xa4}, {value: 0x0014, lo: 0xa5, hi: 0xa6}, {value: 0x0010, lo: 0xa7, hi: 0xa7}, - // Block 0x81, offset 0x33d + // Block 0x81, offset 0x33b {value: 0x0010, lo: 0x80, hi: 0xb3}, - // Block 0x82, offset 0x33e + // Block 0x82, offset 0x33c {value: 0x0010, lo: 0x80, hi: 0x83}, {value: 0x0034, lo: 0x84, hi: 0x84}, {value: 0x0014, lo: 0x85, hi: 0x85}, @@ -1544,18 +1542,18 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0xb2, hi: 0xb7}, {value: 0x0010, lo: 0xbb, hi: 0xbb}, {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x83, offset 0x346 + // Block 0x83, offset 0x344 {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 + // Block 0x84, offset 0x348 {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 + // Block 0x85, offset 0x34d {value: 0x0014, lo: 0x80, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0xb2}, {value: 0x0034, lo: 0xb3, hi: 0xb3}, @@ -1564,21 +1562,21 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0xba, hi: 0xbb}, {value: 0x0014, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x86, offset 0x357 + // Block 0x86, offset 0x355 {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 + // Block 0x87, offset 0x35b {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 + // Block 0x88, offset 0x361 {value: 0x0010, lo: 0x80, hi: 0x82}, {value: 0x0014, lo: 0x83, hi: 0x83}, {value: 0x0010, lo: 0x84, hi: 0x8b}, @@ -1589,13 +1587,13 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0xbb, hi: 0xbb}, {value: 0x0014, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x89, offset 0x36d + // Block 0x89, offset 0x36b {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 + // Block 0x8a, offset 0x370 {value: 0x0024, lo: 0x81, hi: 0x81}, {value: 0x0004, lo: 0x9d, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xab}, @@ -1605,14 +1603,14 @@ var sparseValues = [1362]valueRange{ {value: 0x0014, lo: 0xb3, hi: 0xb4}, {value: 0x0010, lo: 0xb5, hi: 0xb5}, {value: 0x0034, lo: 0xb6, hi: 0xb6}, - // Block 0x8b, offset 0x37b + // Block 0x8b, offset 0x379 {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 + // Block 0x8c, offset 0x37f {value: 0x0012, lo: 0x80, hi: 0x92}, {value: 0xac52, lo: 0x93, hi: 0x93}, {value: 0x0012, lo: 0x94, hi: 0x9a}, @@ -1620,12 +1618,12 @@ var sparseValues = [1362]valueRange{ {value: 0x0015, lo: 0x9c, hi: 0x9f}, {value: 0x0012, lo: 0xa0, hi: 0xa5}, {value: 0x74d2, lo: 0xb0, hi: 0xbf}, - // Block 0x8d, offset 0x388 + // Block 0x8d, offset 0x386 {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 + // Block 0x8e, offset 0x38a {value: 0x0010, lo: 0x80, hi: 0xa4}, {value: 0x0014, lo: 0xa5, hi: 0xa5}, {value: 0x0010, lo: 0xa6, hi: 0xa7}, @@ -1634,105 +1632,105 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0xac, hi: 0xac}, {value: 0x0034, lo: 0xad, hi: 0xad}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x8f, offset 0x394 + // Block 0x8f, offset 0x392 {value: 0x0010, lo: 0x80, hi: 0xa3}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x90, offset 0x396 + // Block 0x90, offset 0x394 {value: 0x0010, lo: 0x80, hi: 0x86}, {value: 0x0010, lo: 0x8b, hi: 0xbb}, - // Block 0x91, offset 0x398 + // Block 0x91, offset 0x396 {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x83, hi: 0x84}, {value: 0x0010, lo: 0x86, hi: 0xbf}, - // Block 0x92, offset 0x39b + // Block 0x92, offset 0x399 {value: 0x0010, lo: 0x80, hi: 0xb1}, {value: 0x0004, lo: 0xb2, hi: 0xbf}, - // Block 0x93, offset 0x39d + // Block 0x93, offset 0x39b {value: 0x0004, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x93, hi: 0xbf}, - // Block 0x94, offset 0x39f + // Block 0x94, offset 0x39d {value: 0x0010, lo: 0x80, hi: 0xbd}, - // Block 0x95, offset 0x3a0 + // Block 0x95, offset 0x39e {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0x96, offset 0x3a1 + // Block 0x96, offset 0x39f {value: 0x0010, lo: 0x80, hi: 0x8f}, {value: 0x0010, lo: 0x92, hi: 0xbf}, - // Block 0x97, offset 0x3a3 + // Block 0x97, offset 0x3a1 {value: 0x0010, lo: 0x80, hi: 0x87}, {value: 0x0010, lo: 0xb0, hi: 0xbb}, - // Block 0x98, offset 0x3a5 + // Block 0x98, offset 0x3a3 {value: 0x0014, lo: 0x80, hi: 0x8f}, - {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0054, 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 + // Block 0x99, offset 0x3a9 {value: 0x0010, lo: 0x8d, hi: 0x8f}, - {value: 0x0014, lo: 0x92, hi: 0x92}, - {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0054, lo: 0x92, hi: 0x92}, + {value: 0x0054, lo: 0x95, hi: 0x95}, {value: 0x0010, lo: 0xb0, hi: 0xb4}, {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0x9a, offset 0x3b0 + // Block 0x9a, offset 0x3ae {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}, + // Block 0x9b, offset 0x3b0 + {value: 0x0054, lo: 0x87, hi: 0x87}, + {value: 0x0054, lo: 0x8e, hi: 0x8e}, + {value: 0x0054, 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 + // Block 0x9c, offset 0x3b6 {value: 0x0004, lo: 0x80, hi: 0x80}, {value: 0x5f52, lo: 0x81, hi: 0x9a}, {value: 0x0004, lo: 0xb0, hi: 0xb0}, - // Block 0x9d, offset 0x3bb + // Block 0x9d, offset 0x3b9 {value: 0x0014, lo: 0x9e, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xbe}, - // Block 0x9e, offset 0x3bd + // Block 0x9e, offset 0x3bb {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 + // Block 0x9f, offset 0x3c1 {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 + // Block 0xa0, offset 0x3c6 {value: 0x0010, lo: 0x80, hi: 0x8d}, {value: 0x0010, lo: 0x90, hi: 0x9d}, - // Block 0xa1, offset 0x3ca + // Block 0xa1, offset 0x3c8 {value: 0x0010, lo: 0x80, hi: 0xba}, - // Block 0xa2, offset 0x3cb + // Block 0xa2, offset 0x3c9 {value: 0x0010, lo: 0x80, hi: 0xb4}, - // Block 0xa3, offset 0x3cc + // Block 0xa3, offset 0x3ca {value: 0x0034, lo: 0xbd, hi: 0xbd}, - // Block 0xa4, offset 0x3cd + // Block 0xa4, offset 0x3cb {value: 0x0010, lo: 0x80, hi: 0x9c}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa5, offset 0x3cf + // Block 0xa5, offset 0x3cd {value: 0x0010, lo: 0x80, hi: 0x90}, {value: 0x0034, lo: 0xa0, hi: 0xa0}, - // Block 0xa6, offset 0x3d1 + // Block 0xa6, offset 0x3cf {value: 0x0010, lo: 0x80, hi: 0x9f}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xa7, offset 0x3d3 + // Block 0xa7, offset 0x3d1 {value: 0x0010, lo: 0x80, hi: 0x8a}, {value: 0x0010, lo: 0x90, hi: 0xb5}, {value: 0x0024, lo: 0xb6, hi: 0xba}, - // Block 0xa8, offset 0x3d6 + // Block 0xa8, offset 0x3d4 {value: 0x0010, lo: 0x80, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa9, offset 0x3d8 + // Block 0xa9, offset 0x3d6 {value: 0x0010, lo: 0x80, hi: 0x83}, {value: 0x0010, lo: 0x88, hi: 0x8f}, {value: 0x0010, lo: 0x91, hi: 0x95}, - // Block 0xaa, offset 0x3db + // Block 0xaa, offset 0x3d9 {value: 0x2813, lo: 0x80, hi: 0x87}, {value: 0x3813, lo: 0x88, hi: 0x8f}, {value: 0x2813, lo: 0x90, hi: 0x97}, @@ -1741,16 +1739,16 @@ var sparseValues = [1362]valueRange{ {value: 0x2812, lo: 0xa8, hi: 0xaf}, {value: 0x3812, lo: 0xb0, hi: 0xb7}, {value: 0x2812, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x3e3 + // Block 0xab, offset 0x3e1 {value: 0xaf52, lo: 0x80, hi: 0x87}, {value: 0xb252, lo: 0x88, hi: 0x8f}, {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0xac, offset 0x3e6 + // Block 0xac, offset 0x3e4 {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 + // Block 0xad, offset 0x3e8 {value: 0x2813, lo: 0x80, hi: 0x87}, {value: 0x3813, lo: 0x88, hi: 0x8f}, {value: 0x2813, lo: 0x90, hi: 0x93}, @@ -1759,38 +1757,38 @@ var sparseValues = [1362]valueRange{ {value: 0x2812, lo: 0xa8, hi: 0xaf}, {value: 0x3812, lo: 0xb0, hi: 0xb7}, {value: 0x2812, lo: 0xb8, hi: 0xbb}, - // Block 0xae, offset 0x3f2 + // Block 0xae, offset 0x3f0 {value: 0x0010, lo: 0x80, hi: 0xa7}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xaf, offset 0x3f4 + // Block 0xaf, offset 0x3f2 {value: 0x0010, lo: 0x80, hi: 0xa3}, - // Block 0xb0, offset 0x3f5 + // Block 0xb0, offset 0x3f3 {value: 0x0010, lo: 0x80, hi: 0xb6}, - // Block 0xb1, offset 0x3f6 + // Block 0xb1, offset 0x3f4 {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xa7}, - // Block 0xb2, offset 0x3f8 + // Block 0xb2, offset 0x3f6 {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 + // Block 0xb3, offset 0x3fc {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xb6}, - // Block 0xb4, offset 0x400 + // Block 0xb4, offset 0x3fe {value: 0x0010, lo: 0x80, hi: 0x9e}, - // Block 0xb5, offset 0x401 + // Block 0xb5, offset 0x3ff {value: 0x0010, lo: 0xa0, hi: 0xb2}, {value: 0x0010, lo: 0xb4, hi: 0xb5}, - // Block 0xb6, offset 0x403 + // Block 0xb6, offset 0x401 {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xb9}, - // Block 0xb7, offset 0x405 + // Block 0xb7, offset 0x403 {value: 0x0010, lo: 0x80, hi: 0xb7}, {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0xb8, offset 0x407 + // Block 0xb8, offset 0x405 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x83}, {value: 0x0014, lo: 0x85, hi: 0x86}, @@ -1804,47 +1802,47 @@ var sparseValues = [1362]valueRange{ {value: 0x0024, lo: 0xb8, hi: 0xb8}, {value: 0x0034, lo: 0xb9, hi: 0xba}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xb9, offset 0x414 + // Block 0xb9, offset 0x412 {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0xba, offset 0x415 + // Block 0xba, offset 0x413 {value: 0x0010, lo: 0x80, hi: 0x9c}, - // Block 0xbb, offset 0x416 + // Block 0xbb, offset 0x414 {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 + // Block 0xbc, offset 0x418 {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xb2}, - // Block 0xbd, offset 0x41c + // Block 0xbd, offset 0x41a {value: 0x0010, lo: 0x80, hi: 0x91}, - // Block 0xbe, offset 0x41d + // Block 0xbe, offset 0x41b {value: 0x0010, lo: 0x80, hi: 0x88}, - // Block 0xbf, offset 0x41e + // Block 0xbf, offset 0x41c {value: 0x5653, lo: 0x80, hi: 0xb2}, - // Block 0xc0, offset 0x41f + // Block 0xc0, offset 0x41d {value: 0x5652, lo: 0x80, hi: 0xb2}, - // Block 0xc1, offset 0x420 + // Block 0xc1, offset 0x41e {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 + // Block 0xc2, offset 0x422 {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 + // Block 0xc3, offset 0x426 {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 + // Block 0xc4, offset 0x42c {value: 0x0010, lo: 0x90, hi: 0xa8}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xc5, offset 0x430 + // Block 0xc5, offset 0x42e {value: 0x0024, lo: 0x80, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0xa6}, {value: 0x0014, lo: 0xa7, hi: 0xab}, @@ -1852,23 +1850,23 @@ var sparseValues = [1362]valueRange{ {value: 0x0014, lo: 0xad, hi: 0xb2}, {value: 0x0034, lo: 0xb3, hi: 0xb4}, {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0xc6, offset 0x437 + // Block 0xc6, offset 0x435 {value: 0x0010, lo: 0x90, hi: 0xb2}, {value: 0x0034, lo: 0xb3, hi: 0xb3}, {value: 0x0010, lo: 0xb6, hi: 0xb6}, - // Block 0xc7, offset 0x43a + // Block 0xc7, offset 0x438 {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 + // Block 0xc8, offset 0x43c {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 + // Block 0xc9, offset 0x442 {value: 0x0010, lo: 0x80, hi: 0x91}, {value: 0x0010, lo: 0x93, hi: 0xae}, {value: 0x0014, lo: 0xaf, hi: 0xb1}, @@ -1878,21 +1876,21 @@ var sparseValues = [1362]valueRange{ {value: 0x0034, lo: 0xb6, hi: 0xb6}, {value: 0x0014, lo: 0xb7, hi: 0xb7}, {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0xca, offset 0x44d + // Block 0xca, offset 0x44b {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 + // Block 0xcb, offset 0x451 {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 + // Block 0xcc, offset 0x457 {value: 0x0014, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8c}, @@ -1903,7 +1901,7 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0xb5, hi: 0xb9}, {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xcd, offset 0x463 + // Block 0xcd, offset 0x461 {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x84}, {value: 0x0010, lo: 0x87, hi: 0x88}, @@ -1914,10 +1912,10 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0x9d, hi: 0xa3}, {value: 0x0024, lo: 0xa6, hi: 0xac}, {value: 0x0024, lo: 0xb0, hi: 0xb4}, - // Block 0xce, offset 0x46d + // Block 0xce, offset 0x46b {value: 0x0010, lo: 0x80, hi: 0xb7}, {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xcf, offset 0x46f + // Block 0xcf, offset 0x46d {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0034, lo: 0x82, hi: 0x82}, {value: 0x0014, lo: 0x83, hi: 0x84}, @@ -1925,43 +1923,43 @@ var sparseValues = [1362]valueRange{ {value: 0x0034, lo: 0x86, hi: 0x86}, {value: 0x0010, lo: 0x87, hi: 0x8a}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd0, offset 0x476 + // Block 0xd0, offset 0x474 {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 + // Block 0xd1, offset 0x47a {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 + // Block 0xd2, offset 0x480 {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 + // Block 0xd3, offset 0x486 {value: 0x0034, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x98, hi: 0x9b}, {value: 0x0014, lo: 0x9c, hi: 0x9d}, - // Block 0xd4, offset 0x48b + // Block 0xd4, offset 0x489 {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 + // Block 0xd5, offset 0x48f {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x84, hi: 0x84}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd6, offset 0x494 + // Block 0xd6, offset 0x492 {value: 0x0010, lo: 0x80, hi: 0xaa}, {value: 0x0014, lo: 0xab, hi: 0xab}, {value: 0x0010, lo: 0xac, hi: 0xac}, @@ -1970,9 +1968,9 @@ var sparseValues = [1362]valueRange{ {value: 0x0014, lo: 0xb0, hi: 0xb5}, {value: 0x0030, lo: 0xb6, hi: 0xb6}, {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0xd7, offset 0x49c + // Block 0xd7, offset 0x49a {value: 0x0010, lo: 0x80, hi: 0x89}, - // Block 0xd8, offset 0x49d + // Block 0xd8, offset 0x49b {value: 0x0014, lo: 0x9d, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xa1}, {value: 0x0014, lo: 0xa2, hi: 0xa5}, @@ -1980,26 +1978,26 @@ var sparseValues = [1362]valueRange{ {value: 0x0014, lo: 0xa7, hi: 0xaa}, {value: 0x0034, lo: 0xab, hi: 0xab}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xd9, offset 0x4a4 + // Block 0xd9, offset 0x4a2 {value: 0x5f53, lo: 0xa0, hi: 0xbf}, - // Block 0xda, offset 0x4a5 + // Block 0xda, offset 0x4a3 {value: 0x5f52, lo: 0x80, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xdb, offset 0x4a8 + // Block 0xdb, offset 0x4a6 {value: 0x0010, lo: 0x80, hi: 0xb8}, - // Block 0xdc, offset 0x4a9 + // Block 0xdc, offset 0x4a7 {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 + // Block 0xdd, offset 0x4ad {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0xde, offset 0x4b2 + // Block 0xde, offset 0x4b0 {value: 0x0010, lo: 0x80, hi: 0x8f}, {value: 0x0014, lo: 0x92, hi: 0xa7}, {value: 0x0010, lo: 0xa9, hi: 0xa9}, @@ -2008,69 +2006,69 @@ var sparseValues = [1362]valueRange{ {value: 0x0014, lo: 0xb2, hi: 0xb3}, {value: 0x0010, lo: 0xb4, hi: 0xb4}, {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0xdf, offset 0x4ba + // Block 0xdf, offset 0x4b8 {value: 0x0010, lo: 0x80, hi: 0x99}, - // Block 0xe0, offset 0x4bb + // Block 0xe0, offset 0x4b9 {value: 0x0010, lo: 0x80, hi: 0xae}, - // Block 0xe1, offset 0x4bc + // Block 0xe1, offset 0x4ba {value: 0x0010, lo: 0x80, hi: 0x83}, - // Block 0xe2, offset 0x4bd + // Block 0xe2, offset 0x4bb {value: 0x0010, lo: 0x80, hi: 0x86}, - // Block 0xe3, offset 0x4be + // Block 0xe3, offset 0x4bc {value: 0x0010, lo: 0x80, hi: 0x9e}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0xe4, offset 0x4c0 + // Block 0xe4, offset 0x4be {value: 0x0010, lo: 0x90, hi: 0xad}, {value: 0x0034, lo: 0xb0, hi: 0xb4}, - // Block 0xe5, offset 0x4c2 + // Block 0xe5, offset 0x4c0 {value: 0x0010, lo: 0x80, hi: 0xaf}, {value: 0x0024, lo: 0xb0, hi: 0xb6}, - // Block 0xe6, offset 0x4c4 + // Block 0xe6, offset 0x4c2 {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 + // Block 0xe7, offset 0x4c6 {value: 0x0010, lo: 0x80, hi: 0x8f}, - // Block 0xe8, offset 0x4c9 + // Block 0xe8, offset 0x4c7 {value: 0x0010, lo: 0x80, hi: 0x84}, {value: 0x0010, lo: 0x90, hi: 0xbe}, - // Block 0xe9, offset 0x4cb + // Block 0xe9, offset 0x4c9 {value: 0x0014, lo: 0x8f, hi: 0x9f}, - // Block 0xea, offset 0x4cc + // Block 0xea, offset 0x4ca {value: 0x0014, lo: 0xa0, hi: 0xa0}, - // Block 0xeb, offset 0x4cd + // Block 0xeb, offset 0x4cb {value: 0x0010, lo: 0x80, hi: 0xaa}, {value: 0x0010, lo: 0xb0, hi: 0xbc}, - // Block 0xec, offset 0x4cf + // Block 0xec, offset 0x4cd {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 + // Block 0xed, offset 0x4d2 {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 + // Block 0xee, offset 0x4d7 {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 + // Block 0xef, offset 0x4db {value: 0x0024, lo: 0x82, hi: 0x84}, - // Block 0xf0, offset 0x4de + // Block 0xf0, offset 0x4dc {value: 0x0013, lo: 0x80, hi: 0x99}, {value: 0x0012, lo: 0x9a, hi: 0xb3}, {value: 0x0013, lo: 0xb4, hi: 0xbf}, - // Block 0xf1, offset 0x4e1 + // Block 0xf1, offset 0x4df {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 + // Block 0xf2, offset 0x4e3 {value: 0x0013, lo: 0x80, hi: 0x81}, {value: 0x0012, lo: 0x82, hi: 0x9b}, {value: 0x0013, lo: 0x9c, hi: 0x9c}, @@ -2082,12 +2080,12 @@ var sparseValues = [1362]valueRange{ {value: 0x0012, lo: 0xb6, hi: 0xb9}, {value: 0x0012, lo: 0xbb, hi: 0xbb}, {value: 0x0012, lo: 0xbd, hi: 0xbf}, - // Block 0xf3, offset 0x4f0 + // Block 0xf3, offset 0x4ee {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 + // Block 0xf4, offset 0x4f2 {value: 0x0012, lo: 0x80, hi: 0x83}, {value: 0x0013, lo: 0x84, hi: 0x85}, {value: 0x0013, lo: 0x87, hi: 0x8a}, @@ -2096,86 +2094,86 @@ var sparseValues = [1362]valueRange{ {value: 0x0012, lo: 0x9e, hi: 0xb7}, {value: 0x0013, lo: 0xb8, hi: 0xb9}, {value: 0x0013, lo: 0xbb, hi: 0xbe}, - // Block 0xf5, offset 0x4fc + // Block 0xf5, offset 0x4fa {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 + // Block 0xf6, offset 0x4ff {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 + // Block 0xf7, offset 0x503 {value: 0x0012, lo: 0x80, hi: 0x93}, {value: 0x0013, lo: 0x94, hi: 0xad}, {value: 0x0012, lo: 0xae, hi: 0xbf}, - // Block 0xf8, offset 0x508 + // Block 0xf8, offset 0x506 {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 + // Block 0xf9, offset 0x50a {value: 0x0013, lo: 0x80, hi: 0x95}, {value: 0x0012, lo: 0x96, hi: 0xaf}, {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0xfa, offset 0x50f + // Block 0xfa, offset 0x50d {value: 0x0013, lo: 0x80, hi: 0x89}, {value: 0x0012, lo: 0x8a, hi: 0xa5}, {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0xfb, offset 0x512 + // Block 0xfb, offset 0x510 {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 + // Block 0xfc, offset 0x515 {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 + // Block 0xfd, offset 0x519 {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 + // Block 0xfe, offset 0x51d {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 + // Block 0xff, offset 0x521 {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 + // Block 0x100, offset 0x525 {value: 0x0014, lo: 0x80, hi: 0xb6}, {value: 0x0014, lo: 0xbb, hi: 0xbf}, - // Block 0x101, offset 0x529 + // Block 0x101, offset 0x527 {value: 0x0014, lo: 0x80, hi: 0xac}, {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x102, offset 0x52b + // Block 0x102, offset 0x529 {value: 0x0014, lo: 0x84, hi: 0x84}, {value: 0x0014, lo: 0x9b, hi: 0x9f}, {value: 0x0014, lo: 0xa1, hi: 0xaf}, - // Block 0x103, offset 0x52e + // Block 0x103, offset 0x52c {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 + // Block 0x104, offset 0x531 {value: 0x0010, lo: 0x80, hi: 0x84}, {value: 0x0034, lo: 0x90, hi: 0x96}, - // Block 0x105, offset 0x535 + // Block 0x105, offset 0x533 {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 + // Block 0x106, offset 0x538 {value: 0x0010, lo: 0x80, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x9f}, {value: 0x0010, lo: 0xa1, hi: 0xa2}, @@ -2185,29 +2183,29 @@ var sparseValues = [1362]valueRange{ {value: 0x0010, lo: 0xb4, hi: 0xb7}, {value: 0x0010, lo: 0xb9, hi: 0xb9}, {value: 0x0010, lo: 0xbb, hi: 0xbb}, - // Block 0x107, offset 0x543 + // Block 0x107, offset 0x541 {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 + // Block 0x108, offset 0x546 {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x109, offset 0x549 + // Block 0x109, offset 0x547 {value: 0x0013, lo: 0x80, hi: 0x89}, {value: 0x0013, lo: 0x90, hi: 0xa9}, {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x10a, offset 0x54c + // Block 0x10a, offset 0x54a {value: 0x0013, lo: 0x80, hi: 0x89}, - // Block 0x10b, offset 0x54d + // Block 0x10b, offset 0x54b {value: 0x0004, lo: 0xbb, hi: 0xbf}, - // Block 0x10c, offset 0x54e + // Block 0x10c, offset 0x54c {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0014, lo: 0xa0, hi: 0xbf}, - // Block 0x10d, offset 0x550 + // Block 0x10d, offset 0x54e {value: 0x0014, lo: 0x80, hi: 0xbf}, - // Block 0x10e, offset 0x551 + // Block 0x10e, offset 0x54f {value: 0x0014, lo: 0x80, hi: 0xaf}, } -// Total table size 13819 bytes (13KiB); checksum: 4CC48DA3 +// Total table size 13811 bytes (13KiB); checksum: 4CC48DA3 diff --git a/vendor/golang.org/x/text/cases/tables_test.go b/vendor/golang.org/x/text/cases/tables_test.go index 6b52b92349..85ae237670 100644 --- a/vendor/golang.org/x/text/cases/tables_test.go +++ b/vendor/golang.org/x/text/cases/tables_test.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package cases @@ -645,7 +645,6 @@ var ( {0x1fed, 0x1ff1}, {0x1ff5, 0x1ff5}, {0x1ffd, 0x200b}, - {0x200d, 0x200d}, {0x2010, 0x2017}, {0x201a, 0x2023}, {0x2025, 0x2026}, diff --git a/vendor/golang.org/x/text/cases/trieval.go b/vendor/golang.org/x/text/cases/trieval.go index 7f2aa5b01b..fb221f843f 100644 --- a/vendor/golang.org/x/text/cases/trieval.go +++ b/vendor/golang.org/x/text/cases/trieval.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package cases @@ -22,6 +22,7 @@ package cases // 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 +// or isMid if case mode is cIgnorableUncased. // 5..4 CCC: zero (normal or break), above or other // } // 3 exception: interpret this value as an exception index @@ -44,6 +45,7 @@ const ( ignorableValue = 0x0004 inverseFoldBit = 1 << 7 + isMidBit = 1 << 6 exceptionBit = 1 << 3 exceptionShift = 5 @@ -53,7 +55,7 @@ const ( xorShift = 8 // There is no mapping if all xor bits and the exception bit are zero. - hasMappingMask = 0xffc0 | exceptionBit + hasMappingMask = 0xff80 | exceptionBit ) // The case mode bits encodes the case type of a rune. This includes uncased, @@ -91,10 +93,6 @@ 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 } @@ -103,6 +101,10 @@ func (c info) isCaseIgnorableAndNotCased() bool { return c&fullCasedMask == cIgnorableUncased } +func (c info) isMid() bool { + return c&(fullCasedMask|isMidBit) == isMidBit|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 diff --git a/vendor/golang.org/x/text/cmd/gotext/doc.go b/vendor/golang.org/x/text/cmd/gotext/doc.go new file mode 100644 index 0000000000..54eb485d5d --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/doc.go @@ -0,0 +1,35 @@ +// 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. + +// DO NOT EDIT THIS FILE. GENERATED BY go generate. +// Edit the documentation in other files and rerun go generate to generate this one. + +// gotext is a tool for managing text in Go source code. +// +// Usage: +// +// gotext command [arguments] +// +// The commands are: +// +// extract extract strings to be translated from code +// +// Use "go help [command]" for more information about a command. +// +// Additional help topics: +// +// +// Use "gotext help [topic]" for more information about that topic. +// +// +// Extract strings to be translated from code +// +// Usage: +// +// go extract * +// +// +// +// +package main diff --git a/vendor/golang.org/x/text/cmd/gotext/extract.go b/vendor/golang.org/x/text/cmd/gotext/extract.go new file mode 100644 index 0000000000..79a9b596df --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/extract.go @@ -0,0 +1,195 @@ +// 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 main + +import ( + "bytes" + "encoding/json" + "fmt" + "go/ast" + "go/build" + "go/constant" + "go/format" + "go/parser" + "go/types" + "io/ioutil" + "os" + "path" + "path/filepath" + "strings" + + "golang.org/x/tools/go/loader" +) + +// TODO: +// - merge information into existing files +// - handle different file formats (PO, XLIFF) +// - handle features (gender, plural) +// - message rewriting + +var cmdExtract = &Command{ + Run: runExtract, + UsageLine: "extract *", + Short: "extract strings to be translated from code", +} + +func runExtract(cmd *Command, args []string) error { + if len(args) == 0 { + args = []string{"."} + } + + conf := loader.Config{ + Build: &build.Default, + ParserMode: parser.ParseComments, + } + + // Use the initial packages from the command line. + args, err := conf.FromArgs(args, false) + if err != nil { + return err + } + + // Load, parse and type-check the whole program. + iprog, err := conf.Load() + if err != nil { + return err + } + + // print returns Go syntax for the specified node. + print := func(n ast.Node) string { + var buf bytes.Buffer + format.Node(&buf, conf.Fset, n) + return buf.String() + } + + var translations []Translation + + for _, info := range iprog.InitialPackages() { + for _, f := range info.Files { + // Associate comments with nodes. + cmap := ast.NewCommentMap(iprog.Fset, f, f.Comments) + getComment := func(n ast.Node) string { + cs := cmap.Filter(n).Comments() + if len(cs) > 0 { + return strings.TrimSpace(cs[0].Text()) + } + return "" + } + + // Find function calls. + ast.Inspect(f, func(n ast.Node) bool { + call, ok := n.(*ast.CallExpr) + if !ok { + return true + } + + // Skip calls of functions other than + // (*message.Printer).{Sp,Fp,P}rintf. + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return true + } + meth := info.Selections[sel] + if meth == nil || meth.Kind() != types.MethodVal { + return true + } + // TODO: remove cheap hack and check if the type either + // implements some interface or is specifically of type + // "golang.org/x/text/message".Printer. + m, ok := extractFuncs[path.Base(meth.Recv().String())] + if !ok { + return true + } + + // argn is the index of the format string. + argn, ok := m[meth.Obj().Name()] + if !ok || argn >= len(call.Args) { + return true + } + + // Skip calls with non-constant format string. + fmtstr := info.Types[call.Args[argn]].Value + if fmtstr == nil || fmtstr.Kind() != constant.String { + return true + } + + posn := conf.Fset.Position(call.Lparen) + filepos := fmt.Sprintf("%s:%d:%d", filepath.Base(posn.Filename), posn.Line, posn.Column) + + // TODO: identify the type of the format argument. If it is not + // a string, multiple keys may be defined. + var key []string + + // TODO: replace substitutions (%v) with a translator friendly + // notation. For instance: + // "%d files remaining" -> "{numFiles} files remaining", or + // "%d files remaining" -> "{arg1} files remaining" + // Alternatively, this could be done at a later stage. + msg := constant.StringVal(fmtstr) + + // Construct a Translation unit. + c := Translation{ + Key: key, + Position: filepath.Join(info.Pkg.Path(), filepos), + Original: Text{Msg: msg}, + ExtractedComment: getComment(call.Args[0]), + // TODO(fix): this doesn't get the before comment. + // Comment: getComment(call), + } + + for i, arg := range call.Args[argn+1:] { + var val string + if v := info.Types[arg].Value; v != nil { + val = v.ExactString() + } + posn := conf.Fset.Position(arg.Pos()) + filepos := fmt.Sprintf("%s:%d:%d", filepath.Base(posn.Filename), posn.Line, posn.Column) + c.Args = append(c.Args, Argument{ + ID: i + 1, + Type: info.Types[arg].Type.String(), + UnderlyingType: info.Types[arg].Type.Underlying().String(), + Expr: print(arg), + Value: val, + Comment: getComment(arg), + Position: filepath.Join(info.Pkg.Path(), filepos), + // TODO report whether it implements + // interfaces plural.Interface, + // gender.Interface. + }) + } + + translations = append(translations, c) + return true + }) + } + } + + data, err := json.MarshalIndent(translations, "", " ") + if err != nil { + return err + } + for _, tag := range getLangs() { + // TODO: merge with existing files, don't overwrite. + os.MkdirAll(*dir, 0744) + file := filepath.Join(*dir, fmt.Sprintf("gotext_%v.out.json", tag)) + if err := ioutil.WriteFile(file, data, 0744); err != nil { + return fmt.Errorf("could not create file: %v", err) + } + } + return nil +} + +// extractFuncs indicates the types and methods for which to extract strings, +// and which argument to extract. +// TODO: use the types in conf.Import("golang.org/x/text/message") to extract +// the correct instances. +var extractFuncs = map[string]map[string]int{ + // TODO: Printer -> *golang.org/x/text/message.Printer + "message.Printer": { + "Printf": 0, + "Sprintf": 0, + "Fprintf": 1, + }, +} diff --git a/vendor/golang.org/x/text/cmd/gotext/main.go b/vendor/golang.org/x/text/cmd/gotext/main.go new file mode 100644 index 0000000000..b03eb55650 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/main.go @@ -0,0 +1,356 @@ +// 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. + +//go:generate go build -o gotext.latest +//go:generate ./gotext.latest help gendocumentation +//go:generate rm gotext.latest + +package main + +import ( + "bufio" + "bytes" + "flag" + "fmt" + "go/build" + "go/format" + "io" + "io/ioutil" + "log" + "os" + "strings" + "sync" + "text/template" + "unicode" + "unicode/utf8" + + "golang.org/x/text/language" + "golang.org/x/tools/go/buildutil" +) + +func init() { + flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc) +} + +var ( + dir = flag.String("dir", "textdata", "default subdirectory to store translation files") + langs = flag.String("lang", "en", "comma-separated list of languages to process") +) + +// NOTE: the Command struct is copied from the go tool in core. + +// A Command is an implementation of a go command +// like go build or go fix. +type Command struct { + // Run runs the command. + // The args are the arguments after the command name. + Run func(cmd *Command, args []string) error + + // UsageLine is the one-line usage message. + // The first word in the line is taken to be the command name. + UsageLine string + + // Short is the short description shown in the 'go help' output. + Short string + + // Long is the long message shown in the 'go help ' output. + Long string + + // Flag is a set of flags specific to this command. + Flag flag.FlagSet +} + +// Name returns the command's name: the first word in the usage line. +func (c *Command) Name() string { + name := c.UsageLine + i := strings.Index(name, " ") + if i >= 0 { + name = name[:i] + } + return name +} + +func (c *Command) Usage() { + fmt.Fprintf(os.Stderr, "usage: %s\n\n", c.UsageLine) + fmt.Fprintf(os.Stderr, "%s\n", strings.TrimSpace(c.Long)) + os.Exit(2) +} + +// Runnable reports whether the command can be run; otherwise +// it is a documentation pseudo-command such as importpath. +func (c *Command) Runnable() bool { + return c.Run != nil +} + +// Commands lists the available commands and help topics. +// The order here is the order in which they are printed by 'go help'. +var commands = []*Command{ + cmdExtract, + // TODO: + // - generate code from translations. + // - update: full-cycle update of extraction, sending, and integration + // - report: report of freshness of translations +} + +var exitStatus = 0 +var exitMu sync.Mutex + +func setExitStatus(n int) { + exitMu.Lock() + if exitStatus < n { + exitStatus = n + } + exitMu.Unlock() +} + +var origEnv []string + +func main() { + flag.Usage = usage + flag.Parse() + log.SetFlags(0) + + args := flag.Args() + if len(args) < 1 { + usage() + } + + if args[0] == "help" { + help(args[1:]) + return + } + + for _, cmd := range commands { + if cmd.Name() == args[0] && cmd.Runnable() { + cmd.Flag.Usage = func() { cmd.Usage() } + cmd.Flag.Parse(args[1:]) + args = cmd.Flag.Args() + if err := cmd.Run(cmd, args); err != nil { + fatalf("gotext: %v", err) + } + exit() + return + } + } + + fmt.Fprintf(os.Stderr, "gotext: unknown subcommand %q\nRun 'go help' for usage.\n", args[0]) + setExitStatus(2) + exit() +} + +var usageTemplate = `gotext is a tool for managing text in Go source code. + +Usage: + + gotext command [arguments] + +The commands are: +{{range .}}{{if .Runnable}} + {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} + +Use "go help [command]" for more information about a command. + +Additional help topics: +{{range .}}{{if not .Runnable}} + {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} + +Use "gotext help [topic]" for more information about that topic. + +` + +var helpTemplate = `{{if .Runnable}}usage: go {{.UsageLine}} + +{{end}}{{.Long | trim}} +` + +var documentationTemplate = `{{range .}}{{if .Short}}{{.Short | capitalize}} + +{{end}}{{if .Runnable}}Usage: + + go {{.UsageLine}} + +{{end}}{{.Long | trim}} + + +{{end}}` + +// commentWriter writes a Go comment to the underlying io.Writer, +// using line comment form (//). +type commentWriter struct { + W io.Writer + wroteSlashes bool // Wrote "//" at the beginning of the current line. +} + +func (c *commentWriter) Write(p []byte) (int, error) { + var n int + for i, b := range p { + if !c.wroteSlashes { + s := "//" + if b != '\n' { + s = "// " + } + if _, err := io.WriteString(c.W, s); err != nil { + return n, err + } + c.wroteSlashes = true + } + n0, err := c.W.Write(p[i : i+1]) + n += n0 + if err != nil { + return n, err + } + if b == '\n' { + c.wroteSlashes = false + } + } + return len(p), nil +} + +// An errWriter wraps a writer, recording whether a write error occurred. +type errWriter struct { + w io.Writer + err error +} + +func (w *errWriter) Write(b []byte) (int, error) { + n, err := w.w.Write(b) + if err != nil { + w.err = err + } + return n, err +} + +// tmpl executes the given template text on data, writing the result to w. +func tmpl(w io.Writer, text string, data interface{}) { + t := template.New("top") + t.Funcs(template.FuncMap{"trim": strings.TrimSpace, "capitalize": capitalize}) + template.Must(t.Parse(text)) + ew := &errWriter{w: w} + err := t.Execute(ew, data) + if ew.err != nil { + // I/O error writing. Ignore write on closed pipe. + if strings.Contains(ew.err.Error(), "pipe") { + os.Exit(1) + } + fatalf("writing output: %v", ew.err) + } + if err != nil { + panic(err) + } +} + +func capitalize(s string) string { + if s == "" { + return s + } + r, n := utf8.DecodeRuneInString(s) + return string(unicode.ToTitle(r)) + s[n:] +} + +func printUsage(w io.Writer) { + bw := bufio.NewWriter(w) + tmpl(bw, usageTemplate, commands) + bw.Flush() +} + +func usage() { + printUsage(os.Stderr) + os.Exit(2) +} + +// help implements the 'help' command. +func help(args []string) { + if len(args) == 0 { + printUsage(os.Stdout) + // not exit 2: succeeded at 'go help'. + return + } + if len(args) != 1 { + fmt.Fprintf(os.Stderr, "usage: go help command\n\nToo many arguments given.\n") + os.Exit(2) // failed at 'go help' + } + + arg := args[0] + + // 'go help documentation' generates doc.go. + if strings.HasSuffix(arg, "documentation") { + w := &bytes.Buffer{} + + fmt.Fprintln(w, "// Copyright 2016 The Go Authors. All rights reserved.") + fmt.Fprintln(w, "// Use of this source code is governed by a BSD-style") + fmt.Fprintln(w, "// license that can be found in the LICENSE file.") + fmt.Fprintln(w) + fmt.Fprintln(w, "// DO NOT EDIT THIS FILE. GENERATED BY go generate.") + fmt.Fprintln(w, "// Edit the documentation in other files and rerun go generate to generate this one.") + fmt.Fprintln(w) + buf := new(bytes.Buffer) + printUsage(buf) + usage := &Command{Long: buf.String()} + tmpl(&commentWriter{W: w}, documentationTemplate, append([]*Command{usage}, commands...)) + fmt.Fprintln(w, "package main") + if arg == "gendocumentation" { + b, err := format.Source(w.Bytes()) + if err != nil { + errorf("Could not format generated docs: %v\n", err) + } + if err := ioutil.WriteFile("doc.go", b, 0666); err != nil { + errorf("Could not create file alldocs.go: %v\n", err) + } + } else { + fmt.Println(w.String()) + } + return + } + + for _, cmd := range commands { + if cmd.Name() == arg { + tmpl(os.Stdout, helpTemplate, cmd) + // not exit 2: succeeded at 'go help cmd'. + return + } + } + + fmt.Fprintf(os.Stderr, "Unknown help topic %#q. Run 'go help'.\n", arg) + os.Exit(2) // failed at 'go help cmd' +} + +func getLangs() (tags []language.Tag) { + for _, t := range strings.Split(*langs, ",") { + tag, err := language.Parse(t) + if err != nil { + fatalf("gotext: could not parse language %q: %v", t, err) + } + tags = append(tags, tag) + } + return tags +} + +var atexitFuncs []func() + +func atexit(f func()) { + atexitFuncs = append(atexitFuncs, f) +} + +func exit() { + for _, f := range atexitFuncs { + f() + } + os.Exit(exitStatus) +} + +func fatalf(format string, args ...interface{}) { + errorf(format, args...) + exit() +} + +func errorf(format string, args ...interface{}) { + log.Printf(format, args...) + setExitStatus(1) +} + +func exitIfErrors() { + if exitStatus != 0 { + exit() + } +} diff --git a/vendor/golang.org/x/text/cmd/gotext/message.go b/vendor/golang.org/x/text/cmd/gotext/message.go new file mode 100644 index 0000000000..67a622fd73 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/message.go @@ -0,0 +1,127 @@ +// 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 main + +// TODO: these definitions should be moved to a package so that the can be used +// by other tools. + +// The file contains the structures used to define translations of a certain +// messages. +// +// A translation may have multiple translations strings, or messages, depending +// on the feature values of the various arguments. For instance, consider +// a hypothetical translation from English to English, where the source defines +// the format string "%d file(s) remaining". A completed translation, expressed +// in JS, for this format string could look like: +// +// { +// "Key": [ +// "\"%d files(s) remaining\"" +// ], +// "Original": { +// "Msg": "\"%d files(s) remaining\"" +// }, +// "Translation": { +// "Select": { +// "Feature": "plural", +// "Arg": 1, +// "Case": { +// "one": { "Msg": "1 file remaining" }, +// "other": { "Msg": "%d files remaining" } +// }, +// }, +// }, +// "Args": [ +// { +// "ID": 2, +// "Type": "int", +// "UnderlyingType": "int", +// "Expr": "nFiles", +// "Comment": "number of files remaining", +// "Position": "golang.org/x/text/cmd/gotext/demo.go:34:3" +// } +// ], +// "Position": "golang.org/x/text/cmd/gotext/demo.go:33:10", +// } +// +// Alternatively, the Translation section could be written as: +// +// "Translation": { +// "Msg": "%d %[files]s remaining", +// "Var": { +// "files" : { +// "Select": { +// "Feature": "plural", +// "Arg": 1, +// "Case": { +// "one": { "Msg": "file" }, +// "other": { "Msg": "files" } +// } +// } +// } +// } +// } + +// A Translation describes a translation for a single language for a single +// message. +type Translation struct { + // Key contains a list of identifiers for the message. If this list is empty + // Original is used as the key. + Key []string `json:"key,omitempty"` + Original Text `json:"original"` + Translation Text `json:"translation"` + ExtractedComment string `json:"extractedComment,omitempty"` + TranslatorComment string `json:"translatorComment,omitempty"` + + Args []Argument `json:"args,omitempty"` + + // Extraction information. + Position string `json:"position,omitempty"` // filePosition:line +} + +// An Argument contains information about the arguments passed to a message. +type Argument struct { + ID interface{} `json:"id"` // An int for printf-style calls, but could be a string. + Type string `json:"type"` + UnderlyingType string `json:"underlyingType"` + Expr string `json:"expr"` + Value string `json:"value,omitempty"` + Comment string `json:"comment,omitempty"` + Position string `json:"position,omitempty"` + + // Features contains the features that are available for the implementation + // of this argument. + Features []Feature `json:"features,omitempty"` +} + +// Feature holds information about a feature that can be implemented by +// an Argument. +type Feature struct { + Type string `json:"type"` // Right now this is only gender and plural. + + // TODO: possible values and examples for the language under consideration. + +} + +// Text defines a message to be displayed. +type Text struct { + // Msg and Select contains the message to be displayed. Within a Text value + // either Msg or Select is defined. + Msg string `json:"msg,omitempty"` + Select *Select `json:"select,omitempty"` + // Var defines a map of variables that may be substituted in the selected + // message. + Var map[string]Text `json:"var,omitempty"` + // Example contains an example message formatted with default values. + Example string `json:"example,omitempty"` +} + +// Type Select selects a Text based on the feature value associated with +// a feature of a certain argument. +type Select struct { + Feature string `json:"feature"` // Name of variable or Feature type + Arg interface{} `json:"arg"` // The argument ID. + Cases map[string]Text `json:"cases"` +} diff --git a/vendor/golang.org/x/text/collate/build/builder.go b/vendor/golang.org/x/text/collate/build/builder.go index 54f65f340f..11042841b1 100644 --- a/vendor/golang.org/x/text/collate/build/builder.go +++ b/vendor/golang.org/x/text/collate/build/builder.go @@ -12,7 +12,7 @@ import ( "strings" "unicode/utf8" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/language" "golang.org/x/text/unicode/norm" ) @@ -445,8 +445,10 @@ func (b *Builder) build() (*table, error) { } b.built = true b.t = &table{ - maxContractLen: utf8.UTFMax, - variableTop: uint32(b.varTop), + Table: colltab.Table{ + MaxContractLen: utf8.UTFMax, + VariableTop: uint32(b.varTop), + }, } b.buildOrdering(&b.root) @@ -458,22 +460,23 @@ func (b *Builder) build() (*table, error) { } } i, err := b.index.generate() - b.t.index = *i + b.t.trie = *i + b.t.Index = colltab.Trie{ + Index: i.index, + Values: i.values, + Index0: i.index[blockSize*b.t.root.lookupStart:], + Values0: i.values[blockSize*b.t.root.valueStart:], + } b.error(err) return b.t, b.err } // Build builds the root Collator. -// TODO: return Weighter instead func (b *Builder) Build() (colltab.Weighter, error) { - t, err := b.build() + table, err := b.build() if err != nil { return nil, err } - table := colltab.Init(t) - if table == nil { - panic("generated table of incompatible type") - } return table, nil } @@ -574,16 +577,16 @@ func simplify(o *ordering) { // It returns an index to the expansion table. func (b *Builder) appendExpansion(e *entry) int { t := b.t - i := len(t.expandElem) + i := len(t.ExpandElem) ce := uint32(len(e.elems)) - t.expandElem = append(t.expandElem, ce) + t.ExpandElem = append(t.ExpandElem, ce) for _, w := range e.elems { ce, err := makeCE(w) if err != nil { b.error(err) return -1 } - t.expandElem = append(t.expandElem, ce) + t.ExpandElem = append(t.ExpandElem, ce) } return i } @@ -611,8 +614,8 @@ func (b *Builder) processContractions(o *ordering) { cm := make(map[rune][]*entry) for e := o.front(); e != nil; e, _ = e.nextIndexed() { if e.contraction() { - if len(e.str) > b.t.maxContractLen { - b.t.maxContractLen = len(e.str) + if len(e.str) > b.t.MaxContractLen { + b.t.MaxContractLen = len(e.str) } r := e.runes[0] if _, ok := cm[r]; !ok { @@ -656,7 +659,7 @@ func (b *Builder) processContractions(o *ordering) { handle, ok := b.ctHandle[key] if !ok { var err error - handle, err = t.contractTries.appendTrie(sufx) + handle, err = appendTrie(&t.ContractTries, sufx) if err != nil { b.error(err) } @@ -668,7 +671,7 @@ func (b *Builder) processContractions(o *ordering) { var p, sn int if len(e.runes) > 1 { str := []byte(string(e.runes[1:])) - p, sn = t.contractTries.lookup(handle, str) + p, sn = lookup(&t.ContractTries, handle, str) if sn != len(str) { log.Fatalf("%s: processContractions: unexpected length for '%X'; len=%d; want %d", o.id, e.runes, sn, len(str)) } @@ -688,9 +691,9 @@ func (b *Builder) processContractions(o *ordering) { key = fmt.Sprintf("%v", elems) i, ok := b.ctElem[key] if !ok { - i = len(t.contractElem) + i = len(t.ContractElem) b.ctElem[key] = i - t.contractElem = append(t.contractElem, elems...) + t.ContractElem = append(t.ContractElem, elems...) } // Store info in entry for starter rune. es[0].contractionIndex = i diff --git a/vendor/golang.org/x/text/collate/build/builder_test.go b/vendor/golang.org/x/text/collate/build/builder_test.go index 568309798e..ff0aba3aee 100644 --- a/vendor/golang.org/x/text/collate/build/builder_test.go +++ b/vendor/golang.org/x/text/collate/build/builder_test.go @@ -211,7 +211,7 @@ func TestExpand(t *testing.T) { e := o.front() for _, tt := range expandTest { - exp := b.t.expandElem[e.expansionIndex:] + exp := b.t.ExpandElem[e.expansionIndex:] if int(exp[0]) != len(tt.ces) { t.Errorf("%U: len(expansion)==%d; want %d", []rune(tt.str)[0], exp[0], len(tt.ces)) } @@ -224,8 +224,8 @@ func TestExpand(t *testing.T) { e, _ = e.nextIndexed() } // Verify uniquing. - if len(b.t.expandElem) != totalElements { - t.Errorf("len(expandElem)==%d; want %d", len(b.t.expandElem), totalElements) + if len(b.t.ExpandElem) != totalElements { + t.Errorf("len(expandElem)==%d; want %d", len(b.t.ExpandElem), totalElements) } } @@ -275,16 +275,16 @@ func TestContract(t *testing.T) { continue } str := tt.str[1:] - offset, n := b.t.contractTries.lookup(e.contractionHandle, []byte(str)) + offset, n := lookup(&b.t.ContractTries, e.contractionHandle, []byte(str)) if len(str) != n { t.Errorf("%s: bytes consumed==%d; want %d", tt.str, n, len(str)) } - ce := b.t.contractElem[offset+e.contractionIndex] + ce := b.t.ContractElem[offset+e.contractionIndex] if want, _ := makeCE(tt.ces[0]); want != ce { t.Errorf("%s: element %X; want %X", tt.str, ce, want) } } - if len(b.t.contractElem) != totalElements { - t.Errorf("len(expandElem)==%d; want %d", len(b.t.contractElem), totalElements) + if len(b.t.ContractElem) != totalElements { + t.Errorf("len(expandElem)==%d; want %d", len(b.t.ContractElem), totalElements) } } diff --git a/vendor/golang.org/x/text/collate/build/colelem.go b/vendor/golang.org/x/text/collate/build/colelem.go index 01d5e67a12..726fe5427a 100644 --- a/vendor/golang.org/x/text/collate/build/colelem.go +++ b/vendor/golang.org/x/text/collate/build/colelem.go @@ -8,7 +8,7 @@ import ( "fmt" "unicode" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" ) const ( diff --git a/vendor/golang.org/x/text/collate/build/colelem_test.go b/vendor/golang.org/x/text/collate/build/colelem_test.go index 57066b065c..d0c8d07d8a 100644 --- a/vendor/golang.org/x/text/collate/build/colelem_test.go +++ b/vendor/golang.org/x/text/collate/build/colelem_test.go @@ -7,7 +7,7 @@ package build import ( "testing" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" ) type ceTest struct { @@ -203,7 +203,7 @@ func TestCompareWeights(t *testing.T) { test := func(tt weightsTest, a, b [][]int) { res, level := compareWeights(mkRawCES(a), mkRawCES(b)) if res != tt.result { - t.Errorf("%d: expected comparisson result %d; found %d", i, tt.result, res) + t.Errorf("%d: expected comparison result %d; found %d", i, tt.result, res) } if level != tt.level { t.Errorf("%d: expected level %d; found %d", i, tt.level, level) diff --git a/vendor/golang.org/x/text/collate/build/contract.go b/vendor/golang.org/x/text/collate/build/contract.go index 868665061e..d96af78966 100644 --- a/vendor/golang.org/x/text/collate/build/contract.go +++ b/vendor/golang.org/x/text/collate/build/contract.go @@ -10,6 +10,8 @@ import ( "reflect" "sort" "strings" + + "golang.org/x/text/internal/colltab" ) // This file contains code for detecting contractions and generating @@ -48,7 +50,7 @@ const ( // ctEntry associates to a matching byte an offset and/or next sequence of // bytes to check. A ctEntry c is called final if a match means that the -// longest suffix has been found. An entry c is final if c.n == 0. +// longest suffix has been found. An entry c is final if c.N == 0. // A single final entry can match a range of characters to an offset. // A non-final entry always matches a single byte. Note that a non-final // entry might still resemble a completed suffix. @@ -69,10 +71,10 @@ const ( // } // See genStateTests in contract_test.go for more examples. type ctEntry struct { - l uint8 // non-final: byte value to match; final: lowest match in range. - h uint8 // non-final: relative index to next block; final: highest match in range. - n uint8 // non-final: length of next block; final: final - i uint8 // result offset. Will be noIndex if more bytes are needed to complete. + L uint8 // non-final: byte value to match; final: lowest match in range. + H uint8 // non-final: relative index to next block; final: highest match in range. + N uint8 // non-final: length of next block; final: final + I uint8 // result offset. Will be noIndex if more bytes are needed to complete. } // contractTrieSet holds a set of contraction tries. The tries are stored @@ -87,7 +89,7 @@ type ctHandle struct { // appendTrie adds a new trie for the given suffixes to the trie set and returns // a handle to it. The handle will be invalid on error. -func (ct *contractTrieSet) appendTrie(suffixes []string) (ctHandle, error) { +func appendTrie(ct *colltab.ContractTrieSet, suffixes []string) (ctHandle, error) { es := make([]stridx, len(suffixes)) for i, s := range suffixes { es[i].str = s @@ -98,7 +100,7 @@ func (ct *contractTrieSet) appendTrie(suffixes []string) (ctHandle, error) { } sort.Sort(genidxSort(es)) i := len(*ct) - n, err := ct.genStates(es) + n, err := genStates(ct, es) if err != nil { *ct = (*ct)[:i] return ctHandle{}, err @@ -108,7 +110,7 @@ func (ct *contractTrieSet) appendTrie(suffixes []string) (ctHandle, error) { // genStates generates ctEntries for a given suffix set and returns // the number of entries for the first node. -func (ct *contractTrieSet) genStates(sis []stridx) (int, error) { +func genStates(ct *colltab.ContractTrieSet, sis []stridx) (int, error) { if len(sis) == 0 { return 0, fmt.Errorf("genStates: list of suffices must be non-empty") } @@ -123,29 +125,29 @@ func (ct *contractTrieSet) genStates(sis []stridx) (int, error) { c := s[0] if len(s) > 1 { for j := len(*ct) - 1; j >= start; j-- { - if (*ct)[j].l == c { + if (*ct)[j].L == c { added = true break } } if !added { - *ct = append(*ct, ctEntry{l: c, i: noIndex}) + *ct = append(*ct, ctEntry{L: c, I: noIndex}) } } else { for j := len(*ct) - 1; j >= start; j-- { // Update the offset for longer suffixes with the same byte. - if (*ct)[j].l == c { - (*ct)[j].i = uint8(si.index) + if (*ct)[j].L == c { + (*ct)[j].I = uint8(si.index) added = true } // Extend range of final ctEntry, if possible. - if (*ct)[j].h+1 == c { - (*ct)[j].h = c + if (*ct)[j].H+1 == c { + (*ct)[j].H = c added = true } } if !added { - *ct = append(*ct, ctEntry{l: c, h: c, n: final, i: uint8(si.index)}) + *ct = append(*ct, ctEntry{L: c, H: c, N: final, I: uint8(si.index)}) } } } @@ -154,28 +156,28 @@ func (ct *contractTrieSet) genStates(sis []stridx) (int, error) { sp := 0 for i, end := start, len(*ct); i < end; i++ { fe := (*ct)[i] - if fe.h == 0 { // uninitialized non-final + if fe.H == 0 { // uninitialized non-final ln := len(*ct) - start - n if ln > 0xFF { return 0, fmt.Errorf("genStates: relative block offset too large: %d > 255", ln) } - fe.h = uint8(ln) + fe.H = uint8(ln) // Find first non-final strings with same byte as current entry. - for ; sis[sp].str[0] != fe.l; sp++ { + for ; sis[sp].str[0] != fe.L; sp++ { } se := sp + 1 - for ; se < len(sis) && len(sis[se].str) > 1 && sis[se].str[0] == fe.l; se++ { + for ; se < len(sis) && len(sis[se].str) > 1 && sis[se].str[0] == fe.L; se++ { } sl := sis[sp:se] sp = se for i, si := range sl { sl[i].str = si.str[1:] } - nn, err := ct.genStates(sl) + nn, err := genStates(ct, sl) if err != nil { return 0, err } - fe.n = uint8(nn) + fe.N = uint8(nn) (*ct)[i] = fe } } @@ -186,12 +188,12 @@ func (ct *contractTrieSet) genStates(sis []stridx) (int, error) { // There may be both a final and non-final entry for a byte if the byte // is implied in a range of matches in the final entry. // We need to ensure that the non-final entry comes first in that case. -type entrySort contractTrieSet +type entrySort colltab.ContractTrieSet func (fe entrySort) Len() int { return len(fe) } func (fe entrySort) Swap(i, j int) { fe[i], fe[j] = fe[j], fe[i] } func (fe entrySort) Less(i, j int) bool { - return fe[i].l > fe[j].l + return fe[i].L > fe[j].L } // stridx is used for sorting suffixes and their associated offsets. @@ -233,29 +235,29 @@ func (si genidxSort) Less(i, j int) bool { // lookup matches the longest suffix in str and returns the associated offset // and the number of bytes consumed. -func (ct *contractTrieSet) lookup(h ctHandle, str []byte) (index, ns int) { +func lookup(ct *colltab.ContractTrieSet, h ctHandle, str []byte) (index, ns int) { states := (*ct)[h.index:] p := 0 n := h.n for i := 0; i < n && p < len(str); { e := states[i] c := str[p] - if c >= e.l { - if e.l == c { + if c >= e.L { + if e.L == c { p++ - if e.i != noIndex { - index, ns = int(e.i), p + if e.I != noIndex { + index, ns = int(e.I), p } - if e.n != final { + if e.N != final { // set to new state - i, states, n = 0, states[int(e.h)+n:], int(e.n) + i, states, n = 0, states[int(e.H)+n:], int(e.N) } else { return } continue - } else if e.n == final && c <= e.h { + } else if e.N == final && c <= e.H { p++ - return int(c-e.l) + int(e.i), p + return int(c-e.L) + int(e.I), p } } i++ @@ -265,7 +267,7 @@ func (ct *contractTrieSet) lookup(h ctHandle, str []byte) (index, ns int) { // print writes the contractTrieSet t as compilable Go code to w. It returns // the total number of bytes written and the size of the resulting data structure in bytes. -func (t *contractTrieSet) print(w io.Writer, name string) (n, size int, err error) { +func print(t *colltab.ContractTrieSet, w io.Writer, name string) (n, size int, err error) { update3 := func(nn, sz int, e error) { n += nn if err == nil { @@ -275,14 +277,14 @@ func (t *contractTrieSet) print(w io.Writer, name string) (n, size int, err erro } update2 := func(nn int, e error) { update3(nn, 0, e) } - update3(t.printArray(w, name)) + update3(printArray(*t, w, name)) update2(fmt.Fprintf(w, "var %sContractTrieSet = ", name)) - update3(t.printStruct(w, name)) + update3(printStruct(*t, w, name)) update2(fmt.Fprintln(w)) return } -func (ct contractTrieSet) printArray(w io.Writer, name string) (n, size int, err error) { +func printArray(ct colltab.ContractTrieSet, w io.Writer, name string) (n, size int, err error) { p := func(f string, a ...interface{}) { nn, e := fmt.Fprintf(w, f, a...) n += nn @@ -292,16 +294,16 @@ func (ct contractTrieSet) printArray(w io.Writer, name string) (n, size int, err } size = len(ct) * 4 p("// %sCTEntries: %d entries, %d bytes\n", name, len(ct), size) - p("var %sCTEntries = [%d]struct{l,h,n,i uint8}{\n", name, len(ct)) + p("var %sCTEntries = [%d]struct{L,H,N,I uint8}{\n", name, len(ct)) for _, fe := range ct { - p("\t{0x%X, 0x%X, %d, %d},\n", fe.l, fe.h, fe.n, fe.i) + p("\t{0x%X, 0x%X, %d, %d},\n", fe.L, fe.H, fe.N, fe.I) } p("}\n") return } -func (ct contractTrieSet) printStruct(w io.Writer, name string) (n, size int, err error) { - n, err = fmt.Fprintf(w, "contractTrieSet( %sCTEntries[:] )", name) +func printStruct(ct colltab.ContractTrieSet, w io.Writer, name string) (n, size int, err error) { + n, err = fmt.Fprintf(w, "colltab.ContractTrieSet( %sCTEntries[:] )", name) size = int(reflect.TypeOf(ct).Size()) return } diff --git a/vendor/golang.org/x/text/collate/build/contract_test.go b/vendor/golang.org/x/text/collate/build/contract_test.go index 0fc944d34b..2e0eaecd51 100644 --- a/vendor/golang.org/x/text/collate/build/contract_test.go +++ b/vendor/golang.org/x/text/collate/build/contract_test.go @@ -8,6 +8,8 @@ import ( "bytes" "sort" "testing" + + "golang.org/x/text/internal/colltab" ) var largetosmall = []stridx{ @@ -78,7 +80,7 @@ func TestGenIdxSort(t *testing.T) { } } -var entrySortTests = []contractTrieSet{ +var entrySortTests = []colltab.ContractTrieSet{ { {10, 0, 1, 3}, {99, 0, 1, 0}, @@ -91,7 +93,7 @@ func TestEntrySort(t *testing.T) { for i, et := range entrySortTests { sort.Sort(entrySort(et)) for j, fe := range et { - if j != int(fe.i) { + if j != int(fe.I) { t.Errorf("%dth sort failed %v", i, et) break } @@ -102,7 +104,7 @@ func TestEntrySort(t *testing.T) { type GenStateTest struct { in []stridx firstBlockLen int - out contractTrieSet + out colltab.ContractTrieSet } var genStateTests = []GenStateTest{ @@ -110,7 +112,7 @@ var genStateTests = []GenStateTest{ {"abc", 1}, }, 1, - contractTrieSet{ + colltab.ContractTrieSet{ {'a', 0, 1, noIndex}, {'b', 0, 1, noIndex}, {'c', 'c', final, 1}, @@ -122,7 +124,7 @@ var genStateTests = []GenStateTest{ {"abe", 3}, }, 1, - contractTrieSet{ + colltab.ContractTrieSet{ {'a', 0, 1, noIndex}, {'b', 0, 1, noIndex}, {'c', 'e', final, 1}, @@ -134,7 +136,7 @@ var genStateTests = []GenStateTest{ {"a", 3}, }, 1, - contractTrieSet{ + colltab.ContractTrieSet{ {'a', 0, 1, 3}, {'b', 0, 1, 2}, {'c', 'c', final, 1}, @@ -149,7 +151,7 @@ var genStateTests = []GenStateTest{ {"b", 6}, }, 2, - contractTrieSet{ + colltab.ContractTrieSet{ {'b', 'b', final, 6}, {'a', 0, 2, 5}, {'c', 'c', final, 4}, @@ -167,7 +169,7 @@ var genStateTests = []GenStateTest{ {"bcdf", 3}, }, 2, - contractTrieSet{ + colltab.ContractTrieSet{ {'b', 3, 1, noIndex}, {'a', 0, 1, noIndex}, {'b', 0, 1, 6}, @@ -188,8 +190,8 @@ func TestGenStates(t *testing.T) { } // ensure input is well-formed sort.Sort(genidxSort(si)) - ct := contractTrieSet{} - n, _ := ct.genStates(si) + ct := colltab.ContractTrieSet{} + n, _ := genStates(&ct, si) if nn := tt.firstBlockLen; nn != n { t.Errorf("%d: block len %v; want %v", i, n, nn) } @@ -199,17 +201,17 @@ func TestGenStates(t *testing.T) { } for j, fe := range tt.out { const msg = "%d:%d: value %s=%v; want %v" - if fe.l != ct[j].l { - t.Errorf(msg, i, j, "l", ct[j].l, fe.l) + if fe.L != ct[j].L { + t.Errorf(msg, i, j, "l", ct[j].L, fe.L) } - if fe.h != ct[j].h { - t.Errorf(msg, i, j, "h", ct[j].h, fe.h) + if fe.H != ct[j].H { + t.Errorf(msg, i, j, "h", ct[j].H, fe.H) } - if fe.n != ct[j].n { - t.Errorf(msg, i, j, "n", ct[j].n, fe.n) + if fe.N != ct[j].N { + t.Errorf(msg, i, j, "n", ct[j].N, fe.N) } - if fe.i != ct[j].i { - t.Errorf(msg, i, j, "i", ct[j].i, fe.i) + if fe.I != ct[j].I { + t.Errorf(msg, i, j, "i", ct[j].I, fe.I) } } } @@ -221,13 +223,13 @@ func TestLookupContraction(t *testing.T) { for _, e := range tt.in { input = append(input, e.str) } - cts := contractTrieSet{} - h, _ := cts.appendTrie(input) + cts := colltab.ContractTrieSet{} + h, _ := appendTrie(&cts, input) for j, si := range tt.in { str := si.str for _, s := range []string{str, str + "X"} { msg := "%d:%d: %s(%s) %v; want %v" - idx, sn := cts.lookup(h, []byte(s)) + idx, sn := lookup(&cts, h, []byte(s)) if idx != si.index { t.Errorf(msg, i, j, "index", s, idx, si.index) } @@ -240,9 +242,9 @@ func TestLookupContraction(t *testing.T) { } func TestPrintContractionTrieSet(t *testing.T) { - testdata := contractTrieSet(genStateTests[4].out) + testdata := colltab.ContractTrieSet(genStateTests[4].out) buf := &bytes.Buffer{} - testdata.print(buf, "test") + print(&testdata, buf, "test") if contractTrieOutput != buf.String() { t.Errorf("output differs; found\n%s", buf.String()) println(string(buf.Bytes())) @@ -250,7 +252,7 @@ func TestPrintContractionTrieSet(t *testing.T) { } const contractTrieOutput = `// testCTEntries: 8 entries, 32 bytes -var testCTEntries = [8]struct{l,h,n,i uint8}{ +var testCTEntries = [8]struct{L,H,N,I uint8}{ {0x62, 0x3, 1, 255}, {0x61, 0x0, 1, 255}, {0x62, 0x0, 1, 6}, @@ -260,5 +262,5 @@ var testCTEntries = [8]struct{l,h,n,i uint8}{ {0x64, 0x0, 1, 5}, {0x65, 0x66, 0, 2}, } -var testContractTrieSet = contractTrieSet( testCTEntries[:] ) +var testContractTrieSet = colltab.ContractTrieSet( testCTEntries[:] ) ` diff --git a/vendor/golang.org/x/text/collate/build/order.go b/vendor/golang.org/x/text/collate/build/order.go index 34801d812d..2c568dbba3 100644 --- a/vendor/golang.org/x/text/collate/build/order.go +++ b/vendor/golang.org/x/text/collate/build/order.go @@ -11,7 +11,7 @@ import ( "strings" "unicode" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/unicode/norm" ) diff --git a/vendor/golang.org/x/text/collate/build/order_test.go b/vendor/golang.org/x/text/collate/build/order_test.go index 531795ba14..0e174bfbd4 100644 --- a/vendor/golang.org/x/text/collate/build/order_test.go +++ b/vendor/golang.org/x/text/collate/build/order_test.go @@ -8,7 +8,7 @@ import ( "strconv" "testing" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" ) type entryTest struct { diff --git a/vendor/golang.org/x/text/collate/build/table.go b/vendor/golang.org/x/text/collate/build/table.go index 3aaf37c374..7eea7a63f4 100644 --- a/vendor/golang.org/x/text/collate/build/table.go +++ b/vendor/golang.org/x/text/collate/build/table.go @@ -8,54 +8,15 @@ import ( "fmt" "io" "reflect" + + "golang.org/x/text/internal/colltab" ) // table is an intermediate structure that roughly resembles the table in collate. -// It implements the non-exported interface collate.tableInitializer type table struct { - index trie // main trie - root *trieHandle - - // expansion info - expandElem []uint32 - - // contraction info - contractTries contractTrieSet - contractElem []uint32 - maxContractLen int - variableTop uint32 -} - -func (t *table) TrieIndex() []uint16 { - return t.index.index -} - -func (t *table) TrieValues() []uint32 { - return t.index.values -} - -func (t *table) FirstBlockOffsets() (i, v uint16) { - return t.root.lookupStart, t.root.valueStart -} - -func (t *table) ExpandElems() []uint32 { - return t.expandElem -} - -func (t *table) ContractTries() []struct{ l, h, n, i uint8 } { - return t.contractTries -} - -func (t *table) ContractElems() []uint32 { - return t.contractElem -} - -func (t *table) MaxContractLen() int { - return t.maxContractLen -} - -func (t *table) VariableTop() uint32 { - return t.variableTop + colltab.Table + trie trie + root *trieHandle } // print writes the table as Go compilable code to w. It prefixes the @@ -70,10 +31,10 @@ func (t *table) fprint(w io.Writer, name string) (n, size int, err error) { size += sz } // Write arrays needed for the structure. - update(printColElems(w, t.expandElem, name+"ExpandElem")) - update(printColElems(w, t.contractElem, name+"ContractElem")) - update(t.index.printArrays(w, name)) - update(t.contractTries.printArray(w, name)) + update(printColElems(w, t.ExpandElem, name+"ExpandElem")) + update(printColElems(w, t.ContractElem, name+"ContractElem")) + update(t.trie.printArrays(w, name)) + update(printArray(t.ContractTries, w, name)) nn, e := fmt.Fprintf(w, "// Total size of %sTable is %d bytes\n", name, size) update(nn, 0, e) diff --git a/vendor/golang.org/x/text/collate/collate.go b/vendor/golang.org/x/text/collate/collate.go index a0f04ffe26..2ce9689074 100644 --- a/vendor/golang.org/x/text/collate/collate.go +++ b/vendor/golang.org/x/text/collate/collate.go @@ -7,16 +7,14 @@ //go:generate go run maketables.go -cldr=23 -unicode=6.2.0 // Package collate contains types for comparing and sorting Unicode strings -// according to a given collation order. Package locale provides a high-level -// interface to collation. Users should typically use that package instead. +// according to a given collation order. package collate // import "golang.org/x/text/collate" import ( "bytes" "strings" - "golang.org/x/text/collate/colltab" - newcolltab "golang.org/x/text/internal/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/language" ) @@ -56,8 +54,8 @@ var tags []language.Tag // New returns a new Collator initialized for the given locale. func New(t language.Tag, o ...Option) *Collator { - index := newcolltab.MatchLang(t, tags) - c := newCollator(colltab.Init(locales[index])) + index := colltab.MatchLang(t, tags) + c := newCollator(getTable(locales[index])) // Set options from the user-supplied tag. c.setFromTag(t) @@ -236,7 +234,7 @@ func (c *Collator) getColElemsString(str string) []colltab.Elem { type iter struct { wa [512]colltab.Elem - newcolltab.Iter + colltab.Iter pce int } diff --git a/vendor/golang.org/x/text/collate/collate_test.go b/vendor/golang.org/x/text/collate/collate_test.go index 9075a5d055..0e78b96fae 100644 --- a/vendor/golang.org/x/text/collate/collate_test.go +++ b/vendor/golang.org/x/text/collate/collate_test.go @@ -8,7 +8,7 @@ import ( "bytes" "testing" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/language" ) diff --git a/vendor/golang.org/x/text/collate/colltab/colltab.go b/vendor/golang.org/x/text/collate/colltab/colltab.go deleted file mode 100644 index 867d2d0713..0000000000 --- a/vendor/golang.org/x/text/collate/colltab/colltab.go +++ /dev/null @@ -1,31 +0,0 @@ -// 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 colltab // import "golang.org/x/text/collate/colltab" - -// A Weighter can be used as a source for Collator and Searcher. -type Weighter interface { - // Start finds the start of the segment that includes position p. - Start(p int, b []byte) int - - // StartString finds the start of the segment that includes position p. - StartString(p int, s string) int - - // AppendNext appends Elems to buf corresponding to the longest match - // of a single character or contraction from the start of s. - // It returns the new buf and the number of bytes consumed. - AppendNext(buf []Elem, s []byte) (ce []Elem, n int) - - // AppendNextString appends Elems to buf corresponding to the longest match - // of a single character or contraction from the start of s. - // It returns the new buf and the number of bytes consumed. - AppendNextString(buf []Elem, s string) (ce []Elem, n int) - - // Domain returns a slice of all single characters and contractions for which - // collation elements are defined in this table. - Domain() []string - - // Top returns the highest variable primary value. - Top() uint32 -} diff --git a/vendor/golang.org/x/text/collate/colltab/contract.go b/vendor/golang.org/x/text/collate/colltab/contract.go deleted file mode 100644 index 86158d0026..0000000000 --- a/vendor/golang.org/x/text/collate/colltab/contract.go +++ /dev/null @@ -1,145 +0,0 @@ -// 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 colltab - -import "unicode/utf8" - -// For a description of contractTrieSet, see exp/locale/collate/build/contract.go. - -type contractTrieSet []struct{ l, h, n, i uint8 } - -// ctScanner is used to match a trie to an input sequence. -// A contraction may match a non-contiguous sequence of bytes in an input string. -// For example, if there is a contraction for , it should match -// the sequence , as combining_cedilla does -// not block combining_ring. -// ctScanner does not automatically skip over non-blocking non-starters, but rather -// retains the state of the last match and leaves it up to the user to continue -// the match at the appropriate points. -type ctScanner struct { - states contractTrieSet - s []byte - n int - index int - pindex int - done bool -} - -type ctScannerString struct { - states contractTrieSet - s string - n int - index int - pindex int - done bool -} - -func (t contractTrieSet) scanner(index, n int, b []byte) ctScanner { - return ctScanner{s: b, states: t[index:], n: n} -} - -func (t contractTrieSet) scannerString(index, n int, str string) ctScannerString { - return ctScannerString{s: str, states: t[index:], n: n} -} - -// result returns the offset i and bytes consumed p so far. If no suffix -// matched, i and p will be 0. -func (s *ctScanner) result() (i, p int) { - return s.index, s.pindex -} - -func (s *ctScannerString) result() (i, p int) { - return s.index, s.pindex -} - -const ( - final = 0 - noIndex = 0xFF -) - -// scan matches the longest suffix at the current location in the input -// and returns the number of bytes consumed. -func (s *ctScanner) scan(p int) int { - pr := p // the p at the rune start - str := s.s - states, n := s.states, s.n - for i := 0; i < n && p < len(str); { - e := states[i] - c := str[p] - // TODO: a significant number of contractions are of a form that - // cannot match discontiguous UTF-8 in a normalized string. We could let - // a negative value of e.n mean that we can set s.done = true and avoid - // the need for additional matches. - if c >= e.l { - if e.l == c { - p++ - if e.i != noIndex { - s.index = int(e.i) - s.pindex = p - } - if e.n != final { - i, states, n = 0, states[int(e.h)+n:], int(e.n) - if p >= len(str) || utf8.RuneStart(str[p]) { - s.states, s.n, pr = states, n, p - } - } else { - s.done = true - return p - } - continue - } else if e.n == final && c <= e.h { - p++ - s.done = true - s.index = int(c-e.l) + int(e.i) - s.pindex = p - return p - } - } - i++ - } - return pr -} - -// scan is a verbatim copy of ctScanner.scan. -func (s *ctScannerString) scan(p int) int { - pr := p // the p at the rune start - str := s.s - states, n := s.states, s.n - for i := 0; i < n && p < len(str); { - e := states[i] - c := str[p] - // TODO: a significant number of contractions are of a form that - // cannot match discontiguous UTF-8 in a normalized string. We could let - // a negative value of e.n mean that we can set s.done = true and avoid - // the need for additional matches. - if c >= e.l { - if e.l == c { - p++ - if e.i != noIndex { - s.index = int(e.i) - s.pindex = p - } - if e.n != final { - i, states, n = 0, states[int(e.h)+n:], int(e.n) - if p >= len(str) || utf8.RuneStart(str[p]) { - s.states, s.n, pr = states, n, p - } - } else { - s.done = true - return p - } - continue - } else if e.n == final && c <= e.h { - p++ - s.done = true - s.index = int(c-e.l) + int(e.i) - s.pindex = p - return p - } - } - i++ - } - return pr -} diff --git a/vendor/golang.org/x/text/collate/colltab/contract_test.go b/vendor/golang.org/x/text/collate/colltab/contract_test.go deleted file mode 100644 index a8da4e013e..0000000000 --- a/vendor/golang.org/x/text/collate/colltab/contract_test.go +++ /dev/null @@ -1,132 +0,0 @@ -// 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 colltab - -import ( - "testing" -) - -type lookupStrings struct { - str string - offset int - n int // bytes consumed from input -} - -type LookupTest struct { - lookup []lookupStrings - n int - tries contractTrieSet -} - -var lookupTests = []LookupTest{ - {[]lookupStrings{ - {"abc", 1, 3}, - {"a", 0, 0}, - {"b", 0, 0}, - {"c", 0, 0}, - {"d", 0, 0}, - }, - 1, - contractTrieSet{ - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 0xFF}, - {'c', 'c', 0, 1}, - }, - }, - {[]lookupStrings{ - {"abc", 1, 3}, - {"abd", 2, 3}, - {"abe", 3, 3}, - {"a", 0, 0}, - {"ab", 0, 0}, - {"d", 0, 0}, - {"f", 0, 0}, - }, - 1, - contractTrieSet{ - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 0xFF}, - {'c', 'e', 0, 1}, - }, - }, - {[]lookupStrings{ - {"abc", 1, 3}, - {"ab", 2, 2}, - {"a", 3, 1}, - {"abcd", 1, 3}, - {"abe", 2, 2}, - }, - 1, - contractTrieSet{ - {'a', 0, 1, 3}, - {'b', 0, 1, 2}, - {'c', 'c', 0, 1}, - }, - }, - {[]lookupStrings{ - {"abc", 1, 3}, - {"abd", 2, 3}, - {"ab", 3, 2}, - {"ac", 4, 2}, - {"a", 5, 1}, - {"b", 6, 1}, - {"ba", 6, 1}, - }, - 2, - contractTrieSet{ - {'b', 'b', 0, 6}, - {'a', 0, 2, 5}, - {'c', 'c', 0, 4}, - {'b', 0, 1, 3}, - {'c', 'd', 0, 1}, - }, - }, - {[]lookupStrings{ - {"bcde", 2, 4}, - {"bc", 7, 2}, - {"ab", 6, 2}, - {"bcd", 5, 3}, - {"abcd", 1, 4}, - {"abc", 4, 3}, - {"bcdf", 3, 4}, - }, - 2, - contractTrieSet{ - {'b', 3, 1, 0xFF}, - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 6}, - {'c', 0, 1, 4}, - {'d', 'd', 0, 1}, - {'c', 0, 1, 7}, - {'d', 0, 1, 5}, - {'e', 'f', 0, 2}, - }, - }, -} - -func lookup(c *contractTrieSet, nnode int, s []uint8) (i, n int) { - scan := c.scanner(0, nnode, s) - scan.scan(0) - return scan.result() -} - -func TestLookupContraction(t *testing.T) { - for i, tt := range lookupTests { - cts := contractTrieSet(tt.tries) - for j, lu := range tt.lookup { - str := lu.str - for _, s := range []string{str, str + "X"} { - const msg = `%d:%d: %s of "%s" %v; want %v` - offset, n := lookup(&cts, tt.n, []byte(s)) - if offset != lu.offset { - t.Errorf(msg, i, j, "offset", s, offset, lu.offset) - } - if n != lu.n { - t.Errorf(msg, i, j, "bytes consumed", s, n, len(str)) - } - } - } - } -} diff --git a/vendor/golang.org/x/text/collate/colltab/export.go b/vendor/golang.org/x/text/collate/colltab/export.go deleted file mode 100644 index 257ea2a8d0..0000000000 --- a/vendor/golang.org/x/text/collate/colltab/export.go +++ /dev/null @@ -1,36 +0,0 @@ -// 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 colltab - -// Init is for internal use only. -func Init(data interface{}) Weighter { - init, ok := data.(tableInitializer) - if !ok { - return nil - } - t := &table{} - loff, voff := init.FirstBlockOffsets() - t.index.index = init.TrieIndex() - t.index.index0 = t.index.index[blockSize*int(loff):] - t.index.values = init.TrieValues() - t.index.values0 = t.index.values[blockSize*int(voff):] - t.expandElem = init.ExpandElems() - t.contractTries = init.ContractTries() - t.contractElem = init.ContractElems() - t.maxContractLen = init.MaxContractLen() - t.variableTop = init.VariableTop() - return t -} - -type tableInitializer interface { - TrieIndex() []uint16 - TrieValues() []uint32 - FirstBlockOffsets() (lookup, value uint16) - ExpandElems() []uint32 - ContractTries() []struct{ l, h, n, i uint8 } - ContractElems() []uint32 - MaxContractLen() int - VariableTop() uint32 -} diff --git a/vendor/golang.org/x/text/collate/colltab/trie.go b/vendor/golang.org/x/text/collate/colltab/trie.go deleted file mode 100644 index f95b4abea4..0000000000 --- a/vendor/golang.org/x/text/collate/colltab/trie.go +++ /dev/null @@ -1,159 +0,0 @@ -// 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. - -// The trie in this file is used to associate the first full character in an -// UTF-8 string to a collation element. 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 of collation elements. -// For a full description, see go.text/collate/build/trie.go. - -package colltab - -const blockSize = 64 - -type trie struct { - index0 []uint16 // index for first byte (0xC0-0xFF) - values0 []uint32 // index for first byte (0x00-0x7F) - index []uint16 - values []uint32 -} - -const ( - t1 = 0x00 // 0000 0000 - tx = 0x80 // 1000 0000 - t2 = 0xC0 // 1100 0000 - t3 = 0xE0 // 1110 0000 - t4 = 0xF0 // 1111 0000 - t5 = 0xF8 // 1111 1000 - t6 = 0xFC // 1111 1100 - te = 0xFE // 1111 1110 -) - -func (t *trie) lookupValue(n uint16, b byte) Elem { - return Elem(t.values[int(n)<<6+int(b)]) -} - -// 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 *trie) lookup(s []byte) (v Elem, sz int) { - c0 := s[0] - switch { - case c0 < tx: - return Elem(t.values0[c0]), 1 - case c0 < t2: - return 0, 1 - case c0 < t3: - if len(s) < 2 { - return 0, 0 - } - i := t.index0[c0] - c1 := s[1] - if c1 < tx || t2 <= c1 { - return 0, 1 - } - return t.lookupValue(i, c1), 2 - case c0 < t4: - if len(s) < 3 { - return 0, 0 - } - i := t.index0[c0] - c1 := s[1] - if c1 < tx || t2 <= c1 { - return 0, 1 - } - o := int(i)<<6 + int(c1) - i = t.index[o] - c2 := s[2] - if c2 < tx || t2 <= c2 { - return 0, 2 - } - return t.lookupValue(i, c2), 3 - case c0 < t5: - if len(s) < 4 { - return 0, 0 - } - i := t.index0[c0] - c1 := s[1] - if c1 < tx || t2 <= c1 { - return 0, 1 - } - o := int(i)<<6 + int(c1) - i = t.index[o] - c2 := s[2] - if c2 < tx || t2 <= c2 { - return 0, 2 - } - o = int(i)<<6 + int(c2) - i = t.index[o] - c3 := s[3] - if c3 < tx || t2 <= c3 { - return 0, 3 - } - return t.lookupValue(i, c3), 4 - } - // Illegal rune - return 0, 1 -} - -// The body of lookupString is a verbatim copy of that of lookup. -func (t *trie) lookupString(s string) (v Elem, sz int) { - c0 := s[0] - switch { - case c0 < tx: - return Elem(t.values0[c0]), 1 - case c0 < t2: - return 0, 1 - case c0 < t3: - if len(s) < 2 { - return 0, 0 - } - i := t.index0[c0] - c1 := s[1] - if c1 < tx || t2 <= c1 { - return 0, 1 - } - return t.lookupValue(i, c1), 2 - case c0 < t4: - if len(s) < 3 { - return 0, 0 - } - i := t.index0[c0] - c1 := s[1] - if c1 < tx || t2 <= c1 { - return 0, 1 - } - o := int(i)<<6 + int(c1) - i = t.index[o] - c2 := s[2] - if c2 < tx || t2 <= c2 { - return 0, 2 - } - return t.lookupValue(i, c2), 3 - case c0 < t5: - if len(s) < 4 { - return 0, 0 - } - i := t.index0[c0] - c1 := s[1] - if c1 < tx || t2 <= c1 { - return 0, 1 - } - o := int(i)<<6 + int(c1) - i = t.index[o] - c2 := s[2] - if c2 < tx || t2 <= c2 { - return 0, 2 - } - o = int(i)<<6 + int(c2) - i = t.index[o] - c3 := s[3] - if c3 < tx || t2 <= c3 { - return 0, 3 - } - return t.lookupValue(i, c3), 4 - } - // Illegal rune - return 0, 1 -} diff --git a/vendor/golang.org/x/text/collate/export_test.go b/vendor/golang.org/x/text/collate/export_test.go index c1d19847b1..69bfeaf1ac 100644 --- a/vendor/golang.org/x/text/collate/export_test.go +++ b/vendor/golang.org/x/text/collate/export_test.go @@ -10,7 +10,7 @@ package collate import ( "fmt" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" ) const ( diff --git a/vendor/golang.org/x/text/collate/index.go b/vendor/golang.org/x/text/collate/index.go index 1c3191b05c..535fb5402a 100644 --- a/vendor/golang.org/x/text/collate/index.go +++ b/vendor/golang.org/x/text/collate/index.go @@ -4,41 +4,29 @@ package collate +import "golang.org/x/text/internal/colltab" + +const blockSize = 64 + +func getTable(t tableIndex) *colltab.Table { + return &colltab.Table{ + Index: colltab.Trie{ + Index0: mainLookup[:][blockSize*t.lookupOffset:], + Values0: mainValues[:][blockSize*t.valuesOffset:], + Index: mainLookup[:], + Values: mainValues[:], + }, + ExpandElem: mainExpandElem[:], + ContractTries: colltab.ContractTrieSet(mainCTEntries[:]), + ContractElem: mainContractElem[:], + MaxContractLen: 18, + VariableTop: varTop, + } +} + // tableIndex holds information for constructing a table // for a certain locale based on the main table. type tableIndex struct { lookupOffset uint32 valuesOffset uint32 } - -func (t tableIndex) TrieIndex() []uint16 { - return mainLookup[:] -} - -func (t tableIndex) TrieValues() []uint32 { - return mainValues[:] -} - -func (t tableIndex) FirstBlockOffsets() (lookup, value uint16) { - return uint16(t.lookupOffset), uint16(t.valuesOffset) -} - -func (t tableIndex) ExpandElems() []uint32 { - return mainExpandElem[:] -} - -func (t tableIndex) ContractTries() []struct{ l, h, n, i uint8 } { - return mainCTEntries[:] -} - -func (t tableIndex) ContractElems() []uint32 { - return mainContractElem[:] -} - -func (t tableIndex) MaxContractLen() int { - return 18 // TODO: generate -} - -func (t tableIndex) VariableTop() uint32 { - return varTop -} diff --git a/vendor/golang.org/x/text/collate/maketables.go b/vendor/golang.org/x/text/collate/maketables.go index bda5ecc4f0..b4c835ed4d 100644 --- a/vendor/golang.org/x/text/collate/maketables.go +++ b/vendor/golang.org/x/text/collate/maketables.go @@ -27,7 +27,7 @@ import ( "golang.org/x/text/collate" "golang.org/x/text/collate/build" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/internal/gen" "golang.org/x/text/language" "golang.org/x/text/unicode/cldr" diff --git a/vendor/golang.org/x/text/collate/option.go b/vendor/golang.org/x/text/collate/option.go index 9d9a8467f3..f39ef68417 100644 --- a/vendor/golang.org/x/text/collate/option.go +++ b/vendor/golang.org/x/text/collate/option.go @@ -7,7 +7,7 @@ package collate import ( "sort" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/language" "golang.org/x/text/unicode/norm" ) diff --git a/vendor/golang.org/x/text/collate/option_test.go b/vendor/golang.org/x/text/collate/option_test.go index be4426cfb2..0f6ba9bc81 100644 --- a/vendor/golang.org/x/text/collate/option_test.go +++ b/vendor/golang.org/x/text/collate/option_test.go @@ -8,13 +8,13 @@ import ( "strings" "testing" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/language" ) var ( defaultIgnore = ignore(colltab.Tertiary) - defaultTable = colltab.Init(locales[0]) + defaultTable = getTable(locales[0]) ) func TestOptions(t *testing.T) { diff --git a/vendor/golang.org/x/text/collate/table_test.go b/vendor/golang.org/x/text/collate/table_test.go index 7e1e9cf7aa..3a6b12fd62 100644 --- a/vendor/golang.org/x/text/collate/table_test.go +++ b/vendor/golang.org/x/text/collate/table_test.go @@ -8,7 +8,7 @@ import ( "testing" "golang.org/x/text/collate/build" - "golang.org/x/text/collate/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/unicode/norm" ) diff --git a/vendor/golang.org/x/text/collate/tables.go b/vendor/golang.org/x/text/collate/tables.go index 762bc5cba4..9ec4f3d494 100644 --- a/vendor/golang.org/x/text/collate/tables.go +++ b/vendor/golang.org/x/text/collate/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package collate @@ -71254,7 +71254,7 @@ var mainLookup = [16576]uint16{ } // mainCTEntries: 2529 entries, 10116 bytes -var mainCTEntries = [2529]struct{ l, h, n, i uint8 }{ +var mainCTEntries = [2529]struct{ L, H, N, I uint8 }{ {0xCE, 0x1, 1, 255}, {0xC2, 0x0, 1, 255}, {0xB7, 0xB7, 0, 1}, diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go b/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go index 6dda8bc072..ebd6012dd6 100644 --- a/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go +++ b/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go @@ -211,7 +211,7 @@ func (ts *Context) Print(a ...interface{}) { fmt.Fprint(ts.out, a...) } -// assertBuf sets up an io.Writer for ouput, if it doesn't already exist. +// assertBuf sets up an io.Writer for output, if it doesn't already exist. // In debug and verbose mode, output is buffered so that the regular output // will not interfere with the additional output. Otherwise, output is // written directly to stdout for a more responsive feel. diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/icu.go b/vendor/golang.org/x/text/collate/tools/colcmp/icu.go index 91980ac98f..76de404275 100644 --- a/vendor/golang.org/x/text/collate/tools/colcmp/icu.go +++ b/vendor/golang.org/x/text/collate/tools/colcmp/icu.go @@ -165,8 +165,8 @@ func (c *icuUTF8iter) Key(s Input) []byte { return c.extendBuf(n) } -// icuUTF8conv implementes the Collator interface. -// This implentation first converts the give UTF8 string +// icuUTF8conv implements the Collator interface. +// This implementation first converts the give UTF8 string // to UTF16 and then calls the main ICU collation function. type icuUTF8conv struct { icuCollator diff --git a/vendor/golang.org/x/text/currency/common.go b/vendor/golang.org/x/text/currency/common.go index 0c567f9e19..250cb8c66f 100644 --- a/vendor/golang.org/x/text/currency/common.go +++ b/vendor/golang.org/x/text/currency/common.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package currency diff --git a/vendor/golang.org/x/text/currency/tables.go b/vendor/golang.org/x/text/currency/tables.go index b87dbc4138..bb3cb70ba6 100644 --- a/vendor/golang.org/x/text/currency/tables.go +++ b/vendor/golang.org/x/text/currency/tables.go @@ -1,82 +1,82 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package currency 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 CLDRVersion = "31" const ( - xxx = 282 - xts = 280 - usd = 249 - eur = 92 - jpy = 131 - gbp = 97 - chf = 60 + xxx = 283 + xts = 281 + usd = 250 + eur = 93 + jpy = 132 + gbp = 98 + chf = 61 aud = 19 - nzd = 190 - cad = 57 - sek = 217 - nok = 188 - dkk = 80 - xag = 263 - xau = 264 - xpt = 277 - xpd = 275 + nzd = 191 + cad = 58 + sek = 218 + nok = 189 + dkk = 81 + xag = 264 + xau = 265 + xpt = 278 + xpd = 276 brl = 46 - cny = 66 - inr = 123 - rub = 208 - hkd = 112 - idr = 118 - krw = 139 - mxn = 176 - pln = 199 - sar = 211 - thb = 232 - try = 241 - twd = 243 - zar = 290 + cny = 67 + inr = 124 + rub = 209 + hkd = 113 + idr = 119 + krw = 140 + mxn = 177 + pln = 200 + sar = 212 + thb = 233 + try = 242 + twd = 244 + zar = 291 ) // currency holds an alphabetically sorted list of canonical 3-letter currency // identifiers. Each identifier is followed by a byte of type currencyInfo, // defined in gen_common.go. -var currency tag.Index = "" + // Size: 1196 bytes +const currency tag.Index = "" + // Size: 1200 bytes "\x00\x00\x00\x00ADP\x09AED\x00AFA\x00AFN\x09ALK\x00ALL\x09AMD\x09ANG\x00" + "AOA\x00AOK\x00AON\x00AOR\x00ARA\x00ARL\x00ARM\x00ARP\x00ARS\x00ATS\x00AU" + "D\x00AWG\x00AZM\x00AZN\x00BAD\x00BAM\x00BAN\x00BBD\x00BDT\x00BEC\x00BEF" + "\x00BEL\x00BGL\x00BGM\x00BGN\x00BGO\x00BHD\x1bBIF\x09BMD\x00BND\x00BOB" + "\x00BOL\x00BOP\x00BOV\x00BRB\x00BRC\x00BRE\x00BRL\x00BRN\x00BRR\x00BRZ" + - "\x00BSD\x00BTN\x00BUK\x00BWP\x00BYB\x00BYR\x09BZD\x00CAD(CDF\x00CHE\x00C" + - "HF(CHW\x00CLE\x00CLF$CLP\x09CNX\x00CNY\x00COP\x09COU\x00CRC\x09CSD\x00CS" + - "K\x00CUC\x00CUP\x00CVE\x00CYP\x00CZK\x08DDM\x00DEM\x00DJF\x09DKK\x00DOP" + - "\x00DZD\x00ECS\x00ECV\x00EEK\x00EGP\x00ERN\x00ESA\x00ESB\x00ESP\x09ETB" + - "\x00EUR\x00FIM\x00FJD\x00FKP\x00FRF\x00GBP\x00GEK\x00GEL\x00GHC\x00GHS" + - "\x00GIP\x00GMD\x00GNF\x09GNS\x00GQE\x00GRD\x00GTQ\x00GWE\x00GWP\x00GYD" + - "\x09HKD\x00HNL\x00HRD\x00HRK\x00HTG\x00HUF\x08IDR\x09IEP\x00ILP\x00ILR" + - "\x00ILS\x00INR\x00IQD\x09IRR\x09ISJ\x00ISK\x09ITL\x09JMD\x00JOD\x1bJPY" + - "\x09KES\x00KGS\x00KHR\x00KMF\x09KPW\x09KRH\x00KRO\x00KRW\x09KWD\x1bKYD" + - "\x00KZT\x00LAK\x09LBP\x09LKR\x00LRD\x00LSL\x00LTL\x00LTT\x00LUC\x00LUF" + - "\x09LUL\x00LVL\x00LVR\x00LYD\x1bMAD\x00MAF\x00MCF\x00MDC\x00MDL\x00MGA" + - "\x09MGF\x09MKD\x00MKN\x00MLF\x00MMK\x09MNT\x09MOP\x00MRO\x09MTL\x00MTP" + - "\x00MUR\x09MVP\x00MVR\x00MWK\x00MXN\x00MXP\x00MXV\x00MYR\x00MZE\x00MZM" + - "\x00MZN\x00NAD\x00NGN\x00NIC\x00NIO\x00NLG\x00NOK\x00NPR\x00NZD\x00OMR" + - "\x1bPAB\x00PEI\x00PEN\x00PES\x00PGK\x00PHP\x00PKR\x09PLN\x00PLZ\x00PTE" + - "\x00PYG\x09QAR\x00RHD\x00ROL\x00RON\x00RSD\x09RUB\x00RUR\x00RWF\x09SAR" + - "\x00SBD\x00SCR\x00SDD\x00SDG\x00SDP\x00SEK\x00SGD\x00SHP\x00SIT\x00SKK" + - "\x00SLL\x09SOS\x09SRD\x00SRG\x00SSP\x00STD\x09SUR\x00SVC\x00SYP\x09SZL" + - "\x00THB\x00TJR\x00TJS\x00TMM\x09TMT\x00TND\x1bTOP\x00TPE\x00TRL\x09TRY" + - "\x00TTD\x00TWD\x08TZS\x09UAH\x00UAK\x00UGS\x00UGX\x09USD\x00USN\x00USS" + - "\x00UYI\x09UYP\x00UYU\x00UZS\x09VEB\x00VEF\x00VND\x09VNN\x00VUV\x09WST" + - "\x00XAF\x09XAG\x00XAU\x00XBA\x00XBB\x00XBC\x00XBD\x00XCD\x00XDR\x00XEU" + - "\x00XFO\x00XFU\x00XOF\x09XPD\x00XPF\x09XPT\x00XRE\x00XSU\x00XTS\x00XUA" + - "\x00XXX\x00YDD\x00YER\x09YUD\x00YUM\x00YUN\x00YUR\x00ZAL\x00ZAR\x00ZMK" + - "\x09ZMW\x00ZRN\x00ZRZ\x00ZWD\x09ZWL\x00ZWR\x00\xff\xff\xff\xff" + "\x00BSD\x00BTN\x00BUK\x00BWP\x00BYB\x00BYN\x00BYR\x09BZD\x00CAD(CDF\x00C" + + "HE\x00CHF(CHW\x00CLE\x00CLF$CLP\x09CNX\x00CNY\x00COP\x09COU\x00CRC\x08CS" + + "D\x00CSK\x00CUC\x00CUP\x00CVE\x00CYP\x00CZK\x08DDM\x00DEM\x00DJF\x09DKK" + + "\x00DOP\x00DZD\x00ECS\x00ECV\x00EEK\x00EGP\x00ERN\x00ESA\x00ESB\x00ESP" + + "\x09ETB\x00EUR\x00FIM\x00FJD\x00FKP\x00FRF\x00GBP\x00GEK\x00GEL\x00GHC" + + "\x00GHS\x00GIP\x00GMD\x00GNF\x09GNS\x00GQE\x00GRD\x00GTQ\x00GWE\x00GWP" + + "\x00GYD\x09HKD\x00HNL\x00HRD\x00HRK\x00HTG\x00HUF\x08IDR\x09IEP\x00ILP" + + "\x00ILR\x00ILS\x00INR\x00IQD\x09IRR\x09ISJ\x00ISK\x09ITL\x09JMD\x00JOD" + + "\x1bJPY\x09KES\x00KGS\x00KHR\x00KMF\x09KPW\x09KRH\x00KRO\x00KRW\x09KWD" + + "\x1bKYD\x00KZT\x00LAK\x09LBP\x09LKR\x00LRD\x00LSL\x00LTL\x00LTT\x00LUC" + + "\x00LUF\x09LUL\x00LVL\x00LVR\x00LYD\x1bMAD\x00MAF\x00MCF\x00MDC\x00MDL" + + "\x00MGA\x09MGF\x09MKD\x00MKN\x00MLF\x00MMK\x09MNT\x09MOP\x00MRO\x09MTL" + + "\x00MTP\x00MUR\x09MVP\x00MVR\x00MWK\x00MXN\x00MXP\x00MXV\x00MYR\x00MZE" + + "\x00MZM\x00MZN\x00NAD\x00NGN\x00NIC\x00NIO\x00NLG\x00NOK\x00NPR\x00NZD" + + "\x00OMR\x1bPAB\x00PEI\x00PEN\x00PES\x00PGK\x00PHP\x00PKR\x09PLN\x00PLZ" + + "\x00PTE\x00PYG\x09QAR\x00RHD\x00ROL\x00RON\x00RSD\x09RUB\x00RUR\x00RWF" + + "\x09SAR\x00SBD\x00SCR\x00SDD\x00SDG\x00SDP\x00SEK\x00SGD\x00SHP\x00SIT" + + "\x00SKK\x00SLL\x09SOS\x09SRD\x00SRG\x00SSP\x00STD\x09SUR\x00SVC\x00SYP" + + "\x09SZL\x00THB\x00TJR\x00TJS\x00TMM\x09TMT\x00TND\x1bTOP\x00TPE\x00TRL" + + "\x09TRY\x00TTD\x00TWD\x08TZS\x09UAH\x00UAK\x00UGS\x00UGX\x09USD\x00USN" + + "\x00USS\x00UYI\x09UYP\x00UYU\x00UZS\x09VEB\x00VEF\x00VND\x09VNN\x00VUV" + + "\x09WST\x00XAF\x09XAG\x00XAU\x00XBA\x00XBB\x00XBC\x00XBD\x00XCD\x00XDR" + + "\x00XEU\x00XFO\x00XFU\x00XOF\x09XPD\x00XPF\x09XPT\x00XRE\x00XSU\x00XTS" + + "\x00XUA\x00XXX\x00YDD\x00YER\x09YUD\x00YUM\x00YUN\x00YUR\x00ZAL\x00ZAR" + + "\x00ZMK\x09ZMW\x00ZRN\x00ZRZ\x00ZWD\x09ZWL\x00ZWR\x00\xff\xff\xff\xff" -const numCurrencies = 297 +const numCurrencies = 298 type toCurrency struct { region uint16 @@ -84,261 +84,261 @@ type toCurrency struct { } var regionToCurrency = []toCurrency{ // 255 elements - 0: {region: 0x4143, code: 0xdb}, - 1: {region: 0x4144, code: 0x5c}, + 0: {region: 0x4143, code: 0xdc}, + 1: {region: 0x4144, code: 0x5d}, 2: {region: 0x4145, code: 0x2}, 3: {region: 0x4146, code: 0x4}, - 4: {region: 0x4147, code: 0x10d}, - 5: {region: 0x4149, code: 0x10d}, + 4: {region: 0x4147, code: 0x10e}, + 5: {region: 0x4149, code: 0x10e}, 6: {region: 0x414c, code: 0x6}, 7: {region: 0x414d, code: 0x7}, 8: {region: 0x414f, code: 0x9}, 9: {region: 0x4152, code: 0x11}, - 10: {region: 0x4153, code: 0xf9}, - 11: {region: 0x4154, code: 0x5c}, + 10: {region: 0x4153, code: 0xfa}, + 11: {region: 0x4154, code: 0x5d}, 12: {region: 0x4155, code: 0x13}, 13: {region: 0x4157, code: 0x14}, - 14: {region: 0x4158, code: 0x5c}, + 14: {region: 0x4158, code: 0x5d}, 15: {region: 0x415a, code: 0x16}, 16: {region: 0x4241, code: 0x18}, 17: {region: 0x4242, code: 0x1a}, 18: {region: 0x4244, code: 0x1b}, - 19: {region: 0x4245, code: 0x5c}, - 20: {region: 0x4246, code: 0x112}, + 19: {region: 0x4245, code: 0x5d}, + 20: {region: 0x4246, code: 0x113}, 21: {region: 0x4247, code: 0x21}, 22: {region: 0x4248, code: 0x23}, 23: {region: 0x4249, code: 0x24}, - 24: {region: 0x424a, code: 0x112}, - 25: {region: 0x424c, code: 0x5c}, + 24: {region: 0x424a, code: 0x113}, + 25: {region: 0x424c, code: 0x5d}, 26: {region: 0x424d, code: 0x25}, 27: {region: 0x424e, code: 0x26}, 28: {region: 0x424f, code: 0x27}, - 29: {region: 0x4251, code: 0xf9}, + 29: {region: 0x4251, code: 0xfa}, 30: {region: 0x4252, code: 0x2e}, 31: {region: 0x4253, code: 0x32}, 32: {region: 0x4254, code: 0x33}, - 33: {region: 0x4256, code: 0xbc}, + 33: {region: 0x4256, code: 0xbd}, 34: {region: 0x4257, code: 0x35}, 35: {region: 0x4259, code: 0x37}, - 36: {region: 0x425a, code: 0x38}, - 37: {region: 0x4341, code: 0x39}, + 36: {region: 0x425a, code: 0x39}, + 37: {region: 0x4341, code: 0x3a}, 38: {region: 0x4343, code: 0x13}, - 39: {region: 0x4344, code: 0x3a}, - 40: {region: 0x4346, code: 0x106}, - 41: {region: 0x4347, code: 0x106}, - 42: {region: 0x4348, code: 0x3c}, - 43: {region: 0x4349, code: 0x112}, - 44: {region: 0x434b, code: 0xbe}, - 45: {region: 0x434c, code: 0x40}, - 46: {region: 0x434d, code: 0x106}, - 47: {region: 0x434e, code: 0x42}, - 48: {region: 0x434f, code: 0x43}, - 49: {region: 0x4352, code: 0x45}, - 50: {region: 0x4355, code: 0x49}, - 51: {region: 0x4356, code: 0x4a}, + 39: {region: 0x4344, code: 0x3b}, + 40: {region: 0x4346, code: 0x107}, + 41: {region: 0x4347, code: 0x107}, + 42: {region: 0x4348, code: 0x3d}, + 43: {region: 0x4349, code: 0x113}, + 44: {region: 0x434b, code: 0xbf}, + 45: {region: 0x434c, code: 0x41}, + 46: {region: 0x434d, code: 0x107}, + 47: {region: 0x434e, code: 0x43}, + 48: {region: 0x434f, code: 0x44}, + 49: {region: 0x4352, code: 0x46}, + 50: {region: 0x4355, code: 0x4a}, + 51: {region: 0x4356, code: 0x4b}, 52: {region: 0x4357, code: 0x8}, 53: {region: 0x4358, code: 0x13}, - 54: {region: 0x4359, code: 0x5c}, - 55: {region: 0x435a, code: 0x4c}, - 56: {region: 0x4445, code: 0x5c}, - 57: {region: 0x4447, code: 0xf9}, - 58: {region: 0x444a, code: 0x4f}, - 59: {region: 0x444b, code: 0x50}, - 60: {region: 0x444d, code: 0x10d}, - 61: {region: 0x444f, code: 0x51}, - 62: {region: 0x445a, code: 0x52}, - 63: {region: 0x4541, code: 0x5c}, - 64: {region: 0x4543, code: 0xf9}, - 65: {region: 0x4545, code: 0x5c}, - 66: {region: 0x4547, code: 0x56}, - 67: {region: 0x4548, code: 0x9c}, - 68: {region: 0x4552, code: 0x57}, - 69: {region: 0x4553, code: 0x5c}, - 70: {region: 0x4554, code: 0x5b}, - 71: {region: 0x4555, code: 0x5c}, - 72: {region: 0x4649, code: 0x5c}, - 73: {region: 0x464a, code: 0x5e}, - 74: {region: 0x464b, code: 0x5f}, - 75: {region: 0x464d, code: 0xf9}, - 76: {region: 0x464f, code: 0x50}, - 77: {region: 0x4652, code: 0x5c}, - 78: {region: 0x4741, code: 0x106}, - 79: {region: 0x4742, code: 0x61}, - 80: {region: 0x4744, code: 0x10d}, - 81: {region: 0x4745, code: 0x63}, - 82: {region: 0x4746, code: 0x5c}, - 83: {region: 0x4747, code: 0x61}, - 84: {region: 0x4748, code: 0x65}, - 85: {region: 0x4749, code: 0x66}, - 86: {region: 0x474c, code: 0x50}, - 87: {region: 0x474d, code: 0x67}, - 88: {region: 0x474e, code: 0x68}, - 89: {region: 0x4750, code: 0x5c}, - 90: {region: 0x4751, code: 0x106}, - 91: {region: 0x4752, code: 0x5c}, - 92: {region: 0x4753, code: 0x61}, - 93: {region: 0x4754, code: 0x6c}, - 94: {region: 0x4755, code: 0xf9}, - 95: {region: 0x4757, code: 0x112}, - 96: {region: 0x4759, code: 0x6f}, - 97: {region: 0x484b, code: 0x70}, + 54: {region: 0x4359, code: 0x5d}, + 55: {region: 0x435a, code: 0x4d}, + 56: {region: 0x4445, code: 0x5d}, + 57: {region: 0x4447, code: 0xfa}, + 58: {region: 0x444a, code: 0x50}, + 59: {region: 0x444b, code: 0x51}, + 60: {region: 0x444d, code: 0x10e}, + 61: {region: 0x444f, code: 0x52}, + 62: {region: 0x445a, code: 0x53}, + 63: {region: 0x4541, code: 0x5d}, + 64: {region: 0x4543, code: 0xfa}, + 65: {region: 0x4545, code: 0x5d}, + 66: {region: 0x4547, code: 0x57}, + 67: {region: 0x4548, code: 0x9d}, + 68: {region: 0x4552, code: 0x58}, + 69: {region: 0x4553, code: 0x5d}, + 70: {region: 0x4554, code: 0x5c}, + 71: {region: 0x4555, code: 0x5d}, + 72: {region: 0x4649, code: 0x5d}, + 73: {region: 0x464a, code: 0x5f}, + 74: {region: 0x464b, code: 0x60}, + 75: {region: 0x464d, code: 0xfa}, + 76: {region: 0x464f, code: 0x51}, + 77: {region: 0x4652, code: 0x5d}, + 78: {region: 0x4741, code: 0x107}, + 79: {region: 0x4742, code: 0x62}, + 80: {region: 0x4744, code: 0x10e}, + 81: {region: 0x4745, code: 0x64}, + 82: {region: 0x4746, code: 0x5d}, + 83: {region: 0x4747, code: 0x62}, + 84: {region: 0x4748, code: 0x66}, + 85: {region: 0x4749, code: 0x67}, + 86: {region: 0x474c, code: 0x51}, + 87: {region: 0x474d, code: 0x68}, + 88: {region: 0x474e, code: 0x69}, + 89: {region: 0x4750, code: 0x5d}, + 90: {region: 0x4751, code: 0x107}, + 91: {region: 0x4752, code: 0x5d}, + 92: {region: 0x4753, code: 0x62}, + 93: {region: 0x4754, code: 0x6d}, + 94: {region: 0x4755, code: 0xfa}, + 95: {region: 0x4757, code: 0x113}, + 96: {region: 0x4759, code: 0x70}, + 97: {region: 0x484b, code: 0x71}, 98: {region: 0x484d, code: 0x13}, - 99: {region: 0x484e, code: 0x71}, - 100: {region: 0x4852, code: 0x73}, - 101: {region: 0x4854, code: 0x74}, - 102: {region: 0x4855, code: 0x75}, - 103: {region: 0x4943, code: 0x5c}, - 104: {region: 0x4944, code: 0x76}, - 105: {region: 0x4945, code: 0x5c}, - 106: {region: 0x494c, code: 0x7a}, - 107: {region: 0x494d, code: 0x61}, - 108: {region: 0x494e, code: 0x7b}, - 109: {region: 0x494f, code: 0xf9}, - 110: {region: 0x4951, code: 0x7c}, - 111: {region: 0x4952, code: 0x7d}, - 112: {region: 0x4953, code: 0x7f}, - 113: {region: 0x4954, code: 0x5c}, - 114: {region: 0x4a45, code: 0x61}, - 115: {region: 0x4a4d, code: 0x81}, - 116: {region: 0x4a4f, code: 0x82}, - 117: {region: 0x4a50, code: 0x83}, - 118: {region: 0x4b45, code: 0x84}, - 119: {region: 0x4b47, code: 0x85}, - 120: {region: 0x4b48, code: 0x86}, + 99: {region: 0x484e, code: 0x72}, + 100: {region: 0x4852, code: 0x74}, + 101: {region: 0x4854, code: 0x75}, + 102: {region: 0x4855, code: 0x76}, + 103: {region: 0x4943, code: 0x5d}, + 104: {region: 0x4944, code: 0x77}, + 105: {region: 0x4945, code: 0x5d}, + 106: {region: 0x494c, code: 0x7b}, + 107: {region: 0x494d, code: 0x62}, + 108: {region: 0x494e, code: 0x7c}, + 109: {region: 0x494f, code: 0xfa}, + 110: {region: 0x4951, code: 0x7d}, + 111: {region: 0x4952, code: 0x7e}, + 112: {region: 0x4953, code: 0x80}, + 113: {region: 0x4954, code: 0x5d}, + 114: {region: 0x4a45, code: 0x62}, + 115: {region: 0x4a4d, code: 0x82}, + 116: {region: 0x4a4f, code: 0x83}, + 117: {region: 0x4a50, code: 0x84}, + 118: {region: 0x4b45, code: 0x85}, + 119: {region: 0x4b47, code: 0x86}, + 120: {region: 0x4b48, code: 0x87}, 121: {region: 0x4b49, code: 0x13}, - 122: {region: 0x4b4d, code: 0x87}, - 123: {region: 0x4b4e, code: 0x10d}, - 124: {region: 0x4b50, code: 0x88}, - 125: {region: 0x4b52, code: 0x8b}, - 126: {region: 0x4b57, code: 0x8c}, - 127: {region: 0x4b59, code: 0x8d}, - 128: {region: 0x4b5a, code: 0x8e}, - 129: {region: 0x4c41, code: 0x8f}, - 130: {region: 0x4c42, code: 0x90}, - 131: {region: 0x4c43, code: 0x10d}, - 132: {region: 0x4c49, code: 0x3c}, - 133: {region: 0x4c4b, code: 0x91}, - 134: {region: 0x4c52, code: 0x92}, - 135: {region: 0x4c53, code: 0x122}, - 136: {region: 0x4c54, code: 0x5c}, - 137: {region: 0x4c55, code: 0x5c}, - 138: {region: 0x4c56, code: 0x5c}, - 139: {region: 0x4c59, code: 0x9b}, - 140: {region: 0x4d41, code: 0x9c}, - 141: {region: 0x4d43, code: 0x5c}, - 142: {region: 0x4d44, code: 0xa0}, - 143: {region: 0x4d45, code: 0x5c}, - 144: {region: 0x4d46, code: 0x5c}, - 145: {region: 0x4d47, code: 0xa1}, - 146: {region: 0x4d48, code: 0xf9}, - 147: {region: 0x4d4b, code: 0xa3}, - 148: {region: 0x4d4c, code: 0x112}, - 149: {region: 0x4d4d, code: 0xa6}, - 150: {region: 0x4d4e, code: 0xa7}, - 151: {region: 0x4d4f, code: 0xa8}, - 152: {region: 0x4d50, code: 0xf9}, - 153: {region: 0x4d51, code: 0x5c}, - 154: {region: 0x4d52, code: 0xa9}, - 155: {region: 0x4d53, code: 0x10d}, - 156: {region: 0x4d54, code: 0x5c}, - 157: {region: 0x4d55, code: 0xac}, - 158: {region: 0x4d56, code: 0xae}, - 159: {region: 0x4d57, code: 0xaf}, - 160: {region: 0x4d58, code: 0xb0}, - 161: {region: 0x4d59, code: 0xb3}, - 162: {region: 0x4d5a, code: 0xb6}, - 163: {region: 0x4e41, code: 0xb7}, - 164: {region: 0x4e43, code: 0x114}, - 165: {region: 0x4e45, code: 0x112}, + 122: {region: 0x4b4d, code: 0x88}, + 123: {region: 0x4b4e, code: 0x10e}, + 124: {region: 0x4b50, code: 0x89}, + 125: {region: 0x4b52, code: 0x8c}, + 126: {region: 0x4b57, code: 0x8d}, + 127: {region: 0x4b59, code: 0x8e}, + 128: {region: 0x4b5a, code: 0x8f}, + 129: {region: 0x4c41, code: 0x90}, + 130: {region: 0x4c42, code: 0x91}, + 131: {region: 0x4c43, code: 0x10e}, + 132: {region: 0x4c49, code: 0x3d}, + 133: {region: 0x4c4b, code: 0x92}, + 134: {region: 0x4c52, code: 0x93}, + 135: {region: 0x4c53, code: 0x123}, + 136: {region: 0x4c54, code: 0x5d}, + 137: {region: 0x4c55, code: 0x5d}, + 138: {region: 0x4c56, code: 0x5d}, + 139: {region: 0x4c59, code: 0x9c}, + 140: {region: 0x4d41, code: 0x9d}, + 141: {region: 0x4d43, code: 0x5d}, + 142: {region: 0x4d44, code: 0xa1}, + 143: {region: 0x4d45, code: 0x5d}, + 144: {region: 0x4d46, code: 0x5d}, + 145: {region: 0x4d47, code: 0xa2}, + 146: {region: 0x4d48, code: 0xfa}, + 147: {region: 0x4d4b, code: 0xa4}, + 148: {region: 0x4d4c, code: 0x113}, + 149: {region: 0x4d4d, code: 0xa7}, + 150: {region: 0x4d4e, code: 0xa8}, + 151: {region: 0x4d4f, code: 0xa9}, + 152: {region: 0x4d50, code: 0xfa}, + 153: {region: 0x4d51, code: 0x5d}, + 154: {region: 0x4d52, code: 0xaa}, + 155: {region: 0x4d53, code: 0x10e}, + 156: {region: 0x4d54, code: 0x5d}, + 157: {region: 0x4d55, code: 0xad}, + 158: {region: 0x4d56, code: 0xaf}, + 159: {region: 0x4d57, code: 0xb0}, + 160: {region: 0x4d58, code: 0xb1}, + 161: {region: 0x4d59, code: 0xb4}, + 162: {region: 0x4d5a, code: 0xb7}, + 163: {region: 0x4e41, code: 0xb8}, + 164: {region: 0x4e43, code: 0x115}, + 165: {region: 0x4e45, code: 0x113}, 166: {region: 0x4e46, code: 0x13}, - 167: {region: 0x4e47, code: 0xb8}, - 168: {region: 0x4e49, code: 0xba}, - 169: {region: 0x4e4c, code: 0x5c}, - 170: {region: 0x4e4f, code: 0xbc}, - 171: {region: 0x4e50, code: 0xbd}, + 167: {region: 0x4e47, code: 0xb9}, + 168: {region: 0x4e49, code: 0xbb}, + 169: {region: 0x4e4c, code: 0x5d}, + 170: {region: 0x4e4f, code: 0xbd}, + 171: {region: 0x4e50, code: 0xbe}, 172: {region: 0x4e52, code: 0x13}, - 173: {region: 0x4e55, code: 0xbe}, - 174: {region: 0x4e5a, code: 0xbe}, - 175: {region: 0x4f4d, code: 0xbf}, - 176: {region: 0x5041, code: 0xc0}, - 177: {region: 0x5045, code: 0xc2}, - 178: {region: 0x5046, code: 0x114}, - 179: {region: 0x5047, code: 0xc4}, - 180: {region: 0x5048, code: 0xc5}, - 181: {region: 0x504b, code: 0xc6}, - 182: {region: 0x504c, code: 0xc7}, - 183: {region: 0x504d, code: 0x5c}, - 184: {region: 0x504e, code: 0xbe}, - 185: {region: 0x5052, code: 0xf9}, - 186: {region: 0x5053, code: 0x7a}, - 187: {region: 0x5054, code: 0x5c}, - 188: {region: 0x5057, code: 0xf9}, - 189: {region: 0x5059, code: 0xca}, - 190: {region: 0x5141, code: 0xcb}, - 191: {region: 0x5245, code: 0x5c}, - 192: {region: 0x524f, code: 0xce}, - 193: {region: 0x5253, code: 0xcf}, - 194: {region: 0x5255, code: 0xd0}, - 195: {region: 0x5257, code: 0xd2}, - 196: {region: 0x5341, code: 0xd3}, - 197: {region: 0x5342, code: 0xd4}, - 198: {region: 0x5343, code: 0xd5}, - 199: {region: 0x5344, code: 0xd7}, - 200: {region: 0x5345, code: 0xd9}, - 201: {region: 0x5347, code: 0xda}, - 202: {region: 0x5348, code: 0xdb}, - 203: {region: 0x5349, code: 0x5c}, - 204: {region: 0x534a, code: 0xbc}, - 205: {region: 0x534b, code: 0x5c}, - 206: {region: 0x534c, code: 0xde}, - 207: {region: 0x534d, code: 0x5c}, - 208: {region: 0x534e, code: 0x112}, - 209: {region: 0x534f, code: 0xdf}, - 210: {region: 0x5352, code: 0xe0}, - 211: {region: 0x5353, code: 0xe2}, - 212: {region: 0x5354, code: 0xe3}, - 213: {region: 0x5356, code: 0xf9}, + 173: {region: 0x4e55, code: 0xbf}, + 174: {region: 0x4e5a, code: 0xbf}, + 175: {region: 0x4f4d, code: 0xc0}, + 176: {region: 0x5041, code: 0xc1}, + 177: {region: 0x5045, code: 0xc3}, + 178: {region: 0x5046, code: 0x115}, + 179: {region: 0x5047, code: 0xc5}, + 180: {region: 0x5048, code: 0xc6}, + 181: {region: 0x504b, code: 0xc7}, + 182: {region: 0x504c, code: 0xc8}, + 183: {region: 0x504d, code: 0x5d}, + 184: {region: 0x504e, code: 0xbf}, + 185: {region: 0x5052, code: 0xfa}, + 186: {region: 0x5053, code: 0x7b}, + 187: {region: 0x5054, code: 0x5d}, + 188: {region: 0x5057, code: 0xfa}, + 189: {region: 0x5059, code: 0xcb}, + 190: {region: 0x5141, code: 0xcc}, + 191: {region: 0x5245, code: 0x5d}, + 192: {region: 0x524f, code: 0xcf}, + 193: {region: 0x5253, code: 0xd0}, + 194: {region: 0x5255, code: 0xd1}, + 195: {region: 0x5257, code: 0xd3}, + 196: {region: 0x5341, code: 0xd4}, + 197: {region: 0x5342, code: 0xd5}, + 198: {region: 0x5343, code: 0xd6}, + 199: {region: 0x5344, code: 0xd8}, + 200: {region: 0x5345, code: 0xda}, + 201: {region: 0x5347, code: 0xdb}, + 202: {region: 0x5348, code: 0xdc}, + 203: {region: 0x5349, code: 0x5d}, + 204: {region: 0x534a, code: 0xbd}, + 205: {region: 0x534b, code: 0x5d}, + 206: {region: 0x534c, code: 0xdf}, + 207: {region: 0x534d, code: 0x5d}, + 208: {region: 0x534e, code: 0x113}, + 209: {region: 0x534f, code: 0xe0}, + 210: {region: 0x5352, code: 0xe1}, + 211: {region: 0x5353, code: 0xe3}, + 212: {region: 0x5354, code: 0xe4}, + 213: {region: 0x5356, code: 0xfa}, 214: {region: 0x5358, code: 0x8}, - 215: {region: 0x5359, code: 0xe6}, - 216: {region: 0x535a, code: 0xe7}, - 217: {region: 0x5441, code: 0x61}, - 218: {region: 0x5443, code: 0xf9}, - 219: {region: 0x5444, code: 0x106}, - 220: {region: 0x5446, code: 0x5c}, - 221: {region: 0x5447, code: 0x112}, - 222: {region: 0x5448, code: 0xe8}, - 223: {region: 0x544a, code: 0xea}, - 224: {region: 0x544b, code: 0xbe}, - 225: {region: 0x544c, code: 0xf9}, - 226: {region: 0x544d, code: 0xec}, - 227: {region: 0x544e, code: 0xed}, - 228: {region: 0x544f, code: 0xee}, - 229: {region: 0x5452, code: 0xf1}, - 230: {region: 0x5454, code: 0xf2}, + 215: {region: 0x5359, code: 0xe7}, + 216: {region: 0x535a, code: 0xe8}, + 217: {region: 0x5441, code: 0x62}, + 218: {region: 0x5443, code: 0xfa}, + 219: {region: 0x5444, code: 0x107}, + 220: {region: 0x5446, code: 0x5d}, + 221: {region: 0x5447, code: 0x113}, + 222: {region: 0x5448, code: 0xe9}, + 223: {region: 0x544a, code: 0xeb}, + 224: {region: 0x544b, code: 0xbf}, + 225: {region: 0x544c, code: 0xfa}, + 226: {region: 0x544d, code: 0xed}, + 227: {region: 0x544e, code: 0xee}, + 228: {region: 0x544f, code: 0xef}, + 229: {region: 0x5452, code: 0xf2}, + 230: {region: 0x5454, code: 0xf3}, 231: {region: 0x5456, code: 0x13}, - 232: {region: 0x5457, code: 0xf3}, - 233: {region: 0x545a, code: 0xf4}, - 234: {region: 0x5541, code: 0xf5}, - 235: {region: 0x5547, code: 0xf8}, - 236: {region: 0x554d, code: 0xf9}, - 237: {region: 0x5553, code: 0xf9}, - 238: {region: 0x5559, code: 0xfe}, - 239: {region: 0x555a, code: 0xff}, - 240: {region: 0x5641, code: 0x5c}, - 241: {region: 0x5643, code: 0x10d}, - 242: {region: 0x5645, code: 0x101}, - 243: {region: 0x5647, code: 0xf9}, - 244: {region: 0x5649, code: 0xf9}, - 245: {region: 0x564e, code: 0x102}, - 246: {region: 0x5655, code: 0x104}, - 247: {region: 0x5746, code: 0x114}, - 248: {region: 0x5753, code: 0x105}, - 249: {region: 0x584b, code: 0x5c}, - 250: {region: 0x5945, code: 0x11c}, - 251: {region: 0x5954, code: 0x5c}, - 252: {region: 0x5a41, code: 0x122}, - 253: {region: 0x5a4d, code: 0x124}, - 254: {region: 0x5a57, code: 0xf9}, + 232: {region: 0x5457, code: 0xf4}, + 233: {region: 0x545a, code: 0xf5}, + 234: {region: 0x5541, code: 0xf6}, + 235: {region: 0x5547, code: 0xf9}, + 236: {region: 0x554d, code: 0xfa}, + 237: {region: 0x5553, code: 0xfa}, + 238: {region: 0x5559, code: 0xff}, + 239: {region: 0x555a, code: 0x100}, + 240: {region: 0x5641, code: 0x5d}, + 241: {region: 0x5643, code: 0x10e}, + 242: {region: 0x5645, code: 0x102}, + 243: {region: 0x5647, code: 0xfa}, + 244: {region: 0x5649, code: 0xfa}, + 245: {region: 0x564e, code: 0x103}, + 246: {region: 0x5655, code: 0x105}, + 247: {region: 0x5746, code: 0x115}, + 248: {region: 0x5753, code: 0x106}, + 249: {region: 0x584b, code: 0x5d}, + 250: {region: 0x5945, code: 0x11d}, + 251: {region: 0x5954, code: 0x5d}, + 252: {region: 0x5a41, code: 0x123}, + 253: {region: 0x5a4d, code: 0x125}, + 254: {region: 0x5a57, code: 0xfa}, } // Size: 1044 bytes type regionInfo struct { @@ -348,77 +348,77 @@ type regionInfo struct { to uint32 } -var regionData = []regionInfo{ // 492 elements - 0: {region: 0x4143, code: 0xdb, from: 0xf7021, to: 0x0}, - 1: {region: 0x4144, code: 0x5c, from: 0xf9e21, to: 0x0}, - 2: {region: 0x4144, code: 0x5a, from: 0xea221, to: 0xfa45c}, - 3: {region: 0x4144, code: 0x60, from: 0xf5021, to: 0xfa451}, +var regionData = []regionInfo{ // 493 elements + 0: {region: 0x4143, code: 0xdc, from: 0xf7021, to: 0x0}, + 1: {region: 0x4144, code: 0x5d, from: 0xf9e21, to: 0x0}, + 2: {region: 0x4144, code: 0x5b, from: 0xea221, to: 0xfa45c}, + 3: {region: 0x4144, code: 0x61, from: 0xf5021, to: 0xfa451}, 4: {region: 0x4144, code: 0x1, from: 0xf2021, to: 0xfa39f}, 5: {region: 0x4145, code: 0x2, from: 0xf6ab3, to: 0x0}, 6: {region: 0x4146, code: 0x4, from: 0xfa547, to: 0x0}, 7: {region: 0x4146, code: 0x3, from: 0xf0e6e, to: 0xfa59f}, - 8: {region: 0x4147, code: 0x10d, from: 0xf5b46, to: 0x0}, - 9: {region: 0x4149, code: 0x10d, from: 0xf5b46, to: 0x0}, + 8: {region: 0x4147, code: 0x10e, from: 0xf5b46, to: 0x0}, + 9: {region: 0x4149, code: 0x10e, from: 0xf5b46, to: 0x0}, 10: {region: 0x414c, code: 0x6, from: 0xf5b10, to: 0x0}, 11: {region: 0x414c, code: 0x5, from: 0xf3561, to: 0xf5b10}, 12: {region: 0x414d, code: 0x7, from: 0xf9376, to: 0x0}, - 13: {region: 0x414d, code: 0xd1, from: 0xf8f99, to: 0xf9376}, - 14: {region: 0x414d, code: 0xe4, from: 0xf5221, to: 0xf8f99}, + 13: {region: 0x414d, code: 0xd2, from: 0xf8f99, to: 0xf9376}, + 14: {region: 0x414d, code: 0xe5, from: 0xf5221, to: 0xf8f99}, 15: {region: 0x414f, code: 0x9, from: 0xf9f8d, to: 0x0}, 16: {region: 0x414f, code: 0xc, from: 0xf96e1, to: 0xfa041}, 17: {region: 0x414f, code: 0xb, from: 0xf8d39, to: 0xfa041}, 18: {region: 0x414f, code: 0xa, from: 0xf7228, to: 0xf8e61}, - 19: {region: 0x4151, code: 0x811a, from: 0x0, to: 0x0}, + 19: {region: 0x4151, code: 0x811b, from: 0x0, to: 0x0}, 20: {region: 0x4152, code: 0x11, from: 0xf9021, to: 0x0}, 21: {region: 0x4152, code: 0xd, from: 0xf82ce, to: 0xf9021}, 22: {region: 0x4152, code: 0x10, from: 0xf7ec1, to: 0xf82ce}, 23: {region: 0x4152, code: 0xe, from: 0xf6421, to: 0xf7ec1}, 24: {region: 0x4152, code: 0xf, from: 0xeb365, to: 0xf6421}, - 25: {region: 0x4153, code: 0xf9, from: 0xee0f0, to: 0x0}, - 26: {region: 0x4154, code: 0x5c, from: 0xf9e21, to: 0x0}, + 25: {region: 0x4153, code: 0xfa, from: 0xee0f0, to: 0x0}, + 26: {region: 0x4154, code: 0x5d, from: 0xf9e21, to: 0x0}, 27: {region: 0x4154, code: 0x12, from: 0xf3784, to: 0xfa45c}, 28: {region: 0x4155, code: 0x13, from: 0xf5c4e, to: 0x0}, 29: {region: 0x4157, code: 0x14, from: 0xf8421, to: 0x0}, 30: {region: 0x4157, code: 0x8, from: 0xf28aa, to: 0xf8421}, - 31: {region: 0x4158, code: 0x5c, from: 0xf9e21, to: 0x0}, + 31: {region: 0x4158, code: 0x5d, from: 0xf9e21, to: 0x0}, 32: {region: 0x415a, code: 0x16, from: 0xfac21, to: 0x0}, 33: {region: 0x415a, code: 0x15, from: 0xf9376, to: 0xfad9f}, - 34: {region: 0x415a, code: 0xd1, from: 0xf8f99, to: 0xf9421}, - 35: {region: 0x415a, code: 0xe4, from: 0xf5221, to: 0xf8f99}, + 34: {region: 0x415a, code: 0xd2, from: 0xf8f99, to: 0xf9421}, + 35: {region: 0x415a, code: 0xe5, from: 0xf5221, to: 0xf8f99}, 36: {region: 0x4241, code: 0x18, from: 0xf9621, to: 0x0}, 37: {region: 0x4241, code: 0x19, from: 0xf950f, to: 0xf9ae1}, 38: {region: 0x4241, code: 0x17, from: 0xf90e1, to: 0xf950f}, - 39: {region: 0x4241, code: 0x120, from: 0xf90e1, to: 0xf9341}, - 40: {region: 0x4241, code: 0x11f, from: 0xf8c21, to: 0xf90e1}, - 41: {region: 0x4241, code: 0x11d, from: 0xf5c21, to: 0xf8c21}, + 39: {region: 0x4241, code: 0x121, from: 0xf90e1, to: 0xf9341}, + 40: {region: 0x4241, code: 0x120, from: 0xf8c21, to: 0xf90e1}, + 41: {region: 0x4241, code: 0x11e, from: 0xf5c21, to: 0xf8c21}, 42: {region: 0x4242, code: 0x1a, from: 0xf6b83, to: 0x0}, - 43: {region: 0x4242, code: 0x10d, from: 0xf5b46, to: 0xf6b83}, + 43: {region: 0x4242, code: 0x10e, from: 0xf5b46, to: 0xf6b83}, 44: {region: 0x4244, code: 0x1b, from: 0xf6821, to: 0x0}, - 45: {region: 0x4244, code: 0xc6, from: 0xf3881, to: 0xf6821}, - 46: {region: 0x4244, code: 0x7b, from: 0xe5711, to: 0xf3881}, - 47: {region: 0x4245, code: 0x5c, from: 0xf9e21, to: 0x0}, + 45: {region: 0x4244, code: 0xc7, from: 0xf3881, to: 0xf6821}, + 46: {region: 0x4244, code: 0x7c, from: 0xe5711, to: 0xf3881}, + 47: {region: 0x4245, code: 0x5d, from: 0xf9e21, to: 0x0}, 48: {region: 0x4245, code: 0x1d, from: 0xe4e47, to: 0xfa45c}, - 49: {region: 0x4245, code: 0xbb, from: 0xe318f, to: 0xe4e47}, + 49: {region: 0x4245, code: 0xbc, from: 0xe318f, to: 0xe4e47}, 50: {region: 0x4245, code: 0x801e, from: 0xf6421, to: 0xf8c65}, 51: {region: 0x4245, code: 0x801c, from: 0xf6421, to: 0xf8c65}, - 52: {region: 0x4246, code: 0x112, from: 0xf8104, to: 0x0}, + 52: {region: 0x4246, code: 0x113, from: 0xf8104, to: 0x0}, 53: {region: 0x4247, code: 0x21, from: 0xf9ee5, to: 0x0}, 54: {region: 0x4247, code: 0x1f, from: 0xf5421, to: 0xf9ee5}, 55: {region: 0x4247, code: 0x20, from: 0xf40ac, to: 0xf5421}, 56: {region: 0x4247, code: 0x22, from: 0xeaee8, to: 0xf40ac}, 57: {region: 0x4248, code: 0x23, from: 0xf5b50, to: 0x0}, 58: {region: 0x4249, code: 0x24, from: 0xf58b3, to: 0x0}, - 59: {region: 0x424a, code: 0x112, from: 0xf6f7e, to: 0x0}, - 60: {region: 0x424c, code: 0x5c, from: 0xf9e21, to: 0x0}, - 61: {region: 0x424c, code: 0x60, from: 0xf5021, to: 0xfa451}, + 59: {region: 0x424a, code: 0x113, from: 0xf6f7e, to: 0x0}, + 60: {region: 0x424c, code: 0x5d, from: 0xf9e21, to: 0x0}, + 61: {region: 0x424c, code: 0x61, from: 0xf5021, to: 0xfa451}, 62: {region: 0x424d, code: 0x25, from: 0xf6446, to: 0x0}, 63: {region: 0x424e, code: 0x26, from: 0xf5ecc, to: 0x0}, - 64: {region: 0x424e, code: 0xb3, from: 0xf5730, to: 0xf5ecc}, + 64: {region: 0x424e, code: 0xb4, from: 0xf5730, to: 0xf5ecc}, 65: {region: 0x424f, code: 0x27, from: 0xf8621, to: 0x0}, 66: {region: 0x424f, code: 0x29, from: 0xf5621, to: 0xf859f}, 67: {region: 0x424f, code: 0x28, from: 0xe8ed7, to: 0xf5621}, 68: {region: 0x424f, code: 0x802a, from: 0x0, to: 0x0}, - 69: {region: 0x4251, code: 0xf9, from: 0xfb621, to: 0x0}, + 69: {region: 0x4251, code: 0xfa, from: 0xfb621, to: 0x0}, 70: {region: 0x4251, code: 0x8, from: 0xfb54a, to: 0xfb621}, 71: {region: 0x4252, code: 0x2e, from: 0xf94e1, to: 0x0}, 72: {region: 0x4252, code: 0x30, from: 0xf9301, to: 0xf94e1}, @@ -429,1677 +429,1670 @@ var regionData = []regionInfo{ // 492 elements 77: {region: 0x4252, code: 0x31, from: 0xf2d61, to: 0xf5e4d}, 78: {region: 0x4253, code: 0x32, from: 0xf5cb9, to: 0x0}, 79: {region: 0x4254, code: 0x33, from: 0xf6c90, to: 0x0}, - 80: {region: 0x4254, code: 0x7b, from: 0xee621, to: 0x0}, + 80: {region: 0x4254, code: 0x7c, from: 0xee621, to: 0x0}, 81: {region: 0x4255, code: 0x34, from: 0xf40e1, to: 0xf8ad2}, - 82: {region: 0x4256, code: 0xbc, from: 0xee2c7, to: 0x0}, + 82: {region: 0x4256, code: 0xbd, from: 0xee2c7, to: 0x0}, 83: {region: 0x4257, code: 0x35, from: 0xf7117, to: 0x0}, - 84: {region: 0x4257, code: 0x122, from: 0xf524e, to: 0xf7117}, - 85: {region: 0x4259, code: 0x37, from: 0xfa021, to: 0x0}, - 86: {region: 0x4259, code: 0x36, from: 0xf9501, to: 0xfa19f}, - 87: {region: 0x4259, code: 0xd1, from: 0xf8f99, to: 0xf9568}, - 88: {region: 0x4259, code: 0xe4, from: 0xf5221, to: 0xf8f99}, - 89: {region: 0x425a, code: 0x38, from: 0xf6c21, to: 0x0}, - 90: {region: 0x4341, code: 0x39, from: 0xe8421, to: 0x0}, - 91: {region: 0x4343, code: 0x13, from: 0xf5c4e, to: 0x0}, - 92: {region: 0x4344, code: 0x3a, from: 0xf9ce1, to: 0x0}, - 93: {region: 0x4344, code: 0x125, from: 0xf9361, to: 0xf9ce1}, - 94: {region: 0x4344, code: 0x126, from: 0xf675b, to: 0xf9361}, - 95: {region: 0x4346, code: 0x106, from: 0xf9221, to: 0x0}, - 96: {region: 0x4347, code: 0x106, from: 0xf9221, to: 0x0}, - 97: {region: 0x4348, code: 0x3c, from: 0xe0e71, to: 0x0}, - 98: {region: 0x4348, code: 0x803b, from: 0x0, to: 0x0}, - 99: {region: 0x4348, code: 0x803d, from: 0x0, to: 0x0}, - 100: {region: 0x4349, code: 0x112, from: 0xf4d84, to: 0x0}, - 101: {region: 0x434b, code: 0xbe, from: 0xf5eea, to: 0x0}, - 102: {region: 0x434c, code: 0x40, from: 0xf6f3d, to: 0x0}, - 103: {region: 0x434c, code: 0x3e, from: 0xf5021, to: 0xf6f3d}, - 104: {region: 0x434c, code: 0x803f, from: 0x0, to: 0x0}, - 105: {region: 0x434d, code: 0x106, from: 0xf6a81, to: 0x0}, - 106: {region: 0x434e, code: 0x42, from: 0xf4261, to: 0x0}, - 107: {region: 0x434e, code: 0x8041, from: 0xf7621, to: 0xf9d9f}, - 108: {region: 0x434f, code: 0x43, from: 0xee221, to: 0x0}, - 109: {region: 0x434f, code: 0x8044, from: 0x0, to: 0x0}, - 110: {region: 0x4350, code: 0x811a, from: 0x0, to: 0x0}, - 111: {region: 0x4352, code: 0x45, from: 0xed15a, to: 0x0}, - 112: {region: 0x4353, code: 0x46, from: 0xfa4af, to: 0xfacc3}, - 113: {region: 0x4353, code: 0x5c, from: 0xfa644, to: 0xfacc3}, - 114: {region: 0x4353, code: 0x11e, from: 0xf9438, to: 0xfa4af}, - 115: {region: 0x4355, code: 0x49, from: 0xe8621, to: 0x0}, - 116: {region: 0x4355, code: 0x48, from: 0xf9421, to: 0x0}, - 117: {region: 0x4355, code: 0xf9, from: 0xed621, to: 0xf4e21}, - 118: {region: 0x4356, code: 0x4a, from: 0xef421, to: 0x0}, - 119: {region: 0x4356, code: 0xc9, from: 0xeeeb6, to: 0xf6ee5}, - 120: {region: 0x4357, code: 0x8, from: 0xfb54a, to: 0x0}, - 121: {region: 0x4358, code: 0x13, from: 0xf5c4e, to: 0x0}, - 122: {region: 0x4359, code: 0x5c, from: 0xfb021, to: 0x0}, - 123: {region: 0x4359, code: 0x4b, from: 0xef52a, to: 0xfb03f}, - 124: {region: 0x435a, code: 0x4c, from: 0xf9221, to: 0x0}, - 125: {region: 0x435a, code: 0x47, from: 0xf42c1, to: 0xf9261}, - 126: {region: 0x4444, code: 0x4d, from: 0xf38f4, to: 0xf8d42}, - 127: {region: 0x4445, code: 0x5c, from: 0xf9e21, to: 0x0}, - 128: {region: 0x4445, code: 0x4e, from: 0xf38d4, to: 0xfa45c}, - 129: {region: 0x4447, code: 0xf9, from: 0xf5b68, to: 0x0}, - 130: {region: 0x444a, code: 0x4f, from: 0xf72db, to: 0x0}, - 131: {region: 0x444b, code: 0x50, from: 0xea2bb, to: 0x0}, - 132: {region: 0x444d, code: 0x10d, from: 0xf5b46, to: 0x0}, - 133: {region: 0x444f, code: 0x51, from: 0xf3741, to: 0x0}, - 134: {region: 0x444f, code: 0xf9, from: 0xee2d5, to: 0xf3741}, - 135: {region: 0x445a, code: 0x52, from: 0xf5881, to: 0x0}, - 136: {region: 0x4541, code: 0x5c, from: 0xf9e21, to: 0x0}, - 137: {region: 0x4543, code: 0xf9, from: 0xfa142, to: 0x0}, - 138: {region: 0x4543, code: 0x53, from: 0xeb881, to: 0xfa142}, - 139: {region: 0x4543, code: 0x8054, from: 0xf92b7, to: 0xfa029}, - 140: {region: 0x4545, code: 0x5c, from: 0xfb621, to: 0x0}, - 141: {region: 0x4545, code: 0x55, from: 0xf90d5, to: 0xfb59f}, - 142: {region: 0x4545, code: 0xe4, from: 0xf5221, to: 0xf90d4}, - 143: {region: 0x4547, code: 0x56, from: 0xebb6e, to: 0x0}, - 144: {region: 0x4548, code: 0x9c, from: 0xf705a, to: 0x0}, - 145: {region: 0x4552, code: 0x57, from: 0xf9b68, to: 0x0}, - 146: {region: 0x4552, code: 0x5b, from: 0xf92b8, to: 0xf9b68}, - 147: {region: 0x4553, code: 0x5c, from: 0xf9e21, to: 0x0}, - 148: {region: 0x4553, code: 0x5a, from: 0xe9953, to: 0xfa45c}, - 149: {region: 0x4553, code: 0x8058, from: 0xf7421, to: 0xf7b9f}, - 150: {region: 0x4553, code: 0x8059, from: 0xf6e21, to: 0xf959f}, - 151: {region: 0x4554, code: 0x5b, from: 0xf712f, to: 0x0}, - 152: {region: 0x4555, code: 0x5c, from: 0xf9e21, to: 0x0}, - 153: {region: 0x4555, code: 0x810f, from: 0xf7621, to: 0xf9d9f}, - 154: {region: 0x4649, code: 0x5c, from: 0xf9e21, to: 0x0}, - 155: {region: 0x4649, code: 0x5d, from: 0xf5621, to: 0xfa45c}, - 156: {region: 0x464a, code: 0x5e, from: 0xf622d, to: 0x0}, - 157: {region: 0x464b, code: 0x5f, from: 0xeda21, to: 0x0}, - 158: {region: 0x464d, code: 0xf9, from: 0xf3021, to: 0x0}, - 159: {region: 0x464d, code: 0x83, from: 0xef543, to: 0xf3021}, - 160: {region: 0x464f, code: 0x50, from: 0xf3821, to: 0x0}, - 161: {region: 0x4652, code: 0x5c, from: 0xf9e21, to: 0x0}, - 162: {region: 0x4652, code: 0x60, from: 0xf5021, to: 0xfa451}, - 163: {region: 0x4741, code: 0x106, from: 0xf9221, to: 0x0}, - 164: {region: 0x4742, code: 0x61, from: 0xd3cfb, to: 0x0}, - 165: {region: 0x4744, code: 0x10d, from: 0xf5e5b, to: 0x0}, - 166: {region: 0x4745, code: 0x63, from: 0xf9737, to: 0x0}, - 167: {region: 0x4745, code: 0x62, from: 0xf9285, to: 0xf9739}, - 168: {region: 0x4745, code: 0xd1, from: 0xf8f99, to: 0xf92cb}, - 169: {region: 0x4745, code: 0xe4, from: 0xf5221, to: 0xf8f99}, - 170: {region: 0x4746, code: 0x5c, from: 0xf9e21, to: 0x0}, - 171: {region: 0x4746, code: 0x60, from: 0xf5021, to: 0xfa451}, - 172: {region: 0x4747, code: 0x61, from: 0xe4c21, to: 0x0}, - 173: {region: 0x4748, code: 0x65, from: 0xfaee3, to: 0x0}, - 174: {region: 0x4748, code: 0x64, from: 0xf7669, to: 0xfaf9f}, - 175: {region: 0x4749, code: 0x66, from: 0xd6221, to: 0x0}, - 176: {region: 0x474c, code: 0x50, from: 0xea2bb, to: 0x0}, - 177: {region: 0x474d, code: 0x67, from: 0xf66e1, to: 0x0}, - 178: {region: 0x474e, code: 0x68, from: 0xf8426, to: 0x0}, - 179: {region: 0x474e, code: 0x69, from: 0xf6942, to: 0xf8426}, - 180: {region: 0x4750, code: 0x5c, from: 0xf9e21, to: 0x0}, - 181: {region: 0x4750, code: 0x60, from: 0xf5021, to: 0xfa451}, - 182: {region: 0x4751, code: 0x106, from: 0xf9221, to: 0x0}, - 183: {region: 0x4751, code: 0x6a, from: 0xf6ee7, to: 0xf84c1}, - 184: {region: 0x4752, code: 0x5c, from: 0xfa221, to: 0x0}, - 185: {region: 0x4752, code: 0x6b, from: 0xf44a1, to: 0xfa45c}, - 186: {region: 0x4753, code: 0x61, from: 0xee821, to: 0x0}, - 187: {region: 0x4754, code: 0x6c, from: 0xf0abb, to: 0x0}, - 188: {region: 0x4755, code: 0xf9, from: 0xf3115, to: 0x0}, - 189: {region: 0x4757, code: 0x112, from: 0xf9a7f, to: 0x0}, - 190: {region: 0x4757, code: 0x6e, from: 0xf705c, to: 0xf9a7f}, - 191: {region: 0x4757, code: 0x6d, from: 0xef421, to: 0xf705c}, - 192: {region: 0x4759, code: 0x6f, from: 0xf5cba, to: 0x0}, - 193: {region: 0x484b, code: 0x70, from: 0xece42, to: 0x0}, - 194: {region: 0x484d, code: 0x13, from: 0xf5e50, to: 0x0}, - 195: {region: 0x484e, code: 0x71, from: 0xf0c83, to: 0x0}, - 196: {region: 0x4852, code: 0x73, from: 0xf94be, to: 0x0}, - 197: {region: 0x4852, code: 0x72, from: 0xf8f97, to: 0xf9621}, - 198: {region: 0x4852, code: 0x11f, from: 0xf8c21, to: 0xf8f97}, - 199: {region: 0x4852, code: 0x11d, from: 0xf5c21, to: 0xf8c21}, - 200: {region: 0x4854, code: 0x74, from: 0xea11a, to: 0x0}, - 201: {region: 0x4854, code: 0xf9, from: 0xef621, to: 0x0}, - 202: {region: 0x4855, code: 0x75, from: 0xf34f7, to: 0x0}, - 203: {region: 0x4943, code: 0x5c, from: 0xf9e21, to: 0x0}, - 204: {region: 0x4944, code: 0x76, from: 0xf5b8d, to: 0x0}, - 205: {region: 0x4945, code: 0x5c, from: 0xf9e21, to: 0x0}, - 206: {region: 0x4945, code: 0x77, from: 0xf0421, to: 0xfa449}, - 207: {region: 0x4945, code: 0x61, from: 0xe1021, to: 0xf0421}, - 208: {region: 0x494c, code: 0x7a, from: 0xf8324, to: 0x0}, - 209: {region: 0x494c, code: 0x79, from: 0xf7856, to: 0xf8324}, - 210: {region: 0x494c, code: 0x78, from: 0xf3910, to: 0xf7856}, - 211: {region: 0x494d, code: 0x61, from: 0xe6023, to: 0x0}, - 212: {region: 0x494e, code: 0x7b, from: 0xe5711, to: 0x0}, - 213: {region: 0x494f, code: 0xf9, from: 0xf5b68, to: 0x0}, - 214: {region: 0x4951, code: 0x7c, from: 0xf1693, to: 0x0}, - 215: {region: 0x4951, code: 0x56, from: 0xf016b, to: 0xf1693}, - 216: {region: 0x4951, code: 0x7b, from: 0xf016b, to: 0xf1693}, - 217: {region: 0x4952, code: 0x7d, from: 0xf18ad, to: 0x0}, - 218: {region: 0x4953, code: 0x7f, from: 0xf7a21, to: 0x0}, - 219: {region: 0x4953, code: 0x7e, from: 0xefd81, to: 0xf7a21}, - 220: {region: 0x4953, code: 0x50, from: 0xea2bb, to: 0xefd81}, - 221: {region: 0x4954, code: 0x5c, from: 0xf9e21, to: 0x0}, - 222: {region: 0x4954, code: 0x80, from: 0xe8d18, to: 0xfa45c}, - 223: {region: 0x4a45, code: 0x61, from: 0xe5a21, to: 0x0}, - 224: {region: 0x4a4d, code: 0x81, from: 0xf6328, to: 0x0}, - 225: {region: 0x4a4f, code: 0x82, from: 0xf3ce1, to: 0x0}, - 226: {region: 0x4a50, code: 0x83, from: 0xe9ec1, to: 0x0}, - 227: {region: 0x4b45, code: 0x84, from: 0xf5d2e, to: 0x0}, - 228: {region: 0x4b47, code: 0x85, from: 0xf92aa, to: 0x0}, - 229: {region: 0x4b47, code: 0xd1, from: 0xf8f99, to: 0xf92aa}, - 230: {region: 0x4b47, code: 0xe4, from: 0xf5221, to: 0xf8f99}, - 231: {region: 0x4b48, code: 0x86, from: 0xf7874, to: 0x0}, - 232: {region: 0x4b49, code: 0x13, from: 0xf5c4e, to: 0x0}, - 233: {region: 0x4b4d, code: 0x87, from: 0xf6ee6, to: 0x0}, - 234: {region: 0x4b4e, code: 0x10d, from: 0xf5b46, to: 0x0}, - 235: {region: 0x4b50, code: 0x88, from: 0xf4e91, to: 0x0}, - 236: {region: 0x4b52, code: 0x8b, from: 0xf54ca, to: 0x0}, - 237: {region: 0x4b52, code: 0x89, from: 0xf424f, to: 0xf54ca}, - 238: {region: 0x4b52, code: 0x8a, from: 0xf330f, to: 0xf424f}, - 239: {region: 0x4b57, code: 0x8c, from: 0xf5281, to: 0x0}, - 240: {region: 0x4b59, code: 0x8d, from: 0xf6621, to: 0x0}, - 241: {region: 0x4b59, code: 0x81, from: 0xf6328, to: 0xf6621}, - 242: {region: 0x4b5a, code: 0x8e, from: 0xf9365, to: 0x0}, - 243: {region: 0x4c41, code: 0x8f, from: 0xf778a, to: 0x0}, - 244: {region: 0x4c42, code: 0x90, from: 0xf3842, to: 0x0}, - 245: {region: 0x4c43, code: 0x10d, from: 0xf5b46, to: 0x0}, - 246: {region: 0x4c49, code: 0x3c, from: 0xf0241, to: 0x0}, - 247: {region: 0x4c4b, code: 0x91, from: 0xf74b6, to: 0x0}, - 248: {region: 0x4c52, code: 0x92, from: 0xf3021, to: 0x0}, - 249: {region: 0x4c53, code: 0x122, from: 0xf524e, to: 0x0}, - 250: {region: 0x4c53, code: 0x93, from: 0xf7836, to: 0x0}, - 251: {region: 0x4c54, code: 0x5c, from: 0xfbe21, to: 0x0}, - 252: {region: 0x4c54, code: 0x94, from: 0xf92d9, to: 0xfbd9f}, - 253: {region: 0x4c54, code: 0x95, from: 0xf9141, to: 0xf92d9}, - 254: {region: 0x4c54, code: 0xe4, from: 0xf5221, to: 0xf9141}, - 255: {region: 0x4c55, code: 0x5c, from: 0xf9e21, to: 0x0}, - 256: {region: 0x4c55, code: 0x97, from: 0xf3124, to: 0xfa45c}, - 257: {region: 0x4c55, code: 0x8096, from: 0xf6421, to: 0xf8c65}, - 258: {region: 0x4c55, code: 0x8098, from: 0xf6421, to: 0xf8c65}, - 259: {region: 0x4c56, code: 0x5c, from: 0xfbc21, to: 0x0}, - 260: {region: 0x4c56, code: 0x99, from: 0xf92dc, to: 0xfbb9f}, - 261: {region: 0x4c56, code: 0x9a, from: 0xf90a7, to: 0xf9351}, - 262: {region: 0x4c56, code: 0xe4, from: 0xf5221, to: 0xf90f4}, - 263: {region: 0x4c59, code: 0x9b, from: 0xf6721, to: 0x0}, - 264: {region: 0x4d41, code: 0x9c, from: 0xf4f51, to: 0x0}, - 265: {region: 0x4d41, code: 0x9d, from: 0xeb221, to: 0xf4f51}, - 266: {region: 0x4d43, code: 0x5c, from: 0xf9e21, to: 0x0}, - 267: {region: 0x4d43, code: 0x60, from: 0xf5021, to: 0xfa451}, - 268: {region: 0x4d43, code: 0x9e, from: 0xf5021, to: 0xfa451}, - 269: {region: 0x4d44, code: 0xa0, from: 0xf937d, to: 0x0}, - 270: {region: 0x4d44, code: 0x9f, from: 0xf90c1, to: 0xf937d}, - 271: {region: 0x4d45, code: 0x5c, from: 0xfa421, to: 0x0}, - 272: {region: 0x4d45, code: 0x4e, from: 0xf9f42, to: 0xfa4af}, - 273: {region: 0x4d45, code: 0x11e, from: 0xf9438, to: 0xfa4af}, - 274: {region: 0x4d46, code: 0x5c, from: 0xf9e21, to: 0x0}, - 275: {region: 0x4d46, code: 0x60, from: 0xf5021, to: 0xfa451}, - 276: {region: 0x4d47, code: 0xa1, from: 0xf7f61, to: 0x0}, - 277: {region: 0x4d47, code: 0xa2, from: 0xf56e1, to: 0xfa99f}, - 278: {region: 0x4d48, code: 0xf9, from: 0xf3021, to: 0x0}, - 279: {region: 0x4d4b, code: 0xa3, from: 0xf92b4, to: 0x0}, - 280: {region: 0x4d4b, code: 0xa4, from: 0xf909a, to: 0xf92b4}, - 281: {region: 0x4d4c, code: 0x112, from: 0xf80c1, to: 0x0}, - 282: {region: 0x4d4c, code: 0xa5, from: 0xf54e2, to: 0xf811f}, - 283: {region: 0x4d4c, code: 0x112, from: 0xf4d78, to: 0xf54e2}, - 284: {region: 0x4d4d, code: 0xa6, from: 0xf8ad2, to: 0x0}, - 285: {region: 0x4d4d, code: 0x34, from: 0xf40e1, to: 0xf8ad2}, - 286: {region: 0x4d4e, code: 0xa7, from: 0xef661, to: 0x0}, - 287: {region: 0x4d4f, code: 0xa8, from: 0xeda21, to: 0x0}, - 288: {region: 0x4d50, code: 0xf9, from: 0xf3021, to: 0x0}, - 289: {region: 0x4d51, code: 0x5c, from: 0xf9e21, to: 0x0}, - 290: {region: 0x4d51, code: 0x60, from: 0xf5021, to: 0xfa451}, - 291: {region: 0x4d52, code: 0xa9, from: 0xf6add, to: 0x0}, - 292: {region: 0x4d52, code: 0x112, from: 0xf4d7c, to: 0xf6add}, - 293: {region: 0x4d53, code: 0x10d, from: 0xf5e5b, to: 0x0}, - 294: {region: 0x4d54, code: 0x5c, from: 0xfb021, to: 0x0}, - 295: {region: 0x4d54, code: 0xaa, from: 0xf60c7, to: 0xfb03f}, - 296: {region: 0x4d54, code: 0xab, from: 0xef50d, to: 0xf60c7}, - 297: {region: 0x4d55, code: 0xac, from: 0xf1c81, to: 0x0}, - 298: {region: 0x4d56, code: 0xae, from: 0xf7ae1, to: 0x0}, - 299: {region: 0x4d57, code: 0xaf, from: 0xf664f, to: 0x0}, - 300: {region: 0x4d58, code: 0xb0, from: 0xf9221, to: 0x0}, - 301: {region: 0x4d58, code: 0xb1, from: 0xe3c21, to: 0xf919f}, - 302: {region: 0x4d58, code: 0x80b2, from: 0x0, to: 0x0}, - 303: {region: 0x4d59, code: 0xb3, from: 0xf5730, to: 0x0}, - 304: {region: 0x4d5a, code: 0xb6, from: 0xface1, to: 0x0}, - 305: {region: 0x4d5a, code: 0xb5, from: 0xf78d0, to: 0xfad9f}, - 306: {region: 0x4d5a, code: 0xb4, from: 0xf6ed9, to: 0xf78d0}, - 307: {region: 0x4e41, code: 0xb7, from: 0xf9221, to: 0x0}, - 308: {region: 0x4e41, code: 0x122, from: 0xf524e, to: 0x0}, - 309: {region: 0x4e43, code: 0x114, from: 0xf8221, to: 0x0}, - 310: {region: 0x4e45, code: 0x112, from: 0xf4d93, to: 0x0}, - 311: {region: 0x4e46, code: 0x13, from: 0xf5c4e, to: 0x0}, - 312: {region: 0x4e47, code: 0xb8, from: 0xf6a21, to: 0x0}, - 313: {region: 0x4e49, code: 0xba, from: 0xf8e9e, to: 0x0}, - 314: {region: 0x4e49, code: 0xb9, from: 0xf884f, to: 0xf8e9e}, - 315: {region: 0x4e4c, code: 0x5c, from: 0xf9e21, to: 0x0}, - 316: {region: 0x4e4c, code: 0xbb, from: 0xe2a21, to: 0xfa45c}, - 317: {region: 0x4e4f, code: 0xbc, from: 0xee2c7, to: 0x0}, - 318: {region: 0x4e4f, code: 0xd9, from: 0xea2bb, to: 0xee2c7}, - 319: {region: 0x4e50, code: 0xbd, from: 0xf1a21, to: 0x0}, - 320: {region: 0x4e50, code: 0x7b, from: 0xe9c21, to: 0xf5d51}, - 321: {region: 0x4e52, code: 0x13, from: 0xf5c4e, to: 0x0}, - 322: {region: 0x4e55, code: 0xbe, from: 0xf5eea, to: 0x0}, - 323: {region: 0x4e5a, code: 0xbe, from: 0xf5eea, to: 0x0}, - 324: {region: 0x4f4d, code: 0xbf, from: 0xf696b, to: 0x0}, - 325: {region: 0x5041, code: 0xc0, from: 0xedf64, to: 0x0}, - 326: {region: 0x5041, code: 0xf9, from: 0xedf72, to: 0x0}, - 327: {region: 0x5045, code: 0xc2, from: 0xf8ee1, to: 0x0}, - 328: {region: 0x5045, code: 0xc1, from: 0xf8241, to: 0xf8ee1}, - 329: {region: 0x5045, code: 0xc3, from: 0xe8e4e, to: 0xf8241}, - 330: {region: 0x5046, code: 0x114, from: 0xf339a, to: 0x0}, - 331: {region: 0x5047, code: 0xc4, from: 0xf6f30, to: 0x0}, - 332: {region: 0x5047, code: 0x13, from: 0xf5c4e, to: 0xf6f30}, - 333: {region: 0x5048, code: 0xc5, from: 0xf34e4, to: 0x0}, - 334: {region: 0x504b, code: 0xc6, from: 0xf3881, to: 0x0}, - 335: {region: 0x504b, code: 0x7b, from: 0xe5711, to: 0xf370f}, - 336: {region: 0x504c, code: 0xc7, from: 0xf9621, to: 0x0}, - 337: {region: 0x504c, code: 0xc8, from: 0xf3d5c, to: 0xf959f}, - 338: {region: 0x504d, code: 0x5c, from: 0xf9e21, to: 0x0}, - 339: {region: 0x504d, code: 0x60, from: 0xf6995, to: 0xfa451}, - 340: {region: 0x504e, code: 0xbe, from: 0xf622d, to: 0x0}, - 341: {region: 0x5052, code: 0xf9, from: 0xed58a, to: 0x0}, - 342: {region: 0x5052, code: 0x5a, from: 0xe1021, to: 0xed58a}, - 343: {region: 0x5053, code: 0x7a, from: 0xf8324, to: 0x0}, - 344: {region: 0x5053, code: 0x82, from: 0xf984c, to: 0x0}, - 345: {region: 0x5053, code: 0x78, from: 0xf5ec1, to: 0xf7856}, - 346: {region: 0x5053, code: 0x82, from: 0xf3ce1, to: 0xf5ec1}, - 347: {region: 0x5054, code: 0x5c, from: 0xf9e21, to: 0x0}, - 348: {region: 0x5054, code: 0xc9, from: 0xeeeb6, to: 0xfa45c}, - 349: {region: 0x5057, code: 0xf9, from: 0xf3021, to: 0x0}, - 350: {region: 0x5059, code: 0xca, from: 0xf2f61, to: 0x0}, - 351: {region: 0x5141, code: 0xcb, from: 0xf6ab3, to: 0x0}, - 352: {region: 0x5245, code: 0x5c, from: 0xf9e21, to: 0x0}, - 353: {region: 0x5245, code: 0x60, from: 0xf6e21, to: 0xfa451}, - 354: {region: 0x524f, code: 0xce, from: 0xfaae1, to: 0x0}, - 355: {region: 0x524f, code: 0xcd, from: 0xf403c, to: 0xfad9f}, - 356: {region: 0x5253, code: 0xcf, from: 0xfad59, to: 0x0}, - 357: {region: 0x5253, code: 0x46, from: 0xfa4af, to: 0xfad59}, - 358: {region: 0x5253, code: 0x11e, from: 0xf9438, to: 0xfa4af}, - 359: {region: 0x5255, code: 0xd0, from: 0xf9e21, to: 0x0}, - 360: {region: 0x5255, code: 0xd1, from: 0xf8f99, to: 0xf9d9f}, - 361: {region: 0x5257, code: 0xd2, from: 0xf58b3, to: 0x0}, - 362: {region: 0x5341, code: 0xd3, from: 0xf4156, to: 0x0}, - 363: {region: 0x5342, code: 0xd4, from: 0xf7358, to: 0x0}, - 364: {region: 0x5342, code: 0x13, from: 0xf5c4e, to: 0xf74de}, - 365: {region: 0x5343, code: 0xd5, from: 0xedf61, to: 0x0}, - 366: {region: 0x5344, code: 0xd7, from: 0xfae2a, to: 0x0}, - 367: {region: 0x5344, code: 0xd6, from: 0xf90c8, to: 0xfaede}, - 368: {region: 0x5344, code: 0xd8, from: 0xf4a88, to: 0xf9cc1}, - 369: {region: 0x5344, code: 0x56, from: 0xec233, to: 0xf4c21}, - 370: {region: 0x5344, code: 0x61, from: 0xec233, to: 0xf4c21}, - 371: {region: 0x5345, code: 0xd9, from: 0xea2bb, to: 0x0}, - 372: {region: 0x5347, code: 0xda, from: 0xf5ecc, to: 0x0}, - 373: {region: 0x5347, code: 0xb3, from: 0xf5730, to: 0xf5ecc}, - 374: {region: 0x5348, code: 0xdb, from: 0xefa4f, to: 0x0}, - 375: {region: 0x5349, code: 0x5c, from: 0xfae21, to: 0x0}, - 376: {region: 0x5349, code: 0xdc, from: 0xf9147, to: 0xfae2e}, - 377: {region: 0x534a, code: 0xbc, from: 0xee2c7, to: 0x0}, - 378: {region: 0x534b, code: 0x5c, from: 0xfb221, to: 0x0}, - 379: {region: 0x534b, code: 0xdd, from: 0xf919f, to: 0xfb221}, - 380: {region: 0x534b, code: 0x47, from: 0xf42c1, to: 0xf919f}, - 381: {region: 0x534c, code: 0xde, from: 0xf5904, to: 0x0}, - 382: {region: 0x534c, code: 0x61, from: 0xe217e, to: 0xf5c44}, - 383: {region: 0x534d, code: 0x5c, from: 0xf9e21, to: 0x0}, - 384: {region: 0x534d, code: 0x80, from: 0xe9397, to: 0xfa25c}, - 385: {region: 0x534e, code: 0x112, from: 0xf4e84, to: 0x0}, - 386: {region: 0x534f, code: 0xdf, from: 0xf50e1, to: 0x0}, - 387: {region: 0x5352, code: 0xe0, from: 0xfa821, to: 0x0}, - 388: {region: 0x5352, code: 0xe1, from: 0xf28aa, to: 0xfa79f}, - 389: {region: 0x5352, code: 0xbb, from: 0xe2f74, to: 0xf28aa}, - 390: {region: 0x5353, code: 0xe2, from: 0xfb6f2, to: 0x0}, - 391: {region: 0x5353, code: 0xd7, from: 0xfae2a, to: 0xfb721}, - 392: {region: 0x5354, code: 0xe3, from: 0xf7328, to: 0x0}, - 393: {region: 0x5355, code: 0xe4, from: 0xf5221, to: 0xf8f99}, - 394: {region: 0x5356, code: 0xf9, from: 0xfa221, to: 0x0}, - 395: {region: 0x5356, code: 0xe5, from: 0xeff6b, to: 0xfa221}, - 396: {region: 0x5358, code: 0x8, from: 0xfb54a, to: 0x0}, - 397: {region: 0x5359, code: 0xe6, from: 0xf3821, to: 0x0}, - 398: {region: 0x535a, code: 0xe7, from: 0xf6d26, to: 0x0}, - 399: {region: 0x5441, code: 0x61, from: 0xf242c, to: 0x0}, - 400: {region: 0x5443, code: 0xf9, from: 0xf6328, to: 0x0}, - 401: {region: 0x5444, code: 0x106, from: 0xf9221, to: 0x0}, - 402: {region: 0x5446, code: 0x5c, from: 0xf9e21, to: 0x0}, - 403: {region: 0x5446, code: 0x60, from: 0xf4e21, to: 0xfa451}, - 404: {region: 0x5447, code: 0x112, from: 0xf4d7c, to: 0x0}, - 405: {region: 0x5448, code: 0xe8, from: 0xf108f, to: 0x0}, - 406: {region: 0x544a, code: 0xea, from: 0xfa15a, to: 0x0}, - 407: {region: 0x544a, code: 0xe9, from: 0xf96aa, to: 0xfa159}, - 408: {region: 0x544a, code: 0xd1, from: 0xf8f99, to: 0xf96aa}, - 409: {region: 0x544b, code: 0xbe, from: 0xf5eea, to: 0x0}, - 410: {region: 0x544c, code: 0xf9, from: 0xf9f54, to: 0x0}, - 411: {region: 0x544c, code: 0xef, from: 0xf4e22, to: 0xfa4b4}, - 412: {region: 0x544c, code: 0x76, from: 0xf6f87, to: 0xfa4b4}, - 413: {region: 0x544d, code: 0xec, from: 0xfb221, to: 0x0}, - 414: {region: 0x544d, code: 0xeb, from: 0xf9361, to: 0xfb221}, - 415: {region: 0x544d, code: 0xd1, from: 0xf8f99, to: 0xf9361}, - 416: {region: 0x544d, code: 0xe4, from: 0xf5221, to: 0xf8f99}, - 417: {region: 0x544e, code: 0xed, from: 0xf4d61, to: 0x0}, - 418: {region: 0x544f, code: 0xee, from: 0xf5c4e, to: 0x0}, - 419: {region: 0x5450, code: 0xef, from: 0xf4e22, to: 0xfa4b4}, - 420: {region: 0x5450, code: 0x76, from: 0xf6f87, to: 0xfa4b4}, - 421: {region: 0x5452, code: 0xf1, from: 0xfaa21, to: 0x0}, - 422: {region: 0x5452, code: 0xf0, from: 0xf0561, to: 0xfab9f}, - 423: {region: 0x5454, code: 0xf2, from: 0xf5821, to: 0x0}, - 424: {region: 0x5456, code: 0x13, from: 0xf5c4e, to: 0x0}, - 425: {region: 0x5457, code: 0xf3, from: 0xf3acf, to: 0x0}, - 426: {region: 0x545a, code: 0xf4, from: 0xf5cce, to: 0x0}, - 427: {region: 0x5541, code: 0xf5, from: 0xf9922, to: 0x0}, - 428: {region: 0x5541, code: 0xf6, from: 0xf916d, to: 0xf9351}, - 429: {region: 0x5541, code: 0xd1, from: 0xf8f99, to: 0xf916d}, - 430: {region: 0x5541, code: 0xe4, from: 0xf5221, to: 0xf8f99}, - 431: {region: 0x5547, code: 0xf8, from: 0xf86af, to: 0x0}, - 432: {region: 0x5547, code: 0xf7, from: 0xf5d0f, to: 0xf86af}, - 433: {region: 0x554d, code: 0xf9, from: 0xf3021, to: 0x0}, - 434: {region: 0x5553, code: 0xf9, from: 0xe0021, to: 0x0}, - 435: {region: 0x5553, code: 0x80fa, from: 0x0, to: 0x0}, - 436: {region: 0x5553, code: 0x80fb, from: 0x0, to: 0xfbc61}, - 437: {region: 0x5559, code: 0xfe, from: 0xf9261, to: 0x0}, - 438: {region: 0x5559, code: 0xfd, from: 0xf6ee1, to: 0xf9261}, - 439: {region: 0x5559, code: 0x80fc, from: 0x0, to: 0x0}, - 440: {region: 0x555a, code: 0xff, from: 0xf94e1, to: 0x0}, - 441: {region: 0x5641, code: 0x5c, from: 0xf9e21, to: 0x0}, - 442: {region: 0x5641, code: 0x80, from: 0xe9d53, to: 0xfa45c}, - 443: {region: 0x5643, code: 0x10d, from: 0xf5b46, to: 0x0}, - 444: {region: 0x5645, code: 0x101, from: 0xfb021, to: 0x0}, - 445: {region: 0x5645, code: 0x100, from: 0xe9eab, to: 0xfb0de}, - 446: {region: 0x5647, code: 0xf9, from: 0xe5221, to: 0x0}, - 447: {region: 0x5647, code: 0x61, from: 0xe5221, to: 0xf4e21}, - 448: {region: 0x5649, code: 0xf9, from: 0xe5a21, to: 0x0}, - 449: {region: 0x564e, code: 0x102, from: 0xf832e, to: 0x0}, - 450: {region: 0x564e, code: 0x103, from: 0xf74a3, to: 0xf832e}, - 451: {region: 0x5655, code: 0x104, from: 0xf7a21, to: 0x0}, - 452: {region: 0x5746, code: 0x114, from: 0xf52fe, to: 0x0}, - 453: {region: 0x5753, code: 0x105, from: 0xf5eea, to: 0x0}, - 454: {region: 0x584b, code: 0x5c, from: 0xfa421, to: 0x0}, - 455: {region: 0x584b, code: 0x4e, from: 0xf9f21, to: 0xfa469}, - 456: {region: 0x584b, code: 0x11e, from: 0xf9438, to: 0xf9f3e}, - 457: {region: 0x5944, code: 0x11b, from: 0xf5a81, to: 0xf9821}, - 458: {region: 0x5945, code: 0x11c, from: 0xf8cb6, to: 0x0}, - 459: {region: 0x5954, code: 0x5c, from: 0xf9e21, to: 0x0}, - 460: {region: 0x5954, code: 0x60, from: 0xf7057, to: 0xfa451}, - 461: {region: 0x5954, code: 0x87, from: 0xf6e21, to: 0xf7057}, - 462: {region: 0x5955, code: 0x11e, from: 0xf9438, to: 0xfa4af}, - 463: {region: 0x5955, code: 0x11f, from: 0xf8c21, to: 0xf90f8}, - 464: {region: 0x5955, code: 0x11d, from: 0xf5c21, to: 0xf8c21}, - 465: {region: 0x5a41, code: 0x122, from: 0xf524e, to: 0x0}, - 466: {region: 0x5a41, code: 0x8121, from: 0xf8321, to: 0xf966d}, - 467: {region: 0x5a4d, code: 0x124, from: 0xfba21, to: 0x0}, - 468: {region: 0x5a4d, code: 0x123, from: 0xf6030, to: 0xfba21}, - 469: {region: 0x5a52, code: 0x125, from: 0xf9361, to: 0xf9cff}, - 470: {region: 0x5a52, code: 0x126, from: 0xf675b, to: 0xf9361}, - 471: {region: 0x5a57, code: 0xf9, from: 0xfb28c, to: 0x0}, - 472: {region: 0x5a57, code: 0x128, from: 0xfb242, to: 0xfb28c}, - 473: {region: 0x5a57, code: 0x129, from: 0xfb101, to: 0xfb242}, - 474: {region: 0x5a57, code: 0x127, from: 0xf7892, to: 0xfb101}, - 475: {region: 0x5a57, code: 0xcc, from: 0xf6451, to: 0xf7892}, - 476: {region: 0x5a5a, code: 0x8107, from: 0x0, to: 0x0}, + 84: {region: 0x4257, code: 0x123, from: 0xf524e, to: 0xf7117}, + 85: {region: 0x4259, code: 0x37, from: 0xfc0e1, to: 0x0}, + 86: {region: 0x4259, code: 0x38, from: 0xfa021, to: 0xfc221}, + 87: {region: 0x4259, code: 0x36, from: 0xf9501, to: 0xfa19f}, + 88: {region: 0x4259, code: 0xd2, from: 0xf8f99, to: 0xf9568}, + 89: {region: 0x4259, code: 0xe5, from: 0xf5221, to: 0xf8f99}, + 90: {region: 0x425a, code: 0x39, from: 0xf6c21, to: 0x0}, + 91: {region: 0x4341, code: 0x3a, from: 0xe8421, to: 0x0}, + 92: {region: 0x4343, code: 0x13, from: 0xf5c4e, to: 0x0}, + 93: {region: 0x4344, code: 0x3b, from: 0xf9ce1, to: 0x0}, + 94: {region: 0x4344, code: 0x126, from: 0xf9361, to: 0xf9ce1}, + 95: {region: 0x4344, code: 0x127, from: 0xf675b, to: 0xf9361}, + 96: {region: 0x4346, code: 0x107, from: 0xf9221, to: 0x0}, + 97: {region: 0x4347, code: 0x107, from: 0xf9221, to: 0x0}, + 98: {region: 0x4348, code: 0x3d, from: 0xe0e71, to: 0x0}, + 99: {region: 0x4348, code: 0x803c, from: 0x0, to: 0x0}, + 100: {region: 0x4348, code: 0x803e, from: 0x0, to: 0x0}, + 101: {region: 0x4349, code: 0x113, from: 0xf4d84, to: 0x0}, + 102: {region: 0x434b, code: 0xbf, from: 0xf5eea, to: 0x0}, + 103: {region: 0x434c, code: 0x41, from: 0xf6f3d, to: 0x0}, + 104: {region: 0x434c, code: 0x3f, from: 0xf5021, to: 0xf6f3d}, + 105: {region: 0x434c, code: 0x8040, from: 0x0, to: 0x0}, + 106: {region: 0x434d, code: 0x107, from: 0xf6a81, to: 0x0}, + 107: {region: 0x434e, code: 0x43, from: 0xf4261, to: 0x0}, + 108: {region: 0x434e, code: 0x8042, from: 0xf7621, to: 0xf9d9f}, + 109: {region: 0x434f, code: 0x44, from: 0xee221, to: 0x0}, + 110: {region: 0x434f, code: 0x8045, from: 0x0, to: 0x0}, + 111: {region: 0x4350, code: 0x811b, from: 0x0, to: 0x0}, + 112: {region: 0x4352, code: 0x46, from: 0xed15a, to: 0x0}, + 113: {region: 0x4353, code: 0x47, from: 0xfa4af, to: 0xfacc3}, + 114: {region: 0x4353, code: 0x5d, from: 0xfa644, to: 0xfacc3}, + 115: {region: 0x4353, code: 0x11f, from: 0xf9438, to: 0xfa4af}, + 116: {region: 0x4355, code: 0x4a, from: 0xe8621, to: 0x0}, + 117: {region: 0x4355, code: 0x49, from: 0xf9421, to: 0x0}, + 118: {region: 0x4355, code: 0xfa, from: 0xed621, to: 0xf4e21}, + 119: {region: 0x4356, code: 0x4b, from: 0xef421, to: 0x0}, + 120: {region: 0x4356, code: 0xca, from: 0xeeeb6, to: 0xf6ee5}, + 121: {region: 0x4357, code: 0x8, from: 0xfb54a, to: 0x0}, + 122: {region: 0x4358, code: 0x13, from: 0xf5c4e, to: 0x0}, + 123: {region: 0x4359, code: 0x5d, from: 0xfb021, to: 0x0}, + 124: {region: 0x4359, code: 0x4c, from: 0xef52a, to: 0xfb03f}, + 125: {region: 0x435a, code: 0x4d, from: 0xf9221, to: 0x0}, + 126: {region: 0x435a, code: 0x48, from: 0xf42c1, to: 0xf9261}, + 127: {region: 0x4444, code: 0x4e, from: 0xf38f4, to: 0xf8d42}, + 128: {region: 0x4445, code: 0x5d, from: 0xf9e21, to: 0x0}, + 129: {region: 0x4445, code: 0x4f, from: 0xf38d4, to: 0xfa45c}, + 130: {region: 0x4447, code: 0xfa, from: 0xf5b68, to: 0x0}, + 131: {region: 0x444a, code: 0x50, from: 0xf72db, to: 0x0}, + 132: {region: 0x444b, code: 0x51, from: 0xea2bb, to: 0x0}, + 133: {region: 0x444d, code: 0x10e, from: 0xf5b46, to: 0x0}, + 134: {region: 0x444f, code: 0x52, from: 0xf3741, to: 0x0}, + 135: {region: 0x444f, code: 0xfa, from: 0xee2d5, to: 0xf3741}, + 136: {region: 0x445a, code: 0x53, from: 0xf5881, to: 0x0}, + 137: {region: 0x4541, code: 0x5d, from: 0xf9e21, to: 0x0}, + 138: {region: 0x4543, code: 0xfa, from: 0xfa142, to: 0x0}, + 139: {region: 0x4543, code: 0x54, from: 0xeb881, to: 0xfa142}, + 140: {region: 0x4543, code: 0x8055, from: 0xf92b7, to: 0xfa029}, + 141: {region: 0x4545, code: 0x5d, from: 0xfb621, to: 0x0}, + 142: {region: 0x4545, code: 0x56, from: 0xf90d5, to: 0xfb59f}, + 143: {region: 0x4545, code: 0xe5, from: 0xf5221, to: 0xf90d4}, + 144: {region: 0x4547, code: 0x57, from: 0xebb6e, to: 0x0}, + 145: {region: 0x4548, code: 0x9d, from: 0xf705a, to: 0x0}, + 146: {region: 0x4552, code: 0x58, from: 0xf9b68, to: 0x0}, + 147: {region: 0x4552, code: 0x5c, from: 0xf92b8, to: 0xf9b68}, + 148: {region: 0x4553, code: 0x5d, from: 0xf9e21, to: 0x0}, + 149: {region: 0x4553, code: 0x5b, from: 0xe9953, to: 0xfa45c}, + 150: {region: 0x4553, code: 0x8059, from: 0xf7421, to: 0xf7b9f}, + 151: {region: 0x4553, code: 0x805a, from: 0xf6e21, to: 0xf959f}, + 152: {region: 0x4554, code: 0x5c, from: 0xf712f, to: 0x0}, + 153: {region: 0x4555, code: 0x5d, from: 0xf9e21, to: 0x0}, + 154: {region: 0x4555, code: 0x8110, from: 0xf7621, to: 0xf9d9f}, + 155: {region: 0x4649, code: 0x5d, from: 0xf9e21, to: 0x0}, + 156: {region: 0x4649, code: 0x5e, from: 0xf5621, to: 0xfa45c}, + 157: {region: 0x464a, code: 0x5f, from: 0xf622d, to: 0x0}, + 158: {region: 0x464b, code: 0x60, from: 0xeda21, to: 0x0}, + 159: {region: 0x464d, code: 0xfa, from: 0xf3021, to: 0x0}, + 160: {region: 0x464d, code: 0x84, from: 0xef543, to: 0xf3021}, + 161: {region: 0x464f, code: 0x51, from: 0xf3821, to: 0x0}, + 162: {region: 0x4652, code: 0x5d, from: 0xf9e21, to: 0x0}, + 163: {region: 0x4652, code: 0x61, from: 0xf5021, to: 0xfa451}, + 164: {region: 0x4741, code: 0x107, from: 0xf9221, to: 0x0}, + 165: {region: 0x4742, code: 0x62, from: 0xd3cfb, to: 0x0}, + 166: {region: 0x4744, code: 0x10e, from: 0xf5e5b, to: 0x0}, + 167: {region: 0x4745, code: 0x64, from: 0xf9737, to: 0x0}, + 168: {region: 0x4745, code: 0x63, from: 0xf9285, to: 0xf9739}, + 169: {region: 0x4745, code: 0xd2, from: 0xf8f99, to: 0xf92cb}, + 170: {region: 0x4745, code: 0xe5, from: 0xf5221, to: 0xf8f99}, + 171: {region: 0x4746, code: 0x5d, from: 0xf9e21, to: 0x0}, + 172: {region: 0x4746, code: 0x61, from: 0xf5021, to: 0xfa451}, + 173: {region: 0x4747, code: 0x62, from: 0xe4c21, to: 0x0}, + 174: {region: 0x4748, code: 0x66, from: 0xfaee3, to: 0x0}, + 175: {region: 0x4748, code: 0x65, from: 0xf7669, to: 0xfaf9f}, + 176: {region: 0x4749, code: 0x67, from: 0xd6221, to: 0x0}, + 177: {region: 0x474c, code: 0x51, from: 0xea2bb, to: 0x0}, + 178: {region: 0x474d, code: 0x68, from: 0xf66e1, to: 0x0}, + 179: {region: 0x474e, code: 0x69, from: 0xf8426, to: 0x0}, + 180: {region: 0x474e, code: 0x6a, from: 0xf6942, to: 0xf8426}, + 181: {region: 0x4750, code: 0x5d, from: 0xf9e21, to: 0x0}, + 182: {region: 0x4750, code: 0x61, from: 0xf5021, to: 0xfa451}, + 183: {region: 0x4751, code: 0x107, from: 0xf9221, to: 0x0}, + 184: {region: 0x4751, code: 0x6b, from: 0xf6ee7, to: 0xf84c1}, + 185: {region: 0x4752, code: 0x5d, from: 0xfa221, to: 0x0}, + 186: {region: 0x4752, code: 0x6c, from: 0xf44a1, to: 0xfa45c}, + 187: {region: 0x4753, code: 0x62, from: 0xee821, to: 0x0}, + 188: {region: 0x4754, code: 0x6d, from: 0xf0abb, to: 0x0}, + 189: {region: 0x4755, code: 0xfa, from: 0xf3115, to: 0x0}, + 190: {region: 0x4757, code: 0x113, from: 0xf9a7f, to: 0x0}, + 191: {region: 0x4757, code: 0x6f, from: 0xf705c, to: 0xf9a7f}, + 192: {region: 0x4757, code: 0x6e, from: 0xef421, to: 0xf705c}, + 193: {region: 0x4759, code: 0x70, from: 0xf5cba, to: 0x0}, + 194: {region: 0x484b, code: 0x71, from: 0xece42, to: 0x0}, + 195: {region: 0x484d, code: 0x13, from: 0xf5e50, to: 0x0}, + 196: {region: 0x484e, code: 0x72, from: 0xf0c83, to: 0x0}, + 197: {region: 0x4852, code: 0x74, from: 0xf94be, to: 0x0}, + 198: {region: 0x4852, code: 0x73, from: 0xf8f97, to: 0xf9621}, + 199: {region: 0x4852, code: 0x120, from: 0xf8c21, to: 0xf8f97}, + 200: {region: 0x4852, code: 0x11e, from: 0xf5c21, to: 0xf8c21}, + 201: {region: 0x4854, code: 0x75, from: 0xea11a, to: 0x0}, + 202: {region: 0x4854, code: 0xfa, from: 0xef621, to: 0x0}, + 203: {region: 0x4855, code: 0x76, from: 0xf34f7, to: 0x0}, + 204: {region: 0x4943, code: 0x5d, from: 0xf9e21, to: 0x0}, + 205: {region: 0x4944, code: 0x77, from: 0xf5b8d, to: 0x0}, + 206: {region: 0x4945, code: 0x5d, from: 0xf9e21, to: 0x0}, + 207: {region: 0x4945, code: 0x78, from: 0xf0421, to: 0xfa449}, + 208: {region: 0x4945, code: 0x62, from: 0xe1021, to: 0xf0421}, + 209: {region: 0x494c, code: 0x7b, from: 0xf8324, to: 0x0}, + 210: {region: 0x494c, code: 0x7a, from: 0xf7856, to: 0xf8324}, + 211: {region: 0x494c, code: 0x79, from: 0xf3910, to: 0xf7856}, + 212: {region: 0x494d, code: 0x62, from: 0xe6023, to: 0x0}, + 213: {region: 0x494e, code: 0x7c, from: 0xe5711, to: 0x0}, + 214: {region: 0x494f, code: 0xfa, from: 0xf5b68, to: 0x0}, + 215: {region: 0x4951, code: 0x7d, from: 0xf1693, to: 0x0}, + 216: {region: 0x4951, code: 0x57, from: 0xf016b, to: 0xf1693}, + 217: {region: 0x4951, code: 0x7c, from: 0xf016b, to: 0xf1693}, + 218: {region: 0x4952, code: 0x7e, from: 0xf18ad, to: 0x0}, + 219: {region: 0x4953, code: 0x80, from: 0xf7a21, to: 0x0}, + 220: {region: 0x4953, code: 0x7f, from: 0xefd81, to: 0xf7a21}, + 221: {region: 0x4953, code: 0x51, from: 0xea2bb, to: 0xefd81}, + 222: {region: 0x4954, code: 0x5d, from: 0xf9e21, to: 0x0}, + 223: {region: 0x4954, code: 0x81, from: 0xe8d18, to: 0xfa45c}, + 224: {region: 0x4a45, code: 0x62, from: 0xe5a21, to: 0x0}, + 225: {region: 0x4a4d, code: 0x82, from: 0xf6328, to: 0x0}, + 226: {region: 0x4a4f, code: 0x83, from: 0xf3ce1, to: 0x0}, + 227: {region: 0x4a50, code: 0x84, from: 0xe9ec1, to: 0x0}, + 228: {region: 0x4b45, code: 0x85, from: 0xf5d2e, to: 0x0}, + 229: {region: 0x4b47, code: 0x86, from: 0xf92aa, to: 0x0}, + 230: {region: 0x4b47, code: 0xd2, from: 0xf8f99, to: 0xf92aa}, + 231: {region: 0x4b47, code: 0xe5, from: 0xf5221, to: 0xf8f99}, + 232: {region: 0x4b48, code: 0x87, from: 0xf7874, to: 0x0}, + 233: {region: 0x4b49, code: 0x13, from: 0xf5c4e, to: 0x0}, + 234: {region: 0x4b4d, code: 0x88, from: 0xf6ee6, to: 0x0}, + 235: {region: 0x4b4e, code: 0x10e, from: 0xf5b46, to: 0x0}, + 236: {region: 0x4b50, code: 0x89, from: 0xf4e91, to: 0x0}, + 237: {region: 0x4b52, code: 0x8c, from: 0xf54ca, to: 0x0}, + 238: {region: 0x4b52, code: 0x8a, from: 0xf424f, to: 0xf54ca}, + 239: {region: 0x4b52, code: 0x8b, from: 0xf330f, to: 0xf424f}, + 240: {region: 0x4b57, code: 0x8d, from: 0xf5281, to: 0x0}, + 241: {region: 0x4b59, code: 0x8e, from: 0xf6621, to: 0x0}, + 242: {region: 0x4b59, code: 0x82, from: 0xf6328, to: 0xf6621}, + 243: {region: 0x4b5a, code: 0x8f, from: 0xf9365, to: 0x0}, + 244: {region: 0x4c41, code: 0x90, from: 0xf778a, to: 0x0}, + 245: {region: 0x4c42, code: 0x91, from: 0xf3842, to: 0x0}, + 246: {region: 0x4c43, code: 0x10e, from: 0xf5b46, to: 0x0}, + 247: {region: 0x4c49, code: 0x3d, from: 0xf0241, to: 0x0}, + 248: {region: 0x4c4b, code: 0x92, from: 0xf74b6, to: 0x0}, + 249: {region: 0x4c52, code: 0x93, from: 0xf3021, to: 0x0}, + 250: {region: 0x4c53, code: 0x123, from: 0xf524e, to: 0x0}, + 251: {region: 0x4c53, code: 0x94, from: 0xf7836, to: 0x0}, + 252: {region: 0x4c54, code: 0x5d, from: 0xfbe21, to: 0x0}, + 253: {region: 0x4c54, code: 0x95, from: 0xf92d9, to: 0xfbd9f}, + 254: {region: 0x4c54, code: 0x96, from: 0xf9141, to: 0xf92d9}, + 255: {region: 0x4c54, code: 0xe5, from: 0xf5221, to: 0xf9141}, + 256: {region: 0x4c55, code: 0x5d, from: 0xf9e21, to: 0x0}, + 257: {region: 0x4c55, code: 0x98, from: 0xf3124, to: 0xfa45c}, + 258: {region: 0x4c55, code: 0x8097, from: 0xf6421, to: 0xf8c65}, + 259: {region: 0x4c55, code: 0x8099, from: 0xf6421, to: 0xf8c65}, + 260: {region: 0x4c56, code: 0x5d, from: 0xfbc21, to: 0x0}, + 261: {region: 0x4c56, code: 0x9a, from: 0xf92dc, to: 0xfbb9f}, + 262: {region: 0x4c56, code: 0x9b, from: 0xf90a7, to: 0xf9351}, + 263: {region: 0x4c56, code: 0xe5, from: 0xf5221, to: 0xf90f4}, + 264: {region: 0x4c59, code: 0x9c, from: 0xf6721, to: 0x0}, + 265: {region: 0x4d41, code: 0x9d, from: 0xf4f51, to: 0x0}, + 266: {region: 0x4d41, code: 0x9e, from: 0xeb221, to: 0xf4f51}, + 267: {region: 0x4d43, code: 0x5d, from: 0xf9e21, to: 0x0}, + 268: {region: 0x4d43, code: 0x61, from: 0xf5021, to: 0xfa451}, + 269: {region: 0x4d43, code: 0x9f, from: 0xf5021, to: 0xfa451}, + 270: {region: 0x4d44, code: 0xa1, from: 0xf937d, to: 0x0}, + 271: {region: 0x4d44, code: 0xa0, from: 0xf90c1, to: 0xf937d}, + 272: {region: 0x4d45, code: 0x5d, from: 0xfa421, to: 0x0}, + 273: {region: 0x4d45, code: 0x4f, from: 0xf9f42, to: 0xfa4af}, + 274: {region: 0x4d45, code: 0x11f, from: 0xf9438, to: 0xfa4af}, + 275: {region: 0x4d46, code: 0x5d, from: 0xf9e21, to: 0x0}, + 276: {region: 0x4d46, code: 0x61, from: 0xf5021, to: 0xfa451}, + 277: {region: 0x4d47, code: 0xa2, from: 0xf7f61, to: 0x0}, + 278: {region: 0x4d47, code: 0xa3, from: 0xf56e1, to: 0xfa99f}, + 279: {region: 0x4d48, code: 0xfa, from: 0xf3021, to: 0x0}, + 280: {region: 0x4d4b, code: 0xa4, from: 0xf92b4, to: 0x0}, + 281: {region: 0x4d4b, code: 0xa5, from: 0xf909a, to: 0xf92b4}, + 282: {region: 0x4d4c, code: 0x113, from: 0xf80c1, to: 0x0}, + 283: {region: 0x4d4c, code: 0xa6, from: 0xf54e2, to: 0xf811f}, + 284: {region: 0x4d4c, code: 0x113, from: 0xf4d78, to: 0xf54e2}, + 285: {region: 0x4d4d, code: 0xa7, from: 0xf8ad2, to: 0x0}, + 286: {region: 0x4d4d, code: 0x34, from: 0xf40e1, to: 0xf8ad2}, + 287: {region: 0x4d4e, code: 0xa8, from: 0xef661, to: 0x0}, + 288: {region: 0x4d4f, code: 0xa9, from: 0xeda21, to: 0x0}, + 289: {region: 0x4d50, code: 0xfa, from: 0xf3021, to: 0x0}, + 290: {region: 0x4d51, code: 0x5d, from: 0xf9e21, to: 0x0}, + 291: {region: 0x4d51, code: 0x61, from: 0xf5021, to: 0xfa451}, + 292: {region: 0x4d52, code: 0xaa, from: 0xf6add, to: 0x0}, + 293: {region: 0x4d52, code: 0x113, from: 0xf4d7c, to: 0xf6add}, + 294: {region: 0x4d53, code: 0x10e, from: 0xf5e5b, to: 0x0}, + 295: {region: 0x4d54, code: 0x5d, from: 0xfb021, to: 0x0}, + 296: {region: 0x4d54, code: 0xab, from: 0xf60c7, to: 0xfb03f}, + 297: {region: 0x4d54, code: 0xac, from: 0xef50d, to: 0xf60c7}, + 298: {region: 0x4d55, code: 0xad, from: 0xf1c81, to: 0x0}, + 299: {region: 0x4d56, code: 0xaf, from: 0xf7ae1, to: 0x0}, + 300: {region: 0x4d57, code: 0xb0, from: 0xf664f, to: 0x0}, + 301: {region: 0x4d58, code: 0xb1, from: 0xf9221, to: 0x0}, + 302: {region: 0x4d58, code: 0xb2, from: 0xe3c21, to: 0xf919f}, + 303: {region: 0x4d58, code: 0x80b3, from: 0x0, to: 0x0}, + 304: {region: 0x4d59, code: 0xb4, from: 0xf5730, to: 0x0}, + 305: {region: 0x4d5a, code: 0xb7, from: 0xface1, to: 0x0}, + 306: {region: 0x4d5a, code: 0xb6, from: 0xf78d0, to: 0xfad9f}, + 307: {region: 0x4d5a, code: 0xb5, from: 0xf6ed9, to: 0xf78d0}, + 308: {region: 0x4e41, code: 0xb8, from: 0xf9221, to: 0x0}, + 309: {region: 0x4e41, code: 0x123, from: 0xf524e, to: 0x0}, + 310: {region: 0x4e43, code: 0x115, from: 0xf8221, to: 0x0}, + 311: {region: 0x4e45, code: 0x113, from: 0xf4d93, to: 0x0}, + 312: {region: 0x4e46, code: 0x13, from: 0xf5c4e, to: 0x0}, + 313: {region: 0x4e47, code: 0xb9, from: 0xf6a21, to: 0x0}, + 314: {region: 0x4e49, code: 0xbb, from: 0xf8e9e, to: 0x0}, + 315: {region: 0x4e49, code: 0xba, from: 0xf884f, to: 0xf8e9e}, + 316: {region: 0x4e4c, code: 0x5d, from: 0xf9e21, to: 0x0}, + 317: {region: 0x4e4c, code: 0xbc, from: 0xe2a21, to: 0xfa45c}, + 318: {region: 0x4e4f, code: 0xbd, from: 0xee2c7, to: 0x0}, + 319: {region: 0x4e4f, code: 0xda, from: 0xea2bb, to: 0xee2c7}, + 320: {region: 0x4e50, code: 0xbe, from: 0xf1a21, to: 0x0}, + 321: {region: 0x4e50, code: 0x7c, from: 0xe9c21, to: 0xf5d51}, + 322: {region: 0x4e52, code: 0x13, from: 0xf5c4e, to: 0x0}, + 323: {region: 0x4e55, code: 0xbf, from: 0xf5eea, to: 0x0}, + 324: {region: 0x4e5a, code: 0xbf, from: 0xf5eea, to: 0x0}, + 325: {region: 0x4f4d, code: 0xc0, from: 0xf696b, to: 0x0}, + 326: {region: 0x5041, code: 0xc1, from: 0xedf64, to: 0x0}, + 327: {region: 0x5041, code: 0xfa, from: 0xedf72, to: 0x0}, + 328: {region: 0x5045, code: 0xc3, from: 0xf8ee1, to: 0x0}, + 329: {region: 0x5045, code: 0xc2, from: 0xf8241, to: 0xf8ee1}, + 330: {region: 0x5045, code: 0xc4, from: 0xe8e4e, to: 0xf8241}, + 331: {region: 0x5046, code: 0x115, from: 0xf339a, to: 0x0}, + 332: {region: 0x5047, code: 0xc5, from: 0xf6f30, to: 0x0}, + 333: {region: 0x5047, code: 0x13, from: 0xf5c4e, to: 0xf6f30}, + 334: {region: 0x5048, code: 0xc6, from: 0xf34e4, to: 0x0}, + 335: {region: 0x504b, code: 0xc7, from: 0xf3881, to: 0x0}, + 336: {region: 0x504b, code: 0x7c, from: 0xe5711, to: 0xf370f}, + 337: {region: 0x504c, code: 0xc8, from: 0xf9621, to: 0x0}, + 338: {region: 0x504c, code: 0xc9, from: 0xf3d5c, to: 0xf959f}, + 339: {region: 0x504d, code: 0x5d, from: 0xf9e21, to: 0x0}, + 340: {region: 0x504d, code: 0x61, from: 0xf6995, to: 0xfa451}, + 341: {region: 0x504e, code: 0xbf, from: 0xf622d, to: 0x0}, + 342: {region: 0x5052, code: 0xfa, from: 0xed58a, to: 0x0}, + 343: {region: 0x5052, code: 0x5b, from: 0xe1021, to: 0xed58a}, + 344: {region: 0x5053, code: 0x7b, from: 0xf8324, to: 0x0}, + 345: {region: 0x5053, code: 0x83, from: 0xf984c, to: 0x0}, + 346: {region: 0x5053, code: 0x79, from: 0xf5ec1, to: 0xf7856}, + 347: {region: 0x5053, code: 0x83, from: 0xf3ce1, to: 0xf5ec1}, + 348: {region: 0x5054, code: 0x5d, from: 0xf9e21, to: 0x0}, + 349: {region: 0x5054, code: 0xca, from: 0xeeeb6, to: 0xfa45c}, + 350: {region: 0x5057, code: 0xfa, from: 0xf3021, to: 0x0}, + 351: {region: 0x5059, code: 0xcb, from: 0xf2f61, to: 0x0}, + 352: {region: 0x5141, code: 0xcc, from: 0xf6ab3, to: 0x0}, + 353: {region: 0x5245, code: 0x5d, from: 0xf9e21, to: 0x0}, + 354: {region: 0x5245, code: 0x61, from: 0xf6e21, to: 0xfa451}, + 355: {region: 0x524f, code: 0xcf, from: 0xfaae1, to: 0x0}, + 356: {region: 0x524f, code: 0xce, from: 0xf403c, to: 0xfad9f}, + 357: {region: 0x5253, code: 0xd0, from: 0xfad59, to: 0x0}, + 358: {region: 0x5253, code: 0x47, from: 0xfa4af, to: 0xfad59}, + 359: {region: 0x5253, code: 0x11f, from: 0xf9438, to: 0xfa4af}, + 360: {region: 0x5255, code: 0xd1, from: 0xf9e21, to: 0x0}, + 361: {region: 0x5255, code: 0xd2, from: 0xf8f99, to: 0xf9d9f}, + 362: {region: 0x5257, code: 0xd3, from: 0xf58b3, to: 0x0}, + 363: {region: 0x5341, code: 0xd4, from: 0xf4156, to: 0x0}, + 364: {region: 0x5342, code: 0xd5, from: 0xf7358, to: 0x0}, + 365: {region: 0x5342, code: 0x13, from: 0xf5c4e, to: 0xf74de}, + 366: {region: 0x5343, code: 0xd6, from: 0xedf61, to: 0x0}, + 367: {region: 0x5344, code: 0xd8, from: 0xfae2a, to: 0x0}, + 368: {region: 0x5344, code: 0xd7, from: 0xf90c8, to: 0xfaede}, + 369: {region: 0x5344, code: 0xd9, from: 0xf4a88, to: 0xf9cc1}, + 370: {region: 0x5344, code: 0x57, from: 0xec233, to: 0xf4c21}, + 371: {region: 0x5344, code: 0x62, from: 0xec233, to: 0xf4c21}, + 372: {region: 0x5345, code: 0xda, from: 0xea2bb, to: 0x0}, + 373: {region: 0x5347, code: 0xdb, from: 0xf5ecc, to: 0x0}, + 374: {region: 0x5347, code: 0xb4, from: 0xf5730, to: 0xf5ecc}, + 375: {region: 0x5348, code: 0xdc, from: 0xefa4f, to: 0x0}, + 376: {region: 0x5349, code: 0x5d, from: 0xfae21, to: 0x0}, + 377: {region: 0x5349, code: 0xdd, from: 0xf9147, to: 0xfae2e}, + 378: {region: 0x534a, code: 0xbd, from: 0xee2c7, to: 0x0}, + 379: {region: 0x534b, code: 0x5d, from: 0xfb221, to: 0x0}, + 380: {region: 0x534b, code: 0xde, from: 0xf919f, to: 0xfb221}, + 381: {region: 0x534b, code: 0x48, from: 0xf42c1, to: 0xf919f}, + 382: {region: 0x534c, code: 0xdf, from: 0xf5904, to: 0x0}, + 383: {region: 0x534c, code: 0x62, from: 0xe217e, to: 0xf5c44}, + 384: {region: 0x534d, code: 0x5d, from: 0xf9e21, to: 0x0}, + 385: {region: 0x534d, code: 0x81, from: 0xe9397, to: 0xfa25c}, + 386: {region: 0x534e, code: 0x113, from: 0xf4e84, to: 0x0}, + 387: {region: 0x534f, code: 0xe0, from: 0xf50e1, to: 0x0}, + 388: {region: 0x5352, code: 0xe1, from: 0xfa821, to: 0x0}, + 389: {region: 0x5352, code: 0xe2, from: 0xf28aa, to: 0xfa79f}, + 390: {region: 0x5352, code: 0xbc, from: 0xe2f74, to: 0xf28aa}, + 391: {region: 0x5353, code: 0xe3, from: 0xfb6f2, to: 0x0}, + 392: {region: 0x5353, code: 0xd8, from: 0xfae2a, to: 0xfb721}, + 393: {region: 0x5354, code: 0xe4, from: 0xf7328, to: 0x0}, + 394: {region: 0x5355, code: 0xe5, from: 0xf5221, to: 0xf8f99}, + 395: {region: 0x5356, code: 0xfa, from: 0xfa221, to: 0x0}, + 396: {region: 0x5356, code: 0xe6, from: 0xeff6b, to: 0xfa221}, + 397: {region: 0x5358, code: 0x8, from: 0xfb54a, to: 0x0}, + 398: {region: 0x5359, code: 0xe7, from: 0xf3821, to: 0x0}, + 399: {region: 0x535a, code: 0xe8, from: 0xf6d26, to: 0x0}, + 400: {region: 0x5441, code: 0x62, from: 0xf242c, to: 0x0}, + 401: {region: 0x5443, code: 0xfa, from: 0xf6328, to: 0x0}, + 402: {region: 0x5444, code: 0x107, from: 0xf9221, to: 0x0}, + 403: {region: 0x5446, code: 0x5d, from: 0xf9e21, to: 0x0}, + 404: {region: 0x5446, code: 0x61, from: 0xf4e21, to: 0xfa451}, + 405: {region: 0x5447, code: 0x113, from: 0xf4d7c, to: 0x0}, + 406: {region: 0x5448, code: 0xe9, from: 0xf108f, to: 0x0}, + 407: {region: 0x544a, code: 0xeb, from: 0xfa15a, to: 0x0}, + 408: {region: 0x544a, code: 0xea, from: 0xf96aa, to: 0xfa159}, + 409: {region: 0x544a, code: 0xd2, from: 0xf8f99, to: 0xf96aa}, + 410: {region: 0x544b, code: 0xbf, from: 0xf5eea, to: 0x0}, + 411: {region: 0x544c, code: 0xfa, from: 0xf9f54, to: 0x0}, + 412: {region: 0x544c, code: 0xf0, from: 0xf4e22, to: 0xfa4b4}, + 413: {region: 0x544c, code: 0x77, from: 0xf6f87, to: 0xfa4b4}, + 414: {region: 0x544d, code: 0xed, from: 0xfb221, to: 0x0}, + 415: {region: 0x544d, code: 0xec, from: 0xf9361, to: 0xfb221}, + 416: {region: 0x544d, code: 0xd2, from: 0xf8f99, to: 0xf9361}, + 417: {region: 0x544d, code: 0xe5, from: 0xf5221, to: 0xf8f99}, + 418: {region: 0x544e, code: 0xee, from: 0xf4d61, to: 0x0}, + 419: {region: 0x544f, code: 0xef, from: 0xf5c4e, to: 0x0}, + 420: {region: 0x5450, code: 0xf0, from: 0xf4e22, to: 0xfa4b4}, + 421: {region: 0x5450, code: 0x77, from: 0xf6f87, to: 0xfa4b4}, + 422: {region: 0x5452, code: 0xf2, from: 0xfaa21, to: 0x0}, + 423: {region: 0x5452, code: 0xf1, from: 0xf0561, to: 0xfab9f}, + 424: {region: 0x5454, code: 0xf3, from: 0xf5821, to: 0x0}, + 425: {region: 0x5456, code: 0x13, from: 0xf5c4e, to: 0x0}, + 426: {region: 0x5457, code: 0xf4, from: 0xf3acf, to: 0x0}, + 427: {region: 0x545a, code: 0xf5, from: 0xf5cce, to: 0x0}, + 428: {region: 0x5541, code: 0xf6, from: 0xf9922, to: 0x0}, + 429: {region: 0x5541, code: 0xf7, from: 0xf916d, to: 0xf9351}, + 430: {region: 0x5541, code: 0xd2, from: 0xf8f99, to: 0xf916d}, + 431: {region: 0x5541, code: 0xe5, from: 0xf5221, to: 0xf8f99}, + 432: {region: 0x5547, code: 0xf9, from: 0xf86af, to: 0x0}, + 433: {region: 0x5547, code: 0xf8, from: 0xf5d0f, to: 0xf86af}, + 434: {region: 0x554d, code: 0xfa, from: 0xf3021, to: 0x0}, + 435: {region: 0x5553, code: 0xfa, from: 0xe0021, to: 0x0}, + 436: {region: 0x5553, code: 0x80fb, from: 0x0, to: 0x0}, + 437: {region: 0x5553, code: 0x80fc, from: 0x0, to: 0xfbc61}, + 438: {region: 0x5559, code: 0xff, from: 0xf9261, to: 0x0}, + 439: {region: 0x5559, code: 0xfe, from: 0xf6ee1, to: 0xf9261}, + 440: {region: 0x5559, code: 0x80fd, from: 0x0, to: 0x0}, + 441: {region: 0x555a, code: 0x100, from: 0xf94e1, to: 0x0}, + 442: {region: 0x5641, code: 0x5d, from: 0xf9e21, to: 0x0}, + 443: {region: 0x5641, code: 0x81, from: 0xe9d53, to: 0xfa45c}, + 444: {region: 0x5643, code: 0x10e, from: 0xf5b46, to: 0x0}, + 445: {region: 0x5645, code: 0x102, from: 0xfb021, to: 0x0}, + 446: {region: 0x5645, code: 0x101, from: 0xe9eab, to: 0xfb0de}, + 447: {region: 0x5647, code: 0xfa, from: 0xe5221, to: 0x0}, + 448: {region: 0x5647, code: 0x62, from: 0xe5221, to: 0xf4e21}, + 449: {region: 0x5649, code: 0xfa, from: 0xe5a21, to: 0x0}, + 450: {region: 0x564e, code: 0x103, from: 0xf832e, to: 0x0}, + 451: {region: 0x564e, code: 0x104, from: 0xf74a3, to: 0xf832e}, + 452: {region: 0x5655, code: 0x105, from: 0xf7a21, to: 0x0}, + 453: {region: 0x5746, code: 0x115, from: 0xf52fe, to: 0x0}, + 454: {region: 0x5753, code: 0x106, from: 0xf5eea, to: 0x0}, + 455: {region: 0x584b, code: 0x5d, from: 0xfa421, to: 0x0}, + 456: {region: 0x584b, code: 0x4f, from: 0xf9f21, to: 0xfa469}, + 457: {region: 0x584b, code: 0x11f, from: 0xf9438, to: 0xf9f3e}, + 458: {region: 0x5944, code: 0x11c, from: 0xf5a81, to: 0xf9821}, + 459: {region: 0x5945, code: 0x11d, from: 0xf8cb6, to: 0x0}, + 460: {region: 0x5954, code: 0x5d, from: 0xf9e21, to: 0x0}, + 461: {region: 0x5954, code: 0x61, from: 0xf7057, to: 0xfa451}, + 462: {region: 0x5954, code: 0x88, from: 0xf6e21, to: 0xf7057}, + 463: {region: 0x5955, code: 0x11f, from: 0xf9438, to: 0xfa4af}, + 464: {region: 0x5955, code: 0x120, from: 0xf8c21, to: 0xf90f8}, + 465: {region: 0x5955, code: 0x11e, from: 0xf5c21, to: 0xf8c21}, + 466: {region: 0x5a41, code: 0x123, from: 0xf524e, to: 0x0}, + 467: {region: 0x5a41, code: 0x8122, from: 0xf8321, to: 0xf966d}, + 468: {region: 0x5a4d, code: 0x125, from: 0xfba21, to: 0x0}, + 469: {region: 0x5a4d, code: 0x124, from: 0xf6030, to: 0xfba21}, + 470: {region: 0x5a52, code: 0x126, from: 0xf9361, to: 0xf9cff}, + 471: {region: 0x5a52, code: 0x127, from: 0xf675b, to: 0xf9361}, + 472: {region: 0x5a57, code: 0xfa, from: 0xfb28c, to: 0x0}, + 473: {region: 0x5a57, code: 0x129, from: 0xfb242, to: 0xfb28c}, + 474: {region: 0x5a57, code: 0x12a, from: 0xfb101, to: 0xfb242}, + 475: {region: 0x5a57, code: 0x128, from: 0xf7892, to: 0xfb101}, + 476: {region: 0x5a57, code: 0xcd, from: 0xf6451, to: 0xf7892}, 477: {region: 0x5a5a, code: 0x8108, from: 0x0, to: 0x0}, 478: {region: 0x5a5a, code: 0x8109, from: 0x0, to: 0x0}, 479: {region: 0x5a5a, code: 0x810a, from: 0x0, to: 0x0}, 480: {region: 0x5a5a, code: 0x810b, from: 0x0, to: 0x0}, 481: {region: 0x5a5a, code: 0x810c, from: 0x0, to: 0x0}, - 482: {region: 0x5a5a, code: 0x810e, from: 0x0, to: 0x0}, - 483: {region: 0x5a5a, code: 0x8110, from: 0xf1421, to: 0xfa681}, - 484: {region: 0x5a5a, code: 0x8111, from: 0x0, to: 0xfbb7e}, - 485: {region: 0x5a5a, code: 0x8113, from: 0x0, to: 0x0}, - 486: {region: 0x5a5a, code: 0x8115, from: 0x0, to: 0x0}, - 487: {region: 0x5a5a, code: 0x8116, from: 0x0, to: 0xf9f7e}, - 488: {region: 0x5a5a, code: 0x8117, from: 0x0, to: 0x0}, + 482: {region: 0x5a5a, code: 0x810d, from: 0x0, to: 0x0}, + 483: {region: 0x5a5a, code: 0x810f, from: 0x0, to: 0x0}, + 484: {region: 0x5a5a, code: 0x8111, from: 0xf1421, to: 0xfa681}, + 485: {region: 0x5a5a, code: 0x8112, from: 0x0, to: 0xfbb7e}, + 486: {region: 0x5a5a, code: 0x8114, from: 0x0, to: 0x0}, + 487: {region: 0x5a5a, code: 0x8116, from: 0x0, to: 0x0}, + 488: {region: 0x5a5a, code: 0x8117, from: 0x0, to: 0xf9f7e}, 489: {region: 0x5a5a, code: 0x8118, from: 0x0, to: 0x0}, 490: {region: 0x5a5a, code: 0x8119, from: 0x0, to: 0x0}, 491: {region: 0x5a5a, code: 0x811a, from: 0x0, to: 0x0}, -} // Size: 5928 bytes + 492: {region: 0x5a5a, code: 0x811b, from: 0x0, to: 0x0}, +} // Size: 5940 bytes // symbols holds symbol data of the form , where n is the length of // the symbol string str. -var symbols string = "" + // Size: 1460 bytes +const symbols string = "" + // Size: 1396 bytes "\x00\x02Kz\x01$\x02A$\x02KM\x03৳\x02Bs\x02R$\x01P\x03р.\x03CA$\x04CN¥" + "\x02¥\x03₡\x03Kč\x02kr\x03E£\x03₧\x03€\x02£\x03₾\x02FG\x01Q\x03HK$\x01L" + "\x02kn\x02Ft\x02Rp\x03₪\x03₹\x04JP¥\x03៛\x02CF\x03₩\x03₸\x03₭\x03L£\x02R" + "s\x02Lt\x02Ls\x02Ar\x01K\x03₮\x03MX$\x02RM\x03₦\x02C$\x03NZ$\x03₱\x03zł" + - "\x03₲\x03₽\x02RF\x02Db\x03฿\x02T$\x03₺\x03NT$\x03₴\x03US$\x03₫\x04FCFA" + - "\x03EC$\x03CFA\x04CFPF\x01R\x02ZK\x05GH₵\x03AU$\x06ብር\x03***\x09د.إ." + - "\u200f\x03AR$\x03BB$\x09د.ب.\u200f\x03BM$\x03BN$\x03BS$\x03BZ$\x03CL$" + - "\x03CO$\x03CU$\x03DO$\x09د.ج.\u200f\x09ج.م.\u200f\x03FJ$\x04UK£\x03GY$" + - "\x08ر.إن.\x09د.ع.\u200f\x06ر.إ.\x03JM$\x09د.أ.\u200f\x0cف.ج.ق.\u200f\x09" + - "د.ك.\u200f\x03KY$\x09ل.ل.\u200f\x09د.ل.\u200f\x09د.م.\u200f\x09أ.م." + - "\u200f\x09ر.ع.\u200f\x06ر.ب.\x09ر.ق.\u200f\x09ر.س.\u200f\x03SB$\x09د.س." + - "\u200f\x06ج.س.\x03SR$\x09ج.ج.س.\x09ل.س.\u200f\x09د.ت.\u200f\x06ل.ت.\x03T" + - "T$\x03UY$\x09ر.ي.\u200f\x03Fdj\x03Nfk\x01S\x04GB£\x03TSh\x03₼\x03S£\x04B" + - "ds$\x03BD$\x02B$\x04CUC$\x03$MN\x03RD$\x04FK£\x02G$\x04Íkr\x02J$\x03CI$" + - "\x02L$\x02N$\x07руб.\x03SI$\x02S$\x02$U\x05лв.\x06щ.д.\x02$A\x03$CA\x04£" + - " E\x05£ RU\x04$ HK\x03£L\x04$ ZN\x03$ T\x04$ SU\x04din.\x04КМ\x04Кч\x04з" + - "л\x07дин.\x04Тл\x01F\x03USh\x04Kčs\x03ECU\x02TK\x03kr.\x03Ksh\x03öS\x03" + - "BGK\x03BGJ\x04Cub$\x02DM\x04Fl£\x04F.G.\x02FC\x04F.Rw\x03Nu.\x05KR₩\x05T" + - "H฿\x06Δρχ\x02Tk\x02$b\x02Kr\x02Gs\x03CFP\x03FBu\x01D\x04MOP$\x02MK\x02SR" + - "\x02Le\x04NAf.\x01E\x02VT\x03WS$\x03BsF\x02Af\x03Naf\x02$a\x04Afl.\x02Br" + - "\x02TL\x03B/.\x03S/.\x03Gs.\x03Bs.\x02؋\x04¥CN\x03$HK\x08ریال\x03$MX\x03" + - "$NZ\x03$EC\x02UM\x02mk\x03$AR\x03$AU\x02FB\x03$BM\x03$BN\x03$BS\x03$BZ" + - "\x03$CL\x03$CO\x04£CY\x03£E\x03$FJ\x04£FK\x04£GB\x04£GI\x04£IE\x04£IL" + - "\x05₤IT\x04£LB\x04£MT\x03$NA\x02$C\x03$RH\x02FR\x03$SB\x03$SG\x03$SR\x03" + - "$TT\x03$US\x03$UY\x04FCFP\x02Kw\x05$\u00a0AU\x05$\u00a0HK\x05$\u00a0NZ" + - "\x05$\u00a0SG\x05$\u00a0US\x02DA\x01G\x02LS\x02DT\x02$R\x04¥JP\x03$NT" + - "\x07રૂ.\x06ל״י\x03₨\x02֏\x03NKr\x03元\x03¥\x03\u200b\x04БД\x05КД$\x02LE" + - "\x02Kn\x06сом\x02zl\x02rb\x03MTn\x06ден\x12ဒေါ်လာ\x12စီအာစီ\x0cनेरू\x02ر" + - "\x04Esc.\x06\u200bPTE\x04XXXX\x06ТМТ\x03Dkr\x03Skr\x03Nkr\x07රු.\x0fසිෆ්" + - "එ\x03NIS\x05Lekë\x03den\x05[BGN]\x05[BYR]\x06руб\x02r.\x03rub\x03BR$" + - "\x03Ekr\x04EG£\x03Ikr\x03Rs.\x04AUD$\x04NZD$\x07крб.\x05soʻm\x06сўм\x03₩" + - "\x03ILS\x02P.\x03Zł" + "\x03₲\x03lei\x03₽\x02RF\x02Db\x03฿\x02T$\x03₺\x03NT$\x03₴\x03US$\x03₫" + + "\x04FCFA\x03EC$\x03CFA\x04CFPF\x01R\x02ZK\x05GH₵\x03AU$\x06ብር\x03***\x09" + + "د.إ.\u200f\x03AR$\x03BB$\x09د.ب.\u200f\x03BM$\x03BN$\x03BS$\x03BZ$\x03C" + + "L$\x03CO$\x03CU$\x03DO$\x09د.ج.\u200f\x09ج.م.\u200f\x03FJ$\x04UK£\x03GY$" + + "\x09د.ع.\u200f\x06ر.إ.\x03JM$\x09د.أ.\u200f\x0cف.ج.ق.\u200f\x09د.ك." + + "\u200f\x03KY$\x09ل.ل.\u200f\x09د.ل.\u200f\x09د.م.\u200f\x09أ.م.\u200f" + + "\x09ر.ع.\u200f\x09ر.ق.\u200f\x09ر.س.\u200f\x03SB$\x09د.س.\u200f\x06ج.س." + + "\x03SR$\x09ل.س.\u200f\x09د.ت.\u200f\x03TT$\x03UY$\x09ر.ي.\u200f\x03Fdj" + + "\x03Nfk\x01S\x04GB£\x03TSh\x03₼\x03ley\x03S£\x04Bds$\x03BD$\x02B$\x02Br" + + "\x04CUC$\x03$MN\x03RD$\x04FK£\x02G$\x04Íkr\x02J$\x03CI$\x02L$\x02N$\x07р" + + "уб.\x03SI$\x02S$\x02$U\x05лв.\x06щ.д.\x02$A\x03$CA\x04£ E\x05£ RU\x04$ " + + "HK\x03£L\x04$ ZN\x03$ T\x04$ SU\x04din.\x04КМ\x04Кч\x04зл\x07дин.\x04Тл" + + "\x01F\x03USh\x04Kčs\x03ECU\x02TK\x03kr.\x03Ksh\x03öS\x03BGK\x03BGJ\x04Cu" + + "b$\x02DM\x04Fl£\x04F.G.\x02FC\x04F.Rw\x03Nu.\x05KR₩\x05TH฿\x06Δρχ\x02Tk" + + "\x02$b\x02Kr\x02Gs\x03CFP\x03FBu\x01D\x04MOP$\x02MK\x02SR\x02Le\x04NAf." + + "\x01E\x02VT\x03WS$\x03BsF\x02Af\x03Naf\x02$a\x04Afl.\x02TL\x03B/.\x02S/" + + "\x03Gs.\x03Bs.\x02؋\x04¥CN\x03$HK\x08ریال\x03$MX\x03$NZ\x03$EC\x02UM\x02" + + "mk\x03$AR\x03$AU\x02FB\x03$BM\x03$BN\x03$BS\x03$BZ\x03$CL\x03$CO\x04£CY" + + "\x03£E\x03$FJ\x04£FK\x04£GB\x04£GI\x04£IE\x04£IL\x05₤IT\x04£LB\x04£MT" + + "\x03$NA\x02$C\x03$RH\x02FR\x03$SB\x03$SG\x03$SR\x03$TT\x03$US\x03$UY\x04" + + "FCFP\x02Kw\x05$\u00a0AU\x05$\u00a0HK\x05$\u00a0NZ\x05$\u00a0SG\x05$" + + "\u00a0US\x02DA\x01G\x02LS\x02DT\x02$R\x06руб\x07રૂ.\x0a\u200eCN¥\u200e" + + "\x06ל״י\x02֏\x03NKr\x03元\x03¥\x03\u200b\x02LE\x02Kn\x06сом\x02zl\x02rb" + + "\x03MTn\x06ден\x04кр\x03NAf\x03Afl\x0cनेरू\x06रू\x02ر\x04Esc.\x06\u200bP" + + "TE\x04XXXX\x03ლ\x06ТМТ\x03Dkr\x03Skr\x03Nkr\x07රු.\x0fසිෆ්එ\x03NIS\x05Le" + + "kë\x03den\x02r.\x03BR$\x03Ekr\x04EG£\x04IE£\x03Ikr\x03Rs.\x04AUD$\x04NZD" + + "$\x07крб.\x05soʻm\x06сўм\x03₩\x03ILS\x02P.\x03Zł" type curToIndex struct { cur uint16 idx uint16 } -var normalLangIndex = []uint16{ // 748 elements +var normalLangIndex = []uint16{ // 755 elements // Entry 0 - 3F 0x0000, 0x0014, 0x0014, 0x0014, 0x0017, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0019, 0x0019, 0x001c, 0x001c, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0039, 0x0039, 0x0039, 0x0039, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003c, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003f, 0x003f, 0x0042, 0x0042, - 0x0044, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x004c, - 0x004c, 0x004d, 0x004d, 0x004e, 0x004e, 0x005f, 0x005f, 0x005f, + 0x0018, 0x0019, 0x0019, 0x001c, 0x001c, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0035, 0x0035, 0x0035, 0x0035, 0x0036, 0x0036, 0x0036, + 0x0036, 0x0036, 0x0036, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, + 0x0037, 0x0037, 0x0037, 0x0037, 0x0038, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003b, 0x003b, 0x003e, + 0x003e, 0x0040, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, + 0x0048, 0x0048, 0x0049, 0x0049, 0x004a, 0x004a, 0x005b, 0x005b, // Entry 40 - 7F - 0x005f, 0x005f, 0x0061, 0x0061, 0x0061, 0x0062, 0x0062, 0x0063, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0082, 0x0088, 0x0088, 0x0088, - 0x0088, 0x0091, 0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0093, - 0x0094, 0x0094, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x009c, - 0x009c, 0x009d, 0x009d, 0x009f, 0x009f, 0x00a3, 0x00a3, 0x00a3, - 0x00a4, 0x00a4, 0x00ac, 0x00ac, 0x00ac, 0x00ad, 0x00ad, 0x00ae, - 0x00af, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00ba, 0x00ba, 0x00bb, 0x00bb, 0x00be, 0x00be, + 0x005b, 0x005b, 0x005b, 0x005d, 0x005d, 0x005d, 0x005e, 0x005e, + 0x005f, 0x006d, 0x006d, 0x006d, 0x006d, 0x007e, 0x0084, 0x0084, + 0x0084, 0x0084, 0x008d, 0x008d, 0x008d, 0x008e, 0x008e, 0x008f, + 0x008f, 0x0090, 0x0090, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, + 0x0098, 0x0098, 0x0099, 0x0099, 0x009b, 0x009b, 0x009f, 0x009f, + 0x009f, 0x00a0, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, + 0x00a8, 0x00a9, 0x00aa, 0x00aa, 0x00aa, 0x00af, 0x00af, 0x00af, + 0x00af, 0x00af, 0x00af, 0x00af, 0x00b5, 0x00b5, 0x00b6, 0x00b6, // Entry 80 - BF - 0x00be, 0x00c1, 0x00c1, 0x00c1, 0x00c3, 0x00c5, 0x00c5, 0x00c6, - 0x00c7, 0x00c7, 0x00c7, 0x00dc, 0x00dd, 0x00dd, 0x00de, 0x00df, - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e4, 0x00e5, 0x00e5, - 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00e9, - 0x00ea, 0x00ec, 0x00ec, 0x00ec, 0x00ed, 0x00ed, 0x00ee, 0x00f0, - 0x00f1, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, - 0x00f2, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, - 0x00f9, 0x00fa, 0x00fb, 0x00fb, 0x00fc, 0x00fc, 0x00fd, 0x00fe, + 0x00b9, 0x00b9, 0x00b9, 0x00bc, 0x00bc, 0x00bc, 0x00be, 0x00c0, + 0x00c0, 0x00c1, 0x00c2, 0x00c2, 0x00c2, 0x00d7, 0x00d8, 0x00d8, + 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00df, + 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e2, 0x00e3, + 0x00e4, 0x00e4, 0x00e5, 0x00e7, 0x00e7, 0x00e7, 0x00e8, 0x00e8, + 0x00e9, 0x00eb, 0x00ec, 0x00ec, 0x00ed, 0x00ed, 0x00ed, 0x00ed, + 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, + 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f6, 0x00f7, 0x00f7, // Entry C0 - FF - 0x00ff, 0x0100, 0x0101, 0x0102, 0x0103, 0x0104, 0x0104, 0x0105, - 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010b, 0x010b, 0x010b, - 0x010c, 0x010d, 0x010e, 0x010e, 0x010f, 0x0110, 0x0112, 0x0112, - 0x0113, 0x0115, 0x0116, 0x0117, 0x0117, 0x0118, 0x0119, 0x011a, - 0x011b, 0x011c, 0x011d, 0x011d, 0x011d, 0x011e, 0x011e, 0x011e, - 0x011f, 0x0120, 0x0121, 0x0122, 0x0122, 0x0122, 0x0122, 0x0134, - 0x0139, 0x013b, 0x013c, 0x013d, 0x013f, 0x0141, 0x0142, 0x0144, - 0x0146, 0x0146, 0x0147, 0x0147, 0x0148, 0x0149, 0x014a, 0x014a, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, + 0x00ff, 0x0100, 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, + 0x0106, 0x0106, 0x0107, 0x0108, 0x0109, 0x0109, 0x010a, 0x010b, + 0x010d, 0x010d, 0x010e, 0x0110, 0x0111, 0x0112, 0x0112, 0x0113, + 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0118, 0x0118, 0x0119, + 0x0119, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011d, 0x011d, + 0x011d, 0x012f, 0x0134, 0x0136, 0x0137, 0x0138, 0x0139, 0x013b, + 0x013d, 0x013e, 0x0140, 0x0142, 0x0142, 0x0143, 0x0143, 0x0144, // Entry 100 - 13F - 0x0153, 0x0154, 0x0155, 0x0156, 0x0157, 0x0158, 0x0159, 0x015a, - 0x015c, 0x015e, 0x015f, 0x0164, 0x0164, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0172, 0x0173, - 0x0173, 0x0184, 0x0184, 0x0188, 0x0188, 0x0189, 0x018a, 0x018a, - 0x01b0, 0x01b0, 0x01b0, 0x01b1, 0x01b1, 0x01b1, 0x01d1, 0x01d2, - 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d3, 0x01d4, 0x01d4, - 0x01d4, 0x01d4, 0x01d5, 0x01d5, 0x01d5, 0x01d6, 0x01d7, 0x01d9, - 0x01d9, 0x01d9, 0x01d9, 0x01da, 0x01da, 0x01da, 0x01db, 0x01dc, + 0x0145, 0x0146, 0x0146, 0x014f, 0x0150, 0x0151, 0x0152, 0x0153, + 0x0154, 0x0155, 0x0156, 0x0158, 0x015a, 0x015b, 0x0160, 0x0160, + 0x0162, 0x0162, 0x0162, 0x0162, 0x016d, 0x016d, 0x016d, 0x016d, + 0x016d, 0x016e, 0x016f, 0x016f, 0x0180, 0x0180, 0x0184, 0x0184, + 0x0185, 0x0186, 0x0186, 0x01ac, 0x01ac, 0x01ac, 0x01ad, 0x01ad, + 0x01ad, 0x01ce, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, + 0x01d0, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d2, 0x01d2, 0x01d2, + 0x01d3, 0x01d4, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d7, 0x01d7, // Entry 140 - 17F - 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dd, 0x01de, 0x01de, - 0x01df, 0x01df, 0x01df, 0x01e0, 0x01e1, 0x01e1, 0x01e1, 0x01e1, - 0x01e1, 0x01e7, 0x01e7, 0x01ea, 0x01ea, 0x01ec, 0x01ec, 0x01f6, - 0x01f6, 0x01f9, 0x01f9, 0x01f9, 0x01f9, 0x01fa, 0x01fa, 0x01fa, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fc, 0x01fd, 0x01fd, 0x01fd, - 0x01fe, 0x01fe, 0x0201, 0x0201, 0x0203, 0x0203, 0x0215, 0x0216, - 0x0216, 0x021b, 0x021b, 0x022d, 0x022d, 0x0230, 0x0230, 0x0234, - 0x0234, 0x0235, 0x0235, 0x0236, 0x0236, 0x0242, 0x0242, 0x0249, + 0x01d7, 0x01d8, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, + 0x01da, 0x01db, 0x01db, 0x01dc, 0x01dc, 0x01dc, 0x01dd, 0x01de, + 0x01de, 0x01de, 0x01de, 0x01de, 0x01e4, 0x01e4, 0x01e7, 0x01e7, + 0x01e9, 0x01e9, 0x01f0, 0x01f0, 0x01f3, 0x01f3, 0x01f3, 0x01f3, + 0x01f4, 0x01f4, 0x01f4, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f6, + 0x01f7, 0x01f7, 0x01f7, 0x01f8, 0x01f8, 0x01fd, 0x01fd, 0x01ff, + 0x01ff, 0x0211, 0x0212, 0x0212, 0x0217, 0x0217, 0x0229, 0x0229, + 0x022c, 0x022c, 0x0230, 0x0230, 0x0231, 0x0231, 0x0232, 0x0232, // Entry 180 - 1BF - 0x0249, 0x0249, 0x0249, 0x0249, 0x024e, 0x024e, 0x024e, 0x024e, - 0x024e, 0x024f, 0x024f, 0x024f, 0x0259, 0x0259, 0x025a, 0x025a, - 0x025a, 0x025b, 0x025b, 0x025b, 0x025c, 0x025c, 0x025f, 0x025f, - 0x025f, 0x025f, 0x0260, 0x0260, 0x0266, 0x0266, 0x0266, 0x0266, - 0x0267, 0x0267, 0x0268, 0x0268, 0x026b, 0x026b, 0x026d, 0x026d, - 0x026f, 0x026f, 0x026f, 0x026f, 0x026f, 0x026f, 0x026f, 0x0270, - 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, - 0x027f, 0x027f, 0x0280, 0x0280, 0x0285, 0x0285, 0x0286, 0x0286, + 0x023e, 0x023e, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245, + 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0249, 0x0249, 0x0249, + 0x0253, 0x0253, 0x0254, 0x0254, 0x0254, 0x0255, 0x0255, 0x0255, + 0x0256, 0x0256, 0x0259, 0x0259, 0x0259, 0x0259, 0x025a, 0x025a, + 0x025e, 0x025e, 0x025e, 0x025e, 0x025f, 0x025f, 0x0260, 0x0260, + 0x0263, 0x0263, 0x0265, 0x0265, 0x0266, 0x0266, 0x0266, 0x0266, + 0x0266, 0x0266, 0x0266, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0276, 0x0276, 0x0277, 0x0277, // Entry 1C0 - 1FF - 0x0287, 0x0287, 0x0288, 0x0289, 0x0289, 0x0289, 0x0289, 0x028b, - 0x028b, 0x028b, 0x028b, 0x028b, 0x029e, 0x029e, 0x029f, 0x029f, - 0x02a0, 0x02a0, 0x02a1, 0x02a1, 0x02a6, 0x02a6, 0x02a7, 0x02a7, - 0x02a8, 0x02a9, 0x02a9, 0x02aa, 0x02aa, 0x02ab, 0x02ab, 0x02ac, - 0x02ac, 0x02ac, 0x02ac, 0x02b8, 0x02b8, 0x02bb, 0x02bb, 0x02be, - 0x02be, 0x02c0, 0x02c0, 0x02c4, 0x02c5, 0x02c5, 0x02c6, 0x02c6, - 0x02c6, 0x02c6, 0x02c6, 0x02c9, 0x02c9, 0x02ca, 0x02ca, 0x02ca, - 0x02cb, 0x02cb, 0x02dd, 0x02dd, 0x02dd, 0x02dd, 0x02dd, 0x02df, + 0x027c, 0x027c, 0x027d, 0x027d, 0x027e, 0x027e, 0x027f, 0x0280, + 0x0280, 0x0280, 0x0280, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, + 0x0295, 0x0295, 0x0296, 0x0296, 0x0297, 0x0297, 0x0298, 0x0298, + 0x029d, 0x029d, 0x029e, 0x029e, 0x029f, 0x02a0, 0x02a0, 0x02a1, + 0x02a1, 0x02a2, 0x02a2, 0x02a3, 0x02a3, 0x02a3, 0x02a3, 0x02af, + 0x02af, 0x02b2, 0x02b2, 0x02b5, 0x02b5, 0x02b7, 0x02b7, 0x02bb, + 0x02bc, 0x02bc, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02c4, + 0x02c4, 0x02c5, 0x02c5, 0x02c5, 0x02c6, 0x02c6, 0x02d8, 0x02d8, // Entry 200 - 23F - 0x02df, 0x02df, 0x02e5, 0x02e6, 0x02e6, 0x02e7, 0x02e8, 0x02e8, - 0x02e9, 0x02ea, 0x02ea, 0x02ea, 0x02eb, 0x02eb, 0x02eb, 0x02eb, - 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02ed, 0x02ed, 0x02ed, 0x02ee, - 0x02ee, 0x02ef, 0x02ef, 0x02f0, 0x02f0, 0x02f0, 0x02f2, 0x02f2, - 0x02f4, 0x02f5, 0x02f6, 0x02f6, 0x02f6, 0x02f6, 0x02f6, 0x0305, - 0x0305, 0x0305, 0x0305, 0x0306, 0x0306, 0x0309, 0x030a, 0x030a, - 0x030a, 0x030c, 0x030c, 0x030c, 0x030d, 0x030e, 0x030f, 0x0310, - 0x0311, 0x0311, 0x0312, 0x0314, 0x0316, 0x0316, 0x0316, 0x0316, + 0x02d8, 0x02d8, 0x02d8, 0x02d8, 0x02d8, 0x02d8, 0x02da, 0x02da, + 0x02da, 0x02e0, 0x02e1, 0x02e1, 0x02e2, 0x02e3, 0x02e3, 0x02e4, + 0x02e5, 0x02e5, 0x02e5, 0x02e6, 0x02e6, 0x02e6, 0x02e6, 0x02e6, + 0x02e6, 0x02e6, 0x02e6, 0x02e8, 0x02e8, 0x02e8, 0x02e9, 0x02e9, + 0x02ea, 0x02ea, 0x02eb, 0x02eb, 0x02eb, 0x02ed, 0x02ed, 0x02ef, + 0x02f0, 0x02f1, 0x02f1, 0x02f1, 0x02f1, 0x02f1, 0x0300, 0x0300, + 0x0300, 0x0300, 0x0301, 0x0301, 0x0304, 0x0305, 0x0305, 0x0305, + 0x0307, 0x0307, 0x0307, 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, // Entry 240 - 27F - 0x0317, 0x0317, 0x0328, 0x0329, 0x0329, 0x032a, 0x032a, 0x0332, - 0x0334, 0x0335, 0x0336, 0x0337, 0x0337, 0x0337, 0x0338, 0x0338, - 0x0339, 0x0339, 0x033a, 0x033a, 0x033b, 0x033b, 0x033c, 0x033c, - 0x033c, 0x0340, 0x0340, 0x0340, 0x0342, 0x0343, 0x0343, 0x0343, - 0x0343, 0x0343, 0x0343, 0x0343, 0x0343, 0x0343, 0x0343, 0x0343, - 0x0346, 0x0346, 0x0354, 0x0354, 0x0358, 0x0358, 0x0358, 0x0358, - 0x0358, 0x0358, 0x0358, 0x0358, 0x0358, 0x0358, 0x0359, 0x035a, - 0x035b, 0x035c, 0x035c, 0x035e, 0x035e, 0x035f, 0x035f, 0x0367, + 0x030c, 0x030d, 0x030f, 0x0311, 0x0311, 0x0311, 0x0311, 0x0312, + 0x0312, 0x0323, 0x0324, 0x0324, 0x0325, 0x0325, 0x032d, 0x032f, + 0x0330, 0x0331, 0x0332, 0x0332, 0x0332, 0x0333, 0x0333, 0x0334, + 0x0334, 0x0335, 0x0335, 0x0336, 0x0336, 0x0337, 0x0337, 0x0337, + 0x033b, 0x033b, 0x033b, 0x033d, 0x033e, 0x033e, 0x033e, 0x033e, + 0x033e, 0x033e, 0x033e, 0x033e, 0x033e, 0x033e, 0x033e, 0x0341, + 0x0341, 0x034f, 0x034f, 0x0353, 0x0353, 0x0353, 0x0353, 0x0353, + 0x0353, 0x0353, 0x0353, 0x0353, 0x0353, 0x0354, 0x0355, 0x0356, // Entry 280 - 2BF - 0x0367, 0x0367, 0x0367, 0x0367, 0x0367, 0x036f, 0x036f, 0x036f, - 0x036f, 0x036f, 0x036f, 0x036f, 0x036f, 0x0386, 0x0386, 0x0386, - 0x0386, 0x0389, 0x038a, 0x038a, 0x038a, 0x038b, 0x038b, 0x038e, - 0x038e, 0x038f, 0x0391, 0x0394, 0x0396, 0x0396, 0x0397, 0x0398, - 0x0398, 0x039a, 0x039a, 0x039b, 0x039c, 0x039c, 0x039c, 0x039e, - 0x039e, 0x039e, 0x03a1, 0x03a1, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a8, 0x03a8, 0x03bb, 0x03bb, - 0x03be, 0x03bf, 0x03bf, 0x03c0, 0x03c1, 0x03c1, 0x03c3, 0x03c3, + 0x0357, 0x0357, 0x0359, 0x0359, 0x035a, 0x035a, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0366, 0x0366, 0x0366, 0x0366, + 0x0366, 0x0366, 0x0366, 0x0366, 0x037e, 0x037e, 0x037e, 0x037e, + 0x0381, 0x0382, 0x0382, 0x0382, 0x0383, 0x0383, 0x0386, 0x0386, + 0x0387, 0x0389, 0x038c, 0x038e, 0x038e, 0x038f, 0x0390, 0x0390, + 0x0392, 0x0392, 0x0393, 0x0394, 0x0394, 0x0394, 0x0396, 0x0396, + 0x0396, 0x0399, 0x0399, 0x039e, 0x039e, 0x039e, 0x039e, 0x039e, + 0x039e, 0x039e, 0x039e, 0x03a0, 0x03a0, 0x03b3, 0x03b3, 0x03b6, // Entry 2C0 - 2FF - 0x03c3, 0x03c3, 0x03c4, 0x03c5, 0x03c5, 0x03c5, 0x03c5, 0x03c5, - 0x03c7, 0x03c7, 0x03c7, 0x03c7, 0x03c8, 0x03c8, 0x03c8, 0x03ca, - 0x03ca, 0x03ca, 0x03ca, 0x03cb, 0x03cb, 0x03cb, 0x03cb, 0x03cb, - 0x03cb, 0x03cc, 0x03cc, 0x03cc, 0x03d0, 0x03d0, 0x03d0, 0x03d0, - 0x03d4, 0x03d4, 0x03d4, 0x03d5, 0x03d7, 0x03d9, 0x03dd, 0x03df, - 0x03e0, 0x03e0, 0x03e2, 0x03e2, -} // Size: 1520 bytes + 0x03b7, 0x03b7, 0x03b8, 0x03b9, 0x03b9, 0x03bb, 0x03bb, 0x03bb, + 0x03bb, 0x03bc, 0x03bd, 0x03bd, 0x03bd, 0x03bd, 0x03bd, 0x03bf, + 0x03bf, 0x03bf, 0x03bf, 0x03c0, 0x03c0, 0x03c0, 0x03c2, 0x03c2, + 0x03c2, 0x03c2, 0x03c3, 0x03c3, 0x03c3, 0x03c3, 0x03c3, 0x03c3, + 0x03c4, 0x03c4, 0x03c4, 0x03c7, 0x03c7, 0x03c7, 0x03c7, 0x03cb, + 0x03cb, 0x03cb, 0x03cc, 0x03ce, 0x03d0, 0x03d4, 0x03d6, 0x03d7, + 0x03d7, 0x03d9, 0x03d9, +} // Size: 1534 bytes -var normalSymIndex = []curToIndex{ // 994 elements +var normalSymIndex = []curToIndex{ // 985 elements 0: {cur: 0x13, idx: 0x6}, 1: {cur: 0x2e, idx: 0x13}, - 2: {cur: 0x39, idx: 0x1c}, - 3: {cur: 0x42, idx: 0x20}, - 4: {cur: 0x5c, idx: 0x3b}, - 5: {cur: 0x61, idx: 0x3f}, - 6: {cur: 0x70, idx: 0x4b}, - 7: {cur: 0x7a, idx: 0x5a}, - 8: {cur: 0x7b, idx: 0x5e}, - 9: {cur: 0x83, idx: 0x62}, - 10: {cur: 0x8b, idx: 0x6e}, - 11: {cur: 0xb0, idx: 0x90}, - 12: {cur: 0xbe, idx: 0x9e}, - 13: {cur: 0xf3, idx: 0xc3}, - 14: {cur: 0xf9, idx: 0xcb}, - 15: {cur: 0x102, idx: 0xcf}, - 16: {cur: 0x106, idx: 0xd3}, - 17: {cur: 0x10d, idx: 0xd8}, - 18: {cur: 0x112, idx: 0xdc}, - 19: {cur: 0x114, idx: 0xe0}, - 20: {cur: 0xb0, idx: 0x0}, - 21: {cur: 0xe8, idx: 0xb8}, - 22: {cur: 0x122, idx: 0xe5}, - 23: {cur: 0xb7, idx: 0x4}, - 24: {cur: 0x65, idx: 0xea}, - 25: {cur: 0x13, idx: 0xf0}, - 26: {cur: 0x5b, idx: 0xf4}, - 27: {cur: 0xe8, idx: 0xb8}, - 28: {cur: 0x0, idx: 0xfb}, - 29: {cur: 0x2, idx: 0xff}, - 30: {cur: 0x13, idx: 0xf0}, - 31: {cur: 0x23, idx: 0x111}, - 32: {cur: 0x52, idx: 0x13b}, - 33: {cur: 0x56, idx: 0x145}, - 34: {cur: 0x76, idx: 0x15c}, - 35: {cur: 0x7c, idx: 0x165}, - 36: {cur: 0x7d, idx: 0x16f}, - 37: {cur: 0x82, idx: 0x17a}, - 38: {cur: 0x87, idx: 0x184}, - 39: {cur: 0x8c, idx: 0x191}, - 40: {cur: 0x90, idx: 0x19f}, - 41: {cur: 0x9b, idx: 0x1a9}, - 42: {cur: 0x9c, idx: 0x1b3}, - 43: {cur: 0xa9, idx: 0x1bd}, - 44: {cur: 0xbf, idx: 0x1c7}, - 45: {cur: 0xc6, idx: 0x1d1}, - 46: {cur: 0xcb, idx: 0x1d8}, - 47: {cur: 0xd3, idx: 0x1e2}, - 48: {cur: 0xd6, idx: 0x1f0}, - 49: {cur: 0xd7, idx: 0x1fa}, - 50: {cur: 0xe2, idx: 0x205}, - 51: {cur: 0xe6, idx: 0x20f}, - 52: {cur: 0xe8, idx: 0xb8}, - 53: {cur: 0xed, idx: 0x219}, - 54: {cur: 0xf1, idx: 0x223}, - 55: {cur: 0x11c, idx: 0x232}, - 56: {cur: 0x4f, idx: 0x23c}, - 57: {cur: 0x57, idx: 0x240}, - 58: {cur: 0xd7, idx: 0x0}, - 59: {cur: 0xdf, idx: 0x244}, - 60: {cur: 0x61, idx: 0x246}, - 61: {cur: 0xe2, idx: 0x3f}, - 62: {cur: 0xf4, idx: 0x24b}, - 63: {cur: 0x83, idx: 0x25}, - 64: {cur: 0xe8, idx: 0xb8}, - 65: {cur: 0xf9, idx: 0x4}, - 66: {cur: 0x16, idx: 0x24f}, - 67: {cur: 0xe8, idx: 0xb8}, - 68: {cur: 0x16, idx: 0x24f}, - 69: {cur: 0x2e, idx: 0x0}, - 70: {cur: 0x37, idx: 0x18}, - 71: {cur: 0x39, idx: 0x0}, - 72: {cur: 0x83, idx: 0x25}, - 73: {cur: 0xbe, idx: 0x0}, - 74: {cur: 0xd0, idx: 0xae}, - 75: {cur: 0xf9, idx: 0x4}, - 76: {cur: 0x124, idx: 0x8a}, - 77: {cur: 0xf4, idx: 0x24b}, - 78: {cur: 0x13, idx: 0x0}, - 79: {cur: 0x21, idx: 0x29c}, - 80: {cur: 0x2e, idx: 0x0}, - 81: {cur: 0x39, idx: 0x0}, - 82: {cur: 0x42, idx: 0x0}, - 83: {cur: 0x61, idx: 0x0}, - 84: {cur: 0x70, idx: 0x0}, - 85: {cur: 0x7a, idx: 0x0}, - 86: {cur: 0x7b, idx: 0x0}, - 87: {cur: 0x83, idx: 0x0}, - 88: {cur: 0x8b, idx: 0x0}, - 89: {cur: 0xb0, idx: 0x0}, - 90: {cur: 0xbe, idx: 0x0}, - 91: {cur: 0xf3, idx: 0x0}, - 92: {cur: 0xf9, idx: 0x2a2}, - 93: {cur: 0x102, idx: 0x0}, - 94: {cur: 0x10d, idx: 0x0}, - 95: {cur: 0x1b, idx: 0xc}, - 96: {cur: 0xe8, idx: 0xb8}, - 97: {cur: 0x42, idx: 0x25}, - 98: {cur: 0x42, idx: 0x20}, - 99: {cur: 0x13, idx: 0x2a9}, - 100: {cur: 0x2e, idx: 0x0}, - 101: {cur: 0x39, idx: 0x2ac}, - 102: {cur: 0x42, idx: 0x0}, - 103: {cur: 0x61, idx: 0x2b5}, - 104: {cur: 0x70, idx: 0x2bb}, - 105: {cur: 0x7a, idx: 0x0}, - 106: {cur: 0x83, idx: 0x0}, - 107: {cur: 0x8b, idx: 0x0}, - 108: {cur: 0xbe, idx: 0x2c4}, - 109: {cur: 0xf3, idx: 0x0}, - 110: {cur: 0xf9, idx: 0x2cd}, - 111: {cur: 0x102, idx: 0x0}, - 112: {cur: 0x10d, idx: 0x0}, - 113: {cur: 0x13, idx: 0x0}, - 114: {cur: 0x18, idx: 0x9}, - 115: {cur: 0x2e, idx: 0x0}, - 116: {cur: 0x39, idx: 0x0}, - 117: {cur: 0x42, idx: 0x0}, - 118: {cur: 0x61, idx: 0x0}, - 119: {cur: 0x70, idx: 0x0}, - 120: {cur: 0x73, idx: 0x51}, - 121: {cur: 0x7a, idx: 0x0}, - 122: {cur: 0x83, idx: 0x25}, - 123: {cur: 0xb0, idx: 0x0}, - 124: {cur: 0xbe, idx: 0x0}, - 125: {cur: 0xcf, idx: 0x2d2}, - 126: {cur: 0xe8, idx: 0xb8}, - 127: {cur: 0xf9, idx: 0x0}, - 128: {cur: 0x10d, idx: 0x0}, - 129: {cur: 0x114, idx: 0x0}, - 130: {cur: 0x18, idx: 0x2d7}, - 131: {cur: 0x4c, idx: 0x2dc}, - 132: {cur: 0x83, idx: 0x25}, - 133: {cur: 0xc7, idx: 0x2e1}, - 134: {cur: 0xcf, idx: 0x2e6}, - 135: {cur: 0xf1, idx: 0x2ee}, - 136: {cur: 0x13, idx: 0xf0}, - 137: {cur: 0x2e, idx: 0x0}, - 138: {cur: 0x39, idx: 0x0}, - 139: {cur: 0x42, idx: 0x25}, - 140: {cur: 0x5a, idx: 0x37}, - 141: {cur: 0xb0, idx: 0x0}, - 142: {cur: 0xe8, idx: 0xb8}, - 143: {cur: 0xf9, idx: 0x0}, - 144: {cur: 0x10d, idx: 0x0}, - 145: {cur: 0x60, idx: 0x2f3}, - 146: {cur: 0xd0, idx: 0xae}, - 147: {cur: 0xf8, idx: 0x2f5}, - 148: {cur: 0xf9, idx: 0x4}, - 149: {cur: 0x13, idx: 0xf0}, - 150: {cur: 0x47, idx: 0x2f9}, - 151: {cur: 0x4c, idx: 0x2c}, - 152: {cur: 0x7a, idx: 0x0}, - 153: {cur: 0x7b, idx: 0x0}, - 154: {cur: 0x102, idx: 0x0}, - 155: {cur: 0x10f, idx: 0x2fe}, - 156: {cur: 0xd0, idx: 0xae}, - 157: {cur: 0x8b, idx: 0x0}, - 158: {cur: 0xe8, idx: 0xb8}, - 159: {cur: 0x13, idx: 0xf0}, - 160: {cur: 0x50, idx: 0x305}, - 161: {cur: 0xe8, idx: 0xb8}, - 162: {cur: 0xf9, idx: 0x4}, - 163: {cur: 0x84, idx: 0x309}, - 164: {cur: 0x12, idx: 0x30d}, - 165: {cur: 0x13, idx: 0xf0}, - 166: {cur: 0x20, idx: 0x311}, - 167: {cur: 0x22, idx: 0x315}, - 168: {cur: 0x4e, idx: 0x31e}, - 169: {cur: 0x83, idx: 0x25}, - 170: {cur: 0xe8, idx: 0xb8}, - 171: {cur: 0xf9, idx: 0x4}, - 172: {cur: 0x5c, idx: 0x0}, - 173: {cur: 0x5c, idx: 0x0}, - 174: {cur: 0x97, idx: 0x2f3}, - 175: {cur: 0x13, idx: 0x0}, - 176: {cur: 0x83, idx: 0x25}, - 177: {cur: 0xc7, idx: 0xa6}, - 178: {cur: 0xe8, idx: 0xb8}, - 179: {cur: 0xf9, idx: 0x4}, - 180: {cur: 0x13, idx: 0xf0}, - 181: {cur: 0x33, idx: 0x333}, - 182: {cur: 0x7a, idx: 0x0}, - 183: {cur: 0x8b, idx: 0x337}, - 184: {cur: 0xe8, idx: 0x33d}, - 185: {cur: 0x106, idx: 0x0}, - 186: {cur: 0x84, idx: 0x309}, - 187: {cur: 0x13, idx: 0xf0}, - 188: {cur: 0x65, idx: 0xea}, - 189: {cur: 0xe8, idx: 0xb8}, - 190: {cur: 0x6b, idx: 0x343}, - 191: {cur: 0xe8, idx: 0xb8}, - 192: {cur: 0xf9, idx: 0x4}, - 193: {cur: 0x83, idx: 0x25}, - 194: {cur: 0xf9, idx: 0x4}, - 195: {cur: 0x83, idx: 0x62}, - 196: {cur: 0xf9, idx: 0xcb}, - 197: {cur: 0x10d, idx: 0x4}, - 198: {cur: 0x10d, idx: 0x4}, - 199: {cur: 0x13, idx: 0x4}, - 200: {cur: 0x2e, idx: 0x0}, - 201: {cur: 0x39, idx: 0x0}, - 202: {cur: 0x42, idx: 0x0}, - 203: {cur: 0x5c, idx: 0x0}, - 204: {cur: 0x61, idx: 0x0}, - 205: {cur: 0x70, idx: 0x0}, - 206: {cur: 0x7a, idx: 0x0}, - 207: {cur: 0x7b, idx: 0x0}, - 208: {cur: 0x83, idx: 0x0}, - 209: {cur: 0x8b, idx: 0x0}, - 210: {cur: 0xb0, idx: 0x0}, - 211: {cur: 0xbe, idx: 0x0}, - 212: {cur: 0xd5, idx: 0x7e}, - 213: {cur: 0xf3, idx: 0x0}, - 214: {cur: 0xf9, idx: 0x0}, - 215: {cur: 0x102, idx: 0x0}, - 216: {cur: 0x106, idx: 0x0}, - 217: {cur: 0x10d, idx: 0x0}, - 218: {cur: 0x112, idx: 0x0}, - 219: {cur: 0x114, idx: 0x356}, - 220: {cur: 0x1a, idx: 0x4}, - 221: {cur: 0x24, idx: 0x35a}, - 222: {cur: 0x25, idx: 0x4}, - 223: {cur: 0x32, idx: 0x4}, - 224: {cur: 0x35, idx: 0x16}, - 225: {cur: 0x38, idx: 0x4}, - 226: {cur: 0x39, idx: 0x4}, - 227: {cur: 0x13, idx: 0x4}, - 228: {cur: 0xbe, idx: 0x4}, - 229: {cur: 0x13, idx: 0x4}, - 230: {cur: 0x50, idx: 0x305}, - 231: {cur: 0x10d, idx: 0x4}, - 232: {cur: 0x57, idx: 0x240}, - 233: {cur: 0x5e, idx: 0x4}, - 234: {cur: 0x5f, idx: 0x3f}, - 235: {cur: 0x61, idx: 0x246}, - 236: {cur: 0x10d, idx: 0x4}, - 237: {cur: 0x65, idx: 0xea}, - 238: {cur: 0x61, idx: 0x246}, - 239: {cur: 0x66, idx: 0x3f}, - 240: {cur: 0x67, idx: 0x35e}, - 241: {cur: 0x6f, idx: 0x4}, - 242: {cur: 0x81, idx: 0x4}, - 243: {cur: 0x84, idx: 0x309}, - 244: {cur: 0x13, idx: 0x4}, - 245: {cur: 0x10d, idx: 0x4}, - 246: {cur: 0x8d, idx: 0x4}, - 247: {cur: 0x10d, idx: 0x4}, - 248: {cur: 0x92, idx: 0x4}, - 249: {cur: 0x122, idx: 0xe5}, - 250: {cur: 0xa1, idx: 0x87}, - 251: {cur: 0xa8, idx: 0x360}, - 252: {cur: 0x10d, idx: 0x4}, - 253: {cur: 0x61, idx: 0x246}, - 254: {cur: 0xac, idx: 0x7e}, - 255: {cur: 0xaf, idx: 0x365}, - 256: {cur: 0xb3, idx: 0x94}, - 257: {cur: 0xb7, idx: 0x4}, - 258: {cur: 0x13, idx: 0x4}, - 259: {cur: 0xb8, idx: 0x97}, - 260: {cur: 0x13, idx: 0x4}, - 261: {cur: 0xbe, idx: 0x4}, - 262: {cur: 0xbe, idx: 0x4}, - 263: {cur: 0xc4, idx: 0x8a}, - 264: {cur: 0xc5, idx: 0xa2}, - 265: {cur: 0xc6, idx: 0x7e}, - 266: {cur: 0xbe, idx: 0x4}, - 267: {cur: 0xd2, idx: 0xb2}, - 268: {cur: 0xd4, idx: 0x4}, - 269: {cur: 0xd5, idx: 0x368}, - 270: {cur: 0xd9, idx: 0x30}, - 271: {cur: 0xda, idx: 0x4}, - 272: {cur: 0x61, idx: 0x246}, - 273: {cur: 0xdb, idx: 0x3f}, - 274: {cur: 0xde, idx: 0x36b}, - 275: {cur: 0x61, idx: 0x246}, - 276: {cur: 0xe2, idx: 0x3f}, - 277: {cur: 0x8, idx: 0x36e}, - 278: {cur: 0xe7, idx: 0x373}, - 279: {cur: 0xbe, idx: 0x4}, - 280: {cur: 0xee, idx: 0xbc}, - 281: {cur: 0xf2, idx: 0x4}, - 282: {cur: 0x13, idx: 0x4}, - 283: {cur: 0xf4, idx: 0x24b}, - 284: {cur: 0xf8, idx: 0x2f5}, - 285: {cur: 0x10d, idx: 0x4}, - 286: {cur: 0x104, idx: 0x375}, - 287: {cur: 0x105, idx: 0x378}, - 288: {cur: 0x122, idx: 0xe5}, - 289: {cur: 0x124, idx: 0x8a}, - 290: {cur: 0x13, idx: 0x0}, - 291: {cur: 0x2e, idx: 0x0}, - 292: {cur: 0x42, idx: 0x0}, - 293: {cur: 0x5a, idx: 0x37}, - 294: {cur: 0x61, idx: 0x0}, - 295: {cur: 0x70, idx: 0x0}, - 296: {cur: 0x7a, idx: 0x0}, - 297: {cur: 0x7b, idx: 0x0}, - 298: {cur: 0x83, idx: 0x0}, - 299: {cur: 0x8b, idx: 0x0}, - 300: {cur: 0xb0, idx: 0x0}, - 301: {cur: 0xbe, idx: 0x0}, - 302: {cur: 0xe8, idx: 0xb8}, - 303: {cur: 0xf3, idx: 0x0}, - 304: {cur: 0xf9, idx: 0x4}, - 305: {cur: 0x106, idx: 0x0}, - 306: {cur: 0x10d, idx: 0x0}, - 307: {cur: 0x112, idx: 0x0}, - 308: {cur: 0x39, idx: 0x0}, - 309: {cur: 0x5c, idx: 0x0}, - 310: {cur: 0xe8, idx: 0x0}, - 311: {cur: 0xf9, idx: 0x0}, - 312: {cur: 0x102, idx: 0x0}, - 313: {cur: 0x11, idx: 0x4}, - 314: {cur: 0xf9, idx: 0xcb}, - 315: {cur: 0x27, idx: 0x10}, - 316: {cur: 0x2e, idx: 0x13}, - 317: {cur: 0x40, idx: 0x4}, - 318: {cur: 0xf9, idx: 0xcb}, - 319: {cur: 0x43, idx: 0x4}, - 320: {cur: 0xf9, idx: 0xcb}, - 321: {cur: 0x45, idx: 0x28}, - 322: {cur: 0x49, idx: 0x4}, - 323: {cur: 0xf9, idx: 0xcb}, - 324: {cur: 0x51, idx: 0x26c}, - 325: {cur: 0xf9, idx: 0xcb}, - 326: {cur: 0xf9, idx: 0x4}, - 327: {cur: 0x106, idx: 0xd3}, - 328: {cur: 0x6c, idx: 0x49}, - 329: {cur: 0x71, idx: 0x4f}, - 330: {cur: 0x4, idx: 0x380}, - 331: {cur: 0x8, idx: 0x383}, - 332: {cur: 0x9, idx: 0x1}, - 333: {cur: 0x11, idx: 0x387}, - 334: {cur: 0x13, idx: 0xf0}, - 335: {cur: 0x14, idx: 0x38a}, - 336: {cur: 0x42, idx: 0x20}, - 337: {cur: 0xb0, idx: 0x4}, - 338: {cur: 0x114, idx: 0x0}, - 339: {cur: 0xba, idx: 0x9b}, - 340: {cur: 0xc0, idx: 0x395}, - 341: {cur: 0xc2, idx: 0x399}, - 342: {cur: 0xc5, idx: 0xa2}, - 343: {cur: 0xf9, idx: 0x4}, - 344: {cur: 0xca, idx: 0x39d}, - 345: {cur: 0xf9, idx: 0x4}, - 346: {cur: 0x83, idx: 0x25}, - 347: {cur: 0xf9, idx: 0x4}, - 348: {cur: 0xf9, idx: 0xcb}, - 349: {cur: 0xfe, idx: 0x4}, - 350: {cur: 0x101, idx: 0x3a1}, - 351: {cur: 0x13, idx: 0xf0}, - 352: {cur: 0x55, idx: 0x30}, - 353: {cur: 0x83, idx: 0x25}, - 354: {cur: 0xe8, idx: 0xb8}, - 355: {cur: 0xf9, idx: 0x4}, - 356: {cur: 0x5a, idx: 0x37}, - 357: {cur: 0xe8, idx: 0xb8}, - 358: {cur: 0x4, idx: 0x3a5}, - 359: {cur: 0x39, idx: 0x2ac}, - 360: {cur: 0x42, idx: 0x3a8}, - 361: {cur: 0x70, idx: 0x3ad}, - 362: {cur: 0x7d, idx: 0x3b1}, - 363: {cur: 0x83, idx: 0x25}, - 364: {cur: 0xb0, idx: 0x3ba}, - 365: {cur: 0xbe, idx: 0x3be}, - 366: {cur: 0xe8, idx: 0xb8}, - 367: {cur: 0xf9, idx: 0x4}, - 368: {cur: 0x10d, idx: 0x3c2}, - 369: {cur: 0x68, idx: 0x46}, - 370: {cur: 0xa9, idx: 0x3c6}, - 371: {cur: 0x13, idx: 0x0}, - 372: {cur: 0x2e, idx: 0x0}, - 373: {cur: 0x39, idx: 0x0}, - 374: {cur: 0x42, idx: 0x0}, - 375: {cur: 0x5d, idx: 0x3c9}, - 376: {cur: 0x70, idx: 0x0}, - 377: {cur: 0x7a, idx: 0x0}, - 378: {cur: 0x7b, idx: 0x0}, - 379: {cur: 0x83, idx: 0x25}, - 380: {cur: 0x8b, idx: 0x0}, - 381: {cur: 0xb0, idx: 0x0}, - 382: {cur: 0xbe, idx: 0x0}, - 383: {cur: 0xf3, idx: 0x0}, - 384: {cur: 0xf9, idx: 0x4}, - 385: {cur: 0x102, idx: 0x0}, - 386: {cur: 0x10d, idx: 0x0}, - 387: {cur: 0x114, idx: 0x0}, - 388: {cur: 0x83, idx: 0x25}, - 389: {cur: 0xc5, idx: 0xa2}, - 390: {cur: 0xe8, idx: 0xb8}, - 391: {cur: 0xf9, idx: 0x4}, - 392: {cur: 0x50, idx: 0x30}, - 393: {cur: 0x50, idx: 0x305}, - 394: {cur: 0x11, idx: 0x3cc}, - 395: {cur: 0x13, idx: 0x3d0}, - 396: {cur: 0x1d, idx: 0x3d4}, - 397: {cur: 0x25, idx: 0x3d7}, - 398: {cur: 0x26, idx: 0x3db}, - 399: {cur: 0x32, idx: 0x3df}, - 400: {cur: 0x38, idx: 0x3e3}, - 401: {cur: 0x39, idx: 0x2ac}, - 402: {cur: 0x40, idx: 0x3e7}, - 403: {cur: 0x42, idx: 0x0}, - 404: {cur: 0x43, idx: 0x3eb}, - 405: {cur: 0x4b, idx: 0x3ef}, - 406: {cur: 0x5e, idx: 0x3f8}, - 407: {cur: 0x5f, idx: 0x3fc}, - 408: {cur: 0x60, idx: 0x2f3}, - 409: {cur: 0x61, idx: 0x401}, - 410: {cur: 0x66, idx: 0x406}, - 411: {cur: 0x70, idx: 0x0}, - 412: {cur: 0x77, idx: 0x40b}, - 413: {cur: 0x78, idx: 0x410}, - 414: {cur: 0x80, idx: 0x415}, - 415: {cur: 0x83, idx: 0x0}, - 416: {cur: 0x90, idx: 0x41b}, - 417: {cur: 0xab, idx: 0x420}, - 418: {cur: 0xb0, idx: 0x3ba}, - 419: {cur: 0xb7, idx: 0x425}, - 420: {cur: 0xbe, idx: 0x3be}, - 421: {cur: 0xcc, idx: 0x42c}, - 422: {cur: 0xd4, idx: 0x433}, - 423: {cur: 0xda, idx: 0x437}, - 424: {cur: 0xe0, idx: 0x43b}, - 425: {cur: 0xf2, idx: 0x43f}, - 426: {cur: 0xf3, idx: 0x0}, - 427: {cur: 0xf9, idx: 0x443}, - 428: {cur: 0xfe, idx: 0x447}, - 429: {cur: 0x105, idx: 0x378}, - 430: {cur: 0x10d, idx: 0x0}, - 431: {cur: 0x114, idx: 0x44b}, - 432: {cur: 0x24, idx: 0x35a}, - 433: {cur: 0x11, idx: 0x0}, - 434: {cur: 0x13, idx: 0x453}, - 435: {cur: 0x25, idx: 0x0}, - 436: {cur: 0x26, idx: 0x0}, - 437: {cur: 0x32, idx: 0x0}, - 438: {cur: 0x38, idx: 0x0}, - 439: {cur: 0x39, idx: 0x4}, - 440: {cur: 0x40, idx: 0x0}, - 441: {cur: 0x42, idx: 0x20}, - 442: {cur: 0x43, idx: 0x0}, - 443: {cur: 0x5e, idx: 0x0}, - 444: {cur: 0x5f, idx: 0x0}, - 445: {cur: 0x61, idx: 0x3f}, - 446: {cur: 0x66, idx: 0x0}, - 447: {cur: 0x70, idx: 0x459}, - 448: {cur: 0x7a, idx: 0x0}, - 449: {cur: 0x83, idx: 0x25}, - 450: {cur: 0x8b, idx: 0x0}, - 451: {cur: 0x90, idx: 0x0}, - 452: {cur: 0xb0, idx: 0x0}, - 453: {cur: 0xb7, idx: 0x0}, - 454: {cur: 0xbe, idx: 0x45f}, - 455: {cur: 0xd4, idx: 0x0}, - 456: {cur: 0xda, idx: 0x465}, - 457: {cur: 0xe0, idx: 0x0}, - 458: {cur: 0xf2, idx: 0x0}, - 459: {cur: 0xf9, idx: 0x46b}, - 460: {cur: 0xfe, idx: 0x0}, - 461: {cur: 0x102, idx: 0x0}, - 462: {cur: 0x106, idx: 0x0}, - 463: {cur: 0x112, idx: 0x0}, - 464: {cur: 0x114, idx: 0x0}, - 465: {cur: 0x3a, idx: 0x32b}, - 466: {cur: 0x4f, idx: 0x23c}, - 467: {cur: 0x52, idx: 0x471}, - 468: {cur: 0x68, idx: 0x46}, - 469: {cur: 0x74, idx: 0x474}, - 470: {cur: 0x87, idx: 0x6b}, - 471: {cur: 0x60, idx: 0x0}, - 472: {cur: 0x97, idx: 0x2f3}, - 473: {cur: 0xa1, idx: 0x87}, - 474: {cur: 0xa9, idx: 0x3c6}, - 475: {cur: 0xac, idx: 0x7e}, - 476: {cur: 0xd2, idx: 0xb2}, - 477: {cur: 0xd5, idx: 0x368}, - 478: {cur: 0xe6, idx: 0x476}, - 479: {cur: 0xed, idx: 0x479}, - 480: {cur: 0x104, idx: 0x375}, - 481: {cur: 0x13, idx: 0xf0}, - 482: {cur: 0x39, idx: 0x9b}, - 483: {cur: 0x5e, idx: 0x14f}, - 484: {cur: 0xd4, idx: 0x292}, - 485: {cur: 0xe8, idx: 0xb8}, - 486: {cur: 0x114, idx: 0x0}, - 487: {cur: 0x83, idx: 0x25}, - 488: {cur: 0xe8, idx: 0xb8}, - 489: {cur: 0xf9, idx: 0x4}, - 490: {cur: 0xe8, idx: 0xb8}, - 491: {cur: 0xf9, idx: 0x4}, - 492: {cur: 0x13, idx: 0x2a9}, - 493: {cur: 0x2e, idx: 0x47c}, - 494: {cur: 0x39, idx: 0x2ac}, - 495: {cur: 0x5a, idx: 0x37}, - 496: {cur: 0x70, idx: 0x3ad}, - 497: {cur: 0x83, idx: 0x47f}, - 498: {cur: 0xb0, idx: 0x3ba}, - 499: {cur: 0xe8, idx: 0xb8}, - 500: {cur: 0xf3, idx: 0x484}, - 501: {cur: 0xf9, idx: 0x4}, - 502: {cur: 0x12, idx: 0x30d}, - 503: {cur: 0x83, idx: 0x25}, - 504: {cur: 0xf9, idx: 0x4}, - 505: {cur: 0xe8, idx: 0xb8}, - 506: {cur: 0x84, idx: 0x309}, - 507: {cur: 0xb8, idx: 0x97}, - 508: {cur: 0x65, idx: 0xea}, - 509: {cur: 0xf9, idx: 0x4}, - 510: {cur: 0x78, idx: 0x490}, - 511: {cur: 0xe8, idx: 0xb8}, - 512: {cur: 0xf9, idx: 0x4}, - 513: {cur: 0xe8, idx: 0xb8}, - 514: {cur: 0xf9, idx: 0x4}, - 515: {cur: 0x13, idx: 0x0}, - 516: {cur: 0x2e, idx: 0x0}, - 517: {cur: 0x39, idx: 0x0}, - 518: {cur: 0x42, idx: 0x0}, - 519: {cur: 0x5c, idx: 0x0}, - 520: {cur: 0x61, idx: 0x0}, - 521: {cur: 0x70, idx: 0x0}, - 522: {cur: 0x7a, idx: 0x0}, - 523: {cur: 0x7b, idx: 0x0}, - 524: {cur: 0x83, idx: 0x0}, - 525: {cur: 0x8b, idx: 0x0}, - 526: {cur: 0xb0, idx: 0x0}, - 527: {cur: 0xbe, idx: 0x0}, - 528: {cur: 0xf3, idx: 0x0}, - 529: {cur: 0xf9, idx: 0x0}, - 530: {cur: 0x102, idx: 0x0}, - 531: {cur: 0x10d, idx: 0x0}, - 532: {cur: 0x114, idx: 0x0}, - 533: {cur: 0x18, idx: 0x9}, - 534: {cur: 0x13, idx: 0x0}, - 535: {cur: 0x83, idx: 0x25}, - 536: {cur: 0xc7, idx: 0xa6}, - 537: {cur: 0xe8, idx: 0xb8}, - 538: {cur: 0xf9, idx: 0x4}, - 539: {cur: 0x13, idx: 0x0}, - 540: {cur: 0x2e, idx: 0x0}, - 541: {cur: 0x39, idx: 0x0}, - 542: {cur: 0x42, idx: 0x0}, - 543: {cur: 0x5c, idx: 0x0}, - 544: {cur: 0x61, idx: 0x0}, - 545: {cur: 0x70, idx: 0x0}, - 546: {cur: 0x75, idx: 0x54}, - 547: {cur: 0x7a, idx: 0x0}, - 548: {cur: 0x7b, idx: 0x0}, - 549: {cur: 0x83, idx: 0x25}, - 550: {cur: 0x8b, idx: 0x0}, - 551: {cur: 0xb0, idx: 0x0}, - 552: {cur: 0xbe, idx: 0x0}, - 553: {cur: 0xf3, idx: 0x0}, - 554: {cur: 0xf9, idx: 0x0}, - 555: {cur: 0x102, idx: 0x0}, - 556: {cur: 0x10d, idx: 0x0}, - 557: {cur: 0x7, idx: 0x49b}, - 558: {cur: 0xe8, idx: 0xb8}, - 559: {cur: 0xf9, idx: 0x4}, - 560: {cur: 0x13, idx: 0xf0}, - 561: {cur: 0x76, idx: 0x57}, - 562: {cur: 0x7b, idx: 0x7e}, - 563: {cur: 0xe8, idx: 0xb8}, - 564: {cur: 0xb8, idx: 0x97}, - 565: {cur: 0x42, idx: 0x25}, - 566: {cur: 0x13, idx: 0x0}, - 567: {cur: 0x2e, idx: 0x0}, - 568: {cur: 0x39, idx: 0x0}, - 569: {cur: 0x5c, idx: 0x0}, - 570: {cur: 0x61, idx: 0x0}, - 571: {cur: 0x7b, idx: 0x0}, - 572: {cur: 0x8b, idx: 0x0}, - 573: {cur: 0xb0, idx: 0x0}, - 574: {cur: 0xbe, idx: 0x0}, - 575: {cur: 0xf3, idx: 0x0}, - 576: {cur: 0xf9, idx: 0x0}, - 577: {cur: 0x102, idx: 0x0}, - 578: {cur: 0x2e, idx: 0x0}, - 579: {cur: 0x70, idx: 0x0}, - 580: {cur: 0x83, idx: 0x0}, - 581: {cur: 0x8b, idx: 0x0}, - 582: {cur: 0xb0, idx: 0x0}, - 583: {cur: 0xe8, idx: 0xb8}, - 584: {cur: 0xf3, idx: 0x0}, - 585: {cur: 0x13, idx: 0xf0}, - 586: {cur: 0x42, idx: 0x4a2}, - 587: {cur: 0x83, idx: 0x4a6}, - 588: {cur: 0xe8, idx: 0xb8}, - 589: {cur: 0xf9, idx: 0x4}, - 590: {cur: 0xf4, idx: 0x24b}, - 591: {cur: 0x13, idx: 0x0}, - 592: {cur: 0x42, idx: 0x0}, - 593: {cur: 0x63, idx: 0x42}, - 594: {cur: 0x70, idx: 0x0}, - 595: {cur: 0x7a, idx: 0x0}, - 596: {cur: 0x7b, idx: 0x0}, - 597: {cur: 0x83, idx: 0x0}, - 598: {cur: 0x8b, idx: 0x0}, - 599: {cur: 0xbe, idx: 0x0}, - 600: {cur: 0x102, idx: 0x0}, - 601: {cur: 0x52, idx: 0x471}, - 602: {cur: 0x84, idx: 0x309}, - 603: {cur: 0xf4, idx: 0x24b}, - 604: {cur: 0x13, idx: 0xf0}, - 605: {cur: 0x4a, idx: 0x4aa}, - 606: {cur: 0xe8, idx: 0xb8}, - 607: {cur: 0x84, idx: 0x309}, - 608: {cur: 0x25, idx: 0x4ae}, - 609: {cur: 0x39, idx: 0x4b3}, - 610: {cur: 0x8e, idx: 0x72}, - 611: {cur: 0xd0, idx: 0xae}, - 612: {cur: 0xe8, idx: 0xb8}, - 613: {cur: 0xf9, idx: 0x4}, - 614: {cur: 0x50, idx: 0x305}, - 615: {cur: 0x84, idx: 0x309}, - 616: {cur: 0x86, idx: 0x67}, - 617: {cur: 0xe8, idx: 0xb8}, - 618: {cur: 0xf9, idx: 0x4}, - 619: {cur: 0xe8, idx: 0xb8}, - 620: {cur: 0xf9, idx: 0x4}, - 621: {cur: 0x13, idx: 0xf0}, - 622: {cur: 0xe8, idx: 0xb8}, - 623: {cur: 0xf4, idx: 0x24b}, - 624: {cur: 0x13, idx: 0x0}, - 625: {cur: 0x2e, idx: 0x0}, - 626: {cur: 0x39, idx: 0x0}, - 627: {cur: 0x61, idx: 0x0}, - 628: {cur: 0x70, idx: 0x0}, - 629: {cur: 0x7a, idx: 0x0}, - 630: {cur: 0x7b, idx: 0x0}, - 631: {cur: 0x85, idx: 0x4bf}, - 632: {cur: 0x8b, idx: 0x0}, - 633: {cur: 0xb0, idx: 0x0}, - 634: {cur: 0xbe, idx: 0x0}, - 635: {cur: 0xe8, idx: 0xb8}, - 636: {cur: 0xf3, idx: 0x0}, - 637: {cur: 0xf9, idx: 0x0}, - 638: {cur: 0x10d, idx: 0x0}, - 639: {cur: 0xf4, idx: 0x24b}, - 640: {cur: 0x12, idx: 0x30d}, - 641: {cur: 0x13, idx: 0xf0}, - 642: {cur: 0x83, idx: 0x25}, - 643: {cur: 0xe8, idx: 0xb8}, - 644: {cur: 0xf9, idx: 0x4}, - 645: {cur: 0xf8, idx: 0x2f5}, - 646: {cur: 0xf9, idx: 0x4}, - 647: {cur: 0x3a, idx: 0x32b}, - 648: {cur: 0x9, idx: 0x1}, - 649: {cur: 0x8f, idx: 0x76}, - 650: {cur: 0xe8, idx: 0xb8}, - 651: {cur: 0x13, idx: 0x0}, - 652: {cur: 0x2e, idx: 0x0}, - 653: {cur: 0x39, idx: 0x0}, - 654: {cur: 0x42, idx: 0x0}, - 655: {cur: 0x61, idx: 0x0}, - 656: {cur: 0x70, idx: 0x0}, - 657: {cur: 0x7a, idx: 0x0}, - 658: {cur: 0x7b, idx: 0x0}, - 659: {cur: 0x83, idx: 0x0}, - 660: {cur: 0x8b, idx: 0x0}, - 661: {cur: 0xb0, idx: 0x0}, - 662: {cur: 0xbe, idx: 0x0}, - 663: {cur: 0xf3, idx: 0x0}, - 664: {cur: 0xf9, idx: 0x0}, - 665: {cur: 0x102, idx: 0x0}, - 666: {cur: 0x106, idx: 0x0}, - 667: {cur: 0x10d, idx: 0x0}, - 668: {cur: 0x112, idx: 0x0}, - 669: {cur: 0x114, idx: 0x0}, - 670: {cur: 0x3a, idx: 0x32b}, - 671: {cur: 0x84, idx: 0x309}, - 672: {cur: 0x84, idx: 0x309}, - 673: {cur: 0x13, idx: 0xf0}, - 674: {cur: 0x83, idx: 0x25}, - 675: {cur: 0x99, idx: 0x84}, - 676: {cur: 0xe8, idx: 0xb8}, - 677: {cur: 0xf9, idx: 0x4}, - 678: {cur: 0x84, idx: 0x309}, - 679: {cur: 0xf4, idx: 0x24b}, - 680: {cur: 0x84, idx: 0x309}, - 681: {cur: 0xac, idx: 0x7e}, - 682: {cur: 0xa1, idx: 0x87}, - 683: {cur: 0xb6, idx: 0x4cc}, - 684: {cur: 0x13, idx: 0x0}, - 685: {cur: 0x42, idx: 0x0}, - 686: {cur: 0x61, idx: 0x0}, - 687: {cur: 0x70, idx: 0x0}, - 688: {cur: 0x7a, idx: 0x0}, - 689: {cur: 0x7b, idx: 0x0}, - 690: {cur: 0x83, idx: 0x0}, - 691: {cur: 0x8b, idx: 0x0}, - 692: {cur: 0xa3, idx: 0x4d0}, - 693: {cur: 0xbe, idx: 0x0}, - 694: {cur: 0xf3, idx: 0x0}, - 695: {cur: 0x102, idx: 0x0}, - 696: {cur: 0x83, idx: 0x25}, - 697: {cur: 0xe8, idx: 0xb8}, - 698: {cur: 0xf9, idx: 0x4}, - 699: {cur: 0xa7, idx: 0x8c}, - 700: {cur: 0xe8, idx: 0xb8}, - 701: {cur: 0xf9, idx: 0x4}, - 702: {cur: 0xe8, idx: 0xb8}, - 703: {cur: 0xf9, idx: 0x4}, - 704: {cur: 0x39, idx: 0x0}, - 705: {cur: 0xb0, idx: 0x0}, - 706: {cur: 0xb3, idx: 0x94}, - 707: {cur: 0xf9, idx: 0x0}, - 708: {cur: 0x26, idx: 0x4}, - 709: {cur: 0xda, idx: 0x4}, - 710: {cur: 0x45, idx: 0x4ea}, - 711: {cur: 0xa6, idx: 0x8a}, - 712: {cur: 0xe8, idx: 0xb8}, - 713: {cur: 0xf9, idx: 0x4}, - 714: {cur: 0xb7, idx: 0x4}, - 715: {cur: 0x13, idx: 0x0}, - 716: {cur: 0x2e, idx: 0x0}, - 717: {cur: 0x39, idx: 0x0}, - 718: {cur: 0x42, idx: 0x0}, - 719: {cur: 0x70, idx: 0x0}, - 720: {cur: 0x7a, idx: 0x0}, - 721: {cur: 0x7b, idx: 0x0}, - 722: {cur: 0x83, idx: 0x0}, - 723: {cur: 0x8b, idx: 0x0}, - 724: {cur: 0xb0, idx: 0x0}, - 725: {cur: 0xbc, idx: 0x30}, - 726: {cur: 0xbe, idx: 0x0}, - 727: {cur: 0xf3, idx: 0x0}, - 728: {cur: 0xf9, idx: 0x0}, - 729: {cur: 0x102, idx: 0x0}, - 730: {cur: 0x106, idx: 0x0}, - 731: {cur: 0x10d, idx: 0x0}, - 732: {cur: 0x114, idx: 0x0}, - 733: {cur: 0xbd, idx: 0x4fd}, - 734: {cur: 0xe8, idx: 0xb8}, - 735: {cur: 0x13, idx: 0xf0}, - 736: {cur: 0x39, idx: 0x9b}, - 737: {cur: 0x5e, idx: 0x14f}, - 738: {cur: 0xd4, idx: 0x292}, - 739: {cur: 0xe8, idx: 0xb8}, - 740: {cur: 0x114, idx: 0x0}, - 741: {cur: 0x14, idx: 0x38a}, - 742: {cur: 0xf9, idx: 0x4}, - 743: {cur: 0x8, idx: 0x36e}, - 744: {cur: 0xe0, idx: 0x4}, - 745: {cur: 0x8, idx: 0x36e}, - 746: {cur: 0xbc, idx: 0x30}, - 747: {cur: 0x61, idx: 0x246}, - 748: {cur: 0xe2, idx: 0x3f}, - 749: {cur: 0xf8, idx: 0x2f5}, - 750: {cur: 0x5b, idx: 0x38f}, - 751: {cur: 0x84, idx: 0x309}, - 752: {cur: 0x63, idx: 0x42}, - 753: {cur: 0xf9, idx: 0x4}, - 754: {cur: 0x63, idx: 0x0}, - 755: {cur: 0xd0, idx: 0xae}, - 756: {cur: 0xe8, idx: 0xb8}, - 757: {cur: 0xc6, idx: 0x50a}, - 758: {cur: 0x13, idx: 0x0}, - 759: {cur: 0x39, idx: 0x0}, - 760: {cur: 0x42, idx: 0x0}, - 761: {cur: 0x61, idx: 0x0}, - 762: {cur: 0x70, idx: 0x0}, - 763: {cur: 0x7a, idx: 0x0}, - 764: {cur: 0x7b, idx: 0x0}, - 765: {cur: 0x83, idx: 0x0}, - 766: {cur: 0x8b, idx: 0x0}, - 767: {cur: 0xb0, idx: 0x0}, - 768: {cur: 0xbe, idx: 0x0}, - 769: {cur: 0xc7, idx: 0xa6}, - 770: {cur: 0xf3, idx: 0x0}, - 771: {cur: 0xf9, idx: 0x0}, - 772: {cur: 0x102, idx: 0x0}, - 773: {cur: 0x4, idx: 0x3a5}, - 774: {cur: 0x13, idx: 0xf0}, - 775: {cur: 0xc9, idx: 0x50d}, - 776: {cur: 0xe8, idx: 0xb8}, - 777: {cur: 0x9, idx: 0x1}, - 778: {cur: 0x4a, idx: 0x4aa}, - 779: {cur: 0xc9, idx: 0x512}, - 780: {cur: 0x97, idx: 0x2f3}, - 781: {cur: 0xa8, idx: 0x360}, - 782: {cur: 0xb6, idx: 0x4cc}, - 783: {cur: 0xc9, idx: 0x4aa}, - 784: {cur: 0xe3, idx: 0xb5}, - 785: {cur: 0xc2, idx: 0x399}, - 786: {cur: 0x27, idx: 0x10}, - 787: {cur: 0xc2, idx: 0x0}, - 788: {cur: 0xc2, idx: 0x0}, - 789: {cur: 0xf9, idx: 0x4}, - 790: {cur: 0x24, idx: 0x35a}, - 791: {cur: 0x13, idx: 0x0}, - 792: {cur: 0x2e, idx: 0x0}, - 793: {cur: 0x39, idx: 0x0}, - 794: {cur: 0x42, idx: 0x0}, - 795: {cur: 0x5c, idx: 0x0}, - 796: {cur: 0x61, idx: 0x0}, - 797: {cur: 0x70, idx: 0x0}, - 798: {cur: 0x7a, idx: 0x0}, - 799: {cur: 0x7b, idx: 0x0}, - 800: {cur: 0x83, idx: 0x0}, - 801: {cur: 0x8b, idx: 0x0}, - 802: {cur: 0xb0, idx: 0x0}, - 803: {cur: 0xbe, idx: 0x0}, - 804: {cur: 0xf3, idx: 0x0}, - 805: {cur: 0xf9, idx: 0x0}, - 806: {cur: 0x102, idx: 0x0}, - 807: {cur: 0x10d, idx: 0x0}, - 808: {cur: 0xa0, idx: 0x4f}, - 809: {cur: 0xf4, idx: 0x24b}, - 810: {cur: 0x0, idx: 0x519}, - 811: {cur: 0x83, idx: 0x25}, - 812: {cur: 0xd0, idx: 0xae}, - 813: {cur: 0xd1, idx: 0x18}, - 814: {cur: 0xe8, idx: 0xb8}, - 815: {cur: 0xec, idx: 0x51e}, - 816: {cur: 0xf5, idx: 0xc7}, - 817: {cur: 0xf9, idx: 0x4}, - 818: {cur: 0x37, idx: 0x18}, - 819: {cur: 0xd1, idx: 0x0}, - 820: {cur: 0x85, idx: 0x4bf}, - 821: {cur: 0x8e, idx: 0x72}, - 822: {cur: 0xa0, idx: 0x4f}, - 823: {cur: 0xd2, idx: 0xb2}, - 824: {cur: 0xf4, idx: 0x24b}, - 825: {cur: 0xd0, idx: 0xae}, - 826: {cur: 0x84, idx: 0x309}, - 827: {cur: 0xf4, idx: 0x24b}, - 828: {cur: 0x50, idx: 0x525}, - 829: {cur: 0xbc, idx: 0x30}, - 830: {cur: 0xd9, idx: 0x529}, - 831: {cur: 0xe8, idx: 0xb8}, - 832: {cur: 0xbc, idx: 0x52d}, - 833: {cur: 0xd9, idx: 0x30}, - 834: {cur: 0xb6, idx: 0x4cc}, - 835: {cur: 0x91, idx: 0x531}, - 836: {cur: 0xe8, idx: 0xb8}, - 837: {cur: 0x112, idx: 0x539}, - 838: {cur: 0x13, idx: 0x0}, - 839: {cur: 0x2e, idx: 0x0}, - 840: {cur: 0x39, idx: 0x0}, - 841: {cur: 0x42, idx: 0x0}, - 842: {cur: 0x61, idx: 0x0}, - 843: {cur: 0x70, idx: 0x0}, - 844: {cur: 0x7a, idx: 0x549}, - 845: {cur: 0x7b, idx: 0x0}, - 846: {cur: 0x83, idx: 0x0}, - 847: {cur: 0x8b, idx: 0x0}, - 848: {cur: 0xbe, idx: 0x0}, - 849: {cur: 0xf3, idx: 0x0}, - 850: {cur: 0xf9, idx: 0x0}, - 851: {cur: 0x102, idx: 0x0}, - 852: {cur: 0x39, idx: 0x0}, - 853: {cur: 0x83, idx: 0x25}, - 854: {cur: 0xe8, idx: 0xb8}, - 855: {cur: 0xf9, idx: 0x4}, - 856: {cur: 0xdf, idx: 0x244}, - 857: {cur: 0x4f, idx: 0x23c}, - 858: {cur: 0x5b, idx: 0x38f}, - 859: {cur: 0x84, idx: 0x309}, - 860: {cur: 0x6, idx: 0x54d}, - 861: {cur: 0xe8, idx: 0xb8}, - 862: {cur: 0xa3, idx: 0x553}, - 863: {cur: 0x13, idx: 0x0}, - 864: {cur: 0x18, idx: 0x2d7}, - 865: {cur: 0x21, idx: 0x557}, - 866: {cur: 0x37, idx: 0x55d}, - 867: {cur: 0x83, idx: 0x25}, - 868: {cur: 0x8b, idx: 0x0}, - 869: {cur: 0xbe, idx: 0x0}, - 870: {cur: 0x102, idx: 0x0}, - 871: {cur: 0x13, idx: 0x0}, - 872: {cur: 0x18, idx: 0x9}, - 873: {cur: 0x21, idx: 0x557}, - 874: {cur: 0x37, idx: 0x55d}, - 875: {cur: 0x83, idx: 0x25}, - 876: {cur: 0x8b, idx: 0x0}, - 877: {cur: 0xbe, idx: 0x0}, - 878: {cur: 0x102, idx: 0x0}, - 879: {cur: 0x13, idx: 0x0}, - 880: {cur: 0x1a, idx: 0x257}, - 881: {cur: 0x25, idx: 0x11b}, - 882: {cur: 0x2e, idx: 0x571}, - 883: {cur: 0x32, idx: 0x123}, - 884: {cur: 0x38, idx: 0x127}, - 885: {cur: 0x42, idx: 0x0}, - 886: {cur: 0x50, idx: 0x525}, - 887: {cur: 0x51, idx: 0x26c}, - 888: {cur: 0x55, idx: 0x575}, - 889: {cur: 0x56, idx: 0x579}, - 890: {cur: 0x61, idx: 0x0}, - 891: {cur: 0x70, idx: 0x0}, - 892: {cur: 0x7b, idx: 0x0}, - 893: {cur: 0x7f, idx: 0x57e}, - 894: {cur: 0x81, idx: 0x176}, - 895: {cur: 0x83, idx: 0x0}, - 896: {cur: 0x8b, idx: 0x0}, - 897: {cur: 0xbc, idx: 0x52d}, - 898: {cur: 0xbe, idx: 0x0}, - 899: {cur: 0xd9, idx: 0x30}, - 900: {cur: 0xf3, idx: 0x0}, - 901: {cur: 0x102, idx: 0x0}, - 902: {cur: 0x84, idx: 0x309}, - 903: {cur: 0xe8, idx: 0xb8}, - 904: {cur: 0xf4, idx: 0x24b}, - 905: {cur: 0x3a, idx: 0x32b}, - 906: {cur: 0xf8, idx: 0x2f5}, - 907: {cur: 0x83, idx: 0x25}, - 908: {cur: 0xe8, idx: 0xb8}, - 909: {cur: 0xf9, idx: 0x4}, - 910: {cur: 0x91, idx: 0x582}, - 911: {cur: 0xb3, idx: 0x94}, - 912: {cur: 0xda, idx: 0x296}, - 913: {cur: 0xb3, idx: 0x94}, - 914: {cur: 0xda, idx: 0x4}, - 915: {cur: 0xf9, idx: 0xcb}, - 916: {cur: 0xe8, idx: 0xb8}, - 917: {cur: 0xf9, idx: 0x4}, - 918: {cur: 0xf8, idx: 0x2f5}, - 919: {cur: 0x84, idx: 0x309}, - 920: {cur: 0x13, idx: 0xf0}, - 921: {cur: 0x83, idx: 0x25}, - 922: {cur: 0x5b, idx: 0x38f}, - 923: {cur: 0x57, idx: 0x240}, - 924: {cur: 0x5c, idx: 0x0}, - 925: {cur: 0x61, idx: 0x0}, - 926: {cur: 0x13, idx: 0x586}, - 927: {cur: 0xbe, idx: 0x58b}, - 928: {cur: 0xee, idx: 0xbc}, - 929: {cur: 0x13, idx: 0xf0}, - 930: {cur: 0x83, idx: 0x25}, - 931: {cur: 0xe8, idx: 0xb8}, - 932: {cur: 0xf1, idx: 0xbf}, - 933: {cur: 0xf9, idx: 0x4}, - 934: {cur: 0x42, idx: 0x4a6}, - 935: {cur: 0xf9, idx: 0x4}, - 936: {cur: 0x13, idx: 0x0}, - 937: {cur: 0x2e, idx: 0x0}, - 938: {cur: 0x39, idx: 0x0}, - 939: {cur: 0x42, idx: 0x0}, - 940: {cur: 0x5c, idx: 0x0}, - 941: {cur: 0x61, idx: 0x0}, - 942: {cur: 0x70, idx: 0x0}, - 943: {cur: 0x7a, idx: 0x0}, - 944: {cur: 0x7b, idx: 0x0}, - 945: {cur: 0x83, idx: 0x25}, - 946: {cur: 0x8b, idx: 0x0}, - 947: {cur: 0xb0, idx: 0x0}, - 948: {cur: 0xbe, idx: 0x0}, - 949: {cur: 0xf3, idx: 0x0}, - 950: {cur: 0xf5, idx: 0xc7}, - 951: {cur: 0xf6, idx: 0x590}, - 952: {cur: 0xf9, idx: 0x0}, - 953: {cur: 0x102, idx: 0x0}, - 954: {cur: 0x10d, idx: 0x0}, - 955: {cur: 0xc6, idx: 0x7e}, - 956: {cur: 0xe8, idx: 0xb8}, - 957: {cur: 0xf9, idx: 0x4}, - 958: {cur: 0xc6, idx: 0x0}, - 959: {cur: 0xff, idx: 0x598}, - 960: {cur: 0x4, idx: 0x3a5}, - 961: {cur: 0xe8, idx: 0xb8}, - 962: {cur: 0xff, idx: 0x59e}, - 963: {cur: 0x92, idx: 0x4}, - 964: {cur: 0x92, idx: 0x4}, - 965: {cur: 0x13, idx: 0xf0}, - 966: {cur: 0xe8, idx: 0xb8}, - 967: {cur: 0xf4, idx: 0x24b}, - 968: {cur: 0x83, idx: 0x25}, - 969: {cur: 0xf9, idx: 0x4}, - 970: {cur: 0xf8, idx: 0x2f5}, - 971: {cur: 0xb8, idx: 0x97}, - 972: {cur: 0x13, idx: 0xf0}, - 973: {cur: 0x83, idx: 0x25}, - 974: {cur: 0x8b, idx: 0x5a5}, - 975: {cur: 0xf3, idx: 0x4}, - 976: {cur: 0x13, idx: 0xf0}, - 977: {cur: 0x42, idx: 0x4a6}, - 978: {cur: 0x79, idx: 0x5a9}, - 979: {cur: 0x8b, idx: 0x5a5}, - 980: {cur: 0x42, idx: 0x20}, - 981: {cur: 0x42, idx: 0x20}, - 982: {cur: 0xa8, idx: 0x360}, - 983: {cur: 0x42, idx: 0x20}, - 984: {cur: 0xda, idx: 0x4}, - 985: {cur: 0x13, idx: 0xf0}, - 986: {cur: 0x83, idx: 0x25}, - 987: {cur: 0x8b, idx: 0x5a5}, - 988: {cur: 0xf3, idx: 0x4}, - 989: {cur: 0x8b, idx: 0x6e}, - 990: {cur: 0xf3, idx: 0xc3}, - 991: {cur: 0xa8, idx: 0x360}, - 992: {cur: 0xe8, idx: 0xb8}, - 993: {cur: 0x122, idx: 0xe5}, -} // Size: 4000 bytes + 2: {cur: 0x3a, idx: 0x1c}, + 3: {cur: 0x43, idx: 0x20}, + 4: {cur: 0x5d, idx: 0x3b}, + 5: {cur: 0x62, idx: 0x3f}, + 6: {cur: 0x71, idx: 0x4b}, + 7: {cur: 0x7b, idx: 0x5a}, + 8: {cur: 0x7c, idx: 0x5e}, + 9: {cur: 0x84, idx: 0x62}, + 10: {cur: 0x8c, idx: 0x6e}, + 11: {cur: 0xb1, idx: 0x90}, + 12: {cur: 0xbf, idx: 0x9e}, + 13: {cur: 0xf4, idx: 0xc7}, + 14: {cur: 0xfa, idx: 0xcf}, + 15: {cur: 0x103, idx: 0xd3}, + 16: {cur: 0x107, idx: 0xd7}, + 17: {cur: 0x10e, idx: 0xdc}, + 18: {cur: 0x113, idx: 0xe0}, + 19: {cur: 0x115, idx: 0xe4}, + 20: {cur: 0xb1, idx: 0x0}, + 21: {cur: 0xe9, idx: 0xbc}, + 22: {cur: 0x123, idx: 0xe9}, + 23: {cur: 0xb8, idx: 0x4}, + 24: {cur: 0x66, idx: 0xee}, + 25: {cur: 0x13, idx: 0xf4}, + 26: {cur: 0x5c, idx: 0xf8}, + 27: {cur: 0xe9, idx: 0xbc}, + 28: {cur: 0x0, idx: 0xff}, + 29: {cur: 0x2, idx: 0x103}, + 30: {cur: 0x13, idx: 0xf4}, + 31: {cur: 0x23, idx: 0x115}, + 32: {cur: 0x53, idx: 0x13f}, + 33: {cur: 0x57, idx: 0x149}, + 34: {cur: 0x7d, idx: 0x160}, + 35: {cur: 0x7e, idx: 0x16a}, + 36: {cur: 0x83, idx: 0x175}, + 37: {cur: 0x88, idx: 0x17f}, + 38: {cur: 0x8d, idx: 0x18c}, + 39: {cur: 0x91, idx: 0x19a}, + 40: {cur: 0x9c, idx: 0x1a4}, + 41: {cur: 0x9d, idx: 0x1ae}, + 42: {cur: 0xaa, idx: 0x1b8}, + 43: {cur: 0xc0, idx: 0x1c2}, + 44: {cur: 0xcc, idx: 0x1cc}, + 45: {cur: 0xd4, idx: 0x1d6}, + 46: {cur: 0xd7, idx: 0x1e4}, + 47: {cur: 0xd8, idx: 0x1ee}, + 48: {cur: 0xe7, idx: 0x1f9}, + 49: {cur: 0xe9, idx: 0xbc}, + 50: {cur: 0xee, idx: 0x203}, + 51: {cur: 0x11d, idx: 0x215}, + 52: {cur: 0x50, idx: 0x21f}, + 53: {cur: 0x58, idx: 0x223}, + 54: {cur: 0xd8, idx: 0x0}, + 55: {cur: 0xe0, idx: 0x227}, + 56: {cur: 0x62, idx: 0x229}, + 57: {cur: 0xe3, idx: 0x3f}, + 58: {cur: 0xf5, idx: 0x22e}, + 59: {cur: 0x84, idx: 0x25}, + 60: {cur: 0xe9, idx: 0xbc}, + 61: {cur: 0xfa, idx: 0x4}, + 62: {cur: 0x16, idx: 0x232}, + 63: {cur: 0xe9, idx: 0xbc}, + 64: {cur: 0x16, idx: 0x232}, + 65: {cur: 0x2e, idx: 0x0}, + 66: {cur: 0x37, idx: 0x24a}, + 67: {cur: 0x3a, idx: 0x0}, + 68: {cur: 0x84, idx: 0x25}, + 69: {cur: 0xbf, idx: 0x0}, + 70: {cur: 0xd1, idx: 0xb2}, + 71: {cur: 0xfa, idx: 0x4}, + 72: {cur: 0x125, idx: 0x8a}, + 73: {cur: 0xf5, idx: 0x22e}, + 74: {cur: 0x13, idx: 0x0}, + 75: {cur: 0x21, idx: 0x286}, + 76: {cur: 0x2e, idx: 0x0}, + 77: {cur: 0x3a, idx: 0x0}, + 78: {cur: 0x43, idx: 0x0}, + 79: {cur: 0x62, idx: 0x0}, + 80: {cur: 0x71, idx: 0x0}, + 81: {cur: 0x7b, idx: 0x0}, + 82: {cur: 0x7c, idx: 0x0}, + 83: {cur: 0x84, idx: 0x0}, + 84: {cur: 0x8c, idx: 0x0}, + 85: {cur: 0xb1, idx: 0x0}, + 86: {cur: 0xbf, idx: 0x0}, + 87: {cur: 0xf4, idx: 0x0}, + 88: {cur: 0xfa, idx: 0x28c}, + 89: {cur: 0x103, idx: 0x0}, + 90: {cur: 0x10e, idx: 0x0}, + 91: {cur: 0x1b, idx: 0xc}, + 92: {cur: 0xe9, idx: 0xbc}, + 93: {cur: 0x43, idx: 0x25}, + 94: {cur: 0x43, idx: 0x20}, + 95: {cur: 0x13, idx: 0x293}, + 96: {cur: 0x2e, idx: 0x0}, + 97: {cur: 0x3a, idx: 0x296}, + 98: {cur: 0x43, idx: 0x0}, + 99: {cur: 0x62, idx: 0x29f}, + 100: {cur: 0x71, idx: 0x2a5}, + 101: {cur: 0x7b, idx: 0x0}, + 102: {cur: 0x84, idx: 0x0}, + 103: {cur: 0x8c, idx: 0x0}, + 104: {cur: 0xbf, idx: 0x2ae}, + 105: {cur: 0xf4, idx: 0x0}, + 106: {cur: 0xfa, idx: 0x2b7}, + 107: {cur: 0x103, idx: 0x0}, + 108: {cur: 0x10e, idx: 0x0}, + 109: {cur: 0x13, idx: 0x0}, + 110: {cur: 0x18, idx: 0x9}, + 111: {cur: 0x2e, idx: 0x0}, + 112: {cur: 0x3a, idx: 0x0}, + 113: {cur: 0x43, idx: 0x0}, + 114: {cur: 0x62, idx: 0x0}, + 115: {cur: 0x71, idx: 0x0}, + 116: {cur: 0x74, idx: 0x51}, + 117: {cur: 0x7b, idx: 0x0}, + 118: {cur: 0x84, idx: 0x25}, + 119: {cur: 0xb1, idx: 0x0}, + 120: {cur: 0xbf, idx: 0x0}, + 121: {cur: 0xd0, idx: 0x2bc}, + 122: {cur: 0xe9, idx: 0xbc}, + 123: {cur: 0xfa, idx: 0x0}, + 124: {cur: 0x10e, idx: 0x0}, + 125: {cur: 0x115, idx: 0x0}, + 126: {cur: 0x18, idx: 0x2c1}, + 127: {cur: 0x4d, idx: 0x2c6}, + 128: {cur: 0x84, idx: 0x25}, + 129: {cur: 0xc8, idx: 0x2cb}, + 130: {cur: 0xd0, idx: 0x2d0}, + 131: {cur: 0xf2, idx: 0x2d8}, + 132: {cur: 0x13, idx: 0xf4}, + 133: {cur: 0x2e, idx: 0x0}, + 134: {cur: 0x3a, idx: 0x0}, + 135: {cur: 0x43, idx: 0x25}, + 136: {cur: 0x5b, idx: 0x37}, + 137: {cur: 0xb1, idx: 0x0}, + 138: {cur: 0xe9, idx: 0xbc}, + 139: {cur: 0xfa, idx: 0x0}, + 140: {cur: 0x10e, idx: 0x0}, + 141: {cur: 0x61, idx: 0x2dd}, + 142: {cur: 0xd1, idx: 0xb2}, + 143: {cur: 0xf9, idx: 0x2df}, + 144: {cur: 0xfa, idx: 0x4}, + 145: {cur: 0x13, idx: 0xf4}, + 146: {cur: 0x48, idx: 0x2e3}, + 147: {cur: 0x4d, idx: 0x2c}, + 148: {cur: 0x7b, idx: 0x0}, + 149: {cur: 0x7c, idx: 0x0}, + 150: {cur: 0x103, idx: 0x0}, + 151: {cur: 0x110, idx: 0x2e8}, + 152: {cur: 0xd1, idx: 0xb2}, + 153: {cur: 0x8c, idx: 0x0}, + 154: {cur: 0xe9, idx: 0xbc}, + 155: {cur: 0x13, idx: 0xf4}, + 156: {cur: 0x51, idx: 0x2ef}, + 157: {cur: 0xe9, idx: 0xbc}, + 158: {cur: 0xfa, idx: 0x4}, + 159: {cur: 0x85, idx: 0x2f3}, + 160: {cur: 0x12, idx: 0x2f7}, + 161: {cur: 0x13, idx: 0xf4}, + 162: {cur: 0x20, idx: 0x2fb}, + 163: {cur: 0x22, idx: 0x2ff}, + 164: {cur: 0x4f, idx: 0x308}, + 165: {cur: 0x84, idx: 0x25}, + 166: {cur: 0xe9, idx: 0xbc}, + 167: {cur: 0xfa, idx: 0x4}, + 168: {cur: 0x5d, idx: 0x0}, + 169: {cur: 0x98, idx: 0x2dd}, + 170: {cur: 0x13, idx: 0x0}, + 171: {cur: 0x84, idx: 0x25}, + 172: {cur: 0xc8, idx: 0xa6}, + 173: {cur: 0xe9, idx: 0xbc}, + 174: {cur: 0xfa, idx: 0x4}, + 175: {cur: 0x13, idx: 0xf4}, + 176: {cur: 0x33, idx: 0x31d}, + 177: {cur: 0x7b, idx: 0x0}, + 178: {cur: 0x8c, idx: 0x321}, + 179: {cur: 0xe9, idx: 0x327}, + 180: {cur: 0x107, idx: 0x0}, + 181: {cur: 0x85, idx: 0x2f3}, + 182: {cur: 0x13, idx: 0xf4}, + 183: {cur: 0x66, idx: 0xee}, + 184: {cur: 0xe9, idx: 0xbc}, + 185: {cur: 0x6c, idx: 0x32d}, + 186: {cur: 0xe9, idx: 0xbc}, + 187: {cur: 0xfa, idx: 0x4}, + 188: {cur: 0x84, idx: 0x25}, + 189: {cur: 0xfa, idx: 0x4}, + 190: {cur: 0x84, idx: 0x62}, + 191: {cur: 0xfa, idx: 0xcf}, + 192: {cur: 0x10e, idx: 0x4}, + 193: {cur: 0x10e, idx: 0x4}, + 194: {cur: 0x13, idx: 0x4}, + 195: {cur: 0x2e, idx: 0x0}, + 196: {cur: 0x3a, idx: 0x0}, + 197: {cur: 0x43, idx: 0x0}, + 198: {cur: 0x5d, idx: 0x0}, + 199: {cur: 0x62, idx: 0x0}, + 200: {cur: 0x71, idx: 0x0}, + 201: {cur: 0x7b, idx: 0x0}, + 202: {cur: 0x7c, idx: 0x0}, + 203: {cur: 0x84, idx: 0x0}, + 204: {cur: 0x8c, idx: 0x0}, + 205: {cur: 0xb1, idx: 0x0}, + 206: {cur: 0xbf, idx: 0x0}, + 207: {cur: 0xd6, idx: 0x7e}, + 208: {cur: 0xf4, idx: 0x0}, + 209: {cur: 0xfa, idx: 0x0}, + 210: {cur: 0x103, idx: 0x0}, + 211: {cur: 0x107, idx: 0x0}, + 212: {cur: 0x10e, idx: 0x0}, + 213: {cur: 0x113, idx: 0x0}, + 214: {cur: 0x115, idx: 0x340}, + 215: {cur: 0x1a, idx: 0x4}, + 216: {cur: 0x24, idx: 0x344}, + 217: {cur: 0x25, idx: 0x4}, + 218: {cur: 0x32, idx: 0x4}, + 219: {cur: 0x35, idx: 0x16}, + 220: {cur: 0x39, idx: 0x4}, + 221: {cur: 0x3a, idx: 0x4}, + 222: {cur: 0x13, idx: 0x4}, + 223: {cur: 0xbf, idx: 0x4}, + 224: {cur: 0x13, idx: 0x4}, + 225: {cur: 0x51, idx: 0x2ef}, + 226: {cur: 0x10e, idx: 0x4}, + 227: {cur: 0x58, idx: 0x223}, + 228: {cur: 0x5f, idx: 0x4}, + 229: {cur: 0x60, idx: 0x3f}, + 230: {cur: 0x62, idx: 0x229}, + 231: {cur: 0x10e, idx: 0x4}, + 232: {cur: 0x66, idx: 0xee}, + 233: {cur: 0x62, idx: 0x229}, + 234: {cur: 0x67, idx: 0x3f}, + 235: {cur: 0x68, idx: 0x348}, + 236: {cur: 0x70, idx: 0x4}, + 237: {cur: 0x82, idx: 0x4}, + 238: {cur: 0x85, idx: 0x2f3}, + 239: {cur: 0x13, idx: 0x4}, + 240: {cur: 0x10e, idx: 0x4}, + 241: {cur: 0x8e, idx: 0x4}, + 242: {cur: 0x10e, idx: 0x4}, + 243: {cur: 0x93, idx: 0x4}, + 244: {cur: 0x123, idx: 0xe9}, + 245: {cur: 0xa2, idx: 0x87}, + 246: {cur: 0xa9, idx: 0x34a}, + 247: {cur: 0x10e, idx: 0x4}, + 248: {cur: 0x62, idx: 0x229}, + 249: {cur: 0xad, idx: 0x7e}, + 250: {cur: 0xb0, idx: 0x34f}, + 251: {cur: 0xb4, idx: 0x94}, + 252: {cur: 0xb8, idx: 0x4}, + 253: {cur: 0x13, idx: 0x4}, + 254: {cur: 0xb9, idx: 0x97}, + 255: {cur: 0x13, idx: 0x4}, + 256: {cur: 0xbf, idx: 0x4}, + 257: {cur: 0xbf, idx: 0x4}, + 258: {cur: 0xc5, idx: 0x8a}, + 259: {cur: 0xc6, idx: 0xa2}, + 260: {cur: 0xc7, idx: 0x7e}, + 261: {cur: 0xbf, idx: 0x4}, + 262: {cur: 0xd3, idx: 0xb6}, + 263: {cur: 0xd5, idx: 0x4}, + 264: {cur: 0xd6, idx: 0x352}, + 265: {cur: 0xda, idx: 0x30}, + 266: {cur: 0xdb, idx: 0x4}, + 267: {cur: 0x62, idx: 0x229}, + 268: {cur: 0xdc, idx: 0x3f}, + 269: {cur: 0xdf, idx: 0x355}, + 270: {cur: 0x62, idx: 0x229}, + 271: {cur: 0xe3, idx: 0x3f}, + 272: {cur: 0x8, idx: 0x358}, + 273: {cur: 0xe8, idx: 0x35d}, + 274: {cur: 0xbf, idx: 0x4}, + 275: {cur: 0xef, idx: 0xc0}, + 276: {cur: 0xf3, idx: 0x4}, + 277: {cur: 0x13, idx: 0x4}, + 278: {cur: 0xf5, idx: 0x22e}, + 279: {cur: 0xf9, idx: 0x2df}, + 280: {cur: 0x10e, idx: 0x4}, + 281: {cur: 0x105, idx: 0x35f}, + 282: {cur: 0x106, idx: 0x362}, + 283: {cur: 0x123, idx: 0xe9}, + 284: {cur: 0x125, idx: 0x8a}, + 285: {cur: 0x13, idx: 0x0}, + 286: {cur: 0x2e, idx: 0x0}, + 287: {cur: 0x43, idx: 0x0}, + 288: {cur: 0x5b, idx: 0x37}, + 289: {cur: 0x62, idx: 0x0}, + 290: {cur: 0x71, idx: 0x0}, + 291: {cur: 0x7b, idx: 0x0}, + 292: {cur: 0x7c, idx: 0x0}, + 293: {cur: 0x84, idx: 0x0}, + 294: {cur: 0x8c, idx: 0x0}, + 295: {cur: 0xb1, idx: 0x0}, + 296: {cur: 0xbf, idx: 0x0}, + 297: {cur: 0xe9, idx: 0xbc}, + 298: {cur: 0xf4, idx: 0x0}, + 299: {cur: 0xfa, idx: 0x4}, + 300: {cur: 0x107, idx: 0x0}, + 301: {cur: 0x10e, idx: 0x0}, + 302: {cur: 0x113, idx: 0x0}, + 303: {cur: 0x3a, idx: 0x0}, + 304: {cur: 0x5d, idx: 0x0}, + 305: {cur: 0xe9, idx: 0x0}, + 306: {cur: 0xfa, idx: 0x0}, + 307: {cur: 0x103, idx: 0x0}, + 308: {cur: 0x11, idx: 0x4}, + 309: {cur: 0xfa, idx: 0xcf}, + 310: {cur: 0x27, idx: 0x10}, + 311: {cur: 0x2e, idx: 0x13}, + 312: {cur: 0x39, idx: 0x4}, + 313: {cur: 0x41, idx: 0x4}, + 314: {cur: 0xfa, idx: 0xcf}, + 315: {cur: 0x44, idx: 0x4}, + 316: {cur: 0xfa, idx: 0xcf}, + 317: {cur: 0x46, idx: 0x28}, + 318: {cur: 0x4a, idx: 0x4}, + 319: {cur: 0xfa, idx: 0xcf}, + 320: {cur: 0x52, idx: 0x256}, + 321: {cur: 0xfa, idx: 0xcf}, + 322: {cur: 0xfa, idx: 0x4}, + 323: {cur: 0x107, idx: 0xd7}, + 324: {cur: 0x6d, idx: 0x49}, + 325: {cur: 0x72, idx: 0x4f}, + 326: {cur: 0x4, idx: 0x36a}, + 327: {cur: 0x8, idx: 0x36d}, + 328: {cur: 0x9, idx: 0x1}, + 329: {cur: 0x11, idx: 0x371}, + 330: {cur: 0x13, idx: 0xf4}, + 331: {cur: 0x14, idx: 0x374}, + 332: {cur: 0x43, idx: 0x20}, + 333: {cur: 0xb1, idx: 0x4}, + 334: {cur: 0x115, idx: 0x0}, + 335: {cur: 0xbb, idx: 0x9b}, + 336: {cur: 0xc1, idx: 0x37c}, + 337: {cur: 0xc3, idx: 0x380}, + 338: {cur: 0xc6, idx: 0xa2}, + 339: {cur: 0xfa, idx: 0x4}, + 340: {cur: 0xcb, idx: 0x383}, + 341: {cur: 0xfa, idx: 0x4}, + 342: {cur: 0x84, idx: 0x25}, + 343: {cur: 0xfa, idx: 0x4}, + 344: {cur: 0xfa, idx: 0xcf}, + 345: {cur: 0xff, idx: 0x4}, + 346: {cur: 0x102, idx: 0x387}, + 347: {cur: 0x13, idx: 0xf4}, + 348: {cur: 0x56, idx: 0x30}, + 349: {cur: 0x84, idx: 0x25}, + 350: {cur: 0xe9, idx: 0xbc}, + 351: {cur: 0xfa, idx: 0x4}, + 352: {cur: 0x5b, idx: 0x37}, + 353: {cur: 0xe9, idx: 0xbc}, + 354: {cur: 0x4, idx: 0x38b}, + 355: {cur: 0x3a, idx: 0x296}, + 356: {cur: 0x43, idx: 0x38e}, + 357: {cur: 0x71, idx: 0x393}, + 358: {cur: 0x7e, idx: 0x397}, + 359: {cur: 0x84, idx: 0x25}, + 360: {cur: 0xb1, idx: 0x3a0}, + 361: {cur: 0xbf, idx: 0x3a4}, + 362: {cur: 0xe9, idx: 0xbc}, + 363: {cur: 0xfa, idx: 0x4}, + 364: {cur: 0x10e, idx: 0x3a8}, + 365: {cur: 0x69, idx: 0x46}, + 366: {cur: 0xaa, idx: 0x3ac}, + 367: {cur: 0x13, idx: 0x0}, + 368: {cur: 0x2e, idx: 0x0}, + 369: {cur: 0x3a, idx: 0x0}, + 370: {cur: 0x43, idx: 0x0}, + 371: {cur: 0x5e, idx: 0x3af}, + 372: {cur: 0x71, idx: 0x0}, + 373: {cur: 0x7b, idx: 0x0}, + 374: {cur: 0x7c, idx: 0x0}, + 375: {cur: 0x84, idx: 0x25}, + 376: {cur: 0x8c, idx: 0x0}, + 377: {cur: 0xb1, idx: 0x0}, + 378: {cur: 0xbf, idx: 0x0}, + 379: {cur: 0xf4, idx: 0x0}, + 380: {cur: 0xfa, idx: 0x4}, + 381: {cur: 0x103, idx: 0x0}, + 382: {cur: 0x10e, idx: 0x0}, + 383: {cur: 0x115, idx: 0x0}, + 384: {cur: 0x84, idx: 0x25}, + 385: {cur: 0xc6, idx: 0xa2}, + 386: {cur: 0xe9, idx: 0xbc}, + 387: {cur: 0xfa, idx: 0x4}, + 388: {cur: 0x51, idx: 0x30}, + 389: {cur: 0x51, idx: 0x2ef}, + 390: {cur: 0x11, idx: 0x3b2}, + 391: {cur: 0x13, idx: 0x3b6}, + 392: {cur: 0x1d, idx: 0x3ba}, + 393: {cur: 0x25, idx: 0x3bd}, + 394: {cur: 0x26, idx: 0x3c1}, + 395: {cur: 0x32, idx: 0x3c5}, + 396: {cur: 0x39, idx: 0x3c9}, + 397: {cur: 0x3a, idx: 0x296}, + 398: {cur: 0x41, idx: 0x3cd}, + 399: {cur: 0x43, idx: 0x0}, + 400: {cur: 0x44, idx: 0x3d1}, + 401: {cur: 0x4c, idx: 0x3d5}, + 402: {cur: 0x5f, idx: 0x3de}, + 403: {cur: 0x60, idx: 0x3e2}, + 404: {cur: 0x61, idx: 0x2dd}, + 405: {cur: 0x62, idx: 0x3e7}, + 406: {cur: 0x67, idx: 0x3ec}, + 407: {cur: 0x71, idx: 0x0}, + 408: {cur: 0x78, idx: 0x3f1}, + 409: {cur: 0x79, idx: 0x3f6}, + 410: {cur: 0x81, idx: 0x3fb}, + 411: {cur: 0x84, idx: 0x0}, + 412: {cur: 0x91, idx: 0x401}, + 413: {cur: 0xac, idx: 0x406}, + 414: {cur: 0xb1, idx: 0x3a0}, + 415: {cur: 0xb8, idx: 0x40b}, + 416: {cur: 0xbf, idx: 0x3a4}, + 417: {cur: 0xcd, idx: 0x412}, + 418: {cur: 0xd5, idx: 0x419}, + 419: {cur: 0xdb, idx: 0x41d}, + 420: {cur: 0xe1, idx: 0x421}, + 421: {cur: 0xf3, idx: 0x425}, + 422: {cur: 0xf4, idx: 0x0}, + 423: {cur: 0xfa, idx: 0x429}, + 424: {cur: 0xff, idx: 0x42d}, + 425: {cur: 0x106, idx: 0x362}, + 426: {cur: 0x10e, idx: 0x0}, + 427: {cur: 0x115, idx: 0x431}, + 428: {cur: 0x24, idx: 0x344}, + 429: {cur: 0x11, idx: 0x0}, + 430: {cur: 0x13, idx: 0x439}, + 431: {cur: 0x25, idx: 0x0}, + 432: {cur: 0x26, idx: 0x0}, + 433: {cur: 0x32, idx: 0x0}, + 434: {cur: 0x39, idx: 0x0}, + 435: {cur: 0x3a, idx: 0x4}, + 436: {cur: 0x41, idx: 0x0}, + 437: {cur: 0x43, idx: 0x20}, + 438: {cur: 0x44, idx: 0x0}, + 439: {cur: 0x5f, idx: 0x0}, + 440: {cur: 0x60, idx: 0x0}, + 441: {cur: 0x62, idx: 0x3f}, + 442: {cur: 0x67, idx: 0x0}, + 443: {cur: 0x71, idx: 0x43f}, + 444: {cur: 0x7b, idx: 0x0}, + 445: {cur: 0x7c, idx: 0x0}, + 446: {cur: 0x84, idx: 0x25}, + 447: {cur: 0x8c, idx: 0x0}, + 448: {cur: 0x91, idx: 0x0}, + 449: {cur: 0xb1, idx: 0x0}, + 450: {cur: 0xb8, idx: 0x0}, + 451: {cur: 0xbf, idx: 0x445}, + 452: {cur: 0xd5, idx: 0x0}, + 453: {cur: 0xdb, idx: 0x44b}, + 454: {cur: 0xe1, idx: 0x0}, + 455: {cur: 0xf3, idx: 0x0}, + 456: {cur: 0xfa, idx: 0x451}, + 457: {cur: 0xff, idx: 0x0}, + 458: {cur: 0x103, idx: 0x0}, + 459: {cur: 0x107, idx: 0x0}, + 460: {cur: 0x113, idx: 0x0}, + 461: {cur: 0x115, idx: 0x0}, + 462: {cur: 0x3b, idx: 0x315}, + 463: {cur: 0x50, idx: 0x21f}, + 464: {cur: 0x53, idx: 0x457}, + 465: {cur: 0x69, idx: 0x46}, + 466: {cur: 0x75, idx: 0x45a}, + 467: {cur: 0x88, idx: 0x6b}, + 468: {cur: 0x61, idx: 0x0}, + 469: {cur: 0x98, idx: 0x2dd}, + 470: {cur: 0xa2, idx: 0x87}, + 471: {cur: 0xaa, idx: 0x3ac}, + 472: {cur: 0xad, idx: 0x7e}, + 473: {cur: 0xd3, idx: 0xb6}, + 474: {cur: 0xd6, idx: 0x352}, + 475: {cur: 0xe7, idx: 0x45c}, + 476: {cur: 0xee, idx: 0x45f}, + 477: {cur: 0x105, idx: 0x35f}, + 478: {cur: 0x13, idx: 0xf4}, + 479: {cur: 0x3a, idx: 0x9b}, + 480: {cur: 0x5f, idx: 0x153}, + 481: {cur: 0xd5, idx: 0x27c}, + 482: {cur: 0xe9, idx: 0xbc}, + 483: {cur: 0x115, idx: 0x0}, + 484: {cur: 0x84, idx: 0x25}, + 485: {cur: 0xe9, idx: 0xbc}, + 486: {cur: 0xfa, idx: 0x4}, + 487: {cur: 0xe9, idx: 0xbc}, + 488: {cur: 0xfa, idx: 0x4}, + 489: {cur: 0x13, idx: 0x293}, + 490: {cur: 0x2e, idx: 0x462}, + 491: {cur: 0x3a, idx: 0x296}, + 492: {cur: 0x5b, idx: 0x37}, + 493: {cur: 0xb1, idx: 0x3a0}, + 494: {cur: 0xe9, idx: 0xbc}, + 495: {cur: 0xfa, idx: 0x4}, + 496: {cur: 0x12, idx: 0x2f7}, + 497: {cur: 0x84, idx: 0x25}, + 498: {cur: 0xfa, idx: 0x4}, + 499: {cur: 0xe9, idx: 0xbc}, + 500: {cur: 0x85, idx: 0x2f3}, + 501: {cur: 0xb9, idx: 0x97}, + 502: {cur: 0x66, idx: 0xee}, + 503: {cur: 0xfa, idx: 0x4}, + 504: {cur: 0x43, idx: 0x474}, + 505: {cur: 0x79, idx: 0x47f}, + 506: {cur: 0x84, idx: 0x25}, + 507: {cur: 0xe9, idx: 0xbc}, + 508: {cur: 0xfa, idx: 0x4}, + 509: {cur: 0xe9, idx: 0xbc}, + 510: {cur: 0xfa, idx: 0x4}, + 511: {cur: 0x13, idx: 0x0}, + 512: {cur: 0x2e, idx: 0x0}, + 513: {cur: 0x3a, idx: 0x0}, + 514: {cur: 0x43, idx: 0x0}, + 515: {cur: 0x5d, idx: 0x0}, + 516: {cur: 0x62, idx: 0x0}, + 517: {cur: 0x71, idx: 0x0}, + 518: {cur: 0x7b, idx: 0x0}, + 519: {cur: 0x7c, idx: 0x0}, + 520: {cur: 0x84, idx: 0x0}, + 521: {cur: 0x8c, idx: 0x0}, + 522: {cur: 0xb1, idx: 0x0}, + 523: {cur: 0xbf, idx: 0x0}, + 524: {cur: 0xf4, idx: 0x0}, + 525: {cur: 0xfa, idx: 0x0}, + 526: {cur: 0x103, idx: 0x0}, + 527: {cur: 0x10e, idx: 0x0}, + 528: {cur: 0x115, idx: 0x0}, + 529: {cur: 0x18, idx: 0x9}, + 530: {cur: 0x13, idx: 0x0}, + 531: {cur: 0x84, idx: 0x25}, + 532: {cur: 0xc8, idx: 0xa6}, + 533: {cur: 0xe9, idx: 0xbc}, + 534: {cur: 0xfa, idx: 0x4}, + 535: {cur: 0x13, idx: 0x0}, + 536: {cur: 0x2e, idx: 0x0}, + 537: {cur: 0x3a, idx: 0x0}, + 538: {cur: 0x43, idx: 0x0}, + 539: {cur: 0x5d, idx: 0x0}, + 540: {cur: 0x62, idx: 0x0}, + 541: {cur: 0x71, idx: 0x0}, + 542: {cur: 0x76, idx: 0x54}, + 543: {cur: 0x7b, idx: 0x0}, + 544: {cur: 0x7c, idx: 0x0}, + 545: {cur: 0x84, idx: 0x25}, + 546: {cur: 0x8c, idx: 0x0}, + 547: {cur: 0xb1, idx: 0x0}, + 548: {cur: 0xbf, idx: 0x0}, + 549: {cur: 0xf4, idx: 0x0}, + 550: {cur: 0xfa, idx: 0x0}, + 551: {cur: 0x103, idx: 0x0}, + 552: {cur: 0x10e, idx: 0x0}, + 553: {cur: 0x7, idx: 0x486}, + 554: {cur: 0xe9, idx: 0xbc}, + 555: {cur: 0xfa, idx: 0x4}, + 556: {cur: 0x13, idx: 0xf4}, + 557: {cur: 0x77, idx: 0x57}, + 558: {cur: 0x7c, idx: 0x7e}, + 559: {cur: 0xe9, idx: 0xbc}, + 560: {cur: 0xb9, idx: 0x97}, + 561: {cur: 0x43, idx: 0x25}, + 562: {cur: 0x13, idx: 0x0}, + 563: {cur: 0x2e, idx: 0x0}, + 564: {cur: 0x3a, idx: 0x0}, + 565: {cur: 0x5d, idx: 0x0}, + 566: {cur: 0x62, idx: 0x0}, + 567: {cur: 0x7c, idx: 0x0}, + 568: {cur: 0x8c, idx: 0x0}, + 569: {cur: 0xb1, idx: 0x0}, + 570: {cur: 0xbf, idx: 0x0}, + 571: {cur: 0xf4, idx: 0x0}, + 572: {cur: 0xfa, idx: 0x0}, + 573: {cur: 0x103, idx: 0x0}, + 574: {cur: 0x2e, idx: 0x0}, + 575: {cur: 0x71, idx: 0x0}, + 576: {cur: 0x84, idx: 0x0}, + 577: {cur: 0x8c, idx: 0x0}, + 578: {cur: 0xb1, idx: 0x0}, + 579: {cur: 0xe9, idx: 0xbc}, + 580: {cur: 0xf4, idx: 0x0}, + 581: {cur: 0x43, idx: 0x48d}, + 582: {cur: 0x84, idx: 0x491}, + 583: {cur: 0xfa, idx: 0x4}, + 584: {cur: 0xf5, idx: 0x22e}, + 585: {cur: 0x13, idx: 0x0}, + 586: {cur: 0x43, idx: 0x0}, + 587: {cur: 0x64, idx: 0x42}, + 588: {cur: 0x71, idx: 0x0}, + 589: {cur: 0x7b, idx: 0x0}, + 590: {cur: 0x7c, idx: 0x0}, + 591: {cur: 0x84, idx: 0x0}, + 592: {cur: 0x8c, idx: 0x0}, + 593: {cur: 0xbf, idx: 0x0}, + 594: {cur: 0x103, idx: 0x0}, + 595: {cur: 0x53, idx: 0x457}, + 596: {cur: 0x85, idx: 0x2f3}, + 597: {cur: 0xf5, idx: 0x22e}, + 598: {cur: 0x13, idx: 0xf4}, + 599: {cur: 0x4b, idx: 0x495}, + 600: {cur: 0xe9, idx: 0xbc}, + 601: {cur: 0x85, idx: 0x2f3}, + 602: {cur: 0x8f, idx: 0x72}, + 603: {cur: 0xd1, idx: 0xb2}, + 604: {cur: 0xe9, idx: 0xbc}, + 605: {cur: 0xfa, idx: 0x4}, + 606: {cur: 0x51, idx: 0x2ef}, + 607: {cur: 0x85, idx: 0x2f3}, + 608: {cur: 0x87, idx: 0x67}, + 609: {cur: 0xe9, idx: 0xbc}, + 610: {cur: 0xfa, idx: 0x4}, + 611: {cur: 0xe9, idx: 0xbc}, + 612: {cur: 0xfa, idx: 0x4}, + 613: {cur: 0x13, idx: 0xf4}, + 614: {cur: 0xf5, idx: 0x22e}, + 615: {cur: 0x13, idx: 0x0}, + 616: {cur: 0x2e, idx: 0x0}, + 617: {cur: 0x3a, idx: 0x0}, + 618: {cur: 0x62, idx: 0x0}, + 619: {cur: 0x71, idx: 0x0}, + 620: {cur: 0x7b, idx: 0x0}, + 621: {cur: 0x7c, idx: 0x0}, + 622: {cur: 0x86, idx: 0x49f}, + 623: {cur: 0x8c, idx: 0x0}, + 624: {cur: 0xb1, idx: 0x0}, + 625: {cur: 0xbf, idx: 0x0}, + 626: {cur: 0xe9, idx: 0xbc}, + 627: {cur: 0xf4, idx: 0x0}, + 628: {cur: 0xfa, idx: 0x0}, + 629: {cur: 0x10e, idx: 0x0}, + 630: {cur: 0xf5, idx: 0x22e}, + 631: {cur: 0x12, idx: 0x2f7}, + 632: {cur: 0x13, idx: 0xf4}, + 633: {cur: 0x84, idx: 0x25}, + 634: {cur: 0xe9, idx: 0xbc}, + 635: {cur: 0xfa, idx: 0x4}, + 636: {cur: 0xf9, idx: 0x2df}, + 637: {cur: 0xfa, idx: 0x4}, + 638: {cur: 0x3b, idx: 0x315}, + 639: {cur: 0x9, idx: 0x1}, + 640: {cur: 0x90, idx: 0x76}, + 641: {cur: 0xe9, idx: 0xbc}, + 642: {cur: 0x13, idx: 0x0}, + 643: {cur: 0x2e, idx: 0x0}, + 644: {cur: 0x3a, idx: 0x0}, + 645: {cur: 0x43, idx: 0x0}, + 646: {cur: 0x62, idx: 0x0}, + 647: {cur: 0x71, idx: 0x0}, + 648: {cur: 0x7b, idx: 0x0}, + 649: {cur: 0x7c, idx: 0x0}, + 650: {cur: 0x84, idx: 0x0}, + 651: {cur: 0x8c, idx: 0x0}, + 652: {cur: 0xb1, idx: 0x0}, + 653: {cur: 0xbf, idx: 0x0}, + 654: {cur: 0xf4, idx: 0x0}, + 655: {cur: 0xfa, idx: 0x0}, + 656: {cur: 0x103, idx: 0x0}, + 657: {cur: 0x107, idx: 0x0}, + 658: {cur: 0x10e, idx: 0x0}, + 659: {cur: 0x113, idx: 0x0}, + 660: {cur: 0x115, idx: 0x0}, + 661: {cur: 0x3b, idx: 0x315}, + 662: {cur: 0x85, idx: 0x2f3}, + 663: {cur: 0x85, idx: 0x2f3}, + 664: {cur: 0x13, idx: 0xf4}, + 665: {cur: 0x84, idx: 0x25}, + 666: {cur: 0x9a, idx: 0x84}, + 667: {cur: 0xe9, idx: 0xbc}, + 668: {cur: 0xfa, idx: 0x4}, + 669: {cur: 0x85, idx: 0x2f3}, + 670: {cur: 0xf5, idx: 0x22e}, + 671: {cur: 0x85, idx: 0x2f3}, + 672: {cur: 0xad, idx: 0x7e}, + 673: {cur: 0xa2, idx: 0x87}, + 674: {cur: 0xb7, idx: 0x4ac}, + 675: {cur: 0x13, idx: 0x0}, + 676: {cur: 0x43, idx: 0x0}, + 677: {cur: 0x62, idx: 0x0}, + 678: {cur: 0x71, idx: 0x0}, + 679: {cur: 0x7b, idx: 0x0}, + 680: {cur: 0x7c, idx: 0x0}, + 681: {cur: 0x84, idx: 0x0}, + 682: {cur: 0x8c, idx: 0x0}, + 683: {cur: 0xa4, idx: 0x4b0}, + 684: {cur: 0xbf, idx: 0x0}, + 685: {cur: 0xf4, idx: 0x0}, + 686: {cur: 0x103, idx: 0x0}, + 687: {cur: 0x84, idx: 0x25}, + 688: {cur: 0xe9, idx: 0xbc}, + 689: {cur: 0xfa, idx: 0x4}, + 690: {cur: 0xa8, idx: 0x8c}, + 691: {cur: 0xe9, idx: 0xbc}, + 692: {cur: 0xfa, idx: 0x4}, + 693: {cur: 0xe9, idx: 0xbc}, + 694: {cur: 0xfa, idx: 0x4}, + 695: {cur: 0x3a, idx: 0x0}, + 696: {cur: 0xb1, idx: 0x0}, + 697: {cur: 0xb4, idx: 0x94}, + 698: {cur: 0xfa, idx: 0x0}, + 699: {cur: 0x26, idx: 0x4}, + 700: {cur: 0xdb, idx: 0x4}, + 701: {cur: 0x8, idx: 0x4bc}, + 702: {cur: 0x14, idx: 0x4c0}, + 703: {cur: 0x75, idx: 0x45a}, + 704: {cur: 0xa7, idx: 0x8a}, + 705: {cur: 0xc1, idx: 0x37c}, + 706: {cur: 0xe9, idx: 0xbc}, + 707: {cur: 0xf3, idx: 0x20d}, + 708: {cur: 0xfa, idx: 0x4}, + 709: {cur: 0xb8, idx: 0x4}, + 710: {cur: 0x13, idx: 0x0}, + 711: {cur: 0x2e, idx: 0x0}, + 712: {cur: 0x3a, idx: 0x0}, + 713: {cur: 0x43, idx: 0x0}, + 714: {cur: 0x71, idx: 0x0}, + 715: {cur: 0x7b, idx: 0x0}, + 716: {cur: 0x7c, idx: 0x0}, + 717: {cur: 0x84, idx: 0x0}, + 718: {cur: 0x8c, idx: 0x0}, + 719: {cur: 0xb1, idx: 0x0}, + 720: {cur: 0xbd, idx: 0x30}, + 721: {cur: 0xbf, idx: 0x0}, + 722: {cur: 0xf4, idx: 0x0}, + 723: {cur: 0xfa, idx: 0x0}, + 724: {cur: 0x103, idx: 0x0}, + 725: {cur: 0x107, idx: 0x0}, + 726: {cur: 0x10e, idx: 0x0}, + 727: {cur: 0x115, idx: 0x0}, + 728: {cur: 0xbe, idx: 0x4c4}, + 729: {cur: 0xe9, idx: 0xbc}, + 730: {cur: 0x13, idx: 0xf4}, + 731: {cur: 0x3a, idx: 0x9b}, + 732: {cur: 0x5f, idx: 0x153}, + 733: {cur: 0xd5, idx: 0x27c}, + 734: {cur: 0xe9, idx: 0xbc}, + 735: {cur: 0x115, idx: 0x0}, + 736: {cur: 0x14, idx: 0x374}, + 737: {cur: 0xfa, idx: 0x4}, + 738: {cur: 0x8, idx: 0x358}, + 739: {cur: 0xe1, idx: 0x4}, + 740: {cur: 0x8, idx: 0x358}, + 741: {cur: 0xbd, idx: 0x30}, + 742: {cur: 0x62, idx: 0x229}, + 743: {cur: 0xe3, idx: 0x3f}, + 744: {cur: 0xf9, idx: 0x2df}, + 745: {cur: 0x5c, idx: 0x24a}, + 746: {cur: 0x85, idx: 0x2f3}, + 747: {cur: 0x64, idx: 0x42}, + 748: {cur: 0xfa, idx: 0x4}, + 749: {cur: 0x64, idx: 0x0}, + 750: {cur: 0xd1, idx: 0xb2}, + 751: {cur: 0xe9, idx: 0xbc}, + 752: {cur: 0xc7, idx: 0x4d8}, + 753: {cur: 0x13, idx: 0x0}, + 754: {cur: 0x3a, idx: 0x0}, + 755: {cur: 0x43, idx: 0x0}, + 756: {cur: 0x62, idx: 0x0}, + 757: {cur: 0x71, idx: 0x0}, + 758: {cur: 0x7b, idx: 0x0}, + 759: {cur: 0x7c, idx: 0x0}, + 760: {cur: 0x84, idx: 0x0}, + 761: {cur: 0x8c, idx: 0x0}, + 762: {cur: 0xb1, idx: 0x0}, + 763: {cur: 0xbf, idx: 0x0}, + 764: {cur: 0xc8, idx: 0xa6}, + 765: {cur: 0xf4, idx: 0x0}, + 766: {cur: 0xfa, idx: 0x0}, + 767: {cur: 0x103, idx: 0x0}, + 768: {cur: 0x4, idx: 0x38b}, + 769: {cur: 0x13, idx: 0xf4}, + 770: {cur: 0xca, idx: 0x4db}, + 771: {cur: 0xe9, idx: 0xbc}, + 772: {cur: 0x9, idx: 0x1}, + 773: {cur: 0x4b, idx: 0x495}, + 774: {cur: 0xca, idx: 0x4e0}, + 775: {cur: 0x98, idx: 0x2dd}, + 776: {cur: 0xa9, idx: 0x34a}, + 777: {cur: 0xb7, idx: 0x4ac}, + 778: {cur: 0xca, idx: 0x495}, + 779: {cur: 0xe4, idx: 0xb9}, + 780: {cur: 0xc3, idx: 0x380}, + 781: {cur: 0x27, idx: 0x10}, + 782: {cur: 0xc3, idx: 0x0}, + 783: {cur: 0xc3, idx: 0x0}, + 784: {cur: 0xfa, idx: 0x4}, + 785: {cur: 0x24, idx: 0x344}, + 786: {cur: 0x13, idx: 0x0}, + 787: {cur: 0x2e, idx: 0x0}, + 788: {cur: 0x3a, idx: 0x0}, + 789: {cur: 0x43, idx: 0x0}, + 790: {cur: 0x5d, idx: 0x0}, + 791: {cur: 0x62, idx: 0x0}, + 792: {cur: 0x71, idx: 0x0}, + 793: {cur: 0x7b, idx: 0x0}, + 794: {cur: 0x7c, idx: 0x0}, + 795: {cur: 0x84, idx: 0x0}, + 796: {cur: 0x8c, idx: 0x0}, + 797: {cur: 0xb1, idx: 0x0}, + 798: {cur: 0xbf, idx: 0x0}, + 799: {cur: 0xf4, idx: 0x0}, + 800: {cur: 0xfa, idx: 0x0}, + 801: {cur: 0x103, idx: 0x0}, + 802: {cur: 0x10e, idx: 0x0}, + 803: {cur: 0xa1, idx: 0x4f}, + 804: {cur: 0xf5, idx: 0x22e}, + 805: {cur: 0x0, idx: 0x4e7}, + 806: {cur: 0x84, idx: 0x25}, + 807: {cur: 0xd1, idx: 0xb2}, + 808: {cur: 0xd2, idx: 0x18}, + 809: {cur: 0xe9, idx: 0xbc}, + 810: {cur: 0xed, idx: 0x4f0}, + 811: {cur: 0xf6, idx: 0xcb}, + 812: {cur: 0xfa, idx: 0x4}, + 813: {cur: 0x37, idx: 0x24a}, + 814: {cur: 0xd2, idx: 0x0}, + 815: {cur: 0x86, idx: 0x49f}, + 816: {cur: 0x8f, idx: 0x72}, + 817: {cur: 0xa1, idx: 0x4f}, + 818: {cur: 0xd3, idx: 0xb6}, + 819: {cur: 0xf5, idx: 0x22e}, + 820: {cur: 0xd1, idx: 0xb2}, + 821: {cur: 0x85, idx: 0x2f3}, + 822: {cur: 0xf5, idx: 0x22e}, + 823: {cur: 0x51, idx: 0x4f7}, + 824: {cur: 0xbd, idx: 0x30}, + 825: {cur: 0xda, idx: 0x4fb}, + 826: {cur: 0xe9, idx: 0xbc}, + 827: {cur: 0xbd, idx: 0x4ff}, + 828: {cur: 0xda, idx: 0x30}, + 829: {cur: 0xb7, idx: 0x4ac}, + 830: {cur: 0x92, idx: 0x503}, + 831: {cur: 0xe9, idx: 0xbc}, + 832: {cur: 0x113, idx: 0x50b}, + 833: {cur: 0x13, idx: 0x0}, + 834: {cur: 0x2e, idx: 0x0}, + 835: {cur: 0x3a, idx: 0x0}, + 836: {cur: 0x43, idx: 0x0}, + 837: {cur: 0x62, idx: 0x0}, + 838: {cur: 0x71, idx: 0x0}, + 839: {cur: 0x7b, idx: 0x51b}, + 840: {cur: 0x7c, idx: 0x0}, + 841: {cur: 0x84, idx: 0x0}, + 842: {cur: 0x8c, idx: 0x0}, + 843: {cur: 0xbf, idx: 0x0}, + 844: {cur: 0xf4, idx: 0x0}, + 845: {cur: 0xfa, idx: 0x0}, + 846: {cur: 0x103, idx: 0x0}, + 847: {cur: 0x3a, idx: 0x0}, + 848: {cur: 0x84, idx: 0x25}, + 849: {cur: 0xe9, idx: 0xbc}, + 850: {cur: 0xfa, idx: 0x4}, + 851: {cur: 0xe0, idx: 0x227}, + 852: {cur: 0x50, idx: 0x21f}, + 853: {cur: 0x5c, idx: 0x24a}, + 854: {cur: 0x85, idx: 0x2f3}, + 855: {cur: 0x6, idx: 0x51f}, + 856: {cur: 0xe9, idx: 0xbc}, + 857: {cur: 0xa4, idx: 0x525}, + 858: {cur: 0x13, idx: 0x0}, + 859: {cur: 0x18, idx: 0x2c1}, + 860: {cur: 0x84, idx: 0x25}, + 861: {cur: 0x8c, idx: 0x0}, + 862: {cur: 0xbf, idx: 0x0}, + 863: {cur: 0x103, idx: 0x0}, + 864: {cur: 0x13, idx: 0x0}, + 865: {cur: 0x18, idx: 0x9}, + 866: {cur: 0x84, idx: 0x25}, + 867: {cur: 0x8c, idx: 0x0}, + 868: {cur: 0xbf, idx: 0x0}, + 869: {cur: 0x103, idx: 0x0}, + 870: {cur: 0x13, idx: 0x0}, + 871: {cur: 0x1a, idx: 0x23e}, + 872: {cur: 0x25, idx: 0x11f}, + 873: {cur: 0x2e, idx: 0x52c}, + 874: {cur: 0x32, idx: 0x127}, + 875: {cur: 0x39, idx: 0x12b}, + 876: {cur: 0x43, idx: 0x0}, + 877: {cur: 0x51, idx: 0x4f7}, + 878: {cur: 0x52, idx: 0x256}, + 879: {cur: 0x56, idx: 0x530}, + 880: {cur: 0x57, idx: 0x534}, + 881: {cur: 0x62, idx: 0x0}, + 882: {cur: 0x71, idx: 0x0}, + 883: {cur: 0x78, idx: 0x539}, + 884: {cur: 0x7c, idx: 0x0}, + 885: {cur: 0x80, idx: 0x53e}, + 886: {cur: 0x82, idx: 0x171}, + 887: {cur: 0x84, idx: 0x0}, + 888: {cur: 0x8c, idx: 0x0}, + 889: {cur: 0xbd, idx: 0x4ff}, + 890: {cur: 0xbf, idx: 0x0}, + 891: {cur: 0xda, idx: 0x30}, + 892: {cur: 0xf4, idx: 0x0}, + 893: {cur: 0x103, idx: 0x0}, + 894: {cur: 0x85, idx: 0x2f3}, + 895: {cur: 0xe9, idx: 0xbc}, + 896: {cur: 0xf5, idx: 0x22e}, + 897: {cur: 0x3b, idx: 0x315}, + 898: {cur: 0xf9, idx: 0x2df}, + 899: {cur: 0x84, idx: 0x25}, + 900: {cur: 0xe9, idx: 0xbc}, + 901: {cur: 0xfa, idx: 0x4}, + 902: {cur: 0x92, idx: 0x542}, + 903: {cur: 0xb4, idx: 0x94}, + 904: {cur: 0xdb, idx: 0x280}, + 905: {cur: 0xb4, idx: 0x94}, + 906: {cur: 0xdb, idx: 0x4}, + 907: {cur: 0xfa, idx: 0xcf}, + 908: {cur: 0xe9, idx: 0xbc}, + 909: {cur: 0xfa, idx: 0x4}, + 910: {cur: 0xf9, idx: 0x2df}, + 911: {cur: 0x85, idx: 0x2f3}, + 912: {cur: 0x13, idx: 0xf4}, + 913: {cur: 0x84, idx: 0x25}, + 914: {cur: 0x5c, idx: 0x24a}, + 915: {cur: 0x58, idx: 0x223}, + 916: {cur: 0x5d, idx: 0x0}, + 917: {cur: 0x62, idx: 0x0}, + 918: {cur: 0x13, idx: 0x546}, + 919: {cur: 0xbf, idx: 0x54b}, + 920: {cur: 0xef, idx: 0xc0}, + 921: {cur: 0x13, idx: 0xf4}, + 922: {cur: 0x84, idx: 0x25}, + 923: {cur: 0xe9, idx: 0xbc}, + 924: {cur: 0xf2, idx: 0xc3}, + 925: {cur: 0xfa, idx: 0x4}, + 926: {cur: 0x43, idx: 0x491}, + 927: {cur: 0xfa, idx: 0x4}, + 928: {cur: 0x13, idx: 0x0}, + 929: {cur: 0x2e, idx: 0x0}, + 930: {cur: 0x3a, idx: 0x0}, + 931: {cur: 0x43, idx: 0x0}, + 932: {cur: 0x5d, idx: 0x0}, + 933: {cur: 0x62, idx: 0x0}, + 934: {cur: 0x71, idx: 0x0}, + 935: {cur: 0x7b, idx: 0x0}, + 936: {cur: 0x7c, idx: 0x0}, + 937: {cur: 0x84, idx: 0x25}, + 938: {cur: 0x8c, idx: 0x0}, + 939: {cur: 0xb1, idx: 0x0}, + 940: {cur: 0xbf, idx: 0x0}, + 941: {cur: 0xf4, idx: 0x0}, + 942: {cur: 0xf6, idx: 0xcb}, + 943: {cur: 0xf7, idx: 0x550}, + 944: {cur: 0xfa, idx: 0x0}, + 945: {cur: 0x103, idx: 0x0}, + 946: {cur: 0x10e, idx: 0x0}, + 947: {cur: 0xc7, idx: 0x7e}, + 948: {cur: 0xe9, idx: 0xbc}, + 949: {cur: 0xfa, idx: 0x4}, + 950: {cur: 0xc7, idx: 0x0}, + 951: {cur: 0x100, idx: 0x558}, + 952: {cur: 0x4, idx: 0x38b}, + 953: {cur: 0xe9, idx: 0xbc}, + 954: {cur: 0x100, idx: 0x55e}, + 955: {cur: 0x93, idx: 0x4}, + 956: {cur: 0x93, idx: 0x4}, + 957: {cur: 0x13, idx: 0xf4}, + 958: {cur: 0xe9, idx: 0xbc}, + 959: {cur: 0xf5, idx: 0x22e}, + 960: {cur: 0x84, idx: 0x25}, + 961: {cur: 0xfa, idx: 0x4}, + 962: {cur: 0xf9, idx: 0x2df}, + 963: {cur: 0xb9, idx: 0x97}, + 964: {cur: 0x13, idx: 0xf4}, + 965: {cur: 0x84, idx: 0x25}, + 966: {cur: 0x8c, idx: 0x565}, + 967: {cur: 0x13, idx: 0xf4}, + 968: {cur: 0x43, idx: 0x491}, + 969: {cur: 0x7a, idx: 0x569}, + 970: {cur: 0x8c, idx: 0x565}, + 971: {cur: 0x43, idx: 0x20}, + 972: {cur: 0x43, idx: 0x20}, + 973: {cur: 0xa9, idx: 0x34a}, + 974: {cur: 0x43, idx: 0x20}, + 975: {cur: 0xdb, idx: 0x4}, + 976: {cur: 0x13, idx: 0xf4}, + 977: {cur: 0x84, idx: 0x25}, + 978: {cur: 0x8c, idx: 0x565}, + 979: {cur: 0xf4, idx: 0x4}, + 980: {cur: 0x8c, idx: 0x6e}, + 981: {cur: 0xf4, idx: 0xc7}, + 982: {cur: 0xa9, idx: 0x34a}, + 983: {cur: 0xe9, idx: 0xbc}, + 984: {cur: 0x123, idx: 0xe9}, +} // Size: 3964 bytes -var narrowLangIndex = []uint16{ // 748 elements +var narrowLangIndex = []uint16{ // 755 elements // Entry 0 - 3F - 0x0000, 0x0061, 0x0061, 0x0061, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0063, 0x0063, 0x0080, 0x0080, 0x0081, + 0x0000, 0x0062, 0x0062, 0x0062, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0064, 0x0064, 0x0080, 0x0080, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x008a, 0x008a, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00d4, 0x00d4, 0x00d4, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x008a, + 0x008a, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, + 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00d6, 0x00d6, // Entry 40 - 7F - 0x00d4, 0x00d4, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00ea, 0x00ea, 0x00ef, 0x00ef, 0x00ef, - 0x00ef, 0x00ef, 0x00f7, 0x00f7, 0x00f7, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, + 0x00d6, 0x00d6, 0x00d6, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, + 0x00d7, 0x00da, 0x00da, 0x00da, 0x00da, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00e4, 0x00e4, 0x00ea, 0x00ea, + 0x00ea, 0x00ea, 0x00ea, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, // Entry 80 - BF - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, // Entry C0 - FF + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fe, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0102, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, // Entry 100 - 13F - 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0109, 0x010a, 0x010a, 0x010b, 0x010b, 0x010b, - 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, - 0x010b, 0x010d, 0x010d, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, + 0x0100, 0x0100, 0x0100, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0106, 0x0106, 0x0107, 0x0108, 0x0108, + 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, + 0x0109, 0x0109, 0x0109, 0x0109, 0x0165, 0x0165, 0x0166, 0x0166, + 0x0166, 0x0166, 0x0166, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, + 0x016e, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, // Entry 140 - 17F - 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0118, 0x0119, 0x0119, 0x011a, 0x011a, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011f, 0x011f, 0x0122, 0x0122, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0124, 0x0124, 0x0125, 0x0125, 0x0126, - 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0127, 0x0127, 0x012d, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0173, 0x0173, + 0x0174, 0x0174, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, + 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, + 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017b, 0x017b, 0x017c, + 0x017c, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017e, 0x017e, + 0x017f, 0x017f, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, // Entry 180 - 1BF - 0x012d, 0x012d, 0x012d, 0x012d, 0x0130, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0130, 0x0130, 0x0130, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x0132, 0x0132, 0x0133, 0x0133, 0x0134, 0x0134, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0141, 0x0141, + 0x0181, 0x0181, 0x0186, 0x0186, 0x0186, 0x0186, 0x0186, 0x0186, + 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, + 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, + 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, + 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, + 0x018b, 0x018b, 0x018c, 0x018c, 0x018e, 0x018e, 0x018e, 0x018e, + 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, + 0x018e, 0x018e, 0x018e, 0x018e, 0x0199, 0x0199, 0x0199, 0x0199, // Entry 1C0 - 1FF - 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0142, - 0x0142, 0x0142, 0x0142, 0x0142, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x014d, 0x014d, 0x014d, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x014e, 0x014f, 0x014f, 0x0150, 0x0150, 0x0151, - 0x0151, 0x0152, 0x0152, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x0153, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, + 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, + 0x019a, 0x019a, 0x019a, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a8, + 0x01a8, 0x01a9, 0x01a9, 0x01ab, 0x01ab, 0x01ac, 0x01ac, 0x01ad, + 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01af, + 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01b1, 0x01b1, // Entry 200 - 23F - 0x0155, 0x0155, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, - 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, - 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, - 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, 0x0156, - 0x0156, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0159, 0x0159, 0x0159, - 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, - 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, + 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b2, 0x01b2, + 0x01b2, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, + 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, + 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, + 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, + 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b5, 0x01b5, + 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b7, 0x01b7, 0x01b7, 0x01b7, + 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, // Entry 240 - 27F - 0x0159, 0x0159, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015d, 0x015d, 0x015e, 0x015e, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x0161, + 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, + 0x01b7, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01bb, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01be, + 0x01be, 0x01bf, 0x01bf, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, + 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, // Entry 280 - 2BF - 0x0161, 0x0161, 0x0161, 0x0161, 0x0161, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x016a, 0x016a, 0x016b, 0x016b, 0x016b, 0x016b, - 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016c, 0x016c, - 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, + 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c2, 0x01c2, + 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c5, 0x01c5, 0x01c5, 0x01c5, + 0x01c5, 0x01c5, 0x01c5, 0x01c5, 0x01c8, 0x01c8, 0x01c8, 0x01c8, + 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01ca, 0x01ca, + 0x01ca, 0x01ca, 0x01ca, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, + 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, + 0x01cc, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, + 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01cf, 0x01cf, 0x01d0, // Entry 2C0 - 2FF - 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, - 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, - 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, - 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x0177, 0x0177, -} // Size: 1520 bytes + 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, + 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d3, + 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d4, 0x01d4, 0x01d4, + 0x01d4, 0x01dc, 0x01dc, +} // Size: 1534 bytes -var narrowSymIndex = []curToIndex{ // 375 elements +var narrowSymIndex = []curToIndex{ // 476 elements 0: {cur: 0x9, idx: 0x1}, 1: {cur: 0x11, idx: 0x4}, 2: {cur: 0x13, idx: 0x4}, @@ -2113,368 +2106,469 @@ var narrowSymIndex = []curToIndex{ // 375 elements 10: {cur: 0x32, idx: 0x4}, 11: {cur: 0x35, idx: 0x16}, 12: {cur: 0x37, idx: 0x18}, - 13: {cur: 0x38, idx: 0x4}, - 14: {cur: 0x39, idx: 0x4}, - 15: {cur: 0x40, idx: 0x4}, - 16: {cur: 0x42, idx: 0x25}, - 17: {cur: 0x43, idx: 0x4}, - 18: {cur: 0x45, idx: 0x28}, - 19: {cur: 0x48, idx: 0x4}, - 20: {cur: 0x49, idx: 0x4}, - 21: {cur: 0x4c, idx: 0x2c}, - 22: {cur: 0x50, idx: 0x30}, - 23: {cur: 0x51, idx: 0x4}, - 24: {cur: 0x56, idx: 0x33}, - 25: {cur: 0x5a, idx: 0x37}, - 26: {cur: 0x5c, idx: 0x3b}, - 27: {cur: 0x5e, idx: 0x4}, - 28: {cur: 0x5f, idx: 0x3f}, - 29: {cur: 0x61, idx: 0x3f}, - 30: {cur: 0x63, idx: 0x42}, - 31: {cur: 0x66, idx: 0x3f}, - 32: {cur: 0x68, idx: 0x46}, - 33: {cur: 0x6c, idx: 0x49}, - 34: {cur: 0x6f, idx: 0x4}, - 35: {cur: 0x70, idx: 0x4}, - 36: {cur: 0x71, idx: 0x4f}, - 37: {cur: 0x73, idx: 0x51}, - 38: {cur: 0x75, idx: 0x54}, - 39: {cur: 0x76, idx: 0x57}, - 40: {cur: 0x7a, idx: 0x5a}, - 41: {cur: 0x7b, idx: 0x5e}, - 42: {cur: 0x7f, idx: 0x30}, - 43: {cur: 0x81, idx: 0x4}, - 44: {cur: 0x83, idx: 0x25}, - 45: {cur: 0x86, idx: 0x67}, - 46: {cur: 0x87, idx: 0x6b}, - 47: {cur: 0x88, idx: 0x6e}, - 48: {cur: 0x8b, idx: 0x6e}, - 49: {cur: 0x8d, idx: 0x4}, - 50: {cur: 0x8e, idx: 0x72}, - 51: {cur: 0x8f, idx: 0x76}, - 52: {cur: 0x90, idx: 0x7a}, - 53: {cur: 0x91, idx: 0x7e}, - 54: {cur: 0x92, idx: 0x4}, - 55: {cur: 0x94, idx: 0x81}, - 56: {cur: 0x99, idx: 0x84}, - 57: {cur: 0xa1, idx: 0x87}, - 58: {cur: 0xa6, idx: 0x8a}, - 59: {cur: 0xa7, idx: 0x8c}, - 60: {cur: 0xac, idx: 0x7e}, - 61: {cur: 0xb0, idx: 0x4}, - 62: {cur: 0xb3, idx: 0x94}, - 63: {cur: 0xb7, idx: 0x4}, - 64: {cur: 0xb8, idx: 0x97}, - 65: {cur: 0xba, idx: 0x9b}, - 66: {cur: 0xbc, idx: 0x30}, - 67: {cur: 0xbd, idx: 0x7e}, - 68: {cur: 0xbe, idx: 0x4}, - 69: {cur: 0xc5, idx: 0xa2}, - 70: {cur: 0xc6, idx: 0x7e}, - 71: {cur: 0xc7, idx: 0xa6}, - 72: {cur: 0xca, idx: 0xaa}, - 73: {cur: 0xd0, idx: 0xae}, - 74: {cur: 0xd1, idx: 0x18}, - 75: {cur: 0xd2, idx: 0xb2}, - 76: {cur: 0xd4, idx: 0x4}, - 77: {cur: 0xd9, idx: 0x30}, - 78: {cur: 0xda, idx: 0x4}, - 79: {cur: 0xdb, idx: 0x3f}, - 80: {cur: 0xe0, idx: 0x4}, - 81: {cur: 0xe2, idx: 0x3f}, - 82: {cur: 0xe3, idx: 0xb5}, - 83: {cur: 0xe6, idx: 0x3f}, - 84: {cur: 0xe8, idx: 0xb8}, - 85: {cur: 0xee, idx: 0xbc}, - 86: {cur: 0xf1, idx: 0xbf}, - 87: {cur: 0xf2, idx: 0x4}, + 13: {cur: 0x39, idx: 0x4}, + 14: {cur: 0x3a, idx: 0x4}, + 15: {cur: 0x41, idx: 0x4}, + 16: {cur: 0x43, idx: 0x25}, + 17: {cur: 0x44, idx: 0x4}, + 18: {cur: 0x46, idx: 0x28}, + 19: {cur: 0x49, idx: 0x4}, + 20: {cur: 0x4a, idx: 0x4}, + 21: {cur: 0x4d, idx: 0x2c}, + 22: {cur: 0x51, idx: 0x30}, + 23: {cur: 0x52, idx: 0x4}, + 24: {cur: 0x57, idx: 0x33}, + 25: {cur: 0x5b, idx: 0x37}, + 26: {cur: 0x5d, idx: 0x3b}, + 27: {cur: 0x5f, idx: 0x4}, + 28: {cur: 0x60, idx: 0x3f}, + 29: {cur: 0x62, idx: 0x3f}, + 30: {cur: 0x64, idx: 0x42}, + 31: {cur: 0x67, idx: 0x3f}, + 32: {cur: 0x69, idx: 0x46}, + 33: {cur: 0x6d, idx: 0x49}, + 34: {cur: 0x70, idx: 0x4}, + 35: {cur: 0x71, idx: 0x4}, + 36: {cur: 0x72, idx: 0x4f}, + 37: {cur: 0x74, idx: 0x51}, + 38: {cur: 0x76, idx: 0x54}, + 39: {cur: 0x77, idx: 0x57}, + 40: {cur: 0x7b, idx: 0x5a}, + 41: {cur: 0x7c, idx: 0x5e}, + 42: {cur: 0x80, idx: 0x30}, + 43: {cur: 0x82, idx: 0x4}, + 44: {cur: 0x84, idx: 0x25}, + 45: {cur: 0x87, idx: 0x67}, + 46: {cur: 0x88, idx: 0x6b}, + 47: {cur: 0x89, idx: 0x6e}, + 48: {cur: 0x8c, idx: 0x6e}, + 49: {cur: 0x8e, idx: 0x4}, + 50: {cur: 0x8f, idx: 0x72}, + 51: {cur: 0x90, idx: 0x76}, + 52: {cur: 0x91, idx: 0x7a}, + 53: {cur: 0x92, idx: 0x7e}, + 54: {cur: 0x93, idx: 0x4}, + 55: {cur: 0x95, idx: 0x81}, + 56: {cur: 0x9a, idx: 0x84}, + 57: {cur: 0xa2, idx: 0x87}, + 58: {cur: 0xa7, idx: 0x8a}, + 59: {cur: 0xa8, idx: 0x8c}, + 60: {cur: 0xad, idx: 0x7e}, + 61: {cur: 0xb1, idx: 0x4}, + 62: {cur: 0xb4, idx: 0x94}, + 63: {cur: 0xb8, idx: 0x4}, + 64: {cur: 0xb9, idx: 0x97}, + 65: {cur: 0xbb, idx: 0x9b}, + 66: {cur: 0xbd, idx: 0x30}, + 67: {cur: 0xbe, idx: 0x7e}, + 68: {cur: 0xbf, idx: 0x4}, + 69: {cur: 0xc6, idx: 0xa2}, + 70: {cur: 0xc7, idx: 0x7e}, + 71: {cur: 0xc8, idx: 0xa6}, + 72: {cur: 0xcb, idx: 0xaa}, + 73: {cur: 0xcf, idx: 0xae}, + 74: {cur: 0xd1, idx: 0xb2}, + 75: {cur: 0xd2, idx: 0x18}, + 76: {cur: 0xd3, idx: 0xb6}, + 77: {cur: 0xd5, idx: 0x4}, + 78: {cur: 0xda, idx: 0x30}, + 79: {cur: 0xdb, idx: 0x4}, + 80: {cur: 0xdc, idx: 0x3f}, + 81: {cur: 0xe1, idx: 0x4}, + 82: {cur: 0xe3, idx: 0x3f}, + 83: {cur: 0xe4, idx: 0xb9}, + 84: {cur: 0xe7, idx: 0x3f}, + 85: {cur: 0xe9, idx: 0xbc}, + 86: {cur: 0xef, idx: 0xc0}, + 87: {cur: 0xf2, idx: 0xc3}, 88: {cur: 0xf3, idx: 0x4}, - 89: {cur: 0xf5, idx: 0xc7}, - 90: {cur: 0xf9, idx: 0x4}, - 91: {cur: 0xfe, idx: 0x4}, - 92: {cur: 0x101, idx: 0x10}, - 93: {cur: 0x102, idx: 0xcf}, - 94: {cur: 0x10d, idx: 0x4}, - 95: {cur: 0x122, idx: 0xe5}, - 96: {cur: 0x124, idx: 0xe7}, - 97: {cur: 0xf3, idx: 0xc3}, - 98: {cur: 0xf3, idx: 0xc3}, - 99: {cur: 0x11, idx: 0x109}, - 100: {cur: 0x13, idx: 0xf0}, - 101: {cur: 0x1a, idx: 0x10d}, - 102: {cur: 0x25, idx: 0x11b}, - 103: {cur: 0x26, idx: 0x11f}, - 104: {cur: 0x32, idx: 0x123}, - 105: {cur: 0x38, idx: 0x127}, - 106: {cur: 0x39, idx: 0x1c}, - 107: {cur: 0x40, idx: 0x12b}, - 108: {cur: 0x42, idx: 0x20}, - 109: {cur: 0x43, idx: 0x12f}, - 110: {cur: 0x49, idx: 0x133}, - 111: {cur: 0x51, idx: 0x137}, - 112: {cur: 0x5e, idx: 0x14f}, - 113: {cur: 0x61, idx: 0x153}, - 114: {cur: 0x6f, idx: 0x158}, - 115: {cur: 0x70, idx: 0x4b}, - 116: {cur: 0x81, idx: 0x176}, - 117: {cur: 0x83, idx: 0x62}, - 118: {cur: 0x8d, idx: 0x19b}, - 119: {cur: 0xb0, idx: 0x90}, - 120: {cur: 0xbe, idx: 0x9e}, - 121: {cur: 0xd4, idx: 0x1ec}, - 122: {cur: 0xe0, idx: 0x201}, - 123: {cur: 0xe2, idx: 0x205}, - 124: {cur: 0xf2, idx: 0x22a}, - 125: {cur: 0xf3, idx: 0xc3}, - 126: {cur: 0xf9, idx: 0xcb}, - 127: {cur: 0xfe, idx: 0x22e}, + 89: {cur: 0xf4, idx: 0x4}, + 90: {cur: 0xf6, idx: 0xcb}, + 91: {cur: 0xfa, idx: 0x4}, + 92: {cur: 0xff, idx: 0x4}, + 93: {cur: 0x102, idx: 0x10}, + 94: {cur: 0x103, idx: 0xd3}, + 95: {cur: 0x10e, idx: 0x4}, + 96: {cur: 0x123, idx: 0xe9}, + 97: {cur: 0x125, idx: 0xeb}, + 98: {cur: 0xf4, idx: 0xc7}, + 99: {cur: 0xf4, idx: 0xc7}, + 100: {cur: 0x11, idx: 0x10d}, + 101: {cur: 0x13, idx: 0xf4}, + 102: {cur: 0x1a, idx: 0x111}, + 103: {cur: 0x25, idx: 0x11f}, + 104: {cur: 0x26, idx: 0x123}, + 105: {cur: 0x32, idx: 0x127}, + 106: {cur: 0x39, idx: 0x12b}, + 107: {cur: 0x3a, idx: 0x1c}, + 108: {cur: 0x41, idx: 0x12f}, + 109: {cur: 0x43, idx: 0x20}, + 110: {cur: 0x44, idx: 0x133}, + 111: {cur: 0x4a, idx: 0x137}, + 112: {cur: 0x52, idx: 0x13b}, + 113: {cur: 0x5f, idx: 0x153}, + 114: {cur: 0x62, idx: 0x157}, + 115: {cur: 0x70, idx: 0x15c}, + 116: {cur: 0x71, idx: 0x4b}, + 117: {cur: 0x82, idx: 0x171}, + 118: {cur: 0x84, idx: 0x62}, + 119: {cur: 0x8e, idx: 0x196}, + 120: {cur: 0xb1, idx: 0x90}, + 121: {cur: 0xbf, idx: 0x9e}, + 122: {cur: 0xd5, idx: 0x1e0}, + 123: {cur: 0xe1, idx: 0x1f5}, + 124: {cur: 0xf3, idx: 0x20d}, + 125: {cur: 0xf4, idx: 0xc7}, + 126: {cur: 0xfa, idx: 0xcf}, + 127: {cur: 0xff, idx: 0x211}, 128: {cur: 0x26, idx: 0x4}, 129: {cur: 0x37, idx: 0x0}, - 130: {cur: 0x50, idx: 0x0}, - 131: {cur: 0x73, idx: 0x0}, - 132: {cur: 0x7f, idx: 0x0}, - 133: {cur: 0xbc, idx: 0x0}, - 134: {cur: 0xc7, idx: 0x0}, - 135: {cur: 0xd1, idx: 0x0}, - 136: {cur: 0xd9, idx: 0x0}, - 137: {cur: 0xf3, idx: 0xc3}, - 138: {cur: 0xe6, idx: 0x253}, - 139: {cur: 0xf3, idx: 0xc3}, - 140: {cur: 0x13, idx: 0x6}, - 141: {cur: 0x1a, idx: 0x257}, - 142: {cur: 0x25, idx: 0x25c}, - 143: {cur: 0x32, idx: 0x260}, - 144: {cur: 0x38, idx: 0x127}, - 145: {cur: 0x39, idx: 0x1c}, - 146: {cur: 0x48, idx: 0x263}, - 147: {cur: 0x49, idx: 0x268}, - 148: {cur: 0x51, idx: 0x26c}, - 149: {cur: 0x5e, idx: 0x14f}, - 150: {cur: 0x5f, idx: 0x270}, - 151: {cur: 0x6f, idx: 0x275}, - 152: {cur: 0x7f, idx: 0x278}, - 153: {cur: 0x81, idx: 0x27d}, - 154: {cur: 0x8d, idx: 0x280}, - 155: {cur: 0x92, idx: 0x284}, - 156: {cur: 0xb0, idx: 0x90}, - 157: {cur: 0xb7, idx: 0x287}, - 158: {cur: 0xbe, idx: 0x9e}, - 159: {cur: 0xd0, idx: 0x28a}, - 160: {cur: 0xd4, idx: 0x292}, - 161: {cur: 0xda, idx: 0x296}, - 162: {cur: 0xf2, idx: 0x22a}, - 163: {cur: 0xfe, idx: 0x299}, - 164: {cur: 0x10d, idx: 0xd8}, - 165: {cur: 0x11, idx: 0x0}, - 166: {cur: 0x13, idx: 0x0}, - 167: {cur: 0x1a, idx: 0x0}, - 168: {cur: 0x1b, idx: 0x0}, - 169: {cur: 0x25, idx: 0x0}, - 170: {cur: 0x26, idx: 0x0}, - 171: {cur: 0x2e, idx: 0x0}, - 172: {cur: 0x32, idx: 0x0}, - 173: {cur: 0x37, idx: 0x0}, - 174: {cur: 0x38, idx: 0x0}, - 175: {cur: 0x39, idx: 0x0}, - 176: {cur: 0x40, idx: 0x0}, - 177: {cur: 0x42, idx: 0x0}, - 178: {cur: 0x43, idx: 0x0}, - 179: {cur: 0x45, idx: 0x0}, - 180: {cur: 0x49, idx: 0x0}, - 181: {cur: 0x51, idx: 0x0}, - 182: {cur: 0x5e, idx: 0x0}, - 183: {cur: 0x66, idx: 0x0}, - 184: {cur: 0x6f, idx: 0x0}, - 185: {cur: 0x70, idx: 0x0}, - 186: {cur: 0x7a, idx: 0x0}, - 187: {cur: 0x7b, idx: 0x0}, - 188: {cur: 0x81, idx: 0x0}, - 189: {cur: 0x86, idx: 0x0}, - 190: {cur: 0x8b, idx: 0x0}, - 191: {cur: 0x8d, idx: 0x0}, - 192: {cur: 0x8e, idx: 0x0}, - 193: {cur: 0x8f, idx: 0x0}, - 194: {cur: 0x92, idx: 0x0}, - 195: {cur: 0xa7, idx: 0x0}, - 196: {cur: 0xb0, idx: 0x0}, - 197: {cur: 0xb7, idx: 0x0}, - 198: {cur: 0xb8, idx: 0x0}, - 199: {cur: 0xbe, idx: 0x0}, - 200: {cur: 0xc5, idx: 0x0}, - 201: {cur: 0xca, idx: 0x0}, - 202: {cur: 0xd4, idx: 0x0}, - 203: {cur: 0xda, idx: 0x0}, - 204: {cur: 0xe0, idx: 0x0}, - 205: {cur: 0xe2, idx: 0x0}, - 206: {cur: 0xf1, idx: 0x0}, - 207: {cur: 0xf2, idx: 0x0}, - 208: {cur: 0xf3, idx: 0x0}, - 209: {cur: 0xf5, idx: 0x0}, - 210: {cur: 0xfe, idx: 0x0}, - 211: {cur: 0x102, idx: 0x0}, - 212: {cur: 0xf3, idx: 0xc3}, - 213: {cur: 0x56, idx: 0x2b0}, - 214: {cur: 0x90, idx: 0x2c0}, - 215: {cur: 0xee, idx: 0x2c9}, - 216: {cur: 0xf3, idx: 0xc3}, - 217: {cur: 0x9, idx: 0x0}, - 218: {cur: 0x27, idx: 0x0}, - 219: {cur: 0x50, idx: 0x0}, - 220: {cur: 0x6c, idx: 0x0}, - 221: {cur: 0x71, idx: 0x0}, - 222: {cur: 0x7f, idx: 0x0}, - 223: {cur: 0xbc, idx: 0x0}, - 224: {cur: 0xd9, idx: 0x0}, - 225: {cur: 0xe3, idx: 0x0}, - 226: {cur: 0x101, idx: 0x0}, - 227: {cur: 0xf3, idx: 0xc3}, - 228: {cur: 0x1b, idx: 0x302}, - 229: {cur: 0x35, idx: 0x0}, - 230: {cur: 0x70, idx: 0x4b}, - 231: {cur: 0xf3, idx: 0xc3}, - 232: {cur: 0x122, idx: 0x0}, - 233: {cur: 0x124, idx: 0x0}, - 234: {cur: 0x50, idx: 0x305}, - 235: {cur: 0x7f, idx: 0x305}, - 236: {cur: 0xbc, idx: 0x305}, - 237: {cur: 0xd9, idx: 0x305}, - 238: {cur: 0xf3, idx: 0xc3}, - 239: {cur: 0x48, idx: 0x319}, - 240: {cur: 0x5f, idx: 0x321}, - 241: {cur: 0x68, idx: 0x326}, - 242: {cur: 0x87, idx: 0x32b}, - 243: {cur: 0xd2, idx: 0x32e}, - 244: {cur: 0xe6, idx: 0x0}, - 245: {cur: 0xf3, idx: 0xc3}, - 246: {cur: 0x124, idx: 0x8a}, - 247: {cur: 0x5c, idx: 0x0}, - 248: {cur: 0x1b, idx: 0x34a}, - 249: {cur: 0x27, idx: 0x34d}, - 250: {cur: 0x49, idx: 0xa2}, - 251: {cur: 0x56, idx: 0x3f}, - 252: {cur: 0x7f, idx: 0x350}, - 253: {cur: 0xca, idx: 0x353}, - 254: {cur: 0xd9, idx: 0x350}, - 255: {cur: 0xfe, idx: 0x299}, - 256: {cur: 0x56, idx: 0x0}, - 257: {cur: 0xf3, idx: 0xc3}, - 258: {cur: 0x56, idx: 0x33}, - 259: {cur: 0x101, idx: 0x37c}, - 260: {cur: 0x11, idx: 0x387}, - 261: {cur: 0x37, idx: 0x38f}, - 262: {cur: 0x51, idx: 0x26c}, - 263: {cur: 0xf1, idx: 0x392}, - 264: {cur: 0x101, idx: 0x3a1}, - 265: {cur: 0xf3, idx: 0xc3}, - 266: {cur: 0xf3, idx: 0xc3}, - 267: {cur: 0xf3, idx: 0xc3}, - 268: {cur: 0xfe, idx: 0x299}, - 269: {cur: 0xf3, idx: 0xc3}, - 270: {cur: 0x56, idx: 0x3f4}, - 271: {cur: 0x87, idx: 0x32b}, - 272: {cur: 0x90, idx: 0x2c0}, - 273: {cur: 0xba, idx: 0x429}, - 274: {cur: 0xd2, idx: 0x430}, - 275: {cur: 0xf3, idx: 0xc3}, - 276: {cur: 0x124, idx: 0x450}, - 277: {cur: 0x87, idx: 0x6b}, - 278: {cur: 0xba, idx: 0x9b}, - 279: {cur: 0x124, idx: 0xe7}, - 280: {cur: 0xf3, idx: 0xc3}, - 281: {cur: 0xf3, idx: 0xc3}, - 282: {cur: 0x2e, idx: 0x47c}, - 283: {cur: 0xf3, idx: 0xc3}, - 284: {cur: 0xac, idx: 0x488}, - 285: {cur: 0xf3, idx: 0xc3}, - 286: {cur: 0xf3, idx: 0xc3}, - 287: {cur: 0xac, idx: 0x497}, - 288: {cur: 0xc6, idx: 0x497}, - 289: {cur: 0xf3, idx: 0xc3}, - 290: {cur: 0xf3, idx: 0xc3}, - 291: {cur: 0xf3, idx: 0xc3}, - 292: {cur: 0xf3, idx: 0xc3}, - 293: {cur: 0xf3, idx: 0xc3}, - 294: {cur: 0xf3, idx: 0xc3}, - 295: {cur: 0x27, idx: 0x34d}, - 296: {cur: 0x37, idx: 0x38f}, - 297: {cur: 0x48, idx: 0x263}, - 298: {cur: 0x56, idx: 0x3f4}, - 299: {cur: 0xbc, idx: 0x49e}, - 300: {cur: 0xf3, idx: 0xc3}, - 301: {cur: 0x42, idx: 0x4a6}, - 302: {cur: 0x83, idx: 0x4a6}, - 303: {cur: 0xf3, idx: 0xc3}, - 304: {cur: 0xf3, idx: 0xc3}, - 305: {cur: 0xf3, idx: 0xc3}, - 306: {cur: 0xf3, idx: 0xc3}, - 307: {cur: 0xf3, idx: 0xc3}, - 308: {cur: 0xf3, idx: 0xc3}, - 309: {cur: 0x25, idx: 0x25c}, - 310: {cur: 0x32, idx: 0x260}, - 311: {cur: 0x38, idx: 0x127}, - 312: {cur: 0x39, idx: 0x9b}, - 313: {cur: 0x51, idx: 0x26c}, - 314: {cur: 0x56, idx: 0x4b9}, - 315: {cur: 0x70, idx: 0x4b}, - 316: {cur: 0x73, idx: 0x4bc}, - 317: {cur: 0x81, idx: 0x27d}, - 318: {cur: 0xf2, idx: 0x22a}, - 319: {cur: 0xf3, idx: 0xc3}, - 320: {cur: 0xf3, idx: 0xc3}, - 321: {cur: 0xf3, idx: 0xc3}, - 322: {cur: 0x1b, idx: 0x0}, - 323: {cur: 0x37, idx: 0x38f}, - 324: {cur: 0x7a, idx: 0x0}, - 325: {cur: 0x7b, idx: 0x0}, - 326: {cur: 0x86, idx: 0x0}, - 327: {cur: 0x8f, idx: 0x0}, - 328: {cur: 0xa7, idx: 0x0}, - 329: {cur: 0xc7, idx: 0x4c6}, - 330: {cur: 0xca, idx: 0x353}, - 331: {cur: 0xd0, idx: 0x4c9}, - 332: {cur: 0x102, idx: 0x0}, - 333: {cur: 0xf3, idx: 0xc3}, - 334: {cur: 0xf3, idx: 0xc3}, - 335: {cur: 0xf3, idx: 0xc3}, - 336: {cur: 0xf3, idx: 0xc3}, - 337: {cur: 0xf3, idx: 0xc3}, - 338: {cur: 0xf3, idx: 0xc3}, - 339: {cur: 0x38, idx: 0x4d7}, - 340: {cur: 0xf3, idx: 0xc3}, - 341: {cur: 0xf3, idx: 0xc3}, - 342: {cur: 0xf3, idx: 0xc3}, - 343: {cur: 0xf3, idx: 0xc3}, - 344: {cur: 0xf3, idx: 0xc3}, - 345: {cur: 0xf3, idx: 0xc3}, - 346: {cur: 0xf3, idx: 0xc3}, - 347: {cur: 0x91, idx: 0x531}, - 348: {cur: 0xf3, idx: 0xc3}, - 349: {cur: 0xf3, idx: 0xc3}, - 350: {cur: 0xf3, idx: 0xc3}, - 351: {cur: 0xd0, idx: 0x563}, - 352: {cur: 0xf3, idx: 0xc3}, - 353: {cur: 0x37, idx: 0x56a}, - 354: {cur: 0xd0, idx: 0x56d}, - 355: {cur: 0xf3, idx: 0xc3}, - 356: {cur: 0x5a, idx: 0x0}, - 357: {cur: 0xf3, idx: 0xc3}, - 358: {cur: 0xf3, idx: 0xc3}, - 359: {cur: 0xf3, idx: 0xc3}, - 360: {cur: 0xf3, idx: 0xc3}, - 361: {cur: 0xf3, idx: 0xc3}, - 362: {cur: 0xf3, idx: 0xc3}, - 363: {cur: 0xf3, idx: 0xc3}, - 364: {cur: 0xf3, idx: 0xc3}, - 365: {cur: 0xf3, idx: 0xc3}, - 366: {cur: 0xf3, idx: 0xc3}, - 367: {cur: 0x37, idx: 0x5ad}, - 368: {cur: 0x50, idx: 0x350}, - 369: {cur: 0x73, idx: 0x4bc}, - 370: {cur: 0x7f, idx: 0x350}, - 371: {cur: 0xbc, idx: 0x350}, - 372: {cur: 0xc7, idx: 0x5b0}, - 373: {cur: 0xd9, idx: 0x350}, - 374: {cur: 0xf3, idx: 0xc3}, -} // Size: 1524 bytes + 130: {cur: 0x51, idx: 0x0}, + 131: {cur: 0x74, idx: 0x0}, + 132: {cur: 0x80, idx: 0x0}, + 133: {cur: 0xbd, idx: 0x0}, + 134: {cur: 0xc8, idx: 0x0}, + 135: {cur: 0xd2, idx: 0x0}, + 136: {cur: 0xda, idx: 0x0}, + 137: {cur: 0xf4, idx: 0xc7}, + 138: {cur: 0xcf, idx: 0x236}, + 139: {cur: 0xe7, idx: 0x23a}, + 140: {cur: 0xf4, idx: 0xc7}, + 141: {cur: 0x13, idx: 0x6}, + 142: {cur: 0x1a, idx: 0x23e}, + 143: {cur: 0x25, idx: 0x243}, + 144: {cur: 0x32, idx: 0x247}, + 145: {cur: 0x37, idx: 0x24a}, + 146: {cur: 0x39, idx: 0x12b}, + 147: {cur: 0x3a, idx: 0x1c}, + 148: {cur: 0x49, idx: 0x24d}, + 149: {cur: 0x4a, idx: 0x252}, + 150: {cur: 0x52, idx: 0x256}, + 151: {cur: 0x5f, idx: 0x153}, + 152: {cur: 0x60, idx: 0x25a}, + 153: {cur: 0x70, idx: 0x25f}, + 154: {cur: 0x80, idx: 0x262}, + 155: {cur: 0x82, idx: 0x267}, + 156: {cur: 0x8e, idx: 0x26a}, + 157: {cur: 0x93, idx: 0x26e}, + 158: {cur: 0xb1, idx: 0x90}, + 159: {cur: 0xb8, idx: 0x271}, + 160: {cur: 0xbf, idx: 0x9e}, + 161: {cur: 0xd1, idx: 0x274}, + 162: {cur: 0xd5, idx: 0x27c}, + 163: {cur: 0xdb, idx: 0x280}, + 164: {cur: 0xf3, idx: 0x20d}, + 165: {cur: 0xff, idx: 0x283}, + 166: {cur: 0x10e, idx: 0xdc}, + 167: {cur: 0x11, idx: 0x0}, + 168: {cur: 0x13, idx: 0x0}, + 169: {cur: 0x1a, idx: 0x0}, + 170: {cur: 0x1b, idx: 0x0}, + 171: {cur: 0x25, idx: 0x0}, + 172: {cur: 0x26, idx: 0x0}, + 173: {cur: 0x2e, idx: 0x0}, + 174: {cur: 0x32, idx: 0x0}, + 175: {cur: 0x37, idx: 0x0}, + 176: {cur: 0x39, idx: 0x0}, + 177: {cur: 0x3a, idx: 0x0}, + 178: {cur: 0x41, idx: 0x0}, + 179: {cur: 0x43, idx: 0x0}, + 180: {cur: 0x44, idx: 0x0}, + 181: {cur: 0x46, idx: 0x0}, + 182: {cur: 0x4a, idx: 0x0}, + 183: {cur: 0x52, idx: 0x0}, + 184: {cur: 0x5f, idx: 0x0}, + 185: {cur: 0x67, idx: 0x0}, + 186: {cur: 0x70, idx: 0x0}, + 187: {cur: 0x71, idx: 0x0}, + 188: {cur: 0x7b, idx: 0x0}, + 189: {cur: 0x7c, idx: 0x0}, + 190: {cur: 0x82, idx: 0x0}, + 191: {cur: 0x87, idx: 0x0}, + 192: {cur: 0x8c, idx: 0x0}, + 193: {cur: 0x8e, idx: 0x0}, + 194: {cur: 0x8f, idx: 0x0}, + 195: {cur: 0x90, idx: 0x0}, + 196: {cur: 0x93, idx: 0x0}, + 197: {cur: 0xa8, idx: 0x0}, + 198: {cur: 0xb1, idx: 0x0}, + 199: {cur: 0xb8, idx: 0x0}, + 200: {cur: 0xb9, idx: 0x0}, + 201: {cur: 0xbf, idx: 0x0}, + 202: {cur: 0xc6, idx: 0x0}, + 203: {cur: 0xcb, idx: 0x0}, + 204: {cur: 0xd5, idx: 0x0}, + 205: {cur: 0xdb, idx: 0x0}, + 206: {cur: 0xe1, idx: 0x0}, + 207: {cur: 0xe3, idx: 0x0}, + 208: {cur: 0xf2, idx: 0x0}, + 209: {cur: 0xf3, idx: 0x0}, + 210: {cur: 0xf4, idx: 0x0}, + 211: {cur: 0xf6, idx: 0x0}, + 212: {cur: 0xff, idx: 0x0}, + 213: {cur: 0x103, idx: 0x0}, + 214: {cur: 0xf4, idx: 0xc7}, + 215: {cur: 0x57, idx: 0x29a}, + 216: {cur: 0x91, idx: 0x2aa}, + 217: {cur: 0xef, idx: 0x2b3}, + 218: {cur: 0xf4, idx: 0xc7}, + 219: {cur: 0x102, idx: 0x0}, + 220: {cur: 0xcf, idx: 0x4f}, + 221: {cur: 0xf4, idx: 0xc7}, + 222: {cur: 0x1b, idx: 0x2ec}, + 223: {cur: 0x35, idx: 0x0}, + 224: {cur: 0x71, idx: 0x4b}, + 225: {cur: 0xf4, idx: 0xc7}, + 226: {cur: 0x123, idx: 0x0}, + 227: {cur: 0x125, idx: 0x0}, + 228: {cur: 0x51, idx: 0x2ef}, + 229: {cur: 0x80, idx: 0x2ef}, + 230: {cur: 0xbd, idx: 0x2ef}, + 231: {cur: 0xcf, idx: 0x4f}, + 232: {cur: 0xda, idx: 0x2ef}, + 233: {cur: 0xf4, idx: 0xc7}, + 234: {cur: 0x49, idx: 0x303}, + 235: {cur: 0x60, idx: 0x30b}, + 236: {cur: 0x69, idx: 0x310}, + 237: {cur: 0x88, idx: 0x315}, + 238: {cur: 0xcf, idx: 0x4f}, + 239: {cur: 0xd3, idx: 0x318}, + 240: {cur: 0xe7, idx: 0x0}, + 241: {cur: 0xf4, idx: 0xc7}, + 242: {cur: 0x125, idx: 0x8a}, + 243: {cur: 0x1b, idx: 0x334}, + 244: {cur: 0x27, idx: 0x337}, + 245: {cur: 0x4a, idx: 0xa2}, + 246: {cur: 0x57, idx: 0x3f}, + 247: {cur: 0x80, idx: 0x33a}, + 248: {cur: 0xcb, idx: 0x33d}, + 249: {cur: 0xda, idx: 0x33a}, + 250: {cur: 0xff, idx: 0x283}, + 251: {cur: 0x57, idx: 0x0}, + 252: {cur: 0xcf, idx: 0x4f}, + 253: {cur: 0xf4, idx: 0xc7}, + 254: {cur: 0x57, idx: 0x33}, + 255: {cur: 0x102, idx: 0x366}, + 256: {cur: 0x11, idx: 0x371}, + 257: {cur: 0x37, idx: 0x24a}, + 258: {cur: 0x52, idx: 0x256}, + 259: {cur: 0xcf, idx: 0xae}, + 260: {cur: 0xf2, idx: 0x379}, + 261: {cur: 0xcf, idx: 0xae}, + 262: {cur: 0x102, idx: 0x387}, + 263: {cur: 0xf4, idx: 0xc7}, + 264: {cur: 0xf4, idx: 0xc7}, + 265: {cur: 0x9, idx: 0x0}, + 266: {cur: 0x11, idx: 0x0}, + 267: {cur: 0x13, idx: 0x0}, + 268: {cur: 0x1a, idx: 0x0}, + 269: {cur: 0x1b, idx: 0x0}, + 270: {cur: 0x25, idx: 0x0}, + 271: {cur: 0x26, idx: 0x0}, + 272: {cur: 0x27, idx: 0x0}, + 273: {cur: 0x2e, idx: 0x0}, + 274: {cur: 0x32, idx: 0x0}, + 275: {cur: 0x35, idx: 0x0}, + 276: {cur: 0x37, idx: 0x0}, + 277: {cur: 0x39, idx: 0x0}, + 278: {cur: 0x3a, idx: 0x0}, + 279: {cur: 0x41, idx: 0x0}, + 280: {cur: 0x43, idx: 0x0}, + 281: {cur: 0x44, idx: 0x0}, + 282: {cur: 0x46, idx: 0x0}, + 283: {cur: 0x49, idx: 0x0}, + 284: {cur: 0x4a, idx: 0x0}, + 285: {cur: 0x4d, idx: 0x0}, + 286: {cur: 0x51, idx: 0x0}, + 287: {cur: 0x52, idx: 0x0}, + 288: {cur: 0x57, idx: 0x0}, + 289: {cur: 0x5b, idx: 0x0}, + 290: {cur: 0x5f, idx: 0x0}, + 291: {cur: 0x60, idx: 0x0}, + 292: {cur: 0x64, idx: 0x0}, + 293: {cur: 0x67, idx: 0x0}, + 294: {cur: 0x69, idx: 0x0}, + 295: {cur: 0x6d, idx: 0x0}, + 296: {cur: 0x70, idx: 0x0}, + 297: {cur: 0x71, idx: 0x0}, + 298: {cur: 0x72, idx: 0x0}, + 299: {cur: 0x74, idx: 0x0}, + 300: {cur: 0x76, idx: 0x0}, + 301: {cur: 0x77, idx: 0x0}, + 302: {cur: 0x7b, idx: 0x0}, + 303: {cur: 0x7c, idx: 0x0}, + 304: {cur: 0x80, idx: 0x0}, + 305: {cur: 0x82, idx: 0x0}, + 306: {cur: 0x87, idx: 0x0}, + 307: {cur: 0x88, idx: 0x0}, + 308: {cur: 0x89, idx: 0x0}, + 309: {cur: 0x8c, idx: 0x0}, + 310: {cur: 0x8e, idx: 0x0}, + 311: {cur: 0x8f, idx: 0x0}, + 312: {cur: 0x90, idx: 0x0}, + 313: {cur: 0x91, idx: 0x0}, + 314: {cur: 0x92, idx: 0x0}, + 315: {cur: 0x93, idx: 0x0}, + 316: {cur: 0x95, idx: 0x0}, + 317: {cur: 0x9a, idx: 0x0}, + 318: {cur: 0xa2, idx: 0x0}, + 319: {cur: 0xa7, idx: 0x0}, + 320: {cur: 0xa8, idx: 0x0}, + 321: {cur: 0xad, idx: 0x0}, + 322: {cur: 0xb1, idx: 0x0}, + 323: {cur: 0xb4, idx: 0x0}, + 324: {cur: 0xb8, idx: 0x0}, + 325: {cur: 0xb9, idx: 0x0}, + 326: {cur: 0xbb, idx: 0x0}, + 327: {cur: 0xbd, idx: 0x0}, + 328: {cur: 0xbe, idx: 0x0}, + 329: {cur: 0xbf, idx: 0x0}, + 330: {cur: 0xc6, idx: 0x0}, + 331: {cur: 0xc7, idx: 0x0}, + 332: {cur: 0xc8, idx: 0x0}, + 333: {cur: 0xcb, idx: 0x0}, + 334: {cur: 0xcf, idx: 0x0}, + 335: {cur: 0xd2, idx: 0x0}, + 336: {cur: 0xd3, idx: 0x0}, + 337: {cur: 0xd5, idx: 0x0}, + 338: {cur: 0xda, idx: 0x0}, + 339: {cur: 0xdb, idx: 0x0}, + 340: {cur: 0xdc, idx: 0x0}, + 341: {cur: 0xe1, idx: 0x0}, + 342: {cur: 0xe3, idx: 0x0}, + 343: {cur: 0xe4, idx: 0x0}, + 344: {cur: 0xe7, idx: 0x0}, + 345: {cur: 0xe9, idx: 0x0}, + 346: {cur: 0xef, idx: 0x0}, + 347: {cur: 0xf2, idx: 0x0}, + 348: {cur: 0xf3, idx: 0x0}, + 349: {cur: 0xf4, idx: 0x0}, + 350: {cur: 0xf6, idx: 0x0}, + 351: {cur: 0xff, idx: 0x0}, + 352: {cur: 0x102, idx: 0x0}, + 353: {cur: 0x103, idx: 0x0}, + 354: {cur: 0x10e, idx: 0x0}, + 355: {cur: 0x123, idx: 0x0}, + 356: {cur: 0x125, idx: 0x0}, + 357: {cur: 0xf4, idx: 0xc7}, + 358: {cur: 0x57, idx: 0x3da}, + 359: {cur: 0x88, idx: 0x315}, + 360: {cur: 0x91, idx: 0x2aa}, + 361: {cur: 0xbb, idx: 0x40f}, + 362: {cur: 0xcf, idx: 0x4f}, + 363: {cur: 0xd3, idx: 0x416}, + 364: {cur: 0xf4, idx: 0xc7}, + 365: {cur: 0x125, idx: 0x436}, + 366: {cur: 0x64, idx: 0x0}, + 367: {cur: 0x88, idx: 0x6b}, + 368: {cur: 0xbb, idx: 0x9b}, + 369: {cur: 0x125, idx: 0xeb}, + 370: {cur: 0xf4, idx: 0xc7}, + 371: {cur: 0xf4, idx: 0xc7}, + 372: {cur: 0x2e, idx: 0x462}, + 373: {cur: 0x88, idx: 0x315}, + 374: {cur: 0xd1, idx: 0x465}, + 375: {cur: 0xf4, idx: 0xc7}, + 376: {cur: 0xad, idx: 0x46c}, + 377: {cur: 0xf4, idx: 0xc7}, + 378: {cur: 0xf4, idx: 0xc7}, + 379: {cur: 0xf4, idx: 0xc7}, + 380: {cur: 0xf4, idx: 0xc7}, + 381: {cur: 0xf4, idx: 0xc7}, + 382: {cur: 0xf4, idx: 0xc7}, + 383: {cur: 0xf4, idx: 0xc7}, + 384: {cur: 0xf4, idx: 0xc7}, + 385: {cur: 0x37, idx: 0x24a}, + 386: {cur: 0x57, idx: 0x3da}, + 387: {cur: 0xbd, idx: 0x489}, + 388: {cur: 0xcf, idx: 0x4f}, + 389: {cur: 0xf4, idx: 0xc7}, + 390: {cur: 0x43, idx: 0x491}, + 391: {cur: 0x84, idx: 0x491}, + 392: {cur: 0xf4, idx: 0xc7}, + 393: {cur: 0xf4, idx: 0xc7}, + 394: {cur: 0xf4, idx: 0xc7}, + 395: {cur: 0xf4, idx: 0xc7}, + 396: {cur: 0xcf, idx: 0x4f}, + 397: {cur: 0xf4, idx: 0xc7}, + 398: {cur: 0x25, idx: 0x243}, + 399: {cur: 0x32, idx: 0x247}, + 400: {cur: 0x39, idx: 0x12b}, + 401: {cur: 0x3a, idx: 0x9b}, + 402: {cur: 0x52, idx: 0x256}, + 403: {cur: 0x57, idx: 0x499}, + 404: {cur: 0x71, idx: 0x4b}, + 405: {cur: 0x74, idx: 0x49c}, + 406: {cur: 0x82, idx: 0x267}, + 407: {cur: 0xf3, idx: 0x20d}, + 408: {cur: 0xf4, idx: 0xc7}, + 409: {cur: 0xf4, idx: 0xc7}, + 410: {cur: 0xf4, idx: 0xc7}, + 411: {cur: 0x1b, idx: 0x0}, + 412: {cur: 0x37, idx: 0x24a}, + 413: {cur: 0x7b, idx: 0x0}, + 414: {cur: 0x7c, idx: 0x0}, + 415: {cur: 0x87, idx: 0x0}, + 416: {cur: 0x90, idx: 0x0}, + 417: {cur: 0xa8, idx: 0x0}, + 418: {cur: 0xc8, idx: 0x4a6}, + 419: {cur: 0xcb, idx: 0x33d}, + 420: {cur: 0xd1, idx: 0x4a9}, + 421: {cur: 0x103, idx: 0x0}, + 422: {cur: 0xf4, idx: 0xc7}, + 423: {cur: 0xf4, idx: 0xc7}, + 424: {cur: 0xf4, idx: 0xc7}, + 425: {cur: 0xda, idx: 0x4b7}, + 426: {cur: 0xf4, idx: 0xc7}, + 427: {cur: 0xf4, idx: 0xc7}, + 428: {cur: 0xf4, idx: 0xc7}, + 429: {cur: 0x1a, idx: 0x23e}, + 430: {cur: 0x32, idx: 0x247}, + 431: {cur: 0xcf, idx: 0x4f}, + 432: {cur: 0xf4, idx: 0xc7}, + 433: {cur: 0xbe, idx: 0x4d1}, + 434: {cur: 0xf4, idx: 0xc7}, + 435: {cur: 0xf4, idx: 0xc7}, + 436: {cur: 0xf4, idx: 0xc7}, + 437: {cur: 0xcf, idx: 0x4f}, + 438: {cur: 0xf4, idx: 0xc7}, + 439: {cur: 0xf4, idx: 0xc7}, + 440: {cur: 0x64, idx: 0x4ec}, + 441: {cur: 0xcf, idx: 0x4f}, + 442: {cur: 0xf4, idx: 0xc7}, + 443: {cur: 0x37, idx: 0x24a}, + 444: {cur: 0x92, idx: 0x503}, + 445: {cur: 0xf4, idx: 0xc7}, + 446: {cur: 0xf4, idx: 0xc7}, + 447: {cur: 0xf4, idx: 0xc7}, + 448: {cur: 0x64, idx: 0x4ec}, + 449: {cur: 0xf4, idx: 0xc7}, + 450: {cur: 0x37, idx: 0x529}, + 451: {cur: 0x64, idx: 0x4ec}, + 452: {cur: 0xf4, idx: 0xc7}, + 453: {cur: 0x5b, idx: 0x0}, + 454: {cur: 0xcf, idx: 0x4f}, + 455: {cur: 0xf4, idx: 0xc7}, + 456: {cur: 0xf4, idx: 0xc7}, + 457: {cur: 0xf4, idx: 0xc7}, + 458: {cur: 0xf4, idx: 0xc7}, + 459: {cur: 0xf4, idx: 0xc7}, + 460: {cur: 0xcf, idx: 0x4f}, + 461: {cur: 0xf4, idx: 0xc7}, + 462: {cur: 0xf4, idx: 0xc7}, + 463: {cur: 0xf4, idx: 0xc7}, + 464: {cur: 0xf4, idx: 0xc7}, + 465: {cur: 0xcf, idx: 0x4f}, + 466: {cur: 0xf4, idx: 0xc7}, + 467: {cur: 0xcf, idx: 0x4f}, + 468: {cur: 0x37, idx: 0x56d}, + 469: {cur: 0x51, idx: 0x33a}, + 470: {cur: 0x74, idx: 0x49c}, + 471: {cur: 0x80, idx: 0x33a}, + 472: {cur: 0xbd, idx: 0x33a}, + 473: {cur: 0xc8, idx: 0x570}, + 474: {cur: 0xda, idx: 0x33a}, + 475: {cur: 0xf4, idx: 0xc7}, +} // Size: 1928 bytes -// Total table size 18192 bytes (17KiB); checksum: 61A71530 +// Total table size 18540 bytes (18KiB); checksum: 4D90180A diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap.go b/vendor/golang.org/x/text/encoding/charmap/charmap.go index 6e62a83747..e89ff0734f 100644 --- a/vendor/golang.org/x/text/encoding/charmap/charmap.go +++ b/vendor/golang.org/x/text/encoding/charmap/charmap.go @@ -33,32 +33,32 @@ var ( ISO8859_8I encoding.Encoding = &iso8859_8I iso8859_6E = internal.Encoding{ - ISO8859_6, - "ISO-8859-6E", - identifier.ISO88596E, + Encoding: ISO8859_6, + Name: "ISO-8859-6E", + MIB: identifier.ISO88596E, } iso8859_6I = internal.Encoding{ - ISO8859_6, - "ISO-8859-6I", - identifier.ISO88596I, + Encoding: ISO8859_6, + Name: "ISO-8859-6I", + MIB: identifier.ISO88596I, } iso8859_8E = internal.Encoding{ - ISO8859_8, - "ISO-8859-8E", - identifier.ISO88598E, + Encoding: ISO8859_8, + Name: "ISO-8859-8E", + MIB: identifier.ISO88598E, } iso8859_8I = internal.Encoding{ - ISO8859_8, - "ISO-8859-8I", - identifier.ISO88598I, + Encoding: ISO8859_8, + Name: "ISO-8859-8I", + MIB: identifier.ISO88598I, } ) // All is a list of all defined encodings in this package. -var All = listAll +var All []encoding.Encoding = listAll // TODO: implement these encodings, in order of importance. // ASCII, ISO8859_1: Rather common. Close to Windows 1252. @@ -70,8 +70,8 @@ type utf8Enc struct { data [3]byte } -// charmap describes an 8-bit character set encoding. -type charmap struct { +// Charmap is an 8-bit character set encoding. +type Charmap struct { // name is the encoding's name. name string // mib is the encoding type of this encoder. @@ -79,7 +79,7 @@ type charmap struct { // asciiSuperset states whether the encoding is a superset of ASCII. asciiSuperset bool // low is the lower bound of the encoded byte for a non-ASCII rune. If - // charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00. + // Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00. low uint8 // replacement is the encoded replacement character. replacement byte @@ -91,26 +91,30 @@ type charmap struct { encode [256]uint32 } -func (m *charmap) NewDecoder() *encoding.Decoder { +// NewDecoder implements the encoding.Encoding interface. +func (m *Charmap) NewDecoder() *encoding.Decoder { return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}} } -func (m *charmap) NewEncoder() *encoding.Encoder { +// NewEncoder implements the encoding.Encoding interface. +func (m *Charmap) NewEncoder() *encoding.Encoder { return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}} } -func (m *charmap) String() string { +// String returns the Charmap's name. +func (m *Charmap) String() string { return m.name } -func (m *charmap) ID() (mib identifier.MIB, other string) { +// ID implements an internal interface. +func (m *Charmap) ID() (mib identifier.MIB, other string) { return m.mib, "" } // charmapDecoder implements transform.Transformer by decoding to UTF-8. type charmapDecoder struct { transform.NopResetter - charmap *charmap + charmap *Charmap } func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { @@ -142,10 +146,22 @@ func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, return nDst, nSrc, err } +// DecodeByte returns the Charmap's rune decoding of the byte b. +func (m *Charmap) DecodeByte(b byte) rune { + switch x := &m.decode[b]; x.len { + case 1: + return rune(x.data[0]) + case 2: + return rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f) + default: + return rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f) + } +} + // charmapEncoder implements transform.Transformer by encoding from UTF-8. type charmapEncoder struct { transform.NopResetter - charmap *charmap + charmap *Charmap } func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { @@ -207,3 +223,27 @@ loop: } return nDst, nSrc, err } + +// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether +// r is in the Charmap's repertoire. If not, b is set to the Charmap's +// replacement byte. This is often the ASCII substitute character '\x1a'. +func (m *Charmap) EncodeRune(r rune) (b byte, ok bool) { + if r < utf8.RuneSelf && m.asciiSuperset { + return byte(r), true + } + for low, high := int(m.low), 0x100; ; { + if low >= high { + return m.replacement, false + } + mid := (low + high) / 2 + got := m.encode[mid] + gotRune := rune(got & (1<<24 - 1)) + if gotRune < r { + low = mid + 1 + } else if gotRune > r { + high = mid + } else { + return byte(got >> 24), true + } + } +} diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap_test.go b/vendor/golang.org/x/text/encoding/charmap/charmap_test.go index aa54fe227e..03dd76ebd2 100644 --- a/vendor/golang.org/x/text/encoding/charmap/charmap_test.go +++ b/vendor/golang.org/x/text/encoding/charmap/charmap_test.go @@ -9,16 +9,22 @@ import ( "golang.org/x/text/encoding" "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) func dec(e encoding.Encoding) (dir string, t transform.Transformer, err error) { return "Decode", e.NewDecoder(), nil } -func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { + +func encASCIISuperset(e encoding.Encoding) (dir string, t transform.Transformer, err error) { return "Encode", e.NewEncoder(), internal.ErrASCIIReplacement } +func encEBCDIC(e encoding.Encoding) (dir string, t transform.Transformer, err error) { + return "Encode", e.NewEncoder(), internal.RepertoireError(0x3f) +} + func TestNonRepertoire(t *testing.T) { testCases := []struct { init func(e encoding.Encoding) (string, transform.Transformer, error) @@ -27,9 +33,17 @@ func TestNonRepertoire(t *testing.T) { }{ {dec, Windows1252, "\x81", "\ufffd"}, - {enc, Windows1252, "갂", ""}, - {enc, Windows1252, "a갂", "a"}, - {enc, Windows1252, "\u00E9갂", "\xE9"}, + {encEBCDIC, CodePage037, "갂", ""}, + + {encEBCDIC, CodePage1047, "갂", ""}, + {encEBCDIC, CodePage1047, "a¤갂", "\x81\x9F"}, + + {encEBCDIC, CodePage1140, "갂", ""}, + {encEBCDIC, CodePage1140, "a€갂", "\x81\x9F"}, + + {encASCIISuperset, Windows1252, "갂", ""}, + {encASCIISuperset, Windows1252, "a갂", "a"}, + {encASCIISuperset, Windows1252, "\u00E9갂", "\xE9"}, } for _, tc := range testCases { dir, tr, wantErr := tc.init(tc.e) @@ -43,3 +57,202 @@ func TestNonRepertoire(t *testing.T) { } } } + +func TestBasics(t *testing.T) { + testCases := []struct { + e encoding.Encoding + encoded string + utf8 string + }{{ + e: CodePage037, + encoded: "\xc8\x51\xba\x93\xcf", + utf8: "Hé[lõ", + }, { + e: CodePage437, + encoded: "H\x82ll\x93 \x9d\xa7\xf4\x9c\xbe", + utf8: "Héllô ¥º⌠£╛", + }, { + e: CodePage866, + encoded: "H\xf3\xd3o \x98\xfd\x9f\xdd\xa1", + utf8: "Hє╙o Ш¤Я▌б", + }, { + e: CodePage1047, + encoded: "\xc8\x54\x93\x93\x9f", + utf8: "Hèll¤", + }, { + e: CodePage1140, + encoded: "\xc8\x9f\x93\x93\xcf", + utf8: "H€llõ", + }, { + e: ISO8859_2, + encoded: "Hel\xe5\xf5", + utf8: "Helĺő", + }, { + e: ISO8859_3, + encoded: "He\xbd\xd4", + utf8: "He½Ô", + }, { + e: ISO8859_4, + encoded: "Hel\xb6\xf8", + utf8: "Helļø", + }, { + e: ISO8859_5, + encoded: "H\xd7\xc6o", + utf8: "HзЦo", + }, { + e: ISO8859_6, + encoded: "Hel\xc2\xc9", + utf8: "Helآة", + }, { + e: ISO8859_7, + encoded: "H\xeel\xebo", + utf8: "Hξlλo", + }, { + e: ISO8859_8, + encoded: "Hel\xf5\xed", + utf8: "Helץם", + }, { + e: ISO8859_9, + encoded: "\xdeayet", + utf8: "Şayet", + }, { + e: ISO8859_10, + encoded: "H\xea\xbfo", + utf8: "Hęŋo", + }, { + e: ISO8859_13, + encoded: "H\xe6l\xf9o", + utf8: "Hęlło", + }, { + e: ISO8859_14, + encoded: "He\xfe\xd0o", + utf8: "HeŷŴo", + }, { + e: ISO8859_15, + encoded: "H\xa4ll\xd8", + utf8: "H€llØ", + }, { + e: ISO8859_16, + encoded: "H\xe6ll\xbd", + utf8: "Hællœ", + }, { + e: KOI8R, + encoded: "He\x93\xad\x9c", + utf8: "He⌠╜°", + }, { + e: KOI8U, + encoded: "He\x93\xad\x9c", + utf8: "He⌠ґ°", + }, { + e: Macintosh, + encoded: "He\xdf\xd7", + utf8: "Hefl◊", + }, { + e: MacintoshCyrillic, + encoded: "He\xbe\x94", + utf8: "HeЊФ", + }, { + e: Windows874, + encoded: "He\xb7\xf0", + utf8: "Heท๐", + }, { + e: Windows1250, + encoded: "He\xe5\xe5o", + utf8: "Heĺĺo", + }, { + e: Windows1251, + encoded: "H\xball\xfe", + utf8: "Hєllю", + }, { + e: Windows1252, + encoded: "H\xe9ll\xf4 \xa5\xbA\xae\xa3\xd0", + utf8: "Héllô ¥º®£Ð", + }, { + e: Windows1253, + encoded: "H\xe5ll\xd6", + utf8: "HεllΦ", + }, { + e: Windows1254, + encoded: "\xd0ello", + utf8: "Ğello", + }, { + e: Windows1255, + encoded: "He\xd4o", + utf8: "Heװo", + }, { + e: Windows1256, + encoded: "H\xdbllo", + utf8: "Hغllo", + }, { + e: Windows1257, + encoded: "He\xeflo", + utf8: "Heļlo", + }, { + e: Windows1258, + encoded: "Hell\xf5", + utf8: "Hellơ", + }, { + e: XUserDefined, + encoded: "\x00\x40\x7f\x80\xab\xff", + utf8: "\u0000\u0040\u007f\uf780\uf7ab\uf7ff", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, "", "") + } +} + +var windows1255TestCases = []struct { + b byte + ok bool + r rune +}{ + {'\x00', true, '\u0000'}, + {'\x1a', true, '\u001a'}, + {'\x61', true, '\u0061'}, + {'\x7f', true, '\u007f'}, + {'\x80', true, '\u20ac'}, + {'\x95', true, '\u2022'}, + {'\xa0', true, '\u00a0'}, + {'\xc0', true, '\u05b0'}, + {'\xfc', true, '\ufffd'}, + {'\xfd', true, '\u200e'}, + {'\xfe', true, '\u200f'}, + {'\xff', true, '\ufffd'}, + {encoding.ASCIISub, false, '\u0400'}, + {encoding.ASCIISub, false, '\u2603'}, + {encoding.ASCIISub, false, '\U0001f4a9'}, +} + +func TestDecodeByte(t *testing.T) { + for _, tc := range windows1255TestCases { + if !tc.ok { + continue + } + + got := Windows1255.DecodeByte(tc.b) + want := tc.r + if got != want { + t.Errorf("DecodeByte(%#02x): got %#08x, want %#08x", tc.b, got, want) + } + } +} + +func TestEncodeRune(t *testing.T) { + for _, tc := range windows1255TestCases { + // There can be multiple tc.b values that map to tc.r = '\ufffd'. + if tc.r == '\ufffd' { + continue + } + + gotB, gotOK := Windows1255.EncodeRune(tc.r) + wantB, wantOK := tc.b, tc.ok + if gotB != wantB || gotOK != wantOK { + t.Errorf("EncodeRune(%#08x): got (%#02x, %t), want (%#02x, %t)", tc.r, gotB, gotOK, wantB, wantOK) + } + } +} + +func TestFiles(t *testing.T) { enctest.TestFile(t, Windows1252) } + +func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, Windows1252) } diff --git a/vendor/golang.org/x/text/encoding/charmap/maketables.go b/vendor/golang.org/x/text/encoding/charmap/maketables.go index 099108121c..f7941701e8 100644 --- a/vendor/golang.org/x/text/encoding/charmap/maketables.go +++ b/vendor/golang.org/x/text/encoding/charmap/maketables.go @@ -33,6 +33,14 @@ var encodings = []struct { replacement byte mapping string }{ + { + "IBM Code Page 037", + "IBM037", + "", + "CodePage037", + 0x3f, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM037-2.1.2.ucm", + }, { "IBM Code Page 437", "PC8CodePage437", @@ -73,6 +81,14 @@ var encodings = []struct { encoding.ASCIISub, "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-858-2000.ucm", }, + { + "IBM Code Page 860", + "IBM860", + "", + "CodePage860", + encoding.ASCIISub, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM860-2.1.2.ucm", + }, { "IBM Code Page 862", "PC862LatinHebrew", @@ -81,6 +97,22 @@ var encodings = []struct { encoding.ASCIISub, "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM862-2.1.2.ucm", }, + { + "IBM Code Page 863", + "IBM863", + "", + "CodePage863", + encoding.ASCIISub, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM863-2.1.2.ucm", + }, + { + "IBM Code Page 865", + "IBM865", + "", + "CodePage865", + encoding.ASCIISub, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM865-2.1.2.ucm", + }, { "IBM Code Page 866", "IBM866", @@ -89,6 +121,22 @@ var encodings = []struct { encoding.ASCIISub, "http://encoding.spec.whatwg.org/index-ibm866.txt", }, + { + "IBM Code Page 1047", + "IBM1047", + "", + "CodePage1047", + 0x3f, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM1047-2.1.2.ucm", + }, + { + "IBM Code Page 1140", + "IBM01140", + "", + "CodePage1140", + 0x3f, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/ibm-1140_P100-1997.ucm", + }, { "ISO 8859-1", "ISOLatin1", @@ -153,6 +201,14 @@ var encodings = []struct { encoding.ASCIISub, "http://encoding.spec.whatwg.org/index-iso-8859-8.txt", }, + { + "ISO 8859-9", + "ISOLatin5", + "", + "ISO8859_9", + encoding.ASCIISub, + "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/iso-8859_9-1999.ucm", + }, { "ISO 8859-10", "ISOLatin6", @@ -438,7 +494,7 @@ func main() { if e.comment != "" { printf("//\n// %s\n", e.comment) } - printf("var %s encoding.Encoding = &%s\n\nvar %s = charmap{\nname: %q,\n", + printf("var %s *Charmap = &%s\n\nvar %s = Charmap{\nname: %q,\n", varName, lowerVarName, lowerVarName, e.name) if mibs[e.mib] { log.Fatalf("MIB type %q declared multiple times.", e.mib) @@ -484,7 +540,7 @@ func main() { } printf("},\n}\n") - // Add an estimate of the size of a single charmap{} struct value, which + // Add an estimate of the size of a single Charmap{} struct value, which // includes two 256 elem arrays of 4 bytes and some extra fields, which // align to 3 uint64s on 64-bit architectures. w.Size += 2*4*256 + 3*8 diff --git a/vendor/golang.org/x/text/encoding/charmap/tables.go b/vendor/golang.org/x/text/encoding/charmap/tables.go index 2bcef84d36..cf7281e9e3 100644 --- a/vendor/golang.org/x/text/encoding/charmap/tables.go +++ b/vendor/golang.org/x/text/encoding/charmap/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package charmap @@ -7,10 +7,185 @@ import ( "golang.org/x/text/encoding/internal/identifier" ) +// CodePage037 is the IBM Code Page 037 encoding. +var CodePage037 *Charmap = &codePage037 + +var codePage037 = Charmap{ + name: "IBM Code Page 037", + mib: identifier.IBM037, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, + 0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, + 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, + 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, + 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, + 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, + 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, + 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, + 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, + 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, + 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, + 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, + }, +} + // CodePage437 is the IBM Code Page 437 encoding. -var CodePage437 encoding.Encoding = &codePage437 +var CodePage437 *Charmap = &codePage437 -var codePage437 = charmap{ +var codePage437 = Charmap{ name: "IBM Code Page 437", mib: identifier.PC8CodePage437, asciiSuperset: true, @@ -183,9 +358,9 @@ var codePage437 = charmap{ } // CodePage850 is the IBM Code Page 850 encoding. -var CodePage850 encoding.Encoding = &codePage850 +var CodePage850 *Charmap = &codePage850 -var codePage850 = charmap{ +var codePage850 = Charmap{ name: "IBM Code Page 850", mib: identifier.PC850Multilingual, asciiSuperset: true, @@ -358,9 +533,9 @@ var codePage850 = charmap{ } // CodePage852 is the IBM Code Page 852 encoding. -var CodePage852 encoding.Encoding = &codePage852 +var CodePage852 *Charmap = &codePage852 -var codePage852 = charmap{ +var codePage852 = Charmap{ name: "IBM Code Page 852", mib: identifier.PCp852, asciiSuperset: true, @@ -533,9 +708,9 @@ var codePage852 = charmap{ } // CodePage855 is the IBM Code Page 855 encoding. -var CodePage855 encoding.Encoding = &codePage855 +var CodePage855 *Charmap = &codePage855 -var codePage855 = charmap{ +var codePage855 = Charmap{ name: "IBM Code Page 855", mib: identifier.IBM855, asciiSuperset: true, @@ -708,9 +883,9 @@ var codePage855 = charmap{ } // CodePage858 is the Windows Code Page 858 encoding. -var CodePage858 encoding.Encoding = &codePage858 +var CodePage858 *Charmap = &codePage858 -var codePage858 = charmap{ +var codePage858 = Charmap{ name: "Windows Code Page 858", mib: identifier.IBM00858, asciiSuperset: true, @@ -882,10 +1057,185 @@ var codePage858 = charmap{ }, } +// CodePage860 is the IBM Code Page 860 encoding. +var CodePage860 *Charmap = &codePage860 + +var codePage860 = Charmap{ + name: "IBM Code Page 860", + mib: identifier.IBM860, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x8a, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, + 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, + 0xa80000bf, 0x910000c0, 0x860000c1, 0x8f0000c2, 0x8e0000c3, 0x800000c7, 0x920000c8, 0x900000c9, + 0x890000ca, 0x980000cc, 0x8b0000cd, 0xa50000d1, 0xa90000d2, 0x9f0000d3, 0x8c0000d4, 0x990000d5, + 0x9d0000d9, 0x960000da, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e3, + 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x8d0000ec, 0xa10000ed, 0xa40000f1, 0x950000f2, + 0xa20000f3, 0x930000f4, 0x940000f5, 0xf60000f7, 0x970000f9, 0xa30000fa, 0x810000fc, 0xe2000393, + 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, + 0xe50003c3, 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, + 0xef002229, 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + // CodePage862 is the IBM Code Page 862 encoding. -var CodePage862 encoding.Encoding = &codePage862 +var CodePage862 *Charmap = &codePage862 -var codePage862 = charmap{ +var codePage862 = Charmap{ name: "IBM Code Page 862", mib: identifier.PC862LatinHebrew, asciiSuperset: true, @@ -1057,12 +1407,12 @@ var codePage862 = charmap{ }, } -// CodePage866 is the IBM Code Page 866 encoding. -var CodePage866 encoding.Encoding = &codePage866 +// CodePage863 is the IBM Code Page 863 encoding. +var CodePage863 *Charmap = &codePage863 -var codePage866 = charmap{ - name: "IBM Code Page 866", - mib: identifier.IBM866, +var codePage863 = Charmap{ + name: "IBM Code Page 863", + mib: identifier.IBM863, asciiSuperset: true, low: 0x80, replacement: 0x1a, @@ -1131,30 +1481,30 @@ var codePage866 = charmap{ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, - {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, - {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, - {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, - {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, - {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, - {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, - {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, - {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, - {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, - {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x97}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, @@ -1179,63 +1529,763 @@ var codePage866 = charmap{ {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, - {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xd1, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, - {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0x9b0000a2, 0x9c0000a3, 0x980000a4, 0xa00000a6, 0x8f0000a7, 0xa40000a8, 0xae0000ab, + 0xaa0000ac, 0xa70000af, 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xa60000b3, 0xa10000b4, 0xe60000b5, + 0x860000b6, 0xfa0000b7, 0xa50000b8, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xad0000be, 0x8e0000c0, + 0x840000c2, 0x800000c7, 0x910000c8, 0x900000c9, 0x920000ca, 0x940000cb, 0xa80000ce, 0x950000cf, + 0x990000d4, 0x9d0000d9, 0x9e0000db, 0x9a0000dc, 0xe10000df, 0x850000e0, 0x830000e2, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8c0000ee, 0x8b0000ef, 0xa20000f3, 0x930000f4, + 0xf60000f7, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0x8d002017, 0xfc00207f, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage865 is the IBM Code Page 865 encoding. +var CodePage865 *Charmap = &codePage865 + +var codePage865 = Charmap{ + name: "IBM Code Page 865", + mib: identifier.IBM865, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9c0000a3, 0xaf0000a4, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, + 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xac0000bc, 0xab0000bd, 0xa80000bf, + 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, 0x990000d6, 0x9d0000d8, + 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, 0x910000e6, + 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, + 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0x9b0000f8, + 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage866 is the IBM Code Page 866 encoding. +var CodePage866 *Charmap = &codePage866 + +var codePage866 = Charmap{ + name: "IBM Code Page 866", + mib: identifier.IBM866, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, }, encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xfd0000a4, 0xf80000b0, 0xfa0000b7, 0xf0000401, 0xf2000404, 0xf4000407, 0xf600040e, - 0x80000410, 0x81000411, 0x82000412, 0x83000413, 0x84000414, 0x85000415, 0x86000416, 0x87000417, - 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, - 0x90000420, 0x91000421, 0x92000422, 0x93000423, 0x94000424, 0x95000425, 0x96000426, 0x97000427, - 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, - 0xa0000430, 0xa1000431, 0xa2000432, 0xa3000433, 0xa4000434, 0xa5000435, 0xa6000436, 0xa7000437, - 0xa8000438, 0xa9000439, 0xaa00043a, 0xab00043b, 0xac00043c, 0xad00043d, 0xae00043e, 0xaf00043f, - 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, 0xe7000447, - 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, 0xef00044f, - 0xf1000451, 0xf3000454, 0xf5000457, 0xf700045e, 0xfc002116, 0xf9002219, 0xfb00221a, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xfd0000a4, 0xf80000b0, 0xfa0000b7, 0xf0000401, 0xf2000404, 0xf4000407, 0xf600040e, + 0x80000410, 0x81000411, 0x82000412, 0x83000413, 0x84000414, 0x85000415, 0x86000416, 0x87000417, + 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, + 0x90000420, 0x91000421, 0x92000422, 0x93000423, 0x94000424, 0x95000425, 0x96000426, 0x97000427, + 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, + 0xa0000430, 0xa1000431, 0xa2000432, 0xa3000433, 0xa4000434, 0xa5000435, 0xa6000436, 0xa7000437, + 0xa8000438, 0xa9000439, 0xaa00043a, 0xab00043b, 0xac00043c, 0xad00043d, 0xae00043e, 0xaf00043f, + 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, 0xe7000447, + 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, 0xef00044f, + 0xf1000451, 0xf3000454, 0xf5000457, 0xf700045e, 0xfc002116, 0xf9002219, 0xfb00221a, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage1047 is the IBM Code Page 1047 encoding. +var CodePage1047 *Charmap = &codePage1047 + +var codePage1047 = Charmap{ + name: "IBM Code Page 1047", + mib: identifier.IBM1047, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {1, [3]byte{0x5e, 0x00, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xad00005b, 0xe000005c, 0xbd00005d, 0x5f00005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, + 0xbb0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0xb00000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, + 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, + 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, + 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, + 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, + 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, + 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xba0000dd, 0xae0000de, 0x590000df, + 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, + 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, + 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, + 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, + }, +} + +// CodePage1140 is the IBM Code Page 1140 encoding. +var CodePage1140 *Charmap = &codePage1140 + +var codePage1140 = Charmap{ + name: "IBM Code Page 1140", + mib: identifier.IBM01140, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0xb20000a5, 0x6a0000a6, 0xb50000a7, 0xbd0000a8, + 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, 0x900000b0, + 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, 0x9d0000b8, + 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, 0x640000c0, + 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, 0x740000c8, + 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, 0xac0000d0, + 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, 0x800000d8, + 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, 0x440000e0, + 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, 0x540000e8, + 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, 0x8c0000f0, + 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, 0x700000f8, + 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, 0x9f0020ac, }, } // ISO8859_1 is the ISO 8859-1 encoding. -var ISO8859_1 encoding.Encoding = &iso8859_1 +var ISO8859_1 *Charmap = &iso8859_1 -var iso8859_1 = charmap{ +var iso8859_1 = Charmap{ name: "ISO 8859-1", mib: identifier.ISOLatin1, asciiSuperset: true, @@ -1408,9 +2458,9 @@ var iso8859_1 = charmap{ } // ISO8859_2 is the ISO 8859-2 encoding. -var ISO8859_2 encoding.Encoding = &iso8859_2 +var ISO8859_2 *Charmap = &iso8859_2 -var iso8859_2 = charmap{ +var iso8859_2 = Charmap{ name: "ISO 8859-2", mib: identifier.ISOLatin2, asciiSuperset: true, @@ -1583,9 +2633,9 @@ var iso8859_2 = charmap{ } // ISO8859_3 is the ISO 8859-3 encoding. -var ISO8859_3 encoding.Encoding = &iso8859_3 +var ISO8859_3 *Charmap = &iso8859_3 -var iso8859_3 = charmap{ +var iso8859_3 = Charmap{ name: "ISO 8859-3", mib: identifier.ISOLatin3, asciiSuperset: true, @@ -1758,9 +2808,9 @@ var iso8859_3 = charmap{ } // ISO8859_4 is the ISO 8859-4 encoding. -var ISO8859_4 encoding.Encoding = &iso8859_4 +var ISO8859_4 *Charmap = &iso8859_4 -var iso8859_4 = charmap{ +var iso8859_4 = Charmap{ name: "ISO 8859-4", mib: identifier.ISOLatin4, asciiSuperset: true, @@ -1933,9 +2983,9 @@ var iso8859_4 = charmap{ } // ISO8859_5 is the ISO 8859-5 encoding. -var ISO8859_5 encoding.Encoding = &iso8859_5 +var ISO8859_5 *Charmap = &iso8859_5 -var iso8859_5 = charmap{ +var iso8859_5 = Charmap{ name: "ISO 8859-5", mib: identifier.ISOLatinCyrillic, asciiSuperset: true, @@ -2108,9 +3158,9 @@ var iso8859_5 = charmap{ } // ISO8859_6 is the ISO 8859-6 encoding. -var ISO8859_6 encoding.Encoding = &iso8859_6 +var ISO8859_6 *Charmap = &iso8859_6 -var iso8859_6 = charmap{ +var iso8859_6 = Charmap{ name: "ISO 8859-6", mib: identifier.ISOLatinArabic, asciiSuperset: true, @@ -2283,9 +3333,9 @@ var iso8859_6 = charmap{ } // ISO8859_7 is the ISO 8859-7 encoding. -var ISO8859_7 encoding.Encoding = &iso8859_7 +var ISO8859_7 *Charmap = &iso8859_7 -var iso8859_7 = charmap{ +var iso8859_7 = Charmap{ name: "ISO 8859-7", mib: identifier.ISOLatinGreek, asciiSuperset: true, @@ -2458,9 +3508,9 @@ var iso8859_7 = charmap{ } // ISO8859_8 is the ISO 8859-8 encoding. -var ISO8859_8 encoding.Encoding = &iso8859_8 +var ISO8859_8 *Charmap = &iso8859_8 -var iso8859_8 = charmap{ +var iso8859_8 = Charmap{ name: "ISO 8859-8", mib: identifier.ISOLatinHebrew, asciiSuperset: true, @@ -2632,10 +3682,185 @@ var iso8859_8 = charmap{ }, } +// ISO8859_9 is the ISO 8859-9 encoding. +var ISO8859_9 *Charmap = &iso8859_9 + +var iso8859_9 = Charmap{ + name: "ISO 8859-9", + mib: identifier.ISOLatin5, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, + 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, + 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, + 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, + 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, + 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, + 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0xde00015e, 0xfe00015f, + }, +} + // ISO8859_10 is the ISO 8859-10 encoding. -var ISO8859_10 encoding.Encoding = &iso8859_10 +var ISO8859_10 *Charmap = &iso8859_10 -var iso8859_10 = charmap{ +var iso8859_10 = Charmap{ name: "ISO 8859-10", mib: identifier.ISOLatin6, asciiSuperset: true, @@ -2808,9 +4033,9 @@ var iso8859_10 = charmap{ } // ISO8859_13 is the ISO 8859-13 encoding. -var ISO8859_13 encoding.Encoding = &iso8859_13 +var ISO8859_13 *Charmap = &iso8859_13 -var iso8859_13 = charmap{ +var iso8859_13 = Charmap{ name: "ISO 8859-13", mib: identifier.ISO885913, asciiSuperset: true, @@ -2983,9 +4208,9 @@ var iso8859_13 = charmap{ } // ISO8859_14 is the ISO 8859-14 encoding. -var ISO8859_14 encoding.Encoding = &iso8859_14 +var ISO8859_14 *Charmap = &iso8859_14 -var iso8859_14 = charmap{ +var iso8859_14 = Charmap{ name: "ISO 8859-14", mib: identifier.ISO885914, asciiSuperset: true, @@ -3158,9 +4383,9 @@ var iso8859_14 = charmap{ } // ISO8859_15 is the ISO 8859-15 encoding. -var ISO8859_15 encoding.Encoding = &iso8859_15 +var ISO8859_15 *Charmap = &iso8859_15 -var iso8859_15 = charmap{ +var iso8859_15 = Charmap{ name: "ISO 8859-15", mib: identifier.ISO885915, asciiSuperset: true, @@ -3333,9 +4558,9 @@ var iso8859_15 = charmap{ } // ISO8859_16 is the ISO 8859-16 encoding. -var ISO8859_16 encoding.Encoding = &iso8859_16 +var ISO8859_16 *Charmap = &iso8859_16 -var iso8859_16 = charmap{ +var iso8859_16 = Charmap{ name: "ISO 8859-16", mib: identifier.ISO885916, asciiSuperset: true, @@ -3508,9 +4733,9 @@ var iso8859_16 = charmap{ } // KOI8R is the KOI8-R encoding. -var KOI8R encoding.Encoding = &koi8R +var KOI8R *Charmap = &koi8R -var koi8R = charmap{ +var koi8R = Charmap{ name: "KOI8-R", mib: identifier.KOI8R, asciiSuperset: true, @@ -3683,9 +4908,9 @@ var koi8R = charmap{ } // KOI8U is the KOI8-U encoding. -var KOI8U encoding.Encoding = &koi8U +var KOI8U *Charmap = &koi8U -var koi8U = charmap{ +var koi8U = Charmap{ name: "KOI8-U", mib: identifier.KOI8U, asciiSuperset: true, @@ -3858,9 +5083,9 @@ var koi8U = charmap{ } // Macintosh is the Macintosh encoding. -var Macintosh encoding.Encoding = &macintosh +var Macintosh *Charmap = &macintosh -var macintosh = charmap{ +var macintosh = Charmap{ name: "Macintosh", mib: identifier.Macintosh, asciiSuperset: true, @@ -4033,9 +5258,9 @@ var macintosh = charmap{ } // MacintoshCyrillic is the Macintosh Cyrillic encoding. -var MacintoshCyrillic encoding.Encoding = &macintoshCyrillic +var MacintoshCyrillic *Charmap = &macintoshCyrillic -var macintoshCyrillic = charmap{ +var macintoshCyrillic = Charmap{ name: "Macintosh Cyrillic", mib: identifier.MacintoshCyrillic, asciiSuperset: true, @@ -4208,9 +5433,9 @@ var macintoshCyrillic = charmap{ } // Windows874 is the Windows 874 encoding. -var Windows874 encoding.Encoding = &windows874 +var Windows874 *Charmap = &windows874 -var windows874 = charmap{ +var windows874 = Charmap{ name: "Windows 874", mib: identifier.Windows874, asciiSuperset: true, @@ -4383,9 +5608,9 @@ var windows874 = charmap{ } // Windows1250 is the Windows 1250 encoding. -var Windows1250 encoding.Encoding = &windows1250 +var Windows1250 *Charmap = &windows1250 -var windows1250 = charmap{ +var windows1250 = Charmap{ name: "Windows 1250", mib: identifier.Windows1250, asciiSuperset: true, @@ -4558,9 +5783,9 @@ var windows1250 = charmap{ } // Windows1251 is the Windows 1251 encoding. -var Windows1251 encoding.Encoding = &windows1251 +var Windows1251 *Charmap = &windows1251 -var windows1251 = charmap{ +var windows1251 = Charmap{ name: "Windows 1251", mib: identifier.Windows1251, asciiSuperset: true, @@ -4733,9 +5958,9 @@ var windows1251 = charmap{ } // Windows1252 is the Windows 1252 encoding. -var Windows1252 encoding.Encoding = &windows1252 +var Windows1252 *Charmap = &windows1252 -var windows1252 = charmap{ +var windows1252 = Charmap{ name: "Windows 1252", mib: identifier.Windows1252, asciiSuperset: true, @@ -4908,9 +6133,9 @@ var windows1252 = charmap{ } // Windows1253 is the Windows 1253 encoding. -var Windows1253 encoding.Encoding = &windows1253 +var Windows1253 *Charmap = &windows1253 -var windows1253 = charmap{ +var windows1253 = Charmap{ name: "Windows 1253", mib: identifier.Windows1253, asciiSuperset: true, @@ -5083,9 +6308,9 @@ var windows1253 = charmap{ } // Windows1254 is the Windows 1254 encoding. -var Windows1254 encoding.Encoding = &windows1254 +var Windows1254 *Charmap = &windows1254 -var windows1254 = charmap{ +var windows1254 = Charmap{ name: "Windows 1254", mib: identifier.Windows1254, asciiSuperset: true, @@ -5258,9 +6483,9 @@ var windows1254 = charmap{ } // Windows1255 is the Windows 1255 encoding. -var Windows1255 encoding.Encoding = &windows1255 +var Windows1255 *Charmap = &windows1255 -var windows1255 = charmap{ +var windows1255 = Charmap{ name: "Windows 1255", mib: identifier.Windows1255, asciiSuperset: true, @@ -5368,7 +6593,7 @@ var windows1255 = charmap{ {2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}}, {2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}}, {2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd6, 0xbb, 0x00}}, + {2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}}, {2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}}, {2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}}, {2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}}, @@ -5418,24 +6643,24 @@ var windows1255 = charmap{ 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192, 0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5, - 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, 0xce0005be, - 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, 0xe20005d2, - 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, 0xea0005da, - 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, 0xf20005e2, - 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, 0xfa0005ea, - 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, 0x96002013, - 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, - 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, 0x800020ac, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, + 0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, + 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, + 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, + 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, + 0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, + 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, + 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, }, } // Windows1256 is the Windows 1256 encoding. -var Windows1256 encoding.Encoding = &windows1256 +var Windows1256 *Charmap = &windows1256 -var windows1256 = charmap{ +var windows1256 = Charmap{ name: "Windows 1256", mib: identifier.Windows1256, asciiSuperset: true, @@ -5608,9 +6833,9 @@ var windows1256 = charmap{ } // Windows1257 is the Windows 1257 encoding. -var Windows1257 encoding.Encoding = &windows1257 +var Windows1257 *Charmap = &windows1257 -var windows1257 = charmap{ +var windows1257 = Charmap{ name: "Windows 1257", mib: identifier.Windows1257, asciiSuperset: true, @@ -5783,9 +7008,9 @@ var windows1257 = charmap{ } // Windows1258 is the Windows 1258 encoding. -var Windows1258 encoding.Encoding = &windows1258 +var Windows1258 *Charmap = &windows1258 -var windows1258 = charmap{ +var windows1258 = Charmap{ name: "Windows 1258", mib: identifier.Windows1258, asciiSuperset: true, @@ -5960,9 +7185,9 @@ var windows1258 = charmap{ // XUserDefined is the X-User-Defined encoding. // // It is defined at http://encoding.spec.whatwg.org/#x-user-defined -var XUserDefined encoding.Encoding = &xUserDefined +var XUserDefined *Charmap = &xUserDefined -var xUserDefined = charmap{ +var xUserDefined = Charmap{ name: "X-User-Defined", mib: identifier.XUserDefined, asciiSuperset: true, @@ -6134,13 +7359,19 @@ var xUserDefined = charmap{ }, } var listAll = []encoding.Encoding{ + CodePage037, CodePage437, CodePage850, CodePage852, CodePage855, CodePage858, + CodePage860, CodePage862, + CodePage863, + CodePage865, CodePage866, + CodePage1047, + CodePage1140, ISO8859_1, ISO8859_2, ISO8859_3, @@ -6153,6 +7384,7 @@ var listAll = []encoding.Encoding{ ISO8859_8, ISO8859_8E, ISO8859_8I, + ISO8859_9, ISO8859_10, ISO8859_13, ISO8859_14, @@ -6175,4 +7407,4 @@ var listAll = []encoding.Encoding{ XUserDefined, } -// Total table size 72520 bytes (70KiB); checksum: 811C9DC5 +// Total table size 87024 bytes (84KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/encoding/encoding.go b/vendor/golang.org/x/text/encoding/encoding.go index 2a7d9529ac..221f175c01 100644 --- a/vendor/golang.org/x/text/encoding/encoding.go +++ b/vendor/golang.org/x/text/encoding/encoding.go @@ -52,7 +52,7 @@ type Decoder struct { } // Bytes converts the given encoded bytes to UTF-8. It returns the converted -// bytes or 0, err if any error occurred. +// bytes or nil, err if any error occurred. func (d *Decoder) Bytes(b []byte) ([]byte, error) { b, _, err := transform.Bytes(d, b) if err != nil { @@ -62,7 +62,7 @@ func (d *Decoder) Bytes(b []byte) ([]byte, error) { } // String converts the given encoded string to UTF-8. It returns the converted -// string or 0, err if any error occurred. +// string or "", err if any error occurred. func (d *Decoder) String(s string) (string, error) { s, _, err := transform.String(d, s) if err != nil { @@ -95,7 +95,7 @@ type Encoder struct { _ struct{} } -// Bytes converts bytes from UTF-8. It returns the converted bytes or 0, err if +// Bytes converts bytes from UTF-8. It returns the converted bytes or nil, err if // any error occurred. func (e *Encoder) Bytes(b []byte) ([]byte, error) { b, _, err := transform.Bytes(e, b) @@ -106,7 +106,7 @@ func (e *Encoder) Bytes(b []byte) ([]byte, error) { } // String converts a string from UTF-8. It returns the converted string or -// 0, err if any error occurred. +// "", err if any error occurred. func (e *Encoder) String(s string) (string, error) { s, _, err := transform.String(e, s) if err != nil { diff --git a/vendor/golang.org/x/text/encoding/encoding_test.go b/vendor/golang.org/x/text/encoding/encoding_test.go index 0cf203fe0c..1738147622 100644 --- a/vendor/golang.org/x/text/encoding/encoding_test.go +++ b/vendor/golang.org/x/text/encoding/encoding_test.go @@ -5,453 +5,15 @@ package encoding_test import ( - "bytes" - "fmt" - "io" "io/ioutil" "strings" "testing" "golang.org/x/text/encoding" "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/japanese" - "golang.org/x/text/encoding/korean" - "golang.org/x/text/encoding/simplifiedchinese" - "golang.org/x/text/encoding/traditionalchinese" - "golang.org/x/text/encoding/unicode" - "golang.org/x/text/encoding/unicode/utf32" "golang.org/x/text/transform" ) -func trim(s string) string { - if len(s) < 120 { - return s - } - return s[:50] + "..." + s[len(s)-50:] -} - -var basicTestCases = []struct { - e encoding.Encoding - encPrefix string - encSuffix string - encoded string - utf8 string -}{ - // The encoded forms can be verified by the iconv program: - // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd - - // Charmap tests. - { - e: charmap.CodePage437, - encoded: "H\x82ll\x93 \x9d\xa7\xf4\x9c\xbe", - utf8: "Héllô ¥º⌠£╛", - }, - { - e: charmap.CodePage866, - encoded: "H\xf3\xd3o \x98\xfd\x9f\xdd\xa1", - utf8: "Hє╙o Ш¤Я▌б", - }, - { - e: charmap.ISO8859_2, - encoded: "Hel\xe5\xf5", - utf8: "Helĺő", - }, - { - e: charmap.ISO8859_3, - encoded: "He\xbd\xd4", - utf8: "He½Ô", - }, - { - e: charmap.ISO8859_4, - encoded: "Hel\xb6\xf8", - utf8: "Helļø", - }, - { - e: charmap.ISO8859_5, - encoded: "H\xd7\xc6o", - utf8: "HзЦo", - }, - { - e: charmap.ISO8859_6, - encoded: "Hel\xc2\xc9", - utf8: "Helآة", - }, - { - e: charmap.ISO8859_7, - encoded: "H\xeel\xebo", - utf8: "Hξlλo", - }, - { - e: charmap.ISO8859_8, - encoded: "Hel\xf5\xed", - utf8: "Helץם", - }, - { - e: charmap.ISO8859_10, - encoded: "H\xea\xbfo", - utf8: "Hęŋo", - }, - { - e: charmap.ISO8859_13, - encoded: "H\xe6l\xf9o", - utf8: "Hęlło", - }, - { - e: charmap.ISO8859_14, - encoded: "He\xfe\xd0o", - utf8: "HeŷŴo", - }, - { - e: charmap.ISO8859_15, - encoded: "H\xa4ll\xd8", - utf8: "H€llØ", - }, - { - e: charmap.ISO8859_16, - encoded: "H\xe6ll\xbd", - utf8: "Hællœ", - }, - { - e: charmap.KOI8R, - encoded: "He\x93\xad\x9c", - utf8: "He⌠╜°", - }, - { - e: charmap.KOI8U, - encoded: "He\x93\xad\x9c", - utf8: "He⌠ґ°", - }, - { - e: charmap.Macintosh, - encoded: "He\xdf\xd7", - utf8: "Hefl◊", - }, - { - e: charmap.MacintoshCyrillic, - encoded: "He\xbe\x94", - utf8: "HeЊФ", - }, - { - e: charmap.Windows874, - encoded: "He\xb7\xf0", - utf8: "Heท๐", - }, - { - e: charmap.Windows1250, - encoded: "He\xe5\xe5o", - utf8: "Heĺĺo", - }, - { - e: charmap.Windows1251, - encoded: "H\xball\xfe", - utf8: "Hєllю", - }, - { - e: charmap.Windows1252, - encoded: "H\xe9ll\xf4 \xa5\xbA\xae\xa3\xd0", - utf8: "Héllô ¥º®£Ð", - }, - { - e: charmap.Windows1253, - encoded: "H\xe5ll\xd6", - utf8: "HεllΦ", - }, - { - e: charmap.Windows1254, - encoded: "\xd0ello", - utf8: "Ğello", - }, - { - e: charmap.Windows1255, - encoded: "He\xd4o", - utf8: "Heװo", - }, - { - e: charmap.Windows1256, - encoded: "H\xdbllo", - utf8: "Hغllo", - }, - { - e: charmap.Windows1257, - encoded: "He\xeflo", - utf8: "Heļlo", - }, - { - e: charmap.Windows1258, - encoded: "Hell\xf5", - utf8: "Hellơ", - }, - { - e: charmap.XUserDefined, - encoded: "\x00\x40\x7f\x80\xab\xff", - utf8: "\u0000\u0040\u007f\uf780\uf7ab\uf7ff", - }, - - // UTF-16 tests. - { - e: utf16BEIB, - encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65", - utf8: "\x57\u00e4\U0001d565", - }, - { - e: utf16BEEB, - encPrefix: "\xfe\xff", - encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65", - utf8: "\x57\u00e4\U0001d565", - }, - { - e: utf16LEIB, - encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd", - utf8: "\x57\u00e4\U0001d565", - }, - { - e: utf16LEEB, - encPrefix: "\xff\xfe", - encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd", - utf8: "\x57\u00e4\U0001d565", - }, - - // UTF-32 tests. - { - e: utf32BEIB, - encoded: "\x00\x00\x00\x57\x00\x00\x00\xe4\x00\x01\xd5\x65", - utf8: "\x57\u00e4\U0001d565", - }, - { - e: utf32.UTF32(utf32.BigEndian, utf32.ExpectBOM), - encPrefix: "\x00\x00\xfe\xff", - encoded: "\x00\x00\x00\x57\x00\x00\x00\xe4\x00\x01\xd5\x65", - utf8: "\x57\u00e4\U0001d565", - }, - { - e: utf32.UTF32(utf32.LittleEndian, utf32.IgnoreBOM), - encoded: "\x57\x00\x00\x00\xe4\x00\x00\x00\x65\xd5\x01\x00", - utf8: "\x57\u00e4\U0001d565", - }, - { - e: utf32.UTF32(utf32.LittleEndian, utf32.ExpectBOM), - encPrefix: "\xff\xfe\x00\x00", - encoded: "\x57\x00\x00\x00\xe4\x00\x00\x00\x65\xd5\x01\x00", - utf8: "\x57\u00e4\U0001d565", - }, - - // Chinese tests. - // - // "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000" is a - // nonsense string that contains GB18030 encodable codepoints of which - // only U+00E0 and U+00E1 are GBK encodable. - // - // "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€" is a nonsense - // string that contains ASCII and GBK encodable codepoints from Levels - // 1-5 as well as the Euro sign. - // - // "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€" is a nonsense string - // that contains ASCII and Big5 encodable codepoints from the Basic - // Multilingual Plane and the Supplementary Ideographic Plane as well as - // the Euro sign. - // - // "花间一壶酒,独酌无相亲。" (simplified) and - // "花間一壺酒,獨酌無相親。" (traditional) - // are from the 8th century poem "Yuè Xià Dú Zhuó". - { - e: simplifiedchinese.GB18030, - encoded: "\x81\x30\x81\x31\x81\x30\x89\x37\x81\x30\x89\x38\xa8\xa4\xa8\xa2" + - "\x81\x30\x89\x39\x81\x30\x8a\x30\x84\x31\xa4\x39\x90\x30\x81\x30", - utf8: "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000", - }, - { - e: simplifiedchinese.GB18030, - encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" + - "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3", - utf8: "花间一壶酒,独酌无相亲。", - }, - { - e: simplifiedchinese.GBK, - encoded: "A\xa1\xa1\xb0\xa1\x81\x40\x81\x80\xaa\x40\xaa\x80\xa8\x40\xa8\x80Z\x80", - utf8: "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€", - }, - { - e: simplifiedchinese.GBK, - encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" + - "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3", - utf8: "花间一壶酒,独酌无相亲。", - }, - { - e: simplifiedchinese.HZGB2312, - encoded: "A~{\x21\x21~~\x30\x21~}Z~~", - utf8: "A\u3000~\u554aZ~", - }, - { - e: simplifiedchinese.HZGB2312, - encPrefix: "~{", - encoded: ";(F#,6@WCN^O`GW!#", - utf8: "花间一壶酒,独酌无相亲。", - }, - { - e: traditionalchinese.Big5, - encoded: "A\x87\x40\x87\x41\x87\x45\xa1\x40\xfe\xfd\xfe\xfeZ\xa3\xe1", - utf8: "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€", - }, - { - e: traditionalchinese.Big5, - encoded: "\xaa\xe1\xb6\xa1\xa4\x40\xb3\xfd\xb0\x73\xa1\x41\xbf\x57\xb0\x75" + - "\xb5\x4c\xac\xdb\xbf\xcb\xa1\x43", - utf8: "花間一壺酒,獨酌無相親。", - }, - - // Japanese tests. - // - // "A。カ゚ 0208: etc 0212: etc" is a nonsense string that contains ASCII, half-width - // kana, JIS X 0208 (including two near the kink in the Shift JIS second byte - // encoding) and JIS X 0212 encodable codepoints. - // - // "月日は百代の過客にして、行かふ年も又旅人也。" is from the 17th century poem - // "Oku no Hosomichi" and contains both hiragana and kanji. - { - e: japanese.EUCJP, - encoded: "A\x8e\xa1\x8e\xb6\x8e\xdf " + - "0208: \xa1\xa1\xa1\xa2\xa1\xdf\xa1\xe0\xa1\xfd\xa1\xfe\xa2\xa1\xa2\xa2\xf4\xa6 " + - "0212: \x8f\xa2\xaf\x8f\xed\xe3", - utf8: "A。カ゚ " + - "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199 " + - "0212: \u02d8\u9fa5", - }, - { - e: japanese.EUCJP, - encoded: "\xb7\xee\xc6\xfc\xa4\xcf\xc9\xb4\xc2\xe5\xa4\xce\xb2\xe1\xb5\xd2" + - "\xa4\xcb\xa4\xb7\xa4\xc6\xa1\xa2\xb9\xd4\xa4\xab\xa4\xd5\xc7\xaf" + - "\xa4\xe2\xcb\xf4\xce\xb9\xbf\xcd\xcc\xe9\xa1\xa3", - utf8: "月日は百代の過客にして、行かふ年も又旅人也。", - }, - { - e: japanese.ISO2022JP, - encSuffix: "\x1b\x28\x42", - encoded: "\x1b\x28\x49\x21\x36\x5f\x1b\x28\x42 " + - "0208: \x1b\x24\x42\x21\x21\x21\x22\x21\x5f\x21\x60\x21\x7d\x21\x7e\x22\x21\x22\x22\x74\x26", - utf8: "。カ゚ " + - "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199", - }, - { - e: japanese.ISO2022JP, - encPrefix: "\x1b\x24\x42", - encSuffix: "\x1b\x28\x42", - encoded: "\x37\x6e\x46\x7c\x24\x4f\x49\x34\x42\x65\x24\x4e\x32\x61\x35\x52" + - "\x24\x4b\x24\x37\x24\x46\x21\x22\x39\x54\x24\x2b\x24\x55\x47\x2f" + - "\x24\x62\x4b\x74\x4e\x39\x3f\x4d\x4c\x69\x21\x23", - utf8: "月日は百代の過客にして、行かふ年も又旅人也。", - }, - { - e: japanese.ShiftJIS, - encoded: "A\xa1\xb6\xdf " + - "0208: \x81\x40\x81\x41\x81\x7e\x81\x80\x81\x9d\x81\x9e\x81\x9f\x81\xa0\xea\xa4", - utf8: "A。カ゚ " + - "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199", - }, - { - e: japanese.ShiftJIS, - encoded: "\x8c\x8e\x93\xfa\x82\xcd\x95\x53\x91\xe3\x82\xcc\x89\xdf\x8b\x71" + - "\x82\xc9\x82\xb5\x82\xc4\x81\x41\x8d\x73\x82\xa9\x82\xd3\x94\x4e" + - "\x82\xe0\x96\x94\x97\xb7\x90\x6c\x96\xe7\x81\x42", - utf8: "月日は百代の過客にして、行かふ年も又旅人也。", - }, - - // Korean tests. - // - // "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D" is a - // nonsense string that contains ASCII, Hangul and CJK ideographs. - // - // "세계야, 안녕" translates as "Hello, world". - { - e: korean.EUCKR, - encoded: "A\x81\x41\x81\x61\x81\x81\xc6\xfeB\xc7\xa1\xc7\xfe\xc8\xa1C\xca\xa1\xfd\xfeD", - utf8: "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D", - }, - { - e: korean.EUCKR, - encoded: "\xbc\xbc\xb0\xe8\xbe\xdf\x2c\x20\xbe\xc8\xb3\xe7", - utf8: "세계야, 안녕", - }, -} - -func TestBasics(t *testing.T) { - for _, tc := range basicTestCases { - for _, direction := range []string{"Decode", "Encode"} { - var coder Transcoder - var want, src, wPrefix, sPrefix, wSuffix, sSuffix string - if direction == "Decode" { - coder, want, src = tc.e.NewDecoder(), tc.utf8, tc.encoded - wPrefix, sPrefix, wSuffix, sSuffix = "", tc.encPrefix, "", tc.encSuffix - } else { - coder, want, src = tc.e.NewEncoder(), tc.encoded, tc.utf8 - wPrefix, sPrefix, wSuffix, sSuffix = tc.encPrefix, "", tc.encSuffix, "" - } - - dst := make([]byte, len(wPrefix)+len(want)+len(wSuffix)) - nDst, nSrc, err := coder.Transform(dst, []byte(sPrefix+src+sSuffix), true) - if err != nil { - t.Errorf("%v: %s: %v", tc.e, direction, err) - continue - } - if nDst != len(wPrefix)+len(want)+len(wSuffix) { - t.Errorf("%v: %s: nDst got %d, want %d", - tc.e, direction, nDst, len(wPrefix)+len(want)+len(wSuffix)) - continue - } - if nSrc != len(sPrefix)+len(src)+len(sSuffix) { - t.Errorf("%v: %s: nSrc got %d, want %d", - tc.e, direction, nSrc, len(sPrefix)+len(src)+len(sSuffix)) - continue - } - if got := string(dst); got != wPrefix+want+wSuffix { - t.Errorf("%v: %s:\ngot %q\nwant %q", - tc.e, direction, got, wPrefix+want+wSuffix) - continue - } - - for _, n := range []int{0, 1, 2, 10, 123, 4567} { - input := sPrefix + strings.Repeat(src, n) + sSuffix - g, err := coder.String(input) - if err != nil { - t.Errorf("%v: %s: Bytes: n=%d: %v", tc.e, direction, n, err) - continue - } - if len(g) == 0 && len(input) == 0 { - // If the input is empty then the output can be empty, - // regardless of whatever wPrefix is. - continue - } - got1, want1 := string(g), wPrefix+strings.Repeat(want, n)+wSuffix - if got1 != want1 { - t.Errorf("%v: %s: ReadAll: n=%d\ngot %q\nwant %q", - tc.e, direction, n, trim(got1), trim(want1)) - continue - } - } - } - } -} - -// TestBig5CircumflexAndMacron tests the special cases listed in -// http://encoding.spec.whatwg.org/#big5 -// Note that these special cases aren't preserved by round-tripping through -// decoding and encoding (since -// http://encoding.spec.whatwg.org/index-big5.txt does not have an entry for -// U+0304 or U+030C), so we can't test this in TestBasics. -func TestBig5CircumflexAndMacron(t *testing.T) { - src := "\x88\x5f\x88\x60\x88\x61\x88\x62\x88\x63\x88\x64\x88\x65\x88\x66 " + - "\x88\xa2\x88\xa3\x88\xa4\x88\xa5\x88\xa6" - want := "ÓǑÒ\u00ca\u0304Ế\u00ca\u030cỀÊ " + - "ü\u00ea\u0304ế\u00ea\u030cề" - dst, err := ioutil.ReadAll(transform.NewReader( - strings.NewReader(src), traditionalchinese.Big5.NewDecoder())) - if err != nil { - t.Fatal(err) - } - if got := string(dst); got != want { - t.Fatalf("\ngot %q\nwant %q", got, want) - } -} - func TestEncodeInvalidUTF8(t *testing.T) { inputs := []string{ "hello.", @@ -642,238 +204,6 @@ func TestUTF8Validator(t *testing.T) { } } -var ( - utf16LEIB = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM) // UTF-16LE (atypical interpretation) - utf16LEUB = unicode.UTF16(unicode.LittleEndian, unicode.UseBOM) // UTF-16, LE - utf16LEEB = unicode.UTF16(unicode.LittleEndian, unicode.ExpectBOM) // UTF-16, LE, Expect - utf16BEIB = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM) // UTF-16BE (atypical interpretation) - utf16BEUB = unicode.UTF16(unicode.BigEndian, unicode.UseBOM) // UTF-16 default - utf16BEEB = unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM) // UTF-16 Expect -) - -func TestUTF16(t *testing.T) { - testCases := []struct { - desc string - src string - notEOF bool // the inverse of atEOF - sizeDst int - want string - nSrc int - err error - t transform.Transformer - }{{ - desc: "utf-16 IgnoreBOM dec: empty string", - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16 UseBOM dec: empty string", - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16 ExpectBOM dec: empty string", - err: unicode.ErrMissingBOM, - t: utf16BEEB.NewDecoder(), - }, { - desc: "utf-16 dec: BOM determines encoding BE (RFC 2781:3.3)", - src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 12, - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16 dec: BOM determines encoding LE (RFC 2781:3.3)", - src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 12, - t: utf16LEUB.NewDecoder(), - }, { - desc: "utf-16 dec: BOM determines encoding LE, change default (RFC 2781:3.3)", - src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 12, - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16 dec: Fail on missing BOM when required", - src: "\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x00\x52\x00\x61", - sizeDst: 100, - want: "", - nSrc: 0, - err: unicode.ErrMissingBOM, - t: utf16BEEB.NewDecoder(), - }, { - desc: "utf-16 dec: SHOULD interpret text as big-endian when BOM not present (RFC 2781:4.3)", - src: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 10, - t: utf16BEUB.NewDecoder(), - }, { - // This is an error according to RFC 2781. But errors in RFC 2781 are - // open to interpretations, so I guess this is fine. - desc: "utf-16le dec: incorrect BOM is an error (RFC 2781:4.1)", - src: "\xFE\xFF\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - sizeDst: 100, - want: "\uFFFE\U00012345=Ra", - nSrc: 12, - t: utf16LEIB.NewDecoder(), - }, { - desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - nSrc: 7, - t: utf16LEUB.NewEncoder(), - }, { - desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - nSrc: 7, - t: utf16BEUB.NewEncoder(), - }, { - desc: "utf-16le enc: MUST NOT write BOM (RFC 2781:3.3)", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - nSrc: 7, - t: utf16LEIB.NewEncoder(), - }, { - desc: "utf-16be dec: incorrect UTF-16: odd bytes", - src: "\x00", - sizeDst: 100, - want: "\uFFFD", - nSrc: 1, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: unpaired surrogate, odd bytes", - src: "\xD8\x45\x00", - sizeDst: 100, - want: "\uFFFD\uFFFD", - nSrc: 3, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: unpaired low surrogate + valid text", - src: "\xD8\x45\x00a", - sizeDst: 100, - want: "\uFFFDa", - nSrc: 4, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: unpaired low surrogate + valid text + single byte", - src: "\xD8\x45\x00ab", - sizeDst: 100, - want: "\uFFFDa\uFFFD", - nSrc: 5, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16le dec: unpaired high surrogate", - src: "\x00\x00\x00\xDC\x12\xD8", - sizeDst: 100, - want: "\x00\uFFFD\uFFFD", - nSrc: 6, - t: utf16LEIB.NewDecoder(), - }, { - desc: "utf-16be dec: two unpaired low surrogates", - src: "\xD8\x45\xD8\x12", - sizeDst: 100, - want: "\uFFFD\uFFFD", - nSrc: 4, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: short dst", - src: "\x00a", - sizeDst: 0, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16be dec: short dst surrogate", - src: "\xD8\xF5\xDC\x12", - sizeDst: 3, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16be dec: short dst trailing byte", - src: "\x00", - sizeDst: 2, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16be dec: short src", - src: "\x00", - notEOF: true, - sizeDst: 3, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortSrc, - }, { - desc: "utf-16 enc", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - nSrc: 7, - t: utf16BEUB.NewEncoder(), - }, { - desc: "utf-16 enc: short dst normal", - src: "\U00012345=Ra", - sizeDst: 9, - want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52", - nSrc: 6, - t: utf16BEIB.NewEncoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16 enc: short dst surrogate", - src: "\U00012345=Ra", - sizeDst: 3, - want: "", - nSrc: 0, - t: utf16BEIB.NewEncoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16 enc: short src", - src: "\U00012345=Ra\xC2", - notEOF: true, - sizeDst: 100, - want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - nSrc: 7, - t: utf16BEIB.NewEncoder(), - err: transform.ErrShortSrc, - }, { - desc: "utf-16be dec: don't change byte order mid-stream", - src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\xFF\xFE\x00\x52\x00\x61", - sizeDst: 100, - want: "\U00012345=\ufffeRa", - nSrc: 14, - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16le dec: don't change byte order mid-stream", - src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x52\x00\x61\x00", - sizeDst: 100, - want: "\U00012345=\ufeff\ufffeRa", - nSrc: 16, - t: utf16LEUB.NewDecoder(), - }} - for i, tc := range testCases { - b := make([]byte, tc.sizeDst) - nDst, nSrc, err := tc.t.Transform(b, []byte(tc.src), !tc.notEOF) - if err != tc.err { - t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err) - } - if got := string(b[:nDst]); got != tc.want { - t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want) - } - if nSrc != tc.nSrc { - t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc) - } - } -} - func TestErrorHandler(t *testing.T) { testCases := []struct { desc string @@ -958,171 +288,3 @@ func TestErrorHandler(t *testing.T) { } } -func TestBOMOverride(t *testing.T) { - dec := unicode.BOMOverride(charmap.CodePage437.NewDecoder()) - dst := make([]byte, 100) - for i, tc := range []struct { - src string - atEOF bool - dst string - nSrc int - err error - }{ - 0: {"H\x82ll\x93", true, "Héllô", 5, nil}, - 1: {"\uFEFFHéllö", true, "Héllö", 10, nil}, - 2: {"\xFE\xFF\x00H\x00e\x00l\x00l\x00o", true, "Hello", 12, nil}, - 3: {"\xFF\xFEH\x00e\x00l\x00l\x00o\x00", true, "Hello", 12, nil}, - 4: {"\uFEFF", true, "", 3, nil}, - 5: {"\xFE\xFF", true, "", 2, nil}, - 6: {"\xFF\xFE", true, "", 2, nil}, - 7: {"\xEF\xBB", true, "\u2229\u2557", 2, nil}, - 8: {"\xEF", true, "\u2229", 1, nil}, - 9: {"", true, "", 0, nil}, - 10: {"\xFE", true, "\u25a0", 1, nil}, - 11: {"\xFF", true, "\u00a0", 1, nil}, - 12: {"\xEF\xBB", false, "", 0, transform.ErrShortSrc}, - 13: {"\xEF", false, "", 0, transform.ErrShortSrc}, - 14: {"", false, "", 0, transform.ErrShortSrc}, - 15: {"\xFE", false, "", 0, transform.ErrShortSrc}, - 16: {"\xFF", false, "", 0, transform.ErrShortSrc}, - 17: {"\xFF\xFE", false, "", 0, transform.ErrShortSrc}, - } { - dec.Reset() - nDst, nSrc, err := dec.Transform(dst, []byte(tc.src), tc.atEOF) - got := string(dst[:nDst]) - if nSrc != tc.nSrc { - t.Errorf("%d: nSrc: got %d; want %d", i, nSrc, tc.nSrc) - } - if got != tc.dst { - t.Errorf("%d: got %+q; want %+q", i, got, tc.dst) - } - if err != tc.err { - t.Errorf("%d: error: got %v; want %v", i, err, tc.err) - } - } -} - -// testdataFiles are files in testdata/*.txt. -var testdataFiles = []struct { - enc encoding.Encoding - basename, ext string -}{ - {charmap.Windows1252, "candide", "windows-1252"}, - {japanese.EUCJP, "rashomon", "euc-jp"}, - {japanese.ISO2022JP, "rashomon", "iso-2022-jp"}, - {japanese.ShiftJIS, "rashomon", "shift-jis"}, - {korean.EUCKR, "unsu-joh-eun-nal", "euc-kr"}, - {simplifiedchinese.GBK, "sunzi-bingfa-simplified", "gbk"}, - {simplifiedchinese.HZGB2312, "sunzi-bingfa-gb-levels-1-and-2", "hz-gb2312"}, - {traditionalchinese.Big5, "sunzi-bingfa-traditional", "big5"}, - {utf16LEIB, "candide", "utf-16le"}, - {unicode.UTF8, "candide", "utf-8"}, - {utf32BEIB, "candide", "utf-32be"}, - - // GB18030 is a superset of GBK and is nominally a Simplified Chinese - // encoding, but it can also represent the entire Basic Multilingual - // Plane, including codepoints like 'â' that aren't encodable by GBK. - // GB18030 on Simplified Chinese should perform similarly to GBK on - // Simplified Chinese. GB18030 on "candide" is more interesting. - {simplifiedchinese.GB18030, "candide", "gb18030"}, -} - -// Encoder or Decoder -type Transcoder interface { - transform.Transformer - Bytes([]byte) ([]byte, error) - String(string) (string, error) -} - -func load(direction string, enc encoding.Encoding) ([]byte, []byte, Transcoder, error) { - basename, ext, count := "", "", 0 - for _, tf := range testdataFiles { - if tf.enc == enc { - basename, ext = tf.basename, tf.ext - count++ - } - } - if count != 1 { - if count == 0 { - return nil, nil, nil, fmt.Errorf("no testdataFiles for %s", enc) - } - return nil, nil, nil, fmt.Errorf("too many testdataFiles for %s", enc) - } - dstFile := fmt.Sprintf("testdata/%s-%s.txt", basename, ext) - srcFile := fmt.Sprintf("testdata/%s-utf-8.txt", basename) - var coder Transcoder = encoding.ReplaceUnsupported(enc.NewEncoder()) - if direction == "Decode" { - dstFile, srcFile = srcFile, dstFile - coder = enc.NewDecoder() - } - dst, err := ioutil.ReadFile(dstFile) - if err != nil { - return nil, nil, nil, err - } - src, err := ioutil.ReadFile(srcFile) - if err != nil { - return nil, nil, nil, err - } - return dst, src, coder, nil -} - -func TestFiles(t *testing.T) { - for _, dir := range []string{"Decode", "Encode"} { - for _, tf := range testdataFiles { - dst, src, transformer, err := load(dir, tf.enc) - if err != nil { - t.Errorf("%s, %s: load: %v", dir, tf.enc, err) - continue - } - buf, err := transformer.Bytes(src) - if err != nil { - t.Errorf("%s, %s: transform: %v", dir, tf.enc, err) - continue - } - if !bytes.Equal(buf, dst) { - t.Errorf("%s, %s: transformed bytes did not match golden file", dir, tf.enc) - continue - } - } - } -} - -func benchmark(b *testing.B, direction string, enc encoding.Encoding) { - _, src, transformer, err := load(direction, enc) - if err != nil { - b.Fatal(err) - } - b.SetBytes(int64(len(src))) - b.ResetTimer() - for i := 0; i < b.N; i++ { - r := transform.NewReader(bytes.NewReader(src), transformer) - io.Copy(ioutil.Discard, r) - } -} - -func BenchmarkBig5Decoder(b *testing.B) { benchmark(b, "Decode", traditionalchinese.Big5) } -func BenchmarkBig5Encoder(b *testing.B) { benchmark(b, "Encode", traditionalchinese.Big5) } -func BenchmarkCharmapDecoder(b *testing.B) { benchmark(b, "Decode", charmap.Windows1252) } -func BenchmarkCharmapEncoder(b *testing.B) { benchmark(b, "Encode", charmap.Windows1252) } -func BenchmarkEUCJPDecoder(b *testing.B) { benchmark(b, "Decode", japanese.EUCJP) } -func BenchmarkEUCJPEncoder(b *testing.B) { benchmark(b, "Encode", japanese.EUCJP) } -func BenchmarkEUCKRDecoder(b *testing.B) { benchmark(b, "Decode", korean.EUCKR) } -func BenchmarkEUCKREncoder(b *testing.B) { benchmark(b, "Encode", korean.EUCKR) } -func BenchmarkGB18030Decoder(b *testing.B) { benchmark(b, "Decode", simplifiedchinese.GB18030) } -func BenchmarkGB18030Encoder(b *testing.B) { benchmark(b, "Encode", simplifiedchinese.GB18030) } -func BenchmarkGBKDecoder(b *testing.B) { benchmark(b, "Decode", simplifiedchinese.GBK) } -func BenchmarkGBKEncoder(b *testing.B) { benchmark(b, "Encode", simplifiedchinese.GBK) } -func BenchmarkHZGB2312Decoder(b *testing.B) { benchmark(b, "Decode", simplifiedchinese.HZGB2312) } -func BenchmarkHZGB2312Encoder(b *testing.B) { benchmark(b, "Encode", simplifiedchinese.HZGB2312) } -func BenchmarkISO2022JPDecoder(b *testing.B) { benchmark(b, "Decode", japanese.ISO2022JP) } -func BenchmarkISO2022JPEncoder(b *testing.B) { benchmark(b, "Encode", japanese.ISO2022JP) } -func BenchmarkShiftJISDecoder(b *testing.B) { benchmark(b, "Decode", japanese.ShiftJIS) } -func BenchmarkShiftJISEncoder(b *testing.B) { benchmark(b, "Encode", japanese.ShiftJIS) } -func BenchmarkUTF8Decoder(b *testing.B) { benchmark(b, "Decode", unicode.UTF8) } -func BenchmarkUTF8Encoder(b *testing.B) { benchmark(b, "Encode", unicode.UTF8) } -func BenchmarkUTF16Decoder(b *testing.B) { benchmark(b, "Decode", utf16LEIB) } -func BenchmarkUTF16Encoder(b *testing.B) { benchmark(b, "Encode", utf16LEIB) } -func BenchmarkUTF32Decoder(b *testing.B) { benchmark(b, "Decode", utf32BEIB) } -func BenchmarkUTF32Encoder(b *testing.B) { benchmark(b, "Encode", utf32BEIB) } - -var utf32BEIB = utf32.UTF32(utf32.BigEndian, utf32.IgnoreBOM) diff --git a/vendor/golang.org/x/text/encoding/htmlindex/gen.go b/vendor/golang.org/x/text/encoding/htmlindex/gen.go index d10e5e09f7..ac6b4a77fd 100644 --- a/vendor/golang.org/x/text/encoding/htmlindex/gen.go +++ b/vendor/golang.org/x/text/encoding/htmlindex/gen.go @@ -26,7 +26,7 @@ type group struct { func main() { gen.Init() - r := gen.Open("http://www.w3.org/TR", "w3", "encoding/indexes/encodings.json") + r := gen.Open("https://encoding.spec.whatwg.org", "whatwg", "encodings.json") var groups []group if err := json.NewDecoder(r).Decode(&groups); err != nil { log.Fatalf("Error reading encodings.json: %v", err) @@ -37,9 +37,10 @@ func main() { fmt.Fprintln(w, "const (") for i, g := range groups { for _, e := range g.Encodings { - name := consts[e.Name] + key := strings.ToLower(e.Name) + name := consts[key] if name == "" { - log.Fatalf("No const defined for %s.", e.Name) + log.Fatalf("No const defined for %s.", key) } if i == 0 { fmt.Fprintf(w, "%s htmlEncoding = iota\n", name) @@ -54,7 +55,7 @@ func main() { fmt.Fprintln(w, "var canonical = [numEncodings]string{") for _, g := range groups { for _, e := range g.Encodings { - fmt.Fprintf(w, "%q,\n", e.Name) + fmt.Fprintf(w, "%q,\n", strings.ToLower(e.Name)) } } fmt.Fprint(w, "}\n\n") @@ -63,7 +64,9 @@ func main() { for _, g := range groups { for _, e := range g.Encodings { for _, l := range e.Labels { - fmt.Fprintf(w, "%q: %s,\n", l, consts[e.Name]) + key := strings.ToLower(e.Name) + name := consts[key] + fmt.Fprintf(w, "%q: %s,\n", l, name) } } } @@ -130,7 +133,10 @@ var consts = map[string]string{ // locales is taken from // https://html.spec.whatwg.org/multipage/syntax.html#encoding-sniffing-algorithm. var locales = []struct{ tag, name string }{ - {"und", "windows-1252"}, // The default value. + // The default value. Explicitly state latin to benefit from the exact + // script option, while still making 1252 the default encoding for languages + // written in Latin script. + {"und_Latn", "windows-1252"}, {"ar", "windows-1256"}, {"ba", "windows-1251"}, {"be", "windows-1251"}, diff --git a/vendor/golang.org/x/text/encoding/htmlindex/tables.go b/vendor/golang.org/x/text/encoding/htmlindex/tables.go index 78950d3c3d..9d6b4315c2 100644 --- a/vendor/golang.org/x/text/encoding/htmlindex/tables.go +++ b/vendor/golang.org/x/text/encoding/htmlindex/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package htmlindex @@ -313,7 +313,7 @@ var nameMap = map[string]htmlEncoding{ } var localeMap = []htmlEncoding{ - windows1252, // und + windows1252, // und_Latn windows1256, // ar windows1251, // ba windows1251, // be @@ -349,4 +349,4 @@ var localeMap = []htmlEncoding{ big5, // zh-hant } -const locales = "und ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant" +const locales = "und_Latn ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant" diff --git a/vendor/golang.org/x/text/encoding/ianaindex/example_test.go b/vendor/golang.org/x/text/encoding/ianaindex/example_test.go index b305732160..e2a3a7ef6a 100644 --- a/vendor/golang.org/x/text/encoding/ianaindex/example_test.go +++ b/vendor/golang.org/x/text/encoding/ianaindex/example_test.go @@ -13,14 +13,15 @@ import ( func ExampleIndex() { fmt.Println(ianaindex.MIME.Name(charmap.ISO8859_7)) - fmt.Println(ianaindex.IANA.Name(charmap.ISO8859_7)) + fmt.Println(ianaindex.MIB.Name(charmap.ISO8859_7)) - e, _ := ianaindex.IANA.Get("cp437") + e, _ := ianaindex.IANA.Encoding("cp437") fmt.Println(ianaindex.IANA.Name(e)) - // TODO: Output: - // ISO-8859-7 - // ISO8859_7:1987 - // IBM437 + // Output: + // ISO-8859-7 + // ISO_8859-7:1987 + // ISOLatinGreek + // IBM437 } diff --git a/vendor/golang.org/x/text/encoding/ianaindex/gen.go b/vendor/golang.org/x/text/encoding/ianaindex/gen.go new file mode 100644 index 0000000000..1b61b820d2 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/ianaindex/gen.go @@ -0,0 +1,192 @@ +// Copyright 2017 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 ( + "encoding/xml" + "fmt" + "io" + "log" + "sort" + "strconv" + "strings" + + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/internal/gen" +) + +type registry struct { + XMLName xml.Name `xml:"registry"` + Updated string `xml:"updated"` + Registry []struct { + ID string `xml:"id,attr"` + Record []struct { + Name string `xml:"name"` + Xref []struct { + Type string `xml:"type,attr"` + Data string `xml:"data,attr"` + } `xml:"xref"` + Desc struct { + Data string `xml:",innerxml"` + } `xml:"description,"` + MIB string `xml:"value"` + Alias []string `xml:"alias"` + MIME string `xml:"preferred_alias"` + } `xml:"record"` + } `xml:"registry"` +} + +func main() { + r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml") + reg := ®istry{} + if err := xml.NewDecoder(r).Decode(®); err != nil && err != io.EOF { + log.Fatalf("Error decoding charset registry: %v", err) + } + if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" { + log.Fatalf("Unexpected ID %s", reg.Registry[0].ID) + } + + x := &indexInfo{} + + for _, rec := range reg.Registry[0].Record { + mib := identifier.MIB(parseInt(rec.MIB)) + x.addEntry(mib, rec.Name) + for _, a := range rec.Alias { + a = strings.Split(a, " ")[0] // strip comments. + x.addAlias(a, mib) + // MIB name aliases are prefixed with a "cs" (character set) in the + // registry to identify them as display names and to ensure that + // the name starts with a lowercase letter in case it is used as + // an identifier. We remove it to be left with a nice clean name. + if strings.HasPrefix(a, "cs") { + x.setName(2, a[2:]) + } + } + if rec.MIME != "" { + x.addAlias(rec.MIME, mib) + x.setName(1, rec.MIME) + } + } + + w := gen.NewCodeWriter() + + fmt.Fprintln(w, `import "golang.org/x/text/encoding/internal/identifier"`) + + writeIndex(w, x) + + w.WriteGoFile("tables.go", "ianaindex") +} + +type alias struct { + name string + mib identifier.MIB +} + +type indexInfo struct { + // compacted index from code to MIB + codeToMIB []identifier.MIB + alias []alias + names [][3]string +} + +func (ii *indexInfo) Len() int { + return len(ii.codeToMIB) +} + +func (ii *indexInfo) Less(a, b int) bool { + return ii.codeToMIB[a] < ii.codeToMIB[b] +} + +func (ii *indexInfo) Swap(a, b int) { + ii.codeToMIB[a], ii.codeToMIB[b] = ii.codeToMIB[b], ii.codeToMIB[a] + // Co-sort the names. + ii.names[a], ii.names[b] = ii.names[b], ii.names[a] +} + +func (ii *indexInfo) setName(i int, name string) { + ii.names[len(ii.names)-1][i] = name +} + +func (ii *indexInfo) addEntry(mib identifier.MIB, name string) { + ii.names = append(ii.names, [3]string{name, name, name}) + ii.addAlias(name, mib) + ii.codeToMIB = append(ii.codeToMIB, mib) +} + +func (ii *indexInfo) addAlias(name string, mib identifier.MIB) { + // Don't add duplicates for the same mib. Adding duplicate aliases for + // different MIBs will cause the compiler to barf on an invalid map: great!. + for i := len(ii.alias) - 1; i >= 0 && ii.alias[i].mib == mib; i-- { + if ii.alias[i].name == name { + return + } + } + ii.alias = append(ii.alias, alias{name, mib}) + lower := strings.ToLower(name) + if lower != name { + ii.addAlias(lower, mib) + } +} + +const maxMIMENameLen = '0' - 1 // officially 40, but we leave some buffer. + +func writeIndex(w *gen.CodeWriter, x *indexInfo) { + sort.Stable(x) + + // Write constants. + fmt.Fprintln(w, "const (") + for i, m := range x.codeToMIB { + if i == 0 { + fmt.Fprintf(w, "enc%d = iota\n", m) + } else { + fmt.Fprintf(w, "enc%d\n", m) + } + } + fmt.Fprintln(w, "numIANA") + fmt.Fprintln(w, ")") + + w.WriteVar("ianaToMIB", x.codeToMIB) + + var ianaNames, mibNames []string + for _, names := range x.names { + n := names[0] + if names[0] != names[1] { + // MIME names are mostly identical to IANA names. We share the + // tables by setting the first byte of the string to an index into + // the string itself (< maxMIMENameLen) to the IANA name. The MIME + // name immediately follows the index. + x := len(names[1]) + 1 + if x > maxMIMENameLen { + log.Fatalf("MIME name length (%d) > %d", x, maxMIMENameLen) + } + n = string(x) + names[1] + names[0] + } + ianaNames = append(ianaNames, n) + mibNames = append(mibNames, names[2]) + } + + w.WriteVar("ianaNames", ianaNames) + w.WriteVar("mibNames", mibNames) + + w.WriteComment(` + TODO: Instead of using a map, we could use binary search strings doing + on-the fly lower-casing per character. This allows to always avoid + allocation and will be considerably more compact.`) + fmt.Fprintln(w, "var ianaAliases = map[string]int{") + for _, a := range x.alias { + fmt.Fprintf(w, "%q: enc%d,\n", a.name, a.mib) + } + fmt.Fprintln(w, "}") +} + +func parseInt(s string) int { + x, err := strconv.ParseInt(s, 10, 64) + if err != nil { + log.Fatalf("Could not parse integer: %v", err) + } + return int(x) +} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go index da899e09e2..49b30704a5 100644 --- a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go +++ b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go @@ -2,6 +2,8 @@ // 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 + // Package ianaindex maps names to Encodings as specified by the IANA registry. // This includes both the MIME and IANA names. // @@ -10,9 +12,21 @@ package ianaindex import ( + "errors" + "sort" + "strings" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/encoding/japanese" + "golang.org/x/text/encoding/korean" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/encoding/traditionalchinese" + "golang.org/x/text/encoding/unicode" ) +// TODO: remove the "Status... incomplete" in the package doc comment. // TODO: allow users to specify their own aliases? // TODO: allow users to specify their own indexes? // TODO: allow canonicalizing names @@ -22,28 +36,68 @@ import ( // support MIME otherwise. var ( - // MIME is an index to map MIME names. It does not support aliases. - MIME *Index + // MIME is an index to map MIME names. + MIME *Index = mime // IANA is an index that supports all names and aliases using IANA names as // the canonical identifier. - IANA *Index + IANA *Index = iana + + // MIB is an index that associates the MIB display name with an Encoding. + MIB *Index = mib + + mime = &Index{mimeName, ianaToMIB, ianaAliases, encodings[:]} + iana = &Index{ianaName, ianaToMIB, ianaAliases, encodings[:]} + mib = &Index{mibName, ianaToMIB, ianaAliases, encodings[:]} ) // Index maps names registered by IANA to Encodings. +// Currently different Indexes only differ in the names they return for +// encodings. In the future they may also differ in supported aliases. type Index struct { + names func(i int) string + toMIB []identifier.MIB // Sorted slice of supported MIBs + alias map[string]int + enc []encoding.Encoding } -// Get returns an Encoding for IANA-registered names. Matching is +var ( + errInvalidName = errors.New("ianaindex: invalid encoding name") + errUnknown = errors.New("ianaindex: unknown Encoding") + errUnsupported = errors.New("ianaindex: unsupported Encoding") +) + +// Encoding returns an Encoding for IANA-registered names. Matching is // case-insensitive. -func (x *Index) Get(name string) (encoding.Encoding, error) { - panic("TODO: implement") +func (x *Index) Encoding(name string) (encoding.Encoding, error) { + name = strings.TrimSpace(name) + // First try without lowercasing (possibly creating an allocation). + i, ok := x.alias[name] + if !ok { + i, ok = x.alias[strings.ToLower(name)] + if !ok { + return nil, errInvalidName + } + } + return x.enc[i], nil } // Name reports the canonical name of the given Encoding. It will return an // error if the e is not associated with a known encoding scheme. func (x *Index) Name(e encoding.Encoding) (string, error) { - panic("TODO: implement") + id, ok := e.(identifier.Interface) + if !ok { + return "", errUnknown + } + mib, _ := id.ID() + if mib == 0 { + return "", errUnknown + } + v := findMIB(x.toMIB, mib) + if v == -1 { + return "", errUnsupported + } + return x.names(v), nil } // TODO: the coverage of this index is rather spotty. Allowing users to set @@ -62,3 +116,94 @@ func (x *Index) Name(e encoding.Encoding) (string, error) { // func (x *Index) Set(name string, e encoding.Encoding) error { // panic("TODO: implement") // } + +func findMIB(x []identifier.MIB, mib identifier.MIB) int { + i := sort.Search(len(x), func(i int) bool { return x[i] >= mib }) + if i < len(x) && x[i] == mib { + return i + } + return -1 +} + +const maxMIMENameLen = '0' - 1 // officially 40, but we leave some buffer. + +func mimeName(x int) string { + n := ianaNames[x] + // See gen.go for a description of the encoding. + if n[0] <= maxMIMENameLen { + return n[1:n[0]] + } + return n +} + +func ianaName(x int) string { + n := ianaNames[x] + // See gen.go for a description of the encoding. + if n[0] <= maxMIMENameLen { + return n[n[0]:] + } + return n +} + +func mibName(x int) string { + return mibNames[x] +} + +var encodings = [numIANA]encoding.Encoding{ + enc106: unicode.UTF8, + enc1015: unicode.UTF16(unicode.BigEndian, unicode.UseBOM), + enc1013: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), + enc1014: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), + enc2028: charmap.CodePage037, + enc2011: charmap.CodePage437, + enc2009: charmap.CodePage850, + enc2010: charmap.CodePage852, + enc2046: charmap.CodePage855, + enc2089: charmap.CodePage858, + enc2048: charmap.CodePage860, + enc2013: charmap.CodePage862, + enc2050: charmap.CodePage863, + enc2052: charmap.CodePage865, + enc2086: charmap.CodePage866, + enc2102: charmap.CodePage1047, + enc2091: charmap.CodePage1140, + enc4: charmap.ISO8859_1, + enc5: charmap.ISO8859_2, + enc6: charmap.ISO8859_3, + enc7: charmap.ISO8859_4, + enc8: charmap.ISO8859_5, + enc9: charmap.ISO8859_6, + enc81: charmap.ISO8859_6E, + enc82: charmap.ISO8859_6I, + enc10: charmap.ISO8859_7, + enc11: charmap.ISO8859_8, + enc84: charmap.ISO8859_8E, + enc85: charmap.ISO8859_8I, + enc12: charmap.ISO8859_9, + enc13: charmap.ISO8859_10, + enc109: charmap.ISO8859_13, + enc110: charmap.ISO8859_14, + enc111: charmap.ISO8859_15, + enc112: charmap.ISO8859_16, + enc2084: charmap.KOI8R, + enc2088: charmap.KOI8U, + enc2027: charmap.Macintosh, + enc2109: charmap.Windows874, + enc2250: charmap.Windows1250, + enc2251: charmap.Windows1251, + enc2252: charmap.Windows1252, + enc2253: charmap.Windows1253, + enc2254: charmap.Windows1254, + enc2255: charmap.Windows1255, + enc2256: charmap.Windows1256, + enc2257: charmap.Windows1257, + enc2258: charmap.Windows1258, + enc18: japanese.EUCJP, + enc39: japanese.ISO2022JP, + enc17: japanese.ShiftJIS, + enc38: korean.EUCKR, + enc114: simplifiedchinese.GB18030, + enc113: simplifiedchinese.GBK, + enc2085: simplifiedchinese.HZGB2312, + enc2026: traditionalchinese.Big5, +} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go new file mode 100644 index 0000000000..20a2131f4c --- /dev/null +++ b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go @@ -0,0 +1,192 @@ +// Copyright 2017 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 ianaindex + +import ( + "testing" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/encoding/japanese" + "golang.org/x/text/encoding/korean" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/encoding/traditionalchinese" + "golang.org/x/text/encoding/unicode" +) + +var All = [][]encoding.Encoding{ + unicode.All, + charmap.All, + japanese.All, + korean.All, + simplifiedchinese.All, + traditionalchinese.All, +} + +// TestAllIANA tests whether an Encoding supported in x/text is defined by IANA but +// not supported by this package. +func TestAllIANA(t *testing.T) { + for _, ea := range All { + for _, e := range ea { + mib, _ := e.(identifier.Interface).ID() + if x := findMIB(ianaToMIB, mib); x != -1 && encodings[x] == nil { + t.Errorf("supported MIB %v (%v) not in index", mib, e) + } + } + } +} + +// TestNotSupported reports the encodings in IANA, but not by x/text. +func TestNotSupported(t *testing.T) { + mibs := map[identifier.MIB]bool{} + for _, ea := range All { + for _, e := range ea { + mib, _ := e.(identifier.Interface).ID() + mibs[mib] = true + } + } + + // Many encodings in the IANA index will likely not be suppored by the + // Go encodings. That is fine. + // TODO: consider wheter we should add this test. + // for code, mib := range ianaToMIB { + // t.Run(fmt.Sprint("IANA:", mib), func(t *testing.T) { + // if !mibs[mib] { + // t.Skipf("IANA encoding %s (MIB %v) not supported", + // ianaNames[code], mib) + // } + // }) + // } +} + +func TestEncoding(t *testing.T) { + testCases := []struct { + index *Index + name string + canonical string + err error + }{ + {MIME, "utf-8", "UTF-8", nil}, + {MIME, " utf-8 ", "UTF-8", nil}, + {MIME, " l5 ", "ISO-8859-9", nil}, + {MIME, "latin5 ", "ISO-8859-9", nil}, + {MIME, "LATIN5 ", "ISO-8859-9", nil}, + {MIME, "latin 5", "", errInvalidName}, + {MIME, "latin-5", "", errInvalidName}, + + {IANA, "utf-8", "UTF-8", nil}, + {IANA, " utf-8 ", "UTF-8", nil}, + {IANA, " l5 ", "ISO_8859-9:1989", nil}, + {IANA, "latin5 ", "ISO_8859-9:1989", nil}, + {IANA, "LATIN5 ", "ISO_8859-9:1989", nil}, + {IANA, "latin 5", "", errInvalidName}, + {IANA, "latin-5", "", errInvalidName}, + + {MIB, "utf-8", "UTF8", nil}, + {MIB, " utf-8 ", "UTF8", nil}, + {MIB, " l5 ", "ISOLatin5", nil}, + {MIB, "latin5 ", "ISOLatin5", nil}, + {MIB, "LATIN5 ", "ISOLatin5", nil}, + {MIB, "latin 5", "", errInvalidName}, + {MIB, "latin-5", "", errInvalidName}, + } + for i, tc := range testCases { + enc, err := tc.index.Encoding(tc.name) + if err != tc.err { + t.Errorf("%d: error was %v; want %v", i, err, tc.err) + } + if err != nil { + continue + } + if got, err := tc.index.Name(enc); got != tc.canonical { + t.Errorf("%d: Name(Encoding(%q)) = %q; want %q (%v)", i, tc.name, got, tc.canonical, err) + } + } +} + +func TestTables(t *testing.T) { + for i, x := range []*Index{MIME, IANA} { + for name, index := range x.alias { + got, err := x.Encoding(name) + if err != nil { + t.Errorf("%d%s:err: unexpected error %v", i, name, err) + } + if want := x.enc[index]; got != want { + t.Errorf("%d%s:encoding: got %v; want %v", i, name, got, want) + } + if got != nil { + mib, _ := got.(identifier.Interface).ID() + if i := findMIB(x.toMIB, mib); i != index { + t.Errorf("%d%s:mib: got %d; want %d", i, name, i, index) + } + } + } + } +} + +type unsupported struct { + encoding.Encoding +} + +func (unsupported) ID() (identifier.MIB, string) { return 9999, "" } + +func TestName(t *testing.T) { + testCases := []struct { + desc string + enc encoding.Encoding + f func(e encoding.Encoding) (string, error) + name string + err error + }{{ + "defined encoding", + charmap.ISO8859_2, + MIME.Name, + "ISO-8859-2", + nil, + }, { + "defined Unicode encoding", + unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), + IANA.Name, + "UTF-16BE", + nil, + }, { + "another defined Unicode encoding", + unicode.UTF16(unicode.BigEndian, unicode.UseBOM), + MIME.Name, + "UTF-16", + nil, + }, { + "unknown Unicode encoding", + unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM), + MIME.Name, + "", + errUnknown, + }, { + "undefined encoding", + unsupported{}, + MIME.Name, + "", + errUnsupported, + }, { + "undefined other encoding in HTML standard", + charmap.CodePage437, + IANA.Name, + "IBM437", + nil, + }, { + "unknown encoding", + encoding.Nop, + IANA.Name, + "", + errUnknown, + }} + for i, tc := range testCases { + name, err := tc.f(tc.enc) + if name != tc.name || err != tc.err { + t.Errorf("%d:%s: got %q, %v; want %q, %v", i, tc.desc, name, err, tc.name, tc.err) + } + } +} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/tables.go b/vendor/golang.org/x/text/encoding/ianaindex/tables.go new file mode 100644 index 0000000000..98a1d77caa --- /dev/null +++ b/vendor/golang.org/x/text/encoding/ianaindex/tables.go @@ -0,0 +1,2348 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package ianaindex + +import "golang.org/x/text/encoding/internal/identifier" + +const ( + enc3 = iota + enc4 + enc5 + enc6 + enc7 + enc8 + enc9 + enc10 + enc11 + enc12 + enc13 + enc14 + enc15 + enc16 + enc17 + enc18 + enc19 + enc20 + enc21 + enc22 + enc23 + enc24 + enc25 + enc26 + enc27 + enc28 + enc29 + enc30 + enc31 + enc32 + enc33 + enc34 + enc35 + enc36 + enc37 + enc38 + enc39 + enc40 + enc41 + enc42 + enc43 + enc44 + enc45 + enc46 + enc47 + enc48 + enc49 + enc50 + enc51 + enc52 + enc53 + enc54 + enc55 + enc56 + enc57 + enc58 + enc59 + enc60 + enc61 + enc62 + enc63 + enc64 + enc65 + enc66 + enc67 + enc68 + enc69 + enc70 + enc71 + enc72 + enc73 + enc74 + enc75 + enc76 + enc77 + enc78 + enc79 + enc80 + enc81 + enc82 + enc83 + enc84 + enc85 + enc86 + enc87 + enc88 + enc89 + enc90 + enc91 + enc92 + enc93 + enc94 + enc95 + enc96 + enc97 + enc98 + enc99 + enc100 + enc101 + enc102 + enc103 + enc104 + enc105 + enc106 + enc109 + enc110 + enc111 + enc112 + enc113 + enc114 + enc115 + enc116 + enc117 + enc118 + enc119 + enc1000 + enc1001 + enc1002 + enc1003 + enc1004 + enc1005 + enc1006 + enc1007 + enc1008 + enc1009 + enc1010 + enc1011 + enc1012 + enc1013 + enc1014 + enc1015 + enc1016 + enc1017 + enc1018 + enc1019 + enc1020 + enc2000 + enc2001 + enc2002 + enc2003 + enc2004 + enc2005 + enc2006 + enc2007 + enc2008 + enc2009 + enc2010 + enc2011 + enc2012 + enc2013 + enc2014 + enc2015 + enc2016 + enc2017 + enc2018 + enc2019 + enc2020 + enc2021 + enc2022 + enc2023 + enc2024 + enc2025 + enc2026 + enc2027 + enc2028 + enc2029 + enc2030 + enc2031 + enc2032 + enc2033 + enc2034 + enc2035 + enc2036 + enc2037 + enc2038 + enc2039 + enc2040 + enc2041 + enc2042 + enc2043 + enc2044 + enc2045 + enc2046 + enc2047 + enc2048 + enc2049 + enc2050 + enc2051 + enc2052 + enc2053 + enc2054 + enc2055 + enc2056 + enc2057 + enc2058 + enc2059 + enc2060 + enc2061 + enc2062 + enc2063 + enc2064 + enc2065 + enc2066 + enc2067 + enc2068 + enc2069 + enc2070 + enc2071 + enc2072 + enc2073 + enc2074 + enc2075 + enc2076 + enc2077 + enc2078 + enc2079 + enc2080 + enc2081 + enc2082 + enc2083 + enc2084 + enc2085 + enc2086 + enc2087 + enc2088 + enc2089 + enc2090 + enc2091 + enc2092 + enc2093 + enc2094 + enc2095 + enc2096 + enc2097 + enc2098 + enc2099 + enc2100 + enc2101 + enc2102 + enc2103 + enc2104 + enc2105 + enc2106 + enc2107 + enc2108 + enc2109 + enc2250 + enc2251 + enc2252 + enc2253 + enc2254 + enc2255 + enc2256 + enc2257 + enc2258 + enc2259 + enc2260 + numIANA +) + +var ianaToMIB = []identifier.MIB{ // 257 elements + // Entry 0 - 3F + 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, + 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, + 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, + 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, + 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, + 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, + 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, + 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, + // Entry 40 - 7F + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, + 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, + 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, + 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x03e8, 0x03e9, 0x03ea, 0x03eb, 0x03ec, + 0x03ed, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03f4, + // Entry 80 - BF + 0x03f5, 0x03f6, 0x03f7, 0x03f8, 0x03f9, 0x03fa, 0x03fb, 0x03fc, + 0x07d0, 0x07d1, 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x07d6, 0x07d7, + 0x07d8, 0x07d9, 0x07da, 0x07db, 0x07dc, 0x07dd, 0x07de, 0x07df, + 0x07e0, 0x07e1, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, + 0x07e8, 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, + 0x07f0, 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, + 0x07f8, 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, + 0x0800, 0x0801, 0x0802, 0x0803, 0x0804, 0x0805, 0x0806, 0x0807, + // Entry C0 - FF + 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e, 0x080f, + 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0816, 0x0817, + 0x0818, 0x0819, 0x081a, 0x081b, 0x081c, 0x081d, 0x081e, 0x081f, + 0x0820, 0x0821, 0x0822, 0x0823, 0x0824, 0x0825, 0x0826, 0x0827, + 0x0828, 0x0829, 0x082a, 0x082b, 0x082c, 0x082d, 0x082e, 0x082f, + 0x0830, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837, + 0x0838, 0x0839, 0x083a, 0x083b, 0x083c, 0x083d, 0x08ca, 0x08cb, + 0x08cc, 0x08cd, 0x08ce, 0x08cf, 0x08d0, 0x08d1, 0x08d2, 0x08d3, + // Entry 100 - 13F + 0x08d4, +} // Size: 538 bytes + +var ianaNames = []string{ // 257 elements + "US-ASCII", + "\vISO-8859-1ISO_8859-1:1987", + "\vISO-8859-2ISO_8859-2:1987", + "\vISO-8859-3ISO_8859-3:1988", + "\vISO-8859-4ISO_8859-4:1988", + "\vISO-8859-5ISO_8859-5:1988", + "\vISO-8859-6ISO_8859-6:1987", + "\vISO-8859-7ISO_8859-7:1987", + "\vISO-8859-8ISO_8859-8:1988", + "\vISO-8859-9ISO_8859-9:1989", + "ISO-8859-10", + "ISO_6937-2-add", + "JIS_X0201", + "JIS_Encoding", + "Shift_JIS", + "\x07EUC-JPExtended_UNIX_Code_Packed_Format_for_Japanese", + "Extended_UNIX_Code_Fixed_Width_for_Japanese", + "BS_4730", + "SEN_850200_C", + "IT", + "ES", + "DIN_66003", + "NS_4551-1", + "NF_Z_62-010", + "ISO-10646-UTF-1", + "ISO_646.basic:1983", + "INVARIANT", + "ISO_646.irv:1983", + "NATS-SEFI", + "NATS-SEFI-ADD", + "NATS-DANO", + "NATS-DANO-ADD", + "SEN_850200_B", + "KS_C_5601-1987", + "ISO-2022-KR", + "EUC-KR", + "ISO-2022-JP", + "ISO-2022-JP-2", + "JIS_C6220-1969-jp", + "JIS_C6220-1969-ro", + "PT", + "greek7-old", + "latin-greek", + "NF_Z_62-010_(1973)", + "Latin-greek-1", + "ISO_5427", + "JIS_C6226-1978", + "BS_viewdata", + "INIS", + "INIS-8", + "INIS-cyrillic", + "ISO_5427:1981", + "ISO_5428:1980", + "GB_1988-80", + "GB_2312-80", + "NS_4551-2", + "videotex-suppl", + "PT2", + "ES2", + "MSZ_7795.3", + "JIS_C6226-1983", + "greek7", + "ASMO_449", + "iso-ir-90", + "JIS_C6229-1984-a", + "JIS_C6229-1984-b", + "JIS_C6229-1984-b-add", + "JIS_C6229-1984-hand", + "JIS_C6229-1984-hand-add", + "JIS_C6229-1984-kana", + "ISO_2033-1983", + "ANSI_X3.110-1983", + "T.61-7bit", + "T.61-8bit", + "ECMA-cyrillic", + "CSA_Z243.4-1985-1", + "CSA_Z243.4-1985-2", + "CSA_Z243.4-1985-gr", + "\rISO-8859-6-EISO_8859-6-E", + "\rISO-8859-6-IISO_8859-6-I", + "T.101-G2", + "\rISO-8859-8-EISO_8859-8-E", + "\rISO-8859-8-IISO_8859-8-I", + "CSN_369103", + "JUS_I.B1.002", + "IEC_P27-1", + "JUS_I.B1.003-serb", + "JUS_I.B1.003-mac", + "greek-ccitt", + "NC_NC00-10:81", + "ISO_6937-2-25", + "GOST_19768-74", + "ISO_8859-supp", + "ISO_10367-box", + "latin-lap", + "JIS_X0212-1990", + "DS_2089", + "us-dk", + "dk-us", + "KSC5636", + "UNICODE-1-1-UTF-7", + "ISO-2022-CN", + "ISO-2022-CN-EXT", + "UTF-8", + "ISO-8859-13", + "ISO-8859-14", + "ISO-8859-15", + "ISO-8859-16", + "GBK", + "GB18030", + "OSD_EBCDIC_DF04_15", + "OSD_EBCDIC_DF03_IRV", + "OSD_EBCDIC_DF04_1", + "ISO-11548-1", + "KZ-1048", + "ISO-10646-UCS-2", + "ISO-10646-UCS-4", + "ISO-10646-UCS-Basic", + "ISO-10646-Unicode-Latin1", + "ISO-10646-J-1", + "ISO-Unicode-IBM-1261", + "ISO-Unicode-IBM-1268", + "ISO-Unicode-IBM-1276", + "ISO-Unicode-IBM-1264", + "ISO-Unicode-IBM-1265", + "UNICODE-1-1", + "SCSU", + "UTF-7", + "UTF-16BE", + "UTF-16LE", + "UTF-16", + "CESU-8", + "UTF-32", + "UTF-32BE", + "UTF-32LE", + "BOCU-1", + "ISO-8859-1-Windows-3.0-Latin-1", + "ISO-8859-1-Windows-3.1-Latin-1", + "ISO-8859-2-Windows-Latin-2", + "ISO-8859-9-Windows-Latin-5", + "hp-roman8", + "Adobe-Standard-Encoding", + "Ventura-US", + "Ventura-International", + "DEC-MCS", + "IBM850", + "IBM852", + "IBM437", + "PC8-Danish-Norwegian", + "IBM862", + "PC8-Turkish", + "IBM-Symbols", + "IBM-Thai", + "HP-Legal", + "HP-Pi-font", + "HP-Math8", + "Adobe-Symbol-Encoding", + "HP-DeskTop", + "Ventura-Math", + "Microsoft-Publishing", + "Windows-31J", + "GB2312", + "Big5", + "macintosh", + "IBM037", + "IBM038", + "IBM273", + "IBM274", + "IBM275", + "IBM277", + "IBM278", + "IBM280", + "IBM281", + "IBM284", + "IBM285", + "IBM290", + "IBM297", + "IBM420", + "IBM423", + "IBM424", + "IBM500", + "IBM851", + "IBM855", + "IBM857", + "IBM860", + "IBM861", + "IBM863", + "IBM864", + "IBM865", + "IBM868", + "IBM869", + "IBM870", + "IBM871", + "IBM880", + "IBM891", + "IBM903", + "IBM904", + "IBM905", + "IBM918", + "IBM1026", + "EBCDIC-AT-DE", + "EBCDIC-AT-DE-A", + "EBCDIC-CA-FR", + "EBCDIC-DK-NO", + "EBCDIC-DK-NO-A", + "EBCDIC-FI-SE", + "EBCDIC-FI-SE-A", + "EBCDIC-FR", + "EBCDIC-IT", + "EBCDIC-PT", + "EBCDIC-ES", + "EBCDIC-ES-A", + "EBCDIC-ES-S", + "EBCDIC-UK", + "EBCDIC-US", + "UNKNOWN-8BIT", + "MNEMONIC", + "MNEM", + "VISCII", + "VIQR", + "KOI8-R", + "HZ-GB-2312", + "IBM866", + "IBM775", + "KOI8-U", + "IBM00858", + "IBM00924", + "IBM01140", + "IBM01141", + "IBM01142", + "IBM01143", + "IBM01144", + "IBM01145", + "IBM01146", + "IBM01147", + "IBM01148", + "IBM01149", + "Big5-HKSCS", + "IBM1047", + "PTCP154", + "Amiga-1251", + "KOI7-switched", + "BRF", + "TSCII", + "CP51932", + "windows-874", + "windows-1250", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "TIS-620", + "CP50220", +} // Size: 7088 bytes + +var mibNames = []string{ // 257 elements + "ASCII", + "ISOLatin1", + "ISOLatin2", + "ISOLatin3", + "ISOLatin4", + "ISOLatinCyrillic", + "ISOLatinArabic", + "ISOLatinGreek", + "ISOLatinHebrew", + "ISOLatin5", + "ISOLatin6", + "ISOTextComm", + "HalfWidthKatakana", + "JISEncoding", + "ShiftJIS", + "EUCPkdFmtJapanese", + "EUCFixWidJapanese", + "ISO4UnitedKingdom", + "ISO11SwedishForNames", + "ISO15Italian", + "ISO17Spanish", + "ISO21German", + "ISO60Norwegian1", + "ISO69French", + "ISO10646UTF1", + "ISO646basic1983", + "INVARIANT", + "ISO2IntlRefVersion", + "NATSSEFI", + "NATSSEFIADD", + "NATSDANO", + "NATSDANOADD", + "ISO10Swedish", + "KSC56011987", + "ISO2022KR", + "EUCKR", + "ISO2022JP", + "ISO2022JP2", + "ISO13JISC6220jp", + "ISO14JISC6220ro", + "ISO16Portuguese", + "ISO18Greek7Old", + "ISO19LatinGreek", + "ISO25French", + "ISO27LatinGreek1", + "ISO5427Cyrillic", + "ISO42JISC62261978", + "ISO47BSViewdata", + "ISO49INIS", + "ISO50INIS8", + "ISO51INISCyrillic", + "ISO54271981", + "ISO5428Greek", + "ISO57GB1988", + "ISO58GB231280", + "ISO61Norwegian2", + "ISO70VideotexSupp1", + "ISO84Portuguese2", + "ISO85Spanish2", + "ISO86Hungarian", + "ISO87JISX0208", + "ISO88Greek7", + "ISO89ASMO449", + "ISO90", + "ISO91JISC62291984a", + "ISO92JISC62991984b", + "ISO93JIS62291984badd", + "ISO94JIS62291984hand", + "ISO95JIS62291984handadd", + "ISO96JISC62291984kana", + "ISO2033", + "ISO99NAPLPS", + "ISO102T617bit", + "ISO103T618bit", + "ISO111ECMACyrillic", + "ISO121Canadian1", + "ISO122Canadian2", + "ISO123CSAZ24341985gr", + "ISO88596E", + "ISO88596I", + "ISO128T101G2", + "ISO88598E", + "ISO88598I", + "ISO139CSN369103", + "ISO141JUSIB1002", + "ISO143IECP271", + "ISO146Serbian", + "ISO147Macedonian", + "ISO150GreekCCITT", + "ISO151Cuba", + "ISO6937Add", + "ISO153GOST1976874", + "ISO8859Supp", + "ISO10367Box", + "ISO158Lap", + "ISO159JISX02121990", + "ISO646Danish", + "USDK", + "DKUS", + "KSC5636", + "Unicode11UTF7", + "ISO2022CN", + "ISO2022CNEXT", + "UTF8", + "ISO885913", + "ISO885914", + "ISO885915", + "ISO885916", + "GBK", + "GB18030", + "OSDEBCDICDF0415", + "OSDEBCDICDF03IRV", + "OSDEBCDICDF041", + "ISO115481", + "KZ1048", + "Unicode", + "UCS4", + "UnicodeASCII", + "UnicodeLatin1", + "UnicodeJapanese", + "UnicodeIBM1261", + "UnicodeIBM1268", + "UnicodeIBM1276", + "UnicodeIBM1264", + "UnicodeIBM1265", + "Unicode11", + "SCSU", + "UTF7", + "UTF16BE", + "UTF16LE", + "UTF16", + "CESU-8", + "UTF32", + "UTF32BE", + "UTF32LE", + "BOCU-1", + "Windows30Latin1", + "Windows31Latin1", + "Windows31Latin2", + "Windows31Latin5", + "HPRoman8", + "AdobeStandardEncoding", + "VenturaUS", + "VenturaInternational", + "DECMCS", + "PC850Multilingual", + "PCp852", + "PC8CodePage437", + "PC8DanishNorwegian", + "PC862LatinHebrew", + "PC8Turkish", + "IBMSymbols", + "IBMThai", + "HPLegal", + "HPPiFont", + "HPMath8", + "HPPSMath", + "HPDesktop", + "VenturaMath", + "MicrosoftPublishing", + "Windows31J", + "GB2312", + "Big5", + "Macintosh", + "IBM037", + "IBM038", + "IBM273", + "IBM274", + "IBM275", + "IBM277", + "IBM278", + "IBM280", + "IBM281", + "IBM284", + "IBM285", + "IBM290", + "IBM297", + "IBM420", + "IBM423", + "IBM424", + "IBM500", + "IBM851", + "IBM855", + "IBM857", + "IBM860", + "IBM861", + "IBM863", + "IBM864", + "IBM865", + "IBM868", + "IBM869", + "IBM870", + "IBM871", + "IBM880", + "IBM891", + "IBM903", + "IBBM904", + "IBM905", + "IBM918", + "IBM1026", + "IBMEBCDICATDE", + "EBCDICATDEA", + "EBCDICCAFR", + "EBCDICDKNO", + "EBCDICDKNOA", + "EBCDICFISE", + "EBCDICFISEA", + "EBCDICFR", + "EBCDICIT", + "EBCDICPT", + "EBCDICES", + "EBCDICESA", + "EBCDICESS", + "EBCDICUK", + "EBCDICUS", + "Unknown8BiT", + "Mnemonic", + "Mnem", + "VISCII", + "VIQR", + "KOI8R", + "HZ-GB-2312", + "IBM866", + "PC775Baltic", + "KOI8U", + "IBM00858", + "IBM00924", + "IBM01140", + "IBM01141", + "IBM01142", + "IBM01143", + "IBM01144", + "IBM01145", + "IBM01146", + "IBM01147", + "IBM01148", + "IBM01149", + "Big5HKSCS", + "IBM1047", + "PTCP154", + "Amiga1251\n(Aliases", + "KOI7switched", + "BRF", + "TSCII", + "CP51932", + "windows874", + "windows1250", + "windows1251", + "windows1252", + "windows1253", + "windows1254", + "windows1255", + "windows1256", + "windows1257", + "windows1258", + "TIS620", + "CP50220", +} // Size: 6776 bytes + +// TODO: Instead of using a map, we could use binary search strings doing +// on-the fly lower-casing per character. This allows to always avoid +// allocation and will be considerably more compact. +var ianaAliases = map[string]int{ + "US-ASCII": enc3, + "us-ascii": enc3, + "iso-ir-6": enc3, + "ANSI_X3.4-1968": enc3, + "ansi_x3.4-1968": enc3, + "ANSI_X3.4-1986": enc3, + "ansi_x3.4-1986": enc3, + "ISO_646.irv:1991": enc3, + "iso_646.irv:1991": enc3, + "ISO646-US": enc3, + "iso646-us": enc3, + "us": enc3, + "IBM367": enc3, + "ibm367": enc3, + "cp367": enc3, + "csASCII": enc3, + "csascii": enc3, + "ISO_8859-1:1987": enc4, + "iso_8859-1:1987": enc4, + "iso-ir-100": enc4, + "ISO_8859-1": enc4, + "iso_8859-1": enc4, + "ISO-8859-1": enc4, + "iso-8859-1": enc4, + "latin1": enc4, + "l1": enc4, + "IBM819": enc4, + "ibm819": enc4, + "CP819": enc4, + "cp819": enc4, + "csISOLatin1": enc4, + "csisolatin1": enc4, + "ISO_8859-2:1987": enc5, + "iso_8859-2:1987": enc5, + "iso-ir-101": enc5, + "ISO_8859-2": enc5, + "iso_8859-2": enc5, + "ISO-8859-2": enc5, + "iso-8859-2": enc5, + "latin2": enc5, + "l2": enc5, + "csISOLatin2": enc5, + "csisolatin2": enc5, + "ISO_8859-3:1988": enc6, + "iso_8859-3:1988": enc6, + "iso-ir-109": enc6, + "ISO_8859-3": enc6, + "iso_8859-3": enc6, + "ISO-8859-3": enc6, + "iso-8859-3": enc6, + "latin3": enc6, + "l3": enc6, + "csISOLatin3": enc6, + "csisolatin3": enc6, + "ISO_8859-4:1988": enc7, + "iso_8859-4:1988": enc7, + "iso-ir-110": enc7, + "ISO_8859-4": enc7, + "iso_8859-4": enc7, + "ISO-8859-4": enc7, + "iso-8859-4": enc7, + "latin4": enc7, + "l4": enc7, + "csISOLatin4": enc7, + "csisolatin4": enc7, + "ISO_8859-5:1988": enc8, + "iso_8859-5:1988": enc8, + "iso-ir-144": enc8, + "ISO_8859-5": enc8, + "iso_8859-5": enc8, + "ISO-8859-5": enc8, + "iso-8859-5": enc8, + "cyrillic": enc8, + "csISOLatinCyrillic": enc8, + "csisolatincyrillic": enc8, + "ISO_8859-6:1987": enc9, + "iso_8859-6:1987": enc9, + "iso-ir-127": enc9, + "ISO_8859-6": enc9, + "iso_8859-6": enc9, + "ISO-8859-6": enc9, + "iso-8859-6": enc9, + "ECMA-114": enc9, + "ecma-114": enc9, + "ASMO-708": enc9, + "asmo-708": enc9, + "arabic": enc9, + "csISOLatinArabic": enc9, + "csisolatinarabic": enc9, + "ISO_8859-7:1987": enc10, + "iso_8859-7:1987": enc10, + "iso-ir-126": enc10, + "ISO_8859-7": enc10, + "iso_8859-7": enc10, + "ISO-8859-7": enc10, + "iso-8859-7": enc10, + "ELOT_928": enc10, + "elot_928": enc10, + "ECMA-118": enc10, + "ecma-118": enc10, + "greek": enc10, + "greek8": enc10, + "csISOLatinGreek": enc10, + "csisolatingreek": enc10, + "ISO_8859-8:1988": enc11, + "iso_8859-8:1988": enc11, + "iso-ir-138": enc11, + "ISO_8859-8": enc11, + "iso_8859-8": enc11, + "ISO-8859-8": enc11, + "iso-8859-8": enc11, + "hebrew": enc11, + "csISOLatinHebrew": enc11, + "csisolatinhebrew": enc11, + "ISO_8859-9:1989": enc12, + "iso_8859-9:1989": enc12, + "iso-ir-148": enc12, + "ISO_8859-9": enc12, + "iso_8859-9": enc12, + "ISO-8859-9": enc12, + "iso-8859-9": enc12, + "latin5": enc12, + "l5": enc12, + "csISOLatin5": enc12, + "csisolatin5": enc12, + "ISO-8859-10": enc13, + "iso-8859-10": enc13, + "iso-ir-157": enc13, + "l6": enc13, + "ISO_8859-10:1992": enc13, + "iso_8859-10:1992": enc13, + "csISOLatin6": enc13, + "csisolatin6": enc13, + "latin6": enc13, + "ISO_6937-2-add": enc14, + "iso_6937-2-add": enc14, + "iso-ir-142": enc14, + "csISOTextComm": enc14, + "csisotextcomm": enc14, + "JIS_X0201": enc15, + "jis_x0201": enc15, + "X0201": enc15, + "x0201": enc15, + "csHalfWidthKatakana": enc15, + "cshalfwidthkatakana": enc15, + "JIS_Encoding": enc16, + "jis_encoding": enc16, + "csJISEncoding": enc16, + "csjisencoding": enc16, + "Shift_JIS": enc17, + "shift_jis": enc17, + "MS_Kanji": enc17, + "ms_kanji": enc17, + "csShiftJIS": enc17, + "csshiftjis": enc17, + "Extended_UNIX_Code_Packed_Format_for_Japanese": enc18, + "extended_unix_code_packed_format_for_japanese": enc18, + "csEUCPkdFmtJapanese": enc18, + "cseucpkdfmtjapanese": enc18, + "EUC-JP": enc18, + "euc-jp": enc18, + "Extended_UNIX_Code_Fixed_Width_for_Japanese": enc19, + "extended_unix_code_fixed_width_for_japanese": enc19, + "csEUCFixWidJapanese": enc19, + "cseucfixwidjapanese": enc19, + "BS_4730": enc20, + "bs_4730": enc20, + "iso-ir-4": enc20, + "ISO646-GB": enc20, + "iso646-gb": enc20, + "gb": enc20, + "uk": enc20, + "csISO4UnitedKingdom": enc20, + "csiso4unitedkingdom": enc20, + "SEN_850200_C": enc21, + "sen_850200_c": enc21, + "iso-ir-11": enc21, + "ISO646-SE2": enc21, + "iso646-se2": enc21, + "se2": enc21, + "csISO11SwedishForNames": enc21, + "csiso11swedishfornames": enc21, + "IT": enc22, + "it": enc22, + "iso-ir-15": enc22, + "ISO646-IT": enc22, + "iso646-it": enc22, + "csISO15Italian": enc22, + "csiso15italian": enc22, + "ES": enc23, + "es": enc23, + "iso-ir-17": enc23, + "ISO646-ES": enc23, + "iso646-es": enc23, + "csISO17Spanish": enc23, + "csiso17spanish": enc23, + "DIN_66003": enc24, + "din_66003": enc24, + "iso-ir-21": enc24, + "de": enc24, + "ISO646-DE": enc24, + "iso646-de": enc24, + "csISO21German": enc24, + "csiso21german": enc24, + "NS_4551-1": enc25, + "ns_4551-1": enc25, + "iso-ir-60": enc25, + "ISO646-NO": enc25, + "iso646-no": enc25, + "no": enc25, + "csISO60DanishNorwegian": enc25, + "csiso60danishnorwegian": enc25, + "csISO60Norwegian1": enc25, + "csiso60norwegian1": enc25, + "NF_Z_62-010": enc26, + "nf_z_62-010": enc26, + "iso-ir-69": enc26, + "ISO646-FR": enc26, + "iso646-fr": enc26, + "fr": enc26, + "csISO69French": enc26, + "csiso69french": enc26, + "ISO-10646-UTF-1": enc27, + "iso-10646-utf-1": enc27, + "csISO10646UTF1": enc27, + "csiso10646utf1": enc27, + "ISO_646.basic:1983": enc28, + "iso_646.basic:1983": enc28, + "ref": enc28, + "csISO646basic1983": enc28, + "csiso646basic1983": enc28, + "INVARIANT": enc29, + "invariant": enc29, + "csINVARIANT": enc29, + "csinvariant": enc29, + "ISO_646.irv:1983": enc30, + "iso_646.irv:1983": enc30, + "iso-ir-2": enc30, + "irv": enc30, + "csISO2IntlRefVersion": enc30, + "csiso2intlrefversion": enc30, + "NATS-SEFI": enc31, + "nats-sefi": enc31, + "iso-ir-8-1": enc31, + "csNATSSEFI": enc31, + "csnatssefi": enc31, + "NATS-SEFI-ADD": enc32, + "nats-sefi-add": enc32, + "iso-ir-8-2": enc32, + "csNATSSEFIADD": enc32, + "csnatssefiadd": enc32, + "NATS-DANO": enc33, + "nats-dano": enc33, + "iso-ir-9-1": enc33, + "csNATSDANO": enc33, + "csnatsdano": enc33, + "NATS-DANO-ADD": enc34, + "nats-dano-add": enc34, + "iso-ir-9-2": enc34, + "csNATSDANOADD": enc34, + "csnatsdanoadd": enc34, + "SEN_850200_B": enc35, + "sen_850200_b": enc35, + "iso-ir-10": enc35, + "FI": enc35, + "fi": enc35, + "ISO646-FI": enc35, + "iso646-fi": enc35, + "ISO646-SE": enc35, + "iso646-se": enc35, + "se": enc35, + "csISO10Swedish": enc35, + "csiso10swedish": enc35, + "KS_C_5601-1987": enc36, + "ks_c_5601-1987": enc36, + "iso-ir-149": enc36, + "KS_C_5601-1989": enc36, + "ks_c_5601-1989": enc36, + "KSC_5601": enc36, + "ksc_5601": enc36, + "korean": enc36, + "csKSC56011987": enc36, + "csksc56011987": enc36, + "ISO-2022-KR": enc37, + "iso-2022-kr": enc37, + "csISO2022KR": enc37, + "csiso2022kr": enc37, + "EUC-KR": enc38, + "euc-kr": enc38, + "csEUCKR": enc38, + "cseuckr": enc38, + "ISO-2022-JP": enc39, + "iso-2022-jp": enc39, + "csISO2022JP": enc39, + "csiso2022jp": enc39, + "ISO-2022-JP-2": enc40, + "iso-2022-jp-2": enc40, + "csISO2022JP2": enc40, + "csiso2022jp2": enc40, + "JIS_C6220-1969-jp": enc41, + "jis_c6220-1969-jp": enc41, + "JIS_C6220-1969": enc41, + "jis_c6220-1969": enc41, + "iso-ir-13": enc41, + "katakana": enc41, + "x0201-7": enc41, + "csISO13JISC6220jp": enc41, + "csiso13jisc6220jp": enc41, + "JIS_C6220-1969-ro": enc42, + "jis_c6220-1969-ro": enc42, + "iso-ir-14": enc42, + "jp": enc42, + "ISO646-JP": enc42, + "iso646-jp": enc42, + "csISO14JISC6220ro": enc42, + "csiso14jisc6220ro": enc42, + "PT": enc43, + "pt": enc43, + "iso-ir-16": enc43, + "ISO646-PT": enc43, + "iso646-pt": enc43, + "csISO16Portuguese": enc43, + "csiso16portuguese": enc43, + "greek7-old": enc44, + "iso-ir-18": enc44, + "csISO18Greek7Old": enc44, + "csiso18greek7old": enc44, + "latin-greek": enc45, + "iso-ir-19": enc45, + "csISO19LatinGreek": enc45, + "csiso19latingreek": enc45, + "NF_Z_62-010_(1973)": enc46, + "nf_z_62-010_(1973)": enc46, + "iso-ir-25": enc46, + "ISO646-FR1": enc46, + "iso646-fr1": enc46, + "csISO25French": enc46, + "csiso25french": enc46, + "Latin-greek-1": enc47, + "latin-greek-1": enc47, + "iso-ir-27": enc47, + "csISO27LatinGreek1": enc47, + "csiso27latingreek1": enc47, + "ISO_5427": enc48, + "iso_5427": enc48, + "iso-ir-37": enc48, + "csISO5427Cyrillic": enc48, + "csiso5427cyrillic": enc48, + "JIS_C6226-1978": enc49, + "jis_c6226-1978": enc49, + "iso-ir-42": enc49, + "csISO42JISC62261978": enc49, + "csiso42jisc62261978": enc49, + "BS_viewdata": enc50, + "bs_viewdata": enc50, + "iso-ir-47": enc50, + "csISO47BSViewdata": enc50, + "csiso47bsviewdata": enc50, + "INIS": enc51, + "inis": enc51, + "iso-ir-49": enc51, + "csISO49INIS": enc51, + "csiso49inis": enc51, + "INIS-8": enc52, + "inis-8": enc52, + "iso-ir-50": enc52, + "csISO50INIS8": enc52, + "csiso50inis8": enc52, + "INIS-cyrillic": enc53, + "inis-cyrillic": enc53, + "iso-ir-51": enc53, + "csISO51INISCyrillic": enc53, + "csiso51iniscyrillic": enc53, + "ISO_5427:1981": enc54, + "iso_5427:1981": enc54, + "iso-ir-54": enc54, + "ISO5427Cyrillic1981": enc54, + "iso5427cyrillic1981": enc54, + "csISO54271981": enc54, + "csiso54271981": enc54, + "ISO_5428:1980": enc55, + "iso_5428:1980": enc55, + "iso-ir-55": enc55, + "csISO5428Greek": enc55, + "csiso5428greek": enc55, + "GB_1988-80": enc56, + "gb_1988-80": enc56, + "iso-ir-57": enc56, + "cn": enc56, + "ISO646-CN": enc56, + "iso646-cn": enc56, + "csISO57GB1988": enc56, + "csiso57gb1988": enc56, + "GB_2312-80": enc57, + "gb_2312-80": enc57, + "iso-ir-58": enc57, + "chinese": enc57, + "csISO58GB231280": enc57, + "csiso58gb231280": enc57, + "NS_4551-2": enc58, + "ns_4551-2": enc58, + "ISO646-NO2": enc58, + "iso646-no2": enc58, + "iso-ir-61": enc58, + "no2": enc58, + "csISO61Norwegian2": enc58, + "csiso61norwegian2": enc58, + "videotex-suppl": enc59, + "iso-ir-70": enc59, + "csISO70VideotexSupp1": enc59, + "csiso70videotexsupp1": enc59, + "PT2": enc60, + "pt2": enc60, + "iso-ir-84": enc60, + "ISO646-PT2": enc60, + "iso646-pt2": enc60, + "csISO84Portuguese2": enc60, + "csiso84portuguese2": enc60, + "ES2": enc61, + "es2": enc61, + "iso-ir-85": enc61, + "ISO646-ES2": enc61, + "iso646-es2": enc61, + "csISO85Spanish2": enc61, + "csiso85spanish2": enc61, + "MSZ_7795.3": enc62, + "msz_7795.3": enc62, + "iso-ir-86": enc62, + "ISO646-HU": enc62, + "iso646-hu": enc62, + "hu": enc62, + "csISO86Hungarian": enc62, + "csiso86hungarian": enc62, + "JIS_C6226-1983": enc63, + "jis_c6226-1983": enc63, + "iso-ir-87": enc63, + "x0208": enc63, + "JIS_X0208-1983": enc63, + "jis_x0208-1983": enc63, + "csISO87JISX0208": enc63, + "csiso87jisx0208": enc63, + "greek7": enc64, + "iso-ir-88": enc64, + "csISO88Greek7": enc64, + "csiso88greek7": enc64, + "ASMO_449": enc65, + "asmo_449": enc65, + "ISO_9036": enc65, + "iso_9036": enc65, + "arabic7": enc65, + "iso-ir-89": enc65, + "csISO89ASMO449": enc65, + "csiso89asmo449": enc65, + "iso-ir-90": enc66, + "csISO90": enc66, + "csiso90": enc66, + "JIS_C6229-1984-a": enc67, + "jis_c6229-1984-a": enc67, + "iso-ir-91": enc67, + "jp-ocr-a": enc67, + "csISO91JISC62291984a": enc67, + "csiso91jisc62291984a": enc67, + "JIS_C6229-1984-b": enc68, + "jis_c6229-1984-b": enc68, + "iso-ir-92": enc68, + "ISO646-JP-OCR-B": enc68, + "iso646-jp-ocr-b": enc68, + "jp-ocr-b": enc68, + "csISO92JISC62991984b": enc68, + "csiso92jisc62991984b": enc68, + "JIS_C6229-1984-b-add": enc69, + "jis_c6229-1984-b-add": enc69, + "iso-ir-93": enc69, + "jp-ocr-b-add": enc69, + "csISO93JIS62291984badd": enc69, + "csiso93jis62291984badd": enc69, + "JIS_C6229-1984-hand": enc70, + "jis_c6229-1984-hand": enc70, + "iso-ir-94": enc70, + "jp-ocr-hand": enc70, + "csISO94JIS62291984hand": enc70, + "csiso94jis62291984hand": enc70, + "JIS_C6229-1984-hand-add": enc71, + "jis_c6229-1984-hand-add": enc71, + "iso-ir-95": enc71, + "jp-ocr-hand-add": enc71, + "csISO95JIS62291984handadd": enc71, + "csiso95jis62291984handadd": enc71, + "JIS_C6229-1984-kana": enc72, + "jis_c6229-1984-kana": enc72, + "iso-ir-96": enc72, + "csISO96JISC62291984kana": enc72, + "csiso96jisc62291984kana": enc72, + "ISO_2033-1983": enc73, + "iso_2033-1983": enc73, + "iso-ir-98": enc73, + "e13b": enc73, + "csISO2033": enc73, + "csiso2033": enc73, + "ANSI_X3.110-1983": enc74, + "ansi_x3.110-1983": enc74, + "iso-ir-99": enc74, + "CSA_T500-1983": enc74, + "csa_t500-1983": enc74, + "NAPLPS": enc74, + "naplps": enc74, + "csISO99NAPLPS": enc74, + "csiso99naplps": enc74, + "T.61-7bit": enc75, + "t.61-7bit": enc75, + "iso-ir-102": enc75, + "csISO102T617bit": enc75, + "csiso102t617bit": enc75, + "T.61-8bit": enc76, + "t.61-8bit": enc76, + "T.61": enc76, + "t.61": enc76, + "iso-ir-103": enc76, + "csISO103T618bit": enc76, + "csiso103t618bit": enc76, + "ECMA-cyrillic": enc77, + "ecma-cyrillic": enc77, + "iso-ir-111": enc77, + "KOI8-E": enc77, + "koi8-e": enc77, + "csISO111ECMACyrillic": enc77, + "csiso111ecmacyrillic": enc77, + "CSA_Z243.4-1985-1": enc78, + "csa_z243.4-1985-1": enc78, + "iso-ir-121": enc78, + "ISO646-CA": enc78, + "iso646-ca": enc78, + "csa7-1": enc78, + "csa71": enc78, + "ca": enc78, + "csISO121Canadian1": enc78, + "csiso121canadian1": enc78, + "CSA_Z243.4-1985-2": enc79, + "csa_z243.4-1985-2": enc79, + "iso-ir-122": enc79, + "ISO646-CA2": enc79, + "iso646-ca2": enc79, + "csa7-2": enc79, + "csa72": enc79, + "csISO122Canadian2": enc79, + "csiso122canadian2": enc79, + "CSA_Z243.4-1985-gr": enc80, + "csa_z243.4-1985-gr": enc80, + "iso-ir-123": enc80, + "csISO123CSAZ24341985gr": enc80, + "csiso123csaz24341985gr": enc80, + "ISO_8859-6-E": enc81, + "iso_8859-6-e": enc81, + "csISO88596E": enc81, + "csiso88596e": enc81, + "ISO-8859-6-E": enc81, + "iso-8859-6-e": enc81, + "ISO_8859-6-I": enc82, + "iso_8859-6-i": enc82, + "csISO88596I": enc82, + "csiso88596i": enc82, + "ISO-8859-6-I": enc82, + "iso-8859-6-i": enc82, + "T.101-G2": enc83, + "t.101-g2": enc83, + "iso-ir-128": enc83, + "csISO128T101G2": enc83, + "csiso128t101g2": enc83, + "ISO_8859-8-E": enc84, + "iso_8859-8-e": enc84, + "csISO88598E": enc84, + "csiso88598e": enc84, + "ISO-8859-8-E": enc84, + "iso-8859-8-e": enc84, + "ISO_8859-8-I": enc85, + "iso_8859-8-i": enc85, + "csISO88598I": enc85, + "csiso88598i": enc85, + "ISO-8859-8-I": enc85, + "iso-8859-8-i": enc85, + "CSN_369103": enc86, + "csn_369103": enc86, + "iso-ir-139": enc86, + "csISO139CSN369103": enc86, + "csiso139csn369103": enc86, + "JUS_I.B1.002": enc87, + "jus_i.b1.002": enc87, + "iso-ir-141": enc87, + "ISO646-YU": enc87, + "iso646-yu": enc87, + "js": enc87, + "yu": enc87, + "csISO141JUSIB1002": enc87, + "csiso141jusib1002": enc87, + "IEC_P27-1": enc88, + "iec_p27-1": enc88, + "iso-ir-143": enc88, + "csISO143IECP271": enc88, + "csiso143iecp271": enc88, + "JUS_I.B1.003-serb": enc89, + "jus_i.b1.003-serb": enc89, + "iso-ir-146": enc89, + "serbian": enc89, + "csISO146Serbian": enc89, + "csiso146serbian": enc89, + "JUS_I.B1.003-mac": enc90, + "jus_i.b1.003-mac": enc90, + "macedonian": enc90, + "iso-ir-147": enc90, + "csISO147Macedonian": enc90, + "csiso147macedonian": enc90, + "greek-ccitt": enc91, + "iso-ir-150": enc91, + "csISO150": enc91, + "csiso150": enc91, + "csISO150GreekCCITT": enc91, + "csiso150greekccitt": enc91, + "NC_NC00-10:81": enc92, + "nc_nc00-10:81": enc92, + "cuba": enc92, + "iso-ir-151": enc92, + "ISO646-CU": enc92, + "iso646-cu": enc92, + "csISO151Cuba": enc92, + "csiso151cuba": enc92, + "ISO_6937-2-25": enc93, + "iso_6937-2-25": enc93, + "iso-ir-152": enc93, + "csISO6937Add": enc93, + "csiso6937add": enc93, + "GOST_19768-74": enc94, + "gost_19768-74": enc94, + "ST_SEV_358-88": enc94, + "st_sev_358-88": enc94, + "iso-ir-153": enc94, + "csISO153GOST1976874": enc94, + "csiso153gost1976874": enc94, + "ISO_8859-supp": enc95, + "iso_8859-supp": enc95, + "iso-ir-154": enc95, + "latin1-2-5": enc95, + "csISO8859Supp": enc95, + "csiso8859supp": enc95, + "ISO_10367-box": enc96, + "iso_10367-box": enc96, + "iso-ir-155": enc96, + "csISO10367Box": enc96, + "csiso10367box": enc96, + "latin-lap": enc97, + "lap": enc97, + "iso-ir-158": enc97, + "csISO158Lap": enc97, + "csiso158lap": enc97, + "JIS_X0212-1990": enc98, + "jis_x0212-1990": enc98, + "x0212": enc98, + "iso-ir-159": enc98, + "csISO159JISX02121990": enc98, + "csiso159jisx02121990": enc98, + "DS_2089": enc99, + "ds_2089": enc99, + "DS2089": enc99, + "ds2089": enc99, + "ISO646-DK": enc99, + "iso646-dk": enc99, + "dk": enc99, + "csISO646Danish": enc99, + "csiso646danish": enc99, + "us-dk": enc100, + "csUSDK": enc100, + "csusdk": enc100, + "dk-us": enc101, + "csDKUS": enc101, + "csdkus": enc101, + "KSC5636": enc102, + "ksc5636": enc102, + "ISO646-KR": enc102, + "iso646-kr": enc102, + "csKSC5636": enc102, + "csksc5636": enc102, + "UNICODE-1-1-UTF-7": enc103, + "unicode-1-1-utf-7": enc103, + "csUnicode11UTF7": enc103, + "csunicode11utf7": enc103, + "ISO-2022-CN": enc104, + "iso-2022-cn": enc104, + "csISO2022CN": enc104, + "csiso2022cn": enc104, + "ISO-2022-CN-EXT": enc105, + "iso-2022-cn-ext": enc105, + "csISO2022CNEXT": enc105, + "csiso2022cnext": enc105, + "UTF-8": enc106, + "utf-8": enc106, + "csUTF8": enc106, + "csutf8": enc106, + "ISO-8859-13": enc109, + "iso-8859-13": enc109, + "csISO885913": enc109, + "csiso885913": enc109, + "ISO-8859-14": enc110, + "iso-8859-14": enc110, + "iso-ir-199": enc110, + "ISO_8859-14:1998": enc110, + "iso_8859-14:1998": enc110, + "ISO_8859-14": enc110, + "iso_8859-14": enc110, + "latin8": enc110, + "iso-celtic": enc110, + "l8": enc110, + "csISO885914": enc110, + "csiso885914": enc110, + "ISO-8859-15": enc111, + "iso-8859-15": enc111, + "ISO_8859-15": enc111, + "iso_8859-15": enc111, + "Latin-9": enc111, + "latin-9": enc111, + "csISO885915": enc111, + "csiso885915": enc111, + "ISO-8859-16": enc112, + "iso-8859-16": enc112, + "iso-ir-226": enc112, + "ISO_8859-16:2001": enc112, + "iso_8859-16:2001": enc112, + "ISO_8859-16": enc112, + "iso_8859-16": enc112, + "latin10": enc112, + "l10": enc112, + "csISO885916": enc112, + "csiso885916": enc112, + "GBK": enc113, + "gbk": enc113, + "CP936": enc113, + "cp936": enc113, + "MS936": enc113, + "ms936": enc113, + "windows-936": enc113, + "csGBK": enc113, + "csgbk": enc113, + "GB18030": enc114, + "gb18030": enc114, + "csGB18030": enc114, + "csgb18030": enc114, + "OSD_EBCDIC_DF04_15": enc115, + "osd_ebcdic_df04_15": enc115, + "csOSDEBCDICDF0415": enc115, + "csosdebcdicdf0415": enc115, + "OSD_EBCDIC_DF03_IRV": enc116, + "osd_ebcdic_df03_irv": enc116, + "csOSDEBCDICDF03IRV": enc116, + "csosdebcdicdf03irv": enc116, + "OSD_EBCDIC_DF04_1": enc117, + "osd_ebcdic_df04_1": enc117, + "csOSDEBCDICDF041": enc117, + "csosdebcdicdf041": enc117, + "ISO-11548-1": enc118, + "iso-11548-1": enc118, + "ISO_11548-1": enc118, + "iso_11548-1": enc118, + "ISO_TR_11548-1": enc118, + "iso_tr_11548-1": enc118, + "csISO115481": enc118, + "csiso115481": enc118, + "KZ-1048": enc119, + "kz-1048": enc119, + "STRK1048-2002": enc119, + "strk1048-2002": enc119, + "RK1048": enc119, + "rk1048": enc119, + "csKZ1048": enc119, + "cskz1048": enc119, + "ISO-10646-UCS-2": enc1000, + "iso-10646-ucs-2": enc1000, + "csUnicode": enc1000, + "csunicode": enc1000, + "ISO-10646-UCS-4": enc1001, + "iso-10646-ucs-4": enc1001, + "csUCS4": enc1001, + "csucs4": enc1001, + "ISO-10646-UCS-Basic": enc1002, + "iso-10646-ucs-basic": enc1002, + "csUnicodeASCII": enc1002, + "csunicodeascii": enc1002, + "ISO-10646-Unicode-Latin1": enc1003, + "iso-10646-unicode-latin1": enc1003, + "csUnicodeLatin1": enc1003, + "csunicodelatin1": enc1003, + "ISO-10646": enc1003, + "iso-10646": enc1003, + "ISO-10646-J-1": enc1004, + "iso-10646-j-1": enc1004, + "csUnicodeJapanese": enc1004, + "csunicodejapanese": enc1004, + "ISO-Unicode-IBM-1261": enc1005, + "iso-unicode-ibm-1261": enc1005, + "csUnicodeIBM1261": enc1005, + "csunicodeibm1261": enc1005, + "ISO-Unicode-IBM-1268": enc1006, + "iso-unicode-ibm-1268": enc1006, + "csUnicodeIBM1268": enc1006, + "csunicodeibm1268": enc1006, + "ISO-Unicode-IBM-1276": enc1007, + "iso-unicode-ibm-1276": enc1007, + "csUnicodeIBM1276": enc1007, + "csunicodeibm1276": enc1007, + "ISO-Unicode-IBM-1264": enc1008, + "iso-unicode-ibm-1264": enc1008, + "csUnicodeIBM1264": enc1008, + "csunicodeibm1264": enc1008, + "ISO-Unicode-IBM-1265": enc1009, + "iso-unicode-ibm-1265": enc1009, + "csUnicodeIBM1265": enc1009, + "csunicodeibm1265": enc1009, + "UNICODE-1-1": enc1010, + "unicode-1-1": enc1010, + "csUnicode11": enc1010, + "csunicode11": enc1010, + "SCSU": enc1011, + "scsu": enc1011, + "csSCSU": enc1011, + "csscsu": enc1011, + "UTF-7": enc1012, + "utf-7": enc1012, + "csUTF7": enc1012, + "csutf7": enc1012, + "UTF-16BE": enc1013, + "utf-16be": enc1013, + "csUTF16BE": enc1013, + "csutf16be": enc1013, + "UTF-16LE": enc1014, + "utf-16le": enc1014, + "csUTF16LE": enc1014, + "csutf16le": enc1014, + "UTF-16": enc1015, + "utf-16": enc1015, + "csUTF16": enc1015, + "csutf16": enc1015, + "CESU-8": enc1016, + "cesu-8": enc1016, + "csCESU8": enc1016, + "cscesu8": enc1016, + "csCESU-8": enc1016, + "cscesu-8": enc1016, + "UTF-32": enc1017, + "utf-32": enc1017, + "csUTF32": enc1017, + "csutf32": enc1017, + "UTF-32BE": enc1018, + "utf-32be": enc1018, + "csUTF32BE": enc1018, + "csutf32be": enc1018, + "UTF-32LE": enc1019, + "utf-32le": enc1019, + "csUTF32LE": enc1019, + "csutf32le": enc1019, + "BOCU-1": enc1020, + "bocu-1": enc1020, + "csBOCU1": enc1020, + "csbocu1": enc1020, + "csBOCU-1": enc1020, + "csbocu-1": enc1020, + "ISO-8859-1-Windows-3.0-Latin-1": enc2000, + "iso-8859-1-windows-3.0-latin-1": enc2000, + "csWindows30Latin1": enc2000, + "cswindows30latin1": enc2000, + "ISO-8859-1-Windows-3.1-Latin-1": enc2001, + "iso-8859-1-windows-3.1-latin-1": enc2001, + "csWindows31Latin1": enc2001, + "cswindows31latin1": enc2001, + "ISO-8859-2-Windows-Latin-2": enc2002, + "iso-8859-2-windows-latin-2": enc2002, + "csWindows31Latin2": enc2002, + "cswindows31latin2": enc2002, + "ISO-8859-9-Windows-Latin-5": enc2003, + "iso-8859-9-windows-latin-5": enc2003, + "csWindows31Latin5": enc2003, + "cswindows31latin5": enc2003, + "hp-roman8": enc2004, + "roman8": enc2004, + "r8": enc2004, + "csHPRoman8": enc2004, + "cshproman8": enc2004, + "Adobe-Standard-Encoding": enc2005, + "adobe-standard-encoding": enc2005, + "csAdobeStandardEncoding": enc2005, + "csadobestandardencoding": enc2005, + "Ventura-US": enc2006, + "ventura-us": enc2006, + "csVenturaUS": enc2006, + "csventuraus": enc2006, + "Ventura-International": enc2007, + "ventura-international": enc2007, + "csVenturaInternational": enc2007, + "csventurainternational": enc2007, + "DEC-MCS": enc2008, + "dec-mcs": enc2008, + "dec": enc2008, + "csDECMCS": enc2008, + "csdecmcs": enc2008, + "IBM850": enc2009, + "ibm850": enc2009, + "cp850": enc2009, + "850": enc2009, + "csPC850Multilingual": enc2009, + "cspc850multilingual": enc2009, + "PC8-Danish-Norwegian": enc2012, + "pc8-danish-norwegian": enc2012, + "csPC8DanishNorwegian": enc2012, + "cspc8danishnorwegian": enc2012, + "IBM862": enc2013, + "ibm862": enc2013, + "cp862": enc2013, + "862": enc2013, + "csPC862LatinHebrew": enc2013, + "cspc862latinhebrew": enc2013, + "PC8-Turkish": enc2014, + "pc8-turkish": enc2014, + "csPC8Turkish": enc2014, + "cspc8turkish": enc2014, + "IBM-Symbols": enc2015, + "ibm-symbols": enc2015, + "csIBMSymbols": enc2015, + "csibmsymbols": enc2015, + "IBM-Thai": enc2016, + "ibm-thai": enc2016, + "csIBMThai": enc2016, + "csibmthai": enc2016, + "HP-Legal": enc2017, + "hp-legal": enc2017, + "csHPLegal": enc2017, + "cshplegal": enc2017, + "HP-Pi-font": enc2018, + "hp-pi-font": enc2018, + "csHPPiFont": enc2018, + "cshppifont": enc2018, + "HP-Math8": enc2019, + "hp-math8": enc2019, + "csHPMath8": enc2019, + "cshpmath8": enc2019, + "Adobe-Symbol-Encoding": enc2020, + "adobe-symbol-encoding": enc2020, + "csHPPSMath": enc2020, + "cshppsmath": enc2020, + "HP-DeskTop": enc2021, + "hp-desktop": enc2021, + "csHPDesktop": enc2021, + "cshpdesktop": enc2021, + "Ventura-Math": enc2022, + "ventura-math": enc2022, + "csVenturaMath": enc2022, + "csventuramath": enc2022, + "Microsoft-Publishing": enc2023, + "microsoft-publishing": enc2023, + "csMicrosoftPublishing": enc2023, + "csmicrosoftpublishing": enc2023, + "Windows-31J": enc2024, + "windows-31j": enc2024, + "csWindows31J": enc2024, + "cswindows31j": enc2024, + "GB2312": enc2025, + "gb2312": enc2025, + "csGB2312": enc2025, + "csgb2312": enc2025, + "Big5": enc2026, + "big5": enc2026, + "csBig5": enc2026, + "csbig5": enc2026, + "macintosh": enc2027, + "mac": enc2027, + "csMacintosh": enc2027, + "csmacintosh": enc2027, + "IBM037": enc2028, + "ibm037": enc2028, + "cp037": enc2028, + "ebcdic-cp-us": enc2028, + "ebcdic-cp-ca": enc2028, + "ebcdic-cp-wt": enc2028, + "ebcdic-cp-nl": enc2028, + "csIBM037": enc2028, + "csibm037": enc2028, + "IBM038": enc2029, + "ibm038": enc2029, + "EBCDIC-INT": enc2029, + "ebcdic-int": enc2029, + "cp038": enc2029, + "csIBM038": enc2029, + "csibm038": enc2029, + "IBM273": enc2030, + "ibm273": enc2030, + "CP273": enc2030, + "cp273": enc2030, + "csIBM273": enc2030, + "csibm273": enc2030, + "IBM274": enc2031, + "ibm274": enc2031, + "EBCDIC-BE": enc2031, + "ebcdic-be": enc2031, + "CP274": enc2031, + "cp274": enc2031, + "csIBM274": enc2031, + "csibm274": enc2031, + "IBM275": enc2032, + "ibm275": enc2032, + "EBCDIC-BR": enc2032, + "ebcdic-br": enc2032, + "cp275": enc2032, + "csIBM275": enc2032, + "csibm275": enc2032, + "IBM277": enc2033, + "ibm277": enc2033, + "EBCDIC-CP-DK": enc2033, + "ebcdic-cp-dk": enc2033, + "EBCDIC-CP-NO": enc2033, + "ebcdic-cp-no": enc2033, + "csIBM277": enc2033, + "csibm277": enc2033, + "IBM278": enc2034, + "ibm278": enc2034, + "CP278": enc2034, + "cp278": enc2034, + "ebcdic-cp-fi": enc2034, + "ebcdic-cp-se": enc2034, + "csIBM278": enc2034, + "csibm278": enc2034, + "IBM280": enc2035, + "ibm280": enc2035, + "CP280": enc2035, + "cp280": enc2035, + "ebcdic-cp-it": enc2035, + "csIBM280": enc2035, + "csibm280": enc2035, + "IBM281": enc2036, + "ibm281": enc2036, + "EBCDIC-JP-E": enc2036, + "ebcdic-jp-e": enc2036, + "cp281": enc2036, + "csIBM281": enc2036, + "csibm281": enc2036, + "IBM284": enc2037, + "ibm284": enc2037, + "CP284": enc2037, + "cp284": enc2037, + "ebcdic-cp-es": enc2037, + "csIBM284": enc2037, + "csibm284": enc2037, + "IBM285": enc2038, + "ibm285": enc2038, + "CP285": enc2038, + "cp285": enc2038, + "ebcdic-cp-gb": enc2038, + "csIBM285": enc2038, + "csibm285": enc2038, + "IBM290": enc2039, + "ibm290": enc2039, + "cp290": enc2039, + "EBCDIC-JP-kana": enc2039, + "ebcdic-jp-kana": enc2039, + "csIBM290": enc2039, + "csibm290": enc2039, + "IBM297": enc2040, + "ibm297": enc2040, + "cp297": enc2040, + "ebcdic-cp-fr": enc2040, + "csIBM297": enc2040, + "csibm297": enc2040, + "IBM420": enc2041, + "ibm420": enc2041, + "cp420": enc2041, + "ebcdic-cp-ar1": enc2041, + "csIBM420": enc2041, + "csibm420": enc2041, + "IBM423": enc2042, + "ibm423": enc2042, + "cp423": enc2042, + "ebcdic-cp-gr": enc2042, + "csIBM423": enc2042, + "csibm423": enc2042, + "IBM424": enc2043, + "ibm424": enc2043, + "cp424": enc2043, + "ebcdic-cp-he": enc2043, + "csIBM424": enc2043, + "csibm424": enc2043, + "IBM437": enc2011, + "ibm437": enc2011, + "cp437": enc2011, + "437": enc2011, + "csPC8CodePage437": enc2011, + "cspc8codepage437": enc2011, + "IBM500": enc2044, + "ibm500": enc2044, + "CP500": enc2044, + "cp500": enc2044, + "ebcdic-cp-be": enc2044, + "ebcdic-cp-ch": enc2044, + "csIBM500": enc2044, + "csibm500": enc2044, + "IBM851": enc2045, + "ibm851": enc2045, + "cp851": enc2045, + "851": enc2045, + "csIBM851": enc2045, + "csibm851": enc2045, + "IBM852": enc2010, + "ibm852": enc2010, + "cp852": enc2010, + "852": enc2010, + "csPCp852": enc2010, + "cspcp852": enc2010, + "IBM855": enc2046, + "ibm855": enc2046, + "cp855": enc2046, + "855": enc2046, + "csIBM855": enc2046, + "csibm855": enc2046, + "IBM857": enc2047, + "ibm857": enc2047, + "cp857": enc2047, + "857": enc2047, + "csIBM857": enc2047, + "csibm857": enc2047, + "IBM860": enc2048, + "ibm860": enc2048, + "cp860": enc2048, + "860": enc2048, + "csIBM860": enc2048, + "csibm860": enc2048, + "IBM861": enc2049, + "ibm861": enc2049, + "cp861": enc2049, + "861": enc2049, + "cp-is": enc2049, + "csIBM861": enc2049, + "csibm861": enc2049, + "IBM863": enc2050, + "ibm863": enc2050, + "cp863": enc2050, + "863": enc2050, + "csIBM863": enc2050, + "csibm863": enc2050, + "IBM864": enc2051, + "ibm864": enc2051, + "cp864": enc2051, + "csIBM864": enc2051, + "csibm864": enc2051, + "IBM865": enc2052, + "ibm865": enc2052, + "cp865": enc2052, + "865": enc2052, + "csIBM865": enc2052, + "csibm865": enc2052, + "IBM868": enc2053, + "ibm868": enc2053, + "CP868": enc2053, + "cp868": enc2053, + "cp-ar": enc2053, + "csIBM868": enc2053, + "csibm868": enc2053, + "IBM869": enc2054, + "ibm869": enc2054, + "cp869": enc2054, + "869": enc2054, + "cp-gr": enc2054, + "csIBM869": enc2054, + "csibm869": enc2054, + "IBM870": enc2055, + "ibm870": enc2055, + "CP870": enc2055, + "cp870": enc2055, + "ebcdic-cp-roece": enc2055, + "ebcdic-cp-yu": enc2055, + "csIBM870": enc2055, + "csibm870": enc2055, + "IBM871": enc2056, + "ibm871": enc2056, + "CP871": enc2056, + "cp871": enc2056, + "ebcdic-cp-is": enc2056, + "csIBM871": enc2056, + "csibm871": enc2056, + "IBM880": enc2057, + "ibm880": enc2057, + "cp880": enc2057, + "EBCDIC-Cyrillic": enc2057, + "ebcdic-cyrillic": enc2057, + "csIBM880": enc2057, + "csibm880": enc2057, + "IBM891": enc2058, + "ibm891": enc2058, + "cp891": enc2058, + "csIBM891": enc2058, + "csibm891": enc2058, + "IBM903": enc2059, + "ibm903": enc2059, + "cp903": enc2059, + "csIBM903": enc2059, + "csibm903": enc2059, + "IBM904": enc2060, + "ibm904": enc2060, + "cp904": enc2060, + "904": enc2060, + "csIBBM904": enc2060, + "csibbm904": enc2060, + "IBM905": enc2061, + "ibm905": enc2061, + "CP905": enc2061, + "cp905": enc2061, + "ebcdic-cp-tr": enc2061, + "csIBM905": enc2061, + "csibm905": enc2061, + "IBM918": enc2062, + "ibm918": enc2062, + "CP918": enc2062, + "cp918": enc2062, + "ebcdic-cp-ar2": enc2062, + "csIBM918": enc2062, + "csibm918": enc2062, + "IBM1026": enc2063, + "ibm1026": enc2063, + "CP1026": enc2063, + "cp1026": enc2063, + "csIBM1026": enc2063, + "csibm1026": enc2063, + "EBCDIC-AT-DE": enc2064, + "ebcdic-at-de": enc2064, + "csIBMEBCDICATDE": enc2064, + "csibmebcdicatde": enc2064, + "EBCDIC-AT-DE-A": enc2065, + "ebcdic-at-de-a": enc2065, + "csEBCDICATDEA": enc2065, + "csebcdicatdea": enc2065, + "EBCDIC-CA-FR": enc2066, + "ebcdic-ca-fr": enc2066, + "csEBCDICCAFR": enc2066, + "csebcdiccafr": enc2066, + "EBCDIC-DK-NO": enc2067, + "ebcdic-dk-no": enc2067, + "csEBCDICDKNO": enc2067, + "csebcdicdkno": enc2067, + "EBCDIC-DK-NO-A": enc2068, + "ebcdic-dk-no-a": enc2068, + "csEBCDICDKNOA": enc2068, + "csebcdicdknoa": enc2068, + "EBCDIC-FI-SE": enc2069, + "ebcdic-fi-se": enc2069, + "csEBCDICFISE": enc2069, + "csebcdicfise": enc2069, + "EBCDIC-FI-SE-A": enc2070, + "ebcdic-fi-se-a": enc2070, + "csEBCDICFISEA": enc2070, + "csebcdicfisea": enc2070, + "EBCDIC-FR": enc2071, + "ebcdic-fr": enc2071, + "csEBCDICFR": enc2071, + "csebcdicfr": enc2071, + "EBCDIC-IT": enc2072, + "ebcdic-it": enc2072, + "csEBCDICIT": enc2072, + "csebcdicit": enc2072, + "EBCDIC-PT": enc2073, + "ebcdic-pt": enc2073, + "csEBCDICPT": enc2073, + "csebcdicpt": enc2073, + "EBCDIC-ES": enc2074, + "ebcdic-es": enc2074, + "csEBCDICES": enc2074, + "csebcdices": enc2074, + "EBCDIC-ES-A": enc2075, + "ebcdic-es-a": enc2075, + "csEBCDICESA": enc2075, + "csebcdicesa": enc2075, + "EBCDIC-ES-S": enc2076, + "ebcdic-es-s": enc2076, + "csEBCDICESS": enc2076, + "csebcdicess": enc2076, + "EBCDIC-UK": enc2077, + "ebcdic-uk": enc2077, + "csEBCDICUK": enc2077, + "csebcdicuk": enc2077, + "EBCDIC-US": enc2078, + "ebcdic-us": enc2078, + "csEBCDICUS": enc2078, + "csebcdicus": enc2078, + "UNKNOWN-8BIT": enc2079, + "unknown-8bit": enc2079, + "csUnknown8BiT": enc2079, + "csunknown8bit": enc2079, + "MNEMONIC": enc2080, + "mnemonic": enc2080, + "csMnemonic": enc2080, + "csmnemonic": enc2080, + "MNEM": enc2081, + "mnem": enc2081, + "csMnem": enc2081, + "csmnem": enc2081, + "VISCII": enc2082, + "viscii": enc2082, + "csVISCII": enc2082, + "csviscii": enc2082, + "VIQR": enc2083, + "viqr": enc2083, + "csVIQR": enc2083, + "csviqr": enc2083, + "KOI8-R": enc2084, + "koi8-r": enc2084, + "csKOI8R": enc2084, + "cskoi8r": enc2084, + "HZ-GB-2312": enc2085, + "hz-gb-2312": enc2085, + "IBM866": enc2086, + "ibm866": enc2086, + "cp866": enc2086, + "866": enc2086, + "csIBM866": enc2086, + "csibm866": enc2086, + "IBM775": enc2087, + "ibm775": enc2087, + "cp775": enc2087, + "csPC775Baltic": enc2087, + "cspc775baltic": enc2087, + "KOI8-U": enc2088, + "koi8-u": enc2088, + "csKOI8U": enc2088, + "cskoi8u": enc2088, + "IBM00858": enc2089, + "ibm00858": enc2089, + "CCSID00858": enc2089, + "ccsid00858": enc2089, + "CP00858": enc2089, + "cp00858": enc2089, + "PC-Multilingual-850+euro": enc2089, + "pc-multilingual-850+euro": enc2089, + "csIBM00858": enc2089, + "csibm00858": enc2089, + "IBM00924": enc2090, + "ibm00924": enc2090, + "CCSID00924": enc2090, + "ccsid00924": enc2090, + "CP00924": enc2090, + "cp00924": enc2090, + "ebcdic-Latin9--euro": enc2090, + "ebcdic-latin9--euro": enc2090, + "csIBM00924": enc2090, + "csibm00924": enc2090, + "IBM01140": enc2091, + "ibm01140": enc2091, + "CCSID01140": enc2091, + "ccsid01140": enc2091, + "CP01140": enc2091, + "cp01140": enc2091, + "ebcdic-us-37+euro": enc2091, + "csIBM01140": enc2091, + "csibm01140": enc2091, + "IBM01141": enc2092, + "ibm01141": enc2092, + "CCSID01141": enc2092, + "ccsid01141": enc2092, + "CP01141": enc2092, + "cp01141": enc2092, + "ebcdic-de-273+euro": enc2092, + "csIBM01141": enc2092, + "csibm01141": enc2092, + "IBM01142": enc2093, + "ibm01142": enc2093, + "CCSID01142": enc2093, + "ccsid01142": enc2093, + "CP01142": enc2093, + "cp01142": enc2093, + "ebcdic-dk-277+euro": enc2093, + "ebcdic-no-277+euro": enc2093, + "csIBM01142": enc2093, + "csibm01142": enc2093, + "IBM01143": enc2094, + "ibm01143": enc2094, + "CCSID01143": enc2094, + "ccsid01143": enc2094, + "CP01143": enc2094, + "cp01143": enc2094, + "ebcdic-fi-278+euro": enc2094, + "ebcdic-se-278+euro": enc2094, + "csIBM01143": enc2094, + "csibm01143": enc2094, + "IBM01144": enc2095, + "ibm01144": enc2095, + "CCSID01144": enc2095, + "ccsid01144": enc2095, + "CP01144": enc2095, + "cp01144": enc2095, + "ebcdic-it-280+euro": enc2095, + "csIBM01144": enc2095, + "csibm01144": enc2095, + "IBM01145": enc2096, + "ibm01145": enc2096, + "CCSID01145": enc2096, + "ccsid01145": enc2096, + "CP01145": enc2096, + "cp01145": enc2096, + "ebcdic-es-284+euro": enc2096, + "csIBM01145": enc2096, + "csibm01145": enc2096, + "IBM01146": enc2097, + "ibm01146": enc2097, + "CCSID01146": enc2097, + "ccsid01146": enc2097, + "CP01146": enc2097, + "cp01146": enc2097, + "ebcdic-gb-285+euro": enc2097, + "csIBM01146": enc2097, + "csibm01146": enc2097, + "IBM01147": enc2098, + "ibm01147": enc2098, + "CCSID01147": enc2098, + "ccsid01147": enc2098, + "CP01147": enc2098, + "cp01147": enc2098, + "ebcdic-fr-297+euro": enc2098, + "csIBM01147": enc2098, + "csibm01147": enc2098, + "IBM01148": enc2099, + "ibm01148": enc2099, + "CCSID01148": enc2099, + "ccsid01148": enc2099, + "CP01148": enc2099, + "cp01148": enc2099, + "ebcdic-international-500+euro": enc2099, + "csIBM01148": enc2099, + "csibm01148": enc2099, + "IBM01149": enc2100, + "ibm01149": enc2100, + "CCSID01149": enc2100, + "ccsid01149": enc2100, + "CP01149": enc2100, + "cp01149": enc2100, + "ebcdic-is-871+euro": enc2100, + "csIBM01149": enc2100, + "csibm01149": enc2100, + "Big5-HKSCS": enc2101, + "big5-hkscs": enc2101, + "csBig5HKSCS": enc2101, + "csbig5hkscs": enc2101, + "IBM1047": enc2102, + "ibm1047": enc2102, + "IBM-1047": enc2102, + "ibm-1047": enc2102, + "csIBM1047": enc2102, + "csibm1047": enc2102, + "PTCP154": enc2103, + "ptcp154": enc2103, + "csPTCP154": enc2103, + "csptcp154": enc2103, + "PT154": enc2103, + "pt154": enc2103, + "CP154": enc2103, + "cp154": enc2103, + "Cyrillic-Asian": enc2103, + "cyrillic-asian": enc2103, + "Amiga-1251": enc2104, + "amiga-1251": enc2104, + "Ami1251": enc2104, + "ami1251": enc2104, + "Amiga1251": enc2104, + "amiga1251": enc2104, + "Ami-1251": enc2104, + "ami-1251": enc2104, + "csAmiga1251\n(Aliases": enc2104, + "csamiga1251\n(aliases": enc2104, + "KOI7-switched": enc2105, + "koi7-switched": enc2105, + "csKOI7switched": enc2105, + "cskoi7switched": enc2105, + "BRF": enc2106, + "brf": enc2106, + "csBRF": enc2106, + "csbrf": enc2106, + "TSCII": enc2107, + "tscii": enc2107, + "csTSCII": enc2107, + "cstscii": enc2107, + "CP51932": enc2108, + "cp51932": enc2108, + "csCP51932": enc2108, + "cscp51932": enc2108, + "windows-874": enc2109, + "cswindows874": enc2109, + "windows-1250": enc2250, + "cswindows1250": enc2250, + "windows-1251": enc2251, + "cswindows1251": enc2251, + "windows-1252": enc2252, + "cswindows1252": enc2252, + "windows-1253": enc2253, + "cswindows1253": enc2253, + "windows-1254": enc2254, + "cswindows1254": enc2254, + "windows-1255": enc2255, + "cswindows1255": enc2255, + "windows-1256": enc2256, + "cswindows1256": enc2256, + "windows-1257": enc2257, + "cswindows1257": enc2257, + "windows-1258": enc2258, + "cswindows1258": enc2258, + "TIS-620": enc2259, + "tis-620": enc2259, + "csTIS620": enc2259, + "cstis620": enc2259, + "ISO-8859-11": enc2259, + "iso-8859-11": enc2259, + "CP50220": enc2260, + "cp50220": enc2260, + "csCP50220": enc2260, + "cscp50220": enc2260, +} + +// Total table size 14402 bytes (14KiB); checksum: CEBAA10C diff --git a/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go b/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go new file mode 100644 index 0000000000..0cccae0440 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go @@ -0,0 +1,180 @@ +// Copyright 2017 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 enctest + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "strings" + "testing" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// Encoder or Decoder +type Transcoder interface { + transform.Transformer + Bytes([]byte) ([]byte, error) + String(string) (string, error) +} + +func TestEncoding(t *testing.T, e encoding.Encoding, encoded, utf8, prefix, suffix string) { + for _, direction := range []string{"Decode", "Encode"} { + t.Run(fmt.Sprintf("%v/%s", e, direction), func(t *testing.T) { + + var coder Transcoder + var want, src, wPrefix, sPrefix, wSuffix, sSuffix string + if direction == "Decode" { + coder, want, src = e.NewDecoder(), utf8, encoded + wPrefix, sPrefix, wSuffix, sSuffix = "", prefix, "", suffix + } else { + coder, want, src = e.NewEncoder(), encoded, utf8 + wPrefix, sPrefix, wSuffix, sSuffix = prefix, "", suffix, "" + } + + dst := make([]byte, len(wPrefix)+len(want)+len(wSuffix)) + nDst, nSrc, err := coder.Transform(dst, []byte(sPrefix+src+sSuffix), true) + if err != nil { + t.Fatal(err) + } + if nDst != len(wPrefix)+len(want)+len(wSuffix) { + t.Fatalf("nDst got %d, want %d", + nDst, len(wPrefix)+len(want)+len(wSuffix)) + } + if nSrc != len(sPrefix)+len(src)+len(sSuffix) { + t.Fatalf("nSrc got %d, want %d", + nSrc, len(sPrefix)+len(src)+len(sSuffix)) + } + if got := string(dst); got != wPrefix+want+wSuffix { + t.Fatalf("\ngot %q\nwant %q", got, wPrefix+want+wSuffix) + } + + for _, n := range []int{0, 1, 2, 10, 123, 4567} { + input := sPrefix + strings.Repeat(src, n) + sSuffix + g, err := coder.String(input) + if err != nil { + t.Fatalf("Bytes: n=%d: %v", n, err) + } + if len(g) == 0 && len(input) == 0 { + // If the input is empty then the output can be empty, + // regardless of whatever wPrefix is. + continue + } + got1, want1 := string(g), wPrefix+strings.Repeat(want, n)+wSuffix + if got1 != want1 { + t.Fatalf("ReadAll: n=%d\ngot %q\nwant %q", + n, trim(got1), trim(want1)) + } + } + }) + } +} + +func TestFile(t *testing.T, e encoding.Encoding) { + for _, dir := range []string{"Decode", "Encode"} { + t.Run(fmt.Sprintf("%s/%s", e, dir), func(t *testing.T) { + dst, src, transformer, err := load(dir, e) + if err != nil { + t.Fatalf("load: %v", err) + } + buf, err := transformer.Bytes(src) + if err != nil { + t.Fatalf("transform: %v", err) + } + if !bytes.Equal(buf, dst) { + t.Error("transformed bytes did not match golden file") + } + }) + } +} + +func Benchmark(b *testing.B, enc encoding.Encoding) { + for _, direction := range []string{"Decode", "Encode"} { + b.Run(fmt.Sprintf("%s/%s", enc, direction), func(b *testing.B) { + _, src, transformer, err := load(direction, enc) + if err != nil { + b.Fatal(err) + } + b.SetBytes(int64(len(src))) + b.ResetTimer() + for i := 0; i < b.N; i++ { + r := transform.NewReader(bytes.NewReader(src), transformer) + io.Copy(ioutil.Discard, r) + } + }) + } +} + +// testdataFiles are files in testdata/*.txt. +var testdataFiles = []struct { + mib identifier.MIB + basename, ext string +}{ + {identifier.Windows1252, "candide", "windows-1252"}, + {identifier.EUCPkdFmtJapanese, "rashomon", "euc-jp"}, + {identifier.ISO2022JP, "rashomon", "iso-2022-jp"}, + {identifier.ShiftJIS, "rashomon", "shift-jis"}, + {identifier.EUCKR, "unsu-joh-eun-nal", "euc-kr"}, + {identifier.GBK, "sunzi-bingfa-simplified", "gbk"}, + {identifier.HZGB2312, "sunzi-bingfa-gb-levels-1-and-2", "hz-gb2312"}, + {identifier.Big5, "sunzi-bingfa-traditional", "big5"}, + {identifier.UTF16LE, "candide", "utf-16le"}, + {identifier.UTF8, "candide", "utf-8"}, + {identifier.UTF32BE, "candide", "utf-32be"}, + + // GB18030 is a superset of GBK and is nominally a Simplified Chinese + // encoding, but it can also represent the entire Basic Multilingual + // Plane, including codepoints like 'â' that aren't encodable by GBK. + // GB18030 on Simplified Chinese should perform similarly to GBK on + // Simplified Chinese. GB18030 on "candide" is more interesting. + {identifier.GB18030, "candide", "gb18030"}, +} + +func load(direction string, enc encoding.Encoding) ([]byte, []byte, Transcoder, error) { + basename, ext, count := "", "", 0 + for _, tf := range testdataFiles { + if mib, _ := enc.(identifier.Interface).ID(); tf.mib == mib { + basename, ext = tf.basename, tf.ext + count++ + } + } + if count != 1 { + if count == 0 { + return nil, nil, nil, fmt.Errorf("no testdataFiles for %s", enc) + } + return nil, nil, nil, fmt.Errorf("too many testdataFiles for %s", enc) + } + dstFile := fmt.Sprintf("../testdata/%s-%s.txt", basename, ext) + srcFile := fmt.Sprintf("../testdata/%s-utf-8.txt", basename) + var coder Transcoder = encoding.ReplaceUnsupported(enc.NewEncoder()) + if direction == "Decode" { + dstFile, srcFile = srcFile, dstFile + coder = enc.NewDecoder() + } + dst, err := ioutil.ReadFile(dstFile) + if err != nil { + if dst, err = ioutil.ReadFile("../" + dstFile); err != nil { + return nil, nil, nil, err + } + } + src, err := ioutil.ReadFile(srcFile) + if err != nil { + if src, err = ioutil.ReadFile("../" + srcFile); err != nil { + return nil, nil, nil, err + } + } + return dst, src, coder, nil +} + +func trim(s string) string { + if len(s) < 120 { + return s + } + return s[:50] + "..." + s[len(s)-50:] +} diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go index 2a2da0ef25..7351b4ef8a 100644 --- a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +++ b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go @@ -36,8 +36,8 @@ package identifier // - http://www.ietf.org/rfc/rfc2978.txt // - http://www.unicode.org/reports/tr22/ // - http://www.w3.org/TR/encoding/ -// - http://www.w3.org/TR/encoding/indexes/encodings.json // - https://encoding.spec.whatwg.org/ +// - https://encoding.spec.whatwg.org/encodings.json // - https://tools.ietf.org/html/rfc6657#section-5 // Interface can be implemented by Encodings to define the CCS or CES for which diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go index 915abfa297..768842b0a5 100644 --- a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +++ b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package identifier diff --git a/vendor/golang.org/x/text/encoding/japanese/all_test.go b/vendor/golang.org/x/text/encoding/japanese/all_test.go index fe397aaef4..9cffe10dc1 100644 --- a/vendor/golang.org/x/text/encoding/japanese/all_test.go +++ b/vendor/golang.org/x/text/encoding/japanese/all_test.go @@ -5,10 +5,13 @@ package japanese import ( + "fmt" + "strings" "testing" "golang.org/x/text/encoding" "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) @@ -20,15 +23,14 @@ func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { } func TestNonRepertoire(t *testing.T) { + // Pick n to cause the destination buffer in transform.String to overflow. + const n = 100 + long := strings.Repeat(".", n) testCases := []struct { init func(e encoding.Encoding) (string, transform.Transformer, error) e encoding.Encoding src, want string }{ - {dec, EUCJP, "\xfe\xfc", "\ufffd"}, - {dec, ISO2022JP, "\x1b$B\x7e\x7e", "\ufffd"}, - {dec, ShiftJIS, "\xef\xfc", "\ufffd"}, - {enc, EUCJP, "갂", ""}, {enc, EUCJP, "a갂", "a"}, {enc, EUCJP, "丌갂", "\x8f\xb0\xa4"}, @@ -40,17 +42,108 @@ func TestNonRepertoire(t *testing.T) { {enc, ShiftJIS, "갂", ""}, {enc, ShiftJIS, "a갂", "a"}, {enc, ShiftJIS, "\u2190갂", "\x81\xa9"}, + + // Continue correctly after errors + {dec, EUCJP, "\x8e\xa0", "\ufffd\ufffd"}, + {dec, EUCJP, "\x8e\xe0", "\ufffd"}, + {dec, EUCJP, "\x8e\xff", "\ufffd\ufffd"}, + {dec, EUCJP, "\x8ea", "\ufffda"}, + {dec, EUCJP, "\x8f\xa0", "\ufffd\ufffd"}, + {dec, EUCJP, "\x8f\xa1\xa0", "\ufffd\ufffd"}, + {dec, EUCJP, "\x8f\xa1a", "\ufffda"}, + {dec, EUCJP, "\x8f\xa1a", "\ufffda"}, + {dec, EUCJP, "\x8f\xa1a", "\ufffda"}, + {dec, EUCJP, "\x8f\xa2\xa2", "\ufffd"}, + {dec, EUCJP, "\xfe", "\ufffd"}, + {dec, EUCJP, "\xfe\xfc", "\ufffd"}, + {dec, EUCJP, "\xfe\xff", "\ufffd\ufffd"}, + // Correct handling of end of source + {dec, EUCJP, strings.Repeat("\x8e", n), strings.Repeat("\ufffd", n)}, + {dec, EUCJP, strings.Repeat("\x8f", n), strings.Repeat("\ufffd", n)}, + {dec, EUCJP, strings.Repeat("\x8f\xa0", n), strings.Repeat("\ufffd", 2*n)}, + {dec, EUCJP, "a" + strings.Repeat("\x8f\xa1", n), "a" + strings.Repeat("\ufffd", n)}, + {dec, EUCJP, "a" + strings.Repeat("\x8f\xa1\xff", n), "a" + strings.Repeat("\ufffd", 2*n)}, + + // Continue correctly after errors + {dec, ShiftJIS, "\x80", "\u0080"}, // It's what the spec says. + {dec, ShiftJIS, "\x81", "\ufffd"}, + {dec, ShiftJIS, "\x81\x7f", "\ufffd\u007f"}, + {dec, ShiftJIS, "\xe0", "\ufffd"}, + {dec, ShiftJIS, "\xe0\x39", "\ufffd\u0039"}, + {dec, ShiftJIS, "\xe0\x9f", "燹"}, + {dec, ShiftJIS, "\xe0\xfd", "\ufffd"}, + {dec, ShiftJIS, "\xef\xfc", "\ufffd"}, + {dec, ShiftJIS, "\xfc\xfc", "\ufffd"}, + {dec, ShiftJIS, "\xfc\xfd", "\ufffd"}, + {dec, ShiftJIS, "\xfdaa", "\ufffdaa"}, + + {dec, ShiftJIS, strings.Repeat("\x81\x81", n), strings.Repeat("=", n)}, + {dec, ShiftJIS, strings.Repeat("\xe0\xfd", n), strings.Repeat("\ufffd", n)}, + {dec, ShiftJIS, "a" + strings.Repeat("\xe0\xfd", n), "a" + strings.Repeat("\ufffd", n)}, + + {dec, ISO2022JP, "\x1b$", "\ufffd$"}, + {dec, ISO2022JP, "\x1b(", "\ufffd("}, + {dec, ISO2022JP, "\x1b@", "\ufffd@"}, + {dec, ISO2022JP, "\x1bZ", "\ufffdZ"}, + // incomplete escapes + {dec, ISO2022JP, "\x1b$", "\ufffd$"}, + {dec, ISO2022JP, "\x1b$J.", "\ufffd$J."}, // illegal + {dec, ISO2022JP, "\x1b$B.", "\ufffd"}, // JIS208 + {dec, ISO2022JP, "\x1b$(", "\ufffd$("}, // JIS212 + {dec, ISO2022JP, "\x1b$(..", "\ufffd$(.."}, // JIS212 + {dec, ISO2022JP, "\x1b$(" + long, "\ufffd$(" + long}, // JIS212 + {dec, ISO2022JP, "\x1b$(D.", "\ufffd"}, // JIS212 + {dec, ISO2022JP, "\x1b$(D..", "\ufffd"}, // JIS212 + {dec, ISO2022JP, "\x1b$(D...", "\ufffd\ufffd"}, // JIS212 + {dec, ISO2022JP, "\x1b(B.", "."}, // ascii + {dec, ISO2022JP, "\x1b(B..", ".."}, // ascii + {dec, ISO2022JP, "\x1b(J.", "."}, // roman + {dec, ISO2022JP, "\x1b(J..", ".."}, // roman + {dec, ISO2022JP, "\x1b(I\x20", "\ufffd"}, // katakana + {dec, ISO2022JP, "\x1b(I\x20\x20", "\ufffd\ufffd"}, // katakana + // recover to same state + {dec, ISO2022JP, "\x1b(B\x1b.", "\ufffd."}, + {dec, ISO2022JP, "\x1b(I\x1b.", "\ufffdョ"}, + {dec, ISO2022JP, "\x1b(I\x1b$.", "\ufffd、ョ"}, + {dec, ISO2022JP, "\x1b(I\x1b(.", "\ufffdィョ"}, + {dec, ISO2022JP, "\x1b$B\x7e\x7e", "\ufffd"}, + {dec, ISO2022JP, "\x1b$@\x0a.", "\x0a."}, + {dec, ISO2022JP, "\x1b$B\x0a.", "\x0a."}, + {dec, ISO2022JP, "\x1b$(D\x0a.", "\x0a."}, + {dec, ISO2022JP, "\x1b$(D\x7e\x7e", "\ufffd"}, + {dec, ISO2022JP, "\x80", "\ufffd"}, + + // TODO: according to https://encoding.spec.whatwg.org/#iso-2022-jp, + // these should all be correct. + // {dec, ISO2022JP, "\x1b(B\x0E", "\ufffd"}, + // {dec, ISO2022JP, "\x1b(B\x0F", "\ufffd"}, + {dec, ISO2022JP, "\x1b(B\x5C", "\u005C"}, + {dec, ISO2022JP, "\x1b(B\x7E", "\u007E"}, + // {dec, ISO2022JP, "\x1b(J\x0E", "\ufffd"}, + // {dec, ISO2022JP, "\x1b(J\x0F", "\ufffd"}, + // {dec, ISO2022JP, "\x1b(J\x5C", "\u00A5"}, + // {dec, ISO2022JP, "\x1b(J\x7E", "\u203E"}, } for _, tc := range testCases { dir, tr, wantErr := tc.init(tc.e) - - dst, _, err := transform.String(tr, tc.src) - if err != wantErr { - t.Errorf("%s %v(%q): got %v; want %v", dir, tc.e, tc.src, err, wantErr) - } - if got := string(dst); got != tc.want { - t.Errorf("%s %v(%q):\ngot %q\nwant %q", dir, tc.e, tc.src, got, tc.want) - } + t.Run(fmt.Sprintf("%s/%v/%q", dir, tc.e, tc.src), func(t *testing.T) { + dst := make([]byte, 100000) + src := []byte(tc.src) + for i := 0; i <= len(tc.src); i++ { + nDst, nSrc, err := tr.Transform(dst, src[:i], false) + if err != nil && err != transform.ErrShortSrc && err != wantErr { + t.Fatalf("error on first call to Transform: %v", err) + } + n, _, err := tr.Transform(dst[nDst:], src[nSrc:], true) + nDst += n + if err != wantErr { + t.Fatalf("(%q|%q): got %v; want %v", tc.src[:i], tc.src[i:], err, wantErr) + } + if got := string(dst[:nDst]); got != tc.want { + t.Errorf("(%q|%q):\ngot %q\nwant %q", tc.src[:i], tc.src[i:], got, tc.want) + } + } + }) } } @@ -78,3 +171,78 @@ func TestCorrect(t *testing.T) { } } } + +func TestBasics(t *testing.T) { + // The encoded forms can be verified by the iconv program: + // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd + testCases := []struct { + e encoding.Encoding + encPrefix string + encSuffix string + encoded string + utf8 string + }{{ + // "A。カ゚ 0208: etc 0212: etc" is a nonsense string that contains ASCII, half-width + // kana, JIS X 0208 (including two near the kink in the Shift JIS second byte + // encoding) and JIS X 0212 encodable codepoints. + // + // "月日は百代の過客にして、行かふ年も又旅人也。" is from the 17th century poem + // "Oku no Hosomichi" and contains both hiragana and kanji. + e: EUCJP, + encoded: "A\x8e\xa1\x8e\xb6\x8e\xdf " + + "0208: \xa1\xa1\xa1\xa2\xa1\xdf\xa1\xe0\xa1\xfd\xa1\xfe\xa2\xa1\xa2\xa2\xf4\xa6 " + + "0212: \x8f\xa2\xaf\x8f\xed\xe3", + utf8: "A。カ゚ " + + "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199 " + + "0212: \u02d8\u9fa5", + }, { + e: EUCJP, + encoded: "\xb7\xee\xc6\xfc\xa4\xcf\xc9\xb4\xc2\xe5\xa4\xce\xb2\xe1\xb5\xd2" + + "\xa4\xcb\xa4\xb7\xa4\xc6\xa1\xa2\xb9\xd4\xa4\xab\xa4\xd5\xc7\xaf" + + "\xa4\xe2\xcb\xf4\xce\xb9\xbf\xcd\xcc\xe9\xa1\xa3", + utf8: "月日は百代の過客にして、行かふ年も又旅人也。", + }, { + e: ISO2022JP, + encSuffix: "\x1b\x28\x42", + encoded: "\x1b\x28\x49\x21\x36\x5f\x1b\x28\x42 " + + "0208: \x1b\x24\x42\x21\x21\x21\x22\x21\x5f\x21\x60\x21\x7d\x21\x7e\x22\x21\x22\x22\x74\x26", + utf8: "。カ゚ " + + "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199", + }, { + e: ISO2022JP, + encPrefix: "\x1b\x24\x42", + encSuffix: "\x1b\x28\x42", + encoded: "\x37\x6e\x46\x7c\x24\x4f\x49\x34\x42\x65\x24\x4e\x32\x61\x35\x52" + + "\x24\x4b\x24\x37\x24\x46\x21\x22\x39\x54\x24\x2b\x24\x55\x47\x2f" + + "\x24\x62\x4b\x74\x4e\x39\x3f\x4d\x4c\x69\x21\x23", + utf8: "月日は百代の過客にして、行かふ年も又旅人也。", + }, { + e: ShiftJIS, + encoded: "A\xa1\xb6\xdf " + + "0208: \x81\x40\x81\x41\x81\x7e\x81\x80\x81\x9d\x81\x9e\x81\x9f\x81\xa0\xea\xa4", + utf8: "A。カ゚ " + + "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199", + }, { + e: ShiftJIS, + encoded: "\x8c\x8e\x93\xfa\x82\xcd\x95\x53\x91\xe3\x82\xcc\x89\xdf\x8b\x71" + + "\x82\xc9\x82\xb5\x82\xc4\x81\x41\x8d\x73\x82\xa9\x82\xd3\x94\x4e" + + "\x82\xe0\x96\x94\x97\xb7\x90\x6c\x96\xe7\x81\x42", + utf8: "月日は百代の過客にして、行かふ年も又旅人也。", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, tc.encSuffix) + } +} + +func TestFiles(t *testing.T) { + enctest.TestFile(t, EUCJP) + enctest.TestFile(t, ISO2022JP) + enctest.TestFile(t, ShiftJIS) +} + +func BenchmarkEncoding(b *testing.B) { + enctest.Benchmark(b, EUCJP) + enctest.Benchmark(b, ISO2022JP) + enctest.Benchmark(b, ShiftJIS) +} diff --git a/vendor/golang.org/x/text/encoding/japanese/eucjp.go b/vendor/golang.org/x/text/encoding/japanese/eucjp.go index 40f9b05f38..79313fa589 100644 --- a/vendor/golang.org/x/text/encoding/japanese/eucjp.go +++ b/vendor/golang.org/x/text/encoding/japanese/eucjp.go @@ -5,7 +5,6 @@ package japanese import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -23,10 +22,9 @@ var eucJP = internal.Encoding{ identifier.EUCPkdFmtJapanese, } -var errInvalidEUCJP = errors.New("japanese: invalid EUC-JP encoding") - type eucJPDecoder struct{ transform.NopResetter } +// See https://encoding.spec.whatwg.org/#euc-jp-decoder. func (eucJPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { r, size := rune(0), 0 loop: @@ -37,60 +35,79 @@ loop: case c0 == 0x8e: if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break } c1 := src[nSrc+1] - if c1 < 0xa1 || 0xdf < c1 { - err = errInvalidEUCJP - break loop + switch { + case c1 < 0xa1: + r, size = utf8.RuneError, 1 + case c1 > 0xdf: + r, size = utf8.RuneError, 2 + if c1 == 0xff { + size = 1 + } + default: + r, size = rune(c1)+(0xff61-0xa1), 2 } - r, size = rune(c1)+(0xff61-0xa1), 2 - case c0 == 0x8f: if nSrc+2 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + if p := nSrc + 1; p < len(src) && 0xa1 <= src[p] && src[p] < 0xfe { + size = 2 + } + break } c1 := src[nSrc+1] if c1 < 0xa1 || 0xfe < c1 { - err = errInvalidEUCJP - break loop + r, size = utf8.RuneError, 1 + break } c2 := src[nSrc+2] if c2 < 0xa1 || 0xfe < c2 { - err = errInvalidEUCJP - break loop + r, size = utf8.RuneError, 2 + break } - r, size = '\ufffd', 3 + r, size = utf8.RuneError, 3 if i := int(c1-0xa1)*94 + int(c2-0xa1); i < len(jis0212Decode) { r = rune(jis0212Decode[i]) if r == 0 { - r = '\ufffd' + r = utf8.RuneError } } case 0xa1 <= c0 && c0 <= 0xfe: if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break } c1 := src[nSrc+1] if c1 < 0xa1 || 0xfe < c1 { - err = errInvalidEUCJP - break loop + r, size = utf8.RuneError, 1 + break } - r, size = '\ufffd', 2 + r, size = utf8.RuneError, 2 if i := int(c0-0xa1)*94 + int(c1-0xa1); i < len(jis0208Decode) { r = rune(jis0208Decode[i]) if r == 0 { - r = '\ufffd' + r = utf8.RuneError } } default: - err = errInvalidEUCJP - break loop + r, size = utf8.RuneError, 1 } if nDst+utf8.RuneLen(r) > len(dst) { @@ -99,9 +116,6 @@ loop: } nDst += utf8.EncodeRune(dst[nDst:], r) } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidEUCJP - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go index b63e7d5d8f..613226df5e 100644 --- a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go +++ b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go @@ -5,7 +5,6 @@ package japanese import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -31,8 +30,6 @@ func iso2022JPNewEncoder() transform.Transformer { return new(iso2022JPEncoder) } -var errInvalidISO2022JP = errors.New("japanese: invalid ISO-2022-JP encoding") - const ( asciiState = iota katakanaState @@ -50,45 +47,51 @@ func (d *iso2022JPDecoder) Reset() { func (d *iso2022JPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { r, size := rune(0), 0 -loop: for ; nSrc < len(src); nSrc += size { c0 := src[nSrc] if c0 >= utf8.RuneSelf { - err = errInvalidISO2022JP - break loop + r, size = '\ufffd', 1 + goto write } if c0 == asciiEsc { if nSrc+2 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + // TODO: is it correct to only skip 1?? + r, size = '\ufffd', 1 + goto write } size = 3 c1 := src[nSrc+1] c2 := src[nSrc+2] switch { - case c1 == '$' && (c2 == '@' || c2 == 'B'): + case c1 == '$' && (c2 == '@' || c2 == 'B'): // 0x24 {0x40, 0x42} *d = jis0208State continue - case c1 == '$' && c2 == '(': + case c1 == '$' && c2 == '(': // 0x24 0x28 if nSrc+3 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + r, size = '\ufffd', 1 + goto write } size = 4 - if src[nSrc]+3 == 'D' { + if src[nSrc+3] == 'D' { *d = jis0212State continue } - case c1 == '(' && (c2 == 'B' || c2 == 'J'): + case c1 == '(' && (c2 == 'B' || c2 == 'J'): // 0x28 {0x42, 0x4A} *d = asciiState continue - case c1 == '(' && c2 == 'I': + case c1 == '(' && c2 == 'I': // 0x28 0x49 *d = katakanaState continue } - err = errInvalidISO2022JP - break loop + r, size = '\ufffd', 1 + goto write } switch *d { @@ -97,8 +100,8 @@ loop: case katakanaState: if c0 < 0x21 || 0x60 <= c0 { - err = errInvalidISO2022JP - break loop + r, size = '\ufffd', 1 + goto write } r, size = rune(c0)+(0xff61-0x21), 1 @@ -106,11 +109,14 @@ loop: if c0 == 0x0a { *d = asciiState r, size = rune(c0), 1 - break + goto write } if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + r, size = '\ufffd', 1 + goto write } size = 2 c1 := src[nSrc+1] @@ -121,22 +127,19 @@ loop: r = rune(jis0212Decode[i]) } else { r = '\ufffd' - break + goto write } if r == 0 { r = '\ufffd' } } + write: if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop + return nDst, nSrc, transform.ErrShortDst } nDst += utf8.EncodeRune(dst[nDst:], r) } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidISO2022JP - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go index 099aecc31c..16fd8a6e3e 100644 --- a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go +++ b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go @@ -5,7 +5,6 @@ package japanese import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -24,8 +23,6 @@ var shiftJIS = internal.Encoding{ identifier.ShiftJIS, } -var errInvalidShiftJIS = errors.New("japanese: invalid Shift JIS encoding") - type shiftJISDecoder struct{ transform.NopResetter } func (shiftJISDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { @@ -48,28 +45,32 @@ loop: c0 = 2*c0 - 0x21 if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = '\ufffd', 1 + goto write } c1 := src[nSrc+1] switch { case c1 < 0x40: - err = errInvalidShiftJIS - break loop + r, size = '\ufffd', 1 // c1 is ASCII so output on next round + goto write case c1 < 0x7f: c0-- c1 -= 0x40 case c1 == 0x7f: - err = errInvalidShiftJIS - break loop + r, size = '\ufffd', 1 // c1 is ASCII so output on next round + goto write case c1 < 0x9f: c0-- c1 -= 0x41 case c1 < 0xfd: c1 -= 0x9f default: - err = errInvalidShiftJIS - break loop + r, size = '\ufffd', 2 + goto write } r, size = '\ufffd', 2 if i := int(c0)*94 + int(c1); i < len(jis0208Decode) { @@ -79,20 +80,19 @@ loop: } } + case c0 == 0x80: + r, size = 0x80, 1 + default: - err = errInvalidShiftJIS - break loop + r, size = '\ufffd', 1 } - + write: if nDst+utf8.RuneLen(r) > len(dst) { err = transform.ErrShortDst break loop } nDst += utf8.EncodeRune(dst[nDst:], r) } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidShiftJIS - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/korean/all_test.go b/vendor/golang.org/x/text/encoding/korean/all_test.go index 502c262dad..8225ce62a8 100644 --- a/vendor/golang.org/x/text/encoding/korean/all_test.go +++ b/vendor/golang.org/x/text/encoding/korean/all_test.go @@ -5,10 +5,12 @@ package korean import ( + "strings" "testing" "golang.org/x/text/encoding" "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) @@ -20,6 +22,9 @@ func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { } func TestNonRepertoire(t *testing.T) { + // Pick n large enough to cause an overflow in the destination buffer of + // transform.String. + const n = 10000 testCases := []struct { init func(e encoding.Encoding) (string, transform.Transformer, error) e encoding.Encoding @@ -32,6 +37,16 @@ func TestNonRepertoire(t *testing.T) { {enc, EUCKR, "aא", "a"}, {enc, EUCKR, "\uac00א", "\xb0\xa1"}, // TODO: should we also handle Jamo? + + {dec, EUCKR, "\x80", "\ufffd"}, + {dec, EUCKR, "\xff", "\ufffd"}, + {dec, EUCKR, "\x81", "\ufffd"}, + {dec, EUCKR, "\xb0\x40", "\ufffd@"}, + {dec, EUCKR, "\xb0\xff", "\ufffd"}, + {dec, EUCKR, "\xd0\x20", "\ufffd "}, + {dec, EUCKR, "\xd0\xff", "\ufffd"}, + + {dec, EUCKR, strings.Repeat("\x81", n), strings.Repeat("걖", n/2)}, } for _, tc := range testCases { dir, tr, wantErr := tc.init(tc.e) @@ -45,3 +60,35 @@ func TestNonRepertoire(t *testing.T) { } } } + +func TestBasics(t *testing.T) { + // The encoded forms can be verified by the iconv program: + // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd + testCases := []struct { + e encoding.Encoding + encoded string + utf8 string + }{{ + // Korean tests. + // + // "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D" is a + // nonsense string that contains ASCII, Hangul and CJK ideographs. + // + // "세계야, 안녕" translates as "Hello, world". + e: EUCKR, + encoded: "A\x81\x41\x81\x61\x81\x81\xc6\xfeB\xc7\xa1\xc7\xfe\xc8\xa1C\xca\xa1\xfd\xfeD", + utf8: "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D", + }, { + e: EUCKR, + encoded: "\xbc\xbc\xb0\xe8\xbe\xdf\x2c\x20\xbe\xc8\xb3\xe7", + utf8: "세계야, 안녕", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, "", "") + } +} + +func TestFiles(t *testing.T) { enctest.TestFile(t, EUCKR) } + +func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, EUCKR) } diff --git a/vendor/golang.org/x/text/encoding/korean/euckr.go b/vendor/golang.org/x/text/encoding/korean/euckr.go index a4b9ff178b..034337f5df 100644 --- a/vendor/golang.org/x/text/encoding/korean/euckr.go +++ b/vendor/golang.org/x/text/encoding/korean/euckr.go @@ -5,7 +5,6 @@ package korean import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -26,8 +25,6 @@ var eucKR = internal.Encoding{ identifier.EUCKR, } -var errInvalidEUCKR = errors.New("korean: invalid EUC-KR encoding") - type eucKRDecoder struct{ transform.NopResetter } func (eucKRDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { @@ -40,10 +37,15 @@ loop: case 0x81 <= c0 && c0 < 0xff: if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break } c1 := src[nSrc+1] + size = 2 if c0 < 0xc7 { r = 178 * rune(c0-0x81) switch { @@ -54,39 +56,36 @@ loop: case 0x81 <= c1 && c1 < 0xff: r += rune(c1) - (0x81 - 2*26) default: - err = errInvalidEUCKR - break loop + goto decError } } else if 0xa1 <= c1 && c1 < 0xff { r = 178*(0xc7-0x81) + rune(c0-0xc7)*94 + rune(c1-0xa1) } else { - err = errInvalidEUCKR - break loop + goto decError } if int(r) < len(decode) { r = rune(decode[r]) - if r == 0 { - r = '\ufffd' + if r != 0 { + break } - } else { - r = '\ufffd' } - size = 2 + decError: + r = utf8.RuneError + if c1 < utf8.RuneSelf { + size = 1 + } default: - err = errInvalidEUCKR - break loop + r, size = utf8.RuneError, 1 + break } if nDst+utf8.RuneLen(r) > len(dst) { err = transform.ErrShortDst - break loop + break } nDst += utf8.EncodeRune(dst[nDst:], r) } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidEUCKR - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go index afdb7aafe1..b369da21ab 100644 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go +++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go @@ -5,10 +5,12 @@ package simplifiedchinese import ( + "strings" "testing" "golang.org/x/text/encoding" "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) @@ -20,6 +22,8 @@ func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { } func TestNonRepertoire(t *testing.T) { + // Pick n large enough to overflow the destination buffer of transform.String. + const n = 10000 testCases := []struct { init func(e encoding.Encoding) (string, transform.Transformer, error) e encoding.Encoding @@ -35,6 +39,24 @@ func TestNonRepertoire(t *testing.T) { {enc, HZGB2312, "갂", ""}, {enc, HZGB2312, "a갂", "a"}, {enc, HZGB2312, "\u6cf5갂", "~{1C~}"}, + + {dec, GB18030, "\x80", "€"}, + {dec, GB18030, "\x81", "\ufffd"}, + {dec, GB18030, "\x81\x20", "\ufffd "}, + {dec, GB18030, "\xfe\xfe", "\ufffd"}, + {dec, GB18030, "\xfe\xff", "\ufffd\ufffd"}, + {dec, GB18030, "\xfe\x30", "\ufffd0"}, + {dec, GB18030, "\xfe\x30\x30 ", "\ufffd00 "}, + {dec, GB18030, "\xfe\x30\xff ", "\ufffd0\ufffd "}, + {dec, GB18030, "\xfe\x30\x81\x21", "\ufffd0\ufffd!"}, + + {dec, GB18030, strings.Repeat("\xfe\x30", n), strings.Repeat("\ufffd0", n)}, + + {dec, HZGB2312, "~/", "\ufffd"}, + {dec, HZGB2312, "~{a\x80", "\ufffd"}, + {dec, HZGB2312, "~{a\x80", "\ufffd"}, + {dec, HZGB2312, "~{" + strings.Repeat("z~", n), strings.Repeat("\ufffd", n)}, + {dec, HZGB2312, "~{" + strings.Repeat("\xfe\x30", n), strings.Repeat("\ufffd", n*2)}, } for _, tc := range testCases { dir, tr, wantErr := tc.init(tc.e) @@ -48,3 +70,74 @@ func TestNonRepertoire(t *testing.T) { } } } + +func TestBasics(t *testing.T) { + // The encoded forms can be verified by the iconv program: + // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd + testCases := []struct { + e encoding.Encoding + encPrefix string + encoded string + utf8 string + }{{ + // "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000" is a + // nonsense string that contains GB18030 encodable codepoints of which + // only U+00E0 and U+00E1 are GBK encodable. + // + // "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€" is a nonsense + // string that contains ASCII and GBK encodable codepoints from Levels + // 1-5 as well as the Euro sign. + // + // "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€" is a nonsense string + // that contains ASCII and Big5 encodable codepoints from the Basic + // Multilingual Plane and the Supplementary Ideographic Plane as well as + // the Euro sign. + // + // "花间一壶酒,独酌无相亲。" (simplified) and + // "花間一壺酒,獨酌無相親。" (traditional) + // are from the 8th century poem "Yuè Xià Dú Zhuó". + e: GB18030, + encoded: "\x81\x30\x81\x31\x81\x30\x89\x37\x81\x30\x89\x38\xa8\xa4\xa8\xa2" + + "\x81\x30\x89\x39\x81\x30\x8a\x30\x84\x31\xa4\x39\x90\x30\x81\x30", + utf8: "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000", + }, { + e: GB18030, + encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" + + "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3", + utf8: "花间一壶酒,独酌无相亲。", + }, { + e: GBK, + encoded: "A\xa1\xa1\xb0\xa1\x81\x40\x81\x80\xaa\x40\xaa\x80\xa8\x40\xa8\x80Z\x80", + utf8: "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€", + }, { + e: GBK, + encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" + + "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3", + utf8: "花间一壶酒,独酌无相亲。", + }, { + e: HZGB2312, + encoded: "A~{\x21\x21~~\x30\x21~}Z~~", + utf8: "A\u3000~\u554aZ~", + }, { + e: HZGB2312, + encPrefix: "~{", + encoded: ";(F#,6@WCN^O`GW!#", + utf8: "花间一壶酒,独酌无相亲。", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, "") + } +} + +func TestFiles(t *testing.T) { + enctest.TestFile(t, GB18030) + enctest.TestFile(t, GBK) + enctest.TestFile(t, HZGB2312) +} + +func BenchmarkEncoding(b *testing.B) { + enctest.Benchmark(b, GB18030) + enctest.Benchmark(b, GBK) + enctest.Benchmark(b, HZGB2312) +} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go index e0b15bbcc1..b89c45b03d 100644 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go @@ -5,7 +5,6 @@ package simplifiedchinese import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -40,11 +39,6 @@ var gbk18030 = internal.Encoding{ identifier.GB18030, } -var ( - errInvalidGB18030 = errors.New("simplifiedchinese: invalid GB18030 encoding") - errInvalidGBK = errors.New("simplifiedchinese: invalid GBK encoding") -) - type gbkDecoder struct { transform.NopResetter gb18030 bool @@ -66,8 +60,12 @@ loop: case c0 < 0xff: if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write } c1 := src[nSrc+1] switch { @@ -77,18 +75,24 @@ loop: c1 -= 0x41 case d.gb18030 && 0x30 <= c1 && c1 < 0x40: if nSrc+3 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + // The second byte here is always ASCII, so we can set size + // to 1 in all cases. + r, size = utf8.RuneError, 1 + goto write } c2 := src[nSrc+2] if c2 < 0x81 || 0xff <= c2 { - err = errInvalidGB18030 - break loop + r, size = utf8.RuneError, 1 + goto write } c3 := src[nSrc+3] if c3 < 0x30 || 0x3a <= c3 { - err = errInvalidGB18030 - break loop + r, size = utf8.RuneError, 1 + goto write } size = 4 r = ((rune(c0-0x81)*10+rune(c1-0x30))*126+rune(c2-0x81))*10 + rune(c3-0x30) @@ -109,17 +113,13 @@ loop: r -= 189000 if 0 <= r && r < 0x100000 { r += 0x10000 - goto write - } - err = errInvalidGB18030 - break loop - default: - if d.gb18030 { - err = errInvalidGB18030 } else { - err = errInvalidGBK + r, size = utf8.RuneError, 1 } - break loop + goto write + default: + r, size = utf8.RuneError, 1 + goto write } r, size = '\ufffd', 2 if i := int(c0-0x81)*190 + int(c1); i < len(decode) { @@ -130,12 +130,7 @@ loop: } default: - if d.gb18030 { - err = errInvalidGB18030 - } else { - err = errInvalidGBK - } - break loop + r, size = utf8.RuneError, 1 } write: @@ -145,13 +140,6 @@ loop: } nDst += utf8.EncodeRune(dst[nDst:], r) } - if atEOF && err == transform.ErrShortSrc { - if d.gb18030 { - err = errInvalidGB18030 - } else { - err = errInvalidGBK - } - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go index 85de6b1e64..eb3157f0b2 100644 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go @@ -5,7 +5,6 @@ package simplifiedchinese import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -31,8 +30,6 @@ func hzGB2312NewEncoder() transform.Transformer { return new(hzGB2312Encoder) } -var errInvalidHZGB2312 = errors.New("simplifiedchinese: invalid HZ-GB2312 encoding") - const ( asciiState = iota gbState @@ -50,14 +47,18 @@ loop: for ; nSrc < len(src); nSrc += size { c0 := src[nSrc] if c0 >= utf8.RuneSelf { - err = errInvalidHZGB2312 - break loop + r, size = utf8.RuneError, 1 + goto write } if c0 == '~' { if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r = utf8.RuneError + goto write } size = 2 switch src[nSrc+1] { @@ -78,8 +79,8 @@ loop: case '\n': continue default: - err = errInvalidHZGB2312 - break loop + r = utf8.RuneError + goto write } } @@ -87,33 +88,37 @@ loop: r, size = rune(c0), 1 } else { if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write } + size = 2 c1 := src[nSrc+1] if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { - err = errInvalidHZGB2312 - break loop - } - - r, size = '\ufffd', 2 - if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) { + // error + } else if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) { r = rune(decode[i]) - if r == 0 { - r = '\ufffd' + if r != 0 { + goto write } } + if c1 > utf8.RuneSelf { + // Be consistent and always treat non-ASCII as a single error. + size = 1 + } + r = utf8.RuneError } + write: if nDst+utf8.RuneLen(r) > len(dst) { err = transform.ErrShortDst break loop } nDst += utf8.EncodeRune(dst[nDst:], r) } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidHZGB2312 - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go b/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go index e779b691e4..3825c7672d 100644 --- a/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go +++ b/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go @@ -5,10 +5,14 @@ package traditionalchinese import ( + "fmt" + "io/ioutil" + "strings" "testing" "golang.org/x/text/encoding" "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) @@ -25,7 +29,12 @@ func TestNonRepertoire(t *testing.T) { e encoding.Encoding src, want string }{ + {dec, Big5, "\x80", "\ufffd"}, + {dec, Big5, "\x81", "\ufffd"}, + {dec, Big5, "\x81\x30", "\ufffd\x30"}, {dec, Big5, "\x81\x40", "\ufffd"}, + {dec, Big5, "\x81\xa0", "\ufffd"}, + {dec, Big5, "\xff", "\ufffd"}, {enc, Big5, "갂", ""}, {enc, Big5, "a갂", "a"}, @@ -33,13 +42,73 @@ func TestNonRepertoire(t *testing.T) { } for _, tc := range testCases { dir, tr, wantErr := tc.init(tc.e) + t.Run(fmt.Sprintf("%s/%v/%q", dir, tc.e, tc.src), func(t *testing.T) { + dst := make([]byte, 100) + src := []byte(tc.src) + for i := 0; i <= len(tc.src); i++ { + nDst, nSrc, err := tr.Transform(dst, src[:i], false) + if err != nil && err != transform.ErrShortSrc && err != wantErr { + t.Fatalf("error on first call to Transform: %v", err) + } + n, _, err := tr.Transform(dst[nDst:], src[nSrc:], true) + nDst += n + if err != wantErr { + t.Fatalf("(%q|%q): got %v; want %v", tc.src[:i], tc.src[i:], err, wantErr) + } + if got := string(dst[:nDst]); got != tc.want { + t.Errorf("(%q|%q):\ngot %q\nwant %q", tc.src[:i], tc.src[i:], got, tc.want) + } + } + }) + } +} + +func TestBasics(t *testing.T) { + // The encoded forms can be verified by the iconv program: + // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd + testCases := []struct { + e encoding.Encoding + encPrefix string + encSuffix string + encoded string + utf8 string + }{{ + e: Big5, + encoded: "A\x87\x40\x87\x41\x87\x45\xa1\x40\xfe\xfd\xfe\xfeZ\xa3\xe1", + utf8: "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€", + }, { + e: Big5, + encoded: "\xaa\xe1\xb6\xa1\xa4\x40\xb3\xfd\xb0\x73\xa1\x41\xbf\x57\xb0\x75" + + "\xb5\x4c\xac\xdb\xbf\xcb\xa1\x43", + utf8: "花間一壺酒,獨酌無相親。", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, "", "") + } +} - dst, _, err := transform.String(tr, tc.src) - if err != wantErr { - t.Errorf("%s %v(%q): got %v; want %v", dir, tc.e, tc.src, err, wantErr) - } - if got := string(dst); got != tc.want { - t.Errorf("%s %v(%q):\ngot %q\nwant %q", dir, tc.e, tc.src, got, tc.want) - } +func TestFiles(t *testing.T) { enctest.TestFile(t, Big5) } + +func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, Big5) } + +// TestBig5CircumflexAndMacron tests the special cases listed in +// http://encoding.spec.whatwg.org/#big5 +// Note that these special cases aren't preserved by round-tripping through +// decoding and encoding (since +// http://encoding.spec.whatwg.org/index-big5.txt does not have an entry for +// U+0304 or U+030C), so we can't test this in TestBasics. +func TestBig5CircumflexAndMacron(t *testing.T) { + src := "\x88\x5f\x88\x60\x88\x61\x88\x62\x88\x63\x88\x64\x88\x65\x88\x66 " + + "\x88\xa2\x88\xa3\x88\xa4\x88\xa5\x88\xa6" + want := "ÓǑÒ\u00ca\u0304Ế\u00ca\u030cỀÊ " + + "ü\u00ea\u0304ế\u00ea\u030cề" + dst, err := ioutil.ReadAll(transform.NewReader( + strings.NewReader(src), Big5.NewDecoder())) + if err != nil { + t.Fatal(err) + } + if got := string(dst); got != want { + t.Fatalf("\ngot %q\nwant %q", got, want) } } diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go index 275821f5db..1fcddde082 100644 --- a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go +++ b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go @@ -5,7 +5,6 @@ package traditionalchinese import ( - "errors" "unicode/utf8" "golang.org/x/text/encoding" @@ -26,8 +25,6 @@ var big5 = internal.Encoding{ identifier.Big5, } -var errInvalidBig5 = errors.New("traditionalchinese: invalid Big5 encoding") - type big5Decoder struct{ transform.NopResetter } func (big5Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { @@ -40,8 +37,12 @@ loop: case 0x81 <= c0 && c0 < 0xff: if nSrc+1 >= len(src) { - err = transform.ErrShortSrc - break loop + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write } c1 := src[nSrc+1] switch { @@ -49,9 +50,12 @@ loop: c1 -= 0x40 case 0xa1 <= c1 && c1 < 0xff: c1 -= 0x62 + case c1 < 0x40: + r, size = utf8.RuneError, 1 + goto write default: - err = errInvalidBig5 - break loop + r, size = utf8.RuneError, 2 + goto write } r, size = '\ufffd', 2 if i := int(c0-0x81)*157 + int(c1); i < len(decode) { @@ -80,10 +84,10 @@ loop: } default: - err = errInvalidBig5 - break loop + r, size = utf8.RuneError, 1 } + write: if nDst+utf8.RuneLen(r) > len(dst) { err = transform.ErrShortDst break loop @@ -99,9 +103,6 @@ loop: nDst += copy(dst[nDst:], s) continue loop } - if atEOF && err == transform.ErrShortSrc { - err = errInvalidBig5 - } return nDst, nSrc, err } diff --git a/vendor/golang.org/x/text/encoding/unicode/unicode_test.go b/vendor/golang.org/x/text/encoding/unicode/unicode_test.go index 2bc9615698..51b4712d80 100644 --- a/vendor/golang.org/x/text/encoding/unicode/unicode_test.go +++ b/vendor/golang.org/x/text/encoding/unicode/unicode_test.go @@ -7,9 +7,286 @@ package unicode import ( "testing" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) +func TestBasics(t *testing.T) { + testCases := []struct { + e encoding.Encoding + encPrefix string + encSuffix string + encoded string + utf8 string + }{{ + e: utf16BEIB, + encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65", + utf8: "\x57\u00e4\U0001d565", + }, { + e: utf16BEEB, + encPrefix: "\xfe\xff", + encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65", + utf8: "\x57\u00e4\U0001d565", + }, { + e: utf16LEIB, + encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd", + utf8: "\x57\u00e4\U0001d565", + }, { + e: utf16LEEB, + encPrefix: "\xff\xfe", + encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd", + utf8: "\x57\u00e4\U0001d565", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, tc.encSuffix) + } +} + +func TestFiles(t *testing.T) { + enctest.TestFile(t, UTF8) + enctest.TestFile(t, utf16LEIB) +} + +func BenchmarkEncoding(b *testing.B) { + enctest.Benchmark(b, UTF8) + enctest.Benchmark(b, utf16LEIB) +} + +var ( + utf16LEIB = UTF16(LittleEndian, IgnoreBOM) // UTF-16LE (atypical interpretation) + utf16LEUB = UTF16(LittleEndian, UseBOM) // UTF-16, LE + utf16LEEB = UTF16(LittleEndian, ExpectBOM) // UTF-16, LE, Expect + utf16BEIB = UTF16(BigEndian, IgnoreBOM) // UTF-16BE (atypical interpretation) + utf16BEUB = UTF16(BigEndian, UseBOM) // UTF-16 default + utf16BEEB = UTF16(BigEndian, ExpectBOM) // UTF-16 Expect +) + +func TestUTF16(t *testing.T) { + testCases := []struct { + desc string + src string + notEOF bool // the inverse of atEOF + sizeDst int + want string + nSrc int + err error + t transform.Transformer + }{{ + desc: "utf-16 IgnoreBOM dec: empty string", + t: utf16BEIB.NewDecoder(), + }, { + desc: "utf-16 UseBOM dec: empty string", + t: utf16BEUB.NewDecoder(), + }, { + desc: "utf-16 ExpectBOM dec: empty string", + err: ErrMissingBOM, + t: utf16BEEB.NewDecoder(), + }, { + desc: "utf-16 dec: BOM determines encoding BE (RFC 2781:3.3)", + src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", + sizeDst: 100, + want: "\U00012345=Ra", + nSrc: 12, + t: utf16BEUB.NewDecoder(), + }, { + desc: "utf-16 dec: BOM determines encoding LE (RFC 2781:3.3)", + src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", + sizeDst: 100, + want: "\U00012345=Ra", + nSrc: 12, + t: utf16LEUB.NewDecoder(), + }, { + desc: "utf-16 dec: BOM determines encoding LE, change default (RFC 2781:3.3)", + src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", + sizeDst: 100, + want: "\U00012345=Ra", + nSrc: 12, + t: utf16BEUB.NewDecoder(), + }, { + desc: "utf-16 dec: Fail on missing BOM when required", + src: "\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x00\x52\x00\x61", + sizeDst: 100, + want: "", + nSrc: 0, + err: ErrMissingBOM, + t: utf16BEEB.NewDecoder(), + }, { + desc: "utf-16 dec: SHOULD interpret text as big-endian when BOM not present (RFC 2781:4.3)", + src: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", + sizeDst: 100, + want: "\U00012345=Ra", + nSrc: 10, + t: utf16BEUB.NewDecoder(), + }, { + // This is an error according to RFC 2781. But errors in RFC 2781 are + // open to interpretations, so I guess this is fine. + desc: "utf-16le dec: incorrect BOM is an error (RFC 2781:4.1)", + src: "\xFE\xFF\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", + sizeDst: 100, + want: "\uFFFE\U00012345=Ra", + nSrc: 12, + t: utf16LEIB.NewDecoder(), + }, { + desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)", + src: "\U00012345=Ra", + sizeDst: 100, + want: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", + nSrc: 7, + t: utf16LEUB.NewEncoder(), + }, { + desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)", + src: "\U00012345=Ra", + sizeDst: 100, + want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", + nSrc: 7, + t: utf16BEUB.NewEncoder(), + }, { + desc: "utf-16le enc: MUST NOT write BOM (RFC 2781:3.3)", + src: "\U00012345=Ra", + sizeDst: 100, + want: "\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", + nSrc: 7, + t: utf16LEIB.NewEncoder(), + }, { + desc: "utf-16be dec: incorrect UTF-16: odd bytes", + src: "\x00", + sizeDst: 100, + want: "\uFFFD", + nSrc: 1, + t: utf16BEIB.NewDecoder(), + }, { + desc: "utf-16be dec: unpaired surrogate, odd bytes", + src: "\xD8\x45\x00", + sizeDst: 100, + want: "\uFFFD\uFFFD", + nSrc: 3, + t: utf16BEIB.NewDecoder(), + }, { + desc: "utf-16be dec: unpaired low surrogate + valid text", + src: "\xD8\x45\x00a", + sizeDst: 100, + want: "\uFFFDa", + nSrc: 4, + t: utf16BEIB.NewDecoder(), + }, { + desc: "utf-16be dec: unpaired low surrogate + valid text + single byte", + src: "\xD8\x45\x00ab", + sizeDst: 100, + want: "\uFFFDa\uFFFD", + nSrc: 5, + t: utf16BEIB.NewDecoder(), + }, { + desc: "utf-16le dec: unpaired high surrogate", + src: "\x00\x00\x00\xDC\x12\xD8", + sizeDst: 100, + want: "\x00\uFFFD\uFFFD", + nSrc: 6, + t: utf16LEIB.NewDecoder(), + }, { + desc: "utf-16be dec: two unpaired low surrogates", + src: "\xD8\x45\xD8\x12", + sizeDst: 100, + want: "\uFFFD\uFFFD", + nSrc: 4, + t: utf16BEIB.NewDecoder(), + }, { + desc: "utf-16be dec: short dst", + src: "\x00a", + sizeDst: 0, + want: "", + nSrc: 0, + t: utf16BEIB.NewDecoder(), + err: transform.ErrShortDst, + }, { + desc: "utf-16be dec: short dst surrogate", + src: "\xD8\xF5\xDC\x12", + sizeDst: 3, + want: "", + nSrc: 0, + t: utf16BEIB.NewDecoder(), + err: transform.ErrShortDst, + }, { + desc: "utf-16be dec: short dst trailing byte", + src: "\x00", + sizeDst: 2, + want: "", + nSrc: 0, + t: utf16BEIB.NewDecoder(), + err: transform.ErrShortDst, + }, { + desc: "utf-16be dec: short src", + src: "\x00", + notEOF: true, + sizeDst: 3, + want: "", + nSrc: 0, + t: utf16BEIB.NewDecoder(), + err: transform.ErrShortSrc, + }, { + desc: "utf-16 enc", + src: "\U00012345=Ra", + sizeDst: 100, + want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", + nSrc: 7, + t: utf16BEUB.NewEncoder(), + }, { + desc: "utf-16 enc: short dst normal", + src: "\U00012345=Ra", + sizeDst: 9, + want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52", + nSrc: 6, + t: utf16BEIB.NewEncoder(), + err: transform.ErrShortDst, + }, { + desc: "utf-16 enc: short dst surrogate", + src: "\U00012345=Ra", + sizeDst: 3, + want: "", + nSrc: 0, + t: utf16BEIB.NewEncoder(), + err: transform.ErrShortDst, + }, { + desc: "utf-16 enc: short src", + src: "\U00012345=Ra\xC2", + notEOF: true, + sizeDst: 100, + want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", + nSrc: 7, + t: utf16BEIB.NewEncoder(), + err: transform.ErrShortSrc, + }, { + desc: "utf-16be dec: don't change byte order mid-stream", + src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\xFF\xFE\x00\x52\x00\x61", + sizeDst: 100, + want: "\U00012345=\ufffeRa", + nSrc: 14, + t: utf16BEUB.NewDecoder(), + }, { + desc: "utf-16le dec: don't change byte order mid-stream", + src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x52\x00\x61\x00", + sizeDst: 100, + want: "\U00012345=\ufeff\ufffeRa", + nSrc: 16, + t: utf16LEUB.NewDecoder(), + }} + for i, tc := range testCases { + b := make([]byte, tc.sizeDst) + nDst, nSrc, err := tc.t.Transform(b, []byte(tc.src), !tc.notEOF) + if err != tc.err { + t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err) + } + if got := string(b[:nDst]); got != tc.want { + t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want) + } + if nSrc != tc.nSrc { + t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc) + } + } +} + func TestUTF8Decoder(t *testing.T) { testCases := []struct { desc string @@ -176,3 +453,47 @@ func TestUTF8Decoder(t *testing.T) { } } } + +func TestBOMOverride(t *testing.T) { + dec := BOMOverride(charmap.CodePage437.NewDecoder()) + dst := make([]byte, 100) + for i, tc := range []struct { + src string + atEOF bool + dst string + nSrc int + err error + }{ + 0: {"H\x82ll\x93", true, "Héllô", 5, nil}, + 1: {"\uFEFFHéllö", true, "Héllö", 10, nil}, + 2: {"\xFE\xFF\x00H\x00e\x00l\x00l\x00o", true, "Hello", 12, nil}, + 3: {"\xFF\xFEH\x00e\x00l\x00l\x00o\x00", true, "Hello", 12, nil}, + 4: {"\uFEFF", true, "", 3, nil}, + 5: {"\xFE\xFF", true, "", 2, nil}, + 6: {"\xFF\xFE", true, "", 2, nil}, + 7: {"\xEF\xBB", true, "\u2229\u2557", 2, nil}, + 8: {"\xEF", true, "\u2229", 1, nil}, + 9: {"", true, "", 0, nil}, + 10: {"\xFE", true, "\u25a0", 1, nil}, + 11: {"\xFF", true, "\u00a0", 1, nil}, + 12: {"\xEF\xBB", false, "", 0, transform.ErrShortSrc}, + 13: {"\xEF", false, "", 0, transform.ErrShortSrc}, + 14: {"", false, "", 0, transform.ErrShortSrc}, + 15: {"\xFE", false, "", 0, transform.ErrShortSrc}, + 16: {"\xFF", false, "", 0, transform.ErrShortSrc}, + 17: {"\xFF\xFE", false, "", 0, transform.ErrShortSrc}, + } { + dec.Reset() + nDst, nSrc, err := dec.Transform(dst, []byte(tc.src), tc.atEOF) + got := string(dst[:nDst]) + if nSrc != tc.nSrc { + t.Errorf("%d: nSrc: got %d; want %d", i, nSrc, tc.nSrc) + } + if got != tc.dst { + t.Errorf("%d: got %+q; want %+q", i, got, tc.dst) + } + if err != tc.err { + t.Errorf("%d: error: got %v; want %v", i, err, tc.err) + } + } +} diff --git a/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go b/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go index 6de88cbb8c..cd6158e5ea 100644 --- a/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go +++ b/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go @@ -7,6 +7,8 @@ package utf32 import ( "testing" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal/enctest" "golang.org/x/text/transform" ) @@ -19,6 +21,42 @@ var ( utf32BEEB = UTF32(BigEndian, ExpectBOM) // UTF-32 Expect ) +func TestBasics(t *testing.T) { + testCases := []struct { + e encoding.Encoding + encPrefix string + encSuffix string + encoded string + utf8 string + }{{ + e: utf32BEIB, + encoded: "\x00\x00\x00\x57\x00\x00\x00\xe4\x00\x01\xd5\x65", + utf8: "\x57\u00e4\U0001d565", + }, { + e: UTF32(BigEndian, ExpectBOM), + encPrefix: "\x00\x00\xfe\xff", + encoded: "\x00\x00\x00\x57\x00\x00\x00\xe4\x00\x01\xd5\x65", + utf8: "\x57\u00e4\U0001d565", + }, { + e: UTF32(LittleEndian, IgnoreBOM), + encoded: "\x57\x00\x00\x00\xe4\x00\x00\x00\x65\xd5\x01\x00", + utf8: "\x57\u00e4\U0001d565", + }, { + e: UTF32(LittleEndian, ExpectBOM), + encPrefix: "\xff\xfe\x00\x00", + encoded: "\x57\x00\x00\x00\xe4\x00\x00\x00\x65\xd5\x01\x00", + utf8: "\x57\u00e4\U0001d565", + }} + + for _, tc := range testCases { + enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, tc.encSuffix) + } +} + +func TestFiles(t *testing.T) { enctest.TestFile(t, utf32BEIB) } + +func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, utf32BEIB) } + func TestUTF32(t *testing.T) { testCases := []struct { desc string diff --git a/vendor/golang.org/x/text/feature/plural/common.go b/vendor/golang.org/x/text/feature/plural/common.go new file mode 100644 index 0000000000..fdcb373fdf --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/common.go @@ -0,0 +1,70 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package plural + +// Form defines a plural form. +// +// Not all languages support all forms. Also, the meaning of each form varies +// per language. It is important to note that the name of a form does not +// necessarily correspond one-to-one with the set of numbers. For instance, +// for Croation, One matches not only 1, but also 11, 21, etc. +// +// Each language must at least support the form "other". +type Form byte + +const ( + Other Form = iota + Zero + One + Two + Few + Many +) + +var countMap = map[string]Form{ + "other": Other, + "zero": Zero, + "one": One, + "two": Two, + "few": Few, + "many": Many, +} + +type pluralCheck struct { + // category: + // 3..7: opID + // 0..2: category + cat byte + setID byte +} + +// opID identifies the type of operand in the plural rule, being i, n or f. +// (v, w, and t are treated as filters in our implementation.) +type opID byte + +const ( + opMod opID = 0x1 // is '%' used? + opNotEqual opID = 0x2 // using "!=" to compare + opI opID = 0 << 2 // integers after taking the absolute value + opN opID = 1 << 2 // full number (must be integer) + opF opID = 2 << 2 // fraction + opV opID = 3 << 2 // number of visible digits + opW opID = 4 << 2 // number of visible digits without trailing zeros + opBretonM opID = 5 << 2 // hard-wired rule for Breton + opItalian800 opID = 6 << 2 // hard-wired rule for Italian + opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan +) +const ( + // Use this plural form to indicate the next rule needs to match as well. + // The last condition in the list will have the correct plural form. + andNext = 0x7 + formMask = 0x7 + + opShift = 3 + + // numN indicates the maximum integer, or maximum mod value, for which we + // have inclusion masks. + numN = 100 + // The common denominator of the modulo that is taken. + maxMod = 100 +) diff --git a/vendor/golang.org/x/text/feature/plural/data_test.go b/vendor/golang.org/x/text/feature/plural/data_test.go new file mode 100644 index 0000000000..8cffbbe9e1 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/data_test.go @@ -0,0 +1,190 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package plural + +type pluralTest struct { + locales string + form int + integer []string + decimal []string +} + +var ordinalTests = []pluralTest{ // 59 elements + 0: {locales: "af am ar bg bs ce cs da de dsb el es et eu fa fi fy gl gsw he hr hsb id in is iw ja km kn ko ky lt lv ml mn my nb nl pa pl prg pt root ru sh si sk sl sr sw ta te th tr ur uz yue zh zu", form: 0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 1: {locales: "sv", form: 2, integer: []string{"1", "2", "21", "22", "31", "32", "41", "42", "51", "52", "61", "62", "71", "72", "81", "82", "101", "1001"}, decimal: []string(nil)}, + 2: {locales: "sv", form: 0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 3: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 4: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 5: {locales: "hu", form: 2, integer: []string{"1", "5"}, decimal: []string(nil)}, + 6: {locales: "hu", form: 0, integer: []string{"0", "2~4", "6~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 7: {locales: "ne", form: 2, integer: []string{"1~4"}, decimal: []string(nil)}, + 8: {locales: "ne", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 9: {locales: "be", form: 4, integer: []string{"2", "3", "22", "23", "32", "33", "42", "43", "52", "53", "62", "63", "72", "73", "82", "83", "102", "1002"}, decimal: []string(nil)}, + 10: {locales: "be", form: 0, integer: []string{"0", "1", "4~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 11: {locales: "uk", form: 4, integer: []string{"3", "23", "33", "43", "53", "63", "73", "83", "103", "1003"}, decimal: []string(nil)}, + 12: {locales: "uk", form: 0, integer: []string{"0~2", "4~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 13: {locales: "kk", form: 5, integer: []string{"6", "9", "10", "16", "19", "20", "26", "29", "30", "36", "39", "40", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 14: {locales: "kk", form: 0, integer: []string{"0~5", "7", "8", "11~15", "17", "18", "21", "101", "1001"}, decimal: []string(nil)}, + 15: {locales: "it", form: 5, integer: []string{"8", "11", "80", "800"}, decimal: []string(nil)}, + 16: {locales: "it", form: 0, integer: []string{"0~7", "9", "10", "12~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 17: {locales: "ka", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 18: {locales: "ka", form: 5, integer: []string{"0", "2~16", "102", "1002"}, decimal: []string(nil)}, + 19: {locales: "ka", form: 0, integer: []string{"21~36", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 20: {locales: "sq", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 21: {locales: "sq", form: 5, integer: []string{"4", "24", "34", "44", "54", "64", "74", "84", "104", "1004"}, decimal: []string(nil)}, + 22: {locales: "sq", form: 0, integer: []string{"0", "2", "3", "5~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 23: {locales: "en", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, + 24: {locales: "en", form: 3, integer: []string{"2", "22", "32", "42", "52", "62", "72", "82", "102", "1002"}, decimal: []string(nil)}, + 25: {locales: "en", form: 4, integer: []string{"3", "23", "33", "43", "53", "63", "73", "83", "103", "1003"}, decimal: []string(nil)}, + 26: {locales: "en", form: 0, integer: []string{"0", "4~18", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 27: {locales: "mr", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 28: {locales: "mr", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, + 29: {locales: "mr", form: 4, integer: []string{"4"}, decimal: []string(nil)}, + 30: {locales: "mr", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 31: {locales: "ca", form: 2, integer: []string{"1", "3"}, decimal: []string(nil)}, + 32: {locales: "ca", form: 3, integer: []string{"2"}, decimal: []string(nil)}, + 33: {locales: "ca", form: 4, integer: []string{"4"}, decimal: []string(nil)}, + 34: {locales: "ca", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 35: {locales: "mk", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, + 36: {locales: "mk", form: 3, integer: []string{"2", "22", "32", "42", "52", "62", "72", "82", "102", "1002"}, decimal: []string(nil)}, + 37: {locales: "mk", form: 5, integer: []string{"7", "8", "27", "28", "37", "38", "47", "48", "57", "58", "67", "68", "77", "78", "87", "88", "107", "1007"}, decimal: []string(nil)}, + 38: {locales: "mk", form: 0, integer: []string{"0", "3~6", "9~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 39: {locales: "az", form: 2, integer: []string{"1", "2", "5", "7", "8", "11", "12", "15", "17", "18", "20~22", "25", "101", "1001"}, decimal: []string(nil)}, + 40: {locales: "az", form: 4, integer: []string{"3", "4", "13", "14", "23", "24", "33", "34", "43", "44", "53", "54", "63", "64", "73", "74", "100", "1003"}, decimal: []string(nil)}, + 41: {locales: "az", form: 5, integer: []string{"0", "6", "16", "26", "36", "40", "46", "56", "106", "1006"}, decimal: []string(nil)}, + 42: {locales: "az", form: 0, integer: []string{"9", "10", "19", "29", "30", "39", "49", "59", "69", "79", "109", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 43: {locales: "gu hi", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 44: {locales: "gu hi", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, + 45: {locales: "gu hi", form: 4, integer: []string{"4"}, decimal: []string(nil)}, + 46: {locales: "gu hi", form: 5, integer: []string{"6"}, decimal: []string(nil)}, + 47: {locales: "gu hi", form: 0, integer: []string{"0", "5", "7~20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 48: {locales: "as bn", form: 2, integer: []string{"1", "5", "7~10"}, decimal: []string(nil)}, + 49: {locales: "as bn", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, + 50: {locales: "as bn", form: 4, integer: []string{"4"}, decimal: []string(nil)}, + 51: {locales: "as bn", form: 5, integer: []string{"6"}, decimal: []string(nil)}, + 52: {locales: "as bn", form: 0, integer: []string{"0", "11~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 53: {locales: "cy", form: 1, integer: []string{"0", "7~9"}, decimal: []string(nil)}, + 54: {locales: "cy", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 55: {locales: "cy", form: 3, integer: []string{"2"}, decimal: []string(nil)}, + 56: {locales: "cy", form: 4, integer: []string{"3", "4"}, decimal: []string(nil)}, + 57: {locales: "cy", form: 5, integer: []string{"5", "6"}, decimal: []string(nil)}, + 58: {locales: "cy", form: 0, integer: []string{"10~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, +} // Size: 4272 bytes + +var cardinalTests = []pluralTest{ // 113 elements + 0: {locales: "bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo root sah ses sg th to vi wo yo yue zh", form: 0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 1: {locales: "am as bn fa gu hi kn mr zu", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}}, + 2: {locales: "am as bn fa gu hi kn mr zu", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~2.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 3: {locales: "ff fr hy kab", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.5"}}, + 4: {locales: "ff fr hy kab", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 5: {locales: "pt", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.5"}}, + 6: {locales: "pt", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 7: {locales: "ast ca de en et fi fy gl it ji nl sv sw ur yi", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 8: {locales: "ast ca de en et fi fy gl it ji nl sv sw ur yi", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 9: {locales: "si", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0", "0.1", "1.0", "0.00", "0.01", "1.00", "0.000", "0.001", "1.000", "0.0000", "0.0001", "1.0000"}}, + 10: {locales: "si", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.2~0.9", "1.1~1.8", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 11: {locales: "ak bh guw ln mg nso pa ti wa", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0", "1.0", "0.00", "1.00", "0.000", "1.000", "0.0000", "1.0000"}}, + 12: {locales: "ak bh guw ln mg nso pa ti wa", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 13: {locales: "tzm", form: 2, integer: []string{"0", "1", "11~24"}, decimal: []string{"0.0", "1.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "20.0", "21.0", "22.0", "23.0", "24.0"}}, + 14: {locales: "tzm", form: 0, integer: []string{"2~10", "100~106", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 15: {locales: "af asa az bem bez bg brx ce cgg chr ckb dv ee el eo es eu fo fur gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq sdh seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts ug uz ve vo vun wae xh xog", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 16: {locales: "af asa az bem bez bg brx ce cgg chr ckb dv ee el eo es eu fo fur gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq sdh seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts ug uz ve vo vun wae xh xog", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 17: {locales: "da", form: 2, integer: []string{"1"}, decimal: []string{"0.1~1.6"}}, + 18: {locales: "da", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "2.0~3.4", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 19: {locales: "is", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1~1.6", "10.1", "100.1", "1000.1"}}, + 20: {locales: "is", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 21: {locales: "mk", form: 2, integer: []string{"1", "11", "21", "31", "41", "51", "61", "71", "101", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, + 22: {locales: "mk", form: 0, integer: []string{"0", "2~10", "12~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.2~1.0", "1.2~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 23: {locales: "fil tl", form: 2, integer: []string{"0~3", "5", "7", "8", "10~13", "15", "17", "18", "20", "21", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.3", "0.5", "0.7", "0.8", "1.0~1.3", "1.5", "1.7", "1.8", "2.0", "2.1", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 24: {locales: "fil tl", form: 0, integer: []string{"4", "6", "9", "14", "16", "19", "24", "26", "104", "1004"}, decimal: []string{"0.4", "0.6", "0.9", "1.4", "1.6", "1.9", "2.4", "2.6", "10.4", "100.4", "1000.4"}}, + 25: {locales: "lv prg", form: 1, integer: []string{"0", "10~20", "30", "40", "50", "60", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 26: {locales: "lv prg", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1", "1.0", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, + 27: {locales: "lv prg", form: 0, integer: []string{"2~9", "22~29", "102", "1002"}, decimal: []string{"0.2~0.9", "1.2~1.9", "10.2", "100.2", "1000.2"}}, + 28: {locales: "lag", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, + 29: {locales: "lag", form: 2, integer: []string{"1"}, decimal: []string{"0.1~1.6"}}, + 30: {locales: "lag", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 31: {locales: "ksh", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, + 32: {locales: "ksh", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 33: {locales: "ksh", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 34: {locales: "iu kw naq se sma smi smj smn sms", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 35: {locales: "iu kw naq se sma smi smj smn sms", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, + 36: {locales: "iu kw naq se sma smi smj smn sms", form: 0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 37: {locales: "shi", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}}, + 38: {locales: "shi", form: 4, integer: []string{"2~10"}, decimal: []string{"2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "2.00", "3.00", "4.00", "5.00", "6.00", "7.00", "8.00"}}, + 39: {locales: "shi", form: 0, integer: []string{"11~26", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~1.9", "2.1~2.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 40: {locales: "mo ro", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 41: {locales: "mo ro", form: 4, integer: []string{"0", "2~16", "101", "1001"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 42: {locales: "mo ro", form: 0, integer: []string{"20~35", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 43: {locales: "bs hr sh sr", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, + 44: {locales: "bs hr sh sr", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string{"0.2~0.4", "1.2~1.4", "2.2~2.4", "3.2~3.4", "4.2~4.4", "5.2", "10.2", "100.2", "1000.2"}}, + 45: {locales: "bs hr sh sr", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.5~1.0", "1.5~2.0", "2.5~2.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 46: {locales: "gd", form: 2, integer: []string{"1", "11"}, decimal: []string{"1.0", "11.0", "1.00", "11.00", "1.000", "11.000", "1.0000"}}, + 47: {locales: "gd", form: 3, integer: []string{"2", "12"}, decimal: []string{"2.0", "12.0", "2.00", "12.00", "2.000", "12.000", "2.0000"}}, + 48: {locales: "gd", form: 4, integer: []string{"3~10", "13~19"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "3.00"}}, + 49: {locales: "gd", form: 0, integer: []string{"0", "20~34", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 50: {locales: "sl", form: 2, integer: []string{"1", "101", "201", "301", "401", "501", "601", "701", "1001"}, decimal: []string(nil)}, + 51: {locales: "sl", form: 3, integer: []string{"2", "102", "202", "302", "402", "502", "602", "702", "1002"}, decimal: []string(nil)}, + 52: {locales: "sl", form: 4, integer: []string{"3", "4", "103", "104", "203", "204", "303", "304", "403", "404", "503", "504", "603", "604", "703", "704", "1003"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 53: {locales: "sl", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 54: {locales: "dsb hsb", form: 2, integer: []string{"1", "101", "201", "301", "401", "501", "601", "701", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, + 55: {locales: "dsb hsb", form: 3, integer: []string{"2", "102", "202", "302", "402", "502", "602", "702", "1002"}, decimal: []string{"0.2", "1.2", "2.2", "3.2", "4.2", "5.2", "6.2", "7.2", "10.2", "100.2", "1000.2"}}, + 56: {locales: "dsb hsb", form: 4, integer: []string{"3", "4", "103", "104", "203", "204", "303", "304", "403", "404", "503", "504", "603", "604", "703", "704", "1003"}, decimal: []string{"0.3", "0.4", "1.3", "1.4", "2.3", "2.4", "3.3", "3.4", "4.3", "4.4", "5.3", "5.4", "6.3", "6.4", "7.3", "7.4", "10.3", "100.3", "1000.3"}}, + 57: {locales: "dsb hsb", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.5~1.0", "1.5~2.0", "2.5~2.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 58: {locales: "he iw", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 59: {locales: "he iw", form: 3, integer: []string{"2"}, decimal: []string(nil)}, + 60: {locales: "he iw", form: 5, integer: []string{"20", "30", "40", "50", "60", "70", "80", "90", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 61: {locales: "he iw", form: 0, integer: []string{"0", "3~17", "101", "1001"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 62: {locales: "cs sk", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 63: {locales: "cs sk", form: 4, integer: []string{"2~4"}, decimal: []string(nil)}, + 64: {locales: "cs sk", form: 5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 65: {locales: "cs sk", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 66: {locales: "pl", form: 2, integer: []string{"1"}, decimal: []string(nil)}, + 67: {locales: "pl", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string(nil)}, + 68: {locales: "pl", form: 5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 69: {locales: "pl", form: 0, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 70: {locales: "be", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "71.0", "81.0", "101.0", "1001.0"}}, + 71: {locales: "be", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string{"2.0", "3.0", "4.0", "22.0", "23.0", "24.0", "32.0", "33.0", "102.0", "1002.0"}}, + 72: {locales: "be", form: 5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "11.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 73: {locales: "be", form: 0, integer: []string(nil), decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.1", "1000.1"}}, + 74: {locales: "lt", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "71.0", "81.0", "101.0", "1001.0"}}, + 75: {locales: "lt", form: 4, integer: []string{"2~9", "22~29", "102", "1002"}, decimal: []string{"2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "22.0", "102.0", "1002.0"}}, + 76: {locales: "lt", form: 5, integer: []string(nil), decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.1", "1000.1"}}, + 77: {locales: "lt", form: 0, integer: []string{"0", "10~20", "30", "40", "50", "60", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 78: {locales: "mt", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 79: {locales: "mt", form: 4, integer: []string{"0", "2~10", "102~107", "1002"}, decimal: []string{"0.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "10.0", "102.0", "1002.0"}}, + 80: {locales: "mt", form: 5, integer: []string{"11~19", "111~117", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}}, + 81: {locales: "mt", form: 0, integer: []string{"20~35", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 82: {locales: "ru uk", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, + 83: {locales: "ru uk", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string(nil)}, + 84: {locales: "ru uk", form: 5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 85: {locales: "ru uk", form: 0, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 86: {locales: "br", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "81.0", "101.0", "1001.0"}}, + 87: {locales: "br", form: 3, integer: []string{"2", "22", "32", "42", "52", "62", "82", "102", "1002"}, decimal: []string{"2.0", "22.0", "32.0", "42.0", "52.0", "62.0", "82.0", "102.0", "1002.0"}}, + 88: {locales: "br", form: 4, integer: []string{"3", "4", "9", "23", "24", "29", "33", "34", "39", "43", "44", "49", "103", "1003"}, decimal: []string{"3.0", "4.0", "9.0", "23.0", "24.0", "29.0", "33.0", "34.0", "103.0", "1003.0"}}, + 89: {locales: "br", form: 5, integer: []string{"1000000"}, decimal: []string{"1000000.0", "1000000.00", "1000000.000"}}, + 90: {locales: "br", form: 0, integer: []string{"0", "5~8", "10~20", "100", "1000", "10000", "100000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0"}}, + 91: {locales: "ga", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 92: {locales: "ga", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, + 93: {locales: "ga", form: 4, integer: []string{"3~6"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "3.00", "4.00", "5.00", "6.00", "3.000", "4.000", "5.000", "6.000", "3.0000", "4.0000", "5.0000", "6.0000"}}, + 94: {locales: "ga", form: 5, integer: []string{"7~10"}, decimal: []string{"7.0", "8.0", "9.0", "10.0", "7.00", "8.00", "9.00", "10.00", "7.000", "8.000", "9.000", "10.000", "7.0000", "8.0000", "9.0000", "10.0000"}}, + 95: {locales: "ga", form: 0, integer: []string{"0", "11~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 96: {locales: "gv", form: 2, integer: []string{"1", "11", "21", "31", "41", "51", "61", "71", "101", "1001"}, decimal: []string(nil)}, + 97: {locales: "gv", form: 3, integer: []string{"2", "12", "22", "32", "42", "52", "62", "72", "102", "1002"}, decimal: []string(nil)}, + 98: {locales: "gv", form: 4, integer: []string{"0", "20", "40", "60", "80", "100", "120", "140", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, + 99: {locales: "gv", form: 5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 100: {locales: "gv", form: 0, integer: []string{"3~10", "13~19", "23", "103", "1003"}, decimal: []string(nil)}, + 101: {locales: "ar ars", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, + 102: {locales: "ar ars", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 103: {locales: "ar ars", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, + 104: {locales: "ar ars", form: 4, integer: []string{"3~10", "103~110", "1003"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "103.0", "1003.0"}}, + 105: {locales: "ar ars", form: 5, integer: []string{"11~26", "111", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}}, + 106: {locales: "ar ars", form: 0, integer: []string{"100~102", "200~202", "300~302", "400~402", "500~502", "600", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, + 107: {locales: "cy", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, + 108: {locales: "cy", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, + 109: {locales: "cy", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, + 110: {locales: "cy", form: 4, integer: []string{"3"}, decimal: []string{"3.0", "3.00", "3.000", "3.0000"}}, + 111: {locales: "cy", form: 5, integer: []string{"6"}, decimal: []string{"6.0", "6.00", "6.000", "6.0000"}}, + 112: {locales: "cy", form: 0, integer: []string{"4", "5", "7~20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, +} // Size: 8160 bytes + +// Total table size 12432 bytes (12KiB); checksum: 166DAB71 diff --git a/vendor/golang.org/x/text/feature/plural/gen.go b/vendor/golang.org/x/text/feature/plural/gen.go new file mode 100644 index 0000000000..a0de986a24 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/gen.go @@ -0,0 +1,513 @@ +// 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 ignore + +package main + +// This file generates data for the CLDR plural rules, as defined in +// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules +// +// We assume a slightly simplified grammar: +// +// condition = and_condition ('or' and_condition)* samples +// and_condition = relation ('and' relation)* +// relation = expr ('=' | '!=') range_list +// expr = operand ('%' '10' '0'* )? +// operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w' +// range_list = (range | value) (',' range_list)* +// range = value'..'value +// value = digit+ +// digit = 0|1|2|3|4|5|6|7|8|9 +// +// samples = ('@integer' sampleList)? +// ('@decimal' sampleList)? +// sampleList = sampleRange (',' sampleRange)* (',' ('…'|'...'))? +// sampleRange = decimalValue ('~' decimalValue)? +// decimalValue = value ('.' value)? +// +// Symbol Value +// n absolute value of the source number (integer and decimals). +// i integer digits of n. +// v number of visible fraction digits in n, with trailing zeros. +// w number of visible fraction digits in n, without trailing zeros. +// f visible fractional digits in n, with trailing zeros. +// t visible fractional digits in n, without trailing zeros. +// +// The algorithm for which the data is generated is based on the following +// observations +// +// - the number of different sets of numbers which the plural rules use to +// test inclusion is limited, +// - most numbers that are tested on are < 100 +// +// This allows us to define a bitmap for each number < 100 where a bit i +// indicates whether this number is included in some defined set i. +// The function matchPlural in plural.go defines how we can subsequently use +// this data to determine inclusion. +// +// There are a few languages for which this doesn't work. For one Italian and +// Azerbaijan, which both test against numbers > 100 for ordinals and Breton, +// which considers whether numbers are multiples of hundreds. The model here +// could be extended to handle Italian and Azerbaijan fairly easily (by +// considering the numbers 100, 200, 300, ..., 800, 900 in addition to the first +// 100), but for now it seems easier to just hard-code these cases. + +import ( + "bufio" + "bytes" + "flag" + "fmt" + "log" + "strconv" + "strings" + + "golang.org/x/text/internal" + "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.") + outputFile = flag.String("output", "tables.go", "output file") + outputTestFile = flag.String("testoutput", "data_test.go", "output file") + + draft = flag.String("draft", + "contributed", + `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) +) + +func main() { + gen.Init() + + const pkg = "plural" + + gen.Repackage("gen_common.go", "common.go", pkg) + // Read the CLDR zip file. + r := gen.OpenCLDRCoreZip() + defer r.Close() + + d := &cldr.Decoder{} + d.SetDirFilter("supplemental", "main") + d.SetSectionFilter("numbers", "plurals") + data, err := d.DecodeZip(r) + if err != nil { + log.Fatalf("DecodeZip: %v", err) + } + + w := gen.NewCodeWriter() + defer w.WriteGoFile(*outputFile, pkg) + + gen.WriteCLDRVersion(w) + + genPlurals(w, data) + + w = gen.NewCodeWriter() + defer w.WriteGoFile(*outputTestFile, pkg) + + genPluralsTests(w, data) +} + +type pluralTest struct { + locales string // space-separated list of locales for this test + form int // Use int instead of Form to simplify generation. + integer []string // Entries of the form \d+ or \d+~\d+ + decimal []string // Entries of the form \f+ or \f+ +~\f+, where f is \d+\.\d+ +} + +func genPluralsTests(w *gen.CodeWriter, data *cldr.CLDR) { + w.WriteType(pluralTest{}) + + for _, plurals := range data.Supplemental().Plurals { + if plurals.Type == "" { + // The empty type is reserved for plural ranges. + continue + } + tests := []pluralTest{} + + for _, pRules := range plurals.PluralRules { + for _, rule := range pRules.PluralRule { + test := pluralTest{ + locales: pRules.Locales, + form: int(countMap[rule.Count]), + } + scan := bufio.NewScanner(strings.NewReader(rule.Data())) + scan.Split(splitTokens) + var p *[]string + for scan.Scan() { + switch t := scan.Text(); t { + case "@integer": + p = &test.integer + case "@decimal": + p = &test.decimal + case ",", "…": + default: + if p != nil { + *p = append(*p, t) + } + } + } + tests = append(tests, test) + } + } + w.WriteVar(plurals.Type+"Tests", tests) + } +} + +func genPlurals(w *gen.CodeWriter, data *cldr.CLDR) { + for _, plurals := range data.Supplemental().Plurals { + if plurals.Type == "" { + continue + } + // Initialize setMap and inclusionMasks. They are already populated with + // a few entries to serve as an example and to assign nice numbers to + // common cases. + + // setMap contains sets of numbers represented by boolean arrays where + // a true value for element i means that the number i is included. + setMap := map[[numN]bool]int{ + // The above init func adds an entry for including all numbers. + [numN]bool{1: true}: 1, // fix {1} to a nice value + [numN]bool{2: true}: 2, // fix {2} to a nice value + [numN]bool{0: true}: 3, // fix {0} to a nice value + } + + // inclusionMasks contains bit masks for every number under numN to + // indicate in which set the number is included. Bit 1 << x will be set + // if it is included in set x. + inclusionMasks := [numN]uint64{ + // Note: these entries are not complete: more bits will be set along the way. + 0: 1 << 3, + 1: 1 << 1, + 2: 1 << 2, + } + + // Create set {0..99}. We will assign this set the identifier 0. + var all [numN]bool + for i := range all { + // Mark number i as being included in the set (which has identifier 0). + inclusionMasks[i] |= 1 << 0 + // Mark number i as included in the set. + all[i] = true + } + // Register the identifier for the set. + setMap[all] = 0 + + rules := []pluralCheck{} + index := []byte{0} + langMap := map[int]byte{0: 0} // From compact language index to index + + for _, pRules := range plurals.PluralRules { + // Parse the rules. + var conds []orCondition + for _, rule := range pRules.PluralRule { + form := countMap[rule.Count] + conds = parsePluralCondition(conds, rule.Data(), form) + } + // Encode the rules. + for _, c := range conds { + // If an or condition only has filters, we create an entry for + // this filter and the set that contains all values. + empty := true + for _, b := range c.used { + empty = empty && !b + } + if empty { + rules = append(rules, pluralCheck{ + cat: byte(opMod< 0xFF { + log.Fatalf("Too many entries for rules: %#x", len(rules)) + } + if len(index) > 0xFF { + log.Fatalf("Too many entries for index: %#x", len(index)) + } + if len(setMap) > 64 { // maximum number of bits. + log.Fatalf("Too many entries for setMap: %d", len(setMap)) + } + w.WriteComment( + "Slots used for %s: %X of 0xFF rules; %X of 0xFF indexes; %d of 64 sets", + plurals.Type, len(rules), len(index), len(setMap)) + // Prevent comment from attaching to the next entry. + fmt.Fprint(w, "\n\n") + } +} + +type orCondition struct { + original string // for debugging + + form Form + used [32]bool + set [32][numN]bool +} + +func (o *orCondition) add(op opID, mod int, v []int) (ok bool) { + ok = true + for _, x := range v { + if x >= maxMod { + ok = false + break + } + } + for i := 0; i < numN; i++ { + m := i + if mod != 0 { + m = i % mod + } + if !intIn(m, v) { + o.set[op][i] = false + } + } + if ok { + o.used[op] = true + } + return ok +} + +func intIn(x int, a []int) bool { + for _, y := range a { + if x == y { + return true + } + } + return false +} + +var operandIndex = map[string]opID{ + "i": opI, + "n": opN, + "f": opF, + "v": opV, + "w": opW, +} + +// parsePluralCondition parses the condition of a single pluralRule and appends +// the resulting or conditions to conds. +// +// Example rules: +// // Category "one" in English: only allow 1 with no visible fraction +// i = 1 and v = 0 @integer 1 +// +// // Category "few" in Czech: all numbers with visible fractions +// v != 0 @decimal ... +// +// // Category "zero" in Latvian: all multiples of 10 or the numbers 11-19 or +// // numbers with a fraction 11..19 and no trailing zeros. +// n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer ... +// +// @integer and @decimal are followed by examples and are not relevant for the +// rule itself. The are used here to signal the termination of the rule. +func parsePluralCondition(conds []orCondition, s string, f Form) []orCondition { + scan := bufio.NewScanner(strings.NewReader(s)) + scan.Split(splitTokens) + for { + cond := orCondition{original: s, form: f} + // Set all numbers to be allowed for all number classes and restrict + // from here on. + for i := range cond.set { + for j := range cond.set[i] { + cond.set[i][j] = true + } + } + andLoop: + for { + var token string + scan.Scan() // Must exist. + switch class := scan.Text(); class { + case "t": + class = "w" // equal to w for t == 0 + fallthrough + case "n", "i", "f", "v", "w": + op := scanToken(scan) + opCode := operandIndex[class] + mod := 0 + if op == "%" { + opCode |= opMod + + switch v := scanUint(scan); v { + case 10, 100: + mod = v + case 1000: + // A more general solution would be to allow checking + // against multiples of 100 and include entries for the + // numbers 100..900 in the inclusion masks. At the + // moment this would only help Azerbaijan and Italian. + + // Italian doesn't use '%', so this must be Azerbaijan. + cond.used[opAzerbaijan00s] = true + return append(conds, cond) + + case 1000000: + cond.used[opBretonM] = true + return append(conds, cond) + + default: + log.Fatalf("Modulo value not supported %d", v) + } + op = scanToken(scan) + } + if op != "=" && op != "!=" { + log.Fatalf("Unexpected op %q", op) + } + if op == "!=" { + opCode |= opNotEqual + } + a := []int{} + v := scanUint(scan) + if class == "w" && v != 0 { + log.Fatalf("Must compare against zero for operand type %q", class) + } + token = scanToken(scan) + for { + switch token { + case "..": + end := scanUint(scan) + for ; v <= end; v++ { + a = append(a, v) + } + token = scanToken(scan) + default: // ",", "or", "and", "@..." + a = append(a, v) + } + if token != "," { + break + } + v = scanUint(scan) + token = scanToken(scan) + } + if !cond.add(opCode, mod, a) { + // Detected large numbers. As we ruled out Azerbaijan, this + // must be the many rule for Italian ordinals. + cond.set[opItalian800] = cond.set[opN] + cond.used[opItalian800] = true + } + + case "@integer", "@decimal": // "other" entry: tests only. + return conds + default: + log.Fatalf("Unexpected operand class %q (%s)", class, s) + } + switch token { + case "or": + conds = append(conds, cond) + break andLoop + case "@integer", "@decimal": // examples + // There is always an example in practice, so we always terminate here. + if err := scan.Err(); err != nil { + log.Fatal(err) + } + return append(conds, cond) + case "and": + // keep accumulating + default: + log.Fatalf("Unexpected token %q", token) + } + } + } +} + +func scanToken(scan *bufio.Scanner) string { + scan.Scan() + return scan.Text() +} + +func scanUint(scan *bufio.Scanner) int { + scan.Scan() + val, err := strconv.ParseUint(scan.Text(), 10, 32) + if err != nil { + log.Fatal(err) + } + return int(val) +} + +// splitTokens can be used with bufio.Scanner to tokenize CLDR plural rules. +func splitTokens(data []byte, atEOF bool) (advance int, token []byte, err error) { + condTokens := [][]byte{ + []byte(".."), + []byte(","), + []byte("!="), + []byte("="), + } + advance, token, err = bufio.ScanWords(data, atEOF) + for _, t := range condTokens { + if len(t) >= len(token) { + continue + } + switch p := bytes.Index(token, t); { + case p == -1: + case p == 0: + advance = len(t) + token = token[:len(t)] + return advance - len(token) + len(t), token[:len(t)], err + case p < advance: + // Don't split when "=" overlaps "!=". + if t[0] == '=' && token[p-1] == '!' { + continue + } + advance = p + token = token[:p] + } + } + return advance, token, err +} diff --git a/vendor/golang.org/x/text/feature/plural/gen_common.go b/vendor/golang.org/x/text/feature/plural/gen_common.go new file mode 100644 index 0000000000..24aa41505a --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/gen_common.go @@ -0,0 +1,74 @@ +// 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 ignore + +package main + +// Form defines a plural form. +// +// Not all languages support all forms. Also, the meaning of each form varies +// per language. It is important to note that the name of a form does not +// necessarily correspond one-to-one with the set of numbers. For instance, +// for Croation, One matches not only 1, but also 11, 21, etc. +// +// Each language must at least support the form "other". +type Form byte + +const ( + Other Form = iota + Zero + One + Two + Few + Many +) + +var countMap = map[string]Form{ + "other": Other, + "zero": Zero, + "one": One, + "two": Two, + "few": Few, + "many": Many, +} + +type pluralCheck struct { + // category: + // 3..7: opID + // 0..2: category + cat byte + setID byte +} + +// opID identifies the type of operand in the plural rule, being i, n or f. +// (v, w, and t are treated as filters in our implementation.) +type opID byte + +const ( + opMod opID = 0x1 // is '%' used? + opNotEqual opID = 0x2 // using "!=" to compare + opI opID = 0 << 2 // integers after taking the absolute value + opN opID = 1 << 2 // full number (must be integer) + opF opID = 2 << 2 // fraction + opV opID = 3 << 2 // number of visible digits + opW opID = 4 << 2 // number of visible digits without trailing zeros + opBretonM opID = 5 << 2 // hard-wired rule for Breton + opItalian800 opID = 6 << 2 // hard-wired rule for Italian + opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan +) +const ( + // Use this plural form to indicate the next rule needs to match as well. + // The last condition in the list will have the correct plural form. + andNext = 0x7 + formMask = 0x7 + + opShift = 3 + + // numN indicates the maximum integer, or maximum mod value, for which we + // have inclusion masks. + numN = 100 + // The common denominator of the modulo that is taken. + maxMod = 100 +) diff --git a/vendor/golang.org/x/text/feature/plural/plural.go b/vendor/golang.org/x/text/feature/plural/plural.go new file mode 100644 index 0000000000..2b4cfe3214 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/plural.go @@ -0,0 +1,234 @@ +// 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. + +//go:generate go run gen.go gen_common.go + +// Package plural provides utilities for handling linguistic plurals in text. +// +// The definitions in this package are based on the plural rule handling defined +// in CLDR. See +// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for +// details. +package plural + +import ( + "golang.org/x/text/language" +) + +// Rules defines the plural rules for all languages for a certain plural type. +// +// +// This package is UNDER CONSTRUCTION and its API may change. +type Rules struct { + rules []pluralCheck + index []byte + langToIndex []byte + inclusionMasks []uint64 +} + +var ( + // Cardinal defines the plural rules for numbers indicating quantities. + Cardinal *Rules = cardinal + + // Ordinal defines the plural rules for numbers indicating position + // (first, second, etc.). + Ordinal *Rules = ordinal + + ordinal = &Rules{ + ordinalRules, + ordinalIndex, + ordinalLangToIndex, + ordinalInclusionMasks[:], + } + + cardinal = &Rules{ + cardinalRules, + cardinalIndex, + cardinalLangToIndex, + cardinalInclusionMasks[:], + } +) + +// getIntApprox converts the digits in slice digits[start:end] to an integer +// according to the following rules: +// - Let i be asInt(digits[start:end]), where out-of-range digits are assumed +// to be zero. +// - Result n is big if i / 10^nMod > 1. +// - Otherwise the result is i % 10^nMod. +// +// For example, if digits is {1, 2, 3} and start:end is 0:5, then the result +// for various values of nMod is: +// - when nMod == 2, n == big +// - when nMod == 3, n == big +// - when nMod == 4, n == big +// - when nMod == 5, n == 12300 +// - when nMod == 6, n == 12300 +// - when nMod == 7, n == 12300 +func getIntApprox(digits []byte, start, end, nMod, big int) (n int) { + // Leading 0 digits just result in 0. + p := start + if p < 0 { + p = 0 + } + // Range only over the part for which we have digits. + mid := end + if mid >= len(digits) { + mid = len(digits) + } + // Check digits more significant that nMod. + if q := end - nMod; q > 0 { + if q > mid { + q = mid + } + for ; p < q; p++ { + if digits[p] != 0 { + return big + } + } + } + for ; p < mid; p++ { + n = 10*n + int(digits[p]) + } + // Multiply for trailing zeros. + for ; p < end; p++ { + n *= 10 + } + return n +} + +// MatchDigits computes the plural form for the given language and the given +// decimal floating point digits. The digits are stored in big-endian order and +// are of value byte(0) - byte(9). The floating point position is indicated by +// exp and the number of visible decimals is scale. All leading and trailing +// zeros may be omitted from digits. +// +// The following table contains examples of possible arguments to represent +// the given numbers. +// decimal digits exp scale +// 123 []byte{1, 2, 3} 3 0 +// 123.4 []byte{1, 2, 3, 4} 3 1 +// 123.40 []byte{1, 2, 3, 4} 3 2 +// 100000 []byte{1} 6......0 +// 100000.00 []byte{1} 6......3 +func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form { + index, _ := language.CompactIndex(t) + endN := len(digits) + exp + + // Differentiate up to including mod 1000000 for the integer part. + n := getIntApprox(digits, 0, endN, 6, 1000000) + + // Differentiate up to including mod 100 for the fractional part. + f := getIntApprox(digits, endN, endN+scale, 2, 100) + + return matchPlural(p, index, n, f, scale) +} + +func validForms(p *Rules, t language.Tag) (forms []Form) { + index, _ := language.CompactIndex(t) + offset := p.langToIndex[index] + rules := p.rules[p.index[offset]:p.index[offset+1]] + + forms = append(forms, Other) + last := Other + for _, r := range rules { + if cat := Form(r.cat & formMask); cat != andNext && last != cat { + forms = append(forms, cat) + last = cat + } + } + return forms +} + +func (p *Rules) matchComponents(t language.Tag, n, f, scale int) Form { + index, _ := language.CompactIndex(t) + return matchPlural(p, index, n, f, scale) +} + +func matchPlural(p *Rules, index int, n, f, v int) Form { + nMask := p.inclusionMasks[n%maxMod] + // Compute the fMask inline in the rules below, as it is relatively rare. + // fMask := p.inclusionMasks[f%maxMod] + vMask := p.inclusionMasks[v%maxMod] + + // Do the matching + offset := p.langToIndex[index] + rules := p.rules[p.index[offset]:p.index[offset+1]] + for i := 0; i < len(rules); i++ { + rule := rules[i] + setBit := uint64(1 << rule.setID) + var skip bool + switch op := opID(rule.cat >> opShift); op { + case opI: // i = x + skip = n >= numN || nMask&setBit == 0 + + case opI | opNotEqual: // i != x + skip = n < numN && nMask&setBit != 0 + + case opI | opMod: // i % m = x + skip = nMask&setBit == 0 + + case opI | opMod | opNotEqual: // i % m != x + skip = nMask&setBit != 0 + + case opN: // n = x + skip = f != 0 || n >= numN || nMask&setBit == 0 + + case opN | opNotEqual: // n != x + skip = f == 0 && n < numN && nMask&setBit != 0 + + case opN | opMod: // n % m = x + skip = f != 0 || nMask&setBit == 0 + + case opN | opMod | opNotEqual: // n % m != x + skip = f == 0 && nMask&setBit != 0 + + case opF: // f = x + skip = f >= numN || p.inclusionMasks[f%maxMod]&setBit == 0 + + case opF | opNotEqual: // f != x + skip = f < numN && p.inclusionMasks[f%maxMod]&setBit != 0 + + case opF | opMod: // f % m = x + skip = p.inclusionMasks[f%maxMod]&setBit == 0 + + case opF | opMod | opNotEqual: // f % m != x + skip = p.inclusionMasks[f%maxMod]&setBit != 0 + + case opV: // v = x + skip = v < numN && vMask&setBit == 0 + + case opV | opNotEqual: // v != x + skip = v < numN && vMask&setBit != 0 + + case opW: // w == 0 + skip = f != 0 + + case opW | opNotEqual: // w != 0 + skip = f == 0 + + // Hard-wired rules that cannot be handled by our algorithm. + + case opBretonM: + skip = f != 0 || n == 0 || n%1000000 != 0 + + case opAzerbaijan00s: + // 100,200,300,400,500,600,700,800,900 + skip = n == 0 || n >= 1000 || n%100 != 0 + + case opItalian800: + skip = (f != 0 || n >= numN || nMask&setBit == 0) && n != 800 + } + if skip { + // advance over AND entries. + for ; i < len(rules) && rules[i].cat&formMask == andNext; i++ { + } + continue + } + // return if we have a final entry. + if cat := rule.cat & formMask; cat != andNext { + return Form(cat) + } + } + return Other +} diff --git a/vendor/golang.org/x/text/feature/plural/plural_test.go b/vendor/golang.org/x/text/feature/plural/plural_test.go new file mode 100644 index 0000000000..e5524c59ab --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/plural_test.go @@ -0,0 +1,203 @@ +// 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 plural + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "testing" + + "golang.org/x/text/language" +) + +func TestGetIntApprox(t *testing.T) { + const big = 1234567890 + testCases := []struct { + digits string + start int + end int + nMod int + want int + }{ + {"123", 0, 1, 1, 1}, + {"123", 0, 2, 1, big}, + {"123", 0, 2, 2, 12}, + {"123", 3, 4, 2, 0}, + {"12345", 3, 4, 2, 4}, + + {"123", 0, 5, 2, big}, + {"123", 0, 5, 3, big}, + {"123", 0, 5, 4, big}, + {"123", 0, 5, 5, 12300}, + {"123", 0, 5, 6, 12300}, + {"123", 0, 5, 7, 12300}, + + // Translation of examples in MatchDigits. + // Integer parts + {"123", 0, 3, 3, 123}, // 123 + {"1234", 0, 3, 3, 123}, // 123.4 + {"1", 0, 6, 8, 100000}, // 100000 + + // Fraction parts + {"123", 3, 3, 3, 0}, // 123 + {"1234", 3, 4, 3, 4}, // 123.4 + {"1234", 3, 5, 3, 40}, // 123.40 + {"1", 6, 8, 8, 0}, // 100000.00 + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s:%d:%d/%d", tc.digits, tc.start, tc.end, tc.nMod), func(t *testing.T) { + got := getIntApprox(mkDigits(tc.digits), tc.start, tc.end, tc.nMod, big) + if got != tc.want { + t.Errorf("got %d; want %d", got, tc.want) + } + }) + } +} + +func mkDigits(s string) []byte { + b := []byte(s) + for i := range b { + b[i] -= '0' + } + return b +} + +func TestValidForms(t *testing.T) { + testCases := []struct { + tag language.Tag + want []Form + }{ + {language.AmericanEnglish, []Form{Other, One}}, + {language.Portuguese, []Form{Other, One}}, + {language.Latvian, []Form{Other, Zero, One}}, + {language.Arabic, []Form{Other, Zero, One, Two, Few, Many}}, + {language.Russian, []Form{Other, One, Few, Many}}, + } + for _, tc := range testCases { + got := validForms(cardinal, tc.tag) + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("validForms(%v): got %v; want %v", tc.tag, got, tc.want) + } + } +} + +func TestOrdinal(t *testing.T) { + testPlurals(t, Ordinal, ordinalTests) +} + +func TestCardinal(t *testing.T) { + testPlurals(t, Cardinal, cardinalTests) +} + +func testPlurals(t *testing.T, p *Rules, testCases []pluralTest) { + for _, tc := range testCases { + for _, loc := range strings.Split(tc.locales, " ") { + tag := language.MustParse(loc) + // Test integers + for _, s := range tc.integer { + a := strings.Split(s, "~") + from := parseUint(t, a[0]) + to := from + if len(a) > 1 { + to = parseUint(t, a[1]) + } + for n := from; n <= to; n++ { + t.Run(fmt.Sprintf("%s/int(%d)", loc, n), func(t *testing.T) { + if f := p.matchComponents(tag, n, 0, 0); f != Form(tc.form) { + t.Errorf("matchComponents: got %v; want %v", f, Form(tc.form)) + } + digits := []byte(fmt.Sprint(n)) + for i := range digits { + digits[i] -= '0' + } + if f := p.MatchDigits(tag, digits, 0, 0); f != Form(tc.form) { + t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form)) + } + }) + } + } + // Test decimals + for _, s := range tc.decimal { + a := strings.Split(s, "~") + from, scale := parseFixedPoint(t, a[0]) + to := from + if len(a) > 1 { + var toScale int + if to, toScale = parseFixedPoint(t, a[1]); toScale != scale { + t.Fatalf("%s:%s: non-matching scales %d versus %d", loc, s, scale, toScale) + } + } + m := 1 + for i := 0; i < scale; i++ { + m *= 10 + } + for n := from; n <= to; n++ { + num := fmt.Sprintf("%[1]d.%0[3]*[2]d", n/m, n%m, scale) + name := fmt.Sprintf("%s:dec(%s)", loc, num) + t.Run(name, func(t *testing.T) { + if f := p.matchComponents(tag, n/m, n%m, scale); f != Form(tc.form) { + t.Errorf("matchComponents: got %v; want %v", f, Form(tc.form)) + } + digits := []byte(strings.Replace(num, ".", "", 1)) + for i := range digits { + digits[i] -= '0' + } + if f := p.MatchDigits(tag, digits, -scale, scale); f != Form(tc.form) { + t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form)) + } + }) + } + } + } + } +} + +func parseUint(t *testing.T, s string) int { + val, err := strconv.ParseUint(s, 10, 32) + if err != nil { + t.Fatal(err) + } + return int(val) +} + +func parseFixedPoint(t *testing.T, s string) (val, scale int) { + p := strings.Index(s, ".") + s = strings.Replace(s, ".", "", 1) + v, err := strconv.ParseUint(s, 10, 32) + if err != nil { + t.Fatal(err) + } + return int(v), len(s) - p +} + +func BenchmarkPluralSimpleCases(b *testing.B) { + p := Cardinal + en, _ := language.CompactIndex(language.English) + zh, _ := language.CompactIndex(language.Chinese) + for i := 0; i < b.N; i++ { + matchPlural(p, en, 0, 0, 0) // 0 + matchPlural(p, en, 1, 0, 0) // 1 + matchPlural(p, en, 2, 12, 3) // 2.120 + matchPlural(p, zh, 0, 0, 0) // 0 + matchPlural(p, zh, 1, 0, 0) // 1 + matchPlural(p, zh, 2, 12, 3) // 2.120 + } +} + +func BenchmarkPluralComplexCases(b *testing.B) { + p := Cardinal + ar, _ := language.CompactIndex(language.Arabic) + lv, _ := language.CompactIndex(language.Latvian) + for i := 0; i < b.N; i++ { + matchPlural(p, lv, 0, 19, 2) // 0.19 + matchPlural(p, lv, 11, 0, 3) // 11.000 + matchPlural(p, lv, 100, 123, 4) // 0.1230 + matchPlural(p, ar, 0, 0, 0) // 0 + matchPlural(p, ar, 110, 0, 0) // 110 + matchPlural(p, ar, 99, 99, 2) // 99.99 + } +} diff --git a/vendor/golang.org/x/text/feature/plural/tables.go b/vendor/golang.org/x/text/feature/plural/tables.go new file mode 100644 index 0000000000..cdbc93a171 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/tables.go @@ -0,0 +1,540 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package plural + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "31" + +var ordinalRules = []pluralCheck{ // 58 elements + 0: {cat: 0x2f, setID: 0x4}, + 1: {cat: 0x3a, setID: 0x5}, + 2: {cat: 0x22, setID: 0x1}, + 3: {cat: 0x22, setID: 0x6}, + 4: {cat: 0x22, setID: 0x7}, + 5: {cat: 0x2f, setID: 0x8}, + 6: {cat: 0x3c, setID: 0x9}, + 7: {cat: 0x2f, setID: 0xa}, + 8: {cat: 0x3c, setID: 0xb}, + 9: {cat: 0x2d, setID: 0xc}, + 10: {cat: 0x2d, setID: 0xd}, + 11: {cat: 0x2f, setID: 0xe}, + 12: {cat: 0x35, setID: 0x3}, + 13: {cat: 0xc5, setID: 0xf}, + 14: {cat: 0x2, setID: 0x1}, + 15: {cat: 0x5, setID: 0x3}, + 16: {cat: 0xd, setID: 0x10}, + 17: {cat: 0x22, setID: 0x1}, + 18: {cat: 0x2f, setID: 0x11}, + 19: {cat: 0x3d, setID: 0x12}, + 20: {cat: 0x2f, setID: 0x13}, + 21: {cat: 0x3a, setID: 0x14}, + 22: {cat: 0x2f, setID: 0x15}, + 23: {cat: 0x3b, setID: 0x16}, + 24: {cat: 0x2f, setID: 0xa}, + 25: {cat: 0x3c, setID: 0xb}, + 26: {cat: 0x22, setID: 0x1}, + 27: {cat: 0x23, setID: 0x17}, + 28: {cat: 0x24, setID: 0x18}, + 29: {cat: 0x22, setID: 0x19}, + 30: {cat: 0x23, setID: 0x2}, + 31: {cat: 0x24, setID: 0x18}, + 32: {cat: 0xf, setID: 0x13}, + 33: {cat: 0x1a, setID: 0x14}, + 34: {cat: 0xf, setID: 0x15}, + 35: {cat: 0x1b, setID: 0x16}, + 36: {cat: 0xf, setID: 0x1a}, + 37: {cat: 0x1d, setID: 0x1b}, + 38: {cat: 0xa, setID: 0x1c}, + 39: {cat: 0xa, setID: 0x1d}, + 40: {cat: 0xc, setID: 0x1e}, + 41: {cat: 0xe4, setID: 0x0}, + 42: {cat: 0x5, setID: 0x3}, + 43: {cat: 0xd, setID: 0xc}, + 44: {cat: 0xd, setID: 0x1f}, + 45: {cat: 0x22, setID: 0x1}, + 46: {cat: 0x23, setID: 0x17}, + 47: {cat: 0x24, setID: 0x18}, + 48: {cat: 0x25, setID: 0x20}, + 49: {cat: 0x22, setID: 0x21}, + 50: {cat: 0x23, setID: 0x17}, + 51: {cat: 0x24, setID: 0x18}, + 52: {cat: 0x25, setID: 0x20}, + 53: {cat: 0x21, setID: 0x22}, + 54: {cat: 0x22, setID: 0x1}, + 55: {cat: 0x23, setID: 0x2}, + 56: {cat: 0x24, setID: 0x23}, + 57: {cat: 0x25, setID: 0x24}, +} // Size: 140 bytes + +var ordinalIndex = []uint8{ // 20 elements + 0x00, 0x00, 0x02, 0x03, 0x04, 0x05, 0x07, 0x09, + 0x0d, 0x0e, 0x11, 0x14, 0x1a, 0x1d, 0x20, 0x26, + 0x2d, 0x31, 0x35, 0x3a, +} // Size: 44 bytes + +var ordinalLangToIndex = []uint8{ // 754 elements + // Entry 0 - 3F + 0x00, 0x0d, 0x0b, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x05, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 40 - 7F + 0x00, 0x00, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x12, 0x12, 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, + // Entry 80 - BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + // Entry C0 - FF + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 100 - 13F + 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, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + // Entry 140 - 17F + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 180 - 1BF + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x07, 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, + // Entry 1C0 - 1FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x02, 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, 0x0e, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x02, 0x02, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 200 - 23F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, + 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, 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, + // Entry 240 - 27F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 280 - 2BF + 0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, + // Entry 2C0 - 2FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, + 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, 0x00, + 0x00, 0x00, +} // Size: 778 bytes + +var ordinalInclusionMasks = []uint64{ // 100 elements + // Entry 0 - 1F + 0x0000000400004009, 0x00000002120800d3, 0x0000000010a10195, 0x0000000842810581, + 0x0000000841030081, 0x0000001210010041, 0x0000001100011001, 0x0000000614010001, + 0x0000000614018001, 0x0000000600012001, 0x0000000200014001, 0x0000000010198031, + 0x0000000010610331, 0x0000000040010f01, 0x0000000040070001, 0x0000000010010001, + 0x0000000000011001, 0x000000001c010001, 0x000000001c010001, 0x0000000000012001, + 0x0000000020014001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, + 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, + 0x0000000014000001, 0x0000000000002001, 0x0000000000004001, 0x0000000010080011, + // Entry 20 - 3F + 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, + 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, + 0x0000000080014001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, + 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, + 0x0000000014000001, 0x0000000000002001, 0x0000000020004001, 0x0000000010080011, + 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, + 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, + 0x0000000080014001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, + // Entry 40 - 5F + 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, + 0x0000000014000001, 0x0000000000002001, 0x0000000020004001, 0x0000000010080011, + 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, + 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, + 0x000000002001c001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, + 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, + 0x0000000014000001, 0x0000000000002001, 0x0000000080004001, 0x0000000010080011, + 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, + // Entry 60 - 7F + 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, +} // Size: 824 bytes + +// Slots used for ordinal: 3A of 0xFF rules; 14 of 0xFF indexes; 37 of 64 sets + +var cardinalRules = []pluralCheck{ // 166 elements + 0: {cat: 0x2, setID: 0x3}, + 1: {cat: 0x22, setID: 0x1}, + 2: {cat: 0x2, setID: 0x4}, + 3: {cat: 0x2, setID: 0x4}, + 4: {cat: 0x7, setID: 0x1}, + 5: {cat: 0x62, setID: 0x3}, + 6: {cat: 0x22, setID: 0x4}, + 7: {cat: 0x7, setID: 0x3}, + 8: {cat: 0x42, setID: 0x1}, + 9: {cat: 0x22, setID: 0x4}, + 10: {cat: 0x22, setID: 0x4}, + 11: {cat: 0x22, setID: 0x5}, + 12: {cat: 0x22, setID: 0x1}, + 13: {cat: 0x22, setID: 0x1}, + 14: {cat: 0x7, setID: 0x4}, + 15: {cat: 0x92, setID: 0x3}, + 16: {cat: 0xf, setID: 0x6}, + 17: {cat: 0x1f, setID: 0x7}, + 18: {cat: 0x82, setID: 0x3}, + 19: {cat: 0x92, setID: 0x3}, + 20: {cat: 0xf, setID: 0x6}, + 21: {cat: 0x62, setID: 0x3}, + 22: {cat: 0x4a, setID: 0x6}, + 23: {cat: 0x7, setID: 0x8}, + 24: {cat: 0x62, setID: 0x3}, + 25: {cat: 0x1f, setID: 0x9}, + 26: {cat: 0x62, setID: 0x3}, + 27: {cat: 0x5f, setID: 0x9}, + 28: {cat: 0x72, setID: 0x3}, + 29: {cat: 0x29, setID: 0xa}, + 30: {cat: 0x29, setID: 0xb}, + 31: {cat: 0x4f, setID: 0xb}, + 32: {cat: 0x61, setID: 0x2}, + 33: {cat: 0x2f, setID: 0x6}, + 34: {cat: 0x3a, setID: 0x7}, + 35: {cat: 0x4f, setID: 0x6}, + 36: {cat: 0x5f, setID: 0x7}, + 37: {cat: 0x62, setID: 0x2}, + 38: {cat: 0x4f, setID: 0x6}, + 39: {cat: 0x72, setID: 0x2}, + 40: {cat: 0x21, setID: 0x3}, + 41: {cat: 0x7, setID: 0x4}, + 42: {cat: 0x32, setID: 0x3}, + 43: {cat: 0x21, setID: 0x3}, + 44: {cat: 0x22, setID: 0x1}, + 45: {cat: 0x22, setID: 0x1}, + 46: {cat: 0x23, setID: 0x2}, + 47: {cat: 0x2, setID: 0x3}, + 48: {cat: 0x22, setID: 0x1}, + 49: {cat: 0x24, setID: 0xc}, + 50: {cat: 0x7, setID: 0x1}, + 51: {cat: 0x62, setID: 0x3}, + 52: {cat: 0x74, setID: 0x3}, + 53: {cat: 0x24, setID: 0x3}, + 54: {cat: 0x2f, setID: 0xd}, + 55: {cat: 0x34, setID: 0x1}, + 56: {cat: 0xf, setID: 0x6}, + 57: {cat: 0x1f, setID: 0x7}, + 58: {cat: 0x62, setID: 0x3}, + 59: {cat: 0x4f, setID: 0x6}, + 60: {cat: 0x5a, setID: 0x7}, + 61: {cat: 0xf, setID: 0xe}, + 62: {cat: 0x1f, setID: 0xf}, + 63: {cat: 0x64, setID: 0x3}, + 64: {cat: 0x4f, setID: 0xe}, + 65: {cat: 0x5c, setID: 0xf}, + 66: {cat: 0x22, setID: 0x10}, + 67: {cat: 0x23, setID: 0x11}, + 68: {cat: 0x24, setID: 0x12}, + 69: {cat: 0xf, setID: 0x1}, + 70: {cat: 0x62, setID: 0x3}, + 71: {cat: 0xf, setID: 0x2}, + 72: {cat: 0x63, setID: 0x3}, + 73: {cat: 0xf, setID: 0x13}, + 74: {cat: 0x64, setID: 0x3}, + 75: {cat: 0x74, setID: 0x3}, + 76: {cat: 0xf, setID: 0x1}, + 77: {cat: 0x62, setID: 0x3}, + 78: {cat: 0x4a, setID: 0x1}, + 79: {cat: 0xf, setID: 0x2}, + 80: {cat: 0x63, setID: 0x3}, + 81: {cat: 0x4b, setID: 0x2}, + 82: {cat: 0xf, setID: 0x13}, + 83: {cat: 0x64, setID: 0x3}, + 84: {cat: 0x4c, setID: 0x13}, + 85: {cat: 0x7, setID: 0x1}, + 86: {cat: 0x62, setID: 0x3}, + 87: {cat: 0x7, setID: 0x2}, + 88: {cat: 0x63, setID: 0x3}, + 89: {cat: 0x2f, setID: 0xa}, + 90: {cat: 0x37, setID: 0x14}, + 91: {cat: 0x65, setID: 0x3}, + 92: {cat: 0x7, setID: 0x1}, + 93: {cat: 0x62, setID: 0x3}, + 94: {cat: 0x7, setID: 0x15}, + 95: {cat: 0x64, setID: 0x3}, + 96: {cat: 0x75, setID: 0x3}, + 97: {cat: 0x7, setID: 0x1}, + 98: {cat: 0x62, setID: 0x3}, + 99: {cat: 0xf, setID: 0xe}, + 100: {cat: 0x1f, setID: 0xf}, + 101: {cat: 0x64, setID: 0x3}, + 102: {cat: 0xf, setID: 0x16}, + 103: {cat: 0x17, setID: 0x1}, + 104: {cat: 0x65, setID: 0x3}, + 105: {cat: 0xf, setID: 0x17}, + 106: {cat: 0x65, setID: 0x3}, + 107: {cat: 0xf, setID: 0xf}, + 108: {cat: 0x65, setID: 0x3}, + 109: {cat: 0x2f, setID: 0x6}, + 110: {cat: 0x3a, setID: 0x7}, + 111: {cat: 0x2f, setID: 0xe}, + 112: {cat: 0x3c, setID: 0xf}, + 113: {cat: 0x2d, setID: 0xa}, + 114: {cat: 0x2d, setID: 0x17}, + 115: {cat: 0x2d, setID: 0x18}, + 116: {cat: 0x2f, setID: 0x6}, + 117: {cat: 0x3a, setID: 0xb}, + 118: {cat: 0x2f, setID: 0x19}, + 119: {cat: 0x3c, setID: 0xb}, + 120: {cat: 0x55, setID: 0x3}, + 121: {cat: 0x22, setID: 0x1}, + 122: {cat: 0x24, setID: 0x3}, + 123: {cat: 0x2c, setID: 0xc}, + 124: {cat: 0x2d, setID: 0xb}, + 125: {cat: 0xf, setID: 0x6}, + 126: {cat: 0x1f, setID: 0x7}, + 127: {cat: 0x62, setID: 0x3}, + 128: {cat: 0xf, setID: 0xe}, + 129: {cat: 0x1f, setID: 0xf}, + 130: {cat: 0x64, setID: 0x3}, + 131: {cat: 0xf, setID: 0xa}, + 132: {cat: 0x65, setID: 0x3}, + 133: {cat: 0xf, setID: 0x17}, + 134: {cat: 0x65, setID: 0x3}, + 135: {cat: 0xf, setID: 0x18}, + 136: {cat: 0x65, setID: 0x3}, + 137: {cat: 0x2f, setID: 0x6}, + 138: {cat: 0x3a, setID: 0x1a}, + 139: {cat: 0x2f, setID: 0x1b}, + 140: {cat: 0x3b, setID: 0x1c}, + 141: {cat: 0x2f, setID: 0x1d}, + 142: {cat: 0x3c, setID: 0x1e}, + 143: {cat: 0x37, setID: 0x3}, + 144: {cat: 0xa5, setID: 0x0}, + 145: {cat: 0x22, setID: 0x1}, + 146: {cat: 0x23, setID: 0x2}, + 147: {cat: 0x24, setID: 0x1f}, + 148: {cat: 0x25, setID: 0x20}, + 149: {cat: 0xf, setID: 0x6}, + 150: {cat: 0x62, setID: 0x3}, + 151: {cat: 0xf, setID: 0x1b}, + 152: {cat: 0x63, setID: 0x3}, + 153: {cat: 0xf, setID: 0x21}, + 154: {cat: 0x64, setID: 0x3}, + 155: {cat: 0x75, setID: 0x3}, + 156: {cat: 0x21, setID: 0x3}, + 157: {cat: 0x22, setID: 0x1}, + 158: {cat: 0x23, setID: 0x2}, + 159: {cat: 0x2c, setID: 0x22}, + 160: {cat: 0x2d, setID: 0x5}, + 161: {cat: 0x21, setID: 0x3}, + 162: {cat: 0x22, setID: 0x1}, + 163: {cat: 0x23, setID: 0x2}, + 164: {cat: 0x24, setID: 0x23}, + 165: {cat: 0x25, setID: 0x24}, +} // Size: 356 bytes + +var cardinalIndex = []uint8{ // 36 elements + 0x00, 0x00, 0x02, 0x03, 0x04, 0x06, 0x09, 0x0a, + 0x0c, 0x0d, 0x10, 0x14, 0x17, 0x1d, 0x28, 0x2b, + 0x2d, 0x2f, 0x32, 0x38, 0x42, 0x45, 0x4c, 0x55, + 0x5c, 0x61, 0x6d, 0x74, 0x79, 0x7d, 0x89, 0x91, + 0x95, 0x9c, 0xa1, 0xa6, +} // Size: 60 bytes + +var cardinalLangToIndex = []uint8{ // 754 elements + // Entry 0 - 3F + 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x00, 0x00, + 0x06, 0x06, 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x01, 0x01, 0x08, 0x08, 0x04, 0x04, + 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x1a, + 0x1a, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, + // Entry 40 - 7F + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x1e, 0x08, 0x08, 0x13, 0x00, 0x00, 0x13, + 0x13, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, + 0x18, 0x00, 0x00, 0x22, 0x22, 0x09, 0x09, 0x09, + 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x00, 0x00, 0x16, 0x16, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + // Entry 80 - BF + 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + // Entry C0 - FF + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + // Entry 100 - 13F + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x08, + 0x08, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x04, 0x04, 0x0c, 0x0c, 0x08, + 0x08, 0x08, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + // Entry 140 - 17F + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x08, 0x08, 0x04, 0x04, 0x1f, 0x1f, 0x14, + 0x14, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x01, + 0x01, 0x06, 0x00, 0x00, 0x20, 0x20, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x17, 0x17, 0x01, 0x01, + 0x13, 0x13, 0x13, 0x16, 0x16, 0x08, 0x08, 0x02, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + // Entry 180 - 1BF + 0x0a, 0x04, 0x04, 0x04, 0x04, 0x04, 0x10, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, + 0x08, 0x02, 0x02, 0x08, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x0f, 0x0f, + 0x08, 0x10, 0x10, 0x08, 0x08, 0x0e, 0x0e, 0x08, + // Entry 1C0 - 1FF + 0x08, 0x08, 0x08, 0x00, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0x0d, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x06, 0x00, 0x00, 0x08, 0x08, 0x0b, 0x0b, + 0x08, 0x08, 0x08, 0x08, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x10, 0x10, 0x08, 0x08, 0x08, + // Entry 200 - 23F + 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x08, 0x06, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, + 0x00, 0x00, 0x06, 0x06, 0x08, 0x19, 0x19, 0x0d, + 0x0d, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + // Entry 240 - 27F + 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, + 0x12, 0x12, 0x12, 0x08, 0x08, 0x1d, 0x1d, 0x1d, + 0x1d, 0x1d, 0x1d, 0x1d, 0x00, 0x00, 0x08, 0x08, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x10, + 0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x11, 0x00, 0x00, 0x11, 0x11, 0x05, 0x05, + 0x18, 0x18, 0x15, 0x15, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + // Entry 280 - 2BF + 0x08, 0x08, 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, + 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, + 0x07, 0x07, 0x08, 0x08, 0x1d, 0x1d, 0x04, 0x04, + // Entry 2C0 - 2FF + 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x00, + 0x08, 0x08, 0x08, 0x00, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, +} // Size: 778 bytes + +var cardinalInclusionMasks = []uint64{ // 100 elements + // Entry 0 - 1F + 0x0000000200500419, 0x0000000000512153, 0x000000000a327105, 0x0000000ca23c7101, + 0x00000004a23c7201, 0x0000000482943001, 0x0000001482943201, 0x0000000502943001, + 0x0000000502943001, 0x0000000522943201, 0x0000000540543401, 0x00000000454128e1, + 0x000000005b02e821, 0x000000006304e821, 0x000000006304ea21, 0x0000000042842821, + 0x0000000042842a21, 0x0000000042842821, 0x0000000042842821, 0x0000000062842a21, + 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, + 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, + 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061, + // Entry 20 - 3F + 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021, + 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221, + 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, + 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, + 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061, + 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021, + 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221, + 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, + // Entry 40 - 5F + 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, + 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061, + 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021, + 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221, + 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, + 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, + 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061, + 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021, + // Entry 60 - 7F + 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221, +} // Size: 824 bytes + +// Slots used for cardinal: A6 of 0xFF rules; 24 of 0xFF indexes; 37 of 64 sets + +// Total table size 3804 bytes (3KiB); checksum: FFC009FC diff --git a/vendor/golang.org/x/text/gen.go b/vendor/golang.org/x/text/gen.go index 4ed42b814e..79af97e708 100644 --- a/vendor/golang.org/x/text/gen.go +++ b/vendor/golang.org/x/text/gen.go @@ -12,9 +12,14 @@ import ( "bytes" "flag" "fmt" + "go/build" + "go/format" + "io/ioutil" "os" "os/exec" + "path" "path/filepath" + "regexp" "runtime" "strings" "sync" @@ -26,6 +31,7 @@ import ( var ( verbose = flag.Bool("v", false, "verbose output") force = flag.Bool("force", false, "ignore failing dependencies") + doCore = flag.Bool("core", false, "force an update to core") excludeList = flag.String("exclude", "", "comma-separated list of packages to exclude") @@ -61,6 +67,7 @@ func main() { // variable. This will prevent duplicate downloads and also will enable long // tests, which really need to be run after each generated package. + updateCore := *doCore if gen.UnicodeVersion() != unicode.Version { fmt.Printf("Requested Unicode version %s; core unicode version is %s.\n", gen.UnicodeVersion(), @@ -72,26 +79,52 @@ func main() { if gen.UnicodeVersion() < unicode.Version && !*force { os.Exit(2) } + updateCore = true } + + var unicode = &dependency{} + if updateCore { + fmt.Printf("Updating core to version %s...\n", gen.UnicodeVersion()) + unicode = generate("unicode") + + // Test some users of the unicode packages, especially the ones that + // keep a mirrored table. These may need to be corrected by hand. + generate("regexp", unicode) + generate("strconv", unicode) // mimics Unicode table + generate("strings", unicode) + generate("testing", unicode) // mimics Unicode table + } + var ( - cldr = generate("unicode/cldr") - language = generate("language", cldr) - internal = generate("internal", language) - norm = generate("unicode/norm") - rangetable = generate("unicode/rangetable") - cases = generate("cases", norm, language, rangetable) - width = generate("width") - bidi = generate("unicode/bidi", norm, rangetable) - _ = generate("secure/precis", norm, rangetable, cases, width, bidi) - _ = generate("encoding/htmlindex", language) - _ = generate("currency", cldr, language, internal) - _ = generate("internal/number", cldr, language, internal) - _ = generate("language/display", cldr, language) - _ = generate("collate", norm, cldr, language, rangetable) - _ = generate("search", norm, cldr, language, rangetable) + cldr = generate("./unicode/cldr", unicode) + language = generate("./language", cldr) + internal = generate("./internal", unicode, language) + norm = generate("./unicode/norm", unicode) + rangetable = generate("./unicode/rangetable", unicode) + cases = generate("./cases", unicode, norm, language, rangetable) + width = generate("./width", unicode) + bidi = generate("./unicode/bidi", unicode, norm, rangetable) + mib = generate("./encoding/internal/identifier", unicode) + _ = generate("./encoding/htmlindex", unicode, language, mib) + _ = generate("./encoding/ianaindex", unicode, language, mib) + _ = generate("./secure/precis", unicode, norm, rangetable, cases, width, bidi) + _ = generate("./currency", unicode, cldr, language, internal) + _ = generate("./internal/number", unicode, cldr, language, internal) + _ = generate("./feature/plural", unicode, cldr, language, internal) + _ = generate("./internal/export/idna", unicode, bidi, norm) + _ = generate("./language/display", unicode, cldr, language, internal) + _ = generate("./collate", unicode, norm, cldr, language, rangetable) + _ = generate("./search", unicode, norm, cldr, language, rangetable) ) all.Wait() + // Copy exported packages to the destination golang.org repo. + copyExported("golang.org/x/net/idna") + + if updateCore { + copyVendored() + } + if hasErrors { fmt.Println("FAIL") os.Exit(1) @@ -133,7 +166,7 @@ func generate(pkg string, deps ...*dependency) *dependency { if *verbose { args = append(args, "-v") } - args = append(args, "./"+pkg) + args = append(args, pkg) cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...) w := &bytes.Buffer{} cmd.Stderr = w @@ -163,6 +196,88 @@ func generate(pkg string, deps ...*dependency) *dependency { return &wg } +// copyExported copies a package in x/text/internal/export to the +// destination repository. +func copyExported(p string) { + copyPackage( + filepath.Join("internal", "export", path.Base(p)), + filepath.Join("..", filepath.FromSlash(p[len("golang.org/x"):])), + "golang.org/x/text/internal/export/"+path.Base(p), + p) +} + +// copyVendored copies packages used by Go core into the vendored directory. +func copyVendored() { + root := filepath.Join(build.Default.GOROOT, filepath.FromSlash("src/vendor/golang_org/x")) + + err := filepath.Walk(root, func(dir string, info os.FileInfo, err error) error { + if err != nil || !info.IsDir() || root == dir { + return err + } + src := dir[len(root)+1:] + const slash = string(filepath.Separator) + if c := strings.Split(src, slash); c[0] == "text" { + // Copy a text repo package from its normal location. + src = strings.Join(c[1:], slash) + } else { + // Copy the vendored package if it exists in the export directory. + src = filepath.Join("internal", "export", filepath.Base(src)) + } + copyPackage(src, dir, "golang.org", "golang_org") + return nil + }) + if err != nil { + fmt.Printf("Seeding directory %s has failed %v:", root, err) + os.Exit(1) + } +} + +// goGenRE is used to remove go:generate lines. +var goGenRE = regexp.MustCompile("//go:generate[^\n]*\n") + +// copyPackage copies relevant files from a directory in x/text to the +// destination package directory. The destination package is assumed to have +// the same name. For each copied file go:generate lines are removed and +// and package comments are rewritten to the new path. +func copyPackage(dirSrc, dirDst, search, replace string) { + err := filepath.Walk(dirSrc, func(file string, info os.FileInfo, err error) error { + base := filepath.Base(file) + if err != nil || info.IsDir() || + !strings.HasSuffix(base, ".go") || + strings.HasSuffix(base, "_test.go") && !strings.HasPrefix(base, "example") || + // Don't process subdirectories. + filepath.Dir(file) != dirSrc { + return nil + } + b, err := ioutil.ReadFile(file) + if err != nil || bytes.Contains(b, []byte("\n// +build ignore")) { + return err + } + // Fix paths. + b = bytes.Replace(b, []byte(search), []byte(replace), -1) + // Remove go:generate lines. + b = goGenRE.ReplaceAllLiteral(b, nil) + comment := "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n" + if *doCore { + comment = "// Code generated by running \"go run gen.go -core\" in golang.org/x/text. DO NOT EDIT.\n\n" + } + if !bytes.HasPrefix(b, []byte(comment)) { + b = append([]byte(comment), b...) + } + if b, err = format.Source(b); err != nil { + fmt.Println("Failed to format file:", err) + os.Exit(1) + } + file = filepath.Join(dirDst, base) + vprintf("=== COPY %s\n", file) + return ioutil.WriteFile(file, b, 0666) + }) + if err != nil { + fmt.Println("Copying exported files failed:", err) + os.Exit(1) + } +} + func contains(a []string, s string) bool { for _, e := range a { if s == e { diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg.go b/vendor/golang.org/x/text/internal/catmsg/catmsg.go new file mode 100644 index 0000000000..74c039f056 --- /dev/null +++ b/vendor/golang.org/x/text/internal/catmsg/catmsg.go @@ -0,0 +1,366 @@ +// Copyright 2017 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 catmsg contains support types for package x/text/message/catalog. +// +// This package contains the low-level implementations of Message used by the +// catalog package and provides primitives for other packages to implement their +// own. For instance, the plural package provides functionality for selecting +// translation strings based on the plural category of substitution arguments. +// +// +// Encoding and Decoding +// +// Catalogs store Messages encoded as a single string. Compiling a message into +// a string both results in compacter representation and speeds up evaluation. +// +// A Message must implement a Compile method to convert its arbitrary +// representation to a string. The Compile method takes an Encoder which +// facilitates serializing the message. Encoders also provide more context of +// the messages's creation (such as for which language the message is intended), +// which may not be known at the time of the creation of the message. +// +// Each message type must also have an accompanying decoder registered to decode +// the message. This decoder takes a Decoder argument which provides the +// counterparts for the decoding. +// +// +// Renderers +// +// A Decoder must be initialized with a Renderer implementation. These +// implementations must be provided by packages that use Catalogs, typically +// formatting packages such as x/text/message. A typical user will not need to +// worry about this type; it is only relevant to packages that do string +// formatting and want to use the catalog package to handle localized strings. +// +// A package that uses catalogs for selecting strings receives selection results +// as sequence of substrings passed to the Renderer. The following snippet shows +// how to express the above example using the message package. +// +// message.Set(language.English, "You are %d minute(s) late.", +// catalog.Var("minutes", plural.Select(1, "one", "minute")), +// catalog.String("You are %[1]d ${minutes} late.")) +// +// p := message.NewPrinter(language.English) +// p.Printf("You are %d minute(s) late.", 5) // always 5 minutes late. +// +// To evaluate the Printf, package message wraps the arguments in a Renderer +// that is passed to the catalog for message decoding. The call sequence that +// results from evaluating the above message, assuming the person is rather +// tardy, is: +// +// Render("You are %[1]d ") +// Arg(1) +// Render("minutes") +// Render(" late.") +// +// The calls to Arg is caused by the plural.Select execution, which evaluates +// the argument to determine whether the singular or plural message form should +// be selected. The calls to Render reports the partial results to the message +// package for further evaluation. +package catmsg + +import ( + "errors" + "fmt" + "strconv" + "strings" + "sync" + + "golang.org/x/text/language" +) + +// A Handle refers to a registered message type. +type Handle int + +// First is used as a Handle to EncodeMessageType, followed by a series of calls +// to EncodeMessage, to implement selecting the first matching Message. +// +// TODO: this can be removed once we either can use type aliases or if the +// internals of this package are merged with the catalog package. +var First Handle = msgFirst + +// A Handler decodes and evaluates data compiled by a Message and sends the +// result to the Decoder. The output may depend on the value of the substitution +// arguments, accessible by the Decoder's Arg method. The Handler returns false +// if there is no translation for the given substitution arguments. +type Handler func(d *Decoder) bool + +// Register records the existence of a message type and returns a Handle that +// can be used in the Encoder's EncodeMessageType method to create such +// messages. The prefix of the name should be the package path followed by +// an optional disambiguating string. +// Register will panic if a handle for the same name was already registered. +func Register(name string, handler Handler) Handle { + mutex.Lock() + defer mutex.Unlock() + + if _, ok := names[name]; ok { + panic(fmt.Errorf("catmsg: handler for %q already exists", name)) + } + h := Handle(len(handlers)) + names[name] = h + handlers = append(handlers, handler) + return h +} + +// These handlers require fixed positions in the handlers slice. +const ( + msgVars Handle = iota + msgFirst + msgRaw + msgString + numFixed +) + +const prefix = "golang.org/x/text/internal/catmsg." + +var ( + mutex sync.Mutex + names = map[string]Handle{ + prefix + "Vars": msgVars, + prefix + "First": msgFirst, + prefix + "Raw": msgRaw, + prefix + "String": msgString, + } + handlers = make([]Handler, numFixed) +) + +func init() { + // This handler is a message type wrapper that initializes a decoder + // with a variable block. This message type, if present, is always at the + // start of an encoded message. + handlers[msgVars] = func(d *Decoder) bool { + blockSize := int(d.DecodeUint()) + d.vars = d.data[:blockSize] + d.data = d.data[blockSize:] + return d.executeMessage() + } + + // First takes the first message in a sequence that results in a match for + // the given substitution arguments. + handlers[msgFirst] = func(d *Decoder) bool { + for !d.Done() { + if d.ExecuteMessage() { + return true + } + } + return false + } + + handlers[msgRaw] = func(d *Decoder) bool { + d.Render(d.data) + return true + } + + // A String message alternates between a string constant and a variable + // substitution. + handlers[msgString] = func(d *Decoder) bool { + for !d.Done() { + if str := d.DecodeString(); str != "" { + d.Render(str) + } + if d.Done() { + break + } + d.ExecuteSubstitution() + } + return true + } +} + +var ( + // ErrIncomplete indicates a compiled message does not define translations + // for all possible argument values. If this message is returned, evaluating + // a message may result in the ErrNoMatch error. + ErrIncomplete = errors.New("catmsg: incomplete message; may not give result for all inputs") + + // ErrNoMatch indicates no translation message matched the given input + // parameters when evaluating a message. + ErrNoMatch = errors.New("catmsg: no translation for inputs") +) + +// A Message holds a collection of translations for the same phrase that may +// vary based on the values of substitution arguments. +type Message interface { + // Compile encodes the format string(s) of the message as a string for later + // evaluation. + // + // The first call Compile makes on the encoder must be EncodeMessageType. + // The handle passed to this call may either be a handle returned by + // Register to encode a single custom message, or HandleFirst followed by + // a sequence of calls to EncodeMessage. + // + // Compile must return ErrIncomplete if it is possible for evaluation to + // not match any translation for a given set of formatting parameters. + // For example, selecting a translation based on plural form may not yield + // a match if the form "Other" is not one of the selectors. + // + // Compile may return any other application-specific error. For backwards + // compatibility with package like fmt, which often do not do sanity + // checking of format strings ahead of time, Compile should still make an + // effort to have some sensible fallback in case of an error. + Compile(e *Encoder) error +} + +// Compile converts a Message to a data string that can be stored in a Catalog. +// The resulting string can subsequently be decoded by passing to the Execute +// method of a Decoder. +func Compile(tag language.Tag, macros Dictionary, m Message) (data string, err error) { + // TODO: pass macros so they can be used for validation. + v := &Encoder{inBody: true} // encoder for variables + v.root = v + e := &Encoder{root: v, parent: v, tag: tag} // encoder for messages + err = m.Compile(e) + // This package serves te message package, which in turn is meant to be a + // drop-in replacement for fmt. With the fmt package, format strings are + // evaluated lazily and errors are handled by substituting strings in the + // result, rather then returning an error. Dealing with multiple languages + // makes it more important to check errors ahead of time. We chose to be + // consistent and compatible and allow graceful degradation in case of + // errors. + buf := e.buf[stripPrefix(e.buf):] + if len(v.buf) > 0 { + // Prepend variable block. + b := make([]byte, 1+maxVarintBytes+len(v.buf)+len(buf)) + b[0] = byte(msgVars) + b = b[:1+encodeUint(b[1:], uint64(len(v.buf)))] + b = append(b, v.buf...) + b = append(b, buf...) + buf = b + } + if err == nil { + err = v.err + } + return string(buf), err +} + +// Var defines a message that can be substituted for a placeholder of the same +// name. If an expression does not result in a string after evaluation, Name is +// used as the substitution. For example: +// Var{ +// Name: "minutes", +// Message: plural.Select(1, "one", "minute"), +// } +// will resolve to minute for singular and minutes for plural forms. +type Var struct { + Name string + Message Message +} + +var errIsVar = errors.New("catmsg: variable used as message") + +// Compile implements Message. +// +// Note that this method merely registers a variable; it does not create an +// encoded message. +func (v *Var) Compile(e *Encoder) error { + if err := e.addVar(v.Name, v.Message); err != nil { + return err + } + // Using a Var by itself is an error. If it is in a sequence followed by + // other messages referring to it, this error will be ignored. + return errIsVar +} + +// Raw is a message consisting of a single format string that is passed as is +// to the Renderer. +// +// Note that a Renderer may still do its own variable substitution. +type Raw string + +// Compile implements Message. +func (r Raw) Compile(e *Encoder) (err error) { + e.EncodeMessageType(msgRaw) + // Special case: raw strings don't have a size encoding and so don't use + // EncodeString. + e.buf = append(e.buf, r...) + return nil +} + +// String is a message consisting of a single format string which contains +// placeholders that may be substituted with variables. +// +// Variable substitutions are marked with placeholders and a variable name of +// the form ${name}. Any other substitutions such as Go templates or +// printf-style substitutions are left to be done by the Renderer. +// +// When evaluation a string interpolation, a Renderer will receive separate +// calls for each placeholder and interstitial string. For example, for the +// message: "%[1]v ${invites} %[2]v to ${their} party." The sequence of calls +// is: +// d.Render("%[1]v ") +// d.Arg(1) +// d.Render(resultOfInvites) +// d.Render(" %[2]v to ") +// d.Arg(1) +// d.Render(resultOfTheir) +// d.Render(" party.") +// where the messages for "invites" and "their" both use a plural.Select +// referring to the first argument. +// +// Strings may also invoke macros. Macros are essentially variables that can be +// reused. Macros may, for instance, be used to make selections between +// different conjugations of a verb. See the catalog package description for an +// overview of macros. +type String string + +// Compile implements Message. It parses the placeholder formats and returns +// any error. +func (s String) Compile(e *Encoder) (err error) { + msg := string(s) + const subStart = "${" + hasHeader := false + p := 0 + b := []byte{} + for { + i := strings.Index(msg[p:], subStart) + if i == -1 { + break + } + b = append(b, msg[p:p+i]...) + p += i + len(subStart) + if i = strings.IndexByte(msg[p:], '}'); i == -1 { + b = append(b, "$!(MISSINGBRACE)"...) + err = fmt.Errorf("catmsg: missing '}'") + p = len(msg) + break + } + name := strings.TrimSpace(msg[p : p+i]) + if q := strings.IndexByte(name, '('); q == -1 { + if !hasHeader { + hasHeader = true + e.EncodeMessageType(msgString) + } + e.EncodeString(string(b)) + e.EncodeSubstitution(name) + b = b[:0] + } else if j := strings.IndexByte(name[q:], ')'); j == -1 { + // TODO: what should the error be? + b = append(b, "$!(MISSINGPAREN)"...) + err = fmt.Errorf("catmsg: missing ')'") + } else if x, sErr := strconv.ParseUint(strings.TrimSpace(name[q+1:q+j]), 10, 32); sErr != nil { + // TODO: handle more than one argument + b = append(b, "$!(BADNUM)"...) + err = fmt.Errorf("catmsg: invalid number %q", strings.TrimSpace(name[q+1:q+j])) + } else { + if !hasHeader { + hasHeader = true + e.EncodeMessageType(msgString) + } + e.EncodeString(string(b)) + e.EncodeSubstitution(name[:q], int(x)) + b = b[:0] + } + p += i + 1 + } + b = append(b, msg[p:]...) + if !hasHeader { + // Simplify string to a raw string. + Raw(string(b)).Compile(e) + } else if len(b) > 0 { + e.EncodeString(string(b)) + } + return err +} diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go new file mode 100644 index 0000000000..d06502bff4 --- /dev/null +++ b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go @@ -0,0 +1,294 @@ +// Copyright 2017 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 catmsg + +import ( + "errors" + "strings" + "testing" + + "golang.org/x/text/language" +) + +type renderer struct { + args []int + result string +} + +func (r *renderer) Arg(i int) interface{} { + if i >= len(r.args) { + return nil + } + return r.args[i] +} + +func (r *renderer) Render(s string) { + if r.result != "" { + r.result += "|" + } + r.result += s +} + +func TestCodec(t *testing.T) { + type test struct { + args []int + out string + decErr string + } + single := func(out, err string) []test { return []test{{out: out, decErr: err}} } + testCases := []struct { + desc string + m Message + enc string + encErr string + tests []test + }{{ + desc: "unused variable", + m: &Var{"name", String("foo")}, + encErr: errIsVar.Error(), + tests: single("", ""), + }, { + desc: "empty", + m: empty{}, + tests: single("", ""), + }, { + desc: "sequence with empty", + m: seq{empty{}}, + tests: single("", ""), + }, { + desc: "raw string", + m: Raw("foo"), + tests: single("foo", ""), + }, { + desc: "raw string no sub", + m: Raw("${foo}"), + enc: "\x02${foo}", + tests: single("${foo}", ""), + }, { + desc: "simple string", + m: String("foo"), + tests: single("foo", ""), + }, { + desc: "missing var", + m: String("foo${bar}"), + enc: "\x03\x03foo\x02\x03bar", + encErr: `unknown var "bar"`, + tests: single("foo|bar", ""), + }, { + desc: "empty var", + m: seq{ + &Var{"bar", seq{}}, + String("foo${bar}"), + }, + enc: "\x00\x05\x04\x02bar\x03\x03foo\x00\x00", + // TODO: recognize that it is cheaper to substitute bar. + tests: single("foo|bar", ""), + }, { + desc: "var after value", + m: seq{ + String("foo${bar}"), + &Var{"bar", String("baz")}, + }, + encErr: errIsVar.Error(), + tests: single("foo|bar", ""), + }, { + desc: "substitution", + m: seq{ + &Var{"bar", String("baz")}, + String("foo${bar}"), + }, + tests: single("foo|baz", ""), + }, { + desc: "shadowed variable", + m: seq{ + &Var{"bar", String("baz")}, + seq{ + &Var{"bar", String("BAZ")}, + String("foo${bar}"), + }, + }, + tests: single("foo|BAZ", ""), + }, { + desc: "not shadowed variable", + m: seq{ + &Var{"bar", String("baz")}, + seq{ + String("foo${bar}"), + &Var{"bar", String("BAZ")}, + }, + }, + encErr: errIsVar.Error(), + tests: single("foo|baz", ""), + }, { + desc: "duplicate variable", + m: seq{ + &Var{"bar", String("baz")}, + &Var{"bar", String("BAZ")}, + String("${bar}"), + }, + encErr: "catmsg: duplicate variable \"bar\"", + tests: single("baz", ""), + }, { + desc: "complete incomplete variable", + m: seq{ + &Var{"bar", incomplete{}}, + String("${bar}"), + }, + enc: "\x00\t\b\x01\x01\x04\x04\x02bar\x03\x00\x00\x00", + // TODO: recognize that it is cheaper to substitute bar. + tests: single("bar", ""), + }, { + desc: "incomplete sequence", + m: seq{ + incomplete{}, + incomplete{}, + }, + encErr: ErrIncomplete.Error(), + tests: single("", ErrNoMatch.Error()), + }, { + desc: "compile error variable", + m: seq{ + &Var{"bar", errorCompileMsg{}}, + String("${bar}"), + }, + encErr: errCompileTest.Error(), + tests: single("bar", ""), + }, { + desc: "compile error message", + m: errorCompileMsg{}, + encErr: errCompileTest.Error(), + tests: single("", ""), + }, { + desc: "compile error sequence", + m: seq{ + errorCompileMsg{}, + errorCompileMsg{}, + }, + encErr: errCompileTest.Error(), + tests: single("", ""), + }, { + desc: "macro", + m: String("${exists(1)}"), + tests: single("you betya!", ""), + }, { + desc: "macro incomplete", + m: String("${incomplete(1)}"), + enc: "\x03\x00\x01\nincomplete\x01", + tests: single("incomplete", ""), + }, { + desc: "macro undefined at end", + m: String("${undefined(1)}"), + enc: "\x03\x00\x01\tundefined\x01", + tests: single("undefined", "catmsg: undefined macro \"undefined\""), + }, { + desc: "macro undefined with more text following", + m: String("${undefined(1)}."), + enc: "\x03\x00\x01\tundefined\x01\x01.", + tests: single("undefined|.", "catmsg: undefined macro \"undefined\""), + }, { + desc: "macro missing paren", + m: String("${missing(1}"), + encErr: "catmsg: missing ')'", + tests: single("$!(MISSINGPAREN)", ""), + }, { + desc: "macro bad num", + m: String("aa${bad(a)}"), + encErr: "catmsg: invalid number \"a\"", + tests: single("aa$!(BADNUM)", ""), + }, { + desc: "var missing brace", + m: String("a${missing"), + encErr: "catmsg: missing '}'", + tests: single("a$!(MISSINGBRACE)", ""), + }} + r := &renderer{} + dec := NewDecoder(language.Und, r, macros) + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + + data, err := Compile(language.Und, macros, tc.m) + if failErr(err, tc.encErr) { + t.Errorf("encoding error: got %+q; want %+q", err, tc.encErr) + } + if tc.enc != "" && data != tc.enc { + t.Errorf("encoding: got %+q; want %+q", data, tc.enc) + } + for _, st := range tc.tests { + t.Run("", func(t *testing.T) { + *r = renderer{args: st.args} + if err = dec.Execute(data); failErr(err, st.decErr) { + t.Errorf("decoding error: got %+q; want %+q", err, st.decErr) + } + if r.result != st.out { + t.Errorf("decode: got %+q; want %+q", r.result, st.out) + } + }) + } + }) + } +} + +func failErr(got error, want string) bool { + if got == nil { + return want != "" + } + return want == "" || !strings.Contains(got.Error(), want) +} + +type seq []Message + +func (s seq) Compile(e *Encoder) (err error) { + err = ErrIncomplete + e.EncodeMessageType(First) + for _, m := range s { + // Pass only the last error, but allow erroneous or complete messages + // here to allow testing different scenarios. + err = e.EncodeMessage(m) + } + return err +} + +type empty struct{} + +func (empty) Compile(e *Encoder) (err error) { return nil } + +var msgIncomplete = Register( + "golang.org/x/text/internal/catmsg.incomplete", + func(d *Decoder) bool { return false }) + +type incomplete struct{} + +func (incomplete) Compile(e *Encoder) (err error) { + e.EncodeMessageType(msgIncomplete) + return ErrIncomplete +} + +type errorCompileMsg struct{} + +var errCompileTest = errors.New("catmsg: compile error test") + +func (errorCompileMsg) Compile(e *Encoder) (err error) { + return errCompileTest +} + +type dictionary struct{} + +var ( + macros = dictionary{} + dictMessages = map[string]string{ + "exists": compile(String("you betya!")), + "incomplete": compile(incomplete{}), + } +) + +func (d dictionary) Lookup(key string) (data string, ok bool) { + data, ok = dictMessages[key] + return +} + +func compile(m Message) (data string) { + data, _ = Compile(language.Und, macros, m) + return data +} diff --git a/vendor/golang.org/x/text/internal/catmsg/codec.go b/vendor/golang.org/x/text/internal/catmsg/codec.go new file mode 100755 index 0000000000..e959b08f99 --- /dev/null +++ b/vendor/golang.org/x/text/internal/catmsg/codec.go @@ -0,0 +1,407 @@ +// Copyright 2017 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 catmsg + +import ( + "errors" + "fmt" + + "golang.org/x/text/language" +) + +// A Renderer renders a Message. +type Renderer interface { + // Render renders the given string. The given string may be interpreted as a + // format string, such as the one used by the fmt package or a template. + Render(s string) + + // Arg returns the i-th argument passed to format a message. This method + // should return nil if there is no such argument. Messages need access to + // arguments to allow selecting a message based on linguistic features of + // those arguments. + Arg(i int) interface{} +} + +// A Dictionary specifies a source of messages, including variables or macros. +type Dictionary interface { + // Lookup returns the message for the given key. It returns false for ok if + // such a message could not be found. + Lookup(key string) (data string, ok bool) + + // TODO: consider returning an interface, instead of a string. This will + // allow implementations to do their own message type decoding. +} + +// An Encoder serializes a Message to a string. +type Encoder struct { + // The root encoder is used for storing encoded variables. + root *Encoder + // The parent encoder provides the surrounding scopes for resolving variable + // names. + parent *Encoder + + tag language.Tag + + // buf holds the encoded message so far. After a message completes encoding, + // the contents of buf, prefixed by the encoded length, are flushed to the + // parent buffer. + buf []byte + + // vars is the lookup table of variables in the current scope. + vars []keyVal + + err error + inBody bool // if false next call must be EncodeMessageType +} + +type keyVal struct { + key string + offset int +} + +// Language reports the language for which the encoded message will be stored +// in the Catalog. +func (e *Encoder) Language() language.Tag { return e.tag } + +func (e *Encoder) setError(err error) { + if e.root.err == nil { + e.root.err = err + } +} + +// EncodeUint encodes x. +func (e *Encoder) EncodeUint(x uint64) { + e.checkInBody() + var buf [maxVarintBytes]byte + n := encodeUint(buf[:], x) + e.buf = append(e.buf, buf[:n]...) +} + +// EncodeString encodes s. +func (e *Encoder) EncodeString(s string) { + e.checkInBody() + e.EncodeUint(uint64(len(s))) + e.buf = append(e.buf, s...) +} + +// EncodeMessageType marks the current message to be of type h. +// +// It must be the first call of a Message's Compile method. +func (e *Encoder) EncodeMessageType(h Handle) { + if e.inBody { + panic("catmsg: EncodeMessageType not the first method called") + } + e.inBody = true + e.EncodeUint(uint64(h)) +} + +// EncodeMessage serializes the given message inline at the current position. +func (e *Encoder) EncodeMessage(m Message) error { + e = &Encoder{root: e.root, parent: e} + err := m.Compile(e) + if _, ok := m.(*Var); !ok { + e.flushTo(e.parent) + } + return err +} + +func (e *Encoder) checkInBody() { + if !e.inBody { + panic("catmsg: expected prior call to EncodeMessageType") + } +} + +// stripPrefix indicates the number of prefix bytes that must be stripped to +// turn a single-element sequence into a message that is just this single member +// without its size prefix. If the message can be stripped, b[1:n] contains the +// size prefix. +func stripPrefix(b []byte) (n int) { + if len(b) > 0 && Handle(b[0]) == msgFirst { + x, n, _ := decodeUint(b[1:]) + if 1+n+int(x) == len(b) { + return 1 + n + } + } + return 0 +} + +func (e *Encoder) flushTo(dst *Encoder) { + data := e.buf + p := stripPrefix(data) + if p > 0 { + data = data[1:] + } else { + // Prefix the size. + dst.EncodeUint(uint64(len(data))) + } + dst.buf = append(dst.buf, data...) +} + +func (e *Encoder) addVar(key string, m Message) error { + for _, v := range e.parent.vars { + if v.key == key { + err := fmt.Errorf("catmsg: duplicate variable %q", key) + e.setError(err) + return err + } + } + scope := e.parent + // If a variable message is Incomplete, and does not evaluate to a message + // during execution, we fall back to the variable name. We encode this by + // appending the variable name if the message reports it's incomplete. + + err := m.Compile(e) + if err != ErrIncomplete { + e.setError(err) + } + switch { + case len(e.buf) == 1 && Handle(e.buf[0]) == msgFirst: // empty sequence + e.buf = e.buf[:0] + e.inBody = false + fallthrough + case len(e.buf) == 0: + // Empty message. + if err := String(key).Compile(e); err != nil { + e.setError(err) + } + case err == ErrIncomplete: + if Handle(e.buf[0]) != msgFirst { + seq := &Encoder{root: e.root, parent: e} + seq.EncodeMessageType(First) + e.flushTo(seq) + e = seq + } + // e contains a sequence; append the fallback string. + e.EncodeMessage(String(key)) + } + + // Flush result to variable heap. + offset := len(e.root.buf) + e.flushTo(e.root) + e.buf = e.buf[:0] + + // Record variable offset in current scope. + scope.vars = append(scope.vars, keyVal{key: key, offset: offset}) + return err +} + +const ( + substituteVar = iota + substituteMacro + substituteError +) + +// EncodeSubstitution inserts a resolved reference to a variable or macro. +// +// This call must be matched with a call to ExecuteSubstitution at decoding +// time. +func (e *Encoder) EncodeSubstitution(name string, arguments ...int) { + if arity := len(arguments); arity > 0 { + // TODO: also resolve macros. + e.EncodeUint(substituteMacro) + e.EncodeString(name) + for _, a := range arguments { + e.EncodeUint(uint64(a)) + } + return + } + for scope := e; scope != nil; scope = scope.parent { + for _, v := range scope.vars { + if v.key != name { + continue + } + e.EncodeUint(substituteVar) // TODO: support arity > 0 + e.EncodeUint(uint64(v.offset)) + return + } + } + // TODO: refer to dictionary-wide scoped variables. + e.EncodeUint(substituteError) + e.EncodeString(name) + e.setError(fmt.Errorf("catmsg: unknown var %q", name)) +} + +// A Decoder deserializes and evaluates messages that are encoded by an encoder. +type Decoder struct { + tag language.Tag + dst Renderer + macros Dictionary + + err error + vars string + data string + + macroArg int // TODO: allow more than one argument +} + +// NewDecoder returns a new Decoder. +// +// Decoders are designed to be reused for multiple invocations of Execute. +// Only one goroutine may call Execute concurrently. +func NewDecoder(tag language.Tag, r Renderer, macros Dictionary) *Decoder { + return &Decoder{ + tag: tag, + dst: r, + macros: macros, + } +} + +func (d *Decoder) setError(err error) { + if d.err == nil { + d.err = err + } +} + +// Language returns the language in which the message is being rendered. +// +// The destination language may be a child language of the language used for +// encoding. For instance, a decoding language of "pt-PT"" is consistent with an +// encoding language of "pt". +func (d *Decoder) Language() language.Tag { return d.tag } + +// Done reports whether there are more bytes to process in this message. +func (d *Decoder) Done() bool { return len(d.data) == 0 } + +// Render implements Renderer. +func (d *Decoder) Render(s string) { d.dst.Render(s) } + +// Arg implements Renderer. +// +// During evaluation of macros, the argument positions may be mapped to +// arguments that differ from the original call. +func (d *Decoder) Arg(i int) interface{} { + if d.macroArg != 0 { + if i != 1 { + panic("catmsg: only macros with single argument supported") + } + i = d.macroArg + } + return d.dst.Arg(i) +} + +// DecodeUint decodes a number that was encoded with EncodeUint and advances the +// position. +func (d *Decoder) DecodeUint() uint64 { + x, n, err := decodeUintString(d.data) + d.data = d.data[n:] + if err != nil { + d.setError(err) + } + return x +} + +// DecodeString decodes a string that was encoded with EncodeString and advances +// the position. +func (d *Decoder) DecodeString() string { + size := d.DecodeUint() + s := d.data[:size] + d.data = d.data[size:] + return s +} + +// SkipMessage skips the message at the current location and advances the +// position. +func (d *Decoder) SkipMessage() { + n := int(d.DecodeUint()) + d.data = d.data[n:] +} + +// Execute decodes and evaluates msg. +// +// Only one goroutine may call execute. +func (d *Decoder) Execute(msg string) error { + d.err = nil + if !d.execute(msg) { + return ErrNoMatch + } + return d.err +} + +func (d *Decoder) execute(msg string) bool { + saved := d.data + d.data = msg + ok := d.executeMessage() + d.data = saved + return ok +} + +// executeMessageFromData is like execute, but also decodes a leading message +// size and clips the given string accordingly. +// +// It reports the number of bytes consumed and whether a message was selected. +func (d *Decoder) executeMessageFromData(s string) (n int, ok bool) { + saved := d.data + d.data = s + size := int(d.DecodeUint()) + n = len(s) - len(d.data) + // Sanitize the setting. This allows skipping a size argument for + // RawString and method Done. + d.data = d.data[:size] + ok = d.executeMessage() + n += size - len(d.data) + d.data = saved + return n, ok +} + +var errUnknownHandler = errors.New("catmsg: string contains unsupported handler") + +// executeMessage reads the handle id, initializes the decoder and executes the +// message. It is assumed that all of d.data[d.p:] is the single message. +func (d *Decoder) executeMessage() bool { + if d.Done() { + // We interpret no data as a valid empty message. + return true + } + handle := d.DecodeUint() + + var fn Handler + mutex.Lock() + if int(handle) < len(handlers) { + fn = handlers[handle] + } + mutex.Unlock() + if fn == nil { + d.setError(errUnknownHandler) + d.execute(fmt.Sprintf("\x02$!(UNKNOWNMSGHANDLER=%#x)", handle)) + return true + } + return fn(d) +} + +// ExecuteMessage decodes and executes the message at the current position. +func (d *Decoder) ExecuteMessage() bool { + n, ok := d.executeMessageFromData(d.data) + d.data = d.data[n:] + return ok +} + +// ExecuteSubstitution executes the message corresponding to the substitution +// as encoded by EncodeSubstitution. +func (d *Decoder) ExecuteSubstitution() { + switch x := d.DecodeUint(); x { + case substituteVar: + offset := d.DecodeUint() + d.executeMessageFromData(d.vars[offset:]) + case substituteMacro: + name := d.DecodeString() + data, ok := d.macros.Lookup(name) + old := d.macroArg + // TODO: support macros of arity other than 1. + d.macroArg = int(d.DecodeUint()) + switch { + case !ok: + // TODO: detect this at creation time. + d.setError(fmt.Errorf("catmsg: undefined macro %q", name)) + fallthrough + case !d.execute(data): + d.dst.Render(name) // fall back to macro name. + } + d.macroArg = old + case substituteError: + d.dst.Render(d.DecodeString()) + default: + panic("catmsg: unreachable") + } +} diff --git a/vendor/golang.org/x/text/internal/catmsg/varint.go b/vendor/golang.org/x/text/internal/catmsg/varint.go new file mode 100644 index 0000000000..a2cee2cf5b --- /dev/null +++ b/vendor/golang.org/x/text/internal/catmsg/varint.go @@ -0,0 +1,62 @@ +// Copyright 2017 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 catmsg + +// This file implements varint encoding analogous to the one in encoding/binary. +// We need a string version of this function, so we add that here and then add +// the rest for consistency. + +import "errors" + +var ( + errIllegalVarint = errors.New("catmsg: illegal varint") + errVarintTooLarge = errors.New("catmsg: varint too large for uint64") +) + +const maxVarintBytes = 10 // maximum length of a varint + +// encodeUint encodes x as a variable-sized integer into buf and returns the +// number of bytes written. buf must be at least maxVarintBytes long +func encodeUint(buf []byte, x uint64) (n int) { + for ; x > 127; n++ { + buf[n] = 0x80 | uint8(x&0x7F) + x >>= 7 + } + buf[n] = uint8(x) + n++ + return n +} + +func decodeUintString(s string) (x uint64, size int, err error) { + i := 0 + for shift := uint(0); shift < 64; shift += 7 { + if i >= len(s) { + return 0, i, errIllegalVarint + } + b := uint64(s[i]) + i++ + x |= (b & 0x7F) << shift + if b&0x80 == 0 { + return x, i, nil + } + } + return 0, i, errVarintTooLarge +} + +func decodeUint(b []byte) (x uint64, size int, err error) { + i := 0 + for shift := uint(0); shift < 64; shift += 7 { + if i >= len(b) { + return 0, i, errIllegalVarint + } + c := uint64(b[i]) + i++ + x |= (c & 0x7F) << shift + if c&0x80 == 0 { + return x, i, nil + } + } + return 0, i, errVarintTooLarge +} diff --git a/vendor/golang.org/x/text/internal/catmsg/varint_test.go b/vendor/golang.org/x/text/internal/catmsg/varint_test.go new file mode 100644 index 0000000000..04d881d41d --- /dev/null +++ b/vendor/golang.org/x/text/internal/catmsg/varint_test.go @@ -0,0 +1,123 @@ +// Copyright 2017 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 catmsg + +import ( + "fmt" + "testing" +) + +func TestEncodeUint(t *testing.T) { + testCases := []struct { + x uint64 + enc string + }{ + {0, "\x00"}, + {1, "\x01"}, + {2, "\x02"}, + {0x7f, "\x7f"}, + {0x80, "\x80\x01"}, + {1 << 14, "\x80\x80\x01"}, + {0xffffffff, "\xff\xff\xff\xff\x0f"}, + {0xffffffffffffffff, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01"}, + } + for _, tc := range testCases { + buf := [maxVarintBytes]byte{} + got := string(buf[:encodeUint(buf[:], tc.x)]) + if got != tc.enc { + t.Errorf("EncodeUint(%#x) = %q; want %q", tc.x, got, tc.enc) + } + } +} + +func TestDecodeUint(t *testing.T) { + testCases := []struct { + x uint64 + size int + enc string + err error + }{{ + x: 0, + size: 0, + enc: "", + err: errIllegalVarint, + }, { + x: 0, + size: 1, + enc: "\x80", + err: errIllegalVarint, + }, { + x: 0, + size: 3, + enc: "\x80\x80\x80", + err: errIllegalVarint, + }, { + x: 0, + size: 1, + enc: "\x00", + }, { + x: 1, + size: 1, + enc: "\x01", + }, { + x: 2, + size: 1, + enc: "\x02", + }, { + x: 0x7f, + size: 1, + enc: "\x7f", + }, { + x: 0x80, + size: 2, + enc: "\x80\x01", + }, { + x: 1 << 14, + size: 3, + enc: "\x80\x80\x01", + }, { + x: 0xffffffff, + size: 5, + enc: "\xff\xff\xff\xff\x0f", + }, { + x: 0xffffffffffffffff, + size: 10, + enc: "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01", + }, { + x: 0xffffffffffffffff, + size: 10, + enc: "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00", + }, { + x: 0, + size: 10, + enc: "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01", + err: errVarintTooLarge, + }} + forms := []struct { + name string + decode func(s string) (x uint64, size int, err error) + }{ + {"decode", func(s string) (x uint64, size int, err error) { + return decodeUint([]byte(s)) + }}, + {"decodeString", decodeUintString}, + } + for _, f := range forms { + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s:%q", f.name, tc.enc), func(t *testing.T) { + x, size, err := f.decode(tc.enc) + if err != tc.err { + t.Errorf("err = %q; want %q", err, tc.err) + } + if size != tc.size { + t.Errorf("size = %d; want %d", size, tc.size) + } + if x != tc.x { + t.Errorf("decode = %#x; want %#x", x, tc.x) + } + }) + } + } +} diff --git a/vendor/golang.org/x/text/collate/colltab/collate_test.go b/vendor/golang.org/x/text/internal/colltab/collate_test.go similarity index 100% rename from vendor/golang.org/x/text/collate/colltab/collate_test.go rename to vendor/golang.org/x/text/internal/colltab/collate_test.go diff --git a/vendor/golang.org/x/text/collate/colltab/collelem.go b/vendor/golang.org/x/text/internal/colltab/collelem.go similarity index 99% rename from vendor/golang.org/x/text/collate/colltab/collelem.go rename to vendor/golang.org/x/text/internal/colltab/collelem.go index 880952c3e9..28555897b7 100644 --- a/vendor/golang.org/x/text/collate/colltab/collelem.go +++ b/vendor/golang.org/x/text/internal/colltab/collelem.go @@ -87,7 +87,7 @@ func (ce Elem) ctype() ceType { // - t* is the tertiary collation value // 100ttttt cccccccc pppppppp pppppppp // - t* is the tertiar collation value -// - c* is the cannonical combining class +// - c* is the canonical combining class // - p* is the primary collation value // Collation elements with a secondary value are of the form // 1010cccc ccccssss ssssssss tttttttt, where diff --git a/vendor/golang.org/x/text/collate/colltab/collelem_test.go b/vendor/golang.org/x/text/internal/colltab/collelem_test.go similarity index 100% rename from vendor/golang.org/x/text/collate/colltab/collelem_test.go rename to vendor/golang.org/x/text/internal/colltab/collelem_test.go diff --git a/vendor/golang.org/x/text/internal/colltab/contract.go b/vendor/golang.org/x/text/internal/colltab/contract.go index 54b9795d40..25649d4f55 100644 --- a/vendor/golang.org/x/text/internal/colltab/contract.go +++ b/vendor/golang.org/x/text/internal/colltab/contract.go @@ -6,9 +6,9 @@ package colltab import "unicode/utf8" -// For a description of contractTrieSet, see text/collate/build/contract.go. +// For a description of ContractTrieSet, see text/collate/build/contract.go. -type contractTrieSet []struct{ l, h, n, i uint8 } +type ContractTrieSet []struct{ L, H, N, I uint8 } // ctScanner is used to match a trie to an input sequence. // A contraction may match a non-contiguous sequence of bytes in an input string. @@ -19,7 +19,7 @@ type contractTrieSet []struct{ l, h, n, i uint8 } // retains the state of the last match and leaves it up to the user to continue // the match at the appropriate points. type ctScanner struct { - states contractTrieSet + states ContractTrieSet s []byte n int index int @@ -28,7 +28,7 @@ type ctScanner struct { } type ctScannerString struct { - states contractTrieSet + states ContractTrieSet s string n int index int @@ -36,11 +36,11 @@ type ctScannerString struct { done bool } -func (t contractTrieSet) scanner(index, n int, b []byte) ctScanner { +func (t ContractTrieSet) scanner(index, n int, b []byte) ctScanner { return ctScanner{s: b, states: t[index:], n: n} } -func (t contractTrieSet) scannerString(index, n int, str string) ctScannerString { +func (t ContractTrieSet) scannerString(index, n int, str string) ctScannerString { return ctScannerString{s: str, states: t[index:], n: n} } @@ -72,15 +72,15 @@ func (s *ctScanner) scan(p int) int { // cannot match discontiguous UTF-8 in a normalized string. We could let // a negative value of e.n mean that we can set s.done = true and avoid // the need for additional matches. - if c >= e.l { - if e.l == c { + if c >= e.L { + if e.L == c { p++ - if e.i != noIndex { - s.index = int(e.i) + if e.I != noIndex { + s.index = int(e.I) s.pindex = p } - if e.n != final { - i, states, n = 0, states[int(e.h)+n:], int(e.n) + if e.N != final { + i, states, n = 0, states[int(e.H)+n:], int(e.N) if p >= len(str) || utf8.RuneStart(str[p]) { s.states, s.n, pr = states, n, p } @@ -89,10 +89,10 @@ func (s *ctScanner) scan(p int) int { return p } continue - } else if e.n == final && c <= e.h { + } else if e.N == final && c <= e.H { p++ s.done = true - s.index = int(c-e.l) + int(e.i) + s.index = int(c-e.L) + int(e.I) s.pindex = p return p } @@ -114,15 +114,15 @@ func (s *ctScannerString) scan(p int) int { // cannot match discontiguous UTF-8 in a normalized string. We could let // a negative value of e.n mean that we can set s.done = true and avoid // the need for additional matches. - if c >= e.l { - if e.l == c { + if c >= e.L { + if e.L == c { p++ - if e.i != noIndex { - s.index = int(e.i) + if e.I != noIndex { + s.index = int(e.I) s.pindex = p } - if e.n != final { - i, states, n = 0, states[int(e.h)+n:], int(e.n) + if e.N != final { + i, states, n = 0, states[int(e.H)+n:], int(e.N) if p >= len(str) || utf8.RuneStart(str[p]) { s.states, s.n, pr = states, n, p } @@ -131,10 +131,10 @@ func (s *ctScannerString) scan(p int) int { return p } continue - } else if e.n == final && c <= e.h { + } else if e.N == final && c <= e.H { p++ s.done = true - s.index = int(c-e.l) + int(e.i) + s.index = int(c-e.L) + int(e.I) s.pindex = p return p } diff --git a/vendor/golang.org/x/text/internal/colltab/contract_test.go b/vendor/golang.org/x/text/internal/colltab/contract_test.go index c37c020ecf..ce2871dd4f 100644 --- a/vendor/golang.org/x/text/internal/colltab/contract_test.go +++ b/vendor/golang.org/x/text/internal/colltab/contract_test.go @@ -14,102 +14,98 @@ type lookupStrings struct { n int // bytes consumed from input } -var lookupTests = []struct { +type LookupTest struct { lookup []lookupStrings n int - tries contractTrieSet -}{ - { - []lookupStrings{ - {"abc", 1, 3}, - {"a", 0, 0}, - {"b", 0, 0}, - {"c", 0, 0}, - {"d", 0, 0}, - }, - 1, - contractTrieSet{ - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 0xFF}, - {'c', 'c', 0, 1}, - }, + tries ContractTrieSet +} + +var lookupTests = []LookupTest{{ + []lookupStrings{ + {"abc", 1, 3}, + {"a", 0, 0}, + {"b", 0, 0}, + {"c", 0, 0}, + {"d", 0, 0}, }, - { - []lookupStrings{ - {"abc", 1, 3}, - {"abd", 2, 3}, - {"abe", 3, 3}, - {"a", 0, 0}, - {"ab", 0, 0}, - {"d", 0, 0}, - {"f", 0, 0}, - }, - 1, - contractTrieSet{ - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 0xFF}, - {'c', 'e', 0, 1}, - }, + 1, + ContractTrieSet{ + {'a', 0, 1, 0xFF}, + {'b', 0, 1, 0xFF}, + {'c', 'c', 0, 1}, }, - { - []lookupStrings{ - {"abc", 1, 3}, - {"ab", 2, 2}, - {"a", 3, 1}, - {"abcd", 1, 3}, - {"abe", 2, 2}, - }, - 1, - contractTrieSet{ - {'a', 0, 1, 3}, - {'b', 0, 1, 2}, - {'c', 'c', 0, 1}, - }, +}, { + []lookupStrings{ + {"abc", 1, 3}, + {"abd", 2, 3}, + {"abe", 3, 3}, + {"a", 0, 0}, + {"ab", 0, 0}, + {"d", 0, 0}, + {"f", 0, 0}, }, - { - []lookupStrings{ - {"abc", 1, 3}, - {"abd", 2, 3}, - {"ab", 3, 2}, - {"ac", 4, 2}, - {"a", 5, 1}, - {"b", 6, 1}, - {"ba", 6, 1}, - }, - 2, - contractTrieSet{ - {'b', 'b', 0, 6}, - {'a', 0, 2, 5}, - {'c', 'c', 0, 4}, - {'b', 0, 1, 3}, - {'c', 'd', 0, 1}, - }, + 1, + ContractTrieSet{ + {'a', 0, 1, 0xFF}, + {'b', 0, 1, 0xFF}, + {'c', 'e', 0, 1}, }, - { - []lookupStrings{ - {"bcde", 2, 4}, - {"bc", 7, 2}, - {"ab", 6, 2}, - {"bcd", 5, 3}, - {"abcd", 1, 4}, - {"abc", 4, 3}, - {"bcdf", 3, 4}, - }, - 2, - contractTrieSet{ - {'b', 3, 1, 0xFF}, - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 6}, - {'c', 0, 1, 4}, - {'d', 'd', 0, 1}, - {'c', 0, 1, 7}, - {'d', 0, 1, 5}, - {'e', 'f', 0, 2}, - }, +}, { + []lookupStrings{ + {"abc", 1, 3}, + {"ab", 2, 2}, + {"a", 3, 1}, + {"abcd", 1, 3}, + {"abe", 2, 2}, }, -} + 1, + ContractTrieSet{ + {'a', 0, 1, 3}, + {'b', 0, 1, 2}, + {'c', 'c', 0, 1}, + }, +}, { + []lookupStrings{ + {"abc", 1, 3}, + {"abd", 2, 3}, + {"ab", 3, 2}, + {"ac", 4, 2}, + {"a", 5, 1}, + {"b", 6, 1}, + {"ba", 6, 1}, + }, + 2, + ContractTrieSet{ + {'b', 'b', 0, 6}, + {'a', 0, 2, 5}, + {'c', 'c', 0, 4}, + {'b', 0, 1, 3}, + {'c', 'd', 0, 1}, + }, +}, { + []lookupStrings{ + {"bcde", 2, 4}, + {"bc", 7, 2}, + {"ab", 6, 2}, + {"bcd", 5, 3}, + {"abcd", 1, 4}, + {"abc", 4, 3}, + {"bcdf", 3, 4}, + }, + 2, + ContractTrieSet{ + {'b', 3, 1, 0xFF}, + {'a', 0, 1, 0xFF}, + {'b', 0, 1, 6}, + {'c', 0, 1, 4}, + {'d', 'd', 0, 1}, + {'c', 0, 1, 7}, + {'d', 0, 1, 5}, + {'e', 'f', 0, 2}, + }, +}} -func lookup(c *contractTrieSet, nnode int, s []uint8) (i, n int) { +func lookup(c *ContractTrieSet, nnode int, s []uint8) (i, n int) { scan := c.scanner(0, nnode, s) scan.scan(0) return scan.result() @@ -117,11 +113,11 @@ func lookup(c *contractTrieSet, nnode int, s []uint8) (i, n int) { func TestLookupContraction(t *testing.T) { for i, tt := range lookupTests { - cts := contractTrieSet(tt.tries) + cts := ContractTrieSet(tt.tries) for j, lu := range tt.lookup { str := lu.str for _, s := range []string{str, str + "X"} { - const msg = "%d:%d: %s of %q %v; want %v" + const msg = `%d:%d: %s of "%s" %v; want %v` offset, n := lookup(&cts, tt.n, []byte(s)) if offset != lu.offset { t.Errorf(msg, i, j, "offset", s, offset, lu.offset) diff --git a/vendor/golang.org/x/text/internal/colltab/iter.go b/vendor/golang.org/x/text/internal/colltab/iter.go index 92046b988c..c1b1ba81ef 100644 --- a/vendor/golang.org/x/text/internal/colltab/iter.go +++ b/vendor/golang.org/x/text/internal/colltab/iter.go @@ -4,16 +4,12 @@ package colltab -import ( - "golang.org/x/text/collate/colltab" -) - // An Iter incrementally converts chunks of the input text to collation // elements, while ensuring that the collation elements are in normalized order // (that is, they are in the order as if the input text were normalized first). type Iter struct { - Weighter colltab.Weighter - Elems []colltab.Elem + Weighter Weighter + Elems []Elem // N is the number of elements in Elems that will not be reordered on // subsequent iterations, N <= len(Elems). N int diff --git a/vendor/golang.org/x/text/internal/colltab/iter_test.go b/vendor/golang.org/x/text/internal/colltab/iter_test.go index 05164ab7a8..5783534c7d 100644 --- a/vendor/golang.org/x/text/internal/colltab/iter_test.go +++ b/vendor/golang.org/x/text/internal/colltab/iter_test.go @@ -6,22 +6,8 @@ package colltab import ( "testing" - - "golang.org/x/text/collate/colltab" -) - -const ( - defaultSecondary = 0x20 ) -func makeCE(w []int) colltab.Elem { - ce, err := colltab.MakeElem(w[0], w[1], w[2], uint8(w[3])) - if err != nil { - panic(err) - } - return ce -} - func TestDoNorm(t *testing.T) { const div = -1 // The insertion point of the next block. tests := []struct { diff --git a/vendor/golang.org/x/text/collate/colltab/numeric.go b/vendor/golang.org/x/text/internal/colltab/numeric.go similarity index 100% rename from vendor/golang.org/x/text/collate/colltab/numeric.go rename to vendor/golang.org/x/text/internal/colltab/numeric.go diff --git a/vendor/golang.org/x/text/collate/colltab/numeric_test.go b/vendor/golang.org/x/text/internal/colltab/numeric_test.go similarity index 100% rename from vendor/golang.org/x/text/collate/colltab/numeric_test.go rename to vendor/golang.org/x/text/internal/colltab/numeric_test.go diff --git a/vendor/golang.org/x/text/collate/colltab/table.go b/vendor/golang.org/x/text/internal/colltab/table.go similarity index 83% rename from vendor/golang.org/x/text/collate/colltab/table.go rename to vendor/golang.org/x/text/internal/colltab/table.go index 1a3a5c0f36..e26e36da93 100644 --- a/vendor/golang.org/x/text/collate/colltab/table.go +++ b/vendor/golang.org/x/text/internal/colltab/table.go @@ -10,45 +10,45 @@ import ( "golang.org/x/text/unicode/norm" ) -// table holds all collation data for a given collation ordering. -type table struct { - index trie // main trie +// Table holds all collation data for a given collation ordering. +type Table struct { + Index Trie // main trie // expansion info - expandElem []uint32 + ExpandElem []uint32 // contraction info - contractTries contractTrieSet - contractElem []uint32 - maxContractLen int - variableTop uint32 + ContractTries ContractTrieSet + ContractElem []uint32 + MaxContractLen int + VariableTop uint32 } -func (t *table) AppendNext(w []Elem, b []byte) (res []Elem, n int) { +func (t *Table) AppendNext(w []Elem, b []byte) (res []Elem, n int) { return t.appendNext(w, source{bytes: b}) } -func (t *table) AppendNextString(w []Elem, s string) (res []Elem, n int) { +func (t *Table) AppendNextString(w []Elem, s string) (res []Elem, n int) { return t.appendNext(w, source{str: s}) } -func (t *table) Start(p int, b []byte) int { +func (t *Table) Start(p int, b []byte) int { // TODO: implement panic("not implemented") } -func (t *table) StartString(p int, s string) int { +func (t *Table) StartString(p int, s string) int { // TODO: implement panic("not implemented") } -func (t *table) Domain() []string { +func (t *Table) Domain() []string { // TODO: implement panic("not implemented") } -func (t *table) Top() uint32 { - return t.variableTop +func (t *Table) Top() uint32 { + return t.VariableTop } type source struct { @@ -56,11 +56,11 @@ type source struct { bytes []byte } -func (src *source) lookup(t *table) (ce Elem, sz int) { +func (src *source) lookup(t *Table) (ce Elem, sz int) { if src.bytes == nil { - return t.index.lookupString(src.str) + return t.Index.lookupString(src.str) } - return t.index.lookup(src.bytes) + return t.Index.lookup(src.bytes) } func (src *source) tail(sz int) { @@ -97,7 +97,7 @@ func (src *source) properties(f norm.Form) norm.Properties { // sequence of runes, the weights for the interstitial runes are // appended as well. It returns a new slice that includes the appended // weights and the number of bytes consumed from s. -func (t *table) appendNext(w []Elem, src source) (res []Elem, n int) { +func (t *Table) appendNext(w []Elem, src source) (res []Elem, n int) { ce, sz := src.lookup(t) tp := ce.ctype() if tp == ceNormal { @@ -113,7 +113,7 @@ func (t *table) appendNext(w []Elem, src source) (res []Elem, n int) { n = sz var buf [16]byte // Used for decomposing Hangul. for b := src.nfd(buf[:0], hangulSize); len(b) > 0; b = b[sz:] { - ce, sz = t.index.lookup(b) + ce, sz = t.Index.lookup(b) w = append(w, ce) } return w, n @@ -151,20 +151,20 @@ func (t *table) appendNext(w []Elem, src source) (res []Elem, n int) { return w, sz } -func (t *table) appendExpansion(w []Elem, ce Elem) []Elem { +func (t *Table) appendExpansion(w []Elem, ce Elem) []Elem { i := splitExpandIndex(ce) - n := int(t.expandElem[i]) + n := int(t.ExpandElem[i]) i++ - for _, ce := range t.expandElem[i : i+n] { + for _, ce := range t.ExpandElem[i : i+n] { w = append(w, Elem(ce)) } return w } -func (t *table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) { +func (t *Table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) { index, n, offset := splitContractIndex(ce) - scan := t.contractTries.scanner(index, n, suffix) + scan := t.ContractTries.scanner(index, n, suffix) buf := [norm.MaxSegmentSize]byte{} bufp := 0 p := scan.scan(0) @@ -203,7 +203,7 @@ func (t *table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) } // Append weights for the matched contraction, which may be an expansion. i, n := scan.result() - ce = Elem(t.contractElem[i+offset]) + ce = Elem(t.ContractElem[i+offset]) if ce.ctype() == ceNormal { w = append(w, ce) } else { @@ -219,10 +219,10 @@ func (t *table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) // TODO: unify the two implementations. This is best done after first simplifying // the algorithm taking into account the inclusion of both NFC and NFD forms // in the table. -func (t *table) matchContractionString(w []Elem, ce Elem, suffix string) ([]Elem, int) { +func (t *Table) matchContractionString(w []Elem, ce Elem, suffix string) ([]Elem, int) { index, n, offset := splitContractIndex(ce) - scan := t.contractTries.scannerString(index, n, suffix) + scan := t.ContractTries.scannerString(index, n, suffix) buf := [norm.MaxSegmentSize]byte{} bufp := 0 p := scan.scan(0) @@ -261,7 +261,7 @@ func (t *table) matchContractionString(w []Elem, ce Elem, suffix string) ([]Elem } // Append weights for the matched contraction, which may be an expansion. i, n := scan.result() - ce = Elem(t.contractElem[i+offset]) + ce = Elem(t.ContractElem[i+offset]) if ce.ctype() == ceNormal { w = append(w, ce) } else { diff --git a/vendor/golang.org/x/text/internal/colltab/trie.go b/vendor/golang.org/x/text/internal/colltab/trie.go new file mode 100644 index 0000000000..a0eaa0d23b --- /dev/null +++ b/vendor/golang.org/x/text/internal/colltab/trie.go @@ -0,0 +1,159 @@ +// 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. + +// The trie in this file is used to associate the first full character in an +// UTF-8 string to a collation element. 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 of collation elements. +// For a full description, see go.text/collate/build/trie.go. + +package colltab + +const blockSize = 64 + +type Trie struct { + Index0 []uint16 // index for first byte (0xC0-0xFF) + Values0 []uint32 // index for first byte (0x00-0x7F) + Index []uint16 + Values []uint32 +} + +const ( + t1 = 0x00 // 0000 0000 + tx = 0x80 // 1000 0000 + t2 = 0xC0 // 1100 0000 + t3 = 0xE0 // 1110 0000 + t4 = 0xF0 // 1111 0000 + t5 = 0xF8 // 1111 1000 + t6 = 0xFC // 1111 1100 + te = 0xFE // 1111 1110 +) + +func (t *Trie) lookupValue(n uint16, b byte) Elem { + return Elem(t.Values[int(n)<<6+int(b)]) +} + +// 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 *Trie) lookup(s []byte) (v Elem, sz int) { + c0 := s[0] + switch { + case c0 < tx: + return Elem(t.Values0[c0]), 1 + case c0 < t2: + return 0, 1 + case c0 < t3: + if len(s) < 2 { + return 0, 0 + } + i := t.Index0[c0] + c1 := s[1] + if c1 < tx || t2 <= c1 { + return 0, 1 + } + return t.lookupValue(i, c1), 2 + case c0 < t4: + if len(s) < 3 { + return 0, 0 + } + i := t.Index0[c0] + c1 := s[1] + if c1 < tx || t2 <= c1 { + return 0, 1 + } + o := int(i)<<6 + int(c1) + i = t.Index[o] + c2 := s[2] + if c2 < tx || t2 <= c2 { + return 0, 2 + } + return t.lookupValue(i, c2), 3 + case c0 < t5: + if len(s) < 4 { + return 0, 0 + } + i := t.Index0[c0] + c1 := s[1] + if c1 < tx || t2 <= c1 { + return 0, 1 + } + o := int(i)<<6 + int(c1) + i = t.Index[o] + c2 := s[2] + if c2 < tx || t2 <= c2 { + return 0, 2 + } + o = int(i)<<6 + int(c2) + i = t.Index[o] + c3 := s[3] + if c3 < tx || t2 <= c3 { + return 0, 3 + } + return t.lookupValue(i, c3), 4 + } + // Illegal rune + return 0, 1 +} + +// The body of lookupString is a verbatim copy of that of lookup. +func (t *Trie) lookupString(s string) (v Elem, sz int) { + c0 := s[0] + switch { + case c0 < tx: + return Elem(t.Values0[c0]), 1 + case c0 < t2: + return 0, 1 + case c0 < t3: + if len(s) < 2 { + return 0, 0 + } + i := t.Index0[c0] + c1 := s[1] + if c1 < tx || t2 <= c1 { + return 0, 1 + } + return t.lookupValue(i, c1), 2 + case c0 < t4: + if len(s) < 3 { + return 0, 0 + } + i := t.Index0[c0] + c1 := s[1] + if c1 < tx || t2 <= c1 { + return 0, 1 + } + o := int(i)<<6 + int(c1) + i = t.Index[o] + c2 := s[2] + if c2 < tx || t2 <= c2 { + return 0, 2 + } + return t.lookupValue(i, c2), 3 + case c0 < t5: + if len(s) < 4 { + return 0, 0 + } + i := t.Index0[c0] + c1 := s[1] + if c1 < tx || t2 <= c1 { + return 0, 1 + } + o := int(i)<<6 + int(c1) + i = t.Index[o] + c2 := s[2] + if c2 < tx || t2 <= c2 { + return 0, 2 + } + o = int(i)<<6 + int(c2) + i = t.Index[o] + c3 := s[3] + if c3 < tx || t2 <= c3 { + return 0, 3 + } + return t.lookupValue(i, c3), 4 + } + // Illegal rune + return 0, 1 +} diff --git a/vendor/golang.org/x/text/collate/colltab/trie_test.go b/vendor/golang.org/x/text/internal/colltab/trie_test.go similarity index 97% rename from vendor/golang.org/x/text/collate/colltab/trie_test.go rename to vendor/golang.org/x/text/internal/colltab/trie_test.go index 85e24220d6..b056a811eb 100644 --- a/vendor/golang.org/x/text/collate/colltab/trie_test.go +++ b/vendor/golang.org/x/text/internal/colltab/trie_test.go @@ -103,4 +103,4 @@ var testLookup = [640]uint16{ 0x270: 0x04, 0x274: 0x06, } -var testTrie = trie{testLookup[6*blockSize:], testValues[:], testLookup[:], testValues[:]} +var testTrie = Trie{testLookup[6*blockSize:], testValues[:], testLookup[:], testValues[:]} diff --git a/vendor/golang.org/x/text/internal/colltab/weighter.go b/vendor/golang.org/x/text/internal/colltab/weighter.go new file mode 100644 index 0000000000..f1ec45fb50 --- /dev/null +++ b/vendor/golang.org/x/text/internal/colltab/weighter.go @@ -0,0 +1,31 @@ +// 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 colltab // import "golang.org/x/text/internal/colltab" + +// A Weighter can be used as a source for Collator and Searcher. +type Weighter interface { + // Start finds the start of the segment that includes position p. + Start(p int, b []byte) int + + // StartString finds the start of the segment that includes position p. + StartString(p int, s string) int + + // AppendNext appends Elems to buf corresponding to the longest match + // of a single character or contraction from the start of s. + // It returns the new buf and the number of bytes consumed. + AppendNext(buf []Elem, s []byte) (ce []Elem, n int) + + // AppendNextString appends Elems to buf corresponding to the longest match + // of a single character or contraction from the start of s. + // It returns the new buf and the number of bytes consumed. + AppendNextString(buf []Elem, s string) (ce []Elem, n int) + + // Domain returns a slice of all single characters and contractions for which + // collation elements are defined in this table. + Domain() []string + + // Top returns the highest variable primary value. + Top() uint32 +} diff --git a/vendor/golang.org/x/text/collate/colltab/colltab_test.go b/vendor/golang.org/x/text/internal/colltab/weighter_test.go similarity index 100% rename from vendor/golang.org/x/text/collate/colltab/colltab_test.go rename to vendor/golang.org/x/text/internal/colltab/weighter_test.go diff --git a/vendor/golang.org/x/text/internal/export/README b/vendor/golang.org/x/text/internal/export/README new file mode 100644 index 0000000000..350b93d39c --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/README @@ -0,0 +1,4 @@ +The export directory contains packages that are generated using the x/text +infrastructure, but live elsewhere. +At some point we can expose some of the infrastructure, but for now this +is not done. diff --git a/vendor/golang.org/x/text/internal/export/idna/common_test.go b/vendor/golang.org/x/text/internal/export/idna/common_test.go new file mode 100644 index 0000000000..0b07c12d7c --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/common_test.go @@ -0,0 +1,55 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package idna + +// This file contains code that is common between the generation code and the +// package's test code. + +import ( + "log" + + "golang.org/x/text/internal/ucd" +) + +func catFromEntry(p *ucd.Parser) (cat category) { + r := p.Rune(0) + switch s := p.String(1); s { + case "valid": + cat = valid + case "disallowed": + cat = disallowed + case "disallowed_STD3_valid": + cat = disallowedSTD3Valid + case "disallowed_STD3_mapped": + cat = disallowedSTD3Mapped + case "mapped": + cat = mapped + case "deviation": + cat = deviation + case "ignored": + cat = ignored + default: + log.Fatalf("%U: Unknown category %q", r, s) + } + if s := p.String(3); s != "" { + if cat != valid { + log.Fatalf(`%U: %s defined for %q; want "valid"`, r, s, p.String(1)) + } + switch s { + case "NV8": + cat = validNV8 + case "XV8": + cat = validXV8 + default: + log.Fatalf("%U: Unexpected exception %q", r, s) + } + } + return cat +} + +var joinType = map[string]info{ + "L": joiningL, + "D": joiningD, + "T": joiningT, + "R": joiningR, +} diff --git a/vendor/golang.org/x/text/internal/export/idna/example_test.go b/vendor/golang.org/x/text/internal/export/idna/example_test.go new file mode 100644 index 0000000000..6e6b8727cd --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/example_test.go @@ -0,0 +1,68 @@ +// Copyright 2017 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_test + +import ( + "fmt" + + "golang.org/x/text/internal/export/idna" +) + +func ExampleProfile() { + // Raw Punycode has no restrictions and does no mappings. + fmt.Println(idna.ToASCII("")) + fmt.Println(idna.ToASCII("*.faß.com")) + fmt.Println(idna.Punycode.ToASCII("*.faß.com")) + + // Rewrite IDN for lookup. This (currently) uses transitional mappings to + // find a balance between IDNA2003 and IDNA2008 compatibility. + fmt.Println(idna.Lookup.ToASCII("")) + fmt.Println(idna.Lookup.ToASCII("www.faß.com")) + + // Convert an IDN to ASCII for registration purposes. This changes the + // encoding, but reports an error if the input was illformed. + fmt.Println(idna.Registration.ToASCII("")) + fmt.Println(idna.Registration.ToASCII("www.faß.com")) + + // Output: + // + // *.xn--fa-hia.com + // *.xn--fa-hia.com + // + // www.fass.com + // idna: invalid label "" + // www.xn--fa-hia.com +} + +func ExampleNew() { + var p *idna.Profile + + // Raw Punycode has no restrictions and does no mappings. + p = idna.New() + fmt.Println(p.ToASCII("*.faß.com")) + + // Do mappings. Note that star is not allowed in a DNS lookup. + p = idna.New( + idna.MapForLookup(), + idna.Transitional(true)) // Map ß -> ss + fmt.Println(p.ToASCII("*.faß.com")) + + // Lookup for registration. Also does not allow '*'. + p = idna.New(idna.ValidateForRegistration()) + fmt.Println(p.ToUnicode("*.faß.com")) + + // Set up a profile maps for lookup, but allows wild cards. + p = idna.New( + idna.MapForLookup(), + idna.Transitional(true), // Map ß -> ss + idna.StrictDomainName(false)) // Set more permissive ASCII rules. + fmt.Println(p.ToASCII("*.faß.com")) + + // Output: + // *.xn--fa-hia.com + // *.fass.com idna: disallowed rune U+002A + // *.faß.com idna: disallowed rune U+002A + // *.fass.com +} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen.go b/vendor/golang.org/x/text/internal/export/idna/gen.go new file mode 100644 index 0000000000..27a5e1c433 --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/gen.go @@ -0,0 +1,259 @@ +// 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 ignore + +// This program generates the trie for idna 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 ( + "fmt" + "io" + "log" + "unicode" + "unicode/utf8" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/triegen" + "golang.org/x/text/internal/ucd" +) + +func main() { + gen.Init() + genTables() + gen.Repackage("gen_trieval.go", "trieval.go", "idna") + gen.Repackage("gen_common.go", "common_test.go", "idna") +} + +var runes = map[rune]info{} + +func genTables() { + t := triegen.NewTrie("idna") + + ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + + const cccVirama = 9 + if p.Int(ucd.CanonicalCombiningClass) == cccVirama { + runes[p.Rune(0)] = viramaModifier + } + switch { + case unicode.In(r, unicode.Mark): + runes[r] |= modifier + } + }) + + ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { + switch v := p.String(1); v { + case "L", "D", "T", "R": + runes[p.Rune(0)] |= joinType[v] << joinShift + } + }) + + ucd.Parse(gen.OpenUnicodeFile("idna", "", "IdnaMappingTable.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + + // The mappings table explicitly defines surrogates as invalid. + if !utf8.ValidRune(r) { + return + } + + cat := catFromEntry(p) + isMapped := cat == mapped || cat == disallowedSTD3Mapped || cat == deviation + if !isMapped { + // Only include additional category information for non-mapped + // runes. The additional information is only used after mapping and + // the bits would clash with mapping information. + // TODO: it would be possible to inline this data and avoid + // additional lookups. This is quite tedious, though, so let's first + // see if we need this. + cat |= category(runes[r]) + } + + s := string(p.Runes(2)) + if s != "" && !isMapped { + log.Fatalf("%U: Mapping with non-mapping category %d", r, cat) + } + t.Insert(r, uint64(makeEntry(r, s))+uint64(cat)) + }) + + w := gen.NewCodeWriter() + defer w.WriteGoFile("tables.go", "idna") + + gen.WriteUnicodeVersion(w) + + w.WriteVar("mappings", string(mappings)) + w.WriteVar("xorData", string(xorData)) + + sz, err := t.Gen(w, triegen.Compact(&normCompacter{})) + if err != nil { + log.Fatal(err) + } + w.Size += sz +} + +var ( + // mappings contains replacement strings for mapped runes, each prefixed + // with a byte containing the length of the following string. + mappings = []byte{} + mapCache = map[string]int{} + + // xorData is like mappings, except that it contains XOR data. + // We split these two tables so that we don't get an overflow. + xorData = []byte{} + xorCache = map[string]int{} +) + +// makeEntry creates a trie entry. +func makeEntry(r rune, mapped string) info { + orig := string(r) + + if len(orig) != len(mapped) { + // Store the mapped value as is in the mappings table. + index := len(mappings) + if x, ok := mapCache[mapped]; ok { + index = x + } else { + mapCache[mapped] = index + mappings = append(mappings, byte(len(mapped))) + mappings = append(mappings, mapped...) + } + return info(index) << indexShift + } + + // Create per-byte XOR mask. + var b []byte + for i := 0; i < len(orig); 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 { + return xorBit | inlineXOR | info(b[0])<= 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 "idnaSparse.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("// idnaSparseOffset: %d entries, %d bytes\n", ls, ls*2) + p("var idnaSparseOffset = %#v\n\n", c.sparseOffset) + + ns := c.sparseCount + p("// idnaSparseValues: %d entries, %d bytes\n", ns, ns*4) + p("var idnaSparseValues = [%d]valueRange {", 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/internal/export/idna/gen_common.go b/vendor/golang.org/x/text/internal/export/idna/gen_common.go new file mode 100644 index 0000000000..360a02b8e9 --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/gen_common.go @@ -0,0 +1,59 @@ +// 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 ignore + +package main + +// This file contains code that is common between the generation code and the +// package's test code. + +import ( + "log" + + "golang.org/x/text/internal/ucd" +) + +func catFromEntry(p *ucd.Parser) (cat category) { + r := p.Rune(0) + switch s := p.String(1); s { + case "valid": + cat = valid + case "disallowed": + cat = disallowed + case "disallowed_STD3_valid": + cat = disallowedSTD3Valid + case "disallowed_STD3_mapped": + cat = disallowedSTD3Mapped + case "mapped": + cat = mapped + case "deviation": + cat = deviation + case "ignored": + cat = ignored + default: + log.Fatalf("%U: Unknown category %q", r, s) + } + if s := p.String(3); s != "" { + if cat != valid { + log.Fatalf(`%U: %s defined for %q; want "valid"`, r, s, p.String(1)) + } + switch s { + case "NV8": + cat = validNV8 + case "XV8": + cat = validXV8 + default: + log.Fatalf("%U: Unexpected exception %q", r, s) + } + } + return cat +} + +var joinType = map[string]info{ + "L": joiningL, + "D": joiningD, + "T": joiningT, + "R": joiningR, +} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen_test.go b/vendor/golang.org/x/text/internal/export/idna/gen_test.go new file mode 100644 index 0000000000..60602ecf52 --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/gen_test.go @@ -0,0 +1,82 @@ +// 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 idna + +import ( + "testing" + "unicode" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/testtext" + "golang.org/x/text/internal/ucd" +) + +func TestTables(t *testing.T) { + testtext.SkipIfNotLong(t) + + lookup := func(r rune) info { + v, _ := trie.lookupString(string(r)) + return info(v) + } + + ucd.Parse(gen.OpenUnicodeFile("idna", "", "IdnaMappingTable.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + x := lookup(r) + if got, want := x.category(), catFromEntry(p); got != want { + t.Errorf("%U:category: got %x; want %x", r, got, want) + } + + mapped := false + switch p.String(1) { + case "mapped", "disallowed_STD3_mapped", "deviation": + mapped = true + } + if x.isMapped() != mapped { + t.Errorf("%U:isMapped: got %v; want %v", r, x.isMapped(), mapped) + } + if !mapped { + return + } + want := string(p.Runes(2)) + got := string(x.appendMapping(nil, string(r))) + if got != want { + t.Errorf("%U:mapping: got %+q; want %+q", r, got, want) + } + + if x.isMapped() { + return + } + wantMark := unicode.In(r, unicode.Mark) + gotMark := x.isModifier() + if gotMark != wantMark { + t.Errorf("IsMark(%U) = %v; want %v", r, gotMark, wantMark) + } + }) + + ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + x := lookup(r) + got := x.isViramaModifier() + + const cccVirama = 9 + want := p.Int(ucd.CanonicalCombiningClass) == cccVirama + if got != want { + t.Errorf("IsVirama(%U) = %v; want %v", r, got, want) + } + }) + + ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + x := lookup(r) + if x.isMapped() { + return + } + got := x.joinType() + want := joinType[p.String(1)] + if got != want { + t.Errorf("JoinType(%U) = %x; want %x", r, got, want) + } + }) +} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go b/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go new file mode 100644 index 0000000000..3a3229649a --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go @@ -0,0 +1,118 @@ +// 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 ignore + +package main + +// This file contains definitions for interpreting the trie value of the idna +// 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 information from the IDNA mapping table for a single rune. It is +// the value returned by a trie lookup. In most cases, all information fits in +// a 16-bit value. For mappings, this value may contain an index into a slice +// with the mapped string. Such mappings can consist of the actual mapped value +// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the +// input rune. This technique is used by the cases packages and reduces the +// table size significantly. +// +// The per-rune values have the following format: +// +// if mapped { +// if inlinedXOR { +// 15..13 inline XOR marker +// 12..11 unused +// 10..3 inline XOR mask +// } else { +// 15..3 index into xor or mapping table +// } +// } else { +// 15..13 unused +// 12 modifier (including virama) +// 11 virama modifier +// 10..8 joining type +// 7..3 category type +// } +// 2 use xor pattern +// 1..0 mapped category +// +// See the definitions below for a more detailed description of the various +// bits. +type info uint16 + +const ( + catSmallMask = 0x3 + catBigMask = 0xF8 + indexShift = 3 + xorBit = 0x4 // interpret the index as an xor pattern + inlineXOR = 0xE000 // These bits are set if the XOR pattern is inlined. + + joinShift = 8 + joinMask = 0x07 + + viramaModifier = 0x0800 + modifier = 0x1000 +) + +// A category corresponds to a category defined in the IDNA mapping table. +type category uint16 + +const ( + unknown category = 0 // not defined currently in unicode. + mapped category = 1 + disallowedSTD3Mapped category = 2 + deviation category = 3 +) + +const ( + valid category = 0x08 + validNV8 category = 0x18 + validXV8 category = 0x28 + disallowed category = 0x40 + disallowedSTD3Valid category = 0x80 + ignored category = 0xC0 +) + +// join types and additional rune information +const ( + joiningL = (iota + 1) + joiningD + joiningT + joiningR + + //the following types are derived during processing + joinZWJ + joinZWNJ + joinVirama + numJoinTypes +) + +func (c info) isMapped() bool { + return c&0x3 != 0 +} + +func (c info) category() category { + small := c & catSmallMask + if small != 0 { + return category(small) + } + return category(c & catBigMask) +} + +func (c info) joinType() info { + if c.isMapped() { + return 0 + } + return (c >> joinShift) & joinMask +} + +func (c info) isModifier() bool { + return c&(modifier|catSmallMask) == modifier +} + +func (c info) isViramaModifier() bool { + return c&(viramaModifier|catSmallMask) == viramaModifier +} diff --git a/vendor/golang.org/x/text/internal/export/idna/idna.go b/vendor/golang.org/x/text/internal/export/idna/idna.go new file mode 100644 index 0000000000..1d775fa20c --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/idna.go @@ -0,0 +1,680 @@ +// 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. + +//go:generate go run gen.go gen_trieval.go gen_common.go + +// Package idna implements IDNA2008 using the compatibility processing +// defined by UTS (Unicode Technical Standard) #46, which defines a standard to +// deal with the transition from IDNA2003. +// +// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC +// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. +// UTS #46 is defined in http://www.unicode.org/reports/tr46. +// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the +// differences between these two standards. +package idna // import "golang.org/x/text/internal/export/idna" + +import ( + "fmt" + "strings" + "unicode/utf8" + + "golang.org/x/text/secure/bidirule" + "golang.org/x/text/unicode/norm" +) + +// NOTE: Unlike common practice in Go APIs, the functions will return a +// sanitized domain name in case of errors. Browsers sometimes use a partially +// evaluated string as lookup. +// TODO: the current error handling is, in my opinion, the least opinionated. +// Other strategies are also viable, though: +// Option 1) Return an empty string in case of error, but allow the user to +// specify explicitly which errors to ignore. +// Option 2) Return the partially evaluated string if it is itself a valid +// string, otherwise return the empty string in case of error. +// Option 3) Option 1 and 2. +// Option 4) Always return an empty string for now and implement Option 1 as +// needed, and document that the return string may not be empty in case of +// error in the future. +// I think Option 1 is best, but it is quite opinionated. + +// ToASCII is a wrapper for Punycode.ToASCII. +func ToASCII(s string) (string, error) { + return Punycode.process(s, true) +} + +// ToUnicode is a wrapper for Punycode.ToUnicode. +func ToUnicode(s string) (string, error) { + return Punycode.process(s, false) +} + +// An Option configures a Profile at creation time. +type Option func(*options) + +// Transitional sets a Profile to use the Transitional mapping as defined in UTS +// #46. This will cause, for example, "ß" to be mapped to "ss". Using the +// transitional mapping provides a compromise between IDNA2003 and IDNA2008 +// compatibility. It is used by most browsers when resolving domain names. This +// option is only meaningful if combined with MapForLookup. +func Transitional(transitional bool) Option { + return func(o *options) { o.transitional = true } +} + +// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts +// are longer than allowed by the RFC. +func VerifyDNSLength(verify bool) Option { + return func(o *options) { o.verifyDNSLength = verify } +} + +// RemoveLeadingDots removes leading label separators. Leading runes that map to +// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. +// +// This is the behavior suggested by the UTS #46 and is adopted by some +// browsers. +func RemoveLeadingDots(remove bool) Option { + return func(o *options) { o.removeLeadingDots = remove } +} + +// ValidateLabels sets whether to check the mandatory label validation criteria +// as defined in Section 5.4 of RFC 5891. This includes testing for correct use +// of hyphens ('-'), normalization, validity of runes, and the context rules. +func ValidateLabels(enable bool) Option { + return func(o *options) { + // Don't override existing mappings, but set one that at least checks + // normalization if it is not set. + if o.mapping == nil && enable { + o.mapping = normalize + } + o.trie = trie + o.validateLabels = enable + o.fromPuny = validateFromPunycode + } +} + +// StrictDomainName limits the set of permissible ASCII characters to those +// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the +// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// +// This option is useful, for instance, for browsers that allow characters +// outside this range, for example a '_' (U+005F LOW LINE). See +// http://www.rfc-editor.org/std/std3.txt for more details This option +// corresponds to the UseSTD3ASCIIRules option in UTS #46. +func StrictDomainName(use bool) Option { + return func(o *options) { + o.trie = trie + o.useSTD3Rules = use + o.fromPuny = validateFromPunycode + } +} + +// NOTE: the following options pull in tables. The tables should not be linked +// in as long as the options are not used. + +// BidiRule enables the Bidi rule as defined in RFC 5893. Any application +// that relies on proper validation of labels should include this rule. +func BidiRule() Option { + return func(o *options) { o.bidirule = bidirule.ValidString } +} + +// ValidateForRegistration sets validation options to verify that a given IDN is +// properly formatted for registration as defined by Section 4 of RFC 5891. +func ValidateForRegistration() Option { + return func(o *options) { + o.mapping = validateRegistration + StrictDomainName(true)(o) + ValidateLabels(true)(o) + VerifyDNSLength(true)(o) + BidiRule()(o) + } +} + +// MapForLookup sets validation and mapping options such that a given IDN is +// transformed for domain name lookup according to the requirements set out in +// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, +// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option +// to add this check. +// +// The mappings include normalization and mapping case, width and other +// compatibility mappings. +func MapForLookup() Option { + return func(o *options) { + o.mapping = validateAndMap + StrictDomainName(true)(o) + ValidateLabels(true)(o) + RemoveLeadingDots(true)(o) + } +} + +type options struct { + transitional bool + useSTD3Rules bool + validateLabels bool + verifyDNSLength bool + removeLeadingDots bool + + trie *idnaTrie + + // fromPuny calls validation rules when converting A-labels to U-labels. + fromPuny func(p *Profile, s string) error + + // mapping implements a validation and mapping step as defined in RFC 5895 + // or UTS 46, tailored to, for example, domain registration or lookup. + mapping func(p *Profile, s string) (string, error) + + // bidirule, if specified, checks whether s conforms to the Bidi Rule + // defined in RFC 5893. + bidirule func(s string) bool +} + +// A Profile defines the configuration of a IDNA mapper. +type Profile struct { + options +} + +func apply(o *options, opts []Option) { + for _, f := range opts { + f(o) + } +} + +// New creates a new Profile. +// +// With no options, the returned Profile is the most permissive and equals the +// Punycode Profile. Options can be passed to further restrict the Profile. The +// MapForLookup and ValidateForRegistration options set a collection of options, +// for lookup and registration purposes respectively, which can be tailored by +// adding more fine-grained options, where later options override earlier +// options. +func New(o ...Option) *Profile { + p := &Profile{} + apply(&p.options, o) + return p +} + +// 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". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToASCII(s string) (string, error) { + return p.process(s, true) +} + +// 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". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToUnicode(s string) (string, error) { + pp := *p + pp.transitional = false + return pp.process(s, false) +} + +// String reports a string with a description of the profile for debugging +// purposes. The string format may change with different versions. +func (p *Profile) String() string { + s := "" + if p.transitional { + s = "Transitional" + } else { + s = "NonTransitional" + } + if p.useSTD3Rules { + s += ":UseSTD3Rules" + } + if p.validateLabels { + s += ":ValidateLabels" + } + if p.verifyDNSLength { + s += ":VerifyDNSLength" + } + return s +} + +var ( + // Punycode is a Profile that does raw punycode processing with a minimum + // of validation. + Punycode *Profile = punycode + + // Lookup is the recommended profile for looking up domain names, according + // to Section 5 of RFC 5891. The exact configuration of this profile may + // change over time. + Lookup *Profile = lookup + + // Display is the recommended profile for displaying domain names. + // The configuration of this profile may change over time. + Display *Profile = display + + // Registration is the recommended profile for checking whether a given + // IDN is valid for registration, according to Section 4 of RFC 5891. + Registration *Profile = registration + + punycode = &Profile{} + lookup = &Profile{options{ + transitional: true, + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + display = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + registration = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + verifyDNSLength: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateRegistration, + bidirule: bidirule.ValidString, + }} + + // TODO: profiles + // Register: recommended for approving domain names: don't do any mappings + // but rather reject on invalid input. Bundle or block deviation characters. +) + +type labelError struct{ label, code_ string } + +func (e labelError) code() string { return e.code_ } +func (e labelError) Error() string { + return fmt.Sprintf("idna: invalid label %q", e.label) +} + +type runeError rune + +func (e runeError) code() string { return "P1" } +func (e runeError) Error() string { + return fmt.Sprintf("idna: disallowed rune %U", e) +} + +// process implements the algorithm described in section 4 of UTS #46, +// see http://www.unicode.org/reports/tr46. +func (p *Profile) process(s string, toASCII bool) (string, error) { + var err error + if p.mapping != nil { + s, err = p.mapping(p, s) + } + // Remove leading empty labels. + if p.removeLeadingDots { + for ; len(s) > 0 && s[0] == '.'; s = s[1:] { + } + } + // It seems like we should only create this error on ToASCII, but the + // UTS 46 conformance tests suggests we should always check this. + if err == nil && p.verifyDNSLength && s == "" { + err = &labelError{s, "A4"} + } + labels := labelIter{orig: s} + for ; !labels.done(); labels.next() { + label := labels.label() + if label == "" { + // Empty labels are not okay. The label iterator skips the last + // label if it is empty. + if err == nil && p.verifyDNSLength { + err = &labelError{s, "A4"} + } + continue + } + if strings.HasPrefix(label, acePrefix) { + u, err2 := decode(label[len(acePrefix):]) + if err2 != nil { + if err == nil { + err = err2 + } + // Spec says keep the old label. + continue + } + labels.set(u) + if err == nil && p.validateLabels { + err = p.fromPuny(p, u) + } + if err == nil { + // This should be called on NonTransitional, according to the + // spec, but that currently does not have any effect. Use the + // original profile to preserve options. + err = p.validateLabel(u) + } + } else if err == nil { + err = p.validateLabel(label) + } + } + if toASCII { + for labels.reset(); !labels.done(); labels.next() { + label := labels.label() + if !ascii(label) { + a, err2 := encode(acePrefix, label) + if err == nil { + err = err2 + } + label = a + labels.set(a) + } + n := len(label) + if p.verifyDNSLength && err == nil && (n == 0 || n > 63) { + err = &labelError{label, "A4"} + } + } + } + s = labels.result() + if toASCII && p.verifyDNSLength && err == nil { + // Compute the length of the domain name minus the root label and its dot. + n := len(s) + if n > 0 && s[n-1] == '.' { + n-- + } + if len(s) < 1 || n > 253 { + err = &labelError{s, "A4"} + } + } + return s, err +} + +func normalize(p *Profile, s string) (string, error) { + return norm.NFC.String(s), nil +} + +func validateRegistration(p *Profile, s string) (string, error) { + if !norm.NFC.IsNormalString(s) { + return s, &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + // TODO: handle the NV8 defined in the Unicode idna data set to allow + // for strict conformance to IDNA2008. + case valid, deviation: + case disallowed, mapped, unknown, ignored: + r, _ := utf8.DecodeRuneInString(s[i:]) + return s, runeError(r) + } + i += sz + } + return s, nil +} + +func validateAndMap(p *Profile, s string) (string, error) { + var ( + err error + b []byte + k int + ) + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + start := i + i += sz + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + case valid: + continue + case disallowed: + if err == nil { + r, _ := utf8.DecodeRuneInString(s[start:]) + err = runeError(r) + } + continue + case mapped, deviation: + b = append(b, s[k:start]...) + b = info(v).appendMapping(b, s[start:i]) + case ignored: + b = append(b, s[k:start]...) + // drop the rune + case unknown: + b = append(b, s[k:start]...) + b = append(b, "\ufffd"...) + } + k = i + } + if k == 0 { + // No changes so far. + s = norm.NFC.String(s) + } else { + b = append(b, s[k:]...) + if norm.NFC.QuickSpan(b) != len(b) { + b = norm.NFC.Bytes(b) + } + // TODO: the punycode converters require strings as input. + s = string(b) + } + return s, err +} + +// A labelIter allows iterating over domain name labels. +type labelIter struct { + orig string + slice []string + curStart int + curEnd int + i int +} + +func (l *labelIter) reset() { + l.curStart = 0 + l.curEnd = 0 + l.i = 0 +} + +func (l *labelIter) done() bool { + return l.curStart >= len(l.orig) +} + +func (l *labelIter) result() string { + if l.slice != nil { + return strings.Join(l.slice, ".") + } + return l.orig +} + +func (l *labelIter) label() string { + if l.slice != nil { + return l.slice[l.i] + } + p := strings.IndexByte(l.orig[l.curStart:], '.') + l.curEnd = l.curStart + p + if p == -1 { + l.curEnd = len(l.orig) + } + return l.orig[l.curStart:l.curEnd] +} + +// next sets the value to the next label. It skips the last label if it is empty. +func (l *labelIter) next() { + l.i++ + if l.slice != nil { + if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" { + l.curStart = len(l.orig) + } + } else { + l.curStart = l.curEnd + 1 + if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' { + l.curStart = len(l.orig) + } + } +} + +func (l *labelIter) set(s string) { + if l.slice == nil { + l.slice = strings.Split(l.orig, ".") + } + l.slice[l.i] = s +} + +// acePrefix is the ASCII Compatible Encoding prefix. +const acePrefix = "xn--" + +func (p *Profile) simplify(cat category) category { + switch cat { + case disallowedSTD3Mapped: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = mapped + } + case disallowedSTD3Valid: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = valid + } + case deviation: + if !p.transitional { + cat = valid + } + case validNV8, validXV8: + // TODO: handle V2008 + cat = valid + } + return cat +} + +func validateFromPunycode(p *Profile, s string) error { + if !norm.NFC.IsNormalString(s) { + return &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + if c := p.simplify(info(v).category()); c != valid && c != deviation { + return &labelError{s, "V6"} + } + i += sz + } + return nil +} + +const ( + zwnj = "\u200c" + zwj = "\u200d" +) + +type joinState int8 + +const ( + stateStart joinState = iota + stateVirama + stateBefore + stateBeforeVirama + stateAfter + stateFAIL +) + +var joinStates = [][numJoinTypes]joinState{ + stateStart: { + joiningL: stateBefore, + joiningD: stateBefore, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateVirama, + }, + stateVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + }, + stateBefore: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + joinZWNJ: stateAfter, + joinZWJ: stateFAIL, + joinVirama: stateBeforeVirama, + }, + stateBeforeVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + }, + stateAfter: { + joiningL: stateFAIL, + joiningD: stateBefore, + joiningT: stateAfter, + joiningR: stateStart, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateAfter, // no-op as we can't accept joiners here + }, + stateFAIL: { + 0: stateFAIL, + joiningL: stateFAIL, + joiningD: stateFAIL, + joiningT: stateFAIL, + joiningR: stateFAIL, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateFAIL, + }, +} + +// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are +// already implicitly satisfied by the overall implementation. +func (p *Profile) validateLabel(s string) error { + if s == "" { + if p.verifyDNSLength { + return &labelError{s, "A4"} + } + return nil + } + if p.bidirule != nil && !p.bidirule(s) { + return &labelError{s, "B"} + } + if !p.validateLabels { + return nil + } + trie := p.trie // p.validateLabels is only set if trie is set. + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + // TODO: merge the use of this in the trie. + v, sz := trie.lookupString(s) + x := info(v) + if x.isModifier() { + return &labelError{s, "V5"} + } + // Quickly return in the absence of zero-width (non) joiners. + if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 { + return nil + } + st := stateStart + for i := 0; ; { + jt := x.joinType() + if s[i:i+sz] == zwj { + jt = joinZWJ + } else if s[i:i+sz] == zwnj { + jt = joinZWNJ + } + st = joinStates[st][jt] + if x.isViramaModifier() { + st = joinStates[st][joinVirama] + } + if i += sz; i == len(s) { + break + } + v, sz = trie.lookupString(s[i:]) + x = info(v) + } + if st == stateFAIL || st == stateAfter { + return &labelError{s, "C"} + } + return 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/text/internal/export/idna/idna_test.go b/vendor/golang.org/x/text/internal/export/idna/idna_test.go new file mode 100644 index 0000000000..82ead035a8 --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/idna_test.go @@ -0,0 +1,299 @@ +// 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 idna + +import ( + "fmt" + "strconv" + "strings" + "testing" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/testtext" + "golang.org/x/text/internal/ucd" +) + +func TestAllocToUnicode(t *testing.T) { + avg := testtext.AllocsPerRun(1000, func() { + ToUnicode("www.golang.org") + }) + if avg > 0 { + t.Errorf("got %f; want 0", avg) + } +} + +func TestAllocToASCII(t *testing.T) { + avg := testtext.AllocsPerRun(1000, func() { + ToASCII("www.golang.org") + }) + if avg > 0 { + t.Errorf("got %f; want 0", avg) + } +} + +func TestProfiles(t *testing.T) { + testCases := []struct { + name string + want, got *Profile + }{ + {"Punycode", punycode, New()}, + {"Registration", registration, New(ValidateForRegistration())}, + {"Registration", registration, New( + ValidateForRegistration(), + VerifyDNSLength(true), + BidiRule(), + )}, + {"Lookup", lookup, New(MapForLookup(), BidiRule(), Transitional(true))}, + {"Display", display, New(MapForLookup(), BidiRule())}, + } + for _, tc := range testCases { + // Functions are not comparable, but the printed version will include + // their pointers. + got := fmt.Sprintf("%#v", tc.got) + want := fmt.Sprintf("%#v", tc.want) + if got != want { + t.Errorf("%s: \ngot %#v,\nwant %#v", tc.name, got, want) + } + } +} + +// doTest performs a single test f(input) and verifies that the output matches +// out and that the returned error is expected. The errors string contains +// all allowed error codes as categorized in +// http://www.unicode.org/Public/idna/9.0.0/IdnaTest.txt: +// P: Processing +// V: Validity +// A: to ASCII +// B: Bidi +// C: Context J +func doTest(t *testing.T, f func(string) (string, error), name, input, want, errors string) { + errors = strings.Trim(errors, "[]") + test := "ok" + if errors != "" { + test = "err:" + errors + } + // Replace some of the escape sequences to make it easier to single out + // tests on the command name. + in := strings.Trim(strconv.QuoteToASCII(input), `"`) + in = strings.Replace(in, `\u`, "#", -1) + in = strings.Replace(in, `\U`, "#", -1) + name = fmt.Sprintf("%s/%s/%s", name, in, test) + + testtext.Run(t, name, func(t *testing.T) { + got, err := f(input) + + if err != nil { + code := err.(interface { + code() string + }).code() + if strings.Index(errors, code) == -1 { + t.Errorf("error %q not in set of expected errors {%v}", code, errors) + } + } else if errors != "" { + t.Errorf("no errors; want error in {%v}", errors) + } + + if want != "" && got != want { + t.Errorf(`string: got %+q; want %+q`, got, want) + } + }) +} + +// TestLabelErrors tests strings returned in case of error. All results should +// be identical to the reference implementation and can be verified at +// http://unicode.org/cldr/utility/idna.jsp. The reference implementation, +// however, seems to not display Bidi and ContextJ errors. +// +// In some cases the behavior of browsers is added as a comment. In all cases, +// whenever a resolve search returns an error here, Chrome will treat the input +// string as a search string (including those for Bidi and Context J errors), +// unless noted otherwise. +func TestLabelErrors(t *testing.T) { + encode := func(s string) string { s, _ = encode(acePrefix, s); return s } + type kind struct { + name string + f func(string) (string, error) + } + punyA := kind{"PunycodeA", punycode.ToASCII} + resolve := kind{"ResolveA", Lookup.ToASCII} + display := kind{"ToUnicode", Display.ToUnicode} + p := New(VerifyDNSLength(true), MapForLookup(), BidiRule()) + lengthU := kind{"CheckLengthU", p.ToUnicode} + lengthA := kind{"CheckLengthA", p.ToASCII} + p = New(MapForLookup(), StrictDomainName(false)) + std3 := kind{"STD3", p.ToASCII} + + testCases := []struct { + kind + input string + want string + wantErr string + }{ + {lengthU, "", "", "A4"}, // From UTS 46 conformance test. + {lengthA, "", "", "A4"}, + + {lengthU, "xn--", "", "A4"}, + {lengthU, "foo.xn--", "foo.", "A4"}, // TODO: is dropping xn-- correct? + {lengthU, "xn--.foo", ".foo", "A4"}, + {lengthU, "foo.xn--.bar", "foo..bar", "A4"}, + + {display, "xn--", "", ""}, + {display, "foo.xn--", "foo.", ""}, // TODO: is dropping xn-- correct? + {display, "xn--.foo", ".foo", ""}, + {display, "foo.xn--.bar", "foo..bar", ""}, + + {lengthA, "a..b", "a..b", "A4"}, + {punyA, ".b", ".b", ""}, + // For backwards compatibility, the Punycode profile does not map runes. + {punyA, "\u3002b", "xn--b-83t", ""}, + {punyA, "..b", "..b", ""}, + // Only strip leading empty labels for certain profiles. Stripping + // leading empty labels here but not for "empty" punycode above seems + // inconsistent, but seems to be applied by both the conformance test + // and Chrome. So we turn it off by default, support it as an option, + // and enable it in profiles where it seems commonplace. + {lengthA, ".b", "b", ""}, + {lengthA, "\u3002b", "b", ""}, + {lengthA, "..b", "b", ""}, + {lengthA, "b..", "b..", ""}, + + {resolve, "a..b", "a..b", ""}, + {resolve, ".b", "b", ""}, + {resolve, "\u3002b", "b", ""}, + {resolve, "..b", "b", ""}, + {resolve, "b..", "b..", ""}, + + // Raw punycode + {punyA, "", "", ""}, + {punyA, "*.foo.com", "*.foo.com", ""}, + {punyA, "Foo.com", "Foo.com", ""}, + + // STD3 rules + {display, "*.foo.com", "*.foo.com", "P1"}, + {std3, "*.foo.com", "*.foo.com", ""}, + + // Don't map U+2490 (DIGIT NINE FULL STOP). This is the behavior of + // Chrome, Safari, and IE. Firefox will first map ⒐ to 9. and return + // lab9.be. + {resolve, "lab⒐be", "xn--labbe-zh9b", "P1"}, // encode("lab⒐be") + {display, "lab⒐be", "lab⒐be", "P1"}, + + {resolve, "plan⒐faß.de", "xn--planfass-c31e.de", "P1"}, // encode("plan⒐fass") + ".de" + {display, "Plan⒐faß.de", "plan⒐faß.de", "P1"}, + + // Chrome 54.0 recognizes the error and treats this input verbatim as a + // search string. + // Safari 10.0 (non-conform spec) decomposes "⒈" and computes the + // punycode on the result using transitional mapping. + // Firefox 49.0.1 goes haywire on this string and prints a bunch of what + // seems to be nested punycode encodings. + {resolve, "日本⒈co.ßßß.de", "xn--co-wuw5954azlb.ssssss.de", "P1"}, + {display, "日本⒈co.ßßß.de", "日本⒈co.ßßß.de", "P1"}, + + {resolve, "a\u200Cb", "ab", ""}, + {display, "a\u200Cb", "a\u200Cb", "C"}, + + {resolve, encode("a\u200Cb"), encode("a\u200Cb"), "C"}, + {display, "a\u200Cb", "a\u200Cb", "C"}, + + {resolve, "grﻋﺮﺑﻲ.de", "xn--gr-gtd9a1b0g.de", "B"}, + { + // Notice how the string gets transformed, even with an error. + // Chrome will use the original string if it finds an error, so not + // the transformed one. + display, + "gr\ufecb\ufeae\ufe91\ufef2.de", + "gr\u0639\u0631\u0628\u064a.de", + "B", + }, + + {resolve, "\u0671.\u03c3\u07dc", "xn--qib.xn--4xa21s", "B"}, // ٱ.σߜ + {display, "\u0671.\u03c3\u07dc", "\u0671.\u03c3\u07dc", "B"}, + + // normalize input + {resolve, "a\u0323\u0322", "xn--jta191l", ""}, // ạ̢ + {display, "a\u0323\u0322", "\u1ea1\u0322", ""}, + + // Non-normalized strings are not normalized when they originate from + // punycode. Despite the error, Chrome, Safari and Firefox will attempt + // to look up the input punycode. + {resolve, encode("a\u0323\u0322") + ".com", "xn--a-tdbc.com", "V1"}, + {display, encode("a\u0323\u0322") + ".com", "a\u0323\u0322.com", "V1"}, + } + + for _, tc := range testCases { + doTest(t, tc.f, tc.name, tc.input, tc.want, tc.wantErr) + } +} + +func TestConformance(t *testing.T) { + testtext.SkipIfNotLong(t) + + r := gen.OpenUnicodeFile("idna", "", "IdnaTest.txt") + defer r.Close() + + section := "main" + started := false + p := ucd.New(r, ucd.CommentHandler(func(s string) { + if started { + section = strings.ToLower(strings.Split(s, " ")[0]) + } + })) + transitional := New(Transitional(true), VerifyDNSLength(true), BidiRule(), MapForLookup()) + nonTransitional := New(VerifyDNSLength(true), BidiRule(), MapForLookup()) + for p.Next() { + started = true + + // What to test + profiles := []*Profile{} + switch p.String(0) { + case "T": + profiles = append(profiles, transitional) + case "N": + profiles = append(profiles, nonTransitional) + case "B": + profiles = append(profiles, transitional) + profiles = append(profiles, nonTransitional) + } + + src := unescape(p.String(1)) + + wantToUnicode := unescape(p.String(2)) + if wantToUnicode == "" { + wantToUnicode = src + } + wantToASCII := unescape(p.String(3)) + if wantToASCII == "" { + wantToASCII = wantToUnicode + } + wantErrToUnicode := "" + if strings.HasPrefix(wantToUnicode, "[") { + wantErrToUnicode = wantToUnicode + wantToUnicode = "" + } + wantErrToASCII := "" + if strings.HasPrefix(wantToASCII, "[") { + wantErrToASCII = wantToASCII + wantToASCII = "" + } + + // TODO: also do IDNA tests. + // invalidInIDNA2008 := p.String(4) == "NV8" + + for _, p := range profiles { + name := fmt.Sprintf("%s:%s", section, p) + doTest(t, p.ToUnicode, name+":ToUnicode", src, wantToUnicode, wantErrToUnicode) + doTest(t, p.ToASCII, name+":ToASCII", src, wantToASCII, wantErrToASCII) + } + } +} + +func unescape(s string) string { + s, err := strconv.Unquote(`"` + s + `"`) + if err != nil { + panic(err) + } + return s +} diff --git a/vendor/golang.org/x/text/internal/export/idna/punycode.go b/vendor/golang.org/x/text/internal/export/idna/punycode.go new file mode 100644 index 0000000000..f0cbd487bc --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/punycode.go @@ -0,0 +1,201 @@ +// 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 idna + +// This file implements the Punycode algorithm from RFC 3492. + +import ( + "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 +) + +func punyError(s string) error { return &labelError{s, "A3"} } + +// 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 "", punyError(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 "", punyError(encoded) + } + digit, ok := decodeDigit(encoded[pos]) + if !ok { + return "", punyError(encoded) + } + pos++ + i += digit * w + if i < 0 { + return "", punyError(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 "", punyError(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 "", punyError(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 "", punyError(s) + } + n = m + for _, r := range s { + if r < n { + delta++ + if delta < 0 { + return "", punyError(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/text/internal/export/idna/punycode_test.go b/vendor/golang.org/x/text/internal/export/idna/punycode_test.go new file mode 100644 index 0000000000..2d99239ecb --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/punycode_test.go @@ -0,0 +1,198 @@ +// 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 idna + +import ( + "strings" + "testing" +) + +var punycodeTestCases = [...]struct { + s, encoded string +}{ + {"", ""}, + {"-", "--"}, + {"-a", "-a-"}, + {"-a-", "-a--"}, + {"a", "a-"}, + {"a-", "a--"}, + {"a-b", "a-b-"}, + {"books", "books-"}, + {"bücher", "bcher-kva"}, + {"Hello世界", "Hello-ck1hg65u"}, + {"ü", "tda"}, + {"üý", "tdac"}, + + // The test cases below come from RFC 3492 section 7.1 with Errata 3026. + { + // (A) Arabic (Egyptian). + "\u0644\u064A\u0647\u0645\u0627\u0628\u062A\u0643\u0644" + + "\u0645\u0648\u0634\u0639\u0631\u0628\u064A\u061F", + "egbpdaj6bu4bxfgehfvwxn", + }, + { + // (B) Chinese (simplified). + "\u4ED6\u4EEC\u4E3A\u4EC0\u4E48\u4E0D\u8BF4\u4E2D\u6587", + "ihqwcrb4cv8a8dqg056pqjye", + }, + { + // (C) Chinese (traditional). + "\u4ED6\u5011\u7232\u4EC0\u9EBD\u4E0D\u8AAA\u4E2D\u6587", + "ihqwctvzc91f659drss3x8bo0yb", + }, + { + // (D) Czech. + "\u0050\u0072\u006F\u010D\u0070\u0072\u006F\u0073\u0074" + + "\u011B\u006E\u0065\u006D\u006C\u0075\u0076\u00ED\u010D" + + "\u0065\u0073\u006B\u0079", + "Proprostnemluvesky-uyb24dma41a", + }, + { + // (E) Hebrew. + "\u05DC\u05DE\u05D4\u05D4\u05DD\u05E4\u05E9\u05D5\u05D8" + + "\u05DC\u05D0\u05DE\u05D3\u05D1\u05E8\u05D9\u05DD\u05E2" + + "\u05D1\u05E8\u05D9\u05EA", + "4dbcagdahymbxekheh6e0a7fei0b", + }, + { + // (F) Hindi (Devanagari). + "\u092F\u0939\u0932\u094B\u0917\u0939\u093F\u0928\u094D" + + "\u0926\u0940\u0915\u094D\u092F\u094B\u0902\u0928\u0939" + + "\u0940\u0902\u092C\u094B\u0932\u0938\u0915\u0924\u0947" + + "\u0939\u0948\u0902", + "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", + }, + { + // (G) Japanese (kanji and hiragana). + "\u306A\u305C\u307F\u3093\u306A\u65E5\u672C\u8A9E\u3092" + + "\u8A71\u3057\u3066\u304F\u308C\u306A\u3044\u306E\u304B", + "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", + }, + { + // (H) Korean (Hangul syllables). + "\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774" + + "\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74" + + "\uC5BC\uB9C8\uB098\uC88B\uC744\uAE4C", + "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j" + + "psd879ccm6fea98c", + }, + { + // (I) Russian (Cyrillic). + "\u043F\u043E\u0447\u0435\u043C\u0443\u0436\u0435\u043E" + + "\u043D\u0438\u043D\u0435\u0433\u043E\u0432\u043E\u0440" + + "\u044F\u0442\u043F\u043E\u0440\u0443\u0441\u0441\u043A" + + "\u0438", + "b1abfaaepdrnnbgefbadotcwatmq2g4l", + }, + { + // (J) Spanish. + "\u0050\u006F\u0072\u0071\u0075\u00E9\u006E\u006F\u0070" + + "\u0075\u0065\u0064\u0065\u006E\u0073\u0069\u006D\u0070" + + "\u006C\u0065\u006D\u0065\u006E\u0074\u0065\u0068\u0061" + + "\u0062\u006C\u0061\u0072\u0065\u006E\u0045\u0073\u0070" + + "\u0061\u00F1\u006F\u006C", + "PorqunopuedensimplementehablarenEspaol-fmd56a", + }, + { + // (K) Vietnamese. + "\u0054\u1EA1\u0069\u0073\u0061\u006F\u0068\u1ECD\u006B" + + "\u0068\u00F4\u006E\u0067\u0074\u0068\u1EC3\u0063\u0068" + + "\u1EC9\u006E\u00F3\u0069\u0074\u0069\u1EBF\u006E\u0067" + + "\u0056\u0069\u1EC7\u0074", + "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", + }, + { + // (L) 3B. + "\u0033\u5E74\u0042\u7D44\u91D1\u516B\u5148\u751F", + "3B-ww4c5e180e575a65lsy2b", + }, + { + // (M) -with-SUPER-MONKEYS. + "\u5B89\u5BA4\u5948\u7F8E\u6075\u002D\u0077\u0069\u0074" + + "\u0068\u002D\u0053\u0055\u0050\u0045\u0052\u002D\u004D" + + "\u004F\u004E\u004B\u0045\u0059\u0053", + "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", + }, + { + // (N) Hello-Another-Way-. + "\u0048\u0065\u006C\u006C\u006F\u002D\u0041\u006E\u006F" + + "\u0074\u0068\u0065\u0072\u002D\u0057\u0061\u0079\u002D" + + "\u305D\u308C\u305E\u308C\u306E\u5834\u6240", + "Hello-Another-Way--fc4qua05auwb3674vfr0b", + }, + { + // (O) 2. + "\u3072\u3068\u3064\u5C4B\u6839\u306E\u4E0B\u0032", + "2-u9tlzr9756bt3uc0v", + }, + { + // (P) MajiKoi5 + "\u004D\u0061\u006A\u0069\u3067\u004B\u006F\u0069\u3059" + + "\u308B\u0035\u79D2\u524D", + "MajiKoi5-783gue6qz075azm5e", + }, + { + // (Q) de + "\u30D1\u30D5\u30A3\u30FC\u0064\u0065\u30EB\u30F3\u30D0", + "de-jg4avhby1noc0d", + }, + { + // (R) + "\u305D\u306E\u30B9\u30D4\u30FC\u30C9\u3067", + "d9juau41awczczp", + }, + { + // (S) -> $1.00 <- + "\u002D\u003E\u0020\u0024\u0031\u002E\u0030\u0030\u0020" + + "\u003C\u002D", + "-> $1.00 <--", + }, +} + +func TestPunycode(t *testing.T) { + for _, tc := range punycodeTestCases { + if got, err := decode(tc.encoded); err != nil { + t.Errorf("decode(%q): %v", tc.encoded, err) + } else if got != tc.s { + t.Errorf("decode(%q): got %q, want %q", tc.encoded, got, tc.s) + } + + if got, err := encode("", tc.s); err != nil { + t.Errorf(`encode("", %q): %v`, tc.s, err) + } else if got != tc.encoded { + t.Errorf(`encode("", %q): got %q, want %q`, tc.s, got, tc.encoded) + } + } +} + +var punycodeErrorTestCases = [...]string{ + "decode -", // A sole '-' is invalid. + "decode foo\x00bar", // '\x00' is not in [0-9A-Za-z]. + "decode foo#bar", // '#' is not in [0-9A-Za-z]. + "decode foo\u00A3bar", // '\u00A3' is not in [0-9A-Za-z]. + "decode 9", // "9a" decodes to codepoint \u00A3; "9" is truncated. + "decode 99999a", // "99999a" decodes to codepoint \U0048A3C1, which is > \U0010FFFF. + "decode 9999999999a", // "9999999999a" overflows the int32 calculation. + + "encode " + strings.Repeat("x", 65536) + "\uff00", // int32 overflow. +} + +func TestPunycodeErrors(t *testing.T) { + for _, tc := range punycodeErrorTestCases { + var err error + switch { + case strings.HasPrefix(tc, "decode "): + _, err = decode(tc[7:]) + case strings.HasPrefix(tc, "encode "): + _, err = encode("", tc[7:]) + } + if err == nil { + if len(tc) > 256 { + tc = tc[:100] + "..." + tc[len(tc)-100:] + } + t.Errorf("no error for %s", tc) + } + } +} diff --git a/vendor/golang.org/x/text/internal/export/idna/tables.go b/vendor/golang.org/x/text/internal/export/idna/tables.go new file mode 100644 index 0000000000..d2819345fc --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/tables.go @@ -0,0 +1,4477 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package idna + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +var mappings string = "" + // Size: 8176 bytes + "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + + "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + + "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + + "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + + "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + + "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + + "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + + "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + + "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + + "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + + "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + + "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + + "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + + "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + + "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + + "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + + "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + + "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + + "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + + "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + + "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + + "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + + "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + + "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + + ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + + "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + + "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + + "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + + "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + + "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + + "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + + "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + + "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + + "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + + "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + + "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + + "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + + "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + + "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + + "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + + "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + + "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + + "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + + "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + + "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + + "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + + "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + + "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + + "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + + "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + + "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + + "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + + "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + + "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + + "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + + "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + + "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + + "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + + "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + + "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + + "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + + "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + + "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + + "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + + "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + + "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + + "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + + "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + + "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + + "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + + "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + + " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + + "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + + "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + + "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + + "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + + "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + + "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + + "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + + "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + + "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + + "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + + "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + + "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + + "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + + "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + + "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + + "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + + "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + + "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + + "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + + "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + + "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + + "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + + "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + + "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + + "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + + "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + + "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + + "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + + "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + + "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + + "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + + "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + + "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + + "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + + "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + + "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + + "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + + "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + + "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + + "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + + "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + + "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + + "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + + "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + + "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + + "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + + "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + + "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + + "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + + "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + + "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + + "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + + "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + + "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + + "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + + "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + + "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + + "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + + "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + + "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + + "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + + "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + + "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" + +var xorData string = "" + // Size: 4855 bytes + "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + + "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + + "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + + "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + + "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + + "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + + "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + + "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + + "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + + "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + + "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + + "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + + "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + + "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + + "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + + "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + + "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + + "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + + "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + + "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + + "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + + "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + + "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + + "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + + "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + + "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + + "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + + "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + + "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + + "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + + "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + + "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + + "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + + "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + + "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + + "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + + "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + + "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + + "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + + "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + + "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + + "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + + ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + + "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + + "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + + "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + + "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + + "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + + "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + + "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + + "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + + "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + + "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + + "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + + "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + + "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + + "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + + "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + + "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + + "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + + "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + + "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + + "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + + "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + + "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + + "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + + "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + + "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + + "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + + "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + + "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + + "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + + "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + + "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + + "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + + "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + + "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + + "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + + "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + + "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + + "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + + "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + + "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + + "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + + "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + + "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + + "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + + "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + + "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + + "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + + "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + + "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + + "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + + ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + + "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + + "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + + "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + + "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + + "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + + "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + + "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + + "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + + "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + + "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + + "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + + "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + + "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + + "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + + "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + + "\x08\x1a\x0a\x03\x07\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + + "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + + "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + + "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + + "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + + "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + + "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + + "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + + "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + + "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + + "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + + "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + + "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + + "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + + "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + + "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + + "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + + "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + + "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + + "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + + "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + + "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + + "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + + "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + + "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + + "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + + "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + + "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + + "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + + "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + + "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + + "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + + "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + + "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + + "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + + "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + + "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + + "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + + "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + + "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + + "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + + "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + + "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + + "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + + "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + + "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + + "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + + "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + + "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + + "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + + "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + + "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + + "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + + "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + + "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + + "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + + "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + + "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + + "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + + "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + + "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + + "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + + "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + + "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + + "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + + "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + + "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + + "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + + "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + + "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + + "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + + "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + + "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + + "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + + "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + + "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + + "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + + "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + + "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + + "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + + "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + + "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + + "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + + "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + + "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + + "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + + "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + + "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + + "\x04\x03\x0c?\x05\x03\x0c" + + "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + + "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + + "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + + "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + + "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + + "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + + "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + + "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + + "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + + "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + + "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + + "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + + "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + + "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + + "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + + "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + + "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + + "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + + "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + + "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + + "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + + "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + + "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + + "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + + "\x05\x22\x05\x03\x050\x1d" + +// 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 *idnaTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[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 := idnaIndex[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 := idnaIndex[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 = idnaIndex[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 := idnaIndex[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 = idnaIndex[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 = idnaIndex[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 *idnaTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[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 *idnaTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[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 := idnaIndex[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 := idnaIndex[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 = idnaIndex[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 := idnaIndex[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 = idnaIndex[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 = idnaIndex[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 *idnaTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// idnaTrie. Total size: 28496 bytes (27.83 KiB). Checksum: 43288b883596640e. +type idnaTrie struct{} + +func newIdnaTrie(i int) *idnaTrie { + return &idnaTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 123: + return uint16(idnaValues[n<<6+uint32(b)]) + default: + n -= 123 + return uint16(idnaSparse.lookup(n, b)) + } +} + +// idnaValues: 125 blocks, 8000 entries, 16000 bytes +// The third block is the zero block. +var idnaValues = [8000]uint16{ + // Block 0x0, offset 0x0 + 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, + 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, + 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, + 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, + 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, + 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, + 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, + 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, + 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, + 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, + 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, + // Block 0x1, offset 0x40 + 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, + 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, + 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, + 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, + 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, + 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, + 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, + 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, + 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, + 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, + 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, + // 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: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, + 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, + 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, + 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, + 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, + 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, + // Block 0x4, offset 0x100 + 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, + 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, + 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, + 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, + 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, + 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, + 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, + 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, + 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, + 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, + 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, + // Block 0x5, offset 0x140 + 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, + 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, + 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, + 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, + 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, + 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, + 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, + 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, + 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, + 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, + 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, + // Block 0x6, offset 0x180 + 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, + 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, + 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, + 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, + 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, + 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, + 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, + 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, + 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, + 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, + 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, + 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, + 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, + 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, + 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, + 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, + 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, + 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, + 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, + 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, + 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, + // Block 0x8, offset 0x200 + 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, + 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, + 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, + 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, + 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, + 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, + 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, + 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, + 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, + 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, + 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, + // Block 0x9, offset 0x240 + 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, + 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, + 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, + 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, + 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, + 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, + 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, + 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, + 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, + 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, + 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, + // Block 0xa, offset 0x280 + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x1308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x1308, 0x287: 0x1308, 0x288: 0x1308, 0x289: 0x1308, 0x28a: 0x1308, 0x28b: 0x1308, + 0x28c: 0x1308, 0x28d: 0x1308, 0x28e: 0x1308, 0x28f: 0x13c0, 0x290: 0x1308, 0x291: 0x1308, + 0x292: 0x1308, 0x293: 0x1308, 0x294: 0x1308, 0x295: 0x1308, 0x296: 0x1308, 0x297: 0x1308, + 0x298: 0x1308, 0x299: 0x1308, 0x29a: 0x1308, 0x29b: 0x1308, 0x29c: 0x1308, 0x29d: 0x1308, + 0x29e: 0x1308, 0x29f: 0x1308, 0x2a0: 0x1308, 0x2a1: 0x1308, 0x2a2: 0x1308, 0x2a3: 0x1308, + 0x2a4: 0x1308, 0x2a5: 0x1308, 0x2a6: 0x1308, 0x2a7: 0x1308, 0x2a8: 0x1308, 0x2a9: 0x1308, + 0x2aa: 0x1308, 0x2ab: 0x1308, 0x2ac: 0x1308, 0x2ad: 0x1308, 0x2ae: 0x1308, 0x2af: 0x1308, + 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, + 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, + 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, + 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, + 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, + 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, + 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, + 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, + 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, + 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, + 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, + 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, + 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, + // Block 0xc, offset 0x300 + 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, + 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, + 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, + 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, + 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, + 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, + 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, + 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, + 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, + 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, + 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, + // Block 0xd, offset 0x340 + 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, + 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, + 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, + 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, + 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, + 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, + 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, + 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, + 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, + 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, + 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, + // Block 0xe, offset 0x380 + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x1308, 0x384: 0x1308, 0x385: 0x1308, + 0x386: 0x1308, 0x387: 0x1308, 0x388: 0x1318, 0x389: 0x1318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, + 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, + 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, + 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, + 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, + 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, + 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, + 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, + 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, + 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, + 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, + 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, + 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, + 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, + 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, + 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, + 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, + 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, + 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, + // Block 0x10, offset 0x400 + 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, + 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, + 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, + 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, + 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, + 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, + 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, + 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, + 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, + 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, + 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, + // Block 0x11, offset 0x440 + 0x440: 0x0040, 0x441: 0x0040, 0x442: 0x0040, 0x443: 0x0040, 0x444: 0x0040, 0x445: 0x0040, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0018, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0018, + 0x44c: 0x0018, 0x44d: 0x0018, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x1308, 0x451: 0x1308, + 0x452: 0x1308, 0x453: 0x1308, 0x454: 0x1308, 0x455: 0x1308, 0x456: 0x1308, 0x457: 0x1308, + 0x458: 0x1308, 0x459: 0x1308, 0x45a: 0x1308, 0x45b: 0x0018, 0x45c: 0x0340, 0x45d: 0x0040, + 0x45e: 0x0018, 0x45f: 0x0018, 0x460: 0x0208, 0x461: 0x0008, 0x462: 0x0408, 0x463: 0x0408, + 0x464: 0x0408, 0x465: 0x0408, 0x466: 0x0208, 0x467: 0x0408, 0x468: 0x0208, 0x469: 0x0408, + 0x46a: 0x0208, 0x46b: 0x0208, 0x46c: 0x0208, 0x46d: 0x0208, 0x46e: 0x0208, 0x46f: 0x0408, + 0x470: 0x0408, 0x471: 0x0408, 0x472: 0x0408, 0x473: 0x0208, 0x474: 0x0208, 0x475: 0x0208, + 0x476: 0x0208, 0x477: 0x0208, 0x478: 0x0208, 0x479: 0x0208, 0x47a: 0x0208, 0x47b: 0x0208, + 0x47c: 0x0208, 0x47d: 0x0208, 0x47e: 0x0208, 0x47f: 0x0208, + // Block 0x12, offset 0x480 + 0x480: 0x0408, 0x481: 0x0208, 0x482: 0x0208, 0x483: 0x0408, 0x484: 0x0408, 0x485: 0x0408, + 0x486: 0x0408, 0x487: 0x0408, 0x488: 0x0408, 0x489: 0x0408, 0x48a: 0x0408, 0x48b: 0x0408, + 0x48c: 0x0208, 0x48d: 0x0408, 0x48e: 0x0208, 0x48f: 0x0408, 0x490: 0x0208, 0x491: 0x0208, + 0x492: 0x0408, 0x493: 0x0408, 0x494: 0x0018, 0x495: 0x0408, 0x496: 0x1308, 0x497: 0x1308, + 0x498: 0x1308, 0x499: 0x1308, 0x49a: 0x1308, 0x49b: 0x1308, 0x49c: 0x1308, 0x49d: 0x0040, + 0x49e: 0x0018, 0x49f: 0x1308, 0x4a0: 0x1308, 0x4a1: 0x1308, 0x4a2: 0x1308, 0x4a3: 0x1308, + 0x4a4: 0x1308, 0x4a5: 0x0008, 0x4a6: 0x0008, 0x4a7: 0x1308, 0x4a8: 0x1308, 0x4a9: 0x0018, + 0x4aa: 0x1308, 0x4ab: 0x1308, 0x4ac: 0x1308, 0x4ad: 0x1308, 0x4ae: 0x0408, 0x4af: 0x0408, + 0x4b0: 0x0008, 0x4b1: 0x0008, 0x4b2: 0x0008, 0x4b3: 0x0008, 0x4b4: 0x0008, 0x4b5: 0x0008, + 0x4b6: 0x0008, 0x4b7: 0x0008, 0x4b8: 0x0008, 0x4b9: 0x0008, 0x4ba: 0x0208, 0x4bb: 0x0208, + 0x4bc: 0x0208, 0x4bd: 0x0008, 0x4be: 0x0008, 0x4bf: 0x0208, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0018, 0x4c1: 0x0018, 0x4c2: 0x0018, 0x4c3: 0x0018, 0x4c4: 0x0018, 0x4c5: 0x0018, + 0x4c6: 0x0018, 0x4c7: 0x0018, 0x4c8: 0x0018, 0x4c9: 0x0018, 0x4ca: 0x0018, 0x4cb: 0x0018, + 0x4cc: 0x0018, 0x4cd: 0x0018, 0x4ce: 0x0040, 0x4cf: 0x0340, 0x4d0: 0x0408, 0x4d1: 0x1308, + 0x4d2: 0x0208, 0x4d3: 0x0208, 0x4d4: 0x0208, 0x4d5: 0x0408, 0x4d6: 0x0408, 0x4d7: 0x0408, + 0x4d8: 0x0408, 0x4d9: 0x0408, 0x4da: 0x0208, 0x4db: 0x0208, 0x4dc: 0x0208, 0x4dd: 0x0208, + 0x4de: 0x0408, 0x4df: 0x0208, 0x4e0: 0x0208, 0x4e1: 0x0208, 0x4e2: 0x0208, 0x4e3: 0x0208, + 0x4e4: 0x0208, 0x4e5: 0x0208, 0x4e6: 0x0208, 0x4e7: 0x0208, 0x4e8: 0x0408, 0x4e9: 0x0208, + 0x4ea: 0x0408, 0x4eb: 0x0208, 0x4ec: 0x0408, 0x4ed: 0x0208, 0x4ee: 0x0208, 0x4ef: 0x0408, + 0x4f0: 0x1308, 0x4f1: 0x1308, 0x4f2: 0x1308, 0x4f3: 0x1308, 0x4f4: 0x1308, 0x4f5: 0x1308, + 0x4f6: 0x1308, 0x4f7: 0x1308, 0x4f8: 0x1308, 0x4f9: 0x1308, 0x4fa: 0x1308, 0x4fb: 0x1308, + 0x4fc: 0x1308, 0x4fd: 0x1308, 0x4fe: 0x1308, 0x4ff: 0x1308, + // Block 0x14, offset 0x500 + 0x500: 0x1008, 0x501: 0x1308, 0x502: 0x1308, 0x503: 0x1308, 0x504: 0x1308, 0x505: 0x1308, + 0x506: 0x1308, 0x507: 0x1308, 0x508: 0x1308, 0x509: 0x1008, 0x50a: 0x1008, 0x50b: 0x1008, + 0x50c: 0x1008, 0x50d: 0x1b08, 0x50e: 0x1008, 0x50f: 0x1008, 0x510: 0x0008, 0x511: 0x1308, + 0x512: 0x1308, 0x513: 0x1308, 0x514: 0x1308, 0x515: 0x1308, 0x516: 0x1308, 0x517: 0x1308, + 0x518: 0x04c9, 0x519: 0x0501, 0x51a: 0x0539, 0x51b: 0x0571, 0x51c: 0x05a9, 0x51d: 0x05e1, + 0x51e: 0x0619, 0x51f: 0x0651, 0x520: 0x0008, 0x521: 0x0008, 0x522: 0x1308, 0x523: 0x1308, + 0x524: 0x0018, 0x525: 0x0018, 0x526: 0x0008, 0x527: 0x0008, 0x528: 0x0008, 0x529: 0x0008, + 0x52a: 0x0008, 0x52b: 0x0008, 0x52c: 0x0008, 0x52d: 0x0008, 0x52e: 0x0008, 0x52f: 0x0008, + 0x530: 0x0018, 0x531: 0x0008, 0x532: 0x0008, 0x533: 0x0008, 0x534: 0x0008, 0x535: 0x0008, + 0x536: 0x0008, 0x537: 0x0008, 0x538: 0x0008, 0x539: 0x0008, 0x53a: 0x0008, 0x53b: 0x0008, + 0x53c: 0x0008, 0x53d: 0x0008, 0x53e: 0x0008, 0x53f: 0x0008, + // Block 0x15, offset 0x540 + 0x540: 0x0008, 0x541: 0x1308, 0x542: 0x1008, 0x543: 0x1008, 0x544: 0x0040, 0x545: 0x0008, + 0x546: 0x0008, 0x547: 0x0008, 0x548: 0x0008, 0x549: 0x0008, 0x54a: 0x0008, 0x54b: 0x0008, + 0x54c: 0x0008, 0x54d: 0x0040, 0x54e: 0x0040, 0x54f: 0x0008, 0x550: 0x0008, 0x551: 0x0040, + 0x552: 0x0040, 0x553: 0x0008, 0x554: 0x0008, 0x555: 0x0008, 0x556: 0x0008, 0x557: 0x0008, + 0x558: 0x0008, 0x559: 0x0008, 0x55a: 0x0008, 0x55b: 0x0008, 0x55c: 0x0008, 0x55d: 0x0008, + 0x55e: 0x0008, 0x55f: 0x0008, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x0008, 0x563: 0x0008, + 0x564: 0x0008, 0x565: 0x0008, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0040, + 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, + 0x570: 0x0008, 0x571: 0x0040, 0x572: 0x0008, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, + 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0040, 0x57b: 0x0040, + 0x57c: 0x1308, 0x57d: 0x0008, 0x57e: 0x1008, 0x57f: 0x1008, + // Block 0x16, offset 0x580 + 0x580: 0x1008, 0x581: 0x1308, 0x582: 0x1308, 0x583: 0x1308, 0x584: 0x1308, 0x585: 0x0040, + 0x586: 0x0040, 0x587: 0x1008, 0x588: 0x1008, 0x589: 0x0040, 0x58a: 0x0040, 0x58b: 0x1008, + 0x58c: 0x1008, 0x58d: 0x1b08, 0x58e: 0x0008, 0x58f: 0x0040, 0x590: 0x0040, 0x591: 0x0040, + 0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x1008, + 0x598: 0x0040, 0x599: 0x0040, 0x59a: 0x0040, 0x59b: 0x0040, 0x59c: 0x0689, 0x59d: 0x06c1, + 0x59e: 0x0040, 0x59f: 0x06f9, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x1308, 0x5a3: 0x1308, + 0x5a4: 0x0040, 0x5a5: 0x0040, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, + 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, + 0x5b0: 0x0008, 0x5b1: 0x0008, 0x5b2: 0x0018, 0x5b3: 0x0018, 0x5b4: 0x0018, 0x5b5: 0x0018, + 0x5b6: 0x0018, 0x5b7: 0x0018, 0x5b8: 0x0018, 0x5b9: 0x0018, 0x5ba: 0x0018, 0x5bb: 0x0018, + 0x5bc: 0x0040, 0x5bd: 0x0040, 0x5be: 0x0040, 0x5bf: 0x0040, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0040, 0x5c1: 0x1308, 0x5c2: 0x1308, 0x5c3: 0x1008, 0x5c4: 0x0040, 0x5c5: 0x0008, + 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0040, + 0x5cc: 0x0040, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, + 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, + 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, + 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, + 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, + 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, + 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0731, 0x5f4: 0x0040, 0x5f5: 0x0008, + 0x5f6: 0x0769, 0x5f7: 0x0040, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, + 0x5fc: 0x1308, 0x5fd: 0x0040, 0x5fe: 0x1008, 0x5ff: 0x1008, + // Block 0x18, offset 0x600 + 0x600: 0x1008, 0x601: 0x1308, 0x602: 0x1308, 0x603: 0x0040, 0x604: 0x0040, 0x605: 0x0040, + 0x606: 0x0040, 0x607: 0x1308, 0x608: 0x1308, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x1308, + 0x60c: 0x1308, 0x60d: 0x1b08, 0x60e: 0x0040, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x1308, + 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x0040, + 0x618: 0x0040, 0x619: 0x07a1, 0x61a: 0x07d9, 0x61b: 0x0811, 0x61c: 0x0008, 0x61d: 0x0040, + 0x61e: 0x0849, 0x61f: 0x0040, 0x620: 0x0040, 0x621: 0x0040, 0x622: 0x0040, 0x623: 0x0040, + 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, + 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, + 0x630: 0x1308, 0x631: 0x1308, 0x632: 0x0008, 0x633: 0x0008, 0x634: 0x0008, 0x635: 0x1308, + 0x636: 0x0040, 0x637: 0x0040, 0x638: 0x0040, 0x639: 0x0040, 0x63a: 0x0040, 0x63b: 0x0040, + 0x63c: 0x0040, 0x63d: 0x0040, 0x63e: 0x0040, 0x63f: 0x0040, + // Block 0x19, offset 0x640 + 0x640: 0x0040, 0x641: 0x1308, 0x642: 0x1308, 0x643: 0x1008, 0x644: 0x0040, 0x645: 0x0008, + 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0008, + 0x64c: 0x0008, 0x64d: 0x0008, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0008, + 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, + 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, + 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, + 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, + 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, + 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0040, 0x675: 0x0008, + 0x676: 0x0008, 0x677: 0x0008, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x1308, 0x67d: 0x0008, 0x67e: 0x1008, 0x67f: 0x1008, + // Block 0x1a, offset 0x680 + 0x680: 0x1008, 0x681: 0x1308, 0x682: 0x1308, 0x683: 0x1308, 0x684: 0x1308, 0x685: 0x1308, + 0x686: 0x0040, 0x687: 0x1308, 0x688: 0x1308, 0x689: 0x1008, 0x68a: 0x0040, 0x68b: 0x1008, + 0x68c: 0x1008, 0x68d: 0x1b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0008, 0x691: 0x0040, + 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, + 0x698: 0x0040, 0x699: 0x0040, 0x69a: 0x0040, 0x69b: 0x0040, 0x69c: 0x0040, 0x69d: 0x0040, + 0x69e: 0x0040, 0x69f: 0x0040, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x1308, 0x6a3: 0x1308, + 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, + 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, + 0x6b0: 0x0018, 0x6b1: 0x0018, 0x6b2: 0x0040, 0x6b3: 0x0040, 0x6b4: 0x0040, 0x6b5: 0x0040, + 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x0040, 0x6c1: 0x1308, 0x6c2: 0x1008, 0x6c3: 0x1008, 0x6c4: 0x0040, 0x6c5: 0x0008, + 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, + 0x6cc: 0x0008, 0x6cd: 0x0040, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0040, + 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, + 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, + 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, + 0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040, + 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, + 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, + 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, + 0x6fc: 0x1308, 0x6fd: 0x0008, 0x6fe: 0x1008, 0x6ff: 0x1308, + // Block 0x1c, offset 0x700 + 0x700: 0x1008, 0x701: 0x1308, 0x702: 0x1308, 0x703: 0x1308, 0x704: 0x1308, 0x705: 0x0040, + 0x706: 0x0040, 0x707: 0x1008, 0x708: 0x1008, 0x709: 0x0040, 0x70a: 0x0040, 0x70b: 0x1008, + 0x70c: 0x1008, 0x70d: 0x1b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0040, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x1308, 0x717: 0x1008, + 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0881, 0x71d: 0x08b9, + 0x71e: 0x0040, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x1308, 0x723: 0x1308, + 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, + 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, + 0x730: 0x0018, 0x731: 0x0008, 0x732: 0x0018, 0x733: 0x0018, 0x734: 0x0018, 0x735: 0x0018, + 0x736: 0x0018, 0x737: 0x0018, 0x738: 0x0040, 0x739: 0x0040, 0x73a: 0x0040, 0x73b: 0x0040, + 0x73c: 0x0040, 0x73d: 0x0040, 0x73e: 0x0040, 0x73f: 0x0040, + // Block 0x1d, offset 0x740 + 0x740: 0x0040, 0x741: 0x0040, 0x742: 0x1308, 0x743: 0x0008, 0x744: 0x0040, 0x745: 0x0008, + 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0040, + 0x74c: 0x0040, 0x74d: 0x0040, 0x74e: 0x0008, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, + 0x752: 0x0008, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0040, 0x757: 0x0040, + 0x758: 0x0040, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0040, 0x75c: 0x0008, 0x75d: 0x0040, + 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0040, 0x761: 0x0040, 0x762: 0x0040, 0x763: 0x0008, + 0x764: 0x0008, 0x765: 0x0040, 0x766: 0x0040, 0x767: 0x0040, 0x768: 0x0008, 0x769: 0x0008, + 0x76a: 0x0008, 0x76b: 0x0040, 0x76c: 0x0040, 0x76d: 0x0040, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0008, 0x771: 0x0008, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0008, 0x775: 0x0008, + 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, + 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x1008, 0x77f: 0x1008, + // Block 0x1e, offset 0x780 + 0x780: 0x1308, 0x781: 0x1008, 0x782: 0x1008, 0x783: 0x1008, 0x784: 0x1008, 0x785: 0x0040, + 0x786: 0x1308, 0x787: 0x1308, 0x788: 0x1308, 0x789: 0x0040, 0x78a: 0x1308, 0x78b: 0x1308, + 0x78c: 0x1308, 0x78d: 0x1b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, + 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x1308, 0x796: 0x1308, 0x797: 0x0040, + 0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0040, 0x79d: 0x0040, + 0x79e: 0x0040, 0x79f: 0x0040, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x1308, 0x7a3: 0x1308, + 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, + 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, + 0x7b0: 0x0040, 0x7b1: 0x0040, 0x7b2: 0x0040, 0x7b3: 0x0040, 0x7b4: 0x0040, 0x7b5: 0x0040, + 0x7b6: 0x0040, 0x7b7: 0x0040, 0x7b8: 0x0018, 0x7b9: 0x0018, 0x7ba: 0x0018, 0x7bb: 0x0018, + 0x7bc: 0x0018, 0x7bd: 0x0018, 0x7be: 0x0018, 0x7bf: 0x0018, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0008, 0x7c1: 0x1308, 0x7c2: 0x1008, 0x7c3: 0x1008, 0x7c4: 0x0040, 0x7c5: 0x0008, + 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0008, + 0x7cc: 0x0008, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, + 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0008, 0x7d7: 0x0008, + 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0008, 0x7dc: 0x0008, 0x7dd: 0x0008, + 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x0008, 0x7e3: 0x0008, + 0x7e4: 0x0008, 0x7e5: 0x0008, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0040, + 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0040, 0x7f5: 0x0008, + 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, + 0x7fc: 0x1308, 0x7fd: 0x0008, 0x7fe: 0x1008, 0x7ff: 0x1308, + // Block 0x20, offset 0x800 + 0x800: 0x1008, 0x801: 0x1008, 0x802: 0x1008, 0x803: 0x1008, 0x804: 0x1008, 0x805: 0x0040, + 0x806: 0x1308, 0x807: 0x1008, 0x808: 0x1008, 0x809: 0x0040, 0x80a: 0x1008, 0x80b: 0x1008, + 0x80c: 0x1308, 0x80d: 0x1b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, + 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x1008, 0x816: 0x1008, 0x817: 0x0040, + 0x818: 0x0040, 0x819: 0x0040, 0x81a: 0x0040, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, + 0x81e: 0x0008, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x1308, 0x823: 0x1308, + 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, + 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, + 0x830: 0x0040, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, + 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0040, 0x839: 0x0040, 0x83a: 0x0040, 0x83b: 0x0040, + 0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x0040, 0x83f: 0x0040, + // Block 0x21, offset 0x840 + 0x840: 0x1008, 0x841: 0x1308, 0x842: 0x1308, 0x843: 0x1308, 0x844: 0x1308, 0x845: 0x0040, + 0x846: 0x1008, 0x847: 0x1008, 0x848: 0x1008, 0x849: 0x0040, 0x84a: 0x1008, 0x84b: 0x1008, + 0x84c: 0x1008, 0x84d: 0x1b08, 0x84e: 0x0008, 0x84f: 0x0018, 0x850: 0x0040, 0x851: 0x0040, + 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x1008, + 0x858: 0x0018, 0x859: 0x0018, 0x85a: 0x0018, 0x85b: 0x0018, 0x85c: 0x0018, 0x85d: 0x0018, + 0x85e: 0x0018, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x1308, 0x863: 0x1308, + 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, + 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, + 0x870: 0x0018, 0x871: 0x0018, 0x872: 0x0018, 0x873: 0x0018, 0x874: 0x0018, 0x875: 0x0018, + 0x876: 0x0018, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0008, 0x87b: 0x0008, + 0x87c: 0x0008, 0x87d: 0x0008, 0x87e: 0x0008, 0x87f: 0x0008, + // Block 0x22, offset 0x880 + 0x880: 0x0040, 0x881: 0x0008, 0x882: 0x0008, 0x883: 0x0040, 0x884: 0x0008, 0x885: 0x0040, + 0x886: 0x0040, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0040, 0x88a: 0x0008, 0x88b: 0x0040, + 0x88c: 0x0040, 0x88d: 0x0008, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008, + 0x898: 0x0040, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008, + 0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0040, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008, + 0x8a4: 0x0040, 0x8a5: 0x0008, 0x8a6: 0x0040, 0x8a7: 0x0008, 0x8a8: 0x0040, 0x8a9: 0x0040, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0040, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0008, 0x8b1: 0x1308, 0x8b2: 0x0008, 0x8b3: 0x0929, 0x8b4: 0x1308, 0x8b5: 0x1308, + 0x8b6: 0x1308, 0x8b7: 0x1308, 0x8b8: 0x1308, 0x8b9: 0x1308, 0x8ba: 0x0040, 0x8bb: 0x1308, + 0x8bc: 0x1308, 0x8bd: 0x0008, 0x8be: 0x0040, 0x8bf: 0x0040, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0008, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x09d1, 0x8c4: 0x0008, 0x8c5: 0x0008, + 0x8c6: 0x0008, 0x8c7: 0x0008, 0x8c8: 0x0040, 0x8c9: 0x0008, 0x8ca: 0x0008, 0x8cb: 0x0008, + 0x8cc: 0x0008, 0x8cd: 0x0a09, 0x8ce: 0x0008, 0x8cf: 0x0008, 0x8d0: 0x0008, 0x8d1: 0x0008, + 0x8d2: 0x0a41, 0x8d3: 0x0008, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0a79, + 0x8d8: 0x0008, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0ab1, 0x8dd: 0x0008, + 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, + 0x8e4: 0x0008, 0x8e5: 0x0008, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0ae9, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0040, 0x8ee: 0x0040, 0x8ef: 0x0040, + 0x8f0: 0x0040, 0x8f1: 0x1308, 0x8f2: 0x1308, 0x8f3: 0x0b21, 0x8f4: 0x1308, 0x8f5: 0x0b59, + 0x8f6: 0x0b91, 0x8f7: 0x0bc9, 0x8f8: 0x0c19, 0x8f9: 0x0c51, 0x8fa: 0x1308, 0x8fb: 0x1308, + 0x8fc: 0x1308, 0x8fd: 0x1308, 0x8fe: 0x1308, 0x8ff: 0x1008, + // Block 0x24, offset 0x900 + 0x900: 0x1308, 0x901: 0x0ca1, 0x902: 0x1308, 0x903: 0x1308, 0x904: 0x1b08, 0x905: 0x0018, + 0x906: 0x1308, 0x907: 0x1308, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, + 0x90c: 0x0008, 0x90d: 0x1308, 0x90e: 0x1308, 0x90f: 0x1308, 0x910: 0x1308, 0x911: 0x1308, + 0x912: 0x1308, 0x913: 0x0cd9, 0x914: 0x1308, 0x915: 0x1308, 0x916: 0x1308, 0x917: 0x1308, + 0x918: 0x0040, 0x919: 0x1308, 0x91a: 0x1308, 0x91b: 0x1308, 0x91c: 0x1308, 0x91d: 0x0d11, + 0x91e: 0x1308, 0x91f: 0x1308, 0x920: 0x1308, 0x921: 0x1308, 0x922: 0x0d49, 0x923: 0x1308, + 0x924: 0x1308, 0x925: 0x1308, 0x926: 0x1308, 0x927: 0x0d81, 0x928: 0x1308, 0x929: 0x1308, + 0x92a: 0x1308, 0x92b: 0x1308, 0x92c: 0x0db9, 0x92d: 0x1308, 0x92e: 0x1308, 0x92f: 0x1308, + 0x930: 0x1308, 0x931: 0x1308, 0x932: 0x1308, 0x933: 0x1308, 0x934: 0x1308, 0x935: 0x1308, + 0x936: 0x1308, 0x937: 0x1308, 0x938: 0x1308, 0x939: 0x0df1, 0x93a: 0x1308, 0x93b: 0x1308, + 0x93c: 0x1308, 0x93d: 0x0040, 0x93e: 0x0018, 0x93f: 0x0018, + // Block 0x25, offset 0x940 + 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0008, 0x944: 0x0008, 0x945: 0x0008, + 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, + 0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008, + 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008, + 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, + 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008, + 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0039, 0x96d: 0x0ed1, 0x96e: 0x0ee9, 0x96f: 0x0008, + 0x970: 0x0ef9, 0x971: 0x0f09, 0x972: 0x0f19, 0x973: 0x0f31, 0x974: 0x0249, 0x975: 0x0f41, + 0x976: 0x0259, 0x977: 0x0f51, 0x978: 0x0359, 0x979: 0x0f61, 0x97a: 0x0f71, 0x97b: 0x0008, + 0x97c: 0x00d9, 0x97d: 0x0f81, 0x97e: 0x0f99, 0x97f: 0x0269, + // Block 0x26, offset 0x980 + 0x980: 0x0fa9, 0x981: 0x0fb9, 0x982: 0x0279, 0x983: 0x0039, 0x984: 0x0fc9, 0x985: 0x0fe1, + 0x986: 0x059d, 0x987: 0x0ee9, 0x988: 0x0ef9, 0x989: 0x0f09, 0x98a: 0x0ff9, 0x98b: 0x1011, + 0x98c: 0x1029, 0x98d: 0x0f31, 0x98e: 0x0008, 0x98f: 0x0f51, 0x990: 0x0f61, 0x991: 0x1041, + 0x992: 0x00d9, 0x993: 0x1059, 0x994: 0x05b5, 0x995: 0x05b5, 0x996: 0x0f99, 0x997: 0x0fa9, + 0x998: 0x0fb9, 0x999: 0x059d, 0x99a: 0x1071, 0x99b: 0x1089, 0x99c: 0x05cd, 0x99d: 0x1099, + 0x99e: 0x10b1, 0x99f: 0x10c9, 0x9a0: 0x10e1, 0x9a1: 0x10f9, 0x9a2: 0x0f41, 0x9a3: 0x0269, + 0x9a4: 0x0fb9, 0x9a5: 0x1089, 0x9a6: 0x1099, 0x9a7: 0x10b1, 0x9a8: 0x1111, 0x9a9: 0x10e1, + 0x9aa: 0x10f9, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0008, 0x9ae: 0x0008, 0x9af: 0x0008, + 0x9b0: 0x0008, 0x9b1: 0x0008, 0x9b2: 0x0008, 0x9b3: 0x0008, 0x9b4: 0x0008, 0x9b5: 0x0008, + 0x9b6: 0x0008, 0x9b7: 0x0008, 0x9b8: 0x1129, 0x9b9: 0x0008, 0x9ba: 0x0008, 0x9bb: 0x0008, + 0x9bc: 0x0008, 0x9bd: 0x0008, 0x9be: 0x0008, 0x9bf: 0x0008, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, + 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, + 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, + 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, + 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x1141, 0x9dc: 0x1159, 0x9dd: 0x1169, + 0x9de: 0x1181, 0x9df: 0x1029, 0x9e0: 0x1199, 0x9e1: 0x11a9, 0x9e2: 0x11c1, 0x9e3: 0x11d9, + 0x9e4: 0x11f1, 0x9e5: 0x1209, 0x9e6: 0x1221, 0x9e7: 0x05e5, 0x9e8: 0x1239, 0x9e9: 0x1251, + 0x9ea: 0xe17d, 0x9eb: 0x1269, 0x9ec: 0x1281, 0x9ed: 0x1299, 0x9ee: 0x12b1, 0x9ef: 0x12c9, + 0x9f0: 0x12e1, 0x9f1: 0x12f9, 0x9f2: 0x1311, 0x9f3: 0x1329, 0x9f4: 0x1341, 0x9f5: 0x1359, + 0x9f6: 0x1371, 0x9f7: 0x1389, 0x9f8: 0x05fd, 0x9f9: 0x13a1, 0x9fa: 0x13b9, 0x9fb: 0x13d1, + 0x9fc: 0x13e1, 0x9fd: 0x13f9, 0x9fe: 0x1411, 0x9ff: 0x1429, + // Block 0x28, offset 0xa00 + 0xa00: 0xe00d, 0xa01: 0x0008, 0xa02: 0xe00d, 0xa03: 0x0008, 0xa04: 0xe00d, 0xa05: 0x0008, + 0xa06: 0xe00d, 0xa07: 0x0008, 0xa08: 0xe00d, 0xa09: 0x0008, 0xa0a: 0xe00d, 0xa0b: 0x0008, + 0xa0c: 0xe00d, 0xa0d: 0x0008, 0xa0e: 0xe00d, 0xa0f: 0x0008, 0xa10: 0xe00d, 0xa11: 0x0008, + 0xa12: 0xe00d, 0xa13: 0x0008, 0xa14: 0xe00d, 0xa15: 0x0008, 0xa16: 0xe00d, 0xa17: 0x0008, + 0xa18: 0xe00d, 0xa19: 0x0008, 0xa1a: 0xe00d, 0xa1b: 0x0008, 0xa1c: 0xe00d, 0xa1d: 0x0008, + 0xa1e: 0xe00d, 0xa1f: 0x0008, 0xa20: 0xe00d, 0xa21: 0x0008, 0xa22: 0xe00d, 0xa23: 0x0008, + 0xa24: 0xe00d, 0xa25: 0x0008, 0xa26: 0xe00d, 0xa27: 0x0008, 0xa28: 0xe00d, 0xa29: 0x0008, + 0xa2a: 0xe00d, 0xa2b: 0x0008, 0xa2c: 0xe00d, 0xa2d: 0x0008, 0xa2e: 0xe00d, 0xa2f: 0x0008, + 0xa30: 0xe00d, 0xa31: 0x0008, 0xa32: 0xe00d, 0xa33: 0x0008, 0xa34: 0xe00d, 0xa35: 0x0008, + 0xa36: 0xe00d, 0xa37: 0x0008, 0xa38: 0xe00d, 0xa39: 0x0008, 0xa3a: 0xe00d, 0xa3b: 0x0008, + 0xa3c: 0xe00d, 0xa3d: 0x0008, 0xa3e: 0xe00d, 0xa3f: 0x0008, + // Block 0x29, offset 0xa40 + 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, + 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, + 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, + 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, + 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0615, 0xa5b: 0x0635, 0xa5c: 0x0008, 0xa5d: 0x0008, + 0xa5e: 0x1441, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, + 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, + 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, + 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, + 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, + 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, + // Block 0x2a, offset 0xa80 + 0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008, + 0xa86: 0x0040, 0xa87: 0x0040, 0xa88: 0xe045, 0xa89: 0xe045, 0xa8a: 0xe045, 0xa8b: 0xe045, + 0xa8c: 0xe045, 0xa8d: 0xe045, 0xa8e: 0x0040, 0xa8f: 0x0040, 0xa90: 0x0008, 0xa91: 0x0008, + 0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, + 0xa98: 0x0040, 0xa99: 0xe045, 0xa9a: 0x0040, 0xa9b: 0xe045, 0xa9c: 0x0040, 0xa9d: 0xe045, + 0xa9e: 0x0040, 0xa9f: 0xe045, 0xaa0: 0x0008, 0xaa1: 0x0008, 0xaa2: 0x0008, 0xaa3: 0x0008, + 0xaa4: 0x0008, 0xaa5: 0x0008, 0xaa6: 0x0008, 0xaa7: 0x0008, 0xaa8: 0xe045, 0xaa9: 0xe045, + 0xaaa: 0xe045, 0xaab: 0xe045, 0xaac: 0xe045, 0xaad: 0xe045, 0xaae: 0xe045, 0xaaf: 0xe045, + 0xab0: 0x0008, 0xab1: 0x1459, 0xab2: 0x0008, 0xab3: 0x1471, 0xab4: 0x0008, 0xab5: 0x1489, + 0xab6: 0x0008, 0xab7: 0x14a1, 0xab8: 0x0008, 0xab9: 0x14b9, 0xaba: 0x0008, 0xabb: 0x14d1, + 0xabc: 0x0008, 0xabd: 0x14e9, 0xabe: 0x0040, 0xabf: 0x0040, + // Block 0x2b, offset 0xac0 + 0xac0: 0x1501, 0xac1: 0x1531, 0xac2: 0x1561, 0xac3: 0x1591, 0xac4: 0x15c1, 0xac5: 0x15f1, + 0xac6: 0x1621, 0xac7: 0x1651, 0xac8: 0x1501, 0xac9: 0x1531, 0xaca: 0x1561, 0xacb: 0x1591, + 0xacc: 0x15c1, 0xacd: 0x15f1, 0xace: 0x1621, 0xacf: 0x1651, 0xad0: 0x1681, 0xad1: 0x16b1, + 0xad2: 0x16e1, 0xad3: 0x1711, 0xad4: 0x1741, 0xad5: 0x1771, 0xad6: 0x17a1, 0xad7: 0x17d1, + 0xad8: 0x1681, 0xad9: 0x16b1, 0xada: 0x16e1, 0xadb: 0x1711, 0xadc: 0x1741, 0xadd: 0x1771, + 0xade: 0x17a1, 0xadf: 0x17d1, 0xae0: 0x1801, 0xae1: 0x1831, 0xae2: 0x1861, 0xae3: 0x1891, + 0xae4: 0x18c1, 0xae5: 0x18f1, 0xae6: 0x1921, 0xae7: 0x1951, 0xae8: 0x1801, 0xae9: 0x1831, + 0xaea: 0x1861, 0xaeb: 0x1891, 0xaec: 0x18c1, 0xaed: 0x18f1, 0xaee: 0x1921, 0xaef: 0x1951, + 0xaf0: 0x0008, 0xaf1: 0x0008, 0xaf2: 0x1981, 0xaf3: 0x19b1, 0xaf4: 0x19d9, 0xaf5: 0x0040, + 0xaf6: 0x0008, 0xaf7: 0x1a01, 0xaf8: 0xe045, 0xaf9: 0xe045, 0xafa: 0x064d, 0xafb: 0x1459, + 0xafc: 0x19b1, 0xafd: 0x0666, 0xafe: 0x1a31, 0xaff: 0x0686, + // Block 0x2c, offset 0xb00 + 0xb00: 0x06a6, 0xb01: 0x1a4a, 0xb02: 0x1a79, 0xb03: 0x1aa9, 0xb04: 0x1ad1, 0xb05: 0x0040, + 0xb06: 0x0008, 0xb07: 0x1af9, 0xb08: 0x06c5, 0xb09: 0x1471, 0xb0a: 0x06dd, 0xb0b: 0x1489, + 0xb0c: 0x1aa9, 0xb0d: 0x1b2a, 0xb0e: 0x1b5a, 0xb0f: 0x1b8a, 0xb10: 0x0008, 0xb11: 0x0008, + 0xb12: 0x0008, 0xb13: 0x1bb9, 0xb14: 0x0040, 0xb15: 0x0040, 0xb16: 0x0008, 0xb17: 0x0008, + 0xb18: 0xe045, 0xb19: 0xe045, 0xb1a: 0x06f5, 0xb1b: 0x14a1, 0xb1c: 0x0040, 0xb1d: 0x1bd2, + 0xb1e: 0x1c02, 0xb1f: 0x1c32, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x1c61, + 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, + 0xb2a: 0x070d, 0xb2b: 0x14d1, 0xb2c: 0xe04d, 0xb2d: 0x1c7a, 0xb2e: 0x03d2, 0xb2f: 0x1caa, + 0xb30: 0x0040, 0xb31: 0x0040, 0xb32: 0x1cb9, 0xb33: 0x1ce9, 0xb34: 0x1d11, 0xb35: 0x0040, + 0xb36: 0x0008, 0xb37: 0x1d39, 0xb38: 0x0725, 0xb39: 0x14b9, 0xb3a: 0x0515, 0xb3b: 0x14e9, + 0xb3c: 0x1ce9, 0xb3d: 0x073e, 0xb3e: 0x075e, 0xb3f: 0x0040, + // Block 0x2d, offset 0xb40 + 0xb40: 0x000a, 0xb41: 0x000a, 0xb42: 0x000a, 0xb43: 0x000a, 0xb44: 0x000a, 0xb45: 0x000a, + 0xb46: 0x000a, 0xb47: 0x000a, 0xb48: 0x000a, 0xb49: 0x000a, 0xb4a: 0x000a, 0xb4b: 0x03c0, + 0xb4c: 0x0003, 0xb4d: 0x0003, 0xb4e: 0x0340, 0xb4f: 0x0340, 0xb50: 0x0018, 0xb51: 0xe00d, + 0xb52: 0x0018, 0xb53: 0x0018, 0xb54: 0x0018, 0xb55: 0x0018, 0xb56: 0x0018, 0xb57: 0x077e, + 0xb58: 0x0018, 0xb59: 0x0018, 0xb5a: 0x0018, 0xb5b: 0x0018, 0xb5c: 0x0018, 0xb5d: 0x0018, + 0xb5e: 0x0018, 0xb5f: 0x0018, 0xb60: 0x0018, 0xb61: 0x0018, 0xb62: 0x0018, 0xb63: 0x0018, + 0xb64: 0x0040, 0xb65: 0x0040, 0xb66: 0x0040, 0xb67: 0x0018, 0xb68: 0x0040, 0xb69: 0x0040, + 0xb6a: 0x0340, 0xb6b: 0x0340, 0xb6c: 0x0340, 0xb6d: 0x0340, 0xb6e: 0x0340, 0xb6f: 0x000a, + 0xb70: 0x0018, 0xb71: 0x0018, 0xb72: 0x0018, 0xb73: 0x1d69, 0xb74: 0x1da1, 0xb75: 0x0018, + 0xb76: 0x1df1, 0xb77: 0x1e29, 0xb78: 0x0018, 0xb79: 0x0018, 0xb7a: 0x0018, 0xb7b: 0x0018, + 0xb7c: 0x1e7a, 0xb7d: 0x0018, 0xb7e: 0x079e, 0xb7f: 0x0018, + // Block 0x2e, offset 0xb80 + 0xb80: 0x0018, 0xb81: 0x0018, 0xb82: 0x0018, 0xb83: 0x0018, 0xb84: 0x0018, 0xb85: 0x0018, + 0xb86: 0x0018, 0xb87: 0x1e92, 0xb88: 0x1eaa, 0xb89: 0x1ec2, 0xb8a: 0x0018, 0xb8b: 0x0018, + 0xb8c: 0x0018, 0xb8d: 0x0018, 0xb8e: 0x0018, 0xb8f: 0x0018, 0xb90: 0x0018, 0xb91: 0x0018, + 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x1ed9, + 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, + 0xb9e: 0x0018, 0xb9f: 0x000a, 0xba0: 0x03c0, 0xba1: 0x0340, 0xba2: 0x0340, 0xba3: 0x0340, + 0xba4: 0x03c0, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0040, 0xba8: 0x0040, 0xba9: 0x0040, + 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x0340, + 0xbb0: 0x1f41, 0xbb1: 0x0f41, 0xbb2: 0x0040, 0xbb3: 0x0040, 0xbb4: 0x1f51, 0xbb5: 0x1f61, + 0xbb6: 0x1f71, 0xbb7: 0x1f81, 0xbb8: 0x1f91, 0xbb9: 0x1fa1, 0xbba: 0x1fb2, 0xbbb: 0x07bd, + 0xbbc: 0x1fc2, 0xbbd: 0x1fd2, 0xbbe: 0x1fe2, 0xbbf: 0x0f71, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x1f41, 0xbc1: 0x00c9, 0xbc2: 0x0069, 0xbc3: 0x0079, 0xbc4: 0x1f51, 0xbc5: 0x1f61, + 0xbc6: 0x1f71, 0xbc7: 0x1f81, 0xbc8: 0x1f91, 0xbc9: 0x1fa1, 0xbca: 0x1fb2, 0xbcb: 0x07d5, + 0xbcc: 0x1fc2, 0xbcd: 0x1fd2, 0xbce: 0x1fe2, 0xbcf: 0x0040, 0xbd0: 0x0039, 0xbd1: 0x0f09, + 0xbd2: 0x00d9, 0xbd3: 0x0369, 0xbd4: 0x0ff9, 0xbd5: 0x0249, 0xbd6: 0x0f51, 0xbd7: 0x0359, + 0xbd8: 0x0f61, 0xbd9: 0x0f71, 0xbda: 0x0f99, 0xbdb: 0x01d9, 0xbdc: 0x0fa9, 0xbdd: 0x0040, + 0xbde: 0x0040, 0xbdf: 0x0040, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, + 0xbe4: 0x0018, 0xbe5: 0x0018, 0xbe6: 0x0018, 0xbe7: 0x0018, 0xbe8: 0x1ff1, 0xbe9: 0x0018, + 0xbea: 0x0018, 0xbeb: 0x0018, 0xbec: 0x0018, 0xbed: 0x0018, 0xbee: 0x0018, 0xbef: 0x0018, + 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0018, 0xbf4: 0x0018, 0xbf5: 0x0018, + 0xbf6: 0x0018, 0xbf7: 0x0018, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, + 0xbfc: 0x0018, 0xbfd: 0x0018, 0xbfe: 0x0018, 0xbff: 0x0040, + // Block 0x30, offset 0xc00 + 0xc00: 0x07ee, 0xc01: 0x080e, 0xc02: 0x1159, 0xc03: 0x082d, 0xc04: 0x0018, 0xc05: 0x084e, + 0xc06: 0x086e, 0xc07: 0x1011, 0xc08: 0x0018, 0xc09: 0x088d, 0xc0a: 0x0f31, 0xc0b: 0x0249, + 0xc0c: 0x0249, 0xc0d: 0x0249, 0xc0e: 0x0249, 0xc0f: 0x2009, 0xc10: 0x0f41, 0xc11: 0x0f41, + 0xc12: 0x0359, 0xc13: 0x0359, 0xc14: 0x0018, 0xc15: 0x0f71, 0xc16: 0x2021, 0xc17: 0x0018, + 0xc18: 0x0018, 0xc19: 0x0f99, 0xc1a: 0x2039, 0xc1b: 0x0269, 0xc1c: 0x0269, 0xc1d: 0x0269, + 0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x2049, 0xc21: 0x08ad, 0xc22: 0x2061, 0xc23: 0x0018, + 0xc24: 0x13d1, 0xc25: 0x0018, 0xc26: 0x2079, 0xc27: 0x0018, 0xc28: 0x13d1, 0xc29: 0x0018, + 0xc2a: 0x0f51, 0xc2b: 0x2091, 0xc2c: 0x0ee9, 0xc2d: 0x1159, 0xc2e: 0x0018, 0xc2f: 0x0f09, + 0xc30: 0x0f09, 0xc31: 0x1199, 0xc32: 0x0040, 0xc33: 0x0f61, 0xc34: 0x00d9, 0xc35: 0x20a9, + 0xc36: 0x20c1, 0xc37: 0x20d9, 0xc38: 0x20f1, 0xc39: 0x0f41, 0xc3a: 0x0018, 0xc3b: 0x08cd, + 0xc3c: 0x2109, 0xc3d: 0x10b1, 0xc3e: 0x10b1, 0xc3f: 0x2109, + // Block 0x31, offset 0xc40 + 0xc40: 0x08ed, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0ef9, + 0xc46: 0x0ef9, 0xc47: 0x0f09, 0xc48: 0x0f41, 0xc49: 0x0259, 0xc4a: 0x0018, 0xc4b: 0x0018, + 0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0008, 0xc4f: 0x0018, 0xc50: 0x2121, 0xc51: 0x2151, + 0xc52: 0x2181, 0xc53: 0x21b9, 0xc54: 0x21e9, 0xc55: 0x2219, 0xc56: 0x2249, 0xc57: 0x2279, + 0xc58: 0x22a9, 0xc59: 0x22d9, 0xc5a: 0x2309, 0xc5b: 0x2339, 0xc5c: 0x2369, 0xc5d: 0x2399, + 0xc5e: 0x23c9, 0xc5f: 0x23f9, 0xc60: 0x0f41, 0xc61: 0x2421, 0xc62: 0x0905, 0xc63: 0x2439, + 0xc64: 0x1089, 0xc65: 0x2451, 0xc66: 0x0925, 0xc67: 0x2469, 0xc68: 0x2491, 0xc69: 0x0369, + 0xc6a: 0x24a9, 0xc6b: 0x0945, 0xc6c: 0x0359, 0xc6d: 0x1159, 0xc6e: 0x0ef9, 0xc6f: 0x0f61, + 0xc70: 0x0f41, 0xc71: 0x2421, 0xc72: 0x0965, 0xc73: 0x2439, 0xc74: 0x1089, 0xc75: 0x2451, + 0xc76: 0x0985, 0xc77: 0x2469, 0xc78: 0x2491, 0xc79: 0x0369, 0xc7a: 0x24a9, 0xc7b: 0x09a5, + 0xc7c: 0x0359, 0xc7d: 0x1159, 0xc7e: 0x0ef9, 0xc7f: 0x0f61, + // Block 0x32, offset 0xc80 + 0xc80: 0x0018, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0018, + 0xc86: 0x0018, 0xc87: 0x0018, 0xc88: 0x0018, 0xc89: 0x0018, 0xc8a: 0x0018, 0xc8b: 0x0040, + 0xc8c: 0x0040, 0xc8d: 0x0040, 0xc8e: 0x0040, 0xc8f: 0x0040, 0xc90: 0x0040, 0xc91: 0x0040, + 0xc92: 0x0040, 0xc93: 0x0040, 0xc94: 0x0040, 0xc95: 0x0040, 0xc96: 0x0040, 0xc97: 0x0040, + 0xc98: 0x0040, 0xc99: 0x0040, 0xc9a: 0x0040, 0xc9b: 0x0040, 0xc9c: 0x0040, 0xc9d: 0x0040, + 0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x00c9, 0xca1: 0x0069, 0xca2: 0x0079, 0xca3: 0x1f51, + 0xca4: 0x1f61, 0xca5: 0x1f71, 0xca6: 0x1f81, 0xca7: 0x1f91, 0xca8: 0x1fa1, 0xca9: 0x2601, + 0xcaa: 0x2619, 0xcab: 0x2631, 0xcac: 0x2649, 0xcad: 0x2661, 0xcae: 0x2679, 0xcaf: 0x2691, + 0xcb0: 0x26a9, 0xcb1: 0x26c1, 0xcb2: 0x26d9, 0xcb3: 0x26f1, 0xcb4: 0x0a06, 0xcb5: 0x0a26, + 0xcb6: 0x0a46, 0xcb7: 0x0a66, 0xcb8: 0x0a86, 0xcb9: 0x0aa6, 0xcba: 0x0ac6, 0xcbb: 0x0ae6, + 0xcbc: 0x0b06, 0xcbd: 0x270a, 0xcbe: 0x2732, 0xcbf: 0x275a, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x2782, 0xcc1: 0x27aa, 0xcc2: 0x27d2, 0xcc3: 0x27fa, 0xcc4: 0x2822, 0xcc5: 0x284a, + 0xcc6: 0x2872, 0xcc7: 0x289a, 0xcc8: 0x0040, 0xcc9: 0x0040, 0xcca: 0x0040, 0xccb: 0x0040, + 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, + 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, + 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0b26, 0xcdd: 0x0b46, + 0xcde: 0x0b66, 0xcdf: 0x0b86, 0xce0: 0x0ba6, 0xce1: 0x0bc6, 0xce2: 0x0be6, 0xce3: 0x0c06, + 0xce4: 0x0c26, 0xce5: 0x0c46, 0xce6: 0x0c66, 0xce7: 0x0c86, 0xce8: 0x0ca6, 0xce9: 0x0cc6, + 0xcea: 0x0ce6, 0xceb: 0x0d06, 0xcec: 0x0d26, 0xced: 0x0d46, 0xcee: 0x0d66, 0xcef: 0x0d86, + 0xcf0: 0x0da6, 0xcf1: 0x0dc6, 0xcf2: 0x0de6, 0xcf3: 0x0e06, 0xcf4: 0x0e26, 0xcf5: 0x0e46, + 0xcf6: 0x0039, 0xcf7: 0x0ee9, 0xcf8: 0x1159, 0xcf9: 0x0ef9, 0xcfa: 0x0f09, 0xcfb: 0x1199, + 0xcfc: 0x0f31, 0xcfd: 0x0249, 0xcfe: 0x0f41, 0xcff: 0x0259, + // Block 0x34, offset 0xd00 + 0xd00: 0x0f51, 0xd01: 0x0359, 0xd02: 0x0f61, 0xd03: 0x0f71, 0xd04: 0x00d9, 0xd05: 0x0f99, + 0xd06: 0x2039, 0xd07: 0x0269, 0xd08: 0x01d9, 0xd09: 0x0fa9, 0xd0a: 0x0fb9, 0xd0b: 0x1089, + 0xd0c: 0x0279, 0xd0d: 0x0369, 0xd0e: 0x0289, 0xd0f: 0x13d1, 0xd10: 0x0039, 0xd11: 0x0ee9, + 0xd12: 0x1159, 0xd13: 0x0ef9, 0xd14: 0x0f09, 0xd15: 0x1199, 0xd16: 0x0f31, 0xd17: 0x0249, + 0xd18: 0x0f41, 0xd19: 0x0259, 0xd1a: 0x0f51, 0xd1b: 0x0359, 0xd1c: 0x0f61, 0xd1d: 0x0f71, + 0xd1e: 0x00d9, 0xd1f: 0x0f99, 0xd20: 0x2039, 0xd21: 0x0269, 0xd22: 0x01d9, 0xd23: 0x0fa9, + 0xd24: 0x0fb9, 0xd25: 0x1089, 0xd26: 0x0279, 0xd27: 0x0369, 0xd28: 0x0289, 0xd29: 0x13d1, + 0xd2a: 0x1f41, 0xd2b: 0x0018, 0xd2c: 0x0018, 0xd2d: 0x0018, 0xd2e: 0x0018, 0xd2f: 0x0018, + 0xd30: 0x0018, 0xd31: 0x0018, 0xd32: 0x0018, 0xd33: 0x0018, 0xd34: 0x0018, 0xd35: 0x0018, + 0xd36: 0x0018, 0xd37: 0x0018, 0xd38: 0x0018, 0xd39: 0x0018, 0xd3a: 0x0018, 0xd3b: 0x0018, + 0xd3c: 0x0018, 0xd3d: 0x0018, 0xd3e: 0x0018, 0xd3f: 0x0018, + // Block 0x35, offset 0xd40 + 0xd40: 0x0008, 0xd41: 0x0008, 0xd42: 0x0008, 0xd43: 0x0008, 0xd44: 0x0008, 0xd45: 0x0008, + 0xd46: 0x0008, 0xd47: 0x0008, 0xd48: 0x0008, 0xd49: 0x0008, 0xd4a: 0x0008, 0xd4b: 0x0008, + 0xd4c: 0x0008, 0xd4d: 0x0008, 0xd4e: 0x0008, 0xd4f: 0x0008, 0xd50: 0x0008, 0xd51: 0x0008, + 0xd52: 0x0008, 0xd53: 0x0008, 0xd54: 0x0008, 0xd55: 0x0008, 0xd56: 0x0008, 0xd57: 0x0008, + 0xd58: 0x0008, 0xd59: 0x0008, 0xd5a: 0x0008, 0xd5b: 0x0008, 0xd5c: 0x0008, 0xd5d: 0x0008, + 0xd5e: 0x0008, 0xd5f: 0x0040, 0xd60: 0xe00d, 0xd61: 0x0008, 0xd62: 0x2971, 0xd63: 0x0ebd, + 0xd64: 0x2989, 0xd65: 0x0008, 0xd66: 0x0008, 0xd67: 0xe07d, 0xd68: 0x0008, 0xd69: 0xe01d, + 0xd6a: 0x0008, 0xd6b: 0xe03d, 0xd6c: 0x0008, 0xd6d: 0x0fe1, 0xd6e: 0x1281, 0xd6f: 0x0fc9, + 0xd70: 0x1141, 0xd71: 0x0008, 0xd72: 0xe00d, 0xd73: 0x0008, 0xd74: 0x0008, 0xd75: 0xe01d, + 0xd76: 0x0008, 0xd77: 0x0008, 0xd78: 0x0008, 0xd79: 0x0008, 0xd7a: 0x0008, 0xd7b: 0x0008, + 0xd7c: 0x0259, 0xd7d: 0x1089, 0xd7e: 0x29a1, 0xd7f: 0x29b9, + // Block 0x36, offset 0xd80 + 0xd80: 0xe00d, 0xd81: 0x0008, 0xd82: 0xe00d, 0xd83: 0x0008, 0xd84: 0xe00d, 0xd85: 0x0008, + 0xd86: 0xe00d, 0xd87: 0x0008, 0xd88: 0xe00d, 0xd89: 0x0008, 0xd8a: 0xe00d, 0xd8b: 0x0008, + 0xd8c: 0xe00d, 0xd8d: 0x0008, 0xd8e: 0xe00d, 0xd8f: 0x0008, 0xd90: 0xe00d, 0xd91: 0x0008, + 0xd92: 0xe00d, 0xd93: 0x0008, 0xd94: 0xe00d, 0xd95: 0x0008, 0xd96: 0xe00d, 0xd97: 0x0008, + 0xd98: 0xe00d, 0xd99: 0x0008, 0xd9a: 0xe00d, 0xd9b: 0x0008, 0xd9c: 0xe00d, 0xd9d: 0x0008, + 0xd9e: 0xe00d, 0xd9f: 0x0008, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0xe00d, 0xda3: 0x0008, + 0xda4: 0x0008, 0xda5: 0x0018, 0xda6: 0x0018, 0xda7: 0x0018, 0xda8: 0x0018, 0xda9: 0x0018, + 0xdaa: 0x0018, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0xe01d, 0xdae: 0x0008, 0xdaf: 0x1308, + 0xdb0: 0x1308, 0xdb1: 0x1308, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0040, 0xdb5: 0x0040, + 0xdb6: 0x0040, 0xdb7: 0x0040, 0xdb8: 0x0040, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, + 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x26fd, 0xdc1: 0x271d, 0xdc2: 0x273d, 0xdc3: 0x275d, 0xdc4: 0x277d, 0xdc5: 0x279d, + 0xdc6: 0x27bd, 0xdc7: 0x27dd, 0xdc8: 0x27fd, 0xdc9: 0x281d, 0xdca: 0x283d, 0xdcb: 0x285d, + 0xdcc: 0x287d, 0xdcd: 0x289d, 0xdce: 0x28bd, 0xdcf: 0x28dd, 0xdd0: 0x28fd, 0xdd1: 0x291d, + 0xdd2: 0x293d, 0xdd3: 0x295d, 0xdd4: 0x297d, 0xdd5: 0x299d, 0xdd6: 0x0040, 0xdd7: 0x0040, + 0xdd8: 0x0040, 0xdd9: 0x0040, 0xdda: 0x0040, 0xddb: 0x0040, 0xddc: 0x0040, 0xddd: 0x0040, + 0xdde: 0x0040, 0xddf: 0x0040, 0xde0: 0x0040, 0xde1: 0x0040, 0xde2: 0x0040, 0xde3: 0x0040, + 0xde4: 0x0040, 0xde5: 0x0040, 0xde6: 0x0040, 0xde7: 0x0040, 0xde8: 0x0040, 0xde9: 0x0040, + 0xdea: 0x0040, 0xdeb: 0x0040, 0xdec: 0x0040, 0xded: 0x0040, 0xdee: 0x0040, 0xdef: 0x0040, + 0xdf0: 0x0040, 0xdf1: 0x0040, 0xdf2: 0x0040, 0xdf3: 0x0040, 0xdf4: 0x0040, 0xdf5: 0x0040, + 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0040, 0xdfa: 0x0040, 0xdfb: 0x0040, + 0xdfc: 0x0040, 0xdfd: 0x0040, 0xdfe: 0x0040, 0xdff: 0x0040, + // Block 0x38, offset 0xe00 + 0xe00: 0x000a, 0xe01: 0x0018, 0xe02: 0x29d1, 0xe03: 0x0018, 0xe04: 0x0018, 0xe05: 0x0008, + 0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0018, 0xe09: 0x0018, 0xe0a: 0x0018, 0xe0b: 0x0018, + 0xe0c: 0x0018, 0xe0d: 0x0018, 0xe0e: 0x0018, 0xe0f: 0x0018, 0xe10: 0x0018, 0xe11: 0x0018, + 0xe12: 0x0018, 0xe13: 0x0018, 0xe14: 0x0018, 0xe15: 0x0018, 0xe16: 0x0018, 0xe17: 0x0018, + 0xe18: 0x0018, 0xe19: 0x0018, 0xe1a: 0x0018, 0xe1b: 0x0018, 0xe1c: 0x0018, 0xe1d: 0x0018, + 0xe1e: 0x0018, 0xe1f: 0x0018, 0xe20: 0x0018, 0xe21: 0x0018, 0xe22: 0x0018, 0xe23: 0x0018, + 0xe24: 0x0018, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, + 0xe2a: 0x1308, 0xe2b: 0x1308, 0xe2c: 0x1308, 0xe2d: 0x1308, 0xe2e: 0x1018, 0xe2f: 0x1018, + 0xe30: 0x0018, 0xe31: 0x0018, 0xe32: 0x0018, 0xe33: 0x0018, 0xe34: 0x0018, 0xe35: 0x0018, + 0xe36: 0xe125, 0xe37: 0x0018, 0xe38: 0x29bd, 0xe39: 0x29dd, 0xe3a: 0x29fd, 0xe3b: 0x0018, + 0xe3c: 0x0008, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, + // Block 0x39, offset 0xe40 + 0xe40: 0x2b3d, 0xe41: 0x2b5d, 0xe42: 0x2b7d, 0xe43: 0x2b9d, 0xe44: 0x2bbd, 0xe45: 0x2bdd, + 0xe46: 0x2bdd, 0xe47: 0x2bdd, 0xe48: 0x2bfd, 0xe49: 0x2bfd, 0xe4a: 0x2bfd, 0xe4b: 0x2bfd, + 0xe4c: 0x2c1d, 0xe4d: 0x2c1d, 0xe4e: 0x2c1d, 0xe4f: 0x2c3d, 0xe50: 0x2c5d, 0xe51: 0x2c5d, + 0xe52: 0x2a7d, 0xe53: 0x2a7d, 0xe54: 0x2c5d, 0xe55: 0x2c5d, 0xe56: 0x2c7d, 0xe57: 0x2c7d, + 0xe58: 0x2c5d, 0xe59: 0x2c5d, 0xe5a: 0x2a7d, 0xe5b: 0x2a7d, 0xe5c: 0x2c5d, 0xe5d: 0x2c5d, + 0xe5e: 0x2c3d, 0xe5f: 0x2c3d, 0xe60: 0x2c9d, 0xe61: 0x2c9d, 0xe62: 0x2cbd, 0xe63: 0x2cbd, + 0xe64: 0x0040, 0xe65: 0x2cdd, 0xe66: 0x2cfd, 0xe67: 0x2d1d, 0xe68: 0x2d1d, 0xe69: 0x2d3d, + 0xe6a: 0x2d5d, 0xe6b: 0x2d7d, 0xe6c: 0x2d9d, 0xe6d: 0x2dbd, 0xe6e: 0x2ddd, 0xe6f: 0x2dfd, + 0xe70: 0x2e1d, 0xe71: 0x2e3d, 0xe72: 0x2e3d, 0xe73: 0x2e5d, 0xe74: 0x2e7d, 0xe75: 0x2e7d, + 0xe76: 0x2e9d, 0xe77: 0x2ebd, 0xe78: 0x2e5d, 0xe79: 0x2edd, 0xe7a: 0x2efd, 0xe7b: 0x2edd, + 0xe7c: 0x2e5d, 0xe7d: 0x2f1d, 0xe7e: 0x2f3d, 0xe7f: 0x2f5d, + // Block 0x3a, offset 0xe80 + 0xe80: 0x2f7d, 0xe81: 0x2f9d, 0xe82: 0x2cfd, 0xe83: 0x2cdd, 0xe84: 0x2fbd, 0xe85: 0x2fdd, + 0xe86: 0x2ffd, 0xe87: 0x301d, 0xe88: 0x303d, 0xe89: 0x305d, 0xe8a: 0x307d, 0xe8b: 0x309d, + 0xe8c: 0x30bd, 0xe8d: 0x30dd, 0xe8e: 0x30fd, 0xe8f: 0x0040, 0xe90: 0x0018, 0xe91: 0x0018, + 0xe92: 0x311d, 0xe93: 0x313d, 0xe94: 0x315d, 0xe95: 0x317d, 0xe96: 0x319d, 0xe97: 0x31bd, + 0xe98: 0x31dd, 0xe99: 0x31fd, 0xe9a: 0x321d, 0xe9b: 0x323d, 0xe9c: 0x315d, 0xe9d: 0x325d, + 0xe9e: 0x327d, 0xe9f: 0x329d, 0xea0: 0x0008, 0xea1: 0x0008, 0xea2: 0x0008, 0xea3: 0x0008, + 0xea4: 0x0008, 0xea5: 0x0008, 0xea6: 0x0008, 0xea7: 0x0008, 0xea8: 0x0008, 0xea9: 0x0008, + 0xeaa: 0x0008, 0xeab: 0x0008, 0xeac: 0x0008, 0xead: 0x0008, 0xeae: 0x0008, 0xeaf: 0x0008, + 0xeb0: 0x0008, 0xeb1: 0x0008, 0xeb2: 0x0008, 0xeb3: 0x0008, 0xeb4: 0x0008, 0xeb5: 0x0008, + 0xeb6: 0x0008, 0xeb7: 0x0008, 0xeb8: 0x0008, 0xeb9: 0x0008, 0xeba: 0x0008, 0xebb: 0x0040, + 0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040, + // Block 0x3b, offset 0xec0 + 0xec0: 0x36a2, 0xec1: 0x36d2, 0xec2: 0x3702, 0xec3: 0x3732, 0xec4: 0x32bd, 0xec5: 0x32dd, + 0xec6: 0x32fd, 0xec7: 0x331d, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018, + 0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x333d, 0xed1: 0x3761, + 0xed2: 0x3779, 0xed3: 0x3791, 0xed4: 0x37a9, 0xed5: 0x37c1, 0xed6: 0x37d9, 0xed7: 0x37f1, + 0xed8: 0x3809, 0xed9: 0x3821, 0xeda: 0x3839, 0xedb: 0x3851, 0xedc: 0x3869, 0xedd: 0x3881, + 0xede: 0x3899, 0xedf: 0x38b1, 0xee0: 0x335d, 0xee1: 0x337d, 0xee2: 0x339d, 0xee3: 0x33bd, + 0xee4: 0x33dd, 0xee5: 0x33dd, 0xee6: 0x33fd, 0xee7: 0x341d, 0xee8: 0x343d, 0xee9: 0x345d, + 0xeea: 0x347d, 0xeeb: 0x349d, 0xeec: 0x34bd, 0xeed: 0x34dd, 0xeee: 0x34fd, 0xeef: 0x351d, + 0xef0: 0x353d, 0xef1: 0x355d, 0xef2: 0x357d, 0xef3: 0x359d, 0xef4: 0x35bd, 0xef5: 0x35dd, + 0xef6: 0x35fd, 0xef7: 0x361d, 0xef8: 0x363d, 0xef9: 0x365d, 0xefa: 0x367d, 0xefb: 0x369d, + 0xefc: 0x38c9, 0xefd: 0x3901, 0xefe: 0x36bd, 0xeff: 0x0018, + // Block 0x3c, offset 0xf00 + 0xf00: 0x36dd, 0xf01: 0x36fd, 0xf02: 0x371d, 0xf03: 0x373d, 0xf04: 0x375d, 0xf05: 0x377d, + 0xf06: 0x379d, 0xf07: 0x37bd, 0xf08: 0x37dd, 0xf09: 0x37fd, 0xf0a: 0x381d, 0xf0b: 0x383d, + 0xf0c: 0x385d, 0xf0d: 0x387d, 0xf0e: 0x389d, 0xf0f: 0x38bd, 0xf10: 0x38dd, 0xf11: 0x38fd, + 0xf12: 0x391d, 0xf13: 0x393d, 0xf14: 0x395d, 0xf15: 0x397d, 0xf16: 0x399d, 0xf17: 0x39bd, + 0xf18: 0x39dd, 0xf19: 0x39fd, 0xf1a: 0x3a1d, 0xf1b: 0x3a3d, 0xf1c: 0x3a5d, 0xf1d: 0x3a7d, + 0xf1e: 0x3a9d, 0xf1f: 0x3abd, 0xf20: 0x3add, 0xf21: 0x3afd, 0xf22: 0x3b1d, 0xf23: 0x3b3d, + 0xf24: 0x3b5d, 0xf25: 0x3b7d, 0xf26: 0x127d, 0xf27: 0x3b9d, 0xf28: 0x3bbd, 0xf29: 0x3bdd, + 0xf2a: 0x3bfd, 0xf2b: 0x3c1d, 0xf2c: 0x3c3d, 0xf2d: 0x3c5d, 0xf2e: 0x239d, 0xf2f: 0x3c7d, + 0xf30: 0x3c9d, 0xf31: 0x3939, 0xf32: 0x3951, 0xf33: 0x3969, 0xf34: 0x3981, 0xf35: 0x3999, + 0xf36: 0x39b1, 0xf37: 0x39c9, 0xf38: 0x39e1, 0xf39: 0x39f9, 0xf3a: 0x3a11, 0xf3b: 0x3a29, + 0xf3c: 0x3a41, 0xf3d: 0x3a59, 0xf3e: 0x3a71, 0xf3f: 0x3a89, + // Block 0x3d, offset 0xf40 + 0xf40: 0x3aa1, 0xf41: 0x3ac9, 0xf42: 0x3af1, 0xf43: 0x3b19, 0xf44: 0x3b41, 0xf45: 0x3b69, + 0xf46: 0x3b91, 0xf47: 0x3bb9, 0xf48: 0x3be1, 0xf49: 0x3c09, 0xf4a: 0x3c39, 0xf4b: 0x3c69, + 0xf4c: 0x3c99, 0xf4d: 0x3cbd, 0xf4e: 0x3cb1, 0xf4f: 0x3cdd, 0xf50: 0x3cfd, 0xf51: 0x3d15, + 0xf52: 0x3d2d, 0xf53: 0x3d45, 0xf54: 0x3d5d, 0xf55: 0x3d5d, 0xf56: 0x3d45, 0xf57: 0x3d75, + 0xf58: 0x07bd, 0xf59: 0x3d8d, 0xf5a: 0x3da5, 0xf5b: 0x3dbd, 0xf5c: 0x3dd5, 0xf5d: 0x3ded, + 0xf5e: 0x3e05, 0xf5f: 0x3e1d, 0xf60: 0x3e35, 0xf61: 0x3e4d, 0xf62: 0x3e65, 0xf63: 0x3e7d, + 0xf64: 0x3e95, 0xf65: 0x3e95, 0xf66: 0x3ead, 0xf67: 0x3ead, 0xf68: 0x3ec5, 0xf69: 0x3ec5, + 0xf6a: 0x3edd, 0xf6b: 0x3ef5, 0xf6c: 0x3f0d, 0xf6d: 0x3f25, 0xf6e: 0x3f3d, 0xf6f: 0x3f3d, + 0xf70: 0x3f55, 0xf71: 0x3f55, 0xf72: 0x3f55, 0xf73: 0x3f6d, 0xf74: 0x3f85, 0xf75: 0x3f9d, + 0xf76: 0x3fb5, 0xf77: 0x3f9d, 0xf78: 0x3fcd, 0xf79: 0x3fe5, 0xf7a: 0x3f6d, 0xf7b: 0x3ffd, + 0xf7c: 0x4015, 0xf7d: 0x4015, 0xf7e: 0x4015, 0xf7f: 0x0040, + // Block 0x3e, offset 0xf80 + 0xf80: 0x3cc9, 0xf81: 0x3d31, 0xf82: 0x3d99, 0xf83: 0x3e01, 0xf84: 0x3e51, 0xf85: 0x3eb9, + 0xf86: 0x3f09, 0xf87: 0x3f59, 0xf88: 0x3fd9, 0xf89: 0x4041, 0xf8a: 0x4091, 0xf8b: 0x40e1, + 0xf8c: 0x4131, 0xf8d: 0x4199, 0xf8e: 0x4201, 0xf8f: 0x4251, 0xf90: 0x42a1, 0xf91: 0x42d9, + 0xf92: 0x4329, 0xf93: 0x4391, 0xf94: 0x43f9, 0xf95: 0x4431, 0xf96: 0x44b1, 0xf97: 0x4549, + 0xf98: 0x45c9, 0xf99: 0x4619, 0xf9a: 0x4699, 0xf9b: 0x4719, 0xf9c: 0x4781, 0xf9d: 0x47d1, + 0xf9e: 0x4821, 0xf9f: 0x4871, 0xfa0: 0x48d9, 0xfa1: 0x4959, 0xfa2: 0x49c1, 0xfa3: 0x4a11, + 0xfa4: 0x4a61, 0xfa5: 0x4ab1, 0xfa6: 0x4ae9, 0xfa7: 0x4b21, 0xfa8: 0x4b59, 0xfa9: 0x4b91, + 0xfaa: 0x4be1, 0xfab: 0x4c31, 0xfac: 0x4cb1, 0xfad: 0x4d01, 0xfae: 0x4d69, 0xfaf: 0x4de9, + 0xfb0: 0x4e39, 0xfb1: 0x4e71, 0xfb2: 0x4ea9, 0xfb3: 0x4f29, 0xfb4: 0x4f91, 0xfb5: 0x5011, + 0xfb6: 0x5061, 0xfb7: 0x50e1, 0xfb8: 0x5119, 0xfb9: 0x5169, 0xfba: 0x51b9, 0xfbb: 0x5209, + 0xfbc: 0x5259, 0xfbd: 0x52a9, 0xfbe: 0x5311, 0xfbf: 0x5361, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x5399, 0xfc1: 0x53e9, 0xfc2: 0x5439, 0xfc3: 0x5489, 0xfc4: 0x54f1, 0xfc5: 0x5541, + 0xfc6: 0x5591, 0xfc7: 0x55e1, 0xfc8: 0x5661, 0xfc9: 0x56c9, 0xfca: 0x5701, 0xfcb: 0x5781, + 0xfcc: 0x57b9, 0xfcd: 0x5821, 0xfce: 0x5889, 0xfcf: 0x58d9, 0xfd0: 0x5929, 0xfd1: 0x5979, + 0xfd2: 0x59e1, 0xfd3: 0x5a19, 0xfd4: 0x5a69, 0xfd5: 0x5ad1, 0xfd6: 0x5b09, 0xfd7: 0x5b89, + 0xfd8: 0x5bd9, 0xfd9: 0x5c01, 0xfda: 0x5c29, 0xfdb: 0x5c51, 0xfdc: 0x5c79, 0xfdd: 0x5ca1, + 0xfde: 0x5cc9, 0xfdf: 0x5cf1, 0xfe0: 0x5d19, 0xfe1: 0x5d41, 0xfe2: 0x5d69, 0xfe3: 0x5d99, + 0xfe4: 0x5dc9, 0xfe5: 0x5df9, 0xfe6: 0x5e29, 0xfe7: 0x5e59, 0xfe8: 0x5e89, 0xfe9: 0x5eb9, + 0xfea: 0x5ee9, 0xfeb: 0x5f19, 0xfec: 0x5f49, 0xfed: 0x5f79, 0xfee: 0x5fa9, 0xfef: 0x5fd9, + 0xff0: 0x6009, 0xff1: 0x402d, 0xff2: 0x6039, 0xff3: 0x6051, 0xff4: 0x404d, 0xff5: 0x6069, + 0xff6: 0x6081, 0xff7: 0x6099, 0xff8: 0x406d, 0xff9: 0x406d, 0xffa: 0x60b1, 0xffb: 0x60c9, + 0xffc: 0x6101, 0xffd: 0x6139, 0xffe: 0x6171, 0xfff: 0x61a9, + // Block 0x40, offset 0x1000 + 0x1000: 0x6211, 0x1001: 0x6229, 0x1002: 0x408d, 0x1003: 0x6241, 0x1004: 0x6259, 0x1005: 0x6271, + 0x1006: 0x6289, 0x1007: 0x62a1, 0x1008: 0x40ad, 0x1009: 0x62b9, 0x100a: 0x62e1, 0x100b: 0x62f9, + 0x100c: 0x40cd, 0x100d: 0x40cd, 0x100e: 0x6311, 0x100f: 0x6329, 0x1010: 0x6341, 0x1011: 0x40ed, + 0x1012: 0x410d, 0x1013: 0x412d, 0x1014: 0x414d, 0x1015: 0x416d, 0x1016: 0x6359, 0x1017: 0x6371, + 0x1018: 0x6389, 0x1019: 0x63a1, 0x101a: 0x63b9, 0x101b: 0x418d, 0x101c: 0x63d1, 0x101d: 0x63e9, + 0x101e: 0x6401, 0x101f: 0x41ad, 0x1020: 0x41cd, 0x1021: 0x6419, 0x1022: 0x41ed, 0x1023: 0x420d, + 0x1024: 0x422d, 0x1025: 0x6431, 0x1026: 0x424d, 0x1027: 0x6449, 0x1028: 0x6479, 0x1029: 0x6211, + 0x102a: 0x426d, 0x102b: 0x428d, 0x102c: 0x42ad, 0x102d: 0x42cd, 0x102e: 0x64b1, 0x102f: 0x64f1, + 0x1030: 0x6539, 0x1031: 0x6551, 0x1032: 0x42ed, 0x1033: 0x6569, 0x1034: 0x6581, 0x1035: 0x6599, + 0x1036: 0x430d, 0x1037: 0x65b1, 0x1038: 0x65c9, 0x1039: 0x65b1, 0x103a: 0x65e1, 0x103b: 0x65f9, + 0x103c: 0x432d, 0x103d: 0x6611, 0x103e: 0x6629, 0x103f: 0x6611, + // Block 0x41, offset 0x1040 + 0x1040: 0x434d, 0x1041: 0x436d, 0x1042: 0x0040, 0x1043: 0x6641, 0x1044: 0x6659, 0x1045: 0x6671, + 0x1046: 0x6689, 0x1047: 0x0040, 0x1048: 0x66c1, 0x1049: 0x66d9, 0x104a: 0x66f1, 0x104b: 0x6709, + 0x104c: 0x6721, 0x104d: 0x6739, 0x104e: 0x6401, 0x104f: 0x6751, 0x1050: 0x6769, 0x1051: 0x6781, + 0x1052: 0x438d, 0x1053: 0x6799, 0x1054: 0x6289, 0x1055: 0x43ad, 0x1056: 0x43cd, 0x1057: 0x67b1, + 0x1058: 0x0040, 0x1059: 0x43ed, 0x105a: 0x67c9, 0x105b: 0x67e1, 0x105c: 0x67f9, 0x105d: 0x6811, + 0x105e: 0x6829, 0x105f: 0x6859, 0x1060: 0x6889, 0x1061: 0x68b1, 0x1062: 0x68d9, 0x1063: 0x6901, + 0x1064: 0x6929, 0x1065: 0x6951, 0x1066: 0x6979, 0x1067: 0x69a1, 0x1068: 0x69c9, 0x1069: 0x69f1, + 0x106a: 0x6a21, 0x106b: 0x6a51, 0x106c: 0x6a81, 0x106d: 0x6ab1, 0x106e: 0x6ae1, 0x106f: 0x6b11, + 0x1070: 0x6b41, 0x1071: 0x6b71, 0x1072: 0x6ba1, 0x1073: 0x6bd1, 0x1074: 0x6c01, 0x1075: 0x6c31, + 0x1076: 0x6c61, 0x1077: 0x6c91, 0x1078: 0x6cc1, 0x1079: 0x6cf1, 0x107a: 0x6d21, 0x107b: 0x6d51, + 0x107c: 0x6d81, 0x107d: 0x6db1, 0x107e: 0x6de1, 0x107f: 0x440d, + // Block 0x42, offset 0x1080 + 0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008, + 0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008, + 0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008, + 0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008, + 0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008, + 0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008, + 0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008, + 0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x1308, + 0x10b0: 0x1318, 0x10b1: 0x1318, 0x10b2: 0x1318, 0x10b3: 0x0018, 0x10b4: 0x1308, 0x10b5: 0x1308, + 0x10b6: 0x1308, 0x10b7: 0x1308, 0x10b8: 0x1308, 0x10b9: 0x1308, 0x10ba: 0x1308, 0x10bb: 0x1308, + 0x10bc: 0x1308, 0x10bd: 0x1308, 0x10be: 0x0018, 0x10bf: 0x0008, + // Block 0x43, offset 0x10c0 + 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, + 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, + 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, + 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, + 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0x0ea1, 0x10dd: 0x6e11, + 0x10de: 0x1308, 0x10df: 0x1308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008, + 0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008, + 0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008, + 0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008, + 0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008, + 0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 0x10ff: 0x0008, + // Block 0x44, offset 0x1100 + 0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018, + 0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018, + 0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018, + 0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008, + 0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008, + 0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 0x1122: 0xe00d, 0x1123: 0x0008, + 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, + 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008, + 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008, + 0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008, + 0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 0x113f: 0x0008, + // Block 0x45, offset 0x1140 + 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, + 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, + 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, + 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, + 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008, + 0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 0x1162: 0xe00d, 0x1163: 0x0008, + 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, + 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, + 0x1170: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, + 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d, + 0x117c: 0x0008, 0x117d: 0x442d, 0x117e: 0xe00d, 0x117f: 0x0008, + // Block 0x46, offset 0x1180 + 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, + 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d, + 0x118c: 0x0008, 0x118d: 0x11d9, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, + 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, + 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, + 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, + 0x11aa: 0x6e29, 0x11ab: 0x1029, 0x11ac: 0x11c1, 0x11ad: 0x6e41, 0x11ae: 0x1221, 0x11af: 0x0040, + 0x11b0: 0x6e59, 0x11b1: 0x6e71, 0x11b2: 0x1239, 0x11b3: 0x444d, 0x11b4: 0xe00d, 0x11b5: 0x0008, + 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0x0040, 0x11b9: 0x0040, 0x11ba: 0x0040, 0x11bb: 0x0040, + 0x11bc: 0x0040, 0x11bd: 0x0040, 0x11be: 0x0040, 0x11bf: 0x0040, + // Block 0x47, offset 0x11c0 + 0x11c0: 0x64d5, 0x11c1: 0x64f5, 0x11c2: 0x6515, 0x11c3: 0x6535, 0x11c4: 0x6555, 0x11c5: 0x6575, + 0x11c6: 0x6595, 0x11c7: 0x65b5, 0x11c8: 0x65d5, 0x11c9: 0x65f5, 0x11ca: 0x6615, 0x11cb: 0x6635, + 0x11cc: 0x6655, 0x11cd: 0x6675, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x6695, 0x11d1: 0x0008, + 0x11d2: 0x66b5, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x66d5, 0x11d6: 0x66f5, 0x11d7: 0x6715, + 0x11d8: 0x6735, 0x11d9: 0x6755, 0x11da: 0x6775, 0x11db: 0x6795, 0x11dc: 0x67b5, 0x11dd: 0x67d5, + 0x11de: 0x67f5, 0x11df: 0x0008, 0x11e0: 0x6815, 0x11e1: 0x0008, 0x11e2: 0x6835, 0x11e3: 0x0008, + 0x11e4: 0x0008, 0x11e5: 0x6855, 0x11e6: 0x6875, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008, + 0x11ea: 0x6895, 0x11eb: 0x68b5, 0x11ec: 0x68d5, 0x11ed: 0x68f5, 0x11ee: 0x6915, 0x11ef: 0x6935, + 0x11f0: 0x6955, 0x11f1: 0x6975, 0x11f2: 0x6995, 0x11f3: 0x69b5, 0x11f4: 0x69d5, 0x11f5: 0x69f5, + 0x11f6: 0x6a15, 0x11f7: 0x6a35, 0x11f8: 0x6a55, 0x11f9: 0x6a75, 0x11fa: 0x6a95, 0x11fb: 0x6ab5, + 0x11fc: 0x6ad5, 0x11fd: 0x6af5, 0x11fe: 0x6b15, 0x11ff: 0x6b35, + // Block 0x48, offset 0x1200 + 0x1200: 0x7a95, 0x1201: 0x7ab5, 0x1202: 0x7ad5, 0x1203: 0x7af5, 0x1204: 0x7b15, 0x1205: 0x7b35, + 0x1206: 0x7b55, 0x1207: 0x7b75, 0x1208: 0x7b95, 0x1209: 0x7bb5, 0x120a: 0x7bd5, 0x120b: 0x7bf5, + 0x120c: 0x7c15, 0x120d: 0x7c35, 0x120e: 0x7c55, 0x120f: 0x6ec9, 0x1210: 0x6ef1, 0x1211: 0x6f19, + 0x1212: 0x7c75, 0x1213: 0x7c95, 0x1214: 0x7cb5, 0x1215: 0x6f41, 0x1216: 0x6f69, 0x1217: 0x6f91, + 0x1218: 0x7cd5, 0x1219: 0x7cf5, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040, + 0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040, + 0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040, + 0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040, + 0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040, + 0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, + 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, + // Block 0x49, offset 0x1240 + 0x1240: 0x6fb9, 0x1241: 0x6fd1, 0x1242: 0x6fe9, 0x1243: 0x7d15, 0x1244: 0x7d35, 0x1245: 0x7001, + 0x1246: 0x7001, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040, + 0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040, + 0x1252: 0x0040, 0x1253: 0x7019, 0x1254: 0x7041, 0x1255: 0x7069, 0x1256: 0x7091, 0x1257: 0x70b9, + 0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x70e1, + 0x125e: 0x1308, 0x125f: 0x7109, 0x1260: 0x7131, 0x1261: 0x20a9, 0x1262: 0x20f1, 0x1263: 0x7149, + 0x1264: 0x7161, 0x1265: 0x7179, 0x1266: 0x7191, 0x1267: 0x71a9, 0x1268: 0x71c1, 0x1269: 0x1fb2, + 0x126a: 0x71d9, 0x126b: 0x7201, 0x126c: 0x7229, 0x126d: 0x7261, 0x126e: 0x7299, 0x126f: 0x72c1, + 0x1270: 0x72e9, 0x1271: 0x7311, 0x1272: 0x7339, 0x1273: 0x7361, 0x1274: 0x7389, 0x1275: 0x73b1, + 0x1276: 0x73d9, 0x1277: 0x0040, 0x1278: 0x7401, 0x1279: 0x7429, 0x127a: 0x7451, 0x127b: 0x7479, + 0x127c: 0x74a1, 0x127d: 0x0040, 0x127e: 0x74c9, 0x127f: 0x0040, + // Block 0x4a, offset 0x1280 + 0x1280: 0x74f1, 0x1281: 0x7519, 0x1282: 0x0040, 0x1283: 0x7541, 0x1284: 0x7569, 0x1285: 0x0040, + 0x1286: 0x7591, 0x1287: 0x75b9, 0x1288: 0x75e1, 0x1289: 0x7609, 0x128a: 0x7631, 0x128b: 0x7659, + 0x128c: 0x7681, 0x128d: 0x76a9, 0x128e: 0x76d1, 0x128f: 0x76f9, 0x1290: 0x7721, 0x1291: 0x7721, + 0x1292: 0x7739, 0x1293: 0x7739, 0x1294: 0x7739, 0x1295: 0x7739, 0x1296: 0x7751, 0x1297: 0x7751, + 0x1298: 0x7751, 0x1299: 0x7751, 0x129a: 0x7769, 0x129b: 0x7769, 0x129c: 0x7769, 0x129d: 0x7769, + 0x129e: 0x7781, 0x129f: 0x7781, 0x12a0: 0x7781, 0x12a1: 0x7781, 0x12a2: 0x7799, 0x12a3: 0x7799, + 0x12a4: 0x7799, 0x12a5: 0x7799, 0x12a6: 0x77b1, 0x12a7: 0x77b1, 0x12a8: 0x77b1, 0x12a9: 0x77b1, + 0x12aa: 0x77c9, 0x12ab: 0x77c9, 0x12ac: 0x77c9, 0x12ad: 0x77c9, 0x12ae: 0x77e1, 0x12af: 0x77e1, + 0x12b0: 0x77e1, 0x12b1: 0x77e1, 0x12b2: 0x77f9, 0x12b3: 0x77f9, 0x12b4: 0x77f9, 0x12b5: 0x77f9, + 0x12b6: 0x7811, 0x12b7: 0x7811, 0x12b8: 0x7811, 0x12b9: 0x7811, 0x12ba: 0x7829, 0x12bb: 0x7829, + 0x12bc: 0x7829, 0x12bd: 0x7829, 0x12be: 0x7841, 0x12bf: 0x7841, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x7841, 0x12c1: 0x7841, 0x12c2: 0x7859, 0x12c3: 0x7859, 0x12c4: 0x7871, 0x12c5: 0x7871, + 0x12c6: 0x7889, 0x12c7: 0x7889, 0x12c8: 0x78a1, 0x12c9: 0x78a1, 0x12ca: 0x78b9, 0x12cb: 0x78b9, + 0x12cc: 0x78d1, 0x12cd: 0x78d1, 0x12ce: 0x78e9, 0x12cf: 0x78e9, 0x12d0: 0x78e9, 0x12d1: 0x78e9, + 0x12d2: 0x7901, 0x12d3: 0x7901, 0x12d4: 0x7901, 0x12d5: 0x7901, 0x12d6: 0x7919, 0x12d7: 0x7919, + 0x12d8: 0x7919, 0x12d9: 0x7919, 0x12da: 0x7931, 0x12db: 0x7931, 0x12dc: 0x7931, 0x12dd: 0x7931, + 0x12de: 0x7949, 0x12df: 0x7949, 0x12e0: 0x7961, 0x12e1: 0x7961, 0x12e2: 0x7961, 0x12e3: 0x7961, + 0x12e4: 0x7979, 0x12e5: 0x7979, 0x12e6: 0x7991, 0x12e7: 0x7991, 0x12e8: 0x7991, 0x12e9: 0x7991, + 0x12ea: 0x79a9, 0x12eb: 0x79a9, 0x12ec: 0x79a9, 0x12ed: 0x79a9, 0x12ee: 0x79c1, 0x12ef: 0x79c1, + 0x12f0: 0x79d9, 0x12f1: 0x79d9, 0x12f2: 0x0018, 0x12f3: 0x0018, 0x12f4: 0x0018, 0x12f5: 0x0018, + 0x12f6: 0x0018, 0x12f7: 0x0018, 0x12f8: 0x0018, 0x12f9: 0x0018, 0x12fa: 0x0018, 0x12fb: 0x0018, + 0x12fc: 0x0018, 0x12fd: 0x0018, 0x12fe: 0x0018, 0x12ff: 0x0018, + // Block 0x4c, offset 0x1300 + 0x1300: 0x0018, 0x1301: 0x0018, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040, + 0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040, + 0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040, + 0x1312: 0x0040, 0x1313: 0x79f1, 0x1314: 0x79f1, 0x1315: 0x79f1, 0x1316: 0x79f1, 0x1317: 0x7a09, + 0x1318: 0x7a09, 0x1319: 0x7a21, 0x131a: 0x7a21, 0x131b: 0x7a39, 0x131c: 0x7a39, 0x131d: 0x0479, + 0x131e: 0x7a51, 0x131f: 0x7a51, 0x1320: 0x7a69, 0x1321: 0x7a69, 0x1322: 0x7a81, 0x1323: 0x7a81, + 0x1324: 0x7a99, 0x1325: 0x7a99, 0x1326: 0x7a99, 0x1327: 0x7a99, 0x1328: 0x7ab1, 0x1329: 0x7ab1, + 0x132a: 0x7ac9, 0x132b: 0x7ac9, 0x132c: 0x7af1, 0x132d: 0x7af1, 0x132e: 0x7b19, 0x132f: 0x7b19, + 0x1330: 0x7b41, 0x1331: 0x7b41, 0x1332: 0x7b69, 0x1333: 0x7b69, 0x1334: 0x7b91, 0x1335: 0x7b91, + 0x1336: 0x7bb9, 0x1337: 0x7bb9, 0x1338: 0x7bb9, 0x1339: 0x7be1, 0x133a: 0x7be1, 0x133b: 0x7be1, + 0x133c: 0x7c09, 0x133d: 0x7c09, 0x133e: 0x7c09, 0x133f: 0x7c09, + // Block 0x4d, offset 0x1340 + 0x1340: 0x85f9, 0x1341: 0x8621, 0x1342: 0x8649, 0x1343: 0x8671, 0x1344: 0x8699, 0x1345: 0x86c1, + 0x1346: 0x86e9, 0x1347: 0x8711, 0x1348: 0x8739, 0x1349: 0x8761, 0x134a: 0x8789, 0x134b: 0x87b1, + 0x134c: 0x87d9, 0x134d: 0x8801, 0x134e: 0x8829, 0x134f: 0x8851, 0x1350: 0x8879, 0x1351: 0x88a1, + 0x1352: 0x88c9, 0x1353: 0x88f1, 0x1354: 0x8919, 0x1355: 0x8941, 0x1356: 0x8969, 0x1357: 0x8991, + 0x1358: 0x89b9, 0x1359: 0x89e1, 0x135a: 0x8a09, 0x135b: 0x8a31, 0x135c: 0x8a59, 0x135d: 0x8a81, + 0x135e: 0x8aaa, 0x135f: 0x8ada, 0x1360: 0x8b0a, 0x1361: 0x8b3a, 0x1362: 0x8b6a, 0x1363: 0x8b9a, + 0x1364: 0x8bc9, 0x1365: 0x8bf1, 0x1366: 0x7c71, 0x1367: 0x8c19, 0x1368: 0x7be1, 0x1369: 0x7c99, + 0x136a: 0x8c41, 0x136b: 0x8c69, 0x136c: 0x7d39, 0x136d: 0x8c91, 0x136e: 0x7d61, 0x136f: 0x7d89, + 0x1370: 0x8cb9, 0x1371: 0x8ce1, 0x1372: 0x7e29, 0x1373: 0x8d09, 0x1374: 0x7e51, 0x1375: 0x7e79, + 0x1376: 0x8d31, 0x1377: 0x8d59, 0x1378: 0x7ec9, 0x1379: 0x8d81, 0x137a: 0x7ef1, 0x137b: 0x7f19, + 0x137c: 0x83a1, 0x137d: 0x83c9, 0x137e: 0x8441, 0x137f: 0x8469, + // Block 0x4e, offset 0x1380 + 0x1380: 0x8491, 0x1381: 0x8531, 0x1382: 0x8559, 0x1383: 0x8581, 0x1384: 0x85a9, 0x1385: 0x8649, + 0x1386: 0x8671, 0x1387: 0x8699, 0x1388: 0x8da9, 0x1389: 0x8739, 0x138a: 0x8dd1, 0x138b: 0x8df9, + 0x138c: 0x8829, 0x138d: 0x8e21, 0x138e: 0x8851, 0x138f: 0x8879, 0x1390: 0x8a81, 0x1391: 0x8e49, + 0x1392: 0x8e71, 0x1393: 0x89b9, 0x1394: 0x8e99, 0x1395: 0x89e1, 0x1396: 0x8a09, 0x1397: 0x7c21, + 0x1398: 0x7c49, 0x1399: 0x8ec1, 0x139a: 0x7c71, 0x139b: 0x8ee9, 0x139c: 0x7cc1, 0x139d: 0x7ce9, + 0x139e: 0x7d11, 0x139f: 0x7d39, 0x13a0: 0x8f11, 0x13a1: 0x7db1, 0x13a2: 0x7dd9, 0x13a3: 0x7e01, + 0x13a4: 0x7e29, 0x13a5: 0x8f39, 0x13a6: 0x7ec9, 0x13a7: 0x7f41, 0x13a8: 0x7f69, 0x13a9: 0x7f91, + 0x13aa: 0x7fb9, 0x13ab: 0x7fe1, 0x13ac: 0x8031, 0x13ad: 0x8059, 0x13ae: 0x8081, 0x13af: 0x80a9, + 0x13b0: 0x80d1, 0x13b1: 0x80f9, 0x13b2: 0x8f61, 0x13b3: 0x8121, 0x13b4: 0x8149, 0x13b5: 0x8171, + 0x13b6: 0x8199, 0x13b7: 0x81c1, 0x13b8: 0x81e9, 0x13b9: 0x8239, 0x13ba: 0x8261, 0x13bb: 0x8289, + 0x13bc: 0x82b1, 0x13bd: 0x82d9, 0x13be: 0x8301, 0x13bf: 0x8329, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x8351, 0x13c1: 0x8379, 0x13c2: 0x83f1, 0x13c3: 0x8419, 0x13c4: 0x84b9, 0x13c5: 0x84e1, + 0x13c6: 0x8509, 0x13c7: 0x8531, 0x13c8: 0x8559, 0x13c9: 0x85d1, 0x13ca: 0x85f9, 0x13cb: 0x8621, + 0x13cc: 0x8649, 0x13cd: 0x8f89, 0x13ce: 0x86c1, 0x13cf: 0x86e9, 0x13d0: 0x8711, 0x13d1: 0x8739, + 0x13d2: 0x87b1, 0x13d3: 0x87d9, 0x13d4: 0x8801, 0x13d5: 0x8829, 0x13d6: 0x8fb1, 0x13d7: 0x88a1, + 0x13d8: 0x88c9, 0x13d9: 0x8fd9, 0x13da: 0x8941, 0x13db: 0x8969, 0x13dc: 0x8991, 0x13dd: 0x89b9, + 0x13de: 0x9001, 0x13df: 0x7c71, 0x13e0: 0x8ee9, 0x13e1: 0x7d39, 0x13e2: 0x8f11, 0x13e3: 0x7e29, + 0x13e4: 0x8f39, 0x13e5: 0x7ec9, 0x13e6: 0x9029, 0x13e7: 0x80d1, 0x13e8: 0x9051, 0x13e9: 0x9079, + 0x13ea: 0x90a1, 0x13eb: 0x8531, 0x13ec: 0x8559, 0x13ed: 0x8649, 0x13ee: 0x8829, 0x13ef: 0x8fb1, + 0x13f0: 0x89b9, 0x13f1: 0x9001, 0x13f2: 0x90c9, 0x13f3: 0x9101, 0x13f4: 0x9139, 0x13f5: 0x9171, + 0x13f6: 0x9199, 0x13f7: 0x91c1, 0x13f8: 0x91e9, 0x13f9: 0x9211, 0x13fa: 0x9239, 0x13fb: 0x9261, + 0x13fc: 0x9289, 0x13fd: 0x92b1, 0x13fe: 0x92d9, 0x13ff: 0x9301, + // Block 0x50, offset 0x1400 + 0x1400: 0x9329, 0x1401: 0x9351, 0x1402: 0x9379, 0x1403: 0x93a1, 0x1404: 0x93c9, 0x1405: 0x93f1, + 0x1406: 0x9419, 0x1407: 0x9441, 0x1408: 0x9469, 0x1409: 0x9491, 0x140a: 0x94b9, 0x140b: 0x94e1, + 0x140c: 0x9079, 0x140d: 0x9509, 0x140e: 0x9531, 0x140f: 0x9559, 0x1410: 0x9581, 0x1411: 0x9171, + 0x1412: 0x9199, 0x1413: 0x91c1, 0x1414: 0x91e9, 0x1415: 0x9211, 0x1416: 0x9239, 0x1417: 0x9261, + 0x1418: 0x9289, 0x1419: 0x92b1, 0x141a: 0x92d9, 0x141b: 0x9301, 0x141c: 0x9329, 0x141d: 0x9351, + 0x141e: 0x9379, 0x141f: 0x93a1, 0x1420: 0x93c9, 0x1421: 0x93f1, 0x1422: 0x9419, 0x1423: 0x9441, + 0x1424: 0x9469, 0x1425: 0x9491, 0x1426: 0x94b9, 0x1427: 0x94e1, 0x1428: 0x9079, 0x1429: 0x9509, + 0x142a: 0x9531, 0x142b: 0x9559, 0x142c: 0x9581, 0x142d: 0x9491, 0x142e: 0x94b9, 0x142f: 0x94e1, + 0x1430: 0x9079, 0x1431: 0x9051, 0x1432: 0x90a1, 0x1433: 0x8211, 0x1434: 0x8059, 0x1435: 0x8081, + 0x1436: 0x80a9, 0x1437: 0x9491, 0x1438: 0x94b9, 0x1439: 0x94e1, 0x143a: 0x8211, 0x143b: 0x8239, + 0x143c: 0x95a9, 0x143d: 0x95a9, 0x143e: 0x0018, 0x143f: 0x0018, + // Block 0x51, offset 0x1440 + 0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040, + 0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040, + 0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x95d1, 0x1451: 0x9609, + 0x1452: 0x9609, 0x1453: 0x9641, 0x1454: 0x9679, 0x1455: 0x96b1, 0x1456: 0x96e9, 0x1457: 0x9721, + 0x1458: 0x9759, 0x1459: 0x9759, 0x145a: 0x9791, 0x145b: 0x97c9, 0x145c: 0x9801, 0x145d: 0x9839, + 0x145e: 0x9871, 0x145f: 0x98a9, 0x1460: 0x98a9, 0x1461: 0x98e1, 0x1462: 0x9919, 0x1463: 0x9919, + 0x1464: 0x9951, 0x1465: 0x9951, 0x1466: 0x9989, 0x1467: 0x99c1, 0x1468: 0x99c1, 0x1469: 0x99f9, + 0x146a: 0x9a31, 0x146b: 0x9a31, 0x146c: 0x9a69, 0x146d: 0x9a69, 0x146e: 0x9aa1, 0x146f: 0x9ad9, + 0x1470: 0x9ad9, 0x1471: 0x9b11, 0x1472: 0x9b11, 0x1473: 0x9b49, 0x1474: 0x9b81, 0x1475: 0x9bb9, + 0x1476: 0x9bf1, 0x1477: 0x9bf1, 0x1478: 0x9c29, 0x1479: 0x9c61, 0x147a: 0x9c99, 0x147b: 0x9cd1, + 0x147c: 0x9d09, 0x147d: 0x9d09, 0x147e: 0x9d41, 0x147f: 0x9d79, + // Block 0x52, offset 0x1480 + 0x1480: 0xa949, 0x1481: 0xa981, 0x1482: 0xa9b9, 0x1483: 0xa8a1, 0x1484: 0x9bb9, 0x1485: 0x9989, + 0x1486: 0xa9f1, 0x1487: 0xaa29, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, + 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040, + 0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040, + 0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040, + 0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040, + 0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040, + 0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040, + 0x14b0: 0xaa61, 0x14b1: 0xaa99, 0x14b2: 0xaad1, 0x14b3: 0xab19, 0x14b4: 0xab61, 0x14b5: 0xaba9, + 0x14b6: 0xabf1, 0x14b7: 0xac39, 0x14b8: 0xac81, 0x14b9: 0xacc9, 0x14ba: 0xad02, 0x14bb: 0xae12, + 0x14bc: 0xae91, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x13c0, 0x14c1: 0x13c0, 0x14c2: 0x13c0, 0x14c3: 0x13c0, 0x14c4: 0x13c0, 0x14c5: 0x13c0, + 0x14c6: 0x13c0, 0x14c7: 0x13c0, 0x14c8: 0x13c0, 0x14c9: 0x13c0, 0x14ca: 0x13c0, 0x14cb: 0x13c0, + 0x14cc: 0x13c0, 0x14cd: 0x13c0, 0x14ce: 0x13c0, 0x14cf: 0x13c0, 0x14d0: 0xaeda, 0x14d1: 0x7d55, + 0x14d2: 0x0040, 0x14d3: 0xaeea, 0x14d4: 0x03c2, 0x14d5: 0xaefa, 0x14d6: 0xaf0a, 0x14d7: 0x7d75, + 0x14d8: 0x7d95, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, + 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x1308, 0x14e1: 0x1308, 0x14e2: 0x1308, 0x14e3: 0x1308, + 0x14e4: 0x1308, 0x14e5: 0x1308, 0x14e6: 0x1308, 0x14e7: 0x1308, 0x14e8: 0x1308, 0x14e9: 0x1308, + 0x14ea: 0x1308, 0x14eb: 0x1308, 0x14ec: 0x1308, 0x14ed: 0x1308, 0x14ee: 0x1308, 0x14ef: 0x1308, + 0x14f0: 0x0040, 0x14f1: 0x7db5, 0x14f2: 0x7dd5, 0x14f3: 0xaf1a, 0x14f4: 0xaf1a, 0x14f5: 0x1fd2, + 0x14f6: 0x1fe2, 0x14f7: 0xaf2a, 0x14f8: 0xaf3a, 0x14f9: 0x7df5, 0x14fa: 0x7e15, 0x14fb: 0x7e35, + 0x14fc: 0x7df5, 0x14fd: 0x7e55, 0x14fe: 0x7e75, 0x14ff: 0x7e55, + // Block 0x54, offset 0x1500 + 0x1500: 0x7e95, 0x1501: 0x7eb5, 0x1502: 0x7ed5, 0x1503: 0x7eb5, 0x1504: 0x7ef5, 0x1505: 0x0018, + 0x1506: 0x0018, 0x1507: 0xaf4a, 0x1508: 0xaf5a, 0x1509: 0x7f16, 0x150a: 0x7f36, 0x150b: 0x7f56, + 0x150c: 0x7f76, 0x150d: 0xaf1a, 0x150e: 0xaf1a, 0x150f: 0xaf1a, 0x1510: 0xaeda, 0x1511: 0x7f95, + 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x03c2, 0x1515: 0xaeea, 0x1516: 0xaf0a, 0x1517: 0xaefa, + 0x1518: 0x7fb5, 0x1519: 0x1fd2, 0x151a: 0x1fe2, 0x151b: 0xaf2a, 0x151c: 0xaf3a, 0x151d: 0x7e95, + 0x151e: 0x7ef5, 0x151f: 0xaf6a, 0x1520: 0xaf7a, 0x1521: 0xaf8a, 0x1522: 0x1fb2, 0x1523: 0xaf99, + 0x1524: 0xafaa, 0x1525: 0xafba, 0x1526: 0x1fc2, 0x1527: 0x0040, 0x1528: 0xafca, 0x1529: 0xafda, + 0x152a: 0xafea, 0x152b: 0xaffa, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, + 0x1530: 0x7fd6, 0x1531: 0xb009, 0x1532: 0x7ff6, 0x1533: 0x0008, 0x1534: 0x8016, 0x1535: 0x0040, + 0x1536: 0x8036, 0x1537: 0xb031, 0x1538: 0x8056, 0x1539: 0xb059, 0x153a: 0x8076, 0x153b: 0xb081, + 0x153c: 0x8096, 0x153d: 0xb0a9, 0x153e: 0x80b6, 0x153f: 0xb0d1, + // Block 0x55, offset 0x1540 + 0x1540: 0xb0f9, 0x1541: 0xb111, 0x1542: 0xb111, 0x1543: 0xb129, 0x1544: 0xb129, 0x1545: 0xb141, + 0x1546: 0xb141, 0x1547: 0xb159, 0x1548: 0xb159, 0x1549: 0xb171, 0x154a: 0xb171, 0x154b: 0xb171, + 0x154c: 0xb171, 0x154d: 0xb189, 0x154e: 0xb189, 0x154f: 0xb1a1, 0x1550: 0xb1a1, 0x1551: 0xb1a1, + 0x1552: 0xb1a1, 0x1553: 0xb1b9, 0x1554: 0xb1b9, 0x1555: 0xb1d1, 0x1556: 0xb1d1, 0x1557: 0xb1d1, + 0x1558: 0xb1d1, 0x1559: 0xb1e9, 0x155a: 0xb1e9, 0x155b: 0xb1e9, 0x155c: 0xb1e9, 0x155d: 0xb201, + 0x155e: 0xb201, 0x155f: 0xb201, 0x1560: 0xb201, 0x1561: 0xb219, 0x1562: 0xb219, 0x1563: 0xb219, + 0x1564: 0xb219, 0x1565: 0xb231, 0x1566: 0xb231, 0x1567: 0xb231, 0x1568: 0xb231, 0x1569: 0xb249, + 0x156a: 0xb249, 0x156b: 0xb261, 0x156c: 0xb261, 0x156d: 0xb279, 0x156e: 0xb279, 0x156f: 0xb291, + 0x1570: 0xb291, 0x1571: 0xb2a9, 0x1572: 0xb2a9, 0x1573: 0xb2a9, 0x1574: 0xb2a9, 0x1575: 0xb2c1, + 0x1576: 0xb2c1, 0x1577: 0xb2c1, 0x1578: 0xb2c1, 0x1579: 0xb2d9, 0x157a: 0xb2d9, 0x157b: 0xb2d9, + 0x157c: 0xb2d9, 0x157d: 0xb2f1, 0x157e: 0xb2f1, 0x157f: 0xb2f1, + // Block 0x56, offset 0x1580 + 0x1580: 0xb2f1, 0x1581: 0xb309, 0x1582: 0xb309, 0x1583: 0xb309, 0x1584: 0xb309, 0x1585: 0xb321, + 0x1586: 0xb321, 0x1587: 0xb321, 0x1588: 0xb321, 0x1589: 0xb339, 0x158a: 0xb339, 0x158b: 0xb339, + 0x158c: 0xb339, 0x158d: 0xb351, 0x158e: 0xb351, 0x158f: 0xb351, 0x1590: 0xb351, 0x1591: 0xb369, + 0x1592: 0xb369, 0x1593: 0xb369, 0x1594: 0xb369, 0x1595: 0xb381, 0x1596: 0xb381, 0x1597: 0xb381, + 0x1598: 0xb381, 0x1599: 0xb399, 0x159a: 0xb399, 0x159b: 0xb399, 0x159c: 0xb399, 0x159d: 0xb3b1, + 0x159e: 0xb3b1, 0x159f: 0xb3b1, 0x15a0: 0xb3b1, 0x15a1: 0xb3c9, 0x15a2: 0xb3c9, 0x15a3: 0xb3c9, + 0x15a4: 0xb3c9, 0x15a5: 0xb3e1, 0x15a6: 0xb3e1, 0x15a7: 0xb3e1, 0x15a8: 0xb3e1, 0x15a9: 0xb3f9, + 0x15aa: 0xb3f9, 0x15ab: 0xb3f9, 0x15ac: 0xb3f9, 0x15ad: 0xb411, 0x15ae: 0xb411, 0x15af: 0x7ab1, + 0x15b0: 0x7ab1, 0x15b1: 0xb429, 0x15b2: 0xb429, 0x15b3: 0xb429, 0x15b4: 0xb429, 0x15b5: 0xb441, + 0x15b6: 0xb441, 0x15b7: 0xb469, 0x15b8: 0xb469, 0x15b9: 0xb491, 0x15ba: 0xb491, 0x15bb: 0xb4b9, + 0x15bc: 0xb4b9, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x0040, 0x15c1: 0xaefa, 0x15c2: 0xb4e2, 0x15c3: 0xaf6a, 0x15c4: 0xafda, 0x15c5: 0xafea, + 0x15c6: 0xaf7a, 0x15c7: 0xb4f2, 0x15c8: 0x1fd2, 0x15c9: 0x1fe2, 0x15ca: 0xaf8a, 0x15cb: 0x1fb2, + 0x15cc: 0xaeda, 0x15cd: 0xaf99, 0x15ce: 0x29d1, 0x15cf: 0xb502, 0x15d0: 0x1f41, 0x15d1: 0x00c9, + 0x15d2: 0x0069, 0x15d3: 0x0079, 0x15d4: 0x1f51, 0x15d5: 0x1f61, 0x15d6: 0x1f71, 0x15d7: 0x1f81, + 0x15d8: 0x1f91, 0x15d9: 0x1fa1, 0x15da: 0xaeea, 0x15db: 0x03c2, 0x15dc: 0xafaa, 0x15dd: 0x1fc2, + 0x15de: 0xafba, 0x15df: 0xaf0a, 0x15e0: 0xaffa, 0x15e1: 0x0039, 0x15e2: 0x0ee9, 0x15e3: 0x1159, + 0x15e4: 0x0ef9, 0x15e5: 0x0f09, 0x15e6: 0x1199, 0x15e7: 0x0f31, 0x15e8: 0x0249, 0x15e9: 0x0f41, + 0x15ea: 0x0259, 0x15eb: 0x0f51, 0x15ec: 0x0359, 0x15ed: 0x0f61, 0x15ee: 0x0f71, 0x15ef: 0x00d9, + 0x15f0: 0x0f99, 0x15f1: 0x2039, 0x15f2: 0x0269, 0x15f3: 0x01d9, 0x15f4: 0x0fa9, 0x15f5: 0x0fb9, + 0x15f6: 0x1089, 0x15f7: 0x0279, 0x15f8: 0x0369, 0x15f9: 0x0289, 0x15fa: 0x13d1, 0x15fb: 0xaf4a, + 0x15fc: 0xafca, 0x15fd: 0xaf5a, 0x15fe: 0xb512, 0x15ff: 0xaf1a, + // Block 0x58, offset 0x1600 + 0x1600: 0x1caa, 0x1601: 0x0039, 0x1602: 0x0ee9, 0x1603: 0x1159, 0x1604: 0x0ef9, 0x1605: 0x0f09, + 0x1606: 0x1199, 0x1607: 0x0f31, 0x1608: 0x0249, 0x1609: 0x0f41, 0x160a: 0x0259, 0x160b: 0x0f51, + 0x160c: 0x0359, 0x160d: 0x0f61, 0x160e: 0x0f71, 0x160f: 0x00d9, 0x1610: 0x0f99, 0x1611: 0x2039, + 0x1612: 0x0269, 0x1613: 0x01d9, 0x1614: 0x0fa9, 0x1615: 0x0fb9, 0x1616: 0x1089, 0x1617: 0x0279, + 0x1618: 0x0369, 0x1619: 0x0289, 0x161a: 0x13d1, 0x161b: 0xaf2a, 0x161c: 0xb522, 0x161d: 0xaf3a, + 0x161e: 0xb532, 0x161f: 0x80d5, 0x1620: 0x80f5, 0x1621: 0x29d1, 0x1622: 0x8115, 0x1623: 0x8115, + 0x1624: 0x8135, 0x1625: 0x8155, 0x1626: 0x8175, 0x1627: 0x8195, 0x1628: 0x81b5, 0x1629: 0x81d5, + 0x162a: 0x81f5, 0x162b: 0x8215, 0x162c: 0x8235, 0x162d: 0x8255, 0x162e: 0x8275, 0x162f: 0x8295, + 0x1630: 0x82b5, 0x1631: 0x82d5, 0x1632: 0x82f5, 0x1633: 0x8315, 0x1634: 0x8335, 0x1635: 0x8355, + 0x1636: 0x8375, 0x1637: 0x8395, 0x1638: 0x83b5, 0x1639: 0x83d5, 0x163a: 0x83f5, 0x163b: 0x8415, + 0x163c: 0x81b5, 0x163d: 0x8435, 0x163e: 0x8455, 0x163f: 0x8215, + // Block 0x59, offset 0x1640 + 0x1640: 0x8475, 0x1641: 0x8495, 0x1642: 0x84b5, 0x1643: 0x84d5, 0x1644: 0x84f5, 0x1645: 0x8515, + 0x1646: 0x8535, 0x1647: 0x8555, 0x1648: 0x84d5, 0x1649: 0x8575, 0x164a: 0x84d5, 0x164b: 0x8595, + 0x164c: 0x8595, 0x164d: 0x85b5, 0x164e: 0x85b5, 0x164f: 0x85d5, 0x1650: 0x8515, 0x1651: 0x85f5, + 0x1652: 0x8615, 0x1653: 0x85f5, 0x1654: 0x8635, 0x1655: 0x8615, 0x1656: 0x8655, 0x1657: 0x8655, + 0x1658: 0x8675, 0x1659: 0x8675, 0x165a: 0x8695, 0x165b: 0x8695, 0x165c: 0x8615, 0x165d: 0x8115, + 0x165e: 0x86b5, 0x165f: 0x86d5, 0x1660: 0x0040, 0x1661: 0x86f5, 0x1662: 0x8715, 0x1663: 0x8735, + 0x1664: 0x8755, 0x1665: 0x8735, 0x1666: 0x8775, 0x1667: 0x8795, 0x1668: 0x87b5, 0x1669: 0x87b5, + 0x166a: 0x87d5, 0x166b: 0x87d5, 0x166c: 0x87f5, 0x166d: 0x87f5, 0x166e: 0x87d5, 0x166f: 0x87d5, + 0x1670: 0x8815, 0x1671: 0x8835, 0x1672: 0x8855, 0x1673: 0x8875, 0x1674: 0x8895, 0x1675: 0x88b5, + 0x1676: 0x88b5, 0x1677: 0x88b5, 0x1678: 0x88d5, 0x1679: 0x88d5, 0x167a: 0x88d5, 0x167b: 0x88d5, + 0x167c: 0x87b5, 0x167d: 0x87b5, 0x167e: 0x87b5, 0x167f: 0x0040, + // Block 0x5a, offset 0x1680 + 0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x8715, 0x1683: 0x86f5, 0x1684: 0x88f5, 0x1685: 0x86f5, + 0x1686: 0x8715, 0x1687: 0x86f5, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x8915, 0x168b: 0x8715, + 0x168c: 0x8935, 0x168d: 0x88f5, 0x168e: 0x8935, 0x168f: 0x8715, 0x1690: 0x0040, 0x1691: 0x0040, + 0x1692: 0x8955, 0x1693: 0x8975, 0x1694: 0x8875, 0x1695: 0x8935, 0x1696: 0x88f5, 0x1697: 0x8935, + 0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x8995, 0x169b: 0x89b5, 0x169c: 0x8995, 0x169d: 0x0040, + 0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0xb541, 0x16a1: 0xb559, 0x16a2: 0xb571, 0x16a3: 0x89d6, + 0x16a4: 0xb589, 0x16a5: 0xb5a1, 0x16a6: 0x89f5, 0x16a7: 0x0040, 0x16a8: 0x8a15, 0x16a9: 0x8a35, + 0x16aa: 0x8a55, 0x16ab: 0x8a35, 0x16ac: 0x8a75, 0x16ad: 0x8a95, 0x16ae: 0x8ab5, 0x16af: 0x0040, + 0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040, + 0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340, + 0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x0208, 0x16c1: 0x0208, 0x16c2: 0x0208, 0x16c3: 0x0208, 0x16c4: 0x0208, 0x16c5: 0x0408, + 0x16c6: 0x0008, 0x16c7: 0x0408, 0x16c8: 0x0018, 0x16c9: 0x0408, 0x16ca: 0x0408, 0x16cb: 0x0008, + 0x16cc: 0x0008, 0x16cd: 0x0108, 0x16ce: 0x0408, 0x16cf: 0x0408, 0x16d0: 0x0408, 0x16d1: 0x0408, + 0x16d2: 0x0408, 0x16d3: 0x0208, 0x16d4: 0x0208, 0x16d5: 0x0208, 0x16d6: 0x0208, 0x16d7: 0x0108, + 0x16d8: 0x0208, 0x16d9: 0x0208, 0x16da: 0x0208, 0x16db: 0x0208, 0x16dc: 0x0208, 0x16dd: 0x0408, + 0x16de: 0x0208, 0x16df: 0x0208, 0x16e0: 0x0208, 0x16e1: 0x0408, 0x16e2: 0x0008, 0x16e3: 0x0008, + 0x16e4: 0x0408, 0x16e5: 0x1308, 0x16e6: 0x1308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040, + 0x16ea: 0x0040, 0x16eb: 0x0218, 0x16ec: 0x0218, 0x16ed: 0x0218, 0x16ee: 0x0218, 0x16ef: 0x0418, + 0x16f0: 0x0018, 0x16f1: 0x0018, 0x16f2: 0x0018, 0x16f3: 0x0018, 0x16f4: 0x0018, 0x16f5: 0x0018, + 0x16f6: 0x0018, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040, + 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, + // Block 0x5c, offset 0x1700 + 0x1700: 0x0208, 0x1701: 0x0408, 0x1702: 0x0208, 0x1703: 0x0408, 0x1704: 0x0408, 0x1705: 0x0408, + 0x1706: 0x0208, 0x1707: 0x0208, 0x1708: 0x0208, 0x1709: 0x0408, 0x170a: 0x0208, 0x170b: 0x0208, + 0x170c: 0x0408, 0x170d: 0x0208, 0x170e: 0x0408, 0x170f: 0x0408, 0x1710: 0x0208, 0x1711: 0x0408, + 0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040, + 0x1718: 0x0040, 0x1719: 0x0018, 0x171a: 0x0018, 0x171b: 0x0018, 0x171c: 0x0018, 0x171d: 0x0040, + 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040, + 0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0418, + 0x172a: 0x0418, 0x172b: 0x0418, 0x172c: 0x0418, 0x172d: 0x0218, 0x172e: 0x0218, 0x172f: 0x0018, + 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, + 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, + 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, + // Block 0x5d, offset 0x1740 + 0x1740: 0x1308, 0x1741: 0x1308, 0x1742: 0x1008, 0x1743: 0x1008, 0x1744: 0x0040, 0x1745: 0x0008, + 0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008, + 0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040, + 0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008, + 0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008, + 0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008, + 0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040, + 0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008, + 0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008, + 0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x1308, 0x177d: 0x0008, 0x177e: 0x1008, 0x177f: 0x1008, + // Block 0x5e, offset 0x1780 + 0x1780: 0x1308, 0x1781: 0x1008, 0x1782: 0x1008, 0x1783: 0x1008, 0x1784: 0x1008, 0x1785: 0x0040, + 0x1786: 0x0040, 0x1787: 0x1008, 0x1788: 0x1008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x1008, + 0x178c: 0x1008, 0x178d: 0x1808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040, + 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x1008, + 0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008, + 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x1008, 0x17a3: 0x1008, + 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x1308, 0x17a7: 0x1308, 0x17a8: 0x1308, 0x17a9: 0x1308, + 0x17aa: 0x1308, 0x17ab: 0x1308, 0x17ac: 0x1308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040, + 0x17b0: 0x1308, 0x17b1: 0x1308, 0x17b2: 0x1308, 0x17b3: 0x1308, 0x17b4: 0x1308, 0x17b5: 0x0040, + 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, + 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x0039, 0x17c1: 0x0ee9, 0x17c2: 0x1159, 0x17c3: 0x0ef9, 0x17c4: 0x0f09, 0x17c5: 0x1199, + 0x17c6: 0x0f31, 0x17c7: 0x0249, 0x17c8: 0x0f41, 0x17c9: 0x0259, 0x17ca: 0x0f51, 0x17cb: 0x0359, + 0x17cc: 0x0f61, 0x17cd: 0x0f71, 0x17ce: 0x00d9, 0x17cf: 0x0f99, 0x17d0: 0x2039, 0x17d1: 0x0269, + 0x17d2: 0x01d9, 0x17d3: 0x0fa9, 0x17d4: 0x0fb9, 0x17d5: 0x1089, 0x17d6: 0x0279, 0x17d7: 0x0369, + 0x17d8: 0x0289, 0x17d9: 0x13d1, 0x17da: 0x0039, 0x17db: 0x0ee9, 0x17dc: 0x1159, 0x17dd: 0x0ef9, + 0x17de: 0x0f09, 0x17df: 0x1199, 0x17e0: 0x0f31, 0x17e1: 0x0249, 0x17e2: 0x0f41, 0x17e3: 0x0259, + 0x17e4: 0x0f51, 0x17e5: 0x0359, 0x17e6: 0x0f61, 0x17e7: 0x0f71, 0x17e8: 0x00d9, 0x17e9: 0x0f99, + 0x17ea: 0x2039, 0x17eb: 0x0269, 0x17ec: 0x01d9, 0x17ed: 0x0fa9, 0x17ee: 0x0fb9, 0x17ef: 0x1089, + 0x17f0: 0x0279, 0x17f1: 0x0369, 0x17f2: 0x0289, 0x17f3: 0x13d1, 0x17f4: 0x0039, 0x17f5: 0x0ee9, + 0x17f6: 0x1159, 0x17f7: 0x0ef9, 0x17f8: 0x0f09, 0x17f9: 0x1199, 0x17fa: 0x0f31, 0x17fb: 0x0249, + 0x17fc: 0x0f41, 0x17fd: 0x0259, 0x17fe: 0x0f51, 0x17ff: 0x0359, + // Block 0x60, offset 0x1800 + 0x1800: 0x0f61, 0x1801: 0x0f71, 0x1802: 0x00d9, 0x1803: 0x0f99, 0x1804: 0x2039, 0x1805: 0x0269, + 0x1806: 0x01d9, 0x1807: 0x0fa9, 0x1808: 0x0fb9, 0x1809: 0x1089, 0x180a: 0x0279, 0x180b: 0x0369, + 0x180c: 0x0289, 0x180d: 0x13d1, 0x180e: 0x0039, 0x180f: 0x0ee9, 0x1810: 0x1159, 0x1811: 0x0ef9, + 0x1812: 0x0f09, 0x1813: 0x1199, 0x1814: 0x0f31, 0x1815: 0x0040, 0x1816: 0x0f41, 0x1817: 0x0259, + 0x1818: 0x0f51, 0x1819: 0x0359, 0x181a: 0x0f61, 0x181b: 0x0f71, 0x181c: 0x00d9, 0x181d: 0x0f99, + 0x181e: 0x2039, 0x181f: 0x0269, 0x1820: 0x01d9, 0x1821: 0x0fa9, 0x1822: 0x0fb9, 0x1823: 0x1089, + 0x1824: 0x0279, 0x1825: 0x0369, 0x1826: 0x0289, 0x1827: 0x13d1, 0x1828: 0x0039, 0x1829: 0x0ee9, + 0x182a: 0x1159, 0x182b: 0x0ef9, 0x182c: 0x0f09, 0x182d: 0x1199, 0x182e: 0x0f31, 0x182f: 0x0249, + 0x1830: 0x0f41, 0x1831: 0x0259, 0x1832: 0x0f51, 0x1833: 0x0359, 0x1834: 0x0f61, 0x1835: 0x0f71, + 0x1836: 0x00d9, 0x1837: 0x0f99, 0x1838: 0x2039, 0x1839: 0x0269, 0x183a: 0x01d9, 0x183b: 0x0fa9, + 0x183c: 0x0fb9, 0x183d: 0x1089, 0x183e: 0x0279, 0x183f: 0x0369, + // Block 0x61, offset 0x1840 + 0x1840: 0x0289, 0x1841: 0x13d1, 0x1842: 0x0039, 0x1843: 0x0ee9, 0x1844: 0x1159, 0x1845: 0x0ef9, + 0x1846: 0x0f09, 0x1847: 0x1199, 0x1848: 0x0f31, 0x1849: 0x0249, 0x184a: 0x0f41, 0x184b: 0x0259, + 0x184c: 0x0f51, 0x184d: 0x0359, 0x184e: 0x0f61, 0x184f: 0x0f71, 0x1850: 0x00d9, 0x1851: 0x0f99, + 0x1852: 0x2039, 0x1853: 0x0269, 0x1854: 0x01d9, 0x1855: 0x0fa9, 0x1856: 0x0fb9, 0x1857: 0x1089, + 0x1858: 0x0279, 0x1859: 0x0369, 0x185a: 0x0289, 0x185b: 0x13d1, 0x185c: 0x0039, 0x185d: 0x0040, + 0x185e: 0x1159, 0x185f: 0x0ef9, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0f31, 0x1863: 0x0040, + 0x1864: 0x0040, 0x1865: 0x0259, 0x1866: 0x0f51, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0f71, + 0x186a: 0x00d9, 0x186b: 0x0f99, 0x186c: 0x2039, 0x186d: 0x0040, 0x186e: 0x01d9, 0x186f: 0x0fa9, + 0x1870: 0x0fb9, 0x1871: 0x1089, 0x1872: 0x0279, 0x1873: 0x0369, 0x1874: 0x0289, 0x1875: 0x13d1, + 0x1876: 0x0039, 0x1877: 0x0ee9, 0x1878: 0x1159, 0x1879: 0x0ef9, 0x187a: 0x0040, 0x187b: 0x1199, + 0x187c: 0x0040, 0x187d: 0x0249, 0x187e: 0x0f41, 0x187f: 0x0259, + // Block 0x62, offset 0x1880 + 0x1880: 0x0f51, 0x1881: 0x0359, 0x1882: 0x0f61, 0x1883: 0x0f71, 0x1884: 0x0040, 0x1885: 0x0f99, + 0x1886: 0x2039, 0x1887: 0x0269, 0x1888: 0x01d9, 0x1889: 0x0fa9, 0x188a: 0x0fb9, 0x188b: 0x1089, + 0x188c: 0x0279, 0x188d: 0x0369, 0x188e: 0x0289, 0x188f: 0x13d1, 0x1890: 0x0039, 0x1891: 0x0ee9, + 0x1892: 0x1159, 0x1893: 0x0ef9, 0x1894: 0x0f09, 0x1895: 0x1199, 0x1896: 0x0f31, 0x1897: 0x0249, + 0x1898: 0x0f41, 0x1899: 0x0259, 0x189a: 0x0f51, 0x189b: 0x0359, 0x189c: 0x0f61, 0x189d: 0x0f71, + 0x189e: 0x00d9, 0x189f: 0x0f99, 0x18a0: 0x2039, 0x18a1: 0x0269, 0x18a2: 0x01d9, 0x18a3: 0x0fa9, + 0x18a4: 0x0fb9, 0x18a5: 0x1089, 0x18a6: 0x0279, 0x18a7: 0x0369, 0x18a8: 0x0289, 0x18a9: 0x13d1, + 0x18aa: 0x0039, 0x18ab: 0x0ee9, 0x18ac: 0x1159, 0x18ad: 0x0ef9, 0x18ae: 0x0f09, 0x18af: 0x1199, + 0x18b0: 0x0f31, 0x18b1: 0x0249, 0x18b2: 0x0f41, 0x18b3: 0x0259, 0x18b4: 0x0f51, 0x18b5: 0x0359, + 0x18b6: 0x0f61, 0x18b7: 0x0f71, 0x18b8: 0x00d9, 0x18b9: 0x0f99, 0x18ba: 0x2039, 0x18bb: 0x0269, + 0x18bc: 0x01d9, 0x18bd: 0x0fa9, 0x18be: 0x0fb9, 0x18bf: 0x1089, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x0279, 0x18c1: 0x0369, 0x18c2: 0x0289, 0x18c3: 0x13d1, 0x18c4: 0x0039, 0x18c5: 0x0ee9, + 0x18c6: 0x0040, 0x18c7: 0x0ef9, 0x18c8: 0x0f09, 0x18c9: 0x1199, 0x18ca: 0x0f31, 0x18cb: 0x0040, + 0x18cc: 0x0040, 0x18cd: 0x0259, 0x18ce: 0x0f51, 0x18cf: 0x0359, 0x18d0: 0x0f61, 0x18d1: 0x0f71, + 0x18d2: 0x00d9, 0x18d3: 0x0f99, 0x18d4: 0x2039, 0x18d5: 0x0040, 0x18d6: 0x01d9, 0x18d7: 0x0fa9, + 0x18d8: 0x0fb9, 0x18d9: 0x1089, 0x18da: 0x0279, 0x18db: 0x0369, 0x18dc: 0x0289, 0x18dd: 0x0040, + 0x18de: 0x0039, 0x18df: 0x0ee9, 0x18e0: 0x1159, 0x18e1: 0x0ef9, 0x18e2: 0x0f09, 0x18e3: 0x1199, + 0x18e4: 0x0f31, 0x18e5: 0x0249, 0x18e6: 0x0f41, 0x18e7: 0x0259, 0x18e8: 0x0f51, 0x18e9: 0x0359, + 0x18ea: 0x0f61, 0x18eb: 0x0f71, 0x18ec: 0x00d9, 0x18ed: 0x0f99, 0x18ee: 0x2039, 0x18ef: 0x0269, + 0x18f0: 0x01d9, 0x18f1: 0x0fa9, 0x18f2: 0x0fb9, 0x18f3: 0x1089, 0x18f4: 0x0279, 0x18f5: 0x0369, + 0x18f6: 0x0289, 0x18f7: 0x13d1, 0x18f8: 0x0039, 0x18f9: 0x0ee9, 0x18fa: 0x0040, 0x18fb: 0x0ef9, + 0x18fc: 0x0f09, 0x18fd: 0x1199, 0x18fe: 0x0f31, 0x18ff: 0x0040, + // Block 0x64, offset 0x1900 + 0x1900: 0x0f41, 0x1901: 0x0259, 0x1902: 0x0f51, 0x1903: 0x0359, 0x1904: 0x0f61, 0x1905: 0x0040, + 0x1906: 0x00d9, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0040, 0x190a: 0x01d9, 0x190b: 0x0fa9, + 0x190c: 0x0fb9, 0x190d: 0x1089, 0x190e: 0x0279, 0x190f: 0x0369, 0x1910: 0x0289, 0x1911: 0x0040, + 0x1912: 0x0039, 0x1913: 0x0ee9, 0x1914: 0x1159, 0x1915: 0x0ef9, 0x1916: 0x0f09, 0x1917: 0x1199, + 0x1918: 0x0f31, 0x1919: 0x0249, 0x191a: 0x0f41, 0x191b: 0x0259, 0x191c: 0x0f51, 0x191d: 0x0359, + 0x191e: 0x0f61, 0x191f: 0x0f71, 0x1920: 0x00d9, 0x1921: 0x0f99, 0x1922: 0x2039, 0x1923: 0x0269, + 0x1924: 0x01d9, 0x1925: 0x0fa9, 0x1926: 0x0fb9, 0x1927: 0x1089, 0x1928: 0x0279, 0x1929: 0x0369, + 0x192a: 0x0289, 0x192b: 0x13d1, 0x192c: 0x0039, 0x192d: 0x0ee9, 0x192e: 0x1159, 0x192f: 0x0ef9, + 0x1930: 0x0f09, 0x1931: 0x1199, 0x1932: 0x0f31, 0x1933: 0x0249, 0x1934: 0x0f41, 0x1935: 0x0259, + 0x1936: 0x0f51, 0x1937: 0x0359, 0x1938: 0x0f61, 0x1939: 0x0f71, 0x193a: 0x00d9, 0x193b: 0x0f99, + 0x193c: 0x2039, 0x193d: 0x0269, 0x193e: 0x01d9, 0x193f: 0x0fa9, + // Block 0x65, offset 0x1940 + 0x1940: 0x0fb9, 0x1941: 0x1089, 0x1942: 0x0279, 0x1943: 0x0369, 0x1944: 0x0289, 0x1945: 0x13d1, + 0x1946: 0x0039, 0x1947: 0x0ee9, 0x1948: 0x1159, 0x1949: 0x0ef9, 0x194a: 0x0f09, 0x194b: 0x1199, + 0x194c: 0x0f31, 0x194d: 0x0249, 0x194e: 0x0f41, 0x194f: 0x0259, 0x1950: 0x0f51, 0x1951: 0x0359, + 0x1952: 0x0f61, 0x1953: 0x0f71, 0x1954: 0x00d9, 0x1955: 0x0f99, 0x1956: 0x2039, 0x1957: 0x0269, + 0x1958: 0x01d9, 0x1959: 0x0fa9, 0x195a: 0x0fb9, 0x195b: 0x1089, 0x195c: 0x0279, 0x195d: 0x0369, + 0x195e: 0x0289, 0x195f: 0x13d1, 0x1960: 0x0039, 0x1961: 0x0ee9, 0x1962: 0x1159, 0x1963: 0x0ef9, + 0x1964: 0x0f09, 0x1965: 0x1199, 0x1966: 0x0f31, 0x1967: 0x0249, 0x1968: 0x0f41, 0x1969: 0x0259, + 0x196a: 0x0f51, 0x196b: 0x0359, 0x196c: 0x0f61, 0x196d: 0x0f71, 0x196e: 0x00d9, 0x196f: 0x0f99, + 0x1970: 0x2039, 0x1971: 0x0269, 0x1972: 0x01d9, 0x1973: 0x0fa9, 0x1974: 0x0fb9, 0x1975: 0x1089, + 0x1976: 0x0279, 0x1977: 0x0369, 0x1978: 0x0289, 0x1979: 0x13d1, 0x197a: 0x0039, 0x197b: 0x0ee9, + 0x197c: 0x1159, 0x197d: 0x0ef9, 0x197e: 0x0f09, 0x197f: 0x1199, + // Block 0x66, offset 0x1980 + 0x1980: 0x0f31, 0x1981: 0x0249, 0x1982: 0x0f41, 0x1983: 0x0259, 0x1984: 0x0f51, 0x1985: 0x0359, + 0x1986: 0x0f61, 0x1987: 0x0f71, 0x1988: 0x00d9, 0x1989: 0x0f99, 0x198a: 0x2039, 0x198b: 0x0269, + 0x198c: 0x01d9, 0x198d: 0x0fa9, 0x198e: 0x0fb9, 0x198f: 0x1089, 0x1990: 0x0279, 0x1991: 0x0369, + 0x1992: 0x0289, 0x1993: 0x13d1, 0x1994: 0x0039, 0x1995: 0x0ee9, 0x1996: 0x1159, 0x1997: 0x0ef9, + 0x1998: 0x0f09, 0x1999: 0x1199, 0x199a: 0x0f31, 0x199b: 0x0249, 0x199c: 0x0f41, 0x199d: 0x0259, + 0x199e: 0x0f51, 0x199f: 0x0359, 0x19a0: 0x0f61, 0x19a1: 0x0f71, 0x19a2: 0x00d9, 0x19a3: 0x0f99, + 0x19a4: 0x2039, 0x19a5: 0x0269, 0x19a6: 0x01d9, 0x19a7: 0x0fa9, 0x19a8: 0x0fb9, 0x19a9: 0x1089, + 0x19aa: 0x0279, 0x19ab: 0x0369, 0x19ac: 0x0289, 0x19ad: 0x13d1, 0x19ae: 0x0039, 0x19af: 0x0ee9, + 0x19b0: 0x1159, 0x19b1: 0x0ef9, 0x19b2: 0x0f09, 0x19b3: 0x1199, 0x19b4: 0x0f31, 0x19b5: 0x0249, + 0x19b6: 0x0f41, 0x19b7: 0x0259, 0x19b8: 0x0f51, 0x19b9: 0x0359, 0x19ba: 0x0f61, 0x19bb: 0x0f71, + 0x19bc: 0x00d9, 0x19bd: 0x0f99, 0x19be: 0x2039, 0x19bf: 0x0269, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x01d9, 0x19c1: 0x0fa9, 0x19c2: 0x0fb9, 0x19c3: 0x1089, 0x19c4: 0x0279, 0x19c5: 0x0369, + 0x19c6: 0x0289, 0x19c7: 0x13d1, 0x19c8: 0x0039, 0x19c9: 0x0ee9, 0x19ca: 0x1159, 0x19cb: 0x0ef9, + 0x19cc: 0x0f09, 0x19cd: 0x1199, 0x19ce: 0x0f31, 0x19cf: 0x0249, 0x19d0: 0x0f41, 0x19d1: 0x0259, + 0x19d2: 0x0f51, 0x19d3: 0x0359, 0x19d4: 0x0f61, 0x19d5: 0x0f71, 0x19d6: 0x00d9, 0x19d7: 0x0f99, + 0x19d8: 0x2039, 0x19d9: 0x0269, 0x19da: 0x01d9, 0x19db: 0x0fa9, 0x19dc: 0x0fb9, 0x19dd: 0x1089, + 0x19de: 0x0279, 0x19df: 0x0369, 0x19e0: 0x0289, 0x19e1: 0x13d1, 0x19e2: 0x0039, 0x19e3: 0x0ee9, + 0x19e4: 0x1159, 0x19e5: 0x0ef9, 0x19e6: 0x0f09, 0x19e7: 0x1199, 0x19e8: 0x0f31, 0x19e9: 0x0249, + 0x19ea: 0x0f41, 0x19eb: 0x0259, 0x19ec: 0x0f51, 0x19ed: 0x0359, 0x19ee: 0x0f61, 0x19ef: 0x0f71, + 0x19f0: 0x00d9, 0x19f1: 0x0f99, 0x19f2: 0x2039, 0x19f3: 0x0269, 0x19f4: 0x01d9, 0x19f5: 0x0fa9, + 0x19f6: 0x0fb9, 0x19f7: 0x1089, 0x19f8: 0x0279, 0x19f9: 0x0369, 0x19fa: 0x0289, 0x19fb: 0x13d1, + 0x19fc: 0x0039, 0x19fd: 0x0ee9, 0x19fe: 0x1159, 0x19ff: 0x0ef9, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x0f09, 0x1a01: 0x1199, 0x1a02: 0x0f31, 0x1a03: 0x0249, 0x1a04: 0x0f41, 0x1a05: 0x0259, + 0x1a06: 0x0f51, 0x1a07: 0x0359, 0x1a08: 0x0f61, 0x1a09: 0x0f71, 0x1a0a: 0x00d9, 0x1a0b: 0x0f99, + 0x1a0c: 0x2039, 0x1a0d: 0x0269, 0x1a0e: 0x01d9, 0x1a0f: 0x0fa9, 0x1a10: 0x0fb9, 0x1a11: 0x1089, + 0x1a12: 0x0279, 0x1a13: 0x0369, 0x1a14: 0x0289, 0x1a15: 0x13d1, 0x1a16: 0x0039, 0x1a17: 0x0ee9, + 0x1a18: 0x1159, 0x1a19: 0x0ef9, 0x1a1a: 0x0f09, 0x1a1b: 0x1199, 0x1a1c: 0x0f31, 0x1a1d: 0x0249, + 0x1a1e: 0x0f41, 0x1a1f: 0x0259, 0x1a20: 0x0f51, 0x1a21: 0x0359, 0x1a22: 0x0f61, 0x1a23: 0x0f71, + 0x1a24: 0x00d9, 0x1a25: 0x0f99, 0x1a26: 0x2039, 0x1a27: 0x0269, 0x1a28: 0x01d9, 0x1a29: 0x0fa9, + 0x1a2a: 0x0fb9, 0x1a2b: 0x1089, 0x1a2c: 0x0279, 0x1a2d: 0x0369, 0x1a2e: 0x0289, 0x1a2f: 0x13d1, + 0x1a30: 0x0039, 0x1a31: 0x0ee9, 0x1a32: 0x1159, 0x1a33: 0x0ef9, 0x1a34: 0x0f09, 0x1a35: 0x1199, + 0x1a36: 0x0f31, 0x1a37: 0x0249, 0x1a38: 0x0f41, 0x1a39: 0x0259, 0x1a3a: 0x0f51, 0x1a3b: 0x0359, + 0x1a3c: 0x0f61, 0x1a3d: 0x0f71, 0x1a3e: 0x00d9, 0x1a3f: 0x0f99, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x2039, 0x1a41: 0x0269, 0x1a42: 0x01d9, 0x1a43: 0x0fa9, 0x1a44: 0x0fb9, 0x1a45: 0x1089, + 0x1a46: 0x0279, 0x1a47: 0x0369, 0x1a48: 0x0289, 0x1a49: 0x13d1, 0x1a4a: 0x0039, 0x1a4b: 0x0ee9, + 0x1a4c: 0x1159, 0x1a4d: 0x0ef9, 0x1a4e: 0x0f09, 0x1a4f: 0x1199, 0x1a50: 0x0f31, 0x1a51: 0x0249, + 0x1a52: 0x0f41, 0x1a53: 0x0259, 0x1a54: 0x0f51, 0x1a55: 0x0359, 0x1a56: 0x0f61, 0x1a57: 0x0f71, + 0x1a58: 0x00d9, 0x1a59: 0x0f99, 0x1a5a: 0x2039, 0x1a5b: 0x0269, 0x1a5c: 0x01d9, 0x1a5d: 0x0fa9, + 0x1a5e: 0x0fb9, 0x1a5f: 0x1089, 0x1a60: 0x0279, 0x1a61: 0x0369, 0x1a62: 0x0289, 0x1a63: 0x13d1, + 0x1a64: 0xba81, 0x1a65: 0xba99, 0x1a66: 0x0040, 0x1a67: 0x0040, 0x1a68: 0xbab1, 0x1a69: 0x1099, + 0x1a6a: 0x10b1, 0x1a6b: 0x10c9, 0x1a6c: 0xbac9, 0x1a6d: 0xbae1, 0x1a6e: 0xbaf9, 0x1a6f: 0x1429, + 0x1a70: 0x1a31, 0x1a71: 0xbb11, 0x1a72: 0xbb29, 0x1a73: 0xbb41, 0x1a74: 0xbb59, 0x1a75: 0xbb71, + 0x1a76: 0xbb89, 0x1a77: 0x2109, 0x1a78: 0x1111, 0x1a79: 0x1429, 0x1a7a: 0xbba1, 0x1a7b: 0xbbb9, + 0x1a7c: 0xbbd1, 0x1a7d: 0x10e1, 0x1a7e: 0x10f9, 0x1a7f: 0xbbe9, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x2079, 0x1a81: 0xbc01, 0x1a82: 0xbab1, 0x1a83: 0x1099, 0x1a84: 0x10b1, 0x1a85: 0x10c9, + 0x1a86: 0xbac9, 0x1a87: 0xbae1, 0x1a88: 0xbaf9, 0x1a89: 0x1429, 0x1a8a: 0x1a31, 0x1a8b: 0xbb11, + 0x1a8c: 0xbb29, 0x1a8d: 0xbb41, 0x1a8e: 0xbb59, 0x1a8f: 0xbb71, 0x1a90: 0xbb89, 0x1a91: 0x2109, + 0x1a92: 0x1111, 0x1a93: 0xbba1, 0x1a94: 0xbba1, 0x1a95: 0xbbb9, 0x1a96: 0xbbd1, 0x1a97: 0x10e1, + 0x1a98: 0x10f9, 0x1a99: 0xbbe9, 0x1a9a: 0x2079, 0x1a9b: 0xbc21, 0x1a9c: 0xbac9, 0x1a9d: 0x1429, + 0x1a9e: 0xbb11, 0x1a9f: 0x10e1, 0x1aa0: 0x1111, 0x1aa1: 0x2109, 0x1aa2: 0xbab1, 0x1aa3: 0x1099, + 0x1aa4: 0x10b1, 0x1aa5: 0x10c9, 0x1aa6: 0xbac9, 0x1aa7: 0xbae1, 0x1aa8: 0xbaf9, 0x1aa9: 0x1429, + 0x1aaa: 0x1a31, 0x1aab: 0xbb11, 0x1aac: 0xbb29, 0x1aad: 0xbb41, 0x1aae: 0xbb59, 0x1aaf: 0xbb71, + 0x1ab0: 0xbb89, 0x1ab1: 0x2109, 0x1ab2: 0x1111, 0x1ab3: 0x1429, 0x1ab4: 0xbba1, 0x1ab5: 0xbbb9, + 0x1ab6: 0xbbd1, 0x1ab7: 0x10e1, 0x1ab8: 0x10f9, 0x1ab9: 0xbbe9, 0x1aba: 0x2079, 0x1abb: 0xbc01, + 0x1abc: 0xbab1, 0x1abd: 0x1099, 0x1abe: 0x10b1, 0x1abf: 0x10c9, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0xbac9, 0x1ac1: 0xbae1, 0x1ac2: 0xbaf9, 0x1ac3: 0x1429, 0x1ac4: 0x1a31, 0x1ac5: 0xbb11, + 0x1ac6: 0xbb29, 0x1ac7: 0xbb41, 0x1ac8: 0xbb59, 0x1ac9: 0xbb71, 0x1aca: 0xbb89, 0x1acb: 0x2109, + 0x1acc: 0x1111, 0x1acd: 0xbba1, 0x1ace: 0xbba1, 0x1acf: 0xbbb9, 0x1ad0: 0xbbd1, 0x1ad1: 0x10e1, + 0x1ad2: 0x10f9, 0x1ad3: 0xbbe9, 0x1ad4: 0x2079, 0x1ad5: 0xbc21, 0x1ad6: 0xbac9, 0x1ad7: 0x1429, + 0x1ad8: 0xbb11, 0x1ad9: 0x10e1, 0x1ada: 0x1111, 0x1adb: 0x2109, 0x1adc: 0xbab1, 0x1add: 0x1099, + 0x1ade: 0x10b1, 0x1adf: 0x10c9, 0x1ae0: 0xbac9, 0x1ae1: 0xbae1, 0x1ae2: 0xbaf9, 0x1ae3: 0x1429, + 0x1ae4: 0x1a31, 0x1ae5: 0xbb11, 0x1ae6: 0xbb29, 0x1ae7: 0xbb41, 0x1ae8: 0xbb59, 0x1ae9: 0xbb71, + 0x1aea: 0xbb89, 0x1aeb: 0x2109, 0x1aec: 0x1111, 0x1aed: 0x1429, 0x1aee: 0xbba1, 0x1aef: 0xbbb9, + 0x1af0: 0xbbd1, 0x1af1: 0x10e1, 0x1af2: 0x10f9, 0x1af3: 0xbbe9, 0x1af4: 0x2079, 0x1af5: 0xbc01, + 0x1af6: 0xbab1, 0x1af7: 0x1099, 0x1af8: 0x10b1, 0x1af9: 0x10c9, 0x1afa: 0xbac9, 0x1afb: 0xbae1, + 0x1afc: 0xbaf9, 0x1afd: 0x1429, 0x1afe: 0x1a31, 0x1aff: 0xbb11, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0xbb29, 0x1b01: 0xbb41, 0x1b02: 0xbb59, 0x1b03: 0xbb71, 0x1b04: 0xbb89, 0x1b05: 0x2109, + 0x1b06: 0x1111, 0x1b07: 0xbba1, 0x1b08: 0xbba1, 0x1b09: 0xbbb9, 0x1b0a: 0xbbd1, 0x1b0b: 0x10e1, + 0x1b0c: 0x10f9, 0x1b0d: 0xbbe9, 0x1b0e: 0x2079, 0x1b0f: 0xbc21, 0x1b10: 0xbac9, 0x1b11: 0x1429, + 0x1b12: 0xbb11, 0x1b13: 0x10e1, 0x1b14: 0x1111, 0x1b15: 0x2109, 0x1b16: 0xbab1, 0x1b17: 0x1099, + 0x1b18: 0x10b1, 0x1b19: 0x10c9, 0x1b1a: 0xbac9, 0x1b1b: 0xbae1, 0x1b1c: 0xbaf9, 0x1b1d: 0x1429, + 0x1b1e: 0x1a31, 0x1b1f: 0xbb11, 0x1b20: 0xbb29, 0x1b21: 0xbb41, 0x1b22: 0xbb59, 0x1b23: 0xbb71, + 0x1b24: 0xbb89, 0x1b25: 0x2109, 0x1b26: 0x1111, 0x1b27: 0x1429, 0x1b28: 0xbba1, 0x1b29: 0xbbb9, + 0x1b2a: 0xbbd1, 0x1b2b: 0x10e1, 0x1b2c: 0x10f9, 0x1b2d: 0xbbe9, 0x1b2e: 0x2079, 0x1b2f: 0xbc01, + 0x1b30: 0xbab1, 0x1b31: 0x1099, 0x1b32: 0x10b1, 0x1b33: 0x10c9, 0x1b34: 0xbac9, 0x1b35: 0xbae1, + 0x1b36: 0xbaf9, 0x1b37: 0x1429, 0x1b38: 0x1a31, 0x1b39: 0xbb11, 0x1b3a: 0xbb29, 0x1b3b: 0xbb41, + 0x1b3c: 0xbb59, 0x1b3d: 0xbb71, 0x1b3e: 0xbb89, 0x1b3f: 0x2109, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0x1111, 0x1b41: 0xbba1, 0x1b42: 0xbba1, 0x1b43: 0xbbb9, 0x1b44: 0xbbd1, 0x1b45: 0x10e1, + 0x1b46: 0x10f9, 0x1b47: 0xbbe9, 0x1b48: 0x2079, 0x1b49: 0xbc21, 0x1b4a: 0xbac9, 0x1b4b: 0x1429, + 0x1b4c: 0xbb11, 0x1b4d: 0x10e1, 0x1b4e: 0x1111, 0x1b4f: 0x2109, 0x1b50: 0xbab1, 0x1b51: 0x1099, + 0x1b52: 0x10b1, 0x1b53: 0x10c9, 0x1b54: 0xbac9, 0x1b55: 0xbae1, 0x1b56: 0xbaf9, 0x1b57: 0x1429, + 0x1b58: 0x1a31, 0x1b59: 0xbb11, 0x1b5a: 0xbb29, 0x1b5b: 0xbb41, 0x1b5c: 0xbb59, 0x1b5d: 0xbb71, + 0x1b5e: 0xbb89, 0x1b5f: 0x2109, 0x1b60: 0x1111, 0x1b61: 0x1429, 0x1b62: 0xbba1, 0x1b63: 0xbbb9, + 0x1b64: 0xbbd1, 0x1b65: 0x10e1, 0x1b66: 0x10f9, 0x1b67: 0xbbe9, 0x1b68: 0x2079, 0x1b69: 0xbc01, + 0x1b6a: 0xbab1, 0x1b6b: 0x1099, 0x1b6c: 0x10b1, 0x1b6d: 0x10c9, 0x1b6e: 0xbac9, 0x1b6f: 0xbae1, + 0x1b70: 0xbaf9, 0x1b71: 0x1429, 0x1b72: 0x1a31, 0x1b73: 0xbb11, 0x1b74: 0xbb29, 0x1b75: 0xbb41, + 0x1b76: 0xbb59, 0x1b77: 0xbb71, 0x1b78: 0xbb89, 0x1b79: 0x2109, 0x1b7a: 0x1111, 0x1b7b: 0xbba1, + 0x1b7c: 0xbba1, 0x1b7d: 0xbbb9, 0x1b7e: 0xbbd1, 0x1b7f: 0x10e1, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x10f9, 0x1b81: 0xbbe9, 0x1b82: 0x2079, 0x1b83: 0xbc21, 0x1b84: 0xbac9, 0x1b85: 0x1429, + 0x1b86: 0xbb11, 0x1b87: 0x10e1, 0x1b88: 0x1111, 0x1b89: 0x2109, 0x1b8a: 0xbc41, 0x1b8b: 0xbc41, + 0x1b8c: 0x0040, 0x1b8d: 0x0040, 0x1b8e: 0x1f41, 0x1b8f: 0x00c9, 0x1b90: 0x0069, 0x1b91: 0x0079, + 0x1b92: 0x1f51, 0x1b93: 0x1f61, 0x1b94: 0x1f71, 0x1b95: 0x1f81, 0x1b96: 0x1f91, 0x1b97: 0x1fa1, + 0x1b98: 0x1f41, 0x1b99: 0x00c9, 0x1b9a: 0x0069, 0x1b9b: 0x0079, 0x1b9c: 0x1f51, 0x1b9d: 0x1f61, + 0x1b9e: 0x1f71, 0x1b9f: 0x1f81, 0x1ba0: 0x1f91, 0x1ba1: 0x1fa1, 0x1ba2: 0x1f41, 0x1ba3: 0x00c9, + 0x1ba4: 0x0069, 0x1ba5: 0x0079, 0x1ba6: 0x1f51, 0x1ba7: 0x1f61, 0x1ba8: 0x1f71, 0x1ba9: 0x1f81, + 0x1baa: 0x1f91, 0x1bab: 0x1fa1, 0x1bac: 0x1f41, 0x1bad: 0x00c9, 0x1bae: 0x0069, 0x1baf: 0x0079, + 0x1bb0: 0x1f51, 0x1bb1: 0x1f61, 0x1bb2: 0x1f71, 0x1bb3: 0x1f81, 0x1bb4: 0x1f91, 0x1bb5: 0x1fa1, + 0x1bb6: 0x1f41, 0x1bb7: 0x00c9, 0x1bb8: 0x0069, 0x1bb9: 0x0079, 0x1bba: 0x1f51, 0x1bbb: 0x1f61, + 0x1bbc: 0x1f71, 0x1bbd: 0x1f81, 0x1bbe: 0x1f91, 0x1bbf: 0x1fa1, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0xe115, 0x1bc1: 0xe115, 0x1bc2: 0xe135, 0x1bc3: 0xe135, 0x1bc4: 0xe115, 0x1bc5: 0xe115, + 0x1bc6: 0xe175, 0x1bc7: 0xe175, 0x1bc8: 0xe115, 0x1bc9: 0xe115, 0x1bca: 0xe135, 0x1bcb: 0xe135, + 0x1bcc: 0xe115, 0x1bcd: 0xe115, 0x1bce: 0xe1f5, 0x1bcf: 0xe1f5, 0x1bd0: 0xe115, 0x1bd1: 0xe115, + 0x1bd2: 0xe135, 0x1bd3: 0xe135, 0x1bd4: 0xe115, 0x1bd5: 0xe115, 0x1bd6: 0xe175, 0x1bd7: 0xe175, + 0x1bd8: 0xe115, 0x1bd9: 0xe115, 0x1bda: 0xe135, 0x1bdb: 0xe135, 0x1bdc: 0xe115, 0x1bdd: 0xe115, + 0x1bde: 0x8b05, 0x1bdf: 0x8b05, 0x1be0: 0x04b5, 0x1be1: 0x04b5, 0x1be2: 0x0208, 0x1be3: 0x0208, + 0x1be4: 0x0208, 0x1be5: 0x0208, 0x1be6: 0x0208, 0x1be7: 0x0208, 0x1be8: 0x0208, 0x1be9: 0x0208, + 0x1bea: 0x0208, 0x1beb: 0x0208, 0x1bec: 0x0208, 0x1bed: 0x0208, 0x1bee: 0x0208, 0x1bef: 0x0208, + 0x1bf0: 0x0208, 0x1bf1: 0x0208, 0x1bf2: 0x0208, 0x1bf3: 0x0208, 0x1bf4: 0x0208, 0x1bf5: 0x0208, + 0x1bf6: 0x0208, 0x1bf7: 0x0208, 0x1bf8: 0x0208, 0x1bf9: 0x0208, 0x1bfa: 0x0208, 0x1bfb: 0x0208, + 0x1bfc: 0x0208, 0x1bfd: 0x0208, 0x1bfe: 0x0208, 0x1bff: 0x0208, + // Block 0x70, offset 0x1c00 + 0x1c00: 0xb189, 0x1c01: 0xb1a1, 0x1c02: 0xb201, 0x1c03: 0xb249, 0x1c04: 0x0040, 0x1c05: 0xb411, + 0x1c06: 0xb291, 0x1c07: 0xb219, 0x1c08: 0xb309, 0x1c09: 0xb429, 0x1c0a: 0xb399, 0x1c0b: 0xb3b1, + 0x1c0c: 0xb3c9, 0x1c0d: 0xb3e1, 0x1c0e: 0xb2a9, 0x1c0f: 0xb339, 0x1c10: 0xb369, 0x1c11: 0xb2d9, + 0x1c12: 0xb381, 0x1c13: 0xb279, 0x1c14: 0xb2c1, 0x1c15: 0xb1d1, 0x1c16: 0xb1e9, 0x1c17: 0xb231, + 0x1c18: 0xb261, 0x1c19: 0xb2f1, 0x1c1a: 0xb321, 0x1c1b: 0xb351, 0x1c1c: 0xbc59, 0x1c1d: 0x7949, + 0x1c1e: 0xbc71, 0x1c1f: 0xbc89, 0x1c20: 0x0040, 0x1c21: 0xb1a1, 0x1c22: 0xb201, 0x1c23: 0x0040, + 0x1c24: 0xb3f9, 0x1c25: 0x0040, 0x1c26: 0x0040, 0x1c27: 0xb219, 0x1c28: 0x0040, 0x1c29: 0xb429, + 0x1c2a: 0xb399, 0x1c2b: 0xb3b1, 0x1c2c: 0xb3c9, 0x1c2d: 0xb3e1, 0x1c2e: 0xb2a9, 0x1c2f: 0xb339, + 0x1c30: 0xb369, 0x1c31: 0xb2d9, 0x1c32: 0xb381, 0x1c33: 0x0040, 0x1c34: 0xb2c1, 0x1c35: 0xb1d1, + 0x1c36: 0xb1e9, 0x1c37: 0xb231, 0x1c38: 0x0040, 0x1c39: 0xb2f1, 0x1c3a: 0x0040, 0x1c3b: 0xb351, + 0x1c3c: 0x0040, 0x1c3d: 0x0040, 0x1c3e: 0x0040, 0x1c3f: 0x0040, + // Block 0x71, offset 0x1c40 + 0x1c40: 0x0040, 0x1c41: 0x0040, 0x1c42: 0xb201, 0x1c43: 0x0040, 0x1c44: 0x0040, 0x1c45: 0x0040, + 0x1c46: 0x0040, 0x1c47: 0xb219, 0x1c48: 0x0040, 0x1c49: 0xb429, 0x1c4a: 0x0040, 0x1c4b: 0xb3b1, + 0x1c4c: 0x0040, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0x0040, 0x1c51: 0xb2d9, + 0x1c52: 0xb381, 0x1c53: 0x0040, 0x1c54: 0xb2c1, 0x1c55: 0x0040, 0x1c56: 0x0040, 0x1c57: 0xb231, + 0x1c58: 0x0040, 0x1c59: 0xb2f1, 0x1c5a: 0x0040, 0x1c5b: 0xb351, 0x1c5c: 0x0040, 0x1c5d: 0x7949, + 0x1c5e: 0x0040, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, + 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0xb309, 0x1c69: 0xb429, + 0x1c6a: 0xb399, 0x1c6b: 0x0040, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, + 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, + 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0xb321, 0x1c7b: 0xb351, + 0x1c7c: 0xbc59, 0x1c7d: 0x0040, 0x1c7e: 0xbc71, 0x1c7f: 0x0040, + // Block 0x72, offset 0x1c80 + 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0xb3f9, 0x1c85: 0xb411, + 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, + 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, + 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, + 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x0040, + 0x1c9e: 0x0040, 0x1c9f: 0x0040, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0xb249, + 0x1ca4: 0x0040, 0x1ca5: 0xb411, 0x1ca6: 0xb291, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, + 0x1caa: 0x0040, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0xb279, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0xb261, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, + 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x0040, 0x1cc1: 0xbca2, 0x1cc2: 0xbcba, 0x1cc3: 0xbcd2, 0x1cc4: 0xbcea, 0x1cc5: 0xbd02, + 0x1cc6: 0xbd1a, 0x1cc7: 0xbd32, 0x1cc8: 0xbd4a, 0x1cc9: 0xbd62, 0x1cca: 0xbd7a, 0x1ccb: 0x0018, + 0x1ccc: 0x0018, 0x1ccd: 0x0040, 0x1cce: 0x0040, 0x1ccf: 0x0040, 0x1cd0: 0xbd92, 0x1cd1: 0xbdb2, + 0x1cd2: 0xbdd2, 0x1cd3: 0xbdf2, 0x1cd4: 0xbe12, 0x1cd5: 0xbe32, 0x1cd6: 0xbe52, 0x1cd7: 0xbe72, + 0x1cd8: 0xbe92, 0x1cd9: 0xbeb2, 0x1cda: 0xbed2, 0x1cdb: 0xbef2, 0x1cdc: 0xbf12, 0x1cdd: 0xbf32, + 0x1cde: 0xbf52, 0x1cdf: 0xbf72, 0x1ce0: 0xbf92, 0x1ce1: 0xbfb2, 0x1ce2: 0xbfd2, 0x1ce3: 0xbff2, + 0x1ce4: 0xc012, 0x1ce5: 0xc032, 0x1ce6: 0xc052, 0x1ce7: 0xc072, 0x1ce8: 0xc092, 0x1ce9: 0xc0b2, + 0x1cea: 0xc0d1, 0x1ceb: 0x1159, 0x1cec: 0x0269, 0x1ced: 0x6671, 0x1cee: 0xc111, 0x1cef: 0x0040, + 0x1cf0: 0x0039, 0x1cf1: 0x0ee9, 0x1cf2: 0x1159, 0x1cf3: 0x0ef9, 0x1cf4: 0x0f09, 0x1cf5: 0x1199, + 0x1cf6: 0x0f31, 0x1cf7: 0x0249, 0x1cf8: 0x0f41, 0x1cf9: 0x0259, 0x1cfa: 0x0f51, 0x1cfb: 0x0359, + 0x1cfc: 0x0f61, 0x1cfd: 0x0f71, 0x1cfe: 0x00d9, 0x1cff: 0x0f99, + // Block 0x74, offset 0x1d00 + 0x1d00: 0x2039, 0x1d01: 0x0269, 0x1d02: 0x01d9, 0x1d03: 0x0fa9, 0x1d04: 0x0fb9, 0x1d05: 0x1089, + 0x1d06: 0x0279, 0x1d07: 0x0369, 0x1d08: 0x0289, 0x1d09: 0x13d1, 0x1d0a: 0xc129, 0x1d0b: 0x65b1, + 0x1d0c: 0xc141, 0x1d0d: 0x1441, 0x1d0e: 0xc159, 0x1d0f: 0xc179, 0x1d10: 0x0018, 0x1d11: 0x0018, + 0x1d12: 0x0018, 0x1d13: 0x0018, 0x1d14: 0x0018, 0x1d15: 0x0018, 0x1d16: 0x0018, 0x1d17: 0x0018, + 0x1d18: 0x0018, 0x1d19: 0x0018, 0x1d1a: 0x0018, 0x1d1b: 0x0018, 0x1d1c: 0x0018, 0x1d1d: 0x0018, + 0x1d1e: 0x0018, 0x1d1f: 0x0018, 0x1d20: 0x0018, 0x1d21: 0x0018, 0x1d22: 0x0018, 0x1d23: 0x0018, + 0x1d24: 0x0018, 0x1d25: 0x0018, 0x1d26: 0x0018, 0x1d27: 0x0018, 0x1d28: 0x0018, 0x1d29: 0x0018, + 0x1d2a: 0xc191, 0x1d2b: 0xc1a9, 0x1d2c: 0x0040, 0x1d2d: 0x0040, 0x1d2e: 0x0040, 0x1d2f: 0x0040, + 0x1d30: 0x0018, 0x1d31: 0x0018, 0x1d32: 0x0018, 0x1d33: 0x0018, 0x1d34: 0x0018, 0x1d35: 0x0018, + 0x1d36: 0x0018, 0x1d37: 0x0018, 0x1d38: 0x0018, 0x1d39: 0x0018, 0x1d3a: 0x0018, 0x1d3b: 0x0018, + 0x1d3c: 0x0018, 0x1d3d: 0x0018, 0x1d3e: 0x0018, 0x1d3f: 0x0018, + // Block 0x75, offset 0x1d40 + 0x1d40: 0xc1d9, 0x1d41: 0xc211, 0x1d42: 0xc249, 0x1d43: 0x0040, 0x1d44: 0x0040, 0x1d45: 0x0040, + 0x1d46: 0x0040, 0x1d47: 0x0040, 0x1d48: 0x0040, 0x1d49: 0x0040, 0x1d4a: 0x0040, 0x1d4b: 0x0040, + 0x1d4c: 0x0040, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xc269, 0x1d51: 0xc289, + 0x1d52: 0xc2a9, 0x1d53: 0xc2c9, 0x1d54: 0xc2e9, 0x1d55: 0xc309, 0x1d56: 0xc329, 0x1d57: 0xc349, + 0x1d58: 0xc369, 0x1d59: 0xc389, 0x1d5a: 0xc3a9, 0x1d5b: 0xc3c9, 0x1d5c: 0xc3e9, 0x1d5d: 0xc409, + 0x1d5e: 0xc429, 0x1d5f: 0xc449, 0x1d60: 0xc469, 0x1d61: 0xc489, 0x1d62: 0xc4a9, 0x1d63: 0xc4c9, + 0x1d64: 0xc4e9, 0x1d65: 0xc509, 0x1d66: 0xc529, 0x1d67: 0xc549, 0x1d68: 0xc569, 0x1d69: 0xc589, + 0x1d6a: 0xc5a9, 0x1d6b: 0xc5c9, 0x1d6c: 0xc5e9, 0x1d6d: 0xc609, 0x1d6e: 0xc629, 0x1d6f: 0xc649, + 0x1d70: 0xc669, 0x1d71: 0xc689, 0x1d72: 0xc6a9, 0x1d73: 0xc6c9, 0x1d74: 0xc6e9, 0x1d75: 0xc709, + 0x1d76: 0xc729, 0x1d77: 0xc749, 0x1d78: 0xc769, 0x1d79: 0xc789, 0x1d7a: 0xc7a9, 0x1d7b: 0xc7c9, + 0x1d7c: 0x0040, 0x1d7d: 0x0040, 0x1d7e: 0x0040, 0x1d7f: 0x0040, + // Block 0x76, offset 0x1d80 + 0x1d80: 0xcaf9, 0x1d81: 0xcb19, 0x1d82: 0xcb39, 0x1d83: 0x8b1d, 0x1d84: 0xcb59, 0x1d85: 0xcb79, + 0x1d86: 0xcb99, 0x1d87: 0xcbb9, 0x1d88: 0xcbd9, 0x1d89: 0xcbf9, 0x1d8a: 0xcc19, 0x1d8b: 0xcc39, + 0x1d8c: 0xcc59, 0x1d8d: 0x8b3d, 0x1d8e: 0xcc79, 0x1d8f: 0xcc99, 0x1d90: 0xccb9, 0x1d91: 0xccd9, + 0x1d92: 0x8b5d, 0x1d93: 0xccf9, 0x1d94: 0xcd19, 0x1d95: 0xc429, 0x1d96: 0x8b7d, 0x1d97: 0xcd39, + 0x1d98: 0xcd59, 0x1d99: 0xcd79, 0x1d9a: 0xcd99, 0x1d9b: 0xcdb9, 0x1d9c: 0x8b9d, 0x1d9d: 0xcdd9, + 0x1d9e: 0xcdf9, 0x1d9f: 0xce19, 0x1da0: 0xce39, 0x1da1: 0xce59, 0x1da2: 0xc789, 0x1da3: 0xce79, + 0x1da4: 0xce99, 0x1da5: 0xceb9, 0x1da6: 0xced9, 0x1da7: 0xcef9, 0x1da8: 0xcf19, 0x1da9: 0xcf39, + 0x1daa: 0xcf59, 0x1dab: 0xcf79, 0x1dac: 0xcf99, 0x1dad: 0xcfb9, 0x1dae: 0xcfd9, 0x1daf: 0xcff9, + 0x1db0: 0xd019, 0x1db1: 0xd039, 0x1db2: 0xd039, 0x1db3: 0xd039, 0x1db4: 0x8bbd, 0x1db5: 0xd059, + 0x1db6: 0xd079, 0x1db7: 0xd099, 0x1db8: 0x8bdd, 0x1db9: 0xd0b9, 0x1dba: 0xd0d9, 0x1dbb: 0xd0f9, + 0x1dbc: 0xd119, 0x1dbd: 0xd139, 0x1dbe: 0xd159, 0x1dbf: 0xd179, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0xd199, 0x1dc1: 0xd1b9, 0x1dc2: 0xd1d9, 0x1dc3: 0xd1f9, 0x1dc4: 0xd219, 0x1dc5: 0xd239, + 0x1dc6: 0xd239, 0x1dc7: 0xd259, 0x1dc8: 0xd279, 0x1dc9: 0xd299, 0x1dca: 0xd2b9, 0x1dcb: 0xd2d9, + 0x1dcc: 0xd2f9, 0x1dcd: 0xd319, 0x1dce: 0xd339, 0x1dcf: 0xd359, 0x1dd0: 0xd379, 0x1dd1: 0xd399, + 0x1dd2: 0xd3b9, 0x1dd3: 0xd3d9, 0x1dd4: 0xd3f9, 0x1dd5: 0xd419, 0x1dd6: 0xd439, 0x1dd7: 0xd459, + 0x1dd8: 0xd479, 0x1dd9: 0x8bfd, 0x1dda: 0xd499, 0x1ddb: 0xd4b9, 0x1ddc: 0xd4d9, 0x1ddd: 0xc309, + 0x1dde: 0xd4f9, 0x1ddf: 0xd519, 0x1de0: 0x8c1d, 0x1de1: 0x8c3d, 0x1de2: 0xd539, 0x1de3: 0xd559, + 0x1de4: 0xd579, 0x1de5: 0xd599, 0x1de6: 0xd5b9, 0x1de7: 0xd5d9, 0x1de8: 0x0040, 0x1de9: 0xd5f9, + 0x1dea: 0xd619, 0x1deb: 0xd619, 0x1dec: 0x8c5d, 0x1ded: 0xd639, 0x1dee: 0xd659, 0x1def: 0xd679, + 0x1df0: 0xd699, 0x1df1: 0x8c7d, 0x1df2: 0xd6b9, 0x1df3: 0xd6d9, 0x1df4: 0x0040, 0x1df5: 0xd6f9, + 0x1df6: 0xd719, 0x1df7: 0xd739, 0x1df8: 0xd759, 0x1df9: 0xd779, 0x1dfa: 0xd799, 0x1dfb: 0x8c9d, + 0x1dfc: 0xd7b9, 0x1dfd: 0x8cbd, 0x1dfe: 0xd7d9, 0x1dff: 0xd7f9, + // Block 0x78, offset 0x1e00 + 0x1e00: 0xd819, 0x1e01: 0xd839, 0x1e02: 0xd859, 0x1e03: 0xd879, 0x1e04: 0xd899, 0x1e05: 0xd8b9, + 0x1e06: 0xd8d9, 0x1e07: 0xd8f9, 0x1e08: 0xd919, 0x1e09: 0x8cdd, 0x1e0a: 0xd939, 0x1e0b: 0xd959, + 0x1e0c: 0xd979, 0x1e0d: 0xd999, 0x1e0e: 0xd9b9, 0x1e0f: 0x8cfd, 0x1e10: 0xd9d9, 0x1e11: 0x8d1d, + 0x1e12: 0x8d3d, 0x1e13: 0xd9f9, 0x1e14: 0xda19, 0x1e15: 0xda19, 0x1e16: 0xda39, 0x1e17: 0x8d5d, + 0x1e18: 0x8d7d, 0x1e19: 0xda59, 0x1e1a: 0xda79, 0x1e1b: 0xda99, 0x1e1c: 0xdab9, 0x1e1d: 0xdad9, + 0x1e1e: 0xdaf9, 0x1e1f: 0xdb19, 0x1e20: 0xdb39, 0x1e21: 0xdb59, 0x1e22: 0xdb79, 0x1e23: 0xdb99, + 0x1e24: 0x8d9d, 0x1e25: 0xdbb9, 0x1e26: 0xdbd9, 0x1e27: 0xdbf9, 0x1e28: 0xdc19, 0x1e29: 0xdbf9, + 0x1e2a: 0xdc39, 0x1e2b: 0xdc59, 0x1e2c: 0xdc79, 0x1e2d: 0xdc99, 0x1e2e: 0xdcb9, 0x1e2f: 0xdcd9, + 0x1e30: 0xdcf9, 0x1e31: 0xdd19, 0x1e32: 0xdd39, 0x1e33: 0xdd59, 0x1e34: 0xdd79, 0x1e35: 0xdd99, + 0x1e36: 0xddb9, 0x1e37: 0xddd9, 0x1e38: 0x8dbd, 0x1e39: 0xddf9, 0x1e3a: 0xde19, 0x1e3b: 0xde39, + 0x1e3c: 0xde59, 0x1e3d: 0xde79, 0x1e3e: 0x8ddd, 0x1e3f: 0xde99, + // Block 0x79, offset 0x1e40 + 0x1e40: 0xe599, 0x1e41: 0xe5b9, 0x1e42: 0xe5d9, 0x1e43: 0xe5f9, 0x1e44: 0xe619, 0x1e45: 0xe639, + 0x1e46: 0x8efd, 0x1e47: 0xe659, 0x1e48: 0xe679, 0x1e49: 0xe699, 0x1e4a: 0xe6b9, 0x1e4b: 0xe6d9, + 0x1e4c: 0xe6f9, 0x1e4d: 0x8f1d, 0x1e4e: 0xe719, 0x1e4f: 0xe739, 0x1e50: 0x8f3d, 0x1e51: 0x8f5d, + 0x1e52: 0xe759, 0x1e53: 0xe779, 0x1e54: 0xe799, 0x1e55: 0xe7b9, 0x1e56: 0xe7d9, 0x1e57: 0xe7f9, + 0x1e58: 0xe819, 0x1e59: 0xe839, 0x1e5a: 0xe859, 0x1e5b: 0x8f7d, 0x1e5c: 0xe879, 0x1e5d: 0x8f9d, + 0x1e5e: 0xe899, 0x1e5f: 0x0040, 0x1e60: 0xe8b9, 0x1e61: 0xe8d9, 0x1e62: 0xe8f9, 0x1e63: 0x8fbd, + 0x1e64: 0xe919, 0x1e65: 0xe939, 0x1e66: 0x8fdd, 0x1e67: 0x8ffd, 0x1e68: 0xe959, 0x1e69: 0xe979, + 0x1e6a: 0xe999, 0x1e6b: 0xe9b9, 0x1e6c: 0xe9d9, 0x1e6d: 0xe9d9, 0x1e6e: 0xe9f9, 0x1e6f: 0xea19, + 0x1e70: 0xea39, 0x1e71: 0xea59, 0x1e72: 0xea79, 0x1e73: 0xea99, 0x1e74: 0xeab9, 0x1e75: 0x901d, + 0x1e76: 0xead9, 0x1e77: 0x903d, 0x1e78: 0xeaf9, 0x1e79: 0x905d, 0x1e7a: 0xeb19, 0x1e7b: 0x907d, + 0x1e7c: 0x909d, 0x1e7d: 0x90bd, 0x1e7e: 0xeb39, 0x1e7f: 0xeb59, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0xeb79, 0x1e81: 0x90dd, 0x1e82: 0x90fd, 0x1e83: 0x911d, 0x1e84: 0x913d, 0x1e85: 0xeb99, + 0x1e86: 0xebb9, 0x1e87: 0xebb9, 0x1e88: 0xebd9, 0x1e89: 0xebf9, 0x1e8a: 0xec19, 0x1e8b: 0xec39, + 0x1e8c: 0xec59, 0x1e8d: 0x915d, 0x1e8e: 0xec79, 0x1e8f: 0xec99, 0x1e90: 0xecb9, 0x1e91: 0xecd9, + 0x1e92: 0x917d, 0x1e93: 0xecf9, 0x1e94: 0x919d, 0x1e95: 0x91bd, 0x1e96: 0xed19, 0x1e97: 0xed39, + 0x1e98: 0xed59, 0x1e99: 0xed79, 0x1e9a: 0xed99, 0x1e9b: 0xedb9, 0x1e9c: 0x91dd, 0x1e9d: 0x91fd, + 0x1e9e: 0x921d, 0x1e9f: 0x0040, 0x1ea0: 0xedd9, 0x1ea1: 0x923d, 0x1ea2: 0xedf9, 0x1ea3: 0xee19, + 0x1ea4: 0xee39, 0x1ea5: 0x925d, 0x1ea6: 0xee59, 0x1ea7: 0xee79, 0x1ea8: 0xee99, 0x1ea9: 0xeeb9, + 0x1eaa: 0xeed9, 0x1eab: 0x927d, 0x1eac: 0xeef9, 0x1ead: 0xef19, 0x1eae: 0xef39, 0x1eaf: 0xef59, + 0x1eb0: 0xef79, 0x1eb1: 0xef99, 0x1eb2: 0x929d, 0x1eb3: 0x92bd, 0x1eb4: 0xefb9, 0x1eb5: 0x92dd, + 0x1eb6: 0xefd9, 0x1eb7: 0x92fd, 0x1eb8: 0xeff9, 0x1eb9: 0xf019, 0x1eba: 0xf039, 0x1ebb: 0x931d, + 0x1ebc: 0x933d, 0x1ebd: 0xf059, 0x1ebe: 0x935d, 0x1ebf: 0xf079, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0xf6b9, 0x1ec1: 0xf6d9, 0x1ec2: 0xf6f9, 0x1ec3: 0xf719, 0x1ec4: 0xf739, 0x1ec5: 0x951d, + 0x1ec6: 0xf759, 0x1ec7: 0xf779, 0x1ec8: 0xf799, 0x1ec9: 0xf7b9, 0x1eca: 0xf7d9, 0x1ecb: 0x953d, + 0x1ecc: 0x955d, 0x1ecd: 0xf7f9, 0x1ece: 0xf819, 0x1ecf: 0xf839, 0x1ed0: 0xf859, 0x1ed1: 0xf879, + 0x1ed2: 0xf899, 0x1ed3: 0x957d, 0x1ed4: 0xf8b9, 0x1ed5: 0xf8d9, 0x1ed6: 0xf8f9, 0x1ed7: 0xf919, + 0x1ed8: 0x959d, 0x1ed9: 0x95bd, 0x1eda: 0xf939, 0x1edb: 0xf959, 0x1edc: 0xf979, 0x1edd: 0x95dd, + 0x1ede: 0xf999, 0x1edf: 0xf9b9, 0x1ee0: 0x6815, 0x1ee1: 0x95fd, 0x1ee2: 0xf9d9, 0x1ee3: 0xf9f9, + 0x1ee4: 0xfa19, 0x1ee5: 0x961d, 0x1ee6: 0xfa39, 0x1ee7: 0xfa59, 0x1ee8: 0xfa79, 0x1ee9: 0xfa99, + 0x1eea: 0xfab9, 0x1eeb: 0xfad9, 0x1eec: 0xfaf9, 0x1eed: 0x963d, 0x1eee: 0xfb19, 0x1eef: 0xfb39, + 0x1ef0: 0xfb59, 0x1ef1: 0x965d, 0x1ef2: 0xfb79, 0x1ef3: 0xfb99, 0x1ef4: 0xfbb9, 0x1ef5: 0xfbd9, + 0x1ef6: 0x7b35, 0x1ef7: 0x967d, 0x1ef8: 0xfbf9, 0x1ef9: 0xfc19, 0x1efa: 0xfc39, 0x1efb: 0x969d, + 0x1efc: 0xfc59, 0x1efd: 0x96bd, 0x1efe: 0xfc79, 0x1eff: 0xfc79, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0xfc99, 0x1f01: 0x96dd, 0x1f02: 0xfcb9, 0x1f03: 0xfcd9, 0x1f04: 0xfcf9, 0x1f05: 0xfd19, + 0x1f06: 0xfd39, 0x1f07: 0xfd59, 0x1f08: 0xfd79, 0x1f09: 0x96fd, 0x1f0a: 0xfd99, 0x1f0b: 0xfdb9, + 0x1f0c: 0xfdd9, 0x1f0d: 0xfdf9, 0x1f0e: 0xfe19, 0x1f0f: 0xfe39, 0x1f10: 0x971d, 0x1f11: 0xfe59, + 0x1f12: 0x973d, 0x1f13: 0x975d, 0x1f14: 0x977d, 0x1f15: 0xfe79, 0x1f16: 0xfe99, 0x1f17: 0xfeb9, + 0x1f18: 0xfed9, 0x1f19: 0xfef9, 0x1f1a: 0xff19, 0x1f1b: 0xff39, 0x1f1c: 0xff59, 0x1f1d: 0x979d, + 0x1f1e: 0x0040, 0x1f1f: 0x0040, 0x1f20: 0x0040, 0x1f21: 0x0040, 0x1f22: 0x0040, 0x1f23: 0x0040, + 0x1f24: 0x0040, 0x1f25: 0x0040, 0x1f26: 0x0040, 0x1f27: 0x0040, 0x1f28: 0x0040, 0x1f29: 0x0040, + 0x1f2a: 0x0040, 0x1f2b: 0x0040, 0x1f2c: 0x0040, 0x1f2d: 0x0040, 0x1f2e: 0x0040, 0x1f2f: 0x0040, + 0x1f30: 0x0040, 0x1f31: 0x0040, 0x1f32: 0x0040, 0x1f33: 0x0040, 0x1f34: 0x0040, 0x1f35: 0x0040, + 0x1f36: 0x0040, 0x1f37: 0x0040, 0x1f38: 0x0040, 0x1f39: 0x0040, 0x1f3a: 0x0040, 0x1f3b: 0x0040, + 0x1f3c: 0x0040, 0x1f3d: 0x0040, 0x1f3e: 0x0040, 0x1f3f: 0x0040, +} + +// idnaIndex: 35 blocks, 2240 entries, 4480 bytes +// Block 0 is the zero block. +var idnaIndex = [2240]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x7b, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7c, 0xca: 0x7d, 0xcb: 0x07, 0xcc: 0x7e, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x7f, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x80, 0xd6: 0x81, 0xd7: 0x82, + 0xd8: 0x0f, 0xd9: 0x83, 0xda: 0x84, 0xdb: 0x10, 0xdc: 0x11, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, + 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, + // Block 0x4, offset 0x100 + 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x12, 0x126: 0x13, 0x127: 0x14, + 0x128: 0x15, 0x129: 0x16, 0x12a: 0x17, 0x12b: 0x18, 0x12c: 0x19, 0x12d: 0x1a, 0x12e: 0x1b, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1c, 0x132: 0x1d, 0x133: 0x1e, 0x134: 0x8f, 0x135: 0x1f, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x20, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x21, 0x13e: 0x22, 0x13f: 0x96, + // Block 0x5, offset 0x140 + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9b, 0x147: 0x9b, + 0x148: 0x9d, 0x149: 0x9e, 0x14a: 0x9f, 0x14b: 0xa0, 0x14c: 0xa1, 0x14d: 0xa2, 0x14e: 0xa3, 0x14f: 0xa4, + 0x150: 0xa5, 0x151: 0x9d, 0x152: 0x9d, 0x153: 0x9d, 0x154: 0x9d, 0x155: 0x9d, 0x156: 0x9d, 0x157: 0x9d, + 0x158: 0x9d, 0x159: 0xa6, 0x15a: 0xa7, 0x15b: 0xa8, 0x15c: 0xa9, 0x15d: 0xaa, 0x15e: 0xab, 0x15f: 0xac, + 0x160: 0xad, 0x161: 0xae, 0x162: 0xaf, 0x163: 0xb0, 0x164: 0xb1, 0x165: 0xb2, 0x166: 0xb3, 0x167: 0xb4, + 0x168: 0xb5, 0x169: 0xb6, 0x16a: 0xb7, 0x16b: 0xb8, 0x16c: 0xb9, 0x16d: 0xba, 0x16e: 0xbb, 0x16f: 0xbc, + 0x170: 0xbd, 0x171: 0xbe, 0x172: 0xbf, 0x173: 0xc0, 0x174: 0x23, 0x175: 0x24, 0x176: 0x25, 0x177: 0xc1, + 0x178: 0x26, 0x179: 0x26, 0x17a: 0x27, 0x17b: 0x26, 0x17c: 0xc2, 0x17d: 0x28, 0x17e: 0x29, 0x17f: 0x2a, + // Block 0x6, offset 0x180 + 0x180: 0x2b, 0x181: 0x2c, 0x182: 0x2d, 0x183: 0xc3, 0x184: 0x2e, 0x185: 0x2f, 0x186: 0xc4, 0x187: 0x9b, + 0x188: 0xc5, 0x189: 0xc6, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc7, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xc8, + 0x190: 0xc9, 0x191: 0x30, 0x192: 0x31, 0x193: 0x32, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, + 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, + 0x1a8: 0xca, 0x1a9: 0xcb, 0x1aa: 0x9b, 0x1ab: 0xcc, 0x1ac: 0x9b, 0x1ad: 0xcd, 0x1ae: 0xce, 0x1af: 0xcf, + 0x1b0: 0xd0, 0x1b1: 0x33, 0x1b2: 0x26, 0x1b3: 0x34, 0x1b4: 0xd1, 0x1b5: 0xd2, 0x1b6: 0xd3, 0x1b7: 0xd4, + 0x1b8: 0xd5, 0x1b9: 0xd6, 0x1ba: 0xd7, 0x1bb: 0xd8, 0x1bc: 0xd9, 0x1bd: 0xda, 0x1be: 0xdb, 0x1bf: 0x35, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x36, 0x1c1: 0xdc, 0x1c2: 0xdd, 0x1c3: 0xde, 0x1c4: 0xdf, 0x1c5: 0x37, 0x1c6: 0x38, 0x1c7: 0xe0, + 0x1c8: 0xe1, 0x1c9: 0x39, 0x1ca: 0x3a, 0x1cb: 0x3b, 0x1cc: 0x3c, 0x1cd: 0x3d, 0x1ce: 0x3e, 0x1cf: 0x3f, + 0x1d0: 0x9d, 0x1d1: 0x9d, 0x1d2: 0x9d, 0x1d3: 0x9d, 0x1d4: 0x9d, 0x1d5: 0x9d, 0x1d6: 0x9d, 0x1d7: 0x9d, + 0x1d8: 0x9d, 0x1d9: 0x9d, 0x1da: 0x9d, 0x1db: 0x9d, 0x1dc: 0x9d, 0x1dd: 0x9d, 0x1de: 0x9d, 0x1df: 0x9d, + 0x1e0: 0x9d, 0x1e1: 0x9d, 0x1e2: 0x9d, 0x1e3: 0x9d, 0x1e4: 0x9d, 0x1e5: 0x9d, 0x1e6: 0x9d, 0x1e7: 0x9d, + 0x1e8: 0x9d, 0x1e9: 0x9d, 0x1ea: 0x9d, 0x1eb: 0x9d, 0x1ec: 0x9d, 0x1ed: 0x9d, 0x1ee: 0x9d, 0x1ef: 0x9d, + 0x1f0: 0x9d, 0x1f1: 0x9d, 0x1f2: 0x9d, 0x1f3: 0x9d, 0x1f4: 0x9d, 0x1f5: 0x9d, 0x1f6: 0x9d, 0x1f7: 0x9d, + 0x1f8: 0x9d, 0x1f9: 0x9d, 0x1fa: 0x9d, 0x1fb: 0x9d, 0x1fc: 0x9d, 0x1fd: 0x9d, 0x1fe: 0x9d, 0x1ff: 0x9d, + // Block 0x8, offset 0x200 + 0x200: 0x9d, 0x201: 0x9d, 0x202: 0x9d, 0x203: 0x9d, 0x204: 0x9d, 0x205: 0x9d, 0x206: 0x9d, 0x207: 0x9d, + 0x208: 0x9d, 0x209: 0x9d, 0x20a: 0x9d, 0x20b: 0x9d, 0x20c: 0x9d, 0x20d: 0x9d, 0x20e: 0x9d, 0x20f: 0x9d, + 0x210: 0x9d, 0x211: 0x9d, 0x212: 0x9d, 0x213: 0x9d, 0x214: 0x9d, 0x215: 0x9d, 0x216: 0x9d, 0x217: 0x9d, + 0x218: 0x9d, 0x219: 0x9d, 0x21a: 0x9d, 0x21b: 0x9d, 0x21c: 0x9d, 0x21d: 0x9d, 0x21e: 0x9d, 0x21f: 0x9d, + 0x220: 0x9d, 0x221: 0x9d, 0x222: 0x9d, 0x223: 0x9d, 0x224: 0x9d, 0x225: 0x9d, 0x226: 0x9d, 0x227: 0x9d, + 0x228: 0x9d, 0x229: 0x9d, 0x22a: 0x9d, 0x22b: 0x9d, 0x22c: 0x9d, 0x22d: 0x9d, 0x22e: 0x9d, 0x22f: 0x9d, + 0x230: 0x9d, 0x231: 0x9d, 0x232: 0x9d, 0x233: 0x9d, 0x234: 0x9d, 0x235: 0x9d, 0x236: 0xb0, 0x237: 0x9b, + 0x238: 0x9d, 0x239: 0x9d, 0x23a: 0x9d, 0x23b: 0x9d, 0x23c: 0x9d, 0x23d: 0x9d, 0x23e: 0x9d, 0x23f: 0x9d, + // Block 0x9, offset 0x240 + 0x240: 0x9d, 0x241: 0x9d, 0x242: 0x9d, 0x243: 0x9d, 0x244: 0x9d, 0x245: 0x9d, 0x246: 0x9d, 0x247: 0x9d, + 0x248: 0x9d, 0x249: 0x9d, 0x24a: 0x9d, 0x24b: 0x9d, 0x24c: 0x9d, 0x24d: 0x9d, 0x24e: 0x9d, 0x24f: 0x9d, + 0x250: 0x9d, 0x251: 0x9d, 0x252: 0x9d, 0x253: 0x9d, 0x254: 0x9d, 0x255: 0x9d, 0x256: 0x9d, 0x257: 0x9d, + 0x258: 0x9d, 0x259: 0x9d, 0x25a: 0x9d, 0x25b: 0x9d, 0x25c: 0x9d, 0x25d: 0x9d, 0x25e: 0x9d, 0x25f: 0x9d, + 0x260: 0x9d, 0x261: 0x9d, 0x262: 0x9d, 0x263: 0x9d, 0x264: 0x9d, 0x265: 0x9d, 0x266: 0x9d, 0x267: 0x9d, + 0x268: 0x9d, 0x269: 0x9d, 0x26a: 0x9d, 0x26b: 0x9d, 0x26c: 0x9d, 0x26d: 0x9d, 0x26e: 0x9d, 0x26f: 0x9d, + 0x270: 0x9d, 0x271: 0x9d, 0x272: 0x9d, 0x273: 0x9d, 0x274: 0x9d, 0x275: 0x9d, 0x276: 0x9d, 0x277: 0x9d, + 0x278: 0x9d, 0x279: 0x9d, 0x27a: 0x9d, 0x27b: 0x9d, 0x27c: 0x9d, 0x27d: 0x9d, 0x27e: 0x9d, 0x27f: 0x9d, + // Block 0xa, offset 0x280 + 0x280: 0x9d, 0x281: 0x9d, 0x282: 0x9d, 0x283: 0x9d, 0x284: 0x9d, 0x285: 0x9d, 0x286: 0x9d, 0x287: 0x9d, + 0x288: 0x9d, 0x289: 0x9d, 0x28a: 0x9d, 0x28b: 0x9d, 0x28c: 0x9d, 0x28d: 0x9d, 0x28e: 0x9d, 0x28f: 0x9d, + 0x290: 0x9d, 0x291: 0x9d, 0x292: 0x9d, 0x293: 0x9d, 0x294: 0x9d, 0x295: 0x9d, 0x296: 0x9d, 0x297: 0x9d, + 0x298: 0x9d, 0x299: 0x9d, 0x29a: 0x9d, 0x29b: 0x9d, 0x29c: 0x9d, 0x29d: 0x9d, 0x29e: 0x9d, 0x29f: 0x9d, + 0x2a0: 0x9d, 0x2a1: 0x9d, 0x2a2: 0x9d, 0x2a3: 0x9d, 0x2a4: 0x9d, 0x2a5: 0x9d, 0x2a6: 0x9d, 0x2a7: 0x9d, + 0x2a8: 0x9d, 0x2a9: 0x9d, 0x2aa: 0x9d, 0x2ab: 0x9d, 0x2ac: 0x9d, 0x2ad: 0x9d, 0x2ae: 0x9d, 0x2af: 0x9d, + 0x2b0: 0x9d, 0x2b1: 0x9d, 0x2b2: 0x9d, 0x2b3: 0x9d, 0x2b4: 0x9d, 0x2b5: 0x9d, 0x2b6: 0x9d, 0x2b7: 0x9d, + 0x2b8: 0x9d, 0x2b9: 0x9d, 0x2ba: 0x9d, 0x2bb: 0x9d, 0x2bc: 0x9d, 0x2bd: 0x9d, 0x2be: 0x9d, 0x2bf: 0xe2, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x9d, 0x2c1: 0x9d, 0x2c2: 0x9d, 0x2c3: 0x9d, 0x2c4: 0x9d, 0x2c5: 0x9d, 0x2c6: 0x9d, 0x2c7: 0x9d, + 0x2c8: 0x9d, 0x2c9: 0x9d, 0x2ca: 0x9d, 0x2cb: 0x9d, 0x2cc: 0x9d, 0x2cd: 0x9d, 0x2ce: 0x9d, 0x2cf: 0x9d, + 0x2d0: 0x9d, 0x2d1: 0x9d, 0x2d2: 0xe3, 0x2d3: 0xe4, 0x2d4: 0x9d, 0x2d5: 0x9d, 0x2d6: 0x9d, 0x2d7: 0x9d, + 0x2d8: 0xe5, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe6, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xe7, + 0x2e0: 0xe8, 0x2e1: 0xe9, 0x2e2: 0xea, 0x2e3: 0xeb, 0x2e4: 0xec, 0x2e5: 0xed, 0x2e6: 0xee, 0x2e7: 0xef, + 0x2e8: 0xf0, 0x2e9: 0xf1, 0x2ea: 0xf2, 0x2eb: 0xf3, 0x2ec: 0xf4, 0x2ed: 0xf5, 0x2ee: 0xf6, 0x2ef: 0xf7, + 0x2f0: 0x9d, 0x2f1: 0x9d, 0x2f2: 0x9d, 0x2f3: 0x9d, 0x2f4: 0x9d, 0x2f5: 0x9d, 0x2f6: 0x9d, 0x2f7: 0x9d, + 0x2f8: 0x9d, 0x2f9: 0x9d, 0x2fa: 0x9d, 0x2fb: 0x9d, 0x2fc: 0x9d, 0x2fd: 0x9d, 0x2fe: 0x9d, 0x2ff: 0x9d, + // Block 0xc, offset 0x300 + 0x300: 0x9d, 0x301: 0x9d, 0x302: 0x9d, 0x303: 0x9d, 0x304: 0x9d, 0x305: 0x9d, 0x306: 0x9d, 0x307: 0x9d, + 0x308: 0x9d, 0x309: 0x9d, 0x30a: 0x9d, 0x30b: 0x9d, 0x30c: 0x9d, 0x30d: 0x9d, 0x30e: 0x9d, 0x30f: 0x9d, + 0x310: 0x9d, 0x311: 0x9d, 0x312: 0x9d, 0x313: 0x9d, 0x314: 0x9d, 0x315: 0x9d, 0x316: 0x9d, 0x317: 0x9d, + 0x318: 0x9d, 0x319: 0x9d, 0x31a: 0x9d, 0x31b: 0x9d, 0x31c: 0x9d, 0x31d: 0x9d, 0x31e: 0xf8, 0x31f: 0xf9, + // Block 0xd, offset 0x340 + 0x340: 0xb8, 0x341: 0xb8, 0x342: 0xb8, 0x343: 0xb8, 0x344: 0xb8, 0x345: 0xb8, 0x346: 0xb8, 0x347: 0xb8, + 0x348: 0xb8, 0x349: 0xb8, 0x34a: 0xb8, 0x34b: 0xb8, 0x34c: 0xb8, 0x34d: 0xb8, 0x34e: 0xb8, 0x34f: 0xb8, + 0x350: 0xb8, 0x351: 0xb8, 0x352: 0xb8, 0x353: 0xb8, 0x354: 0xb8, 0x355: 0xb8, 0x356: 0xb8, 0x357: 0xb8, + 0x358: 0xb8, 0x359: 0xb8, 0x35a: 0xb8, 0x35b: 0xb8, 0x35c: 0xb8, 0x35d: 0xb8, 0x35e: 0xb8, 0x35f: 0xb8, + 0x360: 0xb8, 0x361: 0xb8, 0x362: 0xb8, 0x363: 0xb8, 0x364: 0xb8, 0x365: 0xb8, 0x366: 0xb8, 0x367: 0xb8, + 0x368: 0xb8, 0x369: 0xb8, 0x36a: 0xb8, 0x36b: 0xb8, 0x36c: 0xb8, 0x36d: 0xb8, 0x36e: 0xb8, 0x36f: 0xb8, + 0x370: 0xb8, 0x371: 0xb8, 0x372: 0xb8, 0x373: 0xb8, 0x374: 0xb8, 0x375: 0xb8, 0x376: 0xb8, 0x377: 0xb8, + 0x378: 0xb8, 0x379: 0xb8, 0x37a: 0xb8, 0x37b: 0xb8, 0x37c: 0xb8, 0x37d: 0xb8, 0x37e: 0xb8, 0x37f: 0xb8, + // Block 0xe, offset 0x380 + 0x380: 0xb8, 0x381: 0xb8, 0x382: 0xb8, 0x383: 0xb8, 0x384: 0xb8, 0x385: 0xb8, 0x386: 0xb8, 0x387: 0xb8, + 0x388: 0xb8, 0x389: 0xb8, 0x38a: 0xb8, 0x38b: 0xb8, 0x38c: 0xb8, 0x38d: 0xb8, 0x38e: 0xb8, 0x38f: 0xb8, + 0x390: 0xb8, 0x391: 0xb8, 0x392: 0xb8, 0x393: 0xb8, 0x394: 0xb8, 0x395: 0xb8, 0x396: 0xb8, 0x397: 0xb8, + 0x398: 0xb8, 0x399: 0xb8, 0x39a: 0xb8, 0x39b: 0xb8, 0x39c: 0xb8, 0x39d: 0xb8, 0x39e: 0xb8, 0x39f: 0xb8, + 0x3a0: 0xb8, 0x3a1: 0xb8, 0x3a2: 0xb8, 0x3a3: 0xb8, 0x3a4: 0xfa, 0x3a5: 0xfb, 0x3a6: 0xfc, 0x3a7: 0xfd, + 0x3a8: 0x45, 0x3a9: 0xfe, 0x3aa: 0xff, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a, + 0x3b0: 0x100, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x101, 0x3b7: 0x50, + 0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x102, 0x3c1: 0x103, 0x3c2: 0x9d, 0x3c3: 0x104, 0x3c4: 0x105, 0x3c5: 0x9b, 0x3c6: 0x106, 0x3c7: 0x107, + 0x3c8: 0xb8, 0x3c9: 0xb8, 0x3ca: 0x108, 0x3cb: 0x109, 0x3cc: 0x10a, 0x3cd: 0x10b, 0x3ce: 0x10c, 0x3cf: 0x10d, + 0x3d0: 0x10e, 0x3d1: 0x9d, 0x3d2: 0x10f, 0x3d3: 0x110, 0x3d4: 0x111, 0x3d5: 0x112, 0x3d6: 0xb8, 0x3d7: 0xb8, + 0x3d8: 0x9d, 0x3d9: 0x9d, 0x3da: 0x9d, 0x3db: 0x9d, 0x3dc: 0x113, 0x3dd: 0x114, 0x3de: 0xb8, 0x3df: 0xb8, + 0x3e0: 0x115, 0x3e1: 0x116, 0x3e2: 0x117, 0x3e3: 0x118, 0x3e4: 0x119, 0x3e5: 0xb8, 0x3e6: 0x11a, 0x3e7: 0x11b, + 0x3e8: 0x11c, 0x3e9: 0x11d, 0x3ea: 0x11e, 0x3eb: 0x59, 0x3ec: 0x11f, 0x3ed: 0x120, 0x3ee: 0x5a, 0x3ef: 0xb8, + 0x3f0: 0x9d, 0x3f1: 0x121, 0x3f2: 0x122, 0x3f3: 0x123, 0x3f4: 0xb8, 0x3f5: 0xb8, 0x3f6: 0xb8, 0x3f7: 0xb8, + 0x3f8: 0xb8, 0x3f9: 0x124, 0x3fa: 0xb8, 0x3fb: 0xb8, 0x3fc: 0xb8, 0x3fd: 0xb8, 0x3fe: 0xb8, 0x3ff: 0xb8, + // Block 0x10, offset 0x400 + 0x400: 0x125, 0x401: 0x126, 0x402: 0x127, 0x403: 0x128, 0x404: 0x129, 0x405: 0x12a, 0x406: 0x12b, 0x407: 0x12c, + 0x408: 0x12d, 0x409: 0xb8, 0x40a: 0x12e, 0x40b: 0x12f, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xb8, 0x40f: 0xb8, + 0x410: 0x130, 0x411: 0x131, 0x412: 0x132, 0x413: 0x133, 0x414: 0xb8, 0x415: 0xb8, 0x416: 0x134, 0x417: 0x135, + 0x418: 0x136, 0x419: 0x137, 0x41a: 0x138, 0x41b: 0x139, 0x41c: 0x13a, 0x41d: 0xb8, 0x41e: 0xb8, 0x41f: 0xb8, + 0x420: 0xb8, 0x421: 0xb8, 0x422: 0x13b, 0x423: 0x13c, 0x424: 0xb8, 0x425: 0xb8, 0x426: 0xb8, 0x427: 0xb8, + 0x428: 0xb8, 0x429: 0xb8, 0x42a: 0xb8, 0x42b: 0x13d, 0x42c: 0xb8, 0x42d: 0xb8, 0x42e: 0xb8, 0x42f: 0xb8, + 0x430: 0x13e, 0x431: 0x13f, 0x432: 0x140, 0x433: 0xb8, 0x434: 0xb8, 0x435: 0xb8, 0x436: 0xb8, 0x437: 0xb8, + 0x438: 0xb8, 0x439: 0xb8, 0x43a: 0xb8, 0x43b: 0xb8, 0x43c: 0xb8, 0x43d: 0xb8, 0x43e: 0xb8, 0x43f: 0xb8, + // Block 0x11, offset 0x440 + 0x440: 0x9d, 0x441: 0x9d, 0x442: 0x9d, 0x443: 0x9d, 0x444: 0x9d, 0x445: 0x9d, 0x446: 0x9d, 0x447: 0x9d, + 0x448: 0x9d, 0x449: 0x9d, 0x44a: 0x9d, 0x44b: 0x9d, 0x44c: 0x9d, 0x44d: 0x9d, 0x44e: 0x141, 0x44f: 0xb8, + 0x450: 0x9b, 0x451: 0x142, 0x452: 0x9d, 0x453: 0x9d, 0x454: 0x9d, 0x455: 0x143, 0x456: 0xb8, 0x457: 0xb8, + 0x458: 0xb8, 0x459: 0xb8, 0x45a: 0xb8, 0x45b: 0xb8, 0x45c: 0xb8, 0x45d: 0xb8, 0x45e: 0xb8, 0x45f: 0xb8, + 0x460: 0xb8, 0x461: 0xb8, 0x462: 0xb8, 0x463: 0xb8, 0x464: 0xb8, 0x465: 0xb8, 0x466: 0xb8, 0x467: 0xb8, + 0x468: 0xb8, 0x469: 0xb8, 0x46a: 0xb8, 0x46b: 0xb8, 0x46c: 0xb8, 0x46d: 0xb8, 0x46e: 0xb8, 0x46f: 0xb8, + 0x470: 0xb8, 0x471: 0xb8, 0x472: 0xb8, 0x473: 0xb8, 0x474: 0xb8, 0x475: 0xb8, 0x476: 0xb8, 0x477: 0xb8, + 0x478: 0xb8, 0x479: 0xb8, 0x47a: 0xb8, 0x47b: 0xb8, 0x47c: 0xb8, 0x47d: 0xb8, 0x47e: 0xb8, 0x47f: 0xb8, + // Block 0x12, offset 0x480 + 0x480: 0x9d, 0x481: 0x9d, 0x482: 0x9d, 0x483: 0x9d, 0x484: 0x9d, 0x485: 0x9d, 0x486: 0x9d, 0x487: 0x9d, + 0x488: 0x9d, 0x489: 0x9d, 0x48a: 0x9d, 0x48b: 0x9d, 0x48c: 0x9d, 0x48d: 0x9d, 0x48e: 0x9d, 0x48f: 0x9d, + 0x490: 0x144, 0x491: 0xb8, 0x492: 0xb8, 0x493: 0xb8, 0x494: 0xb8, 0x495: 0xb8, 0x496: 0xb8, 0x497: 0xb8, + 0x498: 0xb8, 0x499: 0xb8, 0x49a: 0xb8, 0x49b: 0xb8, 0x49c: 0xb8, 0x49d: 0xb8, 0x49e: 0xb8, 0x49f: 0xb8, + 0x4a0: 0xb8, 0x4a1: 0xb8, 0x4a2: 0xb8, 0x4a3: 0xb8, 0x4a4: 0xb8, 0x4a5: 0xb8, 0x4a6: 0xb8, 0x4a7: 0xb8, + 0x4a8: 0xb8, 0x4a9: 0xb8, 0x4aa: 0xb8, 0x4ab: 0xb8, 0x4ac: 0xb8, 0x4ad: 0xb8, 0x4ae: 0xb8, 0x4af: 0xb8, + 0x4b0: 0xb8, 0x4b1: 0xb8, 0x4b2: 0xb8, 0x4b3: 0xb8, 0x4b4: 0xb8, 0x4b5: 0xb8, 0x4b6: 0xb8, 0x4b7: 0xb8, + 0x4b8: 0xb8, 0x4b9: 0xb8, 0x4ba: 0xb8, 0x4bb: 0xb8, 0x4bc: 0xb8, 0x4bd: 0xb8, 0x4be: 0xb8, 0x4bf: 0xb8, + // Block 0x13, offset 0x4c0 + 0x4c0: 0xb8, 0x4c1: 0xb8, 0x4c2: 0xb8, 0x4c3: 0xb8, 0x4c4: 0xb8, 0x4c5: 0xb8, 0x4c6: 0xb8, 0x4c7: 0xb8, + 0x4c8: 0xb8, 0x4c9: 0xb8, 0x4ca: 0xb8, 0x4cb: 0xb8, 0x4cc: 0xb8, 0x4cd: 0xb8, 0x4ce: 0xb8, 0x4cf: 0xb8, + 0x4d0: 0x9d, 0x4d1: 0x9d, 0x4d2: 0x9d, 0x4d3: 0x9d, 0x4d4: 0x9d, 0x4d5: 0x9d, 0x4d6: 0x9d, 0x4d7: 0x9d, + 0x4d8: 0x9d, 0x4d9: 0x145, 0x4da: 0xb8, 0x4db: 0xb8, 0x4dc: 0xb8, 0x4dd: 0xb8, 0x4de: 0xb8, 0x4df: 0xb8, + 0x4e0: 0xb8, 0x4e1: 0xb8, 0x4e2: 0xb8, 0x4e3: 0xb8, 0x4e4: 0xb8, 0x4e5: 0xb8, 0x4e6: 0xb8, 0x4e7: 0xb8, + 0x4e8: 0xb8, 0x4e9: 0xb8, 0x4ea: 0xb8, 0x4eb: 0xb8, 0x4ec: 0xb8, 0x4ed: 0xb8, 0x4ee: 0xb8, 0x4ef: 0xb8, + 0x4f0: 0xb8, 0x4f1: 0xb8, 0x4f2: 0xb8, 0x4f3: 0xb8, 0x4f4: 0xb8, 0x4f5: 0xb8, 0x4f6: 0xb8, 0x4f7: 0xb8, + 0x4f8: 0xb8, 0x4f9: 0xb8, 0x4fa: 0xb8, 0x4fb: 0xb8, 0x4fc: 0xb8, 0x4fd: 0xb8, 0x4fe: 0xb8, 0x4ff: 0xb8, + // Block 0x14, offset 0x500 + 0x500: 0xb8, 0x501: 0xb8, 0x502: 0xb8, 0x503: 0xb8, 0x504: 0xb8, 0x505: 0xb8, 0x506: 0xb8, 0x507: 0xb8, + 0x508: 0xb8, 0x509: 0xb8, 0x50a: 0xb8, 0x50b: 0xb8, 0x50c: 0xb8, 0x50d: 0xb8, 0x50e: 0xb8, 0x50f: 0xb8, + 0x510: 0xb8, 0x511: 0xb8, 0x512: 0xb8, 0x513: 0xb8, 0x514: 0xb8, 0x515: 0xb8, 0x516: 0xb8, 0x517: 0xb8, + 0x518: 0xb8, 0x519: 0xb8, 0x51a: 0xb8, 0x51b: 0xb8, 0x51c: 0xb8, 0x51d: 0xb8, 0x51e: 0xb8, 0x51f: 0xb8, + 0x520: 0x9d, 0x521: 0x9d, 0x522: 0x9d, 0x523: 0x9d, 0x524: 0x9d, 0x525: 0x9d, 0x526: 0x9d, 0x527: 0x9d, + 0x528: 0x13d, 0x529: 0x146, 0x52a: 0xb8, 0x52b: 0x147, 0x52c: 0x148, 0x52d: 0x149, 0x52e: 0x14a, 0x52f: 0xb8, + 0x530: 0xb8, 0x531: 0xb8, 0x532: 0xb8, 0x533: 0xb8, 0x534: 0xb8, 0x535: 0xb8, 0x536: 0xb8, 0x537: 0xb8, + 0x538: 0xb8, 0x539: 0xb8, 0x53a: 0xb8, 0x53b: 0xb8, 0x53c: 0x9d, 0x53d: 0x14b, 0x53e: 0x14c, 0x53f: 0x14d, + // Block 0x15, offset 0x540 + 0x540: 0x9d, 0x541: 0x9d, 0x542: 0x9d, 0x543: 0x9d, 0x544: 0x9d, 0x545: 0x9d, 0x546: 0x9d, 0x547: 0x9d, + 0x548: 0x9d, 0x549: 0x9d, 0x54a: 0x9d, 0x54b: 0x9d, 0x54c: 0x9d, 0x54d: 0x9d, 0x54e: 0x9d, 0x54f: 0x9d, + 0x550: 0x9d, 0x551: 0x9d, 0x552: 0x9d, 0x553: 0x9d, 0x554: 0x9d, 0x555: 0x9d, 0x556: 0x9d, 0x557: 0x9d, + 0x558: 0x9d, 0x559: 0x9d, 0x55a: 0x9d, 0x55b: 0x9d, 0x55c: 0x9d, 0x55d: 0x9d, 0x55e: 0x9d, 0x55f: 0x14e, + 0x560: 0x9d, 0x561: 0x9d, 0x562: 0x9d, 0x563: 0x9d, 0x564: 0x9d, 0x565: 0x9d, 0x566: 0x9d, 0x567: 0x9d, + 0x568: 0x9d, 0x569: 0x9d, 0x56a: 0x9d, 0x56b: 0x14f, 0x56c: 0xb8, 0x56d: 0xb8, 0x56e: 0xb8, 0x56f: 0xb8, + 0x570: 0xb8, 0x571: 0xb8, 0x572: 0xb8, 0x573: 0xb8, 0x574: 0xb8, 0x575: 0xb8, 0x576: 0xb8, 0x577: 0xb8, + 0x578: 0xb8, 0x579: 0xb8, 0x57a: 0xb8, 0x57b: 0xb8, 0x57c: 0xb8, 0x57d: 0xb8, 0x57e: 0xb8, 0x57f: 0xb8, + // Block 0x16, offset 0x580 + 0x580: 0x150, 0x581: 0xb8, 0x582: 0xb8, 0x583: 0xb8, 0x584: 0xb8, 0x585: 0xb8, 0x586: 0xb8, 0x587: 0xb8, + 0x588: 0xb8, 0x589: 0xb8, 0x58a: 0xb8, 0x58b: 0xb8, 0x58c: 0xb8, 0x58d: 0xb8, 0x58e: 0xb8, 0x58f: 0xb8, + 0x590: 0xb8, 0x591: 0xb8, 0x592: 0xb8, 0x593: 0xb8, 0x594: 0xb8, 0x595: 0xb8, 0x596: 0xb8, 0x597: 0xb8, + 0x598: 0xb8, 0x599: 0xb8, 0x59a: 0xb8, 0x59b: 0xb8, 0x59c: 0xb8, 0x59d: 0xb8, 0x59e: 0xb8, 0x59f: 0xb8, + 0x5a0: 0xb8, 0x5a1: 0xb8, 0x5a2: 0xb8, 0x5a3: 0xb8, 0x5a4: 0xb8, 0x5a5: 0xb8, 0x5a6: 0xb8, 0x5a7: 0xb8, + 0x5a8: 0xb8, 0x5a9: 0xb8, 0x5aa: 0xb8, 0x5ab: 0xb8, 0x5ac: 0xb8, 0x5ad: 0xb8, 0x5ae: 0xb8, 0x5af: 0xb8, + 0x5b0: 0x9d, 0x5b1: 0x151, 0x5b2: 0x152, 0x5b3: 0xb8, 0x5b4: 0xb8, 0x5b5: 0xb8, 0x5b6: 0xb8, 0x5b7: 0xb8, + 0x5b8: 0xb8, 0x5b9: 0xb8, 0x5ba: 0xb8, 0x5bb: 0xb8, 0x5bc: 0xb8, 0x5bd: 0xb8, 0x5be: 0xb8, 0x5bf: 0xb8, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x153, 0x5c4: 0x154, 0x5c5: 0x155, 0x5c6: 0x156, 0x5c7: 0x157, + 0x5c8: 0x9b, 0x5c9: 0x158, 0x5ca: 0xb8, 0x5cb: 0xb8, 0x5cc: 0x9b, 0x5cd: 0x159, 0x5ce: 0xb8, 0x5cf: 0xb8, + 0x5d0: 0x5d, 0x5d1: 0x5e, 0x5d2: 0x5f, 0x5d3: 0x60, 0x5d4: 0x61, 0x5d5: 0x62, 0x5d6: 0x63, 0x5d7: 0x64, + 0x5d8: 0x65, 0x5d9: 0x66, 0x5da: 0x67, 0x5db: 0x68, 0x5dc: 0x69, 0x5dd: 0x6a, 0x5de: 0x6b, 0x5df: 0x6c, + 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, + 0x5e8: 0x15a, 0x5e9: 0x15b, 0x5ea: 0x15c, 0x5eb: 0xb8, 0x5ec: 0xb8, 0x5ed: 0xb8, 0x5ee: 0xb8, 0x5ef: 0xb8, + 0x5f0: 0xb8, 0x5f1: 0xb8, 0x5f2: 0xb8, 0x5f3: 0xb8, 0x5f4: 0xb8, 0x5f5: 0xb8, 0x5f6: 0xb8, 0x5f7: 0xb8, + 0x5f8: 0xb8, 0x5f9: 0xb8, 0x5fa: 0xb8, 0x5fb: 0xb8, 0x5fc: 0xb8, 0x5fd: 0xb8, 0x5fe: 0xb8, 0x5ff: 0xb8, + // Block 0x18, offset 0x600 + 0x600: 0x15d, 0x601: 0xb8, 0x602: 0xb8, 0x603: 0xb8, 0x604: 0xb8, 0x605: 0xb8, 0x606: 0xb8, 0x607: 0xb8, + 0x608: 0xb8, 0x609: 0xb8, 0x60a: 0xb8, 0x60b: 0xb8, 0x60c: 0xb8, 0x60d: 0xb8, 0x60e: 0xb8, 0x60f: 0xb8, + 0x610: 0xb8, 0x611: 0xb8, 0x612: 0xb8, 0x613: 0xb8, 0x614: 0xb8, 0x615: 0xb8, 0x616: 0xb8, 0x617: 0xb8, + 0x618: 0xb8, 0x619: 0xb8, 0x61a: 0xb8, 0x61b: 0xb8, 0x61c: 0xb8, 0x61d: 0xb8, 0x61e: 0xb8, 0x61f: 0xb8, + 0x620: 0x9d, 0x621: 0x9d, 0x622: 0x9d, 0x623: 0x15e, 0x624: 0x6d, 0x625: 0x15f, 0x626: 0xb8, 0x627: 0xb8, + 0x628: 0xb8, 0x629: 0xb8, 0x62a: 0xb8, 0x62b: 0xb8, 0x62c: 0xb8, 0x62d: 0xb8, 0x62e: 0xb8, 0x62f: 0xb8, + 0x630: 0xb8, 0x631: 0xb8, 0x632: 0xb8, 0x633: 0xb8, 0x634: 0xb8, 0x635: 0xb8, 0x636: 0xb8, 0x637: 0xb8, + 0x638: 0x6e, 0x639: 0x6f, 0x63a: 0x70, 0x63b: 0x160, 0x63c: 0xb8, 0x63d: 0xb8, 0x63e: 0xb8, 0x63f: 0xb8, + // Block 0x19, offset 0x640 + 0x640: 0x161, 0x641: 0x9b, 0x642: 0x162, 0x643: 0x163, 0x644: 0x71, 0x645: 0x72, 0x646: 0x164, 0x647: 0x165, + 0x648: 0x73, 0x649: 0x166, 0x64a: 0xb8, 0x64b: 0xb8, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x167, 0x65c: 0x9b, 0x65d: 0x168, 0x65e: 0x9b, 0x65f: 0x169, + 0x660: 0x16a, 0x661: 0x16b, 0x662: 0x16c, 0x663: 0xb8, 0x664: 0x16d, 0x665: 0x16e, 0x666: 0x16f, 0x667: 0x170, + 0x668: 0xb8, 0x669: 0xb8, 0x66a: 0xb8, 0x66b: 0xb8, 0x66c: 0xb8, 0x66d: 0xb8, 0x66e: 0xb8, 0x66f: 0xb8, + 0x670: 0xb8, 0x671: 0xb8, 0x672: 0xb8, 0x673: 0xb8, 0x674: 0xb8, 0x675: 0xb8, 0x676: 0xb8, 0x677: 0xb8, + 0x678: 0xb8, 0x679: 0xb8, 0x67a: 0xb8, 0x67b: 0xb8, 0x67c: 0xb8, 0x67d: 0xb8, 0x67e: 0xb8, 0x67f: 0xb8, + // Block 0x1a, offset 0x680 + 0x680: 0x9d, 0x681: 0x9d, 0x682: 0x9d, 0x683: 0x9d, 0x684: 0x9d, 0x685: 0x9d, 0x686: 0x9d, 0x687: 0x9d, + 0x688: 0x9d, 0x689: 0x9d, 0x68a: 0x9d, 0x68b: 0x9d, 0x68c: 0x9d, 0x68d: 0x9d, 0x68e: 0x9d, 0x68f: 0x9d, + 0x690: 0x9d, 0x691: 0x9d, 0x692: 0x9d, 0x693: 0x9d, 0x694: 0x9d, 0x695: 0x9d, 0x696: 0x9d, 0x697: 0x9d, + 0x698: 0x9d, 0x699: 0x9d, 0x69a: 0x9d, 0x69b: 0x171, 0x69c: 0x9d, 0x69d: 0x9d, 0x69e: 0x9d, 0x69f: 0x9d, + 0x6a0: 0x9d, 0x6a1: 0x9d, 0x6a2: 0x9d, 0x6a3: 0x9d, 0x6a4: 0x9d, 0x6a5: 0x9d, 0x6a6: 0x9d, 0x6a7: 0x9d, + 0x6a8: 0x9d, 0x6a9: 0x9d, 0x6aa: 0x9d, 0x6ab: 0x9d, 0x6ac: 0x9d, 0x6ad: 0x9d, 0x6ae: 0x9d, 0x6af: 0x9d, + 0x6b0: 0x9d, 0x6b1: 0x9d, 0x6b2: 0x9d, 0x6b3: 0x9d, 0x6b4: 0x9d, 0x6b5: 0x9d, 0x6b6: 0x9d, 0x6b7: 0x9d, + 0x6b8: 0x9d, 0x6b9: 0x9d, 0x6ba: 0x9d, 0x6bb: 0x9d, 0x6bc: 0x9d, 0x6bd: 0x9d, 0x6be: 0x9d, 0x6bf: 0x9d, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x9d, 0x6c1: 0x9d, 0x6c2: 0x9d, 0x6c3: 0x9d, 0x6c4: 0x9d, 0x6c5: 0x9d, 0x6c6: 0x9d, 0x6c7: 0x9d, + 0x6c8: 0x9d, 0x6c9: 0x9d, 0x6ca: 0x9d, 0x6cb: 0x9d, 0x6cc: 0x9d, 0x6cd: 0x9d, 0x6ce: 0x9d, 0x6cf: 0x9d, + 0x6d0: 0x9d, 0x6d1: 0x9d, 0x6d2: 0x9d, 0x6d3: 0x9d, 0x6d4: 0x9d, 0x6d5: 0x9d, 0x6d6: 0x9d, 0x6d7: 0x9d, + 0x6d8: 0x9d, 0x6d9: 0x9d, 0x6da: 0x9d, 0x6db: 0x9d, 0x6dc: 0x172, 0x6dd: 0x9d, 0x6de: 0x9d, 0x6df: 0x9d, + 0x6e0: 0x173, 0x6e1: 0x9d, 0x6e2: 0x9d, 0x6e3: 0x9d, 0x6e4: 0x9d, 0x6e5: 0x9d, 0x6e6: 0x9d, 0x6e7: 0x9d, + 0x6e8: 0x9d, 0x6e9: 0x9d, 0x6ea: 0x9d, 0x6eb: 0x9d, 0x6ec: 0x9d, 0x6ed: 0x9d, 0x6ee: 0x9d, 0x6ef: 0x9d, + 0x6f0: 0x9d, 0x6f1: 0x9d, 0x6f2: 0x9d, 0x6f3: 0x9d, 0x6f4: 0x9d, 0x6f5: 0x9d, 0x6f6: 0x9d, 0x6f7: 0x9d, + 0x6f8: 0x9d, 0x6f9: 0x9d, 0x6fa: 0x9d, 0x6fb: 0x9d, 0x6fc: 0x9d, 0x6fd: 0x9d, 0x6fe: 0x9d, 0x6ff: 0x9d, + // Block 0x1c, offset 0x700 + 0x700: 0x9d, 0x701: 0x9d, 0x702: 0x9d, 0x703: 0x9d, 0x704: 0x9d, 0x705: 0x9d, 0x706: 0x9d, 0x707: 0x9d, + 0x708: 0x9d, 0x709: 0x9d, 0x70a: 0x9d, 0x70b: 0x9d, 0x70c: 0x9d, 0x70d: 0x9d, 0x70e: 0x9d, 0x70f: 0x9d, + 0x710: 0x9d, 0x711: 0x9d, 0x712: 0x9d, 0x713: 0x9d, 0x714: 0x9d, 0x715: 0x9d, 0x716: 0x9d, 0x717: 0x9d, + 0x718: 0x9d, 0x719: 0x9d, 0x71a: 0x9d, 0x71b: 0x9d, 0x71c: 0x9d, 0x71d: 0x9d, 0x71e: 0x9d, 0x71f: 0x9d, + 0x720: 0x9d, 0x721: 0x9d, 0x722: 0x9d, 0x723: 0x9d, 0x724: 0x9d, 0x725: 0x9d, 0x726: 0x9d, 0x727: 0x9d, + 0x728: 0x9d, 0x729: 0x9d, 0x72a: 0x9d, 0x72b: 0x9d, 0x72c: 0x9d, 0x72d: 0x9d, 0x72e: 0x9d, 0x72f: 0x9d, + 0x730: 0x9d, 0x731: 0x9d, 0x732: 0x9d, 0x733: 0x9d, 0x734: 0x9d, 0x735: 0x9d, 0x736: 0x9d, 0x737: 0x9d, + 0x738: 0x9d, 0x739: 0x9d, 0x73a: 0x174, 0x73b: 0xb8, 0x73c: 0xb8, 0x73d: 0xb8, 0x73e: 0xb8, 0x73f: 0xb8, + // Block 0x1d, offset 0x740 + 0x740: 0xb8, 0x741: 0xb8, 0x742: 0xb8, 0x743: 0xb8, 0x744: 0xb8, 0x745: 0xb8, 0x746: 0xb8, 0x747: 0xb8, + 0x748: 0xb8, 0x749: 0xb8, 0x74a: 0xb8, 0x74b: 0xb8, 0x74c: 0xb8, 0x74d: 0xb8, 0x74e: 0xb8, 0x74f: 0xb8, + 0x750: 0xb8, 0x751: 0xb8, 0x752: 0xb8, 0x753: 0xb8, 0x754: 0xb8, 0x755: 0xb8, 0x756: 0xb8, 0x757: 0xb8, + 0x758: 0xb8, 0x759: 0xb8, 0x75a: 0xb8, 0x75b: 0xb8, 0x75c: 0xb8, 0x75d: 0xb8, 0x75e: 0xb8, 0x75f: 0xb8, + 0x760: 0x74, 0x761: 0x75, 0x762: 0x76, 0x763: 0x175, 0x764: 0x77, 0x765: 0x78, 0x766: 0x176, 0x767: 0x79, + 0x768: 0x7a, 0x769: 0xb8, 0x76a: 0xb8, 0x76b: 0xb8, 0x76c: 0xb8, 0x76d: 0xb8, 0x76e: 0xb8, 0x76f: 0xb8, + 0x770: 0xb8, 0x771: 0xb8, 0x772: 0xb8, 0x773: 0xb8, 0x774: 0xb8, 0x775: 0xb8, 0x776: 0xb8, 0x777: 0xb8, + 0x778: 0xb8, 0x779: 0xb8, 0x77a: 0xb8, 0x77b: 0xb8, 0x77c: 0xb8, 0x77d: 0xb8, 0x77e: 0xb8, 0x77f: 0xb8, + // Block 0x1e, offset 0x780 + 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, + 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, + 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, + 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, + 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, + 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, + 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, + 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, + 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, + 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, + 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, + 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, + 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, + // Block 0x20, offset 0x800 + 0x800: 0x177, 0x801: 0x178, 0x802: 0xb8, 0x803: 0xb8, 0x804: 0x179, 0x805: 0x179, 0x806: 0x179, 0x807: 0x17a, + 0x808: 0xb8, 0x809: 0xb8, 0x80a: 0xb8, 0x80b: 0xb8, 0x80c: 0xb8, 0x80d: 0xb8, 0x80e: 0xb8, 0x80f: 0xb8, + 0x810: 0xb8, 0x811: 0xb8, 0x812: 0xb8, 0x813: 0xb8, 0x814: 0xb8, 0x815: 0xb8, 0x816: 0xb8, 0x817: 0xb8, + 0x818: 0xb8, 0x819: 0xb8, 0x81a: 0xb8, 0x81b: 0xb8, 0x81c: 0xb8, 0x81d: 0xb8, 0x81e: 0xb8, 0x81f: 0xb8, + 0x820: 0xb8, 0x821: 0xb8, 0x822: 0xb8, 0x823: 0xb8, 0x824: 0xb8, 0x825: 0xb8, 0x826: 0xb8, 0x827: 0xb8, + 0x828: 0xb8, 0x829: 0xb8, 0x82a: 0xb8, 0x82b: 0xb8, 0x82c: 0xb8, 0x82d: 0xb8, 0x82e: 0xb8, 0x82f: 0xb8, + 0x830: 0xb8, 0x831: 0xb8, 0x832: 0xb8, 0x833: 0xb8, 0x834: 0xb8, 0x835: 0xb8, 0x836: 0xb8, 0x837: 0xb8, + 0x838: 0xb8, 0x839: 0xb8, 0x83a: 0xb8, 0x83b: 0xb8, 0x83c: 0xb8, 0x83d: 0xb8, 0x83e: 0xb8, 0x83f: 0xb8, + // Block 0x21, offset 0x840 + 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, + 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, + 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, + 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, + 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, + 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, + 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, + 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, + // Block 0x22, offset 0x880 + 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, + 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, +} + +// idnaSparseOffset: 256 entries, 512 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x5c, 0x60, 0x6f, 0x74, 0x7b, 0x87, 0x95, 0xa3, 0xa8, 0xb1, 0xc1, 0xcf, 0xdc, 0xe8, 0xf9, 0x103, 0x10a, 0x117, 0x128, 0x12f, 0x13a, 0x149, 0x157, 0x161, 0x163, 0x167, 0x169, 0x175, 0x180, 0x188, 0x18e, 0x194, 0x199, 0x19e, 0x1a1, 0x1a5, 0x1ab, 0x1b0, 0x1bc, 0x1c6, 0x1cc, 0x1dd, 0x1e7, 0x1ea, 0x1f2, 0x1f5, 0x202, 0x20a, 0x20e, 0x215, 0x21d, 0x22d, 0x239, 0x23b, 0x245, 0x251, 0x25d, 0x269, 0x271, 0x276, 0x280, 0x291, 0x295, 0x2a0, 0x2a4, 0x2ad, 0x2b5, 0x2bb, 0x2c0, 0x2c3, 0x2c6, 0x2ca, 0x2d0, 0x2d4, 0x2d8, 0x2de, 0x2e5, 0x2eb, 0x2f3, 0x2fa, 0x305, 0x30f, 0x313, 0x316, 0x31c, 0x320, 0x322, 0x325, 0x327, 0x32a, 0x334, 0x337, 0x346, 0x34a, 0x34f, 0x352, 0x356, 0x35b, 0x360, 0x366, 0x36c, 0x37b, 0x381, 0x385, 0x394, 0x399, 0x3a1, 0x3ab, 0x3b6, 0x3be, 0x3cf, 0x3d8, 0x3e8, 0x3f5, 0x3ff, 0x404, 0x411, 0x415, 0x41a, 0x41c, 0x420, 0x422, 0x426, 0x42f, 0x435, 0x439, 0x449, 0x453, 0x458, 0x45b, 0x461, 0x468, 0x46d, 0x471, 0x477, 0x47c, 0x485, 0x48a, 0x490, 0x497, 0x49e, 0x4a5, 0x4a9, 0x4ae, 0x4b1, 0x4b6, 0x4c2, 0x4c8, 0x4cd, 0x4d4, 0x4dc, 0x4e1, 0x4e5, 0x4f5, 0x4fc, 0x500, 0x504, 0x50b, 0x50e, 0x511, 0x515, 0x519, 0x51f, 0x528, 0x534, 0x53b, 0x544, 0x54c, 0x553, 0x561, 0x56e, 0x57b, 0x584, 0x588, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5e5, 0x5ea, 0x5ed, 0x5f7, 0x600, 0x60c, 0x60f, 0x614, 0x617, 0x61a, 0x61d, 0x624, 0x62b, 0x62f, 0x63a, 0x63d, 0x643, 0x648, 0x64c, 0x64f, 0x652, 0x655, 0x65a, 0x664, 0x667, 0x66b, 0x67a, 0x686, 0x68a, 0x68f, 0x694, 0x698, 0x69d, 0x6a6, 0x6b1, 0x6b7, 0x6bf, 0x6c3, 0x6c7, 0x6cd, 0x6d3, 0x6d8, 0x6db, 0x6e9, 0x6f0, 0x6f3, 0x6f6, 0x6fa, 0x700, 0x705, 0x70f, 0x714, 0x717, 0x71a, 0x71d, 0x720, 0x724, 0x727, 0x737, 0x748, 0x74d, 0x74f, 0x751} + +// idnaSparseValues: 1876 entries, 7504 bytes +var idnaSparseValues = [1876]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x07}, + {value: 0xe105, lo: 0x80, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x97}, + {value: 0xe105, lo: 0x98, hi: 0x9e}, + {value: 0x001f, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbf}, + // Block 0x1, offset 0x8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0xe01d, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0335, lo: 0x83, hi: 0x83}, + {value: 0x034d, lo: 0x84, hi: 0x84}, + {value: 0x0365, lo: 0x85, hi: 0x85}, + {value: 0xe00d, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0xe00d, lo: 0x88, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x89}, + {value: 0xe00d, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe00d, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0x8d}, + {value: 0xe00d, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0xbf}, + // Block 0x2, offset 0x19 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0249, lo: 0xb0, hi: 0xb0}, + {value: 0x037d, lo: 0xb1, hi: 0xb1}, + {value: 0x0259, lo: 0xb2, hi: 0xb2}, + {value: 0x0269, lo: 0xb3, hi: 0xb3}, + {value: 0x034d, lo: 0xb4, hi: 0xb4}, + {value: 0x0395, lo: 0xb5, hi: 0xb5}, + {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, + {value: 0x0279, lo: 0xb7, hi: 0xb7}, + {value: 0x0289, lo: 0xb8, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbf}, + // Block 0x3, offset 0x25 + {value: 0x0000, lo: 0x01}, + {value: 0x1308, lo: 0x80, hi: 0xbf}, + // Block 0x4, offset 0x27 + {value: 0x0000, lo: 0x04}, + {value: 0x03f5, lo: 0x80, hi: 0x8f}, + {value: 0xe105, lo: 0x90, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x5, offset 0x2c + {value: 0x0000, lo: 0x07}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x0545, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x6, offset 0x34 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0401, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x88}, + {value: 0x0018, lo: 0x89, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x1308, lo: 0x91, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbe}, + {value: 0x1308, lo: 0xbf, hi: 0xbf}, + // Block 0x7, offset 0x3f + {value: 0x0000, lo: 0x0b}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x83}, + {value: 0x1308, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x1308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x8, offset 0x4b + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0208, lo: 0x81, hi: 0x87}, + {value: 0x0408, lo: 0x88, hi: 0x88}, + {value: 0x0208, lo: 0x89, hi: 0x8a}, + {value: 0x1308, lo: 0x8b, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xad}, + {value: 0x0208, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb0}, + {value: 0x0408, lo: 0xb1, hi: 0xb3}, + {value: 0x0008, lo: 0xb4, hi: 0xb4}, + {value: 0x0429, lo: 0xb5, hi: 0xb5}, + {value: 0x0451, lo: 0xb6, hi: 0xb6}, + {value: 0x0479, lo: 0xb7, hi: 0xb7}, + {value: 0x04a1, lo: 0xb8, hi: 0xb8}, + {value: 0x0208, lo: 0xb9, hi: 0xbf}, + // Block 0x9, offset 0x5c + {value: 0x0000, lo: 0x03}, + {value: 0x0208, lo: 0x80, hi: 0x87}, + {value: 0x0408, lo: 0x88, hi: 0x99}, + {value: 0x0208, lo: 0x9a, hi: 0xbf}, + // Block 0xa, offset 0x60 + {value: 0x0000, lo: 0x0e}, + {value: 0x1308, lo: 0x80, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0408, lo: 0x8d, hi: 0x8d}, + {value: 0x0208, lo: 0x8e, hi: 0x98}, + {value: 0x0408, lo: 0x99, hi: 0x9b}, + {value: 0x0208, lo: 0x9c, hi: 0xaa}, + {value: 0x0408, lo: 0xab, hi: 0xac}, + {value: 0x0208, lo: 0xad, hi: 0xb0}, + {value: 0x0408, lo: 0xb1, hi: 0xb1}, + {value: 0x0208, lo: 0xb2, hi: 0xb2}, + {value: 0x0408, lo: 0xb3, hi: 0xb4}, + {value: 0x0208, lo: 0xb5, hi: 0xb7}, + {value: 0x0408, lo: 0xb8, hi: 0xb9}, + {value: 0x0208, lo: 0xba, hi: 0xbf}, + // Block 0xb, offset 0x6f + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xc, offset 0x74 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0208, lo: 0x8a, hi: 0xaa}, + {value: 0x1308, lo: 0xab, hi: 0xb3}, + {value: 0x0008, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0xd, offset 0x7b + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x1308, lo: 0x96, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0xa3}, + {value: 0x0008, lo: 0xa4, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xa8}, + {value: 0x1308, lo: 0xa9, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xe, offset 0x87 + {value: 0x0000, lo: 0x0d}, + {value: 0x0408, lo: 0x80, hi: 0x80}, + {value: 0x0208, lo: 0x81, hi: 0x85}, + {value: 0x0408, lo: 0x86, hi: 0x87}, + {value: 0x0208, lo: 0x88, hi: 0x88}, + {value: 0x0408, lo: 0x89, hi: 0x89}, + {value: 0x0208, lo: 0x8a, hi: 0x93}, + {value: 0x0408, lo: 0x94, hi: 0x94}, + {value: 0x0208, lo: 0x95, hi: 0x95}, + {value: 0x0008, lo: 0x96, hi: 0x98}, + {value: 0x1308, lo: 0x99, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xf, offset 0x95 + {value: 0x0000, lo: 0x0d}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xa9}, + {value: 0x0408, lo: 0xaa, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0408, lo: 0xae, hi: 0xae}, + {value: 0x0208, lo: 0xaf, hi: 0xb0}, + {value: 0x0408, lo: 0xb1, hi: 0xb2}, + {value: 0x0208, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0208, lo: 0xb6, hi: 0xb8}, + {value: 0x0408, lo: 0xb9, hi: 0xb9}, + {value: 0x0208, lo: 0xba, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x10, offset 0xa3 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x93}, + {value: 0x1308, lo: 0x94, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x1308, lo: 0xa3, hi: 0xbf}, + // Block 0x11, offset 0xa8 + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb9}, + {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x12, offset 0xb1 + {value: 0x0000, lo: 0x0f}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x1008, lo: 0x81, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x85}, + {value: 0x1008, lo: 0x86, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x1008, lo: 0x8a, hi: 0x8c}, + {value: 0x1b08, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x96}, + {value: 0x1008, lo: 0x97, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x13, offset 0xc1 + {value: 0x0000, lo: 0x0d}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x1008, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x1308, lo: 0xbe, hi: 0xbf}, + // Block 0x14, offset 0xcf + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x15, offset 0xdc + {value: 0x0000, lo: 0x0b}, + {value: 0x0040, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x16, offset 0xe8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x89}, + {value: 0x1b08, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8e}, + {value: 0x1008, lo: 0x8f, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x95}, + {value: 0x1308, lo: 0x96, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x1008, lo: 0x98, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb1}, + {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x17, offset 0xf9 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xb0}, + {value: 0x1308, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb2}, + {value: 0x08f1, lo: 0xb3, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb9}, + {value: 0x1b08, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x18, offset 0x103 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x1308, lo: 0x87, hi: 0x8e}, + {value: 0x0018, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0xbf}, + // Block 0x19, offset 0x10a + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x1308, lo: 0x88, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0961, lo: 0x9c, hi: 0x9c}, + {value: 0x0999, lo: 0x9d, hi: 0x9d}, + {value: 0x0008, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1a, offset 0x117 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe03d, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x97}, + {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xb8}, + {value: 0x1308, lo: 0xb9, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x1b, offset 0x128 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0x1c, offset 0x12f + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x1008, lo: 0xab, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xb0}, + {value: 0x1008, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb7}, + {value: 0x1008, lo: 0xb8, hi: 0xb8}, + {value: 0x1b08, lo: 0xb9, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbc}, + {value: 0x1308, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x1d, offset 0x13a + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x1008, lo: 0x96, hi: 0x97}, + {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x1308, lo: 0x9e, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xa1}, + {value: 0x1008, lo: 0xa2, hi: 0xa4}, + {value: 0x0008, lo: 0xa5, hi: 0xa6}, + {value: 0x1008, lo: 0xa7, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x1308, lo: 0xb1, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xbf}, + // Block 0x1e, offset 0x149 + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x1008, lo: 0x87, hi: 0x8c}, + {value: 0x1308, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x8e}, + {value: 0x1008, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x1008, lo: 0x9a, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1f, offset 0x157 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x86}, + {value: 0x055d, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8c}, + {value: 0x055d, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0xe105, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0x20, offset 0x161 + {value: 0x0000, lo: 0x01}, + {value: 0x0018, lo: 0x80, hi: 0xbf}, + // Block 0x21, offset 0x163 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbf}, + // Block 0x22, offset 0x167 + {value: 0x0000, lo: 0x01}, + {value: 0x0008, lo: 0x80, hi: 0xbf}, + // Block 0x23, offset 0x169 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x24, offset 0x175 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x25, offset 0x180 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x26, offset 0x188 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x27, offset 0x18e + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x28, offset 0x194 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x29, offset 0x199 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x2a, offset 0x19e + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x2b, offset 0x1a1 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xbf}, + // Block 0x2c, offset 0x1a5 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2d, offset 0x1ab + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x2e, offset 0x1b0 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0x93}, + {value: 0x1b08, lo: 0x94, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x1b08, lo: 0xb4, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x2f, offset 0x1bc + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x30, offset 0x1c6 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xb3}, + {value: 0x1340, lo: 0xb4, hi: 0xb5}, + {value: 0x1008, lo: 0xb6, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbf}, + // Block 0x31, offset 0x1cc + {value: 0x0000, lo: 0x10}, + {value: 0x1008, lo: 0x80, hi: 0x85}, + {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x1008, lo: 0x87, hi: 0x88}, + {value: 0x1308, lo: 0x89, hi: 0x91}, + {value: 0x1b08, lo: 0x92, hi: 0x92}, + {value: 0x1308, lo: 0x93, hi: 0x93}, + {value: 0x0018, lo: 0x94, hi: 0x96}, + {value: 0x0008, lo: 0x97, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x32, offset 0x1dd + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x86}, + {value: 0x0218, lo: 0x87, hi: 0x87}, + {value: 0x0018, lo: 0x88, hi: 0x8a}, + {value: 0x13c0, lo: 0x8b, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xbf}, + // Block 0x33, offset 0x1e7 + {value: 0x0000, lo: 0x02}, + {value: 0x0208, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x34, offset 0x1ea + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x0208, lo: 0x87, hi: 0xa8}, + {value: 0x1308, lo: 0xa9, hi: 0xa9}, + {value: 0x0208, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x35, offset 0x1f2 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0x36, offset 0x1f5 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa6}, + {value: 0x1308, lo: 0xa7, hi: 0xa8}, + {value: 0x1008, lo: 0xa9, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb2}, + {value: 0x1008, lo: 0xb3, hi: 0xb8}, + {value: 0x1308, lo: 0xb9, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x37, offset 0x202 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x38, offset 0x20a + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x39, offset 0x20e + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0028, lo: 0x9a, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xbf}, + // Block 0x3a, offset 0x215 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x1308, lo: 0x97, hi: 0x98}, + {value: 0x1008, lo: 0x99, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x3b, offset 0x21d + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x94}, + {value: 0x1008, lo: 0x95, hi: 0x95}, + {value: 0x1308, lo: 0x96, hi: 0x96}, + {value: 0x1008, lo: 0x97, hi: 0x97}, + {value: 0x1308, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x1b08, lo: 0xa0, hi: 0xa0}, + {value: 0x1008, lo: 0xa1, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xac}, + {value: 0x1008, lo: 0xad, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x1308, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x22d + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xbd}, + {value: 0x1318, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x239 + {value: 0x0000, lo: 0x01}, + {value: 0x0040, lo: 0x80, hi: 0xbf}, + // Block 0x3e, offset 0x23b + {value: 0x0000, lo: 0x09}, + {value: 0x1308, lo: 0x80, hi: 0x83}, + {value: 0x1008, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x1008, lo: 0xb5, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x1008, lo: 0xbd, hi: 0xbf}, + // Block 0x3f, offset 0x245 + {value: 0x0000, lo: 0x0b}, + {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x1808, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xaa}, + {value: 0x1308, lo: 0xab, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x40, offset 0x251 + {value: 0x0000, lo: 0x0b}, + {value: 0x1308, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa0}, + {value: 0x1008, lo: 0xa1, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa5}, + {value: 0x1008, lo: 0xa6, hi: 0xa7}, + {value: 0x1308, lo: 0xa8, hi: 0xa9}, + {value: 0x1808, lo: 0xaa, hi: 0xaa}, + {value: 0x1b08, lo: 0xab, hi: 0xab}, + {value: 0x1308, lo: 0xac, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xbf}, + // Block 0x41, offset 0x25d + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xa6}, + {value: 0x1008, lo: 0xa7, hi: 0xa7}, + {value: 0x1308, lo: 0xa8, hi: 0xa9}, + {value: 0x1008, lo: 0xaa, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x1008, lo: 0xae, hi: 0xae}, + {value: 0x1308, lo: 0xaf, hi: 0xb1}, + {value: 0x1808, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x42, offset 0x269 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x1008, lo: 0xa4, hi: 0xab}, + {value: 0x1308, lo: 0xac, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x43, offset 0x271 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x44, offset 0x276 + {value: 0x0000, lo: 0x09}, + {value: 0x0e29, lo: 0x80, hi: 0x80}, + {value: 0x0e41, lo: 0x81, hi: 0x81}, + {value: 0x0e59, lo: 0x82, hi: 0x82}, + {value: 0x0e71, lo: 0x83, hi: 0x83}, + {value: 0x0e89, lo: 0x84, hi: 0x85}, + {value: 0x0ea1, lo: 0x86, hi: 0x86}, + {value: 0x0eb9, lo: 0x87, hi: 0x87}, + {value: 0x057d, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0x45, offset 0x280 + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x1308, lo: 0x90, hi: 0x92}, + {value: 0x0018, lo: 0x93, hi: 0x93}, + {value: 0x1308, lo: 0x94, hi: 0xa0}, + {value: 0x1008, lo: 0xa1, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa8}, + {value: 0x0008, lo: 0xa9, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb1}, + {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x46, offset 0x291 + {value: 0x0000, lo: 0x03}, + {value: 0x1308, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x1308, lo: 0xbb, hi: 0xbf}, + // Block 0x47, offset 0x295 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x87}, + {value: 0xe045, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0xe045, lo: 0x98, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0xe045, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbf}, + // Block 0x48, offset 0x2a0 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x1318, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbf}, + // Block 0x49, offset 0x2a4 + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x24c1, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x4a, offset 0x2ad + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x24f1, lo: 0xac, hi: 0xac}, + {value: 0x2529, lo: 0xad, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xae}, + {value: 0x2579, lo: 0xaf, hi: 0xaf}, + {value: 0x25b1, lo: 0xb0, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0x4b, offset 0x2b5 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x9f}, + {value: 0x0080, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xad}, + {value: 0x0080, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x4c, offset 0x2bb + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa8}, + {value: 0x09c5, lo: 0xa9, hi: 0xa9}, + {value: 0x09e5, lo: 0xaa, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xbf}, + // Block 0x4d, offset 0x2c0 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x4e, offset 0x2c3 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0x4f, offset 0x2c6 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x28c1, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0xbf}, + // Block 0x50, offset 0x2ca + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0e66, lo: 0xb4, hi: 0xb4}, + {value: 0x292a, lo: 0xb5, hi: 0xb5}, + {value: 0x0e86, lo: 0xb6, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x51, offset 0x2d0 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9b}, + {value: 0x2941, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0xbf}, + // Block 0x52, offset 0x2d4 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x53, offset 0x2d8 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0018, lo: 0xbd, hi: 0xbf}, + // Block 0x54, offset 0x2de + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xab}, + {value: 0x0018, lo: 0xac, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x55, offset 0x2e5 + {value: 0x0000, lo: 0x05}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x03f5, lo: 0x90, hi: 0x9f}, + {value: 0x0ea5, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x56, offset 0x2eb + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x57, offset 0x2f3 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xae}, + {value: 0xe075, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0x58, offset 0x2fa + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x59, offset 0x305 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xbf}, + // Block 0x5a, offset 0x30f + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x5b, offset 0x313 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0xbf}, + // Block 0x5c, offset 0x316 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9e}, + {value: 0x0edd, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x5d, offset 0x31c + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb2}, + {value: 0x0efd, lo: 0xb3, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x5e, offset 0x320 + {value: 0x0020, lo: 0x01}, + {value: 0x0f1d, lo: 0x80, hi: 0xbf}, + // Block 0x5f, offset 0x322 + {value: 0x0020, lo: 0x02}, + {value: 0x171d, lo: 0x80, hi: 0x8f}, + {value: 0x18fd, lo: 0x90, hi: 0xbf}, + // Block 0x60, offset 0x325 + {value: 0x0020, lo: 0x01}, + {value: 0x1efd, lo: 0x80, hi: 0xbf}, + // Block 0x61, offset 0x327 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x62, offset 0x32a + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x1308, lo: 0x99, hi: 0x9a}, + {value: 0x29e2, lo: 0x9b, hi: 0x9b}, + {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9e}, + {value: 0x2a31, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x63, offset 0x334 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbe}, + {value: 0x2a69, lo: 0xbf, hi: 0xbf}, + // Block 0x64, offset 0x337 + {value: 0x0000, lo: 0x0e}, + {value: 0x0040, lo: 0x80, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xb0}, + {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, + {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, + {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, + {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, + {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, + {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, + {value: 0x2abd, lo: 0xb7, hi: 0xb7}, + {value: 0x2add, lo: 0xb8, hi: 0xb9}, + {value: 0x2afd, lo: 0xba, hi: 0xbb}, + {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, + {value: 0x2afd, lo: 0xbe, hi: 0xbf}, + // Block 0x65, offset 0x346 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x66, offset 0x34a + {value: 0x0030, lo: 0x04}, + {value: 0x2aa2, lo: 0x80, hi: 0x9d}, + {value: 0x305a, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x30a2, lo: 0xa0, hi: 0xbf}, + // Block 0x67, offset 0x34f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x68, offset 0x352 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x69, offset 0x356 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x6a, offset 0x35b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0x6b, offset 0x360 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb1}, + {value: 0x0018, lo: 0xb2, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6c, offset 0x366 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb7}, + {value: 0x2009, lo: 0xb8, hi: 0xb8}, + {value: 0x6e89, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xbf}, + // Block 0x6d, offset 0x36c + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0x85}, + {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x1308, lo: 0x8b, hi: 0x8b}, + {value: 0x0008, lo: 0x8c, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa6}, + {value: 0x1008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x6e, offset 0x37b + {value: 0x0000, lo: 0x05}, + {value: 0x0208, lo: 0x80, hi: 0xb1}, + {value: 0x0108, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6f, offset 0x381 + {value: 0x0000, lo: 0x03}, + {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xbf}, + // Block 0x70, offset 0x385 + {value: 0x0000, lo: 0x0e}, + {value: 0x1008, lo: 0x80, hi: 0x83}, + {value: 0x1b08, lo: 0x84, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xba}, + {value: 0x0008, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x71, offset 0x394 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x72, offset 0x399 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x1308, lo: 0x87, hi: 0x91}, + {value: 0x1008, lo: 0x92, hi: 0x92}, + {value: 0x1808, lo: 0x93, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x73, offset 0x3a1 + {value: 0x0000, lo: 0x09}, + {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xb9}, + {value: 0x1008, lo: 0xba, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x1008, lo: 0xbd, hi: 0xbf}, + // Block 0x74, offset 0x3ab + {value: 0x0000, lo: 0x0a}, + {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x75, offset 0x3b6 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa8}, + {value: 0x1308, lo: 0xa9, hi: 0xae}, + {value: 0x1008, lo: 0xaf, hi: 0xb0}, + {value: 0x1308, lo: 0xb1, hi: 0xb2}, + {value: 0x1008, lo: 0xb3, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x76, offset 0x3be + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x82}, + {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x8b}, + {value: 0x1308, lo: 0x8c, hi: 0x8c}, + {value: 0x1008, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x1008, lo: 0xbd, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0x77, offset 0x3cf + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbd}, + {value: 0x1308, lo: 0xbe, hi: 0xbf}, + // Block 0x78, offset 0x3d8 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x9a}, + {value: 0x0008, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xaa}, + {value: 0x1008, lo: 0xab, hi: 0xab}, + {value: 0x1308, lo: 0xac, hi: 0xad}, + {value: 0x1008, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb4}, + {value: 0x1008, lo: 0xb5, hi: 0xb5}, + {value: 0x1b08, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x79, offset 0x3e8 + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x90}, + {value: 0x0008, lo: 0x91, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x7a, offset 0x3f5 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x4465, lo: 0x9c, hi: 0x9c}, + {value: 0x447d, lo: 0x9d, hi: 0x9d}, + {value: 0x2971, lo: 0x9e, hi: 0x9e}, + {value: 0xe06d, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xaf}, + {value: 0x4495, lo: 0xb0, hi: 0xbf}, + // Block 0x7b, offset 0x3ff + {value: 0x0000, lo: 0x04}, + {value: 0x44b5, lo: 0x80, hi: 0x8f}, + {value: 0x44d5, lo: 0x90, hi: 0x9f}, + {value: 0x44f5, lo: 0xa0, hi: 0xaf}, + {value: 0x44d5, lo: 0xb0, hi: 0xbf}, + // Block 0x7c, offset 0x404 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0xa2}, + {value: 0x1008, lo: 0xa3, hi: 0xa4}, + {value: 0x1308, lo: 0xa5, hi: 0xa5}, + {value: 0x1008, lo: 0xa6, hi: 0xa7}, + {value: 0x1308, lo: 0xa8, hi: 0xa8}, + {value: 0x1008, lo: 0xa9, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xac}, + {value: 0x1b08, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x7d, offset 0x411 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x7e, offset 0x415 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x7f, offset 0x41a + {value: 0x0020, lo: 0x01}, + {value: 0x4515, lo: 0x80, hi: 0xbf}, + // Block 0x80, offset 0x41c + {value: 0x0020, lo: 0x03}, + {value: 0x4d15, lo: 0x80, hi: 0x94}, + {value: 0x4ad5, lo: 0x95, hi: 0x95}, + {value: 0x4fb5, lo: 0x96, hi: 0xbf}, + // Block 0x81, offset 0x420 + {value: 0x0020, lo: 0x01}, + {value: 0x54f5, lo: 0x80, hi: 0xbf}, + // Block 0x82, offset 0x422 + {value: 0x0020, lo: 0x03}, + {value: 0x5cf5, lo: 0x80, hi: 0x84}, + {value: 0x5655, lo: 0x85, hi: 0x85}, + {value: 0x5d95, lo: 0x86, hi: 0xbf}, + // Block 0x83, offset 0x426 + {value: 0x0020, lo: 0x08}, + {value: 0x6b55, lo: 0x80, hi: 0x8f}, + {value: 0x6d15, lo: 0x90, hi: 0x90}, + {value: 0x6d55, lo: 0x91, hi: 0xab}, + {value: 0x6ea1, lo: 0xac, hi: 0xac}, + {value: 0x70b5, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x70d5, lo: 0xb0, hi: 0xbf}, + // Block 0x84, offset 0x42f + {value: 0x0020, lo: 0x05}, + {value: 0x72d5, lo: 0x80, hi: 0xad}, + {value: 0x6535, lo: 0xae, hi: 0xae}, + {value: 0x7895, lo: 0xaf, hi: 0xb5}, + {value: 0x6f55, lo: 0xb6, hi: 0xb6}, + {value: 0x7975, lo: 0xb7, hi: 0xbf}, + // Block 0x85, offset 0x435 + {value: 0x0028, lo: 0x03}, + {value: 0x7c21, lo: 0x80, hi: 0x82}, + {value: 0x7be1, lo: 0x83, hi: 0x83}, + {value: 0x7c99, lo: 0x84, hi: 0xbf}, + // Block 0x86, offset 0x439 + {value: 0x0038, lo: 0x0f}, + {value: 0x9db1, lo: 0x80, hi: 0x83}, + {value: 0x9e59, lo: 0x84, hi: 0x85}, + {value: 0x9e91, lo: 0x86, hi: 0x87}, + {value: 0x9ec9, lo: 0x88, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0xa089, lo: 0x92, hi: 0x97}, + {value: 0xa1a1, lo: 0x98, hi: 0x9c}, + {value: 0xa281, lo: 0x9d, hi: 0xb3}, + {value: 0x9d41, lo: 0xb4, hi: 0xb4}, + {value: 0x9db1, lo: 0xb5, hi: 0xb5}, + {value: 0xa789, lo: 0xb6, hi: 0xbb}, + {value: 0xa869, lo: 0xbc, hi: 0xbc}, + {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, + {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, + // Block 0x87, offset 0x449 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x88, offset 0x453 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0x89, offset 0x458 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x8a, offset 0x45b + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x8b, offset 0x461 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x8c, offset 0x468 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbc}, + {value: 0x1308, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x8d, offset 0x46d + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x8e, offset 0x471 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x9f}, + {value: 0x1308, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x8f, offset 0x477 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x90, offset 0x47c + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x91, offset 0x485 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x92, offset 0x48a + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x93, offset 0x490 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x97}, + {value: 0x8ad5, lo: 0x98, hi: 0x9f}, + {value: 0x8aed, lo: 0xa0, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xbf}, + // Block 0x94, offset 0x497 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x8aed, lo: 0xb0, hi: 0xb7}, + {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, + // Block 0x95, offset 0x49e + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x96, offset 0x4a5 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x97, offset 0x4a9 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xae}, + {value: 0x0018, lo: 0xaf, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x98, offset 0x4ae + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x99, offset 0x4b1 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xbf}, + // Block 0x9a, offset 0x4b6 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x9b, offset 0x4c2 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x9c, offset 0x4c8 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa6}, + {value: 0x0018, lo: 0xa7, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x9d, offset 0x4cd + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb3}, + {value: 0x0008, lo: 0xb4, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x9e, offset 0x4d4 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0018, lo: 0x96, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x9f, offset 0x4dc + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0xa0, offset 0x4e1 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xbf}, + // Block 0xa1, offset 0x4e5 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8b}, + {value: 0x1308, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x94}, + {value: 0x0008, lo: 0x95, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa2, offset 0x4f5 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbc}, + {value: 0x0018, lo: 0xbd, hi: 0xbf}, + // Block 0xa3, offset 0x4fc + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xa4, offset 0x500 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb8}, + {value: 0x0018, lo: 0xb9, hi: 0xbf}, + // Block 0xa5, offset 0x504 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbf}, + // Block 0xa6, offset 0x50b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0xa7, offset 0x50e + {value: 0x0000, lo: 0x02}, + {value: 0x03dd, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xa8, offset 0x511 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xa9, offset 0x515 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xaa, offset 0x519 + {value: 0x0000, lo: 0x05}, + {value: 0x1008, lo: 0x80, hi: 0x80}, + {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x51f + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x85}, + {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xac, offset 0x528 + {value: 0x0000, lo: 0x0b}, + {value: 0x1308, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb6}, + {value: 0x1008, lo: 0xb7, hi: 0xb8}, + {value: 0x1b08, lo: 0xb9, hi: 0xb9}, + {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbc}, + {value: 0x0340, lo: 0xbd, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0xad, offset 0x534 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xae, offset 0x53b + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa6}, + {value: 0x1308, lo: 0xa7, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xb2}, + {value: 0x1b08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xbf}, + // Block 0xaf, offset 0x544 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xb0, offset 0x54c + {value: 0x0000, lo: 0x06}, + {value: 0x1308, lo: 0x80, hi: 0x81}, + {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb2}, + {value: 0x1008, lo: 0xb3, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xbe}, + {value: 0x1008, lo: 0xbf, hi: 0xbf}, + // Block 0xb1, offset 0x553 + {value: 0x0000, lo: 0x0d}, + {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x89}, + {value: 0x1308, lo: 0x8a, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xb2, offset 0x561 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xae}, + {value: 0x1308, lo: 0xaf, hi: 0xb1}, + {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x1808, lo: 0xb5, hi: 0xb5}, + {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbd}, + {value: 0x1308, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x56e + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0008, lo: 0x9f, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xb4, offset 0x57b + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x1308, lo: 0x9f, hi: 0x9f}, + {value: 0x1008, lo: 0xa0, hi: 0xa2}, + {value: 0x1308, lo: 0xa3, hi: 0xa9}, + {value: 0x1b08, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb5, offset 0x584 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x1008, lo: 0xb5, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xbf}, + // Block 0xb6, offset 0x588 + {value: 0x0000, lo: 0x0d}, + {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x1b08, lo: 0x82, hi: 0x82}, + {value: 0x1308, lo: 0x83, hi: 0x84}, + {value: 0x1008, lo: 0x85, hi: 0x85}, + {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xb7, offset 0x596 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xb8}, + {value: 0x1008, lo: 0xb9, hi: 0xb9}, + {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbe}, + {value: 0x1308, lo: 0xbf, hi: 0xbf}, + // Block 0xb8, offset 0x59e + {value: 0x0000, lo: 0x0a}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x1008, lo: 0x81, hi: 0x81}, + {value: 0x1b08, lo: 0x82, hi: 0x82}, + {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xb9, offset 0x5a9 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x1008, lo: 0xaf, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x1008, lo: 0xb8, hi: 0xbb}, + {value: 0x1308, lo: 0xbc, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xba, offset 0x5b2 + {value: 0x0000, lo: 0x05}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9b}, + {value: 0x1308, lo: 0x9c, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xbb, offset 0x5b8 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1008, lo: 0xb0, hi: 0xb2}, + {value: 0x1308, lo: 0xb3, hi: 0xba}, + {value: 0x1008, lo: 0xbb, hi: 0xbc}, + {value: 0x1308, lo: 0xbd, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbc, offset 0x5c0 + {value: 0x0000, lo: 0x08}, + {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xbd, offset 0x5c9 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x1308, lo: 0xab, hi: 0xab}, + {value: 0x1008, lo: 0xac, hi: 0xac}, + {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x1008, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb5}, + {value: 0x1808, lo: 0xb6, hi: 0xb6}, + {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0xbe, offset 0x5d3 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0xbf, offset 0x5d6 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9f}, + {value: 0x1008, lo: 0xa0, hi: 0xa1}, + {value: 0x1308, lo: 0xa2, hi: 0xa5}, + {value: 0x1008, lo: 0xa6, hi: 0xa6}, + {value: 0x1308, lo: 0xa7, hi: 0xaa}, + {value: 0x1b08, lo: 0xab, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xc0, offset 0x5e2 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xbf}, + // Block 0xc1, offset 0x5e5 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0xc2, offset 0x5ea + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xc3, offset 0x5ed + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xae}, + {value: 0x1008, lo: 0xaf, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x1308, lo: 0xb8, hi: 0xbd}, + {value: 0x1008, lo: 0xbe, hi: 0xbe}, + {value: 0x1b08, lo: 0xbf, hi: 0xbf}, + // Block 0xc4, offset 0x5f7 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xbf}, + // Block 0xc5, offset 0x600 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x1308, lo: 0x92, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xa8}, + {value: 0x1008, lo: 0xa9, hi: 0xa9}, + {value: 0x1308, lo: 0xaa, hi: 0xb0}, + {value: 0x1008, lo: 0xb1, hi: 0xb1}, + {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x1008, lo: 0xb4, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xc6, offset 0x60c + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xc7, offset 0x60f + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xc8, offset 0x614 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0xbf}, + // Block 0xc9, offset 0x617 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xbf}, + // Block 0xca, offset 0x61a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0xbf}, + // Block 0xcb, offset 0x61d + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xcc, offset 0x624 + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xcd, offset 0x62b + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0xce, offset 0x62f + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x0008, lo: 0xa3, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0xcf, offset 0x63a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0xbf}, + // Block 0xd0, offset 0x63d + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x1008, lo: 0x91, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd1, offset 0x643 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8e}, + {value: 0x1308, lo: 0x8f, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xd2, offset 0x648 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0xd3, offset 0x64c + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xd4, offset 0x64f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xd5, offset 0x652 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0xbf}, + // Block 0xd6, offset 0x655 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0xd7, offset 0x65a + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9c}, + {value: 0x1308, lo: 0x9d, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x03c0, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xbf}, + // Block 0xd8, offset 0x664 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xd9, offset 0x667 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xbf}, + // Block 0xda, offset 0x66b + {value: 0x0000, lo: 0x0e}, + {value: 0x0018, lo: 0x80, hi: 0x9d}, + {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, + {value: 0xb601, lo: 0x9f, hi: 0x9f}, + {value: 0xb649, lo: 0xa0, hi: 0xa0}, + {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, + {value: 0xb719, lo: 0xa2, hi: 0xa2}, + {value: 0xb781, lo: 0xa3, hi: 0xa3}, + {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, + {value: 0x1018, lo: 0xa5, hi: 0xa6}, + {value: 0x1318, lo: 0xa7, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xac}, + {value: 0x1018, lo: 0xad, hi: 0xb2}, + {value: 0x0340, lo: 0xb3, hi: 0xba}, + {value: 0x1318, lo: 0xbb, hi: 0xbf}, + // Block 0xdb, offset 0x67a + {value: 0x0000, lo: 0x0b}, + {value: 0x1318, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x84}, + {value: 0x1318, lo: 0x85, hi: 0x8b}, + {value: 0x0018, lo: 0x8c, hi: 0xa9}, + {value: 0x1318, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xba}, + {value: 0xb851, lo: 0xbb, hi: 0xbb}, + {value: 0xb899, lo: 0xbc, hi: 0xbc}, + {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, + {value: 0xb949, lo: 0xbe, hi: 0xbe}, + {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, + // Block 0xdc, offset 0x686 + {value: 0x0000, lo: 0x03}, + {value: 0xba19, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xbf}, + // Block 0xdd, offset 0x68a + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x1318, lo: 0x82, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0xbf}, + // Block 0xde, offset 0x68f + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xdf, offset 0x694 + {value: 0x0000, lo: 0x03}, + {value: 0x1308, lo: 0x80, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xba}, + {value: 0x1308, lo: 0xbb, hi: 0xbf}, + // Block 0xe0, offset 0x698 + {value: 0x0000, lo: 0x04}, + {value: 0x1308, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xb4}, + {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0xe1, offset 0x69d + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x1308, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x1308, lo: 0xa1, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xe2, offset 0x6a6 + {value: 0x0000, lo: 0x0a}, + {value: 0x1308, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x1308, lo: 0x88, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9a}, + {value: 0x1308, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x1308, lo: 0xa3, hi: 0xa4}, + {value: 0x0040, lo: 0xa5, hi: 0xa5}, + {value: 0x1308, lo: 0xa6, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0xe3, offset 0x6b1 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8f}, + {value: 0x1308, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xe4, offset 0x6b7 + {value: 0x0000, lo: 0x07}, + {value: 0x0208, lo: 0x80, hi: 0x83}, + {value: 0x1308, lo: 0x84, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xe5, offset 0x6bf + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe6, offset 0x6c3 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0xe7, offset 0x6c7 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0xe8, offset 0x6cd + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xe9, offset 0x6d3 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0xc1c1, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xea, offset 0x6d8 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xbf}, + // Block 0xeb, offset 0x6db + {value: 0x0000, lo: 0x0d}, + {value: 0xc7e9, lo: 0x80, hi: 0x80}, + {value: 0xc839, lo: 0x81, hi: 0x81}, + {value: 0xc889, lo: 0x82, hi: 0x82}, + {value: 0xc8d9, lo: 0x83, hi: 0x83}, + {value: 0xc929, lo: 0x84, hi: 0x84}, + {value: 0xc979, lo: 0x85, hi: 0x85}, + {value: 0xc9c9, lo: 0x86, hi: 0x86}, + {value: 0xca19, lo: 0x87, hi: 0x87}, + {value: 0xca69, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0xcab9, lo: 0x90, hi: 0x90}, + {value: 0xcad9, lo: 0x91, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xec, offset 0x6e9 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x92}, + {value: 0x0040, lo: 0x93, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xed, offset 0x6f0 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0xee, offset 0x6f3 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0xbf}, + // Block 0xef, offset 0x6f6 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0xf0, offset 0x6fa + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0xf1, offset 0x700 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0xf2, offset 0x705 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb2}, + {value: 0x0018, lo: 0xb3, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xf3, offset 0x70f + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xf4, offset 0x714 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xf5, offset 0x717 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0xbf}, + // Block 0xf6, offset 0x71a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xf7, offset 0x71d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xf8, offset 0x720 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0xf9, offset 0x724 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xfa, offset 0x727 + {value: 0x0020, lo: 0x0f}, + {value: 0xdeb9, lo: 0x80, hi: 0x89}, + {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, + {value: 0xdff9, lo: 0x8b, hi: 0x9c}, + {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, + {value: 0xe239, lo: 0x9e, hi: 0xa2}, + {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, + {value: 0xe2d9, lo: 0xa4, hi: 0xab}, + {value: 0x7ed5, lo: 0xac, hi: 0xac}, + {value: 0xe3d9, lo: 0xad, hi: 0xaf}, + {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, + {value: 0xe439, lo: 0xb1, hi: 0xb6}, + {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, + {value: 0xe4f9, lo: 0xba, hi: 0xba}, + {value: 0x8edd, lo: 0xbb, hi: 0xbb}, + {value: 0xe519, lo: 0xbc, hi: 0xbf}, + // Block 0xfb, offset 0x737 + {value: 0x0020, lo: 0x10}, + {value: 0x937d, lo: 0x80, hi: 0x80}, + {value: 0xf099, lo: 0x81, hi: 0x86}, + {value: 0x939d, lo: 0x87, hi: 0x8a}, + {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, + {value: 0xf159, lo: 0x8c, hi: 0x96}, + {value: 0x941d, lo: 0x97, hi: 0x97}, + {value: 0xf2b9, lo: 0x98, hi: 0xa3}, + {value: 0x943d, lo: 0xa4, hi: 0xa6}, + {value: 0xf439, lo: 0xa7, hi: 0xaa}, + {value: 0x949d, lo: 0xab, hi: 0xab}, + {value: 0xf4b9, lo: 0xac, hi: 0xac}, + {value: 0x94bd, lo: 0xad, hi: 0xad}, + {value: 0xf4d9, lo: 0xae, hi: 0xaf}, + {value: 0x94dd, lo: 0xb0, hi: 0xb1}, + {value: 0xf519, lo: 0xb2, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xfc, offset 0x748 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0340, lo: 0x81, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x9f}, + {value: 0x0340, lo: 0xa0, hi: 0xbf}, + // Block 0xfd, offset 0x74d + {value: 0x0000, lo: 0x01}, + {value: 0x0340, lo: 0x80, hi: 0xbf}, + // Block 0xfe, offset 0x74f + {value: 0x0000, lo: 0x01}, + {value: 0x13c0, lo: 0x80, hi: 0xbf}, + // Block 0xff, offset 0x751 + {value: 0x0000, lo: 0x02}, + {value: 0x13c0, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, +} + +// Total table size 41559 bytes (40KiB); checksum: F4A1FA4E diff --git a/vendor/golang.org/x/text/internal/export/idna/trie.go b/vendor/golang.org/x/text/internal/export/idna/trie.go new file mode 100644 index 0000000000..d909968863 --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/trie.go @@ -0,0 +1,70 @@ +// 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 idna + +// appendMapping appends the mapping for the respective rune. isMapped must be +// true. A mapping is a categorization of a rune as defined in UTS #46. +func (c info) appendMapping(b []byte, s string) []byte { + index := int(c >> indexShift) + if c&xorBit == 0 { + s := mappings[index:] + return append(b, s[1:s[0]+1]...) + } + b = append(b, s...) + if c&inlineXOR == inlineXOR { + // TODO: support and handle two-byte inline masks + b[len(b)-1] ^= byte(index) + } else { + for p := len(b) - int(xorData[index]); p < len(b); p++ { + index++ + b[p] ^= xorData[index] + } + } + return b +} + +// Sparse block handling code. + +type valueRange struct { + value uint16 // header: value:stride + lo, hi byte // header: lo:n +} + +type sparseBlocks struct { + values []valueRange + offset []uint16 +} + +var idnaSparse = sparseBlocks{ + values: idnaSparseValues[:], + offset: idnaSparseOffset[:], +} + +// Don't use newIdnaTrie to avoid unconditional linking in of the table. +var trie = &idnaTrie{} + +// lookup 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/internal/export/idna/trieval.go b/vendor/golang.org/x/text/internal/export/idna/trieval.go new file mode 100644 index 0000000000..63cb03b59b --- /dev/null +++ b/vendor/golang.org/x/text/internal/export/idna/trieval.go @@ -0,0 +1,114 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package idna + +// This file contains definitions for interpreting the trie value of the idna +// 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 information from the IDNA mapping table for a single rune. It is +// the value returned by a trie lookup. In most cases, all information fits in +// a 16-bit value. For mappings, this value may contain an index into a slice +// with the mapped string. Such mappings can consist of the actual mapped value +// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the +// input rune. This technique is used by the cases packages and reduces the +// table size significantly. +// +// The per-rune values have the following format: +// +// if mapped { +// if inlinedXOR { +// 15..13 inline XOR marker +// 12..11 unused +// 10..3 inline XOR mask +// } else { +// 15..3 index into xor or mapping table +// } +// } else { +// 15..13 unused +// 12 modifier (including virama) +// 11 virama modifier +// 10..8 joining type +// 7..3 category type +// } +// 2 use xor pattern +// 1..0 mapped category +// +// See the definitions below for a more detailed description of the various +// bits. +type info uint16 + +const ( + catSmallMask = 0x3 + catBigMask = 0xF8 + indexShift = 3 + xorBit = 0x4 // interpret the index as an xor pattern + inlineXOR = 0xE000 // These bits are set if the XOR pattern is inlined. + + joinShift = 8 + joinMask = 0x07 + + viramaModifier = 0x0800 + modifier = 0x1000 +) + +// A category corresponds to a category defined in the IDNA mapping table. +type category uint16 + +const ( + unknown category = 0 // not defined currently in unicode. + mapped category = 1 + disallowedSTD3Mapped category = 2 + deviation category = 3 +) + +const ( + valid category = 0x08 + validNV8 category = 0x18 + validXV8 category = 0x28 + disallowed category = 0x40 + disallowedSTD3Valid category = 0x80 + ignored category = 0xC0 +) + +// join types and additional rune information +const ( + joiningL = (iota + 1) + joiningD + joiningT + joiningR + + //the following types are derived during processing + joinZWJ + joinZWNJ + joinVirama + numJoinTypes +) + +func (c info) isMapped() bool { + return c&0x3 != 0 +} + +func (c info) category() category { + small := c & catSmallMask + if small != 0 { + return category(small) + } + return category(c & catBigMask) +} + +func (c info) joinType() info { + if c.isMapped() { + return 0 + } + return (c >> joinShift) & joinMask +} + +func (c info) isModifier() bool { + return c&(modifier|catSmallMask) == modifier +} + +func (c info) isViramaModifier() bool { + return c&(viramaModifier|catSmallMask) == viramaModifier +} diff --git a/vendor/golang.org/x/text/internal/format/plural/plural.go b/vendor/golang.org/x/text/internal/format/plural/plural.go deleted file mode 100644 index 524d6aaff4..0000000000 --- a/vendor/golang.org/x/text/internal/format/plural/plural.go +++ /dev/null @@ -1,38 +0,0 @@ -// 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 plural defines the grammatical plural feature. -// -// The definitions in this package are based on the plural rule handling defined -// in CLDR. See -// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for -// details. -package plural - -import "golang.org/x/text/internal/format" - -// Form defines a plural form. The meaning of plural forms, as well as which -// forms are supported, vary per language. Each language must at least support -// the form "other". -type Form byte - -const ( - Other Form = iota - Zero - One - Two - Few - Many -) - -// Interface is implemented by values that have a plural feature. -type Interface interface { - // PluralForm reports the plural form of a value, depending on the - // language declared by the given state. - PluralForm(s format.State) Form -} - -// TODO -// - Select function -// - Definition for message package. diff --git a/vendor/golang.org/x/text/internal/gen/code.go b/vendor/golang.org/x/text/internal/gen/code.go index ca917d2819..d7031b6945 100644 --- a/vendor/golang.org/x/text/internal/gen/code.go +++ b/vendor/golang.org/x/text/internal/gen/code.go @@ -117,13 +117,7 @@ func (w *CodeWriter) WriteConst(name string, x interface{}) { switch v.Type().Kind() { case reflect.String: - // See golang.org/issue/13145. - const arbitraryCutoff = 16 - if v.Len() > arbitraryCutoff { - w.printf("var %s %s = ", name, typeName(x)) - } else { - w.printf("const %s %s = ", name, typeName(x)) - } + w.printf("const %s %s = ", name, typeName(x)) w.WriteString(v.String()) w.printf("\n") default: @@ -187,6 +181,7 @@ func (w *CodeWriter) writeValue(v reflect.Value) { // WriteString writes a string literal. func (w *CodeWriter) WriteString(s string) { + s = strings.Replace(s, `\`, `\\`, -1) io.WriteString(w.Hash, s) // content hash w.Size += len(s) @@ -202,16 +197,27 @@ func (w *CodeWriter) WriteString(s string) { // When starting on its own line, go fmt indents line 2+ an extra level. n, max := maxWidth, maxWidth-4 + // As per https://golang.org/issue/18078, the compiler has trouble + // compiling the concatenation of many strings, s0 + s1 + s2 + ... + sN, + // for large N. We insert redundant, explicit parentheses to work around + // that, lowering the N at any given step: (s0 + s1 + ... + s63) + (s64 + + // ... + s127) + etc + (etc + ... + sN). + explicitParens, extraComment := len(s) > 128*1024, "" + if explicitParens { + w.printf(`(`) + extraComment = "; the redundant, explicit parens are for https://golang.org/issue/18078" + } + // Print "" +\n, if a string does not start on its own line. b := w.buf.Bytes() if p := len(bytes.TrimRight(b, " \t")); p > 0 && b[p-1] != '\n' { - w.printf("\"\" + // Size: %d bytes\n", len(s)) + w.printf("\"\" + // Size: %d bytes%s\n", len(s), extraComment) n, max = maxWidth, maxWidth } w.printf(`"`) - for sz, p := 0, 0; p < len(s); { + for sz, p, nLines := 0, 0, 0; p < len(s); { var r rune r, sz = utf8.DecodeRuneInString(s[p:]) out := s[p : p+sz] @@ -228,6 +234,10 @@ func (w *CodeWriter) WriteString(s string) { chars = len(out) } if n -= chars; n < 0 { + nLines++ + if explicitParens && nLines&63 == 63 { + w.printf("\") + (\"") + } w.printf("\" +\n\"") n = max - len(out) } @@ -235,6 +245,9 @@ func (w *CodeWriter) WriteString(s string) { p += sz } w.printf(`"`) + if explicitParens { + w.printf(`)`) + } } // WriteSlice writes a slice value. diff --git a/vendor/golang.org/x/text/internal/gen/gen.go b/vendor/golang.org/x/text/internal/gen/gen.go index dfaa278a10..2acb0355a2 100644 --- a/vendor/golang.org/x/text/internal/gen/gen.go +++ b/vendor/golang.org/x/text/internal/gen/gen.go @@ -22,6 +22,7 @@ import ( "bytes" "flag" "fmt" + "go/build" "go/format" "io" "io/ioutil" @@ -30,6 +31,7 @@ import ( "os" "path" "path/filepath" + "sync" "unicode" "golang.org/x/text/unicode/cldr" @@ -48,12 +50,6 @@ var ( cldrVersion = flag.String("cldr", getEnv("CLDR_VERSION", cldr.Version), "cldr version to use") - // Allow an environment variable to specify the local directory. - // go generate doesn't allow specifying arguments; this is a useful - // alternative to specifying a local mirror. - localDir = flag.String("local", - os.Getenv("UNICODE_DIR"), - "directory containing local data files; for debugging only.") ) func getEnv(name, def string) string { @@ -71,7 +67,7 @@ func Init() { flag.Parse() } -const header = `// This file was generated by go generate; DO NOT EDIT +const header = `// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package %s @@ -87,9 +83,16 @@ func CLDRVersion() string { return *cldrVersion } -// IsLocal reports whether the user specified a local directory. +// IsLocal reports whether data files are available locally. func IsLocal() bool { - return *localDir != "" + dir, err := localReadmeFile() + if err != nil { + return false + } + if _, err = os.Stat(dir); err != nil { + return false + } + return true } // OpenUCDFile opens the requested UCD file. The file is specified relative to @@ -124,29 +127,81 @@ func OpenIANAFile(path string) io.ReadCloser { return Open(*iana, "iana", path) } +var ( + dirMutex sync.Mutex + localDir string +) + +const permissions = 0755 + +func localReadmeFile() (string, error) { + p, err := build.Import("golang.org/x/text", "", build.FindOnly) + if err != nil { + return "", fmt.Errorf("Could not locate package: %v", err) + } + return filepath.Join(p.Dir, "DATA", "README"), nil +} + +func getLocalDir() string { + dirMutex.Lock() + defer dirMutex.Unlock() + + readme, err := localReadmeFile() + if err != nil { + log.Fatal(err) + } + dir := filepath.Dir(readme) + if _, err := os.Stat(readme); err != nil { + if err := os.MkdirAll(dir, permissions); err != nil { + log.Fatalf("Could not create directory: %v", err) + } + ioutil.WriteFile(readme, []byte(readmeTxt), permissions) + } + return dir +} + +const readmeTxt = `Generated by golang.org/x/text/internal/gen. DO NOT EDIT. + +This directory contains downloaded files used to generate the various tables +in the golang.org/x/text subrepo. + +Note that the language subtag repo (iana/assignments/language-subtag-registry) +and all other times in the iana subdirectory are not versioned and will need +to be periodically manually updated. The easiest way to do this is to remove +the entire iana directory. This is mostly of concern when updating the language +package. +` + // Open opens subdir/path if a local directory is specified and the file exists, // where subdir is a directory relative to the local root, or fetches it from // urlRoot/path otherwise. It will call log.Fatal if there are any errors. func Open(urlRoot, subdir, path string) io.ReadCloser { - if *localDir != "" { - path = filepath.FromSlash(path) - if f, err := os.Open(filepath.Join(*localDir, subdir, path)); err == nil { - return f - } - } - return get(urlRoot, path) + file := filepath.Join(getLocalDir(), subdir, filepath.FromSlash(path)) + return open(file, urlRoot, path) } func openUnicode(path string) io.ReadCloser { - if *localDir != "" { - path = filepath.FromSlash(path) - f, err := os.Open(filepath.Join(*localDir, path)) - if err != nil { - log.Fatal(err) - } + file := filepath.Join(getLocalDir(), filepath.FromSlash(path)) + return open(file, *url, path) +} + +// TODO: automatically periodically update non-versioned files. + +func open(file, urlRoot, path string) io.ReadCloser { + if f, err := os.Open(file); err == nil { return f } - return get(*url, path) + r := get(urlRoot, path) + defer r.Close() + b, err := ioutil.ReadAll(r) + if err != nil { + log.Fatalf("Could not download file: %v", err) + } + os.MkdirAll(filepath.Dir(file), permissions) + if err := ioutil.WriteFile(file, b, permissions); err != nil { + log.Fatalf("Could not create file: %v", err) + } + return ioutil.NopCloser(bytes.NewReader(b)) } func get(root, path string) io.ReadCloser { diff --git a/vendor/golang.org/x/text/internal/match.go b/vendor/golang.org/x/text/internal/match.go index 03190b9095..a67fcaca13 100644 --- a/vendor/golang.org/x/text/internal/match.go +++ b/vendor/golang.org/x/text/internal/match.go @@ -29,21 +29,23 @@ import ( // // A Match will indicate an Exact match if the language matches after // canonicalization and High if the matched tag is a parent. -func NewInheritanceMatcher(t []language.Tag) language.Matcher { - tags := make(inheritanceMatcher) +func NewInheritanceMatcher(t []language.Tag) *InheritanceMatcher { + tags := &InheritanceMatcher{make(map[language.Tag]int)} for i, tag := range t { ct, err := language.All.Canonicalize(tag) if err != nil { ct = tag } - tags[ct] = i + tags.index[ct] = i } return tags } -type inheritanceMatcher map[language.Tag]int +type InheritanceMatcher struct { + index map[language.Tag]int +} -func (m inheritanceMatcher) Match(want ...language.Tag) (language.Tag, int, language.Confidence) { +func (m InheritanceMatcher) Match(want ...language.Tag) (language.Tag, int, language.Confidence) { for _, t := range want { ct, err := language.All.Canonicalize(t) if err != nil { @@ -51,7 +53,7 @@ func (m inheritanceMatcher) Match(want ...language.Tag) (language.Tag, int, lang } conf := language.Exact for { - if index, ok := m[ct]; ok { + if index, ok := m.index[ct]; ok { return ct, index, conf } if ct == language.Und { diff --git a/vendor/golang.org/x/text/internal/number/common.go b/vendor/golang.org/x/text/internal/number/common.go index a29abe4939..e428a728d0 100644 --- a/vendor/golang.org/x/text/internal/number/common.go +++ b/vendor/golang.org/x/text/internal/number/common.go @@ -1,12 +1,8 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package number -import ( - "unicode/utf8" - - "golang.org/x/text/internal/format/plural" -) +import "unicode/utf8" // A system identifies a CLDR numbering system. type system byte @@ -42,51 +38,3 @@ type altSymData struct { system system symIndex byte } - -var countMap = map[string]plural.Form{ - "other": plural.Other, - "zero": plural.Zero, - "one": plural.One, - "two": plural.Two, - "few": plural.Few, - "many": plural.Many, -} - -type pluralCheck struct { - // category: - // 3..7: opID - // 0..2: category - cat byte - setID byte -} - -// opID identifies the type of operand in the plural rule, being i, n or f. -// (v, w, and t are treated as filters in our implementation.) -type opID byte - -const ( - opMod opID = 0x1 // is '%' used? - opNotEqual opID = 0x2 // using "!=" to compare - opI opID = 0 << 2 // integers after taking the absolute value - opN opID = 1 << 2 // full number (must be integer) - opF opID = 2 << 2 // fraction - opV opID = 3 << 2 // number of visible digits - opW opID = 4 << 2 // number of visible digits without trailing zeros - opBretonM opID = 5 << 2 // hard-wired rule for Breton - opItalian800 opID = 6 << 2 // hard-wired rule for Italian - opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan -) -const ( - // Use this plural form to indicate the next rule needs to match as well. - // The last condition in the list will have the correct plural form. - andNext = 0x7 - formMask = 0x7 - - opShift = 3 - - // numN indicates the maximum integer, or maximum mod value, for which we - // have inclusion masks. - numN = 100 - // The common denominator of the modulo that is taken. - maxMod = 100 -) diff --git a/vendor/golang.org/x/text/internal/number/data_test.go b/vendor/golang.org/x/text/internal/number/data_test.go deleted file mode 100644 index 5a0b90f0c2..0000000000 --- a/vendor/golang.org/x/text/internal/number/data_test.go +++ /dev/null @@ -1,194 +0,0 @@ -// This file was generated by go generate; DO NOT EDIT - -package number - -import "golang.org/x/text/internal/format/plural" - -type pluralTest struct { - locales string - form plural.Form - integer []string - decimal []string -} - -var ordinalTests = []pluralTest{ // 59 elements - 0: {locales: "af am ar bg bs ce cs da de dsb el es et eu fa fi fy gl he hr hsb id in is iw ja km kn ko ky lt lv ml mn my nb nl pa pl prg pt root ru sh si sk sl sr sw ta te th tr ur uz zh zu", form: 0x0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 1: {locales: "sv", form: 0x2, integer: []string{"1", "2", "21", "22", "31", "32", "41", "42", "51", "52", "61", "62", "71", "72", "81", "82", "101", "1001"}, decimal: []string(nil)}, - 2: {locales: "sv", form: 0x0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 3: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 4: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 0x0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 5: {locales: "hu", form: 0x2, integer: []string{"1", "5"}, decimal: []string(nil)}, - 6: {locales: "hu", form: 0x0, integer: []string{"0", "2~4", "6~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 7: {locales: "ne", form: 0x2, integer: []string{"1~4"}, decimal: []string(nil)}, - 8: {locales: "ne", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 9: {locales: "be", form: 0x4, integer: []string{"2", "3", "22", "23", "32", "33", "42", "43", "52", "53", "62", "63", "72", "73", "82", "83", "102", "1002"}, decimal: []string(nil)}, - 10: {locales: "be", form: 0x0, integer: []string{"0", "1", "4~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 11: {locales: "uk", form: 0x4, integer: []string{"3", "23", "33", "43", "53", "63", "73", "83", "103", "1003"}, decimal: []string(nil)}, - 12: {locales: "uk", form: 0x0, integer: []string{"0~2", "4~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 13: {locales: "kk", form: 0x5, integer: []string{"6", "9", "10", "16", "19", "20", "26", "29", "30", "36", "39", "40", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 14: {locales: "kk", form: 0x0, integer: []string{"0~5", "7", "8", "11~15", "17", "18", "21", "101", "1001"}, decimal: []string(nil)}, - 15: {locales: "it", form: 0x5, integer: []string{"8", "11", "80", "800"}, decimal: []string(nil)}, - 16: {locales: "it", form: 0x0, integer: []string{"0~7", "9", "10", "12~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 17: {locales: "ka", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 18: {locales: "ka", form: 0x5, integer: []string{"0", "2~16", "102", "1002"}, decimal: []string(nil)}, - 19: {locales: "ka", form: 0x0, integer: []string{"21~36", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 20: {locales: "sq", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 21: {locales: "sq", form: 0x5, integer: []string{"4", "24", "34", "44", "54", "64", "74", "84", "104", "1004"}, decimal: []string(nil)}, - 22: {locales: "sq", form: 0x0, integer: []string{"0", "2", "3", "5~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 23: {locales: "en", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, - 24: {locales: "en", form: 0x3, integer: []string{"2", "22", "32", "42", "52", "62", "72", "82", "102", "1002"}, decimal: []string(nil)}, - 25: {locales: "en", form: 0x4, integer: []string{"3", "23", "33", "43", "53", "63", "73", "83", "103", "1003"}, decimal: []string(nil)}, - 26: {locales: "en", form: 0x0, integer: []string{"0", "4~18", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 27: {locales: "mr", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 28: {locales: "mr", form: 0x3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 29: {locales: "mr", form: 0x4, integer: []string{"4"}, decimal: []string(nil)}, - 30: {locales: "mr", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 31: {locales: "ca", form: 0x2, integer: []string{"1", "3"}, decimal: []string(nil)}, - 32: {locales: "ca", form: 0x3, integer: []string{"2"}, decimal: []string(nil)}, - 33: {locales: "ca", form: 0x4, integer: []string{"4"}, decimal: []string(nil)}, - 34: {locales: "ca", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 35: {locales: "mk", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, - 36: {locales: "mk", form: 0x3, integer: []string{"2", "22", "32", "42", "52", "62", "72", "82", "102", "1002"}, decimal: []string(nil)}, - 37: {locales: "mk", form: 0x5, integer: []string{"7", "8", "27", "28", "37", "38", "47", "48", "57", "58", "67", "68", "77", "78", "87", "88", "107", "1007"}, decimal: []string(nil)}, - 38: {locales: "mk", form: 0x0, integer: []string{"0", "3~6", "9~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 39: {locales: "az", form: 0x2, integer: []string{"1", "2", "5", "7", "8", "11", "12", "15", "17", "18", "20~22", "25", "101", "1001"}, decimal: []string(nil)}, - 40: {locales: "az", form: 0x4, integer: []string{"3", "4", "13", "14", "23", "24", "33", "34", "43", "44", "53", "54", "63", "64", "73", "74", "100", "1003"}, decimal: []string(nil)}, - 41: {locales: "az", form: 0x5, integer: []string{"0", "6", "16", "26", "36", "40", "46", "56", "106", "1006"}, decimal: []string(nil)}, - 42: {locales: "az", form: 0x0, integer: []string{"9", "10", "19", "29", "30", "39", "49", "59", "69", "79", "109", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 43: {locales: "gu hi", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 44: {locales: "gu hi", form: 0x3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 45: {locales: "gu hi", form: 0x4, integer: []string{"4"}, decimal: []string(nil)}, - 46: {locales: "gu hi", form: 0x5, integer: []string{"6"}, decimal: []string(nil)}, - 47: {locales: "gu hi", form: 0x0, integer: []string{"0", "5", "7~20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 48: {locales: "as bn", form: 0x2, integer: []string{"1", "5", "7~10"}, decimal: []string(nil)}, - 49: {locales: "as bn", form: 0x3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 50: {locales: "as bn", form: 0x4, integer: []string{"4"}, decimal: []string(nil)}, - 51: {locales: "as bn", form: 0x5, integer: []string{"6"}, decimal: []string(nil)}, - 52: {locales: "as bn", form: 0x0, integer: []string{"0", "11~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 53: {locales: "cy", form: 0x1, integer: []string{"0", "7~9"}, decimal: []string(nil)}, - 54: {locales: "cy", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 55: {locales: "cy", form: 0x3, integer: []string{"2"}, decimal: []string(nil)}, - 56: {locales: "cy", form: 0x4, integer: []string{"3", "4"}, decimal: []string(nil)}, - 57: {locales: "cy", form: 0x5, integer: []string{"5", "6"}, decimal: []string(nil)}, - 58: {locales: "cy", form: 0x0, integer: []string{"10~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, -} // Size: 4272 bytes - -var cardinalTests = []pluralTest{ // 115 elements - 0: {locales: "bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo root sah ses sg th to vi wo yo zh", form: 0x0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 1: {locales: "am as bn fa gu hi kn mr zu", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}}, - 2: {locales: "am as bn fa gu hi kn mr zu", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~2.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 3: {locales: "ff fr hy kab", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.5"}}, - 4: {locales: "ff fr hy kab", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 5: {locales: "ast ca de en et fi fy gl it ji nl sv sw ur yi", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 6: {locales: "ast ca de en et fi fy gl it ji nl sv sw ur yi", form: 0x0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 7: {locales: "si", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0", "0.1", "1.0", "0.00", "0.01", "1.00", "0.000", "0.001", "1.000", "0.0000", "0.0001", "1.0000"}}, - 8: {locales: "si", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.2~0.9", "1.1~1.8", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 9: {locales: "ak bh guw ln mg nso pa ti wa", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0", "1.0", "0.00", "1.00", "0.000", "1.000", "0.0000", "1.0000"}}, - 10: {locales: "ak bh guw ln mg nso pa ti wa", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 11: {locales: "tzm", form: 0x2, integer: []string{"0", "1", "11~24"}, decimal: []string{"0.0", "1.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "20.0", "21.0", "22.0", "23.0", "24.0"}}, - 12: {locales: "tzm", form: 0x0, integer: []string{"2~10", "100~106", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 13: {locales: "pt", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0", "1.0", "0.00", "1.00", "0.000", "1.000", "0.0000", "1.0000"}}, - 14: {locales: "pt", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 15: {locales: "af asa az bem bez bg brx ce cgg chr ckb dv ee el eo es eu fo fur gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq sdh seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts ug uz ve vo vun wae xh xog", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 16: {locales: "af asa az bem bez bg brx ce cgg chr ckb dv ee el eo es eu fo fur gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq sdh seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts ug uz ve vo vun wae xh xog", form: 0x0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 17: {locales: "pt_PT", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 18: {locales: "pt_PT", form: 0x0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 19: {locales: "da", form: 0x2, integer: []string{"1"}, decimal: []string{"0.1~1.6"}}, - 20: {locales: "da", form: 0x0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "2.0~3.4", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 21: {locales: "is", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1~1.6", "10.1", "100.1", "1000.1"}}, - 22: {locales: "is", form: 0x0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 23: {locales: "mk", form: 0x2, integer: []string{"1", "11", "21", "31", "41", "51", "61", "71", "101", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 24: {locales: "mk", form: 0x0, integer: []string{"0", "2~10", "12~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.2~1.0", "1.2~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 25: {locales: "fil tl", form: 0x2, integer: []string{"0~3", "5", "7", "8", "10~13", "15", "17", "18", "20", "21", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.3", "0.5", "0.7", "0.8", "1.0~1.3", "1.5", "1.7", "1.8", "2.0", "2.1", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 26: {locales: "fil tl", form: 0x0, integer: []string{"4", "6", "9", "14", "16", "19", "24", "26", "104", "1004"}, decimal: []string{"0.4", "0.6", "0.9", "1.4", "1.6", "1.9", "2.4", "2.6", "10.4", "100.4", "1000.4"}}, - 27: {locales: "lv prg", form: 0x1, integer: []string{"0", "10~20", "30", "40", "50", "60", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 28: {locales: "lv prg", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1", "1.0", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 29: {locales: "lv prg", form: 0x0, integer: []string{"2~9", "22~29", "102", "1002"}, decimal: []string{"0.2~0.9", "1.2~1.9", "10.2", "100.2", "1000.2"}}, - 30: {locales: "lag", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 31: {locales: "lag", form: 0x2, integer: []string{"1"}, decimal: []string{"0.1~1.6"}}, - 32: {locales: "lag", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 33: {locales: "ksh", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 34: {locales: "ksh", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 35: {locales: "ksh", form: 0x0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 36: {locales: "iu kw naq se sma smi smj smn sms", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 37: {locales: "iu kw naq se sma smi smj smn sms", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 38: {locales: "iu kw naq se sma smi smj smn sms", form: 0x0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 39: {locales: "shi", form: 0x2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}}, - 40: {locales: "shi", form: 0x4, integer: []string{"2~10"}, decimal: []string{"2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "2.00", "3.00", "4.00", "5.00", "6.00", "7.00", "8.00"}}, - 41: {locales: "shi", form: 0x0, integer: []string{"11~26", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~1.9", "2.1~2.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 42: {locales: "mo ro", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 43: {locales: "mo ro", form: 0x4, integer: []string{"0", "2~16", "101", "1001"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 44: {locales: "mo ro", form: 0x0, integer: []string{"20~35", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 45: {locales: "bs hr sh sr", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 46: {locales: "bs hr sh sr", form: 0x4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string{"0.2~0.4", "1.2~1.4", "2.2~2.4", "3.2~3.4", "4.2~4.4", "5.2", "10.2", "100.2", "1000.2"}}, - 47: {locales: "bs hr sh sr", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.5~1.0", "1.5~2.0", "2.5~2.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 48: {locales: "gd", form: 0x2, integer: []string{"1", "11"}, decimal: []string{"1.0", "11.0", "1.00", "11.00", "1.000", "11.000", "1.0000"}}, - 49: {locales: "gd", form: 0x3, integer: []string{"2", "12"}, decimal: []string{"2.0", "12.0", "2.00", "12.00", "2.000", "12.000", "2.0000"}}, - 50: {locales: "gd", form: 0x4, integer: []string{"3~10", "13~19"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "3.00"}}, - 51: {locales: "gd", form: 0x0, integer: []string{"0", "20~34", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 52: {locales: "sl", form: 0x2, integer: []string{"1", "101", "201", "301", "401", "501", "601", "701", "1001"}, decimal: []string(nil)}, - 53: {locales: "sl", form: 0x3, integer: []string{"2", "102", "202", "302", "402", "502", "602", "702", "1002"}, decimal: []string(nil)}, - 54: {locales: "sl", form: 0x4, integer: []string{"3", "4", "103", "104", "203", "204", "303", "304", "403", "404", "503", "504", "603", "604", "703", "704", "1003"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 55: {locales: "sl", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 56: {locales: "dsb hsb", form: 0x2, integer: []string{"1", "101", "201", "301", "401", "501", "601", "701", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 57: {locales: "dsb hsb", form: 0x3, integer: []string{"2", "102", "202", "302", "402", "502", "602", "702", "1002"}, decimal: []string{"0.2", "1.2", "2.2", "3.2", "4.2", "5.2", "6.2", "7.2", "10.2", "100.2", "1000.2"}}, - 58: {locales: "dsb hsb", form: 0x4, integer: []string{"3", "4", "103", "104", "203", "204", "303", "304", "403", "404", "503", "504", "603", "604", "703", "704", "1003"}, decimal: []string{"0.3", "0.4", "1.3", "1.4", "2.3", "2.4", "3.3", "3.4", "4.3", "4.4", "5.3", "5.4", "6.3", "6.4", "7.3", "7.4", "10.3", "100.3", "1000.3"}}, - 59: {locales: "dsb hsb", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.5~1.0", "1.5~2.0", "2.5~2.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 60: {locales: "he iw", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 61: {locales: "he iw", form: 0x3, integer: []string{"2"}, decimal: []string(nil)}, - 62: {locales: "he iw", form: 0x5, integer: []string{"20", "30", "40", "50", "60", "70", "80", "90", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 63: {locales: "he iw", form: 0x0, integer: []string{"0", "3~17", "101", "1001"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 64: {locales: "cs sk", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 65: {locales: "cs sk", form: 0x4, integer: []string{"2~4"}, decimal: []string(nil)}, - 66: {locales: "cs sk", form: 0x5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 67: {locales: "cs sk", form: 0x0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 68: {locales: "pl", form: 0x2, integer: []string{"1"}, decimal: []string(nil)}, - 69: {locales: "pl", form: 0x4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string(nil)}, - 70: {locales: "pl", form: 0x5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 71: {locales: "pl", form: 0x0, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 72: {locales: "be", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "71.0", "81.0", "101.0", "1001.0"}}, - 73: {locales: "be", form: 0x4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string{"2.0", "3.0", "4.0", "22.0", "23.0", "24.0", "32.0", "33.0", "102.0", "1002.0"}}, - 74: {locales: "be", form: 0x5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "11.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 75: {locales: "be", form: 0x0, integer: []string(nil), decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.1", "1000.1"}}, - 76: {locales: "lt", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "71.0", "81.0", "101.0", "1001.0"}}, - 77: {locales: "lt", form: 0x4, integer: []string{"2~9", "22~29", "102", "1002"}, decimal: []string{"2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "22.0", "102.0", "1002.0"}}, - 78: {locales: "lt", form: 0x5, integer: []string(nil), decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.1", "1000.1"}}, - 79: {locales: "lt", form: 0x0, integer: []string{"0", "10~20", "30", "40", "50", "60", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 80: {locales: "mt", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 81: {locales: "mt", form: 0x4, integer: []string{"0", "2~10", "102~107", "1002"}, decimal: []string{"0.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "10.0", "102.0", "1002.0"}}, - 82: {locales: "mt", form: 0x5, integer: []string{"11~19", "111~117", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}}, - 83: {locales: "mt", form: 0x0, integer: []string{"20~35", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 84: {locales: "ru uk", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, - 85: {locales: "ru uk", form: 0x4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string(nil)}, - 86: {locales: "ru uk", form: 0x5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 87: {locales: "ru uk", form: 0x0, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 88: {locales: "br", form: 0x2, integer: []string{"1", "21", "31", "41", "51", "61", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "81.0", "101.0", "1001.0"}}, - 89: {locales: "br", form: 0x3, integer: []string{"2", "22", "32", "42", "52", "62", "82", "102", "1002"}, decimal: []string{"2.0", "22.0", "32.0", "42.0", "52.0", "62.0", "82.0", "102.0", "1002.0"}}, - 90: {locales: "br", form: 0x4, integer: []string{"3", "4", "9", "23", "24", "29", "33", "34", "39", "43", "44", "49", "103", "1003"}, decimal: []string{"3.0", "4.0", "9.0", "23.0", "24.0", "29.0", "33.0", "34.0", "103.0", "1003.0"}}, - 91: {locales: "br", form: 0x5, integer: []string{"1000000"}, decimal: []string{"1000000.0", "1000000.00", "1000000.000"}}, - 92: {locales: "br", form: 0x0, integer: []string{"0", "5~8", "10~20", "100", "1000", "10000", "100000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0"}}, - 93: {locales: "ga", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 94: {locales: "ga", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 95: {locales: "ga", form: 0x4, integer: []string{"3~6"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "3.00", "4.00", "5.00", "6.00", "3.000", "4.000", "5.000", "6.000", "3.0000", "4.0000", "5.0000", "6.0000"}}, - 96: {locales: "ga", form: 0x5, integer: []string{"7~10"}, decimal: []string{"7.0", "8.0", "9.0", "10.0", "7.00", "8.00", "9.00", "10.00", "7.000", "8.000", "9.000", "10.000", "7.0000", "8.0000", "9.0000", "10.0000"}}, - 97: {locales: "ga", form: 0x0, integer: []string{"0", "11~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 98: {locales: "gv", form: 0x2, integer: []string{"1", "11", "21", "31", "41", "51", "61", "71", "101", "1001"}, decimal: []string(nil)}, - 99: {locales: "gv", form: 0x3, integer: []string{"2", "12", "22", "32", "42", "52", "62", "72", "102", "1002"}, decimal: []string(nil)}, - 100: {locales: "gv", form: 0x4, integer: []string{"0", "20", "40", "60", "80", "100", "120", "140", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 101: {locales: "gv", form: 0x5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 102: {locales: "gv", form: 0x0, integer: []string{"3~10", "13~19", "23", "103", "1003"}, decimal: []string(nil)}, - 103: {locales: "ar", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 104: {locales: "ar", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 105: {locales: "ar", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 106: {locales: "ar", form: 0x4, integer: []string{"3~10", "103~110", "1003"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "103.0", "1003.0"}}, - 107: {locales: "ar", form: 0x5, integer: []string{"11~26", "111", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}}, - 108: {locales: "ar", form: 0x0, integer: []string{"100~102", "200~202", "300~302", "400~402", "500~502", "600", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 109: {locales: "cy", form: 0x1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 110: {locales: "cy", form: 0x2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 111: {locales: "cy", form: 0x3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 112: {locales: "cy", form: 0x4, integer: []string{"3"}, decimal: []string{"3.0", "3.00", "3.000", "3.0000"}}, - 113: {locales: "cy", form: 0x5, integer: []string{"6"}, decimal: []string{"6.0", "6.00", "6.000", "6.0000"}}, - 114: {locales: "cy", form: 0x0, integer: []string{"4", "5", "7~20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, -} // Size: 8304 bytes - -// Total table size 12576 bytes (12KiB); checksum: 35F73741 diff --git a/vendor/golang.org/x/text/internal/number/decimal.go b/vendor/golang.org/x/text/internal/number/decimal.go index 9c36865d16..ef5df60bed 100644 --- a/vendor/golang.org/x/text/internal/number/decimal.go +++ b/vendor/golang.org/x/text/internal/number/decimal.go @@ -1,416 +1,433 @@ -// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2017 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: use build tags once a low-level public API has been established in -// package strconv. - -// Multiprecision decimal numbers. -// For floating-point formatting only; not general purpose. -// Only operations are assign and (binary) left/right shift. -// Can do binary floating point in multiprecision decimal precisely -// because 2 divides 10; cannot do decimal floating point -// in multiprecision binary precisely. +//go:generate stringer -type RoundingMode package number -type decimal struct { - d [800]byte // digits, big-endian representation - nd int // number of digits used - dp int // decimal point - neg bool - trunc bool // discarded nonzero digits beyond d[:nd] +import ( + "math" + "strconv" +) + +// RoundingMode determines how a number is rounded to the desired precision. +type RoundingMode byte + +const ( + ToNearestEven RoundingMode = iota // towards the nearest integer, or towards an even number if equidistant. + ToNearestZero // towards the nearest integer, or towards zero if equidistant. + ToNearestAway // towards the nearest integer, or away from zero if equidistant. + ToPositiveInf // towards infinity + ToNegativeInf // towards negative infinity + ToZero // towards zero + AwayFromZero // away from zero + numModes +) + +// A RoundingContext indicates how a number should be converted to digits. +type RoundingContext struct { + Mode RoundingMode + Increment int32 // if > 0, round to Increment * 10^-Scale + + Precision int32 // maximum number of significant digits. + Scale int32 // maximum number of decimals after the dot. } -func (a *decimal) String() string { - n := 10 + a.nd - if a.dp > 0 { - n += a.dp - } - if a.dp < 0 { - n += -a.dp - } +const maxIntDigits = 20 - buf := make([]byte, n) - w := 0 - switch { - case a.nd == 0: - return "0" - - case a.dp <= 0: - // zeros fill space between decimal point and digits - buf[w] = '0' - w++ - buf[w] = '.' - w++ - w += digitZero(buf[w : w+-a.dp]) - w += copy(buf[w:], a.d[0:a.nd]) - - case a.dp < a.nd: - // decimal point in middle of digits - w += copy(buf[w:], a.d[0:a.dp]) - buf[w] = '.' - w++ - w += copy(buf[w:], a.d[a.dp:a.nd]) +// A Decimal represents floating point number represented in digits of the base +// in which a number is to be displayed. Digits represents a number [0, 1.0), +// and the absolute value represented by Decimal is Digits * 10^Exp. +// Leading and trailing zeros may be omitted and Exp may point outside a valid +// position in Digits. +// +// Examples: +// Number Decimal +// 12345 Digits: [1, 2, 3, 4, 5], Exp: 5 +// 12.345 Digits: [1, 2, 3, 4, 5], Exp: 2 +// 12000 Digits: [1, 2], Exp: 5 +// 0.00123 Digits: [1, 2, 3], Exp: -2 +type Decimal struct { + Digits []byte // mantissa digits, big-endian + Exp int32 // exponent + Neg bool + Inf bool // Takes precedence over Digits and Exp. + NaN bool // Takes precedence over Inf. + + buf [maxIntDigits]byte +} - default: - // zeros fill space between digits and decimal point - w += copy(buf[w:], a.d[0:a.nd]) - w += digitZero(buf[w : w+a.dp-a.nd]) +// normalize returns a new Decimal with leading and trailing zeros removed. +func (d *Decimal) normalize() (n Decimal) { + n = *d + b := n.Digits + // Strip leading zeros. Resulting number of digits is significant digits. + for len(b) > 0 && b[0] == 0 { + b = b[1:] + n.Exp-- + } + // Strip trailing zeros + for len(b) > 0 && b[len(b)-1] == 0 { + b = b[:len(b)-1] + } + if len(b) == 0 { + n.Exp = 0 } - return string(buf[0:w]) + n.Digits = b + return n } -func digitZero(dst []byte) int { - for i := range dst { - dst[i] = '0' +func (d *Decimal) clear() { + b := d.Digits + if b == nil { + b = d.buf[:0] } - return len(dst) + *d = Decimal{} + d.Digits = b[:0] } -// trim trailing zeros from number. -// (They are meaningless; the decimal point is tracked -// independent of the number of digits.) -func trim(a *decimal) { - for a.nd > 0 && a.d[a.nd-1] == '0' { - a.nd-- +func (x *Decimal) String() string { + if x.NaN { + return "NaN" } - if a.nd == 0 { - a.dp = 0 + var buf []byte + if x.Neg { + buf = append(buf, '-') } -} - -// Assign v to a. -func (a *decimal) Assign(v uint64) { - var buf [24]byte - - // Write reversed decimal in buf. - n := 0 - for v > 0 { - v1 := v / 10 - v -= 10 * v1 - buf[n] = byte(v + '0') - n++ - v = v1 + if x.Inf { + buf = append(buf, "Inf"...) + return string(buf) } - - // Reverse again to produce forward decimal in a.d. - a.nd = 0 - for n--; n >= 0; n-- { - a.d[a.nd] = buf[n] - a.nd++ + switch { + case len(x.Digits) == 0: + buf = append(buf, '0') + case x.Exp <= 0: + // 0.00ddd + buf = append(buf, "0."...) + buf = appendZeros(buf, -int(x.Exp)) + buf = appendDigits(buf, x.Digits) + + case /* 0 < */ int(x.Exp) < len(x.Digits): + // dd.ddd + buf = appendDigits(buf, x.Digits[:x.Exp]) + buf = append(buf, '.') + buf = appendDigits(buf, x.Digits[x.Exp:]) + + default: // len(x.Digits) <= x.Exp + // ddd00 + buf = appendDigits(buf, x.Digits) + buf = appendZeros(buf, int(x.Exp)-len(x.Digits)) } - a.dp = a.nd - trim(a) + return string(buf) } -// Maximum shift that we can do in one pass without overflow. -// A uint has 32 or 64 bits, and we have to be able to accommodate 9<> 63) -const maxShift = uintSize - 4 - -// Binary shift right (/ 2) by k bits. k <= maxShift to avoid overflow. -func rightShift(a *decimal, k uint) { - r := 0 // read pointer - w := 0 // write pointer - - // Pick up enough leading digits to cover first shift. - var n uint - for ; n>>k == 0; r++ { - if r >= a.nd { - if n == 0 { - // a == 0; shouldn't get here, but handle anyway. - a.nd = 0 - return - } - for n>>k == 0 { - n = n * 10 - r++ - } - break - } - c := uint(a.d[r]) - n = n*10 + c - '0' - } - a.dp -= r - 1 - - // Pick up a digit, put down a digit. - for ; r < a.nd; r++ { - c := uint(a.d[r]) - dig := n >> k - n -= dig << k - a.d[w] = byte(dig + '0') - w++ - n = n*10 + c - '0' - } - - // Put down extra digits. - for n > 0 { - dig := n >> k - n -= dig << k - if w < len(a.d) { - a.d[w] = byte(dig + '0') - w++ - } else if dig > 0 { - a.trunc = true - } - n = n * 10 +func appendDigits(buf []byte, digits []byte) []byte { + for _, c := range digits { + buf = append(buf, c+'0') } - - a.nd = w - trim(a) + return buf } -// Cheat sheet for left shift: table indexed by shift count giving -// number of new digits that will be introduced by that shift. -// -// For example, leftcheats[4] = {2, "625"}. That means that -// if we are shifting by 4 (multiplying by 16), it will add 2 digits -// when the string prefix is "625" through "999", and one fewer digit -// if the string prefix is "000" through "624". -// -// Credit for this trick goes to Ken. - -type leftCheat struct { - delta int // number of new digits - cutoff string // minus one digit if original < a. +// appendZeros appends n 0 digits to buf and returns buf. +func appendZeros(buf []byte, n int) []byte { + for ; n > 0; n-- { + buf = append(buf, '0') + } + return buf } -var leftcheats = []leftCheat{ - // Leading digits of 1/2^i = 5^i. - // 5^23 is not an exact 64-bit floating point number, - // so have to use bc for the math. - // Go up to 60 to be large enough for 32bit and 64bit platforms. - /* - seq 60 | sed 's/^/5^/' | bc | - awk 'BEGIN{ print "\t{ 0, \"\" }," } - { - log2 = log(2)/log(10) - printf("\t{ %d, \"%s\" },\t// * %d\n", - int(log2*NR+1), $0, 2**NR) - }' - */ - {0, ""}, - {1, "5"}, // * 2 - {1, "25"}, // * 4 - {1, "125"}, // * 8 - {2, "625"}, // * 16 - {2, "3125"}, // * 32 - {2, "15625"}, // * 64 - {3, "78125"}, // * 128 - {3, "390625"}, // * 256 - {3, "1953125"}, // * 512 - {4, "9765625"}, // * 1024 - {4, "48828125"}, // * 2048 - {4, "244140625"}, // * 4096 - {4, "1220703125"}, // * 8192 - {5, "6103515625"}, // * 16384 - {5, "30517578125"}, // * 32768 - {5, "152587890625"}, // * 65536 - {6, "762939453125"}, // * 131072 - {6, "3814697265625"}, // * 262144 - {6, "19073486328125"}, // * 524288 - {7, "95367431640625"}, // * 1048576 - {7, "476837158203125"}, // * 2097152 - {7, "2384185791015625"}, // * 4194304 - {7, "11920928955078125"}, // * 8388608 - {8, "59604644775390625"}, // * 16777216 - {8, "298023223876953125"}, // * 33554432 - {8, "1490116119384765625"}, // * 67108864 - {9, "7450580596923828125"}, // * 134217728 - {9, "37252902984619140625"}, // * 268435456 - {9, "186264514923095703125"}, // * 536870912 - {10, "931322574615478515625"}, // * 1073741824 - {10, "4656612873077392578125"}, // * 2147483648 - {10, "23283064365386962890625"}, // * 4294967296 - {10, "116415321826934814453125"}, // * 8589934592 - {11, "582076609134674072265625"}, // * 17179869184 - {11, "2910383045673370361328125"}, // * 34359738368 - {11, "14551915228366851806640625"}, // * 68719476736 - {12, "72759576141834259033203125"}, // * 137438953472 - {12, "363797880709171295166015625"}, // * 274877906944 - {12, "1818989403545856475830078125"}, // * 549755813888 - {13, "9094947017729282379150390625"}, // * 1099511627776 - {13, "45474735088646411895751953125"}, // * 2199023255552 - {13, "227373675443232059478759765625"}, // * 4398046511104 - {13, "1136868377216160297393798828125"}, // * 8796093022208 - {14, "5684341886080801486968994140625"}, // * 17592186044416 - {14, "28421709430404007434844970703125"}, // * 35184372088832 - {14, "142108547152020037174224853515625"}, // * 70368744177664 - {15, "710542735760100185871124267578125"}, // * 140737488355328 - {15, "3552713678800500929355621337890625"}, // * 281474976710656 - {15, "17763568394002504646778106689453125"}, // * 562949953421312 - {16, "88817841970012523233890533447265625"}, // * 1125899906842624 - {16, "444089209850062616169452667236328125"}, // * 2251799813685248 - {16, "2220446049250313080847263336181640625"}, // * 4503599627370496 - {16, "11102230246251565404236316680908203125"}, // * 9007199254740992 - {17, "55511151231257827021181583404541015625"}, // * 18014398509481984 - {17, "277555756156289135105907917022705078125"}, // * 36028797018963968 - {17, "1387778780781445675529539585113525390625"}, // * 72057594037927936 - {18, "6938893903907228377647697925567626953125"}, // * 144115188075855872 - {18, "34694469519536141888238489627838134765625"}, // * 288230376151711744 - {18, "173472347597680709441192448139190673828125"}, // * 576460752303423488 - {19, "867361737988403547205962240695953369140625"}, // * 1152921504606846976 +func (d *Decimal) round(mode RoundingMode, n int) { + if n >= len(d.Digits) { + return + } + // Make rounding decision: The result mantissa is truncated ("rounded down") + // by default. Decide if we need to increment, or "round up", the (unsigned) + // mantissa. + inc := false + switch mode { + case ToNegativeInf: + inc = d.Neg + case ToPositiveInf: + inc = !d.Neg + case ToZero: + // nothing to do + case AwayFromZero: + inc = true + case ToNearestEven: + inc = d.Digits[n] > 5 || d.Digits[n] == 5 && + (len(d.Digits) > n+1 || n == 0 || d.Digits[n-1]&1 != 0) + case ToNearestAway: + inc = d.Digits[n] >= 5 + case ToNearestZero: + inc = d.Digits[n] > 5 || d.Digits[n] == 5 && len(d.Digits) > n+1 + default: + panic("unreachable") + } + if inc { + d.roundUp(n) + } else { + d.roundDown(n) + } } -// Is the leading prefix of b lexicographically less than s? -func prefixIsLessThan(b []byte, s string) bool { - for i := 0; i < len(s); i++ { - if i >= len(b) { - return true - } - if b[i] != s[i] { - return b[i] < s[i] - } +// roundFloat rounds a floating point number. +func (r RoundingMode) roundFloat(x float64) float64 { + // Make rounding decision: The result mantissa is truncated ("rounded down") + // by default. Decide if we need to increment, or "round up", the (unsigned) + // mantissa. + abs := x + if x < 0 { + abs = -x + } + i, f := math.Modf(abs) + if f == 0.0 { + return x + } + inc := false + switch r { + case ToNegativeInf: + inc = x < 0 + case ToPositiveInf: + inc = x >= 0 + case ToZero: + // nothing to do + case AwayFromZero: + inc = true + case ToNearestEven: + // TODO: check overflow + inc = f > 0.5 || f == 0.5 && int64(i)&1 != 0 + case ToNearestAway: + inc = f >= 0.5 + case ToNearestZero: + inc = f > 0.5 + default: + panic("unreachable") } - return false + if inc { + i += 1 + } + if abs != x { + i = -i + } + return i } -// Binary shift left (* 2) by k bits. k <= maxShift to avoid overflow. -func leftShift(a *decimal, k uint) { - delta := leftcheats[k].delta - if prefixIsLessThan(a.d[0:a.nd], leftcheats[k].cutoff) { - delta-- - } - - r := a.nd // read index - w := a.nd + delta // write index - - // Pick up a digit, put down a digit. - var n uint - for r--; r >= 0; r-- { - n += (uint(a.d[r]) - '0') << k - quo := n / 10 - rem := n - 10*quo - w-- - if w < len(a.d) { - a.d[w] = byte(rem + '0') - } else if rem != 0 { - a.trunc = true - } - n = quo - } - - // Put down extra digits. - for n > 0 { - quo := n / 10 - rem := n - 10*quo - w-- - if w < len(a.d) { - a.d[w] = byte(rem + '0') - } else if rem != 0 { - a.trunc = true - } - n = quo +func (x *Decimal) roundUp(n int) { + if n < 0 || n >= len(x.Digits) { + return // nothing to do + } + // find first digit < 9 + for n > 0 && x.Digits[n-1] >= 9 { + n-- } - a.nd += delta - if a.nd >= len(a.d) { - a.nd = len(a.d) + if n == 0 { + // all digits are 9s => round up to 1 and update exponent + x.Digits[0] = 1 // ok since len(x.Digits) > n + x.Digits = x.Digits[:1] + x.Exp++ + return } - a.dp += delta - trim(a) + x.Digits[n-1]++ + x.Digits = x.Digits[:n] + // x already trimmed } -// Binary shift left (k > 0) or right (k < 0). -func (a *decimal) Shift(k int) { - switch { - case a.nd == 0: - // nothing to do: a == 0 - case k > 0: - for k > maxShift { - leftShift(a, maxShift) - k -= maxShift - } - leftShift(a, uint(k)) - case k < 0: - for k < -maxShift { - rightShift(a, maxShift) - k += maxShift - } - rightShift(a, uint(-k)) +func (x *Decimal) roundDown(n int) { + if n < 0 || n >= len(x.Digits) { + return // nothing to do } + x.Digits = x.Digits[:n] + trim(x) } -// If we chop a at nd digits, should we round up? -func shouldRoundUp(a *decimal, nd int) bool { - if nd < 0 || nd >= a.nd { - return false +// trim cuts off any trailing zeros from x's mantissa; +// they are meaningless for the value of x. +func trim(x *Decimal) { + i := len(x.Digits) + for i > 0 && x.Digits[i-1] == 0 { + i-- } - if a.d[nd] == '5' && nd+1 == a.nd { // exactly halfway - round to even - // if we truncated, a little higher than what's recorded - always round up - if a.trunc { - return true - } - return nd > 0 && (a.d[nd-1]-'0')%2 != 0 + x.Digits = x.Digits[:i] + if i == 0 { + x.Exp = 0 } - // not halfway - digit tells all - return a.d[nd] >= '5' } -// Round a to nd digits (or fewer). -// If nd is zero, it means we're rounding -// just to the left of the digits, as in -// 0.09 -> 0.1. -func (a *decimal) Round(nd int) { - if nd < 0 || nd >= a.nd { - return - } - if shouldRoundUp(a, nd) { - a.RoundUp(nd) - } else { - a.RoundDown(nd) +// A Converter converts a number into decimals according to the given rounding +// criteria. +type Converter interface { + Convert(d *Decimal, r *RoundingContext) +} + +const ( + signed = true + unsigned = false +) + +// Convert converts the given number to the decimal representation using the +// supplied RoundingContext. +func (d *Decimal) Convert(r *RoundingContext, number interface{}) { + switch f := number.(type) { + case Converter: + d.clear() + f.Convert(d, r) + case float32: + d.ConvertFloat(r, float64(f), 32) + case float64: + d.ConvertFloat(r, f, 64) + case int: + d.ConvertInt(r, signed, uint64(f)) + case int8: + d.ConvertInt(r, signed, uint64(f)) + case int16: + d.ConvertInt(r, signed, uint64(f)) + case int32: + d.ConvertInt(r, signed, uint64(f)) + case int64: + d.ConvertInt(r, signed, uint64(f)) + case uint: + d.ConvertInt(r, unsigned, uint64(f)) + case uint8: + d.ConvertInt(r, unsigned, uint64(f)) + case uint16: + d.ConvertInt(r, unsigned, uint64(f)) + case uint32: + d.ConvertInt(r, unsigned, uint64(f)) + case uint64: + d.ConvertInt(r, unsigned, f) + + // TODO: + // case string: if produced by strconv, allows for easy arbitrary pos. + // case reflect.Value: + // case big.Float + // case big.Int + // case big.Rat? + // catch underlyings using reflect or will this already be done by the + // message package? } } -// Round a down to nd digits (or fewer). -func (a *decimal) RoundDown(nd int) { - if nd < 0 || nd >= a.nd { +// ConvertInt converts an integer to decimals. +func (d *Decimal) ConvertInt(r *RoundingContext, signed bool, x uint64) { + if r.Increment > 0 { + // TODO: if uint64 is too large, fall back to float64 + if signed { + d.ConvertFloat(r, float64(int64(x)), 64) + } else { + d.ConvertFloat(r, float64(x), 64) + } return } - a.nd = nd - trim(a) + d.clear() + if signed && int64(x) < 0 { + x = uint64(-int64(x)) + d.Neg = true + } + d.fillIntDigits(x) + d.Exp = int32(len(d.Digits)) } -// Round a up to nd digits (or fewer). -func (a *decimal) RoundUp(nd int) { - if nd < 0 || nd >= a.nd { +// ConvertFloat converts a floating point number to decimals. +func (d *Decimal) ConvertFloat(r *RoundingContext, x float64, size int) { + d.clear() + if math.IsNaN(x) { + d.NaN = true return } - - // round up - for i := nd - 1; i >= 0; i-- { - c := a.d[i] - if c < '9' { // can stop after this digit - a.d[i]++ - a.nd = i + 1 - return + abs := x + if x < 0 { + d.Neg = true + abs = -x + } + if math.IsInf(abs, 1) { + d.Inf = true + return + } + // Simple case: decimal notation + if r.Scale > 0 || r.Increment > 0 || r.Precision == 0 { + if int(r.Scale) > len(scales) { + x *= math.Pow(10, float64(r.Scale)) + } else { + x *= scales[r.Scale] + } + if r.Increment > 0 { + inc := float64(r.Increment) + x /= float64(inc) + x = r.Mode.roundFloat(x) + x *= inc + } else { + x = r.Mode.roundFloat(x) } + d.fillIntDigits(uint64(math.Abs(x))) + d.Exp = int32(len(d.Digits)) - r.Scale + return } - // Number is all 9s. - // Change to single 1 with adjusted decimal point. - a.d[0] = '1' - a.nd = 1 - a.dp++ + // Nasty case (for non-decimal notation). + // Asides from being inefficient, this result is also wrong as it will + // apply ToNearestEven rounding regardless of the user setting. + // TODO: expose functionality in strconv so we can avoid this hack. + // Something like this would work: + // AppendDigits(dst []byte, x float64, base, size, prec int) (digits []byte, exp, accuracy int) + // TODO: This only supports the nearest even rounding mode. + + prec := int(r.Precision) + if prec > 0 { + prec-- + } + b := strconv.AppendFloat(d.Digits, abs, 'e', prec, size) + i := 0 + k := 0 + // No need to check i < len(b) as we always have an 'e'. + for { + if c := b[i]; '0' <= c && c <= '9' { + b[k] = c - '0' + k++ + } else if c != '.' { + break + } + i++ + } + d.Digits = b[:k] + i += len("e") + pSign := i + exp := 0 + for i++; i < len(b); i++ { + exp *= 10 + exp += int(b[i] - '0') + } + if b[pSign] == '-' { + exp = -exp + } + d.Exp = int32(exp) + 1 } -// Extract integer part, rounded appropriately. -// No guarantees about overflow. -func (a *decimal) RoundedInteger() uint64 { - if a.dp > 20 { - return 0xFFFFFFFFFFFFFFFF +func (d *Decimal) fillIntDigits(x uint64) { + if cap(d.Digits) < maxIntDigits { + d.Digits = d.buf[:] + } else { + d.Digits = d.buf[:maxIntDigits] } - var i int - n := uint64(0) - for i = 0; i < a.dp && i < a.nd; i++ { - n = n*10 + uint64(a.d[i]-'0') + i := 0 + for ; x > 0; x /= 10 { + d.Digits[i] = byte(x % 10) + i++ } - for ; i < a.dp; i++ { - n *= 10 + d.Digits = d.Digits[:i] + for p := 0; p < i; p++ { + i-- + d.Digits[p], d.Digits[i] = d.Digits[i], d.Digits[p] } - if shouldRoundUp(a, a.dp) { - n++ +} + +var scales [70]float64 + +func init() { + x := 1.0 + for i := range scales { + scales[i] = x + x *= 10 } - return n } diff --git a/vendor/golang.org/x/text/internal/number/decimal_test.go b/vendor/golang.org/x/text/internal/number/decimal_test.go new file mode 100644 index 0000000000..5c81700497 --- /dev/null +++ b/vendor/golang.org/x/text/internal/number/decimal_test.go @@ -0,0 +1,291 @@ +// Copyright 2017 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 number + +import ( + "fmt" + "math" + "strconv" + "strings" + "testing" +) + +func mkfloat(num string) float64 { + u, _ := strconv.ParseUint(num, 10, 32) + return float64(u) +} + +// mkdec creates a decimal from a string. All ASCII digits are converted to +// digits in the decimal. The dot is used to indicate the scale by which the +// digits are shifted. Numbers may have an additional exponent or be the special +// value NaN, Inf, or -Inf. +func mkdec(num string) (d Decimal) { + if num[0] == '-' { + d.Neg = true + num = num[1:] + } + switch num { + case "NaN": + d.NaN = true + return + case "Inf": + d.Inf = true + return + } + if p := strings.IndexAny(num, "eE"); p != -1 { + i64, err := strconv.ParseInt(num[p+1:], 10, 32) + if err != nil { + panic(err) + } + d.Exp = int32(i64) + num = num[:p] + } + if p := strings.IndexByte(num, '.'); p != -1 { + d.Exp += int32(p) + num = num[:p] + num[p+1:] + } else { + d.Exp += int32(len(num)) + } + d.Digits = []byte(num) + for i := range d.Digits { + d.Digits[i] -= '0' + } + return d.normalize() +} + +func byteNum(s string) []byte { + b := make([]byte, len(s)) + for i := 0; i < len(s); i++ { + if c := s[i]; '0' <= c && c <= '9' { + b[i] = s[i] - '0' + } else { + b[i] = s[i] - 'a' + 10 + } + } + return b +} + +func strNum(s string) string { + return string(byteNum(s)) +} + +func TestDecimalString(t *testing.T) { + for _, test := range []struct { + x Decimal + want string + }{ + {want: "0"}, + {Decimal{Digits: nil, Exp: 1000}, "0"}, // exponent of 1000 is ignored + {Decimal{Digits: byteNum("12345"), Exp: 0}, "0.12345"}, + {Decimal{Digits: byteNum("12345"), Exp: -3}, "0.00012345"}, + {Decimal{Digits: byteNum("12345"), Exp: +3}, "123.45"}, + {Decimal{Digits: byteNum("12345"), Exp: +10}, "1234500000"}, + } { + if got := test.x.String(); got != test.want { + t.Errorf("%v == %q; want %q", test.x, got, test.want) + } + } +} + +func TestRounding(t *testing.T) { + testCases := []struct { + x string + n int + // modes is the result for modes. Signs are left out of the result. + // The results are stored in the following order: + // zero, negInf + // nearZero, nearEven, nearAway + // away, posInf + modes [numModes]string + }{ + {"0", 1, [numModes]string{ + "0", "0", + "0", "0", "0", + "0", "0"}}, + {"1", 1, [numModes]string{ + "1", "1", + "1", "1", "1", + "1", "1"}}, + {"5", 1, [numModes]string{ + "5", "5", + "5", "5", "5", + "5", "5"}}, + {"15", 1, [numModes]string{ + "10", "10", + "10", "20", "20", + "20", "20"}}, + {"45", 1, [numModes]string{ + "40", "40", + "40", "40", "50", + "50", "50"}}, + {"95", 1, [numModes]string{ + "90", "90", + "90", "100", "100", + "100", "100"}}, + + {"12344999", 4, [numModes]string{ + "12340000", "12340000", + "12340000", "12340000", "12340000", + "12350000", "12350000"}}, + {"12345000", 4, [numModes]string{ + "12340000", "12340000", + "12340000", "12340000", "12350000", + "12350000", "12350000"}}, + {"12345001", 4, [numModes]string{ + "12340000", "12340000", + "12350000", "12350000", "12350000", + "12350000", "12350000"}}, + {"12345100", 4, [numModes]string{ + "12340000", "12340000", + "12350000", "12350000", "12350000", + "12350000", "12350000"}}, + {"23454999", 4, [numModes]string{ + "23450000", "23450000", + "23450000", "23450000", "23450000", + "23460000", "23460000"}}, + {"23455000", 4, [numModes]string{ + "23450000", "23450000", + "23450000", "23460000", "23460000", + "23460000", "23460000"}}, + {"23455001", 4, [numModes]string{ + "23450000", "23450000", + "23460000", "23460000", "23460000", + "23460000", "23460000"}}, + {"23455100", 4, [numModes]string{ + "23450000", "23450000", + "23460000", "23460000", "23460000", + "23460000", "23460000"}}, + + {"99994999", 4, [numModes]string{ + "99990000", "99990000", + "99990000", "99990000", "99990000", + "100000000", "100000000"}}, + {"99995000", 4, [numModes]string{ + "99990000", "99990000", + "99990000", "100000000", "100000000", + "100000000", "100000000"}}, + {"99999999", 4, [numModes]string{ + "99990000", "99990000", + "100000000", "100000000", "100000000", + "100000000", "100000000"}}, + + {"12994999", 4, [numModes]string{ + "12990000", "12990000", + "12990000", "12990000", "12990000", + "13000000", "13000000"}}, + {"12995000", 4, [numModes]string{ + "12990000", "12990000", + "12990000", "13000000", "13000000", + "13000000", "13000000"}}, + {"12999999", 4, [numModes]string{ + "12990000", "12990000", + "13000000", "13000000", "13000000", + "13000000", "13000000"}}, + } + modes := []RoundingMode{ + ToZero, ToNegativeInf, + ToNearestZero, ToNearestEven, ToNearestAway, + AwayFromZero, ToPositiveInf, + } + for _, tc := range testCases { + // Create negative counterpart tests: the sign is reversed and + // ToPositiveInf and ToNegativeInf swapped. + negModes := tc.modes + negModes[1], negModes[6] = negModes[6], negModes[1] + for i, res := range negModes { + negModes[i] = "-" + res + } + for i, m := range modes { + t.Run(fmt.Sprintf("x:%s/n:%d/%s", tc.x, tc.n, m), func(t *testing.T) { + d := mkdec(tc.x) + d.round(m, tc.n) + if got := d.String(); got != tc.modes[i] { + t.Errorf("pos decimal: got %q; want %q", d.String(), tc.modes[i]) + } + + mult := math.Pow(10, float64(len(tc.x)-tc.n)) + f := mkfloat(tc.x) + f = m.roundFloat(f/mult) * mult + if got := fmt.Sprintf("%.0f", f); got != tc.modes[i] { + t.Errorf("pos float: got %q; want %q", got, tc.modes[i]) + } + + // Test the negative case. This is the same as the positive + // case, but with ToPositiveInf and ToNegativeInf swapped. + d = mkdec(tc.x) + d.Neg = true + d.round(m, tc.n) + if got, want := d.String(), negModes[i]; got != want { + t.Errorf("neg decimal: got %q; want %q", d.String(), want) + } + + f = -mkfloat(tc.x) + f = m.roundFloat(f/mult) * mult + if got := fmt.Sprintf("%.0f", f); got != negModes[i] { + t.Errorf("neg float: got %q; want %q", got, negModes[i]) + } + }) + } + } +} + +func TestConvert(t *testing.T) { + scale2 := &RoundingContext{Scale: 2} + scale2away := &RoundingContext{Scale: 2, Mode: AwayFromZero} + inc0_05 := &RoundingContext{Increment: 5, Scale: 2} + inc50 := &RoundingContext{Increment: 50} + prec3 := &RoundingContext{Precision: 3} + testCases := []struct { + x interface{} + rc *RoundingContext + out string + }{ + {int8(-34), scale2, "-34"}, + {int16(-234), scale2, "-234"}, + {int32(-234), scale2, "-234"}, + {int64(-234), scale2, "-234"}, + {int(-234), scale2, "-234"}, + {uint8(234), scale2, "234"}, + {uint16(234), scale2, "234"}, + {uint32(234), scale2, "234"}, + {uint64(234), scale2, "234"}, + {uint(234), scale2, "234"}, + {-0.001, scale2, "-0"}, + {-1e9, scale2, "-1000000000.00"}, + {0.234, scale2, "0.23"}, + {0.234, scale2away, "0.24"}, + {0.1234, prec3, "0.123"}, + {1234.0, prec3, "1230"}, + {1.2345e10, prec3, "12300000000"}, + + {0.03, inc0_05, "0.05"}, + {0.025, inc0_05, "0"}, + {0.075, inc0_05, "0.10"}, + {325, inc50, "300"}, + {375, inc50, "400"}, + + {converter(3), scale2, "100"}, + + {math.Inf(1), inc50, "Inf"}, + {math.Inf(-1), inc50, "-Inf"}, + {math.NaN(), inc50, "NaN"}, + } + for _, tc := range testCases { + var d Decimal + t.Run(fmt.Sprintf("%T:%v-%v", tc.x, tc.x, tc.rc), func(t *testing.T) { + d.Convert(tc.rc, tc.x) + if got := d.String(); got != tc.out { + t.Errorf("got %q; want %q", got, tc.out) + } + }) + } +} + +type converter int + +func (c converter) Convert(d *Decimal, r *RoundingContext) { + d.Digits = append(d.Digits, 1, 0, 0) + d.Exp = 3 +} diff --git a/vendor/golang.org/x/text/internal/number/extfloat.go b/vendor/golang.org/x/text/internal/number/extfloat.go deleted file mode 100644 index 97138e2b08..0000000000 --- a/vendor/golang.org/x/text/internal/number/extfloat.go +++ /dev/null @@ -1,671 +0,0 @@ -// 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. - -// TODO: use build tags once a low-level public API has been established in -// package strconv. - -package number - -// An extFloat represents an extended floating-point number, with more -// precision than a float64. It does not try to save bits: the -// number represented by the structure is mant*(2^exp), with a negative -// sign if neg is true. -type extFloat struct { - mant uint64 - exp int - neg bool -} - -// Powers of ten taken from double-conversion library. -// http://code.google.com/p/double-conversion/ -const ( - firstPowerOfTen = -348 - stepPowerOfTen = 8 -) - -var smallPowersOfTen = [...]extFloat{ - {1 << 63, -63, false}, // 1 - {0xa << 60, -60, false}, // 1e1 - {0x64 << 57, -57, false}, // 1e2 - {0x3e8 << 54, -54, false}, // 1e3 - {0x2710 << 50, -50, false}, // 1e4 - {0x186a0 << 47, -47, false}, // 1e5 - {0xf4240 << 44, -44, false}, // 1e6 - {0x989680 << 40, -40, false}, // 1e7 -} - -var powersOfTen = [...]extFloat{ - {0xfa8fd5a0081c0288, -1220, false}, // 10^-348 - {0xbaaee17fa23ebf76, -1193, false}, // 10^-340 - {0x8b16fb203055ac76, -1166, false}, // 10^-332 - {0xcf42894a5dce35ea, -1140, false}, // 10^-324 - {0x9a6bb0aa55653b2d, -1113, false}, // 10^-316 - {0xe61acf033d1a45df, -1087, false}, // 10^-308 - {0xab70fe17c79ac6ca, -1060, false}, // 10^-300 - {0xff77b1fcbebcdc4f, -1034, false}, // 10^-292 - {0xbe5691ef416bd60c, -1007, false}, // 10^-284 - {0x8dd01fad907ffc3c, -980, false}, // 10^-276 - {0xd3515c2831559a83, -954, false}, // 10^-268 - {0x9d71ac8fada6c9b5, -927, false}, // 10^-260 - {0xea9c227723ee8bcb, -901, false}, // 10^-252 - {0xaecc49914078536d, -874, false}, // 10^-244 - {0x823c12795db6ce57, -847, false}, // 10^-236 - {0xc21094364dfb5637, -821, false}, // 10^-228 - {0x9096ea6f3848984f, -794, false}, // 10^-220 - {0xd77485cb25823ac7, -768, false}, // 10^-212 - {0xa086cfcd97bf97f4, -741, false}, // 10^-204 - {0xef340a98172aace5, -715, false}, // 10^-196 - {0xb23867fb2a35b28e, -688, false}, // 10^-188 - {0x84c8d4dfd2c63f3b, -661, false}, // 10^-180 - {0xc5dd44271ad3cdba, -635, false}, // 10^-172 - {0x936b9fcebb25c996, -608, false}, // 10^-164 - {0xdbac6c247d62a584, -582, false}, // 10^-156 - {0xa3ab66580d5fdaf6, -555, false}, // 10^-148 - {0xf3e2f893dec3f126, -529, false}, // 10^-140 - {0xb5b5ada8aaff80b8, -502, false}, // 10^-132 - {0x87625f056c7c4a8b, -475, false}, // 10^-124 - {0xc9bcff6034c13053, -449, false}, // 10^-116 - {0x964e858c91ba2655, -422, false}, // 10^-108 - {0xdff9772470297ebd, -396, false}, // 10^-100 - {0xa6dfbd9fb8e5b88f, -369, false}, // 10^-92 - {0xf8a95fcf88747d94, -343, false}, // 10^-84 - {0xb94470938fa89bcf, -316, false}, // 10^-76 - {0x8a08f0f8bf0f156b, -289, false}, // 10^-68 - {0xcdb02555653131b6, -263, false}, // 10^-60 - {0x993fe2c6d07b7fac, -236, false}, // 10^-52 - {0xe45c10c42a2b3b06, -210, false}, // 10^-44 - {0xaa242499697392d3, -183, false}, // 10^-36 - {0xfd87b5f28300ca0e, -157, false}, // 10^-28 - {0xbce5086492111aeb, -130, false}, // 10^-20 - {0x8cbccc096f5088cc, -103, false}, // 10^-12 - {0xd1b71758e219652c, -77, false}, // 10^-4 - {0x9c40000000000000, -50, false}, // 10^4 - {0xe8d4a51000000000, -24, false}, // 10^12 - {0xad78ebc5ac620000, 3, false}, // 10^20 - {0x813f3978f8940984, 30, false}, // 10^28 - {0xc097ce7bc90715b3, 56, false}, // 10^36 - {0x8f7e32ce7bea5c70, 83, false}, // 10^44 - {0xd5d238a4abe98068, 109, false}, // 10^52 - {0x9f4f2726179a2245, 136, false}, // 10^60 - {0xed63a231d4c4fb27, 162, false}, // 10^68 - {0xb0de65388cc8ada8, 189, false}, // 10^76 - {0x83c7088e1aab65db, 216, false}, // 10^84 - {0xc45d1df942711d9a, 242, false}, // 10^92 - {0x924d692ca61be758, 269, false}, // 10^100 - {0xda01ee641a708dea, 295, false}, // 10^108 - {0xa26da3999aef774a, 322, false}, // 10^116 - {0xf209787bb47d6b85, 348, false}, // 10^124 - {0xb454e4a179dd1877, 375, false}, // 10^132 - {0x865b86925b9bc5c2, 402, false}, // 10^140 - {0xc83553c5c8965d3d, 428, false}, // 10^148 - {0x952ab45cfa97a0b3, 455, false}, // 10^156 - {0xde469fbd99a05fe3, 481, false}, // 10^164 - {0xa59bc234db398c25, 508, false}, // 10^172 - {0xf6c69a72a3989f5c, 534, false}, // 10^180 - {0xb7dcbf5354e9bece, 561, false}, // 10^188 - {0x88fcf317f22241e2, 588, false}, // 10^196 - {0xcc20ce9bd35c78a5, 614, false}, // 10^204 - {0x98165af37b2153df, 641, false}, // 10^212 - {0xe2a0b5dc971f303a, 667, false}, // 10^220 - {0xa8d9d1535ce3b396, 694, false}, // 10^228 - {0xfb9b7cd9a4a7443c, 720, false}, // 10^236 - {0xbb764c4ca7a44410, 747, false}, // 10^244 - {0x8bab8eefb6409c1a, 774, false}, // 10^252 - {0xd01fef10a657842c, 800, false}, // 10^260 - {0x9b10a4e5e9913129, 827, false}, // 10^268 - {0xe7109bfba19c0c9d, 853, false}, // 10^276 - {0xac2820d9623bf429, 880, false}, // 10^284 - {0x80444b5e7aa7cf85, 907, false}, // 10^292 - {0xbf21e44003acdd2d, 933, false}, // 10^300 - {0x8e679c2f5e44ff8f, 960, false}, // 10^308 - {0xd433179d9c8cb841, 986, false}, // 10^316 - {0x9e19db92b4e31ba9, 1013, false}, // 10^324 - {0xeb96bf6ebadf77d9, 1039, false}, // 10^332 - {0xaf87023b9bf0ee6b, 1066, false}, // 10^340 -} - -// floatBits returns the bits of the float64 that best approximates -// the extFloat passed as receiver. Overflow is set to true if -// the resulting float64 is ±Inf. -func (f *extFloat) floatBits(flt *floatInfo) (bits uint64, overflow bool) { - f.Normalize() - - exp := f.exp + 63 - - // Exponent too small. - if exp < flt.bias+1 { - n := flt.bias + 1 - exp - f.mant >>= uint(n) - exp += n - } - - // Extract 1+flt.mantbits bits from the 64-bit mantissa. - mant := f.mant >> (63 - flt.mantbits) - if f.mant&(1<<(62-flt.mantbits)) != 0 { - // Round up. - mant += 1 - } - - // Rounding might have added a bit; shift down. - if mant == 2<>= 1 - exp++ - } - - // Infinities. - if exp-flt.bias >= 1<>uint(-f.exp))<>= uint(-f.exp) - f.exp = 0 - return *f, *f - } - expBiased := exp - flt.bias - - upper = extFloat{mant: 2*f.mant + 1, exp: f.exp - 1, neg: f.neg} - if mant != 1<>(64-32) == 0 { - mant <<= 32 - exp -= 32 - } - if mant>>(64-16) == 0 { - mant <<= 16 - exp -= 16 - } - if mant>>(64-8) == 0 { - mant <<= 8 - exp -= 8 - } - if mant>>(64-4) == 0 { - mant <<= 4 - exp -= 4 - } - if mant>>(64-2) == 0 { - mant <<= 2 - exp -= 2 - } - if mant>>(64-1) == 0 { - mant <<= 1 - exp -= 1 - } - shift = uint(f.exp - exp) - f.mant, f.exp = mant, exp - return -} - -// Multiply sets f to the product f*g: the result is correctly rounded, -// but not normalized. -func (f *extFloat) Multiply(g extFloat) { - fhi, flo := f.mant>>32, uint64(uint32(f.mant)) - ghi, glo := g.mant>>32, uint64(uint32(g.mant)) - - // Cross products. - cross1 := fhi * glo - cross2 := flo * ghi - - // f.mant*g.mant is fhi*ghi << 64 + (cross1+cross2) << 32 + flo*glo - f.mant = fhi*ghi + (cross1 >> 32) + (cross2 >> 32) - rem := uint64(uint32(cross1)) + uint64(uint32(cross2)) + ((flo * glo) >> 32) - // Round up. - rem += (1 << 31) - - f.mant += (rem >> 32) - f.exp = f.exp + g.exp + 64 -} - -var uint64pow10 = [...]uint64{ - 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, - 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, -} - -// AssignDecimal sets f to an approximate value mantissa*10^exp. It -// reports whether the value represented by f is guaranteed to be the -// best approximation of d after being rounded to a float64 or -// float32 depending on flt. -func (f *extFloat) AssignDecimal(mantissa uint64, exp10 int, neg bool, trunc bool, flt *floatInfo) (ok bool) { - const uint64digits = 19 - const errorscale = 8 - errors := 0 // An upper bound for error, computed in errorscale*ulp. - if trunc { - // the decimal number was truncated. - errors += errorscale / 2 - } - - f.mant = mantissa - f.exp = 0 - f.neg = neg - - // Multiply by powers of ten. - i := (exp10 - firstPowerOfTen) / stepPowerOfTen - if exp10 < firstPowerOfTen || i >= len(powersOfTen) { - return false - } - adjExp := (exp10 - firstPowerOfTen) % stepPowerOfTen - - // We multiply by exp%step - if adjExp < uint64digits && mantissa < uint64pow10[uint64digits-adjExp] { - // We can multiply the mantissa exactly. - f.mant *= uint64pow10[adjExp] - f.Normalize() - } else { - f.Normalize() - f.Multiply(smallPowersOfTen[adjExp]) - errors += errorscale / 2 - } - - // We multiply by 10 to the exp - exp%step. - f.Multiply(powersOfTen[i]) - if errors > 0 { - errors += 1 - } - errors += errorscale / 2 - - // Normalize - shift := f.Normalize() - errors <<= shift - - // Now f is a good approximation of the decimal. - // Check whether the error is too large: that is, if the mantissa - // is perturbated by the error, the resulting float64 will change. - // The 64 bits mantissa is 1 + 52 bits for float64 + 11 extra bits. - // - // In many cases the approximation will be good enough. - denormalExp := flt.bias - 63 - var extrabits uint - if f.exp <= denormalExp { - // f.mant * 2^f.exp is smaller than 2^(flt.bias+1). - extrabits = 63 - flt.mantbits + 1 + uint(denormalExp-f.exp) - } else { - extrabits = 63 - flt.mantbits - } - - halfway := uint64(1) << (extrabits - 1) - mant_extra := f.mant & (1< expMax: - i-- - default: - break Loop - } - } - // Apply the desired decimal shift on f. It will have exponent - // in the desired range. This is multiplication by 10^-exp10. - f.Multiply(powersOfTen[i]) - - return -(firstPowerOfTen + i*stepPowerOfTen), i -} - -// frexp10Many applies a common shift by a power of ten to a, b, c. -func frexp10Many(a, b, c *extFloat) (exp10 int) { - exp10, i := c.frexp10() - a.Multiply(powersOfTen[i]) - b.Multiply(powersOfTen[i]) - return -} - -// FixedDecimal stores in d the first n significant digits -// of the decimal representation of f. It returns false -// if it cannot be sure of the answer. -func (f *extFloat) FixedDecimal(d *decimalSlice, n int) bool { - if f.mant == 0 { - d.nd = 0 - d.dp = 0 - d.neg = f.neg - return true - } - if n == 0 { - panic("strconv: internal error: extFloat.FixedDecimal called with n == 0") - } - // Multiply by an appropriate power of ten to have a reasonable - // number to process. - f.Normalize() - exp10, _ := f.frexp10() - - shift := uint(-f.exp) - integer := uint32(f.mant >> shift) - fraction := f.mant - (uint64(integer) << shift) - ε := uint64(1) // ε is the uncertainty we have on the mantissa of f. - - // Write exactly n digits to d. - needed := n // how many digits are left to write. - integerDigits := 0 // the number of decimal digits of integer. - pow10 := uint64(1) // the power of ten by which f was scaled. - for i, pow := 0, uint64(1); i < 20; i++ { - if pow > uint64(integer) { - integerDigits = i - break - } - pow *= 10 - } - rest := integer - if integerDigits > needed { - // the integral part is already large, trim the last digits. - pow10 = uint64pow10[integerDigits-needed] - integer /= uint32(pow10) - rest -= integer * uint32(pow10) - } else { - rest = 0 - } - - // Write the digits of integer: the digits of rest are omitted. - var buf [32]byte - pos := len(buf) - for v := integer; v > 0; { - v1 := v / 10 - v -= 10 * v1 - pos-- - buf[pos] = byte(v + '0') - v = v1 - } - for i := pos; i < len(buf); i++ { - d.d[i-pos] = buf[i] - } - nd := len(buf) - pos - d.nd = nd - d.dp = integerDigits + exp10 - needed -= nd - - if needed > 0 { - if rest != 0 || pow10 != 1 { - panic("strconv: internal error, rest != 0 but needed > 0") - } - // Emit digits for the fractional part. Each time, 10*fraction - // fits in a uint64 without overflow. - for needed > 0 { - fraction *= 10 - ε *= 10 // the uncertainty scales as we multiply by ten. - if 2*ε > 1<> shift - d.d[nd] = byte(digit + '0') - fraction -= digit << shift - nd++ - needed-- - } - d.nd = nd - } - - // We have written a truncation of f (a numerator / 10^d.dp). The remaining part - // can be interpreted as a small number (< 1) to be added to the last digit of the - // numerator. - // - // If rest > 0, the amount is: - // (rest< 0 guarantees that pow10 << shift does not overflow a uint64. - // - // If rest = 0, pow10 == 1 and the amount is - // fraction / (1 << shift) - // fraction being known with a ±ε uncertainty. - // - // We pass this information to the rounding routine for adjustment. - - ok := adjustLastDigitFixed(d, uint64(rest)<= 0; i-- { - if d.d[i] != '0' { - d.nd = i + 1 - break - } - } - return true -} - -// adjustLastDigitFixed assumes d contains the representation of the integral part -// of some number, whose fractional part is num / (den << shift). The numerator -// num is only known up to an uncertainty of size ε, assumed to be less than -// (den << shift)/2. -// -// It will increase the last digit by one to account for correct rounding, typically -// when the fractional part is greater than 1/2, and will return false if ε is such -// that no correct answer can be given. -func adjustLastDigitFixed(d *decimalSlice, num, den uint64, shift uint, ε uint64) bool { - if num > den< den< den< (den< den<= 0; i-- { - if d.d[i] == '9' { - d.nd-- - } else { - break - } - } - if i < 0 { - d.d[0] = '1' - d.nd = 1 - d.dp++ - } else { - d.d[i]++ - } - return true - } - return false -} - -// ShortestDecimal stores in d the shortest decimal representation of f -// which belongs to the open interval (lower, upper), where f is supposed -// to lie. It returns false whenever the result is unsure. The implementation -// uses the Grisu3 algorithm. -func (f *extFloat) ShortestDecimal(d *decimalSlice, lower, upper *extFloat) bool { - if f.mant == 0 { - d.nd = 0 - d.dp = 0 - d.neg = f.neg - return true - } - if f.exp == 0 && *lower == *f && *lower == *upper { - // an exact integer. - var buf [24]byte - n := len(buf) - 1 - for v := f.mant; v > 0; { - v1 := v / 10 - v -= 10 * v1 - buf[n] = byte(v + '0') - n-- - v = v1 - } - nd := len(buf) - n - 1 - for i := 0; i < nd; i++ { - d.d[i] = buf[n+1+i] - } - d.nd, d.dp = nd, nd - for d.nd > 0 && d.d[d.nd-1] == '0' { - d.nd-- - } - if d.nd == 0 { - d.dp = 0 - } - d.neg = f.neg - return true - } - upper.Normalize() - // Uniformize exponents. - if f.exp > upper.exp { - f.mant <<= uint(f.exp - upper.exp) - f.exp = upper.exp - } - if lower.exp > upper.exp { - lower.mant <<= uint(lower.exp - upper.exp) - lower.exp = upper.exp - } - - exp10 := frexp10Many(lower, f, upper) - // Take a safety margin due to rounding in frexp10Many, but we lose precision. - upper.mant++ - lower.mant-- - - // The shortest representation of f is either rounded up or down, but - // in any case, it is a truncation of upper. - shift := uint(-upper.exp) - integer := uint32(upper.mant >> shift) - fraction := upper.mant - (uint64(integer) << shift) - - // How far we can go down from upper until the result is wrong. - allowance := upper.mant - lower.mant - // How far we should go to get a very precise result. - targetDiff := upper.mant - f.mant - - // Count integral digits: there are at most 10. - var integerDigits int - for i, pow := 0, uint64(1); i < 20; i++ { - if pow > uint64(integer) { - integerDigits = i - break - } - pow *= 10 - } - for i := 0; i < integerDigits; i++ { - pow := uint64pow10[integerDigits-i-1] - digit := integer / uint32(pow) - d.d[i] = byte(digit + '0') - integer -= digit * uint32(pow) - // evaluate whether we should stop. - if currentDiff := uint64(integer)<> shift) - d.d[d.nd] = byte(digit + '0') - d.nd++ - fraction -= uint64(digit) << shift - if fraction < allowance*multiplier { - // We are in the admissible range. Note that if allowance is about to - // overflow, that is, allowance > 2^64/10, the condition is automatically - // true due to the limited range of fraction. - return adjustLastDigit(d, - fraction, targetDiff*multiplier, allowance*multiplier, - 1< maxDiff-ulpBinary { - // we went too far - return false - } - if d.nd == 1 && d.d[0] == '0' { - // the number has actually reached zero. - d.nd = 0 - d.dp = 0 - } - return true -} diff --git a/vendor/golang.org/x/text/internal/number/format.go b/vendor/golang.org/x/text/internal/number/format.go new file mode 100755 index 0000000000..70ddf7df15 --- /dev/null +++ b/vendor/golang.org/x/text/internal/number/format.go @@ -0,0 +1,467 @@ +// Copyright 2017 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 number + +import ( + "strconv" + "unicode/utf8" + + "golang.org/x/text/language" +) + +// TODO: +// - grouping of fractions +// - allow user-defined superscript notation (such as 4) +// - same for non-breaking spaces, like   + +// Formatting proceeds along the following lines: +// 0) Compose rounding information from format and context. +// 1) Convert a number into a Decimal. +// 2) Sanitize Decimal by adding trailing zeros, removing leading digits, and +// (non-increment) rounding. The Decimal that results from this is suitable +// for determining the plural form. +// 3) Render the Decimal in the localized form. + +// Formatter contains all the information needed to render a number. +type Formatter struct { + Pattern + Info + RoundingContext +} + +func (f *Formatter) init(t language.Tag, index []uint8) { + f.Info = InfoFromTag(t) + for ; ; t = t.Parent() { + if ci, ok := language.CompactIndex(t); ok { + f.Pattern = formats[index[ci]] + break + } + } +} + +// InitPattern initializes a Formatter for the given Pattern. +func (f *Formatter) InitPattern(t language.Tag, pat *Pattern) { + f.Info = InfoFromTag(t) + f.Pattern = *pat +} + +// InitDecimal initializes a Formatter using the default Pattern for the given +// language. +func (f *Formatter) InitDecimal(t language.Tag) { + f.init(t, tagToDecimal) +} + +// InitScientific initializes a Formatter using the default Pattern for the +// given language. +func (f *Formatter) InitScientific(t language.Tag) { + f.init(t, tagToScientific) +} + +// InitEngineering initializes a Formatter using the default Pattern for the +// given language. +func (f *Formatter) InitEngineering(t language.Tag) { + f.init(t, tagToScientific) + f.Pattern.MaxIntegerDigits = 3 + f.Pattern.MinIntegerDigits = 1 +} + +// InitPercent initializes a Formatter using the default Pattern for the given +// language. +func (f *Formatter) InitPercent(t language.Tag) { + f.init(t, tagToPercent) +} + +// InitPerMille initializes a Formatter using the default Pattern for the given +// language. +func (f *Formatter) InitPerMille(t language.Tag) { + f.init(t, tagToPercent) + f.Pattern.DigitShift = 3 +} + +func (f *Formatter) Append(dst []byte, x interface{}) []byte { + var d Decimal + d.Convert(&f.RoundingContext, x) + return f.Format(dst, &d) +} + +func (f *Formatter) Format(dst []byte, d *Decimal) []byte { + var result []byte + var postPrefix, preSuffix int + if f.MinExponentDigits > 0 { + result, postPrefix, preSuffix = appendScientific(dst, f, d) + } else { + result, postPrefix, preSuffix = appendDecimal(dst, f, d) + } + if f.PadRune == 0 { + return result + } + width := int(f.FormatWidth) + if count := utf8.RuneCount(result); count < width { + insertPos := 0 + switch f.Flags & PadMask { + case PadAfterPrefix: + insertPos = postPrefix + case PadBeforeSuffix: + insertPos = preSuffix + case PadAfterSuffix: + insertPos = len(result) + } + num := width - count + pad := [utf8.UTFMax]byte{' '} + sz := 1 + if r := f.PadRune; r != 0 { + sz = utf8.EncodeRune(pad[:], r) + } + extra := sz * num + if n := len(result) + extra; n < cap(result) { + result = result[:n] + copy(result[insertPos+extra:], result[insertPos:]) + } else { + buf := make([]byte, n) + copy(buf, result[:insertPos]) + copy(buf[insertPos+extra:], result[insertPos:]) + result = buf + } + for ; num > 0; num-- { + insertPos += copy(result[insertPos:], pad[:sz]) + } + } + return result +} + +// appendDecimal appends a formatted number to dst. It returns two possible +// insertion points for padding. +func appendDecimal(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, preSuf int) { + if dst, ok := f.renderSpecial(dst, d); ok { + return dst, 0, len(dst) + } + n := d.normalize() + if maxSig := int(f.MaxSignificantDigits); maxSig > 0 { + n.round(ToZero, maxSig) + } + digits := n.Digits + exp := n.Exp + exp += int32(f.Pattern.DigitShift) + + // Split in integer and fraction part. + var intDigits, fracDigits []byte + var numInt, numFrac int + if exp > 0 { + numInt = int(exp) + if int(exp) >= len(digits) { // ddddd | ddddd00 + intDigits = digits + } else { // ddd.dd + intDigits = digits[:exp] + fracDigits = digits[exp:] + numFrac = len(fracDigits) + } + } else { + fracDigits = digits + numFrac = -int(exp) + len(digits) + } + // Cap integer digits. Remove *most-significant* digits. + if f.MaxIntegerDigits > 0 && numInt > int(f.MaxIntegerDigits) { + offset := numInt - int(f.MaxIntegerDigits) + if offset > len(intDigits) { + numInt = 0 + intDigits = nil + } else { + numInt = int(f.MaxIntegerDigits) + intDigits = intDigits[offset:] + // for keeping track of significant digits + digits = digits[offset:] + } + // Strip leading zeros. Resulting number of digits is significant digits. + for len(intDigits) > 0 && intDigits[0] == 0 { + intDigits = intDigits[1:] + digits = digits[1:] + numInt-- + } + } + if f.MaxSignificantDigits == 0 && int(f.MaxFractionDigits) < numFrac { + if extra := numFrac - int(f.MaxFractionDigits); extra > len(fracDigits) { + numFrac = 0 + fracDigits = nil + } else { + numFrac = int(f.MaxFractionDigits) + fracDigits = fracDigits[:len(fracDigits)-extra] + } + } + + neg := d.Neg + affix, suffix := f.getAffixes(neg) + dst = appendAffix(dst, f, affix, neg) + savedLen := len(dst) + + minInt := int(f.MinIntegerDigits) + if minInt == 0 && f.MinSignificantDigits > 0 { + minInt = 1 + } + // add leading zeros + for i := minInt; i > numInt; i-- { + dst = f.AppendDigit(dst, 0) + if f.needsSep(i) { + dst = append(dst, f.Symbol(SymGroup)...) + } + } + i := 0 + for ; i < len(intDigits); i++ { + dst = f.AppendDigit(dst, intDigits[i]) + if f.needsSep(numInt - i) { + dst = append(dst, f.Symbol(SymGroup)...) + } + } + for ; i < numInt; i++ { + dst = f.AppendDigit(dst, 0) + if f.needsSep(numInt - i) { + dst = append(dst, f.Symbol(SymGroup)...) + } + } + + trailZero := int(f.MinFractionDigits) - numFrac + if d := int(f.MinSignificantDigits) - len(digits); d > 0 && d > trailZero { + trailZero = d + } + if numFrac > 0 || trailZero > 0 || f.Flags&AlwaysDecimalSeparator != 0 { + dst = append(dst, f.Symbol(SymDecimal)...) + } + // Add leading zeros + for i := numFrac - len(fracDigits); i > 0; i-- { + dst = f.AppendDigit(dst, 0) + } + i = 0 + for ; i < len(fracDigits); i++ { + dst = f.AppendDigit(dst, fracDigits[i]) + } + for ; trailZero > 0; trailZero-- { + dst = f.AppendDigit(dst, 0) + } + return appendAffix(dst, f, suffix, neg), savedLen, len(dst) +} + +// appendScientific appends a formatted number to dst. It returns two possible +// insertion points for padding. +func appendScientific(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, preSuf int) { + if dst, ok := f.renderSpecial(dst, d); ok { + return dst, 0, 0 + } + // Significant digits are transformed by parser for scientific notation and + // do not need to be handled here. + maxInt, numInt := int(f.MaxIntegerDigits), int(f.MinIntegerDigits) + if numInt == 0 { + numInt = 1 + } + maxSig := int(f.MaxFractionDigits) + numInt + minSig := int(f.MinFractionDigits) + numInt + n := d.normalize() + if maxSig > 0 { + n.round(ToZero, maxSig) + } + digits := n.Digits + exp := n.Exp + + // If a maximum number of integers is specified, the minimum must be 1 + // and the exponent is grouped by this number (e.g. for engineering) + if len(digits) == 0 { + exp = 0 + } else if maxInt > numInt { + // Correct the exponent to reflect a single integer digit. + exp-- + numInt = 1 + // engineering + // 0.01234 ([12345]e-1) -> 1.2345e-2 12.345e-3 + // 12345 ([12345]e+5) -> 1.2345e4 12.345e3 + d := int(exp) % maxInt + if d < 0 { + d += maxInt + } + exp -= int32(d) + numInt += d + } else { + exp -= int32(numInt) + } + var intDigits, fracDigits []byte + if numInt <= len(digits) { + intDigits = digits[:numInt] + fracDigits = digits[numInt:] + } else { + intDigits = digits + } + neg := d.Neg + affix, suffix := f.getAffixes(neg) + dst = appendAffix(dst, f, affix, neg) + savedLen := len(dst) + + i := 0 + for ; i < len(intDigits); i++ { + dst = f.AppendDigit(dst, intDigits[i]) + if f.needsSep(numInt - i) { + dst = append(dst, f.Symbol(SymGroup)...) + } + } + for ; i < numInt; i++ { + dst = f.AppendDigit(dst, 0) + if f.needsSep(numInt - i) { + dst = append(dst, f.Symbol(SymGroup)...) + } + } + + trailZero := minSig - numInt - len(fracDigits) + if len(fracDigits) > 0 || trailZero > 0 || f.Flags&AlwaysDecimalSeparator != 0 { + dst = append(dst, f.Symbol(SymDecimal)...) + } + i = 0 + for ; i < len(fracDigits); i++ { + dst = f.AppendDigit(dst, fracDigits[i]) + } + for ; trailZero > 0; trailZero-- { + dst = f.AppendDigit(dst, 0) + } + + // exp + buf := [12]byte{} + // TODO: use exponential if superscripting is not available (no Latin + // numbers or no tags) and use exponential in all other cases. + exponential := f.Symbol(SymExponential) + if exponential == "E" { + dst = append(dst, "\u202f"...) // NARROW NO-BREAK SPACE + dst = append(dst, f.Symbol(SymSuperscriptingExponent)...) + dst = append(dst, "\u202f"...) // NARROW NO-BREAK SPACE + dst = f.AppendDigit(dst, 1) + dst = f.AppendDigit(dst, 0) + switch { + case exp < 0: + dst = append(dst, superMinus...) + exp = -exp + case f.Flags&AlwaysExpSign != 0: + dst = append(dst, superPlus...) + } + b = strconv.AppendUint(buf[:0], uint64(exp), 10) + for i := len(b); i < int(f.MinExponentDigits); i++ { + dst = append(dst, superDigits[0]...) + } + for _, c := range b { + dst = append(dst, superDigits[c-'0']...) + } + } else { + dst = append(dst, exponential...) + switch { + case exp < 0: + dst = append(dst, f.Symbol(SymMinusSign)...) + exp = -exp + case f.Flags&AlwaysExpSign != 0: + dst = append(dst, f.Symbol(SymPlusSign)...) + } + b = strconv.AppendUint(buf[:0], uint64(exp), 10) + for i := len(b); i < int(f.MinExponentDigits); i++ { + dst = f.AppendDigit(dst, 0) + } + for _, c := range b { + dst = f.AppendDigit(dst, c-'0') + } + } + return appendAffix(dst, f, suffix, neg), savedLen, len(dst) +} + +const ( + superMinus = "\u207B" // SUPERSCRIPT HYPHEN-MINUS + superPlus = "\u207A" // SUPERSCRIPT PLUS SIGN +) + +var ( + // Note: the digits are not sequential!!! + superDigits = []string{ + "\u2070", // SUPERSCRIPT DIGIT ZERO + "\u00B9", // SUPERSCRIPT DIGIT ONE + "\u00B2", // SUPERSCRIPT DIGIT TWO + "\u00B3", // SUPERSCRIPT DIGIT THREE + "\u2074", // SUPERSCRIPT DIGIT FOUR + "\u2075", // SUPERSCRIPT DIGIT FIVE + "\u2076", // SUPERSCRIPT DIGIT SIX + "\u2077", // SUPERSCRIPT DIGIT SEVEN + "\u2078", // SUPERSCRIPT DIGIT EIGHT + "\u2079", // SUPERSCRIPT DIGIT NINE + } +) + +func (f *Formatter) getAffixes(neg bool) (affix, suffix string) { + str := f.Affix + if str != "" { + if f.NegOffset > 0 { + if neg { + str = str[f.NegOffset:] + } else { + str = str[:f.NegOffset] + } + } + sufStart := 1 + str[0] + affix = str[1:sufStart] + suffix = str[sufStart+1:] + } + // TODO: introduce a NeedNeg sign to indicate if the left pattern already + // has a sign marked? + if f.NegOffset == 0 && (neg || f.Flags&AlwaysSign != 0) { + affix = "-" + affix + } + return affix, suffix +} + +func (f *Formatter) renderSpecial(dst []byte, d *Decimal) (b []byte, ok bool) { + if d.NaN { + return fmtNaN(dst, f), true + } + if d.Inf { + return fmtInfinite(dst, f, d), true + } + return dst, false +} + +func fmtNaN(dst []byte, f *Formatter) []byte { + return append(dst, f.Symbol(SymNan)...) +} + +func fmtInfinite(dst []byte, f *Formatter, d *Decimal) []byte { + affix, suffix := f.getAffixes(d.Neg) + dst = appendAffix(dst, f, affix, d.Neg) + dst = append(dst, f.Symbol(SymInfinity)...) + dst = appendAffix(dst, f, suffix, d.Neg) + return dst +} + +func appendAffix(dst []byte, f *Formatter, affix string, neg bool) []byte { + quoting := false + escaping := false + for _, r := range affix { + switch { + case escaping: + // escaping occurs both inside and outside of quotes + dst = append(dst, string(r)...) + escaping = false + case r == '\\': + escaping = true + case r == '\'': + quoting = !quoting + case quoting: + dst = append(dst, string(r)...) + case r == '%': + if f.DigitShift == 3 { + dst = append(dst, f.Symbol(SymPerMille)...) + } else { + dst = append(dst, f.Symbol(SymPercentSign)...) + } + case r == '-' || r == '+': + if neg { + dst = append(dst, f.Symbol(SymMinusSign)...) + } else if f.Flags&ElideSign == 0 { + dst = append(dst, f.Symbol(SymPlusSign)...) + } else { + dst = append(dst, ' ') + } + default: + dst = append(dst, string(r)...) + } + } + return dst +} diff --git a/vendor/golang.org/x/text/internal/number/format_test.go b/vendor/golang.org/x/text/internal/number/format_test.go new file mode 100755 index 0000000000..4c47bc568c --- /dev/null +++ b/vendor/golang.org/x/text/internal/number/format_test.go @@ -0,0 +1,508 @@ +// Copyright 2017 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 number + +import ( + "fmt" + "log" + "testing" + + "golang.org/x/text/language" +) + +func TestAppendDecimal(t *testing.T) { + type pairs map[string]string // alternates with decimal input and result + + testCases := []struct { + pattern string + // We want to be able to test some forms of patterns that cannot be + // represented as a string. + pat *Pattern + + test pairs + }{{ + pattern: "0", + test: pairs{ + "0": "0", + "1": "1", + "-1": "-1", + ".00": "0", + "10.": "10", + "12": "12", + "1.2": "1", + "NaN": "NaN", + "-Inf": "-∞", + }, + }, { + pattern: "+0;+0", + test: pairs{ + "0": "+0", + "1": "+1", + "-1": "-1", + ".00": "+0", + "10.": "+10", + "12": "+12", + "1.2": "+1", + "NaN": "NaN", + "-Inf": "-∞", + "Inf": "+∞", + }, + }, { + pattern: "0 +;0 +", + test: pairs{ + "0": "0 +", + "1": "1 +", + "-1": "1 -", + ".00": "0 +", + }, + }, { + pattern: "0;0-", + test: pairs{ + "-1": "1-", + "NaN": "NaN", + "-Inf": "∞-", + "Inf": "∞", + }, + }, { + pattern: "0000", + test: pairs{ + "0": "0000", + "1": "0001", + "12": "0012", + "12345": "12345", + }, + }, { + pattern: ".0", + test: pairs{ + "0": ".0", + "1": "1.0", + "1.2": "1.2", + "1.2345": "1.2", + }, + }, { + pattern: "#.0", + test: pairs{ + "0": ".0", + }, + }, { + pattern: "#.0#", + test: pairs{ + "0": ".0", + "1": "1.0", + }, + }, { + pattern: "0.0#", + test: pairs{ + "0": "0.0", + }, + }, { + pattern: "#0.###", + test: pairs{ + "0": "0", + "1": "1", + "1.2": "1.2", + "1.2345": "1.234", // rounding should have been done earlier + "1234.5": "1234.5", + "1234.567": "1234.567", + }, + }, { + pattern: "#0.######", + test: pairs{ + "0": "0", + "1234.5678": "1234.5678", + "0.123456789": "0.123456", + "NaN": "NaN", + "Inf": "∞", + }, + + // Test separators. + }, { + pattern: "#,#.00", + test: pairs{ + "100": "1,0,0.00", + }, + }, { + pattern: "#,0.##", + test: pairs{ + "10": "1,0", + }, + }, { + pattern: "#,0", + test: pairs{ + "10": "1,0", + }, + }, { + pattern: "#,##,#.00", + test: pairs{ + "1000": "1,00,0.00", + }, + }, { + pattern: "#,##0.###", + test: pairs{ + "0": "0", + "1234.5678": "1,234.567", + "0.123456789": "0.123", + }, + }, { + pattern: "#,##,##0.###", + test: pairs{ + "0": "0", + "123456789012": "1,23,45,67,89,012", + "0.123456789": "0.123", + }, + }, { + pattern: "0,00,000.###", + test: pairs{ + "0": "0,00,000", + "123456789012": "1,23,45,67,89,012", + "12.3456789": "0,00,012.345", + "0.123456789": "0,00,000.123", + }, + + // Support for ill-formed patterns. + }, { + pattern: "#", + test: pairs{ + ".00": "", // This is the behavior of fmt. + "0": "", // This is the behavior of fmt. + "1": "1", + "10.": "10", + }, + }, { + pattern: ".#", + test: pairs{ + "0": "", // This is the behavior of fmt. + "1": "1", + "1.2": "1.2", + "1.2345": "1.2", + }, + }, { + pattern: "#,#.##", + test: pairs{ + "10": "1,0", + }, + }, { + pattern: "#,#", + test: pairs{ + "10": "1,0", + }, + + // Special patterns + }, { + pattern: "#,max_int=2", + pat: &Pattern{ + MaxIntegerDigits: 2, + }, + test: pairs{ + "2017": "17", + }, + }, { + pattern: "0,max_int=2", + pat: &Pattern{ + MaxIntegerDigits: 2, + MinIntegerDigits: 1, + }, + test: pairs{ + "2000": "0", + "2001": "1", + "2017": "17", + }, + }, { + pattern: "00,max_int=2", + pat: &Pattern{ + MaxIntegerDigits: 2, + MinIntegerDigits: 2, + }, + test: pairs{ + "2000": "00", + "2001": "01", + "2017": "17", + }, + }, { + pattern: "@@@@,max_int=2", + pat: &Pattern{ + MaxIntegerDigits: 2, + MinSignificantDigits: 4, + }, + test: pairs{ + "2017": "17.00", + "2000": "0.000", + "2001": "1.000", + }, + + // Significant digits + }, { + pattern: "@@##", + test: pairs{ + "1": "1.0", + "0.1": "0.10", + "123": "123", + "1234": "1234", + "12345": "12340", + }, + }, { + pattern: "@@@@", + test: pairs{ + "1": "1.000", + ".1": "0.1000", + ".001": "0.001000", + "123": "123.0", + "1234": "1234", + "12345": "12340", // rounding down + "NaN": "NaN", + "-Inf": "-∞", + }, + + // TODO: rounding + // {"@@@@": "23456": "23460"}, // rounding up + // TODO: padding + + // Scientific and Engineering notation + }, { + pattern: "#E0", + test: pairs{ + "0": "0\u202f×\u202f10⁰", + "1": "1\u202f×\u202f10⁰", + "123.456": "1\u202f×\u202f10²", + }, + }, { + pattern: "#E+0", + test: pairs{ + "0": "0\u202f×\u202f10⁺⁰", + "1000": "1\u202f×\u202f10⁺³", + "1E100": "1\u202f×\u202f10⁺¹⁰⁰", + "1E-100": "1\u202f×\u202f10⁻¹⁰⁰", + "NaN": "NaN", + "-Inf": "-∞", + }, + }, { + pattern: "##0E00", + test: pairs{ + "100": "100\u202f×\u202f10⁰⁰", + "12345": "10\u202f×\u202f10⁰³", + "123.456": "100\u202f×\u202f10⁰⁰", + }, + }, { + pattern: "##0.###E00", + test: pairs{ + "100": "100\u202f×\u202f10⁰⁰", + "12345": "12.34\u202f×\u202f10⁰³", + "123.456": "123.4\u202f×\u202f10⁰⁰", + }, + }, { + pattern: "##0.000E00", + test: pairs{ + "100": "100.0\u202f×\u202f10⁰⁰", + "12345": "12.34\u202f×\u202f10⁰³", + "123.456": "123.4\u202f×\u202f10⁰⁰", + }, + }, { + pattern: "@@E0", + test: pairs{ + "0": "0.0\u202f×\u202f10⁰", + "99": "9.9\u202f×\u202f10¹", + "0.99": "9.9\u202f×\u202f10⁻¹", + }, + }, { + pattern: "@###E00", + test: pairs{ + "0": "0\u202f×\u202f10⁰⁰", + "1": "1\u202f×\u202f10⁰⁰", + "11": "1.1\u202f×\u202f10⁰¹", + "111": "1.11\u202f×\u202f10⁰²", + "1111": "1.111\u202f×\u202f10⁰³", + "11111": "1.111\u202f×\u202f10⁰⁴", + "0.1": "1\u202f×\u202f10⁻⁰¹", + "0.11": "1.1\u202f×\u202f10⁻⁰¹", + "0.001": "1\u202f×\u202f10⁻⁰³", + }, + }, { + pattern: "*x##0", + test: pairs{ + "0": "xx0", + "10": "x10", + "100": "100", + "1000": "1000", + }, + }, { + pattern: "##0*x", + test: pairs{ + "0": "0xx", + "10": "10x", + "100": "100", + "1000": "1000", + }, + }, { + pattern: "* ###0.000", + test: pairs{ + "0": " 0.000", + "123": " 123.000", + "123.456": " 123.456", + "1234.567": "1234.567", + }, + }, { + pattern: "**0.0#######E00", + test: pairs{ + "0": "***0.0\u202f×\u202f10⁰⁰", + "10": "***1.0\u202f×\u202f10⁰¹", + "11": "***1.1\u202f×\u202f10⁰¹", + "111": "**1.11\u202f×\u202f10⁰²", + "1111": "*1.111\u202f×\u202f10⁰³", + "11111": "1.1111\u202f×\u202f10⁰⁴", + "11110": "*1.111\u202f×\u202f10⁰⁴", + "11100": "**1.11\u202f×\u202f10⁰⁴", + "11000": "***1.1\u202f×\u202f10⁰⁴", + "10000": "***1.0\u202f×\u202f10⁰⁴", + }, + }, { + pattern: "*xpre0suf", + test: pairs{ + "0": "pre0suf", + "10": "pre10suf", + }, + }, { + pattern: "*∞ pre ###0 suf", + test: pairs{ + "0": "∞∞∞ pre 0 suf", + "10": "∞∞ pre 10 suf", + "100": "∞ pre 100 suf", + "1000": " pre 1000 suf", + }, + }, { + pattern: "pre *∞###0 suf", + test: pairs{ + "0": "pre ∞∞∞0 suf", + "10": "pre ∞∞10 suf", + "100": "pre ∞100 suf", + "1000": "pre 1000 suf", + }, + }, { + pattern: "pre ###0*∞ suf", + test: pairs{ + "0": "pre 0∞∞∞ suf", + "10": "pre 10∞∞ suf", + "100": "pre 100∞ suf", + "1000": "pre 1000 suf", + }, + }, { + pattern: "pre ###0 suf *∞", + test: pairs{ + "0": "pre 0 suf ∞∞∞", + "10": "pre 10 suf ∞∞", + "100": "pre 100 suf ∞", + "1000": "pre 1000 suf ", + }, + }, { + // Take width of positive pattern. + pattern: "**###0;**-#####0x", + test: pairs{ + "0": "***0", + "-1": "*-1x", + }, + }, { + pattern: "0.00%", + test: pairs{ + "0.1": "10.00%", + }, + }, { + pattern: "0.##%", + test: pairs{ + "0.1": "10%", + "0.11": "11%", + "0.111": "11.1%", + "0.1111": "11.11%", + "0.11111": "11.11%", + }, + }, { + pattern: "‰ 0.0#", + test: pairs{ + "0.1": "‰ 100.0", + "0.11": "‰ 110.0", + "0.111": "‰ 111.0", + "0.1111": "‰ 111.1", + "0.11111": "‰ 111.11", + "0.111111": "‰ 111.11", + }, + }} + + // TODO: + // "#,##0.00¤", + // "#,##0.00 ¤;(#,##0.00 ¤)", + + for _, tc := range testCases { + pat := tc.pat + if pat == nil { + var err error + if pat, err = ParsePattern(tc.pattern); err != nil { + log.Fatal(err) + } + } + var f Formatter + f.InitPattern(language.English, pat) + for dec, want := range tc.test { + buf := make([]byte, 100) + t.Run(tc.pattern+"/"+dec, func(t *testing.T) { + dec := mkdec(dec) + buf = f.Format(buf[:0], &dec) + if got := string(buf); got != want { + t.Errorf("\n got %[1]q (%[1]s)\nwant %[2]q (%[2]s)", got, want) + } + }) + } + } +} + +func TestLocales(t *testing.T) { + testCases := []struct { + tag language.Tag + num string + want string + }{ + {language.Make("en"), "123456.78", "123,456.78"}, + {language.Make("de"), "123456.78", "123.456,78"}, + {language.Make("de-CH"), "123456.78", "123’456.78"}, + {language.Make("fr"), "123456.78", "123 456,78"}, + {language.Make("bn"), "123456.78", "১,২৩,৪৫৬.৭৮"}, + } + for _, tc := range testCases { + t.Run(fmt.Sprint(tc.tag, "/", tc.num), func(t *testing.T) { + var f Formatter + f.InitDecimal(tc.tag) + d := mkdec(tc.num) + b := f.Format(nil, &d) + if got := string(b); got != tc.want { + t.Errorf("got %[1]q (%[1]s); want %[2]q (%[2]s)", got, tc.want) + } + }) + } +} + +func TestFormatters(t *testing.T) { + var f Formatter + testCases := []struct { + init func(t language.Tag) + num string + want string + }{ + {f.InitDecimal, "123456.78", "123,456.78"}, + {f.InitScientific, "123456.78", "1.23\u202f×\u202f10⁵"}, + {f.InitEngineering, "123456.78", "123\u202f×\u202f10³"}, + + {f.InitPercent, "0.1234", "12.34%"}, + {f.InitPerMille, "0.1234", "123.40‰"}, + } + for i, tc := range testCases { + t.Run(fmt.Sprint(i, "/", tc.num), func(t *testing.T) { + tc.init(language.English) + f.Pattern.MinFractionDigits = 2 + f.Pattern.MaxFractionDigits = 2 + d := mkdec(tc.num) + b := f.Format(nil, &d) + if got := string(b); got != tc.want { + t.Errorf("got %[1]q (%[1]s); want %[2]q (%[2]s)", got, tc.want) + } + }) + } +} diff --git a/vendor/golang.org/x/text/internal/number/ftoa.go b/vendor/golang.org/x/text/internal/number/ftoa.go deleted file mode 100644 index 073182ece4..0000000000 --- a/vendor/golang.org/x/text/internal/number/ftoa.go +++ /dev/null @@ -1,448 +0,0 @@ -// 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. - -// TODO: use build tags once a low-level public API has been established in -// package strconv. - -// Binary to decimal floating point conversion. -// Algorithm: -// 1) store mantissa in multiprecision decimal -// 2) shift decimal by exponent -// 3) read digits out & format - -package number - -import "math" - -var optimize = true - -// TODO: move elsewhere? -type floatInfo struct { - mantbits uint - expbits uint - bias int -} - -var float32info = floatInfo{23, 8, -127} -var float64info = floatInfo{52, 11, -1023} - -// genericFtoa converts the floating-point number f to a string, -// according to the format fmt and precision prec. It rounds the -// result assuming that the original was obtained from a floating-point -// value of bitSize bits (32 for float32, 64 for float64). -// -// The format fmt is one of -// 'b' (-ddddp±ddd, a binary exponent), -// 'e' (-d.dddde±dd, a decimal exponent), -// 'E' (-d.ddddE±dd, a decimal exponent), -// 'f' (-ddd.dddd, no exponent), -// 'g' ('e' for large exponents, 'f' otherwise), or -// 'G' ('E' for large exponents, 'f' otherwise). -// -// The precision prec controls the number of digits -// (excluding the exponent) printed by the 'e', 'E', 'f', 'g', and 'G' formats. -// For 'e', 'E', and 'f' it is the number of digits after the decimal point. -// For 'g' and 'G' it is the total number of digits. -// The special precision -1 uses the smallest number of digits -// necessary such that ParseFloat will return f exactly. -func genericFtoa(dst []byte, val float64, fmt byte, prec, bitSize int) []byte { - var bits uint64 - var flt *floatInfo - switch bitSize { - case 32: - bits = uint64(math.Float32bits(float32(val))) - flt = &float32info - case 64: - bits = math.Float64bits(val) - flt = &float64info - default: - panic("strconv: illegal AppendFloat/FormatFloat bitSize") - } - - neg := bits>>(flt.expbits+flt.mantbits) != 0 - exp := int(bits>>flt.mantbits) & (1< digs.nd && digs.nd >= digs.dp { - eprec = digs.nd - } - // %e is used if the exponent from the conversion - // is less than -4 or greater than or equal to the precision. - // if precision was the shortest possible, use precision 6 for this decision. - if shortest { - eprec = 6 - } - exp := digs.dp - 1 - if exp < -4 || exp >= eprec { - if prec > digs.nd { - prec = digs.nd - } - return fmtE(dst, neg, digs, prec-1, fmt+'e'-'g') - } - if prec > digs.dp { - prec = digs.nd - } - return fmtF(dst, neg, digs, max(prec-digs.dp, 0)) - } - - // unknown format - return append(dst, '%', fmt) -} - -// roundShortest rounds d (= mant * 2^exp) to the shortest number of digits -// that will let the original floating point value be precisely reconstructed. -func roundShortest(d *decimal, mant uint64, exp int, flt *floatInfo) { - // If mantissa is zero, the number is zero; stop now. - if mant == 0 { - d.nd = 0 - return - } - - // Compute upper and lower such that any decimal number - // between upper and lower (possibly inclusive) - // will round to the original floating point number. - - // We may see at once that the number is already shortest. - // - // Suppose d is not denormal, so that 2^exp <= d < 10^dp. - // The closest shorter number is at least 10^(dp-nd) away. - // The lower/upper bounds computed below are at distance - // at most 2^(exp-mantbits). - // - // So the number is already shortest if 10^(dp-nd) > 2^(exp-mantbits), - // or equivalently log2(10)*(dp-nd) > exp-mantbits. - // It is true if 332/100*(dp-nd) >= exp-mantbits (log2(10) > 3.32). - minexp := flt.bias + 1 // minimum possible exponent - if exp > minexp && 332*(d.dp-d.nd) >= 100*(exp-int(flt.mantbits)) { - // The number is already shortest. - return - } - - // d = mant << (exp - mantbits) - // Next highest floating point number is mant+1 << exp-mantbits. - // Our upper bound is halfway between, mant*2+1 << exp-mantbits-1. - upper := new(decimal) - upper.Assign(mant*2 + 1) - upper.Shift(exp - int(flt.mantbits) - 1) - - // d = mant << (exp - mantbits) - // Next lowest floating point number is mant-1 << exp-mantbits, - // unless mant-1 drops the significant bit and exp is not the minimum exp, - // in which case the next lowest is mant*2-1 << exp-mantbits-1. - // Either way, call it mantlo << explo-mantbits. - // Our lower bound is halfway between, mantlo*2+1 << explo-mantbits-1. - var mantlo uint64 - var explo int - if mant > 1< 0 { - dst = append(dst, '.') - i := 1 - m := min(d.nd, prec+1) - if i < m { - dst = append(dst, d.d[i:m]...) - i = m - } - for ; i <= prec; i++ { - dst = append(dst, '0') - } - } - - // e± - dst = append(dst, fmt) - exp := d.dp - 1 - if d.nd == 0 { // special case: 0 has exponent 0 - exp = 0 - } - if exp < 0 { - ch = '-' - exp = -exp - } else { - ch = '+' - } - dst = append(dst, ch) - - // dd or ddd - switch { - case exp < 10: - dst = append(dst, '0', byte(exp)+'0') - case exp < 100: - dst = append(dst, byte(exp/10)+'0', byte(exp%10)+'0') - default: - dst = append(dst, byte(exp/100)+'0', byte(exp/10)%10+'0', byte(exp%10)+'0') - } - - return dst -} - -// %f: -ddddddd.ddddd -func fmtF(dst []byte, neg bool, d decimalSlice, prec int) []byte { - // sign - if neg { - dst = append(dst, '-') - } - - // integer, padded with zeros as needed. - if d.dp > 0 { - m := min(d.nd, d.dp) - dst = append(dst, d.d[:m]...) - for ; m < d.dp; m++ { - dst = append(dst, '0') - } - } else { - dst = append(dst, '0') - } - - // fraction - if prec > 0 { - dst = append(dst, '.') - for i := 0; i < prec; i++ { - ch := byte('0') - if j := d.dp + i; 0 <= j && j < d.nd { - ch = d.d[j] - } - dst = append(dst, ch) - } - } - - return dst -} - -// %b: -ddddddddp±ddd -func fmtB(dst []byte, neg bool, mant uint64, exp int, flt *floatInfo) []byte { - // sign - if neg { - dst = append(dst, '-') - } - - // mantissa - dst, _ = formatBits(dst, mant, 10, false, true) - - // p - dst = append(dst, 'p') - - // ±exponent - exp -= int(flt.mantbits) - if exp >= 0 { - dst = append(dst, '+') - } - dst, _ = formatBits(dst, uint64(exp), 10, exp < 0, true) - - return dst -} - -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 -} diff --git a/vendor/golang.org/x/text/internal/number/gen.go b/vendor/golang.org/x/text/internal/number/gen.go index 59a982bb0b..598c96c6f9 100644 --- a/vendor/golang.org/x/text/internal/number/gen.go +++ b/vendor/golang.org/x/text/internal/number/gen.go @@ -45,7 +45,7 @@ func main() { d := &cldr.Decoder{} d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("numbers", "numberingSystem", "plurals") + d.SetSectionFilter("numbers", "numberingSystem") data, err := d.DecodeZip(r) if err != nil { log.Fatalf("DecodeZip: %v", err) @@ -60,15 +60,7 @@ func main() { genNumSystem(w, data) genSymbols(w, data) - genPlurals(w, data) genFormats(w, data) - - w = gen.NewCodeWriter() - defer w.WriteGoFile(*outputTestFile, pkg) - - fmt.Fprintln(w, `import "golang.org/x/text/internal/format/plural"`) - - genPluralsTests(w, data) } var systemMap = map[string]system{"latn": 0} @@ -364,7 +356,7 @@ func genFormats(w *gen.CodeWriter, data *cldr.CLDR) { } // Fill the first slot with a dummy so we can identify unspecified tags. - formats := []number.Format{{}} + formats := []number.Pattern{{}} patterns := map[string]int{} // TODO: It would be possible to eliminate two of these slices by having diff --git a/vendor/golang.org/x/text/internal/number/gen_common.go b/vendor/golang.org/x/text/internal/number/gen_common.go index b0c71c5eb4..c4b791ce90 100644 --- a/vendor/golang.org/x/text/internal/number/gen_common.go +++ b/vendor/golang.org/x/text/internal/number/gen_common.go @@ -6,11 +6,7 @@ package main -import ( - "unicode/utf8" - - "golang.org/x/text/internal/format/plural" -) +import "unicode/utf8" // A system identifies a CLDR numbering system. type system byte @@ -46,51 +42,3 @@ type altSymData struct { system system symIndex byte } - -var countMap = map[string]plural.Form{ - "other": plural.Other, - "zero": plural.Zero, - "one": plural.One, - "two": plural.Two, - "few": plural.Few, - "many": plural.Many, -} - -type pluralCheck struct { - // category: - // 3..7: opID - // 0..2: category - cat byte - setID byte -} - -// opID identifies the type of operand in the plural rule, being i, n or f. -// (v, w, and t are treated as filters in our implementation.) -type opID byte - -const ( - opMod opID = 0x1 // is '%' used? - opNotEqual opID = 0x2 // using "!=" to compare - opI opID = 0 << 2 // integers after taking the absolute value - opN opID = 1 << 2 // full number (must be integer) - opF opID = 2 << 2 // fraction - opV opID = 3 << 2 // number of visible digits - opW opID = 4 << 2 // number of visible digits without trailing zeros - opBretonM opID = 5 << 2 // hard-wired rule for Breton - opItalian800 opID = 6 << 2 // hard-wired rule for Italian - opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan -) -const ( - // Use this plural form to indicate the next rule needs to match as well. - // The last condition in the list will have the correct plural form. - andNext = 0x7 - formMask = 0x7 - - opShift = 3 - - // numN indicates the maximum integer, or maximum mod value, for which we - // have inclusion masks. - numN = 100 - // The common denominator of the modulo that is taken. - maxMod = 100 -) diff --git a/vendor/golang.org/x/text/internal/number/gen_plural.go b/vendor/golang.org/x/text/internal/number/gen_plural.go deleted file mode 100644 index 05a6722493..0000000000 --- a/vendor/golang.org/x/text/internal/number/gen_plural.go +++ /dev/null @@ -1,471 +0,0 @@ -// 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 ignore - -package main - -// This file generates data for the CLDR plural rules, as defined in -// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules -// -// We assume a slightly simplified grammar: -// -// condition = and_condition ('or' and_condition)* samples -// and_condition = relation ('and' relation)* -// relation = expr ('=' | '!=') range_list -// expr = operand ('%' '10' '0'* )? -// operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w' -// range_list = (range | value) (',' range_list)* -// range = value'..'value -// value = digit+ -// digit = 0|1|2|3|4|5|6|7|8|9 -// -// samples = ('@integer' sampleList)? -// ('@decimal' sampleList)? -// sampleList = sampleRange (',' sampleRange)* (',' ('…'|'...'))? -// sampleRange = decimalValue ('~' decimalValue)? -// decimalValue = value ('.' value)? -// -// Symbol Value -// n absolute value of the source number (integer and decimals). -// i integer digits of n. -// v number of visible fraction digits in n, with trailing zeros. -// w number of visible fraction digits in n, without trailing zeros. -// f visible fractional digits in n, with trailing zeros. -// t visible fractional digits in n, without trailing zeros. -// -// The algorithm for which the data is generated is based on the following -// observations -// -// - the number of different sets of numbers which the plural rules use to -// test inclusion is limited, -// - most numbers that are tested on are < 100 -// -// This allows us to define a bitmap for each number < 100 where a bit i -// indicates whether this number is included in some defined set i. -// The function matchPlural in plural.go defines how we can subsequently use -// this data to determine inclusion. -// -// There are a few languages for which this doesn't work. For one Italian and -// Azerbaijan, which both test against numbers > 100 for ordinals and Breton, -// which considers whether numbers are multiples of hundreds. The model here -// could be extended to handle Italian and Azerbaijan fairly easily (by -// considering the numbers 100, 200, 300, ..., 800, 900 in addition to the first -// 100), but for now it seems easier to just hard-code these cases. - -import ( - "bufio" - "bytes" - "fmt" - "log" - "strconv" - "strings" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/format/plural" - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -type pluralTest struct { - locales string // space-separated list of locales for this test - form plural.Form - integer []string // Entries of the form \d+ or \d+~\d+ - decimal []string // Entries of the form \f+ or \f+ +~\f+, where f is \d+\.\d+ -} - -func genPluralsTests(w *gen.CodeWriter, data *cldr.CLDR) { - w.WriteType(pluralTest{}) - - for _, plurals := range data.Supplemental().Plurals { - if plurals.Type == "" { - // The empty type is reserved for plural ranges. - continue - } - tests := []pluralTest{} - - for _, pRules := range plurals.PluralRules { - for _, rule := range pRules.PluralRule { - test := pluralTest{ - locales: pRules.Locales, - form: countMap[rule.Count], - } - scan := bufio.NewScanner(strings.NewReader(rule.Data())) - scan.Split(splitTokens) - var p *[]string - for scan.Scan() { - switch t := scan.Text(); t { - case "@integer": - p = &test.integer - case "@decimal": - p = &test.decimal - case ",", "…": - default: - if p != nil { - *p = append(*p, t) - } - } - } - tests = append(tests, test) - } - } - w.WriteVar(plurals.Type+"Tests", tests) - } -} - -func genPlurals(w *gen.CodeWriter, data *cldr.CLDR) { - for _, plurals := range data.Supplemental().Plurals { - if plurals.Type == "" { - continue - } - // Initialize setMap and inclusionMasks. They are already populated with - // a few entries to serve as an example and to assign nice numbers to - // common cases. - - // setMap contains sets of numbers represented by boolean arrays where - // a true value for element i means that the number i is included. - setMap := map[[numN]bool]int{ - // The above init func adds an entry for including all numbers. - [numN]bool{1: true}: 1, // fix {1} to a nice value - [numN]bool{2: true}: 2, // fix {2} to a nice value - [numN]bool{0: true}: 3, // fix {0} to a nice value - } - - // inclusionMasks contains bit masks for every number under numN to - // indicate in which set the number is included. Bit 1 << x will be set - // if it is included in set x. - inclusionMasks := [numN]uint64{ - // Note: these entries are not complete: more bits will be set along the way. - 0: 1 << 3, - 1: 1 << 1, - 2: 1 << 2, - } - - // Create set {0..99}. We will assign this set the identifier 0. - var all [numN]bool - for i := range all { - // Mark number i as being included in the set (which has identifier 0). - inclusionMasks[i] |= 1 << 0 - // Mark number i as included in the set. - all[i] = true - } - // Register the identifier for the set. - setMap[all] = 0 - - rules := []pluralCheck{} - index := []byte{0} - langMap := map[int]byte{0: 0} // From compact language index to index - - for _, pRules := range plurals.PluralRules { - // Parse the rules. - var conds []orCondition - for _, rule := range pRules.PluralRule { - form := countMap[rule.Count] - conds = parsePluralCondition(conds, rule.Data(), form) - } - // Encode the rules. - for _, c := range conds { - // If an or condition only has filters, we create an entry for - // this filter and the set that contains all values. - empty := true - for _, b := range c.used { - empty = empty && !b - } - if empty { - rules = append(rules, pluralCheck{ - cat: byte(opMod< 0xFF { - log.Fatalf("Too many entries for rules: %#x", len(rules)) - } - if len(index) > 0xFF { - log.Fatalf("Too many entries for index: %#x", len(index)) - } - if len(setMap) > 64 { // maximum number of bits. - log.Fatalf("Too many entries for setMap: %d", len(setMap)) - } - w.WriteComment( - "Slots used for %s: %X of 0xFF rules; %X of 0xFF indexes; %d of 64 sets", - plurals.Type, len(rules), len(index), len(setMap)) - // Prevent comment from attaching to the next entry. - fmt.Fprint(w, "\n\n") - } -} - -type orCondition struct { - original string // for debugging - - form plural.Form - used [32]bool - set [32][numN]bool -} - -func (o *orCondition) add(op opID, mod int, v []int) (ok bool) { - ok = true - for _, x := range v { - if x >= maxMod { - ok = false - break - } - } - for i := 0; i < numN; i++ { - m := i - if mod != 0 { - m = i % mod - } - if !intIn(m, v) { - o.set[op][i] = false - } - } - if ok { - o.used[op] = true - } - return ok -} - -func intIn(x int, a []int) bool { - for _, y := range a { - if x == y { - return true - } - } - return false -} - -var operandIndex = map[string]opID{ - "i": opI, - "n": opN, - "f": opF, - "v": opV, - "w": opW, -} - -// parsePluralCondition parses the condition of a single pluralRule and appends -// the resulting or conditions to conds. -// -// Example rules: -// // Category "one" in English: only allow 1 with no visible fraction -// i = 1 and v = 0 @integer 1 -// -// // Category "few" in Czech: all numbers with visible fractions -// v != 0 @decimal ... -// -// // Category "zero" in Latvian: all multiples of 10 or the numbers 11-19 or -// // numbers with a fraction 11..19 and no trailing zeros. -// n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer ... -// -// @integer and @decimal are followed by examples and are not relevant for the -// rule itself. The are used here to signal the termination of the rule. -func parsePluralCondition(conds []orCondition, s string, f plural.Form) []orCondition { - scan := bufio.NewScanner(strings.NewReader(s)) - scan.Split(splitTokens) - for { - cond := orCondition{original: s, form: f} - // Set all numbers to be allowed for all number classes and restrict - // from here on. - for i := range cond.set { - for j := range cond.set[i] { - cond.set[i][j] = true - } - } - andLoop: - for { - var token string - scan.Scan() // Must exist. - switch class := scan.Text(); class { - case "t": - class = "w" // equal to w for t == 0 - fallthrough - case "n", "i", "f", "v", "w": - op := scanToken(scan) - opCode := operandIndex[class] - mod := 0 - if op == "%" { - opCode |= opMod - - switch v := scanUint(scan); v { - case 10, 100: - mod = v - case 1000: - // A more general solution would be to allow checking - // against multiples of 100 and include entries for the - // numbers 100..900 in the inclusion masks. At the - // moment this would only help Azerbaijan and Italian. - - // Italian doesn't use '%', so this must be Azerbaijan. - cond.used[opAzerbaijan00s] = true - return append(conds, cond) - - case 1000000: - cond.used[opBretonM] = true - return append(conds, cond) - - default: - log.Fatalf("Modulo value not supported %d", v) - } - op = scanToken(scan) - } - if op != "=" && op != "!=" { - log.Fatalf("Unexpected op %q", op) - } - if op == "!=" { - opCode |= opNotEqual - } - a := []int{} - v := scanUint(scan) - if class == "w" && v != 0 { - log.Fatalf("Must compare against zero for operand type %q", class) - } - token = scanToken(scan) - for { - switch token { - case "..": - end := scanUint(scan) - for ; v <= end; v++ { - a = append(a, v) - } - token = scanToken(scan) - default: // ",", "or", "and", "@..." - a = append(a, v) - } - if token != "," { - break - } - v = scanUint(scan) - token = scanToken(scan) - } - if !cond.add(opCode, mod, a) { - // Detected large numbers. As we ruled out Azerbaijan, this - // must be the many rule for Italian ordinals. - cond.set[opItalian800] = cond.set[opN] - cond.used[opItalian800] = true - } - - case "@integer", "@decimal": // "other" entry: tests only. - return conds - default: - log.Fatalf("Unexpected operand class %q (%s)", class, s) - } - switch token { - case "or": - conds = append(conds, cond) - break andLoop - case "@integer", "@decimal": // examples - // There is always an example in practice, so we always terminate here. - if err := scan.Err(); err != nil { - log.Fatal(err) - } - return append(conds, cond) - case "and": - // keep accumulating - default: - log.Fatalf("Unexpected token %q", token) - } - } - } -} - -func scanToken(scan *bufio.Scanner) string { - scan.Scan() - return scan.Text() -} - -func scanUint(scan *bufio.Scanner) int { - scan.Scan() - val, err := strconv.ParseUint(scan.Text(), 10, 32) - if err != nil { - log.Fatal(err) - } - return int(val) -} - -// splitTokens can be used with bufio.Scanner to tokenize CLDR plural rules. -func splitTokens(data []byte, atEOF bool) (advance int, token []byte, err error) { - condTokens := [][]byte{ - []byte(".."), - []byte(","), - []byte("!="), - []byte("="), - } - advance, token, err = bufio.ScanWords(data, atEOF) - for _, t := range condTokens { - if len(t) >= len(token) { - continue - } - switch p := bytes.Index(token, t); { - case p == -1: - case p == 0: - advance = len(t) - token = token[:len(t)] - return advance - len(token) + len(t), token[:len(t)], err - case p < advance: - // Don't split when "=" overlaps "!=". - if t[0] == '=' && token[p-1] == '!' { - continue - } - advance = p - token = token[:p] - } - } - return advance, token, err -} diff --git a/vendor/golang.org/x/text/internal/number/itoa.go b/vendor/golang.org/x/text/internal/number/itoa.go deleted file mode 100644 index a459a6b7e0..0000000000 --- a/vendor/golang.org/x/text/internal/number/itoa.go +++ /dev/null @@ -1,111 +0,0 @@ -// 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. - -// TODO: use build tags once a low-level public API has been established in -// package strconv. - -package number - -const ( - digits = "0123456789abcdefghijklmnopqrstuvwxyz" -) - -var shifts = [len(digits) + 1]uint{ - 1 << 1: 1, - 1 << 2: 2, - 1 << 3: 3, - 1 << 4: 4, - 1 << 5: 5, -} - -// formatBits computes the string representation of u in the given base. -// If neg is set, u is treated as negative int64 value. If append_ is -// set, the string is appended to dst and the resulting byte slice is -// returned as the first result value; otherwise the string is returned -// as the second result value. -// -func formatBits(dst []byte, u uint64, base int, neg, append_ bool) (d []byte, s string) { - if base < 2 || base > len(digits) { - panic("strconv: illegal AppendInt/FormatInt base") - } - // 2 <= base && base <= len(digits) - - var a [64 + 1]byte // +1 for sign of 64bit value in base 2 - i := len(a) - - if neg { - u = -u - } - - // convert bits - if base == 10 { - // common case: use constants for / because - // the compiler can optimize it into a multiply+shift - - if ^uintptr(0)>>32 == 0 { - for u > uint64(^uintptr(0)) { - q := u / 1e9 - us := uintptr(u - q*1e9) // us % 1e9 fits into a uintptr - for j := 9; j > 0; j-- { - i-- - qs := us / 10 - a[i] = byte(us - qs*10 + '0') - us = qs - } - u = q - } - } - - // u guaranteed to fit into a uintptr - us := uintptr(u) - for us >= 10 { - i-- - q := us / 10 - a[i] = byte(us - q*10 + '0') - us = q - } - // u < 10 - i-- - a[i] = byte(us + '0') - - } else if s := shifts[base]; s > 0 { - // base is power of 2: use shifts and masks instead of / and % - b := uint64(base) - m := uintptr(b) - 1 // == 1<= b { - i-- - a[i] = digits[uintptr(u)&m] - u >>= s - } - // u < base - i-- - a[i] = digits[uintptr(u)] - - } else { - // general case - b := uint64(base) - for u >= b { - i-- - q := u / b - a[i] = digits[uintptr(u-q*b)] - u = q - } - // u < base - i-- - a[i] = digits[uintptr(u)] - } - - // add sign, if any - if neg { - i-- - a[i] = '-' - } - - if append_ { - d = append(dst, a[i:]...) - return - } - s = string(a[i:]) - return -} diff --git a/vendor/golang.org/x/text/internal/number/number.go b/vendor/golang.org/x/text/internal/number/number.go index db8ad67d6b..ea341c7969 100644 --- a/vendor/golang.org/x/text/internal/number/number.go +++ b/vendor/golang.org/x/text/internal/number/number.go @@ -2,7 +2,7 @@ // 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_common.go gen_plural.go +//go:generate go run gen.go gen_common.go // Package number contains tools and data for formatting numbers. package number @@ -121,6 +121,15 @@ func (n Info) WriteDigit(dst []byte, asciiDigit rune) int { return int(n.system.digitSize) } +// AppendDigit appends the UTF-8 sequence for n corresponding to the given digit +// to dst and reports the number of bytes written. dst must be large enough to +// hold the rune (can be up to utf8.UTFMax bytes). +func (n Info) AppendDigit(dst []byte, digit byte) []byte { + dst = append(dst, n.system.zero[:n.system.digitSize]...) + dst[len(dst)-1] += digit + return dst +} + // Digit returns the digit for the numbering system for the corresponding ASCII // value. For example, ni.Digit('3') could return '三'. Note that the argument // is the rune constant '3', which equals 51, not the integer constant 3. @@ -136,7 +145,7 @@ func (n Info) Symbol(t SymbolType) string { return symData.Elem(int(symIndex[n.symIndex][t])) } -func formatForLang(t language.Tag, index []byte) *Format { +func formatForLang(t language.Tag, index []byte) *Pattern { for ; ; t = t.Parent() { if x, ok := language.CompactIndex(t); ok { return &formats[index[x]] diff --git a/vendor/golang.org/x/text/internal/number/number_test.go b/vendor/golang.org/x/text/internal/number/number_test.go index fc04887c42..8717ead727 100644 --- a/vendor/golang.org/x/text/internal/number/number_test.go +++ b/vendor/golang.org/x/text/internal/number/number_test.go @@ -5,6 +5,7 @@ package number import ( + "fmt" "testing" "golang.org/x/text/internal/testtext" @@ -26,9 +27,9 @@ func TestInfo(t *testing.T) { // U+096F DEVANAGARI DIGIT NINE ('९') {"de-BE-u-nu-deva", SymGroup, ".", '\u096f'}, // miss -> latn -> de {"de-Cyrl-BE", SymGroup, ",", '9'}, // inherits from root - {"de-CH", SymGroup, "'", '9'}, // overrides values in de - {"de-CH-oxendict", SymGroup, "'", '9'}, // inherits from de-CH (no compact index) - {"de-CH-u-nu-deva", SymGroup, "'", '\u096f'}, // miss -> latn -> de-CH + {"de-CH", SymGroup, "’", '9'}, // overrides values in de + {"de-CH-oxendict", SymGroup, "’", '9'}, // inherits from de-CH (no compact index) + {"de-CH-u-nu-deva", SymGroup, "’", '\u096f'}, // miss -> latn -> de-CH {"pa", SymExponential, "E", '9'}, @@ -51,13 +52,22 @@ func TestInfo(t *testing.T) { {"en-u-nu-roman", SymPlusSign, "+", '9'}, } for _, tc := range testCases { - info := InfoFromTag(language.MustParse(tc.lang)) - if got := info.Symbol(tc.sym); got != tc.wantSym { - t.Errorf("%s:%v:sym: got %q; want %q", tc.lang, tc.sym, got, tc.wantSym) - } - if got := info.Digit('9'); got != tc.wantNine { - t.Errorf("%s:%v:nine: got %q; want %q", tc.lang, tc.sym, got, tc.wantNine) - } + t.Run(fmt.Sprintf("%s:%v", tc.lang, tc.sym), func(t *testing.T) { + info := InfoFromTag(language.MustParse(tc.lang)) + if got := info.Symbol(tc.sym); got != tc.wantSym { + t.Errorf("sym: got %q; want %q", got, tc.wantSym) + } + if got := info.Digit('9'); got != tc.wantNine { + t.Errorf("Digit(9): got %+q; want %+q", got, tc.wantNine) + } + var buf [4]byte + if got := string(buf[:info.WriteDigit(buf[:], '9')]); got != string(tc.wantNine) { + t.Errorf("WriteDigit(9): got %+q; want %+q", got, tc.wantNine) + } + if got := string(info.AppendDigit([]byte{}, 9)); got != string(tc.wantNine) { + t.Errorf("AppendDigit(9): got %+q; want %+q", got, tc.wantNine) + } + }) } } diff --git a/vendor/golang.org/x/text/internal/number/pattern.go b/vendor/golang.org/x/text/internal/number/pattern.go index 2714b73181..ef7f087fe7 100644 --- a/vendor/golang.org/x/text/internal/number/pattern.go +++ b/vendor/golang.org/x/text/internal/number/pattern.go @@ -31,14 +31,14 @@ import ( // TODO: replace special characters in affixes (-, +, ¤) with control codes. -// Format holds information for formatting numbers. It is designed to hold +// Pattern holds information for formatting numbers. It is designed to hold // information from CLDR number patterns. // // This pattern is precompiled for all patterns for all languages. Even though // the number of patterns is not very large, we want to keep this small. // // This type is only intended for internal use. -type Format struct { +type Pattern struct { // TODO: this struct can be packed a lot better than it is now. Should be // possible to make it 32 bytes. @@ -46,16 +46,17 @@ type Format struct { Offset uint16 // Offset into Affix for prefix and suffix NegOffset uint16 // Offset into Affix for negative prefix and suffix or 0. - Multiplier uint32 + FormatWidth uint16 + RoundIncrement uint32 // Use Min*Digits to determine scale PadRune rune - - FormatWidth uint16 + DigitShift uint8 // Number of decimals to shift. Used for % and ‰. GroupingSize [2]uint8 - Flags FormatFlag + Flags PatternFlag // Number of digits. + // TODO: consider using uint32 MinIntegerDigits uint8 MaxIntegerDigits uint8 MinFractionDigits uint8 @@ -65,11 +66,32 @@ type Format struct { MinExponentDigits uint8 } -// A FormatFlag is a bit mask for the flag field of a Format. -type FormatFlag uint8 +func (f *Pattern) needsSep(pos int) bool { + p := pos - 1 + size := int(f.GroupingSize[0]) + if size == 0 || p == 0 { + return false + } + if p == size { + return true + } + if p -= size; p < 0 { + return false + } + // TODO: make second groupingsize the same as first if 0 so that we can + // avoid this check. + if x := int(f.GroupingSize[1]); x != 0 { + size = x + } + return p%size == 0 +} + +// A PatternFlag is a bit mask for the flag field of a Pattern. +type PatternFlag uint8 const ( - AlwaysSign FormatFlag = 1 << iota + AlwaysSign PatternFlag = 1 << iota + ElideSign // Use space instead of plus sign. AlwaysSign must be true. AlwaysExpSign AlwaysDecimalSeparator ParenthesisForNegative // Common pattern. Saves space. @@ -85,7 +107,7 @@ const ( ) type parser struct { - *Format + *Pattern leadingSharps int @@ -104,7 +126,8 @@ func (p *parser) setError(err error) { } func (p *parser) updateGrouping() { - if p.hasGroup && p.groupingCount < 255 { + if p.hasGroup && + 0 < p.groupingCount && p.groupingCount < 255 { p.GroupingSize[1] = p.GroupingSize[0] p.GroupingSize[0] = uint8(p.groupingCount) } @@ -126,8 +149,8 @@ var ( // ParsePattern extracts formatting information from a CLDR number pattern. // // See http://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns. -func ParsePattern(s string) (f *Format, err error) { - p := parser{Format: &Format{}} +func ParsePattern(s string) (f *Pattern, err error) { + p := parser{Pattern: &Pattern{}} s = p.parseSubPattern(s) @@ -137,7 +160,7 @@ func ParsePattern(s string) (f *Format, err error) { p.setError(errors.New("format: error parsing first sub pattern")) return nil, p.err } - neg := parser{Format: &Format{}} // just for extracting the affixes. + neg := parser{Pattern: &Pattern{}} // just for extracting the affixes. s = neg.parseSubPattern(s[len(";"):]) p.NegOffset = uint16(len(p.buf)) p.buf = append(p.buf, neg.buf...) @@ -154,7 +177,7 @@ func ParsePattern(s string) (f *Format, err error) { } else { p.Affix = affix } - return p.Format, nil + return p.Pattern, nil } func (p *parser) parseSubPattern(s string) string { @@ -163,6 +186,7 @@ func (p *parser) parseSubPattern(s string) string { s = p.parsePad(s, PadAfterPrefix) s = p.parse(p.number, s) + p.updateGrouping() s = p.parsePad(s, PadBeforeSuffix) s = p.parseAffix(s) @@ -170,7 +194,7 @@ func (p *parser) parseSubPattern(s string) string { return s } -func (p *parser) parsePad(s string, f FormatFlag) (tail string) { +func (p *parser) parsePad(s string, f PatternFlag) (tail string) { if len(s) >= 2 && s[0] == '*' { r, sz := utf8.DecodeRuneInString(s[1:]) if p.PadRune != 0 { @@ -225,26 +249,41 @@ func (p *parser) affix(r rune) state { '#', '@', '.', '*', ',', ';': return nil case '\'': - return p.escape + p.FormatWidth-- + return p.escapeFirst case '%': - if p.Multiplier != 0 { + if p.DigitShift != 0 { p.setError(errDuplicatePercentSign) } - p.Multiplier = 100 + p.DigitShift = 2 case '\u2030': // ‰ Per mille - if p.Multiplier != 0 { + if p.DigitShift != 0 { p.setError(errDuplicatePermilleSign) } - p.Multiplier = 1000 + p.DigitShift = 3 // TODO: handle currency somehow: ¤, ¤¤, ¤¤¤, ¤¤¤¤ } p.buf = append(p.buf, string(r)...) return p.affix } +func (p *parser) escapeFirst(r rune) state { + switch r { + case '\'': + p.buf = append(p.buf, "\\'"...) + return p.affix + default: + p.buf = append(p.buf, '\'') + p.buf = append(p.buf, string(r)...) + } + return p.escape +} + func (p *parser) escape(r rune) state { switch r { case '\'': + p.FormatWidth-- + p.buf = append(p.buf, '\'') return p.affix default: p.buf = append(p.buf, string(r)...) @@ -294,6 +333,8 @@ func (p *parser) integer(r rune) state { next = p.exponent case '.': next = p.fraction + case ',': + next = p.integer } p.updateGrouping() return next diff --git a/vendor/golang.org/x/text/internal/number/pattern_test.go b/vendor/golang.org/x/text/internal/number/pattern_test.go index f2ad55db1e..97ff64d558 100644 --- a/vendor/golang.org/x/text/internal/number/pattern_test.go +++ b/vendor/golang.org/x/text/internal/number/pattern_test.go @@ -12,48 +12,78 @@ import ( var testCases = []struct { pat string - want *Format + want *Pattern }{{ "#", - &Format{ + &Pattern{ FormatWidth: 1, // TODO: Should MinIntegerDigits be 1? }, }, { "0", - &Format{ + &Pattern{ FormatWidth: 1, MinIntegerDigits: 1, }, +}, { + "+0", + &Pattern{ + Affix: "\x01+\x00", + FormatWidth: 2, + MinIntegerDigits: 1, + }, +}, { + "0+", + &Pattern{ + Affix: "\x00\x01+", + FormatWidth: 2, + MinIntegerDigits: 1, + }, }, { "0000", - &Format{ + &Pattern{ FormatWidth: 4, MinIntegerDigits: 4, }, }, { ".#", - &Format{ + &Pattern{ FormatWidth: 2, MaxFractionDigits: 1, }, }, { "#0.###", - &Format{ + &Pattern{ FormatWidth: 6, MinIntegerDigits: 1, MaxFractionDigits: 3, }, }, { "#0.######", - &Format{ + &Pattern{ FormatWidth: 9, MinIntegerDigits: 1, MaxFractionDigits: 6, }, +}, { + "#,0", + &Pattern{ + FormatWidth: 3, + GroupingSize: [2]uint8{1, 0}, + MinIntegerDigits: 1, + }, +}, { + "#,0.00", + &Pattern{ + FormatWidth: 6, + GroupingSize: [2]uint8{1, 0}, + MinIntegerDigits: 1, + MinFractionDigits: 2, + MaxFractionDigits: 2, + }, }, { "#,##0.###", - &Format{ + &Pattern{ FormatWidth: 9, GroupingSize: [2]uint8{3, 0}, MinIntegerDigits: 1, @@ -61,7 +91,7 @@ var testCases = []struct { }, }, { "#,##,##0.###", - &Format{ + &Pattern{ FormatWidth: 12, GroupingSize: [2]uint8{3, 2}, MinIntegerDigits: 1, @@ -70,7 +100,7 @@ var testCases = []struct { }, { // Ignore additional separators. "#,####,##,##0.###", - &Format{ + &Pattern{ FormatWidth: 17, GroupingSize: [2]uint8{3, 2}, MinIntegerDigits: 1, @@ -78,21 +108,26 @@ var testCases = []struct { }, }, { "#E0", - &Format{ + &Pattern{ FormatWidth: 3, MaxIntegerDigits: 1, MinExponentDigits: 1, }, +}, { + // At least one exponent digit is required. As long as this is true, one can + // determine that scientific rendering is needed if MinExponentDigits > 0. + "#E#", + nil, }, { "0E0", - &Format{ + &Pattern{ FormatWidth: 3, MinIntegerDigits: 1, MinExponentDigits: 1, }, }, { "##00.0#E0", - &Format{ + &Pattern{ FormatWidth: 9, MinIntegerDigits: 2, MaxIntegerDigits: 4, @@ -102,7 +137,7 @@ var testCases = []struct { }, }, { "#00.0E+0", - &Format{ + &Pattern{ FormatWidth: 8, Flags: AlwaysExpSign, MinIntegerDigits: 2, @@ -120,7 +155,7 @@ var testCases = []struct { }, { // significant digits "@", - &Format{ + &Pattern{ FormatWidth: 1, MinSignificantDigits: 1, MaxSignificantDigits: 1, @@ -128,14 +163,14 @@ var testCases = []struct { }, { // significant digits "@@@@", - &Format{ + &Pattern{ FormatWidth: 4, MinSignificantDigits: 4, MaxSignificantDigits: 4, }, }, { "@###", - &Format{ + &Pattern{ FormatWidth: 4, MinSignificantDigits: 1, MaxSignificantDigits: 4, @@ -143,7 +178,7 @@ var testCases = []struct { }, { // Exponents in significant digits mode gets normalized. "@@E0", - &Format{ + &Pattern{ FormatWidth: 4, MinIntegerDigits: 1, MaxIntegerDigits: 1, @@ -153,7 +188,7 @@ var testCases = []struct { }, }, { "@###E00", - &Format{ + &Pattern{ FormatWidth: 7, MinIntegerDigits: 1, MaxIntegerDigits: 1, @@ -168,7 +203,7 @@ var testCases = []struct { }, { //alternative negative pattern "#0.###;(#0.###)", - &Format{ + &Pattern{ Affix: "\x00\x00\x01(\x01)", NegOffset: 2, FormatWidth: 6, @@ -176,20 +211,31 @@ var testCases = []struct { MaxFractionDigits: 3, }, }, { - // Rounding increments + // Rounding increment "1.05", - &Format{ + &Pattern{ RoundIncrement: 105, FormatWidth: 4, MinIntegerDigits: 1, MinFractionDigits: 2, MaxFractionDigits: 2, }, +}, { + // Rounding increment with grouping + "1,05", + &Pattern{ + RoundIncrement: 105, + FormatWidth: 4, + GroupingSize: [2]uint8{2, 0}, + MinIntegerDigits: 3, + MinFractionDigits: 0, + MaxFractionDigits: 0, + }, }, { "0.0%", - &Format{ + &Pattern{ Affix: "\x00\x01%", - Multiplier: 100, + DigitShift: 2, FormatWidth: 4, MinIntegerDigits: 1, MinFractionDigits: 1, @@ -197,9 +243,9 @@ var testCases = []struct { }, }, { "0.0‰", - &Format{ + &Pattern{ Affix: "\x00\x03‰", - Multiplier: 1000, + DigitShift: 3, FormatWidth: 4, MinIntegerDigits: 1, MinFractionDigits: 1, @@ -207,7 +253,7 @@ var testCases = []struct { }, }, { "#,##0.00¤", - &Format{ + &Pattern{ Affix: "\x00\x02¤", FormatWidth: 9, GroupingSize: [2]uint8{3, 0}, @@ -217,9 +263,9 @@ var testCases = []struct { }, }, { "#,##0.00 ¤;(#,##0.00 ¤)", - &Format{Affix: "\x00\x04\u00a0¤\x01(\x05\u00a0¤)", + &Pattern{Affix: "\x00\x04\u00a0¤\x01(\x05\u00a0¤)", NegOffset: 6, - Multiplier: 0, + DigitShift: 0, FormatWidth: 10, GroupingSize: [2]uint8{3, 0}, MinIntegerDigits: 1, @@ -229,28 +275,28 @@ var testCases = []struct { }, { // padding "*x#", - &Format{ + &Pattern{ PadRune: 'x', FormatWidth: 1, }, }, { // padding "#*x", - &Format{ + &Pattern{ PadRune: 'x', FormatWidth: 1, Flags: PadBeforeSuffix, }, }, { "*xpre#suf", - &Format{ + &Pattern{ Affix: "\x03pre\x03suf", PadRune: 'x', FormatWidth: 7, }, }, { "pre*x#suf", - &Format{ + &Pattern{ Affix: "\x03pre\x03suf", PadRune: 'x', FormatWidth: 7, @@ -258,7 +304,7 @@ var testCases = []struct { }, }, { "pre#*xsuf", - &Format{ + &Pattern{ Affix: "\x03pre\x03suf", PadRune: 'x', FormatWidth: 7, @@ -266,12 +312,25 @@ var testCases = []struct { }, }, { "pre#suf*x", - &Format{ + &Pattern{ Affix: "\x03pre\x03suf", PadRune: 'x', FormatWidth: 7, Flags: PadAfterSuffix, }, +}, { + `* #0 o''clock`, + &Pattern{Affix: "\x00\x09 o\\'clock", + FormatWidth: 10, + PadRune: 32, + MinIntegerDigits: 0x1}, +}, { + `'123'* #0'456'`, + &Pattern{Affix: "\x05'123'\x05'456'", + FormatWidth: 8, + PadRune: 32, + MinIntegerDigits: 0x1, + Flags: PadAfterPrefix}, }, { // no duplicate padding "*xpre#suf*x", nil, @@ -282,19 +341,21 @@ var testCases = []struct { func TestParsePattern(t *testing.T) { for i, tc := range testCases { - f, err := ParsePattern(tc.pat) - if !reflect.DeepEqual(f, tc.want) { - t.Errorf("%d:%s:\ngot %#v;\nwant %#v", i, tc.pat, f, tc.want) - } - if got, want := err != nil, tc.want == nil; got != want { - t.Errorf("%d:%s:error: got %v; want %v", i, tc.pat, err, want) - } + t.Run(tc.pat, func(t *testing.T) { + f, err := ParsePattern(tc.pat) + if !reflect.DeepEqual(f, tc.want) { + t.Errorf("%d:%s:\ngot %#v;\nwant %#v", i, tc.pat, f, tc.want) + } + if got, want := err != nil, tc.want == nil; got != want { + t.Errorf("%d:%s:error: got %v; want %v", i, tc.pat, err, want) + } + }) } } func TestPatternSize(t *testing.T) { - if sz := unsafe.Sizeof(Format{}); sz > 48 { - t.Errorf("got %d; want 48", sz) + if sz := unsafe.Sizeof(Pattern{}); sz > 48 { + t.Errorf("got %d; want <= 48", sz) } } diff --git a/vendor/golang.org/x/text/internal/number/plural.go b/vendor/golang.org/x/text/internal/number/plural.go deleted file mode 100644 index 5714e1128e..0000000000 --- a/vendor/golang.org/x/text/internal/number/plural.go +++ /dev/null @@ -1,119 +0,0 @@ -// 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 number - -import "golang.org/x/text/internal/format/plural" - -type pluralRules struct { - rules []pluralCheck - index []byte - langToIndex []byte - inclusionMasks []uint64 -} - -var ( - ordinalData = pluralRules{ - ordinalRules, - ordinalIndex, - ordinalLangToIndex, - ordinalInclusionMasks[:], - } - cardinalData = pluralRules{ - cardinalRules, - cardinalIndex, - cardinalLangToIndex, - cardinalInclusionMasks[:], - } -) - -// See gen_plural.go for an explanation of the algorithm. - -func matchPlural(p *pluralRules, index int, n, f, v int) plural.Form { - nMask := p.inclusionMasks[n%maxMod] - // Compute the fMask inline in the rules below, as it is relatively rare. - // fMask := p.inclusionMasks[f%maxMod] - vMask := p.inclusionMasks[v%maxMod] - - // Do the matching - offset := p.langToIndex[index] - rules := p.rules[p.index[offset]:p.index[offset+1]] - for i := 0; i < len(rules); i++ { - rule := rules[i] - setBit := uint64(1 << rule.setID) - var skip bool - switch op := opID(rule.cat >> opShift); op { - case opI: // i = x - skip = n >= numN || nMask&setBit == 0 - - case opI | opNotEqual: // i != x - skip = n < numN && nMask&setBit != 0 - - case opI | opMod: // i % m = x - skip = nMask&setBit == 0 - - case opI | opMod | opNotEqual: // i % m != x - skip = nMask&setBit != 0 - - case opN: // n = x - skip = f != 0 || n >= numN || nMask&setBit == 0 - - case opN | opNotEqual: // n != x - skip = f == 0 && n < numN && nMask&setBit != 0 - - case opN | opMod: // n % m = x - skip = f != 0 || nMask&setBit == 0 - - case opN | opMod | opNotEqual: // n % m != x - skip = f == 0 && nMask&setBit != 0 - - case opF: // f = x - skip = f >= numN || p.inclusionMasks[f%maxMod]&setBit == 0 - - case opF | opNotEqual: // f != x - skip = f < numN && p.inclusionMasks[f%maxMod]&setBit != 0 - - case opF | opMod: // f % m = x - skip = p.inclusionMasks[f%maxMod]&setBit == 0 - - case opF | opMod | opNotEqual: // f % m != x - skip = p.inclusionMasks[f%maxMod]&setBit != 0 - - case opV: // v = x - skip = v < numN && vMask&setBit == 0 - - case opV | opNotEqual: // v != x - skip = v < numN && vMask&setBit != 0 - - case opW: // w == 0 - skip = f != 0 - - case opW | opNotEqual: // w != 0 - skip = f == 0 - - // Hard-wired rules that cannot be handled by our algorithm. - - case opBretonM: - skip = f != 0 || n == 0 || n%1000000 != 0 - - case opAzerbaijan00s: - // 100,200,300,400,500,600,700,800,900 - skip = n == 0 || n >= 1000 || n%100 != 0 - - case opItalian800: - skip = (f != 0 || n >= numN || nMask&setBit == 0) && n != 800 - } - if skip { - // advance over AND entries. - for ; i < len(rules) && rules[i].cat&formMask == andNext; i++ { - } - continue - } - // return if we have a final entry. - if cat := rule.cat & formMask; cat != andNext { - return plural.Form(cat) - } - } - return plural.Other -} diff --git a/vendor/golang.org/x/text/internal/number/plural_test.go b/vendor/golang.org/x/text/internal/number/plural_test.go deleted file mode 100644 index 3383d8c3d9..0000000000 --- a/vendor/golang.org/x/text/internal/number/plural_test.go +++ /dev/null @@ -1,110 +0,0 @@ -// 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 number - -import ( - "strconv" - "strings" - "testing" - - "golang.org/x/text/language" -) - -func TestOrdinal(t *testing.T) { - testPlurals(t, &ordinalData, ordinalTests) -} - -func TestCardinal(t *testing.T) { - testPlurals(t, &cardinalData, cardinalTests) -} - -func testPlurals(t *testing.T, p *pluralRules, testCases []pluralTest) { - for _, tc := range testCases { - for _, loc := range strings.Split(tc.locales, " ") { - langIndex, _ := language.CompactIndex(language.MustParse(loc)) - // Test integers - for _, s := range tc.integer { - a := strings.Split(s, "~") - from := parseUint(t, a[0]) - to := from - if len(a) > 1 { - to = parseUint(t, a[1]) - } - for n := from; n <= to; n++ { - if f := matchPlural(p, langIndex, n, 0, 0); f != tc.form { - t.Errorf("%s:int(%d) = %v; want %v", loc, n, f, tc.form) - } - } - } - // Test decimals - for _, s := range tc.decimal { - a := strings.Split(s, "~") - from, scale := parseFixedPoint(t, a[0]) - to := from - if len(a) > 1 { - var toScale int - if to, toScale = parseFixedPoint(t, a[1]); toScale != scale { - t.Fatalf("%s:%s: non-matching scales %d versus %d", loc, s, scale, toScale) - } - } - m := 1 - for i := 0; i < scale; i++ { - m *= 10 - } - for n := from; n <= to; n++ { - if f := matchPlural(p, langIndex, n/m, n%m, scale); f != tc.form { - t.Errorf("%[1]s:dec(%[2]d.%0[4]*[3]d) = %[5]v; want %[6]v", loc, n/m, n%m, scale, f, tc.form) - } - } - } - } - } -} - -func parseUint(t *testing.T, s string) int { - val, err := strconv.ParseUint(s, 10, 32) - if err != nil { - t.Fatal(err) - } - return int(val) -} - -func parseFixedPoint(t *testing.T, s string) (val, scale int) { - p := strings.Index(s, ".") - s = strings.Replace(s, ".", "", 1) - v, err := strconv.ParseUint(s, 10, 32) - if err != nil { - t.Fatal(err) - } - return int(v), len(s) - p -} - -func BenchmarkPluralSimpleCases(b *testing.B) { - p := &cardinalData - en, _ := language.CompactIndex(language.English) - zh, _ := language.CompactIndex(language.Chinese) - for i := 0; i < b.N; i++ { - matchPlural(p, en, 0, 0, 0) // 0 - matchPlural(p, en, 1, 0, 0) // 1 - matchPlural(p, en, 2, 12, 3) // 2.120 - matchPlural(p, zh, 0, 0, 0) // 0 - matchPlural(p, zh, 1, 0, 0) // 1 - matchPlural(p, zh, 2, 12, 3) // 2.120 - } -} - -func BenchmarkPluralComplexCases(b *testing.B) { - p := &cardinalData - ar, _ := language.CompactIndex(language.Arabic) - lv, _ := language.CompactIndex(language.Latvian) - for i := 0; i < b.N; i++ { - matchPlural(p, lv, 0, 19, 2) // 0.19 - matchPlural(p, lv, 11, 0, 3) // 11.000 - matchPlural(p, lv, 100, 123, 4) // 0.1230 - matchPlural(p, ar, 0, 0, 0) // 0 - matchPlural(p, ar, 110, 0, 0) // 110 - matchPlural(p, ar, 99, 99, 2) // 99.99 - } -} diff --git a/vendor/golang.org/x/text/internal/number/roundingmode_string.go b/vendor/golang.org/x/text/internal/number/roundingmode_string.go new file mode 100644 index 0000000000..f264ea5495 --- /dev/null +++ b/vendor/golang.org/x/text/internal/number/roundingmode_string.go @@ -0,0 +1,16 @@ +// Code generated by "stringer -type RoundingMode"; DO NOT EDIT. + +package number + +import "fmt" + +const _RoundingMode_name = "ToNearestEvenToNearestZeroToNearestAwayToPositiveInfToNegativeInfToZeroAwayFromZeronumModes" + +var _RoundingMode_index = [...]uint8{0, 13, 26, 39, 52, 65, 71, 83, 91} + +func (i RoundingMode) String() string { + if i >= RoundingMode(len(_RoundingMode_index)-1) { + return fmt.Sprintf("RoundingMode(%d)", i) + } + return _RoundingMode_name[_RoundingMode_index[i]:_RoundingMode_index[i+1]] +} diff --git a/vendor/golang.org/x/text/internal/number/tables.go b/vendor/golang.org/x/text/internal/number/tables.go index c17c9a63f2..b08acc48cd 100644 --- a/vendor/golang.org/x/text/internal/number/tables.go +++ b/vendor/golang.org/x/text/internal/number/tables.go @@ -1,149 +1,156 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package number import "golang.org/x/text/internal/stringset" // CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "29" +const CLDRVersion = "31" -var numSysData = []systemData{ // 55 elements +var numSysData = []systemData{ // 58 elements 0: {id: 0x0, digitSize: 0x1, zero: [4]uint8{0x30, 0x0, 0x0, 0x0}}, - 1: {id: 0x1, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x9c, 0xb0}}, - 2: {id: 0x2, digitSize: 0x2, zero: [4]uint8{0xd9, 0xa0, 0x0, 0x0}}, - 3: {id: 0x3, digitSize: 0x2, zero: [4]uint8{0xdb, 0xb0, 0x0, 0x0}}, - 4: {id: 0x4, digitSize: 0x3, zero: [4]uint8{0xe1, 0xad, 0x90, 0x0}}, - 5: {id: 0x5, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa7, 0xa6, 0x0}}, - 6: {id: 0x6, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x81, 0xa6}}, - 7: {id: 0x7, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x84, 0xb6}}, - 8: {id: 0x8, digitSize: 0x3, zero: [4]uint8{0xea, 0xa9, 0x90, 0x0}}, - 9: {id: 0x9, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa5, 0xa6, 0x0}}, - 10: {id: 0xa, digitSize: 0x3, zero: [4]uint8{0xef, 0xbc, 0x90, 0x0}}, - 11: {id: 0xb, digitSize: 0x3, zero: [4]uint8{0xe0, 0xab, 0xa6, 0x0}}, - 12: {id: 0xc, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa9, 0xa6, 0x0}}, - 13: {id: 0xd, digitSize: 0x4, zero: [4]uint8{0xf0, 0x96, 0xad, 0x90}}, - 14: {id: 0xe, digitSize: 0x3, zero: [4]uint8{0xea, 0xa7, 0x90, 0x0}}, - 15: {id: 0xf, digitSize: 0x3, zero: [4]uint8{0xea, 0xa4, 0x80, 0x0}}, - 16: {id: 0x10, digitSize: 0x3, zero: [4]uint8{0xe1, 0x9f, 0xa0, 0x0}}, - 17: {id: 0x11, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb3, 0xa6, 0x0}}, - 18: {id: 0x12, digitSize: 0x3, zero: [4]uint8{0xe1, 0xaa, 0x80, 0x0}}, - 19: {id: 0x13, digitSize: 0x3, zero: [4]uint8{0xe1, 0xaa, 0x90, 0x0}}, - 20: {id: 0x14, digitSize: 0x3, zero: [4]uint8{0xe0, 0xbb, 0x90, 0x0}}, - 21: {id: 0x15, digitSize: 0x3, zero: [4]uint8{0xe1, 0xb1, 0x80, 0x0}}, - 22: {id: 0x16, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa5, 0x86, 0x0}}, - 23: {id: 0x17, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0x8e}}, - 24: {id: 0x18, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0x98}}, - 25: {id: 0x19, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xb6}}, - 26: {id: 0x1a, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xac}}, - 27: {id: 0x1b, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xa2}}, - 28: {id: 0x1c, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb5, 0xa6, 0x0}}, - 29: {id: 0x1d, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x99, 0x90}}, - 30: {id: 0x1e, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa0, 0x90, 0x0}}, - 31: {id: 0x1f, digitSize: 0x4, zero: [4]uint8{0xf0, 0x96, 0xa9, 0xa0}}, - 32: {id: 0x20, digitSize: 0x3, zero: [4]uint8{0xea, 0xaf, 0xb0, 0x0}}, - 33: {id: 0x21, digitSize: 0x3, zero: [4]uint8{0xe1, 0x81, 0x80, 0x0}}, - 34: {id: 0x22, digitSize: 0x3, zero: [4]uint8{0xe1, 0x82, 0x90, 0x0}}, - 35: {id: 0x23, digitSize: 0x3, zero: [4]uint8{0xea, 0xa7, 0xb0, 0x0}}, - 36: {id: 0x24, digitSize: 0x2, zero: [4]uint8{0xdf, 0x80, 0x0, 0x0}}, - 37: {id: 0x25, digitSize: 0x3, zero: [4]uint8{0xe1, 0xb1, 0x90, 0x0}}, - 38: {id: 0x26, digitSize: 0x3, zero: [4]uint8{0xe0, 0xad, 0xa6, 0x0}}, - 39: {id: 0x27, digitSize: 0x4, zero: [4]uint8{0xf0, 0x90, 0x92, 0xa0}}, - 40: {id: 0x28, digitSize: 0x3, zero: [4]uint8{0xea, 0xa3, 0x90, 0x0}}, - 41: {id: 0x29, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x87, 0x90}}, - 42: {id: 0x2a, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x8b, 0xb0}}, - 43: {id: 0x2b, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb7, 0xa6, 0x0}}, - 44: {id: 0x2c, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x83, 0xb0}}, - 45: {id: 0x2d, digitSize: 0x3, zero: [4]uint8{0xe1, 0xae, 0xb0, 0x0}}, - 46: {id: 0x2e, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x9b, 0x80}}, - 47: {id: 0x2f, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa7, 0x90, 0x0}}, - 48: {id: 0x30, digitSize: 0x3, zero: [4]uint8{0xe0, 0xaf, 0xa6, 0x0}}, - 49: {id: 0x31, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb1, 0xa6, 0x0}}, - 50: {id: 0x32, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb9, 0x90, 0x0}}, - 51: {id: 0x33, digitSize: 0x3, zero: [4]uint8{0xe0, 0xbc, 0xa0, 0x0}}, - 52: {id: 0x34, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x93, 0x90}}, - 53: {id: 0x35, digitSize: 0x3, zero: [4]uint8{0xea, 0x98, 0xa0, 0x0}}, - 54: {id: 0x36, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0xa3, 0xa0}}, -} // Size: 354 bytes + 1: {id: 0x1, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9e, 0xa5, 0x90}}, + 2: {id: 0x2, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x9c, 0xb0}}, + 3: {id: 0x3, digitSize: 0x2, zero: [4]uint8{0xd9, 0xa0, 0x0, 0x0}}, + 4: {id: 0x4, digitSize: 0x2, zero: [4]uint8{0xdb, 0xb0, 0x0, 0x0}}, + 5: {id: 0x5, digitSize: 0x3, zero: [4]uint8{0xe1, 0xad, 0x90, 0x0}}, + 6: {id: 0x6, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa7, 0xa6, 0x0}}, + 7: {id: 0x7, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0xb1, 0x90}}, + 8: {id: 0x8, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x81, 0xa6}}, + 9: {id: 0x9, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x84, 0xb6}}, + 10: {id: 0xa, digitSize: 0x3, zero: [4]uint8{0xea, 0xa9, 0x90, 0x0}}, + 11: {id: 0xb, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa5, 0xa6, 0x0}}, + 12: {id: 0xc, digitSize: 0x3, zero: [4]uint8{0xef, 0xbc, 0x90, 0x0}}, + 13: {id: 0xd, digitSize: 0x3, zero: [4]uint8{0xe0, 0xab, 0xa6, 0x0}}, + 14: {id: 0xe, digitSize: 0x3, zero: [4]uint8{0xe0, 0xa9, 0xa6, 0x0}}, + 15: {id: 0xf, digitSize: 0x4, zero: [4]uint8{0xf0, 0x96, 0xad, 0x90}}, + 16: {id: 0x10, digitSize: 0x3, zero: [4]uint8{0xea, 0xa7, 0x90, 0x0}}, + 17: {id: 0x11, digitSize: 0x3, zero: [4]uint8{0xea, 0xa4, 0x80, 0x0}}, + 18: {id: 0x12, digitSize: 0x3, zero: [4]uint8{0xe1, 0x9f, 0xa0, 0x0}}, + 19: {id: 0x13, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb3, 0xa6, 0x0}}, + 20: {id: 0x14, digitSize: 0x3, zero: [4]uint8{0xe1, 0xaa, 0x80, 0x0}}, + 21: {id: 0x15, digitSize: 0x3, zero: [4]uint8{0xe1, 0xaa, 0x90, 0x0}}, + 22: {id: 0x16, digitSize: 0x3, zero: [4]uint8{0xe0, 0xbb, 0x90, 0x0}}, + 23: {id: 0x17, digitSize: 0x3, zero: [4]uint8{0xe1, 0xb1, 0x80, 0x0}}, + 24: {id: 0x18, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa5, 0x86, 0x0}}, + 25: {id: 0x19, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0x8e}}, + 26: {id: 0x1a, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0x98}}, + 27: {id: 0x1b, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xb6}}, + 28: {id: 0x1c, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xac}}, + 29: {id: 0x1d, digitSize: 0x4, zero: [4]uint8{0xf0, 0x9d, 0x9f, 0xa2}}, + 30: {id: 0x1e, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb5, 0xa6, 0x0}}, + 31: {id: 0x1f, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x99, 0x90}}, + 32: {id: 0x20, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa0, 0x90, 0x0}}, + 33: {id: 0x21, digitSize: 0x4, zero: [4]uint8{0xf0, 0x96, 0xa9, 0xa0}}, + 34: {id: 0x22, digitSize: 0x3, zero: [4]uint8{0xea, 0xaf, 0xb0, 0x0}}, + 35: {id: 0x23, digitSize: 0x3, zero: [4]uint8{0xe1, 0x81, 0x80, 0x0}}, + 36: {id: 0x24, digitSize: 0x3, zero: [4]uint8{0xe1, 0x82, 0x90, 0x0}}, + 37: {id: 0x25, digitSize: 0x3, zero: [4]uint8{0xea, 0xa7, 0xb0, 0x0}}, + 38: {id: 0x26, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x91, 0x90}}, + 39: {id: 0x27, digitSize: 0x2, zero: [4]uint8{0xdf, 0x80, 0x0, 0x0}}, + 40: {id: 0x28, digitSize: 0x3, zero: [4]uint8{0xe1, 0xb1, 0x90, 0x0}}, + 41: {id: 0x29, digitSize: 0x3, zero: [4]uint8{0xe0, 0xad, 0xa6, 0x0}}, + 42: {id: 0x2a, digitSize: 0x4, zero: [4]uint8{0xf0, 0x90, 0x92, 0xa0}}, + 43: {id: 0x2b, digitSize: 0x3, zero: [4]uint8{0xea, 0xa3, 0x90, 0x0}}, + 44: {id: 0x2c, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x87, 0x90}}, + 45: {id: 0x2d, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x8b, 0xb0}}, + 46: {id: 0x2e, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb7, 0xa6, 0x0}}, + 47: {id: 0x2f, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x83, 0xb0}}, + 48: {id: 0x30, digitSize: 0x3, zero: [4]uint8{0xe1, 0xae, 0xb0, 0x0}}, + 49: {id: 0x31, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x9b, 0x80}}, + 50: {id: 0x32, digitSize: 0x3, zero: [4]uint8{0xe1, 0xa7, 0x90, 0x0}}, + 51: {id: 0x33, digitSize: 0x3, zero: [4]uint8{0xe0, 0xaf, 0xa6, 0x0}}, + 52: {id: 0x34, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb1, 0xa6, 0x0}}, + 53: {id: 0x35, digitSize: 0x3, zero: [4]uint8{0xe0, 0xb9, 0x90, 0x0}}, + 54: {id: 0x36, digitSize: 0x3, zero: [4]uint8{0xe0, 0xbc, 0xa0, 0x0}}, + 55: {id: 0x37, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0x93, 0x90}}, + 56: {id: 0x38, digitSize: 0x3, zero: [4]uint8{0xea, 0x98, 0xa0, 0x0}}, + 57: {id: 0x39, digitSize: 0x4, zero: [4]uint8{0xf0, 0x91, 0xa3, 0xa0}}, +} // Size: 372 bytes const ( - numAhom = 0x1 - numArab = 0x2 - numArabext = 0x3 - numArmn = 0x37 - numArmnlow = 0x38 - numBali = 0x4 - numBeng = 0x5 - numBrah = 0x6 - numCakm = 0x7 - numCham = 0x8 - numCyrl = 0x39 - numDeva = 0x9 - numEthi = 0x3a - numFullwide = 0xa - numGeor = 0x3b - numGrek = 0x3c - numGreklow = 0x3d - numGujr = 0xb - numGuru = 0xc - numHanidays = 0x3e - numHanidec = 0x3f - numHans = 0x40 - numHansfin = 0x41 - numHant = 0x42 - numHantfin = 0x43 - numHebr = 0x44 - numHmng = 0xd - numJava = 0xe - numJpan = 0x45 - numJpanfin = 0x46 - numKali = 0xf - numKhmr = 0x10 - numKnda = 0x11 - numLana = 0x12 - numLanatham = 0x13 - numLaoo = 0x14 + numAdlm = 0x1 + numAhom = 0x2 + numArab = 0x3 + numArabext = 0x4 + numArmn = 0x3a + numArmnlow = 0x3b + numBali = 0x5 + numBeng = 0x6 + numBhks = 0x7 + numBrah = 0x8 + numCakm = 0x9 + numCham = 0xa + numCyrl = 0x3c + numDeva = 0xb + numEthi = 0x3d + numFullwide = 0xc + numGeor = 0x3e + numGrek = 0x3f + numGreklow = 0x40 + numGujr = 0xd + numGuru = 0xe + numHanidays = 0x41 + numHanidec = 0x42 + numHans = 0x43 + numHansfin = 0x44 + numHant = 0x45 + numHantfin = 0x46 + numHebr = 0x47 + numHmng = 0xf + numJava = 0x10 + numJpan = 0x48 + numJpanfin = 0x49 + numKali = 0x11 + numKhmr = 0x12 + numKnda = 0x13 + numLana = 0x14 + numLanatham = 0x15 + numLaoo = 0x16 numLatn = 0x0 - numLepc = 0x15 - numLimb = 0x16 - numMathbold = 0x17 - numMathdbl = 0x18 - numMathmono = 0x19 - numMathsanb = 0x1a - numMathsans = 0x1b - numMlym = 0x1c - numModi = 0x1d - numMong = 0x1e - numMroo = 0x1f - numMtei = 0x20 - numMymr = 0x21 - numMymrshan = 0x22 - numMymrtlng = 0x23 - numNkoo = 0x24 - numOlck = 0x25 - numOrya = 0x26 - numOsma = 0x27 - numRoman = 0x47 - numRomanlow = 0x48 - numSaur = 0x28 - numShrd = 0x29 - numSind = 0x2a - numSinh = 0x2b - numSora = 0x2c - numSund = 0x2d - numTakr = 0x2e - numTalu = 0x2f - numTaml = 0x49 - numTamldec = 0x30 - numTelu = 0x31 - numThai = 0x32 - numTibt = 0x33 - numTirh = 0x34 - numVaii = 0x35 - numWara = 0x36 + numLepc = 0x17 + numLimb = 0x18 + numMathbold = 0x19 + numMathdbl = 0x1a + numMathmono = 0x1b + numMathsanb = 0x1c + numMathsans = 0x1d + numMlym = 0x1e + numModi = 0x1f + numMong = 0x20 + numMroo = 0x21 + numMtei = 0x22 + numMymr = 0x23 + numMymrshan = 0x24 + numMymrtlng = 0x25 + numNewa = 0x26 + numNkoo = 0x27 + numOlck = 0x28 + numOrya = 0x29 + numOsma = 0x2a + numRoman = 0x4a + numRomanlow = 0x4b + numSaur = 0x2b + numShrd = 0x2c + numSind = 0x2d + numSinh = 0x2e + numSora = 0x2f + numSund = 0x30 + numTakr = 0x31 + numTalu = 0x32 + numTaml = 0x4c + numTamldec = 0x33 + numTelu = 0x34 + numThai = 0x35 + numTibt = 0x36 + numTirh = 0x37 + numVaii = 0x38 + numWara = 0x39 numNumberSystems ) var systemMap = map[string]system{ + "adlm": numAdlm, "ahom": numAhom, "arab": numArab, "arabext": numArabext, @@ -151,6 +158,7 @@ var systemMap = map[string]system{ "armnlow": numArmnlow, "bali": numBali, "beng": numBeng, + "bhks": numBhks, "brah": numBrah, "cakm": numCakm, "cham": numCham, @@ -196,6 +204,7 @@ var systemMap = map[string]system{ "mymr": numMymr, "mymrshan": numMymrshan, "mymrtlng": numMymrtlng, + "newa": numNewa, "nkoo": numNkoo, "olck": numOlck, "orya": numOrya, @@ -220,843 +229,320 @@ var systemMap = map[string]system{ "wara": numWara, } -var symIndex = [][12]uint8{ // 68 elements +var symIndex = [][12]uint8{ // 71 elements 0: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, 1: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, 2: [12]uint8{0x0, 0x1, 0x2, 0xd, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0x10, 0xb}, 3: [12]uint8{0x1, 0x0, 0x2, 0xd, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0x10, 0xb}, - 4: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x11, 0xb}, - 5: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 6: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0}, - 7: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x0, 0x8, 0x9, 0xa, 0xb}, - 8: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x12, 0xb}, - 9: [12]uint8{0x0, 0x1, 0x2, 0xd, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 10: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x13, 0x8, 0x9, 0xa, 0xb}, - 11: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0}, - 12: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x14, 0x8, 0x9, 0xa, 0xb}, - 13: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x14, 0x8, 0x9, 0xa, 0xb}, - 14: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x14, 0x8, 0x9, 0xa, 0xb}, - 15: [12]uint8{0x0, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 16: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x16, 0xb}, - 17: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb}, - 18: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb}, - 19: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x18, 0x7, 0x8, 0x9, 0xa, 0xb}, - 20: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x19, 0x1a, 0xa, 0xb}, - 21: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 22: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x7, 0x8, 0x9, 0xa, 0xb}, - 23: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0x1c, 0x6, 0x7, 0x8, 0x9, 0x1d, 0xb}, - 24: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0x1e, 0x0}, - 25: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 26: [12]uint8{0x0, 0x1f, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 27: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 4: [12]uint8{0x0, 0x1, 0x2, 0x11, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0x10, 0xb}, + 5: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x12, 0xb}, + 6: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 7: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x13, 0x8, 0x9, 0xa, 0xb}, + 8: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x14, 0xb}, + 9: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 10: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0}, + 11: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x13, 0x8, 0x9, 0xa, 0xb}, + 12: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x13, 0x8, 0x9, 0xa, 0xb}, + 13: [12]uint8{0x0, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 14: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x16, 0xb}, + 15: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb}, + 16: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb}, + 17: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0}, + 18: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x18, 0x7, 0x8, 0x9, 0xa, 0xb}, + 19: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x19, 0x1a, 0xa, 0xb}, + 20: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 21: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x7, 0x8, 0x9, 0xa, 0xb}, + 22: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0x1c, 0x6, 0x7, 0x8, 0x9, 0x1d, 0xb}, + 23: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0x1e, 0x0}, + 24: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 25: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 26: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0xf, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 27: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x1f, 0xb}, 28: [12]uint8{0x0, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, 29: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x20, 0xb}, - 30: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x18, 0x14, 0x8, 0x9, 0x21, 0xb}, - 31: [12]uint8{0x0, 0x1, 0x2, 0x3, 0xe, 0xf, 0x6, 0x7, 0x8, 0x22, 0xa, 0xb}, - 32: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x7, 0x8, 0x9, 0x21, 0xb}, + 30: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x21, 0xb}, + 31: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x13, 0x8, 0x9, 0x22, 0xb}, + 32: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x7, 0x8, 0x9, 0x22, 0xb}, 33: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x23, 0xb}, 34: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x24, 0xb}, 35: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x25, 0xb}, 36: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x26, 0xb}, - 37: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0}, - 38: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x27, 0xb}, - 39: [12]uint8{0x1, 0x0, 0x2, 0x3, 0xe, 0x1c, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 40: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x28, 0xb}, - 41: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x18, 0x14, 0x8, 0x9, 0x21, 0xb}, + 37: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x27, 0xb}, + 38: [12]uint8{0x1, 0x0, 0x2, 0x3, 0xe, 0x1c, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 39: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x28, 0xb}, + 40: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x29, 0xb}, + 41: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x1b, 0x2a, 0x13, 0x8, 0x9, 0x22, 0xb}, 42: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x0}, - 43: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x29, 0xb}, - 44: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2a, 0xb}, - 45: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2b, 0xb}, - 46: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x2c, 0x7, 0x8, 0x9, 0xa, 0xb}, - 47: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2d, 0xb}, - 48: [12]uint8{0x1, 0x1f, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 49: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2e, 0xb}, - 50: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x32, 0x33, 0x34, 0x7, 0x35, 0x9, 0xa, 0xb}, - 51: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x32, 0x33, 0x34, 0x7, 0x35, 0x9, 0x36, 0xb}, - 52: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x32, 0x37, 0x34, 0x7, 0x35, 0x9, 0xa, 0xb}, - 53: [12]uint8{0x2f, 0xc, 0x31, 0xd, 0x4, 0x1b, 0x34, 0x7, 0x35, 0x9, 0xa, 0x0}, - 54: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x38, 0x39, 0x3a, 0x7, 0x35, 0x9, 0xa, 0x2f}, - 55: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x38, 0x1c, 0x3a, 0x7, 0x35, 0x9, 0x1d, 0xb}, - 56: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0xe, 0x1c, 0x3a, 0x7, 0x35, 0x9, 0xa, 0x2f}, - 57: [12]uint8{0x1, 0xc, 0x31, 0xd, 0x4, 0x1b, 0x3a, 0x7, 0x35, 0x9, 0xa, 0x0}, - 58: [12]uint8{0x2f, 0x1, 0x31, 0xd, 0x4, 0x5, 0x3a, 0x7, 0x35, 0x9, 0xa, 0x2f}, - 59: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x38, 0x37, 0x3a, 0x7, 0x35, 0x9, 0xa, 0xb}, - 60: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x38, 0x39, 0x3b, 0x7, 0x8, 0x9, 0x3c, 0x2f}, - 61: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x4, 0x5, 0x3a, 0x7, 0x35, 0x9, 0x2d, 0x2f}, - 62: [12]uint8{0x2f, 0x30, 0x31, 0xd, 0x4, 0x5, 0x3a, 0x7, 0x35, 0x9, 0xa, 0x2f}, - 63: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x3d, 0xb}, - 64: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x3e, 0xb}, - 65: [12]uint8{0x0, 0x1, 0x3f, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, - 66: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x40, 0xb}, - 67: [12]uint8{0x0, 0x1, 0x41, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x42, 0x43, 0xb}, -} // Size: 840 bytes + 43: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb}, + 44: [12]uint8{0x1, 0x0, 0x2, 0x3, 0x4, 0x1b, 0x17, 0x7, 0x8, 0x9, 0xa, 0xb}, + 45: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2b, 0x0}, + 46: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2c, 0xb}, + 47: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2d, 0xb}, + 48: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x2e, 0x7, 0x8, 0x9, 0xa, 0xb}, + 49: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x2f, 0xb}, + 50: [12]uint8{0x1, 0xc, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x30, 0xb}, + 51: [12]uint8{0x1, 0x15, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb}, + 52: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x31, 0xb}, + 53: [12]uint8{0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x7, 0x39, 0x9, 0xa, 0xb}, + 54: [12]uint8{0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x7, 0x39, 0x9, 0x3a, 0xb}, + 55: [12]uint8{0x32, 0x33, 0x34, 0x11, 0x36, 0x37, 0x38, 0x7, 0x39, 0x9, 0xa, 0xb}, + 56: [12]uint8{0x32, 0x33, 0x34, 0x11, 0x36, 0x3b, 0x38, 0x7, 0x39, 0x9, 0xa, 0xb}, + 57: [12]uint8{0x32, 0xc, 0x34, 0x35, 0x36, 0x3c, 0x38, 0x7, 0x39, 0x9, 0xa, 0x0}, + 58: [12]uint8{0x32, 0x33, 0x34, 0x35, 0x36, 0x3c, 0x38, 0x7, 0x3d, 0x9, 0x22, 0xb}, + 59: [12]uint8{0x32, 0x33, 0x34, 0x11, 0x3e, 0x3f, 0x40, 0x7, 0x39, 0x9, 0xa, 0x32}, + 60: [12]uint8{0x32, 0x33, 0x34, 0x41, 0xe, 0x1c, 0x40, 0x7, 0x39, 0x9, 0x1d, 0xb}, + 61: [12]uint8{0x32, 0x33, 0x34, 0x11, 0xe, 0x1c, 0x40, 0x7, 0x39, 0x9, 0xa, 0x32}, + 62: [12]uint8{0x1, 0xc, 0x34, 0x11, 0x3e, 0x42, 0x40, 0x7, 0x39, 0x9, 0xa, 0x0}, + 63: [12]uint8{0x32, 0x1, 0x34, 0x11, 0x4, 0x5, 0x40, 0x7, 0x39, 0x9, 0xa, 0x32}, + 64: [12]uint8{0x32, 0x33, 0x34, 0x11, 0x3e, 0x42, 0x40, 0x7, 0x39, 0x9, 0x22, 0xb}, + 65: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x3e, 0x3f, 0x40, 0x7, 0x8, 0x9, 0xa, 0x32}, + 66: [12]uint8{0x32, 0x33, 0x34, 0x11, 0x4, 0x5, 0x40, 0x7, 0x39, 0x9, 0x2f, 0x32}, + 67: [12]uint8{0x32, 0x33, 0x34, 0x11, 0x4, 0x5, 0x40, 0x7, 0x39, 0x9, 0x30, 0x32}, + 68: [12]uint8{0x0, 0x1, 0x43, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x26, 0xb}, + 69: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x44, 0xb}, + 70: [12]uint8{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x45, 0x46, 0xb}, +} // Size: 876 bytes var symData = stringset.Set{ - Data: "" + // Size: 560 bytes - ".,;%+-E׉∞NaN:\u00a0٪\u200e+\u200e-ليس\u00a0رقمًاNDТерхьаш\u00a0дацx·'mn" + - "ne×10^0/00INF−\u200e−ناعددepäluku’არ\u00a0არის\u00a0რიცხვი¤¤¤?сан\u00a0э" + - "месບໍ່\u200bແມ່ນ\u200bໂຕ\u200bເລກnav\u00a0skaitlisဂဏန်းမဟုတ်သောННне" + - "\u00a0числоepilohosan\u00a0dälTFЕhaqiqiy\u00a0son\u00a0emas非數值٫٬؛\u200f+" + - "\u200f-اس؉ليس\u00a0رقم\u200f−\u200e+\u200e\u200e-\u200e×۱۰^قیہ\u00a0عدد" + - "\u00a0نہیںসংখ্যা\u00a0নাസംഖ്യയല്ല၊ཨང་མེན་དང་གྲངས་མེདཨང་མད", - Index: []uint16{ // 69 elements + Data: "" + // Size: 580 bytes + ".,;%+-E׉∞NaN:\u00a0\u200e%\u200e\u200e+\u200e-ليس\u00a0رقمًا٪ND·Терхьаш" + + "\u00a0дац’mnne×10^0/00INF−\u200e−ناعددepälukuՈչԹარ\u00a0არის\u00a0რიცხვი" + + "сан\u00a0емес¤¤¤сан\u00a0эмесບໍ່\u200bແມ່ນ\u200bໂຕ\u200bເລກNSဂဏန်းမဟုတ်" + + "သောННне\u00a0числочыыһыла\u00a0буотах·10^epilohosan\u00a0dälTFЕhaqiqiy" + + "\u00a0son\u00a0emasҳақиқий\u00a0сон\u00a0эмас非數值٫٬؛٪\u061c\u061c+\u061c-" + + "اس؉ليس\u00a0رقم\u200f−\u061c−؉\u200f\u200e+\u200e\u200e-\u200e×۱۰^" + + "\u200e٪\u200e−\u200e၊ཨང་མེན་གྲངས་མེདཨང་མད", + Index: []uint16{ // 72 elements // Entry 0 - 3F 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, - 0x0009, 0x000c, 0x000f, 0x0012, 0x0013, 0x0015, 0x0017, 0x001b, - 0x001f, 0x0031, 0x0033, 0x0049, 0x004a, 0x004c, 0x004d, 0x0050, - 0x0051, 0x0056, 0x005a, 0x005d, 0x0060, 0x0066, 0x0070, 0x0078, - 0x007b, 0x00a3, 0x00a9, 0x00aa, 0x00ba, 0x00e7, 0x00f4, 0x011b, - 0x011f, 0x012f, 0x0136, 0x013f, 0x0141, 0x0143, 0x0155, 0x015e, - 0x0160, 0x0162, 0x0164, 0x0168, 0x016c, 0x0170, 0x0172, 0x0180, - 0x0186, 0x018d, 0x0194, 0x019b, 0x019d, 0x01b3, 0x01cd, 0x01e8, + 0x0009, 0x000c, 0x000f, 0x0012, 0x0013, 0x0015, 0x001c, 0x0020, + 0x0024, 0x0036, 0x0038, 0x003a, 0x003c, 0x0052, 0x0055, 0x0058, + 0x0059, 0x005e, 0x0062, 0x0065, 0x0068, 0x006e, 0x0078, 0x0080, + 0x0086, 0x00ae, 0x00be, 0x00c4, 0x00d4, 0x0101, 0x0103, 0x012a, + 0x012e, 0x013e, 0x015a, 0x015f, 0x0166, 0x016f, 0x0171, 0x0173, + 0x0185, 0x01a5, 0x01ae, 0x01b0, 0x01b2, 0x01b4, 0x01b8, 0x01bb, + 0x01be, 0x01c2, 0x01c4, 0x01d2, 0x01d8, 0x01dd, 0x01e2, 0x01e9, // Entry 40 - 7F - 0x01eb, 0x0200, 0x0209, 0x0221, 0x0230, + 0x01f0, 0x01f7, 0x01fc, 0x0205, 0x0208, 0x021d, 0x0235, 0x0244, }, -} // Size: 738 bytes +} // Size: 764 bytes // langToDefaults maps a compact language index to the default numbering system // and default symbol set -var langToDefaults = [747]uint8{ +var langToDefaults = [754]uint8{ // Entry 0 - 3F - 0x80, 0x05, 0x14, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x80, 0x06, 0x13, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x83, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, - 0x02, 0x85, 0x00, 0x00, 0x00, 0x86, 0x04, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x01, 0x01, 0x06, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, + 0x02, 0x04, 0x02, 0x04, 0x02, 0x02, 0x02, 0x03, + 0x02, 0x00, 0x85, 0x00, 0x00, 0x00, 0x86, 0x05, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, // Entry 40 - 7F - 0x00, 0x89, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x8d, - 0x01, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x8f, 0x09, 0x09, 0x91, 0x01, - 0x01, 0x01, 0x93, 0x0a, 0x0b, 0x0b, 0x0b, 0x00, - 0x00, 0x0c, 0x0d, 0x0c, 0x0e, 0x0c, 0x0e, 0x0c, - 0x0f, 0x0f, 0x0c, 0x0c, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x95, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, + 0x00, 0x00, 0x89, 0x00, 0x00, 0x8a, 0x00, 0x00, + 0x8c, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x8e, 0x09, 0x09, 0x90, + 0x01, 0x01, 0x01, 0x93, 0x00, 0x0a, 0x0a, 0x0a, + 0x00, 0x00, 0x0b, 0x07, 0x0b, 0x0c, 0x0b, 0x0b, + 0x0c, 0x0b, 0x0d, 0x0d, 0x0b, 0x0b, 0x01, 0x01, + 0x00, 0x01, 0x01, 0x95, 0x00, 0x00, 0x00, 0x0e, // Entry 80 - BF - 0x11, 0x11, 0x11, 0x00, 0x00, 0x05, 0x00, 0x00, - 0x00, 0x0c, 0x12, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x0b, 0x10, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x00, + 0x11, 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, // Entry C0 - FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x15, 0x15, 0x05, 0x00, - 0x05, 0x05, 0x00, 0x05, 0x05, 0x01, 0x00, 0x00, - 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x14, 0x14, + 0x06, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, + 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, // Entry 100 - 13F - 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, - 0x05, 0x05, 0x16, 0x16, 0x05, 0x05, 0x01, 0x01, - 0x97, 0x17, 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x18, 0x18, 0x00, 0x00, 0x19, 0x19, 0x19, 0x9a, - 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x0f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x06, 0x15, 0x15, 0x06, + 0x06, 0x01, 0x01, 0x97, 0x16, 0x16, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x17, 0x17, 0x00, 0x00, 0x18, + 0x18, 0x18, 0x9a, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x06, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry 140 - 17F 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, - 0x05, 0x05, 0x00, 0x00, 0x9d, 0x00, 0x05, 0x05, - 0x1a, 0x1a, 0x1a, 0x1a, 0xa0, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x9d, + 0x00, 0x06, 0x06, 0x19, 0x19, 0x19, 0x19, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x05, 0x05, 0x05, - 0x0c, 0x0c, 0x01, 0x01, 0x05, 0x05, 0x0b, 0x0b, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x1a, 0x1a, 0x00, 0x00, + 0x06, 0x06, 0x06, 0x0b, 0x0b, 0x01, 0x01, 0x1b, + 0x1b, 0x0a, 0x0a, 0xa2, 0x00, 0x00, 0x00, 0x06, // Entry 180 - 1BF - 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, - 0x00, 0x00, 0x00, 0x1d, 0x1d, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0f, - 0x0f, 0x00, 0x00, 0x01, 0x01, 0x05, 0x05, 0x1e, - 0x1e, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa2, 0x1f, 0x00, 0x00, - 0x01, 0x01, 0x20, 0x20, 0x00, 0x00, 0x00, 0x21, - 0x21, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, + 0x06, 0x06, 0x1c, 0x06, 0x06, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x1d, + 0x1d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x0d, 0x0d, 0x00, 0x00, 0x1e, + 0x1e, 0x06, 0x06, 0x1f, 0x1f, 0x00, 0x00, 0x06, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa5, 0x1a, 0x00, 0x00, 0x01, 0x01, 0x20, 0x20, + 0x00, 0x00, 0x00, 0x21, 0x21, 0x00, 0x00, 0x06, // Entry 1C0 - 1FF - 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x22, 0x22, - 0xa4, 0x00, 0x00, 0x16, 0x16, 0x05, 0x05, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x05, 0x05, - 0x00, 0x00, 0x05, 0x05, 0xa6, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x05, 0xa9, 0x24, 0xab, 0x00, 0x00, 0x00, - 0x00, 0xac, 0x25, 0x25, 0x00, 0x00, 0xaf, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x22, 0x22, 0xa7, 0x00, 0x00, 0x15, + 0x15, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x23, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, + 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, + 0x00, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0xaa, 0x24, + 0xac, 0x00, 0x00, 0x00, 0x00, 0xad, 0x14, 0x14, // Entry 200 - 23F - 0x00, 0xb0, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x01, 0x01, 0x25, 0x25, 0x05, 0x05, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0xb0, 0x00, 0x00, + 0xb1, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x01, 0x01, 0x14, 0x14, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26, 0x26, - 0xb2, 0xb4, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0xb6, 0x27, 0x05, 0x01, 0x05, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x25, 0x25, 0xb4, + 0xb6, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0xb8, 0x26, 0x06, 0x01, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x1a, 0x1a, 0x05, // Entry 240 - 27F - 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x28, 0x28, - 0x28, 0x28, 0x28, 0x28, 0x28, 0x05, 0x05, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x29, 0x29, 0x29, 0x05, 0x05, 0x0f, 0x0f, - 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2a, - 0x2a, 0x01, 0x01, 0x11, 0x11, 0x00, 0x00, 0x00, - 0x2b, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0b, 0x0b, + 0x00, 0x06, 0x00, 0x00, 0x19, 0x19, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x00, 0x27, 0x27, 0x27, + 0x27, 0x27, 0x27, 0x27, 0x06, 0x06, 0x00, 0x00, + 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, + 0x29, 0x29, 0x29, 0x06, 0x06, 0x0d, 0x0d, 0x06, + 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2a, 0x2a, + 0x2b, 0x2b, 0x2c, 0x2c, 0x00, 0x00, 0x00, 0x2d, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 280 - 2BF - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x20, 0x20, 0x20, - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x00, 0x00, 0xba, 0x20, 0x20, 0x20, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x2c, - 0x00, 0x2d, 0x2d, 0x05, 0x05, 0x05, 0x00, 0x0f, - 0x0f, 0x01, 0x01, 0x00, 0x00, 0x2e, 0x2e, 0xbb, - 0xbd, 0x1b, 0xbe, 0xc0, 0x27, 0xc2, 0x01, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x00, + 0x2f, 0x2f, 0x06, 0x06, 0x06, 0x00, 0x0d, 0x0d, + 0x01, 0x01, 0x00, 0x00, 0x30, 0x30, 0xbd, 0xbf, // Entry 2C0 - 2FF - 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x31, 0x31, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x31, 0x31, - 0x31, 0x00, 0x00, -} // Size: 747 bytes + 0x1a, 0xc0, 0xc2, 0x26, 0xc4, 0x32, 0x31, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x34, 0x34, 0x01, 0x01, 0xc6, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, + 0x00, 0x00, +} // Size: 754 bytes // langToAlt is a list of numbering system and symbol set pairs, sorted and // marked by compact language index. -var langToAlt = []altSymData{ // 68 elements - 1: {compactTag: 0x0, system: 0x2, symIndex: 0x32}, - 2: {compactTag: 0x0, system: 0x3, symIndex: 0x36}, - 3: {compactTag: 0xc, system: 0x2, symIndex: 0x33}, +var langToAlt = []altSymData{ // 73 elements + 1: {compactTag: 0x0, system: 0x3, symIndex: 0x35}, + 2: {compactTag: 0x0, system: 0x4, symIndex: 0x3b}, + 3: {compactTag: 0xc, system: 0x3, symIndex: 0x36}, 4: {compactTag: 0xc, system: 0x0, symIndex: 0x2}, - 5: {compactTag: 0x29, system: 0x5, symIndex: 0x0}, - 6: {compactTag: 0x2d, system: 0x0, symIndex: 0x4}, - 7: {compactTag: 0x2d, system: 0x2, symIndex: 0x32}, - 8: {compactTag: 0x2d, system: 0x3, symIndex: 0x36}, - 9: {compactTag: 0x41, system: 0x5, symIndex: 0x3f}, - 10: {compactTag: 0x41, system: 0x0, symIndex: 0x0}, - 11: {compactTag: 0x44, system: 0x0, symIndex: 0x0}, - 12: {compactTag: 0x44, system: 0x33, symIndex: 0x42}, - 13: {compactTag: 0x47, system: 0x0, symIndex: 0x1}, - 14: {compactTag: 0x47, system: 0x2, symIndex: 0x32}, - 15: {compactTag: 0x5b, system: 0x2, symIndex: 0x32}, - 16: {compactTag: 0x5b, system: 0x0, symIndex: 0x9}, - 17: {compactTag: 0x5e, system: 0x0, symIndex: 0x1}, - 18: {compactTag: 0x5e, system: 0x2, symIndex: 0x32}, - 19: {compactTag: 0x62, system: 0x0, symIndex: 0xa}, - 20: {compactTag: 0x62, system: 0x2, symIndex: 0x32}, - 21: {compactTag: 0x79, system: 0x33, symIndex: 0x43}, - 22: {compactTag: 0x79, system: 0x0, symIndex: 0x0}, - 23: {compactTag: 0x110, system: 0x3, symIndex: 0x37}, - 24: {compactTag: 0x110, system: 0x0, symIndex: 0x17}, - 25: {compactTag: 0x110, system: 0x2, symIndex: 0x32}, - 26: {compactTag: 0x11f, system: 0x0, symIndex: 0x1}, - 27: {compactTag: 0x11f, system: 0x2, symIndex: 0x34}, - 28: {compactTag: 0x11f, system: 0x3, symIndex: 0x38}, - 29: {compactTag: 0x154, system: 0x0, symIndex: 0x0}, - 30: {compactTag: 0x154, system: 0x2, symIndex: 0x32}, - 31: {compactTag: 0x154, system: 0x3, symIndex: 0x36}, - 32: {compactTag: 0x15c, system: 0x0, symIndex: 0x0}, - 33: {compactTag: 0x15c, system: 0x2, symIndex: 0x32}, - 34: {compactTag: 0x1ac, system: 0x3, symIndex: 0x36}, - 35: {compactTag: 0x1ac, system: 0x0, symIndex: 0x1f}, - 36: {compactTag: 0x1c8, system: 0x3, symIndex: 0x36}, - 37: {compactTag: 0x1c8, system: 0x0, symIndex: 0x0}, - 38: {compactTag: 0x1e4, system: 0x0, symIndex: 0x0}, - 39: {compactTag: 0x1e4, system: 0x1c, symIndex: 0x40}, - 40: {compactTag: 0x1e8, system: 0x9, symIndex: 0x0}, - 41: {compactTag: 0x1f2, system: 0x21, symIndex: 0x41}, - 42: {compactTag: 0x1f2, system: 0x0, symIndex: 0x24}, - 43: {compactTag: 0x1f4, system: 0x3, symIndex: 0x36}, - 44: {compactTag: 0x1f9, system: 0x0, symIndex: 0x25}, - 45: {compactTag: 0x1f9, system: 0x2, symIndex: 0x35}, - 46: {compactTag: 0x1f9, system: 0x3, symIndex: 0x39}, - 47: {compactTag: 0x1fe, system: 0x9, symIndex: 0x0}, - 48: {compactTag: 0x201, system: 0x0, symIndex: 0x5}, - 49: {compactTag: 0x201, system: 0x2, symIndex: 0x32}, - 50: {compactTag: 0x220, system: 0x0, symIndex: 0x0}, - 51: {compactTag: 0x220, system: 0x3, symIndex: 0x3a}, - 52: {compactTag: 0x221, system: 0x3, symIndex: 0x36}, - 53: {compactTag: 0x221, system: 0x0, symIndex: 0x1b}, - 54: {compactTag: 0x22a, system: 0x3, symIndex: 0x36}, - 55: {compactTag: 0x22a, system: 0x0, symIndex: 0x27}, - 56: {compactTag: 0x28c, system: 0x0, symIndex: 0x20}, - 57: {compactTag: 0x28c, system: 0x2, symIndex: 0x34}, - 58: {compactTag: 0x28c, system: 0x3, symIndex: 0x3b}, - 59: {compactTag: 0x2b7, system: 0x0, symIndex: 0x1b}, - 60: {compactTag: 0x2b7, system: 0x3, symIndex: 0x3c}, - 61: {compactTag: 0x2b8, system: 0x3, symIndex: 0x3c}, - 62: {compactTag: 0x2ba, system: 0x0, symIndex: 0x2f}, - 63: {compactTag: 0x2ba, system: 0x3, symIndex: 0x3d}, - 64: {compactTag: 0x2bb, system: 0x3, symIndex: 0x36}, - 65: {compactTag: 0x2bb, system: 0x0, symIndex: 0x27}, - 66: {compactTag: 0x2bd, system: 0x0, symIndex: 0x1}, - 67: {compactTag: 0x2bd, system: 0x3, symIndex: 0x3e}, -} // Size: 296 bytes - -var ordinalRules = []pluralCheck{ // 58 elements - 0: {cat: 0x2f, setID: 0x4}, - 1: {cat: 0x3a, setID: 0x5}, - 2: {cat: 0x22, setID: 0x1}, - 3: {cat: 0x22, setID: 0x6}, - 4: {cat: 0x22, setID: 0x7}, - 5: {cat: 0x2f, setID: 0x8}, - 6: {cat: 0x3c, setID: 0x9}, - 7: {cat: 0x2f, setID: 0xa}, - 8: {cat: 0x3c, setID: 0xb}, - 9: {cat: 0x2d, setID: 0xc}, - 10: {cat: 0x2d, setID: 0xd}, - 11: {cat: 0x2f, setID: 0xe}, - 12: {cat: 0x35, setID: 0x3}, - 13: {cat: 0xc5, setID: 0xf}, - 14: {cat: 0x2, setID: 0x1}, - 15: {cat: 0x5, setID: 0x3}, - 16: {cat: 0xd, setID: 0x10}, - 17: {cat: 0x22, setID: 0x1}, - 18: {cat: 0x2f, setID: 0x11}, - 19: {cat: 0x3d, setID: 0x12}, - 20: {cat: 0x2f, setID: 0x13}, - 21: {cat: 0x3a, setID: 0x14}, - 22: {cat: 0x2f, setID: 0x15}, - 23: {cat: 0x3b, setID: 0x16}, - 24: {cat: 0x2f, setID: 0xa}, - 25: {cat: 0x3c, setID: 0xb}, - 26: {cat: 0x22, setID: 0x1}, - 27: {cat: 0x23, setID: 0x17}, - 28: {cat: 0x24, setID: 0x18}, - 29: {cat: 0x22, setID: 0x19}, - 30: {cat: 0x23, setID: 0x2}, - 31: {cat: 0x24, setID: 0x18}, - 32: {cat: 0xf, setID: 0x13}, - 33: {cat: 0x1a, setID: 0x14}, - 34: {cat: 0xf, setID: 0x15}, - 35: {cat: 0x1b, setID: 0x16}, - 36: {cat: 0xf, setID: 0x1a}, - 37: {cat: 0x1d, setID: 0x1b}, - 38: {cat: 0xa, setID: 0x1c}, - 39: {cat: 0xa, setID: 0x1d}, - 40: {cat: 0xc, setID: 0x1e}, - 41: {cat: 0xe4, setID: 0x0}, - 42: {cat: 0x5, setID: 0x3}, - 43: {cat: 0xd, setID: 0xc}, - 44: {cat: 0xd, setID: 0x1f}, - 45: {cat: 0x22, setID: 0x1}, - 46: {cat: 0x23, setID: 0x17}, - 47: {cat: 0x24, setID: 0x18}, - 48: {cat: 0x25, setID: 0x20}, - 49: {cat: 0x22, setID: 0x21}, - 50: {cat: 0x23, setID: 0x17}, - 51: {cat: 0x24, setID: 0x18}, - 52: {cat: 0x25, setID: 0x20}, - 53: {cat: 0x21, setID: 0x22}, - 54: {cat: 0x22, setID: 0x1}, - 55: {cat: 0x23, setID: 0x2}, - 56: {cat: 0x24, setID: 0x23}, - 57: {cat: 0x25, setID: 0x24}, -} // Size: 140 bytes + 5: {compactTag: 0x2a, system: 0x6, symIndex: 0x0}, + 6: {compactTag: 0x2e, system: 0x0, symIndex: 0x5}, + 7: {compactTag: 0x2e, system: 0x3, symIndex: 0x37}, + 8: {compactTag: 0x2e, system: 0x4, symIndex: 0x3b}, + 9: {compactTag: 0x42, system: 0x6, symIndex: 0x0}, + 10: {compactTag: 0x45, system: 0x0, symIndex: 0x0}, + 11: {compactTag: 0x45, system: 0x36, symIndex: 0x45}, + 12: {compactTag: 0x48, system: 0x0, symIndex: 0x1}, + 13: {compactTag: 0x48, system: 0x3, symIndex: 0x35}, + 14: {compactTag: 0x5c, system: 0x3, symIndex: 0x37}, + 15: {compactTag: 0x5c, system: 0x0, symIndex: 0x9}, + 16: {compactTag: 0x5f, system: 0x0, symIndex: 0x1}, + 17: {compactTag: 0x5f, system: 0x3, symIndex: 0x35}, + 18: {compactTag: 0x5f, system: 0x4, symIndex: 0x3b}, + 19: {compactTag: 0x63, system: 0x0, symIndex: 0x0}, + 20: {compactTag: 0x63, system: 0x3, symIndex: 0x35}, + 21: {compactTag: 0x7b, system: 0x36, symIndex: 0x46}, + 22: {compactTag: 0x7b, system: 0x0, symIndex: 0x0}, + 23: {compactTag: 0x113, system: 0x4, symIndex: 0x3c}, + 24: {compactTag: 0x113, system: 0x0, symIndex: 0x16}, + 25: {compactTag: 0x113, system: 0x3, symIndex: 0x37}, + 26: {compactTag: 0x122, system: 0x0, symIndex: 0x1}, + 27: {compactTag: 0x122, system: 0x3, symIndex: 0x38}, + 28: {compactTag: 0x122, system: 0x4, symIndex: 0x3d}, + 29: {compactTag: 0x157, system: 0x0, symIndex: 0x0}, + 30: {compactTag: 0x157, system: 0x3, symIndex: 0x37}, + 31: {compactTag: 0x157, system: 0x4, symIndex: 0x3b}, + 32: {compactTag: 0x15f, system: 0x0, symIndex: 0x0}, + 33: {compactTag: 0x15f, system: 0x3, symIndex: 0x35}, + 34: {compactTag: 0x17b, system: 0x0, symIndex: 0x0}, + 35: {compactTag: 0x17b, system: 0x3, symIndex: 0x35}, + 36: {compactTag: 0x17b, system: 0x4, symIndex: 0x3b}, + 37: {compactTag: 0x1b0, system: 0x4, symIndex: 0x3b}, + 38: {compactTag: 0x1b0, system: 0x0, symIndex: 0x1a}, + 39: {compactTag: 0x1cc, system: 0x4, symIndex: 0x3b}, + 40: {compactTag: 0x1cc, system: 0x0, symIndex: 0x0}, + 41: {compactTag: 0x1ec, system: 0xb, symIndex: 0x0}, + 42: {compactTag: 0x1f6, system: 0x23, symIndex: 0x44}, + 43: {compactTag: 0x1f6, system: 0x0, symIndex: 0x24}, + 44: {compactTag: 0x1f8, system: 0x4, symIndex: 0x3b}, + 45: {compactTag: 0x1fd, system: 0x0, symIndex: 0x14}, + 46: {compactTag: 0x1fd, system: 0x3, symIndex: 0x39}, + 47: {compactTag: 0x1fd, system: 0x4, symIndex: 0x3e}, + 48: {compactTag: 0x205, system: 0xb, symIndex: 0x0}, + 49: {compactTag: 0x208, system: 0x0, symIndex: 0x6}, + 50: {compactTag: 0x208, system: 0x3, symIndex: 0x35}, + 51: {compactTag: 0x208, system: 0x4, symIndex: 0x3b}, + 52: {compactTag: 0x227, system: 0x0, symIndex: 0x0}, + 53: {compactTag: 0x227, system: 0x4, symIndex: 0x3f}, + 54: {compactTag: 0x228, system: 0x4, symIndex: 0x3b}, + 55: {compactTag: 0x228, system: 0x0, symIndex: 0x1a}, + 56: {compactTag: 0x231, system: 0x4, symIndex: 0x3b}, + 57: {compactTag: 0x231, system: 0x0, symIndex: 0x26}, + 58: {compactTag: 0x293, system: 0x0, symIndex: 0x20}, + 59: {compactTag: 0x293, system: 0x3, symIndex: 0x3a}, + 60: {compactTag: 0x293, system: 0x4, symIndex: 0x40}, + 61: {compactTag: 0x2be, system: 0x0, symIndex: 0x1a}, + 62: {compactTag: 0x2be, system: 0x4, symIndex: 0x41}, + 63: {compactTag: 0x2bf, system: 0x4, symIndex: 0x41}, + 64: {compactTag: 0x2c1, system: 0x0, symIndex: 0x31}, + 65: {compactTag: 0x2c1, system: 0x4, symIndex: 0x42}, + 66: {compactTag: 0x2c2, system: 0x4, symIndex: 0x3b}, + 67: {compactTag: 0x2c2, system: 0x0, symIndex: 0x26}, + 68: {compactTag: 0x2c4, system: 0x0, symIndex: 0x32}, + 69: {compactTag: 0x2c4, system: 0x4, symIndex: 0x43}, + 70: {compactTag: 0x2e6, system: 0x0, symIndex: 0x0}, + 71: {compactTag: 0x2e6, system: 0x3, symIndex: 0x35}, + 72: {compactTag: 0x2e6, system: 0x4, symIndex: 0x3b}, +} // Size: 316 bytes -var ordinalIndex = []uint8{ // 20 elements - 0x00, 0x00, 0x02, 0x03, 0x04, 0x05, 0x07, 0x09, - 0x0d, 0x0e, 0x11, 0x14, 0x1a, 0x1d, 0x20, 0x26, - 0x2d, 0x31, 0x35, 0x3a, -} // Size: 44 bytes - -var ordinalLangToIndex = []uint8{ // 747 elements - // Entry 0 - 3F - 0x00, 0x0d, 0x0b, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x05, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 40 - 7F - 0x00, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x12, 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, - // Entry 80 - BF - 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - // Entry C0 - FF - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 100 - 13F - 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, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - // Entry 140 - 17F - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x03, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, - // Entry 180 - 1BF - 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x07, 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, 0x00, 0x00, 0x00, 0x00, - // Entry 1C0 - 1FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 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, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x0c, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, - // Entry 200 - 23F - 0x04, 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, - 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, 0x00, - // Entry 240 - 27F - 0x00, 0x02, 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, - // Entry 280 - 2BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 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, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 2C0 - 2FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 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, - 0x00, 0x00, 0x00, -} // Size: 771 bytes - -var ordinalInclusionMasks = []uint64{ // 100 elements - // Entry 0 - 1F - 0x0000000400004009, 0x00000002120800d3, 0x0000000010a10195, 0x0000000842810581, - 0x0000000841030081, 0x0000001210010041, 0x0000001100011001, 0x0000000614010001, - 0x0000000614018001, 0x0000000600012001, 0x0000000200014001, 0x0000000010198031, - 0x0000000010610331, 0x0000000040010f01, 0x0000000040070001, 0x0000000010010001, - 0x0000000000011001, 0x000000001c010001, 0x000000001c010001, 0x0000000000012001, - 0x0000000020014001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, - 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, - 0x0000000014000001, 0x0000000000002001, 0x0000000000004001, 0x0000000010080011, - // Entry 20 - 3F - 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, - 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, - 0x0000000080014001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, - 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, - 0x0000000014000001, 0x0000000000002001, 0x0000000020004001, 0x0000000010080011, - 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, - 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, - 0x0000000080014001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, - // Entry 40 - 5F - 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, - 0x0000000014000001, 0x0000000000002001, 0x0000000020004001, 0x0000000010080011, - 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, - 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, - 0x000000002001c001, 0x0000000010080011, 0x0000000010200111, 0x0000000040000501, - 0x0000000040020001, 0x0000000010000001, 0x0000000000001001, 0x0000000014000001, - 0x0000000014000001, 0x0000000000002001, 0x0000000080004001, 0x0000000010080011, - 0x0000000010200111, 0x0000000040000501, 0x0000000040020001, 0x0000000010000001, - // Entry 60 - 7F - 0x0000000000001001, 0x0000000014000001, 0x0000000014000001, 0x0000000000002001, -} // Size: 824 bytes - -// Slots used for ordinal: 3A of 0xFF rules; 14 of 0xFF indexes; 37 of 64 sets - -var cardinalRules = []pluralCheck{ // 169 elements - 0: {cat: 0x2, setID: 0x3}, - 1: {cat: 0x22, setID: 0x1}, - 2: {cat: 0x2, setID: 0x4}, - 3: {cat: 0x7, setID: 0x1}, - 4: {cat: 0x62, setID: 0x3}, - 5: {cat: 0x22, setID: 0x4}, - 6: {cat: 0x7, setID: 0x3}, - 7: {cat: 0x42, setID: 0x1}, - 8: {cat: 0x22, setID: 0x4}, - 9: {cat: 0x22, setID: 0x4}, - 10: {cat: 0x22, setID: 0x5}, - 11: {cat: 0x27, setID: 0x6}, - 12: {cat: 0x32, setID: 0x2}, - 13: {cat: 0x22, setID: 0x1}, - 14: {cat: 0x27, setID: 0x1}, - 15: {cat: 0x62, setID: 0x3}, - 16: {cat: 0x22, setID: 0x1}, - 17: {cat: 0x7, setID: 0x4}, - 18: {cat: 0x92, setID: 0x3}, - 19: {cat: 0xf, setID: 0x7}, - 20: {cat: 0x1f, setID: 0x8}, - 21: {cat: 0x82, setID: 0x3}, - 22: {cat: 0x92, setID: 0x3}, - 23: {cat: 0xf, setID: 0x7}, - 24: {cat: 0x62, setID: 0x3}, - 25: {cat: 0x4a, setID: 0x7}, - 26: {cat: 0x7, setID: 0x9}, - 27: {cat: 0x62, setID: 0x3}, - 28: {cat: 0x1f, setID: 0xa}, - 29: {cat: 0x62, setID: 0x3}, - 30: {cat: 0x5f, setID: 0xa}, - 31: {cat: 0x72, setID: 0x3}, - 32: {cat: 0x29, setID: 0xb}, - 33: {cat: 0x29, setID: 0xc}, - 34: {cat: 0x4f, setID: 0xc}, - 35: {cat: 0x61, setID: 0x2}, - 36: {cat: 0x2f, setID: 0x7}, - 37: {cat: 0x3a, setID: 0x8}, - 38: {cat: 0x4f, setID: 0x7}, - 39: {cat: 0x5f, setID: 0x8}, - 40: {cat: 0x62, setID: 0x2}, - 41: {cat: 0x4f, setID: 0x7}, - 42: {cat: 0x72, setID: 0x2}, - 43: {cat: 0x21, setID: 0x3}, - 44: {cat: 0x7, setID: 0x4}, - 45: {cat: 0x32, setID: 0x3}, - 46: {cat: 0x21, setID: 0x3}, - 47: {cat: 0x22, setID: 0x1}, - 48: {cat: 0x22, setID: 0x1}, - 49: {cat: 0x23, setID: 0x2}, - 50: {cat: 0x2, setID: 0x3}, - 51: {cat: 0x22, setID: 0x1}, - 52: {cat: 0x24, setID: 0xd}, - 53: {cat: 0x7, setID: 0x1}, - 54: {cat: 0x62, setID: 0x3}, - 55: {cat: 0x74, setID: 0x3}, - 56: {cat: 0x24, setID: 0x3}, - 57: {cat: 0x2f, setID: 0xe}, - 58: {cat: 0x34, setID: 0x1}, - 59: {cat: 0xf, setID: 0x7}, - 60: {cat: 0x1f, setID: 0x8}, - 61: {cat: 0x62, setID: 0x3}, - 62: {cat: 0x4f, setID: 0x7}, - 63: {cat: 0x5a, setID: 0x8}, - 64: {cat: 0xf, setID: 0xf}, - 65: {cat: 0x1f, setID: 0x10}, - 66: {cat: 0x64, setID: 0x3}, - 67: {cat: 0x4f, setID: 0xf}, - 68: {cat: 0x5c, setID: 0x10}, - 69: {cat: 0x22, setID: 0x11}, - 70: {cat: 0x23, setID: 0x12}, - 71: {cat: 0x24, setID: 0x13}, - 72: {cat: 0xf, setID: 0x1}, - 73: {cat: 0x62, setID: 0x3}, - 74: {cat: 0xf, setID: 0x2}, - 75: {cat: 0x63, setID: 0x3}, - 76: {cat: 0xf, setID: 0x14}, - 77: {cat: 0x64, setID: 0x3}, - 78: {cat: 0x74, setID: 0x3}, - 79: {cat: 0xf, setID: 0x1}, - 80: {cat: 0x62, setID: 0x3}, - 81: {cat: 0x4a, setID: 0x1}, - 82: {cat: 0xf, setID: 0x2}, - 83: {cat: 0x63, setID: 0x3}, - 84: {cat: 0x4b, setID: 0x2}, - 85: {cat: 0xf, setID: 0x14}, - 86: {cat: 0x64, setID: 0x3}, - 87: {cat: 0x4c, setID: 0x14}, - 88: {cat: 0x7, setID: 0x1}, - 89: {cat: 0x62, setID: 0x3}, - 90: {cat: 0x7, setID: 0x2}, - 91: {cat: 0x63, setID: 0x3}, - 92: {cat: 0x2f, setID: 0xb}, - 93: {cat: 0x37, setID: 0x15}, - 94: {cat: 0x65, setID: 0x3}, - 95: {cat: 0x7, setID: 0x1}, - 96: {cat: 0x62, setID: 0x3}, - 97: {cat: 0x7, setID: 0x16}, - 98: {cat: 0x64, setID: 0x3}, - 99: {cat: 0x75, setID: 0x3}, - 100: {cat: 0x7, setID: 0x1}, - 101: {cat: 0x62, setID: 0x3}, - 102: {cat: 0xf, setID: 0xf}, - 103: {cat: 0x1f, setID: 0x10}, - 104: {cat: 0x64, setID: 0x3}, - 105: {cat: 0xf, setID: 0x17}, - 106: {cat: 0x17, setID: 0x1}, - 107: {cat: 0x65, setID: 0x3}, - 108: {cat: 0xf, setID: 0x18}, - 109: {cat: 0x65, setID: 0x3}, - 110: {cat: 0xf, setID: 0x10}, - 111: {cat: 0x65, setID: 0x3}, - 112: {cat: 0x2f, setID: 0x7}, - 113: {cat: 0x3a, setID: 0x8}, - 114: {cat: 0x2f, setID: 0xf}, - 115: {cat: 0x3c, setID: 0x10}, - 116: {cat: 0x2d, setID: 0xb}, - 117: {cat: 0x2d, setID: 0x18}, - 118: {cat: 0x2d, setID: 0x19}, - 119: {cat: 0x2f, setID: 0x7}, - 120: {cat: 0x3a, setID: 0xc}, - 121: {cat: 0x2f, setID: 0x1a}, - 122: {cat: 0x3c, setID: 0xc}, - 123: {cat: 0x55, setID: 0x3}, - 124: {cat: 0x22, setID: 0x1}, - 125: {cat: 0x24, setID: 0x3}, - 126: {cat: 0x2c, setID: 0xd}, - 127: {cat: 0x2d, setID: 0xc}, - 128: {cat: 0xf, setID: 0x7}, - 129: {cat: 0x1f, setID: 0x8}, - 130: {cat: 0x62, setID: 0x3}, - 131: {cat: 0xf, setID: 0xf}, - 132: {cat: 0x1f, setID: 0x10}, - 133: {cat: 0x64, setID: 0x3}, - 134: {cat: 0xf, setID: 0xb}, - 135: {cat: 0x65, setID: 0x3}, - 136: {cat: 0xf, setID: 0x18}, - 137: {cat: 0x65, setID: 0x3}, - 138: {cat: 0xf, setID: 0x19}, - 139: {cat: 0x65, setID: 0x3}, - 140: {cat: 0x2f, setID: 0x7}, - 141: {cat: 0x3a, setID: 0x1b}, - 142: {cat: 0x2f, setID: 0x1c}, - 143: {cat: 0x3b, setID: 0x1d}, - 144: {cat: 0x2f, setID: 0x1e}, - 145: {cat: 0x3c, setID: 0x1f}, - 146: {cat: 0x37, setID: 0x3}, - 147: {cat: 0xa5, setID: 0x0}, - 148: {cat: 0x22, setID: 0x1}, - 149: {cat: 0x23, setID: 0x2}, - 150: {cat: 0x24, setID: 0x20}, - 151: {cat: 0x25, setID: 0x21}, - 152: {cat: 0xf, setID: 0x7}, - 153: {cat: 0x62, setID: 0x3}, - 154: {cat: 0xf, setID: 0x1c}, - 155: {cat: 0x63, setID: 0x3}, - 156: {cat: 0xf, setID: 0x22}, - 157: {cat: 0x64, setID: 0x3}, - 158: {cat: 0x75, setID: 0x3}, - 159: {cat: 0x21, setID: 0x3}, - 160: {cat: 0x22, setID: 0x1}, - 161: {cat: 0x23, setID: 0x2}, - 162: {cat: 0x2c, setID: 0x23}, - 163: {cat: 0x2d, setID: 0x5}, - 164: {cat: 0x21, setID: 0x3}, - 165: {cat: 0x22, setID: 0x1}, - 166: {cat: 0x23, setID: 0x2}, - 167: {cat: 0x24, setID: 0x24}, - 168: {cat: 0x25, setID: 0x25}, -} // Size: 362 bytes - -var cardinalIndex = []uint8{ // 37 elements - 0x00, 0x00, 0x02, 0x03, 0x05, 0x08, 0x09, 0x0b, - 0x0d, 0x0e, 0x10, 0x13, 0x17, 0x1a, 0x20, 0x2b, - 0x2e, 0x30, 0x32, 0x35, 0x3b, 0x45, 0x48, 0x4f, - 0x58, 0x5f, 0x64, 0x70, 0x77, 0x7c, 0x80, 0x8c, - 0x94, 0x98, 0x9f, 0xa4, 0xa9, -} // Size: 61 bytes - -var cardinalLangToIndex = []uint8{ // 747 elements - // Entry 0 - 3F - 0x00, 0x03, 0x03, 0x08, 0x08, 0x08, 0x00, 0x00, - 0x05, 0x05, 0x01, 0x01, 0x22, 0x22, 0x22, 0x22, - 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, - 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, - 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, - 0x22, 0x01, 0x01, 0x08, 0x08, 0x03, 0x03, 0x08, - 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x1b, 0x1b, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x05, 0x00, - // Entry 40 - 7F - 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x1f, - 0x1f, 0x08, 0x08, 0x14, 0x00, 0x00, 0x14, 0x14, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x19, 0x19, - 0x00, 0x00, 0x23, 0x23, 0x0a, 0x0a, 0x0a, 0x00, - 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x00, 0x00, 0x17, 0x17, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, - // Entry 80 - BF - 0x08, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - // Entry C0 - FF - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - // Entry 100 - 13F - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x03, 0x03, 0x08, 0x08, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x03, 0x03, 0x0d, 0x0d, 0x08, 0x08, 0x08, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - // Entry 140 - 17F - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x08, 0x08, - 0x03, 0x03, 0x20, 0x20, 0x15, 0x15, 0x03, 0x03, - 0x08, 0x08, 0x08, 0x08, 0x01, 0x01, 0x05, 0x00, - 0x00, 0x21, 0x21, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x18, 0x18, 0x01, 0x01, 0x14, 0x14, 0x14, - 0x17, 0x17, 0x08, 0x08, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x03, 0x03, - // Entry 180 - 1BF - 0x03, 0x03, 0x11, 0x00, 0x00, 0x00, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x08, 0x08, 0x02, 0x02, 0x08, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x10, 0x10, 0x08, 0x11, 0x11, 0x08, - 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x00, - // Entry 1C0 - 1FF - 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, - 0x08, 0x08, 0x0c, 0x0c, 0x08, 0x08, 0x08, 0x08, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x1d, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, - 0x11, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - // Entry 200 - 23F - 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x08, 0x05, 0x00, 0x00, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x05, 0x00, 0x00, 0x05, 0x05, 0x08, 0x1a, 0x1a, - 0x0e, 0x0e, 0x08, 0x08, 0x07, 0x09, 0x07, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, - // Entry 240 - 27F - 0x00, 0x13, 0x13, 0x13, 0x08, 0x08, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x08, - 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, - 0x11, 0x11, 0x11, 0x11, 0x08, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x12, 0x04, - 0x04, 0x19, 0x19, 0x16, 0x16, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x11, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x14, 0x14, - // Entry 280 - 2BF - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x08, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x05, 0x05, 0x05, 0x08, 0x08, 0x08, - 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x06, 0x06, 0x08, 0x08, 0x1e, 0x1e, 0x03, - 0x03, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, - // Entry 2C0 - 2FF - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x08, 0x05, 0x08, 0x08, - 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x03, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, -} // Size: 771 bytes - -var cardinalInclusionMasks = []uint64{ // 100 elements - // Entry 0 - 1F - 0x0000000400a00859, 0x0000000000a242d3, 0x000000001464e245, 0x000000194478e201, - 0x000000094478e401, 0x0000000905286001, 0x0000002905286401, 0x0000000a05286001, - 0x0000000a05286001, 0x0000000a45286401, 0x0000000a80a86801, 0x000000008a8251a1, - 0x00000000b605d021, 0x00000000c609d021, 0x00000000c609d421, 0x0000000085085021, - 0x0000000085085421, 0x0000000085085021, 0x0000000085085021, 0x00000000c5085421, - 0x0000000400800821, 0x00000000008000a1, 0x0000000014008021, 0x0000000044008021, - 0x0000000044008421, 0x0000000005000021, 0x0000000005000421, 0x0000000005000021, - 0x0000000005000021, 0x0000000045000421, 0x0000000000800821, 0x00000000008000a1, - // Entry 20 - 3F - 0x0000000014008021, 0x0000000044008021, 0x0000000044008421, 0x0000000005000021, - 0x0000000005000421, 0x0000000005000021, 0x0000000005000021, 0x0000000045000421, - 0x0000000400800821, 0x00000000008000a1, 0x0000000014008021, 0x0000000044008021, - 0x0000000044008421, 0x0000000005000021, 0x0000000005000421, 0x0000000005000021, - 0x0000000005000021, 0x0000000045000421, 0x0000000000800821, 0x00000000008000a1, - 0x0000000014008021, 0x0000000044008021, 0x0000000044008421, 0x0000000005000021, - 0x0000000005000421, 0x0000000005000021, 0x0000000005000021, 0x0000000045000421, - 0x0000000400800821, 0x00000000008000a1, 0x0000000014008021, 0x0000000044008021, - // Entry 40 - 5F - 0x0000000044008421, 0x0000000005000021, 0x0000000005000421, 0x0000000005000021, - 0x0000000005000021, 0x0000000045000421, 0x0000000080800821, 0x00000000888000a1, - 0x00000000b4008021, 0x00000000c4008021, 0x00000000c4008421, 0x0000000085000021, - 0x0000000085000421, 0x0000000085000021, 0x0000000085000021, 0x00000000c5000421, - 0x0000000400800821, 0x00000000008000a1, 0x0000000014008021, 0x0000000044008021, - 0x0000000044008421, 0x0000000005000021, 0x0000000005000421, 0x0000000005000021, - 0x0000000005000021, 0x0000000045000421, 0x0000000080800821, 0x00000000888000a1, - 0x00000000b4008021, 0x00000000c4008021, 0x00000000c4008421, 0x0000000085000021, - // Entry 60 - 7F - 0x0000000085000421, 0x0000000085000021, 0x0000000085000021, 0x00000000c5000421, -} // Size: 824 bytes - -// Slots used for cardinal: A9 of 0xFF rules; 25 of 0xFF indexes; 38 of 64 sets - -var tagToDecimal = []uint8{ // 747 elements +var tagToDecimal = []uint8{ // 754 elements // Entry 0 - 3F 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry 40 - 7F - 0x01, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, // Entry 80 - BF 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry C0 - FF 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, @@ -1080,10 +566,10 @@ var tagToDecimal = []uint8{ // 747 elements 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, + 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x0d, 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry 180 - 1BF 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, @@ -1091,25 +577,25 @@ var tagToDecimal = []uint8{ // 747 elements 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, + 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry 1C0 - 1FF 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, - 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x05, 0x05, 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry 200 - 23F 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, - 0x04, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x05, + 0x01, 0x01, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Entry 240 - 27F @@ -1124,8 +610,8 @@ var tagToDecimal = []uint8{ // 747 elements // Entry 280 - 2BF 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, - 0x04, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, @@ -1136,10 +622,11 @@ var tagToDecimal = []uint8{ // 747 elements 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, -} // Size: 771 bytes + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, +} // Size: 778 bytes -var tagToScientific = []uint8{ // 747 elements +var tagToScientific = []uint8{ // 754 elements // Entry 0 - 3F 0x02, 0x02, 0x09, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, @@ -1189,9 +676,9 @@ var tagToScientific = []uint8{ // 747 elements 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x0c, 0x0c, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x0c, 0x0c, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0d, + 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // Entry 180 - 1BF @@ -1204,12 +691,12 @@ var tagToScientific = []uint8{ // 747 elements 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // Entry 1C0 - 1FF - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x0e, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x0c, 0x0c, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // Entry 200 - 23F @@ -1217,8 +704,8 @@ var tagToScientific = []uint8{ // 747 elements 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x0c, 0x02, 0x02, 0x0c, 0x0c, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0d, + 0x02, 0x02, 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // Entry 240 - 27F @@ -1226,8 +713,8 @@ var tagToScientific = []uint8{ // 747 elements 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e, - 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // Entry 280 - 2BF @@ -1245,125 +732,127 @@ var tagToScientific = []uint8{ // 747 elements 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, -} // Size: 771 bytes + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, +} // Size: 778 bytes -var tagToPercent = []uint8{ // 747 elements +var tagToPercent = []uint8{ // 754 elements // Entry 0 - 3F - 0x03, 0x03, 0x0a, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x05, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x0a, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // Entry 40 - 7F - 0x03, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x06, - 0x06, 0x05, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, - 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x03, - 0x03, 0x06, 0x06, 0x06, 0x03, 0x06, 0x03, 0x06, - 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, - 0x03, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, + 0x03, 0x03, 0x06, 0x06, 0x03, 0x04, 0x04, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, + 0x04, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x07, 0x07, 0x04, 0x04, 0x04, // Entry 80 - BF - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x06, 0x03, 0x06, 0x03, 0x03, 0x06, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x03, 0x04, 0x03, 0x04, 0x04, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // Entry C0 - FF + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, + 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, + // Entry 100 - 13F + 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x0b, + 0x0b, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x06, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x03, 0x06, 0x06, 0x03, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, - // Entry 100 - 13F - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x03, 0x03, 0x0b, 0x0b, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x06, 0x06, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // Entry 140 - 17F - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x06, 0x06, 0x06, 0x06, 0x05, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x05, 0x05, 0x03, 0x03, 0x03, - 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, + 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, + 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // Entry 180 - 1BF - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x06, 0x06, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, - 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x05, 0x05, 0x05, 0x05, 0x03, 0x03, - 0x03, 0x03, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x06, 0x06, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, // Entry 1C0 - 1FF - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x06, 0x06, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, // Entry 200 - 23F - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x06, 0x06, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x05, 0x05, 0x03, 0x03, 0x03, - 0x05, 0x03, 0x03, 0x05, 0x05, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x06, 0x06, 0x04, 0x04, 0x04, 0x06, + 0x04, 0x04, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // Entry 240 - 27F - 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, + 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // Entry 280 - 2BF - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, - 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, - 0x03, 0x03, 0x03, 0x0f, 0x0f, 0x0f, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, - 0x05, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, + 0x04, 0x04, 0x0f, 0x0f, 0x0f, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, // Entry 2C0 - 2FF - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, -} // Size: 771 bytes + 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, +} // Size: 778 bytes -var formats = []Format{Format{Affix: "", +var formats = []Pattern{Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x0, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x0, + DigitShift: 0x0, GroupingSize: [2]uint8{0x0, 0x0}, Flags: 0x0, @@ -1374,13 +863,13 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "", + Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x9, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x9, + DigitShift: 0x0, GroupingSize: [2]uint8{0x3, 0x0}, Flags: 0x0, @@ -1391,13 +880,13 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "", + Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x3, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x3, + DigitShift: 0x0, GroupingSize: [2]uint8{0x0, 0x0}, Flags: 0x0, @@ -1408,13 +897,13 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x1}, - Format{Affix: "\x00\x01%", + Pattern{Affix: "\x00\x03\u00a0%", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0x7, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x6, + DigitShift: 0x2, GroupingSize: [2]uint8{0x3, 0x0}, Flags: 0x0, @@ -1425,49 +914,49 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "", + Pattern{Affix: "\x00\x01%", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x6, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0xc, + DigitShift: 0x2, GroupingSize: [2]uint8{0x3, - 0x2}, + 0x0}, Flags: 0x0, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x3, + MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "\x00\x01%", + Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0xc, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x9, + DigitShift: 0x0, GroupingSize: [2]uint8{0x3, 0x2}, Flags: 0x0, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, + MaxFractionDigits: 0x3, MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "\x00\x03\u00a0%", + Pattern{Affix: "\x00\x01%", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0x9, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x7, + DigitShift: 0x2, GroupingSize: [2]uint8{0x3, - 0x0}, + 0x2}, Flags: 0x0, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, @@ -1476,13 +965,13 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "\x00\x03\u00a0%", + Pattern{Affix: "\x00\x03\u00a0%", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0xa, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0xa, + DigitShift: 0x2, GroupingSize: [2]uint8{0x3, 0x2}, Flags: 0x0, @@ -1493,13 +982,13 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "", + Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x9, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x9, + DigitShift: 0x0, GroupingSize: [2]uint8{0x0, 0x0}, Flags: 0x0, @@ -1510,16 +999,16 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "", + Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0xd, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0xd, + DigitShift: 0x0, GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x2, + Flags: 0x4, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x6, @@ -1527,13 +1016,13 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x3}, - Format{Affix: "\x00\x01%", + Pattern{Affix: "\x00\x01%", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0x3, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x3, + DigitShift: 0x2, GroupingSize: [2]uint8{0x0, 0x0}, Flags: 0x0, @@ -1544,14 +1033,14 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "\x03%\u00a0\x00", + Pattern{Affix: "\x03%\u00a0\x00", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0x7, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x7, - GroupingSize: [2]uint8{0x0, + DigitShift: 0x2, + GroupingSize: [2]uint8{0x3, 0x0}, Flags: 0x0, MinIntegerDigits: 0x1, @@ -1561,47 +1050,47 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "\x01[\x01]", + Pattern{Affix: "\x03%\u00a0\x00\x04%\u00a0-\x00", Offset: 0x0, - NegOffset: 0x0, - Multiplier: 0x0, + NegOffset: 0x5, + FormatWidth: 0x7, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x5, - GroupingSize: [2]uint8{0x0, + DigitShift: 0x2, + GroupingSize: [2]uint8{0x3, 0x0}, Flags: 0x0, - MinIntegerDigits: 0x0, - MaxIntegerDigits: 0x1, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, - MinExponentDigits: 0x1}, - Format{Affix: "", + MinExponentDigits: 0x0}, + Pattern{Affix: "\x01[\x01]", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x5, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x6, + DigitShift: 0x0, GroupingSize: [2]uint8{0x0, 0x0}, Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, + MinIntegerDigits: 0x0, + MaxIntegerDigits: 0x1, MinFractionDigits: 0x0, - MaxFractionDigits: 0x3, + MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Format{Affix: "", + MinExponentDigits: 0x1}, + Pattern{Affix: "", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x0, + FormatWidth: 0x1, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x1, + DigitShift: 0x0, GroupingSize: [2]uint8{0x0, 0x0}, Flags: 0x0, @@ -1612,14 +1101,14 @@ var formats = []Format{Format{Affix: "", MinSignificantDigits: 0x0, MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Format{Affix: "\x01%\x00", + Pattern{Affix: "\x01%\x00", Offset: 0x0, NegOffset: 0x0, - Multiplier: 0x64, + FormatWidth: 0x6, RoundIncrement: 0x0, PadRune: 0, - FormatWidth: 0x6, - GroupingSize: [2]uint8{0x0, + DigitShift: 0x2, + GroupingSize: [2]uint8{0x3, 0x0}, Flags: 0x0, MinIntegerDigits: 0x1, @@ -1630,4 +1119,4 @@ var formats = []Format{Format{Affix: "", MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}} -// Total table size 10707 bytes (10KiB); checksum: D6653B23 +// Total table size 7101 bytes (6KiB); checksum: 5190D0B3 diff --git a/vendor/golang.org/x/text/internal/tables.go b/vendor/golang.org/x/text/internal/tables.go index 4f9d96f827..a53042aab3 100644 --- a/vendor/golang.org/x/text/internal/tables.go +++ b/vendor/golang.org/x/text/internal/tables.go @@ -1,116 +1,117 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package internal // Parent maps a compact index of a tag to the compact index of the parent of // this tag. -var Parent = []uint16{ // 747 elements +var Parent = []uint16{ // 754 elements // Entry 0 - 3F - 0x0000, 0x0052, 0x00e3, 0x0000, 0x0003, 0x0003, 0x0000, 0x0006, + 0x0000, 0x0053, 0x00e5, 0x0000, 0x0003, 0x0003, 0x0000, 0x0006, 0x0000, 0x0008, 0x0000, 0x000a, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x0000, 0x0029, 0x0000, 0x002b, 0x0000, 0x002d, 0x0000, - 0x0000, 0x0030, 0x002f, 0x002f, 0x0000, 0x0034, 0x0000, 0x0036, - 0x0000, 0x0038, 0x0000, 0x003a, 0x0000, 0x003c, 0x0000, 0x0000, + 0x000c, 0x0000, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x002e, + 0x0000, 0x0000, 0x0031, 0x0030, 0x0030, 0x0000, 0x0035, 0x0000, + 0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x003d, 0x0000, // Entry 40 - 7F - 0x003f, 0x0000, 0x0041, 0x0041, 0x0000, 0x0044, 0x0044, 0x0000, - 0x0047, 0x0000, 0x0049, 0x0000, 0x0000, 0x004c, 0x004b, 0x004b, - 0x0000, 0x0050, 0x0050, 0x0050, 0x0050, 0x0000, 0x0055, 0x0000, - 0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x005b, 0x0000, 0x005e, - 0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0064, 0x0000, - 0x0067, 0x0000, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0000, 0x0070, 0x0000, 0x0072, 0x0000, 0x0074, 0x0000, 0x0000, - 0x0077, 0x0000, 0x0079, 0x0000, 0x007b, 0x0000, 0x007d, 0x007d, + 0x0000, 0x0040, 0x0000, 0x0042, 0x0042, 0x0000, 0x0045, 0x0045, + 0x0000, 0x0048, 0x0000, 0x004a, 0x0000, 0x0000, 0x004d, 0x004c, + 0x004c, 0x0000, 0x0051, 0x0051, 0x0051, 0x0051, 0x0000, 0x0056, + 0x0000, 0x0058, 0x0000, 0x005a, 0x0000, 0x005c, 0x005c, 0x0000, + 0x005f, 0x0000, 0x0061, 0x0000, 0x0063, 0x0000, 0x0065, 0x0065, + 0x0000, 0x0068, 0x0000, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x0000, 0x0072, 0x0000, 0x0074, 0x0000, 0x0076, + 0x0000, 0x0000, 0x0079, 0x0000, 0x007b, 0x0000, 0x007d, 0x0000, // Entry 80 - BF - 0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0084, 0x0084, 0x0084, - 0x0083, 0x0085, 0x0084, 0x0084, 0x0084, 0x0083, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0085, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0085, 0x0084, 0x0085, 0x0084, 0x0084, 0x0085, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0083, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0083, 0x0084, 0x0083, 0x0084, 0x0084, 0x0084, + 0x007f, 0x007f, 0x0000, 0x0082, 0x0082, 0x0000, 0x0085, 0x0086, + 0x0086, 0x0086, 0x0085, 0x0087, 0x0086, 0x0086, 0x0086, 0x0085, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0087, 0x0086, + 0x0086, 0x0086, 0x0086, 0x0087, 0x0086, 0x0087, 0x0086, 0x0086, + 0x0087, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, + 0x0086, 0x0086, 0x0085, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0085, 0x0086, 0x0085, 0x0086, // Entry C0 - FF - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0085, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0083, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0085, 0x0084, 0x0084, 0x0085, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0083, 0x0083, 0x0084, 0x0084, 0x0083, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0000, 0x00ec, 0x0000, 0x00ee, - 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - 0x00ee, 0x00ef, 0x00ee, 0x00ee, 0x00ef, 0x00ef, 0x00ee, 0x00ef, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0087, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0085, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0087, 0x0086, 0x0086, + 0x0087, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, + 0x0086, 0x0086, 0x0086, 0x0086, 0x0085, 0x0085, 0x0086, 0x0086, + 0x0085, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0000, 0x00ee, + 0x0000, 0x00f0, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, + 0x00f1, 0x00f1, 0x00f1, 0x00f0, 0x00f1, 0x00f0, 0x00f0, 0x00f1, // Entry 100 - 13F - 0x00ef, 0x00ef, 0x00ef, 0x00ee, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - 0x00ef, 0x00ef, 0x0000, 0x010a, 0x0000, 0x010c, 0x0000, 0x010e, - 0x0000, 0x0110, 0x0110, 0x0000, 0x0113, 0x0113, 0x0113, 0x0113, - 0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x011c, 0x011c, 0x0000, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x00f1, 0x00f0, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f0, 0x00f1, + 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x0000, 0x010d, 0x0000, + 0x010f, 0x0000, 0x0111, 0x0000, 0x0113, 0x0113, 0x0000, 0x0116, + 0x0116, 0x0116, 0x0116, 0x0000, 0x011b, 0x0000, 0x011d, 0x0000, + 0x011f, 0x011f, 0x0000, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, // Entry 140 - 17F - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0000, 0x014e, - 0x0000, 0x0150, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156, - 0x0000, 0x0158, 0x0158, 0x0158, 0x0000, 0x015c, 0x0000, 0x0000, - 0x015f, 0x0000, 0x0161, 0x0000, 0x0163, 0x0163, 0x0163, 0x0000, - 0x0167, 0x0000, 0x0169, 0x0000, 0x016b, 0x0000, 0x016d, 0x016d, - 0x0000, 0x0170, 0x0000, 0x0172, 0x0000, 0x0174, 0x0000, 0x0176, - 0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e, + 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0000, 0x0151, 0x0000, 0x0153, 0x0000, 0x0155, 0x0000, + 0x0157, 0x0000, 0x0159, 0x0000, 0x015b, 0x015b, 0x015b, 0x0000, + 0x015f, 0x0000, 0x0000, 0x0162, 0x0000, 0x0164, 0x0000, 0x0166, + 0x0166, 0x0166, 0x0000, 0x016a, 0x0000, 0x016c, 0x0000, 0x016e, + 0x0000, 0x0170, 0x0170, 0x0000, 0x0173, 0x0000, 0x0175, 0x0000, + 0x0177, 0x0000, 0x0179, 0x0000, 0x017b, 0x0000, 0x017d, 0x0000, // Entry 180 - 1BF - 0x017e, 0x017e, 0x0000, 0x0000, 0x0183, 0x0000, 0x0000, 0x0186, - 0x0000, 0x0188, 0x0000, 0x0000, 0x018b, 0x0000, 0x018d, 0x0000, - 0x0000, 0x0190, 0x0000, 0x0000, 0x0193, 0x0000, 0x0195, 0x0000, + 0x017f, 0x0000, 0x0181, 0x0181, 0x0181, 0x0181, 0x0000, 0x0000, + 0x0187, 0x0000, 0x0000, 0x018a, 0x0000, 0x018c, 0x0000, 0x0000, + 0x018f, 0x0000, 0x0191, 0x0000, 0x0000, 0x0194, 0x0000, 0x0000, 0x0197, 0x0000, 0x0199, 0x0000, 0x019b, 0x0000, 0x019d, 0x0000, 0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000, - 0x01a7, 0x01a7, 0x0000, 0x01aa, 0x0000, 0x01ac, 0x0000, 0x01ae, - 0x0000, 0x01b0, 0x0000, 0x01b2, 0x0000, 0x0000, 0x01b5, 0x0000, - 0x01b7, 0x0000, 0x01b9, 0x0000, 0x01bb, 0x0000, 0x01bd, 0x0000, + 0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x01ab, 0x0000, 0x01ae, + 0x0000, 0x01b0, 0x0000, 0x01b2, 0x0000, 0x01b4, 0x0000, 0x01b6, + 0x0000, 0x0000, 0x01b9, 0x0000, 0x01bb, 0x0000, 0x01bd, 0x0000, // Entry 1C0 - 1FF - 0x01bf, 0x0000, 0x01c1, 0x01c1, 0x01c1, 0x01c1, 0x0000, 0x01c6, - 0x0000, 0x01c8, 0x01c8, 0x0000, 0x01cb, 0x0000, 0x01cd, 0x0000, - 0x01cf, 0x0000, 0x01d1, 0x0000, 0x01d3, 0x0000, 0x01d5, 0x01d5, - 0x0000, 0x01d8, 0x0000, 0x01da, 0x0000, 0x01dc, 0x0000, 0x01de, + 0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x01c5, + 0x01c5, 0x01c5, 0x0000, 0x01ca, 0x0000, 0x01cc, 0x01cc, 0x0000, + 0x01cf, 0x0000, 0x01d1, 0x0000, 0x01d3, 0x0000, 0x01d5, 0x0000, + 0x01d7, 0x0000, 0x01d9, 0x01d9, 0x0000, 0x01dc, 0x0000, 0x01de, 0x0000, 0x01e0, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6, - 0x0000, 0x01e8, 0x0000, 0x01ea, 0x01ea, 0x01ea, 0x0000, 0x01ee, - 0x0000, 0x01f0, 0x0000, 0x01f2, 0x0000, 0x01f4, 0x0000, 0x0000, - 0x01f7, 0x0000, 0x01f9, 0x01f9, 0x0000, 0x01fc, 0x0000, 0x01fe, + 0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee, + 0x01ee, 0x01ee, 0x0000, 0x01f2, 0x0000, 0x01f4, 0x0000, 0x01f6, + 0x0000, 0x01f8, 0x0000, 0x0000, 0x01fb, 0x0000, 0x01fd, 0x01fd, // Entry 200 - 23F - 0x01fe, 0x0000, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, - 0x0201, 0x0000, 0x0209, 0x0000, 0x020b, 0x0000, 0x020d, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0213, 0x0000, 0x0000, 0x0216, - 0x0000, 0x0218, 0x0218, 0x0000, 0x021b, 0x0000, 0x021d, 0x021d, - 0x0000, 0x0000, 0x0221, 0x0220, 0x0220, 0x0000, 0x0000, 0x0226, - 0x0000, 0x0228, 0x0000, 0x022a, 0x0000, 0x0236, 0x022c, 0x0236, - 0x0236, 0x0236, 0x0236, 0x0236, 0x0236, 0x0236, 0x022c, 0x0236, - 0x0236, 0x0000, 0x0239, 0x0239, 0x0239, 0x0000, 0x023d, 0x0000, + 0x0000, 0x0200, 0x0000, 0x0202, 0x0202, 0x0000, 0x0205, 0x0205, + 0x0000, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, + 0x0000, 0x0210, 0x0000, 0x0212, 0x0000, 0x0214, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x021a, 0x0000, 0x0000, 0x021d, 0x0000, + 0x021f, 0x021f, 0x0000, 0x0222, 0x0000, 0x0224, 0x0224, 0x0000, + 0x0000, 0x0228, 0x0227, 0x0227, 0x0000, 0x0000, 0x022d, 0x0000, + 0x022f, 0x0000, 0x0231, 0x0000, 0x023d, 0x0233, 0x023d, 0x023d, + 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x0233, 0x023d, 0x023d, // Entry 240 - 27F - 0x023f, 0x0000, 0x0241, 0x0241, 0x0000, 0x0244, 0x0000, 0x0246, - 0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0000, 0x024d, 0x0000, - 0x024f, 0x0000, 0x0251, 0x0000, 0x0253, 0x0000, 0x0255, 0x0000, - 0x0000, 0x0258, 0x0258, 0x0258, 0x0000, 0x025c, 0x0000, 0x025e, - 0x0000, 0x0260, 0x0000, 0x0000, 0x0263, 0x0262, 0x0262, 0x0000, - 0x0267, 0x0000, 0x0269, 0x0000, 0x026b, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0270, 0x0000, 0x0000, 0x0273, 0x0000, 0x0275, 0x0275, - 0x0275, 0x0275, 0x0000, 0x027a, 0x027a, 0x027a, 0x0000, 0x027e, + 0x0000, 0x0240, 0x0240, 0x0240, 0x0000, 0x0244, 0x0000, 0x0246, + 0x0000, 0x0248, 0x0248, 0x0000, 0x024b, 0x0000, 0x024d, 0x024d, + 0x024d, 0x024d, 0x024d, 0x024d, 0x0000, 0x0254, 0x0000, 0x0256, + 0x0000, 0x0258, 0x0000, 0x025a, 0x0000, 0x025c, 0x0000, 0x0000, + 0x025f, 0x025f, 0x025f, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000, + 0x0267, 0x0000, 0x0000, 0x026a, 0x0269, 0x0269, 0x0000, 0x026e, + 0x0000, 0x0270, 0x0000, 0x0272, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0277, 0x0000, 0x0000, 0x027a, 0x0000, 0x027c, 0x027c, 0x027c, // Entry 280 - 2BF - 0x027e, 0x027e, 0x027e, 0x027e, 0x0000, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x028c, 0x028c, 0x028c, - 0x0000, 0x0290, 0x0290, 0x0290, 0x0290, 0x0000, 0x0000, 0x0296, - 0x0296, 0x0296, 0x0296, 0x0000, 0x029b, 0x0000, 0x029d, 0x029d, - 0x0000, 0x02a0, 0x0000, 0x02a2, 0x02a2, 0x0000, 0x0000, 0x02a6, - 0x0000, 0x0000, 0x02a9, 0x0000, 0x02ab, 0x02ab, 0x0000, 0x0000, - 0x02af, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x0000, - 0x02b7, 0x02b7, 0x0000, 0x0000, 0x02bb, 0x0000, 0x02bd, 0x02ba, + 0x027c, 0x0000, 0x0281, 0x0281, 0x0281, 0x0000, 0x0285, 0x0285, + 0x0285, 0x0285, 0x0285, 0x0000, 0x028b, 0x028b, 0x028b, 0x028b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0293, 0x0293, 0x0293, 0x0000, + 0x0297, 0x0297, 0x0297, 0x0297, 0x0000, 0x0000, 0x029d, 0x029d, + 0x029d, 0x029d, 0x0000, 0x02a2, 0x0000, 0x02a4, 0x02a4, 0x0000, + 0x02a7, 0x0000, 0x02a9, 0x02a9, 0x0000, 0x0000, 0x02ad, 0x0000, + 0x0000, 0x02b0, 0x0000, 0x02b2, 0x02b2, 0x0000, 0x0000, 0x02b6, + 0x0000, 0x02b8, 0x0000, 0x02ba, 0x0000, 0x02bc, 0x0000, 0x02be, // Entry 2C0 - 2FF - 0x02ba, 0x0000, 0x0000, 0x02c2, 0x02c1, 0x02c1, 0x0000, 0x0000, - 0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x0000, 0x02ce, - 0x0000, 0x0000, 0x0000, 0x02d2, 0x0000, 0x02d4, 0x0000, 0x02d6, - 0x0000, 0x02d8, 0x02d8, 0x0000, 0x02db, 0x0000, 0x02dd, 0x0000, - 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x0000, 0x02e5, 0x02e6, - 0x02e5, 0x0000, 0x02e9, -} // Size: 1518 bytes + 0x02be, 0x0000, 0x0000, 0x02c2, 0x0000, 0x02c4, 0x02c1, 0x02c1, + 0x0000, 0x0000, 0x02c9, 0x02c8, 0x02c8, 0x0000, 0x0000, 0x02ce, + 0x0000, 0x02d0, 0x0000, 0x02d2, 0x0000, 0x0000, 0x02d5, 0x0000, + 0x0000, 0x0000, 0x02d9, 0x0000, 0x02db, 0x0000, 0x02dd, 0x0000, + 0x02df, 0x02df, 0x0000, 0x02e2, 0x0000, 0x02e4, 0x0000, 0x02e6, + 0x02e6, 0x02e6, 0x02e6, 0x02e6, 0x0000, 0x02ec, 0x02ed, 0x02ec, + 0x0000, 0x02f0, +} // Size: 1532 bytes -// Total table size 1518 bytes (1KiB); checksum: 836CD65C +// Total table size 1532 bytes (1KiB); checksum: 90718A2 diff --git a/vendor/golang.org/x/text/internal/testtext/flag.go b/vendor/golang.org/x/text/internal/testtext/flag.go index 1884f34dd0..45b32b2ad1 100644 --- a/vendor/golang.org/x/text/internal/testtext/flag.go +++ b/vendor/golang.org/x/text/internal/testtext/flag.go @@ -16,7 +16,7 @@ var long = flag.Bool("long", false, // SkipIfNotLong returns whether long tests should be performed. func SkipIfNotLong(t *testing.T) { - if !gen.IsLocal() && !*long { + if testing.Short() || !(gen.IsLocal() || *long) { t.Skip("skipping test to prevent downloading; to run use -long or use -local or UNICODE_DIR to specify a local source") } } diff --git a/vendor/golang.org/x/text/internal/testtext/go1_6.go b/vendor/golang.org/x/text/internal/testtext/go1_6.go index 7a14791531..7b23847381 100644 --- a/vendor/golang.org/x/text/internal/testtext/go1_6.go +++ b/vendor/golang.org/x/text/internal/testtext/go1_6.go @@ -8,7 +8,16 @@ package testtext import "testing" -func Run(t *testing.T, name string, fn func(t *testing.T)) { +func Run(t *testing.T, name string, fn func(t *testing.T)) bool { t.Logf("Running %s...", name) fn(t) + return t.Failed() +} + +// Bench runs the given benchmark function. This pre-1.7 implementation renders +// the measurement useless, but allows the code to be compiled at least. +func Bench(b *testing.B, name string, fn func(b *testing.B)) bool { + b.Logf("Running %s...", name) + fn(b) + return b.Failed() } diff --git a/vendor/golang.org/x/text/internal/testtext/go1_7.go b/vendor/golang.org/x/text/internal/testtext/go1_7.go index ccb5f36f08..66f9cf7876 100644 --- a/vendor/golang.org/x/text/internal/testtext/go1_7.go +++ b/vendor/golang.org/x/text/internal/testtext/go1_7.go @@ -8,6 +8,10 @@ package testtext import "testing" -func Run(t *testing.T, name string, fn func(t *testing.T)) { - t.Run(name, fn) +func Run(t *testing.T, name string, fn func(t *testing.T)) bool { + return t.Run(name, fn) +} + +func Bench(b *testing.B, name string, fn func(b *testing.B)) bool { + return b.Run(name, fn) } diff --git a/vendor/golang.org/x/text/internal/ucd/ucd.go b/vendor/golang.org/x/text/internal/ucd/ucd.go index 2b0d1a1c16..309e8d8b16 100644 --- a/vendor/golang.org/x/text/internal/ucd/ucd.go +++ b/vendor/golang.org/x/text/internal/ucd/ucd.go @@ -13,7 +13,6 @@ import ( "bufio" "bytes" "errors" - "fmt" "io" "log" "regexp" @@ -78,6 +77,14 @@ func Part(f func(p *Parser)) Option { } } +// The CommentHandler option passes comments that are on a line by itself to +// a given handler. +func CommentHandler(f func(s string)) Option { + return func(p *Parser) { + p.commentHandler = f + } +} + // A Parser parses Unicode Character Database (UCD) files. type Parser struct { scanner *bufio.Scanner @@ -92,7 +99,8 @@ type Parser struct { parsedRange bool rangeStart, rangeEnd rune - partHandler func(p *Parser) + partHandler func(p *Parser) + commentHandler func(s string) } func (p *Parser) setError(err error) { @@ -103,7 +111,6 @@ func (p *Parser) setError(err error) { func (p *Parser) getField(i int) []byte { if i >= len(p.field) { - p.setError(fmt.Errorf("ucd: index of field %d out of bounds", i)) return nil } return p.field[i] @@ -138,7 +145,13 @@ func (p *Parser) Next() bool { for p.scanner.Scan() { b := p.scanner.Bytes() - if len(b) == 0 || b[0] == '#' { + if len(b) == 0 { + continue + } + if b[0] == '#' { + if p.commentHandler != nil { + p.commentHandler(strings.TrimSpace(string(b[1:]))) + } continue } diff --git a/vendor/golang.org/x/text/language/common.go b/vendor/golang.org/x/text/language/common.go index a255bb0a50..9d86e18554 100644 --- a/vendor/golang.org/x/text/language/common.go +++ b/vendor/golang.org/x/text/language/common.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package language diff --git a/vendor/golang.org/x/text/language/data_test.go b/vendor/golang.org/x/text/language/data_test.go index 738df46783..a1203f2f51 100644 --- a/vendor/golang.org/x/text/language/data_test.go +++ b/vendor/golang.org/x/text/language/data_test.go @@ -40,7 +40,9 @@ var matchTests = []matchTest{ {"en", "sh"}, {"en", "hr"}, {"en", "bs"}, - {"en", "nl-Cyrl"}, + // TODO: consider if the following match is a good one. + // Due to new script first rule, which maybe should be an option. + {"sr", "nl-Cyrl"}, }, }, { @@ -228,6 +230,14 @@ var matchTests = []matchTest{ {"nl-NL", "nl-NL"}, }, }, + { + "region may replace matched if matched is enclosing", + "es-419,es", + []struct{ match, desired string }{ + {"es-MX", "es-MX"}, + {"es", "es-SG"}, + }, + }, { "more specific region wins over more specific script", "nl, nl-Latn, nl-NL, nl-BE", @@ -265,7 +275,7 @@ var matchTests = []matchTest{ "en, en-GB, es-ES, es-419", []struct{ match, desired string }{ {"en-GB", "en-AU"}, - {"es-419", "es-MX"}, + {"es-MX", "es-MX"}, {"es-ES", "es-PT"}, }, }, @@ -355,6 +365,7 @@ var matchTests = []matchTest{ "en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK", []struct{ match, desired string }{ {"en-GB", "en-150"}, + // {"en-GB", "en-001"}, // TODO: currently en, should probably be en-GB {"en-GB", "en-AU"}, {"en-GB", "en-BE"}, {"en-GB", "en-GG"}, @@ -370,26 +381,27 @@ var matchTests = []matchTest{ {"en-GB", "en-SG"}, {"en-GB", "en-DE"}, {"en-GB", "en-MT"}, - {"es-419", "es-AR"}, - {"es-419", "es-BO"}, - {"es-419", "es-CL"}, - {"es-419", "es-CO"}, - {"es-419", "es-CR"}, - {"es-419", "es-CU"}, - {"es-419", "es-DO"}, - {"es-419", "es-EC"}, - {"es-419", "es-GT"}, - {"es-419", "es-HN"}, - {"es-419", "es-MX"}, - {"es-419", "es-NI"}, - {"es-419", "es-PA"}, - {"es-419", "es-PE"}, - {"es-419", "es-PR"}, - {"es-419", "es-PY"}, - {"es-419", "es-SV"}, - {"es-419", "es-US"}, - {"es-419", "es-UY"}, - {"es-419", "es-VE"}, + {"es-AR", "es-AR"}, + {"es-BO", "es-BO"}, + {"es-CL", "es-CL"}, + {"es-CO", "es-CO"}, + {"es-CR", "es-CR"}, + {"es-CU", "es-CU"}, + {"es-DO", "es-DO"}, + {"es-EC", "es-EC"}, + {"es-GT", "es-GT"}, + {"es-HN", "es-HN"}, + {"es-MX", "es-MX"}, + {"es-NI", "es-NI"}, + {"es-PA", "es-PA"}, + {"es-PE", "es-PE"}, + {"es-PR", "es-PR"}, + {"es", "es-PT"}, + {"es-PY", "es-PY"}, + {"es-SV", "es-SV"}, + {"es-419", "es-US"}, // US is not in Latin America, so don't make more specific. + {"es-UY", "es-UY"}, + {"es-VE", "es-VE"}, {"pt-PT", "pt-AO"}, {"pt-PT", "pt-CV"}, {"pt-PT", "pt-GW"}, @@ -397,9 +409,6 @@ var matchTests = []matchTest{ {"pt-PT", "pt-MZ"}, {"pt-PT", "pt-ST"}, {"pt-PT", "pt-TL"}, - // TODO for CLDR 24+ - // - en-001 - // - {"zh-Hant-HK", "zh-Hant-MO"}, }, }, // Options and variants are inherited from user-defined settings. diff --git a/vendor/golang.org/x/text/language/display/display_test.go b/vendor/golang.org/x/text/language/display/display_test.go index 3edbca4435..38aa87591a 100644 --- a/vendor/golang.org/x/text/language/display/display_test.go +++ b/vendor/golang.org/x/text/language/display/display_test.go @@ -10,6 +10,7 @@ import ( "testing" "unicode" + "golang.org/x/text/internal/testtext" "golang.org/x/text/language" ) @@ -37,14 +38,16 @@ func TestValues(t *testing.T) { // checkDefined checks that a value exists in a Namer. checkDefined := func(x interface{}, namers []testcase) { for _, n := range namers { - if n.n.Name(x) == "" { - // As of version 28 there is no data for az-Arab in English, - // although there is useful data in other languages. - if x.(fmt.Stringer).String() == "az-Arab" { - continue + testtext.Run(t, fmt.Sprintf("%s.Name(%s)", n.kind, x), func(t *testing.T) { + if n.n.Name(x) == "" { + // As of version 28 there is no data for az-Arab in English, + // although there is useful data in other languages. + if x.(fmt.Stringer).String() == "az-Arab" { + return + } + t.Errorf("supported but no result") } - t.Errorf("%s.Name(%s): supported but no result", n.kind, x) - } + }) } } // checkUnsupported checks that a value does not exist in a Namer. @@ -325,7 +328,12 @@ func TestTag(t *testing.T) { }{ {"agq", "sr", ""}, // sr is in Value.Languages(), but is not supported by agq. {"nl", "nl", "Nederlands"}, - {"nl", "nl-BE", "Vlaams"}, + // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called + // Flemish in English, though. TODO: check if this is a CLDR bug. + // {"nl", "nl-BE", "Vlaams"}, + {"nl", "nl-BE", "Nederlands (België)"}, + {"nl", "vls", "West-Vlaams"}, + {"en", "nl-BE", "Flemish"}, {"en", "en", "English"}, {"en", "en-GB", "British English"}, {"en", "en-US", "American English"}, // American English in CLDR 24+ @@ -357,7 +365,7 @@ func TestTag(t *testing.T) { // also give results more in line with the expectations if users // explicitly use "sh". {"sr-Latn", "sr-ME", "srpski (Crna Gora)"}, - {"sr-Latn", "sr-Latn-ME", "Srpskohrvatski (Crna Gora)"}, + {"sr-Latn", "sr-Latn-ME", "srpskohrvatski (Crna Gora)"}, // Double script and region {"nl", "en-Cyrl-BE", "Engels (Cyrillisch, België)"}, // Canonical equivalents. @@ -384,8 +392,14 @@ func TestLanguage(t *testing.T) { name string }{ {"agq", "sr", ""}, // sr is in Value.Languages(), but is not supported by agq. + // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called + // Flemish in English, though. TODO: this is probably incorrect. + // West-Vlaams (vls) is not Vlaams. West-Vlaams could be considered its + // own language, whereas Vlaams is generally Dutch. So expect to have + // to change these tests back. {"nl", "nl", "Nederlands"}, - {"nl", "nl-BE", "Vlaams"}, + {"nl", "vls", "West-Vlaams"}, + {"nl", "nl-BE", "Nederlands"}, {"en", "pt", "Portuguese"}, {"en", "pt-PT", "European Portuguese"}, {"en", "pt-BR", "Brazilian Portuguese"}, @@ -418,15 +432,17 @@ func TestLanguage(t *testing.T) { {"en", "sr-Latn-ME", "Serbo-Croatian"}, // See comments in TestTag. } for i, tt := range tests { - d := Languages(language.Raw.MustParse(tt.dict)) - if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name { - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.tag, n, tt.name) - } - if len(tt.tag) <= 3 { - if n := d.Name(language.MustParseBase(tt.tag)); n != tt.name { - t.Errorf("%d:%s:base(%s): was %q; want %q", i, tt.dict, tt.tag, n, tt.name) + testtext.Run(t, tt.dict+"/"+tt.tag, func(t *testing.T) { + d := Languages(language.Raw.MustParse(tt.dict)) + if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name { + t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.tag, n, tt.name) } - } + if len(tt.tag) <= 3 { + if n := d.Name(language.MustParseBase(tt.tag)); n != tt.name { + t.Errorf("%d:%s:base(%s): was %q; want %q", i, tt.dict, tt.tag, n, tt.name) + } + } + }) } } @@ -440,7 +456,7 @@ func TestScript(t *testing.T) { {"en", "Arab", "Arabic"}, {"en", "Zzzz", "Unknown Script"}, {"zh-Hant", "Hang", "韓文字"}, - {"zh-Hant-HK", "Hang", "韓文字母"}, + {"zh-Hant-HK", "Hang", "韓文字"}, {"zh", "Arab", "阿拉伯文"}, {"zh-Hans-HK", "Arab", "阿拉伯文"}, // same as zh {"zh-Hant", "Arab", "阿拉伯文"}, @@ -516,7 +532,10 @@ func TestSelf(t *testing.T) { name string }{ {"nl", "Nederlands"}, - {"nl-BE", "Vlaams"}, + // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called + // Flemish in English, though. TODO: check if this is a CLDR bug. + // {"nl-BE", "Vlaams"}, + {"nl-BE", "Nederlands"}, {"en-GB", "British English"}, {lastLang2zu.String(), "isiZulu"}, {firstLang2aa.String(), ""}, // not defined @@ -552,7 +571,7 @@ func TestSelf(t *testing.T) { // Chinese. We can hardwire this case in the table generator or package // code, but we first check if CLDR can be updated. // {"sr-ME", "Srpski"}, // Is Srpskohrvatski - {"sr-Latn-ME", "Srpskohrvatski"}, + {"sr-Latn-ME", "srpskohrvatski"}, {"sr-Cyrl-ME", "српски"}, {"sr-NL", "српски"}, // Canonical equivalents. @@ -579,7 +598,7 @@ func TestDictionaryLang(t *testing.T) { }{ {English, "en", "English"}, {Portuguese, "af", "africâner"}, - {EuropeanPortuguese, "af", "africânder"}, + {EuropeanPortuguese, "af", "africanês"}, {English, "nl-BE", "Flemish"}, } for i, test := range tests { diff --git a/vendor/golang.org/x/text/language/display/lookup.go b/vendor/golang.org/x/text/language/display/lookup.go index 794098ad7f..e6dc0e0163 100644 --- a/vendor/golang.org/x/text/language/display/lookup.go +++ b/vendor/golang.org/x/text/language/display/lookup.go @@ -23,8 +23,15 @@ type namer interface { func nameLanguage(n namer, x interface{}) string { t, _ := language.All.Compose(x) - i, _, _ := langTagSet.index(t.Raw()) - return n.name(i) + for { + i, _, _ := langTagSet.index(t.Raw()) + if s := n.name(i); s != "" { + return s + } + if t = t.Parent(); t == language.Und { + return "" + } + } } func nameScript(n namer, x interface{}) string { @@ -48,30 +55,36 @@ func nameTag(langN, scrN, regN namer, x interface{}) string { if c, err := form.Canonicalize(t); err == nil { t = c } + _, sRaw, rRaw := t.Raw() i, scr, reg := langTagSet.index(t.Raw()) - if i == -1 { - return "" - } - - str := langN.name(i) - if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR { - ss, sr := "", "" - if hasS { - ss = scrN.name(scriptIndex.index(scr.String())) - } - if hasR { - sr = regN.name(regionIndex.index(reg.String())) - } - // TODO: use patterns in CLDR or at least confirm they are the same for - // all languages. - if ss != "" && sr != "" { - return fmt.Sprintf("%s (%s, %s)", str, ss, sr) + for i != -1 { + if str := langN.name(i); str != "" { + if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR { + ss, sr := "", "" + if hasS { + ss = scrN.name(scriptIndex.index(scr.String())) + } + if hasR { + sr = regN.name(regionIndex.index(reg.String())) + } + // TODO: use patterns in CLDR or at least confirm they are the + // same for all languages. + if ss != "" && sr != "" { + return fmt.Sprintf("%s (%s, %s)", str, ss, sr) + } + if ss != "" || sr != "" { + return fmt.Sprintf("%s (%s%s)", str, ss, sr) + } + } + return str } - if ss != "" || sr != "" { - return fmt.Sprintf("%s (%s%s)", str, ss, sr) + scr, reg = sRaw, rRaw + if t = t.Parent(); t == language.Und { + return "" } + i, _, _ = langTagSet.index(t.Raw()) } - return str + return "" } // header contains the data and indexes for a single namer. diff --git a/vendor/golang.org/x/text/language/display/tables.go b/vendor/golang.org/x/text/language/display/tables.go index 04777df10e..6493357efa 100644 --- a/vendor/golang.org/x/text/language/display/tables.go +++ b/vendor/golang.org/x/text/language/display/tables.go @@ -1,49 +1,53 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package display // CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "29" +const CLDRVersion = "31" // Version is deprecated. Use CLDRVersion. -const Version = "29" +const Version = "31" -var parents = [220]int16{ +var parents = [252]int16{ // Entry 0 - 3F - -1, -1, -1, -1, -1, 4, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 18, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 33, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 43, 43, 43, -1, - -1, 48, 49, 49, -1, -1, -1, -1, - 55, -1, -1, -1, -1, -1, 61, 61, - // Entry 40 - 7F - -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4, 4, 4, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 19, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 36, 36, 36, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 48, 48, -1, -1, 53, 54, + 54, 54, 54, 54, 54, 54, 54, 54, + // Entry 40 - 7F + 54, 54, 54, 54, 54, 54, 54, 54, + 54, -1, -1, -1, -1, 76, -1, -1, + -1, -1, -1, 82, 82, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 124, -1, -1, // Entry 80 - BF -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 184, -1, 186, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 178, -1, -1, -1, -1, + 183, -1, -1, 186, -1, -1, -1, -1, // Entry C0 - FF + -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 199, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 212, -1, -1, - -1, -1, 217, -1, + 207, 207, 207, -1, 211, 211, 211, -1, + 215, -1, 217, 217, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, + 231, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 244, -1, -1, + -1, -1, 249, -1, } -// Number of keys: 609 +// Number of keys: 612 var ( langIndex = tagIndex{ "aaabaeafakamanarasavayazbabebgbibmbnbobrbscacechcocrcscucvcydadedvdzeeel" + @@ -52,24 +56,24 @@ var ( "mnmrmsmtmynandnengnlnnnonrnvnyocojomorospapiplpsptqurmrnrorurwsascsd" + "sesgsiskslsmsnsosqsrssstsusvswtatetgthtitktntotrtstttyugukuruzvevivo" + "wawoxhyiyozazhzu", - "aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarwaryarzasa" + - "aseastavkawabalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbgnbhobikbinbjnbk" + - "mblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchcebcggchbchgchkchmc" + - "hnchochpchrchyckbcopcpscrhcsbdakdardavdeldendgrdindjedoidsbdtpduadum" + - "dyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfrofrpfrrfr" + - "sfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswgucgurguzg" + - "wihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmcjprjrbjut" + - "kaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukkjklnkmbko" + - "ikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnlijlivlktl" + - "molollozlrcltglualuilunluolusluylzhlzzmadmafmagmaimakmanmasmdemdfmdr" + - "menmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmwvmyemyvmznna" + - "nnapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynnyonziosaotap" + - "agpalpampappaupcdpdcpdtpeopflphnpmspntponprgproqucqugrajraprarrgnrif" + - "rofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnscosdcsdhseesehse" + - "iselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrnsrrssystqsuksuss" + - "uxswbsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmhtogtpitrutrvtsd" + - "tsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvrovunwaewalwarwa" + - "swbpwuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunzxxzza", + "aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarsarwaryarz" + + "asaaseastavkawabalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbgnbhobikbinbj" + + "nbkmblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchcebcggchbchgchkc" + + "hmchnchochpchrchyckbcopcpscrhcrscsbdakdardavdeldendgrdindjedoidsbdtp" + + "duadumdyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfrofr" + + "pfrrfrsfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswgucg" + + "urguzgwihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmcjpr" + + "jrbjutkaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukkjkl" + + "nkmbkoikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnlijl" + + "ivlktlmolollozlrcltglualuilunluolusluylzhlzzmadmafmagmaimakmanmasmde" + + "mdfmdrmenmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmwvmyemy" + + "vmznnannapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynnyonzio" + + "saotapagpalpampappaupcdpcmpdcpdtpeopflphnpmspntponprgproqucqugrajrap" + + "rarrgnrifrofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnscosdcsd" + + "hseesehseiselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrnsrrssys" + + "tqsuksussuxswbsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmhtogtpi" + + "trutrvtsdtsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvrovunwa" + + "ewalwarwaswbpwuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunzxxzza", "", } langTagsLong = []string{ // 23 elements @@ -99,7 +103,7 @@ var ( } ) -var langHeaders = [220]header{ +var langHeaders = [252]header{ { // af afLangStr, afLangIdx, @@ -194,6 +198,192 @@ var langHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, }, }, + { // ar-LY + "الغورانيةاللاووالسواحيليةالتيغرينيةالمابودونجونيةصوربيا العلياسامي الجنو" + + "بيةالكرواتية الصربيةالسواحيلية الكونغولية", + []uint16{ // 611 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + // Entry 40 - 7F + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + // Entry 80 - BF + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + // Entry C0 - FF + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + // Entry 100 - 13F + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + // Entry 140 - 17F + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + // Entry 180 - 1BF + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + // Entry 1C0 - 1FF + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + // Entry 200 - 23F + 0x007b, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + // Entry 240 - 27F + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x00b5, 0x00de, + }, + }, + { // ar-SA + "الغورانيةاللاووالأوريةالسواحيليةالتيغرينيةالمابودونجونيةصوربيا العلياسام" + + "ي الجنوبيةالكرواتية الصربيةالسواحيلية الكونغولية", + []uint16{ // 611 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + // Entry 40 - 7F + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x001e, 0x001e, 0x001e, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + // Entry 80 - BF + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + // Entry C0 - FF + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + // Entry 100 - 13F + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + // Entry 140 - 17F + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry 180 - 1BF + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry 1C0 - 1FF + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry 200 - 23F + 0x0089, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + // Entry 240 - 27F + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00c3, 0x00ec, + }, + }, { // as "অসমীয়া", []uint16{ // 10 elements @@ -208,7 +398,7 @@ var langHeaders = [220]header{ "burmaKinepaliKiholandhiKipunjabiKipolandiKirenoKiromaniaKiruthiKinya" + "randwaKithomaliKithwidiKitamilKitailandiKiturukiKiukraniaKiurduKivie" + "tinamuKiyorubaKichinaKidhuluKipare", - []uint16{ // 205 elements + []uint16{ // 206 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, @@ -238,7 +428,7 @@ var langHeaders = [220]header{ 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, // Entry C0 - FF 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x0174, 0x0174, 0x0174, 0x017a, + 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x017a, }, }, { // ast @@ -270,53 +460,54 @@ var langHeaders = [220]header{ "msiksikabishnupriyabakhtiaribrajbrahuibodoakooseburiatbuginésbulubli" + "nmedumbacaddocaribecayugaatsamcebuanuchigachibchachagataichuukésmari" + "xíriga chinookchoctawchipewyanucheroquicheyennekurdu centralcópticuc" + - "apiznonturcu de Crimeakashubianudakotadargwataitadelawareslavedogrib" + - "dinkazarmadogribaxu sorbiudusun centraldualaneerlandés mediujola-fon" + - "yidyuladazagaembúefikemilianuexipciu antiguuekajukelamitainglés medi" + - "uyupik centralewondoestremeñufangfilipínfinlandés de Tornedalenfonfr" + - "ancés cajunfrancés mediufrancés antiguuarpitanufrisón del nortefrisó" + - "n orientalfriulianugagagauzchinu gangayogbayadari zoroastrianugeezgi" + - "lbertésgilakialtualemán mediualtualemán antiguugoan konkanigondigoro" + - "ntalogóticugrebogriegu antiguualemán de Suizawayuufrafragusiigwichʼi" + - "nhaidachinu hakkahawaianuhindi de Fijihiligaynonhititahmongaltu sorb" + - "iuchinu xianghupaibanibibioilokoingushingrianuinglés criollu xamaica" + - "nulojbanngombamachamexudeo-persaxudeo-árabejutlandéskara-kalpakkabil" + - "eñukachinjjukambakawikabardianukanembutyapmakondecabuverdianukenyang" + - "korokaingangkhasikhotanéskoyra chiinikhowarkirmanjkikakokalenjinkimb" + - "undukomi-permyakkonkanikosraeanukpellekarachay-balkarkriokinaray-aka" + - "relianukurukhshambalabafiacolonianukumykkutenailadinolangilahndalamb" + - "alezghianulingua franca novaligurianulivonianulakotalombardumongoloz" + - "iluri del nortelatgalianuluba-lulualuisenolundaluomizoluyiachinu lli" + - "terariulazmadurésmafamagahimaithilimakasarmandingomasáimabamokshaman" + - "darmendemerumorisyenírlandés mediumakhuwa-meettometa’micmacminangkab" + - "aumanchúmanipurimohawkmossimari occidentalmundangmúltiples llingüesc" + - "reekmirandésmarwarimentawaimyeneerzyamazanderanichinu min nannapolit" + - "anunamabaxu alemánnewariniasniueanuao nagakwasiongiemboonnogainorueg" + - "u antiguunovialn’kosotho del nortenuernewari clásicunyamwezinyankole" + - "nyoronzimaOsageturcu otomanupangasinanpahlavipampangapapiamentopalau" + - "anupícarualemán de Pennsylvaniaplautdietschpersa antiguualemán palat" + - "inufeniciupiamontéspónticupohnpeianuprusianuprovenzal antiguukʼicheʼ" + - "quichua del altiplanu de Chimborazorajasthanínrapanuirarotonganuroma" + - "ñolrifianuromboromanírotumanurusynrovianaaromanianurwasandavéssakha" + - "araméu samaritanusamburusasaksantalisaurashtrangambaysangusicilianus" + - "cotssardu sassarésKurdu del sursénecasenaseriselkupkoyraboro senniir" + - "landés antiguusamogitianutachelhitshanárabe chadianusidamobaxu siles" + - "ianuselayaréssami del surlule samiinari samiskolt samisoninkesogdian" + - "usranan tongoserersahofrisón de Saterlandsukumasususumeriucomorianus" + - "iriacu clásicusiriacusilesianutulutimnetesoterenatetumtigretivtokela" + - "utsakhurklingontlingittalixíntamashektonga nyasatok pisinturoyotarok" + - "otsakoniutsimshiantati musulmántumbukatuvalutasawaqtuvinianutamazigh" + - "t del Atles centraludmurtugaríticuumbundurootvaivenecianuvepsiuflame" + - "ncu occidentalfranconianu del Mainvóticuvorovunjowalserwolayttawaray" + - "washowarlpirichinu wucalmucomingrelianusogayaoyapésyangbenyembanheen" + - "gatucantonészapotecasimbólicu Blisszeelandészenagatamazight estándar" + - " de Marruecoszuniensin conteníu llingüísticuzazaárabe estándar moder" + - "nualemán d’Austriaaltualemán de Suizainglés d’Australiainglés de Can" + - "adáinglés de Gran Bretañainglés d’Estaos Xuníosespañol d’América Lla" + - "tinaespañol européuespañol de Méxicufrancés de Canadáfrancés de Suiz" + - "abaxu saxónflamencuportugués del Brasilportugués européumoldavuserbo" + - "-croataswahili del Conguchinu simplificáuchinu tradicional", - []uint16{ // 610 elements + "apiznonturcu de Crimeafrancés criollu seselwakashubianudakotadargwat" + + "aitadelawareslavedogribdinkazarmadogribaxu sorbiudusun centraldualan" + + "eerlandés mediujola-fonyidyuladazagaembúefikemilianuexipciu antiguue" + + "kajukelamitainglés mediuyupik centralewondoestremeñufangfilipínfinla" + + "ndés de Tornedalenfonfrancés cajunfrancés mediufrancés antiguuarpita" + + "nufrisón del nortefrisón orientalfriulianugagagauzchinu gangayogbaya" + + "dari zoroastrianugeezgilbertésgilakialtualemán mediualtualemán antig" + + "uugoan konkanigondigorontalogóticugrebogriegu antiguualemán de Suiza" + + "wayuufrafragusiigwichʼinhaidachinu hakkahawaianuhindi de Fijihiligay" + + "nonhititahmongaltu sorbiuchinu xianghupaibanibibioilokoingushingrian" + + "uinglés criollu xamaicanulojbanngombamachamexudeo-persaxudeo-árabeju" + + "tlandéskara-kalpakkabileñukachinjjukambakawikabardianukanembutyapmak" + + "ondecabuverdianukenyangkorokaingangkhasikhotanéskoyra chiinikhowarki" + + "rmanjkikakokalenjinkimbundukomi-permyakkonkanikosraeanukpellekaracha" + + "y-balkarkriokinaray-akarelianukurukhshambalabafiacolonianukumykkuten" + + "ailadinolangilahndalambalezghianulingua franca novaligurianulivonian" + + "ulakotalombardumongoloziluri del nortelatgalianuluba-lulualuisenolun" + + "daluomizoluyiachinu lliterariulazmadurésmafamagahimaithilimakasarman" + + "dingomasáimabamokshamandarmendemerumorisyenírlandés mediumakhuwa-mee" + + "ttometa’micmacminangkabaumanchúmanipurimohawkmossimari occidentalmun" + + "dangmúltiples llingüescreekmirandésmarwarimentawaimyeneerzyamazander" + + "anichinu min nannapolitanunamabaxu alemánnewariniasniueanuao nagakwa" + + "siongiemboonnogainoruegu antiguunovialn’kosotho del nortenuernewari " + + "clásicunyamwezinyankolenyoronzimaosageturcu otomanupangasinanpahlavi" + + "pampangapapiamentopalauanupícarunixerianu simplificáualemán de Penns" + + "ylvaniaplautdietschpersa antiguualemán palatinufeniciupiamontéspónti" + + "cupohnpeianuprusianuprovenzal antiguukʼicheʼquichua del altiplanu de" + + " Chimborazorajasthanínrapanuirarotonganuromañolrifianuromboromanírot" + + "umanurusynrovianaaromanianurwasandavéssakhaaraméu samaritanusamburus" + + "asaksantalisaurashtrangambaysangusicilianuscotssardu sassaréskurdu d" + + "el sursénecasenaseriselkupkoyraboro senniirlandés antiguusamogitianu" + + "tachelhitshanárabe chadianusidamobaxu silesianuselayaréssami del sur" + + "lule samiinari samiskolt samisoninkesogdianusranan tongoserersahofri" + + "són de Saterlandsukumasususumeriucomorianusiriacu clásicusiriacusile" + + "sianutulutimnetesoterenatetumtigretivtokelautsakhurklingontlingittal" + + "ixíntamashektonga nyasatok pisinturoyotarokotsakoniutsimshiantati mu" + + "sulmántumbukatuvalutasawaqtuvinianutamazight del Atles centraludmurt" + + "ugaríticuumbundurootvaivenecianuvepsiuflamencu occidentalfranconianu" + + " del Mainvóticuvorovunjowalserwolayttawaraywashowarlpirichinu wucalm" + + "ucomingrelianusogayaoyapésyangbenyembanheengatucantonészapotecasimbó" + + "licu Blisszeelandészenagatamazight estándar de Marruecoszuniensin co" + + "nteníu llingüísticuzazaárabe estándar modernualemán d’Austriaaltuale" + + "mán de Suizainglés d’Australiainglés de Canadáinglés de Gran Bretaña" + + "inglés d’Estaos Xuníosespañol d’América Llatinaespañol européuespaño" + + "l de Méxicufrancés de Canadáfrancés de Suizabaxu saxónflamencuportug" + + "ués del Brasilportugués européumoldavuserbo-croatasuaḥili del Conguc" + + "hinu simplificáuchinu tradicional", + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x0018, 0x0021, 0x0025, 0x002e, 0x0037, 0x003d, 0x0044, 0x004c, 0x0052, 0x005d, 0x0064, 0x006e, 0x0076, @@ -346,64 +537,64 @@ var langHeaders = [220]header{ 0x0591, 0x05a1, 0x05a9, 0x05ae, 0x05b2, 0x05ba, 0x05c1, 0x05c6, // Entry C0 - FF 0x05d6, 0x05e3, 0x05f2, 0x05f8, 0x05ff, 0x0606, 0x060c, 0x0613, - 0x0625, 0x062b, 0x063e, 0x064f, 0x0652, 0x066d, 0x0676, 0x067c, - 0x0682, 0x0689, 0x0691, 0x0698, 0x069d, 0x06a2, 0x06ac, 0x06b3, - 0x06b7, 0x06bc, 0x06c2, 0x06c6, 0x06cb, 0x06d1, 0x06e3, 0x06eb, - 0x06f0, 0x06f4, 0x06fa, 0x06fd, 0x0704, 0x070f, 0x0718, 0x071c, - 0x0722, 0x0726, 0x072c, 0x0732, 0x073a, 0x073e, 0x0742, 0x0749, - 0x074e, 0x0754, 0x075a, 0x075f, 0x0766, 0x076b, 0x0772, 0x077a, - 0x0782, 0x0786, 0x0795, 0x079c, 0x07a6, 0x07ae, 0x07b6, 0x07c3, - // Entry 100 - 13F - 0x07cb, 0x07d3, 0x07e2, 0x07ec, 0x07f2, 0x07f8, 0x07fd, 0x0805, - 0x080a, 0x0810, 0x0815, 0x081a, 0x081f, 0x082a, 0x0837, 0x083c, - 0x084d, 0x0857, 0x085c, 0x0862, 0x0867, 0x086b, 0x0873, 0x0882, - 0x0888, 0x088f, 0x089c, 0x08a9, 0x08af, 0x08b9, 0x08bd, 0x08c5, - 0x08dd, 0x08e0, 0x08ee, 0x08fc, 0x090c, 0x0914, 0x0925, 0x0935, - 0x093e, 0x0940, 0x0946, 0x094f, 0x0953, 0x0958, 0x0969, 0x096d, - 0x0977, 0x097d, 0x098e, 0x09a1, 0x09ad, 0x09b2, 0x09bb, 0x09c2, - 0x09c7, 0x09d5, 0x09e5, 0x09ea, 0x09f0, 0x09f5, 0x09fe, 0x0a03, + 0x0625, 0x0625, 0x062b, 0x063e, 0x064f, 0x0652, 0x066d, 0x0676, + 0x067c, 0x0682, 0x0689, 0x0691, 0x0698, 0x069d, 0x06a2, 0x06ac, + 0x06b3, 0x06b7, 0x06bc, 0x06c2, 0x06c6, 0x06cb, 0x06d1, 0x06e3, + 0x06eb, 0x06f0, 0x06f4, 0x06fa, 0x06fd, 0x0704, 0x070f, 0x0718, + 0x071c, 0x0722, 0x0726, 0x072c, 0x0732, 0x073a, 0x073e, 0x0742, + 0x0749, 0x074e, 0x0754, 0x075a, 0x075f, 0x0766, 0x076b, 0x0772, + 0x077a, 0x0782, 0x0786, 0x0795, 0x079c, 0x07a6, 0x07ae, 0x07b6, + // Entry 100 - 13F + 0x07c3, 0x07cb, 0x07d3, 0x07e2, 0x07fa, 0x0804, 0x080a, 0x0810, + 0x0815, 0x081d, 0x0822, 0x0828, 0x082d, 0x0832, 0x0837, 0x0842, + 0x084f, 0x0854, 0x0865, 0x086f, 0x0874, 0x087a, 0x087f, 0x0883, + 0x088b, 0x089a, 0x08a0, 0x08a7, 0x08b4, 0x08c1, 0x08c7, 0x08d1, + 0x08d5, 0x08dd, 0x08f5, 0x08f8, 0x0906, 0x0914, 0x0924, 0x092c, + 0x093d, 0x094d, 0x0956, 0x0958, 0x095e, 0x0967, 0x096b, 0x0970, + 0x0981, 0x0985, 0x098f, 0x0995, 0x09a6, 0x09b9, 0x09c5, 0x09ca, + 0x09d3, 0x09da, 0x09df, 0x09ed, 0x09fd, 0x0a02, 0x0a08, 0x0a0d, // Entry 140 - 17F - 0x0a0e, 0x0a16, 0x0a23, 0x0a2d, 0x0a33, 0x0a38, 0x0a43, 0x0a4e, - 0x0a52, 0x0a56, 0x0a5c, 0x0a61, 0x0a67, 0x0a6f, 0x0a88, 0x0a8e, - 0x0a94, 0x0a9b, 0x0aa6, 0x0ab2, 0x0abc, 0x0ac7, 0x0ad0, 0x0ad6, - 0x0ad9, 0x0ade, 0x0ae2, 0x0aec, 0x0af3, 0x0af7, 0x0afe, 0x0b0a, - 0x0b11, 0x0b15, 0x0b1d, 0x0b22, 0x0b2b, 0x0b37, 0x0b3d, 0x0b46, - 0x0b4a, 0x0b52, 0x0b5a, 0x0b66, 0x0b6d, 0x0b76, 0x0b7c, 0x0b8b, - 0x0b8f, 0x0b98, 0x0ba1, 0x0ba7, 0x0baf, 0x0bb4, 0x0bbd, 0x0bc2, - 0x0bc9, 0x0bcf, 0x0bd4, 0x0bda, 0x0bdf, 0x0be8, 0x0bfa, 0x0c03, + 0x0a16, 0x0a1b, 0x0a26, 0x0a2e, 0x0a3b, 0x0a45, 0x0a4b, 0x0a50, + 0x0a5b, 0x0a66, 0x0a6a, 0x0a6e, 0x0a74, 0x0a79, 0x0a7f, 0x0a87, + 0x0aa0, 0x0aa6, 0x0aac, 0x0ab3, 0x0abe, 0x0aca, 0x0ad4, 0x0adf, + 0x0ae8, 0x0aee, 0x0af1, 0x0af6, 0x0afa, 0x0b04, 0x0b0b, 0x0b0f, + 0x0b16, 0x0b22, 0x0b29, 0x0b2d, 0x0b35, 0x0b3a, 0x0b43, 0x0b4f, + 0x0b55, 0x0b5e, 0x0b62, 0x0b6a, 0x0b72, 0x0b7e, 0x0b85, 0x0b8e, + 0x0b94, 0x0ba3, 0x0ba7, 0x0bb0, 0x0bb9, 0x0bbf, 0x0bc7, 0x0bcc, + 0x0bd5, 0x0bda, 0x0be1, 0x0be7, 0x0bec, 0x0bf2, 0x0bf7, 0x0c00, // Entry 180 - 1BF - 0x0c0c, 0x0c12, 0x0c1a, 0x0c1f, 0x0c23, 0x0c31, 0x0c3b, 0x0c45, - 0x0c4c, 0x0c51, 0x0c54, 0x0c58, 0x0c5d, 0x0c6d, 0x0c70, 0x0c78, - 0x0c7c, 0x0c82, 0x0c8a, 0x0c91, 0x0c99, 0x0c9f, 0x0ca3, 0x0ca9, - 0x0caf, 0x0cb4, 0x0cb8, 0x0cc0, 0x0cd0, 0x0cde, 0x0ce5, 0x0ceb, - 0x0cf6, 0x0cfd, 0x0d05, 0x0d0b, 0x0d10, 0x0d1f, 0x0d26, 0x0d3a, - 0x0d3f, 0x0d48, 0x0d4f, 0x0d57, 0x0d5c, 0x0d61, 0x0d6c, 0x0d79, - 0x0d83, 0x0d87, 0x0d93, 0x0d99, 0x0d9d, 0x0da4, 0x0dab, 0x0db1, - 0x0dba, 0x0dbf, 0x0dce, 0x0dd4, 0x0dda, 0x0de9, 0x0ded, 0x0dfc, + 0x0c12, 0x0c1b, 0x0c24, 0x0c2a, 0x0c32, 0x0c37, 0x0c3b, 0x0c49, + 0x0c53, 0x0c5d, 0x0c64, 0x0c69, 0x0c6c, 0x0c70, 0x0c75, 0x0c85, + 0x0c88, 0x0c90, 0x0c94, 0x0c9a, 0x0ca2, 0x0ca9, 0x0cb1, 0x0cb7, + 0x0cbb, 0x0cc1, 0x0cc7, 0x0ccc, 0x0cd0, 0x0cd8, 0x0ce8, 0x0cf6, + 0x0cfd, 0x0d03, 0x0d0e, 0x0d15, 0x0d1d, 0x0d23, 0x0d28, 0x0d37, + 0x0d3e, 0x0d52, 0x0d57, 0x0d60, 0x0d67, 0x0d6f, 0x0d74, 0x0d79, + 0x0d84, 0x0d91, 0x0d9b, 0x0d9f, 0x0dab, 0x0db1, 0x0db5, 0x0dbc, + 0x0dc3, 0x0dc9, 0x0dd2, 0x0dd7, 0x0de6, 0x0dec, 0x0df2, 0x0e01, // Entry 1C0 - 1FF - 0x0e04, 0x0e0c, 0x0e11, 0x0e16, 0x0e1b, 0x0e28, 0x0e32, 0x0e39, - 0x0e41, 0x0e4b, 0x0e53, 0x0e5a, 0x0e71, 0x0e7d, 0x0e8a, 0x0e9a, - 0x0ea1, 0x0eab, 0x0eb3, 0x0ebd, 0x0ec5, 0x0ed6, 0x0edf, 0x0f02, - 0x0f0e, 0x0f15, 0x0f20, 0x0f28, 0x0f2f, 0x0f34, 0x0f3b, 0x0f43, - 0x0f48, 0x0f4f, 0x0f59, 0x0f5c, 0x0f65, 0x0f6a, 0x0f7c, 0x0f83, - 0x0f88, 0x0f8f, 0x0f99, 0x0fa0, 0x0fa5, 0x0fae, 0x0fb3, 0x0fc2, - 0x0fcf, 0x0fd6, 0x0fda, 0x0fde, 0x0fe4, 0x0ff3, 0x1004, 0x100f, - 0x1018, 0x101c, 0x102b, 0x1031, 0x103f, 0x1049, 0x1055, 0x105e, + 0x0e05, 0x0e14, 0x0e1c, 0x0e24, 0x0e29, 0x0e2e, 0x0e33, 0x0e40, + 0x0e4a, 0x0e51, 0x0e59, 0x0e63, 0x0e6b, 0x0e72, 0x0e88, 0x0e9f, + 0x0eab, 0x0eb8, 0x0ec8, 0x0ecf, 0x0ed9, 0x0ee1, 0x0eeb, 0x0ef3, + 0x0f04, 0x0f0d, 0x0f30, 0x0f3c, 0x0f43, 0x0f4e, 0x0f56, 0x0f5d, + 0x0f62, 0x0f69, 0x0f71, 0x0f76, 0x0f7d, 0x0f87, 0x0f8a, 0x0f93, + 0x0f98, 0x0faa, 0x0fb1, 0x0fb6, 0x0fbd, 0x0fc7, 0x0fce, 0x0fd3, + 0x0fdc, 0x0fe1, 0x0ff0, 0x0ffd, 0x1004, 0x1008, 0x100c, 0x1012, + 0x1021, 0x1032, 0x103d, 0x1046, 0x104a, 0x1059, 0x105f, 0x106d, // Entry 200 - 23F - 0x1068, 0x1072, 0x1079, 0x1081, 0x108d, 0x1092, 0x1096, 0x10aa, - 0x10b0, 0x10b4, 0x10bb, 0x10c4, 0x10d4, 0x10db, 0x10e4, 0x10e8, - 0x10ed, 0x10f1, 0x10f7, 0x10fc, 0x1101, 0x1104, 0x110b, 0x1112, - 0x1119, 0x1120, 0x1128, 0x1130, 0x113b, 0x1144, 0x114a, 0x1150, - 0x1158, 0x1161, 0x116f, 0x1176, 0x117c, 0x1183, 0x118c, 0x11a7, - 0x11ad, 0x11b7, 0x11be, 0x11c2, 0x11c5, 0x11ce, 0x11d4, 0x11e7, - 0x11fb, 0x1202, 0x1206, 0x120b, 0x1211, 0x1219, 0x121e, 0x1223, - 0x122b, 0x1233, 0x123a, 0x1245, 0x1249, 0x124c, 0x1252, 0x1259, + 0x1077, 0x1083, 0x108c, 0x1096, 0x10a0, 0x10a7, 0x10af, 0x10bb, + 0x10c0, 0x10c4, 0x10d8, 0x10de, 0x10e2, 0x10e9, 0x10f2, 0x1102, + 0x1109, 0x1112, 0x1116, 0x111b, 0x111f, 0x1125, 0x112a, 0x112f, + 0x1132, 0x1139, 0x1140, 0x1147, 0x114e, 0x1156, 0x115e, 0x1169, + 0x1172, 0x1178, 0x117e, 0x1186, 0x118f, 0x119d, 0x11a4, 0x11aa, + 0x11b1, 0x11ba, 0x11d5, 0x11db, 0x11e5, 0x11ec, 0x11f0, 0x11f3, + 0x11fc, 0x1202, 0x1215, 0x1229, 0x1230, 0x1234, 0x1239, 0x123f, + 0x1247, 0x124c, 0x1251, 0x1259, 0x1261, 0x1268, 0x1273, 0x1277, // Entry 240 - 27F - 0x125e, 0x1267, 0x1270, 0x1278, 0x1288, 0x1292, 0x1298, 0x12b8, - 0x12bc, 0x12da, 0x12de, 0x12f6, 0x12f6, 0x1309, 0x131d, 0x1332, - 0x1344, 0x135c, 0x1376, 0x1393, 0x13a4, 0x13b7, 0x13b7, 0x13ca, - 0x13db, 0x13e6, 0x13ee, 0x1403, 0x1416, 0x141d, 0x1429, 0x143a, - 0x144c, 0x145d, + 0x127a, 0x1280, 0x1287, 0x128c, 0x1295, 0x129e, 0x12a6, 0x12b6, + 0x12c0, 0x12c6, 0x12e6, 0x12ea, 0x1308, 0x130c, 0x1324, 0x1324, + 0x1337, 0x134b, 0x1360, 0x1372, 0x138a, 0x13a4, 0x13c1, 0x13d2, + 0x13e5, 0x13e5, 0x13f8, 0x1409, 0x1414, 0x141c, 0x1431, 0x1444, + 0x144b, 0x1457, 0x146a, 0x147c, 0x148d, }, }, { // az @@ -411,35 +602,134 @@ var langHeaders = [220]header{ azLangIdx, }, { // az-Cyrl - "азәрбајҹан дилиалман дилиинҝилис дилииспан дилифрансыз дилииталјан дилиј" + - "апон дилипортугал дилирус диличин дили", - []uint16{ // 180 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0047, 0x0047, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - // Entry 40 - 7F - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0088, 0x0088, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - // Entry 80 - BF - 0x009b, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00d2, + "афарабхазафрикаансаканамһарарагонәрәбассамаварајмараазәрбајҹанбашгырдбел" + + "арусбулгарбисламабамбарабенгалтибетбретонбосниаккаталанчеченчаморок" + + "орсикачехславјанчувашуелсданимаркаалманмалдивдзонгаевејунанинҝилисе" + + "сперантоиспанестонбаскфарсфулафинфиҹифарерфрансызгәрби фризирландшо" + + "тланд келтгалисијагуаранигуҹаратманксһаусаивритһиндхорватһаити крео" + + "лмаҹарермәниһерероинтерлингвеиндонезијаигбоидоисландиталјанинуктиту" + + "тјапонјаваҝүрҹүкикујукуанјамагазахкалааллисуткхмерканнадакорејакану" + + "рикәшмиркүрдкомикорнгырғызлатынлүксембурггандалимбурглингалалаослит" + + "валуба-катангалатышмалагасмаршалмаоримакедонмалајаламмонголмаратһим" + + "алајмалтабирманнаурушимали ндебеленепалндонгаһолланднүнорск норвечб" + + "окмал норвечҹәнуби ндебеленавајонјанҹаокситаноромоодијаосетинпәнҹаб" + + "полјакпуштупортугалкечуароманшрундирумынрускинјарвандасанскритсарди" + + "нсиндһишимали самисангосинһаласловаксловенсамоашонасомалиалбансербс" + + "ватисесотосунданисвечсуаһилитамилтелугутаҹиктајтигринтүркмәнсванато" + + "нгантүрксонгататартахитиујғурукрајнаурдуөзбәквендавјетнамволапүквал" + + "унволофхосаидишјорубачинзулуакинадангмеадуҝеагһемајнуалеутҹәнуби ал" + + "тајанҝикаарауканҹаарапаһоасуастуријаавадһибаллибасабембабенабхочпур" + + "ибинисиксикәбодобуҝинблинсебуанчигачукизмаричоктаучерокичејенсоранс" + + "ејшел креолудакотадаргватаитадогрибзармаашағы сорбдуаладиоладазагае" + + "мбуефикекаҹукевондофилиппинфонфриулгагезгилбертгоронталоИсвечрә алм" + + "анҹасыгусигвичинһавајһилигајнонмонгјухары сорбһупаибанибибиоилокоин" + + "гушлоғбаннгомбамачамкабилекачинжукамбакабарда-чәркәзтвимакондекабув" + + "ердианкорохазикојра чииникакокаленҹинкимбундуконканикпеллегарачај-б" + + "алкаркарелкурухшамбалабафиакөлнкумыксефардланҝиләзҝилакоталозишимал" + + "и лурилуба-лулуалундалуомизолујиамадуризмагаһимаитилимакасармасајмо" + + "кшамендемеруморисиенмахува-мееттометаʼмикмакминангкабанманипүримоһа" + + "вкмосимундангчохсајлы дилләркрикмирандерзјамазандараннеаполитаннама" + + "невариниаснијуанквасионҝиембоонногајнгошимали сотонуернјанколпангас" + + "инанпампангапапјаментопалајанниҝер креолпрусскичерапануираротонганр" + + "омбоароманруасандавесахасамбурусанталнгамбајсангусиҹилијаскотссенак" + + "ојраборо сеннитачелитшанҹәнуби самилуле самиинари самисколт самисон" + + "инкесранан тонгосаһосукумакоморсуријатимнетесотетумтигреклингонток " + + "писинтарокотумбукатувалутасавагтувинјанМәркәзи Атлас тамазиҹәсиудму" + + "ртумбундурутваивунјоваллесваламоварајкалмыксогајангбенјембакантонта" + + "мазизунидил мәзмуну јохдурзазамүасир стандарт әрәбАвстрија алманҹас" + + "ыИсвечрә јүксәк алманҹасыАвстралија инҝилисҹәсиКанада инҝилисҹәсиБр" + + "итанија инҝилисҹәсиАмерика инҝилисҹәсиЛатын Америкасы испанҹасыКаст" + + "илија испанҹасыМексика испанҹасыКанада франсызҹасыИсвечрә франсызҹа" + + "сыашағы саксонфламандБразилија португалҹасыПортугалија португалҹасы" + + "Конго суаһилиҹәсисадәләшмиш чинәнәнәви чин", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0008, 0x0012, 0x0012, 0x0024, 0x002c, 0x0036, 0x0042, + 0x004a, 0x0054, 0x005c, 0x0068, 0x007c, 0x008a, 0x0098, 0x00a4, + 0x00b2, 0x00c0, 0x00cc, 0x00d6, 0x00e2, 0x00f0, 0x00fe, 0x0108, + 0x0114, 0x0122, 0x0122, 0x0128, 0x0136, 0x0140, 0x0148, 0x015a, + 0x0164, 0x0170, 0x017c, 0x0182, 0x018c, 0x019a, 0x01ac, 0x01b6, + 0x01c0, 0x01c8, 0x01d0, 0x01d8, 0x01de, 0x01e6, 0x01f0, 0x01fe, + 0x0211, 0x021d, 0x0234, 0x0244, 0x0252, 0x0260, 0x026a, 0x0274, + 0x027e, 0x0286, 0x0286, 0x0292, 0x02a7, 0x02b1, 0x02bd, 0x02c9, + // Entry 40 - 7F + 0x02df, 0x02f3, 0x02f3, 0x02fb, 0x02fb, 0x02fb, 0x0301, 0x030d, + 0x031b, 0x032d, 0x0337, 0x033f, 0x0349, 0x0349, 0x0355, 0x0365, + 0x036f, 0x0385, 0x038f, 0x039d, 0x03a9, 0x03b5, 0x03c1, 0x03c9, + 0x03d1, 0x03d9, 0x03e5, 0x03ef, 0x0403, 0x040d, 0x041b, 0x0429, + 0x0431, 0x043b, 0x0452, 0x045c, 0x046a, 0x0476, 0x0480, 0x048e, + 0x04a0, 0x04ac, 0x04ba, 0x04c4, 0x04ce, 0x04da, 0x04e4, 0x04ff, + 0x0509, 0x0515, 0x0523, 0x053e, 0x0557, 0x0572, 0x057e, 0x058a, + 0x0598, 0x0598, 0x05a2, 0x05ac, 0x05b8, 0x05c4, 0x05c4, 0x05d0, + // Entry 80 - BF + 0x05da, 0x05ea, 0x05f4, 0x0600, 0x060a, 0x0614, 0x061a, 0x0630, + 0x0640, 0x064c, 0x0658, 0x066d, 0x0677, 0x0685, 0x0691, 0x069d, + 0x06a7, 0x06af, 0x06bb, 0x06c5, 0x06cd, 0x06d7, 0x06e3, 0x06ef, + 0x06f9, 0x0707, 0x0711, 0x071d, 0x0727, 0x072d, 0x0739, 0x0747, + 0x0751, 0x075d, 0x0765, 0x076f, 0x0779, 0x0785, 0x078f, 0x079d, + 0x07a5, 0x07af, 0x07b9, 0x07c7, 0x07d5, 0x07df, 0x07e9, 0x07f1, + 0x07f9, 0x0805, 0x0805, 0x080b, 0x0813, 0x081b, 0x081b, 0x0829, + 0x0833, 0x0833, 0x0833, 0x083d, 0x0845, 0x0845, 0x0845, 0x084f, + // Entry C0 - FF + 0x084f, 0x0866, 0x0866, 0x0872, 0x0872, 0x0884, 0x0884, 0x0892, + 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x0898, 0x0898, 0x08a8, + 0x08a8, 0x08b4, 0x08b4, 0x08be, 0x08be, 0x08c6, 0x08c6, 0x08c6, + 0x08c6, 0x08c6, 0x08d0, 0x08d0, 0x08d8, 0x08d8, 0x08d8, 0x08d8, + 0x08e8, 0x08e8, 0x08f0, 0x08f0, 0x08f0, 0x08fe, 0x08fe, 0x08fe, + 0x08fe, 0x08fe, 0x0906, 0x0906, 0x0906, 0x0910, 0x0910, 0x0918, + 0x0918, 0x0918, 0x0918, 0x0918, 0x0918, 0x0924, 0x092c, 0x092c, + 0x092c, 0x0936, 0x093e, 0x093e, 0x094a, 0x094a, 0x0956, 0x0960, + // Entry 100 - 13F + 0x096a, 0x096a, 0x096a, 0x096a, 0x0983, 0x0983, 0x098f, 0x099b, + 0x09a5, 0x09a5, 0x09a5, 0x09b1, 0x09b1, 0x09bb, 0x09bb, 0x09ce, + 0x09ce, 0x09d8, 0x09d8, 0x09e2, 0x09e2, 0x09ee, 0x09f6, 0x09fe, + 0x09fe, 0x09fe, 0x0a0a, 0x0a0a, 0x0a0a, 0x0a0a, 0x0a16, 0x0a16, + 0x0a16, 0x0a26, 0x0a26, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, + 0x0a2c, 0x0a2c, 0x0a36, 0x0a3a, 0x0a3a, 0x0a3a, 0x0a3a, 0x0a3a, + 0x0a3a, 0x0a40, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a4e, + 0x0a60, 0x0a60, 0x0a60, 0x0a60, 0x0a81, 0x0a81, 0x0a81, 0x0a89, + // Entry 140 - 17F + 0x0a95, 0x0a95, 0x0a95, 0x0a9f, 0x0a9f, 0x0ab3, 0x0ab3, 0x0abb, + 0x0ad0, 0x0ad0, 0x0ad8, 0x0ae0, 0x0aec, 0x0af6, 0x0b00, 0x0b00, + 0x0b00, 0x0b0c, 0x0b18, 0x0b22, 0x0b22, 0x0b22, 0x0b22, 0x0b22, + 0x0b2e, 0x0b38, 0x0b3c, 0x0b46, 0x0b46, 0x0b61, 0x0b61, 0x0b67, + 0x0b75, 0x0b8b, 0x0b8b, 0x0b93, 0x0b93, 0x0b9b, 0x0b9b, 0x0bb0, + 0x0bb0, 0x0bb0, 0x0bb8, 0x0bc8, 0x0bd8, 0x0bd8, 0x0be6, 0x0be6, + 0x0bf2, 0x0c0d, 0x0c0d, 0x0c0d, 0x0c17, 0x0c21, 0x0c2f, 0x0c39, + 0x0c41, 0x0c4b, 0x0c4b, 0x0c57, 0x0c61, 0x0c61, 0x0c61, 0x0c6b, + // Entry 180 - 1BF + 0x0c6b, 0x0c6b, 0x0c6b, 0x0c77, 0x0c77, 0x0c77, 0x0c7f, 0x0c94, + 0x0c94, 0x0ca7, 0x0ca7, 0x0cb1, 0x0cb7, 0x0cbf, 0x0cc9, 0x0cc9, + 0x0cc9, 0x0cd7, 0x0cd7, 0x0ce3, 0x0cf1, 0x0cff, 0x0cff, 0x0d09, + 0x0d09, 0x0d13, 0x0d13, 0x0d1d, 0x0d25, 0x0d35, 0x0d35, 0x0d4e, + 0x0d58, 0x0d64, 0x0d7a, 0x0d7a, 0x0d8a, 0x0d96, 0x0d9e, 0x0d9e, + 0x0dac, 0x0dc9, 0x0dd1, 0x0ddd, 0x0ddd, 0x0ddd, 0x0ddd, 0x0de7, + 0x0dfb, 0x0dfb, 0x0e0f, 0x0e17, 0x0e17, 0x0e23, 0x0e2b, 0x0e37, + 0x0e37, 0x0e43, 0x0e55, 0x0e5f, 0x0e5f, 0x0e5f, 0x0e65, 0x0e7a, + // Entry 1C0 - 1FF + 0x0e82, 0x0e82, 0x0e82, 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0e90, + 0x0ea4, 0x0ea4, 0x0eb4, 0x0ec8, 0x0ed6, 0x0ed6, 0x0eeb, 0x0eeb, + 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0ef5, + 0x0ef5, 0x0efd, 0x0efd, 0x0efd, 0x0f0b, 0x0f1f, 0x0f1f, 0x0f1f, + 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f35, 0x0f3b, 0x0f49, + 0x0f51, 0x0f51, 0x0f5f, 0x0f5f, 0x0f6b, 0x0f6b, 0x0f79, 0x0f83, + 0x0f93, 0x0f9d, 0x0f9d, 0x0f9d, 0x0f9d, 0x0fa5, 0x0fa5, 0x0fa5, + 0x0fc2, 0x0fc2, 0x0fc2, 0x0fd0, 0x0fd6, 0x0fd6, 0x0fd6, 0x0fd6, + // Entry 200 - 23F + 0x0fd6, 0x0feb, 0x0ffc, 0x100f, 0x1022, 0x1030, 0x1030, 0x1047, + 0x1047, 0x104f, 0x104f, 0x105b, 0x105b, 0x105b, 0x1065, 0x1065, + 0x1071, 0x1071, 0x1071, 0x107b, 0x1083, 0x1083, 0x108d, 0x1097, + 0x1097, 0x1097, 0x1097, 0x10a5, 0x10a5, 0x10a5, 0x10a5, 0x10a5, + 0x10b6, 0x10b6, 0x10c2, 0x10c2, 0x10c2, 0x10c2, 0x10d0, 0x10dc, + 0x10ea, 0x10fa, 0x1128, 0x1134, 0x1134, 0x1142, 0x1148, 0x114e, + 0x114e, 0x114e, 0x114e, 0x114e, 0x114e, 0x114e, 0x1158, 0x1164, + 0x1170, 0x117a, 0x117a, 0x117a, 0x117a, 0x1186, 0x1186, 0x118e, + // Entry 240 - 27F + 0x118e, 0x118e, 0x119c, 0x11a6, 0x11a6, 0x11b2, 0x11b2, 0x11b2, + 0x11b2, 0x11b2, 0x11be, 0x11c6, 0x11e8, 0x11f0, 0x1216, 0x1216, + 0x1239, 0x1267, 0x1292, 0x12b5, 0x12de, 0x1303, 0x1333, 0x1358, + 0x1379, 0x1379, 0x139c, 0x13c1, 0x13d8, 0x13e6, 0x1411, 0x1440, + 0x1440, 0x1440, 0x1461, 0x147c, 0x1491, }, }, { // bas @@ -451,7 +741,7 @@ var langHeaders = [220]header{ "p u pɔtɔ̄kìHɔp u rùmanìàHɔp u ruslàndHɔp u ruāndàHɔp u somàlîHɔp u s" + "uɛ᷆dHɔp u tamu᷆lHɔp u tâyHɔp u tûrkHɔp u ukrǎnìàHɔp u urdùHɔp u vyɛ̄" + "dnàmHɔp u yorūbàHɔp u kinàHɔp u zulùƁàsàa", - []uint16{ // 213 elements + []uint16{ // 214 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001b, 0x001b, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0048, @@ -482,135 +772,155 @@ var langHeaders = [220]header{ // Entry C0 - FF 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0286, 0x0286, 0x028e, + 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x028e, }, }, { // be - "абхазскаяафрыкаансаканамхарскаяарагонскаяарабскаяасамскаяаварскаяаймараа" + - "зербайджанскаябашкірскаябеларускаябалгарскаябамбарабенгальскаятыбец" + - "каябрэтонскаябаснійскаякаталанскаячачэнскаякарсіканскаячэшскаячуваш" + - "скаявалійскаядацкаянямецкаядзонгкхаэвегрэчаскаяанглійскаяэсперантаі" + - "спанскаяэстонскаябаскскаяфарсіфінскаяфіджыйскаяфарэрскаяфранцузская" + - "фрызскаяірландскаяшатландская гэльскаягалісійскаягуаранігуджарацімэ" + - "нскаяхаўсаіўрытхіндзіхарвацкаягаіцянскаявенгерскаяармянскаяінтэрлін" + - "гваінданезійскаяінтэрлінгвеігбаСычуань Іісландскаяітальянскаяінукты" + - "тутяпонскаяяванскаягрузінскаякікуюказахскаягрэнландскаякхмерскаякан" + - "адакарэйскаякашмірскаякурдскаякорнскаякіргізскаялацінскаялюксембург" + - "скаягандалінгалалаоскаялітоўскаялуба-катангалатышскаямалагасійскаям" + - "аарымакедонскаямалаяламмангольскаямаратхімалайскаямальтыйскаябірман" + - "скаяпаўночная ндэбеленепальскаягаландскаянарвежская (нюнорск)нарвеж" + - "ская (букмал)правансальскаяаромаорыяпанджабіпольскаяпуштупартугальс" + - "каякечуарэтараманскаярундзірумынскаярускаякіньяруандасанскрытсіндхі" + - "паўночнасаамскаясангасінгальскаяславацкаяславенскаяшонасамалійскаяа" + - "лбанскаясербскаясундскаяшведскаясуахілітамільскаятэлугутаджыкскаята" + - "йскаятыгрыньятуркменскаятанганскаятурэцкаятатарскаяуйгурскаяукраінс" + - "каяурдуузбекскаяв’етнамскаявалофкосаідышёрубакітайскаязулуадыгейска" + - "яагемакадзкаяалеуцкаястараанглійскаяарамейскаямапучэасуастурыйскаяб" + - "ембабеназаходняя белуджскаябодабурацкаячыгачэрокіцэнтральнакурдская" + - "копцкаятайтазарманіжнелужыцкаядуаладыёла-фон’іэмбустараэгіпецкаятаг" + - "альскаястарафранцузскаягагаузскаястарагрэцкаяшвейцарская нямецкаягу" + - "сіігавайскаяверхнелужыцкаянгомбэмачамэкабільскаякамбамакондэкабувер" + - "дзьянукойра чыінікаленджынкомі-пярмяцкаяконканішамбалабафіялангалак" + - "отапаўночны лурылуалуямасаімерумаўрыкійскаямакуа-меетаметамагаўкска" + - "ямундангмазандэранскаянаманіжненямецкаяквасіанконуэрньянколекічэром" + - "барваякуцкаясамбурусангупаўднёвакурдскаясенакойрабара сеннітачалхіт" + - "паўднёвасаамскаялуле-саамскаяінары-саамскаяколта-саамскаятэсоклінго" + - "нтасавакмовы тамазігхтаўневядомая моваваівуньёвальбірысогастандартн" + - "ы мараканскі тамазігхтняма моўнага матэрыялусучасная стандартная ар" + - "абскаянямецкая (аўстр.)нямецкая (швейц.)англійская (аўстрал.)англій" + - "ская (канад.)англійская (ЗША)іспанская (лацінаамер.)іспанская (еўра" + - "п.)іспанская (мексікан.)французская (канад.)французская (швейц.)ніж" + - "несаксонскаяфламандскаяпартугальская (бразіл.)партугальская (еўрап." + - ")малдаўскаясербска-харвацкаясуахілі Конгаспрошчаная кітайскаятрадыцы" + - "йная кітайская", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0012, 0x0024, 0x002c, 0x003e, 0x0052, - 0x0062, 0x0072, 0x0082, 0x008e, 0x00ac, 0x00c0, 0x00d4, 0x00e8, - 0x00e8, 0x00f6, 0x010c, 0x011c, 0x0130, 0x0144, 0x015a, 0x016c, - 0x016c, 0x0184, 0x0184, 0x0192, 0x0192, 0x01a4, 0x01b6, 0x01c2, - 0x01d2, 0x01d2, 0x01e2, 0x01e8, 0x01fa, 0x020e, 0x0220, 0x0232, - 0x0244, 0x0254, 0x025e, 0x025e, 0x026c, 0x0280, 0x0292, 0x02a8, - 0x02b8, 0x02cc, 0x02f3, 0x0309, 0x0317, 0x0329, 0x0337, 0x0341, - 0x034b, 0x0357, 0x0357, 0x0369, 0x037d, 0x0391, 0x03a3, 0x03a3, - // Entry 40 - 7F - 0x03b9, 0x03d3, 0x03e9, 0x03f1, 0x0402, 0x0402, 0x0402, 0x0416, - 0x042c, 0x043e, 0x044e, 0x045e, 0x0472, 0x0472, 0x047c, 0x047c, - 0x048e, 0x04a6, 0x04b8, 0x04c4, 0x04d6, 0x04d6, 0x04ea, 0x04fa, - 0x04fa, 0x050a, 0x051e, 0x0530, 0x054c, 0x0556, 0x0556, 0x0564, - 0x0572, 0x0584, 0x059b, 0x05ad, 0x05c7, 0x05c7, 0x05d1, 0x05e7, - 0x05f7, 0x060d, 0x061b, 0x062d, 0x0643, 0x0657, 0x0657, 0x0678, - 0x068c, 0x068c, 0x06a0, 0x06c5, 0x06e8, 0x06e8, 0x06e8, 0x06e8, - 0x0704, 0x0704, 0x070e, 0x0716, 0x0716, 0x0726, 0x0726, 0x0736, - // Entry 80 - BF - 0x0740, 0x075a, 0x0764, 0x077e, 0x078a, 0x079c, 0x07a8, 0x07be, - 0x07ce, 0x07ce, 0x07da, 0x07fa, 0x0804, 0x081a, 0x082c, 0x0840, - 0x0840, 0x0848, 0x085e, 0x0870, 0x0880, 0x0880, 0x0880, 0x0890, - 0x08a0, 0x08ae, 0x08c2, 0x08ce, 0x08e2, 0x08f0, 0x0900, 0x0916, - 0x0916, 0x092a, 0x093a, 0x093a, 0x094c, 0x094c, 0x095e, 0x0972, - 0x097a, 0x098c, 0x098c, 0x09a3, 0x09a3, 0x09a3, 0x09ad, 0x09b5, - 0x09bd, 0x09c7, 0x09c7, 0x09d9, 0x09e1, 0x09e1, 0x09e1, 0x09e1, - 0x09f5, 0x09f5, 0x09f5, 0x09fd, 0x09fd, 0x0a0d, 0x0a0d, 0x0a1d, - // Entry C0 - FF - 0x0a1d, 0x0a1d, 0x0a3b, 0x0a3b, 0x0a4f, 0x0a5b, 0x0a5b, 0x0a5b, - 0x0a5b, 0x0a5b, 0x0a5b, 0x0a5b, 0x0a61, 0x0a61, 0x0a77, 0x0a77, - 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, - 0x0a77, 0x0a81, 0x0a81, 0x0a89, 0x0a89, 0x0a89, 0x0aae, 0x0aae, - 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, - 0x0aae, 0x0ab6, 0x0ab6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, - 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ace, 0x0ace, 0x0ace, - 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ada, 0x0ada, 0x0afe, - // Entry 100 - 13F - 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b16, 0x0b16, - 0x0b16, 0x0b16, 0x0b16, 0x0b20, 0x0b20, 0x0b3a, 0x0b3a, 0x0b44, - 0x0b44, 0x0b5a, 0x0b5a, 0x0b5a, 0x0b62, 0x0b62, 0x0b62, 0x0b7e, - 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b92, - 0x0b92, 0x0b92, 0x0b92, 0x0b92, 0x0bb2, 0x0bb2, 0x0bb2, 0x0bb2, - 0x0bb2, 0x0bb2, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, - 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, - 0x0bc6, 0x0bde, 0x0c05, 0x0c05, 0x0c05, 0x0c0f, 0x0c0f, 0x0c0f, + "афарскаяабхазскаяафрыкаансаканамхарскаяарагонскаяарабскаяасамскаяаварска" + + "яаймараазербайджанскаябашкірскаябеларускаябалгарскаябісламабамбараб" + + "енгальскаятыбецкаябрэтонскаябаснійскаякаталанскаячачэнскаячаморакар" + + "сіканскаячэшскаяцаркоўнаславянскаячувашскаявалійскаядацкаянямецкаям" + + "альдыўскаядзонг-кээвегрэчаскаяанглійскаяэсперантаіспанскаяэстонская" + + "баскскаяфарсіфулафінскаяфіджыйскаяфарэрскаяфранцузскаязаходняя фрыз" + + "скаяірландскаяшатландская гэльскаягалісійскаягуаранігуджарацімэнска" + + "яхаусаіўрытхіндзіхарвацкаягаіцянская крэольскаявенгерскаяармянскаяг" + + "ерэраінтэрлінгваінданезійскаяінтэрлінгвэігбасычуаньская йіідаісланд" + + "скаяітальянскаяінуктытутяпонскаяяванскаягрузінскаякікуйюкуаньямаказ" + + "ахскаягрэнландскаякхмерскаяканадакарэйскаяканурыкашмірскаякурдскаяк" + + "омікорнскаякіргізскаялацінскаялюксембургскаягандалімбургскаялінгала" + + "лаоскаялітоўскаялуба-катангалатышскаямалагасійскаямаршальскаямаарым" + + "акедонскаямалаяламмангольскаямаратхімалайскаямальтыйскаябірманскаян" + + "аурупаўночная ндэбеленепальскаяндонганідэрландскаянарвежская (нюнош" + + "к)нарвежская (букмол)паўднёвая ндэбеленаваханьянджааксітанскаяаджыб" + + "вааромаорыяасецінскаяпанджабіпольскаяпуштупартугальскаякечуарэтарам" + + "анскаярундзірумынскаярускаяруандасанскрытсардзінскаясіндхіпаўночнас" + + "аамскаясангасінгальскаяславацкаяславенскаясамоашонасамаліалбанскаяс" + + "ербскаясуаціпаўднёвая сотасундашведскаясуахілітамільскаятэлугутаджы" + + "кскаятайскаятыгрыньятуркменскаятсванатанганскаятурэцкаятсонгататарс" + + "каятаіціуйгурскаяукраінскаяурдуузбекскаявендав’етнамскаявалапюквало" + + "нскаявалофкосаідышёрубакітайскаязулуачэхадангмэадыгейскаяагемайнска" + + "яакадскаяалеуцкаяпаўднёваалтайскаястараанглійскаяангікаарамейскаяма" + + "пудунгунарапахаасуастурыйскаяавадхібалійскаябасаабембабеназаходняя " + + "белуджскаябхаджпурыэдаблэкфутбодабурацкаябугісбіленсебуаначыгачыбча" + + "чуукмарычоктачэрокішэйенцэнтральнакурдскаякопцкаясэсэльвадакотадарг" + + "інскаятаітадогрыбзарманіжнялужыцкаядуаладжола-фоньідазагаэмбуэфікст" + + "аражытнаегіпецкаяэкаджукэвондафіліпінскаяфонстарафранцузскаяфрыульс" + + "каягагагаузскаягеэзкірыбацігаранталастаражытнагрэчаскаяшвейцарская " + + "нямецкаягусіігуіч’інгавайскаяхілігайнонхмонгверхнялужыцкаяхупаібані" + + "бібіяілаканаінгушскаяложбаннгомбамачамбэкабільскаякачынскаядджукамб" + + "акабардзінскаят’япмакондэкабувердыянукоракхасікойра чыінікакокаленд" + + "жынкімбундукомі-пярмяцкаяканканікпелекарачай-балкарскаякарэльскаяку" + + "рухшамбалабафіякёльнскаякумыцкаяладыналангілезгінскаялакотамонгалоз" + + "іпаўночная лурылуба-касаілундалуомізолуйямадурскаямагахімайтхілімак" + + "асармандынгмаасаймакшанскаямендэмерумарысьенмакуўа-меетаметамікмакм" + + "інангкабаумейтэймохакмосімундангнекалькі моўмускогімірандыйскаяэрзя" + + "нскаямазандэранскаянеапалітанскаянаманіжненямецкаянеўарыніасніўэнгу" + + "мбанг’ембоннагайскаястаранарвежскаянкопаўночная сотануэрньянколепан" + + "гасінанпампангапап’яментупалаунігерыйскі піджынстараперсідскаяфінік" + + "ійскаяпрускаястараправансальскаякічэраджастханскаярапануіраратонгро" + + "мбаарумунскаяруасандаўэякуцкаясамбурусанталінгамбайсангусіцылійская" + + "шатландскаяпаўднёвакурдскаясенакайрабора сэністараірландскаяташэльх" + + "ітшанпаўднёвасаамскаялуле-саамскаяінары-саамскаяколта-саамскаясанін" + + "кесранан-тонгасахасукумашумерскаякаморскаясірыйскаятэмнэтэсотэтумты" + + "грэклінганток-пісінтарокатумбукатувалутасаўактувінскаяцэнтральнаатл" + + "аская тамазіхтудмурцкаяумбундукораньваівунджовальшскаяволайтаварайв" + + "арлпірыкалмыцкаясогаянгбэнйембакантонскі дыялект кітайскайсапатэкст" + + "андартная мараканская тамазіхтзуніняма моўнага матэрыялузазакісучас" + + "ная стандартная арабскаяаўстрыйская нямецкаяшвейцарская стандартная" + + " нямецкаяаўстралійская англійскаяканадская англійскаябрытанская англ" + + "ійскаяамерыканская англійскаялацінаамерыканская іспанскаяеўрапейска" + + "я іспанскаямексіканская іспанскаяканадская французскаяшвейцарская ф" + + "ранцузскаяніжнесаксонскаяфламандскаябразільская партугальскаяеўрапе" + + "йская партугальскаямалдаўская румынскаясербскахарвацкаякангалезская" + + " суахіліспрошчаная кітайскаятрадыцыйная кітайская", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x003c, 0x004e, 0x0062, + 0x0072, 0x0082, 0x0092, 0x009e, 0x00bc, 0x00d0, 0x00e4, 0x00f8, + 0x0106, 0x0114, 0x012a, 0x013a, 0x014e, 0x0162, 0x0178, 0x018a, + 0x0196, 0x01ae, 0x01ae, 0x01bc, 0x01e0, 0x01f2, 0x0204, 0x0210, + 0x0220, 0x0236, 0x0245, 0x024b, 0x025d, 0x0271, 0x0283, 0x0295, + 0x02a7, 0x02b7, 0x02c1, 0x02c9, 0x02d7, 0x02eb, 0x02fd, 0x0313, + 0x0334, 0x0348, 0x036f, 0x0385, 0x0393, 0x03a5, 0x03b3, 0x03bd, + 0x03c7, 0x03d3, 0x03d3, 0x03e5, 0x040e, 0x0422, 0x0434, 0x0440, + // Entry 40 - 7F + 0x0456, 0x0470, 0x0486, 0x048e, 0x04a9, 0x04a9, 0x04af, 0x04c3, + 0x04d9, 0x04eb, 0x04fb, 0x050b, 0x051f, 0x051f, 0x052b, 0x053b, + 0x054d, 0x0565, 0x0577, 0x0583, 0x0595, 0x05a1, 0x05b5, 0x05c5, + 0x05cd, 0x05dd, 0x05f1, 0x0603, 0x061f, 0x0629, 0x063f, 0x064d, + 0x065b, 0x066d, 0x0684, 0x0696, 0x06b0, 0x06c6, 0x06d0, 0x06e6, + 0x06f6, 0x070c, 0x071a, 0x072c, 0x0742, 0x0756, 0x0760, 0x0781, + 0x0795, 0x07a1, 0x07bb, 0x07de, 0x0801, 0x0822, 0x082e, 0x083c, + 0x0852, 0x0860, 0x086a, 0x0872, 0x0886, 0x0896, 0x0896, 0x08a6, + // Entry 80 - BF + 0x08b0, 0x08ca, 0x08d4, 0x08ee, 0x08fa, 0x090c, 0x0918, 0x0924, + 0x0934, 0x094a, 0x0956, 0x0976, 0x0980, 0x0996, 0x09a8, 0x09bc, + 0x09c6, 0x09ce, 0x09da, 0x09ec, 0x09fc, 0x0a06, 0x0a21, 0x0a2b, + 0x0a3b, 0x0a49, 0x0a5d, 0x0a69, 0x0a7d, 0x0a8b, 0x0a9b, 0x0ab1, + 0x0abd, 0x0ad1, 0x0ae1, 0x0aed, 0x0aff, 0x0b09, 0x0b1b, 0x0b2f, + 0x0b37, 0x0b49, 0x0b53, 0x0b6a, 0x0b78, 0x0b8a, 0x0b94, 0x0b9c, + 0x0ba4, 0x0bae, 0x0bae, 0x0bc0, 0x0bc8, 0x0bd0, 0x0bd0, 0x0bde, + 0x0bf2, 0x0bf2, 0x0bf2, 0x0bfa, 0x0c08, 0x0c18, 0x0c18, 0x0c28, + // Entry C0 - FF + 0x0c28, 0x0c4a, 0x0c68, 0x0c74, 0x0c88, 0x0c9c, 0x0c9c, 0x0caa, + 0x0caa, 0x0caa, 0x0caa, 0x0caa, 0x0caa, 0x0cb0, 0x0cb0, 0x0cc6, + 0x0cc6, 0x0cd2, 0x0cd2, 0x0ce4, 0x0ce4, 0x0cee, 0x0cee, 0x0cee, + 0x0cee, 0x0cee, 0x0cf8, 0x0cf8, 0x0d00, 0x0d00, 0x0d00, 0x0d25, + 0x0d37, 0x0d37, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d4b, 0x0d4b, 0x0d4b, + 0x0d4b, 0x0d4b, 0x0d53, 0x0d53, 0x0d63, 0x0d6d, 0x0d6d, 0x0d77, + 0x0d77, 0x0d77, 0x0d77, 0x0d77, 0x0d77, 0x0d85, 0x0d8d, 0x0d97, + 0x0d97, 0x0d9f, 0x0da7, 0x0da7, 0x0db1, 0x0db1, 0x0dbd, 0x0dc7, + // Entry 100 - 13F + 0x0deb, 0x0df9, 0x0df9, 0x0df9, 0x0e09, 0x0e09, 0x0e15, 0x0e29, + 0x0e33, 0x0e33, 0x0e33, 0x0e3f, 0x0e3f, 0x0e49, 0x0e49, 0x0e63, + 0x0e63, 0x0e6d, 0x0e6d, 0x0e82, 0x0e82, 0x0e8e, 0x0e96, 0x0e9e, + 0x0e9e, 0x0ec4, 0x0ed2, 0x0ed2, 0x0ed2, 0x0ed2, 0x0ede, 0x0ede, + 0x0ede, 0x0ef4, 0x0ef4, 0x0efa, 0x0efa, 0x0efa, 0x0f1a, 0x0f1a, + 0x0f1a, 0x0f1a, 0x0f2e, 0x0f32, 0x0f46, 0x0f46, 0x0f46, 0x0f46, + 0x0f46, 0x0f4e, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, + 0x0f70, 0x0f70, 0x0f70, 0x0f96, 0x0fbd, 0x0fbd, 0x0fbd, 0x0fc7, // Entry 140 - 17F - 0x0c0f, 0x0c21, 0x0c21, 0x0c21, 0x0c21, 0x0c21, 0x0c3d, 0x0c3d, - 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, - 0x0c49, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c69, 0x0c69, - 0x0c69, 0x0c73, 0x0c73, 0x0c73, 0x0c73, 0x0c73, 0x0c81, 0x0c9b, - 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0cb0, 0x0cb0, 0x0cb0, - 0x0cb0, 0x0cc2, 0x0cc2, 0x0cdd, 0x0ceb, 0x0ceb, 0x0ceb, 0x0ceb, - 0x0ceb, 0x0ceb, 0x0ceb, 0x0ceb, 0x0cf9, 0x0d03, 0x0d03, 0x0d03, - 0x0d03, 0x0d03, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, + 0x0fd6, 0x0fd6, 0x0fd6, 0x0fe8, 0x0fe8, 0x0ffc, 0x0ffc, 0x1006, + 0x1022, 0x1022, 0x102a, 0x1032, 0x103e, 0x104c, 0x105e, 0x105e, + 0x105e, 0x106a, 0x1076, 0x1084, 0x1084, 0x1084, 0x1084, 0x1084, + 0x1098, 0x10aa, 0x10b2, 0x10bc, 0x10bc, 0x10d6, 0x10d6, 0x10df, + 0x10ed, 0x1105, 0x1105, 0x110d, 0x110d, 0x1117, 0x1117, 0x112c, + 0x112c, 0x112c, 0x1134, 0x1146, 0x1156, 0x1171, 0x117f, 0x117f, + 0x1189, 0x11ac, 0x11ac, 0x11ac, 0x11c0, 0x11ca, 0x11d8, 0x11e2, + 0x11f4, 0x1204, 0x1204, 0x1210, 0x121a, 0x121a, 0x121a, 0x122e, // Entry 180 - 1BF - 0x0d0d, 0x0d19, 0x0d19, 0x0d19, 0x0d19, 0x0d32, 0x0d32, 0x0d32, - 0x0d32, 0x0d32, 0x0d38, 0x0d38, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, - 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d48, 0x0d48, 0x0d48, - 0x0d48, 0x0d48, 0x0d50, 0x0d68, 0x0d68, 0x0d7d, 0x0d85, 0x0d85, - 0x0d85, 0x0d85, 0x0d85, 0x0d99, 0x0d99, 0x0d99, 0x0da7, 0x0da7, - 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0dc3, 0x0dc3, - 0x0dc3, 0x0dcb, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0df1, - 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0df7, 0x0df7, 0x0dff, 0x0dff, + 0x122e, 0x122e, 0x122e, 0x123a, 0x123a, 0x1244, 0x124c, 0x1267, + 0x1267, 0x127a, 0x127a, 0x1284, 0x128a, 0x1292, 0x129a, 0x129a, + 0x129a, 0x12ac, 0x12ac, 0x12b8, 0x12c8, 0x12d6, 0x12e4, 0x12f0, + 0x12f0, 0x1304, 0x1304, 0x130e, 0x1316, 0x1326, 0x1326, 0x133d, + 0x1345, 0x1351, 0x1367, 0x1367, 0x1373, 0x137d, 0x1385, 0x1385, + 0x1393, 0x13aa, 0x13b8, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13e2, + 0x13fe, 0x13fe, 0x141a, 0x1422, 0x143c, 0x1448, 0x1450, 0x1458, + 0x1458, 0x1464, 0x1475, 0x1487, 0x14a5, 0x14a5, 0x14ab, 0x14c6, // Entry 1C0 - 1FF - 0x0dff, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, - 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, - 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e17, 0x0e17, - 0x0e17, 0x0e17, 0x0e17, 0x0e17, 0x0e17, 0x0e21, 0x0e21, 0x0e21, - 0x0e21, 0x0e21, 0x0e21, 0x0e27, 0x0e27, 0x0e35, 0x0e35, 0x0e43, - 0x0e43, 0x0e43, 0x0e43, 0x0e43, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, - 0x0e6d, 0x0e6d, 0x0e75, 0x0e75, 0x0e75, 0x0e92, 0x0e92, 0x0e92, - 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ec2, 0x0edb, + 0x14ce, 0x14ce, 0x14ce, 0x14de, 0x14de, 0x14de, 0x14de, 0x14de, + 0x14f2, 0x14f2, 0x1502, 0x1517, 0x1521, 0x1521, 0x1542, 0x1542, + 0x1542, 0x1560, 0x1560, 0x1576, 0x1576, 0x1576, 0x1576, 0x1584, + 0x15aa, 0x15b2, 0x15b2, 0x15ce, 0x15dc, 0x15ec, 0x15ec, 0x15ec, + 0x15f6, 0x15f6, 0x15f6, 0x15f6, 0x15f6, 0x160a, 0x1610, 0x161e, + 0x162c, 0x162c, 0x163a, 0x163a, 0x1648, 0x1648, 0x1656, 0x1660, + 0x1676, 0x168c, 0x168c, 0x16ac, 0x16ac, 0x16b4, 0x16b4, 0x16b4, + 0x16cf, 0x16ed, 0x16ed, 0x16ff, 0x1705, 0x1705, 0x1705, 0x1705, // Entry 200 - 23F - 0x0ef6, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, - 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, - 0x0f11, 0x0f19, 0x0f19, 0x0f19, 0x0f19, 0x0f19, 0x0f19, 0x0f19, - 0x0f27, 0x0f27, 0x0f27, 0x0f27, 0x0f27, 0x0f27, 0x0f27, 0x0f27, - 0x0f27, 0x0f27, 0x0f27, 0x0f27, 0x0f27, 0x0f35, 0x0f35, 0x0f54, - 0x0f54, 0x0f54, 0x0f54, 0x0f6f, 0x0f75, 0x0f75, 0x0f75, 0x0f75, - 0x0f75, 0x0f75, 0x0f75, 0x0f7f, 0x0f7f, 0x0f7f, 0x0f7f, 0x0f7f, - 0x0f8f, 0x0f8f, 0x0f8f, 0x0f8f, 0x0f97, 0x0f97, 0x0f97, 0x0f97, + 0x1705, 0x1725, 0x173e, 0x1759, 0x1774, 0x1782, 0x1782, 0x1799, + 0x1799, 0x17a1, 0x17a1, 0x17ad, 0x17ad, 0x17bf, 0x17d1, 0x17d1, + 0x17e3, 0x17e3, 0x17e3, 0x17ed, 0x17f5, 0x17f5, 0x17ff, 0x1809, + 0x1809, 0x1809, 0x1809, 0x1817, 0x1817, 0x1817, 0x1817, 0x1817, + 0x1828, 0x1828, 0x1834, 0x1834, 0x1834, 0x1834, 0x1842, 0x184e, + 0x185c, 0x186e, 0x18a3, 0x18b5, 0x18b5, 0x18c3, 0x18cf, 0x18d5, + 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18e1, 0x18f3, + 0x1901, 0x190b, 0x190b, 0x191b, 0x191b, 0x192d, 0x192d, 0x1935, // Entry 240 - 27F - 0x0f97, 0x0f97, 0x0f97, 0x0f97, 0x0f97, 0x0f97, 0x0f97, 0x0fd3, - 0x0fd3, 0x0ffd, 0x0ffd, 0x1035, 0x1035, 0x1053, 0x1071, 0x1097, - 0x10b9, 0x10b9, 0x10d6, 0x1100, 0x1120, 0x1146, 0x1146, 0x116a, - 0x118e, 0x11ac, 0x11c2, 0x11ec, 0x1214, 0x1228, 0x1249, 0x1262, - 0x1289, 0x12b2, + 0x1935, 0x1935, 0x1941, 0x194b, 0x194b, 0x197f, 0x198d, 0x198d, + 0x198d, 0x198d, 0x19cb, 0x19d3, 0x19fd, 0x1a09, 0x1a41, 0x1a41, + 0x1a68, 0x1aa6, 0x1ad5, 0x1afc, 0x1b25, 0x1b52, 0x1b89, 0x1bb2, + 0x1bdd, 0x1bdd, 0x1c06, 0x1c33, 0x1c51, 0x1c67, 0x1c98, 0x1cc9, + 0x1cf0, 0x1d10, 0x1d37, 0x1d5e, 0x1d87, }, }, { // bem @@ -622,7 +932,7 @@ var langHeaders = [220]header{ "iIchi RomanianiIchi RusianiIchi RwandaIchi SomaliaIchi SwideniIchi T" + "amilIchi ThaiIchi TakishiIchi UkranianiIchi UruduIchi VietinamuIchi " + "YorubaIchi ChainisiIchi ZuluIchibemba", - []uint16{ // 218 elements + []uint16{ // 219 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0029, 0x0038, @@ -654,7 +964,7 @@ var langHeaders = [220]header{ 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x0205, + 0x01fc, 0x01fc, 0x0205, }, }, { // bez @@ -664,7 +974,7 @@ var langHeaders = [220]header{ "inepaliHiholanziHipunjabiHipolandiHilenoHilomaniaHilusiHinyarwandaHi" + "somaliHiswidiHitamilHitailandHitulukiHiukraniaHiurduHivietinamuHiyor" + "ubaHichinaHizuluHibena", - []uint16{ // 220 elements + []uint16{ // 221 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, @@ -696,7 +1006,7 @@ var langHeaders = [220]header{ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x016e, + 0x0168, 0x0168, 0x0168, 0x0168, 0x016e, }, }, { // bg @@ -744,11 +1054,70 @@ var langHeaders = [220]header{ bnLangStr, bnLangIdx, }, + { // bn-IN + "কোলোনিয়ান", + []uint16{ // 377 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry C0 - FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 100 - 13F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 140 - 17F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x001e, + }, + }, { // bo "བོད་སྐད་རྫོང་ཁདབྱིན་ཇིའི་སྐད།ཧིན་དིཉི་ཧོང་སྐད་ནེ་པ་ལིཨུ་རུ་སུ་སྐད་རྒྱ་སྐ" + "ད་ཟ་ཟའ་སྐད།དབྱིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)དབྱིན་ཇིའི་སྐད། (དབྱིན་ལན་)དབྱ" + "ིན་ཇིའི་སྐད། (ཨ་རི་)", - []uint16{ // 595 elements + []uint16{ // 598 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -832,8 +1201,8 @@ var langHeaders = [220]header{ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, // Entry 240 - 27F 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, - 0x013e, 0x0189, 0x01c8, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00f9, 0x00f9, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x013e, 0x0189, 0x01c8, }, }, {}, // bo-IN @@ -896,7 +1265,7 @@ var langHeaders = [220]header{ "g Kanadagalleg Suissaksoneg izelflandrezegportugaleg Brazilportugale" + "g Europamoldovegserb-kroategswahili Kongosinaeg eeunaetsinaeg hengou" + "nel", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x0020, 0x0027, 0x002f, 0x0035, 0x003b, 0x003f, 0x0045, 0x0052, 0x0059, 0x0062, 0x006a, @@ -926,64 +1295,64 @@ var langHeaders = [220]header{ 0x0557, 0x0565, 0x056d, 0x0572, 0x0579, 0x057f, 0x0588, 0x0590, // Entry C0 - FF 0x0595, 0x05a2, 0x05ac, 0x05b2, 0x05b9, 0x05c3, 0x05c9, 0x05d0, - 0x05de, 0x05e6, 0x05f3, 0x05ff, 0x0602, 0x0615, 0x061f, 0x061f, - 0x0625, 0x062e, 0x0635, 0x063d, 0x0642, 0x0642, 0x0642, 0x0642, - 0x064a, 0x064f, 0x064f, 0x0653, 0x0653, 0x0653, 0x066a, 0x0672, - 0x0677, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067f, - 0x0686, 0x068a, 0x0690, 0x0697, 0x069b, 0x069b, 0x069f, 0x069f, - 0x06a4, 0x06ab, 0x06ab, 0x06b0, 0x06b7, 0x06b7, 0x06be, 0x06be, - 0x06be, 0x06c4, 0x06c4, 0x06cb, 0x06d4, 0x06dc, 0x06e4, 0x06f1, - // Entry 100 - 13F - 0x06f7, 0x06f7, 0x0704, 0x070d, 0x0713, 0x0719, 0x0719, 0x0721, - 0x0721, 0x0727, 0x072c, 0x072c, 0x0731, 0x073c, 0x073c, 0x073c, - 0x074d, 0x074d, 0x0752, 0x0752, 0x0756, 0x075a, 0x075a, 0x0764, - 0x076a, 0x0770, 0x077c, 0x077c, 0x0782, 0x0782, 0x0786, 0x078f, - 0x07a9, 0x07ac, 0x07b8, 0x07c6, 0x07d2, 0x07db, 0x07ea, 0x07f9, - 0x0803, 0x0805, 0x080e, 0x0818, 0x081c, 0x0821, 0x0821, 0x0826, - 0x082f, 0x082f, 0x0841, 0x0851, 0x0851, 0x0851, 0x085a, 0x085f, - 0x0864, 0x0873, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0885, + 0x05de, 0x05de, 0x05e6, 0x05f3, 0x05ff, 0x0602, 0x0615, 0x061f, + 0x061f, 0x0625, 0x062e, 0x0635, 0x063d, 0x0642, 0x0642, 0x0642, + 0x0642, 0x064a, 0x064f, 0x064f, 0x0653, 0x0653, 0x0653, 0x066a, + 0x0672, 0x0677, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, + 0x067f, 0x0686, 0x068a, 0x0690, 0x0697, 0x069b, 0x069b, 0x069f, + 0x069f, 0x06a4, 0x06ab, 0x06ab, 0x06b0, 0x06b7, 0x06b7, 0x06be, + 0x06be, 0x06be, 0x06c4, 0x06c4, 0x06cb, 0x06d4, 0x06dc, 0x06e4, + // Entry 100 - 13F + 0x06f1, 0x06f7, 0x06f7, 0x0704, 0x0704, 0x070d, 0x0713, 0x0719, + 0x0719, 0x0721, 0x0721, 0x0727, 0x072c, 0x072c, 0x0731, 0x073c, + 0x073c, 0x073c, 0x074d, 0x074d, 0x0752, 0x0752, 0x0756, 0x075a, + 0x075a, 0x0764, 0x076a, 0x0770, 0x077c, 0x077c, 0x0782, 0x0782, + 0x0786, 0x078f, 0x07a9, 0x07ac, 0x07b8, 0x07c6, 0x07d2, 0x07db, + 0x07ea, 0x07f9, 0x0803, 0x0805, 0x080e, 0x0818, 0x081c, 0x0821, + 0x0821, 0x0826, 0x082f, 0x082f, 0x0841, 0x0851, 0x0851, 0x0851, + 0x085a, 0x085f, 0x0864, 0x0873, 0x0880, 0x0880, 0x0880, 0x0880, // Entry 140 - 17F - 0x0891, 0x0898, 0x0898, 0x08a2, 0x08a2, 0x08a7, 0x08b2, 0x08bd, - 0x08c1, 0x08c5, 0x08cb, 0x08cb, 0x08d4, 0x08d4, 0x08e3, 0x08e3, - 0x08e3, 0x08e3, 0x08ef, 0x08fb, 0x08fb, 0x0905, 0x090c, 0x0912, - 0x0912, 0x0917, 0x0917, 0x091f, 0x091f, 0x091f, 0x091f, 0x092b, - 0x092b, 0x092b, 0x092b, 0x0930, 0x0938, 0x0938, 0x0938, 0x0938, - 0x0938, 0x0938, 0x0940, 0x0940, 0x0947, 0x094d, 0x0953, 0x0963, - 0x0963, 0x0963, 0x096b, 0x0971, 0x0971, 0x0971, 0x0978, 0x0978, - 0x097f, 0x0985, 0x0985, 0x098b, 0x0990, 0x0995, 0x09a7, 0x09af, + 0x0880, 0x0885, 0x0891, 0x0898, 0x0898, 0x08a2, 0x08a2, 0x08a7, + 0x08b2, 0x08bd, 0x08c1, 0x08c5, 0x08cb, 0x08cb, 0x08d4, 0x08d4, + 0x08e3, 0x08e3, 0x08e3, 0x08e3, 0x08ef, 0x08fb, 0x08fb, 0x0905, + 0x090c, 0x0912, 0x0912, 0x0917, 0x0917, 0x091f, 0x091f, 0x091f, + 0x091f, 0x092b, 0x092b, 0x092b, 0x092b, 0x0930, 0x0938, 0x0938, + 0x0938, 0x0938, 0x0938, 0x0938, 0x0940, 0x0940, 0x0947, 0x094d, + 0x0953, 0x0963, 0x0963, 0x0963, 0x096b, 0x0971, 0x0971, 0x0971, + 0x0978, 0x0978, 0x097f, 0x0985, 0x0985, 0x098b, 0x0990, 0x0995, // Entry 180 - 1BF - 0x09af, 0x09af, 0x09af, 0x09b4, 0x09b8, 0x09b8, 0x09b8, 0x09c2, - 0x09c9, 0x09ce, 0x09d1, 0x09d7, 0x09dc, 0x09eb, 0x09eb, 0x09eb, - 0x09eb, 0x09f1, 0x09f9, 0x09f9, 0x09f9, 0x09fe, 0x09fe, 0x0a04, - 0x0a0a, 0x0a0f, 0x0a0f, 0x0a16, 0x0a25, 0x0a25, 0x0a25, 0x0a25, - 0x0a25, 0x0a2c, 0x0a34, 0x0a3a, 0x0a3a, 0x0a4e, 0x0a4e, 0x0a5a, - 0x0a61, 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a6d, 0x0a6d, 0x0a7b, - 0x0a86, 0x0a86, 0x0a93, 0x0a99, 0x0a9d, 0x0aa1, 0x0aa5, 0x0aa5, - 0x0aa5, 0x0aaa, 0x0ab3, 0x0ab9, 0x0ab9, 0x0ac7, 0x0ac7, 0x0ad4, + 0x09a7, 0x09af, 0x09af, 0x09af, 0x09af, 0x09b4, 0x09b8, 0x09b8, + 0x09b8, 0x09c2, 0x09c9, 0x09ce, 0x09d1, 0x09d7, 0x09dc, 0x09eb, + 0x09eb, 0x09eb, 0x09eb, 0x09f1, 0x09f9, 0x09f9, 0x09f9, 0x09fe, + 0x09fe, 0x0a04, 0x0a0a, 0x0a0f, 0x0a0f, 0x0a16, 0x0a25, 0x0a25, + 0x0a25, 0x0a25, 0x0a25, 0x0a2c, 0x0a34, 0x0a3a, 0x0a3a, 0x0a4e, + 0x0a4e, 0x0a5a, 0x0a61, 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a6d, + 0x0a6d, 0x0a7b, 0x0a86, 0x0a86, 0x0a93, 0x0a99, 0x0a9d, 0x0aa1, + 0x0aa5, 0x0aa5, 0x0aa5, 0x0aaa, 0x0ab3, 0x0ab9, 0x0ab9, 0x0ac7, // Entry 1C0 - 1FF - 0x0adc, 0x0ae4, 0x0ae9, 0x0ae9, 0x0aee, 0x0afb, 0x0b05, 0x0b0c, - 0x0b14, 0x0b1e, 0x0b23, 0x0b2b, 0x0b40, 0x0b40, 0x0b49, 0x0b49, - 0x0b53, 0x0b5c, 0x0b62, 0x0b69, 0x0b72, 0x0b7f, 0x0b7f, 0x0b92, - 0x0b9c, 0x0ba3, 0x0bac, 0x0bb6, 0x0bb6, 0x0bbb, 0x0bc3, 0x0bc3, - 0x0bc3, 0x0bc3, 0x0bcc, 0x0bcf, 0x0bd6, 0x0bde, 0x0bf4, 0x0bf4, - 0x0bf9, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c08, 0x0c0e, 0x0c17, - 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c24, 0x0c24, - 0x0c2e, 0x0c32, 0x0c3e, 0x0c44, 0x0c44, 0x0c44, 0x0c4f, 0x0c5b, + 0x0ac7, 0x0ad4, 0x0adc, 0x0ae4, 0x0ae9, 0x0ae9, 0x0aee, 0x0afb, + 0x0b05, 0x0b0c, 0x0b14, 0x0b1e, 0x0b23, 0x0b2b, 0x0b2b, 0x0b40, + 0x0b40, 0x0b49, 0x0b49, 0x0b53, 0x0b5c, 0x0b62, 0x0b69, 0x0b72, + 0x0b7f, 0x0b7f, 0x0b92, 0x0b9c, 0x0ba3, 0x0bac, 0x0bb6, 0x0bb6, + 0x0bbb, 0x0bc3, 0x0bc3, 0x0bc3, 0x0bc3, 0x0bcc, 0x0bcf, 0x0bd6, + 0x0bde, 0x0bf4, 0x0bf4, 0x0bf9, 0x0c00, 0x0c00, 0x0c00, 0x0c00, + 0x0c08, 0x0c0e, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, + 0x0c17, 0x0c24, 0x0c24, 0x0c2e, 0x0c32, 0x0c3e, 0x0c44, 0x0c44, // Entry 200 - 23F - 0x0c66, 0x0c71, 0x0c78, 0x0c7f, 0x0c7f, 0x0c84, 0x0c84, 0x0c84, - 0x0c84, 0x0c84, 0x0c8b, 0x0c92, 0x0c9f, 0x0ca5, 0x0cad, 0x0cb5, - 0x0cb5, 0x0cb5, 0x0cbb, 0x0cc0, 0x0cc9, 0x0ccc, 0x0cd3, 0x0cd3, - 0x0cda, 0x0ce1, 0x0ce1, 0x0ce9, 0x0cf4, 0x0cfd, 0x0d05, 0x0d05, - 0x0d05, 0x0d0e, 0x0d0e, 0x0d15, 0x0d1b, 0x0d1b, 0x0d20, 0x0d35, - 0x0d3f, 0x0d48, 0x0d4f, 0x0d5a, 0x0d5d, 0x0d65, 0x0d6b, 0x0d84, - 0x0d84, 0x0d8c, 0x0d92, 0x0d92, 0x0d98, 0x0d9e, 0x0da3, 0x0da8, - 0x0da8, 0x0db1, 0x0db8, 0x0dc0, 0x0dc0, 0x0dc3, 0x0dc8, 0x0dc8, + 0x0c44, 0x0c4f, 0x0c5b, 0x0c66, 0x0c71, 0x0c78, 0x0c7f, 0x0c7f, + 0x0c84, 0x0c84, 0x0c84, 0x0c84, 0x0c84, 0x0c8b, 0x0c92, 0x0c9f, + 0x0ca5, 0x0cad, 0x0cb5, 0x0cb5, 0x0cb5, 0x0cbb, 0x0cc0, 0x0cc9, + 0x0ccc, 0x0cd3, 0x0cd3, 0x0cda, 0x0ce1, 0x0ce1, 0x0ce9, 0x0cf4, + 0x0cfd, 0x0d05, 0x0d05, 0x0d05, 0x0d0e, 0x0d0e, 0x0d15, 0x0d1b, + 0x0d1b, 0x0d20, 0x0d35, 0x0d3f, 0x0d48, 0x0d4f, 0x0d5a, 0x0d5d, + 0x0d65, 0x0d6b, 0x0d84, 0x0d84, 0x0d8c, 0x0d92, 0x0d92, 0x0d98, + 0x0d9e, 0x0da3, 0x0da8, 0x0da8, 0x0db1, 0x0db8, 0x0dc0, 0x0dc0, // Entry 240 - 27F - 0x0dc8, 0x0dc8, 0x0dd0, 0x0dd7, 0x0ddc, 0x0de4, 0x0dea, 0x0e02, - 0x0e06, 0x0e0c, 0x0e0c, 0x0e19, 0x0e19, 0x0e29, 0x0e3b, 0x0e4c, - 0x0e5a, 0x0e6d, 0x0e7c, 0x0e93, 0x0ea3, 0x0eb6, 0x0eb6, 0x0ec3, - 0x0ece, 0x0edb, 0x0ee5, 0x0ef6, 0x0f07, 0x0f0f, 0x0f1b, 0x0f28, - 0x0f36, 0x0f46, + 0x0dc3, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dd0, 0x0dd7, 0x0ddc, + 0x0de4, 0x0dea, 0x0e02, 0x0e06, 0x0e0c, 0x0e0c, 0x0e19, 0x0e19, + 0x0e29, 0x0e3b, 0x0e4c, 0x0e5a, 0x0e6d, 0x0e7c, 0x0e93, 0x0ea3, + 0x0eb6, 0x0eb6, 0x0ec3, 0x0ece, 0x0edb, 0x0ee5, 0x0ef6, 0x0f07, + 0x0f0f, 0x0f1b, 0x0f28, 0x0f36, 0x0f46, }, }, { // brx @@ -1037,7 +1406,7 @@ var langHeaders = [220]header{ "ंग्रेजी (ब्रिटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्पैनिशईवेरियाई स्" + "पैनिशफ्रांसीसी (कनाडाई)फ्रांसीसी (स्वीस)फ्लेमीमोल्डेवियन्सर्बो-क्र" + "ोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0021, 0x0036, 0x004b, 0x0054, 0x006f, 0x0084, 0x0090, 0x009f, 0x00b4, 0x00c6, 0x00e4, 0x00f9, 0x011a, 0x0138, @@ -1067,215 +1436,216 @@ var langHeaders = [220]header{ 0x0fc0, 0x0fc0, 0x0fdb, 0x0fdb, 0x0fe4, 0x0ff9, 0x0ff9, 0x1005, // Entry C0 - FF 0x1005, 0x1005, 0x1033, 0x1045, 0x105a, 0x105a, 0x105a, 0x106f, - 0x106f, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, - 0x108d, 0x109c, 0x10ae, 0x10ae, 0x10c3, 0x10c3, 0x10c3, 0x10c3, - 0x10cf, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10f3, - 0x1105, 0x1111, 0x1111, 0x1111, 0x1126, 0x1126, 0x1126, 0x1132, - 0x1132, 0x113e, 0x113e, 0x1153, 0x1165, 0x1165, 0x1174, 0x1174, - 0x1186, 0x1198, 0x1198, 0x11a7, 0x11bc, 0x11bc, 0x11cb, 0x11da, - 0x11ec, 0x11f8, 0x1220, 0x1232, 0x1250, 0x1262, 0x1274, 0x1274, - // Entry 100 - 13F - 0x128c, 0x128c, 0x12b7, 0x12d5, 0x12e4, 0x12f6, 0x12f6, 0x130b, - 0x131d, 0x1332, 0x1344, 0x1344, 0x1353, 0x136e, 0x136e, 0x137d, - 0x1390, 0x1390, 0x13a5, 0x13a5, 0x13a5, 0x13b4, 0x13b4, 0x13dc, - 0x13ee, 0x13fd, 0x1425, 0x1425, 0x1437, 0x1437, 0x1446, 0x145e, - 0x145e, 0x1467, 0x1467, 0x148f, 0x14bd, 0x14bd, 0x14ee, 0x151f, - 0x153d, 0x1543, 0x1543, 0x1543, 0x154f, 0x1561, 0x1561, 0x1570, - 0x1588, 0x1588, 0x15c0, 0x15fe, 0x15fe, 0x160d, 0x1625, 0x1634, - 0x1646, 0x166e, 0x168d, 0x168d, 0x168d, 0x168d, 0x16a5, 0x16b1, + 0x106f, 0x106f, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, + 0x1081, 0x108d, 0x109c, 0x10ae, 0x10ae, 0x10c3, 0x10c3, 0x10c3, + 0x10c3, 0x10cf, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, + 0x10f3, 0x1105, 0x1111, 0x1111, 0x1111, 0x1126, 0x1126, 0x1126, + 0x1132, 0x1132, 0x113e, 0x113e, 0x1153, 0x1165, 0x1165, 0x1174, + 0x1174, 0x1186, 0x1198, 0x1198, 0x11a7, 0x11bc, 0x11bc, 0x11cb, + 0x11da, 0x11ec, 0x11f8, 0x1220, 0x1232, 0x1250, 0x1262, 0x1274, + // Entry 100 - 13F + 0x1274, 0x128c, 0x128c, 0x12b7, 0x12b7, 0x12d5, 0x12e4, 0x12f6, + 0x12f6, 0x130b, 0x131d, 0x1332, 0x1344, 0x1344, 0x1353, 0x136e, + 0x136e, 0x137d, 0x1390, 0x1390, 0x13a5, 0x13a5, 0x13a5, 0x13b4, + 0x13b4, 0x13dc, 0x13ee, 0x13fd, 0x1425, 0x1425, 0x1437, 0x1437, + 0x1446, 0x145e, 0x145e, 0x1467, 0x1467, 0x148f, 0x14bd, 0x14bd, + 0x14ee, 0x151f, 0x153d, 0x1543, 0x1543, 0x1543, 0x154f, 0x1561, + 0x1561, 0x1570, 0x1588, 0x1588, 0x15c0, 0x15fe, 0x15fe, 0x160d, + 0x1625, 0x1634, 0x1646, 0x166e, 0x168d, 0x168d, 0x168d, 0x168d, // Entry 140 - 17F - 0x16b1, 0x16c3, 0x16c3, 0x16de, 0x16f0, 0x1702, 0x1727, 0x1727, - 0x1733, 0x1742, 0x1742, 0x1751, 0x1760, 0x1760, 0x1760, 0x1772, - 0x1772, 0x1772, 0x1794, 0x17b0, 0x17b0, 0x17c9, 0x17db, 0x17ea, - 0x17f0, 0x17fc, 0x1808, 0x182a, 0x182a, 0x183c, 0x183c, 0x183c, - 0x183c, 0x1848, 0x1848, 0x1857, 0x186c, 0x186c, 0x186c, 0x186c, - 0x186c, 0x186c, 0x1884, 0x1884, 0x1896, 0x18b4, 0x18c6, 0x18eb, - 0x18eb, 0x18eb, 0x1903, 0x1918, 0x1918, 0x1918, 0x1918, 0x192a, - 0x193f, 0x1954, 0x1954, 0x1969, 0x1978, 0x1993, 0x1993, 0x1993, + 0x16a5, 0x16b1, 0x16b1, 0x16c3, 0x16c3, 0x16de, 0x16f0, 0x1702, + 0x1727, 0x1727, 0x1733, 0x1742, 0x1742, 0x1751, 0x1760, 0x1760, + 0x1760, 0x1772, 0x1772, 0x1772, 0x1794, 0x17b0, 0x17b0, 0x17c9, + 0x17db, 0x17ea, 0x17f0, 0x17fc, 0x1808, 0x182a, 0x182a, 0x183c, + 0x183c, 0x183c, 0x183c, 0x1848, 0x1848, 0x1857, 0x186c, 0x186c, + 0x186c, 0x186c, 0x186c, 0x186c, 0x1884, 0x1884, 0x1896, 0x18b4, + 0x18c6, 0x18eb, 0x18eb, 0x18eb, 0x1903, 0x1918, 0x1918, 0x1918, + 0x1918, 0x192a, 0x193f, 0x1954, 0x1954, 0x1969, 0x1978, 0x1993, // Entry 180 - 1BF - 0x1993, 0x1993, 0x1993, 0x19a2, 0x19b1, 0x19b1, 0x19b1, 0x19cd, - 0x19e2, 0x19f1, 0x19fa, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a1b, - 0x1a1b, 0x1a24, 0x1a36, 0x1a45, 0x1a5d, 0x1a69, 0x1a69, 0x1a7b, - 0x1a8a, 0x1a99, 0x1a99, 0x1a99, 0x1ac2, 0x1ac2, 0x1ac2, 0x1ad4, - 0x1af2, 0x1b01, 0x1b16, 0x1b25, 0x1b37, 0x1b37, 0x1b37, 0x1b37, - 0x1b46, 0x1b5b, 0x1b73, 0x1b73, 0x1b73, 0x1b8b, 0x1b8b, 0x1b8b, - 0x1ba6, 0x1ba6, 0x1bd5, 0x1be7, 0x1bf6, 0x1c0b, 0x1c0b, 0x1c0b, - 0x1c0b, 0x1c1a, 0x1c3f, 0x1c3f, 0x1c4e, 0x1c4e, 0x1c4e, 0x1c73, + 0x1993, 0x1993, 0x1993, 0x1993, 0x1993, 0x19a2, 0x19b1, 0x19b1, + 0x19b1, 0x19cd, 0x19e2, 0x19f1, 0x19fa, 0x1a09, 0x1a09, 0x1a09, + 0x1a09, 0x1a1b, 0x1a1b, 0x1a24, 0x1a36, 0x1a45, 0x1a5d, 0x1a69, + 0x1a69, 0x1a7b, 0x1a8a, 0x1a99, 0x1a99, 0x1a99, 0x1ac2, 0x1ac2, + 0x1ac2, 0x1ad4, 0x1af2, 0x1b01, 0x1b16, 0x1b25, 0x1b37, 0x1b37, + 0x1b37, 0x1b37, 0x1b46, 0x1b5b, 0x1b73, 0x1b73, 0x1b73, 0x1b8b, + 0x1b8b, 0x1b8b, 0x1ba6, 0x1ba6, 0x1bd5, 0x1be7, 0x1bf6, 0x1c0b, + 0x1c0b, 0x1c0b, 0x1c0b, 0x1c1a, 0x1c3f, 0x1c3f, 0x1c4e, 0x1c4e, // Entry 1C0 - 1FF - 0x1c91, 0x1cac, 0x1cbe, 0x1cd3, 0x1cdf, 0x1d04, 0x1d1f, 0x1d2e, - 0x1d40, 0x1d61, 0x1d70, 0x1d70, 0x1d70, 0x1d70, 0x1d95, 0x1d95, - 0x1da7, 0x1da7, 0x1da7, 0x1db9, 0x1db9, 0x1dea, 0x1dea, 0x1dea, - 0x1e05, 0x1e1a, 0x1e35, 0x1e35, 0x1e35, 0x1e35, 0x1e47, 0x1e47, - 0x1e47, 0x1e47, 0x1e5c, 0x1e5c, 0x1e6e, 0x1e7d, 0x1eab, 0x1eab, - 0x1eb7, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ee1, 0x1ef0, 0x1ef0, - 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1f02, 0x1f02, 0x1f24, 0x1f24, - 0x1f24, 0x1f2d, 0x1f2d, 0x1f3f, 0x1f3f, 0x1f3f, 0x1f61, 0x1f7a, + 0x1c4e, 0x1c73, 0x1c91, 0x1cac, 0x1cbe, 0x1cd3, 0x1cdf, 0x1d04, + 0x1d1f, 0x1d2e, 0x1d40, 0x1d61, 0x1d70, 0x1d70, 0x1d70, 0x1d70, + 0x1d70, 0x1d95, 0x1d95, 0x1da7, 0x1da7, 0x1da7, 0x1db9, 0x1db9, + 0x1dea, 0x1dea, 0x1dea, 0x1e05, 0x1e1a, 0x1e35, 0x1e35, 0x1e35, + 0x1e35, 0x1e47, 0x1e47, 0x1e47, 0x1e47, 0x1e5c, 0x1e5c, 0x1e6e, + 0x1e7d, 0x1eab, 0x1eab, 0x1eb7, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ec9, + 0x1ee1, 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1f02, + 0x1f02, 0x1f24, 0x1f24, 0x1f24, 0x1f2d, 0x1f2d, 0x1f3f, 0x1f3f, // Entry 200 - 23F - 0x1f96, 0x1fbb, 0x1fd3, 0x1fe8, 0x200d, 0x201c, 0x201c, 0x201c, - 0x202e, 0x203a, 0x2052, 0x2052, 0x207d, 0x208f, 0x208f, 0x208f, - 0x209e, 0x209e, 0x20b0, 0x20bf, 0x20d1, 0x20dd, 0x20ef, 0x20ef, - 0x2107, 0x211f, 0x211f, 0x2131, 0x2153, 0x216c, 0x216c, 0x216c, - 0x216c, 0x218a, 0x218a, 0x219f, 0x21b1, 0x21b1, 0x21bd, 0x21bd, - 0x21d5, 0x21ea, 0x21ff, 0x2208, 0x2211, 0x2211, 0x2211, 0x2211, - 0x2211, 0x2220, 0x2220, 0x2220, 0x2220, 0x2232, 0x223e, 0x224a, - 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, 0x2265, 0x2277, 0x2277, + 0x1f3f, 0x1f61, 0x1f7a, 0x1f96, 0x1fbb, 0x1fd3, 0x1fe8, 0x200d, + 0x201c, 0x201c, 0x201c, 0x202e, 0x203a, 0x2052, 0x2052, 0x207d, + 0x208f, 0x208f, 0x208f, 0x209e, 0x209e, 0x20b0, 0x20bf, 0x20d1, + 0x20dd, 0x20ef, 0x20ef, 0x2107, 0x211f, 0x211f, 0x2131, 0x2153, + 0x216c, 0x216c, 0x216c, 0x216c, 0x218a, 0x218a, 0x219f, 0x21b1, + 0x21b1, 0x21bd, 0x21bd, 0x21d5, 0x21ea, 0x21ff, 0x2208, 0x2211, + 0x2211, 0x2211, 0x2211, 0x2211, 0x2220, 0x2220, 0x2220, 0x2220, + 0x2232, 0x223e, 0x224a, 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, // Entry 240 - 27F - 0x2277, 0x2277, 0x2277, 0x228f, 0x22ae, 0x22ae, 0x22c3, 0x22c3, - 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x22f3, 0x2320, 0x235f, 0x23a5, - 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, 0x249b, 0x249b, 0x24cb, - 0x24f8, 0x24f8, 0x250a, 0x250a, 0x250a, 0x252b, 0x2553, 0x2553, - 0x2577, 0x25a1, + 0x2265, 0x2277, 0x2277, 0x2277, 0x2277, 0x2277, 0x228f, 0x22ae, + 0x22ae, 0x22c3, 0x22c3, 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x22f3, + 0x2320, 0x235f, 0x23a5, 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, + 0x249b, 0x249b, 0x24cb, 0x24f8, 0x24f8, 0x250a, 0x250a, 0x250a, + 0x252b, 0x2553, 0x2553, 0x2577, 0x25a1, }, }, { // bs - "afarskiabhazijskiavestanskiafrikanerskiakanamharskiaragonežanskiarapskia" + - "semijskiavarskiajmaraazerbejdžanskibaškirskibjeloruskibugarskibislam" + - "abambarabengalskitibetanskibretonskibosanskikatalonskičečenskičamoro" + - "korzikanskikričeškistaroslovenskičuvaškivelškidanskinjemačkidivehijs" + - "kidžongaevegrčkiengleskiesperantošpanskiestonskibaskijskiperzijskifu" + - "lahfinskifidžijskifarskifrancuskifrizijskiirskiškotski galskigalskig" + - "varanigudžaratimankshausahebrejskihindihiri motuhrvatskihaićanskimađ" + - "arskijermenskihererointerlingvaindonezijskiinterlingveigbosičuan jii" + - "nupiakidoislandskiitalijanskiinuktitutjapanskijavanskigruzijskikongo" + - "kikujukuanjamakazačkikalalisutskikmerskikanadakorejskikanurikašmirik" + - "urdskikomikorniškikirgiskilatinskiluksemburškigandalimburgišlingalal" + - "aoškilitvanskiluba-katangaletonskimalagazijskimaršalskimaorskimakedo" + - "nskimalajalammongolskimaratimalajskimalteškiburmanskinaurusjeverni n" + - "debelenepalskindongaholandskinorveški njorsknorveški bokmaljužni nde" + - "belenavahonjanjaprovansalskiojibvaoromoorijskiosetskipandžabskipalip" + - "oljskipaštunskiportugalskikvenčareto-romanskirundirumunskiruskikinja" + - "rvandasanskritsardinijskisindisjeverni samisangosingaleskislovačkisl" + - "ovenačkisamoanskišonasomalskialbanskisrpskisvatisesotosundanskišveds" + - "kisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskitsvanaton" + - "ganskiturskitsongatatarskitahićanskiujgurskiukrajinskiurduuzbečkiven" + - "davijetnamskivolapükvalunvolofkosajidišjorubanskizuangkineskizuluači" + - "neskiakoliadangmejskiadigejskiafrihiliaghemainuakadijskialjutjužni a" + - "ltaistaroengleskiangikaarmajskiaraukanskiarapahoaravakasuasturijskia" + - "vadhibalučibalinezijskibasabejabembabenazapadni belučkibojpuribikolb" + - "inisiksikabrajbodoburiatbuginežanskiiblinkadokaripskiatsamcebuanočig" + - "ačibčačagataičukeskimaričinukskičoktavskičipvijanskičirokičejenskiso" + - "ranski kurdskikoptskikrimeanski turskikašubijanskidakotadargvataitad" + - "elaverslavskidogribdinkazarmadogridonjolužičkosrpskidualasrednji hol" + - "andskijola-fonyiđulaembuefikskistaroegipatskiekajukelamitskisrednji " + - "engleskievondofangfilipinskifonsrednji francuskistarofrancuskisevern" + - "o-frizijskiistočni frizijskifriulijskigagagauškigajogbajadžizgilbert" + - "škisrednji visoki nemačkistaronemačkigondigorontalogotskigrebostaro" + - "grčkišvajcarski njemačkigusiihaidahavajskihiligajnonhititehmonggornj" + - "olužičkosrpskihupaibanilokoingušetskilojbanngombamachamejudeo-persij" + - "skijudeo-arapskikara-kalpaškikabilekačinžjukambakavikabardijskitjapm" + - "akondezelenortskikorokasikotanizijskikoyra chiinikalenjinkimbundukom" + - "i-permjačkikonkanikosreanskikpelekaračaj-balkarkarelijskikurukhshamb" + - "alabafiakumikkutenailadinolangilandalambalezgianlakotamongolozisjeve" + - "rni luriluba-lulualuisenolundaluolušailuyiamadureškimagahimaitilimak" + - "asarmandingomasaimokšamandarmendemerumauricijski kreolskisrednji irs" + - "kimakhuwa-meettometa’mikmakminangkabaumančumanipurimahavskimosimunda" + - "ngviše jezikakriškimirandeškimarvarierzijamazanderanskineapolitanski" + - "namaniski nemačkinevariniasniueankwasionogaistari norskinkoseverni s" + - "otonuerklasični nevarinjamvezinjankolenjoronzimaosageotomanski tursk" + - "ipangasinskipahlavipampangapapiamentopalauanskistaropersijskifeničan" + - "skiponpejskistaroprovansalskikičerađastanirapanuirarotonganromboroma" + - "niaromanijskiruasandavejakutsamaritanski aramejskisamburusasaksantal" + - "isangusicilijanskiškotskijužnokurdskisenaselkapkojraboro senistaroir" + - "skitahelhitšansidamojužni samilule samiinari samiskoltski jeziksonin" + - "kesodžijenskisrananski tongoserersukumasususumerskiklasični sirijski" + - "sirijskitimnetesoterenotetumtigretivtokelauklingonskitlingittamašekn" + - "jasa tongatok pisintsimšiantumbukatuvalutasavaktuvinijskimarokanski " + - "tamazigtudmurtugaritskiumbundurunvaivotskivunjovalamovarejvašovarlpi" + - "rikalmiksogajaojapeškizapotečkiblisimbolizenagastandardni marokanski" + - " tamazigtzunibez lingvističkog sadržajazazamoderni standardni arapsk" + - "iaustrijski njemačkigornjonjemački (švicarski)australski engleskikan" + - "adski engleskibritanski engleskiamerički engleskilatinoamerički špan" + - "skievropski španskimeksički španskikanadski francuskišvajcarski fran" + - "cuskiniskosaksonskiflamanskimoldavskisrpskohrvatskikongoanski swahil" + - "ikineski (pojednostavljeni)kineski (tradicionalni)", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0007, 0x0011, 0x001b, 0x0027, 0x002b, 0x0033, 0x0041, - 0x0048, 0x0051, 0x0058, 0x005e, 0x006d, 0x0077, 0x0081, 0x0089, - 0x0090, 0x0097, 0x00a0, 0x00aa, 0x00b3, 0x00bb, 0x00c5, 0x00cf, - 0x00d6, 0x00e1, 0x00e4, 0x00eb, 0x00f9, 0x0102, 0x0109, 0x010f, - 0x0118, 0x0122, 0x0129, 0x012c, 0x0132, 0x013a, 0x0143, 0x014b, - 0x0153, 0x015c, 0x0165, 0x016a, 0x0170, 0x017a, 0x0180, 0x0189, - 0x0192, 0x0197, 0x01a6, 0x01ac, 0x01b3, 0x01bd, 0x01c2, 0x01c7, - 0x01d0, 0x01d5, 0x01de, 0x01e6, 0x01f0, 0x01f9, 0x0202, 0x0208, - // Entry 40 - 7F - 0x0213, 0x021f, 0x022a, 0x022e, 0x0238, 0x023f, 0x0242, 0x024b, - 0x0256, 0x025f, 0x0267, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b, - 0x0293, 0x029f, 0x02a6, 0x02ac, 0x02b4, 0x02ba, 0x02c2, 0x02c9, - 0x02cd, 0x02d6, 0x02de, 0x02e6, 0x02f3, 0x02f8, 0x0302, 0x0309, - 0x0310, 0x0319, 0x0325, 0x032d, 0x0339, 0x0343, 0x034a, 0x0354, - 0x035d, 0x0366, 0x036c, 0x0374, 0x037d, 0x0386, 0x038b, 0x039b, - 0x03a3, 0x03a9, 0x03b2, 0x03c2, 0x03d2, 0x03e0, 0x03e6, 0x03ec, - 0x03f8, 0x03fe, 0x0403, 0x040a, 0x0411, 0x041c, 0x0420, 0x0427, - // Entry 80 - BF - 0x0431, 0x043c, 0x0443, 0x0450, 0x0455, 0x045d, 0x0462, 0x046d, - 0x0475, 0x0480, 0x0485, 0x0492, 0x0497, 0x04a1, 0x04aa, 0x04b5, - 0x04be, 0x04c3, 0x04cb, 0x04d3, 0x04d9, 0x04de, 0x04e4, 0x04ed, - 0x04f5, 0x04fc, 0x0504, 0x050a, 0x0514, 0x051e, 0x0526, 0x0530, - 0x0536, 0x053f, 0x0545, 0x054b, 0x0553, 0x055e, 0x0566, 0x0570, - 0x0574, 0x057c, 0x0581, 0x058c, 0x0594, 0x0599, 0x059e, 0x05a2, - 0x05a8, 0x05b2, 0x05b7, 0x05be, 0x05c2, 0x05cb, 0x05d0, 0x05db, - 0x05e4, 0x05e4, 0x05ec, 0x05f1, 0x05f5, 0x05fe, 0x05fe, 0x0603, - // Entry C0 - FF - 0x0603, 0x060f, 0x061c, 0x0622, 0x062a, 0x0634, 0x0634, 0x063b, - 0x063b, 0x0641, 0x0641, 0x0641, 0x0644, 0x0644, 0x064e, 0x064e, - 0x0654, 0x065b, 0x0667, 0x0667, 0x066b, 0x066b, 0x066b, 0x066b, - 0x066f, 0x0674, 0x0674, 0x0678, 0x0678, 0x0678, 0x0688, 0x068f, - 0x0694, 0x0698, 0x0698, 0x0698, 0x069f, 0x069f, 0x069f, 0x06a3, - 0x06a3, 0x06a7, 0x06a7, 0x06ad, 0x06bb, 0x06bb, 0x06bf, 0x06bf, - 0x06c3, 0x06cb, 0x06cb, 0x06d0, 0x06d7, 0x06dc, 0x06e3, 0x06eb, - 0x06f3, 0x06f7, 0x0700, 0x070a, 0x0716, 0x071d, 0x0726, 0x0736, - // Entry 100 - 13F - 0x073d, 0x073d, 0x074e, 0x075b, 0x0761, 0x0767, 0x076c, 0x0773, - 0x077a, 0x0780, 0x0785, 0x078a, 0x078f, 0x07a3, 0x07a3, 0x07a8, - 0x07b9, 0x07c3, 0x07c8, 0x07c8, 0x07cc, 0x07d3, 0x07d3, 0x07e1, - 0x07e7, 0x07f0, 0x0800, 0x0800, 0x0806, 0x0806, 0x080a, 0x0814, - 0x0814, 0x0817, 0x0817, 0x0828, 0x0836, 0x0836, 0x0847, 0x0859, - 0x0863, 0x0865, 0x086e, 0x086e, 0x0872, 0x0877, 0x0877, 0x087c, - 0x0887, 0x0887, 0x089e, 0x08ab, 0x08ab, 0x08b0, 0x08b9, 0x08bf, - 0x08c4, 0x08cf, 0x08e4, 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08ee, + "afarskiabhaskiavestanskiafrikansakanamharskiaragonskiarapskiasamskiavars" + + "kiajmaraazerbejdžanskibaškirskibjeloruskibugarskibislamabambarabenga" + + "lskitibetanskibretonskibosanskikatalonskičečenskičamorokorzikanskikr" + + "ičeškistaroslavenskičuvaškivelškidanskinjemačkidivehidžongaevegrčkie" + + "ngleskiesperantošpanskiestonskibaskijskiperzijskifulahfinskifidžijsk" + + "ifarskifrancuskizapadni frizijskiirskiškotski galskigalicijskigvaran" + + "igudžaratimankshausahebrejskihinduhiri motuhrvatskihaićanskimađarski" + + "armenskihererointerlingvaindonezijskiinterlingveigbosičuan jiinupiak" + + "idoislandskitalijanskiinuktitutjapanskijavanskigruzijskikongokikujuk" + + "uanjamakazačkikalalisutskikmerskikanadakorejskikanurikašmirskikurdsk" + + "ikomikornskikirgiškilatinskiluksemburškigandalimburškilingalalaoškil" + + "itvanskiluba-katangalatvijskimalagaškimaršalskimaorskimakedonskimala" + + "jalammongolskimaratimalajskimalteškiburmanskinaurusjeverni ndebelene" + + "palskindongaholandskinorveški (Nynorsk)norveški (Bokmal)južni ndebel" + + "enavahonjanjaoksitanskiojibvaoromoorijskiosetskipandžapskipalipoljsk" + + "ipaštuportugalskikečuareto-romanskirundirumunskiruskikinjarvandasans" + + "kritsardinijskisindisjeverni samisangosinhaleškislovačkislovenskisam" + + "oanskišonasomalskialbanskisrpskisvatijužni sotosundanskišvedskisvahi" + + "litamilskitelugutadžičkitajlandskitigrinjaturkmenskitsvanatonganskit" + + "urskitsongatatarskitahićanskiujgurskiukrajinskiurduuzbečkivendavijet" + + "namskivolapukvalunvolofhosajidišjorubanskizuangkineskizuluacehneskia" + + "koliadangmejskiadigejskiafrihiliaghemainuakadijskialeutskijužni alta" + + "istaroengleskiangikaaramejskimapuškiarapahoaravakasuasturijskiavadhi" + + "balučibalinezijskibasabamunskigomalabejabembabenabafutzapadni belučk" + + "ibojpuribikolbinikomsiksikabrajbodoakoskiburiatbugiškibulublinmedumb" + + "akadokaripskikajugaatsamcebuanočigačibčačagataičukeskimaričinukski ž" + + "argončoktavčipvijanskičirokičejenskicentralnokurdskikoptskikrimski t" + + "urskiseselva kreolski francuskikašubijanskidakotadargvataitadelavers" + + "lavedogribdinkazarmadogridonjolužičkosrpskidualasrednjovjekovni hola" + + "ndskijola-fonidiuladazagaembuefikstaroegipatskiekajukelamitskisrednj" + + "ovjekovni engleskievondofangfilipinofonsrednjovjekovni francuskistar" + + "ofrancuskisjeverni frizijskiistočnofrizijskifriulijskigagagauškigajo" + + "gbajastaroetiopskigilbertskisrednjovjekovni gornjonjemačkistaronjema" + + "čkigondigorontalogotskigrebostarogrčkinjemački (Švicarska)gusigviči" + + "nhaidahavajskihiligajnonhititehmonggornjolužičkosrpskihupaibanibibio" + + "ilokoingušetskilojbanngombamakamejudeo-perzijskijudeo-arapskikara-ka" + + "lpakkabilekačinkajukambakavikabardijskikanembutjapmakondezelenortski" + + "korokasikotanizijskikojra činikakokalenjinkimbundukomi-permskikonkan" + + "ikosrejskikpelekaračaj-balkarkriokarelijskikuruškišambalabafiakelnsk" + + "ikumikkutenailadinolangilandalambalezgijskilakotamongolozisjeverni l" + + "uriluba-lulualuisenolundaluomizoluhijamadureškimafamagahimaitilimaka" + + "sarmandingomasaimabamokšamandarmendemerumauricijski kreolskisrednjov" + + "jekovni irskimakuva-metometamikmakminangkabaumančumanipurimohavkmosi" + + "mundangviše jezikakriškimirandeškimarvarimjeneerzijamazanderanskinap" + + "olitanskinamadonjonjemačkinevariniasniueankvasiongiembonnogaistarono" + + "rdijskinkosjeverni sotonuerklasični nevarinjamvezinjankolenjoronzima" + + "osageosmanski turskipangasinskipahlavipampangapapiamentopalauanskini" + + "gerijski pidžinstaroperzijskifeničanskiponpejskipruskistaroprovansal" + + "skikičerajastanirapanuirarotonganromboromaniarumunskiruasandavejakut" + + "skisamaritanski aramejskisamburusasaksantalingambajsangusicilijanski" + + "škotskijužni kurdskisenekasenaselkupkojraboro senistaroirskitahelhi" + + "tšančadski arapskisidamojužni samilule samiinari samiskolt samisonin" + + "kesogdiensrananski tongoserersahosukumasususumerskikomorskiklasični " + + "sirijskisirijskitimnetesoterenotetumtigretivtokelauklingonskitlingit" + + "tamašeknjasa tongatok pisintarokotsimšiantumbukatuvalutasavaktuvinij" + + "skicentralnoatlaski tamazigtudmurtugaritskiumbundukorijenskivaivotsk" + + "ivunjovalservalamovarejvašovarlpirikalmiksogajaojapeškijangbenjembak" + + "antonskizapotečkiblis simbolizenagastandardni marokanski tamazigtzun" + + "ibez lingvističkog sadržajazazamoderni standardni arapskigornjonjema" + + "čki (Švicarska)donjosaksonskiflamanskimoldavskisrpskohrvatskikinesk" + + "i (pojednostavljeni)kineski (tradicionalni)", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0024, 0x002c, 0x0035, + 0x003c, 0x0043, 0x004a, 0x0050, 0x005f, 0x0069, 0x0073, 0x007b, + 0x0082, 0x0089, 0x0092, 0x009c, 0x00a5, 0x00ad, 0x00b7, 0x00c1, + 0x00c8, 0x00d3, 0x00d6, 0x00dd, 0x00eb, 0x00f4, 0x00fb, 0x0101, + 0x010a, 0x0110, 0x0117, 0x011a, 0x0120, 0x0128, 0x0131, 0x0139, + 0x0141, 0x014a, 0x0153, 0x0158, 0x015e, 0x0168, 0x016e, 0x0177, + 0x0188, 0x018d, 0x019c, 0x01a6, 0x01ad, 0x01b7, 0x01bc, 0x01c1, + 0x01ca, 0x01cf, 0x01d8, 0x01e0, 0x01ea, 0x01f3, 0x01fb, 0x0201, + // Entry 40 - 7F + 0x020c, 0x0218, 0x0223, 0x0227, 0x0231, 0x0238, 0x023b, 0x0244, + 0x024e, 0x0257, 0x025f, 0x0267, 0x0270, 0x0275, 0x027b, 0x0283, + 0x028b, 0x0297, 0x029e, 0x02a4, 0x02ac, 0x02b2, 0x02bc, 0x02c3, + 0x02c7, 0x02ce, 0x02d7, 0x02df, 0x02ec, 0x02f1, 0x02fb, 0x0302, + 0x0309, 0x0312, 0x031e, 0x0327, 0x0331, 0x033b, 0x0342, 0x034c, + 0x0355, 0x035e, 0x0364, 0x036c, 0x0375, 0x037e, 0x0383, 0x0393, + 0x039b, 0x03a1, 0x03aa, 0x03bd, 0x03cf, 0x03dd, 0x03e3, 0x03e9, + 0x03f3, 0x03f9, 0x03fe, 0x0405, 0x040c, 0x0417, 0x041b, 0x0422, + // Entry 80 - BF + 0x0428, 0x0433, 0x0439, 0x0446, 0x044b, 0x0453, 0x0458, 0x0463, + 0x046b, 0x0476, 0x047b, 0x0488, 0x048d, 0x0498, 0x04a1, 0x04aa, + 0x04b3, 0x04b8, 0x04c0, 0x04c8, 0x04ce, 0x04d3, 0x04de, 0x04e7, + 0x04ef, 0x04f6, 0x04fe, 0x0504, 0x050e, 0x0518, 0x0520, 0x052a, + 0x0530, 0x0539, 0x053f, 0x0545, 0x054d, 0x0558, 0x0560, 0x056a, + 0x056e, 0x0576, 0x057b, 0x0586, 0x058d, 0x0592, 0x0597, 0x059b, + 0x05a1, 0x05ab, 0x05b0, 0x05b7, 0x05bb, 0x05c4, 0x05c9, 0x05d4, + 0x05dd, 0x05dd, 0x05e5, 0x05ea, 0x05ee, 0x05f7, 0x05f7, 0x05ff, + // Entry C0 - FF + 0x05ff, 0x060b, 0x0618, 0x061e, 0x0627, 0x062f, 0x062f, 0x0636, + 0x0636, 0x0636, 0x063c, 0x063c, 0x063c, 0x063f, 0x063f, 0x0649, + 0x0649, 0x064f, 0x0656, 0x0662, 0x0662, 0x0666, 0x066e, 0x066e, + 0x0674, 0x0678, 0x067d, 0x067d, 0x0681, 0x0686, 0x0686, 0x0696, + 0x069d, 0x06a2, 0x06a6, 0x06a6, 0x06a9, 0x06b0, 0x06b0, 0x06b0, + 0x06b4, 0x06b4, 0x06b8, 0x06be, 0x06c4, 0x06cc, 0x06d0, 0x06d4, + 0x06db, 0x06df, 0x06e7, 0x06ed, 0x06f2, 0x06f9, 0x06fe, 0x0705, + 0x070d, 0x0715, 0x0719, 0x072a, 0x0731, 0x073d, 0x0744, 0x074d, + // Entry 100 - 13F + 0x075d, 0x0764, 0x0764, 0x0772, 0x078c, 0x0799, 0x079f, 0x07a5, + 0x07aa, 0x07b1, 0x07b6, 0x07bc, 0x07c1, 0x07c6, 0x07cb, 0x07df, + 0x07df, 0x07e4, 0x07fd, 0x0806, 0x080b, 0x0811, 0x0815, 0x0819, + 0x0819, 0x0827, 0x082d, 0x0836, 0x084e, 0x084e, 0x0854, 0x0854, + 0x0858, 0x0860, 0x0860, 0x0863, 0x0863, 0x087c, 0x088a, 0x088a, + 0x089c, 0x08ad, 0x08b7, 0x08b9, 0x08c2, 0x08c2, 0x08c6, 0x08cb, + 0x08cb, 0x08d8, 0x08e2, 0x08e2, 0x0901, 0x090f, 0x090f, 0x0914, + 0x091d, 0x0923, 0x0928, 0x0933, 0x0949, 0x0949, 0x0949, 0x094d, // Entry 140 - 17F - 0x08ee, 0x08f6, 0x08f6, 0x0900, 0x0906, 0x090b, 0x0920, 0x0920, - 0x0924, 0x0928, 0x0928, 0x092d, 0x0938, 0x0938, 0x0938, 0x093e, - 0x0944, 0x094b, 0x095a, 0x0967, 0x0967, 0x0975, 0x097b, 0x0981, - 0x0985, 0x098a, 0x098e, 0x0999, 0x0999, 0x099d, 0x09a4, 0x09af, - 0x09af, 0x09b3, 0x09b3, 0x09b7, 0x09c3, 0x09cf, 0x09cf, 0x09cf, - 0x09cf, 0x09d7, 0x09df, 0x09ee, 0x09f5, 0x09ff, 0x0a04, 0x0a13, - 0x0a13, 0x0a13, 0x0a1d, 0x0a23, 0x0a2b, 0x0a30, 0x0a30, 0x0a35, - 0x0a3c, 0x0a42, 0x0a47, 0x0a4c, 0x0a51, 0x0a58, 0x0a58, 0x0a58, + 0x0954, 0x0959, 0x0959, 0x0961, 0x0961, 0x096b, 0x0971, 0x0976, + 0x098b, 0x098b, 0x098f, 0x0993, 0x0999, 0x099e, 0x09a9, 0x09a9, + 0x09a9, 0x09af, 0x09b5, 0x09bb, 0x09ca, 0x09d7, 0x09d7, 0x09e2, + 0x09e8, 0x09ee, 0x09f2, 0x09f7, 0x09fb, 0x0a06, 0x0a0d, 0x0a11, + 0x0a18, 0x0a23, 0x0a23, 0x0a27, 0x0a27, 0x0a2b, 0x0a37, 0x0a42, + 0x0a42, 0x0a42, 0x0a46, 0x0a4e, 0x0a56, 0x0a62, 0x0a69, 0x0a72, + 0x0a77, 0x0a86, 0x0a8a, 0x0a8a, 0x0a94, 0x0a9c, 0x0aa4, 0x0aa9, + 0x0ab0, 0x0ab5, 0x0abc, 0x0ac2, 0x0ac7, 0x0acc, 0x0ad1, 0x0ada, // Entry 180 - 1BF - 0x0a58, 0x0a5e, 0x0a5e, 0x0a63, 0x0a67, 0x0a74, 0x0a74, 0x0a7e, - 0x0a85, 0x0a8a, 0x0a8d, 0x0a93, 0x0a98, 0x0a98, 0x0a98, 0x0aa2, - 0x0aa2, 0x0aa8, 0x0aaf, 0x0ab6, 0x0abe, 0x0ac3, 0x0ac3, 0x0ac9, - 0x0acf, 0x0ad4, 0x0ad8, 0x0aec, 0x0af9, 0x0b07, 0x0b0e, 0x0b14, - 0x0b1f, 0x0b25, 0x0b2d, 0x0b35, 0x0b39, 0x0b39, 0x0b40, 0x0b4c, - 0x0b53, 0x0b5e, 0x0b65, 0x0b65, 0x0b65, 0x0b6b, 0x0b78, 0x0b78, - 0x0b85, 0x0b89, 0x0b97, 0x0b9d, 0x0ba1, 0x0ba7, 0x0ba7, 0x0bad, - 0x0bad, 0x0bb2, 0x0bbe, 0x0bbe, 0x0bc1, 0x0bcd, 0x0bd1, 0x0be1, + 0x0ada, 0x0ada, 0x0ada, 0x0ae0, 0x0ae0, 0x0ae5, 0x0ae9, 0x0af6, + 0x0af6, 0x0b00, 0x0b07, 0x0b0c, 0x0b0f, 0x0b13, 0x0b19, 0x0b19, + 0x0b19, 0x0b23, 0x0b27, 0x0b2d, 0x0b34, 0x0b3b, 0x0b43, 0x0b48, + 0x0b4c, 0x0b52, 0x0b58, 0x0b5d, 0x0b61, 0x0b75, 0x0b8a, 0x0b95, + 0x0b99, 0x0b9f, 0x0baa, 0x0bb0, 0x0bb8, 0x0bbe, 0x0bc2, 0x0bc2, + 0x0bc9, 0x0bd5, 0x0bdc, 0x0be7, 0x0bee, 0x0bee, 0x0bf3, 0x0bf9, + 0x0c06, 0x0c06, 0x0c12, 0x0c16, 0x0c24, 0x0c2a, 0x0c2e, 0x0c34, + 0x0c34, 0x0c3a, 0x0c42, 0x0c47, 0x0c55, 0x0c55, 0x0c58, 0x0c65, // Entry 1C0 - 1FF - 0x0be9, 0x0bf1, 0x0bf6, 0x0bfb, 0x0c00, 0x0c10, 0x0c1b, 0x0c22, - 0x0c2a, 0x0c34, 0x0c3e, 0x0c3e, 0x0c3e, 0x0c3e, 0x0c4c, 0x0c4c, - 0x0c57, 0x0c57, 0x0c57, 0x0c60, 0x0c60, 0x0c71, 0x0c76, 0x0c76, - 0x0c80, 0x0c87, 0x0c91, 0x0c91, 0x0c91, 0x0c96, 0x0c9c, 0x0c9c, - 0x0c9c, 0x0c9c, 0x0ca7, 0x0caa, 0x0cb1, 0x0cb6, 0x0ccc, 0x0cd3, - 0x0cd8, 0x0cdf, 0x0cdf, 0x0cdf, 0x0ce4, 0x0cf0, 0x0cf8, 0x0cf8, - 0x0d05, 0x0d05, 0x0d09, 0x0d09, 0x0d0f, 0x0d1d, 0x0d27, 0x0d27, - 0x0d2f, 0x0d33, 0x0d33, 0x0d39, 0x0d39, 0x0d39, 0x0d44, 0x0d4d, + 0x0c69, 0x0c79, 0x0c81, 0x0c89, 0x0c8e, 0x0c93, 0x0c98, 0x0ca7, + 0x0cb2, 0x0cb9, 0x0cc1, 0x0ccb, 0x0cd5, 0x0cd5, 0x0ce7, 0x0ce7, + 0x0ce7, 0x0cf5, 0x0cf5, 0x0d00, 0x0d00, 0x0d00, 0x0d09, 0x0d0f, + 0x0d20, 0x0d25, 0x0d25, 0x0d2e, 0x0d35, 0x0d3f, 0x0d3f, 0x0d3f, + 0x0d44, 0x0d4a, 0x0d4a, 0x0d4a, 0x0d4a, 0x0d53, 0x0d56, 0x0d5d, + 0x0d65, 0x0d7b, 0x0d82, 0x0d87, 0x0d8e, 0x0d8e, 0x0d95, 0x0d9a, + 0x0da6, 0x0dae, 0x0dae, 0x0dbc, 0x0dc2, 0x0dc6, 0x0dc6, 0x0dcc, + 0x0dda, 0x0de4, 0x0de4, 0x0dec, 0x0df0, 0x0dff, 0x0e05, 0x0e05, // Entry 200 - 23F - 0x0d57, 0x0d65, 0x0d6c, 0x0d78, 0x0d87, 0x0d8c, 0x0d8c, 0x0d8c, - 0x0d92, 0x0d96, 0x0d9e, 0x0d9e, 0x0db0, 0x0db8, 0x0db8, 0x0db8, - 0x0dbd, 0x0dc1, 0x0dc7, 0x0dcc, 0x0dd1, 0x0dd4, 0x0ddb, 0x0ddb, - 0x0de5, 0x0dec, 0x0dec, 0x0df4, 0x0dff, 0x0e08, 0x0e08, 0x0e08, - 0x0e08, 0x0e11, 0x0e11, 0x0e18, 0x0e1e, 0x0e25, 0x0e2f, 0x0e42, - 0x0e48, 0x0e51, 0x0e58, 0x0e5b, 0x0e5e, 0x0e5e, 0x0e5e, 0x0e5e, - 0x0e5e, 0x0e64, 0x0e64, 0x0e69, 0x0e69, 0x0e6f, 0x0e74, 0x0e79, - 0x0e81, 0x0e81, 0x0e87, 0x0e87, 0x0e8b, 0x0e8e, 0x0e96, 0x0e96, + 0x0e05, 0x0e10, 0x0e19, 0x0e23, 0x0e2d, 0x0e34, 0x0e3b, 0x0e4a, + 0x0e4f, 0x0e53, 0x0e53, 0x0e59, 0x0e5d, 0x0e65, 0x0e6d, 0x0e7f, + 0x0e87, 0x0e87, 0x0e87, 0x0e8c, 0x0e90, 0x0e96, 0x0e9b, 0x0ea0, + 0x0ea3, 0x0eaa, 0x0eaa, 0x0eb4, 0x0ebb, 0x0ebb, 0x0ec3, 0x0ece, + 0x0ed7, 0x0ed7, 0x0edd, 0x0edd, 0x0ee6, 0x0ee6, 0x0eed, 0x0ef3, + 0x0efa, 0x0f04, 0x0f1d, 0x0f23, 0x0f2c, 0x0f33, 0x0f3d, 0x0f40, + 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f46, 0x0f46, 0x0f4b, 0x0f51, + 0x0f57, 0x0f5c, 0x0f61, 0x0f69, 0x0f69, 0x0f6f, 0x0f6f, 0x0f73, // Entry 240 - 27F - 0x0e96, 0x0e96, 0x0e96, 0x0ea0, 0x0eaa, 0x0eaa, 0x0eb0, 0x0ece, - 0x0ed2, 0x0eee, 0x0ef2, 0x0f0c, 0x0f0c, 0x0f20, 0x0f3c, 0x0f4f, - 0x0f60, 0x0f72, 0x0f84, 0x0f9c, 0x0fad, 0x0fbf, 0x0fbf, 0x0fd1, - 0x0fe6, 0x0ff4, 0x0ffd, 0x0ffd, 0x0ffd, 0x1006, 0x1014, 0x1026, - 0x1040, 0x1057, + 0x0f76, 0x0f7e, 0x0f85, 0x0f8a, 0x0f8a, 0x0f93, 0x0f9d, 0x0fa9, + 0x0fa9, 0x0faf, 0x0fcd, 0x0fd1, 0x0fed, 0x0ff1, 0x100b, 0x100b, + 0x100b, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, + 0x1027, 0x1027, 0x1027, 0x1027, 0x1035, 0x103e, 0x103e, 0x103e, + 0x1047, 0x1055, 0x1055, 0x106f, 0x1086, }, }, { // bs-Cyrl @@ -1333,7 +1703,7 @@ var langHeaders = [220]header{ "панскиКанадски францускиШвајцарски францускифламанскиБразилски порт" + "угалскиИберијски португалскимолдавскисрпскохрватскикинески (поједно" + "стављен)кинески (традиционални)", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000e, 0x0022, 0x0036, 0x004e, 0x0056, 0x0066, 0x0080, 0x008e, 0x00a0, 0x00ae, 0x00ba, 0x00d4, 0x00e0, 0x00f2, 0x0102, @@ -1363,64 +1733,64 @@ var langHeaders = [220]header{ 0x0b26, 0x0b26, 0x0b36, 0x0b36, 0x0b3e, 0x0b50, 0x0b50, 0x0b58, // Entry C0 - FF 0x0b58, 0x0b6d, 0x0b87, 0x0b93, 0x0ba3, 0x0bb9, 0x0bb9, 0x0bc7, - 0x0bc7, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0be7, 0x0be7, - 0x0bf3, 0x0bff, 0x0c17, 0x0c17, 0x0c1f, 0x0c1f, 0x0c1f, 0x0c1f, - 0x0c27, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c3f, - 0x0c49, 0x0c51, 0x0c51, 0x0c51, 0x0c5d, 0x0c5d, 0x0c5d, 0x0c65, - 0x0c65, 0x0c65, 0x0c65, 0x0c71, 0x0c89, 0x0c89, 0x0c91, 0x0c91, - 0x0c99, 0x0ca9, 0x0ca9, 0x0cb9, 0x0cc7, 0x0cc7, 0x0cd1, 0x0cdf, - 0x0ced, 0x0cf5, 0x0d05, 0x0d17, 0x0d2d, 0x0d39, 0x0d49, 0x0d49, - // Entry 100 - 13F - 0x0d57, 0x0d57, 0x0d78, 0x0d90, 0x0d9c, 0x0da8, 0x0da8, 0x0db6, - 0x0dc4, 0x0dd0, 0x0dda, 0x0dda, 0x0de4, 0x0e05, 0x0e05, 0x0e0f, - 0x0e2e, 0x0e2e, 0x0e36, 0x0e36, 0x0e36, 0x0e44, 0x0e44, 0x0e60, - 0x0e6c, 0x0e7e, 0x0e9b, 0x0e9b, 0x0ea7, 0x0ea7, 0x0eaf, 0x0ebd, - 0x0ebd, 0x0ec3, 0x0ec3, 0x0ee2, 0x0efe, 0x0efe, 0x0f1f, 0x0f40, - 0x0f54, 0x0f58, 0x0f58, 0x0f58, 0x0f60, 0x0f6a, 0x0f6a, 0x0f70, - 0x0f84, 0x0f84, 0x0fac, 0x0fc4, 0x0fc4, 0x0fce, 0x0fe0, 0x0fec, - 0x0ff6, 0x100a, 0x102d, 0x102d, 0x102d, 0x102d, 0x103c, 0x1046, + 0x0bc7, 0x0bc7, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0be7, + 0x0be7, 0x0bf3, 0x0bff, 0x0c17, 0x0c17, 0x0c1f, 0x0c1f, 0x0c1f, + 0x0c1f, 0x0c27, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, + 0x0c3f, 0x0c49, 0x0c51, 0x0c51, 0x0c51, 0x0c5d, 0x0c5d, 0x0c5d, + 0x0c65, 0x0c65, 0x0c65, 0x0c65, 0x0c71, 0x0c89, 0x0c89, 0x0c91, + 0x0c91, 0x0c99, 0x0ca9, 0x0ca9, 0x0cb9, 0x0cc7, 0x0cc7, 0x0cd1, + 0x0cdf, 0x0ced, 0x0cf5, 0x0d05, 0x0d17, 0x0d2d, 0x0d39, 0x0d49, + // Entry 100 - 13F + 0x0d49, 0x0d57, 0x0d57, 0x0d78, 0x0d78, 0x0d90, 0x0d9c, 0x0da8, + 0x0da8, 0x0db6, 0x0dc4, 0x0dd0, 0x0dda, 0x0dda, 0x0de4, 0x0e05, + 0x0e05, 0x0e0f, 0x0e2e, 0x0e2e, 0x0e36, 0x0e36, 0x0e36, 0x0e44, + 0x0e44, 0x0e60, 0x0e6c, 0x0e7e, 0x0e9b, 0x0e9b, 0x0ea7, 0x0ea7, + 0x0eaf, 0x0ebd, 0x0ebd, 0x0ec3, 0x0ec3, 0x0ee2, 0x0efe, 0x0efe, + 0x0f1f, 0x0f40, 0x0f54, 0x0f58, 0x0f58, 0x0f58, 0x0f60, 0x0f6a, + 0x0f6a, 0x0f70, 0x0f84, 0x0f84, 0x0fac, 0x0fc4, 0x0fc4, 0x0fce, + 0x0fe0, 0x0fec, 0x0ff6, 0x100a, 0x102d, 0x102d, 0x102d, 0x102d, // Entry 140 - 17F - 0x1046, 0x1056, 0x1056, 0x106a, 0x1076, 0x1080, 0x109d, 0x109d, - 0x10a5, 0x10ad, 0x10ad, 0x10b7, 0x10c7, 0x10c7, 0x10c7, 0x10d3, - 0x10d3, 0x10d3, 0x10f0, 0x1109, 0x1109, 0x1122, 0x112e, 0x1138, - 0x113c, 0x1146, 0x114e, 0x1164, 0x1164, 0x116c, 0x116c, 0x116c, - 0x116c, 0x1174, 0x1174, 0x117c, 0x118e, 0x118e, 0x118e, 0x118e, - 0x118e, 0x118e, 0x119e, 0x119e, 0x11ac, 0x11c0, 0x11ca, 0x11e5, - 0x11e5, 0x11e5, 0x11f9, 0x1205, 0x1205, 0x1205, 0x1205, 0x120f, - 0x121d, 0x1229, 0x1229, 0x1233, 0x123d, 0x124b, 0x124b, 0x124b, + 0x103c, 0x1046, 0x1046, 0x1056, 0x1056, 0x106a, 0x1076, 0x1080, + 0x109d, 0x109d, 0x10a5, 0x10ad, 0x10ad, 0x10b7, 0x10c7, 0x10c7, + 0x10c7, 0x10d3, 0x10d3, 0x10d3, 0x10f0, 0x1109, 0x1109, 0x1122, + 0x112e, 0x1138, 0x113c, 0x1146, 0x114e, 0x1164, 0x1164, 0x116c, + 0x116c, 0x116c, 0x116c, 0x1174, 0x1174, 0x117c, 0x118e, 0x118e, + 0x118e, 0x118e, 0x118e, 0x118e, 0x119e, 0x119e, 0x11ac, 0x11c0, + 0x11ca, 0x11e5, 0x11e5, 0x11e5, 0x11f9, 0x1205, 0x1205, 0x1205, + 0x1205, 0x120f, 0x121d, 0x1229, 0x1229, 0x1233, 0x123d, 0x124b, // Entry 180 - 1BF - 0x124b, 0x124b, 0x124b, 0x1255, 0x125d, 0x125d, 0x125d, 0x1270, - 0x127e, 0x1288, 0x128e, 0x1298, 0x1298, 0x1298, 0x1298, 0x12aa, - 0x12aa, 0x12b6, 0x12c4, 0x12d2, 0x12e2, 0x12ec, 0x12ec, 0x12f6, - 0x1302, 0x130c, 0x130c, 0x130c, 0x1323, 0x1323, 0x1323, 0x132f, - 0x1345, 0x134f, 0x135f, 0x136f, 0x1377, 0x1377, 0x1377, 0x138c, - 0x1398, 0x13ac, 0x13ba, 0x13ba, 0x13ba, 0x13c6, 0x13c6, 0x13c6, - 0x13e0, 0x13e0, 0x13f9, 0x1405, 0x140d, 0x1419, 0x1419, 0x1419, - 0x1419, 0x1423, 0x143a, 0x143a, 0x1443, 0x145a, 0x145a, 0x1477, + 0x124b, 0x124b, 0x124b, 0x124b, 0x124b, 0x1255, 0x125d, 0x125d, + 0x125d, 0x1270, 0x127e, 0x1288, 0x128e, 0x1298, 0x1298, 0x1298, + 0x1298, 0x12aa, 0x12aa, 0x12b6, 0x12c4, 0x12d2, 0x12e2, 0x12ec, + 0x12ec, 0x12f6, 0x1302, 0x130c, 0x130c, 0x130c, 0x1323, 0x1323, + 0x1323, 0x132f, 0x1345, 0x134f, 0x135f, 0x136f, 0x1377, 0x1377, + 0x1377, 0x138c, 0x1398, 0x13ac, 0x13ba, 0x13ba, 0x13ba, 0x13c6, + 0x13c6, 0x13c6, 0x13e0, 0x13e0, 0x13f9, 0x1405, 0x140d, 0x1419, + 0x1419, 0x1419, 0x1419, 0x1423, 0x143a, 0x143a, 0x1443, 0x145a, // Entry 1C0 - 1FF - 0x1485, 0x1493, 0x149b, 0x14a5, 0x14af, 0x14ce, 0x14e4, 0x14f2, - 0x1502, 0x1516, 0x152a, 0x152a, 0x152a, 0x152a, 0x1546, 0x1546, - 0x155a, 0x155a, 0x155a, 0x156c, 0x156c, 0x158e, 0x158e, 0x158e, - 0x15a0, 0x15ae, 0x15c2, 0x15c2, 0x15c2, 0x15c2, 0x15ce, 0x15ce, - 0x15ce, 0x15ce, 0x15e4, 0x15e4, 0x15f2, 0x15fc, 0x1627, 0x1627, - 0x1631, 0x163f, 0x163f, 0x163f, 0x163f, 0x1657, 0x1665, 0x1665, - 0x1665, 0x1665, 0x1665, 0x1665, 0x1671, 0x1671, 0x1685, 0x1685, - 0x1685, 0x168b, 0x168b, 0x1697, 0x1697, 0x1697, 0x16aa, 0x16bb, + 0x145a, 0x1477, 0x1485, 0x1493, 0x149b, 0x14a5, 0x14af, 0x14ce, + 0x14e4, 0x14f2, 0x1502, 0x1516, 0x152a, 0x152a, 0x152a, 0x152a, + 0x152a, 0x1546, 0x1546, 0x155a, 0x155a, 0x155a, 0x156c, 0x156c, + 0x158e, 0x158e, 0x158e, 0x15a0, 0x15ae, 0x15c2, 0x15c2, 0x15c2, + 0x15c2, 0x15ce, 0x15ce, 0x15ce, 0x15ce, 0x15e4, 0x15e4, 0x15f2, + 0x15fc, 0x1627, 0x1627, 0x1631, 0x163f, 0x163f, 0x163f, 0x163f, + 0x1657, 0x1665, 0x1665, 0x1665, 0x1665, 0x1665, 0x1665, 0x1671, + 0x1671, 0x1685, 0x1685, 0x1685, 0x168b, 0x168b, 0x1697, 0x1697, // Entry 200 - 23F - 0x16ce, 0x16e9, 0x16f7, 0x170b, 0x1728, 0x1732, 0x1732, 0x1732, - 0x173e, 0x1746, 0x1756, 0x1766, 0x1787, 0x1797, 0x1797, 0x1797, - 0x17a1, 0x17a1, 0x17ad, 0x17b7, 0x17c1, 0x17c7, 0x17d5, 0x17d5, - 0x17e9, 0x17f7, 0x17f7, 0x1805, 0x1818, 0x1829, 0x1829, 0x1829, - 0x1829, 0x1839, 0x1839, 0x1847, 0x1853, 0x1853, 0x1867, 0x1867, - 0x1873, 0x1885, 0x1893, 0x1899, 0x189f, 0x189f, 0x189f, 0x189f, - 0x189f, 0x18ab, 0x18ab, 0x18ab, 0x18ab, 0x18b7, 0x18c1, 0x18c9, - 0x18c9, 0x18c9, 0x18d5, 0x18d5, 0x18d5, 0x18db, 0x18e9, 0x18e9, + 0x1697, 0x16aa, 0x16bb, 0x16ce, 0x16e9, 0x16f7, 0x170b, 0x1728, + 0x1732, 0x1732, 0x1732, 0x173e, 0x1746, 0x1756, 0x1766, 0x1787, + 0x1797, 0x1797, 0x1797, 0x17a1, 0x17a1, 0x17ad, 0x17b7, 0x17c1, + 0x17c7, 0x17d5, 0x17d5, 0x17e9, 0x17f7, 0x17f7, 0x1805, 0x1818, + 0x1829, 0x1829, 0x1829, 0x1829, 0x1839, 0x1839, 0x1847, 0x1853, + 0x1853, 0x1867, 0x1867, 0x1873, 0x1885, 0x1893, 0x1899, 0x189f, + 0x189f, 0x189f, 0x189f, 0x189f, 0x18ab, 0x18ab, 0x18ab, 0x18ab, + 0x18b7, 0x18c1, 0x18c9, 0x18c9, 0x18c9, 0x18d5, 0x18d5, 0x18d5, // Entry 240 - 27F - 0x18e9, 0x18e9, 0x18fb, 0x190d, 0x1921, 0x1921, 0x192d, 0x192d, - 0x1935, 0x1967, 0x196f, 0x196f, 0x196f, 0x1992, 0x19c2, 0x19eb, - 0x1a0c, 0x1a2f, 0x1a46, 0x1a72, 0x1a93, 0x1a93, 0x1a93, 0x1ab6, - 0x1add, 0x1add, 0x1aef, 0x1b18, 0x1b41, 0x1b53, 0x1b6f, 0x1b6f, - 0x1b9c, 0x1bc7, + 0x18db, 0x18e9, 0x18e9, 0x18e9, 0x18e9, 0x18fb, 0x190d, 0x1921, + 0x1921, 0x192d, 0x192d, 0x1935, 0x1967, 0x196f, 0x196f, 0x196f, + 0x1992, 0x19c2, 0x19eb, 0x1a0c, 0x1a2f, 0x1a46, 0x1a72, 0x1a93, + 0x1a93, 0x1a93, 0x1ab6, 0x1add, 0x1add, 0x1aef, 0x1b18, 0x1b41, + 0x1b53, 0x1b6f, 0x1b6f, 0x1b9c, 0x1bc7, }, }, { // ca @@ -1460,7 +1830,7 @@ var langHeaders = [220]header{ "ексикан испанхойнканадан французийншвейцарин французийнлахара саксо" + "нийнфламандийнбразилин португалихойневропан португалихойнмолдавийнс" + "уахили (Конго)атта китайнламастан китайн", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0012, 0x0012, 0x0024, 0x002c, 0x003c, 0x003c, 0x004c, 0x005c, 0x005c, 0x005c, 0x0078, 0x008a, 0x009e, 0x00b0, @@ -1490,64 +1860,64 @@ var langHeaders = [220]header{ 0x0899, 0x0899, 0x0899, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5, // Entry C0 - FF 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08bb, 0x08bb, 0x08bb, - 0x08bb, 0x08bb, 0x08bb, 0x08bb, 0x08c1, 0x08c1, 0x08c1, 0x08c1, + 0x08bb, 0x08bb, 0x08bb, 0x08bb, 0x08bb, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, - 0x08c1, 0x08cb, 0x08cb, 0x08d3, 0x08d3, 0x08d3, 0x08f8, 0x08f8, + 0x08c1, 0x08c1, 0x08cb, 0x08cb, 0x08d3, 0x08d3, 0x08d3, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, - 0x08f8, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, - 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0908, 0x0908, 0x0908, - 0x0908, 0x0908, 0x0908, 0x0908, 0x0908, 0x0914, 0x0914, 0x0933, - // Entry 100 - 13F - 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x093d, 0x093d, - 0x093d, 0x093d, 0x093d, 0x0947, 0x0947, 0x0955, 0x0955, 0x095f, - 0x095f, 0x0974, 0x0974, 0x0974, 0x097c, 0x097c, 0x097c, 0x097c, - 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x0992, - 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, - 0x0992, 0x0992, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, + 0x08f8, 0x08f8, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, + 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0908, 0x0908, + 0x0908, 0x0908, 0x0908, 0x0908, 0x0908, 0x0908, 0x0914, 0x0914, + // Entry 100 - 13F + 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, + 0x093d, 0x093d, 0x093d, 0x093d, 0x093d, 0x0947, 0x0947, 0x0955, + 0x0955, 0x095f, 0x095f, 0x0974, 0x0974, 0x0974, 0x097c, 0x097c, + 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, + 0x097c, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, + 0x0992, 0x0992, 0x0992, 0x0992, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, - 0x09a4, 0x09a4, 0x09c5, 0x09c5, 0x09c5, 0x09cf, 0x09cf, 0x09cf, + 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09c5, 0x09c5, 0x09c5, 0x09cf, // Entry 140 - 17F - 0x09cf, 0x09db, 0x09db, 0x09db, 0x09db, 0x09db, 0x09f8, 0x09f8, + 0x09cf, 0x09cf, 0x09cf, 0x09db, 0x09db, 0x09db, 0x09db, 0x09db, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, - 0x0a04, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a20, 0x0a20, - 0x0a20, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a38, 0x0a50, - 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a65, 0x0a65, 0x0a65, - 0x0a65, 0x0a77, 0x0a77, 0x0a92, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, - 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aae, 0x0ab8, 0x0ab8, 0x0ab8, - 0x0ab8, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, + 0x09f8, 0x09f8, 0x0a04, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a10, + 0x0a20, 0x0a20, 0x0a20, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, + 0x0a38, 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a65, + 0x0a65, 0x0a65, 0x0a65, 0x0a77, 0x0a77, 0x0a92, 0x0aa0, 0x0aa0, + 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aae, 0x0ab8, + 0x0ab8, 0x0ab8, 0x0ab8, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, // Entry 180 - 1BF - 0x0ac2, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0aeb, 0x0aeb, 0x0aeb, - 0x0aeb, 0x0aeb, 0x0b12, 0x0b12, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, - 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b26, 0x0b26, 0x0b26, - 0x0b26, 0x0b26, 0x0b2e, 0x0b4f, 0x0b4f, 0x0b66, 0x0b6e, 0x0b6e, - 0x0b6e, 0x0b6e, 0x0b6e, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b88, 0x0b88, - 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0ba4, 0x0ba4, - 0x0ba4, 0x0bac, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd9, - 0x0bd9, 0x0bd9, 0x0bd9, 0x0bd9, 0x0bdf, 0x0bdf, 0x0be7, 0x0be7, + 0x0ac2, 0x0ac2, 0x0ac2, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0aeb, + 0x0aeb, 0x0aeb, 0x0aeb, 0x0aeb, 0x0b12, 0x0b12, 0x0b1c, 0x0b1c, + 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b26, + 0x0b26, 0x0b26, 0x0b26, 0x0b26, 0x0b2e, 0x0b4f, 0x0b4f, 0x0b66, + 0x0b6e, 0x0b6e, 0x0b6e, 0x0b6e, 0x0b6e, 0x0b7a, 0x0b7a, 0x0b7a, + 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, + 0x0ba4, 0x0ba4, 0x0ba4, 0x0bac, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, + 0x0bcd, 0x0bd9, 0x0bd9, 0x0bd9, 0x0bd9, 0x0bd9, 0x0bdf, 0x0bdf, // Entry 1C0 - 1FF - 0x0be7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, + 0x0be7, 0x0be7, 0x0be7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, - 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bff, 0x0bff, - 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c09, 0x0c09, 0x0c09, - 0x0c09, 0x0c09, 0x0c09, 0x0c15, 0x0c15, 0x0c15, 0x0c15, 0x0c23, - 0x0c23, 0x0c23, 0x0c23, 0x0c23, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d, - 0x0c2d, 0x0c2d, 0x0c35, 0x0c35, 0x0c35, 0x0c52, 0x0c52, 0x0c52, - 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c7f, 0x0c96, + 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, + 0x0bf7, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, + 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c15, 0x0c15, + 0x0c15, 0x0c15, 0x0c23, 0x0c23, 0x0c23, 0x0c23, 0x0c23, 0x0c2d, + 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c35, 0x0c35, 0x0c35, + 0x0c52, 0x0c52, 0x0c52, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, // Entry 200 - 23F - 0x0caf, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, + 0x0c62, 0x0c7f, 0x0c96, 0x0caf, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, - 0x0cca, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, + 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, + 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, - 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0cd2, 0x0ce0, 0x0ce0, 0x0cf8, - 0x0cf8, 0x0cf8, 0x0cf8, 0x0d18, 0x0d1e, 0x0d1e, 0x0d1e, 0x0d1e, - 0x0d1e, 0x0d1e, 0x0d1e, 0x0d2a, 0x0d2a, 0x0d2a, 0x0d2a, 0x0d2a, - 0x0d3a, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d42, 0x0d42, 0x0d42, 0x0d42, + 0x0ce0, 0x0ce0, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0d18, 0x0d1e, + 0x0d1e, 0x0d1e, 0x0d1e, 0x0d1e, 0x0d1e, 0x0d1e, 0x0d2a, 0x0d2a, + 0x0d2a, 0x0d2a, 0x0d2a, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d42, // Entry 240 - 27F - 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d80, - 0x0d80, 0x0da6, 0x0da6, 0x0de1, 0x0de1, 0x0dfe, 0x0e2e, 0x0e51, - 0x0e70, 0x0e91, 0x0eb2, 0x0ee4, 0x0f05, 0x0f28, 0x0f28, 0x0f4b, - 0x0f72, 0x0f91, 0x0fa5, 0x0fd0, 0x0ff9, 0x100b, 0x100b, 0x1026, - 0x103b, 0x1058, + 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, + 0x0d42, 0x0d42, 0x0d80, 0x0d80, 0x0da6, 0x0da6, 0x0de1, 0x0de1, + 0x0dfe, 0x0e2e, 0x0e51, 0x0e70, 0x0e91, 0x0eb2, 0x0ee4, 0x0f05, + 0x0f28, 0x0f28, 0x0f4b, 0x0f72, 0x0f91, 0x0fa5, 0x0fd0, 0x0ff9, + 0x100b, 0x100b, 0x1026, 0x103b, 0x1058, }, }, { // cgg @@ -1558,7 +1928,7 @@ var langHeaders = [220]header{ "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" + "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" + "inaOruzuruRukiga", - []uint16{ // 246 elements + []uint16{ // 247 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031, @@ -1593,91 +1963,125 @@ var langHeaders = [220]header{ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01ac, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01ac, }, }, { // chr - "ᎠᏂᏓᏥᎩᎵᏏᏍᏆᏂᎦᎸᏥᎬᏩᎵᏲᏥᎢᏣᏩᏂᏏᏉᏧᎦᎵᏲᏂᎢᏓᎶᏂᎨᎦᏳᎦᎠᏣᏗᏣᎳᎩᎼᎻᎦᎠᎫᏌᏏᏂᎦᏄᏬᎵᏍᏛᎾ ᎦᏬᏂᎯᏍᏗ", - []uint16{ // 556 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - // Entry 40 - 7F - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0039, 0x0039, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - // Entry 80 - BF - 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, + "ᎠᏩᎳᎠᏆᏏᎠᏂᎠᎬᎿᎨᏍᏛᎠᎧᎾᎠᎹᎭᎵᎩᎠᏩᎪᏂᏏᎡᎳᏈᎠᏌᎻᏏᎠᏩᎵᎧᎠᏱᎹᎳᎠᏎᏆᏣᏂᏆᏍᎯᎩᎠᏇᎳᎷᏏᏊᎵᎨᎵᎠᏂᏈᏍᎳᎹᏆᎻᏆᎳᏇᏂ" + + "ᎦᎳᏘᏇᏔᏂᏇᏙᏂᏆᏍᏂᎠᏂᎨᏔᎳᏂᏤᏤᏂᏣᎼᎶᎪᎵᏍᎢᎧᏂᏤᎩᏧᏂᎳᏫᏍᏗ ᏍᎳᏫᎪᏧᏩᏏᏪᎵᏏᏕᏂᏍᏙᎢᏥᏗᏪᎯᏓᏐᏅᎧᎡᏪᎠᏂ" + + "ᎪᎢᎩᎵᏏᎡᏍᏇᎳᏂᏙᏍᏆᏂᎡᏍᏙᏂᎠᏂᏆᏍᎨᏇᏏᎠᏂᏊᎳᏂᏈᏂᏍᏫᏥᎠᏂᏇᎶᎡᏍᎦᎸᏥᏭᏕᎵᎬ ᏗᏜ ᏟᏏᎠᏂᎨᎵᎩᏍᎦᏗ ᎨᎵᎩ" + + "ᎦᎵᏏᎠᏂᏆᎳᏂᎫᏣᎳᏘᎹᎾᎧᏏᎭᎤᏌᎠᏂᏈᎷᎯᏂᏗᎧᎶᎡᏏᏂᎮᏏᎠᏂ ᏟᏲᎵᎲᏂᎦᎵᎠᏂᎮᎴᎶᎠᏰᏟ ᎦᏬᏂᎯᏍᏗᎢᏂᏙᏂᏏᎠᎢᎦ" + + "ᎪᏏᏧᏩᏂ ᏱᎢᏙᏧᏁᏍᏓᎸᎯᎢᎩᎬᏩᎵᏲᏥᎢᎢᏄᎦᏘᏚᏣᏩᏂᏏᏆᏌ ᏣᏩᏦᏥᎠᏂᎩᎫᏳᎫᏩᏂᎠᎹᎧᏌᎧᎧᎳᎵᏑᏘᎩᎻᎷᎧᎾᏓᎪᎵᎠ" + + "ᏂᎧᏄᎵᎧᏏᎻᎵᎫᏗᏏᎪᎻᏎᎷᎭᎩᎵᏣᎢᏍᎳᏘᏂᎸᎦᏏᎻᏋᎢᏍᎦᏂᏓᎴᎹᏊᎵᏏᎵᏂᎦᎳᎳᎣᎵᏚᏩᏂᎠᏂᎷᏆ-ᎧᏔᎦᎳᏘᏫᎠᏂᎹᎳᎦᏏ" + + "ᎹᏌᎵᏏᎹᏫᎹᏎᏙᏂᎠᎹᎳᏯᎳᎻᎹᏂᎪᎵᎠᏂᎹᎳᏘᎹᎴᎹᎵᏘᏍᏋᎻᏍᏃᎤᎷᏧᏴᏢ ᏂᏕᏇᎴᏁᏆᎵᎾᏙᎦᏛᏥᏃᎵᏪᏥᏂ ᎾᎵᏍᎩᏃᎵᏪ" + + "ᏥᏂ ᏉᎧᎹᎵᏧᎦᎾᏮ ᏂᏕᏇᎴᎾᏩᎰᏂᏯᏂᏣᎠᏏᏔᏂᎣᎶᎼᎣᏗᎠᎣᏎᏘᎧᏡᏂᏣᏈᏉᎵᏍᏆᏍᏙᏉᏧᎩᏍᎨᏧᏩᎠᏂᎶᎺᏂᎷᏂᏗᎶᎹᏂᎠ" + + "ᏂᏲᏅᎯᎩᏂᏯᏩᏂᏓᏍᏂᏍᎩᏗᏌᏗᏂᎠᏂᏏᏂᏗᏧᏴᏢ ᏗᏜ ᏌᎻᏌᏂᎪᏏᎾᎭᎳᏍᎶᏩᎩᏍᎶᏫᏂᎠᏂᏌᎼᏯᏂᏠᎾᏐᎹᎵᎠᎵᏇᏂᏎᏈᎠᏂ" + + "ᏍᏩᏘᏧᎦᎾᏮ ᏗᏜ ᏐᏠᏑᏂᏓᏂᏏᏍᏫᏗᏏᏍᏩᎯᎵᏔᎻᎵᏖᎷᎦᏔᏥᎩᏔᏱᏘᎩᎵᏂᎠᎠᏂᎬᎾᏧᏩᎾᏙᎾᎦᏂᎠᎬᎾᏦᎾᎦᏔᏔᏔᎯᏘᎠᏂ" + + "ᏫᎦᏳᎧᎴᏂᎠᏂᎤᎵᏚᎤᏍᏇᎩᏫᏂᏓᏫᎡᏘᎾᎻᏍᏬᎳᏊᎩᏩᎷᎾᏬᎶᏫᏠᏌᏱᏗᏍᏲᏄᏆᏓᎶᏂᎨᏑᎷᎠᏥᏂᏏᎠᏓᎾᎦᎺᎠᏗᎨᎠᎨᎹᎠᏱᏄ" + + "ᎠᎵᎤᏘᏧᎦᎾᏮ ᏗᏜ ᎠᎵᏔᎢᎠᎾᎩᎧᎹᏊᏤᎠᏩᏈᎰᎠᏑᎠᏍᏚᎵᎠᏂᎠᏩᏗᏆᎵᏁᏏᏆᏌᎠᏇᎹᏆᏇᎾᏉᏣᏊᎵᏈᏂᏏᎩᏏᎧᏉᏙᏈᎥᎩᏂ" + + "ᏍᏟᏂᎧᏳᎦᏎᏆᏃᏥᎦᏧᎨᏎᎹᎵᎠᏣᏓᏣᎳᎩᏣᏰᏂᎠᏰᏟ ᎫᏗᏏᏎᏎᎵᏩ ᏟᏲᎵ ᎠᏂᎦᎸᏓᎪᏔᏓᎳᏆᏔᎢᏔᎩᏟ ᎤᏄᎳᏥᏌᎹᎡᎳᏗ" + + " ᏐᏈᎠᏂᏚᎠᎳᏦᎳ-ᏬᏱᏓᏌᎦᎡᎻᏊᎡᏫᎩᎨᎧᏧᎧᎡᏬᏂᏙᎠᏈᎵᎩᏠᏂᏞᎤᎵᎠᏂᎦᎩᏏᎩᏇᏘᏏᎪᎶᏂᏔᏃᏍᏫᏏ ᎠᏂᏓᏥᎫᏏᏈᏥᏂᎭᏩ" + + "ᎼᎯᎵᎨᎾᏂᎭᎼᏂᎩᎦᎸᎳᏗᎨ ᏐᎵᏈᎠᏂᎠᏂᎱᏆᎢᏆᏂᎢᏈᏈᎣᎢᎶᎪᎢᏂᎫᏏᎶᏣᏆᏂᎾᎪᏆᎹᏣᎺᎧᏈᎴᎧᏥᏂᏥᏧᎧᎻᏆᎧᏆᏗᎠᏂᏔ" + + "ᏯᏆᎹᎪᏕᎧᏊᏪᏗᎠᏄᎪᎶᎧᏏᎪᏱᎳ ᏥᏂᎧᎪᎧᎴᏂᏥᏂᎩᎻᏊᏚᎧᏂᎧᏂᏇᎴᎧᎳᏣᏱ-ᏆᎵᎧᎵᎧᎴᎵᎠᏂᎫᎷᎩᏝᎻᏆᎸᏆᏫᎠᎪᎶᏂᎠ" + + "ᏂᎫᎻᎧᎳᏗᏃᎳᏂᎩᎴᏏᎦᏂᎳᎪᏓᎶᏏᏧᏴᏢ ᏗᏜ ᎷᎵᎷᏆ-ᎷᎷᎠᎷᎾᏓᎷᎣᎻᏐᎷᏱᎠᎹᏚᎴᏏᎹᎦᎯᎹᏟᎵᎹᎧᏌᎹᏌᏱᎼᎧᏌᎺᎾᏕ" + + "ᎺᎷᎼᎵᏏᎡᏂᎹᎫᏩ-ᎻᏙᎺᎳ’ᎻᎧᎹᎩᎻᎾᎧᏆᎤᎺᏂᏉᎵᎼᎭᎩᎼᏍᏏᎽᏂᏓᎩᏧᏈᏍᏗ ᏗᎦᏬᏂᎯᏍᏗᎠᎫᏌᎻᎳᏕᏏᎡᏏᏯᎹᏌᏕᎳᏂ" + + "ᏂᏯᏆᎵᏔᏂᎾᎹᏁᏩᎵᏂᎠᏏᏂᏳᏫᏯᏂᏆᏏᏲᎾᏥᏰᎹᏊᏂᏃᎦᏱᎾᎪᏧᏴᏢ ᏗᏜ ᏐᏠᏄᏪᎵᏂᏯᎾᎪᎴᏇᎦᏏᎠᏂᏆᎹᏆᎾᎦᏆᏈᏯᎺᎾᏙ" + + "ᏆᎳᎤᏩᏂᎾᎩᎵᎠᏂ ᏈᏥᏂᏡᏏᎠᏂᎩᏤᎳᏆᏄᏫᎳᎶᏙᎾᎦᏂᎶᎹᏉᎠᏬᎹᏂᎠᏂᏆᏌᏅᏓᏫᏌᎧᎾᏌᎹᏊᎷᏌᏂᏔᎵᎾᎦᎹᏇᏌᏁᎫᏏᏏᎵᎠ" + + "ᏂᏍᎦᏗᏏᏂᎦᏎᎾᎪᏱᎳᏈᎶ ᏎᏂᏔᏤᎵᎯᏘᏝᏂᏧᎦᎾᏮ ᏗᏜ ᏌᎻᎷᎴ ᏌᎻᎢᎾᎵ ᏌᎻᏍᎪᎵᏘ ᏌᎻᏐᏂᏂᎨᏏᎳᎾᏂ ᏙᏃᎪᏌᎰ" + + "ᏑᎫᎹᎪᎼᎵᎠᏂᏏᎵᎠᎩᏘᎹᏁᏖᏐᏖᏚᎼᏢᏓᏥᏟᎦᎾᏙᎩ ᏈᏏᏂᏔᎶᎪᏛᎹᏊᎧᏚᏩᎷᏔᏌᏩᎩᏚᏫᏂᎠᏂᎠᏰᏟ ᎡᎶᎯ ᏓᏟᎶᏍᏗᏓᏅ" + + "Ꭲ ᏔᎹᏏᏘᎤᏚᎷᏘᎤᎹᏊᏅᏚᎤᎾᏍᎦᎸᏩᏱᏭᎾᏦᏩᎵᏎᎵᏬᎳᏱᏔᏩᎴᎧᎳᎻᎧᏐᎦᏰᎾᎦᏇᏂᏰᎹᏋᎨᎾᏙᏂᏏᎠᏟᎶᏍᏗ ᎼᎶᎪ ᏔᎹ" + + "ᏏᏘᏑᏂᏝ ᎦᏬᏂᎯᏍᏗ ᎦᎸᏛᎢ ᏱᎩᏌᏌᎪᎯᏊ ᎢᎬᏥᎩ ᎠᏟᎶᏍᏗ ᎡᎳᏈᎠᏟᏯᏂ ᎠᏂᏓᏥᏍᏫᏏ ᎦᎸᎳᏗ ᎠᏂᏓᏥᎡᎳᏗᏜ" + + " ᎩᎵᏏᎨᎾᏓ ᎩᎵᏏᎩᎵᏏᏲ ᎩᎵᏏᎠᎹᏰᏟ ᎩᎵᏏᏔᏘᏂ ᎠᎹᏰᏟ ᏍᏆᏂᎠᏂᏍᏆᏂᏱ ᏍᏆᏂᏍᏆᏂᏱ ᏍᏆᏂᎨᎾᏓ ᎦᎸᏥᏍᏫᏏ " + + "ᎦᎸᏥᎡᎳᏗ ᏁᏛᎳᏂᏊᎵᏥᎥᎻ ᏛᏥᏆᏏᎵᎢ ᏉᏧᎦᎵᏉᏥᎦᎳ ᏉᏧᎦᎵᎹᎵᏙᏫᎠ ᏣᎹᏂᎠᏂᎧᏂᎪ ᏍᏩᎯᎵᎠᎯᏗᎨ ᏓᎶᏂᎨᎤ" + + "ᏦᏍᏗ ᏓᎶᏂᎨ", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0009, 0x0018, 0x0018, 0x002a, 0x0033, 0x0042, 0x0051, + 0x005a, 0x0066, 0x0072, 0x007e, 0x008d, 0x009c, 0x00a8, 0x00ba, + 0x00c6, 0x00d2, 0x00de, 0x00ea, 0x00f3, 0x0102, 0x010e, 0x0117, + 0x0120, 0x0132, 0x0132, 0x0138, 0x0157, 0x0160, 0x0169, 0x0172, + 0x017b, 0x0184, 0x0190, 0x0196, 0x01a2, 0x01ab, 0x01bd, 0x01c6, + 0x01d8, 0x01e1, 0x01ed, 0x01f6, 0x01ff, 0x020b, 0x0217, 0x0220, + 0x0240, 0x0249, 0x025c, 0x026b, 0x0274, 0x0280, 0x028c, 0x0295, + 0x02a1, 0x02aa, 0x02aa, 0x02b9, 0x02cf, 0x02e1, 0x02e1, 0x02ea, + // Entry 40 - 7F + 0x0306, 0x0318, 0x0318, 0x0321, 0x0331, 0x0331, 0x0337, 0x034f, + 0x0361, 0x0370, 0x037c, 0x0389, 0x0395, 0x0395, 0x039e, 0x03ad, + 0x03b6, 0x03c5, 0x03ce, 0x03d7, 0x03e3, 0x03ec, 0x03f8, 0x0401, + 0x0407, 0x0410, 0x041f, 0x0428, 0x043d, 0x0446, 0x0455, 0x0461, + 0x0467, 0x0479, 0x0489, 0x0498, 0x04a4, 0x04b0, 0x04b6, 0x04c5, + 0x04d4, 0x04e6, 0x04ef, 0x04f5, 0x0501, 0x050a, 0x0513, 0x0529, + 0x0532, 0x053b, 0x0541, 0x055d, 0x0579, 0x0592, 0x059b, 0x05a7, + 0x05b3, 0x05b3, 0x05bc, 0x05c5, 0x05d1, 0x05dd, 0x05dd, 0x05e6, + // Entry 80 - BF + 0x05ef, 0x05fb, 0x0604, 0x0613, 0x061c, 0x062b, 0x0634, 0x0646, + 0x0655, 0x0664, 0x066d, 0x0684, 0x068d, 0x0699, 0x06a5, 0x06b7, + 0x06c3, 0x06c9, 0x06d2, 0x06de, 0x06ea, 0x06f3, 0x070d, 0x071c, + 0x0728, 0x0734, 0x073d, 0x0746, 0x074f, 0x0755, 0x0764, 0x0770, + 0x0779, 0x0785, 0x078e, 0x0797, 0x079d, 0x07ac, 0x07b2, 0x07c4, + 0x07cd, 0x07d9, 0x07e2, 0x07f4, 0x0800, 0x0809, 0x0812, 0x0818, + 0x0821, 0x082a, 0x082a, 0x0836, 0x083c, 0x0848, 0x0848, 0x0857, + 0x0860, 0x0860, 0x0860, 0x0869, 0x0872, 0x0872, 0x0872, 0x087e, // Entry C0 - FF - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, - 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0081, 0x0081, 0x0081, + 0x087e, 0x089e, 0x089e, 0x08aa, 0x08aa, 0x08b3, 0x08b3, 0x08bf, + 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08c5, 0x08c5, 0x08d7, + 0x08d7, 0x08e0, 0x08e0, 0x08ec, 0x08ec, 0x08f5, 0x08f5, 0x08f5, + 0x08f5, 0x08f5, 0x08fe, 0x08fe, 0x0904, 0x0904, 0x0904, 0x0904, + 0x0910, 0x0910, 0x0916, 0x0916, 0x0916, 0x0922, 0x0922, 0x0922, + 0x0922, 0x0922, 0x0928, 0x0928, 0x0928, 0x0937, 0x0937, 0x093d, + 0x093d, 0x093d, 0x093d, 0x0946, 0x0946, 0x094f, 0x0955, 0x0955, + 0x0955, 0x095e, 0x0964, 0x0964, 0x096d, 0x096d, 0x0976, 0x097f, // Entry 100 - 13F - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0992, 0x0992, 0x0992, 0x0992, 0x09b5, 0x09b5, 0x09be, 0x09c7, + 0x09d0, 0x09d0, 0x09d0, 0x09e3, 0x09e3, 0x09e9, 0x09e9, 0x09ff, + 0x09ff, 0x0a08, 0x0a08, 0x0a15, 0x0a15, 0x0a1e, 0x0a27, 0x0a30, + 0x0a30, 0x0a30, 0x0a3c, 0x0a3c, 0x0a3c, 0x0a3c, 0x0a48, 0x0a48, + 0x0a48, 0x0a54, 0x0a54, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, + 0x0a5a, 0x0a5a, 0x0a69, 0x0a6c, 0x0a6c, 0x0a6c, 0x0a6c, 0x0a6c, + 0x0a6c, 0x0a72, 0x0a7e, 0x0a7e, 0x0a7e, 0x0a7e, 0x0a7e, 0x0a7e, + 0x0a8d, 0x0a8d, 0x0a8d, 0x0a8d, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa9, // Entry 140 - 17F - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0ab2, 0x0ab2, 0x0ab2, 0x0abb, 0x0abb, 0x0aca, 0x0aca, 0x0ad6, + 0x0af5, 0x0af5, 0x0b01, 0x0b0a, 0x0b16, 0x0b1f, 0x0b2b, 0x0b2b, + 0x0b2b, 0x0b37, 0x0b40, 0x0b49, 0x0b49, 0x0b49, 0x0b49, 0x0b49, + 0x0b52, 0x0b5b, 0x0b61, 0x0b6a, 0x0b6a, 0x0b79, 0x0b79, 0x0b82, + 0x0b8b, 0x0b9d, 0x0b9d, 0x0ba3, 0x0ba3, 0x0ba9, 0x0ba9, 0x0bb9, + 0x0bb9, 0x0bb9, 0x0bbf, 0x0bce, 0x0bda, 0x0bda, 0x0be6, 0x0be6, + 0x0bec, 0x0c05, 0x0c05, 0x0c05, 0x0c14, 0x0c1d, 0x0c29, 0x0c32, + 0x0c41, 0x0c4a, 0x0c4a, 0x0c53, 0x0c5c, 0x0c5c, 0x0c5c, 0x0c68, // Entry 180 - 1BF - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, + 0x0c68, 0x0c68, 0x0c68, 0x0c71, 0x0c71, 0x0c71, 0x0c77, 0x0c8e, + 0x0c8e, 0x0c9e, 0x0c9e, 0x0ca7, 0x0cad, 0x0cb3, 0x0cbc, 0x0cbc, + 0x0cbc, 0x0cc8, 0x0cc8, 0x0cd1, 0x0cda, 0x0ce3, 0x0ce3, 0x0cec, + 0x0cec, 0x0cf5, 0x0cf5, 0x0cfe, 0x0d04, 0x0d13, 0x0d13, 0x0d23, + 0x0d2c, 0x0d38, 0x0d47, 0x0d47, 0x0d53, 0x0d5c, 0x0d65, 0x0d65, + 0x0d71, 0x0d93, 0x0d9c, 0x0da8, 0x0da8, 0x0da8, 0x0da8, 0x0db1, + 0x0dc0, 0x0dc0, 0x0dd2, 0x0dd8, 0x0dd8, 0x0de1, 0x0dea, 0x0df9, + 0x0df9, 0x0e02, 0x0e14, 0x0e1d, 0x0e1d, 0x0e1d, 0x0e23, 0x0e3a, // Entry 1C0 - 1FF - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x0e43, 0x0e43, 0x0e43, 0x0e52, 0x0e52, 0x0e52, 0x0e52, 0x0e52, + 0x0e61, 0x0e61, 0x0e70, 0x0e82, 0x0e91, 0x0e91, 0x0eaa, 0x0eaa, + 0x0eaa, 0x0eaa, 0x0eaa, 0x0eaa, 0x0eaa, 0x0eaa, 0x0eaa, 0x0eb6, + 0x0eb6, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ec8, 0x0eda, 0x0eda, 0x0eda, + 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ef5, 0x0ef8, 0x0f04, + 0x0f0d, 0x0f0d, 0x0f19, 0x0f19, 0x0f25, 0x0f25, 0x0f31, 0x0f3a, + 0x0f49, 0x0f52, 0x0f52, 0x0f52, 0x0f5b, 0x0f61, 0x0f61, 0x0f61, + 0x0f77, 0x0f77, 0x0f77, 0x0f86, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, // Entry 200 - 23F - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x00c1, + 0x0f8c, 0x0fa6, 0x0fb3, 0x0fc3, 0x0fd6, 0x0fe2, 0x0fe2, 0x0ff8, + 0x0ff8, 0x0ffe, 0x0ffe, 0x1007, 0x1007, 0x1007, 0x1016, 0x1016, + 0x1022, 0x1022, 0x1022, 0x102b, 0x1031, 0x1031, 0x103a, 0x1043, + 0x1043, 0x1043, 0x1043, 0x104c, 0x104c, 0x104c, 0x104c, 0x104c, + 0x105c, 0x105c, 0x1065, 0x1065, 0x1065, 0x1065, 0x1071, 0x107a, + 0x1086, 0x1095, 0x10ce, 0x10da, 0x10da, 0x10e9, 0x10f8, 0x10fe, + 0x10fe, 0x10fe, 0x10fe, 0x10fe, 0x10fe, 0x10fe, 0x1107, 0x1113, + 0x111f, 0x1125, 0x1125, 0x1125, 0x1125, 0x1131, 0x1131, 0x1137, + // Entry 240 - 27F + 0x1137, 0x1137, 0x1146, 0x114f, 0x114f, 0x115e, 0x115e, 0x115e, + 0x115e, 0x115e, 0x1184, 0x118a, 0x11b4, 0x11ba, 0x11ea, 0x11ea, + 0x1203, 0x1226, 0x123c, 0x124f, 0x1265, 0x127b, 0x129b, 0x12b7, + 0x12cd, 0x12cd, 0x12e0, 0x12f3, 0x1309, 0x131f, 0x1338, 0x1351, + 0x1370, 0x1370, 0x1386, 0x139f, 0x13b8, }, }, { // ckb @@ -1685,15 +2089,15 @@ var langHeaders = [220]header{ "كاتالۆنیچەكیوێلزیدانماركیئاڵمانییۆنانیئینگلیزیئێسپیرانتۆئیسپانیئیست" + "ۆنیباسکیفارسیفینلەندیفەرانسیفریسیی ڕۆژاوائیرلەندیگالیسیگووارانیگوجا" + "راتیهیبرێهیندیكرواتیهەنگاری (مەجاری)ئەرمەنیئێەندونیزیئیسلەندیئیتالی" + - "ژاپۆنیجاڤانیگۆرجستانیکوردیكرگیزیلاتینیلينگالالاویلیتوانیلێتۆنیماكێد" + - "ۆنیمەنگۆلیماراتینیپالیهۆڵەندیئۆرییاپەنجابیپۆڵۆنیایی (لەهستانی)پەشتو" + - "وپورتوگالیڕۆمانیڕووسیسانسکريتسيندیسینهەلیسلۆڤاكیسلۆڤێنیسۆمالیئاڵبان" + - "یسەربیسودانیسویدیتامیلیتەلۆگویتاجیکیتایلەندیتیگرینیایتورکمانیتورکیئ" + - "ويخووریئۆكراینیئۆردووئوزبەکیڤیەتنامیچینیزولوکوردیی ناوەندیمازەندەرا" + - "نیکوردیی باشووریسامی باشووریزمانی نەناسراوئازەربایجانی باشووریئینگل" + - "یزیی ئۆسترالیاییئینگلیزیی کەنەداییئینگلیزیی بریتانیاییئینگلیزیی ئەم" + - "ەریکاییپورتوگاڵی برازیلپورتوگاڵی (پورتوگاڵ)", - []uint16{ // 605 elements + "ژاپۆنیجاڤانیگۆرجستانیکازاخیکوردیكرگیزیلاتینیلينگالالاویلیتوانیلێتۆن" + + "یماكێدۆنیمەنگۆلیماراتینیپالیهۆڵەندینۆروێژیئۆرییاپەنجابیپۆڵۆنیایی (ل" + + "ەهستانی)پەشتووپورتوگالیڕۆمانیڕووسیسانسکريتسيندیسینهەلیسلۆڤاكیسلۆڤێن" + + "یسۆمالیئاڵبانیسەربیسێسۆتۆسودانیسویدیتامیلیتەلۆگویتاجیکیتایلەندیتیگر" + + "ینیایتورکمانیتورکیئويخووریئۆكراینیئۆردووئوزبەکیڤیەتنامیچینیزولوکورد" + + "یی ناوەندیمازەندەرانیکوردیی باشووریسامی باشووریزمانی نەناسراوئازەرب" + + "ایجانی باشووریئینگلیزیی ئۆسترالیاییئینگلیزیی کەنەداییئینگلیزیی بریت" + + "انیاییئینگلیزیی ئەمەریکاییپورتوگاڵی برازیلپورتوگاڵی (پورتوگاڵ)", + []uint16{ // 608 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, 0x0020, 0x002c, 0x002c, 0x002c, 0x0044, 0x0044, 0x0056, 0x0064, @@ -1706,80 +2110,80 @@ var langHeaders = [220]header{ // Entry 40 - 7F 0x01ee, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0212, 0x021e, 0x021e, 0x022a, 0x0236, 0x0248, 0x0248, 0x0248, 0x0248, - 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0252, - 0x0252, 0x0252, 0x025e, 0x026a, 0x026a, 0x026a, 0x026a, 0x0278, - 0x0280, 0x028e, 0x028e, 0x029a, 0x029a, 0x029a, 0x029a, 0x02aa, - 0x02aa, 0x02b8, 0x02c4, 0x02c4, 0x02c4, 0x02c4, 0x02c4, 0x02c4, - 0x02d0, 0x02d0, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de, - 0x02de, 0x02de, 0x02de, 0x02ea, 0x02ea, 0x02f8, 0x02f8, 0x031d, - // Entry 80 - BF - 0x0329, 0x033b, 0x033b, 0x033b, 0x033b, 0x0347, 0x0351, 0x0351, - 0x0361, 0x0361, 0x036b, 0x036b, 0x036b, 0x0379, 0x0387, 0x0395, - 0x0395, 0x0395, 0x03a1, 0x03af, 0x03b9, 0x03b9, 0x03b9, 0x03c5, - 0x03cf, 0x03cf, 0x03db, 0x03e9, 0x03f5, 0x0405, 0x0417, 0x0427, - 0x0427, 0x0427, 0x0431, 0x0431, 0x0431, 0x0431, 0x0441, 0x0451, - 0x045d, 0x046b, 0x046b, 0x047b, 0x047b, 0x047b, 0x047b, 0x047b, - 0x047b, 0x047b, 0x047b, 0x0483, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - // Entry C0 - FF - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x04a6, - // Entry 100 - 13F - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, + 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x025e, + 0x025e, 0x025e, 0x026a, 0x0276, 0x0276, 0x0276, 0x0276, 0x0284, + 0x028c, 0x029a, 0x029a, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02b6, + 0x02b6, 0x02c4, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, + 0x02dc, 0x02dc, 0x02ea, 0x02ea, 0x02f8, 0x02f8, 0x02f8, 0x02f8, + 0x02f8, 0x02f8, 0x02f8, 0x0304, 0x0304, 0x0312, 0x0312, 0x0337, + // Entry 80 - BF + 0x0343, 0x0355, 0x0355, 0x0355, 0x0355, 0x0361, 0x036b, 0x036b, + 0x037b, 0x037b, 0x0385, 0x0385, 0x0385, 0x0393, 0x03a1, 0x03af, + 0x03af, 0x03af, 0x03bb, 0x03c9, 0x03d3, 0x03d3, 0x03df, 0x03eb, + 0x03f5, 0x03f5, 0x0401, 0x040f, 0x041b, 0x042b, 0x043d, 0x044d, + 0x044d, 0x044d, 0x0457, 0x0457, 0x0457, 0x0457, 0x0467, 0x0477, + 0x0483, 0x0491, 0x0491, 0x04a1, 0x04a1, 0x04a1, 0x04a1, 0x04a1, + 0x04a1, 0x04a1, 0x04a1, 0x04a9, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + // Entry C0 - FF + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + // Entry 100 - 13F + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, // Entry 140 - 17F - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, // Entry 180 - 1BF - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, - 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, // Entry 1C0 - 1FF - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, - 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, - 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04ee, 0x04ee, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04e2, 0x04e2, 0x04e2, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, + 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, // Entry 200 - 23F - 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, - 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, - 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, - 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, - 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, - 0x04ee, 0x04ee, 0x04ee, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x04fd, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, + 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, + 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, + 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, + 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, + 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x052f, 0x052f, + 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, + 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, // Entry 240 - 27F - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0530, 0x0530, 0x0530, 0x0559, - 0x057c, 0x05a3, 0x05ca, 0x05ca, 0x05ca, 0x05ca, 0x05ca, 0x05ca, - 0x05ca, 0x05ca, 0x05ca, 0x05e9, 0x060e, + 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, + 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x0556, + 0x0556, 0x0556, 0x057f, 0x05a2, 0x05c9, 0x05f0, 0x05f0, 0x05f0, + 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x060f, 0x0634, }, }, { // cs @@ -1794,61 +2198,66 @@ var langHeaders = [220]header{ "snegEsperantoSbaenegEstonegBasgegPersegFfwlaFfinnegFfijïegFfaröegFfr" + "angegFfriseg y GorllewinGwyddelegGaeleg yr AlbanGalisiegGuaraníGwjar" + "atiManawegHawsaHebraegHindiCroategCreol HaitiHwngaregArmenegHereroIn" + - "terlinguaIndonesegInterlingueIgboNwoswInwpiacegIslandegEidalegInwcti" + - "twtJapaneegJafanaegGeorgegCongoKikuyuCasachegKalaallisutChmeregKanna" + - "daCoreegCanwriCashmiregCwrdegComiCernywegCirgisegLladinLwcsembwrgegG" + - "andaLimbwrgegLingalaLaoegLithwanegLuba-KatangaLatfiegMalagasegMarsia" + - "legMaoriMacedonegMalayalamMongolegMarathiMaleiegMaltegByrmanegNawrŵe" + - "gNdebele GogleddolNepalegNdongaIseldiregNorwyeg NynorskNorwyeg Bokmå" + - "lNdebele DeheuolNafahoNianjaOcsitanegOjibwaOromoOriyaOsetegPwnjabegP" + - "aliPwylegPashtoPortiwgeegQuechuaRománshRwndiRwmanegRwsegCiniarŵandeg" + - "SansgritSardegSindhiSami GogleddolSangoSinhalegSlofacegSlofenegSamöe" + - "gShonaSomalegAlbanegSerbegSwatiSesothegSwndanegSwedegSwahiliTamilegT" + - "eluguTajicegThaiTigrinyaTwrcmenegTswanaTongegTyrcegTsongaegTataregUi" + - "ghurWcreinegWrdwWsbecegFendegFietnamegWalwnegWoloffXhosaIddew-Almaen" + - "egIorwbaTsieineegSwlwAcehnegAcoliAdangmegCircaseg GorllewinolArabeg " + - "TunisiaAffrihiliAghemegAinŵegAcadegAlabamäegAlewtegGhegeg AlbaniaAlt" + - "äeg DeheuolHen SaesnegAngikaAramaegArawcanegAraonaegArapahoArabeg A" + - "lgeriaArawacegArabeg MorocoArabeg yr AifftAswIaith Arwyddion America" + - "AstwrianegAwadhiBalwtsiBalïegBasâegBamwmegBejäegBembegBenaBaffwtegBa" + - "dagaBalochi GorllewinolComegSiksikaBrahuiBodoAcwsegBwriategBwlwCadoC" + - "aribegAtsamegTsigaMariegSioctoTsierocîCheyenneCwrdeg SoraniCoptegTyr" + - "ceg y CrimeaDacotaegDargwaTaitaDincaZarmaegDogriSorbeg IsafDiwalegIs" + - "eldireg CanolJola-FonyiEmbwHen EifftegElamegSaesneg CanolEwondoExtre" + - "maduregFfilipinegFfinneg TornedalFfrangeg CajwnFfrangeg CanolHen Ffr" + - "angegArpitanegFfriseg y GogleddFfriseg y DwyrainFfriwlegGagauzGaioGb" + - "aiaDareg y ZoroastriaidGilbertegUchel Almaeneg CanolHen Uchel Almaen" + - "egGothegHen RoegAlmaeneg y SwistirGusiiHaidaHawäiegHethegHmongegSorb" + - "eg UchafIbanegIbibioIlocanegIngwsiegNgombaMatsiameIddew-BersiegIddew" + - "-ArabegCara-CalpacegCabilegCambaCircaseg DwyreiniolTyapegMacondegCab" + - "oferdianegCàsegKoyra ChiiniChowaregKalenjinKomi-PermyakConcaniCarele" + - "gShambalaBaffiaCwlenegCwmicegIddew-SbaenegLangiLahndaLambaLezghegLak" + - "otaLombardegMongoLoziLuri GogleddolLatgalegLwndaLŵoLwshaiegLwyiaMadw" + - "regMagahiMaithiliMacasaregMandingoMasaiMocsiaMandaregMendegMêrwMoris" + - "yenGwyddeleg CanolMakhuwa-MeettoMetaMicmacegManshwManipwriMohocegMos" + - "iMari GorllewinolMundangmwy nag un iaithMirandegMarwariMasanderaniNa" + - "pliegNamaIsel AlmaenegNewaegAo NagaKwasioHen NorsegN’KoSotho Gogledd" + - "olNŵeregHen NewariNiamweziNiancoleNioroNzimegOsagegTyrceg OtomanPang" + - "asinegPahlafiPampangaPicardegAlmaeneg PensylfaniaHen BersiegAlmaeneg" + - " PalatinPhoenicegPiedmontegPontegPohnpeianegPrwsegHen BrofensalegK’i" + - "che’RajasthanegRapanŵiRaratongegRomboRomaniRotumanegAromanegRwaSandä" + - "wegAramaeg SamariaSambŵrwSasacegSantaliNgambeiegSangwSisilegSgotegSa" + - "sareseg SardiniaCwrdeg DeheuolSenecaSenaSeriSelcypegKoyraboro SenniH" + - "en WyddelegSamogitegTachelhitArabeg ChadSidamoIs-silesiegSami Deheuo" + - "lSami LwleSami InariSami ScoltSonincegSogdegSereregFfriseg Saterland" + - "SwcwmaSwsŵegSwmeregComoregHen SyriegSyriegSilesiegTuluTimnegTesoTere" + - "naTetumegTigregTifegTocelawegTsakhuregKlingonLlingitTalyshegTamashec" + - "egTok PisinTarokoTsaconegTwmbwcaTwfalwegTasawaqTamaseit Canolbarth M" + - "orocoFotiacegWgaritegUmbunduy GwraiddFaiegFenisegFepsFflemeg Gorllew" + - "inolFotegFunjoWalseregWalamoWinarayegWashoWarlpiriCalmycegSogaIembae" + - "gCantoneegZapotecegBlisssymbolsZêlandegTamaseit SafonolZuniDim cynnw" + - "ys ieithyddolZazäegArabeg Modern SafonolAserbaijaneg DeheuolAlmaeneg" + - " AwstriaAlmaeneg Safonol y SwistirSaesneg AwstraliaSaesneg CanadaSae" + - "sneg PrydainSaesneg AmericaSbaeneg America LadinSbaeneg EwropSbaeneg" + - " MecsicoFfrangeg CanadaFfrangeg y SwistirSacsoneg IselFflemegPortiwg" + - "eeg BrasilPortiwgeeg EwropMoldofegSerbo-CroategSwahili’r CongoTsiein" + - "eeg SymledigTsieineeg Traddodiadol", - []uint16{ // 610 elements + "terlinguaIndonesegInterlingueIgboNwoswInwpiacegIdoIslandegEidalegInw" + + "ctitwtJapaneegJafanaegGeorgegCongoKikuyuKuanyamaCasachegKalaallisutC" + + "hmeregKannadaCoreegCanwriCashmiregCwrdegComiCernywegCirgisegLladinLw" + + "csembwrgegGandaLimbwrgegLingalaLaoegLithwanegLuba-KatangaLatfiegMala" + + "gasegMarsialegMaoriMacedonegMalayalamMongolegMarathiMaleiegMaltegByr" + + "manegNawrŵegNdebele GogleddolNepalegNdongaIseldiregNorwyeg NynorskNo" + + "rwyeg BokmålNdebele DeheuolNafahoNianjaOcsitanegOjibwaOromoOriyaOset" + + "egPwnjabegPaliPwylegPashtoPortiwgeegQuechuaRománshRwndiRwmanegRwsegC" + + "iniarŵandegSansgritSardegSindhiSami GogleddolSangoSinhalegSlofacegSl" + + "ofenegSamöegShonaSomalegAlbanegSerbegSwatiSesotheg DeheuolSwndanegSw" + + "edegSwahiliTamilegTeluguTajicegThaiTigrinyaTwrcmenegTswanaTongegTyrc" + + "egTsongaegTataregTahitïegUighurWcreinegWrdwWsbecegFendegFietnamegFol" + + "apükWalwnegWoloffXhosaIddew-AlmaenegIorwbaTsieineegSwlwAcehnegAcoliA" + + "dangmegCircaseg GorllewinolArabeg TunisiaAffrihiliAghemegAinŵegAcade" + + "gAlabamäegAlewtegGhegeg AlbaniaAltäeg DeheuolHen SaesnegAngikaAramae" + + "gArawcanegAraonaegArapahoArabeg AlgeriaArawacegArabeg MorocoArabeg y" + + "r AifftAswIaith Arwyddion AmericaAstwrianegAwadhiBalwtsiBalïegBasâeg" + + "BamwmegBejäegBembegBenaBaffwtegBadagaBalochi GorllewinolBhojpuriBini" + + "ComegSiksikaBrahuiBodoAcwsegBwriategBugineseBwlwBlinCadoCaribegAtsam" + + "egCebuanoTsigaChuukeseMariegSioctoTsierocîCheyenneCwrdeg SoraniCopte" + + "gTyrceg y CrimeaFfrangeg Seselwa CreoleDacotaegDargwaTaitaDogribDinc" + + "aZarmaegDogriSorbeg IsafDiwalegIseldireg CanolJola-FonyiDazagaEmbwEf" + + "ikHen EifftegEkajukElamegSaesneg CanolEwondoExtremaduregFfilipinegFf" + + "inneg TornedalFonFfrangeg CajwnFfrangeg CanolHen FfrangegArpitanegFf" + + "riseg GogleddolFfriseg y DwyrainFfriwlegGaGagauzGaioGbaiaDareg y Zor" + + "oastriaidGeezGilbertegAlmaeneg Uchel CanolHen Almaeneg UchelGorontal" + + "oGothegHen RoegAlmaeneg y SwistirGusiiGwichʼinHaidaHawäiegHiligaynon" + + "HethegHmongegSorbeg UchafHupaIbanegIbibioIlocanegIngwsiegLojbanNgomb" + + "aMatsiameIddew-BersiegIddew-ArabegCara-CalpacegCabilegKachinJjuCamba" + + "Circaseg DwyreiniolTyapegMacondegCaboferdianegKoroCàsegKoyra ChiiniC" + + "howaregKakoKalenjinKimbunduKomi-PermyakConcaniKpelleKarachay-BalkarC" + + "arelegKurukhShambalaBaffiaCwlenegCwmicegIddew-SbaenegLangiLahndaLamb" + + "aLezghegLakotaLombardegMongoLoziLuri GogleddolLatgalegLuba-LuluaLwnd" + + "aLŵoLwshaiegLwyiaMadwregMagahiMaithiliMacasaregMandingoMasaiMocsiaMa" + + "ndaregMendegMêrwMorisyenGwyddeleg CanolMakhuwa-MeettoMetaMicmacegMin" + + "angkabauManshwManipwriMohocegMosiMari GorllewinolMundangMwy nag un i" + + "aithCreekMirandegMarwariErzyaMasanderaniNapliegNamaAlmaeneg IselNewa" + + "egNiasNiueanAo NagaKwasioNgiemboonNogaiHen NorsegN’KoSotho Gogleddol" + + "NŵeregHen NewariNiamweziNiancoleNioroNzimegOsagegTyrceg OtomanPangas" + + "inegPahlafiPampangaPapiamentoPalawanPicardegPidgin NigeriaAlmaeneg P" + + "ensylfaniaHen BersiegAlmaeneg PalatinPhoenicegPiedmontegPontegPohnpe" + + "ianegPrwsegHen BrofensalegK’iche’RajasthanegRapanŵiRaratongegRomboRo" + + "maniRotumanegAromanegRwaSandäwegSakhaAramaeg SamariaSambŵrwSasacegSa" + + "ntaliNgambeiegSangwSisilegSgotegSasareseg SardiniaCwrdeg DeheuolSene" + + "caSenaSeriSelcypegKoyraboro SenniHen WyddelegSamogitegTachelhitShanA" + + "rabeg ChadSidamoIs-silesiegSami DeheuolSami LwleSami InariSami Scolt" + + "SonincegSogdegSranan TongoSereregSahoFfriseg SaterlandSwcwmaSwsŵegSw" + + "meregComoregHen SyriegSyriegSilesiegTuluTimnegTesoTerenaTetumegTigre" + + "gTifegTocelawegTsakhuregKlingonLlingitTalyshegTamashecegTok PisinTar" + + "okoTsaconegTwmbwcaTwfalwegTasawaqTwfwniegTamaseit Canolbarth MorocoF" + + "otiacegWgaritegUmbunduY GwraiddFaiegFenisegFepsFflemeg GorllewinolFo" + + "tegFunjoWalseregWalamoWinarayegWashoWarlpiriCalmycegSogaIangbenIemba" + + "egCantoneegZapotecegBlisssymbolsZêlandegTamaseit SafonolZuniDim cynn" + + "wys ieithyddolZazäegArabeg Modern SafonolAserbaijaneg DeheuolAlmaene" + + "g AwstriaAlmaeneg Safonol y SwistirSaesneg AwstraliaSaesneg CanadaSa" + + "esneg PrydainSaesneg AmericaSbaeneg America LadinSbaeneg EwropSbaene" + + "g MecsicoFfrangeg CanadaFfrangeg y SwistirSacsoneg IselFflemegPortiw" + + "geeg BrasilPortiwgeeg EwropMoldofegSerbo-CroategSwahili’r CongoTsiei" + + "neeg SymledigTsieineeg Traddodiadol", + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0007, 0x000f, 0x0018, 0x0023, 0x0029, 0x0030, 0x0038, 0x003e, 0x0044, 0x004a, 0x0051, 0x005d, 0x0067, 0x0070, 0x0078, @@ -1859,83 +2268,83 @@ var langHeaders = [220]header{ 0x0173, 0x017c, 0x018b, 0x0193, 0x019b, 0x01a3, 0x01aa, 0x01af, 0x01b6, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d5, 0x01dc, 0x01e2, // Entry 40 - 7F - 0x01ed, 0x01f6, 0x0201, 0x0205, 0x020a, 0x0213, 0x0213, 0x021b, - 0x0222, 0x022b, 0x0233, 0x023b, 0x0242, 0x0247, 0x024d, 0x024d, - 0x0255, 0x0260, 0x0267, 0x026e, 0x0274, 0x027a, 0x0283, 0x0289, - 0x028d, 0x0295, 0x029d, 0x02a3, 0x02af, 0x02b4, 0x02bd, 0x02c4, - 0x02c9, 0x02d2, 0x02de, 0x02e5, 0x02ee, 0x02f7, 0x02fc, 0x0305, - 0x030e, 0x0316, 0x031d, 0x0324, 0x032a, 0x0332, 0x033a, 0x034b, - 0x0352, 0x0358, 0x0361, 0x0370, 0x037f, 0x038e, 0x0394, 0x039a, - 0x03a3, 0x03a9, 0x03ae, 0x03b3, 0x03b9, 0x03c1, 0x03c5, 0x03cb, - // Entry 80 - BF - 0x03d1, 0x03db, 0x03e2, 0x03ea, 0x03ef, 0x03f6, 0x03fb, 0x0408, - 0x0410, 0x0416, 0x041c, 0x042a, 0x042f, 0x0437, 0x043f, 0x0447, - 0x044e, 0x0453, 0x045a, 0x0461, 0x0467, 0x046c, 0x0474, 0x047c, - 0x0482, 0x0489, 0x0490, 0x0496, 0x049d, 0x04a1, 0x04a9, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cc, 0x04d3, 0x04d3, 0x04d9, 0x04e1, - 0x04e5, 0x04ec, 0x04f2, 0x04fb, 0x04fb, 0x0502, 0x0508, 0x050d, - 0x051b, 0x0521, 0x0521, 0x052a, 0x052e, 0x0535, 0x053a, 0x0542, - 0x0556, 0x0564, 0x056d, 0x0574, 0x057b, 0x0581, 0x058b, 0x0592, - // Entry C0 - FF - 0x05a0, 0x05af, 0x05ba, 0x05c0, 0x05c7, 0x05d0, 0x05d8, 0x05df, - 0x05ed, 0x05f5, 0x0602, 0x0611, 0x0614, 0x062b, 0x0635, 0x0635, - 0x063b, 0x0642, 0x0649, 0x0649, 0x0650, 0x0657, 0x0657, 0x0657, - 0x065e, 0x0664, 0x0664, 0x0668, 0x0670, 0x0676, 0x0689, 0x0689, - 0x0689, 0x0689, 0x0689, 0x068e, 0x0695, 0x0695, 0x0695, 0x0695, - 0x069b, 0x069f, 0x06a5, 0x06ad, 0x06ad, 0x06b1, 0x06b1, 0x06b1, - 0x06b5, 0x06bc, 0x06bc, 0x06c3, 0x06c3, 0x06c8, 0x06c8, 0x06c8, - 0x06c8, 0x06ce, 0x06ce, 0x06d4, 0x06d4, 0x06dd, 0x06e5, 0x06f2, - // Entry 100 - 13F - 0x06f8, 0x06f8, 0x0707, 0x0707, 0x070f, 0x0715, 0x071a, 0x071a, - 0x071a, 0x071a, 0x071f, 0x0726, 0x072b, 0x0736, 0x0736, 0x073d, - 0x074c, 0x0756, 0x0756, 0x0756, 0x075a, 0x075a, 0x075a, 0x0765, - 0x0765, 0x076b, 0x0778, 0x0778, 0x077e, 0x078a, 0x078a, 0x0794, - 0x07a4, 0x07a4, 0x07b2, 0x07c0, 0x07cc, 0x07d5, 0x07e6, 0x07f7, - 0x07ff, 0x07ff, 0x0805, 0x0805, 0x0809, 0x080e, 0x0822, 0x0822, - 0x082b, 0x082b, 0x083f, 0x0851, 0x0851, 0x0851, 0x0851, 0x0857, - 0x0857, 0x085f, 0x0871, 0x0871, 0x0871, 0x0876, 0x0876, 0x087b, + 0x01ed, 0x01f6, 0x0201, 0x0205, 0x020a, 0x0213, 0x0216, 0x021e, + 0x0225, 0x022e, 0x0236, 0x023e, 0x0245, 0x024a, 0x0250, 0x0258, + 0x0260, 0x026b, 0x0272, 0x0279, 0x027f, 0x0285, 0x028e, 0x0294, + 0x0298, 0x02a0, 0x02a8, 0x02ae, 0x02ba, 0x02bf, 0x02c8, 0x02cf, + 0x02d4, 0x02dd, 0x02e9, 0x02f0, 0x02f9, 0x0302, 0x0307, 0x0310, + 0x0319, 0x0321, 0x0328, 0x032f, 0x0335, 0x033d, 0x0345, 0x0356, + 0x035d, 0x0363, 0x036c, 0x037b, 0x038a, 0x0399, 0x039f, 0x03a5, + 0x03ae, 0x03b4, 0x03b9, 0x03be, 0x03c4, 0x03cc, 0x03d0, 0x03d6, + // Entry 80 - BF + 0x03dc, 0x03e6, 0x03ed, 0x03f5, 0x03fa, 0x0401, 0x0406, 0x0413, + 0x041b, 0x0421, 0x0427, 0x0435, 0x043a, 0x0442, 0x044a, 0x0452, + 0x0459, 0x045e, 0x0465, 0x046c, 0x0472, 0x0477, 0x0487, 0x048f, + 0x0495, 0x049c, 0x04a3, 0x04a9, 0x04b0, 0x04b4, 0x04bc, 0x04c5, + 0x04cb, 0x04d1, 0x04d7, 0x04df, 0x04e6, 0x04ef, 0x04f5, 0x04fd, + 0x0501, 0x0508, 0x050e, 0x0517, 0x051f, 0x0526, 0x052c, 0x0531, + 0x053f, 0x0545, 0x0545, 0x054e, 0x0552, 0x0559, 0x055e, 0x0566, + 0x057a, 0x0588, 0x0591, 0x0598, 0x059f, 0x05a5, 0x05af, 0x05b6, + // Entry C0 - FF + 0x05c4, 0x05d3, 0x05de, 0x05e4, 0x05eb, 0x05f4, 0x05fc, 0x0603, + 0x0611, 0x0611, 0x0619, 0x0626, 0x0635, 0x0638, 0x064f, 0x0659, + 0x0659, 0x065f, 0x0666, 0x066d, 0x066d, 0x0674, 0x067b, 0x067b, + 0x067b, 0x0682, 0x0688, 0x0688, 0x068c, 0x0694, 0x069a, 0x06ad, + 0x06b5, 0x06b5, 0x06b9, 0x06b9, 0x06be, 0x06c5, 0x06c5, 0x06c5, + 0x06c5, 0x06cb, 0x06cf, 0x06d5, 0x06dd, 0x06e5, 0x06e9, 0x06ed, + 0x06ed, 0x06f1, 0x06f8, 0x06f8, 0x06ff, 0x0706, 0x070b, 0x070b, + 0x070b, 0x0713, 0x0719, 0x0719, 0x071f, 0x071f, 0x0728, 0x0730, + // Entry 100 - 13F + 0x073d, 0x0743, 0x0743, 0x0752, 0x0769, 0x0769, 0x0771, 0x0777, + 0x077c, 0x077c, 0x077c, 0x0782, 0x0787, 0x078e, 0x0793, 0x079e, + 0x079e, 0x07a5, 0x07b4, 0x07be, 0x07be, 0x07c4, 0x07c8, 0x07cc, + 0x07cc, 0x07d7, 0x07dd, 0x07e3, 0x07f0, 0x07f0, 0x07f6, 0x0802, + 0x0802, 0x080c, 0x081c, 0x081f, 0x082d, 0x083b, 0x0847, 0x0850, + 0x0861, 0x0872, 0x087a, 0x087c, 0x0882, 0x0882, 0x0886, 0x088b, + 0x089f, 0x08a3, 0x08ac, 0x08ac, 0x08c0, 0x08d2, 0x08d2, 0x08d2, + 0x08db, 0x08e1, 0x08e1, 0x08e9, 0x08fb, 0x08fb, 0x08fb, 0x0900, // Entry 140 - 17F - 0x087b, 0x0883, 0x0883, 0x0883, 0x0889, 0x0890, 0x089c, 0x089c, - 0x089c, 0x08a2, 0x08a8, 0x08b0, 0x08b8, 0x08b8, 0x08b8, 0x08b8, - 0x08be, 0x08c6, 0x08d3, 0x08df, 0x08df, 0x08ec, 0x08f3, 0x08f3, - 0x08f3, 0x08f8, 0x08f8, 0x090b, 0x090b, 0x0911, 0x0919, 0x0926, - 0x0926, 0x0926, 0x0926, 0x092c, 0x092c, 0x0938, 0x0940, 0x0940, - 0x0940, 0x0948, 0x0948, 0x0954, 0x095b, 0x095b, 0x095b, 0x095b, - 0x095b, 0x095b, 0x0962, 0x0962, 0x096a, 0x0970, 0x0977, 0x097e, - 0x097e, 0x098b, 0x0990, 0x0996, 0x099b, 0x09a2, 0x09a2, 0x09a2, + 0x0909, 0x090e, 0x090e, 0x0916, 0x0916, 0x0920, 0x0926, 0x092d, + 0x0939, 0x0939, 0x093d, 0x0943, 0x0949, 0x0951, 0x0959, 0x0959, + 0x0959, 0x095f, 0x0965, 0x096d, 0x097a, 0x0986, 0x0986, 0x0993, + 0x099a, 0x09a0, 0x09a3, 0x09a8, 0x09a8, 0x09bb, 0x09bb, 0x09c1, + 0x09c9, 0x09d6, 0x09d6, 0x09da, 0x09da, 0x09e0, 0x09e0, 0x09ec, + 0x09f4, 0x09f4, 0x09f8, 0x0a00, 0x0a08, 0x0a14, 0x0a1b, 0x0a1b, + 0x0a21, 0x0a30, 0x0a30, 0x0a30, 0x0a37, 0x0a3d, 0x0a45, 0x0a4b, + 0x0a52, 0x0a59, 0x0a59, 0x0a66, 0x0a6b, 0x0a71, 0x0a76, 0x0a7d, // Entry 180 - 1BF - 0x09a2, 0x09a8, 0x09b1, 0x09b6, 0x09ba, 0x09c8, 0x09d0, 0x09d0, - 0x09d0, 0x09d5, 0x09d9, 0x09e1, 0x09e6, 0x09e6, 0x09e6, 0x09ed, - 0x09ed, 0x09f3, 0x09fb, 0x0a04, 0x0a0c, 0x0a11, 0x0a11, 0x0a17, - 0x0a1f, 0x0a25, 0x0a2a, 0x0a32, 0x0a41, 0x0a4f, 0x0a53, 0x0a5b, - 0x0a5b, 0x0a61, 0x0a69, 0x0a70, 0x0a74, 0x0a84, 0x0a8b, 0x0a9b, - 0x0a9b, 0x0aa3, 0x0aaa, 0x0aaa, 0x0aaa, 0x0aaa, 0x0ab5, 0x0ab5, - 0x0abc, 0x0ac0, 0x0acd, 0x0ad3, 0x0ad3, 0x0ad3, 0x0ada, 0x0ae0, - 0x0ae0, 0x0ae0, 0x0aea, 0x0aea, 0x0af0, 0x0aff, 0x0b06, 0x0b10, + 0x0a7d, 0x0a7d, 0x0a7d, 0x0a83, 0x0a8c, 0x0a91, 0x0a95, 0x0aa3, + 0x0aab, 0x0ab5, 0x0ab5, 0x0aba, 0x0abe, 0x0ac6, 0x0acb, 0x0acb, + 0x0acb, 0x0ad2, 0x0ad2, 0x0ad8, 0x0ae0, 0x0ae9, 0x0af1, 0x0af6, + 0x0af6, 0x0afc, 0x0b04, 0x0b0a, 0x0b0f, 0x0b17, 0x0b26, 0x0b34, + 0x0b38, 0x0b40, 0x0b4b, 0x0b51, 0x0b59, 0x0b60, 0x0b64, 0x0b74, + 0x0b7b, 0x0b8b, 0x0b90, 0x0b98, 0x0b9f, 0x0b9f, 0x0b9f, 0x0ba4, + 0x0baf, 0x0baf, 0x0bb6, 0x0bba, 0x0bc7, 0x0bcd, 0x0bd1, 0x0bd7, + 0x0bde, 0x0be4, 0x0bed, 0x0bf2, 0x0bfc, 0x0bfc, 0x0c02, 0x0c11, // Entry 1C0 - 1FF - 0x0b18, 0x0b20, 0x0b25, 0x0b2b, 0x0b31, 0x0b3e, 0x0b48, 0x0b4f, - 0x0b57, 0x0b57, 0x0b57, 0x0b5f, 0x0b73, 0x0b73, 0x0b7e, 0x0b8e, - 0x0b97, 0x0ba1, 0x0ba7, 0x0bb2, 0x0bb8, 0x0bc7, 0x0bd2, 0x0bd2, - 0x0bdd, 0x0be5, 0x0bef, 0x0bef, 0x0bef, 0x0bf4, 0x0bfa, 0x0c03, - 0x0c03, 0x0c03, 0x0c0b, 0x0c0e, 0x0c17, 0x0c17, 0x0c26, 0x0c2e, - 0x0c35, 0x0c3c, 0x0c3c, 0x0c45, 0x0c4a, 0x0c51, 0x0c57, 0x0c69, - 0x0c77, 0x0c7d, 0x0c81, 0x0c85, 0x0c8d, 0x0c9c, 0x0ca8, 0x0cb1, - 0x0cba, 0x0cba, 0x0cc5, 0x0ccb, 0x0cd6, 0x0cd6, 0x0ce2, 0x0ceb, + 0x0c18, 0x0c22, 0x0c2a, 0x0c32, 0x0c37, 0x0c3d, 0x0c43, 0x0c50, + 0x0c5a, 0x0c61, 0x0c69, 0x0c73, 0x0c7a, 0x0c82, 0x0c90, 0x0ca4, + 0x0ca4, 0x0caf, 0x0cbf, 0x0cc8, 0x0cd2, 0x0cd8, 0x0ce3, 0x0ce9, + 0x0cf8, 0x0d03, 0x0d03, 0x0d0e, 0x0d16, 0x0d20, 0x0d20, 0x0d20, + 0x0d25, 0x0d2b, 0x0d34, 0x0d34, 0x0d34, 0x0d3c, 0x0d3f, 0x0d48, + 0x0d4d, 0x0d5c, 0x0d64, 0x0d6b, 0x0d72, 0x0d72, 0x0d7b, 0x0d80, + 0x0d87, 0x0d8d, 0x0d9f, 0x0dad, 0x0db3, 0x0db7, 0x0dbb, 0x0dc3, + 0x0dd2, 0x0dde, 0x0de7, 0x0df0, 0x0df4, 0x0dff, 0x0e05, 0x0e10, // Entry 200 - 23F - 0x0cf5, 0x0cff, 0x0d07, 0x0d0d, 0x0d0d, 0x0d14, 0x0d14, 0x0d25, - 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d4a, 0x0d50, 0x0d58, 0x0d5c, - 0x0d62, 0x0d66, 0x0d6c, 0x0d73, 0x0d79, 0x0d7e, 0x0d87, 0x0d90, - 0x0d97, 0x0d9e, 0x0da6, 0x0db0, 0x0db0, 0x0db9, 0x0db9, 0x0dbf, - 0x0dc7, 0x0dc7, 0x0dc7, 0x0dce, 0x0dd6, 0x0ddd, 0x0ddd, 0x0df7, - 0x0dff, 0x0e07, 0x0e0e, 0x0e17, 0x0e1c, 0x0e23, 0x0e27, 0x0e3a, - 0x0e3a, 0x0e3f, 0x0e3f, 0x0e44, 0x0e4c, 0x0e52, 0x0e5b, 0x0e60, - 0x0e68, 0x0e68, 0x0e70, 0x0e70, 0x0e74, 0x0e74, 0x0e74, 0x0e74, + 0x0e10, 0x0e1c, 0x0e25, 0x0e2f, 0x0e39, 0x0e41, 0x0e47, 0x0e53, + 0x0e5a, 0x0e5e, 0x0e6f, 0x0e75, 0x0e7c, 0x0e83, 0x0e8a, 0x0e94, + 0x0e9a, 0x0ea2, 0x0ea6, 0x0eac, 0x0eb0, 0x0eb6, 0x0ebd, 0x0ec3, + 0x0ec8, 0x0ed1, 0x0eda, 0x0ee1, 0x0ee8, 0x0ef0, 0x0efa, 0x0efa, + 0x0f03, 0x0f03, 0x0f09, 0x0f11, 0x0f11, 0x0f11, 0x0f18, 0x0f20, + 0x0f27, 0x0f2f, 0x0f49, 0x0f51, 0x0f59, 0x0f60, 0x0f69, 0x0f6e, + 0x0f75, 0x0f79, 0x0f8c, 0x0f8c, 0x0f91, 0x0f91, 0x0f96, 0x0f9e, + 0x0fa4, 0x0fad, 0x0fb2, 0x0fba, 0x0fba, 0x0fc2, 0x0fc2, 0x0fc6, // Entry 240 - 27F - 0x0e7b, 0x0e7b, 0x0e84, 0x0e8d, 0x0e99, 0x0ea2, 0x0ea2, 0x0eb2, - 0x0eb6, 0x0ecc, 0x0ed3, 0x0ee8, 0x0efc, 0x0f0c, 0x0f26, 0x0f37, - 0x0f45, 0x0f54, 0x0f63, 0x0f78, 0x0f85, 0x0f94, 0x0f94, 0x0fa3, - 0x0fb5, 0x0fc2, 0x0fc9, 0x0fda, 0x0fea, 0x0ff2, 0x0fff, 0x1010, - 0x1022, 0x1038, + 0x0fc6, 0x0fc6, 0x0fcd, 0x0fd4, 0x0fd4, 0x0fdd, 0x0fe6, 0x0ff2, + 0x0ffb, 0x0ffb, 0x100b, 0x100f, 0x1025, 0x102c, 0x1041, 0x1055, + 0x1065, 0x107f, 0x1090, 0x109e, 0x10ad, 0x10bc, 0x10d1, 0x10de, + 0x10ed, 0x10ed, 0x10fc, 0x110e, 0x111b, 0x1122, 0x1133, 0x1143, + 0x114b, 0x1158, 0x1169, 0x117b, 0x1191, }, }, { // da @@ -1949,7 +2358,7 @@ var langHeaders = [220]header{ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + "rubaKichinaKizuluKitaita", - []uint16{ // 263 elements + []uint16{ // 265 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, @@ -1987,16 +2396,113 @@ var langHeaders = [220]header{ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0170, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0170, }, }, { // de deLangStr, deLangIdx, }, + { // de-AT + "Hausakaribische SpracheChibcha-SpracheDelawarischFriulanischHawaiianisch" + + "Miao-SpracheMuskogee-SpracheNiueanischPangasinensischSchlesischmoder" + + "nes HocharabischSerbokroatisch", + []uint16{ // 610 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + // Entry 40 - 7F + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + // Entry 80 - BF + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + // Entry C0 - FF + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, + // Entry 100 - 13F + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, + 0x0026, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + // Entry 140 - 17F + 0x003c, 0x003c, 0x003c, 0x0048, 0x0048, 0x0048, 0x0048, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + // Entry 180 - 1BF + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, + 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + // Entry 1C0 - 1FF + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + // Entry 200 - 23F + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + // Entry 240 - 27F + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x00aa, + }, + }, { // de-CH - "WeissrussischAltpreussisch", - []uint16{ // 469 elements + "WeissrussischAceh-SpracheAcholi-SpracheBasaa-SpracheBikol-SpracheBini-Sp" + + "racheChibcha-SpracheDinka-SprachePangwe-SpracheGbaya-SpracheKimbundu" + + "-SpracheMuskogee-SpracheAltpreussisch", + []uint16{ // 472 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, @@ -2022,48 +2528,55 @@ var langHeaders = [220]header{ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0019, 0x0027, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, // Entry C0 - FF - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0041, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, // Entry 100 - 13F - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, // Entry 140 - 17F - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, // Entry 180 - 1BF - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, // Entry 1C0 - 1FF - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x001a, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00b1, + }, + }, + { // de-LU + "Belarussisch", + []uint16{ // 15 elements + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, }, }, { // dje @@ -2076,7 +2589,7 @@ var langHeaders = [220]header{ "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " + "senniUrdu senniVietnaam senniYorbance senniSinuwa senniZulu senniZar" + "maciine", - []uint16{ // 268 elements + []uint16{ // 270 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, @@ -2115,7 +2628,7 @@ var langHeaders = [220]header{ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, // Entry 100 - 13F 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x022d, + 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x022d, }, }, { // dsb @@ -2160,7 +2673,7 @@ var langHeaders = [220]header{ "lska portugalšćinaeuropejska portugalšćinamoldawišćinaserbochorwatšć" + "inakongojska swahilišćinachinšćina (zjadnorjona)chinšćina (tradicion" + "alna)", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000b, 0x0018, 0x0018, 0x0020, 0x002b, 0x0037, 0x0044, 0x004f, 0x005a, 0x0065, 0x0071, 0x0084, 0x0092, 0x00a1, 0x00ae, @@ -2190,69 +2703,69 @@ var langHeaders = [220]header{ 0x0750, 0x0750, 0x0750, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, // Entry C0 - FF 0x0755, 0x0755, 0x0767, 0x0767, 0x0767, 0x0774, 0x0774, 0x0774, - 0x0774, 0x0774, 0x0774, 0x0774, 0x0778, 0x0778, 0x0784, 0x0784, + 0x0774, 0x0774, 0x0774, 0x0774, 0x0774, 0x0778, 0x0778, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, - 0x0784, 0x0789, 0x0789, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, + 0x0784, 0x0784, 0x0789, 0x0789, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, - 0x078d, 0x0791, 0x0791, 0x0791, 0x079c, 0x079c, 0x079c, 0x079c, - 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x07a1, 0x07a1, 0x07a1, - 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07af, 0x07b7, 0x07b7, 0x07bd, - // Entry 100 - 13F - 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07c2, 0x07c2, - 0x07c2, 0x07c2, 0x07c2, 0x07c7, 0x07c7, 0x07d7, 0x07d7, 0x07dc, - 0x07dc, 0x07e6, 0x07e6, 0x07e6, 0x07ea, 0x07ea, 0x07ea, 0x07ea, - 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07f8, - 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, - 0x07f8, 0x07f8, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, - 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0810, - 0x0810, 0x0810, 0x0825, 0x0825, 0x0825, 0x082a, 0x082a, 0x082a, + 0x078d, 0x078d, 0x0791, 0x0791, 0x0791, 0x079c, 0x079c, 0x079c, + 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x07a1, 0x07a1, + 0x07a1, 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07af, 0x07b7, 0x07b7, + // Entry 100 - 13F + 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, + 0x07c2, 0x07c2, 0x07c2, 0x07c2, 0x07c2, 0x07c7, 0x07c7, 0x07d7, + 0x07d7, 0x07dc, 0x07dc, 0x07e6, 0x07e6, 0x07e6, 0x07ea, 0x07ea, + 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, + 0x07ea, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, + 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x0805, 0x0805, 0x0805, 0x0805, + 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, + 0x0805, 0x0810, 0x0810, 0x0810, 0x0825, 0x0825, 0x0825, 0x082a, // Entry 140 - 17F - 0x082a, 0x0837, 0x0837, 0x0837, 0x0837, 0x0837, 0x0848, 0x0848, + 0x082a, 0x082a, 0x082a, 0x0837, 0x0837, 0x0837, 0x0837, 0x0837, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, - 0x084e, 0x0855, 0x0855, 0x0855, 0x0855, 0x0855, 0x0861, 0x0861, - 0x0861, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x086d, 0x087b, - 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, 0x0887, 0x0887, 0x0887, - 0x0887, 0x088f, 0x088f, 0x089b, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08aa, 0x08af, 0x08af, 0x08af, - 0x08af, 0x08af, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4, + 0x0848, 0x0848, 0x084e, 0x0855, 0x0855, 0x0855, 0x0855, 0x0855, + 0x0861, 0x0861, 0x0861, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, + 0x086d, 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, 0x0887, + 0x0887, 0x0887, 0x0887, 0x088f, 0x088f, 0x089b, 0x08a2, 0x08a2, + 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08aa, 0x08af, + 0x08af, 0x08af, 0x08af, 0x08af, 0x08b4, 0x08b4, 0x08b4, 0x08b4, // Entry 180 - 1BF - 0x08b4, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, - 0x08c0, 0x08c0, 0x08c3, 0x08c3, 0x08c8, 0x08c8, 0x08c8, 0x08c8, - 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4, 0x08d4, 0x08d4, - 0x08d4, 0x08d4, 0x08d8, 0x08ef, 0x08ef, 0x08fd, 0x0904, 0x0904, - 0x0904, 0x0904, 0x0904, 0x0911, 0x0911, 0x0911, 0x0918, 0x0918, - 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, - 0x091c, 0x0920, 0x092f, 0x092f, 0x092f, 0x092f, 0x092f, 0x0935, - 0x0935, 0x0935, 0x0935, 0x0935, 0x093b, 0x093b, 0x093f, 0x093f, + 0x08b4, 0x08b4, 0x08b4, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, + 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c3, 0x08c3, 0x08c8, 0x08c8, + 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4, + 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d8, 0x08ef, 0x08ef, 0x08fd, + 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0911, 0x0911, 0x0911, + 0x0918, 0x0918, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, + 0x091c, 0x091c, 0x091c, 0x0920, 0x092f, 0x092f, 0x092f, 0x092f, + 0x092f, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935, 0x093b, 0x093b, // Entry 1C0 - 1FF - 0x093f, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, + 0x093f, 0x093f, 0x093f, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, - 0x0947, 0x0947, 0x0947, 0x0947, 0x0950, 0x0950, 0x0959, 0x0959, - 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, 0x095e, 0x095e, 0x095e, - 0x095e, 0x095e, 0x095e, 0x0961, 0x0961, 0x0961, 0x0961, 0x0968, - 0x0968, 0x0968, 0x0968, 0x0968, 0x096d, 0x097d, 0x097d, 0x097d, - 0x097d, 0x097d, 0x0981, 0x0981, 0x0981, 0x098c, 0x098c, 0x098c, - 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, 0x09af, 0x09bf, + 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0950, + 0x0950, 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, + 0x095e, 0x095e, 0x095e, 0x095e, 0x095e, 0x095e, 0x0961, 0x0961, + 0x0961, 0x0961, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x096d, + 0x097d, 0x097d, 0x097d, 0x097d, 0x097d, 0x0981, 0x0981, 0x0981, + 0x098c, 0x098c, 0x098c, 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, // Entry 200 - 23F - 0x09d0, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09f2, - 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, - 0x09f2, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, + 0x0995, 0x09af, 0x09bf, 0x09d0, 0x09e1, 0x09e1, 0x09e1, 0x09e1, + 0x09e1, 0x09e1, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, + 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f6, 0x09f6, 0x09f6, 0x09f6, + 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, - 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09fd, 0x09fd, 0x0a17, - 0x0a17, 0x0a17, 0x0a17, 0x0a24, 0x0a27, 0x0a27, 0x0a27, 0x0a27, - 0x0a27, 0x0a27, 0x0a27, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, - 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a30, 0x0a30, 0x0a30, 0x0a30, + 0x09fd, 0x09fd, 0x0a17, 0x0a17, 0x0a17, 0x0a17, 0x0a24, 0x0a27, + 0x0a27, 0x0a27, 0x0a27, 0x0a27, 0x0a27, 0x0a27, 0x0a2c, 0x0a2c, + 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a30, // Entry 240 - 27F - 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a51, - 0x0a51, 0x0a6b, 0x0a6b, 0x0a84, 0x0a84, 0x0a98, 0x0ab3, 0x0aca, - 0x0ae0, 0x0af5, 0x0b0a, 0x0b2e, 0x0b46, 0x0b5f, 0x0b5f, 0x0b77, - 0x0b90, 0x0b90, 0x0b9b, 0x0bb4, 0x0bce, 0x0bdc, 0x0bef, 0x0c07, - 0x0c20, 0x0c3b, + 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, + 0x0a30, 0x0a30, 0x0a51, 0x0a51, 0x0a6b, 0x0a6b, 0x0a84, 0x0a84, + 0x0a98, 0x0ab3, 0x0aca, 0x0ae0, 0x0af5, 0x0b0a, 0x0b2e, 0x0b46, + 0x0b5f, 0x0b5f, 0x0b77, 0x0b90, 0x0b90, 0x0b9b, 0x0bb4, 0x0bce, + 0x0bdc, 0x0bef, 0x0c07, 0x0c20, 0x0c3b, }, }, { // dua "duálá", - []uint16{ // 272 elements + []uint16{ // 274 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -2291,7 +2804,8 @@ var langHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 100 - 13F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, }, }, { // dyo @@ -2299,7 +2813,7 @@ var langHeaders = [220]header{ "sehausaenduongruaindoneesiigboitaliensaponeesavaneekmeerkoreemaleesi" + "birmaninepaleesneerlandepenjabipoloneesportugeesrumeenrusruandasomal" + "isueditamiltayturkiukrainurduvietnamyorubasinuasulujoola", - []uint16{ // 274 elements + []uint16{ // 276 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x001e, @@ -2339,7 +2853,7 @@ var langHeaders = [220]header{ // Entry 100 - 13F 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0109, + 0x0104, 0x0104, 0x0104, 0x0109, }, }, { // dz @@ -2367,7 +2881,7 @@ var langHeaders = [220]header{ "ཱན་གི་ཨིས་པེ་ནིཤ་ཁཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁསུ་ཡིས་" + "ཕྲནཅ་ཁཕྷེལེ་མིཤ་ཁབྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་" + "ཁརྒྱ་མི་ཁ་འཇམ་སངམསྔ་དུས་ཀྱི་རྒྱ་མི་ཁ", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0012, 0x0036, 0x0036, 0x005a, 0x005a, 0x0078, 0x0078, 0x0096, 0x00b1, 0x00b1, 0x00b1, 0x00de, 0x00de, 0x00ff, 0x012c, @@ -2405,20 +2919,20 @@ var langHeaders = [220]header{ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, // Entry 100 - 13F - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d83, 0x0d83, 0x0d83, 0x0d83, + 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, - 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0daa, - 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, + 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, + 0x0d83, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, - 0x0daa, 0x0daa, 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0dda, + 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0dda, 0x0dda, 0x0dda, 0x0dda, // Entry 140 - 17F - 0x0dda, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, + 0x0dda, 0x0dda, 0x0dda, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, - 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0e0d, - 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, - 0x0e0d, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, + 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, + 0x0df8, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, + 0x0e0d, 0x0e0d, 0x0e0d, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, @@ -2427,7 +2941,7 @@ var langHeaders = [220]header{ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, + 0x0e22, 0x0e22, 0x0e22, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, @@ -2439,22 +2953,22 @@ var langHeaders = [220]header{ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, + 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e46, 0x0e46, 0x0e46, 0x0e46, // Entry 200 - 23F 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e46, 0x0e46, 0x0e46, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, + 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, // Entry 240 - 27F 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, - 0x0e67, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ee2, 0x0f33, 0x0f7e, - 0x0fbd, 0x0ff0, 0x1020, 0x1086, 0x10cb, 0x10cb, 0x10cb, 0x1101, - 0x1128, 0x1128, 0x1149, 0x1194, 0x11df, 0x11df, 0x11df, 0x11df, - 0x120f, 0x1248, + 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, + 0x0ee2, 0x0f33, 0x0f7e, 0x0fbd, 0x0ff0, 0x1020, 0x1086, 0x10cb, + 0x10cb, 0x10cb, 0x1101, 0x1128, 0x1128, 0x1149, 0x1194, 0x11df, + 0x11df, 0x11df, 0x11df, 0x120f, 0x1248, }, }, { // ebu @@ -2464,7 +2978,7 @@ var langHeaders = [220]header{ "aKĩnepaliKĩholanziKĩpunjabiKĩpolandiKĩrenoKĩromaniaKĩrusiKĩnyarwanda" + "KĩsomaliKĩswidiKĩtamilKĩtailandiKĩturukiKĩukraniaKĩurduKĩvietinamuKĩ" + "yorubaKĩchinaKĩzuluKĩembu", - []uint16{ // 277 elements + []uint16{ // 279 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0024, 0x002f, @@ -2504,7 +3018,7 @@ var langHeaders = [220]header{ // Entry 100 - 13F 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x019f, + 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x019f, }, }, { // ee @@ -2535,7 +3049,7 @@ var langHeaders = [220]header{ "Europe)Spanishgbe (Mexico)Fransegbe (Canada)Fransegbe (Switzerland)F" + "lemishgbePortuguesegbe (Brazil)Portuguesegbe (Europe)serbo-croatiagb" + "etsainagbeblema tsainagbe", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0000, 0x000b, 0x000b, 0x0016, 0x001c, 0x0026, 0x0026, 0x002f, 0x0038, 0x0038, 0x0040, 0x004d, 0x004d, 0x0059, 0x0064, @@ -2565,64 +3079,64 @@ var langHeaders = [220]header{ 0x04d4, 0x04d4, 0x04d4, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, // Entry C0 - FF 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, - 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e2, 0x04e2, 0x04e2, 0x04e2, + 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04ea, 0x04ea, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, + 0x04e2, 0x04e2, 0x04ea, 0x04ea, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, - 0x04f1, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, + 0x04f1, 0x04f1, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, // Entry 100 - 13F 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04ff, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x050f, - 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, + 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04ff, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, - 0x050f, 0x050f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, + 0x050f, 0x050f, 0x050f, 0x050f, 0x052f, 0x052f, 0x052f, 0x052f, // Entry 140 - 17F - 0x052f, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, + 0x052f, 0x052f, 0x052f, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0544, - 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, + 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, + 0x0537, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, - 0x0544, 0x0544, 0x0544, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, + 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x054d, 0x054d, 0x054d, // Entry 180 - 1BF 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, - 0x054d, 0x054d, 0x054d, 0x054d, 0x0555, 0x0555, 0x0555, 0x0555, + 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, - 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x056b, - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, + 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, + 0x0555, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x057a, 0x057a, 0x057a, + 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x057a, // Entry 1C0 - 1FF 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, - 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x0582, 0x0582, 0x0582, - 0x0582, 0x0582, 0x0582, 0x0588, 0x0588, 0x058f, 0x058f, 0x058f, + 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, + 0x0582, 0x0582, 0x0582, 0x0582, 0x0582, 0x0582, 0x0588, 0x0588, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, // Entry 200 - 23F 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, - 0x058f, 0x058f, 0x058f, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, - 0x0598, 0x0598, 0x0598, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05ab, 0x05ab, 0x05ab, + 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x0598, 0x0598, + 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x05a0, 0x05a0, + 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, - 0x05ab, 0x05ab, 0x05ab, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, - 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5, 0x05c5, 0x05c5, + 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05bd, 0x05bd, + 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, // Entry 240 - 27F - 0x05c5, 0x05c5, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, - 0x05ce, 0x05e3, 0x05e3, 0x05e3, 0x05e3, 0x05f8, 0x0611, 0x0624, - 0x0634, 0x0645, 0x0656, 0x0670, 0x0683, 0x0696, 0x0696, 0x06a8, - 0x06bf, 0x06bf, 0x06c9, 0x06df, 0x06f5, 0x06f5, 0x0705, 0x0705, - 0x070e, 0x071d, + 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05ce, 0x05ce, 0x05ce, + 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05e3, 0x05e3, 0x05e3, 0x05e3, + 0x05f8, 0x0611, 0x0624, 0x0634, 0x0645, 0x0656, 0x0670, 0x0683, + 0x0696, 0x0696, 0x06a8, 0x06bf, 0x06bf, 0x06c9, 0x06df, 0x06f5, + 0x06f5, 0x0705, 0x0705, 0x070e, 0x071d, }, }, { // el @@ -2634,8 +3148,8 @@ var langHeaders = [220]header{ enLangIdx, }, { // en-AU - "BamumUnited States EnglishMoldovan", - []uint16{ // 606 elements + "United States EnglishMoldovan", + []uint16{ // 609 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -2666,67 +3180,87 @@ var langHeaders = [220]header{ // Entry C0 - FF 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 100 - 13F - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 140 - 17F - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 180 - 1BF - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 1C0 - 1FF - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 200 - 23F - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 240 - 27F - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0022, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x001d, }, }, - { // en-GB - enGBLangStr, - enGBLangIdx, + { // en-IN + "BengaliOriya", + []uint16{ // 124 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + // Entry 40 - 7F + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x000c, + }, }, { // en-NZ "Māori", @@ -2764,7 +3298,7 @@ var langHeaders = [220]header{ "naurduouzbekavjetnamavolapukovolofaksosajidajorubaĝuangaĉinazuluaibi" + "bioefikafilipinahavajaklingonanekonata lingvonelingvaĵobrazilportuga" + "laeŭropportugalaserbo-Kroataĉina simpligitaĉina tradicia", - []uint16{ // 610 elements + []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0005, 0x000c, 0x000c, 0x0015, 0x0017, 0x001d, 0x001d, 0x0022, 0x0027, 0x0027, 0x002d, 0x0039, 0x0041, 0x0049, 0x0050, @@ -2804,14 +3338,14 @@ var langHeaders = [220]header{ // Entry 100 - 13F 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0394, 0x0394, 0x0394, - 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x039c, - 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, + 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0394, + 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, + 0x0394, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, // Entry 140 - 17F - 0x039c, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, + 0x039c, 0x039c, 0x039c, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, @@ -2841,17 +3375,17 @@ var langHeaders = [220]header{ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, + 0x03a2, 0x03a2, 0x03a2, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, - 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, - 0x03aa, 0x03aa, 0x03aa, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, + 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, // Entry 240 - 27F 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, - 0x03b9, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, + 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, - 0x03c4, 0x03c4, 0x03c4, 0x03d3, 0x03e2, 0x03e2, 0x03ee, 0x03ee, - 0x03fe, 0x040c, + 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03d3, 0x03e2, + 0x03e2, 0x03ee, 0x03ee, 0x03fe, 0x040c, }, }, { // es @@ -2862,2431 +3396,2176 @@ var langHeaders = [220]header{ es419LangStr, es419LangIdx, }, - {}, // es-CL - { // es-MX - "bashkir", - []uint16{ // 14 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, - }, - }, - { // et - etLangStr, - etLangIdx, - }, - { // eu - "abkhazeraafrikaansaakaneraamhareraarabieraassameraaimaraazerbaijanerabas" + - "hkirrerabielorrusierabulgarierabambarerabengaleratibeterabretoierabo" + - "snierakatalanakorsikeratxekieragaleseradanieraalemanadivehieradzongk" + - "haeweeragrezieraingelesaesperantoaespainieraestonieraeuskarapersiera" + - "finlandierafijierafaroerafrantsesafrisieragaelikoaeskoziako gaelikoa" + - "galizieraguaranieragujarateramanxerahausahebreerahindiakroazierahait" + - "ierahungarieraarmenieraInterlinguaindonesierainterlingueigboerasichu" + - "an yiaislandieraitalierainuiterajaponierajaverageorgieraKikongoakiku" + - "yuerakazakherakalaallisuterakhemererakannaderakoreerakashmirerakurdu" + - "erakornubierakirgizeralatinaluxenburgeraganderalingalalaoseralituani" + - "eraluba-katangeraletonieramalagasyeramaorieramazedonieramalayalamera" + - "mongolieramaratheramalaysieramalteraburmatarraiparraldeko ndebeleera" + - "nepaleranederlanderanynorsk norvegierabokmala (Norvegia)nyanjaOkzita" + - "nieraoromoeraoriyeraosetierapunjaberapolonierapaxtueraportugesaquech" + - "ueraerromantxerarundieraerrumanieraerrusierakinyaruandasanskritoasin" + - "dhiaiparraldeko samierasangoerasinhalaeslovakieraeslovenierasamoeras" + - "honerasomalieraalbanieraserbieraswatierahegoaldeko sothoerasundanera" + - "suedieraswahilitamileratelugueratajikistanerathailandieratigriñeratu" + - "rkmenieratswaneratongeraturkieratsongeratatareratahitierauigurrerauk" + - "raineraurduauzbekeravenderavietnamerawoloferaxhoseraJiddishayorubera" + - "txinerazulueraAcholieraaghemeramaputxeaasuabemberabenerabodoerachige" + - "ratxerokierasoranierataiterazarmerabehe-sorabieradualerafonyi jolera" + - "embuaefikeratagalogaGagagauzeraalemana (Suitza)gusiierahawaiieragoi-" + - "sorabierangombamachamerakabilerakamberamakonderaCabo Verdeko kreolak" + - "oyra chiinierakalenjinerakomi-permyakerakonkanierashambalerabafieral" + - "angieralakoteraLozieraLuba-lulualuoeraluhyeramasaieramerueraMauritan" + - "iako kreoleramakhuwa-meettoerameteramohawkeramudangerahizkuntza anit" + - "zaknamerakwasieran’koerapedieranuereraankolerak’iche’raromboerarwaer" + - "asamburuerasanguerasenerakoyraboro senniatachelhitahegoaldeko samier" + - "aLule samieraInari samieraSkolt samieratesoeratetumaKlingoneratok pi" + - "sinaTumbukeratasawaqaMaroko erdialdeko tamazightahizkuntza ezezaguna" + - "vaieravunjoasogeratamazight estandarraez dago eduki linguistikorikar" + - "abiera moderno estandarraaleman garaia (Suitza)ingelesa (AEB)espaini" + - "era (Europa)flandrieraportugesa (Europa)serbokroazieraKongoko swahil" + - "iatxinera soilduatxinera tradizionala", - []uint16{ // 610 elements + { // es-AR + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x001a, 0x0022, 0x0022, - 0x002a, 0x0032, 0x0032, 0x0038, 0x0045, 0x0050, 0x005d, 0x0067, - 0x0067, 0x0070, 0x0079, 0x0081, 0x008a, 0x0092, 0x009a, 0x009a, - 0x009a, 0x00a3, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00b3, 0x00ba, - 0x00c1, 0x00ca, 0x00d2, 0x00d8, 0x00e0, 0x00e8, 0x00f2, 0x00fc, - 0x0105, 0x010c, 0x0114, 0x0114, 0x011f, 0x0126, 0x012d, 0x0136, - 0x013e, 0x0146, 0x0158, 0x0161, 0x016b, 0x0175, 0x017c, 0x0181, - 0x0189, 0x018f, 0x018f, 0x0198, 0x01a0, 0x01aa, 0x01b3, 0x01b3, - // Entry 40 - 7F - 0x01be, 0x01c9, 0x01d4, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01f0, - 0x01f8, 0x0200, 0x0209, 0x020f, 0x0218, 0x0220, 0x0229, 0x0229, - 0x0232, 0x0240, 0x0249, 0x0252, 0x0259, 0x0259, 0x0263, 0x026b, - 0x026b, 0x0275, 0x027e, 0x0284, 0x0290, 0x0297, 0x0297, 0x029e, - 0x02a5, 0x02af, 0x02bd, 0x02c6, 0x02d1, 0x02d1, 0x02d9, 0x02e4, - 0x02f0, 0x02fa, 0x0303, 0x030d, 0x0314, 0x031e, 0x031e, 0x0334, - 0x033c, 0x033c, 0x0348, 0x035a, 0x036c, 0x036c, 0x036c, 0x0372, - 0x037d, 0x037d, 0x0385, 0x038c, 0x0394, 0x039d, 0x039d, 0x03a6, - // Entry 80 - BF - 0x03ae, 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03df, 0x03e8, 0x03f3, - 0x03fd, 0x03fd, 0x0404, 0x0417, 0x041f, 0x0426, 0x0431, 0x043c, - 0x0443, 0x044a, 0x0453, 0x045c, 0x0464, 0x046c, 0x047f, 0x0488, - 0x0490, 0x0497, 0x049f, 0x04a8, 0x04b5, 0x04c1, 0x04cb, 0x04d6, - 0x04de, 0x04e5, 0x04ed, 0x04f5, 0x04fd, 0x0506, 0x050f, 0x0518, - 0x051d, 0x0525, 0x052c, 0x0536, 0x0536, 0x0536, 0x053e, 0x0545, - 0x054d, 0x0555, 0x0555, 0x055c, 0x0563, 0x0563, 0x056c, 0x056c, - 0x056c, 0x056c, 0x056c, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, - // Entry C0 - FF - 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, 0x057c, 0x057c, - 0x057c, 0x057c, 0x057c, 0x057c, 0x0580, 0x0580, 0x0580, 0x0580, - 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, - 0x0580, 0x0587, 0x0587, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, - 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, - 0x058d, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, - 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x059b, 0x059b, 0x059b, - 0x059b, 0x059b, 0x059b, 0x059b, 0x059b, 0x05a5, 0x05a5, 0x05ae, - // Entry 100 - 13F - 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05b5, 0x05b5, - 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05ca, 0x05ca, 0x05d1, - 0x05d1, 0x05dd, 0x05dd, 0x05dd, 0x05e2, 0x05e9, 0x05e9, 0x05e9, - 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05f1, - 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, - 0x05f1, 0x05f3, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, - 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, - 0x05fc, 0x05fc, 0x060c, 0x060c, 0x060c, 0x0614, 0x0614, 0x0614, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + // Entry 40 - 7F + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, + // Entry 80 - BF + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry C0 - FF + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0614, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x062a, 0x062a, - 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, - 0x0630, 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x0641, 0x0641, - 0x0641, 0x0648, 0x0648, 0x0648, 0x0648, 0x0648, 0x0651, 0x0664, - 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0673, 0x0673, 0x0673, - 0x0673, 0x067e, 0x067e, 0x068d, 0x0697, 0x0697, 0x0697, 0x0697, - 0x0697, 0x0697, 0x0697, 0x0697, 0x06a1, 0x06a8, 0x06a8, 0x06a8, - 0x06a8, 0x06a8, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x06b0, 0x06b8, 0x06b8, 0x06b8, 0x06bf, 0x06bf, 0x06bf, 0x06c9, - 0x06c9, 0x06c9, 0x06cf, 0x06cf, 0x06d6, 0x06d6, 0x06d6, 0x06d6, - 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0x06de, 0x06de, 0x06de, - 0x06de, 0x06de, 0x06e5, 0x06fa, 0x06fa, 0x070b, 0x0711, 0x0711, - 0x0711, 0x0711, 0x0711, 0x071a, 0x071a, 0x071a, 0x0723, 0x0734, - 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, - 0x0734, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x0742, - 0x0742, 0x0742, 0x0742, 0x0742, 0x074b, 0x0752, 0x0759, 0x0759, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0759, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, - 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, - 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x076e, 0x076e, - 0x076e, 0x076e, 0x076e, 0x076e, 0x076e, 0x0776, 0x0776, 0x0776, - 0x0776, 0x0776, 0x0776, 0x077c, 0x077c, 0x077c, 0x077c, 0x0786, - 0x0786, 0x0786, 0x0786, 0x0786, 0x078e, 0x078e, 0x078e, 0x078e, - 0x078e, 0x078e, 0x0794, 0x0794, 0x0794, 0x07a4, 0x07a4, 0x07a4, - 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07c0, 0x07cc, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x07d9, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, - 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, - 0x07e6, 0x07ed, 0x07ed, 0x07f3, 0x07f3, 0x07f3, 0x07f3, 0x07f3, - 0x07fd, 0x07fd, 0x07fd, 0x07fd, 0x07fd, 0x0807, 0x0807, 0x0807, - 0x0807, 0x0807, 0x0807, 0x0810, 0x0810, 0x0818, 0x0818, 0x0834, - 0x0834, 0x0834, 0x0834, 0x0847, 0x084d, 0x084d, 0x084d, 0x084d, - 0x084d, 0x084d, 0x084d, 0x0853, 0x0853, 0x0853, 0x0853, 0x0853, - 0x0853, 0x0853, 0x0853, 0x0853, 0x0859, 0x0859, 0x0859, 0x0859, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x0859, 0x0859, 0x0859, 0x0859, 0x0859, 0x0859, 0x0859, 0x086d, - 0x086d, 0x0889, 0x0889, 0x08a4, 0x08a4, 0x08a4, 0x08ba, 0x08ba, - 0x08ba, 0x08ba, 0x08c8, 0x08c8, 0x08db, 0x08db, 0x08db, 0x08db, - 0x08db, 0x08db, 0x08e5, 0x08e5, 0x08f7, 0x08f7, 0x0905, 0x0915, - 0x0924, 0x0938, - }, - }, - { // ewo - "Ǹkɔ́bɔ akánǸkɔ́bɔ amáriaǸkɔ́bɔ arábiaǸkɔ́bɔ belarúsianǸkɔ́bɔ buləgárianǸ" + - "kɔ́bɔ bɛngalíǸkɔ́bɔ tsɛ́gǸkɔ́bɔ ndzámanǸkɔ́bɔ gəlɛ́gǸkɔ́bɔ éngəlísǹk" + - "ɔ́bɔ kpənyáǹkɔ́bɔ fɛ́rəsianǸkɔ́bɔ fulɛnsíǸkɔ́bɔ aúsáǸkɔ́bɔ hindíǸkɔ" + - "́bɔ ungáríanǸkɔ́bɔ ɛndonésianǸkɔ́bɔ ibóǸkɔ́bɔ etáliɛnǸkɔ́bɔ hapɔ́nǸ" + - "kɔ́bɔ havanísǸkɔ́bɔ kəmɛ́rǸkɔ́bɔ koréanǸkɔ́bɔ malɛ́sianǸkɔ́bɔ birəmá" + - "nǹkɔ́bɔ nefálianǸkɔ́bɔ nɛrəlándíaǹkɔ́bɔ funəhábiaǹkɔ́bɔ fólisǹkɔ́bɔ " + - "fɔtugɛ́sńkɔ́bɔ románíaǹkɔ́bɔ rúsianǹkɔ́bɔ ruwandáǹkɔ́bɔ somáliaǹkɔ́b" + - "ɔ suwɛ́dǹkɔ́bɔ tamílǹkɔ́bɔ táilanǹkɔ́bɔ túrəkiǹkɔ́bɔ ukeléniaǹkɔ́bɔ" + - " urudúǹkɔ́bɔ hiɛdənámǹkɔ́bɔ yorúbaǸkɔ́bɔ tsainísǹkɔ́bɔ zulúewondo", - []uint16{ // 285 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0022, 0x0022, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x004a, 0x0061, - 0x0061, 0x0061, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x009a, 0x009a, 0x009a, 0x009a, 0x00ae, 0x00c3, 0x00c3, 0x00d6, - 0x00d6, 0x00d6, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0112, - 0x0112, 0x0123, 0x0123, 0x0123, 0x0123, 0x0138, 0x0138, 0x0138, - // Entry 40 - 7F - 0x0138, 0x014f, 0x014f, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x0172, 0x0172, 0x0185, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x01ac, 0x01ac, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8, - 0x01fc, 0x01fc, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x022b, 0x022b, 0x023c, - // Entry 80 - BF - 0x023c, 0x0252, 0x0252, 0x0252, 0x0252, 0x0266, 0x0278, 0x028b, - 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, - 0x028b, 0x028b, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, - 0x02b1, 0x02b1, 0x02c2, 0x02c2, 0x02c2, 0x02d4, 0x02d4, 0x02d4, - 0x02d4, 0x02d4, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02fb, - 0x030c, 0x030c, 0x030c, 0x0322, 0x0322, 0x0322, 0x0322, 0x0322, - 0x0322, 0x0334, 0x0334, 0x0347, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - // Entry C0 - FF - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - // Entry 100 - 13F - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x035d, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // fa - faLangStr, - faLangIdx, - }, - { // fa-AF - "هسپانویفنلندیآیرلندیکروشیاییاندونیزیاییآیسلندیایتالویجاپانیکوریاییقرغزیم" + - "غلینیپالیهالندینارویژیپولندیپرتگالیسویدنیتاجکی", - []uint16{ // 157 elements + { // es-BO + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x0038, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x005c, - 0x006a, 0x006a, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a2, 0x00a2, 0x00ae, 0x00ae, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c8, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x00c8, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00ec, - }, - }, - { // ff - "AkaanAmarikAarabeereBelaruuseBulgariireBengaliCekkereDocceereGerkeEngele" + - "ereEspañolPerseerePulaarFarayseereHawsaŋkooreHinndiHongariireEndones" + - "iireIgibooreItaliyeereSaponeereSawaneereKemeereKoreereMalayeereBurme" + - "eseNepaaleereDacceerePunjabeerePoloneerePurtugeereRomaneereRiisRuwaa" + - "nndeereSomaliiSweedeereTamilTaayTurkeereUkereneereUrduWiyetnameereYo" + - "rrubaaSinuwaareSuluŋkoore", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000b, 0x000b, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001d, 0x0027, - 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x003d, 0x003d, 0x003d, 0x003d, 0x0042, 0x004b, 0x004b, 0x0053, - 0x0053, 0x0053, 0x005b, 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0077, - 0x0077, 0x007d, 0x007d, 0x007d, 0x007d, 0x0087, 0x0087, 0x0087, - // Entry 40 - 7F - 0x0087, 0x0092, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x00a4, 0x00a4, 0x00ad, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00c4, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00cd, 0x00cd, 0x00d5, 0x00d5, 0x00d5, - 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fa, - // Entry 80 - BF - 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, 0x010d, 0x0111, 0x011d, - 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, - 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x012d, 0x012d, 0x0132, 0x0132, 0x0132, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x0148, - 0x014c, 0x014c, 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0160, 0x0160, 0x0169, 0x0174, - }, - }, - { // fi - fiLangStr, - fiLangIdx, - }, - { // fil - filLangStr, - filLangIdx, - }, - { // fo - "abkhasisktafrikaansakanamharisktarabisktassamesisktaymaraaserbajdsjanskt" + - "bashkirhvitarussisktbulgarsktbambarabengalskttibetsktbretonsktbosnis" + - "ktkatalanitjetjensktkorsikansktkekkisktchuvashwalisisktdanskttýsktdi" + - "vehidzongkhaewegriksktensktesperantospansktestisktbaskisktpersisktfi" + - "nsktfijimálføroysktfransktvestur frísisktírsktskotskt gælisktgalisis" + - "ktguaranigujaratimanxhausahebraiskthindikroatiskthaitisktungarsktarm" + - "ensktinterlinguaindonesisktinterlingueigbosichuan yiíslendsktitalskt" + - "inuktitutjapansktjavansktgeorgisktkikuyukazakhkalaallisutkhmerkannad" + - "akoreansktkashmirikurdisktcornisktkyrgyzlatínluksemborgsktgandalinga" + - "lalaosktlitavisktluba-katangalettisktmalagassisktmaorimakedónsktmala" + - "yalammongolsktmarathimalaiisktmaltisktburmesisktnorður ndebelenepals" + - "kthálendsktnýnorsktnorskt bókmálnyanjaoccitanoromooriyaossetisktpunj" + - "abipólsktpashtoportugiskisktquechuaretoromansktrundirumensktrussiskt" + - "kinyarwandasanskritsindhinorður sámisktsangosingalesisktslovakisktsl" + - "ovensktsamoisktshonasomalisktalbansktserbisktswatisktsesothosundanes" + - "isktsvensktswahilitamilskttelugutajiktailendskttigrinyaturkmenskttsw" + - "anatongansktturkiskttsongatatartahitisktuyghurukrainskturduusbekiskt" + - "vendavjetnamesisktwolofxhosajiddisktyorubakinesisktsuluaghemmapuchea" + - "subembabenavestur balochibodobakossichigacherokeemiðkurdiskttaitasar" + - "malágt sorbiandualajola-fonyiembuefikfilipinisktgagauztýskt (Sveis)g" + - "usiihawaiiansktovara sorbianngombamachamekabylekambamakondegrønhøvda" + - "oyggjarsktkoyra chiinikalenjinkomi-permyakkonkanishambalabafialangil" + - "ahndalakotanorður luriluoluyiamasaimerumorisyenmakhuwa-meettometaʼmo" + - "hawkmundangmazanderaninamalágt týsktkwasionʼkonuernyankolekʼicheʼrom" + - "borwasamburusangusuður kurdisktsenakoyraboro sennitachelhitsuður sám" + - "isktlule sámisktinari samiskolt sámisktshimaorétesotetumklingonsktto" + - "k pisintasawaqmiðatlasfjøll tamazightókent málvaivunjowarlpirisogaka" + - "ntonesísktvanligt marokanskt tamazighteinki málsligt innihaldhøgt tý" + - "skt (Sveis)lágt saksisktflamsktportugiskiskt (Brasilia)portugiskiskt" + - " (Evropa)moldavisktserbokroatisktkongo svahilieinkult kinesisktvanli" + - "gt kinesiskt", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x000a, 0x0013, 0x0017, 0x0020, 0x0020, - 0x0028, 0x0033, 0x0033, 0x0039, 0x0048, 0x004f, 0x005c, 0x0065, - 0x0065, 0x006c, 0x0075, 0x007d, 0x0086, 0x008e, 0x0096, 0x00a0, - 0x00a0, 0x00ab, 0x00ab, 0x00b3, 0x00b3, 0x00ba, 0x00c3, 0x00c9, - 0x00cf, 0x00d5, 0x00dd, 0x00e0, 0x00e7, 0x00ec, 0x00f5, 0x00fc, - 0x0103, 0x010b, 0x0113, 0x0113, 0x0119, 0x0121, 0x012a, 0x0131, - 0x0141, 0x0147, 0x0157, 0x0160, 0x0167, 0x016f, 0x0173, 0x0178, - 0x0181, 0x0186, 0x0186, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01a7, - // Entry 40 - 7F - 0x01b2, 0x01bd, 0x01c8, 0x01cc, 0x01d6, 0x01d6, 0x01d6, 0x01e0, - 0x01e7, 0x01f0, 0x01f8, 0x0200, 0x0209, 0x0209, 0x020f, 0x020f, - 0x0215, 0x0220, 0x0225, 0x022c, 0x0235, 0x0235, 0x023d, 0x0245, - 0x0245, 0x024d, 0x0253, 0x0259, 0x0266, 0x026b, 0x026b, 0x0272, - 0x0278, 0x0281, 0x028d, 0x0295, 0x02a1, 0x02a1, 0x02a6, 0x02b1, - 0x02ba, 0x02c3, 0x02ca, 0x02d3, 0x02db, 0x02e5, 0x02e5, 0x02f4, - 0x02fc, 0x02fc, 0x0306, 0x030f, 0x031e, 0x031e, 0x031e, 0x0324, - 0x032b, 0x032b, 0x0330, 0x0335, 0x033e, 0x0345, 0x0345, 0x034c, - // Entry 80 - BF - 0x0352, 0x035f, 0x0366, 0x0372, 0x0377, 0x037f, 0x0387, 0x0392, - 0x039a, 0x039a, 0x03a0, 0x03b0, 0x03b5, 0x03c1, 0x03cb, 0x03d4, - 0x03dc, 0x03e1, 0x03ea, 0x03f2, 0x03fa, 0x0402, 0x0409, 0x0415, - 0x041c, 0x0423, 0x042b, 0x0431, 0x0436, 0x0440, 0x0448, 0x0452, - 0x0458, 0x0461, 0x0469, 0x046f, 0x0474, 0x047d, 0x0483, 0x048c, - 0x0490, 0x0499, 0x049e, 0x04ab, 0x04ab, 0x04ab, 0x04b0, 0x04b5, - 0x04bd, 0x04c3, 0x04c3, 0x04cc, 0x04d0, 0x04d0, 0x04d0, 0x04d0, - 0x04d0, 0x04d0, 0x04d0, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, - // Entry C0 - FF - 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04dc, 0x04dc, 0x04dc, - 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04df, 0x04df, 0x04df, 0x04df, - 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, - 0x04df, 0x04e4, 0x04e4, 0x04e8, 0x04e8, 0x04e8, 0x04f6, 0x04f6, - 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, - 0x04f6, 0x04fa, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0506, 0x0506, 0x0506, - 0x0506, 0x0506, 0x0506, 0x0506, 0x0506, 0x050e, 0x050e, 0x051a, - // Entry 100 - 13F - 0x051a, 0x051a, 0x051a, 0x051a, 0x051a, 0x051a, 0x051f, 0x051f, - 0x051f, 0x051f, 0x051f, 0x0524, 0x0524, 0x0531, 0x0531, 0x0536, - 0x0536, 0x0540, 0x0540, 0x0540, 0x0544, 0x0548, 0x0548, 0x0548, - 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0553, - 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, - 0x0553, 0x0553, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, - 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, - 0x0559, 0x0559, 0x0567, 0x0567, 0x0567, 0x056c, 0x056c, 0x056c, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry C0 - FF + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x056c, 0x0577, 0x0577, 0x0577, 0x0577, 0x0577, 0x0584, 0x0584, - 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, - 0x058a, 0x0591, 0x0591, 0x0591, 0x0591, 0x0591, 0x0597, 0x0597, - 0x0597, 0x059c, 0x059c, 0x059c, 0x059c, 0x059c, 0x05a3, 0x05b8, - 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05c4, 0x05c4, 0x05c4, - 0x05c4, 0x05cc, 0x05cc, 0x05d8, 0x05df, 0x05df, 0x05df, 0x05df, - 0x05df, 0x05df, 0x05df, 0x05df, 0x05e7, 0x05ec, 0x05ec, 0x05ec, - 0x05ec, 0x05ec, 0x05f1, 0x05f7, 0x05f7, 0x05f7, 0x05f7, 0x05f7, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x05f7, 0x05fd, 0x05fd, 0x05fd, 0x05fd, 0x0609, 0x0609, 0x0609, - 0x0609, 0x0609, 0x060c, 0x060c, 0x0611, 0x0611, 0x0611, 0x0611, - 0x0611, 0x0611, 0x0611, 0x0611, 0x0611, 0x0616, 0x0616, 0x0616, - 0x0616, 0x0616, 0x061a, 0x0622, 0x0622, 0x0630, 0x0636, 0x0636, - 0x0636, 0x0636, 0x0636, 0x063c, 0x063c, 0x063c, 0x0643, 0x0643, - 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, 0x064e, 0x064e, - 0x064e, 0x0652, 0x065e, 0x065e, 0x065e, 0x065e, 0x065e, 0x0664, - 0x0664, 0x0664, 0x0664, 0x0664, 0x0669, 0x0669, 0x066d, 0x066d, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x066d, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, - 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, - 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x067e, 0x067e, - 0x067e, 0x067e, 0x067e, 0x067e, 0x067e, 0x0683, 0x0683, 0x0683, - 0x0683, 0x0683, 0x0683, 0x0686, 0x0686, 0x0686, 0x0686, 0x068d, - 0x068d, 0x068d, 0x068d, 0x068d, 0x0692, 0x0692, 0x0692, 0x0692, - 0x06a1, 0x06a1, 0x06a5, 0x06a5, 0x06a5, 0x06b4, 0x06b4, 0x06b4, - 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06cc, 0x06d9, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x06e3, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, - 0x06f1, 0x06f1, 0x06f1, 0x06fa, 0x06fa, 0x06fa, 0x06fa, 0x06fa, - 0x06fa, 0x06fe, 0x06fe, 0x0703, 0x0703, 0x0703, 0x0703, 0x0703, - 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x0716, 0x0716, 0x0716, - 0x0716, 0x0716, 0x0716, 0x0716, 0x0716, 0x071d, 0x071d, 0x0736, - 0x0736, 0x0736, 0x0736, 0x0741, 0x0744, 0x0744, 0x0744, 0x0744, - 0x0744, 0x0744, 0x0744, 0x0749, 0x0749, 0x0749, 0x0749, 0x0749, - 0x0751, 0x0751, 0x0751, 0x0751, 0x0755, 0x0755, 0x0755, 0x0755, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x0755, 0x0755, 0x0762, 0x0762, 0x0762, 0x0762, 0x0762, 0x077e, - 0x077e, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x07aa, 0x07aa, - 0x07aa, 0x07aa, 0x07aa, 0x07aa, 0x07aa, 0x07aa, 0x07aa, 0x07aa, - 0x07aa, 0x07b8, 0x07bf, 0x07d7, 0x07ed, 0x07f7, 0x0805, 0x0812, - 0x0823, 0x0834, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // fr - frLangStr, - frLangIdx, - }, - { // fr-CA - frCALangStr, - frCALangIdx, - }, - { // fr-CH - "kurde méridional", - []uint16{ // 497 elements + { // es-CL + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 200 - 23F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 240 - 27F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, + }, + }, + { // es-CO + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements + // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0011, - }, - }, - { // fur - "afarabcazianavestanafrikaansamaricaragonêsarapassamêsavaraymaràazerbaija" + - "nibielorùsbulgarbengalêstibetanbretonbosniaccatalancecenchamorrocors" + - "creececsclâf de glesiegalêsdanêstodescgrêcinglêsesperantospagnûlesto" + - "nbascpersianfulahfinlandêsfizianfaroêsfrancêsfrisiangaelic irlandêsg" + - "aelic scozêsgalizianguaranìgujaratimanxebraichindicravuathaitianongj" + - "arêsarmenindonesianigboinupiaqidoislandêstalianinuktitutgjaponêsgjeo" + - "rgjiankazackalaallisutkhmerkannadacoreancurdcornualiêslatinlussembur" + - "ghêslimburghêslingalalaolituanletonmalagasymaorimacedonmalayalammong" + - "ulmarathimalêsmaltêsndebele setentrionâlnepalêsolandêsnorvegjês nyno" + - "rsknorvegjês bokmålnavajoocitanoriyaoseticpunjabipolacpashtoportughê" + - "squechuarumançromenrussanscritsardegnûlsindhisami setentrionâlsangos" + - "inalêsslovacslovensamoansomalalbanêsserpswatisotho meridionâlsundanê" + - "ssvedêsswahilitamiltelegutagicthaiturcmenturctartartahitianuigurucra" + - "inurduuzbecvendavietnamitevalonwolofxhosayiddishyorubacinêszuluvieri" + - " inglêsaramaicasturiancopticsclâfvieri egjizianfilipinvieri francêsf" + - "urlangoticvieri grêcladinlenghis multiplismirandêsnapoletanbas todes" + - "cvieri norvegjêssotho setentrionâlturc otomanpapiamentovieri persian" + - "vieri provenzâlsicilianscozêsvieri irlandêssumerictetumindeterminade" + - "todesc de Austriealt todesc de Svuizareinglês australianinglês canad" + - "êsinglês britanicingles merecanspagnûl de Americhe Latinespagnûl ib" + - "ericfrancês dal Canadefrancês de Svuizareflamantportughês brasilianp" + - "ortughês ibericmoldâfcinês semplificâtcinês tradizionâl", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x001c, 0x0022, 0x002b, - 0x002f, 0x0037, 0x003b, 0x0042, 0x004d, 0x004d, 0x0056, 0x005c, - 0x005c, 0x005c, 0x0065, 0x006c, 0x0072, 0x0079, 0x0080, 0x0085, - 0x008d, 0x0091, 0x0095, 0x0098, 0x00a8, 0x00a8, 0x00ae, 0x00b4, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00bf, 0x00c6, 0x00cf, 0x00d7, - 0x00dc, 0x00e0, 0x00e7, 0x00ec, 0x00f6, 0x00fc, 0x0103, 0x010b, - 0x0112, 0x0122, 0x0130, 0x0138, 0x0140, 0x0148, 0x014c, 0x014c, - 0x0152, 0x0157, 0x0157, 0x015e, 0x0165, 0x016e, 0x0173, 0x0173, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x0173, 0x017d, 0x017d, 0x0181, 0x0181, 0x0188, 0x018b, 0x0194, - 0x019a, 0x01a3, 0x01ac, 0x01ac, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01bb, 0x01c6, 0x01cb, 0x01d2, 0x01d8, 0x01d8, 0x01d8, 0x01dc, - 0x01dc, 0x01e7, 0x01e7, 0x01ec, 0x01fa, 0x01fa, 0x0205, 0x020c, - 0x020f, 0x0215, 0x0215, 0x021a, 0x0222, 0x0222, 0x0227, 0x022e, - 0x0237, 0x023d, 0x0244, 0x024a, 0x0251, 0x0251, 0x0251, 0x0266, - 0x026e, 0x026e, 0x0276, 0x0288, 0x029a, 0x029a, 0x02a0, 0x02a0, - 0x02a6, 0x02a6, 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02b8, 0x02bd, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x02c3, 0x02cd, 0x02d4, 0x02db, 0x02db, 0x02e0, 0x02e3, 0x02e3, - 0x02eb, 0x02f5, 0x02fb, 0x030d, 0x0312, 0x031a, 0x0320, 0x0326, - 0x032c, 0x032c, 0x0331, 0x0339, 0x033d, 0x0342, 0x0353, 0x035c, - 0x0363, 0x036a, 0x036f, 0x0375, 0x037a, 0x037e, 0x037e, 0x0385, - 0x0385, 0x0385, 0x0389, 0x0389, 0x038f, 0x0397, 0x039c, 0x03a2, - 0x03a6, 0x03ab, 0x03b0, 0x03ba, 0x03ba, 0x03bf, 0x03c4, 0x03c9, - 0x03d0, 0x03d6, 0x03d6, 0x03dc, 0x03e0, 0x03e0, 0x03e0, 0x03e0, - 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x03e0, 0x03e0, 0x03ed, 0x03ed, 0x03f4, 0x03f4, 0x03f4, 0x03f4, - 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, // Entry 100 - 13F - 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, - 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, - 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0416, - 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x042b, 0x042b, 0x042b, 0x042b, - 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, - 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0436, - 0x0436, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0457, - 0x0457, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, - 0x0469, 0x0469, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, - 0x0473, 0x0473, 0x0483, 0x0483, 0x0483, 0x0496, 0x0496, 0x0496, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x04a1, 0x04a1, 0x04a1, - 0x04a1, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04b8, 0x04b8, - 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04c8, 0x04c8, 0x04c8, - 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, - 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, - 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04d0, 0x04d7, 0x04d7, - 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04e6, 0x04e6, - 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, - 0x04e6, 0x04e6, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, - 0x04ed, 0x04ed, 0x04ed, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, - 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, - 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, - 0x04f2, 0x04f2, 0x04f2, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x0510, 0x0526, 0x0538, - 0x0548, 0x0558, 0x0566, 0x0581, 0x0590, 0x0590, 0x0590, 0x05a3, - 0x05b7, 0x05b7, 0x05be, 0x05d2, 0x05e3, 0x05ea, 0x05ea, 0x05ea, - 0x05fd, 0x0610, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // fy - "AfarAbchazyskAvestyskAfrikaanskAkanAmhaarskAragoneeskArabyskAssameeskAva" + - "ryskAymaraAzerbeidzjaanskBasjkierskWyt-RussyskBulgaarskBislamaBambar" + - "aBengaalskTibetaanskBretonskBosnyskKatalaanskTsjetsjeenskChamorroKor" + - "sikaanskCreeTsjechyskKerkslavyskTsjoevasjyskWelskDeenskDútskDivehiDz" + - "ongkhaEweGryksIngelskEsperantoSpaanskEstlânskBaskyskPerzyskFulahFins" + - "kFijyskFaeröerskFrânskWest-FryskIerskSchotsk GaelicGalisyskGuaraníGu" + - "jaratiManksHausaHebreeuwskHindiHiri MotuKroatyskHaïtiaanskHongaarskA" + - "rmeenskHereroInterlinguaYndonezyskInterlingueIgboSichuan YiInupiaqId" + - "oYslânsItaliaanskInuktitutJapansJavaanskGeorgyskKongoKikuyuKuanyamaK" + - "azachsGrienlânsKhmerKannadaKoreaanskKanuriKasjmiriKoerdyskKomiCornis" + - "hKirgizyskLatynLuxemburgsGandaLimburgsLingalaLaotiaanskLitouwsLuba-K" + - "atangaLetlânsMalagasyskMarshalleesMaoriMacedonyskMalayalamMongoolsMa" + - "rathiMaleisMalteesBirmeesNauruaanskNoard-NdbeleNepaleesNdongaNederlâ" + - "nskNoors - NynorskNoors - BokmålSûd-NdbeleNavajoNyanjaOccitaanskOjib" + - "waOromoOdiaOssetyskPunjabiPaliPoalskPasjtoePortugeeskQuechuaReto-Rom" + - "aanskKirundiRoemeenskRussyskKinyarwandaSanskrietSardinyskSindhiNoard" + - "-SamyskSangoSingaleesSlowaaksSloveenskSamoaanskShonaSomalyskAlbanees" + - "kServyskSwaziSûd-SothoSoendaneeskZweedsSwahiliTamilTeluguTadzjieksTh" + - "aisTigrinyaTurkmeensTswanaTongaanskTurksTsongaTataarsTahityskOeigoer" + - "sOekraïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddyskYo" + - "rubaZhuangSineeskZuluAtjeeskAkoliAdangmeAdygheAfrihiliAghemAinuAkkad" + - "yskAleutSûd-AltaïskâldingelskAngikaArameeskAraukaanskArapahoArawakAs" + - "uAsturyskAwadhiBaloetsjyskBalineeskBasaBamounGhomala’BejaBembaBenaBa" + - "futBhojpuriBikolBiniKomSiksikaBrajBodoAkooseBuriatBugineeskBuluBlinM" + - "edumbaKaddoKaribyskCayugaAtsamCebuanoChigaChibchaChagataiChuukeeskMa" + - "riChinook-jargonChoctawChipewyanCherokeeCheyenneSoranîKoptyskKrim-Ta" + - "taarskKasjoebyskDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriN" + - "edersorbyskDualaMiddelnederlânskJola-FonyiDyulaDazagaEmbuEfikAldegyp" + - "tyskEkajukElamityskMiddelingelskEwondoFangFilipynskFonMiddelfrânskAl" + - "dfrânskNoard-FryskEast-FryskFriulyskGaGayoGbayaGeezGilberteeskMiddel" + - "heechdútskAlsheechdútskGondiGorontaloGothyskGreboAldgryksSwitsers Dú" + - "tskGusiiGwichʼinHaidaHawaïaanskHiligaynonHettityskHmongOppersorbyskH" + - "upaIbanIbibioIlokoIngoesjLojbanNgombaMachameJudeo-PerzyskJudeo-Araby" + - "skKarakalpaksKabyleKachinJjuKambaKawiKabardyskKanembuTyapMakondeKaap" + - "verdysk CreoolsKoroKhasiKhotaneeskKoyra ChiiniKakoKalenjinKimbunduKo" + - "nkaniKosraeaanskKpelleKarachay-BalkarKarelyskKurukhShambalaBafiaKöls" + - "chKoemuksKutenaiLadinoLangiLahndaLambaLezgyskLakotaMongoLoziLuba-Lul" + - "uaLuisenoLundaLuoLushaiLuyiaMadureesMafaMagahiMaithiliMakassaarsMand" + - "ingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddeliersMakhuwa-MeettoMe" + - "ta’Mi’kmaqMinangkabauMantsjoeManipoeriMohawkMossiMundangMeardere tal" + - "enCreekMirandeesMarwariMyeneErzjaNapolitaanskNamaLaagduitsNewariNias" + - "NiueaanskNgumbaNgiemboonNogaiAldnoarskN’koNoard-SothoNuerKlassiek Ne" + - "wariNyamweziNyankoleNyoroNzimaOsageOttomaansk-TurksPangasinanPahlavi" + - "PampangaPapiamentsPalauaanskAldperzyskFoenisyskPohnpeiaanskAldproven" + - "çaalsRajasthaniRapanuiRarotonganRomboRomaniAromaniaanskRwaSandaweJa" + - "koetsSamaritaansk-ArameeskSamburuSasakSantaliNgambaySanguSiciliaansk" + - "SchotsSenecaSenaSelkupKoyraboro SenniAldyrskTashelhiytShanTsjadysk A" + - "rabyskSidamoSûd-SamyskLule SamiInari SamiSkolt SamiSoninkeSogdyskSra" + - "nantongoSererSahoSukumaSoesoeSoemeryskShimaoreKlassiek SyryskSyryskT" + - "imneTesoTerenoTetunTigreTivTokelausKlingonTlingitTamashekNyasa Tonga" + - "Tok PisinTarokoTsimshianToemboekaTuvaluaanskTasawaqTuvinyskTamazight" + - " (Sintraal-Marokko)OedmoertsOegarityskUmbunduRootVaiVotyskVunjoWalse" + - "rWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantoneeskZapotecBli" + - "ssymbolenZenagaStandert Marokkaanske TamazightZuniGjin linguïstyske " + - "ynhâldZazaModern standert ArabyskEastenryks DútskSwitsersk Heechdúts" + - "kAustralysk IngelskKanadeesk IngelskBritsk IngelskAmerikaansk Ingels" + - "kLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaansk SpaanskKana" + - "deesk FrânskSwitserse FrânskVlaamsBrazyljaansk PortugeesEuropees Por" + - "tugeesMoldavyskServokroatyskCongo SwahiliFerienfâldich SineeskTradis" + - "joneel Sineesk", - []uint16{ // 610 elements + { // es-CR + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0015, 0x001f, 0x0023, 0x002b, 0x0035, - 0x003c, 0x0045, 0x004c, 0x0052, 0x0061, 0x006b, 0x0076, 0x007f, - 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a8, 0x00af, 0x00b9, 0x00c5, - 0x00cd, 0x00d8, 0x00dc, 0x00e5, 0x00f0, 0x00fc, 0x0101, 0x0107, - 0x010d, 0x0113, 0x011b, 0x011e, 0x0123, 0x012a, 0x0133, 0x013a, - 0x0143, 0x014a, 0x0151, 0x0156, 0x015b, 0x0161, 0x016b, 0x0172, - 0x017c, 0x0181, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01ac, 0x01b1, - 0x01bb, 0x01c0, 0x01c9, 0x01d1, 0x01dc, 0x01e5, 0x01ed, 0x01f3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x01fe, 0x0208, 0x0213, 0x0217, 0x0221, 0x0228, 0x022b, 0x0232, - 0x023c, 0x0245, 0x024b, 0x0253, 0x025b, 0x0260, 0x0266, 0x026e, - 0x0275, 0x027f, 0x0284, 0x028b, 0x0294, 0x029a, 0x02a2, 0x02aa, - 0x02ae, 0x02b5, 0x02be, 0x02c3, 0x02cd, 0x02d2, 0x02da, 0x02e1, - 0x02eb, 0x02f2, 0x02fe, 0x0306, 0x0310, 0x031b, 0x0320, 0x032a, - 0x0333, 0x033b, 0x0342, 0x0348, 0x034f, 0x0356, 0x0360, 0x036c, - 0x0374, 0x037a, 0x0385, 0x0394, 0x03a3, 0x03ae, 0x03b4, 0x03ba, - 0x03c4, 0x03ca, 0x03cf, 0x03d3, 0x03db, 0x03e2, 0x03e6, 0x03ec, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x03f3, 0x03fd, 0x0404, 0x0411, 0x0418, 0x0421, 0x0428, 0x0433, - 0x043c, 0x0445, 0x044b, 0x0457, 0x045c, 0x0465, 0x046d, 0x0476, - 0x047f, 0x0484, 0x048c, 0x0495, 0x049c, 0x04a1, 0x04ab, 0x04b6, - 0x04bc, 0x04c3, 0x04c8, 0x04ce, 0x04d7, 0x04dc, 0x04e4, 0x04ed, - 0x04f3, 0x04fc, 0x0501, 0x0507, 0x050e, 0x0516, 0x051e, 0x0528, - 0x052c, 0x0534, 0x0539, 0x0543, 0x054b, 0x0550, 0x0555, 0x055a, - 0x0561, 0x0567, 0x056d, 0x0574, 0x0578, 0x057f, 0x0584, 0x058b, - 0x0591, 0x0591, 0x0599, 0x059e, 0x05a2, 0x05aa, 0x05aa, 0x05af, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x05af, 0x05bc, 0x05c7, 0x05cd, 0x05d5, 0x05df, 0x05df, 0x05e6, - 0x05e6, 0x05ec, 0x05ec, 0x05ec, 0x05ef, 0x05ef, 0x05f7, 0x05f7, - 0x05fd, 0x0608, 0x0611, 0x0611, 0x0615, 0x061b, 0x061b, 0x0625, - 0x0629, 0x062e, 0x062e, 0x0632, 0x0637, 0x0637, 0x0637, 0x063f, - 0x0644, 0x0648, 0x0648, 0x064b, 0x0652, 0x0652, 0x0652, 0x0656, - 0x0656, 0x065a, 0x0660, 0x0666, 0x066f, 0x0673, 0x0677, 0x067e, - 0x0683, 0x068b, 0x0691, 0x0696, 0x069d, 0x06a2, 0x06a9, 0x06b1, - 0x06ba, 0x06be, 0x06cc, 0x06d3, 0x06dc, 0x06e4, 0x06ec, 0x06f3, - // Entry 100 - 13F - 0x06fa, 0x06fa, 0x0707, 0x0711, 0x0717, 0x071d, 0x0722, 0x072a, - 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x0750, 0x0750, 0x0755, - 0x0766, 0x0770, 0x0775, 0x077b, 0x077f, 0x0783, 0x0783, 0x078e, - 0x0794, 0x079d, 0x07aa, 0x07aa, 0x07b0, 0x07b0, 0x07b4, 0x07bd, - 0x07bd, 0x07c0, 0x07c0, 0x07cd, 0x07d7, 0x07d7, 0x07e2, 0x07ec, - 0x07f4, 0x07f6, 0x07f6, 0x07f6, 0x07fa, 0x07ff, 0x07ff, 0x0803, - 0x080e, 0x080e, 0x081f, 0x082d, 0x082d, 0x0832, 0x083b, 0x0842, - 0x0847, 0x084f, 0x085e, 0x085e, 0x085e, 0x0863, 0x086c, 0x0871, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0871, 0x087c, 0x087c, 0x0886, 0x088f, 0x0894, 0x08a0, 0x08a0, - 0x08a4, 0x08a8, 0x08ae, 0x08b3, 0x08ba, 0x08ba, 0x08ba, 0x08c0, - 0x08c6, 0x08cd, 0x08da, 0x08e7, 0x08e7, 0x08f2, 0x08f8, 0x08fe, - 0x0901, 0x0906, 0x090a, 0x0913, 0x091a, 0x091e, 0x0925, 0x0938, - 0x0938, 0x093c, 0x093c, 0x0941, 0x094b, 0x0957, 0x0957, 0x0957, - 0x095b, 0x0963, 0x096b, 0x096b, 0x0972, 0x097d, 0x0983, 0x0992, - 0x0992, 0x0992, 0x099a, 0x09a0, 0x09a8, 0x09ad, 0x09b4, 0x09bb, - 0x09c2, 0x09c8, 0x09cd, 0x09d3, 0x09d8, 0x09df, 0x09df, 0x09df, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x09df, 0x09e5, 0x09e5, 0x09ea, 0x09ee, 0x09ee, 0x09ee, 0x09f8, - 0x09ff, 0x0a04, 0x0a07, 0x0a0d, 0x0a12, 0x0a12, 0x0a12, 0x0a1a, - 0x0a1e, 0x0a24, 0x0a2c, 0x0a36, 0x0a3e, 0x0a43, 0x0a47, 0x0a4d, - 0x0a53, 0x0a58, 0x0a5c, 0x0a64, 0x0a6e, 0x0a7c, 0x0a83, 0x0a8c, - 0x0a97, 0x0a9f, 0x0aa8, 0x0aae, 0x0ab3, 0x0ab3, 0x0aba, 0x0ac8, - 0x0acd, 0x0ad6, 0x0add, 0x0add, 0x0ae2, 0x0ae7, 0x0ae7, 0x0ae7, - 0x0af3, 0x0af7, 0x0b00, 0x0b06, 0x0b0a, 0x0b13, 0x0b13, 0x0b19, - 0x0b22, 0x0b27, 0x0b30, 0x0b30, 0x0b36, 0x0b41, 0x0b45, 0x0b54, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0b5c, 0x0b64, 0x0b69, 0x0b6e, 0x0b73, 0x0b83, 0x0b8d, 0x0b94, - 0x0b9c, 0x0ba6, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bba, 0x0bba, - 0x0bc3, 0x0bc3, 0x0bc3, 0x0bcf, 0x0bcf, 0x0bde, 0x0bde, 0x0bde, - 0x0be8, 0x0bef, 0x0bf9, 0x0bf9, 0x0bf9, 0x0bfe, 0x0c04, 0x0c04, - 0x0c04, 0x0c04, 0x0c10, 0x0c13, 0x0c1a, 0x0c21, 0x0c36, 0x0c3d, - 0x0c42, 0x0c49, 0x0c49, 0x0c50, 0x0c55, 0x0c60, 0x0c66, 0x0c66, - 0x0c66, 0x0c6c, 0x0c70, 0x0c70, 0x0c76, 0x0c85, 0x0c8c, 0x0c8c, - 0x0c96, 0x0c9a, 0x0caa, 0x0cb0, 0x0cb0, 0x0cb0, 0x0cbb, 0x0cc4, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x0cce, 0x0cd8, 0x0cdf, 0x0ce6, 0x0cf1, 0x0cf6, 0x0cfa, 0x0cfa, - 0x0d00, 0x0d06, 0x0d0f, 0x0d17, 0x0d26, 0x0d2c, 0x0d2c, 0x0d2c, - 0x0d31, 0x0d35, 0x0d3b, 0x0d40, 0x0d45, 0x0d48, 0x0d50, 0x0d50, - 0x0d57, 0x0d5e, 0x0d5e, 0x0d66, 0x0d71, 0x0d7a, 0x0d7a, 0x0d80, - 0x0d80, 0x0d89, 0x0d89, 0x0d92, 0x0d9d, 0x0da4, 0x0dac, 0x0dc8, - 0x0dd1, 0x0ddb, 0x0de2, 0x0de6, 0x0de9, 0x0de9, 0x0de9, 0x0de9, - 0x0de9, 0x0def, 0x0def, 0x0df4, 0x0dfa, 0x0e00, 0x0e05, 0x0e0a, - 0x0e0a, 0x0e0a, 0x0e10, 0x0e10, 0x0e14, 0x0e17, 0x0e1d, 0x0e24, - // Entry 240 - 27F - 0x0e29, 0x0e29, 0x0e33, 0x0e3a, 0x0e46, 0x0e46, 0x0e4c, 0x0e6b, - 0x0e6f, 0x0e89, 0x0e8d, 0x0ea4, 0x0ea4, 0x0eb5, 0x0eca, 0x0edc, - 0x0eed, 0x0efb, 0x0f0e, 0x0f29, 0x0f3a, 0x0f4d, 0x0f4d, 0x0f5e, - 0x0f6f, 0x0f6f, 0x0f75, 0x0f8b, 0x0f9d, 0x0fa6, 0x0fb3, 0x0fc0, - 0x0fd6, 0x0fea, - }, - }, - { // ga - "AfáirisAbcáisisAivéistisAfracáinisAcáinisAmáirisAragóinisAraibisAsaimisA" + - "váirisAidhmirisAsarbaiseáinisBaiscírisBealarúisisBulgáirisBioslaimis" + - "BeangáilisTibéidisBriotáinisBoisnisCatalóinisSeisnisSeamóirisCorsaic" + - "isCraísSeicisSlavais na hEaglaiseSuvaisisBreatnaisDanmhairgisGearmái" + - "nisDivéihisSeoinicisGréigisBéarlaEsperantoSpáinnisEastóinisBascaisPe" + - "irsisFuláinisFionlainnisFidsisFaróisFraincisFreaslainnis IartharachG" + - "aeilgeGaeilge na hAlbanGailísisGuaráinisGúisearáitisManainnisHásaisE" + - "abhraisHiondúisMotúis HíríCróitisCriól HáítíochUngáirisAirméinisHeir" + - "éirisInterlinguaIndinéisisInterlingueÍogbóisIniúipiaicisIdoÍoslainn" + - "isIodáilisIonúitisSeapáinisIáivisSeoirsisCongóisCiocúisCuainiáimisCa" + - "saicisKalaallisutCiméirisCannadaisCóiréisCanúirisCaismírisCoirdisCoi" + - "misCoirnisCirgisisLaidinLucsambuirgisLugandaisLiongáilisLaoisisLiotu" + - "áinisLúba-CataingisLaitvisMalagáisisMairsillisMaoraisMacadóinisMail" + - "éalaimisMongóilisMaraitisMalaeisMáltaisBurmaisNárúisNdeibéilis an T" + - "uaiscirtNeipeailisNdongaisOllainnisNua-IoruaisIoruais BokmålNdeibéil" + - "is an DeiscirtNavachóisSiséivisOcsatáinisÓisibisOraimisOirísisOiséit" + - "isPuinseáibisPáilisPolainnisPaistisPortaingéilisCeatsuaisRómainisRúi" + - "ndisRómáinisRúisisCiniaruaindisSanscraitSairdínisSindisSáimis Thuaid" + - "hSangóisSiolóinisSlóvaicisSlóivéinisSamóisSeoinisSomáilisAlbáinisSei" + - "rbisSuaisisSeasóitisSundaisSualainnisSvahaílisTamailisTeileagúisTáid" + - "sícisTéalainnisTigrinisTuircméinisSuáinisTongaisTuircisSongaisTatair" + - "isTaihítisUigiúirisÚcráinisUrdúisÚisbéiceastáinisVeindisVítneaimisVo" + - "lapükVallúnaisVolaifisCóisisGiúdaisIarúibisSiuáingisSínisSúlúisAidhn" + - "iúisAcáidisSean-BhéarlaAramaisMapúitsisAstúirisBailísBaváirisBeimbis" + - "BuiriáitisBuiginisSeabúáinisMairisSeiricisCoptaisCaisiúibisZarmaisSo" + - "rbais ÍochtarachMeán-OllainnisSean-ÉigiptisMeán-BhéarlaFilipínisMeán" + - "-FhraincisSean-FhraincisFreaslainnis an TuaiscirtFriúilisAetóipisMeá" + - "n-Ard-GhearmáinisSean-Ard-GhearmáinisSean-GhréigisGearmáinis Eilvéis" + - "eachUaúisHaicéisHaváisHiondúis FhidsíHilgeanóinisHitisMongaisSorbais" + - " UachtarachHúipisIbibisIongúisIútlainnisCara-ChalpáisConcáinisCairéi" + - "lisCurúicisLaidínisPuinseáibis IartharachLiogúirisLiovóinisLombairdi" + - "sMeindisMeán-GhaeilgeManapúirisMóháicisMairis IartharachMioraindéisM" + - "armhairisGearmáinis ÍochtarachNíobhaisSean-LochlainnisSútúis an Tuai" + - "scirtSean-PheirsisPrúisisRomainisArómáinisSachaisAramais ShamárachSa" + - "ntáilisSicilisAlbainisSean-GhaeilgeSáimis LuleSogdánaisSuiméirisSiri" + - "cisSiléisisKlingonUdmairtisTeanga AnaithnidVeinéisisPléimeannais Iar" + - "tharachCailmícisCantainisSéalainnisZúinisGan ábhar teangeolaíochArai" + - "bis ChaighdeánachGearmáinis OstarachArd-Ghearmáinis EilvéiseachBéarl" + - "a AstrálachBéarla CeanadachBéarla BriotanachBéarla MeiriceánachSpáin" + - "nis Mheiriceá LaidinighSpáinnis EorpachSpáinnis MheicsiceachFraincis" + - " CheanadachFraincis EilvéiseachSacsainis ÍochtarachPléimeannaisPorta" + - "ingéilis na BrasaílePortaingéilis IbéarachMoldáivisSeirbea-ChróitisS" + - "vahaílis an ChongóSínis ShimplitheSínis Thraidisiúnta", - []uint16{ // 610 elements + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 240 - 27F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, + }, + }, + { // es-DO + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0008, 0x0011, 0x001b, 0x0026, 0x002e, 0x0036, 0x0040, - 0x0047, 0x004e, 0x0056, 0x005f, 0x006e, 0x0078, 0x0084, 0x008e, - 0x0098, 0x0098, 0x00a3, 0x00ac, 0x00b7, 0x00be, 0x00c9, 0x00d0, - 0x00da, 0x00e3, 0x00e9, 0x00ef, 0x0103, 0x010b, 0x0114, 0x011f, - 0x012a, 0x0133, 0x013c, 0x013c, 0x0144, 0x014b, 0x0154, 0x015d, - 0x0167, 0x016e, 0x0175, 0x017e, 0x0189, 0x018f, 0x0196, 0x019e, - 0x01b5, 0x01bc, 0x01cd, 0x01d6, 0x01e0, 0x01ee, 0x01f7, 0x01fe, - 0x0206, 0x020f, 0x021d, 0x0225, 0x0237, 0x0240, 0x024a, 0x0254, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x025f, 0x026a, 0x0275, 0x027e, 0x027e, 0x028b, 0x028e, 0x0299, - 0x02a2, 0x02ab, 0x02b5, 0x02bc, 0x02c4, 0x02cc, 0x02d4, 0x02e0, - 0x02e8, 0x02f3, 0x02fc, 0x0305, 0x030e, 0x0317, 0x0321, 0x0328, - 0x032e, 0x0335, 0x033d, 0x0343, 0x0350, 0x0359, 0x0359, 0x0364, - 0x036b, 0x0376, 0x0385, 0x038c, 0x0397, 0x03a1, 0x03a8, 0x03b3, - 0x03c0, 0x03ca, 0x03d2, 0x03d9, 0x03e1, 0x03e8, 0x03f0, 0x0408, - 0x0412, 0x041a, 0x0423, 0x042e, 0x043d, 0x0454, 0x045e, 0x0467, - 0x0472, 0x047a, 0x0481, 0x0489, 0x0492, 0x049e, 0x04a5, 0x04ae, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x04b5, 0x04c3, 0x04cc, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x04fb, - 0x0504, 0x050e, 0x0514, 0x0523, 0x052b, 0x0535, 0x053f, 0x054b, - 0x0552, 0x0559, 0x0562, 0x056b, 0x0572, 0x0579, 0x0583, 0x058a, - 0x0594, 0x059e, 0x05a6, 0x05b1, 0x05bc, 0x05c7, 0x05cf, 0x05db, - 0x05e3, 0x05ea, 0x05f1, 0x05f8, 0x0600, 0x0609, 0x0613, 0x061d, - 0x0624, 0x0637, 0x063e, 0x0649, 0x0651, 0x065b, 0x0663, 0x066a, - 0x0672, 0x067b, 0x0685, 0x068b, 0x0693, 0x0693, 0x0693, 0x0693, - 0x0693, 0x0693, 0x0693, 0x0693, 0x069d, 0x06a5, 0x06a5, 0x06a5, - // Entry C0 - FF - 0x06a5, 0x06a5, 0x06b2, 0x06b2, 0x06b9, 0x06c3, 0x06c3, 0x06c3, - 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06cc, 0x06cc, - 0x06cc, 0x06cc, 0x06d3, 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0x06dc, - 0x06dc, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e3, 0x06e3, 0x06ee, 0x06f6, 0x06f6, 0x06f6, 0x06f6, - 0x06f6, 0x06f6, 0x06f6, 0x06f6, 0x0702, 0x0702, 0x0702, 0x0702, - 0x0702, 0x0708, 0x0708, 0x0708, 0x0708, 0x0710, 0x0710, 0x0710, - // Entry 100 - 13F - 0x0717, 0x0717, 0x0717, 0x0722, 0x0722, 0x0722, 0x0722, 0x0722, - 0x0722, 0x0722, 0x0722, 0x0729, 0x0729, 0x073c, 0x073c, 0x073c, - 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x0759, - 0x0759, 0x0759, 0x0767, 0x0767, 0x0767, 0x0767, 0x0767, 0x0771, - 0x0771, 0x0771, 0x0771, 0x0780, 0x078e, 0x078e, 0x07a7, 0x07a7, - 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b9, - 0x07b9, 0x07b9, 0x07cf, 0x07e4, 0x07e4, 0x07e4, 0x07e4, 0x07e4, - 0x07e4, 0x07f2, 0x080a, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry C0 - FF + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0818, 0x081f, 0x0830, 0x083d, 0x0842, 0x0849, 0x085b, 0x085b, - 0x0862, 0x0862, 0x0868, 0x0868, 0x0870, 0x0870, 0x0870, 0x0870, - 0x0870, 0x0870, 0x0870, 0x0870, 0x087b, 0x0889, 0x0889, 0x0889, - 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, - 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, - 0x0889, 0x0889, 0x0889, 0x0889, 0x0893, 0x0893, 0x0893, 0x0893, - 0x0893, 0x0893, 0x089d, 0x08a6, 0x08a6, 0x08a6, 0x08a6, 0x08a6, - 0x08a6, 0x08af, 0x08af, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08d0, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x08da, 0x08da, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, - 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, - 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, - 0x08e4, 0x08eb, 0x08eb, 0x08eb, 0x08f9, 0x08f9, 0x08f9, 0x08f9, - 0x08f9, 0x08f9, 0x0904, 0x090e, 0x090e, 0x091f, 0x091f, 0x091f, - 0x091f, 0x092b, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935, - 0x0935, 0x0935, 0x094c, 0x094c, 0x094c, 0x0955, 0x0955, 0x0955, - 0x0955, 0x0955, 0x0965, 0x0965, 0x0965, 0x097a, 0x097a, 0x097a, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, - 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0987, 0x0987, 0x098f, 0x098f, 0x098f, 0x098f, - 0x098f, 0x098f, 0x098f, 0x098f, 0x098f, 0x098f, 0x0997, 0x0997, - 0x0997, 0x0997, 0x09a2, 0x09a2, 0x09a2, 0x09a9, 0x09bb, 0x09bb, - 0x09bb, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09cc, 0x09d4, 0x09d4, - 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09e1, 0x09e1, - 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09ed, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x09ed, 0x09ed, 0x09ed, 0x09f7, 0x09f7, 0x09f7, 0x09f7, 0x09f7, - 0x09f7, 0x09f7, 0x0a01, 0x0a01, 0x0a01, 0x0a08, 0x0a11, 0x0a11, - 0x0a11, 0x0a11, 0x0a11, 0x0a11, 0x0a11, 0x0a11, 0x0a11, 0x0a11, - 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, - 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, 0x0a18, - 0x0a21, 0x0a21, 0x0a21, 0x0a31, 0x0a31, 0x0a3b, 0x0a3b, 0x0a53, - 0x0a53, 0x0a53, 0x0a53, 0x0a53, 0x0a53, 0x0a53, 0x0a53, 0x0a53, - 0x0a53, 0x0a53, 0x0a5d, 0x0a5d, 0x0a5d, 0x0a5d, 0x0a5d, 0x0a5d, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x0a5d, 0x0a5d, 0x0a66, 0x0a66, 0x0a66, 0x0a71, 0x0a71, 0x0a71, - 0x0a78, 0x0a91, 0x0a91, 0x0aa7, 0x0aa7, 0x0abb, 0x0ad8, 0x0aea, - 0x0afb, 0x0b0d, 0x0b22, 0x0b40, 0x0b51, 0x0b67, 0x0b67, 0x0b7a, - 0x0b8f, 0x0ba4, 0x0bb1, 0x0bcc, 0x0be4, 0x0bee, 0x0bff, 0x0c14, - 0x0c25, 0x0c3a, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // gd - "AfarAbchasaisAvestanaisAfraganaisAkanAmtharaisAragonaisArabaisAsamaisAva" + - "raisAymaraAsarbaideànaisBashkirBealaruisisBulgaraisBislamaBambaraBea" + - "ngailisTibeitisBreatnaisBosnaisCatalanaisDeideanaisChamorroCorsaisCr" + - "eeSeacaisSlàbhais na h-EaglaiseChuvashCuimrisDanmhairgisGearmailtisD" + - "ivehiDzongkhaEweGreugaisBeurlaEsperantoSpàinntisEastoinisBasgaisPeir" + - "sisFulahFionnlannaisFìdisFàrothaisFraingisFrìoslannais ShiarachGaeil" + - "geGàidhligGailìsisGuaraníGujaratiGaelgHausaEabhraHindisHiri MotuCròt" + - "haisisCrìtheol HaidhtiUngairisAirmeinisHereroInterlinguaInnd-InnsisI" + - "nterlingueIgboYi SichuanInupiaqIdoInnis TìlisEadailtisInuktitutSeapa" + - "naisDeàbhanaisCairtbheilisKongoKikuyuKuanyamaCasachaisKalaallisutCmè" + - "arKannadaCoirèanaisKanuriCaismirisCùrdaisKomiCòrnaisCìorgasaisLaidea" + - "nnLugsamburgaisGandaCànan LimburgLingalaLàthoLiotuainisLuba-KatangaL" + - "aitbheisMalagasaisMarshallaisMāoriMasadonaisMalayalamMongolaisMarath" + - "iMalaidhisMaltaisBurmaisNabhruNdebele ThuathachNeapàlaisNdongaDuitsi" + - "sNynorsk na NirribhidhBokmål na NirribhidhNdebele DheasachNavajoChic" + - "hewaOgsatanaisOjibwaOromoOdiaOsseticPanjabiPaliPòlainnisPashtoPortag" + - "ailisCeatsuaRumainsKirundiRomàinisRuisisKinyarwandaSanskritSàrdaisSi" + - "ndhiSàmais ThuathachSangoSinhalaSlòbhacaisSlòbhainisSamothaisShonaSo" + - "màilisAlbàinisSèirbisSwatiLeasotach DheasachCànan SundaSuainisKiswah" + - "iliTaimilisTeluguTaidigisTàidhTigrinyaTurcmanaisTswanaTongaisTurcais" + - "TsongaTataraisCànan TahitiÙigiuraisUcràinisÙrduUsbagaisVendaBhiet-Na" + - "maisVolapükWalloonWolofXhosaIùdhaisIorubaZhuangSìnisZuluBasa AcèhAco" + - "liAdangmeAdygheArabais ThuiniseachAfrihiliAghemAinuAcadaisAlabamaAle" + - "utaisAlbàinis GhegeachSeann-BheurlaAngikaAramaisMapucheAraonaArapaho" + - "Arabais AildireachArawakArabais MhorocachArabais ÈipheiteachAsuCainn" + - "t-shanais na h-AimeireagaAstùraisKotavaAwadhiBaluchìCànan BaliBasaaB" + - "amunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaBalochi ShiarachB" + - "hojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAk" + - "ooseBuriatCànan nam BugisBuluBlinMedumbaCaddoCaribCayugaAtsamCebuano" + - "ChigaChibchaChagataiCànan ChuukMariChinuk WawaChoctawChipewyanCherok" + - "eeCheyenneCùrdais SoranîCoptaisCapiznonTurcais ChriomachCaisiubaisDa" + - "kotaDargwaTaitaDelawareSlaveyDogribDinkaZarmaDogriSòrbais Ìochdarach" + - "Dusun MheadhanachDualaMeadhan-DhuitsisJola-FonyiDyulaDazagaEmbuEfikÈ" + - "ipheitis ÀrsaidhEkajukElamaisMeadhan-BheurlaYupik MheadhanachEwondoC" + - "ànan na h-ExtremaduraFangFilipinisMeänkieliFonFraingis nan CajunMea" + - "dhan-FhraingisSeann-FhraingisArpitanFrìoslannais ThuathachFrìoslanna" + - "is EarachFriùilisGaGagauzGanGayoGbayaDari ZoroastrachGe’ezCiribeasai" + - "sGilakiMeadhan-Àrd-GearmailtisSeann-Àrd-GearmailtisKonkani GoaGondiG" + - "orontaloGotaisGreboGreugais ÀrsaidhGearmailtis EilbheiseachWayuuFraf" + - "raGusiiGwichʼinHaidaHakkaCànan Hawai’iHindis FhìditheachHiligaynonCà" + - "nan HetHmongSòrbais UachdarachXiangHupaIbanIbibioIlokoIngushBeurla C" + - "rìtheolach DiameugaLojbanNgombaMachamePeirsis IùdhachArabais Iùdhach" + - "Kara-KalpakKabyleKachinJjuKambaKawiKanembuTyapMakondeKabuverdianuKen" + - "yangKoroKaingangKhasiCànan KhotanKoyra ChiiniKhowarKirmanjkiKakoKale" + - "njinKimbunduKomi-PermyakKonkaniKpelleKarachay-BalkarKrioKinaray-aKur" + - "ukhShambalaBafiaKumykKutenaiLadinoLangiLahndaLambaLingua Franca Nova" + - "LiogùraisLakhótaLombardaisMongoLoziLuri ThuathachLuba-LuluaLuiseñoLu" + - "ndaLuoMizoLuyiaSìnis an LitreachaisLazCànan MadhuraMafaMagahiMaithil" + - "iMakasarMandingoMaasaiMabaMokshaMandarMendeMeruMorisyenMeadhan-Ghaei" + - "lgeMakhuwa-MeettoMeta’Mi’kmaqMinangkabauManchuManipuriMohawkMossiMar" + - "i ShiarachMundangIomadh cànanCreekMarwariMentawaiMyeneErzyaMazandera" + - "niMin NanNamaGearmailtis ÌochdarachNewariNiasCànan NiueAo NagaKwasio" + - "NgiemboonNogaiSeann-LochlannaisNovialN’KoLeasotais ThuathachNuerNewa" + - "ri ChlasaigeachNyamweziNyankoleNyoroNzimaOsageTurcais OtomanachPanga" + - "sinanPahlaviPampangaPapiamentoPalabhaisPicardGearmailtis Phennsylvan" + - "iaPlautdietschSeann-PheirsisPhenicisPiedmonteseCànan PohnpeiPruisisS" + - "eann-PhrovençalK’iche’Quichua Àrd-tìr ChimborazoRajasthaniRapa NuiCà" + - "nan RarotongaRomagnolRomboRomanaisRusynRovianaRwaSandaweSachaisArama" + - "is ShamaritanachSamburuSasakSantaliSaurashtraNgambaySanguSisilisAlba" + - "isSassareseCùrdais DheasachSenecaSenaSeriSelkupKoyraboro SenniSeann-" + - "GhaeilgeTachelhitShanArabais SeàdachSidamoSelayarSàmais DheasachSàma" + - "is LuleSàmais InariSàmais SkoltSoninkeSranan TongoSererSahoSukumaSus" + - "uCànan SumerComoraisSuraidheac ChlasaigeachSuraidheacTuluTimneTesoTe" + - "rênaTetumTigreTivTokelauTsakhurKlingonTlingitTalyshTamashekNyasa Ton" + - "gaTok PisinTuroyoTarokoTsimshianTatiTumbukaTubhaluTasawaqCànan TuvaT" + - "amazight Meadhan na h-AtlasUdmurtUmbunduRootVaiVepsFlannrais Siarach" + - "VõroVunjoGearmailtis WallisWolayttaWarayWashoWarlpiriWuKalmykSogaYao" + - "Cànan YapYangbenYembaNheengatuCantonaisZapotecComharran BlissCànan Z" + - "eelandZenagaTamazight Stannardach MorocoZuñiSusbaint nach eil ’na ch" + - "ànanZazakiNuadh-Arabais StannardachGearmailtis na h-OstaireÀrd-Ghea" + - "rmailtis na h-EilbheiseBeurla AstràiliaBeurla ChanadaBeurla Bhreatai" + - "nnBeurla na h-AimeireagaSpàinntis na h-Aimeireaga LaidinneachSpàinnt" + - "is EòrpachSpàinntis MheagsagachFraingis ChanadaFraingis Eilbheiseach" + - "Sagsannais ÌochdarachFlannraisPortagailis BhraisileachPortagailis Eò" + - "rpachMoldobhaisSèirb-ChròthaisisKiswahili na CongoSìnis ShimplichteS" + - "ìnis Thradaiseanta", - []uint16{ // 610 elements + { // es-EC + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0017, 0x0021, 0x0025, 0x002e, 0x0037, - 0x003e, 0x0045, 0x004c, 0x0052, 0x0061, 0x0068, 0x0073, 0x007c, - 0x0083, 0x008a, 0x0094, 0x009c, 0x00a5, 0x00ac, 0x00b6, 0x00c0, - 0x00c8, 0x00cf, 0x00d3, 0x00da, 0x00f1, 0x00f8, 0x00ff, 0x010a, - 0x0115, 0x011b, 0x0123, 0x0126, 0x012e, 0x0134, 0x013d, 0x0147, - 0x0150, 0x0157, 0x015e, 0x0163, 0x016f, 0x0175, 0x017f, 0x0187, - 0x019d, 0x01a4, 0x01ad, 0x01b6, 0x01be, 0x01c6, 0x01cb, 0x01d0, - 0x01d6, 0x01dc, 0x01e5, 0x01f0, 0x0201, 0x0209, 0x0212, 0x0218, - // Entry 40 - 7F - 0x0223, 0x022e, 0x0239, 0x023d, 0x0247, 0x024e, 0x0251, 0x025d, - 0x0266, 0x026f, 0x0278, 0x0283, 0x028f, 0x0294, 0x029a, 0x02a2, - 0x02ab, 0x02b6, 0x02bc, 0x02c3, 0x02ce, 0x02d4, 0x02dd, 0x02e5, - 0x02e9, 0x02f1, 0x02fc, 0x0304, 0x0311, 0x0316, 0x0324, 0x032b, - 0x0331, 0x033b, 0x0347, 0x0350, 0x035a, 0x0365, 0x036b, 0x0375, - 0x037e, 0x0387, 0x038e, 0x0397, 0x039e, 0x03a5, 0x03ab, 0x03bc, - 0x03c6, 0x03cc, 0x03d3, 0x03e8, 0x03fd, 0x040d, 0x0413, 0x041b, - 0x0425, 0x042b, 0x0430, 0x0434, 0x043b, 0x0442, 0x0446, 0x0450, - // Entry 80 - BF - 0x0456, 0x0461, 0x0468, 0x046f, 0x0476, 0x047f, 0x0485, 0x0490, - 0x0498, 0x04a0, 0x04a6, 0x04b7, 0x04bc, 0x04c3, 0x04ce, 0x04d9, - 0x04e2, 0x04e7, 0x04f0, 0x04f9, 0x0501, 0x0506, 0x0518, 0x0524, - 0x052b, 0x0534, 0x053c, 0x0542, 0x054a, 0x0550, 0x0558, 0x0562, - 0x0568, 0x056f, 0x0576, 0x057c, 0x0584, 0x0591, 0x059b, 0x05a4, - 0x05a9, 0x05b1, 0x05b6, 0x05c2, 0x05ca, 0x05d1, 0x05d6, 0x05db, - 0x05e3, 0x05e9, 0x05ef, 0x05f5, 0x05f9, 0x0603, 0x0608, 0x060f, - 0x0615, 0x0628, 0x0630, 0x0635, 0x0639, 0x0640, 0x0647, 0x064f, - // Entry C0 - FF - 0x0661, 0x0661, 0x066e, 0x0674, 0x067b, 0x0682, 0x0688, 0x068f, - 0x06a1, 0x06a7, 0x06b8, 0x06cc, 0x06cf, 0x06ed, 0x06f6, 0x06fc, - 0x0702, 0x070a, 0x0715, 0x0715, 0x071a, 0x071f, 0x0729, 0x0730, - 0x0734, 0x0739, 0x073f, 0x0743, 0x0748, 0x074e, 0x075e, 0x0766, - 0x076b, 0x076f, 0x0775, 0x0778, 0x077f, 0x078a, 0x0793, 0x0797, - 0x079d, 0x07a1, 0x07a7, 0x07ad, 0x07bd, 0x07c1, 0x07c5, 0x07cc, - 0x07d1, 0x07d6, 0x07dc, 0x07e1, 0x07e8, 0x07ed, 0x07f4, 0x07fc, - 0x0808, 0x080c, 0x0817, 0x081e, 0x0827, 0x082f, 0x0837, 0x0847, - // Entry 100 - 13F - 0x084e, 0x0856, 0x0867, 0x0871, 0x0877, 0x087d, 0x0882, 0x088a, - 0x0890, 0x0896, 0x089b, 0x08a0, 0x08a5, 0x08b9, 0x08ca, 0x08cf, - 0x08df, 0x08e9, 0x08ee, 0x08f4, 0x08f8, 0x08fc, 0x08fc, 0x090f, - 0x0915, 0x091c, 0x092b, 0x093c, 0x0942, 0x0959, 0x095d, 0x0966, - 0x0970, 0x0973, 0x0985, 0x0996, 0x09a5, 0x09ac, 0x09c3, 0x09d7, - 0x09e0, 0x09e2, 0x09e8, 0x09eb, 0x09ef, 0x09f4, 0x0a04, 0x0a0b, - 0x0a16, 0x0a1c, 0x0a34, 0x0a4a, 0x0a55, 0x0a5a, 0x0a63, 0x0a69, - 0x0a6e, 0x0a7f, 0x0a97, 0x0a9c, 0x0aa2, 0x0aa7, 0x0ab0, 0x0ab5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + // Entry 40 - 7F + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, + // Entry 80 - BF + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry C0 - FF + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0aba, 0x0aca, 0x0add, 0x0ae7, 0x0af1, 0x0af6, 0x0b09, 0x0b0e, - 0x0b12, 0x0b16, 0x0b1c, 0x0b21, 0x0b27, 0x0b27, 0x0b43, 0x0b49, - 0x0b4f, 0x0b56, 0x0b66, 0x0b76, 0x0b76, 0x0b81, 0x0b87, 0x0b8d, - 0x0b90, 0x0b95, 0x0b99, 0x0b99, 0x0ba0, 0x0ba4, 0x0bab, 0x0bb7, - 0x0bbe, 0x0bc2, 0x0bca, 0x0bcf, 0x0bdc, 0x0be8, 0x0bee, 0x0bf7, - 0x0bfb, 0x0c03, 0x0c0b, 0x0c17, 0x0c1e, 0x0c1e, 0x0c24, 0x0c33, - 0x0c37, 0x0c40, 0x0c40, 0x0c46, 0x0c4e, 0x0c53, 0x0c53, 0x0c58, - 0x0c5f, 0x0c65, 0x0c6a, 0x0c70, 0x0c75, 0x0c75, 0x0c87, 0x0c91, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x0c91, 0x0c99, 0x0ca3, 0x0ca8, 0x0cac, 0x0cba, 0x0cba, 0x0cc4, - 0x0ccc, 0x0cd1, 0x0cd4, 0x0cd8, 0x0cdd, 0x0cf2, 0x0cf5, 0x0d03, - 0x0d07, 0x0d0d, 0x0d15, 0x0d1c, 0x0d24, 0x0d2a, 0x0d2e, 0x0d34, - 0x0d3a, 0x0d3f, 0x0d43, 0x0d4b, 0x0d5b, 0x0d69, 0x0d70, 0x0d79, - 0x0d84, 0x0d8a, 0x0d92, 0x0d98, 0x0d9d, 0x0daa, 0x0db1, 0x0dbe, - 0x0dc3, 0x0dc3, 0x0dca, 0x0dd2, 0x0dd7, 0x0ddc, 0x0de7, 0x0dee, - 0x0dee, 0x0df2, 0x0e09, 0x0e0f, 0x0e13, 0x0e1e, 0x0e25, 0x0e2b, - 0x0e34, 0x0e39, 0x0e4a, 0x0e50, 0x0e56, 0x0e69, 0x0e6d, 0x0e80, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0e88, 0x0e90, 0x0e95, 0x0e9a, 0x0e9f, 0x0eb0, 0x0eba, 0x0ec1, - 0x0ec9, 0x0ed3, 0x0edc, 0x0ee2, 0x0efb, 0x0f07, 0x0f15, 0x0f15, - 0x0f1d, 0x0f28, 0x0f28, 0x0f36, 0x0f3d, 0x0f4e, 0x0f59, 0x0f75, - 0x0f7f, 0x0f87, 0x0f97, 0x0f9f, 0x0f9f, 0x0fa4, 0x0fac, 0x0fac, - 0x0fb1, 0x0fb8, 0x0fb8, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fde, 0x0fe5, - 0x0fea, 0x0ff1, 0x0ffb, 0x1002, 0x1007, 0x100e, 0x1014, 0x101d, - 0x102e, 0x1034, 0x1038, 0x103c, 0x1042, 0x1051, 0x105f, 0x105f, - 0x1068, 0x106c, 0x107c, 0x1082, 0x1082, 0x1089, 0x1099, 0x10a5, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x10b2, 0x10bf, 0x10c6, 0x10c6, 0x10d2, 0x10d7, 0x10db, 0x10db, - 0x10e1, 0x10e5, 0x10f1, 0x10f9, 0x1110, 0x111a, 0x111a, 0x111e, - 0x1123, 0x1127, 0x112e, 0x1133, 0x1138, 0x113b, 0x1142, 0x1149, - 0x1150, 0x1157, 0x115d, 0x1165, 0x1170, 0x1179, 0x117f, 0x1185, - 0x1185, 0x118e, 0x1192, 0x1199, 0x11a0, 0x11a7, 0x11b2, 0x11ce, - 0x11d4, 0x11d4, 0x11db, 0x11df, 0x11e2, 0x11e2, 0x11e6, 0x11f7, - 0x11f7, 0x11f7, 0x11fc, 0x1201, 0x1213, 0x121b, 0x1220, 0x1225, - 0x122d, 0x122f, 0x1235, 0x1235, 0x1239, 0x123c, 0x1246, 0x124d, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x1252, 0x125b, 0x1264, 0x126b, 0x127a, 0x1288, 0x128e, 0x12aa, - 0x12af, 0x12ce, 0x12d4, 0x12ed, 0x12ed, 0x1305, 0x1325, 0x1336, - 0x1344, 0x1355, 0x136b, 0x1391, 0x13a4, 0x13ba, 0x13ba, 0x13ca, - 0x13df, 0x13f5, 0x13fe, 0x1416, 0x142a, 0x1434, 0x1447, 0x1459, - 0x146b, 0x147f, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // gl - "abkhazoafrikaansakánamáricoaragonésárabeassamésaimaráacerbaixanobaskirbi" + - "elorrusobúlgarobmbengalítibetanobretónbosniocatalánChechenocorsochec" + - "oeslavo eclesiásticoChuvashgalésdinamarquésalemándivehidzongkhaewégr" + - "egoinglésesperantoespañolestonianoéuscaropersafinésfixianofaroésfran" + - "césfrisónirlandésgaélico escocésgalegoguaraníguxaratianomanxhausaheb" + - "reohindicroatahaitianohúngaroarmeniointerlinguaindonesioiboyi sichua" + - "nésislandésitalianoiuxaponésxavanésxeorxianokongokikuyucasacoklcambo" + - "dianokannadacoreanocachemirkurdokwquirguizlatínluxemburguésgandaling" + - "alalaotianolituanoluba-Katangaletónmalgaxemaorímacedoniomalabarmongo" + - "lmarathimalaiomaltésbirmanondebele do nortenepalíholandésnoruegués n" + - "ynorsknoruegués bokmalchewaoccitanooromooriyaosetiopunjabipolacopaxt" + - "únportuguésquechuaromancherundiromanésrusoruandéssánscritosindhisam" + - "i do nortesangocingaléseslovacoeslovenosamoanoshonasomalíalbanésserb" + - "ioswatisesotosondanéssuecoswahilitamiltelugutaxicotailandéstigriñatu" + - "rcomanotswanatonganésturcoxitsongatártarotahitianouigurucraínourdúuz" + - "becovendavietnamitawólofxhosayiddishiorubachinészulúacoliagqarameoma" + - "pucheasuasturianobembabezBaluchi occidentalbrxkigacheroquicurdo sora" + - "nítaitazarmadsbdualajola-fonyiembuibibioexipcio antigofilipinogagaga" + - "uzgrego antigoalemán suízogusiihawaianohsbngombamapachekabilekambama" + - "kondecaboverdianokoyra Chiiniklnkomi permiokonkanishambalabafiaLangi" + - "LakotaloziLurí do norteluba-lulualuoluyiamasaimerucrioulo mauritanom" + - "ghmgomohawkmundangvarias linguasMazandaranínaqBaixo alemánnmgnqoseso" + - "tho sa leboanusnyankolequichéromborwksaqsbpKurdo meridionalsenasesta" + - "chelhitsmasmjsmnsmstesotetúnklingontok pisintumbukatwqtzmLingua desc" + - "oñecidavaivunjoWarlpirisogatamazight de Marrocos estándarsen contido" + - " lingüísticoárabe estándar modernoalemán de austriaalto alemán suízo" + - "inglés australianoinglés canadianoinglés británicoinglés dos Estados" + - " Unidosespañol latinoamericanocastelánespañol de Méxicofrancés canad" + - "ianofrancés suízoBaixo saxónflamencoportugués brasileiroportugués eu" + - "ropeoserbocroataswcchinés simplificadochinés tradicional", - []uint16{ // 610 elements + { // es-GT + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0015, 0x001d, 0x0026, - 0x002c, 0x0034, 0x0034, 0x003b, 0x0046, 0x004c, 0x0056, 0x005e, - 0x005e, 0x0060, 0x0068, 0x0070, 0x0077, 0x007d, 0x0085, 0x008d, - 0x008d, 0x0092, 0x0092, 0x0097, 0x00ab, 0x00b2, 0x00b8, 0x00c4, - 0x00cb, 0x00d1, 0x00d9, 0x00dd, 0x00e2, 0x00e9, 0x00f2, 0x00fa, - 0x0103, 0x010b, 0x0110, 0x0110, 0x0116, 0x011d, 0x0124, 0x012c, - 0x0133, 0x013c, 0x014d, 0x0153, 0x015b, 0x0166, 0x016a, 0x016f, - 0x0175, 0x017a, 0x017a, 0x0180, 0x0188, 0x0190, 0x0197, 0x0197, - // Entry 40 - 7F - 0x01a2, 0x01ab, 0x01ab, 0x01ae, 0x01bb, 0x01bb, 0x01bb, 0x01c4, - 0x01cc, 0x01ce, 0x01d6, 0x01de, 0x01e7, 0x01ec, 0x01f2, 0x01f2, - 0x01f8, 0x01fa, 0x0204, 0x020b, 0x0212, 0x0212, 0x021a, 0x021f, - 0x021f, 0x0221, 0x0229, 0x022f, 0x023c, 0x0241, 0x0241, 0x0248, - 0x0250, 0x0257, 0x0263, 0x0269, 0x0270, 0x0270, 0x0276, 0x027f, - 0x0286, 0x028c, 0x0293, 0x0299, 0x02a0, 0x02a7, 0x02a7, 0x02b7, - 0x02be, 0x02be, 0x02c7, 0x02d9, 0x02ea, 0x02ea, 0x02ea, 0x02ef, - 0x02f7, 0x02f7, 0x02fc, 0x0301, 0x0307, 0x030e, 0x030e, 0x0314, - // Entry 80 - BF - 0x031b, 0x0325, 0x032c, 0x0334, 0x0339, 0x0341, 0x0345, 0x034d, - 0x0357, 0x0357, 0x035d, 0x036a, 0x036f, 0x0378, 0x0380, 0x0388, - 0x038f, 0x0394, 0x039b, 0x03a3, 0x03a9, 0x03ae, 0x03b4, 0x03bd, - 0x03c2, 0x03c9, 0x03ce, 0x03d4, 0x03da, 0x03e4, 0x03ec, 0x03f5, - 0x03fb, 0x0404, 0x0409, 0x0411, 0x0419, 0x0422, 0x0427, 0x042f, - 0x0434, 0x043a, 0x043f, 0x0449, 0x0449, 0x0449, 0x044f, 0x0454, - 0x045b, 0x0461, 0x0461, 0x0468, 0x046d, 0x046d, 0x0472, 0x0472, - 0x0472, 0x0472, 0x0472, 0x0475, 0x0475, 0x0475, 0x0475, 0x0475, - // Entry C0 - FF - 0x0475, 0x0475, 0x0475, 0x0475, 0x047b, 0x0482, 0x0482, 0x0482, - 0x0482, 0x0482, 0x0482, 0x0482, 0x0485, 0x0485, 0x048e, 0x048e, - 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, - 0x048e, 0x0493, 0x0493, 0x0496, 0x0496, 0x0496, 0x04a8, 0x04a8, - 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, - 0x04a8, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, - 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04af, 0x04af, 0x04af, - 0x04af, 0x04af, 0x04af, 0x04af, 0x04af, 0x04b7, 0x04b7, 0x04c4, - // Entry 100 - 13F - 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c9, 0x04c9, - 0x04c9, 0x04c9, 0x04c9, 0x04ce, 0x04ce, 0x04d1, 0x04d1, 0x04d6, - 0x04d6, 0x04e0, 0x04e0, 0x04e0, 0x04e4, 0x04ea, 0x04ea, 0x04f8, - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x0500, - 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, - 0x0500, 0x0502, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, - 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, - 0x0508, 0x0514, 0x0522, 0x0522, 0x0522, 0x0527, 0x0527, 0x0527, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + // Entry 40 - 7F + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, + // Entry 80 - BF + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry C0 - FF + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0527, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x0532, 0x0532, - 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, - 0x0538, 0x053f, 0x053f, 0x053f, 0x053f, 0x053f, 0x0545, 0x0545, - 0x0545, 0x054a, 0x054a, 0x054a, 0x054a, 0x054a, 0x0551, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0569, 0x0569, 0x0569, - 0x0569, 0x056c, 0x056c, 0x0577, 0x057e, 0x057e, 0x057e, 0x057e, - 0x057e, 0x057e, 0x057e, 0x057e, 0x0586, 0x058b, 0x058b, 0x058b, - 0x058b, 0x058b, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x0590, 0x0596, 0x0596, 0x0596, 0x059a, 0x05a8, 0x05a8, 0x05b2, - 0x05b2, 0x05b2, 0x05b5, 0x05b5, 0x05ba, 0x05ba, 0x05ba, 0x05ba, - 0x05ba, 0x05ba, 0x05ba, 0x05ba, 0x05ba, 0x05bf, 0x05bf, 0x05bf, - 0x05bf, 0x05bf, 0x05c3, 0x05d4, 0x05d4, 0x05d7, 0x05da, 0x05da, - 0x05da, 0x05da, 0x05da, 0x05e0, 0x05e0, 0x05e0, 0x05e7, 0x05f5, - 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x0601, 0x0601, - 0x0601, 0x0604, 0x0611, 0x0611, 0x0611, 0x0611, 0x0611, 0x0614, - 0x0614, 0x0614, 0x0614, 0x0614, 0x0617, 0x0627, 0x062a, 0x062a, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x062a, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, - 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, - 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0639, 0x0639, - 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x063e, 0x063e, 0x063e, - 0x063e, 0x063e, 0x063e, 0x0641, 0x0641, 0x0641, 0x0641, 0x0644, - 0x0644, 0x0644, 0x0644, 0x0644, 0x0647, 0x0647, 0x0647, 0x0647, - 0x0657, 0x0657, 0x065b, 0x065b, 0x065b, 0x065e, 0x065e, 0x065e, - 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x066a, 0x066d, - // Entry 200 - 23F - 0x0670, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, - 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, - 0x0673, 0x0677, 0x0677, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x068d, 0x068d, 0x068d, - 0x068d, 0x068d, 0x068d, 0x0694, 0x0694, 0x0697, 0x0697, 0x069a, - 0x069a, 0x069a, 0x069a, 0x06ad, 0x06b0, 0x06b0, 0x06b0, 0x06b0, - 0x06b0, 0x06b0, 0x06b0, 0x06b5, 0x06b5, 0x06b5, 0x06b5, 0x06b5, - 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06c1, 0x06c1, 0x06c1, 0x06c1, - // Entry 240 - 27F - 0x06c1, 0x06c1, 0x06c1, 0x06c1, 0x06c1, 0x06c1, 0x06c1, 0x06e0, - 0x06e0, 0x06f9, 0x06f9, 0x0711, 0x0711, 0x0723, 0x0736, 0x0749, - 0x075a, 0x076c, 0x0786, 0x079e, 0x07a7, 0x07ba, 0x07ba, 0x07cc, - 0x07db, 0x07e7, 0x07ef, 0x0804, 0x0816, 0x0816, 0x0821, 0x0824, - 0x0838, 0x084b, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 200 - 23F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 240 - 27F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // gsw - "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" + - "ischAwarischAymaraAserbaidschanischBaschkirischWiissrussischBulgaari" + - "schBislamaBambaraBengalischTibeetischBrötoonischBosnischKatalaanisch" + - "TschetscheenischChamorroKorsischCreeTschechischChileslawischTschuwas" + - "chischWalisischTänischTüütschMalediivischDschongkhaEweGriechischÄngl" + - "ischEschperantoSchpanischEestnischBaskischPersischFulFinnischFidschi" + - "anischFäröischFranzösischFriesischIirischSchottisch-GäälischGalizisc" + - "hGuaraniGujaratiManx-GäälischHaussaHebräischHindiHiri-MotuKroazischH" + - "aitischUngarischArmenischHereroInterlinguaIndonesischInterlingueIgbo" + - "Sezuanischs YiInupiakIdoIisländischItaliänischInukitutJapanischJavan" + - "ischGeorgischKongolesischKikuyu-SchpraachKwanyamaKasachischGröönländ" + - "ischKambodschanischKannadaKoreaanischKanuri-SchpraachKaschmirischKur" + - "dischKomi-SchpraachKornischKirgiisischLatiinLuxemburgischGanda-Schpr" + - "aachLimburgischLingalaLaozischLitauischLubaLettischMadagassischMarsc" + - "hallesischMaoriMazedonischMalayalamMongolischMarathiMalaiischMaltesi" + - "schBirmanischNauruischNord-Ndebele-SchpraachNepalesischNdongaNiderlä" + - "ndischNorwegisch NynorskNorwegisch BokmålSüüd-Ndebele-SchpraachNavaj" + - "o-SchpraachChewa-SchpraachOkzitanischOjibwa-SchpraachOromoOrijaOssez" + - "ischPandschabischPaliPolnischPaschtuPortugiisischQuechuaRätoromanisc" + - "hRundi-SchpraachRumänischRussischRuandischSanschkritSardischSindhiNo" + - "rd-SamischSangoSinghalesischSlowakischSlowenischSamoanischSchhonaSom" + - "aliAlbanischSerbischSwaziSüüd-Sotho-SchpraachSundanesischSchwedischS" + - "uaheliTamilischTeluguTadschikischThailändischTigrinjaTurkmenischTswa" + - "na-SchpraachTongaischTürkischTsongaTatarischTahitischUigurischUkrain" + - "ischUrduUsbekischVenda-SchpraachVietnamesischVolapükWallonischWolofX" + - "hosaJiddischYorubaZhuangChineesischZuluAcehAcholiAdangmeAdygaiAfrihi" + - "liAinuAkkadischAleutischSüüd-AltaischAltänglischAngikaAramääischArau" + - "kanischArapahoArawakAschturianischAwadhiBelutschischBalinesischBasaa" + - "BedauyeBembaBhodschpuriBikolischBiniBlackfoot-SchpraachBraj-BhakhaBu" + - "rjatischBugineesischBlinCaddoKariibischAtsamCebuanoTschibtschaTschag" + - "ataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheye" + - "nneKoptischKrimtatarischKaschubischTakotaTargiinischDelaware-Schpraa" + - "chSlaveyTogribTinkaTogriNidersorbischTualaMittelniderländischTiulaEf" + - "ikischAltägyptischEkajukElamischMittelänglischEwondoPangwe-Schpraach" + - "FilipinoFonMittelfranzösischAltfranzösischNordfriesischOschtfriesisc" + - "hFriulischGaGayoGbayaGeezGilbertesischMittelhochtüütschAlthochtüütsc" + - "hGondiMongondouGotischGreboAltgriechischSchwiizertüütschKutchinischH" + - "aidaHawaiianischHiligaynonischHethitischMiaoObersorbischHupaIbanisch" + - "IlokanoInguschischLojbanischJüüdisch-PersischJüüdisch-ArabischKaraka" + - "lpakischKabylischKachin-SchpraachJjuKambaKawiKabardinischTyapKoroKha" + - "sischSakischKimbundu-SchpraachKonkaniKosraeanischKpelle-SchpraachKar" + - "atschaiisch-BalkarischKarelischOraon-SchpraachKumükischKutenai-Schpr" + - "aachLadinoLahndanischLambanischLesgischMongoRotse-SchpraachLuba-Lulu" + - "aLuiseno-SchpraachLunda-SchpraachLuo-SchpraachLushai-SchpraachMadure" + - "sischKhottaMaithiliMakassarischManding-SchpraachMassai-SchpraachMoks" + - "chamordwinischMandaresischMende-SchpraachMittelirischMicmac-Schpraac" + - "hMinangkabau-SchpraachMandschurischMeithei-SchpraachMohawk-Schpraach" + - "Mossi-SchpraachMehrschpraachigMuskogee-SchpraachMirandesischMarwaris" + - "chErzyaNeapolitanischNidertüütschNewarischNias-SchpraachNiue-Schpraa" + - "chNogaischAltnordischN’KoNord-Sotho-SchpraachAlt-NewariNyamwezi-Schp" + - "raachNyankoleNyoroNzimaOsage-SchpraachOsmanischPangasinanischMittelp" + - "ersischPampanggan-SchpraachPapiamentoPalauAltpersischPhönikischPonap" + - "eanischAltprovenzalischRajasthaniOschterinsel-SchpraachRarotonganisc" + - "hZigüünerschpraachAromunischSandawe-SchpraachJakutischSamaritanischS" + - "asakSantaliSizilianischSchottischSelkupischAltirischSchan-SchpraachS" + - "idamoSüüd-SamischLule-SamischInari-SamischSkolt-SamischSoninke-Schpr" + - "aachSogdischSrananischSerer-SchpraachSukuma-SchpraachSusuSumerischAl" + - "tsyrischSyrischTemneTereno-SchpraachTetum-SchpraachTigreTiv-Schpraac" + - "hTokelauanischKlingonischTlingit-SchpraachTamaseqTsonga-SchpraachNeu" + - "melanesischTsimshian-SchpraachTumbuka-SchpraachElliceanischTuwinisch" + - "UdmurtischUgaritischMbundu-SchpraachRootVai-SchpraachWotischWalamo-S" + - "chpraachWarayWasho-SchpraachKalmückischYao-SchpraachYapesischZapotek" + - "ischBliss-SymboolZenagaZuni-SchpraachKän schpraachliche InhaltZazaÖs" + - "chtriichischs TüütschSchwiizer HochtüütschAuschtralischs ÄnglischKan" + - "adischs ÄnglischBritischs ÄnglischAmerikanischs ÄnglischLatiinamerik" + - "anischs SchpanischIbeerischs SchpanischKanadischs FranzösischSchwiiz" + - "er FranzösischFläämischBrasilianischs PortugiisischIberischs Portugi" + - "isischMoldawischSerbo-KroatischVeräifachts ChineesischTradizionells " + - "Chineesisch", - []uint16{ // 610 elements + { // es-HN + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, - 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008f, - 0x0096, 0x009d, 0x00a7, 0x00b1, 0x00bd, 0x00c5, 0x00d1, 0x00e1, - 0x00e9, 0x00f1, 0x00f5, 0x0100, 0x010d, 0x011b, 0x0124, 0x012c, - 0x0135, 0x0141, 0x014b, 0x014e, 0x0158, 0x0161, 0x016c, 0x0176, - 0x017f, 0x0187, 0x018f, 0x0192, 0x019a, 0x01a7, 0x01b1, 0x01bd, - 0x01c6, 0x01cd, 0x01e2, 0x01eb, 0x01f2, 0x01fa, 0x0209, 0x020f, - 0x0219, 0x021e, 0x0227, 0x0230, 0x0238, 0x0241, 0x024a, 0x0250, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x025b, 0x0266, 0x0271, 0x0275, 0x0283, 0x028a, 0x028d, 0x0299, - 0x02a5, 0x02ad, 0x02b6, 0x02bf, 0x02c8, 0x02d4, 0x02e4, 0x02ec, - 0x02f6, 0x0306, 0x0315, 0x031c, 0x0327, 0x0337, 0x0343, 0x034b, - 0x0359, 0x0361, 0x036c, 0x0372, 0x037f, 0x038e, 0x0399, 0x03a0, - 0x03a8, 0x03b1, 0x03b5, 0x03bd, 0x03c9, 0x03d8, 0x03dd, 0x03e8, - 0x03f1, 0x03fb, 0x0402, 0x040b, 0x0415, 0x041f, 0x0428, 0x043e, - 0x0449, 0x044f, 0x045d, 0x046f, 0x0481, 0x0499, 0x04a9, 0x04b8, - 0x04c3, 0x04d3, 0x04d8, 0x04dd, 0x04e6, 0x04f3, 0x04f7, 0x04ff, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x0506, 0x0513, 0x051a, 0x0528, 0x0537, 0x0541, 0x0549, 0x0552, - 0x055c, 0x0564, 0x056a, 0x0576, 0x057b, 0x0588, 0x0592, 0x059c, - 0x05a6, 0x05ad, 0x05b3, 0x05bc, 0x05c4, 0x05c9, 0x05df, 0x05eb, - 0x05f5, 0x05fc, 0x0605, 0x060b, 0x0617, 0x0624, 0x062c, 0x0637, - 0x0647, 0x0650, 0x0659, 0x065f, 0x0668, 0x0671, 0x067a, 0x0684, - 0x0688, 0x0691, 0x06a0, 0x06ad, 0x06b5, 0x06bf, 0x06c4, 0x06c9, - 0x06d1, 0x06d7, 0x06dd, 0x06e8, 0x06ec, 0x06f0, 0x06f6, 0x06fd, - 0x0703, 0x0703, 0x070b, 0x070b, 0x070f, 0x0718, 0x0718, 0x0721, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x0721, 0x0730, 0x073c, 0x0742, 0x074e, 0x0759, 0x0759, 0x0760, - 0x0760, 0x0766, 0x0766, 0x0766, 0x0766, 0x0766, 0x0774, 0x0774, - 0x077a, 0x0786, 0x0791, 0x0791, 0x0796, 0x0796, 0x0796, 0x0796, - 0x079d, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07ad, - 0x07b6, 0x07ba, 0x07ba, 0x07ba, 0x07cd, 0x07cd, 0x07cd, 0x07d8, - 0x07d8, 0x07d8, 0x07d8, 0x07e2, 0x07ee, 0x07ee, 0x07f2, 0x07f2, - 0x07f7, 0x0801, 0x0801, 0x0806, 0x080d, 0x080d, 0x0818, 0x0825, - 0x082f, 0x083e, 0x0845, 0x084c, 0x0855, 0x085d, 0x0865, 0x0865, - // Entry 100 - 13F - 0x086d, 0x086d, 0x087a, 0x0885, 0x088b, 0x0896, 0x0896, 0x08a8, - 0x08ae, 0x08b4, 0x08b9, 0x08b9, 0x08be, 0x08cb, 0x08cb, 0x08d0, - 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08e9, 0x08f1, 0x08f1, 0x08fe, - 0x0904, 0x090c, 0x091b, 0x091b, 0x0921, 0x0921, 0x0931, 0x0939, - 0x0939, 0x093c, 0x093c, 0x094e, 0x095d, 0x095d, 0x096a, 0x0978, - 0x0981, 0x0983, 0x0983, 0x0983, 0x0987, 0x098c, 0x098c, 0x0990, - 0x099d, 0x099d, 0x09b0, 0x09c0, 0x09c0, 0x09c5, 0x09ce, 0x09d5, - 0x09da, 0x09e7, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x0a04, 0x0a09, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0a09, 0x0a15, 0x0a15, 0x0a23, 0x0a2d, 0x0a31, 0x0a3d, 0x0a3d, - 0x0a41, 0x0a49, 0x0a49, 0x0a50, 0x0a5b, 0x0a5b, 0x0a5b, 0x0a65, - 0x0a65, 0x0a65, 0x0a78, 0x0a8b, 0x0a8b, 0x0a99, 0x0aa2, 0x0ab2, - 0x0ab5, 0x0aba, 0x0abe, 0x0aca, 0x0aca, 0x0ace, 0x0ace, 0x0ace, - 0x0ace, 0x0ad2, 0x0ad2, 0x0ada, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, - 0x0ae1, 0x0ae1, 0x0af3, 0x0af3, 0x0afa, 0x0b06, 0x0b16, 0x0b2f, - 0x0b2f, 0x0b2f, 0x0b38, 0x0b47, 0x0b47, 0x0b47, 0x0b47, 0x0b51, - 0x0b62, 0x0b68, 0x0b68, 0x0b73, 0x0b7d, 0x0b85, 0x0b85, 0x0b85, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x0b85, 0x0b85, 0x0b85, 0x0b8a, 0x0b99, 0x0b99, 0x0b99, 0x0ba3, - 0x0bb4, 0x0bc3, 0x0bd0, 0x0be0, 0x0be0, 0x0be0, 0x0be0, 0x0beb, - 0x0beb, 0x0bf1, 0x0bf9, 0x0c05, 0x0c16, 0x0c26, 0x0c26, 0x0c38, - 0x0c44, 0x0c53, 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c6f, - 0x0c84, 0x0c91, 0x0ca2, 0x0cb2, 0x0cc1, 0x0cc1, 0x0cc1, 0x0cd0, - 0x0ce2, 0x0cee, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cfd, 0x0cfd, 0x0cfd, - 0x0d0b, 0x0d0b, 0x0d19, 0x0d22, 0x0d30, 0x0d3e, 0x0d3e, 0x0d3e, - 0x0d3e, 0x0d46, 0x0d51, 0x0d51, 0x0d57, 0x0d6b, 0x0d6b, 0x0d75, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0d87, 0x0d8f, 0x0d94, 0x0d99, 0x0da8, 0x0db1, 0x0dbf, 0x0dcd, - 0x0de1, 0x0deb, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0dfb, 0x0dfb, - 0x0e06, 0x0e06, 0x0e06, 0x0e12, 0x0e12, 0x0e22, 0x0e22, 0x0e22, - 0x0e2c, 0x0e42, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e63, 0x0e63, - 0x0e63, 0x0e63, 0x0e6d, 0x0e6d, 0x0e7e, 0x0e87, 0x0e94, 0x0e94, - 0x0e99, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0eac, 0x0eb6, 0x0eb6, - 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0ec0, 0x0ec0, 0x0ec9, 0x0ec9, - 0x0ec9, 0x0ed8, 0x0ed8, 0x0ede, 0x0ede, 0x0ede, 0x0eec, 0x0ef8, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x0f05, 0x0f12, 0x0f23, 0x0f2b, 0x0f35, 0x0f44, 0x0f44, 0x0f44, - 0x0f54, 0x0f58, 0x0f61, 0x0f61, 0x0f6b, 0x0f72, 0x0f72, 0x0f72, - 0x0f77, 0x0f77, 0x0f87, 0x0f96, 0x0f9b, 0x0fa8, 0x0fb5, 0x0fb5, - 0x0fc0, 0x0fd1, 0x0fd1, 0x0fd8, 0x0fe8, 0x0ff6, 0x0ff6, 0x0ff6, - 0x0ff6, 0x1009, 0x1009, 0x101a, 0x1026, 0x1026, 0x102f, 0x102f, - 0x1039, 0x1043, 0x1053, 0x1057, 0x1064, 0x1064, 0x1064, 0x1064, - 0x1064, 0x106b, 0x106b, 0x106b, 0x106b, 0x107b, 0x1080, 0x108f, - 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, 0x10a8, 0x10b1, 0x10b1, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x10b1, 0x10b1, 0x10b1, 0x10bc, 0x10c9, 0x10c9, 0x10cf, 0x10cf, - 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x10fb, 0x1115, 0x112c, 0x1144, - 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, 0x11b5, 0x11b5, 0x11cc, - 0x11e2, 0x11e2, 0x11ed, 0x1209, 0x1220, 0x122a, 0x1239, 0x1239, - 0x1251, 0x126a, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // gu - guLangStr, - guLangIdx, - }, - { // guz - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluEkegusii", - []uint16{ // 318 elements + { // es-MX + "bashkireuskeralaopunyabíkiroundisiswatisuajiliwolofacehnésarapahobasabam" + + "unbhojpurineerlandés medievalinglés medievalfrancés medievalgan (Chi" + + "na)alemán de la alta edad mediagriego antiguokejia (China)xiang (Chi" + + "na)irlandés medievalmin nan (Chino)sotho septentrionalárabe chadiano" + + "tamazight marroquí estándarsuajili del Congo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0019, 0x0019, 0x0019, // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0028, 0x0028, 0x0028, + 0x0028, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0047, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, + 0x0068, 0x0068, 0x0068, 0x0068, 0x0078, 0x0078, 0x0078, 0x0078, + 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00b1, 0x00b1, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + // Entry 140 - 17F + 0x00bf, 0x00bf, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00cc, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + // Entry 180 - 1BF + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00eb, 0x00eb, + 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, + 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, + 0x00eb, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, + 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x010d, + // Entry 1C0 - 1FF + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x011c, 0x011c, 0x011c, + // Entry 200 - 23F + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + // Entry 240 - 27F + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, + 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, + 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, + 0x0139, 0x0139, 0x014a, }, }, - { // gv - "Gaelg", - []uint16{ // 55 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + { // es-NI + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements + // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, - }, - }, - { // ha - "AkanAmharikLarabciBelarusanciBulgaranciBengaliHarshen CakJamusanciGirkan" + - "ciTuranciIspaniyanciParisanciFaransanciHausaHarshen HindiHarshen Hun" + - "gariHarshen IndunusiyaInyamuranciItaliyanciJapananciJabananciHarshen" + - " KimarHarshen KoreyaHarshen MalaiBurmanciNepaliHolanciPunjabiHarshen" + - " PolanHarshen PortugalRomaniyanciRashanciKiniyaruwandaSomaliHarshen " + - "SuwedanTamilThaiHarshen TurkiyyaHarshen YukurenHarshen UrduHarshen B" + - "iyetinamYarbanciHarshen SinHarshen Zulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0027, - 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0051, 0x0051, 0x005c, - 0x005c, 0x005c, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0074, - 0x0074, 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x0090, 0x00a2, 0x00a2, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00b7, 0x00b7, 0x00c0, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, - 0x00c9, 0x00c9, 0x00d6, 0x00d6, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00f1, 0x00f1, 0x00f9, 0x00f9, 0x00f9, - 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x011a, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x011a, 0x012a, 0x012a, 0x012a, 0x012a, 0x0135, 0x013d, 0x014a, - 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, - 0x014a, 0x014a, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, - 0x015f, 0x015f, 0x0164, 0x0164, 0x0164, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0187, - 0x0193, 0x0193, 0x0193, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01c3, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry C0 - FF + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + // Entry 140 - 17F + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + // Entry 180 - 1BF + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, + // Entry 1C0 - 1FF + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 200 - 23F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 240 - 27F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // haw - "ʻAlapiaWaleKenemakaKelemāniaHelenePelekāniaPanioloPīkīPalaniʻAilikiHeber" + - "aʻĪkāliaKepanīKōleaLākinaMāoriHōlaniPukikīLūkiaKāmoaKuekeneTongaPola" + - "polaWiekanamaPākēKuikilani KelemāniaʻŌlelo HawaiʻiʻIke ʻole ‘ia a kū" + - "pono ʻole paha ka ʻōleloPelekāne Nū HōlaniPelekāne KanakāPelekānia P" + - "ekekānePelekānia ʻAmelikaPalani KanakāKuikilaniPukikī PalakilaPākē H" + - "oʻomaʻalahi ʻiaPākē Kuʻuna", - []uint16{ // 610 elements + { // es-PA + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000c, 0x0014, - 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, 0x002e, 0x002e, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x0041, - 0x0041, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x0059, 0x0059, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x007a, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1, - 0x00a1, 0x00a1, 0x00a1, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, // Entry 100 - 13F - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x00c4, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - // Entry 200 - 23F - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 200 - 23F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x011c, - 0x012d, 0x0141, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0163, - 0x016c, 0x016c, 0x016c, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, - 0x0196, 0x01a4, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // he - heLangStr, - heLangIdx, - }, - { // hi - hiLangStr, - hiLangIdx, - }, - { // hr - hrLangStr, - hrLangIdx, - }, - { // hsb - "afaršćinaabchazišćinaafrikaanšćinaakanšćinaamharšćinaaragonšćinaarabšćin" + - "aasamšćinaawaršćinaaymaršćinaazerbajdźanšćinabaškiršćinaběłorušćinab" + - "ołharšćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišći" + - "nakatalanšćinačamoršćinakorsišćinakričěšćinawalizišćinadanšćinaněmči" + - "nadivehidzongkhaewegrjekšćinajendźelšćinaesperantošpanišćinaestišćin" + - "abaskišćinapersišćinafinšćinafidźišćinafäröšćinafrancošćinafrizišćin" + - "airšćinašotiska gelšćinagalicišćinaguaranigujaratimanšćinahausahebre" + - "jšćinahindišćinachorwatšćinahaitišćinamadźaršćinaarmenšćinainterling" + - "uaindonešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinaj" + - "apanšćinajavašćinageorgišćinakikuyukazachšćinagröndlandšćinakhmeršći" + - "nakannadšćinakorejšćinakašmiršćinakurdišćinakornišćinakirgišćinałaćo" + - "nšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinalub" + - "a-katangaletišćinamalagassišćinamaoršćinamakedonšćinamalajamšćinamon" + - "golšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinasewjero-n" + - "debelenepalšćinanižozemšćinanorwegšćina (nynorsk)norwegšćina (bokmål" + - ")navahookcitanšćinaoromoorijšćinapandźabšćinapólšćinapaštunšćinaport" + - "ugalšćinakečuaretoromanšćinakirundišćinarumunšćinarušćinakinjarwanda" + - "sanskritsardinšćinasindhišćinasewjerosamišćinasangosinghalšćinasłowa" + - "kšćinasłowjenšćinasamoašćinašonašćinasomališćinaalbanšćinaserbišćina" + - "siswatijužnosotšćina (Sesotho)sundanezišćinašwedšćinasuahelšćinatami" + - "lšćinatelugutadźikšćinathailandšćinatigrinšćinaturkmenšćinatswanaton" + - "gašćinaturkowšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaur" + - "dušćinauzbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajor" + - "ubašćinazhuangchinšćinazulušćinaaghemšćinaanglosakšćinaarawkanšćinap" + - "areasturšćinabembabenabodobuginezišćinachigachoctawšćinacherokeesora" + - "nitaitazarmadelnjoserbšćinadualajola-fonyiembufilipinšćinagagauzišći" + - "nagotšćinašwicarska němčinagusiihawaiišćinahornjoserbšćinangombamach" + - "amekabylšćinakambamakondekapverdšćinakoyra chiinikalenjinpermska kom" + - "išćinakonkanišambalabafialangilakotaluoluhyamasaišćinamerumauriciska" + - " kreolšćinamakhuwa-meettometa’mohawkšćinamundangkriknamadelnjoněmčin" + - "akwasion’konuernyankoleprušćinakʼicheʼromborwasamburusangusicilšćina" + - "senakoyra sennitašelhitjužnosamišćinalule-samišćinainari-samišćinask" + - "olt-samišćinasaterfrizišćinatesotasawaqtamazight (srjedźny Marokko)n" + - "jeznata rěčvaivunjosogatamazightžadyn rěčny wobsahmoderna wysokoarab" + - "šćinaawstriska němčinašwicarska wysokoněmčinaawstralska jendźelšćin" + - "akanadiska jendźelšćinabritiska jendźelšćinaameriska jendźelšćinałać" + - "onskoameriska španišćinaeuropska španišćinamexiska španišćinakanadis" + - "ka francošćinašwicarska francošćinaflamšćinabrazilska portugalšćinae" + - "uropska portugalšćinamoldawšćinaserbochorwatšćinakongoska suahelšćin" + - "achinšćina (zjednorjena)chinšćina (tradicionalna)", - []uint16{ // 610 elements + { // es-PE + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x000b, 0x0019, 0x0019, 0x0028, 0x0033, 0x003f, 0x004c, - 0x0057, 0x0062, 0x006d, 0x0079, 0x008c, 0x009a, 0x00a9, 0x00b7, - 0x00c4, 0x00cb, 0x00d8, 0x00e4, 0x00f1, 0x00fd, 0x010b, 0x010b, - 0x0118, 0x0124, 0x0127, 0x0132, 0x0132, 0x0132, 0x013f, 0x0149, - 0x0152, 0x0158, 0x0160, 0x0163, 0x016f, 0x017e, 0x0187, 0x0194, - 0x019f, 0x01ab, 0x01b7, 0x01b7, 0x01c1, 0x01ce, 0x01db, 0x01e8, - 0x01f4, 0x01fd, 0x0210, 0x021d, 0x0224, 0x022c, 0x0236, 0x023b, - 0x0248, 0x0254, 0x0254, 0x0262, 0x026e, 0x027c, 0x0288, 0x0288, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x0293, 0x02a0, 0x02a0, 0x02a4, 0x02ae, 0x02b5, 0x02b8, 0x02c5, - 0x02d0, 0x02dc, 0x02e8, 0x02f3, 0x0300, 0x0300, 0x0306, 0x0306, - 0x0313, 0x0324, 0x0330, 0x033d, 0x0349, 0x0349, 0x0357, 0x0363, - 0x0363, 0x036f, 0x037b, 0x0389, 0x0399, 0x03a4, 0x03b1, 0x03b8, - 0x03c2, 0x03ce, 0x03da, 0x03e5, 0x03f5, 0x03f5, 0x0400, 0x040e, - 0x041c, 0x0429, 0x0436, 0x0442, 0x044e, 0x045a, 0x0466, 0x0475, - 0x0481, 0x0481, 0x0490, 0x04a7, 0x04be, 0x04be, 0x04c4, 0x04c4, - 0x04d2, 0x04d2, 0x04d7, 0x04e2, 0x04e2, 0x04f1, 0x04f1, 0x04fc, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x050a, 0x0519, 0x051f, 0x052f, 0x053d, 0x0549, 0x0552, 0x055d, - 0x0565, 0x0572, 0x057f, 0x0591, 0x0596, 0x05a4, 0x05b2, 0x05c1, - 0x05cd, 0x05d9, 0x05e6, 0x05f2, 0x05fe, 0x0605, 0x061f, 0x062f, - 0x063b, 0x0648, 0x0654, 0x065a, 0x0668, 0x0677, 0x0684, 0x0692, - 0x0698, 0x06a4, 0x06b1, 0x06b7, 0x06c3, 0x06d0, 0x06dc, 0x06e9, - 0x06f4, 0x0700, 0x0700, 0x070e, 0x0716, 0x0722, 0x0727, 0x072c, - 0x0737, 0x0744, 0x074a, 0x0755, 0x0760, 0x0760, 0x0760, 0x0760, - 0x0760, 0x0760, 0x0760, 0x076c, 0x076c, 0x076c, 0x076c, 0x076c, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x076c, 0x076c, 0x077b, 0x077b, 0x077b, 0x0789, 0x0789, 0x0789, - 0x0789, 0x0789, 0x0789, 0x0789, 0x078d, 0x078d, 0x0799, 0x0799, - 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, - 0x0799, 0x079e, 0x079e, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, - 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, - 0x07a2, 0x07a6, 0x07a6, 0x07a6, 0x07b5, 0x07b5, 0x07b5, 0x07b5, - 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07ba, 0x07ba, 0x07ba, - 0x07ba, 0x07ba, 0x07ba, 0x07c8, 0x07c8, 0x07d0, 0x07d0, 0x07d6, - // Entry 100 - 13F - 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07db, 0x07db, - 0x07db, 0x07db, 0x07db, 0x07e0, 0x07e0, 0x07f1, 0x07f1, 0x07f6, - 0x07f6, 0x0800, 0x0800, 0x0800, 0x0804, 0x0804, 0x0804, 0x0804, - 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0812, - 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, - 0x0812, 0x0812, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, - 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x082a, - 0x082a, 0x082a, 0x083e, 0x083e, 0x083e, 0x0843, 0x0843, 0x0843, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + // Entry 100 - 13F + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0843, 0x0850, 0x0850, 0x0850, 0x0850, 0x0850, 0x0861, 0x0861, - 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, - 0x0867, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x087a, 0x087a, - 0x087a, 0x087f, 0x087f, 0x087f, 0x087f, 0x087f, 0x0886, 0x0894, - 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, 0x08a0, 0x08a0, 0x08a0, - 0x08a0, 0x08a8, 0x08a8, 0x08bb, 0x08c2, 0x08c2, 0x08c2, 0x08c2, - 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08ca, 0x08cf, 0x08cf, 0x08cf, - 0x08cf, 0x08cf, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x08d4, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, - 0x08da, 0x08da, 0x08dd, 0x08dd, 0x08e2, 0x08e2, 0x08e2, 0x08e2, - 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08ee, 0x08ee, 0x08ee, - 0x08ee, 0x08ee, 0x08f2, 0x0909, 0x0909, 0x0917, 0x091e, 0x091e, - 0x091e, 0x091e, 0x091e, 0x092b, 0x092b, 0x092b, 0x0932, 0x0932, - 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, - 0x0936, 0x093a, 0x0949, 0x0949, 0x0949, 0x0949, 0x0949, 0x094f, - 0x094f, 0x094f, 0x094f, 0x094f, 0x0955, 0x0955, 0x0959, 0x0959, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0959, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, - 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, - 0x0961, 0x0961, 0x0961, 0x0961, 0x096b, 0x096b, 0x0974, 0x0974, - 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, 0x0979, 0x0979, 0x0979, - 0x0979, 0x0979, 0x0979, 0x097c, 0x097c, 0x097c, 0x097c, 0x0983, - 0x0983, 0x0983, 0x0983, 0x0983, 0x0988, 0x0994, 0x0994, 0x0994, - 0x0994, 0x0994, 0x0998, 0x0998, 0x0998, 0x09a3, 0x09a3, 0x09a3, - 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09bd, 0x09cd, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x09de, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x0a00, - 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, - 0x0a00, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, - 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, - 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a0b, 0x0a0b, 0x0a28, - 0x0a28, 0x0a28, 0x0a28, 0x0a36, 0x0a39, 0x0a39, 0x0a39, 0x0a39, - 0x0a39, 0x0a39, 0x0a39, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, - 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a42, 0x0a42, 0x0a42, 0x0a42, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a4b, - 0x0a4b, 0x0a60, 0x0a60, 0x0a79, 0x0a79, 0x0a8c, 0x0aa6, 0x0ac0, - 0x0ad9, 0x0af1, 0x0b09, 0x0b29, 0x0b3f, 0x0b54, 0x0b54, 0x0b6b, - 0x0b83, 0x0b83, 0x0b8e, 0x0ba7, 0x0bbf, 0x0bcc, 0x0bdf, 0x0bf5, - 0x0c0e, 0x0c29, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // hu - huLangStr, - huLangIdx, - }, - { // hy - hyLangStr, - hyLangIdx, - }, - { // id - idLangStr, - idLangIdx, - }, - { // ig - "AkanAmariikịArabiikịBelaruusuBọlụgarịaBengaliCheekịJamaanGiriikịOyiboPan" + - "yaPeshanFụrenchAwụsaHindiMagịyaIndonisiaIgboItaloJapaneseJavaKeme, E" + - "titiKoriaMaleyiMịanmaNepaliDọọchPunjabiPoliishiPotokiRumeniaRọshanRụ" + - "wandaSomaliSụwidiishiTamụlụTaịTọkiishiUkureenịUruduViyetịnaamụYoruba" + - "MandarịịnịZulu", - []uint16{ // 181 elements + { // es-PR + "siswatiwolofacehnésarapahobhojpurigriego antiguosotho septentrional", + []uint16{ // 448 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000e, 0x000e, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0030, - 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x0045, 0x0045, 0x0045, 0x0045, 0x004e, 0x0053, 0x0053, 0x0058, - 0x0058, 0x0058, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0067, - 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x006e, - 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007b, 0x007b, 0x007b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x007b, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, - 0x008d, 0x008d, 0x0095, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, - 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00b7, 0x00b7, - 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, - 0x0105, 0x0105, 0x010f, 0x010f, 0x010f, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, - 0x012d, 0x012d, 0x012d, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x0142, 0x0142, 0x0152, 0x0156, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + // Entry 100 - 13F + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + // Entry 140 - 17F + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + // Entry 180 - 1BF + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0044, }, }, - { // ii - "ꄓꇩꉙꑱꇩꉙꑭꀠꑸꉙꃔꇩꉙꆈꌠꉙꑴꄊꆺꉙꏝꀪꉙꁍꄨꑸꉙꊉꇩꉙꍏꇩꉙꅉꀋꌠꅇꂷꀠꑟꁍꄨꑸꉙꈝꐯꍏꇩꉙꀎꋏꍏꇩꉙ", - []uint16{ // 610 elements + { // es-PY + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0012, 0x0012, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x0027, 0x0027, 0x0027, 0x0027, 0x0030, 0x0030, 0x0030, 0x0030, - 0x003c, 0x003c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, // Entry 100 - 13F - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 180 - 1BF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, // Entry 1C0 - 1FF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 200 - 23F - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 240 - 27F - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0093, 0x00a2, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // is - isLangStr, - isLangIdx, - }, - { // it - itLangStr, - itLangIdx, - }, - { // ja - jaLangStr, - jaLangIdx, - }, - { // jgo - "AlâbɛNjámanŊgɛlɛ̂kAŋgɛlúshiFɛlánciShinwâNdaꞌacú-pʉɔ yi pɛ́ ká kɛ́ jí", - []uint16{ // 556 elements + { // es-SV + "siswatiwolofacehnésarapahobhojpurigriego antiguosotho septentrional", + []uint16{ // 448 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000e, 0x000e, 0x000e, 0x000e, 0x0019, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, // Entry 100 - 13F - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, // Entry 140 - 17F - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, // Entry 180 - 1BF - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 1C0 - 1FF - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 200 - 23F - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x005c, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0044, }, }, - { // jmc - "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + - "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + - "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + - "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + - "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + - "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKim" + - "achame", - []uint16{ // 338 elements + { // es-US + "kiroundisiswatisetchwanawolofacehnésarapahobasabamunbhojpuriburiatneerla" + + "ndés medievalinglés medievalfrancés medievalalemán de la alta edad m" + + "ediagriego antiguohakalto sorbiocriollo caboverdianolushaiirlandés m" + + "edievalnansotho septentrionalpcmárabe chadianowuuswahili del Congo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, - 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, - 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, - 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0030, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x003d, 0x003d, 0x003d, 0x003d, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0043, 0x0043, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0067, 0x0067, 0x0067, 0x0067, + 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0078, 0x0078, 0x0078, + 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, + 0x0078, 0x0078, 0x0078, 0x0078, 0x0095, 0x0095, 0x0095, 0x0095, + 0x0095, 0x0095, 0x0095, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00a3, // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x01a2, + 0x00a3, 0x00a3, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, + 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + // Entry 180 - 1BF + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00dd, 0x00dd, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00dd, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00f3, + // Entry 1C0 - 1FF + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x0105, 0x0105, 0x0105, + // Entry 200 - 23F + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0108, 0x0108, 0x0108, 0x0108, + // Entry 240 - 27F + 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, + 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, + 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, + 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, + 0x0108, 0x0108, 0x0119, }, }, - { // ka - kaLangStr, - kaLangIdx, - }, - { // kab - "TakanitTamahrictTaɛrabtTabilarusitTabulgaritTabengalitTačikitTalmantTagr" + - "ikitTaglizitTaspenyulitTafarisitTafransistTahwasitTahenditTahungarit" + - "TandunisitTigbutTaṭalyanitTajapunitTajavanitTakemritTakuritTamalawit" + - "TaburmisitTanipalitTadučitTapunjabitTapulunitTapurtugalitTarumanitTa" + - "rusitTaruwanditTaṣumalitTaswiditTaṭamulitTaṭaylunditTaṭurkitTukranit" + - "TurdutTabyiṭnamitTayurubitTacinwat, TamundarintTazulutTaqbaylit", - []uint16{ // 343 elements + { // es-VE + "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + + " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + + "ngo", + []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0023, 0x002d, - 0x002d, 0x002d, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0056, 0x0056, 0x0061, - 0x0061, 0x0061, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x007c, - 0x007c, 0x0084, 0x0084, 0x0084, 0x0084, 0x008e, 0x008e, 0x008e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 40 - 7F - 0x008e, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, - 0x00aa, 0x00aa, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00d4, 0x00d4, 0x00de, 0x00de, 0x00de, - 0x00e7, 0x00e7, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f9, 0x00f9, 0x0102, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, // Entry 80 - BF - 0x0102, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x011e, 0x0128, - 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, - 0x0128, 0x0128, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, - 0x013b, 0x013b, 0x0146, 0x0146, 0x0146, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, 0x0165, - 0x016b, 0x016b, 0x016b, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0181, 0x0181, 0x0196, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, // Entry 100 - 13F - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, // Entry 140 - 17F - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01a6, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + // Entry 180 - 1BF + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0065, + // Entry 1C0 - 1FF + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 200 - 23F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + // Entry 240 - 27F + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0093, }, }, - { // kam - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKikamba", - []uint16{ // 346 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + { // et + etLangStr, + etLangIdx, + }, + { // eu + "afareraabkhazeraafrikaansaakaneraamhareraaragoieraarabieraassameraavarer" + + "aaimaraazerbaijanerabashkirrerabielorrusierabulgarierabislamabambare" + + "rabengaleratibeterabretoierabosnierakatalanatxetxenierachamorrerakor" + + "sikeratxekieraElizako eslavierachuvasheragaleseradanieraalemanadiveh" + + "ieradzongkhaeweeragrezieraingelesaesperantoaespainieraestonieraeuska" + + "rapersierafulafinlandierafijierafaroerafrantsesafrisieragaelikoaesko" + + "ziako gaelikoagalizieraguaranieragujarateramanxerahausahebreerahindi" + + "akroazieraHaitiko kreolerahungarieraarmenierahererainterlinguaindone" + + "sierainterlingueigboerasichuan yiaidoislandieraitalierainuiterajapon" + + "ierajaverageorgierakikongoakikuyuerakuanyamakazakherakalaallisuterak" + + "hemererakannaderakoreerakanurierakashmirerakurduerakomierakornubiera" + + "kirgizeralatinaluxenburgeraganderalimburgeralingalalaoseralituaniera" + + "luba-katangeraletonieramalagasyeramarshalleramaorieramazedonieramala" + + "yalameramongolieramaratheramalaysieramalteraburmatarranaurueraiparra" + + "ldeko ndebeleeranepalerandongeranederlanderanynorsk norvegierabokmal" + + "a (Norvegia)hegoaldeko ndebeleranavahoeranyanjaokzitanieraoromoeraor" + + "iyaosetierapunjaberapolonierapaxtueraportugesaquechueraerromantxerar" + + "undieraerrumanieraerrusierakinyaruandasanskritoasardinierasindhiaipa" + + "rraldeko samierasangoerasinhalaeslovakieraeslovenierasamoerashoneras" + + "omalieraalbanieraserbieraswatierahegoaldeko sothoerasundanerasuedier" + + "aswahilitamileratelugueratajikistanerathailandieratigriñeraturkmenie" + + "ratswaneratongeraturkieratsongeratatareratahitierauigurreraukrainera" + + "urduauzbekeravenderavietnameravolapükavalonierawoloferaxhoserayiddis" + + "hayoruberatxinerazulueraacehneraacholieraadangmeraadygheraaghemeraai" + + "nueraaleuterahegoaldeko altaieraangikeramaputxeaarapahoaasuaasturier" + + "aawadhierabalierabasaabemberabenerabhojpureraedoerasiksikerabodoerab" + + "uginerabilenacebuerachigerachuukeramarierachoctawtxerokieracheyenner" + + "asoraniaseselwa frantses-kreoleradakoteradargverataiteradogriberazar" + + "merabehe-sorabieradualerafonyi joleradazagaembuaefikeraakajukaewonde" + + "ratagalogafonafriulieragagagauzerage’ezgilberteragorontaloaalemana (" + + "Suitza)gusiieragwichʼinhawaiierahiligainonahmonggoi-sorabierahuperai" + + "baneraibibioerailokaneraingusheralojbanerangombamachamerakabilerajin" + + "gpoerakaijikamberakabardierakatabamakonderaCabo Verdeko kreolakoroak" + + "ashiakoyra chiinierakakoakalenjinerakimbunduakomi-permyakerakonkanie" + + "rakpelleakarachayera-balkarerakarelierakurukherashambalerabafierakol" + + "onierakumykeraladineralangieralezgieralakoteralozieraiparraldeko lur" + + "eratxiluberalunderaluoeramizoaluhyeramadureramagahieramaithileramaka" + + "sareramasaieramokxeramendeeramerueraMauritaniako kreoleramakhuwa-mee" + + "ttoerameteramikmakeraminangkabaueramanipureramohawkeramoreeramudange" + + "rahizkuntza anitzakcreeramiranderaerzieramazandaranderanapolieraname" + + "ranewareraniasaniuerakwasierangiembooneranogaieran’koerapedieranuere" + + "raankolerapangasinanerapampangerapapiamentoapalaueraNigeriako pidgin" + + "aprusierak’iche’rarapa nuirarotongeraromboeraaromaniarwaerasandaweas" + + "akherasamburuerasantalerangambayerasanguerasizilieraeskozierasenerak" + + "oyraboro senniatachelhitashanerahegoaldeko samieralule samierainari-" + + "samieraskolt samierasoninkerasrananerasahoasukumerakomoreeraasiriera" + + "temneatesoeratetumatigreaklingoneratok pisinatarokoatumbukeratuvalue" + + "ratasawaqatuveraMaroko erdialdeko tamazightaudmurteraumbundueraerroa" + + "vaieravunjoawalsererawelaytasamererakalmykerasogerajangbenerayembaka" + + "ntoneratamazight estandarrazuñiaez dago eduki linguistikorikzazakiaa" + + "rabiera moderno estandarraAustriako alemanaaleman garaia (Suitza)Aus" + + "traliako ingelesaKanadako ingelesaBritainia Handiko ingelesaAEBko in" + + "gelesaLatinoamerikako espainieraespainiera (Europa)Mexikoko espainie" + + "raKanadako frantsesaSuitzako frantsesabehe-saxoieraflandrieraBrasilg" + + "o portugesaportugesa (Europa)moldavieraserbokroazieraKongoko swahili" + + "atxinera soilduatxinera tradizionala", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0007, 0x0010, 0x0010, 0x001a, 0x0021, 0x0029, 0x0032, + 0x003a, 0x0042, 0x0049, 0x004f, 0x005c, 0x0067, 0x0074, 0x007e, + 0x0085, 0x008e, 0x0097, 0x009f, 0x00a8, 0x00b0, 0x00b8, 0x00c3, + 0x00cd, 0x00d6, 0x00d6, 0x00de, 0x00ef, 0x00f9, 0x0101, 0x0108, + 0x010f, 0x0118, 0x0120, 0x0126, 0x012e, 0x0136, 0x0140, 0x014a, + 0x0153, 0x015a, 0x0162, 0x0166, 0x0171, 0x0178, 0x017f, 0x0188, + 0x0190, 0x0198, 0x01aa, 0x01b3, 0x01bd, 0x01c7, 0x01ce, 0x01d3, + 0x01db, 0x01e1, 0x01e1, 0x01ea, 0x01fa, 0x0204, 0x020d, 0x0213, + // Entry 40 - 7F + 0x021e, 0x0229, 0x0234, 0x023b, 0x0246, 0x0246, 0x0249, 0x0253, + 0x025b, 0x0263, 0x026c, 0x0272, 0x027b, 0x0283, 0x028c, 0x0294, + 0x029d, 0x02ab, 0x02b4, 0x02bd, 0x02c4, 0x02cd, 0x02d7, 0x02df, + 0x02e6, 0x02f0, 0x02f9, 0x02ff, 0x030b, 0x0312, 0x031c, 0x0323, + 0x032a, 0x0334, 0x0342, 0x034b, 0x0356, 0x0361, 0x0369, 0x0374, + 0x0380, 0x038a, 0x0393, 0x039d, 0x03a4, 0x03ae, 0x03b6, 0x03cc, + 0x03d4, 0x03dc, 0x03e8, 0x03fa, 0x040c, 0x0420, 0x0429, 0x042f, + 0x043a, 0x043a, 0x0442, 0x0447, 0x044f, 0x0458, 0x0458, 0x0461, + // Entry 80 - BF + 0x0469, 0x0472, 0x047b, 0x0487, 0x048f, 0x049a, 0x04a3, 0x04ae, + 0x04b8, 0x04c2, 0x04c9, 0x04dc, 0x04e4, 0x04eb, 0x04f6, 0x0501, + 0x0508, 0x050f, 0x0518, 0x0521, 0x0529, 0x0531, 0x0544, 0x054d, + 0x0555, 0x055c, 0x0564, 0x056d, 0x057a, 0x0586, 0x0590, 0x059b, + 0x05a3, 0x05aa, 0x05b2, 0x05ba, 0x05c2, 0x05cb, 0x05d4, 0x05dd, + 0x05e2, 0x05ea, 0x05f1, 0x05fb, 0x0604, 0x060d, 0x0615, 0x061c, + 0x0624, 0x062c, 0x062c, 0x0633, 0x063a, 0x0642, 0x064b, 0x0654, + 0x065c, 0x065c, 0x065c, 0x0664, 0x066b, 0x066b, 0x066b, 0x0673, // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0673, 0x0686, 0x0686, 0x068e, 0x068e, 0x0696, 0x0696, 0x069e, + 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x06a2, 0x06a2, 0x06ab, + 0x06ab, 0x06b4, 0x06b4, 0x06bb, 0x06bb, 0x06c0, 0x06c0, 0x06c0, + 0x06c0, 0x06c0, 0x06c7, 0x06c7, 0x06cd, 0x06cd, 0x06cd, 0x06cd, + 0x06d7, 0x06d7, 0x06dd, 0x06dd, 0x06dd, 0x06e6, 0x06e6, 0x06e6, + 0x06e6, 0x06e6, 0x06ed, 0x06ed, 0x06ed, 0x06f5, 0x06f5, 0x06fb, + 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x0702, 0x0709, 0x0709, + 0x0709, 0x0711, 0x0718, 0x0718, 0x071f, 0x071f, 0x0729, 0x0733, // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x073a, 0x073a, 0x073a, 0x073a, 0x0753, 0x0753, 0x075b, 0x0763, + 0x076a, 0x076a, 0x076a, 0x0773, 0x0773, 0x077a, 0x077a, 0x0788, + 0x0788, 0x078f, 0x078f, 0x079b, 0x079b, 0x07a1, 0x07a6, 0x07ad, + 0x07ad, 0x07ad, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07bc, 0x07bc, + 0x07bc, 0x07c4, 0x07c4, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, + 0x07c8, 0x07c8, 0x07d1, 0x07d3, 0x07dc, 0x07dc, 0x07dc, 0x07dc, + 0x07dc, 0x07e3, 0x07ed, 0x07ed, 0x07ed, 0x07ed, 0x07ed, 0x07ed, + 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x0807, 0x0807, 0x0807, 0x080f, // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0170, + 0x0818, 0x0818, 0x0818, 0x0821, 0x0821, 0x082c, 0x082c, 0x0831, + 0x083e, 0x083e, 0x0844, 0x084b, 0x0854, 0x085d, 0x0866, 0x0866, + 0x0866, 0x086f, 0x0875, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, + 0x0886, 0x088f, 0x0894, 0x089b, 0x089b, 0x08a5, 0x08a5, 0x08ab, + 0x08b4, 0x08c7, 0x08c7, 0x08cc, 0x08cc, 0x08d2, 0x08d2, 0x08e1, + 0x08e1, 0x08e1, 0x08e6, 0x08f1, 0x08fa, 0x0909, 0x0913, 0x0913, + 0x091a, 0x092f, 0x092f, 0x092f, 0x0938, 0x0941, 0x094b, 0x0952, + 0x095b, 0x0963, 0x0963, 0x096b, 0x0973, 0x0973, 0x0973, 0x097b, + // Entry 180 - 1BF + 0x097b, 0x097b, 0x097b, 0x0983, 0x0983, 0x0983, 0x098a, 0x099c, + 0x099c, 0x09a5, 0x09a5, 0x09ac, 0x09b2, 0x09b7, 0x09be, 0x09be, + 0x09be, 0x09c6, 0x09c6, 0x09cf, 0x09d9, 0x09e3, 0x09e3, 0x09eb, + 0x09eb, 0x09f2, 0x09f2, 0x09fa, 0x0a01, 0x0a16, 0x0a16, 0x0a27, + 0x0a2d, 0x0a36, 0x0a44, 0x0a44, 0x0a4e, 0x0a57, 0x0a5e, 0x0a5e, + 0x0a67, 0x0a78, 0x0a7e, 0x0a87, 0x0a87, 0x0a87, 0x0a87, 0x0a8e, + 0x0a9c, 0x0a9c, 0x0aa5, 0x0aab, 0x0aab, 0x0ab3, 0x0ab8, 0x0abe, + 0x0abe, 0x0ac6, 0x0ad2, 0x0ada, 0x0ada, 0x0ada, 0x0ae3, 0x0aea, + // Entry 1C0 - 1FF + 0x0af1, 0x0af1, 0x0af1, 0x0af9, 0x0af9, 0x0af9, 0x0af9, 0x0af9, + 0x0b06, 0x0b06, 0x0b10, 0x0b1b, 0x0b23, 0x0b23, 0x0b34, 0x0b34, + 0x0b34, 0x0b34, 0x0b34, 0x0b34, 0x0b34, 0x0b34, 0x0b34, 0x0b3c, + 0x0b3c, 0x0b49, 0x0b49, 0x0b49, 0x0b51, 0x0b5c, 0x0b5c, 0x0b5c, + 0x0b64, 0x0b64, 0x0b64, 0x0b64, 0x0b64, 0x0b6c, 0x0b72, 0x0b7a, + 0x0b81, 0x0b81, 0x0b8b, 0x0b8b, 0x0b94, 0x0b94, 0x0b9e, 0x0ba6, + 0x0baf, 0x0bb8, 0x0bb8, 0x0bb8, 0x0bb8, 0x0bbe, 0x0bbe, 0x0bbe, + 0x0bce, 0x0bce, 0x0bce, 0x0bd8, 0x0bdf, 0x0bdf, 0x0bdf, 0x0bdf, + // Entry 200 - 23F + 0x0bdf, 0x0bf1, 0x0bfd, 0x0c0a, 0x0c17, 0x0c20, 0x0c20, 0x0c29, + 0x0c29, 0x0c2e, 0x0c2e, 0x0c36, 0x0c36, 0x0c36, 0x0c3f, 0x0c3f, + 0x0c47, 0x0c47, 0x0c47, 0x0c4d, 0x0c54, 0x0c54, 0x0c5a, 0x0c60, + 0x0c60, 0x0c60, 0x0c60, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c6a, + 0x0c74, 0x0c74, 0x0c7b, 0x0c7b, 0x0c7b, 0x0c7b, 0x0c84, 0x0c8d, + 0x0c95, 0x0c9b, 0x0cb7, 0x0cc0, 0x0cc0, 0x0cca, 0x0ccf, 0x0cd5, + 0x0cd5, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cdb, 0x0ce4, + 0x0ceb, 0x0cf3, 0x0cf3, 0x0cf3, 0x0cf3, 0x0cfc, 0x0cfc, 0x0d02, + // Entry 240 - 27F + 0x0d02, 0x0d02, 0x0d0c, 0x0d11, 0x0d11, 0x0d1a, 0x0d1a, 0x0d1a, + 0x0d1a, 0x0d1a, 0x0d2e, 0x0d34, 0x0d50, 0x0d57, 0x0d72, 0x0d72, + 0x0d83, 0x0d99, 0x0dad, 0x0dbe, 0x0dd8, 0x0de6, 0x0e00, 0x0e13, + 0x0e26, 0x0e26, 0x0e38, 0x0e4a, 0x0e57, 0x0e61, 0x0e73, 0x0e85, + 0x0e8f, 0x0e9d, 0x0ead, 0x0ebc, 0x0ed0, }, }, - { // kde - "ChakanChamhaliChalabuChibelalusiChibulgaliaChibanglaChichechiChidyeluman" + - "iChigilichiChiingelezaChihispaniaChiajemiChifalansaChihausaChihindiC" + - "hihungaliChiiongonesiaChiigboChiitalianoChidyapaniChidyavaChikambodi" + - "aChikoleaChimalesiaChibulmaChinepaliChiholanziChipunjabiChipolandiCh" + - "ilenoChilomaniaChilusiChinyalwandaChisomaliChiswidiChitamilChitailan" + - "diChituluchiChiuklaniaChiulduChivietinamuChiyolubaChichinaChizuluChi" + - "makonde", - []uint16{ // 351 elements + { // ewo + "Ǹkɔ́bɔ akánǸkɔ́bɔ amáriaǸkɔ́bɔ arábiaǸkɔ́bɔ belarúsianǸkɔ́bɔ buləgárianǸ" + + "kɔ́bɔ bɛngalíǸkɔ́bɔ tsɛ́gǸkɔ́bɔ ndzámanǸkɔ́bɔ gəlɛ́gǸkɔ́bɔ éngəlísǹk" + + "ɔ́bɔ kpənyáǹkɔ́bɔ fɛ́rəsianǸkɔ́bɔ fulɛnsíǸkɔ́bɔ aúsáǸkɔ́bɔ hindíǸkɔ" + + "́bɔ ungáríanǸkɔ́bɔ ɛndonésianǸkɔ́bɔ ibóǸkɔ́bɔ etáliɛnǸkɔ́bɔ hapɔ́nǸ" + + "kɔ́bɔ havanísǸkɔ́bɔ kəmɛ́rǸkɔ́bɔ koréanǸkɔ́bɔ malɛ́sianǸkɔ́bɔ birəmá" + + "nǹkɔ́bɔ nefálianǸkɔ́bɔ nɛrəlándíaǹkɔ́bɔ funəhábiaǹkɔ́bɔ fólisǹkɔ́bɔ " + + "fɔtugɛ́sńkɔ́bɔ románíaǹkɔ́bɔ rúsianǹkɔ́bɔ ruwandáǹkɔ́bɔ somáliaǹkɔ́b" + + "ɔ suwɛ́dǹkɔ́bɔ tamílǹkɔ́bɔ táilanǹkɔ́bɔ túrəkiǹkɔ́bɔ ukeléniaǹkɔ́bɔ" + + " urudúǹkɔ́bɔ hiɛdənámǹkɔ́bɔ yorúbaǸkɔ́bɔ tsainísǹkɔ́bɔ zulúewondo", + []uint16{ // 287 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x002b, - 0x002b, 0x002b, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x0049, 0x0049, 0x0049, 0x0049, 0x0053, 0x005e, 0x005e, 0x0069, - 0x0069, 0x0069, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0083, - 0x0083, 0x008b, 0x008b, 0x008b, 0x008b, 0x0095, 0x0095, 0x0095, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0022, 0x0022, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x004a, 0x0061, + 0x0061, 0x0061, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x009a, 0x009a, 0x009a, 0x009a, 0x00ae, 0x00c3, 0x00c3, 0x00d6, + 0x00d6, 0x00d6, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x0101, + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0112, + 0x0112, 0x0123, 0x0123, 0x0123, 0x0123, 0x0138, 0x0138, 0x0138, // Entry 40 - 7F - 0x0095, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00b4, 0x00b4, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb, - 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112, + 0x0138, 0x014f, 0x014f, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, + 0x0172, 0x0172, 0x0185, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, + 0x0198, 0x0198, 0x01ac, 0x01ac, 0x01be, 0x01be, 0x01be, 0x01be, + 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, + 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, + 0x01be, 0x01be, 0x01be, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8, + 0x01fc, 0x01fc, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, + 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x022b, 0x022b, 0x023c, // Entry 80 - BF - 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x023c, 0x0252, 0x0252, 0x0252, 0x0252, 0x0266, 0x0278, 0x028b, + 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, + 0x028b, 0x028b, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, + 0x02b1, 0x02b1, 0x02c2, 0x02c2, 0x02c2, 0x02d4, 0x02d4, 0x02d4, + 0x02d4, 0x02d4, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02fb, + 0x030c, 0x030c, 0x030c, 0x0322, 0x0322, 0x0322, 0x0322, 0x0322, + 0x0322, 0x0334, 0x0334, 0x0347, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x01a3, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, + 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x035d, }, }, - { // kea - "abkaziuafrikanerakanamarikuarabiasamesaimaraazerbaijanubaxkirbielorusubú" + - "lgarubambarabengalitibetanubretãubosniukatalãutxetxenukórsikutxekutx" + - "uvaxigalesdinamarkesalimãudzonkaevegreguinglessperantuspanholstonian" + - "ubaskupersafinlandesfijianufaroesfransesfrisiu osidentalirlandesgale" + - "guguaranigujaratimanksauzaebraikuindikroataaitianuúngaruarméniuindon" + - "éziuibonuosuislandesitalianuinuktitutjaponesjavanesjorjianukikuiuka" + - "zakgroenlandeskmerkanareskorianukaxmirakurdukórnikukirgizlatinluxemb" + - "urgeslugandalausianulituanesletãumalgaximaorimasedoniumalaialammarat" + - "imalaiumaltesbirmanesnepalesolandesnorueges nynorsknorueges bokmålor" + - "omooriyapandjabipulakupaxtopurtugeskexuaromanxirumenurusukiniaruanda" + - "sanskritusindisingalesslovakusloveniusomalialbanessérviusundanessuek" + - "usuaílitamiltelugutajiktailandestigriniaturkmenutonganesturkutatarui" + - "gurukranianuurduuzbekivietnamitauolofkozaiorubaxineszuluaghemaraukan" + - "uasubembabenabodoxigaxerokikurdu sentraltaitazarmasórbiu baxudualajo" + - "la-fonyiembufilipinugagauzalimãu di Suisagusiiavaianusórbiu altuñomb" + - "amatxamekabilakambakabuverdianukoira txiinikalenjinkomi-permiakkonka" + - "nibafiakuaziokitxekoiraboro seniinari samitamazait di Atlas Sentrall" + - "ingua diskonxedusem konteudo linguistikuarabi mudernualimãu austriak" + - "ualtu alimãu suisuingles australianuingles kanadianuingles britaniku" + - "ingles merkanuspanhol latinu-merkanuspanhol europeuspanhol mexikanuf" + - "ranses kanadianufranses suisuflamengupurtuges brazilerupurtuges euro" + - "peusuaíli kongolesxines simplifikaduxines tradisional", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0014, 0x001b, 0x001b, - 0x0020, 0x0026, 0x0026, 0x002c, 0x0037, 0x003d, 0x0046, 0x004e, - 0x004e, 0x0055, 0x005c, 0x0064, 0x006b, 0x0071, 0x0079, 0x0081, - 0x0081, 0x0089, 0x0089, 0x008e, 0x008e, 0x0095, 0x009a, 0x00a4, - 0x00ab, 0x00ab, 0x00b1, 0x00b4, 0x00b9, 0x00bf, 0x00c7, 0x00ce, - 0x00d6, 0x00db, 0x00e0, 0x00e0, 0x00e9, 0x00f0, 0x00f6, 0x00fd, - 0x010d, 0x0115, 0x0115, 0x011b, 0x0122, 0x012a, 0x012f, 0x0133, - 0x013a, 0x013e, 0x013e, 0x0144, 0x014b, 0x0152, 0x015a, 0x015a, - // Entry 40 - 7F - 0x015a, 0x0164, 0x0164, 0x0167, 0x016c, 0x016c, 0x016c, 0x0174, - 0x017c, 0x0185, 0x018c, 0x0193, 0x019b, 0x019b, 0x01a1, 0x01a1, - 0x01a6, 0x01b1, 0x01b5, 0x01bc, 0x01c3, 0x01c3, 0x01ca, 0x01cf, - 0x01cf, 0x01d7, 0x01dd, 0x01e2, 0x01ed, 0x01f4, 0x01f4, 0x01f4, - 0x01fc, 0x0204, 0x0204, 0x020a, 0x0211, 0x0211, 0x0216, 0x021f, - 0x0228, 0x0228, 0x022e, 0x0234, 0x023a, 0x0242, 0x0242, 0x0242, - 0x0249, 0x0249, 0x0250, 0x0260, 0x0270, 0x0270, 0x0270, 0x0270, - 0x0270, 0x0270, 0x0275, 0x027a, 0x027a, 0x0282, 0x0282, 0x0288, - // Entry 80 - BF - 0x028d, 0x0295, 0x029a, 0x02a1, 0x02a1, 0x02a7, 0x02ab, 0x02b6, - 0x02bf, 0x02bf, 0x02c4, 0x02c4, 0x02c4, 0x02cc, 0x02d3, 0x02db, - 0x02db, 0x02db, 0x02e1, 0x02e8, 0x02ef, 0x02ef, 0x02ef, 0x02f7, - 0x02fc, 0x0303, 0x0308, 0x030e, 0x0313, 0x031c, 0x0324, 0x032c, - 0x032c, 0x0334, 0x0339, 0x0339, 0x033e, 0x033e, 0x0343, 0x034c, - 0x0350, 0x0356, 0x0356, 0x0360, 0x0360, 0x0360, 0x0365, 0x0369, - 0x0369, 0x036f, 0x036f, 0x0374, 0x0378, 0x0378, 0x0378, 0x0378, - 0x0378, 0x0378, 0x0378, 0x037d, 0x037d, 0x037d, 0x037d, 0x037d, - // Entry C0 - FF - 0x037d, 0x037d, 0x037d, 0x037d, 0x037d, 0x0385, 0x0385, 0x0385, - 0x0385, 0x0385, 0x0385, 0x0385, 0x0388, 0x0388, 0x0388, 0x0388, - 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, - 0x0388, 0x038d, 0x038d, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, - 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, - 0x0391, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, - 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0399, 0x0399, 0x0399, - 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x039f, 0x039f, 0x03ac, - // Entry 100 - 13F - 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03b1, 0x03b1, - 0x03b1, 0x03b1, 0x03b1, 0x03b6, 0x03b6, 0x03c2, 0x03c2, 0x03c7, - 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03d5, 0x03d5, 0x03d5, 0x03d5, - 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03dd, - 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, - 0x03dd, 0x03dd, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, - 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, - 0x03e3, 0x03e3, 0x03f3, 0x03f3, 0x03f3, 0x03f8, 0x03f8, 0x03f8, - // Entry 140 - 17F - 0x03f8, 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x040b, 0x040b, - 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, - 0x0411, 0x0418, 0x0418, 0x0418, 0x0418, 0x0418, 0x041e, 0x041e, - 0x041e, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x042f, - 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x043b, 0x043b, 0x043b, - 0x043b, 0x0443, 0x0443, 0x044f, 0x0456, 0x0456, 0x0456, 0x0456, - 0x0456, 0x0456, 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - // Entry 180 - 1BF - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0461, - 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, - // Entry 1C0 - 1FF - 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, - 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, - 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0466, 0x0466, - 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, - 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, - 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, - 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0474, 0x0474, 0x0474, - 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, - // Entry 200 - 23F - 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, - 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, - 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, - 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, - 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x0497, - 0x0497, 0x0497, 0x0497, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, - 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, - 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, - // Entry 240 - 27F - 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, - 0x04a8, 0x04c0, 0x04c0, 0x04cd, 0x04cd, 0x04de, 0x04f0, 0x0502, - 0x0512, 0x0522, 0x0530, 0x0546, 0x0555, 0x0565, 0x0565, 0x0576, - 0x0583, 0x0583, 0x058b, 0x059d, 0x05ad, 0x05ad, 0x05ad, 0x05bd, - 0x05cf, 0x05e0, - }, + { // fa + faLangStr, + faLangIdx, }, - { // khq - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" + - "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" + - "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" + - "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" + - "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " + - "MandareŋJulu senniKoyra ciini", - []uint16{ // 358 elements + { // fa-AF + "افریکانساسامیآذربایجانیباشقیریمالدیویهسپانویفنلندیآیرلندیکروشیاییاندونیز" + + "یاییآیسلندیایتالویجاپانیکوریاییقرغزیمغلینیپالیهالندینارویژیپولندیپر" + + "تگالیالبانیاییسویدنیسواحلیتاجکیکردی سورانی", + []uint16{ // 257 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, - // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f, - 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, - 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175, + 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x001a, 0x001a, 0x001a, 0x002e, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0058, + 0x0058, 0x0058, 0x0058, 0x0058, 0x0064, 0x0064, 0x0064, 0x0064, + 0x0064, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + // Entry 40 - 7F + 0x0082, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x00a6, + 0x00b4, 0x00b4, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, + 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00ce, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0112, // Entry 80 - BF - 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, - 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, - 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0112, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + 0x0120, 0x0120, 0x0120, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, + 0x013e, 0x014a, 0x014a, 0x014a, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, // Entry C0 - FF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, // Entry 100 - 13F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 140 - 17F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0244, + 0x0169, }, }, - { // ki - "KiakanKiamhariKĩarabuKibelarusiKibulgariaKibanglaKicheckiKĩnjeremaniKigi" + - "rikiGĩthungũKihispaniaKiajemiKĩbaranjaKihausaKĩhĩndĩKihungariKiindon" + - "esiaKiigboKĩtalianoKĩnjabaniKijavaGikuyuKikambodiaKikoreaKimalesiaKi" + - "burmaKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKĩraciaKinyar" + - "wandaKĩcumarĩKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietin" + - "amuKiyorubaKĩcainaKizulu", + { // ff + "AkaanAmarikAarabeereBelaruuseBulgariireBengaliCekkereDocceereGerkeEngele" + + "ereEspañolPerseerePulaarFarayseereHawsaŋkooreHinndiHongariireEndones" + + "iireIgibooreItaliyeereSaponeereSawaneereKemeereKoreereMalayeereBurme" + + "eseNepaaleereDacceerePunjabeerePoloneerePurtugeereRomaneereRiisRuwaa" + + "nndeereSomaliiSweedeereTamilTaayTurkeereUkereneereUrduWiyetnameereYo" + + "rrubaaSinuwaareSuluŋkoore", []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0058, 0x0058, 0x0062, - 0x0062, 0x0062, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, - 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x008d, 0x008d, 0x008d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000b, 0x000b, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001d, 0x0027, + 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x003d, 0x003d, 0x003d, 0x003d, 0x0042, 0x004b, 0x004b, 0x0053, + 0x0053, 0x0053, 0x005b, 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0077, + 0x0077, 0x007d, 0x007d, 0x007d, 0x007d, 0x0087, 0x0087, 0x0087, // Entry 40 - 7F - 0x008d, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, - 0x00a8, 0x00a8, 0x00b2, 0x00b8, 0x00b8, 0x00b8, 0x00be, 0x00be, - 0x00be, 0x00be, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df, - 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f9, 0x00f9, 0x0102, + 0x0087, 0x0092, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x00a4, 0x00a4, 0x00ad, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, + 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00c4, 0x00c4, 0x00c4, 0x00c4, + 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, + 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, + 0x00c4, 0x00c4, 0x00c4, 0x00cd, 0x00cd, 0x00d5, 0x00d5, 0x00d5, + 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, + 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fa, // Entry 80 - BF - 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0119, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x0135, 0x0135, 0x013c, 0x013c, 0x013c, 0x0146, 0x0146, 0x0146, - 0x0146, 0x0146, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x0157, - 0x015d, 0x015d, 0x015d, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0170, 0x0170, 0x0178, 0x017e, + 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, 0x010d, 0x0111, 0x011d, + 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, + 0x012d, 0x012d, 0x0132, 0x0132, 0x0132, 0x0136, 0x0136, 0x0136, + 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x0148, + 0x014c, 0x014c, 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, + 0x0158, 0x0160, 0x0160, 0x0169, 0x0174, }, }, - { // kk - kkLangStr, - kkLangIdx, + { // fi + fiLangStr, + fiLangIdx, }, - { // kkj - "yamannumbu buykakɔ", - []uint16{ // 361 elements + { // fil + filLangStr, + filLangIdx, + }, + { // fo + "afarabkhasisktafrikaansakanamharisktaragonisktarabisktassamesisktavarisk" + + "taymaraaserbajdsjansktbashkirhvitarussisktbulgarsktbislamabambaraben" + + "galskttibetsktbretonsktbosnisktkatalanitjetjensktchamorrokorsikanskt" + + "kekkisktkirkju slávisktchuvashwalisisktdanskttýsktdivehidzongkhaeweg" + + "riksktensktesperantospansktestisktbaskisktpersisktfulahfinsktfijimál" + + "føroysktfransktvestur frísisktírsktskotskt gælisktgalisisktguaranigu" + + "jaratimanxhausahebraiskthindikroatiskthaitisktungarsktarmensktherero" + + "interlinguaindonesisktinterlingueigbosichuan yiidoíslendsktitalsktin" + + "uktitutjapansktjavansktgeorgisktkikuyukuanyamakazakhkalaallisutkhmer" + + "kannadakoreansktkanurikashmirikurdisktkomicornisktkyrgyzlatínluksemb" + + "orgsktgandalimburgisktlingalalaosktlitavisktluba-katangalettisktmala" + + "gassisktmarshallesisktmaorimakedónsktmalayalammongolsktmarathimalaii" + + "sktmaltisktburmesisktnaurunorður ndebelenepalsktndongahálendsktnýnor" + + "sktnorskt bókmálsuður ndebelenavajonyanjaoccitansktoromooriyaossetis" + + "ktpunjabipólsktpashtoportugiskisktquechuaretoromansktrundirumensktru" + + "ssisktkinyarwandasanskritsardisktsindhinorður sámisktsangosingalesis" + + "ktslovakisktslovensktsámoisktshonasomalisktalbansktserbisktswatiskts" + + "esothosundanesisktsvensktswahilitamilskttelugutajiktailendskttigriny" + + "aturkmenskttswanatongansktturkiskttsongatatartahitisktuyghurukrainsk" + + "turduusbekisktvendavjetnamesisktvolapykkwalloonwolofxhosajiddisktyor" + + "ubakinesisktsuluachineseadangmeadygheaghemainualeutsuður altaiangika" + + "mapuchearapahoasuasturiansktawadhibalinesisktbasaabembabenavestur ba" + + "lochibhojpuribinisiksikabodobakossibuginesisktblincebuanochigachuuke" + + "semarichoctawcherokeecheyennemiðkurdisktseselwa creole fransktdakota" + + "dargwataitadogribsarmalágt sorbiandualajola-fonyidazagaembuefikekaju" + + "kewondofilipinisktfonfriulisktgagagauzgan kinesisktgeezkiribatisktgo" + + "rontalotýskt (Sveis)gusiigwich’inhakka kinesiskthawaiianskthiligayno" + + "nhmongovara sorbianxiang kinesiskthupaibanibibioilokoinguishlojbanng" + + "ombamachamekabylekachinjjukambakabardinskttyapmakondegrønhøvdaoyggja" + + "rsktkorokhasikoyra chiinikakokalenjinkimbundukomi-permyakkonkanikpel" + + "lekarachay-balkarkarelsktkurukhshambalabafiakølnsktkumykladinolangil" + + "ahndalezghianlakotalozinorður luriluba-lulualundaluomizoluyiamadures" + + "isktmagahimaithilimakasarmasaimokshamendemerumorisyenmakhuwa-meettom" + + "etaʼmicmacminangkabaumanupurimohawkmossimundangymisk málcreekmirande" + + "siskterzyamazanderanimin nan kinesisktnapolitansktnamalágt týsktnewa" + + "riniasniueankwasiongiemboonnogainʼkonorður sothonuernyankolepangasin" + + "anpampangapapiamentopalauannigeriskt pidginprusslansktkʼicheʼrapanui" + + "rarotongisktromboaromensktrwasandawesakhasamburusantalingambaysangus" + + "isilansktskotsktsuður kurdisktsenakoyraboro sennitachelhitshansuður " + + "sámisktlule sámisktinari samiskolt sámisktsoninkesranan tongosahosuk" + + "umakomorisktsyriactimnetesotetumtigreklingonskttok pisintarokotumbuk" + + "atuvalutasawaqtuvinianmiðatlasfjøll tamazightudmurtumbundurootvaivun" + + "jowalserwolayttawaraywarlpiriwu kinesisktkalmyksogayangbenyembakanto" + + "nesisktvanligt marokanskt tamazightzunieinki málsligt innihaldzazanú" + + "tíðar vanligt arabiskthøgt týskt (Sveis)lágt saksisktflamsktportugis" + + "kiskt (Brasilia)portugiskiskt (Evropa)moldavisktserbokroatisktkongo " + + "svahilieinkult kinesisktvanligt kinesiskt", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000e, 0x000e, 0x0017, 0x001b, 0x0024, 0x002e, + 0x0036, 0x0041, 0x0049, 0x004f, 0x005e, 0x0065, 0x0072, 0x007b, + 0x0082, 0x0089, 0x0092, 0x009a, 0x00a3, 0x00ab, 0x00b3, 0x00bd, + 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00e8, 0x00ef, 0x00f8, 0x00fe, + 0x0104, 0x010a, 0x0112, 0x0115, 0x011c, 0x0121, 0x012a, 0x0131, + 0x0138, 0x0140, 0x0148, 0x014d, 0x0153, 0x015b, 0x0164, 0x016b, + 0x017b, 0x0181, 0x0191, 0x019a, 0x01a1, 0x01a9, 0x01ad, 0x01b2, + 0x01bb, 0x01c0, 0x01c0, 0x01c9, 0x01d1, 0x01d9, 0x01e1, 0x01e7, + // Entry 40 - 7F + 0x01f2, 0x01fd, 0x0208, 0x020c, 0x0216, 0x0216, 0x0219, 0x0223, + 0x022a, 0x0233, 0x023b, 0x0243, 0x024c, 0x024c, 0x0252, 0x025a, + 0x0260, 0x026b, 0x0270, 0x0277, 0x0280, 0x0286, 0x028e, 0x0296, + 0x029a, 0x02a2, 0x02a8, 0x02ae, 0x02bb, 0x02c0, 0x02cb, 0x02d2, + 0x02d8, 0x02e1, 0x02ed, 0x02f5, 0x0301, 0x030f, 0x0314, 0x031f, + 0x0328, 0x0331, 0x0338, 0x0341, 0x0349, 0x0353, 0x0358, 0x0367, + 0x036f, 0x0375, 0x037f, 0x0388, 0x0397, 0x03a5, 0x03ab, 0x03b1, + 0x03bb, 0x03bb, 0x03c0, 0x03c5, 0x03ce, 0x03d5, 0x03d5, 0x03dc, + // Entry 80 - BF + 0x03e2, 0x03ef, 0x03f6, 0x0402, 0x0407, 0x040f, 0x0417, 0x0422, + 0x042a, 0x0432, 0x0438, 0x0448, 0x044d, 0x0459, 0x0463, 0x046c, + 0x0475, 0x047a, 0x0483, 0x048b, 0x0493, 0x049b, 0x04a2, 0x04ae, + 0x04b5, 0x04bc, 0x04c4, 0x04ca, 0x04cf, 0x04d9, 0x04e1, 0x04eb, + 0x04f1, 0x04fa, 0x0502, 0x0508, 0x050d, 0x0516, 0x051c, 0x0525, + 0x0529, 0x0532, 0x0537, 0x0544, 0x054c, 0x0553, 0x0558, 0x055d, + 0x0565, 0x056b, 0x056b, 0x0574, 0x0578, 0x0580, 0x0580, 0x0587, + 0x058d, 0x058d, 0x058d, 0x0592, 0x0596, 0x0596, 0x0596, 0x059b, + // Entry C0 - FF + 0x059b, 0x05a7, 0x05a7, 0x05ad, 0x05ad, 0x05b4, 0x05b4, 0x05bb, + 0x05bb, 0x05bb, 0x05bb, 0x05bb, 0x05bb, 0x05be, 0x05be, 0x05c9, + 0x05c9, 0x05cf, 0x05cf, 0x05da, 0x05da, 0x05df, 0x05df, 0x05df, + 0x05df, 0x05df, 0x05e4, 0x05e4, 0x05e8, 0x05e8, 0x05e8, 0x05f6, + 0x05fe, 0x05fe, 0x0602, 0x0602, 0x0602, 0x0609, 0x0609, 0x0609, + 0x0609, 0x0609, 0x060d, 0x0614, 0x0614, 0x061f, 0x061f, 0x0623, + 0x0623, 0x0623, 0x0623, 0x0623, 0x0623, 0x062a, 0x062f, 0x062f, + 0x062f, 0x0637, 0x063b, 0x063b, 0x0642, 0x0642, 0x064a, 0x0652, + // Entry 100 - 13F + 0x065e, 0x065e, 0x065e, 0x065e, 0x0674, 0x0674, 0x067a, 0x0680, + 0x0685, 0x0685, 0x0685, 0x068b, 0x068b, 0x0690, 0x0690, 0x069d, + 0x069d, 0x06a2, 0x06a2, 0x06ac, 0x06ac, 0x06b2, 0x06b6, 0x06ba, + 0x06ba, 0x06ba, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c6, 0x06c6, + 0x06c6, 0x06d1, 0x06d1, 0x06d4, 0x06d4, 0x06d4, 0x06d4, 0x06d4, + 0x06d4, 0x06d4, 0x06dd, 0x06df, 0x06e5, 0x06f2, 0x06f2, 0x06f2, + 0x06f2, 0x06f6, 0x0701, 0x0701, 0x0701, 0x0701, 0x0701, 0x0701, + 0x070a, 0x070a, 0x070a, 0x070a, 0x0718, 0x0718, 0x0718, 0x071d, + // Entry 140 - 17F + 0x0727, 0x0727, 0x0736, 0x0741, 0x0741, 0x074b, 0x074b, 0x0750, + 0x075d, 0x076c, 0x0770, 0x0774, 0x077a, 0x077f, 0x0786, 0x0786, + 0x0786, 0x078c, 0x0792, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, + 0x079f, 0x07a5, 0x07a8, 0x07ad, 0x07ad, 0x07b8, 0x07b8, 0x07bc, + 0x07c3, 0x07d8, 0x07d8, 0x07dc, 0x07dc, 0x07e1, 0x07e1, 0x07ed, + 0x07ed, 0x07ed, 0x07f1, 0x07f9, 0x0801, 0x080d, 0x0814, 0x0814, + 0x081a, 0x0829, 0x0829, 0x0829, 0x0831, 0x0837, 0x083f, 0x0844, + 0x084c, 0x0851, 0x0851, 0x0857, 0x085c, 0x0862, 0x0862, 0x086a, + // Entry 180 - 1BF + 0x086a, 0x086a, 0x086a, 0x0870, 0x0870, 0x0870, 0x0874, 0x0880, + 0x0880, 0x088a, 0x088a, 0x088f, 0x0892, 0x0896, 0x089b, 0x089b, + 0x089b, 0x08a6, 0x08a6, 0x08ac, 0x08b4, 0x08bb, 0x08bb, 0x08c0, + 0x08c0, 0x08c6, 0x08c6, 0x08cb, 0x08cf, 0x08d7, 0x08d7, 0x08e5, + 0x08eb, 0x08f1, 0x08fc, 0x08fc, 0x0904, 0x090a, 0x090f, 0x090f, + 0x0916, 0x0920, 0x0925, 0x0931, 0x0931, 0x0931, 0x0931, 0x0936, + 0x0941, 0x0952, 0x095e, 0x0962, 0x096e, 0x0974, 0x0978, 0x097e, + 0x097e, 0x0984, 0x098d, 0x0992, 0x0992, 0x0992, 0x0997, 0x09a4, + // Entry 1C0 - 1FF + 0x09a8, 0x09a8, 0x09a8, 0x09b0, 0x09b0, 0x09b0, 0x09b0, 0x09b0, + 0x09ba, 0x09ba, 0x09c2, 0x09cc, 0x09d3, 0x09d3, 0x09e3, 0x09e3, + 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09ee, + 0x09ee, 0x09f7, 0x09f7, 0x09f7, 0x09fe, 0x0a0a, 0x0a0a, 0x0a0a, + 0x0a0f, 0x0a0f, 0x0a0f, 0x0a0f, 0x0a0f, 0x0a18, 0x0a1b, 0x0a22, + 0x0a27, 0x0a27, 0x0a2e, 0x0a2e, 0x0a35, 0x0a35, 0x0a3c, 0x0a41, + 0x0a4b, 0x0a52, 0x0a52, 0x0a61, 0x0a61, 0x0a65, 0x0a65, 0x0a65, + 0x0a74, 0x0a74, 0x0a74, 0x0a7d, 0x0a81, 0x0a81, 0x0a81, 0x0a81, + // Entry 200 - 23F + 0x0a81, 0x0a90, 0x0a9d, 0x0aa7, 0x0ab5, 0x0abc, 0x0abc, 0x0ac8, + 0x0ac8, 0x0acc, 0x0acc, 0x0ad2, 0x0ad2, 0x0ad2, 0x0adb, 0x0adb, + 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae6, 0x0aea, 0x0aea, 0x0aef, 0x0af4, + 0x0af4, 0x0af4, 0x0af4, 0x0afe, 0x0afe, 0x0afe, 0x0afe, 0x0afe, + 0x0b07, 0x0b07, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b14, 0x0b1a, + 0x0b21, 0x0b29, 0x0b42, 0x0b48, 0x0b48, 0x0b4f, 0x0b53, 0x0b56, + 0x0b56, 0x0b56, 0x0b56, 0x0b56, 0x0b56, 0x0b56, 0x0b5b, 0x0b61, + 0x0b69, 0x0b6e, 0x0b6e, 0x0b76, 0x0b82, 0x0b88, 0x0b88, 0x0b8c, + // Entry 240 - 27F + 0x0b8c, 0x0b8c, 0x0b93, 0x0b98, 0x0b98, 0x0ba4, 0x0ba4, 0x0ba4, + 0x0ba4, 0x0ba4, 0x0bc0, 0x0bc4, 0x0bdc, 0x0be0, 0x0bfb, 0x0bfb, + 0x0bfb, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, + 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c1d, 0x0c24, 0x0c3c, 0x0c52, + 0x0c5c, 0x0c6a, 0x0c77, 0x0c88, 0x0c99, + }, + }, + { // fr + frLangStr, + frLangIdx, + }, + { // fr-BE + "gujaratisame du Nordfranco-provençalancien haut-allemandgotiqueaosame du" + + " Sudsame de Lulesame d’Inarisame skolt", + []uint16{ // 517 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, // Entry 40 - 7F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, // Entry 80 - BF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry C0 - FF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 100 - 13F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, // Entry 140 - 17F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x0013, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + // Entry 180 - 1BF + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + // Entry 1C0 - 1FF + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + // Entry 200 - 23F + 0x0042, 0x004d, 0x0059, 0x0067, 0x0071, }, }, - { // kl - "kalaallisut", - []uint16{ // 82 elements + { // fr-CA + frCALangStr, + frCALangIdx, + }, + { // fr-CH + "goudjratiallemand de Pennsylvaniekurde méridional", + []uint16{ // 500 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -5294,1268 +5573,1681 @@ var langHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, - }, - }, - { // kln - "kutitab Akakutitab Amariekkutitab Arabukkutitab Belarusakutitab Bulgaria" + - "kutitab Bengalikutitab Chekkutitab Chermanikutitab Greecekutitab Uin" + - "geresakutitab Espianikkutitab Persiakutitab Kifaransakutitab Hausaku" + - "titab Maindiikkutitab Hangarikutitab Indonesiakutitab Igbokutitab Ta" + - "lianekkutitap Japankutitap Javanesekutitab Kher nebo Kwenkutitab Kor" + - "eakutitab Malaykutitab Burmakutitab Nepalikutitab Boakutitab Punjabk" + - "utitap Polandkutitab Portugalkutitab Romaniekkutitab Russiakutitab K" + - "inyarwandakutitab Somaliekkutitab Swedenkutitab Tamilkutitab Thailan" + - "dkutitab Turkeykutitab Ukrainekutitab Urdukutitab Vietnamkutitab Yor" + - "ubakutitab Chinakutitab ZuluKalenjin", - []uint16{ // 362 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001a, 0x001a, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0038, 0x0048, - 0x0048, 0x0048, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0081, 0x0092, 0x0092, 0x00a2, - 0x00a2, 0x00a2, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c1, - 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00ce, - 0x00ce, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ed, 0x00ed, 0x00ed, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, // Entry 40 - 7F - 0x00ed, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, - 0x011a, 0x011a, 0x0127, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, - 0x0137, 0x0137, 0x014d, 0x014d, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x015a, 0x0167, 0x0167, 0x0174, 0x0174, 0x0174, - 0x0182, 0x0182, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, - 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x019b, 0x019b, 0x01a9, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, // Entry 80 - BF - 0x01a9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01d7, 0x01ea, - 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, - 0x01ea, 0x01ea, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, - 0x0208, 0x0208, 0x0215, 0x0215, 0x0215, 0x0225, 0x0225, 0x0225, - 0x0225, 0x0225, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0242, - 0x024e, 0x024e, 0x024e, 0x025d, 0x025d, 0x025d, 0x025d, 0x025d, - 0x025d, 0x026b, 0x026b, 0x0278, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, // Entry C0 - FF - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, // Entry 100 - 13F - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, // Entry 140 - 17F - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x028c, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + // Entry 180 - 1BF + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + // Entry 1C0 - 1FF + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0032, }, }, - { // km - kmLangStr, - kmLangIdx, - }, - { // kn - knLangStr, - knLangIdx, - }, - { // ko - koLangStr, - koLangIdx, - }, - { // kok - "अफारअबखेज़ियनअफ्रिकान्सत्विअमहारिक्अरेबिक्असामीऐमराअज़रबैजानीबष्किरबैलोर" + - "ुसियन्बल्गेरियनबिसलमाबंगालीतिबेतियनब्रेटनकटलानकोर्शियनज़ेक्वेळ्ष्ड" + - "ानिषजर्मनभूटानीग्रीक्आंग्लइस्परान्टोस्पानिषइस्टोनियन्बास्कपर्षियन्" + - "फिन्निष्फिजीफेरोस्फ्रेन्चफ्रिशियन्ऐरिषस्काटस् गेलिक्गेलीशियनगौरानी" + - "गुजरातीहौसाहेब्रुहिन्दीक्रोयेषियन्हंगेरियन्आर्मीनियन्इन्टरलिंग्वाइ" + - "न्डोनेषियनइन्टरलिंग्इनूपेयाक्आईस्लान्डिकइटालियनइन्युकट्टजापनीस्जाव" + - "नीस्जार्जियन्कज़ख्ग्रीनलान्डिककंबोडियनकन्नडाकोरियन्कश्मीरीकुर्दिषक" + - "िर्गिज़लाटिनलिंगालालाओतियन्लिथुआनियन्लाट्वियन् (लेट्टिष्)मलागसीमाओ" + - "रीमसीडोनियन्मळियाळममंगोलियन्मराठीमलयमालतीस्बर्मीज़्नौरोनेपाळीडच्नो" + - "र्वेजियनओसिटान्ओरोमो (अफान)ओरियापंजाबीपोलिषपाष्टो (पुष्टो)पोर्चुगी" + - "ज़्क्वेच्वारहटो-रोमान्स्किरुन्दीरोमानियन्रष्यन्किन्यार्वान्डासंस्क" + - "ृतसिंधीसांग्रोसिन्हलीस्स्लोवाकस्लोवेनियन्समोनशोनासोमाळीआल्बेनियन्स" + - "ेर्बियन्सिस्वातीसेसोथोसुंदनीसस्वीदीषस्वाहिलीतमिळतेलुगूतजिकथाईतिग्र" + - "िन्यातुर्कमनसेत्स्वानातोंगातुर्किषत्सोगातटारउधूरयुक्रेनियन्उर्दूउज" + - "़बेकवियत्नामीज़ओलापुकउलोफ़झ़ौसाइद्दिष्यूरुबाझ्हुन्गचीनीस्जुलूतगालो" + - "गकोंकणीमोल्डावियन्सेर्बो-क्रोयेषियन्", - []uint16{ // 607 elements + { // fur + "afarabcazianavestanafrikaansamaricaragonêsarapassamêsavaraymaràazerbaija" + + "nibielorùsbulgarbengalêstibetanbretonbosniaccatalancecenchamorrocors" + + "creececsclâf de glesiegalêsdanêstodescgrêcinglêsesperantospagnûlesto" + + "nbascpersianfulahfinlandêsfizianfaroêsfrancêsfrisiangaelic irlandêsg" + + "aelic scozêsgalizianguaranìgujaratimanxebraichindicravuathaitianongj" + + "arêsarmenindonesianigboinupiaqidoislandêstalianinuktitutgjaponêsgjeo" + + "rgjiankazackalaallisutkhmerkannadacoreancurdcornualiêslatinlussembur" + + "ghêslimburghêslingalalaolituanletonmalagasymaorimacedonmalayalammong" + + "ulmarathimalêsmaltêsndebele setentrionâlnepalêsolandêsnorvegjês nyno" + + "rsknorvegjês bokmålnavajoocitanoriyaoseticpunjabipolacpashtoportughê" + + "squechuarumançromenrussanscritsardegnûlsindhisami setentrionâlsangos" + + "inalêsslovacslovensamoansomalalbanêsserpswatisotho meridionâlsundanê" + + "ssvedêsswahilitamiltelegutagicthaiturcmenturctartartahitianuigurucra" + + "inurduuzbecvendavietnamitevalonwolofxhosayiddishyorubacinêszuluvieri" + + " inglêsaramaicasturiancopticsclâfvieri egjizianfilipinvieri francêsf" + + "urlangoticvieri grêcladinlenghis multiplismirandêsnapoletanbas todes" + + "cvieri norvegjêssotho setentrionâlturc otomanpapiamentovieri persian" + + "vieri provenzâlsicilianscozêsvieri irlandêssumerictetumindeterminade" + + "todesc de Austriealt todesc de Svuizareinglês australianinglês canad" + + "êsinglês britanicingles merecanspagnûl de Americhe Latinespagnûl ib" + + "ericfrancês dal Canadefrancês de Svuizareflamantportughês brasilianp" + + "ortughês ibericmoldâfcinês semplificâtcinês tradizionâl", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x000c, 0x0027, 0x0027, 0x0045, 0x0051, 0x0069, 0x0069, - 0x007e, 0x008d, 0x008d, 0x0099, 0x00b7, 0x00c9, 0x00ea, 0x0105, - 0x0117, 0x0117, 0x0129, 0x0141, 0x0153, 0x0153, 0x0162, 0x0162, - 0x0162, 0x017a, 0x017a, 0x0189, 0x0189, 0x0189, 0x019b, 0x01aa, - 0x01b9, 0x01b9, 0x01cb, 0x01cb, 0x01dd, 0x01ec, 0x020a, 0x021f, - 0x023d, 0x024c, 0x0264, 0x0264, 0x027c, 0x0288, 0x029a, 0x02af, - 0x02ca, 0x02d6, 0x02fe, 0x0316, 0x0328, 0x033d, 0x033d, 0x0349, - 0x035b, 0x036d, 0x036d, 0x038e, 0x038e, 0x03a9, 0x03c7, 0x03c7, + 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x001c, 0x0022, 0x002b, + 0x002f, 0x0037, 0x003b, 0x0042, 0x004d, 0x004d, 0x0056, 0x005c, + 0x005c, 0x005c, 0x0065, 0x006c, 0x0072, 0x0079, 0x0080, 0x0085, + 0x008d, 0x0091, 0x0095, 0x0098, 0x00a8, 0x00a8, 0x00ae, 0x00b4, + 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00bf, 0x00c6, 0x00cf, 0x00d7, + 0x00dc, 0x00e0, 0x00e7, 0x00ec, 0x00f6, 0x00fc, 0x0103, 0x010b, + 0x0112, 0x0122, 0x0130, 0x0138, 0x0140, 0x0148, 0x014c, 0x014c, + 0x0152, 0x0157, 0x0157, 0x015e, 0x0165, 0x016e, 0x0173, 0x0173, // Entry 40 - 7F - 0x03eb, 0x040c, 0x042a, 0x042a, 0x042a, 0x0445, 0x0445, 0x0466, - 0x047b, 0x0496, 0x04ab, 0x04c0, 0x04db, 0x04db, 0x04db, 0x04db, - 0x04ea, 0x050e, 0x0526, 0x0538, 0x054d, 0x054d, 0x0562, 0x0577, - 0x0577, 0x0577, 0x058f, 0x059e, 0x059e, 0x059e, 0x059e, 0x05b3, - 0x05cb, 0x05e9, 0x05e9, 0x061f, 0x0631, 0x0631, 0x0640, 0x065e, - 0x0673, 0x068e, 0x069d, 0x06a6, 0x06bb, 0x06d3, 0x06df, 0x06df, - 0x06f1, 0x06f1, 0x06fa, 0x06fa, 0x0718, 0x0718, 0x0718, 0x0718, - 0x072d, 0x072d, 0x074b, 0x075a, 0x075a, 0x076c, 0x076c, 0x077b, + 0x0173, 0x017d, 0x017d, 0x0181, 0x0181, 0x0188, 0x018b, 0x0194, + 0x019a, 0x01a3, 0x01ac, 0x01ac, 0x01b6, 0x01b6, 0x01b6, 0x01b6, + 0x01bb, 0x01c6, 0x01cb, 0x01d2, 0x01d8, 0x01d8, 0x01d8, 0x01dc, + 0x01dc, 0x01e7, 0x01e7, 0x01ec, 0x01fa, 0x01fa, 0x0205, 0x020c, + 0x020f, 0x0215, 0x0215, 0x021a, 0x0222, 0x0222, 0x0227, 0x022e, + 0x0237, 0x023d, 0x0244, 0x024a, 0x0251, 0x0251, 0x0251, 0x0266, + 0x026e, 0x026e, 0x0276, 0x0288, 0x029a, 0x029a, 0x02a0, 0x02a0, + 0x02a6, 0x02a6, 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02b8, 0x02bd, // Entry 80 - BF - 0x07a2, 0x07c3, 0x07db, 0x0800, 0x0818, 0x0833, 0x0845, 0x086f, - 0x0884, 0x0884, 0x0893, 0x0893, 0x08a8, 0x08c3, 0x08d8, 0x08f9, - 0x0905, 0x0911, 0x0923, 0x0941, 0x095c, 0x0974, 0x0986, 0x099b, - 0x09b0, 0x09c8, 0x09d4, 0x09e6, 0x09f2, 0x09fb, 0x0a19, 0x0a2e, - 0x0a4c, 0x0a5b, 0x0a70, 0x0a82, 0x0a8e, 0x0a8e, 0x0a9a, 0x0abb, - 0x0aca, 0x0adc, 0x0adc, 0x0afd, 0x0b0f, 0x0b0f, 0x0b1e, 0x0b2d, - 0x0b42, 0x0b54, 0x0b69, 0x0b7b, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x02c3, 0x02cd, 0x02d4, 0x02db, 0x02db, 0x02e0, 0x02e3, 0x02e3, + 0x02eb, 0x02f5, 0x02fb, 0x030d, 0x0312, 0x031a, 0x0320, 0x0326, + 0x032c, 0x032c, 0x0331, 0x0339, 0x033d, 0x0342, 0x0353, 0x035c, + 0x0363, 0x036a, 0x036f, 0x0375, 0x037a, 0x037e, 0x037e, 0x0385, + 0x0385, 0x0385, 0x0389, 0x0389, 0x038f, 0x0397, 0x039c, 0x03a2, + 0x03a6, 0x03ab, 0x03b0, 0x03ba, 0x03ba, 0x03bf, 0x03c4, 0x03c9, + 0x03d0, 0x03d6, 0x03d6, 0x03dc, 0x03e0, 0x03e0, 0x03e0, 0x03e0, + 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, // Entry C0 - FF - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x03e0, 0x03e0, 0x03ed, 0x03ed, 0x03f4, 0x03f4, 0x03f4, 0x03f4, + 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03fc, + 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, + 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, + 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, + 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, + 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, + 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, // Entry 100 - 13F - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, - 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x03fc, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, + 0x0402, 0x0402, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, + 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, + 0x0408, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, + 0x0416, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x042b, 0x042b, + 0x042b, 0x042b, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, + 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, + 0x0431, 0x0436, 0x0436, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, // Entry 140 - 17F - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, - 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, + 0x0441, 0x0441, 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, // Entry 180 - 1BF - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0446, 0x0457, 0x0457, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, + 0x0460, 0x0460, 0x0469, 0x0469, 0x0473, 0x0473, 0x0473, 0x0473, + 0x0473, 0x0473, 0x0473, 0x0473, 0x0483, 0x0483, 0x0483, 0x0496, // Entry 1C0 - 1FF - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x04a1, + 0x04a1, 0x04a1, 0x04a1, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, + 0x04ab, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, + 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, + 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, + 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, + 0x04d0, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, + 0x04d7, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, // Entry 200 - 23F - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, + 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04ed, 0x04ed, 0x04ed, + 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04f2, 0x04f2, + 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, + 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, + 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04ff, 0x04ff, + 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, + 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, // Entry 240 - 27F - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bcc, 0x0c00, + 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, + 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, + 0x0510, 0x0526, 0x0538, 0x0548, 0x0558, 0x0566, 0x0581, 0x0590, + 0x0590, 0x0590, 0x05a3, 0x05b7, 0x05b7, 0x05be, 0x05d2, 0x05e3, + 0x05ea, 0x05ea, 0x05ea, 0x05fd, 0x0610, }, }, - { // ks - "اَفاراَبخازِیاناَویستَناَفریٖکانٛزاَکاناَمہاریاَراگونیعربیاسٲمۍاَوارِکای" + - "مارااَزَربیجانیبَشکیٖربیلَروٗشیَنبینابِسلامابَمبارابَنٛگٲلۍتِبتیبری" + - "ٹَنبوسنِیَنکَتلانچیچَنکَموروکارسِکَنکریچیٚکچٔرچ سلاوِکچُواشویٚلشڈین" + - "ِشجٔرمَندِویہیزونٛگکھاایٖویوٗنٲنیاَنٛگیٖزۍایٚسپَرینٹوسپینِشایٚسٹونی" + - "َنباسکفارسیفُلاہفِنِشفِجیَنفَروسفریٚنچمغربی فرِشیَناَیرِشسکوٹِش گیے" + - "لِکگیلِشِیَنگُوارَنیگُجرٲتیمینٛکسہاوساعبرٲنۍہِندیہِری موتوٗکروشِیَن" + - "ہیتِیاںہَنٛگیریَناَرمینیَنہیٚریٖرواِنٹَرلِنٛگوااِنڈونیشیااِنٹَر لِن" + - "ٛنگویےاِگبوسِچوان یٖیاِنُپِیاکاِڈوآیِسلینڈِکاِٹیلیَناِنُکتِتوٗجاپٲن" + - "ۍجَوَنیٖزجارجِیَنکونٛگوکِکُیوٗکُوانیاماکازَخکَلالِسُتخَمیرکَنَڑکوری" + - "َنکَنوٗریکٲشُرکُردِشکومیکورنِشکِرگِزلاتیٖنیلُکھزیمبورگِشگاندالِمبٔر" + - "گِشلِنگالالاولِتھوانِیَنلوُبا کَتَنٛگالَتوِیَنمَلاگَسیمارشَلیٖزماور" + - "یمیکَڈونیَنمٔلیالَممَنٛگولیمَرٲٹھۍمَلَےمَلتیٖسبٔمیٖزناورُشُمال ڈَبی" + - "لنیٚپٲلۍڈونٛگاڈَچناروییَن نَے نورسکناروییَن بوکمالجنوب ڈیٚبیلنَواجو" + - "نِیَنجااوکسیٖٹَناوجِبوااوٚرومواوٚرِیااوٚسیٚٹِکپَنجٲبۍپالیپالِشپَشتو" + - "ٗپُرتَگیٖزکُویشُوارومانشرُندیرومٲنیروٗسیکِنیاوِنداسَنسکرٕتسراڈیٖنیس" + - "ِندیشُمٲلی سَمیسَنگوسِنہالاسلووَکسلووینیَنسَمواَنشوناسومٲلیالبانِیَ" + - "نسٔربِیَنسواتیجنوبی ستھوسَنڈَنیٖزسویٖڈِشسواہِلیتَمِلتیلگوٗتاجِکتھاے" + - "ٹِگرِنیاتُرکمینسواناٹونٛگاتُرکِشژونٛگاتَتارتاہیشِیَنیوٗکرینیٲییاُرد" + - "وٗاُزبیکوینداوِیَتنَمیٖزوولَپُکوَلوٗنوولوفکھوسایِدِشیورُبازُہانٛگچی" + - "ٖنیزُلوٗاَچَےنیٖزاَکولیاَدَنٛگمیےاَدَیٖگیےاَفرِہِلیاینوٗاَکادِیَناَ" + - "لویتیجنوٗبی اَلتاییپرون اَنٛگریٖزیاَنٛگِکااَرَمیکایرو کونِیَناَراپا" + - "ہواَراوَکایسٹوٗریَناَوَدیبَلوٗچیبالِنیٖزباسابیجابیٚمبابوجپوٗریبِکول" + - "بِنیسِکسِکابرٛجبُرِیَتبَگنیٖزبٕلِنکاڈوکارِباتسَمسیباونوچیٖبچاچھَگتا" + - "ےچُکیٖزماریچِنوٗک جارگَنچوکتَوشیپویانچیٚروکیشییونکاپٹِککرٕمیٖن تُرک" + - "یکَشوٗبِیَنڈکوٹادَرگواڈیٚلوییَرسلیوڈاگرِبڈِنکاڈوگریبوٚنِم ساربِیَند" + - "ُوالاوَستی پُرتُگالیڈِیوٗلاایٚفِکقدیٖمی مِصریایٚکاجُکایٚلامایِٹوَسط" + - "ی اَنٛگریٖزۍایٚوونڈوفینٛگفِلِپیٖنوفونوسطی فریٚنچپرون فریٚنچشُمٲلی ف" + - "رِشیَنمشرِقی فرِشیَنفروٗلِیَنگاگیےیوگبایاگیٖزگِلبٔرٹیٖزوَسطی ہاے جٔ" + - "رمَنپرون ہاے جٔرمَنگوندیگورینٹیلوگوتھِکگرِبوقدیٖم یوٗنٲنیسٕوِس جٔرم" + - "َنگُوِچ اِنہَیداہوایِیَنہِلیٖگینَنہِتایِتہمونٛگہیٚرِم ساربِیَنہُپاا" + - "ِباناِلوکواِنٛگُشلوجبانجوڈیو فارسیجوڈیو عربیکارا کَلپَککَبایِلکاچِن" + - "جُوٗکامباکَویکَبارڈِیَنتَیَپکوروکھاسیکھوتَنیٖزکِمبُندوٗکونکَنیکوسری" + - "یَنکَپیلیکراچیے بَلکارکَریلِیَنکُرُکھکُمِککُتینَےلیڈِنولَہَندالَمبا" + - "لیزگِیَنمونٛگولوزیلوٗبا لوٗلُوالویِسینولُندالُوولُسہاےمَدُریٖزمَگاے" + - "میتَھلیمَکَسارمَندِنٛگومَساےموکشامَندَرمیندیےوَستی ایرِشمِکمیکمِنَن" + - "ٛگکَباومانٛچوٗمَنیپوٗریموہاکموسیواریاہ زبانکریٖکمِراندیٖزمارواڑیایٚ" + - "رزِیانیٖپالیٹَنبوٚنِم جٔرمَننیٚوارینِیاسنِیویَننوگاےپرون نارسیایٚن " + - "کوشمالی ستھوکلاسِکَل نیوارینِیَمویٚزینِیَنکولنِیورونَظیٖمااوٚسیجاوٹ" + - "ومَن تُرکِشپَنٛگاسِنَنپَہلَویپَمپَنٛگاپَپِیامیٚنٹوپَلااُواںپرون فار" + - "سیفونیٖشیَنپانپیٚیَنپرون پروویٚنچَلراجِستھٲنۍرَپانویرَروٹونٛگَنرومَ" + - "نیاَرومانیسَندَویےیاکُتسَمارِتَن اَرامیکسَسَکسَنتالیسِچِلِیَنسکاٹسس" + - "یٚلکُپپرون ایرِششانسِداموجنوٗبی سَمیلولیے سَمیاِناری سَمیسکولٹ سَمی" + - "سونِنکیےسوگڈِیَنسرٛانَن ٹونٛگوسیٚریرسُکُماسُسوٗسُمیریَنسیٖریٲییٹِمن" + - "یےٹیٚریٚنوٹیٹَمٹاےگریےتیٖوٹوکیٖلاوکِلِنگونٹِلِنگِتتاماشیکنیاسا ٹونٛ" + - "گاٹاک پِسِنژھِمشِیانتُمبُکاتُوالوٗتُویٖنیَناُدمُرتاُگارتِکیُمبُندوٗ" + - "روٗٹواےووتِکوالامووَریےواشوکالمِکیاویَپیٖززَپوتیٚکزیناگازوٗنیکانٛہہ" + - " تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنسٕوِس ہاےجٔرمَنآسٹریلیَن ا" + - "َنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَنٛگریٖزۍیوٗ ایٚس اَنٛگریٖز" + - "ۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈیَن فریٚنچسٕوٕس فریٚنچفلیٚ" + - "مِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولداوِیَنسیٚربو کروشِیَنسیٚو" + - "د چیٖنیرِوٲجی چیٖنی", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x000a, 0x001e, 0x002e, 0x0044, 0x004e, 0x005c, 0x006c, - 0x0074, 0x007e, 0x008c, 0x0098, 0x00ae, 0x00bc, 0x00d2, 0x00da, - 0x00e8, 0x00f6, 0x0106, 0x0110, 0x011c, 0x012c, 0x0138, 0x0142, - 0x014e, 0x015e, 0x0164, 0x016c, 0x0181, 0x018b, 0x0195, 0x019f, - 0x01ab, 0x01b7, 0x01c7, 0x01cf, 0x01dd, 0x01ef, 0x0205, 0x0211, - 0x0225, 0x022d, 0x0237, 0x0241, 0x024b, 0x0257, 0x0261, 0x026d, - 0x0286, 0x0292, 0x02ab, 0x02bd, 0x02cd, 0x02db, 0x02e7, 0x02f1, - 0x02fd, 0x0307, 0x031a, 0x032a, 0x0338, 0x034c, 0x035e, 0x036e, - // Entry 40 - 7F - 0x0388, 0x039c, 0x03bb, 0x03c5, 0x03d8, 0x03ea, 0x03f2, 0x0406, - 0x0416, 0x042a, 0x0436, 0x0446, 0x0456, 0x0462, 0x0470, 0x0482, - 0x048c, 0x049e, 0x04a8, 0x04b2, 0x04be, 0x04cc, 0x04d6, 0x04e2, - 0x04ea, 0x04f6, 0x0502, 0x0510, 0x052a, 0x0534, 0x0546, 0x0554, - 0x055a, 0x0570, 0x058b, 0x059b, 0x05ab, 0x05bd, 0x05c7, 0x05db, - 0x05eb, 0x05fb, 0x0609, 0x0613, 0x0621, 0x062d, 0x0637, 0x064c, - 0x065a, 0x0666, 0x066c, 0x068e, 0x06ab, 0x06c0, 0x06cc, 0x06da, - 0x06ec, 0x06fa, 0x0708, 0x0716, 0x0728, 0x0736, 0x073e, 0x0748, - // Entry 80 - BF - 0x0754, 0x0766, 0x0776, 0x0782, 0x078c, 0x0798, 0x07a2, 0x07b6, - 0x07c6, 0x07d6, 0x07e0, 0x07f5, 0x07ff, 0x080d, 0x0819, 0x082b, - 0x0839, 0x0841, 0x084d, 0x085f, 0x086f, 0x0879, 0x088c, 0x089e, - 0x08ac, 0x08ba, 0x08c4, 0x08d0, 0x08da, 0x08e2, 0x08f2, 0x0900, - 0x090a, 0x0916, 0x0922, 0x092e, 0x0938, 0x094a, 0x094a, 0x0960, - 0x096c, 0x0978, 0x0982, 0x0998, 0x09a6, 0x09b2, 0x09bc, 0x09c6, - 0x09d0, 0x09dc, 0x09ea, 0x09f4, 0x09fe, 0x0a10, 0x0a1c, 0x0a30, - 0x0a42, 0x0a42, 0x0a54, 0x0a54, 0x0a5e, 0x0a70, 0x0a70, 0x0a7e, + { // fy + "AfarAbchazyskAvestyskAfrikaanskAkanAmhaarskAragoneeskArabyskAssameeskAva" + + "ryskAymaraAzerbeidzjaanskBasjkierskWyt-RussyskBulgaarskBislamaBambar" + + "aBengaalskTibetaanskBretonskBosnyskKatalaanskTsjetsjeenskChamorroKor" + + "sikaanskCreeTsjechyskKerkslavyskTsjoevasjyskWelskDeenskDútskDivehiDz" + + "ongkhaEweGryksIngelskEsperantoSpaanskEstlânskBaskyskPerzyskFulahFins" + + "kFijyskFaeröerskFrânskWest-FryskIerskSchotsk GaelicGalisyskGuaraníGu" + + "jaratiManksHausaHebreeuwskHindiHiri MotuKroatyskHaïtiaanskHongaarskA" + + "rmeenskHereroInterlinguaYndonezyskInterlingueIgboSichuan YiInupiaqId" + + "oYslânsItaliaanskInuktitutJapansJavaanskGeorgyskKongoKikuyuKuanyamaK" + + "azachsGrienlânsKhmerKannadaKoreaanskKanuriKasjmiriKoerdyskKomiCornis" + + "hKirgizyskLatynLuxemburgsGandaLimburgsLingalaLaotiaanskLitouwsLuba-K" + + "atangaLetlânsMalagasyskMarshalleesMaoriMacedonyskMalayalamMongoolsMa" + + "rathiMaleisMalteesBirmeesNauruaanskNoard-NdbeleNepaleesNdongaNederlâ" + + "nskNoors - NynorskNoors - BokmålSûd-NdbeleNavajoNyanjaOccitaanskOjib" + + "waOromoOdiaOssetyskPunjabiPaliPoalskPasjtoePortugeeskQuechuaReto-Rom" + + "aanskKirundiRoemeenskRussyskKinyarwandaSanskrietSardinyskSindhiNoard" + + "-SamyskSangoSingaleesSlowaaksSloveenskSamoaanskShonaSomalyskAlbanees" + + "kServyskSwaziSûd-SothoSoendaneeskZweedsSwahiliTamilTeluguTadzjieksTh" + + "aisTigrinyaTurkmeensTswanaTongaanskTurksTsongaTataarsTahityskOeigoer" + + "sOekraïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddyskYo" + + "rubaZhuangSineeskZuluAtjeeskAkoliAdangmeAdygheAfrihiliAghemAinuAkkad" + + "yskAleutSûd-AltaïskâldingelskAngikaArameeskAraukaanskArapahoArawakAs" + + "uAsturyskAwadhiBaloetsjyskBalineeskBasaBamounGhomala’BejaBembaBenaBa" + + "futBhojpuriBikolBiniKomSiksikaBrajBodoAkooseBuriatBugineeskBuluBlinM" + + "edumbaKaddoKaribyskCayugaAtsamCebuanoChigaChibchaChagataiChuukeeskMa" + + "riChinook-jargonChoctawChipewyanCherokeeCheyenneSoranîKoptyskKrim-Ta" + + "taarskKasjoebyskDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriN" + + "edersorbyskDualaMiddelnederlânskJola-FonyiDyulaDazagaEmbuEfikAldegyp" + + "tyskEkajukElamityskMiddelingelskEwondoFangFilipynskFonMiddelfrânskAl" + + "dfrânskNoard-FryskEast-FryskFriulyskGaGayoGbayaGeezGilberteeskMiddel" + + "heechdútskAlsheechdútskGondiGorontaloGothyskGreboAldgryksSwitsers Dú" + + "tskGusiiGwichʼinHaidaHawaïaanskHiligaynonHettityskHmongOppersorbyskH" + + "upaIbanIbibioIlokoIngoesjLojbanNgombaMachameJudeo-PerzyskJudeo-Araby" + + "skKarakalpaksKabyleKachinJjuKambaKawiKabardyskKanembuTyapMakondeKaap" + + "verdysk CreoolsKoroKhasiKhotaneeskKoyra ChiiniKakoKalenjinKimbunduKo" + + "nkaniKosraeaanskKpelleKarachay-BalkarKarelyskKurukhShambalaBafiaKöls" + + "chKoemuksKutenaiLadinoLangiLahndaLambaLezgyskLakotaMongoLoziLuba-Lul" + + "uaLuisenoLundaLuoLushaiLuyiaMadureesMafaMagahiMaithiliMakassaarsMand" + + "ingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddeliersMakhuwa-MeettoMe" + + "ta’Mi’kmaqMinangkabauMantsjoeManipoeriMohawkMossiMundangMeardere tal" + + "enCreekMirandeesMarwariMyeneErzjaNapolitaanskNamaLaagduitsNewariNias" + + "NiueaanskNgumbaNgiemboonNogaiAldnoarskN’koNoard-SothoNuerKlassiek Ne" + + "wariNyamweziNyankoleNyoroNzimaOsageOttomaansk-TurksPangasinanPahlavi" + + "PampangaPapiamentsPalauaanskAldperzyskFoenisyskPohnpeiaanskAldproven" + + "çaalsRajasthaniRapanuiRarotonganRomboRomaniAromaniaanskRwaSandaweJa" + + "koetsSamaritaansk-ArameeskSamburuSasakSantaliNgambaySanguSiciliaansk" + + "SchotsSenecaSenaSelkupKoyraboro SenniAldyrskTashelhiytShanTsjadysk A" + + "rabyskSidamoSûd-SamyskLule SamiInari SamiSkolt SamiSoninkeSogdyskSra" + + "nantongoSererSahoSukumaSoesoeSoemeryskShimaoreKlassiek SyryskSyryskT" + + "imneTesoTerenoTetunTigreTivTokelausKlingonTlingitTamashekNyasa Tonga" + + "Tok PisinTarokoTsimshianToemboekaTuvaluaanskTasawaqTuvinyskTamazight" + + " (Sintraal-Marokko)OedmoertsOegarityskUmbunduRootVaiVotyskVunjoWalse" + + "rWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantoneeskZapotecBli" + + "ssymbolenZenagaStandert Marokkaanske TamazightZuniGjin linguïstyske " + + "ynhâldZazaModern standert ArabyskEastenryks DútskSwitsersk Heechdúts" + + "kAustralysk IngelskKanadeesk IngelskBritsk IngelskAmerikaansk Ingels" + + "kLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaansk SpaanskKana" + + "deesk FrânskSwitserse FrânskVlaamsBrazyljaansk PortugeesEuropees Por" + + "tugeesMoldavyskServokroatyskCongo SwahiliFerienfâldich SineeskTradis" + + "joneel Sineesk", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000d, 0x0015, 0x001f, 0x0023, 0x002b, 0x0035, + 0x003c, 0x0045, 0x004c, 0x0052, 0x0061, 0x006b, 0x0076, 0x007f, + 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a8, 0x00af, 0x00b9, 0x00c5, + 0x00cd, 0x00d8, 0x00dc, 0x00e5, 0x00f0, 0x00fc, 0x0101, 0x0107, + 0x010d, 0x0113, 0x011b, 0x011e, 0x0123, 0x012a, 0x0133, 0x013a, + 0x0143, 0x014a, 0x0151, 0x0156, 0x015b, 0x0161, 0x016b, 0x0172, + 0x017c, 0x0181, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01ac, 0x01b1, + 0x01bb, 0x01c0, 0x01c9, 0x01d1, 0x01dc, 0x01e5, 0x01ed, 0x01f3, + // Entry 40 - 7F + 0x01fe, 0x0208, 0x0213, 0x0217, 0x0221, 0x0228, 0x022b, 0x0232, + 0x023c, 0x0245, 0x024b, 0x0253, 0x025b, 0x0260, 0x0266, 0x026e, + 0x0275, 0x027f, 0x0284, 0x028b, 0x0294, 0x029a, 0x02a2, 0x02aa, + 0x02ae, 0x02b5, 0x02be, 0x02c3, 0x02cd, 0x02d2, 0x02da, 0x02e1, + 0x02eb, 0x02f2, 0x02fe, 0x0306, 0x0310, 0x031b, 0x0320, 0x032a, + 0x0333, 0x033b, 0x0342, 0x0348, 0x034f, 0x0356, 0x0360, 0x036c, + 0x0374, 0x037a, 0x0385, 0x0394, 0x03a3, 0x03ae, 0x03b4, 0x03ba, + 0x03c4, 0x03ca, 0x03cf, 0x03d3, 0x03db, 0x03e2, 0x03e6, 0x03ec, + // Entry 80 - BF + 0x03f3, 0x03fd, 0x0404, 0x0411, 0x0418, 0x0421, 0x0428, 0x0433, + 0x043c, 0x0445, 0x044b, 0x0457, 0x045c, 0x0465, 0x046d, 0x0476, + 0x047f, 0x0484, 0x048c, 0x0495, 0x049c, 0x04a1, 0x04ab, 0x04b6, + 0x04bc, 0x04c3, 0x04c8, 0x04ce, 0x04d7, 0x04dc, 0x04e4, 0x04ed, + 0x04f3, 0x04fc, 0x0501, 0x0507, 0x050e, 0x0516, 0x051e, 0x0528, + 0x052c, 0x0534, 0x0539, 0x0543, 0x054b, 0x0550, 0x0555, 0x055a, + 0x0561, 0x0567, 0x056d, 0x0574, 0x0578, 0x057f, 0x0584, 0x058b, + 0x0591, 0x0591, 0x0599, 0x059e, 0x05a2, 0x05aa, 0x05aa, 0x05af, // Entry C0 - FF - 0x0a7e, 0x0a99, 0x0ab6, 0x0ac6, 0x0ad4, 0x0aeb, 0x0aeb, 0x0afb, - 0x0afb, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b1d, 0x0b1d, - 0x0b29, 0x0b37, 0x0b47, 0x0b47, 0x0b4f, 0x0b4f, 0x0b4f, 0x0b4f, - 0x0b57, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b73, - 0x0b7d, 0x0b85, 0x0b85, 0x0b85, 0x0b93, 0x0b93, 0x0b93, 0x0b9b, - 0x0b9b, 0x0b9b, 0x0b9b, 0x0ba9, 0x0bb7, 0x0bb7, 0x0bc1, 0x0bc1, - 0x0bc9, 0x0bd3, 0x0bd3, 0x0bdd, 0x0beb, 0x0beb, 0x0bf7, 0x0c05, - 0x0c11, 0x0c19, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5a, 0x0c64, 0x0c64, - // Entry 100 - 13F - 0x0c70, 0x0c70, 0x0c89, 0x0c9d, 0x0ca7, 0x0cb3, 0x0cb3, 0x0cc5, - 0x0ccd, 0x0cd9, 0x0ce3, 0x0ce3, 0x0ced, 0x0d0a, 0x0d0a, 0x0d16, - 0x0d33, 0x0d33, 0x0d41, 0x0d41, 0x0d41, 0x0d4d, 0x0d4d, 0x0d64, - 0x0d74, 0x0d88, 0x0da7, 0x0da7, 0x0db7, 0x0db7, 0x0dc1, 0x0dd3, - 0x0dd3, 0x0dd9, 0x0dd9, 0x0dee, 0x0e03, 0x0e03, 0x0e1e, 0x0e39, - 0x0e4b, 0x0e4f, 0x0e4f, 0x0e4f, 0x0e59, 0x0e63, 0x0e63, 0x0e6b, - 0x0e7f, 0x0e7f, 0x0e9d, 0x0eb9, 0x0eb9, 0x0ec3, 0x0ed5, 0x0ee1, - 0x0eeb, 0x0f04, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f2c, 0x0f36, + 0x05af, 0x05bc, 0x05c7, 0x05cd, 0x05d5, 0x05df, 0x05df, 0x05e6, + 0x05e6, 0x05e6, 0x05ec, 0x05ec, 0x05ec, 0x05ef, 0x05ef, 0x05f7, + 0x05f7, 0x05fd, 0x0608, 0x0611, 0x0611, 0x0615, 0x061b, 0x061b, + 0x0625, 0x0629, 0x062e, 0x062e, 0x0632, 0x0637, 0x0637, 0x0637, + 0x063f, 0x0644, 0x0648, 0x0648, 0x064b, 0x0652, 0x0652, 0x0652, + 0x0656, 0x0656, 0x065a, 0x0660, 0x0666, 0x066f, 0x0673, 0x0677, + 0x067e, 0x0683, 0x068b, 0x0691, 0x0696, 0x069d, 0x06a2, 0x06a9, + 0x06b1, 0x06ba, 0x06be, 0x06cc, 0x06d3, 0x06dc, 0x06e4, 0x06ec, + // Entry 100 - 13F + 0x06f3, 0x06fa, 0x06fa, 0x0707, 0x0707, 0x0711, 0x0717, 0x071d, + 0x0722, 0x072a, 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x0750, + 0x0750, 0x0755, 0x0766, 0x0770, 0x0775, 0x077b, 0x077f, 0x0783, + 0x0783, 0x078e, 0x0794, 0x079d, 0x07aa, 0x07aa, 0x07b0, 0x07b0, + 0x07b4, 0x07bd, 0x07bd, 0x07c0, 0x07c0, 0x07cd, 0x07d7, 0x07d7, + 0x07e2, 0x07ec, 0x07f4, 0x07f6, 0x07f6, 0x07f6, 0x07fa, 0x07ff, + 0x07ff, 0x0803, 0x080e, 0x080e, 0x081f, 0x082d, 0x082d, 0x0832, + 0x083b, 0x0842, 0x0847, 0x084f, 0x085e, 0x085e, 0x085e, 0x0863, // Entry 140 - 17F - 0x0f36, 0x0f46, 0x0f46, 0x0f5a, 0x0f68, 0x0f74, 0x0f91, 0x0f91, - 0x0f99, 0x0fa3, 0x0fa3, 0x0faf, 0x0fbd, 0x0fbd, 0x0fbd, 0x0fc9, - 0x0fc9, 0x0fc9, 0x0fde, 0x0ff1, 0x0ff1, 0x1006, 0x1014, 0x101e, - 0x1026, 0x1030, 0x1038, 0x104c, 0x104c, 0x1056, 0x1056, 0x1056, - 0x1056, 0x105e, 0x105e, 0x1068, 0x107a, 0x107a, 0x107a, 0x107a, - 0x107a, 0x107a, 0x108c, 0x108c, 0x109a, 0x10aa, 0x10b6, 0x10cf, - 0x10cf, 0x10cf, 0x10e1, 0x10ed, 0x10ed, 0x10ed, 0x10ed, 0x10f7, - 0x1105, 0x1111, 0x1111, 0x111f, 0x1129, 0x1139, 0x1139, 0x1139, + 0x086c, 0x0871, 0x0871, 0x087c, 0x087c, 0x0886, 0x088f, 0x0894, + 0x08a0, 0x08a0, 0x08a4, 0x08a8, 0x08ae, 0x08b3, 0x08ba, 0x08ba, + 0x08ba, 0x08c0, 0x08c6, 0x08cd, 0x08da, 0x08e7, 0x08e7, 0x08f2, + 0x08f8, 0x08fe, 0x0901, 0x0906, 0x090a, 0x0913, 0x091a, 0x091e, + 0x0925, 0x0938, 0x0938, 0x093c, 0x093c, 0x0941, 0x094b, 0x0957, + 0x0957, 0x0957, 0x095b, 0x0963, 0x096b, 0x096b, 0x0972, 0x097d, + 0x0983, 0x0992, 0x0992, 0x0992, 0x099a, 0x09a0, 0x09a8, 0x09ad, + 0x09b4, 0x09bb, 0x09c2, 0x09c8, 0x09cd, 0x09d3, 0x09d8, 0x09df, // Entry 180 - 1BF - 0x1139, 0x1139, 0x1139, 0x1145, 0x114d, 0x114d, 0x114d, 0x1166, - 0x1176, 0x1180, 0x1188, 0x1194, 0x1194, 0x1194, 0x1194, 0x11a4, - 0x11a4, 0x11ae, 0x11bc, 0x11ca, 0x11dc, 0x11e6, 0x11e6, 0x11f0, - 0x11fc, 0x1208, 0x1208, 0x1208, 0x121d, 0x121d, 0x121d, 0x1229, - 0x1241, 0x124f, 0x1261, 0x126b, 0x1273, 0x1273, 0x1273, 0x1288, - 0x1292, 0x12a4, 0x12b2, 0x12b2, 0x12b2, 0x12c2, 0x12c2, 0x12c2, - 0x12d6, 0x12d6, 0x12ef, 0x12fd, 0x1307, 0x1315, 0x1315, 0x1315, - 0x1315, 0x131f, 0x1332, 0x1332, 0x133f, 0x1352, 0x1352, 0x136f, + 0x09df, 0x09df, 0x09df, 0x09e5, 0x09e5, 0x09ea, 0x09ee, 0x09ee, + 0x09ee, 0x09f8, 0x09ff, 0x0a04, 0x0a07, 0x0a0d, 0x0a12, 0x0a12, + 0x0a12, 0x0a1a, 0x0a1e, 0x0a24, 0x0a2c, 0x0a36, 0x0a3e, 0x0a43, + 0x0a47, 0x0a4d, 0x0a53, 0x0a58, 0x0a5c, 0x0a64, 0x0a6e, 0x0a7c, + 0x0a83, 0x0a8c, 0x0a97, 0x0a9f, 0x0aa8, 0x0aae, 0x0ab3, 0x0ab3, + 0x0aba, 0x0ac8, 0x0acd, 0x0ad6, 0x0add, 0x0add, 0x0ae2, 0x0ae7, + 0x0ae7, 0x0ae7, 0x0af3, 0x0af7, 0x0b00, 0x0b06, 0x0b0a, 0x0b13, + 0x0b13, 0x0b19, 0x0b22, 0x0b27, 0x0b30, 0x0b30, 0x0b36, 0x0b41, // Entry 1C0 - 1FF - 0x1383, 0x1393, 0x139f, 0x13ad, 0x13b9, 0x13d4, 0x13ea, 0x13f8, - 0x140a, 0x1422, 0x1434, 0x1434, 0x1434, 0x1434, 0x1447, 0x1447, - 0x1459, 0x1459, 0x1459, 0x146b, 0x146b, 0x1488, 0x1488, 0x1488, - 0x149c, 0x14aa, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14cc, 0x14cc, - 0x14cc, 0x14cc, 0x14dc, 0x14dc, 0x14ec, 0x14f6, 0x1517, 0x1517, - 0x1521, 0x152f, 0x152f, 0x152f, 0x152f, 0x1541, 0x154b, 0x154b, - 0x154b, 0x154b, 0x154b, 0x154b, 0x1559, 0x1559, 0x156c, 0x156c, - 0x156c, 0x1572, 0x1572, 0x157e, 0x157e, 0x157e, 0x1593, 0x15a6, + 0x0b45, 0x0b54, 0x0b5c, 0x0b64, 0x0b69, 0x0b6e, 0x0b73, 0x0b83, + 0x0b8d, 0x0b94, 0x0b9c, 0x0ba6, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bb0, + 0x0bb0, 0x0bba, 0x0bba, 0x0bc3, 0x0bc3, 0x0bc3, 0x0bcf, 0x0bcf, + 0x0bde, 0x0bde, 0x0bde, 0x0be8, 0x0bef, 0x0bf9, 0x0bf9, 0x0bf9, + 0x0bfe, 0x0c04, 0x0c04, 0x0c04, 0x0c04, 0x0c10, 0x0c13, 0x0c1a, + 0x0c21, 0x0c36, 0x0c3d, 0x0c42, 0x0c49, 0x0c49, 0x0c50, 0x0c55, + 0x0c60, 0x0c66, 0x0c66, 0x0c66, 0x0c6c, 0x0c70, 0x0c70, 0x0c76, + 0x0c85, 0x0c8c, 0x0c8c, 0x0c96, 0x0c9a, 0x0caa, 0x0cb0, 0x0cb0, // Entry 200 - 23F - 0x15bb, 0x15ce, 0x15de, 0x15ee, 0x1609, 0x1615, 0x1615, 0x1615, - 0x1621, 0x162b, 0x163b, 0x163b, 0x163b, 0x164b, 0x164b, 0x164b, - 0x1657, 0x1657, 0x1667, 0x1671, 0x167f, 0x1687, 0x1697, 0x1697, - 0x16a7, 0x16b7, 0x16b7, 0x16c5, 0x16dc, 0x16ed, 0x16ed, 0x16ed, - 0x16ed, 0x16ff, 0x16ff, 0x170d, 0x171b, 0x171b, 0x172d, 0x172d, - 0x173b, 0x174b, 0x175d, 0x1765, 0x176b, 0x176b, 0x176b, 0x176b, - 0x176b, 0x1775, 0x1775, 0x1775, 0x1775, 0x1781, 0x178b, 0x1793, - 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, 0x17a5, 0x17b1, 0x17b1, + 0x0cb0, 0x0cbb, 0x0cc4, 0x0cce, 0x0cd8, 0x0cdf, 0x0ce6, 0x0cf1, + 0x0cf6, 0x0cfa, 0x0cfa, 0x0d00, 0x0d06, 0x0d0f, 0x0d17, 0x0d26, + 0x0d2c, 0x0d2c, 0x0d2c, 0x0d31, 0x0d35, 0x0d3b, 0x0d40, 0x0d45, + 0x0d48, 0x0d50, 0x0d50, 0x0d57, 0x0d5e, 0x0d5e, 0x0d66, 0x0d71, + 0x0d7a, 0x0d7a, 0x0d80, 0x0d80, 0x0d89, 0x0d89, 0x0d92, 0x0d9d, + 0x0da4, 0x0dac, 0x0dc8, 0x0dd1, 0x0ddb, 0x0de2, 0x0de6, 0x0de9, + 0x0de9, 0x0de9, 0x0de9, 0x0de9, 0x0def, 0x0def, 0x0df4, 0x0dfa, + 0x0e00, 0x0e05, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e10, 0x0e10, 0x0e14, // Entry 240 - 27F - 0x17b1, 0x17b1, 0x17b1, 0x17c1, 0x17c1, 0x17c1, 0x17cd, 0x17cd, - 0x17d7, 0x180d, 0x1815, 0x1815, 0x1815, 0x1832, 0x184f, 0x1876, - 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, 0x192b, 0x192b, 0x1948, - 0x195f, 0x195f, 0x196d, 0x198e, 0x19b1, 0x19c5, 0x19e2, 0x19e2, - 0x19f7, 0x1a0e, + 0x0e17, 0x0e1d, 0x0e24, 0x0e29, 0x0e29, 0x0e33, 0x0e3a, 0x0e46, + 0x0e46, 0x0e4c, 0x0e6b, 0x0e6f, 0x0e89, 0x0e8d, 0x0ea4, 0x0ea4, + 0x0eb5, 0x0eca, 0x0edc, 0x0eed, 0x0efb, 0x0f0e, 0x0f29, 0x0f3a, + 0x0f4d, 0x0f4d, 0x0f5e, 0x0f6f, 0x0f6f, 0x0f75, 0x0f8b, 0x0f9d, + 0x0fa6, 0x0fb3, 0x0fc0, 0x0fd6, 0x0fea, }, }, - { // ksb - "KiakanKiamhaliKialabuKibelaausiKibulgaliaKibanglaKicheckiKijeumaniKigiik" + - "iKiingeezaKihispaniaKiajemiKifalansaKihausaKihindiKihungaiKiindonesi" + - "aKiigboKiitalianoKijapaniKijavaKikambodiaKikoleaKimalesiaKibulmaKine" + - "paliKiholanziKipunjabiKipolandiKilenoKiomaniaKilusiKinyalwandaKisoma" + - "liKiswidiKitamilKitailandiKituukiKiuklaniaKiulduKivietinamuKiyolubaK" + - "ichinaKizuluKishambaa", - []uint16{ // 373 elements + { // ga + "AfáirisAbcáisisAivéistisAfracáinisAcáinisAmáirisAragóinisAraibisAsaimisA" + + "váirisAidhmirisAsarbaiseáinisBaiscírisBealarúisisBulgáirisBioslaimis" + + "BeangáilisTibéidisBriotáinisBoisnisCatalóinisSeisnisSeamóirisCorsaic" + + "isCraísSeicisSlavais na hEaglaiseSuvaisisBreatnaisDanmhairgisGearmái" + + "nisDivéihisSeoinicisGréigisBéarlaEsperantoSpáinnisEastóinisBascaisPe" + + "irsisFuláinisFionlainnisFidsisFaróisFraincisFreaslainnis IartharachG" + + "aeilgeGaeilge na hAlbanGailísisGuaráinisGúisearáitisManainnisHásaisE" + + "abhraisHiondúisMotúis HíríCróitisCriól HáítíochUngáirisAirméinisHeir" + + "éirisInterlinguaIndinéisisInterlingueÍogbóisIniúipiaicisIdoÍoslainn" + + "isIodáilisIonúitisSeapáinisIáivisSeoirsisCongóisCiocúisCuainiáimisCa" + + "saicisKalaallisutCiméirisCannadaisCóiréisCanúirisCaismírisCoirdisCoi" + + "misCoirnisCirgisisLaidinLucsambuirgisLugandaisLiongáilisLaoisisLiotu" + + "áinisLúba-CataingisLaitvisMalagáisisMairsillisMaoraisMacadóinisMail" + + "éalaimisMongóilisMaraitisMalaeisMáltaisBurmaisNárúisNdeibéilis an T" + + "uaiscirtNeipeailisNdongaisOllainnisNua-IoruaisIoruais BokmålNdeibéil" + + "is an DeiscirtNavachóisSiséivisOcsatáinisÓisibisOraimisOirísisOiséit" + + "isPuinseáibisPáilisPolainnisPaistisPortaingéilisCeatsuaisRómainisRúi" + + "ndisRómáinisRúisisCiniaruaindisSanscraitSairdínisSindisSáimis Thuaid" + + "hSangóisSiolóinisSlóvaicisSlóivéinisSamóisSeoinisSomáilisAlbáinisSei" + + "rbisSuaisisSeasóitisSundaisSualainnisSvahaílisTamailisTeileagúisTáid" + + "sícisTéalainnisTigrinisTuircméinisSuáinisTongaisTuircisSongaisTatair" + + "isTaihítisUigiúirisÚcráinisUrdúisÚisbéiceastáinisVeindisVítneaimisVo" + + "lapükVallúnaisVolaifisCóisisGiúdaisIarúibisSiuáingisSínisSúlúisAdaig" + + "éisAidhniúisAcáidisSean-BhéarlaAramaisMapúitsisAstúirisBailísBaváir" + + "isBeimbisBuiriáitisBuiginisSeabúáinisMairisSeiricisCoptaisCaisiúibis" + + "TaitaZarmaisSorbais ÍochtarachMeán-OllainnisSean-ÉigiptisMeán-Bhéarl" + + "aFilipínisMeán-FhraincisSean-FhraincisFreaslainnis an TuaiscirtFriúi" + + "lisAetóipisMeán-Ard-GhearmáinisSean-Ard-GhearmáinisSean-GhréigisGear" + + "máinis EilvéiseachUaúisHaicéisHaváisHiondúis FhidsíHilgeanóinisHitis" + + "MongaisSorbais UachtarachHúipisIbibisIongúisLojbanIútlainnisCara-Cha" + + "lpáisConcáinisCairéilisCurúicisLaidínisPuinseáibis IartharachLiogúir" + + "isLiovóinisLombairdisMeindisMeán-GhaeilgeManapúirisMóháicisMairis Ia" + + "rtharachIlteangachaMioraindéisMarmhairisGearmáinis ÍochtarachNíobhai" + + "sSean-LochlainnisSútúis an TuaiscirtSean-PheirsisPrúisisCuitséisRoma" + + "inisArómáinisSachaisAramais ShamárachSantáilisSicilisAlbainisSean-Gh" + + "aeilgeTachelhitSáimis LuleSogdánaisSuiméirisSiricisSiléisisKlingonUd" + + "mairtisTeanga AnaithnidVeinéisisPléimeannais IartharachCailmícisCant" + + "ainisSéalainnisZúinisGan ábhar teangeolaíochAraibis ChaighdeánachGea" + + "rmáinis OstarachArd-Ghearmáinis EilvéiseachBéarla AstrálachBéarla Ce" + + "anadachBéarla BriotanachBéarla MeiriceánachSpáinnis Mheiriceá Laidin" + + "ighSpáinnis EorpachSpáinnis MheicsiceachFraincis CheanadachFraincis " + + "EilvéiseachSacsainis ÍochtarachPléimeannaisPortaingéilis na Brasaíle" + + "Portaingéilis IbéarachMoldáivisSeirbea-ChróitisSvahaílis an ChongóSí" + + "nis ShimplitheSínis Thraidisiúnta", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0049, 0x0052, 0x0052, 0x005c, - 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073, - 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0082, 0x0082, 0x0082, + 0x0000, 0x0008, 0x0011, 0x001b, 0x0026, 0x002e, 0x0036, 0x0040, + 0x0047, 0x004e, 0x0056, 0x005f, 0x006e, 0x0078, 0x0084, 0x008e, + 0x0098, 0x0098, 0x00a3, 0x00ac, 0x00b7, 0x00be, 0x00c9, 0x00d0, + 0x00da, 0x00e3, 0x00e9, 0x00ef, 0x0103, 0x010b, 0x0114, 0x011f, + 0x012a, 0x0133, 0x013c, 0x013c, 0x0144, 0x014b, 0x0154, 0x015d, + 0x0167, 0x016e, 0x0175, 0x017e, 0x0189, 0x018f, 0x0196, 0x019e, + 0x01b5, 0x01bc, 0x01cd, 0x01d6, 0x01e0, 0x01ee, 0x01f7, 0x01fe, + 0x0206, 0x020f, 0x021d, 0x0225, 0x0237, 0x0240, 0x024a, 0x0254, // Entry 40 - 7F - 0x0082, 0x008d, 0x008d, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x009d, 0x009d, 0x00a5, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00ab, 0x00ab, 0x00b5, 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00c5, 0x00c5, 0x00cc, 0x00cc, 0x00cc, - 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e6, 0x00e6, 0x00ef, + 0x025f, 0x026a, 0x0275, 0x027e, 0x027e, 0x028b, 0x028e, 0x0299, + 0x02a2, 0x02ab, 0x02b5, 0x02bc, 0x02c4, 0x02cc, 0x02d4, 0x02e0, + 0x02e8, 0x02f3, 0x02fc, 0x0305, 0x030e, 0x0317, 0x0321, 0x0328, + 0x032e, 0x0335, 0x033d, 0x0343, 0x0350, 0x0359, 0x0359, 0x0364, + 0x036b, 0x0376, 0x0385, 0x038c, 0x0397, 0x03a1, 0x03a8, 0x03b3, + 0x03c0, 0x03ca, 0x03d2, 0x03d9, 0x03e1, 0x03e8, 0x03f0, 0x0408, + 0x0412, 0x041a, 0x0423, 0x042e, 0x043d, 0x0454, 0x045e, 0x0467, + 0x0472, 0x047a, 0x0481, 0x0489, 0x0492, 0x049e, 0x04a5, 0x04ae, // Entry 80 - BF - 0x00ef, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00fd, 0x0103, 0x010e, - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, - 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x013e, - 0x0144, 0x0144, 0x0144, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, - 0x014f, 0x0157, 0x0157, 0x015e, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x04b5, 0x04c3, 0x04cc, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x04fb, + 0x0504, 0x050e, 0x0514, 0x0523, 0x052b, 0x0535, 0x053f, 0x054b, + 0x0552, 0x0559, 0x0562, 0x056b, 0x0572, 0x0579, 0x0583, 0x058a, + 0x0594, 0x059e, 0x05a6, 0x05b1, 0x05bc, 0x05c7, 0x05cf, 0x05db, + 0x05e3, 0x05ea, 0x05f1, 0x05f8, 0x0600, 0x0609, 0x0613, 0x061d, + 0x0624, 0x0637, 0x063e, 0x0649, 0x0651, 0x065b, 0x0663, 0x066a, + 0x0672, 0x067b, 0x0685, 0x068b, 0x0693, 0x0693, 0x0693, 0x0693, + 0x069c, 0x069c, 0x069c, 0x069c, 0x06a6, 0x06ae, 0x06ae, 0x06ae, // Entry C0 - FF - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x06ae, 0x06ae, 0x06bb, 0x06bb, 0x06c2, 0x06cc, 0x06cc, 0x06cc, + 0x06cc, 0x06cc, 0x06cc, 0x06cc, 0x06cc, 0x06cc, 0x06cc, 0x06d5, + 0x06d5, 0x06d5, 0x06d5, 0x06dc, 0x06e5, 0x06e5, 0x06e5, 0x06e5, + 0x06e5, 0x06e5, 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06ec, + 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06ec, + 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0x06f7, 0x06ff, 0x06ff, 0x06ff, + 0x06ff, 0x06ff, 0x06ff, 0x06ff, 0x06ff, 0x070b, 0x070b, 0x070b, + 0x070b, 0x070b, 0x0711, 0x0711, 0x0711, 0x0711, 0x0719, 0x0719, // Entry 100 - 13F - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0719, 0x0720, 0x0720, 0x0720, 0x0720, 0x072b, 0x072b, 0x072b, + 0x0730, 0x0730, 0x0730, 0x0730, 0x0730, 0x0737, 0x0737, 0x074a, + 0x074a, 0x074a, 0x0759, 0x0759, 0x0759, 0x0759, 0x0759, 0x0759, + 0x0759, 0x0767, 0x0767, 0x0767, 0x0775, 0x0775, 0x0775, 0x0775, + 0x0775, 0x077f, 0x077f, 0x077f, 0x077f, 0x078e, 0x079c, 0x079c, + 0x07b5, 0x07b5, 0x07be, 0x07be, 0x07be, 0x07be, 0x07be, 0x07be, + 0x07be, 0x07c7, 0x07c7, 0x07c7, 0x07dd, 0x07f2, 0x07f2, 0x07f2, + 0x07f2, 0x07f2, 0x07f2, 0x0800, 0x0818, 0x081e, 0x081e, 0x081e, // Entry 140 - 17F - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x016d, + 0x081e, 0x081e, 0x0826, 0x082d, 0x083e, 0x084b, 0x0850, 0x0857, + 0x0869, 0x0869, 0x0870, 0x0870, 0x0876, 0x0876, 0x087e, 0x087e, + 0x087e, 0x0884, 0x0884, 0x0884, 0x0884, 0x0884, 0x088f, 0x089d, + 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, + 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, + 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x08a7, 0x08a7, + 0x08a7, 0x08a7, 0x08a7, 0x08a7, 0x08b1, 0x08ba, 0x08ba, 0x08ba, + 0x08ba, 0x08ba, 0x08ba, 0x08c3, 0x08c3, 0x08da, 0x08da, 0x08da, + // Entry 180 - 1BF + 0x08da, 0x08e4, 0x08ee, 0x08ee, 0x08f8, 0x08f8, 0x08f8, 0x08f8, + 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, + 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, + 0x08f8, 0x08f8, 0x08f8, 0x08ff, 0x08ff, 0x08ff, 0x090d, 0x090d, + 0x090d, 0x090d, 0x090d, 0x090d, 0x0918, 0x0922, 0x0922, 0x0933, + 0x0933, 0x093e, 0x093e, 0x094a, 0x0954, 0x0954, 0x0954, 0x0954, + 0x0954, 0x0954, 0x0954, 0x0954, 0x096b, 0x096b, 0x096b, 0x0974, + 0x0974, 0x0974, 0x0974, 0x0974, 0x0984, 0x0984, 0x0984, 0x0999, + // Entry 1C0 - 1FF + 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, + 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, 0x0999, + 0x0999, 0x09a6, 0x09a6, 0x09a6, 0x09a6, 0x09a6, 0x09a6, 0x09ae, + 0x09ae, 0x09b7, 0x09b7, 0x09b7, 0x09b7, 0x09b7, 0x09b7, 0x09b7, + 0x09b7, 0x09bf, 0x09bf, 0x09bf, 0x09bf, 0x09ca, 0x09ca, 0x09ca, + 0x09d1, 0x09e3, 0x09e3, 0x09e3, 0x09ed, 0x09ed, 0x09ed, 0x09ed, + 0x09f4, 0x09fc, 0x09fc, 0x09fc, 0x09fc, 0x09fc, 0x09fc, 0x09fc, + 0x09fc, 0x0a09, 0x0a09, 0x0a12, 0x0a12, 0x0a12, 0x0a12, 0x0a12, + // Entry 200 - 23F + 0x0a12, 0x0a12, 0x0a1e, 0x0a1e, 0x0a1e, 0x0a1e, 0x0a28, 0x0a28, + 0x0a28, 0x0a28, 0x0a28, 0x0a28, 0x0a28, 0x0a32, 0x0a32, 0x0a32, + 0x0a39, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, + 0x0a42, 0x0a42, 0x0a42, 0x0a49, 0x0a49, 0x0a49, 0x0a49, 0x0a49, + 0x0a49, 0x0a49, 0x0a49, 0x0a49, 0x0a49, 0x0a49, 0x0a49, 0x0a49, + 0x0a49, 0x0a49, 0x0a49, 0x0a52, 0x0a52, 0x0a52, 0x0a62, 0x0a62, + 0x0a6c, 0x0a6c, 0x0a84, 0x0a84, 0x0a84, 0x0a84, 0x0a84, 0x0a84, + 0x0a84, 0x0a84, 0x0a84, 0x0a84, 0x0a84, 0x0a8e, 0x0a8e, 0x0a8e, + // Entry 240 - 27F + 0x0a8e, 0x0a8e, 0x0a8e, 0x0a8e, 0x0a8e, 0x0a97, 0x0a97, 0x0a97, + 0x0aa2, 0x0aa2, 0x0aa2, 0x0aa9, 0x0ac2, 0x0ac2, 0x0ad8, 0x0ad8, + 0x0aec, 0x0b09, 0x0b1b, 0x0b2c, 0x0b3e, 0x0b53, 0x0b71, 0x0b82, + 0x0b98, 0x0b98, 0x0bab, 0x0bc0, 0x0bd5, 0x0be2, 0x0bfd, 0x0c15, + 0x0c1f, 0x0c30, 0x0c45, 0x0c56, 0x0c6b, }, }, - { // ksf - "riakanriamarikriarabribɛlɔrísribulgaríribɛngáliricɛ́kridjɛrmanrigrɛ́krii" + - "ngɛrísrikpanyáripɛrsánripɛrɛsǝ́rikaksariíndíriɔngrɔáriindonɛsíriigbo" + - "riitalyɛ́nrijapɔ́ŋrijawanɛ́rikmɛrrikɔrɛɛ́rimalaíribirmánrinepalɛ́riɔ" + - "lándɛ́ripɛnjabíripɔlɔ́nripɔrtugɛ́rirɔmánrirísrirwandarisomalíriswɛ́d" + - "ǝritamúlritaíriturkriukrɛ́nriurdúriwyɛtnámriyúubaricinɔárizúlurikpa", - []uint16{ // 374 elements + { // gd + "AfarAbchasaisAvestanaisAfraganaisAkanAmtharaisAragonaisArabaisAsamaisAva" + + "raisAymaraAsarbaideànaisBashkirBealaruisisBulgaraisBislamaBambaraBan" + + "glaTibeitisBreatnaisBosnaisCatalanaisDeideanaisChamorroCorsaisCreeSe" + + "icisSlàbhais na h-EaglaiseChuvashCuimrisDanmhairgisGearmailtisDivehi" + + "DzongkhaEweGreugaisBeurlaEsperantoSpàinntisEastoinisBasgaisPeirsisFu" + + "lahFionnlannaisFìdisFàrothaisFraingisFrìoslannais ShiarachGaeilgeGài" + + "dhligGailìsisGuaraníGujaratiGaelgHausaEabhraHindisHiri MotuCròthaisi" + + "sCrìtheol HaidhtiUngairisAirmeinisHereroInterlinguaInnd-InnsisInterl" + + "ingueIgboYi SichuanInupiaqIdoInnis TìlisEadailtisInuktitutSeapanaisD" + + "eàbhanaisCairtbheilisKongoKikuyuKuanyamaCasachaisKalaallisutCmèarKan" + + "nadaCoirèanaisKanuriCaismirisCùrdaisKomiCòrnaisCìorgasaisLaideannLug" + + "samburgaisGandaCànan LimburgLingalaLàthoLiotuainisLuba-KatangaLaitbh" + + "eisMalagasaisMarshallaisMāoriMasadonaisMalayalamMongolaisMarathiMala" + + "idhisMaltaisBurmaisNabhruNdebele ThuathachNeapàlaisNdongaDuitsisNyno" + + "rsk na NirribhidhBokmål na NirribhidhNdebele DheasachNavajoNyanjaOgs" + + "atanaisOjibwaOromoOdiaOsseticPanjabiPaliPòlainnisPashtoPortagailisQu" + + "echuaRumainsKirundiRomàinisRuisisKinyarwandaSanskritSàrdaisSindhiSàm" + + "ais ThuathachSangoSinhalaSlòbhacaisSlòbhainisSamothaisShonaSomàilisA" + + "lbàinisSèirbisSwatiSesothoCànan SundaSuainisKiswahiliTaimilisTeluguT" + + "aidigisCànan nan TàidhTigrinyaTurcmanaisTswanaTongaTurcaisTsongaTata" + + "raisCànan TahitiÙigiuraisUcràinisÙrduUsbagaisVendaBhiet-NamaisVolapü" + + "kWalloonWolofXhosaIùdhaisYorubaZhuangSìnisZuluBasa AcèhAcoliAdangmeA" + + "dygheArabais ThuiniseachAfrihiliAghemAinuAcadaisAlabamaAleutaisAlbài" + + "nis GhegeachAltais DheasachSeann-BheurlaAngikaAramaisMapudungunAraon" + + "aArapahoArabais AildireachArawakArabais MhorocachArabais Èipheiteach" + + "AsuCainnt-shanais na h-AimeireagaAstùraisKotavaAwadhiBaluchìCànan Ba" + + "liBasaaBamunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaBalochi S" + + "hiarachBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrah" + + "uiBodoAkooseBuriatCànan nam BugisBuluBlinMedumbaCaddoCaribCayugaAtsa" + + "mCebuanoChigaChibchaChagataiCànan ChuukMariChinuk WawaChoctawChipewy" + + "anCherokeeCheyenneCùrdais MheadhanachCoptaisCapiznonTurcais Chriomac" + + "hSeiseallaisCaisiubaisDakotaDargwaTaitaDelawareSlaveyDogribDinkaZarm" + + "aDogriSòrbais ÌochdarachDusun MheadhanachDualaMeadhan-DhuitsisJola-F" + + "onyiDyulaDazagaEmbuEfikÈipheitis ÀrsaidhEkajukElamaisMeadhan-Bheurla" + + "Yupik MheadhanachEwondoCànan na h-ExtremaduraFangFilipinisMeänkieliF" + + "onFraingis nan CajunMeadhan-FhraingisSeann-FhraingisArpitanFrìoslann" + + "ais ThuathachFrìoslannais EarachFriùilisGaGagauzGanGayoGbayaDari Zor" + + "oastrachGe’ezCiribeasaisGilakiMeadhan-Àrd-GearmailtisSeann-Àrd-Gearm" + + "ailtisKonkani GoaGondiGorontaloGotaisGreboGreugais ÀrsaidhGearmailti" + + "s EilbheiseachWayuuFrafraGusiiGwichʼinHaidaHakkaCànan Hawai’iHindis " + + "FhìditheachHiligaynonCànan HetHmongSòrbais UachdarachXiangHupaIbanIb" + + "ibioIlokoIngushBeurla Crìtheolach DiameugaLojbanNgombaMachamePeirsis" + + " IùdhachArabais IùdhachKara-KalpakKabyleKachinJjuKambaKawiCabardaisK" + + "anembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiCànan KhotanKoy" + + "ra ChiiniKhowarKirmanjkiKakoKalenjinKimbunduKomi-PermyakKonkaniKpell" + + "eKarachay-BalkarKrioKinaray-aCairealaisKurukhShambalaBafiaGearmailti" + + "s ChologneKumykKutenaiLadinoLangiLahndaLambaLeasgaisLingua Franca No" + + "vaLiogùraisLakhótaLombardaisMongoLoziLuri ThuathachLuba-LuluaLuiseño" + + "LundaLuoMizoLuyiaSìnis an LitreachaisLazCànan MadhuraMafaMagahiMaith" + + "iliMakasarMandingoMaasaiMabaMokshaMandarMendeMeruMorisyenMeadhan-Gha" + + "eilgeMakhuwa-MeettoMeta’Mi’kmaqMinangkabauManchuManipuriMohawkMossiM" + + "ari ShiarachMundangIomadh cànanCreekMiorandaisMarwariMentawaiMyeneEr" + + "zyaMazanderaniMin NanEadailtis NapoliNamaGearmailtis ÌochdarachNewar" + + "iNiasCànan NiueAo NagaKwasioNgiemboonNogaiSeann-LochlannaisNovialN’K" + + "oSesotho sa LeboaNuerNewari ChlasaigeachNyamweziNyankoleNyoroNzimaOs" + + "ageTurcais OtomanachPangasinanPahlaviPampangaPapiamentuPalabhaisPica" + + "rdBeurla NigèiriachGearmailtis PhennsylvaniaPlautdietschSeann-Pheirs" + + "isPhenicisPiedmonteseCànan PohnpeiPruisisSeann-PhrovençalK’iche’Quic" + + "hua Àrd-tìr ChimborazoRajasthaniRapa NuiCànan RarotongaRomagnolRombo" + + "RomanaisRusynRovianaAromanaisRwaSandaweSakhaAramais ShamaritanachSam" + + "buruSasakSantaliSaurashtraNgambaySanguSisilisAlbaisSassareseCùrdais " + + "DheasachSenecaSenaSeriSelkupKoyraboro SenniSeann-GhaeilgeTachelhitSh" + + "anArabais SeàdachSidamoSelayarSàmais DheasachSàmais LuleSàmais Inari" + + "Sàmais SkoltSoninkeSranan TongoSererSahoSukumaSusuCànan SumerComorai" + + "sSuraidheac ChlasaigeachSuraidheacTuluTimneTesoTerênaTetumTigreTivTo" + + "kelauTsakhurKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoTa" + + "rokoTsimshianTatiTumbukaTubhaluTasawaqCànan TuvaTamazight an Atlais " + + "MheadhanaichUdmurtUmbunduRootVaiVepsFlannrais SiarachVõroVunjoGearma" + + "iltis WallisWolayttaWarayWashoWarlpiriWuKalmykSogaYaoCànan YapYangbe" + + "nYembaNheengatuCantonaisZapotecComharran BlissCànan ZeelandZenagaTam" + + "azight Stannardach MorocoZuñiSusbaint nach eil ’na chànanZazakiNuadh" + + "-Arabais StannardachGearmailtis na h-OstaireÀrd-Ghearmailtis na h-Ei" + + "lbheiseBeurla AstràiliaBeurla ChanadaBeurla BhreatainnBeurla na h-Ai" + + "meireagaSpàinntis na h-Aimeireaga LaidinneachSpàinntis EòrpachSpàinn" + + "tis MheagsagachFraingis ChanadaFraingis EilbheiseachSagsannais Ìochd" + + "arachFlannraisPortagailis BhraisileachPortagailis EòrpachMoldobhaisS" + + "èirb-ChròthaisisKiswahili na CongoSìnis ShimplichteSìnis Thradaisea" + + "nta", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x005b, 0x005b, 0x0064, - 0x0064, 0x0064, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0082, - 0x0082, 0x008a, 0x008a, 0x008a, 0x008a, 0x0095, 0x0095, 0x0095, - // Entry 40 - 7F - 0x0095, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00b3, 0x00b3, 0x00be, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, - 0x00c9, 0x00c9, 0x00d0, 0x00d0, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00e4, 0x00e4, 0x00ed, 0x00ed, 0x00ed, - 0x00f8, 0x00f8, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, - 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0110, 0x0110, 0x011b, - // Entry 80 - BF - 0x011b, 0x0128, 0x0128, 0x0128, 0x0128, 0x0131, 0x0137, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, - 0x0153, 0x0153, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0161, - 0x0161, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0171, - 0x0178, 0x0178, 0x0178, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0183, 0x018b, 0x018b, 0x0194, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x0000, 0x0004, 0x000d, 0x0017, 0x0021, 0x0025, 0x002e, 0x0037, + 0x003e, 0x0045, 0x004c, 0x0052, 0x0061, 0x0068, 0x0073, 0x007c, + 0x0083, 0x008a, 0x0090, 0x0098, 0x00a1, 0x00a8, 0x00b2, 0x00bc, + 0x00c4, 0x00cb, 0x00cf, 0x00d5, 0x00ec, 0x00f3, 0x00fa, 0x0105, + 0x0110, 0x0116, 0x011e, 0x0121, 0x0129, 0x012f, 0x0138, 0x0142, + 0x014b, 0x0152, 0x0159, 0x015e, 0x016a, 0x0170, 0x017a, 0x0182, + 0x0198, 0x019f, 0x01a8, 0x01b1, 0x01b9, 0x01c1, 0x01c6, 0x01cb, + 0x01d1, 0x01d7, 0x01e0, 0x01eb, 0x01fc, 0x0204, 0x020d, 0x0213, + // Entry 40 - 7F + 0x021e, 0x0229, 0x0234, 0x0238, 0x0242, 0x0249, 0x024c, 0x0258, + 0x0261, 0x026a, 0x0273, 0x027e, 0x028a, 0x028f, 0x0295, 0x029d, + 0x02a6, 0x02b1, 0x02b7, 0x02be, 0x02c9, 0x02cf, 0x02d8, 0x02e0, + 0x02e4, 0x02ec, 0x02f7, 0x02ff, 0x030c, 0x0311, 0x031f, 0x0326, + 0x032c, 0x0336, 0x0342, 0x034b, 0x0355, 0x0360, 0x0366, 0x0370, + 0x0379, 0x0382, 0x0389, 0x0392, 0x0399, 0x03a0, 0x03a6, 0x03b7, + 0x03c1, 0x03c7, 0x03ce, 0x03e3, 0x03f8, 0x0408, 0x040e, 0x0414, + 0x041e, 0x0424, 0x0429, 0x042d, 0x0434, 0x043b, 0x043f, 0x0449, + // Entry 80 - BF + 0x044f, 0x045a, 0x0461, 0x0468, 0x046f, 0x0478, 0x047e, 0x0489, + 0x0491, 0x0499, 0x049f, 0x04b0, 0x04b5, 0x04bc, 0x04c7, 0x04d2, + 0x04db, 0x04e0, 0x04e9, 0x04f2, 0x04fa, 0x04ff, 0x0506, 0x0512, + 0x0519, 0x0522, 0x052a, 0x0530, 0x0538, 0x0549, 0x0551, 0x055b, + 0x0561, 0x0566, 0x056d, 0x0573, 0x057b, 0x0588, 0x0592, 0x059b, + 0x05a0, 0x05a8, 0x05ad, 0x05b9, 0x05c1, 0x05c8, 0x05cd, 0x05d2, + 0x05da, 0x05e0, 0x05e6, 0x05ec, 0x05f0, 0x05fa, 0x05ff, 0x0606, + 0x060c, 0x061f, 0x0627, 0x062c, 0x0630, 0x0637, 0x063e, 0x0646, // Entry C0 - FF - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x0658, 0x0667, 0x0674, 0x067a, 0x0681, 0x068b, 0x0691, 0x0698, + 0x06aa, 0x06aa, 0x06b0, 0x06c1, 0x06d5, 0x06d8, 0x06f6, 0x06ff, + 0x0705, 0x070b, 0x0713, 0x071e, 0x071e, 0x0723, 0x0728, 0x0732, + 0x0739, 0x073d, 0x0742, 0x0748, 0x074c, 0x0751, 0x0757, 0x0767, + 0x076f, 0x0774, 0x0778, 0x077e, 0x0781, 0x0788, 0x0793, 0x079c, + 0x07a0, 0x07a6, 0x07aa, 0x07b0, 0x07b6, 0x07c6, 0x07ca, 0x07ce, + 0x07d5, 0x07da, 0x07df, 0x07e5, 0x07ea, 0x07f1, 0x07f6, 0x07fd, + 0x0805, 0x0811, 0x0815, 0x0820, 0x0827, 0x0830, 0x0838, 0x0840, // Entry 100 - 13F - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x0854, 0x085b, 0x0863, 0x0874, 0x087f, 0x0889, 0x088f, 0x0895, + 0x089a, 0x08a2, 0x08a8, 0x08ae, 0x08b3, 0x08b8, 0x08bd, 0x08d1, + 0x08e2, 0x08e7, 0x08f7, 0x0901, 0x0906, 0x090c, 0x0910, 0x0914, + 0x0914, 0x0927, 0x092d, 0x0934, 0x0943, 0x0954, 0x095a, 0x0971, + 0x0975, 0x097e, 0x0988, 0x098b, 0x099d, 0x09ae, 0x09bd, 0x09c4, + 0x09db, 0x09ef, 0x09f8, 0x09fa, 0x0a00, 0x0a03, 0x0a07, 0x0a0c, + 0x0a1c, 0x0a23, 0x0a2e, 0x0a34, 0x0a4c, 0x0a62, 0x0a6d, 0x0a72, + 0x0a7b, 0x0a81, 0x0a86, 0x0a97, 0x0aaf, 0x0ab4, 0x0aba, 0x0abf, // Entry 140 - 17F - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a0, - }, + 0x0ac8, 0x0acd, 0x0ad2, 0x0ae2, 0x0af5, 0x0aff, 0x0b09, 0x0b0e, + 0x0b21, 0x0b26, 0x0b2a, 0x0b2e, 0x0b34, 0x0b39, 0x0b3f, 0x0b3f, + 0x0b5b, 0x0b61, 0x0b67, 0x0b6e, 0x0b7e, 0x0b8e, 0x0b8e, 0x0b99, + 0x0b9f, 0x0ba5, 0x0ba8, 0x0bad, 0x0bb1, 0x0bba, 0x0bc1, 0x0bc5, + 0x0bcc, 0x0bd8, 0x0bdf, 0x0be3, 0x0beb, 0x0bf0, 0x0bfd, 0x0c09, + 0x0c0f, 0x0c18, 0x0c1c, 0x0c24, 0x0c2c, 0x0c38, 0x0c3f, 0x0c3f, + 0x0c45, 0x0c54, 0x0c58, 0x0c61, 0x0c6b, 0x0c71, 0x0c79, 0x0c7e, + 0x0c92, 0x0c97, 0x0c9e, 0x0ca4, 0x0ca9, 0x0caf, 0x0cb4, 0x0cbc, + // Entry 180 - 1BF + 0x0cce, 0x0cd8, 0x0cd8, 0x0ce0, 0x0cea, 0x0cef, 0x0cf3, 0x0d01, + 0x0d01, 0x0d0b, 0x0d13, 0x0d18, 0x0d1b, 0x0d1f, 0x0d24, 0x0d39, + 0x0d3c, 0x0d4a, 0x0d4e, 0x0d54, 0x0d5c, 0x0d63, 0x0d6b, 0x0d71, + 0x0d75, 0x0d7b, 0x0d81, 0x0d86, 0x0d8a, 0x0d92, 0x0da2, 0x0db0, + 0x0db7, 0x0dc0, 0x0dcb, 0x0dd1, 0x0dd9, 0x0ddf, 0x0de4, 0x0df1, + 0x0df8, 0x0e05, 0x0e0a, 0x0e14, 0x0e1b, 0x0e23, 0x0e28, 0x0e2d, + 0x0e38, 0x0e3f, 0x0e4f, 0x0e53, 0x0e6a, 0x0e70, 0x0e74, 0x0e7f, + 0x0e86, 0x0e8c, 0x0e95, 0x0e9a, 0x0eab, 0x0eb1, 0x0eb7, 0x0ec7, + // Entry 1C0 - 1FF + 0x0ecb, 0x0ede, 0x0ee6, 0x0eee, 0x0ef3, 0x0ef8, 0x0efd, 0x0f0e, + 0x0f18, 0x0f1f, 0x0f27, 0x0f31, 0x0f3a, 0x0f40, 0x0f52, 0x0f6b, + 0x0f77, 0x0f85, 0x0f85, 0x0f8d, 0x0f98, 0x0f98, 0x0fa6, 0x0fad, + 0x0fbe, 0x0fc9, 0x0fe5, 0x0fef, 0x0ff7, 0x1007, 0x100f, 0x100f, + 0x1014, 0x101c, 0x101c, 0x1021, 0x1028, 0x1031, 0x1034, 0x103b, + 0x1040, 0x1055, 0x105c, 0x1061, 0x1068, 0x1072, 0x1079, 0x107e, + 0x1085, 0x108b, 0x1094, 0x10a5, 0x10ab, 0x10af, 0x10b3, 0x10b9, + 0x10c8, 0x10d6, 0x10d6, 0x10df, 0x10e3, 0x10f3, 0x10f9, 0x10f9, + // Entry 200 - 23F + 0x1100, 0x1110, 0x111c, 0x1129, 0x1136, 0x113d, 0x113d, 0x1149, + 0x114e, 0x1152, 0x1152, 0x1158, 0x115c, 0x1168, 0x1170, 0x1187, + 0x1191, 0x1191, 0x1195, 0x119a, 0x119e, 0x11a5, 0x11aa, 0x11af, + 0x11b2, 0x11b9, 0x11c0, 0x11c7, 0x11ce, 0x11d4, 0x11dc, 0x11e7, + 0x11f0, 0x11f6, 0x11fc, 0x11fc, 0x1205, 0x1209, 0x1210, 0x1217, + 0x121e, 0x1229, 0x1249, 0x124f, 0x124f, 0x1256, 0x125a, 0x125d, + 0x125d, 0x1261, 0x1272, 0x1272, 0x1272, 0x1277, 0x127c, 0x128e, + 0x1296, 0x129b, 0x12a0, 0x12a8, 0x12aa, 0x12b0, 0x12b0, 0x12b4, + // Entry 240 - 27F + 0x12b7, 0x12c1, 0x12c8, 0x12cd, 0x12d6, 0x12df, 0x12e6, 0x12f5, + 0x1303, 0x1309, 0x1325, 0x132a, 0x1349, 0x134f, 0x1368, 0x1368, + 0x1380, 0x13a0, 0x13b1, 0x13bf, 0x13d0, 0x13e6, 0x140c, 0x141f, + 0x1435, 0x1435, 0x1445, 0x145a, 0x1470, 0x1479, 0x1491, 0x14a5, + 0x14af, 0x14c2, 0x14d4, 0x14e6, 0x14fa, + }, }, - { // ksh - "AfahreschAbchahseschAvästahneschAfrikaansAkahneschAmhahreschArrajonehses" + - "chArahbeschAßamehseschAvahreschAimahreschAsserbaidschahneschBaschkih" + - "reschWiißrußeschBulljaareschBambaraBängjaaleschTibehteschBettohnesch" + - "BoßneschKattalahneschKorseschTschäscheschKerscheßlahweschTschowasche" + - "schWallihseschDähneschDeutschDivehjeschButahneschEweJrihscheschÄngle" + - "schEsperantoSchpahneschÄßneschBaskeschPärseschFinneschFidscheschFärr" + - "öereschFranzüüseschWäßfriiseschIereschJalliizeschJuwaraaneschGutsch" + - "arateschHaußaHebräjeschHindiKrowateschHa’iiteschUnjarreschArmeenesch" + - "IndoneeseschIgboIdoIßländeschEtalljäneschInuktitutJapaaneschJavahnes" + - "chJe’orjeschKassakeschKhmerKannadaKorrejaaneschKaschmiereschKurdesch" + - "KirjihseschLateijneschLuxemborjeschLingjallaLahooteschLittoueschLätt" + - "eschMadajaßkeschMaahoriMazedooneschMallajalamMongjoleschMarraateschM" + - "allaijeschMalteeseschBurmesseschNood-NdebeleNepallesseschHolländesch" + - "Neu-NorrweejeschNorrweejesch BokmålSchi-SchewaOriijaOßeeteschPanscha" + - "abeschPollneschPaschtuuneschPochtojeseschKättschowaRätoromaaneschK-R" + - "undeschRumäneschRußßeschKinja-RuandeschSanskritSinndiNood-Lappländes" + - "chSangjoSingjaleeseschẞlovakeschẞloveeneschSammohaneschSchi-SchonaSo" + - "maaleschAlbaaneschSärbeschSi-SwateschSöd-SootoSindaneeseschSchweedes" + - "chSuaheeleschTamiileschTelluujuTadschiikeschTailändeschTijrenejaanes" + - "chTörkmeeneschSe-ZwaaneschTongjaaneschTörkeschXi-ZongjaneschTattaare" + - "schTahiteschUj’juuerschUkraineschUrdu/HindiUßbeekeschWendaVijätnamme" + - "eseschWoloffIsi-KhoosaJoruubaSchineeseschSuuluAschenehseschTonehsesc" + - "h ArahbeschAfrehihleschAkahdeschAle’uhteschAhl ÄngleschAljehresch Ar" + - "ahbeschMarokahnesch ArahbeschÄjiptesch ArahbeschPareAmärrekahnesche " + - "BlendeschprohchAstuhrejahneschBeluhtscheschBalinehseschBaireschBemba" + - "BenaBischnuprejahneschBrajeschBrahuijeschBoddoBurejahteschBujinehses" + - "chKopteschKaschuhbeschNiddersorbeschMeddelnehderlängschDassajahnesch" + - "EmbuEfikEmilijahneschAhl ÄjipteschMeddelängleschZätrahl-JupikfilSchw" + - "itzerdütschHauajaaneschEngjuscheschIngjrijahneschJamaikahnesch-Ängle" + - "schLodschbahnJühdesch-PärseschJüteschKapvärdeschKölschde Landa-Schpr" + - "oocheLuyjanesch-ongerscheidlijje Schprooche-Nood-SootoKiromboJackute" + - "schKommooreschTetumschTook Pisin-onbikannte-Schprooch-WalserdütschKa" + - "nton-Schineeseschkein SchproochSchtandatt ArahbeschSödasserbaidschah" + - "neschDeutsch uß ÖßterichDeutsch uß de SchweijzÄnglesch uß Außtraalij" + - "eÄnglesch uß KanadaÄnglesch uß JruußbrettannijeAmärrekaanesch Ängles" + - "chSchpaanesch uß Latting-AmmärrikaSchpahnesch en SchpahnejeSchpahnes" + - "ch en MäxikohFranzüüsesch uß KanadaFranzüüsesch uß de SchweijzFlämes" + - "chBrasilljaanesch PochtojeseschPochtojesesch uß PochtojallSärbokowat" + - "eschSchineesesch en de eijfacher SchreffSchineesesch en de tradizjon" + - "älle Schreff", - []uint16{ // 610 elements + { // gl + "afarabkhazoafricánerakánamáricoaragonésárabeasamésavaraimaráacerbaixanob" + + "askirbielorrusobúlgarobislamabambarobengalítibetanobretónbosníacocat" + + "alánchechenochamorrocorsochecoeslavo eclesiásticochuvashgalésdinamar" + + "quésalemándivehidzongkhaewegregoinglésesperantoespañolestonianoéusca" + + "ropersafulafinésfidxianoferoésfrancésfrisónirlandésgaélico escocésga" + + "legoguaraníguxaratímanxhausahebreohindicroatahaitianohúngaroarmenioh" + + "ererointerlinguaindonesioiboyi sichuanésidoislandésitalianoinuktitut" + + "xaponésxavanésxeorxianokongokikuyukuanyamacasacogroenlandés occident" + + "alkhmercanaréscoreanocanuricachemirkurdokomicórnicoquirguizlatínluxe" + + "mburguésgandalimburguéslingalalaosianolituanoluba-katangaletónmalgax" + + "emarshalésmaorímacedoniomalabarmongolmarathimalaiomaltésbirmanonauru" + + "ndebele do nortenepalíndongaholandésnoruegués nynorsknoruegués bokma" + + "lndebele do surnavajochewaoccitanooromooriyaosetiopanxabianopolacopa" + + "shtuportuguésquechuaromancherundiromanésrusoruandéssánscritosardosin" + + "dhisaami do nortesangocingaléseslovacoeslovenosamoanoshonasomalíalba" + + "nésserbioswatisesothosundanéssuecosuahilitámiltelugútaxicotailandést" + + "igriñaturcomántswanatonganésturcotsongatártarotahitianouigurucraínou" + + "rdúuzbecovendavietnamitavolapukvalónwólofxhosayiddishyorubachinészul" + + "úachinésacholíadangmeadigueoaghemainualeutianoaltai meridionalangik" + + "aarameomapuchearapahoeasuasturianoawadhibalinésbasaabembabenabaluchi" + + " occidentalbhojpuribinisiksikábodobuginésblincebuanokigachuukesemari" + + "choctawcheroquicheiénkurdo soraníseselwa (crioulo das Seixeles)dakot" + + "adargwataitadogribzarmabaixo sorabiodualajola-fonyidazagaembuefikexi" + + "pcio antigoekajukewondofilipinofonfriulianogagagauzge’ezkiribatianog" + + "orontalogrego antigoalemán suízogusiigwichʼinhawaianohiligaynonhmong" + + "alto sorbiohupaibanibibioilokoingushlojbanngombamachamekabilekachinj" + + "jukambacabardianotyapmakondecaboverdianokorokhasikoyra chiinikakokal" + + "enjinkimbundukomi permiokonkanikpellecarachaio-bálcaracareliokurukhs" + + "hambalabafiakölschkumykladinolangilezguilakotaloziluri do norteluba-" + + "lulualundaluomizoluyiamadurésmagahimaithilimakasarmasaimokshamendeme" + + "rucrioulo mauricianomakhuwa-meettometa’micmacminangkabaumanipurimoha" + + "wkmossimundangvarias linguascreekmirandéserzyamazandaranínapolitanon" + + "amabaixo alemánnewariniasniuanokwasiongiemboonnogain’kosesotho sa le" + + "boanuernyankolepangasinanpampangapapiamentopalauanopidgin nixerianop" + + "rusianoquichérapanuirarotonganoromboaromanésrwasandawesakhasamburusa" + + "ntalingambaysangusicilianoescocéskurdo meridionalsenakoyraboro senni" + + "tachelhitshansaami meridionalsaami de Lulesaami de Inarisaami de Sko" + + "ltsoninkesranan tongosahosukumacomorianosiríacotimnetesotetuntigrékl" + + "ingontok pisintarokotumbukatuvaluanotasawaqtuvanianotamazight do Mar" + + "rocos Centraludmurtoumbunduraízvaivunjowalserwolayttawaray-waraywalr" + + "piricalmucosogayangbenyembacantonéstamazight de Marrocos estándarzun" + + "isen contido lingüísticozazakiárabe estándar modernoalemán austríaco" + + "alto alemán suízoinglés australianoinglés canadianoinglés británicoi" + + "nglés dos Estados Unidosespañol latinoamericanocastelánespañol de Mé" + + "xicofrancés canadianofrancés suízobaixo saxónflamencoportugués brasi" + + "leiroportugués europeomoldavoserbocroatasuahili congoléschinés simpl" + + "ificadochinés tradicional", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000b, 0x000b, 0x0015, 0x001a, 0x0022, 0x002b, + 0x0031, 0x0038, 0x003c, 0x0043, 0x004e, 0x0054, 0x005e, 0x0066, + 0x006d, 0x0074, 0x007c, 0x0084, 0x008b, 0x0094, 0x009c, 0x00a4, + 0x00ac, 0x00b1, 0x00b1, 0x00b6, 0x00ca, 0x00d1, 0x00d7, 0x00e3, + 0x00ea, 0x00f0, 0x00f8, 0x00fb, 0x0100, 0x0107, 0x0110, 0x0118, + 0x0121, 0x0129, 0x012e, 0x0132, 0x0138, 0x0140, 0x0147, 0x014f, + 0x0156, 0x015f, 0x0170, 0x0176, 0x017e, 0x0187, 0x018b, 0x0190, + 0x0196, 0x019b, 0x019b, 0x01a1, 0x01a9, 0x01b1, 0x01b8, 0x01be, + // Entry 40 - 7F + 0x01c9, 0x01d2, 0x01d2, 0x01d5, 0x01e2, 0x01e2, 0x01e5, 0x01ee, + 0x01f6, 0x01ff, 0x0207, 0x020f, 0x0218, 0x021d, 0x0223, 0x022b, + 0x0231, 0x0248, 0x024d, 0x0255, 0x025c, 0x0262, 0x026a, 0x026f, + 0x0273, 0x027b, 0x0283, 0x0289, 0x0296, 0x029b, 0x02a6, 0x02ad, + 0x02b5, 0x02bc, 0x02c8, 0x02ce, 0x02d5, 0x02df, 0x02e5, 0x02ee, + 0x02f5, 0x02fb, 0x0302, 0x0308, 0x030f, 0x0316, 0x031b, 0x032b, + 0x0332, 0x0338, 0x0341, 0x0353, 0x0364, 0x0372, 0x0378, 0x037d, + 0x0385, 0x0385, 0x038a, 0x038f, 0x0395, 0x039f, 0x039f, 0x03a5, + // Entry 80 - BF + 0x03ab, 0x03b5, 0x03bc, 0x03c4, 0x03c9, 0x03d1, 0x03d5, 0x03dd, + 0x03e7, 0x03ec, 0x03f2, 0x0400, 0x0405, 0x040e, 0x0416, 0x041e, + 0x0425, 0x042a, 0x0431, 0x0439, 0x043f, 0x0444, 0x044b, 0x0454, + 0x0459, 0x0460, 0x0466, 0x046d, 0x0473, 0x047d, 0x0485, 0x048e, + 0x0494, 0x049d, 0x04a2, 0x04a8, 0x04b0, 0x04b9, 0x04be, 0x04c6, + 0x04cb, 0x04d1, 0x04d6, 0x04e0, 0x04e7, 0x04ed, 0x04f3, 0x04f8, + 0x04ff, 0x0505, 0x0505, 0x050c, 0x0511, 0x0519, 0x0520, 0x0527, + 0x052e, 0x052e, 0x052e, 0x0533, 0x0537, 0x0537, 0x0537, 0x0540, + // Entry C0 - FF + 0x0540, 0x0550, 0x0550, 0x0556, 0x055c, 0x0563, 0x0563, 0x056b, + 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056e, 0x056e, 0x0577, + 0x0577, 0x057d, 0x057d, 0x0585, 0x0585, 0x058a, 0x058a, 0x058a, + 0x058a, 0x058a, 0x058f, 0x058f, 0x0593, 0x0593, 0x0593, 0x05a5, + 0x05ad, 0x05ad, 0x05b1, 0x05b1, 0x05b1, 0x05b9, 0x05b9, 0x05b9, + 0x05b9, 0x05b9, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5, 0x05c9, + 0x05c9, 0x05c9, 0x05c9, 0x05c9, 0x05c9, 0x05d0, 0x05d4, 0x05d4, + 0x05d4, 0x05dc, 0x05e0, 0x05e0, 0x05e7, 0x05e7, 0x05ef, 0x05f6, + // Entry 100 - 13F + 0x0603, 0x0603, 0x0603, 0x0603, 0x0621, 0x0621, 0x0627, 0x062d, + 0x0632, 0x0632, 0x0632, 0x0638, 0x0638, 0x063d, 0x063d, 0x064a, + 0x064a, 0x064f, 0x064f, 0x0659, 0x0659, 0x065f, 0x0663, 0x0667, + 0x0667, 0x0675, 0x067b, 0x067b, 0x067b, 0x067b, 0x0681, 0x0681, + 0x0681, 0x0689, 0x0689, 0x068c, 0x068c, 0x068c, 0x068c, 0x068c, + 0x068c, 0x068c, 0x0695, 0x0697, 0x069d, 0x069d, 0x069d, 0x069d, + 0x069d, 0x06a4, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, + 0x06b8, 0x06b8, 0x06b8, 0x06c4, 0x06d2, 0x06d2, 0x06d2, 0x06d7, + // Entry 140 - 17F + 0x06e0, 0x06e0, 0x06e0, 0x06e8, 0x06e8, 0x06f2, 0x06f2, 0x06f7, + 0x0702, 0x0702, 0x0706, 0x070a, 0x0710, 0x0715, 0x071b, 0x071b, + 0x071b, 0x0721, 0x0727, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, + 0x0734, 0x073a, 0x073d, 0x0742, 0x0742, 0x074c, 0x074c, 0x0750, + 0x0757, 0x0763, 0x0763, 0x0767, 0x0767, 0x076c, 0x076c, 0x0778, + 0x0778, 0x0778, 0x077c, 0x0784, 0x078c, 0x0797, 0x079e, 0x079e, + 0x07a4, 0x07b6, 0x07b6, 0x07b6, 0x07bd, 0x07c3, 0x07cb, 0x07d0, + 0x07d7, 0x07dc, 0x07dc, 0x07e2, 0x07e7, 0x07e7, 0x07e7, 0x07ed, + // Entry 180 - 1BF + 0x07ed, 0x07ed, 0x07ed, 0x07f3, 0x07f3, 0x07f3, 0x07f7, 0x0804, + 0x0804, 0x080e, 0x080e, 0x0813, 0x0816, 0x081a, 0x081f, 0x081f, + 0x081f, 0x0827, 0x0827, 0x082d, 0x0835, 0x083c, 0x083c, 0x0841, + 0x0841, 0x0847, 0x0847, 0x084c, 0x0850, 0x0862, 0x0862, 0x0870, + 0x0877, 0x087d, 0x0888, 0x0888, 0x0890, 0x0896, 0x089b, 0x089b, + 0x08a2, 0x08b0, 0x08b5, 0x08be, 0x08be, 0x08be, 0x08be, 0x08c3, + 0x08cf, 0x08cf, 0x08d9, 0x08dd, 0x08ea, 0x08f0, 0x08f4, 0x08fa, + 0x08fa, 0x0900, 0x0909, 0x090e, 0x090e, 0x090e, 0x0914, 0x0924, + // Entry 1C0 - 1FF + 0x0928, 0x0928, 0x0928, 0x0930, 0x0930, 0x0930, 0x0930, 0x0930, + 0x093a, 0x093a, 0x0942, 0x094c, 0x0954, 0x0954, 0x0964, 0x0964, + 0x0964, 0x0964, 0x0964, 0x0964, 0x0964, 0x0964, 0x0964, 0x096c, + 0x096c, 0x0973, 0x0973, 0x0973, 0x097a, 0x0985, 0x0985, 0x0985, + 0x098a, 0x098a, 0x098a, 0x098a, 0x098a, 0x0993, 0x0996, 0x099d, + 0x09a2, 0x09a2, 0x09a9, 0x09a9, 0x09b0, 0x09b0, 0x09b7, 0x09bc, + 0x09c5, 0x09cd, 0x09cd, 0x09dd, 0x09dd, 0x09e1, 0x09e1, 0x09e1, + 0x09f0, 0x09f0, 0x09f0, 0x09f9, 0x09fd, 0x09fd, 0x09fd, 0x09fd, + // Entry 200 - 23F + 0x09fd, 0x0a0d, 0x0a1a, 0x0a28, 0x0a36, 0x0a3d, 0x0a3d, 0x0a49, + 0x0a49, 0x0a4d, 0x0a4d, 0x0a53, 0x0a53, 0x0a53, 0x0a5c, 0x0a5c, + 0x0a64, 0x0a64, 0x0a64, 0x0a69, 0x0a6d, 0x0a6d, 0x0a72, 0x0a78, + 0x0a78, 0x0a78, 0x0a78, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a7f, + 0x0a88, 0x0a88, 0x0a8e, 0x0a8e, 0x0a8e, 0x0a8e, 0x0a95, 0x0a9e, + 0x0aa5, 0x0aae, 0x0acb, 0x0ad2, 0x0ad2, 0x0ad9, 0x0ade, 0x0ae1, + 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae6, 0x0aec, + 0x0af4, 0x0aff, 0x0aff, 0x0b07, 0x0b07, 0x0b0e, 0x0b0e, 0x0b12, + // Entry 240 - 27F + 0x0b12, 0x0b12, 0x0b19, 0x0b1e, 0x0b1e, 0x0b27, 0x0b27, 0x0b27, + 0x0b27, 0x0b27, 0x0b46, 0x0b4a, 0x0b63, 0x0b69, 0x0b81, 0x0b81, + 0x0b93, 0x0ba6, 0x0bb9, 0x0bca, 0x0bdc, 0x0bf6, 0x0c0e, 0x0c17, + 0x0c2a, 0x0c2a, 0x0c3c, 0x0c4b, 0x0c57, 0x0c5f, 0x0c74, 0x0c86, + 0x0c8d, 0x0c98, 0x0ca9, 0x0cbd, 0x0cd0, + }, + }, + { // gsw + "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" + + "ischAwarischAymaraAserbaidschanischBaschkirischWiissrussischBulgaari" + + "schBislamaBambaraBengalischTibeetischBrötoonischBosnischKatalaanisch" + + "TschetscheenischChamorroKorsischCreeTschechischChileslawischTschuwas" + + "chischWalisischTänischTüütschMalediivischDschongkhaEweGriechischÄngl" + + "ischEschperantoSchpanischEestnischBaskischPersischFulFinnischFidschi" + + "anischFäröischFranzösischFriesischIirischSchottisch-GäälischGalizisc" + + "hGuaraniGujaratiManx-GäälischHaussaHebräischHindiHiri-MotuKroazischH" + + "aitischUngarischArmenischHereroInterlinguaIndonesischInterlingueIgbo" + + "Sezuanischs YiInupiakIdoIisländischItaliänischInukitutJapanischJavan" + + "ischGeorgischKongolesischKikuyu-SchpraachKwanyamaKasachischGröönländ" + + "ischKambodschanischKannadaKoreaanischKanuri-SchpraachKaschmirischKur" + + "dischKomi-SchpraachKornischKirgiisischLatiinLuxemburgischGanda-Schpr" + + "aachLimburgischLingalaLaozischLitauischLubaLettischMadagassischMarsc" + + "hallesischMaoriMazedonischMalayalamMongolischMarathiMalaiischMaltesi" + + "schBirmanischNauruischNord-Ndebele-SchpraachNepalesischNdongaNiderlä" + + "ndischNorwegisch NynorskNorwegisch BokmålSüüd-Ndebele-SchpraachNavaj" + + "o-SchpraachChewa-SchpraachOkzitanischOjibwa-SchpraachOromoOrijaOssez" + + "ischPandschabischPaliPolnischPaschtuPortugiisischQuechuaRätoromanisc" + + "hRundi-SchpraachRumänischRussischRuandischSanschkritSardischSindhiNo" + + "rd-SamischSangoSinghalesischSlowakischSlowenischSamoanischSchhonaSom" + + "aliAlbanischSerbischSwaziSüüd-Sotho-SchpraachSundanesischSchwedischS" + + "uaheliTamilischTeluguTadschikischThailändischTigrinjaTurkmenischTswa" + + "na-SchpraachTongaischTürkischTsongaTatarischTahitischUigurischUkrain" + + "ischUrduUsbekischVenda-SchpraachVietnamesischVolapükWallonischWolofX" + + "hosaJiddischYorubaZhuangChineesischZuluAcehAcholiAdangmeAdygaiAfrihi" + + "liAinuAkkadischAleutischSüüd-AltaischAltänglischAngikaAramääischArau" + + "kanischArapahoArawakAschturianischAwadhiBelutschischBalinesischBasaa" + + "BedauyeBembaBhodschpuriBikolischBiniBlackfoot-SchpraachBraj-BhakhaBu" + + "rjatischBugineesischBlinCaddoKariibischAtsamCebuanoTschibtschaTschag" + + "ataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheye" + + "nneKoptischKrimtatarischKaschubischTakotaTargiinischDelaware-Schpraa" + + "chSlaveyTogribTinkaTogriNidersorbischTualaMittelniderländischTiulaEf" + + "ikischAltägyptischEkajukElamischMittelänglischEwondoPangwe-Schpraach" + + "FilipinoFonMittelfranzösischAltfranzösischNordfriesischOschtfriesisc" + + "hFriulischGaGayoGbayaGeezGilbertesischMittelhochtüütschAlthochtüütsc" + + "hGondiMongondouGotischGreboAltgriechischSchwiizertüütschKutchinischH" + + "aidaHawaiianischHiligaynonischHethitischMiaoObersorbischHupaIbanisch" + + "IlokanoInguschischLojbanischJüüdisch-PersischJüüdisch-ArabischKaraka" + + "lpakischKabylischKachin-SchpraachJjuKambaKawiKabardinischTyapKoroKha" + + "sischSakischKimbundu-SchpraachKonkaniKosraeanischKpelle-SchpraachKar" + + "atschaiisch-BalkarischKarelischOraon-SchpraachKumükischKutenai-Schpr" + + "aachLadinoLahndanischLambanischLesgischMongoRotse-SchpraachLuba-Lulu" + + "aLuiseno-SchpraachLunda-SchpraachLuo-SchpraachLushai-SchpraachMadure" + + "sischKhottaMaithiliMakassarischManding-SchpraachMassai-SchpraachMoks" + + "chamordwinischMandaresischMende-SchpraachMittelirischMicmac-Schpraac" + + "hMinangkabau-SchpraachMandschurischMeithei-SchpraachMohawk-Schpraach" + + "Mossi-SchpraachMehrschpraachigMuskogee-SchpraachMirandesischMarwaris" + + "chErzyaNeapolitanischNidertüütschNewarischNias-SchpraachNiue-Schpraa" + + "chNogaischAltnordischN’KoNord-Sotho-SchpraachAlt-NewariNyamwezi-Schp" + + "raachNyankoleNyoroNzimaOsage-SchpraachOsmanischPangasinanischMittelp" + + "ersischPampanggan-SchpraachPapiamentoPalauAltpersischPhönikischPonap" + + "eanischAltprovenzalischRajasthaniOschterinsel-SchpraachRarotonganisc" + + "hZigüünerschpraachAromunischSandawe-SchpraachJakutischSamaritanischS" + + "asakSantaliSizilianischSchottischSelkupischAltirischSchan-SchpraachS" + + "idamoSüüd-SamischLule-SamischInari-SamischSkolt-SamischSoninke-Schpr" + + "aachSogdischSrananischSerer-SchpraachSukuma-SchpraachSusuSumerischAl" + + "tsyrischSyrischTemneTereno-SchpraachTetum-SchpraachTigreTiv-Schpraac" + + "hTokelauanischKlingonischTlingit-SchpraachTamaseqTsonga-SchpraachNeu" + + "melanesischTsimshian-SchpraachTumbuka-SchpraachElliceanischTuwinisch" + + "UdmurtischUgaritischMbundu-SchpraachRootVai-SchpraachWotischWalamo-S" + + "chpraachWarayWasho-SchpraachKalmückischYao-SchpraachYapesischZapotek" + + "ischBliss-SymboolZenagaZuni-SchpraachKän schpraachliche InhaltZazaÖs" + + "chtriichischs TüütschSchwiizer HochtüütschAuschtralischs ÄnglischKan" + + "adischs ÄnglischBritischs ÄnglischAmerikanischs ÄnglischLatiinamerik" + + "anischs SchpanischIbeerischs SchpanischKanadischs FranzösischSchwiiz" + + "er FranzösischFläämischBrasilianischs PortugiisischIberischs Portugi" + + "isischMoldawischSerbo-KroatischVeräifachts ChineesischTradizionells " + + "Chineesisch", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0009, 0x0014, 0x0021, 0x002a, 0x0033, 0x003d, 0x004b, - 0x0054, 0x0060, 0x0069, 0x0073, 0x0086, 0x0093, 0x00a0, 0x00ac, - 0x00ac, 0x00b3, 0x00c0, 0x00ca, 0x00d5, 0x00de, 0x00eb, 0x00eb, - 0x00eb, 0x00f3, 0x00f3, 0x0100, 0x0111, 0x011f, 0x012a, 0x0133, - 0x013a, 0x0144, 0x014e, 0x0151, 0x015c, 0x0165, 0x016e, 0x0179, - 0x0182, 0x018a, 0x0193, 0x0193, 0x019b, 0x01a5, 0x01b2, 0x01c0, - 0x01ce, 0x01d5, 0x01d5, 0x01e0, 0x01ec, 0x01fa, 0x01fa, 0x0200, - 0x020b, 0x0210, 0x0210, 0x021a, 0x0226, 0x0230, 0x023a, 0x023a, - // Entry 40 - 7F - 0x023a, 0x0246, 0x0246, 0x024a, 0x024a, 0x024a, 0x024d, 0x0259, - 0x0266, 0x026f, 0x0279, 0x0283, 0x028f, 0x028f, 0x028f, 0x028f, - 0x0299, 0x0299, 0x029e, 0x02a5, 0x02b2, 0x02b2, 0x02bf, 0x02c7, - 0x02c7, 0x02c7, 0x02d2, 0x02dd, 0x02ea, 0x02ea, 0x02ea, 0x02f3, - 0x02fd, 0x0307, 0x0307, 0x0310, 0x031d, 0x031d, 0x0324, 0x0330, - 0x033a, 0x0345, 0x0350, 0x035b, 0x0366, 0x0371, 0x0371, 0x037d, - 0x038a, 0x038a, 0x0396, 0x03a6, 0x03ba, 0x03ba, 0x03ba, 0x03c5, - 0x03c5, 0x03c5, 0x03c5, 0x03cb, 0x03d5, 0x03e2, 0x03e2, 0x03eb, - // Entry 80 - BF - 0x03f8, 0x0405, 0x0410, 0x041f, 0x0429, 0x0433, 0x043d, 0x044c, - 0x0454, 0x0454, 0x045a, 0x046c, 0x0472, 0x0480, 0x048c, 0x0499, - 0x04a5, 0x04b0, 0x04ba, 0x04c4, 0x04cd, 0x04d8, 0x04e2, 0x04ef, - 0x04fa, 0x0505, 0x050f, 0x0517, 0x0524, 0x0530, 0x053f, 0x054c, - 0x0558, 0x0564, 0x056d, 0x057b, 0x0586, 0x058f, 0x059c, 0x05a6, - 0x05b0, 0x05bb, 0x05c0, 0x05d1, 0x05d1, 0x05d1, 0x05d7, 0x05e1, - 0x05e1, 0x05e8, 0x05e8, 0x05f4, 0x05f9, 0x0606, 0x0606, 0x0606, - 0x0606, 0x061a, 0x0626, 0x0626, 0x0626, 0x062f, 0x062f, 0x063c, - // Entry C0 - FF - 0x063c, 0x063c, 0x0649, 0x0649, 0x0649, 0x0649, 0x0649, 0x0649, - 0x065d, 0x065d, 0x0673, 0x0687, 0x068b, 0x06ab, 0x06ba, 0x06ba, - 0x06ba, 0x06c7, 0x06d3, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db, - 0x06db, 0x06e0, 0x06e0, 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06e4, - 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06f6, 0x06f6, 0x06fe, - 0x0709, 0x070e, 0x070e, 0x071a, 0x0726, 0x0726, 0x0726, 0x0726, - 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, - 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, - // Entry 100 - 13F - 0x072e, 0x072e, 0x072e, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, - 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x0748, 0x0748, 0x0748, - 0x075c, 0x075c, 0x075c, 0x0769, 0x076d, 0x0771, 0x077e, 0x078c, - 0x078c, 0x078c, 0x079b, 0x07a9, 0x07a9, 0x07a9, 0x07a9, 0x07ac, - 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, - 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, - 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, - 0x07ac, 0x07ac, 0x07bc, 0x07bc, 0x07bc, 0x07bc, 0x07bc, 0x07bc, + 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, + 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008f, + 0x0096, 0x009d, 0x00a7, 0x00b1, 0x00bd, 0x00c5, 0x00d1, 0x00e1, + 0x00e9, 0x00f1, 0x00f5, 0x0100, 0x010d, 0x011b, 0x0124, 0x012c, + 0x0135, 0x0141, 0x014b, 0x014e, 0x0158, 0x0161, 0x016c, 0x0176, + 0x017f, 0x0187, 0x018f, 0x0192, 0x019a, 0x01a7, 0x01b1, 0x01bd, + 0x01c6, 0x01cd, 0x01e2, 0x01eb, 0x01f2, 0x01fa, 0x0209, 0x020f, + 0x0219, 0x021e, 0x0227, 0x0230, 0x0238, 0x0241, 0x024a, 0x0250, + // Entry 40 - 7F + 0x025b, 0x0266, 0x0271, 0x0275, 0x0283, 0x028a, 0x028d, 0x0299, + 0x02a5, 0x02ad, 0x02b6, 0x02bf, 0x02c8, 0x02d4, 0x02e4, 0x02ec, + 0x02f6, 0x0306, 0x0315, 0x031c, 0x0327, 0x0337, 0x0343, 0x034b, + 0x0359, 0x0361, 0x036c, 0x0372, 0x037f, 0x038e, 0x0399, 0x03a0, + 0x03a8, 0x03b1, 0x03b5, 0x03bd, 0x03c9, 0x03d8, 0x03dd, 0x03e8, + 0x03f1, 0x03fb, 0x0402, 0x040b, 0x0415, 0x041f, 0x0428, 0x043e, + 0x0449, 0x044f, 0x045d, 0x046f, 0x0481, 0x0499, 0x04a9, 0x04b8, + 0x04c3, 0x04d3, 0x04d8, 0x04dd, 0x04e6, 0x04f3, 0x04f7, 0x04ff, + // Entry 80 - BF + 0x0506, 0x0513, 0x051a, 0x0528, 0x0537, 0x0541, 0x0549, 0x0552, + 0x055c, 0x0564, 0x056a, 0x0576, 0x057b, 0x0588, 0x0592, 0x059c, + 0x05a6, 0x05ad, 0x05b3, 0x05bc, 0x05c4, 0x05c9, 0x05df, 0x05eb, + 0x05f5, 0x05fc, 0x0605, 0x060b, 0x0617, 0x0624, 0x062c, 0x0637, + 0x0647, 0x0650, 0x0659, 0x065f, 0x0668, 0x0671, 0x067a, 0x0684, + 0x0688, 0x0691, 0x06a0, 0x06ad, 0x06b5, 0x06bf, 0x06c4, 0x06c9, + 0x06d1, 0x06d7, 0x06dd, 0x06e8, 0x06ec, 0x06f0, 0x06f6, 0x06fd, + 0x0703, 0x0703, 0x070b, 0x070b, 0x070f, 0x0718, 0x0718, 0x0721, + // Entry C0 - FF + 0x0721, 0x0730, 0x073c, 0x0742, 0x074e, 0x0759, 0x0759, 0x0760, + 0x0760, 0x0760, 0x0766, 0x0766, 0x0766, 0x0766, 0x0766, 0x0774, + 0x0774, 0x077a, 0x0786, 0x0791, 0x0791, 0x0796, 0x0796, 0x0796, + 0x0796, 0x079d, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, + 0x07ad, 0x07b6, 0x07ba, 0x07ba, 0x07ba, 0x07cd, 0x07cd, 0x07cd, + 0x07d8, 0x07d8, 0x07d8, 0x07d8, 0x07e2, 0x07ee, 0x07ee, 0x07f2, + 0x07f2, 0x07f7, 0x0801, 0x0801, 0x0806, 0x080d, 0x080d, 0x0818, + 0x0825, 0x082f, 0x083e, 0x0845, 0x084c, 0x0855, 0x085d, 0x0865, + // Entry 100 - 13F + 0x0865, 0x086d, 0x086d, 0x087a, 0x087a, 0x0885, 0x088b, 0x0896, + 0x0896, 0x08a8, 0x08ae, 0x08b4, 0x08b9, 0x08b9, 0x08be, 0x08cb, + 0x08cb, 0x08d0, 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08e9, 0x08f1, + 0x08f1, 0x08fe, 0x0904, 0x090c, 0x091b, 0x091b, 0x0921, 0x0921, + 0x0931, 0x0939, 0x0939, 0x093c, 0x093c, 0x094e, 0x095d, 0x095d, + 0x096a, 0x0978, 0x0981, 0x0983, 0x0983, 0x0983, 0x0987, 0x098c, + 0x098c, 0x0990, 0x099d, 0x099d, 0x09b0, 0x09c0, 0x09c0, 0x09c5, + 0x09ce, 0x09d5, 0x09da, 0x09e7, 0x09f9, 0x09f9, 0x09f9, 0x09f9, // Entry 140 - 17F - 0x07bc, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, - 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07d4, 0x07e2, 0x07f9, 0x0803, - 0x0803, 0x0803, 0x0816, 0x0816, 0x081e, 0x081e, 0x081e, 0x081e, - 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x082a, - 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, - 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, - 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x0831, 0x0831, - 0x0831, 0x0831, 0x0831, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, + 0x0a04, 0x0a09, 0x0a09, 0x0a15, 0x0a15, 0x0a23, 0x0a2d, 0x0a31, + 0x0a3d, 0x0a3d, 0x0a41, 0x0a49, 0x0a49, 0x0a50, 0x0a5b, 0x0a5b, + 0x0a5b, 0x0a65, 0x0a65, 0x0a65, 0x0a78, 0x0a8b, 0x0a8b, 0x0a99, + 0x0aa2, 0x0ab2, 0x0ab5, 0x0aba, 0x0abe, 0x0aca, 0x0aca, 0x0ace, + 0x0ace, 0x0ace, 0x0ace, 0x0ad2, 0x0ad2, 0x0ada, 0x0ae1, 0x0ae1, + 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0af3, 0x0af3, 0x0afa, 0x0b06, + 0x0b16, 0x0b2f, 0x0b2f, 0x0b2f, 0x0b38, 0x0b47, 0x0b47, 0x0b47, + 0x0b47, 0x0b51, 0x0b62, 0x0b68, 0x0b68, 0x0b73, 0x0b7d, 0x0b85, // Entry 180 - 1BF - 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, - 0x0844, 0x0844, 0x0844, 0x0844, 0x084e, 0x084e, 0x084e, 0x084e, - 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, - 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, - 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x086b, - 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, - 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, - 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x0875, 0x0875, 0x0875, + 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b8a, 0x0b99, 0x0b99, + 0x0b99, 0x0ba3, 0x0bb4, 0x0bc3, 0x0bd0, 0x0be0, 0x0be0, 0x0be0, + 0x0be0, 0x0beb, 0x0beb, 0x0bf1, 0x0bf9, 0x0c05, 0x0c16, 0x0c26, + 0x0c26, 0x0c38, 0x0c44, 0x0c53, 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, + 0x0c5f, 0x0c6f, 0x0c84, 0x0c91, 0x0ca2, 0x0cb2, 0x0cc1, 0x0cc1, + 0x0cc1, 0x0cd0, 0x0ce2, 0x0cee, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cfd, + 0x0cfd, 0x0cfd, 0x0d0b, 0x0d0b, 0x0d19, 0x0d22, 0x0d30, 0x0d3e, + 0x0d3e, 0x0d3e, 0x0d3e, 0x0d46, 0x0d51, 0x0d51, 0x0d57, 0x0d6b, // Entry 1C0 - 1FF - 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, - 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, - 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, - 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x087c, 0x087c, 0x087c, - 0x087c, 0x087c, 0x087c, 0x087c, 0x087c, 0x0886, 0x0886, 0x0886, - 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, - 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, - 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, + 0x0d6b, 0x0d75, 0x0d87, 0x0d8f, 0x0d94, 0x0d99, 0x0da8, 0x0db1, + 0x0dbf, 0x0dcd, 0x0de1, 0x0deb, 0x0df0, 0x0df0, 0x0df0, 0x0df0, + 0x0df0, 0x0dfb, 0x0dfb, 0x0e06, 0x0e06, 0x0e06, 0x0e12, 0x0e12, + 0x0e22, 0x0e22, 0x0e22, 0x0e2c, 0x0e42, 0x0e50, 0x0e50, 0x0e50, + 0x0e50, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e6d, 0x0e6d, 0x0e7e, + 0x0e87, 0x0e94, 0x0e94, 0x0e99, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, + 0x0eac, 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0ec0, + 0x0ec0, 0x0ec9, 0x0ec9, 0x0ec9, 0x0ed8, 0x0ed8, 0x0ede, 0x0ede, // Entry 200 - 23F - 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, - 0x0886, 0x0886, 0x0886, 0x0891, 0x0891, 0x0891, 0x0891, 0x0891, - 0x0891, 0x0891, 0x0891, 0x0899, 0x0899, 0x0899, 0x0899, 0x0899, - 0x0899, 0x0899, 0x0899, 0x0899, 0x0899, 0x08a3, 0x08a3, 0x08a3, - 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, - 0x08a3, 0x08a3, 0x08a3, 0x08b9, 0x08b9, 0x08b9, 0x08b9, 0x08b9, - 0x08b9, 0x08b9, 0x08b9, 0x08b9, 0x08c6, 0x08c6, 0x08c6, 0x08c6, - 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, + 0x0ede, 0x0eec, 0x0ef8, 0x0f05, 0x0f12, 0x0f23, 0x0f2b, 0x0f35, + 0x0f44, 0x0f44, 0x0f44, 0x0f54, 0x0f58, 0x0f61, 0x0f61, 0x0f6b, + 0x0f72, 0x0f72, 0x0f72, 0x0f77, 0x0f77, 0x0f87, 0x0f96, 0x0f9b, + 0x0fa8, 0x0fb5, 0x0fb5, 0x0fc0, 0x0fd1, 0x0fd1, 0x0fd8, 0x0fe8, + 0x0ff6, 0x0ff6, 0x0ff6, 0x0ff6, 0x1009, 0x1009, 0x101a, 0x1026, + 0x1026, 0x102f, 0x102f, 0x1039, 0x1043, 0x1053, 0x1057, 0x1064, + 0x1064, 0x1064, 0x1064, 0x1064, 0x106b, 0x106b, 0x106b, 0x106b, + 0x107b, 0x1080, 0x108f, 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, // Entry 240 - 27F - 0x08c6, 0x08c6, 0x08d9, 0x08d9, 0x08d9, 0x08d9, 0x08d9, 0x08d9, - 0x08d9, 0x08e7, 0x08e7, 0x08fb, 0x0912, 0x0928, 0x093f, 0x0959, - 0x096d, 0x098c, 0x09a5, 0x09c7, 0x09e0, 0x09f7, 0x09f7, 0x0a10, - 0x0a2e, 0x0a2e, 0x0a37, 0x0a54, 0x0a70, 0x0a70, 0x0a7f, 0x0a7f, - 0x0aa3, 0x0acc, + 0x10a8, 0x10b1, 0x10b1, 0x10b1, 0x10b1, 0x10b1, 0x10bc, 0x10c9, + 0x10c9, 0x10cf, 0x10cf, 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x10fb, + 0x1115, 0x112c, 0x1144, 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, + 0x11b5, 0x11b5, 0x11cc, 0x11e2, 0x11e2, 0x11ed, 0x1209, 0x1220, + 0x122a, 0x1239, 0x1239, 0x1251, 0x126a, }, }, - { // kw - "kernewek", - []uint16{ // 90 elements + { // gu + guLangStr, + guLangIdx, + }, + { // guz + "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + + "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + + "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + + "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + + "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + + "rubaKichinaKizuluEkegusii", + []uint16{ // 320 elements // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, + 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, + 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + // Entry 40 - 7F + 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, + 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, + 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + // Entry 80 - BF + 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, + 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, + 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, + 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, + 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry C0 - FF + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry 100 - 13F + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171, + }, + }, + { // gv + "Gaelg", + []uint16{ // 55 elements 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, }, }, - { // ky - kyLangStr, - kyLangIdx, - }, - { // lag - "KɨakáaniKɨmʉháariKɨaráabuKɨberalúusiKɨbulugáriaKɨbangálaKɨchéekiKɨjerʉmá" + - "aniKɨgiríkiKɨɨngeréesaKɨhispániaKɨajéemiKɨfaráansaKɨhaúusaKɨhíindiKɨ" + - "hungáriKɨɨndonésiaKiígiboKɨtaliáanoKɨjapáaniKɨjáavaKɨkambódiaKɨkoréa" + - "KɨmelésiaKɨbáamaKɨnepáaliKɨholáanziKɨpúnjabiKɨpólandiKɨréenoKɨromaní" + - "aKɨrúusiKɨnyarwáandaKɨsómáaliKɨswíidiKɨtamíiliKɨtáilandiKɨturúukiKɨu" + - "kɨraníaKɨúrduKɨvietináamuKɨyorúubaKɨchíinaKɨzúuluKɨlaangi", - []uint16{ // 379 elements + { // ha + "AkanAmharikLarabciBelarusanciBulgaranciBengaliHarshen CakJamusanciGirkan" + + "ciTuranciIspaniyanciParisanciFaransanciHausaHarshen HindiHarshen Hun" + + "gariHarshen IndunusiyaInyamuranciItaliyanciJapananciJabananciHarshen" + + " KimarHarshen KoreyaHarshen MalaiBurmanciNepaliHolanciPunjabiHarshen" + + " PolanHarshen PortugalRomaniyanciRashanciKiniyaruwandaSomaliHarshen " + + "SuwedanTamilThaiHarshen TurkiyyaHarshen YukurenHarshen UrduHarshen B" + + "iyetinamYarbanciHarshen SinHarshen Zulu", + []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002d, 0x003a, - 0x003a, 0x003a, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x005d, 0x005d, 0x005d, 0x005d, 0x0067, 0x0075, 0x0075, 0x0081, - 0x0081, 0x0081, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x0097, - 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a1, - 0x00a1, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b6, 0x00b6, 0x00b6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0027, + 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0051, 0x0051, 0x005c, + 0x005c, 0x005c, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006f, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0074, + 0x0074, 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090, // Entry 40 - 7F - 0x00b6, 0x00c4, 0x00c4, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00d8, 0x00d8, 0x00e3, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115, - 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, - 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x0137, 0x0137, 0x0142, + 0x0090, 0x00a2, 0x00a2, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, + 0x00b7, 0x00b7, 0x00c0, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, + 0x00c9, 0x00c9, 0x00d6, 0x00d6, 0x00e4, 0x00e4, 0x00e4, 0x00e4, + 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, + 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, + 0x00e4, 0x00e4, 0x00e4, 0x00f1, 0x00f1, 0x00f9, 0x00f9, 0x00f9, + 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x011a, // Entry 80 - BF - 0x0142, 0x014b, 0x014b, 0x014b, 0x014b, 0x0156, 0x015f, 0x016d, - 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, - 0x016d, 0x016d, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, - 0x0183, 0x0183, 0x018e, 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, - 0x019a, 0x019a, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01b2, - 0x01ba, 0x01ba, 0x01ba, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, - 0x01c8, 0x01d3, 0x01d3, 0x01dd, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry C0 - FF - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry 100 - 13F - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry 140 - 17F - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01ef, + 0x011a, 0x012a, 0x012a, 0x012a, 0x012a, 0x0135, 0x013d, 0x014a, + 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, + 0x014a, 0x014a, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x015f, 0x015f, 0x0164, 0x0164, 0x0164, 0x0168, 0x0168, 0x0168, + 0x0168, 0x0168, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0187, + 0x0193, 0x0193, 0x0193, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, + 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01c3, }, }, - { // lb - "AfarAbchaseschAvesteschAfrikaansAkanAmhareschAragoneseschArabeschAssames" + - "eschAwareschAymaraAserbaidschaneschBaschkireschWäissrusseschBulgares" + - "chBislamaBambara-SproochBengaleschTibeteschBretoneschBosneschKatalan" + - "eschTschetscheneschChamorro-SproochKorseschCreeTschecheschKierchesla" + - "weschTschuwascheschWaliseschDäneschDäitschMaldiveschBhutaneschEwe-Sp" + - "roochGriicheschEngleschEsperantoSpueneschEstneschBaskeschPerseschFul" + - "FinneschFidschianeschFäröeschFranséischWestfrieseschIreschSchottesch" + - "t GälleschGalizeschGuaraniGujaratiManxHausaHebräeschHindiHiri-MotuKr" + - "oateschHaitianeschUngareschArmeneschHerero-SproochInterlinguaIndones" + - "eschInterlingueIgbo-SproochSichuan YiInupiakIdo-SproochIslänneschIta" + - "lieneschInukitutJapaneschJavaneschGeorgeschKongoleseschKikuyu-Sprooc" + - "hKwanyamaKasacheschGrönlänneschKambodschaneschKannadaKoreaneschKanur" + - "i-SproochKaschmireschKurdeschKomi-SproochKorneschKirgiseschLatäinLët" + - "zebuergeschGanda-SproochLimburgeschLingalaLaoteschLitaueschLuba-Kata" + - "ngaLetteschMalagassi-SproochMarschalleseschMaoriMazedoneschMalayalam" + - "MongoleschMarathiMalaieschMalteseschBirmaneschNaurueschNord-Ndebele-" + - "SproochNepaleseschNdongaHollänneschNorwegesch NynorskNorwegesch Bokm" + - "ålSüd-Ndebele-SproochNavajoNyanja-SproochOkzitaneschOjibwa-SproochO" + - "romoOrijaOsseteschPandschabeschPaliPolneschPaschtuPortugiseschQuechu" + - "aRätoromaneschRundi-SproochRumäneschRusseschRuandeschSanskritSardesc" + - "hSindhiNordsameschSangoSinghaleseschSlowakeschSloweneschSamoaneschSh" + - "onaSomaliAlbaneschSerbeschSwaziSüd-Sotho-SproochSundaneseschSchwedes" + - "chSuaheliTamileschTeluguTadschikeschThailänneschTigrinjaTurkmeneschT" + - "swana-SproochTongaeschTierkeschTsongaTatareschTahiteschUigureschUkra" + - "ineschUrduUsbekeschVenda-SproochVietnameseschVolapükWallouneschWolof" + - "XhosaJiddeschYorubaZhuangChineseschZuluAceh-SproochAcholi-SproochAda" + - "ngmeAdygéieschTunesescht ArabeschAfrihiliAghemAinu-SproochAkkadeschA" + - "labamaAleuteschGegeschSüd-AlaeschAlengleschAngikaAramäeschMapudungun" + - "AraonaArapaho-SproochAlgerescht ArabeschArawak-SproochMarokkanescht " + - "ArabeschEgyptescht ArabeschAsu (Tanzania)Amerikanesch ZeechesproochA" + - "sturianeschKotavaAwadhiBelutscheschBalineseschBaireschBasaa-SproochB" + - "amunBatak TobaGhomálá’BedauyeBemba-SproochBetawiBenaBafutBadagaBhods" + - "chpuriBikol-SproochBini-SproochBanjareseschKomBlackfoot-SproochBishn" + - "upriyaBachtiareschBraj-BhakhaBrahuiBodoAkooseBurjateschBugineseschBu" + - "luBlinMedumbaCaddoKaribeschCayugaAtsamCebuanoKigaChibcha-SproochTsch" + - "agataeschTrukeseschMariChinookChoctawChipewyanCherokeeCheyenneSorani" + - "KopteschCapiznonKrimtatareschKaschubeschDakota-SproochDargineschTait" + - "aDelaware-SproochSlaveDogribDinka-SproochZarmaDogriNiddersorbeschZen" + - "tral-DusunDualaMëttelhollänneschJola-FonyiDyula-SproochDazagaKiembuE" + - "fikEmilianeschEgypteschEkajukElameschMëttelengleschYup’ikEwondoExtre" + - "madureschPangwe-SproochFilipinoMeänkieliFon-SproochCajunMëttelfransé" + - "ischAlfranséischFrankoprovenzaleschNordfrieseschOstfrieseschFriulesc" + - "hGa-SproochGagauseschGan-ChineseschGayoGbaya-SproochZoroastrianescht" + - " DariGeezGilberteseschGilakiMëttelhéichdäitschAlhéichdäitschGoan-Kon" + - "kaniGondi-SproochMongondouGoteschGrebo-SproochAlgriicheschSchwäizerd" + - "äitschWayuuFarefareGusii-SproochKutchin-SproochHaida-SproochHakka-C" + - "hineseschHawaieschFidschi-HindiHiligaynon-SproochHethiteschMiao-Spro" + - "ochUewersorbeschXiang-ChineseschHupaIbanIbibioIlokano-SproochIngusch" + - "eschIschoreschJamaikanesch-KreoleschLojbanNgombaMachameJiddesch-Pers" + - "eschJiddesch-ArabeschJüteschKarakalpakeschKabyleschKachin-SproochJju" + - "KambaKawiKabardineschKanembuTyapMakondeKabuverdianuKenyangKoroKainga" + - "ngKhasi-SproochSakeschKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbund" + - "u-SproochKomi-PermiakKonkaniKosraeaneschKpelle-SproochKaratschaiesch" + - "-BalkareschKrioKinaray-aKareleschOraon-SproochShambalaBafiaKölschKum" + - "ükeschKutenai-SproochLadinoLangiLahndaLamba-SproochLesgeschLingua F" + - "ranca NovaLigureschLiveschLakota-SproochLombardeschMongoRotse-Sprooc" + - "hLettgalleschLuba-LuluaLuiseno-SproochLunda-SproochLuo-SproochLushai" + - "-SproochOlulujiaKlassescht ChineseschLasesch SproochMadureseschMafaK" + - "hottaMaithiliMakassareschManding-SproochMassai-SproochMabaMokshaMand" + - "areseschMende-SproochMeru-SproochMorisyenMëttelireschMakhuwa-MeettoM" + - "eta’Micmac-SproochMinangkabau-SproochMandschureschMeithei-SproochMoh" + - "awk-SproochMossi-SproochWest-MariMundangMéisproochegMuskogee-Sprooch" + - "MirandeseschMarwariMentawaiMyeneErsja-MordwineschMazandaraniMin-Nan-" + - "ChineseschNeapolitaneschNamaNidderdäitschNewariNias-SproochNiue-Spro" + - "ochAo NagaKwasioNgiemboonNogaiAlnordeschNovialN’KoNord-Sotho-Sprooch" + - "NuerAl-NewariNyamwezi-SproochNyankoleNyoroNzimaOsage-SproochOsmanesc" + - "hPangasinan-SproochMëttelperseschPampanggan-SproochPapiamentoPalauPi" + - "cardeschPennsylvaniadäitschPlattdäitschAlperseschPfälzesch DäitschPh" + - "önikeschPiemonteseschPonteschPonapeaneschPreiseschAlprovenzaleschQu" + - "iché-SproochKichwa (Chimborazo-Gebidder)RajasthaniOuschterinsel-Spro" + - "ochRarotonganeschRomagnolTarifitRomboRomaniRotumaneschRussineschRovi" + - "anaAromuneschRwaSandawe-SproochJakuteschSamaritaneschSamburuSasakSan" + - "taliSaurashtraNgambaySanguSizilianeschSchotteschSassareseschSenecaSe" + - "naSeriSelkupeschKoyra SenniAlireschSamogiteschTaschelhitSchan-Sprooc" + - "hTschadesch-ArabeschSidamoNidderschleseschSelayarSüdsameschLule-Lapp" + - "eschInari-LappeschSkolt-LappeschSoninke-SproochSogdeschSrananeschSer" + - "er-SproochSahoSaterfrieseschSukuma-SproochSusuSumereschKomoreschAlsy" + - "reschSyreschSchleseschTuluTemneTesoTereno-SproochTetum-SproochTigreT" + - "iv-SproochTokelauaneschTsachureschKlingoneschTlingit-SproochTaleschT" + - "amaseqTsonga-SproochNeimelaneseschTuroyoSeediqTsakoneschTsimshian-Sp" + - "roochTateschTumbuka-SproochElliceaneschTasawaqTuwineschMëttlert-Atla" + - "s-TamazightUdmurteschUgariteschMbundu-SproochRootVai-SproochVenezesc" + - "hWepseschWestflämeschMainfränkeschWoteschVoroVunjoWalliserdäitschWal" + - "amo-SproochWarayWasho-SproochWu-ChineseschKalmückeschMingrelesch Spr" + - "oochSogaYao-SproochYapeseschYangbenYembaNheengatuKantoneseschZapotek" + - "eschBliss-SymbolerSeelänneschZenagaMarokkanescht Standard-TamazightZ" + - "uni-SproochKeng SproochinhalterZazaModernt HéicharabeschÉisträichesc" + - "ht DäitschSchwäizer HéichdäitschAustralescht EngleschKanadescht Engl" + - "eschBritescht EngleschAmerikanescht EngleschLatäinamerikanescht Spue" + - "neschEuropäescht SpueneschMexikanescht SpueneschKanadescht Franséisc" + - "hSchwäizer FranséischFlämeschBrasilianescht PortugiseschEuropäescht " + - "PortugiseschMoldaweschSerbo-KroateschKongo-SwahiliChinesesch (verein" + - "facht)Chinesesch (traditionell)", - []uint16{ // 610 elements + { // haw + "ʻAlapiaWaleKenemakaKelemāniaHelenePelekāniaPanioloPīkīPalaniʻAilikiHeber" + + "aʻĪkāliaKepanīKōleaLākinaMāoriHōlaniPukikīLūkiaKāmoaKuekeneTongaPola" + + "polaWiekanamaPākēKuikilani KelemāniaʻŌlelo HawaiʻiʻIke ʻole ‘ia a kū" + + "pono ʻole paha ka ʻōleloPelekāne Nū HōlaniPelekāne KanakāPelekānia P" + + "ekekānePelekānia ʻAmelikaPalani KanakāKuikilaniPukikī PalakilaPākē H" + + "oʻomaʻalahi ʻiaPākē Kuʻuna", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, - 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0085, 0x008f, - 0x0096, 0x00a5, 0x00af, 0x00b8, 0x00c2, 0x00ca, 0x00d5, 0x00e4, - 0x00f4, 0x00fc, 0x0100, 0x010b, 0x011a, 0x0128, 0x0131, 0x0139, - 0x0141, 0x014b, 0x0155, 0x0160, 0x016a, 0x0172, 0x017b, 0x0184, - 0x018c, 0x0194, 0x019c, 0x019f, 0x01a7, 0x01b4, 0x01be, 0x01c9, - 0x01d6, 0x01dc, 0x01f1, 0x01fa, 0x0201, 0x0209, 0x020d, 0x0212, - 0x021c, 0x0221, 0x022a, 0x0233, 0x023e, 0x0247, 0x0250, 0x025e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000c, 0x0014, + 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, 0x002e, 0x002e, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x0041, + 0x0041, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, // Entry 40 - 7F - 0x0269, 0x0274, 0x027f, 0x028b, 0x0295, 0x029c, 0x02a7, 0x02b2, - 0x02bd, 0x02c5, 0x02ce, 0x02d7, 0x02e0, 0x02ec, 0x02fa, 0x0302, - 0x030c, 0x031a, 0x0329, 0x0330, 0x033a, 0x0348, 0x0354, 0x035c, - 0x0368, 0x0370, 0x037a, 0x0381, 0x0390, 0x039d, 0x03a8, 0x03af, - 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03e5, 0x03f4, 0x03f9, 0x0404, - 0x040d, 0x0417, 0x041e, 0x0427, 0x0431, 0x043b, 0x0444, 0x0458, - 0x0463, 0x0469, 0x0475, 0x0487, 0x0499, 0x04ad, 0x04b3, 0x04c1, - 0x04cc, 0x04da, 0x04df, 0x04e4, 0x04ed, 0x04fa, 0x04fe, 0x0506, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x0059, 0x0059, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, 0x0066, 0x0066, 0x0066, + 0x0066, 0x0066, 0x0066, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0073, 0x0073, + 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, + 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, + 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, // Entry 80 - BF - 0x050d, 0x0519, 0x0520, 0x052e, 0x053b, 0x0545, 0x054d, 0x0556, - 0x055e, 0x0566, 0x056c, 0x0577, 0x057c, 0x0589, 0x0593, 0x059d, - 0x05a7, 0x05ac, 0x05b2, 0x05bb, 0x05c3, 0x05c8, 0x05da, 0x05e6, - 0x05f0, 0x05f7, 0x0600, 0x0606, 0x0612, 0x061f, 0x0627, 0x0632, - 0x0640, 0x0649, 0x0652, 0x0658, 0x0661, 0x066a, 0x0673, 0x067d, - 0x0681, 0x068a, 0x0697, 0x06a4, 0x06ac, 0x06b7, 0x06bc, 0x06c1, - 0x06c9, 0x06cf, 0x06d5, 0x06df, 0x06e3, 0x06ef, 0x06fd, 0x0704, - 0x070f, 0x0722, 0x072a, 0x072f, 0x073b, 0x0744, 0x074b, 0x0754, + 0x007a, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1, + 0x00a1, 0x00a1, 0x00a1, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, // Entry C0 - FF - 0x075b, 0x0767, 0x0771, 0x0777, 0x0781, 0x078b, 0x0791, 0x07a0, - 0x07b3, 0x07c1, 0x07d7, 0x07ea, 0x07f8, 0x0812, 0x081e, 0x0824, - 0x082a, 0x0836, 0x0841, 0x0849, 0x0856, 0x085b, 0x0865, 0x0871, - 0x0878, 0x0885, 0x088b, 0x088f, 0x0894, 0x089a, 0x089a, 0x08a5, - 0x08b2, 0x08be, 0x08ca, 0x08cd, 0x08de, 0x08e9, 0x08f5, 0x0900, - 0x0906, 0x090a, 0x0910, 0x091a, 0x0925, 0x0929, 0x092d, 0x0934, - 0x0939, 0x0942, 0x0948, 0x094d, 0x0954, 0x0958, 0x0967, 0x0974, - 0x097e, 0x0982, 0x0989, 0x0990, 0x0999, 0x09a1, 0x09a9, 0x09af, - // Entry 100 - 13F - 0x09b7, 0x09bf, 0x09cc, 0x09d7, 0x09e5, 0x09ef, 0x09f4, 0x0a04, - 0x0a09, 0x0a0f, 0x0a1c, 0x0a21, 0x0a26, 0x0a34, 0x0a41, 0x0a46, - 0x0a59, 0x0a63, 0x0a70, 0x0a76, 0x0a7c, 0x0a80, 0x0a8b, 0x0a94, - 0x0a9a, 0x0aa2, 0x0ab1, 0x0ab9, 0x0abf, 0x0acd, 0x0adb, 0x0ae3, - 0x0aed, 0x0af8, 0x0afd, 0x0b0f, 0x0b1c, 0x0b2f, 0x0b3c, 0x0b48, - 0x0b51, 0x0b5b, 0x0b65, 0x0b73, 0x0b77, 0x0b84, 0x0b99, 0x0b9d, - 0x0baa, 0x0bb0, 0x0bc5, 0x0bd5, 0x0be1, 0x0bee, 0x0bf7, 0x0bfe, - 0x0c0b, 0x0c17, 0x0c29, 0x0c2e, 0x0c36, 0x0c43, 0x0c52, 0x0c5f, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + // Entry 100 - 13F + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c4, 0x00c4, 0x00c4, 0x00c4, // Entry 140 - 17F - 0x0c6f, 0x0c78, 0x0c85, 0x0c97, 0x0ca1, 0x0cad, 0x0cba, 0x0cca, - 0x0cce, 0x0cd2, 0x0cd8, 0x0ce7, 0x0cf2, 0x0cfc, 0x0d12, 0x0d18, - 0x0d1e, 0x0d25, 0x0d36, 0x0d47, 0x0d4f, 0x0d5d, 0x0d66, 0x0d74, - 0x0d77, 0x0d7c, 0x0d80, 0x0d8c, 0x0d93, 0x0d97, 0x0d9e, 0x0daa, - 0x0db1, 0x0db5, 0x0dbd, 0x0dca, 0x0dd1, 0x0ddd, 0x0de3, 0x0dec, - 0x0df0, 0x0df8, 0x0e08, 0x0e14, 0x0e1b, 0x0e27, 0x0e35, 0x0e4e, - 0x0e52, 0x0e5b, 0x0e64, 0x0e71, 0x0e79, 0x0e7e, 0x0e85, 0x0e8f, - 0x0e9e, 0x0ea4, 0x0ea9, 0x0eaf, 0x0ebc, 0x0ec4, 0x0ed6, 0x0edf, + 0x00c4, 0x00c4, 0x00c4, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, // Entry 180 - 1BF - 0x0ee6, 0x0ef4, 0x0eff, 0x0f04, 0x0f11, 0x0f11, 0x0f1d, 0x0f27, - 0x0f36, 0x0f43, 0x0f4e, 0x0f5c, 0x0f64, 0x0f79, 0x0f88, 0x0f93, - 0x0f97, 0x0f9d, 0x0fa5, 0x0fb1, 0x0fc0, 0x0fce, 0x0fd2, 0x0fd8, - 0x0fe4, 0x0ff1, 0x0ffd, 0x1005, 0x1012, 0x1020, 0x1027, 0x1035, - 0x1048, 0x1055, 0x1064, 0x1072, 0x107f, 0x1088, 0x108f, 0x109c, - 0x10ac, 0x10b8, 0x10bf, 0x10c7, 0x10cc, 0x10dd, 0x10e8, 0x10fa, - 0x1108, 0x110c, 0x111a, 0x1120, 0x112c, 0x1138, 0x113f, 0x1145, - 0x114e, 0x1153, 0x115d, 0x1163, 0x1169, 0x117b, 0x117f, 0x1188, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, // Entry 1C0 - 1FF - 0x1198, 0x11a0, 0x11a5, 0x11aa, 0x11b7, 0x11c0, 0x11d2, 0x11e1, - 0x11f3, 0x11fd, 0x1202, 0x120c, 0x1220, 0x122d, 0x1237, 0x124a, - 0x1255, 0x1262, 0x126a, 0x1276, 0x127f, 0x128e, 0x129d, 0x12b9, - 0x12c3, 0x12d8, 0x12e6, 0x12ee, 0x12f5, 0x12fa, 0x1300, 0x130b, - 0x1315, 0x131c, 0x1326, 0x1329, 0x1338, 0x1341, 0x134e, 0x1355, - 0x135a, 0x1361, 0x136b, 0x1372, 0x1377, 0x1383, 0x138d, 0x1399, - 0x1399, 0x139f, 0x13a3, 0x13a7, 0x13b1, 0x13bc, 0x13c4, 0x13cf, - 0x13d9, 0x13e6, 0x13f9, 0x13ff, 0x140f, 0x1416, 0x1421, 0x142e, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, // Entry 200 - 23F - 0x143c, 0x144a, 0x1459, 0x1461, 0x146b, 0x1478, 0x147c, 0x148a, - 0x1498, 0x149c, 0x14a5, 0x14ae, 0x14b7, 0x14be, 0x14c8, 0x14cc, - 0x14d1, 0x14d5, 0x14e3, 0x14f0, 0x14f5, 0x1500, 0x150d, 0x1518, - 0x1523, 0x1532, 0x1539, 0x1540, 0x154e, 0x155c, 0x1562, 0x1568, - 0x1572, 0x1583, 0x158a, 0x1599, 0x15a5, 0x15ac, 0x15b5, 0x15ce, - 0x15d8, 0x15e2, 0x15f0, 0x15f4, 0x15ff, 0x1608, 0x1610, 0x161d, - 0x162b, 0x1632, 0x1636, 0x163b, 0x164b, 0x1659, 0x165e, 0x166b, - 0x166b, 0x1678, 0x1684, 0x1697, 0x169b, 0x16a6, 0x16af, 0x16b6, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x0107, 0x0107, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, // Entry 240 - 27F - 0x16bb, 0x16c4, 0x16d0, 0x16db, 0x16e9, 0x16f5, 0x16fb, 0x171b, - 0x1727, 0x173b, 0x173f, 0x1755, 0x1755, 0x176e, 0x1787, 0x179c, - 0x17af, 0x17c1, 0x17d7, 0x17f5, 0x180b, 0x1821, 0x1821, 0x1837, - 0x184d, 0x184d, 0x1856, 0x1871, 0x188a, 0x1894, 0x18a3, 0x18b0, - 0x18c8, 0x18e1, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0107, 0x0107, 0x011c, 0x012d, 0x0141, 0x0155, 0x0155, 0x0155, + 0x0155, 0x0155, 0x0163, 0x016c, 0x016c, 0x016c, 0x017c, 0x017c, + 0x017c, 0x017c, 0x017c, 0x0196, 0x01a4, }, }, - { // lg - "Lu-akaaniLu-amharikiLuwarabuLubelarusiLubulugariyaLubengaliLuceekeLudaak" + - "iLugereeki/LuyonaaniLungerezaLusipanyaLuperusiLufalansaLuhawuzaLuhin" + - "duLuhangareLuyindonezyaLuyiboLuyitaleLujapaniLunnajjavaLukmeLukoreya" + - "LugandaLumalayiLubbamaLunepaliLuholandiLupunjabiLupolandiLupotugiizi" + - "LulomaniyaLulasaLunarwandaLusomaliyaLuswideniLutamiiruLuttaayiLutake" + - "LuyukurayineLu-uruduLuvyetinaamuLuyorubaLucayinaLuzzulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0026, 0x0032, - 0x0032, 0x0032, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0049, 0x0049, 0x0049, 0x0049, 0x005c, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x0087, - 0x0087, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00b1, 0x00b1, 0x00b9, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c8, 0x00c8, 0x00d0, 0x00d0, 0x00d0, 0x00d0, - 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7, - 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, - 0x00d7, 0x00d7, 0x00d7, 0x00df, 0x00df, 0x00e6, 0x00e6, 0x00e6, - 0x00ee, 0x00ee, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0100, 0x0100, 0x0109, - // Entry 80 - BF - 0x0109, 0x0114, 0x0114, 0x0114, 0x0114, 0x011e, 0x0124, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, - 0x0141, 0x0141, 0x014a, 0x014a, 0x014a, 0x0152, 0x0152, 0x0152, - 0x0152, 0x0152, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164, - 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0180, 0x0180, 0x0188, 0x018f, - }, + { // he + heLangStr, + heLangIdx, }, - { // lkt - "Abkhaz IyápiAvestan IyápiAfrikaans IyápiAmharic IyápiArab IyápiAssamese " + - "IyápiAvaric IyápiAzerbaijani IyápiBashkir IyápiBelarus IyápiBulgar I" + - "yápiBengali IyápiTibetan IyápiBosnia IyápiCatalan IyápiChechen Iyápi" + - "Maštíŋča Oyáte IyápiCzech IyápiChuvash IyápiWales IyápiDane IyápiIyá" + - "šiča IyápiGreece IyápiWašíčuiyapiEsperanto IyápiSpayóla IyápiEstoni" + - "a IyápiBasque IyápiPersian IyápiFinnish IyápiFiji IyápiFaroese Iyápi" + - "Wašíču Ikčéka IyápiIrish IyápiGalician IyápiGuarani IyápiGujarati Iy" + - "ápiHausa IyápiHebrew IyápiHindi IyápiCroatian IyápiHaiti IyápiHunga" + - "ry IyápiArmenia IyápiIndonesia IyápiIgbo IyápiIceland IyápiItalia Iy" + - "ápiKisúŋla IyápiJava IyápiGeoria IyápiKazakh IyápiKhmer IyápiKannad" + - "a IyápiKorea IyápiKashmir IyápiKurd IyápiKirghiz IyápiLatin IyápiLux" + - "embourg IyápiLao IyápiLithuania IyápiltLatvia IyápiMalagasy IyápiMao" + - "ri IyápiMacedonia IyápiMalayalam IyápiMarathi IyápiMalay IyápiMaltes" + - "e IyápiBurmese IyápiNepal IyápiDutch IyápiŠináglegleǧa IyápiȞaȟátȟuŋ" + - "waŋ IyápiOriya IyápiPunjabi IyápiPolish IyápiPashto IyápiPortuguese " + - "IyápiQuechua IyápiRomansh IyápiRomanian IyápiRussia IyápiSanskrit Iy" + - "ápiSindhi IyápiSinhala IyápiSlovak IyápiSlovenian IyápiSomali Iyápi" + - "Albanian IyápiSerbia IyápiSundanese IyápiSwedish IyápiSwahili IyápiT" + - "amil IyápiTelugu IyápiTajik IyápiThai IyápiTigrinya IyápiTurkmen Iyá" + - "piTongan IyápiTurkish IyápiTatar IyápiUyghur IyápiUkrain IyápiUrdu I" + - "yápiUzbek IyápiVietnamese IyápiWolof IyápiXhosa IyápiYoruba IyápiPȟe" + - "čhókaŋ Háŋska IyápiZulu IyápiAdyghe IyápiItóǧata Altai IyápiMaȟpíya" + - " Tȟó IyápiBaluchi IyápiBamun IyápiBeja IyápiBuriat IyápiMari IyápiCh" + - "erokee IyápiŠahíyela IyápiCoptic IyápiCrimean Turkish IyápiDakȟótiya" + - "piDargwa IyápiDogri IyápiFilipino IyápiGbaya IyápiHawaiian IyápiIngu" + - "sh IyápiKara-Kalpak IyápiKabardian IyápiLahnda IyápiLakȟólʼiyapiMizo" + - " IyápiNamipuri IyápiComonian IyápiTukté iyápi tȟaŋíŋ šniZaza IyápiŠa" + - "gláša WašíčuiyapiMílahaŋska WašíčuiyapiWiyóȟpeyata Spayóla IyápiSpay" + - "ólaȟča IyápiFlemish IyápiPȟečhókaŋ Háŋska Iyápi IkčékaPȟečhókaŋ Háŋ" + - "ska Iyápi Ȟče", - []uint16{ // 610 elements + { // hi + hiLangStr, + hiLangIdx, + }, + { // hr + hrLangStr, + hrLangIdx, + }, + { // hsb + "afaršćinaabchazišćinaafrikaanšćinaakanšćinaamharšćinaaragonšćinaarabšćin" + + "aasamšćinaawaršćinaaymaršćinaazerbajdźanšćinabaškiršćinaběłorušćinab" + + "ołharšćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišći" + + "nakatalanšćinačamoršćinakorsišćinakričěšćinawalizišćinadanšćinaněmči" + + "nadivehidzongkhaewegrjekšćinajendźelšćinaesperantošpanišćinaestišćin" + + "abaskišćinapersišćinafinšćinafidźišćinafäröšćinafrancošćinafrizišćin" + + "airšćinašotiska gelšćinagalicišćinaguaranigujaratimanšćinahausahebre" + + "jšćinahindišćinachorwatšćinahaitišćinamadźaršćinaarmenšćinainterling" + + "uaindonešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinaj" + + "apanšćinajavašćinageorgišćinakikuyukazachšćinagröndlandšćinakhmeršći" + + "nakannadšćinakorejšćinakašmiršćinakurdišćinakornišćinakirgišćinałaćo" + + "nšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinalub" + + "a-katangaletišćinamalagassišćinamaoršćinamakedonšćinamalajamšćinamon" + + "golšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinasewjero-n" + + "debelenepalšćinanižozemšćinanorwegšćina (nynorsk)norwegšćina (bokmål" + + ")navahookcitanšćinaoromoorijšćinapandźabšćinapólšćinapaštunšćinaport" + + "ugalšćinakečuaretoromanšćinakirundišćinarumunšćinarušćinakinjarwanda" + + "sanskritsardinšćinasindhišćinasewjerosamišćinasangosinghalšćinasłowa" + + "kšćinasłowjenšćinasamoašćinašonašćinasomališćinaalbanšćinaserbišćina" + + "siswatijužnosotšćina (Sesotho)sundanezišćinašwedšćinasuahelšćinatami" + + "lšćinatelugutadźikšćinathailandšćinatigrinšćinaturkmenšćinatswanaton" + + "gašćinaturkowšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaur" + + "dušćinauzbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajor" + + "ubašćinazhuangchinšćinazulušćinaaghemšćinaanglosakšćinaarawkanšćinap" + + "areasturšćinabembabenabodobuginezišćinachigachoctawšćinacherokeesora" + + "nitaitazarmadelnjoserbšćinadualajola-fonyiembufilipinšćinagagauzišći" + + "nagotšćinašwicarska němčinagusiihawaiišćinahornjoserbšćinangombamach" + + "amekabylšćinakambamakondekapverdšćinakoyra chiinikalenjinpermska kom" + + "išćinakonkanišambalabafialangilakotaluoluhyamasaišćinamerumauriciska" + + " kreolšćinamakhuwa-meettometa’mohawkšćinamundangkriknamadelnjoněmčin" + + "akwasion’konuernyankoleprušćinakʼicheʼromborwasamburusangusicilšćina" + + "senakoyra sennitašelhitjužnosamišćinalule-samišćinainari-samišćinask" + + "olt-samišćinasaterfrizišćinatesotasawaqtamazight (srjedźny Marokko)n" + + "jeznata rěčvaivunjosogatamazightžadyn rěčny wobsahmoderna wysokoarab" + + "šćinaawstriska němčinašwicarska wysokoněmčinaawstralska jendźelšćin" + + "akanadiska jendźelšćinabritiska jendźelšćinaameriska jendźelšćinałać" + + "onskoameriska španišćinaeuropska španišćinamexiska španišćinakanadis" + + "ka francošćinašwicarska francošćinaflamšćinabrazilska portugalšćinae" + + "uropska portugalšćinamoldawšćinaserbochorwatšćinakongoska suahelšćin" + + "achinšćina (zjednorjena)chinšćina (tradicionalna)", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000d, 0x001b, 0x002b, 0x002b, 0x0039, 0x0039, - 0x0044, 0x0053, 0x0060, 0x0060, 0x0072, 0x0080, 0x008e, 0x009b, - 0x009b, 0x009b, 0x00a9, 0x00b7, 0x00b7, 0x00c4, 0x00d2, 0x00e0, - 0x00e0, 0x00e0, 0x00fa, 0x0106, 0x0106, 0x0114, 0x0120, 0x012b, - 0x013c, 0x013c, 0x013c, 0x013c, 0x0149, 0x0157, 0x0167, 0x0176, - 0x0184, 0x0191, 0x019f, 0x019f, 0x01ad, 0x01b8, 0x01c6, 0x01df, - 0x01df, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0217, 0x0217, 0x0223, - 0x0230, 0x023c, 0x023c, 0x024b, 0x0257, 0x0265, 0x0273, 0x0273, + 0x0000, 0x000b, 0x0019, 0x0019, 0x0028, 0x0033, 0x003f, 0x004c, + 0x0057, 0x0062, 0x006d, 0x0079, 0x008c, 0x009a, 0x00a9, 0x00b7, + 0x00c4, 0x00cb, 0x00d8, 0x00e4, 0x00f1, 0x00fd, 0x010b, 0x010b, + 0x0118, 0x0124, 0x0127, 0x0132, 0x0132, 0x0132, 0x013f, 0x0149, + 0x0152, 0x0158, 0x0160, 0x0163, 0x016f, 0x017e, 0x0187, 0x0194, + 0x019f, 0x01ab, 0x01b7, 0x01b7, 0x01c1, 0x01ce, 0x01db, 0x01e8, + 0x01f4, 0x01fd, 0x0210, 0x021d, 0x0224, 0x022c, 0x0236, 0x023b, + 0x0248, 0x0254, 0x0254, 0x0262, 0x026e, 0x027c, 0x0288, 0x0288, // Entry 40 - 7F - 0x0273, 0x0283, 0x0283, 0x028e, 0x028e, 0x028e, 0x028e, 0x029c, - 0x02a9, 0x02a9, 0x02b9, 0x02c4, 0x02d1, 0x02d1, 0x02d1, 0x02d1, - 0x02de, 0x02de, 0x02ea, 0x02f8, 0x0304, 0x0304, 0x0312, 0x031d, - 0x031d, 0x031d, 0x032b, 0x0337, 0x0348, 0x0348, 0x0348, 0x0348, - 0x0352, 0x0364, 0x0364, 0x0371, 0x0380, 0x0380, 0x038c, 0x039c, - 0x03ac, 0x03ac, 0x03ba, 0x03c6, 0x03d4, 0x03e2, 0x03e2, 0x03e2, - 0x03ee, 0x03ee, 0x03fa, 0x03fa, 0x03fa, 0x03fa, 0x0410, 0x0410, - 0x0410, 0x0428, 0x0428, 0x0434, 0x0434, 0x0442, 0x0442, 0x044f, + 0x0293, 0x02a0, 0x02a0, 0x02a4, 0x02ae, 0x02b5, 0x02b8, 0x02c5, + 0x02d0, 0x02dc, 0x02e8, 0x02f3, 0x0300, 0x0300, 0x0306, 0x0306, + 0x0313, 0x0324, 0x0330, 0x033d, 0x0349, 0x0349, 0x0357, 0x0363, + 0x0363, 0x036f, 0x037b, 0x0389, 0x0399, 0x03a4, 0x03b1, 0x03b8, + 0x03c2, 0x03ce, 0x03da, 0x03e5, 0x03f5, 0x03f5, 0x0400, 0x040e, + 0x041c, 0x0429, 0x0436, 0x0442, 0x044e, 0x045a, 0x0466, 0x0475, + 0x0481, 0x0481, 0x0490, 0x04a7, 0x04be, 0x04be, 0x04c4, 0x04c4, + 0x04d2, 0x04d2, 0x04d7, 0x04e2, 0x04e2, 0x04f1, 0x04f1, 0x04fc, // Entry 80 - BF - 0x045c, 0x046d, 0x047b, 0x0489, 0x0489, 0x0498, 0x04a5, 0x04a5, - 0x04b4, 0x04b4, 0x04c1, 0x04c1, 0x04c1, 0x04cf, 0x04dc, 0x04ec, - 0x04ec, 0x04ec, 0x04f9, 0x0508, 0x0515, 0x0515, 0x0515, 0x0525, - 0x0533, 0x0541, 0x054d, 0x055a, 0x0566, 0x0571, 0x0580, 0x058e, - 0x058e, 0x059b, 0x05a9, 0x05a9, 0x05b5, 0x05b5, 0x05c2, 0x05cf, - 0x05da, 0x05e6, 0x05e6, 0x05f7, 0x05f7, 0x05f7, 0x0603, 0x060f, - 0x060f, 0x061c, 0x061c, 0x0639, 0x0644, 0x0644, 0x0644, 0x0644, - 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, + 0x050a, 0x0519, 0x051f, 0x052f, 0x053d, 0x0549, 0x0552, 0x055d, + 0x0565, 0x0572, 0x057f, 0x0591, 0x0596, 0x05a4, 0x05b2, 0x05c1, + 0x05cd, 0x05d9, 0x05e6, 0x05f2, 0x05fe, 0x0605, 0x061f, 0x062f, + 0x063b, 0x0648, 0x0654, 0x065a, 0x0668, 0x0677, 0x0684, 0x0692, + 0x0698, 0x06a4, 0x06b1, 0x06b7, 0x06c3, 0x06d0, 0x06dc, 0x06e9, + 0x06f4, 0x0700, 0x0700, 0x070e, 0x0716, 0x0722, 0x0727, 0x072c, + 0x0737, 0x0744, 0x074a, 0x0755, 0x0760, 0x0760, 0x0760, 0x0760, + 0x0760, 0x0760, 0x0760, 0x076c, 0x076c, 0x076c, 0x076c, 0x076c, // Entry C0 - FF - 0x0651, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x067d, - 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, - 0x067d, 0x068b, 0x068b, 0x068b, 0x068b, 0x0697, 0x0697, 0x0697, - 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, - 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, - 0x06a2, 0x06a2, 0x06a2, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, - 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, - 0x06af, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06c9, 0x06da, 0x06da, + 0x076c, 0x076c, 0x077b, 0x077b, 0x077b, 0x0789, 0x0789, 0x0789, + 0x0789, 0x0789, 0x0789, 0x0789, 0x0789, 0x078d, 0x078d, 0x0799, + 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, + 0x0799, 0x0799, 0x079e, 0x079e, 0x07a2, 0x07a2, 0x07a2, 0x07a2, + 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, + 0x07a2, 0x07a2, 0x07a6, 0x07a6, 0x07a6, 0x07b5, 0x07b5, 0x07b5, + 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07ba, 0x07ba, + 0x07ba, 0x07ba, 0x07ba, 0x07ba, 0x07c8, 0x07c8, 0x07d0, 0x07d0, // Entry 100 - 13F - 0x06e7, 0x06e7, 0x06fd, 0x06fd, 0x070a, 0x0717, 0x0717, 0x0717, - 0x0717, 0x0717, 0x0717, 0x0717, 0x0723, 0x0723, 0x0723, 0x0723, - 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, - 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0732, - 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, - 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x073e, 0x073e, 0x073e, - 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, - 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, + 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, + 0x07db, 0x07db, 0x07db, 0x07db, 0x07db, 0x07e0, 0x07e0, 0x07f1, + 0x07f1, 0x07f6, 0x07f6, 0x0800, 0x0800, 0x0800, 0x0804, 0x0804, + 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, + 0x0804, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, + 0x0812, 0x0812, 0x0812, 0x0812, 0x0820, 0x0820, 0x0820, 0x0820, + 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, + 0x0820, 0x082a, 0x082a, 0x082a, 0x083e, 0x083e, 0x083e, 0x0843, // Entry 140 - 17F - 0x073e, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, - 0x074d, 0x074d, 0x074d, 0x074d, 0x075a, 0x075a, 0x075a, 0x075a, - 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x076c, 0x076c, 0x076c, - 0x076c, 0x076c, 0x076c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x0789, 0x0789, 0x0789, 0x0789, 0x0789, + 0x0843, 0x0843, 0x0843, 0x0850, 0x0850, 0x0850, 0x0850, 0x0850, + 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, + 0x0861, 0x0861, 0x0867, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, + 0x087a, 0x087a, 0x087a, 0x087f, 0x087f, 0x087f, 0x087f, 0x087f, + 0x0886, 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, 0x08a0, + 0x08a0, 0x08a0, 0x08a0, 0x08a8, 0x08a8, 0x08bb, 0x08c2, 0x08c2, + 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08ca, 0x08cf, + 0x08cf, 0x08cf, 0x08cf, 0x08cf, 0x08d4, 0x08d4, 0x08d4, 0x08d4, // Entry 180 - 1BF - 0x0789, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, - 0x0798, 0x0798, 0x0798, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, - 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, - 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, - 0x07a3, 0x07a3, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x08d4, 0x08d4, 0x08d4, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, + 0x08da, 0x08da, 0x08da, 0x08da, 0x08dd, 0x08dd, 0x08e2, 0x08e2, + 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08ee, + 0x08ee, 0x08ee, 0x08ee, 0x08ee, 0x08f2, 0x0909, 0x0909, 0x0917, + 0x091e, 0x091e, 0x091e, 0x091e, 0x091e, 0x092b, 0x092b, 0x092b, + 0x0932, 0x0932, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, + 0x0936, 0x0936, 0x0936, 0x093a, 0x0949, 0x0949, 0x0949, 0x0949, + 0x0949, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x0955, 0x0955, // Entry 1C0 - 1FF - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x0959, 0x0959, 0x0959, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, + 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, + 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x096b, + 0x096b, 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, + 0x0979, 0x0979, 0x0979, 0x0979, 0x0979, 0x0979, 0x097c, 0x097c, + 0x097c, 0x097c, 0x0983, 0x0983, 0x0983, 0x0983, 0x0983, 0x0988, + 0x0994, 0x0994, 0x0994, 0x0994, 0x0994, 0x0998, 0x0998, 0x0998, + 0x09a3, 0x09a3, 0x09a3, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, // Entry 200 - 23F - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, + 0x09ac, 0x09bd, 0x09cd, 0x09de, 0x09ef, 0x09ef, 0x09ef, 0x09ef, + 0x09ef, 0x09ef, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, + 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a04, 0x0a04, 0x0a04, 0x0a04, + 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, + 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, + 0x0a0b, 0x0a0b, 0x0a28, 0x0a28, 0x0a28, 0x0a28, 0x0a36, 0x0a39, + 0x0a39, 0x0a39, 0x0a39, 0x0a39, 0x0a39, 0x0a39, 0x0a3e, 0x0a3e, + 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a42, // Entry 240 - 27F - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, - 0x07de, 0x07de, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07e9, - 0x07e9, 0x0802, 0x081d, 0x083a, 0x084e, 0x084e, 0x084e, 0x084e, - 0x084e, 0x084e, 0x085c, 0x085c, 0x085c, 0x085c, 0x085c, 0x085c, - 0x0882, 0x08a5, + 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, + 0x0a42, 0x0a42, 0x0a4b, 0x0a4b, 0x0a60, 0x0a60, 0x0a79, 0x0a79, + 0x0a8c, 0x0aa6, 0x0ac0, 0x0ad9, 0x0af1, 0x0b09, 0x0b29, 0x0b3f, + 0x0b54, 0x0b54, 0x0b6b, 0x0b83, 0x0b83, 0x0b8e, 0x0ba7, 0x0bbf, + 0x0bcc, 0x0bdf, 0x0bf5, 0x0c0e, 0x0c29, }, }, - { // ln - "akanliamarikilialabolibyelorisílibiligalilibengalilitshekɛlialemáligelek" + - "ilingɛlɛ́salisipanyelipelésanɛlifalansɛ́hausalihindiliongililindonez" + - "iigbolitalianolizapɔlizavalikambodzalikoreyalingálalimalezilibilimál" + - "inepalɛlifalamálipendzabilipolonɛlipulutugɛ́siliromanilirisíkinyarwa" + - "ndalisomalilisuwedɛlitamulilitayelitilikilikrɛniliurduliviyetinámiyo" + - "rubalisinwazulu", + { // hu + huLangStr, + huLangIdx, + }, + { // hy + hyLangStr, + hyLangIdx, + }, + { // id + idLangStr, + idLangIdx, + }, + { // ig + "AkanAmariikịArabiikịBelaruusuBọlụgarịaBengaliCheekịJamaanGiriikịOyiboPan" + + "yaPeshanFụrenchAwụsaHindiMagịyaIndonisiaIgboItaloJapaneseJavaKeme, E" + + "titiKoriaMaleyiMịanmaNepaliDọọchPunjabiPoliishiPotokiRumeniaRọshanRụ" + + "wandaSomaliSụwidiishiTamụlụTaịTọkiishiUkureenịUruduViyetịnaamụYoruba" + + "MandarịịnịZulu", []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000d, 0x000d, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0059, 0x0059, 0x0062, - 0x0062, 0x0062, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007f, - 0x007f, 0x0086, 0x0086, 0x0086, 0x0086, 0x008e, 0x008e, 0x008e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000e, 0x000e, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0030, + 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, + 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x0045, 0x0045, 0x0045, 0x0045, 0x004e, 0x0053, 0x0053, 0x0058, + 0x0058, 0x0058, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0067, + 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x006e, + 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007b, 0x007b, 0x007b, // Entry 40 - 7F - 0x008e, 0x0097, 0x0097, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x00a4, 0x00a4, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00dc, 0x00dc, 0x00dc, - 0x00e5, 0x00e5, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f8, 0x00f8, 0x0101, + 0x007b, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, + 0x008d, 0x008d, 0x0095, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, + 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00a9, 0x00a9, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00b7, 0x00b7, + 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d5, // Entry 80 - BF - 0x0101, 0x0110, 0x0110, 0x0110, 0x0110, 0x0118, 0x011f, 0x012a, - 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, - 0x012a, 0x012a, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x013b, 0x013b, 0x0143, 0x0143, 0x0143, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159, - 0x015f, 0x015f, 0x015f, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x0172, 0x0172, 0x0179, 0x017d, + 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00f3, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, + 0x00f3, 0x00f3, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x0105, 0x0105, 0x010f, 0x010f, 0x010f, 0x0114, 0x0114, 0x0114, + 0x0114, 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, + 0x012d, 0x012d, 0x012d, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, + 0x013c, 0x0142, 0x0142, 0x0152, 0x0156, }, }, - { // lo - loLangStr, - loLangIdx, - }, - { // lrc - "آذأربایئجانیآفریکانسآکانأمھأریأرأڤیآسامیآذأربایئجانی ھارگەباشکیریبئلاروٙ" + - "سیبولغاریبامبارابأنگالیتأبأتیبئرئتونبوسنیاییکاتالانچئچئنیکوریسکانچو" + - "اشیڤئلزیدانمارکیآلمانیزوٙنگخائڤئیوٙنانیئینگیلیسیئسپئرانتوئسپانیاییئ" + - "ستونیاییباسکیفارسیفأنلاندیفیجیفاروٙسیفآرانسئ ئیفئریسی أفتونئشینئیرل" + - "أندیگالیسیگوٙآرانیگوجأراتیمانکسھائوساعئبریھئنیکوروڤاتیھاییتیمأجاریأ" + - "رمأنیأندونئزیاییئیگبوسی چوان ییئیسلأندیئیتالیاییئینوکتیتوٙتجاپوٙنیج" + - "اڤئ ییگورجیکیکیوٙقأزاقکالالیسوٙتخئمئرکانادکورئ ییکأشمیریکوردی کورما" + - "نجیکورنیشقئرقیزیلاتینلوٙکزامبوٙرگیگاندالینگالالاولیتوڤانیاییلوٙبا ک" + - "اتانگالاتوڤیاییمالاگاشیمائوریمأقدوٙنیمالایامموغولیمأراتیمالاییمالتی" + - "بئرمئ یینئدئبئلئ شومالینئپالیھولأندینورڤئجی نینورسکنورڤئجی بوٙکمالئ" + - "وروموٙئوریاپأنجابیلأھئستانیپأشتوٙپورتئغالیکوچوٙارومانشراندیرومانیای" + - "یروٙسیکینیاروآنداسانسکئریتسئندیسامی شومالیسانگوسینھالائسلوڤاکیئسلوڤ" + - "ئنیاییشوناسوٙمالیآلبانیسئربیسوٙدانیسوٙئدیسأڤاحیلیتامیلتئلئگوتاجیکیت" + - "ایلأندیتیگرینیاتورکأمأنیتوٙنگانتورکیتاتارئویغوٙرئوکراینیئوردوٙئوزبأ" + - "کیڤییئتنامیڤولوفخوٙسایوروباچینیزولوآقئمماپوٙچئآسوٙبیمابئنابألوٙچی أ" + - "قتوٙنئشینبودوچیگاچوروٙکیکوردی سوٙرانیتایتازارماسوربی ھاریدوٙالاجولا" + - " فوٙنییئمبوفیلیپینیگاگائوزآلمانی سوٙئیسیگوٙسیھاڤاییسوربی ڤارونئگوٙمب" + - "اماچامئکابیلئکامباماکوٙندئکاباردینوکی یورا چینیکالئجینکومی پئرمیاکک" + - "وٙنکانیشامبالابافیالانگیلاکوٙتالۊری شومالیلوٙلوٙئیاماساییمئروموٙریس" + - "یماخوڤا میتومئتاٛموٙھاڤکموٙندانگمازأندأرانیناماآلمانی ھاریکئڤاسیوٙن" + - "ئکوٙنیوٙئرنیان کوٙلئکیچیرومبورئڤاسامبوٙروٙسانگوٙکوردی ھارگەسئناکیار" + - "ابورو سئنیتاچئلھیتسامی ھارگەلۉلئ سامیئیناری سامیئسکولت سامیتئسوتاسا" + - "ڤاقتامازیغ مینجاییزوٙن نادیارڤایڤوٙنجوٙڤارلپیریسوٙگاتامازیغ مأراکئش" + - "یبی نئشوٙعروی مدرنآذأری ھارگەآلمانی ئوتریشیآلمانی سوٙییسیئینگیلیسی " + - "ئوستارالیاییئینگیلیسی کاناداییئینگیلیسی بئریتانیاییئینگیلیسی ئمریکا" + - "ییئسپانیایی ئمریکا لاتینئسپانیایی ئوروٙپائسپانیایی مئکزیکفآرانسئ ئی" + - " کانادافآرانسئ ئی سوٙییسآلمانی ھارگە جافئلاماندیپورتئغالی بئرئزیلپور" + - "تئغالی ئوروٙپاییرومانیایی مولداڤیسأڤاحیلی کونگوچینی سادە بیەچینی سو" + - "نأتی", - []uint16{ // 610 elements + { // ii + "ꄓꇩꉙꑱꇩꉙꑭꀠꑸꉙꃔꇩꉙꆈꌠꉙꑴꄊꆺꉙꏝꀪꉙꁍꄨꑸꉙꊉꇩꉙꍏꇩꉙꅉꀋꌠꅇꂷꀠꑟꁍꄨꑸꉙꈝꐯꍏꇩꉙꀎꋏꍏꇩꉙ", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0018, 0x0018, 0x0028, 0x0030, 0x003c, 0x003c, - 0x0046, 0x0050, 0x0050, 0x0050, 0x0073, 0x0081, 0x0093, 0x00a1, - 0x00a1, 0x00af, 0x00bd, 0x00c9, 0x00d7, 0x00e7, 0x00f5, 0x0101, - 0x0101, 0x0111, 0x0111, 0x0111, 0x0111, 0x011b, 0x0125, 0x0135, - 0x0141, 0x0141, 0x014f, 0x0155, 0x0163, 0x0175, 0x0187, 0x0199, - 0x01ab, 0x01b5, 0x01bf, 0x01bf, 0x01cf, 0x01d7, 0x01e5, 0x01f8, - 0x0217, 0x0227, 0x0227, 0x0233, 0x0243, 0x0253, 0x025d, 0x0269, - 0x0273, 0x027b, 0x027b, 0x028b, 0x0297, 0x02a3, 0x02af, 0x02af, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0012, 0x0012, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, // Entry 40 - 7F - 0x02af, 0x02c5, 0x02c5, 0x02cf, 0x02e1, 0x02e1, 0x02e1, 0x02f1, - 0x0303, 0x0319, 0x0327, 0x0334, 0x033e, 0x033e, 0x034a, 0x034a, - 0x0354, 0x0368, 0x0372, 0x037c, 0x0389, 0x0389, 0x0397, 0x03b2, - 0x03b2, 0x03be, 0x03cc, 0x03d6, 0x03f0, 0x03fa, 0x03fa, 0x0408, - 0x040e, 0x0424, 0x043d, 0x044f, 0x045f, 0x045f, 0x046b, 0x047b, - 0x0489, 0x0495, 0x04a1, 0x04ad, 0x04b7, 0x04c6, 0x04c6, 0x04e3, - 0x04ef, 0x04ef, 0x04fd, 0x051a, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0545, 0x054f, 0x054f, 0x055d, 0x055d, 0x056f, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0030, 0x0030, 0x0030, 0x0030, + 0x003c, 0x003c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, // Entry 80 - BF - 0x057b, 0x058d, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05cb, 0x05e1, - 0x05f3, 0x05f3, 0x05fd, 0x0612, 0x061c, 0x062a, 0x063a, 0x0650, - 0x0650, 0x0658, 0x0666, 0x0672, 0x067c, 0x067c, 0x067c, 0x068a, - 0x0696, 0x06a6, 0x06b0, 0x06bc, 0x06c8, 0x06d8, 0x06e8, 0x06fa, - 0x06fa, 0x0708, 0x0712, 0x0712, 0x071c, 0x071c, 0x072a, 0x073a, - 0x0746, 0x0754, 0x0754, 0x0766, 0x0766, 0x0766, 0x0770, 0x077a, - 0x077a, 0x0786, 0x0786, 0x078e, 0x0796, 0x0796, 0x0796, 0x0796, - 0x0796, 0x0796, 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, + 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, // Entry C0 - FF - 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07ac, 0x07ac, 0x07ac, - 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07b4, 0x07b4, 0x07b4, 0x07b4, - 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, - 0x07b4, 0x07bc, 0x07bc, 0x07c4, 0x07c4, 0x07c4, 0x07e7, 0x07e7, - 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, - 0x07e7, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, - 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07f7, 0x07f7, 0x07f7, - 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x0805, 0x0805, 0x081e, - // Entry 100 - 13F - 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x0828, 0x0828, - 0x0828, 0x0828, 0x0828, 0x0832, 0x0832, 0x0845, 0x0845, 0x0851, - 0x0851, 0x0866, 0x0866, 0x0866, 0x086e, 0x086e, 0x086e, 0x086e, - 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x087e, - 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, - 0x087e, 0x087e, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, - 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, - 0x088c, 0x088c, 0x08a7, 0x08a7, 0x08a7, 0x08b1, 0x08b1, 0x08b1, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + // Entry 100 - 13F + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, // Entry 140 - 17F - 0x08b1, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08e0, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08f8, 0x08f8, - 0x08f8, 0x0902, 0x0902, 0x0902, 0x0902, 0x0902, 0x0912, 0x0924, - 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x093a, 0x093a, 0x093a, - 0x093a, 0x0948, 0x0948, 0x095f, 0x096f, 0x096f, 0x096f, 0x096f, - 0x096f, 0x096f, 0x096f, 0x096f, 0x097d, 0x0987, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0991, 0x0991, 0x0991, 0x0991, 0x0991, 0x0991, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, // Entry 180 - 1BF - 0x0991, 0x099f, 0x099f, 0x099f, 0x099f, 0x09b4, 0x09b4, 0x09b4, - 0x09b4, 0x09b4, 0x09ba, 0x09ba, 0x09c6, 0x09c6, 0x09c6, 0x09c6, - 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09d2, 0x09d2, 0x09d2, - 0x09d2, 0x09d2, 0x09da, 0x09e8, 0x09e8, 0x09fd, 0x0a07, 0x0a07, - 0x0a07, 0x0a07, 0x0a07, 0x0a15, 0x0a15, 0x0a15, 0x0a25, 0x0a25, - 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a3b, 0x0a3b, - 0x0a3b, 0x0a43, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a68, - 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a72, 0x0a72, 0x0a7e, 0x0a7e, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, // Entry 1C0 - 1FF - 0x0a7e, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, - 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, - 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a99, 0x0a99, - 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0aa3, 0x0aa3, 0x0aa3, - 0x0aa3, 0x0aa3, 0x0aa3, 0x0aab, 0x0aab, 0x0aab, 0x0aab, 0x0abd, - 0x0abd, 0x0abd, 0x0abd, 0x0abd, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ac9, - 0x0ade, 0x0ade, 0x0ae6, 0x0ae6, 0x0ae6, 0x0b01, 0x0b01, 0x0b01, - 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b24, 0x0b35, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, // Entry 200 - 23F - 0x0b4a, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, - 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, - 0x0b5f, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, - 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, - 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b75, 0x0b75, 0x0b92, - 0x0b92, 0x0b92, 0x0b92, 0x0ba7, 0x0bad, 0x0bad, 0x0bad, 0x0bad, - 0x0bad, 0x0bad, 0x0bad, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, - 0x0bcb, 0x0bcb, 0x0bcb, 0x0bcb, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, // Entry 240 - 27F - 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bf4, - 0x0bf4, 0x0c03, 0x0c03, 0x0c14, 0x0c29, 0x0c44, 0x0c5f, 0x0c8a, - 0x0cad, 0x0cd6, 0x0cf9, 0x0d23, 0x0d44, 0x0d63, 0x0d63, 0x0d83, - 0x0da3, 0x0dbf, 0x0dd1, 0x0df2, 0x0e17, 0x0e38, 0x0e38, 0x0e53, - 0x0e6b, 0x0e80, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0093, 0x00a2, }, }, - { // lt - ltLangStr, - ltLangIdx, + { // is + isLangStr, + isLangIdx, }, - { // lu - "LiakanLiamharikiArabiBelarusiBulegariBengaliTshekiLizelumaniGilikiLingel" + - "esaLihispaniaMpepajemiMfwàlànsaHausaHindiHongiliLindoneziaIgboLitali" + - "LiyapaniJavaLikoreyaTshilubaLimalezianepaliolandiLipunjabiMpoloniMpu" + - "tulugɛsiLiromaniLirisikinyarwandaLisomaliLisuwidiMtamuiliNtailandiNt" + - "ulukiNkraniUrduLiviyetinamuNyorubashinɛNzulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0010, 0x0010, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x0025, - 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0055, - 0x0055, 0x0055, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e, - 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, - // Entry 40 - 7F - 0x007a, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, - 0x008e, 0x008e, 0x0096, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, - 0x00b9, 0x00b9, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, - // Entry 80 - BF - 0x00cf, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e3, 0x00e9, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x0104, 0x0104, 0x010c, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0122, - 0x0126, 0x0126, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0139, 0x0139, 0x013f, 0x0144, - }, + { // it + itLangStr, + itLangIdx, }, - { // luo - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluDholuo", - []uint16{ // 395 elements + { // ja + jaLangStr, + jaLangIdx, + }, + { // jgo + "AlâbɛNjámanŊgɛlɛ̂kAŋgɛlúshiFɛlánciShinwâNdaꞌacú-pʉɔ yi pɛ́ ká kɛ́ jí", + []uint16{ // 559 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x000e, 0x000e, 0x000e, 0x000e, 0x0019, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, // Entry 100 - 13F + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + // Entry 140 - 17F + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + // Entry 180 - 1BF + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + // Entry 1C0 - 1FF + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + // Entry 200 - 23F + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x005c, + }, + }, + { // jmc + "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + + "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + + "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + + "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + + "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + + "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKim" + + "achame", + []uint16{ // 340 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, + 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, + 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, + 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, + // Entry 40 - 7F + 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, + 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, + // Entry 80 - BF + 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, + 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, + 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, + 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, + 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry C0 - FF + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 100 - 13F + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 140 - 17F + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x01a2, + }, + }, + { // ka + kaLangStr, + kaLangIdx, + }, + { // kab + "TakanitTamahrictTaɛrabtTabilarusitTabulgaritTabengalitTačikitTalmantTagr" + + "ikitTaglizitTaspenyulitTafarisitTafransistTahwasitTahenditTahungarit" + + "TandunisitTigbutTaṭalyanitTajapunitTajavanitTakemritTakuritTamalawit" + + "TaburmisitTanipalitTadučitTapunjabitTapulunitTapurtugalitTarumanitTa" + + "rusitTaruwanditTaṣumalitTaswiditTaṭamulitTaṭaylunditTaṭurkitTukranit" + + "TurdutTabyiṭnamitTayurubitTacinwat, TamundarintTazulutTaqbaylit", + []uint16{ // 345 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0023, 0x002d, + 0x002d, 0x002d, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, + 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0056, 0x0056, 0x0061, + 0x0061, 0x0061, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x007c, + 0x007c, 0x0084, 0x0084, 0x0084, 0x0084, 0x008e, 0x008e, 0x008e, + // Entry 40 - 7F + 0x008e, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, + 0x00aa, 0x00aa, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, + 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00d4, 0x00d4, 0x00de, 0x00de, 0x00de, + 0x00e7, 0x00e7, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, + 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f9, 0x00f9, 0x0102, + // Entry 80 - BF + 0x0102, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x011e, 0x0128, + 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, + 0x0128, 0x0128, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, + 0x013b, 0x013b, 0x0146, 0x0146, 0x0146, 0x0153, 0x0153, 0x0153, + 0x0153, 0x0153, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, 0x0165, + 0x016b, 0x016b, 0x016b, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, + 0x0178, 0x0181, 0x0181, 0x0196, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + // Entry C0 - FF + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + // Entry 100 - 13F + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + // Entry 140 - 17F + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x01a6, + }, + }, + { // kam + "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + + "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + + "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + + "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + + "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + + "rubaKichinaKizuluKikamba", + []uint16{ // 348 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, + 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, + 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + // Entry 40 - 7F + 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, + 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, + 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + // Entry 80 - BF + 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, + 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, + 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, + 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, + 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry C0 - FF 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, @@ -6564,7 +7256,7 @@ var langHeaders = [220]header{ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 140 - 17F + // Entry 100 - 13F 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, @@ -6573,400 +7265,352 @@ var langHeaders = [220]header{ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 180 - 1BF + // Entry 140 - 17F + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x016f, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0170, }, }, - { // luy - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiLusunguKihispaniaKiajemiKifaransaKihausaLuhindiKihungariKiindones" + - "iaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaKin" + - "epaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKiso" + - "maliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyoru" + - "baKichinaKizuluLuluhia", - []uint16{ // 397 elements + { // kde + "ChakanChamhaliChalabuChibelalusiChibulgaliaChibanglaChichechiChidyeluman" + + "iChigilichiChiingelezaChihispaniaChiajemiChifalansaChihausaChihindiC" + + "hihungaliChiiongonesiaChiigboChiitalianoChidyapaniChidyavaChikambodi" + + "aChikoleaChimalesiaChibulmaChinepaliChiholanziChipunjabiChipolandiCh" + + "ilenoChilomaniaChilusiChinyalwandaChisomaliChiswidiChitamilChitailan" + + "diChituluchiChiuklaniaChiulduChivietinamuChiyolubaChichinaChizuluChi" + + "makonde", + []uint16{ // 353 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0052, 0x0052, 0x005c, - 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073, - 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, 0x0083, 0x0083, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x002b, + 0x002b, 0x002b, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x0049, 0x0049, 0x0049, 0x0049, 0x0053, 0x005e, 0x005e, 0x0069, + 0x0069, 0x0069, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0083, + 0x0083, 0x008b, 0x008b, 0x008b, 0x008b, 0x0095, 0x0095, 0x0095, // Entry 40 - 7F - 0x0083, 0x008e, 0x008e, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x009e, 0x009e, 0x00a6, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac, - 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd, - 0x00d5, 0x00d5, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e7, 0x00e7, 0x00f0, + 0x0095, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00b4, 0x00b4, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb, + 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, + 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112, // Entry 80 - BF - 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x0105, 0x0110, - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, - 0x0110, 0x0110, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x011f, 0x011f, 0x0126, 0x0126, 0x0126, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0130, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0141, - 0x0147, 0x0147, 0x0147, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, - 0x0152, 0x015a, 0x015a, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136, + 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, + 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, + 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, + 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, // Entry C0 - FF - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, // Entry 100 - 13F - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, // Entry 140 - 17F - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - // Entry 180 - 1BF - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x016e, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x01a3, }, }, - { // lv - lvLangStr, - lvLangIdx, - }, - { // mas - "nkʉtʉ́k ɔ́ɔ̄ lAkannkʉtʉ́k ɔ́ɔ̄ lAmharinkʉtʉ́k ɔ́ɔ̄ lmarabunkʉtʉ́k ɔ́ɔ̄ l" + - "Belarusinkʉtʉ́k ɔ́ɔ̄ lBulgarialnkʉtʉ́k ɔ́ɔ̄ lBengalinkʉtʉ́k ɔ́ɔ̄ lch" + - "ekinkʉtʉ́k ɔ́ɔ̄ ljerumaninkʉtʉ́k ɔ́ɔ̄ lgirikinkʉtʉ́k ɔ́ɔ̄ nkɨ́resank" + - "ʉtʉ́k ɔ́ɔ̄ lspaniankʉtʉ́k ɔ́ɔ̄ lpersiankʉtʉ́k ɔ́ɔ̄ faransankʉtʉ́k ɔ" + - "́ɔ̄ hausankʉtʉ́k ɔ́ɔ̄ lmoindinkʉtʉ́k ɔ́ɔ̄ lhungarinkʉtʉ́k ɔ́ɔ̄ Indo" + - "nesiankʉtʉ́k ɔ́ɔ̄ Igbonkʉtʉ́k ɔ́ɔ̄ ltaliannkʉtʉ́k ɔ́ɔ̄ japaninkʉtʉ́k" + - " ɔ́ɔ̄ ljanankʉtʉ́k ɔ́ɔ̄ lkambodiankʉtʉ́k ɔ́ɔ̄ lkoreankʉtʉ́k ɔ́ɔ̄ mal" + - "aynkʉtʉ́k ɔ́ɔ̄ lBurmankʉtʉ́k ɔ́ɔ̄ lnepalinkʉtʉ́k ɔ́ɔ̄ lduchinkʉtʉ́k " + - "ɔ́ɔ̄ lpunjabinkʉtʉ́k ɔ́ɔ̄ lpolandnkʉtʉ́k ɔ́ɔ̄ lportuguesenkʉtʉ́k ɔ́" + - "ɔ̄ lromaniankʉtʉ́k ɔ́ɔ̄ lrusinkʉtʉ́k ɔ́ɔ̄ lruwandankʉtʉ́k ɔ́ɔ̄ lchu" + - "marinkʉtʉ́k ɔ́ɔ̄ lswidinkʉtʉ́k ɔ́ɔ̄ ltamilnkʉtʉ́k ɔ́ɔ̄ ltainkʉtʉ́k ɔ" + - "́ɔ̄ lturukinkʉtʉ́k ɔ́ɔ̄ lkraniankʉtʉ́k ɔ́ɔ̄ lurdunkʉtʉ́k ɔ́ɔ̄ lviet" + - "inamunkʉtʉ́k ɔ́ɔ̄ lyorubankʉtʉ́k ɔ́ɔ̄ lchinankʉtʉ́k ɔ́ɔ̄ lzuluMaa", - []uint16{ // 406 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0034, 0x0034, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x006c, 0x0089, - 0x0089, 0x0089, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, - 0x00a6, 0x00a6, 0x00a6, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x0116, 0x0116, 0x0131, - 0x0131, 0x0131, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0180, - 0x0180, 0x019b, 0x019b, 0x019b, 0x019b, 0x01b7, 0x01b7, 0x01b7, - // Entry 40 - 7F - 0x01b7, 0x01d4, 0x01d4, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, - 0x0207, 0x0207, 0x0221, 0x023a, 0x023a, 0x023a, 0x023a, 0x023a, - 0x023a, 0x023a, 0x0257, 0x0257, 0x0271, 0x0271, 0x0271, 0x0271, - 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, - 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, - 0x0271, 0x0271, 0x0271, 0x028a, 0x028a, 0x02a4, 0x02a4, 0x02a4, - 0x02bf, 0x02bf, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, - 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02f5, 0x02f5, 0x0310, - // Entry 80 - BF - 0x0310, 0x032f, 0x032f, 0x032f, 0x032f, 0x034b, 0x0364, 0x0380, - 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, - 0x0380, 0x0380, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - 0x03b6, 0x03b6, 0x03d0, 0x03d0, 0x03d0, 0x03e8, 0x03e8, 0x03e8, - 0x03e8, 0x03e8, 0x0403, 0x0403, 0x0403, 0x0403, 0x0403, 0x041e, - 0x0437, 0x0437, 0x0437, 0x0455, 0x0455, 0x0455, 0x0455, 0x0455, - 0x0455, 0x0470, 0x0470, 0x048a, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + { // kea + "abkáziuafrikanerakanamárikuárabiasamesaimaraazerbaijanubaxkirbielorusubú" + + "lgarubambarabengalitibetanubretãubosniukatalãutxetxenukórsikutxekutx" + + "uvaxigalesdinamarkesalimãudzonkaevegreguinglessperantuspanholstonian" + + "ubaskupersafinlandesfijianufaroesfransesfríziu osidentalirlandesgale" + + "guguaranigujaratimanksauzaebraikuindikroataaitianuúngaruarméniuindon" + + "éziuibonuosuislandesitalianuinuktitutjaponesjavanesjorjianukikuiuka" + + "zakgroenlandeskmerkanareskorianukaxmirakurdukórnikukirgizlatinluxemb" + + "urgeslugandalausianulituanesletãumalgaximaorimasedóniumalaialammarat" + + "imaláiumaltesbirmanesnepalesolandesnorueges nynorsknorueges bokmålor" + + "omoodíapandjabipulakupaxtopurtugeskexuaromanxirumenurusukiniaruandas" + + "ánskritusindisingalesslovakuslovéniusomalialbanessérviusundanessuek" + + "usuaílitamiltelugutadjikitailandestigriniaturkmenutonganesturkutatar" + + "uigurukranianuurduuzbekivietnamitauolofkozaiorubaxineszuluaghemarauk" + + "anuasubembabenabodoxigaxerokikurdu sentraltaitazarmasórbiu baxuduala" + + "jola-fonyiembufilipinugagauzalimãu suísugusiiavaianusórbiu altuñomba" + + "matxamekabilakambakabuverdianukoira txiinikalenjinkomi-permiakkonkan" + + "ibafiakuaziokitxekoiraboro seniinari samitamazait di Atlas Sentrallí" + + "ngua diskonxedusen kontiudu linguístikuárabi mudernualimãu austriaku" + + "altu alimãu suisuingles australianuingles kanadianuingles britanikui" + + "ngles merkanuspanhol latinu-merkanuspanhol europeuspanhol mexikanufr" + + "anses kanadianufranses suisuflamengupurtuges brazilerupurtuges europ" + + "eurumenu moldávikusuaíli kongolesxines simplifikaduxines tradisional", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0015, 0x001d, 0x001d, + 0x0023, 0x0029, 0x0029, 0x002f, 0x003a, 0x0040, 0x0049, 0x0051, + 0x0051, 0x0058, 0x005f, 0x0067, 0x006e, 0x0074, 0x007c, 0x0084, + 0x0084, 0x008c, 0x008c, 0x0091, 0x0091, 0x0098, 0x009d, 0x00a7, + 0x00ae, 0x00ae, 0x00b4, 0x00b7, 0x00bc, 0x00c2, 0x00ca, 0x00d1, + 0x00d9, 0x00de, 0x00e3, 0x00e3, 0x00ec, 0x00f3, 0x00f9, 0x0100, + 0x0111, 0x0119, 0x0119, 0x011f, 0x0126, 0x012e, 0x0133, 0x0137, + 0x013e, 0x0142, 0x0142, 0x0148, 0x014f, 0x0156, 0x015e, 0x015e, + // Entry 40 - 7F + 0x015e, 0x0168, 0x0168, 0x016b, 0x0170, 0x0170, 0x0170, 0x0178, + 0x0180, 0x0189, 0x0190, 0x0197, 0x019f, 0x019f, 0x01a5, 0x01a5, + 0x01aa, 0x01b5, 0x01b9, 0x01c0, 0x01c7, 0x01c7, 0x01ce, 0x01d3, + 0x01d3, 0x01db, 0x01e1, 0x01e6, 0x01f1, 0x01f8, 0x01f8, 0x01f8, + 0x0200, 0x0208, 0x0208, 0x020e, 0x0215, 0x0215, 0x021a, 0x0224, + 0x022d, 0x022d, 0x0233, 0x023a, 0x0240, 0x0248, 0x0248, 0x0248, + 0x024f, 0x024f, 0x0256, 0x0266, 0x0276, 0x0276, 0x0276, 0x0276, + 0x0276, 0x0276, 0x027b, 0x0280, 0x0280, 0x0288, 0x0288, 0x028e, + // Entry 80 - BF + 0x0293, 0x029b, 0x02a0, 0x02a7, 0x02a7, 0x02ad, 0x02b1, 0x02bc, + 0x02c6, 0x02c6, 0x02cb, 0x02cb, 0x02cb, 0x02d3, 0x02da, 0x02e3, + 0x02e3, 0x02e3, 0x02e9, 0x02f0, 0x02f7, 0x02f7, 0x02f7, 0x02ff, + 0x0304, 0x030b, 0x0310, 0x0316, 0x031d, 0x0326, 0x032e, 0x0336, + 0x0336, 0x033e, 0x0343, 0x0343, 0x0348, 0x0348, 0x034d, 0x0356, + 0x035a, 0x0360, 0x0360, 0x036a, 0x036a, 0x036a, 0x036f, 0x0373, + 0x0373, 0x0379, 0x0379, 0x037e, 0x0382, 0x0382, 0x0382, 0x0382, + 0x0382, 0x0382, 0x0382, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, // Entry C0 - FF - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x038f, 0x038f, 0x038f, + 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x0392, 0x0392, 0x0392, + 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, + 0x0392, 0x0392, 0x0397, 0x0397, 0x039b, 0x039b, 0x039b, 0x039b, + 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, + 0x039b, 0x039b, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, + 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x03a3, 0x03a3, + 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a9, 0x03a9, // Entry 100 - 13F - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, + 0x03bb, 0x03bb, 0x03bb, 0x03bb, 0x03bb, 0x03c0, 0x03c0, 0x03cc, + 0x03cc, 0x03d1, 0x03d1, 0x03db, 0x03db, 0x03db, 0x03df, 0x03df, + 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, + 0x03df, 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03e7, + 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03ed, 0x03ed, 0x03ed, 0x03ed, + 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, + 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb, 0x03fb, 0x03fb, 0x0400, // Entry 140 - 17F - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x0400, 0x0400, 0x0400, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, + 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, + 0x0413, 0x0413, 0x0419, 0x0420, 0x0420, 0x0420, 0x0420, 0x0420, + 0x0426, 0x0426, 0x0426, 0x042b, 0x042b, 0x042b, 0x042b, 0x042b, + 0x042b, 0x0437, 0x0437, 0x0437, 0x0437, 0x0437, 0x0437, 0x0443, + 0x0443, 0x0443, 0x0443, 0x044b, 0x044b, 0x0457, 0x045e, 0x045e, + 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, // Entry 180 - 1BF - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a6, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, + 0x0463, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, + // Entry 1C0 - 1FF + 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, + 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, + 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, + 0x0469, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, + 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, + 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, + 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, + 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, + // Entry 200 - 23F + 0x047c, 0x047c, 0x047c, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x049f, 0x049f, 0x049f, 0x049f, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + // Entry 240 - 27F + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04ca, 0x04ca, 0x04d8, 0x04d8, + 0x04e9, 0x04fb, 0x050d, 0x051d, 0x052d, 0x053b, 0x0551, 0x0560, + 0x0570, 0x0570, 0x0581, 0x058e, 0x058e, 0x0596, 0x05a8, 0x05b8, + 0x05c9, 0x05c9, 0x05d9, 0x05eb, 0x05fc, }, }, - { // mer - "KĩakaniKĩamarĩkiKĩarabuKĩbelarusiKĩbulugĩriaKĩbangiraKĩchekiKĩnjamanĩKĩn" + - "girikiKĩngerethaKĩspĩniKĩpasiaKĩfuransiKĩhausaKĩhĩndiKĩhangarĩKĩindo" + - "nesiaKĩigboKĩitalĩKĩjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburmaKĩn" + - "epaliKĩholandiKĩpunjabuKĩpolandiKĩpochogoKĩromaniaKĩrashiaKĩrwandaKĩ" + - "somaliKĩswideniKĩtamiluKĩthailandiKĩtakĩKĩukirĩniKĩurduKĩvietinamuKĩ" + - "yorubaKĩchinaKĩzuluKĩmĩrũ", - []uint16{ // 411 elements + { // khq + "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + + " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + + "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + + "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" + + "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" + + "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" + + "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" + + "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " + + "MandareŋJulu senniKoyra ciini", + []uint16{ // 360 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0013, 0x0013, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, 0x0033, - 0x0033, 0x0033, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0050, 0x0050, 0x0050, 0x0050, 0x005a, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0088, - 0x0088, 0x0091, 0x0091, 0x0091, 0x0091, 0x009c, 0x009c, 0x009c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, + 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, + 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, + 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, + 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, + 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, // Entry 40 - 7F - 0x009c, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, - 0x00b8, 0x00b8, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00ed, 0x00ed, 0x00ed, - 0x00f6, 0x00f6, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x010a, 0x010a, 0x0114, + 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f, + 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, + 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175, // Entry 80 - BF - 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013a, - 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x013a, 0x013a, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, - 0x014d, 0x014d, 0x0156, 0x0156, 0x0156, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0175, - 0x017c, 0x017c, 0x017c, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, - 0x0188, 0x0191, 0x0191, 0x0199, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, + 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db, + 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, + 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, + 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, // Entry C0 - FF - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, // Entry 100 - 13F - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, // Entry 140 - 17F - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - // Entry 180 - 1BF - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a9, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0244, }, }, - { // mfe - "akanamarikarabbielorisbilgarbengalitchekalmangrekangleespagnolpersanfran" + - "sehaoussahindihongrwaindonezienigboitalienzaponezavanekhmer, santral" + - "koreenmalebirmannepaleolandepenjabipoloneportigerouminrisrwandasomal" + - "iswedwatamoulthaïtirkikrenienourdouvietnamienyorubasinwa, mandarinzo" + - "uloukreol morisien", - []uint16{ // 412 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x001c, - 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x002d, 0x002d, 0x002d, 0x002d, 0x0031, 0x0036, 0x0036, 0x003e, - 0x003e, 0x003e, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004a, - 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0051, - 0x0051, 0x0056, 0x0056, 0x0056, 0x0056, 0x005d, 0x005d, 0x005d, - // Entry 40 - 7F - 0x005d, 0x0067, 0x0067, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x0072, 0x0072, 0x0078, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x008c, 0x008c, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0096, 0x0096, 0x009c, 0x009c, 0x009c, - 0x00a2, 0x00a2, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b5, - // Entry 80 - BF - 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c5, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, - 0x00d7, 0x00d7, 0x00dd, 0x00dd, 0x00dd, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00e2, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00ee, - 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x0104, 0x0104, 0x0113, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry C0 - FF - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 100 - 13F - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 140 - 17F - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 180 - 1BF - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0127, - }, - }, - { // mg - "AkanAmharikaAraboBielorosyBiolgaraBengaliTsekyAlemaninaGrikaAnglisyEspan" + - "iolaPersaFrantsayhaoussahindihongroàIndonezianinaigboItalianinaJapon" + - "eyJavaneykhmerKoreaninaMalagasyMalayBirmanaNepaleHolandeyPenjabiPolo" + - "neyPortiogeyRomanianinaRosianinaRoandeSomalianinaSoisaTamoilaTaioane" + - "yTiorkaOkrainianinaOrdòVietnamianinaYôrobàSinoa, MandarinZolò", + { // ki + "KiakanKiamhariKĩarabuKibelarusiKibulgariaKibanglaKicheckiKĩnjeremaniKigi" + + "rikiGĩthungũKihispaniaKiajemiKĩbaranjaKihausaKĩhĩndĩKihungariKiindon" + + "esiaKiigboKĩtalianoKĩnjabaniKijavaGikuyuKikambodiaKikoreaKimalesiaKi" + + "burmaKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKĩraciaKinyar" + + "wandaKĩcumarĩKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietin" + + "amuKiyorubaKĩcainaKizulu", []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x0022, - 0x0022, 0x0022, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x0037, 0x0037, 0x0037, 0x0037, 0x003c, 0x0043, 0x0043, 0x004c, - 0x004c, 0x004c, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0060, - 0x0060, 0x0065, 0x0065, 0x0065, 0x0065, 0x006d, 0x006d, 0x006d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, + 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0058, 0x0058, 0x0062, + 0x0062, 0x0062, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0073, + 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, + 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x008d, 0x008d, 0x008d, // Entry 40 - 7F - 0x006d, 0x007a, 0x007a, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x0088, 0x0088, 0x008f, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x0096, 0x0096, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00ac, 0x00ac, 0x00ac, - 0x00ac, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00b8, 0x00b8, 0x00b8, - 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d4, + 0x008d, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, + 0x00a8, 0x00a8, 0x00b2, 0x00b8, 0x00b8, 0x00b8, 0x00be, 0x00be, + 0x00be, 0x00be, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, 0x00cf, + 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, + 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, + 0x00cf, 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df, + 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f9, 0x00f9, 0x0102, // Entry 80 - BF - 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f1, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0107, 0x0107, 0x010e, 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, - 0x0116, 0x0116, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0128, - 0x012d, 0x012d, 0x012d, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x013a, 0x0142, 0x0142, 0x0151, 0x0156, + 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0119, 0x0124, + 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, + 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x0135, 0x0135, 0x013c, 0x013c, 0x013c, 0x0146, 0x0146, 0x0146, + 0x0146, 0x0146, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x0157, + 0x015d, 0x015d, 0x015d, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, + 0x0168, 0x0170, 0x0170, 0x0178, 0x017e, }, }, - { // mgh - "IkanImhariIarabuIbelausiIbulgariaIbanglaIchekiIjerimaniIgirikiIngilishiI" + - "hispaniolaIajemiIfaransaIhausaIhindiIhungariIgboItalianoIjapaniIjava" + - "IkambodiaIkoreaImalesiaIburmaInepaliIholanziIpunjabiIpolandiNrenoIro" + - "maniaIrisiInyarandaIsomaliIswidiItamilItailandiIturukiIukranIhurduIv" + - "yetinamuIyorubaIchinaIzuluMakua", - []uint16{ // 414 elements + { // kk + kkLangStr, + kkLangIdx, + }, + { // kkj + "yamannumbu buykakɔ", + []uint16{ // 363 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0021, - 0x0021, 0x0021, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x0037, 0x0037, 0x0037, 0x0037, 0x003e, 0x0047, 0x0047, 0x0052, - 0x0052, 0x0052, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, - 0x0066, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0074, 0x0074, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, // Entry 40 - 7F - 0x0074, 0x0074, 0x0074, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0080, 0x0080, 0x0087, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, - 0x00b0, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c8, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, // Entry 80 - BF - 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d5, 0x00da, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00f0, 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010c, - 0x0112, 0x0112, 0x0112, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x0123, 0x0123, 0x0129, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, // Entry C0 - FF - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, // Entry 100 - 13F - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, // Entry 140 - 17F - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - // Entry 180 - 1BF - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x0133, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x0013, }, }, - { // mgo - "metaʼngam tisɔʼ", - []uint16{ // 556 elements + { // kl + "kalaallisut", + []uint16{ // 82 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -6979,4370 +7623,3777 @@ var langHeaders = [220]header{ // Entry 40 - 7F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, + }, + }, + { // kln + "kutitab Akakutitab Amariekkutitab Arabukkutitab Belarusakutitab Bulgaria" + + "kutitab Bengalikutitab Chekkutitab Chermanikutitab Greecekutitab Uin" + + "geresakutitab Espianikkutitab Persiakutitab Kifaransakutitab Hausaku" + + "titab Maindiikkutitab Hangarikutitab Indonesiakutitab Igbokutitab Ta" + + "lianekkutitap Japankutitap Javanesekutitab Kher nebo Kwenkutitab Kor" + + "eakutitab Malaykutitab Burmakutitab Nepalikutitab Boakutitab Punjabk" + + "utitap Polandkutitab Portugalkutitab Romaniekkutitab Russiakutitab K" + + "inyarwandakutitab Somaliekkutitab Swedenkutitab Tamilkutitab Thailan" + + "dkutitab Turkeykutitab Ukrainekutitab Urdukutitab Vietnamkutitab Yor" + + "ubakutitab Chinakutitab ZuluKalenjin", + []uint16{ // 364 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001a, 0x001a, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0038, 0x0048, + 0x0048, 0x0048, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0073, 0x0073, 0x0073, 0x0073, 0x0081, 0x0092, 0x0092, 0x00a2, + 0x00a2, 0x00a2, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c1, + 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00ce, + 0x00ce, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ed, 0x00ed, 0x00ed, + // Entry 40 - 7F + 0x00ed, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x011a, 0x011a, 0x0127, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, + 0x0137, 0x0137, 0x014d, 0x014d, 0x015a, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x015a, 0x0167, 0x0167, 0x0174, 0x0174, 0x0174, + 0x0182, 0x0182, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, + 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x019b, 0x019b, 0x01a9, + // Entry 80 - BF + 0x01a9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01d7, 0x01ea, + 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, + 0x01ea, 0x01ea, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, + 0x0208, 0x0208, 0x0215, 0x0215, 0x0215, 0x0225, 0x0225, 0x0225, + 0x0225, 0x0225, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0242, + 0x024e, 0x024e, 0x024e, 0x025d, 0x025d, 0x025d, 0x025d, 0x025d, + 0x025d, 0x026b, 0x026b, 0x0278, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + // Entry C0 - FF + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 1C0 - 1FF - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 200 - 23F - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0012, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, + 0x0284, 0x0284, 0x0284, 0x028c, }, }, - { // mk - mkLangStr, - mkLangIdx, - }, - { // ml - mlLangStr, - mlLangIdx, - }, - { // mn - mnLangStr, - mnLangIdx, + { // km + kmLangStr, + kmLangIdx, }, - { // mr - mrLangStr, - mrLangIdx, + { // kn + knLangStr, + knLangIdx, }, - { // ms - msLangStr, - msLangIdx, + { // ko + koLangStr, + koLangIdx, }, - { // mt - "AfarAbkażjanAvestanAfrikansAkanAmħarikuAragoneseGħarbiAssameseAvarikAjma" + - "raAżerbajġaniBaxkirBelarussuBulgaruBislamaBambaraBengaliTibetjanBren" + - "tonBosnijanKatalanĊeċenĊamorroKorsikuKrijĊekSlaviku tal-KnisjaĊuvaxW" + - "elxDaniżĠermaniżDiveħiDżongkaEweGriegIngliżEsperantoSpanjolEstonjanB" + - "askPersjanFulaħFinlandiżFiġiFawriżFranċiżFriżjanIrlandiżGalliku Skoċ" + - "ċiżGallegjanGwaraniGuġaratiManksĦawsaEbrajkĦindiĦiri MotuKroatHaiti" + - "anUngeriżArmenjanĦereroInterlinguaIndoneżjanInterlingueIgboSichuan Y" + - "iInupjakIdoIżlandiżTaljanInukitutĠappuniżĠavaniżĠorġjanKongoKikujuKu" + - "anyamaKażakKalallisutKmerKannadaKorejanKanuriKaxmiriKurdiżKomiKornik" + - "uKirgiżLatinLetżburgiżGandaLimburgishLingaljanLaoLitwanjanLuba-Katan" + - "gaLatvjanMalagażiMarxallMaoriMaċedonjanMalajalamMongoljanMaratiMalaj" + - "anMaltiBurmiżNawuruNdebele, ta’ FuqNepaliżNdongaOlandiżNinorsk Norve" + - "ġiżBokmahal NorveġiżNdebele, t’IsfelNavaħoĊiċewa; NjanġaOċċitanOġib" + - "waOromo (Afan)OrijaOssettikuPunġabiPaliPollakkPaxtunPortugiżKeċwaRet" + - "o-RomanzRundiRumenRussuKinjarwandaSanskritSardinjanSindiSami ta’ Fuq" + - "SangoSinħaliżSlovakkSlovenSamojanXonaSomaliAlbaniżSerbSwatiSoto, t’I" + - "sfelSundaniżSvediżSwaħiliTamilTeluguTaġikTajlandiżTigrinjaTurkmeniZw" + - "anaTonganTorkTsongaTatarTaħitjanWigurUkranjanUrduUżbekVendaVjetnamiż" + - "VolapukWalloonWolofĦożaJiddixJorubaŻwangĊiniżŻuluAċiniżAkoliAdangmeA" + - "dygheAfriħiliAjnuAkkadjenAleutIngliż, AntikAngikaAramajkArawkanjanAr" + - "apaħoArawakAsturianAwadħiBaluċiBaliniżBasaBejaBembaBojpuriBikolBiniS" + - "iksikaBrajBurjatBuginiżBlinKaddoKaribAtsamSibwanoĊibċaĊagatajĊukeseM" + - "ariĠargon taċ-ĊinukĊostawĊipewjanĊerokijXajennKoptikuCrimean Turkish" + - "; Crimean TatarKashubianDakotaDargwaDelawerjanSlavDogribDinkaDogriLo" + - "wer SorbianDwalaOlandiż, MedjevaliDjulaEfikEġizzjan (Antik)EkajukEla" + - "mitIngliż, MedjevaliEwondoFangFilippinoFonFranċiż, MedjevaliFranċiż," + - " AntikFrijuljanGaGajoGbajaGeezGilbertjanĠermaniku, Medjevali PulitĠe" + - "rmaniku, Antik PulitGondiGorontaloGotikuĠerboGrieg, AntikGwiċinĦajda" + - "ĦawajjanHiligaynonĦittitĦmongUpper SorbianĦupaIbanIlokoIngushLojban" + - "Lhudi-PersjanLhudi-GħarbiKara-KalpakKabuljanKaċinKambaKawiKabardianK" + - "asiKotaniżKimbunduKonkaniKosrejanKpelleKarachay-BalkarKuruskKumikuKu" + - "tenajLadinoLandaLambaLeżgjanMongoLożiLuba-LuluwaLuwisinużLundaLuwaLu" + - "xajMaduriżMagaħiMajtiliMakasarMandingwanMasajMokshaMandarMendeIrland" + - "iż, MedjevaliMikmekMinangkabawManċurjanManipuriMoħakMossiLingwi Dive" + - "rsiKriekMirandiżMarwariErzyaNeapolitanĠermaniż Komuni; Sassonu Komun" + - "iNewariNijasNijuwejanNogaiSkandinav, AntikSoto, ta’ FuqClassical New" + - "ariNjamweżiNyankoleNjoroNżimaOsaġjanTork (Imperu Ottoman)Pangasinjan" + - "PaħlaviPampamgaPapjamentoPalawjanPersjan AntikFeniċjuPonpejanProvenz" + - "al, AntikRaġastaniRapanwiRarotonganiŻingaruAromanijanSandaweJakutSam" + - "ritanSaskaSantaliSkoċċiżSelkupIrlandiż, AntikXanSidamoSouthern SamiL" + - "ule SamiInari SamiSkolt SamiSoninkeSogdienSererSukumaSusuSumerjanSir" + - "janTimneTerenoTetumTigreTivTokelauKlingonTlingitTamaxekTonga (Njasa)" + - "Tok PisinZimxjanTumbukaTuvaluTuvinjanUdmurtUgaritikuUmbunduGħerqVaiV" + - "otikWalamoWarajWaxoKalmykJaoJapeseŻapotekŻenagaŻuniGħarbi Standard M" + - "odernIngliż AwstraljanIngliż BrittanikuIngliż AmerikanFranċiż Kanadi" + - "żFranċiż ŻvizzeruMoldavjanSerbo-KroatĊiniż Simplifikat", - []uint16{ // 609 elements + {}, // ko-KP + { // kok + "अफारअबखेज़ियनअफ्रिकान्सत्विअमहारिक्अरेबिक्असामीऐमराअज़रबैजानीबष्किरबैलोर" + + "ुसियन्बल्गेरियनबिसलमाबंगालीतिबेतियनब्रेटनकटलानकोर्शियनज़ेक्वेळ्ष्ड" + + "ानिषजर्मनभूटानीग्रीक्आंग्लइस्परान्टोस्पानिषइस्टोनियन्बास्कपर्षियन्" + + "फिन्निष्फिजीफेरोस्फ्रेन्चफ्रिशियन्ऐरिषस्काटस् गेलिक्गेलीशियनगौरानी" + + "गुजरातीहौसाहेब्रुहिन्दीक्रोयेषियन्हंगेरियन्आर्मीनियन्इन्टरलिंग्वाइ" + + "न्डोनेषियनइन्टरलिंग्इनूपेयाक्आईस्लान्डिकइटालियनइन्युकट्टजापनीस्जाव" + + "नीस्जार्जियन्कज़ख्ग्रीनलान्डिककंबोडियनकन्नडाकोरियन्कश्मीरीकुर्दिषक" + + "िर्गिज़लाटिनलिंगालालाओतियन्लिथुआनियन्लाट्वियन् (लेट्टिष्)मलागसीमाओ" + + "रीमसीडोनियन्मळियाळममंगोलियन्मराठीमलयमालतीस्बर्मीज़्नौरोनेपाळीडच्नो" + + "र्वेजियनओसिटान्ओरोमो (अफान)ओरियापंजाबीपोलिषपाष्टो (पुष्टो)पोर्चुगी" + + "ज़्क्वेच्वारहटो-रोमान्स्किरुन्दीरोमानियन्रष्यन्किन्यार्वान्डासंस्क" + + "ृतसिंधीसांग्रोसिन्हलीस्स्लोवाकस्लोवेनियन्समोनशोनासोमाळीआल्बेनियन्स" + + "ेर्बियन्सिस्वातीसेसोथोसुंदनीसस्वीदीषस्वाहिलीतमिळतेलुगूतजिकथाईतिग्र" + + "िन्यातुर्कमनसेत्स्वानातोंगातुर्किषत्सोगातटारउधूरयुक्रेनियन्उर्दूउज" + + "़बेकवियत्नामीज़ओलापुकउलोफ़झ़ौसाइद्दिष्यूरुबाझ्हुन्गचीनीस्जुलूतगालो" + + "गकोंकणीमोल्डावियन्सेर्बो-क्रोयेषियन्", + []uint16{ // 610 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0014, 0x001c, 0x0020, 0x0029, 0x0032, - 0x0039, 0x0041, 0x0047, 0x004d, 0x005a, 0x0060, 0x0069, 0x0070, - 0x0077, 0x007e, 0x0085, 0x008d, 0x0094, 0x009c, 0x00a3, 0x00aa, - 0x00b2, 0x00b9, 0x00bd, 0x00c1, 0x00d3, 0x00d9, 0x00dd, 0x00e3, - 0x00ed, 0x00f4, 0x00fc, 0x00ff, 0x0104, 0x010b, 0x0114, 0x011b, - 0x0123, 0x0127, 0x012e, 0x0134, 0x013e, 0x0143, 0x014a, 0x0153, - 0x015b, 0x0164, 0x0176, 0x017f, 0x0186, 0x018f, 0x0194, 0x019a, - 0x01a0, 0x01a6, 0x01b0, 0x01b5, 0x01bc, 0x01c4, 0x01cc, 0x01d3, - // Entry 40 - 7F - 0x01de, 0x01e9, 0x01f4, 0x01f8, 0x0202, 0x0209, 0x020c, 0x0216, - 0x021c, 0x0224, 0x022e, 0x0237, 0x0240, 0x0245, 0x024b, 0x0253, - 0x0259, 0x0263, 0x0267, 0x026e, 0x0275, 0x027b, 0x0282, 0x0289, - 0x028d, 0x0294, 0x029b, 0x02a0, 0x02ac, 0x02b1, 0x02bb, 0x02c4, - 0x02c7, 0x02d0, 0x02dc, 0x02e3, 0x02ec, 0x02f3, 0x02f8, 0x0303, - 0x030c, 0x0315, 0x031b, 0x0322, 0x0327, 0x032e, 0x0334, 0x0346, - 0x034e, 0x0354, 0x035c, 0x036e, 0x0381, 0x0393, 0x039a, 0x03ab, - 0x03b4, 0x03bb, 0x03c7, 0x03cc, 0x03d5, 0x03dd, 0x03e1, 0x03e8, - // Entry 80 - BF - 0x03ee, 0x03f7, 0x03fd, 0x0408, 0x040d, 0x0412, 0x0417, 0x0422, - 0x042a, 0x0433, 0x0438, 0x0446, 0x044b, 0x0455, 0x045c, 0x0462, - 0x0469, 0x046d, 0x0473, 0x047b, 0x047f, 0x0484, 0x0493, 0x049c, - 0x04a3, 0x04ab, 0x04b0, 0x04b6, 0x04bc, 0x04c6, 0x04ce, 0x04d6, - 0x04db, 0x04e1, 0x04e5, 0x04eb, 0x04f0, 0x04f9, 0x04fe, 0x0506, - 0x050a, 0x0510, 0x0515, 0x051f, 0x0526, 0x052d, 0x0532, 0x0538, - 0x053e, 0x0544, 0x054a, 0x0551, 0x0556, 0x055e, 0x0563, 0x056a, - 0x0570, 0x0570, 0x0579, 0x0579, 0x057d, 0x0585, 0x0585, 0x058a, - // Entry C0 - FF - 0x058a, 0x058a, 0x0598, 0x059e, 0x05a5, 0x05af, 0x05af, 0x05b7, - 0x05b7, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5, - 0x05cc, 0x05d3, 0x05db, 0x05db, 0x05df, 0x05df, 0x05df, 0x05df, - 0x05e3, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05ef, - 0x05f4, 0x05f8, 0x05f8, 0x05f8, 0x05ff, 0x05ff, 0x05ff, 0x0603, - 0x0603, 0x0603, 0x0603, 0x0609, 0x0611, 0x0611, 0x0615, 0x0615, - 0x061a, 0x061f, 0x061f, 0x0624, 0x062b, 0x062b, 0x0632, 0x063a, - 0x0641, 0x0645, 0x0658, 0x065f, 0x0668, 0x0670, 0x0676, 0x0676, - // Entry 100 - 13F - 0x067d, 0x067d, 0x069b, 0x06a4, 0x06aa, 0x06b0, 0x06b0, 0x06ba, - 0x06be, 0x06c4, 0x06c9, 0x06c9, 0x06ce, 0x06db, 0x06db, 0x06e0, - 0x06f3, 0x06f3, 0x06f8, 0x06f8, 0x06f8, 0x06fc, 0x06fc, 0x070d, - 0x0713, 0x0719, 0x072b, 0x072b, 0x0731, 0x0731, 0x0735, 0x073e, - 0x073e, 0x0741, 0x0741, 0x0755, 0x0765, 0x0765, 0x0765, 0x0765, - 0x076e, 0x0770, 0x0770, 0x0770, 0x0774, 0x0779, 0x0779, 0x077d, - 0x0787, 0x0787, 0x07a2, 0x07b9, 0x07b9, 0x07be, 0x07c7, 0x07cd, - 0x07d3, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07e6, 0x07ec, + 0x0000, 0x000c, 0x0027, 0x0027, 0x0045, 0x0051, 0x0069, 0x0069, + 0x007e, 0x008d, 0x008d, 0x0099, 0x00b7, 0x00c9, 0x00ea, 0x0105, + 0x0117, 0x0117, 0x0129, 0x0141, 0x0153, 0x0153, 0x0162, 0x0162, + 0x0162, 0x017a, 0x017a, 0x0189, 0x0189, 0x0189, 0x019b, 0x01aa, + 0x01b9, 0x01b9, 0x01cb, 0x01cb, 0x01dd, 0x01ec, 0x020a, 0x021f, + 0x023d, 0x024c, 0x0264, 0x0264, 0x027c, 0x0288, 0x029a, 0x02af, + 0x02ca, 0x02d6, 0x02fe, 0x0316, 0x0328, 0x033d, 0x033d, 0x0349, + 0x035b, 0x036d, 0x036d, 0x038e, 0x038e, 0x03a9, 0x03c7, 0x03c7, + // Entry 40 - 7F + 0x03eb, 0x040c, 0x042a, 0x042a, 0x042a, 0x0445, 0x0445, 0x0466, + 0x047b, 0x0496, 0x04ab, 0x04c0, 0x04db, 0x04db, 0x04db, 0x04db, + 0x04ea, 0x050e, 0x0526, 0x0538, 0x054d, 0x054d, 0x0562, 0x0577, + 0x0577, 0x0577, 0x058f, 0x059e, 0x059e, 0x059e, 0x059e, 0x05b3, + 0x05cb, 0x05e9, 0x05e9, 0x061f, 0x0631, 0x0631, 0x0640, 0x065e, + 0x0673, 0x068e, 0x069d, 0x06a6, 0x06bb, 0x06d3, 0x06df, 0x06df, + 0x06f1, 0x06f1, 0x06fa, 0x06fa, 0x0718, 0x0718, 0x0718, 0x0718, + 0x072d, 0x072d, 0x074b, 0x075a, 0x075a, 0x076c, 0x076c, 0x077b, + // Entry 80 - BF + 0x07a2, 0x07c3, 0x07db, 0x0800, 0x0818, 0x0833, 0x0845, 0x086f, + 0x0884, 0x0884, 0x0893, 0x0893, 0x08a8, 0x08c3, 0x08d8, 0x08f9, + 0x0905, 0x0911, 0x0923, 0x0941, 0x095c, 0x0974, 0x0986, 0x099b, + 0x09b0, 0x09c8, 0x09d4, 0x09e6, 0x09f2, 0x09fb, 0x0a19, 0x0a2e, + 0x0a4c, 0x0a5b, 0x0a70, 0x0a82, 0x0a8e, 0x0a8e, 0x0a9a, 0x0abb, + 0x0aca, 0x0adc, 0x0adc, 0x0afd, 0x0b0f, 0x0b0f, 0x0b1e, 0x0b2d, + 0x0b42, 0x0b54, 0x0b69, 0x0b7b, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + // Entry C0 - FF + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + // Entry 100 - 13F + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, + 0x0b87, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, // Entry 140 - 17F - 0x07ec, 0x07f5, 0x07f5, 0x07ff, 0x0806, 0x080c, 0x0819, 0x0819, - 0x081e, 0x0822, 0x0822, 0x0827, 0x082d, 0x082d, 0x082d, 0x0833, - 0x0833, 0x0833, 0x0840, 0x084d, 0x084d, 0x0858, 0x0860, 0x0866, - 0x0866, 0x086b, 0x086f, 0x0878, 0x0878, 0x0878, 0x0878, 0x0878, - 0x0878, 0x0878, 0x0878, 0x087c, 0x0884, 0x0884, 0x0884, 0x0884, - 0x0884, 0x0884, 0x088c, 0x088c, 0x0893, 0x089b, 0x08a1, 0x08b0, - 0x08b0, 0x08b0, 0x08b0, 0x08b6, 0x08b6, 0x08b6, 0x08b6, 0x08bc, - 0x08c3, 0x08c9, 0x08c9, 0x08ce, 0x08d3, 0x08db, 0x08db, 0x08db, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, + 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, // Entry 180 - 1BF - 0x08db, 0x08db, 0x08db, 0x08e0, 0x08e5, 0x08e5, 0x08e5, 0x08f0, - 0x08fa, 0x08ff, 0x0903, 0x0908, 0x0908, 0x0908, 0x0908, 0x0910, - 0x0910, 0x0917, 0x091e, 0x0925, 0x092f, 0x0934, 0x0934, 0x093a, - 0x0940, 0x0945, 0x0945, 0x0945, 0x0959, 0x0959, 0x0959, 0x095f, - 0x096a, 0x0974, 0x097c, 0x0982, 0x0987, 0x0987, 0x0987, 0x0995, - 0x099a, 0x09a3, 0x09aa, 0x09aa, 0x09aa, 0x09af, 0x09af, 0x09af, - 0x09b9, 0x09b9, 0x09da, 0x09e0, 0x09e5, 0x09ee, 0x09ee, 0x09ee, - 0x09ee, 0x09f3, 0x0a03, 0x0a03, 0x0a03, 0x0a12, 0x0a12, 0x0a22, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, // Entry 1C0 - 1FF - 0x0a2b, 0x0a33, 0x0a38, 0x0a3e, 0x0a46, 0x0a5b, 0x0a66, 0x0a6e, - 0x0a76, 0x0a80, 0x0a88, 0x0a88, 0x0a88, 0x0a88, 0x0a95, 0x0a95, - 0x0a9d, 0x0a9d, 0x0a9d, 0x0aa5, 0x0aa5, 0x0ab5, 0x0ab5, 0x0ab5, - 0x0abf, 0x0ac6, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad9, 0x0ad9, - 0x0ad9, 0x0ad9, 0x0ae3, 0x0ae3, 0x0aea, 0x0aef, 0x0af7, 0x0af7, - 0x0afc, 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b0d, 0x0b0d, - 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b13, 0x0b13, 0x0b23, 0x0b23, - 0x0b23, 0x0b26, 0x0b26, 0x0b2c, 0x0b2c, 0x0b2c, 0x0b39, 0x0b42, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, // Entry 200 - 23F - 0x0b4c, 0x0b56, 0x0b5d, 0x0b64, 0x0b64, 0x0b69, 0x0b69, 0x0b69, - 0x0b6f, 0x0b73, 0x0b7b, 0x0b7b, 0x0b7b, 0x0b81, 0x0b81, 0x0b81, - 0x0b86, 0x0b86, 0x0b8c, 0x0b91, 0x0b96, 0x0b99, 0x0ba0, 0x0ba0, - 0x0ba7, 0x0bae, 0x0bae, 0x0bb5, 0x0bc2, 0x0bcb, 0x0bcb, 0x0bcb, - 0x0bcb, 0x0bd2, 0x0bd2, 0x0bd9, 0x0bdf, 0x0bdf, 0x0be7, 0x0be7, - 0x0bed, 0x0bf6, 0x0bfd, 0x0c03, 0x0c06, 0x0c06, 0x0c06, 0x0c06, - 0x0c06, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c11, 0x0c16, 0x0c1a, - 0x0c1a, 0x0c1a, 0x0c20, 0x0c20, 0x0c20, 0x0c23, 0x0c29, 0x0c29, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, // Entry 240 - 27F - 0x0c29, 0x0c29, 0x0c29, 0x0c31, 0x0c31, 0x0c31, 0x0c38, 0x0c38, - 0x0c3d, 0x0c3d, 0x0c3d, 0x0c54, 0x0c54, 0x0c54, 0x0c54, 0x0c66, - 0x0c66, 0x0c78, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c9a, - 0x0cad, 0x0cad, 0x0cad, 0x0cad, 0x0cad, 0x0cb6, 0x0cc1, 0x0cc1, - 0x0cd4, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, + 0x0bcc, 0x0c00, }, }, - { // mua - "akaŋamharikarabiyabelarussiyabulgariabengaliasyekyagermaŋgrekzah Anglofo" + - "ŋEspaniyaPersiazah sǝr Franssǝhaussahindihungariyaindonesiyaigboita" + - "liyazah sǝr JapoŋjavaniyakmerkoreamalasiyabirmaniaNepaliyazah sǝr ma" + - " kasǝŋPǝnjabiPoloniyaZah sǝr PortugalRomaniyaRussiyaZah sǝr RwandaSo" + - "maliyaSwediaTamulthTurkUkrainiaUrduVietnamiyaYorubazah SyiŋZuluMUNDA" + - "Ŋ", - []uint16{ // 423 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000c, 0x000c, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0026, - 0x0026, 0x0026, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003f, 0x004c, 0x004c, 0x0054, - 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0071, - 0x0071, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, 0x007f, 0x007f, - // Entry 40 - 7F - 0x007f, 0x0089, 0x0089, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, - 0x0094, 0x0094, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00ab, 0x00ab, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00c4, - 0x00cc, 0x00cc, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, - 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00ef, - // Entry 80 - BF - 0x00ef, 0x0100, 0x0100, 0x0100, 0x0100, 0x0108, 0x010f, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, - 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, 0x0133, 0x0133, 0x0133, - 0x0133, 0x0133, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x013f, - 0x0143, 0x0143, 0x0143, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x0153, 0x0153, 0x015c, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry C0 - FF - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry 100 - 13F - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry 140 - 17F - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry 180 - 1BF - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0167, - }, - }, - { // my - myLangStr, - myLangIdx, - }, - { // mzn - "آبخازیآفریکانسآکانامهریعربیآسامیآذری ِترکیباشقیریبلاروسیبلغاریبامباراییب" + - "نگالیتبتیبرِتونیبوسنیاییکاتالونیچچنیکورسیکانچکیچوواشیولزیدانمارکیآل" + - "مانیدزونگخااوه\u200cیییونانیانگلیسیاسپرانتوایسپانیولیاستونیاییباسکی" + - "فارسیفینیشفیجیاییفاروییفرانسویغربی فیریزیایریشگالیکگورانیگجراتیمانک" + - "سهوساعبریهندیکرواتیهائتیاییمجاریارمنیاندونزیاییایگبوسیچوئان ییایسلن" + - "دیایتالیاییانوکتیتوتجاپونیجاواییگرجیکیکویوقزاقیکالائلیسوتخمریکانّاد" + - "اکُره\u200cییکشمیریکوردیکورنیشقرقیزیلاتینلوکزامبورگیگاندالینگالالائ" + - "وییلتونیاییلوبا-کاتانگالاتویاییمالاگاسیمائوریمقدونیمالایالاممغولیما" + - "راتیمالاییمالتیبرمه\u200cییشمالی ندبلهنپالیهلندینروژی نینورسکنروژی " + - "بوکمالاورومواوریاپنجابیلهستونیپشتوپرتغالیقوئچوئارومانشروندیرومانیای" + - "یروسیکنیاروآنداییسانسکریتسندیشمالی سامیسانگوسینهالااسلواکیاسلوونیای" + - "یشوناسومالیاییآلبانیاییصربیسوندانسیسوئدیسواحیلیتامیلیتلوگوییتاجیکیت" + - "اییتیگرینیاییترکمونیتونگانیترکیتاتاریئوغوریاوکراینیاردوازبکیویتنامی" + - "وولفیخوسایوروباچینیزولوآقمماپوچهآسوبمباییبناییغربی بلوچیبدوییچیگاچر" + - "وکیاییمیونی کوردیتایتازارماییپایین صربیدوئالاییجولا-فونیامبوفیلیپین" + - "وگاگائوزیسوییس آلمانیگوسیهاواییاییبالایی صربینگومباماچامهقبایلیکامب" + - "اییماکوندهکیپ وُردیکویرا چیینیکالنجینکومی-پرمیاککونکانیشامبالابافیا" + - "ییلانگیلاکوتاشمالی لُریلوئولوییاماساییمِروییموریسینماخوئا-میتومِتاء" + - "موهاکموندانگمازرونیناماپایین آلمانیکوئاسیونئکونوئرنیانکولهکئیچه" + - "\u200cئیرومبوروآییسامبوروسانگووجنوبی کردیسِناییکویرابورا سنیتاچلهیتج" + - "نوبی سامیلوله سامیایناری سامیسکولت سامیتسوییتاساواقیمیونی اطلس تامز" + - "یقینشناسی\u200cیه زوونواییوونجوییوالرپیریسوگامراکش ِاستاندارد ِتاما" + - "زیقتیاین زوون بشناسی\u200cیه نیّهمدرن استاندارد عربیجنوبی آذری ترکی" + - "اتریش ِآلمانیسوییس ِآلمانیاسترالیای ِانگلیسیکانادای ِانگلیسیبریتیش " + - "انگلیسیامریکن انگلیسیجنوبی آمریکای ِایسپانیولیاروپای ِایسپانیولیمکز" + - "یک ِایسپانیولیکانادای ِفرانسویسوییس ِفرانسویپایین ساکسونیفلمیشبرزیل" + - " ِپرتغالیاروپای ِپرتغالیمولداویکنگو سواحیلیساده چینیسنتی چینی", - []uint16{ // 610 elements + { // ks + "اَفاراَبخازِیاناَویستَناَفریٖکانٛزاَکاناَمہاریاَراگونیعربیاسٲمۍاَوارِکای" + + "مارااَزَربیجانیبَشکیٖربیلَروٗشیَنبینابِسلامابَمبارابَنٛگٲلۍتِبتیبری" + + "ٹَنبوسنِیَنکَتلانچیچَنکَموروکارسِکَنکریچیٚکچٔرچ سلاوِکچُواشویٚلشڈین" + + "ِشجٔرمَندِویہیزونٛگکھاایٖویوٗنٲنیاَنٛگیٖزۍایٚسپَرینٹوسپینِشایٚسٹونی" + + "َنباسکفارسیفُلاہفِنِشفِجیَنفَروسفریٚنچمغربی فرِشیَناَیرِشسکوٹِش گیے" + + "لِکگیلِشِیَنگُوارَنیگُجرٲتیمینٛکسہاوساعبرٲنۍہِندیہِری موتوٗکروشِیَن" + + "ہیتِیاںہَنٛگیریَناَرمینیَنہیٚریٖرواِنٹَرلِنٛگوااِنڈونیشیااِنٹَر لِن" + + "ٛنگویےاِگبوسِچوان یٖیاِنُپِیاکاِڈوآیِسلینڈِکاِٹیلیَناِنُکتِتوٗجاپٲن" + + "ۍجَوَنیٖزجارجِیَنکونٛگوکِکُیوٗکُوانیاماکازَخکَلالِسُتخَمیرکَنَڑکوری" + + "َنکَنوٗریکٲشُرکُردِشکومیکورنِشکِرگِزلاتیٖنیلُکھزیمبورگِشگاندالِمبٔر" + + "گِشلِنگالالاولِتھوانِیَنلوُبا کَتَنٛگالَتوِیَنمَلاگَسیمارشَلیٖزماور" + + "یمیکَڈونیَنمٔلیالَممَنٛگولیمَرٲٹھۍمَلَےمَلتیٖسبٔمیٖزناورُشُمال ڈَبی" + + "لنیٚپٲلۍڈونٛگاڈَچناروییَن نَے نورسکناروییَن بوکمالجنوب ڈیٚبیلنَواجو" + + "نِیَنجااوکسیٖٹَناوجِبوااوٚرومواوٚرِیااوٚسیٚٹِکپَنجٲبۍپالیپالِشپَشتو" + + "ٗپُرتَگیٖزکُویشُوارومانشرُندیرومٲنیروٗسیکِنیاوِنداسَنسکرٕتسراڈیٖنیس" + + "ِندیشُمٲلی سَمیسَنگوسِنہالاسلووَکسلووینیَنسَمواَنشوناسومٲلیالبانِیَ" + + "نسٔربِیَنسواتیجنوبی ستھوسَنڈَنیٖزسویٖڈِشسواہِلیتَمِلتیلگوٗتاجِکتھاے" + + "ٹِگرِنیاتُرکمینسواناٹونٛگاتُرکِشژونٛگاتَتارتاہیشِیَنیوٗکرینیٲییاُرد" + + "وٗاُزبیکوینداوِیَتنَمیٖزوولَپُکوَلوٗنوولوفکھوسایِدِشیورُبازُہانٛگچی" + + "ٖنیزُلوٗاَچَےنیٖزاَکولیاَدَنٛگمیےاَدَیٖگیےاَفرِہِلیاینوٗاَکادِیَناَ" + + "لویتیجنوٗبی اَلتاییپرون اَنٛگریٖزیاَنٛگِکااَرَمیکایرو کونِیَناَراپا" + + "ہواَراوَکایسٹوٗریَناَوَدیبَلوٗچیبالِنیٖزباسابیجابیٚمبابوجپوٗریبِکول" + + "بِنیسِکسِکابرٛجبُرِیَتبَگنیٖزبٕلِنکاڈوکارِباتسَمسیباونوچیٖبچاچھَگتا" + + "ےچُکیٖزماریچِنوٗک جارگَنچوکتَوشیپویانچیٚروکیشییونکاپٹِککرٕمیٖن تُرک" + + "یکَشوٗبِیَنڈکوٹادَرگواڈیٚلوییَرسلیوڈاگرِبڈِنکاڈوگریبوٚنِم ساربِیَند" + + "ُوالاوَستی پُرتُگالیڈِیوٗلاایٚفِکقدیٖمی مِصریایٚکاجُکایٚلامایِٹوَسط" + + "ی اَنٛگریٖزۍایٚوونڈوفینٛگفِلِپیٖنوفونوسطی فریٚنچپرون فریٚنچشُمٲلی ف" + + "رِشیَنمشرِقی فرِشیَنفروٗلِیَنگاگیےیوگبایاگیٖزگِلبٔرٹیٖزوَسطی ہاے جٔ" + + "رمَنپرون ہاے جٔرمَنگوندیگورینٹیلوگوتھِکگرِبوقدیٖم یوٗنٲنیسٕوِس جٔرم" + + "َنگُوِچ اِنہَیداہوایِیَنہِلیٖگینَنہِتایِتہمونٛگہیٚرِم ساربِیَنہُپاا" + + "ِباناِلوکواِنٛگُشلوجبانجوڈیو فارسیجوڈیو عربیکارا کَلپَککَبایِلکاچِن" + + "جُوٗکامباکَویکَبارڈِیَنتَیَپکوروکھاسیکھوتَنیٖزکِمبُندوٗکونکَنیکوسری" + + "یَنکَپیلیکراچیے بَلکارکَریلِیَنکُرُکھکُمِککُتینَےلیڈِنولَہَندالَمبا" + + "لیزگِیَنمونٛگولوزیلوٗبا لوٗلُوالویِسینولُندالُوولُسہاےمَدُریٖزمَگاے" + + "میتَھلیمَکَسارمَندِنٛگومَساےموکشامَندَرمیندیےوَستی ایرِشمِکمیکمِنَن" + + "ٛگکَباومانٛچوٗمَنیپوٗریموہاکموسیواریاہ زبانکریٖکمِراندیٖزمارواڑیایٚ" + + "رزِیانیٖپالیٹَنبوٚنِم جٔرمَننیٚوارینِیاسنِیویَننوگاےپرون نارسیایٚن " + + "کوشمالی ستھوکلاسِکَل نیوارینِیَمویٚزینِیَنکولنِیورونَظیٖمااوٚسیجاوٹ" + + "ومَن تُرکِشپَنٛگاسِنَنپَہلَویپَمپَنٛگاپَپِیامیٚنٹوپَلااُواںپرون فار" + + "سیفونیٖشیَنپانپیٚیَنپرون پروویٚنچَلراجِستھٲنۍرَپانویرَروٹونٛگَنرومَ" + + "نیاَرومانیسَندَویےیاکُتسَمارِتَن اَرامیکسَسَکسَنتالیسِچِلِیَنسکاٹسس" + + "یٚلکُپپرون ایرِششانسِداموجنوٗبی سَمیلولیے سَمیاِناری سَمیسکولٹ سَمی" + + "سونِنکیےسوگڈِیَنسرٛانَن ٹونٛگوسیٚریرسُکُماسُسوٗسُمیریَنسیٖریٲییٹِمن" + + "یےٹیٚریٚنوٹیٹَمٹاےگریےتیٖوٹوکیٖلاوکِلِنگونٹِلِنگِتتاماشیکنیاسا ٹونٛ" + + "گاٹاک پِسِنژھِمشِیانتُمبُکاتُوالوٗتُویٖنیَناُدمُرتاُگارتِکیُمبُندوٗ" + + "روٗٹواےووتِکوالامووَریےواشوکالمِکیاویَپیٖززَپوتیٚکزیناگازوٗنیکانٛہہ" + + " تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنسٕوِس ہاےجٔرمَنآسٹریلیَن ا" + + "َنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَنٛگریٖزۍیوٗ ایٚس اَنٛگریٖز" + + "ۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈیَن فریٚنچسٕوٕس فریٚنچفلیٚ" + + "مِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولداوِیَنسیٚربو کروشِیَنسیٚو" + + "د چیٖنیرِوٲجی چیٖنی", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000c, 0x000c, 0x001c, 0x0024, 0x002e, 0x002e, - 0x0036, 0x0040, 0x0040, 0x0040, 0x0053, 0x0061, 0x006f, 0x007b, - 0x007b, 0x008d, 0x0099, 0x00a1, 0x00af, 0x00bf, 0x00cf, 0x00d7, - 0x00d7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00f9, 0x0101, 0x0111, - 0x011d, 0x011d, 0x012b, 0x0138, 0x0144, 0x0152, 0x0162, 0x0176, - 0x0188, 0x0192, 0x019c, 0x019c, 0x01a6, 0x01b4, 0x01c0, 0x01ce, - 0x01e3, 0x01ed, 0x01ed, 0x01f7, 0x0203, 0x020f, 0x0219, 0x0221, - 0x0229, 0x0231, 0x0231, 0x023d, 0x024d, 0x0257, 0x0261, 0x0261, + 0x0000, 0x000a, 0x001e, 0x002e, 0x0044, 0x004e, 0x005c, 0x006c, + 0x0074, 0x007e, 0x008c, 0x0098, 0x00ae, 0x00bc, 0x00d2, 0x00da, + 0x00e8, 0x00f6, 0x0106, 0x0110, 0x011c, 0x012c, 0x0138, 0x0142, + 0x014e, 0x015e, 0x0164, 0x016c, 0x0181, 0x018b, 0x0195, 0x019f, + 0x01ab, 0x01b7, 0x01c7, 0x01cf, 0x01dd, 0x01ef, 0x0205, 0x0211, + 0x0225, 0x022d, 0x0237, 0x0241, 0x024b, 0x0257, 0x0261, 0x026d, + 0x0286, 0x0292, 0x02ab, 0x02bd, 0x02cd, 0x02db, 0x02e7, 0x02f1, + 0x02fd, 0x0307, 0x031a, 0x032a, 0x0338, 0x034c, 0x035e, 0x036e, // Entry 40 - 7F - 0x0261, 0x0275, 0x0275, 0x027f, 0x0292, 0x0292, 0x0292, 0x02a0, - 0x02b2, 0x02c4, 0x02d0, 0x02dc, 0x02e4, 0x02e4, 0x02f0, 0x02f0, - 0x02fa, 0x030e, 0x0316, 0x0324, 0x0333, 0x0333, 0x033f, 0x0349, - 0x0349, 0x0355, 0x0361, 0x036b, 0x0381, 0x038b, 0x038b, 0x0399, - 0x03a5, 0x03b5, 0x03cc, 0x03dc, 0x03ec, 0x03ec, 0x03f8, 0x0404, - 0x0416, 0x0420, 0x042c, 0x0438, 0x0442, 0x0451, 0x0451, 0x0466, - 0x0470, 0x0470, 0x047a, 0x0493, 0x04aa, 0x04aa, 0x04aa, 0x04aa, - 0x04aa, 0x04aa, 0x04b6, 0x04c0, 0x04c0, 0x04cc, 0x04cc, 0x04da, + 0x0388, 0x039c, 0x03bb, 0x03c5, 0x03d8, 0x03ea, 0x03f2, 0x0406, + 0x0416, 0x042a, 0x0436, 0x0446, 0x0456, 0x0462, 0x0470, 0x0482, + 0x048c, 0x049e, 0x04a8, 0x04b2, 0x04be, 0x04cc, 0x04d6, 0x04e2, + 0x04ea, 0x04f6, 0x0502, 0x0510, 0x052a, 0x0534, 0x0546, 0x0554, + 0x055a, 0x0570, 0x058b, 0x059b, 0x05ab, 0x05bd, 0x05c7, 0x05db, + 0x05eb, 0x05fb, 0x0609, 0x0613, 0x0621, 0x062d, 0x0637, 0x064c, + 0x065a, 0x0666, 0x066c, 0x068e, 0x06ab, 0x06c0, 0x06cc, 0x06da, + 0x06ec, 0x06fa, 0x0708, 0x0716, 0x0728, 0x0736, 0x073e, 0x0748, // Entry 80 - BF - 0x04e2, 0x04f0, 0x04fe, 0x050a, 0x0514, 0x0526, 0x052e, 0x0546, - 0x0556, 0x0556, 0x055e, 0x0571, 0x057b, 0x0589, 0x0597, 0x05ab, - 0x05ab, 0x05b3, 0x05c5, 0x05d7, 0x05df, 0x05df, 0x05df, 0x05ef, - 0x05f9, 0x0607, 0x0613, 0x0621, 0x062d, 0x0635, 0x0649, 0x0657, - 0x0657, 0x0665, 0x066d, 0x066d, 0x0679, 0x0679, 0x0685, 0x0695, - 0x069d, 0x06a7, 0x06a7, 0x06b5, 0x06b5, 0x06b5, 0x06bf, 0x06c7, - 0x06c7, 0x06d3, 0x06d3, 0x06db, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e3, 0x06e3, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, + 0x0754, 0x0766, 0x0776, 0x0782, 0x078c, 0x0798, 0x07a2, 0x07b6, + 0x07c6, 0x07d6, 0x07e0, 0x07f5, 0x07ff, 0x080d, 0x0819, 0x082b, + 0x0839, 0x0841, 0x084d, 0x085f, 0x086f, 0x0879, 0x088c, 0x089e, + 0x08ac, 0x08ba, 0x08c4, 0x08d0, 0x08da, 0x08e2, 0x08f2, 0x0900, + 0x090a, 0x0916, 0x0922, 0x092e, 0x0938, 0x094a, 0x094a, 0x0960, + 0x096c, 0x0978, 0x0982, 0x0998, 0x09a6, 0x09b2, 0x09bc, 0x09c6, + 0x09d0, 0x09dc, 0x09ea, 0x09f4, 0x09fe, 0x0a10, 0x0a1c, 0x0a30, + 0x0a42, 0x0a42, 0x0a54, 0x0a54, 0x0a5e, 0x0a70, 0x0a70, 0x0a7e, // Entry C0 - FF - 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06f5, 0x06f5, 0x06f5, - 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06fb, 0x06fb, 0x06fb, 0x06fb, - 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, - 0x06fb, 0x0707, 0x0707, 0x0711, 0x0711, 0x0711, 0x0724, 0x0724, - 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, - 0x0724, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, - 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x0736, 0x0736, 0x0736, - 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0746, 0x0746, 0x075b, - // Entry 100 - 13F - 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x0765, 0x0765, - 0x0765, 0x0765, 0x0765, 0x0773, 0x0773, 0x0786, 0x0786, 0x0796, - 0x0796, 0x07a7, 0x07a7, 0x07a7, 0x07af, 0x07af, 0x07af, 0x07af, - 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07bf, - 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, - 0x07bf, 0x07bf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, - 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, - 0x07cf, 0x07cf, 0x07e6, 0x07e6, 0x07e6, 0x07ee, 0x07ee, 0x07ee, + 0x0a7e, 0x0a99, 0x0ab6, 0x0ac6, 0x0ad4, 0x0aeb, 0x0aeb, 0x0afb, + 0x0afb, 0x0afb, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b1d, + 0x0b1d, 0x0b29, 0x0b37, 0x0b47, 0x0b47, 0x0b4f, 0x0b4f, 0x0b4f, + 0x0b4f, 0x0b57, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, + 0x0b73, 0x0b7d, 0x0b85, 0x0b85, 0x0b85, 0x0b93, 0x0b93, 0x0b93, + 0x0b9b, 0x0b9b, 0x0b9b, 0x0b9b, 0x0ba9, 0x0bb7, 0x0bb7, 0x0bc1, + 0x0bc1, 0x0bc9, 0x0bd3, 0x0bd3, 0x0bdd, 0x0beb, 0x0beb, 0x0bf7, + 0x0c05, 0x0c11, 0x0c19, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5a, 0x0c64, + // Entry 100 - 13F + 0x0c64, 0x0c70, 0x0c70, 0x0c89, 0x0c89, 0x0c9d, 0x0ca7, 0x0cb3, + 0x0cb3, 0x0cc5, 0x0ccd, 0x0cd9, 0x0ce3, 0x0ce3, 0x0ced, 0x0d0a, + 0x0d0a, 0x0d16, 0x0d33, 0x0d33, 0x0d41, 0x0d41, 0x0d41, 0x0d4d, + 0x0d4d, 0x0d64, 0x0d74, 0x0d88, 0x0da7, 0x0da7, 0x0db7, 0x0db7, + 0x0dc1, 0x0dd3, 0x0dd3, 0x0dd9, 0x0dd9, 0x0dee, 0x0e03, 0x0e03, + 0x0e1e, 0x0e39, 0x0e4b, 0x0e4f, 0x0e4f, 0x0e4f, 0x0e59, 0x0e63, + 0x0e63, 0x0e6b, 0x0e7f, 0x0e7f, 0x0e9d, 0x0eb9, 0x0eb9, 0x0ec3, + 0x0ed5, 0x0ee1, 0x0eeb, 0x0f04, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f1b, // Entry 140 - 17F - 0x07ee, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0815, 0x0815, - 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, - 0x0821, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x0839, 0x0839, - 0x0839, 0x0847, 0x0847, 0x0847, 0x0847, 0x0847, 0x0855, 0x0866, - 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x087b, 0x087b, 0x087b, - 0x087b, 0x0889, 0x0889, 0x089e, 0x08ac, 0x08ac, 0x08ac, 0x08ac, - 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ba, 0x08c8, 0x08c8, 0x08c8, - 0x08c8, 0x08c8, 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08d2, + 0x0f2c, 0x0f36, 0x0f36, 0x0f46, 0x0f46, 0x0f5a, 0x0f68, 0x0f74, + 0x0f91, 0x0f91, 0x0f99, 0x0fa3, 0x0fa3, 0x0faf, 0x0fbd, 0x0fbd, + 0x0fbd, 0x0fc9, 0x0fc9, 0x0fc9, 0x0fde, 0x0ff1, 0x0ff1, 0x1006, + 0x1014, 0x101e, 0x1026, 0x1030, 0x1038, 0x104c, 0x104c, 0x1056, + 0x1056, 0x1056, 0x1056, 0x105e, 0x105e, 0x1068, 0x107a, 0x107a, + 0x107a, 0x107a, 0x107a, 0x107a, 0x108c, 0x108c, 0x109a, 0x10aa, + 0x10b6, 0x10cf, 0x10cf, 0x10cf, 0x10e1, 0x10ed, 0x10ed, 0x10ed, + 0x10ed, 0x10f7, 0x1105, 0x1111, 0x1111, 0x111f, 0x1129, 0x1139, // Entry 180 - 1BF - 0x08d2, 0x08de, 0x08de, 0x08de, 0x08de, 0x08f1, 0x08f1, 0x08f1, - 0x08f1, 0x08f1, 0x08f9, 0x08f9, 0x0903, 0x0903, 0x0903, 0x0903, - 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x090f, 0x090f, 0x090f, - 0x090f, 0x090f, 0x091b, 0x0929, 0x0929, 0x093e, 0x0948, 0x0948, - 0x0948, 0x0948, 0x0948, 0x0952, 0x0952, 0x0952, 0x0960, 0x0960, - 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x096e, 0x096e, - 0x096e, 0x0976, 0x098d, 0x098d, 0x098d, 0x098d, 0x098d, 0x099b, - 0x099b, 0x099b, 0x099b, 0x099b, 0x09a3, 0x09a3, 0x09ab, 0x09ab, + 0x1139, 0x1139, 0x1139, 0x1139, 0x1139, 0x1145, 0x114d, 0x114d, + 0x114d, 0x1166, 0x1176, 0x1180, 0x1188, 0x1194, 0x1194, 0x1194, + 0x1194, 0x11a4, 0x11a4, 0x11ae, 0x11bc, 0x11ca, 0x11dc, 0x11e6, + 0x11e6, 0x11f0, 0x11fc, 0x1208, 0x1208, 0x1208, 0x121d, 0x121d, + 0x121d, 0x1229, 0x1241, 0x124f, 0x1261, 0x126b, 0x1273, 0x1273, + 0x1273, 0x1288, 0x1292, 0x12a4, 0x12b2, 0x12b2, 0x12b2, 0x12c2, + 0x12c2, 0x12c2, 0x12d6, 0x12d6, 0x12ef, 0x12fd, 0x1307, 0x1315, + 0x1315, 0x1315, 0x1315, 0x131f, 0x1332, 0x1332, 0x133f, 0x1352, // Entry 1C0 - 1FF - 0x09ab, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, - 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, - 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09cc, 0x09cc, - 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09d6, 0x09d6, 0x09d6, - 0x09d6, 0x09d6, 0x09d6, 0x09e0, 0x09e0, 0x09e0, 0x09e0, 0x09ee, - 0x09ee, 0x09ee, 0x09ee, 0x09ee, 0x09fa, 0x09fa, 0x09fa, 0x09fa, - 0x0a0d, 0x0a0d, 0x0a19, 0x0a19, 0x0a19, 0x0a32, 0x0a32, 0x0a32, - 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a53, 0x0a64, + 0x1352, 0x136f, 0x1383, 0x1393, 0x139f, 0x13ad, 0x13b9, 0x13d4, + 0x13ea, 0x13f8, 0x140a, 0x1422, 0x1434, 0x1434, 0x1434, 0x1434, + 0x1434, 0x1447, 0x1447, 0x1459, 0x1459, 0x1459, 0x146b, 0x146b, + 0x1488, 0x1488, 0x1488, 0x149c, 0x14aa, 0x14c0, 0x14c0, 0x14c0, + 0x14c0, 0x14cc, 0x14cc, 0x14cc, 0x14cc, 0x14dc, 0x14dc, 0x14ec, + 0x14f6, 0x1517, 0x1517, 0x1521, 0x152f, 0x152f, 0x152f, 0x152f, + 0x1541, 0x154b, 0x154b, 0x154b, 0x154b, 0x154b, 0x154b, 0x1559, + 0x1559, 0x156c, 0x156c, 0x156c, 0x1572, 0x1572, 0x157e, 0x157e, // Entry 200 - 23F - 0x0a79, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, - 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, - 0x0a8c, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, - 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, - 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0aa6, 0x0aa6, 0x0ac8, - 0x0ac8, 0x0ac8, 0x0ac8, 0x0ae4, 0x0aec, 0x0aec, 0x0aec, 0x0aec, - 0x0aec, 0x0aec, 0x0aec, 0x0afa, 0x0afa, 0x0afa, 0x0afa, 0x0afa, - 0x0b0a, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b12, 0x0b12, 0x0b12, 0x0b12, + 0x157e, 0x1593, 0x15a6, 0x15bb, 0x15ce, 0x15de, 0x15ee, 0x1609, + 0x1615, 0x1615, 0x1615, 0x1621, 0x162b, 0x163b, 0x163b, 0x163b, + 0x164b, 0x164b, 0x164b, 0x1657, 0x1657, 0x1667, 0x1671, 0x167f, + 0x1687, 0x1697, 0x1697, 0x16a7, 0x16b7, 0x16b7, 0x16c5, 0x16dc, + 0x16ed, 0x16ed, 0x16ed, 0x16ed, 0x16ff, 0x16ff, 0x170d, 0x171b, + 0x171b, 0x172d, 0x172d, 0x173b, 0x174b, 0x175d, 0x1765, 0x176b, + 0x176b, 0x176b, 0x176b, 0x176b, 0x1775, 0x1775, 0x1775, 0x1775, + 0x1781, 0x178b, 0x1793, 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, // Entry 240 - 27F - 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b46, - 0x0b46, 0x0b72, 0x0b72, 0x0b96, 0x0bb2, 0x0bcb, 0x0be4, 0x0c07, - 0x0c26, 0x0c41, 0x0c5c, 0x0c8c, 0x0caf, 0x0cd0, 0x0cd0, 0x0cef, - 0x0d0a, 0x0d23, 0x0d2d, 0x0d48, 0x0d65, 0x0d73, 0x0d73, 0x0d8a, - 0x0d9b, 0x0dac, + 0x17a5, 0x17b1, 0x17b1, 0x17b1, 0x17b1, 0x17b1, 0x17c1, 0x17c1, + 0x17c1, 0x17cd, 0x17cd, 0x17d7, 0x180d, 0x1815, 0x1815, 0x1815, + 0x1832, 0x184f, 0x1876, 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, + 0x192b, 0x192b, 0x1948, 0x195f, 0x195f, 0x196d, 0x198e, 0x19b1, + 0x19c5, 0x19e2, 0x19e2, 0x19f7, 0x1a0e, }, }, - { // naq - "AkangowabAmharicgowabArabiǁî gowabBelarusanǁî gowabBulgariaǁî gowabBenga" + - "liǁî gowabCzechǁî gowabDuitsXriksEngelsSpaansPersiaǁî gowabFransHaus" + - "agowabHindigowabHungariaǁî gowabIndonesiaǁî gowabIgbogowabItaliansJa" + - "paneesJavaneseKhmerǁî gowab, CentralKoreaǁî gowabMalayǁî gowabBurmes" + - "ǁî gowabNepalǁî gowabHollandsPunjabigowabPoleǁî gowabPortugeesRoman" + - "iaǁî gowabRussiaǁî gowabRwandaǁî gowabSomaliǁî gowabSwedeǁî gowabTam" + - "ilǁî gowabThaiǁî gowabTurkeǁî gowabUkrainiaǁî gowabUrduǁî gowabVietn" + - "amǁî gowabYorubabChineesǁî gowab, MandarinniZulubKhoekhoegowab", - []uint16{ // 434 elements + { // ksb + "KiakanKiamhaliKialabuKibelaausiKibulgaliaKibanglaKicheckiKijeumaniKigiik" + + "iKiingeezaKihispaniaKiajemiKifalansaKihausaKihindiKihungaiKiindonesi" + + "aKiigboKiitalianoKijapaniKijavaKikambodiaKikoleaKimalesiaKibulmaKine" + + "paliKiholanziKipunjabiKipolandiKilenoKiomaniaKilusiKinyalwandaKisoma" + + "liKiswidiKitamilKitailandiKituukiKiuklaniaKiulduKivietinamuKiyolubaK" + + "ichinaKizuluKishambaa", + []uint16{ // 375 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0037, 0x0049, - 0x0049, 0x0049, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x006e, 0x006e, 0x006e, 0x006e, 0x0073, 0x0079, 0x0079, 0x007f, - 0x007f, 0x007f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x009e, - 0x009e, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00ba, 0x00ba, 0x00ba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0049, 0x0052, 0x0052, 0x005c, + 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c, + 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073, + 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0082, 0x0082, 0x0082, // Entry 40 - 7F - 0x00ba, 0x00cd, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00de, 0x00de, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x0106, 0x0106, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0124, 0x0124, 0x0134, 0x0134, 0x0134, - 0x0143, 0x0143, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, - 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x0157, 0x0157, 0x0165, + 0x0082, 0x008d, 0x008d, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, + 0x009d, 0x009d, 0x00a5, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, + 0x00ab, 0x00ab, 0x00b5, 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, + 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, + 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, + 0x00bc, 0x00bc, 0x00bc, 0x00c5, 0x00c5, 0x00cc, 0x00cc, 0x00cc, + 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e6, 0x00e6, 0x00ef, // Entry 80 - BF - 0x0165, 0x016e, 0x016e, 0x016e, 0x016e, 0x017f, 0x018f, 0x019f, - 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, - 0x019f, 0x019f, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, - 0x01be, 0x01be, 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01fc, - 0x020a, 0x020a, 0x020a, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x0222, 0x0222, 0x023f, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x00ef, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00fd, 0x0103, 0x010e, + 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, + 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, + 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x013e, + 0x0144, 0x0144, 0x0144, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, + 0x014f, 0x0157, 0x0157, 0x015e, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, // Entry C0 - FF - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, // Entry 100 - 13F - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, // Entry 140 - 17F - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - // Entry 180 - 1BF - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0251, - }, - }, - { // nd - "isi-Akhaniisi-Amaharikhiisi-Alabhuisi-Bhelarashiyaniisi-Bulgariaisi-Bhen" + - "galiisi-Czechisi-Jalimaniisi-Gilikiisi-Ngisiisi-Sipeyiniisi-Pheshiya" + - "niisi-Fulentshiisi-Hausaisi-Hindiisi-Hangariisi-Indonesiaisi-Igboisi" + - "-Italianoisi-Japhaniisi-Javaisi-Khambodiyaisi-Koriyaisi-Malayiisi-Bu" + - "rmaisiNdebeleisi-Nepaliisi-Dutchisi-Phunjabiisi-Pholoshiisi-Potukezi" + - "isi-Romaniisi-Rashiyaisi-Ruwandaisi-Somaliisi-Swidishiisi-Thamilisi-" + - "Thayiisi-Thekishiisi-Ukrainisi-Uduisi-Vietnameseisi-Yorubhaisi-China" + - "isi-Zulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0040, - 0x0040, 0x0040, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, 0x0074, 0x0074, 0x0080, - 0x0080, 0x0080, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x00a4, - 0x00a4, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8, 0x00b8, 0x00b8, - // Entry 40 - 7F - 0x00b8, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00d9, 0x00d9, 0x00e4, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00fa, 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x010e, 0x010e, 0x0117, 0x0117, 0x0121, - 0x012b, 0x012b, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c, - // Entry 80 - BF - 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0162, 0x016d, 0x0178, - 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0178, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, - 0x018e, 0x018e, 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1, - 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b7, - 0x01be, 0x01be, 0x01be, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01d7, 0x01d7, 0x01e0, 0x01e8, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016d, }, }, - { // ne - neLangStr, - neLangIdx, - }, - { // nl - nlLangStr, - nlLangIdx, - }, - { // nmg - "Kiɛl akanKiɛl amariaKiɛl b’árabeKiɛl belarussieKiɛl bulgariaKiɛl bengali" + - "aKiɛl bó tchɛkJámanKiɛl bó grɛkNgɛ̄lɛ̄nPaŋáKiɛl pɛrsiaFalaKiɛl máwús" + - "áKiɛl b’indienKiɛl b’ɔ́ngroisKiɛl indonesieKiɛl ikboKiɛl italiaKiɛl" + - " bó japonɛ̌Kiɛl bó javanɛ̌Kiɛl bó mɛrKiɛl koréKiɛl Malɛ̌siāKiɛl birm" + - "aniaKiɛl nepalKiɛl bóllandaisKiɛl pɛndjabiKiɛl pɔlɔŋeKiɛl bó pɔ̄rtug" + - "ɛ̂Kiɛl bó rumɛ̂nKiɛl russiaKiɛl rwandāKiɛl somaliāKiɛl bó suedoisKi" + - "ɛl tamulKiɛl thaïKiɛl bó turkKiɛl b’ukrɛ̄nienKiɛl úrduKiɛl viɛtnamY" + - "orúbâKiɛl bó chinoisZulu", - []uint16{ // 181 elements + { // ksf + "riakanriamarikriarabribɛlɔrísribulgaríribɛngáliricɛ́kridjɛrmanrigrɛ́krii" + + "ngɛrísrikpanyáripɛrsánripɛrɛsǝ́rikaksariíndíriɔngrɔáriindonɛsíriigbo" + + "riitalyɛ́nrijapɔ́ŋrijawanɛ́rikmɛrrikɔrɛɛ́rimalaíribirmánrinepalɛ́riɔ" + + "lándɛ́ripɛnjabíripɔlɔ́nripɔrtugɛ́rirɔmánrirísrirwandarisomalíriswɛ́d" + + "ǝritamúlritaíriturkriukrɛ́nriurdúriwyɛtnámriyúubaricinɔárizúlurikpa", + []uint16{ // 376 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0036, 0x0044, - 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0068, 0x0068, 0x0068, 0x0068, 0x0077, 0x0083, 0x0083, 0x0089, - 0x0089, 0x0089, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a9, - 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00cd, 0x00cd, 0x00cd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a, + 0x002a, 0x002a, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x005b, 0x005b, 0x0064, + 0x0064, 0x0064, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0082, + 0x0082, 0x008a, 0x008a, 0x008a, 0x008a, 0x0095, 0x0095, 0x0095, // Entry 40 - 7F - 0x00cd, 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00f2, 0x00f2, 0x0105, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0126, 0x0126, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0142, 0x0142, 0x0150, 0x0150, 0x0150, - 0x015b, 0x015b, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017b, 0x017b, 0x018a, + 0x0095, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, + 0x00b3, 0x00b3, 0x00be, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, + 0x00c9, 0x00c9, 0x00d0, 0x00d0, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00dc, 0x00dc, 0x00dc, 0x00e4, 0x00e4, 0x00ed, 0x00ed, 0x00ed, + 0x00f8, 0x00f8, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0110, 0x0110, 0x011b, // Entry 80 - BF - 0x018a, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01b3, 0x01bf, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01eb, 0x01eb, 0x01f6, 0x01f6, 0x01f6, 0x0201, 0x0201, 0x0201, - 0x0201, 0x0201, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0224, - 0x022f, 0x022f, 0x022f, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, - 0x023d, 0x0245, 0x0245, 0x0256, 0x025a, + 0x011b, 0x0128, 0x0128, 0x0128, 0x0128, 0x0131, 0x0137, 0x013f, + 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x013f, 0x013f, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, + 0x0153, 0x0153, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0161, + 0x0161, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0171, + 0x0178, 0x0178, 0x0178, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, + 0x0183, 0x018b, 0x018b, 0x0194, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + // Entry C0 - FF + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + // Entry 100 - 13F + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + // Entry 140 - 17F + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a0, }, }, - { // nn - "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamiskavarisk" + - "aymaraaserbajdsjanskbasjkirskkviterussiskbulgarskbislamabambarabenga" + - "litibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcree" + - "tsjekkiskkyrkjeslavisktsjuvanskwalisiskdansktyskdivehidzongkhaewegre" + - "skengelskesperantospanskestiskbaskiskpersiskfulanifinskfijianskfærøy" + - "skfranskvestfrisiskirskskotsk-gæliskgaliciskguaranigujaratimanxhausa" + - "hebraiskhindihiri motukroatiskhaitiskungarskarmenskhererointerlingua" + - "indonesiskinterlingueibosichuan-yiinupiakidoislandskitalienskinuktit" + - "utjapanskjavanesiskgeorgiskkikongokikuyukuanyamakasakhiskkalaallisut" + - "; grønlandskkhmerkannadakoreanskkanurikasjmirikurdiskkomikorniskkirg" + - "isisklatinluxemburgskgandalimburgisklingalalaotisklitauiskluba-katan" + - "galatviskmadagassiskmarshallesiskmaorimakedonskmalayalammongolskmara" + - "thimalayiskmaltesiskburmesisknaurunord-ndebelenepalskndonganederland" + - "sknynorskbokmålsør-ndebelenavajonyanjaoksitanskojibwaoromooriyaosset" + - "iskpanjabipalipolskpashtoportugisiskquechuaretoromanskrundirumenskru" + - "ssiskkinjarwandasanskritsardinsksindhinordsamisksangosingalesiskslov" + - "akiskslovensksamoanskshonasomalialbanskserbiskswatisørsothosundanesi" + - "sksvenskswahilitamiltelugutatsjikiskthaitigrinjaturkmensktswanatonga" + - " (Tonga-øyane)tyrkisktsongatatarisktahitiskuiguriskukrainskurduusbek" + - "iskvendavietnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkine" + - "siskzuluachinesiskacoliadangmeadygheafrihiliaghemainuakkadiskaleutis" + - "ksør-altaigammalengelskangikaarameiskaraukanskarapahoarawakasu (Tanz" + - "ania)asturiskawadhibaluchibalinesiskbasabejabembabena (Tanzania)bhoj" + - "puribikolbinisiksikabrajbodoburjatiskbuginesiskblincaddokaribiskatsa" + - "mcebuanskchibchachagataichuukesiskmarichinookchoctawchipewianskchero" + - "keecheyennekoptiskkrimtatariskkasjubiskdakotadargwadelawareslavejdog" + - "ribdinkazarmadogrilågsorbiskdualamellumnederlandskjola-fonyidyulakie" + - "mbuefikgammalegyptiskekajukelamittiskmellomengelskewondofangfilippin" + - "skfonmellomfranskgammalfransknordfrisiskaustfrisiskfriulianskgagayog" + - "bayageskiribatiskmellomhøgtyskgammalhøgtyskgondigorontalogotiskgrebo" + - "gammalgresksveitsertyskgwichinhaidahawaiiskhiligaynonhettittiskhmong" + - "høgsorbiskhupaibanilokoingusjisklojbanjødepersiskjødearabiskkarakalp" + - "akiskkabylskkachinjjukambakawikabardisktyapkapverdiskkorokhasikhotan" + - "esiskkimbundukonkanikosraeanskkpellekarachay-balkarkarelskkurukhbafi" + - "akumykkutenailadinsklahndalambalezghianmongoloziluba-lulualuisenolun" + - "daluolushaimaduresiskmagahimaithilimakasarmandingomasaimokshamandarm" + - "endemellomirskmicmacminangkabaumandsjumanipurimohawkmossimundangflei" + - "re språkcreekmirandesiskmarwarierzyanapolitansklågtysknewariniasniue" + - "anskkwasionogaigammalnorskn’konordsothonuerklassisk newarisknyamwezi" + - "nyankolenyoronzimaosageottomansk tyrkiskpangasinanpahlavipampangapap" + - "iamentopalauiskgammalpersiskfønikiskponapiskgammalprovençalskrajasth" + - "anirapanuirarotonganskromboromaniaromanskrwasandawejakutsksamaritans" + - "k arameisksasaksantalisangusicilianskskotskselkupiskgammalirskshansi" + - "damosørsamisklulesamiskenaresamiskskoltesamisksoninkesogdisksranan t" + - "ongoserersukumasususumeriskshimaoreklassisk syrisksyrisktemneterenot" + - "etumtigrétivitokelauklingontlingittamasjektonga (Nyasa)tok pisintsim" + - "shiantumbukatuvalutasawaqtuviniskudmurtugaritiskumbundurotvaivotiskw" + - "alamowaraywashokalmykyaoyapesiskyangbenkantonesiskzapotecblissymbolz" + - "enagazuniutan språkleg innhaldzazaausterriksk tysksveitsisk høgtyska" + - "ustralisk engelskkanadisk engelskbritisk engelskengelsk (amerikansk)" + - "latinamerikansk spanskiberisk spanskkanadisk fransksveitsisk franskf" + - "lamskbrasiliansk portugisiskeuropeisk portugisiskmoldaviskserbokroat" + - "iskforenkla kinesisktradisjonell kinesisk", - []uint16{ // 610 elements + { // ksh + "AfahreschAbchahseschAvästahneschAfrikaansAkahneschAmhahreschArrajonehses" + + "chArahbeschAßamehseschAvahreschAimahreschAsserbaidschahneschBaschkih" + + "reschWiißrußeschBulljahreschBislahmeschBambaraBängjahleschTibehtesch" + + "BettohneschBoßneschKattalahneschTschätschehneschChamorruKorseschTsch" + + "äscheschKerscheßlahweschTschowascheschWallihseschDähneschDeutschDiv" + + "ehjeschButahneschEweJrihscheschÄngleschEsperantoSchpahneschÄßneschBa" + + "skeschPärseschFulfuldeFinneschFihdscheschFärröhreschFranzühseschWäßf" + + "rihseschIhreschJallihzeschJuwarahneschGutscharateschMangxHaußaHebräh" + + "jeschHinndiKrowateschHa’iihteschUnnjarreschArmehneschHerrehrode Inte" + + "rlinguaIndonehseschIgboIhdoIßlänndeschEtalljähneschInuktitutJapahnes" + + "chJavahneschJe’orjeschRekohjoOschivamboKassakkeschJröhnländeschKhmer" + + "KannadaKorrejaaneschKanuhreschKaschmihreschKurrdeschKohmeschKornesch" + + "KirjihseschLateijneschLuxemborjeschLuganndaLemburjeschLingjallaLahoo" + + "teschLittoueschKilubaLätteschMadajaßkeschMaschallehseschMa’ohreschMa" + + "zedohneschMallajalamMongjohleschMarrahteschMallaijeschMaltehseschBur" + + "mehseschNauruheschNood-NdebeleNepallehseschNdongjahneschHolländeschN" + + "eu NorrwehjeschNorrwehjesch BokmålNavvachoSchi-SchewaOriijaOßeetesch" + + "PanschaabeschPollneschPaschtuuneschPochtojeseschKättschowaRätoromaan" + + "eschK-RundeschRumäneschRußßeschKinja-RuandeschSanskritSinndiNood-Lap" + + "pländeschSangjoSingjaleeseschẞlovakeschẞloveeneschSammohaneschSchi-S" + + "chonaSomahleschAlbahneschSärbeschSi-SwateschSöd-SootoSindanehseschSc" + + "hwehdeschSuahehleschTamihleschTelluhjuTadschihkeschTailändeschTijren" + + "ejahneschTörkmehneschSe-ZwahneschTongjahneschTörkeschXi-Zongjahnesch" + + "TattahreschTahihteschUj’juhreschUkraineschUrdu/HindiUßbehkeschWendaV" + + "ijätnammehseschVolapükWalohneschWoloffIsi-KhohsaJiddeschJoruhbaSchin" + + "ehsesch (Mandarin)SuhluAschenehseschAdangmeschAdygehjschTonehsesch A" + + "rahbeschAfrehihleschAghehmeschAijnuAkahdeschAle’uhteschAhl ÄngleschA" + + "njikahneschArrappahoAljehresch ArahbeschMarokahnesch ArahbeschÄjipte" + + "sch ArahbeschPareAmärrekahnesche BlendeschprohchAstuhrejahneschAwahd" + + "eschBeluhtscheschBalinehseschBaireschBasaa-SchprohcheBembaBenaBhohds" + + "chpureschEdoBischnuprejahneschBrahjeschBrahuijeschBoddoBurejahteschB" + + "ujinehseschBilihneschZebuwahneschKihja-SchprohchTrukehseschMahreschT" + + "schoktohTschärrokehTschäjännZäntrahl-KurrdeschKopteschKaschuhbeschDa" + + "kohteschDarjihneschDawedahneschDohjribeschDjermaNiddersorbeschDu’ala" + + "MeddelnehderlängschJola-FonyischDassajahneschKîembuÄffikschEmilijahn" + + "eschAhl ÄjipteschEkajukeschMeddelängleschZäntrahl-JuppikEwonndoFilli" + + "pihneschFohneschFrijauhleschJahJi’is-Ahl-ÄttejohpeschJillbättehsesch" + + "JorontalohschSchwitzerdütschHauajahneschHiligaynonHmongBovversorrbes" + + "chHupaIbahneschIbibioIlokahneschEngjuscheschIngjrijahneschJamaikahne" + + "sch-ÄngleschLodschbahnNjombaJühdesch-PärseschJütteschKabyhleschKamba" + + " vun KehnijaKabadihneschChimakondeKapvärdeschKoro vun de Älfebeijnkö" + + "ßKhasiKojra TschihniKakoKaländjihneschKimbunduKon’kahneschKpäleKara" + + "tschaj-Balkahresch-TörkeschKarehleschKorocheschBafijahneschKölschKum" + + "ykeschLadihneschLangode Landa-SchproocheLesjeschLakotaSilohziNood-Lu" + + "hreschTschilubaSchilunndaLuoLuhjeschMokschahMeitei-ManipuhreschMunda" + + "ng-ongerscheidlijje Schprohche-KrihkMirandehseschÄrsjahneschNapollet" + + "ahneschNewahreschGyeleNjijembohnNojalNood-SohtoK’ische’KiromboArroma" + + "hneschJackuteschNjambaijKojraboro SenniTaschelhitteschLule-Läpplände" + + "schInahri LappländeschKommohreschSührejakkeschTetumschTigreKlingjohn" + + "eschTok PisinTasawaqTuvinijahneschTamasicht ussem meddlere AtlasUdmu" + + "chteschUmbundesch-onbikannte-Schprooch-WalserdütschWelahmoWaray-Wara" + + "yKalmükkeschJämmbahKanton-SchinehseschSuhñikein SchproochSahsajeschS" + + "chtandatt ArahbeschSödasserbaidschahneschDeutsch uß ÖhßterichDeutsch" + + " uß de SchweijzÄnglesch uß AußtrahlijeÄnglesch uß KanadaÄnglesch uß " + + "JruhßbrettannijeAmärrekahnesch ÄngleschSchpahnesch uß Latting-Ammärr" + + "ikaSchpahnesch en SchpahnejeSchpahnesch en MäxikohFranzühsesch uß Ka" + + "nadaFranzühsesch uß de SchweijzNehdersaksesch en de NederlängFlähmes" + + "chBrasilljaanesch PochtojeseschPochtojesesch uß PochtojallSärbokowat" + + "eschSchinehsesch (eijfache Schreff)Schinehsesch (tradizjonälle Schre" + + "ff)", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032, - 0x0039, 0x0041, 0x0048, 0x004e, 0x005c, 0x0065, 0x0071, 0x0079, - 0x0080, 0x0087, 0x008e, 0x0097, 0x009f, 0x00a6, 0x00af, 0x00ba, - 0x00c2, 0x00cc, 0x00d0, 0x00d9, 0x00e6, 0x00ef, 0x00f7, 0x00fc, - 0x0100, 0x0106, 0x010e, 0x0111, 0x0116, 0x011d, 0x0126, 0x012c, - 0x0132, 0x0139, 0x0140, 0x0146, 0x014b, 0x0153, 0x015c, 0x0162, - 0x016d, 0x0171, 0x017f, 0x0187, 0x018e, 0x0196, 0x019a, 0x019f, - 0x01a7, 0x01ac, 0x01b5, 0x01bd, 0x01c4, 0x01cb, 0x01d2, 0x01d8, - // Entry 40 - 7F - 0x01e3, 0x01ed, 0x01f8, 0x01fb, 0x0205, 0x020c, 0x020f, 0x0217, - 0x0220, 0x0229, 0x0230, 0x023a, 0x0242, 0x0249, 0x024f, 0x0257, - 0x0260, 0x0278, 0x027d, 0x0284, 0x028c, 0x0292, 0x029a, 0x02a1, - 0x02a5, 0x02ac, 0x02b5, 0x02ba, 0x02c5, 0x02ca, 0x02d4, 0x02db, - 0x02e2, 0x02ea, 0x02f6, 0x02fd, 0x0308, 0x0315, 0x031a, 0x0323, - 0x032c, 0x0334, 0x033b, 0x0343, 0x034c, 0x0355, 0x035a, 0x0366, - 0x036d, 0x0373, 0x037e, 0x0385, 0x038c, 0x0398, 0x039e, 0x03a4, - 0x03ad, 0x03b3, 0x03b8, 0x03bd, 0x03c5, 0x03cc, 0x03d0, 0x03d5, - // Entry 80 - BF - 0x03db, 0x03e6, 0x03ed, 0x03f8, 0x03fd, 0x0404, 0x040b, 0x0416, - 0x041e, 0x0426, 0x042c, 0x0436, 0x043b, 0x0446, 0x044f, 0x0457, - 0x045f, 0x0464, 0x046a, 0x0471, 0x0478, 0x047d, 0x0486, 0x0491, - 0x0497, 0x049e, 0x04a3, 0x04a9, 0x04b3, 0x04b7, 0x04bf, 0x04c8, - 0x04ce, 0x04e2, 0x04e9, 0x04ef, 0x04f7, 0x04ff, 0x0507, 0x050f, - 0x0513, 0x051b, 0x0520, 0x052c, 0x0533, 0x053b, 0x0540, 0x0545, - 0x054c, 0x0552, 0x0558, 0x0560, 0x0564, 0x056e, 0x0573, 0x057a, - 0x0580, 0x0580, 0x0588, 0x058d, 0x0591, 0x0599, 0x0599, 0x05a1, - // Entry C0 - FF - 0x05a1, 0x05ab, 0x05b8, 0x05be, 0x05c6, 0x05cf, 0x05cf, 0x05d6, - 0x05d6, 0x05dc, 0x05dc, 0x05dc, 0x05ea, 0x05ea, 0x05f2, 0x05f2, - 0x05f8, 0x05ff, 0x0609, 0x0609, 0x060d, 0x060d, 0x060d, 0x060d, - 0x0611, 0x0616, 0x0616, 0x0625, 0x0625, 0x0625, 0x0625, 0x062d, - 0x0632, 0x0636, 0x0636, 0x0636, 0x063d, 0x063d, 0x063d, 0x0641, - 0x0641, 0x0645, 0x0645, 0x064e, 0x0658, 0x0658, 0x065c, 0x065c, - 0x0661, 0x0669, 0x0669, 0x066e, 0x0676, 0x0676, 0x067d, 0x0685, - 0x068f, 0x0693, 0x069a, 0x06a1, 0x06ac, 0x06b4, 0x06bc, 0x06bc, - // Entry 100 - 13F - 0x06c3, 0x06c3, 0x06cf, 0x06d8, 0x06de, 0x06e4, 0x06e4, 0x06ec, - 0x06f2, 0x06f8, 0x06fd, 0x0702, 0x0707, 0x0712, 0x0712, 0x0717, - 0x0728, 0x0732, 0x0737, 0x0737, 0x073d, 0x0741, 0x0741, 0x074f, - 0x0755, 0x075f, 0x076c, 0x076c, 0x0772, 0x0772, 0x0776, 0x0780, - 0x0780, 0x0783, 0x0783, 0x078f, 0x079b, 0x079b, 0x07a6, 0x07b1, - 0x07bb, 0x07bd, 0x07bd, 0x07bd, 0x07c1, 0x07c6, 0x07c6, 0x07c9, - 0x07d3, 0x07d3, 0x07e1, 0x07ef, 0x07ef, 0x07f4, 0x07fd, 0x0803, - 0x0808, 0x0813, 0x081f, 0x081f, 0x081f, 0x081f, 0x0826, 0x082b, + 0x0000, 0x0009, 0x0014, 0x0021, 0x002a, 0x0033, 0x003d, 0x004b, + 0x0054, 0x0060, 0x0069, 0x0073, 0x0086, 0x0093, 0x00a0, 0x00ac, + 0x00b7, 0x00be, 0x00cb, 0x00d5, 0x00e0, 0x00e9, 0x00f6, 0x0107, + 0x010f, 0x0117, 0x0117, 0x0124, 0x0135, 0x0143, 0x014e, 0x0157, + 0x015e, 0x0168, 0x0172, 0x0175, 0x0180, 0x0189, 0x0192, 0x019d, + 0x01a6, 0x01ae, 0x01b7, 0x01bf, 0x01c7, 0x01d2, 0x01df, 0x01ec, + 0x01fa, 0x0201, 0x0201, 0x020c, 0x0218, 0x0226, 0x022b, 0x0231, + 0x023d, 0x0243, 0x0243, 0x024d, 0x025a, 0x0265, 0x026f, 0x0277, + // Entry 40 - 7F + 0x0285, 0x0291, 0x0291, 0x0295, 0x0295, 0x0295, 0x0299, 0x02a6, + 0x02b4, 0x02bd, 0x02c7, 0x02d1, 0x02dd, 0x02dd, 0x02e4, 0x02ee, + 0x02f9, 0x0308, 0x030d, 0x0314, 0x0321, 0x032b, 0x0338, 0x0341, + 0x0349, 0x0351, 0x035c, 0x0367, 0x0374, 0x037c, 0x0387, 0x0390, + 0x039a, 0x03a4, 0x03aa, 0x03b3, 0x03c0, 0x03cf, 0x03db, 0x03e7, + 0x03f1, 0x03fd, 0x0408, 0x0413, 0x041e, 0x0429, 0x0433, 0x043f, + 0x044c, 0x0459, 0x0465, 0x0475, 0x0489, 0x0489, 0x0491, 0x049c, + 0x049c, 0x049c, 0x049c, 0x04a2, 0x04ac, 0x04b9, 0x04b9, 0x04c2, + // Entry 80 - BF + 0x04cf, 0x04dc, 0x04e7, 0x04f6, 0x0500, 0x050a, 0x0514, 0x0523, + 0x052b, 0x052b, 0x0531, 0x0543, 0x0549, 0x0557, 0x0563, 0x0570, + 0x057c, 0x0587, 0x0591, 0x059b, 0x05a4, 0x05af, 0x05b9, 0x05c6, + 0x05d1, 0x05dc, 0x05e6, 0x05ee, 0x05fb, 0x0607, 0x0616, 0x0623, + 0x062f, 0x063b, 0x0644, 0x0653, 0x065e, 0x0668, 0x0675, 0x067f, + 0x0689, 0x0694, 0x0699, 0x06aa, 0x06b2, 0x06bc, 0x06c2, 0x06cc, + 0x06d4, 0x06db, 0x06db, 0x06f2, 0x06f7, 0x0704, 0x0704, 0x070e, + 0x0718, 0x072c, 0x0738, 0x0742, 0x0747, 0x0750, 0x0750, 0x075d, + // Entry C0 - FF + 0x075d, 0x075d, 0x076a, 0x0776, 0x0776, 0x0776, 0x0776, 0x077f, + 0x0793, 0x0793, 0x0793, 0x07a9, 0x07bd, 0x07c1, 0x07e1, 0x07f0, + 0x07f0, 0x07f9, 0x0806, 0x0812, 0x081a, 0x082a, 0x082a, 0x082a, + 0x082a, 0x082a, 0x082f, 0x082f, 0x0833, 0x0833, 0x0833, 0x0833, + 0x0842, 0x0842, 0x0845, 0x0845, 0x0845, 0x0845, 0x0857, 0x0857, + 0x0860, 0x086b, 0x0870, 0x0870, 0x087c, 0x0888, 0x0888, 0x0892, + 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x089e, 0x08ad, 0x08ad, + 0x08ad, 0x08b8, 0x08c0, 0x08c0, 0x08c9, 0x08c9, 0x08d5, 0x08e0, + // Entry 100 - 13F + 0x08f3, 0x08fb, 0x08fb, 0x08fb, 0x08fb, 0x0907, 0x0911, 0x091c, + 0x0928, 0x0928, 0x0928, 0x0933, 0x0933, 0x0939, 0x0939, 0x0947, + 0x0947, 0x094f, 0x0963, 0x0970, 0x0970, 0x097d, 0x0984, 0x098d, + 0x099a, 0x09a8, 0x09b2, 0x09b2, 0x09c1, 0x09d1, 0x09d8, 0x09d8, + 0x09d8, 0x09e5, 0x09e5, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09ed, + 0x09ed, 0x09ed, 0x09f9, 0x09fc, 0x09fc, 0x09fc, 0x09fc, 0x09fc, + 0x09fc, 0x0a15, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, + 0x0a32, 0x0a32, 0x0a32, 0x0a32, 0x0a42, 0x0a42, 0x0a42, 0x0a42, // Entry 140 - 17F - 0x082b, 0x0833, 0x0833, 0x083d, 0x0847, 0x084c, 0x0857, 0x0857, - 0x085b, 0x085f, 0x085f, 0x0864, 0x086d, 0x086d, 0x086d, 0x0873, - 0x0873, 0x0873, 0x087f, 0x088b, 0x088b, 0x0898, 0x089f, 0x08a5, - 0x08a8, 0x08ad, 0x08b1, 0x08ba, 0x08ba, 0x08be, 0x08be, 0x08c8, - 0x08c8, 0x08cc, 0x08cc, 0x08d1, 0x08dc, 0x08dc, 0x08dc, 0x08dc, - 0x08dc, 0x08dc, 0x08e4, 0x08e4, 0x08eb, 0x08f5, 0x08fb, 0x090a, - 0x090a, 0x090a, 0x0911, 0x0917, 0x0917, 0x091c, 0x091c, 0x0921, - 0x0928, 0x092f, 0x092f, 0x0935, 0x093a, 0x0942, 0x0942, 0x0942, + 0x0a42, 0x0a42, 0x0a42, 0x0a4e, 0x0a4e, 0x0a58, 0x0a58, 0x0a5d, + 0x0a6c, 0x0a6c, 0x0a70, 0x0a79, 0x0a7f, 0x0a8a, 0x0a96, 0x0aa4, + 0x0abb, 0x0ac5, 0x0acb, 0x0acb, 0x0ade, 0x0ade, 0x0ae7, 0x0ae7, + 0x0af1, 0x0af1, 0x0af1, 0x0b02, 0x0b02, 0x0b0e, 0x0b0e, 0x0b0e, + 0x0b18, 0x0b24, 0x0b24, 0x0b3f, 0x0b3f, 0x0b44, 0x0b44, 0x0b52, + 0x0b52, 0x0b52, 0x0b56, 0x0b65, 0x0b6d, 0x0b6d, 0x0b7b, 0x0b7b, + 0x0b81, 0x0ba1, 0x0ba1, 0x0ba1, 0x0bab, 0x0bb5, 0x0bb5, 0x0bc1, + 0x0bc8, 0x0bd1, 0x0bd1, 0x0bdb, 0x0be0, 0x0bf3, 0x0bf3, 0x0bfb, // Entry 180 - 1BF - 0x0942, 0x0942, 0x0942, 0x0947, 0x094b, 0x094b, 0x094b, 0x0955, - 0x095c, 0x0961, 0x0964, 0x096a, 0x096a, 0x096a, 0x096a, 0x0974, - 0x0974, 0x097a, 0x0982, 0x0989, 0x0991, 0x0996, 0x0996, 0x099c, - 0x09a2, 0x09a7, 0x09a7, 0x09a7, 0x09b1, 0x09b1, 0x09b1, 0x09b7, - 0x09c2, 0x09c9, 0x09d1, 0x09d7, 0x09dc, 0x09dc, 0x09e3, 0x09f0, - 0x09f5, 0x0a00, 0x0a07, 0x0a07, 0x0a07, 0x0a0c, 0x0a0c, 0x0a0c, - 0x0a17, 0x0a17, 0x0a1f, 0x0a25, 0x0a29, 0x0a31, 0x0a31, 0x0a37, - 0x0a37, 0x0a3c, 0x0a47, 0x0a47, 0x0a4d, 0x0a56, 0x0a5a, 0x0a6b, + 0x0bfb, 0x0bfb, 0x0bfb, 0x0c01, 0x0c01, 0x0c01, 0x0c08, 0x0c15, + 0x0c15, 0x0c1e, 0x0c1e, 0x0c28, 0x0c2b, 0x0c2b, 0x0c33, 0x0c33, + 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, + 0x0c33, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, + 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c4e, 0x0c4e, 0x0c4e, 0x0c4e, + 0x0c55, 0x0c72, 0x0c77, 0x0c84, 0x0c84, 0x0c84, 0x0c84, 0x0c90, + 0x0c90, 0x0c90, 0x0c9f, 0x0c9f, 0x0c9f, 0x0ca9, 0x0ca9, 0x0ca9, + 0x0ca9, 0x0cae, 0x0cb8, 0x0cbd, 0x0cbd, 0x0cbd, 0x0cbd, 0x0cc7, // Entry 1C0 - 1FF - 0x0a73, 0x0a7b, 0x0a80, 0x0a85, 0x0a8a, 0x0a9b, 0x0aa5, 0x0aac, - 0x0ab4, 0x0abe, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ad3, 0x0ad3, - 0x0adc, 0x0adc, 0x0adc, 0x0ae4, 0x0ae4, 0x0af6, 0x0af6, 0x0af6, - 0x0b00, 0x0b07, 0x0b13, 0x0b13, 0x0b13, 0x0b18, 0x0b1e, 0x0b1e, - 0x0b1e, 0x0b1e, 0x0b26, 0x0b29, 0x0b30, 0x0b37, 0x0b4b, 0x0b4b, - 0x0b50, 0x0b57, 0x0b57, 0x0b57, 0x0b5c, 0x0b66, 0x0b6c, 0x0b6c, - 0x0b6c, 0x0b6c, 0x0b6c, 0x0b6c, 0x0b75, 0x0b75, 0x0b7f, 0x0b7f, - 0x0b7f, 0x0b83, 0x0b83, 0x0b89, 0x0b89, 0x0b89, 0x0b93, 0x0b9d, + 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, + 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, + 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, + 0x0cc7, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, + 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0ce6, 0x0ce6, 0x0ce6, + 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf8, 0x0cf8, + 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, + 0x0d07, 0x0d07, 0x0d07, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d16, // Entry 200 - 23F - 0x0ba8, 0x0bb4, 0x0bbb, 0x0bc2, 0x0bce, 0x0bd3, 0x0bd3, 0x0bd3, - 0x0bd9, 0x0bdd, 0x0be5, 0x0bed, 0x0bfc, 0x0c02, 0x0c02, 0x0c02, - 0x0c07, 0x0c07, 0x0c0d, 0x0c12, 0x0c18, 0x0c1c, 0x0c23, 0x0c23, - 0x0c2a, 0x0c31, 0x0c31, 0x0c39, 0x0c46, 0x0c4f, 0x0c4f, 0x0c4f, - 0x0c4f, 0x0c58, 0x0c58, 0x0c5f, 0x0c65, 0x0c6c, 0x0c74, 0x0c74, - 0x0c7a, 0x0c83, 0x0c8a, 0x0c8d, 0x0c90, 0x0c90, 0x0c90, 0x0c90, - 0x0c90, 0x0c96, 0x0c96, 0x0c96, 0x0c96, 0x0c9c, 0x0ca1, 0x0ca6, - 0x0ca6, 0x0ca6, 0x0cac, 0x0cac, 0x0cac, 0x0caf, 0x0cb7, 0x0cbe, + 0x0d16, 0x0d16, 0x0d29, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, + 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d48, 0x0d48, + 0x0d56, 0x0d56, 0x0d56, 0x0d56, 0x0d56, 0x0d56, 0x0d5e, 0x0d63, + 0x0d63, 0x0d63, 0x0d63, 0x0d70, 0x0d70, 0x0d70, 0x0d70, 0x0d70, + 0x0d79, 0x0d79, 0x0d79, 0x0d79, 0x0d79, 0x0d79, 0x0d79, 0x0d79, + 0x0d80, 0x0d8e, 0x0dac, 0x0db7, 0x0db7, 0x0dc1, 0x0dd7, 0x0dd7, + 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0de4, + 0x0deb, 0x0df6, 0x0df6, 0x0df6, 0x0df6, 0x0e02, 0x0e02, 0x0e02, // Entry 240 - 27F - 0x0cbe, 0x0cbe, 0x0cc9, 0x0cd0, 0x0cda, 0x0cda, 0x0ce0, 0x0ce0, - 0x0ce4, 0x0cfa, 0x0cfe, 0x0cfe, 0x0cfe, 0x0d0e, 0x0d20, 0x0d32, - 0x0d42, 0x0d51, 0x0d65, 0x0d7b, 0x0d89, 0x0d89, 0x0d89, 0x0d98, - 0x0da8, 0x0da8, 0x0dae, 0x0dc5, 0x0dda, 0x0de3, 0x0df0, 0x0df0, - 0x0e01, 0x0e16, + 0x0e02, 0x0e02, 0x0e02, 0x0e0a, 0x0e0a, 0x0e1d, 0x0e1d, 0x0e1d, + 0x0e1d, 0x0e1d, 0x0e1d, 0x0e23, 0x0e31, 0x0e3b, 0x0e4f, 0x0e66, + 0x0e7d, 0x0e94, 0x0eae, 0x0ec2, 0x0ee1, 0x0efa, 0x0f1c, 0x0f35, + 0x0f4c, 0x0f4c, 0x0f64, 0x0f81, 0x0fa0, 0x0faa, 0x0fc7, 0x0fe3, + 0x0fe3, 0x0ff2, 0x0ff2, 0x1011, 0x1036, }, }, - { // nnh - "nzǎmɔ̂ɔnngilísèShwóŋò menkesaŋfelaŋséeShwóŋò pʉa mbasǎShwóŋò pamomShwóŋò" + - " pʉa nzsekàʼaShwóŋò pafudShwóŋò pʉ̀a njinikomShwóŋò pakɔsiShwóŋò mbu" + - "luShwóŋò ngáŋtÿɔʼShwóŋò pʉa YɔɔnmendiShwóŋò pʉa shÿó BɛgtùaShwóŋò ng" + - "iembɔɔnShwóŋò pʉa shÿó MbafìaShwóŋò Tsaŋ", - []uint16{ // 577 elements + { // kw + "kernewek", + []uint16{ // 90 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0008, + }, + }, + { // ky + kyLangStr, + kyLangIdx, + }, + { // lag + "KɨakáaniKɨmʉháariKɨaráabuKɨberalúusiKɨbulugáriaKɨbangálaKɨchéekiKɨjerʉmá" + + "aniKɨgiríkiKɨɨngeréesaKɨhispániaKɨajéemiKɨfaráansaKɨhaúusaKɨhíindiKɨ" + + "hungáriKɨɨndonésiaKiígiboKɨtaliáanoKɨjapáaniKɨjáavaKɨkambódiaKɨkoréa" + + "KɨmelésiaKɨbáamaKɨnepáaliKɨholáanziKɨpúnjabiKɨpólandiKɨréenoKɨromaní" + + "aKɨrúusiKɨnyarwáandaKɨsómáaliKɨswíidiKɨtamíiliKɨtáilandiKɨturúukiKɨu" + + "kɨraníaKɨúrduKɨvietináamuKɨyorúubaKɨchíinaKɨzúuluKɨlaangi", + []uint16{ // 381 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002d, 0x003a, + 0x003a, 0x003a, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x005d, 0x005d, 0x005d, 0x005d, 0x0067, 0x0075, 0x0075, 0x0081, + 0x0081, 0x0081, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x0097, + 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a1, + 0x00a1, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b6, 0x00b6, 0x00b6, + // Entry 40 - 7F + 0x00b6, 0x00c4, 0x00c4, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00d8, 0x00d8, 0x00e3, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0101, 0x0101, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115, + 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, + 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x0137, 0x0137, 0x0142, // Entry 80 - BF - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0142, 0x014b, 0x014b, 0x014b, 0x014b, 0x0156, 0x015f, 0x016d, + 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, + 0x016d, 0x016d, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, + 0x0183, 0x0183, 0x018e, 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, + 0x019a, 0x019a, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01b2, + 0x01ba, 0x01ba, 0x01ba, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, + 0x01c8, 0x01d3, 0x01d3, 0x01dd, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, // Entry C0 - FF - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0047, 0x0056, 0x0056, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x007e, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x007e, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, - 0x0097, 0x0097, 0x00a8, 0x00a8, 0x00a8, 0x00b7, 0x00b7, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, // Entry 100 - 13F - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, // Entry 140 - 17F - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - // Entry 180 - 1BF - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - // Entry 1C0 - 1FF - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - // Entry 200 - 23F - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x0138, - // Entry 240 - 27F - 0x0147, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01ef, }, }, - { // no - noLangStr, - noLangIdx, - }, - { // nus - "Thok aka̱niThok bunyniThok JalabniThok bäläruthaThok bälga̱a̱rianiThok b" + - "ängaliThok cikThok jarmaniThok girikniThok liŋli̱thniThok i̱thpaani" + - "aniThok perthianiThok pɔrɔthaniThok ɣowthaniThok ɣändiniThok ɣänga̱a" + - "̱riɛniThok indunithianiThok i̱gboniThok i̱talianiThok japanniThok j" + - "abanithniThok kameeriThok kurianiThok mayɛyniThok bormi̱thniThok nap" + - "alniThok da̱cThok puɔnjabaniThok pölicniThok puɔtigaliThok ji̱ römTh" + - "ok ra̱ciaaniThok ruaandaniThok thomaalianiThok i̱thwidicniThok tamil" + - "niThok tayniThok turkicniThok ukeraaniniThok udoniThok betnaamniThok" + - " yurubaniThok caynaThok dhuluniThok Nath", - []uint16{ // 447 elements + { // lb + "AfarAbchaseschAvesteschAfrikaansAkanAmhareschAragoneseschArabeschAssames" + + "eschAwareschAymaraAserbaidschaneschBaschkireschWäissrusseschBulgares" + + "chBislamaBambara-SproochBengaleschTibeteschBretoneschBosneschKatalan" + + "eschTschetscheneschChamorro-SproochKorseschCreeTschecheschKierchesla" + + "weschTschuwascheschWaliseschDäneschDäitschMaldiveschBhutaneschEwe-Sp" + + "roochGriicheschEngleschEsperantoSpueneschEstneschBaskeschPerseschFul" + + "FinneschFidschianeschFäröeschFranséischWestfrieseschIreschSchottesch" + + "t GälleschGalizeschGuaraniGujaratiManxHausaHebräeschHindiHiri-MotuKr" + + "oateschHaitianeschUngareschArmeneschHerero-SproochInterlinguaIndones" + + "eschInterlingueIgbo-SproochSichuan YiInupiakIdo-SproochIslänneschIta" + + "lieneschInukitutJapaneschJavaneschGeorgeschKongoleseschKikuyu-Sprooc" + + "hKwanyamaKasacheschGrönlänneschKambodschaneschKannadaKoreaneschKanur" + + "i-SproochKaschmireschKurdeschKomi-SproochKorneschKirgiseschLatäinLët" + + "zebuergeschGanda-SproochLimburgeschLingalaLaoteschLitaueschLuba-Kata" + + "ngaLetteschMalagassi-SproochMarschalleseschMaoriMazedoneschMalayalam" + + "MongoleschMarathiMalaieschMalteseschBirmaneschNaurueschNord-Ndebele-" + + "SproochNepaleseschNdongaHollänneschNorwegesch NynorskNorwegesch Bokm" + + "ålSüd-Ndebele-SproochNavajoNyanja-SproochOkzitaneschOjibwa-SproochO" + + "romoOrijaOsseteschPandschabeschPaliPolneschPaschtuPortugiseschQuechu" + + "aRätoromaneschRundi-SproochRumäneschRusseschRuandeschSanskritSardesc" + + "hSindhiNordsameschSangoSinghaleseschSlowakeschSloweneschSamoaneschSh" + + "onaSomaliAlbaneschSerbeschSwaziSüd-Sotho-SproochSundaneseschSchwedes" + + "chSuaheliTamileschTeluguTadschikeschThailänneschTigrinjaTurkmeneschT" + + "swana-SproochTongaeschTierkeschTsongaTatareschTahiteschUigureschUkra" + + "ineschUrduUsbekeschVenda-SproochVietnameseschVolapükWallouneschWolof" + + "XhosaJiddeschYorubaZhuangChineseschZuluAceh-SproochAcholi-SproochAda" + + "ngmeAdygéieschTunesescht ArabeschAfrihiliAghemAinu-SproochAkkadeschA" + + "labamaAleuteschGegeschSüd-AlaeschAlengleschAngikaAramäeschMapudungun" + + "AraonaArapaho-SproochAlgerescht ArabeschArawak-SproochMarokkanescht " + + "ArabeschEgyptescht ArabeschAsu (Tanzania)Amerikanesch ZeechesproochA" + + "sturianeschKotavaAwadhiBelutscheschBalineseschBaireschBasaa-SproochB" + + "amunBatak TobaGhomálá’BedauyeBemba-SproochBetawiBenaBafutBadagaBhods" + + "chpuriBikol-SproochBini-SproochBanjareseschKomBlackfoot-SproochBishn" + + "upriyaBachtiareschBraj-BhakhaBrahuiBodoAkooseBurjateschBugineseschBu" + + "luBlinMedumbaCaddoKaribeschCayugaAtsamCebuanoKigaChibcha-SproochTsch" + + "agataeschTrukeseschMariChinookChoctawChipewyanCherokeeCheyenneSorani" + + "KopteschCapiznonKrimtatareschKaschubeschDakota-SproochDargineschTait" + + "aDelaware-SproochSlaveDogribDinka-SproochZarmaDogriNiddersorbeschZen" + + "tral-DusunDualaMëttelhollänneschJola-FonyiDyula-SproochDazagaKiembuE" + + "fikEmilianeschEgypteschEkajukElameschMëttelengleschYup’ikEwondoExtre" + + "madureschPangwe-SproochFilipinoMeänkieliFon-SproochCajunMëttelfransé" + + "ischAlfranséischFrankoprovenzaleschNordfrieseschOstfrieseschFriulesc" + + "hGa-SproochGagauseschGan-ChineseschGayoGbaya-SproochZoroastrianescht" + + " DariGeezGilberteseschGilakiMëttelhéichdäitschAlhéichdäitschGoan-Kon" + + "kaniGondi-SproochMongondouGoteschGrebo-SproochAlgriicheschSchwäizerd" + + "äitschWayuuFarefareGusii-SproochKutchin-SproochHaida-SproochHakka-C" + + "hineseschHawaieschFidschi-HindiHiligaynon-SproochHethiteschMiao-Spro" + + "ochUewersorbeschXiang-ChineseschHupaIbanIbibioIlokano-SproochIngusch" + + "eschIschoreschJamaikanesch-KreoleschLojbanNgombaMachameJiddesch-Pers" + + "eschJiddesch-ArabeschJüteschKarakalpakeschKabyleschKachin-SproochJju" + + "KambaKawiKabardineschKanembuTyapMakondeKabuverdianuKenyangKoroKainga" + + "ngKhasi-SproochSakeschKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbund" + + "u-SproochKomi-PermiakKonkaniKosraeaneschKpelle-SproochKaratschaiesch" + + "-BalkareschKrioKinaray-aKareleschOraon-SproochShambalaBafiaKölschKum" + + "ükeschKutenai-SproochLadinoLangiLahndaLamba-SproochLesgeschLingua F" + + "ranca NovaLigureschLiveschLakota-SproochLombardeschMongoRotse-Sprooc" + + "hLettgalleschLuba-LuluaLuiseno-SproochLunda-SproochLuo-SproochLushai" + + "-SproochOlulujiaKlassescht ChineseschLasesch SproochMadureseschMafaK" + + "hottaMaithiliMakassareschManding-SproochMassai-SproochMabaMokshaMand" + + "areseschMende-SproochMeru-SproochMorisyenMëttelireschMakhuwa-MeettoM" + + "eta’Micmac-SproochMinangkabau-SproochMandschureschMeithei-SproochMoh" + + "awk-SproochMossi-SproochWest-MariMundangMéisproochegMuskogee-Sprooch" + + "MirandeseschMarwariMentawaiMyeneErsja-MordwineschMazandaraniMin-Nan-" + + "ChineseschNeapolitaneschNamaNidderdäitschNewariNias-SproochNiue-Spro" + + "ochAo NagaKwasioNgiemboonNogaiAlnordeschNovialN’KoNord-Sotho-Sprooch" + + "NuerAl-NewariNyamwezi-SproochNyankoleNyoroNzimaOsage-SproochOsmanesc" + + "hPangasinan-SproochMëttelperseschPampanggan-SproochPapiamentoPalauPi" + + "cardeschPennsylvaniadäitschPlattdäitschAlperseschPfälzesch DäitschPh" + + "önikeschPiemonteseschPonteschPonapeaneschPreiseschAlprovenzaleschQu" + + "iché-SproochKichwa (Chimborazo-Gebidder)RajasthaniOuschterinsel-Spro" + + "ochRarotonganeschRomagnolTarifitRomboRomaniRotumaneschRussineschRovi" + + "anaAromuneschRwaSandawe-SproochJakuteschSamaritaneschSamburuSasakSan" + + "taliSaurashtraNgambaySanguSizilianeschSchotteschSassareseschSenecaSe" + + "naSeriSelkupeschKoyra SenniAlireschSamogiteschTaschelhitSchan-Sprooc" + + "hTschadesch-ArabeschSidamoNidderschleseschSelayarSüdsameschLule-Lapp" + + "eschInari-LappeschSkolt-LappeschSoninke-SproochSogdeschSrananeschSer" + + "er-SproochSahoSaterfrieseschSukuma-SproochSusuSumereschKomoreschAlsy" + + "reschSyreschSchleseschTuluTemneTesoTereno-SproochTetum-SproochTigreT" + + "iv-SproochTokelauaneschTsachureschKlingoneschTlingit-SproochTaleschT" + + "amaseqTsonga-SproochNeimelaneseschTuroyoSeediqTsakoneschTsimshian-Sp" + + "roochTateschTumbuka-SproochElliceaneschTasawaqTuwineschMëttlert-Atla" + + "s-TamazightUdmurteschUgariteschMbundu-SproochRootVai-SproochVenezesc" + + "hWepseschWestflämeschMainfränkeschWoteschVoroVunjoWalliserdäitschWal" + + "amo-SproochWarayWasho-SproochWu-ChineseschKalmückeschMingrelesch Spr" + + "oochSogaYao-SproochYapeseschYangbenYembaNheengatuKantoneseschZapotek" + + "eschBliss-SymbolerSeelänneschZenagaMarokkanescht Standard-TamazightZ" + + "uni-SproochKeng SproochinhalterZazaModernt HéicharabeschÉisträichesc" + + "ht DäitschSchwäizer HéichdäitschAustralescht EngleschKanadescht Engl" + + "eschBritescht EngleschAmerikanescht EngleschLatäinamerikanescht Spue" + + "neschEuropäescht SpueneschMexikanescht SpueneschKanadescht Franséisc" + + "hSchwäizer FranséischFlämeschBrasilianescht PortugiseschEuropäescht " + + "PortugiseschMoldaweschSerbo-KroateschKongo-SwahiliChinesesch (verein" + + "facht)Chinesesch (traditionell)", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0017, 0x0017, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0033, 0x0048, - 0x0048, 0x0048, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0075, 0x0086, 0x0086, 0x0098, - 0x0098, 0x0098, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c4, - 0x00c4, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00e9, 0x00e9, 0x00e9, + 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, + 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0085, 0x008f, + 0x0096, 0x00a5, 0x00af, 0x00b8, 0x00c2, 0x00ca, 0x00d5, 0x00e4, + 0x00f4, 0x00fc, 0x0100, 0x010b, 0x011a, 0x0128, 0x0131, 0x0139, + 0x0141, 0x014b, 0x0155, 0x0160, 0x016a, 0x0172, 0x017b, 0x0184, + 0x018c, 0x0194, 0x019c, 0x019f, 0x01a7, 0x01b4, 0x01be, 0x01c9, + 0x01d6, 0x01dc, 0x01f1, 0x01fa, 0x0201, 0x0209, 0x020d, 0x0212, + 0x021c, 0x0221, 0x022a, 0x0233, 0x023e, 0x0247, 0x0250, 0x025e, // Entry 40 - 7F - 0x00e9, 0x00fa, 0x00fa, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0116, 0x0116, 0x0122, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x013d, 0x013d, 0x0149, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0149, 0x0156, 0x0156, 0x0166, 0x0166, 0x0166, - 0x0172, 0x0172, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, - 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x018c, 0x018c, 0x0199, + 0x0269, 0x0274, 0x027f, 0x028b, 0x0295, 0x029c, 0x02a7, 0x02b2, + 0x02bd, 0x02c5, 0x02ce, 0x02d7, 0x02e0, 0x02ec, 0x02fa, 0x0302, + 0x030c, 0x031a, 0x0329, 0x0330, 0x033a, 0x0348, 0x0354, 0x035c, + 0x0368, 0x0370, 0x037a, 0x0381, 0x0390, 0x039d, 0x03a8, 0x03af, + 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03e5, 0x03f4, 0x03f9, 0x0404, + 0x040d, 0x0417, 0x041e, 0x0427, 0x0431, 0x043b, 0x0444, 0x0458, + 0x0463, 0x0469, 0x0475, 0x0487, 0x0499, 0x04ad, 0x04b3, 0x04c1, + 0x04cc, 0x04da, 0x04df, 0x04e4, 0x04ed, 0x04fa, 0x04fe, 0x0506, // Entry 80 - BF - 0x0199, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01b6, 0x01c5, 0x01d3, - 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, - 0x01d3, 0x01d3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, - 0x01f4, 0x01f4, 0x0200, 0x0200, 0x0200, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x0217, 0x0217, 0x0217, 0x0217, 0x0217, 0x0226, - 0x0230, 0x0230, 0x0230, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, - 0x023e, 0x024b, 0x024b, 0x0255, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x050d, 0x0519, 0x0520, 0x052e, 0x053b, 0x0545, 0x054d, 0x0556, + 0x055e, 0x0566, 0x056c, 0x0577, 0x057c, 0x0589, 0x0593, 0x059d, + 0x05a7, 0x05ac, 0x05b2, 0x05bb, 0x05c3, 0x05c8, 0x05da, 0x05e6, + 0x05f0, 0x05f7, 0x0600, 0x0606, 0x0612, 0x061f, 0x0627, 0x0632, + 0x0640, 0x0649, 0x0652, 0x0658, 0x0661, 0x066a, 0x0673, 0x067d, + 0x0681, 0x068a, 0x0697, 0x06a4, 0x06ac, 0x06b7, 0x06bc, 0x06c1, + 0x06c9, 0x06cf, 0x06d5, 0x06df, 0x06e3, 0x06ef, 0x06fd, 0x0704, + 0x070f, 0x0722, 0x072a, 0x072f, 0x073b, 0x0744, 0x074b, 0x0754, // Entry C0 - FF - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x075b, 0x0767, 0x0771, 0x0777, 0x0781, 0x078b, 0x0791, 0x07a0, + 0x07b3, 0x07b3, 0x07c1, 0x07d7, 0x07ea, 0x07f8, 0x0812, 0x081e, + 0x0824, 0x082a, 0x0836, 0x0841, 0x0849, 0x0856, 0x085b, 0x0865, + 0x0871, 0x0878, 0x0885, 0x088b, 0x088f, 0x0894, 0x089a, 0x089a, + 0x08a5, 0x08b2, 0x08be, 0x08ca, 0x08cd, 0x08de, 0x08e9, 0x08f5, + 0x0900, 0x0906, 0x090a, 0x0910, 0x091a, 0x0925, 0x0929, 0x092d, + 0x0934, 0x0939, 0x0942, 0x0948, 0x094d, 0x0954, 0x0958, 0x0967, + 0x0974, 0x097e, 0x0982, 0x0989, 0x0990, 0x0999, 0x09a1, 0x09a9, // Entry 100 - 13F - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x09af, 0x09b7, 0x09bf, 0x09cc, 0x09cc, 0x09d7, 0x09e5, 0x09ef, + 0x09f4, 0x0a04, 0x0a09, 0x0a0f, 0x0a1c, 0x0a21, 0x0a26, 0x0a34, + 0x0a41, 0x0a46, 0x0a59, 0x0a63, 0x0a70, 0x0a76, 0x0a7c, 0x0a80, + 0x0a8b, 0x0a94, 0x0a9a, 0x0aa2, 0x0ab1, 0x0ab9, 0x0abf, 0x0acd, + 0x0adb, 0x0ae3, 0x0aed, 0x0af8, 0x0afd, 0x0b0f, 0x0b1c, 0x0b2f, + 0x0b3c, 0x0b48, 0x0b51, 0x0b5b, 0x0b65, 0x0b73, 0x0b77, 0x0b84, + 0x0b99, 0x0b9d, 0x0baa, 0x0bb0, 0x0bc5, 0x0bd5, 0x0be1, 0x0bee, + 0x0bf7, 0x0bfe, 0x0c0b, 0x0c17, 0x0c29, 0x0c2e, 0x0c36, 0x0c43, // Entry 140 - 17F - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0c52, 0x0c5f, 0x0c6f, 0x0c78, 0x0c85, 0x0c97, 0x0ca1, 0x0cad, + 0x0cba, 0x0cca, 0x0cce, 0x0cd2, 0x0cd8, 0x0ce7, 0x0cf2, 0x0cfc, + 0x0d12, 0x0d18, 0x0d1e, 0x0d25, 0x0d36, 0x0d47, 0x0d4f, 0x0d5d, + 0x0d66, 0x0d74, 0x0d77, 0x0d7c, 0x0d80, 0x0d8c, 0x0d93, 0x0d97, + 0x0d9e, 0x0daa, 0x0db1, 0x0db5, 0x0dbd, 0x0dca, 0x0dd1, 0x0ddd, + 0x0de3, 0x0dec, 0x0df0, 0x0df8, 0x0e08, 0x0e14, 0x0e1b, 0x0e27, + 0x0e35, 0x0e4e, 0x0e52, 0x0e5b, 0x0e64, 0x0e71, 0x0e79, 0x0e7e, + 0x0e85, 0x0e8f, 0x0e9e, 0x0ea4, 0x0ea9, 0x0eaf, 0x0ebc, 0x0ec4, // Entry 180 - 1BF - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x026a, + 0x0ed6, 0x0edf, 0x0ee6, 0x0ef4, 0x0eff, 0x0f04, 0x0f11, 0x0f11, + 0x0f1d, 0x0f27, 0x0f36, 0x0f43, 0x0f4e, 0x0f5c, 0x0f64, 0x0f79, + 0x0f88, 0x0f93, 0x0f97, 0x0f9d, 0x0fa5, 0x0fb1, 0x0fc0, 0x0fce, + 0x0fd2, 0x0fd8, 0x0fe4, 0x0ff1, 0x0ffd, 0x1005, 0x1012, 0x1020, + 0x1027, 0x1035, 0x1048, 0x1055, 0x1064, 0x1072, 0x107f, 0x1088, + 0x108f, 0x109c, 0x10ac, 0x10b8, 0x10bf, 0x10c7, 0x10cc, 0x10dd, + 0x10e8, 0x10fa, 0x1108, 0x110c, 0x111a, 0x1120, 0x112c, 0x1138, + 0x113f, 0x1145, 0x114e, 0x1153, 0x115d, 0x1163, 0x1169, 0x117b, + // Entry 1C0 - 1FF + 0x117f, 0x1188, 0x1198, 0x11a0, 0x11a5, 0x11aa, 0x11b7, 0x11c0, + 0x11d2, 0x11e1, 0x11f3, 0x11fd, 0x1202, 0x120c, 0x120c, 0x1220, + 0x122d, 0x1237, 0x124a, 0x1255, 0x1262, 0x126a, 0x1276, 0x127f, + 0x128e, 0x129d, 0x12b9, 0x12c3, 0x12d8, 0x12e6, 0x12ee, 0x12f5, + 0x12fa, 0x1300, 0x130b, 0x1315, 0x131c, 0x1326, 0x1329, 0x1338, + 0x1341, 0x134e, 0x1355, 0x135a, 0x1361, 0x136b, 0x1372, 0x1377, + 0x1383, 0x138d, 0x1399, 0x1399, 0x139f, 0x13a3, 0x13a7, 0x13b1, + 0x13bc, 0x13c4, 0x13cf, 0x13d9, 0x13e6, 0x13f9, 0x13ff, 0x140f, + // Entry 200 - 23F + 0x1416, 0x1421, 0x142e, 0x143c, 0x144a, 0x1459, 0x1461, 0x146b, + 0x1478, 0x147c, 0x148a, 0x1498, 0x149c, 0x14a5, 0x14ae, 0x14b7, + 0x14be, 0x14c8, 0x14cc, 0x14d1, 0x14d5, 0x14e3, 0x14f0, 0x14f5, + 0x1500, 0x150d, 0x1518, 0x1523, 0x1532, 0x1539, 0x1540, 0x154e, + 0x155c, 0x1562, 0x1568, 0x1572, 0x1583, 0x158a, 0x1599, 0x15a5, + 0x15ac, 0x15b5, 0x15ce, 0x15d8, 0x15e2, 0x15f0, 0x15f4, 0x15ff, + 0x1608, 0x1610, 0x161d, 0x162b, 0x1632, 0x1636, 0x163b, 0x164b, + 0x1659, 0x165e, 0x166b, 0x166b, 0x1678, 0x1684, 0x1697, 0x169b, + // Entry 240 - 27F + 0x16a6, 0x16af, 0x16b6, 0x16bb, 0x16c4, 0x16d0, 0x16db, 0x16e9, + 0x16f5, 0x16fb, 0x171b, 0x1727, 0x173b, 0x173f, 0x1755, 0x1755, + 0x176e, 0x1787, 0x179c, 0x17af, 0x17c1, 0x17d7, 0x17f5, 0x180b, + 0x1821, 0x1821, 0x1837, 0x184d, 0x184d, 0x1856, 0x1871, 0x188a, + 0x1894, 0x18a3, 0x18b0, 0x18c8, 0x18e1, }, }, - { // nyn - "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" + - "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" + - "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" + - "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" + - "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" + - "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" + - "inaOruzuruRunyankore", - []uint16{ // 450 elements + { // lg + "Lu-akaaniLu-amharikiLuwarabuLubelarusiLubulugariyaLubengaliLuceekeLudaak" + + "iLugereeki/LuyonaaniLungerezaLusipanyaLuperusiLufalansaLuhawuzaLuhin" + + "duLuhangareLuyindonezyaLuyiboLuyitaleLujapaniLunnajjavaLukmeLukoreya" + + "LugandaLumalayiLubbamaLunepaliLuholandiLupunjabiLupolandiLupotugiizi" + + "LulomaniyaLulasaLunarwandaLusomaliyaLuswideniLutamiiruLuttaayiLutake" + + "LuyukurayineLu-uruduLuvyetinaamuLuyorubaLucayinaLuzzulu", + []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031, - 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e, - 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a, - 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, + 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0026, 0x0032, + 0x0032, 0x0032, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, + 0x003b, 0x003b, 0x003b, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0049, 0x0049, 0x0049, 0x0049, 0x005c, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, + 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x0087, + 0x0087, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097, // Entry 40 - 7F - 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1, - 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115, + 0x0097, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00b1, 0x00b1, 0x00b9, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00c3, 0x00c8, 0x00c8, 0x00d0, 0x00d0, 0x00d0, 0x00d0, + 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7, + 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, + 0x00d7, 0x00d7, 0x00d7, 0x00df, 0x00df, 0x00e6, 0x00e6, 0x00e6, + 0x00ee, 0x00ee, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, + 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0100, 0x0100, 0x0109, // Entry 80 - BF - 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163, - 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176, - 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, - 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry C0 - FF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 100 - 13F - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 140 - 17F - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 180 - 1BF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 1C0 - 1FF - 0x01a6, 0x01b0, + 0x0109, 0x0114, 0x0114, 0x0114, 0x0114, 0x011e, 0x0124, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, + 0x0141, 0x0141, 0x014a, 0x014a, 0x014a, 0x0152, 0x0152, 0x0152, + 0x0152, 0x0152, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164, + 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, + 0x0178, 0x0180, 0x0180, 0x0188, 0x018f, }, }, - { // om - "AfrikootaAfaan SidaamaaArabiffaaAfaan AzerbaijaniAfaan BelarusiaAfaan Bu" + - "lgariyaAfaan BaangladeshiAfaan BosniyaaAfaan KatalaaAfaan CzechWelis" + - "hiffaaAfaan DeenmaarkAfaan JarmaniiAfaan GiriikiIngliffaAfaan Espera" + - "ntooAfaan IspeenAfaan IstooniyaAfaan BaskuuAfaan PersiaAfaan Fiilaan" + - "diAfaan FaroeseAfaan FaransaayiiAfaan FirisiyaaniAfaan AyirishiiScot" + - "s GaelicAfaan GalishiiAfaan GuaraniAfaan GujaratiAfaan HebrewAfaan H" + - "indiiAfaan CroatianAfaan HangaariInterlinguaAfaan IndoneziyaAyiislan" + - "diffaaAfaan XaaliyaaniAfaan JapaniiAfaan JavaAfaan GeorgianAfaan Kan" + - "nadaAfaan KoreaAfaan LaatiniAfaan LiituniyaaAfaan LativiyaaAfaan Mac" + - "edooniyaaMalayaalamiffaaAfaan MaratiiMalaayiffaaAfaan MaltesiiAfaan " + - "NepaliiAfaan DachiiAfaan NorwegianAfaan NorweyiiAfaan OccitOromooAfa" + - "an PunjabiiAfaan PolandiiAfaan PorchugaalAfaan RomaniyaaAfaan Rushiy" + - "aaAfaan SinhaleseAfaan SlovakAfaan IslovaniyaaAfaan AlbaniyaaAfaan S" + - "erbiyaAfaan SudaaniiAfaan SuwidiinSuwahiliiAfaan TamiliiAfaan Telugu" + - "Afaan TayiiAfaan TigireeLammii TurkiiAfaan TurkiiAfaan UkreeniiAfaan" + - " UrduAfaan UzbekAfaan VeetinamAfaan XhosaChineseAfaan ZuuluAfaan Fil" + - "ippiniiAfaan KilingonAfaan Portugali (Braazil)Afaan Protuguese", - []uint16{ // 605 elements + { // lkt + "Abkhaz IyápiAvestan IyápiAfrikaans IyápiAmharic IyápiArab IyápiAssamese " + + "IyápiAvaric IyápiAzerbaijani IyápiBashkir IyápiBelarus IyápiBulgar I" + + "yápiBengali IyápiTibetan IyápiBosnia IyápiCatalan IyápiChechen Iyápi" + + "Maštíŋča Oyáte IyápiCzech IyápiChuvash IyápiWales IyápiDane IyápiIyá" + + "šiča IyápiGreece IyápiWašíčuiyapiEsperanto IyápiSpayóla IyápiEstoni" + + "a IyápiBasque IyápiPersian IyápiFinnish IyápiFiji IyápiFaroese Iyápi" + + "Wašíču Ikčéka IyápiIrish IyápiGalician IyápiGuarani IyápiGujarati Iy" + + "ápiHausa IyápiHebrew IyápiHindi IyápiCroatian IyápiHaiti IyápiHunga" + + "ry IyápiArmenia IyápiIndonesia IyápiIgbo IyápiIceland IyápiItalia Iy" + + "ápiKisúŋla IyápiJava IyápiGeoria IyápiKazakh IyápiKhmer IyápiKannad" + + "a IyápiKorea IyápiKashmir IyápiKurd IyápiKirghiz IyápiLatin IyápiLux" + + "embourg IyápiLao IyápiLithuania IyápiltLatvia IyápiMalagasy IyápiMao" + + "ri IyápiMacedonia IyápiMalayalam IyápiMarathi IyápiMalay IyápiMaltes" + + "e IyápiBurmese IyápiNepal IyápiDutch IyápiŠináglegleǧa IyápiȞaȟátȟuŋ" + + "waŋ IyápiOriya IyápiPunjabi IyápiPolish IyápiPashto IyápiPortuguese " + + "IyápiQuechua IyápiRomansh IyápiRomanian IyápiRussia IyápiSanskrit Iy" + + "ápiSindhi IyápiSinhala IyápiSlovak IyápiSlovenian IyápiSomali Iyápi" + + "Albanian IyápiSerbia IyápiSundanese IyápiSwedish IyápiSwahili IyápiT" + + "amil IyápiTelugu IyápiTajik IyápiThai IyápiTigrinya IyápiTurkmen Iyá" + + "piTongan IyápiTurkish IyápiTatar IyápiUyghur IyápiUkrain IyápiUrdu I" + + "yápiUzbek IyápiVietnamese IyápiWolof IyápiXhosa IyápiYoruba IyápiPȟe" + + "čhókaŋ Háŋska IyápiZulu IyápiAdyghe IyápiItóǧata Altai IyápiMaȟpíya" + + " Tȟó IyápiBaluchi IyápiBamun IyápiBeja IyápiBuriat IyápiMari IyápiCh" + + "erokee IyápiŠahíyela IyápiCoptic IyápiCrimean Turkish IyápiDakȟótiya" + + "piDargwa IyápiDogri IyápiFilipino IyápiGbaya IyápiHawaiian IyápiIngu" + + "sh IyápiKara-Kalpak IyápiKabardian IyápiLahnda IyápiLakȟólʼiyapiMizo" + + " IyápiNamipuri IyápiComonian IyápiTukté iyápi tȟaŋíŋ šniZaza IyápiŠa" + + "gláša WašíčuiyapiMílahaŋska WašíčuiyapiWiyóȟpeyata Spayóla IyápiSpay" + + "ólaȟča IyápiFlemish IyápiPȟečhókaŋ Háŋska Iyápi IkčékaPȟečhókaŋ Háŋ" + + "ska Iyápi Ȟče", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0017, 0x0017, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0031, 0x0031, 0x0040, 0x004f, - 0x004f, 0x004f, 0x0061, 0x0061, 0x0061, 0x006f, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x0087, 0x0087, 0x0087, 0x0092, 0x00a1, - 0x00af, 0x00af, 0x00af, 0x00af, 0x00bc, 0x00c4, 0x00d4, 0x00e0, - 0x00ef, 0x00fb, 0x0107, 0x0107, 0x0116, 0x0116, 0x0123, 0x0134, - 0x0145, 0x0154, 0x0160, 0x016e, 0x017b, 0x0189, 0x0189, 0x0189, - 0x0195, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01bd, 0x01bd, 0x01bd, + 0x0000, 0x0000, 0x000d, 0x001b, 0x002b, 0x002b, 0x0039, 0x0039, + 0x0044, 0x0053, 0x0060, 0x0060, 0x0072, 0x0080, 0x008e, 0x009b, + 0x009b, 0x009b, 0x00a9, 0x00b7, 0x00b7, 0x00c4, 0x00d2, 0x00e0, + 0x00e0, 0x00e0, 0x00fa, 0x0106, 0x0106, 0x0114, 0x0120, 0x012b, + 0x013c, 0x013c, 0x013c, 0x013c, 0x0149, 0x0157, 0x0167, 0x0176, + 0x0184, 0x0191, 0x019f, 0x019f, 0x01ad, 0x01b8, 0x01c6, 0x01df, + 0x01df, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0217, 0x0217, 0x0223, + 0x0230, 0x023c, 0x023c, 0x024b, 0x0257, 0x0265, 0x0273, 0x0273, // Entry 40 - 7F - 0x01c8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01e6, - 0x01f6, 0x01f6, 0x0203, 0x020d, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x021b, 0x021b, 0x0228, 0x0233, 0x0233, 0x0233, 0x0233, - 0x0233, 0x0233, 0x0233, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0250, 0x0250, 0x025f, 0x025f, 0x025f, 0x025f, 0x0271, - 0x0280, 0x0280, 0x028d, 0x0298, 0x02a6, 0x02a6, 0x02a6, 0x02a6, - 0x02b3, 0x02b3, 0x02bf, 0x02ce, 0x02dc, 0x02dc, 0x02dc, 0x02dc, - 0x02e7, 0x02e7, 0x02ed, 0x02ed, 0x02ed, 0x02fb, 0x02fb, 0x0309, + 0x0273, 0x0283, 0x0283, 0x028e, 0x028e, 0x028e, 0x028e, 0x029c, + 0x02a9, 0x02a9, 0x02b9, 0x02c4, 0x02d1, 0x02d1, 0x02d1, 0x02d1, + 0x02de, 0x02de, 0x02ea, 0x02f8, 0x0304, 0x0304, 0x0312, 0x031d, + 0x031d, 0x031d, 0x032b, 0x0337, 0x0348, 0x0348, 0x0348, 0x0348, + 0x0352, 0x0364, 0x0364, 0x0371, 0x0380, 0x0380, 0x038c, 0x039c, + 0x03ac, 0x03ac, 0x03ba, 0x03c6, 0x03d4, 0x03e2, 0x03e2, 0x03e2, + 0x03ee, 0x03ee, 0x03fa, 0x03fa, 0x03fa, 0x03fa, 0x0410, 0x0410, + 0x0410, 0x0428, 0x0428, 0x0434, 0x0434, 0x0442, 0x0442, 0x044f, // Entry 80 - BF - 0x0309, 0x0319, 0x0319, 0x0319, 0x0319, 0x0328, 0x0336, 0x0336, - 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0345, 0x0351, 0x0362, - 0x0362, 0x0362, 0x0362, 0x0371, 0x037e, 0x037e, 0x037e, 0x038c, - 0x039a, 0x03a3, 0x03b0, 0x03bc, 0x03bc, 0x03c7, 0x03d4, 0x03e1, - 0x03e1, 0x03e1, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb, - 0x0405, 0x0410, 0x0410, 0x041e, 0x041e, 0x041e, 0x041e, 0x0429, - 0x0429, 0x0429, 0x0429, 0x0430, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x045c, 0x046d, 0x047b, 0x0489, 0x0489, 0x0498, 0x04a5, 0x04a5, + 0x04b4, 0x04b4, 0x04c1, 0x04c1, 0x04c1, 0x04cf, 0x04dc, 0x04ec, + 0x04ec, 0x04ec, 0x04f9, 0x0508, 0x0515, 0x0515, 0x0515, 0x0525, + 0x0533, 0x0541, 0x054d, 0x055a, 0x0566, 0x0571, 0x0580, 0x058e, + 0x058e, 0x059b, 0x05a9, 0x05a9, 0x05b5, 0x05b5, 0x05c2, 0x05cf, + 0x05da, 0x05e6, 0x05e6, 0x05f7, 0x05f7, 0x05f7, 0x0603, 0x060f, + 0x060f, 0x061c, 0x061c, 0x0639, 0x0644, 0x0644, 0x0644, 0x0644, + 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, // Entry C0 - FF - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x0651, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x067d, + 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, + 0x067d, 0x067d, 0x068b, 0x068b, 0x068b, 0x068b, 0x0697, 0x0697, + 0x0697, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, + 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, + 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06af, 0x06af, 0x06af, 0x06af, + 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, + 0x06af, 0x06af, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06c9, 0x06da, // Entry 100 - 13F - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x06da, 0x06e7, 0x06e7, 0x06fd, 0x06fd, 0x06fd, 0x070a, 0x0717, + 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0723, 0x0723, + 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, + 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, + 0x0723, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, + 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x073e, + 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, + 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, // Entry 140 - 17F - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x073e, 0x073e, 0x073e, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, + 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x075a, 0x075a, + 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x076c, + 0x076c, 0x076c, 0x076c, 0x076c, 0x076c, 0x077c, 0x077c, 0x077c, + 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, + 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, + 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, + 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x0789, 0x0789, 0x0789, // Entry 180 - 1BF - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x0789, 0x0789, 0x0789, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, + 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x07a3, 0x07a3, 0x07a3, + 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, + 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, + 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, // Entry 1C0 - 1FF - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, // Entry 200 - 23F - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, + 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07c1, 0x07c1, + 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, + 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, + 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, + 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07de, 0x07de, + 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, + 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, // Entry 240 - 27F - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0472, 0x0482, + 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, + 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07e9, 0x07e9, 0x07e9, + 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x0802, 0x081d, 0x083a, 0x084e, + 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x085c, 0x085c, 0x085c, + 0x085c, 0x085c, 0x085c, 0x0882, 0x08a5, }, }, - { // or - "ଅଫାର୍ଆବ୍ଖାଜିଆନ୍ଅବେସ୍ତନଆଫ୍ରିକାନସ୍ଅକନ୍ଆମହାରକିଆର୍ଗୋନୀଆରବିକ୍ଆସାମୀଆଭାରିକ୍ଆୟମା" + - "ରାଆଜେରବାଇଜାନିବଶଖିର୍ବେଲାରୁଷିଆନ୍ବୁଲଗେରିଆନ୍ବିସଲାମାବାମ୍ବାରାବଙ୍ଗାଳୀତିବେ" + - "ତାନ୍ବ୍ରେଟନ୍କାଟଲାନ୍କାଟାଲାନ୍ଚେଚନ୍ଚାମୋରୋକୋର୍ସିକାନ୍କ୍ରୀଚେକ୍ଚର୍ଚ୍ଚ ସ୍ଲା" + - "ଭିକ୍ଚୁଭାଶ୍ୱେଲ୍ସଡାନ୍ନିସ୍ଜର୍ମାନ୍ଡିଭେହୀଭୂଟାନୀଇୱେଗ୍ରୀକ୍ଇଂରାଜୀଏସ୍ପାରେଣ୍" + - "ଟୋସ୍ପାନିସ୍ଏସ୍ତୋନିଆନ୍ବାସ୍କ୍ୱିପର୍ସିଆନ୍ଫୁଲାହଫିନ୍ନିସ୍ଫିଜିଫାରୋଏସେଫ୍ରେଞ୍" + - "ଚପଶ୍ଚିମ ଫ୍ରିସିୟନ୍ଇରିସ୍ସ୍କଟିସ୍ ଗାଏଲିକ୍ଗାଲସିଆନ୍ଗୁଆରାନୀଗୁଜୁରାଟୀମାଁକ୍ସ" + - "ହୌସାହେବ୍ର୍ୟୁହିନ୍ଦୀହିରି ମୋଟୁକ୍ରୋଆଟିଆନ୍ହୈତାୟିନ୍ହଙ୍ଗେରିଆନ୍ଆର୍ମେନିଆନ୍ହ" + - "େରେରୋଇର୍ଣ୍ଟଲିଙ୍ଗୁଆଇଣ୍ଡୋନେସିଆନ୍ଇର୍ଣ୍ଟରଲିଙ୍ଗୁଇଇଗ୍ବୋସିଚୁଆନ୍ ୟୀଇନୁପିୟା" + - "କ୍ଇଡୋଆଇସଲାଣ୍ଡିକ୍ଇଟାଲିଆନ୍ଇନକୀଟୁତ୍ଜାପାନୀଜ୍ଜାଭାନୀଜ୍ଜର୍ଜିଆନ୍କଙ୍ଗୋକୀକୁୟ" + - "ୁକ୍ୱାନ୍ୟାମ୍କାଜାକ୍ଗ୍ରୀନଲାଣ୍ଡିକ୍ଖ୍ମେର୍କନ୍ନଡକୋରିଆନ୍କନୁରୀକାଶ୍ମିରୀକୁର୍ଦ" + - "୍ଦିଶ୍କୋମିକୋର୍ନିସ୍କିରଗିଜ୍ଲାଟିନ୍ଲକ୍ସେମବର୍ଗିସ୍ଗନ୍ଦାଲିମ୍ବୁର୍ଗିସ୍ଲିଙ୍ଗା" + - "ଲାଲାଓଲିଥୁଆନିଆନ୍ଲ୍ୟୁବା-କାଟାଙ୍ଗାଲାଟଭିଆନ୍ମାଲାଗାସୀମାର୍ଶାଲୀଜ୍ମାଓରୀମାକଡୋ" + - "ନିଆନ୍ମାଲାୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ମରାଠୀମାଲୟମାଲଟୀଜ୍ବର୍ମୀଜ୍ନାଉରୁଉତ୍ତର ନେଡବେଲେନେ" + - "ପାଳୀଡୋଙ୍ଗାଡଚ୍ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କନରୱେଜିଆନ୍ ବୋକମଲ୍ଦକ୍ଷିଣ ନେଡବେଲେନାଭା" + - "ଜୋନିୟାଞ୍ଜଓସିଟାନ୍ଓଜିୱାଓରୋମୋଓଡ଼ିଆଓସେଟିକ୍ପଞ୍ଜାବୀପାଲିପୋଲିଶ୍ପାସ୍ତୋପର୍ତ୍" + - "ତୁଗ୍ରୀଜ୍କ୍ୱେଚୁଆରେହେଟୋ-ରୋମାନ୍ସରୁଣ୍ଡିରୋମାନିଆନ୍ରଷିଆନ୍କିନ୍ୟାରୱାଣ୍ଡାସଂସ" + - "୍କୃତସର୍ଦିନିଆନ୍ସିନ୍ଧୀଉତ୍ତର ସାମିସାଙ୍ଗୋସିଂହଳସ୍ଲୋଭାକ୍ସ୍ଲୋଭେନିଆନ୍ସାମୋଆନ" + - "୍ଶୋନାସୋମାଲିଆଆଲବାନିଆନ୍ସର୍ବିଆନ୍ସ୍ବାତୀସେସୋଥୋସୁଦାନୀଜ୍ସ୍ୱେଡିସ୍ସ୍ୱାହିଲ୍ତ" + - "ାମିଲ୍ତେଲୁଗୁତାଜିକ୍ଥାଇଟ୍ରିଗିନିଆତୁର୍କମେନ୍ସେସ୍ବାନାଟୋଙ୍ଗାତୁର୍କିସ୍ସୋଂଗାତ" + - "ାତାର୍ତାହିତିଆନ୍ୟୁଘୁର୍ୟୁକ୍ରାନିଆନ୍ଉର୍ଦ୍ଦୁଉଜବେକ୍ଭେଣ୍ଡାଭିଏତନାମିଜ୍ବୋଲାପୁ" + - "କୱାଲୁନ୍ୱୋଲଫ୍ଖୋସାୟିଡିସ୍ୟୋରୁବାଜୁଆଙ୍ଗଚାଇନୀଜ୍ଜୁଲୁଆଚାଇନୀଜ୍ଆକୋଲିଆଦାଙ୍ଗେମ" + - "୍ଅଦ୍ୟଘେଆଫ୍ରିହିଲିଆଇନୁଆକାଡିଆନ୍ଆଲେଇଟୁଦକ୍ଷିଣ ଆଲ୍ଟାଇପୁରୁଣା ଇଁରାଜୀଅଁଗୀକା" + - "ଆରାମାଇକ୍ଆରାଉକାନିଆନ୍ଆରାପାହୋଆରୱକଆଷ୍ଟୁରିଆନ୍ଆୱାଧିବାଲୁଚିବାଲିନୀଜ୍ବାସାବେଜ" + - "ାବେମ୍ବାଭୋଜପୁରୀବିକୋଲ୍ବିନିବିକ୍ସିକାବ୍ରାଜ୍ବୁରିଆଟ୍ବୁଗୀନୀଜ୍ବ୍ଲିନ୍କାଡୋକାର" + - "ିବ୍ଆତ୍ସମ୍ସୀବୁଆନୋଚିବ୍ଚାଛଗତାଇଚୁକୀସେମାରୀଚିନୁକ୍ ଜାରଗାଁନ୍ଚୋଟୱାଚିପେୱାନ୍ଚ" + - "େରୋକୀଚେଚେନାକପ୍ଟିକ୍କ୍ରୀମିନ୍ ତୁର୍କୀସ୍କାଶୁବିଆନ୍ଡାକୋଟାଡାରାଗ୍ୱାଡେଲାୱେର୍" + - "ସ୍ଲେଭ୍ଡୋଗ୍ରିବ୍ଦିଙ୍କାଡୋଗ୍ରୀନିଚଳା ସର୍ବିଆନ୍ଡୁଆନାମଧ୍ୟ ପର୍ତ୍ତୁଗାଲୀଡୁଆଲା" + - "ଏଫିକ୍ପ୍ରାଚୀନ୍ ମିଶିରିଏକାଜୁକ୍ଏଲାମାଇଟ୍ମଧ୍ୟ ଇଁରାଜୀଇୱୋଣ୍ଡୋଫାଙ୍ଗଫିଲିପିନୋ" + - "ଫନ୍ମଧ୍ୟ ଫ୍ରେଞ୍ଚପୁରୁଣା ଫ୍ରେଞ୍ଚଉତ୍ତର ଫ୍ରିସିୟାନ୍ପୂର୍ବ ଫ୍ରିସିୟାନ୍ଫ୍ରିୟ" + - "ୁଲୀୟାନ୍ଗାଗାୟୋଗବାୟାଗୀଜ୍ଜିବ୍ରାଟୀଜ୍ମିଡିଲ୍ ହାଇ ଜର୍ମାନ୍ପୁରୁଣା ହାଇ ଜର୍ମା" + - "ନ୍ଗୋଣ୍ଡିଗୋରୋଣ୍ଟାଲୋଗୋଥିକ୍ଗ୍ରେବୋପ୍ରାଚୀନ୍ ୟୁନାନୀସ୍ବିସ୍ ଜର୍ମାନ୍ସ୍ବିଚ୍ " + - "ଇନ୍ହାଇଡାହାୱାଇନ୍ହିଲିଗୈନନ୍ହିତୀତେହଁଙ୍ଗଉପର ସର୍ବିଆନ୍ହୁପାଇବାନ୍ଇଲୋକୋଇଁଙ୍ଗ" + - "ୁଶ୍ଲୋଜବାନ୍ଜୁଡେଓ-ପର୍ସିଆନ୍ଜୁଡେଓ-ଆରବୀକ୍କାରା-କଲ୍ପକ୍କବାଇଲ୍କଚିନ୍ଜ୍ଜୁକମ୍ବ" + - "ାକାୱିକାବାର୍ଡିଆନ୍ତ୍ୟାପ୍କୋରୋଖାସୀଖୋତାନୀଜ୍କିମ୍ବୁଣ୍ଡୁକୋନକାନୀକୋସରୈନ୍କୈପେ" + - "ଲେକରାଚୟ-ବଲ୍କାରକାରେଲିୟାନ୍କୁରୁଖକୁମୀକ୍କୁତେନାଉଲାଦିନୋଲାହାଣ୍ଡାଲାମ୍ବାଲେଜଗ" + - "ିୟାନ୍ମଙ୍ଗୋଲୋଜିଲୁବା-ଲୁଲୁଆଲୁଇସେନୋଲୁଣ୍ଡାଲୁଓଲୁସାଉମାଦୁରୀସ୍ମାଗାହୀମୈଥିଳୀମ" + - "କାସର୍ମାଣ୍ଡିଙ୍ଗୋମାସାଇମୋକ୍ଷମନ୍ଦାରମେଣ୍ଡେମଧ୍ୟ ଇରିଶ୍ମିକମୌକ୍ମିନାଙ୍ଗାବାଉମ" + - "ାଞ୍ଚୁମଣିପୁରୀମୋହୌକମୋସିବିବିଧ ଭାଷାମାନକ୍ରୀକ୍ମିରାଣ୍ଡିଜ୍ମାରୱାରୀଏର୍ଜୟାନୀପ" + - "ୋଲିଟାନ୍ଲୋ ଜର୍ମାନ୍ନେୱାରୀନୀୟାସ୍ନିୟୁଆନ୍ନୋଗାଇପୁରୁଣା ନର୍ସଏନ୍କୋଉତ୍ତରୀ ସୋ" + - "ଥୋପାରମ୍ପରିକ ନେୱାରୀନ୍ୟାମୱେଜୀନ୍ୟାନକୋଲ୍ନ୍ୟାରୋଞ୍ଜିମାୱୌସେଜ୍ଓଟ୍ଟୋମନ୍ ତୁର" + - "୍କିସ୍ପାଙ୍ଗାସିନିଆନ୍ପାହ୍ଲାଭିପାମ୍ପାଙ୍ଗାପାପିୟାମିଣ୍ଟୋପାଲାଉଆନ୍ପୁରୁଣା ପର୍" + - "ସିଆନ୍ଫୋନେସିଆନ୍ପୋହପିଏନ୍ପୁରୁଣା ପ୍ରେଭେନେସିଆଲ୍ରାଜସ୍ଥାନୀରାପାନୁଇରାରୋତୋଙ୍" + - "ଗନ୍ରୋମାନିଆରୋମାନିଆନ୍ସଣ୍ଡାୱେୟାକୁଟ୍ସାମୌରିଟନ୍ ଆରମାଇକ୍ସାସାକ୍ସାନ୍ତାଳିସିଶ" + - "ିଲିଆନ୍ସ୍କଟସ୍ସେଲ୍କପ୍ପୁରୁଣା ଇରିଶ୍ଶାନ୍ସିଦାମୋଦକ୍ଷିଣ ସାମିଲୁଲେ ସାମିଇନାରୀ" + - " ସାମିସ୍କୋଲ୍ଟ ସାମୀସୋନିଙ୍କେସୋଗଡିଏନ୍ଶାରାନା ଟୋଙ୍ଗୋଶେରେର୍ସୁକୁମାଶୁଶୁସୁମେରି" + - "ଆନ୍କ୍ଲାସିକାଲ୍ ସିରିକ୍ସିରିକ୍ତିମନେତେରେନୋତେତୁମ୍ଟାଇଗ୍ରେତୀଭ୍ଟୋକେଲାଉକ୍ଲିଙ" + - "୍ଗନ୍ତ୍ଲିଙ୍ଗିଟ୍ତାମାଶେକ୍ନ୍ୟାସା ଟୋଙ୍ଗୋଟୋକ୍ ପିସିନ୍ତିସିମିସିଆନ୍ଟୁମ୍ବୁକାତ" + - "ୁଭାଲୁତୁଭିନିଆନ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁମୂଳଭାଇଭୋଟିକ୍ୱାଲମୋୱାରୈୱାସୋ" + - "କାଲ୍ମୀକ୍ୟାଓୟାପୀସ୍ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାଜୁନୀକୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସା" + - "ମଗ୍ରୀ ନାହିଁଜାଜାଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁର" + - "ାଜୀକାନାଡିଆନ୍ ଇଁରାଜୀବ୍ରିଟିଶ୍ ଇଁରାଜୀୟୁ.ଏସ୍. ଇଁରାଜୀଲାଟିନ୍ ଆମେରିକାନ୍ ସ" + - "୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ" + - "୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆନ୍ସର୍ବୋ-କ୍ରୋଆଟି" + - "ଆନ୍ସରଳିକରଣ ଚାଇନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍", - []uint16{ // 610 elements + { // ln + "akanliamarikilialabolibyelorisílibiligalilibengalilitshekɛlialemáligelek" + + "ilingɛlɛ́salisipanyelipelésanɛlifalansɛ́hausalihindiliongililindonez" + + "iigbolitalianolizapɔlizavalikambodzalikoreyalingálalimalezilibilimál" + + "inepalɛlifalamálipendzabilipolonɛlipulutugɛ́siliromanilirisíkinyarwa" + + "ndalisomalilisuwedɛlitamulilitayelitilikilikrɛniliurduliviyetinámiyo" + + "rubalisinwazulu", + []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x000f, 0x002d, 0x0042, 0x0060, 0x006c, 0x0081, 0x0096, - 0x00a8, 0x00b7, 0x00cc, 0x00de, 0x00ff, 0x0111, 0x0132, 0x0150, - 0x0165, 0x017d, 0x0192, 0x01aa, 0x01bf, 0x01d4, 0x01ec, 0x01fb, - 0x020d, 0x022b, 0x0237, 0x0243, 0x026e, 0x0280, 0x028f, 0x02a7, - 0x02bc, 0x02ce, 0x02e0, 0x02e9, 0x02fb, 0x030d, 0x032e, 0x0346, - 0x0364, 0x037c, 0x0394, 0x03a3, 0x03bb, 0x03c7, 0x03dc, 0x03f1, - 0x041f, 0x042e, 0x0459, 0x0471, 0x0486, 0x049e, 0x04b0, 0x04bc, - 0x04d4, 0x04e6, 0x04ff, 0x051d, 0x0535, 0x0553, 0x0571, 0x0583, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000d, 0x000d, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a, + 0x002a, 0x002a, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0059, 0x0059, 0x0062, + 0x0062, 0x0062, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007a, + 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007f, + 0x007f, 0x0086, 0x0086, 0x0086, 0x0086, 0x008e, 0x008e, 0x008e, // Entry 40 - 7F - 0x05aa, 0x05ce, 0x05f8, 0x0607, 0x0623, 0x063e, 0x0647, 0x0668, - 0x0680, 0x0698, 0x06b0, 0x06c8, 0x06e0, 0x06ef, 0x0701, 0x071f, - 0x0731, 0x0758, 0x076a, 0x0779, 0x078e, 0x079d, 0x07b5, 0x07d3, - 0x07df, 0x07f7, 0x080c, 0x081e, 0x0845, 0x0854, 0x0878, 0x0890, - 0x0899, 0x08b7, 0x08e2, 0x08fa, 0x0912, 0x0930, 0x093f, 0x095d, - 0x0975, 0x0993, 0x09a2, 0x09ae, 0x09c3, 0x09d8, 0x09e7, 0x0a0c, - 0x0a1e, 0x0a30, 0x0a39, 0x0a70, 0x0a9e, 0x0ac6, 0x0ad8, 0x0aed, - 0x0b02, 0x0b11, 0x0b20, 0x0b2f, 0x0b44, 0x0b59, 0x0b65, 0x0b77, + 0x008e, 0x0097, 0x0097, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, + 0x00a4, 0x00a4, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00dc, 0x00dc, 0x00dc, + 0x00e5, 0x00e5, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f8, 0x00f8, 0x0101, // Entry 80 - BF - 0x0b89, 0x0bb0, 0x0bc5, 0x0bed, 0x0bff, 0x0c1a, 0x0c2c, 0x0c53, - 0x0c68, 0x0c86, 0x0c98, 0x0cb4, 0x0cc6, 0x0cd5, 0x0ced, 0x0d0e, - 0x0d23, 0x0d2f, 0x0d44, 0x0d5f, 0x0d77, 0x0d89, 0x0d9b, 0x0db3, - 0x0dcb, 0x0de3, 0x0df5, 0x0e07, 0x0e19, 0x0e22, 0x0e3d, 0x0e58, - 0x0e70, 0x0e82, 0x0e9a, 0x0ea9, 0x0ebb, 0x0ed6, 0x0ee8, 0x0f09, - 0x0f1e, 0x0f30, 0x0f42, 0x0f60, 0x0f75, 0x0f87, 0x0f96, 0x0fa2, - 0x0fb4, 0x0fc6, 0x0fd8, 0x0fed, 0x0ff9, 0x1011, 0x1020, 0x103b, - 0x104d, 0x104d, 0x1068, 0x1068, 0x1074, 0x108c, 0x108c, 0x109e, + 0x0101, 0x0110, 0x0110, 0x0110, 0x0110, 0x0118, 0x011f, 0x012a, + 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, + 0x012a, 0x012a, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, + 0x013b, 0x013b, 0x0143, 0x0143, 0x0143, 0x0149, 0x0149, 0x0149, + 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159, + 0x015f, 0x015f, 0x015f, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x0172, 0x0172, 0x0179, 0x017d, + }, + }, + { // lo + loLangStr, + loLangIdx, + }, + { // lrc + "آذأربایئجانیآفریکانسآکانأمھأریأرأڤیآسامیآذأربایئجانی ھارگەباشکیریبئلاروٙ" + + "سیبولغاریبامبارابأنگالیتأبأتیبئرئتونبوسنیاییکاتالانچئچئنیکوریسکانچو" + + "اشیڤئلزیدانمارکیآلمانیزوٙنگخائڤئیوٙنانیئینگیلیسیئسپئرانتوئسپانیاییئ" + + "ستونیاییباسکیفارسیفأنلاندیفیجیفاروٙسیفآرانسئ ئیفئریسی أفتونئشینئیرل" + + "أندیگالیسیگوٙآرانیگوجأراتیمانکسھائوساعئبریھئنیکوروڤاتیھاییتیمأجاریأ" + + "رمأنیأندونئزیاییئیگبوسی چوان ییئیسلأندیئیتالیاییئینوکتیتوٙتجاپوٙنیج" + + "اڤئ ییگورجیکیکیوٙقأزاقکالالیسوٙتخئمئرکانادکورئ ییکأشمیریکوردی کورما" + + "نجیکورنیشقئرقیزیلاتینلوٙکزامبوٙرگیگاندالینگالالاولیتوڤانیاییلوٙبا ک" + + "اتانگالاتوڤیاییمالاگاشیمائوریمأقدوٙنیمالایامموغولیمأراتیمالاییمالتی" + + "بئرمئ یینئدئبئلئ شومالینئپالیھولأندینورڤئجی نینورسکنورڤئجی بوٙکمالئ" + + "وروموٙئوریاپأنجابیلأھئستانیپأشتوٙپورتئغالیکوچوٙارومانشراندیرومانیای" + + "یروٙسیکینیاروآنداسانسکئریتسئندیسامی شومالیسانگوسینھالائسلوڤاکیئسلوڤ" + + "ئنیاییشوناسوٙمالیآلبانیسئربیسوٙدانیسوٙئدیسأڤاحیلیتامیلتئلئگوتاجیکیت" + + "ایلأندیتیگرینیاتورکأمأنیتوٙنگانتورکیتاتارئویغوٙرئوکراینیئوردوٙئوزبأ" + + "کیڤییئتنامیڤولوفخوٙسایوروباچینیزولوآقئمماپوٙچئآسوٙبیمابئنابألوٙچی أ" + + "قتوٙنئشینبودوچیگاچوروٙکیکوردی سوٙرانیتایتازارماسوربی ھاریدوٙالاجولا" + + " فوٙنییئمبوفیلیپینیگاگائوزآلمانی سوٙئیسیگوٙسیھاڤاییسوربی ڤارونئگوٙمب" + + "اماچامئکابیلئکامباماکوٙندئکاباردینوکی یورا چینیکالئجینکومی پئرمیاکک" + + "وٙنکانیشامبالابافیالانگیلاکوٙتالۊری شومالیلوٙلوٙئیاماساییمئروموٙریس" + + "یماخوڤا میتومئتاٛموٙھاڤکموٙندانگمازأندأرانیناماآلمانی ھاریکئڤاسیوٙن" + + "ئکوٙنیوٙئرنیان کوٙلئکیچیرومبورئڤاسامبوٙروٙسانگوٙکوردی ھارگەسئناکیار" + + "ابورو سئنیتاچئلھیتسامی ھارگەلۉلئ سامیئیناری سامیئسکولت سامیتئسوتاسا" + + "ڤاقتامازیغ مینجاییزوٙن نادیارڤایڤوٙنجوٙڤارلپیریسوٙگاتامازیغ مأراکئش" + + "یبی نئشوٙعروی مدرنآذأری ھارگەآلمانی ئوتریشیآلمانی سوٙییسیئینگیلیسی " + + "ئوستارالیاییئینگیلیسی کاناداییئینگیلیسی بئریتانیاییئینگیلیسی ئمریکا" + + "ییئسپانیایی ئمریکا لاتینئسپانیایی ئوروٙپائسپانیایی مئکزیکفآرانسئ ئی" + + " کانادافآرانسئ ئی سوٙییسآلمانی ھارگە جافئلاماندیپورتئغالی بئرئزیلپور" + + "تئغالی ئوروٙپاییرومانیایی مولداڤیسأڤاحیلی کونگوچینی سادە بیەچینی سو" + + "نأتی", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0018, 0x0018, 0x0028, 0x0030, 0x003c, 0x003c, + 0x0046, 0x0050, 0x0050, 0x0050, 0x0073, 0x0081, 0x0093, 0x00a1, + 0x00a1, 0x00af, 0x00bd, 0x00c9, 0x00d7, 0x00e7, 0x00f5, 0x0101, + 0x0101, 0x0111, 0x0111, 0x0111, 0x0111, 0x011b, 0x0125, 0x0135, + 0x0141, 0x0141, 0x014f, 0x0155, 0x0163, 0x0175, 0x0187, 0x0199, + 0x01ab, 0x01b5, 0x01bf, 0x01bf, 0x01cf, 0x01d7, 0x01e5, 0x01f8, + 0x0217, 0x0227, 0x0227, 0x0233, 0x0243, 0x0253, 0x025d, 0x0269, + 0x0273, 0x027b, 0x027b, 0x028b, 0x0297, 0x02a3, 0x02af, 0x02af, + // Entry 40 - 7F + 0x02af, 0x02c5, 0x02c5, 0x02cf, 0x02e1, 0x02e1, 0x02e1, 0x02f1, + 0x0303, 0x0319, 0x0327, 0x0334, 0x033e, 0x033e, 0x034a, 0x034a, + 0x0354, 0x0368, 0x0372, 0x037c, 0x0389, 0x0389, 0x0397, 0x03b2, + 0x03b2, 0x03be, 0x03cc, 0x03d6, 0x03f0, 0x03fa, 0x03fa, 0x0408, + 0x040e, 0x0424, 0x043d, 0x044f, 0x045f, 0x045f, 0x046b, 0x047b, + 0x0489, 0x0495, 0x04a1, 0x04ad, 0x04b7, 0x04c6, 0x04c6, 0x04e3, + 0x04ef, 0x04ef, 0x04fd, 0x051a, 0x0537, 0x0537, 0x0537, 0x0537, + 0x0537, 0x0537, 0x0545, 0x054f, 0x054f, 0x055d, 0x055d, 0x056f, + // Entry 80 - BF + 0x057b, 0x058d, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05cb, 0x05e1, + 0x05f3, 0x05f3, 0x05fd, 0x0612, 0x061c, 0x062a, 0x063a, 0x0650, + 0x0650, 0x0658, 0x0666, 0x0672, 0x067c, 0x067c, 0x067c, 0x068a, + 0x0696, 0x06a6, 0x06b0, 0x06bc, 0x06c8, 0x06d8, 0x06e8, 0x06fa, + 0x06fa, 0x0708, 0x0712, 0x0712, 0x071c, 0x071c, 0x072a, 0x073a, + 0x0746, 0x0754, 0x0754, 0x0766, 0x0766, 0x0766, 0x0770, 0x077a, + 0x077a, 0x0786, 0x0786, 0x078e, 0x0796, 0x0796, 0x0796, 0x0796, + 0x0796, 0x0796, 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, // Entry C0 - FF - 0x109e, 0x10c3, 0x10e8, 0x10fa, 0x1112, 0x1133, 0x1133, 0x1148, - 0x1148, 0x1154, 0x1154, 0x1154, 0x1154, 0x1154, 0x1172, 0x1172, - 0x1181, 0x1193, 0x11ab, 0x11ab, 0x11b7, 0x11b7, 0x11b7, 0x11b7, - 0x11c3, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11ea, - 0x11fc, 0x1208, 0x1208, 0x1208, 0x1220, 0x1220, 0x1220, 0x1232, - 0x1232, 0x1232, 0x1232, 0x1247, 0x125f, 0x125f, 0x1271, 0x1271, - 0x127d, 0x128f, 0x128f, 0x12a1, 0x12b6, 0x12b6, 0x12c8, 0x12d7, - 0x12e9, 0x12f5, 0x1320, 0x132f, 0x1347, 0x1359, 0x136b, 0x136b, - // Entry 100 - 13F - 0x1380, 0x1380, 0x13b1, 0x13cc, 0x13de, 0x13f6, 0x13f6, 0x140e, - 0x1420, 0x1438, 0x144a, 0x144a, 0x145c, 0x1484, 0x1484, 0x1493, - 0x14c1, 0x14c1, 0x14d0, 0x14d0, 0x14d0, 0x14df, 0x14df, 0x150a, - 0x151f, 0x1537, 0x1556, 0x1556, 0x156b, 0x156b, 0x157a, 0x1592, - 0x1592, 0x159b, 0x159b, 0x15bd, 0x15e5, 0x15e5, 0x1613, 0x1641, - 0x1665, 0x166b, 0x166b, 0x166b, 0x1677, 0x1686, 0x1686, 0x1692, - 0x16b0, 0x16b0, 0x16e2, 0x1714, 0x1714, 0x1726, 0x1744, 0x1756, - 0x1768, 0x1793, 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17d7, 0x17e6, + 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07ac, 0x07ac, 0x07ac, + 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07b4, 0x07b4, 0x07b4, + 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, + 0x07b4, 0x07b4, 0x07bc, 0x07bc, 0x07c4, 0x07c4, 0x07c4, 0x07e7, + 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, + 0x07e7, 0x07e7, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, + 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07f7, 0x07f7, + 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x0805, 0x0805, + // Entry 100 - 13F + 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, + 0x0828, 0x0828, 0x0828, 0x0828, 0x0828, 0x0832, 0x0832, 0x0845, + 0x0845, 0x0851, 0x0851, 0x0866, 0x0866, 0x0866, 0x086e, 0x086e, + 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, + 0x086e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, + 0x087e, 0x087e, 0x087e, 0x087e, 0x088c, 0x088c, 0x088c, 0x088c, + 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, + 0x088c, 0x088c, 0x088c, 0x088c, 0x08a7, 0x08a7, 0x08a7, 0x08b1, // Entry 140 - 17F - 0x17e6, 0x17fb, 0x17fb, 0x1816, 0x1828, 0x1837, 0x1859, 0x1859, - 0x1865, 0x1874, 0x1874, 0x1883, 0x189b, 0x189b, 0x189b, 0x18b0, - 0x18b0, 0x18b0, 0x18d8, 0x18fa, 0x18fa, 0x1919, 0x192b, 0x193a, - 0x1946, 0x1955, 0x1961, 0x1982, 0x1982, 0x1994, 0x1994, 0x1994, - 0x1994, 0x19a0, 0x19a0, 0x19ac, 0x19c4, 0x19c4, 0x19c4, 0x19c4, - 0x19c4, 0x19c4, 0x19e2, 0x19e2, 0x19f7, 0x1a0c, 0x1a1e, 0x1a40, - 0x1a40, 0x1a40, 0x1a5e, 0x1a6d, 0x1a6d, 0x1a6d, 0x1a6d, 0x1a7f, - 0x1a94, 0x1aa6, 0x1aa6, 0x1abe, 0x1ad0, 0x1aeb, 0x1aeb, 0x1aeb, + 0x08b1, 0x08b1, 0x08b1, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08bd, + 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, + 0x08d0, 0x08d0, 0x08e0, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08ec, + 0x08f8, 0x08f8, 0x08f8, 0x0902, 0x0902, 0x0902, 0x0902, 0x0902, + 0x0912, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x093a, + 0x093a, 0x093a, 0x093a, 0x0948, 0x0948, 0x095f, 0x096f, 0x096f, + 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x097d, 0x0987, + 0x0987, 0x0987, 0x0987, 0x0987, 0x0991, 0x0991, 0x0991, 0x0991, // Entry 180 - 1BF - 0x1aeb, 0x1aeb, 0x1aeb, 0x1afa, 0x1b06, 0x1b06, 0x1b06, 0x1b22, - 0x1b37, 0x1b49, 0x1b52, 0x1b61, 0x1b61, 0x1b61, 0x1b61, 0x1b79, - 0x1b79, 0x1b8b, 0x1b9d, 0x1baf, 0x1bcd, 0x1bdc, 0x1bdc, 0x1beb, - 0x1bfd, 0x1c0f, 0x1c0f, 0x1c0f, 0x1c2b, 0x1c2b, 0x1c2b, 0x1c40, - 0x1c61, 0x1c73, 0x1c88, 0x1c97, 0x1ca3, 0x1ca3, 0x1ca3, 0x1cc8, - 0x1cda, 0x1cf8, 0x1d0d, 0x1d0d, 0x1d0d, 0x1d1f, 0x1d1f, 0x1d1f, - 0x1d3d, 0x1d3d, 0x1d59, 0x1d6b, 0x1d7d, 0x1d92, 0x1d92, 0x1d92, - 0x1d92, 0x1da1, 0x1dc0, 0x1dc0, 0x1dcf, 0x1dee, 0x1dee, 0x1e1c, + 0x0991, 0x0991, 0x0991, 0x099f, 0x099f, 0x099f, 0x099f, 0x09b4, + 0x09b4, 0x09b4, 0x09b4, 0x09b4, 0x09ba, 0x09ba, 0x09c6, 0x09c6, + 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09d2, + 0x09d2, 0x09d2, 0x09d2, 0x09d2, 0x09da, 0x09e8, 0x09e8, 0x09fd, + 0x0a07, 0x0a07, 0x0a07, 0x0a07, 0x0a07, 0x0a15, 0x0a15, 0x0a15, + 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, + 0x0a3b, 0x0a3b, 0x0a3b, 0x0a43, 0x0a58, 0x0a58, 0x0a58, 0x0a58, + 0x0a58, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a72, 0x0a72, // Entry 1C0 - 1FF - 0x1e37, 0x1e52, 0x1e64, 0x1e76, 0x1e88, 0x1eb9, 0x1ee0, 0x1ef8, - 0x1f16, 0x1f3a, 0x1f52, 0x1f52, 0x1f52, 0x1f52, 0x1f7d, 0x1f7d, - 0x1f98, 0x1f98, 0x1f98, 0x1fb0, 0x1fb0, 0x1fea, 0x1fea, 0x1fea, - 0x2005, 0x201a, 0x203b, 0x203b, 0x203b, 0x203b, 0x204d, 0x204d, - 0x204d, 0x204d, 0x206b, 0x206b, 0x2080, 0x2092, 0x20c3, 0x20c3, - 0x20d5, 0x20ed, 0x20ed, 0x20ed, 0x20ed, 0x2108, 0x211a, 0x211a, - 0x211a, 0x211a, 0x211a, 0x211a, 0x212f, 0x212f, 0x2151, 0x2151, - 0x2151, 0x215d, 0x215d, 0x216f, 0x216f, 0x216f, 0x218e, 0x21a7, + 0x0a7e, 0x0a7e, 0x0a7e, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, + 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, + 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, + 0x0a91, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, + 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aab, 0x0aab, + 0x0aab, 0x0aab, 0x0abd, 0x0abd, 0x0abd, 0x0abd, 0x0abd, 0x0ac9, + 0x0ac9, 0x0ac9, 0x0ac9, 0x0ade, 0x0ade, 0x0ae6, 0x0ae6, 0x0ae6, + 0x0b01, 0x0b01, 0x0b01, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, // Entry 200 - 23F - 0x21c3, 0x21e5, 0x21fd, 0x2215, 0x223a, 0x224c, 0x224c, 0x224c, - 0x225e, 0x226a, 0x2285, 0x2285, 0x22b6, 0x22c8, 0x22c8, 0x22c8, - 0x22d7, 0x22d7, 0x22e9, 0x22fb, 0x2310, 0x231c, 0x2331, 0x2331, - 0x234c, 0x236a, 0x236a, 0x2382, 0x23a7, 0x23c6, 0x23c6, 0x23c6, - 0x23c6, 0x23e7, 0x23e7, 0x23ff, 0x2411, 0x2411, 0x242c, 0x242c, - 0x2447, 0x2462, 0x247d, 0x2486, 0x248f, 0x248f, 0x248f, 0x248f, - 0x248f, 0x24a1, 0x24a1, 0x24a1, 0x24a1, 0x24b0, 0x24bc, 0x24c8, - 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, 0x24e9, 0x24fb, 0x24fb, + 0x0b11, 0x0b24, 0x0b35, 0x0b4a, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, + 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, + 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b67, 0x0b67, 0x0b67, 0x0b67, + 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, + 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, + 0x0b75, 0x0b75, 0x0b92, 0x0b92, 0x0b92, 0x0b92, 0x0ba7, 0x0bad, + 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bbb, 0x0bbb, + 0x0bbb, 0x0bbb, 0x0bbb, 0x0bcb, 0x0bcb, 0x0bcb, 0x0bcb, 0x0bd5, // Entry 240 - 27F - 0x24fb, 0x24fb, 0x24fb, 0x2513, 0x2537, 0x2537, 0x2549, 0x2549, - 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25b5, 0x25e6, 0x2618, 0x264f, - 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, 0x2747, 0x2747, 0x2778, - 0x27a3, 0x27a3, 0x27bb, 0x27fe, 0x283b, 0x2859, 0x2887, 0x2887, - 0x28b2, 0x28e3, + 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, + 0x0bd5, 0x0bd5, 0x0bf4, 0x0bf4, 0x0c03, 0x0c03, 0x0c14, 0x0c29, + 0x0c44, 0x0c5f, 0x0c8a, 0x0cad, 0x0cd6, 0x0cf9, 0x0d23, 0x0d44, + 0x0d63, 0x0d63, 0x0d83, 0x0da3, 0x0dbf, 0x0dd1, 0x0df2, 0x0e17, + 0x0e38, 0x0e38, 0x0e53, 0x0e6b, 0x0e80, }, }, - { // os - "абхазагавестӕафрикаансараббагавайрагтӕтӕйрагбашкирагболгайрагбосниагката" + - "лайнагцӕцӕйнагчехагчувашагданиагнемыцагбердзейнаганглисагесперантои" + - "спайнагестойнагбаскагперсайнагфиннагфиджифарерагфранцагирландиагуир" + - "агхорватагвенгериагсомихагиталиагяпойнаггуырдзиагкурдаглатинагмӕчъи" + - "дониронпортугалиагуырыссагкитайагадыгейаграгон англисагбурятагкопта" + - "грагон египтагфилиппинаграгон францаграгон бердзейнагмӕхъӕлонкӕсгон" + - "бӕлхъӕронхъуымыхъхъаглекъагцигайнагнӕзонгӕ ӕвзагавстралиаг немыцагш" + - "вйецариаг немыцагавстралиаг англисагканадӕйаг англисагбритайнаг анг" + - "лисагамерикаг англисаглатинаг америкаг англисагевропӕйаг англисагка" + - "надӕйаг францагшвейцариаг францагбразилиаг португалиагевропӕйаг пол" + - "тугалиагӕнцонгонд китайагтрадицион китайаг", - []uint16{ // 610 elements + { // lt + ltLangStr, + ltLangIdx, + }, + { // lu + "LiakanLiamharikiArabiBelarusiBulegariBengaliTshekiLizelumaniGilikiLingel" + + "esaLihispaniaMpepajemiMfwàlànsaHausaHindiHongiliLindoneziaIgboLitali" + + "LiyapaniJavaLikoreyaTshilubaLimalezianepaliolandiLipunjabiMpoloniMpu" + + "tulugɛsiLiromaniLirisikinyarwandaLisomaliLisuwidiMtamuiliNtailandiNt" + + "ulukiNkraniUrduLiviyetinamuNyorubashinɛNzulu", + []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x001a, 0x002c, 0x002c, 0x002c, 0x002c, - 0x003a, 0x003a, 0x0048, 0x0048, 0x0058, 0x0068, 0x0068, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0088, 0x009c, 0x00ac, - 0x00ac, 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00c4, 0x00c4, 0x00d0, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00f2, 0x0102, 0x0114, 0x0124, - 0x0134, 0x0140, 0x0152, 0x0152, 0x015e, 0x0168, 0x0176, 0x0184, - 0x0184, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, - 0x01a0, 0x01a0, 0x01a0, 0x01b0, 0x01b0, 0x01c2, 0x01d0, 0x01d0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0010, 0x0010, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x0025, + 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0055, + 0x0055, 0x0055, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e, + 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, // Entry 40 - 7F - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01de, 0x01de, 0x01ec, 0x01ec, 0x01fe, 0x01fe, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x020a, - 0x020a, 0x020a, 0x020a, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, - 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0230, 0x0230, 0x0230, 0x0230, + 0x007a, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, + 0x008e, 0x008e, 0x0096, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, + 0x00b9, 0x00b9, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, // Entry 80 - BF - 0x0230, 0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0264, 0x0264, 0x0264, 0x0264, 0x0264, - 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, - // Entry C0 - FF - 0x0274, 0x0274, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - // Entry 100 - 13F - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02c2, - 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02d6, - 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02ef, 0x02ef, 0x02ef, 0x02ef, - 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, - 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, - 0x02ef, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, - // Entry 140 - 17F - 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, - 0x030e, 0x030e, 0x030e, 0x030e, 0x031e, 0x031e, 0x031e, 0x031e, - 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, - 0x031e, 0x031e, 0x031e, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, - 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, - 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x033c, - 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x0354, - 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, 0x0360, 0x0360, 0x0360, - // Entry 180 - 1BF - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - // Entry 1C0 - 1FF - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - // Entry 200 - 23F - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - // Entry 240 - 27F - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x03ac, 0x03cf, 0x03f4, - 0x0417, 0x043a, 0x045b, 0x048b, 0x04ae, 0x04ae, 0x04ae, 0x04cf, - 0x04f2, 0x04f2, 0x04f2, 0x051b, 0x0544, 0x0544, 0x0544, 0x0544, - 0x0565, 0x0586, - }, - }, - { // pa - paLangStr, - paLangIdx, - }, - { // pa-Arab - "پنجابی", - []uint16{ // 126 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x00cf, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e3, 0x00e9, 0x00f4, + 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, + 0x00f4, 0x00f4, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x0104, 0x0104, 0x010c, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115, + 0x0115, 0x0115, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0122, + 0x0126, 0x0126, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, + 0x0132, 0x0139, 0x0139, 0x013f, 0x0144, }, }, - { // pl - plLangStr, - plLangIdx, - }, - { // prg - "prūsiskan", - []uint16{ // 469 elements + { // luo + "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + + "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + + "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + + "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + + "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + + "rubaKichinaKizuluDholuo", + []uint16{ // 397 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, + 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, + 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, + 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, + 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, + 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, + 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, + 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, + 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1C0 - 1FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x016f, }, }, - { // ps - "امهاريعربيآساميبېلاروسيبلغاريبوسنيالمانيیونانيانګلیسيحبشيباسکيفارسيفینلن" + - "ډيفرانسويعبريهنديارمنيایټالويجاپانیکرديلاتینيملغاسيمقدونيمغوليملایا" + - "هالېنډيپولنډيپښتوپورتګاليروسيسنسکریټالبانيسویډنیتاجکترکمنيتاتارازبک" + - "يچینيبلوڅي", - []uint16{ // 210 elements + { // luy + "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + + "ikiLusunguKihispaniaKiajemiKifaransaKihausaLuhindiKihungariKiindones" + + "iaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaKin" + + "epaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKiso" + + "maliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyoru" + + "baKichinaKizuluLuluhia", + []uint16{ // 399 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, - 0x0014, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002e, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0050, 0x0050, 0x0050, 0x0050, 0x005c, 0x006a, 0x006a, 0x006a, - 0x0072, 0x007c, 0x0086, 0x0086, 0x0094, 0x0094, 0x0094, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00aa, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00bc, 0x00bc, - // Entry 40 - 7F - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00ca, 0x00ca, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00f6, 0x00f6, 0x00f6, 0x0102, - 0x0102, 0x010c, 0x010c, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, - 0x0116, 0x0116, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0130, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0052, 0x0052, 0x005c, + 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c, + 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073, + 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, 0x0083, 0x0083, + // Entry 40 - 7F + 0x0083, 0x008e, 0x008e, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x009e, 0x009e, 0x00a6, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac, + 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd, + 0x00d5, 0x00d5, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e7, 0x00e7, 0x00f0, // Entry 80 - BF - 0x0138, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0150, 0x0150, - 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x015e, 0x015e, 0x015e, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x0176, 0x0176, 0x0176, 0x0176, 0x017e, 0x017e, 0x017e, 0x018a, - 0x018a, 0x018a, 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194, - 0x0194, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, - 0x019e, 0x019e, 0x019e, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x0105, 0x0110, + 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, + 0x0110, 0x0110, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, + 0x011f, 0x011f, 0x0126, 0x0126, 0x0126, 0x0130, 0x0130, 0x0130, + 0x0130, 0x0130, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0141, + 0x0147, 0x0147, 0x0147, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, + 0x0152, 0x015a, 0x015a, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, // Entry C0 - FF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01b0, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + // Entry 100 - 13F + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + // Entry 140 - 17F + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + // Entry 180 - 1BF + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x016e, }, }, - { // pt - ptLangStr, - ptLangIdx, - }, - { // pt-PT - ptPTLangStr, - ptPTLangIdx, + { // lv + lvLangStr, + lvLangIdx, }, - { // qu - "Afrikaans SimiAmarico SimiArabe SimiAsames SimiAzerbaiyano SimiBaskir Si" + - "miBielorruso SimiBulgaro SimiBangla SimiTibetano SimiBreton SimiBosn" + - "io SimiCatalan SimiCorso SimiCheco SimiGales SimiDanes SimiAleman Si" + - "miDivehi SimiGriego SimiIngles SimiEspañol SimiEstonio SimiEuskera S" + - "imiPersa SimiFulah SimiFines SimiFeroes SimiFrances SimiFrison SimiI" + - "rlandes SimiGaelico Escoces SimiGallego SimiGujarati SimiHausa SimiH" + - "ebreo SimiHindi SimiCroata SimiHaitiano Criollo SimiHungaro SimiArme" + - "nio SimiIndonesio SimiIgbo SimiYi SimiIslandes SimiItaliano SimiInuk" + - "titut SimiJapones SimiGeorgiano SimiKazajo SimiGroenlandes SimiKhmer" + - " SimiKannada SimiCoreano SimiKirghiz SimiLuxemburgues SimiLao SimiLi" + - "tuano SimiLeton SimiMaori SimiMacedonio SimiMalayalam SimiMongol Sim" + - "iMarathi SimiMalayo SimiMaltes SimiNepali SimiNeerlandes SimiNoruego" + - " SimiOccitano SimiOdia SimiPunyabi SimiPolaco SimiPashto SimiPortugu" + - "es SimiRunasimiRomanche SimiRumano SimiRuso SimiKinyarwanda SimiSans" + - "crito SimiSindhi SimiChincha Sami SimiCingales SimiEslovaco SimiEslo" + - "veno SimiAlbanes SimiSerbio SimiSueco SimiSuajili SimiTamil SimiTelu" + - "gu SimiTayiko SimiTailandes SimiTigriña SimiTurcomano SimiSetsuana S" + - "imiTurco SimiTartaro SimiUigur SimiUcraniano SimiUrdu SimiUzbeko Sim" + - "iVietnamita SimiWolof SimiIsixhosa SimiYoruba SimiChino SimiIsizulu " + - "SimiMapuche SimiCheroqui SimiChawpi Kurdo SimiBajo Sorbio SimiFilipi" + - "no SimiAlsaciano SimiHmong Daw SimiAlto Sorbio SimiKonkani SimiMohaw" + - "k SimiSesotho Sa Leboa SimiPapiamento SimiKʼicheʼ SimiSakha SimiQull" + - "a Sami SimiSami Lule SimiSami Inari SimiSami Skolt SimiSiriaco Simi", - []uint16{ // 526 elements + { // mas + "nkʉtʉ́k ɔ́ɔ̄ lAkannkʉtʉ́k ɔ́ɔ̄ lAmharinkʉtʉ́k ɔ́ɔ̄ lmarabunkʉtʉ́k ɔ́ɔ̄ l" + + "Belarusinkʉtʉ́k ɔ́ɔ̄ lBulgarialnkʉtʉ́k ɔ́ɔ̄ lBengalinkʉtʉ́k ɔ́ɔ̄ lch" + + "ekinkʉtʉ́k ɔ́ɔ̄ ljerumaninkʉtʉ́k ɔ́ɔ̄ lgirikinkʉtʉ́k ɔ́ɔ̄ nkɨ́resank" + + "ʉtʉ́k ɔ́ɔ̄ lspaniankʉtʉ́k ɔ́ɔ̄ lpersiankʉtʉ́k ɔ́ɔ̄ faransankʉtʉ́k ɔ" + + "́ɔ̄ hausankʉtʉ́k ɔ́ɔ̄ lmoindinkʉtʉ́k ɔ́ɔ̄ lhungarinkʉtʉ́k ɔ́ɔ̄ Indo" + + "nesiankʉtʉ́k ɔ́ɔ̄ Igbonkʉtʉ́k ɔ́ɔ̄ ltaliannkʉtʉ́k ɔ́ɔ̄ japaninkʉtʉ́k" + + " ɔ́ɔ̄ ljanankʉtʉ́k ɔ́ɔ̄ lkambodiankʉtʉ́k ɔ́ɔ̄ lkoreankʉtʉ́k ɔ́ɔ̄ mal" + + "aynkʉtʉ́k ɔ́ɔ̄ lBurmankʉtʉ́k ɔ́ɔ̄ lnepalinkʉtʉ́k ɔ́ɔ̄ lduchinkʉtʉ́k " + + "ɔ́ɔ̄ lpunjabinkʉtʉ́k ɔ́ɔ̄ lpolandnkʉtʉ́k ɔ́ɔ̄ lportuguesenkʉtʉ́k ɔ́" + + "ɔ̄ lromaniankʉtʉ́k ɔ́ɔ̄ lrusinkʉtʉ́k ɔ́ɔ̄ lruwandankʉtʉ́k ɔ́ɔ̄ lchu" + + "marinkʉtʉ́k ɔ́ɔ̄ lswidinkʉtʉ́k ɔ́ɔ̄ ltamilnkʉtʉ́k ɔ́ɔ̄ ltainkʉtʉ́k ɔ" + + "́ɔ̄ lturukinkʉtʉ́k ɔ́ɔ̄ lkraniankʉtʉ́k ɔ́ɔ̄ lurdunkʉtʉ́k ɔ́ɔ̄ lviet" + + "inamunkʉtʉ́k ɔ́ɔ̄ lyorubankʉtʉ́k ɔ́ɔ̄ lchinankʉtʉ́k ɔ́ɔ̄ lzuluMaa", + []uint16{ // 408 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x001a, 0x001a, - 0x0024, 0x002f, 0x002f, 0x002f, 0x003f, 0x004a, 0x0059, 0x0065, - 0x0065, 0x0065, 0x0070, 0x007d, 0x0088, 0x0093, 0x009f, 0x009f, - 0x009f, 0x00a9, 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00bd, 0x00c7, - 0x00d2, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f3, 0x00f3, 0x0100, - 0x010c, 0x0118, 0x0122, 0x012c, 0x0136, 0x0136, 0x0141, 0x014d, - 0x0158, 0x0165, 0x0179, 0x0185, 0x0185, 0x0192, 0x0192, 0x019c, - 0x01a7, 0x01b1, 0x01b1, 0x01bc, 0x01d1, 0x01dd, 0x01e9, 0x01e9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0034, 0x0034, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x006c, 0x0089, + 0x0089, 0x0089, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, + 0x00a6, 0x00a6, 0x00a6, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x0116, 0x0116, 0x0131, + 0x0131, 0x0131, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x0167, + 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0180, + 0x0180, 0x019b, 0x019b, 0x019b, 0x019b, 0x01b7, 0x01b7, 0x01b7, // Entry 40 - 7F - 0x01e9, 0x01f7, 0x01f7, 0x0200, 0x0207, 0x0207, 0x0207, 0x0214, - 0x0221, 0x022f, 0x023b, 0x023b, 0x0249, 0x0249, 0x0249, 0x0249, - 0x0254, 0x0264, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0292, 0x0292, 0x02a3, 0x02a3, 0x02a3, 0x02a3, - 0x02ab, 0x02b7, 0x02b7, 0x02c1, 0x02c1, 0x02c1, 0x02cb, 0x02d9, - 0x02e7, 0x02f2, 0x02fe, 0x0309, 0x0314, 0x0314, 0x0314, 0x0314, - 0x031f, 0x031f, 0x032e, 0x032e, 0x033a, 0x033a, 0x033a, 0x033a, - 0x0347, 0x0347, 0x0347, 0x0350, 0x0350, 0x035c, 0x035c, 0x0367, + 0x01b7, 0x01d4, 0x01d4, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, + 0x0207, 0x0207, 0x0221, 0x023a, 0x023a, 0x023a, 0x023a, 0x023a, + 0x023a, 0x023a, 0x0257, 0x0257, 0x0271, 0x0271, 0x0271, 0x0271, + 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, + 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, + 0x0271, 0x0271, 0x0271, 0x028a, 0x028a, 0x02a4, 0x02a4, 0x02a4, + 0x02bf, 0x02bf, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, + 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02f5, 0x02f5, 0x0310, // Entry 80 - BF - 0x0372, 0x0380, 0x0388, 0x0395, 0x0395, 0x03a0, 0x03a9, 0x03b9, - 0x03c7, 0x03c7, 0x03d2, 0x03e3, 0x03e3, 0x03f0, 0x03fd, 0x040a, - 0x040a, 0x040a, 0x040a, 0x0416, 0x0421, 0x0421, 0x0421, 0x0421, - 0x042b, 0x0437, 0x0441, 0x044c, 0x0457, 0x0465, 0x0472, 0x0480, - 0x048d, 0x048d, 0x0497, 0x0497, 0x04a3, 0x04a3, 0x04ad, 0x04bb, - 0x04c4, 0x04cf, 0x04cf, 0x04de, 0x04de, 0x04de, 0x04e8, 0x04f5, - 0x04f5, 0x0500, 0x0500, 0x050a, 0x0516, 0x0516, 0x0516, 0x0516, - 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, + 0x0310, 0x032f, 0x032f, 0x032f, 0x032f, 0x034b, 0x0364, 0x0380, + 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, + 0x0380, 0x0380, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, + 0x03b6, 0x03b6, 0x03d0, 0x03d0, 0x03d0, 0x03e8, 0x03e8, 0x03e8, + 0x03e8, 0x03e8, 0x0403, 0x0403, 0x0403, 0x0403, 0x0403, 0x041e, + 0x0437, 0x0437, 0x0437, 0x0455, 0x0455, 0x0455, 0x0455, 0x0455, + 0x0455, 0x0470, 0x0470, 0x048a, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, // Entry C0 - FF - 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052f, 0x052f, 0x0540, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, // Entry 100 - 13F - 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, - 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0550, 0x0550, 0x0550, - 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, - 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, // Entry 140 - 17F - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0579, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, // Entry 180 - 1BF - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05b5, 0x05b5, 0x05b5, - // Entry 1C0 - 1FF - 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, - 0x05b5, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, - 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05d2, 0x05d2, - 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, - 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05dc, 0x05dc, 0x05dc, - 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, - 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, - 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05eb, 0x05f9, - // Entry 200 - 23F - 0x0608, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, - 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0623, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a6, }, }, - { // rm - "afarabchasianavesticafrikaansakanamaricaragonaisarabassamiavaricaymaraas" + - "erbeidschanicbaschkirbielorussbulgarbislamabambarabengaltibetanbreto" + - "nbosniaccatalantschetschenchamorrocorscreetschecslav da baselgiatsch" + - "uvaschkimricdanaistudestgmaledivicdzongkhaewegrecenglaisesperantospa" + - "gnolestonbascpersianfulahfinlandaisfidschianferraisfranzosfrisirland" + - "aisgaelic scotgalicianguaranigujaratimanxhaussaebraichindihiri motuc" + - "roathaitianungaraisarmenhererointerlinguaindonaisinterlingueigbosich" + - "uan yiinupiakidoislandaistalianinuktitutgiapunaisjavanaisgeorgiankon" + - "gokikuyukuanyamacasacgrönlandaiscambodschankannadacoreankanurikashmi" + - "ricurdkomicornickirghislatinluxemburgaisgandalimburgaislingalalaotli" + - "tuanluba-katangalettonmalagassimarschallaismaorimacedonmalayalammong" + - "olicmarathimalaicmaltaisbirmannaurundebele dal nordnepalaisndongaoll" + - "andaisnorvegiais nynorsknorvegais bokmålndebele dal sidnavajonyanjao" + - "ccitanojibwaoromooriyaosseticpunjabipalipolacpaschtoportugaisquechua" + - "rumantschrundirumenrusskinyarwandasanscritsardsindhisami dal nordsan" + - "gosingalaisslovacslovensamoanshonasomalialbanaisserbswazisotho dal s" + - "idsundanaissvedaissuahilitamiltelugutadjiktailandaistigrinyaturkment" + - "swanatongatirctsongatatartahitianuiguricucranaisurduusbecvendavietna" + - "maisvolapukvallonwolofxhosajiddicyorubazhuangchinaiszuluacehacoliand" + - "angmeadygaiafrihiliainuaccadicaleuticaltaic dal sidenglais veglangik" + - "aarameicaraucanicarapahoarawakasturianawadhibelutschibalinaisbasaabe" + - "dschabembabhojpuribikolbinisiksikabrajburiatbugiblincaddocaribicatsa" + - "mcebuanochibchatschagataicchuukaismaripatuà chinookchoctawchipewyanc" + - "herokeecheyennecoptictirc crimeankaschubicdakotadargwadelawareslavey" + - "dogribdinkadogribass sorbdualaollandais mesaundiulaefikegipzian vegl" + - "ekajukelamiticenglais mesaunewondofangfilippinofonfranzos mesaunfran" + - "zos veglfris dal nordfris da l’ostfriulangagayogbayageezgilbertaistu" + - "destg mesaunvegl tudestg da scrittiragondigorontalogoticgrebogrec ve" + - "gltudestg svizzergwichʼinhaidahawaianhiligaynonettitichmongaut sorbh" + - "upaibanilocanoingushlojbangiudaic-persiangiudaic-arabkarakalpakkabyl" + - "ekachinjjukambakawikabardictyapkorokhasikhotanaiskimbundukonkanikosr" + - "aeankpellekarachay-balkarcareliankurukhkumukkutenailadinolahndalamba" + - "lezghianlomongoloziluba-lulualuisenolundaluolushaimaduraismagahimait" + - "hilimakassarmandingomasaimokshamandarmendeirlandais mesaunmicmacmina" + - "ngkabaumanchumanipurimohawkmossiplurilingcreekmirandaismarwarierzyan" + - "eapolitanbass tudestgnewariniasniuenogainordic vegln’kosotho dal nor" + - "dnewari classicnyamwezinyankolenyoronzimaosagetirc ottomanpangasinan" + - "pahlavipampangapapiamentopalaupersian veglfenizianponapeanprovenzal " + - "veglrajasthanirapanuirarotongaromaniaromunicsandawejakutarameic sama" + - "ritansasaksantalisicilianscotselkupirlandais veglshansidamosami dal " + - "sidsami lulesami inarisami skoltsoninkesogdiansranan tongoserersukum" + - "asususumericsiric classicsirictemneterenotetumtigretivtokelauklingon" + - "ictlingittamasheqlingua tsongatok pisintsimshiantumbukatuvalutuvinia" + - "nudmurtugariticmbundulinguas betg determinadasvaivoticwalamowaraywas" + - "hokalmukyaoyapaiszapotecsimbols da Blisszenagazuninagins cuntegns li" + - "nguisticszazatudestg austriacenglais australianenglais canadaisengla" + - "is britannicenglais americanspagnol latinamericanspagnol ibericfranz" + - "os canadaisfranzos svizzerflamportugais brasilianportugais iberianmo" + - "ldavserbo-croatchinais simplifitgàchinais tradiziunal", - []uint16{ // 610 elements + { // mer + "KĩakaniKĩamarĩkiKĩarabuKĩbelarusiKĩbulugĩriaKĩbangiraKĩchekiKĩnjamanĩKĩn" + + "girikiKĩngerethaKĩspĩniKĩpasiaKĩfuransiKĩhausaKĩhĩndiKĩhangarĩKĩindo" + + "nesiaKĩigboKĩitalĩKĩjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburmaKĩn" + + "epaliKĩholandiKĩpunjabuKĩpolandiKĩpochogoKĩromaniaKĩrashiaKĩrwandaKĩ" + + "somaliKĩswideniKĩtamiluKĩthailandiKĩtakĩKĩukirĩniKĩurduKĩvietinamuKĩ" + + "yorubaKĩchinaKĩzuluKĩmĩrũ", + []uint16{ // 413 elements // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0027, 0x0030, - 0x0034, 0x003a, 0x0040, 0x0046, 0x0055, 0x005d, 0x0066, 0x006c, - 0x0073, 0x007a, 0x0080, 0x0087, 0x008d, 0x0094, 0x009b, 0x00a6, - 0x00ae, 0x00b2, 0x00b6, 0x00bc, 0x00cc, 0x00d6, 0x00dc, 0x00e2, - 0x00e9, 0x00f2, 0x00fa, 0x00fd, 0x0101, 0x0108, 0x0111, 0x0118, - 0x011d, 0x0121, 0x0128, 0x012d, 0x0137, 0x0140, 0x0147, 0x014e, - 0x0152, 0x015b, 0x0166, 0x016e, 0x0175, 0x017d, 0x0181, 0x0187, - 0x018d, 0x0192, 0x019b, 0x01a0, 0x01a7, 0x01af, 0x01b4, 0x01ba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0013, 0x0013, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, 0x0033, + 0x0033, 0x0033, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0050, 0x0050, 0x0050, 0x0050, 0x005a, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0088, + 0x0088, 0x0091, 0x0091, 0x0091, 0x0091, 0x009c, 0x009c, 0x009c, // Entry 40 - 7F - 0x01c5, 0x01cd, 0x01d8, 0x01dc, 0x01e6, 0x01ed, 0x01f0, 0x01f9, - 0x01ff, 0x0208, 0x0211, 0x0219, 0x0221, 0x0226, 0x022c, 0x0234, - 0x0239, 0x0245, 0x0250, 0x0257, 0x025d, 0x0263, 0x026b, 0x026f, - 0x0273, 0x0279, 0x0280, 0x0285, 0x0291, 0x0296, 0x02a0, 0x02a7, - 0x02ab, 0x02b1, 0x02bd, 0x02c3, 0x02cc, 0x02d8, 0x02dd, 0x02e4, - 0x02ed, 0x02f5, 0x02fc, 0x0302, 0x0309, 0x030f, 0x0314, 0x0324, - 0x032c, 0x0332, 0x033b, 0x034d, 0x035e, 0x036d, 0x0373, 0x0379, - 0x0380, 0x0386, 0x038b, 0x0390, 0x0397, 0x039e, 0x03a2, 0x03a7, + 0x009c, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, + 0x00b8, 0x00b8, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00ed, 0x00ed, 0x00ed, + 0x00f6, 0x00f6, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x010a, 0x010a, 0x0114, // Entry 80 - BF - 0x03ae, 0x03b7, 0x03be, 0x03c7, 0x03cc, 0x03d1, 0x03d5, 0x03e0, - 0x03e8, 0x03ec, 0x03f2, 0x03ff, 0x0404, 0x040d, 0x0413, 0x0419, - 0x041f, 0x0424, 0x042a, 0x0432, 0x0436, 0x043b, 0x0448, 0x0451, - 0x0458, 0x045f, 0x0464, 0x046a, 0x0470, 0x047a, 0x0482, 0x0489, - 0x048f, 0x0494, 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b2, 0x04ba, - 0x04be, 0x04c3, 0x04c8, 0x04d2, 0x04d9, 0x04df, 0x04e4, 0x04e9, - 0x04ef, 0x04f5, 0x04fb, 0x0502, 0x0506, 0x050a, 0x050f, 0x0517, - 0x051d, 0x051d, 0x0525, 0x0525, 0x0529, 0x0530, 0x0530, 0x0537, + 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013a, + 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, + 0x013a, 0x013a, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, + 0x014d, 0x014d, 0x0156, 0x0156, 0x0156, 0x0162, 0x0162, 0x0162, + 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0175, + 0x017c, 0x017c, 0x017c, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, + 0x0188, 0x0191, 0x0191, 0x0199, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, // Entry C0 - FF - 0x0537, 0x0545, 0x0551, 0x0557, 0x055e, 0x0567, 0x0567, 0x056e, - 0x056e, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, 0x057c, - 0x0582, 0x058b, 0x0593, 0x0593, 0x0598, 0x0598, 0x0598, 0x0598, - 0x059f, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05ac, - 0x05b1, 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05bc, 0x05c0, - 0x05c0, 0x05c0, 0x05c0, 0x05c6, 0x05ca, 0x05ca, 0x05ce, 0x05ce, - 0x05d3, 0x05da, 0x05da, 0x05df, 0x05e6, 0x05e6, 0x05ed, 0x05f8, - 0x0600, 0x0604, 0x0612, 0x0619, 0x0622, 0x062a, 0x0632, 0x0632, - // Entry 100 - 13F - 0x0638, 0x0638, 0x0644, 0x064d, 0x0653, 0x0659, 0x0659, 0x0661, - 0x0667, 0x066d, 0x0672, 0x0672, 0x0677, 0x0680, 0x0680, 0x0685, - 0x0695, 0x0695, 0x069a, 0x069a, 0x069a, 0x069e, 0x069e, 0x06ab, - 0x06b1, 0x06b9, 0x06c7, 0x06c7, 0x06cd, 0x06cd, 0x06d1, 0x06da, - 0x06da, 0x06dd, 0x06dd, 0x06eb, 0x06f7, 0x06f7, 0x0704, 0x0713, - 0x071a, 0x071c, 0x071c, 0x071c, 0x0720, 0x0725, 0x0725, 0x0729, - 0x0733, 0x0733, 0x0741, 0x075a, 0x075a, 0x075f, 0x0768, 0x076d, - 0x0772, 0x077b, 0x078a, 0x078a, 0x078a, 0x078a, 0x0793, 0x0798, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + // Entry 100 - 13F + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, // Entry 140 - 17F - 0x0798, 0x079f, 0x079f, 0x07a9, 0x07b0, 0x07b5, 0x07bd, 0x07bd, - 0x07c1, 0x07c5, 0x07c5, 0x07cc, 0x07d2, 0x07d2, 0x07d2, 0x07d8, - 0x07d8, 0x07d8, 0x07e7, 0x07f3, 0x07f3, 0x07fd, 0x0803, 0x0809, - 0x080c, 0x0811, 0x0815, 0x081d, 0x081d, 0x0821, 0x0821, 0x0821, - 0x0821, 0x0825, 0x0825, 0x082a, 0x0833, 0x0833, 0x0833, 0x0833, - 0x0833, 0x0833, 0x083b, 0x083b, 0x0842, 0x084a, 0x0850, 0x085f, - 0x085f, 0x085f, 0x0867, 0x086d, 0x086d, 0x086d, 0x086d, 0x0872, - 0x0879, 0x087f, 0x087f, 0x0885, 0x088a, 0x0892, 0x0892, 0x0892, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, // Entry 180 - 1BF - 0x0892, 0x0892, 0x0892, 0x0899, 0x089d, 0x089d, 0x089d, 0x08a7, - 0x08ae, 0x08b3, 0x08b6, 0x08bc, 0x08bc, 0x08bc, 0x08bc, 0x08c4, - 0x08c4, 0x08ca, 0x08d2, 0x08da, 0x08e2, 0x08e7, 0x08e7, 0x08ed, - 0x08f3, 0x08f8, 0x08f8, 0x08f8, 0x0908, 0x0908, 0x0908, 0x090e, - 0x0919, 0x091f, 0x0927, 0x092d, 0x0932, 0x0932, 0x0932, 0x093b, - 0x0940, 0x0949, 0x0950, 0x0950, 0x0950, 0x0955, 0x0955, 0x0955, - 0x095f, 0x095f, 0x096b, 0x0971, 0x0975, 0x0979, 0x0979, 0x0979, - 0x0979, 0x097e, 0x0989, 0x0989, 0x098f, 0x099d, 0x099d, 0x09ab, - // Entry 1C0 - 1FF - 0x09b3, 0x09bb, 0x09c0, 0x09c5, 0x09ca, 0x09d6, 0x09e0, 0x09e7, - 0x09ef, 0x09f9, 0x09fe, 0x09fe, 0x09fe, 0x09fe, 0x0a0a, 0x0a0a, - 0x0a12, 0x0a12, 0x0a12, 0x0a1a, 0x0a1a, 0x0a28, 0x0a28, 0x0a28, - 0x0a32, 0x0a39, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a48, 0x0a48, - 0x0a48, 0x0a48, 0x0a50, 0x0a50, 0x0a57, 0x0a5c, 0x0a6d, 0x0a6d, - 0x0a72, 0x0a79, 0x0a79, 0x0a79, 0x0a79, 0x0a81, 0x0a85, 0x0a85, - 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a8b, 0x0a8b, 0x0a99, 0x0a99, - 0x0a99, 0x0a9d, 0x0a9d, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aaf, 0x0ab8, - // Entry 200 - 23F - 0x0ac2, 0x0acc, 0x0ad3, 0x0ada, 0x0ae6, 0x0aeb, 0x0aeb, 0x0aeb, - 0x0af1, 0x0af5, 0x0afc, 0x0afc, 0x0b09, 0x0b0e, 0x0b0e, 0x0b0e, - 0x0b13, 0x0b13, 0x0b19, 0x0b1e, 0x0b23, 0x0b26, 0x0b2d, 0x0b2d, - 0x0b36, 0x0b3d, 0x0b3d, 0x0b45, 0x0b52, 0x0b5b, 0x0b5b, 0x0b5b, - 0x0b5b, 0x0b64, 0x0b64, 0x0b6b, 0x0b71, 0x0b71, 0x0b79, 0x0b79, - 0x0b7f, 0x0b87, 0x0b8d, 0x0ba6, 0x0ba9, 0x0ba9, 0x0ba9, 0x0ba9, - 0x0ba9, 0x0bae, 0x0bae, 0x0bae, 0x0bae, 0x0bb4, 0x0bb9, 0x0bbe, - 0x0bbe, 0x0bbe, 0x0bc4, 0x0bc4, 0x0bc4, 0x0bc7, 0x0bcd, 0x0bcd, - // Entry 240 - 27F - 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd4, 0x0be4, 0x0be4, 0x0bea, 0x0bea, - 0x0bee, 0x0c09, 0x0c0d, 0x0c0d, 0x0c0d, 0x0c1d, 0x0c1d, 0x0c2f, - 0x0c3f, 0x0c50, 0x0c60, 0x0c75, 0x0c83, 0x0c83, 0x0c83, 0x0c93, - 0x0ca2, 0x0ca2, 0x0ca6, 0x0cb9, 0x0cca, 0x0cd0, 0x0cdb, 0x0cdb, - 0x0cef, 0x0d02, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, + 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a9, }, }, - { // rn - "IgikaniIkimuharikiIcarabuIkibelarusiyaIkinyabuligariyaIkibengaliIgicekeI" + - "kidageIkigerekiIcongerezaIcesipanyoloIgiperisiIgifaransaIgihawusaIgi" + - "hindiIkinyahongiriyaIkinyendoziyaIkiguboIgitaliyaniIkiyapaniIkinyeja" + - "vaIgikambodiyaIkinyakoreyaIkinyamaleziyaIkinyabirimaniyaIkinepaliIgi" + - "holandiIgipunjabiIkinyapolonyeIgiporutugariIkirundiIkinyarumaniyaIki" + - "rusiyaIkinyarwandaIgisomaliIgisuweduwaIgitamiliIkinyatayilandiIgitur" + - "ukiyaIkinyayukereniInyeyuruduIkinyaviyetinamuIkiyorubaIgishinwaIkizu" + - "lu", - []uint16{ // 181 elements + { // mfe + "akanamarikarabbielorisbilgarbengalitchekalmangrekangleespagnolpersanfran" + + "sehaoussahindihongrwaindonezienigboitalienzaponezavanekhmer, santral" + + "koreenmalebirmannepaleolandepenjabipoloneportigerouminrisrwandasomal" + + "iswedwatamoulthaïtirkikrenienourdouvietnamienyorubasinwa, mandarinzo" + + "uloukreol morisien", + []uint16{ // 414 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0012, 0x0012, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0026, 0x0036, - 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0061, 0x0061, 0x006d, - 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, - 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a0, 0x00a0, 0x00a0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x001c, + 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x002d, 0x002d, 0x002d, 0x002d, 0x0031, 0x0036, 0x0036, 0x003e, + 0x003e, 0x003e, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0051, + 0x0051, 0x0056, 0x0056, 0x0056, 0x0056, 0x005d, 0x005d, 0x005d, // Entry 40 - 7F - 0x00a0, 0x00ad, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00bf, 0x00bf, 0x00c8, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00f8, 0x00f8, 0x0108, 0x0108, 0x0108, - 0x0111, 0x0111, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x0125, 0x0125, 0x0132, + 0x005d, 0x0067, 0x0067, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x0072, 0x0072, 0x0078, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, + 0x007e, 0x007e, 0x008c, 0x008c, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0096, 0x0096, 0x009c, 0x009c, 0x009c, + 0x00a2, 0x00a2, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, + 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b5, // Entry 80 - BF - 0x0132, 0x013f, 0x013f, 0x013f, 0x0147, 0x0155, 0x015e, 0x016a, - 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, - 0x017e, 0x017e, 0x0187, 0x0187, 0x0187, 0x0196, 0x0196, 0x0196, - 0x0196, 0x0196, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01af, - 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, - 0x01c9, 0x01d2, 0x01d2, 0x01db, 0x01e2, + 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c5, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, + 0x00d7, 0x00d7, 0x00dd, 0x00dd, 0x00dd, 0x00e2, 0x00e2, 0x00e2, + 0x00e2, 0x00e2, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00ee, + 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, + 0x00fe, 0x0104, 0x0104, 0x0113, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + // Entry C0 - FF + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + // Entry 100 - 13F + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + // Entry 140 - 17F + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + // Entry 180 - 1BF + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0127, }, }, - { // ro - roLangStr, - roLangIdx, - }, - { // rof - "KiakaniKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigi" + - "rikiKiingerezaKihispaniaKiajemiKyifaransaKihausaKihindiKihungariKiin" + - "donesiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKibur" + - "maKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwand" + - "aKisomaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuK" + - "iyorubaKichinaKizuluKihorombo", - []uint16{ // 478 elements + { // mg + "AkanAmharikaAraboBielorosyBiolgaraBengaliTsekyAlemaninaGrikaAnglisyEspan" + + "iolaPersaFrantsayhaoussahindihongroàIndonezianinaigboItalianinaJapon" + + "eyJavaneykhmerKoreaninaMalagasyMalayBirmanaNepaleHolandeyPenjabiPolo" + + "neyPortiogeyRomanianinaRosianinaRoandeSomalianinaSoisaTamoilaTaioane" + + "yTiorkaOkrainianinaOrdòVietnamianinaYôrobàSinoa, MandarinZolò", + []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0056, 0x0056, 0x0060, - 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0078, - 0x0078, 0x007f, 0x007f, 0x007f, 0x007f, 0x0088, 0x0088, 0x0088, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x0022, + 0x0022, 0x0022, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x0037, 0x0037, 0x0037, 0x0037, 0x003c, 0x0043, 0x0043, 0x004c, + 0x004c, 0x004c, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0060, + 0x0060, 0x0065, 0x0065, 0x0065, 0x0065, 0x006d, 0x006d, 0x006d, // Entry 40 - 7F - 0x0088, 0x0093, 0x0093, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, - 0x00a3, 0x00a3, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d2, 0x00d2, 0x00d2, - 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f5, + 0x006d, 0x007a, 0x007a, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, + 0x0088, 0x0088, 0x008f, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, + 0x0096, 0x0096, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00a4, 0x00a4, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, + 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00ac, 0x00ac, 0x00ac, + 0x00ac, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00b8, 0x00b8, 0x00b8, + 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d4, // Entry 80 - BF - 0x00f5, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x0104, 0x010a, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, - 0x0124, 0x0124, 0x012b, 0x012b, 0x012b, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x0146, - 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, - 0x0157, 0x015f, 0x015f, 0x0166, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry C0 - FF - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 100 - 13F - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 140 - 17F - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 180 - 1BF - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 1C0 - 1FF - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0175, + 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f1, 0x00f7, + 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, + 0x00f7, 0x00f7, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, + 0x0107, 0x0107, 0x010e, 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, + 0x0116, 0x0116, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0128, + 0x012d, 0x012d, 0x012d, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, + 0x013a, 0x0142, 0x0142, 0x0151, 0x0156, }, }, - { // ru - ruLangStr, - ruLangIdx, - }, - { // rw - "IkinyafurikaneriInyetuwiInyamuharikiIcyarabuIcyasamiziInyazeribayijaniIk" + - "ibelarusiyaUrunyabuligariyaIkibengaliInyebiritoniInyebosiniyaIgikata" + - "laniIgicekeIkigaluwaIkidaninwaIkidageIkigerekiIcyongerezaIcyesiperan" + - "toIcyesipanyoloIcyesitoniyaIkibasikiInyeperisiIgifinilandeInyefaroyi" + - "ziIgifaransaIgifiriziyaniIkirilandiIkigaluwa cy’IgisweduwaIkigalisiy" + - "aInyaguwaraniInyegujaratiIgiheburayoIgihindiIgikorowasiyaIgihongiriy" + - "aIkinyarumeniyaUrurimi GahuzamiryangoIkinyendoziyaUruhuzandimiIgisil" + - "andeIgitaliyaniIkiyapaniInyejavaInyejeworujiyaIgikambodiyaIgikanadaI" + - "gikoreyaInyekuridishiInkerigiziIkilatiniIlingalaIkilawotiyaniIkilitu" + - "waniyaIkinyaletoviyaniIkimasedoniyaniIkimalayalamiIkimongoliIkimarat" + - "iIkimalayiIkimalitezeIkinepaliIkinerilandeInyenoruveji (Nyonorusiki)" + - "IkinoruvejiInyogusitaniInyoriyaIgipunjabiIgipoloneImpashitoIgiporutu" + - "galiIkinyarumaniyaIkirusiyaKinyarwandaIgisansikiriIgisindiInyesimpal" + - "ezeIgisilovakiIkinyasiloveniyaIgisomaliIcyalubaniyaIgiseribeInyeseso" + - "toInyesudaniIgisuweduwaIgiswahiliIgitamiliIgiteluguIgitayiInyatigiri" + - "nyaInyeturukimeniIgiturukiyaIkiwiguriIkinyayukereniInyeyuruduInyeyuz" + - "ubekiIkinyaviyetinamuInyehawusaInyeyidishiInyezuluIkinyafilipineInye" + - "kilingoniInyeporutigali (Brezili)Inyeporutigali (Igiporutigali)Inyes" + - "eribiya na Korowasiya", - []uint16{ // 607 elements + { // mgh + "IkanImhariIarabuIbelausiIbulgariaIbanglaIchekiIjerimaniIgirikiIngilishiI" + + "hispaniolaIajemiIfaransaIhausaIhindiIhungariIgboItalianoIjapaniIjava" + + "IkambodiaIkoreaImalesiaIburmaInepaliIholanziIpunjabiIpolandiNrenoIro" + + "maniaIrisiInyarandaIsomaliIswidiItamilItailandiIturukiIukranIhurduIv" + + "yetinamuIyorubaIchinaIzuluMakua", + []uint16{ // 416 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0018, 0x0024, 0x0024, - 0x002c, 0x0036, 0x0036, 0x0036, 0x0046, 0x0046, 0x0053, 0x0063, - 0x0063, 0x0063, 0x006d, 0x006d, 0x0079, 0x0085, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0097, 0x0097, 0x0097, 0x00a0, 0x00aa, - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ba, 0x00c5, 0x00d2, 0x00df, - 0x00eb, 0x00f4, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x0116, 0x0120, - 0x012d, 0x0137, 0x0150, 0x015b, 0x0167, 0x0173, 0x0173, 0x0173, - 0x017e, 0x0186, 0x0186, 0x0193, 0x0193, 0x019f, 0x01ad, 0x01ad, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0021, + 0x0021, 0x0021, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x0037, 0x0037, 0x0037, 0x0037, 0x003e, 0x0047, 0x0047, 0x0052, + 0x0052, 0x0052, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, + 0x0066, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0074, 0x0074, // Entry 40 - 7F - 0x01c3, 0x01d0, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01e6, - 0x01f1, 0x01f1, 0x01fa, 0x0202, 0x0210, 0x0210, 0x0210, 0x0210, - 0x0210, 0x0210, 0x021c, 0x0225, 0x022e, 0x022e, 0x022e, 0x023b, - 0x023b, 0x023b, 0x0245, 0x024e, 0x024e, 0x024e, 0x024e, 0x0256, - 0x0263, 0x0270, 0x0270, 0x0280, 0x0280, 0x0280, 0x0280, 0x028f, - 0x029c, 0x02a6, 0x02af, 0x02b8, 0x02c3, 0x02c3, 0x02c3, 0x02c3, - 0x02cc, 0x02cc, 0x02d8, 0x02f2, 0x02fd, 0x02fd, 0x02fd, 0x02fd, - 0x0309, 0x0309, 0x0309, 0x0311, 0x0311, 0x031b, 0x031b, 0x0324, + 0x0074, 0x0074, 0x0074, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, + 0x0080, 0x0080, 0x0087, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, + 0x008c, 0x008c, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b, + 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, + 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, + 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, + 0x00b0, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, + 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c8, // Entry 80 - BF - 0x032d, 0x033a, 0x033a, 0x033a, 0x033a, 0x0348, 0x0351, 0x035c, - 0x0368, 0x0368, 0x0370, 0x0370, 0x0370, 0x037d, 0x0388, 0x0398, - 0x0398, 0x0398, 0x03a1, 0x03ad, 0x03b6, 0x03b6, 0x03c0, 0x03ca, - 0x03d5, 0x03df, 0x03e8, 0x03f1, 0x03f1, 0x03f8, 0x0405, 0x0413, - 0x0413, 0x0413, 0x041e, 0x041e, 0x041e, 0x041e, 0x0427, 0x0435, - 0x043f, 0x044b, 0x044b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0465, - 0x0470, 0x0470, 0x0470, 0x0470, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d5, 0x00da, 0x00e3, + 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, + 0x00e3, 0x00e3, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + 0x00f0, 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff, + 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010c, + 0x0112, 0x0112, 0x0112, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x0123, 0x0123, 0x0129, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, // Entry C0 - FF - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, // Entry 100 - 13F - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, - 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, // Entry 140 - 17F - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, // Entry 180 - 1BF - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - // Entry 1C0 - 1FF - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - // Entry 200 - 23F - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - // Entry 240 - 27F - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, - 0x0493, 0x0493, 0x0493, 0x04ab, 0x04c9, 0x04c9, 0x04e3, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x0133, }, }, - { // rwk - "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + - "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + - "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + - "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + - "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + - "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKir" + - "uwa", - []uint16{ // 484 elements + { // mgo + "metaʼngam tisɔʼ", + []uint16{ // 559 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, - 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, - 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, - 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 180 - 1BF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, // Entry 1C0 - 1FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x019f, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + // Entry 200 - 23F + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0012, }, }, - { // sah - "АбхаастыыАппырыкааныстыыАраабтыыАдьырбайдьаанныыБөлөрүүстүүБулҕаардыыБен" + - "галлыыТибиэттииБосныйалыыКаталаанныыЧиэскэйдииДаатскайдыыНиэмэстииГ" + - "ириэктииАҥылычаанныыЫспаанныыЭстиэнийэлииПиэрсийэлииПииннииПырансуу" + - "стууБэҥгиэрдииЭрмээннииЫтаалыйалыыДьоппуоннууГурусууннууХаһаахтыыКэ" + - "риэйдииКыргыстыыЛатыынныыМоҕуоллууНьыпааллыыПандьаабтыыПортугааллыы" + - "РумыынныыНууччалыыСловаактыыАлбаанскайдыыТамыллыыТөлүгүлүүТадьыыкты" + - "ыУйгуурдууУкрайыыньыстыыҮзбиэктииКытайдыыЗуулулууПилипиинниисаха ты" + - "ла", - []uint16{ // 486 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0012, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0060, 0x0060, 0x0076, 0x008a, - 0x008a, 0x008a, 0x009c, 0x00ae, 0x00ae, 0x00c2, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x0102, - 0x0114, 0x0114, 0x0114, 0x0114, 0x0126, 0x013e, 0x013e, 0x0150, - 0x0168, 0x0168, 0x017e, 0x017e, 0x018c, 0x018c, 0x018c, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b8, 0x01ca, 0x01ca, - // Entry 40 - 7F - 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, - 0x01e0, 0x01e0, 0x01f6, 0x01f6, 0x020c, 0x020c, 0x020c, 0x020c, - 0x021e, 0x021e, 0x021e, 0x021e, 0x0230, 0x0230, 0x0230, 0x0230, - 0x0230, 0x0230, 0x0242, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, - 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, - 0x0254, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, - 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, - 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x0290, 0x0290, 0x0290, - // Entry 80 - BF - 0x0290, 0x02a8, 0x02a8, 0x02a8, 0x02a8, 0x02ba, 0x02cc, 0x02cc, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02e0, 0x02e0, - 0x02e0, 0x02e0, 0x02e0, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa, - 0x02fa, 0x02fa, 0x030a, 0x031c, 0x0330, 0x0330, 0x0330, 0x0330, - 0x0330, 0x0330, 0x0330, 0x0330, 0x0330, 0x0330, 0x0342, 0x035e, - 0x035e, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0380, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - // Entry C0 - FF - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - // Entry 100 - 13F - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, + { // mk + mkLangStr, + mkLangIdx, + }, + { // ml + mlLangStr, + mlLangIdx, + }, + { // mn + mnLangStr, + mnLangIdx, + }, + { // mr + mrLangStr, + mrLangIdx, + }, + { // ms + msLangStr, + msLangIdx, + }, + { // mt + "AfarAbkażjanAvestanAfrikansAkanAmharikuAragoniżGħarbiAssamiżAvarikAymara" + + "AżerbajġaniBashkirBelarussuBulgaruBislamaBambaraBengaliTibetjanBreto" + + "nBożnijakuKatalanChechenChamorroKorsikuCreeĊekSlaviku tal-KnisjaChuv" + + "ashWelshDaniżĠermaniżDivehiDzongkhaEweGriegIngliżEsperantoSpanjolEst" + + "onjanBaskPersjanFulahFinlandiżFiġjanFaroeseFranċiżFrisian tal-Punent" + + "IrlandiżGalliku SkoċċiżGaliċjanGuaraniGujaratiManxHausaEbrajkHindiHi" + + "ri MotuKroatCreole ta’ HaitiUngeriżArmenHereroInterlinguaIndoneżjanI" + + "nterlingueIgboSichuan YiInupjakIdoIżlandiżTaljanInuktitutĠappuniżĠav" + + "aniżĠorġjanKongoKikujuKuanyamaKażakKalallisutKhmerKannadaKoreanKanur" + + "iKashmiriKurdKomiKornikuKirgiżLatinLussemburgiżGandaLimburgishLingal" + + "janLaosjanLitwanLuba-KatangaLatvjanMalagasyMarshalljaniżMaoriMaċedon" + + "janMalayalamMongoljanMarathiMalayMaltiBurmiżNaurujanNdebeli tat-Tram" + + "untanaNepaliżNdongaOlandiżNinorsk NorveġiżBokmal NorveġiżNdebele tan" + + "-NofsinharNavajoNyanjaOċċitanOġibwaOromoOdiaOssettikuPunjabiPaliPoll" + + "akkPashtoPortugiżQuechuaRomanzRundiRumenRussuKinjarwandaSanskritSard" + + "injanSindhiSami tat-TramuntanaSangoSinhalaSlovakkSlovenSamoanShonaSo" + + "maliAlbaniżSerbSwatiSoto tan-NofsinharSundaniżŻvezjaSwahiliTamilTelu" + + "guTajikTajlandiżTigrinyaTurkmeniTswanaTonganTorkTsongaTatarTaħitjanU" + + "yghurUkrenUrduUzbekVendaVjetnamiżVolapukWalloonWolofXhosaYiddishYoru" + + "baZhuangĊiniżZuluAċiniżAkoliAdangmeAdygheAfriħiliAghemAjnuAkkadjenAl" + + "eutAltai tan-NofsinharIngliż AntikAngikaAramajkMapucheArapahoArawakA" + + "suAsturianAwadhiBaluċiBaliniżBasaBejaBembaBenaBhojpuriBikolBiniSiksi" + + "kaBrajBodoBurjatBugineseBlinKaddoKaribAtsamCebuanoChigaChibchaChagat" + + "aiĊukiżMariChinook JargonChoctawĊipewjanCherokeeCheyenneKurd Ċentral" + + "iKoptikuTork tal-KrimeaFranċiż tas-Seselwa CreoleKashubianDakotaDarg" + + "waTaitaDelawerjanSlavDogribDinkaZarmaDogriSorbjan KomuniDwalaOlandiż" + + " MedjevaliJola-FonyiDyulaDazagaEmbuEfikEġizzjan (Antik)EkajukElamitI" + + "ngliż MedjevaliEwondoFangFilippinFonFranċiż MedjevaliFranċiż AntikFr" + + "ijuljanGaGayoGbayaGeezGilbertjanĠermaniż Medjevali PulitĠermaniż Ant" + + "ik, PulitGondiGorontaloGotikuGreboGrieg, AntikĠermaniż tal-Iżvizzera" + + "GusiiGwiċinHaidaĦawajjanHiligaynonHittiteHmongSorbjan ta’ FuqHupaIba" + + "nIbibioIlokoIngushLojbanNgombaMachameLhudi-PersjanLhudi-GħarbiKara-K" + + "alpakKabuljanKachinJjuKambaKawiKabardianTyapMakondeCape VerdjanKoroK" + + "hasiKotaniżKoyra ChiiniKakoKalenjinKimbunduKonkaniKosrejanKpelleKara" + + "chay-BalkarKareljanKuruxShambalaBafiaKolonjanKumykKutenajLadinoLangi" + + "LahndaLambaLeżgjanLakotaMongoLożiLuri tat-TramuntanaLuba-LuluwaLuise" + + "noLundaLuoMizoLuyiaMaduriżMagahiMaithiliMakasarMandingoMasaiMokshaMa" + + "ndarMendeMeruMorisyenIrlandiż MedjevaliMakhuwa-MeettoMetàMicmacMinan" + + "gkabauManchuManipuriMohawkMossiMundangLingwi DiversiKriekMirandiżMar" + + "wariErzyaMazanderaniNaplitanNamaĠermaniż KomuniNewariNijasNiueanKwas" + + "ioNgiemboonNogaiNors AntikN’KoSoto tat-TramuntanaNuerNewari Klassiku" + + "NjamweżiNyankoleNyoroNzimaOsaġjanTork OttomanPangasinjanPahlaviPampa" + + "ngaPapiamentoPalawjanPidgin NiġerjanPersjan AntikFeniċjuPonpejanPrus" + + "suProvenzal AntikK’iche’RaġastaniRapanwiRarotonganiRomboRomaneskArom" + + "anjanRwaSandaweSakhaSamaritan AramajkSamburuSasakSantaliNgambaySangu" + + "SqalliSkoċċiżSenaSelkupKoyraboro SenniIrlandiż AntikTachelhitShanSid" + + "amoSami tan-NofsinharLule SamiInari SamiSkolt SamiSoninkeSogdienSran" + + "an TongoSererSahoSukumaSusuSumerjanKomorjanSirjanTimneTesoTerenoTetu" + + "mTigreTivTokelauKlingonTlingitTamashekNyasa TongaTok PisinTarokoTsim" + + "shianTumbukaTuvaluTasawaqTuvinjanTamazight tal-Atlas ĊentraliUdmurtU" + + "garitikuUmbunduRootVaiVotikVunjoWalserWalamoWarayWashoKalmykSogaYaoY" + + "apeseYangbenYembaKantoniżZapotecZenagaTamazight Standard tal-MarokkZ" + + "uniBla kontenut lingwistikuZazaGħarbi Standard ModernĠermaniż Awstri" + + "jakĠermaniż ŻvizzeruIngliż AwstraljanIngliż KanadiżIngliż Brittaniku" + + "Ingliż AmerikanSpanjol Latin AmerikanSpanjol EwropewSpanjol tal-Mess" + + "ikuFranċiż KanadiżFranċiż ŻvizzeruSassonu KomuniFjammingPortugiż tal" + + "-BrażilPortugiż EwropewMoldovanSerbo-KroatSwahili tar-Repubblika Dem" + + "okratika tal-KongoĊiniż SimplifikatĊiniż Tradizzjonali", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000d, 0x0014, 0x001c, 0x0020, 0x0028, 0x0031, + 0x0038, 0x0040, 0x0046, 0x004c, 0x0059, 0x0060, 0x0069, 0x0070, + 0x0077, 0x007e, 0x0085, 0x008d, 0x0093, 0x009d, 0x00a4, 0x00ab, + 0x00b3, 0x00ba, 0x00be, 0x00c2, 0x00d4, 0x00db, 0x00e0, 0x00e6, + 0x00f0, 0x00f6, 0x00fe, 0x0101, 0x0106, 0x010d, 0x0116, 0x011d, + 0x0125, 0x0129, 0x0130, 0x0135, 0x013f, 0x0146, 0x014d, 0x0156, + 0x0168, 0x0171, 0x0183, 0x018c, 0x0193, 0x019b, 0x019f, 0x01a4, + 0x01aa, 0x01af, 0x01b8, 0x01bd, 0x01cf, 0x01d7, 0x01dc, 0x01e2, + // Entry 40 - 7F + 0x01ed, 0x01f8, 0x0203, 0x0207, 0x0211, 0x0218, 0x021b, 0x0225, + 0x022b, 0x0234, 0x023e, 0x0247, 0x0250, 0x0255, 0x025b, 0x0263, + 0x0269, 0x0273, 0x0278, 0x027f, 0x0285, 0x028b, 0x0293, 0x0297, + 0x029b, 0x02a2, 0x02a9, 0x02ae, 0x02bb, 0x02c0, 0x02ca, 0x02d3, + 0x02da, 0x02e0, 0x02ec, 0x02f3, 0x02fb, 0x0309, 0x030e, 0x0319, + 0x0322, 0x032b, 0x0332, 0x0337, 0x033c, 0x0343, 0x034b, 0x0361, + 0x0369, 0x036f, 0x0377, 0x0389, 0x039a, 0x03af, 0x03b5, 0x03bb, + 0x03c4, 0x03cb, 0x03d0, 0x03d4, 0x03dd, 0x03e4, 0x03e8, 0x03ef, + // Entry 80 - BF + 0x03f5, 0x03fe, 0x0405, 0x040b, 0x0410, 0x0415, 0x041a, 0x0425, + 0x042d, 0x0436, 0x043c, 0x044f, 0x0454, 0x045b, 0x0462, 0x0468, + 0x046e, 0x0473, 0x0479, 0x0481, 0x0485, 0x048a, 0x049c, 0x04a5, + 0x04ac, 0x04b3, 0x04b8, 0x04be, 0x04c3, 0x04cd, 0x04d5, 0x04dd, + 0x04e3, 0x04e9, 0x04ed, 0x04f3, 0x04f8, 0x0501, 0x0507, 0x050c, + 0x0510, 0x0515, 0x051a, 0x0524, 0x052b, 0x0532, 0x0537, 0x053c, + 0x0543, 0x0549, 0x054f, 0x0556, 0x055a, 0x0562, 0x0567, 0x056e, + 0x0574, 0x0574, 0x057d, 0x0582, 0x0586, 0x058e, 0x058e, 0x0593, + // Entry C0 - FF + 0x0593, 0x05a6, 0x05b3, 0x05b9, 0x05c0, 0x05c7, 0x05c7, 0x05ce, + 0x05ce, 0x05ce, 0x05d4, 0x05d4, 0x05d4, 0x05d7, 0x05d7, 0x05df, + 0x05df, 0x05e5, 0x05ec, 0x05f4, 0x05f4, 0x05f8, 0x05f8, 0x05f8, + 0x05f8, 0x05fc, 0x0601, 0x0601, 0x0605, 0x0605, 0x0605, 0x0605, + 0x060d, 0x0612, 0x0616, 0x0616, 0x0616, 0x061d, 0x061d, 0x061d, + 0x0621, 0x0621, 0x0625, 0x0625, 0x062b, 0x0633, 0x0633, 0x0637, + 0x0637, 0x063c, 0x0641, 0x0641, 0x0646, 0x064d, 0x0652, 0x0659, + 0x0661, 0x0668, 0x066c, 0x067a, 0x0681, 0x068a, 0x0692, 0x069a, + // Entry 100 - 13F + 0x06a8, 0x06af, 0x06af, 0x06be, 0x06da, 0x06e3, 0x06e9, 0x06ef, + 0x06f4, 0x06fe, 0x0702, 0x0708, 0x070d, 0x0712, 0x0717, 0x0725, + 0x0725, 0x072a, 0x073c, 0x0746, 0x074b, 0x0751, 0x0755, 0x0759, + 0x0759, 0x076a, 0x0770, 0x0776, 0x0787, 0x0787, 0x078d, 0x078d, + 0x0791, 0x0799, 0x0799, 0x079c, 0x079c, 0x07af, 0x07be, 0x07be, + 0x07be, 0x07be, 0x07c7, 0x07c9, 0x07c9, 0x07c9, 0x07cd, 0x07d2, + 0x07d2, 0x07d6, 0x07e0, 0x07e0, 0x07fa, 0x0811, 0x0811, 0x0816, + 0x081f, 0x0825, 0x082a, 0x0836, 0x084f, 0x084f, 0x084f, 0x0854, // Entry 140 - 17F - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, + 0x085b, 0x0860, 0x0860, 0x0869, 0x0869, 0x0873, 0x087a, 0x087f, + 0x0890, 0x0890, 0x0894, 0x0898, 0x089e, 0x08a3, 0x08a9, 0x08a9, + 0x08a9, 0x08af, 0x08b5, 0x08bc, 0x08c9, 0x08d6, 0x08d6, 0x08e1, + 0x08e9, 0x08ef, 0x08f2, 0x08f7, 0x08fb, 0x0904, 0x0904, 0x0908, + 0x090f, 0x091b, 0x091b, 0x091f, 0x091f, 0x0924, 0x092c, 0x0938, + 0x0938, 0x0938, 0x093c, 0x0944, 0x094c, 0x094c, 0x0953, 0x095b, + 0x0961, 0x0970, 0x0970, 0x0970, 0x0978, 0x097d, 0x0985, 0x098a, + 0x0992, 0x0997, 0x099e, 0x09a4, 0x09a9, 0x09af, 0x09b4, 0x09bc, // Entry 180 - 1BF - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, + 0x09bc, 0x09bc, 0x09bc, 0x09c2, 0x09c2, 0x09c7, 0x09cc, 0x09df, + 0x09df, 0x09ea, 0x09f1, 0x09f6, 0x09f9, 0x09fd, 0x0a02, 0x0a02, + 0x0a02, 0x0a0a, 0x0a0a, 0x0a10, 0x0a18, 0x0a1f, 0x0a27, 0x0a2c, + 0x0a2c, 0x0a32, 0x0a38, 0x0a3d, 0x0a41, 0x0a49, 0x0a5c, 0x0a6a, + 0x0a6f, 0x0a75, 0x0a80, 0x0a86, 0x0a8e, 0x0a94, 0x0a99, 0x0a99, + 0x0aa0, 0x0aae, 0x0ab3, 0x0abc, 0x0ac3, 0x0ac3, 0x0ac3, 0x0ac8, + 0x0ad3, 0x0ad3, 0x0adb, 0x0adf, 0x0af0, 0x0af6, 0x0afb, 0x0b01, + 0x0b01, 0x0b07, 0x0b10, 0x0b15, 0x0b1f, 0x0b1f, 0x0b25, 0x0b38, // Entry 1C0 - 1FF - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, - 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03b7, + 0x0b3c, 0x0b4b, 0x0b54, 0x0b5c, 0x0b61, 0x0b66, 0x0b6e, 0x0b7a, + 0x0b85, 0x0b8c, 0x0b94, 0x0b9e, 0x0ba6, 0x0ba6, 0x0bb6, 0x0bb6, + 0x0bb6, 0x0bc3, 0x0bc3, 0x0bcb, 0x0bcb, 0x0bcb, 0x0bd3, 0x0bd9, + 0x0be8, 0x0bf3, 0x0bf3, 0x0bfd, 0x0c04, 0x0c0f, 0x0c0f, 0x0c0f, + 0x0c14, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c25, 0x0c28, 0x0c2f, + 0x0c34, 0x0c45, 0x0c4c, 0x0c51, 0x0c58, 0x0c58, 0x0c5f, 0x0c64, + 0x0c6a, 0x0c74, 0x0c74, 0x0c74, 0x0c74, 0x0c78, 0x0c78, 0x0c7e, + 0x0c8d, 0x0c9c, 0x0c9c, 0x0ca5, 0x0ca9, 0x0ca9, 0x0caf, 0x0caf, + // Entry 200 - 23F + 0x0caf, 0x0cc1, 0x0cca, 0x0cd4, 0x0cde, 0x0ce5, 0x0cec, 0x0cf8, + 0x0cfd, 0x0d01, 0x0d01, 0x0d07, 0x0d0b, 0x0d13, 0x0d1b, 0x0d1b, + 0x0d21, 0x0d21, 0x0d21, 0x0d26, 0x0d2a, 0x0d30, 0x0d35, 0x0d3a, + 0x0d3d, 0x0d44, 0x0d44, 0x0d4b, 0x0d52, 0x0d52, 0x0d5a, 0x0d65, + 0x0d6e, 0x0d6e, 0x0d74, 0x0d74, 0x0d7d, 0x0d7d, 0x0d84, 0x0d8a, + 0x0d91, 0x0d99, 0x0db6, 0x0dbc, 0x0dc5, 0x0dcc, 0x0dd0, 0x0dd3, + 0x0dd3, 0x0dd3, 0x0dd3, 0x0dd3, 0x0dd8, 0x0dd8, 0x0ddd, 0x0de3, + 0x0de9, 0x0dee, 0x0df3, 0x0df3, 0x0df3, 0x0df9, 0x0df9, 0x0dfd, + // Entry 240 - 27F + 0x0e00, 0x0e06, 0x0e0d, 0x0e12, 0x0e12, 0x0e1b, 0x0e22, 0x0e22, + 0x0e22, 0x0e28, 0x0e45, 0x0e49, 0x0e61, 0x0e65, 0x0e7c, 0x0e7c, + 0x0e90, 0x0ea4, 0x0eb6, 0x0ec6, 0x0ed8, 0x0ee8, 0x0efe, 0x0f0d, + 0x0f20, 0x0f20, 0x0f32, 0x0f45, 0x0f53, 0x0f5b, 0x0f70, 0x0f81, + 0x0f89, 0x0f94, 0x0fc0, 0x0fd3, 0x0fe8, }, }, - { // saq - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKisampur", - []uint16{ // 488 elements + { // mua + "akaŋamharikarabiyabelarussiyabulgariabengaliasyekyagermaŋgrekzah Anglofo" + + "ŋEspaniyaPersiazah sǝr Franssǝhaussahindihungariyaindonesiyaigboita" + + "liyazah sǝr JapoŋjavaniyakmerkoreamalasiyabirmaniaNepaliyazah sǝr ma" + + " kasǝŋPǝnjabiPoloniyaZah sǝr PortugalRomaniyaRussiyaZah sǝr RwandaSo" + + "maliyaSwediaTamulthTurkUkrainiaUrduVietnamiyaYorubazah SyiŋZuluMUNDA" + + "Ŋ", + []uint16{ // 425 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000c, 0x000c, + 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0026, + 0x0026, 0x0026, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x003b, 0x003b, 0x003b, 0x003b, 0x003f, 0x004c, 0x004c, 0x0054, + 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0071, + 0x0071, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, 0x007f, 0x007f, // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + 0x007f, 0x0089, 0x0089, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, + 0x0094, 0x0094, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, + 0x00ab, 0x00ab, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00c4, + 0x00cc, 0x00cc, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, + 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00ef, // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x00ef, 0x0100, 0x0100, 0x0100, 0x0100, 0x0108, 0x010f, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, + 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, 0x0133, 0x0133, 0x0133, + 0x0133, 0x0133, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x013f, + 0x0143, 0x0143, 0x0143, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, + 0x014d, 0x0153, 0x0153, 0x015c, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, // Entry 180 - 1BF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 1C0 - 1FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, + 0x0167, }, }, - { // sbp - "IshiyakaniIshiyamuhaliIshiyalabuIshibelalusiIshibulugaliaIshibangilaIshi" + - "shekiIshijelumaniIshigilikiIshingelesaIshihisipaniyaIshiajemiIshifal" + - "ansaIshihawusaIshihindiIshihungaliIshihindonesiaIshihigiboIshihitali" + - "yanoIshijapaniIshijavaIshikambodiaIshikoleyaIshimalesiyaIshibulumaIs" + - "hinepaliIshiholansiIshipunjabiIshipolandiIshilenoIshilomaniyaIshilus" + - "iIshinyalwandaIshisomaliIshiswidiIshitamiliIshitayilandiIshitulukiIs" + - "hiyukilaniyaIshiwuludiIshivietinamuIshiyolubaIshishinaIshisuluIshisa" + - "ngu", - []uint16{ // 493 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002c, 0x0039, - 0x0039, 0x0039, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006e, 0x006e, 0x007c, - 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a, - 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00ae, 0x00ae, 0x00ae, - // Entry 40 - 7F - 0x00ae, 0x00bc, 0x00bc, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00d4, 0x00d4, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00f2, 0x00f2, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0112, 0x0112, 0x0112, - 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0132, 0x0132, 0x013d, - // Entry 80 - BF - 0x013d, 0x0145, 0x0145, 0x0145, 0x0145, 0x0151, 0x0159, 0x0166, - 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0166, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, - 0x0179, 0x0179, 0x0183, 0x0183, 0x0183, 0x0190, 0x0190, 0x0190, - 0x0190, 0x0190, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a8, - 0x01b2, 0x01b2, 0x01b2, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, - 0x01bf, 0x01c9, 0x01c9, 0x01d2, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry C0 - FF - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 100 - 13F - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 140 - 17F - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 180 - 1BF - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 1C0 - 1FF - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01e3, - }, + { // my + myLangStr, + myLangIdx, }, - { // se - "afrikánsagiellaaragoniagiellaarábagiellavilges-ruoššagiellabulgáriagiell" + - "abengalgiellatibetagiellabretonagiellabosniagiellakatalánagiellacors" + - "icagiellačeahkagiellakymragielladánskkagielladuiskkagielladivehigiel" + - "ladzongkhagiellagreikkagiellaeaŋgalsgiellaspánskkagiellaesttegiellap" + - "ersijagiellasuomagiellafidjigiellafearagiellafránskkagiellaoarjifrii" + - "sagiellaiirragiellagujaratagiellamanksgiellahaussagiellahindigiellak" + - "roátiagiellahaitigiellaungárgiellaarmeenagiellaindonesiagiellaislánd" + - "dagiellaitáliagiellajapánagiellajavagiellageorgiagiellakazakgiellaka" + - "mbodiagiellakoreagiellakurdigiellakomigiellakornagiellaláhtengiellal" + - "uxemburggagiellalaogiellaliettuvagiellalátviagiellamaorigiellamakedo" + - "niagiellamongoliagiellamaltagiellaburmagiellanepaligiellahollánddagi" + - "ellaođđadárogiellagirjedárogiellaoksitánagiellapanjabigiellapolskkag" + - "iellaportugálagiellaromanšgiellaromániagiellaruoššagiellasardigiella" + - "davvisámegiellaslovákiagiellaslovenagiellasamoagiellaalbánagiellaser" + - "biagiellaruoŧagiellaŧaigielladurkagiellatahitigiellaukrainagiellaurd" + - "ugiellavietnamgiellavallonagiellakiinnágiellaacehgiellaboares eaŋgal" + - "asgiellaasturiagiellamarigiellafilippiinnagiellahawaiigiellagárjilgi" + - "ellamokšagiellaersagiellasisiliagiellaselkupagiellalullisámegiellaju" + - "levsámegiellaanárašgiellanuortalašgiellashimaorigiellaudmurtagiellad" + - "ovdameahttun giellakantongiellaserbokroatiagiellaálki kiinágiellaárb" + - "evirolaš kiinnágiella", - []uint16{ // 610 elements + { // mzn + "آبخازیآفریکانسآکانامهریعربیآسامیآذری ِترکیباشقیریبلاروسیبلغاریبامباراییب" + + "نگالیتبتیبرِتونیبوسنیاییکاتالونیچچنیکورسیکانچکیچوواشیولزیدانمارکیآل" + + "مانیدزونگخااوه\u200cیییونانیانگلیسیاسپرانتوایسپانیولیاستونیاییباسکی" + + "فارسیفینیشفیجیاییفاروییفرانسویغربی فیریزیایریشگالیکگورانیگجراتیمانک" + + "سهوساعبریهندیکرواتیهائتیاییمجاریارمنیاندونزیاییایگبوسیچوئان ییایسلن" + + "دیایتالیاییانوکتیتوتجاپونیجاواییگرجیکیکویوقزاقیکالائلیسوتخمریکانّاد" + + "اکُره\u200cییکشمیریکوردیکورنیشقرقیزیلاتینلوکزامبورگیگاندالینگالالائ" + + "وییلتونیاییلوبا-کاتانگالاتویاییمالاگاسیمائوریمقدونیمالایالاممغولیما" + + "راتیمالاییمالتیبرمه\u200cییشمالی ندبلهنپالیهلندینروژی نینورسکنروژی " + + "بوکمالاورومواوریاپنجابیلهستونیپشتوپرتغالیقوئچوئارومانشروندیرومانیای" + + "یروسیکنیاروآنداییسانسکریتسندیشمالی سامیسانگوسینهالااسلواکیاسلوونیای" + + "یشوناسومالیاییآلبانیاییصربیسوندانسیسوئدیسواحیلیتامیلیتلوگوییتاجیکیت" + + "اییتیگرینیاییترکمونیتونگانیترکیتاتاریئوغوریاوکراینیاردوازبکیویتنامی" + + "وولفیخوسایوروباچینیزولوآقمماپوچهآسوبمباییبناییغربی بلوچیبدوییچیگاچر" + + "وکیاییمیونی کوردیتایتازارماییپایین صربیدوئالاییجولا-فونیامبوفیلیپین" + + "وگاگائوزیسوییس آلمانیگوسیهاواییاییبالایی صربینگومباماچامهقبایلیکامب" + + "اییماکوندهکیپ وُردیکویرا چیینیکالنجینکومی-پرمیاککونکانیشامبالابافیا" + + "ییلانگیلاکوتاشمالی لُریلوئولوییاماساییمِروییموریسینماخوئا-میتومِتاء" + + "موهاکموندانگمازرونیناماپایین آلمانیکوئاسیونئکونوئرنیانکولهکئیچه" + + "\u200cئیرومبوروآییسامبوروسانگووجنوبی کردیسِناییکویرابورا سنیتاچلهیتج" + + "نوبی سامیلوله سامیایناری سامیسکولت سامیتسوییتاساواقیمیونی اطلس تامز" + + "یقینشناسی\u200cیه زوونواییوونجوییوالرپیریسوگامراکش ِاستاندارد ِتاما" + + "زیقتیاین زوون بشناسی\u200cیه نیّهمدرن استاندارد عربیجنوبی آذری ترکی" + + "اتریش ِآلمانیسوییس ِآلمانیاسترالیای ِانگلیسیکانادای ِانگلیسیبریتیش " + + "انگلیسیامریکن انگلیسیجنوبی آمریکای ِایسپانیولیاروپای ِایسپانیولیمکز" + + "یک ِایسپانیولیکانادای ِفرانسویسوییس ِفرانسویپایین ساکسونیفلمیشبرزیل" + + " ِپرتغالیاروپای ِپرتغالیمولداویکنگو سواحیلیساده چینیسنتی چینی", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x001e, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x003f, 0x004e, - 0x004e, 0x004e, 0x005a, 0x0066, 0x0073, 0x007f, 0x008e, 0x008e, - 0x008e, 0x009b, 0x009b, 0x00a8, 0x00a8, 0x00a8, 0x00b3, 0x00c1, - 0x00ce, 0x00da, 0x00e8, 0x00e8, 0x00f5, 0x0103, 0x0103, 0x0112, - 0x011d, 0x011d, 0x012a, 0x012a, 0x0135, 0x0140, 0x014b, 0x015a, - 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0184, 0x018f, 0x019b, - 0x019b, 0x01a6, 0x01a6, 0x01b4, 0x01bf, 0x01cb, 0x01d8, 0x01d8, + 0x0000, 0x0000, 0x000c, 0x000c, 0x001c, 0x0024, 0x002e, 0x002e, + 0x0036, 0x0040, 0x0040, 0x0040, 0x0053, 0x0061, 0x006f, 0x007b, + 0x007b, 0x008d, 0x0099, 0x00a1, 0x00af, 0x00bf, 0x00cf, 0x00d7, + 0x00d7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00f9, 0x0101, 0x0111, + 0x011d, 0x011d, 0x012b, 0x0138, 0x0144, 0x0152, 0x0162, 0x0176, + 0x0188, 0x0192, 0x019c, 0x019c, 0x01a6, 0x01b4, 0x01c0, 0x01ce, + 0x01e3, 0x01ed, 0x01ed, 0x01f7, 0x0203, 0x020f, 0x0219, 0x0221, + 0x0229, 0x0231, 0x0231, 0x023d, 0x024d, 0x0257, 0x0261, 0x0261, // Entry 40 - 7F - 0x01d8, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01f6, - 0x0203, 0x0203, 0x0210, 0x021a, 0x0227, 0x0227, 0x0227, 0x0227, - 0x0232, 0x0232, 0x0240, 0x0240, 0x024b, 0x024b, 0x024b, 0x0256, - 0x0260, 0x026b, 0x026b, 0x0278, 0x0289, 0x0289, 0x0289, 0x0289, - 0x0292, 0x02a0, 0x02a0, 0x02ad, 0x02ad, 0x02ad, 0x02b8, 0x02c7, - 0x02c7, 0x02d5, 0x02d5, 0x02d5, 0x02e0, 0x02eb, 0x02eb, 0x02eb, - 0x02f7, 0x02f7, 0x0307, 0x0318, 0x0328, 0x0328, 0x0328, 0x0328, - 0x0337, 0x0337, 0x0337, 0x0337, 0x0337, 0x0344, 0x0344, 0x0351, + 0x0261, 0x0275, 0x0275, 0x027f, 0x0292, 0x0292, 0x0292, 0x02a0, + 0x02b2, 0x02c4, 0x02d0, 0x02dc, 0x02e4, 0x02e4, 0x02f0, 0x02f0, + 0x02fa, 0x030e, 0x0316, 0x0324, 0x0333, 0x0333, 0x033f, 0x0349, + 0x0349, 0x0355, 0x0361, 0x036b, 0x0381, 0x038b, 0x038b, 0x0399, + 0x03a5, 0x03b5, 0x03cc, 0x03dc, 0x03ec, 0x03ec, 0x03f8, 0x0404, + 0x0416, 0x0420, 0x042c, 0x0438, 0x0442, 0x0451, 0x0451, 0x0466, + 0x0470, 0x0470, 0x047a, 0x0493, 0x04aa, 0x04aa, 0x04aa, 0x04aa, + 0x04aa, 0x04aa, 0x04b6, 0x04c0, 0x04c0, 0x04cc, 0x04cc, 0x04da, // Entry 80 - BF - 0x0351, 0x0361, 0x0361, 0x036e, 0x036e, 0x037c, 0x038a, 0x038a, - 0x038a, 0x0395, 0x0395, 0x03a5, 0x03a5, 0x03a5, 0x03b4, 0x03c1, - 0x03cc, 0x03cc, 0x03cc, 0x03d9, 0x03e5, 0x03e5, 0x03e5, 0x03e5, - 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03fb, 0x03fb, 0x03fb, - 0x03fb, 0x03fb, 0x0406, 0x0406, 0x0406, 0x0412, 0x0412, 0x041f, - 0x0429, 0x0429, 0x0429, 0x0436, 0x0436, 0x0443, 0x0443, 0x0443, - 0x0443, 0x0443, 0x0443, 0x0450, 0x0450, 0x045a, 0x045a, 0x045a, - 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, + 0x04e2, 0x04f0, 0x04fe, 0x050a, 0x0514, 0x0526, 0x052e, 0x0546, + 0x0556, 0x0556, 0x055e, 0x0571, 0x057b, 0x0589, 0x0597, 0x05ab, + 0x05ab, 0x05b3, 0x05c5, 0x05d7, 0x05df, 0x05df, 0x05df, 0x05ef, + 0x05f9, 0x0607, 0x0613, 0x0621, 0x062d, 0x0635, 0x0649, 0x0657, + 0x0657, 0x0665, 0x066d, 0x066d, 0x0679, 0x0679, 0x0685, 0x0695, + 0x069d, 0x06a7, 0x06a7, 0x06b5, 0x06b5, 0x06b5, 0x06bf, 0x06c7, + 0x06c7, 0x06d3, 0x06d3, 0x06db, 0x06e3, 0x06e3, 0x06e3, 0x06e3, + 0x06e3, 0x06e3, 0x06e3, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, // Entry C0 - FF - 0x045a, 0x045a, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, - 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, + 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06f5, 0x06f5, 0x06f5, + 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06fb, 0x06fb, 0x06fb, + 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, + 0x06fb, 0x06fb, 0x0707, 0x0707, 0x0711, 0x0711, 0x0711, 0x0724, + 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, + 0x0724, 0x0724, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, + 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x0736, 0x0736, + 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0746, 0x0746, // Entry 100 - 13F - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, + 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, + 0x0765, 0x0765, 0x0765, 0x0765, 0x0765, 0x0773, 0x0773, 0x0786, + 0x0786, 0x0796, 0x0796, 0x07a7, 0x07a7, 0x07a7, 0x07af, 0x07af, + 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, + 0x07af, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, + 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, + 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, + 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07e6, 0x07e6, 0x07e6, 0x07ee, // Entry 140 - 17F - 0x0498, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x07ee, 0x07ee, 0x07ee, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, + 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, + 0x0815, 0x0815, 0x0821, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, + 0x0839, 0x0839, 0x0839, 0x0847, 0x0847, 0x0847, 0x0847, 0x0847, + 0x0855, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x087b, + 0x087b, 0x087b, 0x087b, 0x0889, 0x0889, 0x089e, 0x08ac, 0x08ac, + 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ba, 0x08c8, + 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d2, 0x08d2, 0x08d2, 0x08d2, // Entry 180 - 1BF - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04bd, - 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, - 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, - 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x08d2, 0x08d2, 0x08d2, 0x08de, 0x08de, 0x08de, 0x08de, 0x08f1, + 0x08f1, 0x08f1, 0x08f1, 0x08f1, 0x08f9, 0x08f9, 0x0903, 0x0903, + 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x090f, + 0x090f, 0x090f, 0x090f, 0x090f, 0x091b, 0x0929, 0x0929, 0x093e, + 0x0948, 0x0948, 0x0948, 0x0948, 0x0948, 0x0952, 0x0952, 0x0952, + 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, + 0x096e, 0x096e, 0x096e, 0x0976, 0x098d, 0x098d, 0x098d, 0x098d, + 0x098d, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x09a3, 0x09a3, // Entry 1C0 - 1FF - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04d4, 0x04d4, 0x04d4, - 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04e1, 0x04e1, 0x04e1, 0x04e1, - 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04f1, 0x0501, + 0x09ab, 0x09ab, 0x09ab, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, + 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, + 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, + 0x09bb, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, + 0x09d6, 0x09d6, 0x09d6, 0x09d6, 0x09d6, 0x09d6, 0x09e0, 0x09e0, + 0x09e0, 0x09e0, 0x09ee, 0x09ee, 0x09ee, 0x09ee, 0x09ee, 0x09fa, + 0x09fa, 0x09fa, 0x09fa, 0x0a0d, 0x0a0d, 0x0a19, 0x0a19, 0x0a19, + 0x0a32, 0x0a32, 0x0a32, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, // Entry 200 - 23F - 0x050f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, - 0x051f, 0x051f, 0x051f, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x053a, 0x053a, 0x053a, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, - 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, - 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, + 0x0a40, 0x0a53, 0x0a64, 0x0a79, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, + 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, + 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a96, 0x0a96, 0x0a96, 0x0a96, + 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, + 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, + 0x0aa6, 0x0aa6, 0x0ac8, 0x0ac8, 0x0ac8, 0x0ac8, 0x0ae4, 0x0aec, + 0x0aec, 0x0aec, 0x0aec, 0x0aec, 0x0aec, 0x0aec, 0x0afa, 0x0afa, + 0x0afa, 0x0afa, 0x0afa, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b12, // Entry 240 - 27F - 0x054e, 0x054e, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, - 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, - 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, - 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x056c, 0x056c, - 0x057e, 0x0599, + 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, + 0x0b12, 0x0b12, 0x0b46, 0x0b46, 0x0b72, 0x0b72, 0x0b96, 0x0bb2, + 0x0bcb, 0x0be4, 0x0c07, 0x0c26, 0x0c41, 0x0c5c, 0x0c8c, 0x0caf, + 0x0cd0, 0x0cd0, 0x0cef, 0x0d0a, 0x0d23, 0x0d2d, 0x0d48, 0x0d65, + 0x0d73, 0x0d73, 0x0d8a, 0x0d9b, 0x0dac, }, }, - { // se-FI - "vilgesruoššagiellabengalagiellafižigiellaarmenagiellakazakhgiellakamboža" + - "giellanepalagiellapanjabagiellathaigiellavietnamagiellaačehgiellakom" + - "oragiellastandárda arábagiellanuortariikkalaš duiskkagiellašveicalaš" + - " duiskkagiellaaustrálialaš eaŋgalsgiellakanádalaš eaŋgalsgiellabriht" + - "talaš eaŋgalsgiellaamerihkálaš eaŋgalsgiellalatiinna-amerihkalaš spá" + - "nskkagiellaespánjalaš spánskkagiellameksikolaš spánskkagiellakanádal" + - "aš fránskkagiellašveicalaš fránskkagiellabelgialaš hollánddagiellabr" + - "asilialaš portugálagiellaportugálalaš portugálagiellamoldávialaš rom" + - "ániagiellaálkes kiinnágiella", - []uint16{ // 609 elements + { // naq + "AkangowabAmharicgowabArabiǁî gowabBelarusanǁî gowabBulgariaǁî gowabBenga" + + "liǁî gowabCzechǁî gowabDuitsXriksEngelsSpaansPersiaǁî gowabFransHaus" + + "agowabHindigowabHungariaǁî gowabIndonesiaǁî gowabIgbogowabItaliansJa" + + "paneesJavaneseKhmerǁî gowab, CentralKoreaǁî gowabMalayǁî gowabBurmes" + + "ǁî gowabNepalǁî gowabHollandsPunjabigowabPoleǁî gowabPortugeesRoman" + + "iaǁî gowabRussiaǁî gowabRwandaǁî gowabSomaliǁî gowabSwedeǁî gowabTam" + + "ilǁî gowabThaiǁî gowabTurkeǁî gowabUkrainiaǁî gowabUrduǁî gowabVietn" + + "amǁî gowabYorubabChineesǁî gowab, MandarinniZulubKhoekhoegowab", + []uint16{ // 436 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0038, 0x0038, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0037, 0x0049, + 0x0049, 0x0049, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x006e, 0x006e, 0x006e, 0x006e, 0x0073, 0x0079, 0x0079, 0x007f, + 0x007f, 0x007f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x009e, + 0x009e, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00ba, 0x00ba, 0x00ba, // Entry 40 - 7F - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x006b, 0x006b, 0x006b, - // Entry 80 - BF - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x00ba, 0x00cd, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, + 0x00de, 0x00de, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + 0x00ee, 0x00ee, 0x0106, 0x0106, 0x0115, 0x0115, 0x0115, 0x0115, + 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, + 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, + 0x0115, 0x0115, 0x0115, 0x0124, 0x0124, 0x0134, 0x0134, 0x0134, + 0x0143, 0x0143, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, + 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x0157, 0x0157, 0x0165, + // Entry 80 - BF + 0x0165, 0x016e, 0x016e, 0x016e, 0x016e, 0x017f, 0x018f, 0x019f, + 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, + 0x019f, 0x019f, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, + 0x01be, 0x01be, 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db, + 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01fc, + 0x020a, 0x020a, 0x020a, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, + 0x021b, 0x0222, 0x0222, 0x023f, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, // Entry C0 - FF - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, // Entry 100 - 13F - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, // Entry 140 - 17F - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, // Entry 180 - 1BF - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 1C0 - 1FF - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 200 - 23F - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - // Entry 240 - 27F - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x00b1, 0x00b1, 0x00cf, 0x00e8, 0x0105, - 0x011f, 0x0139, 0x0155, 0x017a, 0x0196, 0x01b1, 0x01b1, 0x01cc, - 0x01e7, 0x01e7, 0x0202, 0x021f, 0x023e, 0x025a, 0x025a, 0x025a, - 0x026e, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, + 0x0244, 0x0244, 0x0244, 0x0251, }, }, - { // seh - "akanamáricoárabebielo-russobúlgarobengalitchecoalemãogregoinglêsespanhol" + - "persafrancêshausahindihúngaroindonésioiboitalianojaponêsjavanêscmerc" + - "oreanomalaiobirmanêsnepalêsholandêspanjabipolonêsportuguêsromenoruss" + - "okinyarwandasomalisuecotâmiltailandêsturcoucranianourduvietnamitaior" + - "ubáchinêszulusena", - []uint16{ // 499 elements + { // nd + "isi-Akhaniisi-Amaharikhiisi-Alabhuisi-Bhelarashiyaniisi-Bulgariaisi-Bhen" + + "galiisi-Czechisi-Jalimaniisi-Gilikiisi-Ngisiisi-Sipeyiniisi-Pheshiya" + + "niisi-Fulentshiisi-Hausaisi-Hindiisi-Hangariisi-Indonesiaisi-Igboisi" + + "-Italianoisi-Japhaniisi-Javaisi-Khambodiyaisi-Koriyaisi-Malayiisi-Bu" + + "rmaisiNdebeleisi-Nepaliisi-Dutchisi-Phunjabiisi-Pholoshiisi-Potukezi" + + "isi-Romaniisi-Rashiyaisi-Ruwandaisi-Somaliisi-Swidishiisi-Thamilisi-" + + "Thayiisi-Thekishiisi-Ukrainisi-Uduisi-Vietnameseisi-Yorubhaisi-China" + + "isi-Zulu", + []uint16{ // 181 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0025, - 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0039, 0x0039, 0x0039, 0x0039, 0x003e, 0x0045, 0x0045, 0x004d, - 0x004d, 0x004d, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f, - 0x005f, 0x0064, 0x0064, 0x0064, 0x0064, 0x006c, 0x006c, 0x006c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, + 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0040, + 0x0040, 0x0040, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, 0x0074, 0x0074, 0x0080, + 0x0080, 0x0080, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x009b, + 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x00a4, + 0x00a4, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8, 0x00b8, 0x00b8, // Entry 40 - 7F - 0x006c, 0x0076, 0x0076, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0081, 0x0081, 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, - 0x0091, 0x0091, 0x0095, 0x0095, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, - 0x00b3, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c3, 0x00c3, 0x00cb, + 0x00b8, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, + 0x00d9, 0x00d9, 0x00e4, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00fa, 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, + 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, + 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, + 0x0104, 0x0104, 0x0104, 0x010e, 0x010e, 0x0117, 0x0117, 0x0121, + 0x012b, 0x012b, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c, // Entry 80 - BF - 0x00cb, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00db, 0x00e0, 0x00eb, - 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, - 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, - 0x0118, 0x0118, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, - 0x0122, 0x0129, 0x0129, 0x0130, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0162, 0x016d, 0x0178, + 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, + 0x0178, 0x0178, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, + 0x018e, 0x018e, 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1, + 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b7, + 0x01be, 0x01be, 0x01be, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, + 0x01cc, 0x01d7, 0x01d7, 0x01e0, 0x01e8, + }, + }, + { // ne + neLangStr, + neLangIdx, + }, + { // nl + nlLangStr, + nlLangIdx, + }, + { // nmg + "Kiɛl akanKiɛl amariaKiɛl b’árabeKiɛl belarussieKiɛl bulgariaKiɛl bengali" + + "aKiɛl bó tchɛkJámanKiɛl bó grɛkNgɛ̄lɛ̄nPaŋáKiɛl pɛrsiaFalaKiɛl máwús" + + "áKiɛl b’indienKiɛl b’ɔ́ngroisKiɛl indonesieKiɛl ikboKiɛl italiaKiɛl" + + " bó japonɛ̌Kiɛl bó javanɛ̌Kiɛl bó mɛrKiɛl koréKiɛl Malɛ̌siāKiɛl birm" + + "aniaKiɛl nepalKiɛl bóllandaisKiɛl pɛndjabiKiɛl pɔlɔŋeKiɛl bó pɔ̄rtug" + + "ɛ̂Kiɛl bó rumɛ̂nKiɛl russiaKiɛl rwandāKiɛl somaliāKiɛl bó suedoisKi" + + "ɛl tamulKiɛl thaïKiɛl bó turkKiɛl b’ukrɛ̄nienKiɛl úrduKiɛl viɛtnamY" + + "orúbâKiɛl bó chinoisZulu", + []uint16{ // 181 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0036, 0x0044, + 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0068, 0x0068, 0x0068, 0x0068, 0x0077, 0x0083, 0x0083, 0x0089, + 0x0089, 0x0089, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a9, + 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00cd, 0x00cd, 0x00cd, + // Entry 40 - 7F + 0x00cd, 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, + 0x00f2, 0x00f2, 0x0105, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, + 0x0118, 0x0118, 0x0126, 0x0126, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x0131, 0x0142, 0x0142, 0x0150, 0x0150, 0x0150, + 0x015b, 0x015b, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017b, 0x017b, 0x018a, + // Entry 80 - BF + 0x018a, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01b3, 0x01bf, 0x01cc, + 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, + 0x01cc, 0x01cc, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01eb, 0x01eb, 0x01f6, 0x01f6, 0x01f6, 0x0201, 0x0201, 0x0201, + 0x0201, 0x0201, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0224, + 0x022f, 0x022f, 0x022f, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, + 0x023d, 0x0245, 0x0245, 0x0256, 0x025a, + }, + }, + { // nn + "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamesiskavari" + + "skaymaraaserbajdsjanskbasjkirskkviterussiskbulgarskbislamabambaraben" + + "galitibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcr" + + "eetsjekkiskkyrkjeslavisktsjuvanskwalisiskdansktyskdivehidzongkhaeweg" + + "reskengelskesperantospanskestiskbaskiskpersiskfulfuldefinskfijianskf" + + "ærøyskfranskvestfrisiskirskskotsk-gæliskgaliciskguaranigujaratimanx" + + "hausahebraiskhindihiri motukroatiskhaitiskungarskarmenskhererointerl" + + "inguaindonesiskinterlingueibosichuan-yiinupiakidoislandskitalienskin" + + "uittiskjapanskjavanesiskgeorgiskkikongokikuyukuanyamakasakhiskgrønla" + + "ndsk (kalaallisut)khmerkannadakoreanskkanurikasjmirikurdiskkomikorni" + + "skkirgisisklatinluxemburgskgandalimburgisklingalalaotisklitauiskluba" + + "-katangalatviskmadagassiskmarshallesiskmaorimakedonskmalayalammongol" + + "skmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalskndonganed" + + "erlandsknynorskbokmålsør-ndebelenavajonyanjaoksitanskojibwaoromoodia" + + "ossetiskpanjabipalipolskpashtoportugisiskquechuaretoromanskrundirume" + + "nskrussiskkinjarwandasanskritsardinsksindhinordsamisksangosingalesis" + + "kslovakiskslovensksamoanskshonasomalialbanskserbiskswatisørsothosund" + + "anesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensktswana" + + "tongansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskven" + + "davietnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzu" + + "luachinesiskacoliadangmeadygeiskafrihiliaghemainuakkadiskaleutisksør" + + "-altajgammalengelskangikaarameiskmapudungunarapahoarawakasu (Tanzani" + + "a)asturiskavadhibaluchibalinesiskbasabamunbejabembabena (Tanzania)bh" + + "ojpuribikolbinisiksikabrajbodobakossiburjatiskbuginesiskblincaddocar" + + "ibatsamcebuanokigachibchatsjagataiskchuukesiskmarichinookchoctawchip" + + "ewianskcherokeecheyennesoranikoptiskkrimtatariskseselwa (fransk-kreo" + + "lsk)kasjubiskdakotadargwataitadelawareslavejdogribdinkazarmadogrilåg" + + "sorbiskdualamellomnederlandskjola-fonyidyuladazagaembuefikgammalegyp" + + "tiskekajukelamitemellomengelskewondofangfilippinskfonmellomfranskgam" + + "malfransknordfrisiskaustfrisiskfriuliskgagayogbayageezgilbertesemell" + + "omhøgtyskgammalhøgtyskgondigorontalogotiskgrebogammalgresksveitserty" + + "skgusiigwichinhaidahawaiiskhiligaynonhettittiskhmonghøgsorbiskhupaib" + + "anibibioilokoingusjisklojbanngombamachamejødepersiskjødearabiskkarak" + + "alpakiskkabylekachinjjukambakawikabardisktyapmakondekabuverdianukoro" + + "khasikhotanesiskkoyra chiinikakokalenjinkimbundukonkanikosraeanskkpe" + + "llekarachay-balkarkarelskkurukhshambalabafiakølnskkumykkutenailadino" + + "langilahndalambalezghianlakotamongolozinord-luriskluba-lulualuisenol" + + "undaluolushaiolulujiamaduresiskmagahimaithilimakasarmandingomasaimok" + + "shamandarmendemerumorisyenmellomirskMakhuwa-Meettometa’micmacminangk" + + "abaumandsjumanipurimohawkmossimundangfleire språkcreekmirandesiskmar" + + "warierziamazanderaninapolitansknamalågtysknewariniasniuiskkwasiongie" + + "mboonnogaigammalnorskn’konordsothonuerklassisk newarisknyamwezinyank" + + "olenyoronzimaosageottomansk tyrkiskpangasinanpahlavipampangapapiamen" + + "topalauisknigeriansk pidgingammalpersiskfønikiskponapiskprøyssiskgam" + + "malprovençalskk’icherajasthanirapanuirarotonganskromboromaniarumensk" + + "rwasandawesakhasamaritansk arameisksamburusasaksantalingambaysangusi" + + "cilianskskotsksenaselkupiskKoyraboro Sennigammalirsktachelhitshansid" + + "amosørsamisklulesamiskenaresamiskskoltesamisksoninkesogdisksranan to" + + "ngoserersahosukumasususumeriskshimaoreklassisk syrisksyrisktemneteso" + + "terenotetumtigrétivitokelauklingontlingittamasjektonga (Nyasa)tok pi" + + "sintarokotsimshiantumbukatuvalutasawaqtuvinisksentral-tamazightudmur" + + "tugaritiskumbundurotvaivotiskvunjowalsertyskwolayttawaraywashokalmyk" + + "isksogayaoyapesiskyangbenyembakantonesiskzapotecblissymbolzenagastan" + + "dard marokkansk tamazightzuniutan språkleg innhaldzazamoderne standa" + + "rdarabiskbritisk engelsklågsaksiskflamskmoldaviskserbokroatiskforenk" + + "la kinesisktradisjonell kinesisk", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032, + 0x0039, 0x0043, 0x004a, 0x0050, 0x005e, 0x0067, 0x0073, 0x007b, + 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00bc, + 0x00c4, 0x00ce, 0x00d2, 0x00db, 0x00e8, 0x00f1, 0x00f9, 0x00fe, + 0x0102, 0x0108, 0x0110, 0x0113, 0x0118, 0x011f, 0x0128, 0x012e, + 0x0134, 0x013b, 0x0142, 0x014a, 0x014f, 0x0157, 0x0160, 0x0166, + 0x0171, 0x0175, 0x0183, 0x018b, 0x0192, 0x019a, 0x019e, 0x01a3, + 0x01ab, 0x01b0, 0x01b9, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dc, + // Entry 40 - 7F + 0x01e7, 0x01f1, 0x01fc, 0x01ff, 0x0209, 0x0210, 0x0213, 0x021b, + 0x0224, 0x022d, 0x0234, 0x023e, 0x0246, 0x024d, 0x0253, 0x025b, + 0x0264, 0x027d, 0x0282, 0x0289, 0x0291, 0x0297, 0x029f, 0x02a6, + 0x02aa, 0x02b1, 0x02ba, 0x02bf, 0x02ca, 0x02cf, 0x02d9, 0x02e0, + 0x02e7, 0x02ef, 0x02fb, 0x0302, 0x030d, 0x031a, 0x031f, 0x0328, + 0x0331, 0x0339, 0x0340, 0x0348, 0x0351, 0x035a, 0x035f, 0x036b, + 0x0372, 0x0378, 0x0383, 0x038a, 0x0391, 0x039d, 0x03a3, 0x03a9, + 0x03b2, 0x03b8, 0x03bd, 0x03c1, 0x03c9, 0x03d0, 0x03d4, 0x03d9, + // Entry 80 - BF + 0x03df, 0x03ea, 0x03f1, 0x03fc, 0x0401, 0x0408, 0x040f, 0x041a, + 0x0422, 0x042a, 0x0430, 0x043a, 0x043f, 0x044a, 0x0453, 0x045b, + 0x0463, 0x0468, 0x046e, 0x0475, 0x047c, 0x0481, 0x048a, 0x0495, + 0x049b, 0x04a2, 0x04a7, 0x04ad, 0x04b7, 0x04bb, 0x04c3, 0x04cc, + 0x04d2, 0x04da, 0x04e1, 0x04e7, 0x04ef, 0x04f7, 0x04ff, 0x0507, + 0x050b, 0x0513, 0x0518, 0x0524, 0x052b, 0x0533, 0x0538, 0x053d, + 0x0544, 0x054a, 0x0550, 0x0558, 0x055c, 0x0566, 0x056b, 0x0572, + 0x057a, 0x057a, 0x0582, 0x0587, 0x058b, 0x0593, 0x0593, 0x059b, // Entry C0 - FF - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x059b, 0x05a5, 0x05b2, 0x05b8, 0x05c0, 0x05ca, 0x05ca, 0x05d1, + 0x05d1, 0x05d1, 0x05d7, 0x05d7, 0x05d7, 0x05e5, 0x05e5, 0x05ed, + 0x05ed, 0x05f3, 0x05fa, 0x0604, 0x0604, 0x0608, 0x060d, 0x060d, + 0x060d, 0x0611, 0x0616, 0x0616, 0x0625, 0x0625, 0x0625, 0x0625, + 0x062d, 0x0632, 0x0636, 0x0636, 0x0636, 0x063d, 0x063d, 0x063d, + 0x0641, 0x0641, 0x0645, 0x064c, 0x0655, 0x065f, 0x065f, 0x0663, + 0x0663, 0x0668, 0x066d, 0x066d, 0x0672, 0x0679, 0x067d, 0x0684, + 0x068f, 0x0699, 0x069d, 0x06a4, 0x06ab, 0x06b6, 0x06be, 0x06c6, // Entry 100 - 13F - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x06cc, 0x06d3, 0x06d3, 0x06df, 0x06f7, 0x0700, 0x0706, 0x070c, + 0x0711, 0x0719, 0x071f, 0x0725, 0x072a, 0x072f, 0x0734, 0x073f, + 0x073f, 0x0744, 0x0755, 0x075f, 0x0764, 0x076a, 0x076e, 0x0772, + 0x0772, 0x0780, 0x0786, 0x078d, 0x079a, 0x079a, 0x07a0, 0x07a0, + 0x07a4, 0x07ae, 0x07ae, 0x07b1, 0x07b1, 0x07bd, 0x07c9, 0x07c9, + 0x07d4, 0x07df, 0x07e7, 0x07e9, 0x07e9, 0x07e9, 0x07ed, 0x07f2, + 0x07f2, 0x07f6, 0x0800, 0x0800, 0x080e, 0x081c, 0x081c, 0x0821, + 0x082a, 0x0830, 0x0835, 0x0840, 0x084c, 0x084c, 0x084c, 0x0851, // Entry 140 - 17F - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0858, 0x085d, 0x085d, 0x0865, 0x0865, 0x086f, 0x0879, 0x087e, + 0x0889, 0x0889, 0x088d, 0x0891, 0x0897, 0x089c, 0x08a5, 0x08a5, + 0x08a5, 0x08ab, 0x08b1, 0x08b8, 0x08c4, 0x08d0, 0x08d0, 0x08dd, + 0x08e3, 0x08e9, 0x08ec, 0x08f1, 0x08f5, 0x08fe, 0x08fe, 0x0902, + 0x0909, 0x0915, 0x0915, 0x0919, 0x0919, 0x091e, 0x0929, 0x0935, + 0x0935, 0x0935, 0x0939, 0x0941, 0x0949, 0x0949, 0x0950, 0x095a, + 0x0960, 0x096f, 0x096f, 0x096f, 0x0976, 0x097c, 0x0984, 0x0989, + 0x0990, 0x0995, 0x099c, 0x09a2, 0x09a7, 0x09ad, 0x09b2, 0x09ba, // Entry 180 - 1BF - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x09ba, 0x09ba, 0x09ba, 0x09c0, 0x09c0, 0x09c5, 0x09c9, 0x09d4, + 0x09d4, 0x09de, 0x09e5, 0x09ea, 0x09ed, 0x09f3, 0x09fb, 0x09fb, + 0x09fb, 0x0a05, 0x0a05, 0x0a0b, 0x0a13, 0x0a1a, 0x0a22, 0x0a27, + 0x0a27, 0x0a2d, 0x0a33, 0x0a38, 0x0a3c, 0x0a44, 0x0a4e, 0x0a5c, + 0x0a63, 0x0a69, 0x0a74, 0x0a7b, 0x0a83, 0x0a89, 0x0a8e, 0x0a8e, + 0x0a95, 0x0aa2, 0x0aa7, 0x0ab2, 0x0ab9, 0x0ab9, 0x0ab9, 0x0abe, + 0x0ac9, 0x0ac9, 0x0ad4, 0x0ad8, 0x0ae0, 0x0ae6, 0x0aea, 0x0af0, + 0x0af0, 0x0af6, 0x0aff, 0x0b04, 0x0b0f, 0x0b0f, 0x0b15, 0x0b1e, // Entry 1C0 - 1FF - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0138, + 0x0b22, 0x0b33, 0x0b3b, 0x0b43, 0x0b48, 0x0b4d, 0x0b52, 0x0b63, + 0x0b6d, 0x0b74, 0x0b7c, 0x0b86, 0x0b8e, 0x0b8e, 0x0b9f, 0x0b9f, + 0x0b9f, 0x0bac, 0x0bac, 0x0bb5, 0x0bb5, 0x0bb5, 0x0bbd, 0x0bc7, + 0x0bd9, 0x0be1, 0x0be1, 0x0beb, 0x0bf2, 0x0bfe, 0x0bfe, 0x0bfe, + 0x0c03, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c11, 0x0c14, 0x0c1b, + 0x0c20, 0x0c34, 0x0c3b, 0x0c40, 0x0c47, 0x0c47, 0x0c4e, 0x0c53, + 0x0c5d, 0x0c63, 0x0c63, 0x0c63, 0x0c63, 0x0c67, 0x0c67, 0x0c70, + 0x0c7f, 0x0c89, 0x0c89, 0x0c92, 0x0c96, 0x0c96, 0x0c9c, 0x0c9c, + // Entry 200 - 23F + 0x0c9c, 0x0ca6, 0x0cb0, 0x0cbb, 0x0cc7, 0x0cce, 0x0cd5, 0x0ce1, + 0x0ce6, 0x0cea, 0x0cea, 0x0cf0, 0x0cf4, 0x0cfc, 0x0d04, 0x0d13, + 0x0d19, 0x0d19, 0x0d19, 0x0d1e, 0x0d22, 0x0d28, 0x0d2d, 0x0d33, + 0x0d37, 0x0d3e, 0x0d3e, 0x0d45, 0x0d4c, 0x0d4c, 0x0d54, 0x0d61, + 0x0d6a, 0x0d6a, 0x0d70, 0x0d70, 0x0d79, 0x0d79, 0x0d80, 0x0d86, + 0x0d8d, 0x0d95, 0x0da6, 0x0dac, 0x0db5, 0x0dbc, 0x0dbf, 0x0dc2, + 0x0dc2, 0x0dc2, 0x0dc2, 0x0dc2, 0x0dc8, 0x0dc8, 0x0dcd, 0x0dd7, + 0x0ddf, 0x0de4, 0x0de9, 0x0de9, 0x0de9, 0x0df2, 0x0df2, 0x0df6, + // Entry 240 - 27F + 0x0df9, 0x0e01, 0x0e08, 0x0e0d, 0x0e0d, 0x0e18, 0x0e1f, 0x0e29, + 0x0e29, 0x0e2f, 0x0e4c, 0x0e50, 0x0e66, 0x0e6a, 0x0e81, 0x0e81, + 0x0e81, 0x0e81, 0x0e81, 0x0e81, 0x0e90, 0x0e90, 0x0e90, 0x0e90, + 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0e9b, 0x0ea1, 0x0ea1, 0x0ea1, + 0x0eaa, 0x0eb7, 0x0eb7, 0x0ec8, 0x0edd, }, }, - { // ses - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" + - " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" + - "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" + - "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " + - "senniUrdu senniVietnaam senniYorbance senniSinuwa senni, MandareŋZul" + - "u senniKoyraboro senni", - []uint16{ // 502 elements + { // nnh + "nzǎmɔ̂ɔnngilísèShwóŋò menkesaŋfelaŋséeShwóŋò pʉa mbasǎShwóŋò pamomShwóŋò" + + " pʉa nzsekàʼaShwóŋò pafudShwóŋò pʉ̀a njinikomShwóŋò pakɔsiShwóŋò mbu" + + "luShwóŋò ngáŋtÿɔʼShwóŋò pʉa YɔɔnmendiShwóŋò pʉa shÿó BɛgtùaShwóŋò ng" + + "iembɔɔnShwóŋò pʉa shÿó MbafìaShwóŋò Tsaŋ", + []uint16{ // 580 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, - 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, // Entry 80 - BF - 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c, - 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, - 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, - 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7, - 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, - 0x01ff, 0x020d, 0x020d, 0x0224, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, // Entry C0 - FF - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0047, 0x0056, 0x0056, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x007e, 0x007e, 0x007e, + 0x007e, 0x007e, 0x007e, 0x007e, 0x0097, 0x0097, 0x0097, 0x0097, + 0x0097, 0x0097, 0x0097, 0x00a8, 0x00a8, 0x00a8, 0x00b7, 0x00b7, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, // Entry 100 - 13F - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, // Entry 140 - 17F - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, // Entry 180 - 1BF - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, // Entry 1C0 - 1FF - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x023d, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + // Entry 200 - 23F + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + // Entry 240 - 27F + 0x011b, 0x011b, 0x0138, 0x0147, }, }, - { // sg - "AkâanAmarîkiArâboBielörûsiBulugäriBengäliTyêkiZâmaniGerêkiAnglëeEspanyöl" + - "FarsîFarânziHaüsäHîndiHongruäaEnndonezïiÏgböÊnndeZaponëeZavanëeKmêre" + - "KoreyëenMalëeMiamära, BirimäniNepalëeHolandëePenzäbïPolonëePortugëe," + - " PûraRumëenRûsiRuandäaSängöSomalïiSueduäaTämûliThâiTûrûkuUkrêniÛrduV" + - "ietnämYorubaShinuäaZûlu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001f, 0x0028, - 0x0028, 0x0028, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, 0x004b, 0x004b, 0x0054, - 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0069, - 0x0069, 0x006f, 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0078, - // Entry 40 - 7F - 0x0078, 0x0083, 0x0083, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x008f, 0x008f, 0x0097, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00c7, 0x00c7, 0x00c7, - 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00e9, - // Entry 80 - BF - 0x00e9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0100, 0x0105, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x0114, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x0124, 0x0124, 0x012c, 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0140, - 0x0145, 0x0145, 0x0145, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x0153, 0x0153, 0x015b, 0x0160, - }, + { // no + noLangStr, + noLangIdx, }, - { // shi - "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" + - "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" + - "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴼⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" + - "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" + - "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" + - "ⵓⵔⴷⵓⵜⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵛⵍⵃⵉⵜ", - []uint16{ // 505 elements + { // nus + "Thok aka̱niThok bunyniThok JalabniThok bäläruthaThok bälga̱a̱rianiThok b" + + "ängaliThok cikThok jarmaniThok girikniThok liŋli̱thniThok i̱thpaani" + + "aniThok perthianiThok pɔrɔthaniThok ɣowthaniThok ɣändiniThok ɣänga̱a" + + "̱riɛniThok indunithianiThok i̱gboniThok i̱talianiThok japanniThok j" + + "abanithniThok kameeriThok kurianiThok mayɛyniThok bormi̱thniThok nap" + + "alniThok da̱cThok puɔnjabaniThok pölicniThok puɔtigaliThok ji̱ römTh" + + "ok ra̱ciaaniThok ruaandaniThok thomaalianiThok i̱thwidicniThok tamil" + + "niThok tayniThok turkicniThok ukeraaniniThok udoniThok betnaamniThok" + + " yurubaniThok caynaThok dhuluniThok Nath", + []uint16{ // 449 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078, - 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111, - 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f, - 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0017, 0x0017, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0033, 0x0048, + 0x0048, 0x0048, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0075, 0x0086, 0x0086, 0x0098, + 0x0098, 0x0098, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00b6, + 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c4, + 0x00c4, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00e9, 0x00e9, 0x00e9, // Entry 40 - 7F - 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279, - 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, - 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8, + 0x00e9, 0x00fa, 0x00fa, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0116, 0x0116, 0x0122, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x013d, 0x013d, 0x0149, 0x0149, 0x0149, 0x0149, + 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, + 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, + 0x0149, 0x0149, 0x0149, 0x0156, 0x0156, 0x0166, 0x0166, 0x0166, + 0x0172, 0x0172, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, + 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x018c, 0x018c, 0x0199, // Entry 80 - BF - 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351, - 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, - 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, - 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd, - 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed, - 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0199, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01b6, 0x01c5, 0x01d3, + 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, + 0x01d3, 0x01d3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, + 0x01f4, 0x01f4, 0x0200, 0x0200, 0x0200, 0x020a, 0x020a, 0x020a, + 0x020a, 0x020a, 0x0217, 0x0217, 0x0217, 0x0217, 0x0217, 0x0226, + 0x0230, 0x0230, 0x0230, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, + 0x023e, 0x024b, 0x024b, 0x0255, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, // Entry C0 - FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 100 - 13F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + // Entry 100 - 13F + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, // Entry 140 - 17F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, // Entry 180 - 1BF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, + 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, // Entry 1C0 - 1FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0477, + 0x026a, }, }, - { // shi-Latn - "TakantTamharitTaɛrabtTabilarustTablɣaritTabnɣalitTatcikitTalimantTagrigi" + - "tTangliztTasbnyulitTafursitTafransistTahawsatTahinditTahnɣaritTandun" + - "isitTigbutTaṭalyantTajabbunitTajavanitTaxmirtTakuritTamalawitTabirma" + - "nitTanibalitTahulanditTabnjabitTabulunitTabṛṭqiztTarumanitTarusitTar" + - "uwanditTasumalitTaswiditTatamiltTataylanditTaturkitTukranitTurdutTaf" + - "itnamitTayrubatTacinwitTazulutTashelḥiyt", - []uint16{ // 505 elements + { // nyn + "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" + + "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" + + "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" + + "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" + + "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" + + "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" + + "inaOruzuruRunyankore", + []uint16{ // 452 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, - 0x0078, 0x0080, 0x0080, 0x0080, 0x0080, 0x008a, 0x008a, 0x008a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031, + 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, + 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e, + 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a, + 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c, // Entry 40 - 7F - 0x008a, 0x0094, 0x0094, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x00a5, 0x00a5, 0x00af, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9, - 0x00e2, 0x00e2, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f5, 0x00f5, 0x00fe, + 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1, + 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, + 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115, // Entry 80 - BF - 0x00fe, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x011b, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - 0x0125, 0x0125, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159, - 0x015f, 0x015f, 0x015f, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0171, 0x0171, 0x0179, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d, + 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, + 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, + 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163, + 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176, + 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, + 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, // Entry C0 - FF - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, // Entry 100 - 13F - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 140 - 17F - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 180 - 1BF - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 1C0 - 1FF - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x018c, - }, - }, - { // si - siLangStr, - siLangIdx, - }, - { // sk - skLangStr, - skLangIdx, - }, - { // sl - slLangStr, - slLangIdx, - }, - { // smn - "arabiakielâvielgisruošâkielâbulgariakielâtšeekikielâkirkkoslaavitanskaki" + - "elâsaksakielâkreikakielâengâlâskielâespanjakielâeestikielâsuomâkielâ" + - "ranskakielâiirikielâhepreakielâkroatiakielâuŋgarkielâarmeniakielâisl" + - "andkielâitaliakielâjaapaankielâkurdikielâkomikielâläättinkielâlatvia" + - "kielâmaorikielâmakedoniakielâmongoliakielâneepaalkielâhollandkielâtá" + - "rukielâ nynorsktárukielâpuolakielâportugalkielâromaniakielâruošâkiel" + - "âsanskritkielâtavesämikielâsloveniakielâserbiakielâruotâkielâturkki" + - "kielâukrainakielâvietnamkielâkiinakielâainukielâmarikielâtoovláškrei" + - "kakielâmokšâkielâviestârmarikielâtoovláštárukielâroomaankielâmaadâsä" + - "mikielâjuulevsämikielâanarâškielânuorttâlâškielâudmurtkielâvepsäkiel" + - "âkantonkiinakielâNuorttâriijkâ saksakielâAustralia engâlâskielâKana" + - "da engâlâskielâoovtâkiärdánis kiinakielâärbivuáválâš kiinakielâ", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0020, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x003b, 0x0047, 0x0047, 0x0047, 0x0053, - 0x005e, 0x005e, 0x005e, 0x005e, 0x006a, 0x0079, 0x0079, 0x0086, - 0x0091, 0x0091, 0x0091, 0x0091, 0x009d, 0x009d, 0x009d, 0x00a9, - 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, - 0x00bf, 0x00bf, 0x00bf, 0x00cc, 0x00cc, 0x00d8, 0x00e5, 0x00e5, - // Entry 40 - 7F - 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00f1, - 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, - 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0115, - 0x011f, 0x011f, 0x011f, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x013a, 0x013a, 0x013a, 0x0145, 0x0154, - 0x0154, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x016f, 0x016f, 0x017c, 0x018f, 0x019a, 0x019a, 0x019a, 0x019a, - 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a5, - // Entry 80 - BF - 0x01a5, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01c0, 0x01cd, 0x01cd, - 0x01db, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01f8, - 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204, - 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, - 0x0210, 0x0210, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x0229, - 0x0229, 0x0229, 0x0229, 0x0236, 0x0236, 0x0236, 0x0236, 0x0236, - 0x0236, 0x0236, 0x0236, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, - 0x0241, 0x0241, 0x0241, 0x0241, 0x024b, 0x024b, 0x024b, 0x024b, - // Entry C0 - FF - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, - 0x024b, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - // Entry 100 - 13F - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, - 0x0255, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, // Entry 140 - 17F - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, // Entry 180 - 1BF - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0277, - 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, - 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0289, 0x0289, 0x0289, - 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, - 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, - 0x0289, 0x0289, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, // Entry 1C0 - 1FF - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x02aa, 0x02aa, - 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, - 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, - 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, - 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02bb, 0x02cc, - // Entry 200 - 23F - 0x02da, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, - 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, - 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, - 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, - 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, - 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0305, 0x0305, - 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, - 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, - // Entry 240 - 27F - 0x0305, 0x0305, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, - 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0331, 0x0331, 0x034a, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x037d, 0x039a, + 0x01a6, 0x01a6, 0x01a6, 0x01b0, }, }, - { // sn - "chiAkanichiAmaricchiArabuchiBelarusichiBulgarianchiBengalichiCzechchiJer" + - "imanichiGreekChirunguchiSpanishchiPeshiyachiFurenchichiHausachiHindi" + - "chiHungarichiIndonesiachiIgbochiTarianachiJapanichiJavachiKhemachiKo" + - "riachiMalaychiBurmachiNepalichiDutchchiPunjabichiPolishchiPutukezich" + - "iRomanianchiRashiyachiRwandachiShonachiSomalichiSwedishchiTamilchiTh" + - "aichiTurkishchiUkreniachiUrduchiVietnamchiYorubachiChinesechiZulu", - []uint16{ // 181 elements + { // om + "AfrikootaAfaan SidaamaaArabiffaaAfaan AzerbaijaniAfaan BelarusiaAfaan Bu" + + "lgariyaAfaan BaangladeshiAfaan BosniyaaAfaan KatalaaAfaan CzechWelis" + + "hiffaaAfaan DeenmaarkAfaan JarmaniiAfaan GiriikiIngliffaAfaan Espera" + + "ntooAfaan IspeenAfaan IstooniyaAfaan BaskuuAfaan PersiaAfaan Fiilaan" + + "diAfaan FaroeseAfaan FaransaayiiAfaan FirisiyaaniAfaan AyirishiiScot" + + "s GaelicAfaan GalishiiAfaan GuaraniAfaan GujaratiAfaan HebrewAfaan H" + + "indiiAfaan CroatianAfaan HangaariInterlinguaAfaan IndoneziyaAyiislan" + + "diffaaAfaan XaaliyaaniAfaan JapaniiAfaan JavaAfaan GeorgianAfaan Kan" + + "nadaAfaan KoreaAfaan LaatiniAfaan LiituniyaaAfaan LativiyaaAfaan Mac" + + "edooniyaaMalayaalamiffaaAfaan MaratiiMalaayiffaaAfaan MaltesiiAfaan " + + "NepaliiAfaan DachiiAfaan NorwegianAfaan NorweyiiAfaan OccitOromooAfa" + + "an PunjabiiAfaan PolandiiAfaan PorchugaalAfaan RomaniyaaAfaan Rushiy" + + "aaAfaan SinhaleseAfaan SlovakAfaan IslovaniyaaAfaan AlbaniyaaAfaan S" + + "erbiyaAfaan SudaaniiAfaan SuwidiinSuwahiliiAfaan TamiliiAfaan Telugu" + + "Afaan TayiiAfaan TigireeLammii TurkiiAfaan TurkiiAfaan UkreeniiAfaan" + + " UrduAfaan UzbekAfaan VeetinamAfaan XhosaChineseAfaan ZuuluAfaan Fil" + + "ippiniiAfaan KilingonAfaan Portugali (Braazil)Afaan Protuguese", + []uint16{ // 608 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0055, 0x005d, 0x005d, 0x0067, - 0x0067, 0x0067, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084, - 0x0084, 0x008c, 0x008c, 0x008c, 0x008c, 0x0096, 0x0096, 0x0096, - // Entry 40 - 7F - 0x0096, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00b3, 0x00b3, 0x00bc, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00e3, 0x00e3, 0x00e3, - 0x00ec, 0x00ec, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x0107, - // Entry 80 - BF - 0x0107, 0x0112, 0x0112, 0x0112, 0x0112, 0x011d, 0x0127, 0x0130, - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0138, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, - 0x014b, 0x014b, 0x0153, 0x0153, 0x0153, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x0188, 0x0188, 0x0192, 0x0199, - }, - }, - { // so - "AkanAxmaariCarabiBeleruusiyaanBulgeeriyaanBangaaliJeegJarmalGiriikIngiri" + - "isiIsbaanishFaarisiFaransiisFiriisiyan GalbeedHawsaHindiHangariyaanI" + - "ndunuusiyaanIgboTalyaaniJabbaaniisJafaaniisKamboodhianKuuriyaanMalaa" + - "yBurmeseNebaaliHolandaysBunjaabiBoolishBoortaqiisRomankaRuushRwandaS" + - "oomaaliSwiidhisTamiilTaaylandaysTurkishYukreeniyaanUrduuFiitnaamaysY" + - "oruubaJayniisZuulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0054, - 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0064, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007b, - 0x007b, 0x0080, 0x0080, 0x0080, 0x0080, 0x008b, 0x008b, 0x008b, - // Entry 40 - 7F - 0x008b, 0x0098, 0x0098, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x00a4, 0x00a4, 0x00ae, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d8, 0x00d8, 0x00d8, - 0x00df, 0x00df, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f0, 0x00f0, 0x00f7, - // Entry 80 - BF - 0x00f7, 0x0101, 0x0101, 0x0101, 0x0101, 0x0108, 0x010d, 0x0113, - 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, - 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x0123, 0x0123, 0x0129, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x0147, - 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, - 0x0157, 0x015e, 0x015e, 0x0165, 0x016a, - }, - }, - { // sq - sqLangStr, - sqLangIdx, - }, - { // sr - srLangStr, - srLangIdx, - }, - { // sr-Latn - srLatnLangStr, - srLatnLangIdx, - }, - { // sv - svLangStr, - svLangIdx, - }, - { // sv-FI - "kirgiziska", - []uint16{ // 91 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000a, - }, - }, - { // sw - swLangStr, - swLangIdx, - }, - { // sw-CD - "KiakanKibanglaKicheckiKingerezaKiswahili ya Kongo", - []uint16{ // 608 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0017, 0x0017, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0031, 0x0031, 0x0040, 0x004f, + 0x004f, 0x004f, 0x0061, 0x0061, 0x0061, 0x006f, 0x007c, 0x007c, + 0x007c, 0x007c, 0x007c, 0x0087, 0x0087, 0x0087, 0x0092, 0x00a1, + 0x00af, 0x00af, 0x00af, 0x00af, 0x00bc, 0x00c4, 0x00d4, 0x00e0, + 0x00ef, 0x00fb, 0x0107, 0x0107, 0x0116, 0x0116, 0x0123, 0x0134, + 0x0145, 0x0154, 0x0160, 0x016e, 0x017b, 0x0189, 0x0189, 0x0189, + 0x0195, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01bd, 0x01bd, 0x01bd, // Entry 40 - 7F - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x01c8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01e6, + 0x01f6, 0x01f6, 0x0203, 0x020d, 0x021b, 0x021b, 0x021b, 0x021b, + 0x021b, 0x021b, 0x021b, 0x0228, 0x0233, 0x0233, 0x0233, 0x0233, + 0x0233, 0x0233, 0x0233, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0250, 0x0250, 0x025f, 0x025f, 0x025f, 0x025f, 0x0271, + 0x0280, 0x0280, 0x028d, 0x0298, 0x02a6, 0x02a6, 0x02a6, 0x02a6, + 0x02b3, 0x02b3, 0x02bf, 0x02ce, 0x02dc, 0x02dc, 0x02dc, 0x02dc, + 0x02e7, 0x02e7, 0x02ed, 0x02ed, 0x02ed, 0x02fb, 0x02fb, 0x0309, // Entry 80 - BF - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x0309, 0x0319, 0x0319, 0x0319, 0x0319, 0x0328, 0x0336, 0x0336, + 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0345, 0x0351, 0x0362, + 0x0362, 0x0362, 0x0362, 0x0371, 0x037e, 0x037e, 0x037e, 0x038c, + 0x039a, 0x03a3, 0x03b0, 0x03bc, 0x03bc, 0x03c7, 0x03d4, 0x03e1, + 0x03e1, 0x03e1, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb, + 0x0405, 0x0410, 0x0410, 0x041e, 0x041e, 0x041e, 0x041e, 0x0429, + 0x0429, 0x0429, 0x0429, 0x0430, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, // Entry C0 - FF - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, // Entry 100 - 13F - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, + 0x043b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, // Entry 140 - 17F - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, // Entry 180 - 1BF - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, // Entry 1C0 - 1FF - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, // Entry 200 - 23F - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, + 0x044b, 0x044b, 0x044b, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, // Entry 240 - 27F - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x0031, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, + 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0472, 0x0482, }, }, - { // ta - taLangStr, - taLangIdx, - }, - { // te - teLangStr, - teLangIdx, - }, - { // teo - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKiteso", - []uint16{ // 530 elements + { // or + "ଅଫାର୍ଆବ୍ଖାଜିଆନ୍ଅବେସ୍ତନଆଫ୍ରିକାନସ୍ଅକନ୍ଆମହାରକିଆର୍ଗୋନୀଆରବିକ୍ଆସାମୀଆଭାରିକ୍ଆୟମା" + + "ରାଆଜେରବାଇଜାନିବଶଖିର୍ବେଲାରୁଷିଆନ୍ବୁଲଗେରିଆନ୍ବିସଲାମାବାମ୍ବାରାବଙ୍ଗାଳୀତିବେ" + + "ତାନ୍ବ୍ରେଟନ୍କାଟଲାନ୍କାଟାଲାନ୍ଚେଚନ୍ଚାମୋରୋକୋର୍ସିକାନ୍କ୍ରୀଚେକ୍ଚର୍ଚ୍ଚ ସ୍ଲା" + + "ଭିକ୍ଚୁଭାଶ୍ୱେଲ୍ସଡାନ୍ନିସ୍ଜର୍ମାନ୍ଡିଭେହୀଭୂଟାନୀଇୱେଗ୍ରୀକ୍ଇଂରାଜୀଏସ୍ପାରେଣ୍" + + "ଟୋସ୍ପାନିସ୍ଏସ୍ତୋନିଆନ୍ବାସ୍କ୍ୱିପର୍ସିଆନ୍ଫୁଲାହଫିନ୍ନିସ୍ଫିଜିଫାରୋଏସେଫ୍ରେଞ୍" + + "ଚପଶ୍ଚିମ ଫ୍ରିସିୟନ୍ଇରିସ୍ସ୍କଟିସ୍ ଗାଏଲିକ୍ଗାଲସିଆନ୍ଗୁଆରାନୀଗୁଜୁରାଟୀମାଁକ୍ସ" + + "ହୌସାହେବ୍ର୍ୟୁହିନ୍ଦୀହିରି ମୋଟୁକ୍ରୋଆଟିଆନ୍ହୈତାୟିନ୍ହଙ୍ଗେରିଆନ୍ଆର୍ମେନିଆନ୍ହ" + + "େରେରୋଇର୍ଣ୍ଟଲିଙ୍ଗୁଆଇଣ୍ଡୋନେସିଆନ୍ଇର୍ଣ୍ଟରଲିଙ୍ଗୁଇଇଗ୍ବୋସିଚୁଆନ୍ ୟୀଇନୁପିୟା" + + "କ୍ଇଡୋଆଇସଲାଣ୍ଡିକ୍ଇଟାଲିଆନ୍ଇନକୀଟୁତ୍ଜାପାନୀଜ୍ଜାଭାନୀଜ୍ଜର୍ଜିଆନ୍କଙ୍ଗୋକୀକୁୟ" + + "ୁକ୍ୱାନ୍ୟାମ୍କାଜାକ୍ଗ୍ରୀନଲାଣ୍ଡିକ୍ଖ୍ମେର୍କନ୍ନଡକୋରିଆନ୍କନୁରୀକାଶ୍ମିରୀକୁର୍ଦ" + + "୍ଦିଶ୍କୋମିକୋର୍ନିସ୍କିରଗିଜ୍ଲାଟିନ୍ଲକ୍ସେମବର୍ଗିସ୍ଗନ୍ଦାଲିମ୍ବୁର୍ଗିସ୍ଲିଙ୍ଗା" + + "ଲାଲାଓଲିଥୁଆନିଆନ୍ଲ୍ୟୁବା-କାଟାଙ୍ଗାଲାଟଭିଆନ୍ମାଲାଗାସୀମାର୍ଶାଲୀଜ୍ମାଓରୀମାକଡୋ" + + "ନିଆନ୍ମାଲାୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ମରାଠୀମାଲୟମାଲଟୀଜ୍ବର୍ମୀଜ୍ନାଉରୁଉତ୍ତର ନେଡବେଲେନେ" + + "ପାଳୀଡୋଙ୍ଗାଡଚ୍ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କନରୱେଜିଆନ୍ ବୋକମଲ୍ଦକ୍ଷିଣ ନେଡବେଲେନାଭା" + + "ଜୋନିୟାଞ୍ଜଓସିଟାନ୍ଓଜିୱାଓରୋମୋଓଡ଼ିଆଓସେଟିକ୍ପଞ୍ଜାବୀପାଲିପୋଲିଶ୍ପାସ୍ତୋପର୍ତ୍" + + "ତୁଗ୍ରୀଜ୍କ୍ୱେଚୁଆରେହେଟୋ-ରୋମାନ୍ସରୁଣ୍ଡିରୋମାନିଆନ୍ରଷିଆନ୍କିନ୍ୟାରୱାଣ୍ଡାସଂସ" + + "୍କୃତସର୍ଦିନିଆନ୍ସିନ୍ଧୀଉତ୍ତର ସାମିସାଙ୍ଗୋସିଂହଳସ୍ଲୋଭାକ୍ସ୍ଲୋଭେନିଆନ୍ସାମୋଆନ" + + "୍ଶୋନାସୋମାଲିଆଆଲବାନିଆନ୍ସର୍ବିଆନ୍ସ୍ବାତୀସେସୋଥୋସୁଦାନୀଜ୍ସ୍ୱେଡିସ୍ସ୍ୱାହିଲ୍ତ" + + "ାମିଲ୍ତେଲୁଗୁତାଜିକ୍ଥାଇଟ୍ରିଗିନିଆତୁର୍କମେନ୍ସେସ୍ବାନାଟୋଙ୍ଗାତୁର୍କିସ୍ସୋଂଗାତ" + + "ାତାର୍ତାହିତିଆନ୍ୟୁଘୁର୍ୟୁକ୍ରାନିଆନ୍ଉର୍ଦ୍ଦୁଉଜବେକ୍ଭେଣ୍ଡାଭିଏତନାମିଜ୍ବୋଲାପୁ" + + "କୱାଲୁନ୍ୱୋଲଫ୍ଖୋସାୟିଡିସ୍ୟୋରୁବାଜୁଆଙ୍ଗଚାଇନୀଜ୍ଜୁଲୁଆଚାଇନୀଜ୍ଆକୋଲିଆଦାଙ୍ଗେମ" + + "୍ଅଦ୍ୟଘେଆଫ୍ରିହିଲିଆଇନୁଆକାଡିଆନ୍ଆଲେଇଟୁଦକ୍ଷିଣ ଆଲ୍ଟାଇପୁରୁଣା ଇଁରାଜୀଅଁଗୀକା" + + "ଆରାମାଇକ୍ଆରାଉକାନିଆନ୍ଆରାପାହୋଆରୱକଆଷ୍ଟୁରିଆନ୍ଆୱାଧିବାଲୁଚିବାଲିନୀଜ୍ବାସାବେଜ" + + "ାବେମ୍ବାଭୋଜପୁରୀବିକୋଲ୍ବିନିବିକ୍ସିକାବ୍ରାଜ୍ବୁରିଆଟ୍ବୁଗୀନୀଜ୍ବ୍ଲିନ୍କାଡୋକାର" + + "ିବ୍ଆତ୍ସମ୍ସୀବୁଆନୋଚିବ୍ଚାଛଗତାଇଚୁକୀସେମାରୀଚିନୁକ୍ ଜାରଗାଁନ୍ଚୋଟୱାଚିପେୱାନ୍ଚ" + + "େରୋକୀଚେଚେନାକପ୍ଟିକ୍କ୍ରୀମିନ୍ ତୁର୍କୀସ୍କାଶୁବିଆନ୍ଡାକୋଟାଡାରାଗ୍ୱାଡେଲାୱେର୍" + + "ସ୍ଲେଭ୍ଡୋଗ୍ରିବ୍ଦିଙ୍କାଡୋଗ୍ରୀନିଚଳା ସର୍ବିଆନ୍ଡୁଆନାମଧ୍ୟ ପର୍ତ୍ତୁଗାଲୀଡୁଆଲା" + + "ଏଫିକ୍ପ୍ରାଚୀନ୍ ମିଶିରିଏକାଜୁକ୍ଏଲାମାଇଟ୍ମଧ୍ୟ ଇଁରାଜୀଇୱୋଣ୍ଡୋଫାଙ୍ଗଫିଲିପିନୋ" + + "ଫନ୍ମଧ୍ୟ ଫ୍ରେଞ୍ଚପୁରୁଣା ଫ୍ରେଞ୍ଚଉତ୍ତର ଫ୍ରିସିୟାନ୍ପୂର୍ବ ଫ୍ରିସିୟାନ୍ଫ୍ରିୟ" + + "ୁଲୀୟାନ୍ଗାଗାୟୋଗବାୟାଗୀଜ୍ଜିବ୍ରାଟୀଜ୍ମିଡିଲ୍ ହାଇ ଜର୍ମାନ୍ପୁରୁଣା ହାଇ ଜର୍ମା" + + "ନ୍ଗୋଣ୍ଡିଗୋରୋଣ୍ଟାଲୋଗୋଥିକ୍ଗ୍ରେବୋପ୍ରାଚୀନ୍ ୟୁନାନୀସ୍ବିସ୍ ଜର୍ମାନ୍ସ୍ବିଚ୍ " + + "ଇନ୍ହାଇଡାହାୱାଇନ୍ହିଲିଗୈନନ୍ହିତୀତେହଁଙ୍ଗଉପର ସର୍ବିଆନ୍ହୁପାଇବାନ୍ଇଲୋକୋଇଁଙ୍ଗ" + + "ୁଶ୍ଲୋଜବାନ୍ଜୁଡେଓ-ପର୍ସିଆନ୍ଜୁଡେଓ-ଆରବୀକ୍କାରା-କଲ୍ପକ୍କବାଇଲ୍କଚିନ୍ଜ୍ଜୁକମ୍ବ" + + "ାକାୱିକାବାର୍ଡିଆନ୍ତ୍ୟାପ୍କୋରୋଖାସୀଖୋତାନୀଜ୍କିମ୍ବୁଣ୍ଡୁକୋନକାନୀକୋସରୈନ୍କୈପେ" + + "ଲେକରାଚୟ-ବଲ୍କାରକାରେଲିୟାନ୍କୁରୁଖକୁମୀକ୍କୁତେନାଉଲାଦିନୋଲାହାଣ୍ଡାଲାମ୍ବାଲେଜଗ" + + "ିୟାନ୍ମଙ୍ଗୋଲୋଜିଲୁବା-ଲୁଲୁଆଲୁଇସେନୋଲୁଣ୍ଡାଲୁଓଲୁସାଉମାଦୁରୀସ୍ମାଗାହୀମୈଥିଳୀମ" + + "କାସର୍ମାଣ୍ଡିଙ୍ଗୋମାସାଇମୋକ୍ଷମନ୍ଦାରମେଣ୍ଡେମଧ୍ୟ ଇରିଶ୍ମିକମୌକ୍ମିନାଙ୍ଗାବାଉମ" + + "ାଞ୍ଚୁମଣିପୁରୀମୋହୌକମୋସିବିବିଧ ଭାଷାମାନକ୍ରୀକ୍ମିରାଣ୍ଡିଜ୍ମାରୱାରୀଏର୍ଜୟାନୀପ" + + "ୋଲିଟାନ୍ଲୋ ଜର୍ମାନ୍ନେୱାରୀନୀୟାସ୍ନିୟୁଆନ୍ନୋଗାଇପୁରୁଣା ନର୍ସଏନ୍କୋଉତ୍ତରୀ ସୋ" + + "ଥୋପାରମ୍ପରିକ ନେୱାରୀନ୍ୟାମୱେଜୀନ୍ୟାନକୋଲ୍ନ୍ୟାରୋଞ୍ଜିମାୱୌସେଜ୍ଓଟ୍ଟୋମନ୍ ତୁର" + + "୍କିସ୍ପାଙ୍ଗାସିନିଆନ୍ପାହ୍ଲାଭିପାମ୍ପାଙ୍ଗାପାପିୟାମିଣ୍ଟୋପାଲାଉଆନ୍ପୁରୁଣା ପର୍" + + "ସିଆନ୍ଫୋନେସିଆନ୍ପୋହପିଏନ୍ପୁରୁଣା ପ୍ରେଭେନେସିଆଲ୍ରାଜସ୍ଥାନୀରାପାନୁଇରାରୋତୋଙ୍" + + "ଗନ୍ରୋମାନିଆରୋମାନିଆନ୍ସଣ୍ଡାୱେୟାକୁଟ୍ସାମୌରିଟନ୍ ଆରମାଇକ୍ସାସାକ୍ସାନ୍ତାଳିସିଶ" + + "ିଲିଆନ୍ସ୍କଟସ୍ସେଲ୍କପ୍ପୁରୁଣା ଇରିଶ୍ଶାନ୍ସିଦାମୋଦକ୍ଷିଣ ସାମିଲୁଲେ ସାମିଇନାରୀ" + + " ସାମିସ୍କୋଲ୍ଟ ସାମୀସୋନିଙ୍କେସୋଗଡିଏନ୍ଶାରାନା ଟୋଙ୍ଗୋଶେରେର୍ସୁକୁମାଶୁଶୁସୁମେରି" + + "ଆନ୍କ୍ଲାସିକାଲ୍ ସିରିକ୍ସିରିକ୍ତିମନେତେରେନୋତେତୁମ୍ଟାଇଗ୍ରେତୀଭ୍ଟୋକେଲାଉକ୍ଲିଙ" + + "୍ଗନ୍ତ୍ଲିଙ୍ଗିଟ୍ତାମାଶେକ୍ନ୍ୟାସା ଟୋଙ୍ଗୋଟୋକ୍ ପିସିନ୍ତିସିମିସିଆନ୍ଟୁମ୍ବୁକାତ" + + "ୁଭାଲୁତୁଭିନିଆନ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁମୂଳଭାଇଭୋଟିକ୍ୱାଲମୋୱାରୈୱାସୋ" + + "କାଲ୍ମୀକ୍ୟାଓୟାପୀସ୍ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାଜୁନୀକୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସା" + + "ମଗ୍ରୀ ନାହିଁଜାଜାଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁର" + + "ାଜୀକାନାଡିଆନ୍ ଇଁରାଜୀବ୍ରିଟିଶ୍ ଇଁରାଜୀୟୁ.ଏସ୍. ଇଁରାଜୀଲାଟିନ୍ ଆମେରିକାନ୍ ସ" + + "୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ" + + "୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆନ୍ସର୍ବୋ-କ୍ରୋଆଟି" + + "ଆନ୍ସରଳିକରଣ ଚାଇନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + 0x0000, 0x000f, 0x002d, 0x0042, 0x0060, 0x006c, 0x0081, 0x0096, + 0x00a8, 0x00b7, 0x00cc, 0x00de, 0x00ff, 0x0111, 0x0132, 0x0150, + 0x0165, 0x017d, 0x0192, 0x01aa, 0x01bf, 0x01d4, 0x01ec, 0x01fb, + 0x020d, 0x022b, 0x0237, 0x0243, 0x026e, 0x0280, 0x028f, 0x02a7, + 0x02bc, 0x02ce, 0x02e0, 0x02e9, 0x02fb, 0x030d, 0x032e, 0x0346, + 0x0364, 0x037c, 0x0394, 0x03a3, 0x03bb, 0x03c7, 0x03dc, 0x03f1, + 0x041f, 0x042e, 0x0459, 0x0471, 0x0486, 0x049e, 0x04b0, 0x04bc, + 0x04d4, 0x04e6, 0x04ff, 0x051d, 0x0535, 0x0553, 0x0571, 0x0583, // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + 0x05aa, 0x05ce, 0x05f8, 0x0607, 0x0623, 0x063e, 0x0647, 0x0668, + 0x0680, 0x0698, 0x06b0, 0x06c8, 0x06e0, 0x06ef, 0x0701, 0x071f, + 0x0731, 0x0758, 0x076a, 0x0779, 0x078e, 0x079d, 0x07b5, 0x07d3, + 0x07df, 0x07f7, 0x080c, 0x081e, 0x0845, 0x0854, 0x0878, 0x0890, + 0x0899, 0x08b7, 0x08e2, 0x08fa, 0x0912, 0x0930, 0x093f, 0x095d, + 0x0975, 0x0993, 0x09a2, 0x09ae, 0x09c3, 0x09d8, 0x09e7, 0x0a0c, + 0x0a1e, 0x0a30, 0x0a39, 0x0a70, 0x0a9e, 0x0ac6, 0x0ad8, 0x0aed, + 0x0b02, 0x0b11, 0x0b20, 0x0b2f, 0x0b44, 0x0b59, 0x0b65, 0x0b77, // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0b89, 0x0bb0, 0x0bc5, 0x0bed, 0x0bff, 0x0c1a, 0x0c2c, 0x0c53, + 0x0c68, 0x0c86, 0x0c98, 0x0cb4, 0x0cc6, 0x0cd5, 0x0ced, 0x0d0e, + 0x0d23, 0x0d2f, 0x0d44, 0x0d5f, 0x0d77, 0x0d89, 0x0d9b, 0x0db3, + 0x0dcb, 0x0de3, 0x0df5, 0x0e07, 0x0e19, 0x0e22, 0x0e3d, 0x0e58, + 0x0e70, 0x0e82, 0x0e9a, 0x0ea9, 0x0ebb, 0x0ed6, 0x0ee8, 0x0f09, + 0x0f1e, 0x0f30, 0x0f42, 0x0f60, 0x0f75, 0x0f87, 0x0f96, 0x0fa2, + 0x0fb4, 0x0fc6, 0x0fd8, 0x0fed, 0x0ff9, 0x1011, 0x1020, 0x103b, + 0x104d, 0x104d, 0x1068, 0x1068, 0x1074, 0x108c, 0x108c, 0x109e, // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x109e, 0x10c3, 0x10e8, 0x10fa, 0x1112, 0x1133, 0x1133, 0x1148, + 0x1148, 0x1148, 0x1154, 0x1154, 0x1154, 0x1154, 0x1154, 0x1172, + 0x1172, 0x1181, 0x1193, 0x11ab, 0x11ab, 0x11b7, 0x11b7, 0x11b7, + 0x11b7, 0x11c3, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, + 0x11ea, 0x11fc, 0x1208, 0x1208, 0x1208, 0x1220, 0x1220, 0x1220, + 0x1232, 0x1232, 0x1232, 0x1232, 0x1247, 0x125f, 0x125f, 0x1271, + 0x1271, 0x127d, 0x128f, 0x128f, 0x12a1, 0x12b6, 0x12b6, 0x12c8, + 0x12d7, 0x12e9, 0x12f5, 0x1320, 0x132f, 0x1347, 0x1359, 0x136b, // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x136b, 0x1380, 0x1380, 0x13b1, 0x13b1, 0x13cc, 0x13de, 0x13f6, + 0x13f6, 0x140e, 0x1420, 0x1438, 0x144a, 0x144a, 0x145c, 0x1484, + 0x1484, 0x1493, 0x14c1, 0x14c1, 0x14d0, 0x14d0, 0x14d0, 0x14df, + 0x14df, 0x150a, 0x151f, 0x1537, 0x1556, 0x1556, 0x156b, 0x156b, + 0x157a, 0x1592, 0x1592, 0x159b, 0x159b, 0x15bd, 0x15e5, 0x15e5, + 0x1613, 0x1641, 0x1665, 0x166b, 0x166b, 0x166b, 0x1677, 0x1686, + 0x1686, 0x1692, 0x16b0, 0x16b0, 0x16e2, 0x1714, 0x1714, 0x1726, + 0x1744, 0x1756, 0x1768, 0x1793, 0x17bb, 0x17bb, 0x17bb, 0x17bb, // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x17d7, 0x17e6, 0x17e6, 0x17fb, 0x17fb, 0x1816, 0x1828, 0x1837, + 0x1859, 0x1859, 0x1865, 0x1874, 0x1874, 0x1883, 0x189b, 0x189b, + 0x189b, 0x18b0, 0x18b0, 0x18b0, 0x18d8, 0x18fa, 0x18fa, 0x1919, + 0x192b, 0x193a, 0x1946, 0x1955, 0x1961, 0x1982, 0x1982, 0x1994, + 0x1994, 0x1994, 0x1994, 0x19a0, 0x19a0, 0x19ac, 0x19c4, 0x19c4, + 0x19c4, 0x19c4, 0x19c4, 0x19c4, 0x19e2, 0x19e2, 0x19f7, 0x1a0c, + 0x1a1e, 0x1a40, 0x1a40, 0x1a40, 0x1a5e, 0x1a6d, 0x1a6d, 0x1a6d, + 0x1a6d, 0x1a7f, 0x1a94, 0x1aa6, 0x1aa6, 0x1abe, 0x1ad0, 0x1aeb, // Entry 180 - 1BF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x1aeb, 0x1aeb, 0x1aeb, 0x1aeb, 0x1aeb, 0x1afa, 0x1b06, 0x1b06, + 0x1b06, 0x1b22, 0x1b37, 0x1b49, 0x1b52, 0x1b61, 0x1b61, 0x1b61, + 0x1b61, 0x1b79, 0x1b79, 0x1b8b, 0x1b9d, 0x1baf, 0x1bcd, 0x1bdc, + 0x1bdc, 0x1beb, 0x1bfd, 0x1c0f, 0x1c0f, 0x1c0f, 0x1c2b, 0x1c2b, + 0x1c2b, 0x1c40, 0x1c61, 0x1c73, 0x1c88, 0x1c97, 0x1ca3, 0x1ca3, + 0x1ca3, 0x1cc8, 0x1cda, 0x1cf8, 0x1d0d, 0x1d0d, 0x1d0d, 0x1d1f, + 0x1d1f, 0x1d1f, 0x1d3d, 0x1d3d, 0x1d59, 0x1d6b, 0x1d7d, 0x1d92, + 0x1d92, 0x1d92, 0x1d92, 0x1da1, 0x1dc0, 0x1dc0, 0x1dcf, 0x1dee, // Entry 1C0 - 1FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x1dee, 0x1e1c, 0x1e37, 0x1e52, 0x1e64, 0x1e76, 0x1e88, 0x1eb9, + 0x1ee0, 0x1ef8, 0x1f16, 0x1f3a, 0x1f52, 0x1f52, 0x1f52, 0x1f52, + 0x1f52, 0x1f7d, 0x1f7d, 0x1f98, 0x1f98, 0x1f98, 0x1fb0, 0x1fb0, + 0x1fea, 0x1fea, 0x1fea, 0x2005, 0x201a, 0x203b, 0x203b, 0x203b, + 0x203b, 0x204d, 0x204d, 0x204d, 0x204d, 0x206b, 0x206b, 0x2080, + 0x2092, 0x20c3, 0x20c3, 0x20d5, 0x20ed, 0x20ed, 0x20ed, 0x20ed, + 0x2108, 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x212f, + 0x212f, 0x2151, 0x2151, 0x2151, 0x215d, 0x215d, 0x216f, 0x216f, // Entry 200 - 23F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x016f, + 0x216f, 0x218e, 0x21a7, 0x21c3, 0x21e5, 0x21fd, 0x2215, 0x223a, + 0x224c, 0x224c, 0x224c, 0x225e, 0x226a, 0x2285, 0x2285, 0x22b6, + 0x22c8, 0x22c8, 0x22c8, 0x22d7, 0x22d7, 0x22e9, 0x22fb, 0x2310, + 0x231c, 0x2331, 0x2331, 0x234c, 0x236a, 0x236a, 0x2382, 0x23a7, + 0x23c6, 0x23c6, 0x23c6, 0x23c6, 0x23e7, 0x23e7, 0x23ff, 0x2411, + 0x2411, 0x242c, 0x242c, 0x2447, 0x2462, 0x247d, 0x2486, 0x248f, + 0x248f, 0x248f, 0x248f, 0x248f, 0x24a1, 0x24a1, 0x24a1, 0x24a1, + 0x24b0, 0x24bc, 0x24c8, 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, + // Entry 240 - 27F + 0x24e9, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2513, 0x2537, + 0x2537, 0x2549, 0x2549, 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25b5, + 0x25e6, 0x2618, 0x264f, 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, + 0x2747, 0x2747, 0x2778, 0x27a3, 0x27a3, 0x27bb, 0x27fe, 0x283b, + 0x2859, 0x2887, 0x2887, 0x28b2, 0x28e3, }, }, - { // th - thLangStr, - thLangIdx, - }, - { // ti - "አፍሪቃንሰኛትዊአምሐረኛዓረበኛአዜርባይጃንኛቤላራሻኛቡልጋሪኛበንጋሊኛብሬቶንቦስኒያንካታላንቼክኛወልሽዴኒሽጀርመንግሪከኛእ" + - "ንግሊዝኛኤስፐራንቶስፓኒሽኤስቶኒአንባስክኛፐርሲያኛፊኒሽፋሮኛፈረንሳይኛፍሪሰኛአይሪሽእስኮትስ ጌልክኛጋለቪኛጓራ" + - "ኒጉጃራቲኛዕብራስጥሕንደኛክሮሽያንኛሀንጋሪኛኢንቴር ቋንቋእንዶኑሲኛአይስላንደኛጣሊያንኛጃፓንኛጃቫንኛጊዮርጊያኛ" + - "ካማደኛኮሪያኛኩርድሽኪሩጋዚላቲንኛሊቱአኒየንላቲቪያንማክዶኒኛማላያላምኛማራቲኛማላይኛማልቲስኛኔፖሊኛደችኖርዌይኛ" + - " (ናይ ኝኖርስክ)ኖርዌጂያንኦኪታንኛኦሪያፑንጃቢኛፖሊሽፓሽቶፖርቱጋሊኛሮማኒያንራሽኛስንሃልኛስሎቨክኛስቁቪኛአልቤኒ" + - "ኛሰርቢኛሰሴቶሱዳንኛስዊድንኛሰዋሂሊኛታሚልኛተሉጉኛታይኛትግርኛናይ ቱርኪ ሰብዓይ (ቱርካዊ)ቱርከኛዩክረኒኛኡር" + - "ዱኛኡዝበክኛቪትናምኛዞሳኛዪዲሽዙሉኛታጋሎገኛክሊንግኦንኛፖርቱጋልኛ (ናይ ብራዚል)ፖርቱጋልኛ (ናይ ፖርቱጋል)" + - "ሰርቦ- ክሮዊታን", - []uint16{ // 607 elements + { // os + "абхазагавестӕафрикаансараббагавайрагтӕтӕйрагбашкирагболгайрагбосниагката" + + "лайнагцӕцӕйнагчехагчувашагданиагнемыцагбердзейнаганглисагесперантои" + + "спайнагестойнагбаскагперсайнагфиннагфиджифарерагфранцагирландиагуир" + + "агхорватагвенгериагсомихагиталиагяпойнаггуырдзиагкурдаглатинагмӕчъи" + + "дониронпортугалиагуырыссагкитайагадыгейаграгон англисагбурятагкопта" + + "грагон египтагфилиппинаграгон францаграгон бердзейнагмӕхъӕлонкӕсгон" + + "бӕлхъӕронхъуымыхъхъаглекъагцигайнагнӕзонгӕ ӕвзагавстралиаг немыцагш" + + "вйецариаг немыцагавстралиаг англисагканадӕйаг англисагбритайнаг анг" + + "лисагамерикаг англисаглатинаг америкаг англисагевропӕйаг англисагка" + + "надӕйаг францагшвейцариаг францагбразилиаг португалиагевропӕйаг пол" + + "тугалиагӕнцонгонд китайагтрадицион китайаг", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x001b, 0x002a, 0x002a, - 0x0036, 0x0036, 0x0036, 0x0036, 0x004e, 0x004e, 0x005d, 0x006c, - 0x006c, 0x006c, 0x007b, 0x007b, 0x0087, 0x0096, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, 0x00b4, 0x00bd, - 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00e7, 0x00f9, 0x0105, - 0x0117, 0x0123, 0x0132, 0x0132, 0x013b, 0x013b, 0x0144, 0x0156, - 0x0162, 0x016e, 0x018a, 0x0196, 0x019f, 0x01ae, 0x01ae, 0x01ae, - 0x01bd, 0x01c9, 0x01c9, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, + 0x0000, 0x0000, 0x000e, 0x001a, 0x002c, 0x002c, 0x002c, 0x002c, + 0x003a, 0x003a, 0x0048, 0x0048, 0x0058, 0x0068, 0x0068, 0x007a, + 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0088, 0x009c, 0x00ac, + 0x00ac, 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00c4, 0x00c4, 0x00d0, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00f2, 0x0102, 0x0114, 0x0124, + 0x0134, 0x0140, 0x0152, 0x0152, 0x015e, 0x0168, 0x0176, 0x0184, + 0x0184, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, + 0x01a0, 0x01a0, 0x01a0, 0x01b0, 0x01b0, 0x01c2, 0x01d0, 0x01d0, // Entry 40 - 7F - 0x0200, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0227, - 0x0236, 0x0236, 0x0242, 0x024e, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x026c, 0x0278, 0x0278, 0x0278, 0x0284, - 0x0284, 0x0284, 0x0290, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c, - 0x029c, 0x02ae, 0x02ae, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02cc, - 0x02de, 0x02de, 0x02ea, 0x02f6, 0x0305, 0x0305, 0x0305, 0x0305, - 0x0311, 0x0311, 0x0317, 0x033f, 0x0351, 0x0351, 0x0351, 0x0351, - 0x0360, 0x0360, 0x0360, 0x0369, 0x0369, 0x0378, 0x0378, 0x0381, + 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, + 0x01de, 0x01de, 0x01ec, 0x01ec, 0x01fe, 0x01fe, 0x01fe, 0x01fe, + 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x020a, + 0x020a, 0x020a, 0x020a, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, + 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0228, + 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, + 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, + 0x0228, 0x0228, 0x0228, 0x0228, 0x0230, 0x0230, 0x0230, 0x0230, // Entry 80 - BF - 0x038a, 0x039c, 0x039c, 0x039c, 0x039c, 0x03ab, 0x03b4, 0x03b4, - 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d2, 0x03de, - 0x03de, 0x03de, 0x03de, 0x03ed, 0x03f9, 0x03f9, 0x0402, 0x040e, - 0x041d, 0x042c, 0x0438, 0x0444, 0x0444, 0x044d, 0x0459, 0x0485, - 0x0485, 0x0485, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x04a0, - 0x04ac, 0x04bb, 0x04bb, 0x04ca, 0x04ca, 0x04ca, 0x04ca, 0x04d3, - 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x0230, 0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0256, 0x0256, + 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, + 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, + 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, + 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, + 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, + 0x0256, 0x0256, 0x0256, 0x0264, 0x0264, 0x0264, 0x0264, 0x0264, + 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, // Entry C0 - FF - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x0274, 0x0274, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, + 0x028f, 0x028f, 0x028f, 0x028f, 0x029d, 0x029d, 0x029d, 0x029d, + 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, + 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, // Entry 100 - 13F - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x029d, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, + 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, + 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, + 0x02a9, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, + 0x02c2, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02ef, 0x02ef, + 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, + 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, + 0x02ef, 0x02ef, 0x02ef, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, // Entry 140 - 17F - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, + 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x031e, 0x031e, + 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, + 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x032a, 0x032a, 0x032a, + 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, + 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, + 0x032a, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, + 0x033c, 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, 0x0360, // Entry 180 - 1BF - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, // Entry 1C0 - 1FF - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, + 0x0360, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, // Entry 200 - 23F - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, + 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0389, 0x0389, + 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, + 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, // Entry 240 - 27F - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0531, 0x055c, 0x055c, 0x0576, + 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, + 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, + 0x03ac, 0x03cf, 0x03f4, 0x0417, 0x043a, 0x045b, 0x048b, 0x04ae, + 0x04ae, 0x04ae, 0x04cf, 0x04f2, 0x04f2, 0x04f2, 0x051b, 0x0544, + 0x0544, 0x0544, 0x0544, 0x0565, 0x0586, }, }, - { // to - "lea fakaʻafālalea fakaʻapakasialea fakaʻavesitanilea fakaʻafilikanalea f" + - "akaʻakanilea fakaʻamelikilea fakaʻalakonilea fakaʻalepealea fakaʻasa" + - "mialea fakaʻavalikilea fakaʻaimalalea fakaʻasapaisanilea fakapasikil" + - "ilea fakapelalusilea fakapulukalialea fakapisilamalea fakapamipalale" + - "a fakapengikalilea fakatipetilea fakapeletonilea fakaposinialea faka" + - "katalanilea fakaseselea fakakamololea fakakōsikalea fakakelīlea faka" + - "sekilea fakasilavia-fakasiasilea fakasuvasalea fakauēlesilea fakaten" + - "imaʻakelea fakasiamanelea fakativehilea fakaputenilea fakaʻeuelea fa" + - "kakalisilea fakapālangilea fakaʻesipulanitolea fakasipēnisilea fakaʻ" + - "esitōnialea fakapāsikilea fakapēsialea fakafulālea fakafinilanilea f" + - "akafisilea fakafaloelea fakafalanisēlea fakafilisia-hihifolea fakaʻa" + - "elanilea fakakaelikilea fakakalisialea fakakualanilea fakakutalatile" + - "a fakamangikīlea fakahausalea fakahepelūlea fakahinitīlea fakahili-m" + - "otulea fakakuloisialea fakahaitilea fakahungakalialea fakaʻāmenialea" + - " fakahelelolea fakavahaʻalealea fakaʻinitōnesialea fakavahaʻalingikē" + - "lea fakaʻikipōlea fakasisiuani-īlea fakaʻinupiakilea fakaʻitolea fak" + - "aʻaisilanilea fakaʻītalilea fakaʻinuketitutilea fakasiapanilea fakas" + - "avalea fakaseōsialea fakakongikōlea fakakikuiulea fakakuaniamalea fa" + - "kakasakilea fakakalaʻalisutilea fakakamipōtialea fakakanatalea fakak" + - "ōlealea fakakanulilea fakakāsimilalea fakakulitīlea fakakomilea fak" + - "akoniualilea fakakīsisilea fakalatinalea fakalakisimipekilea fakakan" + - "italea fakalimipūlikilea lingikalalea fakalaulea fakalituanialea fak" + - "alupa-katangalea fakalativialea fakamalakasilea fakamāsololea fakama" + - "ulilea fakamasitōnialea fakaʻinitia-malāialamilea fakamongokōlialea " + - "fakamalatilea fakamaleilea fakamalitalea fakapemalea fakanaululea fa" + - "kanetepele-tokelaulea fakanepalilea fakanetongikālea fakahōlanilea f" + - "akanoauē-ninosikilea fakanouaē-pokimalilea fakanetepele-tongalea fak" + - "anavaholea fakanianisalea fakaʻokitanelea fakaʻosipiuālea fakaʻolomo" + - "lea fakaʻinitia-ʻolāealea fakaʻosetikilea fakapūnusapilea fakapālile" + - "a fakapolanilea fakapasitōlea fakapotukalilea fakakuetisalea fakalai" + - "to-lomēnialea fakaluanitilea fakalōmenialea fakalūsialea fakakiniāua" + - "nitalea fakasanisukulitilea fakasaletīnialea fakasīnitilea fakasami-" + - "tokelaulea fakasangikōlea fakasingihalalea fakasolāvakilea fakasolov" + - "enialea fakahaʻamoalea fakasionalea fakasomalilea fakaʻalapēnialea f" + - "akasēpialea fakasuatilea fakasoto-tongalea fakasunitālea fakasuēteni" + - "lea fakasuahililea fakatamililea fakaʻinitia-telukulea fakatāsikilea" + - " fakatailanilea fakatikilinialea fakatēkimenilea suanalea fakatongal" + - "ea fakatoakelea fakatisongalea fakatatalelea fakatahitilea fakaʻuikū" + - "lilea fakaʻūkalaʻinelea fakaʻūtūlea fakaʻusipekilea fakavenitālea fa" + - "kavietinamilea fakavolapikilea fakaʻualonialea fakaʻuolofolea fakatō" + - "salea fakaītisilea fakaʻiōlupalea fakasuangilea fakasiainalea fakasu" + - "lulea fakaʻatisēlea fakaʻakolilea fakaʻatangimēlea fakaʻatikēlea fak" + - "aʻalepea-tunīsialea fakaʻafilihililea fakaʻakihemilea fakaʻainulea f" + - "akaʻakatialea fakaʻalapamalea fakaʻaleutilea fakaʻalapēnia-kekilea f" + - "akaʻalitai-tongalea fakapālangi-motuʻalea fakaʻangikalea fakaʻalāmit" + - "ilea fakamapuselea fakaʻalaonalea fakaʻalapaholea fakaʻalepea-ʻaisil" + - "ialea fakaʻalauakilea fakaʻalepea-molokolea fakaʻalepea-ʻisipitelea " + - "fakaʻasulea fakaʻilonga-ʻamelikalea fakaʻasitūlialea fakakotavalea f" + - "akaʻauatilea fakapalusilea fakapalilea fakapavālialea fakapasaʻalea " + - "fakapamunilea fakatōpe-pētekilea fakakomalalea fakapesalea fakapēmip" + - "alea fakapetavilea fakapenalea fakapafutilea fakapatakalea fakapalus" + - "i-hihifolea fakaposipulilea fakapikolilea fakapinilea fakapanisalile" + - "a fakakomelea fakasikesikālea fakapisinupilialea fakapakitiālilea fa" + - "kapalailea fakapalahuilea fakapōtolea fakaʻakōselea fakapuliatilea f" + - "akapukisilea fakapululea fakapilinilea fakametūmipalea fakakatolea f" + - "akakalipalea fakakaiukalea fakaʻatisamilea fakasepuanolea fakakikale" + - "a fakasīpisalea fakasakatāilea fakatūkelea fakamalīlea fakasinuki-ta" + - "kotelea fakasokitaulea fakasipeuianilea fakaselokīlea fakaseienelea " + - "fakakūtisi-lolotolea fakakopitikalea fakakapisenolea fakatoake-kilim" + - "ealea fakakasiupialea fakatakotalea fakatalakuālea fakataitalea faka" + - "telaualelea fakasilavelea fakatōkelipilea fakatingikālea fakatisāmal" + - "ea fakatokililea fakasōpia-hifolea fakatusuni-lolotolea fakatualalea" + - " fakahōlani-lotolotolea fakaiola-fonīlea fakatiulalea fakatasakalea " + - "fakaʻemipūlea fakaʻefikilea fakaʻemilialea fakaʻisipitemuʻalea fakaʻ" + - "ekaiukilea fakaʻelamitelea fakapālangi-lotolotolea fakaiūpiki-loloto" + - "lea fakaʻeuōnitolea fakaʻekisitematulalea fakafangilea fakafilipaini" + - "lea fakafinilani-tōnetalelea fakafōngilea fakafalanisē-kasunilea fak" + - "afalanisē-lotolotolea fakafalanisē-motuʻalea fakaʻāpitanolea fakafil" + - "isia-tokelaulea fakafilisia-hahakelea fakafulilānilea fakakālea faka" + - "kakausilea fakasiaina-kanilea fakakaiolea fakakapaialea fakateli-sol" + - "oasitelialea fakasiʻisilea fakakilipasilea fakakilakilea fakasiamane" + - "-hake-lotolotolea fakasiamane-hake-motuʻalea fakakonikanī-koanilea f" + - "akakonitīlea fakakolonitalolea fakakotikalea fakakēpolea fakakalisim" + - "uʻalea fakasiamane-suisilanilea fakaʻuaiūlea fakafalefalelea fakakus" + - "īlea fakaʻuīsinilea fakahaitalea fakasiaina-hakalea fakahauaiʻilea " + - "fakahinitī-fisilea fakahilikainonilea fakahititelea fakamōngilea fak" + - "asōpia-hakelea fakasiaina-siangilea fakahupalea fakaʻipanilea fakaʻi" + - "pipiolea fakaʻilokolea fakaʻingusilea fakaʻingilianilea fakapālangi-" + - "samaikalea fakalosipanilea fakanikōmipalea fakamasamelea fakaʻiuteo-" + - "pēsialea fakaʻiuteo-ʻalepealea fakaʻiutilanilea fakakala-kalipakilea" + - " fakakapilelea fakakasinilea fakasisūlea fakakamipalea fakakavilea f" + - "akakapālitialea fakakanēmipulea fakatiapilea fakamakōnitelea fakakap" + - "uvelitianulea fakakeniangilea fakakololea fakakaingangilea fakakāsil" + - "ea fakakōtanilea fakakoila-sīnilea fakakoualilea fakakilimanisikīlea" + - " fakakakolea fakakalenisinilea fakakimipūnitulea fakakomi-pelemiakil" + - "ea fakakonikanīlea fakakosilaelea fakakepelelea fakakalate-palakilil" + - "ea fakakiliolea fakakinaraiālea fakakalelialea fakakulukilea fakasia" + - "mipalalea fakapafialea fakakolongialea fakakumikilea fakakutenailea " + - "fakalatinolea fakalangilea fakalānitalea fakalamipālea fakalesikiale" + - "a fakakavakava-foʻoulea fakalikulialea fakalivonialea fakalakotalea " + - "fakalomipātilea fakamongikōlea fakalosilea fakaluli-tokelaulea fakal" + - "atakalelea fakalupa-lulualea fakaluisenolea fakalunitālea fakaluolea" + - " fakamisolea fakaluīalea fakasiaina-faʻutohilea fakalasulea fakamatu" + - "lalea fakamafalea fakamakahilea fakamaitililea fakamakasalilea fakam" + - "anitīngikolea fakamasailea fakamapalea fakamokisiālea fakamanetalile" + - "a fakamenetīlea fakamelulea fakamolisienilea fakaʻaelani-lotolotolea" + - " fakamakūa-meʻetolea fakametalea fakamikemakilea fakaminangikapaulea" + - " fakamanisūlea fakamanipulilea fakamohaukilea fakamosilea fakamali-h" + - "ihifolea fakamunitangilea tuifiolea fakakilekilea fakamilanitēsilea " + - "fakamaliwalilea fakamenitauailea fakamienelea fakaʻelisialea fakamas" + - "anitelanilea fakasiaina-mininanilea fakanapoletanolea fakanamalea fa" + - "kasiamane-hifolea fakaneualilea fakaniasilea fakaniuēlea fakaʻaonasa" + - "lea fakakuasiolea fakangiemipōnilea fakanokailea fakanoauē-motuʻalea" + - " fakanovialelea fakanikōlea fakasoto-tokelaulea fakanuelilea fakaneu" + - "ali-motuʻalea fakaniamiuesilea fakanianikolelea fakaniololea fakanes" + - "imalea fakaʻosēselea fakatoake-ʻotomanilea fakapangasinanilea fakapā" + - "lavilea fakapamipangalea fakapapiamēnitolea fakapalaulea fakapikātil" + - "ea fakasiamane-penisilivanialea fakasiamane-lafalafalea fakapēsia-mo" + - "tuʻalea fakasiamane-palatinelea fakafoinikialea fakapiemonitelea fak" + - "aponitikilea fakaponapēlea fakapulūsialea fakapolovenisi-motuʻalea f" + - "akakīsēlea fakakuitisa-simipolasolea fakalasasitanilea fakalapanuile" + - "a fakalalotongalea fakalomaniololea fakalifilea fakalomipōlea fakalo" + - "manilea fakalotumalea fakalusinilea fakalovianalea fakaʻalomanialea " + - "fakaluālea fakasanitauelea fakasakalea fakasamalitani-ʻalāmitilea fa" + - "kasamipululea fakasasakilea fakasanitalilea fakasaulasitilālea fakan" + - "gāmipailea fakasangulea fakasisīlialea fakasikotilanilea fakasaletīn" + - "ia-sasalesulea faka-tonga ‘o Ketesilea fakasenekalea fakasenalea fak" + - "aselilea fakaselikupilea fakakoilapolo-senilea fakaʻaelani-motuʻalea" + - " fakasamositialea fakataselihitilea fakasianilea fakaʻalepea-sātilea" + - " fakasitamolea fakasilesia-hifolea fakaselaiālea fakasami-tongalea f" + - "akasami-lulelea fakasami-ʻinalilea fakasami-sikolitalea fakasoninekē" + - "lea fakasokitianalea fakasuranane-tongikōlea fakasēlēlelea fakasahol" + - "ea fakafilisia-satēlanilea fakasukumalea fakasusūlea fakasumelialea " + - "fakakomololea fakasuliāiā-muʻalea fakasuliāiālea fakasilesialea faka" + - "tululea fakatimenēlea fakatesolea fakatelenolea fakatetumulea fakati" + - "kilēlea fakativilea fakatokelaulea fakasākulilea fakakilingonilea fa" + - "katilingikītelea fakatalisilea fakatamasiekilea fakaniasa-tongalea f" + - "akatoki-pisinilea fakatuloiolea fakatalokolea fakasakōnialea fakatis" + - "īmisianilea fakatati-moselemilea fakatumepukalea fakatūvalulea faka" + - "tasauakilea fakatuvīnialea fakatamasaiti-ʻatilasi-lolotolea fakaʻuti" + - "mulitilea fakaʻūkalitilea fakaʻumipūnitulea fakaʻilonga-tefitolea fa" + - "kavailea fakavenēsialea fakavepisilea fakavelamingi-hihifolea fakafa" + - "lanikoni-lolotolea fakavotikilea fakavōlolea fakavūnisolea fakaʻuali" + - "selilea fakaʻuolaitalea fakaʻualailea fakaʻuasiōlea fakaʻuālipililea" + - " fakasiaina-uūlea fakakalimikilea fakamingilelialea fakasokalea faka" + - "ʻiaolea fakaʻiapilea fakaʻiangipenilea fakaʻiēmipalea fakaneʻēngatū" + - "lea fakakuangitongilea fakasapotekilea fakaʻilonga-pilisilea fakasēl" + - "anilea fakasenakalea fakatamasaiti-molokolea fakasuniʻikai ha lealea" + - " fakasāsālea fakaʻalepea (māmani)lea fakasiamane-ʻaositulialea fakas" + - "iamane-hake-suisilanilea fakapālangi-ʻaositelēlialea fakapālangi-kān" + - "atalea fakapilitānialea fakapālangi-ʻamelikalea fakasipēnisi lātini-" + - "ʻamelikalea fakasipēnisi-‘iulopelea fakasipēnisi-mekisikoulea fakaf" + - "alanisē-kānatalea fakafalanisē-suisilanilea fakasakisoni-hifolea fak" + - "ahōlani-pelesiumelea fakapotukali-palāsililea fakapotukali-ʻiulopele" + - "a fakamolitāvialea fakakuloisia-sēpialea fakasuahili-kongikōlea faka" + - "siaina-fakafaingofualea fakasiaina-tukufakaholo", - []uint16{ // 610 elements + { // pa + paLangStr, + paLangIdx, + }, + { // pa-Arab + "پنجابی", + []uint16{ // 126 elements // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0035, 0x0048, 0x0057, 0x0068, 0x0079, - 0x0089, 0x0099, 0x00aa, 0x00ba, 0x00ce, 0x00de, 0x00ee, 0x00ff, - 0x010f, 0x011f, 0x0130, 0x013e, 0x014e, 0x015d, 0x016d, 0x0179, - 0x0187, 0x0196, 0x01a3, 0x01af, 0x01c8, 0x01d6, 0x01e5, 0x01f8, - 0x0207, 0x0215, 0x0223, 0x0230, 0x023e, 0x024e, 0x0263, 0x0274, - 0x0287, 0x0296, 0x02a4, 0x02b1, 0x02c1, 0x02cd, 0x02da, 0x02eb, - 0x0301, 0x0311, 0x0320, 0x032f, 0x033e, 0x034e, 0x035e, 0x036b, - 0x037a, 0x0389, 0x039a, 0x03aa, 0x03b7, 0x03c9, 0x03da, 0x03e8, - // Entry 40 - 7F - 0x03fa, 0x040f, 0x0426, 0x0436, 0x0449, 0x045b, 0x0468, 0x047a, - 0x048a, 0x049f, 0x04ae, 0x04ba, 0x04c9, 0x04d9, 0x04e7, 0x04f7, - 0x0505, 0x051a, 0x052c, 0x053a, 0x0548, 0x0556, 0x0567, 0x0576, - 0x0582, 0x0592, 0x05a1, 0x05af, 0x05c3, 0x05d1, 0x05e4, 0x05f1, - 0x05fc, 0x060c, 0x0620, 0x062f, 0x063f, 0x064e, 0x065b, 0x066d, - 0x0689, 0x069c, 0x06aa, 0x06b7, 0x06c5, 0x06d1, 0x06de, 0x06f6, - 0x0704, 0x0716, 0x0725, 0x073c, 0x0753, 0x0769, 0x0777, 0x0786, - 0x0797, 0x07a9, 0x07b8, 0x07d1, 0x07e2, 0x07f3, 0x0800, 0x080e, - // Entry 80 - BF - 0x081d, 0x082d, 0x083c, 0x0852, 0x0861, 0x0871, 0x087f, 0x0893, - 0x08a7, 0x08b9, 0x08c8, 0x08dc, 0x08ec, 0x08fd, 0x090e, 0x091f, - 0x092f, 0x093c, 0x094a, 0x095d, 0x096b, 0x0978, 0x098a, 0x0999, - 0x09a9, 0x09b8, 0x09c6, 0x09dd, 0x09ec, 0x09fb, 0x0a0c, 0x0a1d, - 0x0a26, 0x0a33, 0x0a40, 0x0a4f, 0x0a5d, 0x0a6b, 0x0a7c, 0x0a91, - 0x0aa0, 0x0ab1, 0x0ac0, 0x0ad1, 0x0ae1, 0x0af2, 0x0b02, 0x0b0f, - 0x0b1d, 0x0b2e, 0x0b3c, 0x0b4a, 0x0b56, 0x0b66, 0x0b75, 0x0b88, - 0x0b98, 0x0bb1, 0x0bc4, 0x0bd5, 0x0be3, 0x0bf3, 0x0c04, 0x0c14, - // Entry C0 - FF - 0x0c2c, 0x0c42, 0x0c5a, 0x0c6a, 0x0c7c, 0x0c8a, 0x0c9a, 0x0cab, - 0x0cc5, 0x0cd6, 0x0ced, 0x0d07, 0x0d14, 0x0d2e, 0x0d41, 0x0d4f, - 0x0d5e, 0x0d6c, 0x0d78, 0x0d88, 0x0d97, 0x0da5, 0x0dba, 0x0dc8, - 0x0dd4, 0x0de3, 0x0df1, 0x0dfd, 0x0e0b, 0x0e19, 0x0e2e, 0x0e3e, - 0x0e4c, 0x0e58, 0x0e68, 0x0e74, 0x0e85, 0x0e98, 0x0eaa, 0x0eb7, - 0x0ec6, 0x0ed3, 0x0ee3, 0x0ef2, 0x0f00, 0x0f0c, 0x0f1a, 0x0f2b, - 0x0f37, 0x0f45, 0x0f53, 0x0f64, 0x0f73, 0x0f7f, 0x0f8e, 0x0f9e, - 0x0fab, 0x0fb8, 0x0fcd, 0x0fdc, 0x0fed, 0x0ffc, 0x100a, 0x1020, - // Entry 100 - 13F - 0x1030, 0x1040, 0x1055, 0x1065, 0x1073, 0x1083, 0x1090, 0x10a0, - 0x10ae, 0x10bf, 0x10cf, 0x10de, 0x10ec, 0x10ff, 0x1114, 0x1121, - 0x1139, 0x114b, 0x1158, 0x1166, 0x1176, 0x1185, 0x1195, 0x11ab, - 0x11bc, 0x11cd, 0x11e6, 0x11fc, 0x120e, 0x1225, 0x1232, 0x1243, - 0x125d, 0x126b, 0x1283, 0x129d, 0x12b6, 0x12c8, 0x12df, 0x12f5, - 0x1306, 0x1311, 0x1320, 0x1333, 0x133f, 0x134d, 0x1366, 0x1375, - 0x1385, 0x1393, 0x13b0, 0x13cc, 0x13e3, 0x13f2, 0x1404, 0x1412, - 0x141f, 0x1432, 0x144b, 0x145a, 0x146a, 0x1477, 0x1488, 0x1495, - // Entry 140 - 17F - 0x14a8, 0x14b8, 0x14cc, 0x14df, 0x14ed, 0x14fb, 0x150e, 0x1523, - 0x152f, 0x153e, 0x154e, 0x155d, 0x156d, 0x1580, 0x1598, 0x15a8, - 0x15b9, 0x15c7, 0x15dd, 0x15f5, 0x1607, 0x161c, 0x162a, 0x1638, - 0x1645, 0x1653, 0x165f, 0x1671, 0x1682, 0x168f, 0x16a0, 0x16b5, - 0x16c5, 0x16d1, 0x16e2, 0x16ef, 0x16fe, 0x1711, 0x171f, 0x1734, - 0x1740, 0x1752, 0x1765, 0x177b, 0x178c, 0x179b, 0x17a9, 0x17c0, - 0x17cd, 0x17de, 0x17ed, 0x17fb, 0x180c, 0x1819, 0x1829, 0x1837, - 0x1846, 0x1854, 0x1861, 0x1870, 0x187f, 0x188e, 0x18a5, 0x18b4, - // Entry 180 - 1BF - 0x18c3, 0x18d1, 0x18e2, 0x18f2, 0x18fe, 0x1912, 0x1922, 0x1934, - 0x1943, 0x1952, 0x195d, 0x1969, 0x1976, 0x198e, 0x199a, 0x19a8, - 0x19b4, 0x19c2, 0x19d1, 0x19e1, 0x19f5, 0x1a02, 0x1a0e, 0x1a1e, - 0x1a2e, 0x1a3d, 0x1a49, 0x1a5a, 0x1a73, 0x1a89, 0x1a95, 0x1aa5, - 0x1ab9, 0x1ac8, 0x1ad8, 0x1ae7, 0x1af3, 0x1b06, 0x1b17, 0x1b21, - 0x1b2f, 0x1b42, 0x1b52, 0x1b63, 0x1b70, 0x1b80, 0x1b94, 0x1bab, - 0x1bbd, 0x1bc9, 0x1bdd, 0x1beb, 0x1bf8, 0x1c05, 0x1c15, 0x1c23, - 0x1c36, 0x1c43, 0x1c59, 0x1c68, 0x1c75, 0x1c89, 0x1c96, 0x1cac, - // Entry 1C0 - 1FF - 0x1cbd, 0x1cce, 0x1cdb, 0x1ce9, 0x1cf9, 0x1d10, 0x1d23, 0x1d32, - 0x1d43, 0x1d57, 0x1d64, 0x1d73, 0x1d90, 0x1da8, 0x1dbe, 0x1dd6, - 0x1de6, 0x1df7, 0x1e07, 0x1e16, 0x1e26, 0x1e40, 0x1e4e, 0x1e68, - 0x1e7a, 0x1e89, 0x1e9a, 0x1eab, 0x1eb7, 0x1ec6, 0x1ed4, 0x1ee2, - 0x1ef0, 0x1eff, 0x1f11, 0x1f1d, 0x1f2d, 0x1f39, 0x1f56, 0x1f66, - 0x1f74, 0x1f84, 0x1f98, 0x1fa9, 0x1fb6, 0x1fc6, 0x1fd8, 0x1ff3, - 0x200d, 0x201b, 0x2027, 0x2033, 0x2043, 0x2059, 0x2071, 0x2082, - 0x2094, 0x20a1, 0x20b7, 0x20c5, 0x20d9, 0x20e8, 0x20fa, 0x210b, - // Entry 200 - 23F - 0x211f, 0x2134, 0x2145, 0x2156, 0x216f, 0x217f, 0x218b, 0x21a4, - 0x21b2, 0x21bf, 0x21ce, 0x21dc, 0x21f3, 0x2204, 0x2213, 0x221f, - 0x222e, 0x223a, 0x2248, 0x2256, 0x2265, 0x2271, 0x2280, 0x228f, - 0x22a0, 0x22b4, 0x22c2, 0x22d3, 0x22e6, 0x22f9, 0x2307, 0x2315, - 0x2325, 0x2339, 0x234e, 0x235e, 0x236d, 0x237d, 0x238d, 0x23af, - 0x23c2, 0x23d4, 0x23e8, 0x23ff, 0x240a, 0x241a, 0x2428, 0x2440, - 0x2459, 0x2467, 0x2474, 0x2483, 0x2495, 0x24a6, 0x24b5, 0x24c5, - 0x24d8, 0x24ea, 0x24fa, 0x250c, 0x2518, 0x2525, 0x2533, 0x2546, - // Entry 240 - 27F - 0x2557, 0x256b, 0x257e, 0x258e, 0x25a5, 0x25b4, 0x25c2, 0x25da, - 0x25e6, 0x25f3, 0x2601, 0x261b, 0x261b, 0x2636, 0x2654, 0x2673, - 0x268b, 0x269d, 0x26b7, 0x26da, 0x26f5, 0x2710, 0x2710, 0x2729, - 0x2744, 0x2759, 0x2772, 0x278c, 0x27a5, 0x27b7, 0x27ce, 0x27e6, - 0x2802, 0x281d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, }, }, - { // tr - trLangStr, - trLangIdx, + { // pl + plLangStr, + plLangIdx, }, - { // twq - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" + - "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" + - "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" + - "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" + - "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " + - "MandareŋZulu senniTasawaq senni", - []uint16{ // 550 elements + { // prg + "prūsiskan", + []uint16{ // 472 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f, - 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, - 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, - 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, - 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry C0 - FF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 100 - 13F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 140 - 17F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 180 - 1BF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 1C0 - 1FF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 200 - 23F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0246, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, }, }, - { // tzm - "TakanitTamharitTaεrabtTabilarusitTabelɣaritTabinɣalitTačiktTalmanitTayun" + - "anitTanglizttasbelyunitTafarisitTafṛansistTahawsatTahinditTahenɣarit" + - "TindunisitTigbutTaṭalyantTajappunitTajavanitTaxmert ,TalammastTakuri" + - "tTamalizitTaburmanitTanippalitTahulanḍitTabenjabitTappulunitTaburtuɣ" + - "alitTaṛumanitTarusitTarwanditTaṣumalitTaswiditTatamiltTaṭaytTaturkit" + - "TukranitTurdutTaviṭnamitTayurubatTacinwit,MandarintazulutTamaziɣt n " + - "laṭlaṣ", - []uint16{ // 552 elements + { // ps + "امهاريعربيآساميبېلاروسيبلغاريبوسنيالمانيیونانيانګریزيحبشيباسکيفارسيفینلن" + + "ډيفرانسويعبريهنديارمنيایټالويجاپانیکرديلاتینيملغاسيمقدونيمغوليملایا" + + "نېپاليهالېنډيپولنډيپښتوپورتګاليروسيسنسکریټالبانيسویډنیتاجکيترکمنيتا" + + "تارازبکيچینيبلوڅي", + []uint16{ // 211 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0022, 0x002d, - 0x002d, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x0058, 0x0058, 0x0063, - 0x0063, 0x0063, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0080, - 0x0080, 0x0088, 0x0088, 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, + 0x0014, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002e, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0050, 0x0050, 0x0050, 0x0050, 0x005c, 0x006a, 0x006a, 0x006a, + 0x0072, 0x007c, 0x0086, 0x0086, 0x0094, 0x0094, 0x0094, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00aa, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00bc, 0x00bc, // Entry 40 - 7F - 0x0093, 0x009d, 0x009d, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00a3, - 0x00ae, 0x00ae, 0x00b8, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, - 0x00c1, 0x00c1, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00ed, 0x00ed, 0x00ed, - 0x00f7, 0x00f7, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, - 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x010d, 0x010d, 0x0117, + 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, + 0x00ca, 0x00ca, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, + 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00f6, 0x00f6, 0x00f6, 0x0102, + 0x0102, 0x010c, 0x010c, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, + 0x0122, 0x0122, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, + 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x013c, // Entry 80 - BF - 0x0117, 0x0124, 0x0124, 0x0124, 0x0124, 0x012f, 0x0136, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, - 0x0152, 0x0152, 0x015a, 0x015a, 0x015a, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0172, - 0x0178, 0x0178, 0x0178, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, - 0x0184, 0x018d, 0x018d, 0x019e, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x0144, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x015c, 0x015c, + 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, + 0x016a, 0x016a, 0x016a, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, + 0x0182, 0x0182, 0x0182, 0x0182, 0x018c, 0x018c, 0x018c, 0x0198, + 0x0198, 0x0198, 0x0198, 0x0198, 0x01a2, 0x01a2, 0x01a2, 0x01a2, + 0x01a2, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, + 0x01ac, 0x01ac, 0x01ac, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, + 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, // Entry C0 - FF - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 100 - 13F - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 140 - 17F - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 180 - 1BF - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 1C0 - 1FF - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 200 - 23F - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01bb, - }, - }, - { // ug - "ئافارچەئابخازچەئاۋېستاچەئافرىكانچەئاكانچەئامخاراچەئاراگونچەئەرەبچەئاسسام" + - "چەئاۋارچەئايماراچەئەزەرىچەباشقىرتچەبېلارۇسچەبۇلغارچەبىسلاماچەبامبار" + - "اچەبېنگالچەتىبەتچەبىرېتونچەبوسنىيەچەكاتالانچەچېچىنچەچامورروچەكورساچ" + - "ەكرىچەچېخچەقەدىمكى سلاۋيانچەچۇۋاشچەۋېلشچەدانىشچەگېرمانچەدىۋەخىچەبۇت" + - "انچەئېۋېچەگىرېكچەئىنگلىزچەدۇنيا تىلىئىسپانچەئېستونچەباسكىچەپارسچەفۇ" + - "لاچەفىنچەفىجىچەفائېروچەفىرانسۇزچەغەربى فىرىزيەچەئىرېلاندچەسكوتچەگال" + - "ىتسىيانچەگۇئارانىچەگۇجاراتچەمانچەخائۇساچەئىبرانىچەھىندىچەھىرى موتۇچ" + - "ەخورۋاتچەھايتىچەماجارچەئەرمەنچەخېرېروچەئارىلىق تىلھىندونېزىيەچەئىنت" + - "ىرلىڭچەئىبوچەيىچە (سىچۈەن)ئىنۇپىكچەئىدوچەئىسلاندچەئىتاليانچەئىنۇكتى" + - "تۇتچەياپونچەياۋاچەگىرۇزىنچەكونگوچەكىكۇيۇچەكىۋانياماچەقازاقچەگىرېنلا" + - "ندچەكىخمېرچەكانناداچەكورېيەچەكانۇرىچەكەشمىرچەكۇردچەكومىچەكورنىشچەقى" + - "رغىزچەلاتىنچەلىيۇكسېمبۇرگچەگانداچەلىمبۇرگچەلىنگالاچەلائوسچەلىتۋاچەل" + - "ۇبا-كاتانگاچەلاتۋىيەچەماداغاسقارچەمارشالچەماۋرىچەماكېدونچەمالايامچە" + - "موڭغۇلچەماراتچەمالايچەمالتاچەبىرماچەناۋرۇچەشىمالى ندەبەلەچەنېپالچەن" + - "دونگاچەگوللاندىيەچەيېڭى نورۋېگچەنورۋىگىيە بوكمالچەجەنۇبى ندەبەلەچەن" + - "اۋاخوچەنيانجاچەئوكسىتانچەئوجىبۋاچەئوروموچەئورىياچەئوسسېتچەچەپەنجابچ" + - "ەپالىچەپولەكچەپۇشتۇچەپورتۇگالچەكېچياچەرومانىشچەرۇندىچەرۇمىنىيەچەرۇس" + - "چەرىۋانداچەسانسكرىتچەساردىنىيەچەسىندىچەشىمالى سامىچەسانگوچەسىنگالچە" + - "سىلوۋاكچەسىلوۋېنىيەچەساموئاچەشوناچەسومالىچەئالبانچەسېربچەسىۋاتىچەجە" + - "نۇبى سوتوچەسۇنداچەشۋېدچەسىۋالىچەتامىلچەتېلۇگۇچەتاجىكچەتايلاندچەتىگر" + - "ىنياچەتۈركمەنچەسىۋاناچەتوڭانچەتۈركچەسونگاچەتاتارچەتاختىچەئۇيغۇرچەئۇ" + - "كرائىنچەئوردوچەئۆزبېكچەۋېنداچەۋىيېتنامچەۋولاپۇكچەۋاللۇنچەۋولوفچەخوس" + - "اچەيىددىشچەيورۇباچەجۇاڭچەخەنچەزۇلۇچەئاتجېچەئاچولىچەئاداڭمېچەئادىگېي" + - "چەئافرىخىلىچەئاگەمچەئاينۇچەئاككادچەئالېيۇتچەجەنۇبى ئالتاي تىللىرىقە" + - "دىمكى ئىنگلىزچەئانگىكاچەئارامۇچەماپۇچەئاراپاخوچەئاراۋاكچەئاسۇچەئاست" + - "ۇرىيەچەئاۋادىچەبېلۇجىچەبالىچەباساچەبامۇنچەگومالاچەبېجاچەبېمباچەبېنا" + - "چەبافۇتچەبوجپۇرىچەبىكولچەبىنىچەكومچەسىكسىكاچەبىراجچەبودوچەئاكۇسچەبۇ" + - "رىياتچەبۇگىچەبۇلۇچەبىلىنچەمېدۇمباچەكاددوچەكارىبچەكايۇگاچەئاتسامچەسې" + - "بۇچەچىگاچەچىبچاچەچاغاتايچەچۇكچەمارىچەچىنۇك-ژارگونچەچوكتاۋچەچىپېۋيان" + - "چەچېروكىچەچېيېنچەسورانى كۇردچەكوپتىكچەقىرىم تۈركچەكاسزۇبىچەداكوتاچە" + - "دارگىۋاچەتايتاچەدېلاۋارېچەسلاۋچەدوگرىبچەدىنكاچەزارماچەدوگرىچەتوۋەن " + - "سېربچەدۇئالاچەئوتتۇرا گوللاندىيەچەجولاچەدىيۇلاچەدازاگاچەئېمبۇچەئېفى" + - "كچەقەدىمكى مىسىرچەئېكاجۇكچەئېلامىتچەئوتتۇرا ئەسىر ئىنگلىزچەئېۋوندوچ" + - "ەفاڭچەفىلىپپىنچەفونچەئوتتۇرا ئەسىر فىرانسۇزچەقەدىمكى فىرانسۇزچەشىما" + - "لى فىرىزيەچەشەرقى فىرىزيەچەفىرىئۇلىچەگاچەگايوچەگىباياچەگىزچەگىلبېرت" + - "چەئوتتۇرا ئەسىر ئېگىزلىك گېرمانچەقەدىمكى ئېگىزلىك گېرمانچەگوندىچەگو" + - "رونتالوچەگوتچەگرېبوچەقەدىمكى گىرېكچەگېرمانچە شىۋىتسارىيەگۇسىچەگىۋىچ" + - "ىنچەھەيدەچەھاۋايچەخىلىگاينونچەخىتتىتچەمۆڭچەيۇقىرىقى سېربچەخۇپاچەئىب" + - "انچەئىبىبىئوچەئىلوكانوچەئىنگۇشچەلوجبانچەنگومباچەماچامچەئىبرانى پارس" + - "چەئىبرانى ئەرەبچەقارا-قالپاقچەكابىلېچەكاچىنچەجۇچەكامباچەكاۋىچەكابار" + - "دەيچەكانېمبۇچەتياپچەماكوندېچەكابۇۋېردىيانچەكوروچەكاسىچەخوتەنچەكويرا" + - " چىنىچەكاكوچەكالېنجىنچەكىمبۇندۇچەكونكانىچەكوسرايېچەكىپەللېچەقاراچاي-" + - "بالقارچەكارەلچەكۇرۇكچەشامبالاچەبافىياچەكولىشچەقۇمۇقچەكۇتەنايچەلادىن" + - "وچەلانگىچەلانداچەلامباچەلېزگىنچەمونگوچەلوزىچەلۇبا-لۇئاچەلۇيسېنگوچەل" + - "ۇنداچەلۇئوچەمىزوچەلۇياچەمادۇرېسچەمافاچەماگاخىچەمايتىلىچەماكاسارچەما" + - "ندىنگوچەماسايچەماباچەموكشاچەماندارچەمېندېچەمېرۇچەمورىسيېنچەئوتتۇرا " + - "ئەسىر ئىرېلاندچەماكۇۋاچەمېتاچە’مىكماكچەمىناڭكابائۇچەمانجۇچەمانىپۇرى" + - "چەموخوكچەموسسىچەمۇنداڭچەكۆپ تىللاركىرىكچەمىراندېسچەمارۋارىچەميېنېچە" + - "ئېرزاچەناپولىچەناماچەتۆۋەن گېرمانچەنېۋارىچەنىئاسچەنيۇئېچەكۋاسىيوچەن" + - "گېمبۇنچەنوغايچەقەدىمكى نورۋېگچەنىكوچەشىمالى سوتوچەمۇئېرچەنېۋارچەنيا" + - "مۋېزىچەنىيانكولېچەنىئوروچەنىزەماچەئوساگېلارچەئوسمان تۈركچەپانگاسىنا" + - "نچەپەھلەۋىچەپامپانگاچەپاپىيامەنتۇچەپالاۋچەقەدىمكى پارىسچەفىنىكىيەچە" + - "پوناپېئانچەقەدىمكى پروۋېنچالچەراجاستانچەراپانىيچەرومبوچەسىگانچەئارو" + - "مانچەرىۋاچەسانداۋېچەياقۇتچەسامارىتانچەسامبۇرۇچەساساكچەسانتالىچەنگام" + - "بايچەسانگۇچەسىتسىلىيەچەشوتلاندىيەچەسېكنېكاچەسېناچەسېلكاپچەشەرقىي سو" + - "ڭخايچەقەدىمكى ئىرېلاندچەشىلخاچەشانچەچاد ئەرەبچەسىداموچەجەنۇبى سامى " + - "تىللىرىلۇلې سامىچەئىنارى سامىچەسىكولت سامىچەسونىنكەچەسوغدىچەسىرانان" + - "-توڭوچەسېرېرچەساخوچەسۇكۇماچەسۇسۇچەسۈمەرچەكومورىچەكلاسسىك سۈرىيەچەسۈر" + - "ىيەچەتېمنېچەتېسوچەتېرېناچەتېتۇمچەتىگرېچەتىۋچەتوكېلاۋچەكىلىنگونچەتىل" + - "ىنگىتچەتاماشېكچەنياسا توڭانچەتوك-پىسىنچەتوروكوچەسىمشيانچەتۇمبۇكاچەت" + - "ۇۋالۇچەشىمالىي سوڭخايچەتوۋاچەمەركىزى ئاتلاس تاماچاگىتئۇدمۇرتچەئۇگار" + - "ىتىكچەئۇمبۇندۇچەغول تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولايتاچەۋارايچەۋا" + - "شوچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەزاپوتېكچەبىلىس " + - "بەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل مەزمۇنى يوقزا" + - "زاچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچەشىۋىتسارىيە ئ" + - "ېگىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئەنگلىيە ئىنگل" + - "ىزچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئىسپانچەمېكسىك" + - "ا ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىرازىلىيە پورتۇگا" + - "لچەياۋروپا پورتۇگالچەسېرب-كرودىيەچەكونگو سىۋالىچەئاددىي خەنچەمۇرەكك" + - "ەپ خەنچە", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x001e, 0x0030, 0x0044, 0x0052, 0x0064, 0x0076, - 0x0084, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00d6, 0x00e8, 0x00f8, - 0x010a, 0x011c, 0x012c, 0x013a, 0x014c, 0x015e, 0x0170, 0x017e, - 0x0190, 0x019e, 0x01a8, 0x01b2, 0x01d3, 0x01e1, 0x01ed, 0x01fb, - 0x020b, 0x021b, 0x0229, 0x0235, 0x0243, 0x0255, 0x0268, 0x0278, - 0x0288, 0x0296, 0x02a2, 0x02ae, 0x02b8, 0x02c4, 0x02d4, 0x02e8, - 0x0305, 0x0319, 0x0325, 0x033d, 0x0351, 0x0363, 0x036d, 0x037d, - 0x038f, 0x039d, 0x03b2, 0x03c2, 0x03d0, 0x03de, 0x03ee, 0x03fe, - // Entry 40 - 7F - 0x0413, 0x042d, 0x0443, 0x044f, 0x0466, 0x0478, 0x0484, 0x0496, - 0x04aa, 0x04c2, 0x04d0, 0x04dc, 0x04ee, 0x04fc, 0x050c, 0x0522, - 0x0530, 0x0546, 0x0556, 0x0568, 0x0578, 0x0588, 0x0598, 0x05a4, - 0x05b0, 0x05c0, 0x05d0, 0x05de, 0x05fa, 0x0608, 0x061a, 0x062c, - 0x063a, 0x0648, 0x0663, 0x0675, 0x068d, 0x069d, 0x06ab, 0x06bd, - 0x06cf, 0x06df, 0x06ed, 0x06fb, 0x0709, 0x0717, 0x0725, 0x0744, - 0x0752, 0x0762, 0x077a, 0x0793, 0x07b6, 0x07d5, 0x07e5, 0x07f5, - 0x0809, 0x081b, 0x082b, 0x083b, 0x084f, 0x085f, 0x086b, 0x0879, - // Entry 80 - BF - 0x0887, 0x089b, 0x08a9, 0x08bb, 0x08c9, 0x08dd, 0x08e7, 0x08f9, - 0x090d, 0x0923, 0x0931, 0x094a, 0x0958, 0x0968, 0x097a, 0x0992, - 0x09a2, 0x09ae, 0x09be, 0x09ce, 0x09da, 0x09ea, 0x0a03, 0x0a11, - 0x0a1d, 0x0a2d, 0x0a3b, 0x0a4b, 0x0a59, 0x0a6b, 0x0a7f, 0x0a91, - 0x0aa1, 0x0aaf, 0x0abb, 0x0ac9, 0x0ad7, 0x0ae5, 0x0af5, 0x0b09, - 0x0b17, 0x0b27, 0x0b35, 0x0b49, 0x0b5b, 0x0b6b, 0x0b79, 0x0b85, - 0x0b95, 0x0ba5, 0x0bb1, 0x0bbb, 0x0bc7, 0x0bd5, 0x0be5, 0x0bf7, - 0x0c09, 0x0c09, 0x0c1f, 0x0c2d, 0x0c3b, 0x0c4b, 0x0c4b, 0x0c5d, - // Entry C0 - FF - 0x0c5d, 0x0c85, 0x0ca6, 0x0cb8, 0x0cc8, 0x0cd4, 0x0cd4, 0x0ce8, - 0x0ce8, 0x0cfa, 0x0cfa, 0x0cfa, 0x0d06, 0x0d06, 0x0d1c, 0x0d1c, - 0x0d2c, 0x0d3c, 0x0d48, 0x0d48, 0x0d54, 0x0d62, 0x0d62, 0x0d72, - 0x0d7e, 0x0d8c, 0x0d8c, 0x0d98, 0x0da6, 0x0da6, 0x0da6, 0x0db8, - 0x0dc6, 0x0dd2, 0x0dd2, 0x0ddc, 0x0dee, 0x0dee, 0x0dee, 0x0dfc, - 0x0dfc, 0x0e08, 0x0e16, 0x0e28, 0x0e34, 0x0e40, 0x0e4e, 0x0e60, - 0x0e6e, 0x0e7c, 0x0e8c, 0x0e9c, 0x0ea8, 0x0eb4, 0x0ec2, 0x0ed4, - 0x0ede, 0x0eea, 0x0f05, 0x0f15, 0x0f29, 0x0f39, 0x0f47, 0x0f60, - // Entry 100 - 13F - 0x0f70, 0x0f70, 0x0f87, 0x0f99, 0x0fa9, 0x0fbb, 0x0fc9, 0x0fdd, - 0x0fe9, 0x0ff9, 0x1007, 0x1015, 0x1023, 0x103a, 0x103a, 0x104a, - 0x1071, 0x107d, 0x108d, 0x109d, 0x10ab, 0x10b9, 0x10b9, 0x10d6, - 0x10e8, 0x10fa, 0x1126, 0x1126, 0x1138, 0x1138, 0x1142, 0x1156, - 0x1156, 0x1160, 0x1160, 0x118e, 0x11b1, 0x11b1, 0x11d0, 0x11ed, - 0x1201, 0x1209, 0x1209, 0x1209, 0x1215, 0x1225, 0x1225, 0x122f, - 0x1241, 0x1241, 0x127c, 0x12ac, 0x12ac, 0x12ba, 0x12d0, 0x12da, - 0x12e8, 0x1305, 0x132c, 0x132c, 0x132c, 0x1338, 0x134a, 0x1358, - // Entry 140 - 17F - 0x1358, 0x1366, 0x1366, 0x137e, 0x138e, 0x1398, 0x13b5, 0x13b5, - 0x13c1, 0x13cf, 0x13e3, 0x13f7, 0x1407, 0x1407, 0x1407, 0x1417, - 0x1427, 0x1435, 0x1450, 0x146d, 0x146d, 0x1486, 0x1496, 0x14a4, - 0x14ac, 0x14ba, 0x14c6, 0x14da, 0x14ec, 0x14f8, 0x150a, 0x1526, - 0x1526, 0x1532, 0x1532, 0x153e, 0x154c, 0x1563, 0x1563, 0x1563, - 0x156f, 0x1583, 0x1597, 0x1597, 0x15a9, 0x15bb, 0x15cd, 0x15ec, - 0x15ec, 0x15ec, 0x15fa, 0x1608, 0x161a, 0x162a, 0x1638, 0x1646, - 0x1658, 0x1668, 0x1676, 0x1684, 0x1692, 0x16a2, 0x16a2, 0x16a2, - // Entry 180 - 1BF - 0x16a2, 0x16a2, 0x16a2, 0x16b0, 0x16bc, 0x16bc, 0x16bc, 0x16d1, - 0x16e5, 0x16f3, 0x16ff, 0x170b, 0x1717, 0x1717, 0x1717, 0x1729, - 0x1735, 0x1745, 0x1757, 0x1769, 0x177d, 0x178b, 0x1797, 0x17a5, - 0x17b5, 0x17c3, 0x17cf, 0x17e3, 0x1811, 0x1821, 0x1830, 0x1840, - 0x185a, 0x1868, 0x187c, 0x188a, 0x1898, 0x1898, 0x18a8, 0x18bb, - 0x18c9, 0x18dd, 0x18ef, 0x18ef, 0x18fd, 0x190b, 0x190b, 0x190b, - 0x191b, 0x1927, 0x1942, 0x1952, 0x1960, 0x196e, 0x196e, 0x1980, - 0x1992, 0x19a0, 0x19bf, 0x19bf, 0x19cb, 0x19e4, 0x19f2, 0x1a00, - // Entry 1C0 - 1FF - 0x1a14, 0x1a2a, 0x1a3a, 0x1a4a, 0x1a60, 0x1a79, 0x1a91, 0x1aa3, - 0x1ab7, 0x1ad1, 0x1adf, 0x1adf, 0x1adf, 0x1adf, 0x1afc, 0x1afc, - 0x1b10, 0x1b10, 0x1b10, 0x1b26, 0x1b26, 0x1b4b, 0x1b4b, 0x1b4b, - 0x1b5f, 0x1b71, 0x1b71, 0x1b71, 0x1b71, 0x1b7f, 0x1b8d, 0x1b8d, - 0x1b8d, 0x1b8d, 0x1b9f, 0x1bab, 0x1bbd, 0x1bcb, 0x1be1, 0x1bf3, - 0x1c01, 0x1c13, 0x1c13, 0x1c25, 0x1c33, 0x1c49, 0x1c61, 0x1c61, - 0x1c61, 0x1c73, 0x1c7f, 0x1c7f, 0x1c8f, 0x1cac, 0x1ccf, 0x1ccf, - 0x1cdd, 0x1ce7, 0x1cfc, 0x1d0c, 0x1d0c, 0x1d0c, 0x1d30, 0x1d45, - // Entry 200 - 23F - 0x1d5e, 0x1d77, 0x1d89, 0x1d97, 0x1db2, 0x1dc0, 0x1dcc, 0x1dcc, - 0x1ddc, 0x1de8, 0x1df6, 0x1e06, 0x1e25, 0x1e35, 0x1e35, 0x1e35, - 0x1e43, 0x1e4f, 0x1e5f, 0x1e6d, 0x1e7b, 0x1e85, 0x1e97, 0x1e97, - 0x1eab, 0x1ebf, 0x1ebf, 0x1ed1, 0x1eea, 0x1eff, 0x1eff, 0x1f0f, - 0x1f0f, 0x1f21, 0x1f21, 0x1f33, 0x1f43, 0x1f62, 0x1f6e, 0x1f9c, - 0x1fae, 0x1fc4, 0x1fd8, 0x1fe5, 0x1fef, 0x1fef, 0x1fef, 0x1fef, - 0x1fef, 0x1ffb, 0x1ffb, 0x2009, 0x2019, 0x202b, 0x2039, 0x2045, - 0x2045, 0x2045, 0x2055, 0x2055, 0x2061, 0x206b, 0x2075, 0x2085, - // Entry 240 - 27F - 0x2093, 0x2093, 0x20a5, 0x20b7, 0x20d4, 0x20d4, 0x20e4, 0x2118, - 0x2124, 0x2140, 0x214c, 0x2187, 0x2187, 0x21ac, 0x21e4, 0x220d, - 0x222c, 0x224f, 0x2272, 0x229e, 0x22bd, 0x22dc, 0x22dc, 0x22fd, - 0x2328, 0x2328, 0x2328, 0x2351, 0x2374, 0x2374, 0x238f, 0x23aa, - 0x23c1, 0x23dc, + 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, + 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, + 0x01b4, 0x01b4, 0x01be, }, }, - { // uk - ukLangStr, - ukLangIdx, + { // pt + ptLangStr, + ptLangIdx, }, - { // ur - urLangStr, - urLangIdx, + { // pt-PT + ptPTLangStr, + ptPTLangIdx, }, - { // ur-IN - "افریقیکارسیکائیکنڑکردلٹويایزرمہمعیاری مراقشی تمازیقیجدید معیاری عربیآسان" + - " چینی", - []uint16{ // 609 elements + { // qu + "Afrikaans SimiAmarico SimiArabe SimiAsames SimiAzerbaiyano SimiBaskir Si" + + "miBielorruso SimiBulgaro SimiBangla SimiTibetano SimiBreton SimiBosn" + + "io SimiCatalan SimiCorso SimiCheco SimiGales SimiDanes SimiAleman Si" + + "miDivehi SimiGriego SimiIngles SimiEspañol SimiEstonio SimiEuskera S" + + "imiPersa SimiFulah SimiFines SimiFeroes SimiFrances SimiFrison SimiI" + + "rlandes SimiGaelico Escoces SimiGallego SimiGujarati SimiHausa SimiH" + + "ebreo SimiHindi SimiCroata SimiHaitiano Criollo SimiHungaro SimiArme" + + "nio SimiIndonesio SimiIgbo SimiYi SimiIslandes SimiItaliano SimiInuk" + + "titut SimiJapones SimiGeorgiano SimiKazajo SimiGroenlandes SimiKhmer" + + " SimiKannada SimiCoreano SimiKirghiz SimiLuxemburgues SimiLao SimiLi" + + "tuano SimiLeton SimiMaori SimiMacedonio SimiMalayalam SimiMongol Sim" + + "iMarathi SimiMalayo SimiMaltes SimiNepali SimiNeerlandes SimiNoruego" + + " SimiOccitano SimiOdia SimiPunyabi SimiPolaco SimiPashto SimiPortugu" + + "es SimiRunasimiRomanche SimiRumano SimiRuso SimiKinyarwanda SimiSans" + + "crito SimiSindhi SimiChincha Sami SimiCingales SimiEslovaco SimiEslo" + + "veno SimiAlbanes SimiSerbio SimiSueco SimiSuajili SimiTamil SimiTelu" + + "gu SimiTayiko SimiTailandes SimiTigriña SimiTurcomano SimiSetsuana S" + + "imiTurco SimiTartaro SimiUigur SimiUcraniano SimiUrdu SimiUzbeko Sim" + + "iVietnamita SimiWolof SimiIsixhosa SimiYoruba SimiChino SimiIsizulu " + + "SimiMapuche SimiCheroqui SimiChawpi Kurdo SimiBajo Sorbio SimiFilipi" + + "no SimiAlsaciano SimiHmong Daw SimiAlto Sorbio SimiKonkani SimiMohaw" + + "k SimiSesotho Sa Leboa SimiPapiamento SimiKʼicheʼ SimiSakha SimiQull" + + "a Sami SimiSami Lule SimiSami Inari SimiSami Skolt SimiSiriaco Simi", + []uint16{ // 529 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x001a, 0x001a, + 0x0024, 0x002f, 0x002f, 0x002f, 0x003f, 0x004a, 0x0059, 0x0065, + 0x0065, 0x0065, 0x0070, 0x007d, 0x0088, 0x0093, 0x009f, 0x009f, + 0x009f, 0x00a9, 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00bd, 0x00c7, + 0x00d2, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f3, 0x00f3, 0x0100, + 0x010c, 0x0118, 0x0122, 0x012c, 0x0136, 0x0136, 0x0141, 0x014d, + 0x0158, 0x0165, 0x0179, 0x0185, 0x0185, 0x0192, 0x0192, 0x019c, + 0x01a7, 0x01b1, 0x01b1, 0x01bc, 0x01d1, 0x01dd, 0x01e9, 0x01e9, // Entry 40 - 7F - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x0024, 0x0024, 0x0024, 0x0024, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, + 0x01e9, 0x01f7, 0x01f7, 0x0200, 0x0207, 0x0207, 0x0207, 0x0214, + 0x0221, 0x022f, 0x023b, 0x023b, 0x0249, 0x0249, 0x0249, 0x0249, + 0x0254, 0x0264, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286, + 0x0286, 0x0286, 0x0292, 0x0292, 0x02a3, 0x02a3, 0x02a3, 0x02a3, + 0x02ab, 0x02b7, 0x02b7, 0x02c1, 0x02c1, 0x02c1, 0x02cb, 0x02d9, + 0x02e7, 0x02f2, 0x02fe, 0x0309, 0x0314, 0x0314, 0x0314, 0x0314, + 0x031f, 0x031f, 0x032e, 0x032e, 0x033a, 0x033a, 0x033a, 0x033a, + 0x0347, 0x0347, 0x0347, 0x0350, 0x0350, 0x035c, 0x035c, 0x0367, // Entry 80 - BF - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, + 0x0372, 0x0380, 0x0388, 0x0395, 0x0395, 0x03a0, 0x03a9, 0x03b9, + 0x03c7, 0x03c7, 0x03d2, 0x03e3, 0x03e3, 0x03f0, 0x03fd, 0x040a, + 0x040a, 0x040a, 0x040a, 0x0416, 0x0421, 0x0421, 0x0421, 0x0421, + 0x042b, 0x0437, 0x0441, 0x044c, 0x0457, 0x0465, 0x0472, 0x0480, + 0x048d, 0x048d, 0x0497, 0x0497, 0x04a3, 0x04a3, 0x04ad, 0x04bb, + 0x04c4, 0x04cf, 0x04cf, 0x04de, 0x04de, 0x04de, 0x04e8, 0x04f5, + 0x04f5, 0x0500, 0x0500, 0x050a, 0x0516, 0x0516, 0x0516, 0x0516, + 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, // Entry C0 - FF - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, + 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052f, 0x052f, // Entry 100 - 13F - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, + 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0550, + 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, + 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, + 0x0550, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, + 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, + 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, + 0x055d, 0x055d, 0x055d, 0x055d, 0x056b, 0x056b, 0x056b, 0x056b, // Entry 140 - 17F - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0579, + 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, + 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, + 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, + 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, + 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0595, 0x0595, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, // Entry 180 - 1BF - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, + 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x05a0, 0x05a0, 0x05a0, + 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, + 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, + 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05b5, // Entry 1C0 - 1FF - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - // Entry 200 - 23F - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, + 0x05b5, 0x05b5, 0x05b5, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, + 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, + 0x05c4, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, + 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, + 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, + 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, + 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, + // Entry 200 - 23F + 0x05dc, 0x05eb, 0x05f9, 0x0608, 0x0617, 0x0617, 0x0617, 0x0617, + 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, + 0x0623, + }, + }, + { // rm + "afarabchasianavesticafrikaansakanamaricaragonaisarabassamiavaricaymaraas" + + "erbeidschanicbaschkirbielorussbulgarbislamabambarabengaltibetanbreto" + + "nbosniaccatalantschetschenchamorrocorscreetschecslav da baselgiatsch" + + "uvaschkimricdanaistudestgmaledivicdzongkhaewegrecenglaisesperantospa" + + "gnolestonbascpersianfulahfinlandaisfidschianferraisfranzosfrisirland" + + "aisgaelic scotgalicianguaranigujaratimanxhaussaebraichindihiri motuc" + + "roathaitianungaraisarmenhererointerlinguaindonaisinterlingueigbosich" + + "uan yiinupiakidoislandaistalianinuktitutgiapunaisjavanaisgeorgiankon" + + "gokikuyukuanyamacasacgrönlandaiscambodschankannadacoreankanurikashmi" + + "ricurdkomicornickirghislatinluxemburgaisgandalimburgaislingalalaotli" + + "tuanluba-katangalettonmalagassimarschallaismaorimacedonmalayalammong" + + "olicmarathimalaicmaltaisbirmannaurundebele dal nordnepalaisndongaoll" + + "andaisnorvegiais nynorsknorvegais bokmålndebele dal sidnavajonyanjao" + + "ccitanojibwaoromooriyaosseticpunjabipalipolacpaschtoportugaisquechua" + + "rumantschrundirumenrusskinyarwandasanscritsardsindhisami dal nordsan" + + "gosingalaisslovacslovensamoanshonasomalialbanaisserbswazisotho dal s" + + "idsundanaissvedaissuahilitamiltelugutadjiktailandaistigrinyaturkment" + + "swanatongatirctsongatatartahitianuiguricucranaisurduusbecvendavietna" + + "maisvolapukvallonwolofxhosajiddicyorubazhuangchinaiszuluacehacoliand" + + "angmeadygaiafrihiliainuaccadicaleuticaltaic dal sidenglais veglangik" + + "aarameicaraucanicarapahoarawakasturianawadhibelutschibalinaisbasaabe" + + "dschabembabhojpuribikolbinisiksikabrajburiatbugiblincaddocaribicatsa" + + "mcebuanochibchatschagataicchuukaismaripatuà chinookchoctawchipewyanc" + + "herokeecheyennecoptictirc crimeankaschubicdakotadargwadelawareslavey" + + "dogribdinkadogribass sorbdualaollandais mesaundiulaefikegipzian vegl" + + "ekajukelamiticenglais mesaunewondofangfilippinofonfranzos mesaunfran" + + "zos veglfris dal nordfris da l’ostfriulangagayogbayageezgilbertaistu" + + "destg mesaunvegl tudestg da scrittiragondigorontalogoticgrebogrec ve" + + "gltudestg svizzergwichʼinhaidahawaianhiligaynonettitichmongaut sorbh" + + "upaibanilocanoingushlojbangiudaic-persiangiudaic-arabkarakalpakkabyl" + + "ekachinjjukambakawikabardictyapkorokhasikhotanaiskimbundukonkanikosr" + + "aeankpellekarachay-balkarcareliankurukhkumukkutenailadinolahndalamba" + + "lezghianlomongoloziluba-lulualuisenolundaluolushaimaduraismagahimait" + + "hilimakassarmandingomasaimokshamandarmendeirlandais mesaunmicmacmina" + + "ngkabaumanchumanipurimohawkmossiplurilingcreekmirandaismarwarierzyan" + + "eapolitanbass tudestgnewariniasniuenogainordic vegln’kosotho dal nor" + + "dnewari classicnyamwezinyankolenyoronzimaosagetirc ottomanpangasinan" + + "pahlavipampangapapiamentopalaupersian veglfenizianponapeanprovenzal " + + "veglrajasthanirapanuirarotongaromaniaromunicsandawejakutarameic sama" + + "ritansasaksantalisicilianscotselkupirlandais veglshansidamosami dal " + + "sidsami lulesami inarisami skoltsoninkesogdiansranan tongoserersukum" + + "asususumericsiric classicsirictemneterenotetumtigretivtokelauklingon" + + "ictlingittamasheqlingua tsongatok pisintsimshiantumbukatuvalutuvinia" + + "nudmurtugariticmbundulinguas betg determinadasvaivoticwalamowaraywas" + + "hokalmukyaoyapaiszapotecsimbols da Blisszenagazuninagins cuntegns li" + + "nguisticszazatudestg austriacenglais australianenglais canadaisengla" + + "is britannicenglais americanspagnol latinamericanspagnol ibericfranz" + + "os canadaisfranzos svizzerflamportugais brasilianportugais iberianmo" + + "ldavserbo-croatchinais simplifitgàchinais tradiziunal", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0027, 0x0030, + 0x0034, 0x003a, 0x0040, 0x0046, 0x0055, 0x005d, 0x0066, 0x006c, + 0x0073, 0x007a, 0x0080, 0x0087, 0x008d, 0x0094, 0x009b, 0x00a6, + 0x00ae, 0x00b2, 0x00b6, 0x00bc, 0x00cc, 0x00d6, 0x00dc, 0x00e2, + 0x00e9, 0x00f2, 0x00fa, 0x00fd, 0x0101, 0x0108, 0x0111, 0x0118, + 0x011d, 0x0121, 0x0128, 0x012d, 0x0137, 0x0140, 0x0147, 0x014e, + 0x0152, 0x015b, 0x0166, 0x016e, 0x0175, 0x017d, 0x0181, 0x0187, + 0x018d, 0x0192, 0x019b, 0x01a0, 0x01a7, 0x01af, 0x01b4, 0x01ba, + // Entry 40 - 7F + 0x01c5, 0x01cd, 0x01d8, 0x01dc, 0x01e6, 0x01ed, 0x01f0, 0x01f9, + 0x01ff, 0x0208, 0x0211, 0x0219, 0x0221, 0x0226, 0x022c, 0x0234, + 0x0239, 0x0245, 0x0250, 0x0257, 0x025d, 0x0263, 0x026b, 0x026f, + 0x0273, 0x0279, 0x0280, 0x0285, 0x0291, 0x0296, 0x02a0, 0x02a7, + 0x02ab, 0x02b1, 0x02bd, 0x02c3, 0x02cc, 0x02d8, 0x02dd, 0x02e4, + 0x02ed, 0x02f5, 0x02fc, 0x0302, 0x0309, 0x030f, 0x0314, 0x0324, + 0x032c, 0x0332, 0x033b, 0x034d, 0x035e, 0x036d, 0x0373, 0x0379, + 0x0380, 0x0386, 0x038b, 0x0390, 0x0397, 0x039e, 0x03a2, 0x03a7, + // Entry 80 - BF + 0x03ae, 0x03b7, 0x03be, 0x03c7, 0x03cc, 0x03d1, 0x03d5, 0x03e0, + 0x03e8, 0x03ec, 0x03f2, 0x03ff, 0x0404, 0x040d, 0x0413, 0x0419, + 0x041f, 0x0424, 0x042a, 0x0432, 0x0436, 0x043b, 0x0448, 0x0451, + 0x0458, 0x045f, 0x0464, 0x046a, 0x0470, 0x047a, 0x0482, 0x0489, + 0x048f, 0x0494, 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b2, 0x04ba, + 0x04be, 0x04c3, 0x04c8, 0x04d2, 0x04d9, 0x04df, 0x04e4, 0x04e9, + 0x04ef, 0x04f5, 0x04fb, 0x0502, 0x0506, 0x050a, 0x050f, 0x0517, + 0x051d, 0x051d, 0x0525, 0x0525, 0x0529, 0x0530, 0x0530, 0x0537, + // Entry C0 - FF + 0x0537, 0x0545, 0x0551, 0x0557, 0x055e, 0x0567, 0x0567, 0x056e, + 0x056e, 0x056e, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, + 0x057c, 0x0582, 0x058b, 0x0593, 0x0593, 0x0598, 0x0598, 0x0598, + 0x0598, 0x059f, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, + 0x05ac, 0x05b1, 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05bc, + 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c6, 0x05ca, 0x05ca, 0x05ce, + 0x05ce, 0x05d3, 0x05da, 0x05da, 0x05df, 0x05e6, 0x05e6, 0x05ed, + 0x05f8, 0x0600, 0x0604, 0x0612, 0x0619, 0x0622, 0x062a, 0x0632, + // Entry 100 - 13F + 0x0632, 0x0638, 0x0638, 0x0644, 0x0644, 0x064d, 0x0653, 0x0659, + 0x0659, 0x0661, 0x0667, 0x066d, 0x0672, 0x0672, 0x0677, 0x0680, + 0x0680, 0x0685, 0x0695, 0x0695, 0x069a, 0x069a, 0x069a, 0x069e, + 0x069e, 0x06ab, 0x06b1, 0x06b9, 0x06c7, 0x06c7, 0x06cd, 0x06cd, + 0x06d1, 0x06da, 0x06da, 0x06dd, 0x06dd, 0x06eb, 0x06f7, 0x06f7, + 0x0704, 0x0713, 0x071a, 0x071c, 0x071c, 0x071c, 0x0720, 0x0725, + 0x0725, 0x0729, 0x0733, 0x0733, 0x0741, 0x075a, 0x075a, 0x075f, + 0x0768, 0x076d, 0x0772, 0x077b, 0x078a, 0x078a, 0x078a, 0x078a, + // Entry 140 - 17F + 0x0793, 0x0798, 0x0798, 0x079f, 0x079f, 0x07a9, 0x07b0, 0x07b5, + 0x07bd, 0x07bd, 0x07c1, 0x07c5, 0x07c5, 0x07cc, 0x07d2, 0x07d2, + 0x07d2, 0x07d8, 0x07d8, 0x07d8, 0x07e7, 0x07f3, 0x07f3, 0x07fd, + 0x0803, 0x0809, 0x080c, 0x0811, 0x0815, 0x081d, 0x081d, 0x0821, + 0x0821, 0x0821, 0x0821, 0x0825, 0x0825, 0x082a, 0x0833, 0x0833, + 0x0833, 0x0833, 0x0833, 0x0833, 0x083b, 0x083b, 0x0842, 0x084a, + 0x0850, 0x085f, 0x085f, 0x085f, 0x0867, 0x086d, 0x086d, 0x086d, + 0x086d, 0x0872, 0x0879, 0x087f, 0x087f, 0x0885, 0x088a, 0x0892, + // Entry 180 - 1BF + 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x0899, 0x089d, 0x089d, + 0x089d, 0x08a7, 0x08ae, 0x08b3, 0x08b6, 0x08bc, 0x08bc, 0x08bc, + 0x08bc, 0x08c4, 0x08c4, 0x08ca, 0x08d2, 0x08da, 0x08e2, 0x08e7, + 0x08e7, 0x08ed, 0x08f3, 0x08f8, 0x08f8, 0x08f8, 0x0908, 0x0908, + 0x0908, 0x090e, 0x0919, 0x091f, 0x0927, 0x092d, 0x0932, 0x0932, + 0x0932, 0x093b, 0x0940, 0x0949, 0x0950, 0x0950, 0x0950, 0x0955, + 0x0955, 0x0955, 0x095f, 0x095f, 0x096b, 0x0971, 0x0975, 0x0979, + 0x0979, 0x0979, 0x0979, 0x097e, 0x0989, 0x0989, 0x098f, 0x099d, + // Entry 1C0 - 1FF + 0x099d, 0x09ab, 0x09b3, 0x09bb, 0x09c0, 0x09c5, 0x09ca, 0x09d6, + 0x09e0, 0x09e7, 0x09ef, 0x09f9, 0x09fe, 0x09fe, 0x09fe, 0x09fe, + 0x09fe, 0x0a0a, 0x0a0a, 0x0a12, 0x0a12, 0x0a12, 0x0a1a, 0x0a1a, + 0x0a28, 0x0a28, 0x0a28, 0x0a32, 0x0a39, 0x0a42, 0x0a42, 0x0a42, + 0x0a42, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a50, 0x0a50, 0x0a57, + 0x0a5c, 0x0a6d, 0x0a6d, 0x0a72, 0x0a79, 0x0a79, 0x0a79, 0x0a79, + 0x0a81, 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a8b, + 0x0a8b, 0x0a99, 0x0a99, 0x0a99, 0x0a9d, 0x0a9d, 0x0aa3, 0x0aa3, + // Entry 200 - 23F + 0x0aa3, 0x0aaf, 0x0ab8, 0x0ac2, 0x0acc, 0x0ad3, 0x0ada, 0x0ae6, + 0x0aeb, 0x0aeb, 0x0aeb, 0x0af1, 0x0af5, 0x0afc, 0x0afc, 0x0b09, + 0x0b0e, 0x0b0e, 0x0b0e, 0x0b13, 0x0b13, 0x0b19, 0x0b1e, 0x0b23, + 0x0b26, 0x0b2d, 0x0b2d, 0x0b36, 0x0b3d, 0x0b3d, 0x0b45, 0x0b52, + 0x0b5b, 0x0b5b, 0x0b5b, 0x0b5b, 0x0b64, 0x0b64, 0x0b6b, 0x0b71, + 0x0b71, 0x0b79, 0x0b79, 0x0b7f, 0x0b87, 0x0b8d, 0x0ba6, 0x0ba9, + 0x0ba9, 0x0ba9, 0x0ba9, 0x0ba9, 0x0bae, 0x0bae, 0x0bae, 0x0bae, + 0x0bb4, 0x0bb9, 0x0bbe, 0x0bbe, 0x0bbe, 0x0bc4, 0x0bc4, 0x0bc4, // Entry 240 - 27F - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0095, + 0x0bc7, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd4, 0x0be4, + 0x0be4, 0x0bea, 0x0bea, 0x0bee, 0x0c09, 0x0c0d, 0x0c0d, 0x0c0d, + 0x0c1d, 0x0c1d, 0x0c2f, 0x0c3f, 0x0c50, 0x0c60, 0x0c75, 0x0c83, + 0x0c83, 0x0c83, 0x0c93, 0x0ca2, 0x0ca2, 0x0ca6, 0x0cb9, 0x0cca, + 0x0cd0, 0x0cdb, 0x0cdb, 0x0cef, 0x0d02, }, }, - { // uz - uzLangStr, - uzLangIdx, + { // rn + "IgikaniIkimuharikiIcarabuIkibelarusiyaIkinyabuligariyaIkibengaliIgicekeI" + + "kidageIkigerekiIcongerezaIcesipanyoloIgiperisiIgifaransaIgihawusaIgi" + + "hindiIkinyahongiriyaIkinyendoziyaIkiguboIgitaliyaniIkiyapaniIkinyeja" + + "vaIgikambodiyaIkinyakoreyaIkinyamaleziyaIkinyabirimaniyaIkinepaliIgi" + + "holandiIgipunjabiIkinyapolonyeIgiporutugariIkirundiIkinyarumaniyaIki" + + "rusiyaIkinyarwandaIgisomaliIgisuweduwaIgitamiliIkinyatayilandiIgitur" + + "ukiyaIkinyayukereniInyeyuruduIkinyaviyetinamuIkiyorubaIgishinwaIkizu" + + "lu", + []uint16{ // 181 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0012, 0x0012, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0026, 0x0036, + 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, + 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0061, 0x0061, 0x006d, + 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, + 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a0, 0x00a0, 0x00a0, + // Entry 40 - 7F + 0x00a0, 0x00ad, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00bf, 0x00bf, 0x00c8, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + 0x00ea, 0x00ea, 0x00ea, 0x00f8, 0x00f8, 0x0108, 0x0108, 0x0108, + 0x0111, 0x0111, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x0125, 0x0125, 0x0132, + // Entry 80 - BF + 0x0132, 0x013f, 0x013f, 0x013f, 0x0147, 0x0155, 0x015e, 0x016a, + 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, + 0x016a, 0x016a, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, + 0x017e, 0x017e, 0x0187, 0x0187, 0x0187, 0x0196, 0x0196, 0x0196, + 0x0196, 0x0196, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01af, + 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, + 0x01c9, 0x01d2, 0x01d2, 0x01db, 0x01e2, + }, }, - { // uz-Arab - "دریپشتواوزبیک", - []uint16{ // 170 elements + { // ro + roLangStr, + roLangIdx, + }, + { // ro-MD + "wolayttaswahili (R. D. Congo)", + []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x001a, - }, - }, - { // uz-Cyrl - "АбхазчаАфриканчаАмхарчаАрабчаАссамчаОзарбайжончаБеларусчаБолгарчаБенгалч" + - "аТибетчаБосниячаКаталанчаЧехчаУэлсчаДаниячаОлмончаГрекчаИнглизчаЭсп" + - "ерантоИспанчаЭстончаБаскчаФорсчаФинчаФижичаФарэрчаФранцузчаҒарбий ф" + - "ризианчаИрландчаГалицийчаГуараниГужаратиХаусаИбронийҲиндчаХорватчаГ" + - "аитианчаВенгрчаАрманчаИндонезиячаИгбоИсландчаИталянчаЯпончаЯванчаГр" + - "узинчаҚозоқчаХмерчаКаннадаКорейсчаКашмирчаКурдчаҚирғизчаЛотинчаЛюкс" + - "ембургчаЛаоЛитвачаЛатишчаМалагасиМаориМакедончаМалайаламМаратиМалай" + - "чаМальтачаБирманчаНепалчаГолландчаНорвегча НинорскНорвегча БокмалОр" + - "ияПанжобчаПолякчаПуштуПортугалчаКвечуаРоманчаРуминчаРусчаСанскритча" + - "СиндхиСинхалаСловакчаСловенчаСомаличаАлбанчаСербчаСунданчаШведчаСуа" + - "хилиТамилчаТелугуТожикчаТайчаТигриньяТуркманчаТонгочаТуркчаТатарчаУ" + - "йғурчаУкраинчаУрдуЎзбекВьетнамчаВолофчаХосаЙорубаХитойчаЗулуФилипин" + - "оШвейцария немисчасиГавайчаНомаълум тилСтандарт Марокаш ТамазитТил " + - "таркиби йўқЛотин Америка испанчасиФламандча", - []uint16{ // 603 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, 0x0020, 0x002e, 0x002e, - 0x003a, 0x0048, 0x0048, 0x0048, 0x0060, 0x0060, 0x0072, 0x0082, - 0x0082, 0x0082, 0x0092, 0x00a0, 0x00a0, 0x00b0, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00cc, 0x00cc, 0x00cc, 0x00d8, 0x00e6, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x0100, 0x0110, 0x0122, 0x0130, - 0x013e, 0x014a, 0x0156, 0x0156, 0x0160, 0x016c, 0x017a, 0x018c, - 0x01ab, 0x01bb, 0x01bb, 0x01cd, 0x01db, 0x01eb, 0x01eb, 0x01f5, - 0x0203, 0x020f, 0x020f, 0x021f, 0x0231, 0x023f, 0x024d, 0x024d, - // Entry 40 - 7F - 0x024d, 0x0263, 0x0263, 0x026b, 0x026b, 0x026b, 0x026b, 0x027b, - 0x028b, 0x028b, 0x0297, 0x02a3, 0x02b3, 0x02b3, 0x02b3, 0x02b3, - 0x02c1, 0x02c1, 0x02cd, 0x02db, 0x02eb, 0x02eb, 0x02fb, 0x0307, - 0x0307, 0x0307, 0x0317, 0x0325, 0x033d, 0x033d, 0x033d, 0x033d, - 0x0343, 0x0351, 0x0351, 0x035f, 0x036f, 0x036f, 0x0379, 0x038b, - 0x039d, 0x039d, 0x03a9, 0x03b7, 0x03c7, 0x03d7, 0x03d7, 0x03d7, - 0x03e5, 0x03e5, 0x03f7, 0x0416, 0x0433, 0x0433, 0x0433, 0x0433, - 0x0433, 0x0433, 0x0433, 0x043b, 0x043b, 0x044b, 0x044b, 0x0459, - // Entry 80 - BF - 0x0463, 0x0477, 0x0483, 0x0491, 0x0491, 0x049f, 0x04a9, 0x04a9, - 0x04bd, 0x04bd, 0x04c9, 0x04c9, 0x04c9, 0x04d7, 0x04e7, 0x04f7, - 0x04f7, 0x04f7, 0x0507, 0x0515, 0x0521, 0x0521, 0x0521, 0x0531, - 0x053d, 0x054b, 0x0559, 0x0565, 0x0573, 0x057d, 0x058d, 0x059f, - 0x059f, 0x05ad, 0x05b9, 0x05b9, 0x05c7, 0x05c7, 0x05d5, 0x05e5, - 0x05ed, 0x05f7, 0x05f7, 0x0609, 0x0609, 0x0609, 0x0617, 0x061f, - 0x061f, 0x062b, 0x062b, 0x0639, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - // Entry C0 - FF - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - // Entry 100 - 13F - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, - 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0651, - 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, - 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, - 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, - 0x0651, 0x0651, 0x0676, 0x0676, 0x0676, 0x0676, 0x0676, 0x0676, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry C0 - FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 100 - 13F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 140 - 17F - 0x0676, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 180 - 1BF - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 1C0 - 1FF - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 200 - 23F - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, - 0x0684, 0x0684, 0x0684, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, - 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, - 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, // Entry 240 - 27F - 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x06c9, - 0x06c9, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5, - 0x06e5, 0x06e5, 0x06e5, 0x0711, 0x0711, 0x0711, 0x0711, 0x0711, - 0x0711, 0x0711, 0x0723, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x001d, }, }, - { // vai - "ꕉꕪꘋꕉꕆꕌꔸꕞꕌꖝꔆꕞꖩꔻꗂꔠꗸꘋꗩꕭꔷꗿꗡꕧꕮꔧꗥꗷꘋꕶꕱꕐꘊꔧꗨꗡꔻꘂꘋꗱꘋꔻꕌꖙꕢꔦꔺꖽꔟꗸꘋꔤꖆꕇꔻꘂꘋꔤꕼꔤꕚꔷꘂꘋꕧꕐꕇꔧꕧꕙꕇꔧ" + - "ꕃꘈꗢꖏꔸꘂꘋꕮꔒꔀꗩꕆꔻꕇꕐꔷꗍꔿꖛꕨꔬꗁꔒꔻꕶꕿꕃꔤꖄꕆꕇꘂꘋꗐꖺꔻꘂꘋꕟꖙꕡꖇꕮꔷꖬꔨꗵꘋꕚꕆꔷꕚꔤꗋꕃꖳꖴꔓꕇꘂꘋꖺꖦꔲꕩꕯ" + - "ꕆꔧꖎꖄꕑꕦꕇꔧꖮꖨꕙꔤ", - []uint16{ // 557 elements + { // rof + "KiakaniKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigi" + + "rikiKiingerezaKihispaniaKiajemiKyifaransaKihausaKihindiKihungariKiin" + + "donesiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKibur" + + "maKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwand" + + "aKisomaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuK" + + "iyorubaKichinaKizuluKihorombo", + []uint16{ // 481 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x0036, - 0x0036, 0x0036, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x005d, 0x005d, 0x0066, - 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x007e, - 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x0087, - 0x0087, 0x008d, 0x008d, 0x008d, 0x008d, 0x0099, 0x0099, 0x0099, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, + 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, + 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0056, 0x0056, 0x0060, + 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071, + 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0078, + 0x0078, 0x007f, 0x007f, 0x007f, 0x007f, 0x0088, 0x0088, 0x0088, // Entry 40 - 7F - 0x0099, 0x00ab, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00c0, 0x00c0, 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff, - 0x0108, 0x0108, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x0117, 0x0120, + 0x0088, 0x0093, 0x0093, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, + 0x00a3, 0x00a3, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c2, 0x00c2, 0x00c2, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d2, 0x00d2, 0x00d2, + 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, + 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f5, // Entry 80 - BF - 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x013b, 0x014a, 0x0153, - 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, - 0x0168, 0x0168, 0x0171, 0x0171, 0x0171, 0x0177, 0x0177, 0x0177, - 0x0177, 0x0177, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x018f, - 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01ad, 0x01ad, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x00f5, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x0104, 0x010a, 0x0115, + 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, + 0x0115, 0x0115, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x0124, 0x0124, 0x012b, 0x012b, 0x012b, 0x0135, 0x0135, 0x0135, + 0x0135, 0x0135, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x0146, + 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, + 0x0157, 0x015f, 0x015f, 0x0166, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, // Entry C0 - FF - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, // Entry 100 - 13F - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, // Entry 140 - 17F - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, // Entry 180 - 1BF - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, // Entry 1C0 - 1FF - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry 200 - 23F - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c2, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x0175, }, }, - { // vai-Latn - "AkaŋAmiháriLahabuBhelarusaŋBhɔgerɛŋBhɛŋgáliChɛJamáĩHɛlɛŋPooPanyɛĩPɛɛsiyɛ" + - "ŋFɛŋsiHawusaHíiŋdiHɔŋgérɛŋÍndonisiyɛŋÍgboItáliyɛŋJapaníĩJavaníĩKimɛ" + - "ɛ̃ tɛKoríyɛŋMaléeeBhɛmísiNipaliDɔchiPuŋjabhiPɔ́lésiPotokíiRomíniyɛŋ" + - "RɔshiyɛŋRawundaSomáliSúwídɛŋTamíliTáiTɔ́kiYukureniyɛŋƆduViyamíĩYórób" + - "haChaniĩZúluVai", - []uint16{ // 557 elements + { // ru + ruLangStr, + ruLangIdx, + }, + {}, // ru-UA + { // rw + "IkinyafurikaneriInyetuwiInyamuharikiIcyarabuIcyasamiziInyazeribayijaniIk" + + "ibelarusiyaUrunyabuligariyaIkibengaliInyebiritoniInyebosiniyaIgikata" + + "laniIgicekeIkigaluwaIkidaninwaIkidageIkigerekiIcyongerezaIcyesiperan" + + "toIcyesipanyoloIcyesitoniyaIkibasikiInyeperisiIgifinilandeInyefaroyi" + + "ziIgifaransaIgifiriziyaniIkirilandiIkigaluwa cy’IgisweduwaIkigalisiy" + + "aInyaguwaraniInyegujaratiIgiheburayoIgihindiIgikorowasiyaIgihongiriy" + + "aIkinyarumeniyaUrurimi GahuzamiryangoIkinyendoziyaUruhuzandimiIgisil" + + "andeIgitaliyaniIkiyapaniInyejavaInyejeworujiyaIgikambodiyaIgikanadaI" + + "gikoreyaInyekuridishiInkerigiziIkilatiniIlingalaIkilawotiyaniIkilitu" + + "waniyaIkinyaletoviyaniIkimasedoniyaniIkimalayalamiIkimongoliIkimarat" + + "iIkimalayiIkimalitezeIkinepaliIkinerilandeInyenoruveji (Nyonorusiki)" + + "IkinoruvejiInyogusitaniInyoriyaIgipunjabiIgipoloneImpashitoIgiporutu" + + "galiIkinyarumaniyaIkirusiyaKinyarwandaIgisansikiriIgisindiInyesimpal" + + "ezeIgisilovakiIkinyasiloveniyaIgisomaliIcyalubaniyaIgiseribeInyeseso" + + "toInyesudaniIgisuweduwaIgiswahiliIgitamiliIgiteluguIgitayiInyatigiri" + + "nyaInyeturukimeniIgiturukiyaIkiwiguriIkinyayukereniInyeyuruduInyeyuz" + + "ubekiIkinyaviyetinamuInyehawusaInyeyidishiInyezuluIkinyafilipineInye" + + "kilingoniInyeporutigali (Brezili)Inyeporutigali (Igiporutigali)Inyes" + + "eribiya na Korowasiya", + []uint16{ // 610 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000d, 0x000d, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0029, - 0x0029, 0x0029, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x004a, 0x004a, 0x0052, - 0x0052, 0x0052, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006b, - 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0080, 0x0080, 0x0080, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0018, 0x0024, 0x0024, + 0x002c, 0x0036, 0x0036, 0x0036, 0x0046, 0x0046, 0x0053, 0x0063, + 0x0063, 0x0063, 0x006d, 0x006d, 0x0079, 0x0085, 0x0090, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0097, 0x0097, 0x0097, 0x00a0, 0x00aa, + 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ba, 0x00c5, 0x00d2, 0x00df, + 0x00eb, 0x00f4, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x0116, 0x0120, + 0x012d, 0x0137, 0x0150, 0x015b, 0x0167, 0x0173, 0x0173, 0x0173, + 0x017e, 0x0186, 0x0186, 0x0193, 0x0193, 0x019f, 0x01ad, 0x01ad, // Entry 40 - 7F - 0x0080, 0x008e, 0x008e, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x009e, 0x009e, 0x00a7, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00bd, 0x00bd, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00d7, 0x00d7, 0x00d7, - 0x00dd, 0x00dd, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f6, + 0x01c3, 0x01d0, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01e6, + 0x01f1, 0x01f1, 0x01fa, 0x0202, 0x0210, 0x0210, 0x0210, 0x0210, + 0x0210, 0x0210, 0x021c, 0x0225, 0x022e, 0x022e, 0x022e, 0x023b, + 0x023b, 0x023b, 0x0245, 0x024e, 0x024e, 0x024e, 0x024e, 0x0256, + 0x0263, 0x0270, 0x0270, 0x0280, 0x0280, 0x0280, 0x0280, 0x028f, + 0x029c, 0x02a6, 0x02af, 0x02b8, 0x02c3, 0x02c3, 0x02c3, 0x02c3, + 0x02cc, 0x02cc, 0x02d8, 0x02f2, 0x02fd, 0x02fd, 0x02fd, 0x02fd, + 0x0309, 0x0309, 0x0309, 0x0311, 0x0311, 0x031b, 0x031b, 0x0324, // Entry 80 - BF - 0x00f6, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x010a, 0x0115, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0139, 0x0139, 0x0139, - 0x0139, 0x0139, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, 0x014d, - 0x0151, 0x0151, 0x0151, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x0163, 0x0163, 0x016a, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x032d, 0x033a, 0x033a, 0x033a, 0x033a, 0x0348, 0x0351, 0x035c, + 0x0368, 0x0368, 0x0370, 0x0370, 0x0370, 0x037d, 0x0388, 0x0398, + 0x0398, 0x0398, 0x03a1, 0x03ad, 0x03b6, 0x03b6, 0x03c0, 0x03ca, + 0x03d5, 0x03df, 0x03e8, 0x03f1, 0x03f1, 0x03f8, 0x0405, 0x0413, + 0x0413, 0x0413, 0x041e, 0x041e, 0x041e, 0x041e, 0x0427, 0x0435, + 0x043f, 0x044b, 0x044b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0465, + 0x0470, 0x0470, 0x0470, 0x0470, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, // Entry C0 - FF - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, // Entry 100 - 13F - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, + 0x0478, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, // Entry 140 - 17F - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry 180 - 1BF - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + // Entry 180 - 1BF + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, // Entry 1C0 - 1FF - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, // Entry 200 - 23F - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x0172, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, + 0x0486, 0x0486, 0x0486, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + // Entry 240 - 27F + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, + 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x04ab, 0x04c9, + 0x04c9, 0x04e3, }, }, - { // vi - viLangStr, - viLangIdx, - }, - { // vun + { // rwk "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + - "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKyi" + - "vunjo", - []uint16{ // 564 elements + "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKir" + + "uwa", + []uint16{ // 487 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, @@ -11411,737 +11462,702 @@ var langHeaders = [220]header{ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 200 - 23F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x01a1, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x019f, }, }, - { // wae - "AbčasišAfrikánsAmharišArabišAssamesišAymaraSerbaidšanišWísrussišBulgariš" + - "BengališTibetišBosnišKatalanišTšečišWalisišDänišTitšMalediwišButaniš" + - "GričišEnglišSchpanišEstnišBaskišPersišFinišFidšianišWälšIrišGalizišG" + - "uaraniGujaratiHausaHebräišHindiKroatišHaitianišUngarišArmenišIndones" + - "išIgboIisländišItalienišJapanišGeorgišKazačišKambodšanišKannadaKorea" + - "nišKašmirišKurdišKirgisišLatinišLuxemburgišLingalaLaotišLitauišLetti" + - "šMalagásiMaoriMazedonišMalayalamMongolišMarathiMalaíšMaltesišBurmes" + - "išNordndebeleNepalesišHoländišNorwegiš NynorskNorwegiš BokmålNyanjaO" + - "riyaOsétišPandšabišPolnišPaštuPortugisišQuečuaRätromanišRundiRumäniš" + - "RusišRuandišSanskritSindhiNordsamišSangoSingalesišSlowakišSlowenišSa" + - "moanišShonaSomališAlbanišSerbišSwaziSüdsothoSundanesišSchwedišSuahel" + - "išTamilišTeluguTadšikišThailändišTigrinjaTurkmenišTswanaTongaTürkišT" + - "songaTaitišUigurišUkrainišUrduUsbekišVendaVietnamesišWolofXhosaYorub" + - "aChinesišZuluEfikFilipinišHawaíanišNordsothoJakutišTetumNiwmelanesiš" + - "Unbekannti SchpračWalserÖštričišes TitšSchwizer HočtitšAuštrališes E" + - "nglišKanadišes EnglišBritišes EnglišAmerikanišes EnglišLatiamerikani" + - "šes SchpanišIberišes SchpanišKanadišes WälšSchwizer WälšFlämišBrasi" + - "lianišes PortugisišIberišes PortugisišVereifačts ChinesišTraditionel" + - "ls Chinesiš", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0012, 0x001a, 0x001a, - 0x0021, 0x002b, 0x002b, 0x0031, 0x003f, 0x003f, 0x004a, 0x0053, - 0x0053, 0x0053, 0x005c, 0x0064, 0x0064, 0x006b, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x007e, 0x007e, 0x007e, 0x0086, 0x008d, - 0x0092, 0x009c, 0x00a4, 0x00a4, 0x00ac, 0x00b3, 0x00b3, 0x00bc, - 0x00c3, 0x00ca, 0x00d1, 0x00d1, 0x00d7, 0x00e2, 0x00e2, 0x00e8, - 0x00e8, 0x00ed, 0x00ed, 0x00f5, 0x00fc, 0x0104, 0x0104, 0x0109, - 0x0112, 0x0117, 0x0117, 0x011f, 0x0129, 0x0131, 0x0139, 0x0139, + { // sah + "АбхаастыыАппырыкааныстыыАмхаардыыАраабтыыАваардыыАдьырбайдьаанныыБөлөрүү" + + "стүүБулҕаардыыБенгаллыыТибиэттииБосныйалыыКаталаанныыЧэчиэннииЧиэхт" + + "ииДаатскайдыыНиэмэстииГириэктииАаҥыллыыЫспаанныыЭстиэнийэлииПиэрист" + + "ииПииннииБоронсуустууБэҥгиэрдииЭрмээннииЫтаалыйалыыДьоппуоннууКурус" + + "ууннууХаһаахтыыКэриэйдииКыргыстыыЛатыынныыМоҕуоллууМалаайдыыНьыпаал" + + "лыыПандьаабтыыПортугааллыыРумыынныыНууччалыыСловаактыыАлбаанныыТамы" + + "ллыыТөлүгүлүүТадьыыктыыТатаардыыУйгуурдууУкрайыыньыстыыҮзбиэктииКыт" + + "айдыыЗуулулууАлеуттууАстуурдууКиин куурдууПилипииннииНагаайдыысаха " + + "тыла", + []uint16{ // 489 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0012, 0x0012, 0x0030, 0x0030, 0x0042, 0x0042, + 0x0052, 0x0052, 0x0062, 0x0062, 0x0082, 0x0082, 0x0098, 0x00ac, + 0x00ac, 0x00ac, 0x00be, 0x00d0, 0x00d0, 0x00e4, 0x00fa, 0x010c, + 0x010c, 0x010c, 0x010c, 0x011a, 0x011a, 0x011a, 0x011a, 0x0130, + 0x0142, 0x0142, 0x0142, 0x0142, 0x0154, 0x0164, 0x0164, 0x0176, + 0x018e, 0x018e, 0x01a0, 0x01a0, 0x01ae, 0x01ae, 0x01ae, 0x01c6, + 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, + 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01da, 0x01ec, 0x01ec, // Entry 40 - 7F - 0x0139, 0x0143, 0x0143, 0x0147, 0x0147, 0x0147, 0x0147, 0x0152, - 0x015c, 0x015c, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c, - 0x0175, 0x0175, 0x0182, 0x0189, 0x0192, 0x0192, 0x019c, 0x01a3, - 0x01a3, 0x01a3, 0x01ac, 0x01b4, 0x01c0, 0x01c0, 0x01c0, 0x01c7, - 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e6, 0x01e6, 0x01eb, 0x01f5, - 0x01fe, 0x0207, 0x020e, 0x0216, 0x021f, 0x0228, 0x0228, 0x0233, - 0x023d, 0x023d, 0x0247, 0x0258, 0x0269, 0x0269, 0x0269, 0x026f, - 0x026f, 0x026f, 0x026f, 0x0274, 0x027c, 0x0287, 0x0287, 0x028e, - // Entry 80 - BF - 0x0294, 0x029f, 0x02a6, 0x02b2, 0x02b7, 0x02c0, 0x02c6, 0x02ce, - 0x02d6, 0x02d6, 0x02dc, 0x02e6, 0x02eb, 0x02f6, 0x02ff, 0x0308, - 0x0311, 0x0316, 0x031e, 0x0326, 0x032d, 0x0332, 0x033b, 0x0346, - 0x034f, 0x0358, 0x0360, 0x0366, 0x0370, 0x037c, 0x0384, 0x038e, - 0x0394, 0x0399, 0x03a1, 0x03a7, 0x03a7, 0x03ae, 0x03b6, 0x03bf, - 0x03c3, 0x03cb, 0x03d0, 0x03dc, 0x03dc, 0x03dc, 0x03e1, 0x03e6, - 0x03e6, 0x03ec, 0x03ec, 0x03f5, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, + 0x0202, 0x0202, 0x0218, 0x0218, 0x022e, 0x022e, 0x022e, 0x022e, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0252, 0x0252, 0x0252, 0x0252, + 0x0252, 0x0252, 0x0264, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, + 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, + 0x0276, 0x0288, 0x0288, 0x029a, 0x029a, 0x029a, 0x029a, 0x029a, + 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, + 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02c4, 0x02c4, 0x02c4, + // Entry 80 - BF + 0x02c4, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02ee, 0x0300, 0x0300, + 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0314, 0x0314, + 0x0314, 0x0314, 0x0314, 0x0326, 0x0326, 0x0326, 0x0326, 0x0326, + 0x0326, 0x0326, 0x0336, 0x0348, 0x035c, 0x035c, 0x035c, 0x035c, + 0x035c, 0x035c, 0x035c, 0x035c, 0x036e, 0x036e, 0x0380, 0x039c, + 0x039c, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, + 0x03ae, 0x03ae, 0x03ae, 0x03be, 0x03ce, 0x03ce, 0x03ce, 0x03ce, + 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03de, // Entry C0 - FF - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, + 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03f0, + 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, + 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, + 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, + 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, + 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, + 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, // Entry 100 - 13F - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03fd, 0x03fd, 0x03fd, - 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, + 0x0407, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, // Entry 140 - 17F - 0x0407, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, // Entry 180 - 1BF - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x041b, 0x041b, 0x041b, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x041d, 0x041d, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, // Entry 1C0 - 1FF - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - // Entry 200 - 23F - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, - 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0435, 0x0435, 0x0435, - 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, - 0x0435, 0x0435, 0x0435, 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, - 0x0448, 0x0448, 0x0448, 0x0448, 0x044e, 0x044e, 0x044e, 0x044e, - 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, - // Entry 240 - 27F - 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, - 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x0462, 0x0474, 0x0489, - 0x049b, 0x04ac, 0x04c1, 0x04dc, 0x04ef, 0x04ef, 0x04ef, 0x0500, - 0x050f, 0x050f, 0x0517, 0x0531, 0x0546, 0x0546, 0x0546, 0x0546, - 0x055b, 0x0572, + 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, + 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, + 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, + 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, + 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, + 0x0440, }, }, - { // xog - "OluakaaniOluamharikiOluwarabuOlubelarusiOlubulugariyaOlubengaliOluceekeO" + - "ludaakiOluyonaaniOlungerezaOlusipanyaOluperusiOlufalansaOluhawuzaOlu" + - "hinduOluhangareOluyindonezyaOluyiboOluyitaleOlujapaniOlunnajjavaOluk" + - "meOlukoreyaOlumalayiOlubbamaOlunepaliOluholandiOlupunjabiOlupolandiO" + - "lupotugiiziOlulomaniyaOlulasaOlunarwandaOlusomaliyaOluswideniOlutami" + - "iruOluttaayiOlutakeOluyukurayineOlu-uruduOluvyetinaamuOluyorubaOluca" + - "yinaOluzzuluOlusoga", - []uint16{ // 573 elements + { // saq + "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + + "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + + "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + + "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + + "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + + "rubaKichinaKizuluKisampur", + []uint16{ // 491 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028, 0x0035, - 0x0035, 0x0035, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0063, 0x0063, 0x006d, - 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, - 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x009b, 0x009b, 0x009b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, + 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, + 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, // Entry 40 - 7F - 0x009b, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, - 0x00b8, 0x00b8, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00e4, 0x00e4, 0x00ec, 0x00ec, 0x00ec, - 0x00f5, 0x00f5, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0109, 0x0109, 0x0113, + 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, + 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, + 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, // Entry 80 - BF - 0x0113, 0x011f, 0x011f, 0x011f, 0x011f, 0x012a, 0x0131, 0x013c, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0151, 0x0151, 0x015b, 0x015b, 0x015b, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x0178, - 0x0181, 0x0181, 0x0181, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, - 0x018e, 0x0197, 0x0197, 0x01a0, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, + 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, + 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, + 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, + 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry C0 - FF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 100 - 13F - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 140 - 17F - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 180 - 1BF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, // Entry 1C0 - 1FF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 200 - 23F - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01af, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0171, }, }, - { // yav - "akánɛamalíképakaspielúsebulgálɛpengálɛ́ɛcɛ́kɛ́ɛŋndiámanyavánɛíŋgilísénu" + - "ɛspanyɔ́lɛnupɛ́lisɛfeleŋsípakasíndíɔ́ŋgɛíndonísiɛíboitáliɛndiámanyá" + - "vanɛkímɛɛkolíemáliɛbímanɛnunipálɛnilándɛnupunsapíɛ́nupolonɛ́ɛnupɔlit" + - "ukɛ́ɛnulumɛ́ŋɛnulúsenuluándɛ́ɛnusomalíɛnusuetuanutámulenutáyɛnutúluk" + - "enukeleniɛ́ŋɛnulutúnufiɛtnamíɛŋnuyolúpasinúɛnusulúnuasue", - []uint16{ // 576 elements + { // sbp + "IshiyakaniIshiyamuhaliIshiyalabuIshibelalusiIshibulugaliaIshibangilaIshi" + + "shekiIshijelumaniIshigilikiIshingelesaIshihisipaniyaIshiajemiIshifal" + + "ansaIshihawusaIshihindiIshihungaliIshihindonesiaIshihigiboIshihitali" + + "yanoIshijapaniIshijavaIshikambodiaIshikoleyaIshimalesiyaIshibulumaIs" + + "hinepaliIshiholansiIshipunjabiIshipolandiIshilenoIshilomaniyaIshilus" + + "iIshinyalwandaIshisomaliIshiswidiIshitamiliIshitayilandiIshitulukiIs" + + "hiyukilaniyaIshiwuludiIshivietinamuIshiyolubaIshishinaIshisuluIshisa" + + "ngu", + []uint16{ // 496 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001e, 0x0027, - 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x004a, 0x004a, 0x004a, 0x004a, 0x0052, 0x005e, 0x005e, 0x006e, - 0x006e, 0x006e, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0088, - 0x0088, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002c, 0x0039, + 0x0039, 0x0039, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x0044, 0x0044, 0x0044, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006e, 0x006e, 0x007c, + 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a, + 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00ae, 0x00ae, 0x00ae, // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc, - 0x00e6, 0x00e6, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00fd, 0x00fd, 0x010a, + 0x00ae, 0x00bc, 0x00bc, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00d4, 0x00d4, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, + 0x00e6, 0x00e6, 0x00f2, 0x00f2, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x00fc, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0112, 0x0112, 0x0112, + 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0132, 0x0132, 0x013d, // Entry 80 - BF - 0x010a, 0x011a, 0x011a, 0x011a, 0x011a, 0x0127, 0x012e, 0x013c, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0179, - 0x0180, 0x0180, 0x0180, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, - 0x0190, 0x0199, 0x0199, 0x01a0, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x013d, 0x0145, 0x0145, 0x0145, 0x0145, 0x0151, 0x0159, 0x0166, + 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, + 0x0166, 0x0166, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, + 0x0179, 0x0179, 0x0183, 0x0183, 0x0183, 0x0190, 0x0190, 0x0190, + 0x0190, 0x0190, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a8, + 0x01b2, 0x01b2, 0x01b2, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, + 0x01bf, 0x01c9, 0x01c9, 0x01d2, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, // Entry C0 - FF - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, // Entry 100 - 13F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, // Entry 140 - 17F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, // Entry 180 - 1BF - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, // Entry 1C0 - 1FF - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 200 - 23F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01ad, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01e3, }, }, - { // yi - "אַפֿאַראַפֿריקאַנסאַמהאַרישאַראַגאנישאַראַבישאַסאַמישאַזערביידזשאַנישבעל" + - "אַרוסישבולגאַרישבענגאַלישטיבעטישברעטאנישבאסנישקאַטאַלאנישטשעכישקלוי" + - "סטער־סלאַווישוועלשישדענישדײַטשגריכישענגלישעספּעראַנטאשפּאַנישעסטישב" + - "אַסקישפּערסישפֿינישפֿידזשיפֿאַראישפֿראַנצויזישמערב־פֿריזישאירישסקאט" + - "יש געלישגאַלישישמאַנקסהאַוסאַהעברעאישהינדיקראאַטישאונגערישאַרמענישא" + - "ינדאנעזישאידאאיסלאַנדישאיטאַליענישיאַפּאַנישיאַוואַנעזישגרוזינישקאַ" + - "זאַכישכמערקאַנאַדאַקארעאישקורדישקארנישקירגיזישלאטיינישלוקסעמבורגישל" + - "אַאליטווישלעטישמאַארישמאַקעדאנישמאַלאַיאַלאַםמאנגאלישמאַלטעזישבירמא" + - "ַנישנעפּאַלישהאלענדישנײַ־נארוועגישנארוועגישאקסיטאַנישאסעטישפּוילישפ" + - "ּאַשטאָפּארטוגעזישרומענישרוסישסאַנסקריטסאַרדישסינדהינארדסאַמישסינהא" + - "ַלישסלאוואַקישסלאווענישסאַמאאַניששאנאַסאמאַלישאַלבאַנישסערביששוועדי" + - "שסוואַהילישטאַמילטורקמענישטאָטערישאוקראַאינישאורדואוזבעקישוויעטנאַמ" + - "עזישוואלאַפּוקייִדישכינעזישזולואַקאַדישאַלט ענגלישאַראַמישבאַלינעזי" + - "שבײַערישסעבואַנישקרים־טערקישקאַשובישאונטער־סארבישזשאלא־פֿאנימיטל ענ" + - "גלישפֿיליפּינאאַלט־פֿראַנצויזישדרום־פֿריזישמזרח־פֿריזישמיטל הויכדוי" + - "טשאַלט־ הויכדויטשגאטישאוראַלט־גריכישפידזשי הינדיאייבער־סארבישלאזשבא" + - "ָןיידיש־פערסישלאַדינאליווישמיזאנאַפּאליטַנישנידערדײַטשאַלט פּערסישפ" + - "ּרייסישרוסינישסיציליאַנישסקאטסאַלט־אירישאונטער שלעזישslyסומערישקאמא" + - "ריששלעזישטיגרעאומבאַוואוסטע שפּראַךמערב פֿלעמישפֿלעמישסערבא־קראאַטי" + - "שקאנגא־סוואַהיליש", - []uint16{ // 608 elements + { // se + "afrikánsagiellaaragoniagiellaarábagiellavilges-ruoššagiellabulgáriagiell" + + "abengalgiellatibetagiellabretonagiellabosniagiellakatalánagiellacors" + + "icagiellačeahkagiellakymragielladánskkagielladuiskkagielladivehigiel" + + "ladzongkhagiellagreikkagiellaeaŋgalsgiellaspánskkagiellaesttegiellap" + + "ersijagiellasuomagiellafidjigiellafearagiellafránskkagiellaoarjifrii" + + "sagiellaiirragiellagujaratagiellamanksgiellahaussagiellahindigiellak" + + "roátiagiellahaitigiellaungárgiellaarmeenagiellaindonesiagiellaislánd" + + "dagiellaitáliagiellajapánagiellajavagiellageorgiagiellakazakgiellaka" + + "mbodiagiellakoreagiellakurdigiellakomigiellakornagiellaláhtengiellal" + + "uxemburggagiellalaogiellaliettuvagiellalátviagiellamaorigiellamakedo" + + "niagiellamongoliagiellamaltagiellaburmagiellanepaligiellahollánddagi" + + "ellaođđadárogiellagirjedárogiellaoksitánagiellapanjabigiellapolskkag" + + "iellaportugálagiellaromanšgiellaromániagiellaruoššagiellasardigiella" + + "davvisámegiellaslovákiagiellaslovenagiellasamoagiellaalbánagiellaser" + + "biagiellaruoŧagiellaŧaigielladurkagiellatahitigiellaukrainagiellaurd" + + "ugiellavietnamgiellavallonagiellakiinnágiellaacehgiellaboares eaŋgal" + + "asgiellaasturiagiellamarigiellafilippiinnagiellahawaiigiellagárjilgi" + + "ellamokšagiellaersagiellasisiliagiellaselkupagiellalullisámegiellaju" + + "levsámegiellaanárašgiellanuortalašgiellashimaorigiellaudmurtagiellad" + + "ovdameahttun giellakantongiellaserbokroatiagiellaálki kiinágiellaárb" + + "evirolaš kiinnágiella", + []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x000e, 0x000e, 0x000e, 0x0024, 0x0024, 0x0036, 0x004a, - 0x005a, 0x006a, 0x006a, 0x006a, 0x008a, 0x008a, 0x009e, 0x00b0, - 0x00b0, 0x00b0, 0x00c2, 0x00d0, 0x00e0, 0x00ec, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x010e, 0x0130, 0x0130, 0x013e, 0x0148, - 0x0152, 0x0152, 0x0152, 0x0152, 0x015e, 0x016a, 0x0180, 0x0190, - 0x019a, 0x01a8, 0x01b6, 0x01b6, 0x01c2, 0x01d0, 0x01e0, 0x01f8, - 0x0210, 0x021a, 0x0231, 0x0241, 0x0241, 0x0241, 0x024d, 0x025b, - 0x026b, 0x0275, 0x0275, 0x0285, 0x0285, 0x0295, 0x02a5, 0x02a5, - // Entry 40 - 7F - 0x02a5, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c1, 0x02d5, - 0x02eb, 0x02eb, 0x02ff, 0x0317, 0x0327, 0x0327, 0x0327, 0x0327, - 0x0339, 0x0339, 0x0341, 0x0353, 0x0361, 0x0361, 0x0361, 0x036d, - 0x036d, 0x0379, 0x0389, 0x0399, 0x03b1, 0x03b1, 0x03b1, 0x03b1, - 0x03b9, 0x03c7, 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03df, 0x03f3, - 0x040d, 0x041d, 0x041d, 0x041d, 0x042f, 0x0441, 0x0441, 0x0441, - 0x0453, 0x0453, 0x0463, 0x047d, 0x048f, 0x048f, 0x048f, 0x048f, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04af, 0x04af, 0x04af, 0x04bd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x001e, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x003f, 0x004e, + 0x004e, 0x004e, 0x005a, 0x0066, 0x0073, 0x007f, 0x008e, 0x008e, + 0x008e, 0x009b, 0x009b, 0x00a8, 0x00a8, 0x00a8, 0x00b3, 0x00c1, + 0x00ce, 0x00da, 0x00e8, 0x00e8, 0x00f5, 0x0103, 0x0103, 0x0112, + 0x011d, 0x011d, 0x012a, 0x012a, 0x0135, 0x0140, 0x014b, 0x015a, + 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0184, 0x018f, 0x019b, + 0x019b, 0x01a6, 0x01a6, 0x01b4, 0x01bf, 0x01cb, 0x01d8, 0x01d8, + // Entry 40 - 7F + 0x01d8, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01f6, + 0x0203, 0x0203, 0x0210, 0x021a, 0x0227, 0x0227, 0x0227, 0x0227, + 0x0232, 0x0232, 0x0240, 0x0240, 0x024b, 0x024b, 0x024b, 0x0256, + 0x0260, 0x026b, 0x026b, 0x0278, 0x0289, 0x0289, 0x0289, 0x0289, + 0x0292, 0x02a0, 0x02a0, 0x02ad, 0x02ad, 0x02ad, 0x02b8, 0x02c7, + 0x02c7, 0x02d5, 0x02d5, 0x02d5, 0x02e0, 0x02eb, 0x02eb, 0x02eb, + 0x02f7, 0x02f7, 0x0307, 0x0318, 0x0328, 0x0328, 0x0328, 0x0328, + 0x0337, 0x0337, 0x0337, 0x0337, 0x0337, 0x0344, 0x0344, 0x0351, // Entry 80 - BF - 0x04cd, 0x04e3, 0x04e3, 0x04e3, 0x04e3, 0x04f1, 0x04fb, 0x04fb, - 0x050d, 0x051b, 0x0527, 0x053b, 0x053b, 0x054d, 0x0561, 0x0573, - 0x0587, 0x0591, 0x05a1, 0x05b3, 0x05bf, 0x05bf, 0x05bf, 0x05bf, - 0x05cd, 0x05e1, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ff, - 0x05ff, 0x05ff, 0x05ff, 0x05ff, 0x060f, 0x060f, 0x060f, 0x0625, - 0x062f, 0x063f, 0x063f, 0x0659, 0x066d, 0x066d, 0x066d, 0x066d, - 0x0679, 0x0679, 0x0679, 0x0687, 0x068f, 0x068f, 0x068f, 0x068f, - 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x069f, 0x069f, 0x069f, + 0x0351, 0x0361, 0x0361, 0x036e, 0x036e, 0x037c, 0x038a, 0x038a, + 0x038a, 0x0395, 0x0395, 0x03a5, 0x03a5, 0x03a5, 0x03b4, 0x03c1, + 0x03cc, 0x03cc, 0x03cc, 0x03d9, 0x03e5, 0x03e5, 0x03e5, 0x03e5, + 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03fb, 0x03fb, 0x03fb, + 0x03fb, 0x03fb, 0x0406, 0x0406, 0x0406, 0x0412, 0x0412, 0x041f, + 0x0429, 0x0429, 0x0429, 0x0436, 0x0436, 0x0443, 0x0443, 0x0443, + 0x0443, 0x0443, 0x0443, 0x0450, 0x0450, 0x045a, 0x045a, 0x045a, + 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, // Entry C0 - FF - 0x069f, 0x069f, 0x06b4, 0x06b4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, - 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, - 0x06c4, 0x06c4, 0x06d8, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06f8, 0x06f8, 0x06f8, 0x06f8, - 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, + 0x045a, 0x045a, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, + 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x047d, + 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, + 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, + 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, + 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, + 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, + 0x047d, 0x047d, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, // Entry 100 - 13F - 0x06f8, 0x06f8, 0x070e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, - 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x0738, 0x0738, 0x0738, - 0x0738, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, - 0x074e, 0x074e, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0777, - 0x0777, 0x0777, 0x0777, 0x0777, 0x0799, 0x0799, 0x07b1, 0x07c9, - 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, - 0x07c9, 0x07c9, 0x07e4, 0x0801, 0x0801, 0x0801, 0x0801, 0x080b, - 0x080b, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, + 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, + 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, + 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, + 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, + 0x0487, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, + 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, + 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, + 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, // Entry 140 - 17F - 0x0827, 0x0827, 0x083e, 0x083e, 0x083e, 0x083e, 0x0858, 0x0858, - 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0868, - 0x0868, 0x0868, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, + 0x0498, 0x0498, 0x0498, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, + 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, + 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, + 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, + 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, + 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, + 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, // Entry 180 - 1BF - 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, - 0x089a, 0x089a, 0x089a, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08bc, 0x08bc, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, + 0x04b1, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, + 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, + 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, // Entry 1C0 - 1FF - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e7, 0x08e7, - 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, - 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, - 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, - 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x091b, 0x0925, 0x0925, - 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0939, 0x0939, - 0x0939, 0x0939, 0x0939, 0x0939, 0x0952, 0x0955, 0x0955, 0x0955, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, + 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04e1, + 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, // Entry 200 - 23F - 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, - 0x0955, 0x0955, 0x0963, 0x0971, 0x0971, 0x0971, 0x097d, 0x097d, - 0x097d, 0x097d, 0x097d, 0x097d, 0x0987, 0x0987, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0987, 0x09b0, 0x09b0, 0x09b0, 0x09b0, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, + 0x04e1, 0x04f1, 0x0501, 0x050f, 0x051f, 0x051f, 0x051f, 0x051f, + 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x052d, 0x052d, + 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, + 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, + 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, + 0x052d, 0x052d, 0x052d, 0x053a, 0x053a, 0x053a, 0x054e, 0x054e, + 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, + 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, // Entry 240 - 27F - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09d5, 0x09d5, 0x09d5, 0x09d5, 0x09f1, 0x0a11, + 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x055a, 0x055a, 0x055a, + 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, + 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, + 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, + 0x055a, 0x056c, 0x056c, 0x057e, 0x0599, }, }, - { // yo - "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" + - "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" + - "Èdè WelshiÈdè Ilẹ̀ DenmarkÈdè Ilẹ̀ GemaniÈdè GirikiÈdè Gẹ̀ẹ́sìÈdè E" + - "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" + - "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" + - "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" + - " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" + - "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" + - "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" + - "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" + - "citaniÈdè PunjabiÈdè Ilẹ̀ PolandiÈdè PọtugiÈdè RomaniaÈdè ̣RọọsiaÈdè" + - " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" + - "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" + - "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" + - " TọọkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" + - "dè YorùbáÈdè MandariÈdè ṢuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croati" + - "ani", - []uint16{ // 607 elements + { // se-FI + "vilgesruoššagiellabengalagiellafižigiellaarmenagiellakazakhgiellakamboža" + + "giellanepalagiellapanjabagiellathaigiellavietnamagiellaačehgiellakom" + + "oragiellastandárda arábagiellanuortariikkalaš duiskkagiellašveicalaš" + + " duiskkagiellaaustrálialaš eaŋgalsgiellakanádalaš eaŋgalsgiellabriht" + + "talaš eaŋgalsgiellaamerihkálaš eaŋgalsgiellalatiinna-amerihkalaš spá" + + "nskkagiellaespánjalaš spánskkagiellameksikolaš spánskkagiellakanádal" + + "aš fránskkagiellašveicalaš fránskkagiellabelgialaš hollánddagiellabr" + + "asilialaš portugálagiellaportugálalaš portugálagiellamoldávialaš rom" + + "ániagiellaálkes kiinnágiella", + []uint16{ // 612 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026, - 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067, - 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099, - 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c5, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00e5, 0x00f9, 0x0108, 0x0116, - 0x0123, 0x012e, 0x0139, 0x0139, 0x0145, 0x0145, 0x0152, 0x0160, - 0x016c, 0x0179, 0x0195, 0x01a2, 0x01af, 0x01bd, 0x01bd, 0x01c8, - 0x01d4, 0x01df, 0x01df, 0x01ec, 0x01ec, 0x01fa, 0x020b, 0x020b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0038, 0x0038, // Entry 40 - 7F - 0x0215, 0x0224, 0x022d, 0x0236, 0x0236, 0x0236, 0x0236, 0x0245, - 0x0253, 0x0253, 0x0261, 0x026f, 0x027c, 0x027c, 0x027c, 0x027c, - 0x027c, 0x027c, 0x0288, 0x0295, 0x02a0, 0x02a0, 0x02a0, 0x02a0, - 0x02a0, 0x02a0, 0x02a0, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac, - 0x02ac, 0x02bb, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02c9, 0x02d8, - 0x02d8, 0x02d8, 0x02e5, 0x02f1, 0x02fc, 0x0309, 0x0309, 0x0309, - 0x0315, 0x0315, 0x031f, 0x031f, 0x032b, 0x032b, 0x032b, 0x032b, - 0x0339, 0x0339, 0x0339, 0x0339, 0x0339, 0x0346, 0x0346, 0x035b, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x006b, 0x006b, 0x006b, // Entry 80 - BF - 0x035b, 0x0369, 0x0369, 0x0369, 0x0369, 0x0376, 0x0388, 0x0395, - 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d0, 0x03de, - 0x03de, 0x03de, 0x03ef, 0x03fc, 0x0408, 0x0408, 0x0414, 0x0420, - 0x042f, 0x043c, 0x0448, 0x0454, 0x0454, 0x045d, 0x046b, 0x0478, - 0x0478, 0x0478, 0x0489, 0x0489, 0x0489, 0x0489, 0x0489, 0x0495, - 0x049e, 0x04a9, 0x04a9, 0x04b7, 0x04b7, 0x04b7, 0x04b7, 0x04c2, - 0x04d0, 0x04de, 0x04de, 0x04eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, + 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, // Entry C0 - FF - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, // Entry 100 - 13F - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, // Entry 140 - 17F - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, // Entry 180 - 1BF - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, // Entry 1C0 - 1FF - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - // Entry 200 - 23F - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + // Entry 200 - 23F + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, + 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, // Entry 240 - 27F - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0528, - }, - }, - { // yo-BJ - "Èdè Ilɛ̀ DenmarkÈdè Ilɛ̀ GemaniÈdè Gɛ̀ɛ́sìÈdè Ilɛ̀ PolandiÈdè PɔtugiÈdè " + - "̣RɔɔsiaÈdè TɔɔkisiÈdè Shulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - // Entry 40 - 7F - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x004d, - // Entry 80 - BF - 0x004d, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0084, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00b1, 0x00b1, + 0x00cf, 0x00e8, 0x0105, 0x011f, 0x0139, 0x0155, 0x017a, 0x0196, + 0x01b1, 0x01b1, 0x01cc, 0x01e7, 0x01e7, 0x0202, 0x021f, 0x023e, + 0x025a, 0x025a, 0x025a, 0x026e, }, }, - { // yue - "阿法文阿布哈茲文阿緯斯陀文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什客爾文白俄羅斯文保加利亞文比斯拉馬文班" + - "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰羅尼亞文車臣文查莫洛文科西嘉文克裡文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗" + - "卡文埃維文希臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉" + - "尼文古吉拉特文曼島文豪撒文希伯來文北印度文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川" + - "彝文依奴皮維克文伊多文冰島文義大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努裡文喀什米" + - "爾文庫爾德文科米文康瓦耳文吉爾吉斯文拉丁文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其" + - "頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾他文緬甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文" + - "尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐利亞文奧塞提文旁遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文" + - "梵文撒丁文信德文北方薩米文桑戈文僧伽羅文斯洛伐克文斯洛維尼亞文薩摩亞文塞內加爾文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文" + - "瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文突尼西亞文東加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文" + - "烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文中文祖魯文亞齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里" + - "希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂加文阿拉米文馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿" + - "拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支文峇里文巴伐利亞文巴薩文巴姆穆文巴塔克托巴文" + - "戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆文錫克錫卡文比什奴普萊利亞文巴赫蒂亞" + - "里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧文奇加文奇布查文查加文處奇斯" + - "文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文索拉尼庫爾德文科普特文卡皮茲文克里米亞半島的土耳其文;克里米亞半島的塔塔爾文卡舒布" + - "文達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文迪尤拉文達薩文恩布" + - "文埃菲克文埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐文卡真法文中古法文" + - "古法文法蘭克-普羅旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉爾伯特群島文吉拉基" + - "文中古高地德文古高地日耳曼文孔卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文海達文客家話夏威夷" + - "文斐濟印地文希利蓋農文赫梯文孟文上索布文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格裏亞文牙買加克裏奧爾英文邏輯文恩格姆巴文馬恰美" + - "文猶太教-波斯文猶太阿拉伯文日德蘭文卡拉卡爾帕克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔德文卡布威爾第文肯" + - "揚文科羅文坎剛文卡西文和闐文西桑海文科瓦文北紮紮其文卡庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列文卡拉柴-包爾卡爾" + - "文塞拉利昂克裏奧爾文基那來阿文卡累利阿文庫魯科文尚巴拉文巴菲亞文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文列茲干文新共同語言" + - "利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛齊文北盧爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文盧晒文盧雅文文言文拉茲文馬都拉" + - "文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文莫克沙文曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸文美塔文米克馬克文" + - "米南卡堡文滿族文曼尼普裡文莫霍克文莫西文西馬裏文蒙當文多種語言克里克文米蘭德斯文馬爾尼裡文明打威文姆耶內文厄爾茲亞文馬贊德蘭文閩南語" + - "拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎文諾蓋文古諾爾斯文諾維亞文曼德文字 (N’Ko)北索托文努埃爾文" + - "古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文巴列維文潘帕嘉文帕皮阿門托文帛琉文庇卡底文賓夕法尼亞德文" + - "門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺斯文基切文欽博拉索海蘭蓋丘亞文拉賈斯坦諸文復活島" + - "文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅瓦文桑達韋文雅庫特文薩瑪利亞阿拉姆文薩布" + - "魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫爾德文塞訥卡文賽納文瑟里文瑟爾卡普文東桑海文古愛爾" + - "蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯科特薩米文索尼基文索格底亞納" + - "文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆文特索文泰雷諾文泰頓文蒂格雷" + - "文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克尼恩文欽西安文穆斯林塔特文" + - "圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-法蘭克尼亞文沃提克" + - "文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特克文布列斯" + - "符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞克" + - "羅埃西亞文史瓦希里文(剛果)簡體中文繁體中文", - []uint16{ // 610 elements + { // seh + "akanamáricoárabebielo-russobúlgarobengalitchecoalemãogregoinglêsespanhol" + + "persafrancêshausahindihúngaroindonésioiboitalianojaponêsjavanêscmerc" + + "oreanomalaiobirmanêsnepalêsholandêspanjabipolonêsportuguêsromenoruss" + + "okinyarwandasomalisuecotâmiltailandêsturcoucranianourduvietnamitaior" + + "ubáchinêszulusena", + []uint16{ // 502 elements // Entry 0 - 3F - 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, - 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6, - 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c, - 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189, - 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1, - 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f, - 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b, - 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0025, + 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0039, 0x0039, 0x0039, 0x0039, 0x003e, 0x0045, 0x0045, 0x004d, + 0x004d, 0x004d, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f, + 0x005f, 0x0064, 0x0064, 0x0064, 0x0064, 0x006c, 0x006c, 0x006c, // Entry 40 - 7F - 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352, - 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6, - 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400, - 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457, - 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba, - 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517, - 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586, - 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6, + 0x006c, 0x0076, 0x0076, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, + 0x0081, 0x0081, 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, + 0x0091, 0x0091, 0x0095, 0x0095, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, + 0x00b3, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, + 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c3, 0x00c3, 0x00cb, // Entry 80 - BF - 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640, - 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d, - 0x06a9, 0x06b8, 0x06c4, 0x06d6, 0x06e5, 0x06f1, 0x06fd, 0x0706, - 0x070f, 0x071e, 0x072a, 0x0736, 0x0742, 0x0748, 0x075a, 0x0766, - 0x0775, 0x077e, 0x078a, 0x0796, 0x079f, 0x07ab, 0x07b7, 0x07c3, - 0x07cc, 0x07db, 0x07e4, 0x07ed, 0x07fc, 0x0805, 0x0811, 0x081a, - 0x0826, 0x0832, 0x0838, 0x083e, 0x0847, 0x0850, 0x085c, 0x0868, - 0x0874, 0x0889, 0x089b, 0x08a4, 0x08b0, 0x08bc, 0x08cb, 0x08d7, + 0x00cb, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00db, 0x00e0, 0x00eb, + 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, + 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, + 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, + 0x0118, 0x0118, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0129, 0x0129, 0x0130, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, // Entry C0 - FF - 0x08ef, 0x08fe, 0x0907, 0x0910, 0x091c, 0x0928, 0x0937, 0x0946, - 0x0961, 0x0970, 0x0985, 0x0997, 0x09a0, 0x09ac, 0x09be, 0x09ca, - 0x09d3, 0x09df, 0x09e8, 0x09f7, 0x0a00, 0x0a0c, 0x0a1e, 0x0a2a, - 0x0a33, 0x0a3f, 0x0a4b, 0x0a54, 0x0a5d, 0x0a69, 0x0a78, 0x0a87, - 0x0a93, 0x0a9c, 0x0aa8, 0x0ab1, 0x0ac0, 0x0ad8, 0x0aea, 0x0af6, - 0x0b02, 0x0b0b, 0x0b17, 0x0b26, 0x0b32, 0x0b3b, 0x0b44, 0x0b50, - 0x0b59, 0x0b65, 0x0b71, 0x0b7a, 0x0b83, 0x0b8c, 0x0b98, 0x0ba1, - 0x0bad, 0x0bb6, 0x0bc2, 0x0bce, 0x0bdd, 0x0be9, 0x0bf5, 0x0c0a, - // Entry 100 - 13F - 0x0c16, 0x0c22, 0x0c67, 0x0c73, 0x0c7f, 0x0c8e, 0x0c97, 0x0ca3, - 0x0cac, 0x0cbb, 0x0cc4, 0x0cd0, 0x0cdc, 0x0ce8, 0x0cf7, 0x0d03, - 0x0d12, 0x0d1b, 0x0d27, 0x0d30, 0x0d39, 0x0d45, 0x0d54, 0x0d60, - 0x0d6f, 0x0d78, 0x0d84, 0x0d93, 0x0d9f, 0x0db7, 0x0dc0, 0x0dcc, - 0x0dde, 0x0de4, 0x0df0, 0x0dfc, 0x0e05, 0x0e1e, 0x0e30, 0x0e42, - 0x0e4e, 0x0e57, 0x0e63, 0x0e69, 0x0e72, 0x0e7e, 0x0e99, 0x0ea2, - 0x0eb7, 0x0ec3, 0x0ed5, 0x0eea, 0x0ef6, 0x0eff, 0x0f0e, 0x0f17, - 0x0f23, 0x0f2f, 0x0f41, 0x0f4a, 0x0f59, 0x0f62, 0x0f6b, 0x0f74, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + // Entry 100 - 13F + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, // Entry 140 - 17F - 0x0f7d, 0x0f89, 0x0f98, 0x0fa7, 0x0fb0, 0x0fb6, 0x0fc2, 0x0fc8, - 0x0fd1, 0x0fda, 0x0fe9, 0x0ff5, 0x1001, 0x1010, 0x102b, 0x1034, - 0x1043, 0x104f, 0x1062, 0x1074, 0x1080, 0x1095, 0x10a1, 0x10aa, - 0x10b3, 0x10bf, 0x10c8, 0x10d7, 0x10e3, 0x10ef, 0x10fb, 0x110d, - 0x1116, 0x111f, 0x1128, 0x1131, 0x113a, 0x1146, 0x114f, 0x115e, - 0x1167, 0x1173, 0x117f, 0x1198, 0x11a1, 0x11b0, 0x11bc, 0x11d5, - 0x11f0, 0x11ff, 0x120e, 0x121a, 0x1226, 0x1232, 0x123b, 0x1247, - 0x1253, 0x125f, 0x1268, 0x1274, 0x127d, 0x1289, 0x1298, 0x12a7, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, // Entry 180 - 1BF - 0x12b6, 0x12c2, 0x12ce, 0x12d7, 0x12e0, 0x12ec, 0x12fb, 0x130d, - 0x131c, 0x1328, 0x1331, 0x133a, 0x1343, 0x134c, 0x1355, 0x1361, - 0x136a, 0x1376, 0x1382, 0x138e, 0x139a, 0x13a3, 0x13ac, 0x13b8, - 0x13c1, 0x13ca, 0x13d3, 0x13f1, 0x1403, 0x140c, 0x1415, 0x1424, - 0x1433, 0x143c, 0x144b, 0x1457, 0x1460, 0x146c, 0x1475, 0x1481, - 0x148d, 0x149c, 0x14ab, 0x14b7, 0x14c3, 0x14d2, 0x14e1, 0x14ea, - 0x14f6, 0x14ff, 0x150b, 0x1517, 0x1523, 0x152c, 0x153b, 0x1547, - 0x1553, 0x155c, 0x156b, 0x1577, 0x158c, 0x1598, 0x15a4, 0x15b3, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, // Entry 1C0 - 1FF - 0x15c2, 0x15d1, 0x15dd, 0x15e9, 0x15f5, 0x160a, 0x1616, 0x1622, - 0x162e, 0x1640, 0x1649, 0x1655, 0x166a, 0x167c, 0x1688, 0x169a, - 0x16a6, 0x16b5, 0x16c4, 0x16d0, 0x16dc, 0x16ee, 0x16f7, 0x1715, - 0x1727, 0x1733, 0x1742, 0x1754, 0x1763, 0x176c, 0x1778, 0x1787, - 0x1796, 0x17a5, 0x17b7, 0x17c0, 0x17cc, 0x17d8, 0x17f0, 0x17fc, - 0x1808, 0x1814, 0x1826, 0x182f, 0x1838, 0x1844, 0x1850, 0x1869, - 0x1878, 0x1884, 0x188d, 0x1896, 0x18a5, 0x18b1, 0x18c0, 0x18d2, - 0x18de, 0x18e4, 0x18fc, 0x1908, 0x191a, 0x1926, 0x1932, 0x1941, - // Entry 200 - 23F - 0x1953, 0x1965, 0x1971, 0x1983, 0x1995, 0x19a1, 0x19aa, 0x19bc, - 0x19c8, 0x19d1, 0x19da, 0x19e3, 0x19f2, 0x19fe, 0x1a0d, 0x1a16, - 0x1a1f, 0x1a28, 0x1a34, 0x1a3d, 0x1a49, 0x1a52, 0x1a5e, 0x1a6a, - 0x1a76, 0x1a85, 0x1a91, 0x1aa0, 0x1ab8, 0x1ac4, 0x1ad0, 0x1adc, - 0x1aee, 0x1afa, 0x1b0c, 0x1b1b, 0x1b27, 0x1b33, 0x1b3c, 0x1b4e, - 0x1b5d, 0x1b69, 0x1b75, 0x1b7e, 0x1b87, 0x1b93, 0x1b9f, 0x1bae, - 0x1bc7, 0x1bd3, 0x1bdc, 0x1be5, 0x1bee, 0x1bfa, 0x1c03, 0x1c0c, - 0x1c18, 0x1c1e, 0x1c2d, 0x1c3c, 0x1c45, 0x1c4b, 0x1c54, 0x1c5d, - // Entry 240 - 27F - 0x1c69, 0x1c78, 0x1c7e, 0x1c8d, 0x1c9c, 0x1ca5, 0x1cb1, 0x1ccf, - 0x1cd8, 0x1ce7, 0x1cf0, 0x1d08, 0x1d08, 0x1d08, 0x1d20, 0x1d20, - 0x1d20, 0x1d20, 0x1d20, 0x1d20, 0x1d20, 0x1d20, 0x1d20, 0x1d20, - 0x1d20, 0x1d32, 0x1d3e, 0x1d3e, 0x1d3e, 0x1d4d, 0x1d6b, 0x1d86, - 0x1d92, 0x1d9e, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0138, }, }, - { // zgh - "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" + - "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" + - "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴱⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" + - "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" + - "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" + - "ⵓⵔⴷⵓⵜⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵎⴰⵣⵉⵖⵜ", - []uint16{ // 584 elements + { // ses + "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + + " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + + "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + + "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" + + " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" + + "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" + + "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " + + "senniUrdu senniVietnaam senniYorbance senniSinuwa senni, MandareŋZul" + + "u senniKoyraboro senni", + []uint16{ // 505 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078, - 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111, - 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f, - 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, + 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, + 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, + 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, + 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, + 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, // Entry 40 - 7F - 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279, - 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, - 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8, + 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, + 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, + 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a, // Entry 80 - BF - 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351, - 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, - 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, - 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd, - 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed, - 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c, + 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, + 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, + 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0, + 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7, + 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, + 0x01ff, 0x020d, 0x020d, 0x0224, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, // Entry C0 - FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, // Entry 100 - 13F + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + // Entry 140 - 17F + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + // Entry 180 - 1BF + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + // Entry 1C0 - 1FF + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x023d, + }, + }, + { // sg + "AkâanAmarîkiArâboBielörûsiBulugäriBengäliTyêkiZâmaniGerêkiAnglëeEspanyöl" + + "FarsîFarânziHaüsäHîndiHongruäaEnndonezïiÏgböÊnndeZaponëeZavanëeKmêre" + + "KoreyëenMalëeMiamära, BirimäniNepalëeHolandëePenzäbïPolonëePortugëe," + + " PûraRumëenRûsiRuandäaSängöSomalïiSueduäaTämûliThâiTûrûkuUkrêniÛrduV" + + "ietnämYorubaShinuäaZûlu", + []uint16{ // 181 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001f, 0x0028, + 0x0028, 0x0028, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, + 0x0030, 0x0030, 0x0030, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, + 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, 0x004b, 0x004b, 0x0054, + 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0069, + 0x0069, 0x006f, 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0078, + // Entry 40 - 7F + 0x0078, 0x0083, 0x0083, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x008f, 0x008f, 0x0097, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, + 0x009f, 0x009f, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00c7, 0x00c7, 0x00c7, + 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00e9, + // Entry 80 - BF + 0x00e9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0100, 0x0105, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x0114, 0x0114, 0x0114, 0x0114, + 0x0114, 0x0114, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x0124, 0x0124, 0x012c, 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0140, + 0x0145, 0x0145, 0x0145, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, + 0x014d, 0x0153, 0x0153, 0x015b, 0x0160, + }, + }, + { // shi + "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" + + "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" + + "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴼⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" + + "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" + + "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" + + "ⵓⵔⴷⵓⵜⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵛⵍⵃⵉⵜ", + []uint16{ // 508 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078, + 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, + 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111, + 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147, + 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f, + 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192, + // Entry 40 - 7F + 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, + 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, + 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279, + 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, + 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8, + // Entry 80 - BF + 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351, + 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, + 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, + 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd, + 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed, + 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry C0 - FF 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, @@ -12149,124 +12165,108 @@ var langHeaders = [220]header{ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 140 - 17F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 100 - 13F 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 180 - 1BF 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 140 - 17F 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 1C0 - 1FF 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 180 - 1BF 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 200 - 23F 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 1C0 - 1FF 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 240 - 27F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x047a, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0477, }, }, - { // zh - zhLangStr, - zhLangIdx, - }, - { // zh-Hant - zhHantLangStr, - zhHantLangIdx, - }, - { // zh-Hant-HK - "阿塞拜疆文巴什基爾文布里多尼文波斯尼亞文加泰隆尼亞文世界語加里西亞文克羅地亞文意大利文格魯吉亞文坎納達文老撾文馬拉加斯文馬拉雅拉姆文馬耳他文奧里" + - "雅文盧旺達文信德語斯洛文尼亞文修納文索馬里文泰米爾文湯加文烏爾都文瑞士德文毛里裘斯克里奧爾文西非書面語言(N’ko)伊納里薩米文瓦爾" + - "皮里文摩洛哥標準塔馬齊格特文南阿塞拜疆文奧地利德文瑞士德語澳洲英文加拿大英文英國英文美國英文拉丁美洲西班牙文歐洲西班牙文墨西哥西班牙" + - "文加拿大法文瑞士法文荷蘭低地德文巴西葡萄牙語歐洲葡萄牙文摩爾多瓦羅馬尼亞文剛果史瓦希里文", - []uint16{ // 608 elements + { // shi-Latn + "TakantTamharitTaɛrabtTabilarustTablɣaritTabnɣalitTatcikitTalimantTagrigi" + + "tTangliztTasbnyulitTafursitTafransistTahawsatTahinditTahnɣaritTandun" + + "isitTigbutTaṭalyantTajabbunitTajavanitTaxmirtTakuritTamalawitTabirma" + + "nitTanibalitTahulanditTabnjabitTabulunitTabṛṭqiztTarumanitTarusitTar" + + "uwanditTasumalitTaswiditTatamiltTataylanditTaturkitTukranitTurdutTaf" + + "itnamitTayrubatTacinwitTazulutTashelḥiyt", + []uint16{ // 508 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x002d, 0x003c, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, + 0x002a, 0x002a, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0054, 0x0054, 0x005e, + 0x005e, 0x005e, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0078, 0x0080, 0x0080, 0x0080, 0x0080, 0x008a, 0x008a, 0x008a, // Entry 40 - 7F - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 80 - BF - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ea, - 0x00ea, 0x00ea, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x0105, - 0x0105, 0x010e, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x011a, 0x011a, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, - 0x0126, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - // Entry C0 - FF - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - // Entry 100 - 13F - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, + 0x008a, 0x0094, 0x0094, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x00a5, 0x00a5, 0x00af, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, + 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9, + 0x00e2, 0x00e2, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f5, 0x00f5, 0x00fe, + // Entry 80 - BF + 0x00fe, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x011b, 0x0125, + 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, + 0x0125, 0x0125, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x0149, 0x0149, 0x0149, + 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159, + 0x015f, 0x015f, 0x015f, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0171, 0x0171, 0x0179, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + // Entry C0 - FF + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + // Entry 100 - 13F + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, // Entry 140 - 17F - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, // Entry 180 - 1BF - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x0162, 0x0162, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 1C0 - 1FF 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, @@ -12275,867 +12275,4086 @@ var langHeaders = [220]header{ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + // Entry 1C0 - 1FF + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x0180, 0x018c, + }, + }, + { // si + siLangStr, + siLangIdx, + }, + { // sk + skLangStr, + skLangIdx, + }, + { // sl + slLangStr, + slLangIdx, + }, + { // smn + "afarabhasiakielâafrikaansakankielâamharakielâaragoniakielâarabiakielâass" + + "amkielâavarkielâaymarakielâazerbaidžankielâbaškirkielâvielgisruošâki" + + "elâbulgariakielâbislamabambarakielâbanglakielâtiibetkielâbretonkielâ" + + "bosniakielâkatalankielâtšetšenkielâchamorrokielâkorsikakielâtšeekiki" + + "elâkirkkoslaavitšuvaskielâkymrikielâtanskakielâsaksakielâdivehikielâ" + + "Dzongkhaewekielâkreikakielâeŋgâlâskielâesperantokielâespanjakielâees" + + "tikielâbaskikielâpersiakielâfulakielâsuomâkielâfidžikielâfäärikielâr" + + "anskakielâviestârfriisiiirikielâskottilâš gaelikielâgaliciakielâguar" + + "anikielâgudžaratikielâmankshausakielâhepreakielâhindikielâkroatiakie" + + "lâHaiti kreoliuŋgarkielâarmeniakielâhererokielâinterlinguaindonesiak" + + "ielâigbokielâidoislandkielâitaliakielâinuktitutjaapaankielâjaavakiel" + + "âgeorgiakielâkikujukielâkuanjamakazakkielâkalaallisutkhmerkielâkann" + + "adakoreakielâkanurikielâkashmirkielâkurdikielâkomikielâkornikielâkir" + + "giskielâläättinkielâluxemburgkielâlugandalimburgkielâlingalalaokielâ" + + "liettuakielâkatangalubalatviakielâmalagaskielâmarshallkielâmaorikiel" + + "âmakedoniakielâmalajammongoliakielâmarathikielâmalaijimaltakielâbur" + + "makielânaurukielâtave-nbedelenepalkielândongahollandkielâtárukielâ n" + + "ynorsktárukielâ bokmålmaadâ-nbedelenavajokielânjanžaoksitanoromokiel" + + "âorijaossetkielâpandžabipuolakielâpaštuportugalkielâquechuaretoroom" + + "aankielârundiromaniakielâruošâkielâruandakielâsanskritsardiniakielâs" + + "indhitavekielâsangosinhalaslovakiakielâsloveniakielâsamoakielâshonas" + + "omalikielâalbaniakielâserbiakielâswazikielâmaadâsothosundakielâruotâ" + + "kielâswahilikielâtamilkielâtelugutadžikkielâthaikielâtigrinyakielâtu" + + "rkmenkielâtswanakielâtongakielâtuurkikielâtsongakielâtatarkielâtahit" + + "ikielâuigurkielâukrainakielâurduuzbekkielâvendakielâvietnamkielâvola" + + "pükwalloonkielâwolofkielâxhosakielâjiddishyorubakielâmandarinkiinaki" + + "elâzulukielâatšehkielâadangmeadygeaghemainukielâaleutkielâmaadâaltai" + + "kielâangikamapudungunarapahokielâasukielâasturiakielâawadhikielâbali" + + "kielâbasaakielâbembakielâbenakielâbhožpurikielâbinikielâsiksikakielâ" + + "bodokielâbugikielâblinkielâcebuanokielâkigakielâchuukkielâmarikielâc" + + "hoctawkielâcherokeekielâcheyennekielâsorani kurdikielâSeychellij kre" + + "oliranskadakotakielâdargikielâtaitakielâdogribkielâzarmakielâvyeliso" + + "rbidualakielâjola-fonyidazakielâembukielâefikkielâekajukewondokielâf" + + "ilipinokielâfonkielâfriulikielâgakielâge’ezkiribatikielâgorontalokie" + + "lâtoovláš kreikakielâSveitsi saksakielâgusiikielâgwich’inkielâhawaij" + + "ikielâhiligainokielâhmongkielâpajesorbihupakielâibankielâibibiokielâ" + + "ilocanoinguškielâlojbanngombamachamekabylkielâkachinjjukambakielâkab" + + "ardikielâtyapmakondeKap Verde kreolikorokhasikoyra chiinikakokalenji" + + "kielâkimbundukonkanikpellekielâkarachai-balkarkielâkärjilkielâkurukh" + + "kielâshambalabafiakölnkielâkumykkielâladinokielâlangokielâlezgikielâ" + + "lakotakielâlozitavelurilulualubalundaluolusailuhyamadurakielâmagahim" + + "aithilimakasarmasaikielâmokšakielâmendekielâmerukielâmorisyenmakua-m" + + "eettometa’micmacminangkabaumanipurimohawkkielâmooreviestârmarimundan" + + "gmaŋgâ kielâmuskogeekielâmirandeskielâersäkielâmazandaraninapolikiel" + + "ânamanewariniaskielâniuekielâkwasiongiemboonnogaikielâtoovláš táruk" + + "ielân’kotavesothonuernyankolekielâpangasinankielâpampangakielâpapiam" + + "entupalaukielâNigeria pidgintoovláš preussikielâki’che’rapanuiraroto" + + "ngaromboroomaankielâaromaniakielârwasandawejakutkielâsamburukielâsan" + + "talikielângambaysangusisiliakielâskootikielâsenakoyraboro sennitašel" + + "hitshankielâmaadâsämikielâjuulevsämikielâanarâškielânuorttâlâškielâs" + + "oninkesranantongosahosukumakielâkomorikielâsyyriakielâtemnekielâates" + + "otetumtigrekielâklingonkielâtok pisintarokotumbukakielâtuvalukielâta" + + "sawaqtuvakielâKoskâatlas tamazightudmurtkielâumbunduruotâsvaikielâve" + + "psäkielâvunjowalliskielâwolaitakielâwaraykielâkalmukkielâsogayangben" + + "yembakantonkielâstandard tamazightzunikielâij kielâlâš siskáldâszaza" + + "kielâstandard arabiakielâNuorttâriijkâ saksakielâSveitsi pajesaksaki" + + "elâAustralia eŋgâlâskielâKanada eŋgâlâskielâBritannia eŋgâlâskielâAm" + + "erika eŋgâlâskielâLäättin-Amerika espanjakielâEspanja espanjakielâMe" + + "ksiko espanjakielâKanada ranskakielâSveitsi ranskakielâVuáládâhenâmi" + + "j saksakielâhollandkielâ (flaami)Brasilia portugalkielâPortugal port" + + "ugalkielâKongo swahilikielâoovtâkiärdánis kiinakielâärbivuáválâš kii" + + "nakielâ", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x0011, 0x0011, 0x001a, 0x0024, 0x0030, 0x003e, + 0x004a, 0x0055, 0x005f, 0x006b, 0x007d, 0x008a, 0x009e, 0x00ac, + 0x00b3, 0x00c0, 0x00cc, 0x00d8, 0x00e4, 0x00f0, 0x00fd, 0x010c, + 0x011a, 0x0127, 0x0127, 0x0134, 0x0140, 0x014d, 0x0158, 0x0164, + 0x016f, 0x017b, 0x0183, 0x018c, 0x0198, 0x01a8, 0x01b7, 0x01c4, + 0x01cf, 0x01da, 0x01e6, 0x01f0, 0x01fc, 0x0208, 0x0215, 0x0221, + 0x022f, 0x0239, 0x0250, 0x025d, 0x026a, 0x027a, 0x027f, 0x028a, + 0x0296, 0x02a1, 0x02a1, 0x02ae, 0x02ba, 0x02c6, 0x02d3, 0x02df, + // Entry 40 - 7F + 0x02ea, 0x02f9, 0x02f9, 0x0303, 0x0303, 0x0303, 0x0306, 0x0312, + 0x031e, 0x0327, 0x0334, 0x033f, 0x034c, 0x034c, 0x0358, 0x0360, + 0x036b, 0x0376, 0x0381, 0x0388, 0x0393, 0x039f, 0x03ac, 0x03b7, + 0x03c1, 0x03cc, 0x03d8, 0x03e7, 0x03f6, 0x03fd, 0x040a, 0x0411, + 0x041a, 0x0427, 0x0432, 0x043e, 0x044b, 0x0459, 0x0464, 0x0473, + 0x047a, 0x0488, 0x0495, 0x049c, 0x04a7, 0x04b2, 0x04bd, 0x04c9, + 0x04d4, 0x04da, 0x04e7, 0x04fa, 0x050d, 0x051b, 0x0527, 0x052e, + 0x0535, 0x0535, 0x0540, 0x0545, 0x0550, 0x0559, 0x0559, 0x0564, + // Entry 80 - BF + 0x056a, 0x0578, 0x057f, 0x0590, 0x0595, 0x05a2, 0x05af, 0x05bb, + 0x05c3, 0x05d1, 0x05d7, 0x05e1, 0x05e6, 0x05ed, 0x05fb, 0x0609, + 0x0614, 0x0619, 0x0625, 0x0632, 0x063e, 0x0649, 0x0654, 0x065f, + 0x066b, 0x0678, 0x0683, 0x0689, 0x0696, 0x06a0, 0x06ae, 0x06bb, + 0x06c7, 0x06d2, 0x06de, 0x06ea, 0x06f5, 0x0701, 0x070c, 0x0719, + 0x071d, 0x0728, 0x0733, 0x0740, 0x0748, 0x0755, 0x0760, 0x076b, + 0x0772, 0x077e, 0x077e, 0x0791, 0x079b, 0x07a7, 0x07a7, 0x07ae, + 0x07b3, 0x07b3, 0x07b3, 0x07b8, 0x07c2, 0x07c2, 0x07c2, 0x07cd, + // Entry C0 - FF + 0x07cd, 0x07de, 0x07de, 0x07e4, 0x07e4, 0x07ee, 0x07ee, 0x07fb, + 0x07fb, 0x07fb, 0x07fb, 0x07fb, 0x07fb, 0x0804, 0x0804, 0x0811, + 0x0811, 0x081d, 0x081d, 0x0827, 0x0827, 0x0832, 0x0832, 0x0832, + 0x0832, 0x0832, 0x083d, 0x083d, 0x0847, 0x0847, 0x0847, 0x0847, + 0x0856, 0x0856, 0x0860, 0x0860, 0x0860, 0x086d, 0x086d, 0x086d, + 0x086d, 0x086d, 0x0877, 0x0877, 0x0877, 0x0881, 0x0881, 0x088b, + 0x088b, 0x088b, 0x088b, 0x088b, 0x088b, 0x0898, 0x08a2, 0x08a2, + 0x08a2, 0x08ad, 0x08b7, 0x08b7, 0x08c4, 0x08c4, 0x08d2, 0x08e0, + // Entry 100 - 13F + 0x08f2, 0x08f2, 0x08f2, 0x08f2, 0x0909, 0x0909, 0x0915, 0x0920, + 0x092b, 0x092b, 0x092b, 0x0937, 0x0937, 0x0942, 0x0942, 0x094c, + 0x094c, 0x0957, 0x0957, 0x0961, 0x0961, 0x096b, 0x0975, 0x097f, + 0x097f, 0x097f, 0x0985, 0x0985, 0x0985, 0x0985, 0x0991, 0x0991, + 0x0991, 0x099f, 0x099f, 0x09a8, 0x09a8, 0x09a8, 0x09a8, 0x09a8, + 0x09a8, 0x09a8, 0x09b4, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, + 0x09bc, 0x09c3, 0x09d1, 0x09d1, 0x09d1, 0x09d1, 0x09d1, 0x09d1, + 0x09e0, 0x09e0, 0x09e0, 0x09f6, 0x0a09, 0x0a09, 0x0a09, 0x0a14, + // Entry 140 - 17F + 0x0a24, 0x0a24, 0x0a24, 0x0a31, 0x0a31, 0x0a40, 0x0a40, 0x0a4b, + 0x0a54, 0x0a54, 0x0a5e, 0x0a68, 0x0a74, 0x0a7b, 0x0a87, 0x0a87, + 0x0a87, 0x0a8d, 0x0a93, 0x0a9a, 0x0a9a, 0x0a9a, 0x0a9a, 0x0a9a, + 0x0aa5, 0x0aab, 0x0aae, 0x0ab9, 0x0ab9, 0x0ac6, 0x0ac6, 0x0aca, + 0x0ad1, 0x0ae1, 0x0ae1, 0x0ae5, 0x0ae5, 0x0aea, 0x0aea, 0x0af6, + 0x0af6, 0x0af6, 0x0afa, 0x0b07, 0x0b0f, 0x0b0f, 0x0b16, 0x0b16, + 0x0b22, 0x0b37, 0x0b37, 0x0b37, 0x0b44, 0x0b50, 0x0b58, 0x0b5d, + 0x0b68, 0x0b73, 0x0b73, 0x0b7f, 0x0b8a, 0x0b8a, 0x0b8a, 0x0b95, + // Entry 180 - 1BF + 0x0b95, 0x0b95, 0x0b95, 0x0ba1, 0x0ba1, 0x0ba1, 0x0ba5, 0x0bad, + 0x0bad, 0x0bb6, 0x0bb6, 0x0bbb, 0x0bbe, 0x0bc3, 0x0bc8, 0x0bc8, + 0x0bc8, 0x0bd4, 0x0bd4, 0x0bda, 0x0be2, 0x0be9, 0x0be9, 0x0bf4, + 0x0bf4, 0x0c00, 0x0c00, 0x0c0b, 0x0c15, 0x0c1d, 0x0c1d, 0x0c29, + 0x0c30, 0x0c36, 0x0c41, 0x0c41, 0x0c49, 0x0c55, 0x0c5a, 0x0c66, + 0x0c6d, 0x0c7b, 0x0c89, 0x0c97, 0x0c97, 0x0c97, 0x0c97, 0x0ca2, + 0x0cad, 0x0cad, 0x0cb9, 0x0cbd, 0x0cbd, 0x0cc3, 0x0ccd, 0x0cd7, + 0x0cd7, 0x0cdd, 0x0ce6, 0x0cf1, 0x0d06, 0x0d06, 0x0d0c, 0x0d15, + // Entry 1C0 - 1FF + 0x0d19, 0x0d19, 0x0d19, 0x0d27, 0x0d27, 0x0d27, 0x0d27, 0x0d27, + 0x0d37, 0x0d37, 0x0d45, 0x0d4f, 0x0d5a, 0x0d5a, 0x0d68, 0x0d68, + 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d7f, + 0x0d7f, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d91, 0x0d9a, 0x0d9a, 0x0d9a, + 0x0d9f, 0x0dac, 0x0dac, 0x0dac, 0x0dac, 0x0dba, 0x0dbd, 0x0dc4, + 0x0dcf, 0x0dcf, 0x0ddc, 0x0ddc, 0x0de9, 0x0de9, 0x0df0, 0x0df5, + 0x0e02, 0x0e0e, 0x0e0e, 0x0e0e, 0x0e0e, 0x0e12, 0x0e12, 0x0e12, + 0x0e21, 0x0e21, 0x0e21, 0x0e2a, 0x0e34, 0x0e34, 0x0e34, 0x0e34, // Entry 200 - 23F - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, - 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, + 0x0e34, 0x0e45, 0x0e56, 0x0e64, 0x0e77, 0x0e7e, 0x0e7e, 0x0e89, + 0x0e89, 0x0e8d, 0x0e8d, 0x0e99, 0x0e99, 0x0e99, 0x0ea5, 0x0ea5, + 0x0eb1, 0x0eb1, 0x0eb1, 0x0ebc, 0x0ec1, 0x0ec1, 0x0ec6, 0x0ed1, + 0x0ed1, 0x0ed1, 0x0ed1, 0x0ede, 0x0ede, 0x0ede, 0x0ede, 0x0ede, + 0x0ee7, 0x0ee7, 0x0eed, 0x0eed, 0x0eed, 0x0eed, 0x0efa, 0x0f06, + 0x0f0d, 0x0f17, 0x0f2c, 0x0f38, 0x0f38, 0x0f3f, 0x0f46, 0x0f4f, + 0x0f4f, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f60, 0x0f6c, + 0x0f79, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f90, 0x0f90, 0x0f94, // Entry 240 - 27F - 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01d4, 0x01e3, 0x01ef, 0x01fb, - 0x020a, 0x0216, 0x0222, 0x023a, 0x024c, 0x0261, 0x0261, 0x0270, - 0x027c, 0x028e, 0x028e, 0x02a0, 0x02b2, 0x02cd, 0x02cd, 0x02e2, + 0x0f94, 0x0f94, 0x0f9b, 0x0fa0, 0x0fa0, 0x0fac, 0x0fac, 0x0fac, + 0x0fac, 0x0fac, 0x0fbe, 0x0fc8, 0x0fe2, 0x0fec, 0x1001, 0x1001, + 0x101c, 0x1033, 0x104d, 0x1064, 0x107e, 0x1096, 0x10b5, 0x10ca, + 0x10df, 0x10df, 0x10f2, 0x1106, 0x1124, 0x113a, 0x1151, 0x1168, + 0x1168, 0x1168, 0x117b, 0x1198, 0x11b5, }, }, - { // zu - zuLangStr, - zuLangIdx, - }, -} - -var afLangStr string = "" + // Size: 2000 bytes - "AbkasiesAfrikaansAkanAmhariesArabiesAssameesAymaraAzerbeidjansBaskirBelo" + - "-RussiesBulgaarsBambaraBengaalsTibettaansBretonsBosniesKatalaansTsjetsje" + - "nKorsikaansTsjeggiesChuvashWalliesDeensDuitsDivehiDzongkhaEweGrieksEngel" + - "sEsperantoSpaansEstniesBaskiesPersiesFinsFidjiaansFaroeesFransWes-FriesI" + - "ersSkotse GalliesGalisiesGuaraniGoedjaratiManxHausaHebreeusHindiKroaties" + - "HaïtiaansHongaarsArmeensInterlinguaIndonesiesIgboSichuan YiYslandsItalia" + - "ansInnuïtiesJapanneesJavaansGeorgiesKongoleesKikuyuKazaksKalaallisutKhme" + - "rKannadaKoreaansKasjmirsKoerdiesKorniesKirgisiesLatynLuxemburgsGandaLing" + - "aalsLaoLitausLuba-KatangaLettiesMalgassiesMaoriMasedoniesMalabaarsMongoo" + - "lsMarathiMaleisMalteesBirmaansNoord-NdebeleNepaleesNederlandsNoorweegse " + - "NynorskNoorse BokmålSuid-NdebeleNyanjaOksitaansOromoOriyaOssetiesPandjab" + - "iPoolsPasjtoPortugeesQuechuaReto-RomaansRundiRoemeensRussiesRwandeesSans" + - "kritSindhiNoord-SamiSangoSinhalaSlowaaksSloweensSamoaansShonaSomaliesAlb" + - "aneesSerwiesSwaziSuid-SothoSundaneesSweedsSwahiliTamilTeloegoeTadzjieksT" + - "haiTigrinyaTurkmeensTswanaTongaansTurksTsongaTataarsTahitiesUighurOekraï" + - "ensOerdoeOezbeeksVendaViëtnameesWolofXhosaJiddisjYorubaSjineesZoeloeAkol" + - "iAghemArameesMapucheAsuBembaBenaWes-BalochiBodoSjigaCherokeesSorani Koer" + - "diesTaitaZarmaLae SorbiesDualaJola-FonyiEmbuEfikAntieke EgiptiesFilippyn" + - "sGaaGagauzGotiesAntieke GrieksSwitserse DuitsGusiiHawaiiesHoog-SorbiesNg" + - "ombaMachameKabyleKambaMakondeKabuverdianuKoyra ChiiniKalenjinKomi-Permya" + - "ksKonkaniShambalaBafiaLangiLakotaLoziNoord-LuriLuba-LuluaLuoLuyiaMasaiMe" + - "ruMorisjenMakhuwa-MeettoMeta’MohawkMundangVeelvuldige taleMasanderaniNam" + - "aLae DuitsKwasioN’KoNoord-SothoNuerNyankoleK’iche’RomboRwaSamburuSanguSu" + - "id-KoerdiesSenaKoyraboro SenniTachelhitSuid-SamiLule SamiInari SamiSkolt" + - " SamiTesoTetumKlingonTok PisinToemboekaTasawaqSentraal Atlas TamazightOn" + - "bekende of ongeldige taalVaiVunjoWarlpiriSogaStandaard Marokkaanse Tamaz" + - "ightGeen linguistiese inhoudModerne Standaard ArabiesSwitserse hoog-Duit" + - "sNedersaksiesVlaamsMoldawiesSwahili (Kongo)" - -var afLangIdx = []uint16{ // 608 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0015, 0x001d, 0x001d, - 0x0024, 0x002c, 0x002c, 0x0032, 0x003e, 0x0044, 0x0050, 0x0058, - 0x0058, 0x005f, 0x0067, 0x0071, 0x0078, 0x007f, 0x0088, 0x0091, - 0x0091, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00ab, 0x00b2, 0x00b7, - 0x00bc, 0x00c2, 0x00ca, 0x00cd, 0x00d3, 0x00d9, 0x00e2, 0x00e8, - 0x00ef, 0x00f6, 0x00fd, 0x00fd, 0x0101, 0x010a, 0x0111, 0x0116, - 0x011f, 0x0123, 0x0131, 0x0139, 0x0140, 0x014a, 0x014e, 0x0153, - 0x015b, 0x0160, 0x0160, 0x0168, 0x0172, 0x017a, 0x0181, 0x0181, - // Entry 40 - 7F - 0x018c, 0x0196, 0x0196, 0x019a, 0x01a4, 0x01a4, 0x01a4, 0x01ab, - 0x01b4, 0x01be, 0x01c7, 0x01ce, 0x01d6, 0x01df, 0x01e5, 0x01e5, - 0x01eb, 0x01f6, 0x01fb, 0x0202, 0x020a, 0x020a, 0x0212, 0x021a, - 0x021a, 0x0221, 0x022a, 0x022f, 0x0239, 0x023e, 0x023e, 0x0246, - 0x0249, 0x024f, 0x025b, 0x0262, 0x026c, 0x026c, 0x0271, 0x027b, - 0x0284, 0x028c, 0x0293, 0x0299, 0x02a0, 0x02a8, 0x02a8, 0x02b5, - 0x02bd, 0x02bd, 0x02c7, 0x02d9, 0x02e7, 0x02f3, 0x02f3, 0x02f9, - 0x0302, 0x0302, 0x0307, 0x030c, 0x0314, 0x031c, 0x031c, 0x0321, - // Entry 80 - BF - 0x0327, 0x0330, 0x0337, 0x0343, 0x0348, 0x0350, 0x0357, 0x035f, - 0x0367, 0x0367, 0x036d, 0x0377, 0x037c, 0x0383, 0x038b, 0x0393, - 0x039b, 0x03a0, 0x03a8, 0x03b0, 0x03b7, 0x03bc, 0x03c6, 0x03cf, - 0x03d5, 0x03dc, 0x03e1, 0x03e9, 0x03f2, 0x03f6, 0x03fe, 0x0407, - 0x040d, 0x0415, 0x041a, 0x0420, 0x0427, 0x042f, 0x0435, 0x043f, - 0x0445, 0x044d, 0x0452, 0x045d, 0x045d, 0x045d, 0x0462, 0x0467, - 0x046e, 0x0474, 0x0474, 0x047b, 0x0481, 0x0481, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, - // Entry C0 - FF - 0x048b, 0x048b, 0x048b, 0x048b, 0x0492, 0x0499, 0x0499, 0x0499, - 0x0499, 0x0499, 0x0499, 0x0499, 0x049c, 0x049c, 0x049c, 0x049c, - 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, - 0x049c, 0x04a1, 0x04a1, 0x04a5, 0x04a5, 0x04a5, 0x04b0, 0x04b0, - 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, - 0x04b0, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, - 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b9, 0x04b9, 0x04b9, - 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04c2, 0x04c2, 0x04d1, - // Entry 100 - 13F - 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d6, 0x04d6, - 0x04d6, 0x04d6, 0x04d6, 0x04db, 0x04db, 0x04e6, 0x04e6, 0x04eb, - 0x04eb, 0x04f5, 0x04f5, 0x04f5, 0x04f9, 0x04fd, 0x04fd, 0x050d, - 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x0516, - 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, - 0x0516, 0x0519, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, - 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x0525, - 0x0525, 0x0533, 0x0542, 0x0542, 0x0542, 0x0547, 0x0547, 0x0547, - // Entry 140 - 17F - 0x0547, 0x054f, 0x054f, 0x054f, 0x054f, 0x054f, 0x055b, 0x055b, - 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, - 0x0561, 0x0568, 0x0568, 0x0568, 0x0568, 0x0568, 0x056e, 0x056e, - 0x056e, 0x0573, 0x0573, 0x0573, 0x0573, 0x0573, 0x057a, 0x0586, - 0x0586, 0x0586, 0x0586, 0x0586, 0x0586, 0x0592, 0x0592, 0x0592, - 0x0592, 0x059a, 0x059a, 0x05a7, 0x05ae, 0x05ae, 0x05ae, 0x05ae, - 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05b6, 0x05bb, 0x05bb, 0x05bb, - 0x05bb, 0x05bb, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, - // Entry 180 - 1BF - 0x05c0, 0x05c6, 0x05c6, 0x05c6, 0x05ca, 0x05d4, 0x05d4, 0x05de, - 0x05de, 0x05de, 0x05e1, 0x05e1, 0x05e6, 0x05e6, 0x05e6, 0x05e6, - 0x05e6, 0x05e6, 0x05e6, 0x05e6, 0x05e6, 0x05eb, 0x05eb, 0x05eb, - 0x05eb, 0x05eb, 0x05ef, 0x05f7, 0x05f7, 0x0605, 0x060c, 0x060c, - 0x060c, 0x060c, 0x060c, 0x0612, 0x0612, 0x0612, 0x0619, 0x0629, - 0x0629, 0x0629, 0x0629, 0x0629, 0x0629, 0x0629, 0x0634, 0x0634, - 0x0634, 0x0638, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0647, - 0x0647, 0x0647, 0x0647, 0x0647, 0x064d, 0x0658, 0x065c, 0x065c, - // Entry 1C0 - 1FF - 0x065c, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, - 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, - 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x066f, 0x066f, - 0x066f, 0x066f, 0x066f, 0x066f, 0x066f, 0x0674, 0x0674, 0x0674, - 0x0674, 0x0674, 0x0674, 0x0677, 0x0677, 0x0677, 0x0677, 0x067e, - 0x067e, 0x067e, 0x067e, 0x067e, 0x0683, 0x0683, 0x0683, 0x0683, - 0x0690, 0x0690, 0x0694, 0x0694, 0x0694, 0x06a3, 0x06a3, 0x06a3, - 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06b5, 0x06be, - // Entry 200 - 23F - 0x06c8, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, - 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, - 0x06d2, 0x06d6, 0x06d6, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db, - 0x06e2, 0x06e2, 0x06e2, 0x06e2, 0x06e2, 0x06eb, 0x06eb, 0x06eb, - 0x06eb, 0x06eb, 0x06eb, 0x06f4, 0x06f4, 0x06fb, 0x06fb, 0x0713, - 0x0713, 0x0713, 0x0713, 0x072e, 0x0731, 0x0731, 0x0731, 0x0731, - 0x0731, 0x0731, 0x0731, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, - 0x073e, 0x073e, 0x073e, 0x073e, 0x0742, 0x0742, 0x0742, 0x0742, - // Entry 240 - 27F - 0x0742, 0x0742, 0x0742, 0x0742, 0x0742, 0x0742, 0x0742, 0x0761, - 0x0761, 0x0779, 0x0779, 0x0792, 0x0792, 0x0792, 0x07a6, 0x07a6, - 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, - 0x07a6, 0x07b2, 0x07b8, 0x07b8, 0x07b8, 0x07c1, 0x07c1, 0x07d0, -} // Size: 1240 bytes - -var amLangStr string = "" + // Size: 5352 bytes - "አፋርኛአብሐዚኛአቬስታንአፍሪካንኛአካንኛአማርኛአራጎንስዓረብኛአሳሜዛዊአቫሪክአያማርኛአዘርባጃንኛባስኪርኛቤላራሻኛቡልጋሪ" + - "ኛቢስላምኛባምባርኛቤንጋሊኛቲቤታንኛብሬቶንኛቦስኒያንኛካታላንኛችችንቻሞሮኮርሲካኛክሪቼክኛቸርች ስላቪክቹቫሽወልሽዴኒሽ" + - "ጀርመንዲቬህድዞንግኻኛኢዊግሪክኛእንግሊዝኛኤስፐራንቶስፓንሽኛኢስቶኒያንኛባስክኛፐርሺያኛፊኒሽፊጂኛፋሮኛፈረንሳይኛየምዕ" + - "ራብ ፍሪስኛአይሪሽእስኮትስ ጌልክኛጋሊሺያጓራኒኛጉጃርቲኛማንክስኛሃውሳኛዕብራስጥሒንዱኛክሮሽያንኛሃይትኛሀንጋሪኛአርመ" + - "ናዊኢንቴርሊንጓኢንዶኔዥኛእንተርሊንግወኢግቦኛሲቹንዪኛእኑፒያቅኛአይስላንድኛጣሊያንኛእኑክቲቱትኛጃፓንኛጃቫንኛጆርጂያን" + - "ኮንጎኛኪኩዩካዛክኛካላሊሱትኛክመርኛ ማእከላዊካናዳኛኮሪያኛካሽሚርኛኩርድሽኛኮርኒሽኪርጊዝኛላቲንኛሉክዘምበርገርኛጋንዳ" + - "ኛሊንጋላኛላውስኛሉቴንያንኛሉባ ካታንጋላትቪያንማላጋስኛማዮሪኛማሴዶንኛማላያላምኛሞንጎላዊኛማራቲኛማላይኛማልቲስኛቡርማ" + - "ኛናኡሩሰሜን ንዴብሌኔፓሊኛደችየኖርዌይ ናይኖርስክየኖርዌይ ቦክማልንያንጃኦኪታንኛኦሮሞኛኦሪያኛኦሴቲክፑንጃብኛፖሊሽኛ" + - "ፓሽቶኛፖርቹጋልኛኵቿኛሮማንሽሩንዲኛሮማኒያንራሽያኛኪንያርዋንድኛሳንስክሪትኛሲንድሂኛሰሜናዊ ሳሚሳንጎኛሲንሃልኛስሎቫክ" + - "ኛስሎቪኛሳሞአኛሾናኛሱማልኛልቤኒኛሰርቢኛስዋቲኛሶዞኛሱዳንኛስዊድንኛስዋሂሊኛታሚልኛተሉጉኛታጂኪኛታይኛትግርኛቱርክመንኛ" + - "ጽዋናዊኛቶንጋኛቱርክኛጾንጋኛታታርኛታሂታንኛኡዊግሁርኛዩክሬንኛኡርዱኛኡዝቤክኛቬንዳቪትናምኛቮላፑክኛዎሎፍኛዞሳኛይዲሽኛ" + - "ዮሩባዊኛዡዋንግኛቻይንኛዙሉኛአቻይንኛአኮሊኛአዳንግሜአድይግሄአፍሪሂሊአገምአይኑአካዲያንአላባማአልዩትአንጊካአራማይክማ" + - "ፑቼአራኦናአራፓሆየአልጄሪያ ዓረብኛአራዋክአሱየአሜሪካ የምልክት ቋንቋአውስትሪያንአዋድሂባሉቺባሊኔስባቫሪያንባሳባሙን" + - "ባታካ ቶባቤጃቤምባቤታዊቤናባፉትባዳጋየምዕራብ ባሎቺቦጁሪቢኮልቢኒባንጃርቢሹንፑሪያባክህቲያሪብራጅብራሁዪቦዶአኮስቡሪያ" + - "ትቡጊኔዝቡሉብሊንካዶካሪብካዩጋአትሳምካቡዋኖቺጋኛቺብቻቻጋታይቹክስቺኑክ ጃርጎንቾክታዋቺፔውያንቼሮኬኛችዬኔየሶራኒ ኩር" + - "ድኛኮፕቲክካፒዝኖንክሪሚያን ተርኪሽዳኮታዳርግዋታይታኛዳላዌርዶግሪብዲንካዛርማኛዶግሪየታችኛው ሰርቢያንኛሴንተራል ዱሰ" + - "ንዱዋላኛጆላ ፎንያኛድዩላዳዛጋኢቦኛኤፊክየጥንታዊ ግብጽኛሴንተራል ዩፒክፊሊፒንኛካጁን ፍሬንችአርፒታንጋጋጉዝኛግዕዝኛ" + - "የጥንታዊ ግሪክየስዊዝ ጀርመንጉስሊኛሃዊያኛየላይኛው ሶርቢያንኛንጎባኛማቻሜኛካብይልካምባማኮንዴካቡቨርዲያኑኮይራ ቺኒ" + - "ካለንጂንኮሚ ፔርምያክኮካኒሻምባላባፊያኮሎኝያንላንጊላኮታሎዚኛሰሜናዊ ሉሪሉባ-ሉሏሉኦሉዪያማሳይሜሩሞሪሲየኛማኩዋ ሜቶ" + - "ሜታሞሃውክሙንዳንግክሪክማዛንደራኒናማየታችኛው ጀርመንኦ ናጋክዋሲዮንኮሰሜናዊ ሶቶኑዌርክላሲክ ኔዋሪኒያንኮልኛኪቼቺም" + - "ቦራዞ ሃይላንድ ኩቹዋሮምቦአሮማንያንርዋሳምቡሩሳንጉደቡባዊ ኩዲሽሴናኮይራቦሮ ሴኒታቼልሂትቻዲያን ዓረብኛሲዳምኛደቡባ" + - "ዊ ሳሚሉሌ ሳሚኢናሪ ሳሚስኮልት ሳሚኮሞሪያንክላሲክ ኔይራቴሶቴተምትግረክሊንጎንኛቶክ ፒሲንቱምቡካታሳዋቅመካከለኛ አ" + - "ትላስ ታማዚግትያልታወቀ ቋንቋቫይቩንጆዋርልፒሪሶጋካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትቋንቋዊ ይዘት አይደ" + - "ለምዘመናዊ መደበኛ ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እንግሊዝኛየብ" + - "ሪቲሽ እንግሊዝኛየአሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈረንሳይኛየ" + - "ስዊዝ ፈረንሳይኛየታችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቫዊናኮንጎ ስዋሂሊቀለል ያለ ቻ" + - "ይንኛባህላዊ ቻይንኛ" - -var amLangIdx = []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x001b, 0x002a, 0x003c, 0x0048, 0x0054, 0x0063, - 0x006f, 0x007e, 0x008a, 0x0099, 0x00ae, 0x00bd, 0x00cc, 0x00db, - 0x00ea, 0x00f9, 0x0108, 0x0117, 0x0126, 0x0138, 0x0147, 0x0150, - 0x0159, 0x0168, 0x016e, 0x0177, 0x018d, 0x0196, 0x019f, 0x01a8, - 0x01b4, 0x01bd, 0x01cf, 0x01d5, 0x01e1, 0x01f3, 0x0205, 0x0214, - 0x0229, 0x0235, 0x0244, 0x0244, 0x024d, 0x0256, 0x025f, 0x0271, - 0x028d, 0x0299, 0x02b5, 0x02c1, 0x02cd, 0x02dc, 0x02eb, 0x02f7, - 0x0306, 0x0312, 0x0312, 0x0324, 0x0330, 0x033f, 0x034e, 0x034e, - // Entry 40 - 7F - 0x0363, 0x0375, 0x038d, 0x0399, 0x03a8, 0x03ba, 0x03ba, 0x03cf, - 0x03de, 0x03f3, 0x03ff, 0x040b, 0x041a, 0x0426, 0x042f, 0x042f, - 0x043b, 0x044d, 0x0469, 0x0475, 0x0481, 0x0481, 0x0490, 0x049f, - 0x049f, 0x04ab, 0x04ba, 0x04c6, 0x04e1, 0x04ed, 0x04ed, 0x04fc, - 0x0508, 0x051a, 0x052d, 0x053c, 0x054b, 0x054b, 0x0557, 0x0566, - 0x0578, 0x058a, 0x0596, 0x05a2, 0x05b1, 0x05bd, 0x05c6, 0x05dc, - 0x05e8, 0x05e8, 0x05ee, 0x0610, 0x062c, 0x062c, 0x062c, 0x0638, - 0x0647, 0x0647, 0x0653, 0x065f, 0x066b, 0x067a, 0x067a, 0x0686, - // Entry 80 - BF - 0x0692, 0x06a4, 0x06ad, 0x06b9, 0x06c5, 0x06d4, 0x06e0, 0x06f8, - 0x070d, 0x070d, 0x071c, 0x072f, 0x073b, 0x074a, 0x0759, 0x0765, - 0x0771, 0x077a, 0x0786, 0x0792, 0x079e, 0x07aa, 0x07b3, 0x07bf, - 0x07ce, 0x07dd, 0x07e9, 0x07f5, 0x0801, 0x080a, 0x0816, 0x0828, - 0x0837, 0x0843, 0x084f, 0x085b, 0x0867, 0x0876, 0x0888, 0x0897, - 0x08a3, 0x08b2, 0x08bb, 0x08ca, 0x08d9, 0x08d9, 0x08e5, 0x08ee, - 0x08fa, 0x0909, 0x0918, 0x0924, 0x092d, 0x093c, 0x0948, 0x0957, - 0x0966, 0x0966, 0x0975, 0x097e, 0x0987, 0x0996, 0x09a2, 0x09ae, - // Entry C0 - FF - 0x09ae, 0x09ae, 0x09ae, 0x09ba, 0x09c9, 0x09d2, 0x09de, 0x09ea, - 0x0a09, 0x0a15, 0x0a15, 0x0a15, 0x0a1b, 0x0a44, 0x0a59, 0x0a59, - 0x0a65, 0x0a6e, 0x0a7a, 0x0a89, 0x0a8f, 0x0a98, 0x0aa8, 0x0aa8, - 0x0aae, 0x0ab7, 0x0ac0, 0x0ac6, 0x0acf, 0x0ad8, 0x0af1, 0x0afa, - 0x0b03, 0x0b09, 0x0b15, 0x0b15, 0x0b15, 0x0b27, 0x0b39, 0x0b42, - 0x0b4e, 0x0b54, 0x0b5d, 0x0b69, 0x0b75, 0x0b7b, 0x0b84, 0x0b84, - 0x0b8a, 0x0b93, 0x0b9c, 0x0ba8, 0x0bb4, 0x0bbd, 0x0bc6, 0x0bd2, - 0x0bdb, 0x0bdb, 0x0bf1, 0x0bfd, 0x0c0c, 0x0c18, 0x0c21, 0x0c3a, - // Entry 100 - 13F - 0x0c46, 0x0c55, 0x0c71, 0x0c71, 0x0c7a, 0x0c86, 0x0c92, 0x0c9e, - 0x0c9e, 0x0caa, 0x0cb3, 0x0cbf, 0x0cc8, 0x0cea, 0x0d03, 0x0d0f, - 0x0d0f, 0x0d22, 0x0d2b, 0x0d34, 0x0d3d, 0x0d46, 0x0d46, 0x0d62, - 0x0d62, 0x0d62, 0x0d62, 0x0d7b, 0x0d7b, 0x0d7b, 0x0d7b, 0x0d8a, - 0x0d8a, 0x0d8a, 0x0da0, 0x0da0, 0x0da0, 0x0daf, 0x0daf, 0x0daf, - 0x0daf, 0x0db2, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dca, - 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, - 0x0dca, 0x0de3, 0x0dfc, 0x0dfc, 0x0dfc, 0x0e08, 0x0e08, 0x0e08, - // Entry 140 - 17F - 0x0e08, 0x0e14, 0x0e14, 0x0e14, 0x0e14, 0x0e14, 0x0e36, 0x0e36, - 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, - 0x0e42, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e5a, 0x0e5a, - 0x0e5a, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e6f, 0x0e84, - 0x0e84, 0x0e84, 0x0e84, 0x0e84, 0x0e84, 0x0e94, 0x0e94, 0x0e94, - 0x0e94, 0x0ea3, 0x0ea3, 0x0eb9, 0x0ec2, 0x0ec2, 0x0ec2, 0x0ec2, - 0x0ec2, 0x0ec2, 0x0ec2, 0x0ec2, 0x0ece, 0x0ed7, 0x0ee6, 0x0ee6, - 0x0ee6, 0x0ee6, 0x0eef, 0x0eef, 0x0eef, 0x0eef, 0x0eef, 0x0eef, - // Entry 180 - 1BF - 0x0eef, 0x0ef8, 0x0ef8, 0x0ef8, 0x0f01, 0x0f14, 0x0f14, 0x0f21, - 0x0f21, 0x0f21, 0x0f27, 0x0f27, 0x0f30, 0x0f30, 0x0f30, 0x0f30, - 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f39, 0x0f39, 0x0f39, - 0x0f39, 0x0f39, 0x0f3f, 0x0f4e, 0x0f4e, 0x0f5e, 0x0f64, 0x0f64, - 0x0f64, 0x0f64, 0x0f64, 0x0f70, 0x0f70, 0x0f70, 0x0f7f, 0x0f7f, - 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f9a, 0x0f9a, - 0x0f9a, 0x0fa0, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fc6, 0x0fd2, - 0x0fd2, 0x0fd2, 0x0fd2, 0x0fd2, 0x0fd8, 0x0feb, 0x0ff4, 0x100a, - // Entry 1C0 - 1FF - 0x100a, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, - 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, - 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x1022, 0x104b, - 0x104b, 0x104b, 0x104b, 0x104b, 0x104b, 0x1054, 0x1054, 0x1054, - 0x1054, 0x1054, 0x1066, 0x106c, 0x106c, 0x106c, 0x106c, 0x1078, - 0x1078, 0x1078, 0x1078, 0x1078, 0x1081, 0x1081, 0x1081, 0x1081, - 0x1097, 0x1097, 0x109d, 0x109d, 0x109d, 0x10b3, 0x10b3, 0x10b3, - 0x10c2, 0x10c2, 0x10db, 0x10e7, 0x10e7, 0x10e7, 0x10fa, 0x1107, + { // sn + "chiAkanichiAmaricchiArabuchiBelarusichiBulgarianchiBengalichiCzechchiJer" + + "imanichiGreekChirunguchiSpanishchiPeshiyachiFurenchichiHausachiHindi" + + "chiHungarichiIndonesiachiIgbochiTarianachiJapanichiJavachiKhemachiKo" + + "riachiMalaychiBurmachiNepalichiDutchchiPunjabichiPolishchiPutukezich" + + "iRomanianchiRashiyachiRwandachiShonachiSomalichiSwedishchiTamilchiTh" + + "aichiTurkishchiUkreniachiUrduchiVietnamchiYorubachiChinesechiZulu", + []uint16{ // 181 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, + 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x004d, 0x004d, 0x004d, 0x004d, 0x0055, 0x005d, 0x005d, 0x0067, + 0x0067, 0x0067, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007c, + 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084, + 0x0084, 0x008c, 0x008c, 0x008c, 0x008c, 0x0096, 0x0096, 0x0096, + // Entry 40 - 7F + 0x0096, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00b3, 0x00b3, 0x00bc, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00c3, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00d3, 0x00d3, + 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, + 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, + 0x00d3, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00e3, 0x00e3, 0x00e3, + 0x00ec, 0x00ec, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, + 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x0107, + // Entry 80 - BF + 0x0107, 0x0112, 0x0112, 0x0112, 0x0112, 0x011d, 0x0127, 0x0130, + 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, + 0x0130, 0x0138, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, + 0x014b, 0x014b, 0x0153, 0x0153, 0x0153, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, + 0x0175, 0x0175, 0x0175, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, + 0x017f, 0x0188, 0x0188, 0x0192, 0x0199, + }, + }, + { // so + "AkanAxmaariCarabiBeleruusiyaanBulgeeriyaanBangaaliJeegJarmalGiriikIngiri" + + "isiIsbaanishFaarisiFaransiisFiriisiyan GalbeedHawsaHindiHangariyaanI" + + "ndunuusiyaanIgboTalyaaniJabbaaniisJafaaniisKamboodhianKuuriyaanMalaa" + + "yBurmeseNebaaliHolandaysBunjaabiBoolishBoortaqiisRomankaRuushRwandaS" + + "oomaaliSwiidhisTamiilTaaylandaysTurkishYukreeniyaanUrduuFiitnaamaysY" + + "oruubaJayniisZuulu", + []uint16{ // 181 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x002a, + 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, + 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0054, + 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0064, + 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007b, + 0x007b, 0x0080, 0x0080, 0x0080, 0x0080, 0x008b, 0x008b, 0x008b, + // Entry 40 - 7F + 0x008b, 0x0098, 0x0098, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x00a4, 0x00a4, 0x00ae, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, + 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d8, 0x00d8, 0x00d8, + 0x00df, 0x00df, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, + 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f0, 0x00f0, 0x00f7, + // Entry 80 - BF + 0x00f7, 0x0101, 0x0101, 0x0101, 0x0101, 0x0108, 0x010d, 0x0113, + 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, + 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x0123, 0x0123, 0x0129, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, + 0x0134, 0x0134, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x0147, + 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, + 0x0157, 0x015e, 0x015e, 0x0165, 0x016a, + }, + }, + { // sq + sqLangStr, + sqLangIdx, + }, + { // sr + srLangStr, + srLangIdx, + }, + { // sr-Cyrl-BA + "бјелорускибамананканбанглахаићански креолскилаошкисинхалскиисикосаисизул" + + "умапудунгуншвајцарски немачкимохокн’којужни шилхацентралноатласки т" + + "амашекстандардни марокански тамашек", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, + 0x0014, 0x0028, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0057, 0x0057, 0x0057, 0x0057, + // Entry 40 - 7F + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + // Entry 80 - BF + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0083, + 0x0083, 0x0083, 0x0083, 0x0083, 0x0091, 0x0091, 0x0091, 0x0091, + 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, + // Entry C0 - FF + 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + // Entry 100 - 13F + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + // Entry 140 - 17F + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + // Entry 180 - 1BF + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00db, 0x00db, + // Entry 1C0 - 1FF + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + // Entry 200 - 23F + 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f0, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + // Entry 240 - 27F + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x0157, + }, + }, + { // sr-Cyrl-ME + "бјелорускибамананканбанглафулаххаићански креолскилаошкиисикосаисизулумап" + + "удунгунмохокн’којужни шилхацентралноатласки тамашекстандардни марок" + + "ански тамашек", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, + 0x0014, 0x0028, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x0061, 0x0061, 0x0061, 0x0061, + // Entry 40 - 7F + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + // Entry 80 - BF + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, + 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry C0 - FF + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + // Entry 100 - 13F + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + // Entry 140 - 17F + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + // Entry 180 - 1BF + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x00a7, 0x00a7, 0x00a7, + 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, + 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, + 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00b0, 0x00b0, + // Entry 1C0 - 1FF + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + // Entry 200 - 23F + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, + 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, + 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, + // Entry 240 - 27F + 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, + 0x00f4, 0x00f4, 0x012c, + }, + }, + { // sr-Cyrl-XK + "бамананканбанглафулаххаићански креолскилаошкисинхалскиисикосаисизулушвај" + + "царски немачкимохокн’којужни шилхацентралноатласки тамашекстандардн" + + "и марокански тамашек", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0014, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x004d, 0x004d, 0x004d, 0x004d, + // Entry 40 - 7F + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + // Entry 80 - BF + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0079, + 0x0079, 0x0079, 0x0079, 0x0079, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + // Entry C0 - FF + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + // Entry 100 - 13F + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + // Entry 140 - 17F + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + // Entry 180 - 1BF + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00bd, 0x00bd, + // Entry 1C0 - 1FF + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + // Entry 200 - 23F + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, + 0x00d2, 0x00d2, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + // Entry 240 - 27F + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0101, 0x0139, + }, + }, + { // sr-Latn + srLatnLangStr, + srLatnLangIdx, + }, + { // sr-Latn-BA + "bjeloruskibamanankanbanglahaićanski kreolskilaoškisinhalskiisikosaisizul" + + "umapudungunšvajcarski nemačkimohokn’kojužni šilhacentralnoatlaski ta" + + "mašekstandardni marokanski tamašek", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, + 0x000a, 0x0014, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, + // Entry 40 - 7F + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + // Entry 80 - BF + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, + 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, + 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x004b, 0x004b, 0x004b, 0x004b, + 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, + // Entry C0 - FF + 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + // Entry 100 - 13F + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0069, 0x0069, 0x0069, 0x0069, + // Entry 140 - 17F + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + // Entry 180 - 1BF + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0074, 0x0074, + // Entry 1C0 - 1FF + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, + 0x0074, 0x0074, 0x0074, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + // Entry 200 - 23F + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + // Entry 240 - 27F + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x00b8, + }, + }, + { // sr-Latn-ME + "bjeloruskibamanankanbanglafulahhaićanski kreolskilaoškiisikosaisizulumap" + + "udungunmohokn’kojužni šilhacentralnoatlaski tamašekstandardni maroka" + + "nski tamašek", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, + 0x000a, 0x0014, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x001f, 0x001f, 0x001f, 0x001f, 0x0032, 0x0032, 0x0032, 0x0032, + // Entry 40 - 7F + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + // Entry 80 - BF + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, + 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, + // Entry C0 - FF + 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + // Entry 100 - 13F + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + // Entry 140 - 17F + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + // Entry 180 - 1BF + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x005c, 0x005c, + // Entry 1C0 - 1FF + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + // Entry 200 - 23F + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + // Entry 240 - 27F + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x00a0, + }, + }, + { // sr-Latn-XK + "bamanankanbanglafulahhaićanski kreolskilaoškisinhalskiisikosaisizulušvaj" + + "carski nemačkimohokn’kojužni šilhacentralnoatlaski tamašekstandardni" + + " marokanski tamašek", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000a, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, + // Entry 40 - 7F + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + // Entry 80 - BF + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + // Entry C0 - FF + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + // Entry 100 - 13F + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x005a, 0x005a, 0x005a, 0x005a, + // Entry 140 - 17F + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + // Entry 180 - 1BF + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f, 0x005f, 0x005f, + 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, + 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, + 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x0065, 0x0065, + // Entry 1C0 - 1FF + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + // Entry 200 - 23F + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, + 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, + 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, + // Entry 240 - 27F + 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, + 0x008b, 0x008b, 0x00a9, + }, + }, + { // sv + svLangStr, + svLangIdx, + }, + { // sv-FI + "kirgiziska", + []uint16{ // 91 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000a, + }, + }, + { // sw + swLangStr, + swLangIdx, + }, + { // sw-CD + "KiakanKiazabajaniKimanksiKikirigiziKilimburgiKimasedoniaKiyidiKiarabu ch" + + "a AljeriaKibuginiKigwichiinKihupaKiingushKilojbanKikachinKikoyra Chi" + + "iniKikakoKikomipermyakKikurukhKikumykKilambamakKimokshaKimikmakiKimo" + + "hokiKimossiKingiemboonKiinkoPijini ya NijeriaKikiicheKiarabu cha Cha" + + "diKitongo cha SrananKikomoroKisiriaKiudumurtiKirootKiwalserKiarabu c" + + "ha Dunia Kilichosanifishwa", + []uint16{ // 591 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0019, 0x0019, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, + // Entry 40 - 7F + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, + 0x0019, 0x0019, 0x0023, 0x0023, 0x0023, 0x0023, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + // Entry 80 - BF + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + // Entry C0 - FF + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + // Entry 100 - 13F + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, + // Entry 140 - 17F + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0069, 0x0069, 0x0069, 0x0069, 0x0071, 0x0071, + 0x0071, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, + 0x0079, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x008f, + 0x008f, 0x008f, 0x0095, 0x0095, 0x0095, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00aa, 0x00aa, 0x00aa, + 0x00aa, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b8, 0x00b8, + // Entry 180 - 1BF + 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, + 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, + 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00bb, 0x00bb, 0x00bb, + 0x00bb, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00d4, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00ec, 0x00ec, + // Entry 1C0 - 1FF + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00fd, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x00fd, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, + 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0116, 0x0116, 0x0116, + // Entry 200 - 23F + 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0128, + 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0130, 0x0130, + 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, + 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, + 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, + 0x0137, 0x0137, 0x0137, 0x0141, 0x0141, 0x0141, 0x0147, 0x0147, + 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x014f, + 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, + // Entry 240 - 27F + 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, + 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0172, + }, + }, + { // sw-KE + "KitwiKiazabajaniKilimbugishKimasedoniaKiodiaKiwaloonainKiarabu cha Aljer" + + "iaKibuginiKikurdi cha KatiKisorbian cha ChiniKigiriki cha KaleKisorb" + + "ia cha JuuKingushiKilojbaniKikachinKikoyra ChiiniKikakoKikomipermyak" + + "KikurukhKilambaKimokshaKimicmacKimohokiKiingiemboonKiin’koPijini ya " + + "NijeriascoKikoyraboro SenniKiarabu cha ChadiKiscran TongoKicomoroKis" + + "yriaLugha ya Central Atlas TamazightKiudumurtiKirootKiwalserTamazigh" + + "t Sanifu ya MorokoKiarabu cha Sasa Kilichosanifishwa", + []uint16{ // 591 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + // Entry 40 - 7F + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + // Entry 80 - BF + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0037, 0x0037, 0x0037, 0x0037, + // Entry C0 - FF + 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + // Entry 100 - 13F + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, + // Entry 140 - 17F + 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, + 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x009e, 0x009e, + 0x009e, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, + 0x00a7, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, + 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, 0x00bd, + 0x00bd, 0x00bd, 0x00c3, 0x00c3, 0x00c3, 0x00d0, 0x00d0, 0x00d0, + 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00df, 0x00df, + // Entry 180 - 1BF + 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, + 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, + 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, + 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, + 0x00e7, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f7, 0x00f7, 0x00f7, + 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, + 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, + 0x00f7, 0x00f7, 0x0103, 0x0103, 0x0103, 0x0103, 0x010c, 0x010c, + // Entry 1C0 - 1FF + 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, + 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x011d, 0x011d, + 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0142, 0x0142, 0x0142, + // Entry 200 - 23F + 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x014f, + 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0157, 0x0157, + 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, + 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, + 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, + 0x015e, 0x015e, 0x017e, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, + 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x0196, + 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, + // Entry 240 - 27F + 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, + 0x0196, 0x0196, 0x01b0, 0x01b0, 0x01b0, 0x01b0, 0x01d2, + }, + }, + { // ta + taLangStr, + taLangIdx, + }, + { // te + teLangStr, + teLangIdx, + }, + { // teo + "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + + "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + + "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + + "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + + "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + + "rubaKichinaKizuluKiteso", + []uint16{ // 533 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, + 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, + 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, + 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, + // Entry 40 - 7F + 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, + 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, + 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, + // Entry 80 - BF + 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, + 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, + 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, + 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, + 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry C0 - FF + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry 100 - 13F + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry 140 - 17F + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry 180 - 1BF + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry 1C0 - 1FF + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + // Entry 200 - 23F + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0169, 0x0169, 0x0169, 0x0169, 0x016f, + }, + }, + { // th + thLangStr, + thLangIdx, + }, + { // ti + "አፍሪቃንሰኛትዊአምሐረኛዓረበኛአዜርባይጃንኛቤላራሻኛቡልጋሪኛበንጋሊኛብሬቶንቦስኒያንካታላንቼክኛወልሽዴኒሽጀርመንግሪከኛእ" + + "ንግሊዝኛኤስፐራንቶስፓኒሽኤስቶኒአንባስክኛፐርሲያኛፊኒሽፋሮኛፈረንሳይኛፍሪሰኛአይሪሽእስኮትስ ጌልክኛጋለቪኛጓራ" + + "ኒጉጃራቲኛዕብራስጥሕንደኛክሮሽያንኛሀንጋሪኛኢንቴር ቋንቋእንዶኑሲኛአይስላንደኛጣሊያንኛጃፓንኛጃቫንኛጊዮርጊያኛ" + + "ካማደኛኮሪያኛኩርድሽኪሩጋዚላቲንኛሊቱአኒየንላቲቪያንማክዶኒኛማላያላምኛማራቲኛማላይኛማልቲስኛኔፖሊኛደችኖርዌይኛ" + + " (ናይ ኝኖርስክ)ኖርዌጂያንኦኪታንኛኦሪያፑንጃቢኛፖሊሽፓሽቶፖርቱጋሊኛሮማኒያንራሽኛስንሃልኛስሎቨክኛስቁቪኛአልቤኒ" + + "ኛሰርቢኛሰሴቶሱዳንኛስዊድንኛሰዋሂሊኛታሚልኛተሉጉኛታይኛትግርኛናይ ቱርኪ ሰብዓይ (ቱርካዊ)ቱርከኛዩክረኒኛኡር" + + "ዱኛኡዝበክኛቪትናምኛዞሳኛዪዲሽዙሉኛታጋሎገኛክሊንግኦንኛፖርቱጋልኛ (ናይ ብራዚል)ፖርቱጋልኛ (ናይ ፖርቱጋል)" + + "ሰርቦ- ክሮዊታን", + []uint16{ // 610 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x001b, 0x002a, 0x002a, + 0x0036, 0x0036, 0x0036, 0x0036, 0x004e, 0x004e, 0x005d, 0x006c, + 0x006c, 0x006c, 0x007b, 0x007b, 0x0087, 0x0096, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, 0x00b4, 0x00bd, + 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00e7, 0x00f9, 0x0105, + 0x0117, 0x0123, 0x0132, 0x0132, 0x013b, 0x013b, 0x0144, 0x0156, + 0x0162, 0x016e, 0x018a, 0x0196, 0x019f, 0x01ae, 0x01ae, 0x01ae, + 0x01bd, 0x01c9, 0x01c9, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, + // Entry 40 - 7F + 0x0200, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0227, + 0x0236, 0x0236, 0x0242, 0x024e, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x026c, 0x0278, 0x0278, 0x0278, 0x0284, + 0x0284, 0x0284, 0x0290, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c, + 0x029c, 0x02ae, 0x02ae, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02cc, + 0x02de, 0x02de, 0x02ea, 0x02f6, 0x0305, 0x0305, 0x0305, 0x0305, + 0x0311, 0x0311, 0x0317, 0x033f, 0x0351, 0x0351, 0x0351, 0x0351, + 0x0360, 0x0360, 0x0360, 0x0369, 0x0369, 0x0378, 0x0378, 0x0381, + // Entry 80 - BF + 0x038a, 0x039c, 0x039c, 0x039c, 0x039c, 0x03ab, 0x03b4, 0x03b4, + 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d2, 0x03de, + 0x03de, 0x03de, 0x03de, 0x03ed, 0x03f9, 0x03f9, 0x0402, 0x040e, + 0x041d, 0x042c, 0x0438, 0x0444, 0x0444, 0x044d, 0x0459, 0x0485, + 0x0485, 0x0485, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x04a0, + 0x04ac, 0x04bb, 0x04bb, 0x04ca, 0x04ca, 0x04ca, 0x04ca, 0x04d3, + 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + // Entry C0 - FF + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + // Entry 100 - 13F + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, + 0x04e5, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + // Entry 140 - 17F + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + // Entry 180 - 1BF + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + // Entry 1C0 - 1FF + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + // Entry 200 - 23F + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, + 0x04f4, 0x04f4, 0x04f4, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + // Entry 240 - 27F + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0531, 0x055c, + 0x055c, 0x0576, + }, + }, + { // to + "lea fakaʻafālalea fakaʻapakasialea fakaʻavesitanilea fakaʻafilikanalea f" + + "akaʻakanilea fakaʻamelikilea fakaʻalakonilea fakaʻalepealea fakaʻasa" + + "mialea fakaʻavalikilea fakaʻaimalalea fakaʻasapaisanilea fakapasikil" + + "ilea fakapelalusilea fakapulukalialea fakapisilamalea fakapamipalale" + + "a fakapengikalilea fakatipetilea fakapeletonilea fakaposinialea faka" + + "katalanilea fakaseselea fakakamololea fakakōsikalea fakakelīlea faka" + + "sekilea fakasilavia-fakasiasilea fakasuvasalea fakauēlesilea fakaten" + + "imaʻakelea fakasiamanelea fakativehilea fakatisōngikalea fakaʻeuelea" + + " fakakalisilea fakapālangilea fakaʻesipulanitolea fakasipēnisilea fa" + + "kaʻesitōnialea fakapāsikilea fakapēsialea fakafulālea fakafinilanile" + + "a fakafisilea fakafaloelea fakafalanisēlea fakafilisia-hihifolea fak" + + "aʻaelanilea fakakaelikilea fakakalisialea fakakualanilea fakakutalat" + + "ilea fakamangikīlea fakahausalea fakahepelūlea fakahinitīlea fakahil" + + "i-motulea fakakuloisialea fakahaitilea fakahungakalialea fakaʻāmenia" + + "lea fakahelelolea fakavahaʻalealea fakaʻinitōnesialea fakavahaʻaling" + + "ikēlea fakaʻikipōlea fakasisiuani-īlea fakaʻinupiakilea fakaʻitolea " + + "fakaʻaisilanilea fakaʻītalilea fakaʻinuketitutilea fakasiapanilea fa" + + "kasavalea fakaseōsialea fakakongikōlea fakakikuiulea fakakuaniamalea" + + " fakakasakilea fakakalaʻalisutilea fakakamipōtialea fakakanatalea fa" + + "kakōlealea fakakanulilea fakakāsimilalea fakakulitīlea fakakomilea f" + + "akakoniualilea fakakīsisilea fakalatinalea fakalakisimipekilea fakak" + + "anitalea fakalimipūlikilea lingikalalea fakalaulea fakalituanialea f" + + "akalupa-katangalea fakalativialea fakamalakasilea fakamāsololea faka" + + "maulilea fakamasitōnialea fakaʻinitia-malāialamilea fakamongokōliale" + + "a fakamalatilea fakamaleilea fakamalitalea fakapemalea fakanaululea " + + "fakanetepele-tokelaulea fakanepalilea fakanetongikālea fakahōlanilea" + + " fakanoauē-ninosikilea fakanouaē-pokimalilea fakanetepele-tongalea f" + + "akanavaholea fakanianisalea fakaʻokitanelea fakaʻosipiuālea fakaʻolo" + + "molea faka-ʻotialea fakaʻosetikilea fakapūnusapilea fakapālilea faka" + + "polanilea fakapasitōlea fakapotukalilea fakakuetisalea fakalaito-lom" + + "ēnialea fakaluanitilea fakalōmenialea fakalūsialea fakakiniāuanital" + + "ea fakasanisukulitilea fakasaletīnialea fakasīnitilea fakasami-tokel" + + "aulea fakasangikōlea fakasingihalalea fakasolāvakilea fakasolovenial" + + "ea fakahaʻamoalea fakasionalea fakasomalilea fakaʻalapēnialea fakasē" + + "pialea fakasuatilea fakasoto-tongalea fakasunitālea fakasuētenilea f" + + "akasuahililea fakatamililea fakaʻinitia-telukulea fakatāsikilea faka" + + "tailanilea fakatikilinialea fakatēkimenilea fakatisuanalea fakatonga" + + "lea fakatoakelea fakatisongalea fakatatalelea fakatahitilea fakaʻuik" + + "ūlilea fakaʻūkalaʻinelea fakaʻūtūlea fakaʻusipekilea fakavenitālea " + + "fakavietinamilea fakavolapikilea fakaʻualonialea fakaʻuolofolea faka" + + "tōsalea fakaītisilea fakaʻiōlupalea fakasuangilea fakasiainalea faka" + + "sululea fakaʻatisēlea fakaʻakolilea fakaʻatangimēlea fakaʻatikēlea f" + + "akaʻalepea-tunīsialea fakaʻafilihililea fakaʻakihemilea fakaʻainulea" + + " fakaʻakatialea fakaʻalapamalea fakaʻaleutilea fakaʻalapēnia-kekilea" + + " fakaʻalitai-tongalea fakapālangi-motuʻalea fakaʻangikalea fakaʻalām" + + "itilea fakamapuselea fakaʻalaonalea fakaʻalapaholea fakaʻalepea-ʻais" + + "ilialea fakaʻalauakilea fakaʻalepea-molokolea fakaʻalepea-ʻisipitele" + + "a fakaʻasulea fakaʻilonga-ʻamelikalea fakaʻasitūlialea fakakotavalea" + + " fakaʻauatilea fakapalusilea fakapalilea fakapavālialea fakapasaʻale" + + "a fakapamunilea fakatōpe-pētekilea fakakomalalea fakapesalea fakapēm" + + "ipalea fakapetavilea fakapenalea fakapafutilea fakapatakalea fakapal" + + "usi-hihifolea fakaposipulilea fakapikolilea fakapinilea fakapanisali" + + "lea fakakomelea fakasikesikālea fakapisinupilialea fakapakitiālilea " + + "fakapalailea fakapalahuilea fakapōtolea fakaʻakōselea fakapuliatilea" + + " fakapukisilea fakapululea fakapilinilea fakametūmipalea fakakatolea" + + " fakakalipalea fakakaiukalea fakaʻatisamilea fakasepuanolea fakakika" + + "lea fakasīpisalea fakasakatāilea fakatūkelea fakamalīlea fakasinuki-" + + "takotelea fakasokitaulea fakasipeuianilea fakaselokīlea fakaseienele" + + "a fakakūtisi-lolotolea fakakopitikalea fakakapisenolea fakatoake-kil" + + "imealea fakaseselua-falanisēlea fakakasiupialea fakatakotalea fakata" + + "lakuālea fakataitalea fakatelaualelea fakasilavelea fakatōkelipilea " + + "fakatingikālea fakatisāmalea fakatokililea fakasōpia-hifolea fakatus" + + "uni-lolotolea fakatualalea fakahōlani-lotolotolea fakaiola-fonīlea f" + + "akatiulalea fakatasakalea fakaʻemipūlea fakaʻefikilea fakaʻemilialea" + + " fakaʻisipitemuʻalea fakaʻekaiukilea fakaʻelamitelea fakapālangi-lot" + + "olotolea fakaiūpiki-lolotolea fakaʻeuōnitolea fakaʻekisitematulalea " + + "fakafangilea fakafilipainilea fakafinilani-tōnetalelea fakafōngilea " + + "fakafalanisē-kasunilea fakafalanisē-lotolotolea fakafalanisē-motuʻal" + + "ea fakaʻāpitanolea fakafilisia-tokelaulea fakafilisia-hahakelea faka" + + "fulilānilea fakakālea fakakakausilea fakasiaina-kanilea fakakaiolea " + + "fakakapaialea fakateli-soloasitelialea fakasiʻisilea fakakilipasilea" + + " fakakilakilea fakasiamane-hake-lotolotolea fakasiamane-hake-motuʻal" + + "ea fakakonikanī-koanilea fakakonitīlea fakakolonitalolea fakakotikal" + + "ea fakakēpolea fakakalisimuʻalea fakasiamane-suisilanilea fakaʻuaiūl" + + "ea fakafalefalelea fakakusīlea fakaʻuīsinilea fakahaitalea fakasiain" + + "a-hakalea fakahauaiʻilea fakahinitī-fisilea fakahilikainonilea fakah" + + "ititelea fakamōngilea fakasōpia-hakelea fakasiaina-siangilea fakahup" + + "alea fakaʻipanilea fakaʻipipiolea fakaʻilokolea fakaʻingusilea fakaʻ" + + "ingilianilea fakapālangi-samaikalea fakalosipanilea fakanikōmipalea " + + "fakamasamelea fakaʻiuteo-pēsialea fakaʻiuteo-ʻalepealea fakaʻiutilan" + + "ilea fakakala-kalipakilea fakakapilelea fakakasinilea fakasisūlea fa" + + "kakamipalea fakakavilea fakakapālitialea fakakanēmipulea fakatiapile" + + "a fakamakōnitelea fakakapuvelitianulea fakakeniangilea fakakololea f" + + "akakaingangilea fakakāsilea fakakōtanilea fakakoila-sīnilea fakakoua" + + "lilea fakakilimanisikīlea fakakakolea fakakalenisinilea fakakimipūni" + + "tulea fakakomi-pelemiakilea fakakonikanīlea fakakosilaelea fakakepel" + + "elea fakakalate-palakililea fakakiliolea fakakinaraiālea fakakalelia" + + "lea fakakulukilea fakasiamipalalea fakapafialea fakakolongialea faka" + + "kumikilea fakakutenailea fakalatinolea fakalangilea fakalānitalea fa" + + "kalamipālea fakalesikialea fakakavakava-foʻoulea fakalikulialea faka" + + "livonialea fakalakotalea fakalomipātilea fakamongikōlea fakalosilea " + + "fakaluli-tokelaulea fakalatakalelea fakalupa-lulualea fakaluisenolea" + + " fakalunitālea fakaluolea fakamisolea fakaluīalea fakasiaina-faʻutoh" + + "ilea fakalasulea fakamatulalea fakamafalea fakamakahilea fakamaitili" + + "lea fakamakasalilea fakamanitīngikolea fakamasailea fakamapalea faka" + + "mokisiālea fakamanetalilea fakamenetīlea fakamelulea fakamolisienile" + + "a fakaʻaelani-lotolotolea fakamakūa-meʻetolea fakametālea fakamikema" + + "kilea fakaminangikapaulea fakamanisūlea fakamanipulilea fakamohaukil" + + "ea fakamosilea fakamali-hihifolea fakamunitangilea tuifiolea fakakil" + + "ekilea fakamilanitēsilea fakamaliwalilea fakamenitauailea fakamienel" + + "ea fakaʻelisialea fakamasanitelanilea fakasiaina-mininanilea fakanap" + + "oletanolea fakanamalea fakasiamane-hifolea fakaneualilea fakaniasile" + + "a fakaniuēlea fakaʻaonasalea fakakuasiolea fakangiemipōnilea fakanok" + + "ailea fakanoauē-motuʻalea fakanovialelea fakanikōlea fakasoto-tokela" + + "ulea fakanuelilea fakaneuali-motuʻalea fakaniamiuesilea fakanianikol" + + "elea fakaniololea fakanesimalea fakaʻosēselea fakatoake-ʻotomanilea " + + "fakapangasinanilea fakapālavilea fakapamipangalea fakapapiamēnitolea" + + " fakapalaulea fakapikātilea fakanaisilialea fakasiamane-penisilivani" + + "alea fakasiamane-lafalafalea fakapēsia-motuʻalea fakasiamane-palatin" + + "elea fakafoinikialea fakapiemonitelea fakaponitikilea fakaponapēlea " + + "fakapulūsialea fakapolovenisi-motuʻalea fakakīsēlea fakakuitisa-simi" + + "polasolea fakalasasitanilea fakalapanuilea fakalalotongalea fakaloma" + + "niololea fakalifilea fakalomipōlea fakalomanilea fakalotumalea fakal" + + "usinilea fakalovianalea fakaʻalomanialea fakaluālea fakasanitauelea " + + "fakasakalea fakasamalitani-ʻalāmitilea fakasamipululea fakasasakilea" + + " fakasanitalilea fakasaulasitilālea fakangāmipailea fakasangulea fak" + + "asisīlialea fakasikotilanilea fakasaletīnia-sasalesulea faka-tonga ‘" + + "o Ketesilea fakasenekalea fakasenalea fakaselilea fakaselikupilea fa" + + "kakoilapolo-senilea fakaʻaelani-motuʻalea fakasamositialea fakatasel" + + "ihitilea fakasianilea fakaʻalepea-sātilea fakasitamolea fakasilesia-" + + "hifolea fakaselaiālea fakasami-tongalea fakasami-lulelea fakasami-ʻi" + + "nalilea fakasami-sikolitalea fakasoninekēlea fakasokitianalea fakasu" + + "lanane-tongikōlea fakasēlēlelea fakasaholea fakafilisia-satēlanilea " + + "fakasukumalea fakasusūlea fakasumelialea fakakomololea fakasuliāiā-m" + + "uʻalea fakasuliāiālea fakasilesialea fakatululea fakatimenēlea fakat" + + "esolea fakatelenolea fakatetumulea fakatikilēlea fakativilea fakatok" + + "elaulea fakasākulilea fakakilingonilea fakatilingikītelea fakatalisi" + + "lea fakatamasiekilea fakaniasa-tongalea fakatoki-pisinilea fakatuloi" + + "olea fakatalokolea fakasakōnialea fakatisīmisianilea fakatati-mosele" + + "milea fakatumepukalea fakatūvalulea fakatasauakilea fakatuvīnialea f" + + "akatamasaiti-ʻatilasi-lolotolea fakaʻutimulitilea fakaʻūkalitilea fa" + + "kaʻumipūnitulea fakaʻilonga-tefitolea fakavailea fakavenēsialea faka" + + "vepisilea fakavelamingi-hihifolea fakafalanikoni-lolotolea fakavotik" + + "ilea fakavōlolea fakavūnisolea fakaʻualiselilea fakaʻuolaitalea faka" + + "ʻualailea fakaʻuasiōlea fakaʻuālipililea fakasiaina-uūlea fakakalim" + + "ikilea fakamingilelialea fakasokalea fakaʻiaolea fakaʻiapilea fakaʻi" + + "angipenilea fakaʻiēmipalea fakaneʻēngatūlea fakakuangitongilea fakas" + + "apotekilea fakaʻilonga-pilisilea fakasēlanilea fakasenakalea fakatam" + + "asaiti-molokolea fakasuniʻikai ha lealea fakasāsālea fakaʻalepea (mā" + + "mani)lea fakasiamane-ʻaositulialea fakasiamane-hake-suisilanilea fak" + + "apālangi-ʻaositelēlialea fakapālangi-kānatalea fakapilitānialea faka" + + "pālangi-ʻamelikalea fakasipēnisi lātini-ʻamelikalea fakasipēnisi-‘iu" + + "lopelea fakasipēnisi-mekisikoulea fakafalanisē-kānatalea fakafalanis" + + "ē-suisilanilea fakasakisoni-hifolea fakahōlani-pelesiumelea fakapot" + + "ukali-palāsililea fakapotukali-ʻiulopelea fakamolitāvialea fakakuloi" + + "sia-sēpialea fakasuahili-kongikōlea fakasiaina-fakafaingofualea faka" + + "siaina-tukufakaholo", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0010, 0x0022, 0x0035, 0x0048, 0x0057, 0x0068, 0x0079, + 0x0089, 0x0099, 0x00aa, 0x00ba, 0x00ce, 0x00de, 0x00ee, 0x00ff, + 0x010f, 0x011f, 0x0130, 0x013e, 0x014e, 0x015d, 0x016d, 0x0179, + 0x0187, 0x0196, 0x01a3, 0x01af, 0x01c8, 0x01d6, 0x01e5, 0x01f8, + 0x0207, 0x0215, 0x0227, 0x0234, 0x0242, 0x0252, 0x0267, 0x0278, + 0x028b, 0x029a, 0x02a8, 0x02b5, 0x02c5, 0x02d1, 0x02de, 0x02ef, + 0x0305, 0x0315, 0x0324, 0x0333, 0x0342, 0x0352, 0x0362, 0x036f, + 0x037e, 0x038d, 0x039e, 0x03ae, 0x03bb, 0x03cd, 0x03de, 0x03ec, + // Entry 40 - 7F + 0x03fe, 0x0413, 0x042a, 0x043a, 0x044d, 0x045f, 0x046c, 0x047e, + 0x048e, 0x04a3, 0x04b2, 0x04be, 0x04cd, 0x04dd, 0x04eb, 0x04fb, + 0x0509, 0x051e, 0x0530, 0x053e, 0x054c, 0x055a, 0x056b, 0x057a, + 0x0586, 0x0596, 0x05a5, 0x05b3, 0x05c7, 0x05d5, 0x05e8, 0x05f5, + 0x0600, 0x0610, 0x0624, 0x0633, 0x0643, 0x0652, 0x065f, 0x0671, + 0x068d, 0x06a0, 0x06ae, 0x06bb, 0x06c9, 0x06d5, 0x06e2, 0x06fa, + 0x0708, 0x071a, 0x0729, 0x0740, 0x0757, 0x076d, 0x077b, 0x078a, + 0x079b, 0x07ad, 0x07bc, 0x07cb, 0x07dc, 0x07ed, 0x07fa, 0x0808, + // Entry 80 - BF + 0x0817, 0x0827, 0x0836, 0x084c, 0x085b, 0x086b, 0x0879, 0x088d, + 0x08a1, 0x08b3, 0x08c2, 0x08d6, 0x08e6, 0x08f7, 0x0908, 0x0919, + 0x0929, 0x0936, 0x0944, 0x0957, 0x0965, 0x0972, 0x0984, 0x0993, + 0x09a3, 0x09b2, 0x09c0, 0x09d7, 0x09e6, 0x09f5, 0x0a06, 0x0a17, + 0x0a26, 0x0a33, 0x0a40, 0x0a4f, 0x0a5d, 0x0a6b, 0x0a7c, 0x0a91, + 0x0aa0, 0x0ab1, 0x0ac0, 0x0ad1, 0x0ae1, 0x0af2, 0x0b02, 0x0b0f, + 0x0b1d, 0x0b2e, 0x0b3c, 0x0b4a, 0x0b56, 0x0b66, 0x0b75, 0x0b88, + 0x0b98, 0x0bb1, 0x0bc4, 0x0bd5, 0x0be3, 0x0bf3, 0x0c04, 0x0c14, + // Entry C0 - FF + 0x0c2c, 0x0c42, 0x0c5a, 0x0c6a, 0x0c7c, 0x0c8a, 0x0c9a, 0x0cab, + 0x0cc5, 0x0cc5, 0x0cd6, 0x0ced, 0x0d07, 0x0d14, 0x0d2e, 0x0d41, + 0x0d4f, 0x0d5e, 0x0d6c, 0x0d78, 0x0d88, 0x0d97, 0x0da5, 0x0dba, + 0x0dc8, 0x0dd4, 0x0de3, 0x0df1, 0x0dfd, 0x0e0b, 0x0e19, 0x0e2e, + 0x0e3e, 0x0e4c, 0x0e58, 0x0e68, 0x0e74, 0x0e85, 0x0e98, 0x0eaa, + 0x0eb7, 0x0ec6, 0x0ed3, 0x0ee3, 0x0ef2, 0x0f00, 0x0f0c, 0x0f1a, + 0x0f2b, 0x0f37, 0x0f45, 0x0f53, 0x0f64, 0x0f73, 0x0f7f, 0x0f8e, + 0x0f9e, 0x0fab, 0x0fb8, 0x0fcd, 0x0fdc, 0x0fed, 0x0ffc, 0x100a, + // Entry 100 - 13F + 0x1020, 0x1030, 0x1040, 0x1055, 0x106e, 0x107e, 0x108c, 0x109c, + 0x10a9, 0x10b9, 0x10c7, 0x10d8, 0x10e8, 0x10f7, 0x1105, 0x1118, + 0x112d, 0x113a, 0x1152, 0x1164, 0x1171, 0x117f, 0x118f, 0x119e, + 0x11ae, 0x11c4, 0x11d5, 0x11e6, 0x11ff, 0x1215, 0x1227, 0x123e, + 0x124b, 0x125c, 0x1276, 0x1284, 0x129c, 0x12b6, 0x12cf, 0x12e1, + 0x12f8, 0x130e, 0x131f, 0x132a, 0x1339, 0x134c, 0x1358, 0x1366, + 0x137f, 0x138e, 0x139e, 0x13ac, 0x13c9, 0x13e5, 0x13fc, 0x140b, + 0x141d, 0x142b, 0x1438, 0x144b, 0x1464, 0x1473, 0x1483, 0x1490, + // Entry 140 - 17F + 0x14a1, 0x14ae, 0x14c1, 0x14d1, 0x14e5, 0x14f8, 0x1506, 0x1514, + 0x1527, 0x153c, 0x1548, 0x1557, 0x1567, 0x1576, 0x1586, 0x1599, + 0x15b1, 0x15c1, 0x15d2, 0x15e0, 0x15f6, 0x160e, 0x1620, 0x1635, + 0x1643, 0x1651, 0x165e, 0x166c, 0x1678, 0x168a, 0x169b, 0x16a8, + 0x16b9, 0x16ce, 0x16de, 0x16ea, 0x16fb, 0x1708, 0x1717, 0x172a, + 0x1738, 0x174d, 0x1759, 0x176b, 0x177e, 0x1794, 0x17a5, 0x17b4, + 0x17c2, 0x17d9, 0x17e6, 0x17f7, 0x1806, 0x1814, 0x1825, 0x1832, + 0x1842, 0x1850, 0x185f, 0x186d, 0x187a, 0x1889, 0x1898, 0x18a7, + // Entry 180 - 1BF + 0x18be, 0x18cd, 0x18dc, 0x18ea, 0x18fb, 0x190b, 0x1917, 0x192b, + 0x193b, 0x194d, 0x195c, 0x196b, 0x1976, 0x1982, 0x198f, 0x19a7, + 0x19b3, 0x19c1, 0x19cd, 0x19db, 0x19ea, 0x19fa, 0x1a0e, 0x1a1b, + 0x1a27, 0x1a37, 0x1a47, 0x1a56, 0x1a62, 0x1a73, 0x1a8c, 0x1aa2, + 0x1aaf, 0x1abf, 0x1ad3, 0x1ae2, 0x1af2, 0x1b01, 0x1b0d, 0x1b20, + 0x1b31, 0x1b3b, 0x1b49, 0x1b5c, 0x1b6c, 0x1b7d, 0x1b8a, 0x1b9a, + 0x1bae, 0x1bc5, 0x1bd7, 0x1be3, 0x1bf7, 0x1c05, 0x1c12, 0x1c1f, + 0x1c2f, 0x1c3d, 0x1c50, 0x1c5d, 0x1c73, 0x1c82, 0x1c8f, 0x1ca3, + // Entry 1C0 - 1FF + 0x1cb0, 0x1cc6, 0x1cd7, 0x1ce8, 0x1cf5, 0x1d03, 0x1d13, 0x1d2a, + 0x1d3d, 0x1d4c, 0x1d5d, 0x1d71, 0x1d7e, 0x1d8d, 0x1d9d, 0x1dba, + 0x1dd2, 0x1de8, 0x1e00, 0x1e10, 0x1e21, 0x1e31, 0x1e40, 0x1e50, + 0x1e6a, 0x1e78, 0x1e92, 0x1ea4, 0x1eb3, 0x1ec4, 0x1ed5, 0x1ee1, + 0x1ef0, 0x1efe, 0x1f0c, 0x1f1a, 0x1f29, 0x1f3b, 0x1f47, 0x1f57, + 0x1f63, 0x1f80, 0x1f90, 0x1f9e, 0x1fae, 0x1fc2, 0x1fd3, 0x1fe0, + 0x1ff0, 0x2002, 0x201d, 0x2037, 0x2045, 0x2051, 0x205d, 0x206d, + 0x2083, 0x209b, 0x20ac, 0x20be, 0x20cb, 0x20e1, 0x20ef, 0x2103, + // Entry 200 - 23F + 0x2112, 0x2124, 0x2135, 0x2149, 0x215e, 0x216f, 0x2180, 0x2199, + 0x21a9, 0x21b5, 0x21ce, 0x21dc, 0x21e9, 0x21f8, 0x2206, 0x221d, + 0x222e, 0x223d, 0x2249, 0x2258, 0x2264, 0x2272, 0x2280, 0x228f, + 0x229b, 0x22aa, 0x22b9, 0x22ca, 0x22de, 0x22ec, 0x22fd, 0x2310, + 0x2323, 0x2331, 0x233f, 0x234f, 0x2363, 0x2378, 0x2388, 0x2397, + 0x23a7, 0x23b7, 0x23d9, 0x23ec, 0x23fe, 0x2412, 0x2429, 0x2434, + 0x2444, 0x2452, 0x246a, 0x2483, 0x2491, 0x249e, 0x24ad, 0x24bf, + 0x24d0, 0x24df, 0x24ef, 0x2502, 0x2514, 0x2524, 0x2536, 0x2542, + // Entry 240 - 27F + 0x254f, 0x255d, 0x2570, 0x2581, 0x2595, 0x25a8, 0x25b8, 0x25cf, + 0x25de, 0x25ec, 0x2604, 0x2610, 0x261d, 0x262b, 0x2645, 0x2645, + 0x2660, 0x267e, 0x269d, 0x26b5, 0x26c7, 0x26e1, 0x2704, 0x271f, + 0x273a, 0x273a, 0x2753, 0x276e, 0x2783, 0x279c, 0x27b6, 0x27cf, + 0x27e1, 0x27f8, 0x2810, 0x282c, 0x2847, + }, + }, + { // tr + trLangStr, + trLangIdx, + }, + { // twq + "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + + " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + + "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + + "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" + + "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" + + "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" + + "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" + + "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " + + "MandareŋZulu senniTasawaq senni", + []uint16{ // 553 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, + 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, + 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, + 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, + 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, + 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, + // Entry 40 - 7F + 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, + 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, + 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f, + 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, + 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175, + // Entry 80 - BF + 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, + 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db, + 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, + 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, + 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + // Entry C0 - FF + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + // Entry 100 - 13F + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + // Entry 140 - 17F + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + // Entry 180 - 1BF + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + // Entry 1C0 - 1FF + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + // Entry 200 - 23F + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0246, + }, + }, + { // tzm + "TakanitTamharitTaεrabtTabilarusitTabelɣaritTabinɣalitTačiktTalmanitTayun" + + "anitTanglizttasbelyunitTafarisitTafṛansistTahawsatTahinditTahenɣarit" + + "TindunisitTigbutTaṭalyantTajappunitTajavanitTaxmert ,TalammastTakuri" + + "tTamalizitTaburmanitTanippalitTahulanḍitTabenjabitTappulunitTaburtuɣ" + + "alitTaṛumanitTarusitTarwanditTaṣumalitTaswiditTatamiltTaṭaytTaturkit" + + "TukranitTurdutTaviṭnamitTayurubatTacinwit,MandarintazulutTamaziɣt n " + + "laṭlaṣ", + []uint16{ // 555 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0022, 0x002d, + 0x002d, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x0058, 0x0058, 0x0063, + 0x0063, 0x0063, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0078, + 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0080, + 0x0080, 0x0088, 0x0088, 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, + // Entry 40 - 7F + 0x0093, 0x009d, 0x009d, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00a3, + 0x00ae, 0x00ae, 0x00b8, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, + 0x00c1, 0x00c1, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00ed, 0x00ed, 0x00ed, + 0x00f7, 0x00f7, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, + 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x010d, 0x010d, 0x0117, + // Entry 80 - BF + 0x0117, 0x0124, 0x0124, 0x0124, 0x0124, 0x012f, 0x0136, 0x013f, + 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x013f, 0x013f, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, + 0x0152, 0x0152, 0x015a, 0x015a, 0x015a, 0x0162, 0x0162, 0x0162, + 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0172, + 0x0178, 0x0178, 0x0178, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, + 0x0184, 0x018d, 0x018d, 0x019e, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + // Entry C0 - FF + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + // Entry 100 - 13F + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + // Entry 140 - 17F + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + // Entry 180 - 1BF + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + // Entry 1C0 - 1FF + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + // Entry 200 - 23F + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01bb, + }, + }, + { // ug + "ئافارچەئابخازچەئاۋېستاچەئافرىكانچەئاكانچەئامھارچەئاراگونچەئەرەبچەئاسامچە" + + "ئاۋارچەئايماراچەئەزەربەيجانچەباشقىرتچەبېلارۇسچەبۇلغارچەبىسلاماچەبام" + + "باراچەبېنگالچەتىبەتچەبىرېتونچەبوسىنچەكاتالانچەچېچىنچەچامورروچەكورسۇ" + + "چەكرىچەچېخچەقەدىمكى سلاۋيانچەچۇۋاشچەۋېلشچەدانىشچەگېرمانچەدىۋېخچەزوڭ" + + "خاچەئېۋېچەگىرېكچەئىنگلىزچەئېسپرانتوچەئىسپانچەئېستونچەباسكىچەپارسچەف" + + "ۇلاھچەفىنچەفىجىچەفائېروچەفىرانسۇزچەغەربىي فىرسچەئىرېلاندچەشوتلاندىي" + + "ە گايلچىسىگالىچەگۇئارانىچەگۇجاراتچەمانچەخائۇساچەئىبرانىيچەھىندىچەھى" + + "رى موتۇچەكىرودىچەھايتىچەۋېنگىرچەئەرمېنچەخېرېروچەئارىلىق تىلھىندونېز" + + "چەئىنتىرلىڭچەئىگبوچەيىچە (سىچۈەن)ئىنۇپىكچەئىدوچەئىسلاندچەئىتالىيانچ" + + "ەئىنۇكتىتۇتچەياپونچەياۋاچەگىرۇزچەكونگوچەكىكۇيۇچەكىۋانياماچەقازاقچەگ" + + "ىرېنلاندچەكىمېرچەكانناداچەكورېيەچەكانۇرچەكەشمىرچەكۇردچەكومىچەكورنىش" + + "چەقىرغىزچەلاتىنچەلىيۇكسېمبۇرگچەگانداچەلىمبۇرگچەلىنگالاچەلائوسچەلىتۋ" + + "انىچەلۇبا-كاتانگاچەلاتچەمالاگاسچەمارشالچەماۋرىچەماكېدونچەمالايالامچ" + + "ەموڭغۇلچەماراتىچەمالايچەمالتاچەبىرماچەناۋرۇچەشىمالى ندەبەلەچەنېپالچ" + + "ەندونگاچەگوللاندچەيېڭى نورۋېگچەنورۋىگىيە بوكمالچەجەنۇبى ندەبەلەچەنا" + + "ۋاخوچەنىيانجاچەئوكسىتچەئوجىبۋاچەئوروموچەئودىياچەئوسسېتچەچەپەنجابچەپ" + + "الىچەپولەكچەپۇشتۇچەپورتۇگالچەكېچىۋاچەرومانسچەرۇندىچەرومىنچەرۇسچەكېن" + + "ىيەرىۋانداچەسانسكرىتچەساردىنىيەچەسىندىچەشىمالىي سامىچەسانگوچەسىنگال" + + "چەسىلوۋاكچەسىلوۋېنچەساموئاچەشوناچەسومالىچەئالبانچەسېربچەسىۋاتىچەسوت" + + "وچەسۇنداچەشىۋېدچەسىۋاھىلچەتامىلچەتېلۇگۇچەتاجىكچەتايلاندچەتىگرىنياچە" + + "تۈركمەنچەسىۋاناچەتونگانچەتۈركچەسونگاچەتاتارچەتاختىچەئۇيغۇرچەئۇكرائى" + + "نچەئوردۇچەئۆزبېكچەۋېنداچەۋىيېتنامچەۋولاپۇكچەۋاللۇنچەۋولوفچەخوساچەيى" + + "ددىشچەيورۇباچەجۇاڭچەخەنزۇچەزۇلۇچەئاتجېچەئاچولىچەئاداڭمېچەئادىگېيچەئ" + + "افرىخىلىچەئاگەمچەئاينۇچەئاككادچەئالېيۇتچەجەنۇبى ئالتاي تىللىرىقەدىم" + + "كى ئىنگلىزچەئانگىكاچەئارامۇچەماپۇدۇنگۇنچەئاراپاخوچەئاراۋاكچەئاسۇچەئ" + + "استۇرىيەچەئاۋادىچەبېلۇجىچەبالىچەباساچەبامۇنچەگومالاچەبېجاچەبېمباچەب" + + "ېناچەبافۇتچەبوجپۇرىچەبىكولچەبىنىچەكومچەسىكسىكاچەبىراجچەبودوچەئاكۇسچ" + + "ەبۇرىياتچەبۇگىچەبۇلۇچەبىلىنچەمېدۇمباچەكاددوچەكارىبچەكايۇگاچەئاتسامچ" + + "ەسېبۇچەچىگاچەچىبچاچەچاغاتايچەچۇكچەمارىچەچىنۇك-ژارگونچەچوكتاۋچەچىپېۋ" + + "يانچەچېروكىچەچېيېنچەمەركىزىي كۇردچەكوپتىكچەقىرىم تۈركچەكاسزۇبىچەداك" + + "وتاچەدارگىۋاچەتايتاچەدېلاۋارېچەسلاۋچەدوگرىبچەدىنكاچەزارماچەدوگرىچەت" + + "ۆۋەن سوربچەدۇئالاچەئوتتۇرا گوللاندىيەچەجولاچەدىيۇلاچەدازاگاچەئېمبۇچ" + + "ەئېفىكچەقەدىمكى مىسىرچەئېكاجۇكچەئېلامىتچەئوتتۇرا ئەسىر ئىنگلىزچەئېۋ" + + "وندوچەفاڭچەفىلىپپىنچەفونچەئوتتۇرا ئەسىر فىرانسۇزچەقەدىمكى فىرانسۇزچ" + + "ەشىمالى فىرىزيەچەشەرقى فىرىزيەچەفىرىئۇلىچەگاچەگايوچەگىباياچەگىزچەگى" + + "لبېرتچەئوتتۇرا ئەسىر ئېگىزلىك گېرمانچەقەدىمكى ئېگىزلىك گېرمانچەگوند" + + "ىچەگورونتالوچەگوتچەگرېبوچەقەدىمكى گىرېكچەگېرمانچە شىۋىتسارىيەگۇسىچە" + + "گىۋىچىنچەھەيدەچەھاۋايچەخىلىگاينونچەخىتتىتچەمۆڭچەئۈستۈن سوربچەخۇپاچە" + + "ئىبانچەئىبىبىئوچەئىلوكانوچەئىنگۇشچەلوجبانچەنگومباچەماچامچەئىبرانى پ" + + "ارسچەئىبرانى ئەرەبچەقارا-قالپاقچەكابىلېچەكاچىنچەجۇچەكامباچەكاۋىچەكا" + + "باردەيچەكانېمبۇچەتياپچەماكوندېچەكابۇۋېردىيانچەكوروچەكاسىچەخوتەنچەكو" + + "يرا چىنىچەكاكوچەكالېنجىنچەكىمبۇندۇچەكونكانچەكوسرايېچەكىپەللېچەقاراچ" + + "اي-بالقارچەكارەلچەكۇرۇخچەشامبالاچەبافىياچەكولىشچەقۇمۇقچەكۇتەنايچەلا" + + "دىنوچەلانگىچەلانداچەلامباچەلېزگىنچەمونگوچەلوزىچەلۇبا-لۇئاچەلۇيسېنگو" + + "چەلۇنداچەلۇئوچەمىزوچەلۇياچەمادۇرېسچەمافاچەماگاخىچەمايتىلىچەماكاسارچ" + + "ەماندىنگوچەماسايچەماباچەموكشاچەماندارچەمېندېچەمېرۇچەمورىسيېنچەئوتتۇ" + + "را ئەسىر ئىرېلاندچەماكۇۋاچەمېتاچە’مىكماكچەمىناڭكابائۇچەمانجۇچەمانىپ" + + "ۇرچەموخاۋكچەموسسىچەمۇنداڭچەكۆپ تىللاركىرىكچەمىراندېسچەمارۋارىچەميېن" + + "ېچەئېرزاچەناپولىچەناماچەتۆۋەن گېرمانچەنېۋارىچەنىئاسچەنيۇئېچەكۋاسىيو" + + "چەنگېمبۇنچەنوغايچەقەدىمكى نورۋېگچەنىكوچەشىمالىي سوتوچەمۇئېرچەنېۋارچ" + + "ەنيامۋېزىچەنىيانكولېچەنىئوروچەنىزەماچەئوساگېلارچەئوسمان تۈركچەپانگا" + + "سىنانچەپەھلەۋىچەپامپانگاچەپاپىيامېنتوچەپالاۋچەقەدىمكى پارىسچەفىنىكى" + + "يەچەپوناپېئانچەقەدىمكى پروۋېنچالچەراجاستانچەراپانىيچەرومبوچەسىگانچە" + + "ئارومانچەرىۋاچەسانداۋېچەساخاچەسامارىتانچەسامبۇرۇچەساساكچەسانتالچەنگ" + + "امبايچەسانگۇچەسىتسىلىيەچەشوتلاندىيەچەسېكنېكاچەسېناچەسېلكاپچەشەرقىي " + + "سوڭخايچەقەدىمكى ئىرېلاندچەشىلخاچەشانچەچاد ئەرەبچەسىداموچەجەنۇبىي سا" + + "مىچەلۇلې سامىچەئىنارى سامىچەسكولت سامىچەسونىنكەچەسوغدىچەسىرانان-توڭ" + + "وچەسېرېرچەساخوچەسۇكۇماچەسۇسۇچەسۈمەرچەكومورىچەقەدىمىي سۇرىيەچەسۇرىيە" + + "چەتېمنېچەتېسوچەتېرېناچەتېتۇمچەتىگرېچەتىۋچەتوكېلاۋچەكىلىنگونچەتىلىنگ" + + "ىتچەتاماشېكچەنياسا توڭانچەتوك-پىسىنچەتوروكوچەسىمشيانچەتۇمبۇكاچەتۇۋا" + + "لۇچەشىمالىي سوڭخايچەتوۋاچەمەركىزىي ئاتلاس تامازايتچەئۇدمۇرتچەئۇگارى" + + "تىكچەئۇمبۇندۇچەغول تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولايتاچەۋارايچەۋاش" + + "وچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەزاپوتېكچەبىلىس ب" + + "ەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل مەزمۇنى يوقزاز" + + "اچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچەشىۋىتسارىيە ئې" + + "گىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئەنگلىيە ئىنگلى" + + "زچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئىسپانچەمېكسىكا" + + " ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىرازىلىيە پورتۇگالچ" + + "ەياۋروپا پورتۇگالچەسېرب-كرودىيەچەكونگو سىۋالىچەئاددىي خەنچەمۇرەككەپ" + + " خەنچە", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x000e, 0x001e, 0x0030, 0x0044, 0x0052, 0x0062, 0x0074, + 0x0082, 0x0090, 0x009e, 0x00b0, 0x00ca, 0x00dc, 0x00ee, 0x00fe, + 0x0110, 0x0122, 0x0132, 0x0140, 0x0152, 0x0160, 0x0172, 0x0180, + 0x0192, 0x01a0, 0x01aa, 0x01b4, 0x01d5, 0x01e3, 0x01ef, 0x01fd, + 0x020d, 0x021b, 0x0229, 0x0235, 0x0243, 0x0255, 0x026b, 0x027b, + 0x028b, 0x0299, 0x02a5, 0x02b3, 0x02bd, 0x02c9, 0x02d9, 0x02ed, + 0x0306, 0x031a, 0x033f, 0x034b, 0x035f, 0x0371, 0x037b, 0x038b, + 0x039f, 0x03ad, 0x03c2, 0x03d2, 0x03e0, 0x03f0, 0x0400, 0x0410, + // Entry 40 - 7F + 0x0425, 0x0439, 0x044f, 0x045d, 0x0474, 0x0486, 0x0492, 0x04a4, + 0x04ba, 0x04d2, 0x04e0, 0x04ec, 0x04fa, 0x0508, 0x0518, 0x052e, + 0x053c, 0x0552, 0x0560, 0x0572, 0x0582, 0x0590, 0x05a0, 0x05ac, + 0x05b8, 0x05c8, 0x05d8, 0x05e6, 0x0602, 0x0610, 0x0622, 0x0634, + 0x0642, 0x0654, 0x066f, 0x0679, 0x068b, 0x069b, 0x06a9, 0x06bb, + 0x06d1, 0x06e1, 0x06f1, 0x06ff, 0x070d, 0x071b, 0x0729, 0x0748, + 0x0756, 0x0766, 0x0778, 0x0791, 0x07b4, 0x07d3, 0x07e3, 0x07f5, + 0x0805, 0x0817, 0x0827, 0x0837, 0x084b, 0x085b, 0x0867, 0x0875, + // Entry 80 - BF + 0x0883, 0x0897, 0x08a7, 0x08b7, 0x08c5, 0x08d3, 0x08dd, 0x08fb, + 0x090f, 0x0925, 0x0933, 0x094e, 0x095c, 0x096c, 0x097e, 0x0990, + 0x09a0, 0x09ac, 0x09bc, 0x09cc, 0x09d8, 0x09e8, 0x09f4, 0x0a02, + 0x0a10, 0x0a22, 0x0a30, 0x0a40, 0x0a4e, 0x0a60, 0x0a74, 0x0a86, + 0x0a96, 0x0aa6, 0x0ab2, 0x0ac0, 0x0ace, 0x0adc, 0x0aec, 0x0b00, + 0x0b0e, 0x0b1e, 0x0b2c, 0x0b40, 0x0b52, 0x0b62, 0x0b70, 0x0b7c, + 0x0b8c, 0x0b9c, 0x0ba8, 0x0bb6, 0x0bc2, 0x0bd0, 0x0be0, 0x0bf2, + 0x0c04, 0x0c04, 0x0c1a, 0x0c28, 0x0c36, 0x0c46, 0x0c46, 0x0c58, + // Entry C0 - FF + 0x0c58, 0x0c80, 0x0ca1, 0x0cb3, 0x0cc3, 0x0cdb, 0x0cdb, 0x0cef, + 0x0cef, 0x0cef, 0x0d01, 0x0d01, 0x0d01, 0x0d0d, 0x0d0d, 0x0d23, + 0x0d23, 0x0d33, 0x0d43, 0x0d4f, 0x0d4f, 0x0d5b, 0x0d69, 0x0d69, + 0x0d79, 0x0d85, 0x0d93, 0x0d93, 0x0d9f, 0x0dad, 0x0dad, 0x0dad, + 0x0dbf, 0x0dcd, 0x0dd9, 0x0dd9, 0x0de3, 0x0df5, 0x0df5, 0x0df5, + 0x0e03, 0x0e03, 0x0e0f, 0x0e1d, 0x0e2f, 0x0e3b, 0x0e47, 0x0e55, + 0x0e67, 0x0e75, 0x0e83, 0x0e93, 0x0ea3, 0x0eaf, 0x0ebb, 0x0ec9, + 0x0edb, 0x0ee5, 0x0ef1, 0x0f0c, 0x0f1c, 0x0f30, 0x0f40, 0x0f4e, + // Entry 100 - 13F + 0x0f6b, 0x0f7b, 0x0f7b, 0x0f92, 0x0f92, 0x0fa4, 0x0fb4, 0x0fc6, + 0x0fd4, 0x0fe8, 0x0ff4, 0x1004, 0x1012, 0x1020, 0x102e, 0x1045, + 0x1045, 0x1055, 0x107c, 0x1088, 0x1098, 0x10a8, 0x10b6, 0x10c4, + 0x10c4, 0x10e1, 0x10f3, 0x1105, 0x1131, 0x1131, 0x1143, 0x1143, + 0x114d, 0x1161, 0x1161, 0x116b, 0x116b, 0x1199, 0x11bc, 0x11bc, + 0x11db, 0x11f8, 0x120c, 0x1214, 0x1214, 0x1214, 0x1220, 0x1230, + 0x1230, 0x123a, 0x124c, 0x124c, 0x1287, 0x12b7, 0x12b7, 0x12c5, + 0x12db, 0x12e5, 0x12f3, 0x1310, 0x1337, 0x1337, 0x1337, 0x1343, + // Entry 140 - 17F + 0x1355, 0x1363, 0x1363, 0x1371, 0x1371, 0x1389, 0x1399, 0x13a3, + 0x13bc, 0x13bc, 0x13c8, 0x13d6, 0x13ea, 0x13fe, 0x140e, 0x140e, + 0x140e, 0x141e, 0x142e, 0x143c, 0x1457, 0x1474, 0x1474, 0x148d, + 0x149d, 0x14ab, 0x14b3, 0x14c1, 0x14cd, 0x14e1, 0x14f3, 0x14ff, + 0x1511, 0x152d, 0x152d, 0x1539, 0x1539, 0x1545, 0x1553, 0x156a, + 0x156a, 0x156a, 0x1576, 0x158a, 0x159e, 0x159e, 0x15ae, 0x15c0, + 0x15d2, 0x15f1, 0x15f1, 0x15f1, 0x15ff, 0x160d, 0x161f, 0x162f, + 0x163d, 0x164b, 0x165d, 0x166d, 0x167b, 0x1689, 0x1697, 0x16a7, + // Entry 180 - 1BF + 0x16a7, 0x16a7, 0x16a7, 0x16a7, 0x16a7, 0x16b5, 0x16c1, 0x16c1, + 0x16c1, 0x16d6, 0x16ea, 0x16f8, 0x1704, 0x1710, 0x171c, 0x171c, + 0x171c, 0x172e, 0x173a, 0x174a, 0x175c, 0x176e, 0x1782, 0x1790, + 0x179c, 0x17aa, 0x17ba, 0x17c8, 0x17d4, 0x17e8, 0x1816, 0x1826, + 0x1835, 0x1845, 0x185f, 0x186d, 0x187f, 0x188f, 0x189d, 0x189d, + 0x18ad, 0x18c0, 0x18ce, 0x18e2, 0x18f4, 0x18f4, 0x1902, 0x1910, + 0x1910, 0x1910, 0x1920, 0x192c, 0x1947, 0x1957, 0x1965, 0x1973, + 0x1973, 0x1985, 0x1997, 0x19a5, 0x19c4, 0x19c4, 0x19d0, 0x19eb, + // Entry 1C0 - 1FF + 0x19f9, 0x1a07, 0x1a1b, 0x1a31, 0x1a41, 0x1a51, 0x1a67, 0x1a80, + 0x1a98, 0x1aaa, 0x1abe, 0x1ad8, 0x1ae6, 0x1ae6, 0x1ae6, 0x1ae6, + 0x1ae6, 0x1b03, 0x1b03, 0x1b17, 0x1b17, 0x1b17, 0x1b2d, 0x1b2d, + 0x1b52, 0x1b52, 0x1b52, 0x1b66, 0x1b78, 0x1b78, 0x1b78, 0x1b78, + 0x1b86, 0x1b94, 0x1b94, 0x1b94, 0x1b94, 0x1ba6, 0x1bb2, 0x1bc4, + 0x1bd0, 0x1be6, 0x1bf8, 0x1c06, 0x1c16, 0x1c16, 0x1c28, 0x1c36, + 0x1c4c, 0x1c64, 0x1c64, 0x1c64, 0x1c76, 0x1c82, 0x1c82, 0x1c92, + 0x1caf, 0x1cd2, 0x1cd2, 0x1ce0, 0x1cea, 0x1cff, 0x1d0f, 0x1d0f, + // Entry 200 - 23F + 0x1d0f, 0x1d2a, 0x1d3f, 0x1d58, 0x1d6f, 0x1d81, 0x1d8f, 0x1daa, + 0x1db8, 0x1dc4, 0x1dc4, 0x1dd4, 0x1de0, 0x1dee, 0x1dfe, 0x1e1d, + 0x1e2d, 0x1e2d, 0x1e2d, 0x1e3b, 0x1e47, 0x1e57, 0x1e65, 0x1e73, + 0x1e7d, 0x1e8f, 0x1e8f, 0x1ea3, 0x1eb7, 0x1eb7, 0x1ec9, 0x1ee2, + 0x1ef7, 0x1ef7, 0x1f07, 0x1f07, 0x1f19, 0x1f19, 0x1f2b, 0x1f3b, + 0x1f5a, 0x1f66, 0x1f98, 0x1faa, 0x1fc0, 0x1fd4, 0x1fe1, 0x1feb, + 0x1feb, 0x1feb, 0x1feb, 0x1feb, 0x1ff7, 0x1ff7, 0x2005, 0x2015, + 0x2027, 0x2035, 0x2041, 0x2041, 0x2041, 0x2051, 0x2051, 0x205d, + // Entry 240 - 27F + 0x2067, 0x2071, 0x2081, 0x208f, 0x208f, 0x20a1, 0x20b3, 0x20d0, + 0x20d0, 0x20e0, 0x2114, 0x2120, 0x213c, 0x2148, 0x2183, 0x2183, + 0x21a8, 0x21e0, 0x2209, 0x2228, 0x224b, 0x226e, 0x229a, 0x22b9, + 0x22d8, 0x22d8, 0x22f9, 0x2324, 0x2324, 0x2324, 0x234d, 0x2370, + 0x2370, 0x238b, 0x23a6, 0x23bd, 0x23d8, + }, + }, + { // uk + ukLangStr, + ukLangIdx, + }, + { // ur + urLangStr, + urLangIdx, + }, + { // ur-IN + "افریقیکروشینجاوانیزجارجيائىکلالیسٹکنڑکرداودھیسورانی کردیزرمہمگہیمسائیمعی" + + "اری مراقشی تمازیقیجدید معیاری عربیآسان چینی", + []uint16{ // 612 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + // Entry 40 - 7F + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0026, 0x0036, 0x0036, 0x0036, 0x0036, + 0x0036, 0x0044, 0x0044, 0x004a, 0x004a, 0x004a, 0x004a, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + // Entry 80 - BF + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + // Entry C0 - FF + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + // Entry 100 - 13F + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + // Entry 140 - 17F + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + // Entry 180 - 1BF + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x007f, 0x007f, 0x007f, 0x007f, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry 1C0 - 1FF + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry 200 - 23F + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + // Entry 240 - 27F + 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00cf, 0x00cf, + 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, + 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, + 0x00cf, 0x00cf, 0x00cf, 0x00e0, + }, + }, + { // uz + uzLangStr, + uzLangIdx, + }, + { // uz-Arab + "دریپشتواوزبیک", + []uint16{ // 170 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + // Entry 40 - 7F + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + // Entry 80 - BF + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x000e, 0x001a, + }, + }, + { // uz-Cyrl + "афарчаабхазчаафрикаансаканчаамхарчаарагонарабчаассомчааварчааймараозарба" + + "йжончабошқирдчабеларусчаболгарчабисламабамбарчабенгалчатибетчабрето" + + "нчабоснийчакаталончачечен тиличаморрокорсиканчачехчаславянча (черко" + + "в)чуваш тилиуэлсчадатчанемисчадивехидзонгкаэвечагрекчаинглизчаэспер" + + "антоиспанчаэстончабаскчафорсийфулаҳфинчафижичафарерчафранцузчағарби" + + "й фризчаирландчашотландча гаеликгалицийчагуаранигужаротчамэнчахауса" + + "ибронийҳиндихорватчагаитянчавенгерчаарманчагерероинтерлингваиндонез" + + "чаигбоидоисландчаиталянчаинуктитутяпончаяванчагрузинчакикуюқозоқчаг" + + "ренландчахмерчаканнадакорейсчаканурикашмирчакурдчакорнчақирғизчалот" + + "инчалюксембургчагандачалингалчалаосчалитвачалуба-катангалатишчамала" + + "гасийчамаршалл тилимаоримакедончамалаяламмўғулчамаратхималай тилмал" + + "тачабирманчашимолий ндебеленепалчаголландчанорвегча нюнорскнорвегча" + + " бокмалжанубий ндебелчачеваокситанчаоромоодияпанжобчаполякчапуштупор" + + "тугалчакечуароманшчарундируминчарусчакиняруандасанскритсиндҳишимоли" + + "й саамчасангосингалчасловакчасловенчашонасомаличаалбанчасербчасвати" + + "сунданчашведчасуахилитамилчателугутожикчатайчатигринячатуркманчатон" + + "ганчатуркчататарчауйғурчаукраинчаурдуўзбекчавендаветнамчаволапюквол" + + "офчахосаиддишйорубахитойчазулуачинадангмэадигейагемчаайнуалеутангик" + + "амапудунгунарапахоасучаастурийчаавадхибаличабасаабембабеначабхожпур" + + "ибинибодочабугийчаблинчасебуанчачигачачуукчамаричоктавчачерокишайен" + + "нсорани-курдчадакотчадаргинчатаитачадогрибзармақуйи-сорбчадуалачади" + + "ола-фогнидазагаэмбучаэфикэкажукэвондончафилипинчафонфриулчагагеэзги" + + "лбертчагоронталонемисча (Швейцария)гусиигвичингавайчахилигайнонхмон" + + "гчаюқори сорбчахупа тилиибан тилиибибоилокоингушчангомбамачаме тили" + + "кабилчакажикамбачамакондечакабувердианукойра-чииникакокаленжинчакон" + + "канчашамбалабафиячакёлнчалангичалакотачалакотачашимолий лурилушайлу" + + "ҳямасайчамокша тилимендемеручаморисьенмахува-миттометамикмакминангк" + + "абауманипурчамогавкмоссимундангбир нечта тилкрикчамирандесэрзянчама" + + "зандераннаманиуэчаквасионгиембуннконуэрчанянколепапияментокичэромбо" + + "чааруминруанда тилисахасамбуручасанталисангучасенакойраборо-сеннита" + + "шелхитжанубий саамчалуле-саамчаинари-саамчасколт-саамчасаҳочакоморч" + + "асуриячатесотигретасавакмарказий атлас тамазигхтномаълум тилваивунж" + + "овалсерчаволяттасогаянгбенкантончатамазигхтТил таркиби йўқстандарт " + + "арабчаинглизча (Британия)инглизча (Америка)фламандчаконго-суахилисо" + + "ддалаштирилган хитойчаанъанавий хитойча", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x000c, 0x001a, 0x001a, 0x002c, 0x0038, 0x0046, 0x0052, + 0x005e, 0x006c, 0x0078, 0x0084, 0x009c, 0x00ae, 0x00c0, 0x00d0, + 0x00de, 0x00ee, 0x00fe, 0x010c, 0x011c, 0x012c, 0x013e, 0x0151, + 0x015f, 0x0173, 0x0173, 0x017d, 0x019c, 0x01af, 0x01bb, 0x01c5, + 0x01d3, 0x01df, 0x01ed, 0x01f7, 0x0203, 0x0213, 0x0225, 0x0233, + 0x0241, 0x024d, 0x0259, 0x0263, 0x026d, 0x0279, 0x0287, 0x0299, + 0x02b2, 0x02c2, 0x02e1, 0x02f3, 0x0301, 0x0313, 0x031d, 0x0327, + 0x0335, 0x033f, 0x033f, 0x034f, 0x035f, 0x036f, 0x037d, 0x0389, + // Entry 40 - 7F + 0x039f, 0x03b1, 0x03b1, 0x03b9, 0x03b9, 0x03b9, 0x03bf, 0x03cf, + 0x03df, 0x03f1, 0x03fd, 0x0409, 0x0419, 0x0419, 0x0423, 0x0423, + 0x0431, 0x0445, 0x0451, 0x045f, 0x046f, 0x047b, 0x048b, 0x0497, + 0x0497, 0x04a3, 0x04b3, 0x04c1, 0x04d9, 0x04e7, 0x04e7, 0x04f7, + 0x0503, 0x0511, 0x0528, 0x0536, 0x054c, 0x0563, 0x056d, 0x057f, + 0x058f, 0x059d, 0x05ab, 0x05bc, 0x05ca, 0x05da, 0x05da, 0x05f7, + 0x0605, 0x0605, 0x0617, 0x0636, 0x0653, 0x0672, 0x0672, 0x067a, + 0x068c, 0x068c, 0x0696, 0x069e, 0x069e, 0x06ae, 0x06ae, 0x06bc, + // Entry 80 - BF + 0x06c6, 0x06da, 0x06e4, 0x06f4, 0x06fe, 0x070c, 0x0716, 0x072a, + 0x073a, 0x073a, 0x0746, 0x0761, 0x076b, 0x077b, 0x078b, 0x079b, + 0x079b, 0x07a3, 0x07b3, 0x07c1, 0x07cd, 0x07d7, 0x07d7, 0x07e7, + 0x07f3, 0x0801, 0x080f, 0x081b, 0x0829, 0x0833, 0x0845, 0x0857, + 0x0857, 0x0867, 0x0873, 0x0873, 0x0881, 0x0881, 0x088f, 0x089f, + 0x08a7, 0x08b5, 0x08bf, 0x08cf, 0x08dd, 0x08dd, 0x08eb, 0x08f3, + 0x08fd, 0x0909, 0x0909, 0x0917, 0x091f, 0x0927, 0x0927, 0x0935, + 0x0941, 0x0941, 0x0941, 0x094d, 0x0955, 0x0955, 0x0955, 0x095f, + // Entry C0 - FF + 0x095f, 0x095f, 0x095f, 0x096b, 0x096b, 0x097f, 0x097f, 0x098d, + 0x098d, 0x098d, 0x098d, 0x098d, 0x098d, 0x0997, 0x0997, 0x09a9, + 0x09a9, 0x09b5, 0x09b5, 0x09c1, 0x09c1, 0x09cb, 0x09cb, 0x09cb, + 0x09cb, 0x09cb, 0x09d5, 0x09d5, 0x09e1, 0x09e1, 0x09e1, 0x09e1, + 0x09f1, 0x09f1, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x09f9, + 0x09f9, 0x09f9, 0x0a05, 0x0a05, 0x0a05, 0x0a13, 0x0a13, 0x0a1f, + 0x0a1f, 0x0a1f, 0x0a1f, 0x0a1f, 0x0a1f, 0x0a2f, 0x0a3b, 0x0a3b, + 0x0a3b, 0x0a47, 0x0a4f, 0x0a4f, 0x0a5f, 0x0a5f, 0x0a6b, 0x0a77, + // Entry 100 - 13F + 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a9e, 0x0aae, + 0x0abc, 0x0abc, 0x0abc, 0x0ac8, 0x0ac8, 0x0ad2, 0x0ad2, 0x0ae7, + 0x0ae7, 0x0af5, 0x0af5, 0x0b0a, 0x0b0a, 0x0b16, 0x0b22, 0x0b2a, + 0x0b2a, 0x0b2a, 0x0b36, 0x0b36, 0x0b36, 0x0b36, 0x0b48, 0x0b48, + 0x0b48, 0x0b5a, 0x0b5a, 0x0b60, 0x0b60, 0x0b60, 0x0b60, 0x0b60, + 0x0b60, 0x0b60, 0x0b6e, 0x0b72, 0x0b72, 0x0b72, 0x0b72, 0x0b72, + 0x0b72, 0x0b7a, 0x0b8c, 0x0b8c, 0x0b8c, 0x0b8c, 0x0b8c, 0x0b8c, + 0x0b9e, 0x0b9e, 0x0b9e, 0x0b9e, 0x0bc1, 0x0bc1, 0x0bc1, 0x0bcb, + // Entry 140 - 17F + 0x0bd7, 0x0bd7, 0x0bd7, 0x0be5, 0x0be5, 0x0bf9, 0x0bf9, 0x0c07, + 0x0c1e, 0x0c1e, 0x0c2f, 0x0c40, 0x0c4a, 0x0c54, 0x0c62, 0x0c62, + 0x0c62, 0x0c62, 0x0c6e, 0x0c83, 0x0c83, 0x0c83, 0x0c83, 0x0c83, + 0x0c91, 0x0c91, 0x0c99, 0x0ca7, 0x0ca7, 0x0ca7, 0x0ca7, 0x0ca7, + 0x0cb9, 0x0cd1, 0x0cd1, 0x0cd1, 0x0cd1, 0x0cd1, 0x0cd1, 0x0ce6, + 0x0ce6, 0x0ce6, 0x0cee, 0x0d02, 0x0d02, 0x0d02, 0x0d12, 0x0d12, + 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d20, 0x0d2e, + 0x0d3a, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d48, 0x0d48, 0x0d48, 0x0d48, + // Entry 180 - 1BF + 0x0d48, 0x0d48, 0x0d48, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d7f, + 0x0d7f, 0x0d7f, 0x0d7f, 0x0d7f, 0x0d7f, 0x0d89, 0x0d91, 0x0d91, + 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d9f, + 0x0d9f, 0x0db2, 0x0db2, 0x0dbc, 0x0dc8, 0x0dd8, 0x0dd8, 0x0def, + 0x0df7, 0x0e03, 0x0e19, 0x0e19, 0x0e2b, 0x0e37, 0x0e41, 0x0e41, + 0x0e4f, 0x0e67, 0x0e73, 0x0e83, 0x0e83, 0x0e83, 0x0e83, 0x0e91, + 0x0ea5, 0x0ea5, 0x0ea5, 0x0ead, 0x0ead, 0x0ead, 0x0ead, 0x0eb9, + 0x0eb9, 0x0ec5, 0x0ed5, 0x0ed5, 0x0ed5, 0x0ed5, 0x0edb, 0x0edb, + // Entry 1C0 - 1FF + 0x0ee7, 0x0ee7, 0x0ee7, 0x0ef5, 0x0ef5, 0x0ef5, 0x0ef5, 0x0ef5, + 0x0ef5, 0x0ef5, 0x0ef5, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, + 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, + 0x0f09, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, + 0x0f1f, 0x0f1f, 0x0f1f, 0x0f1f, 0x0f1f, 0x0f2b, 0x0f40, 0x0f40, + 0x0f48, 0x0f48, 0x0f5a, 0x0f5a, 0x0f68, 0x0f68, 0x0f68, 0x0f76, + 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f7e, 0x0f7e, 0x0f7e, + 0x0f9b, 0x0f9b, 0x0f9b, 0x0fab, 0x0fab, 0x0fab, 0x0fab, 0x0fab, + // Entry 200 - 23F + 0x0fab, 0x0fc6, 0x0fdb, 0x0ff2, 0x1009, 0x1009, 0x1009, 0x1009, + 0x1009, 0x1015, 0x1015, 0x1015, 0x1015, 0x1015, 0x1023, 0x1023, + 0x1031, 0x1031, 0x1031, 0x1031, 0x1039, 0x1039, 0x1039, 0x1043, + 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, + 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, + 0x1051, 0x1051, 0x107f, 0x107f, 0x107f, 0x107f, 0x1096, 0x109c, + 0x109c, 0x109c, 0x109c, 0x109c, 0x109c, 0x109c, 0x10a6, 0x10b6, + 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10cc, + // Entry 240 - 27F + 0x10cc, 0x10cc, 0x10d8, 0x10d8, 0x10d8, 0x10e8, 0x10e8, 0x10e8, + 0x10e8, 0x10e8, 0x10fa, 0x10fa, 0x1116, 0x1116, 0x1133, 0x1133, + 0x1133, 0x1133, 0x1133, 0x1133, 0x1156, 0x1177, 0x1177, 0x1177, + 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, 0x1189, 0x1189, 0x1189, + 0x1189, 0x1189, 0x11a2, 0x11d1, 0x11f2, + }, + }, + { // vai + "ꕉꕪꘋꕉꕆꕌꔸꕞꕌꖝꔆꕞꖩꔻꗂꔠꗸꘋꗩꕭꔷꗿꗡꕧꕮꔧꗥꗷꘋꕶꕱꕐꘊꔧꗨꗡꔻꘂꘋꗱꘋꔻꕌꖙꕢꔦꔺꖽꔟꗸꘋꔤꖆꕇꔻꘂꘋꔤꕼꔤꕚꔷꘂꘋꕧꕐꕇꔧꕧꕙꕇꔧ" + + "ꕃꘈꗢꖏꔸꘂꘋꕮꔒꔀꗩꕆꔻꕇꕐꔷꗍꔿꖛꕨꔬꗁꔒꔻꕶꕿꕃꔤꖄꕆꕇꘂꘋꗐꖺꔻꘂꘋꕟꖙꕡꖇꕮꔷꖬꔨꗵꘋꕚꕆꔷꕚꔤꗋꕃꖳꖴꔓꕇꘂꘋꖺꖦꔲꕩꕯ" + + "ꕆꔧꖎꖄꕑꕦꕇꔧꖮꖨꕙꔤ", + []uint16{ // 560 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x0036, + 0x0036, 0x0036, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x005d, 0x005d, 0x0066, + 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x007e, + 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x0087, + 0x0087, 0x008d, 0x008d, 0x008d, 0x008d, 0x0099, 0x0099, 0x0099, + // Entry 40 - 7F + 0x0099, 0x00ab, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00c0, 0x00c0, 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00ed, 0x00ed, 0x00ed, 0x00ed, + 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, + 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, + 0x00ed, 0x00ed, 0x00ed, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff, + 0x0108, 0x0108, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, + 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x0117, 0x0120, + // Entry 80 - BF + 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x013b, 0x014a, 0x0153, + 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, + 0x0153, 0x0153, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, + 0x0168, 0x0168, 0x0171, 0x0171, 0x0171, 0x0177, 0x0177, 0x0177, + 0x0177, 0x0177, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x018f, + 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, + 0x01a4, 0x01ad, 0x01ad, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + // Entry C0 - FF + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + // Entry 100 - 13F + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + // Entry 140 - 17F + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + // Entry 180 - 1BF + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + // Entry 1C0 - 1FF + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + // Entry 200 - 23F + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c2, + }, + }, + { // vai-Latn + "AkaŋAmiháriLahabuBhelarusaŋBhɔgerɛŋBhɛŋgáliChɛJamáĩHɛlɛŋPooPanyɛĩPɛɛsiyɛ" + + "ŋFɛŋsiHawusaHíiŋdiHɔŋgérɛŋÍndonisiyɛŋÍgboItáliyɛŋJapaníĩJavaníĩKimɛ" + + "ɛ̃ tɛKoríyɛŋMaléeeBhɛmísiNipaliDɔchiPuŋjabhiPɔ́lésiPotokíiRomíniyɛŋ" + + "RɔshiyɛŋRawundaSomáliSúwídɛŋTamíliTáiTɔ́kiYukureniyɛŋƆduViyamíĩYórób" + + "haChaniĩZúluVai", + []uint16{ // 560 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000d, 0x000d, + 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0029, + 0x0029, 0x0029, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x004a, 0x004a, 0x0052, + 0x0052, 0x0052, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0065, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006b, + 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0080, 0x0080, 0x0080, + // Entry 40 - 7F + 0x0080, 0x008e, 0x008e, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, + 0x009e, 0x009e, 0x00a7, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00bd, 0x00bd, 0x00c7, 0x00c7, 0x00c7, 0x00c7, + 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, + 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, + 0x00c7, 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00d7, 0x00d7, 0x00d7, + 0x00dd, 0x00dd, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, + 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f6, + // Entry 80 - BF + 0x00f6, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x010a, 0x0115, 0x011c, + 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, + 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0139, 0x0139, 0x0139, + 0x0139, 0x0139, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, 0x014d, + 0x0151, 0x0151, 0x0151, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, + 0x015a, 0x0163, 0x0163, 0x016a, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + // Entry C0 - FF + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + // Entry 100 - 13F + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + // Entry 140 - 17F + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + // Entry 180 - 1BF + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + // Entry 1C0 - 1FF + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + // Entry 200 - 23F + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, + 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x0172, + }, + }, + { // vi + viLangStr, + viLangIdx, + }, + { // vun + "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + + "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + + "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + + "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + + "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + + "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKyi" + + "vunjo", + []uint16{ // 567 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, + 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, + 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, + 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, + 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, + // Entry 40 - 7F + 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, + 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, + 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, + // Entry 80 - BF + 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, + 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, + 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, + 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, + 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, + 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry C0 - FF + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 100 - 13F + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 140 - 17F + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 180 - 1BF + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 1C0 - 1FF + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + // Entry 200 - 23F + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x01a1, + }, + }, + { // wae + "AbčasišAfrikánsAmharišArabišAssamesišAymaraSerbaidšanišWísrussišBulgariš" + + "BengališTibetišBosnišKatalanišTšečišWalisišDänišTitšMalediwišButaniš" + + "GričišEnglišSchpanišEstnišBaskišPersišFinišFidšianišWälšIrišGalizišG" + + "uaraniGujaratiHausaHebräišHindiKroatišHaitianišUngarišArmenišIndones" + + "išIgboIisländišItalienišJapanišGeorgišKazačišKambodšanišKannadaKorea" + + "nišKašmirišKurdišKirgisišLatinišLuxemburgišLingalaLaotišLitauišLetti" + + "šMalagásiMaoriMazedonišMalayalamMongolišMarathiMalaíšMaltesišBurmes" + + "išNordndebeleNepalesišHoländišNorwegiš NynorskNorwegiš BokmålNyanjaO" + + "riyaOsétišPandšabišPolnišPaštuPortugisišQuečuaRätromanišRundiRumäniš" + + "RusišRuandišSanskritSindhiNordsamišSangoSingalesišSlowakišSlowenišSa" + + "moanišShonaSomališAlbanišSerbišSwaziSüdsothoSundanesišSchwedišSuahel" + + "išTamilišTeluguTadšikišThailändišTigrinjaTurkmenišTswanaTongaTürkišT" + + "songaTaitišUigurišUkrainišUrduUsbekišVendaVietnamesišWolofXhosaYorub" + + "aChinesišZuluEfikFilipinišHawaíanišNordsothoJakutišTetumNiwmelanesiš" + + "Unbekannti SchpračWalserÖštričišes TitšSchwizer HočtitšAuštrališes E" + + "nglišKanadišes EnglišBritišes EnglišAmerikanišes EnglišLatiamerikani" + + "šes SchpanišIberišes SchpanišKanadišes WälšSchwizer WälšFlämišBrasi" + + "lianišes PortugisišIberišes PortugisišVereifačts ChinesišTraditionel" + + "ls Chinesiš", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0012, 0x001a, 0x001a, + 0x0021, 0x002b, 0x002b, 0x0031, 0x003f, 0x003f, 0x004a, 0x0053, + 0x0053, 0x0053, 0x005c, 0x0064, 0x0064, 0x006b, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x007e, 0x007e, 0x007e, 0x0086, 0x008d, + 0x0092, 0x009c, 0x00a4, 0x00a4, 0x00ac, 0x00b3, 0x00b3, 0x00bc, + 0x00c3, 0x00ca, 0x00d1, 0x00d1, 0x00d7, 0x00e2, 0x00e2, 0x00e8, + 0x00e8, 0x00ed, 0x00ed, 0x00f5, 0x00fc, 0x0104, 0x0104, 0x0109, + 0x0112, 0x0117, 0x0117, 0x011f, 0x0129, 0x0131, 0x0139, 0x0139, + // Entry 40 - 7F + 0x0139, 0x0143, 0x0143, 0x0147, 0x0147, 0x0147, 0x0147, 0x0152, + 0x015c, 0x015c, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c, + 0x0175, 0x0175, 0x0182, 0x0189, 0x0192, 0x0192, 0x019c, 0x01a3, + 0x01a3, 0x01a3, 0x01ac, 0x01b4, 0x01c0, 0x01c0, 0x01c0, 0x01c7, + 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e6, 0x01e6, 0x01eb, 0x01f5, + 0x01fe, 0x0207, 0x020e, 0x0216, 0x021f, 0x0228, 0x0228, 0x0233, + 0x023d, 0x023d, 0x0247, 0x0258, 0x0269, 0x0269, 0x0269, 0x026f, + 0x026f, 0x026f, 0x026f, 0x0274, 0x027c, 0x0287, 0x0287, 0x028e, + // Entry 80 - BF + 0x0294, 0x029f, 0x02a6, 0x02b2, 0x02b7, 0x02c0, 0x02c6, 0x02ce, + 0x02d6, 0x02d6, 0x02dc, 0x02e6, 0x02eb, 0x02f6, 0x02ff, 0x0308, + 0x0311, 0x0316, 0x031e, 0x0326, 0x032d, 0x0332, 0x033b, 0x0346, + 0x034f, 0x0358, 0x0360, 0x0366, 0x0370, 0x037c, 0x0384, 0x038e, + 0x0394, 0x0399, 0x03a1, 0x03a7, 0x03a7, 0x03ae, 0x03b6, 0x03bf, + 0x03c3, 0x03cb, 0x03d0, 0x03dc, 0x03dc, 0x03dc, 0x03e1, 0x03e6, + 0x03e6, 0x03ec, 0x03ec, 0x03f5, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + // Entry C0 - FF + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + // Entry 100 - 13F + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03fd, + 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, + 0x03fd, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, + 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, + 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, + 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, + // Entry 140 - 17F + 0x0407, 0x0407, 0x0407, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + // Entry 180 - 1BF + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, + 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x041b, + // Entry 1C0 - 1FF + 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, + 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, + 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, + 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, + 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, + 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, + 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, + 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, + // Entry 200 - 23F + 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, + 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, + 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0428, 0x0428, + 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, + 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, + 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0448, 0x0448, + 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x044e, + 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, + // Entry 240 - 27F + 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, + 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, + 0x0462, 0x0474, 0x0489, 0x049b, 0x04ac, 0x04c1, 0x04dc, 0x04ef, + 0x04ef, 0x04ef, 0x0500, 0x050f, 0x050f, 0x0517, 0x0531, 0x0546, + 0x0546, 0x0546, 0x0546, 0x055b, 0x0572, + }, + }, + { // xog + "OluakaaniOluamharikiOluwarabuOlubelarusiOlubulugariyaOlubengaliOluceekeO" + + "ludaakiOluyonaaniOlungerezaOlusipanyaOluperusiOlufalansaOluhawuzaOlu" + + "hinduOluhangareOluyindonezyaOluyiboOluyitaleOlujapaniOlunnajjavaOluk" + + "meOlukoreyaOlumalayiOlubbamaOlunepaliOluholandiOlupunjabiOlupolandiO" + + "lupotugiiziOlulomaniyaOlulasaOlunarwandaOlusomaliyaOluswideniOlutami" + + "iruOluttaayiOlutakeOluyukurayineOlu-uruduOluvyetinaamuOluyorubaOluca" + + "yinaOluzzuluOlusoga", + []uint16{ // 576 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028, 0x0035, + 0x0035, 0x0035, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, + 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0063, 0x0063, 0x006d, + 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, + 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x009b, 0x009b, 0x009b, + // Entry 40 - 7F + 0x009b, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, + 0x00b8, 0x00b8, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00e4, 0x00e4, 0x00ec, 0x00ec, 0x00ec, + 0x00f5, 0x00f5, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, + 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0109, 0x0109, 0x0113, + // Entry 80 - BF + 0x0113, 0x011f, 0x011f, 0x011f, 0x011f, 0x012a, 0x0131, 0x013c, + 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, + 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, + 0x0151, 0x0151, 0x015b, 0x015b, 0x015b, 0x0164, 0x0164, 0x0164, + 0x0164, 0x0164, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x0178, + 0x0181, 0x0181, 0x0181, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, + 0x018e, 0x0197, 0x0197, 0x01a0, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + // Entry C0 - FF + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + // Entry 100 - 13F + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + // Entry 140 - 17F + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + // Entry 180 - 1BF + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + // Entry 1C0 - 1FF + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + // Entry 200 - 23F + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01af, + }, + }, + { // yav + "akánɛamalíképakaspielúsebulgálɛpengálɛ́ɛcɛ́kɛ́ɛŋndiámanyavánɛíŋgilísénu" + + "ɛspanyɔ́lɛnupɛ́lisɛfeleŋsípakasíndíɔ́ŋgɛíndonísiɛíboitáliɛndiámanyá" + + "vanɛkímɛɛkolíemáliɛbímanɛnunipálɛnilándɛnupunsapíɛ́nupolonɛ́ɛnupɔlit" + + "ukɛ́ɛnulumɛ́ŋɛnulúsenuluándɛ́ɛnusomalíɛnusuetuanutámulenutáyɛnutúluk" + + "enukeleniɛ́ŋɛnulutúnufiɛtnamíɛŋnuyolúpasinúɛnusulúnuasue", + []uint16{ // 579 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, + 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001e, 0x0027, + 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0034, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x004a, 0x004a, 0x004a, 0x004a, 0x0052, 0x005e, 0x005e, 0x006e, + 0x006e, 0x006e, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, + 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0088, + 0x0088, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097, + // Entry 40 - 7F + 0x0097, 0x00a3, 0x00a3, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, + 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00cd, 0x00cd, 0x00cd, 0x00cd, + 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, + 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, + 0x00cd, 0x00cd, 0x00cd, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc, + 0x00e6, 0x00e6, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, + 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00fd, 0x00fd, 0x010a, + // Entry 80 - BF + 0x010a, 0x011a, 0x011a, 0x011a, 0x011a, 0x0127, 0x012e, 0x013c, + 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, + 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, + 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0160, 0x0160, 0x0160, + 0x0160, 0x0160, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0179, + 0x0180, 0x0180, 0x0180, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, + 0x0190, 0x0199, 0x0199, 0x01a0, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry C0 - FF + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 100 - 13F + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 140 - 17F + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 180 - 1BF + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 1C0 - 1FF + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 200 - 23F + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 240 - 27F + 0x01a7, 0x01a7, 0x01ad, + }, + }, + { // yi + "אַפֿאַראַפֿריקאַנסאַמהאַרישאַראַגאנישאַראַבישאַסאַמישאַזערביידזשאַנישבעל" + + "אַרוסישבולגאַרישבענגאַלישטיבעטישברעטאנישבאסנישקאַטאַלאנישטשעכישקלוי" + + "סטער־סלאַווישוועלשישדענישדײַטשגריכישענגלישעספּעראַנטאשפּאַנישעסטישב" + + "אַסקישפּערסישפֿינישפֿידזשיפֿאַראישפֿראַנצויזישמערב־פֿריזישאירישסקאט" + + "יש געלישגאַלישישמאַנקסהאַוסאַהעברעאישהינדיקראאַטישאונגערישאַרמענישא" + + "ינדאנעזישאידאאיסלאַנדישאיטאַליענישיאַפּאַנישיאַוואַנעזישגרוזינישקאַ" + + "זאַכישכמערקאַנאַדאַקארעאישקורדישקארנישקירגיזישלאטיינישלוקסעמבורגישל" + + "אַאליטווישלעטישמאַארישמאַקעדאנישמאַלאַיאַלאַםמאנגאלישמאַלטעזישבירמא" + + "ַנישנעפּאַלישהאלענדישנײַ־נארוועגישנארוועגישאקסיטאַנישאסעטישפּוילישפ" + + "ּאַשטאָפּארטוגעזישרומענישרוסישסאַנסקריטסאַרדישסינדהינארדסאַמישסינהא" + + "ַלישסלאוואַקישסלאווענישסאַמאאַניששאנאַסאמאַלישאַלבאַנישסערביששוועדי" + + "שסוואַהילישטאַמילטורקמענישטאָטערישאוקראַאינישאורדואוזבעקישוויעטנאַמ" + + "עזישוואלאַפּוקייִדישכינעזישזולואַקאַדישאַלט ענגלישאַראַמישבאַלינעזי" + + "שבײַערישסעבואַנישקרים־טערקישקאַשובישאונטער־סארבישזשאלא־פֿאנימיטל ענ" + + "גלישפֿיליפּינאאַלט־פֿראַנצויזישדרום־פֿריזישמזרח־פֿריזישמיטל הויכדוי" + + "טשאַלט־ הויכדויטשגאטישאוראַלט־גריכישפידזשי הינדיאייבער־סארבישלאזשבא" + + "ָןיידיש־פערסישלאַדינאליווישמיזאנאַפּאליטַנישנידערדײַטשאַלט פּערסישפ" + + "ּרייסישרוסינישסיציליאַנישסקאטסאַלט־אירישאונטער שלעזישslyסומערישקאמא" + + "ריששלעזישטיגרעאומבאַוואוסטע שפּראַךמערב פֿלעמישפֿלעמישסערבא־קראאַטי" + + "שקאנגא־סוואַהיליש", + []uint16{ // 611 elements + // Entry 0 - 3F + 0x0000, 0x000e, 0x000e, 0x000e, 0x0024, 0x0024, 0x0036, 0x004a, + 0x005a, 0x006a, 0x006a, 0x006a, 0x008a, 0x008a, 0x009e, 0x00b0, + 0x00b0, 0x00b0, 0x00c2, 0x00d0, 0x00e0, 0x00ec, 0x0102, 0x0102, + 0x0102, 0x0102, 0x0102, 0x010e, 0x0130, 0x0130, 0x013e, 0x0148, + 0x0152, 0x0152, 0x0152, 0x0152, 0x015e, 0x016a, 0x0180, 0x0190, + 0x019a, 0x01a8, 0x01b6, 0x01b6, 0x01c2, 0x01d0, 0x01e0, 0x01f8, + 0x0210, 0x021a, 0x0231, 0x0241, 0x0241, 0x0241, 0x024d, 0x025b, + 0x026b, 0x0275, 0x0275, 0x0285, 0x0285, 0x0295, 0x02a5, 0x02a5, + // Entry 40 - 7F + 0x02a5, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c1, 0x02d5, + 0x02eb, 0x02eb, 0x02ff, 0x0317, 0x0327, 0x0327, 0x0327, 0x0327, + 0x0339, 0x0339, 0x0341, 0x0353, 0x0361, 0x0361, 0x0361, 0x036d, + 0x036d, 0x0379, 0x0389, 0x0399, 0x03b1, 0x03b1, 0x03b1, 0x03b1, + 0x03b9, 0x03c7, 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03df, 0x03f3, + 0x040d, 0x041d, 0x041d, 0x041d, 0x042f, 0x0441, 0x0441, 0x0441, + 0x0453, 0x0453, 0x0463, 0x047d, 0x048f, 0x048f, 0x048f, 0x048f, + 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04af, 0x04af, 0x04af, 0x04bd, + // Entry 80 - BF + 0x04cd, 0x04e3, 0x04e3, 0x04e3, 0x04e3, 0x04f1, 0x04fb, 0x04fb, + 0x050d, 0x051b, 0x0527, 0x053b, 0x053b, 0x054d, 0x0561, 0x0573, + 0x0587, 0x0591, 0x05a1, 0x05b3, 0x05bf, 0x05bf, 0x05bf, 0x05bf, + 0x05cd, 0x05e1, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ff, + 0x05ff, 0x05ff, 0x05ff, 0x05ff, 0x060f, 0x060f, 0x060f, 0x0625, + 0x062f, 0x063f, 0x063f, 0x0659, 0x066d, 0x066d, 0x066d, 0x066d, + 0x0679, 0x0679, 0x0679, 0x0687, 0x068f, 0x068f, 0x068f, 0x068f, + 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x069f, 0x069f, 0x069f, + // Entry C0 - FF + 0x069f, 0x069f, 0x06b4, 0x06b4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, + 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, + 0x06c4, 0x06c4, 0x06c4, 0x06d8, 0x06e6, 0x06e6, 0x06e6, 0x06e6, + 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, + 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, + 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, + 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06f8, 0x06f8, 0x06f8, + 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, + // Entry 100 - 13F + 0x06f8, 0x06f8, 0x06f8, 0x070e, 0x070e, 0x071e, 0x071e, 0x071e, + 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x0738, + 0x0738, 0x0738, 0x0738, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, + 0x074e, 0x074e, 0x074e, 0x074e, 0x0763, 0x0763, 0x0763, 0x0763, + 0x0763, 0x0777, 0x0777, 0x0777, 0x0777, 0x0777, 0x0799, 0x0799, + 0x07b1, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, + 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07e4, 0x0801, 0x0801, 0x0801, + 0x0801, 0x080b, 0x080b, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, + // Entry 140 - 17F + 0x0827, 0x0827, 0x0827, 0x0827, 0x083e, 0x083e, 0x083e, 0x083e, + 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, + 0x0858, 0x0868, 0x0868, 0x0868, 0x0880, 0x0880, 0x0880, 0x0880, + 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, + 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, + 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, + 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, + 0x0880, 0x0880, 0x0880, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, + // Entry 180 - 1BF + 0x088e, 0x088e, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, + 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x08a2, 0x08a2, 0x08a2, + 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, + 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, + 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, + 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, + 0x08a2, 0x08a2, 0x08bc, 0x08bc, 0x08d0, 0x08d0, 0x08d0, 0x08d0, + 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, + // Entry 1C0 - 1FF + 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, + 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, + 0x08d0, 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08f7, + 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, + 0x08f7, 0x08f7, 0x08f7, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, + 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, + 0x091b, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, + 0x0925, 0x0939, 0x0939, 0x0939, 0x0939, 0x0939, 0x0939, 0x0952, + // Entry 200 - 23F + 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, + 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0963, 0x0971, 0x0971, + 0x0971, 0x097d, 0x097d, 0x097d, 0x097d, 0x097d, 0x097d, 0x0987, + 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, + 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, + 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x09b0, 0x09b0, + 0x09b0, 0x09b0, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, + 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, + // Entry 240 - 27F + 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, + 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, + 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, + 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09d5, 0x09d5, 0x09d5, + 0x09d5, 0x09f1, 0x0a11, + }, + }, + { // yo + "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" + + "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" + + "Èdè WelshiÈdè Ilẹ̀ DenmarkÈdè Ilẹ̀ GemaniÈdè GirikiÈdè Gẹ̀ẹ́sìÈdè E" + + "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" + + "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" + + "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" + + " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" + + "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" + + "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" + + "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" + + "citaniÈdè PunjabiÈdè Ilẹ̀ PolandiÈdè PọtugiÈdè RomaniaÈdè ̣RọọsiaÈdè" + + " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" + + "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" + + "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" + + " TọọkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" + + "dè YorùbáÈdè MandariÈdè ṢuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croati" + + "ani", + []uint16{ // 610 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026, + 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067, + 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099, + 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c5, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00e5, 0x00f9, 0x0108, 0x0116, + 0x0123, 0x012e, 0x0139, 0x0139, 0x0145, 0x0145, 0x0152, 0x0160, + 0x016c, 0x0179, 0x0195, 0x01a2, 0x01af, 0x01bd, 0x01bd, 0x01c8, + 0x01d4, 0x01df, 0x01df, 0x01ec, 0x01ec, 0x01fa, 0x020b, 0x020b, + // Entry 40 - 7F + 0x0215, 0x0224, 0x022d, 0x0236, 0x0236, 0x0236, 0x0236, 0x0245, + 0x0253, 0x0253, 0x0261, 0x026f, 0x027c, 0x027c, 0x027c, 0x027c, + 0x027c, 0x027c, 0x0288, 0x0295, 0x02a0, 0x02a0, 0x02a0, 0x02a0, + 0x02a0, 0x02a0, 0x02a0, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac, + 0x02ac, 0x02bb, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02c9, 0x02d8, + 0x02d8, 0x02d8, 0x02e5, 0x02f1, 0x02fc, 0x0309, 0x0309, 0x0309, + 0x0315, 0x0315, 0x031f, 0x031f, 0x032b, 0x032b, 0x032b, 0x032b, + 0x0339, 0x0339, 0x0339, 0x0339, 0x0339, 0x0346, 0x0346, 0x035b, + // Entry 80 - BF + 0x035b, 0x0369, 0x0369, 0x0369, 0x0369, 0x0376, 0x0388, 0x0395, + 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d0, 0x03de, + 0x03de, 0x03de, 0x03ef, 0x03fc, 0x0408, 0x0408, 0x0414, 0x0420, + 0x042f, 0x043c, 0x0448, 0x0454, 0x0454, 0x045d, 0x046b, 0x0478, + 0x0478, 0x0478, 0x0489, 0x0489, 0x0489, 0x0489, 0x0489, 0x0495, + 0x049e, 0x04a9, 0x04a9, 0x04b7, 0x04b7, 0x04b7, 0x04b7, 0x04c2, + 0x04d0, 0x04de, 0x04de, 0x04eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + // Entry C0 - FF + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + // Entry 100 - 13F + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, + 0x04f7, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + // Entry 140 - 17F + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + // Entry 180 - 1BF + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + // Entry 1C0 - 1FF + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + // Entry 200 - 23F + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, + 0x0505, 0x0505, 0x0505, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + // Entry 240 - 27F + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, + 0x0513, 0x0528, + }, + }, + { // yo-BJ + "Èdè Ilɛ̀ DenmarkÈdè Ilɛ̀ GemaniÈdè Gɛ̀ɛ́sìÈdè Ilɛ̀ PolandiÈdè PɔtugiÈdè " + + "̣RɔɔsiaÈdè TɔɔkisiÈdè Shulu", + []uint16{ // 181 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + // Entry 40 - 7F + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x004d, + // Entry 80 - BF + 0x004d, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, + 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, + 0x0079, 0x0079, 0x0079, 0x0079, 0x0084, + }, + }, + { // yue + "阿法文阿布哈茲文阿緯斯陀文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什客爾文白俄羅斯文保加利亞文比斯拉馬文班" + + "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰羅尼亞文車臣文查莫洛文科西嘉文克裡文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗" + + "卡文埃維文希臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉" + + "尼文古吉拉特文曼島文豪撒文希伯來文北印度文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川" + + "彝文依奴皮維克文伊多文冰島文義大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努裡文喀什米" + + "爾文庫爾德文科米文康瓦耳文吉爾吉斯文拉丁文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其" + + "頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾他文緬甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文" + + "尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐利亞文奧塞提文旁遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文" + + "梵文撒丁文信德文北方薩米文桑戈文僧伽羅文斯洛伐克文斯洛維尼亞文薩摩亞文塞內加爾文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文" + + "瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文突尼西亞文東加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文" + + "烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文中文祖魯文亞齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里" + + "希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂加文阿拉米文馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿" + + "拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支文峇里文巴伐利亞文巴薩文巴姆穆文巴塔克托巴文" + + "戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆文錫克錫卡文比什奴普萊利亞文巴赫蒂亞" + + "里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧文奇加文奇布查文查加文處奇斯" + + "文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文索拉尼庫爾德文科普特文卡皮茲文克里米亞半島的土耳其文;克里米亞半島的塔塔爾文法語克" + + "里奧爾混合語卡舒布文達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文" + + "迪尤拉文達薩文恩布文埃菲克文埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐" + + "文卡真法文中古法文古法文法蘭克-普羅旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉" + + "爾伯特群島文吉拉基文中古高地德文古高地日耳曼文孔卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文" + + "海達文客家話夏威夷文斐濟印地文希利蓋農文赫梯文孟文上索布文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格裏亞文牙買加克裏奧爾英文邏輯" + + "文恩格姆巴文馬恰美文猶太教-波斯文猶太阿拉伯文日德蘭文卡拉卡爾帕克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔" + + "德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文西桑海文科瓦文北紮紮其文卡庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列" + + "文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利阿文庫魯科文尚巴拉文巴菲亞文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文" + + "列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛齊文北盧爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文盧晒文盧雅文" + + "文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文莫克沙文曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸" + + "文美塔文米克馬克文米南卡堡文滿族文曼尼普裡文莫霍克文莫西文西馬裏文蒙當文多種語言克里克文米蘭德斯文馬爾尼裡文明打威文姆耶內文厄爾茲亞" + + "文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎文諾蓋文古諾爾斯文諾維亞文曼德文字 (N’Ko" + + ")北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文巴列維文潘帕嘉文帕皮阿門托文帛琉文庇卡底文" + + "尼日利亞皮欽語賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺斯文基切文欽博拉索海" + + "蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅瓦文桑達韋文" + + "雅庫特文薩瑪利亞阿拉姆文薩布魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫爾德文塞訥卡文賽納文瑟" + + "里文瑟爾卡普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯" + + "科特薩米文索尼基文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆" + + "文特索文泰雷諾文泰頓文蒂格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩" + + "克尼恩文欽西安文穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭" + + "德文美茵-法蘭克尼亞文沃提克文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈" + + "恩加圖文粵語薩波特克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文" + + "佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(剛果)簡體中文繁體中文", + []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, + 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6, + 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c, + 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189, + 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1, + 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f, + 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b, + 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7, + // Entry 40 - 7F + 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352, + 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6, + 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400, + 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457, + 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba, + 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517, + 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586, + 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6, + // Entry 80 - BF + 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640, + 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d, + 0x06a9, 0x06b8, 0x06c4, 0x06d6, 0x06e5, 0x06f1, 0x06fd, 0x0706, + 0x070f, 0x071e, 0x072a, 0x0736, 0x0742, 0x0748, 0x075a, 0x0766, + 0x0775, 0x077e, 0x078a, 0x0796, 0x079f, 0x07ab, 0x07b7, 0x07c3, + 0x07cc, 0x07db, 0x07e4, 0x07ed, 0x07fc, 0x0805, 0x0811, 0x081a, + 0x0826, 0x0832, 0x0838, 0x083e, 0x0847, 0x0850, 0x085c, 0x0868, + 0x0874, 0x0889, 0x089b, 0x08a4, 0x08b0, 0x08bc, 0x08cb, 0x08d7, + // Entry C0 - FF + 0x08ef, 0x08fe, 0x0907, 0x0910, 0x091c, 0x0928, 0x0937, 0x0946, + 0x0961, 0x0961, 0x0970, 0x0985, 0x0997, 0x09a0, 0x09ac, 0x09be, + 0x09ca, 0x09d3, 0x09df, 0x09e8, 0x09f7, 0x0a00, 0x0a0c, 0x0a1e, + 0x0a2a, 0x0a33, 0x0a3f, 0x0a4b, 0x0a54, 0x0a5d, 0x0a69, 0x0a78, + 0x0a87, 0x0a93, 0x0a9c, 0x0aa8, 0x0ab1, 0x0ac0, 0x0ad8, 0x0aea, + 0x0af6, 0x0b02, 0x0b0b, 0x0b17, 0x0b26, 0x0b32, 0x0b3b, 0x0b44, + 0x0b50, 0x0b59, 0x0b65, 0x0b71, 0x0b7a, 0x0b83, 0x0b8c, 0x0b98, + 0x0ba1, 0x0bad, 0x0bb6, 0x0bc2, 0x0bce, 0x0bdd, 0x0be9, 0x0bf5, + // Entry 100 - 13F + 0x0c0a, 0x0c16, 0x0c22, 0x0c67, 0x0c82, 0x0c8e, 0x0c9a, 0x0ca9, + 0x0cb2, 0x0cbe, 0x0cc7, 0x0cd6, 0x0cdf, 0x0ceb, 0x0cf7, 0x0d03, + 0x0d12, 0x0d1e, 0x0d2d, 0x0d36, 0x0d42, 0x0d4b, 0x0d54, 0x0d60, + 0x0d6f, 0x0d7b, 0x0d8a, 0x0d93, 0x0d9f, 0x0dae, 0x0dba, 0x0dd2, + 0x0ddb, 0x0de7, 0x0df9, 0x0dff, 0x0e0b, 0x0e17, 0x0e20, 0x0e39, + 0x0e4b, 0x0e5d, 0x0e69, 0x0e72, 0x0e7e, 0x0e84, 0x0e8d, 0x0e99, + 0x0eb4, 0x0ebd, 0x0ed2, 0x0ede, 0x0ef0, 0x0f05, 0x0f11, 0x0f1a, + 0x0f29, 0x0f32, 0x0f3e, 0x0f4a, 0x0f5c, 0x0f65, 0x0f74, 0x0f7d, + // Entry 140 - 17F + 0x0f86, 0x0f8f, 0x0f98, 0x0fa4, 0x0fb3, 0x0fc2, 0x0fcb, 0x0fd1, + 0x0fdd, 0x0fe3, 0x0fec, 0x0ff5, 0x1004, 0x1010, 0x101c, 0x102b, + 0x1046, 0x104f, 0x105e, 0x106a, 0x107d, 0x108f, 0x109b, 0x10b0, + 0x10bc, 0x10c5, 0x10ce, 0x10da, 0x10e3, 0x10f2, 0x10fe, 0x110a, + 0x1116, 0x1128, 0x1131, 0x113a, 0x1143, 0x114c, 0x1155, 0x1161, + 0x116a, 0x1179, 0x1182, 0x118e, 0x119a, 0x11b3, 0x11bc, 0x11cb, + 0x11d7, 0x11f0, 0x120b, 0x121a, 0x1229, 0x1235, 0x1241, 0x124d, + 0x1256, 0x1262, 0x126e, 0x127a, 0x1283, 0x128f, 0x1298, 0x12a4, + // Entry 180 - 1BF + 0x12b3, 0x12c2, 0x12d1, 0x12dd, 0x12e9, 0x12f2, 0x12fb, 0x1307, + 0x1316, 0x1328, 0x1337, 0x1343, 0x134c, 0x1355, 0x135e, 0x1367, + 0x1370, 0x137c, 0x1385, 0x1391, 0x139d, 0x13a9, 0x13b5, 0x13be, + 0x13c7, 0x13d3, 0x13dc, 0x13e5, 0x13ee, 0x140c, 0x141e, 0x1427, + 0x1430, 0x143f, 0x144e, 0x1457, 0x1466, 0x1472, 0x147b, 0x1487, + 0x1490, 0x149c, 0x14a8, 0x14b7, 0x14c6, 0x14d2, 0x14de, 0x14ed, + 0x14fc, 0x1505, 0x1511, 0x151a, 0x1526, 0x1532, 0x153e, 0x1547, + 0x1556, 0x1562, 0x156e, 0x1577, 0x1586, 0x1592, 0x15a7, 0x15b3, + // Entry 1C0 - 1FF + 0x15bf, 0x15ce, 0x15dd, 0x15ec, 0x15f8, 0x1604, 0x1610, 0x1625, + 0x1631, 0x163d, 0x1649, 0x165b, 0x1664, 0x1670, 0x1685, 0x169a, + 0x16ac, 0x16b8, 0x16ca, 0x16d6, 0x16e5, 0x16f4, 0x1700, 0x170c, + 0x171e, 0x1727, 0x1745, 0x1757, 0x1763, 0x1772, 0x1784, 0x1793, + 0x179c, 0x17a8, 0x17b7, 0x17c6, 0x17d5, 0x17e7, 0x17f0, 0x17fc, + 0x1808, 0x1820, 0x182c, 0x1838, 0x1844, 0x1856, 0x185f, 0x1868, + 0x1874, 0x1880, 0x1899, 0x18a8, 0x18b4, 0x18bd, 0x18c6, 0x18d5, + 0x18e1, 0x18f0, 0x1902, 0x190e, 0x1914, 0x192c, 0x1938, 0x194a, + // Entry 200 - 23F + 0x1956, 0x1962, 0x1971, 0x1983, 0x1995, 0x19a1, 0x19b3, 0x19c5, + 0x19d1, 0x19da, 0x19ec, 0x19f8, 0x1a01, 0x1a0a, 0x1a13, 0x1a22, + 0x1a2e, 0x1a3d, 0x1a46, 0x1a4f, 0x1a58, 0x1a64, 0x1a6d, 0x1a79, + 0x1a82, 0x1a8e, 0x1a9a, 0x1aa6, 0x1ab5, 0x1ac1, 0x1ad0, 0x1ae8, + 0x1af4, 0x1b00, 0x1b0c, 0x1b1e, 0x1b2a, 0x1b3c, 0x1b4b, 0x1b57, + 0x1b63, 0x1b6c, 0x1b7e, 0x1b8d, 0x1b99, 0x1ba5, 0x1bae, 0x1bb7, + 0x1bc3, 0x1bcf, 0x1bde, 0x1bf7, 0x1c03, 0x1c0c, 0x1c15, 0x1c1e, + 0x1c2a, 0x1c33, 0x1c3c, 0x1c48, 0x1c4e, 0x1c5d, 0x1c6c, 0x1c75, + // Entry 240 - 27F + 0x1c7b, 0x1c84, 0x1c8d, 0x1c99, 0x1ca8, 0x1cae, 0x1cbd, 0x1ccc, + 0x1cd5, 0x1ce1, 0x1cff, 0x1d08, 0x1d17, 0x1d20, 0x1d38, 0x1d38, + 0x1d38, 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d50, + 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d62, 0x1d6e, 0x1d6e, 0x1d6e, + 0x1d7d, 0x1d9b, 0x1db6, 0x1dc2, 0x1dce, + }, + }, + { // zgh + "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" + + "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" + + "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴱⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" + + "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" + + "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" + + "ⵓⵔⴷⵓⵜⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵎⴰⵣⵉⵖⵜ", + []uint16{ // 587 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078, + 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, + 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111, + 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147, + 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f, + 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192, + // Entry 40 - 7F + 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, + 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, + 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279, + 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, + 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8, + // Entry 80 - BF + 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351, + 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, + 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, + 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd, + 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed, + 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, + 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry C0 - FF + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 100 - 13F + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 140 - 17F + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 180 - 1BF + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 1C0 - 1FF + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 200 - 23F + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + // Entry 240 - 27F + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, + 0x0462, 0x0462, 0x047a, + }, + }, + { // zh + zhLangStr, + zhLangIdx, + }, + { // zh-Hant + zhHantLangStr, + zhHantLangIdx, + }, + { // zh-Hant-HK + "阿法爾文阿塞拜疆文巴什基爾文布里多尼文波斯尼亞文加泰隆尼亞文世界語加里西亞文印度文克羅地亞文意大利文格魯吉亞文坎納達文老撾文馬拉加斯文馬拉雅拉姆" + + "文馬耳他文奧里雅文盧旺達文信德語斯洛文尼亞文修納文索馬里文泰米爾文湯加文烏爾都文克里米亞韃靼文塞舌爾克里奧爾法文斯拉夫文吉爾伯特文瑞" + + "士德文苗語猶太波斯文扎扎其文克裡奧爾文盧歐文毛里裘斯克里奧爾文西非書面語言(N’ko)尼日利亞皮欽文阿羅馬尼亞語瓦爾皮里文廣東話摩洛" + + "哥標準塔馬齊格特文南阿塞拜疆文奧地利德文瑞士德語澳洲英文加拿大英文英國英文美國英文拉丁美洲西班牙文歐洲西班牙文墨西哥西班牙文加拿大法" + + "文瑞士法文荷蘭低地德文比利時荷蘭文巴西葡萄牙語歐洲葡萄牙文摩爾多瓦羅馬尼亞文剛果史瓦希里文", + []uint16{ // 611 elements + // Entry 0 - 3F + 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x000c, 0x000c, 0x000c, 0x000c, 0x001b, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x0039, 0x0048, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, + 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x007b, 0x007b, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, + // Entry 40 - 7F + 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, + 0x0096, 0x0096, 0x0096, 0x0096, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, + 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00c9, 0x00c9, 0x00c9, 0x00c9, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00e7, 0x00e7, 0x00e7, 0x00e7, + 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, + 0x00e7, 0x00e7, 0x00e7, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, + // Entry 80 - BF + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00ff, + 0x00ff, 0x00ff, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x011a, + 0x011a, 0x0123, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, + 0x012f, 0x012f, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, + 0x013b, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + // Entry C0 - FF + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, + // Entry 100 - 13F + 0x0150, 0x0150, 0x0150, 0x0165, 0x0180, 0x0180, 0x0180, 0x0180, + 0x0180, 0x0180, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, + 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, + 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, + 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, + 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, + 0x018c, 0x018c, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, + 0x019b, 0x019b, 0x019b, 0x019b, 0x01a7, 0x01a7, 0x01a7, 0x01a7, + // Entry 140 - 17F + 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01ad, + 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, + 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, + 0x01bc, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, + 0x01c8, 0x01c8, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, + 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, + // Entry 180 - 1BF + 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, + 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e0, 0x01e0, 0x01e0, 0x01e0, + 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, + 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01fb, 0x01fb, 0x01fb, + 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, + 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, + 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, + 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0219, 0x0219, + // Entry 1C0 - 1FF + 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, + 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + // Entry 200 - 23F + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, + 0x0240, 0x0240, 0x0240, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, + // Entry 240 - 27F + 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x0258, 0x0258, 0x0258, + 0x0258, 0x0258, 0x0279, 0x0279, 0x0279, 0x0279, 0x0279, 0x028b, + 0x029a, 0x02a6, 0x02b2, 0x02c1, 0x02cd, 0x02d9, 0x02f1, 0x0303, + 0x0318, 0x0318, 0x0327, 0x0333, 0x0345, 0x0357, 0x0369, 0x037b, + 0x0396, 0x0396, 0x03ab, + }, + }, + { // zu + zuLangStr, + zuLangIdx, + }, +} + +const afLangStr string = "" + // Size: 3015 bytes + "AfarAbkasiesAfrikaansAkanAmhariesAragoneesArabiesAssameesAvariesAymaraAz" + + "erbeidjansBaskirBelo-RussiesBulgaarsBislamaBambaraBengaalsTibettaansBret" + + "onsBosniesKatalaansTsjetsjenChamorroKorsikaansTsjeggiesKerkslawiesChuvas" + + "hWalliesDeensDuitsDivehiDzongkhaEweGrieksEngelsEsperantoSpaansEstniesBas" + + "kiesPersiesFulahFinsFidjiaansFaroeesFransWes-FriesIersSkotse GalliesGali" + + "siesGuaraniGoedjaratiManxHausaHebreeusHindiKroatiesHaïtiaansHongaarsArme" + + "ensHereroInterlinguaIndonesiesInterlingueIgboSichuan YiIdoYslandsItaliaa" + + "nsInnuïtiesJapanneesJavaansGeorgiesKongoleesKikuyuKuanyamaKazaksKalaalli" + + "sutKhmerKannadaKoreaansKanuriKasjmirsKoerdiesKomiKorniesKirgisiesLatynLu" + + "xemburgsGandaLimburgsLingaalsLaoLitausLuba-KatangaLettiesMalgassiesMarsh" + + "alleesMaoriMasedoniesMalabaarsMongoolsMarathiMaleisMalteesBirmaansNauruN" + + "oord-NdebeleNepaleesNdongaNederlandsNoorweegse NynorskNoorse BokmålSuid-" + + "NdebeleNavajoNyanjaOksitaansOromoOriyaOssetiesPandjabiPoolsPasjtoPortuge" + + "esQuechuaReto-RomaansRundiRoemeensRussiesRwandeesSanskritSardiniesSindhi" + + "Noord-SamiSangoSinhalaSlowaaksSloweensSamoaansShonaSomaliesAlbaneesSerwi" + + "esSwaziSuid-SothoSundaneesSweedsSwahiliTamilTeloegoeTadzjieksThaiTigriny" + + "aTurkmeensTswanaTongaansTurksTsongaTataarsTahitiesUighurOekraïensOerdoeO" + + "ezbeeksVendaViëtnameesVolapükWalloonWolofXhosaJiddisjYorubaSjineesZoeloe" + + "AsjineesAkoliAdangmeAdygheAghemAinuAleutSuid-AltaiAngikaArameesMapucheAr" + + "apahoAsuAsturiesAwadhiBalineesBasaaBembaBenaWes-BalochiBhojpuriBiniSiksi" + + "kaBodoBugineesBlinCebuanoSjigaChuukeesMariChoctawCherokeesCheyenneesSora" + + "ni KoerdiesKoptiesSeselwa FranskreoolsDakotaansDakotaTaitaDogribZarmaLae" + + " SorbiesDualaJola-FonyiDazagaEmbuEfikAntieke EgiptiesEkajukEwondoFilippy" + + "nsFonFriuliaansGaaGagauzGeezGilberteesGorontaloGotiesAntieke GrieksSwits" + + "erse DuitsGusiiGwichʼinHawaiiesHiligaynonHetitiesHmongHoog-SorbiesHupaIb" + + "aneesIbibioIlokoIngushLojbanNgombaMachameKabyleKachinJjuKambaKabardiaans" + + "TyapMakondeKabuverdianuKoroKhasiKoyra ChiiniKakoKalenjinKimbunduKomi-Per" + + "myaksKonkaniKpelleesKarachay-BalkarKareliesKurukhShambalaBafiaKeulsKumyk" + + "LadinoLangiLezghiesLakotaLoziNoord-LuriLuba-LuluaLundaLuoMizoLuyiaMadure" + + "esMagahiMaithiliMakasarMasaiMokshaMendeMeruMorisjenMakhuwa-MeettoMeta’Mi" + + "cmacMinangkabausManipuriMohawkMossiMundangVeelvuldige taleKreekMirandees" + + "ErzyaMasanderaniNeapolitaansNamaLae DuitsNewariNiasNiueanKwasioNgiemboon" + + "NogaiN’KoNoord-SothoNuerNyankolePangasinanPampangaPapiamentoPalauaansNig" + + "eriese PidginFenisiesPruisiesK’iche’RapanuiRarotongaansRomboAromaniesRwa" + + "SandaweesSakhaansSamburuSantaliesNgambaySanguSisiliaansSkotsSuid-Koerdie" + + "sSenaKoyraboro SenniTachelhitShanSuid-SamiLule SamiInari SamiSkolt SamiS" + + "oninkeSranan TongoSahoSukumaComoraansSirieseTimneTesoTetoemTigreKlingonT" + + "ok PisinTarokoToemboekaTuvaluTasawaqTuvineesSentraal Atlas TamazightUdmu" + + "rtUmbunduRootVaiVunjoWalserWolayttaWarayWarlpiriKalmykSogaYangbenYembaKa" + + "ntoneesStandaard Marokkaanse TamazightZuniGeen linguistiese inhoudZazaMo" + + "derne Standaard ArabiesSwitserse hoog-DuitsSpaans (Suid-Amerika)Nedersak" + + "siesVlaamsMoldawiesSerwo-KroatiesSwahili (Kongo)" + +var afLangIdx = []uint16{ // 611 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x000c, 0x000c, 0x0015, 0x0019, 0x0021, 0x002a, + 0x0031, 0x0039, 0x0040, 0x0046, 0x0052, 0x0058, 0x0064, 0x006c, + 0x0073, 0x007a, 0x0082, 0x008c, 0x0093, 0x009a, 0x00a3, 0x00ac, + 0x00b4, 0x00be, 0x00be, 0x00c7, 0x00d2, 0x00d9, 0x00e0, 0x00e5, + 0x00ea, 0x00f0, 0x00f8, 0x00fb, 0x0101, 0x0107, 0x0110, 0x0116, + 0x011d, 0x0124, 0x012b, 0x0130, 0x0134, 0x013d, 0x0144, 0x0149, + 0x0152, 0x0156, 0x0164, 0x016c, 0x0173, 0x017d, 0x0181, 0x0186, + 0x018e, 0x0193, 0x0193, 0x019b, 0x01a5, 0x01ad, 0x01b4, 0x01ba, + // Entry 40 - 7F + 0x01c5, 0x01cf, 0x01da, 0x01de, 0x01e8, 0x01e8, 0x01eb, 0x01f2, + 0x01fb, 0x0205, 0x020e, 0x0215, 0x021d, 0x0226, 0x022c, 0x0234, + 0x023a, 0x0245, 0x024a, 0x0251, 0x0259, 0x025f, 0x0267, 0x026f, + 0x0273, 0x027a, 0x0283, 0x0288, 0x0292, 0x0297, 0x029f, 0x02a7, + 0x02aa, 0x02b0, 0x02bc, 0x02c3, 0x02cd, 0x02d8, 0x02dd, 0x02e7, + 0x02f0, 0x02f8, 0x02ff, 0x0305, 0x030c, 0x0314, 0x0319, 0x0326, + 0x032e, 0x0334, 0x033e, 0x0350, 0x035e, 0x036a, 0x0370, 0x0376, + 0x037f, 0x037f, 0x0384, 0x0389, 0x0391, 0x0399, 0x0399, 0x039e, + // Entry 80 - BF + 0x03a4, 0x03ad, 0x03b4, 0x03c0, 0x03c5, 0x03cd, 0x03d4, 0x03dc, + 0x03e4, 0x03ed, 0x03f3, 0x03fd, 0x0402, 0x0409, 0x0411, 0x0419, + 0x0421, 0x0426, 0x042e, 0x0436, 0x043d, 0x0442, 0x044c, 0x0455, + 0x045b, 0x0462, 0x0467, 0x046f, 0x0478, 0x047c, 0x0484, 0x048d, + 0x0493, 0x049b, 0x04a0, 0x04a6, 0x04ad, 0x04b5, 0x04bb, 0x04c5, + 0x04cb, 0x04d3, 0x04d8, 0x04e3, 0x04eb, 0x04f2, 0x04f7, 0x04fc, + 0x0503, 0x0509, 0x0509, 0x0510, 0x0516, 0x051e, 0x0523, 0x052a, + 0x0530, 0x0530, 0x0530, 0x0535, 0x0539, 0x0539, 0x0539, 0x053e, + // Entry C0 - FF + 0x053e, 0x0548, 0x0548, 0x054e, 0x0555, 0x055c, 0x055c, 0x0563, + 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0566, 0x0566, 0x056e, + 0x056e, 0x0574, 0x0574, 0x057c, 0x057c, 0x0581, 0x0581, 0x0581, + 0x0581, 0x0581, 0x0586, 0x0586, 0x058a, 0x058a, 0x058a, 0x0595, + 0x059d, 0x059d, 0x05a1, 0x05a1, 0x05a1, 0x05a8, 0x05a8, 0x05a8, + 0x05a8, 0x05a8, 0x05ac, 0x05ac, 0x05ac, 0x05b4, 0x05b4, 0x05b8, + 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05bf, 0x05c4, 0x05c4, + 0x05c4, 0x05cc, 0x05d0, 0x05d0, 0x05d7, 0x05d7, 0x05e0, 0x05ea, + // Entry 100 - 13F + 0x05f9, 0x0600, 0x0600, 0x0600, 0x0614, 0x0614, 0x061d, 0x0623, + 0x0628, 0x0628, 0x0628, 0x062e, 0x062e, 0x0633, 0x0633, 0x063e, + 0x063e, 0x0643, 0x0643, 0x064d, 0x064d, 0x0653, 0x0657, 0x065b, + 0x065b, 0x066b, 0x0671, 0x0671, 0x0671, 0x0671, 0x0677, 0x0677, + 0x0677, 0x0680, 0x0680, 0x0683, 0x0683, 0x0683, 0x0683, 0x0683, + 0x0683, 0x0683, 0x068d, 0x0690, 0x0696, 0x0696, 0x0696, 0x0696, + 0x0696, 0x069a, 0x06a4, 0x06a4, 0x06a4, 0x06a4, 0x06a4, 0x06a4, + 0x06ad, 0x06b3, 0x06b3, 0x06c1, 0x06d0, 0x06d0, 0x06d0, 0x06d5, + // Entry 140 - 17F + 0x06de, 0x06de, 0x06de, 0x06e6, 0x06e6, 0x06f0, 0x06f8, 0x06fd, + 0x0709, 0x0709, 0x070d, 0x0714, 0x071a, 0x071f, 0x0725, 0x0725, + 0x0725, 0x072b, 0x0731, 0x0738, 0x0738, 0x0738, 0x0738, 0x0738, + 0x073e, 0x0744, 0x0747, 0x074c, 0x074c, 0x0757, 0x0757, 0x075b, + 0x0762, 0x076e, 0x076e, 0x0772, 0x0772, 0x0777, 0x0777, 0x0783, + 0x0783, 0x0783, 0x0787, 0x078f, 0x0797, 0x07a4, 0x07ab, 0x07ab, + 0x07b3, 0x07c2, 0x07c2, 0x07c2, 0x07ca, 0x07d0, 0x07d8, 0x07dd, + 0x07e2, 0x07e7, 0x07e7, 0x07ed, 0x07f2, 0x07f2, 0x07f2, 0x07fa, + // Entry 180 - 1BF + 0x07fa, 0x07fa, 0x07fa, 0x0800, 0x0800, 0x0800, 0x0804, 0x080e, + 0x080e, 0x0818, 0x0818, 0x081d, 0x0820, 0x0824, 0x0829, 0x0829, + 0x0829, 0x0831, 0x0831, 0x0837, 0x083f, 0x0846, 0x0846, 0x084b, + 0x084b, 0x0851, 0x0851, 0x0856, 0x085a, 0x0862, 0x0862, 0x0870, + 0x0877, 0x087d, 0x0889, 0x0889, 0x0891, 0x0897, 0x089c, 0x089c, + 0x08a3, 0x08b3, 0x08b8, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c6, + 0x08d1, 0x08d1, 0x08dd, 0x08e1, 0x08ea, 0x08f0, 0x08f4, 0x08fa, + 0x08fa, 0x0900, 0x0909, 0x090e, 0x090e, 0x090e, 0x0914, 0x091f, + // Entry 1C0 - 1FF + 0x0923, 0x0923, 0x0923, 0x092b, 0x092b, 0x092b, 0x092b, 0x092b, + 0x0935, 0x0935, 0x093d, 0x0947, 0x0950, 0x0950, 0x0960, 0x0960, + 0x0960, 0x0960, 0x0960, 0x0968, 0x0968, 0x0968, 0x0968, 0x0970, + 0x0970, 0x097b, 0x097b, 0x097b, 0x0982, 0x098e, 0x098e, 0x098e, + 0x0993, 0x0993, 0x0993, 0x0993, 0x0993, 0x099c, 0x099f, 0x09a8, + 0x09b0, 0x09b0, 0x09b7, 0x09b7, 0x09c0, 0x09c0, 0x09c7, 0x09cc, + 0x09d6, 0x09db, 0x09db, 0x09e8, 0x09e8, 0x09ec, 0x09ec, 0x09ec, + 0x09fb, 0x09fb, 0x09fb, 0x0a04, 0x0a08, 0x0a08, 0x0a08, 0x0a08, // Entry 200 - 23F - 0x1117, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, - 0x112a, 0x112a, 0x112a, 0x1139, 0x114f, 0x114f, 0x114f, 0x114f, - 0x114f, 0x1155, 0x1155, 0x115e, 0x1167, 0x1167, 0x1167, 0x1167, - 0x1179, 0x1179, 0x1179, 0x1179, 0x1179, 0x1189, 0x1189, 0x1189, - 0x1189, 0x1189, 0x1189, 0x1195, 0x1195, 0x11a1, 0x11a1, 0x11cd, - 0x11cd, 0x11cd, 0x11cd, 0x11e6, 0x11ec, 0x11ec, 0x11ec, 0x11ec, - 0x11ec, 0x11ec, 0x11ec, 0x11f5, 0x11f5, 0x11f5, 0x11f5, 0x11f5, - 0x1204, 0x1204, 0x1204, 0x1204, 0x120a, 0x120a, 0x120a, 0x120a, + 0x0a08, 0x0a11, 0x0a1a, 0x0a24, 0x0a2e, 0x0a35, 0x0a35, 0x0a41, + 0x0a41, 0x0a45, 0x0a45, 0x0a4b, 0x0a4b, 0x0a4b, 0x0a54, 0x0a54, + 0x0a5b, 0x0a5b, 0x0a5b, 0x0a60, 0x0a64, 0x0a64, 0x0a6a, 0x0a6f, + 0x0a6f, 0x0a6f, 0x0a6f, 0x0a76, 0x0a76, 0x0a76, 0x0a76, 0x0a76, + 0x0a7f, 0x0a7f, 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a8e, 0x0a94, + 0x0a9b, 0x0aa3, 0x0abb, 0x0ac1, 0x0ac1, 0x0ac8, 0x0acc, 0x0acf, + 0x0acf, 0x0acf, 0x0acf, 0x0acf, 0x0acf, 0x0acf, 0x0ad4, 0x0ada, + 0x0ae2, 0x0ae7, 0x0ae7, 0x0aef, 0x0aef, 0x0af5, 0x0af5, 0x0af9, // Entry 240 - 27F - 0x120a, 0x120a, 0x1219, 0x1219, 0x1231, 0x1231, 0x1231, 0x125a, - 0x125a, 0x1280, 0x1280, 0x12a6, 0x12a6, 0x12c5, 0x12ee, 0x1319, - 0x1338, 0x135a, 0x137c, 0x13a2, 0x13c1, 0x13e0, 0x13e0, 0x13ff, - 0x141e, 0x143a, 0x1446, 0x1468, 0x148a, 0x149c, 0x149c, 0x14b2, - 0x14cf, 0x14e8, -} // Size: 1244 bytes - -var arLangStr string = "" + // Size: 9700 bytes + 0x0af9, 0x0af9, 0x0b00, 0x0b05, 0x0b05, 0x0b0e, 0x0b0e, 0x0b0e, + 0x0b0e, 0x0b0e, 0x0b2d, 0x0b31, 0x0b49, 0x0b4d, 0x0b66, 0x0b66, + 0x0b66, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b8f, 0x0b8f, + 0x0b8f, 0x0b8f, 0x0b8f, 0x0b8f, 0x0b9b, 0x0ba1, 0x0ba1, 0x0ba1, + 0x0baa, 0x0bb8, 0x0bc7, +} // Size: 1246 bytes + +const amLangStr string = "" + // Size: 6791 bytes + "አፋርኛአብሐዚኛአቬስታንአፍሪካንኛአካንኛአማርኛአራጎንስዓረብኛአሳሜዛዊአቫሪክአያማርኛአዘርባጃንኛባስኪርኛቤላራሻኛቡልጋሪ" + + "ኛቢስላምኛባምባርኛቤንጋሊኛቲቤታንኛብሬቶንኛቦስኒያንኛካታላንኛችችንቻሞሮኮርሲካኛክሪቼክኛቸርች ስላቪክቹቫሽወልሽዴኒሽ" + + "ጀርመንዲቬህድዞንግኻኛኢዊግሪክኛእንግሊዝኛኤስፐራንቶስፓንሽኛኢስቶኒያንኛባስክኛፐርሺያኛፉላህፊኒሽፊጂኛፋሮኛፈረንሳይኛ" + + "የምዕራብ ፍሪስኛአይሪሽየስኮቲሽ ጌልክኛጋሊሺያጓራኒኛጉጃርቲኛማንክስኛሃውሳኛዕብራስጥሒንዱኛክሮሽያንኛሃይትኛሀንጋሪኛ" + + "አርመናዊሄሬሮኢንቴርሊንጓኢንዶኔዥኛእንተርሊንግወኢግቦኛሲቹንዪኛእኑፒያቅኛኢዶአይስላንድኛጣሊያንኛእኑክቲቱትኛጃፓንኛጃ" + + "ቫንኛጆርጂያንኮንጎኛኪኩዩኩንያማካዛክኛካላሊሱትኛክህመርኛካናዳኛኮሪያኛካኑሪካሽሚርኛኩርድሽኛኮሚኮርኒሽኪርጊዝኛላቲንኛ" + + "ሉክዘምበርገርኛጋንዳኛሊምቡርጊሽሊንጋላኛላኦስኛሉቴንያንኛሉባ ካታንጋላትቪያንማላጋስኛማርሻሌዝኛማኦሪኛማሴዶንኛማላያላ" + + "ምኛሞንጎላዊኛማራቲኛማላይኛማልቲስኛቡርማኛናኡሩሰሜን ንዴብሌኔፓሊኛንዶንጋደችየኖርዌይ ናይኖርስክየኖርዌይ ቦክማልደቡ" + + "ብ ንደቤሌናቫጆንያንጃኦኪታንኛኦሮሞኛኦዲያኛኦሴቲክፑንጃብኛፖሊሽኛፓሽቶኛፖርቹጋልኛኵቿኛሮማንሽሩንዲኛሮማኒያንራሽያኛኪ" + + "ንያርዋንድኛሳንስክሪትኛሳርዲንያንኛሲንድሂኛሰሜናዊ ሳሚሳንጎኛሲንሃልኛስሎቫክኛስሎቪኛሳሞአኛሾናኛሱማልኛአልባንያንኛሰ" + + "ርቢኛስዋቲኛደቡባዊ ሶቶሱዳንኛስዊድንኛስዋሂሊኛታሚልኛተሉጉኛታጂኪኛታይኛትግርኛቱርክሜንኛጽዋናዊኛቶንጋኛቱርክኛጾንጋኛ" + + "ታታርኛታሂታንኛኡዊግሁርኛዩክሬንኛኡርዱኛኡዝቤክኛቬንዳቪየትናምኛቮላፑክኛዋሎንዎሎፍኛዞሳኛይዲሽኛዮሩባዊኛዡዋንግኛቻይን" + + "ኛዙሉኛአቻይንኛአኮሊኛአዳንግሜአድይግሄአፍሪሂሊአገምአይኑአካዲያንአላባማአልዩትደቡባዊ አልታይአንጊካአራማይክማፑቼአራ" + + "ኦናአራፓሆየአልጄሪያ ዓረብኛአራዋክአሱየአሜሪካ የምልክት ቋንቋአውስትሪያንአዋድሂባሉቺባሊኔስባቫሪያንባሳባሙንባታካ " + + "ቶባቤጃቤምባቤታዊቤናባፉትባዳጋየምዕራብ ባሎቺቦጁሪቢኮልቢኒባንጃርሲክሲካቢሹንፑሪያባክህቲያሪብራጅብራሁዪቦዶአኮስቡሪያ" + + "ትቡጊኔዝቡሉብሊንካዶካሪብካዩጋአትሳምካቡዋኖቺጋኛቺብቻቻጋታይቹክስማሪቺኑክ ጃርጎንቾክታዋቺፔውያንቼሮኬኛችዬኔየሶራኒ " + + "ኩርድኛኮፕቲክካፒዝኖንክሪሚያን ተርኪሽሰሰላዊ ክሬኦሊ ፈረንሳይኛዳኮታዳርግዋታይታኛዳላዌርዶግሪብዲንካዛርማኛዶግሪየታ" + + "ችኛው ሰርቢያንኛሴንተራል ዱሰንዱዋላኛጆላ ፎንያኛድዩላዳዛጋኢቦኛኤፊክየጥንታዊ ግብጽኛኤካጁክሴንተራል ዩፒክኤዎንዶፊ" + + "ሊፒንኛፎንካጁን ፍሬንችአርፒታንፍሩሊያንጋጋጉዝኛጋን ቻይንኛግዕዝኛጅልበርትስጎሮንታሎየጥንታዊ ግሪክየስዊዝ ጀርመንጉ" + + "ስሊኛግዊቺንሃካ ቻይንኛሃዊያኛሂሊጋይኖንህሞንግየላይኛው ሶርቢያንኛዢያንግ ቻይንኛሁፓኢባንኢቢቦኢሎኮኢንጉሽሎጅባንንጎ" + + "ባኛማቻሜኛካብይልካቺንካጅካምባካባርዲያንታያፕማኮንዴካቡቨርዲያኑኮሮክሃሲኮይራ ቺኒካኮካለንጂንኪምቡንዱኮሚ ፔርምያክኮ" + + "ንካኒክፔሌካራቻይ-ባልካርካረሊኛኩሩክሻምባላባፊያኮሎኝያንኩማይክላዲኖላንጊሌዝጊያንላኮታሎዚኛሰሜናዊ ሉሪሉባ-ሉሏሉንዳ" + + "ሉኦሚዞሉዪያማዱረስማጋሂማይተሊማካሳርማሳይሞክሻሜንዴሜሩሞሪሲየኛማኩዋ ሜቶሜታሚክማክሚናንግካባኡማኒፑሪሞሃውክሞሲሙንዳ" + + "ንግባለብዙ ቋንቋዎችክሪክሚራንዴዝኛኤርዝያማዛንደራኒሚን ኛን ቻይንኛኒአፖሊታንናማየታችኛው ጀርመንነዋሪኒአስኒዩአንኛ" + + "ኦ ናጋክዋሲዮኒጊምቡንኖጋይንኮሰሜናዊ ሶቶኑዌርክላሲክ ኔዋሪኒያንኮልኛፓንጋሲናንኛፓምፓንጋፓፒአሜንቶፓላኡአንየናይጄሪ" + + "ያ ፒጂንፐሩሳንኛኪቼቺምቦራዞ ሃይላንድ ኩቹዋራፓኑኢራሮቶንጋሮምቦአሮማንያንርዋሳንዳዌሳክሃሳምቡሩሳንታሊንጋምባይሳንጉ" + + "ሲሲሊያንኛስኮትስደቡባዊ ኩርዲሽሴናኮይራቦሮ ሴኒታቼልሂትሻንቻዲያን ዓረብኛሲዳምኛደቡባዊ ሳሚሉሌ ሳሚኢናሪ ሳሚስኮል" + + "ት ሳሚሶኒንኬስራናን ቶንጎሳሆኛሱኩማኮሞሪያንክላሲክ ኔይራሲሪያክቲምኔቴሶቴተምትግረክሊንጎንኛቶክ ፒሲንታሮኮቱምቡካቱ" + + "ቫሉታሳዋቅቱቪንያንኛመካከለኛ አትላስ ታማዚግትኡድሙርትኡምቡንዱሩትቫይቩንጆዋልሰርወላይትኛዋራይዋርልፒሪዉ ቻይንኛካል" + + "ማይክሶጋያንግቤንኛየምባካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትዙኒቋንቋዊ ይዘት አይደለምዛዛዘመናዊ መደበኛ " + + "ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እንግሊዝኛየብሪቲሽ እንግሊዝኛየአ" + + "ሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈረንሳይኛየስዊዝ ፈረንሳይኛየታ" + + "ችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቪያንኛሰርቦ-ክሮኤሽያኛኮንጎ ስዋሂሊቀለል ያለ ቻይ" + + "ንኛባህላዊ ቻይንኛ" + +var amLangIdx = []uint16{ // 613 elements + // Entry 0 - 3F + 0x0000, 0x000c, 0x001b, 0x002a, 0x003c, 0x0048, 0x0054, 0x0063, + 0x006f, 0x007e, 0x008a, 0x0099, 0x00ae, 0x00bd, 0x00cc, 0x00db, + 0x00ea, 0x00f9, 0x0108, 0x0117, 0x0126, 0x0138, 0x0147, 0x0150, + 0x0159, 0x0168, 0x016e, 0x0177, 0x018d, 0x0196, 0x019f, 0x01a8, + 0x01b4, 0x01bd, 0x01cf, 0x01d5, 0x01e1, 0x01f3, 0x0205, 0x0214, + 0x0229, 0x0235, 0x0244, 0x024d, 0x0256, 0x025f, 0x0268, 0x027a, + 0x0296, 0x02a2, 0x02be, 0x02ca, 0x02d6, 0x02e5, 0x02f4, 0x0300, + 0x030f, 0x031b, 0x031b, 0x032d, 0x0339, 0x0348, 0x0357, 0x0360, + // Entry 40 - 7F + 0x0375, 0x0387, 0x039f, 0x03ab, 0x03ba, 0x03cc, 0x03d2, 0x03e7, + 0x03f6, 0x040b, 0x0417, 0x0423, 0x0432, 0x043e, 0x0447, 0x0453, + 0x045f, 0x0471, 0x0480, 0x048c, 0x0498, 0x04a1, 0x04b0, 0x04bf, + 0x04c5, 0x04d1, 0x04e0, 0x04ec, 0x0507, 0x0513, 0x0525, 0x0534, + 0x0540, 0x0552, 0x0565, 0x0574, 0x0583, 0x0595, 0x05a1, 0x05b0, + 0x05c2, 0x05d4, 0x05e0, 0x05ec, 0x05fb, 0x0607, 0x0610, 0x0626, + 0x0632, 0x063e, 0x0644, 0x0666, 0x0682, 0x0698, 0x06a1, 0x06ad, + 0x06bc, 0x06bc, 0x06c8, 0x06d4, 0x06e0, 0x06ef, 0x06ef, 0x06fb, + // Entry 80 - BF + 0x0707, 0x0719, 0x0722, 0x072e, 0x073a, 0x0749, 0x0755, 0x076d, + 0x0782, 0x0797, 0x07a6, 0x07b9, 0x07c5, 0x07d4, 0x07e3, 0x07ef, + 0x07fb, 0x0804, 0x0810, 0x0825, 0x0831, 0x083d, 0x0850, 0x085c, + 0x086b, 0x087a, 0x0886, 0x0892, 0x089e, 0x08a7, 0x08b3, 0x08c5, + 0x08d4, 0x08e0, 0x08ec, 0x08f8, 0x0904, 0x0913, 0x0925, 0x0934, + 0x0940, 0x094f, 0x0958, 0x096a, 0x0979, 0x0982, 0x098e, 0x0997, + 0x09a3, 0x09b2, 0x09c1, 0x09cd, 0x09d6, 0x09e5, 0x09f1, 0x0a00, + 0x0a0f, 0x0a0f, 0x0a1e, 0x0a27, 0x0a30, 0x0a3f, 0x0a4b, 0x0a57, + // Entry C0 - FF + 0x0a57, 0x0a70, 0x0a70, 0x0a7c, 0x0a8b, 0x0a94, 0x0aa0, 0x0aac, + 0x0acb, 0x0acb, 0x0ad7, 0x0ad7, 0x0ad7, 0x0add, 0x0b06, 0x0b1b, + 0x0b1b, 0x0b27, 0x0b30, 0x0b3c, 0x0b4b, 0x0b51, 0x0b5a, 0x0b6a, + 0x0b6a, 0x0b70, 0x0b79, 0x0b82, 0x0b88, 0x0b91, 0x0b9a, 0x0bb3, + 0x0bbc, 0x0bc5, 0x0bcb, 0x0bd7, 0x0bd7, 0x0be3, 0x0bf5, 0x0c07, + 0x0c10, 0x0c1c, 0x0c22, 0x0c2b, 0x0c37, 0x0c43, 0x0c49, 0x0c52, + 0x0c52, 0x0c58, 0x0c61, 0x0c6a, 0x0c76, 0x0c82, 0x0c8b, 0x0c94, + 0x0ca0, 0x0ca9, 0x0caf, 0x0cc5, 0x0cd1, 0x0ce0, 0x0cec, 0x0cf5, + // Entry 100 - 13F + 0x0d0e, 0x0d1a, 0x0d29, 0x0d45, 0x0d71, 0x0d71, 0x0d7a, 0x0d86, + 0x0d92, 0x0d9e, 0x0d9e, 0x0daa, 0x0db3, 0x0dbf, 0x0dc8, 0x0dea, + 0x0e03, 0x0e0f, 0x0e0f, 0x0e22, 0x0e2b, 0x0e34, 0x0e3d, 0x0e46, + 0x0e46, 0x0e62, 0x0e6e, 0x0e6e, 0x0e6e, 0x0e87, 0x0e93, 0x0e93, + 0x0e93, 0x0ea2, 0x0ea2, 0x0ea8, 0x0ebe, 0x0ebe, 0x0ebe, 0x0ecd, + 0x0ecd, 0x0ecd, 0x0edc, 0x0edf, 0x0eeb, 0x0efe, 0x0efe, 0x0efe, + 0x0efe, 0x0f0a, 0x0f1c, 0x0f1c, 0x0f1c, 0x0f1c, 0x0f1c, 0x0f1c, + 0x0f2b, 0x0f2b, 0x0f2b, 0x0f44, 0x0f5d, 0x0f5d, 0x0f5d, 0x0f69, + // Entry 140 - 17F + 0x0f75, 0x0f75, 0x0f88, 0x0f94, 0x0f94, 0x0fa6, 0x0fa6, 0x0fb2, + 0x0fd4, 0x0fed, 0x0ff3, 0x0ffc, 0x1005, 0x100e, 0x101a, 0x101a, + 0x101a, 0x1026, 0x1032, 0x103e, 0x103e, 0x103e, 0x103e, 0x103e, + 0x104a, 0x1053, 0x1059, 0x1062, 0x1062, 0x1074, 0x1074, 0x107d, + 0x1089, 0x109e, 0x109e, 0x10a4, 0x10a4, 0x10ad, 0x10ad, 0x10bd, + 0x10bd, 0x10bd, 0x10c3, 0x10d2, 0x10e1, 0x10f7, 0x1103, 0x1103, + 0x110c, 0x1125, 0x1125, 0x1125, 0x1131, 0x113a, 0x1146, 0x114f, + 0x115e, 0x116a, 0x116a, 0x1173, 0x117c, 0x117c, 0x117c, 0x118b, + // Entry 180 - 1BF + 0x118b, 0x118b, 0x118b, 0x1194, 0x1194, 0x1194, 0x119d, 0x11b0, + 0x11b0, 0x11bd, 0x11bd, 0x11c6, 0x11cc, 0x11d2, 0x11db, 0x11db, + 0x11db, 0x11e7, 0x11e7, 0x11f0, 0x11fc, 0x1208, 0x1208, 0x1211, + 0x1211, 0x121a, 0x121a, 0x1223, 0x1229, 0x1238, 0x1238, 0x1248, + 0x124e, 0x125a, 0x126f, 0x126f, 0x127b, 0x1287, 0x128d, 0x128d, + 0x129c, 0x12b8, 0x12c1, 0x12d3, 0x12d3, 0x12d3, 0x12d3, 0x12df, + 0x12f1, 0x130b, 0x131d, 0x1323, 0x133f, 0x1348, 0x1351, 0x1360, + 0x136a, 0x1376, 0x1385, 0x138e, 0x138e, 0x138e, 0x1394, 0x13a7, + // Entry 1C0 - 1FF + 0x13b0, 0x13c6, 0x13c6, 0x13d8, 0x13d8, 0x13d8, 0x13d8, 0x13d8, + 0x13ed, 0x13ed, 0x13fc, 0x140e, 0x141d, 0x141d, 0x1439, 0x1439, + 0x1439, 0x1439, 0x1439, 0x1439, 0x1439, 0x1439, 0x1439, 0x1448, + 0x1448, 0x144e, 0x1477, 0x1477, 0x1483, 0x1492, 0x1492, 0x1492, + 0x149b, 0x149b, 0x149b, 0x149b, 0x149b, 0x14ad, 0x14b3, 0x14bf, + 0x14c8, 0x14c8, 0x14d4, 0x14d4, 0x14e0, 0x14e0, 0x14ef, 0x14f8, + 0x150a, 0x1516, 0x1516, 0x152f, 0x152f, 0x1535, 0x1535, 0x1535, + 0x154b, 0x154b, 0x154b, 0x155a, 0x1560, 0x1579, 0x1585, 0x1585, + // Entry 200 - 23F + 0x1585, 0x1598, 0x15a5, 0x15b5, 0x15c8, 0x15d4, 0x15d4, 0x15ea, + 0x15ea, 0x15f3, 0x15f3, 0x15fc, 0x15fc, 0x15fc, 0x160b, 0x1621, + 0x162d, 0x162d, 0x162d, 0x1636, 0x163c, 0x163c, 0x1645, 0x164e, + 0x164e, 0x164e, 0x164e, 0x1660, 0x1660, 0x1660, 0x1660, 0x1660, + 0x1670, 0x1670, 0x1679, 0x1679, 0x1679, 0x1679, 0x1685, 0x168e, + 0x169a, 0x16ac, 0x16d8, 0x16e7, 0x16e7, 0x16f6, 0x16fc, 0x1702, + 0x1702, 0x1702, 0x1702, 0x1702, 0x1702, 0x1702, 0x170b, 0x1717, + 0x1726, 0x172f, 0x172f, 0x173e, 0x174e, 0x175d, 0x175d, 0x1763, + // Entry 240 - 27F + 0x1763, 0x1763, 0x1775, 0x177e, 0x177e, 0x178d, 0x178d, 0x17a5, + 0x17a5, 0x17a5, 0x17ce, 0x17d4, 0x17fa, 0x1800, 0x1826, 0x1826, + 0x1845, 0x186e, 0x1899, 0x18b8, 0x18da, 0x18fc, 0x1922, 0x1941, + 0x1960, 0x1960, 0x197f, 0x199e, 0x19ba, 0x19c6, 0x19e8, 0x1a0a, + 0x1a1f, 0x1a3b, 0x1a51, 0x1a6e, 0x1a87, +} // Size: 1250 bytes + +const arLangStr string = "" + // Size: 10039 bytes "الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراغونيةالعربيةالأ" + "ساميةالأواريةالأيماراالأذربيجانيةالباشكيريةالبيلاروسيةالبلغاريةالبيسلام" + "يةالبامباراالبنغاليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشامو" + - "روالكورسيكيةالكرىالتشيكيةسلافية كنسيةالتشوفاشيالولزيةالدانماركيةالألمان" + - "يةالمالديفيةالزونخايةالإيوياليونانيةالإنجليزيةالإسبرانتوالإسبانيةالإستو" + - "نيةلغة الباسكالفارسيةالفلةالفنلنديةالفيجيةالفارويزالفرنسيةالفريزيانالأي" + - "رلنديةالغيلية الأسكتلنديةالجاليكيةالجوارانيالغوجاراتيةالمنكيةالهوساالعب" + - "ريةالهنديةالهيري موتوالكرواتيةالهايتيةالهنغاريةالأرمينيةالهيريرواللّغة " + - "الوسيطةالإندونيسيةالإنترلينجالإيجبوالسيتشيون ييالإينبياكالإيدوالأيسلاند" + - "يةالإيطاليةالإينكتيتتاليابانيةالجاويةالجورجيةالكونغوالكيكيوالكيونياماال" + - "كازاخستانيةالكالاليستالخميريةالكاناداالكوريةالكانيوريالكشميريةالكرديةال" + - "كوميالكورنيةالقرغيزيةاللاتينيةاللوكسمبرجيةالجانداالليمبرجيشيةاللينجالاا" + - "للاويةاللتوانيةاللبا-كاتانجااللاتفيةالمالاجاشيةالمارشاليةالماوريةالمقدو" + - "نيةالماليالامالمنغوليةالماراثيلغة الملايوالمالطيةالبورميةالنوروالنديبيل" + - " الشماليالنيباليةالندونجاالهولنديةالنينورسك النرويجيالبوكمالية النرويجية" + - "النديبيل الجنوبيالنافاجوالنيانجاالأوكيتانيةالأوجيبواالأوروموالأوريياالأ" + - "وسيتيكالبنجابيةالباليةالبولنديةالبشتونيةالبرتغاليةالكويتشواالرومانشيةال" + - "رنديالرومانيةالروسيةالكينياروانداالسنسكريتيةالسردينيةالسنديةالسامي الشم" + - "اليالسانجوالسنهاليةالسلوفاكيةالسلوفانيةالساموائيةالشوناالصوماليةالألبان" + - "يةالصربيةالسواتيالسوتو الجنوبيةالسوندانيةالسويديةالسواحليةالتاميليةالتي" + - "لجوالطاجيكيةالتايلانديةالتغرينيةالتركمانيةالتسوانيةالتونغيةالتركيةالسون" + - "جاالتتاريةالتاهيتيةالأغوريةالأوكرانيةالأرديةالأوزبكيةالفينداالفيتناميةل" + - "غة الفولابوكالولونيةالولوفالخوسااليديشيةاليوروبيةالزهيونجالصينيةالزولوا" + - "لأتشينيزيةالأكوليةالأدانجميةالأديغةالأفريهيليةالأغمالآينويةالأكاديةالأل" + - "يوتيةالألطائية الجنوبيةالإنجليزية القديمةالأنجيكاالآراميةالأروكانيةالأر" + - "اباهوالأراواكيةالآسوالأستريةالأواديةالبلوشيةاللغة الباليةالباسابامنلغة " + - "الغومالاالبيجاالبيمبابينالغة البافوتالبلوشية الغربيةالبهوجبوريةالبيكولي" + - "ةالبينيةلغة الكومالسيكسيكيةالبراجيةالبودوأكوسالبرياتيةالبجينيزيةلغة الب" + - "ولوالبلينيةلغة الميدومباالكادوالكاريبيةالكايوجيةالأتسامالسيبونيةتشيغاال" + - "تشيبشاالتشاجاتايالتشكيزيةالماريالشينوك جارجونالشوكتوالشيباوايانالشيروكي" + - "الشايانالسورانية الكرديةالقبطيةلغة تتار القرمالكاشبايانالداكوتاالدارجوا" + - "تيتاالديلويرالسلافيةالدوجريبالدنكاالزارميةالدوجريةالصربية السفلىالديولا" + - "الهولندية الوسطىجولا فونياالدايلاالقرعانيةإمبوالإفيكالمصرية القديمةالإك" + - "اجكالإمايتالإنجليزية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية الوسطىا" + - "لفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغاغ" + - "وزالجايوالجبياالجعزيةلغة أهل جبل طارقالألمانية العليا الوسطىالألمانية ا" + - "لعليا القديمةالجنديالجورونتالوالقوطيةالجريبواليونانية القديمةالألمانية " + - "السويسريةالغيزيةغوتشنالهيدالغة أهل الهاوايالهيليجينونالحثيةالهمونجيةالص" + - "ربية العلياالهباالإيبانالإيبيبيويةالإيلوكوالإنجوشيةاللوجباننغومباالماتش" + - "اميةالفارسية اليهوديةالعربية اليهوديةالكارا-كالباكالقبيليةالكاتشينالجوا" + - "لكامباالكويالكاباردايانكانمبوالتايابيةماكوندهكابوفيرديانوالكوروالكازيةا" + - "لخوتانيزكويرا تشينيكالينجينالكيمبندوكومي-بيرماياكالكونكانيةالكوسراينالك" + - "بيلالكاراتشاي-بالكارالكاريليةالكوروخشامبالالغة البافيالغة الكولونيانالق" + - "موقيةالكتيناياللادينولانجياللاهندااللامباالليزجيةلاكوتامنغولىاللوزياللر" + - "ية الشماليةاللبا-لؤلؤاللوسينواللوندااللوالميزولغة اللوياالمادريزالماجاا" + - "لمايثيليالماكاسارالماندينغالماسايماباالموكشاالماندارالميندالميروالمورسي" + - "انيةالأيرلندية الوسطىماخاوا-ميتوميتاالميكماكيونيةالمينانجكاباوالمانشوال" + - "مانيبوريةالموهوكالموسيمندنجلغات متعددةالكريكالميرانديزالمارواريةالأرزية" + - "المازندرانيةاللغة النابوليةلغة الناماالألمانية السفلىالنواريةالنياسالني" + - "ويكواسيولغة النجيمبونالنوجايالنورس القديمأنكوالسوتو الشماليةالنويرالنوا" + - "رية التقليديةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية العثمانيةا" + - "لبانجاسينانالبهلويةالبامبانجاالبابيامينتوالبالوانالفارسية القديمةالفيني" + - "قيةالبوهنبيايانالبروفانسية القديمةكيشيالراجاسثانيةالرابانيالراروتونجاني" + - "الرومبوغجريالأرومانيانالرواالسانداويالساخيةالآرامية السامريةسامبوروالسا" + - "ساكالسانتالينامبيسانغوالصقليةالأسكتلنديةالكردية الجنوبيةالسنيكاسيناالسي" + - "لكبكويرابورو سينيالأيرلندية القديمةتشلحيتالشانيةالعربية التشاديةالسيدام" + - "والسامي الجنوبياللول ساميالإيناري ساميالسكولت ساميالسونينكالسوجدينالسرا" + - "نان تونجوالسررلغة الساهوالسوكوماالسوسوالسوماريةالقمريةسريانية تقليديةال" + - "سريانيةالتيمنتيسوالتيرينوالتيتمالتغريةالتيفالتوكيلاوالكلينجونالتلينغيتي" + - "ةالتاماشيكتونجا - نياساالتوك بيسينلغة التاروكوالتسيمشيانالتامبوكاالتوفا" + - "لوتاساواقالتوفيةالأمازيغية وسط الأطلسالأدمرتاليجاريتيكالأمبندوالجذرالفا" + - "يالفوتيكالفونجوالوالسرالولاياتاالوارايالواشووارلبيريالكالميكالسوغاالياو" + - "اليابيزيانجبنيمباالكَنْتُونيةالزابوتيكرموز المعايير الأساسيةالزيناجاالت" + - "مازيغية المغربية القياسيةالزونيةبدون محتوى لغويزازاالعربية الرسمية الحد" + - "يثةالألمانية النمساويةالألمانية العليا السويسريةالإنجليزية الأستراليةال" + - "إنجليزية الكنديةالإنجليزية البريطانيةالإنجليزية الأمريكيةالإسبانية أمري" + - "كا اللاتينيةالإسبانية الأوروبيةالإسبانية المكسيكيةالفرنسية الكنديةالفرن" + - "سية السويسريةالسكسونية السفلىالفلمنكيةالبرتغالية البرازيليةالبرتغالية ا" + - "لأوروبيةالمولدوفيةصربية-كرواتيةالكونغو السواحليةالصينية المبسطةالصينية " + - "التقليدية" - -var arLangIdx = []uint16{ // 610 elements + "روالكورسيكيةالكرىالتشيكيةسلافية كنسيةالتشوفاشيالويلزيةالدانماركيةالألما" + + "نيةالمالديفيةالزونخايةالإيوياليونانيةالإنجليزيةالإسبرانتوالإسبانيةالإست" + + "ونيةلغة الباسكالفارسيةالفولانيةالفنلنديةالفيجيةالفارويةالفرنسيةالفريزيا" + + "نالأيرلنديةالغيلية الأسكتلنديةالجاليكيةالغوارانيةالغوجاراتيةالمنكيةالهو" + + "ساالعبريةالهنديةالهيري موتوالكرواتيةالكريولية الهايتيةالهنغاريةالأرميني" + + "ةالهيريرواللّغة الوسيطةالإندونيسيةالإنترلينجالإيجبوالسيتشيون ييالإينبيا" + + "كالإيدوالأيسلنديةالإيطاليةالإينكتيتتاليابانيةالجاويةالجورجيةالكونغوالكي" + + "كيوالكيونياماالكازاخستانيةالكالاليستالخميريةالكاناداالكوريةالكانيوريالك" + + "شميريةالكرديةالكوميالكورنيةالقيرغيزيةاللاتينيةاللكسمبورغيةالجانداالليمب" + + "رجيشيةاللينجالااللاويةالليتوانيةاللبا-كاتانجااللاتفيةالمالاجاشيةالمارشا" + + "ليةالماوريةالمقدونيةالمالايالاميةالمنغوليةالماراثيةالماليزيةالمالطيةالب" + + "ورميةالنوروالنديبيل الشماليةالنيباليةالندونجاالهولنديةالنرويجية نينورسك" + + "النرويجية بوكمالالنديبيل الجنوبيالنافاجوالنيانجاالأوكيتانيةالأوجيبواالأ" + + "وروميةاللغة الأوريةالأوسيتيكالبنجابيةالباليةالبولنديةالبشتونيةالبرتغالي" + + "ةالكويتشواالرومانشيةالرنديالرومانيةالروسيةالكينياروانداالسنسكريتيةالسرد" + + "ينيةالسنديةالسامي الشماليةالسانجوالسنهاليةالسلوفاكيةالسلوفانيةالساموائي" + + "ةالشوناالصوماليةالألبانيةالصربيةالسواتيالسوتو الجنوبيةالسوندانيةالسويدي" + + "ةالسواحليةالتاميليةالتيلوجوالطاجيكيةالتايلانديةالتغرينيةالتركمانيةالتسو" + + "انيةالتونغيةالتركيةالسونجاالتتريةالتاهيتيةالأويغوريةالأوكرانيةالأورديةا" + + "لأوزبكيةالفينداالفيتناميةلغة الفولابوكالولونيةالولوفيةالخوسااليديشيةالي" + + "وروبيةالزهيونجالصينيةالزولوالأتشينيزيةالأكوليةالأدانجميةالأديغةالأفريهي" + + "ليةالأغمالآينويةالأكاديةالأليوتيةالألطائية الجنوبيةالإنجليزية القديمةال" + + "أنجيكاالآراميةالمابودونغونيةالأراباهواللهجة النجديةالأراواكيةالآسوالأست" + + "ريةالأواديةالبلوشيةاللغة الباليةالباسابامنلغة الغومالاالبيجاالبيمبابينا" + + "لغة البافوتالبلوشية الغربيةالبهوجبوريةالبيكوليةالبينيةلغة الكومالسيكسيك" + + "يةالبراجيةالبودوأكوسالبرياتيةالبجينيزيةلغة البولوالبلينيةلغة الميدومباا" + + "لكادوالكاريبيةالكايوجيةالأتسامالسيبونيةتشيغاالتشيبشاالتشاجاتايالتشكيزية" + + "الماريالشينوك جارجونالشوكتوالشيباوايانالشيروكيالشايانالسورانية الكرديةا" + + "لقبطيةلغة تتار القرمالفرنسية الكريولية السيشيليةالكاشبايانالداكوتاالدار" + + "جواتيتاالديلويرالسلافيةالدوجريبالدنكاالزارميةالدوجريةصوربيا السفلىالديو" + + "لاالهولندية الوسطىجولا فونياالدايلاالقرعانيةإمبوالإفيكالمصرية القديمةال" + + "إكاجكالإمايتالإنجليزية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية الوسط" + + "ىالفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغ" + + "اغوزالغان الصينيةالجايوالجبياالجعزيةلغة أهل جبل طارقالألمانية العليا ال" + + "وسطىالألمانية العليا القديمةالجنديالجورونتالوالقوطيةالجريبواليونانية ال" + + "قديمةالألمانية السويسريةالغيزيةغوتشنالهيداالهاكا الصينيةلغة أهل الهاواي" + + "الهيليجينونالحثيةالهمونجيةالصوربية العلياشيانغ الصينيةالهباالإيبانالإيب" + + "يبيويةالإيلوكوالإنجوشيةاللوجباننغومباالماتشاميةالفارسية اليهوديةالعربية" + + " اليهوديةالكارا-كالباكالقبيليةالكاتشينالجوالكامباالكويالكاباردايانكانمبو" + + "التايابيةماكوندهكابوفيرديانوالكوروالكازيةالخوتانيزكويرا تشينيلغة الكاكو" + + "كالينجينالكيمبندوكومي-بيرماياكالكونكانيةالكوسراينالكبيلالكاراتشاي-بالكا" + + "رالكاريليةالكوروخشامبالالغة البافيالغة الكولونيانالقموقيةالكتيناياللادي" + + "نولانجياللاهندااللامباالليزجيةلاكوتامنغولىاللوزياللرية الشماليةاللبا-لؤ" + + "لؤاللوسينواللوندااللوالميزولغة اللوياالمادريزالماجاالمايثيليالماكاسارال" + + "ماندينغالماسايماباالموكشاالماندارالميندالميروالمورسيانيةالأيرلندية الوس" + + "طىماخاوا-ميتوميتاالميكماكيونيةالمينانجكاباوالمانشوالمانيبوريةالموهوكالم" + + "وسيمندنجلغات متعددةالكريكالميرانديزالمارواريةالأرزيةالمازندرانيةمين-نان" + + " الصينيةالنابوليةلغة الناماالألمانية السفلىالنواريةالنياسالنيويكواسيولغة" + + " النجيمبونالنوجايالنورس القديمأنكوالسوتو الشماليةالنويرالنوارية التقليدي" + + "ةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية العثمانيةالبانجاسينانا" + + "لبهلويةالبامبانجاالبابيامينتوالبالوانالبدجنية النيجيريةالفارسية القديمة" + + "الفينيقيةالبوهنبيايانالبروسياويةالبروفانسية القديمةكيشيالراجاسثانيةالرا" + + "بانيالراروتونجانيالرومبوالغجريةالأرومانيانالرواالسانداويالساخيةالآرامية" + + " السامريةسامبوروالساساكالسانتالينامبيسانغوالصقليةالأسكتلنديةالكردية الجن" + + "وبيةالسنيكاسيناالسيلكبكويرابورو سينيالأيرلندية القديمةتشلحيتالشانالعربي" + + "ة التشاديةالسيداموالسامي الجنوبياللول ساميالإيناري ساميالسكولت ساميالسو" + + "نينكالسوجدينالسرانان تونجوالسررلغة الساهوالسوكوماالسوسوالسوماريةالقمرية" + + "سريانية تقليديةالسريانيةالتيمنتيسوالتيرينوالتيتمالتيغريةالتيفالتوكيلاوا" + + "لكلينجونالتلينغيتيةالتاماشيكتونجا - نياساالتوك بيسينلغة التاروكوالتسيمش" + + "يانالتامبوكاالتوفالوتاساواقالتوفيةالأمازيغية وسط الأطلسالأدمرتاليجاريتي" + + "كالأمبندوالجذرالفايالفوتيكالفونجوالوالسرالولاياتاالوارايالواشووارلبيريا" + + "لوو الصينيةالكالميكالسوغاالياواليابيزيانجبنيمباالكَنْتُونيةالزابوتيكرمو" + + "ز المعايير الأساسيةالزيناجاالتمازيغية المغربية القياسيةالزونيةبدون محتو" + + "ى لغويزازاالعربية الرسمية الحديثةالألمانية النمساويةالألمانية العليا ال" + + "سويسريةالإنجليزية الأستراليةالإنجليزية الكنديةالإنجليزية البريطانيةالإن" + + "جليزية الأمريكيةالإسبانية أمريكا اللاتينيةالإسبانية الأوروبيةالإسبانية " + + "المكسيكيةالفرنسية الكنديةالفرنسية السويسريةالسكسونية السفلىالفلمنكيةالب" + + "رتغالية البرازيليةالبرتغالية الأوروبيةالمولدوفيةصربية-كرواتيةالكونغو ال" + + "سواحليةالصينية المبسطةالصينية التقليدية" + +var arLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0022, 0x0032, 0x0048, 0x0058, 0x0068, 0x007c, 0x008a, 0x009a, 0x00aa, 0x00ba, 0x00d2, 0x00e6, 0x00fc, 0x010e, 0x0122, 0x0134, 0x0146, 0x0154, 0x0168, 0x0178, 0x018c, 0x019e, - 0x01b0, 0x01c4, 0x01ce, 0x01de, 0x01f5, 0x0207, 0x0215, 0x022b, - 0x023d, 0x0251, 0x0263, 0x026f, 0x0281, 0x0295, 0x02a9, 0x02bb, - 0x02cd, 0x02e0, 0x02f0, 0x02fa, 0x030c, 0x031a, 0x032a, 0x033a, - 0x034c, 0x0360, 0x0385, 0x0397, 0x03a9, 0x03bf, 0x03cd, 0x03d9, - 0x03e7, 0x03f5, 0x040a, 0x041c, 0x042c, 0x043e, 0x0450, 0x0460, + 0x01b0, 0x01c4, 0x01ce, 0x01de, 0x01f5, 0x0207, 0x0217, 0x022d, + 0x023f, 0x0253, 0x0265, 0x0271, 0x0283, 0x0297, 0x02ab, 0x02bd, + 0x02cf, 0x02e2, 0x02f2, 0x0304, 0x0316, 0x0324, 0x0334, 0x0344, + 0x0356, 0x036a, 0x038f, 0x03a1, 0x03b5, 0x03cb, 0x03d9, 0x03e5, + 0x03f3, 0x0401, 0x0416, 0x0428, 0x044b, 0x045d, 0x046f, 0x047f, // Entry 40 - 7F - 0x047b, 0x0491, 0x04a5, 0x04b3, 0x04ca, 0x04dc, 0x04e8, 0x04fe, - 0x0510, 0x0524, 0x0536, 0x0544, 0x0554, 0x0562, 0x0570, 0x0584, - 0x059e, 0x05b2, 0x05c2, 0x05d2, 0x05e0, 0x05f2, 0x0604, 0x0612, - 0x061e, 0x062e, 0x0640, 0x0652, 0x066a, 0x0678, 0x0690, 0x06a2, - 0x06b0, 0x06c2, 0x06db, 0x06eb, 0x0701, 0x0715, 0x0725, 0x0737, - 0x074b, 0x075d, 0x076d, 0x0782, 0x0792, 0x07a2, 0x07ae, 0x07cd, - 0x07df, 0x07ef, 0x0801, 0x0824, 0x084b, 0x086a, 0x087a, 0x088a, - 0x08a0, 0x08b2, 0x08c2, 0x08d2, 0x08e4, 0x08f6, 0x0904, 0x0916, + 0x049a, 0x04b0, 0x04c4, 0x04d2, 0x04e9, 0x04fb, 0x0507, 0x051b, + 0x052d, 0x0541, 0x0553, 0x0561, 0x0571, 0x057f, 0x058d, 0x05a1, + 0x05bb, 0x05cf, 0x05df, 0x05ef, 0x05fd, 0x060f, 0x0621, 0x062f, + 0x063b, 0x064b, 0x065f, 0x0671, 0x0689, 0x0697, 0x06af, 0x06c1, + 0x06cf, 0x06e3, 0x06fc, 0x070c, 0x0722, 0x0736, 0x0746, 0x0758, + 0x0772, 0x0784, 0x0796, 0x07a8, 0x07b8, 0x07c8, 0x07d4, 0x07f5, + 0x0807, 0x0817, 0x0829, 0x084a, 0x0869, 0x0888, 0x0898, 0x08a8, + 0x08be, 0x08d0, 0x08e2, 0x08fb, 0x090d, 0x091f, 0x092d, 0x093f, // Entry 80 - BF - 0x0928, 0x093c, 0x094e, 0x0962, 0x096e, 0x0980, 0x098e, 0x09a8, - 0x09be, 0x09d0, 0x09de, 0x09f9, 0x0a07, 0x0a19, 0x0a2d, 0x0a41, - 0x0a55, 0x0a61, 0x0a73, 0x0a85, 0x0a93, 0x0aa1, 0x0abe, 0x0ad2, - 0x0ae2, 0x0af4, 0x0b06, 0x0b14, 0x0b26, 0x0b3c, 0x0b4e, 0x0b62, - 0x0b74, 0x0b84, 0x0b92, 0x0ba0, 0x0bb0, 0x0bc2, 0x0bd2, 0x0be6, - 0x0bf4, 0x0c06, 0x0c14, 0x0c28, 0x0c41, 0x0c51, 0x0c5d, 0x0c69, - 0x0c79, 0x0c8b, 0x0c9b, 0x0ca9, 0x0cb5, 0x0ccb, 0x0cdb, 0x0cef, - 0x0cfd, 0x0cfd, 0x0d13, 0x0d1d, 0x0d2d, 0x0d3d, 0x0d3d, 0x0d4f, + 0x0951, 0x0965, 0x0977, 0x098b, 0x0997, 0x09a9, 0x09b7, 0x09d1, + 0x09e7, 0x09f9, 0x0a07, 0x0a24, 0x0a32, 0x0a44, 0x0a58, 0x0a6c, + 0x0a80, 0x0a8c, 0x0a9e, 0x0ab0, 0x0abe, 0x0acc, 0x0ae9, 0x0afd, + 0x0b0d, 0x0b1f, 0x0b31, 0x0b41, 0x0b53, 0x0b69, 0x0b7b, 0x0b8f, + 0x0ba1, 0x0bb1, 0x0bbf, 0x0bcd, 0x0bdb, 0x0bed, 0x0c01, 0x0c15, + 0x0c25, 0x0c37, 0x0c45, 0x0c59, 0x0c72, 0x0c82, 0x0c92, 0x0c9e, + 0x0cae, 0x0cc0, 0x0cd0, 0x0cde, 0x0cea, 0x0d00, 0x0d10, 0x0d24, + 0x0d32, 0x0d32, 0x0d48, 0x0d52, 0x0d62, 0x0d72, 0x0d72, 0x0d84, // Entry C0 - FF - 0x0d4f, 0x0d72, 0x0d95, 0x0da5, 0x0db5, 0x0dc9, 0x0dc9, 0x0ddb, - 0x0ddb, 0x0def, 0x0def, 0x0def, 0x0df9, 0x0df9, 0x0e09, 0x0e09, - 0x0e19, 0x0e29, 0x0e42, 0x0e42, 0x0e4e, 0x0e56, 0x0e56, 0x0e6d, - 0x0e79, 0x0e87, 0x0e87, 0x0e8f, 0x0ea4, 0x0ea4, 0x0ec3, 0x0ed9, - 0x0eeb, 0x0ef9, 0x0ef9, 0x0f0a, 0x0f1e, 0x0f1e, 0x0f1e, 0x0f2e, - 0x0f2e, 0x0f3a, 0x0f42, 0x0f54, 0x0f68, 0x0f7b, 0x0f8b, 0x0fa4, - 0x0fb0, 0x0fc2, 0x0fd4, 0x0fe2, 0x0ff4, 0x0ffe, 0x100e, 0x1022, - 0x1034, 0x1040, 0x105b, 0x1069, 0x107f, 0x108f, 0x109d, 0x10be, + 0x0d84, 0x0da7, 0x0dca, 0x0dda, 0x0dea, 0x0e06, 0x0e06, 0x0e18, + 0x0e18, 0x0e33, 0x0e47, 0x0e47, 0x0e47, 0x0e51, 0x0e51, 0x0e61, + 0x0e61, 0x0e71, 0x0e81, 0x0e9a, 0x0e9a, 0x0ea6, 0x0eae, 0x0eae, + 0x0ec5, 0x0ed1, 0x0edf, 0x0edf, 0x0ee7, 0x0efc, 0x0efc, 0x0f1b, + 0x0f31, 0x0f43, 0x0f51, 0x0f51, 0x0f62, 0x0f76, 0x0f76, 0x0f76, + 0x0f86, 0x0f86, 0x0f92, 0x0f9a, 0x0fac, 0x0fc0, 0x0fd3, 0x0fe3, + 0x0ffc, 0x1008, 0x101a, 0x102c, 0x103a, 0x104c, 0x1056, 0x1066, + 0x107a, 0x108c, 0x1098, 0x10b3, 0x10c1, 0x10d7, 0x10e7, 0x10f5, // Entry 100 - 13F - 0x10cc, 0x10cc, 0x10e6, 0x10fa, 0x110a, 0x111a, 0x1122, 0x1132, - 0x1142, 0x1152, 0x115e, 0x116e, 0x117e, 0x1199, 0x1199, 0x11a7, - 0x11c6, 0x11d9, 0x11e7, 0x11f9, 0x1201, 0x120d, 0x120d, 0x122a, - 0x1238, 0x1246, 0x1267, 0x1267, 0x1277, 0x1277, 0x1283, 0x1295, - 0x1295, 0x129f, 0x129f, 0x12bc, 0x12db, 0x12db, 0x1300, 0x1323, - 0x1337, 0x133f, 0x134d, 0x134d, 0x1359, 0x1365, 0x1365, 0x1373, - 0x1390, 0x1390, 0x13bc, 0x13ea, 0x13ea, 0x13f6, 0x140c, 0x141a, - 0x1428, 0x1449, 0x146e, 0x146e, 0x146e, 0x147c, 0x1486, 0x1492, + 0x1116, 0x1124, 0x1124, 0x113e, 0x1174, 0x1188, 0x1198, 0x11a8, + 0x11b0, 0x11c0, 0x11d0, 0x11e0, 0x11ec, 0x11fc, 0x120c, 0x1225, + 0x1225, 0x1233, 0x1252, 0x1265, 0x1273, 0x1285, 0x128d, 0x1299, + 0x1299, 0x12b6, 0x12c4, 0x12d2, 0x12f3, 0x12f3, 0x1303, 0x1303, + 0x130f, 0x1321, 0x1321, 0x132b, 0x132b, 0x1348, 0x1367, 0x1367, + 0x138c, 0x13af, 0x13c3, 0x13cb, 0x13d9, 0x13f2, 0x13fe, 0x140a, + 0x140a, 0x1418, 0x1435, 0x1435, 0x1461, 0x148f, 0x148f, 0x149b, + 0x14b1, 0x14bf, 0x14cd, 0x14ee, 0x1513, 0x1513, 0x1513, 0x1521, // Entry 140 - 17F - 0x1492, 0x14ae, 0x14ae, 0x14c4, 0x14d0, 0x14e2, 0x14fd, 0x14fd, - 0x1507, 0x1515, 0x152b, 0x153b, 0x154d, 0x154d, 0x154d, 0x155d, - 0x1569, 0x157d, 0x159e, 0x15bd, 0x15bd, 0x15d6, 0x15e6, 0x15f6, - 0x15fe, 0x160c, 0x1616, 0x162e, 0x163a, 0x164c, 0x165a, 0x1672, - 0x1672, 0x167e, 0x167e, 0x168c, 0x169e, 0x16b3, 0x16b3, 0x16b3, - 0x16b3, 0x16c3, 0x16d5, 0x16ee, 0x1702, 0x1714, 0x1720, 0x1741, - 0x1741, 0x1741, 0x1753, 0x1761, 0x176f, 0x1784, 0x179f, 0x17af, - 0x17bf, 0x17cf, 0x17d9, 0x17e9, 0x17f7, 0x1807, 0x1807, 0x1807, + 0x152b, 0x1537, 0x1552, 0x156e, 0x156e, 0x1584, 0x1590, 0x15a2, + 0x15bf, 0x15d8, 0x15e2, 0x15f0, 0x1606, 0x1616, 0x1628, 0x1628, + 0x1628, 0x1638, 0x1644, 0x1658, 0x1679, 0x1698, 0x1698, 0x16b1, + 0x16c1, 0x16d1, 0x16d9, 0x16e7, 0x16f1, 0x1709, 0x1715, 0x1727, + 0x1735, 0x174d, 0x174d, 0x1759, 0x1759, 0x1767, 0x1779, 0x178e, + 0x178e, 0x178e, 0x17a1, 0x17b1, 0x17c3, 0x17dc, 0x17f0, 0x1802, + 0x180e, 0x182f, 0x182f, 0x182f, 0x1841, 0x184f, 0x185d, 0x1872, + 0x188d, 0x189d, 0x18ad, 0x18bd, 0x18c7, 0x18d7, 0x18e5, 0x18f5, // Entry 180 - 1BF - 0x1807, 0x1813, 0x1813, 0x181f, 0x182b, 0x1848, 0x1848, 0x185b, - 0x186b, 0x1879, 0x1881, 0x188d, 0x18a0, 0x18a0, 0x18a0, 0x18b0, - 0x18b0, 0x18bc, 0x18ce, 0x18e0, 0x18f2, 0x1900, 0x1908, 0x1916, - 0x1926, 0x1932, 0x193e, 0x1954, 0x1975, 0x198a, 0x1992, 0x19ac, - 0x19c6, 0x19d4, 0x19ea, 0x19f8, 0x1a04, 0x1a04, 0x1a0e, 0x1a23, - 0x1a2f, 0x1a43, 0x1a57, 0x1a57, 0x1a57, 0x1a65, 0x1a7d, 0x1a7d, - 0x1a9a, 0x1aad, 0x1acc, 0x1adc, 0x1ae8, 0x1af4, 0x1af4, 0x1b00, - 0x1b19, 0x1b27, 0x1b40, 0x1b40, 0x1b48, 0x1b65, 0x1b71, 0x1b94, + 0x18f5, 0x18f5, 0x18f5, 0x1901, 0x1901, 0x190d, 0x1919, 0x1936, + 0x1936, 0x1949, 0x1959, 0x1967, 0x196f, 0x197b, 0x198e, 0x198e, + 0x198e, 0x199e, 0x199e, 0x19aa, 0x19bc, 0x19ce, 0x19e0, 0x19ee, + 0x19f6, 0x1a04, 0x1a14, 0x1a20, 0x1a2c, 0x1a42, 0x1a63, 0x1a78, + 0x1a80, 0x1a9a, 0x1ab4, 0x1ac2, 0x1ad8, 0x1ae6, 0x1af2, 0x1af2, + 0x1afc, 0x1b11, 0x1b1d, 0x1b31, 0x1b45, 0x1b45, 0x1b45, 0x1b53, + 0x1b6b, 0x1b87, 0x1b99, 0x1bac, 0x1bcb, 0x1bdb, 0x1be7, 0x1bf3, + 0x1bf3, 0x1bff, 0x1c18, 0x1c26, 0x1c3f, 0x1c3f, 0x1c47, 0x1c64, // Entry 1C0 - 1FF - 0x1ba8, 0x1bba, 0x1bc8, 0x1bd6, 0x1be4, 0x1c05, 0x1c1d, 0x1c2d, - 0x1c41, 0x1c59, 0x1c69, 0x1c69, 0x1c69, 0x1c69, 0x1c88, 0x1c88, - 0x1c9a, 0x1c9a, 0x1c9a, 0x1cb2, 0x1cb2, 0x1cd7, 0x1cdf, 0x1cdf, - 0x1cf7, 0x1d07, 0x1d21, 0x1d21, 0x1d21, 0x1d2f, 0x1d37, 0x1d37, - 0x1d37, 0x1d37, 0x1d4d, 0x1d57, 0x1d69, 0x1d77, 0x1d98, 0x1da6, - 0x1db4, 0x1dc6, 0x1dc6, 0x1dd0, 0x1dda, 0x1de8, 0x1dfe, 0x1dfe, - 0x1e1d, 0x1e2b, 0x1e33, 0x1e33, 0x1e41, 0x1e5c, 0x1e7f, 0x1e7f, - 0x1e8b, 0x1e99, 0x1eb8, 0x1ec8, 0x1ec8, 0x1ec8, 0x1ee3, 0x1ef6, + 0x1c70, 0x1c93, 0x1ca7, 0x1cb9, 0x1cc7, 0x1cd5, 0x1ce3, 0x1d04, + 0x1d1c, 0x1d2c, 0x1d40, 0x1d58, 0x1d68, 0x1d68, 0x1d8b, 0x1d8b, + 0x1d8b, 0x1daa, 0x1daa, 0x1dbc, 0x1dbc, 0x1dbc, 0x1dd4, 0x1dea, + 0x1e0f, 0x1e17, 0x1e17, 0x1e2f, 0x1e3f, 0x1e59, 0x1e59, 0x1e59, + 0x1e67, 0x1e75, 0x1e75, 0x1e75, 0x1e75, 0x1e8b, 0x1e95, 0x1ea7, + 0x1eb5, 0x1ed6, 0x1ee4, 0x1ef2, 0x1f04, 0x1f04, 0x1f0e, 0x1f18, + 0x1f26, 0x1f3c, 0x1f3c, 0x1f5b, 0x1f69, 0x1f71, 0x1f71, 0x1f7f, + 0x1f9a, 0x1fbd, 0x1fbd, 0x1fc9, 0x1fd3, 0x1ff2, 0x2002, 0x2002, // Entry 200 - 23F - 0x1f0f, 0x1f26, 0x1f36, 0x1f46, 0x1f61, 0x1f6b, 0x1f7e, 0x1f7e, - 0x1f8e, 0x1f9a, 0x1fac, 0x1fba, 0x1fd7, 0x1fe9, 0x1fe9, 0x1fe9, - 0x1ff5, 0x1ffd, 0x200d, 0x2019, 0x2027, 0x2031, 0x2043, 0x2043, - 0x2055, 0x206b, 0x206b, 0x207d, 0x2094, 0x20a9, 0x20a9, 0x20c0, - 0x20c0, 0x20d4, 0x20d4, 0x20e6, 0x20f6, 0x2104, 0x2112, 0x213a, - 0x2148, 0x215c, 0x216c, 0x2176, 0x2180, 0x2180, 0x2180, 0x2180, - 0x2180, 0x218e, 0x218e, 0x219c, 0x21aa, 0x21bc, 0x21ca, 0x21d6, - 0x21e6, 0x21e6, 0x21f6, 0x21f6, 0x2202, 0x220c, 0x221a, 0x2226, + 0x2002, 0x201d, 0x2030, 0x2049, 0x2060, 0x2070, 0x2080, 0x209b, + 0x20a5, 0x20b8, 0x20b8, 0x20c8, 0x20d4, 0x20e6, 0x20f4, 0x2111, + 0x2123, 0x2123, 0x2123, 0x212f, 0x2137, 0x2147, 0x2153, 0x2163, + 0x216d, 0x217f, 0x217f, 0x2191, 0x21a7, 0x21a7, 0x21b9, 0x21d0, + 0x21e5, 0x21e5, 0x21fc, 0x21fc, 0x2210, 0x2210, 0x2222, 0x2232, + 0x2240, 0x224e, 0x2276, 0x2284, 0x2298, 0x22a8, 0x22b2, 0x22bc, + 0x22bc, 0x22bc, 0x22bc, 0x22bc, 0x22ca, 0x22ca, 0x22d8, 0x22e6, + 0x22f8, 0x2306, 0x2312, 0x2322, 0x2339, 0x2349, 0x2349, 0x2355, // Entry 240 - 27F - 0x222e, 0x222e, 0x2246, 0x2258, 0x2282, 0x2282, 0x2292, 0x22c8, - 0x22d6, 0x22f2, 0x22fa, 0x2326, 0x2326, 0x234b, 0x237d, 0x23a6, - 0x23c9, 0x23f2, 0x2419, 0x244b, 0x2470, 0x2495, 0x2495, 0x24b4, - 0x24d7, 0x24f6, 0x2508, 0x2531, 0x2558, 0x256c, 0x2585, 0x25a6, - 0x25c3, 0x25e4, -} // Size: 1244 bytes - -var azLangStr string = "" + // Size: 3706 bytes - "afarcaabxazavestancaafrikaansakancaamhararagoncaərəbassamavarikcəaymarca" + - "azərbaycan dilibaşqırdbelarusbolqarbislamabambarabenqaltibetBretoncabosn" + - "iakkatalançeçençamorokorsikakri diliçexkilsə slavçuvaşuelsdanimarkaalman" + - "divehdzonqaeveyunaningilisesperantoispanestonbaskfarsfulafinficifarerfra" + - "nsızqərbi frizirlandskot gaelikqalisianquaraniqucaratmankshausaivrithind" + - "ihiri motuxorvathaitimacarerməniHererinterlinguaindonezinterlingueiqbosi" + - "çuan yiinupiaqidoislanditalyaninuktitutyaponyavagürcükonqokikuyukuanyam" + - "aqazaxkalaallisutkxmerkannadakoreyakanurkaşmirkürdkomikornqırğızlatınlük" + - "semburqqandalimburqişlinqalalaoslitvaluba-katanqalatışmalaqasmarşalmaori" + - "makedonmalayalammonqolmaratimalaymaltabirmanauruşimali ndebelenepalnqonk" + - "ahollandnünorsk norveçbokmal norveçcənub ndebelenavayonyancaoksitancaoci" + - "bvaoromooriyaosetikpəncabpalipolyakpuştuportuqalkeçuaretoromanrundirumın" + - "ruskinyarvandasanskritsardinsindhişimali samisanqosinhalslovakslovensamo" + - "aşonasomalialbanserbsvatiSesotoisveçsuahilitamilteluqutaciktaytiqrintürk" + - "mənsvanatonqatürksonqatatartaxitiuyğurukraynaurduözbəkvendavyetnamvolapü" + - "kvalunvolofxosaYahudiyorubajuənqçinzuluakinakoliadangmeadugeafrihiliaqhe" + - "maynucaakadiancaaleutcacənub altayqədimi ingiliscəangikəaramikaraukancaa" + - "rapahoaravakçaasuasturicəavadicəbalucbalincəbasabejabembabenaqərbi bəluc" + - "bxoçpuribikolcabinisiksikəbrajbodoburyatbuginbilincəkadokaribatsamcakebu" + - "anoçiqaçibçəçağatayçukizmariçinuk ləhçəsiçoktauçipevyançirokiçeyensorani" + - " kürdkoptkrım türkçəkaşubyandakotadarqvataitadelaverslaveydoqribdinkazar" + - "madoqriaşağı sorbdualaortacaq hollandcadioladyulaembuefikqədimi misireka" + - "cukelamitortacaq ingiliscəevondofangfilippinfonortacaq fransızcaqədimi f" + - "ransızcaşimal frisfriulqaqaqauzqayoqabayaqezqilbert giliortacaq yüksək a" + - "lmancaqədimi almancaqondiqorontalogotçaqreboqədimi yunancaİsveçrə almanc" + - "asıqusiqviçinhaydahavayhiliqaynonhittitmonqyuxarı sorbhupaibanilokoinquş" + - "loğbannqombamaçamjudo-farscajude-ərəbcəqara-qalpaqkabilekaçincajukambaka" + - "vikabardcatiyapmakondkabuverdiankoroxazixotankoyra çiinikalencinkimbundu" + - "komi-permyakkonkankosreyankpelleqaraçay-balkarkarelyankuruxşambalabafiak" + - "umukkutenayladinlangilaxndalambaləzqilakotamonqolozişimali luriluba-lulu" + - "aluysenolundaluolushaycaluyiamadurizmaqahimaitilimakasarməndinqomasaymok" + - "şamandarmendemerumorisienortacaq irlandcamaxuva-meettometa’mikmakminanq" + - "kabanmançumanipürimohavkmosimundanqdigər dillərkrikmirandmaruarierzyamaz" + - "andaranneapolitalnamaaşağı almancanevarinyasniyuankvasionoqayqədimi nors" + - "canqoşimal sotonuernyamvezinyankolniyoronizimaosageosmanpanqasinanpaxlav" + - "ipampanqapapyamentopalayancaqədimi farscafoyenikponpeyanqədimi provensia" + - "lcakiçeracastanrapanurarotonqanromboromanaromancaruasandaveyakutsamarita" + - "nsamburusasaksantalsanqusisiliskotscənubi kürdsenaselkupkoyraboro senniq" + - "ədimi irlandcataçelitşansidamocənubi samilule samiinari samiskoltsonink" + - "esoqdiyensranan tonqoserer diliisukumasususumeryansiryaktimnetesoterenot" + - "etumtiqretivtokelayklinqontlinqittamaşekniyasa tongatok pisinsimşyantumb" + - "ukatuvalutasavaqtuvinyanMərkəzi Atlas tamazicəsiudmurtuqaritikumbundurut" + - "vaivotikvunyovalamovarayvaşoValpirikalmıqcasoqayaoyapizzapotekblisimbols" + - "zenaqatamazizunidil məzmunu yoxdurzazaModern Standart Ərəbcəcənubi azərb" + - "aycanAvstriya almancasıİsveçrə yüksək almancasıAvstraliya ingiliscəsiKan" + - "ada ingiliscəsiBritaniya ingiliscəsiAmerika ingiliscəsiLatın Amerikası i" + - "spancasıKastiliya ispancasıMeksika ispancasıKanada fransızcasıİsveçrə fr" + - "ansızcasıaşağı saksonflamandBraziliya portuqalcasıPortuqaliya portuqalca" + - "sımoldavserb-xorvatcaKonqo suahilicəsisadələşmiş çinənənəvi çin" - -var azLangIdx = []uint16{ // 610 elements + 0x235f, 0x236d, 0x2379, 0x2381, 0x2381, 0x2399, 0x23ab, 0x23d5, + 0x23d5, 0x23e5, 0x241b, 0x2429, 0x2445, 0x244d, 0x2479, 0x2479, + 0x249e, 0x24d0, 0x24f9, 0x251c, 0x2545, 0x256c, 0x259e, 0x25c3, + 0x25e8, 0x25e8, 0x2607, 0x262a, 0x2649, 0x265b, 0x2684, 0x26ab, + 0x26bf, 0x26d8, 0x26f9, 0x2716, 0x2737, +} // Size: 1250 bytes + +const azLangStr string = "" + // Size: 3713 bytes + "afarabxazavestanafrikaansakanamhararaqonərəbassamavaraymaraazərbaycanbaş" + + "qırdbelarusbolqarbislamabambarabenqaltibetbretonbosniakkatalançeçençamor" + + "okorsikakriçexslavyançuvaşuelsdanimarkaalmanmaldivdzonqaeveyunaningilise" + + "sperantoispanestonbaskfarsfulafinficifarerfransızqərbi frizirlandŞotland" + + "iya keltcəsiqalisiyaquaraniqucaratmankshausaivrithindhiri motuxorvathait" + + "i kreolmacarermənihererointerlinquaindoneziyainterlinqveiqbosiçuan yiinu" + + "piaqidoislanditalyaninuktitutyaponyavagürcükonqokikuyukuanyamaqazaxkalaa" + + "llisutkxmerkannadakoreyakanurikəşmirkürdkomikornqırğızlatınlüksemburqqan" + + "dalimburqlinqalalaoslitvaluba-katanqalatışmalaqasmarşalmaorimakedonmalay" + + "alammonqolmarathimalaymaltabirmannauruşimali ndebelenepalndonqahollandnü" + + "norsk norveçbokmal norveçcənubi ndebelenavayonyancaoksitanocibvaoromoodi" + + "yaosetinpəncabpalipolyakpuştuportuqalkeçuaromanşrundirumınruskinyarvanda" + + "sanskritsardinsindhişimali samisanqosinhalaslovakslovensamoaşonasomalial" + + "banserbsvatisesotosundanisveçsuahilitamilteluqutaciktaytiqrintürkmənsvan" + + "atonqatürksonqatatartaxitiuyğurukraynaurduözbəkvendavyetnamvolapükvalunv" + + "olofxosaidişyorubaçjuançinzuluakinakoliadanqmeadugeafrihiliaqhemaynuakka" + + "daleutcənubi altayqədim ingilisangikaaramikmapuçearapahoaravakasuasturiy" + + "aavadhibalucballibasabejabembabenaqərbi bəlucbxoçpuribikolbinisiksikəbra" + + "jbodoburyatbuginblinkeddokaribatsamsebuançiqaçibçaçağatayçukizmariçinuk " + + "ləhçəsiçoktauçipevyançerokiçeyensorankoptkrım türkcəsikaşubyandakotadarq" + + "vataitadelaverslaveydoqribdinkazarmadoqriaşağı sorbdualaorta hollanddiol" + + "adyuladazaqaembuefikqədim misirekacukelamitorta ingilisevondofangfilippi" + + "nfonorta fransızqədim fransızşimali frisfriulqaqaqauzqanqayoqabayaqezqil" + + "bertorta yüksək almanqədim almanqondiqorontalogotçaqreboqədim yunanİsveç" + + "rə almancasıqusiqviçinhaydahakkahavayhiliqaynonhittitmonqyuxarı sorbsyan" + + "hupaibanibibioilokoinquşloğbannqombamaçamivrit-farsivrit-ərəbqaraqalpaqk" + + "abilekaçinjukambakavikabarda-çərkəztiyapmakondkabuverdiankoroxazixotanko" + + "yra çiinikakokalencinkimbundukomi-permyakkonkanikosreyankpelleqaraçay-ba" + + "lkarkarelkuruxşambalabafiakölnkumıkkutenaysefardlangiqərbi pəncablambalə" + + "zgilakotamonqolozişimali luriluba-lulualuysenolundaluomizoluyiamadurizma" + + "qahimaitilimakasarməndinqomasaymokşamandarmendemerumorisienorta irlandma" + + "xuva-meettometa’mikmakminanqkabanmançumanipürimohavkmosimundanqçoxsaylı " + + "dillərkrikmirandmaruarierzyamazandaranMin Nanneapolitannamaaşağı almanne" + + "variniasniyuankvasiongiemboonnoqayqədim norsnqoşimal sotonuernyamvezinya" + + "nkolnyoronzimaosageosmanpanqasinanpəhləvipampanqapapyamentopalayanniger " + + "kreolqədim farsfoyenikponpeyqədim provansalkiçeracastanirapanuirarotonqa" + + "nromboromanaromanruasandavesaxasamaritansamburusasaksantalnqambaysanqusi" + + "ciliyaskotscənubi kürdsenaselkupkoyraboro senniqədim irlandtaçelitşansid" + + "amocənubi samilule samiinari samiskolt samisoninkesoqdiyensranan tonqose" + + "rersahosukumasususumeryankomorsuriyatimnetesoterenotetumtiqretivtokelayk" + + "linqontlinqittamaşeknyasa tonqatok pisintarokosimşyantumbukatuvalutasava" + + "qtuvinyanMərkəzi Atlas tamazicəsiudmurtuqaritumbundurutvaivotikvunyovall" + + "esvalamovarayvaşovalpirivukalmıksoqayaoyapizyanqbenyembakantonzapotekbli" + + "simbolszenaqatamazizunidil məzmunu yoxdurzazamüasir standart ərəbcənubi " + + "azərbaycanAvstriya almancasıİsveçrə yüksək almancasıAvstraliya ingiliscə" + + "siKanada ingiliscəsiBritaniya ingiliscəsiAmerika ingiliscəsiLatın Amerik" + + "ası ispancasıKastiliya ispancasıMeksika ispancasıKanada fransızcasıİsveç" + + "rə fransızcasıaşağı saksonflamandBraziliya portuqalcasıPortuqaliya portu" + + "qalcasımoldavserb-xorvatKonqo suahilicəsisadələşmiş çinənənəvi çin" + +var azLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0006, 0x000b, 0x0014, 0x001d, 0x0023, 0x0028, 0x0030, - 0x0036, 0x003b, 0x0044, 0x004b, 0x005b, 0x0064, 0x006b, 0x0071, - 0x0078, 0x007f, 0x0085, 0x008a, 0x0092, 0x0099, 0x00a0, 0x00a7, - 0x00ae, 0x00b5, 0x00bd, 0x00c1, 0x00cc, 0x00d3, 0x00d7, 0x00e0, - 0x00e5, 0x00ea, 0x00f0, 0x00f3, 0x00f8, 0x00ff, 0x0108, 0x010d, - 0x0112, 0x0116, 0x011a, 0x011e, 0x0121, 0x0125, 0x012a, 0x0132, - 0x013d, 0x0143, 0x014e, 0x0156, 0x015d, 0x0164, 0x0169, 0x016e, - 0x0173, 0x0178, 0x0181, 0x0187, 0x018c, 0x0191, 0x0198, 0x019d, + 0x0000, 0x0004, 0x0009, 0x0010, 0x0019, 0x001d, 0x0022, 0x0028, + 0x002e, 0x0033, 0x0037, 0x003d, 0x0048, 0x0051, 0x0058, 0x005e, + 0x0065, 0x006c, 0x0072, 0x0077, 0x007d, 0x0084, 0x008b, 0x0092, + 0x0099, 0x00a0, 0x00a3, 0x00a7, 0x00ae, 0x00b5, 0x00b9, 0x00c2, + 0x00c7, 0x00cd, 0x00d3, 0x00d6, 0x00db, 0x00e2, 0x00eb, 0x00f0, + 0x00f5, 0x00f9, 0x00fd, 0x0101, 0x0104, 0x0108, 0x010d, 0x0115, + 0x0120, 0x0126, 0x013b, 0x0143, 0x014a, 0x0151, 0x0156, 0x015b, + 0x0160, 0x0164, 0x016d, 0x0173, 0x017e, 0x0183, 0x018a, 0x0190, // Entry 40 - 7F - 0x01a8, 0x01af, 0x01ba, 0x01be, 0x01c8, 0x01cf, 0x01d2, 0x01d8, - 0x01df, 0x01e8, 0x01ed, 0x01f1, 0x01f8, 0x01fd, 0x0203, 0x020b, - 0x0210, 0x021b, 0x0220, 0x0227, 0x022d, 0x0232, 0x0239, 0x023e, - 0x0242, 0x0246, 0x024f, 0x0255, 0x0260, 0x0265, 0x026f, 0x0276, - 0x027a, 0x027f, 0x028b, 0x0292, 0x0299, 0x02a0, 0x02a5, 0x02ac, - 0x02b5, 0x02bb, 0x02c1, 0x02c6, 0x02cb, 0x02d0, 0x02d5, 0x02e4, - 0x02e9, 0x02ef, 0x02f6, 0x0306, 0x0314, 0x0322, 0x0328, 0x032e, - 0x0337, 0x033d, 0x0342, 0x0347, 0x034d, 0x0354, 0x0358, 0x035e, + 0x019b, 0x01a5, 0x01b0, 0x01b4, 0x01be, 0x01c5, 0x01c8, 0x01ce, + 0x01d5, 0x01de, 0x01e3, 0x01e7, 0x01ee, 0x01f3, 0x01f9, 0x0201, + 0x0206, 0x0211, 0x0216, 0x021d, 0x0223, 0x0229, 0x0231, 0x0236, + 0x023a, 0x023e, 0x0247, 0x024d, 0x0258, 0x025d, 0x0264, 0x026b, + 0x026f, 0x0274, 0x0280, 0x0287, 0x028e, 0x0295, 0x029a, 0x02a1, + 0x02aa, 0x02b0, 0x02b7, 0x02bc, 0x02c1, 0x02c7, 0x02cc, 0x02db, + 0x02e0, 0x02e6, 0x02ed, 0x02fd, 0x030b, 0x031a, 0x0320, 0x0326, + 0x032d, 0x0333, 0x0338, 0x033d, 0x0343, 0x034a, 0x034e, 0x0354, // Entry 80 - BF - 0x0364, 0x036c, 0x0372, 0x037b, 0x0380, 0x0386, 0x0389, 0x0394, - 0x039c, 0x03a2, 0x03a8, 0x03b4, 0x03b9, 0x03bf, 0x03c5, 0x03cb, - 0x03d0, 0x03d5, 0x03db, 0x03e0, 0x03e4, 0x03e9, 0x03ef, 0x03ef, - 0x03f5, 0x03fc, 0x0401, 0x0407, 0x040c, 0x040f, 0x0415, 0x041e, - 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043d, 0x0443, 0x044a, - 0x044e, 0x0455, 0x045a, 0x0461, 0x0469, 0x046e, 0x0473, 0x0477, - 0x047d, 0x0483, 0x0489, 0x048d, 0x0491, 0x0495, 0x049a, 0x04a1, - 0x04a6, 0x04a6, 0x04ae, 0x04b3, 0x04b9, 0x04c2, 0x04c2, 0x04c9, + 0x035a, 0x0362, 0x0368, 0x036f, 0x0374, 0x037a, 0x037d, 0x0388, + 0x0390, 0x0396, 0x039c, 0x03a8, 0x03ad, 0x03b4, 0x03ba, 0x03c0, + 0x03c5, 0x03ca, 0x03d0, 0x03d5, 0x03d9, 0x03de, 0x03e4, 0x03ea, + 0x03f0, 0x03f7, 0x03fc, 0x0402, 0x0407, 0x040a, 0x0410, 0x0419, + 0x041e, 0x0423, 0x0428, 0x042d, 0x0432, 0x0438, 0x043e, 0x0445, + 0x0449, 0x0450, 0x0455, 0x045c, 0x0464, 0x0469, 0x046e, 0x0472, + 0x0477, 0x047d, 0x0483, 0x0487, 0x048b, 0x048f, 0x0494, 0x049b, + 0x04a0, 0x04a0, 0x04a8, 0x04ad, 0x04b1, 0x04b6, 0x04b6, 0x04bb, // Entry C0 - FF - 0x04c9, 0x04d5, 0x04e7, 0x04ee, 0x04f4, 0x04fd, 0x04fd, 0x0504, - 0x0504, 0x050d, 0x050d, 0x050d, 0x0510, 0x0510, 0x0519, 0x0519, - 0x0521, 0x0526, 0x052e, 0x052e, 0x0532, 0x0532, 0x0532, 0x0532, - 0x0536, 0x053b, 0x053b, 0x053f, 0x053f, 0x053f, 0x054c, 0x0555, - 0x055c, 0x0560, 0x0560, 0x0560, 0x0568, 0x0568, 0x0568, 0x056c, - 0x056c, 0x0570, 0x0570, 0x0576, 0x057b, 0x057b, 0x0583, 0x0583, - 0x0587, 0x058c, 0x058c, 0x0593, 0x059a, 0x059f, 0x05a7, 0x05b0, - 0x05b6, 0x05ba, 0x05cb, 0x05d2, 0x05db, 0x05e2, 0x05e8, 0x05f4, + 0x04bb, 0x04c8, 0x04d6, 0x04dc, 0x04e2, 0x04e9, 0x04e9, 0x04f0, + 0x04f0, 0x04f0, 0x04f6, 0x04f6, 0x04f6, 0x04f9, 0x04f9, 0x0501, + 0x0501, 0x0507, 0x050c, 0x0511, 0x0511, 0x0515, 0x0515, 0x0515, + 0x0515, 0x0519, 0x051e, 0x051e, 0x0522, 0x0522, 0x0522, 0x052f, + 0x0538, 0x053d, 0x0541, 0x0541, 0x0541, 0x0549, 0x0549, 0x0549, + 0x054d, 0x054d, 0x0551, 0x0551, 0x0557, 0x055c, 0x055c, 0x0560, + 0x0560, 0x0565, 0x056a, 0x056a, 0x056f, 0x0575, 0x057a, 0x0581, + 0x058a, 0x0590, 0x0594, 0x05a5, 0x05ac, 0x05b5, 0x05bc, 0x05c2, // Entry 100 - 13F - 0x05f8, 0x05f8, 0x0607, 0x0610, 0x0616, 0x061c, 0x0621, 0x0628, - 0x062e, 0x0634, 0x0639, 0x063e, 0x0643, 0x0650, 0x0650, 0x0655, - 0x0666, 0x066b, 0x0670, 0x0670, 0x0674, 0x0678, 0x0678, 0x0685, - 0x068b, 0x0691, 0x06a3, 0x06a3, 0x06a9, 0x06a9, 0x06ad, 0x06b5, - 0x06b5, 0x06b8, 0x06b8, 0x06ca, 0x06dc, 0x06dc, 0x06e7, 0x06e7, - 0x06ec, 0x06ee, 0x06f4, 0x06f4, 0x06f8, 0x06fe, 0x06fe, 0x0701, - 0x070d, 0x070d, 0x0725, 0x0734, 0x0734, 0x0739, 0x0742, 0x0748, - 0x074d, 0x075c, 0x0771, 0x0771, 0x0771, 0x0775, 0x077c, 0x0781, + 0x05c7, 0x05cb, 0x05cb, 0x05db, 0x05db, 0x05e4, 0x05ea, 0x05f0, + 0x05f5, 0x05fc, 0x0602, 0x0608, 0x060d, 0x0612, 0x0617, 0x0624, + 0x0624, 0x0629, 0x0635, 0x063a, 0x063f, 0x0645, 0x0649, 0x064d, + 0x064d, 0x0659, 0x065f, 0x0665, 0x0671, 0x0671, 0x0677, 0x0677, + 0x067b, 0x0683, 0x0683, 0x0686, 0x0686, 0x0693, 0x06a2, 0x06a2, + 0x06ae, 0x06ae, 0x06b3, 0x06b5, 0x06bb, 0x06be, 0x06c2, 0x06c8, + 0x06c8, 0x06cb, 0x06d2, 0x06d2, 0x06e5, 0x06f1, 0x06f1, 0x06f6, + 0x06ff, 0x0705, 0x070a, 0x0716, 0x072b, 0x072b, 0x072b, 0x072f, // Entry 140 - 17F - 0x0781, 0x0786, 0x0786, 0x0790, 0x0796, 0x079a, 0x07a6, 0x07a6, - 0x07aa, 0x07ae, 0x07ae, 0x07b3, 0x07b9, 0x07b9, 0x07b9, 0x07c0, - 0x07c6, 0x07cc, 0x07d7, 0x07e5, 0x07e5, 0x07f0, 0x07f6, 0x07fe, - 0x0800, 0x0805, 0x0809, 0x0811, 0x0811, 0x0816, 0x081c, 0x0827, - 0x0827, 0x082b, 0x082b, 0x082f, 0x0834, 0x0840, 0x0840, 0x0840, - 0x0840, 0x0848, 0x0850, 0x085c, 0x0862, 0x086a, 0x0870, 0x087f, - 0x087f, 0x087f, 0x0887, 0x088c, 0x0894, 0x0899, 0x0899, 0x089e, - 0x08a5, 0x08aa, 0x08af, 0x08b5, 0x08ba, 0x08c0, 0x08c0, 0x08c0, + 0x0736, 0x073b, 0x0740, 0x0745, 0x0745, 0x074f, 0x0755, 0x0759, + 0x0765, 0x0769, 0x076d, 0x0771, 0x0777, 0x077c, 0x0782, 0x0782, + 0x0782, 0x0789, 0x078f, 0x0795, 0x079f, 0x07ab, 0x07ab, 0x07b5, + 0x07bb, 0x07c1, 0x07c3, 0x07c8, 0x07cc, 0x07dd, 0x07dd, 0x07e2, + 0x07e8, 0x07f3, 0x07f3, 0x07f7, 0x07f7, 0x07fb, 0x0800, 0x080c, + 0x080c, 0x080c, 0x0810, 0x0818, 0x0820, 0x082c, 0x0833, 0x083b, + 0x0841, 0x0850, 0x0850, 0x0850, 0x0855, 0x085a, 0x0862, 0x0867, + 0x086c, 0x0872, 0x0879, 0x087f, 0x0884, 0x0892, 0x0897, 0x089d, // Entry 180 - 1BF - 0x08c0, 0x08c6, 0x08c6, 0x08cb, 0x08cf, 0x08db, 0x08db, 0x08e5, - 0x08ec, 0x08f1, 0x08f4, 0x08fc, 0x0901, 0x0901, 0x0901, 0x0908, - 0x0908, 0x090e, 0x0915, 0x091c, 0x0925, 0x092a, 0x092a, 0x0930, - 0x0936, 0x093b, 0x093f, 0x0947, 0x0957, 0x0964, 0x096b, 0x0971, - 0x097c, 0x0982, 0x098b, 0x0991, 0x0995, 0x0995, 0x099c, 0x09aa, - 0x09ae, 0x09b4, 0x09bb, 0x09bb, 0x09bb, 0x09c0, 0x09ca, 0x09ca, - 0x09d4, 0x09d8, 0x09e8, 0x09ee, 0x09f2, 0x09f8, 0x09f8, 0x09fe, - 0x09fe, 0x0a03, 0x0a11, 0x0a11, 0x0a14, 0x0a1f, 0x0a23, 0x0a23, + 0x089d, 0x089d, 0x089d, 0x08a3, 0x08a3, 0x08a8, 0x08ac, 0x08b8, + 0x08b8, 0x08c2, 0x08c9, 0x08ce, 0x08d1, 0x08d5, 0x08da, 0x08da, + 0x08da, 0x08e1, 0x08e1, 0x08e7, 0x08ee, 0x08f5, 0x08fe, 0x0903, + 0x0903, 0x0909, 0x090f, 0x0914, 0x0918, 0x0920, 0x092b, 0x0938, + 0x093f, 0x0945, 0x0950, 0x0956, 0x095f, 0x0965, 0x0969, 0x0969, + 0x0970, 0x0982, 0x0986, 0x098c, 0x0993, 0x0993, 0x0993, 0x0998, + 0x09a2, 0x09a9, 0x09b3, 0x09b7, 0x09c5, 0x09cb, 0x09cf, 0x09d5, + 0x09d5, 0x09db, 0x09e4, 0x09e9, 0x09f4, 0x09f4, 0x09f7, 0x0a02, // Entry 1C0 - 1FF - 0x0a2b, 0x0a32, 0x0a38, 0x0a3e, 0x0a43, 0x0a48, 0x0a52, 0x0a59, - 0x0a61, 0x0a6b, 0x0a74, 0x0a74, 0x0a74, 0x0a74, 0x0a82, 0x0a82, - 0x0a89, 0x0a89, 0x0a89, 0x0a91, 0x0a91, 0x0aa5, 0x0aaa, 0x0aaa, - 0x0ab2, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac7, 0x0acc, 0x0acc, - 0x0acc, 0x0acc, 0x0ad4, 0x0ad7, 0x0ade, 0x0ae3, 0x0aec, 0x0af3, - 0x0af8, 0x0afe, 0x0afe, 0x0afe, 0x0b03, 0x0b09, 0x0b0e, 0x0b0e, - 0x0b1b, 0x0b1b, 0x0b1f, 0x0b1f, 0x0b25, 0x0b34, 0x0b44, 0x0b44, - 0x0b4c, 0x0b50, 0x0b50, 0x0b56, 0x0b56, 0x0b56, 0x0b62, 0x0b6b, + 0x0a06, 0x0a06, 0x0a0e, 0x0a15, 0x0a1a, 0x0a1f, 0x0a24, 0x0a29, + 0x0a33, 0x0a3c, 0x0a44, 0x0a4e, 0x0a55, 0x0a55, 0x0a60, 0x0a60, + 0x0a60, 0x0a6b, 0x0a6b, 0x0a72, 0x0a72, 0x0a72, 0x0a78, 0x0a78, + 0x0a88, 0x0a8d, 0x0a8d, 0x0a96, 0x0a9d, 0x0aa7, 0x0aa7, 0x0aa7, + 0x0aac, 0x0ab1, 0x0ab1, 0x0ab1, 0x0ab1, 0x0ab7, 0x0aba, 0x0ac1, + 0x0ac5, 0x0ace, 0x0ad5, 0x0ada, 0x0ae0, 0x0ae0, 0x0ae7, 0x0aec, + 0x0af4, 0x0af9, 0x0af9, 0x0b06, 0x0b06, 0x0b0a, 0x0b0a, 0x0b10, + 0x0b1f, 0x0b2c, 0x0b2c, 0x0b34, 0x0b38, 0x0b38, 0x0b3e, 0x0b3e, // Entry 200 - 23F - 0x0b75, 0x0b7a, 0x0b81, 0x0b89, 0x0b95, 0x0ba0, 0x0ba0, 0x0ba0, - 0x0ba6, 0x0baa, 0x0bb2, 0x0bb2, 0x0bb2, 0x0bb8, 0x0bb8, 0x0bb8, - 0x0bbd, 0x0bc1, 0x0bc7, 0x0bcc, 0x0bd1, 0x0bd4, 0x0bdb, 0x0bdb, - 0x0be2, 0x0be9, 0x0be9, 0x0bf1, 0x0bfd, 0x0c06, 0x0c06, 0x0c06, - 0x0c06, 0x0c0e, 0x0c0e, 0x0c15, 0x0c1b, 0x0c22, 0x0c2a, 0x0c45, - 0x0c4b, 0x0c53, 0x0c5a, 0x0c5d, 0x0c60, 0x0c60, 0x0c60, 0x0c60, - 0x0c60, 0x0c65, 0x0c65, 0x0c6a, 0x0c6a, 0x0c70, 0x0c75, 0x0c7a, - 0x0c81, 0x0c81, 0x0c8a, 0x0c8a, 0x0c8e, 0x0c91, 0x0c96, 0x0c96, + 0x0b3e, 0x0b4a, 0x0b53, 0x0b5d, 0x0b67, 0x0b6e, 0x0b76, 0x0b82, + 0x0b87, 0x0b8b, 0x0b8b, 0x0b91, 0x0b95, 0x0b9d, 0x0ba2, 0x0ba2, + 0x0ba8, 0x0ba8, 0x0ba8, 0x0bad, 0x0bb1, 0x0bb7, 0x0bbc, 0x0bc1, + 0x0bc4, 0x0bcb, 0x0bcb, 0x0bd2, 0x0bd9, 0x0bd9, 0x0be1, 0x0bec, + 0x0bf5, 0x0bf5, 0x0bfb, 0x0bfb, 0x0c03, 0x0c03, 0x0c0a, 0x0c10, + 0x0c17, 0x0c1f, 0x0c3a, 0x0c40, 0x0c46, 0x0c4d, 0x0c50, 0x0c53, + 0x0c53, 0x0c53, 0x0c53, 0x0c53, 0x0c58, 0x0c58, 0x0c5d, 0x0c63, + 0x0c69, 0x0c6e, 0x0c73, 0x0c7a, 0x0c7c, 0x0c83, 0x0c83, 0x0c87, // Entry 240 - 27F - 0x0c96, 0x0c96, 0x0c96, 0x0c9d, 0x0ca7, 0x0ca7, 0x0cad, 0x0cb3, - 0x0cb7, 0x0cca, 0x0cce, 0x0ce7, 0x0cfa, 0x0d0d, 0x0d2b, 0x0d42, - 0x0d55, 0x0d6b, 0x0d7f, 0x0d9b, 0x0daf, 0x0dc1, 0x0dc1, 0x0dd5, - 0x0ded, 0x0dfc, 0x0e03, 0x0e1a, 0x0e33, 0x0e39, 0x0e46, 0x0e58, - 0x0e6b, 0x0e7a, -} // Size: 1244 bytes - -var bgLangStr string = "" + // Size: 7628 bytes + 0x0c8a, 0x0c8f, 0x0c96, 0x0c9b, 0x0c9b, 0x0ca1, 0x0ca8, 0x0cb2, + 0x0cb2, 0x0cb8, 0x0cbe, 0x0cc2, 0x0cd5, 0x0cd9, 0x0cf0, 0x0d03, + 0x0d16, 0x0d34, 0x0d4b, 0x0d5e, 0x0d74, 0x0d88, 0x0da4, 0x0db8, + 0x0dca, 0x0dca, 0x0dde, 0x0df6, 0x0e05, 0x0e0c, 0x0e23, 0x0e3c, + 0x0e42, 0x0e4d, 0x0e5f, 0x0e72, 0x0e81, +} // Size: 1250 bytes + +const bgLangStr string = "" + // Size: 7891 bytes "афарабхазкиавестскиафрикаансаканамхарскиарагонскиарабскиасамскиаварскиай" + "мараазербайджанскибашкирскибеларускибългарскибисламабамбарабенгалскитиб" + "етскибретонскибосненскикаталонскичеченскичаморокорсиканскикриичешкицърк" + - "овно славянскичувашкиуелскидатскинемскидивехидзонхаевегръцкианглийскиес" + - "перантоиспанскиестонскибаскиперсийскифулафинскифиджийскифарьорскифренск" + - "ифризийскиирландскишотландски галскигалисийскигуаранигуджаратиманкскиха" + - "узаивритхиндихири мотухърватскихаитянскиунгарскиарменскихерероинтерлинг" + - "ваиндонезийскиоксиденталигбосъчуански иинупиакидоисландскииталианскиину" + - "ктитутяпонскияванскигрузинскиконгоанскикикуюкванямаказахскигренландскик" + - "хмерскиканнадакорейскиканурикашмирскикюрдскиКомикорнуолскикиргизкилатин" + - "скилюксембургскигандалимбургскилингалалаоскилитовскилуба катангалатвийс" + - "кималгашкимаршалеземаорскимакедонскималаяламмонголскимаратималайскималт" + - "ийскибирманскинаурусеверен ндебеленепалскиндонганидерландскинорвежки (н" + - "юношк)норвежки (букмол)южен ндебеленавахочинянджаокситанскиоджибваоромо" + - "орияосетскипенджабскипалиполскипущупортугалскикечуаретороманскирундирум" + - "ънскирускикиняруандасанкскритскисардинскисиндхисеверносаамскисангосинха" + - "лскисловашкисловенскисамоанскишонасомалийскиалбанскисръбскисуазисесутос" + - "унданскишведскисуахилитамилскителугутаджикскитайскитигринятуркменскитсв" + - "анатонгатурскитсонгататарскитаитянскиуйгурскиукраинскиурдуузбекскивенда" + - "виетнамскиволапюквалонскиволофксосаидишйорубазуангкитайскизулускиачинск" + - "иаколиадангмеадигеафрихилиагемайнуакадскиалеутскиюжноалтайскистароангли" + - "йскиангикаарамейскимапучеарапахоаравакасуастурскиавадибалучибалинейскиб" + - "асабеябембабеназападен балочибожпурибиколскибинисиксикабраджбодобурятск" + - "ибугинскибиленскикаддокарибскиатсамсебуаночигачибчачагатайчуукмарийскиж" + - "аргон чинуукчокточиипувскичерокичейенскикюрдски (централен)коптскикримс" + - "котатарскикашубскидакотскидаргватаитаделауерслейвидогрибдинкаджермадогр" + - "идолнолужишкидуаласредновековен холандскидиоладиулаембуефикегипетскиека" + - "жукеламитскисредновековен английскиевондофангфилипинскифонсредновековен" + - " френскистарофренскисеверен фризскиизточен фризскифриулианскигагагаузкиг" + - "айогбаягиизгилбертскисредновековен немскистаровисоконемскигондигоронтал" + - "оготическигребодревногръцкишвейцарски немскигусиигвичинхайдахавайскихил" + - "игайнонхитскихмонггорнолужишкихупаибанилокоингушетскилоджбаннгомбамачам" + - "ееврейско-персийскиеврейско-арабскикаракалпашкикабилскикачинскижжикамба" + - "кавикабардиантуапмакондекабовердианскикорокхасикотскикойра чииникалендж" + - "инкимбундукоми-пермяцкиконканикосраенкпелекарачай-балкарскикарелскикуру" + - "кшамбалабафиякумикскикутенайладинолангилахндаламбалезгинскилакотамонгол" + - "озисеверен лурилуба-лулуалуисеньолундалуолушаилуямадурскимагахимайтхили" + - "макасармандингомасайскимокшамандармендемеруморисиенсредновековен ирланд" + - "скимакуа метометамикмакминангбауманчжурскиманипуримохоукмосимундангмног" + - "оезичникрикмирандийскимарвариерзиамазандараннеаполитанскинамадолнонемск" + - "иневарскиниасниуеанквасионогаистаронорвежскинкосеверен сотонуеркласичес" + - "ки невариниамвезинианколенуоронзимаоседжиотомански турскипангасинанпехл" + - "евийскипампангапапиаментупалауанстароперсийскифиникийскипохнпеианпрован" + - "салскикичераджастанскирапа нуирапотонганромбоцигански езикарумънскирвас" + - "андвеякутскисамаритански арамейскисамбурусасаксанталисангусицилианскишо" + - "тландскиюжнокюрдскисенаселкупкойраборо сенистароирландскиташелхитшансид" + - "амоюжносаамскилуле-саамскиинари-саамскисколт-саамскисонинкесогдийскисра" + - "нан тонгосерерсукумасусушумерскикоморскикласически сирийскисирийскитемн" + - "етесотеренотетумтигретивтокелайскиклингонтлингиттамашекнианса тонгаток " + - "писинцимшианскитумбукатувалуанскитасавактувинскицентралноатласки тамази" + - "гтудмуртскиугаритскиумбундуроотваивотиквунджоваламоварайуашовалпирикалм" + - "иксогаяояпезекантонскизапотекблис символизенагастандартен марокански та" + - "мазигтзунибез лингвистично съдържаниезазасъвременен стандартен арабскиа" + - "нглийски (САЩ)долносаксонскифламандскимолдовскисърбохърватскиконгоански" + - " суахили" - -var bgLangIdx = []uint16{ // 608 elements + "овнославянскичувашкиуелскидатскинемскидивехидзонхаевегръцкианглийскиесп" + + "ерантоиспанскиестонскибаскиперсийскифулафинскифиджийскифарьорскифренски" + + "фризийскиирландскишотландски галскигалисийскигуаранигуджаратиманкскихау" + + "заивритхиндихири мотухърватскихаитянски креолскиунгарскиарменскихерерои" + + "нтерлингваиндонезийскиоксиденталигбосъчуански иинупиакидоисландскиитали" + + "анскиинуктитутяпонскияванскигрузинскиконгоанскикикуюкванямаказахскигрен" + + "ландскикхмерскиканнадакорейскиканурикашмирскикюрдскикомикорнуолскикирги" + + "зкилатинскилюксембургскигандалимбургскилингалалаоскилитовскилуба катанг" + + "алатвийскималгашкимаршалеземаорскимакедонскималаяламмонголскимаратимала" + + "йскималтийскибирманскинаурусеверен ндебеленепалскиндонганидерландскинор" + + "вежки (нюношк)норвежки (букмол)южен ндебеленавахонянджаокситанскиоджибв" + + "аоромоорияосетскипенджабскипалиполскипущупортугалскикечуаретороманскиру" + + "ндирумънскирускикиняруандасанскритсардинскисиндхисеверносаамскисангосин" + + "халскисловашкисловенскисамоанскишонасомалийскиалбанскисръбскисватисесот" + + "осунданскишведскисуахилитамилскителугутаджикскитайскитигринятуркменскит" + + "сванатонгатурскицонгататарскитаитянскиуйгурскиукраинскиурдуузбекскивенд" + + "авиетнамскиволапюквалонскиволофксосаидишйорубазуангкитайскизулускиачинс" + + "киаколиадангмеадигеафрихилиагемайнуакадскиалеутскиюжноалтайскистароангл" + + "ийскиангикаарамейскимапучеарапахоаравакасуастурскиавадибалучибалийскиба" + + "сабеябембабеназападен балочибожпурибиколскибинисиксикабраджбодобурятски" + + "бугинскибиленскикаддокарибскиатсамсебуаночигачибчачагатайчуукмарийскижа" + + "ргон чинуукчокточиипувскичерокичейенскикюрдски (централен)коптскикримск" + + "отатарскисеселва, креолски френскикашубскидакотскидаргватаитаделауерсле" + + "йвидогрибдинказармадогридолносръбскидуаласредновековен холандскидиолади" + + "уладазагаембуефикдревноегипетскиекажукеламитскисредновековен английские" + + "вондофангфилипинскифонсредновековен френскистарофренскисеверен фризскии" + + "зточнофризийскифриулианскигагагаузкигайогбаягиизгилбертскисредновисокон" + + "емскистаровисоконемскигондигоронталоготическигребодревногръцкишвейцарск" + + "и немскигусиигвичинхайдахавайскихилигайнонхитскихмонггорнолужишкихупаиб" + + "анибибиоилокоингушетскиложбаннгомбамачамеюдео-персийскиюдео-арабскикара" + + "калпашкикабилскикачинскижжукамбакавикабардиантуапмакондекабовердианскик" + + "орокхасикотскикойра чииникакокаленджинкимбундукоми-пермякскиконканикоср" + + "аенкпелекарачай-балкарскикарелскикурукшамбалабафиякьолнскикумикскикутен" + + "айладинолангилахндаламбалезгинскилакотамонголозисеверен лурилуба-лулуал" + + "уисеньолундалуомизолуямадурскимагахимайтхилимакасармандингомасайскимокш" + + "амандармендемеруморисиенсредновековен ирландскимакуа метометамикмакмина" + + "нгкабауманджурскиманипуримохоукмосимундангмногоезичникрикмирандийскимар" + + "вариерзиамазандаринеаполитанскинамадолнонемскиневарскиниасниуеанквасион" + + "гиембунногаистаронорвежкинкосеверен сотонуеркласически невариниамвезини" + + "анколенуоронзимаосейджиотомански турскипангасинанпахлавипампангапапиаме" + + "нтопалауаннигерийски пиджинстароперсийскифиникийскипонапеанпрускистароп" + + "ровансалскикичераджастанскирапа нуираротонгаромборомскиарумънскирвасанд" + + "авеякутскисамаритански арамейскисамбурусасаксанталингамбайсангусицилиан" + + "скишотландскиюжнокюрдскисенаселкупкойраборо сенистароирландскиташелхитш" + + "ансидамоюжносаамскилуле-саамскиинари-саамскисколт-саамскисонинкесогдийс" + + "кисранан тонгосерерсахосукумасусушумерскикоморскикласически сирийскисир" + + "ийскитемнетесотеренотетумтигретивтокелайскиклингонскитлингиттамашекниан" + + "са тонгаток писинтарокоцимшианскитумбукатувалуанскитасавактувинскицентр" + + "алноатласки тамазигтудмуртскиугаритскиумбундуроотваивотиквунджовалзерск" + + "и немскиваламоварайуашовалпирикалмиксогаяояпезеянгбенйембакантонскизапо" + + "текблис символизенагастандартен марокански тамазигтзунибез лингвистично" + + " съдържаниезазасъвременен стандартен арабскианглийски (САЩ)долносаксонск" + + "ифламандскимолдовскисърбохърватскиконгоански суахиликитайски (опростен)" + +var bgLangIdx = []uint16{ // 612 elements // Entry 0 - 3F 0x0000, 0x0008, 0x0016, 0x0026, 0x0038, 0x0040, 0x0050, 0x0062, 0x0070, 0x007e, 0x008c, 0x0098, 0x00b4, 0x00c6, 0x00d8, 0x00ea, 0x00f8, 0x0106, 0x0118, 0x0128, 0x013a, 0x014c, 0x0160, 0x0170, - 0x017c, 0x0192, 0x019a, 0x01a4, 0x01c7, 0x01d5, 0x01e1, 0x01ed, - 0x01f9, 0x0205, 0x0211, 0x0217, 0x0223, 0x0235, 0x0247, 0x0257, - 0x0267, 0x0271, 0x0283, 0x028b, 0x0297, 0x02a9, 0x02bb, 0x02c9, - 0x02db, 0x02ed, 0x030e, 0x0322, 0x0330, 0x0342, 0x0350, 0x035a, - 0x0364, 0x036e, 0x037f, 0x0391, 0x03a3, 0x03b3, 0x03c3, 0x03cf, + 0x017c, 0x0192, 0x019a, 0x01a4, 0x01c6, 0x01d4, 0x01e0, 0x01ec, + 0x01f8, 0x0204, 0x0210, 0x0216, 0x0222, 0x0234, 0x0246, 0x0256, + 0x0266, 0x0270, 0x0282, 0x028a, 0x0296, 0x02a8, 0x02ba, 0x02c8, + 0x02da, 0x02ec, 0x030d, 0x0321, 0x032f, 0x0341, 0x034f, 0x0359, + 0x0363, 0x036d, 0x037e, 0x0390, 0x03b3, 0x03c3, 0x03d3, 0x03df, // Entry 40 - 7F - 0x03e5, 0x03fd, 0x0411, 0x0419, 0x042e, 0x043c, 0x0442, 0x0454, - 0x0468, 0x047a, 0x0488, 0x0496, 0x04a8, 0x04bc, 0x04c6, 0x04d4, - 0x04e4, 0x04fa, 0x050a, 0x0518, 0x0528, 0x0534, 0x0546, 0x0554, - 0x055c, 0x0570, 0x0580, 0x0590, 0x05aa, 0x05b4, 0x05c8, 0x05d6, - 0x05e2, 0x05f2, 0x0609, 0x061b, 0x062b, 0x063d, 0x064b, 0x065f, - 0x066f, 0x0681, 0x068d, 0x069d, 0x06af, 0x06c1, 0x06cb, 0x06e8, - 0x06f8, 0x0704, 0x071c, 0x073b, 0x075a, 0x0771, 0x077d, 0x078d, - 0x07a1, 0x07af, 0x07b9, 0x07c1, 0x07cf, 0x07e3, 0x07eb, 0x07f7, + 0x03f5, 0x040d, 0x0421, 0x0429, 0x043e, 0x044c, 0x0452, 0x0464, + 0x0478, 0x048a, 0x0498, 0x04a6, 0x04b8, 0x04cc, 0x04d6, 0x04e4, + 0x04f4, 0x050a, 0x051a, 0x0528, 0x0538, 0x0544, 0x0556, 0x0564, + 0x056c, 0x0580, 0x0590, 0x05a0, 0x05ba, 0x05c4, 0x05d8, 0x05e6, + 0x05f2, 0x0602, 0x0619, 0x062b, 0x063b, 0x064d, 0x065b, 0x066f, + 0x067f, 0x0691, 0x069d, 0x06ad, 0x06bf, 0x06d1, 0x06db, 0x06f8, + 0x0708, 0x0714, 0x072c, 0x074b, 0x076a, 0x0781, 0x078d, 0x0799, + 0x07ad, 0x07bb, 0x07c5, 0x07cd, 0x07db, 0x07ef, 0x07f7, 0x0803, // Entry 80 - BF - 0x07ff, 0x0815, 0x081f, 0x0837, 0x0841, 0x0851, 0x085b, 0x086f, - 0x0887, 0x0899, 0x08a5, 0x08c1, 0x08cb, 0x08dd, 0x08ed, 0x08ff, - 0x0911, 0x0919, 0x092d, 0x093d, 0x094b, 0x0955, 0x0961, 0x0973, - 0x0981, 0x098f, 0x099f, 0x09ab, 0x09bd, 0x09c9, 0x09d7, 0x09eb, - 0x09f7, 0x0a01, 0x0a0d, 0x0a19, 0x0a29, 0x0a3b, 0x0a4b, 0x0a5d, - 0x0a65, 0x0a75, 0x0a7f, 0x0a93, 0x0aa1, 0x0ab1, 0x0abb, 0x0ac5, - 0x0acd, 0x0ad9, 0x0ae3, 0x0af3, 0x0b01, 0x0b0f, 0x0b19, 0x0b27, - 0x0b31, 0x0b31, 0x0b41, 0x0b49, 0x0b51, 0x0b5f, 0x0b5f, 0x0b6f, + 0x080b, 0x0821, 0x082b, 0x0843, 0x084d, 0x085d, 0x0867, 0x087b, + 0x088b, 0x089d, 0x08a9, 0x08c5, 0x08cf, 0x08e1, 0x08f1, 0x0903, + 0x0915, 0x091d, 0x0931, 0x0941, 0x094f, 0x0959, 0x0965, 0x0977, + 0x0985, 0x0993, 0x09a3, 0x09af, 0x09c1, 0x09cd, 0x09db, 0x09ef, + 0x09fb, 0x0a05, 0x0a11, 0x0a1b, 0x0a2b, 0x0a3d, 0x0a4d, 0x0a5f, + 0x0a67, 0x0a77, 0x0a81, 0x0a95, 0x0aa3, 0x0ab3, 0x0abd, 0x0ac7, + 0x0acf, 0x0adb, 0x0ae5, 0x0af5, 0x0b03, 0x0b11, 0x0b1b, 0x0b29, + 0x0b33, 0x0b33, 0x0b43, 0x0b4b, 0x0b53, 0x0b61, 0x0b61, 0x0b71, // Entry C0 - FF - 0x0b6f, 0x0b87, 0x0ba3, 0x0baf, 0x0bc1, 0x0bcd, 0x0bcd, 0x0bdb, - 0x0bdb, 0x0be7, 0x0be7, 0x0be7, 0x0bed, 0x0bed, 0x0bfd, 0x0bfd, - 0x0c07, 0x0c13, 0x0c27, 0x0c27, 0x0c2f, 0x0c2f, 0x0c2f, 0x0c2f, - 0x0c35, 0x0c3f, 0x0c3f, 0x0c47, 0x0c47, 0x0c47, 0x0c62, 0x0c70, - 0x0c80, 0x0c88, 0x0c88, 0x0c88, 0x0c96, 0x0c96, 0x0c96, 0x0ca0, - 0x0ca0, 0x0ca8, 0x0ca8, 0x0cb8, 0x0cc8, 0x0cc8, 0x0cd8, 0x0cd8, - 0x0ce2, 0x0cf2, 0x0cf2, 0x0cfc, 0x0d0a, 0x0d12, 0x0d1c, 0x0d2a, - 0x0d32, 0x0d42, 0x0d5b, 0x0d65, 0x0d77, 0x0d83, 0x0d93, 0x0db6, + 0x0b71, 0x0b89, 0x0ba5, 0x0bb1, 0x0bc3, 0x0bcf, 0x0bcf, 0x0bdd, + 0x0bdd, 0x0bdd, 0x0be9, 0x0be9, 0x0be9, 0x0bef, 0x0bef, 0x0bff, + 0x0bff, 0x0c09, 0x0c15, 0x0c25, 0x0c25, 0x0c2d, 0x0c2d, 0x0c2d, + 0x0c2d, 0x0c33, 0x0c3d, 0x0c3d, 0x0c45, 0x0c45, 0x0c45, 0x0c60, + 0x0c6e, 0x0c7e, 0x0c86, 0x0c86, 0x0c86, 0x0c94, 0x0c94, 0x0c94, + 0x0c9e, 0x0c9e, 0x0ca6, 0x0ca6, 0x0cb6, 0x0cc6, 0x0cc6, 0x0cd6, + 0x0cd6, 0x0ce0, 0x0cf0, 0x0cf0, 0x0cfa, 0x0d08, 0x0d10, 0x0d1a, + 0x0d28, 0x0d30, 0x0d40, 0x0d59, 0x0d63, 0x0d75, 0x0d81, 0x0d91, // Entry 100 - 13F - 0x0dc4, 0x0dc4, 0x0de2, 0x0df2, 0x0e02, 0x0e0e, 0x0e18, 0x0e26, - 0x0e32, 0x0e3e, 0x0e48, 0x0e54, 0x0e5e, 0x0e76, 0x0e76, 0x0e80, - 0x0ead, 0x0eb7, 0x0ec1, 0x0ec1, 0x0ec9, 0x0ed1, 0x0ed1, 0x0ee3, - 0x0eef, 0x0f01, 0x0f2e, 0x0f2e, 0x0f3a, 0x0f3a, 0x0f42, 0x0f56, - 0x0f56, 0x0f5c, 0x0f5c, 0x0f85, 0x0f9d, 0x0f9d, 0x0fba, 0x0fd7, - 0x0fed, 0x0ff1, 0x1001, 0x1001, 0x1009, 0x1011, 0x1011, 0x1019, - 0x102d, 0x102d, 0x1054, 0x1076, 0x1076, 0x1080, 0x1092, 0x10a4, - 0x10ae, 0x10c6, 0x10e7, 0x10e7, 0x10e7, 0x10f1, 0x10fd, 0x1107, + 0x0db4, 0x0dc2, 0x0dc2, 0x0de0, 0x0e0f, 0x0e1f, 0x0e2f, 0x0e3b, + 0x0e45, 0x0e53, 0x0e5f, 0x0e6b, 0x0e75, 0x0e7f, 0x0e89, 0x0ea1, + 0x0ea1, 0x0eab, 0x0ed8, 0x0ee2, 0x0eec, 0x0ef8, 0x0f00, 0x0f08, + 0x0f08, 0x0f26, 0x0f32, 0x0f44, 0x0f71, 0x0f71, 0x0f7d, 0x0f7d, + 0x0f85, 0x0f99, 0x0f99, 0x0f9f, 0x0f9f, 0x0fc8, 0x0fe0, 0x0fe0, + 0x0ffd, 0x101d, 0x1033, 0x1037, 0x1047, 0x1047, 0x104f, 0x1057, + 0x1057, 0x105f, 0x1073, 0x1073, 0x1097, 0x10b9, 0x10b9, 0x10c3, + 0x10d5, 0x10e7, 0x10f1, 0x1109, 0x112a, 0x112a, 0x112a, 0x1134, // Entry 140 - 17F - 0x1107, 0x1117, 0x1117, 0x112b, 0x1137, 0x1141, 0x1159, 0x1159, - 0x1161, 0x1169, 0x1169, 0x1173, 0x1187, 0x1187, 0x1187, 0x1195, - 0x11a1, 0x11ad, 0x11d0, 0x11ef, 0x11ef, 0x1207, 0x1217, 0x1227, - 0x122d, 0x1237, 0x123f, 0x1251, 0x1251, 0x1259, 0x1267, 0x1283, - 0x1283, 0x128b, 0x128b, 0x1295, 0x12a1, 0x12b6, 0x12b6, 0x12b6, - 0x12b6, 0x12c8, 0x12d8, 0x12f1, 0x12ff, 0x130d, 0x1317, 0x1338, - 0x1338, 0x1338, 0x1348, 0x1352, 0x1360, 0x136a, 0x136a, 0x137a, - 0x1388, 0x1394, 0x139e, 0x13aa, 0x13b4, 0x13c6, 0x13c6, 0x13c6, + 0x1140, 0x114a, 0x114a, 0x115a, 0x115a, 0x116e, 0x117a, 0x1184, + 0x119c, 0x119c, 0x11a4, 0x11ac, 0x11b8, 0x11c2, 0x11d6, 0x11d6, + 0x11d6, 0x11e2, 0x11ee, 0x11fa, 0x1215, 0x122c, 0x122c, 0x1244, + 0x1254, 0x1264, 0x126a, 0x1274, 0x127c, 0x128e, 0x128e, 0x1296, + 0x12a4, 0x12c0, 0x12c0, 0x12c8, 0x12c8, 0x12d2, 0x12de, 0x12f3, + 0x12f3, 0x12f3, 0x12fb, 0x130d, 0x131d, 0x1338, 0x1346, 0x1354, + 0x135e, 0x137f, 0x137f, 0x137f, 0x138f, 0x1399, 0x13a7, 0x13b1, + 0x13c1, 0x13d1, 0x13df, 0x13eb, 0x13f5, 0x1401, 0x140b, 0x141d, // Entry 180 - 1BF - 0x13c6, 0x13d2, 0x13d2, 0x13dc, 0x13e4, 0x13fb, 0x13fb, 0x140e, - 0x141e, 0x1428, 0x142e, 0x1438, 0x143e, 0x143e, 0x143e, 0x144e, - 0x144e, 0x145a, 0x146a, 0x1478, 0x1488, 0x1498, 0x1498, 0x14a2, - 0x14ae, 0x14b8, 0x14c0, 0x14d0, 0x14fd, 0x1510, 0x1518, 0x1524, - 0x1536, 0x154a, 0x155a, 0x1566, 0x156e, 0x156e, 0x157c, 0x1592, - 0x159a, 0x15b0, 0x15be, 0x15be, 0x15be, 0x15c8, 0x15dc, 0x15dc, - 0x15f6, 0x15fe, 0x1614, 0x1624, 0x162c, 0x1638, 0x1638, 0x1644, - 0x1644, 0x164e, 0x166a, 0x166a, 0x1670, 0x1687, 0x168f, 0x16b0, + 0x141d, 0x141d, 0x141d, 0x1429, 0x1429, 0x1433, 0x143b, 0x1452, + 0x1452, 0x1465, 0x1475, 0x147f, 0x1485, 0x148d, 0x1493, 0x1493, + 0x1493, 0x14a3, 0x14a3, 0x14af, 0x14bf, 0x14cd, 0x14dd, 0x14ed, + 0x14ed, 0x14f7, 0x1503, 0x150d, 0x1515, 0x1525, 0x1552, 0x1565, + 0x156d, 0x1579, 0x158f, 0x15a3, 0x15b3, 0x15bf, 0x15c7, 0x15c7, + 0x15d5, 0x15eb, 0x15f3, 0x1609, 0x1617, 0x1617, 0x1617, 0x1621, + 0x1633, 0x1633, 0x164d, 0x1655, 0x166b, 0x167b, 0x1683, 0x168f, + 0x168f, 0x169b, 0x16ab, 0x16b5, 0x16cf, 0x16cf, 0x16d5, 0x16ec, // Entry 1C0 - 1FF - 0x16c0, 0x16d0, 0x16da, 0x16e4, 0x16f0, 0x170f, 0x1723, 0x1739, - 0x1749, 0x175d, 0x176b, 0x176b, 0x176b, 0x176b, 0x1787, 0x1787, - 0x179b, 0x179b, 0x179b, 0x17ad, 0x17ad, 0x17c5, 0x17cd, 0x17cd, - 0x17e5, 0x17f4, 0x1808, 0x1808, 0x1808, 0x1812, 0x182b, 0x182b, - 0x182b, 0x182b, 0x183d, 0x1843, 0x184f, 0x185d, 0x1888, 0x1896, - 0x18a0, 0x18ae, 0x18ae, 0x18ae, 0x18b8, 0x18ce, 0x18e2, 0x18e2, - 0x18f8, 0x18f8, 0x1900, 0x1900, 0x190c, 0x1927, 0x1943, 0x1943, - 0x1953, 0x1959, 0x1959, 0x1965, 0x1965, 0x1965, 0x197b, 0x1992, + 0x16f4, 0x1715, 0x1725, 0x1735, 0x173f, 0x1749, 0x1757, 0x1776, + 0x178a, 0x1798, 0x17a8, 0x17bc, 0x17ca, 0x17ca, 0x17eb, 0x17eb, + 0x17eb, 0x1807, 0x1807, 0x181b, 0x181b, 0x181b, 0x182b, 0x1837, + 0x1859, 0x1861, 0x1861, 0x1879, 0x1888, 0x189a, 0x189a, 0x189a, + 0x18a4, 0x18b0, 0x18b0, 0x18b0, 0x18b0, 0x18c2, 0x18c8, 0x18d6, + 0x18e4, 0x190f, 0x191d, 0x1927, 0x1935, 0x1935, 0x1943, 0x194d, + 0x1963, 0x1977, 0x1977, 0x198d, 0x198d, 0x1995, 0x1995, 0x19a1, + 0x19bc, 0x19d8, 0x19d8, 0x19e8, 0x19ee, 0x19ee, 0x19fa, 0x19fa, // Entry 200 - 23F - 0x19ab, 0x19c4, 0x19d2, 0x19e4, 0x19fb, 0x1a05, 0x1a05, 0x1a05, - 0x1a11, 0x1a19, 0x1a29, 0x1a39, 0x1a5e, 0x1a6e, 0x1a6e, 0x1a6e, - 0x1a78, 0x1a80, 0x1a8c, 0x1a96, 0x1aa0, 0x1aa6, 0x1aba, 0x1aba, - 0x1ac8, 0x1ad6, 0x1ad6, 0x1ae4, 0x1afb, 0x1b0c, 0x1b0c, 0x1b0c, - 0x1b0c, 0x1b20, 0x1b20, 0x1b2e, 0x1b44, 0x1b52, 0x1b62, 0x1b93, - 0x1ba5, 0x1bb7, 0x1bc5, 0x1bcd, 0x1bd3, 0x1bd3, 0x1bd3, 0x1bd3, - 0x1bd3, 0x1bdd, 0x1bdd, 0x1be9, 0x1be9, 0x1bf5, 0x1bff, 0x1c07, - 0x1c15, 0x1c15, 0x1c21, 0x1c21, 0x1c29, 0x1c2d, 0x1c37, 0x1c37, + 0x19fa, 0x1a10, 0x1a27, 0x1a40, 0x1a59, 0x1a67, 0x1a79, 0x1a90, + 0x1a9a, 0x1aa2, 0x1aa2, 0x1aae, 0x1ab6, 0x1ac6, 0x1ad6, 0x1afb, + 0x1b0b, 0x1b0b, 0x1b0b, 0x1b15, 0x1b1d, 0x1b29, 0x1b33, 0x1b3d, + 0x1b43, 0x1b57, 0x1b57, 0x1b6b, 0x1b79, 0x1b79, 0x1b87, 0x1b9e, + 0x1baf, 0x1baf, 0x1bbb, 0x1bbb, 0x1bcf, 0x1bcf, 0x1bdd, 0x1bf3, + 0x1c01, 0x1c11, 0x1c42, 0x1c54, 0x1c66, 0x1c74, 0x1c7c, 0x1c82, + 0x1c82, 0x1c82, 0x1c82, 0x1c82, 0x1c8c, 0x1c8c, 0x1c98, 0x1cb7, + 0x1cc3, 0x1ccd, 0x1cd5, 0x1ce3, 0x1ce3, 0x1cef, 0x1cef, 0x1cf7, // Entry 240 - 27F - 0x1c37, 0x1c37, 0x1c49, 0x1c57, 0x1c6e, 0x1c6e, 0x1c7a, 0x1cb4, - 0x1cbc, 0x1cf0, 0x1cf8, 0x1d30, 0x1d30, 0x1d30, 0x1d30, 0x1d30, - 0x1d30, 0x1d30, 0x1d4b, 0x1d4b, 0x1d4b, 0x1d4b, 0x1d4b, 0x1d4b, - 0x1d4b, 0x1d67, 0x1d7b, 0x1d7b, 0x1d7b, 0x1d8d, 0x1da9, 0x1dcc, -} // Size: 1240 bytes - -var bnLangStr string = "" + // Size: 11932 bytes - "আফারআবখাজিয়ানআবেস্তীয়আফ্রিকান্সআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মা" + - "রাআজারবাইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটন" + - "বসনীয়ানকাতালানচেচেনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশ" + - "জার্মানদিবেহিজোঙ্গাইউয়িগ্রিকইংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফ" + - "ার্সিফুলাহ্ফিনিশফিজিআনফারোসফরাসিপশ্চিম ফ্রিসিআনআইরিশস্কটস-গ্যেলিকগ্যাল" + + 0x1cfb, 0x1d05, 0x1d11, 0x1d1b, 0x1d1b, 0x1d2d, 0x1d3b, 0x1d52, + 0x1d52, 0x1d5e, 0x1d98, 0x1da0, 0x1dd4, 0x1ddc, 0x1e14, 0x1e14, + 0x1e14, 0x1e14, 0x1e14, 0x1e14, 0x1e14, 0x1e2f, 0x1e2f, 0x1e2f, + 0x1e2f, 0x1e2f, 0x1e2f, 0x1e2f, 0x1e4b, 0x1e5f, 0x1e5f, 0x1e5f, + 0x1e71, 0x1e8d, 0x1eb0, 0x1ed3, +} // Size: 1248 bytes + +const bnLangStr string = "" + // Size: 12336 bytes + "আফারআবখাজিয়ানআবেস্তীয়আফ্রিকানআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মারা" + + "আজারবাইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটনবস" + + "নীয়ানকাতালানচেচেনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশজা" + + "র্মানদিবেহিজোঙ্গাইউয়িগ্রিকইংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফার" + + "্সিফুলাহ্ফিনিশফিজিআনফারোসফরাসিপশ্চিম ফ্রিসিয়ানআইরিশস্কটস-গ্যেলিকগ্যাল" + "িশিয়গুয়ারানিগুজরাটিম্যাঙ্কসহাউসাহিব্রুহিন্দিহিরি মোতুক্রোয়েশীয়হাইত" + "িয়ানহাঙ্গেরীয়আর্মেনিয়হেরেরোইন্টারলিঙ্গুয়াইন্দোনেশীয়ইন্টারলিঙ্গইগ্" + - "\u200cবোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালীয়ইনুক্টিটুটজাপানিজাভা" + - "নিজজর্জিয়ানকঙ্গোকিকুয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকান্নাড়ীকোর" + - "িয়ানকানুরিকাশ্মীরীকুর্দিশকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গান্ডাল" + - "িম্বুর্গিশলিঙ্গালালাওলিথুয়েনীয়লুবা-কাটাঙ্গালাত্\u200cভীয়মালাগাসিমার" + - "্শালিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্গোলিয়মারাঠিমালয়মল্টিয়বর্মিনাউরু" + - "উত্তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান নিনর্স্কনরওয়েজিয়ান বোক" + - "মালদক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড়িয়াওসেটিকপাঞ" + - "্জাবীপালিপোলিশপাশ্তুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়ারোয়া" + - "ন্ডাসংষ্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভাকস্লো" + - "ভেনীয়সামোয়ানশোনাসোমালীআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুন্দানীসুইড" + - "িশসোয়াহিলিতামিলতেলেগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্কীস" + - "ঙ্গাতাতারতাহিতিয়ানউইঘুরইউক্রেনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলাপুক" + - "ওয়ালুনউওলোফজোসায়িদ্দিশইওরুবাঝু্য়াঙচীনাজুলুঅ্যাচাইনিজআকোলিঅদাগ্মেআদে" + - "গেআফ্রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ্রাচীন ইংরেজীআঙ্গিকাআর" + - "ামাইকমাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয়বাসাবেজাবেম" + - "্বাবেনাপশ্চিম বালোচিভোজপুরিবিকোলবিনিসিকসিকাব্রাজবোড়োবুরিয়াতবুগিনিব্ল" + - "িনক্যাডোক্যারিবআত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক জার্গনচকটো" + - "ওচিপেওয়ানচেরোকীশাইয়েনসোরানি কুর্দিশকপটিকক্রিমিয়ান তুর্কিকাশুবিয়ানড" + - "াকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্যাভদোগ্রীবডিংকাজার্মাডোগরিনিম্নতর সোর্" + - "বিয়ানদুয়ালামধ্য ডাচজলা-ফনীডিউলাএম্বুএফিকপ্রাচীন মিশরীয়ইকাজুকএলামাইট" + - "মধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনমধ্য ফরাসিপ্রাচীন ফরাসিউত্তরাঞ্চলীয়" + - " ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউলিয়ানগাগাগাউজগায়োবায়াগীজগিলবার্টিজমধ্য-" + - "উচ্চ জার্মানিপ্রাচীন উচ্চ জার্মানিগোন্ডিগোরোন্তালোগথিকগ্রেবোপ্রাচীন গ্" + - "রীকসুইস জার্মানগুসীগওইচ্’ইনহাইডাহাওয়াইয়ানহিলিগ্যায়নোনহিট্টিটহ্" + - "\u200cমোঙউচ্চ সোর্বিয়ানহুপাইবানইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্স" + - "িজুদেও আরবিকারা-কাল্পাককাবাইলেকাচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপম" + - "াকোন্দেকাবুভারদিয়ানুকোরোখাশিখোটানিজকোয়রা চীনিকালেনজিনকিম্বুন্দুকমি-প" + - "ারমিআককোঙ্কানিকোস্রাইনক্\u200cপেল্লেকারচে-বাল্কারকারেলিয়ানকুরুখশাম্বা" + - "লাবাফিয়াকুমিককুটেনাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ্গোলোজি" + - "উত্তর লুরিলুবা-লুলুয়ালুইসেনোলুন্ডালুয়োলুশাইলুইয়ামাদুরেসেমাগাহিমৈথিল" + - "িম্যাকাসারম্যান্ডিঙ্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়ানমধ্য আইরিশ" + - "মাখুয়া-মেত্তোমেটামিকম্যাকমিনাঙ্গ্\u200cকাবাউমাঞ্চুমণিপুরীমোহাওকমসিমুদ" + - "াঙ্গবহুগুণিতক ভাষাসমূহক্রিকমিরান্ডিজমারোয়ারিএরজিয়ামাজানদেরানিনেয়াপো" + - "লিটাননামানিম্ন জার্মানিনেওয়ারিনিয়াসনিউয়ানকোয়াসিওনোগাইপ্রাচীন নর্সএ" + - "ন’কোউত্তরাঞ্চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়ামওয়েজিন্যায়াঙ্কোল" + - "েন্যোরোএন্.জিমাওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম্পাঙ্গাপাপিয়ামে" + - "ন্টোপালায়ুয়ানপ্রাচীন ফার্সিফোনিশীয়ানপোহ্নপেইয়ানপ্রাচীন প্রোভেনসালক" + - "ি‘চেরাজস্থানীরাপানুইরারোটোংগানরম্বোরোমানিআরমেনিয়ানরাওয়াস্যান্ডাওয়েই" + - "য়াকুটসামারিটান আরামিকসামবুরুসাসাকসাঁওতালিসাঙ্গুসিসিলিয়ানস্কটসদক্ষিণ " + - "কুর্দিশসেনাসেল্কুপকোয়রাবেনো সেন্নীপ্রাচীন আইরিশতাচেলহিতশানসিডামোদক্ষি" + - "ণাঞ্চলীয় সামিলুলে সামিইনারি সামিস্কোল্ট সামিসোনিঙ্কেসোগডিয়ানস্রানান " + - "টোঙ্গোসেরেরসুকুমাসুসুসুমেরীয়প্রাচীন সিরিওসিরিয়াকটাইম্নেতেসোতেরেনোতেত" + - "ুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামাশেকনায়াসা টোঙ্গাটোক পিসিনসিমশ" + - "িয়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনিয়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্ট" + - "উগারিটিকউম্বুন্দুমূলভাইভোটিকভুঞ্জোওয়ালামোওয়ারেওয়াশোওয়ার্লপিরিকাল্ম" + - "ইকসোগাইয়াওইয়াপেসেজাপোটেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন তামাজিগাতজুনিভ" + - "াষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়ান জার্মানসুইস " + - "হাই জার্মানঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরেজিআমেরিকার ইংর" + - "েজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান স্প্যানিশকা" + - "নাডীয় ফরাসিসুইস ফরাসিলো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগীজইউরোপের পর্ত" + - "ুগীজমলদাভিয়সার্বো-ক্রোয়েশিয়কঙ্গো সোয়াহিলিসরলীকৃত চীনাঐতিহ্যবাহি চী" + - "না" - -var bnLangIdx = []uint16{ // 610 elements + "\u200cবোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালিয়ইনুক্টিটুটজাপানিজাভা" + + "নিজজর্জিয়ানকঙ্গোকিকুয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকন্নড়কোরিয়" + + "ানকানুরিকাশ্মীরিকুর্দিশকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গান্ডালিম্" + + "বুর্গিশলিঙ্গালালাওলিথুয়েনীয়লুবা-কাটাঙ্গালাত্\u200cভীয়মালাগাসিমার্শা" + + "লিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্গোলিয়মারাঠিমালয়মল্টিয়বর্মিনাউরুউত্" + + "তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান নিনর্স্কনরওয়েজিয়ান বোকমাল" + + "দক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড়িয়াওসেটিকপাঞ্জা" + + "বীপালিপোলিশপাশ্তুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়ারোয়ান্ড" + + "াসংস্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভাকস্লোভেন" + + "ীয়সামোয়ানশোনাসোমালিআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুদানীসুইডিশসোয" + + "়াহিলিতামিলতেলেগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্কীসঙ্গাত" + + "াতারতাহিতিয়ানউইঘুরইউক্রেনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলাপুকওয়াল" + + "ুনউওলোফজোসায়িদ্দিশইওরুবাঝু্য়াঙচীনাজুলুঅ্যাচাইনিজআকোলিঅদাগ্মেআদেগেআফ্" + + "রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ্রাচীন ইংরেজীআঙ্গিকাআরামাইক" + + "মাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয়বাসাবেজাবেম্বাবে" + + "নাপশ্চিম বালোচিভোজপুরিবিকোলবিনিসিকসিকাব্রাজবোড়োবুরিয়াতবুগিনিব্লিনক্য" + + "াডোক্যারিবআত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক জার্গনচকটোওচিপে" + + "ওয়ানচেরোকীশাইয়েনমধ্য কুর্দিশকপটিকক্রিমিয়ান তুর্কিসেসেলওয়া ক্রেওল ফ" + + "্রেঞ্চকাশুবিয়ানডাকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্যাভদোগ্রীবডিংকাজার্মা" + + "ডোগরিনিম্নতর সোর্বিয়ানদুয়ালামধ্য ডাচজলা-ফনীডিউলাদাগাজাএম্বুএফিকপ্রাচ" + + "ীন মিশরীয়ইকাজুকএলামাইটমধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনমধ্য ফরাসিপ্র" + + "াচীন ফরাসিউত্তরাঞ্চলীয় ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউলিয়ানগাগাগাউজgan" + + "গায়োবায়াগীজগিলবার্টিজমধ্য-উচ্চ জার্মানিপ্রাচীন উচ্চ জার্মানিগোন্ডিগো" + + "রোন্তালোগথিকগ্রেবোপ্রাচীন গ্রীকসুইস জার্মানগুসীগওইচ্’ইনহাইডাhakহাওয়াই" + + "য়ানহিলিগ্যায়নোনহিট্টিটহ্\u200cমোঙউচ্চ সোর্বিয়ানXiang চীনাহুপাইবানইব" + + "িবিওইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্সিজুদেও আরবিকারা-কাল্পাককাব" + + "াইলেকাচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপমাকোন্দেকাবুভারদিয়ানুকোরোখ" + + "াশিখোটানিজকোয়রা চীনিকাকোকালেনজিনকিম্বুন্দুকমি-পারমিআককোঙ্কানিকোস্রাইন" + + "ক্\u200cপেল্লেকারচে-বাল্কারকারেলিয়ানকুরুখশাম্বালাবাফিয়াকল্শকুমিককুটে" + + "নাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ্গোলোজিউত্তর লুরিলুবা-লুল" + + "ুয়ালুইসেনোলুন্ডালুয়োমিজোলুইয়ামাদুরেসেমাগাহিমৈথিলিম্যাকাসারম্যান্ডিঙ" + + "্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়ানমধ্য আইরিশমাখুয়া-মেত্তোমেটাম" + + "িকম্যাকমিনাঙ্গ্\u200cকাবাউমাঞ্চুমণিপুরীমোহাওকমসিমুদাঙ্গএকাধিক ভাষাক্রি" + + "কমিরান্ডিজমারোয়ারিএরজিয়ামাজানদেরানিnanনেয়াপোলিটাননামানিম্ন জার্মানি" + + "নেওয়ারিনিয়াসনিউয়ানকোয়াসিওনিঙ্গেম্বুননোগাইপ্রাচীন নর্সএন’কোউত্তরাঞ্" + + "চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়ামওয়েজিন্যায়াঙ্কোলেন্যোরোএনজিম" + + "াওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম্পাঙ্গাপাপিয়ামেন্টোপালায়ুয়া" + + "ননাজেরিয় পিজিনপ্রাচীন ফার্সিফোনিশীয়ানপোহ্নপেইয়ানপ্রুশিয়ানপ্রাচীন প" + + "্রোভেনসালকি‘চেরাজস্থানীরাপানুইরারোটোংগানরম্বোরোমানিআরমেনিয়ানরাওয়াস্য" + + "ান্ডাওয়েশাখাসামারিটান আরামিকসামবুরুসাসাকসাঁওতালিন্যাগাম্বেসাঙ্গুসিসিল" + + "িয়ানস্কটসদক্ষিণ কুর্দিশসেনাসেল্কুপকোয়রাবেনো সেন্নীপ্রাচীন আইরিশতাচেল" + + "হিতশানসিডামোদক্ষিণাঞ্চলীয় সামিলুলে সামিইনারি সামিস্কোল্ট সামিসোনিঙ্কে" + + "সোগডিয়ানস্রানান টোঙ্গোসেরেরসাহোসুকুমাসুসুসুমেরীয়কমোরিয়ানপ্রাচীন সির" + + "িওসিরিয়াকটাইম্নেতেসোতেরেনোতেতুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামা" + + "শেকনায়াসা টোঙ্গাটোক পিসিনতারোকোসিমশিয়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনি" + + "য়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্টউগারিটিকউম্বুন্দুমূলভাইভোটিকভুঞ্জো" + + "ওয়ালসেরওয়ালামোওয়ারেওয়াশোওয়ার্লপিরিWu চীনাকাল্মইকসোগাইয়াওইয়াপেসে" + + "য়াঙ্গবেনয়েম্বাক্যানটোনীজজাপোটেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন তামাজিগ" + + "াতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়ান জার্ম" + + "ানসুইস হাই জার্মানঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরেজিআমেরি" + + "কার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান স্প্" + + "যানিশকানাডীয় ফরাসিসুইস ফরাসিলো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগীজইউরোপ" + + "ের পর্তুগীজমলদাভিয়সার্বো-ক্রোয়েশিয়কঙ্গো সোয়াহিলিসরলীকৃত চীনাঐতিহ্য" + + "বাহি চীনা" + +var bnLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x000c, 0x002a, 0x0045, 0x0063, 0x006f, 0x0084, 0x009c, - 0x00a8, 0x00b7, 0x00c9, 0x00de, 0x00ff, 0x0111, 0x012f, 0x014a, - 0x015f, 0x0174, 0x0183, 0x0198, 0x01aa, 0x01c2, 0x01d7, 0x01e6, - 0x01f8, 0x0210, 0x021c, 0x0225, 0x024a, 0x0259, 0x026b, 0x027a, - 0x028f, 0x02a1, 0x02b3, 0x02c2, 0x02d1, 0x02e3, 0x0304, 0x031f, - 0x033a, 0x0349, 0x035b, 0x036d, 0x037c, 0x038e, 0x039d, 0x03ac, + 0x0000, 0x000c, 0x002a, 0x0045, 0x005d, 0x0069, 0x007e, 0x0096, + 0x00a2, 0x00b1, 0x00c3, 0x00d8, 0x00f9, 0x010b, 0x0129, 0x0144, + 0x0159, 0x016e, 0x017d, 0x0192, 0x01a4, 0x01bc, 0x01d1, 0x01e0, + 0x01f2, 0x020a, 0x0216, 0x021f, 0x0244, 0x0253, 0x0265, 0x0274, + 0x0289, 0x029b, 0x02ad, 0x02bc, 0x02cb, 0x02dd, 0x02fe, 0x0319, + 0x0334, 0x0343, 0x0355, 0x0367, 0x0376, 0x0388, 0x0397, 0x03a6, 0x03d7, 0x03e6, 0x040b, 0x0429, 0x0444, 0x0459, 0x0471, 0x0480, 0x0492, 0x04a4, 0x04bd, 0x04de, 0x04f9, 0x0517, 0x0532, 0x0544, // Entry 40 - 7F 0x0571, 0x0592, 0x05b3, 0x05c5, 0x05e7, 0x0602, 0x060b, 0x0632, 0x0647, 0x0665, 0x0677, 0x068c, 0x06a7, 0x06b6, 0x06cb, 0x06ef, - 0x06fe, 0x0725, 0x0731, 0x074c, 0x0764, 0x0776, 0x078e, 0x07a3, - 0x07af, 0x07c1, 0x07d6, 0x07e5, 0x0812, 0x0824, 0x0845, 0x085d, - 0x0866, 0x0887, 0x08ac, 0x08c7, 0x08df, 0x08fa, 0x0909, 0x092d, - 0x094b, 0x0966, 0x0978, 0x0987, 0x099c, 0x09ab, 0x09ba, 0x09e5, - 0x09f7, 0x0a12, 0x0a1b, 0x0a58, 0x0a8f, 0x0aba, 0x0acc, 0x0ae7, - 0x0aff, 0x0b17, 0x0b26, 0x0b3b, 0x0b4d, 0x0b65, 0x0b71, 0x0b80, + 0x06fe, 0x0725, 0x0731, 0x0743, 0x075b, 0x076d, 0x0785, 0x079a, + 0x07a6, 0x07b8, 0x07cd, 0x07dc, 0x0809, 0x081b, 0x083c, 0x0854, + 0x085d, 0x087e, 0x08a3, 0x08be, 0x08d6, 0x08f1, 0x0900, 0x0924, + 0x0942, 0x095d, 0x096f, 0x097e, 0x0993, 0x09a2, 0x09b1, 0x09dc, + 0x09ee, 0x0a09, 0x0a12, 0x0a4f, 0x0a86, 0x0ab1, 0x0ac3, 0x0ade, + 0x0af6, 0x0b0e, 0x0b1d, 0x0b32, 0x0b44, 0x0b5c, 0x0b68, 0x0b77, // Entry 80 - BF - 0x0b92, 0x0baa, 0x0bbf, 0x0bd4, 0x0be6, 0x0bfe, 0x0c07, 0x0c34, - 0x0c49, 0x0c6d, 0x0c7f, 0x0cb3, 0x0cc5, 0x0cd7, 0x0cec, 0x0d0a, - 0x0d22, 0x0d2e, 0x0d40, 0x0d58, 0x0d70, 0x0d85, 0x0da4, 0x0dbc, - 0x0dce, 0x0de9, 0x0df8, 0x0e0a, 0x0e19, 0x0e22, 0x0e40, 0x0e5b, - 0x0e70, 0x0e85, 0x0e97, 0x0ea6, 0x0eb5, 0x0ed3, 0x0ee2, 0x0f00, - 0x0f0f, 0x0f27, 0x0f39, 0x0f57, 0x0f6c, 0x0f81, 0x0f90, 0x0f9c, - 0x0fb4, 0x0fc6, 0x0fdb, 0x0fe7, 0x0ff3, 0x1011, 0x1020, 0x1035, - 0x1044, 0x1044, 0x105f, 0x106b, 0x1077, 0x1098, 0x1098, 0x10a7, + 0x0b89, 0x0ba1, 0x0bb6, 0x0bcb, 0x0bdd, 0x0bf5, 0x0bfe, 0x0c2b, + 0x0c40, 0x0c64, 0x0c76, 0x0caa, 0x0cbc, 0x0cce, 0x0ce3, 0x0d01, + 0x0d19, 0x0d25, 0x0d37, 0x0d4f, 0x0d67, 0x0d7c, 0x0d9b, 0x0dad, + 0x0dbf, 0x0dda, 0x0de9, 0x0dfb, 0x0e0a, 0x0e13, 0x0e31, 0x0e4c, + 0x0e61, 0x0e76, 0x0e88, 0x0e97, 0x0ea6, 0x0ec4, 0x0ed3, 0x0ef1, + 0x0f00, 0x0f18, 0x0f2a, 0x0f48, 0x0f5d, 0x0f72, 0x0f81, 0x0f8d, + 0x0fa5, 0x0fb7, 0x0fcc, 0x0fd8, 0x0fe4, 0x1002, 0x1011, 0x1026, + 0x1035, 0x1035, 0x1050, 0x105c, 0x1068, 0x1089, 0x1089, 0x1098, // Entry C0 - FF - 0x10a7, 0x10c9, 0x10f1, 0x1106, 0x111b, 0x112d, 0x112d, 0x1142, - 0x1142, 0x115a, 0x115a, 0x115a, 0x1163, 0x1163, 0x117e, 0x117e, - 0x1193, 0x11a5, 0x11bd, 0x11bd, 0x11c9, 0x11c9, 0x11c9, 0x11c9, - 0x11d5, 0x11e7, 0x11e7, 0x11f3, 0x11f3, 0x11f3, 0x1218, 0x122d, - 0x123c, 0x1248, 0x1248, 0x1248, 0x125d, 0x125d, 0x125d, 0x126c, - 0x126c, 0x127b, 0x127b, 0x1293, 0x12a5, 0x12a5, 0x12b4, 0x12b4, - 0x12c6, 0x12db, 0x12db, 0x12ed, 0x1308, 0x1314, 0x1323, 0x1338, - 0x1344, 0x1350, 0x1372, 0x1381, 0x139c, 0x13ae, 0x13c3, 0x13eb, + 0x1098, 0x10ba, 0x10e2, 0x10f7, 0x110c, 0x111e, 0x111e, 0x1133, + 0x1133, 0x1133, 0x114b, 0x114b, 0x114b, 0x1154, 0x1154, 0x116f, + 0x116f, 0x1184, 0x1196, 0x11ae, 0x11ae, 0x11ba, 0x11ba, 0x11ba, + 0x11ba, 0x11c6, 0x11d8, 0x11d8, 0x11e4, 0x11e4, 0x11e4, 0x1209, + 0x121e, 0x122d, 0x1239, 0x1239, 0x1239, 0x124e, 0x124e, 0x124e, + 0x125d, 0x125d, 0x126c, 0x126c, 0x1284, 0x1296, 0x1296, 0x12a5, + 0x12a5, 0x12b7, 0x12cc, 0x12cc, 0x12de, 0x12f9, 0x1305, 0x1314, + 0x1329, 0x1335, 0x1341, 0x1363, 0x1372, 0x138d, 0x139f, 0x13b4, // Entry 100 - 13F - 0x13fa, 0x13fa, 0x142b, 0x1449, 0x145b, 0x1476, 0x1485, 0x14a0, - 0x14b5, 0x14ca, 0x14d9, 0x14eb, 0x14fa, 0x152e, 0x152e, 0x1543, - 0x1559, 0x156c, 0x157b, 0x157b, 0x158a, 0x1596, 0x1596, 0x15c1, - 0x15d3, 0x15e8, 0x1607, 0x1607, 0x1619, 0x1619, 0x162e, 0x1646, - 0x1646, 0x164c, 0x164c, 0x1668, 0x168d, 0x168d, 0x16d3, 0x16fb, - 0x171c, 0x1722, 0x1734, 0x1734, 0x1743, 0x1752, 0x1752, 0x175b, - 0x1779, 0x1779, 0x17ab, 0x17e6, 0x17e6, 0x17f8, 0x1816, 0x1822, - 0x1834, 0x1859, 0x187b, 0x187b, 0x187b, 0x1887, 0x189f, 0x18ae, + 0x13d6, 0x13e5, 0x13e5, 0x1416, 0x145a, 0x1478, 0x148a, 0x14a5, + 0x14b4, 0x14cf, 0x14e4, 0x14f9, 0x1508, 0x151a, 0x1529, 0x155d, + 0x155d, 0x1572, 0x1588, 0x159b, 0x15aa, 0x15bc, 0x15cb, 0x15d7, + 0x15d7, 0x1602, 0x1614, 0x1629, 0x1648, 0x1648, 0x165a, 0x165a, + 0x166f, 0x1687, 0x1687, 0x168d, 0x168d, 0x16a9, 0x16ce, 0x16ce, + 0x1714, 0x173c, 0x175d, 0x1763, 0x1775, 0x1778, 0x1787, 0x1796, + 0x1796, 0x179f, 0x17bd, 0x17bd, 0x17ef, 0x182a, 0x182a, 0x183c, + 0x185a, 0x1866, 0x1878, 0x189d, 0x18bf, 0x18bf, 0x18bf, 0x18cb, // Entry 140 - 17F - 0x18ae, 0x18cf, 0x18cf, 0x18f6, 0x190b, 0x191d, 0x1948, 0x1948, - 0x1954, 0x1960, 0x1960, 0x196f, 0x1981, 0x1981, 0x1981, 0x1993, - 0x19a5, 0x19b7, 0x19d9, 0x19f5, 0x19f5, 0x1a17, 0x1a2c, 0x1a3b, - 0x1a4a, 0x1a5c, 0x1a68, 0x1a8c, 0x1a8c, 0x1aa1, 0x1ab9, 0x1ae3, - 0x1ae3, 0x1aef, 0x1aef, 0x1afb, 0x1b10, 0x1b2f, 0x1b2f, 0x1b2f, - 0x1b2f, 0x1b47, 0x1b65, 0x1b84, 0x1b9c, 0x1bb4, 0x1bcf, 0x1bf4, - 0x1bf4, 0x1bf4, 0x1c12, 0x1c21, 0x1c39, 0x1c4e, 0x1c4e, 0x1c5d, - 0x1c72, 0x1c84, 0x1c96, 0x1ca8, 0x1cba, 0x1cd5, 0x1cd5, 0x1cd5, + 0x18e3, 0x18f2, 0x18f5, 0x1916, 0x1916, 0x193d, 0x1952, 0x1964, + 0x198f, 0x19a1, 0x19ad, 0x19b9, 0x19cb, 0x19da, 0x19ec, 0x19ec, + 0x19ec, 0x19fe, 0x1a10, 0x1a22, 0x1a44, 0x1a60, 0x1a60, 0x1a82, + 0x1a97, 0x1aa6, 0x1ab5, 0x1ac7, 0x1ad3, 0x1af7, 0x1af7, 0x1b0c, + 0x1b24, 0x1b4e, 0x1b4e, 0x1b5a, 0x1b5a, 0x1b66, 0x1b7b, 0x1b9a, + 0x1b9a, 0x1b9a, 0x1ba6, 0x1bbe, 0x1bdc, 0x1bfb, 0x1c13, 0x1c2b, + 0x1c46, 0x1c6b, 0x1c6b, 0x1c6b, 0x1c89, 0x1c98, 0x1cb0, 0x1cc5, + 0x1cd1, 0x1ce0, 0x1cf5, 0x1d07, 0x1d19, 0x1d2b, 0x1d3d, 0x1d58, // Entry 180 - 1BF - 0x1cd5, 0x1ce7, 0x1ce7, 0x1cf9, 0x1d05, 0x1d21, 0x1d21, 0x1d43, - 0x1d58, 0x1d6a, 0x1d79, 0x1d88, 0x1d9a, 0x1d9a, 0x1d9a, 0x1db2, - 0x1db2, 0x1dc4, 0x1dd6, 0x1df1, 0x1e15, 0x1e24, 0x1e24, 0x1e33, - 0x1e4e, 0x1e60, 0x1e6c, 0x1e87, 0x1ea3, 0x1ecb, 0x1ed7, 0x1eef, - 0x1f19, 0x1f2b, 0x1f40, 0x1f52, 0x1f5b, 0x1f5b, 0x1f70, 0x1fa4, - 0x1fb3, 0x1fce, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ffe, 0x201f, 0x201f, - 0x2043, 0x204f, 0x2077, 0x208f, 0x20a1, 0x20b6, 0x20b6, 0x20ce, - 0x20ce, 0x20dd, 0x20ff, 0x20ff, 0x210e, 0x2142, 0x2154, 0x2182, + 0x1d58, 0x1d58, 0x1d58, 0x1d6a, 0x1d6a, 0x1d7c, 0x1d88, 0x1da4, + 0x1da4, 0x1dc6, 0x1ddb, 0x1ded, 0x1dfc, 0x1e08, 0x1e1a, 0x1e1a, + 0x1e1a, 0x1e32, 0x1e32, 0x1e44, 0x1e56, 0x1e71, 0x1e95, 0x1ea4, + 0x1ea4, 0x1eb3, 0x1ece, 0x1ee0, 0x1eec, 0x1f07, 0x1f23, 0x1f4b, + 0x1f57, 0x1f6f, 0x1f99, 0x1fab, 0x1fc0, 0x1fd2, 0x1fdb, 0x1fdb, + 0x1ff0, 0x200f, 0x201e, 0x2039, 0x2054, 0x2054, 0x2054, 0x2069, + 0x208a, 0x208d, 0x20b1, 0x20bd, 0x20e5, 0x20fd, 0x210f, 0x2124, + 0x2124, 0x213c, 0x215d, 0x216c, 0x218e, 0x218e, 0x219d, 0x21d1, // Entry 1C0 - 1FF - 0x21ac, 0x21d3, 0x21e5, 0x21fb, 0x2207, 0x222c, 0x224d, 0x2265, - 0x2283, 0x22aa, 0x22cb, 0x22cb, 0x22cb, 0x22cb, 0x22f3, 0x22f3, - 0x2311, 0x2311, 0x2311, 0x2335, 0x2335, 0x2369, 0x2378, 0x2378, - 0x2393, 0x23a8, 0x23c6, 0x23c6, 0x23c6, 0x23d5, 0x23e7, 0x23e7, - 0x23e7, 0x23e7, 0x2405, 0x2417, 0x243b, 0x2450, 0x247e, 0x2493, - 0x24a2, 0x24ba, 0x24ba, 0x24ba, 0x24cc, 0x24ea, 0x24f9, 0x24f9, - 0x2521, 0x2521, 0x252d, 0x252d, 0x2542, 0x2573, 0x2598, 0x2598, - 0x25b0, 0x25b9, 0x25b9, 0x25cb, 0x25cb, 0x25cb, 0x2602, 0x261b, + 0x21e3, 0x2211, 0x223b, 0x2262, 0x2274, 0x2286, 0x2292, 0x22b7, + 0x22d8, 0x22f0, 0x230e, 0x2335, 0x2356, 0x2356, 0x237e, 0x237e, + 0x237e, 0x23a6, 0x23a6, 0x23c4, 0x23c4, 0x23c4, 0x23e8, 0x2406, + 0x243a, 0x2449, 0x2449, 0x2464, 0x2479, 0x2497, 0x2497, 0x2497, + 0x24a6, 0x24b8, 0x24b8, 0x24b8, 0x24b8, 0x24d6, 0x24e8, 0x250c, + 0x2518, 0x2546, 0x255b, 0x256a, 0x2582, 0x2582, 0x25a0, 0x25b2, + 0x25d0, 0x25df, 0x25df, 0x2607, 0x2607, 0x2613, 0x2613, 0x2628, + 0x2659, 0x267e, 0x267e, 0x2696, 0x269f, 0x269f, 0x26b1, 0x26b1, // Entry 200 - 23F - 0x2637, 0x2659, 0x2671, 0x268c, 0x26b4, 0x26c3, 0x26c3, 0x26c3, - 0x26d5, 0x26e1, 0x26f9, 0x26f9, 0x271e, 0x2736, 0x2736, 0x2736, - 0x274b, 0x2757, 0x2769, 0x2778, 0x278d, 0x2796, 0x27ab, 0x27ab, - 0x27c3, 0x27de, 0x27de, 0x27f3, 0x281b, 0x2834, 0x2834, 0x2834, - 0x2834, 0x284f, 0x284f, 0x2867, 0x2879, 0x2894, 0x28b2, 0x28f9, - 0x290e, 0x2926, 0x2941, 0x294a, 0x2953, 0x2953, 0x2953, 0x2953, - 0x2953, 0x2962, 0x2962, 0x2974, 0x2974, 0x298c, 0x299e, 0x29b0, - 0x29d1, 0x29d1, 0x29e6, 0x29e6, 0x29f2, 0x2a01, 0x2a19, 0x2a19, + 0x26b1, 0x26e8, 0x2701, 0x271d, 0x273f, 0x2757, 0x2772, 0x279a, + 0x27a9, 0x27b5, 0x27b5, 0x27c7, 0x27d3, 0x27eb, 0x2806, 0x282b, + 0x2843, 0x2843, 0x2843, 0x2858, 0x2864, 0x2876, 0x2885, 0x289a, + 0x28a3, 0x28b8, 0x28b8, 0x28d0, 0x28eb, 0x28eb, 0x2900, 0x2928, + 0x2941, 0x2941, 0x2953, 0x2953, 0x296e, 0x296e, 0x2986, 0x2998, + 0x29b3, 0x29d1, 0x2a18, 0x2a2d, 0x2a45, 0x2a60, 0x2a69, 0x2a72, + 0x2a72, 0x2a72, 0x2a72, 0x2a72, 0x2a81, 0x2a81, 0x2a93, 0x2aab, + 0x2ac3, 0x2ad5, 0x2ae7, 0x2b08, 0x2b17, 0x2b2c, 0x2b2c, 0x2b38, // Entry 240 - 27F - 0x2a19, 0x2a19, 0x2a19, 0x2a2e, 0x2a4a, 0x2a4a, 0x2a5c, 0x2a9d, - 0x2aa9, 0x2af3, 0x2aff, 0x2b2e, 0x2b2e, 0x2b65, 0x2b91, 0x2bc5, - 0x2bf0, 0x2c18, 0x2c43, 0x2c8d, 0x2cc1, 0x2cfe, 0x2cfe, 0x2d26, - 0x2d42, 0x2d61, 0x2d76, 0x2daa, 0x2dd8, 0x2df0, 0x2e24, 0x2e4f, - 0x2e71, 0x2e9c, -} // Size: 1244 bytes - -var caLangStr string = "" + // Size: 4535 bytes + 0x2b47, 0x2b5f, 0x2b7a, 0x2b8f, 0x2b8f, 0x2bad, 0x2bc2, 0x2bde, + 0x2bde, 0x2bf0, 0x2c31, 0x2c3d, 0x2c87, 0x2c93, 0x2cc2, 0x2cc2, + 0x2cf9, 0x2d25, 0x2d59, 0x2d84, 0x2dac, 0x2dd7, 0x2e21, 0x2e55, + 0x2e92, 0x2e92, 0x2eba, 0x2ed6, 0x2ef5, 0x2f0a, 0x2f3e, 0x2f6c, + 0x2f84, 0x2fb8, 0x2fe3, 0x3005, 0x3030, +} // Size: 1250 bytes + +const caLangStr string = "" + // Size: 4583 bytes "àfarabkhazavèsticafrikaansàkanamhàricaragonèsàrabassamèsàvaraimaraazerba" + "idjanèsbaixkirbielorúsbúlgarbislamabambarabengalítibetàbretóbosniàcatalà" + "txetxèchamorrocorscreetxeceslau eclesiàstictxuvaixgal·lèsdanèsalemanydiv" + @@ -13156,48 +16375,49 @@ var caLangStr string = "" + // Size: 4535 bytes "azhuangxinèszuluatjehacoliadangmeadiguéafrihiliaghemainuaccadialabamaale" + "utaalbanès gegaltaic meridionalanglès anticangikaarameuaraucàaraonaarapa" + "hoarauacàrab egipciparellengua de signes americanaasturiàawadhibalutxiba" + - "linèsbavarèsbasabamunghomalabejabembabenabafutbadagabalutxi occidentalbh" + + "linèsbavarèsbasabamumghomalabejabembabenabafutbadagabalutxi occidentalbh" + "ojpuribicolbinikomblackfootbrajbrahuibodoakooseburiatbuguisekibilinmedum" + "bacaddocaribcayugaatsamcebuàchigatxibtxatxagataichuukmaripidgin chinookc" + - "hoctawchipewyancherokeexeiennekurd soranicoptetàtar de Crimeacaixubidako" + - "tadarguàtaitadelawareslaveydogribdinkazarmadogribaix sòrabdoualaneerland" + - "ès mitjàdiolajuladazagaembuefikemiliàegipci anticekajukelamitaanglès mi" + - "tjàewondoextremenyfangfilipífonfrancès mitjàfrancès anticfrisó septentri" + - "onalfrisó orientalfriülàgagagaúsxinès gangayogbayagueezgilbertèsgilakial" + - "t alemany mitjàalt alemany anticconcani de Goagondigorontalogòticgrebogr" + - "ec anticalemany suíswayúgusígwichinhaidaxinès hakkahawaiàhindi de Fijihi" + - "ligainonhititahmongalt sòrabxinès xianghupaibanibibioilocàingúixcrioll a" + - "nglès de Jamaicalojbanngombamachamejudeopersajudeoàrabkarakalpakcabilenc" + - "katxinjjukambakawikabardíkanembutyapmakondecrioll capverdiàkenyangkoroka" + - "ingàkhasikhotanèskoyra chiinikakokalenjinkimbundukomi-permiackonkanikosr" + - "aeàkpellekaratxaikriocareliàkurukhshambalabafiacologniankúmikkutenailadí" + - "langipanjabi occidentallambalesguiàlígurlakotallombardmongoloziluri sept" + - "entrionalluba-lulualuisenyolundaluomizoluyiaxinès clàssiclazmadurèsmafam" + - "agahimaithilimakassarmandingamassaimabamordovià moksamandarmendemerumaur" + - "iciàgaèlic irlandès mitjàmakhuwa-mettometa’micmacminangkabaumanxúmanipur" + - "ímohawkmorémari occidentalmundangllengües vàriescreekmirandèsmarwarimye" + - "nemordovià erzamazanderanixinès min del sudnapolitànamabaix alemanynewar" + - "iniasniueàbissiongiemboonnogainòrdic anticnovialn’Kosotho septentrionaln" + - "uernewari clàssicnyamwesinyankolenyoronzemaosageturc otomàpangasipahlavi" + - "pampangapapiamentopalauàpicardalemany pennsilvaniàpersa anticalemany pal" + - "atífenicipiemontèsgrec pònticponapeàprovençal anticquitxérajasthanirapan" + - "uirarotongàromanyèsromboromaníaromanèsrwosandaweiacutarameu samaritàsamb" + - "urusasaksantalingambaysangusiciliàescocèssard sasserèskurd meridionalsen" + - "ecasenaselkupsonghai orientalirlandès antictaixelhitxanàrab txadiàsidamo" + - "sami meridionalsami lulesami d’Inarisami skoltsoninkesogdiàsrananserersa" + - "hosukumasusúsumericomoriàsiríac clàssicsiríacsilesiàtemnetesoterenatetun" + - "tigretivtokelauèstsakhurklingoniàtlingittalixamazictongatok pisintarokot" + - "simshiàtat meridionaltumbukatuvaluàtasawaqtuviniàamazic del Marroc centr" + - "aludmurtugaríticumbunduarrelvaivènetvepseflamenc occidentalvòticvunjowal" + - "serametowaraywashowarlpirixinès wucalmucmingreliàsogayaoyapeàyangbenyemb" + - "acantonèszapotecasímbols Blisszelandèszenagaamazic estàndard marroquízun" + - "isense contingut lingüísticzazaàrab estàndard modernalemany austríacalt " + - "alemany suísanglès australiàanglès canadencanglès britànicanglès americà" + - "espanyol hispanoamericàespanyol europeuespanyol de Mèxicfrancès canadenc" + - "francès suísbaix saxóflamencportuguès del Brasilportuguès de Portugalmol" + - "dauserbocroatsuahili del Congoxinès simplificatxinès tradicional" - -var caLangIdx = []uint16{ // 610 elements + "hoctawchipewyancherokeexeiennekurd soranicoptetàtar de Crimeafrancès cri" + + "oll de les Seychellescaixubidakotadarguàtaitadelawareslavidogribdinkazar" + + "madogribaix sòrabdoualaneerlandès mitjàdiolajuladazagaembuefikemiliàegip" + + "ci anticekajukelamitaanglès mitjàewondoextremenyfangfilipífonfrancès mit" + + "jàfrancès anticfrisó septentrionalfrisó orientalfriülàgagagaúsxinès gang" + + "ayogbayagueezgilbertèsgilakialt alemany mitjàalt alemany anticconcani de" + + " Goagondigorontalogòticgrebogrec anticalemany suíswayúgusígwichinhaidaxi" + + "nès hakkahawaiàhindi de Fijihiligainonhititahmongalt sòrabxinès xianghup" + + "aibanibibioilocàingúixcrioll anglès de Jamaicalojbanngombamachamejudeope" + + "rsajudeoàrabkarakalpakcabilenckatxinjjukambakawikabardíkanembutyapmakond" + + "ecrioll capverdiàkenyangkorokaingàkhasikhotanèskoyra chiinikakokalenjink" + + "imbundukomi-permiacconcanikosraeàkpellekaratxaikriocareliàkurukhshambala" + + "bafiacologniankúmikkutenailadílangipanjabi occidentallambalesguiàlígurla" + + "kotallombardmongoloziluri septentrionalluba-lulualuisenyolundaluomizoluy" + + "iaxinès clàssiclazmadurèsmafamagahimaithilimakassarmandingamassaimabamor" + + "dovià moksamandarmendemerumauriciàgaèlic irlandès mitjàmakhuwa-mettometa" + + "’micmacminangkabaumanxúmanipurímohawkmorémari occidentalmundangllengüe" + + "s vàriescreekmirandèsmarwarimyenemordovià erzamazanderanixinès min del s" + + "udnapolitànamabaix alemanynewariniasniueàbissiongiemboonnogainòrdic anti" + + "cnovialn’Kosotho septentrionalnuernewari clàssicnyamwesinyankolenyoronze" + + "maosageturc otomàpangasipahlavipampangapapiamentopalauàpicardpidgin de N" + + "igèriaalemany pennsilvaniàpersa anticalemany palatífenicipiemontèspòntic" + + "ponapeàprussiàprovençal anticquitxérajasthanirapanuirarotongàromanyèsrom" + + "boromaníaromanèsrwosandaweiacutarameu samaritàsamburusasaksantalingambay" + + "sangusiciliàescocèssasserèskurd meridionalsenecasenaselkupsonghai orient" + + "alirlandès antictaixelhitxanàrab txadiàsidamosami meridionalsami lulesam" + + "i d’Inarisami skoltsoninkesogdiàsrananserersahosukumasusúsumericomoriàsi" + + "ríac clàssicsiríacsilesiàtemnetesoterenatetuntigretivtokelauèstsakhurkli" + + "ngoniàtlingittalixamazictongatok pisintarokotsimshiàtat meridionaltumbuk" + + "atuvaluàtasawaqtuviniàamazic del Marroc centraludmurtugaríticumbunduarre" + + "lvaivènetvepseflamenc occidentalvòticvunjowalserametowaraywashowarlpirix" + + "inès wucalmucmingreliàsogayaoyapeàyangbenyembacantonèszapotecasímbols Bl" + + "isszelandèszenagaamazic estàndard marroquízunisense contingut lingüístic" + + "zazaàrab estàndard modernalemany austríacalt alemany suísanglès australi" + + "àanglès canadencanglès britànicanglès americàespanyol hispanoamericàesp" + + "anyol europeuespanyol de Mèxicfrancès canadencfrancès suísbaix saxóflame" + + "ncportuguès del Brasilportuguès de Portugalmoldauserbocroatsuahili del C" + + "ongoxinès simplificatxinès tradicional" + +var caLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0005, 0x000b, 0x0013, 0x001c, 0x0021, 0x0029, 0x0032, 0x0037, 0x003f, 0x0044, 0x004a, 0x0058, 0x005f, 0x0068, 0x006f, @@ -13227,161 +16447,162 @@ var caLangIdx = []uint16{ // 610 elements 0x0542, 0x0542, 0x054a, 0x054f, 0x0553, 0x0559, 0x0560, 0x0566, // Entry C0 - FF 0x0572, 0x0583, 0x0590, 0x0596, 0x059c, 0x05a3, 0x05a9, 0x05b0, - 0x05b0, 0x05b6, 0x05b6, 0x05c2, 0x05c6, 0x05e1, 0x05e9, 0x05e9, - 0x05ef, 0x05f6, 0x05fe, 0x0606, 0x060a, 0x060f, 0x060f, 0x0616, - 0x061a, 0x061f, 0x061f, 0x0623, 0x0628, 0x062e, 0x0640, 0x0648, - 0x064d, 0x0651, 0x0651, 0x0654, 0x065d, 0x065d, 0x065d, 0x0661, - 0x0667, 0x066b, 0x0671, 0x0677, 0x067c, 0x0680, 0x0685, 0x068c, - 0x0691, 0x0696, 0x069c, 0x06a1, 0x06a7, 0x06ac, 0x06b3, 0x06bb, - 0x06c0, 0x06c4, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f1, 0x06fc, + 0x05b0, 0x05b0, 0x05b6, 0x05b6, 0x05c2, 0x05c6, 0x05e1, 0x05e9, + 0x05e9, 0x05ef, 0x05f6, 0x05fe, 0x0606, 0x060a, 0x060f, 0x060f, + 0x0616, 0x061a, 0x061f, 0x061f, 0x0623, 0x0628, 0x062e, 0x0640, + 0x0648, 0x064d, 0x0651, 0x0651, 0x0654, 0x065d, 0x065d, 0x065d, + 0x0661, 0x0667, 0x066b, 0x0671, 0x0677, 0x067c, 0x0680, 0x0685, + 0x068c, 0x0691, 0x0696, 0x069c, 0x06a1, 0x06a7, 0x06ac, 0x06b3, + 0x06bb, 0x06c0, 0x06c4, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f1, // Entry 100 - 13F - 0x0701, 0x0701, 0x0711, 0x0718, 0x071e, 0x0725, 0x072a, 0x0732, - 0x0738, 0x073e, 0x0743, 0x0748, 0x074d, 0x0758, 0x0758, 0x075e, - 0x0770, 0x0775, 0x0779, 0x077f, 0x0783, 0x0787, 0x078e, 0x079a, - 0x07a0, 0x07a7, 0x07b5, 0x07b5, 0x07bb, 0x07c4, 0x07c8, 0x07cf, - 0x07cf, 0x07d2, 0x07d2, 0x07e1, 0x07ef, 0x07ef, 0x0803, 0x0812, - 0x081a, 0x081c, 0x0823, 0x082d, 0x0831, 0x0836, 0x0836, 0x083b, - 0x0845, 0x084b, 0x085d, 0x086e, 0x087c, 0x0881, 0x088a, 0x0890, - 0x0895, 0x089f, 0x08ac, 0x08b1, 0x08b1, 0x08b6, 0x08bd, 0x08c2, + 0x06fc, 0x0701, 0x0701, 0x0711, 0x0732, 0x0739, 0x073f, 0x0746, + 0x074b, 0x0753, 0x0758, 0x075e, 0x0763, 0x0768, 0x076d, 0x0778, + 0x0778, 0x077e, 0x0790, 0x0795, 0x0799, 0x079f, 0x07a3, 0x07a7, + 0x07ae, 0x07ba, 0x07c0, 0x07c7, 0x07d5, 0x07d5, 0x07db, 0x07e4, + 0x07e8, 0x07ef, 0x07ef, 0x07f2, 0x07f2, 0x0801, 0x080f, 0x080f, + 0x0823, 0x0832, 0x083a, 0x083c, 0x0843, 0x084d, 0x0851, 0x0856, + 0x0856, 0x085b, 0x0865, 0x086b, 0x087d, 0x088e, 0x089c, 0x08a1, + 0x08aa, 0x08b0, 0x08b5, 0x08bf, 0x08cc, 0x08d1, 0x08d1, 0x08d6, // Entry 140 - 17F - 0x08ce, 0x08d5, 0x08e2, 0x08ec, 0x08f2, 0x08f7, 0x0901, 0x090d, - 0x0911, 0x0915, 0x091b, 0x0921, 0x0928, 0x0928, 0x0941, 0x0947, - 0x094d, 0x0954, 0x095e, 0x0968, 0x0968, 0x0972, 0x097a, 0x0980, - 0x0983, 0x0988, 0x098c, 0x0994, 0x099b, 0x099f, 0x09a6, 0x09b7, - 0x09be, 0x09c2, 0x09c9, 0x09ce, 0x09d7, 0x09e3, 0x09e3, 0x09e3, - 0x09e7, 0x09ef, 0x09f7, 0x0a03, 0x0a0a, 0x0a12, 0x0a18, 0x0a20, - 0x0a24, 0x0a24, 0x0a2c, 0x0a32, 0x0a3a, 0x0a3f, 0x0a48, 0x0a4e, - 0x0a55, 0x0a5a, 0x0a5f, 0x0a71, 0x0a76, 0x0a7e, 0x0a7e, 0x0a84, + 0x08dd, 0x08e2, 0x08ee, 0x08f5, 0x0902, 0x090c, 0x0912, 0x0917, + 0x0921, 0x092d, 0x0931, 0x0935, 0x093b, 0x0941, 0x0948, 0x0948, + 0x0961, 0x0967, 0x096d, 0x0974, 0x097e, 0x0988, 0x0988, 0x0992, + 0x099a, 0x09a0, 0x09a3, 0x09a8, 0x09ac, 0x09b4, 0x09bb, 0x09bf, + 0x09c6, 0x09d7, 0x09de, 0x09e2, 0x09e9, 0x09ee, 0x09f7, 0x0a03, + 0x0a03, 0x0a03, 0x0a07, 0x0a0f, 0x0a17, 0x0a23, 0x0a2a, 0x0a32, + 0x0a38, 0x0a40, 0x0a44, 0x0a44, 0x0a4c, 0x0a52, 0x0a5a, 0x0a5f, + 0x0a68, 0x0a6e, 0x0a75, 0x0a7a, 0x0a7f, 0x0a91, 0x0a96, 0x0a9e, // Entry 180 - 1BF - 0x0a84, 0x0a8a, 0x0a92, 0x0a97, 0x0a9b, 0x0aad, 0x0aad, 0x0ab7, - 0x0abf, 0x0ac4, 0x0ac7, 0x0acb, 0x0ad0, 0x0adf, 0x0ae2, 0x0aea, - 0x0aee, 0x0af4, 0x0afc, 0x0b04, 0x0b0c, 0x0b12, 0x0b16, 0x0b25, - 0x0b2b, 0x0b30, 0x0b34, 0x0b3d, 0x0b55, 0x0b62, 0x0b69, 0x0b6f, - 0x0b7a, 0x0b80, 0x0b89, 0x0b8f, 0x0b94, 0x0ba3, 0x0baa, 0x0bbb, - 0x0bc0, 0x0bc9, 0x0bd0, 0x0bd0, 0x0bd5, 0x0be3, 0x0bee, 0x0c00, - 0x0c09, 0x0c0d, 0x0c19, 0x0c1f, 0x0c23, 0x0c29, 0x0c29, 0x0c2f, - 0x0c38, 0x0c3d, 0x0c4a, 0x0c50, 0x0c56, 0x0c69, 0x0c6d, 0x0c7c, + 0x0a9e, 0x0aa4, 0x0aa4, 0x0aaa, 0x0ab2, 0x0ab7, 0x0abb, 0x0acd, + 0x0acd, 0x0ad7, 0x0adf, 0x0ae4, 0x0ae7, 0x0aeb, 0x0af0, 0x0aff, + 0x0b02, 0x0b0a, 0x0b0e, 0x0b14, 0x0b1c, 0x0b24, 0x0b2c, 0x0b32, + 0x0b36, 0x0b45, 0x0b4b, 0x0b50, 0x0b54, 0x0b5d, 0x0b75, 0x0b82, + 0x0b89, 0x0b8f, 0x0b9a, 0x0ba0, 0x0ba9, 0x0baf, 0x0bb4, 0x0bc3, + 0x0bca, 0x0bdb, 0x0be0, 0x0be9, 0x0bf0, 0x0bf0, 0x0bf5, 0x0c03, + 0x0c0e, 0x0c20, 0x0c29, 0x0c2d, 0x0c39, 0x0c3f, 0x0c43, 0x0c49, + 0x0c49, 0x0c4f, 0x0c58, 0x0c5d, 0x0c6a, 0x0c70, 0x0c76, 0x0c89, // Entry 1C0 - 1FF - 0x0c84, 0x0c8c, 0x0c91, 0x0c96, 0x0c9b, 0x0ca6, 0x0cad, 0x0cb4, - 0x0cbc, 0x0cc6, 0x0ccd, 0x0cd3, 0x0ce8, 0x0ce8, 0x0cf3, 0x0d02, - 0x0d08, 0x0d12, 0x0d1e, 0x0d26, 0x0d26, 0x0d36, 0x0d3d, 0x0d3d, - 0x0d47, 0x0d4e, 0x0d58, 0x0d61, 0x0d61, 0x0d66, 0x0d6d, 0x0d6d, - 0x0d6d, 0x0d6d, 0x0d76, 0x0d79, 0x0d80, 0x0d85, 0x0d95, 0x0d9c, - 0x0da1, 0x0da8, 0x0da8, 0x0daf, 0x0db4, 0x0dbc, 0x0dc4, 0x0dd2, - 0x0de1, 0x0de7, 0x0deb, 0x0deb, 0x0df1, 0x0e01, 0x0e10, 0x0e10, - 0x0e19, 0x0e1c, 0x0e29, 0x0e2f, 0x0e2f, 0x0e2f, 0x0e3e, 0x0e47, + 0x0c8d, 0x0c9c, 0x0ca4, 0x0cac, 0x0cb1, 0x0cb6, 0x0cbb, 0x0cc6, + 0x0ccd, 0x0cd4, 0x0cdc, 0x0ce6, 0x0ced, 0x0cf3, 0x0d05, 0x0d1a, + 0x0d1a, 0x0d25, 0x0d34, 0x0d3a, 0x0d44, 0x0d4b, 0x0d53, 0x0d5b, + 0x0d6b, 0x0d72, 0x0d72, 0x0d7c, 0x0d83, 0x0d8d, 0x0d96, 0x0d96, + 0x0d9b, 0x0da2, 0x0da2, 0x0da2, 0x0da2, 0x0dab, 0x0dae, 0x0db5, + 0x0dba, 0x0dca, 0x0dd1, 0x0dd6, 0x0ddd, 0x0ddd, 0x0de4, 0x0de9, + 0x0df1, 0x0df9, 0x0e02, 0x0e11, 0x0e17, 0x0e1b, 0x0e1b, 0x0e21, + 0x0e31, 0x0e40, 0x0e40, 0x0e49, 0x0e4c, 0x0e59, 0x0e5f, 0x0e5f, // Entry 200 - 23F - 0x0e55, 0x0e5f, 0x0e66, 0x0e6d, 0x0e73, 0x0e78, 0x0e7c, 0x0e7c, - 0x0e82, 0x0e87, 0x0e8d, 0x0e95, 0x0ea5, 0x0eac, 0x0eb4, 0x0eb4, - 0x0eb9, 0x0ebd, 0x0ec3, 0x0ec8, 0x0ecd, 0x0ed0, 0x0eda, 0x0ee1, - 0x0eeb, 0x0ef2, 0x0ef7, 0x0efd, 0x0f02, 0x0f0b, 0x0f0b, 0x0f11, - 0x0f11, 0x0f1a, 0x0f28, 0x0f2f, 0x0f37, 0x0f3e, 0x0f46, 0x0f5f, - 0x0f65, 0x0f6e, 0x0f75, 0x0f7a, 0x0f7d, 0x0f83, 0x0f88, 0x0f9a, - 0x0f9a, 0x0fa0, 0x0fa0, 0x0fa5, 0x0fab, 0x0fb0, 0x0fb5, 0x0fba, - 0x0fc2, 0x0fcb, 0x0fd1, 0x0fdb, 0x0fdf, 0x0fe2, 0x0fe8, 0x0fef, + 0x0e5f, 0x0e6e, 0x0e77, 0x0e85, 0x0e8f, 0x0e96, 0x0e9d, 0x0ea3, + 0x0ea8, 0x0eac, 0x0eac, 0x0eb2, 0x0eb7, 0x0ebd, 0x0ec5, 0x0ed5, + 0x0edc, 0x0ee4, 0x0ee4, 0x0ee9, 0x0eed, 0x0ef3, 0x0ef8, 0x0efd, + 0x0f00, 0x0f0a, 0x0f11, 0x0f1b, 0x0f22, 0x0f27, 0x0f2d, 0x0f32, + 0x0f3b, 0x0f3b, 0x0f41, 0x0f41, 0x0f4a, 0x0f58, 0x0f5f, 0x0f67, + 0x0f6e, 0x0f76, 0x0f8f, 0x0f95, 0x0f9e, 0x0fa5, 0x0faa, 0x0fad, + 0x0fb3, 0x0fb8, 0x0fca, 0x0fca, 0x0fd0, 0x0fd0, 0x0fd5, 0x0fdb, + 0x0fe0, 0x0fe5, 0x0fea, 0x0ff2, 0x0ffb, 0x1001, 0x100b, 0x100f, // Entry 240 - 27F - 0x0ff4, 0x0ff4, 0x0ffd, 0x1005, 0x1013, 0x101c, 0x1022, 0x103d, - 0x1041, 0x105d, 0x1061, 0x1078, 0x1078, 0x1089, 0x109a, 0x10ac, - 0x10bc, 0x10cd, 0x10dd, 0x10f5, 0x1105, 0x1117, 0x1117, 0x1128, - 0x1136, 0x1140, 0x1147, 0x115c, 0x1172, 0x1178, 0x1182, 0x1193, - 0x11a5, 0x11b7, -} // Size: 1244 bytes - -var csLangStr string = "" + // Size: 7315 bytes + 0x1012, 0x1018, 0x101f, 0x1024, 0x1024, 0x102d, 0x1035, 0x1043, + 0x104c, 0x1052, 0x106d, 0x1071, 0x108d, 0x1091, 0x10a8, 0x10a8, + 0x10b9, 0x10ca, 0x10dc, 0x10ec, 0x10fd, 0x110d, 0x1125, 0x1135, + 0x1147, 0x1147, 0x1158, 0x1166, 0x1170, 0x1177, 0x118c, 0x11a2, + 0x11a8, 0x11b2, 0x11c3, 0x11d5, 0x11e7, +} // Size: 1250 bytes + +const csLangStr string = "" + // Size: 7397 bytes "afarštinaabcházštinaavestánštinaafrikánštinaakanštinaamharštinaaragonšti" + "naarabštinaásámštinaavarštinaajmarštinaázerbájdžánštinabaškirštinaběloru" + "štinabulharštinabislamštinabambarštinabengálštinatibetštinabretonštinab" + "osenštinakatalánštinačečenštinačamorokorsičtinakríjštinačeštinastaroslov" + "ěnštinačuvaštinavelštinadánštinaněmčinamaledivštinadzongkäeweštinařečti" + "naangličtinaesperantošpanělštinaestonštinabaskičtinaperštinafulbštinafin" + - "štinafidžijštinafaerštinafrancouzštinafríštinairštinaskotská gaelštinag" + - "alicijštinaguaranštinagudžarátštinamanštinahauštinahebrejštinahindštinah" + - "iri motuchorvatštinahaitštinamaďarštinaarménštinahererštinainterlinguain" + - "donéštinainterlingueigboštinaiština (sečuánská)inupiakštinaidoislandštin" + - "aitalštinainuktitutštinajaponštinajavánštinagruzínštinakonžštinakikujšti" + - "nakuaňamštinakazaštinagrónštinakhmérštinakannadštinakorejštinakanurikašm" + - "írštinakurdštinakomijštinakornštinakyrgyzštinalatinalucemburštinagandšt" + - "inalimburštinalingalštinalaoštinalitevštinalubu-katanžštinalotyštinamalg" + - "aštinamaršálštinamaorštinamakedonštinamalajálamštinamongolštinamaráthšti" + - "namalajštinamaltštinabarmštinanaurštinandebele (Zimbabwe)nepálštinandond" + - "štinanizozemštinanorština (nynorsk)norština (bokmål)ndebele (Jižní Afri" + - "ka)navažštinaňandžštinaokcitánštinaodžibvejštinaoromštinaurijštinaosetšt" + - "inapaňdžábštinapálípolštinapaštštinaportugalštinakečuánštinarétorománšti" + - "nakirundštinarumunštinaruštinakiňarwandštinasanskrtsardštinasindhštinasá" + - "mština (severní)sangštinasinhálštinaslovenštinaslovinštinasamojštinašonš" + - "tinasomálštinaalbánštinasrbštinasiswatštinasotština (jižní)sundštinašvéd" + - "štinasvahilštinatamilštinatelugštinatádžičtinathajštinatigrinijštinatur" + - "kmenštinasetswanštinatongánštinaturečtinatsongatatarštinatahitštinaujgur" + - "štinaukrajinštinaurdštinauzbečtinavendavietnamštinavolapükvalonštinawol" + - "ofštinaxhoštinajidišjorubštinačuangštinačínštinazuluštinaacehštinaakolšt" + - "inaadangmeadygejštinaarabština (tuniská)afrihiliaghemainštinaakkadštinaa" + - "labamštinaaleutštinaalbánština (Gheg)altajština (jižní)staroangličtinaan" + - "gikaaramejštinaaraukánštinaaraonštinaarapažštinaarabština (alžírská)araw" + - "acké jazykyarabština (marocká)arabština (egyptská)asuznaková řeč (americ" + - "ká)asturštinakotavaawadhštinabalúčštinabalijštinabavorštinabasabamunbata" + - "k tobaghomalabedžabembštinabatavštinabenabafutbadagštinabalúčština (zápa" + - "dní)bhojpurštinabikolštinabinibandžarštinakomsiksikabišnuprijskomanipurš" + - "tinabachtijárštinabradžštinabrahujštinabodoštinaakooseburjatštinabugišti" + - "nabulublinštinamedumbacaddokaribštinakajugštinaatsamcebuánštinakigačibča" + - "čagatajštinačukštinamarijštinačinuk pidžinčoktštinačipevajštinačerokézš" + - "tinačejenštinakurdština (sorání)koptštinakapiznonštinaturečtina (krymská" + - ")kašubštinadakotštinadargštinataitadelawarštinaslejvština (athabaský jaz" + - "yk)dogribdinkštinazarmštinadogarštinadolnolužická srbštinakadazandusunšt" + - "inadualštinaholandština (středověká)jola-fonyidjuladazagaembuefikštinaem" + - "ilijštinaegyptština staráekajukelamitštinaangličtina (středověká)jupikšt" + - "ina (středoaljašská)ewondoextremadurštinafangfilipínštinafinština (torne" + - "dalská)fonštinafrancouzština (kajunská)francouzština (středověká)francou" + - "zština (stará)franko-provensálštinafríština (severní)fríština (východní)" + - "furlanštinagaštinagagauzštinačínština (dialekty Gan)gayogbajadaríjština " + - "(zoroastrijská)geezkiribatštinagilačtinahornoněmčina (středověká)hornoně" + - "mčina (stará)konkánština (Goa)góndštinagorontalogótštinagrebostarořečtin" + - "aněmčina (Švýcarsko)wayúuštinafrafragusiigwichʼinhaidštinačínština (dial" + - "ekty Hakka)havajštinahindština (Fidži)hiligajnonštinachetitštinahmongšti" + - "nahornolužická srbštinačínština (dialekty Xiang)hupaibanštinaibibioiloká" + - "nštinainguštinaingrijštinajamajská kreolštinalojbanngombamašamejudeoperš" + - "tinajudeoarabštinajutštinakarakalpačtinakabylštinakačijštinajjukambština" + - "kawikabardinštinakanembutyapmakondekapverdštinakenyangkorokaingangkhásíc" + - "hotánštinakoyra chiinichovarštinazazakštinakakokalendžinkimbundštinakomi" + - "-permjačtinakonkánštinakosrajštinakpellekaračajevo-balkarštinakriokinara" + - "j-akarelštinakuruchštinašambalabafiakolínštinakumyčtinakutenajštinaladin" + - "štinalangilahndštinalambštinalezginštinalingua franca novaligurštinaliv" + - "onštinalakotštinalombardštinamongštinalozštinalúrština (severní)latgalšt" + - "inaluba-luluaštinaluiseňolundštinaluoštinamizoštinaluhjačínština (klasic" + - "ká)lazštinamadurštinamafamagahijštinamaithilištinamakasarštinamandingšti" + - "namasajštinamabamokšanštinamandarmendemerumauricijská kreolštinairština " + - "(středověká)makhuwa-meettometa’micmacminangkabaumandžuštinamanipurštinam" + - "ohawkštinamosimarijština (západní)mundangsložené (víceřádkové) jazykykrí" + - "kštinamirandštinamárvárštinamentavajštinamyeneerzjanštinamázandaránština" + - "čínština (dialekty Minnan)neapolštinanamaštinadolnoněmčinanévárštinania" + - "sniueštinaao (jazyky Nágálandu)kwasiongiemboonnogajštinanorština histori" + - "ckánovialn’kosotština (severní)nuerštinanewarština (klasická)ňamwežština" + - "ňankolštinaňorštinanzimaosageturečtina (osmanská)pangasinanštinapahlavš" + - "tinapapangaupapiamentopalauštinapicardštinaněmčina (pensylvánská)němčina" + - " (plautdietsch)staroperštinafalčtinaféničtinapiemonštinapontštinapohnpei" + - "štinapruštinaprovensálštinakičékečuánština (chimborazo)rádžastánštinara" + - "panujštinararotongánštinaromaňolštinarífštinaromboromštinarotumanštinaru" + - "sínštinarovianštinaarumunštinarwasandawštinajakutštinasamarštinasamburus" + - "asakštinasantálštinasaurášterštinangambaysangoštinasicilštinaskotštinasa" + - "ssarštinakurdština (jižní)senecasenaserištinaselkupštinakoyraboro sennii" + - "rština (stará)žemaitštinatachelhitšanštinaarabština (čadská)sidamoněmčin" + - "a (slezská)selajarštinasámština (jižní)sámština (lulejská)sámština (inar" + - "ijská)sámština (skoltská)sonikštinasogdštinasranan tongosererštinasahofr" + - "íština (saterlandská)sukumasususumerštinakomorštinasyrština (klasická)s" + - "yrštinaslezštinatuluštinatemnetesoterenotetumštinatigrejštinativštinatok" + - "elauštinacachurštinaklingonštinatlingittalyštinatamašektonžština (nyasa)" + - "tok pisinturojštinatarokotsakonštinatsimšijské jazykytatštinatumbukština" + - "tuvalštinatasawaqtuvinštinatamazight (střední Maroko)udmurtštinaugaritšt" + - "inaumbundukořenvaibenátštinavepštinavlámština (západní)němčina (mohansko" + - "-franské dialekty)votštinavõruštinavunjoněmčina (walser)wolajtštinawaraj" + - "štinawaštinawarlpiričínština (dialekty Wu)kalmyčtinamingrelštinasogštin" + - "ajaoštinajapštinajangbenštinayembanheengatukantonštinazapotéčtinabliss s" + - "ystémzélandštinazenagatamazight (standardní marocký)zunijštinažádný jazy" + - "kový obsahzazaarabština (moderní standardní)němčina standardní (Švýcarsk" + - "o)angličtina (USA)španělština (Evropa)dolnosaštinavlámštinaportugalština" + - " (Evropa)moldavštinasrbochorvatštinasvahilština (Kongo)čínština (zjednod" + - "ušená)" - -var csLangIdx = []uint16{ // 609 elements + "štinafidžijštinafaerštinafrancouzštinafríština (západní)irštinaskotská " + + "gaelštinagalicijštinaguaranštinagudžarátštinamanštinahauštinahebrejština" + + "hindštinahiri motuchorvatštinahaitštinamaďarštinaarménštinahererštinaint" + + "erlinguaindonéštinainterlingueigboštinaiština (sečuánská)inupiakštinaido" + + "islandštinaitalštinainuktitutštinajaponštinajavánštinagruzínštinakonžšti" + + "nakikujštinakuaňamštinakazaštinagrónštinakhmérštinakannadštinakorejština" + + "kanurikašmírštinakurdštinakomijštinakornštinakyrgyzštinalatinalucemburšt" + + "inagandštinalimburštinalingalštinalaoštinalitevštinalubu-katanžštinaloty" + + "štinamalgaštinamaršálštinamaorštinamakedonštinamalajálamštinamongolštin" + + "amaráthštinamalajštinamaltštinabarmštinanaurštinandebele (Zimbabwe)nepál" + + "štinandondštinanizozemštinanorština (nynorsk)norština (bokmål)ndebele (" + + "Jižní Afrika)navažštinaňandžštinaokcitánštinaodžibvejštinaoromštinaurijš" + + "tinaosetštinapaňdžábštinapálípolštinapaštštinaportugalštinakečuánštinaré" + + "torománštinakirundštinarumunštinaruštinakiňarwandštinasanskrtsardštinasi" + + "ndhštinasámština (severní)sangštinasinhálštinaslovenštinaslovinštinasamo" + + "jštinašonštinasomálštinaalbánštinasrbštinasiswatštinasotština (jižní)sun" + + "dštinašvédštinasvahilštinatamilštinatelugštinatádžičtinathajštinatigrini" + + "jštinaturkmenštinasetswanštinatongánštinaturečtinatsongatatarštinatahitš" + + "tinaujgurštinaukrajinštinaurdštinauzbečtinavendavietnamštinavolapükvalon" + + "štinawolofštinaxhoštinajidišjorubštinačuangštinačínštinazuluštinaacehšt" + + "inaakolštinaadangmeadygejštinaarabština (tuniská)afrihiliaghemainštinaak" + + "kadštinaalabamštinaaleutštinaalbánština (Gheg)altajština (jižní)staroang" + + "ličtinaangikaaramejštinamapudungunaraonštinaarapažštinaarabština (alžírs" + + "ká)arawacké jazykyarabština (marocká)arabština (egyptská)asuznaková řeč " + + "(americká)asturštinakotavaawadhštinabalúčštinabalijštinabavorštinabasaba" + + "munbatak tobaghomalabedžabembštinabatavštinabenabafutbadagštinabalúčštin" + + "a (západní)bhojpurštinabikolštinabinibandžarštinakomsiksikabišnuprijskom" + + "anipurštinabachtijárštinabradžštinabrahujštinabodoštinaakooseburjatština" + + "bugištinabulublinštinamedumbacaddokaribštinakajugštinaatsamcebuánštinaki" + + "gačibčačagatajštinačukštinamarijštinačinuk pidžinčoktštinačipevajštinače" + + "rokézštinačejenštinakurdština (sorání)koptštinakapiznonštinaturečtina (k" + + "rymská)kreolština (seychelská)kašubštinadakotštinadargštinataitadelawarš" + + "tinaslejvština (athabaský jazyk)dogribdinkštinazarmštinadogarštinadolnol" + + "užická srbštinakadazandusunštinadualštinaholandština (středověká)jola-fo" + + "nyidjuladazagaembuefikštinaemilijštinaegyptština staráekajukelamitštinaa" + + "ngličtina (středověká)jupikština (středoaljašská)ewondoextremadurštinafa" + + "ngfilipínštinafinština (tornedalská)fonštinafrancouzština (kajunská)fran" + + "couzština (středověká)francouzština (stará)franko-provensálštinafríština" + + " (severní)fríština (východní)furlanštinagaštinagagauzštinačínština (dial" + + "ekty Gan)gayogbajadaríjština (zoroastrijská)geezkiribatštinagilačtinahor" + + "noněmčina (středověká)hornoněmčina (stará)konkánština (Goa)góndštinagoro" + + "ntalogótštinagrebostarořečtinaněmčina (Švýcarsko)wayúuštinafrafragusiigw" + + "ichʼinhaidštinačínština (dialekty Hakka)havajštinahindština (Fidži)hilig" + + "ajnonštinachetitštinahmongštinahornolužická srbštinačínština (dialekty X" + + "iang)hupaibanštinaibibioilokánštinainguštinaingrijštinajamajská kreolšti" + + "nalojbanngombamašamejudeoperštinajudeoarabštinajutštinakarakalpačtinakab" + + "ylštinakačijštinajjukambštinakawikabardinštinakanembutyapmakondekapverdš" + + "tinakenyangkorokaingangkhásíchotánštinakoyra chiinichovarštinazazakština" + + "kakokalendžinkimbundštinakomi-permjačtinakonkánštinakosrajštinakpellekar" + + "ačajevo-balkarštinakriokinaraj-akarelštinakuruchštinašambalabafiakolínšt" + + "inakumyčtinakutenajštinaladinštinalangilahndštinalambštinalezginštinalin" + + "gua franca novaligurštinalivonštinalakotštinalombardštinamongštinalozšti" + + "nalúrština (severní)latgalštinaluba-luluaštinaluiseňolundštinaluoštinami" + + "zoštinaluhjačínština (klasická)lazštinamadurštinamafamagahijštinamaithil" + + "ištinamakasarštinamandingštinamasajštinamabamokšanštinamandarmendemeruma" + + "uricijská kreolštinairština (středověká)makhuwa-meettometa’micmacminangk" + + "abaumandžuštinamanipurštinamohawkštinamosimarijština (západní)mundangslo" + + "žené (víceřádkové) jazykykríkštinamirandštinamárvárštinamentavajštinamy" + + "eneerzjanštinamázandaránštinačínština (dialekty Minnan)neapolštinanamašt" + + "inadolnoněmčinanévárštinaniasniueštinaao (jazyky Nágálandu)kwasiongiembo" + + "onnogajštinanorština historickánovialn’kosotština (severní)nuerštinanewa" + + "rština (klasická)ňamwežštinaňankolštinaňorštinanzimaosageturečtina (osma" + + "nská)pangasinanštinapahlavštinapapangaupapiamentopalauštinapicardštinani" + + "gerijský pidžinněmčina (pensylvánská)němčina (plautdietsch)staroperština" + + "falčtinaféničtinapiemonštinapontštinapohnpeištinapruštinaprovensálštinak" + + "ičékečuánština (chimborazo)rádžastánštinarapanujštinararotongánštinaroma" + + "ňolštinarífštinaromboromštinarotumanštinarusínštinarovianštinaarumunšti" + + "narwasandawštinajakutštinasamarštinasamburusasakštinasantálštinasaurášte" + + "rštinangambaysangoštinasicilštinaskotštinasassarštinakurdština (jižní)se" + + "necasenaserištinaselkupštinakoyraboro senniirština (stará)žemaitštinataš" + + "elhitšanštinaarabština (čadská)sidamoněmčina (slezská)selajarštinasámšti" + + "na (jižní)sámština (lulejská)sámština (inarijská)sámština (skoltská)soni" + + "kštinasogdštinasranan tongosererštinasahofríština (saterlandská)sukumasu" + + "susumerštinakomorštinasyrština (klasická)syrštinaslezštinatuluštinatemne" + + "tesoterenotetumštinatigrejštinativštinatokelauštinacachurštinaklingonšti" + + "natlingittalyštinatamašektonžština (nyasa)tok pisinturojštinatarokotsako" + + "nštinatsimšijské jazykytatštinatumbukštinatuvalštinatasawaqtuvinštinatam" + + "azight (střední Maroko)udmurtštinaugaritštinaumbundukořenvaibenátštinave" + + "pštinavlámština (západní)němčina (mohansko-franské dialekty)votštinavõru" + + "štinavunjoněmčina (walser)wolajtštinawarajštinawaštinawarlpiričínština " + + "(dialekty Wu)kalmyčtinamingrelštinasogštinajaoštinajapštinajangbenštinay" + + "embanheengatukantonštinazapotéčtinabliss systémzélandštinazenagatamazigh" + + "t (standardní marocký)zunijštinažádný jazykový obsahzazaarabština (moder" + + "ní standardní)němčina standardní (Švýcarsko)angličtina (Velká Británie)a" + + "ngličtina (USA)španělština (Evropa)dolnosaštinavlámštinaportugalština (E" + + "vropa)moldavštinasrbochorvatštinasvahilština (Kongo)čínština (zjednoduše" + + "ná)" + +var csLangIdx = []uint16{ // 612 elements // Entry 0 - 3F 0x0000, 0x000a, 0x0017, 0x0025, 0x0033, 0x003d, 0x0048, 0x0054, 0x005e, 0x006a, 0x0074, 0x007f, 0x0094, 0x00a1, 0x00ae, 0x00ba, @@ -13389,89 +16610,89 @@ var csLangIdx = []uint16{ // 609 elements 0x0123, 0x012e, 0x0139, 0x0142, 0x0154, 0x015f, 0x0168, 0x0172, 0x017b, 0x0188, 0x0190, 0x0199, 0x01a2, 0x01ad, 0x01b6, 0x01c4, 0x01cf, 0x01da, 0x01e3, 0x01ed, 0x01f6, 0x0203, 0x020d, 0x021b, - 0x0225, 0x022d, 0x0240, 0x024d, 0x0259, 0x0269, 0x0272, 0x027b, - 0x0287, 0x0291, 0x029a, 0x02a7, 0x02b1, 0x02bd, 0x02c9, 0x02d4, + 0x0231, 0x0239, 0x024c, 0x0259, 0x0265, 0x0275, 0x027e, 0x0287, + 0x0293, 0x029d, 0x02a6, 0x02b3, 0x02bd, 0x02c9, 0x02d5, 0x02e0, // Entry 40 - 7F - 0x02df, 0x02ec, 0x02f7, 0x0301, 0x0317, 0x0324, 0x0327, 0x0333, - 0x033d, 0x034c, 0x0357, 0x0363, 0x0370, 0x037b, 0x0386, 0x0393, - 0x039d, 0x03a8, 0x03b4, 0x03c0, 0x03cb, 0x03d1, 0x03df, 0x03e9, - 0x03f4, 0x03fe, 0x040a, 0x0410, 0x041e, 0x0428, 0x0434, 0x0440, - 0x0449, 0x0454, 0x0466, 0x0470, 0x047b, 0x0489, 0x0493, 0x04a0, - 0x04b0, 0x04bc, 0x04c9, 0x04d4, 0x04de, 0x04e8, 0x04f2, 0x0504, - 0x0510, 0x051b, 0x0528, 0x053b, 0x054e, 0x0566, 0x0572, 0x057f, - 0x058d, 0x059c, 0x05a6, 0x05b0, 0x05ba, 0x05ca, 0x05d0, 0x05d9, + 0x02eb, 0x02f8, 0x0303, 0x030d, 0x0323, 0x0330, 0x0333, 0x033f, + 0x0349, 0x0358, 0x0363, 0x036f, 0x037c, 0x0387, 0x0392, 0x039f, + 0x03a9, 0x03b4, 0x03c0, 0x03cc, 0x03d7, 0x03dd, 0x03eb, 0x03f5, + 0x0400, 0x040a, 0x0416, 0x041c, 0x042a, 0x0434, 0x0440, 0x044c, + 0x0455, 0x0460, 0x0472, 0x047c, 0x0487, 0x0495, 0x049f, 0x04ac, + 0x04bc, 0x04c8, 0x04d5, 0x04e0, 0x04ea, 0x04f4, 0x04fe, 0x0510, + 0x051c, 0x0527, 0x0534, 0x0547, 0x055a, 0x0572, 0x057e, 0x058b, + 0x0599, 0x05a8, 0x05b2, 0x05bc, 0x05c6, 0x05d6, 0x05dc, 0x05e5, // Entry 80 - BF - 0x05e4, 0x05f2, 0x0600, 0x0611, 0x061d, 0x0628, 0x0630, 0x0640, - 0x0647, 0x0651, 0x065c, 0x0671, 0x067b, 0x0688, 0x0694, 0x06a0, - 0x06ab, 0x06b5, 0x06c1, 0x06cd, 0x06d6, 0x06e2, 0x06f5, 0x06ff, - 0x070b, 0x0717, 0x0722, 0x072d, 0x073a, 0x0744, 0x0752, 0x075f, - 0x076c, 0x0779, 0x0783, 0x0789, 0x0794, 0x079f, 0x07aa, 0x07b7, - 0x07c0, 0x07ca, 0x07cf, 0x07dc, 0x07e4, 0x07ef, 0x07fa, 0x0803, - 0x0809, 0x0814, 0x0820, 0x082b, 0x0835, 0x083f, 0x0849, 0x0850, - 0x085c, 0x0871, 0x0879, 0x087e, 0x0887, 0x0892, 0x089e, 0x08a9, + 0x05f0, 0x05fe, 0x060c, 0x061d, 0x0629, 0x0634, 0x063c, 0x064c, + 0x0653, 0x065d, 0x0668, 0x067d, 0x0687, 0x0694, 0x06a0, 0x06ac, + 0x06b7, 0x06c1, 0x06cd, 0x06d9, 0x06e2, 0x06ee, 0x0701, 0x070b, + 0x0717, 0x0723, 0x072e, 0x0739, 0x0746, 0x0750, 0x075e, 0x076b, + 0x0778, 0x0785, 0x078f, 0x0795, 0x07a0, 0x07ab, 0x07b6, 0x07c3, + 0x07cc, 0x07d6, 0x07db, 0x07e8, 0x07f0, 0x07fb, 0x0806, 0x080f, + 0x0815, 0x0820, 0x082c, 0x0837, 0x0841, 0x084b, 0x0855, 0x085c, + 0x0868, 0x087d, 0x0885, 0x088a, 0x0893, 0x089e, 0x08aa, 0x08b5, // Entry C0 - FF - 0x08bc, 0x08d1, 0x08e1, 0x08e7, 0x08f3, 0x0901, 0x090c, 0x0919, - 0x0931, 0x0941, 0x0956, 0x096c, 0x096f, 0x0989, 0x0994, 0x099a, - 0x09a5, 0x09b2, 0x09bd, 0x09c8, 0x09cc, 0x09d1, 0x09db, 0x09e2, - 0x09e8, 0x09f2, 0x09fd, 0x0a01, 0x0a06, 0x0a11, 0x0a2a, 0x0a37, - 0x0a42, 0x0a46, 0x0a54, 0x0a57, 0x0a5e, 0x0a78, 0x0a88, 0x0a94, - 0x0aa0, 0x0aaa, 0x0ab0, 0x0abc, 0x0ac6, 0x0aca, 0x0ad4, 0x0adb, - 0x0ae0, 0x0aeb, 0x0af6, 0x0afb, 0x0b08, 0x0b0c, 0x0b13, 0x0b21, - 0x0b2b, 0x0b36, 0x0b44, 0x0b4f, 0x0b5d, 0x0b6c, 0x0b78, 0x0b8d, + 0x08c8, 0x08dd, 0x08ed, 0x08f3, 0x08ff, 0x0909, 0x0914, 0x0921, + 0x0939, 0x0939, 0x0949, 0x095e, 0x0974, 0x0977, 0x0991, 0x099c, + 0x09a2, 0x09ad, 0x09ba, 0x09c5, 0x09d0, 0x09d4, 0x09d9, 0x09e3, + 0x09ea, 0x09f0, 0x09fa, 0x0a05, 0x0a09, 0x0a0e, 0x0a19, 0x0a32, + 0x0a3f, 0x0a4a, 0x0a4e, 0x0a5c, 0x0a5f, 0x0a66, 0x0a80, 0x0a90, + 0x0a9c, 0x0aa8, 0x0ab2, 0x0ab8, 0x0ac4, 0x0ace, 0x0ad2, 0x0adc, + 0x0ae3, 0x0ae8, 0x0af3, 0x0afe, 0x0b03, 0x0b10, 0x0b14, 0x0b1b, + 0x0b29, 0x0b33, 0x0b3e, 0x0b4c, 0x0b57, 0x0b65, 0x0b74, 0x0b80, // Entry 100 - 13F - 0x0b97, 0x0ba5, 0x0bba, 0x0bc6, 0x0bd1, 0x0bdb, 0x0be0, 0x0bed, - 0x0c0b, 0x0c11, 0x0c1b, 0x0c25, 0x0c30, 0x0c48, 0x0c5a, 0x0c64, - 0x0c80, 0x0c8a, 0x0c8f, 0x0c95, 0x0c99, 0x0ca3, 0x0caf, 0x0cc1, - 0x0cc7, 0x0cd3, 0x0cee, 0x0d0d, 0x0d13, 0x0d23, 0x0d27, 0x0d35, - 0x0d4d, 0x0d56, 0x0d70, 0x0d8e, 0x0da5, 0x0dbc, 0x0dd1, 0x0de8, - 0x0df4, 0x0dfc, 0x0e08, 0x0e22, 0x0e26, 0x0e2b, 0x0e48, 0x0e4c, - 0x0e59, 0x0e63, 0x0e81, 0x0e98, 0x0eab, 0x0eb6, 0x0ebf, 0x0ec9, - 0x0ece, 0x0edc, 0x0ef3, 0x0eff, 0x0f05, 0x0f0a, 0x0f13, 0x0f1d, + 0x0b95, 0x0b9f, 0x0bad, 0x0bc2, 0x0bdb, 0x0be7, 0x0bf2, 0x0bfc, + 0x0c01, 0x0c0e, 0x0c2c, 0x0c32, 0x0c3c, 0x0c46, 0x0c51, 0x0c69, + 0x0c7b, 0x0c85, 0x0ca1, 0x0cab, 0x0cb0, 0x0cb6, 0x0cba, 0x0cc4, + 0x0cd0, 0x0ce2, 0x0ce8, 0x0cf4, 0x0d0f, 0x0d2e, 0x0d34, 0x0d44, + 0x0d48, 0x0d56, 0x0d6e, 0x0d77, 0x0d91, 0x0daf, 0x0dc6, 0x0ddd, + 0x0df2, 0x0e09, 0x0e15, 0x0e1d, 0x0e29, 0x0e43, 0x0e47, 0x0e4c, + 0x0e69, 0x0e6d, 0x0e7a, 0x0e84, 0x0ea2, 0x0eb9, 0x0ecc, 0x0ed7, + 0x0ee0, 0x0eea, 0x0eef, 0x0efd, 0x0f14, 0x0f20, 0x0f26, 0x0f2b, // Entry 140 - 17F - 0x0f39, 0x0f44, 0x0f57, 0x0f67, 0x0f73, 0x0f7e, 0x0f96, 0x0fb2, - 0x0fb6, 0x0fc0, 0x0fc6, 0x0fd3, 0x0fdd, 0x0fe9, 0x0ffe, 0x1004, - 0x100a, 0x1011, 0x101f, 0x102e, 0x1037, 0x1046, 0x1051, 0x105d, - 0x1060, 0x106a, 0x106e, 0x107c, 0x1083, 0x1087, 0x108e, 0x109b, - 0x10a2, 0x10a6, 0x10ae, 0x10b5, 0x10c2, 0x10ce, 0x10da, 0x10e5, - 0x10e9, 0x10f3, 0x1100, 0x1111, 0x111e, 0x112a, 0x1130, 0x1148, - 0x114c, 0x1155, 0x1160, 0x116c, 0x1174, 0x1179, 0x1185, 0x118f, - 0x119c, 0x11a7, 0x11ac, 0x11b7, 0x11c1, 0x11cd, 0x11df, 0x11ea, + 0x0f34, 0x0f3e, 0x0f5a, 0x0f65, 0x0f78, 0x0f88, 0x0f94, 0x0f9f, + 0x0fb7, 0x0fd3, 0x0fd7, 0x0fe1, 0x0fe7, 0x0ff4, 0x0ffe, 0x100a, + 0x101f, 0x1025, 0x102b, 0x1032, 0x1040, 0x104f, 0x1058, 0x1067, + 0x1072, 0x107e, 0x1081, 0x108b, 0x108f, 0x109d, 0x10a4, 0x10a8, + 0x10af, 0x10bc, 0x10c3, 0x10c7, 0x10cf, 0x10d6, 0x10e3, 0x10ef, + 0x10fb, 0x1106, 0x110a, 0x1114, 0x1121, 0x1132, 0x113f, 0x114b, + 0x1151, 0x1169, 0x116d, 0x1176, 0x1181, 0x118d, 0x1195, 0x119a, + 0x11a6, 0x11b0, 0x11bd, 0x11c8, 0x11cd, 0x11d8, 0x11e2, 0x11ee, // Entry 180 - 1BF - 0x11f5, 0x1200, 0x120d, 0x1217, 0x1220, 0x1235, 0x1241, 0x1251, - 0x1259, 0x1263, 0x126c, 0x1276, 0x127b, 0x1292, 0x129b, 0x12a6, - 0x12aa, 0x12b7, 0x12c5, 0x12d2, 0x12df, 0x12ea, 0x12ee, 0x12fb, - 0x1301, 0x1306, 0x130a, 0x1322, 0x133a, 0x1348, 0x134f, 0x1355, - 0x1360, 0x136d, 0x137a, 0x1386, 0x138a, 0x13a1, 0x13a8, 0x13ca, - 0x13d5, 0x13e1, 0x13ef, 0x13fd, 0x1402, 0x140e, 0x1420, 0x143d, - 0x1449, 0x1453, 0x1461, 0x146e, 0x1472, 0x147c, 0x1493, 0x1499, - 0x14a2, 0x14ad, 0x14c2, 0x14c8, 0x14ce, 0x14e2, 0x14ec, 0x1503, + 0x1200, 0x120b, 0x1216, 0x1221, 0x122e, 0x1238, 0x1241, 0x1256, + 0x1262, 0x1272, 0x127a, 0x1284, 0x128d, 0x1297, 0x129c, 0x12b3, + 0x12bc, 0x12c7, 0x12cb, 0x12d8, 0x12e6, 0x12f3, 0x1300, 0x130b, + 0x130f, 0x131c, 0x1322, 0x1327, 0x132b, 0x1343, 0x135b, 0x1369, + 0x1370, 0x1376, 0x1381, 0x138e, 0x139b, 0x13a7, 0x13ab, 0x13c2, + 0x13c9, 0x13eb, 0x13f6, 0x1402, 0x1410, 0x141e, 0x1423, 0x142f, + 0x1441, 0x145e, 0x146a, 0x1474, 0x1482, 0x148f, 0x1493, 0x149d, + 0x14b4, 0x14ba, 0x14c3, 0x14ce, 0x14e3, 0x14e9, 0x14ef, 0x1503, // Entry 1C0 - 1FF - 0x1511, 0x151e, 0x1528, 0x152d, 0x1532, 0x1548, 0x1558, 0x1564, - 0x156c, 0x1576, 0x1581, 0x158d, 0x15a7, 0x15bf, 0x15cd, 0x15d6, - 0x15e1, 0x15ed, 0x15f7, 0x1604, 0x160d, 0x161d, 0x1623, 0x163e, - 0x1650, 0x165d, 0x166e, 0x167c, 0x1686, 0x168b, 0x1694, 0x16a1, - 0x16ad, 0x16b9, 0x16c5, 0x16c8, 0x16d4, 0x16df, 0x16ea, 0x16f1, - 0x16fc, 0x1709, 0x171a, 0x1721, 0x172c, 0x1737, 0x1741, 0x174d, - 0x1761, 0x1767, 0x176b, 0x1775, 0x1781, 0x1790, 0x17a1, 0x17ae, - 0x17b7, 0x17c1, 0x17d6, 0x17dc, 0x17f0, 0x17fd, 0x1811, 0x1827, + 0x150d, 0x1524, 0x1532, 0x153f, 0x1549, 0x154e, 0x1553, 0x1569, + 0x1579, 0x1585, 0x158d, 0x1597, 0x15a2, 0x15ae, 0x15c1, 0x15db, + 0x15f3, 0x1601, 0x160a, 0x1615, 0x1621, 0x162b, 0x1638, 0x1641, + 0x1651, 0x1657, 0x1672, 0x1684, 0x1691, 0x16a2, 0x16b0, 0x16ba, + 0x16bf, 0x16c8, 0x16d5, 0x16e1, 0x16ed, 0x16f9, 0x16fc, 0x1708, + 0x1713, 0x171e, 0x1725, 0x1730, 0x173d, 0x174e, 0x1755, 0x1760, + 0x176b, 0x1775, 0x1781, 0x1795, 0x179b, 0x179f, 0x17a9, 0x17b5, + 0x17c4, 0x17d5, 0x17e2, 0x17eb, 0x17f5, 0x180a, 0x1810, 0x1824, // Entry 200 - 23F - 0x183e, 0x1854, 0x185f, 0x1869, 0x1875, 0x1880, 0x1884, 0x189e, - 0x18a4, 0x18a8, 0x18b3, 0x18be, 0x18d3, 0x18dc, 0x18e6, 0x18f0, - 0x18f5, 0x18f9, 0x18ff, 0x190a, 0x1916, 0x191f, 0x192c, 0x1938, - 0x1945, 0x194c, 0x1956, 0x195e, 0x1971, 0x197a, 0x1985, 0x198b, - 0x1997, 0x19aa, 0x19b3, 0x19bf, 0x19ca, 0x19d1, 0x19dc, 0x19f8, - 0x1a04, 0x1a10, 0x1a17, 0x1a1d, 0x1a20, 0x1a2c, 0x1a35, 0x1a4c, - 0x1a72, 0x1a7b, 0x1a86, 0x1a8b, 0x1a9d, 0x1aa9, 0x1ab4, 0x1abc, - 0x1ac4, 0x1add, 0x1ae8, 0x1af5, 0x1afe, 0x1b07, 0x1b10, 0x1b1d, + 0x1831, 0x1845, 0x185b, 0x1872, 0x1888, 0x1893, 0x189d, 0x18a9, + 0x18b4, 0x18b8, 0x18d2, 0x18d8, 0x18dc, 0x18e7, 0x18f2, 0x1907, + 0x1910, 0x191a, 0x1924, 0x1929, 0x192d, 0x1933, 0x193e, 0x194a, + 0x1953, 0x1960, 0x196c, 0x1979, 0x1980, 0x198a, 0x1992, 0x19a5, + 0x19ae, 0x19b9, 0x19bf, 0x19cb, 0x19de, 0x19e7, 0x19f3, 0x19fe, + 0x1a05, 0x1a10, 0x1a2c, 0x1a38, 0x1a44, 0x1a4b, 0x1a51, 0x1a54, + 0x1a60, 0x1a69, 0x1a80, 0x1aa6, 0x1aaf, 0x1aba, 0x1abf, 0x1ad1, + 0x1add, 0x1ae8, 0x1af0, 0x1af8, 0x1b11, 0x1b1c, 0x1b29, 0x1b32, // Entry 240 - 27F - 0x1b22, 0x1b2b, 0x1b37, 0x1b44, 0x1b51, 0x1b5e, 0x1b64, 0x1b84, - 0x1b8f, 0x1ba7, 0x1bab, 0x1bcc, 0x1bcc, 0x1bcc, 0x1bef, 0x1bef, - 0x1bef, 0x1bef, 0x1c00, 0x1c00, 0x1c17, 0x1c17, 0x1c17, 0x1c17, - 0x1c17, 0x1c24, 0x1c2f, 0x1c2f, 0x1c46, 0x1c52, 0x1c63, 0x1c77, - 0x1c93, -} // Size: 1242 bytes - -var daLangStr string = "" + // Size: 4022 bytes + 0x1b3b, 0x1b44, 0x1b51, 0x1b56, 0x1b5f, 0x1b6b, 0x1b78, 0x1b85, + 0x1b92, 0x1b98, 0x1bb8, 0x1bc3, 0x1bdb, 0x1bdf, 0x1c00, 0x1c00, + 0x1c00, 0x1c23, 0x1c23, 0x1c23, 0x1c41, 0x1c52, 0x1c52, 0x1c69, + 0x1c69, 0x1c69, 0x1c69, 0x1c69, 0x1c76, 0x1c81, 0x1c81, 0x1c98, + 0x1ca4, 0x1cb5, 0x1cc9, 0x1ce5, +} // Size: 1248 bytes + +const daLangStr string = "" + // Size: 4141 bytes "afarabkhasiskavestanafrikaansakanamhariskaragonesiskarabiskassamesiskava" + "riskaymaraaserbajdsjanskbashkirhviderussiskbulgarskbislamabambarabengali" + "tibetanskbretonskbosniskcatalansktjetjenskchamorrokorsikanskcreetjekkisk" + @@ -13485,51 +16706,53 @@ var daLangStr string = "" + // Size: 4022 bytes "tangalettiskmalagassiskmarshallesemaorimakedonskmalayalammongolskmarathi" + "skmalajiskmaltesiskburmesisknaurunordndebelenepalesiskndongahollandsknyn" + "orsknorsk bokmålsydndebelenavajonyanjaoccitanskojibwaoromooriyaossetiskp" + - "unjabipalipolskpashtoportugisiskquechuarætoromanskrundirumænskrussiskkin" + - "yarwandasanskritsardinsksindhinordsamisksangosingalesiskslovakiskslovens" + - "ksamoanskshonasomaliskalbanskserbiskswatisydsothosundanesisksvenskswahil" + - "itamilsktelugutajikthaitigrinyaturkmensktswanatongansktyrkisktsongatatar" + - "isktahitianskuyguriskukrainskurduusbekiskvendavietnamesiskvolapykvallons" + - "kwolofxhosajiddischyorubazhuangkinesiskzuluachinesiskacoliadangmeadyghea" + - "frihiliaghemainuakkadiskaleutisksydaltaiskoldengelskangikaaramæiskmapuch" + - "earapahoarawakasuasturiskawadhibaluchibalinesiskbasabamunghomalabejabemb" + - "abenabafutvestbaluchibhojpuribikolbinikomsiksikabrajbodobakossiburiatisk" + - "buginesiskbulublinmedumbacaddocaribiskcayugaatsamcebuanochigachibchachag" + - "ataichuukesemarichinookchoctawchipewyancherokeecheyennesoranikoptiskkrim" + - " tyrkiskkasjubiskdakotadargwataitadelawareathapaskiskdogribdinkazarmadog" + - "rinedersorbiskdualamiddelhollandskjola-fonyidyuladazagakiembuefikoldegyp" + - "tiskekajukelamitiskmiddelengelskewondofangfilippinskfonmiddelfranskoldfr" + - "ansknordfrisiskøstfrisiskfriuliangagagauziskgayogbayageezgilbertesiskmid" + - "delhøjtyskoldhøjtyskgondigorontalogotiskgrebooldgræskschweizertyskgusiig" + - "wichinhaidahawaiianskhiligaynonhittitiskhmongøvresorbiskhupaibanibibioil" + - "okoingushlojbanngombamachamejødisk-persiskjødisk-arabiskkarakalpakiskkab" + - "yliskkachinjjukambakawikabardiankanembutyapmakondekapverdiskkorokhasikho" + - "tanesiskkoyra-chiinikakokalenjinkimbundukomi-permjakiskkonkanikosraeankp" + - "ellekaratjai-balkarkarelskkurukhshambalabafiakölschkymykkutenajladinolan" + - "gilahndalambalezghianlakotamongolozinordluriluba-Lulualuisenolundaluolus" + - "hailuyanamaduresemafamagahimaithilimakasarmandingomasaimabamokshamandarm" + - "endemerumorisyenmiddelirskmakhuwa-meettometamicmacminangkabaumanchumanip" + - "urimohawkmossimundangflere sprogcreekmirandesiskmarwarimyeneerzyamazenis" + - "kneapolitansknamanedertysknewariniasniueankwasiongiemboonnogaioldislands" + - "kn-konordsothonuerklassisk newarisknyamwezinyankolenyoro sprognzimaosage" + - "osmannisk-tyrkiskpangasinanpahlavipampangapapiamentopalauanskoldpersiskf" + - "ønikiskponapeoldprovencalskquichérajasthanirapanuirarotonganromboromani" + - "arumænskrwasandaweyakutsamaritansksamburusasaksantalingambaysangusicilia" + - "nskskotsksydkurdisksenecasenaselkupiskkoyraboro sennioldirsktachelhitsha" + - "ntchadisk-arabisksidamosydsamisklulesamiskenaresamiskskoltesamisksoninke" + - "sogdiansksranan tongoserersahosukumasususumeriskshimaoreklassisk syrisks" + - "yrisktemnetesoterenotetumtigretivitokelauklingontlingittamasheknyasa ton" + - "gansktok pisintarokotsimshisktumbukatuvalutasawaqtuviniancentralmarokkan" + - "sk tamazightudmurtugaristiskumbundurotvaivotiskvunjowalsertyskwalamowara" + - "ywashowalbirikalmyksogayaoyapeseyangbenyembakantonesiskzapotecblissymbol" + - "erzenagatamazightzuniintet sprogligt indholdzazamoderne standardarabisks" + - "ydaserbajdsjanskøstrigsk tyskschweizerhøjtyskaustralsk engelskcanadisk e" + - "ngelskbritisk engelskamerikansk engelsklatinamerikansk spanskeuropæisk s" + - "panskmexicansk spanskcanadisk franskschweizisk franskflamskbrasiliansk p" + - "ortugisiskeuropæisk portugisiskmoldoviskserbokroatiskcongolesisk swahili" + - "forenklet kinesisktraditionelt kinesisk" - -var daLangIdx = []uint16{ // 610 elements + "unjabiskpalipolskpashtoportugisiskquechuarætoromanskrundirumænskrussiskk" + + "inyarwandasanskritsardinsksindhinordsamisksangosingalesiskslovakiskslove" + + "nsksamoanskshonasomaliskalbanskserbiskswatisydsothosundanesisksvenskswah" + + "ilitamilsktelugutadsjikiskthaitigrinyaturkmensktswanatongansktyrkisktson" + + "gatatarisktahitianskuyguriskukrainskurduusbekiskvendavietnamesiskvolapyk" + + "vallonskwolofisiXhosajiddischyorubazhuangkinesiskzuluachinesiskacoliadan" + + "gmeadygheafrihiliaghemainuakkadiskaleutisksydaltaiskoldengelskangikaaram" + + "æiskmapudungunarapahoarawakasuasturiskawadhibaluchibalinesiskbasaabamun" + + "ghomalabejabembabenabafutvestbaluchibhojpuribikolbinikomsiksikabrajbodob" + + "akossiburiatiskbuginesiskbulublinmedumbacaddocaribiskcayugaatsamcebuanoc" + + "higachibchachagataichuukesemarichinookchoctawchipewyancherokeecheyenneso" + + "ranikoptiskkrim-tyrkiskseselwa (kreol-fransk)kasjubiskdakotadargwataitad" + + "elawareathapaskiskdogribdinkazarmadogrinedersorbiskdualamiddelhollandskj" + + "ola-fonyidyuladazagakiembuefikoldegyptiskekajukelamitiskmiddelengelskewo" + + "ndofangfilippinskfonmiddelfranskoldfransknordfrisiskøstfrisiskfriulianga" + + "gagauziskgan-kinesiskgayogbayageezgilbertesiskmiddelhøjtyskoldhøjtyskgon" + + "digorontalogotiskgrebooldgræskschweizertyskgusiigwichinhaidahakka-kinesi" + + "skhawaiianskhiligaynonhittitiskhmongøvresorbiskxiang-kinesiskhupaibanibi" + + "bioilokoingushlojbanngombamachamejødisk-persiskjødisk-arabiskkarakalpaki" + + "skkabyliskkachinjjukambakawikabardiankanembutyapmakondekapverdiskkorokha" + + "sikhotanesiskkoyra-chiinikakokalenjinkimbundukomi-permjakiskkonkanikosra" + + "eankpellekaratjai-balkarkarelskkurukhshambalabafiakölschkymykkutenajladi" + + "nolangilahndalambalezghianlakotamongolozinordluriluba-Lulualuisenolundal" + + "uolushailuyanamaduresemafamagahimaithilimakasarmandingomasaimabamokshama" + + "ndarmendemerumorisyenmiddelirskmakhuwa-meettometamicmacminangkabaumanchu" + + "manipurimohawkmossimundangflere sprogcreekmirandesiskmarwarimyeneerzyama" + + "zeniskmin-kinesiskneapolitansknamanedertysknewariniasniueanskkwasiongiem" + + "boonnogaioldislandskn-konordsothonuerklassisk newarisknyamwezinyankoleny" + + "oro-sprognzimaosageosmannisk tyrkiskpangasinanpahlavipampangapapiamentop" + + "alauansknigeriansk pidginoldpersiskfønikiskponapepreussiskoldprovencalsk" + + "quichérajasthanirapanuirarotongaromboromaniarumænskrwasandaweyakutsamari" + + "tansk aramæisksamburusasaksantalingambaysangusicilianskskotsksydkurdisks" + + "enecasenaselkupiskkoyraboro sennioldirsktachelhitshantchadisk arabisksid" + + "amosydsamisklulesamiskenaresamiskskoltesamisksoninkesogdiansksranan tong" + + "oserersahosukumasususumeriskshimaoreklassisk syrisksyrisktemnetesotereno" + + "tetumtigretivitokelauklingontlingittamasheknyasa tongansktok pisintaroko" + + "tsimshisktumbukatuvalutasawaqtuviniancentralmarokkansk tamazightudmurtug" + + "aristiskumbundurodvaivotiskvunjowalsertyskwalamowaraywashowalbiriwu-kine" + + "siskkalmyksogayaoyapeseyangbenyembakantonesiskzapotecblissymbolerzenagat" + + "amazightzuniintet sprogligt indholdzazamoderne standardarabiskøstrigsk t" + + "yskschweizerhøjtyskaustralsk engelskcanadisk engelskbritisk engelskameri" + + "kansk engelsklatinamerikansk spanskeuropæisk spanskmexicansk spanskcanad" + + "isk franskschweizisk franskflamskbrasiliansk portugisiskeuropæisk portug" + + "isiskmoldoviskserbokroatiskcongolesisk swahiliforenklet kinesisktraditio" + + "nelt kinesisk" + +var daLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0029, 0x0034, 0x003b, 0x0045, 0x004c, 0x0052, 0x0060, 0x0067, 0x0073, 0x007b, @@ -13547,257 +16770,248 @@ var daLangIdx = []uint16{ // 610 elements 0x02c6, 0x02ce, 0x02da, 0x02e1, 0x02ec, 0x02f7, 0x02fc, 0x0305, 0x030e, 0x0316, 0x031f, 0x0327, 0x0330, 0x0339, 0x033e, 0x0349, 0x0353, 0x0359, 0x0362, 0x0369, 0x0376, 0x0380, 0x0386, 0x038c, - 0x0395, 0x039b, 0x03a0, 0x03a5, 0x03ad, 0x03b4, 0x03b8, 0x03bd, + 0x0395, 0x039b, 0x03a0, 0x03a5, 0x03ad, 0x03b6, 0x03ba, 0x03bf, // Entry 80 - BF - 0x03c3, 0x03ce, 0x03d5, 0x03e1, 0x03e6, 0x03ee, 0x03f5, 0x0400, - 0x0408, 0x0410, 0x0416, 0x0420, 0x0425, 0x0430, 0x0439, 0x0441, - 0x0449, 0x044e, 0x0456, 0x045d, 0x0464, 0x0469, 0x0471, 0x047c, - 0x0482, 0x0489, 0x0490, 0x0496, 0x049b, 0x049f, 0x04a7, 0x04b0, - 0x04b6, 0x04be, 0x04c5, 0x04cb, 0x04d3, 0x04dd, 0x04e5, 0x04ed, - 0x04f1, 0x04f9, 0x04fe, 0x050a, 0x0511, 0x0519, 0x051e, 0x0523, - 0x052b, 0x0531, 0x0537, 0x053f, 0x0543, 0x054d, 0x0552, 0x0559, - 0x055f, 0x055f, 0x0567, 0x056c, 0x0570, 0x0578, 0x0578, 0x0580, + 0x03c5, 0x03d0, 0x03d7, 0x03e3, 0x03e8, 0x03f0, 0x03f7, 0x0402, + 0x040a, 0x0412, 0x0418, 0x0422, 0x0427, 0x0432, 0x043b, 0x0443, + 0x044b, 0x0450, 0x0458, 0x045f, 0x0466, 0x046b, 0x0473, 0x047e, + 0x0484, 0x048b, 0x0492, 0x0498, 0x04a2, 0x04a6, 0x04ae, 0x04b7, + 0x04bd, 0x04c5, 0x04cc, 0x04d2, 0x04da, 0x04e4, 0x04ec, 0x04f4, + 0x04f8, 0x0500, 0x0505, 0x0511, 0x0518, 0x0520, 0x0525, 0x052d, + 0x0535, 0x053b, 0x0541, 0x0549, 0x054d, 0x0557, 0x055c, 0x0563, + 0x0569, 0x0569, 0x0571, 0x0576, 0x057a, 0x0582, 0x0582, 0x058a, // Entry C0 - FF - 0x0580, 0x058a, 0x0594, 0x059a, 0x05a3, 0x05aa, 0x05aa, 0x05b1, - 0x05b1, 0x05b7, 0x05b7, 0x05b7, 0x05ba, 0x05ba, 0x05c2, 0x05c2, - 0x05c8, 0x05cf, 0x05d9, 0x05d9, 0x05dd, 0x05e2, 0x05e2, 0x05e9, - 0x05ed, 0x05f2, 0x05f2, 0x05f6, 0x05fb, 0x05fb, 0x0606, 0x060e, - 0x0613, 0x0617, 0x0617, 0x061a, 0x0621, 0x0621, 0x0621, 0x0625, - 0x0625, 0x0629, 0x0630, 0x0639, 0x0643, 0x0647, 0x064b, 0x0652, - 0x0657, 0x065f, 0x0665, 0x066a, 0x0671, 0x0676, 0x067d, 0x0685, - 0x068d, 0x0691, 0x0698, 0x069f, 0x06a8, 0x06b0, 0x06b8, 0x06be, + 0x058a, 0x0594, 0x059e, 0x05a4, 0x05ad, 0x05b7, 0x05b7, 0x05be, + 0x05be, 0x05be, 0x05c4, 0x05c4, 0x05c4, 0x05c7, 0x05c7, 0x05cf, + 0x05cf, 0x05d5, 0x05dc, 0x05e6, 0x05e6, 0x05eb, 0x05f0, 0x05f0, + 0x05f7, 0x05fb, 0x0600, 0x0600, 0x0604, 0x0609, 0x0609, 0x0614, + 0x061c, 0x0621, 0x0625, 0x0625, 0x0628, 0x062f, 0x062f, 0x062f, + 0x0633, 0x0633, 0x0637, 0x063e, 0x0647, 0x0651, 0x0655, 0x0659, + 0x0660, 0x0665, 0x066d, 0x0673, 0x0678, 0x067f, 0x0684, 0x068b, + 0x0693, 0x069b, 0x069f, 0x06a6, 0x06ad, 0x06b6, 0x06be, 0x06c6, // Entry 100 - 13F - 0x06c5, 0x06c5, 0x06d1, 0x06da, 0x06e0, 0x06e6, 0x06eb, 0x06f3, - 0x06fe, 0x0704, 0x0709, 0x070e, 0x0713, 0x071f, 0x071f, 0x0724, - 0x0733, 0x073d, 0x0742, 0x0748, 0x074e, 0x0752, 0x0752, 0x075d, - 0x0763, 0x076c, 0x0779, 0x0779, 0x077f, 0x077f, 0x0783, 0x078d, - 0x078d, 0x0790, 0x0790, 0x079c, 0x07a5, 0x07a5, 0x07b0, 0x07bb, - 0x07c3, 0x07c5, 0x07ce, 0x07ce, 0x07d2, 0x07d7, 0x07d7, 0x07db, - 0x07e7, 0x07e7, 0x07f5, 0x0800, 0x0800, 0x0805, 0x080e, 0x0814, - 0x0819, 0x0822, 0x082f, 0x082f, 0x082f, 0x0834, 0x083b, 0x0840, + 0x06cc, 0x06d3, 0x06d3, 0x06df, 0x06f5, 0x06fe, 0x0704, 0x070a, + 0x070f, 0x0717, 0x0722, 0x0728, 0x072d, 0x0732, 0x0737, 0x0743, + 0x0743, 0x0748, 0x0757, 0x0761, 0x0766, 0x076c, 0x0772, 0x0776, + 0x0776, 0x0781, 0x0787, 0x0790, 0x079d, 0x079d, 0x07a3, 0x07a3, + 0x07a7, 0x07b1, 0x07b1, 0x07b4, 0x07b4, 0x07c0, 0x07c9, 0x07c9, + 0x07d4, 0x07df, 0x07e7, 0x07e9, 0x07f2, 0x07fe, 0x0802, 0x0807, + 0x0807, 0x080b, 0x0817, 0x0817, 0x0825, 0x0830, 0x0830, 0x0835, + 0x083e, 0x0844, 0x0849, 0x0852, 0x085f, 0x085f, 0x085f, 0x0864, // Entry 140 - 17F - 0x0840, 0x084a, 0x084a, 0x0854, 0x085d, 0x0862, 0x086e, 0x086e, - 0x0872, 0x0876, 0x087c, 0x0881, 0x0887, 0x0887, 0x0887, 0x088d, - 0x0893, 0x089a, 0x08a9, 0x08b8, 0x08b8, 0x08c5, 0x08cd, 0x08d3, - 0x08d6, 0x08db, 0x08df, 0x08e8, 0x08ef, 0x08f3, 0x08fa, 0x0904, - 0x0904, 0x0908, 0x0908, 0x090d, 0x0918, 0x0924, 0x0924, 0x0924, - 0x0928, 0x0930, 0x0938, 0x0947, 0x094e, 0x0956, 0x095c, 0x096b, - 0x096b, 0x096b, 0x0972, 0x0978, 0x0980, 0x0985, 0x098c, 0x0991, - 0x0998, 0x099e, 0x09a3, 0x09a9, 0x09ae, 0x09b6, 0x09b6, 0x09b6, + 0x086b, 0x0870, 0x087e, 0x0888, 0x0888, 0x0892, 0x089b, 0x08a0, + 0x08ac, 0x08ba, 0x08be, 0x08c2, 0x08c8, 0x08cd, 0x08d3, 0x08d3, + 0x08d3, 0x08d9, 0x08df, 0x08e6, 0x08f5, 0x0904, 0x0904, 0x0911, + 0x0919, 0x091f, 0x0922, 0x0927, 0x092b, 0x0934, 0x093b, 0x093f, + 0x0946, 0x0950, 0x0950, 0x0954, 0x0954, 0x0959, 0x0964, 0x0970, + 0x0970, 0x0970, 0x0974, 0x097c, 0x0984, 0x0993, 0x099a, 0x09a2, + 0x09a8, 0x09b7, 0x09b7, 0x09b7, 0x09be, 0x09c4, 0x09cc, 0x09d1, + 0x09d8, 0x09dd, 0x09e4, 0x09ea, 0x09ef, 0x09f5, 0x09fa, 0x0a02, // Entry 180 - 1BF - 0x09b6, 0x09bc, 0x09bc, 0x09c1, 0x09c5, 0x09cd, 0x09cd, 0x09d7, - 0x09de, 0x09e3, 0x09e6, 0x09ec, 0x09f2, 0x09f2, 0x09f2, 0x09fa, - 0x09fe, 0x0a04, 0x0a0c, 0x0a13, 0x0a1b, 0x0a20, 0x0a24, 0x0a2a, - 0x0a30, 0x0a35, 0x0a39, 0x0a41, 0x0a4b, 0x0a59, 0x0a5d, 0x0a63, - 0x0a6e, 0x0a74, 0x0a7c, 0x0a82, 0x0a87, 0x0a87, 0x0a8e, 0x0a99, - 0x0a9e, 0x0aa9, 0x0ab0, 0x0ab0, 0x0ab5, 0x0aba, 0x0ac2, 0x0ac2, - 0x0ace, 0x0ad2, 0x0adb, 0x0ae1, 0x0ae5, 0x0aeb, 0x0aeb, 0x0af1, - 0x0afa, 0x0aff, 0x0b0a, 0x0b0a, 0x0b0e, 0x0b17, 0x0b1b, 0x0b2c, + 0x0a02, 0x0a02, 0x0a02, 0x0a08, 0x0a08, 0x0a0d, 0x0a11, 0x0a19, + 0x0a19, 0x0a23, 0x0a2a, 0x0a2f, 0x0a32, 0x0a38, 0x0a3e, 0x0a3e, + 0x0a3e, 0x0a46, 0x0a4a, 0x0a50, 0x0a58, 0x0a5f, 0x0a67, 0x0a6c, + 0x0a70, 0x0a76, 0x0a7c, 0x0a81, 0x0a85, 0x0a8d, 0x0a97, 0x0aa5, + 0x0aa9, 0x0aaf, 0x0aba, 0x0ac0, 0x0ac8, 0x0ace, 0x0ad3, 0x0ad3, + 0x0ada, 0x0ae5, 0x0aea, 0x0af5, 0x0afc, 0x0afc, 0x0b01, 0x0b06, + 0x0b0e, 0x0b1a, 0x0b26, 0x0b2a, 0x0b33, 0x0b39, 0x0b3d, 0x0b45, + 0x0b45, 0x0b4b, 0x0b54, 0x0b59, 0x0b64, 0x0b64, 0x0b68, 0x0b71, // Entry 1C0 - 1FF - 0x0b34, 0x0b3c, 0x0b47, 0x0b4c, 0x0b51, 0x0b62, 0x0b6c, 0x0b73, - 0x0b7b, 0x0b85, 0x0b8e, 0x0b8e, 0x0b8e, 0x0b8e, 0x0b98, 0x0b98, - 0x0ba1, 0x0ba1, 0x0ba1, 0x0ba7, 0x0ba7, 0x0bb5, 0x0bbc, 0x0bbc, - 0x0bc6, 0x0bcd, 0x0bd7, 0x0bd7, 0x0bd7, 0x0bdc, 0x0be2, 0x0be2, - 0x0be2, 0x0be2, 0x0beb, 0x0bee, 0x0bf5, 0x0bfa, 0x0c05, 0x0c0c, - 0x0c11, 0x0c18, 0x0c18, 0x0c1f, 0x0c24, 0x0c2e, 0x0c34, 0x0c34, - 0x0c3e, 0x0c44, 0x0c48, 0x0c48, 0x0c51, 0x0c60, 0x0c67, 0x0c67, - 0x0c70, 0x0c74, 0x0c84, 0x0c8a, 0x0c8a, 0x0c8a, 0x0c93, 0x0c9d, + 0x0b75, 0x0b86, 0x0b8e, 0x0b96, 0x0ba1, 0x0ba6, 0x0bab, 0x0bbc, + 0x0bc6, 0x0bcd, 0x0bd5, 0x0bdf, 0x0be8, 0x0be8, 0x0bf9, 0x0bf9, + 0x0bf9, 0x0c03, 0x0c03, 0x0c0c, 0x0c0c, 0x0c0c, 0x0c12, 0x0c1b, + 0x0c29, 0x0c30, 0x0c30, 0x0c3a, 0x0c41, 0x0c4a, 0x0c4a, 0x0c4a, + 0x0c4f, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c5e, 0x0c61, 0x0c68, + 0x0c6d, 0x0c82, 0x0c89, 0x0c8e, 0x0c95, 0x0c95, 0x0c9c, 0x0ca1, + 0x0cab, 0x0cb1, 0x0cb1, 0x0cbb, 0x0cc1, 0x0cc5, 0x0cc5, 0x0cce, + 0x0cdd, 0x0ce4, 0x0ce4, 0x0ced, 0x0cf1, 0x0d01, 0x0d07, 0x0d07, // Entry 200 - 23F - 0x0ca8, 0x0cb4, 0x0cbb, 0x0cc4, 0x0cd0, 0x0cd5, 0x0cd9, 0x0cd9, - 0x0cdf, 0x0ce3, 0x0ceb, 0x0cf3, 0x0d02, 0x0d08, 0x0d08, 0x0d08, - 0x0d0d, 0x0d11, 0x0d17, 0x0d1c, 0x0d21, 0x0d25, 0x0d2c, 0x0d2c, - 0x0d33, 0x0d3a, 0x0d3a, 0x0d42, 0x0d50, 0x0d59, 0x0d59, 0x0d5f, - 0x0d5f, 0x0d68, 0x0d68, 0x0d6f, 0x0d75, 0x0d7c, 0x0d84, 0x0d9f, - 0x0da5, 0x0daf, 0x0db6, 0x0db9, 0x0dbc, 0x0dbc, 0x0dbc, 0x0dbc, - 0x0dbc, 0x0dc2, 0x0dc2, 0x0dc7, 0x0dd1, 0x0dd7, 0x0ddc, 0x0de1, - 0x0de8, 0x0de8, 0x0dee, 0x0dee, 0x0df2, 0x0df5, 0x0dfb, 0x0e02, + 0x0d07, 0x0d10, 0x0d1a, 0x0d25, 0x0d31, 0x0d38, 0x0d41, 0x0d4d, + 0x0d52, 0x0d56, 0x0d56, 0x0d5c, 0x0d60, 0x0d68, 0x0d70, 0x0d7f, + 0x0d85, 0x0d85, 0x0d85, 0x0d8a, 0x0d8e, 0x0d94, 0x0d99, 0x0d9e, + 0x0da2, 0x0da9, 0x0da9, 0x0db0, 0x0db7, 0x0db7, 0x0dbf, 0x0dcd, + 0x0dd6, 0x0dd6, 0x0ddc, 0x0ddc, 0x0de5, 0x0de5, 0x0dec, 0x0df2, + 0x0df9, 0x0e01, 0x0e1c, 0x0e22, 0x0e2c, 0x0e33, 0x0e36, 0x0e39, + 0x0e39, 0x0e39, 0x0e39, 0x0e39, 0x0e3f, 0x0e3f, 0x0e44, 0x0e4e, + 0x0e54, 0x0e59, 0x0e5e, 0x0e65, 0x0e70, 0x0e76, 0x0e76, 0x0e7a, // Entry 240 - 27F - 0x0e07, 0x0e07, 0x0e12, 0x0e19, 0x0e25, 0x0e25, 0x0e2b, 0x0e34, - 0x0e38, 0x0e4f, 0x0e53, 0x0e6a, 0x0e7b, 0x0e89, 0x0e9a, 0x0eab, - 0x0ebb, 0x0eca, 0x0edc, 0x0ef2, 0x0f03, 0x0f13, 0x0f13, 0x0f22, - 0x0f33, 0x0f33, 0x0f39, 0x0f50, 0x0f66, 0x0f6f, 0x0f7c, 0x0f8f, - 0x0fa1, 0x0fb6, -} // Size: 1244 bytes - -var deLangStr string = "" + // Size: 6195 bytes + 0x0e7d, 0x0e83, 0x0e8a, 0x0e8f, 0x0e8f, 0x0e9a, 0x0ea1, 0x0ead, + 0x0ead, 0x0eb3, 0x0ebc, 0x0ec0, 0x0ed7, 0x0edb, 0x0ef2, 0x0ef2, + 0x0f00, 0x0f11, 0x0f22, 0x0f32, 0x0f41, 0x0f53, 0x0f69, 0x0f7a, + 0x0f8a, 0x0f8a, 0x0f99, 0x0faa, 0x0faa, 0x0fb0, 0x0fc7, 0x0fdd, + 0x0fe6, 0x0ff3, 0x1006, 0x1018, 0x102d, +} // Size: 1250 bytes + +const deLangStr string = "" + // Size: 5600 bytes "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" + "ischAwarischAymaraAserbaidschanischBaschkirischWeißrussischBulgarischBis" + "lamaBambaraBengalischTibetischBretonischBosnischKatalanischTschetschenis" + - "chChamorro-SpracheKorsischCreeTschechischKirchenslawischTschuwaschischWa" + - "lisischDänischDeutschMaledivischDzongkhaEweGriechischEnglischEsperantoSp" + - "anischEstnischBaskischPersischFulFinnischFidschiFäröischFranzösischWestf" + - "riesischIrischSchottisches GälischGalizischGuaraniGujaratiManxHaussaHebr" + - "äischHindiHiri-MotuKroatischHaiti-KreolischUngarischArmenischHerero-Spr" + - "acheInterlinguaIndonesischInterlingueIgboYiInupiakIdo-SpracheIsländischI" + - "talienischInuktitutJapanischJavanischGeorgischKongolesischKikuyuKwanyama" + - "KasachischGrönländischKhmerKannadaKoreanischKanuri-SpracheKaschmiriKurdi" + - "schKomi-SpracheKornischKirgisischLateinLuxemburgischGandaLimburgischLing" + - "alaLaotischLitauischLuba-KatangaLettischMadagassischMarschallesischMaori" + - "MazedonischMalayalamMongolischMarathiMalaiischMaltesischBirmanischNaurui" + - "schNord-NdebeleNepalesischNdongaNiederländischNorwegisch NynorskNorwegis" + - "ch BokmålSüd-Ndebele-SpracheNavajoNyanja-SpracheOkzitanischOjibwa-Sprach" + - "eOromoOriyaOssetischPunjabiPaliPolnischPaschtuPortugiesischQuechuaRätoro" + - "manischRundiRumänischRussischKinyarwandaSanskritSardischSindhiNordsamisc" + - "hSangoSinghalesischSlowakischSlowenischSamoanischShonaSomaliAlbanischSer" + - "bischSwaziSüd-Sotho-SpracheSundanesischSchwedischSuaheliTamilTeluguTadsc" + - "hikischThailändischTigrinyaTurkmenischTswana-SpracheTongaischTürkischTso" + - "ngaTatarischTahitischUigurischUkrainischUrduUsbekischVenda-SpracheVietna" + - "mesischVolapükWallonischWolofXhosaJiddischYorubaZhuangChinesischZuluAceh" + - "-SpracheAcholi-SpracheAdangmeAdygeischTunesisches ArabischAfrihiliAghemA" + - "inu-SpracheAkkadischAlabamaAleutischGegischSüd-AltaischAltenglischAngika" + - "AramäischMapudungunAraonaArapaho-SpracheAlgerisches ArabischArawak-Sprac" + - "heMarokkanisches ArabischÄgyptisches ArabischPareAmerikanische Gebärdens" + - "pracheAsturianischKotavaAwadhiBelutschischBalinesischBairischBasaa-Sprac" + - "heBamunBatak TobaGhomalaBedauyeBembaBetawiBenaBafutBadagaWestliches Belu" + - "tschiBhodschpuriBikol-SpracheBini-SpracheBanjaresischKomBlackfoot-Sprach" + - "eBishnupriyaBachtiarischBraj-BhakhaBrahuiBodoAkooseBurjatischBuginesisch" + - "BuluBlinMedumbaCaddoKaribischCayugaAtsamCebuanoRukigaChibcha-SpracheTsch" + - "agataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheyenn" + - "eZentralkurdischKoptischCapiznonKrimtatarischKaschubischDakota-SpracheDa" + - "rginischTaitaDelaware-SpracheSlaveDogribDinka-SpracheZarmaDogriNiedersor" + - "bischZentral-DusunDualaMittelniederländischDiolaDyula-SpracheDazagaEmbuE" + - "fikEmilianischÄgyptischEkajukElamischMittelenglischZentral-Alaska-YupikE" + - "wondoExtremadurischPangwe-SpracheFilipinoMeänkieliFon-SpracheCajunMittel" + - "französischAltfranzösischFrankoprovenzalischNordfriesischOstfriesischFri" + - "ulischGa-SpracheGagausischGanGayoGbaya-SpracheGabriGeezGilbertesischGila" + - "kiMittelhochdeutschAlthochdeutschGoa-KonkaniGondi-SpracheMongondouGotisc" + - "hGrebo-SpracheAltgriechischSchweizerdeutschWayúuFarefareGusiiKutchin-Spr" + - "acheHaida-SpracheHakkaHawaiischFidschi-HindiHiligaynon-SpracheHethitisch" + - "Miao-SpracheObersorbischXiangHupaIbanIbibioIlokano-SpracheInguschischIsc" + - "horischJamaikanisch-kreolische SpracheLojbanNgombaMachameJüdisch-Persisc" + - "hJüdisch-ArabischJütischKarakalpakischKabylischKachin-SpracheJjuKambaKaw" + - "iKabardinischKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasi-Spra" + - "cheSakischKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbundu-SpracheKomi-Pe" + - "rmjakischKonkaniKosraeanischKpelle-SpracheKaratschaiisch-BalkarischKrioK" + - "inaray-aKarelischOraon-SpracheShambalaBafiaKölschKumükischKutenai-Sprach" + - "eLadinoLangiLahndaLamba-SpracheLesgischLingua Franca NovaLigurischLivisc" + - "hLakotaLombardischMongoRotse-SpracheNördliches LuriLettgallischLuba-Lulu" + - "aLuiseno-SpracheLunda-SpracheLuo-SpracheLushai-SpracheLuhyaKlassisches C" + - "hinesischLasischMaduresischMafaKhottaMaithiliMakassarischManding-Sprache" + - "MassaiMabaMokshaMandaresischMende-SpracheMeruMorisyenMittelirischMakhuwa" + - "-MeettoMeta’Micmac-SpracheMinangkabau-SpracheMandschurischMeithei-Sprach" + - "eMohawkMossi-SpracheBergmariMundangMehrsprachigMuskogee-SpracheMirandesi" + - "schMarwariMentawaiMyeneErsja-MordwinischMasanderanischMin NanNeapolitani" + - "schNamaNiederdeutschNewariNias-SpracheNiue-SpracheAo-NagaKwasioNgiemboon" + - "NogaiAltnordischNovialN’KoNord-Sotho-SpracheNuerAlt-NewariNyamwezi-Sprac" + - "heNyankoleNyoroNzimaOsage-SpracheOsmanischPangasinan-SpracheMittelpersis" + - "chPampanggan-SprachePapiamentoPalauPicardischPennsylvaniadeutschPlautdie" + - "tschAltpersischPfälzischPhönikischPiemontesischPontischPonapeanischAltpr" + - "eußischAltprovenzalischK’iche’Chimborazo Hochland-QuechuaRajasthaniOster" + - "insel-SpracheRarotonganischRomagnolTarifitRomboRomaniRotumanischRussinis" + - "chRovianaAromunischRwaSandawe-SpracheJakutischSamaritanischSamburuSasakS" + - "antaliSaurashtraNgambaySanguSizilianischSchottischSassarischSüdkurdischS" + - "enecaSenaSeriSelkupischKoyra SenniAltirischSamogitischTaschelhitSchan-Sp" + - "racheTschadisch-ArabischSidamoSchlesischSelayarSüdsamischLule-SamischIna" + - "ri-SamischSkolt-SamischSoninke-SpracheSogdischSrananischSerer-SpracheSah" + - "oSaterfriesischSukuma-SpracheSusuSumerischKomorischAltsyrischSyrischSchl" + - "esisch (Polen)TuluTemneTesoTereno-SpracheTetum-SpracheTigreTiv-SpracheTo" + - "kelauanischTsachurischKlingonischTlingit-SpracheTalischTamaseqTsonga-Spr" + - "acheNeumelanesischTuroyoTarokoTsakonischTsimshian-SpracheTatischTumbuka-" + - "SpracheElliceanischTasawaqTuwinischZentralatlas-TamazightUdmurtischUgari" + - "tischMbundu-SpracheRootVaiVenetischWepsischWestflämischMainfränkischWoti" + - "schVõroVunjoWalser-DialekteWalamo-SpracheWarayWasho-SpracheWarlpiriWuKal" + - "mückischMingrelischSogaYao-SpracheYapesischYangbenYembaNheengatuKantones" + - "ischZapotekischBliss-SymboleSeeländischZenagaTamazightZuni-SpracheKeine " + - "SprachinhalteZazaModernes HocharabischÖsterreichisches DeutschSchweizer " + - "HochdeutschAustralisches EnglischKanadisches EnglischBritisches Englisch" + - "Amerikanisches EnglischLateinamerikanisches SpanischEuropäisches Spanisc" + - "hMexikanisches SpanischKanadisches FranzösischSchweizer FranzösischNiede" + - "rsächsischFlämischBrasilianisches PortugiesischEuropäisches Portugiesisc" + - "hMoldauischSerbo-KroatischKongo-SuaheliChinesisch (vereinfacht)Chinesisc" + - "h (traditionell)" - -var deLangIdx = []uint16{ // 610 elements + "chChamorroKorsischCreeTschechischKirchenslawischTschuwaschischWalisischD" + + "änischDeutschDhivehiDzongkhaEweGriechischEnglischEsperantoSpanischEstni" + + "schBaskischPersischFulFinnischFidschiFäröischFranzösischWestfriesischIri" + + "schSchottisches GälischGalicischGuaraniGujaratiManxHaussaHebräischHindiH" + + "iri-MotuKroatischHaiti-KreolischUngarischArmenischHereroInterlinguaIndon" + + "esischInterlingueIgboYiInupiakIdoIsländischItalienischInuktitutJapanisch" + + "JavanischGeorgischKongolesischKikuyuKwanyamaKasachischGrönländischKhmerK" + + "annadaKoreanischKanuriKaschmiriKurdischKomiKornischKirgisischLateinLuxem" + + "burgischGandaLimburgischLingalaLaotischLitauischLuba-KatangaLettischMada" + + "gassischMarschallesischMaoriMazedonischMalayalamMongolischMarathiMalaiis" + + "chMaltesischBirmanischNauruischNord-NdebeleNepalesischNdongaNiederländis" + + "chNorwegisch NynorskNorwegisch BokmålSüd-NdebeleNavajoNyanjaOkzitanischO" + + "jibwaOromoOriyaOssetischPunjabiPaliPolnischPaschtuPortugiesischQuechuaRä" + + "toromanischRundiRumänischRussischKinyarwandaSanskritSardischSindhiNordsa" + + "mischSangoSinghalesischSlowakischSlowenischSamoanischShonaSomaliAlbanisc" + + "hSerbischSwaziSüd-SothoSundanesischSchwedischSuaheliTamilTeluguTadschiki" + + "schThailändischTigrinyaTurkmenischTswanaTongaischTürkischTsongaTatarisch" + + "TahitischUigurischUkrainischUrduUsbekischVendaVietnamesischVolapükWallon" + + "ischWolofXhosaJiddischYorubaZhuangChinesischZuluAcehAcholiAdangmeAdygeis" + + "chTunesisches ArabischAfrihiliAghemAinuAkkadischAlabamaAleutischGegischS" + + "üd-AltaischAltenglischAngikaAramäischMapudungunAraonaArapahoAlgerisches" + + " ArabischArawakMarokkanisches ArabischÄgyptisches ArabischAsuAmerikanisc" + + "he GebärdenspracheAsturianischKotavaAwadhiBelutschischBalinesischBairisc" + + "hBasaaBamunBatak TobaGhomalaBedauyeBembaBetawiBenaBafutBadagaWestliches " + + "BelutschiBhodschpuriBikolBiniBanjaresischKomBlackfootBishnupriyaBachtiar" + + "ischBraj-BhakhaBrahuiBodoAkooseBurjatischBuginesischBuluBlinMedumbaCaddo" + + "KaribischCayugaAtsamCebuanoRukigaChibchaTschagataischChuukesischMariChin" + + "ookChoctawChipewyanCherokeeCheyenneZentralkurdischKoptischCapiznonKrimta" + + "tarischSeychellenkreolKaschubischDakotaDarginischTaitaDelawareSlaveDogri" + + "bDinkaZarmaDogriNiedersorbischZentral-DusunDualaMittelniederländischDiol" + + "aDyulaDazagaEmbuEfikEmilianischÄgyptischEkajukElamischMittelenglischZent" + + "ral-Alaska-YupikEwondoExtremadurischPangweFilipinoMeänkieliFonCajunMitte" + + "lfranzösischAltfranzösischFrankoprovenzalischNordfriesischOstfriesischFr" + + "iaulischGaGagausischGanGayoGbayaGabriGeezKiribatischGilakiMittelhochdeut" + + "schAlthochdeutschGoa-KonkaniGondiMongondouGotischGreboAltgriechischSchwe" + + "izerdeutschWayúuFarefareGusiiKutchinHaidaHakkaHawaiischFidschi-HindiHili" + + "gaynonHethitischMiaoObersorbischXiangHupaIbanIbibioIlokanoInguschischIsc" + + "horischJamaikanisch-KreolischLojbanNgombaMachameJüdisch-PersischJüdisch-" + + "ArabischJütischKarakalpakischKabylischKachinJjuKambaKawiKabardinischKane" + + "mbuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiSakischKoyra ChiiniKho" + + "warKirmanjkiKakoKalenjinKimbunduKomi-PermjakischKonkaniKosraeanischKpell" + + "eKaratschaiisch-BalkarischKrioKinaray-aKarelischOraonShambalaBafiaKölsch" + + "KumükischKutenaiLadinoLangiLahndaLambaLesgischLingua Franca NovaLigurisc" + + "hLivischLakotaLombardischMongoLoziNördliches LuriLettgallischLuba-LuluaL" + + "uisenoLundaLuoLushaiLuhyaKlassisches ChinesischLasischMaduresischMafaKho" + + "ttaMaithiliMakassarischMalinkeMassaiMabaMokschanischMandaresischMendeMer" + + "uMorisyenMittelirischMakhuwa-MeettoMeta’MicmacMinangkabauMandschurischMe" + + "itheiMohawkMossiBergmariMundangMehrsprachigMuskogeeMirandesischMarwariMe" + + "ntawaiMyeneErsja-MordwinischMasanderanischMin NanNeapolitanischNamaNiede" + + "rdeutschNewariNiasNiueAo-NagaKwasioNgiemboonNogaiAltnordischNovialN’KoNo" + + "rd-SothoNuerAlt-NewariNyamweziNyankoleNyoroNzimaOsageOsmanischPangasinan" + + "MittelpersischPampangganPapiamentoPalauPicardischNigerianisches PidginPe" + + "nnsylvaniadeutschPlautdietschAltpersischPfälzischPhönizischPiemontesisch" + + "PontischPonapeanischAltpreußischAltprovenzalischK’iche’Chimborazo Hochla" + + "nd-QuechuaRajasthaniRapanuiRarotonganischRomagnolTarifitRomboRomaniRotum" + + "anischRussinischRovianaAromunischRwaSandaweJakutischSamaritanischSamburu" + + "SasakSantaliSaurashtraNgambaySanguSizilianischSchottischSassarischSüdkur" + + "dischSenecaSenaSeriSelkupischKoyra SenniAltirischSamogitischTaschelhitSc" + + "hanTschadisch-ArabischSidamoSchlesisch (Niederschlesisch)SelayarSüdsamis" + + "chLule-SamischInari-SamischSkolt-SamischSoninkeSogdischSrananischSererSa" + + "hoSaterfriesischSukumaSusuSumerischKomorischAltsyrischSyrischSchlesisch " + + "(Wasserpolnisch)TuluTemneTesoTerenoTetumTigreTivTokelauanischTsachurisch" + + "KlingonischTlingitTalischTamaseqNyasa TongaNeumelanesischTuroyoTarokoTsa" + + "konischTsimshianTatischTumbukaTuvaluischTasawaqTuwinischZentralatlas-Tam" + + "azightUdmurtischUgaritischUmbunduRootVaiVenetischWepsischWestflämischMai" + + "nfränkischWotischVõroVunjoWalliserdeutschWalamoWarayWashoWarlpiriWuKalmü" + + "ckischMingrelischSogaYaoYapesischYangbenYembaNheengatuKantonesischZapote" + + "kischBliss-SymboleSeeländischZenagaTamazightZuniKeine SprachinhalteZazaM" + + "odernes HocharabischÖsterreichisches DeutschSchweizer HochdeutschAustral" + + "isches EnglischKanadisches EnglischBritisches EnglischAmerikanisches Eng" + + "lischLateinamerikanisches SpanischEuropäisches SpanischMexikanisches Spa" + + "nischKanadisches FranzösischSchweizer FranzösischNiedersächsischFlämisch" + + "Brasilianisches PortugiesischEuropäisches PortugiesischMoldauischSerbo-K" + + "roatischKongo-SwahiliChinesisch (vereinfacht)Chinesisch (traditionell)" + +var deLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008e, 0x0095, 0x009c, 0x00a6, 0x00af, 0x00b9, 0x00c1, 0x00cc, 0x00db, - 0x00eb, 0x00f3, 0x00f7, 0x0102, 0x0111, 0x011f, 0x0128, 0x0130, - 0x0137, 0x0142, 0x014a, 0x014d, 0x0157, 0x015f, 0x0168, 0x0170, - 0x0178, 0x0180, 0x0188, 0x018b, 0x0193, 0x019a, 0x01a4, 0x01b0, - 0x01bd, 0x01c3, 0x01d8, 0x01e1, 0x01e8, 0x01f0, 0x01f4, 0x01fa, - 0x0204, 0x0209, 0x0212, 0x021b, 0x022a, 0x0233, 0x023c, 0x024a, + 0x00e3, 0x00eb, 0x00ef, 0x00fa, 0x0109, 0x0117, 0x0120, 0x0128, + 0x012f, 0x0136, 0x013e, 0x0141, 0x014b, 0x0153, 0x015c, 0x0164, + 0x016c, 0x0174, 0x017c, 0x017f, 0x0187, 0x018e, 0x0198, 0x01a4, + 0x01b1, 0x01b7, 0x01cc, 0x01d5, 0x01dc, 0x01e4, 0x01e8, 0x01ee, + 0x01f8, 0x01fd, 0x0206, 0x020f, 0x021e, 0x0227, 0x0230, 0x0236, // Entry 40 - 7F - 0x0255, 0x0260, 0x026b, 0x026f, 0x0271, 0x0278, 0x0283, 0x028e, - 0x0299, 0x02a2, 0x02ab, 0x02b4, 0x02bd, 0x02c9, 0x02cf, 0x02d7, - 0x02e1, 0x02ef, 0x02f4, 0x02fb, 0x0305, 0x0313, 0x031c, 0x0324, - 0x0330, 0x0338, 0x0342, 0x0348, 0x0355, 0x035a, 0x0365, 0x036c, - 0x0374, 0x037d, 0x0389, 0x0391, 0x039d, 0x03ac, 0x03b1, 0x03bc, - 0x03c5, 0x03cf, 0x03d6, 0x03df, 0x03e9, 0x03f3, 0x03fc, 0x0408, - 0x0413, 0x0419, 0x0428, 0x043a, 0x044c, 0x0460, 0x0466, 0x0474, - 0x047f, 0x048d, 0x0492, 0x0497, 0x04a0, 0x04a7, 0x04ab, 0x04b3, + 0x0241, 0x024c, 0x0257, 0x025b, 0x025d, 0x0264, 0x0267, 0x0272, + 0x027d, 0x0286, 0x028f, 0x0298, 0x02a1, 0x02ad, 0x02b3, 0x02bb, + 0x02c5, 0x02d3, 0x02d8, 0x02df, 0x02e9, 0x02ef, 0x02f8, 0x0300, + 0x0304, 0x030c, 0x0316, 0x031c, 0x0329, 0x032e, 0x0339, 0x0340, + 0x0348, 0x0351, 0x035d, 0x0365, 0x0371, 0x0380, 0x0385, 0x0390, + 0x0399, 0x03a3, 0x03aa, 0x03b3, 0x03bd, 0x03c7, 0x03d0, 0x03dc, + 0x03e7, 0x03ed, 0x03fc, 0x040e, 0x0420, 0x042c, 0x0432, 0x0438, + 0x0443, 0x0449, 0x044e, 0x0453, 0x045c, 0x0463, 0x0467, 0x046f, // Entry 80 - BF - 0x04ba, 0x04c7, 0x04ce, 0x04dc, 0x04e1, 0x04eb, 0x04f3, 0x04fe, - 0x0506, 0x050e, 0x0514, 0x051f, 0x0524, 0x0531, 0x053b, 0x0545, - 0x054f, 0x0554, 0x055a, 0x0563, 0x056b, 0x0570, 0x0582, 0x058e, - 0x0598, 0x059f, 0x05a4, 0x05aa, 0x05b6, 0x05c3, 0x05cb, 0x05d6, - 0x05e4, 0x05ed, 0x05f6, 0x05fc, 0x0605, 0x060e, 0x0617, 0x0621, - 0x0625, 0x062e, 0x063b, 0x0648, 0x0650, 0x065a, 0x065f, 0x0664, - 0x066c, 0x0672, 0x0678, 0x0682, 0x0686, 0x0692, 0x06a0, 0x06a7, - 0x06b0, 0x06c4, 0x06cc, 0x06d1, 0x06dd, 0x06e6, 0x06ed, 0x06f6, + 0x0476, 0x0483, 0x048a, 0x0498, 0x049d, 0x04a7, 0x04af, 0x04ba, + 0x04c2, 0x04ca, 0x04d0, 0x04db, 0x04e0, 0x04ed, 0x04f7, 0x0501, + 0x050b, 0x0510, 0x0516, 0x051f, 0x0527, 0x052c, 0x0536, 0x0542, + 0x054c, 0x0553, 0x0558, 0x055e, 0x056a, 0x0577, 0x057f, 0x058a, + 0x0590, 0x0599, 0x05a2, 0x05a8, 0x05b1, 0x05ba, 0x05c3, 0x05cd, + 0x05d1, 0x05da, 0x05df, 0x05ec, 0x05f4, 0x05fe, 0x0603, 0x0608, + 0x0610, 0x0616, 0x061c, 0x0626, 0x062a, 0x062e, 0x0634, 0x063b, + 0x0644, 0x0658, 0x0660, 0x0665, 0x0669, 0x0672, 0x0679, 0x0682, // Entry C0 - FF - 0x06fd, 0x070a, 0x0715, 0x071b, 0x0725, 0x072f, 0x0735, 0x0744, - 0x0758, 0x0766, 0x077d, 0x0792, 0x0796, 0x07b4, 0x07c0, 0x07c6, - 0x07cc, 0x07d8, 0x07e3, 0x07eb, 0x07f8, 0x07fd, 0x0807, 0x080e, - 0x0815, 0x081a, 0x0820, 0x0824, 0x0829, 0x082f, 0x0843, 0x084e, - 0x085b, 0x0867, 0x0873, 0x0876, 0x0887, 0x0892, 0x089e, 0x08a9, - 0x08af, 0x08b3, 0x08b9, 0x08c3, 0x08ce, 0x08d2, 0x08d6, 0x08dd, - 0x08e2, 0x08eb, 0x08f1, 0x08f6, 0x08fd, 0x0903, 0x0912, 0x091f, - 0x0929, 0x0938, 0x093f, 0x0946, 0x094f, 0x0957, 0x095f, 0x096e, + 0x0689, 0x0696, 0x06a1, 0x06a7, 0x06b1, 0x06bb, 0x06c1, 0x06c8, + 0x06dc, 0x06dc, 0x06e2, 0x06f9, 0x070e, 0x0711, 0x072f, 0x073b, + 0x0741, 0x0747, 0x0753, 0x075e, 0x0766, 0x076b, 0x0770, 0x077a, + 0x0781, 0x0788, 0x078d, 0x0793, 0x0797, 0x079c, 0x07a2, 0x07b6, + 0x07c1, 0x07c6, 0x07ca, 0x07d6, 0x07d9, 0x07e2, 0x07ed, 0x07f9, + 0x0804, 0x080a, 0x080e, 0x0814, 0x081e, 0x0829, 0x082d, 0x0831, + 0x0838, 0x083d, 0x0846, 0x084c, 0x0851, 0x0858, 0x085e, 0x0865, + 0x0872, 0x087d, 0x0881, 0x0888, 0x088f, 0x0898, 0x08a0, 0x08a8, // Entry 100 - 13F - 0x0976, 0x097e, 0x098b, 0x0996, 0x09a4, 0x09ae, 0x09b3, 0x09c3, - 0x09c8, 0x09ce, 0x09db, 0x09e0, 0x09e5, 0x09f3, 0x0a00, 0x0a05, - 0x0a1a, 0x0a1f, 0x0a2c, 0x0a32, 0x0a36, 0x0a3a, 0x0a45, 0x0a4f, - 0x0a55, 0x0a5d, 0x0a6b, 0x0a7f, 0x0a85, 0x0a93, 0x0aa1, 0x0aa9, - 0x0ab3, 0x0abe, 0x0ac3, 0x0ad5, 0x0ae4, 0x0af7, 0x0b04, 0x0b10, - 0x0b19, 0x0b23, 0x0b2d, 0x0b30, 0x0b34, 0x0b41, 0x0b46, 0x0b4a, - 0x0b57, 0x0b5d, 0x0b6e, 0x0b7c, 0x0b87, 0x0b94, 0x0b9d, 0x0ba4, - 0x0bb1, 0x0bbe, 0x0bce, 0x0bd4, 0x0bdc, 0x0be1, 0x0bf0, 0x0bfd, + 0x08b7, 0x08bf, 0x08c7, 0x08d4, 0x08e3, 0x08ee, 0x08f4, 0x08fe, + 0x0903, 0x090b, 0x0910, 0x0916, 0x091b, 0x0920, 0x0925, 0x0933, + 0x0940, 0x0945, 0x095a, 0x095f, 0x0964, 0x096a, 0x096e, 0x0972, + 0x097d, 0x0987, 0x098d, 0x0995, 0x09a3, 0x09b7, 0x09bd, 0x09cb, + 0x09d1, 0x09d9, 0x09e3, 0x09e6, 0x09eb, 0x09fd, 0x0a0c, 0x0a1f, + 0x0a2c, 0x0a38, 0x0a42, 0x0a44, 0x0a4e, 0x0a51, 0x0a55, 0x0a5a, + 0x0a5f, 0x0a63, 0x0a6e, 0x0a74, 0x0a85, 0x0a93, 0x0a9e, 0x0aa3, + 0x0aac, 0x0ab3, 0x0ab8, 0x0ac5, 0x0ad5, 0x0adb, 0x0ae3, 0x0ae8, // Entry 140 - 17F - 0x0c02, 0x0c0b, 0x0c18, 0x0c2a, 0x0c34, 0x0c40, 0x0c4c, 0x0c51, - 0x0c55, 0x0c59, 0x0c5f, 0x0c6e, 0x0c79, 0x0c83, 0x0ca2, 0x0ca8, - 0x0cae, 0x0cb5, 0x0cc6, 0x0cd7, 0x0cdf, 0x0ced, 0x0cf6, 0x0d04, - 0x0d07, 0x0d0c, 0x0d10, 0x0d1c, 0x0d23, 0x0d27, 0x0d2e, 0x0d3a, - 0x0d41, 0x0d45, 0x0d4d, 0x0d5a, 0x0d61, 0x0d6d, 0x0d73, 0x0d7c, - 0x0d80, 0x0d88, 0x0d98, 0x0da8, 0x0daf, 0x0dbb, 0x0dc9, 0x0de2, - 0x0de6, 0x0def, 0x0df8, 0x0e05, 0x0e0d, 0x0e12, 0x0e19, 0x0e23, - 0x0e32, 0x0e38, 0x0e3d, 0x0e43, 0x0e50, 0x0e58, 0x0e6a, 0x0e73, + 0x0aef, 0x0af4, 0x0af9, 0x0b02, 0x0b0f, 0x0b19, 0x0b23, 0x0b27, + 0x0b33, 0x0b38, 0x0b3c, 0x0b40, 0x0b46, 0x0b4d, 0x0b58, 0x0b62, + 0x0b78, 0x0b7e, 0x0b84, 0x0b8b, 0x0b9c, 0x0bad, 0x0bb5, 0x0bc3, + 0x0bcc, 0x0bd2, 0x0bd5, 0x0bda, 0x0bde, 0x0bea, 0x0bf1, 0x0bf5, + 0x0bfc, 0x0c08, 0x0c0f, 0x0c13, 0x0c1b, 0x0c20, 0x0c27, 0x0c33, + 0x0c39, 0x0c42, 0x0c46, 0x0c4e, 0x0c56, 0x0c66, 0x0c6d, 0x0c79, + 0x0c7f, 0x0c98, 0x0c9c, 0x0ca5, 0x0cae, 0x0cb3, 0x0cbb, 0x0cc0, + 0x0cc7, 0x0cd1, 0x0cd8, 0x0cde, 0x0ce3, 0x0ce9, 0x0cee, 0x0cf6, // Entry 180 - 1BF - 0x0e7a, 0x0e80, 0x0e8b, 0x0e90, 0x0e9d, 0x0ead, 0x0eb9, 0x0ec3, - 0x0ed2, 0x0edf, 0x0eea, 0x0ef8, 0x0efd, 0x0f13, 0x0f1a, 0x0f25, - 0x0f29, 0x0f2f, 0x0f37, 0x0f43, 0x0f52, 0x0f58, 0x0f5c, 0x0f62, - 0x0f6e, 0x0f7b, 0x0f7f, 0x0f87, 0x0f93, 0x0fa1, 0x0fa8, 0x0fb6, - 0x0fc9, 0x0fd6, 0x0fe5, 0x0feb, 0x0ff8, 0x1000, 0x1007, 0x1013, - 0x1023, 0x102f, 0x1036, 0x103e, 0x1043, 0x1054, 0x1062, 0x1069, - 0x1077, 0x107b, 0x1088, 0x108e, 0x109a, 0x10a6, 0x10ad, 0x10b3, - 0x10bc, 0x10c1, 0x10cc, 0x10d2, 0x10d8, 0x10ea, 0x10ee, 0x10f8, + 0x0d08, 0x0d11, 0x0d18, 0x0d1e, 0x0d29, 0x0d2e, 0x0d32, 0x0d42, + 0x0d4e, 0x0d58, 0x0d5f, 0x0d64, 0x0d67, 0x0d6d, 0x0d72, 0x0d88, + 0x0d8f, 0x0d9a, 0x0d9e, 0x0da4, 0x0dac, 0x0db8, 0x0dbf, 0x0dc5, + 0x0dc9, 0x0dd5, 0x0de1, 0x0de6, 0x0dea, 0x0df2, 0x0dfe, 0x0e0c, + 0x0e13, 0x0e19, 0x0e24, 0x0e31, 0x0e38, 0x0e3e, 0x0e43, 0x0e4b, + 0x0e52, 0x0e5e, 0x0e66, 0x0e72, 0x0e79, 0x0e81, 0x0e86, 0x0e97, + 0x0ea5, 0x0eac, 0x0eba, 0x0ebe, 0x0ecb, 0x0ed1, 0x0ed5, 0x0ed9, + 0x0ee0, 0x0ee6, 0x0eef, 0x0ef4, 0x0eff, 0x0f05, 0x0f0b, 0x0f15, // Entry 1C0 - 1FF - 0x1108, 0x1110, 0x1115, 0x111a, 0x1127, 0x1130, 0x1142, 0x1150, - 0x1162, 0x116c, 0x1171, 0x117b, 0x118e, 0x119a, 0x11a5, 0x11af, - 0x11ba, 0x11c7, 0x11cf, 0x11db, 0x11e8, 0x11f8, 0x1203, 0x121e, - 0x1228, 0x123a, 0x1248, 0x1250, 0x1257, 0x125c, 0x1262, 0x126d, - 0x1277, 0x127e, 0x1288, 0x128b, 0x129a, 0x12a3, 0x12b0, 0x12b7, - 0x12bc, 0x12c3, 0x12cd, 0x12d4, 0x12d9, 0x12e5, 0x12ef, 0x12f9, - 0x1305, 0x130b, 0x130f, 0x1313, 0x131d, 0x1328, 0x1331, 0x133c, - 0x1346, 0x1353, 0x1366, 0x136c, 0x1376, 0x137d, 0x1388, 0x1394, + 0x0f19, 0x0f23, 0x0f2b, 0x0f33, 0x0f38, 0x0f3d, 0x0f42, 0x0f4b, + 0x0f55, 0x0f63, 0x0f6d, 0x0f77, 0x0f7c, 0x0f86, 0x0f9b, 0x0fae, + 0x0fba, 0x0fc5, 0x0fcf, 0x0fda, 0x0fe7, 0x0fef, 0x0ffb, 0x1008, + 0x1018, 0x1023, 0x103e, 0x1048, 0x104f, 0x105d, 0x1065, 0x106c, + 0x1071, 0x1077, 0x1082, 0x108c, 0x1093, 0x109d, 0x10a0, 0x10a7, + 0x10b0, 0x10bd, 0x10c4, 0x10c9, 0x10d0, 0x10da, 0x10e1, 0x10e6, + 0x10f2, 0x10fc, 0x1106, 0x1112, 0x1118, 0x111c, 0x1120, 0x112a, + 0x1135, 0x113e, 0x1149, 0x1153, 0x1158, 0x116b, 0x1171, 0x118e, // Entry 200 - 23F - 0x13a1, 0x13ae, 0x13bd, 0x13c5, 0x13cf, 0x13dc, 0x13e0, 0x13ee, - 0x13fc, 0x1400, 0x1409, 0x1412, 0x141c, 0x1423, 0x1435, 0x1439, - 0x143e, 0x1442, 0x1450, 0x145d, 0x1462, 0x146d, 0x147a, 0x1485, - 0x1490, 0x149f, 0x14a6, 0x14ad, 0x14bb, 0x14c9, 0x14cf, 0x14d5, - 0x14df, 0x14f0, 0x14f7, 0x1506, 0x1512, 0x1519, 0x1522, 0x1538, - 0x1542, 0x154c, 0x155a, 0x155e, 0x1561, 0x156a, 0x1572, 0x157f, - 0x158d, 0x1594, 0x1599, 0x159e, 0x15ad, 0x15bb, 0x15c0, 0x15cd, - 0x15d5, 0x15d7, 0x15e3, 0x15ee, 0x15f2, 0x15fd, 0x1606, 0x160d, + 0x1195, 0x11a0, 0x11ac, 0x11b9, 0x11c6, 0x11cd, 0x11d5, 0x11df, + 0x11e4, 0x11e8, 0x11f6, 0x11fc, 0x1200, 0x1209, 0x1212, 0x121c, + 0x1223, 0x123e, 0x1242, 0x1247, 0x124b, 0x1251, 0x1256, 0x125b, + 0x125e, 0x126b, 0x1276, 0x1281, 0x1288, 0x128f, 0x1296, 0x12a1, + 0x12af, 0x12b5, 0x12bb, 0x12c5, 0x12ce, 0x12d5, 0x12dc, 0x12e6, + 0x12ed, 0x12f6, 0x130c, 0x1316, 0x1320, 0x1327, 0x132b, 0x132e, + 0x1337, 0x133f, 0x134c, 0x135a, 0x1361, 0x1366, 0x136b, 0x137a, + 0x1380, 0x1385, 0x138a, 0x1392, 0x1394, 0x13a0, 0x13ab, 0x13af, // Entry 240 - 27F - 0x1612, 0x161b, 0x1627, 0x1632, 0x163f, 0x164b, 0x1651, 0x165a, - 0x1666, 0x1679, 0x167d, 0x1692, 0x1692, 0x16ab, 0x16c0, 0x16d6, - 0x16ea, 0x16fd, 0x1714, 0x1731, 0x1747, 0x175d, 0x175d, 0x1775, - 0x178b, 0x179b, 0x17a4, 0x17c1, 0x17dc, 0x17e6, 0x17f5, 0x1802, - 0x181a, 0x1833, -} // Size: 1244 bytes - -var elLangStr string = "" + // Size: 8953 bytes + 0x13b2, 0x13bb, 0x13c2, 0x13c7, 0x13d0, 0x13dc, 0x13e7, 0x13f4, + 0x1400, 0x1406, 0x140f, 0x1413, 0x1426, 0x142a, 0x143f, 0x143f, + 0x1458, 0x146d, 0x1483, 0x1497, 0x14aa, 0x14c1, 0x14de, 0x14f4, + 0x150a, 0x150a, 0x1522, 0x1538, 0x1548, 0x1551, 0x156e, 0x1589, + 0x1593, 0x15a2, 0x15af, 0x15c7, 0x15e0, +} // Size: 1250 bytes + +const elLangStr string = "" + // Size: 9051 bytes "ΑφάρΑμπχαζικάΑβεστάνΑφρικάανςΑκάνΑμαρικάΑραγκονικάΑραβικάΑσαμεζικάΆβαρικ" + "ΑϊμάραΑζερμπαϊτζανικάΜπασκίρΛευκορωσικάΒουλγαρικάΜπισλάμαΜπαμπάραΜπενγκ" + "άλιΘιβετιανάΒρετονικάΒοσνιακάΚαταλανικάΤσετσενικάΚαμόρροΚορσικανικάΚριΤ" + @@ -13811,59 +17025,60 @@ var elLangStr string = "" + // Size: 8953 bytes "ριΚασμίριΚουρδικάΚόμιΚόρνιςΚυργιζικάΛατινικάΛουξεμβουργιανάΓκάνταΛιμβου" + "ργιανάΛινγκάλαΛαοθιανάΛιθουανικάΛούμπα-ΚατάνγκαΛετονικάΜαλαγάσιΜάρσαλΜά" + "οριΣλαβομακεδονικάΜαλαγιαλάμΜογγολικάΜαράθιΜαλάιΜαλτεζικάΒιρμανικάΝαούρ" + - "ουΝτεμπέλε ΒορράΝεπάλιΝτόνγκαΟλλανδικάΝορβηγικά ΝινόρσκΝορβηγικά Μποκμά" + - "λΝτεμπέλε ΝότουΝάβαχοΝιάντζαΟκσιτανικάΟζιβίγουαΟρόμοΟρίγιαΟσετικάΠαντζα" + + "ουΒόρεια ΝτεμπέλεΝεπάλιΝτόνγκαΟλλανδικάΝορβηγικά ΝινόρσκΝορβηγικά Μποκμ" + + "άλΝότια ΝτέμπελεΝάβαχοΝιάντζαΟξιτανικάΟζιβίγουαΟρόμοΟρίγιαΟσετικάΠαντζα" + "πικάΠάλιΠολωνικάΠάστοΠορτογαλικάΚετσούαΡομανικάΡούντιΡουμανικάΡωσικάΚιν" + "ιαρβάνταΣανσκριτικάΣαρδινικάΣίντιΒόρεια ΣάμιΣάνγκοΣινχαλεζικάΣλοβακικάΣ" + "λοβενικάΣαμόανΣχόναΣομάλιΑλβανικάΣερβικάΣουάτιΝότια ΣόθοΣουνδανικάΣουηδ" + - "ικάΣουαχίλιΤαμίλΤελούγκουΤατζίκΤαϊλανδικάΤιγκρίνυαΤουρκμενικάΤσιγουάναΤ" + - "ονγκανικάΤουρκικάΤσόνγκαΤατάρΤαϊτιανάΟυιγουρικάΟυκρανικάΟυρντούΟυζμπεκι" + - "κάΒένδαΒιετναμικάΒόλαπικΓουαλούνΓουόλοφΖόσαΓίντιςΓιορούμπαΖουάνγκΚινεζι" + - "κάΖουλούΑχινίζΑκολίΑντάνγκμεΑντιγκέαΑφριχίλιΑγκέμΑϊνούΑκάντιανΑλούτΝότι" + - "α ΑλαταϊκάΠαλαιά ΑγγλικάΑνγκικάΑραμαϊκάΑρουκάνιανΑράπαχοΑραγουάκΆσουΑστ" + - "ουριανάΑγουαντίΜπαλούτσιΜπαλινίζΜπάσαΜπαμούνΓκομάλαΜπέζαΜπέμπαΜπέναΜπαφ" + - "ούτΔυτικά ΜπαλοχικάΜποζπούριΜπικόλΜπίνιΚομΣικσίκαΜπρατζΜπόντοΑκόσιΜπουρ" + - "ιάτΜπουγκίζΜπουλούΜπλινΜεντούμπαΚάντοΚαρίμπΚαγιούγκαΑτσάμΚεμπουάνοΤσίγκ" + - "αΤσίμπτσαΤσαγκατάιΤσουκίζιΜάριΙδιωματικά ΣινούκΤσοκτάουΤσίπιουανΤσερόκι" + - "ΣεγιένΚουρδικά ΣοράνιΚοπτικάΤουρκικά ΚριμαίαςΚασούμπιανΝτακόταΝτάργκουα" + - "ΤάιταΝτέλαγουερΣλαβικάΝτόγκριμπΝτίνκαΖάρμαΝτόγκριΓλώσσα Κάτω ΛουσατίαςΝ" + - "τουάλαΜέσα ΟλλανδικάΤζόλα-ΦόνιΝτογιούλαΝταζάγκαΈμπουΕφίκΑρχαία Αιγυπτια" + - "κάΕκατζούκΕλαμάιτΜέσα ΑγγλικάΕγουόντοΦανγκΦιλιππινεζικάΦονΜέσα ΓαλλικάΠ" + - "αλαιά ΓαλλικάΒόρεια ΦριζιανάΑνατολικά ΦριζιανάΦριούλιανΓκαΓκαγκάουζΓκάγ" + - "ιοΓκμπάγιαΓκιζΓκιλμπερτίζΜέσα Άνω ΓερμανικάΠαλαιά Άνω ΓερμανικάΓκόντιΓκ" + - "οροντάλοΓοτθικάΓκρίμποΑρχαία ΕλληνικάΓερμανικά ΕλβετίαςΓκούσιΓκουίτσινΧ" + - "άινταΧαβανεζικάΧιλιγκαγιόνΧιτίτεΧμονγκΓλώσσα Άνω ΛουσατίαςΧούπαΙμπάνΙμπ" + - "ίμπιοΙλόκοΙνγκούςΛόζμπανΝγκόμπαΜάχαμεΙουδαϊκά-ΠερσικάΙουδαϊκά-ΑραβικάΚά" + - "ρα-ΚαλπάκΚαμπίλεΚατσίνΤζουΚάμπαΚάουιΚαμπαρντιανάΚανέμπουΤουάπΜακόντεΓλώ" + - "σσα του Πράσινου ΑκρωτηρίουΚόροΚάσιΚοτανικάΚόιρα ΤσίνιΚάκοΚαλεντζίνΚιμπ" + - "ούντουΚόμι-ΠερμιάκΚονκάνιΚοσραενικάΚπέλεΚαρατσάι-ΜπαλκάρΚαρελιακάΚουρού" + - "χΣάμπαλαΜπάφιαΚολωνικάΚουμγιούκΚουτενάιΛαδίνοΛάνγκιΛάχδαΛάμπαΛαζγκιάνΛα" + - "κόταΜόνγκοΛόζιΒόρεια ΛούριΛούμπα-ΛουλούαΛουισένοΛούνταΛούοΛουσάιΛουχίαΜ" + - "αντουρίζΜάφαΜαγκάχιΜαϊτχίλιΜακαζάρΜαντίνγκοΜασάιΜάμπαΜόκσαΜανδάρΜέντεΜε" + - "ρούΜορίσιενΜέσα ΙρλανδικάΜακούβα-ΜέτοΜετάΜικμάκΜινανγκαμπάουΜαντσούΜανι" + - "πούριΜοχόκΜόσιΜουντάνγκΠολλαπλές γλώσσεςΚρικΜιραντεζικάΜαργουάριΜιένεΈρ" + - "ζυαΜαζαντεράνιΝαπολιτανικάΝάμαΚάτω ΓερμανικάΝεγουάριΝίαςΝιούεανΚβάσιοΝγ" + - "κιεμπούνΝογκάιΠαλαιά ΝορβηγικάΝ’ΚοΒόρεια ΣόθοΝουέρΚλασικά ΝεουάριΝιαμγο" + - "υέζιΝιανκόλεΝιόροΝζίμαΟσάζΟθωμανικά ΤουρκικάΠανγκασινάνΠαχλάβιΠαμπάνγκα" + - "ΠαπιαμέντοΠαλάουανΑρχαία ΠερσικάΦοινικικάΠοχπέιανΠαλαιά ΠροβενσιάλΚισέΡ" + - "αζασθάνιΡαπανούιΡαροτονγκάνΡόμποΡομανίΑρομανικάΡουάΣαντάγουεΓιακούτΣαμα" + - "ρίτικα ΑραμαϊκάΣαμπούρουΣασάκΣαντάλιΝγκαμπέιΣάνγκουΣικελιανάΣκωτικάΝότι" + - "α ΚουρδικάΣένεκαΣέναΣελκούπΚοϊραμπόρο ΣένιΠαλαιά ΙρλανδικάΤασελχίτΣανΑρ" + - "αβικά του ΤσαντΣιντάμοΝότια ΣάμιΛούλε ΣάμιΙνάρι ΣάμιΣκολτ ΣάμιΣονίνκεΣο" + - "γκντιένΣρανάρ ΤόνγκοΣερέρΣάχοΣουκούμαΣούσουΣουμερικάΚομόρριαΚλασικά Συρ" + - "ιακάΣυριακάΤίμνεΤέσοΤερένοΤέτουμΤίγκρεΤιβΤοκελάουΚλίνγκονΤλίνγκιτΤαμασέ" + - "κΝιάσα ΤόνγκαΤοκ ΠισίνΤαρόκοΤσίμσιανΤουμπούκαΤουβαλούΤασαβάκΤουβίνιανΤα" + - "μαζίτ Κεντρικού ΜαρόκοΟυντμούρτΟυγκαρίτικΟυμπούντουΡουτΒάιΒότικΒούντζοΒ" + - "άλσερΓουάλαμοΓουάρειΓουασόΓουαρλπίριΚαλμίκΣόγκαΓιάοΓιαπίζΓιανγκμπένΓιέμ" + - "παΚαντονέζικαΖάποτεκΣύμβολα BlissΖενάγκαΤυπικά Ταμαζίγκτ ΜαρόκουΖούνιΧω" + - "ρίς γλωσσολογικό περιεχόμενοΖάζαΣύγχρονα Τυπικά ΑραβικάΓερμανικά Αυστρί" + - "αςΆνω Γερμανικά ΕλβετίαςΑγγλικά ΑυστραλίαςΑγγλικά ΚαναδάΑγγλικά Ηνωμένο" + - "υ ΒασιλείουΑγγλικά ΑμερικήςΙσπανικά Λατινικής ΑμερικήςΙσπανικά ΕυρώπηςΙ" + - "σπανικά ΜεξικούΓαλλικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω Γερμανικά ΟλλανδίαςΦλ" + - "αμανδικάΠορτογαλικά ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικάΣερβοκροατικάΚ" + - "ονγκό ΣουαχίλιΑπλοποιημένα ΚινεζικάΠαραδοσιακά Κινεζικά" - -var elLangIdx = []uint16{ // 610 elements + "ικάΣουαχίλιΤαμίλΤελούγκουΤατζικικάΤαϊλανδικάΤιγκρινικάΤουρκμενικάΤσουάν" + + "αΤονγκανικάΤουρκικάΤσόνγκαΤατάρΤαϊτιανάΟυιγουρικάΟυκρανικάΟυρντούΟυζμπε" + + "κικάΒένδαΒιετναμικάΒόλαπικΓουαλούνΓουόλοφΖόσαΓίντιςΓιορούμπαΖουάνγκΚινε" + + "ζικάΖουλούΑχινίζΑκολίΑντάνγκμεΑντιγκέαΑφριχίλιΑγκέμΑϊνούΑκάντιανΑλούτΝό" + + "τια ΑλαταϊκάΠαλαιά ΑγγλικάΑνγκικάΑραμαϊκάΑρουκάνιανΑράπαχοΑραγουάκΆσουΑ" + + "στουριανάΑγουαντίΜπαλούτσιΜπαλινίζΜπάσαΜπαμούνΓκομάλαΜπέζαΜπέμπαΜπέναΜπ" + + "αφούτΔυτικά ΜπαλοχικάΜποζπούριΜπικόλΜπίνιΚομΣικσίκαΜπρατζΜπόντοΑκόσιΜπο" + + "υριάτΜπουγκίζΜπουλούΜπλινΜεντούμπαΚάντοΚαρίμπΚαγιούγκαΑτσάμΚεμπουάνοΤσί" + + "γκαΤσίμπτσαΤσαγκατάιΤσουκίζιΜάριΙδιωματικά ΣινούκΤσοκτάουΤσίπιουανΤσερό" + + "κιΣεγιένΚουρδικά ΣοράνιΚοπτικάΤουρκικά ΚριμαίαςΚρεολικά Γαλλικά Σεϋχελλ" + + "ώνΚασούμπιανΝτακόταΝτάργκουαΤάιταΝτέλαγουερΣλαβικάΝτόγκριμπΝτίνκαΖάρμαΝ" + + "τόγκριΓλώσσα Κάτω ΛουσατίαςΝτουάλαΜέσα ΟλλανδικάΤζόλα-ΦόνιΝτογιούλαΝταζ" + + "άγκαΈμπουΕφίκΑρχαία ΑιγυπτιακάΕκατζούκΕλαμάιτΜέσα ΑγγλικάΕγουόντοΦανγκΦ" + + "ιλιππινεζικάΦονΜέσα ΓαλλικάΠαλαιά ΓαλλικάΒόρεια ΦριζιανάΑνατολικά Φριζι" + + "ανάΦριούλιανΓκαΓκαγκάουζΓκάγιοΓκμπάγιαΓκιζΓκιλμπερτίζΜέσα Άνω Γερμανικά" + + "Παλαιά Άνω ΓερμανικάΓκόντιΓκοροντάλοΓοτθικάΓκρίμποΑρχαία ΕλληνικάΓερμαν" + + "ικά ΕλβετίαςΓκούσιΓκουίτσινΧάινταΧαβανεζικάΧιλιγκαγιόνΧιτίτεΧμονγκΓλώσσ" + + "α Άνω ΛουσατίαςΧούπαΙμπάνΙμπίμπιοΙλόκοΙνγκούςΛόζμπανΝγκόμπαΜάχαμεΙουδαϊ" + + "κά-ΠερσικάΙουδαϊκά-ΑραβικάΚάρα-ΚαλπάκΚαμπίλεΚατσίνΤζουΚάμπαΚάουιΚαμπαρν" + + "τιανάΚανέμπουΤιάπΜακόντεΓλώσσα του Πράσινου ΑκρωτηρίουΚόροΚάσιΚοτανικάΚ" + + "όιρα ΤσίνιΚάκοΚαλεντζίνΚιμπούντουΚόμι-ΠερμιάκΚονκάνιΚοσραενικάΚπέλεΚαρα" + + "τσάι-ΜπαλκάρΚαρελιακάΚουρούχΣάμπαλαΜπάφιαΚολωνικάΚουμγιούκΚουτενάιΛαδίν" + + "οΛάνγκιΛάχδαΛάμπαΛαζγκιάνΛακόταΜόνγκοΛόζιΒόρεια ΛούριΛούμπα-ΛουλούαΛουι" + + "σένοΛούνταΛούοΛουσάιΛουχίαΜαντουρίζΜάφαΜαγκάχιΜαϊτχίλιΜακαζάρΜαντίνγκοΜ" + + "ασάιΜάμπαΜόκσαΜανδάρΜέντεΜερούΜορίσιενΜέσα ΙρλανδικάΜακούβα-ΜέτοΜετάΜικ" + + "μάκΜινανγκαμπάουΜαντσούΜανιπούριΜοχόκΜόσιΜουντάνγκΠολλαπλές γλώσσεςΚρικ" + + "ΜιραντεζικάΜαργουάριΜιένεΈρζυαΜαζαντεράνιΝαπολιτανικάΝάμαΚάτω Γερμανικά" + + "ΝεγουάριΝίαςΝιούεανΚβάσιοΝγκιεμπούνΝογκάιΠαλαιά ΝορβηγικάΝ’ΚοΒόρεια Σόθ" + + "οΝουέρΚλασικά ΝεουάριΝιαμγουέζιΝιανκόλεΝιόροΝζίμαΟσάζΟθωμανικά Τουρκικά" + + "ΠανγκασινάνΠαχλάβιΠαμπάνγκαΠαπιαμέντοΠαλάουανΠίτζιν ΝιγηρίαςΑρχαία Περσ" + + "ικάΦοινικικάΠομπηικάΠρωσικάΠαλαιά ΠροβανσάλΚισέΡαζασθάνιΡαπανούιΡαροτον" + + "γκάνΡόμποΡομανίΑρομανικάΡουάΣαντάγουεΓιακούτΣαμαρίτικα ΑραμαϊκάΣαμπούρο" + + "υΣασάκΣαντάλιΝγκαμπέιΣάνγκουΣικελιανάΣκωτικάΝότια ΚουρδικάΣένεκαΣέναΣελ" + + "κούπΚοϊραμπόρο ΣένιΠαλαιά ΙρλανδικάΤασελχίτΣανΑραβικά του ΤσαντΣιντάμοΝ" + + "ότια ΣάμιΛούλε ΣάμιΙνάρι ΣάμιΣκολτ ΣάμιΣονίνκεΣογκντιένΣρανάν ΤόνγκοΣερ" + + "έρΣάχοΣουκούμαΣούσουΣουμερικάΚομόρριαΚλασικά ΣυριακάΣυριακάΤίμνεΤέσοΤερ" + + "ένοΤέτουμΤίγκρεΤιβΤοκελάουΚλίνγκονΤλίνγκιτΤαμασέκΝιάσα ΤόνγκαΤοκ ΠισίνΤ" + + "αρόκοΤσίμσιανΤουμπούκαΤουβαλούΤασαβάκΤουβινικάΤαμαζίτ Κεντρικού ΜαρόκοΟ" + + "υντμούρτΟυγκαριτικάΟυμπούντουΡουτΒάιΒότικΒούντζοΒάλσερΓουάλαμοΓουάρειΓο" + + "υασόΓουαρλπίριwuuΚαλμίκΣόγκαΓιάοΓιαπίζΓιανγκμπένΓιέμπαΚαντονέζικαΖάποτε" + + "κΣύμβολα BlissΖενάγκαΤυπικά Ταμαζίγκτ ΜαρόκουΖούνιΧωρίς γλωσσολογικό πε" + + "ριεχόμενοΖάζαΣύγχρονα Τυπικά ΑραβικάΓερμανικά ΑυστρίαςΆνω Γερμανικά Ελβ" + + "ετίαςΑγγλικά ΑυστραλίαςΑγγλικά ΚαναδάΑγγλικά Ηνωμένου ΒασιλείουΑγγλικά " + + "ΑμερικήςΙσπανικά Λατινικής ΑμερικήςΙσπανικά ΕυρώπηςΙσπανικά ΜεξικούΓαλλ" + + "ικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω Γερμανικά ΟλλανδίαςΦλαμανδικάΠορτογαλικά" + + " ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικάΣερβοκροατικάΚονγκό ΣουαχίλιΑπλοπο" + + "ιημένα ΚινεζικάΠαραδοσιακά Κινεζικά" + +var elLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0008, 0x001a, 0x0028, 0x003a, 0x0042, 0x0050, 0x0064, 0x0072, 0x0084, 0x0090, 0x009c, 0x00ba, 0x00c8, 0x00de, 0x00f2, @@ -13879,392 +17094,302 @@ var elLangIdx = []uint16{ // 610 elements 0x0533, 0x0549, 0x055f, 0x056d, 0x057f, 0x058d, 0x059b, 0x05ab, 0x05b3, 0x05bf, 0x05d1, 0x05e1, 0x05ff, 0x060b, 0x0623, 0x0633, 0x0643, 0x0657, 0x0674, 0x0684, 0x0694, 0x06a0, 0x06aa, 0x06c8, - 0x06dc, 0x06ee, 0x06fa, 0x0704, 0x0716, 0x0728, 0x0736, 0x0751, - 0x075d, 0x076b, 0x077d, 0x079e, 0x07bf, 0x07da, 0x07e6, 0x07f4, + 0x06dc, 0x06ee, 0x06fa, 0x0704, 0x0716, 0x0728, 0x0736, 0x0753, + 0x075f, 0x076d, 0x077f, 0x07a0, 0x07c1, 0x07dc, 0x07e8, 0x07f6, 0x0808, 0x081a, 0x0824, 0x0830, 0x083e, 0x0852, 0x085a, 0x086a, // Entry 80 - BF 0x0874, 0x088a, 0x0898, 0x08a8, 0x08b4, 0x08c6, 0x08d2, 0x08e8, 0x08fe, 0x0910, 0x091a, 0x092f, 0x093b, 0x0951, 0x0963, 0x0975, 0x0981, 0x098b, 0x0997, 0x09a7, 0x09b5, 0x09c1, 0x09d4, 0x09e8, - 0x09f8, 0x0a08, 0x0a12, 0x0a24, 0x0a30, 0x0a44, 0x0a56, 0x0a6c, - 0x0a7e, 0x0a92, 0x0aa2, 0x0ab0, 0x0aba, 0x0aca, 0x0ade, 0x0af0, - 0x0afe, 0x0b12, 0x0b1c, 0x0b30, 0x0b3e, 0x0b4e, 0x0b5c, 0x0b64, - 0x0b70, 0x0b82, 0x0b90, 0x0ba0, 0x0bac, 0x0bb8, 0x0bc2, 0x0bd4, - 0x0be4, 0x0be4, 0x0bf4, 0x0bfe, 0x0c08, 0x0c18, 0x0c18, 0x0c22, + 0x09f8, 0x0a08, 0x0a12, 0x0a24, 0x0a36, 0x0a4a, 0x0a5e, 0x0a74, + 0x0a82, 0x0a96, 0x0aa6, 0x0ab4, 0x0abe, 0x0ace, 0x0ae2, 0x0af4, + 0x0b02, 0x0b16, 0x0b20, 0x0b34, 0x0b42, 0x0b52, 0x0b60, 0x0b68, + 0x0b74, 0x0b86, 0x0b94, 0x0ba4, 0x0bb0, 0x0bbc, 0x0bc6, 0x0bd8, + 0x0be8, 0x0be8, 0x0bf8, 0x0c02, 0x0c0c, 0x0c1c, 0x0c1c, 0x0c26, // Entry C0 - FF - 0x0c22, 0x0c3d, 0x0c58, 0x0c66, 0x0c76, 0x0c8a, 0x0c8a, 0x0c98, - 0x0c98, 0x0ca8, 0x0ca8, 0x0ca8, 0x0cb0, 0x0cb0, 0x0cc4, 0x0cc4, - 0x0cd4, 0x0ce6, 0x0cf6, 0x0cf6, 0x0d00, 0x0d0e, 0x0d0e, 0x0d1c, - 0x0d26, 0x0d32, 0x0d32, 0x0d3c, 0x0d4a, 0x0d4a, 0x0d69, 0x0d7b, - 0x0d87, 0x0d91, 0x0d91, 0x0d97, 0x0da5, 0x0da5, 0x0da5, 0x0db1, - 0x0db1, 0x0dbd, 0x0dc7, 0x0dd7, 0x0de7, 0x0df5, 0x0dff, 0x0e11, - 0x0e1b, 0x0e27, 0x0e39, 0x0e43, 0x0e55, 0x0e61, 0x0e71, 0x0e83, - 0x0e93, 0x0e9b, 0x0ebc, 0x0ecc, 0x0ede, 0x0eec, 0x0ef8, 0x0f15, + 0x0c26, 0x0c41, 0x0c5c, 0x0c6a, 0x0c7a, 0x0c8e, 0x0c8e, 0x0c9c, + 0x0c9c, 0x0c9c, 0x0cac, 0x0cac, 0x0cac, 0x0cb4, 0x0cb4, 0x0cc8, + 0x0cc8, 0x0cd8, 0x0cea, 0x0cfa, 0x0cfa, 0x0d04, 0x0d12, 0x0d12, + 0x0d20, 0x0d2a, 0x0d36, 0x0d36, 0x0d40, 0x0d4e, 0x0d4e, 0x0d6d, + 0x0d7f, 0x0d8b, 0x0d95, 0x0d95, 0x0d9b, 0x0da9, 0x0da9, 0x0da9, + 0x0db5, 0x0db5, 0x0dc1, 0x0dcb, 0x0ddb, 0x0deb, 0x0df9, 0x0e03, + 0x0e15, 0x0e1f, 0x0e2b, 0x0e3d, 0x0e47, 0x0e59, 0x0e65, 0x0e75, + 0x0e87, 0x0e97, 0x0e9f, 0x0ec0, 0x0ed0, 0x0ee2, 0x0ef0, 0x0efc, // Entry 100 - 13F - 0x0f23, 0x0f23, 0x0f44, 0x0f58, 0x0f66, 0x0f78, 0x0f82, 0x0f96, - 0x0fa4, 0x0fb6, 0x0fc2, 0x0fcc, 0x0fda, 0x1002, 0x1002, 0x1010, - 0x102b, 0x103e, 0x1050, 0x1060, 0x106a, 0x1072, 0x1072, 0x1093, - 0x10a3, 0x10b1, 0x10c8, 0x10c8, 0x10d8, 0x10d8, 0x10e2, 0x10fc, - 0x10fc, 0x1102, 0x1102, 0x1119, 0x1134, 0x1134, 0x1151, 0x1174, - 0x1186, 0x118c, 0x119e, 0x119e, 0x11aa, 0x11ba, 0x11ba, 0x11c2, - 0x11d8, 0x11d8, 0x11fa, 0x1220, 0x1220, 0x122c, 0x1240, 0x124e, - 0x125c, 0x1279, 0x129c, 0x129c, 0x129c, 0x12a8, 0x12ba, 0x12c6, + 0x0f19, 0x0f27, 0x0f27, 0x0f48, 0x0f7a, 0x0f8e, 0x0f9c, 0x0fae, + 0x0fb8, 0x0fcc, 0x0fda, 0x0fec, 0x0ff8, 0x1002, 0x1010, 0x1038, + 0x1038, 0x1046, 0x1061, 0x1074, 0x1086, 0x1096, 0x10a0, 0x10a8, + 0x10a8, 0x10c9, 0x10d9, 0x10e7, 0x10fe, 0x10fe, 0x110e, 0x110e, + 0x1118, 0x1132, 0x1132, 0x1138, 0x1138, 0x114f, 0x116a, 0x116a, + 0x1187, 0x11aa, 0x11bc, 0x11c2, 0x11d4, 0x11d4, 0x11e0, 0x11f0, + 0x11f0, 0x11f8, 0x120e, 0x120e, 0x1230, 0x1256, 0x1256, 0x1262, + 0x1276, 0x1284, 0x1292, 0x12af, 0x12d2, 0x12d2, 0x12d2, 0x12de, // Entry 140 - 17F - 0x12c6, 0x12da, 0x12da, 0x12f0, 0x12fc, 0x1308, 0x132e, 0x132e, - 0x1338, 0x1342, 0x1352, 0x135c, 0x136a, 0x136a, 0x136a, 0x1378, - 0x1386, 0x1392, 0x13b1, 0x13d0, 0x13d0, 0x13e5, 0x13f3, 0x13ff, - 0x1407, 0x1411, 0x141b, 0x1433, 0x1443, 0x144d, 0x145b, 0x1494, - 0x1494, 0x149c, 0x149c, 0x14a4, 0x14b4, 0x14c9, 0x14c9, 0x14c9, - 0x14d1, 0x14e3, 0x14f7, 0x150e, 0x151c, 0x1530, 0x153a, 0x1559, - 0x1559, 0x1559, 0x156b, 0x1579, 0x1587, 0x1593, 0x15a3, 0x15b5, - 0x15c5, 0x15d1, 0x15dd, 0x15e7, 0x15f1, 0x1601, 0x1601, 0x1601, + 0x12f0, 0x12fc, 0x12fc, 0x1310, 0x1310, 0x1326, 0x1332, 0x133e, + 0x1364, 0x1364, 0x136e, 0x1378, 0x1388, 0x1392, 0x13a0, 0x13a0, + 0x13a0, 0x13ae, 0x13bc, 0x13c8, 0x13e7, 0x1406, 0x1406, 0x141b, + 0x1429, 0x1435, 0x143d, 0x1447, 0x1451, 0x1469, 0x1479, 0x1481, + 0x148f, 0x14c8, 0x14c8, 0x14d0, 0x14d0, 0x14d8, 0x14e8, 0x14fd, + 0x14fd, 0x14fd, 0x1505, 0x1517, 0x152b, 0x1542, 0x1550, 0x1564, + 0x156e, 0x158d, 0x158d, 0x158d, 0x159f, 0x15ad, 0x15bb, 0x15c7, + 0x15d7, 0x15e9, 0x15f9, 0x1605, 0x1611, 0x161b, 0x1625, 0x1635, // Entry 180 - 1BF - 0x1601, 0x160d, 0x160d, 0x1619, 0x1621, 0x1638, 0x1638, 0x1653, - 0x1663, 0x166f, 0x1677, 0x1683, 0x168f, 0x168f, 0x168f, 0x16a1, - 0x16a9, 0x16b7, 0x16c7, 0x16d5, 0x16e7, 0x16f1, 0x16fb, 0x1705, - 0x1711, 0x171b, 0x1725, 0x1735, 0x1750, 0x1767, 0x176f, 0x177b, - 0x1795, 0x17a3, 0x17b5, 0x17bf, 0x17c7, 0x17c7, 0x17d9, 0x17fa, - 0x1802, 0x1818, 0x182a, 0x182a, 0x1834, 0x183e, 0x1854, 0x1854, - 0x186c, 0x1874, 0x188f, 0x189f, 0x18a7, 0x18b5, 0x18b5, 0x18c1, - 0x18d5, 0x18e1, 0x1900, 0x1900, 0x1909, 0x191e, 0x1928, 0x1945, + 0x1635, 0x1635, 0x1635, 0x1641, 0x1641, 0x164d, 0x1655, 0x166c, + 0x166c, 0x1687, 0x1697, 0x16a3, 0x16ab, 0x16b7, 0x16c3, 0x16c3, + 0x16c3, 0x16d5, 0x16dd, 0x16eb, 0x16fb, 0x1709, 0x171b, 0x1725, + 0x172f, 0x1739, 0x1745, 0x174f, 0x1759, 0x1769, 0x1784, 0x179b, + 0x17a3, 0x17af, 0x17c9, 0x17d7, 0x17e9, 0x17f3, 0x17fb, 0x17fb, + 0x180d, 0x182e, 0x1836, 0x184c, 0x185e, 0x185e, 0x1868, 0x1872, + 0x1888, 0x1888, 0x18a0, 0x18a8, 0x18c3, 0x18d3, 0x18db, 0x18e9, + 0x18e9, 0x18f5, 0x1909, 0x1915, 0x1934, 0x1934, 0x193d, 0x1952, // Entry 1C0 - 1FF - 0x1959, 0x1969, 0x1973, 0x197d, 0x1985, 0x19a8, 0x19be, 0x19cc, - 0x19de, 0x19f2, 0x1a02, 0x1a02, 0x1a02, 0x1a02, 0x1a1d, 0x1a1d, - 0x1a2f, 0x1a2f, 0x1a2f, 0x1a3f, 0x1a3f, 0x1a60, 0x1a68, 0x1a68, - 0x1a7a, 0x1a8a, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aaa, 0x1ab6, 0x1ab6, - 0x1ab6, 0x1ab6, 0x1ac8, 0x1ad0, 0x1ae2, 0x1af0, 0x1b15, 0x1b27, - 0x1b31, 0x1b3f, 0x1b3f, 0x1b4f, 0x1b5d, 0x1b6f, 0x1b7d, 0x1b7d, - 0x1b98, 0x1ba4, 0x1bac, 0x1bac, 0x1bba, 0x1bd7, 0x1bf6, 0x1bf6, - 0x1c06, 0x1c0c, 0x1c2c, 0x1c3a, 0x1c3a, 0x1c3a, 0x1c4d, 0x1c60, + 0x195c, 0x1979, 0x198d, 0x199d, 0x19a7, 0x19b1, 0x19b9, 0x19dc, + 0x19f2, 0x1a00, 0x1a12, 0x1a26, 0x1a36, 0x1a36, 0x1a53, 0x1a53, + 0x1a53, 0x1a6e, 0x1a6e, 0x1a80, 0x1a80, 0x1a80, 0x1a90, 0x1a9e, + 0x1abd, 0x1ac5, 0x1ac5, 0x1ad7, 0x1ae7, 0x1afd, 0x1afd, 0x1afd, + 0x1b07, 0x1b13, 0x1b13, 0x1b13, 0x1b13, 0x1b25, 0x1b2d, 0x1b3f, + 0x1b4d, 0x1b72, 0x1b84, 0x1b8e, 0x1b9c, 0x1b9c, 0x1bac, 0x1bba, + 0x1bcc, 0x1bda, 0x1bda, 0x1bf5, 0x1c01, 0x1c09, 0x1c09, 0x1c17, + 0x1c34, 0x1c53, 0x1c53, 0x1c63, 0x1c69, 0x1c89, 0x1c97, 0x1c97, // Entry 200 - 23F - 0x1c73, 0x1c86, 0x1c94, 0x1ca6, 0x1cbf, 0x1cc9, 0x1cd1, 0x1cd1, - 0x1ce1, 0x1ced, 0x1cff, 0x1d0f, 0x1d2c, 0x1d3a, 0x1d3a, 0x1d3a, - 0x1d44, 0x1d4c, 0x1d58, 0x1d64, 0x1d70, 0x1d76, 0x1d86, 0x1d86, - 0x1d96, 0x1da6, 0x1da6, 0x1db4, 0x1dcb, 0x1ddc, 0x1ddc, 0x1de8, - 0x1de8, 0x1df8, 0x1df8, 0x1e0a, 0x1e1a, 0x1e28, 0x1e3a, 0x1e68, - 0x1e7a, 0x1e8e, 0x1ea2, 0x1eaa, 0x1eb0, 0x1eb0, 0x1eb0, 0x1eb0, - 0x1eb0, 0x1eba, 0x1eba, 0x1ec8, 0x1ed4, 0x1ee4, 0x1ef2, 0x1efe, - 0x1f12, 0x1f12, 0x1f1e, 0x1f1e, 0x1f28, 0x1f30, 0x1f3c, 0x1f50, + 0x1c97, 0x1caa, 0x1cbd, 0x1cd0, 0x1ce3, 0x1cf1, 0x1d03, 0x1d1c, + 0x1d26, 0x1d2e, 0x1d2e, 0x1d3e, 0x1d4a, 0x1d5c, 0x1d6c, 0x1d89, + 0x1d97, 0x1d97, 0x1d97, 0x1da1, 0x1da9, 0x1db5, 0x1dc1, 0x1dcd, + 0x1dd3, 0x1de3, 0x1de3, 0x1df3, 0x1e03, 0x1e03, 0x1e11, 0x1e28, + 0x1e39, 0x1e39, 0x1e45, 0x1e45, 0x1e55, 0x1e55, 0x1e67, 0x1e77, + 0x1e85, 0x1e97, 0x1ec5, 0x1ed7, 0x1eed, 0x1f01, 0x1f09, 0x1f0f, + 0x1f0f, 0x1f0f, 0x1f0f, 0x1f0f, 0x1f19, 0x1f19, 0x1f27, 0x1f33, + 0x1f43, 0x1f51, 0x1f5d, 0x1f71, 0x1f74, 0x1f80, 0x1f80, 0x1f8a, // Entry 240 - 27F - 0x1f5c, 0x1f5c, 0x1f72, 0x1f80, 0x1f94, 0x1f94, 0x1fa2, 0x1fd0, - 0x1fda, 0x2014, 0x201c, 0x2048, 0x2048, 0x206b, 0x2095, 0x20b8, - 0x20d3, 0x2105, 0x2124, 0x2158, 0x2177, 0x2196, 0x2196, 0x21b1, - 0x21d0, 0x21fe, 0x2212, 0x223b, 0x2260, 0x2272, 0x228c, 0x22a9, - 0x22d2, 0x22f9, -} // Size: 1244 bytes - -var enLangStr string = "" + // Size: 4897 bytes + 0x1f92, 0x1f9e, 0x1fb2, 0x1fbe, 0x1fbe, 0x1fd4, 0x1fe2, 0x1ff6, + 0x1ff6, 0x2004, 0x2032, 0x203c, 0x2076, 0x207e, 0x20aa, 0x20aa, + 0x20cd, 0x20f7, 0x211a, 0x2135, 0x2167, 0x2186, 0x21ba, 0x21d9, + 0x21f8, 0x21f8, 0x2213, 0x2232, 0x2260, 0x2274, 0x229d, 0x22c2, + 0x22d4, 0x22ee, 0x230b, 0x2334, 0x235b, +} // Size: 1250 bytes + +const enLangStr string = "" + // Size: 4944 bytes "AfarAbkhazianAvestanAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAym" + - "araAzerbaijaniBashkirBelarusianBulgarianBislamaBambaraBengaliTibetanBret" + - "onBosnianCatalanChechenChamorroCorsicanCreeCzechChurch SlavicChuvashWels" + - "hDanishGermanDivehiDzongkhaEweGreekEnglishEsperantoSpanishEstonianBasque" + - "PersianFulahFinnishFijianFaroeseFrenchWestern FrisianIrishScottish Gaeli" + - "cGalicianGuaraniGujaratiManxHausaHebrewHindiHiri MotuCroatianHaitian Cre" + - "oleHungarianArmenianHereroInterlinguaIndonesianInterlingueIgboSichuan Yi" + - "InupiaqIdoIcelandicItalianInuktitutJapaneseJavaneseGeorgianKongoKikuyuKu" + - "anyamaKazakhKalaallisutKhmerKannadaKoreanKanuriKashmiriKurdishKomiCornis" + - "hKyrgyzLatinLuxembourgishGandaLimburgishLingalaLaoLithuanianLuba-Katanga" + - "LatvianMalagasyMarshalleseMaoriMacedonianMalayalamMongolianMarathiMalayM" + - "alteseBurmeseNauruNorth NdebeleNepaliNdongaDutchNorwegian NynorskNorwegi" + - "an BokmålSouth NdebeleNavajoNyanjaOccitanOjibwaOromoOriyaOsseticPunjabiP" + - "aliPolishPashtoPortugueseQuechuaRomanshRundiRomanianRussianKinyarwandaSa" + - "nskritSardinianSindhiNorthern SamiSangoSinhalaSlovakSlovenianSamoanShona" + - "SomaliAlbanianSerbianSwatiSouthern SothoSundaneseSwedishSwahiliTamilTelu" + - "guTajikThaiTigrinyaTurkmenTswanaTonganTurkishTsongaTatarTahitianUyghurUk" + - "rainianUrduUzbekVendaVietnameseVolapükWalloonWolofXhosaYiddishYorubaZhua" + - "ngChineseZuluAchineseAcoliAdangmeAdygheTunisian ArabicAfrihiliAghemAinuA" + - "kkadianAlabamaAleutGheg AlbanianSouthern AltaiOld EnglishAngikaAramaicMa" + - "pucheAraonaArapahoAlgerian ArabicArawakMoroccan ArabicEgyptian ArabicAsu" + - "American Sign LanguageAsturianKotavaAwadhiBaluchiBalineseBavarianBasaaBa" + - "munBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaWestern BalochiBhojpur" + - "iBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAkooseBuriat" + - "BugineseBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoChigaChibchaChagataiC" + - "huukeseMariChinook JargonChoctawChipewyanCherokeeCheyenneCentral Kurdish" + - "CopticCapiznonCrimean TurkishKashubianDakotaDargwaTaitaDelawareSlaveDogr" + - "ibDinkaZarmaDogriLower SorbianCentral DusunDualaMiddle DutchJola-FonyiDy" + - "ulaDazagaEmbuEfikEmilianAncient EgyptianEkajukElamiteMiddle EnglishCentr" + - "al YupikEwondoExtremaduranFangFilipinoTornedalen FinnishFonCajun FrenchM" + - "iddle FrenchOld FrenchArpitanNorthern FrisianEastern FrisianFriulianGaGa" + - "gauzGan ChineseGayoGbayaZoroastrian DariGeezGilberteseGilakiMiddle High " + - "GermanOld High GermanGoan KonkaniGondiGorontaloGothicGreboAncient GreekS" + - "wiss GermanWayuuFrafraGusiiGwichʼinHaidaHakka ChineseHawaiianFiji HindiH" + - "iligaynonHittiteHmongUpper SorbianXiang ChineseHupaIbanIbibioIlokoIngush" + - "IngrianJamaican Creole EnglishLojbanNgombaMachameJudeo-PersianJudeo-Arab" + - "icJutishKara-KalpakKabyleKachinJjuKambaKawiKabardianKanembuTyapMakondeKa" + - "buverdianuKenyangKoroKaingangKhasiKhotaneseKoyra ChiiniKhowarKirmanjkiKa" + - "koKalenjinKimbunduKomi-PermyakKonkaniKosraeanKpelleKarachay-BalkarKrioKi" + - "naray-aKarelianKurukhShambalaBafiaColognianKumykKutenaiLadinoLangiLahnda" + - "LambaLezghianLingua Franca NovaLigurianLivonianLakotaLombardMongoLoziNor" + - "thern LuriLatgalianLuba-LuluaLuisenoLundaLuoMizoLuyiaLiterary ChineseLaz" + - "MadureseMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMandarMendeMeruM" + - "orisyenMiddle IrishMakhuwa-MeettoMetaʼMicmacMinangkabauManchuManipuriMoh" + - "awkMossiWestern MariMundangMultiple LanguagesCreekMirandeseMarwariMentaw" + - "aiMyeneErzyaMazanderaniMin Nan ChineseNeapolitanNamaLow GermanNewariNias" + - "NiueanAo NagaKwasioNgiemboonNogaiOld NorseNovialN’KoNorthern SothoNuerCl" + - "assical NewariNyamweziNyankoleNyoroNzimaOsageOttoman TurkishPangasinanPa" + - "hlaviPampangaPapiamentoPalauanPicardPennsylvania GermanPlautdietschOld P" + - "ersianPalatine GermanPhoenicianPiedmontesePonticPohnpeianPrussianOld Pro" + - "vençalKʼicheʼChimborazo Highland QuichuaRajasthaniRapanuiRarotonganRomag" + - "nolRiffianRomboRomanyRotumanRusynRovianaAromanianRwaSandaweSakhaSamarita" + - "n AramaicSamburuSasakSantaliSaurashtraNgambaySanguSicilianScotsSassarese" + - " SardinianSouthern KurdishSenecaSenaSeriSelkupKoyraboro SenniOld IrishSa" + - "mogitianTachelhitShanChadian ArabicSidamoLower SilesianSelayarSouthern S" + - "amiLule SamiInari SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSater" + - "land FrisianSukumaSusuSumerianComorianClassical SyriacSyriacSilesianTulu" + - "TimneTesoTerenoTetumTigreTivTokelauTsakhurKlingonTlingitTalyshTamashekNy" + - "asa TongaTok PisinTuroyoTarokoTsakonianTsimshianMuslim TatTumbukaTuvaluT" + - "asawaqTuvinianCentral Atlas TamazightUdmurtUgariticUmbunduRootVaiVenetia" + - "nVepsWest FlemishMain-FranconianVoticVõroVunjoWalserWolayttaWarayWashoWa" + - "rlpiriWu ChineseKalmykMingrelianSogaYaoYapeseYangbenYembaNheengatuCanton" + - "eseZapotecBlissymbolsZeelandicZenagaStandard Moroccan TamazightZuniNo li" + - "nguistic contentZazaModern Standard ArabicAustrian GermanSwiss High Germ" + - "anAustralian EnglishCanadian EnglishBritish EnglishAmerican EnglishLatin" + - " American SpanishEuropean SpanishMexican SpanishDariCanadian FrenchSwiss" + - " FrenchLow SaxonFlemishBrazilian PortugueseEuropean PortugueseMoldavianS" + - "erbo-CroatianCongo SwahiliSimplified ChineseTraditional Chinese" - -var enLangIdx = []uint16{ // 610 elements + "araAzerbaijaniBashkirBelarusianBulgarianBislamaBambaraBanglaTibetanBreto" + + "nBosnianCatalanChechenChamorroCorsicanCreeCzechChurch SlavicChuvashWelsh" + + "DanishGermanDivehiDzongkhaEweGreekEnglishEsperantoSpanishEstonianBasqueP" + + "ersianFulahFinnishFijianFaroeseFrenchWestern FrisianIrishScottish Gaelic" + + "GalicianGuaraniGujaratiManxHausaHebrewHindiHiri MotuCroatianHaitian Creo" + + "leHungarianArmenianHereroInterlinguaIndonesianInterlingueIgboSichuan YiI" + + "nupiaqIdoIcelandicItalianInuktitutJapaneseJavaneseGeorgianKongoKikuyuKua" + + "nyamaKazakhKalaallisutKhmerKannadaKoreanKanuriKashmiriKurdishKomiCornish" + + "KyrgyzLatinLuxembourgishGandaLimburgishLingalaLaoLithuanianLuba-KatangaL" + + "atvianMalagasyMarshalleseMaoriMacedonianMalayalamMongolianMarathiMalayMa" + + "lteseBurmeseNauruNorth NdebeleNepaliNdongaDutchNorwegian NynorskNorwegia" + + "n BokmålSouth NdebeleNavajoNyanjaOccitanOjibwaOromoOdiaOsseticPunjabiPal" + + "iPolishPashtoPortugueseQuechuaRomanshRundiRomanianRussianKinyarwandaSans" + + "kritSardinianSindhiNorthern SamiSangoSinhalaSlovakSlovenianSamoanShonaSo" + + "maliAlbanianSerbianSwatiSouthern SothoSundaneseSwedishSwahiliTamilTelugu" + + "TajikThaiTigrinyaTurkmenTswanaTonganTurkishTsongaTatarTahitianUyghurUkra" + + "inianUrduUzbekVendaVietnameseVolapükWalloonWolofXhosaYiddishYorubaZhuang" + + "ChineseZuluAchineseAcoliAdangmeAdygheTunisian ArabicAfrihiliAghemAinuAkk" + + "adianAlabamaAleutGheg AlbanianSouthern AltaiOld EnglishAngikaAramaicMapu" + + "cheAraonaArapahoAlgerian ArabicNajdi ArabicArawakMoroccan ArabicEgyptian" + + " ArabicAsuAmerican Sign LanguageAsturianKotavaAwadhiBaluchiBalineseBavar" + + "ianBasaaBamunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaWestern Balo" + + "chiBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAk" + + "ooseBuriatBugineseBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoChigaChibch" + + "aChagataiChuukeseMariChinook JargonChoctawChipewyanCherokeeCheyenneCentr" + + "al KurdishCopticCapiznonCrimean TurkishSeselwa Creole FrenchKashubianDak" + + "otaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriLower SorbianCentral Dus" + + "unDualaMiddle DutchJola-FonyiDyulaDazagaEmbuEfikEmilianAncient EgyptianE" + + "kajukElamiteMiddle EnglishCentral YupikEwondoExtremaduranFangFilipinoTor" + + "nedalen FinnishFonCajun FrenchMiddle FrenchOld FrenchArpitanNorthern Fri" + + "sianEastern FrisianFriulianGaGagauzGan ChineseGayoGbayaZoroastrian DariG" + + "eezGilberteseGilakiMiddle High GermanOld High GermanGoan KonkaniGondiGor" + + "ontaloGothicGreboAncient GreekSwiss GermanWayuuFrafraGusiiGwichʼinHaidaH" + + "akka ChineseHawaiianFiji HindiHiligaynonHittiteHmongUpper SorbianXiang C" + + "hineseHupaIbanIbibioIlokoIngushIngrianJamaican Creole EnglishLojbanNgomb" + + "aMachameJudeo-PersianJudeo-ArabicJutishKara-KalpakKabyleKachinJjuKambaKa" + + "wiKabardianKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiKhotane" + + "seKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbunduKomi-PermyakKonkaniKosr" + + "aeanKpelleKarachay-BalkarKrioKinaray-aKarelianKurukhShambalaBafiaCologni" + + "anKumykKutenaiLadinoLangiLahndaLambaLezghianLingua Franca NovaLigurianLi" + + "vonianLakotaLombardMongoLoziNorthern LuriLatgalianLuba-LuluaLuisenoLunda" + + "LuoMizoLuyiaLiterary ChineseLazMadureseMafaMagahiMaithiliMakasarMandingo" + + "MasaiMabaMokshaMandarMendeMeruMorisyenMiddle IrishMakhuwa-MeettoMetaʼMi'" + + "kmaqMinangkabauManchuManipuriMohawkMossiWestern MariMundangMultiple lang" + + "uagesCreekMirandeseMarwariMentawaiMyeneErzyaMazanderaniMin Nan ChineseNe" + + "apolitanNamaLow GermanNewariNiasNiueanAo NagaKwasioNgiemboonNogaiOld Nor" + + "seNovialN’KoNorthern SothoNuerClassical NewariNyamweziNyankoleNyoroNzima" + + "OsageOttoman TurkishPangasinanPahlaviPampangaPapiamentoPalauanPicardNige" + + "rian PidginPennsylvania GermanPlautdietschOld PersianPalatine GermanPhoe" + + "nicianPiedmontesePonticPohnpeianPrussianOld ProvençalKʼicheʼChimborazo H" + + "ighland QuichuaRajasthaniRapanuiRarotonganRomagnolRiffianRomboRomanyRotu" + + "manRusynRovianaAromanianRwaSandaweSakhaSamaritan AramaicSamburuSasakSant" + + "aliSaurashtraNgambaySanguSicilianScotsSassarese SardinianSouthern Kurdis" + + "hSenecaSenaSeriSelkupKoyraboro SenniOld IrishSamogitianTachelhitShanChad" + + "ian ArabicSidamoLower SilesianSelayarSouthern SamiLule SamiInari SamiSko" + + "lt SamiSoninkeSogdienSranan TongoSererSahoSaterland FrisianSukumaSusuSum" + + "erianComorianClassical SyriacSyriacSilesianTuluTimneTesoTerenoTetumTigre" + + "TivTokelauTsakhurKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoT" + + "arokoTsakonianTsimshianMuslim TatTumbukaTuvaluTasawaqTuvinianCentral Atl" + + "as TamazightUdmurtUgariticUmbunduRootVaiVenetianVepsWest FlemishMain-Fra" + + "nconianVoticVõroVunjoWalserWolayttaWarayWashoWarlpiriWu ChineseKalmykMin" + + "grelianSogaYaoYapeseYangbenYembaNheengatuCantoneseZapotecBlissymbolsZeel" + + "andicZenagaStandard Moroccan TamazightZuniNo linguistic contentZazaModer" + + "n Standard ArabicAustrian GermanSwiss High GermanAustralian EnglishCanad" + + "ian EnglishBritish EnglishAmerican EnglishLatin American SpanishEuropean" + + " SpanishMexican SpanishDariCanadian FrenchSwiss FrenchLow SaxonFlemishBr" + + "azilian PortugueseEuropean PortugueseMoldavianSerbo-CroatianCongo Swahil" + + "iSimplified ChineseTraditional Chinese" + +var enLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0028, 0x0031, 0x0037, 0x003f, 0x0045, 0x004b, 0x0056, 0x005d, 0x0067, 0x0070, - 0x0077, 0x007e, 0x0085, 0x008c, 0x0092, 0x0099, 0x00a0, 0x00a7, - 0x00af, 0x00b7, 0x00bb, 0x00c0, 0x00cd, 0x00d4, 0x00d9, 0x00df, - 0x00e5, 0x00eb, 0x00f3, 0x00f6, 0x00fb, 0x0102, 0x010b, 0x0112, - 0x011a, 0x0120, 0x0127, 0x012c, 0x0133, 0x0139, 0x0140, 0x0146, - 0x0155, 0x015a, 0x0169, 0x0171, 0x0178, 0x0180, 0x0184, 0x0189, - 0x018f, 0x0194, 0x019d, 0x01a5, 0x01b3, 0x01bc, 0x01c4, 0x01ca, - // Entry 40 - 7F - 0x01d5, 0x01df, 0x01ea, 0x01ee, 0x01f8, 0x01ff, 0x0202, 0x020b, - 0x0212, 0x021b, 0x0223, 0x022b, 0x0233, 0x0238, 0x023e, 0x0246, - 0x024c, 0x0257, 0x025c, 0x0263, 0x0269, 0x026f, 0x0277, 0x027e, - 0x0282, 0x0289, 0x028f, 0x0294, 0x02a1, 0x02a6, 0x02b0, 0x02b7, - 0x02ba, 0x02c4, 0x02d0, 0x02d7, 0x02df, 0x02ea, 0x02ef, 0x02f9, - 0x0302, 0x030b, 0x0312, 0x0317, 0x031e, 0x0325, 0x032a, 0x0337, - 0x033d, 0x0343, 0x0348, 0x0359, 0x036a, 0x0377, 0x037d, 0x0383, - 0x038a, 0x0390, 0x0395, 0x039a, 0x03a1, 0x03a8, 0x03ac, 0x03b2, - // Entry 80 - BF - 0x03b8, 0x03c2, 0x03c9, 0x03d0, 0x03d5, 0x03dd, 0x03e4, 0x03ef, - 0x03f7, 0x0400, 0x0406, 0x0413, 0x0418, 0x041f, 0x0425, 0x042e, - 0x0434, 0x0439, 0x043f, 0x0447, 0x044e, 0x0453, 0x0461, 0x046a, - 0x0471, 0x0478, 0x047d, 0x0483, 0x0488, 0x048c, 0x0494, 0x049b, - 0x04a1, 0x04a7, 0x04ae, 0x04b4, 0x04b9, 0x04c1, 0x04c7, 0x04d0, - 0x04d4, 0x04d9, 0x04de, 0x04e8, 0x04f0, 0x04f7, 0x04fc, 0x0501, - 0x0508, 0x050e, 0x0514, 0x051b, 0x051f, 0x0527, 0x052c, 0x0533, - 0x0539, 0x0548, 0x0550, 0x0555, 0x0559, 0x0561, 0x0568, 0x056d, - // Entry C0 - FF - 0x057a, 0x0588, 0x0593, 0x0599, 0x05a0, 0x05a7, 0x05ad, 0x05b4, - 0x05c3, 0x05c9, 0x05d8, 0x05e7, 0x05ea, 0x0600, 0x0608, 0x060e, - 0x0614, 0x061b, 0x0623, 0x062b, 0x0630, 0x0635, 0x063f, 0x0646, - 0x064a, 0x064f, 0x0655, 0x0659, 0x065e, 0x0664, 0x0673, 0x067b, - 0x0680, 0x0684, 0x068a, 0x068d, 0x0694, 0x069f, 0x06a8, 0x06ac, - 0x06b2, 0x06b6, 0x06bc, 0x06c2, 0x06ca, 0x06ce, 0x06d2, 0x06d9, - 0x06de, 0x06e3, 0x06e9, 0x06ee, 0x06f5, 0x06fa, 0x0701, 0x0709, - 0x0711, 0x0715, 0x0723, 0x072a, 0x0733, 0x073b, 0x0743, 0x0752, - // Entry 100 - 13F - 0x0758, 0x0760, 0x076f, 0x0778, 0x077e, 0x0784, 0x0789, 0x0791, - 0x0796, 0x079c, 0x07a1, 0x07a6, 0x07ab, 0x07b8, 0x07c5, 0x07ca, - 0x07d6, 0x07e0, 0x07e5, 0x07eb, 0x07ef, 0x07f3, 0x07fa, 0x080a, - 0x0810, 0x0817, 0x0825, 0x0832, 0x0838, 0x0844, 0x0848, 0x0850, - 0x0862, 0x0865, 0x0871, 0x087e, 0x0888, 0x088f, 0x089f, 0x08ae, - 0x08b6, 0x08b8, 0x08be, 0x08c9, 0x08cd, 0x08d2, 0x08e2, 0x08e6, - 0x08f0, 0x08f6, 0x0908, 0x0917, 0x0923, 0x0928, 0x0931, 0x0937, - 0x093c, 0x0949, 0x0955, 0x095a, 0x0960, 0x0965, 0x096e, 0x0973, - // Entry 140 - 17F - 0x0980, 0x0988, 0x0992, 0x099c, 0x09a3, 0x09a8, 0x09b5, 0x09c2, - 0x09c6, 0x09ca, 0x09d0, 0x09d5, 0x09db, 0x09e2, 0x09f9, 0x09ff, - 0x0a05, 0x0a0c, 0x0a19, 0x0a25, 0x0a2b, 0x0a36, 0x0a3c, 0x0a42, - 0x0a45, 0x0a4a, 0x0a4e, 0x0a57, 0x0a5e, 0x0a62, 0x0a69, 0x0a75, - 0x0a7c, 0x0a80, 0x0a88, 0x0a8d, 0x0a96, 0x0aa2, 0x0aa8, 0x0ab1, - 0x0ab5, 0x0abd, 0x0ac5, 0x0ad1, 0x0ad8, 0x0ae0, 0x0ae6, 0x0af5, - 0x0af9, 0x0b02, 0x0b0a, 0x0b10, 0x0b18, 0x0b1d, 0x0b26, 0x0b2b, - 0x0b32, 0x0b38, 0x0b3d, 0x0b43, 0x0b48, 0x0b50, 0x0b62, 0x0b6a, - // Entry 180 - 1BF - 0x0b72, 0x0b78, 0x0b7f, 0x0b84, 0x0b88, 0x0b95, 0x0b9e, 0x0ba8, - 0x0baf, 0x0bb4, 0x0bb7, 0x0bbb, 0x0bc0, 0x0bd0, 0x0bd3, 0x0bdb, - 0x0bdf, 0x0be5, 0x0bed, 0x0bf4, 0x0bfc, 0x0c01, 0x0c05, 0x0c0b, - 0x0c11, 0x0c16, 0x0c1a, 0x0c22, 0x0c2e, 0x0c3c, 0x0c42, 0x0c48, - 0x0c53, 0x0c59, 0x0c61, 0x0c67, 0x0c6c, 0x0c78, 0x0c7f, 0x0c91, - 0x0c96, 0x0c9f, 0x0ca6, 0x0cae, 0x0cb3, 0x0cb8, 0x0cc3, 0x0cd2, - 0x0cdc, 0x0ce0, 0x0cea, 0x0cf0, 0x0cf4, 0x0cfa, 0x0d01, 0x0d07, - 0x0d10, 0x0d15, 0x0d1e, 0x0d24, 0x0d2a, 0x0d38, 0x0d3c, 0x0d4c, - // Entry 1C0 - 1FF - 0x0d54, 0x0d5c, 0x0d61, 0x0d66, 0x0d6b, 0x0d7a, 0x0d84, 0x0d8b, - 0x0d93, 0x0d9d, 0x0da4, 0x0daa, 0x0dbd, 0x0dc9, 0x0dd4, 0x0de3, - 0x0ded, 0x0df8, 0x0dfe, 0x0e07, 0x0e0f, 0x0e1d, 0x0e26, 0x0e41, - 0x0e4b, 0x0e52, 0x0e5c, 0x0e64, 0x0e6b, 0x0e70, 0x0e76, 0x0e7d, - 0x0e82, 0x0e89, 0x0e92, 0x0e95, 0x0e9c, 0x0ea1, 0x0eb2, 0x0eb9, - 0x0ebe, 0x0ec5, 0x0ecf, 0x0ed6, 0x0edb, 0x0ee3, 0x0ee8, 0x0efb, - 0x0f0b, 0x0f11, 0x0f15, 0x0f19, 0x0f1f, 0x0f2e, 0x0f37, 0x0f41, - 0x0f4a, 0x0f4e, 0x0f5c, 0x0f62, 0x0f70, 0x0f77, 0x0f84, 0x0f8d, - // Entry 200 - 23F - 0x0f97, 0x0fa1, 0x0fa8, 0x0faf, 0x0fbb, 0x0fc0, 0x0fc4, 0x0fd5, - 0x0fdb, 0x0fdf, 0x0fe7, 0x0fef, 0x0fff, 0x1005, 0x100d, 0x1011, - 0x1016, 0x101a, 0x1020, 0x1025, 0x102a, 0x102d, 0x1034, 0x103b, - 0x1042, 0x1049, 0x104f, 0x1057, 0x1062, 0x106b, 0x1071, 0x1077, - 0x1080, 0x1089, 0x1093, 0x109a, 0x10a0, 0x10a7, 0x10af, 0x10c6, - 0x10cc, 0x10d4, 0x10db, 0x10df, 0x10e2, 0x10ea, 0x10ee, 0x10fa, - 0x1109, 0x110e, 0x1113, 0x1118, 0x111e, 0x1126, 0x112b, 0x1130, - 0x1138, 0x1142, 0x1148, 0x1152, 0x1156, 0x1159, 0x115f, 0x1166, - // Entry 240 - 27F - 0x116b, 0x1174, 0x117d, 0x1184, 0x118f, 0x1198, 0x119e, 0x11b9, - 0x11bd, 0x11d2, 0x11d6, 0x11ec, 0x11ec, 0x11fb, 0x120c, 0x121e, - 0x122e, 0x123d, 0x124d, 0x1263, 0x1273, 0x1282, 0x1286, 0x1295, - 0x12a1, 0x12aa, 0x12b1, 0x12c5, 0x12d8, 0x12e1, 0x12ef, 0x12fc, - 0x130e, 0x1321, -} // Size: 1244 bytes - -const enGBLangStr string = "West Low German" - -var enGBLangIdx = []uint16{ // 602 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0077, 0x007e, 0x0084, 0x008b, 0x0091, 0x0098, 0x009f, 0x00a6, + 0x00ae, 0x00b6, 0x00ba, 0x00bf, 0x00cc, 0x00d3, 0x00d8, 0x00de, + 0x00e4, 0x00ea, 0x00f2, 0x00f5, 0x00fa, 0x0101, 0x010a, 0x0111, + 0x0119, 0x011f, 0x0126, 0x012b, 0x0132, 0x0138, 0x013f, 0x0145, + 0x0154, 0x0159, 0x0168, 0x0170, 0x0177, 0x017f, 0x0183, 0x0188, + 0x018e, 0x0193, 0x019c, 0x01a4, 0x01b2, 0x01bb, 0x01c3, 0x01c9, // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x01d4, 0x01de, 0x01e9, 0x01ed, 0x01f7, 0x01fe, 0x0201, 0x020a, + 0x0211, 0x021a, 0x0222, 0x022a, 0x0232, 0x0237, 0x023d, 0x0245, + 0x024b, 0x0256, 0x025b, 0x0262, 0x0268, 0x026e, 0x0276, 0x027d, + 0x0281, 0x0288, 0x028e, 0x0293, 0x02a0, 0x02a5, 0x02af, 0x02b6, + 0x02b9, 0x02c3, 0x02cf, 0x02d6, 0x02de, 0x02e9, 0x02ee, 0x02f8, + 0x0301, 0x030a, 0x0311, 0x0316, 0x031d, 0x0324, 0x0329, 0x0336, + 0x033c, 0x0342, 0x0347, 0x0358, 0x0369, 0x0376, 0x037c, 0x0382, + 0x0389, 0x038f, 0x0394, 0x0398, 0x039f, 0x03a6, 0x03aa, 0x03b0, // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x03b6, 0x03c0, 0x03c7, 0x03ce, 0x03d3, 0x03db, 0x03e2, 0x03ed, + 0x03f5, 0x03fe, 0x0404, 0x0411, 0x0416, 0x041d, 0x0423, 0x042c, + 0x0432, 0x0437, 0x043d, 0x0445, 0x044c, 0x0451, 0x045f, 0x0468, + 0x046f, 0x0476, 0x047b, 0x0481, 0x0486, 0x048a, 0x0492, 0x0499, + 0x049f, 0x04a5, 0x04ac, 0x04b2, 0x04b7, 0x04bf, 0x04c5, 0x04ce, + 0x04d2, 0x04d7, 0x04dc, 0x04e6, 0x04ee, 0x04f5, 0x04fa, 0x04ff, + 0x0506, 0x050c, 0x0512, 0x0519, 0x051d, 0x0525, 0x052a, 0x0531, + 0x0537, 0x0546, 0x054e, 0x0553, 0x0557, 0x055f, 0x0566, 0x056b, // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0578, 0x0586, 0x0591, 0x0597, 0x059e, 0x05a5, 0x05ab, 0x05b2, + 0x05c1, 0x05cd, 0x05d3, 0x05e2, 0x05f1, 0x05f4, 0x060a, 0x0612, + 0x0618, 0x061e, 0x0625, 0x062d, 0x0635, 0x063a, 0x063f, 0x0649, + 0x0650, 0x0654, 0x0659, 0x065f, 0x0663, 0x0668, 0x066e, 0x067d, + 0x0685, 0x068a, 0x068e, 0x0694, 0x0697, 0x069e, 0x06a9, 0x06b2, + 0x06b6, 0x06bc, 0x06c0, 0x06c6, 0x06cc, 0x06d4, 0x06d8, 0x06dc, + 0x06e3, 0x06e8, 0x06ed, 0x06f3, 0x06f8, 0x06ff, 0x0704, 0x070b, + 0x0713, 0x071b, 0x071f, 0x072d, 0x0734, 0x073d, 0x0745, 0x074d, // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x075c, 0x0762, 0x076a, 0x0779, 0x078e, 0x0797, 0x079d, 0x07a3, + 0x07a8, 0x07b0, 0x07b5, 0x07bb, 0x07c0, 0x07c5, 0x07ca, 0x07d7, + 0x07e4, 0x07e9, 0x07f5, 0x07ff, 0x0804, 0x080a, 0x080e, 0x0812, + 0x0819, 0x0829, 0x082f, 0x0836, 0x0844, 0x0851, 0x0857, 0x0863, + 0x0867, 0x086f, 0x0881, 0x0884, 0x0890, 0x089d, 0x08a7, 0x08ae, + 0x08be, 0x08cd, 0x08d5, 0x08d7, 0x08dd, 0x08e8, 0x08ec, 0x08f1, + 0x0901, 0x0905, 0x090f, 0x0915, 0x0927, 0x0936, 0x0942, 0x0947, + 0x0950, 0x0956, 0x095b, 0x0968, 0x0974, 0x0979, 0x097f, 0x0984, // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x098d, 0x0992, 0x099f, 0x09a7, 0x09b1, 0x09bb, 0x09c2, 0x09c7, + 0x09d4, 0x09e1, 0x09e5, 0x09e9, 0x09ef, 0x09f4, 0x09fa, 0x0a01, + 0x0a18, 0x0a1e, 0x0a24, 0x0a2b, 0x0a38, 0x0a44, 0x0a4a, 0x0a55, + 0x0a5b, 0x0a61, 0x0a64, 0x0a69, 0x0a6d, 0x0a76, 0x0a7d, 0x0a81, + 0x0a88, 0x0a94, 0x0a9b, 0x0a9f, 0x0aa7, 0x0aac, 0x0ab5, 0x0ac1, + 0x0ac7, 0x0ad0, 0x0ad4, 0x0adc, 0x0ae4, 0x0af0, 0x0af7, 0x0aff, + 0x0b05, 0x0b14, 0x0b18, 0x0b21, 0x0b29, 0x0b2f, 0x0b37, 0x0b3c, + 0x0b45, 0x0b4a, 0x0b51, 0x0b57, 0x0b5c, 0x0b62, 0x0b67, 0x0b6f, // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0b81, 0x0b89, 0x0b91, 0x0b97, 0x0b9e, 0x0ba3, 0x0ba7, 0x0bb4, + 0x0bbd, 0x0bc7, 0x0bce, 0x0bd3, 0x0bd6, 0x0bda, 0x0bdf, 0x0bef, + 0x0bf2, 0x0bfa, 0x0bfe, 0x0c04, 0x0c0c, 0x0c13, 0x0c1b, 0x0c20, + 0x0c24, 0x0c2a, 0x0c30, 0x0c35, 0x0c39, 0x0c41, 0x0c4d, 0x0c5b, + 0x0c61, 0x0c68, 0x0c73, 0x0c79, 0x0c81, 0x0c87, 0x0c8c, 0x0c98, + 0x0c9f, 0x0cb1, 0x0cb6, 0x0cbf, 0x0cc6, 0x0cce, 0x0cd3, 0x0cd8, + 0x0ce3, 0x0cf2, 0x0cfc, 0x0d00, 0x0d0a, 0x0d10, 0x0d14, 0x0d1a, + 0x0d21, 0x0d27, 0x0d30, 0x0d35, 0x0d3e, 0x0d44, 0x0d4a, 0x0d58, // Entry 1C0 - 1FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0d5c, 0x0d6c, 0x0d74, 0x0d7c, 0x0d81, 0x0d86, 0x0d8b, 0x0d9a, + 0x0da4, 0x0dab, 0x0db3, 0x0dbd, 0x0dc4, 0x0dca, 0x0dd9, 0x0dec, + 0x0df8, 0x0e03, 0x0e12, 0x0e1c, 0x0e27, 0x0e2d, 0x0e36, 0x0e3e, + 0x0e4c, 0x0e55, 0x0e70, 0x0e7a, 0x0e81, 0x0e8b, 0x0e93, 0x0e9a, + 0x0e9f, 0x0ea5, 0x0eac, 0x0eb1, 0x0eb8, 0x0ec1, 0x0ec4, 0x0ecb, + 0x0ed0, 0x0ee1, 0x0ee8, 0x0eed, 0x0ef4, 0x0efe, 0x0f05, 0x0f0a, + 0x0f12, 0x0f17, 0x0f2a, 0x0f3a, 0x0f40, 0x0f44, 0x0f48, 0x0f4e, + 0x0f5d, 0x0f66, 0x0f70, 0x0f79, 0x0f7d, 0x0f8b, 0x0f91, 0x0f9f, // Entry 200 - 23F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0fa6, 0x0fb3, 0x0fbc, 0x0fc6, 0x0fd0, 0x0fd7, 0x0fde, 0x0fea, + 0x0fef, 0x0ff3, 0x1004, 0x100a, 0x100e, 0x1016, 0x101e, 0x102e, + 0x1034, 0x103c, 0x1040, 0x1045, 0x1049, 0x104f, 0x1054, 0x1059, + 0x105c, 0x1063, 0x106a, 0x1071, 0x1078, 0x107e, 0x1086, 0x1091, + 0x109a, 0x10a0, 0x10a6, 0x10af, 0x10b8, 0x10c2, 0x10c9, 0x10cf, + 0x10d6, 0x10de, 0x10f5, 0x10fb, 0x1103, 0x110a, 0x110e, 0x1111, + 0x1119, 0x111d, 0x1129, 0x1138, 0x113d, 0x1142, 0x1147, 0x114d, + 0x1155, 0x115a, 0x115f, 0x1167, 0x1171, 0x1177, 0x1181, 0x1185, // Entry 240 - 27F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000f, -} // Size: 1228 bytes - -var esLangStr string = "" + // Size: 4253 bytes + 0x1188, 0x118e, 0x1195, 0x119a, 0x11a3, 0x11ac, 0x11b3, 0x11be, + 0x11c7, 0x11cd, 0x11e8, 0x11ec, 0x1201, 0x1205, 0x121b, 0x121b, + 0x122a, 0x123b, 0x124d, 0x125d, 0x126c, 0x127c, 0x1292, 0x12a2, + 0x12b1, 0x12b5, 0x12c4, 0x12d0, 0x12d9, 0x12e0, 0x12f4, 0x1307, + 0x1310, 0x131e, 0x132b, 0x133d, 0x1350, +} // Size: 1250 bytes + +const esLangStr string = "" + // Size: 4319 bytes "afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazer" + "baiyanobaskirbielorrusobúlgarobislamabambarabengalítibetanobretónbosnioc" + "atalánchechenochamorrocorsocreechecoeslavo eclesiásticochuvasiogalésdané" + "salemándivehidzongkhaewégriegoinglésesperantoespañolestonioeuskerapersaf" + "ulafinésfiyianoferoésfrancésfrisón occidentalirlandésgaélico escocésgall" + - "egoguaranígujaratimanéshausahebreohindihiri motucroatahaitianohúngaroarm" + - "eniohererointerlinguaindonesiointerlingueigboyi de Sichuáninupiaqidoisla" + - "ndésitalianoinuktitutjaponésjavanésgeorgianokongokikuyukuanyamakazajogro" + - "enlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirguíslatínlu" + - "xemburguésgandalimburguéslingalalaosianolituanoluba-katangaletónmalgache" + - "marshalésmaorímacedoniomalayalammongolmaratímalayomaltésbirmanonauruanon" + - "debele septentrionalnepalíndonganeerlandésnoruego nynorsknoruego bokmaln" + - "debele meridionalnavajonyanjaoccitanoojibwaoromooriyaoséticopanyabípalip" + - "olacopastúnportuguésquechuaretorrománicokiroundirumanorusokinyarwandasán" + - "scritosardosindhisami septentrionalsangocingaléseslovacoeslovenosamoanos" + - "honasomalíalbanésserbiosiswatisesotho meridionalsundanéssuecosuajilitami" + - "ltelugutayikotailandéstigriñaturcomanosetchwanatonganoturcotsongatártaro" + - "tahitianouigurucranianourduuzbekovendavietnamitavolapükvalónwolofxhosayí" + - "dishyorubazhuangchinozulúacehnésacoliadangmeadigeoafrihiliaghemainuacadi" + - "oaleutianoaltái meridionalinglés antiguoangikaarameomapuchearapahoarahua" + - "coasuasturianoavadhibaluchibalinésbasabamunghomalabejabembabenabafutbalu" + - "chi occidentalbhojpuribicolbinikomsiksikabrajbodoakooseburiatbuginésbulu" + - "blinmedumbacaddocaribecayugaatsamcebuanochigachibchachagatáitrukésmaríje" + - "rga chinukchoctawchipewyancheroquicheyenekurdo soranicoptotártaro de Cri" + - "meacasubiodakotadargvataitadelawareslavedogribdinkazarmadogribajo sorbio" + - "dualaneerlandés medievaljola-fonyidiuladazagaembuefikegipcio antiguoekaj" + - "ukelamitainglés medievalewondofangfilipinofonfrancés medievalfrancés ant" + - "iguofrisón septentrionalfrisón orientalfriulanogagagauzogayogbayageezgil" + - "bertésalemán de la alta edad mediaalemán de la alta edad antiguagondigor" + - "ontalogóticogrebogriego antiguoalemán suizogusiikutchinhaidahawaianohili" + - "gaynonhititahmongalto sorbiohupaibanibibioilocanoingushlojbanngombamacha" + - "mejudeo-persajudeo-árabekarakalpakocabilakachinjjukambakawikabardianokan" + - "embutyapmakondecriollo caboverdianokorokhasikotanéskoyra chiinikakokalen" + - "jinkimbundukomi permiokonkaníkosraeanokpellekarachay-balkarcareliokurukh" + - "shambalabafiakölschkumykkutenailadinolangilahndalambalezgianolakotamongo" + - "lozilorí septentrionalluba-lulualuiseñolundaluolushailuyiamadurésmafamag" + - "ahimaithilimacasarmandingomasáimabamokshamandarmendemerucriollo mauricia" + - "noirlandés medievalmakhuwa-meettometa’micmacminangkabaumanchúmanipurimoh" + - "awkmossimundanglenguas múltiplescreekmirandésmarwarimyeneerzyamazandaran" + - "ínapolitanonamabajo alemánnewariniasniueanokwasiongiemboonnogainórdico " + - "antiguon’kosotho septentrionalnuernewari clásiconyamwezinyankolenyoronzi" + - "maosageturco otomanopangasinánpahlavipampangapapiamentopalauanopersa ant" + - "iguofeniciopohnpeianoprovenzal antiguoquichérajasthanirapanuirarotongano" + - "romboromaníarrumanorwasandawesakhaarameo samaritanosamburusasaksantaling" + - "ambaysangusicilianoescocéskurdo meridionalsenecasenaselkupkoyraboro senn" + - "iirlandés antiguotashelhitshanárabe chadianosidamosami meridionalsami lu" + - "lesami inarisami skoltsoninkésogdianosranan tongoserersahosukumasususume" + - "riocomorensesiríaco clásicosiriacotemnetesoterenotetúntigrétivtokelauano" + - "klingontlingittamashektonga del Nyasatok pisintarokotsimshianotumbukatuv" + - "aluanotasawaqtuvinianotamazight del Marruecos Centraludmurtugaríticoumbu" + - "nduraízvaivóticovunjowalserwalamowaraywashowarlpirikalmyksogayaoyapésyan" + - "gbenyembacantonészapotecosímbolos Blisszenagatamazight estándar marroquí" + - "zunisin contenido lingüísticozazakiárabe estándar modernoalemán austríac" + - "oalto alemán suizoinglés australianoinglés canadienseinglés británicoing" + - "lés estadounidenseespañol latinoamericanoespañol de Españaespañol de Méx" + - "icofrancés canadiensefrancés suizoflamencoportugués de Brasilportugués d" + - "e Portugalmoldavoserbocroatasuajili del Congochino simplificadochino tra" + - "dicional" - -var esLangIdx = []uint16{ // 610 elements + "egoguaraníguyaratímanéshausahebreohindihiri motucroatacriollo haitianohú" + + "ngaroarmeniohererointerlinguaindonesiointerlingueigboyi de Sichuáninupia" + + "qidoislandésitalianoinuktitutjaponésjavanésgeorgianokongokikuyukuanyamak" + + "azajogroenlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirguí" + + "slatínluxemburguésgandalimburguéslingalalaolituanoluba-katangaletónmalga" + + "chemarshalésmaorímacedoniomalayalammongolmaratímalayomaltésbirmanonaurua" + + "nondebele septentrionalnepalíndonganeerlandésnoruego nynorsknoruego bokm" + + "alndebele meridionalnavajonyanjaoccitanoojibwaoromooriyaoséticopanyabípa" + + "lipolacopastúnportuguésquechuaromanchekirundirumanorusokinyarwandasánscr" + + "itosardosindhisami septentrionalsangocingaléseslovacoeslovenosamoanoshon" + + "asomalíalbanésserbiosuazisesotho meridionalsundanéssuecosuajilitamiltelu" + + "gutayikotailandéstigriñaturcomanosetsuanatonganoturcotsongatártarotahiti" + + "anouigurucranianourduuzbekovendavietnamitavolapükvalónwólofxhosayidisyor" + + "ubazhuangchinozulúacehnésacoliadangmeadiguéafrihiliaghemainuacadioaleuti" + + "anoaltái meridionalinglés antiguoangikaarameomapuchearapahoarahuacoasuas" + + "turianoavadhibaluchibalinésbasaabamúnghomalabejabembabenabafutbaluchi oc" + + "cidentalbhoyapuríbicolbinikomsiksikabrajbodoakooseburiatobuginésbulublin" + + "medumbacaddocaribecayugaatsamcebuanochigachibchachagatáitrukésmaríjerga " + + "chinukchoctawchipewyancheroquicheyenekurdo soranicoptotártaro de Crimeac" + + "riollo seychelensecasubiodakotadargvataitadelawareslavedogribdinkazarmad" + + "ogribajo sorbiodualaneerlandés mediojola-fonyidiuladazagaembuefikegipcio" + + " antiguoekajukelamitainglés medioewondofangfilipinofonfrancés mediofranc" + + "és antiguofrisón septentrionalfrisón orientalfriulanogagagauzochino gan" + + "gayogbayageezgilbertésalto alemán medioalto alemán antiguogondigorontalo" + + "góticogrebogriego antiguoalemán suizogusiikutchinhaidachino hakkahawaian" + + "ohiligaynonhititahmongalto sorbiochino xianghupaibanibibioilocanoingushl" + + "ojbanngombamachamejudeo-persajudeo-árabekarakalpakocabilakachinjjukambak" + + "awikabardianokanembutyapmakondecriollo caboverdianokorokhasikotanéskoyra" + + " chiinikakokalenjinkimbundukomi permiokonkaníkosraeanokpellekarachay-bal" + + "karcareliokurukhshambalabafiakölschkumykkutenailadinolangilahndalambalez" + + "gianolakotamongolozilorí septentrionalluba-lulualuiseñolundaluomizoluyia" + + "madurésmafamagahimaithilimacasarmandingomasáimabamokshamandarmendemerucr" + + "iollo mauricianoirlandés mediomakhuwa-meettometa’micmacminangkabaumanchú" + + "manipurimohawkmossimundangvarios idiomascreekmirandésmarwarimyeneerzyama" + + "zandaraníchino min nannapolitanonamabajo alemánnewariniasniueanokwasiong" + + "iemboonnogainórdico antiguon’kosesotho septentrionalnuernewari clásicony" + + "amwezinyankolenyoronzimaosageturco otomanopangasinánpahlavipampangapapia" + + "mentopalauanopidgin de Nigeriapersa antiguofeniciopohnpeianoprusianoprov" + + "enzal antiguoquichérajasthanirapanuirarotonganoromboromaníarrumanorwasan" + + "dawesakhaarameo samaritanosamburusasaksantalingambaysangusicilianoescocé" + + "skurdo meridionalsenecasenaselkupkoyraboro senniirlandés antiguotashelhi" + + "tshanárabe chadianosidamosami meridionalsami lulesami inarisami skoltson" + + "inkésogdianosranan tongoserersahosukumasususumeriocomorensesiríaco clási" + + "cosiriacotemnetesoterenotetúntigrétivtokelauanoklingontlingittamashekton" + + "ga del Nyasatok pisintarokotsimshianotumbukatuvaluanotasawaqtuvinianotam" + + "azight del Atlas Centraludmurtugaríticoumbunduraízvaivóticovunjowalserwo" + + "laytawaraywashowarlpirichino wukalmyksogayaoyapésyangbenyembacantonészap" + + "otecosímbolos Blisszenagatamazight estándar marroquízuñisin contenido li" + + "ngüísticozazakiárabe estándar modernoalemán austríacoalto alemán suizoin" + + "glés australianoinglés canadienseinglés británicoinglés estadounidensees" + + "pañol latinoamericanoespañol de Españaespañol de Méxicofrancés canadiens" + + "efrancés suizobajo sajónflamencoportugués de Brasilportugués de Portugal" + + "moldavoserbocroatasuajili del Congochino simplificadochino tradicional" + +var esLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000b, 0x0014, 0x001e, 0x0022, 0x002a, 0x0033, 0x0039, 0x0040, 0x0044, 0x004a, 0x0055, 0x005b, 0x0065, 0x006d, @@ -14272,91 +17397,94 @@ var esLangIdx = []uint16{ // 610 elements 0x00b0, 0x00b5, 0x00b9, 0x00be, 0x00d2, 0x00da, 0x00e0, 0x00e6, 0x00ed, 0x00f3, 0x00fb, 0x00ff, 0x0105, 0x010c, 0x0115, 0x011d, 0x0124, 0x012b, 0x0130, 0x0134, 0x013a, 0x0141, 0x0148, 0x0150, - 0x0162, 0x016b, 0x017c, 0x0183, 0x018b, 0x0193, 0x0199, 0x019e, - 0x01a4, 0x01a9, 0x01b2, 0x01b8, 0x01c0, 0x01c8, 0x01cf, 0x01d5, + 0x0162, 0x016b, 0x017c, 0x0183, 0x018b, 0x0194, 0x019a, 0x019f, + 0x01a5, 0x01aa, 0x01b3, 0x01b9, 0x01c9, 0x01d1, 0x01d8, 0x01de, // Entry 40 - 7F - 0x01e0, 0x01e9, 0x01f4, 0x01f8, 0x0206, 0x020d, 0x0210, 0x0219, - 0x0221, 0x022a, 0x0232, 0x023a, 0x0243, 0x0248, 0x024e, 0x0256, - 0x025c, 0x0268, 0x026d, 0x0275, 0x027c, 0x0282, 0x028b, 0x0290, - 0x0294, 0x029c, 0x02a4, 0x02aa, 0x02b7, 0x02bc, 0x02c7, 0x02ce, - 0x02d6, 0x02dd, 0x02e9, 0x02ef, 0x02f7, 0x0301, 0x0307, 0x0310, - 0x0319, 0x031f, 0x0326, 0x032c, 0x0333, 0x033a, 0x0342, 0x0357, - 0x035e, 0x0364, 0x036f, 0x037e, 0x038c, 0x039e, 0x03a4, 0x03aa, - 0x03b2, 0x03b8, 0x03bd, 0x03c2, 0x03ca, 0x03d2, 0x03d6, 0x03dc, + 0x01e9, 0x01f2, 0x01fd, 0x0201, 0x020f, 0x0216, 0x0219, 0x0222, + 0x022a, 0x0233, 0x023b, 0x0243, 0x024c, 0x0251, 0x0257, 0x025f, + 0x0265, 0x0271, 0x0276, 0x027e, 0x0285, 0x028b, 0x0294, 0x0299, + 0x029d, 0x02a5, 0x02ad, 0x02b3, 0x02c0, 0x02c5, 0x02d0, 0x02d7, + 0x02da, 0x02e1, 0x02ed, 0x02f3, 0x02fb, 0x0305, 0x030b, 0x0314, + 0x031d, 0x0323, 0x032a, 0x0330, 0x0337, 0x033e, 0x0346, 0x035b, + 0x0362, 0x0368, 0x0373, 0x0382, 0x0390, 0x03a2, 0x03a8, 0x03ae, + 0x03b6, 0x03bc, 0x03c1, 0x03c6, 0x03ce, 0x03d6, 0x03da, 0x03e0, // Entry 80 - BF - 0x03e3, 0x03ed, 0x03f4, 0x0402, 0x040a, 0x0410, 0x0414, 0x041f, - 0x0429, 0x042e, 0x0434, 0x0446, 0x044b, 0x0454, 0x045c, 0x0464, - 0x046b, 0x0470, 0x0477, 0x047f, 0x0485, 0x048c, 0x049e, 0x04a7, - 0x04ac, 0x04b3, 0x04b8, 0x04be, 0x04c4, 0x04ce, 0x04d6, 0x04df, - 0x04e8, 0x04ef, 0x04f4, 0x04fa, 0x0502, 0x050b, 0x0510, 0x0519, - 0x051d, 0x0523, 0x0528, 0x0532, 0x053a, 0x0540, 0x0545, 0x054a, - 0x0551, 0x0557, 0x055d, 0x0562, 0x0567, 0x056f, 0x0574, 0x057b, - 0x0581, 0x0581, 0x0589, 0x058e, 0x0592, 0x0598, 0x0598, 0x05a1, + 0x03e7, 0x03f1, 0x03f8, 0x0400, 0x0407, 0x040d, 0x0411, 0x041c, + 0x0426, 0x042b, 0x0431, 0x0443, 0x0448, 0x0451, 0x0459, 0x0461, + 0x0468, 0x046d, 0x0474, 0x047c, 0x0482, 0x0487, 0x0499, 0x04a2, + 0x04a7, 0x04ae, 0x04b3, 0x04b9, 0x04bf, 0x04c9, 0x04d1, 0x04da, + 0x04e2, 0x04e9, 0x04ee, 0x04f4, 0x04fc, 0x0505, 0x050a, 0x0513, + 0x0517, 0x051d, 0x0522, 0x052c, 0x0534, 0x053a, 0x0540, 0x0545, + 0x054a, 0x0550, 0x0556, 0x055b, 0x0560, 0x0568, 0x056d, 0x0574, + 0x057b, 0x057b, 0x0583, 0x0588, 0x058c, 0x0592, 0x0592, 0x059b, // Entry C0 - FF - 0x05a1, 0x05b2, 0x05c1, 0x05c7, 0x05cd, 0x05d4, 0x05d4, 0x05db, - 0x05db, 0x05e3, 0x05e3, 0x05e3, 0x05e6, 0x05e6, 0x05ef, 0x05ef, - 0x05f5, 0x05fc, 0x0604, 0x0604, 0x0608, 0x060d, 0x060d, 0x0614, - 0x0618, 0x061d, 0x061d, 0x0621, 0x0626, 0x0626, 0x0638, 0x0640, - 0x0645, 0x0649, 0x0649, 0x064c, 0x0653, 0x0653, 0x0653, 0x0657, - 0x0657, 0x065b, 0x0661, 0x0667, 0x066f, 0x0673, 0x0677, 0x067e, - 0x0683, 0x0689, 0x068f, 0x0694, 0x069b, 0x06a0, 0x06a7, 0x06b0, - 0x06b7, 0x06bc, 0x06c8, 0x06cf, 0x06d8, 0x06e0, 0x06e7, 0x06f3, + 0x059b, 0x05ac, 0x05bb, 0x05c1, 0x05c7, 0x05ce, 0x05ce, 0x05d5, + 0x05d5, 0x05d5, 0x05dd, 0x05dd, 0x05dd, 0x05e0, 0x05e0, 0x05e9, + 0x05e9, 0x05ef, 0x05f6, 0x05fe, 0x05fe, 0x0603, 0x0609, 0x0609, + 0x0610, 0x0614, 0x0619, 0x0619, 0x061d, 0x0622, 0x0622, 0x0634, + 0x063e, 0x0643, 0x0647, 0x0647, 0x064a, 0x0651, 0x0651, 0x0651, + 0x0655, 0x0655, 0x0659, 0x065f, 0x0666, 0x066e, 0x0672, 0x0676, + 0x067d, 0x0682, 0x0688, 0x068e, 0x0693, 0x069a, 0x069f, 0x06a6, + 0x06af, 0x06b6, 0x06bb, 0x06c7, 0x06ce, 0x06d7, 0x06df, 0x06e6, // Entry 100 - 13F - 0x06f8, 0x06f8, 0x070a, 0x0711, 0x0717, 0x071d, 0x0722, 0x072a, - 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x074f, 0x074f, 0x0754, - 0x0768, 0x0772, 0x0777, 0x077d, 0x0781, 0x0785, 0x0785, 0x0794, - 0x079a, 0x07a1, 0x07b1, 0x07b1, 0x07b7, 0x07b7, 0x07bb, 0x07c3, - 0x07c3, 0x07c6, 0x07c6, 0x07d7, 0x07e7, 0x07e7, 0x07fc, 0x080c, - 0x0814, 0x0816, 0x081d, 0x081d, 0x0821, 0x0826, 0x0826, 0x082a, - 0x0834, 0x0834, 0x0851, 0x0870, 0x0870, 0x0875, 0x087e, 0x0885, - 0x088a, 0x0898, 0x08a5, 0x08a5, 0x08a5, 0x08aa, 0x08b1, 0x08b6, + 0x06f2, 0x06f7, 0x06f7, 0x0709, 0x071c, 0x0723, 0x0729, 0x072f, + 0x0734, 0x073c, 0x0741, 0x0747, 0x074c, 0x0751, 0x0756, 0x0761, + 0x0761, 0x0766, 0x0777, 0x0781, 0x0786, 0x078c, 0x0790, 0x0794, + 0x0794, 0x07a3, 0x07a9, 0x07b0, 0x07bd, 0x07bd, 0x07c3, 0x07c3, + 0x07c7, 0x07cf, 0x07cf, 0x07d2, 0x07d2, 0x07e0, 0x07f0, 0x07f0, + 0x0805, 0x0815, 0x081d, 0x081f, 0x0826, 0x082f, 0x0833, 0x0838, + 0x0838, 0x083c, 0x0846, 0x0846, 0x0858, 0x086c, 0x086c, 0x0871, + 0x087a, 0x0881, 0x0886, 0x0894, 0x08a1, 0x08a1, 0x08a1, 0x08a6, // Entry 140 - 17F - 0x08b6, 0x08be, 0x08be, 0x08c8, 0x08ce, 0x08d3, 0x08de, 0x08de, - 0x08e2, 0x08e6, 0x08ec, 0x08f3, 0x08f9, 0x08f9, 0x08f9, 0x08ff, - 0x0905, 0x090c, 0x0917, 0x0923, 0x0923, 0x092e, 0x0934, 0x093a, - 0x093d, 0x0942, 0x0946, 0x0950, 0x0957, 0x095b, 0x0962, 0x0976, - 0x0976, 0x097a, 0x097a, 0x097f, 0x0987, 0x0993, 0x0993, 0x0993, - 0x0997, 0x099f, 0x09a7, 0x09b2, 0x09ba, 0x09c3, 0x09c9, 0x09d8, - 0x09d8, 0x09d8, 0x09df, 0x09e5, 0x09ed, 0x09f2, 0x09f9, 0x09fe, - 0x0a05, 0x0a0b, 0x0a10, 0x0a16, 0x0a1b, 0x0a23, 0x0a23, 0x0a23, + 0x08ad, 0x08b2, 0x08bd, 0x08c5, 0x08c5, 0x08cf, 0x08d5, 0x08da, + 0x08e5, 0x08f0, 0x08f4, 0x08f8, 0x08fe, 0x0905, 0x090b, 0x090b, + 0x090b, 0x0911, 0x0917, 0x091e, 0x0929, 0x0935, 0x0935, 0x0940, + 0x0946, 0x094c, 0x094f, 0x0954, 0x0958, 0x0962, 0x0969, 0x096d, + 0x0974, 0x0988, 0x0988, 0x098c, 0x098c, 0x0991, 0x0999, 0x09a5, + 0x09a5, 0x09a5, 0x09a9, 0x09b1, 0x09b9, 0x09c4, 0x09cc, 0x09d5, + 0x09db, 0x09ea, 0x09ea, 0x09ea, 0x09f1, 0x09f7, 0x09ff, 0x0a04, + 0x0a0b, 0x0a10, 0x0a17, 0x0a1d, 0x0a22, 0x0a28, 0x0a2d, 0x0a35, // Entry 180 - 1BF - 0x0a23, 0x0a29, 0x0a29, 0x0a2e, 0x0a32, 0x0a45, 0x0a45, 0x0a4f, - 0x0a57, 0x0a5c, 0x0a5f, 0x0a65, 0x0a6a, 0x0a6a, 0x0a6a, 0x0a72, - 0x0a76, 0x0a7c, 0x0a84, 0x0a8b, 0x0a93, 0x0a99, 0x0a9d, 0x0aa3, - 0x0aa9, 0x0aae, 0x0ab2, 0x0ac4, 0x0ad6, 0x0ae4, 0x0aeb, 0x0af1, - 0x0afc, 0x0b03, 0x0b0b, 0x0b11, 0x0b16, 0x0b16, 0x0b1d, 0x0b2f, - 0x0b34, 0x0b3d, 0x0b44, 0x0b44, 0x0b49, 0x0b4e, 0x0b5a, 0x0b5a, - 0x0b64, 0x0b68, 0x0b74, 0x0b7a, 0x0b7e, 0x0b85, 0x0b85, 0x0b8b, - 0x0b94, 0x0b99, 0x0ba9, 0x0ba9, 0x0baf, 0x0bc2, 0x0bc6, 0x0bd5, + 0x0a35, 0x0a35, 0x0a35, 0x0a3b, 0x0a3b, 0x0a40, 0x0a44, 0x0a57, + 0x0a57, 0x0a61, 0x0a69, 0x0a6e, 0x0a71, 0x0a75, 0x0a7a, 0x0a7a, + 0x0a7a, 0x0a82, 0x0a86, 0x0a8c, 0x0a94, 0x0a9b, 0x0aa3, 0x0aa9, + 0x0aad, 0x0ab3, 0x0ab9, 0x0abe, 0x0ac2, 0x0ad4, 0x0ae3, 0x0af1, + 0x0af8, 0x0afe, 0x0b09, 0x0b10, 0x0b18, 0x0b1e, 0x0b23, 0x0b23, + 0x0b2a, 0x0b38, 0x0b3d, 0x0b46, 0x0b4d, 0x0b4d, 0x0b52, 0x0b57, + 0x0b63, 0x0b70, 0x0b7a, 0x0b7e, 0x0b8a, 0x0b90, 0x0b94, 0x0b9b, + 0x0b9b, 0x0ba1, 0x0baa, 0x0baf, 0x0bbf, 0x0bbf, 0x0bc5, 0x0bda, // Entry 1C0 - 1FF - 0x0bdd, 0x0be5, 0x0bea, 0x0bef, 0x0bf4, 0x0c01, 0x0c0c, 0x0c13, - 0x0c1b, 0x0c25, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c3a, 0x0c3a, - 0x0c41, 0x0c41, 0x0c41, 0x0c4b, 0x0c4b, 0x0c5c, 0x0c63, 0x0c63, - 0x0c6d, 0x0c74, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c84, 0x0c8b, 0x0c8b, - 0x0c8b, 0x0c8b, 0x0c93, 0x0c96, 0x0c9d, 0x0ca2, 0x0cb3, 0x0cba, - 0x0cbf, 0x0cc6, 0x0cc6, 0x0ccd, 0x0cd2, 0x0cdb, 0x0ce3, 0x0ce3, - 0x0cf3, 0x0cf9, 0x0cfd, 0x0cfd, 0x0d03, 0x0d12, 0x0d23, 0x0d23, - 0x0d2c, 0x0d30, 0x0d3f, 0x0d45, 0x0d45, 0x0d45, 0x0d54, 0x0d5d, + 0x0bde, 0x0bed, 0x0bf5, 0x0bfd, 0x0c02, 0x0c07, 0x0c0c, 0x0c19, + 0x0c24, 0x0c2b, 0x0c33, 0x0c3d, 0x0c45, 0x0c45, 0x0c56, 0x0c56, + 0x0c56, 0x0c63, 0x0c63, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c74, 0x0c7c, + 0x0c8d, 0x0c94, 0x0c94, 0x0c9e, 0x0ca5, 0x0cb0, 0x0cb0, 0x0cb0, + 0x0cb5, 0x0cbc, 0x0cbc, 0x0cbc, 0x0cbc, 0x0cc4, 0x0cc7, 0x0cce, + 0x0cd3, 0x0ce4, 0x0ceb, 0x0cf0, 0x0cf7, 0x0cf7, 0x0cfe, 0x0d03, + 0x0d0c, 0x0d14, 0x0d14, 0x0d24, 0x0d2a, 0x0d2e, 0x0d2e, 0x0d34, + 0x0d43, 0x0d54, 0x0d54, 0x0d5d, 0x0d61, 0x0d70, 0x0d76, 0x0d76, // Entry 200 - 23F - 0x0d67, 0x0d71, 0x0d79, 0x0d81, 0x0d8d, 0x0d92, 0x0d96, 0x0d96, - 0x0d9c, 0x0da0, 0x0da7, 0x0db0, 0x0dc1, 0x0dc8, 0x0dc8, 0x0dc8, - 0x0dcd, 0x0dd1, 0x0dd7, 0x0ddd, 0x0de3, 0x0de6, 0x0df0, 0x0df0, - 0x0df7, 0x0dfe, 0x0dfe, 0x0e06, 0x0e15, 0x0e1e, 0x0e1e, 0x0e24, - 0x0e24, 0x0e2e, 0x0e2e, 0x0e35, 0x0e3e, 0x0e45, 0x0e4e, 0x0e6d, - 0x0e73, 0x0e7d, 0x0e84, 0x0e89, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, - 0x0e8c, 0x0e93, 0x0e93, 0x0e98, 0x0e9e, 0x0ea4, 0x0ea9, 0x0eae, - 0x0eb6, 0x0eb6, 0x0ebc, 0x0ebc, 0x0ec0, 0x0ec3, 0x0ec9, 0x0ed0, + 0x0d76, 0x0d85, 0x0d8e, 0x0d98, 0x0da2, 0x0daa, 0x0db2, 0x0dbe, + 0x0dc3, 0x0dc7, 0x0dc7, 0x0dcd, 0x0dd1, 0x0dd8, 0x0de1, 0x0df2, + 0x0df9, 0x0df9, 0x0df9, 0x0dfe, 0x0e02, 0x0e08, 0x0e0e, 0x0e14, + 0x0e17, 0x0e21, 0x0e21, 0x0e28, 0x0e2f, 0x0e2f, 0x0e37, 0x0e46, + 0x0e4f, 0x0e4f, 0x0e55, 0x0e55, 0x0e5f, 0x0e5f, 0x0e66, 0x0e6f, + 0x0e76, 0x0e7f, 0x0e9a, 0x0ea0, 0x0eaa, 0x0eb1, 0x0eb6, 0x0eb9, + 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, 0x0ec0, 0x0ec0, 0x0ec5, 0x0ecb, + 0x0ed2, 0x0ed7, 0x0edc, 0x0ee4, 0x0eec, 0x0ef2, 0x0ef2, 0x0ef6, // Entry 240 - 27F - 0x0ed5, 0x0ed5, 0x0ede, 0x0ee6, 0x0ef5, 0x0ef5, 0x0efb, 0x0f18, - 0x0f1c, 0x0f37, 0x0f3d, 0x0f55, 0x0f55, 0x0f67, 0x0f79, 0x0f8c, - 0x0f9e, 0x0fb0, 0x0fc6, 0x0fde, 0x0ff1, 0x1004, 0x1004, 0x1017, - 0x1025, 0x1025, 0x102d, 0x1041, 0x1057, 0x105e, 0x1069, 0x107a, - 0x108c, 0x109d, -} // Size: 1244 bytes - -var es419LangStr string = "vascoswahililuovaiswahili del Congo" - -var es419LangIdx = []uint16{ // 608 elements + 0x0ef9, 0x0eff, 0x0f06, 0x0f0b, 0x0f0b, 0x0f14, 0x0f1c, 0x0f2b, + 0x0f2b, 0x0f31, 0x0f4e, 0x0f53, 0x0f6e, 0x0f74, 0x0f8c, 0x0f8c, + 0x0f9e, 0x0fb0, 0x0fc3, 0x0fd5, 0x0fe7, 0x0ffd, 0x1015, 0x1028, + 0x103b, 0x103b, 0x104e, 0x105c, 0x1067, 0x106f, 0x1083, 0x1099, + 0x10a0, 0x10ab, 0x10bc, 0x10ce, 0x10df, +} // Size: 1250 bytes + +const es419LangStr string = "" + // Size: 218 bytes + "vascogujaratihaitianolaosianoretorrománicoswahiliyídishachenésadigeoarap" + + "ajógriego clásicosorbio altoCriollo (Cabo Verde)luoprusiano antiguoárabe" + + " (Chad)tamazight del Marruecos Centralvaiwalamowuzuniswahili (Congo)" + +var es419LangIdx = []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14364,89 +17492,90 @@ var es419LangIdx = []uint16{ // 608 elements 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000d, 0x000d, 0x000d, + 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x0015, 0x0015, // Entry 40 - 7F - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, // Entry 80 - BF - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x001d, 0x001d, 0x001d, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0041, 0x0041, 0x0041, + 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, // Entry C0 - FF - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, // Entry 100 - 13F - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, // Entry 140 - 17F - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, // Entry 180 - 1BF - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, + 0x007d, 0x007d, 0x007d, 0x007d, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, // Entry 1C0 - 1FF - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009d, 0x009d, 0x009d, // Entry 200 - 23F - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, + 0x009d, 0x009d, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bf, + 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c7, 0x00c7, 0x00c7, 0x00c7, // Entry 240 - 27F - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0023, -} // Size: 1240 bytes - -var etLangStr string = "" + // Size: 4576 bytes - "afariabhaasiavestaafrikaaniakaniamhariaragoniaraabiaassamiavaariaimaraas" + + 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, + 0x00c7, 0x00c7, 0x00c7, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, + 0x00cb, 0x00cb, 0x00da, +} // Size: 1246 bytes + +const etLangStr string = "" + // Size: 4574 bytes + "afariabhaasiavestaafrikaaniakaniamharaaragoniaraabiaassamiavaariaimaraas" + "erbaidžaanibaškiirivalgevenebulgaariabislamabambarabengalitiibetibretoon" + "ibosniakatalaanitšetšeenitšamorrokorsikakriitšehhikirikuslaavitšuvašikõm" + "ritaanisaksamaldiividzongkhaevekreekaingliseesperantohispaaniaeestibaski" + @@ -14457,59 +17586,59 @@ var etLangStr string = "" + // Size: 4576 bytes "adakoreakanurikašmiirikurdikomikornikirgiisiladinaletseburgigandalimburg" + "ilingalalaoleedulubalätimalagassimaršallimaoorimakedooniamalajalamimongo" + "limarathimalaimaltabirmanaurupõhjandebelenepalindongahollandiuusnorranor" + - "ra bokmållõunandebelenavahonjandžaprovansiodžibveioromooriaosseedipandža" + - "bipaalipoolapuštuportugaliketšuaromanširundirumeeniaveneruandasanskritis" + - "ardisindhipõhjasaamisangosingalislovakisloveenisamoašonasomaalialbaanias" + - "erbiasvaasilõunasothosundarootsisuahiilitamilitelugutadžikitaitigrinjatü" + - "rkmeenitsvanatongatürgitsongatataritahitiuiguuriukrainaurduusbekivendavi" + - "etnamivolapükivalloonivolofikoosajidišijorubatšuangihiinasuuluatšehiatšo" + - "liadangmeadõgeeTuneesia araabiaafrihiliaghemiainuakadialabamaaleuudigeeg" + - "ialtaivanaingliseangikaarameamapudunguniaraonaarapahoAlžeeria araabiaara" + - "vakiMaroko araabiaEgiptuse araabiaasuAmeerika viipekeelastuuriaavadhibel" + - "utšibalibaieribasabamunibatakighomalabedžabembabetavibenabafutibadagalää" + - "nebelutšibhodžpuribikoliedobandžarikomi (Aafrika)mustjalaindiaanibišnupr" + - "ijabahtiaribradžibrahuibodoakooseburjaadibugibulubilinimedumbakadokariib" + - "ikajukaatsamisebutšigatšibtšatšagataitšuugimaritšinuki žargoontšoktotšip" + - "evaitšerokiišaieenisoranikoptikapisnonikrimmitatarikašuubisiuudargidavid" + - "adelavarisleividogribidinkazarmadogrialamsorbikeskdusunidualakeskholland" + - "ifonjidjuladazaembuefikiemiiliaegiptuseekadžukieelamikeskinglisekeskjupi" + - "kievondoestremenjufangifilipiinimeäfonicajun’ikeskprantsusevanaprantsuse" + - "frankoprovansipõhjafriisiidafriisifriuuligaagagauusikanigajogbajaetioopi" + - "akiribatigilakikeskülemsaksavanaülemsaksagondigorontalogootigrebovanakre" + - "ekašveitsisaksavajuufarefaregusiigvitšinihaidahavaiFidži hindihiligainon" + - "ihetihmongiülemsorbisjangihupaibaniibibioilokoingušiisuriJamaica kreoolk" + - "eelložbanngombamatšamejuudipärsiajuudiaraabiajüütikarakalpakikabiilikatš" + - "inijjukambakaavikabardi-tšerkessikanembutjapimakondekabuverdianukorokain" + - "gangikhasisakakoyra chiinikhovarikõrmandžkikakokalendžinimbundupermikomi" + - "konkanikosraekpellekaratšai-balkaarikriokinaraiakarjalakuruhhišambalabaf" + - "iakölnikumõkikutenailadiinolangilahndalambalesgiliguuriliivilakotalombar" + - "dimongolozipõhjalurilatgalilulualuisenjolundaluolušeiluhjaklassikaline h" + - "iinalazimaduramafamagahimaithilimakassarimalinkemasaimabamokšamandarimen" + - "demeruMauritiuse kreoolkeelkeskiirimakhuwa-meettometamikmakiminangkabaum" + - "andžumanipurimohoogimoremäemarimundangimitu keeltmaskogimirandamarvarime" + - "ntaveimjeneersamazandaraanilõunamininapolinamaalamsaksanevariniasiniueao" + - "kwasiongiembooninogaivanapõhjalanoviaalnkoopedinuerivananevarinjamvesink" + - "olenjoronzimaoseidžiosmanitürgipangasinanipahlavipampangapapiamentobelau" + - "pikardiPennsylvania saksamennoniidisaksavanapärsiaPfalzifoiniikiapiemont" + - "epontosepoonpeipreisivanaprovansikitšeradžastanirapanuirarotongaromanjar" + - "iifirombomustlaskeelrotumarussiinirovianaaromuunirvaasandavejakuudiSamaa" + - "ria arameasamburusasakisantalisauraštrangambaisangusitsiiliašotilõunakur" + - "disenekasenaserisölkupikoyraboro sennivanaiirižemaidišilhašaniTšaadi ara" + - "abiasidamoalamsileesiaselajarilõunasaamiLule saamiInari saamikoltasaamis" + - "oninkesogdisrananisererisahosaterfriisisukumasususumerikomoorivanasüüria" + - "süüriasileesiatulutemnetesoterenotetumitigreetivitokelautsahhiklingonitl" + - "ingititalõšitamašekitšitongauusmelaneesiaturojotarokotsakooniatšimšilõun" + - "ataaditumbukatuvalutaswaqitõvatamasiktiudmurdiugaritiumbundurootvaivenet" + - "ivepsalääneflaamiMaini frangivadjavõruvundžowalserivolaitavaraivašovarlp" + - "iriuukalmõkimegrelisogajaojapiyangbenijembanjengatukantonisapoteegiBliss" + - "i sümbolidzeelandizenagatamasikti (Maroko)sunjimittekeelelinezazaaraabia" + - " (tänapäevane)Austria saksaŠveitsi ülemsaksaAustraalia ingliseKanada ing" + - "liseBriti ingliseAmeerika ingliseLadina-Ameerika hispaaniaEuroopa hispaa" + - "niaMehhiko hispaaniaKanada prantsuseŠveitsi prantsuseHollandi alamsaksaf" + - "laamiBrasiilia portugaliEuroopa portugalimoldovaserbia-horvaadiKongo sua" + - "hiilihiina (lihtsustatud)hiina (traditsiooniline)" - -var etLangIdx = []uint16{ // 610 elements + "ra bokmållõunandebelenavahonjandžaoksitaaniodžibveioromooriaosseedipandž" + + "abipaalipoolapuštuportugaliketšuaromanširundirumeeniaveneruandasanskriti" + + "sardisindhipõhjasaamisangosingalislovakisloveenisamoašonasomaalialbaania" + + "serbiasvaasilõunasothosundarootsisuahiilitamilitelugutadžikitaitigrinjat" + + "ürkmeenitsvanatongatürgitsongatataritahitiuiguuriukrainaurduusbekivenda" + + "vietnamivolapükivalloonivolofikoosajidišijorubatšuangihiinasuuluatšehiat" + + "šoliadangmeadõgeeTuneesia araabiaafrihiliaghemiainuakadialabamaaleuudig" + + "eegialtaivanaingliseangikaarameamapudunguniaraonaarapahoAlžeeria araabia" + + "aravakiMaroko araabiaEgiptuse araabiaasuAmeerika viipekeelastuuriaavadhi" + + "belutšibalibaieribasabamunibatakighomalabedžabembabetavibenabafutibadaga" + + "läänebelutšibhodžpuribikoliedobandžarikomi (Aafrika)mustjalaindiaanibišn" + + "uprijabahtiaribradžibrahuibodoakooseburjaadibugibulubilinimedumbakadokar" + + "iibikajukaatsamisebutšigatšibtšatšagataitšuugimaritšinuki žargoontšoktot" + + "šipevaitšerokiišaieenisoranikoptikapisnonikrimmitatariseišellikašuubisi" + + "uudargidavidadelavarisleividogribidinkazarmadogrialamsorbikeskdusunidual" + + "akeskhollandifonjidjuladazaembuefikiemiiliaegiptuseekadžukieelamikesking" + + "lisekeskjupikievondoestremenjufangifilipiinimeäfonicajun’ikeskprantsusev" + + "anaprantsusefrankoprovansipõhjafriisiidafriisifriuuligaagagauusikanigajo" + + "gbajaetioopiakiribatigilakikeskülemsaksavanaülemsaksagondigorontalogooti" + + "grebovanakreekašveitsisaksavajuufarefaregusiigvitšinihaidahakkahavaiFidž" + + "i hindihiligainonihetihmongiülemsorbisjangihupaibaniibibioilokoingušiisu" + + "riJamaica kreoolkeelložbanngombamatšamejuudipärsiajuudiaraabiajüütikarak" + + "alpakikabiilikatšinijjukambakaavikabardi-tšerkessikanembutjapimakondekab" + + "uverdianukorokaingangikhasisakakoyra chiinikhovarikõrmandžkikakokalendži" + + "nimbundupermikomikonkanikosraekpellekaratšai-balkaarikriokinaraiakarjala" + + "kuruhhišambalabafiakölnikumõkikutenailadiinolangilahndalambalesgiliguuri" + + "liivilakotalombardimongolozipõhjalurilatgalilulualuisenjolundaluolušeilu" + + "hjaklassikaline hiinalazimaduramafamagahimaithilimakassarimalinkemasaima" + + "bamokšamandarimendemeruMauritiuse kreoolkeelkeskiirimakhuwa-meettometami" + + "kmakiminangkabaumandžumanipurimohoogimoremäemarimundangimitu keeltmaskog" + + "imirandamarvarimentaveimjeneersamazandaraanilõunamininapolinamaalamsaksa" + + "nevariniasiniueaokwasiongiembooninogaivanapõhjalanoviaalnkoopõhjasothonu" + + "erivananevarinjamvesinkolenjoronzimaoseidžiosmanitürgipangasinanipahlavi" + + "pampangapapiamentobelaupikardiNigeeria pidžinkeelPennsylvania saksamenno" + + "niidisaksavanapärsiaPfalzifoiniikiapiemontepontosepoonpeipreisivanaprova" + + "nsikitšeradžastanirapanuirarotongaromanjariifirombomustlaskeelrotumaruss" + + "iinirovianaaromuunirvaasandavejakuudiSamaaria arameasamburusasakisantali" + + "sauraštrangambaisangusitsiiliašotilõunakurdisenekasenaserisölkupikoyrabo" + + "ro sennivanaiirižemaidišilhašaniTšaadi araabiasidamoalamsileesiaselajari" + + "lõunasaamiLule saamiInari saamikoltasaamisoninkesogdisrananisererisahosa" + + "terfriisisukumasususumerikomoorivanasüüriasüüriasileesiatulutemnetesoter" + + "enotetumitigreetivitokelautsahhiklingonitlingititalõšitamašekitšitongauu" + + "smelaneesiaturojotarokotsakooniatšimšilõunataaditumbukatuvalutaswaqitõva" + + "tamasiktiudmurdiugaritiumbundurootvaivenetivepsalääneflaamiMaini frangiv" + + "adjavõruvundžowalserivolaitavaraivašovarlpiriuukalmõkimegrelisogajaojapi" + + "yangbenijembanjengatukantonisapoteegiBlissi sümbolidzeelandizenagatamasi" + + "kti (Maroko)sunjimittekeelelinezazaaraabia (tänapäevane)Austria saksaŠve" + + "itsi ülemsaksaAustraalia ingliseKanada ingliseBriti ingliseAmeerika ingl" + + "iseLadina-Ameerika hispaaniaEuroopa hispaaniaMehhiko hispaaniaKanada pra" + + "ntsuseŠveitsi prantsuseHollandi alamsaksaflaamiBrasiilia portugaliEuroop" + + "a portugalimoldovaserbia-horvaadiKongo suahiili" + +var etLangIdx = []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0005, 0x000c, 0x0012, 0x001b, 0x0020, 0x0026, 0x002d, 0x0034, 0x003a, 0x0040, 0x0046, 0x0054, 0x005d, 0x0066, 0x006f, @@ -14527,229 +17656,231 @@ var etLangIdx = []uint16{ // 610 elements 0x02a6, 0x02ab, 0x02af, 0x02b4, 0x02bd, 0x02c6, 0x02cc, 0x02d6, 0x02e0, 0x02e7, 0x02ee, 0x02f3, 0x02f8, 0x02fd, 0x0302, 0x030f, 0x0315, 0x031b, 0x0323, 0x032b, 0x0338, 0x0345, 0x034b, 0x0353, - 0x035b, 0x0364, 0x0369, 0x036d, 0x0374, 0x037d, 0x0382, 0x0387, + 0x035c, 0x0365, 0x036a, 0x036e, 0x0375, 0x037e, 0x0383, 0x0388, // Entry 80 - BF - 0x038d, 0x0396, 0x039d, 0x03a5, 0x03aa, 0x03b2, 0x03b6, 0x03bc, - 0x03c5, 0x03ca, 0x03d0, 0x03db, 0x03e0, 0x03e7, 0x03ee, 0x03f6, - 0x03fb, 0x0400, 0x0407, 0x040f, 0x0415, 0x041b, 0x0426, 0x042b, - 0x0431, 0x0439, 0x043f, 0x0445, 0x044d, 0x0450, 0x0458, 0x0462, - 0x0468, 0x046d, 0x0473, 0x0479, 0x047f, 0x0485, 0x048c, 0x0493, - 0x0497, 0x049d, 0x04a2, 0x04aa, 0x04b3, 0x04bb, 0x04c1, 0x04c6, - 0x04cd, 0x04d3, 0x04db, 0x04e0, 0x04e5, 0x04ec, 0x04f3, 0x04fa, - 0x0501, 0x0511, 0x0519, 0x051f, 0x0523, 0x0528, 0x052f, 0x0536, + 0x038e, 0x0397, 0x039e, 0x03a6, 0x03ab, 0x03b3, 0x03b7, 0x03bd, + 0x03c6, 0x03cb, 0x03d1, 0x03dc, 0x03e1, 0x03e8, 0x03ef, 0x03f7, + 0x03fc, 0x0401, 0x0408, 0x0410, 0x0416, 0x041c, 0x0427, 0x042c, + 0x0432, 0x043a, 0x0440, 0x0446, 0x044e, 0x0451, 0x0459, 0x0463, + 0x0469, 0x046e, 0x0474, 0x047a, 0x0480, 0x0486, 0x048d, 0x0494, + 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b4, 0x04bc, 0x04c2, 0x04c7, + 0x04ce, 0x04d4, 0x04dc, 0x04e1, 0x04e6, 0x04ed, 0x04f4, 0x04fb, + 0x0502, 0x0512, 0x051a, 0x0520, 0x0524, 0x0529, 0x0530, 0x0537, // Entry C0 - FF - 0x053b, 0x0540, 0x054b, 0x0551, 0x0557, 0x0562, 0x0568, 0x056f, - 0x0580, 0x0587, 0x0595, 0x05a5, 0x05a8, 0x05ba, 0x05c2, 0x05c2, - 0x05c8, 0x05d0, 0x05d4, 0x05da, 0x05de, 0x05e4, 0x05ea, 0x05f1, - 0x05f7, 0x05fc, 0x0602, 0x0606, 0x060c, 0x0612, 0x0621, 0x062b, - 0x0631, 0x0634, 0x063d, 0x064b, 0x065b, 0x0666, 0x066e, 0x0675, - 0x067b, 0x067f, 0x0685, 0x068d, 0x0691, 0x0695, 0x069b, 0x06a2, - 0x06a6, 0x06ad, 0x06b3, 0x06b9, 0x06bd, 0x06c3, 0x06cc, 0x06d5, - 0x06dc, 0x06e0, 0x06f1, 0x06f8, 0x0701, 0x070a, 0x0712, 0x0718, + 0x053c, 0x0541, 0x054c, 0x0552, 0x0558, 0x0563, 0x0569, 0x0570, + 0x0581, 0x0581, 0x0588, 0x0596, 0x05a6, 0x05a9, 0x05bb, 0x05c3, + 0x05c3, 0x05c9, 0x05d1, 0x05d5, 0x05db, 0x05df, 0x05e5, 0x05eb, + 0x05f2, 0x05f8, 0x05fd, 0x0603, 0x0607, 0x060d, 0x0613, 0x0622, + 0x062c, 0x0632, 0x0635, 0x063e, 0x064c, 0x065c, 0x0667, 0x066f, + 0x0676, 0x067c, 0x0680, 0x0686, 0x068e, 0x0692, 0x0696, 0x069c, + 0x06a3, 0x06a7, 0x06ae, 0x06b4, 0x06ba, 0x06be, 0x06c4, 0x06cd, + 0x06d6, 0x06dd, 0x06e1, 0x06f2, 0x06f9, 0x0702, 0x070b, 0x0713, // Entry 100 - 13F - 0x071d, 0x0726, 0x0732, 0x073a, 0x073e, 0x0743, 0x0749, 0x0751, - 0x0757, 0x075e, 0x0763, 0x0768, 0x076d, 0x0776, 0x0780, 0x0785, - 0x0791, 0x0796, 0x079b, 0x079f, 0x07a3, 0x07a8, 0x07af, 0x07b7, - 0x07c0, 0x07c6, 0x07d1, 0x07db, 0x07e1, 0x07eb, 0x07f0, 0x07f9, - 0x07fd, 0x0801, 0x080a, 0x0817, 0x0824, 0x0832, 0x083e, 0x0847, - 0x084e, 0x0851, 0x0859, 0x085d, 0x0861, 0x0866, 0x0866, 0x086e, - 0x0876, 0x087c, 0x088a, 0x0898, 0x0898, 0x089d, 0x08a6, 0x08ab, - 0x08b0, 0x08ba, 0x08c7, 0x08cc, 0x08d4, 0x08d9, 0x08e2, 0x08e7, + 0x0719, 0x071e, 0x0727, 0x0733, 0x073c, 0x0744, 0x0748, 0x074d, + 0x0753, 0x075b, 0x0761, 0x0768, 0x076d, 0x0772, 0x0777, 0x0780, + 0x078a, 0x078f, 0x079b, 0x07a0, 0x07a5, 0x07a9, 0x07ad, 0x07b2, + 0x07b9, 0x07c1, 0x07ca, 0x07d0, 0x07db, 0x07e5, 0x07eb, 0x07f5, + 0x07fa, 0x0803, 0x0807, 0x080b, 0x0814, 0x0821, 0x082e, 0x083c, + 0x0848, 0x0851, 0x0858, 0x085b, 0x0863, 0x0867, 0x086b, 0x0870, + 0x0870, 0x0878, 0x0880, 0x0886, 0x0894, 0x08a2, 0x08a2, 0x08a7, + 0x08b0, 0x08b5, 0x08ba, 0x08c4, 0x08d1, 0x08d6, 0x08de, 0x08e3, // Entry 140 - 17F - 0x08e7, 0x08ec, 0x08f8, 0x0903, 0x0907, 0x090d, 0x0917, 0x091d, - 0x0921, 0x0926, 0x092c, 0x0931, 0x0938, 0x093d, 0x094f, 0x0956, - 0x095c, 0x0964, 0x0970, 0x097c, 0x0983, 0x098e, 0x0995, 0x099d, - 0x09a0, 0x09a5, 0x09aa, 0x09bc, 0x09c3, 0x09c8, 0x09cf, 0x09db, - 0x09db, 0x09df, 0x09e8, 0x09ed, 0x09f1, 0x09fd, 0x0a04, 0x0a10, - 0x0a14, 0x0a1f, 0x0a25, 0x0a2e, 0x0a35, 0x0a3b, 0x0a41, 0x0a53, - 0x0a57, 0x0a5f, 0x0a66, 0x0a6d, 0x0a75, 0x0a7a, 0x0a80, 0x0a87, - 0x0a8e, 0x0a95, 0x0a9a, 0x0aa0, 0x0aa5, 0x0aaa, 0x0aaa, 0x0ab1, + 0x08ec, 0x08f1, 0x08f6, 0x08fb, 0x0907, 0x0912, 0x0916, 0x091c, + 0x0926, 0x092c, 0x0930, 0x0935, 0x093b, 0x0940, 0x0947, 0x094c, + 0x095e, 0x0965, 0x096b, 0x0973, 0x097f, 0x098b, 0x0992, 0x099d, + 0x09a4, 0x09ac, 0x09af, 0x09b4, 0x09b9, 0x09cb, 0x09d2, 0x09d7, + 0x09de, 0x09ea, 0x09ea, 0x09ee, 0x09f7, 0x09fc, 0x0a00, 0x0a0c, + 0x0a13, 0x0a1f, 0x0a23, 0x0a2e, 0x0a34, 0x0a3d, 0x0a44, 0x0a4a, + 0x0a50, 0x0a62, 0x0a66, 0x0a6e, 0x0a75, 0x0a7c, 0x0a84, 0x0a89, + 0x0a8f, 0x0a96, 0x0a9d, 0x0aa4, 0x0aa9, 0x0aaf, 0x0ab4, 0x0ab9, // Entry 180 - 1BF - 0x0ab6, 0x0abc, 0x0ac4, 0x0ac9, 0x0acd, 0x0ad7, 0x0ade, 0x0ae3, - 0x0aeb, 0x0af0, 0x0af3, 0x0af9, 0x0afe, 0x0b10, 0x0b14, 0x0b1a, - 0x0b1e, 0x0b24, 0x0b2c, 0x0b35, 0x0b3c, 0x0b41, 0x0b45, 0x0b4b, - 0x0b52, 0x0b57, 0x0b5b, 0x0b70, 0x0b78, 0x0b86, 0x0b8a, 0x0b91, - 0x0b9c, 0x0ba3, 0x0bab, 0x0bb2, 0x0bb6, 0x0bbe, 0x0bc6, 0x0bd0, - 0x0bd7, 0x0bde, 0x0be5, 0x0bed, 0x0bf2, 0x0bf6, 0x0c02, 0x0c0c, - 0x0c12, 0x0c16, 0x0c1f, 0x0c25, 0x0c2a, 0x0c2e, 0x0c30, 0x0c36, - 0x0c40, 0x0c45, 0x0c51, 0x0c58, 0x0c5c, 0x0c60, 0x0c65, 0x0c6f, + 0x0ab9, 0x0ac0, 0x0ac5, 0x0acb, 0x0ad3, 0x0ad8, 0x0adc, 0x0ae6, + 0x0aed, 0x0af2, 0x0afa, 0x0aff, 0x0b02, 0x0b08, 0x0b0d, 0x0b1f, + 0x0b23, 0x0b29, 0x0b2d, 0x0b33, 0x0b3b, 0x0b44, 0x0b4b, 0x0b50, + 0x0b54, 0x0b5a, 0x0b61, 0x0b66, 0x0b6a, 0x0b7f, 0x0b87, 0x0b95, + 0x0b99, 0x0ba0, 0x0bab, 0x0bb2, 0x0bba, 0x0bc1, 0x0bc5, 0x0bcd, + 0x0bd5, 0x0bdf, 0x0be6, 0x0bed, 0x0bf4, 0x0bfc, 0x0c01, 0x0c05, + 0x0c11, 0x0c1b, 0x0c21, 0x0c25, 0x0c2e, 0x0c34, 0x0c39, 0x0c3d, + 0x0c3f, 0x0c45, 0x0c4f, 0x0c54, 0x0c60, 0x0c67, 0x0c6b, 0x0c76, // Entry 1C0 - 1FF - 0x0c77, 0x0c7c, 0x0c81, 0x0c86, 0x0c8e, 0x0c9a, 0x0ca5, 0x0cac, - 0x0cb4, 0x0cbe, 0x0cc3, 0x0cca, 0x0cdc, 0x0ceb, 0x0cf6, 0x0cfc, - 0x0d05, 0x0d0d, 0x0d14, 0x0d1b, 0x0d21, 0x0d2d, 0x0d33, 0x0d33, - 0x0d3e, 0x0d45, 0x0d4e, 0x0d55, 0x0d5a, 0x0d5f, 0x0d6a, 0x0d70, - 0x0d78, 0x0d7f, 0x0d87, 0x0d8b, 0x0d92, 0x0d99, 0x0da8, 0x0daf, - 0x0db5, 0x0dbc, 0x0dc6, 0x0dcd, 0x0dd2, 0x0ddb, 0x0de0, 0x0de0, - 0x0deb, 0x0df1, 0x0df5, 0x0df9, 0x0e01, 0x0e10, 0x0e18, 0x0e20, - 0x0e26, 0x0e2b, 0x0e3a, 0x0e40, 0x0e4c, 0x0e54, 0x0e5f, 0x0e69, + 0x0c7b, 0x0c85, 0x0c8d, 0x0c92, 0x0c97, 0x0c9c, 0x0ca4, 0x0cb0, + 0x0cbb, 0x0cc2, 0x0cca, 0x0cd4, 0x0cd9, 0x0ce0, 0x0cf4, 0x0d06, + 0x0d15, 0x0d20, 0x0d26, 0x0d2f, 0x0d37, 0x0d3e, 0x0d45, 0x0d4b, + 0x0d57, 0x0d5d, 0x0d5d, 0x0d68, 0x0d6f, 0x0d78, 0x0d7f, 0x0d84, + 0x0d89, 0x0d94, 0x0d9a, 0x0da2, 0x0da9, 0x0db1, 0x0db5, 0x0dbc, + 0x0dc3, 0x0dd2, 0x0dd9, 0x0ddf, 0x0de6, 0x0df0, 0x0df7, 0x0dfc, + 0x0e05, 0x0e0a, 0x0e0a, 0x0e15, 0x0e1b, 0x0e1f, 0x0e23, 0x0e2b, + 0x0e3a, 0x0e42, 0x0e4a, 0x0e50, 0x0e55, 0x0e64, 0x0e6a, 0x0e76, // Entry 200 - 23F - 0x0e74, 0x0e7e, 0x0e85, 0x0e8a, 0x0e91, 0x0e97, 0x0e9b, 0x0ea6, - 0x0eac, 0x0eb0, 0x0eb6, 0x0ebd, 0x0ec9, 0x0ed1, 0x0ed9, 0x0edd, - 0x0ee2, 0x0ee6, 0x0eec, 0x0ef2, 0x0ef8, 0x0efc, 0x0f03, 0x0f09, - 0x0f11, 0x0f19, 0x0f21, 0x0f2a, 0x0f33, 0x0f40, 0x0f46, 0x0f4c, - 0x0f55, 0x0f5d, 0x0f68, 0x0f6f, 0x0f75, 0x0f7c, 0x0f81, 0x0f8a, - 0x0f91, 0x0f98, 0x0f9f, 0x0fa3, 0x0fa6, 0x0fac, 0x0fb1, 0x0fbe, - 0x0fca, 0x0fcf, 0x0fd4, 0x0fdb, 0x0fe2, 0x0fe9, 0x0fee, 0x0ff3, - 0x0ffb, 0x0ffd, 0x1005, 0x100c, 0x1010, 0x1013, 0x1017, 0x101f, + 0x0e7e, 0x0e89, 0x0e93, 0x0e9e, 0x0ea8, 0x0eaf, 0x0eb4, 0x0ebb, + 0x0ec1, 0x0ec5, 0x0ed0, 0x0ed6, 0x0eda, 0x0ee0, 0x0ee7, 0x0ef3, + 0x0efb, 0x0f03, 0x0f07, 0x0f0c, 0x0f10, 0x0f16, 0x0f1c, 0x0f22, + 0x0f26, 0x0f2d, 0x0f33, 0x0f3b, 0x0f43, 0x0f4b, 0x0f54, 0x0f5d, + 0x0f6a, 0x0f70, 0x0f76, 0x0f7f, 0x0f87, 0x0f92, 0x0f99, 0x0f9f, + 0x0fa6, 0x0fab, 0x0fb4, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fcd, 0x0fd0, + 0x0fd6, 0x0fdb, 0x0fe8, 0x0ff4, 0x0ff9, 0x0ffe, 0x1005, 0x100c, + 0x1013, 0x1018, 0x101d, 0x1025, 0x1027, 0x102f, 0x1036, 0x103a, // Entry 240 - 27F - 0x1024, 0x102c, 0x1033, 0x103c, 0x104c, 0x1054, 0x105a, 0x106c, - 0x1071, 0x107f, 0x1083, 0x109a, 0x109a, 0x10a7, 0x10ba, 0x10cc, - 0x10da, 0x10e7, 0x10f7, 0x1110, 0x1121, 0x1132, 0x1132, 0x1142, - 0x1154, 0x1166, 0x116c, 0x117f, 0x1190, 0x1197, 0x11a6, 0x11b4, - 0x11c8, 0x11e0, -} // Size: 1244 bytes - -var faLangStr string = "" + // Size: 7705 bytes + 0x103d, 0x1041, 0x1049, 0x104e, 0x1056, 0x105d, 0x1066, 0x1076, + 0x107e, 0x1084, 0x1096, 0x109b, 0x10a9, 0x10ad, 0x10c4, 0x10c4, + 0x10d1, 0x10e4, 0x10f6, 0x1104, 0x1111, 0x1121, 0x113a, 0x114b, + 0x115c, 0x115c, 0x116c, 0x117e, 0x1190, 0x1196, 0x11a9, 0x11ba, + 0x11c1, 0x11d0, 0x11de, +} // Size: 1246 bytes + +const faLangStr string = "" + // Size: 7988 bytes "آفاریآبخازیاوستاییآفریکانسآکانامهریآراگونیعربیآسامیآواریآیماراییترکی آذر" + "بایجانیباشغیریبلاروسیبلغاریبیسلامابامباراییبنگالیتبتیبرتونبوسنیاییکاتال" + - "انچچنیچاموروییکورسیکریاییچکیاسلاوی کلیساییچوواشیولزیدانمارکیآلمانیمالدی" + - "ویجونخاییاوه\u200cاییونانیانگلیسیاسپرانتواسپانیاییاستونیاییباسکیفارسیفو" + - "لاییفنلاندیفیجیاییفاروییفرانسویفریزی غربیایرلندیگیلی اسکاتلندیگالیسیایی" + - "گوارانیگجراتیمانیهوسیاییعبریهندیموتویی هیریکرواتهائیتیاییمجاریارمنیهریر" + - "وییمیان\u200cزباناندونزیاییاکسیدنتالایگبویییی سیچواناینوپیکایدوایسلندیا" + - "یتالیاییاینوکتیتوتژاپنیجاوه\u200cایگرجیکنگوییکیکویوییکوانیاماقزاقیگرینل" + - "ندیخمریکاناراکره\u200cایکانوریاییکشمیریکردیکومیاییکرنوالیقرقیزیلاتینلوگ" + - "زامبورگیگانداییلیمبورگیلینگالالائوسیلیتوانیاییلوبایی‐کاتانگالتونیاییمال" + - "اگاسیاییمارشالیمائوریاییمقدونیمالایالامیمغولیمراتیمالاییمالتیبرمه\u200c" + - "اینائوروییانده\u200cبله\u200cای شمالینپالیاندونگاییهلندینروژی نی\u200cن" + - "ُشکنروژی بوک\u200cمُلانده\u200cبله\u200cای جنوبیناواهویینیانجاییاوکیتای" + - "یاوجیبواییاوروموییاوریه\u200cایآسیپنجابیپالیلهستانیپشتوپرتغالیکچواییروم" + - "انشروندیاییرومانیاییروسیکینیاروانداییسانسکریتساردینیاییسندیسامی شمالیسا" + - "نگوسینهالیاسلواکیاسلوونیاییساموآییشوناییسومالیاییآلبانیاییصربیسوازیاییس" + - "وتویی جنوبیسونداییسوئدیسواحلیتامیلیتلوگوییتاجیکیتایلندیتیگرینیاییترکمنی" + - "تسواناییتونگاییترکی استانبولیتسونگاییتاتاریتاهیتیاییاویغوریاوکراینیاردو" + - "ازبکیونداییویتنامیولاپوکوالونیولوفیخوسایییدییوروباییچوانگیچینیزولوییآچئ" + - "یآچولیاییآدانگمه\u200cایآدیجیاییعربی تونسیآفریهیلیآگیمآینوییاکدیآلاباما" + - "ییآلئوتیآلتایی جنوبیانگلیسی باستانآنگیکاآرامیماپوچه\u200cایآراپاهوییعرب" + - "ی الجزایریآراواکیعربی مراکشیعربی مصریآسوآستوریبلوچیبالیاییباواریاییباسا" + - "ییبمونیبجاییبمباییبناییبلوچی غربیبوجپوریبیکولیبینیلری بختیاریبراجبراهوی" + - "یبودوییبوریاتیبوگیاییبلینکادوییکاریبیسبوییچیگاچیبچاجغتاییچوکیماریاییچوک" + - "توییچیپه\u200cویه\u200cایچروکیاییشایانیکردی سورانیقبطیترکی کریمهکاشوبید" + - "اکوتاییدارقینیتایتادلاواریدوگریبدینکاییزرمادوگریصُربی سفلیدوآلاییهلندی " + - "میانهدیولا فونیدایولاییامبوافیکیمصری کهناکاجوکعیلامیانگلیسی میانهاواندو" + - "فانکیفیلیپینیفونیفرانسوی کادینفرانسوی میانهفرانسوی باستانفریزی شمالیفری" + - "زی شرقیفریولیاییگاییگاگائوزیاییگایوییگبایاییدری زرتشتیگی\u200cئزیگیلبرت" + - "یگیلکیآلمانی معیار میانهآلمانی علیای باستانگوندیگورونتالوگوتیگریبویییون" + - "انی کهنآلمانی سوئیسیگوسیگویچ اینهایداییهاوائیاییهندی فیجیاییهیلی\u200cگ" + - "اینونیهیتیهمونگصُربی علیاهوپاآیبنایلوکوییاینگوشیلوجباننگومباماچامه" + - "\u200cایفارسی یهودیعربی یهودیقره\u200cقالپاقیقبایلیکاچینیجوکامباییکاویای" + - "یکاباردینیتیاپیماکوندهکابووردیانوکوروخاسیاییختنیکوجراچینیکهوارکرمانجیکا" + - "لنجینکیمبوندوییکومی پرمیاککنکانیکپله\u200cایقره\u200cچایی‐بالکاریکوروخی" + - "شامبالابافیاییکومیکیکوتنیلادینولانگیلاهندالامبالزگیلاکوتامونگوییلوزیایی" + - "لری شمالیلوبایی‐لولوالویسنولونداییلوئوییلوشه\u200cایلویاچینی ادبیمادورا" + - "ییماگاهیاییمایدیلیماکاسارماندینگوییماساییمکشاییماندارمنده\u200cایمروییم" + - "وریسینایرلندی میانهماکوا متومتاییمیکماکیمینانگ\u200cکابوییمانچوییمیته" + - "\u200cایموهاکیماسیاییماندانگیچندین زبانکریکیمارواریارزیاییمازندرانیناپلی" + - "ناماییآلمانی سفلینواریایینیاسینیوییکوازیونغایینرس باستاننکوسوتویی شمالی" + - "نویرنواریایی کلاسیکنیام\u200cوزیایینیانکوله\u200cاینیورویینزیماییاوسیجی" + - "ترکی عثمانیپانگاسینانیپهلویپامپانگاییپاپیامنتوپالائوییآلمانی پنسیلوانیا" + - "ییفارسی باستانفنیقیپانپییپروسیپرووانسی باستانکیچه\u200cراجستانیراپانویی" + - "راروتونگاییرومبوییرومانوییآرومانیرواییسانداوه\u200cاییاقوتیآرامی سامریس" + - "امبوروساساکیسانتالیسانگوییسیسیلیاسکاتلندیکردی جنوبیسناسلکوپیکویرابورا س" + - "نیایرلندی باستانتاچل\u200cهیتشانیعربی چادیسیداموییسیلزیایی سفلیسامی جنو" + - "بیلوله سامیایناری سامیاسکولت سامیسونینکه\u200cایسغدیتاکی\u200cتاکیسریری" + - "سوکوماییسوسوییسومریکوموریسریانی کلاسیکسریانیسیلزیاییتمنه\u200cایتسوییتر" + - "نوتتومیتیگره\u200cایتیویکلینگونتلین\u200cگیتیتاماشقیتونگایی نیاساتوک" + - "\u200cپیسینیتسیم\u200cشیانیتومبوکاییتووالوییتسواکیتوواییآمازیغی اطلس مرک" + - "زیاودمورتیاوگاریتیامبوندوییریشهویاییوتیونجووالاموواراییواشوییوارلپیریقل" + - "موقیسوگایییائویییاپیکانتونیزاپوتکیزناگاآمازیغی معیار مراکشزونیاییبدون م" + - "حتوای زبانیزازاییعربی رسمیترکی آذری جنوبیآلمانی اتریشآلمانی معیار سوئیس" + - "انگلیسی استرالیاانگلیسی کاناداانگلیسی بریتانیاانگلیسی امریکااسپانیایی ا" + - "مریکای لاتیناسپانیایی اروپااسپانیایی مکزیکدریفرانسوی کانادافرانسوی سوئی" + - "سساکسونی سفلیفلمنگیپرتغالی برزیلپرتغالی اروپامولداویاییصرب و کرواتیسواح" + - "لی کنگوییچینی ساده\u200cشدهچینی سنتی" - -var faLangIdx = []uint16{ // 610 elements + "انچچنیچاموروییکورسیکریاییچکیاسلاوی کلیساییچوواشیولزیدانمارکیآلمانیدیوهی" + + "جونخاییاوه\u200cاییونانیانگلیسیاسپرانتواسپانیاییاستونیاییباسکیفارسیفولا" + + "ییفنلاندیفیجیاییفاروییفرانسویفریزی غربیایرلندیگیلی اسکاتلندیگالیسیاییگو" + + "ارانیگجراتیمانیهوسیاییعبریهندیموتویی هیریکرواتهائیتیاییمجاریارمنیهریروی" + + "یمیان\u200cزباناندونزیاییاکسیدنتالایگبویییی سیچواناینوپیکایدوایسلندیایت" + + "الیاییاینوکتیتوتژاپنیجاوه\u200cایگرجیکنگوییکیکویوییکوانیاماقزاقیگرینلند" + + "یخمریکاناراکره\u200cایکانوریاییکشمیریکردیکومیاییکرنوالیقرقیزیلاتینلوگزا" + + "مبورگیگانداییلیمبورگیلینگالالائوسیلیتوانیاییلوبایی‐کاتانگالتونیاییمالاگ" + + "اسیاییمارشالیمائوریاییمقدونیمالایالامیمغولیمراتیمالاییمالتیبرمه\u200cای" + + "نائوروییانده\u200cبله\u200cای شمالینپالیاندونگاییهلندینروژی نی\u200cنُش" + + "کنروژی بوک\u200cمُلانده\u200cبله\u200cای جنوبیناواهویینیانجاییاوکیتاییا" + + "وجیبواییاوروموییاوریه\u200cایآسیپنجابیپالیلهستانیپشتوپرتغالیکچواییرومان" + + "شروندیاییرومانیاییروسیکینیاروانداییسانسکریتساردینیاییسندیسامی شمالیسانگ" + + "وسینهالیاسلواکیاسلوونیاییساموآییشوناییسومالیاییآلبانیاییصربیسوازیاییسوت" + + "ویی جنوبیسونداییسوئدیسواحیلیتامیلیتلوگوییتاجیکیتایلندیتیگرینیاییترکمنیت" + + "سواناییتونگاییترکی استانبولیتسونگاییتاتاریتاهیتیاییاویغوریاوکراینیاردوا" + + "زبکیونداییویتنامیولاپوکوالونیولوفیخوسایییدییوروباییچوانگیچینیزولوییآچئی" + + "آچولیاییآدانگمه\u200cایآدیجیاییعربی تونسیآفریهیلیآگیمآینوییاکدیآلابامای" + + "یآلئوتیآلتایی جنوبیانگلیسی باستانآنگیکاآرامیماپوچه\u200cایآراپاهوییعربی" + + " الجزایریآراواکیعربی مراکشیعربی مصریآسوآستوریاودهیبلوچیبالیاییباواریاییب" + + "اساییبمونیبجاییبمباییبناییبلوچی غربیبوجپوریبیکولیبینیسیکسیکالری بختیاری" + + "براجبراهوییبودوییبوریاتیبوگیاییبلینکادوییکاریبیسبوییچیگاچیبچاجغتاییچوکی" + + "ماریاییچوکتوییچیپه\u200cویه\u200cایچروکیاییشایانیکردی مرکزیقبطیترکی کری" + + "مهسیشل آمیختهٔ فرانسویکاشوبیداکوتاییدارقینیتایتادلاواریدوگریبدینکاییزرم" + + "ادوگریصُربی سفلیدوآلاییهلندی میانهدیولا فونیدایولاییدازاگاییامبوافیکیمص" + + "ری کهناکاجوکعیلامیانگلیسی میانهاواندوفانگیفیلیپینیفونیفرانسوی کادینفران" + + "سوی میانهفرانسوی باستانفریزی شمالیفریزی شرقیفریولیاییگاییگاگائوزیاییگای" + + "وییگبایاییدری زرتشتیگی\u200cئزیگیلبرتیگیلکیآلمانی معیار میانهآلمانی علی" + + "ای باستانگوندیگورونتالوگوتیگریبویییونانی کهنآلمانی سوئیسیگوسیگویچ اینها" + + "یداییهاوائیاییهندی فیجیاییهیلی\u200cگاینونیهیتیهمونگصُربی علیاهوپاایبان" + + "یایبیبوییایلوکوییاینگوشیلوجباننگومباماچامه\u200cایفارسی یهودیعربی یهودی" + + "قره\u200cقالپاقیقبایلیکاچینیجوکامباییکاویاییکاباردینیتیاپیماکوندهکابوور" + + "دیانوکوروخاسیاییختنیکوجراچینیکهوارکرمانجیکاکاییکالنجینکیمبوندوییکومی پر" + + "میاککنکانیکپله\u200cایقره\u200cچایی‐بالکاریکاریلیانیکوروخیشامبالابافیای" + + "یریپواریکومیکیکوتنیلادینولانگیلاهندالامبالزگیلاکوتامونگوییلوزیاییلری شم" + + "الیلوبایی‐لولوالویسنولونداییلوئوییلوشه\u200cایلویاچینی ادبیمادوراییماگا" + + "هیاییمایدیلیماکاسارماندینگوییماساییمکشاییماندارمنده\u200cایمروییموریسین" + + "ایرلندی میانهماکوا متومتاییمیکماکیمینانگ\u200cکابوییمانچوییمیته\u200cای" + + "موهاکیماسیاییماندانگیچندین زبانکریکیمیراندیمارواریارزیاییمازندرانیناپلی" + + "ناماییآلمانی سفلینواریایینیاسینیوییکوازیوانگیمبونینغایینرس باستاننکوسوت" + + "ویی شمالینویرنواریایی کلاسیکنیام\u200cوزیایینیانکوله\u200cاینیورویینزیم" + + "اییاوسیجیترکی عثمانیپانگاسینانیپهلویپامپانگاییپاپیامنتوپالائویینیم" + + "\u200cزبان نیجریه\u200cایآلمانی پنسیلوانیاییفارسی باستانفنیقیپانپییپروسی" + + "پرووانسی باستانکیچه\u200cراجستانیراپانوییراروتونگاییرومبوییرومانوییآروم" + + "انیرواییسانداوه\u200cاییاقوتیآرامی سامریسامبوروساساکیسانتالیانگامباییسا" + + "نگوییسیسیلیاسکاتلندیکردی جنوبیسناسلکوپیکویرابورا سنیایرلندی باستانتاچل" + + "\u200cهیتشانیعربی چادیسیداموییسیلزیایی سفلیسامی جنوبیلوله سامیایناری سام" + + "یاسکولت سامیسونینکه\u200cایسغدیتاکی\u200cتاکیسریریساهوسوکوماییسوسوییسوم" + + "ریکوموریسریانی کلاسیکسریانیسیلزیاییتمنه\u200cایتسوییترنوتتومیتیگره" + + "\u200cایتیویکلینگونتلین\u200cگیتیتاماشقیتونگایی نیاساتوک\u200cپیسینیتارو" + + "کوییتسیم\u200cشیانیتومبوکاییتووالوییتسواکیتوواییآمازیغی اطلس مرکزیاودمو" + + "رتیاوگاریتیامبوندوییریشهویاییوتیونجووالسروالاموواراییواشوییوارلپیریقلمو" + + "قیسوگایییائویییاپییانگبنییمباییکانتونیزاپوتکیزناگاآمازیغی معیار مراکشزو" + + "نیاییبدون محتوای زبانیزازاییعربی رسمیترکی آذری جنوبیآلمانی اتریشآلمانی " + + "معیار سوئیسانگلیسی استرالیاانگلیسی کاناداانگلیسی بریتانیاانگلیسی امریکا" + + "اسپانیایی امریکای لاتیناسپانیایی اروپااسپانیایی مکزیکدریفرانسوی کاناداف" + + "رانسوی سوئیسساکسونی سفلیفلمنگیپرتغالی برزیلپرتغالی اروپامولداویاییصرب و" + + " کرواتیسواحیلی کنگوچینی ساده\u200cشدهچینی سنتی" + +var faLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000a, 0x0016, 0x0024, 0x0034, 0x003c, 0x0046, 0x0054, 0x005c, 0x0066, 0x0070, 0x0080, 0x009d, 0x00ab, 0x00b9, 0x00c5, 0x00d3, 0x00e5, 0x00f1, 0x00f9, 0x0103, 0x0113, 0x0121, 0x0129, 0x0139, 0x0143, 0x014f, 0x0155, 0x0170, 0x017c, 0x0184, 0x0194, - 0x01a0, 0x01ae, 0x01bc, 0x01c9, 0x01d5, 0x01e3, 0x01f3, 0x0205, - 0x0217, 0x0221, 0x022b, 0x0237, 0x0245, 0x0253, 0x025f, 0x026d, - 0x0280, 0x028e, 0x02a9, 0x02bb, 0x02c9, 0x02d5, 0x02dd, 0x02eb, - 0x02f3, 0x02fb, 0x0310, 0x031a, 0x032c, 0x0336, 0x0340, 0x034e, + 0x01a0, 0x01aa, 0x01b8, 0x01c5, 0x01d1, 0x01df, 0x01ef, 0x0201, + 0x0213, 0x021d, 0x0227, 0x0233, 0x0241, 0x024f, 0x025b, 0x0269, + 0x027c, 0x028a, 0x02a5, 0x02b7, 0x02c5, 0x02d1, 0x02d9, 0x02e7, + 0x02ef, 0x02f7, 0x030c, 0x0316, 0x0328, 0x0332, 0x033c, 0x034a, // Entry 40 - 7F - 0x0361, 0x0375, 0x0387, 0x0395, 0x03a6, 0x03b4, 0x03bc, 0x03ca, - 0x03dc, 0x03f0, 0x03fa, 0x0409, 0x0411, 0x041d, 0x042d, 0x043d, - 0x0447, 0x0457, 0x045f, 0x046b, 0x0478, 0x048a, 0x0496, 0x049e, - 0x04ac, 0x04ba, 0x04c6, 0x04d0, 0x04e6, 0x04f4, 0x0504, 0x0512, - 0x051e, 0x0532, 0x054f, 0x055f, 0x0575, 0x0583, 0x0595, 0x05a1, - 0x05b5, 0x05bf, 0x05c9, 0x05d5, 0x05df, 0x05ee, 0x05fe, 0x0621, - 0x062b, 0x063d, 0x0647, 0x0661, 0x067b, 0x069e, 0x06ae, 0x06be, - 0x06ce, 0x06e0, 0x06f0, 0x0701, 0x0707, 0x0713, 0x071b, 0x0729, + 0x035d, 0x0371, 0x0383, 0x0391, 0x03a2, 0x03b0, 0x03b8, 0x03c6, + 0x03d8, 0x03ec, 0x03f6, 0x0405, 0x040d, 0x0419, 0x0429, 0x0439, + 0x0443, 0x0453, 0x045b, 0x0467, 0x0474, 0x0486, 0x0492, 0x049a, + 0x04a8, 0x04b6, 0x04c2, 0x04cc, 0x04e2, 0x04f0, 0x0500, 0x050e, + 0x051a, 0x052e, 0x054b, 0x055b, 0x0571, 0x057f, 0x0591, 0x059d, + 0x05b1, 0x05bb, 0x05c5, 0x05d1, 0x05db, 0x05ea, 0x05fa, 0x061d, + 0x0627, 0x0639, 0x0643, 0x065d, 0x0677, 0x069a, 0x06aa, 0x06ba, + 0x06ca, 0x06dc, 0x06ec, 0x06fd, 0x0703, 0x070f, 0x0717, 0x0725, // Entry 80 - BF - 0x0731, 0x073f, 0x074b, 0x0757, 0x0767, 0x0779, 0x0781, 0x079b, - 0x07ab, 0x07bf, 0x07c7, 0x07da, 0x07e4, 0x07f2, 0x0800, 0x0814, - 0x0822, 0x082e, 0x0840, 0x0852, 0x085a, 0x086a, 0x0881, 0x088f, - 0x0899, 0x08a5, 0x08b1, 0x08bf, 0x08cb, 0x08d9, 0x08ed, 0x08f9, - 0x0909, 0x0917, 0x0932, 0x0942, 0x094e, 0x0960, 0x096e, 0x097e, - 0x0986, 0x0990, 0x099c, 0x09aa, 0x09b6, 0x09c2, 0x09cc, 0x09d8, - 0x09de, 0x09ee, 0x09fa, 0x0a02, 0x0a0e, 0x0a16, 0x0a26, 0x0a3b, - 0x0a4b, 0x0a5e, 0x0a6e, 0x0a76, 0x0a82, 0x0a8a, 0x0a9c, 0x0aa8, + 0x072d, 0x073b, 0x0747, 0x0753, 0x0763, 0x0775, 0x077d, 0x0797, + 0x07a7, 0x07bb, 0x07c3, 0x07d6, 0x07e0, 0x07ee, 0x07fc, 0x0810, + 0x081e, 0x082a, 0x083c, 0x084e, 0x0856, 0x0866, 0x087d, 0x088b, + 0x0895, 0x08a3, 0x08af, 0x08bd, 0x08c9, 0x08d7, 0x08eb, 0x08f7, + 0x0907, 0x0915, 0x0930, 0x0940, 0x094c, 0x095e, 0x096c, 0x097c, + 0x0984, 0x098e, 0x099a, 0x09a8, 0x09b4, 0x09c0, 0x09ca, 0x09d6, + 0x09dc, 0x09ec, 0x09f8, 0x0a00, 0x0a0c, 0x0a14, 0x0a24, 0x0a39, + 0x0a49, 0x0a5c, 0x0a6c, 0x0a74, 0x0a80, 0x0a88, 0x0a9a, 0x0aa6, // Entry C0 - FF - 0x0aa8, 0x0abf, 0x0ada, 0x0ae6, 0x0af0, 0x0b03, 0x0b03, 0x0b15, - 0x0b2e, 0x0b3c, 0x0b51, 0x0b62, 0x0b68, 0x0b68, 0x0b74, 0x0b74, - 0x0b74, 0x0b7e, 0x0b8c, 0x0b9e, 0x0baa, 0x0bb4, 0x0bb4, 0x0bb4, - 0x0bbe, 0x0bca, 0x0bca, 0x0bd4, 0x0bd4, 0x0bd4, 0x0be7, 0x0bf5, - 0x0c01, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c1e, 0x0c26, - 0x0c34, 0x0c40, 0x0c40, 0x0c4e, 0x0c5c, 0x0c5c, 0x0c64, 0x0c64, - 0x0c70, 0x0c7c, 0x0c7c, 0x0c7c, 0x0c86, 0x0c8e, 0x0c98, 0x0ca4, - 0x0cac, 0x0cba, 0x0cba, 0x0cc8, 0x0ce0, 0x0cf0, 0x0cfc, 0x0d11, + 0x0aa6, 0x0abd, 0x0ad8, 0x0ae4, 0x0aee, 0x0b01, 0x0b01, 0x0b13, + 0x0b2c, 0x0b2c, 0x0b3a, 0x0b4f, 0x0b60, 0x0b66, 0x0b66, 0x0b72, + 0x0b72, 0x0b7c, 0x0b86, 0x0b94, 0x0ba6, 0x0bb2, 0x0bbc, 0x0bbc, + 0x0bbc, 0x0bc6, 0x0bd2, 0x0bd2, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bef, + 0x0bfd, 0x0c09, 0x0c11, 0x0c11, 0x0c11, 0x0c1f, 0x0c1f, 0x0c34, + 0x0c3c, 0x0c4a, 0x0c56, 0x0c56, 0x0c64, 0x0c72, 0x0c72, 0x0c7a, + 0x0c7a, 0x0c86, 0x0c92, 0x0c92, 0x0c92, 0x0c9c, 0x0ca4, 0x0cae, + 0x0cba, 0x0cc2, 0x0cd0, 0x0cd0, 0x0cde, 0x0cf6, 0x0d06, 0x0d12, // Entry 100 - 13F - 0x0d19, 0x0d19, 0x0d2c, 0x0d38, 0x0d48, 0x0d56, 0x0d60, 0x0d6e, - 0x0d6e, 0x0d7a, 0x0d88, 0x0d90, 0x0d9a, 0x0dad, 0x0dad, 0x0dbb, - 0x0dd0, 0x0de3, 0x0df3, 0x0df3, 0x0dfb, 0x0e05, 0x0e05, 0x0e14, - 0x0e20, 0x0e2c, 0x0e45, 0x0e45, 0x0e51, 0x0e51, 0x0e5b, 0x0e6b, - 0x0e6b, 0x0e73, 0x0e8c, 0x0ea5, 0x0ec0, 0x0ec0, 0x0ed5, 0x0ee8, - 0x0efa, 0x0f02, 0x0f18, 0x0f18, 0x0f24, 0x0f32, 0x0f45, 0x0f52, - 0x0f60, 0x0f6a, 0x0f8c, 0x0fb0, 0x0fb0, 0x0fba, 0x0fcc, 0x0fd4, - 0x0fe2, 0x0ff5, 0x100e, 0x100e, 0x100e, 0x1016, 0x1025, 0x1033, + 0x0d25, 0x0d2d, 0x0d2d, 0x0d40, 0x0d66, 0x0d72, 0x0d82, 0x0d90, + 0x0d9a, 0x0da8, 0x0da8, 0x0db4, 0x0dc2, 0x0dca, 0x0dd4, 0x0de7, + 0x0de7, 0x0df5, 0x0e0a, 0x0e1d, 0x0e2d, 0x0e3d, 0x0e45, 0x0e4f, + 0x0e4f, 0x0e5e, 0x0e6a, 0x0e76, 0x0e8f, 0x0e8f, 0x0e9b, 0x0e9b, + 0x0ea5, 0x0eb5, 0x0eb5, 0x0ebd, 0x0ed6, 0x0eef, 0x0f0a, 0x0f0a, + 0x0f1f, 0x0f32, 0x0f44, 0x0f4c, 0x0f62, 0x0f62, 0x0f6e, 0x0f7c, + 0x0f8f, 0x0f9c, 0x0faa, 0x0fb4, 0x0fd6, 0x0ffa, 0x0ffa, 0x1004, + 0x1016, 0x101e, 0x102c, 0x103f, 0x1058, 0x1058, 0x1058, 0x1060, // Entry 140 - 17F - 0x1033, 0x1045, 0x105c, 0x1075, 0x107d, 0x1087, 0x109a, 0x109a, - 0x10a2, 0x10aa, 0x10aa, 0x10ba, 0x10c8, 0x10c8, 0x10c8, 0x10d4, - 0x10e0, 0x10f3, 0x1108, 0x111b, 0x111b, 0x1132, 0x113e, 0x114a, - 0x114e, 0x115c, 0x116a, 0x117c, 0x117c, 0x1186, 0x1194, 0x11aa, - 0x11aa, 0x11b2, 0x11b2, 0x11c0, 0x11c8, 0x11da, 0x11e4, 0x11f2, - 0x11f2, 0x1200, 0x1214, 0x1229, 0x1235, 0x1235, 0x1244, 0x1266, - 0x1266, 0x1266, 0x1266, 0x1272, 0x1280, 0x128e, 0x128e, 0x129a, - 0x12a4, 0x12b0, 0x12ba, 0x12c6, 0x12d0, 0x12d8, 0x12d8, 0x12d8, + 0x106f, 0x107d, 0x107d, 0x108f, 0x10a6, 0x10bf, 0x10c7, 0x10d1, + 0x10e4, 0x10e4, 0x10ec, 0x10f8, 0x1108, 0x1118, 0x1126, 0x1126, + 0x1126, 0x1132, 0x113e, 0x1151, 0x1166, 0x1179, 0x1179, 0x1190, + 0x119c, 0x11a8, 0x11ac, 0x11ba, 0x11c8, 0x11da, 0x11da, 0x11e4, + 0x11f2, 0x1208, 0x1208, 0x1210, 0x1210, 0x121e, 0x1226, 0x1238, + 0x1242, 0x1250, 0x125c, 0x126a, 0x127e, 0x1293, 0x129f, 0x129f, + 0x12ae, 0x12d0, 0x12d0, 0x12d0, 0x12e2, 0x12ee, 0x12fc, 0x130a, + 0x1318, 0x1324, 0x132e, 0x133a, 0x1344, 0x1350, 0x135a, 0x1362, // Entry 180 - 1BF - 0x12d8, 0x12e4, 0x12e4, 0x12f2, 0x1300, 0x1311, 0x1311, 0x132a, - 0x1336, 0x1344, 0x1350, 0x135f, 0x1367, 0x1378, 0x1378, 0x1388, - 0x1388, 0x139a, 0x13a8, 0x13b6, 0x13ca, 0x13d6, 0x13d6, 0x13e2, - 0x13ee, 0x13fd, 0x1407, 0x1415, 0x142e, 0x143f, 0x1449, 0x1457, - 0x1472, 0x1480, 0x148f, 0x149b, 0x14a9, 0x14a9, 0x14b9, 0x14cc, - 0x14d6, 0x14d6, 0x14e4, 0x14e4, 0x14e4, 0x14f2, 0x1504, 0x1504, - 0x150e, 0x151a, 0x152f, 0x153f, 0x1549, 0x1553, 0x1553, 0x155f, - 0x155f, 0x1569, 0x157c, 0x157c, 0x1582, 0x1599, 0x15a1, 0x15be, + 0x1362, 0x1362, 0x1362, 0x136e, 0x136e, 0x137c, 0x138a, 0x139b, + 0x139b, 0x13b4, 0x13c0, 0x13ce, 0x13da, 0x13e9, 0x13f1, 0x1402, + 0x1402, 0x1412, 0x1412, 0x1424, 0x1432, 0x1440, 0x1454, 0x1460, + 0x1460, 0x146c, 0x1478, 0x1487, 0x1491, 0x149f, 0x14b8, 0x14c9, + 0x14d3, 0x14e1, 0x14fc, 0x150a, 0x1519, 0x1525, 0x1533, 0x1533, + 0x1543, 0x1556, 0x1560, 0x156e, 0x157c, 0x157c, 0x157c, 0x158a, + 0x159c, 0x159c, 0x15a6, 0x15b2, 0x15c7, 0x15d7, 0x15e1, 0x15eb, + 0x15eb, 0x15f7, 0x1609, 0x1613, 0x1626, 0x1626, 0x162c, 0x1643, // Entry 1C0 - 1FF - 0x15d5, 0x15ec, 0x15fa, 0x1608, 0x1614, 0x1629, 0x163f, 0x1649, - 0x165d, 0x166f, 0x167f, 0x167f, 0x16a4, 0x16a4, 0x16bb, 0x16bb, - 0x16c5, 0x16c5, 0x16c5, 0x16d1, 0x16db, 0x16f8, 0x1703, 0x1703, - 0x1713, 0x1723, 0x1739, 0x1739, 0x1739, 0x1747, 0x1757, 0x1757, - 0x1757, 0x1757, 0x1765, 0x176f, 0x1784, 0x1790, 0x17a5, 0x17b3, - 0x17bf, 0x17cd, 0x17cd, 0x17cd, 0x17db, 0x17e7, 0x17f9, 0x17f9, - 0x180c, 0x180c, 0x1812, 0x1812, 0x181e, 0x1837, 0x1852, 0x1852, - 0x1863, 0x186b, 0x187c, 0x188c, 0x18a5, 0x18a5, 0x18b8, 0x18c9, + 0x164b, 0x1668, 0x167f, 0x1696, 0x16a4, 0x16b2, 0x16be, 0x16d3, + 0x16e9, 0x16f3, 0x1707, 0x1719, 0x1729, 0x1729, 0x174e, 0x1773, + 0x1773, 0x178a, 0x178a, 0x1794, 0x1794, 0x1794, 0x17a0, 0x17aa, + 0x17c7, 0x17d2, 0x17d2, 0x17e2, 0x17f2, 0x1808, 0x1808, 0x1808, + 0x1816, 0x1826, 0x1826, 0x1826, 0x1826, 0x1834, 0x183e, 0x1853, + 0x185f, 0x1874, 0x1882, 0x188e, 0x189c, 0x189c, 0x18ae, 0x18bc, + 0x18c8, 0x18da, 0x18da, 0x18ed, 0x18ed, 0x18f3, 0x18f3, 0x18ff, + 0x1918, 0x1933, 0x1933, 0x1944, 0x194c, 0x195d, 0x196d, 0x1986, // Entry 200 - 23F - 0x18de, 0x18f3, 0x1908, 0x1910, 0x1923, 0x192d, 0x192d, 0x192d, - 0x193d, 0x1949, 0x1953, 0x195f, 0x1978, 0x1984, 0x1994, 0x1994, - 0x19a3, 0x19ad, 0x19b5, 0x19bf, 0x19d0, 0x19d8, 0x19d8, 0x19d8, - 0x19e6, 0x19f9, 0x19f9, 0x1a07, 0x1a20, 0x1a35, 0x1a35, 0x1a35, - 0x1a35, 0x1a4a, 0x1a4a, 0x1a5c, 0x1a6c, 0x1a78, 0x1a84, 0x1aa6, - 0x1ab6, 0x1ac6, 0x1ad8, 0x1ae0, 0x1aea, 0x1aea, 0x1aea, 0x1aea, - 0x1aea, 0x1af0, 0x1af0, 0x1af8, 0x1af8, 0x1b04, 0x1b10, 0x1b1c, - 0x1b2c, 0x1b2c, 0x1b38, 0x1b38, 0x1b44, 0x1b50, 0x1b58, 0x1b58, + 0x1986, 0x1999, 0x19aa, 0x19bf, 0x19d4, 0x19e9, 0x19f1, 0x1a04, + 0x1a0e, 0x1a16, 0x1a16, 0x1a26, 0x1a32, 0x1a3c, 0x1a48, 0x1a61, + 0x1a6d, 0x1a7d, 0x1a7d, 0x1a8c, 0x1a96, 0x1a9e, 0x1aa8, 0x1ab9, + 0x1ac1, 0x1ac1, 0x1ac1, 0x1acf, 0x1ae2, 0x1ae2, 0x1af0, 0x1b09, + 0x1b1e, 0x1b1e, 0x1b2e, 0x1b2e, 0x1b43, 0x1b43, 0x1b55, 0x1b65, + 0x1b71, 0x1b7d, 0x1b9f, 0x1baf, 0x1bbf, 0x1bd1, 0x1bd9, 0x1be3, + 0x1be3, 0x1be3, 0x1be3, 0x1be3, 0x1be9, 0x1be9, 0x1bf1, 0x1bfb, + 0x1c07, 0x1c13, 0x1c1f, 0x1c2f, 0x1c2f, 0x1c3b, 0x1c3b, 0x1c47, // Entry 240 - 27F - 0x1b58, 0x1b58, 0x1b66, 0x1b74, 0x1b74, 0x1b74, 0x1b7e, 0x1ba2, - 0x1bb0, 0x1bd0, 0x1bdc, 0x1bed, 0x1c09, 0x1c20, 0x1c42, 0x1c61, - 0x1c7c, 0x1c9b, 0x1cb6, 0x1ce2, 0x1cff, 0x1d1c, 0x1d22, 0x1d3d, - 0x1d56, 0x1d6d, 0x1d79, 0x1d92, 0x1dab, 0x1dbf, 0x1dd5, 0x1dee, - 0x1e08, 0x1e19, -} // Size: 1244 bytes - -var fiLangStr string = "" + // Size: 4703 bytes + 0x1c53, 0x1c5b, 0x1c69, 0x1c75, 0x1c75, 0x1c83, 0x1c91, 0x1c91, + 0x1c91, 0x1c9b, 0x1cbf, 0x1ccd, 0x1ced, 0x1cf9, 0x1d0a, 0x1d26, + 0x1d3d, 0x1d5f, 0x1d7e, 0x1d99, 0x1db8, 0x1dd3, 0x1dff, 0x1e1c, + 0x1e39, 0x1e3f, 0x1e5a, 0x1e73, 0x1e8a, 0x1e96, 0x1eaf, 0x1ec8, + 0x1edc, 0x1ef2, 0x1f09, 0x1f23, 0x1f34, +} // Size: 1250 bytes + +const fiLangStr string = "" + // Size: 4736 bytes "afarabhaasiavestaafrikaansakanamharaaragoniaarabiaassamiavaariaimaraazer" + "ibaškiirivalkovenäjäbulgariabislamabambarabengalitiibetbretonibosniakata" + "laanitšetšeenitšamorrokorsikacreetšekkikirkkoslaavitšuvassikymritanskasa" + @@ -14767,56 +17898,56 @@ var fiLangStr string = "" + // Size: 4703 bytes "baniaserbiaswazieteläsothosundaruotsiswahilitamilitelugutadžikkithaitigr" + "injaturkmeenitswanatongaturkkitsongatataaritahitiuiguuriukrainaurduuzbek" + "kivendavietnamvolapükvalloniwolofxhosajiddišjorubazhuangkiinazuluatšehat" + - "šoliadangmeadygetunisianarabiaafrihiliaghemainuakkadialabamaaleuttigega" + - "ltaimuinaisenglantiangikavaltakunnanarameamapudungunaraonaarapahoalgeria" + - "narabiaarawakmarokonarabiaegyptinarabiaasuamerikkalainen viittomakielias" + - "turiakotavaawadhibelutšibalibaijeribasaabamumbatak-tobaghomalabedžabemba" + - "betawibenafutbadagalänsibelutšibhodžpuribikolbinibanjarkomsiksikabišnupr" + - "iabahtiaribradžbrahuibodokooseburjaattibugibulubilinmedumbacaddokaribica" + - "yugaatsamcebuanokigatšibtšatšagataichuukmarichinook-jargonchoctawchipewy" + - "ancherokeecheyennesoranikopticapiznonkrimintataarikašubidakotadargitaita" + - "delawareslevidogribdinkadjermadogrialasorbidusundualakeskihollantijola-f" + - "onyidjuladazagaembuefikemiliamuinaisegyptiekajukelamikeskienglantialaska" + - "njupikewondoextremadurafangfilipinomeänkielifoncajunkeskiranskamuinaisra" + - "nskaarpitaanipohjoisfriisiitäfriisifriuligagagauzigan-kiinagajogbajazoro" + - "astrialaisdarige’ezkiribatigilakikeskiyläsaksamuinaisyläsaksagoankonkani" + - "gondigorontalogoottigrebomuinaiskreikkasveitsinsaksawayuufrafragusiigwit" + - "šinhaidahakka-kiinahavaijifidžinhindihiligainoheettihmongyläsorbixiang-" + - "kiinahupaibanibibioilokoinguušiinkeroinenjamaikankreolienglantilojbanngo" + - "mbamachamejuutalaispersiajuutalaisarabiajuuttikarakalpakkikabyylikatšinj" + - "jukambakavikabardikanembutyapmakondekapverdenkreolikenyangnorsunluuranni" + - "konkorokaingangkhasikhotanikoyra chiinikhowarkirmanjkikakokalenjinkimbun" + - "dukomipermjakkikonkanikosraekpellekaratšai-balkaarikriokinaray-akarjalak" + - "urukhshambalabafiakölschkumykkikutenailadinolangolahndalambalezgilingua " + - "franca novaliguuriliivilakotalombardimongolozipohjoislurilatgalliluluanl" + - "ubaluiseñolundaluolusailuhyaklassinen kiinalazimaduramafamagahimaithilim" + - "akassarmandingomaasaimabamokšamandarmendemerumorisyenkeski-iirimakua-mee" + - "ttometa’micmacminangkabaumantšumanipurimohawkmossivuorimarimundangmonia " + - "kieliäcreekmirandeesimarwarimentawaimyeneersämazandaranimin nan -kiinana" + - "polinamaalasaksanewariniasniueao nagakwasiongiemboonnogaimuinaisnorjanov" + - "ialn’kopohjoissothonuerklassinen newarinyamwezinyankolenyoronzimaosageos" + - "manipangasinanpahlavipampangapapiamentupalaupicardipennsylvaniansaksapla" + - "utdietschmuinaispersiapfaltsifoinikiapiemontepontoksenkreikkapohnpeimuin" + - "aispreussimuinaisprovensaalikʼicheʼchimborazonylänköketšuaradžastanirapa" + - "nuirarotongaromagnolitarifitromboromanirotumaruteenirovianaaromaniarwasa" + - "ndawejakuuttisamarianarameasamburusasaksantalisauraštringambaysangusisil" + - "iaskottisassarinsardieteläkurdisenecasenaseriselkuppikoyraboro sennimuin" + - "aisiirisamogiittitašelhitshantšadinarabiasidamosleesiansaksaselayaretelä" + - "saameluulajansaameinarinsaamekoltansaamesoninkesogdisrananserersahosater" + - "landinfriisisukumasususumerikomorimuinaissyyriasyyriasleesiatulutemnetes" + - "oterenotetumtigretivtokelautsahuriklingontlingittališitamašekmalawintong" + - "atok-pisinturojotarokotsakoniatsimšitatitumbukatuvalutasawaqtuvakeskiatl" + - "aksentamazightudmurttiugaritmbundujuurivaivenetsiavepsälänsiflaamimainin" + - "frankkivatjavõrovunjowalserwolaittawaraywashowarlpiriwu-kiinakalmukkimin" + - "grelisogajaojapiyangbenyembañeengatúkantoninkiinazapoteekkiblisskielisee" + - "lantizenagavakioitu tamazightzuniei kielellistä sisältöäzazayleisarabiai" + - "tävallansaksasveitsinyläsaksaaustralianenglantikanadanenglantibritannian" + - "englantiamerikanenglantiamerikanespanjaeuroopanespanjameksikonespanjakan" + - "adanranskasveitsinranskaalankomaidenalasaksaflaamibrasilianportugalieuro" + - "opanportugalimoldovaserbokroaattikingwanayksinkertaistettu kiinaperintei" + - "nen kiina" - -var fiLangIdx = []uint16{ // 610 elements + "šoliadangmeadygetunisianarabiaafrihiliaghemainuakkadialabamaaleuttigegi" + + "altaimuinaisenglantiangikavaltakunnanarameamapudungunaraonaarapahoalgeri" + + "anarabiaarawakmarokonarabiaegyptinarabiaasuamerikkalainen viittomakielia" + + "sturiakotavaawadhibelutšibalibaijeribasaabamumbatak-tobaghomalabedžabemb" + + "abetawibenafutbadagalänsibelutšibhodžpuribikolbinibanjarkomsiksikabišnup" + + "riabahtiaribradžbrahuibodokooseburjaattibugibulubilinmedumbacaddokaribic" + + "ayugaatsamcebuanokigatšibtšatšagataichuukmarichinook-jargonchoctawchipew" + + "yancherokeecheyennesoranikopticapiznonkrimintataariseychellienkreolikašu" + + "bidakotadargitaitadelawareslevidogribdinkadjermadogrialasorbidusundualak" + + "eskihollantijola-fonyidjuladazagaembuefikemiliamuinaisegyptiekajukelamik" + + "eskienglantialaskanjupikewondoextremadurafangfilipinomeänkielifoncajunke" + + "skiranskamuinaisranskaarpitaanipohjoisfriisiitäfriisifriuligagagauzigan-" + + "kiinagajogbajazoroastrialaisdarige’ezkiribatigilakikeskiyläsaksamuinaisy" + + "läsaksagoankonkanigondigorontalogoottigrebomuinaiskreikkasveitsinsaksawa" + + "yuufrafragusiigwitšinhaidahakka-kiinahavaijifidžinhindihiligainoheettihm" + + "ongyläsorbixiang-kiinahupaibanibibioilokoinguušiinkeroinenjamaikankreoli" + + "englantilojbanngombamachamejuutalaispersiajuutalaisarabiajuuttikarakalpa" + + "kkikabyylikatšinjjukambakavikabardikanembutyapmakondekapverdenkreolikeny" + + "angnorsunluurannikonkorokaingangkhasikhotanikoyra chiinikhowarkirmanjkik" + + "akokalenjinkimbundukomipermjakkikonkanikosraekpellekaratšai-balkaarikrio" + + "kinaray-akarjalakurukhshambalabafiakölschkumykkikutenailadinolangolahnda" + + "lambalezgilingua franca novaliguuriliivilakotalombardimongolozipohjoislu" + + "rilatgalliluluanlubaluiseñolundaluolusailuhyaklassinen kiinalazimadurama" + + "famagahimaithilimakassarmandingomaasaimabamokšamandarmendemerumorisyenke" + + "ski-iirimakua-meettometa’micmacminangkabaumantšumanipurimohawkmossivuori" + + "marimundanguseita kieliäcreekmirandeesimarwarimentawaimyeneersämazandara" + + "nimin nan -kiinanapolinamaalasaksanewariniasniueao nagakwasiongiemboonno" + + "gaimuinaisnorjanovialn’kopohjoissothonuerklassinen newarinyamwezinyankol" + + "enyoronzimaosageosmanipangasinanpahlavipampangapapiamentupalaupicardinig" + + "erianpidginpennsylvaniansaksaplautdietschmuinaispersiapfaltsifoinikiapie" + + "montepontoksenkreikkapohnpeimuinaispreussimuinaisprovensaalikʼicheʼchimb" + + "orazonylänköketšuaradžastanirapanuirarotongaromagnolitarifitromboromanir" + + "otumaruteenirovianaaromaniarwasandawejakuuttisamarianarameasamburusasaks" + + "antalisauraštringambaysangusisiliaskottisassarinsardieteläkurdisenecasen" + + "aseriselkuppikoyraboro sennimuinaisiirisamogiittitašelhitshantšadinarabi" + + "asidamosleesiansaksaselayareteläsaameluulajansaameinarinsaamekoltansaame" + + "soninkesogdisrananserersahosaterlandinfriisisukumasususumerikomorimuinai" + + "ssyyriasyyriasleesiatulutemnetesoterenotetumtigretivtokelautsahuriklingo" + + "ntlingittališitamašekmalawintongatok-pisinturojotarokotsakoniatsimšitati" + + "tumbukatuvalutasawaqtuvakeskiatlaksentamazightudmurttiugaritmbundujuuriv" + + "aivenetsiavepsälänsiflaamimaininfrankkivatjavõrovunjowalserwolaittawaray" + + "washowarlpiriwu-kiinakalmukkimingrelisogajaojapiyangbenyembañeengatúkant" + + "oninkiinazapoteekkiblisskieliseelantizenagavakioitu tamazightzuniei kiel" + + "ellistä sisältöäzazayleisarabiaitävallansaksasveitsinyläsaksaaustraliane" + + "nglantikanadanenglantibritannianenglantiamerikanenglantiamerikanespanjae" + + "uroopanespanjameksikonespanjakanadanranskasveitsinranskaalankomaidenalas" + + "aksaflaamibrasilianportugalieuroopanportugalimoldovaserbokroaattikingwan" + + "ayksinkertaistettu kiinaperinteinen kiina" + +var fiLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000b, 0x0011, 0x001a, 0x001e, 0x0024, 0x002c, 0x0032, 0x0038, 0x003e, 0x0044, 0x0049, 0x0052, 0x005f, 0x0067, @@ -14845,250 +17976,276 @@ var fiLangIdx = []uint16{ // 610 elements 0x04c8, 0x04ce, 0x04d4, 0x04d9, 0x04dd, 0x04e3, 0x04ea, 0x04f1, 0x04f6, 0x0504, 0x050c, 0x0511, 0x0515, 0x051b, 0x0522, 0x0529, // Entry C0 - FF - 0x052c, 0x0531, 0x0540, 0x0546, 0x0557, 0x0561, 0x0567, 0x056e, - 0x057c, 0x0582, 0x058f, 0x059c, 0x059f, 0x05bb, 0x05c2, 0x05c8, - 0x05ce, 0x05d6, 0x05da, 0x05e1, 0x05e6, 0x05eb, 0x05f5, 0x05fc, - 0x0602, 0x0607, 0x060d, 0x0611, 0x0614, 0x061a, 0x0628, 0x0632, - 0x0637, 0x063b, 0x0641, 0x0644, 0x064b, 0x0655, 0x065d, 0x0663, - 0x0669, 0x066d, 0x0672, 0x067b, 0x067f, 0x0683, 0x0688, 0x068f, - 0x0694, 0x069a, 0x06a0, 0x06a5, 0x06ac, 0x06b0, 0x06b9, 0x06c2, - 0x06c7, 0x06cb, 0x06d9, 0x06e0, 0x06e9, 0x06f1, 0x06f9, 0x06ff, + 0x052d, 0x0532, 0x0541, 0x0547, 0x0558, 0x0562, 0x0568, 0x056f, + 0x057d, 0x057d, 0x0583, 0x0590, 0x059d, 0x05a0, 0x05bc, 0x05c3, + 0x05c9, 0x05cf, 0x05d7, 0x05db, 0x05e2, 0x05e7, 0x05ec, 0x05f6, + 0x05fd, 0x0603, 0x0608, 0x060e, 0x0612, 0x0615, 0x061b, 0x0629, + 0x0633, 0x0638, 0x063c, 0x0642, 0x0645, 0x064c, 0x0656, 0x065e, + 0x0664, 0x066a, 0x066e, 0x0673, 0x067c, 0x0680, 0x0684, 0x0689, + 0x0690, 0x0695, 0x069b, 0x06a1, 0x06a6, 0x06ad, 0x06b1, 0x06ba, + 0x06c3, 0x06c8, 0x06cc, 0x06da, 0x06e1, 0x06ea, 0x06f2, 0x06fa, // Entry 100 - 13F - 0x0704, 0x070c, 0x0719, 0x0720, 0x0726, 0x072b, 0x0730, 0x0738, - 0x073d, 0x0743, 0x0748, 0x074e, 0x0753, 0x075b, 0x0760, 0x0765, - 0x0772, 0x077c, 0x0781, 0x0787, 0x078b, 0x078f, 0x0795, 0x07a2, - 0x07a8, 0x07ad, 0x07ba, 0x07c6, 0x07cc, 0x07d7, 0x07db, 0x07e3, - 0x07ed, 0x07f0, 0x07f5, 0x0800, 0x080d, 0x0816, 0x0823, 0x082d, - 0x0833, 0x0835, 0x083c, 0x0845, 0x0849, 0x084e, 0x0860, 0x0867, - 0x086f, 0x0875, 0x0883, 0x0893, 0x089e, 0x08a3, 0x08ac, 0x08b2, - 0x08b7, 0x08c5, 0x08d2, 0x08d7, 0x08dd, 0x08e2, 0x08ea, 0x08ef, + 0x0700, 0x0705, 0x070d, 0x071a, 0x072b, 0x0732, 0x0738, 0x073d, + 0x0742, 0x074a, 0x074f, 0x0755, 0x075a, 0x0760, 0x0765, 0x076d, + 0x0772, 0x0777, 0x0784, 0x078e, 0x0793, 0x0799, 0x079d, 0x07a1, + 0x07a7, 0x07b4, 0x07ba, 0x07bf, 0x07cc, 0x07d8, 0x07de, 0x07e9, + 0x07ed, 0x07f5, 0x07ff, 0x0802, 0x0807, 0x0812, 0x081f, 0x0828, + 0x0835, 0x083f, 0x0845, 0x0847, 0x084e, 0x0857, 0x085b, 0x0860, + 0x0872, 0x0879, 0x0881, 0x0887, 0x0895, 0x08a5, 0x08b0, 0x08b5, + 0x08be, 0x08c4, 0x08c9, 0x08d7, 0x08e4, 0x08e9, 0x08ef, 0x08f4, // Entry 140 - 17F - 0x08fa, 0x0901, 0x090d, 0x0916, 0x091c, 0x0921, 0x092a, 0x0935, - 0x0939, 0x093d, 0x0943, 0x0948, 0x0950, 0x095a, 0x0970, 0x0976, - 0x097c, 0x0983, 0x0992, 0x09a1, 0x09a7, 0x09b3, 0x09ba, 0x09c1, - 0x09c4, 0x09c9, 0x09cd, 0x09d4, 0x09db, 0x09df, 0x09e6, 0x09f5, - 0x09fc, 0x0a11, 0x0a19, 0x0a1e, 0x0a25, 0x0a31, 0x0a37, 0x0a40, - 0x0a44, 0x0a4c, 0x0a54, 0x0a61, 0x0a68, 0x0a6e, 0x0a74, 0x0a86, - 0x0a8a, 0x0a93, 0x0a9a, 0x0aa0, 0x0aa8, 0x0aad, 0x0ab4, 0x0abb, - 0x0ac2, 0x0ac8, 0x0acd, 0x0ad3, 0x0ad8, 0x0add, 0x0aef, 0x0af6, + 0x08fc, 0x0901, 0x090c, 0x0913, 0x091f, 0x0928, 0x092e, 0x0933, + 0x093c, 0x0947, 0x094b, 0x094f, 0x0955, 0x095a, 0x0962, 0x096c, + 0x0982, 0x0988, 0x098e, 0x0995, 0x09a4, 0x09b3, 0x09b9, 0x09c5, + 0x09cc, 0x09d3, 0x09d6, 0x09db, 0x09df, 0x09e6, 0x09ed, 0x09f1, + 0x09f8, 0x0a07, 0x0a0e, 0x0a23, 0x0a2b, 0x0a30, 0x0a37, 0x0a43, + 0x0a49, 0x0a52, 0x0a56, 0x0a5e, 0x0a66, 0x0a73, 0x0a7a, 0x0a80, + 0x0a86, 0x0a98, 0x0a9c, 0x0aa5, 0x0aac, 0x0ab2, 0x0aba, 0x0abf, + 0x0ac6, 0x0acd, 0x0ad4, 0x0ada, 0x0adf, 0x0ae5, 0x0aea, 0x0aef, // Entry 180 - 1BF - 0x0afb, 0x0b01, 0x0b09, 0x0b0e, 0x0b12, 0x0b1d, 0x0b25, 0x0b2f, - 0x0b37, 0x0b3c, 0x0b3f, 0x0b44, 0x0b49, 0x0b58, 0x0b5c, 0x0b62, - 0x0b66, 0x0b6c, 0x0b74, 0x0b7c, 0x0b84, 0x0b8a, 0x0b8e, 0x0b94, - 0x0b9a, 0x0b9f, 0x0ba3, 0x0bab, 0x0bb5, 0x0bc1, 0x0bc8, 0x0bce, - 0x0bd9, 0x0be0, 0x0be8, 0x0bee, 0x0bf3, 0x0bfc, 0x0c03, 0x0c10, - 0x0c15, 0x0c1f, 0x0c26, 0x0c2e, 0x0c33, 0x0c38, 0x0c43, 0x0c51, - 0x0c57, 0x0c5b, 0x0c63, 0x0c69, 0x0c6d, 0x0c71, 0x0c78, 0x0c7e, - 0x0c87, 0x0c8c, 0x0c98, 0x0c9e, 0x0ca4, 0x0cb0, 0x0cb4, 0x0cc4, + 0x0b01, 0x0b08, 0x0b0d, 0x0b13, 0x0b1b, 0x0b20, 0x0b24, 0x0b2f, + 0x0b37, 0x0b41, 0x0b49, 0x0b4e, 0x0b51, 0x0b56, 0x0b5b, 0x0b6a, + 0x0b6e, 0x0b74, 0x0b78, 0x0b7e, 0x0b86, 0x0b8e, 0x0b96, 0x0b9c, + 0x0ba0, 0x0ba6, 0x0bac, 0x0bb1, 0x0bb5, 0x0bbd, 0x0bc7, 0x0bd3, + 0x0bda, 0x0be0, 0x0beb, 0x0bf2, 0x0bfa, 0x0c00, 0x0c05, 0x0c0e, + 0x0c15, 0x0c23, 0x0c28, 0x0c32, 0x0c39, 0x0c41, 0x0c46, 0x0c4b, + 0x0c56, 0x0c64, 0x0c6a, 0x0c6e, 0x0c76, 0x0c7c, 0x0c80, 0x0c84, + 0x0c8b, 0x0c91, 0x0c9a, 0x0c9f, 0x0cab, 0x0cb1, 0x0cb7, 0x0cc3, // Entry 1C0 - 1FF - 0x0ccc, 0x0cd4, 0x0cd9, 0x0cde, 0x0ce3, 0x0ce9, 0x0cf3, 0x0cfa, - 0x0d02, 0x0d0c, 0x0d11, 0x0d18, 0x0d2a, 0x0d36, 0x0d43, 0x0d4a, - 0x0d52, 0x0d5a, 0x0d6a, 0x0d71, 0x0d7f, 0x0d91, 0x0d9a, 0x0db4, - 0x0dbf, 0x0dc6, 0x0dcf, 0x0dd8, 0x0ddf, 0x0de4, 0x0dea, 0x0df0, - 0x0df7, 0x0dfe, 0x0e06, 0x0e09, 0x0e10, 0x0e18, 0x0e26, 0x0e2d, - 0x0e32, 0x0e39, 0x0e43, 0x0e4a, 0x0e4f, 0x0e56, 0x0e5c, 0x0e69, - 0x0e74, 0x0e7a, 0x0e7e, 0x0e82, 0x0e8a, 0x0e99, 0x0ea4, 0x0eae, - 0x0eb7, 0x0ebb, 0x0ec8, 0x0ece, 0x0edb, 0x0ee2, 0x0eed, 0x0efa, + 0x0cc7, 0x0cd7, 0x0cdf, 0x0ce7, 0x0cec, 0x0cf1, 0x0cf6, 0x0cfc, + 0x0d06, 0x0d0d, 0x0d15, 0x0d1f, 0x0d24, 0x0d2b, 0x0d39, 0x0d4b, + 0x0d57, 0x0d64, 0x0d6b, 0x0d73, 0x0d7b, 0x0d8b, 0x0d92, 0x0da0, + 0x0db2, 0x0dbb, 0x0dd5, 0x0de0, 0x0de7, 0x0df0, 0x0df9, 0x0e00, + 0x0e05, 0x0e0b, 0x0e11, 0x0e18, 0x0e1f, 0x0e27, 0x0e2a, 0x0e31, + 0x0e39, 0x0e47, 0x0e4e, 0x0e53, 0x0e5a, 0x0e64, 0x0e6b, 0x0e70, + 0x0e77, 0x0e7d, 0x0e8a, 0x0e95, 0x0e9b, 0x0e9f, 0x0ea3, 0x0eab, + 0x0eba, 0x0ec5, 0x0ecf, 0x0ed8, 0x0edc, 0x0ee9, 0x0eef, 0x0efc, // Entry 200 - 23F - 0x0f05, 0x0f10, 0x0f17, 0x0f1c, 0x0f22, 0x0f27, 0x0f2b, 0x0f3c, - 0x0f42, 0x0f46, 0x0f4c, 0x0f52, 0x0f5f, 0x0f65, 0x0f6c, 0x0f70, - 0x0f75, 0x0f79, 0x0f7f, 0x0f84, 0x0f89, 0x0f8c, 0x0f93, 0x0f9a, - 0x0fa1, 0x0fa8, 0x0faf, 0x0fb7, 0x0fc3, 0x0fcc, 0x0fd2, 0x0fd8, - 0x0fe0, 0x0fe7, 0x0feb, 0x0ff2, 0x0ff8, 0x0fff, 0x1003, 0x1019, - 0x1021, 0x1027, 0x102d, 0x1032, 0x1035, 0x103d, 0x1043, 0x104f, - 0x105c, 0x1061, 0x1066, 0x106b, 0x1071, 0x1079, 0x107e, 0x1083, - 0x108b, 0x1093, 0x109b, 0x10a3, 0x10a7, 0x10aa, 0x10ae, 0x10b5, + 0x0f03, 0x0f0e, 0x0f1b, 0x0f26, 0x0f31, 0x0f38, 0x0f3d, 0x0f43, + 0x0f48, 0x0f4c, 0x0f5d, 0x0f63, 0x0f67, 0x0f6d, 0x0f73, 0x0f80, + 0x0f86, 0x0f8d, 0x0f91, 0x0f96, 0x0f9a, 0x0fa0, 0x0fa5, 0x0faa, + 0x0fad, 0x0fb4, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fd0, 0x0fd8, 0x0fe4, + 0x0fed, 0x0ff3, 0x0ff9, 0x1001, 0x1008, 0x100c, 0x1013, 0x1019, + 0x1020, 0x1024, 0x103a, 0x1042, 0x1048, 0x104e, 0x1053, 0x1056, + 0x105e, 0x1064, 0x1070, 0x107d, 0x1082, 0x1087, 0x108c, 0x1092, + 0x109a, 0x109f, 0x10a4, 0x10ac, 0x10b4, 0x10bc, 0x10c4, 0x10c8, // Entry 240 - 27F - 0x10ba, 0x10c4, 0x10d1, 0x10db, 0x10e5, 0x10ed, 0x10f3, 0x1105, - 0x1109, 0x1124, 0x1128, 0x1133, 0x1133, 0x1142, 0x1153, 0x1165, - 0x1174, 0x1186, 0x1196, 0x11a5, 0x11b4, 0x11c3, 0x11c3, 0x11d0, - 0x11de, 0x11f2, 0x11f8, 0x120a, 0x121b, 0x1222, 0x122f, 0x1237, - 0x124e, 0x125f, -} // Size: 1244 bytes - -var filLangStr string = "" + // Size: 2154 bytes - "AbkhazianAfrikaansAkanAmharicArabeAssameseAymaraAzerbaijaniBashkirBelaru" + - "sianBulgarianBambaraBengaliTibetanBretonBosnianCatalanChechenCorsicanCze" + - "chChuvashWelshDanishGermanDivehiDzongkhaEweGreekInglesEsperantoEspanyolE" + - "stonianBasquePersianFinnishFijianFaroeseFrenchKanlurang FrisianIrishScot" + - "s GaelicGalicianGuaraniGujaratiManxHausaHebrewHindiCroatianHaitianHungar" + - "ianArmenianInterlinguaIndonesianInterlingueIgboSichuan YiIcelandicItalia" + - "nInuktitutJapaneseJavaneseGeorgianKongoKikuyuKazakhKalaallisutKhmerKanna" + - "daKoreanKashmiriKurdishCornishKirghizLatinLuxembourgishGandaLingalaLaoLi" + - "thuanianLuba-KatangaLatvianMalagasyMaoriMacedonianMalayalamMongolianMara" + - "thiMalayMalteseBurmeseHilagang NdebeleNepaliDutchNorwegian NynorskNorweg" + - "ian BokmalNyanjaOccitanOromoOriyaOsseticPunjabiPolishPashtoPortugesQuech" + - "uaRomanshRundiRomanianRussianKinyarwandaSanskritSindhiHilagang SamiSango" + - "SinhalaSlovakSlovenianSamoanShonaSomaliAlbanianSerbianSwatiSouthern Soth" + - "oSundaneseSwedishSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswanaTonganT" + - "urkishTsongaTatarTahitianUyghurUkranianUrduUzbekVendaVietnameseWolofXhos" + - "aYiddishYorubaChineseZuluAcoliAghemMapucheAsuBembaBenaKanlurang BalochiB" + - "odoChigaCherokeeCentral KurdishTaitaZarmaLower SorbianDualaJola-FonyiEmb" + - "uEfikFilipinoGaGagauzSwiss GermanGusiiHawaiianUpper SorbianNgombaMachame" + - "KabyleKambaMakondeKabuverdianuKoyra ChiiniKalenjinKomi-PermyakKonkaniSha" + - "mbalaBafiaLangiLakotaLoziHilagang LuriLuba-LuluaLuoLuyiaMasaiMeruMorisye" + - "nMakhuwa-MeettoMeta’MohawkMundangMazanderaniNamaLow GermanKwasioN’KoNort" + - "hern SothoNuerNyankoleKʼicheʼRomboRwaSamburuSanguKatimugang KurdishSenaK" + - "oyraboro SenniTachelhitKatimugang SamiLule SamiInari SamiSkolt SamiComor" + - "ianTesoTetumKlingonTok PisinTumbukaTasawaqTamazight ng Gitnang AtlasHind" + - "i Kilalang WikaVaiVunjoWarlpiriSogaCantoneseStandard Moroccan TamazightW" + - "alang nilalaman na ukol sa wikaModernong Karaniwang ArabeAustrian German" + - "Swiss High GermanIngles ng AustralyaIngles sa CanadaIngles ng BritishIng" + - "les (US)Latin American na EspanyolEuropean SpanishEspanyol ng MehikoCana" + - "dian FrenchSwiss FrenchLow SaxonFlemishPortuges ng BrasilEuropean Portug" + - "ueseMoldavianSerbo-CroatianSwahili (Congo)Simplified Chinese" - -var filLangIdx = []uint16{ // 609 elements + 0x10cb, 0x10cf, 0x10d6, 0x10db, 0x10e5, 0x10f2, 0x10fc, 0x1106, + 0x110e, 0x1114, 0x1126, 0x112a, 0x1145, 0x1149, 0x1154, 0x1154, + 0x1163, 0x1174, 0x1186, 0x1195, 0x11a7, 0x11b7, 0x11c6, 0x11d5, + 0x11e4, 0x11e4, 0x11f1, 0x11ff, 0x1213, 0x1219, 0x122b, 0x123c, + 0x1243, 0x1250, 0x1258, 0x126f, 0x1280, +} // Size: 1250 bytes + +const filLangStr string = "" + // Size: 3132 bytes + "AfarAbkhazianAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAymaraAzer" + + "baijaniBashkirBelarusianBulgarianBislamaBambaraBanglaTibetanBretonBosnia" + + "nCatalanChechenChamorroCorsicanCzechChurch SlavicChuvashWelshDanishGerma" + + "nDivehiDzongkhaEweGreekInglesEsperantoSpanishEstonianBasquePersianFulahF" + + "innishFijianFaroeseFrenchKanlurang FrisianIrishScots GaelicGalicianGuara" + + "niGujaratiManxHausaHebrewHindiCroatianHaitianHungarianArmenianHereroInte" + + "rlinguaIndonesianInterlingueIgboSichuan YiIdoIcelandicItalianInuktitutJa" + + "paneseJavaneseGeorgianKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannadaKo" + + "reanKanuriKashmiriKurdishKomiCornishKirghizLatinLuxembourgishGandaLimbur" + + "gishLingalaLaoLithuanianLuba-KatangaLatvianMalagasyMarshalleseMaoriMaced" + + "onianMalayalamMongolianMarathiMalayMalteseBurmeseNauruHilagang NdebeleNe" + + "paliNdongaDutchNorwegian NynorskNorwegian BokmålSouth NdebeleNavajoNyanj" + + "aOccitanOromoOdiaOsseticPunjabiPolishPashtoPortugueseQuechuaRomanshRundi" + + "RomanianRussianKinyarwandaSanskritSardinianSindhiHilagang SamiSangoSinha" + + "laSlovakSlovenianSamoanShonaSomaliAlbanianSerbianSwatiKatimugang SothoSu" + + "ndaneseSwedishSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswanaTonganTurk" + + "ishTsongaTatarTahitianUyghurUkranianUrduUzbekVendaVietnameseVolapükWallo" + + "onWolofXhosaYiddishYorubaChineseZuluAchineseAcoliAdangmeAdygheAghemAinuA" + + "leutSouthern AltaiAngikaMapucheArapahoAsuAsturianAwadhiBalineseBasaaBemb" + + "aBenaKanlurang BalochiBhojpuriBiniSiksikaBodoBugineseBlinCebuanoChigaChu" + + "ukeseMariChoctawCherokeeCheyenneCentral KurdishSeselwa Creole FrenchDako" + + "taDargwaTaitaDogribZarmaLower SorbianDualaJola-FonyiDazagaEmbuEfikEkajuk" + + "EwondoFilipinoFonFriulianGaGagauzGeezGilberteseGorontaloSwiss GermanGusi" + + "iGwichʼinHawaiianHiligaynonHmongUpper SorbianHupaIbanIbibioIlokoIngushLo" + + "jbanNgombaMachameKabyleKachinJjuKambaKabardianTyapMakondeKabuverdianuKor" + + "oKhasiKoyra ChiiniKakoKalenjinKimbunduKomi-PermyakKonkaniKpelleKarachay-" + + "BalkarKarelianKurukhShambalaBafiaColognianKumykLadinoLangiLezghianLakota" + + "LoziHilagang LuriLuba-LuluaLundaLuoMizoLuyiaMadureseMagahiMaithiliMakasa" + + "rMasaiMokshaMendeMeruMorisyenMakhuwa-MeettoMeta’MicmacMinangkabauManipur" + + "iMohawkMossiMundangMaramihang WikaCreekMirandeseErzyaMazanderaniNeapolit" + + "anNamaLow GermanNewariNiasNiueanKwasioNgiemboonNogaiN’KoHilagang SothoNu" + + "erNyankolePangasinanPampangaPapiamentoPalauanNigerian PidginPrussianKʼic" + + "heʼRapanuiRarotonganRomboAromanianRwaSandaweSakhaSamburuSantaliNgambaySa" + + "nguSicilianScotsKatimugang KurdishSenaKoyraboro SenniTachelhitShanKatimu" + + "gang SamiLule SamiInari SamiSkolt SamiSoninkeSranan TongoSahoSukumaComor" + + "ianSyriacTimneTesoTetumTigreKlingonTok PisinTarokoTumbukaTuvaluTasawaqTu" + + "vinianCentral Atlas TamazightUdmurtUmbunduRootVaiVunjoWalserWolayttaWara" + + "yWarlpiriKalmykSogaYangbenYembaCantoneseStandard Moroccan TamazightZuniW" + + "alang nilalaman na ukol sa wikaZazaModernong Karaniwang ArabicAustrian G" + + "ermanSwiss High GermanIngles ng AustralyaIngles sa CanadaIngles na Briti" + + "shIngles na AmericanLatin American na EspanyolEuropean SpanishMexican na" + + " EspanyolFrench sa CanadaSwiss na FrenchLow SaxonFlemishPortuges ng Bras" + + "ilEuropean PortugueseMoldavianSerbo-CroatianCongo SwahiliPinasimpleng Ch" + + "ineseTradisyonal na Chinese" + +var filLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0016, 0x001d, 0x001d, - 0x0022, 0x002a, 0x002a, 0x0030, 0x003b, 0x0042, 0x004c, 0x0055, - 0x0055, 0x005c, 0x0063, 0x006a, 0x0070, 0x0077, 0x007e, 0x0085, - 0x0085, 0x008d, 0x008d, 0x0092, 0x0092, 0x0099, 0x009e, 0x00a4, - 0x00aa, 0x00b0, 0x00b8, 0x00bb, 0x00c0, 0x00c6, 0x00cf, 0x00d7, - 0x00df, 0x00e5, 0x00ec, 0x00ec, 0x00f3, 0x00f9, 0x0100, 0x0106, - 0x0117, 0x011c, 0x0128, 0x0130, 0x0137, 0x013f, 0x0143, 0x0148, - 0x014e, 0x0153, 0x0153, 0x015b, 0x0162, 0x016b, 0x0173, 0x0173, + 0x0000, 0x0004, 0x000d, 0x000d, 0x0016, 0x001a, 0x0021, 0x002a, + 0x0030, 0x0038, 0x003e, 0x0044, 0x004f, 0x0056, 0x0060, 0x0069, + 0x0070, 0x0077, 0x007d, 0x0084, 0x008a, 0x0091, 0x0098, 0x009f, + 0x00a7, 0x00af, 0x00af, 0x00b4, 0x00c1, 0x00c8, 0x00cd, 0x00d3, + 0x00d9, 0x00df, 0x00e7, 0x00ea, 0x00ef, 0x00f5, 0x00fe, 0x0105, + 0x010d, 0x0113, 0x011a, 0x011f, 0x0126, 0x012c, 0x0133, 0x0139, + 0x014a, 0x014f, 0x015b, 0x0163, 0x016a, 0x0172, 0x0176, 0x017b, + 0x0181, 0x0186, 0x0186, 0x018e, 0x0195, 0x019e, 0x01a6, 0x01ac, // Entry 40 - 7F - 0x017e, 0x0188, 0x0193, 0x0197, 0x01a1, 0x01a1, 0x01a1, 0x01aa, - 0x01b1, 0x01ba, 0x01c2, 0x01ca, 0x01d2, 0x01d7, 0x01dd, 0x01dd, - 0x01e3, 0x01ee, 0x01f3, 0x01fa, 0x0200, 0x0200, 0x0208, 0x020f, - 0x020f, 0x0216, 0x021d, 0x0222, 0x022f, 0x0234, 0x0234, 0x023b, - 0x023e, 0x0248, 0x0254, 0x025b, 0x0263, 0x0263, 0x0268, 0x0272, - 0x027b, 0x0284, 0x028b, 0x0290, 0x0297, 0x029e, 0x029e, 0x02ae, - 0x02b4, 0x02b4, 0x02b9, 0x02ca, 0x02da, 0x02da, 0x02da, 0x02e0, - 0x02e7, 0x02e7, 0x02ec, 0x02f1, 0x02f8, 0x02ff, 0x02ff, 0x0305, + 0x01b7, 0x01c1, 0x01cc, 0x01d0, 0x01da, 0x01da, 0x01dd, 0x01e6, + 0x01ed, 0x01f6, 0x01fe, 0x0206, 0x020e, 0x0213, 0x0219, 0x0221, + 0x0227, 0x0232, 0x0237, 0x023e, 0x0244, 0x024a, 0x0252, 0x0259, + 0x025d, 0x0264, 0x026b, 0x0270, 0x027d, 0x0282, 0x028c, 0x0293, + 0x0296, 0x02a0, 0x02ac, 0x02b3, 0x02bb, 0x02c6, 0x02cb, 0x02d5, + 0x02de, 0x02e7, 0x02ee, 0x02f3, 0x02fa, 0x0301, 0x0306, 0x0316, + 0x031c, 0x0322, 0x0327, 0x0338, 0x0349, 0x0356, 0x035c, 0x0362, + 0x0369, 0x0369, 0x036e, 0x0372, 0x0379, 0x0380, 0x0380, 0x0386, // Entry 80 - BF - 0x030b, 0x0313, 0x031a, 0x0321, 0x0326, 0x032e, 0x0335, 0x0340, - 0x0348, 0x0348, 0x034e, 0x035b, 0x0360, 0x0367, 0x036d, 0x0376, - 0x037c, 0x0381, 0x0387, 0x038f, 0x0396, 0x039b, 0x03a9, 0x03b2, - 0x03b9, 0x03c0, 0x03c5, 0x03cb, 0x03d0, 0x03d4, 0x03dc, 0x03e3, - 0x03e9, 0x03ef, 0x03f6, 0x03fc, 0x0401, 0x0409, 0x040f, 0x0417, - 0x041b, 0x0420, 0x0425, 0x042f, 0x042f, 0x042f, 0x0434, 0x0439, - 0x0440, 0x0446, 0x0446, 0x044d, 0x0451, 0x0451, 0x0456, 0x0456, - 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, + 0x038c, 0x0396, 0x039d, 0x03a4, 0x03a9, 0x03b1, 0x03b8, 0x03c3, + 0x03cb, 0x03d4, 0x03da, 0x03e7, 0x03ec, 0x03f3, 0x03f9, 0x0402, + 0x0408, 0x040d, 0x0413, 0x041b, 0x0422, 0x0427, 0x0437, 0x0440, + 0x0447, 0x044e, 0x0453, 0x0459, 0x045e, 0x0462, 0x046a, 0x0471, + 0x0477, 0x047d, 0x0484, 0x048a, 0x048f, 0x0497, 0x049d, 0x04a5, + 0x04a9, 0x04ae, 0x04b3, 0x04bd, 0x04c5, 0x04cc, 0x04d1, 0x04d6, + 0x04dd, 0x04e3, 0x04e3, 0x04ea, 0x04ee, 0x04f6, 0x04fb, 0x0502, + 0x0508, 0x0508, 0x0508, 0x050d, 0x0511, 0x0511, 0x0511, 0x0516, // Entry C0 - FF - 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0465, 0x0465, 0x0465, 0x0465, - 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, - 0x0465, 0x046a, 0x046a, 0x046e, 0x046e, 0x046e, 0x047f, 0x047f, - 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, - 0x047f, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, - 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0488, 0x0488, 0x0488, - 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0490, 0x0490, 0x049f, + 0x0516, 0x0524, 0x0524, 0x052a, 0x052a, 0x0531, 0x0531, 0x0538, + 0x0538, 0x0538, 0x0538, 0x0538, 0x0538, 0x053b, 0x053b, 0x0543, + 0x0543, 0x0549, 0x0549, 0x0551, 0x0551, 0x0556, 0x0556, 0x0556, + 0x0556, 0x0556, 0x055b, 0x055b, 0x055f, 0x055f, 0x055f, 0x0570, + 0x0578, 0x0578, 0x057c, 0x057c, 0x057c, 0x0583, 0x0583, 0x0583, + 0x0583, 0x0583, 0x0587, 0x0587, 0x0587, 0x058f, 0x058f, 0x0593, + 0x0593, 0x0593, 0x0593, 0x0593, 0x0593, 0x059a, 0x059f, 0x059f, + 0x059f, 0x05a7, 0x05ab, 0x05ab, 0x05b2, 0x05b2, 0x05ba, 0x05c2, // Entry 100 - 13F - 0x049f, 0x049f, 0x049f, 0x049f, 0x049f, 0x049f, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a9, 0x04a9, 0x04b6, 0x04b6, 0x04bb, - 0x04bb, 0x04c5, 0x04c5, 0x04c5, 0x04c9, 0x04cd, 0x04cd, 0x04cd, - 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04d5, - 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, - 0x04d5, 0x04d7, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, - 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, - 0x04dd, 0x04dd, 0x04e9, 0x04e9, 0x04e9, 0x04ee, 0x04ee, 0x04ee, + 0x05d1, 0x05d1, 0x05d1, 0x05d1, 0x05e6, 0x05e6, 0x05ec, 0x05f2, + 0x05f7, 0x05f7, 0x05f7, 0x05fd, 0x05fd, 0x0602, 0x0602, 0x060f, + 0x060f, 0x0614, 0x0614, 0x061e, 0x061e, 0x0624, 0x0628, 0x062c, + 0x062c, 0x062c, 0x0632, 0x0632, 0x0632, 0x0632, 0x0638, 0x0638, + 0x0638, 0x0640, 0x0640, 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, + 0x0643, 0x0643, 0x064b, 0x064d, 0x0653, 0x0653, 0x0653, 0x0653, + 0x0653, 0x0657, 0x0661, 0x0661, 0x0661, 0x0661, 0x0661, 0x0661, + 0x066a, 0x066a, 0x066a, 0x066a, 0x0676, 0x0676, 0x0676, 0x067b, // Entry 140 - 17F - 0x04ee, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x0503, 0x0503, - 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, - 0x0509, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0516, 0x0516, - 0x0516, 0x051b, 0x051b, 0x051b, 0x051b, 0x051b, 0x0522, 0x052e, - 0x052e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053a, 0x053a, 0x053a, - 0x053a, 0x0542, 0x0542, 0x054e, 0x0555, 0x0555, 0x0555, 0x0555, - 0x0555, 0x0555, 0x0555, 0x0555, 0x055d, 0x0562, 0x0562, 0x0562, - 0x0562, 0x0562, 0x0567, 0x0567, 0x0567, 0x0567, 0x0567, 0x0567, + 0x0684, 0x0684, 0x0684, 0x068c, 0x068c, 0x0696, 0x0696, 0x069b, + 0x06a8, 0x06a8, 0x06ac, 0x06b0, 0x06b6, 0x06bb, 0x06c1, 0x06c1, + 0x06c1, 0x06c7, 0x06cd, 0x06d4, 0x06d4, 0x06d4, 0x06d4, 0x06d4, + 0x06da, 0x06e0, 0x06e3, 0x06e8, 0x06e8, 0x06f1, 0x06f1, 0x06f5, + 0x06fc, 0x0708, 0x0708, 0x070c, 0x070c, 0x0711, 0x0711, 0x071d, + 0x071d, 0x071d, 0x0721, 0x0729, 0x0731, 0x073d, 0x0744, 0x0744, + 0x074a, 0x0759, 0x0759, 0x0759, 0x0761, 0x0767, 0x076f, 0x0774, + 0x077d, 0x0782, 0x0782, 0x0788, 0x078d, 0x078d, 0x078d, 0x0795, // Entry 180 - 1BF - 0x0567, 0x056d, 0x056d, 0x056d, 0x0571, 0x057e, 0x057e, 0x0588, - 0x0588, 0x0588, 0x058b, 0x058b, 0x0590, 0x0590, 0x0590, 0x0590, - 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0599, 0x05a1, 0x05a1, 0x05af, 0x05b6, 0x05b6, - 0x05b6, 0x05b6, 0x05b6, 0x05bc, 0x05bc, 0x05bc, 0x05c3, 0x05c3, - 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05ce, 0x05ce, - 0x05ce, 0x05d2, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05e2, - 0x05e2, 0x05e2, 0x05e2, 0x05e2, 0x05e8, 0x05f6, 0x05fa, 0x05fa, + 0x0795, 0x0795, 0x0795, 0x079b, 0x079b, 0x079b, 0x079f, 0x07ac, + 0x07ac, 0x07b6, 0x07b6, 0x07bb, 0x07be, 0x07c2, 0x07c7, 0x07c7, + 0x07c7, 0x07cf, 0x07cf, 0x07d5, 0x07dd, 0x07e4, 0x07e4, 0x07e9, + 0x07e9, 0x07ef, 0x07ef, 0x07f4, 0x07f8, 0x0800, 0x0800, 0x080e, + 0x0815, 0x081b, 0x0826, 0x0826, 0x082e, 0x0834, 0x0839, 0x0839, + 0x0840, 0x084f, 0x0854, 0x085d, 0x085d, 0x085d, 0x085d, 0x0862, + 0x086d, 0x086d, 0x0877, 0x087b, 0x0885, 0x088b, 0x088f, 0x0895, + 0x0895, 0x089b, 0x08a4, 0x08a9, 0x08a9, 0x08a9, 0x08af, 0x08bd, // Entry 1C0 - 1FF - 0x05fa, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, - 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, - 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x060b, 0x060b, - 0x060b, 0x060b, 0x060b, 0x060b, 0x060b, 0x0610, 0x0610, 0x0610, - 0x0610, 0x0610, 0x0610, 0x0613, 0x0613, 0x0613, 0x0613, 0x061a, - 0x061a, 0x061a, 0x061a, 0x061a, 0x061f, 0x061f, 0x061f, 0x061f, - 0x0631, 0x0631, 0x0635, 0x0635, 0x0635, 0x0644, 0x0644, 0x0644, - 0x064d, 0x064d, 0x064d, 0x064d, 0x064d, 0x064d, 0x065c, 0x0665, + 0x08c1, 0x08c1, 0x08c1, 0x08c9, 0x08c9, 0x08c9, 0x08c9, 0x08c9, + 0x08d3, 0x08d3, 0x08db, 0x08e5, 0x08ec, 0x08ec, 0x08fb, 0x08fb, + 0x08fb, 0x08fb, 0x08fb, 0x08fb, 0x08fb, 0x08fb, 0x08fb, 0x0903, + 0x0903, 0x090c, 0x090c, 0x090c, 0x0913, 0x091d, 0x091d, 0x091d, + 0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x092b, 0x092e, 0x0935, + 0x093a, 0x093a, 0x0941, 0x0941, 0x0948, 0x0948, 0x094f, 0x0954, + 0x095c, 0x0961, 0x0961, 0x0973, 0x0973, 0x0977, 0x0977, 0x0977, + 0x0986, 0x0986, 0x0986, 0x098f, 0x0993, 0x0993, 0x0993, 0x0993, // Entry 200 - 23F - 0x066f, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, - 0x0679, 0x0679, 0x0679, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, - 0x0681, 0x0685, 0x0685, 0x068a, 0x068a, 0x068a, 0x068a, 0x068a, - 0x0691, 0x0691, 0x0691, 0x0691, 0x0691, 0x069a, 0x069a, 0x069a, - 0x069a, 0x069a, 0x069a, 0x06a1, 0x06a1, 0x06a8, 0x06a8, 0x06c2, - 0x06c2, 0x06c2, 0x06c2, 0x06d5, 0x06d8, 0x06d8, 0x06d8, 0x06d8, - 0x06d8, 0x06d8, 0x06d8, 0x06dd, 0x06dd, 0x06dd, 0x06dd, 0x06dd, - 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e9, 0x06e9, 0x06e9, 0x06e9, + 0x0993, 0x09a2, 0x09ab, 0x09b5, 0x09bf, 0x09c6, 0x09c6, 0x09d2, + 0x09d2, 0x09d6, 0x09d6, 0x09dc, 0x09dc, 0x09dc, 0x09e4, 0x09e4, + 0x09ea, 0x09ea, 0x09ea, 0x09ef, 0x09f3, 0x09f3, 0x09f8, 0x09fd, + 0x09fd, 0x09fd, 0x09fd, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, + 0x0a0d, 0x0a0d, 0x0a13, 0x0a13, 0x0a13, 0x0a13, 0x0a1a, 0x0a20, + 0x0a27, 0x0a2f, 0x0a46, 0x0a4c, 0x0a4c, 0x0a53, 0x0a57, 0x0a5a, + 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5f, 0x0a65, + 0x0a6d, 0x0a72, 0x0a72, 0x0a7a, 0x0a7a, 0x0a80, 0x0a80, 0x0a84, // Entry 240 - 27F - 0x06e9, 0x06e9, 0x06f2, 0x06f2, 0x06f2, 0x06f2, 0x06f2, 0x070d, - 0x070d, 0x072d, 0x072d, 0x0747, 0x0747, 0x0756, 0x0767, 0x077a, - 0x078a, 0x079b, 0x07a6, 0x07c0, 0x07d0, 0x07e2, 0x07e2, 0x07f1, - 0x07fd, 0x0806, 0x080d, 0x081f, 0x0832, 0x083b, 0x0849, 0x0858, - 0x086a, -} // Size: 1242 bytes - -var frLangStr string = "" + // Size: 4218 bytes + 0x0a84, 0x0a84, 0x0a8b, 0x0a90, 0x0a90, 0x0a99, 0x0a99, 0x0a99, + 0x0a99, 0x0a99, 0x0ab4, 0x0ab8, 0x0ad8, 0x0adc, 0x0af7, 0x0af7, + 0x0b06, 0x0b17, 0x0b2a, 0x0b3a, 0x0b4b, 0x0b5d, 0x0b77, 0x0b87, + 0x0b9a, 0x0b9a, 0x0baa, 0x0bb9, 0x0bc2, 0x0bc9, 0x0bdb, 0x0bee, + 0x0bf7, 0x0c05, 0x0c12, 0x0c26, 0x0c3c, +} // Size: 1250 bytes + +const frLangStr string = "" + // Size: 5136 bytes "afarabkhazeavestiqueafrikaansakanamhariquearagonaisarabeassamaisavarayma" + "raazéribachkirbiélorussebulgarebichelamarbambarabengalitibétainbretonbos" + "niaquecatalantchétchènechamorrocorsecreetchèqueslavon d’églisetchouvache" + "galloisdanoisallemandmaldiviendzongkhaéwégrecanglaisespérantoespagnolest" + "onienbasquepersanpeulfinnoisfidjienféroïenfrançaisfrison occidentalirlan" + - "daisgaélique écossaisgalicienguaranigujaratimanxhaoussahébreuhindihiri m" + - "otucroatecréole haïtienhongroisarménienhérérointerlinguaindonésieninterl" + - "ingueigboyi du Sichuaninupiaqidoislandaisitalieninuktitutjaponaisjavanai" + - "sgéorgienkongokikuyukuanyamakazakhgroenlandaiskhmerkannadacoréenkanourik" + - "ashmirikurdekomicorniquekirghizelatinluxembourgeoisgandalimbourgeoisling" + - "alalaolituanienluba-katangalettonmalgachemarshallmaorimacédonienmalayala" + - "mmongolmarathemalaismaltaisbirmannauruanndébélé du Nordnépalaisndonganée" + - "rlandaisnorvégien nynorsknorvégien bokmålndébélé du Sudnavahonyanjaoccit" + - "anojibwaoromooriyaossètependjabipalipolonaispachtoportugaisquechuaromanc" + - "heroundiroumainrusserwandasanskritsardesindhisami du Nordsanghocinghalai" + - "sslovaqueslovènesamoanshonasomalialbanaisserbeswatisesothosoundanaissuéd" + - "oisswahilitamoultélougoutadjikthaïtigrignaturkmènetswanatonguienturctson" + - "gatatartahitienouïghourukrainienourdououzbekvendavietnamienvolapukwallon" + - "wolofxhosayiddishyorubazhuangchinoiszoulouacehacoliadangmeadyghéenafrihi" + - "liaghemaïnouakkadienaléoutealtaï du Sudancien anglaisangikaaraméenmapuch" + - "earapahoarawakassouasturienawadhibaloutchibalinaisbassabamounghomalabedj" + - "abembabénabafutbaloutchi occidentalbhojpuribikolbinikomsiksikabrajbodoak" + - "oosebouriatebugibouloublinmedumbacaddocaribecayugaatsamcebuanokigachibch" + - "atchaghataïchuukmarijargon chinookchoctawchipewyancherokeecheyennesorani" + - "copteturc de Criméekachoubedakotadargwataitadelawareslaveydogribdinkazar" + - "madogribas-sorabedoualamoyen néerlandaisdiola-fognydiouladazagaembouefik" + - "égyptien ancienekajukélamitemoyen anglaiséwondofangfilipinofonmoyen fra" + - "nçaisancien françaisfranco-provençalfrison du Nordfrison orientalfrioula" + - "ngagagaouzegayogbayaguèzegilbertaismoyen haut-allemandancien haut allema" + - "ndgondigorontalogotiquegrebogrec anciensuisse allemandgusiigwichʼinhaida" + - "hawaïenhiligaynonhittitehmonghaut-sorabehupaibanibibioilokanoingoucheloj" + - "banngombamachamejudéo-persanjudéo-arabekarakalpakkabylekachinjjukambakaw" + - "ikabardinkanemboutyapmakondecapverdienkorokhasikhotanaiskoyra chiinikako" + - "kalenjinkiMboundoukomi-permiakkonkanikusaienkpellékaratchaï balkarcaréli" + - "enkurukhchambalabafiafrancique ripuairekoumykkutenailadinolangilahndalam" + - "balezghienlakotamongolozilori du Nordluba-lulualuisenolundaluolushaiolul" + - "uyiamaduraismafamagahimaithilimakassarmandinguemasaimabamoksamandarmendé" + - "meroucréole mauricienmoyen irlandaismakhuwa-meettométa’micmacminangkabau" + - "mandchoumanipurimohawkmorémundangmultilinguecreekmirandaismarwarîmyènèer" + - "zyamazandéraninapolitainnamabas-allemandnewariniasniuékwasiongiemboonnog" + - "aïvieux norroisn’kosotho du Nordnuernewarî classiquenyamwezinyankolényor" + - "onzemaosageturc ottomanpangasinanpahlavipampanganpapiamentopalaupersan a" + - "ncienphénicienpohnpeiprovençal ancienk’iche’rajasthanirapanuirarotongien" + - "rombotziganevalaquerwasandaweiakoutearaméen samaritainsamburusasaksantal" + - "ngambaysangusicilienécossaiskurde du Sudsenecasenaselkoupekoyraboro senn" + - "iancien irlandaischleuhshanarabe tchadiensidamosami du Sudsami de Lulesa" + - "mi d’Inarisami skoltsoninkésogdiensranan tongosérèresahosukumasoussousum" + - "ériencomoriensyriaque classiquesyriaquetemnetesoterenotetumtigrétivtoke" + - "lauklingontlingittamacheqtonga nyasatok pisintarokotsimshiantumbukatuval" + - "utasawaqtouvatamazightoudmourteougaritiqueumbunduracinevaïvotevunjowalse" + - "rwalamowaraywashowarlpirikalmouksogayaoyapoisyangbenyembacantonaiszapotè" + - "quesymboles Blisszenagaamazighe standard marocainzunisans contenu lingui" + - "stiquezazakiarabe standard moderneallemand autrichienallemand suisseangl" + - "ais australienanglais canadienanglais britanniqueanglais américainespagn" + - "ol latino-américainespagnol européenespagnol mexicainfrançais canadienfr" + - "ançais suissebas-saxon néerlandaisflamandportugais brésilienportugais eu" + - "ropéenmoldaveserbo-croateswahili du Congochinois simplifiéchinois tradit" + - "ionnel" - -var frLangIdx = []uint16{ // 610 elements + "daisgaélique écossaisgalicienguaranigoudjeratimannoishaoussahébreuhindih" + + "iri motucroatecréole haïtienhongroisarménienhérérointerlinguaindonésieni" + + "nterlingueigboyi du Sichuaninupiaqidoislandaisitalieninuktitutjaponaisja" + + "vanaisgéorgienkongokikuyukouanyamakazakhgroenlandaiskhmerkannadacoréenka" + + "nourikashmirikurdekomicorniquekirghizelatinluxembourgeoisgandalimbourgeo" + + "islingalalaolituanienluba-katangalettonmalgachemarshallaismaorimacédonie" + + "nmalayalammongolmarathemalaismaltaisbirmannauruanndébélé du Nordnépalais" + + "ndonganéerlandaisnorvégien nynorsknorvégien bokmålndébélé du Sudnavahony" + + "anjaoccitanojibwaoromooriyaossètependjabipalipolonaispachtoportugaisquec" + + "huaromancheroundiroumainrusserwandasanskritsardesindhisami du Nordsangho" + + "cinghalaisslovaqueslovènesamoanshonasomalialbanaisserbeswatisotho du Sud" + + "soundanaissuédoisswahilitamoultélougoutadjikthaïtigrignaturkmènetswanato" + + "nguienturctsongatatartahitienouïghourukrainienourdououzbekvendavietnamie" + + "nvolapukwallonwolofxhosayiddishyorubazhuangchinoiszoulouacehacoliadangme" + + "adyghéenarabe tunisienafrihiliaghemaïnouakkadienalabamaaléouteguèguealta" + + "ï du Sudancien anglaisangikaaraméenmapuchearaonaarapahoarabe algérienar" + + "awakarabe marocainarabe égyptienassoulangue des signes américaineasturie" + + "nkotavaawadhibaloutchibalinaisbavaroisbassabamounbatak tobaghomalabedjab" + + "embabetawibénabafutbadagabaloutchi occidentalbhojpuribikolbinibanjarkoms" + + "iksikabishnupriyabakhtiaribrajbrahouibodoakoosebouriatebugibouloublinméd" + + "umbacaddocaribecayugaatsamcebuanokigachibchatchaghataïchuukmarijargon ch" + + "inookchoctawchipewyancherokeecheyennesoranicoptecapiznonturc de Criméecr" + + "éole seychelloiskachoubedakotadargwataitadelawareesclavedogribdinkazarm" + + "adogribas-sorabedusun centraldoualamoyen néerlandaisdiola-fognydiouladaz" + + "agaembouéfikémilienégyptien ancienékadjoukélamitemoyen anglaisyoupik cen" + + "traléwondoestrémègnefangfilipinofinnois tornédalienfonfrançais cadienmoy" + + "en françaisancien françaisfrancoprovençalfrison du Nordfrison orientalfr" + + "ioulangagagaouzegangayogbayadari zoroastrienguèzegilbertingilakimoyen ha" + + "ut-allemandancien haut allemandkonkani de Goagondigorontalogothiquegrebo" + + "grec anciensuisse allemandwayuugurennegusiigwichʼinhaidahakkahawaïenhind" + + "i fidjienhiligaynonhittitehmonghaut-sorabexianghupaibanibibioilokanoingo" + + "ucheingriencréole jamaïcainlojbanngombamatchaméjudéo-persanjudéo-arabeju" + + "tekarakalpakkabylekachinjjukambakawikabardinkanemboutyapmakondécapverdie" + + "nkényangkorocainganguekhasikhotanaiskoyra chiinikhowarkirmanjkikakokalen" + + "djinkimboundoukomi-permiakkonkanikosraéenkpellékaratchaï balkarkriokinar" + + "ay-acarélienkouroukhchambalabafiafrancique ripuairekoumykkutenailadinola" + + "ngilahndalambalezghienlingua franca novaligurelivonienlakotalombardmongo" + + "lozilori du Nordlatgalienluba-lulualuiseñolundaluolushaïluhyachinois lit" + + "térairelazemadouraismafamagahimaithilimakassarmandinguemassaïmabamoksama" + + "ndarmendéméroucréole mauricienmoyen irlandaismakhuwa-meettométa’micmacmi" + + "nangkabaumandchoumanipurimohawkmorémari occidentalmoundangmultilinguecre" + + "ekmirandaismarwarîmentawaïmyènèerzyamazandéraniminnannapolitainnamabas-a" + + "llemandnewariniasniuéenAokwasiongiemboonnogaïvieux norroisnovialn’kosoth" + + "o du Nordnuernewarî classiquenyamwezinyankolényoronzemaosageturc ottoman" + + "pangasinanpahlavipampanganpapiamentopalaupicardpidgin nigérianpennsilfaa" + + "nischbas-prussienpersan ancienallemand palatinphénicienpiémontaispontiqu" + + "epohnpeiprussienprovençal ancienk’iche’quichua du Haut-Chimborazorajasth" + + "anirapanuirarotongienromagnolrifainromboromanirotumanruthènerovianavalaq" + + "uerwasandaweiakoutearaméen samaritainsambourousasaksantalsaurashtrangamb" + + "aysangusicilienécossaissarde sassaraiskurde du Sudsenecacisenasériselkou" + + "pekoyraboro senniancien irlandaissamogitienchleuhshanarabe tchadiensidam" + + "obas-silésiensélayarsami du Sudsami de Lulesami d’Inarisami skoltsoninké" + + "sogdiensranan tongosérèresahosaterlandaissoukoumasoussousumériencomorien" + + "syriaque classiquesyriaquesilésientouloutemnetesoterenotetumtigrétivtoke" + + "lautsakhourklingontlingittalyshtamacheqtonga nyasatok pisintouroyotaroko" + + "tsakonientsimshiantati caucasientoumboukatuvalutasawaqtouvatamazight du " + + "Maroc centraloudmourteougaritiqueoumboundouracinevaïvénitienvepseflamand" + + " occidentalfranconien du Mainvotevõrovunjowalserwalamowaraywashowarlpiri" + + "wukalmoukmingréliensogayaoyapoisyangbenyembanheengatoucantonaiszapotèque" + + "symboles Blisszélandaiszenagaamazighe standard marocainzuñisans contenu " + + "linguistiquezazakiarabe standard moderneallemand autrichienallemand suis" + + "seanglais australienanglais canadienanglais britanniqueanglais américain" + + "français canadienfrançais suissebas-saxon néerlandaisflamandportugais br" + + "ésilienportugais européenmoldaveserbo-croateswahili du Congochinois sim" + + "plifiéchinois traditionnel" + +var frLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0033, 0x0038, 0x0040, 0x0044, 0x004a, 0x0050, 0x0057, 0x0062, 0x0069, @@ -15096,206 +18253,241 @@ var frLangIdx = []uint16{ // 610 elements 0x00b4, 0x00b9, 0x00bd, 0x00c5, 0x00d7, 0x00e1, 0x00e8, 0x00ee, 0x00f6, 0x00ff, 0x0107, 0x010c, 0x0110, 0x0117, 0x0121, 0x0129, 0x0131, 0x0137, 0x013d, 0x0141, 0x0148, 0x014f, 0x0158, 0x0161, - 0x0172, 0x017b, 0x018e, 0x0196, 0x019d, 0x01a5, 0x01a9, 0x01b0, - 0x01b7, 0x01bc, 0x01c5, 0x01cb, 0x01db, 0x01e3, 0x01ec, 0x01f4, + 0x0172, 0x017b, 0x018e, 0x0196, 0x019d, 0x01a7, 0x01ae, 0x01b5, + 0x01bc, 0x01c1, 0x01ca, 0x01d0, 0x01e0, 0x01e8, 0x01f1, 0x01f9, // Entry 40 - 7F - 0x01ff, 0x020a, 0x0215, 0x0219, 0x0226, 0x022d, 0x0230, 0x0239, - 0x0240, 0x0249, 0x0251, 0x0259, 0x0262, 0x0267, 0x026d, 0x0275, - 0x027b, 0x0287, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a9, 0x02ae, - 0x02b2, 0x02ba, 0x02c2, 0x02c7, 0x02d5, 0x02da, 0x02e6, 0x02ed, - 0x02f0, 0x02f9, 0x0305, 0x030b, 0x0313, 0x031b, 0x0320, 0x032b, - 0x0334, 0x033a, 0x0341, 0x0347, 0x034e, 0x0354, 0x035b, 0x036d, - 0x0376, 0x037c, 0x0388, 0x039a, 0x03ac, 0x03bd, 0x03c3, 0x03c9, - 0x03d0, 0x03d6, 0x03db, 0x03e0, 0x03e7, 0x03ef, 0x03f3, 0x03fb, + 0x0204, 0x020f, 0x021a, 0x021e, 0x022b, 0x0232, 0x0235, 0x023e, + 0x0245, 0x024e, 0x0256, 0x025e, 0x0267, 0x026c, 0x0272, 0x027b, + 0x0281, 0x028d, 0x0292, 0x0299, 0x02a0, 0x02a7, 0x02af, 0x02b4, + 0x02b8, 0x02c0, 0x02c8, 0x02cd, 0x02db, 0x02e0, 0x02ec, 0x02f3, + 0x02f6, 0x02ff, 0x030b, 0x0311, 0x0319, 0x0324, 0x0329, 0x0334, + 0x033d, 0x0343, 0x034a, 0x0350, 0x0357, 0x035d, 0x0364, 0x0376, + 0x037f, 0x0385, 0x0391, 0x03a3, 0x03b5, 0x03c6, 0x03cc, 0x03d2, + 0x03d9, 0x03df, 0x03e4, 0x03e9, 0x03f0, 0x03f8, 0x03fc, 0x0404, // Entry 80 - BF - 0x0401, 0x040a, 0x0411, 0x0419, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0439, 0x043e, 0x0444, 0x0450, 0x0456, 0x0460, 0x0468, 0x0470, - 0x0476, 0x047b, 0x0481, 0x0489, 0x048e, 0x0493, 0x049a, 0x04a4, - 0x04ac, 0x04b3, 0x04b9, 0x04c2, 0x04c8, 0x04cd, 0x04d5, 0x04de, - 0x04e4, 0x04ec, 0x04f0, 0x04f6, 0x04fb, 0x0503, 0x050c, 0x0515, - 0x051b, 0x0521, 0x0526, 0x0530, 0x0537, 0x053d, 0x0542, 0x0547, - 0x054e, 0x0554, 0x055a, 0x0561, 0x0567, 0x056b, 0x0570, 0x0577, - 0x0580, 0x0580, 0x0588, 0x058d, 0x0593, 0x059b, 0x059b, 0x05a3, + 0x040a, 0x0413, 0x041a, 0x0422, 0x0428, 0x042f, 0x0434, 0x043a, + 0x0442, 0x0447, 0x044d, 0x0459, 0x045f, 0x0469, 0x0471, 0x0479, + 0x047f, 0x0484, 0x048a, 0x0492, 0x0497, 0x049c, 0x04a8, 0x04b2, + 0x04ba, 0x04c1, 0x04c7, 0x04d0, 0x04d6, 0x04db, 0x04e3, 0x04ec, + 0x04f2, 0x04fa, 0x04fe, 0x0504, 0x0509, 0x0511, 0x051a, 0x0523, + 0x0529, 0x052f, 0x0534, 0x053e, 0x0545, 0x054b, 0x0550, 0x0555, + 0x055c, 0x0562, 0x0568, 0x056f, 0x0575, 0x0579, 0x057e, 0x0585, + 0x058e, 0x059c, 0x05a4, 0x05a9, 0x05af, 0x05b7, 0x05be, 0x05c6, // Entry C0 - FF - 0x05a3, 0x05b0, 0x05be, 0x05c4, 0x05cc, 0x05d3, 0x05d3, 0x05da, - 0x05da, 0x05e0, 0x05e0, 0x05e0, 0x05e5, 0x05e5, 0x05ed, 0x05ed, - 0x05f3, 0x05fc, 0x0604, 0x0604, 0x0609, 0x060f, 0x060f, 0x0616, - 0x061b, 0x0620, 0x0620, 0x0625, 0x062a, 0x062a, 0x063e, 0x0646, - 0x064b, 0x064f, 0x064f, 0x0652, 0x0659, 0x0659, 0x0659, 0x065d, - 0x065d, 0x0661, 0x0667, 0x066f, 0x0673, 0x0679, 0x067d, 0x0684, - 0x0689, 0x068f, 0x0695, 0x069a, 0x06a1, 0x06a5, 0x06ac, 0x06b7, - 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ee, 0x06f4, + 0x05cd, 0x05da, 0x05e8, 0x05ee, 0x05f6, 0x05fd, 0x0603, 0x060a, + 0x0619, 0x0619, 0x061f, 0x062d, 0x063c, 0x0641, 0x065e, 0x0666, + 0x066c, 0x0672, 0x067b, 0x0683, 0x068b, 0x0690, 0x0696, 0x06a0, + 0x06a7, 0x06ac, 0x06b1, 0x06b7, 0x06bc, 0x06c1, 0x06c7, 0x06db, + 0x06e3, 0x06e8, 0x06ec, 0x06f2, 0x06f5, 0x06fc, 0x0707, 0x0710, + 0x0714, 0x071b, 0x071f, 0x0725, 0x072d, 0x0731, 0x0737, 0x073b, + 0x0743, 0x0748, 0x074e, 0x0754, 0x0759, 0x0760, 0x0764, 0x076b, + 0x0776, 0x077b, 0x077f, 0x078d, 0x0794, 0x079d, 0x07a5, 0x07ad, // Entry 100 - 13F - 0x06f9, 0x06f9, 0x0708, 0x0710, 0x0716, 0x071c, 0x0721, 0x0729, - 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x074e, 0x074e, 0x0754, - 0x0766, 0x0771, 0x0777, 0x077d, 0x0782, 0x0786, 0x0786, 0x0796, - 0x079c, 0x07a4, 0x07b1, 0x07b1, 0x07b8, 0x07b8, 0x07bc, 0x07c4, - 0x07c4, 0x07c7, 0x07c7, 0x07d6, 0x07e6, 0x07f7, 0x0805, 0x0814, - 0x081c, 0x081e, 0x0826, 0x0826, 0x082a, 0x082f, 0x082f, 0x0835, - 0x083f, 0x083f, 0x0852, 0x0866, 0x0866, 0x086b, 0x0874, 0x087b, - 0x0880, 0x088b, 0x089a, 0x089a, 0x089a, 0x089f, 0x08a8, 0x08ad, + 0x07b3, 0x07b8, 0x07c0, 0x07cf, 0x07e2, 0x07ea, 0x07f0, 0x07f6, + 0x07fb, 0x0803, 0x080a, 0x0810, 0x0815, 0x081a, 0x081f, 0x0829, + 0x0836, 0x083c, 0x084e, 0x0859, 0x085f, 0x0865, 0x086a, 0x086f, + 0x0877, 0x0887, 0x0890, 0x0898, 0x08a5, 0x08b3, 0x08ba, 0x08c6, + 0x08ca, 0x08d2, 0x08e6, 0x08e9, 0x08f9, 0x0908, 0x0918, 0x0928, + 0x0936, 0x0945, 0x094d, 0x094f, 0x0957, 0x095a, 0x095e, 0x0963, + 0x0973, 0x0979, 0x0982, 0x0988, 0x099b, 0x09af, 0x09bd, 0x09c2, + 0x09cb, 0x09d3, 0x09d8, 0x09e3, 0x09f2, 0x09f7, 0x09fe, 0x0a03, // Entry 140 - 17F - 0x08ad, 0x08b5, 0x08b5, 0x08bf, 0x08c6, 0x08cb, 0x08d6, 0x08d6, - 0x08da, 0x08de, 0x08e4, 0x08eb, 0x08f3, 0x08f3, 0x08f3, 0x08f9, - 0x08ff, 0x0906, 0x0913, 0x091f, 0x091f, 0x0929, 0x092f, 0x0935, - 0x0938, 0x093d, 0x0941, 0x0949, 0x0951, 0x0955, 0x095c, 0x0966, - 0x0966, 0x096a, 0x096a, 0x096f, 0x0978, 0x0984, 0x0984, 0x0984, - 0x0988, 0x0990, 0x099a, 0x09a6, 0x09ad, 0x09b4, 0x09bb, 0x09cc, - 0x09cc, 0x09cc, 0x09d5, 0x09db, 0x09e3, 0x09e8, 0x09fa, 0x0a00, - 0x0a07, 0x0a0d, 0x0a12, 0x0a18, 0x0a1d, 0x0a25, 0x0a25, 0x0a25, + 0x0a0c, 0x0a11, 0x0a16, 0x0a1e, 0x0a2b, 0x0a35, 0x0a3c, 0x0a41, + 0x0a4c, 0x0a51, 0x0a55, 0x0a59, 0x0a5f, 0x0a66, 0x0a6e, 0x0a75, + 0x0a87, 0x0a8d, 0x0a93, 0x0a9c, 0x0aa9, 0x0ab5, 0x0ab9, 0x0ac3, + 0x0ac9, 0x0acf, 0x0ad2, 0x0ad7, 0x0adb, 0x0ae3, 0x0aeb, 0x0aef, + 0x0af7, 0x0b01, 0x0b09, 0x0b0d, 0x0b17, 0x0b1c, 0x0b25, 0x0b31, + 0x0b37, 0x0b40, 0x0b44, 0x0b4d, 0x0b57, 0x0b63, 0x0b6a, 0x0b73, + 0x0b7a, 0x0b8b, 0x0b8f, 0x0b98, 0x0ba1, 0x0ba9, 0x0bb1, 0x0bb6, + 0x0bc8, 0x0bce, 0x0bd5, 0x0bdb, 0x0be0, 0x0be6, 0x0beb, 0x0bf3, // Entry 180 - 1BF - 0x0a25, 0x0a2b, 0x0a2b, 0x0a30, 0x0a34, 0x0a40, 0x0a40, 0x0a4a, - 0x0a51, 0x0a56, 0x0a59, 0x0a5f, 0x0a67, 0x0a67, 0x0a67, 0x0a6f, - 0x0a73, 0x0a79, 0x0a81, 0x0a89, 0x0a92, 0x0a97, 0x0a9b, 0x0aa0, - 0x0aa6, 0x0aac, 0x0ab1, 0x0ac2, 0x0ad1, 0x0adf, 0x0ae7, 0x0aed, - 0x0af8, 0x0b00, 0x0b08, 0x0b0e, 0x0b13, 0x0b13, 0x0b1a, 0x0b25, - 0x0b2a, 0x0b33, 0x0b3b, 0x0b3b, 0x0b42, 0x0b47, 0x0b53, 0x0b53, - 0x0b5d, 0x0b61, 0x0b6d, 0x0b73, 0x0b77, 0x0b7c, 0x0b7c, 0x0b82, - 0x0b8b, 0x0b91, 0x0b9e, 0x0b9e, 0x0ba4, 0x0bb1, 0x0bb5, 0x0bc6, + 0x0c05, 0x0c0b, 0x0c13, 0x0c19, 0x0c20, 0x0c25, 0x0c29, 0x0c35, + 0x0c3e, 0x0c48, 0x0c50, 0x0c55, 0x0c58, 0x0c5f, 0x0c64, 0x0c77, + 0x0c7b, 0x0c84, 0x0c88, 0x0c8e, 0x0c96, 0x0c9e, 0x0ca7, 0x0cae, + 0x0cb2, 0x0cb7, 0x0cbd, 0x0cc3, 0x0cc9, 0x0cda, 0x0ce9, 0x0cf7, + 0x0cff, 0x0d05, 0x0d10, 0x0d18, 0x0d20, 0x0d26, 0x0d2b, 0x0d3a, + 0x0d42, 0x0d4d, 0x0d52, 0x0d5b, 0x0d63, 0x0d6c, 0x0d73, 0x0d78, + 0x0d84, 0x0d8a, 0x0d94, 0x0d98, 0x0da4, 0x0daa, 0x0dae, 0x0db5, + 0x0db7, 0x0dbd, 0x0dc6, 0x0dcc, 0x0dd9, 0x0ddf, 0x0de5, 0x0df2, // Entry 1C0 - 1FF - 0x0bce, 0x0bd7, 0x0bdc, 0x0be1, 0x0be6, 0x0bf2, 0x0bfc, 0x0c03, - 0x0c0c, 0x0c16, 0x0c1b, 0x0c1b, 0x0c1b, 0x0c1b, 0x0c28, 0x0c28, - 0x0c32, 0x0c32, 0x0c32, 0x0c39, 0x0c39, 0x0c4a, 0x0c55, 0x0c55, - 0x0c5f, 0x0c66, 0x0c71, 0x0c71, 0x0c71, 0x0c76, 0x0c7d, 0x0c7d, - 0x0c7d, 0x0c7d, 0x0c84, 0x0c87, 0x0c8e, 0x0c95, 0x0ca8, 0x0caf, - 0x0cb4, 0x0cba, 0x0cba, 0x0cc1, 0x0cc6, 0x0cce, 0x0cd7, 0x0cd7, - 0x0ce3, 0x0ce9, 0x0ced, 0x0ced, 0x0cf5, 0x0d04, 0x0d14, 0x0d14, - 0x0d1a, 0x0d1e, 0x0d2c, 0x0d32, 0x0d32, 0x0d32, 0x0d3d, 0x0d49, + 0x0df6, 0x0e07, 0x0e0f, 0x0e18, 0x0e1d, 0x0e22, 0x0e27, 0x0e33, + 0x0e3d, 0x0e44, 0x0e4d, 0x0e57, 0x0e5c, 0x0e62, 0x0e72, 0x0e81, + 0x0e8d, 0x0e9a, 0x0eaa, 0x0eb4, 0x0ebf, 0x0ec7, 0x0ece, 0x0ed6, + 0x0ee7, 0x0ef2, 0x0f0c, 0x0f16, 0x0f1d, 0x0f28, 0x0f30, 0x0f36, + 0x0f3b, 0x0f41, 0x0f48, 0x0f50, 0x0f57, 0x0f5e, 0x0f61, 0x0f68, + 0x0f6f, 0x0f82, 0x0f8b, 0x0f90, 0x0f96, 0x0fa0, 0x0fa7, 0x0fac, + 0x0fb4, 0x0fbd, 0x0fcc, 0x0fd8, 0x0fde, 0x0fe4, 0x0fe9, 0x0ff1, + 0x1000, 0x1010, 0x101a, 0x1020, 0x1024, 0x1032, 0x1038, 0x1045, // Entry 200 - 23F - 0x0d57, 0x0d61, 0x0d69, 0x0d70, 0x0d7c, 0x0d84, 0x0d88, 0x0d88, - 0x0d8e, 0x0d95, 0x0d9e, 0x0da6, 0x0db8, 0x0dc0, 0x0dc0, 0x0dc0, - 0x0dc5, 0x0dc9, 0x0dcf, 0x0dd4, 0x0dda, 0x0ddd, 0x0de4, 0x0de4, - 0x0deb, 0x0df2, 0x0df2, 0x0dfa, 0x0e05, 0x0e0e, 0x0e0e, 0x0e14, - 0x0e14, 0x0e1d, 0x0e1d, 0x0e24, 0x0e2a, 0x0e31, 0x0e36, 0x0e3f, - 0x0e48, 0x0e53, 0x0e5a, 0x0e60, 0x0e64, 0x0e64, 0x0e64, 0x0e64, - 0x0e64, 0x0e68, 0x0e68, 0x0e6d, 0x0e73, 0x0e79, 0x0e7e, 0x0e83, - 0x0e8b, 0x0e8b, 0x0e92, 0x0e92, 0x0e96, 0x0e99, 0x0e9f, 0x0ea6, + 0x104d, 0x1058, 0x1064, 0x1072, 0x107c, 0x1084, 0x108b, 0x1097, + 0x109f, 0x10a3, 0x10af, 0x10b7, 0x10be, 0x10c7, 0x10cf, 0x10e1, + 0x10e9, 0x10f2, 0x10f8, 0x10fd, 0x1101, 0x1107, 0x110c, 0x1112, + 0x1115, 0x111c, 0x1124, 0x112b, 0x1132, 0x1138, 0x1140, 0x114b, + 0x1154, 0x115b, 0x1161, 0x116a, 0x1173, 0x1181, 0x118a, 0x1190, + 0x1197, 0x119c, 0x11b6, 0x11bf, 0x11ca, 0x11d4, 0x11da, 0x11de, + 0x11e7, 0x11ec, 0x11fe, 0x1210, 0x1214, 0x1219, 0x121e, 0x1224, + 0x122a, 0x122f, 0x1234, 0x123c, 0x123e, 0x1245, 0x1250, 0x1254, // Entry 240 - 27F - 0x0eab, 0x0eab, 0x0eb4, 0x0ebe, 0x0ecc, 0x0ecc, 0x0ed2, 0x0eec, - 0x0ef0, 0x0f09, 0x0f0f, 0x0f25, 0x0f25, 0x0f38, 0x0f47, 0x0f59, - 0x0f69, 0x0f7c, 0x0f8e, 0x0fa8, 0x0fba, 0x0fcb, 0x0fcb, 0x0fdd, - 0x0fed, 0x1003, 0x100a, 0x101e, 0x1031, 0x1038, 0x1044, 0x1054, - 0x1066, 0x107a, -} // Size: 1244 bytes - -var frCALangStr string = "araukanluoMeta’bas allemand" - -var frCALangIdx = []uint16{ // 435 elements + 0x1257, 0x125d, 0x1264, 0x1269, 0x1273, 0x127c, 0x1286, 0x1294, + 0x129e, 0x12a4, 0x12be, 0x12c3, 0x12dc, 0x12e2, 0x12f8, 0x12f8, + 0x130b, 0x131a, 0x132c, 0x133c, 0x134f, 0x1361, 0x1361, 0x1361, + 0x1361, 0x1361, 0x1373, 0x1383, 0x1399, 0x13a0, 0x13b4, 0x13c7, + 0x13ce, 0x13da, 0x13ea, 0x13fc, 0x1410, +} // Size: 1250 bytes + +const frCALangStr string = "" + // Size: 529 bytes + "azerbaïdjanaiscrigujaratikalaallisutodiasame du Nordsangovolapükadyguévi" + + "eil anglaisaraukanbenabicolbilenmedumbatchagataychinookkurde centralslav" + + "etlichoyupik centralewondocajunvieux haut-allemandilocanokabardekenyangk" + + "ölschliveluochinois classiquemeta’marwaribas allemandao naganewari clas" + + "siquenkolepalauanallemand de Pennsylvaniebas allemand mennonitevieux per" + + "sepalatinancien occitanrarotongaaroumainsantalikurde méridionalserivieil" + + " irlandaisselayarsame du Sudsame de Lulesame skoltturoyotamazightbas sax" + + "onswahili congolais" + +var frCALangIdx = []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0035, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0049, 0x0049, 0x0056, 0x0056, 0x0056, 0x005d, 0x005d, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x0061, 0x0061, 0x0061, 0x0061, + 0x0061, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, + 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x006b, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x007b, 0x007b, 0x007b, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, // Entry 100 - 13F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, + 0x008f, 0x008f, 0x0094, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, + 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a7, 0x00ad, 0x00ad, + 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b2, 0x00b2, 0x00b2, 0x00b2, + 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, + 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, // Entry 140 - 17F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, + 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00cc, 0x00cc, 0x00cc, + 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00d3, 0x00d3, 0x00d3, + 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, // Entry 180 - 1BF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x001d, -} // Size: 894 bytes - -var guLangStr string = "" + // Size: 11388 bytes + 0x00e1, 0x00e1, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, + 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e8, 0x00e8, 0x00e8, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0113, 0x0113, 0x0113, 0x0113, + 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + // Entry 1C0 - 1FF + 0x011a, 0x012a, 0x012a, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, + 0x012f, 0x012f, 0x012f, 0x012f, 0x0136, 0x0136, 0x0136, 0x014e, + 0x0164, 0x016f, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, + 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x018d, 0x018d, 0x018d, + 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x0195, 0x0195, 0x0195, + 0x0195, 0x0195, 0x0195, 0x0195, 0x019c, 0x019c, 0x019c, 0x019c, + 0x019c, 0x019c, 0x019c, 0x01ad, 0x01ad, 0x01ad, 0x01b1, 0x01b1, + 0x01b1, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, + // Entry 200 - 23F + 0x01c7, 0x01d2, 0x01de, 0x01de, 0x01e8, 0x01e8, 0x01e8, 0x01e8, + 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, + 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, + 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, + 0x01e8, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, + 0x01ee, 0x01ee, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, + 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, + 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, + // Entry 240 - 27F + 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, + 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, + 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x01f7, + 0x01f7, 0x01f7, 0x01f7, 0x01f7, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0211, +} // Size: 1246 bytes + +const guLangStr string = "" + // Size: 11776 bytes "અફારઅબખાજિયનઅવેસ્તનઆફ્રિકન્સઅકાનએમ્હારિકઅર્ગોનીઝઅરબીઆસામીઅવેરિકઆયમારાઅઝર" + "બૈજાનીબશ્કીરબેલારુશિયનબલ્ગેરિયનબિસ્લામાબામ્બારાબંગાળીતિબેટીયનબ્રેટોનબો" + "સ્નિયનકતલાનચેચનકેમોરોકોર્સિકનક્રીચેકચર્ચ સ્લાવિકચૂવાશવેલ્શડેનિશજર્મનદિ" + "વેહીડ્ઝોંગ્ખાઈવગ્રીકઅંગ્રેજીએસ્પેરાન્ટોસ્પેનિશએસ્ટોનિયનબાસ્કફારસીફુલાહ" + - "ફિનિશફિજીયનફોરિસ્તફ્રેન્ચપશ્ચિમી ફ્રિસિયનઆઇરિશસ્કોટ્સ ગેલિકગેલિશિયનગુઆ" + + "ફિનિશફીજીયનફોરિસ્તફ્રેન્ચપશ્ચિમી ફ્રિસિયનઆઇરિશસ્કોટીસ ગેલિકગેલિશિયનગુઆ" + "રાનીગુજરાતીમાંક્સહૌસાહીબ્રુહિન્દીહિરી મોટૂક્રોએશિયનહૈતીયનહંગેરિયનઆર્મે" + - "નિયનહેરેરોઇંટરલિંગુઆઇન્ડોનેશિયનઇંટરલિંગઇગ્બોસિચુઆન યીઇનુપિયાકઇડૌઆઇસલેન" + + "નિયનહેરેરોઇંટરલિંગુઆઇન્ડોનેશિયનઇંટરલિંગઇગ્બોસિચુઆન યીઇનુપિયાકઈડોઆઇસલેન" + "્ડિકઇટાલિયનઇનુકિટૂટજાપાનીઝજાવાનીસજ્યોર્જિઅનકોંગોકિકુયૂક્વાન્યામાકઝાખકલ" + "ાલ્લિસુતખ્મેરકન્નડકોરિયનકનુરીકાશ્મીરીકુર્દિશકોમીકોર્નિશકિર્ગીઝલેટિનલક્" + - "ઝેમબર્ગિશગાંડાલિંબૂર્ગિશલિંગાલાલાઓથિયનલિથુનિયનલ્યૂબા કટાંગાલાતવિયનમલાગ" + - "સીમાર્શલીઝમાઓરીમેસેડોનિયનમલયાલમમોંગોલિયનમરાઠીમલયમાલ્ટિઝબર્મીઝનાઉરૂઉત્ત" + - "ર દેબેલનેપાળીડોન્ગાડચનૉર્વેજીયન નાયનૉર્સ્કનોર્વેજીયન બોકમાલદક્ષિણ દેબે" + - "લનાવાજોન્યાન્જાઓક્સિટનઓઝિંબ્વાઓરોમોઉડિયાઓસ્સેટિકપંજાબીપાલીપોલીશપશ્તોપો" + - "ર્ટુગીઝક્વેચુઆરોમાન્શરૂન્દીરોમાનિયનરશિયનકિન્યારવાન્ડાસંસ્કૃતસાર્દિનિયન" + - "સિંધીઉત્તરીય સામીસાંગોસિંહાલીસ્લોવૅકસ્લોવેનિયનસામોનશોનાસોમાલીઅલ્બેનિયન" + - "સર્બિયનસ્વાતીસદર્ન સોથોસંડેનીઝસ્વીડિશસ્વાહિલીતમિલતેલુગુતાજીકથાઈટાઇગ્રિ" + - "નિયાતુર્કમેનત્સ્વાનાટોંગાનટર્કીશસોંગાતતારતાહિતિયનઉઇગુરયુક્રેનિયનઉર્દૂઉ" + - "ઝ્બેકવેન્દાવિયેતનામીસવોલાપુકવાલૂનવોલોફખોસાયિદ્દિશયોરૂબાઝુઆગચાઇનીઝઝુલુઅ" + - "ચીનીએકોલીઅદાંગ્મીઅદિઘેઅફ્રિહિલીઅઘેમઐનુઅક્કાદીયાનઅલેઉતદક્ષિણ અલ્તાઇજુની" + - " અંગ્રેજીઅંગીકાઅર્માઇકમેપુચેઅરાપાહોઆલ્જેરિયન અરબીઅરાવકમોરોક્કન અરબીઈજિપ્" + - "શિયન અરબીઅસુઅસ્તુરિયનઅવધીબલૂચીબાલિનીસબસાબેજાબેમ્બાબેનાપશ્ચિમી બાલોચીભો" + - "જપુરીબિકોલબિનીસિક્સિકાબિષ્નુપ્રિયાવ્રજબ્રાહુઈબોડોબુરિયાતબગિનીસબ્લિનકડ્" + - "ડોકરિબઅત્સમસિબુઆનોચિગાચિબ્ચાછગાતાઇચૂકીસેમારીચિનૂક જાર્ગનચોક્તૌશિપેવ્યા" + - "નશેરોકીશેયેન્નસેન્ટ્રલ કુર્દિશકોપ્ટિકક્રિમિયન તુર્કીકાશુબિયનદાકોતાદાર્" + - "ગવાતૈતાદેલેવેરસ્લેવડોગ્રિબદિન્કાઝર્માડોગ્રીનિમ્ન સોર્બિયનદુઆલામધ્ય ડચજ" + - "ોલા-ફોન્યીડ્યુલાઍમ્બુએફિકપ્રાચીન ઇજીપ્શિયનએકાજુકએલામાઇટમિડિલ અંગ્રેજીઇ" + - "વોન્ડોફેંગફિલિપિનોફોનમિડિલ ફ્રેંચજૂની ફ્રેંચનોર્ધર્ન ફ્રિશિયનપૂર્વ ફ્ર" + - "િશિયનફ્રિયુલિયાનGaગાગાઝગાયોબાયાઝોરોસ્ટ્રિઅન દારીગીઝજિલ્બરટીઝમધ્ય હાઇ જ" + - "ર્મનજૂની હાઇ જર્મનગોઅન કોંકણીગોંડીગોરોન્તાલોગોથિકગ્રેબોપ્રાચીન ગ્રીકસ્" + - "વિસ જર્મનગુસીગ્વિચ’ઇનહૈડાહાવાઇયનફીજી હિંદીહિલિગેનોનહિટ્ટિતેમોંગઅપ્પર સ" + - "ોર્બિયનહૂપાઇબાનઇલોકોઇંગુશલોજ્બાનનગોમ્બામકામેજુદેઓ-પર્શિયનજુદેઓ-અરબીકાર" + - "ા-કલ્પકકબાઇલકાચિનજ્જુકમ્બાકાવીકબાર્ડિયનત્યાપમકોન્ડેકાબુવર્ડિઆનુકોરોખાસ" + - "ીખોતાનીસકોયરા ચિનિકલેજિનકિમ્બન્દુકોમી-પર્મ્યાકકોંકણીકોસરિયનક્પેલ્લેકરા" + - "ચય-બલ્કારકરેલિયનકુરૂખશમ્બાલાબફિયાકુમીકકુતેનાઇલાદીનોલંગીલાહન્ડાલામ્બાલે" + - "ઝધીયનલિંગ્વા ફેન્કા નોવાલાકોટામોગોલોઝીઉત્તરીય લુરીલ્યૂબા-લુલુઆલુઇસેનોલ" + - "ુન્ડાલ્યુઓલુશાઇલુઈયામાદુરીસમગહીમૈથિલીમકાસરમન્ડિન્ગોમસાઇમોક્ષમંડારમેન્ડ" + - "ેમેરુમોરીસ્યેનમિડિલ આઇરિશમાખુવા-મીટ્ટુમેતામિકમેકમિનાંગ્કાબાઉમાન્ચુમણિપ" + - "ુરીમોહૌકમોસ્સીપશ્ચિમી મારીમુનડાન્ગબહુવિધ ભાષાક્રિકમિરાંડીમારવાડીએર્ઝયા" + - "મઝાન્દેરાનીનેપોલિટાનનમાલો જર્મનનેવાડીનિયાસનિયુઆનક્વાસિઓનોગાઇજૂની નોર્સ" + - "એન’કોઉતરી સોથોનુએરપરંપરાગત નેવારીન્યામવેઝીન્યાનકોલન્યોરોન્ઝિમાઓસેજઓટોમ" + - "ાન તુર્કિશપંગાસીનાનપહલવીપમ્પાન્ગાપાપિયામેન્ટોપલાઉઆનજૂની ફારસીફોનિશિયનપ" + - "ોહપિએનજુની પ્રોવેન્સલકિચેરાજસ્થાનીરાપાનુઇરારોટોંગનરોમ્બોરોમાનીઅરોમેનિય" + - "નરવાસોંડવેયાકૂતસામરિટાન અરેમિકસમ્બુરુસાસાકસંતાલીસાંગુસિસિલિયાનસ્કોટ્સસ" + - "ર્ઘન કુર્દીશસેનાસેલ્કપકોયરાબોરો સેન્નીજૂની આયરિશતેશીલહિટશેનસિદામોદક્ષિ" + - "ણ સામીલ્યુલ સામીઇનારી સામીસ્કોલ્ટ સામીસોનિન્કેસોગ્ડિએનસ્રાનન ટોન્ગોસેર" + - "ેરસુકુમાસુસુસુમેરિયનકોમોરિયનપરંપરાગત સિરિએકસિરિએકતુલુટિમ્નેતેસોતેરેનોત" + - "ેતુમટાઇગ્રેતિવતોકેલાઉક્લિન્ગોનલિંગિતતામાશેખન્યાસા ટોન્ગાટોક પિસિનસિમ્શ" + - "િયનમુસ્લિમ તાટતુમ્બુકાતુવાલુતસાવાકટુવીનિયનસેન્ટ્રલ ઍટ્લસ તામાઝિગ્ટઉદમુ" + - "ર્તયુગેરિટિકઉમ્બુન્ડૂમૂલવાઇવોટિકવુન્જોવલામોવારેવાશોવાર્લ્પીરીકાલ્મિકસો" + - "ગાયાઓયાપીસકેંટોનીઝઝેપોટેકબ્લિસિમ્બોલ્સઝેનાગાપ્રમાણભૂત મોરોક્કન તામાઝિગ" + + "ઝેમબર્ગિશગાંડાલિંબૂર્ગિશલિંગાલાલાઓથિયનલિથુનિયનલૂબા-કટાંગાલાતવિયનમલાગસી" + + "માર્શલીઝમાઓરીમેસેડોનિયનમલયાલમમોંગોલિયનમરાઠીમલયમાલ્ટિઝબર્મીઝનાઉરૂઉત્તર " + + "દેબેલનેપાળીડોન્ગાડચનૉર્વેજીયન નાયનૉર્સ્કનોર્વેજીયન બોકમાલદક્ષિણ દેબેલન" + + "ાવાજોન્યાન્જાઓક્સિટનઓજિબ્વાઓરોમોઉડિયાઓસ્સેટિકપંજાબીપાલીપોલીશપશ્તોપોર્ટ" + + "ુગીઝક્વેચુઆરોમાન્શરૂન્દીરોમાનિયનરશિયનકિન્યારવાન્ડાસંસ્કૃતસાર્દિનિયનસિં" + + "ધીઉત્તરીય સામીસાંગોસિંહાલીસ્લોવૅકસ્લોવેનિયનસામોનશોનાસોમાલીઅલ્બેનિયનસર્" + + "બિયનસ્વાતીસદર્ન સોથોસંડેનીઝસ્વીડિશસ્વાહિલીતમિલતેલુગુતાજીકથાઈટાઇગ્રિનિય" + + "ાતુર્કમેનત્સ્વાનાટોંગાનટર્કીશસોંગાતતારતાહિતિયનઉઇગુરયુક્રેનિયનઉર્દૂઉઝ્બ" + + "ેકવેન્દાવિયેતનામીસવોલાપુકવાલૂનવોલોફખોસાયિદ્દિશયોરૂબાઝુઆગચાઇનીઝઝુલુઅચીન" + + "ીએકોલીઅદાંગ્મીઅદિઘેઅફ્રિહિલીઅઘેમઐનુઅક્કાદીયાનઅલેઉતદક્ષિણ અલ્તાઇજુની અં" + + "ગ્રેજીઅંગીકાએરમૈકમેપુચેઅરાપાહોઆલ્જેરિયન અરબીઅરાવકમોરોક્કન અરબીઈજિપ્શિય" + + "ન અરબીઅસુઅસ્તુરિયનઅવધીબલૂચીબાલિનીસબસાબામનબેજાબેમ્બાબેનાપશ્ચિમી બાલોચીભ" + + "ોજપુરીબિકોલબિનીસિક્સિકાબિષ્નુપ્રિયાવ્રજબ્રાહુઈબોડોબુરિયાતબુગિનીસબ્લિનક" + + "ડ્ડોકરિબઅત્સમસિબુઆનોચિગાચિબ્ચાછગાતાઇચૂકીસમારીચિનૂક જાર્ગનચોક્તૌશિપેવ્ય" + + "ાનશેરોકીશેયેન્નસેન્ટ્રલ કુર્દિશકોપ્ટિકક્રિમિયન તુર્કીસેસેલ્વા ક્રેઓલે " + + "ફ્રેન્ચકાશુબિયનદાકોતાદાર્ગવાતૈતાદેલવેરસ્લેવડોગ્રિબદિન્કાઝર્માડોગ્રીનિમ" + + "્ન સોર્બિયનદુઆલામધ્ય ડચજોલા-ફોન્યીડ્યુલાદાઝાગાઍમ્બુએફિકપ્રાચીન ઇજીપ્શિ" + + "યનએકાજુકએલામાઇટમિડિલ અંગ્રેજીઇવોન્ડોફેંગફિલિપિનોફોનમિડિલ ફ્રેંચજૂની ફ્" + + "રેંચઉત્તરીય ફ્રિશિયનપૂર્વ ફ્રિશિયનફ્રિયુલિયાનગાગાગાઝganગાયોબાયાઝોરોસ્ટ" + + "્રિઅન દારીગીઝજિલ્બરટીઝમધ્ય હાઇ જર્મનજૂની હાઇ જર્મનગોઅન કોંકણીગોંડીગોરો" + + "ન્તાલોગોથિકગ્રેબોપ્રાચીન ગ્રીકસ્વિસ જર્મનગુસીગ્વિચ’ઇનહૈડાhakહાવાઇયનફીજ" + + "ી હિંદીહિલિગેનોનહિટ્ટિતેહમોંગઅપ્પર સોર્બિયનhsnહૂપાઇબાનઈબિબિયોઇલોકોઇંગુ" + + "શલોજ્બાનનગોમ્બામકામેજુદેઓ-પર્શિયનજુદેઓ-અરબીકારા-કલ્પકકબાઇલકાચિનજ્જુકમ્" + + "બાકાવીકબાર્ડિયનત્યાપમકોન્ડેકાબુવર્ડિઆનુકોરોખાસીખોતાનીસકોયરા ચિનિકાકોકલ" + + "ેજિનકિમ્બન્દુકોમી-પર્મ્યાકકોંકણીકોસરિયનક્પેલ્લેકરાચય-બલ્કારકરેલિયનકુરૂ" + + "ખશમ્બાલાબફિયાકોલોગ્નિયનકુમીકકુતેનાઇલાદીનોલંગીલાહન્ડાલામ્બાલેઝધીયનલિંગ્" + + "વા ફેન્કા નોવાલાકોટામોંગોલોઝીઉત્તરીય લુરીલૂબા-લુલુઆલુઇસેનોલુન્ડાલ્યુઓમ" + + "િઝોલુઈયામાદુરીસમગહીમૈથિલીમકાસરમન્ડિન્ગોમસાઇમોક્ષમંદારમેન્ડેમેરુમોરીસ્ય" + + "ેનમધ્ય આઈરિશમાખુવા-મીટ્ટુમેતામિકમેકમિનાંગ્કાબાઉમાન્ચુમણિપુરીમોહૌકમોસ્સ" + + "ીપશ્ચિમી મારીમુનડાન્ગબહુવિધ ભાષાઓક્રિકમિરાંડીમારવાડીએર્ઝયામઝાન્દેરાનીn" + + "anનેપોલિટાનનમાલો જર્મનનેવારીનિયાસનિયુઆનક્વાસિઓનીએમબુનનોગાઇજૂની નોર્સએન’ક" + + "ોઉતરી સોથોનુએરપરંપરાગત નેવારીન્યામવેઝીન્યાનકોલન્યોરોન્ઝિમાઓસેજઓટોમાન ત" + + "ુર્કિશપંગાસીનાનપહલવીપમ્પાન્ગાપાપિયામેન્ટોપલાઉઆનનાજેરીયન પીજીનજૂની ફારસ" + + "ીફોનિશિયનપોહપિએનપ્રુસ્સીયનજુની પ્રોવેન્સલકિચેરાજસ્થાનીરાપાનુઇરારોટોંગન" + + "રોમ્બોરોમાનીઅરોમેનિયનરવાસોંડવેસખાસામરિટાન અરેમિકસમ્બુરુસાસાકસંતાલીન્ગા" + + "મ્બેયસાંગુસિસિલિયાનસ્કોટ્સસર્ઘન કુર્દીશસેનાસેલ્કપકોયરાબોરો સેન્નીજૂની " + + "આયરિશતેશીલહિટશેનસિદામોદક્ષિણ સામીલ્યુલ સામીઇનારી સામીસ્કોલ્ટ સામીસોનિન" + + "્કેસોગ્ડિએનસ્રાનન ટોન્ગોસેરેરસાહોસુકુમાસુસુસુમેરિયનકોમોરિયનપરંપરાગત સિ" + + "રિએકસિરિએકતુલુટિમ્નેતેસોતેરેનોતેતુમટાઇગ્રેતિવતોકેલાઉક્લિન્ગોનક્લીન્ગકિ" + + "ટતામાશેખન્યાસા ટોન્ગાટોક પિસિનટારોકોસિમ્શિયનમુસ્લિમ તાટતુમ્બુકાતુવાલુત" + + "સાવાકટુવીનિયનસેન્ટ્રલ ઍટ્લસ તામાઝિગ્ટઉદમુર્તયુગેરિટિકઉમ્બુન્ડૂરૂટવાઇવો" + + "ટિકવુન્જોવેલ્સેરવોલાયટ્ટાવારેયવાશોવાર્લ્પીરીwuuકાલ્મિકસોગાયાઓયાપીસયાન્" + + "ગબેનયેમ્બાકેંટોનીઝઝેપોટેકબ્લિસિમ્બોલ્સઝેનાગાપ્રમાણભૂત મોરોક્કન તામાઝિગ" + "્ટઝૂનીકોઇ ભાષાશાસ્ત્રીય સામગ્રી નથીઝાઝામોડર્ન સ્ટાન્ડર્ડ અરબીઓસ્ટ્રિઅન" + " જર્મનસ્વિસ હાય જર્મનઓસ્ટ્રેલિયન અંગ્રેજીકેનેડિયન અંગ્રેજીબ્રિટિશ અંગ્રે" + "જીઅમેરિકન અંગ્રેજીલેટિન અમેરિકન સ્પેનિશયુરોપિયન સ્પેનિશમેક્સિકન સ્પેનિ" + @@ -15303,7 +18495,7 @@ var guLangStr string = "" + // Size: 11388 bytes "િયન પોર્ટુગીઝમોલડાવિયનસર્બો-ક્રોએશિયનકોંગો સ્વાહિલીસરળીકૃત ચાઇનીઝપારંપ" + "રિક ચાઇનીઝ" -var guLangIdx = []uint16{ // 610 elements +var guLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0024, 0x0039, 0x0054, 0x0060, 0x0078, 0x0090, 0x009c, 0x00ab, 0x00bd, 0x00cf, 0x00ea, 0x00fc, 0x011a, 0x0135, @@ -15318,283 +18510,283 @@ var guLangIdx = []uint16{ // 610 elements 0x05db, 0x05f3, 0x0608, 0x061d, 0x063b, 0x064a, 0x065c, 0x067a, 0x0686, 0x06a4, 0x06b3, 0x06c2, 0x06d4, 0x06e3, 0x06fb, 0x0710, 0x071c, 0x0731, 0x0746, 0x0755, 0x0779, 0x0788, 0x07a6, 0x07bb, - 0x07d0, 0x07e8, 0x080d, 0x0822, 0x0834, 0x084c, 0x085b, 0x0879, - 0x088b, 0x08a6, 0x08b5, 0x08be, 0x08d3, 0x08e5, 0x08f4, 0x0913, - 0x0925, 0x0937, 0x093d, 0x097a, 0x09ab, 0x09cd, 0x09df, 0x09f7, - 0x0a0c, 0x0a24, 0x0a33, 0x0a42, 0x0a5a, 0x0a6c, 0x0a78, 0x0a87, + 0x07d0, 0x07e8, 0x0807, 0x081c, 0x082e, 0x0846, 0x0855, 0x0873, + 0x0885, 0x08a0, 0x08af, 0x08b8, 0x08cd, 0x08df, 0x08ee, 0x090d, + 0x091f, 0x0931, 0x0937, 0x0974, 0x09a5, 0x09c7, 0x09d9, 0x09f1, + 0x0a06, 0x0a1b, 0x0a2a, 0x0a39, 0x0a51, 0x0a63, 0x0a6f, 0x0a7e, // Entry 80 - BF - 0x0a96, 0x0ab1, 0x0ac6, 0x0adb, 0x0aed, 0x0b05, 0x0b14, 0x0b3b, - 0x0b50, 0x0b6e, 0x0b7d, 0x0b9f, 0x0bae, 0x0bc3, 0x0bd8, 0x0bf6, - 0x0c05, 0x0c11, 0x0c23, 0x0c3e, 0x0c53, 0x0c65, 0x0c81, 0x0c96, - 0x0cab, 0x0cc3, 0x0ccf, 0x0ce1, 0x0cf0, 0x0cf9, 0x0d1a, 0x0d32, - 0x0d4a, 0x0d5c, 0x0d6e, 0x0d7d, 0x0d89, 0x0da1, 0x0db0, 0x0dce, - 0x0ddd, 0x0def, 0x0e01, 0x0e1f, 0x0e34, 0x0e43, 0x0e52, 0x0e5e, - 0x0e73, 0x0e85, 0x0e91, 0x0ea3, 0x0eaf, 0x0ebe, 0x0ecd, 0x0ee5, - 0x0ef4, 0x0ef4, 0x0f0f, 0x0f1b, 0x0f24, 0x0f42, 0x0f42, 0x0f51, + 0x0a8d, 0x0aa8, 0x0abd, 0x0ad2, 0x0ae4, 0x0afc, 0x0b0b, 0x0b32, + 0x0b47, 0x0b65, 0x0b74, 0x0b96, 0x0ba5, 0x0bba, 0x0bcf, 0x0bed, + 0x0bfc, 0x0c08, 0x0c1a, 0x0c35, 0x0c4a, 0x0c5c, 0x0c78, 0x0c8d, + 0x0ca2, 0x0cba, 0x0cc6, 0x0cd8, 0x0ce7, 0x0cf0, 0x0d11, 0x0d29, + 0x0d41, 0x0d53, 0x0d65, 0x0d74, 0x0d80, 0x0d98, 0x0da7, 0x0dc5, + 0x0dd4, 0x0de6, 0x0df8, 0x0e16, 0x0e2b, 0x0e3a, 0x0e49, 0x0e55, + 0x0e6a, 0x0e7c, 0x0e88, 0x0e9a, 0x0ea6, 0x0eb5, 0x0ec4, 0x0edc, + 0x0eeb, 0x0eeb, 0x0f06, 0x0f12, 0x0f1b, 0x0f39, 0x0f39, 0x0f48, // Entry C0 - FF - 0x0f51, 0x0f76, 0x0f9b, 0x0fad, 0x0fc2, 0x0fd4, 0x0fd4, 0x0fe9, - 0x1011, 0x1020, 0x1045, 0x106d, 0x1076, 0x1076, 0x1091, 0x1091, - 0x109d, 0x10ac, 0x10c1, 0x10c1, 0x10ca, 0x10ca, 0x10ca, 0x10ca, - 0x10d6, 0x10e8, 0x10e8, 0x10f4, 0x10f4, 0x10f4, 0x111c, 0x1131, - 0x1140, 0x114c, 0x114c, 0x114c, 0x1164, 0x1188, 0x1188, 0x1194, - 0x11a9, 0x11b5, 0x11b5, 0x11ca, 0x11dc, 0x11dc, 0x11eb, 0x11eb, - 0x11fa, 0x1206, 0x1206, 0x1215, 0x122a, 0x1236, 0x1248, 0x125a, - 0x126c, 0x1278, 0x129a, 0x12ac, 0x12c7, 0x12d9, 0x12ee, 0x131c, + 0x0f48, 0x0f6d, 0x0f92, 0x0fa4, 0x0fb3, 0x0fc5, 0x0fc5, 0x0fda, + 0x1002, 0x1002, 0x1011, 0x1036, 0x105e, 0x1067, 0x1067, 0x1082, + 0x1082, 0x108e, 0x109d, 0x10b2, 0x10b2, 0x10bb, 0x10c7, 0x10c7, + 0x10c7, 0x10d3, 0x10e5, 0x10e5, 0x10f1, 0x10f1, 0x10f1, 0x1119, + 0x112e, 0x113d, 0x1149, 0x1149, 0x1149, 0x1161, 0x1185, 0x1185, + 0x1191, 0x11a6, 0x11b2, 0x11b2, 0x11c7, 0x11dc, 0x11dc, 0x11eb, + 0x11eb, 0x11fa, 0x1206, 0x1206, 0x1215, 0x122a, 0x1236, 0x1248, + 0x125a, 0x1269, 0x1275, 0x1297, 0x12a9, 0x12c4, 0x12d6, 0x12eb, // Entry 100 - 13F - 0x1331, 0x1331, 0x135c, 0x1374, 0x1386, 0x139b, 0x13a7, 0x13bc, - 0x13cb, 0x13e0, 0x13f2, 0x1401, 0x1413, 0x143b, 0x143b, 0x144a, - 0x145d, 0x147c, 0x148e, 0x148e, 0x149d, 0x14a9, 0x14a9, 0x14da, - 0x14ec, 0x1501, 0x1529, 0x1529, 0x153e, 0x153e, 0x154a, 0x1562, - 0x1562, 0x156b, 0x156b, 0x158d, 0x15ac, 0x15ac, 0x15dd, 0x1605, - 0x1626, 0x1628, 0x1637, 0x1637, 0x1643, 0x164f, 0x1680, 0x1689, - 0x16a4, 0x16a4, 0x16ca, 0x16f0, 0x170f, 0x171e, 0x173c, 0x174b, - 0x175d, 0x1782, 0x17a1, 0x17a1, 0x17a1, 0x17ad, 0x17c5, 0x17d1, + 0x1319, 0x132e, 0x132e, 0x1359, 0x139d, 0x13b5, 0x13c7, 0x13dc, + 0x13e8, 0x13fa, 0x1409, 0x141e, 0x1430, 0x143f, 0x1451, 0x1479, + 0x1479, 0x1488, 0x149b, 0x14ba, 0x14cc, 0x14de, 0x14ed, 0x14f9, + 0x14f9, 0x152a, 0x153c, 0x1551, 0x1579, 0x1579, 0x158e, 0x158e, + 0x159a, 0x15b2, 0x15b2, 0x15bb, 0x15bb, 0x15dd, 0x15fc, 0x15fc, + 0x162a, 0x1652, 0x1673, 0x1679, 0x1688, 0x168b, 0x1697, 0x16a3, + 0x16d4, 0x16dd, 0x16f8, 0x16f8, 0x171e, 0x1744, 0x1763, 0x1772, + 0x1790, 0x179f, 0x17b1, 0x17d6, 0x17f5, 0x17f5, 0x17f5, 0x1801, // Entry 140 - 17F - 0x17d1, 0x17e6, 0x1802, 0x181d, 0x1835, 0x1841, 0x1869, 0x1869, - 0x1875, 0x1881, 0x1881, 0x1890, 0x189f, 0x189f, 0x189f, 0x18b4, - 0x18c9, 0x18d8, 0x18fd, 0x1919, 0x1919, 0x1935, 0x1944, 0x1953, - 0x195f, 0x196e, 0x197a, 0x1995, 0x1995, 0x19a4, 0x19b9, 0x19dd, - 0x19dd, 0x19e9, 0x19e9, 0x19f5, 0x1a0a, 0x1a26, 0x1a26, 0x1a26, - 0x1a26, 0x1a38, 0x1a53, 0x1a78, 0x1a8a, 0x1a9f, 0x1ab7, 0x1ad9, - 0x1ad9, 0x1ad9, 0x1aee, 0x1afd, 0x1b12, 0x1b21, 0x1b21, 0x1b30, - 0x1b45, 0x1b57, 0x1b63, 0x1b78, 0x1b8a, 0x1b9f, 0x1bd4, 0x1bd4, + 0x1819, 0x1825, 0x1828, 0x183d, 0x1859, 0x1874, 0x188c, 0x189b, + 0x18c3, 0x18c6, 0x18d2, 0x18de, 0x18f3, 0x1902, 0x1911, 0x1911, + 0x1911, 0x1926, 0x193b, 0x194a, 0x196f, 0x198b, 0x198b, 0x19a7, + 0x19b6, 0x19c5, 0x19d1, 0x19e0, 0x19ec, 0x1a07, 0x1a07, 0x1a16, + 0x1a2b, 0x1a4f, 0x1a4f, 0x1a5b, 0x1a5b, 0x1a67, 0x1a7c, 0x1a98, + 0x1a98, 0x1a98, 0x1aa4, 0x1ab6, 0x1ad1, 0x1af6, 0x1b08, 0x1b1d, + 0x1b35, 0x1b57, 0x1b57, 0x1b57, 0x1b6c, 0x1b7b, 0x1b90, 0x1b9f, + 0x1bbd, 0x1bcc, 0x1be1, 0x1bf3, 0x1bff, 0x1c14, 0x1c26, 0x1c3b, // Entry 180 - 1BF - 0x1bd4, 0x1be6, 0x1be6, 0x1bf2, 0x1bfe, 0x1c20, 0x1c20, 0x1c42, - 0x1c57, 0x1c69, 0x1c78, 0x1c87, 0x1c96, 0x1c96, 0x1c96, 0x1cab, - 0x1cab, 0x1cb7, 0x1cc9, 0x1cd8, 0x1cf3, 0x1cff, 0x1cff, 0x1d0e, - 0x1d1d, 0x1d2f, 0x1d3b, 0x1d56, 0x1d75, 0x1d9a, 0x1da6, 0x1db8, - 0x1ddc, 0x1dee, 0x1e03, 0x1e12, 0x1e24, 0x1e46, 0x1e5e, 0x1e7d, - 0x1e8c, 0x1ea1, 0x1eb6, 0x1eb6, 0x1eb6, 0x1ec8, 0x1ee9, 0x1ee9, - 0x1f04, 0x1f0d, 0x1f23, 0x1f35, 0x1f44, 0x1f56, 0x1f56, 0x1f6b, - 0x1f6b, 0x1f7a, 0x1f96, 0x1f96, 0x1fa5, 0x1fbe, 0x1fca, 0x1ff5, + 0x1c70, 0x1c70, 0x1c70, 0x1c82, 0x1c82, 0x1c91, 0x1c9d, 0x1cbf, + 0x1cbf, 0x1cdb, 0x1cf0, 0x1d02, 0x1d11, 0x1d1d, 0x1d2c, 0x1d2c, + 0x1d2c, 0x1d41, 0x1d41, 0x1d4d, 0x1d5f, 0x1d6e, 0x1d89, 0x1d95, + 0x1d95, 0x1da4, 0x1db3, 0x1dc5, 0x1dd1, 0x1dec, 0x1e08, 0x1e2d, + 0x1e39, 0x1e4b, 0x1e6f, 0x1e81, 0x1e96, 0x1ea5, 0x1eb7, 0x1ed9, + 0x1ef1, 0x1f13, 0x1f22, 0x1f37, 0x1f4c, 0x1f4c, 0x1f4c, 0x1f5e, + 0x1f7f, 0x1f82, 0x1f9d, 0x1fa6, 0x1fbc, 0x1fce, 0x1fdd, 0x1fef, + 0x1fef, 0x2004, 0x2019, 0x2028, 0x2044, 0x2044, 0x2053, 0x206c, // Entry 1C0 - 1FF - 0x2010, 0x2028, 0x203a, 0x204c, 0x2058, 0x2080, 0x209b, 0x20aa, - 0x20c5, 0x20e9, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x2117, 0x2117, - 0x212f, 0x212f, 0x212f, 0x2144, 0x2144, 0x216f, 0x217b, 0x217b, - 0x2196, 0x21ab, 0x21c6, 0x21c6, 0x21c6, 0x21d8, 0x21ea, 0x21ea, - 0x21ea, 0x21ea, 0x2205, 0x220e, 0x2220, 0x222f, 0x225a, 0x226f, - 0x227e, 0x2290, 0x2290, 0x2290, 0x229f, 0x22ba, 0x22cf, 0x22cf, - 0x22f4, 0x22f4, 0x2300, 0x2300, 0x2312, 0x2340, 0x235c, 0x235c, - 0x2374, 0x237d, 0x237d, 0x238f, 0x238f, 0x238f, 0x23ae, 0x23ca, + 0x2078, 0x20a3, 0x20be, 0x20d6, 0x20e8, 0x20fa, 0x2106, 0x212e, + 0x2149, 0x2158, 0x2173, 0x2197, 0x21a9, 0x21a9, 0x21d1, 0x21d1, + 0x21d1, 0x21ed, 0x21ed, 0x2205, 0x2205, 0x2205, 0x221a, 0x2238, + 0x2263, 0x226f, 0x226f, 0x228a, 0x229f, 0x22ba, 0x22ba, 0x22ba, + 0x22cc, 0x22de, 0x22de, 0x22de, 0x22de, 0x22f9, 0x2302, 0x2314, + 0x231d, 0x2348, 0x235d, 0x236c, 0x237e, 0x237e, 0x2399, 0x23a8, + 0x23c3, 0x23d8, 0x23d8, 0x23fd, 0x23fd, 0x2409, 0x2409, 0x241b, + 0x2449, 0x2465, 0x2465, 0x247d, 0x2486, 0x2486, 0x2498, 0x2498, // Entry 200 - 23F - 0x23e6, 0x2408, 0x2420, 0x2438, 0x245d, 0x246c, 0x246c, 0x246c, - 0x247e, 0x248a, 0x24a2, 0x24ba, 0x24e5, 0x24f7, 0x24f7, 0x2503, - 0x2515, 0x2521, 0x2533, 0x2542, 0x2557, 0x2560, 0x2575, 0x2575, - 0x2590, 0x25a2, 0x25a2, 0x25b7, 0x25dc, 0x25f5, 0x25f5, 0x25f5, - 0x25f5, 0x260d, 0x262c, 0x2644, 0x2656, 0x2668, 0x2680, 0x26c4, - 0x26d9, 0x26f4, 0x270f, 0x2718, 0x2721, 0x2721, 0x2721, 0x2721, - 0x2721, 0x2730, 0x2730, 0x2742, 0x2742, 0x2751, 0x275d, 0x2769, - 0x2787, 0x2787, 0x279c, 0x279c, 0x27a8, 0x27b1, 0x27c0, 0x27c0, + 0x2498, 0x24b7, 0x24d3, 0x24ef, 0x2511, 0x2529, 0x2541, 0x2566, + 0x2575, 0x2581, 0x2581, 0x2593, 0x259f, 0x25b7, 0x25cf, 0x25fa, + 0x260c, 0x260c, 0x2618, 0x262a, 0x2636, 0x2648, 0x2657, 0x266c, + 0x2675, 0x268a, 0x268a, 0x26a5, 0x26c3, 0x26c3, 0x26d8, 0x26fd, + 0x2716, 0x2716, 0x2728, 0x2728, 0x2740, 0x275f, 0x2777, 0x2789, + 0x279b, 0x27b3, 0x27f7, 0x280c, 0x2827, 0x2842, 0x284b, 0x2854, + 0x2854, 0x2854, 0x2854, 0x2854, 0x2863, 0x2863, 0x2875, 0x288a, + 0x28a5, 0x28b4, 0x28c0, 0x28de, 0x28e1, 0x28f6, 0x28f6, 0x2902, // Entry 240 - 27F - 0x27c0, 0x27c0, 0x27d8, 0x27ed, 0x2814, 0x2814, 0x2826, 0x2876, - 0x2882, 0x28d3, 0x28df, 0x291d, 0x291d, 0x2948, 0x2971, 0x29ab, - 0x29dc, 0x2a0a, 0x2a38, 0x2a73, 0x2aa1, 0x2acf, 0x2acf, 0x2afa, - 0x2b1c, 0x2b38, 0x2b4d, 0x2b87, 0x2bbb, 0x2bd6, 0x2c01, 0x2c29, - 0x2c51, 0x2c7c, -} // Size: 1244 bytes - -var heLangStr string = "" + // Size: 7130 bytes + 0x290b, 0x291a, 0x2932, 0x2944, 0x2944, 0x295c, 0x2971, 0x2998, + 0x2998, 0x29aa, 0x29fa, 0x2a06, 0x2a57, 0x2a63, 0x2aa1, 0x2aa1, + 0x2acc, 0x2af5, 0x2b2f, 0x2b60, 0x2b8e, 0x2bbc, 0x2bf7, 0x2c25, + 0x2c53, 0x2c53, 0x2c7e, 0x2ca0, 0x2cbc, 0x2cd1, 0x2d0b, 0x2d3f, + 0x2d5a, 0x2d85, 0x2dad, 0x2dd5, 0x2e00, +} // Size: 1250 bytes + +const heLangStr string = "" + // Size: 7096 bytes "אפאריתאבחזיתאבסטןאפריקאנסאקאןאמהריתאראגוניתערביתאסאמיתאבאריתאיימאריתאזרי" + "תבשקיריתבלארוסיתבולגריתביסלמהבמבארהבנגליתטיבטיתברטוניתבוסניתקטלאניתצ׳צ׳" + - "ניתצ׳מורוקורסיקניתקריצ׳כיתסלאבית כנסייתית עתיקהצ׳ובאשולשיתדניתגרמניתדיב" + - "הידזונקהאווהיווניתאנגליתאספרנטוספרדיתאסטוניתבסקיתפרסיתפולהפיניתפיג׳יתפא" + - "רואזיתצרפתיתפריזיתאיריתגאלית סקוטיתגליציאניתגוארניגוג׳ראטיתמאניתהאוסהעב" + - "ריתהינדיהארי מוטוקרואטיתהאיטיתהונגריתארמניתהררו\u200fאינטרלינגואהאינדונ" + - "זיתאינטרלינגהאיגבוסיצ׳ואן ייאינופיאקאידואיסלנדיתאיטלקיתאינוקטיטוטיפניתי" + - "אווניתגאורגיתקונגוקיקויוקואניאמהקזחיתקאלאליסוטיתקמריתקנאדהקוריאניתקאנור" + - "יקשמיריתכורדיתקומיקורניתקירגיזיתלטיניתלוקסמבורגיתגאנדהלימבורגישלינגלהלא" + - "יתליטאיתלובה-קטנגהלטביתמלגשיתמרשאלסמאוריתמקדוניתמלאיאלםמונגוליתמרטהימלא" + - "יתמלטיתבורמזיתנאוריתצפון נדבלהנפאליתנדונגההולנדיתנורווגית חדשהנורווגית " + - "ספרותיתדרום נדבלהנבחוניאנג׳האוקסיטניתאוג׳יבווהאורומואוריהאוסטיתפנג׳אבית" + - "פאליפולניתפאשטופורטוגליתקצ׳ואהרומאנשקירונדירומניתרוסיתקינירואנדהסנסקריט" + - "סרדיניתסינדהיתלאפית צפוניתסנגוסינהלהסלובקיתסלובניתסמואיתשונהסומליתאלבני" + - "תסרביתסיסוואטיססות׳וסונדניתשוודיתסווהיליתטמיליתטלוגוטג׳יקיתתאיתטיגרינאי" + - "תטורקמניתטוניסיהטונגןטורקיתטסונגהטטריתטהיטיתאויגהוראוקראיניתאורדואוזבקי" + - "תוונדהויאטנמית\u200fוולאפיקוואלוןג׳ולוףקסוסהיידישיורובהז׳ואנגסיניתזולוא" + - "כינזיתאקוליאדנמהאדיגיתאפריהיליאהייםאינואכדיתאלאוטאלטאי דרומיתאנגלית עתי" + - "קהאנג׳יקהארמיתאראוקניתארפהוארוואקאסואסטוריתאוואדיתבאלוצ׳יבלינזיתבווארית" + - "בסאאבאקסגומלבז׳הבמבהבנהבאפוטבוג׳פוריביקולביניקוםסיקסיקהבראג׳בודואקוסהבו" + - "ריאטבוגינזיתבולובליןמדומבהקאדוקאריבקאיוגהאטסםקבואנוצ׳יגהצ׳יבצ׳הצ׳אגאטאי" + - "צ׳וקסהמאריניב צ׳ינוקצ׳וקטאוצ׳יפוויאןצ׳רוקישאייןכורדית סוראניתקופטיתטטרי" + - "ת של קריםקשוביאןדקוטהדרגווהטאיטהדלאוורסלאביתדוגריבדינקהזארמהדוגריסורבית" + - " נמוכהדואלההולנדית תיכונההולה-פוניידיולהדזאנגהאמבואפיקמצרית עתיקהאקיוקעי" + - "למיתאנגלית תיכונהאוונדופנגפיליפיניתפוןצרפתית תיכונהצרפתית עתיקהפריזית צ" + - "פוניתפריזיאן מזרחיתפריוליתגאגגאוזיתגאיוגבאיהגעזגילברטזיתגרמנית בינונית-" + - "גבוההגרמנית עתיקה גבוההגונדיגורונטאלוגותיתגרבויוונית עתיקהגרמנית שוויצר" + - "יתגוסיגוויצ׳יןהאידההוואיתהיליגאינוןחיתיתמונגסורבית גבוהההופהאיבאןאיביבי" + - "ואילוקואינגושיתלויבאןנגומהמצ׳אמהפרסית יהודיתערבית יהודיתקארא-קלפאקקבילה" + - "קצ׳יןג׳יוקמבהקאוויקברדיתקנמבוטיאפמקונדהקאבוורדיאנוקורוקאסיקוטאנזיתקוירה" + - " צ׳יניקאקוקאלנג׳יןקימבונדוקומי-פרמיאקיתקונקאניקוסראיאןקפלהקראצ׳י-בלקרקאר" + - "ליתקורוקשמבאלהבאפיהקולוניאןקומיקקוטנאילדינולאנגילנדהלמבהלזגיתלקוטהמונגו" + - "לוזילובה, לולואהלואיסנולונדהלואולושאילויהמדורסהמאפאמאגאהיתמאיטיליתמקסאר" + - "מנדינגומאסאיתמאבאמוקשהמנדארמנדהמרומוריסייןאירית תיכונהמקואה-מיטומטאמיקמ" + - "קמיננגקבאומנצ׳ומניפוריתמוהוקמוסימונדאנגמספר שפותקריקמירנדזיתמרווארימאיי" + - "ןארזיהנפוליטניתנאמהגרמנית תחתיתנוואריניאסניואיאןקוואסיונגיאמבוןנוגאי" + - "\u200fנורדית עתיקהנ׳קוסוטו הצפוניתנוארנווארית קלאסיתניאמווזיניאנקולהניור" + - "ונזימהאוסג׳הטורקית עותומניתפנגסינאןפלאביפמפאניהפפיאמנטופלוואןפרסית עתיק" + - "הפניקיתפונפיאןפרובנסאל עתיקהקיצ׳הראג׳סטןרפאנויררוטונגאןרומבורומאניתארומ" + - "ניתרוואסנדאווהסאחהארמית שומרוניתסמבורוססאקסאנטלינגמבאיסאנגוסיציליאניתסק" + - "וטיתכורדית דרומיתסנקהסנהסלקופקויראבורו סניאירית עתיקהטצ׳להיטשאןערבית צ׳" + - "אדיתסידמוסאמי דרומיתלולה סאמיאינארי סאמיסקולט סאמיסונינקהסוגדיאןסרנאן ט" + - "ונגוסררסאהוסוקומהסוסושומריתסירית קלאסיתסוריתטימנהטסוטרנוטטוםטיגריתטיבטו" + - "קלאוקלינגוןטלינגיטטמאשקניאסה טונגהטוק פיסיןטרוקוטסימשיאןטומבוקהטובאלוטס" + - "וואקטוביניתטמזייט של מרכז מרוקואודמורטאוגריתיתאומבונדורוטואיווטיקוונג׳ו" + - "וואלסרוולאמוווראיוואשווורלפיריקלמיקסוגהיאויאפזיתיאנגבןימבהקנטונזיתזאפוט" + - "קבליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן לשוניזאזאערבית ספרותי" + - "תגרמנית אוסטריתגרמנית שוויצרית (גבוהה)אנגלית אוסטרליתאנגלית קנדיתאנגלית" + - " בריטיתאנגלית אמריקאיתספרדית לטינו־אמריקאיתספרדית אירופאיתספרדית מקסיקני" + - "תצרפתית קנדיתצרפתית שוויצריתסקסונית תחתיתפלמיתפורטוגלית ברזילאיתפורטוגל" + - "ית אירופאיתמולדביתסרבו-קרואטיתסווהילי קונגולטזיתסינית מפושטתסינית מסורת" + - "ית" - -var heLangIdx = []uint16{ // 610 elements + "ניתצ׳מורוקורסיקניתקריצ׳כיתסלאבית כנסייתית עתיקהצ׳ובאשוולשיתדניתגרמניתדי" + + "בהידזונקהאווהיווניתאנגליתאספרנטוספרדיתאסטוניתבסקיתפרסיתפולהפיניתפיג׳יתפ" + + "ארואזיתצרפתיתפריזית מערביתאיריתגאלית סקוטיתגליציאניתגוארניגוג׳ארטימאנית" + + "האוסהעבריתהינדיהירי מוטוקרואטיתקריאולית (האיטי)הונגריתארמניתהררו\u200fא" + + "ינטרלינגואהאינדונזיתאינטרלינגהאיגבוסצ׳ואן ייאינופיאקאידואיסלנדיתאיטלקית" + + "אינוקטיטוטיפניתיאוואיתגאורגיתקונגוקיקויוקואניאמהקזחיתגרינלנדיתחמריתקנאד" + + "הקוריאניתקאנוריקשמיריתכורדיתקומיקורניתקירגיזיתלטיניתלוקסמבורגיתגאנדהלימ" + + "בורגיתלינגלהלאוליטאיתלובה-קטנגהלטביתמלגשיתמרשליתמאוריתמקדוניתמליאלאםמונ" + + "גוליתמראטהימלאיתמלטיתבורמזיתנאוריתנדבלה צפוניתנפאליתנדונגההולנדיתנורווג" + + "ית חדשהנורווגית ספרותיתנדבלה דרומיתנאוואחוניאנג׳האוקסיטניתאוג׳יבווהאורו" + + "מואוריהאוסטיתפנג׳אביפאליפולניתפאשטופורטוגזיתקצ׳ואהרומאנשקירונדירומניתרו" + + "סיתקנירואנדיתסנסקריטסרדיניתסינדהיתסמי צפוניתסנגוסינהלהסלובקיתסלובניתסמו" + + "איתשונהסומליתאלבניתסרביתסאווזיסותו דרומיתסונדנזיתשוודיתסווהיליטמיליתטלו" + + "גוטג׳יקיתתאיתתיגריניתטורקמניתסוואנהטונגאיתטורקיתטסונגהטטריתטהיטיתאויגור" + + "אוקראיניתאורדואוזבקיתוונדהויאטנמית\u200fוולאפיקוואלוןוולוףקוסהיידישיורו" + + "בהזואנגסיניתזולואכינזיתאקוליאדנמהאדיגיתאפריהיליאהייםאינואכדיתאלאוטאלטאי" + + " דרומיתאנגלית עתיקהאנג׳יקהארמיתאראוקניתארפהוארוואקאסואסטוריתאוואדיתבאלוצ" + + "׳יבלינזיתבוואריתבסאאבמוםגומאלהבז׳הבמבהבנהבאפוטבאלוצ׳י מערביתבוג׳פוריביק" + + "ולביניקוםסיקסיקהבראג׳בודואקוסהבוריאטבוגינזיתבולובליןמדומבהקאדוקאריבקאיו" + + "גהאטסםקבואנוצ׳יגהצ׳יבצ׳הצ׳אגאטאיצ׳וקסהמאריניב צ׳ינוקצ׳וקטאוצ׳יפוויאןצ׳ר" + + "וקישאייןכורדית סוראניתקופטיתטטרית של קריםקריאולית (סיישל)קשוביתדקוטהדרג" + + "ווהטאיטהדלאוורסלאביתדוגריבדינקהזארמהדוגריסורבית נמוכהדואלההולנדית תיכונ" + + "הג׳ולה פוניתדיולהדזאנגהאמבואפיקמצרית עתיקהאקיוקעילמיתאנגלית תיכונהאוונד" + + "ופנגפיליפיניתפוןצרפתית תיכונהצרפתית עתיקהפריזית צפוניתפריזית מזרחיתפריו" + + "ליתגאגגאוזיתסינית גאןגאיוגבאיהגעזקיריבטיתגרמנית בינונית-גבוההגרמנית עתי" + + "קה גבוההגונדיגורונטאלוגותיתגרבויוונית עתיקהגרמנית שוויצריתגוסיגוויצ׳ןהא" + + "ידהסינית האקההוואיתהיליגאינוןחתיתהמונגסורבית גבוההסינית שיאנגהופהאיבאןא" + + "יביביואילוקואינגושיתלוז׳באןנגומבהמאקאמהפרסית יהודיתערבית יהודיתקארא-קלפ" + + "אקקבילהקצ׳יןג׳וקמבהקאוויקברדיתקנמבוטיאפמקונדהקאבוורדיאנוקורוקהאסיקוטאנז" + + "יתקוירה צ׳יניקאקוקלנג׳יןקימבונדוקומי-פרמיאקיתקונקאניקוסראיאןקפלהקראצ׳י-" + + "בלקרקארליתקורוקשמבאלהבאפיהקולוניאןקומיקיתקוטנאילדינולאנגילנדהלמבהלזגיתל" + + "קוטהמונגולוזיתלורית צפוניתלובה-לולואהלויסנולונדהלואומיזולויהמדורזיתמאפא" + + "המאגאהיתמאיטיליתמקסארמנדינגומסאיתמאבאמוקשהמנדארמנדהמרוקריאולית מאוריציא" + + "ניתאירית תיכונהמאקוואה מטומטאמיקמקמיננגקבאומנצ׳ומניפוריתמוהוקמוסימונדאנ" + + "גמספר שפותקריקמירנדזיתמרווארימאייןארזיהמאזאנדראניסינית מין נאןנפוליטנית" + + "נאמהגרמנית תחתיתנוואריניאסניואןקוואסיונגיאמבוןנוגאי\u200fנורדית עתיקהנ׳" + + "קוסותו צפוניתנוארנווארית קלאסיתניאמווזיניאנקולהניורונזימהאוסג׳טורקית עו" + + "תומניתפנגסינאןפלאביפמפאניהפפיאמנטופלוואןניגרית פידג׳יתפרסית עתיקהפיניקי" + + "תפונפיאןפרוסיתפרובנסאל עתיקהקיצ׳הראג׳סטאנירפאנויררוטונגאןרומבורומאניארו" + + "מניתראווהסנדאווהסאחהארמית שומרוניתסמבורוסאסקסאנטאלינגמבאיסאנגוסיציליאני" + + "תסקוטיתכורדית דרומיתסנקהסנהסלקופקויראבורו סניאירית עתיקהשילהשאןערבית צ׳" + + "אדיתסידאמוסאמי דרומיתלולה סאמיאינארי סאמיסקולט סאמיסונינקהסוגדיאןסרנאן " + + "טונגוסררסאהוסוקומהסוסושומריתסירית קלאסיתסוריתטימנהטסוטרנוטטוםטיגריתטיבט" + + "וקלאוקלינגוןטלינגיטטמאשקניאסה טונגהטוק פיסיןטרוקוטסימשיאןטומבוקהטובאלוט" + + "סוואקטוביניתטמזייט של מרכז מרוקואודמורטאוגריתיתאומבונדורוטוואיווטיקוונג" + + "׳ווואלסרווליאטהווראיוואשווורלפיריסינית ווקלמיקיתסוגהיאויאפזיתיאנגבןימבה" + + "קנטונזיתזאפוטקבליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן לשוניזאז" + + "אערבית ספרותיתגרמנית (שוויץ)אנגלית (בריטניה)צרפתית (שוויץ)סקסונית תחתית" + + "פלמיתמולדביתסרבו-קרואטיתסווהילי קונגוסינית פשוטהסינית מסורתית" + +var heLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0018, 0x0022, 0x0032, 0x003a, 0x0046, 0x0056, 0x0060, 0x006c, 0x0078, 0x0088, 0x0092, 0x00a0, 0x00b0, 0x00be, 0x00ca, 0x00d6, 0x00e2, 0x00ee, 0x00fc, 0x0108, 0x0116, 0x0124, - 0x0130, 0x0142, 0x0148, 0x0152, 0x017a, 0x0186, 0x0190, 0x0198, - 0x01a4, 0x01ae, 0x01ba, 0x01c2, 0x01ce, 0x01da, 0x01e8, 0x01f4, - 0x0202, 0x020c, 0x0216, 0x021e, 0x0228, 0x0234, 0x0244, 0x0250, - 0x025c, 0x0266, 0x027d, 0x028f, 0x029b, 0x02ad, 0x02b7, 0x02c1, - 0x02cb, 0x02d5, 0x02e6, 0x02f4, 0x0300, 0x030e, 0x031a, 0x0322, + 0x0130, 0x0142, 0x0148, 0x0152, 0x017a, 0x0186, 0x0192, 0x019a, + 0x01a6, 0x01b0, 0x01bc, 0x01c4, 0x01d0, 0x01dc, 0x01ea, 0x01f6, + 0x0204, 0x020e, 0x0218, 0x0220, 0x022a, 0x0236, 0x0246, 0x0252, + 0x026b, 0x0275, 0x028c, 0x029e, 0x02aa, 0x02ba, 0x02c4, 0x02ce, + 0x02d8, 0x02e2, 0x02f3, 0x0301, 0x031e, 0x032c, 0x0338, 0x0340, // Entry 40 - 7F - 0x033d, 0x034f, 0x0363, 0x036d, 0x0380, 0x0390, 0x0398, 0x03a8, - 0x03b6, 0x03ca, 0x03d4, 0x03e2, 0x03f0, 0x03fa, 0x0406, 0x0416, - 0x0420, 0x0436, 0x0440, 0x044a, 0x045a, 0x0466, 0x0474, 0x0480, - 0x0488, 0x0494, 0x04a4, 0x04b0, 0x04c6, 0x04d0, 0x04e2, 0x04ee, - 0x04f6, 0x0502, 0x0515, 0x051f, 0x052b, 0x0537, 0x0543, 0x0551, - 0x055f, 0x056f, 0x0579, 0x0583, 0x058d, 0x059b, 0x05a7, 0x05ba, - 0x05c6, 0x05d2, 0x05e0, 0x05f9, 0x0618, 0x062b, 0x0633, 0x0641, - 0x0653, 0x0665, 0x0671, 0x067b, 0x0687, 0x0697, 0x069f, 0x06ab, + 0x035b, 0x036d, 0x0381, 0x038b, 0x039c, 0x03ac, 0x03b4, 0x03c4, + 0x03d2, 0x03e6, 0x03f0, 0x03fe, 0x040c, 0x0416, 0x0422, 0x0432, + 0x043c, 0x044e, 0x0458, 0x0462, 0x0472, 0x047e, 0x048c, 0x0498, + 0x04a0, 0x04ac, 0x04bc, 0x04c8, 0x04de, 0x04e8, 0x04fa, 0x0506, + 0x050c, 0x0518, 0x052b, 0x0535, 0x0541, 0x054d, 0x0559, 0x0567, + 0x0575, 0x0585, 0x0591, 0x059b, 0x05a5, 0x05b3, 0x05bf, 0x05d6, + 0x05e2, 0x05ee, 0x05fc, 0x0615, 0x0634, 0x064b, 0x0659, 0x0667, + 0x0679, 0x068b, 0x0697, 0x06a1, 0x06ad, 0x06bb, 0x06c3, 0x06cf, // Entry 80 - BF - 0x06b5, 0x06c7, 0x06d3, 0x06df, 0x06ed, 0x06f9, 0x0703, 0x0717, - 0x0725, 0x0733, 0x0741, 0x0758, 0x0760, 0x076c, 0x077a, 0x0788, - 0x0794, 0x079c, 0x07a8, 0x07b4, 0x07be, 0x07ce, 0x07da, 0x07e8, - 0x07f4, 0x0804, 0x0810, 0x081a, 0x0828, 0x0830, 0x0842, 0x0852, - 0x0860, 0x086a, 0x0876, 0x0882, 0x088c, 0x0898, 0x08a6, 0x08b8, - 0x08c2, 0x08d0, 0x08da, 0x08ea, 0x08fb, 0x0907, 0x0913, 0x091d, - 0x0927, 0x0933, 0x093f, 0x0949, 0x0951, 0x095f, 0x0969, 0x0973, - 0x097f, 0x097f, 0x098f, 0x0999, 0x09a1, 0x09ab, 0x09ab, 0x09b5, + 0x06d9, 0x06eb, 0x06f7, 0x0703, 0x0711, 0x071d, 0x0727, 0x073b, + 0x0749, 0x0757, 0x0765, 0x0778, 0x0780, 0x078c, 0x079a, 0x07a8, + 0x07b4, 0x07bc, 0x07c8, 0x07d4, 0x07de, 0x07ea, 0x07ff, 0x080f, + 0x081b, 0x0829, 0x0835, 0x083f, 0x084d, 0x0855, 0x0865, 0x0875, + 0x0881, 0x088f, 0x089b, 0x08a7, 0x08b1, 0x08bd, 0x08c9, 0x08db, + 0x08e5, 0x08f3, 0x08fd, 0x090d, 0x091e, 0x092a, 0x0934, 0x093c, + 0x0946, 0x0952, 0x095c, 0x0966, 0x096e, 0x097c, 0x0986, 0x0990, + 0x099c, 0x099c, 0x09ac, 0x09b6, 0x09be, 0x09c8, 0x09c8, 0x09d2, // Entry C0 - FF - 0x09b5, 0x09cc, 0x09e3, 0x09f1, 0x09fb, 0x0a0b, 0x0a0b, 0x0a15, - 0x0a15, 0x0a21, 0x0a21, 0x0a21, 0x0a27, 0x0a27, 0x0a35, 0x0a35, - 0x0a43, 0x0a51, 0x0a5f, 0x0a6d, 0x0a75, 0x0a7d, 0x0a7d, 0x0a85, - 0x0a8d, 0x0a95, 0x0a95, 0x0a9b, 0x0aa5, 0x0aa5, 0x0aa5, 0x0ab5, - 0x0abf, 0x0ac7, 0x0ac7, 0x0acd, 0x0adb, 0x0adb, 0x0adb, 0x0ae5, - 0x0ae5, 0x0aed, 0x0af7, 0x0b03, 0x0b13, 0x0b1b, 0x0b23, 0x0b2f, - 0x0b37, 0x0b41, 0x0b4d, 0x0b55, 0x0b61, 0x0b6b, 0x0b79, 0x0b89, - 0x0b95, 0x0b9d, 0x0bb0, 0x0bbe, 0x0bd0, 0x0bdc, 0x0be6, 0x0c01, + 0x09d2, 0x09e9, 0x0a00, 0x0a0e, 0x0a18, 0x0a28, 0x0a28, 0x0a32, + 0x0a32, 0x0a32, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a44, 0x0a44, 0x0a52, + 0x0a52, 0x0a60, 0x0a6e, 0x0a7c, 0x0a8a, 0x0a92, 0x0a9a, 0x0a9a, + 0x0aa6, 0x0aae, 0x0ab6, 0x0ab6, 0x0abc, 0x0ac6, 0x0ac6, 0x0ae1, + 0x0af1, 0x0afb, 0x0b03, 0x0b03, 0x0b09, 0x0b17, 0x0b17, 0x0b17, + 0x0b21, 0x0b21, 0x0b29, 0x0b33, 0x0b3f, 0x0b4f, 0x0b57, 0x0b5f, + 0x0b6b, 0x0b73, 0x0b7d, 0x0b89, 0x0b91, 0x0b9d, 0x0ba7, 0x0bb5, + 0x0bc5, 0x0bd1, 0x0bd9, 0x0bec, 0x0bfa, 0x0c0c, 0x0c18, 0x0c22, // Entry 100 - 13F - 0x0c0d, 0x0c0d, 0x0c25, 0x0c33, 0x0c3d, 0x0c49, 0x0c53, 0x0c5f, - 0x0c6b, 0x0c77, 0x0c81, 0x0c8b, 0x0c95, 0x0cac, 0x0cac, 0x0cb6, - 0x0cd1, 0x0ce4, 0x0cee, 0x0cfa, 0x0d02, 0x0d0a, 0x0d0a, 0x0d1f, - 0x0d29, 0x0d35, 0x0d4e, 0x0d4e, 0x0d5a, 0x0d5a, 0x0d60, 0x0d72, - 0x0d72, 0x0d78, 0x0d78, 0x0d91, 0x0da8, 0x0da8, 0x0dc1, 0x0ddc, - 0x0dea, 0x0dee, 0x0dfc, 0x0dfc, 0x0e04, 0x0e0e, 0x0e0e, 0x0e14, - 0x0e26, 0x0e26, 0x0e4c, 0x0e6e, 0x0e6e, 0x0e78, 0x0e8a, 0x0e94, - 0x0e9c, 0x0eb3, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ed8, 0x0ee8, 0x0ef2, + 0x0c3d, 0x0c49, 0x0c49, 0x0c61, 0x0c7e, 0x0c8a, 0x0c94, 0x0ca0, + 0x0caa, 0x0cb6, 0x0cc2, 0x0cce, 0x0cd8, 0x0ce2, 0x0cec, 0x0d03, + 0x0d03, 0x0d0d, 0x0d28, 0x0d3d, 0x0d47, 0x0d53, 0x0d5b, 0x0d63, + 0x0d63, 0x0d78, 0x0d82, 0x0d8e, 0x0da7, 0x0da7, 0x0db3, 0x0db3, + 0x0db9, 0x0dcb, 0x0dcb, 0x0dd1, 0x0dd1, 0x0dea, 0x0e01, 0x0e01, + 0x0e1a, 0x0e33, 0x0e41, 0x0e45, 0x0e53, 0x0e64, 0x0e6c, 0x0e76, + 0x0e76, 0x0e7c, 0x0e8c, 0x0e8c, 0x0eb2, 0x0ed4, 0x0ed4, 0x0ede, + 0x0ef0, 0x0efa, 0x0f02, 0x0f19, 0x0f36, 0x0f36, 0x0f36, 0x0f3e, // Entry 140 - 17F - 0x0ef2, 0x0efe, 0x0efe, 0x0f12, 0x0f1c, 0x0f24, 0x0f3b, 0x0f3b, - 0x0f43, 0x0f4d, 0x0f5b, 0x0f67, 0x0f77, 0x0f77, 0x0f77, 0x0f83, - 0x0f8d, 0x0f99, 0x0fb0, 0x0fc7, 0x0fc7, 0x0fda, 0x0fe4, 0x0fee, - 0x0ff6, 0x0ffe, 0x1008, 0x1014, 0x101e, 0x1026, 0x1032, 0x1048, - 0x1048, 0x1050, 0x1050, 0x1058, 0x1068, 0x107d, 0x107d, 0x107d, - 0x1085, 0x1095, 0x10a5, 0x10be, 0x10cc, 0x10dc, 0x10e4, 0x10f9, - 0x10f9, 0x10f9, 0x1105, 0x110f, 0x111b, 0x1125, 0x1135, 0x113f, - 0x114b, 0x1155, 0x115f, 0x1167, 0x116f, 0x1179, 0x1179, 0x1179, + 0x0f4c, 0x0f56, 0x0f69, 0x0f75, 0x0f75, 0x0f89, 0x0f91, 0x0f9b, + 0x0fb2, 0x0fc7, 0x0fcf, 0x0fd9, 0x0fe7, 0x0ff3, 0x1003, 0x1003, + 0x1003, 0x1011, 0x101d, 0x1029, 0x1040, 0x1057, 0x1057, 0x106a, + 0x1074, 0x107e, 0x1084, 0x108c, 0x1096, 0x10a2, 0x10ac, 0x10b4, + 0x10c0, 0x10d6, 0x10d6, 0x10de, 0x10de, 0x10e8, 0x10f8, 0x110d, + 0x110d, 0x110d, 0x1115, 0x1123, 0x1133, 0x114c, 0x115a, 0x116a, + 0x1172, 0x1187, 0x1187, 0x1187, 0x1193, 0x119d, 0x11a9, 0x11b3, + 0x11c3, 0x11d1, 0x11dd, 0x11e7, 0x11f1, 0x11f9, 0x1201, 0x120b, // Entry 180 - 1BF - 0x1179, 0x1183, 0x1183, 0x118d, 0x1195, 0x1195, 0x1195, 0x11ab, - 0x11b9, 0x11c3, 0x11cb, 0x11d5, 0x11dd, 0x11dd, 0x11dd, 0x11e9, - 0x11f1, 0x11ff, 0x120f, 0x1219, 0x1227, 0x1233, 0x123b, 0x1245, - 0x124f, 0x1257, 0x125d, 0x126d, 0x1284, 0x1297, 0x129d, 0x12a7, - 0x12b9, 0x12c3, 0x12d3, 0x12dd, 0x12e5, 0x12e5, 0x12f3, 0x1304, - 0x130c, 0x131c, 0x132a, 0x132a, 0x1334, 0x133e, 0x133e, 0x133e, - 0x1350, 0x1358, 0x136f, 0x137b, 0x1383, 0x1391, 0x1391, 0x139f, - 0x13af, 0x13b9, 0x13d3, 0x13d3, 0x13db, 0x13f2, 0x13fa, 0x1415, + 0x120b, 0x120b, 0x120b, 0x1215, 0x1215, 0x121f, 0x1229, 0x1240, + 0x1240, 0x1255, 0x1261, 0x126b, 0x1273, 0x127b, 0x1283, 0x1283, + 0x1283, 0x1291, 0x129b, 0x12a9, 0x12b9, 0x12c3, 0x12d1, 0x12db, + 0x12e3, 0x12ed, 0x12f7, 0x12ff, 0x1305, 0x132c, 0x1343, 0x1358, + 0x135e, 0x1368, 0x137a, 0x1384, 0x1394, 0x139e, 0x13a6, 0x13a6, + 0x13b4, 0x13c5, 0x13cd, 0x13dd, 0x13eb, 0x13eb, 0x13f5, 0x13ff, + 0x1413, 0x142b, 0x143d, 0x1445, 0x145c, 0x1468, 0x1470, 0x147a, + 0x147a, 0x1488, 0x1498, 0x14a2, 0x14bc, 0x14bc, 0x14c4, 0x14d9, // Entry 1C0 - 1FF - 0x1425, 0x1435, 0x143f, 0x1449, 0x1455, 0x1472, 0x1482, 0x148c, - 0x149a, 0x14aa, 0x14b6, 0x14b6, 0x14b6, 0x14b6, 0x14cb, 0x14cb, - 0x14d7, 0x14d7, 0x14d7, 0x14e5, 0x14e5, 0x1500, 0x150a, 0x150a, - 0x1518, 0x1524, 0x1536, 0x1536, 0x1536, 0x1540, 0x154e, 0x154e, - 0x154e, 0x154e, 0x155c, 0x1564, 0x1572, 0x157a, 0x1595, 0x15a1, - 0x15a9, 0x15b5, 0x15b5, 0x15c1, 0x15cb, 0x15df, 0x15eb, 0x15eb, - 0x1604, 0x160c, 0x1612, 0x1612, 0x161c, 0x1635, 0x164a, 0x164a, - 0x1658, 0x165e, 0x1675, 0x167f, 0x167f, 0x167f, 0x1694, 0x16a5, + 0x14e1, 0x14fc, 0x150c, 0x151c, 0x1526, 0x1530, 0x153a, 0x1557, + 0x1567, 0x1571, 0x157f, 0x158f, 0x159b, 0x159b, 0x15b6, 0x15b6, + 0x15b6, 0x15cb, 0x15cb, 0x15d9, 0x15d9, 0x15d9, 0x15e7, 0x15f3, + 0x160e, 0x1618, 0x1618, 0x162a, 0x1636, 0x1648, 0x1648, 0x1648, + 0x1652, 0x165e, 0x165e, 0x165e, 0x165e, 0x166c, 0x1676, 0x1684, + 0x168c, 0x16a7, 0x16b3, 0x16bb, 0x16c9, 0x16c9, 0x16d5, 0x16df, + 0x16f3, 0x16ff, 0x16ff, 0x1718, 0x1720, 0x1726, 0x1726, 0x1730, + 0x1749, 0x175e, 0x175e, 0x1766, 0x176c, 0x1783, 0x178f, 0x178f, // Entry 200 - 23F - 0x16ba, 0x16cd, 0x16db, 0x16e9, 0x16fe, 0x1704, 0x170c, 0x170c, - 0x1718, 0x1720, 0x172c, 0x172c, 0x1743, 0x174d, 0x174d, 0x174d, - 0x1757, 0x175d, 0x1765, 0x176d, 0x1779, 0x177f, 0x178b, 0x178b, - 0x1799, 0x17a7, 0x17a7, 0x17b1, 0x17c6, 0x17d7, 0x17d7, 0x17e1, - 0x17e1, 0x17f1, 0x17f1, 0x17ff, 0x180b, 0x1817, 0x1825, 0x184a, - 0x1858, 0x1868, 0x1878, 0x187e, 0x1884, 0x1884, 0x1884, 0x1884, - 0x1884, 0x188e, 0x188e, 0x189a, 0x18a6, 0x18b2, 0x18bc, 0x18c6, - 0x18d6, 0x18d6, 0x18e0, 0x18e0, 0x18e8, 0x18ee, 0x18fa, 0x1906, + 0x178f, 0x17a4, 0x17b5, 0x17ca, 0x17dd, 0x17eb, 0x17f9, 0x180e, + 0x1814, 0x181c, 0x181c, 0x1828, 0x1830, 0x183c, 0x183c, 0x1853, + 0x185d, 0x185d, 0x185d, 0x1867, 0x186d, 0x1875, 0x187d, 0x1889, + 0x188f, 0x189b, 0x189b, 0x18a9, 0x18b7, 0x18b7, 0x18c1, 0x18d6, + 0x18e7, 0x18e7, 0x18f1, 0x18f1, 0x1901, 0x1901, 0x190f, 0x191b, + 0x1927, 0x1935, 0x195a, 0x1968, 0x1978, 0x1988, 0x198e, 0x1996, + 0x1996, 0x1996, 0x1996, 0x1996, 0x19a0, 0x19a0, 0x19ac, 0x19b8, + 0x19c6, 0x19d0, 0x19da, 0x19ea, 0x19f9, 0x1a07, 0x1a07, 0x1a0f, // Entry 240 - 27F - 0x190e, 0x190e, 0x191e, 0x192a, 0x193e, 0x193e, 0x1948, 0x1970, - 0x1978, 0x1992, 0x199a, 0x19b3, 0x19b3, 0x19ce, 0x19f8, 0x1a15, - 0x1a2c, 0x1a45, 0x1a62, 0x1a8b, 0x1aa8, 0x1ac5, 0x1ac5, 0x1adc, - 0x1af9, 0x1b12, 0x1b1c, 0x1b3f, 0x1b62, 0x1b70, 0x1b87, 0x1baa, - 0x1bc1, 0x1bda, -} // Size: 1244 bytes - -var hiLangStr string = "" + // Size: 11180 bytes + 0x1a15, 0x1a21, 0x1a2d, 0x1a35, 0x1a35, 0x1a45, 0x1a51, 0x1a65, + 0x1a65, 0x1a6f, 0x1a97, 0x1a9f, 0x1ab9, 0x1ac1, 0x1ada, 0x1ada, + 0x1ada, 0x1af3, 0x1af3, 0x1af3, 0x1b10, 0x1b10, 0x1b10, 0x1b10, + 0x1b10, 0x1b10, 0x1b10, 0x1b29, 0x1b42, 0x1b4c, 0x1b4c, 0x1b4c, + 0x1b5a, 0x1b71, 0x1b8a, 0x1b9f, 0x1bb8, +} // Size: 1250 bytes + +const hiLangStr string = "" + // Size: 11573 bytes "अफ़ारअब्ख़ाज़ियनअवस्ताईअफ़्रीकीअकनअम्हेरीअर्गोनीअरबीअसमियाअवेरिकआयमाराअज" + "़रबैजानीबशख़िरबेलारूसीबुल्गारियाईबिस्लामाबाम्बाराबंगालीतिब्बतीब्रेटनबो" + "स्नियाईकातालानचेचनकमोरोकोर्सीकनक्रीचेकचर्च साल्विकचूवाशवेल्शडेनिशजर्मन" + "दिवेहीज़ोन्गखाईवेयूनानीअंग्रेज़ीएस्पेरेंतोस्पेनीएस्टोनियाईबास्कफ़ारसीफ" + - "ुलाहफ़िनिशफ़ीजीफ़ैरोइज़फ़्रेंचपश्चिमी फ़्रिसियाईआइरिशस्काट्स् गायेलिक्" + - "गैलिशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिन्दीहिरी मोटूक्रोएशियाईहैतियाई" + - "हंगेरियाईआर्मेनियाईहरैरोईन्टरलिंगुआइंडोनेशियाईईन्टरलिंगुइईग्बोसिचुआन य" + - "ीइनुपियाक्इडौआइसलैंडिकइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकुय" + - "ूक्वान्यामाकज़ाख़कलालीसुतखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्न" + - "िशकिर्गीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटा" + - "ंगालातवियाईमालागासीमार्शलीज़माओरीमैसिडोनियाईमलयालममंगोलीयाईमराठीमलयमाल" + - "्टीज़बर्मीज़नाउरूउत्तरी देबेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्व" + - "ेजियाई बोकमालदक्षिण देबेलनावाजोन्यानजाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिक" + - "पंजाबीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन्दीरोमानियाईरूसीकिन्यारव" + - "ांडासंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस्लोवेनियाईसामो" + - "नशोणासोमालीअल्बानियाईसर्बियाईस्वातीसेसोथोसुंडानीस्वीडिशस्वाहिलीतमिलतेल" + - "ुगूताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितियनवि" + - "घुरयूक्रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायेहुद" + - "ीयोरूबाज़ुआंगचीनीज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्का" + - "दीअलेउतदक्षिणी अल्ताईपुरानी अंग्रेज़ीअंगिकाऐरेमेकमापूचेअराफाओअरावकअसुअ" + - "स्तुरियनअवधीबलूचीबालिनीसबसाबेजाबेम्बाबेनापश्चिमी बलोचीभोजपुरीबिकोलबिनी" + - "सिक्सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशिगाचिब्चाछगा" + - "ताईचूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानशेरोकीशेयेन्नसोरानी कुर्दिशकॉप्" + - "टिकक्रीमीन तुर्कीकाशुबियनदाकोतादार्गवातैताडिलैवेयरस्लेवडोग्रिबदिन्काझा" + - "र्माडोग्रीनिचला सॉर्बियनदुआलामध्य पुर्तगालीजोला-फोंईड्युलाएम्बुएफिकप्र" + - "ाचीन मिस्रीएकाजुकएलामाइटमध्यकालीन अंग्रेज़ीइवोन्डोफैन्गफ़िलिपीनोफॉनमध्" + - "यकालीन फ़्रांसीसीपुरातन फ़्रांसीसीउत्तरी फ्रीसीयनपूर्वी फ्रीसीयनफ्रीयु" + - "लीयानगागागौज़गायोग्बायागीज़गिल्बरतीसमध्यकालीन हाइ जर्मनपुरातन हाइ जर्म" + - "नगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन यूनानीस्विस जर्मनगुसीग्विच’इनहैडाहव" + - "ाईहिलिगेननहिताइतह्मॉंगऊपरी सॉर्बियनहूपाइबानइलोकोइंगुशलोज्बाननगोंबामैकह" + - "ैमेजुदेओ-पर्शियनजुदेओ-अरेबिककारा-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डियन" + - "त्यापमैकोंडकाबुवेर्दियानुकोरोखासीखोतानीसकोयरा चीनीकलेंजिनकिम्बन्दुकोमी" + - "-पर्मयाककोंकणीकोसरैनक्पेल्लैकराचय-बल्कारकरेलियनकुरूखशम्बालाबफिआकुमीककुते" + - "नाईलादीनोलांगिलाह्न्डालाम्बालेज़्घीयनलैकोटामोंगोलोज़ीउत्तरी लूरील्यूबा" + - "-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युईआमादुरीसमगाहीमैथिलीमकासरमन्डिन्गोमसाईम" + - "ोक्षमंधारमेन्डेमेरुमोरीस्येनमध्यकाल आइरिशमैखुवा-मीट्टोमेटामिकमैकमिनांग" + - "्काबाउमन्चुमणिपूरीमोहौकमोस्सीमुंडैंगविविध भाषाएँक्रीकमिरांडीमारवाड़ीएर" + - "्ज़यामाज़न्देरानीनीपोलिटननामानिचला जर्मननेवाड़ीनियासनियुआनक्वासिओनोगाई" + - "पुराना नॉर्सएन्कोउत्तरी सोथोनुएरपारम्परिक नेवारीन्यामवेज़ीन्यानकोलन्यो" + - "रोन्ज़ीमाओसेजओटोमान तुर्किशपंगासीनानपाह्लावीपाम्पान्गापापियामेन्टोपलोउ" + - "आनपुरानी फारसीफोएनिशियनपोह्नपिएनपुरानी प्रोवेन्सलकिशराजस्थानीरापानुईरा" + - "रोतोंगनरोम्बोरोमानीअरोमानियनरवासन्डावेयाकूतसामैरिटन अरैमिकसैम्बुरुसासा" + - "कसंतालीसैंगुसिसिलियनस्कॉट्सदक्षिणी कार्डिशसेनासेल्कपकोयराबोरो सेन्नीपु" + - "रानी आइरिशतैचेल्हितशैनसिदामोदक्षिण सामील्युल सामीइनारी सामीस्कोल्ट साम" + - "ीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनक्लासिकल सिरिएकस" + - "िरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतोकेलाऊक्लिंगनत्लिंगिततामाशेकन्यास" + - "ा टोन्गाटोक पिसिनत्सिमीशियनतम्बूकातुवालुटासवाकतुवीनियनमध्य एटलस तमाज़ि" + - "तउदमुर्तयुगैरिटिकउम्बुन्डुरूटवाईवॉटिकवुंजोवलामोवारैवाशोवॉल्पेरीकाल्मिक" + - "सोगायाओयापीसकैंटोनीज़ज़ेपोटेकब्लिसिम्बॉल्सज़ेनान्गामानक मोरक्कन तामाज़" + - "ाइटज़ूनीकोई भाषा सामग्री नहींज़ाज़ाआधुनिक मानक अरबीऑस्ट्रियाई जर्मनस्व" + - "िस उच्च जर्मनऑस्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिटिश अंग्रेज़ीअम" + - "ेरिकी अंग्रेज़ीलैटिन अमेरिकी स्पेनीयूरोपीय स्पेनिशमैक्सिकन स्पेनिशकनाड" + - "ाई फ़्रेंचस्विस फ़्रेंचनिचली सैक्सनफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय " + - "पुर्तगालीमोलडावियनसेर्बो-क्रोएशन्कांगो स्वाहिलीसरलीकृत चीनीपारंपरिक ची" + - "नी" - -var hiLangIdx = []uint16{ // 610 elements + "ुलाहफ़िनिशफ़ीजीफ़ैरोइज़फ़्रेंचपश्चिमी फ़्रिसियाईआइरिशस्कॉटिश गाएलिकगैल" + + "िशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिन्दीहिरी मोटूक्रोएशियाईहैतियाईहंग" + + "ेरियाईआर्मेनियाईहरैरोईन्टरलिंगुआइंडोनेशियाईईन्टरलिंगुइईग्बोसिचुआन यीइन" + + "ुपियाक्इडौआइसलैंडिकइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकुयूक्" + + "वान्यामाकज़ाख़कलालीसुतखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्निशक" + + "िर्गीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटांगा" + + "लातवियाईमालागासीमार्शलीज़माओरीमैसिडोनियाईमलयालममंगोलियाईमराठीमलयमाल्टी" + + "ज़बर्मीज़नाउरूउत्तरी देबेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्वेजि" + + "याई बोकमालदक्षिण देबेलनावाजोन्यानजाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिकपंज" + + "ाबीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन्दीरोमानियाईरूसीकिन्यारवांड" + + "ासंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस्लोवेनियाईसामोनशो" + + "णासोमालीअल्बानियाईसर्बियाईस्वातीसेसोथोसुंडानीस्वीडिशस्वाहिलीतमिलतेलुगू" + + "ताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितियनविघुर" + + "यूक्रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायहूदीयोर" + + "ूबाज़ुआंगचीनीज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्कादीअल" + + "ेउतदक्षिणी अल्ताईपुरानी अंग्रेज़ीअंगिकाऐरेमेकमापूचेअराफाओअरावकअसुअस्तु" + + "रियनअवधीबलूचीबालिनीसबसाबेजाबेम्बाबेनापश्चिमी बलोचीभोजपुरीबिकोलबिनीसिक्" + + "सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशिगाचिब्चाछगाताईच" + + "ूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानशेरोकीशेयेन्नसोरानी कुर्दिशकॉप्टिकक" + + "्रीमीन तुर्कीसेसेल्वा क्रिओल फ्रेंचकाशुबियनदाकोतादार्गवातैताडिलैवेयरस्" + + "लेवडोग्रिबदिन्काझार्माडोग्रीनिचला सॉर्बियनदुआलामध्यकालीन पुर्तगालीजोला" + + "-फोंईड्युलादज़ागाएम्बुएफिकप्राचीन मिस्रीएकाजुकएलामाइटमध्यकालीन अंग्रेज़ी" + + "इवोन्डोफैन्गफ़िलिपीनोफॉनमध्यकालीन फ़्रांसीसीपुरातन फ़्रांसीसीउत्तरी फ़" + + "्रीसियाईपूर्वी फ़्रीसियाईफ्रीयुलीयानगागागौज़गायोग्बायागीज़गिल्बरतीसमध्" + + "यकालीन हाइ जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन यूना" + + "नीस्विस जर्मनगुसीग्विच’इनहैडाहवाईहिलिगेननहिताइतह्मॉंगऊपरी सॉर्बियनहूपा" + + "इबानइबिबियोइलोकोइंगुशलोज्बाननगोंबामैकहैमेजुदेओ-पर्शियनजुदेओ-अरेबिककारा" + + "-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डियनत्यापमैकोंडकाबुवेर्दियानुकोरोखासीख" + + "ोतानीसकोयरा चीनीकाकोकलेंजिनकिम्बन्दुकोमी-पर्मयाककोंकणीकोसरैनक्पेलकराचय" + + "-बल्कारकरेलियनकुरूखशम्बालाबफिआकोलोनियाईकुमीकक्यूतनाईलादीनोलांगिलाह्न्डाल" + + "ाम्बालेज़्घीयनलैकोटामोंगोलोज़ीउत्तरी लूरील्यूबा-लुलुआलुइसेनोलुन्डाल्यु" + + "ओलुशाईल्युईआमादुरीसमगहीमैथिलीमकासरमन्डिन्गोमसाईमोक्षमंदारमेन्डेमेरुमोर" + + "ीस्येनमध्यकालीन आइरिशमैखुवा-मीट्टोमेटामिकमैकमिनांग्काबाउमन्चुमणिपुरीमो" + + "हौकमोस्सीमुंडैंगएकाधिक भाषाएँक्रीकमिरांडीमारवाड़ीएर्ज़यामाज़न्देरानीna" + + "nनीपोलिटननामानिचला जर्मननेवाड़ीनियासनियुआनक्वासिओगैम्बूनोगाईपुराना नॉर्स" + + "एन्कोउत्तरी सोथोनुएरपारम्परिक नेवारीन्यामवेज़ीन्यानकोलन्योरोन्ज़ीमाओसे" + + "जओटोमान तुर्किशपंगासीनानपाह्लावीपाम्पान्गापापियामेन्टोपलोउआननाइजीरियाई" + + " पिडगिनपुरानी फारसीफोएनिशियनपोह्नपिएनप्रुशियाईपुरानी प्रोवेन्सलकिशराजस्थ" + + "ानीरापानुईरारोतोंगनरोम्बोरोमानीअरोमानियनरवासन्डावेयाकूतसामैरिटन अरैमिक" + + "सैम्बुरुसासाकसंतालीन्गाम्बेसैंगुसिसिलियनस्कॉट्सदक्षिणी कार्डिशसेनासेल्" + + "कपकोयराबोरो सेन्नीपुरानी आइरिशतैचेल्हितशैनसिदामोदक्षिण सामील्युल सामीइ" + + "नारी सामीस्कोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसाहोसुकुमासुसु" + + "सुमेरियनकोमोरियनक्लासिकल सिरिएकसिरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतो" + + "केलाऊक्लिंगनत्लिंगिततामाशेकन्यासा टोन्गाटोक पिसिनतारोकोत्सिमीशियनतम्बू" + + "कातुवालुटासवाकतुवीनियनमध्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्बुन्डुरूटवाई" + + "वॉटिकवुंजोवाल्सरवलामोवारैवाशोवॉल्पेरीकाल्मिकसोगायाओयापीसयांगबेनयेंबाकै" + + "ंटोनीज़ज़ेपोटेकब्लिसिम्बॉल्सज़ेनान्गामानक मोरक्कन तामाज़ाइटज़ूनीकोई भा" + + "षा सामग्री नहींज़ाज़ाआधुनिक मानक अरबीऑस्ट्रियाई जर्मनस्विस उच्च जर्मनऑ" + + "स्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिटिश अंग्रेज़ीअमेरिकी अंग्रेज़" + + "ीलैटिन अमेरिकी स्पेनिशयूरोपीय स्पेनिशमैक्सिकन स्पेनिशकनाडाई फ़्रेंचस्व" + + "िस फ़्रेंचनिचली सैक्सनफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय पुर्तगालीमोलड" + + "ावियनसेर्बो-क्रोएशियाईकांगो स्वाहिलीसरलीकृत चीनीपारंपरिक चीनी" + +var hiLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0030, 0x0045, 0x005d, 0x0066, 0x007b, 0x0090, 0x009c, 0x00ae, 0x00c0, 0x00d2, 0x00f0, 0x0102, 0x011a, 0x013b, @@ -15602,818 +18794,840 @@ var hiLangIdx = []uint16{ // 610 elements 0x01ef, 0x0207, 0x0213, 0x021c, 0x023e, 0x024d, 0x025c, 0x026b, 0x027a, 0x028c, 0x02a4, 0x02ad, 0x02bf, 0x02da, 0x02f8, 0x030a, 0x0328, 0x0337, 0x0349, 0x0358, 0x036a, 0x0379, 0x0391, 0x03a6, - 0x03da, 0x03e9, 0x041a, 0x0432, 0x0447, 0x045c, 0x046e, 0x047a, - 0x048c, 0x049e, 0x04b7, 0x04d5, 0x04ea, 0x0505, 0x0523, 0x0532, + 0x03da, 0x03e9, 0x0411, 0x0429, 0x043e, 0x0453, 0x0465, 0x0471, + 0x0483, 0x0495, 0x04ae, 0x04cc, 0x04e1, 0x04fc, 0x051a, 0x0529, // Entry 40 - 7F - 0x0553, 0x0574, 0x0595, 0x05a4, 0x05bd, 0x05d8, 0x05e1, 0x05fc, - 0x060e, 0x0629, 0x063b, 0x0653, 0x066e, 0x067d, 0x068f, 0x06ad, - 0x06bf, 0x06d7, 0x06e3, 0x06f5, 0x070a, 0x0719, 0x072e, 0x0743, - 0x074f, 0x0764, 0x077c, 0x078b, 0x07ac, 0x07bb, 0x07d6, 0x07eb, - 0x07f4, 0x0812, 0x0837, 0x084f, 0x0867, 0x0882, 0x0891, 0x08b2, - 0x08c4, 0x08df, 0x08ee, 0x08f7, 0x090f, 0x0924, 0x0933, 0x0955, - 0x0967, 0x0979, 0x097f, 0x09bf, 0x09f3, 0x0a15, 0x0a27, 0x0a3c, - 0x0a4e, 0x0a63, 0x0a72, 0x0a84, 0x0a9c, 0x0aae, 0x0aba, 0x0ac9, + 0x054a, 0x056b, 0x058c, 0x059b, 0x05b4, 0x05cf, 0x05d8, 0x05f3, + 0x0605, 0x0620, 0x0632, 0x064a, 0x0665, 0x0674, 0x0686, 0x06a4, + 0x06b6, 0x06ce, 0x06da, 0x06ec, 0x0701, 0x0710, 0x0725, 0x073a, + 0x0746, 0x075b, 0x0773, 0x0782, 0x07a3, 0x07b2, 0x07cd, 0x07e2, + 0x07eb, 0x0809, 0x082e, 0x0846, 0x085e, 0x0879, 0x0888, 0x08a9, + 0x08bb, 0x08d6, 0x08e5, 0x08ee, 0x0906, 0x091b, 0x092a, 0x094c, + 0x095e, 0x0970, 0x0976, 0x09b6, 0x09ea, 0x0a0c, 0x0a1e, 0x0a33, + 0x0a45, 0x0a5a, 0x0a69, 0x0a7b, 0x0a93, 0x0aa5, 0x0ab1, 0x0ac0, // Entry 80 - BF - 0x0ad8, 0x0af3, 0x0b08, 0x0b1d, 0x0b2f, 0x0b4a, 0x0b56, 0x0b7a, - 0x0b8f, 0x0bad, 0x0bbc, 0x0bdb, 0x0bea, 0x0bfc, 0x0c11, 0x0c32, - 0x0c41, 0x0c4d, 0x0c5f, 0x0c7d, 0x0c95, 0x0ca7, 0x0cb9, 0x0cce, - 0x0ce3, 0x0cfb, 0x0d07, 0x0d19, 0x0d28, 0x0d31, 0x0d4f, 0x0d67, - 0x0d85, 0x0d94, 0x0da6, 0x0db5, 0x0dc4, 0x0ddc, 0x0deb, 0x0e0c, - 0x0e1b, 0x0e30, 0x0e42, 0x0e5a, 0x0e6f, 0x0e84, 0x0e96, 0x0ea5, - 0x0eb7, 0x0ec9, 0x0edb, 0x0ee7, 0x0ef6, 0x0f0b, 0x0f1a, 0x0f32, - 0x0f41, 0x0f41, 0x0f5c, 0x0f6e, 0x0f77, 0x0f8c, 0x0f8c, 0x0f9b, + 0x0acf, 0x0aea, 0x0aff, 0x0b14, 0x0b26, 0x0b41, 0x0b4d, 0x0b71, + 0x0b86, 0x0ba4, 0x0bb3, 0x0bd2, 0x0be1, 0x0bf3, 0x0c08, 0x0c29, + 0x0c38, 0x0c44, 0x0c56, 0x0c74, 0x0c8c, 0x0c9e, 0x0cb0, 0x0cc5, + 0x0cda, 0x0cf2, 0x0cfe, 0x0d10, 0x0d1f, 0x0d28, 0x0d46, 0x0d5e, + 0x0d7c, 0x0d8b, 0x0d9d, 0x0dac, 0x0dbb, 0x0dd3, 0x0de2, 0x0e03, + 0x0e12, 0x0e27, 0x0e39, 0x0e51, 0x0e66, 0x0e7b, 0x0e8d, 0x0e9c, + 0x0eab, 0x0ebd, 0x0ecf, 0x0edb, 0x0eea, 0x0eff, 0x0f0e, 0x0f26, + 0x0f35, 0x0f35, 0x0f50, 0x0f62, 0x0f6b, 0x0f80, 0x0f80, 0x0f8f, // Entry C0 - FF - 0x0f9b, 0x0fc3, 0x0ff1, 0x1003, 0x1015, 0x1027, 0x1027, 0x1039, - 0x1039, 0x1048, 0x1048, 0x1048, 0x1051, 0x1051, 0x106c, 0x106c, - 0x1078, 0x1087, 0x109c, 0x109c, 0x10a5, 0x10a5, 0x10a5, 0x10a5, - 0x10b1, 0x10c3, 0x10c3, 0x10cf, 0x10cf, 0x10cf, 0x10f4, 0x1109, - 0x1118, 0x1124, 0x1124, 0x1124, 0x113c, 0x113c, 0x113c, 0x1148, - 0x1148, 0x1154, 0x1154, 0x1169, 0x117b, 0x117b, 0x118a, 0x118a, - 0x119c, 0x11ab, 0x11ab, 0x11ba, 0x11cf, 0x11db, 0x11ed, 0x11ff, - 0x120e, 0x121a, 0x123c, 0x124e, 0x1269, 0x127b, 0x1290, 0x12b8, + 0x0f8f, 0x0fb7, 0x0fe5, 0x0ff7, 0x1009, 0x101b, 0x101b, 0x102d, + 0x102d, 0x102d, 0x103c, 0x103c, 0x103c, 0x1045, 0x1045, 0x1060, + 0x1060, 0x106c, 0x107b, 0x1090, 0x1090, 0x1099, 0x1099, 0x1099, + 0x1099, 0x10a5, 0x10b7, 0x10b7, 0x10c3, 0x10c3, 0x10c3, 0x10e8, + 0x10fd, 0x110c, 0x1118, 0x1118, 0x1118, 0x1130, 0x1130, 0x1130, + 0x113c, 0x113c, 0x1148, 0x1148, 0x115d, 0x116f, 0x116f, 0x117e, + 0x117e, 0x1190, 0x119f, 0x119f, 0x11ae, 0x11c3, 0x11cf, 0x11e1, + 0x11f3, 0x1202, 0x120e, 0x1230, 0x1242, 0x125d, 0x126f, 0x1284, // Entry 100 - 13F - 0x12cd, 0x12cd, 0x12f5, 0x130d, 0x131f, 0x1334, 0x1340, 0x1358, - 0x1367, 0x137c, 0x138e, 0x13a0, 0x13b2, 0x13da, 0x13da, 0x13e9, - 0x1411, 0x142a, 0x143c, 0x143c, 0x144b, 0x1457, 0x1457, 0x147f, - 0x1491, 0x14a6, 0x14dd, 0x14dd, 0x14f2, 0x14f2, 0x1501, 0x151c, - 0x151c, 0x1525, 0x1525, 0x155f, 0x1590, 0x1590, 0x15bb, 0x15e6, - 0x1607, 0x160d, 0x161f, 0x161f, 0x162b, 0x163d, 0x163d, 0x1649, - 0x1664, 0x1664, 0x1699, 0x16c5, 0x16c5, 0x16d4, 0x16f2, 0x1701, - 0x1713, 0x173b, 0x175a, 0x175a, 0x175a, 0x1766, 0x177e, 0x178a, + 0x12ac, 0x12c1, 0x12c1, 0x12e9, 0x1327, 0x133f, 0x1351, 0x1366, + 0x1372, 0x138a, 0x1399, 0x13ae, 0x13c0, 0x13d2, 0x13e4, 0x140c, + 0x140c, 0x141b, 0x1452, 0x146b, 0x147d, 0x148f, 0x149e, 0x14aa, + 0x14aa, 0x14d2, 0x14e4, 0x14f9, 0x1530, 0x1530, 0x1545, 0x1545, + 0x1554, 0x156f, 0x156f, 0x1578, 0x1578, 0x15b2, 0x15e3, 0x15e3, + 0x1614, 0x1645, 0x1666, 0x166c, 0x167e, 0x167e, 0x168a, 0x169c, + 0x169c, 0x16a8, 0x16c3, 0x16c3, 0x16f8, 0x1724, 0x1724, 0x1733, + 0x1751, 0x1760, 0x1772, 0x179a, 0x17b9, 0x17b9, 0x17b9, 0x17c5, // Entry 140 - 17F - 0x178a, 0x1796, 0x1796, 0x17ae, 0x17c0, 0x17d2, 0x17f7, 0x17f7, - 0x1803, 0x180f, 0x180f, 0x181e, 0x182d, 0x182d, 0x182d, 0x1842, - 0x1854, 0x1869, 0x188e, 0x18b0, 0x18b0, 0x18cc, 0x18db, 0x18ea, - 0x18f6, 0x1905, 0x1911, 0x192c, 0x192c, 0x193b, 0x194d, 0x1977, - 0x1977, 0x1983, 0x1983, 0x198f, 0x19a4, 0x19c0, 0x19c0, 0x19c0, - 0x19c0, 0x19d5, 0x19f0, 0x1a12, 0x1a24, 0x1a36, 0x1a4e, 0x1a70, - 0x1a70, 0x1a70, 0x1a85, 0x1a94, 0x1aa9, 0x1ab5, 0x1ab5, 0x1ac4, - 0x1ad9, 0x1aeb, 0x1afa, 0x1b12, 0x1b24, 0x1b3f, 0x1b3f, 0x1b3f, + 0x17dd, 0x17e9, 0x17e9, 0x17f5, 0x17f5, 0x180d, 0x181f, 0x1831, + 0x1856, 0x1856, 0x1862, 0x186e, 0x1883, 0x1892, 0x18a1, 0x18a1, + 0x18a1, 0x18b6, 0x18c8, 0x18dd, 0x1902, 0x1924, 0x1924, 0x1940, + 0x194f, 0x195e, 0x196a, 0x1979, 0x1985, 0x19a0, 0x19a0, 0x19af, + 0x19c1, 0x19eb, 0x19eb, 0x19f7, 0x19f7, 0x1a03, 0x1a18, 0x1a34, + 0x1a34, 0x1a34, 0x1a40, 0x1a55, 0x1a70, 0x1a92, 0x1aa4, 0x1ab6, + 0x1ac5, 0x1ae7, 0x1ae7, 0x1ae7, 0x1afc, 0x1b0b, 0x1b20, 0x1b2c, + 0x1b47, 0x1b56, 0x1b6e, 0x1b80, 0x1b8f, 0x1ba7, 0x1bb9, 0x1bd4, // Entry 180 - 1BF - 0x1b3f, 0x1b51, 0x1b51, 0x1b60, 0x1b6f, 0x1b8e, 0x1b8e, 0x1bb0, - 0x1bc5, 0x1bd7, 0x1be6, 0x1bf5, 0x1c07, 0x1c07, 0x1c07, 0x1c1c, - 0x1c1c, 0x1c2b, 0x1c3d, 0x1c4c, 0x1c67, 0x1c73, 0x1c73, 0x1c82, - 0x1c91, 0x1ca3, 0x1caf, 0x1cca, 0x1cef, 0x1d14, 0x1d20, 0x1d32, - 0x1d56, 0x1d65, 0x1d7a, 0x1d89, 0x1d9b, 0x1d9b, 0x1db0, 0x1dd2, - 0x1de1, 0x1df6, 0x1e0e, 0x1e0e, 0x1e0e, 0x1e23, 0x1e47, 0x1e47, - 0x1e5f, 0x1e6b, 0x1e8a, 0x1e9f, 0x1eae, 0x1ec0, 0x1ec0, 0x1ed5, - 0x1ed5, 0x1ee4, 0x1f06, 0x1f06, 0x1f15, 0x1f34, 0x1f40, 0x1f6e, + 0x1bd4, 0x1bd4, 0x1bd4, 0x1be6, 0x1be6, 0x1bf5, 0x1c04, 0x1c23, + 0x1c23, 0x1c45, 0x1c5a, 0x1c6c, 0x1c7b, 0x1c8a, 0x1c9c, 0x1c9c, + 0x1c9c, 0x1cb1, 0x1cb1, 0x1cbd, 0x1ccf, 0x1cde, 0x1cf9, 0x1d05, + 0x1d05, 0x1d14, 0x1d23, 0x1d35, 0x1d41, 0x1d5c, 0x1d87, 0x1dac, + 0x1db8, 0x1dca, 0x1dee, 0x1dfd, 0x1e12, 0x1e21, 0x1e33, 0x1e33, + 0x1e48, 0x1e6d, 0x1e7c, 0x1e91, 0x1ea9, 0x1ea9, 0x1ea9, 0x1ebe, + 0x1ee2, 0x1ee5, 0x1efd, 0x1f09, 0x1f28, 0x1f3d, 0x1f4c, 0x1f5e, + 0x1f5e, 0x1f73, 0x1f85, 0x1f94, 0x1fb6, 0x1fb6, 0x1fc5, 0x1fe4, // Entry 1C0 - 1FF - 0x1f8c, 0x1fa4, 0x1fb6, 0x1fcb, 0x1fd7, 0x1fff, 0x201a, 0x2032, - 0x2050, 0x2074, 0x2086, 0x2086, 0x2086, 0x2086, 0x20a8, 0x20a8, - 0x20c3, 0x20c3, 0x20c3, 0x20de, 0x20de, 0x210f, 0x2118, 0x2118, - 0x2133, 0x2148, 0x2163, 0x2163, 0x2163, 0x2175, 0x2187, 0x2187, - 0x2187, 0x2187, 0x21a2, 0x21ab, 0x21c0, 0x21cf, 0x21fa, 0x2212, - 0x2221, 0x2233, 0x2233, 0x2233, 0x2242, 0x225a, 0x226f, 0x226f, - 0x229a, 0x229a, 0x22a6, 0x22a6, 0x22b8, 0x22e6, 0x2308, 0x2308, - 0x2323, 0x232c, 0x232c, 0x233e, 0x233e, 0x233e, 0x235d, 0x2379, + 0x1ff0, 0x201e, 0x203c, 0x2054, 0x2066, 0x207b, 0x2087, 0x20af, + 0x20ca, 0x20e2, 0x2100, 0x2124, 0x2136, 0x2136, 0x2167, 0x2167, + 0x2167, 0x2189, 0x2189, 0x21a4, 0x21a4, 0x21a4, 0x21bf, 0x21da, + 0x220b, 0x2214, 0x2214, 0x222f, 0x2244, 0x225f, 0x225f, 0x225f, + 0x2271, 0x2283, 0x2283, 0x2283, 0x2283, 0x229e, 0x22a7, 0x22bc, + 0x22cb, 0x22f6, 0x230e, 0x231d, 0x232f, 0x232f, 0x2347, 0x2356, + 0x236e, 0x2383, 0x2383, 0x23ae, 0x23ae, 0x23ba, 0x23ba, 0x23cc, + 0x23fa, 0x241c, 0x241c, 0x2437, 0x2440, 0x2440, 0x2452, 0x2452, // Entry 200 - 23F - 0x2395, 0x23b7, 0x23cf, 0x23e7, 0x240f, 0x241e, 0x241e, 0x241e, - 0x2430, 0x243c, 0x2454, 0x2454, 0x247f, 0x2491, 0x2491, 0x2491, - 0x24a3, 0x24af, 0x24c1, 0x24d0, 0x24e5, 0x24ee, 0x2503, 0x2503, - 0x2518, 0x2530, 0x2530, 0x2545, 0x256a, 0x2583, 0x2583, 0x2583, - 0x2583, 0x25a1, 0x25a1, 0x25b6, 0x25c8, 0x25da, 0x25f2, 0x2621, - 0x2636, 0x2651, 0x266c, 0x2675, 0x267e, 0x267e, 0x267e, 0x267e, - 0x267e, 0x268d, 0x268d, 0x269c, 0x269c, 0x26ab, 0x26b7, 0x26c3, - 0x26db, 0x26db, 0x26f0, 0x26f0, 0x26fc, 0x2705, 0x2714, 0x2714, + 0x2452, 0x2471, 0x248d, 0x24a9, 0x24cb, 0x24e3, 0x24fb, 0x2523, + 0x2532, 0x253e, 0x253e, 0x2550, 0x255c, 0x2574, 0x258c, 0x25b7, + 0x25c9, 0x25c9, 0x25c9, 0x25db, 0x25e7, 0x25f9, 0x2608, 0x261d, + 0x2626, 0x263b, 0x263b, 0x2650, 0x2668, 0x2668, 0x267d, 0x26a2, + 0x26bb, 0x26bb, 0x26cd, 0x26cd, 0x26eb, 0x26eb, 0x2700, 0x2712, + 0x2724, 0x273c, 0x276b, 0x2780, 0x279b, 0x27b6, 0x27bf, 0x27c8, + 0x27c8, 0x27c8, 0x27c8, 0x27c8, 0x27d7, 0x27d7, 0x27e6, 0x27f8, + 0x2807, 0x2813, 0x281f, 0x2837, 0x2837, 0x284c, 0x284c, 0x2858, // Entry 240 - 27F - 0x2714, 0x2714, 0x272f, 0x2747, 0x276e, 0x276e, 0x2789, 0x27c7, - 0x27d6, 0x280f, 0x2821, 0x284d, 0x284d, 0x287b, 0x28a7, 0x28e7, - 0x2915, 0x2946, 0x2977, 0x29af, 0x29da, 0x2a08, 0x2a08, 0x2a30, - 0x2a55, 0x2a77, 0x2a8f, 0x2ac6, 0x2af7, 0x2b12, 0x2b3d, 0x2b65, - 0x2b87, 0x2bac, -} // Size: 1244 bytes - -var hrLangStr string = "" + // Size: 4466 bytes - "afarskiabhaskiavestanafrikaansakanskiamharskiaragonskiarapskiasamskiavar" + - "skiaymaraazerbajdžanskibaškirskibjeloruskibugarskibislamabambarabengalsk" + - "itibetanskibretonskibosanskikatalonskičečenskichamorrokorzičkicreečeškic" + - "rkvenoslavenskichuvashvelškidanskinjemačkidivehidzongkhaewegrčkiengleski" + - "esperantošpanjolskiestonskibaskijskiperzijskifulahfinskifidžijskiferojsk" + - "ifrancuskizapadnofrizijskiirskiškotski-galskigalicijskiguaranigudžaratsk" + - "imanskihausahebrejskihindskihiri motuhrvatskikreolskimađarskiarmenskiher" + - "erointerlinguaindonezijskiinterliguaigbosichuan yiinupiaqidoislandskital" + - "ijanskiinuktitutjapanskijavanskigruzijskikongokikuyukuanyamakazaškikalaa" + - "llisutkmerskikannadskikorejskikanurikašmirskikurdskikomikornskikirgiškil" + - "atinskiluksemburškigandalimburgishlingalalaoskilitavskiluba-katangalatvi" + - "jskimalgaškimaršalskimaorskimakedonskimalajalamskimongolskimarathskimala" + - "jskimalteškiburmanskinaurusjeverni ndebelenepalskindonganizozemskinovono" + - "rveškiknjiževni norveškijužni ndebelenavajonyanjaokcitanskiojibwaoromski" + - "orijskiosetskipandžapskipalipoljskipaštuportugalskikečuaromanšrundirumun" + - "jskiruskikinyarwandasanskrtskisardskisindhijužni samisangosinhaleškislov" + - "ačkislovenskisamoanskishonasomalskialbanskisrpskisvatisesotskisundanskiš" + - "vedskisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskicvanatong" + - "anskiturskitsongatatarskitahićanskiujgurskiukrajinskiurdskiuzbečkivendav" + - "ijetnamskivolapükvalonskiwolofxhosajidišjorubazhuangkineskizuluachinesea" + - "coliadangmeadigejskiafrihiliaghemainuakkadianaleutskijužni altaistaroeng" + - "leskiangikaaramejskiaraukanskiarapahoarawakasuasturijskiawadhibaluchibal" + - "inezijskibasabamunskighomalabejabembabenabafutzapadnobaludžijskibhojpuri" + - "bikolbinikomsiksikabrajbodoakooseburiatbuginskibulublinmedumbacaddokarip" + - "skicayugaatsamcebuanochigachibchachagataichuukesemarichinook žargonchoct" + - "awchipewyančerokičejenskisoranski kurdskikoptskikrimski turskikašupskida" + - "kota jezikdargwataitadelavarskislavedogribdinkazarmadogrilužičkosrpskidu" + - "alanizozemski, srednjijola-fonyidyuladazagaembuefikstaroegipatskiekajuke" + - "lamitskiengleski, srednjiewondofangfilipinofonfrancuski, srednjistarofra" + - "ncuskisjevernofrizijskiistočnofrizijskifriulskigagagauskigayogbayastaroe" + - "tiopskigilbertskinjemački, srednji visokistaronjemački, visokigondigoron" + - "talogothicgrebostarogrčkišvicarski njemačkigusiigwich’inhaidihavajskihil" + - "igaynonhetitskihmonggornjolužičkihupaibanibibioilokoingušetskilojbanngom" + - "bamachamejudejsko-perzijskijudejsko-arapskikara-kalpakkabilskikachinkaje" + - "kambakawikabardiankanembutyapmakondezelenortskikorokhasikhotanesekoyra c" + - "hiinikakokalenjinkimbundukomski ili permskikonkaninaurskikpellekarachay-" + - "balkarkarelijskikuruškishambalabafiakelnskikumykkutenailadinolangilahnda" + - "lambalezgiškilakotamongolozisjevernolurskiluba-lulualuisenolundaluolusha" + - "iluyiamadurskimafamagahimaithilimakasarmandingomasajskimabamokshamandarm" + - "endemerumauricijski kreolskiirski, srednjimakhuwa-meettometa’micmacminan" + - "gkabaumandžurskimanipurskimohawkmossimundangviše jezikacreekmirandskimar" + - "warimyenemordvinskimazanderanskinapolitanskinamadonjonjemačkinewariniasn" + - "iujskikwasiongiemboonnogajskistaronorveškin’kosjeverni sothonuerklasični" + - " newarinyamwezinyankolenyoronzimaosageturski - otomanskipangasinanpahlav" + - "ipampangapapiamentopalauanskistaroperzijskifeničkipohnpeianstaroprovansa" + - "lskikičerajasthanirapa nuirarotonškiromboromskiaromunskirwasandawejakuts" + - "kisamarijanski aramejskisamburusasaksantalingambaysangusicilijskiškotski" + - "južnokurdskisenecasenaselkupskikoyraboro sennistaroirskitachelhitshančad" + - "ski arapskisidamosjeverni samilule samiinari samiskolt samisoninkesogdie" + - "nsranan tongoserersahosukumasususumerskikomorskiklasični sirskisirijskit" + - "emnetesoterenotetumtigriškitivtokelaunskiklingonskitlingittamasheknyasa " + - "tongatok pisintarokotsimshiantumbukatuvaluanskitasawaqtuvinianmarokanski" + - " tamazightudmurtskiugaritskiumbundukorijenskivaivoticvunjowalserwalamowa" + - "raywashowarlpirikalmyksogayaojapskiyangbenyembakantonskizapotecblissymbo" + - "lszenagastandardni marokanski tamazightzunibez jezičnog sadržajazazakimo" + + 0x2861, 0x2870, 0x2885, 0x2894, 0x2894, 0x28af, 0x28c7, 0x28ee, + 0x28ee, 0x2909, 0x2947, 0x2956, 0x298f, 0x29a1, 0x29cd, 0x29cd, + 0x29fb, 0x2a27, 0x2a67, 0x2a95, 0x2ac6, 0x2af7, 0x2b32, 0x2b5d, + 0x2b8b, 0x2b8b, 0x2bb3, 0x2bd8, 0x2bfa, 0x2c12, 0x2c49, 0x2c7a, + 0x2c95, 0x2cc6, 0x2cee, 0x2d10, 0x2d35, +} // Size: 1250 bytes + +const hrLangStr string = "" + // Size: 4630 bytes + "afarskiabhaskiavestičkiafrikaansakanskiamharskiaragonskiarapskiasamskiav" + + "arskiajmarskiazerbajdžanskibaškirskibjeloruskibugarskibislamabambarabang" + + "latibetskibretonskibosanskikatalonskičečenskichamorrokorzičkicreečeškicr" + + "kvenoslavenskičuvaškivelškidanskinjemačkidivehidzongkhaewegrčkiengleskie" + + "sperantošpanjolskiestonskibaskijskiperzijskifulafinskifidžijskiferojskif" + + "rancuskizapadnofrizijskiirskiškotski gaelskigalicijskigvaranskigudžarats" + + "kimanskihausahebrejskihindskihiri motuhrvatskihaićanski kreolskimađarski" + + "armenskihererointerlinguaindonezijskiinterliguaigbosichuan yiinupiaqidoi" + + "slandskitalijanskiinuktitutjapanskijavanskigruzijskikongokikuyukuanyamak" + + "azaškikalaallisutkmerskikarnatačkikorejskikanurikašmirskikurdskikomikorn" + + "skikirgiskilatinskiluksemburškigandalimburškilingalalaoskilitavskiluba-k" + + "atangalatvijskimalgaškimaršalskimaorskimakedonskimalajalamskimongolskima" + + "rathskimalajskimalteškiburmanskinaurusjeverni ndebelenepalskindonganizoz" + + "emskinorveški nynorsknorveški bokmåljužni ndebelenavajonjandžaokcitanski" + + "ojibwaoromskiorijskiosetskipandžapskipalipoljskipaštunskiportugalskikeču" + + "anskiretoromanskirundirumunjskiruskikinyarwandasanskrtskisardskisindskis" + + "jeverni samisangosinhaleškislovačkislovenskisamoanskishonasomalskialbans" + + "kisrpskisvatisesotskisundanskišvedskisvahilitamilskiteluškitadžičkitajla" + + "ndskitigrinjaturkmenskicvanatonganskiturskitsongatatarskitahićanskiujgur" + + "skiukrajinskiurdskiuzbečkivendavijetnamskivolapükvalonskivolofxhosajidiš" + + "jorupskizhuangkineskizuluačinskiačoliadangmeadigejskiafrihiliaghemainusk" + + "iakadskialeutskijužni altaistaroengleskiangikaaramejskimapuchearapahoara" + + "vačkiasuasturijskiawadhibelučkibalijskibasabamunskighomalabejabembabenab" + + "afutzapadnobaludžijskibhojpuribikolskibinikomsiksikabrajbodoakooseburjat" + + "skibuginskibulublinmedumbacaddokaripskicayugaatsamcebuanochigačibčačagat" + + "ajskichuukesemarijskichinook žargonchoctawchipewyančerokijskičejenskisor" + + "anski kurdskikoptskikrimski turskisejšelski kreolskikašupskidakota jezik" + + "dargwataitadelavarskislavedogribdinkazarmadogridonjolužičkidualasrednjon" + + "izozemskijola-fonyidyuladazagaembuefikstaroegipatskiekajukelamitskisredn" + + "joengleskiewondofangfilipinskifonsrednjofrancuskistarofrancuskisjevernof" + + "rizijskiistočnofrizijskifurlanskigagagauskigan kineskigayogbayageezgilbe" + + "rtskisrednjogornjonjemačkistarovisokonjemačkigondigorontalogotskigrebost" + + "arogrčkišvicarski njemačkigusiigwich’inhaidihakka kineskihavajskihiligay" + + "nonskihetitskihmonggornjolužičkixiang kineskihupaibanibibioilokoingušets" + + "kilojbanngombamachamejudejsko-perzijskijudejsko-arapskikara-kalpakkabils" + + "kikačinskikajekambakawikabardinskikanembutyapmakondezelenortskikorokhasi" + + "khotanesekoyra chiinikakokalenjinkimbundukomi-permskikonkaninaurskikpell" + + "ekarachay-balkarkarelijskikuruškishambalabafiakelnskikumykkutenailadinol" + + "angilahndalambalezgiškilakotamongolozisjevernolurskiluba-lulualuisenolun" + + "daluolushailuyiamadurskimafamagahimaithilimakasarmandingomasajskimabamok" + + "shamandarmendemerumauricijski kreolskisrednjoirskimakhuwa-meettometa’mic" + + "macminangkabaumandžurskimanipurskimohokmossimundangviše jezikacreekmiran" + + "dskimarwarimyenemordvinskimazanderanskimin nan kineskinapolitanskinamado" + + "njonjemačkinewariniasniujskikwasiongiemboonnogajskistaronorveškin’kosjev" + + "erni sotskinuerskiklasični newarinyamwezinyankolenyoronzimaosageturski -" + + " otomanskipangasinanpahlavipampangapapiamentopalauanskinigerijski pidžin" + + "staroperzijskifeničkipohnpeianpruskistaroprovansalskikičerajasthanirapa " + + "nuirarotonškiromboromskiaromunskirwasandawejakutskisamarijanski aramejsk" + + "isamburusasaksantalskingambaysangusicilijskiškotskijužnokurdskisenecasen" + + "aselkupskikoyraboro sennistaroirskitachelhitshančadski arapskisidamojužn" + + "i samilule samiinari samiskolt samisoninkesogdiensranan tongoserersahosu" + + "kumasususumerskikomorskiklasični sirskisirijskitemnetesoterenotetumtigri" + + "škitivtokelaunskiklingonskitlingittamašečkinyasa tongatok pisintarokots" + + "imshiantumbukatuvaluanskitasawaqtuvinskitamašek (Srednji Atlas)udmurtski" + + "ugaritskiumbundukorijenskivaivotskivunjowalserskiwalamowaraywashowarlpir" + + "iwu kineskikalmyksogayaojapskiyangbenyembakantonskizapotečkiBlissovi sim" + + "bolizenagastandardni marokanski tamašekzunibez jezičnog sadržajazazakimo" + "derni standardni arapskijužnoazerbajdžanskiaustrijski njemačkigornjonjem" + "ački (švicarski)australski engleskikanadski engleskibritanski engleskiam" + "erički engleskilatinoamerički španjolskieuropski španjolskimeksički špan" + "jolskikanadski francuskišvicarski francuskidonjosaksonskiflamanskibrazil" + - "ski portugalskieuropski portugalskimoldavskisrpsko-hrvatskikongoanski sw" + + "ski portugalskieuropski portugalskimoldavskisrpsko-hrvatskikongoanski sv" + "ahilikineski (pojednostavljeni)kineski (tradicionalni)" -var hrLangIdx = []uint16{ // 610 elements +var hrLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0007, 0x000e, 0x0015, 0x001e, 0x0025, 0x002d, 0x0036, - 0x003d, 0x0044, 0x004b, 0x0051, 0x0060, 0x006a, 0x0074, 0x007c, - 0x0083, 0x008a, 0x0093, 0x009d, 0x00a6, 0x00ae, 0x00b8, 0x00c2, - 0x00ca, 0x00d3, 0x00d7, 0x00de, 0x00ee, 0x00f5, 0x00fc, 0x0102, - 0x010b, 0x0111, 0x0119, 0x011c, 0x0122, 0x012a, 0x0133, 0x013e, - 0x0146, 0x014f, 0x0158, 0x015d, 0x0163, 0x016d, 0x0175, 0x017e, - 0x018e, 0x0193, 0x01a2, 0x01ac, 0x01b3, 0x01bf, 0x01c5, 0x01ca, - 0x01d3, 0x01da, 0x01e3, 0x01eb, 0x01f3, 0x01fc, 0x0204, 0x020a, + 0x0000, 0x0007, 0x000e, 0x0018, 0x0021, 0x0028, 0x0030, 0x0039, + 0x0040, 0x0047, 0x004e, 0x0056, 0x0065, 0x006f, 0x0079, 0x0081, + 0x0088, 0x008f, 0x0095, 0x009d, 0x00a6, 0x00ae, 0x00b8, 0x00c2, + 0x00ca, 0x00d3, 0x00d7, 0x00de, 0x00ee, 0x00f7, 0x00fe, 0x0104, + 0x010d, 0x0113, 0x011b, 0x011e, 0x0124, 0x012c, 0x0135, 0x0140, + 0x0148, 0x0151, 0x015a, 0x015e, 0x0164, 0x016e, 0x0176, 0x017f, + 0x018f, 0x0194, 0x01a4, 0x01ae, 0x01b7, 0x01c3, 0x01c9, 0x01ce, + 0x01d7, 0x01de, 0x01e7, 0x01ef, 0x0202, 0x020b, 0x0213, 0x0219, // Entry 40 - 7F - 0x0215, 0x0221, 0x022b, 0x022f, 0x0239, 0x0240, 0x0243, 0x024c, - 0x0256, 0x025f, 0x0267, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b, - 0x0293, 0x029e, 0x02a5, 0x02ae, 0x02b6, 0x02bc, 0x02c6, 0x02cd, - 0x02d1, 0x02d8, 0x02e1, 0x02e9, 0x02f6, 0x02fb, 0x0305, 0x030c, - 0x0312, 0x031a, 0x0326, 0x032f, 0x0338, 0x0342, 0x0349, 0x0353, - 0x035f, 0x0368, 0x0371, 0x0379, 0x0382, 0x038b, 0x0390, 0x03a0, - 0x03a8, 0x03ae, 0x03b8, 0x03c5, 0x03d9, 0x03e7, 0x03ed, 0x03f3, - 0x03fd, 0x0403, 0x040a, 0x0411, 0x0418, 0x0423, 0x0427, 0x042e, + 0x0224, 0x0230, 0x023a, 0x023e, 0x0248, 0x024f, 0x0252, 0x025b, + 0x0265, 0x026e, 0x0276, 0x027e, 0x0287, 0x028c, 0x0292, 0x029a, + 0x02a2, 0x02ad, 0x02b4, 0x02bf, 0x02c7, 0x02cd, 0x02d7, 0x02de, + 0x02e2, 0x02e9, 0x02f1, 0x02f9, 0x0306, 0x030b, 0x0315, 0x031c, + 0x0322, 0x032a, 0x0336, 0x033f, 0x0348, 0x0352, 0x0359, 0x0363, + 0x036f, 0x0378, 0x0381, 0x0389, 0x0392, 0x039b, 0x03a0, 0x03b0, + 0x03b8, 0x03be, 0x03c8, 0x03d9, 0x03ea, 0x03f8, 0x03fe, 0x0406, + 0x0410, 0x0416, 0x041d, 0x0424, 0x042b, 0x0436, 0x043a, 0x0441, // Entry 80 - BF - 0x0434, 0x043f, 0x0445, 0x044c, 0x0451, 0x045a, 0x045f, 0x046a, - 0x0474, 0x047b, 0x0481, 0x048c, 0x0491, 0x049c, 0x04a5, 0x04ae, - 0x04b7, 0x04bc, 0x04c4, 0x04cc, 0x04d2, 0x04d7, 0x04df, 0x04e8, - 0x04f0, 0x04f7, 0x04ff, 0x0505, 0x050f, 0x0519, 0x0521, 0x052b, - 0x0530, 0x0539, 0x053f, 0x0545, 0x054d, 0x0558, 0x0560, 0x056a, - 0x0570, 0x0578, 0x057d, 0x0588, 0x0590, 0x0598, 0x059d, 0x05a2, - 0x05a8, 0x05ae, 0x05b4, 0x05bb, 0x05bf, 0x05c7, 0x05cc, 0x05d3, - 0x05dc, 0x05dc, 0x05e4, 0x05e9, 0x05ed, 0x05f5, 0x05f5, 0x05fd, + 0x044b, 0x0456, 0x0460, 0x046c, 0x0471, 0x047a, 0x047f, 0x048a, + 0x0494, 0x049b, 0x04a2, 0x04af, 0x04b4, 0x04bf, 0x04c8, 0x04d1, + 0x04da, 0x04df, 0x04e7, 0x04ef, 0x04f5, 0x04fa, 0x0502, 0x050b, + 0x0513, 0x051a, 0x0522, 0x052a, 0x0534, 0x053e, 0x0546, 0x0550, + 0x0555, 0x055e, 0x0564, 0x056a, 0x0572, 0x057d, 0x0585, 0x058f, + 0x0595, 0x059d, 0x05a2, 0x05ad, 0x05b5, 0x05bd, 0x05c2, 0x05c7, + 0x05cd, 0x05d5, 0x05db, 0x05e2, 0x05e6, 0x05ee, 0x05f4, 0x05fb, + 0x0604, 0x0604, 0x060c, 0x0611, 0x0618, 0x061f, 0x061f, 0x0627, // Entry C0 - FF - 0x05fd, 0x0609, 0x0616, 0x061c, 0x0625, 0x062f, 0x062f, 0x0636, - 0x0636, 0x063c, 0x063c, 0x063c, 0x063f, 0x063f, 0x0649, 0x0649, - 0x064f, 0x0656, 0x0662, 0x0662, 0x0666, 0x066e, 0x066e, 0x0675, - 0x0679, 0x067e, 0x067e, 0x0682, 0x0687, 0x0687, 0x069a, 0x06a2, - 0x06a7, 0x06ab, 0x06ab, 0x06ae, 0x06b5, 0x06b5, 0x06b5, 0x06b9, - 0x06b9, 0x06bd, 0x06c3, 0x06c9, 0x06d1, 0x06d5, 0x06d9, 0x06e0, - 0x06e5, 0x06ed, 0x06f3, 0x06f8, 0x06ff, 0x0704, 0x070b, 0x0713, - 0x071b, 0x071f, 0x072e, 0x0735, 0x073e, 0x0745, 0x074e, 0x075e, + 0x0627, 0x0633, 0x0640, 0x0646, 0x064f, 0x0656, 0x0656, 0x065d, + 0x065d, 0x065d, 0x0666, 0x0666, 0x0666, 0x0669, 0x0669, 0x0673, + 0x0673, 0x0679, 0x0681, 0x0689, 0x0689, 0x068d, 0x0695, 0x0695, + 0x069c, 0x06a0, 0x06a5, 0x06a5, 0x06a9, 0x06ae, 0x06ae, 0x06c1, + 0x06c9, 0x06d1, 0x06d5, 0x06d5, 0x06d8, 0x06df, 0x06df, 0x06df, + 0x06e3, 0x06e3, 0x06e7, 0x06ed, 0x06f6, 0x06fe, 0x0702, 0x0706, + 0x070d, 0x0712, 0x071a, 0x0720, 0x0725, 0x072c, 0x0731, 0x0738, + 0x0743, 0x074b, 0x0753, 0x0762, 0x0769, 0x0772, 0x077d, 0x0786, // Entry 100 - 13F - 0x0765, 0x0765, 0x0773, 0x077c, 0x0788, 0x078e, 0x0793, 0x079d, - 0x07a2, 0x07a8, 0x07ad, 0x07b2, 0x07b7, 0x07c6, 0x07c6, 0x07cb, - 0x07de, 0x07e8, 0x07ed, 0x07f3, 0x07f7, 0x07fb, 0x07fb, 0x0809, - 0x080f, 0x0818, 0x0829, 0x0829, 0x082f, 0x082f, 0x0833, 0x083b, - 0x083b, 0x083e, 0x083e, 0x0850, 0x085e, 0x085e, 0x086f, 0x0880, - 0x0888, 0x088a, 0x0892, 0x0892, 0x0896, 0x089b, 0x089b, 0x08a8, - 0x08b2, 0x08b2, 0x08cb, 0x08e1, 0x08e1, 0x08e6, 0x08ef, 0x08f5, - 0x08fa, 0x0905, 0x0919, 0x0919, 0x0919, 0x091e, 0x0928, 0x092d, + 0x0796, 0x079d, 0x079d, 0x07ab, 0x07be, 0x07c7, 0x07d3, 0x07d9, + 0x07de, 0x07e8, 0x07ed, 0x07f3, 0x07f8, 0x07fd, 0x0802, 0x0810, + 0x0810, 0x0815, 0x0826, 0x0830, 0x0835, 0x083b, 0x083f, 0x0843, + 0x0843, 0x0851, 0x0857, 0x0860, 0x086f, 0x086f, 0x0875, 0x0875, + 0x0879, 0x0883, 0x0883, 0x0886, 0x0886, 0x0896, 0x08a4, 0x08a4, + 0x08b5, 0x08c6, 0x08cf, 0x08d1, 0x08d9, 0x08e4, 0x08e8, 0x08ed, + 0x08ed, 0x08f1, 0x08fb, 0x08fb, 0x0911, 0x0925, 0x0925, 0x092a, + 0x0933, 0x0939, 0x093e, 0x0949, 0x095d, 0x095d, 0x095d, 0x0962, // Entry 140 - 17F - 0x092d, 0x0935, 0x0935, 0x093f, 0x0947, 0x094c, 0x095b, 0x095b, - 0x095f, 0x0963, 0x0969, 0x096e, 0x0979, 0x0979, 0x0979, 0x097f, - 0x0985, 0x098c, 0x099e, 0x09ae, 0x09ae, 0x09b9, 0x09c1, 0x09c7, - 0x09cb, 0x09d0, 0x09d4, 0x09dd, 0x09e4, 0x09e8, 0x09ef, 0x09fa, - 0x09fa, 0x09fe, 0x09fe, 0x0a03, 0x0a0c, 0x0a18, 0x0a18, 0x0a18, - 0x0a1c, 0x0a24, 0x0a2c, 0x0a3e, 0x0a45, 0x0a4c, 0x0a52, 0x0a61, - 0x0a61, 0x0a61, 0x0a6b, 0x0a73, 0x0a7b, 0x0a80, 0x0a87, 0x0a8c, - 0x0a93, 0x0a99, 0x0a9e, 0x0aa4, 0x0aa9, 0x0ab2, 0x0ab2, 0x0ab2, + 0x096c, 0x0971, 0x097e, 0x0986, 0x0986, 0x0993, 0x099b, 0x09a0, + 0x09af, 0x09bc, 0x09c0, 0x09c4, 0x09ca, 0x09cf, 0x09da, 0x09da, + 0x09da, 0x09e0, 0x09e6, 0x09ed, 0x09ff, 0x0a0f, 0x0a0f, 0x0a1a, + 0x0a22, 0x0a2b, 0x0a2f, 0x0a34, 0x0a38, 0x0a43, 0x0a4a, 0x0a4e, + 0x0a55, 0x0a60, 0x0a60, 0x0a64, 0x0a64, 0x0a69, 0x0a72, 0x0a7e, + 0x0a7e, 0x0a7e, 0x0a82, 0x0a8a, 0x0a92, 0x0a9e, 0x0aa5, 0x0aac, + 0x0ab2, 0x0ac1, 0x0ac1, 0x0ac1, 0x0acb, 0x0ad3, 0x0adb, 0x0ae0, + 0x0ae7, 0x0aec, 0x0af3, 0x0af9, 0x0afe, 0x0b04, 0x0b09, 0x0b12, // Entry 180 - 1BF - 0x0ab2, 0x0ab8, 0x0ab8, 0x0abd, 0x0ac1, 0x0acf, 0x0acf, 0x0ad9, - 0x0ae0, 0x0ae5, 0x0ae8, 0x0aee, 0x0af3, 0x0af3, 0x0af3, 0x0afb, - 0x0aff, 0x0b05, 0x0b0d, 0x0b14, 0x0b1c, 0x0b24, 0x0b28, 0x0b2e, - 0x0b34, 0x0b39, 0x0b3d, 0x0b51, 0x0b5f, 0x0b6d, 0x0b74, 0x0b7a, - 0x0b85, 0x0b90, 0x0b9a, 0x0ba0, 0x0ba5, 0x0ba5, 0x0bac, 0x0bb8, - 0x0bbd, 0x0bc6, 0x0bcd, 0x0bcd, 0x0bd2, 0x0bdc, 0x0be9, 0x0be9, - 0x0bf5, 0x0bf9, 0x0c07, 0x0c0d, 0x0c11, 0x0c18, 0x0c18, 0x0c1e, - 0x0c27, 0x0c2f, 0x0c3d, 0x0c3d, 0x0c43, 0x0c51, 0x0c55, 0x0c65, + 0x0b12, 0x0b12, 0x0b12, 0x0b18, 0x0b18, 0x0b1d, 0x0b21, 0x0b2f, + 0x0b2f, 0x0b39, 0x0b40, 0x0b45, 0x0b48, 0x0b4e, 0x0b53, 0x0b53, + 0x0b53, 0x0b5b, 0x0b5f, 0x0b65, 0x0b6d, 0x0b74, 0x0b7c, 0x0b84, + 0x0b88, 0x0b8e, 0x0b94, 0x0b99, 0x0b9d, 0x0bb1, 0x0bbd, 0x0bcb, + 0x0bd2, 0x0bd8, 0x0be3, 0x0bee, 0x0bf8, 0x0bfd, 0x0c02, 0x0c02, + 0x0c09, 0x0c15, 0x0c1a, 0x0c23, 0x0c2a, 0x0c2a, 0x0c2f, 0x0c39, + 0x0c46, 0x0c55, 0x0c61, 0x0c65, 0x0c73, 0x0c79, 0x0c7d, 0x0c84, + 0x0c84, 0x0c8a, 0x0c93, 0x0c9b, 0x0ca9, 0x0ca9, 0x0caf, 0x0cbe, // Entry 1C0 - 1FF - 0x0c6d, 0x0c75, 0x0c7a, 0x0c7f, 0x0c84, 0x0c96, 0x0ca0, 0x0ca7, - 0x0caf, 0x0cb9, 0x0cc3, 0x0cc3, 0x0cc3, 0x0cc3, 0x0cd1, 0x0cd1, - 0x0cd9, 0x0cd9, 0x0cd9, 0x0ce2, 0x0ce2, 0x0cf3, 0x0cf8, 0x0cf8, - 0x0d02, 0x0d0a, 0x0d15, 0x0d15, 0x0d15, 0x0d1a, 0x0d20, 0x0d20, - 0x0d20, 0x0d20, 0x0d29, 0x0d2c, 0x0d33, 0x0d3b, 0x0d51, 0x0d58, - 0x0d5d, 0x0d64, 0x0d64, 0x0d6b, 0x0d70, 0x0d7a, 0x0d82, 0x0d82, - 0x0d8f, 0x0d95, 0x0d99, 0x0d99, 0x0da2, 0x0db1, 0x0dbb, 0x0dbb, - 0x0dc4, 0x0dc8, 0x0dd7, 0x0ddd, 0x0ddd, 0x0ddd, 0x0dea, 0x0df3, + 0x0cc5, 0x0cd5, 0x0cdd, 0x0ce5, 0x0cea, 0x0cef, 0x0cf4, 0x0d06, + 0x0d10, 0x0d17, 0x0d1f, 0x0d29, 0x0d33, 0x0d33, 0x0d45, 0x0d45, + 0x0d45, 0x0d53, 0x0d53, 0x0d5b, 0x0d5b, 0x0d5b, 0x0d64, 0x0d6a, + 0x0d7b, 0x0d80, 0x0d80, 0x0d8a, 0x0d92, 0x0d9d, 0x0d9d, 0x0d9d, + 0x0da2, 0x0da8, 0x0da8, 0x0da8, 0x0da8, 0x0db1, 0x0db4, 0x0dbb, + 0x0dc3, 0x0dd9, 0x0de0, 0x0de5, 0x0dee, 0x0dee, 0x0df5, 0x0dfa, + 0x0e04, 0x0e0c, 0x0e0c, 0x0e19, 0x0e1f, 0x0e23, 0x0e23, 0x0e2c, + 0x0e3b, 0x0e45, 0x0e45, 0x0e4e, 0x0e52, 0x0e61, 0x0e67, 0x0e67, // Entry 200 - 23F - 0x0dfd, 0x0e07, 0x0e0e, 0x0e15, 0x0e21, 0x0e26, 0x0e2a, 0x0e2a, - 0x0e30, 0x0e34, 0x0e3c, 0x0e44, 0x0e54, 0x0e5c, 0x0e5c, 0x0e5c, - 0x0e61, 0x0e65, 0x0e6b, 0x0e70, 0x0e79, 0x0e7c, 0x0e87, 0x0e87, - 0x0e91, 0x0e98, 0x0e98, 0x0ea0, 0x0eab, 0x0eb4, 0x0eb4, 0x0eba, - 0x0eba, 0x0ec3, 0x0ec3, 0x0eca, 0x0ed5, 0x0edc, 0x0ee4, 0x0ef8, - 0x0f01, 0x0f0a, 0x0f11, 0x0f1b, 0x0f1e, 0x0f1e, 0x0f1e, 0x0f1e, - 0x0f1e, 0x0f23, 0x0f23, 0x0f28, 0x0f2e, 0x0f34, 0x0f39, 0x0f3e, - 0x0f46, 0x0f46, 0x0f4c, 0x0f4c, 0x0f50, 0x0f53, 0x0f59, 0x0f60, + 0x0e67, 0x0e72, 0x0e7b, 0x0e85, 0x0e8f, 0x0e96, 0x0e9d, 0x0ea9, + 0x0eae, 0x0eb2, 0x0eb2, 0x0eb8, 0x0ebc, 0x0ec4, 0x0ecc, 0x0edc, + 0x0ee4, 0x0ee4, 0x0ee4, 0x0ee9, 0x0eed, 0x0ef3, 0x0ef8, 0x0f01, + 0x0f04, 0x0f0f, 0x0f0f, 0x0f19, 0x0f20, 0x0f20, 0x0f2b, 0x0f36, + 0x0f3f, 0x0f3f, 0x0f45, 0x0f45, 0x0f4e, 0x0f4e, 0x0f55, 0x0f60, + 0x0f67, 0x0f6f, 0x0f87, 0x0f90, 0x0f99, 0x0fa0, 0x0faa, 0x0fad, + 0x0fad, 0x0fad, 0x0fad, 0x0fad, 0x0fb3, 0x0fb3, 0x0fb8, 0x0fc1, + 0x0fc7, 0x0fcc, 0x0fd1, 0x0fd9, 0x0fe3, 0x0fe9, 0x0fe9, 0x0fed, // Entry 240 - 27F - 0x0f65, 0x0f65, 0x0f6e, 0x0f75, 0x0f80, 0x0f80, 0x0f86, 0x0fa5, - 0x0fa9, 0x0fc0, 0x0fc6, 0x0fe0, 0x0ff5, 0x1009, 0x1025, 0x1038, - 0x1049, 0x105b, 0x106d, 0x1088, 0x109c, 0x10b1, 0x10b1, 0x10c3, - 0x10d7, 0x10e5, 0x10ee, 0x1103, 0x1117, 0x1120, 0x112f, 0x1141, - 0x115b, 0x1172, -} // Size: 1244 bytes - -var huLangStr string = "" + // Size: 3938 bytes + 0x0ff0, 0x0ff6, 0x0ffd, 0x1002, 0x1002, 0x100b, 0x1015, 0x1025, + 0x1025, 0x102b, 0x1049, 0x104d, 0x1064, 0x106a, 0x1084, 0x1099, + 0x10ad, 0x10c9, 0x10dc, 0x10ed, 0x10ff, 0x1111, 0x112c, 0x1140, + 0x1155, 0x1155, 0x1167, 0x117b, 0x1189, 0x1192, 0x11a7, 0x11bb, + 0x11c4, 0x11d3, 0x11e5, 0x11ff, 0x1216, +} // Size: 1250 bytes + +const huLangStr string = "" + // Size: 4071 bytes "afarabházavesztánafrikaansakanamharaaragonézarabasszámiavarajmaraazerbaj" + - "dzsánibaskírbeloruszbolgárbislamabambarabengálitibetibretonbosnyákkatalá" + - "ncsecsencsamorókorzikaikrícsehegyházi szlávcsuvaswalesidánnémetdivehibut" + - "ánievegörögangoleszperantóspanyolésztbaszkperzsafulanifinnfidzsiferöeri" + - "franciafrízírskót gaelgalíciaiguaranigudzsaratiman-szigetihauszahéberhin" + - "dihiri motuhorváthaitimagyarörményhererointerlingvaindonézinterlingueigb" + - "ószecsuán jiinupiakidóizlandiolaszinuktitutjapánjávaigrúzkongokikujukua" + - "nyamakazahgrönlandikambodzsaikannadakoreaikanurikásmírikurdkomikornikirg" + - "izlatinluxemburgigandalimburgilingalalaoszilitvánluba-katangalettmálgasm" + - "arshallimaorimacedónmalajálammongolmarathimalájmáltaiburmainauruiészaki " + - "ndebelenepálindongahollandnorvég nynorsknorvég bokmaldéli ndebelenavahón" + - "yanjaokszitánojibvaoromóiorijaoszétpandzsábipalilengyelpastuportugálkecs" + - "uaréto-románkirundirománoroszkiruandaszanszkritszardíniaiszindhiészaki s" + - "zámiszangószingalézszlovákszlovénszamoaisonaszomáliaialbánszerbsziszuati" + - "szeszotószundanézsvédszuahélitamiltelugutadzsikthaitigrinjatürkménszecsu" + - "ánitongatörökcongatatártahitiujgurukránurduüzbégvendavietnamivolapükval" + - "lonvolofhoszajiddisjorubazsuangkínaizuluachinézakoliadangmeadygheafrihil" + - "iagemainuakkádaleutdél-altajióangolangikaarámiaraucaniarapahoaravakasuas" + - "ztúrawádibalucsibalinézbaszabamungomalabedzsabembabenabafutnyugati belud" + - "zsbodzspuribikolbinikomsiksikabrajbodokosziburjátbuginézbulublinmedumbac" + - "addokaribkajugaatszamcebuikigacsibcsacsagatájcsukézmaricsinuk zsargoncso" + - "któcsipevécserokicsejenszoráni kurdkoptkrími tatárkasubdakotadargvataita" + - "delavárszlevidogribdinkazarmadogrialsó szorbdualaközép hollandjola-fonyi" + - "diuladazagaembuefikóegyiptomiekadzsukelamitközép angolevondofangfilippín" + - "ófonközép franciaófranciaészaki frízkeleti frízfriuligagagauzgajogbajag" + - "eezikiribatiközép felső németófelső németgondigorontalogótgrebóógörögsvá" + - "jci németgusziigvicsinhaidahawaiihiligajnonhittitehmongfelső szorbhupaib" + - "anibibióilokóinguslojbanngombamachamezsidó-perzsazsidó-arabkara-kalpakka" + - "bijekacsinjjukambakawikabardikanembutyapmakondekabuverdianukorokaszikota" + - "nézkojra-csínikakókalendzsinkimbundukomi-permjákkonkanikosreikpellekarac" + - "sáj-balkárkarelaikuruhsambalabafiakölschkumükkutenailadinolangilahndalam" + - "balezglakotamongóloziészaki luriluba-lulualuisenolundaluolushailujiamadu" + - "raimafamagahimaithilimakaszarmandingómasaimabamoksánmandarmendemerumauri" + - "tiusi kreolközép írmakua-metómeta’mikmakminangkabaumandzsumanipurimohawk" + - "moszimundangtöbbszörös nyelvekkríkmirandézmarvarimyeneerzjánymázanderáni" + - "nápolyinamaalsónémetnevariniasniuingumbangiemboonnogajóskandinávn’kóésza" + - "ki szotónuerklasszikus newarinyamvézinyankolenyorónzimaosageottomán törö" + - "kpangaszinanpahlavipampanganpapiamentópalauióperzsafőniciaipohnpeióprová" + - "nszikicseradzsasztánirapanuirarotongairomboromaarománrwoszandavejakutsza" + - "maritánus arámiszamburusasakszantálingambayszanguszicíliaiskótdél-kurdsz" + - "enekaszenaszölkupkojra-szennióírtachelhitsancsádi arabszidamódéli számil" + - "ule számiinar samikoltta lappszoninkesogdienszranai tongószererszahószuk" + - "umaszuszusumércomoreiklasszikus szírszíriaitemneteszóterenótetumtigrétiv" + - "tokelauiklingontlingittamaseknyasa tongatok pisintarokócsimsiánitumbukat" + - "uvaluszaváktuvaiközép-marokkói tamazigtudmurtugaritiumbunduősivaivotjákv" + - "unjowalservalamovaraóvasówarlpirikalmükszogajaójapijangbenjembakantoniza" + - "potékBliss jelképrendszerzenagamarokkói tamazightzuninincs nyelvészeti t" + - "artalomzazamodern szabányos arabosztrák németsvájci felnémetausztrál ang" + - "olkanadai angolbrit angolamerikai angollatin-amerikai spanyoleurópai spa" + - "nyolspanyol (mexikói)kanadai franciasvájci franciaalsószászflamandbrazíl" + - "iai portugáleurópai portugálmoldvaiszerbhorvátkongói szuahéliegyszerűsít" + - "ett kínaihagyományos kínai" - -var huLangIdx = []uint16{ // 610 elements + "dzsánibaskírbelaruszbolgárbislamabambarabanglatibetibretonbosnyákkatalán" + + "csecsencsamorókorzikaikrícsehegyházi szlávcsuvaswalesidánnémetdivehidzso" + + "ngaevegörögangoleszperantóspanyolésztbaszkperzsafulanifinnfidzsiferöerif" + + "rancianyugati frízírskóciai keltagallegoguaranigudzsarátiman-szigetihaus" + + "zahéberhindihiri motuhorváthaiti kreolmagyarörményhererointerlingvaindon" + + "ézinterlingueigbószecsuán jiinupiakidóizlandiolaszinuktitutjapánjávaigr" + + "úzkongokikujukuanyamakazahgrönlandikhmerkannadakoreaikanurikasmírikurdk" + + "omikornikirgizlatinluxemburgigandalimburgilingalalaolitvánluba-katangale" + + "ttmalgasmarshallimaorimacedónmalajálammongolmaráthimalájmáltaiburmainaur" + + "uiészaki ndebelenepálindongahollandnorvég (nynorsk)norvég (bokmål)déli n" + + "debelenavahónyandzsaokszitánojibvaoromoodiaoszétpandzsábipalilengyelpast" + + "uportugálkecsuarétorománkirundirománoroszkinyarvandaszanszkritszardíniai" + + "szindhiészaki számiszangószingalézszlovákszlovénszamoaisonaszomálialbáns" + + "zerbsziszuatidéli szeszotószundanézsvédszuahélitamiltelugutadzsikthaitig" + + "rinyatürkménszecsuánitongaitörökcongatatártahitiujgurukránurduüzbégvenda" + + "vietnamivolapükvallonvolofxhoszajiddisjorubazsuangkínaizuluachinézakolia" + + "dangmeadygheafrihiliagemainuakkádaleutdél-altajióangolangikaarámimapucse" + + "arapahoaravakasuasztúrawádibalucsibalinézbaszabamungomalabedzsabembabena" + + "bafutnyugati beludzsbodzspuribikolbinikomsiksikabrajbodokosziburjátbugin" + + "ézbulublinmedumbacaddokaribkajugaatszamszebuanokigacsibcsacsagatájcsuké" + + "zmaricsinuk zsargoncsoktócsipevécserokicsejenközép-ázsiai kurdkoptkrími " + + "tatárszeszelva kreol franciakasubdakotadargvataitadelavárszlevidogribdin" + + "kazarmadogrialsó-szorbdualaközép hollandjola-fonyidiuladazagaembuefikóeg" + + "yiptomiekadzsukelamitközép angolevondofangfilippínófonközép franciaófran" + + "ciaészaki frízkeleti frízfriuligagagauzgan kínaigajogbajageezikiribatikö" + + "zép felső németófelső németgondigorontalogótgrebóógörögsvájci németguszi" + + "igvicsinhaidahakka kínaihawaiiilokanohittitehmongfelső-szorbxiang kínaih" + + "upaibanibibioilokóinguslojbanngombamachamezsidó-perzsazsidó-arabkara-kal" + + "pakkabijekacsinjjukambakawikabardikanembutyapmakondekabuverdianukorokasz" + + "ikotanézkojra-csínikakókalendzsinkimbundukomi-permjákkonkanikosreikpelle" + + "karacsáj-balkárkarelaikuruhsambalabafiakölschkumükkutenailadinolangilahn" + + "dalambalezglakotamongóloziészaki luriluba-lulualuisenolundaluolushailuji" + + "amaduraimafamagahimaithilimakaszarmandingómasaimabamoksánmandarmendemeru" + + "mauritiusi kreolközép írmakua-metómeta’mikmakminangkabaumandzsumanipurim" + + "ohawkmoszimundangtöbbszörös nyelvekkríkmirandézmárvárimyeneerzjánymázand" + + "eránimin nan kínainápolyinamaalsónémetnevariniasniueingumbangiemboonnoga" + + "jóskandinávn’kóészaki szeszotónuerklasszikus newarinyamvézinyankolenyoró" + + "nzimaosageottomán törökpangaszinanpahlavipampanganpapiamentopalauinigéri" + + "ai pidginóperzsafőniciaipohnpeiporoszóprovánszikicseradzsasztánirapanuir" + + "arotongairomboromaarománrwoszandaveszahaszamaritánus arámiszamburusasaks" + + "zantálingambayszanguszicíliaiskótdél-kurdszenekaszenaszölkupkojra-szenni" + + "óírtachelhitsancsádi arabszidamódéli számilulei számiinari számikolta s" + + "zámiszoninkesogdienszranai tongószererszahószukumaszuszusumércomoreiklas" + + "szikus szírszírtemneteszóterenótetumtigrétivtokelauiklingontlingittamase" + + "knyugati nyaszatok pisintarokócsimsiánitumbukatuvaluszaváktuvaiközép-atl" + + "aszi tamazigtudmurtugaritiumbunduősivaivotjákvunjowalservalamovaraóvasów" + + "arlpiriwu kínaikalmükszogajaójapijangbenjembakantonizapotékBliss jelképr" + + "endszerzenagamarokkói tamazightzuninincs nyelvészeti tartalomzazamodern " + + "szabányos arabosztrák németsvájci felnémetausztrál angolkanadai angolbri" + + "t angolamerikai angollatin-amerikai spanyoleurópai spanyolspanyol (mexik" + + "ói)kanadai franciasvájci franciaalsószászflamandbrazíliai portugáleuróp" + + "ai portugálmoldvaiszerbhorvátkongói szuahéliegyszerűsített kínaihagyomán" + + "yos kínai" + +var huLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000a, 0x0013, 0x001c, 0x0020, 0x0026, 0x002f, 0x0033, 0x003b, 0x003f, 0x0045, 0x0053, 0x005a, 0x0062, 0x0069, - 0x0070, 0x0077, 0x007f, 0x0085, 0x008b, 0x0093, 0x009b, 0x00a2, - 0x00aa, 0x00b2, 0x00b6, 0x00ba, 0x00c9, 0x00cf, 0x00d5, 0x00d9, - 0x00df, 0x00e5, 0x00ec, 0x00ef, 0x00f6, 0x00fb, 0x0106, 0x010d, - 0x0112, 0x0117, 0x011d, 0x0123, 0x0127, 0x012d, 0x0135, 0x013c, - 0x0141, 0x0144, 0x014e, 0x0157, 0x015e, 0x0168, 0x0173, 0x0179, - 0x017f, 0x0184, 0x018d, 0x0194, 0x0199, 0x019f, 0x01a7, 0x01ad, + 0x0070, 0x0077, 0x007d, 0x0083, 0x0089, 0x0091, 0x0099, 0x00a0, + 0x00a8, 0x00b0, 0x00b4, 0x00b8, 0x00c7, 0x00cd, 0x00d3, 0x00d7, + 0x00dd, 0x00e3, 0x00ea, 0x00ed, 0x00f4, 0x00f9, 0x0104, 0x010b, + 0x0110, 0x0115, 0x011b, 0x0121, 0x0125, 0x012b, 0x0133, 0x013a, + 0x0147, 0x014a, 0x0158, 0x015f, 0x0166, 0x0171, 0x017c, 0x0182, + 0x0188, 0x018d, 0x0196, 0x019d, 0x01a8, 0x01ae, 0x01b6, 0x01bc, // Entry 40 - 7F - 0x01b8, 0x01c0, 0x01cb, 0x01d0, 0x01dc, 0x01e3, 0x01e7, 0x01ee, - 0x01f3, 0x01fc, 0x0202, 0x0208, 0x020d, 0x0212, 0x0218, 0x0220, - 0x0225, 0x022f, 0x0239, 0x0240, 0x0246, 0x024c, 0x0255, 0x0259, - 0x025d, 0x0262, 0x0268, 0x026d, 0x0277, 0x027c, 0x0284, 0x028b, - 0x0291, 0x0298, 0x02a4, 0x02a8, 0x02af, 0x02b8, 0x02bd, 0x02c5, - 0x02cf, 0x02d5, 0x02dc, 0x02e2, 0x02e9, 0x02ef, 0x02f5, 0x0304, - 0x030b, 0x0311, 0x0318, 0x0327, 0x0335, 0x0342, 0x0349, 0x034f, - 0x0358, 0x035e, 0x0365, 0x036a, 0x0370, 0x037a, 0x037e, 0x0385, + 0x01c7, 0x01cf, 0x01da, 0x01df, 0x01eb, 0x01f2, 0x01f6, 0x01fd, + 0x0202, 0x020b, 0x0211, 0x0217, 0x021c, 0x0221, 0x0227, 0x022f, + 0x0234, 0x023e, 0x0243, 0x024a, 0x0250, 0x0256, 0x025e, 0x0262, + 0x0266, 0x026b, 0x0271, 0x0276, 0x0280, 0x0285, 0x028d, 0x0294, + 0x0297, 0x029e, 0x02aa, 0x02ae, 0x02b4, 0x02bd, 0x02c2, 0x02ca, + 0x02d4, 0x02da, 0x02e2, 0x02e8, 0x02ef, 0x02f5, 0x02fb, 0x030a, + 0x0311, 0x0317, 0x031e, 0x032f, 0x0340, 0x034d, 0x0354, 0x035c, + 0x0365, 0x036b, 0x0370, 0x0374, 0x037a, 0x0384, 0x0388, 0x038f, // Entry 80 - BF - 0x038a, 0x0393, 0x0399, 0x03a5, 0x03ac, 0x03b2, 0x03b7, 0x03bf, - 0x03c9, 0x03d4, 0x03db, 0x03e9, 0x03f0, 0x03fa, 0x0402, 0x040a, - 0x0411, 0x0415, 0x041f, 0x0425, 0x042a, 0x0433, 0x043c, 0x0446, - 0x044b, 0x0454, 0x0459, 0x045f, 0x0466, 0x046a, 0x0472, 0x047b, - 0x0485, 0x048a, 0x0491, 0x0496, 0x049c, 0x04a2, 0x04a7, 0x04ad, - 0x04b1, 0x04b8, 0x04bd, 0x04c5, 0x04cd, 0x04d3, 0x04d8, 0x04dd, - 0x04e3, 0x04e9, 0x04ef, 0x04f5, 0x04f9, 0x0501, 0x0506, 0x050d, - 0x0513, 0x0513, 0x051b, 0x051f, 0x0523, 0x0529, 0x0529, 0x052e, + 0x0394, 0x039d, 0x03a3, 0x03ae, 0x03b5, 0x03bb, 0x03c0, 0x03cb, + 0x03d5, 0x03e0, 0x03e7, 0x03f5, 0x03fc, 0x0406, 0x040e, 0x0416, + 0x041d, 0x0421, 0x0429, 0x042f, 0x0434, 0x043d, 0x044c, 0x0456, + 0x045b, 0x0464, 0x0469, 0x046f, 0x0476, 0x047a, 0x0482, 0x048b, + 0x0495, 0x049b, 0x04a2, 0x04a7, 0x04ad, 0x04b3, 0x04b8, 0x04be, + 0x04c2, 0x04c9, 0x04ce, 0x04d6, 0x04de, 0x04e4, 0x04e9, 0x04ef, + 0x04f5, 0x04fb, 0x0501, 0x0507, 0x050b, 0x0513, 0x0518, 0x051f, + 0x0525, 0x0525, 0x052d, 0x0531, 0x0535, 0x053b, 0x053b, 0x0540, // Entry C0 - FF - 0x052e, 0x0539, 0x0540, 0x0546, 0x054c, 0x0554, 0x0554, 0x055b, - 0x055b, 0x0561, 0x0561, 0x0561, 0x0564, 0x0564, 0x056b, 0x056b, - 0x0571, 0x0578, 0x0580, 0x0580, 0x0585, 0x058a, 0x058a, 0x0590, - 0x0596, 0x059b, 0x059b, 0x059f, 0x05a4, 0x05a4, 0x05b3, 0x05bc, - 0x05c1, 0x05c5, 0x05c5, 0x05c8, 0x05cf, 0x05cf, 0x05cf, 0x05d3, - 0x05d3, 0x05d7, 0x05dc, 0x05e3, 0x05eb, 0x05ef, 0x05f3, 0x05fa, - 0x05ff, 0x0604, 0x060a, 0x0610, 0x0615, 0x0619, 0x0620, 0x0629, - 0x0630, 0x0634, 0x0642, 0x0649, 0x0651, 0x0658, 0x065e, 0x066b, + 0x0540, 0x054b, 0x0552, 0x0558, 0x055e, 0x0565, 0x0565, 0x056c, + 0x056c, 0x056c, 0x0572, 0x0572, 0x0572, 0x0575, 0x0575, 0x057c, + 0x057c, 0x0582, 0x0589, 0x0591, 0x0591, 0x0596, 0x059b, 0x059b, + 0x05a1, 0x05a7, 0x05ac, 0x05ac, 0x05b0, 0x05b5, 0x05b5, 0x05c4, + 0x05cd, 0x05d2, 0x05d6, 0x05d6, 0x05d9, 0x05e0, 0x05e0, 0x05e0, + 0x05e4, 0x05e4, 0x05e8, 0x05ed, 0x05f4, 0x05fc, 0x0600, 0x0604, + 0x060b, 0x0610, 0x0615, 0x061b, 0x0621, 0x0629, 0x062d, 0x0634, + 0x063d, 0x0644, 0x0648, 0x0656, 0x065d, 0x0665, 0x066c, 0x0672, // Entry 100 - 13F - 0x066f, 0x066f, 0x067c, 0x0681, 0x0687, 0x068d, 0x0692, 0x069a, - 0x06a0, 0x06a6, 0x06ab, 0x06b0, 0x06b5, 0x06c0, 0x06c0, 0x06c5, - 0x06d4, 0x06de, 0x06e3, 0x06e9, 0x06ed, 0x06f1, 0x06f1, 0x06fc, - 0x0704, 0x070a, 0x0717, 0x0717, 0x071d, 0x071d, 0x0721, 0x072c, - 0x072c, 0x072f, 0x072f, 0x073e, 0x0747, 0x0747, 0x0754, 0x0760, - 0x0766, 0x0768, 0x076e, 0x076e, 0x0772, 0x0777, 0x0777, 0x077b, - 0x0784, 0x0784, 0x0799, 0x07a8, 0x07a8, 0x07ad, 0x07b6, 0x07ba, - 0x07c0, 0x07c9, 0x07d7, 0x07d7, 0x07d7, 0x07dd, 0x07e4, 0x07e9, + 0x0686, 0x068a, 0x068a, 0x0697, 0x06ae, 0x06b3, 0x06b9, 0x06bf, + 0x06c4, 0x06cc, 0x06d2, 0x06d8, 0x06dd, 0x06e2, 0x06e7, 0x06f2, + 0x06f2, 0x06f7, 0x0706, 0x0710, 0x0715, 0x071b, 0x071f, 0x0723, + 0x0723, 0x072e, 0x0736, 0x073c, 0x0749, 0x0749, 0x074f, 0x074f, + 0x0753, 0x075e, 0x075e, 0x0761, 0x0761, 0x0770, 0x0779, 0x0779, + 0x0786, 0x0792, 0x0798, 0x079a, 0x07a0, 0x07aa, 0x07ae, 0x07b3, + 0x07b3, 0x07b7, 0x07c0, 0x07c0, 0x07d5, 0x07e4, 0x07e4, 0x07e9, + 0x07f2, 0x07f6, 0x07fc, 0x0805, 0x0813, 0x0813, 0x0813, 0x0819, // Entry 140 - 17F - 0x07e9, 0x07ef, 0x07ef, 0x07f9, 0x0800, 0x0805, 0x0811, 0x0811, - 0x0815, 0x0819, 0x0820, 0x0826, 0x082b, 0x082b, 0x082b, 0x0831, - 0x0837, 0x083e, 0x084b, 0x0856, 0x0856, 0x0861, 0x0867, 0x086d, - 0x0870, 0x0875, 0x0879, 0x0880, 0x0887, 0x088b, 0x0892, 0x089e, - 0x089e, 0x08a2, 0x08a2, 0x08a7, 0x08af, 0x08bb, 0x08bb, 0x08bb, - 0x08c0, 0x08ca, 0x08d2, 0x08df, 0x08e6, 0x08ec, 0x08f2, 0x0903, - 0x0903, 0x0903, 0x090a, 0x090f, 0x0916, 0x091b, 0x0922, 0x0928, - 0x092f, 0x0935, 0x093a, 0x0940, 0x0945, 0x0949, 0x0949, 0x0949, + 0x0820, 0x0825, 0x0831, 0x0837, 0x0837, 0x083e, 0x0845, 0x084a, + 0x0856, 0x0862, 0x0866, 0x086a, 0x0870, 0x0876, 0x087b, 0x087b, + 0x087b, 0x0881, 0x0887, 0x088e, 0x089b, 0x08a6, 0x08a6, 0x08b1, + 0x08b7, 0x08bd, 0x08c0, 0x08c5, 0x08c9, 0x08d0, 0x08d7, 0x08db, + 0x08e2, 0x08ee, 0x08ee, 0x08f2, 0x08f2, 0x08f7, 0x08ff, 0x090b, + 0x090b, 0x090b, 0x0910, 0x091a, 0x0922, 0x092f, 0x0936, 0x093c, + 0x0942, 0x0953, 0x0953, 0x0953, 0x095a, 0x095f, 0x0966, 0x096b, + 0x0972, 0x0978, 0x097f, 0x0985, 0x098a, 0x0990, 0x0995, 0x0999, // Entry 180 - 1BF - 0x0949, 0x094f, 0x094f, 0x0955, 0x0959, 0x0965, 0x0965, 0x096f, - 0x0976, 0x097b, 0x097e, 0x0984, 0x0989, 0x0989, 0x0989, 0x0990, - 0x0994, 0x099a, 0x09a2, 0x09aa, 0x09b3, 0x09b8, 0x09bc, 0x09c3, - 0x09c9, 0x09ce, 0x09d2, 0x09e2, 0x09ed, 0x09f8, 0x09ff, 0x0a05, - 0x0a10, 0x0a17, 0x0a1f, 0x0a25, 0x0a2a, 0x0a2a, 0x0a31, 0x0a46, - 0x0a4b, 0x0a54, 0x0a5b, 0x0a5b, 0x0a60, 0x0a68, 0x0a75, 0x0a75, - 0x0a7d, 0x0a81, 0x0a8c, 0x0a92, 0x0a96, 0x0a9a, 0x0a9a, 0x0aa0, - 0x0aa9, 0x0aae, 0x0aba, 0x0aba, 0x0ac1, 0x0acf, 0x0ad3, 0x0ae4, + 0x0999, 0x0999, 0x0999, 0x099f, 0x099f, 0x09a5, 0x09a9, 0x09b5, + 0x09b5, 0x09bf, 0x09c6, 0x09cb, 0x09ce, 0x09d4, 0x09d9, 0x09d9, + 0x09d9, 0x09e0, 0x09e4, 0x09ea, 0x09f2, 0x09fa, 0x0a03, 0x0a08, + 0x0a0c, 0x0a13, 0x0a19, 0x0a1e, 0x0a22, 0x0a32, 0x0a3d, 0x0a48, + 0x0a4f, 0x0a55, 0x0a60, 0x0a67, 0x0a6f, 0x0a75, 0x0a7a, 0x0a7a, + 0x0a81, 0x0a96, 0x0a9b, 0x0aa4, 0x0aad, 0x0aad, 0x0ab2, 0x0aba, + 0x0ac7, 0x0ad5, 0x0add, 0x0ae1, 0x0aec, 0x0af2, 0x0af6, 0x0afb, + 0x0afb, 0x0b01, 0x0b0a, 0x0b0f, 0x0b1b, 0x0b1b, 0x0b22, 0x0b33, // Entry 1C0 - 1FF - 0x0aed, 0x0af5, 0x0afb, 0x0b00, 0x0b05, 0x0b15, 0x0b20, 0x0b27, - 0x0b30, 0x0b3b, 0x0b41, 0x0b41, 0x0b41, 0x0b41, 0x0b49, 0x0b49, - 0x0b52, 0x0b52, 0x0b52, 0x0b59, 0x0b59, 0x0b65, 0x0b6a, 0x0b6a, - 0x0b77, 0x0b7e, 0x0b88, 0x0b88, 0x0b88, 0x0b8d, 0x0b91, 0x0b91, - 0x0b91, 0x0b91, 0x0b98, 0x0b9b, 0x0ba3, 0x0ba8, 0x0bbc, 0x0bc4, - 0x0bc9, 0x0bd2, 0x0bd2, 0x0bd9, 0x0bdf, 0x0be9, 0x0bee, 0x0bee, - 0x0bf7, 0x0bfe, 0x0c03, 0x0c03, 0x0c0b, 0x0c17, 0x0c1c, 0x0c1c, - 0x0c25, 0x0c28, 0x0c33, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c47, 0x0c52, + 0x0b37, 0x0b48, 0x0b51, 0x0b59, 0x0b5f, 0x0b64, 0x0b69, 0x0b79, + 0x0b84, 0x0b8b, 0x0b94, 0x0b9e, 0x0ba4, 0x0ba4, 0x0bb4, 0x0bb4, + 0x0bb4, 0x0bbc, 0x0bbc, 0x0bc5, 0x0bc5, 0x0bc5, 0x0bcc, 0x0bd2, + 0x0bde, 0x0be3, 0x0be3, 0x0bf0, 0x0bf7, 0x0c01, 0x0c01, 0x0c01, + 0x0c06, 0x0c0a, 0x0c0a, 0x0c0a, 0x0c0a, 0x0c11, 0x0c14, 0x0c1c, + 0x0c21, 0x0c35, 0x0c3d, 0x0c42, 0x0c4b, 0x0c4b, 0x0c52, 0x0c58, + 0x0c62, 0x0c67, 0x0c67, 0x0c70, 0x0c77, 0x0c7c, 0x0c7c, 0x0c84, + 0x0c90, 0x0c95, 0x0c95, 0x0c9e, 0x0ca1, 0x0cac, 0x0cb4, 0x0cb4, // Entry 200 - 23F - 0x0c5b, 0x0c66, 0x0c6e, 0x0c75, 0x0c83, 0x0c89, 0x0c8f, 0x0c8f, - 0x0c96, 0x0c9c, 0x0ca2, 0x0ca9, 0x0cb9, 0x0cc1, 0x0cc1, 0x0cc1, - 0x0cc6, 0x0ccc, 0x0cd3, 0x0cd8, 0x0cde, 0x0ce1, 0x0ce9, 0x0ce9, - 0x0cf0, 0x0cf7, 0x0cf7, 0x0cfe, 0x0d09, 0x0d12, 0x0d12, 0x0d19, - 0x0d19, 0x0d23, 0x0d23, 0x0d2a, 0x0d30, 0x0d37, 0x0d3c, 0x0d56, - 0x0d5c, 0x0d63, 0x0d6a, 0x0d6e, 0x0d71, 0x0d71, 0x0d71, 0x0d71, - 0x0d71, 0x0d78, 0x0d78, 0x0d7d, 0x0d83, 0x0d89, 0x0d8f, 0x0d94, - 0x0d9c, 0x0d9c, 0x0da3, 0x0da3, 0x0da8, 0x0dac, 0x0db0, 0x0db7, + 0x0cb4, 0x0cc0, 0x0ccc, 0x0cd8, 0x0ce4, 0x0cec, 0x0cf3, 0x0d01, + 0x0d07, 0x0d0d, 0x0d0d, 0x0d14, 0x0d1a, 0x0d20, 0x0d27, 0x0d37, + 0x0d3c, 0x0d3c, 0x0d3c, 0x0d41, 0x0d47, 0x0d4e, 0x0d53, 0x0d59, + 0x0d5c, 0x0d64, 0x0d64, 0x0d6b, 0x0d72, 0x0d72, 0x0d79, 0x0d87, + 0x0d90, 0x0d90, 0x0d97, 0x0d97, 0x0da1, 0x0da1, 0x0da8, 0x0dae, + 0x0db5, 0x0dba, 0x0dd2, 0x0dd8, 0x0ddf, 0x0de6, 0x0dea, 0x0ded, + 0x0ded, 0x0ded, 0x0ded, 0x0ded, 0x0df4, 0x0df4, 0x0df9, 0x0dff, + 0x0e05, 0x0e0b, 0x0e10, 0x0e18, 0x0e21, 0x0e28, 0x0e28, 0x0e2d, // Entry 240 - 27F - 0x0dbc, 0x0dbc, 0x0dc3, 0x0dcb, 0x0de0, 0x0de0, 0x0de6, 0x0df9, - 0x0dfd, 0x0e18, 0x0e1c, 0x0e32, 0x0e32, 0x0e41, 0x0e52, 0x0e61, - 0x0e6e, 0x0e78, 0x0e86, 0x0e9c, 0x0eac, 0x0ebe, 0x0ebe, 0x0ecd, - 0x0edc, 0x0ee7, 0x0eee, 0x0f02, 0x0f14, 0x0f1b, 0x0f27, 0x0f38, - 0x0f4f, 0x0f62, -} // Size: 1244 bytes - -var hyLangStr string = "" + // Size: 6740 bytes - "աֆարերենաբխազերենաֆրիկաանսաքաներենամհարերենարաբերենասամերենադրբեջաներենբ" + - "աշկիրերենբելառուսերենբուլղարերենբամբարաբենգալերենտիբեթերենբրետոներենբոս" + - "նիերենկատալաներենչեչեներենկորսիկերենչեխերենչուվաշերենուելսերենդանիերենգ" + - "երմաներենջոնգքհաէվեհունարենանգլերենէսպերանտոիսպաներենէստոներենբասկերենպ" + - "արսկերենֆիններենֆիջիերենֆարյորերենֆրանսերենարևմտյան ֆրիզերենիռլանդերենգ" + - "ալիսերենգուարանիգուջարաթիմեներենհաուսաեբրայերենհինդիխորվաթերենհաիթերենհ" + - "ունգարերենհայերենինդոնեզերենիգբոսիխուան յիիսլանդերենիտալերենինուկտիտուտ" + - "ճապոներենճավայերենվրացերենկիկույուղազախերենկալաալիսուտքմերերենկաննադակո" + - "րեերենքաշմիրերենքրդերենկոռներենղրղզերենլատիներենլյուքսեմբուրգերենգանդալ" + - "ինգալալաոսերենլիտվերենլուբա-կատանգալատվիերենմալագասերենմաորիմակեդոներեն" + - "մալայալամմոնղոլերենմարաթիմալայերենմալթերենբիրմայերենհյուսիսային նդեբելե" + - "նեպալերենհոլանդերեննորվեգերեն նյունորսկնորվեգերեն բուկմոլակվիտաներենօջի" + - "բվաօրոմոօրիյաօսերենփենջաբերենպալիլեհերենփուշթուպորտուգալերենքեչուառոման" + - "շերենռունդիռումիներենռուսերենքինյարվանդասանսկրիտսինդհիհյուսիսային սամիս" + - "անգոսինհալերենսլովակերենսլովեներենշոնասոմալիերենալբաներենսերբերենհյուսի" + - "սային սոտոսունդաներենշվեդերենսուահիլիթամիլերենթելուգուտաջիկերենթայերենթ" + - "իգրինիաթուրքմեներենցվանատոնգերենթուրքերենցոնգաթաթարերենթաիտերենույղուրե" + - "րենուկրաիներենուրդուուզբեկերենվենդավիետնամերենվոլապյուկվալոներենվոլոֆքս" + - "ոզաիդիշյորուբաժուանգչինարենզուլուսերենաչեհերենակոլերենադանգմերենադիղերե" + - "նթունիսական արաբերենաղեմայներենաքքադերենհին անգլերենարամեերենմապուչիալժ" + - "իրական արաբերենեգիպտական արաբերենասուամերիկյան ժեստերի լեզուաստուրերենբ" + - "եմբաբենաարևմտյան բելոչիբոդոաքուզերենկաբուաներենչիգաշերոկիսորանի (քրդերե" + - "ն)ղպտերենղրիմյան թուրքերենթաիթազարմաստորին սորբիերենդուալաջոլա-ֆոնյիէմբ" + - "ուէֆիկերենհին եգիպտերենֆիլիպիներենտորնադելեն ֆիններենֆոներենհին ֆրանսեր" + - "ենարևելյան ֆրիզերենֆրիուլիերենգաերենգագաուզերենզրադաշտական դարիհին բարձ" + - "ր գերմաներենգոթերենհին հունարենշվեյցարական գերմաներենվայուգուսիհավայիեր" + - "ենվերին սորբիերենսյան չինարեննգոմբամաշամեկաբիլերենկամբատիապմակոնդեկուբա" + - "վերդիանուկոյրա չինիկալենջինկոմի-պերմյակկոնկանիշամբալաբաֆիալանգիլակոտահյ" + - "ուսիսային լուրիերենլուոլույամասաիմերումորիսյենմաքուա-մետտոմետամոհավքարև" + - "մտյան մարիերենմունդանգմազանդարաներեննամակվասիոհին նորվեգերեննկոնուերնյա" + - "նկոլեօսեյջիօսմաներենպանգասինաներենպահլավերենպանպանգաերենպապիամենտոպալաո" + - "ւերենպիկարդերենփենսիլվանական գերմաներենպլատագերմաներենհին պարսկերենպալա" + - "նտինների գերմաներենփյունիկերենպիեմոնտերենպոնտիկերենպոնպեերենպրուսերենհի" + - "ն պրովենսիալկիչեռաջաստաներենռապանուիռարոտոնգանռոմանիոլերենռիֆերենռոմբոռ" + - "ոմաներենռոտումանռուսիներենռովիանաարոմաներենռվասամբուրուսանգուհարավային " + - "քրդերենսենակոյրաբորո սեննիհին իռլանդերենտաշելհիթհարավային սամիլուլե սամ" + - "իինարի սամիսկոլտ սամիտուլուտիմնետեսոտերենոթեթումտիգրետիվերենտոկելաուցախ" + - "ուրտլինգիտթալիշերենտամաշեկտոկ փիսինտուրոյոտարոկոցակոներենցիմշյանտումբու" + - "կաթուվալուերենտասավաքտուվերենկենտրոնատլասյան թամազիխտուդմուրտերենուգարի" + - "տերենումբունդուռուտերենվաիվենետիկերենվեպսկերենարևմտյան ֆլամադերենվոդերե" + - "նվորովունջովալսերենվոլայտավարայերենվաշովարլպիրիվու չինարենսոգայաոյապսկե" + - "րենյանգբենյեմբաերենսապոտեկերենզեյլանդերենզենագաստանդարտ մարոկական թամազ" + - "իղտզունիերենառանց լեզվային բովանդակությանզազաերենժամանակակից ստանդարտ ա" + - "րաբերենավստրիական գերմաներենշվեյցարական բարձր գերմաներենավստրալիական ան" + - "գլերենկանադական անգլերենբրիտանական անգլերենամերիկյան անգլերենլատինաամեր" + - "իկյան իսպաներենեվրոպական իսպաներենմեքսիկական իսպաներենկանադական ֆրանսեր" + - "ենշվեյցարական ֆրանսերենֆլամանդերենբրազիլական պորտուգալերենեվրոպական պոր" + - "տուգալերենմոլդովերենկոնգոյի սուահիլիպարզեցված չինարենավանդական չինարեն" - -var hyLangIdx = []uint16{ // 610 elements + 0x0e31, 0x0e35, 0x0e3c, 0x0e41, 0x0e41, 0x0e48, 0x0e50, 0x0e65, + 0x0e65, 0x0e6b, 0x0e7e, 0x0e82, 0x0e9d, 0x0ea1, 0x0eb7, 0x0eb7, + 0x0ec6, 0x0ed7, 0x0ee6, 0x0ef3, 0x0efd, 0x0f0b, 0x0f21, 0x0f31, + 0x0f43, 0x0f43, 0x0f52, 0x0f61, 0x0f6c, 0x0f73, 0x0f87, 0x0f99, + 0x0fa0, 0x0fac, 0x0fbd, 0x0fd4, 0x0fe7, +} // Size: 1250 bytes + +const hyLangStr string = "" + // Size: 8542 bytes + "աֆարերենաբխազերենաֆրիկաանսաքանամհարերենարագոներենարաբերենասամերենավարերե" + + "նայմարաադրբեջաներենբաշկիրերենբելառուսերենբուլղարերենբիսլամաբամբարաբենգա" + + "լերենտիբեթերենբրետոներենբոսնիերենկատալաներենչեչեներենչամոռոկորսիկերենչե" + + "խերենեկեղեցական սլավոներենչուվաշերենուելսերենդանիերենգերմաներենմալդիվեր" + + "ենջոնգքհաէվեհունարենանգլերենէսպերանտոիսպաներենէստոներենբասկերենպարսկերե" + + "նֆուլահֆիններենֆիջիերենֆարյորերենֆրանսերենարևմտաֆրիզերենիռլանդերենգաելե" + + "րենգալիսերենգուարանիգուջարաթիմեներենհաուսաեբրայերենհինդիխորվաթերենխառնա" + + "կերտ հայիթերենհունգարերենհայերենհերերոինդոնեզերենիգբոսիչուանիդոիսլանդեր" + + "ենիտալերենինուկտիտուտճապոներենճավայերենվրացերենկիկույուկուանյամաղազախեր" + + "ենկալաալիսուտքմերերենկաննադակորեերենկանուրիքաշմիրերենքրդերենկոմիերենկոռ" + + "ներենղրղզերենլատիներենլյուքսեմբուրգերենգանդալիմբուրգերենլինգալալաոսերեն" + + "լիտվերենլուբա-կատանգալատվիերենմալգաշերենմարշալերենմաորիմակեդոներենմալայ" + + "ալամմոնղոլերենմարաթիմալայերենմալթայերենբիրմայերեննաուրուհյուսիսային նդե" + + "բելենեպալերեննդոնգահոլանդերեննորվեգերեն նյունորսկնորվեգերեն բուկմոլհարա" + + "վային նդեբելենավախոնյանջաօքսիտաներենօջիբվաօրոմոօրիյաօսերենփենջաբերենպալ" + + "իլեհերենփուշթուպորտուգալերենկեչուառոմանշերենռունդիռումիներենռուսերենկին" + + "յառուանդասանսկրիտսարդիներենսինդհիհյուսիսային սաամիսանգոսինհալերենսլովակ" + + "երենսլովեներենշոնասոմալիերենալբաներենսերբերենսվազերենհարավային սոթոսուն" + + "դաներենշվեդերենսուահիլիթամիլերենթելուգուտաջիկերենթայերենտիգրինյաթուրքմե" + + "ներենցվանատոնգերենթուրքերենցոնգաթաթարերենթաիտերենույղուրերենուկրաիներեն" + + "ուրդուուզբեկերենվենդավիետնամերենվոլապյուկվալոներենվոլոֆքոսաիդիշյորուբաժ" + + "ուանգչինարենզուլուերենաչեհերենաչոլիադանգմերենադիղերենթունիսական արաբերե" + + "նաղեմայներենաքքադերենալեութերենհարավային ալթայերենհին անգլերենանգիկաարա" + + "մեերենմապուչիարապահոալժիրական արաբերենեգիպտական արաբերենասուամերիկյան ժ" + + "եստերի լեզուաստուրերենավադհիբալիերենբասաաբեմբաբենաարևմտաբելուջիերենբինի" + + "սիկսիկաբոդոաքուզբուգիերենբիլինկաբուաներենչիգատրուկերենմարիչոկտոչերոկիշա" + + "յենսորանի քրդերենղպտերենղրիմյան թուրքերենդակոտադարգիներենթաիթադոգրիբզար" + + "մաստորին սորբերենդուալաջոլա-ֆոնյիդազագաէմբուէֆիկհին եգիպտերենէկաջուկէվո" + + "նդոֆիլիպիներենտորնադելեն ֆիններենֆոնհին ֆրանսերենարևելաֆրիզերենֆրիուլիե" + + "րենգայերենգագաուզերենզրադաշտական դարիգեեզկիրիբատիհին վերին գերմաներենգո" + + "րոնտալոգոթերենհին հունարենշվեյցարական գերմաներենվայուուգուսիգվիչինհավայ" + + "իերենհիլիգայնոնհմոնգվերին սորբերենսյան չինարենհուպաիբաներենիբիբիոիլոկեր" + + "ենինգուշերենլոժբաննգոմբամաշամեկաբիլերենկաչիներենջյուկամբատիապմակոնդեկաբ" + + "ուվերդյանուկորոկխասիկոյրա չինիկակոկալենջինկիմբունդուպերմյակ կոմիերենկոն" + + "կանիկպելլեերենկարաչայ-բալկարերենկարելերենկուրուխշամբալաբաֆիաքյոլներենկո" + + "ւմիկերենլադինոլանգիլեզգիերենլակոտալոզիհյուսիսային լուրիերենլուբա-լուլու" + + "ալունդալուոմիզոլույամադուրերենմագահիմայթիլիմակասարերենմասաիմոկշայերենմե" + + "նդեմերումորիսյենմաքուա-մետտոմետամիկմակմինանգկաբաումանիպուրիմոհավքմոսսիա" + + "րևմտամարիերենմունդանգբազմալեզուկրիկմիրանդերենէրզյամազանդարաներեննեապոլե" + + "րեննամանեվարերեննիասերեննիուերենկվասիոնգիեմբուննոգայերենհին նորվեգերենն" + + "կոհյուսիսային սոթոնուերնյանկոլեօսեյջօսմաներենպանգասինաներենպահլավերենպա" + + "մպանգաերենպապյամենտուպալաուերենպիկարդերենփենսիլվանական գերմաներենպլատագ" + + "երմաներենհին պարսկերենպալատինյան գերմաներենփյունիկերենպիեմոնտերենպոնտեր" + + "ենպոնպեերենպրուսերենհին պրովանսերենքիչեռաջաստաներենռապանուիռարոտոնգաներ" + + "ենռոմանիոլերենռիֆերենռոմբոռոմաներենռոտումանռուսիներենռովիանաարոմաներենռ" + + "վասանդավեյակուտերենսամբուրուսանտալինգամբայսանգուսիցիլիերենշոտլանդերենհա" + + "րավային քրդերենսենակոյրաբորո սեննիհին իռլանդերենտաշելհիթշաներենհարավայի" + + "ն սաամերենլուլե սաամիինարի սաամերենսկոլտ սաամերենսոնինկեսրանան տոնգոսահ" + + "ոերենսուկումակոմորերենասորերենտուլուտեմնետեսոտերենոտետումտիգրետիվերենտո" + + "կելաուցախուրկլինգոնտլինգիտթալիշերենտամաշեկտոկ փիսինտուրոյոտարոկոցակոներ" + + "ենցիմշյանտումբուկաթուվալուերենտասավաքտուվերենկենտրոնատլասյան թամազիղտու" + + "դմուրտերենուգարիտերենումբունդուռուտերենվաիվենետերենվեպսերենարևմտաֆլաման" + + "դերենվոդերենվորովունջովալսերենվոլայտավարայերենվաշովարլպիրիվու չինարենկա" + + "լմիկերենսոգայաոյափերենյանգբենեմբականտոներենսապոտեկերենզեյլանդերենզենագա" + + "ընդհանուր մարոկյան թամազիղտզունիերենառանց լեզվային բովանդակությանզազաեր" + + "ենարդի ընդհանուր արաբերենավստրիական գերմաներենշվեյցարական վերին գերմանե" + + "րենավստրալիական անգլերենկանադական անգլերենբրիտանական անգլերենամերիկյան " + + "անգլերենլատինամերիկյան իսպաներենեվրոպական իսպաներենմեքսիկական իսպաներեն" + + "կանադական ֆրանսերենշվեյցարական ֆրանսերենստորին սաքսոներենֆլամանդերենբրա" + + "զիլական պորտուգալերենեվրոպական պորտուգալերենմոլդովերենսերբա-խորվաթերենկ" + + "ոնգոյի սուահիլիպարզեցված չինարենավանդական չինարեն" + +var hyLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x0044, 0x0056, 0x0056, - 0x0066, 0x0076, 0x0076, 0x0076, 0x008e, 0x00a2, 0x00ba, 0x00d0, - 0x00d0, 0x00de, 0x00f2, 0x0104, 0x0118, 0x012a, 0x0140, 0x0152, - 0x0152, 0x0166, 0x0166, 0x0174, 0x0174, 0x0188, 0x019a, 0x01aa, - 0x01be, 0x01be, 0x01cc, 0x01d2, 0x01e2, 0x01f2, 0x0204, 0x0216, - 0x0228, 0x0238, 0x024a, 0x024a, 0x025a, 0x026a, 0x027e, 0x0290, - 0x02b1, 0x02c5, 0x02c5, 0x02d7, 0x02e7, 0x02f9, 0x0307, 0x0313, - 0x0325, 0x032f, 0x032f, 0x0343, 0x0353, 0x0369, 0x0377, 0x0377, + 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x003c, 0x004e, 0x0062, + 0x0072, 0x0082, 0x0092, 0x009e, 0x00b6, 0x00ca, 0x00e2, 0x00f8, + 0x0106, 0x0114, 0x0128, 0x013a, 0x014e, 0x0160, 0x0176, 0x0188, + 0x0194, 0x01a8, 0x01a8, 0x01b6, 0x01df, 0x01f3, 0x0205, 0x0215, + 0x0229, 0x023d, 0x024b, 0x0251, 0x0261, 0x0271, 0x0283, 0x0295, + 0x02a7, 0x02b7, 0x02c9, 0x02d5, 0x02e5, 0x02f5, 0x0309, 0x031b, + 0x0337, 0x034b, 0x035b, 0x036d, 0x037d, 0x038f, 0x039d, 0x03a9, + 0x03bb, 0x03c5, 0x03c5, 0x03d9, 0x03fe, 0x0414, 0x0422, 0x042e, // Entry 40 - 7F - 0x0377, 0x038d, 0x038d, 0x0395, 0x03a8, 0x03a8, 0x03a8, 0x03bc, - 0x03cc, 0x03e2, 0x03f4, 0x0406, 0x0416, 0x0416, 0x0426, 0x0426, - 0x0438, 0x044e, 0x045e, 0x046c, 0x047c, 0x047c, 0x0490, 0x049e, - 0x049e, 0x04ae, 0x04be, 0x04d0, 0x04f2, 0x04fc, 0x04fc, 0x050a, - 0x051a, 0x052a, 0x0543, 0x0555, 0x056b, 0x056b, 0x0575, 0x058b, - 0x059d, 0x05b1, 0x05bd, 0x05cf, 0x05df, 0x05f3, 0x05f3, 0x0618, - 0x062a, 0x062a, 0x063e, 0x0665, 0x0688, 0x0688, 0x0688, 0x0688, - 0x069e, 0x06aa, 0x06b4, 0x06be, 0x06ca, 0x06de, 0x06e6, 0x06f4, + 0x042e, 0x0444, 0x0444, 0x044c, 0x045a, 0x045a, 0x0460, 0x0474, + 0x0484, 0x049a, 0x04ac, 0x04be, 0x04ce, 0x04ce, 0x04de, 0x04f0, + 0x0502, 0x0518, 0x0528, 0x0536, 0x0546, 0x0554, 0x0568, 0x0576, + 0x0586, 0x0596, 0x05a6, 0x05b8, 0x05da, 0x05e4, 0x05fc, 0x060a, + 0x061a, 0x062a, 0x0643, 0x0655, 0x0669, 0x067d, 0x0687, 0x069d, + 0x06af, 0x06c3, 0x06cf, 0x06e1, 0x06f5, 0x0709, 0x0717, 0x073c, + 0x074e, 0x075a, 0x076e, 0x0795, 0x07b8, 0x07d9, 0x07e5, 0x07f1, + 0x0807, 0x0813, 0x081d, 0x0827, 0x0833, 0x0847, 0x084f, 0x085d, // Entry 80 - BF - 0x0702, 0x071c, 0x0728, 0x073c, 0x0748, 0x075c, 0x076c, 0x0782, - 0x0792, 0x0792, 0x079e, 0x07bd, 0x07c7, 0x07db, 0x07ef, 0x0803, - 0x0803, 0x080b, 0x081f, 0x0831, 0x0841, 0x0841, 0x0860, 0x0876, - 0x0886, 0x0896, 0x08a8, 0x08b8, 0x08ca, 0x08d8, 0x08e8, 0x0900, - 0x090a, 0x091a, 0x092c, 0x0936, 0x0948, 0x0958, 0x096e, 0x0984, - 0x0990, 0x09a4, 0x09ae, 0x09c4, 0x09d6, 0x09e8, 0x09f2, 0x09fc, - 0x0a04, 0x0a12, 0x0a1e, 0x0a2c, 0x0a42, 0x0a52, 0x0a62, 0x0a76, - 0x0a86, 0x0aab, 0x0aab, 0x0ab3, 0x0ac1, 0x0ad3, 0x0ad3, 0x0ad3, + 0x086b, 0x0885, 0x0891, 0x08a5, 0x08b1, 0x08c5, 0x08d5, 0x08ed, + 0x08fd, 0x0911, 0x091d, 0x093e, 0x0948, 0x095c, 0x0970, 0x0984, + 0x0984, 0x098c, 0x09a0, 0x09b2, 0x09c2, 0x09d2, 0x09ed, 0x0a03, + 0x0a13, 0x0a23, 0x0a35, 0x0a45, 0x0a57, 0x0a65, 0x0a75, 0x0a8d, + 0x0a97, 0x0aa7, 0x0ab9, 0x0ac3, 0x0ad5, 0x0ae5, 0x0afb, 0x0b11, + 0x0b1d, 0x0b31, 0x0b3b, 0x0b51, 0x0b63, 0x0b75, 0x0b7f, 0x0b87, + 0x0b8f, 0x0b9d, 0x0ba9, 0x0bb7, 0x0bcb, 0x0bdb, 0x0be5, 0x0bf9, + 0x0c09, 0x0c2e, 0x0c2e, 0x0c36, 0x0c44, 0x0c56, 0x0c56, 0x0c6a, // Entry C0 - FF - 0x0ad3, 0x0ad3, 0x0aea, 0x0aea, 0x0afc, 0x0b0a, 0x0b0a, 0x0b0a, - 0x0b2d, 0x0b2d, 0x0b2d, 0x0b50, 0x0b58, 0x0b84, 0x0b98, 0x0b98, - 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, - 0x0b98, 0x0ba2, 0x0ba2, 0x0baa, 0x0baa, 0x0baa, 0x0bc7, 0x0bc7, - 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, - 0x0bc7, 0x0bcf, 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0be1, - 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0bf7, 0x0bff, 0x0bff, 0x0bff, - 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c0b, 0x0c0b, 0x0c28, + 0x0c6a, 0x0c8f, 0x0ca6, 0x0cb2, 0x0cc4, 0x0cd2, 0x0cd2, 0x0ce0, + 0x0d03, 0x0d03, 0x0d03, 0x0d03, 0x0d26, 0x0d2e, 0x0d5a, 0x0d6e, + 0x0d6e, 0x0d7a, 0x0d7a, 0x0d8a, 0x0d8a, 0x0d94, 0x0d94, 0x0d94, + 0x0d94, 0x0d94, 0x0d9e, 0x0d9e, 0x0da6, 0x0da6, 0x0da6, 0x0dc8, + 0x0dc8, 0x0dc8, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dde, 0x0dde, 0x0dde, + 0x0dde, 0x0dde, 0x0de6, 0x0df0, 0x0df0, 0x0e02, 0x0e02, 0x0e0c, + 0x0e0c, 0x0e0c, 0x0e0c, 0x0e0c, 0x0e0c, 0x0e22, 0x0e2a, 0x0e2a, + 0x0e2a, 0x0e3c, 0x0e44, 0x0e44, 0x0e4e, 0x0e4e, 0x0e5a, 0x0e64, // Entry 100 - 13F - 0x0c36, 0x0c36, 0x0c57, 0x0c57, 0x0c57, 0x0c57, 0x0c61, 0x0c61, - 0x0c61, 0x0c61, 0x0c61, 0x0c6b, 0x0c6b, 0x0c8a, 0x0c8a, 0x0c96, - 0x0c96, 0x0ca9, 0x0ca9, 0x0ca9, 0x0cb3, 0x0cc3, 0x0cc3, 0x0cdc, - 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cf2, - 0x0d17, 0x0d25, 0x0d25, 0x0d25, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d5f, - 0x0d75, 0x0d81, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0db6, 0x0db6, - 0x0db6, 0x0db6, 0x0db6, 0x0ddc, 0x0ddc, 0x0ddc, 0x0ddc, 0x0dea, - 0x0dea, 0x0e01, 0x0e2c, 0x0e36, 0x0e36, 0x0e40, 0x0e40, 0x0e40, + 0x0e7f, 0x0e8d, 0x0e8d, 0x0eae, 0x0eae, 0x0eae, 0x0eba, 0x0ece, + 0x0ed8, 0x0ed8, 0x0ed8, 0x0ee4, 0x0ee4, 0x0eee, 0x0eee, 0x0f0b, + 0x0f0b, 0x0f17, 0x0f17, 0x0f2a, 0x0f2a, 0x0f36, 0x0f40, 0x0f48, + 0x0f48, 0x0f61, 0x0f6f, 0x0f6f, 0x0f6f, 0x0f6f, 0x0f7b, 0x0f7b, + 0x0f7b, 0x0f91, 0x0fb6, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fd5, 0x0fd5, + 0x0fd5, 0x0ff1, 0x1007, 0x1015, 0x102b, 0x102b, 0x102b, 0x102b, + 0x104a, 0x1052, 0x1062, 0x1062, 0x1062, 0x1088, 0x1088, 0x1088, + 0x109a, 0x10a8, 0x10a8, 0x10bf, 0x10ea, 0x10f8, 0x10f8, 0x1102, // Entry 140 - 17F - 0x0e40, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e71, 0x0e88, - 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, - 0x0e94, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0eb2, 0x0eb2, - 0x0eb2, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ec4, 0x0ed2, 0x0eee, - 0x0eee, 0x0eee, 0x0eee, 0x0eee, 0x0eee, 0x0f01, 0x0f01, 0x0f01, - 0x0f01, 0x0f11, 0x0f11, 0x0f28, 0x0f36, 0x0f36, 0x0f36, 0x0f36, - 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f44, 0x0f4e, 0x0f4e, 0x0f4e, - 0x0f4e, 0x0f4e, 0x0f58, 0x0f58, 0x0f58, 0x0f58, 0x0f58, 0x0f58, + 0x110e, 0x110e, 0x110e, 0x1122, 0x1122, 0x1136, 0x1136, 0x1140, + 0x115b, 0x1172, 0x117c, 0x118c, 0x1198, 0x11a8, 0x11bc, 0x11bc, + 0x11bc, 0x11c8, 0x11d4, 0x11e0, 0x11e0, 0x11e0, 0x11e0, 0x11e0, + 0x11f2, 0x1204, 0x120c, 0x1216, 0x1216, 0x1216, 0x1216, 0x121e, + 0x122c, 0x1248, 0x1248, 0x1250, 0x1250, 0x125a, 0x125a, 0x126d, + 0x126d, 0x126d, 0x1275, 0x1285, 0x1299, 0x12b8, 0x12c6, 0x12c6, + 0x12da, 0x12fd, 0x12fd, 0x12fd, 0x130f, 0x131d, 0x132b, 0x1335, + 0x1347, 0x135b, 0x135b, 0x1367, 0x1371, 0x1371, 0x1371, 0x1383, // Entry 180 - 1BF - 0x0f58, 0x0f64, 0x0f64, 0x0f64, 0x0f64, 0x0f8d, 0x0f8d, 0x0f8d, - 0x0f8d, 0x0f8d, 0x0f95, 0x0f95, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, - 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0fa9, 0x0fa9, 0x0fa9, - 0x0fa9, 0x0fa9, 0x0fb3, 0x0fc3, 0x0fc3, 0x0fda, 0x0fe2, 0x0fe2, - 0x0fe2, 0x0fe2, 0x0fe2, 0x0fee, 0x0fee, 0x100f, 0x101f, 0x101f, - 0x101f, 0x101f, 0x101f, 0x101f, 0x101f, 0x101f, 0x103b, 0x103b, - 0x103b, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x104f, - 0x104f, 0x104f, 0x106a, 0x106a, 0x1070, 0x1070, 0x107a, 0x107a, + 0x1383, 0x1383, 0x1383, 0x138f, 0x138f, 0x138f, 0x1397, 0x13c0, + 0x13c0, 0x13d9, 0x13d9, 0x13e5, 0x13ed, 0x13f5, 0x13ff, 0x13ff, + 0x13ff, 0x1413, 0x1413, 0x141f, 0x142d, 0x1443, 0x1443, 0x144d, + 0x144d, 0x1461, 0x1461, 0x146b, 0x1475, 0x1485, 0x1485, 0x149c, + 0x14a4, 0x14b0, 0x14c8, 0x14c8, 0x14da, 0x14e6, 0x14f0, 0x150c, + 0x151c, 0x1530, 0x1538, 0x154c, 0x154c, 0x154c, 0x154c, 0x1556, + 0x1572, 0x1572, 0x1586, 0x158e, 0x158e, 0x15a0, 0x15b0, 0x15c0, + 0x15c0, 0x15cc, 0x15de, 0x15f0, 0x160b, 0x160b, 0x1611, 0x1630, // Entry 1C0 - 1FF - 0x107a, 0x108a, 0x108a, 0x108a, 0x1096, 0x10a8, 0x10c4, 0x10d8, - 0x10f0, 0x1104, 0x1118, 0x112c, 0x115b, 0x1179, 0x1192, 0x11bf, - 0x11d5, 0x11eb, 0x11ff, 0x1211, 0x1223, 0x123e, 0x1246, 0x1246, - 0x125e, 0x126e, 0x1282, 0x129a, 0x12a8, 0x12b2, 0x12c4, 0x12d4, - 0x12e8, 0x12f6, 0x130a, 0x1310, 0x1310, 0x1310, 0x1310, 0x1322, - 0x1322, 0x1322, 0x1322, 0x1322, 0x132e, 0x132e, 0x132e, 0x132e, - 0x134f, 0x134f, 0x1357, 0x1357, 0x1357, 0x1374, 0x138f, 0x138f, - 0x139f, 0x139f, 0x139f, 0x139f, 0x139f, 0x139f, 0x13ba, 0x13cd, + 0x163a, 0x163a, 0x163a, 0x164a, 0x164a, 0x164a, 0x1654, 0x1666, + 0x1682, 0x1696, 0x16ae, 0x16c4, 0x16d8, 0x16ec, 0x16ec, 0x171b, + 0x1739, 0x1752, 0x177b, 0x1791, 0x17a7, 0x17b7, 0x17c9, 0x17db, + 0x17f8, 0x1800, 0x1800, 0x1818, 0x1828, 0x1844, 0x185c, 0x186a, + 0x1874, 0x1886, 0x1896, 0x18aa, 0x18b8, 0x18cc, 0x18d2, 0x18e0, + 0x18f4, 0x18f4, 0x1906, 0x1906, 0x1914, 0x1914, 0x1922, 0x192e, + 0x1942, 0x1958, 0x1958, 0x1979, 0x1979, 0x1981, 0x1981, 0x1981, + 0x199e, 0x19b9, 0x19b9, 0x19c9, 0x19d7, 0x19d7, 0x19d7, 0x19d7, // Entry 200 - 23F - 0x13e0, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, - 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13ff, - 0x1409, 0x1411, 0x141d, 0x1429, 0x1433, 0x1441, 0x1451, 0x145d, - 0x145d, 0x146b, 0x147d, 0x148b, 0x148b, 0x149c, 0x14aa, 0x14b6, - 0x14c8, 0x14d6, 0x14d6, 0x14e8, 0x1500, 0x150e, 0x151e, 0x154d, - 0x1565, 0x157b, 0x158f, 0x159f, 0x15a5, 0x15bb, 0x15cd, 0x15f2, - 0x15f2, 0x1600, 0x1608, 0x1614, 0x1624, 0x1632, 0x1644, 0x164c, - 0x165c, 0x1671, 0x1671, 0x1671, 0x1679, 0x167f, 0x1691, 0x169f, + 0x19d7, 0x19fa, 0x1a0f, 0x1a2a, 0x1a45, 0x1a53, 0x1a53, 0x1a6a, + 0x1a6a, 0x1a7a, 0x1a7a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a9c, 0x1a9c, + 0x1aac, 0x1aac, 0x1ab8, 0x1ac2, 0x1aca, 0x1ad6, 0x1ae2, 0x1aec, + 0x1afa, 0x1b0a, 0x1b16, 0x1b24, 0x1b32, 0x1b44, 0x1b52, 0x1b52, + 0x1b63, 0x1b71, 0x1b7d, 0x1b8f, 0x1b9d, 0x1b9d, 0x1baf, 0x1bc7, + 0x1bd5, 0x1be5, 0x1c14, 0x1c2c, 0x1c42, 0x1c56, 0x1c66, 0x1c6c, + 0x1c7e, 0x1c8e, 0x1cb0, 0x1cb0, 0x1cbe, 0x1cc6, 0x1cd2, 0x1ce2, + 0x1cf0, 0x1d02, 0x1d0a, 0x1d1a, 0x1d2f, 0x1d43, 0x1d43, 0x1d4b, // Entry 240 - 27F - 0x16b1, 0x16b1, 0x16b1, 0x16c7, 0x16c7, 0x16dd, 0x16e9, 0x171d, - 0x172f, 0x1767, 0x1777, 0x17af, 0x17af, 0x17d8, 0x180e, 0x1837, - 0x185a, 0x187f, 0x18a2, 0x18d3, 0x18f8, 0x191f, 0x191f, 0x1944, - 0x196d, 0x196d, 0x1983, 0x19b2, 0x19df, 0x19f3, 0x19f3, 0x1a12, - 0x1a33, 0x1a54, -} // Size: 1244 bytes - -var idLangStr string = "" + // Size: 3958 bytes - "AfarAbkhazAvestaAfrikaansAkanAmharikAragonArabAssamAvarAymaraAzerbaijanB" + - "ashkirBelarusiaBulgariaBislamaBambaraBengaliTibetBretonBosniaKatalanChec" + - "henChamorroKorsikaKreeCheskaBahasa Gereja SlavoniaChuvashWelshDanskJerma" + - "nDivehiDzongkhaEweYunaniInggrisEsperantoSpanyolEstiBaskPersiaFulaSuomiFi" + - "jiFaroPrancisFrisia BaratIrlandiaGaelik SkotlandiaGalisiaGuaraniGujarati" + - "ManxHausaIbraniHindiHiri MotuKroasiaHaitiHungariaArmeniaHereroInterlingu" + - "aIndonesiaInterlingueIgboSichuan YiInupiakIdoIslandiaItaliaInuktitutJepa" + - "ngJawaGeorgiaKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannadaKoreaKanuri" + - "KashmirKurdiKomiKornishKirgizLatinLuksemburgGandaLimburgiaLingalaLaoLitu" + - "aviLuba-KatangaLatviMalagasiMarshallMaoriMakedoniaMalayalamMongoliaMarat" + - "hiMelayuMaltaMyanmarNauruNdebele UtaraNepaliNdongaBelandaNynorsk Norwegi" + - "aBokmål NorwegiaNdebele SelatanNavajoNyanjaOsitaniaOjibwaOromoOriyaOsset" + - "iaPunjabiPaliPolskiPashtoPortugisQuechuaReto-RomanRundiRumaniaRusiaKinya" + - "rwandaSanskertaSardiniaSindhiSami UtaraSangoSinhalaSlovakSlovenSamoaShon" + - "aSomaliAlbaniaSerbSwatiSotho SelatanSundaSwediaSwahiliTamilTeluguTajikTh" + - "aiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkrainaUrduUzbek" + - "VendaVietnamVolapukWalloonWolofXhosaYiddishYorubaZhuangTionghoaZuluAcehA" + - "coliAdangmeAdygeiArab TunisiaAfrihiliAghemAinuAkkadiaAlabamaAleutAltai S" + - "elatanInggris KunoAngikaAramAraukanArapahoArab AlgeriaArawakArab MarokoA" + - "rab MesirAsuBahasa Isyarat AmerikaAsturAwadhiBaluchiBaliBavariaBasaBamun" + - "Batak TobaGhomalaBejaBembaBetawiBenaBafutBalochi BaratBhojpuriBikolBiniB" + - "anjarKomSiksikaBrajBodoAkooseBuriatBugisBuluBlinMedumbaKadoKaribCayugaAt" + - "samSebuanoKigaChibchaChagataiChuukeMariJargon ChinookKoktawChipewyanCher" + - "okeeCheyenneKurdi SoraniKoptikTatar KrimeaKashubiaDakotaDargwaTaitaDelaw" + - "areSlaveDogribDinkaZarmaDogriSorbia RendahDualaBelanda TengahJola-FonyiD" + - "yulaDazagaEmbuEfikMesir KunoEkajukElamInggris Abad PertengahanEwondoFang" + - "FilipinoFonPrancis Abad PertengahanPrancis KunoArpitanFrisia UtaraFrisia" + - " TimurFriuliGaGagauzGayoGbayaGeezGilbertGilakiJerman Abad PertengahanJer" + - "man KunoGondiGorontaloGothikGreboYunani KunoJerman (Swiss)GusiiGwich’inH" + - "aidaHawaiiHindi FijiHiligaynonHititHmongSorbia AtasHupaIbanIbibioIlokoIn" + - "gushetiaLojbanNgombaMachameIbrani-PersiaIbrani-ArabKara-KalpakKabyleKach" + - "inJjuKambaKawiKabardiKanembuTyapMakondeKabuverdianuKenyangKoroKhasiKhota" + - "nKoyra ChiiniKakoKalenjinKimbunduKomi-PermyakKonkaniKosreKpelleKarachai " + - "BalkarKrioKareliaKurukShambalaBafiaDialek KolschKumykKutenaiLadinoLangiL" + - "ahndaLambaLezghiaLiguriaLakotaMongoLoziLuri UtaraLuba-LuluaLuisenoLundaL" + - "uoMizoLuyiaLazMaduraMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMand" + - "arMendeMeruMorisienIrlandia Abad PertengahanMakhuwa-Meettometa’MikmakMin" + - "angkabauManchuriaManipuriMohawkMossiMundangBeberapa BahasaBahasa Muskoge" + - "eMirandaMarwariMentawaiMyeneEryzaMazanderaniNeapolitanNamaJerman RendahN" + - "ewariNiasNiueaKwasioNgiemboonNogaiNorse KunoN’KoSotho UtaraNuerNewari Kl" + - "asikNyamweziNyankoleNyoroNzimaOsageTurki OsmaniPangasinaPahleviPampangaP" + - "apiamentoPalauJerman PennsylvaniaPersia KunoFunisiaPohnpeiaProvencal Lam" + - "aKʼicheʼRajasthaniRapanuiRarotongaRomboRomaniRotumaMakedo-RumaniaRwaSand" + - "aweSakhaAram SamariaSamburuSasakSantaliNgambaiSanguSisiliaSkotlandiaKurd" + - "i SelatanSenecaSenaSeriSelkupKoyraboro SenniIrlandia KunoTachelhitShanAr" + - "ab SuwaSidamoSilesia BawahSelayarSami SelatanLule SamiInari SamiSkolt Sa" + - "miSoninkeSogdienSranan TongoSererSahoSukumaSusuSumeriaKomoriaSuriah Klas" + - "ikSuriahSilesiaTuluTimneTesoTerenoTetunTigreTivTokelauKlingonTlingitTama" + - "shekNyasa TongaTok PisinTuroyoTarokoTsimshiaTat MuslimTumbukaTuvaluTasaw" + - "aqTuviniaTamazight Maroko TengahUdmurtUgaritUmbunduRootVaiVenesiaVotiaVu" + - "njoWalserWalamoWaraiWashoWarlpiriKalmukSogaYaoYapoisYangbenYembaKantonZa" + - "potekBlissymbolZenagaTamazight Maroko StandarZuniTidak ada konten lingui" + - "stikZazaArab Standar ModernJerman Tinggi (Swiss)Spanyol Amerika LatinSpa" + - "nyol (Eropa)Spanyol MeksikoPortugis (Eropa)MoldaviaSerbo-KroasiaKongo Sw" + - "ahiliTionghoa (Aksara Sederhana)Tionghoa (Aksara Tradisional)" - -var idLangIdx = []uint16{ // 610 elements + 0x1d51, 0x1d5f, 0x1d6d, 0x1d75, 0x1d75, 0x1d89, 0x1d9f, 0x1d9f, + 0x1db5, 0x1dc1, 0x1df5, 0x1e07, 0x1e3f, 0x1e4f, 0x1e7b, 0x1e7b, + 0x1ea4, 0x1eda, 0x1f03, 0x1f26, 0x1f4b, 0x1f6e, 0x1f9d, 0x1fc2, + 0x1fe9, 0x1fe9, 0x200e, 0x2037, 0x2058, 0x206e, 0x209d, 0x20ca, + 0x20de, 0x20fd, 0x211c, 0x213d, 0x215e, +} // Size: 1250 bytes + +const idLangStr string = "" + // Size: 3994 bytes + "AfarAbkhazAvestaAfrikaansAkanAmharikAragonArabAssamAvarAymaraAzerbaijani" + + "BashkirBelarusiaBulgariaBislamaBambaraBengaliTibetBretonBosniaKatalanChe" + + "chenChamorroKorsikaKreeCheskaBahasa Gereja SlavoniaChuvashWelshDanskJerm" + + "anDivehiDzongkhaEweYunaniInggrisEsperantoSpanyolEstiBasquePersiaFulaSuom" + + "iFijiFaroePrancisFrisia BaratIrlandiaGaelik SkotlandiaGalisiaGuaraniGuja" + + "ratManxHausaIbraniHindiHiri MotuKroasiaKreol HaitiHungariaArmeniaHereroI" + + "nterlinguaIndonesiaInterlingueIgboSichuan YiInupiakIdoIslandiaItaliaInuk" + + "titutJepangJawaGeorgiaKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannadaKo" + + "reaKanuriKashmirKurdiKomiKornishKirgizLatinLuksemburgGandaLimburgiaLinga" + + "laLaoLituaviLuba-KatangaLatviMalagasiMarshallMaoriMakedoniaMalayalamMong" + + "oliaMarathiMelayuMaltaBurmaNauruNdebele UtaraNepaliNdongaBelandaNynorsk " + + "NorwegiaBokmål NorwegiaNdebele SelatanNavajoNyanjaOsitaniaOjibwaOromoOri" + + "yaOssetiaPunjabiPaliPolskiPashtoPortugisQuechuaReto-RomanRundiRumaniaRus" + + "iaKinyarwandaSanskertaSardiniaSindhiSami UtaraSangoSinhalaSlovakSlovenSa" + + "moaShonaSomaliAlbaniaSerbSwatiSotho SelatanSundaSwediaSwahiliTamilTelugu" + + "TajikThaiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkrainaUr" + + "duUzbekVendaVietnamVolapukWalloonWolofXhosaYiddishYorubaZhuangTionghoaZu" + + "luAcehAcoliAdangmeAdygeiArab TunisiaAfrihiliAghemAinuAkkadiaAlabamaAleut" + + "Altai SelatanInggris KunoAngikaAramMapucheArapahoArab AljazairArawakArab" + + " MarokoArab MesirAsuBahasa Isyarat AmerikaAsturiaAwadhiBaluchiBaliBavari" + + "aBasaBamunBatak TobaGhomalaBejaBembaBetawiBenaBafutBalochi BaratBhojpuri" + + "BikolBiniBanjarKomSiksikaBrajBodoAkooseBuriatBugisBuluBlinMedumbaKadoKar" + + "ibCayugaAtsamCebuanoKigaChibchaChagataiChuukeMariJargon ChinookKoktawChi" + + "pewyanCherokeeCheyenneKurdi SoraniKoptikTatar KrimeaSeselwa Kreol Pranci" + + "sKashubiaDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriSorbia Renda" + + "hDualaBelanda Abad PertengahanJola-FonyiDyulaDazagaEmbuEfikMesir KunoEka" + + "jukElamInggris Abad PertengahanEwondoFangFilipinoFonPrancis Abad Perteng" + + "ahanPrancis KunoArpitanFrisia UtaraFrisia TimurFriuliGaGagauzGayoGbayaGe" + + "ezGilbertGilakiJerman Abad PertengahanJerman KunoGondiGorontaloGotikGreb" + + "oYunani KunoJerman (Swiss)GusiiGwich’inHaidaHawaiiHindi FijiHiligaynonHi" + + "titHmongSorbia AtasHupaIbanIbibioIlokoIngushetiaLojbanNgombaMachameIbran" + + "i-PersiaIbrani-ArabKara-KalpakKabyleKachinJjuKambaKawiKabardiKanembuTyap" + + "MakondeKabuverdianuKenyangKoroKhasiKhotanKoyra ChiiniKakoKalenjinKimbund" + + "uKomi-PermyakKonkaniKosreKpelleKarachai BalkarKrioKareliaKurukShambalaBa" + + "fiaDialek KolschKumykKutenaiLadinoLangiLahndaLambaLezghiaLiguriaLakotaMo" + + "ngoLoziLuri UtaraLuba-LuluaLuisenoLundaLuoMizoLuyiaLazMaduraMafaMagahiMa" + + "ithiliMakasarMandingoMasaiMabaMokshaMandarMendeMeruMorisienIrlandia Abad" + + " PertengahanMakhuwa-MeettoMeta’MikmakMinangkabauManchuriaManipuriMohawkM" + + "ossiMundangBeberapa BahasaBahasa MuskogeeMirandaMarwariMentawaiMyeneEryz" + + "aMazanderaniNeapolitanNamaJerman RendahNewariNiasNiueaKwasioNgiemboonNog" + + "aiNorse KunoN’KoSotho UtaraNuerNewari KlasikNyamweziNyankoleNyoroNzimaOs" + + "ageTurki OsmaniPangasinaPahleviPampangaPapiamentoPalauPidgin NigeriaJerm" + + "an PennsylvaniaPersia KunoFunisiaPohnpeiaPrusiaProvencal LamaKʼicheʼRaja" + + "sthaniRapanuiRarotongaRomboRomaniRotumaAromaniaRwaSandaweSakhaAram Samar" + + "iaSamburuSasakSantaliNgambaiSanguSisiliaSkotlandiaKurdi SelatanSenecaSen" + + "aSeriSelkupKoyraboro SenniIrlandia KunoTachelhitShanArab SuwaSidamoSiles" + + "ia RendahSelayarSami SelatanLule SamiInari SamiSkolt SamiSoninkeSogdienS" + + "ranan TongoSererSahoSukumaSusuSumeriaKomoriaSuriah KlasikSuriahSilesiaTu" + + "luTimneTesoTerenoTetunTigreTivTokelauKlingonTlingitTamashekNyasa TongaTo" + + "k PisinTuroyoTarokoTsimshiaTat MuslimTumbukaTuvaluTasawaqTuviniaTamazigh" + + "t Maroko TengahUdmurtUgaritUmbunduRootVaiVenesiaVotiaVunjoWalserWalamoWa" + + "raiWashoWarlpiriKalmukSogaYaoYapoisYangbenYembaKantonZapotekBlissymbolZe" + + "nagaTamazight Maroko StandarZuniTidak ada konten linguistikZazaArab Stan" + + "dar ModernJerman Tinggi (Swiss)Inggris (Inggris)Spanyol (Eropa)Portugis " + + "(Eropa)MoldaviaSerbo-KroasiaKongo SwahiliTionghoa (Aksara Sederhana)Tion" + + "ghoa (Aksara Tradisional)" + +var idLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000a, 0x0010, 0x0019, 0x001d, 0x0024, 0x002a, - 0x002e, 0x0033, 0x0037, 0x003d, 0x0047, 0x004e, 0x0057, 0x005f, - 0x0066, 0x006d, 0x0074, 0x0079, 0x007f, 0x0085, 0x008c, 0x0093, - 0x009b, 0x00a2, 0x00a6, 0x00ac, 0x00c2, 0x00c9, 0x00ce, 0x00d3, - 0x00d9, 0x00df, 0x00e7, 0x00ea, 0x00f0, 0x00f7, 0x0100, 0x0107, - 0x010b, 0x010f, 0x0115, 0x0119, 0x011e, 0x0122, 0x0126, 0x012d, - 0x0139, 0x0141, 0x0152, 0x0159, 0x0160, 0x0168, 0x016c, 0x0171, - 0x0177, 0x017c, 0x0185, 0x018c, 0x0191, 0x0199, 0x01a0, 0x01a6, + 0x002e, 0x0033, 0x0037, 0x003d, 0x0048, 0x004f, 0x0058, 0x0060, + 0x0067, 0x006e, 0x0075, 0x007a, 0x0080, 0x0086, 0x008d, 0x0094, + 0x009c, 0x00a3, 0x00a7, 0x00ad, 0x00c3, 0x00ca, 0x00cf, 0x00d4, + 0x00da, 0x00e0, 0x00e8, 0x00eb, 0x00f1, 0x00f8, 0x0101, 0x0108, + 0x010c, 0x0112, 0x0118, 0x011c, 0x0121, 0x0125, 0x012a, 0x0131, + 0x013d, 0x0145, 0x0156, 0x015d, 0x0164, 0x016b, 0x016f, 0x0174, + 0x017a, 0x017f, 0x0188, 0x018f, 0x019a, 0x01a2, 0x01a9, 0x01af, // Entry 40 - 7F - 0x01b1, 0x01ba, 0x01c5, 0x01c9, 0x01d3, 0x01da, 0x01dd, 0x01e5, - 0x01eb, 0x01f4, 0x01fa, 0x01fe, 0x0205, 0x020a, 0x0210, 0x0218, - 0x021e, 0x0229, 0x022e, 0x0235, 0x023a, 0x0240, 0x0247, 0x024c, - 0x0250, 0x0257, 0x025d, 0x0262, 0x026c, 0x0271, 0x027a, 0x0281, - 0x0284, 0x028b, 0x0297, 0x029c, 0x02a4, 0x02ac, 0x02b1, 0x02ba, - 0x02c3, 0x02cb, 0x02d2, 0x02d8, 0x02dd, 0x02e4, 0x02e9, 0x02f6, - 0x02fc, 0x0302, 0x0309, 0x0319, 0x0329, 0x0338, 0x033e, 0x0344, - 0x034c, 0x0352, 0x0357, 0x035c, 0x0363, 0x036a, 0x036e, 0x0374, + 0x01ba, 0x01c3, 0x01ce, 0x01d2, 0x01dc, 0x01e3, 0x01e6, 0x01ee, + 0x01f4, 0x01fd, 0x0203, 0x0207, 0x020e, 0x0213, 0x0219, 0x0221, + 0x0227, 0x0232, 0x0237, 0x023e, 0x0243, 0x0249, 0x0250, 0x0255, + 0x0259, 0x0260, 0x0266, 0x026b, 0x0275, 0x027a, 0x0283, 0x028a, + 0x028d, 0x0294, 0x02a0, 0x02a5, 0x02ad, 0x02b5, 0x02ba, 0x02c3, + 0x02cc, 0x02d4, 0x02db, 0x02e1, 0x02e6, 0x02eb, 0x02f0, 0x02fd, + 0x0303, 0x0309, 0x0310, 0x0320, 0x0330, 0x033f, 0x0345, 0x034b, + 0x0353, 0x0359, 0x035e, 0x0363, 0x036a, 0x0371, 0x0375, 0x037b, // Entry 80 - BF - 0x037a, 0x0382, 0x0389, 0x0393, 0x0398, 0x039f, 0x03a4, 0x03af, - 0x03b8, 0x03c0, 0x03c6, 0x03d0, 0x03d5, 0x03dc, 0x03e2, 0x03e8, - 0x03ed, 0x03f2, 0x03f8, 0x03ff, 0x0403, 0x0408, 0x0415, 0x041a, - 0x0420, 0x0427, 0x042c, 0x0432, 0x0437, 0x043b, 0x0443, 0x044a, - 0x0450, 0x0455, 0x045a, 0x0460, 0x0465, 0x046b, 0x0471, 0x0478, - 0x047c, 0x0481, 0x0486, 0x048d, 0x0494, 0x049b, 0x04a0, 0x04a5, - 0x04ac, 0x04b2, 0x04b8, 0x04c0, 0x04c4, 0x04c8, 0x04cd, 0x04d4, - 0x04da, 0x04e6, 0x04ee, 0x04f3, 0x04f7, 0x04fe, 0x0505, 0x050a, + 0x0381, 0x0389, 0x0390, 0x039a, 0x039f, 0x03a6, 0x03ab, 0x03b6, + 0x03bf, 0x03c7, 0x03cd, 0x03d7, 0x03dc, 0x03e3, 0x03e9, 0x03ef, + 0x03f4, 0x03f9, 0x03ff, 0x0406, 0x040a, 0x040f, 0x041c, 0x0421, + 0x0427, 0x042e, 0x0433, 0x0439, 0x043e, 0x0442, 0x044a, 0x0451, + 0x0457, 0x045c, 0x0461, 0x0467, 0x046c, 0x0472, 0x0478, 0x047f, + 0x0483, 0x0488, 0x048d, 0x0494, 0x049b, 0x04a2, 0x04a7, 0x04ac, + 0x04b3, 0x04b9, 0x04bf, 0x04c7, 0x04cb, 0x04cf, 0x04d4, 0x04db, + 0x04e1, 0x04ed, 0x04f5, 0x04fa, 0x04fe, 0x0505, 0x050c, 0x0511, // Entry C0 - FF - 0x050a, 0x0517, 0x0523, 0x0529, 0x052d, 0x0534, 0x0534, 0x053b, - 0x0547, 0x054d, 0x0558, 0x0562, 0x0565, 0x057b, 0x0580, 0x0580, - 0x0586, 0x058d, 0x0591, 0x0598, 0x059c, 0x05a1, 0x05ab, 0x05b2, - 0x05b6, 0x05bb, 0x05c1, 0x05c5, 0x05ca, 0x05ca, 0x05d7, 0x05df, - 0x05e4, 0x05e8, 0x05ee, 0x05f1, 0x05f8, 0x05f8, 0x05f8, 0x05fc, - 0x05fc, 0x0600, 0x0606, 0x060c, 0x0611, 0x0615, 0x0619, 0x0620, - 0x0624, 0x0629, 0x062f, 0x0634, 0x063b, 0x063f, 0x0646, 0x064e, - 0x0654, 0x0658, 0x0666, 0x066c, 0x0675, 0x067d, 0x0685, 0x0691, + 0x0511, 0x051e, 0x052a, 0x0530, 0x0534, 0x053b, 0x053b, 0x0542, + 0x054f, 0x054f, 0x0555, 0x0560, 0x056a, 0x056d, 0x0583, 0x058a, + 0x058a, 0x0590, 0x0597, 0x059b, 0x05a2, 0x05a6, 0x05ab, 0x05b5, + 0x05bc, 0x05c0, 0x05c5, 0x05cb, 0x05cf, 0x05d4, 0x05d4, 0x05e1, + 0x05e9, 0x05ee, 0x05f2, 0x05f8, 0x05fb, 0x0602, 0x0602, 0x0602, + 0x0606, 0x0606, 0x060a, 0x0610, 0x0616, 0x061b, 0x061f, 0x0623, + 0x062a, 0x062e, 0x0633, 0x0639, 0x063e, 0x0645, 0x0649, 0x0650, + 0x0658, 0x065e, 0x0662, 0x0670, 0x0676, 0x067f, 0x0687, 0x068f, // Entry 100 - 13F - 0x0697, 0x0697, 0x06a3, 0x06ab, 0x06b1, 0x06b7, 0x06bc, 0x06c4, - 0x06c9, 0x06cf, 0x06d4, 0x06d9, 0x06de, 0x06eb, 0x06eb, 0x06f0, - 0x06fe, 0x0708, 0x070d, 0x0713, 0x0717, 0x071b, 0x071b, 0x0725, - 0x072b, 0x072f, 0x0747, 0x0747, 0x074d, 0x074d, 0x0751, 0x0759, - 0x0759, 0x075c, 0x075c, 0x0774, 0x0780, 0x0787, 0x0793, 0x079f, - 0x07a5, 0x07a7, 0x07ad, 0x07ad, 0x07b1, 0x07b6, 0x07b6, 0x07ba, - 0x07c1, 0x07c7, 0x07de, 0x07e9, 0x07e9, 0x07ee, 0x07f7, 0x07fd, - 0x0802, 0x080d, 0x081b, 0x081b, 0x081b, 0x0820, 0x082a, 0x082f, + 0x069b, 0x06a1, 0x06a1, 0x06ad, 0x06c2, 0x06ca, 0x06d0, 0x06d6, + 0x06db, 0x06e3, 0x06e8, 0x06ee, 0x06f3, 0x06f8, 0x06fd, 0x070a, + 0x070a, 0x070f, 0x0727, 0x0731, 0x0736, 0x073c, 0x0740, 0x0744, + 0x0744, 0x074e, 0x0754, 0x0758, 0x0770, 0x0770, 0x0776, 0x0776, + 0x077a, 0x0782, 0x0782, 0x0785, 0x0785, 0x079d, 0x07a9, 0x07b0, + 0x07bc, 0x07c8, 0x07ce, 0x07d0, 0x07d6, 0x07d6, 0x07da, 0x07df, + 0x07df, 0x07e3, 0x07ea, 0x07f0, 0x0807, 0x0812, 0x0812, 0x0817, + 0x0820, 0x0825, 0x082a, 0x0835, 0x0843, 0x0843, 0x0843, 0x0848, // Entry 140 - 17F - 0x082f, 0x0835, 0x083f, 0x0849, 0x084e, 0x0853, 0x085e, 0x085e, - 0x0862, 0x0866, 0x086c, 0x0871, 0x087b, 0x087b, 0x087b, 0x0881, - 0x0887, 0x088e, 0x089b, 0x08a6, 0x08a6, 0x08b1, 0x08b7, 0x08bd, - 0x08c0, 0x08c5, 0x08c9, 0x08d0, 0x08d7, 0x08db, 0x08e2, 0x08ee, - 0x08f5, 0x08f9, 0x08f9, 0x08fe, 0x0904, 0x0910, 0x0910, 0x0910, - 0x0914, 0x091c, 0x0924, 0x0930, 0x0937, 0x093c, 0x0942, 0x0951, - 0x0955, 0x0955, 0x095c, 0x0961, 0x0969, 0x096e, 0x097b, 0x0980, - 0x0987, 0x098d, 0x0992, 0x0998, 0x099d, 0x09a4, 0x09a4, 0x09ab, + 0x0852, 0x0857, 0x0857, 0x085d, 0x0867, 0x0871, 0x0876, 0x087b, + 0x0886, 0x0886, 0x088a, 0x088e, 0x0894, 0x0899, 0x08a3, 0x08a3, + 0x08a3, 0x08a9, 0x08af, 0x08b6, 0x08c3, 0x08ce, 0x08ce, 0x08d9, + 0x08df, 0x08e5, 0x08e8, 0x08ed, 0x08f1, 0x08f8, 0x08ff, 0x0903, + 0x090a, 0x0916, 0x091d, 0x0921, 0x0921, 0x0926, 0x092c, 0x0938, + 0x0938, 0x0938, 0x093c, 0x0944, 0x094c, 0x0958, 0x095f, 0x0964, + 0x096a, 0x0979, 0x097d, 0x097d, 0x0984, 0x0989, 0x0991, 0x0996, + 0x09a3, 0x09a8, 0x09af, 0x09b5, 0x09ba, 0x09c0, 0x09c5, 0x09cc, // Entry 180 - 1BF - 0x09ab, 0x09b1, 0x09b1, 0x09b6, 0x09ba, 0x09c4, 0x09c4, 0x09ce, - 0x09d5, 0x09da, 0x09dd, 0x09e1, 0x09e6, 0x09e6, 0x09e9, 0x09ef, - 0x09f3, 0x09f9, 0x0a01, 0x0a08, 0x0a10, 0x0a15, 0x0a19, 0x0a1f, - 0x0a25, 0x0a2a, 0x0a2e, 0x0a36, 0x0a4f, 0x0a5d, 0x0a64, 0x0a6a, - 0x0a75, 0x0a7e, 0x0a86, 0x0a8c, 0x0a91, 0x0a91, 0x0a98, 0x0aa7, - 0x0ab6, 0x0abd, 0x0ac4, 0x0acc, 0x0ad1, 0x0ad6, 0x0ae1, 0x0ae1, - 0x0aeb, 0x0aef, 0x0afc, 0x0b02, 0x0b06, 0x0b0b, 0x0b0b, 0x0b11, - 0x0b1a, 0x0b1f, 0x0b29, 0x0b29, 0x0b2f, 0x0b3a, 0x0b3e, 0x0b4b, + 0x09cc, 0x09d3, 0x09d3, 0x09d9, 0x09d9, 0x09de, 0x09e2, 0x09ec, + 0x09ec, 0x09f6, 0x09fd, 0x0a02, 0x0a05, 0x0a09, 0x0a0e, 0x0a0e, + 0x0a11, 0x0a17, 0x0a1b, 0x0a21, 0x0a29, 0x0a30, 0x0a38, 0x0a3d, + 0x0a41, 0x0a47, 0x0a4d, 0x0a52, 0x0a56, 0x0a5e, 0x0a77, 0x0a85, + 0x0a8c, 0x0a92, 0x0a9d, 0x0aa6, 0x0aae, 0x0ab4, 0x0ab9, 0x0ab9, + 0x0ac0, 0x0acf, 0x0ade, 0x0ae5, 0x0aec, 0x0af4, 0x0af9, 0x0afe, + 0x0b09, 0x0b09, 0x0b13, 0x0b17, 0x0b24, 0x0b2a, 0x0b2e, 0x0b33, + 0x0b33, 0x0b39, 0x0b42, 0x0b47, 0x0b51, 0x0b51, 0x0b57, 0x0b62, // Entry 1C0 - 1FF - 0x0b53, 0x0b5b, 0x0b60, 0x0b65, 0x0b6a, 0x0b76, 0x0b7f, 0x0b86, - 0x0b8e, 0x0b98, 0x0b9d, 0x0b9d, 0x0bb0, 0x0bb0, 0x0bbb, 0x0bbb, - 0x0bc2, 0x0bc2, 0x0bc2, 0x0bca, 0x0bca, 0x0bd8, 0x0be1, 0x0be1, - 0x0beb, 0x0bf2, 0x0bfb, 0x0bfb, 0x0bfb, 0x0c00, 0x0c06, 0x0c0c, - 0x0c0c, 0x0c0c, 0x0c1a, 0x0c1d, 0x0c24, 0x0c29, 0x0c35, 0x0c3c, - 0x0c41, 0x0c48, 0x0c48, 0x0c4f, 0x0c54, 0x0c5b, 0x0c65, 0x0c65, - 0x0c72, 0x0c78, 0x0c7c, 0x0c80, 0x0c86, 0x0c95, 0x0ca2, 0x0ca2, - 0x0cab, 0x0caf, 0x0cb8, 0x0cbe, 0x0ccb, 0x0cd2, 0x0cde, 0x0ce7, + 0x0b66, 0x0b73, 0x0b7b, 0x0b83, 0x0b88, 0x0b8d, 0x0b92, 0x0b9e, + 0x0ba7, 0x0bae, 0x0bb6, 0x0bc0, 0x0bc5, 0x0bc5, 0x0bd3, 0x0be6, + 0x0be6, 0x0bf1, 0x0bf1, 0x0bf8, 0x0bf8, 0x0bf8, 0x0c00, 0x0c06, + 0x0c14, 0x0c1d, 0x0c1d, 0x0c27, 0x0c2e, 0x0c37, 0x0c37, 0x0c37, + 0x0c3c, 0x0c42, 0x0c48, 0x0c48, 0x0c48, 0x0c50, 0x0c53, 0x0c5a, + 0x0c5f, 0x0c6b, 0x0c72, 0x0c77, 0x0c7e, 0x0c7e, 0x0c85, 0x0c8a, + 0x0c91, 0x0c9b, 0x0c9b, 0x0ca8, 0x0cae, 0x0cb2, 0x0cb6, 0x0cbc, + 0x0ccb, 0x0cd8, 0x0cd8, 0x0ce1, 0x0ce5, 0x0cee, 0x0cf4, 0x0d02, // Entry 200 - 23F - 0x0cf1, 0x0cfb, 0x0d02, 0x0d09, 0x0d15, 0x0d1a, 0x0d1e, 0x0d1e, - 0x0d24, 0x0d28, 0x0d2f, 0x0d36, 0x0d43, 0x0d49, 0x0d50, 0x0d54, - 0x0d59, 0x0d5d, 0x0d63, 0x0d68, 0x0d6d, 0x0d70, 0x0d77, 0x0d77, - 0x0d7e, 0x0d85, 0x0d85, 0x0d8d, 0x0d98, 0x0da1, 0x0da7, 0x0dad, - 0x0dad, 0x0db5, 0x0dbf, 0x0dc6, 0x0dcc, 0x0dd3, 0x0dda, 0x0df1, - 0x0df7, 0x0dfd, 0x0e04, 0x0e08, 0x0e0b, 0x0e12, 0x0e12, 0x0e12, - 0x0e12, 0x0e17, 0x0e17, 0x0e1c, 0x0e22, 0x0e28, 0x0e2d, 0x0e32, - 0x0e3a, 0x0e3a, 0x0e40, 0x0e40, 0x0e44, 0x0e47, 0x0e4d, 0x0e54, - // Entry 240 - 27F - 0x0e59, 0x0e59, 0x0e5f, 0x0e66, 0x0e70, 0x0e70, 0x0e76, 0x0e8e, - 0x0e92, 0x0ead, 0x0eb1, 0x0ec4, 0x0ec4, 0x0ec4, 0x0ed9, 0x0ed9, - 0x0ed9, 0x0ed9, 0x0ed9, 0x0eee, 0x0efd, 0x0f0c, 0x0f0c, 0x0f0c, - 0x0f0c, 0x0f0c, 0x0f0c, 0x0f0c, 0x0f1c, 0x0f24, 0x0f31, 0x0f3e, - 0x0f59, 0x0f76, -} // Size: 1244 bytes - -var isLangStr string = "" + // Size: 4301 bytes - "abkasískaavestískaafríkanskaakanamharískaaragonskaarabískaassamskaavarís" + - "kaaímaraaserskabaskírhvítrússneskabúlgarskabíslamabambarabengalskatíbesk" + - "abretónskabosnískakatalónskatsjetsjenskakamorrókorsískakrítékkneskakirkj" + - "uslavneskasjúvasvelskadanskaþýskadívehídsongkaewegrískaenskaesperantóspæ" + - "nskaeistneskabaskneskapersneskafúlafinnskafídjeyskafæreyskafranskavestur" + - "frísneskaírskaskosk gelískagalíanskagvaranígújaratímanskahásahebreskahin" + - "díhírímótúkróatískahaítískaungverskaarmenskahereróalþjóðatungaindónesísk" + - "ainterlingveígbósísúanjíínúpíakídóíslenskaítalskainúktitútjapanskajavans" + - "kageorgískakongóskakíkújúkúanjamakasakskagrænlenskakmerkannadakóreskakan" + - "úríkasmírskakúrdískakomískakornbreskakirgiskalatínalúxemborgískagandali" + - "mbúrgískalingalalaólitháískalúbakatangalettneskamalagasískamarshallskama" + - "orímakedónskamalajalammongólskamaratímalaískamaltneskaburmneskanárúskano" + - "rður-ndebelenepalskandongahollenskanýnorskanorskt bókmálsuðurndebelenava" + - "hónjanja; sísjeva; sjevaoksítanískaojibvaoromoóríaossetískapúnjabípalípó" + - "lskapastúportúgalskakvesjúarómanskarúndírúmenskarússneskakínjarvandasans" + - "krítsardínskasindínorðursamískasangósingalískaslóvakískaslóvenskasamóska" + - "shonasómalskaalbanskaserbneskasvatísuðursótósúndanskasænskasvahílítamíls" + - "katelúgútadsjikskataílenskatígrinjatúrkmenskatsúanatongverskatyrkneskats" + - "ongatatarskatahítískaúígúrúkraínskaúrdúúsbekskavendavíetnamskavallónskav" + - "olofsósajiddískajórúbasúangkínverskasúlúakkískaacoliadangmeadýgeafríhílí" + - "aghemakkadískaaleúskafornenskaarameískaarákanískaarapahóaravakskaasuastú" + - "rískaavadíbalúkíbalískabasabejabembabenavesturbalotsíbojpúríbíkolbínísik" + - "sikabraíbódóbúríatbúgískablínkaddókaríbamálkebúanókígasíbsjasjagataísjúk" + - "ískamarísínúksjoktásípevískaCherokee-málsjeyensorani-kúrdískakoptískakr" + - "ímtyrkneskakasúbískadakótadargvataítadelaverslavneskadogríbdinkazarmado" + - "grílágsorbneskadúalamiðhollenskajola-fonyidjúlaembuefíkfornegypskaekajúk" + - "elamítmiðenskaevondófangfilippseyskafónmiðfranskafornfranskanorðurfrísne" + - "skaausturfrísneskafríúlskagagagásgajógbajagísgilberskamiðháþýskafornháþý" + - "skagondígorontalógotneskagerbóforngrískasvissnesk þýskagusiigvísínhaídah" + - "avaískahíligaínonhettitískahmonghásorbneskahúpaíbanílokóingúslojbanngomb" + - "amasjámegyðingapersneskagyðingaarabískakarakalpakkabílekasínkambakavíkab" + - "ardískamakondegrænhöfðeyskakasíkotaskakoyra chiinikalenjinkimbúndúkómí-p" + - "ermyakkonkaníkosraskakpellekarasaíbalkarkúrúksjambalabafíakúmíkkútenaíla" + - "dínskalangílandalambalesgískalakótamongólozinorðurlúríluba-lulualúisenól" + - "úndalúólúsaíluyiamadúrskamagahímaítílímakasarmandingómasaímoksamandarme" + - "ndemerúmáritískamiðírskamakhuwa-meettometa’mikmakmínangkabámansjúmanípúr" + - "ímóhískamossímundangmargvísleg málkríkmarvaríersjamasanderanínapólískan" + - "amalágþýska; lágsaxneskanevaríníasníveskakwasionógaínorrænan’konorðursót" + - "ónúernjamvesínyankolenjórónsímaósagetyrkneska, ottómanpangasínmálpalaví" + - "pampangapapíamentópaláskafornpersneskafönikískaponpeiskafornpróvensalska" + - "kicherajastanírapanúírarótongskarombóromanírúasandavejakútsamversk arame" + - "ískasambúrúsasaksantalísangúsikileyskaskoskasuðurkúrdískasenaselkúpkoír" + - "aboró-sennífornírskatachelhitsjansídamósuðursamískalúlesamískaenaresamís" + - "kaskoltesamískasóninkesogdíenserersúkúmasúsúsúmerskaklassísk sýrlenskasý" + - "rlenskatímnetesóterenótetúmtígretívtókeláskaklingonskatlingittamasjekton" + - "gverska (nyasa)tokpisintsimsískatúmbúkatúvalúskatasawaqtúvínskatamazight" + - "údmúrtúgarítískaúmbúndúrótvaívotískavunjóvalamóvaraívasjóvarlpirikalmúk" + - "skasógajaójapískasapótekblisstáknsenagastaðlað marokkóskt tamazightsúníe" + - "kkert tungumálaefnistöðluð nútímaarabískaausturrísk þýskasvissnesk háþýs" + - "kaáströlsk enskakanadísk enskabresk enskabandarísk enskarómönsk-amerísk " + - "spænskaevrópsk spænskamexíkósk spænskakanadísk franskasvissnesk franskal" + - "ágsaxneskaflæmskabrasílísk portúgalskaevrópsk portúgalskamoldóvskaserbó" + - "króatískaKongó-svahílíkínverska (einfölduð)kínverska (hefðbundin)" - -var isLangIdx = []uint16{ // 610 elements + 0x0d09, 0x0d15, 0x0d1e, 0x0d28, 0x0d32, 0x0d39, 0x0d40, 0x0d4c, + 0x0d51, 0x0d55, 0x0d55, 0x0d5b, 0x0d5f, 0x0d66, 0x0d6d, 0x0d7a, + 0x0d80, 0x0d87, 0x0d8b, 0x0d90, 0x0d94, 0x0d9a, 0x0d9f, 0x0da4, + 0x0da7, 0x0dae, 0x0dae, 0x0db5, 0x0dbc, 0x0dbc, 0x0dc4, 0x0dcf, + 0x0dd8, 0x0dde, 0x0de4, 0x0de4, 0x0dec, 0x0df6, 0x0dfd, 0x0e03, + 0x0e0a, 0x0e11, 0x0e28, 0x0e2e, 0x0e34, 0x0e3b, 0x0e3f, 0x0e42, + 0x0e49, 0x0e49, 0x0e49, 0x0e49, 0x0e4e, 0x0e4e, 0x0e53, 0x0e59, + 0x0e5f, 0x0e64, 0x0e69, 0x0e71, 0x0e71, 0x0e77, 0x0e77, 0x0e7b, + // Entry 240 - 27F + 0x0e7e, 0x0e84, 0x0e8b, 0x0e90, 0x0e90, 0x0e96, 0x0e9d, 0x0ea7, + 0x0ea7, 0x0ead, 0x0ec5, 0x0ec9, 0x0ee4, 0x0ee8, 0x0efb, 0x0efb, + 0x0efb, 0x0f10, 0x0f10, 0x0f10, 0x0f21, 0x0f21, 0x0f21, 0x0f30, + 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f40, + 0x0f48, 0x0f55, 0x0f62, 0x0f7d, 0x0f9a, +} // Size: 1250 bytes + +const isLangStr string = "" + // Size: 4605 bytes + "afárabkasískaavestískaafríkanskaakanamharískaaragonskaarabískaassamskaav" + + "arískaaímaraaserskabaskírhvítrússneskabúlgarskabíslamabambarabengalskatí" + + "beskabretónskabosnískakatalónskatsjetsjenskakamorrókorsískakrítékkneskak" + + "irkjuslavneskasjúvasvelskadanskaþýskadívehídsongkaewegrískaenskaesperant" + + "óspænskaeistneskabaskneskapersneskafúlafinnskafídjeyskafæreyskafranskav" + + "esturfrísneskaírskaskosk gelískagalíanskagvaranígújaratímanskahásahebres" + + "kahindíhírímótúkróatískahaítískaungverskaarmenskahereróalþjóðatungaindón" + + "esískainterlingveígbósísúanjíínúpíakídóíslenskaítalskainúktitútjapanskaj" + + "avanskageorgískakongóskakíkújúkúanjamakasakskagrænlenskakmerkannadakóres" + + "kakanúríkasmírskakúrdískakomískakornbreskakirgiskalatínalúxemborgískagan" + + "dalimbúrgískalingalalaólitháískalúbakatangalettneskamalagasískamarshalls" + + "kamaorímakedónskamalajalammongólskamaratímalaískamaltneskaburmneskanárús" + + "kanorður-ndebelenepalskandongahollenskanýnorskanorskt bókmálsuðurndebele" + + "navahónjanja; sísjeva; sjevaoksítanískaojibvaoromoóríaossetískapúnjabípa" + + "lípólskapastúportúgalskakvesjúarómanskarúndírúmenskarússneskakínjarvanda" + + "sanskrítsardínskasindínorðursamískasangósingalískaslóvakískaslóvenskasam" + + "óskashonasómalskaalbanskaserbneskasvatísuðursótósúndanskasænskasvahílít" + + "amílskatelúgútadsjikskataílenskatígrinjatúrkmenskatsúanatongverskatyrkne" + + "skatsongatatarskatahítískaúígúrúkraínskaúrdúúsbekskavendavíetnamskavolap" + + "ykvallónskavolofsósajiddískajórúbasúangkínverskasúlúakkískaacoliadangmea" + + "dýgeafríhílíaghemaínu (Japan)akkadískaaleúskasuðuraltaískafornenskaangík" + + "aarameískaarákanískaarapahóaravakskaasuastúrískaavadíbalúkíbalískabasaba" + + "munbejabembabenavesturbalotsíbojpúríbíkolbínísiksikabraíbódóbakossibúría" + + "tbúgískablínkaddókaríbamálkajúgaatsamkebúanókígasíbsjasjagataísjúkískama" + + "rísínúksjoktásípevískaCherokee-málsjeyensorani-kúrdískakoptískakrímtyrkn" + + "eskaSeselwa kreólsk franskakasúbískadakótadargvataítadelaverslavneskadog" + + "ríbdinkazarmadogrílágsorbneskadúalamiðhollenskajola-fonyidjúladazagaembu" + + "efíkfornegypskaekajúkelamítmiðenskaevondófangfilippseyskafónmiðfranskafo" + + "rnfranskanorðurfrísneskaausturfrísneskafríúlskagagagásgajógbajagísgilber" + + "skamiðháþýskafornháþýskagondígorontalógotneskagerbóforngrískasvissnesk þ" + + "ýskagusiigvísínhaídahavaískahíligaínonhettitískahmonghásorbneskahúpaíba" + + "nibibioílokóingúslojbanngombamasjámegyðingapersneskagyðingaarabískakarak" + + "alpakkabílekasínjjukambakavíkabardískatyapmakondegrænhöfðeyskakorokasíko" + + "taskakoyra chiinikakokalenjinkimbúndúkómí-permyakkonkaníkosraskakpelleka" + + "rasaíbalkarkarélskakúrúksjambalabafíakölnískakúmíkkútenaíladínskalangíla" + + "ndalambalesgískalakótamongólozinorðurlúríluba-lulualúisenólúndalúólúsaíl" + + "uyiamadúrskamagahímaítílímakasarmandingómasaímoksamandarmendemerúmáritís" + + "kamiðírskamakhuwa-meettometa’mikmakmínangkabámansjúmanípúrímóhískamossím" + + "undangmargvísleg málkríkmirandesískamarvaríersjamasanderanínapólískanama" + + "lágþýska; lágsaxneskanevaríníasníveskakwasiongiemboonnógaínorrænan’konor" + + "ðursótónúerklassísk nevarískanjamvesínyankolenjórónsímaósagetyrkneska, " + + "ottómanpangasínmálpalavípampangapapíamentópaláskanígerískt pidginfornper" + + "sneskafönikískaponpeiskaprússneskafornpróvensalskakicherajastanírapanúír" + + "arótongskarombóromaníarúmenskarúasandavejakútsamversk arameískasambúrúsa" + + "saksantalíngambaysangúsikileyskaskoskasuðurkúrdískasenaselkúpkoíraboró-s" + + "ennífornírskatachelhitsjansídamósuðursamískalúlesamískaenaresamískaskolt" + + "esamískasóninkesogdíensranan tongoserersahosúkúmasúsúsúmerskashimaoríska" + + "klassísk sýrlenskasýrlenskatímnetesóterenótetúmtígretívtókeláskaklingons" + + "katlingittamasjektongverska (nyasa)tokpisintarókótsimsískatúmbúkatúvalús" + + "katasawaqtúvínskatamazightúdmúrtúgarítískaúmbúndúrótvaívotískavunjóvalse" + + "rvalamóvaraívasjóvarlpirikalmúkskasógajaójapískayangbenyembakantoneskasa" + + "pótekblisstáknsenagastaðlað marokkóskt tamazightsúníekkert tungumálaefni" + + "zázáískastöðluð nútímaarabískaausturrísk þýskasvissnesk háþýskaáströlsk " + + "enskakanadísk enskabresk enskabandarísk enskarómönsk-amerísk spænskaevró" + + "psk spænskamexíkósk spænskakanadísk franskasvissnesk franskalágsaxneskaf" + + "læmskabrasílísk portúgalskaevrópsk portúgalskamoldóvskaserbókróatískaKon" + + "gó-svahílíkínverska (einfölduð)kínverska (hefðbundin)" + +var isLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x0014, 0x001f, 0x0023, 0x002d, 0x0036, - 0x003f, 0x0047, 0x0050, 0x0057, 0x005e, 0x0065, 0x0074, 0x007e, - 0x0086, 0x008d, 0x0096, 0x009e, 0x00a8, 0x00b1, 0x00bc, 0x00c8, - 0x00d0, 0x00d9, 0x00dd, 0x00e7, 0x00f6, 0x00fd, 0x0103, 0x0109, - 0x0110, 0x0118, 0x011f, 0x0122, 0x0129, 0x012e, 0x0138, 0x0140, - 0x0149, 0x0152, 0x015b, 0x0160, 0x0167, 0x0171, 0x017a, 0x0181, - 0x0191, 0x0197, 0x01a5, 0x01af, 0x01b7, 0x01c1, 0x01c7, 0x01cc, - 0x01d4, 0x01da, 0x01e6, 0x01f1, 0x01fb, 0x0204, 0x020c, 0x0213, + 0x0000, 0x0005, 0x000f, 0x0019, 0x0024, 0x0028, 0x0032, 0x003b, + 0x0044, 0x004c, 0x0055, 0x005c, 0x0063, 0x006a, 0x0079, 0x0083, + 0x008b, 0x0092, 0x009b, 0x00a3, 0x00ad, 0x00b6, 0x00c1, 0x00cd, + 0x00d5, 0x00de, 0x00e2, 0x00ec, 0x00fb, 0x0102, 0x0108, 0x010e, + 0x0115, 0x011d, 0x0124, 0x0127, 0x012e, 0x0133, 0x013d, 0x0145, + 0x014e, 0x0157, 0x0160, 0x0165, 0x016c, 0x0176, 0x017f, 0x0186, + 0x0196, 0x019c, 0x01aa, 0x01b4, 0x01bc, 0x01c6, 0x01cc, 0x01d1, + 0x01d9, 0x01df, 0x01eb, 0x01f6, 0x0200, 0x0209, 0x0211, 0x0218, // Entry 40 - 7F - 0x0222, 0x022f, 0x023a, 0x0240, 0x024b, 0x0255, 0x025a, 0x0263, - 0x026b, 0x0276, 0x027e, 0x0286, 0x0290, 0x0299, 0x02a2, 0x02ab, - 0x02b3, 0x02be, 0x02c2, 0x02c9, 0x02d1, 0x02d9, 0x02e3, 0x02ed, - 0x02f5, 0x02ff, 0x0307, 0x030e, 0x031d, 0x0322, 0x032f, 0x0336, - 0x033a, 0x0345, 0x0351, 0x035a, 0x0366, 0x0371, 0x0377, 0x0382, - 0x038b, 0x0395, 0x039c, 0x03a5, 0x03ae, 0x03b7, 0x03c0, 0x03cf, - 0x03d7, 0x03dd, 0x03e6, 0x03ef, 0x03fe, 0x040b, 0x0412, 0x0429, - 0x0436, 0x043c, 0x0441, 0x0447, 0x0451, 0x045a, 0x045f, 0x0466, + 0x0227, 0x0234, 0x023f, 0x0245, 0x0250, 0x025a, 0x025f, 0x0268, + 0x0270, 0x027b, 0x0283, 0x028b, 0x0295, 0x029e, 0x02a7, 0x02b0, + 0x02b8, 0x02c3, 0x02c7, 0x02ce, 0x02d6, 0x02de, 0x02e8, 0x02f2, + 0x02fa, 0x0304, 0x030c, 0x0313, 0x0322, 0x0327, 0x0334, 0x033b, + 0x033f, 0x034a, 0x0356, 0x035f, 0x036b, 0x0376, 0x037c, 0x0387, + 0x0390, 0x039a, 0x03a1, 0x03aa, 0x03b3, 0x03bc, 0x03c5, 0x03d4, + 0x03dc, 0x03e2, 0x03eb, 0x03f4, 0x0403, 0x0410, 0x0417, 0x042e, + 0x043b, 0x0441, 0x0446, 0x044c, 0x0456, 0x045f, 0x0464, 0x046b, // Entry 80 - BF - 0x046c, 0x0478, 0x0480, 0x0489, 0x0490, 0x0499, 0x04a3, 0x04af, - 0x04b8, 0x04c2, 0x04c8, 0x04d7, 0x04dd, 0x04e8, 0x04f4, 0x04fe, - 0x0506, 0x050b, 0x0514, 0x051c, 0x0525, 0x052b, 0x0537, 0x0541, - 0x0548, 0x0551, 0x055a, 0x0562, 0x056c, 0x0576, 0x057f, 0x058a, - 0x0591, 0x059b, 0x05a4, 0x05aa, 0x05b2, 0x05bd, 0x05c5, 0x05d0, - 0x05d6, 0x05df, 0x05e4, 0x05ef, 0x05ef, 0x05f9, 0x05fe, 0x0603, - 0x060c, 0x0614, 0x061a, 0x0624, 0x062a, 0x0632, 0x0637, 0x063e, - 0x0644, 0x0644, 0x064f, 0x0654, 0x0654, 0x065e, 0x065e, 0x0666, + 0x0471, 0x047d, 0x0485, 0x048e, 0x0495, 0x049e, 0x04a8, 0x04b4, + 0x04bd, 0x04c7, 0x04cd, 0x04dc, 0x04e2, 0x04ed, 0x04f9, 0x0503, + 0x050b, 0x0510, 0x0519, 0x0521, 0x052a, 0x0530, 0x053c, 0x0546, + 0x054d, 0x0556, 0x055f, 0x0567, 0x0571, 0x057b, 0x0584, 0x058f, + 0x0596, 0x05a0, 0x05a9, 0x05af, 0x05b7, 0x05c2, 0x05ca, 0x05d5, + 0x05db, 0x05e4, 0x05e9, 0x05f4, 0x05fb, 0x0605, 0x060a, 0x060f, + 0x0618, 0x0620, 0x0626, 0x0630, 0x0636, 0x063e, 0x0643, 0x064a, + 0x0650, 0x0650, 0x065b, 0x0660, 0x066d, 0x0677, 0x0677, 0x067f, // Entry C0 - FF - 0x0666, 0x0666, 0x066f, 0x066f, 0x0679, 0x0685, 0x0685, 0x068d, - 0x068d, 0x0696, 0x0696, 0x0696, 0x0699, 0x0699, 0x06a4, 0x06a4, - 0x06aa, 0x06b2, 0x06ba, 0x06ba, 0x06be, 0x06be, 0x06be, 0x06be, - 0x06c2, 0x06c7, 0x06c7, 0x06cb, 0x06cb, 0x06cb, 0x06d9, 0x06e2, - 0x06e8, 0x06ee, 0x06ee, 0x06ee, 0x06f5, 0x06f5, 0x06f5, 0x06fa, - 0x06fa, 0x0700, 0x0700, 0x0708, 0x0711, 0x0711, 0x0716, 0x0716, - 0x071c, 0x0727, 0x0727, 0x0727, 0x0730, 0x0735, 0x073c, 0x0745, - 0x074f, 0x0754, 0x075b, 0x0762, 0x076d, 0x077a, 0x0780, 0x0791, + 0x067f, 0x068e, 0x0697, 0x069e, 0x06a8, 0x06b4, 0x06b4, 0x06bc, + 0x06bc, 0x06bc, 0x06c5, 0x06c5, 0x06c5, 0x06c8, 0x06c8, 0x06d3, + 0x06d3, 0x06d9, 0x06e1, 0x06e9, 0x06e9, 0x06ed, 0x06f2, 0x06f2, + 0x06f2, 0x06f6, 0x06fb, 0x06fb, 0x06ff, 0x06ff, 0x06ff, 0x070d, + 0x0716, 0x071c, 0x0722, 0x0722, 0x0722, 0x0729, 0x0729, 0x0729, + 0x072e, 0x072e, 0x0734, 0x073b, 0x0743, 0x074c, 0x074c, 0x0751, + 0x0751, 0x0757, 0x0762, 0x0769, 0x076e, 0x0777, 0x077c, 0x0783, + 0x078c, 0x0796, 0x079b, 0x07a2, 0x07a9, 0x07b4, 0x07c1, 0x07c7, // Entry 100 - 13F - 0x079a, 0x079a, 0x07a8, 0x07b3, 0x07ba, 0x07c0, 0x07c6, 0x07cd, - 0x07d6, 0x07dd, 0x07e2, 0x07e7, 0x07ed, 0x07fa, 0x07fa, 0x0800, - 0x080d, 0x0817, 0x081d, 0x081d, 0x0821, 0x0826, 0x0826, 0x0831, - 0x0838, 0x083f, 0x0848, 0x0848, 0x084f, 0x084f, 0x0853, 0x085f, - 0x085f, 0x0863, 0x0863, 0x086e, 0x0879, 0x0879, 0x088a, 0x089a, - 0x08a4, 0x08a6, 0x08ac, 0x08ac, 0x08b1, 0x08b6, 0x08b6, 0x08ba, - 0x08c3, 0x08c3, 0x08d1, 0x08df, 0x08df, 0x08e5, 0x08ef, 0x08f7, - 0x08fd, 0x0908, 0x0919, 0x0919, 0x0919, 0x091e, 0x0926, 0x092c, + 0x07d8, 0x07e1, 0x07e1, 0x07ef, 0x0807, 0x0812, 0x0819, 0x081f, + 0x0825, 0x082c, 0x0835, 0x083c, 0x0841, 0x0846, 0x084c, 0x0859, + 0x0859, 0x085f, 0x086c, 0x0876, 0x087c, 0x0882, 0x0886, 0x088b, + 0x088b, 0x0896, 0x089d, 0x08a4, 0x08ad, 0x08ad, 0x08b4, 0x08b4, + 0x08b8, 0x08c4, 0x08c4, 0x08c8, 0x08c8, 0x08d3, 0x08de, 0x08de, + 0x08ef, 0x08ff, 0x0909, 0x090b, 0x0911, 0x0911, 0x0916, 0x091b, + 0x091b, 0x091f, 0x0928, 0x0928, 0x0936, 0x0944, 0x0944, 0x094a, + 0x0954, 0x095c, 0x0962, 0x096d, 0x097e, 0x097e, 0x097e, 0x0983, // Entry 140 - 17F - 0x092c, 0x0935, 0x0935, 0x0941, 0x094c, 0x0951, 0x095d, 0x095d, - 0x0962, 0x0967, 0x0967, 0x096e, 0x0974, 0x0974, 0x0974, 0x097a, - 0x0980, 0x0988, 0x0999, 0x09aa, 0x09aa, 0x09b4, 0x09bb, 0x09c1, - 0x09c1, 0x09c6, 0x09cb, 0x09d6, 0x09d6, 0x09d6, 0x09dd, 0x09ed, - 0x09ed, 0x09ed, 0x09ed, 0x09f2, 0x09f9, 0x0a05, 0x0a05, 0x0a05, - 0x0a05, 0x0a0d, 0x0a17, 0x0a25, 0x0a2d, 0x0a35, 0x0a3b, 0x0a49, - 0x0a49, 0x0a49, 0x0a49, 0x0a50, 0x0a58, 0x0a5e, 0x0a5e, 0x0a65, - 0x0a6e, 0x0a77, 0x0a7d, 0x0a82, 0x0a87, 0x0a90, 0x0a90, 0x0a90, + 0x098b, 0x0991, 0x0991, 0x099a, 0x099a, 0x09a6, 0x09b1, 0x09b6, + 0x09c2, 0x09c2, 0x09c7, 0x09cc, 0x09d2, 0x09d9, 0x09df, 0x09df, + 0x09df, 0x09e5, 0x09eb, 0x09f3, 0x0a04, 0x0a15, 0x0a15, 0x0a1f, + 0x0a26, 0x0a2c, 0x0a2f, 0x0a34, 0x0a39, 0x0a44, 0x0a44, 0x0a48, + 0x0a4f, 0x0a5f, 0x0a5f, 0x0a63, 0x0a63, 0x0a68, 0x0a6f, 0x0a7b, + 0x0a7b, 0x0a7b, 0x0a7f, 0x0a87, 0x0a91, 0x0a9f, 0x0aa7, 0x0aaf, + 0x0ab5, 0x0ac3, 0x0ac3, 0x0ac3, 0x0acc, 0x0ad3, 0x0adb, 0x0ae1, + 0x0aeb, 0x0af2, 0x0afb, 0x0b04, 0x0b0a, 0x0b0f, 0x0b14, 0x0b1d, // Entry 180 - 1BF - 0x0a90, 0x0a97, 0x0a97, 0x0a9d, 0x0aa1, 0x0aae, 0x0aae, 0x0ab8, - 0x0ac1, 0x0ac7, 0x0acc, 0x0ad3, 0x0ad8, 0x0ad8, 0x0ad8, 0x0ae1, - 0x0ae1, 0x0ae8, 0x0af2, 0x0af9, 0x0b02, 0x0b08, 0x0b08, 0x0b0d, - 0x0b13, 0x0b18, 0x0b1d, 0x0b28, 0x0b32, 0x0b40, 0x0b47, 0x0b4d, - 0x0b59, 0x0b60, 0x0b6b, 0x0b74, 0x0b7a, 0x0b7a, 0x0b81, 0x0b91, - 0x0b96, 0x0b96, 0x0b9e, 0x0b9e, 0x0b9e, 0x0ba3, 0x0baf, 0x0baf, - 0x0bba, 0x0bbe, 0x0bd7, 0x0bde, 0x0be3, 0x0beb, 0x0beb, 0x0bf1, - 0x0bf1, 0x0bf8, 0x0c00, 0x0c00, 0x0c06, 0x0c13, 0x0c18, 0x0c18, + 0x0b1d, 0x0b1d, 0x0b1d, 0x0b24, 0x0b24, 0x0b2a, 0x0b2e, 0x0b3b, + 0x0b3b, 0x0b45, 0x0b4e, 0x0b54, 0x0b59, 0x0b60, 0x0b65, 0x0b65, + 0x0b65, 0x0b6e, 0x0b6e, 0x0b75, 0x0b7f, 0x0b86, 0x0b8f, 0x0b95, + 0x0b95, 0x0b9a, 0x0ba0, 0x0ba5, 0x0baa, 0x0bb5, 0x0bbf, 0x0bcd, + 0x0bd4, 0x0bda, 0x0be6, 0x0bed, 0x0bf8, 0x0c01, 0x0c07, 0x0c07, + 0x0c0e, 0x0c1e, 0x0c23, 0x0c30, 0x0c38, 0x0c38, 0x0c38, 0x0c3d, + 0x0c49, 0x0c49, 0x0c54, 0x0c58, 0x0c71, 0x0c78, 0x0c7d, 0x0c85, + 0x0c85, 0x0c8b, 0x0c94, 0x0c9b, 0x0ca3, 0x0ca3, 0x0ca9, 0x0cb6, // Entry 1C0 - 1FF - 0x0c21, 0x0c29, 0x0c30, 0x0c36, 0x0c3c, 0x0c4f, 0x0c5c, 0x0c63, - 0x0c6b, 0x0c77, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c8c, 0x0c8c, - 0x0c97, 0x0c97, 0x0c97, 0x0ca0, 0x0ca0, 0x0cb1, 0x0cb6, 0x0cb6, - 0x0cc0, 0x0cc9, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cdb, 0x0ce2, 0x0ce2, - 0x0ce2, 0x0ce2, 0x0ce2, 0x0ce6, 0x0ced, 0x0cf3, 0x0d06, 0x0d0f, - 0x0d14, 0x0d1c, 0x0d1c, 0x0d1c, 0x0d22, 0x0d2c, 0x0d32, 0x0d32, - 0x0d42, 0x0d42, 0x0d46, 0x0d46, 0x0d4d, 0x0d5f, 0x0d69, 0x0d69, - 0x0d72, 0x0d76, 0x0d76, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d8c, 0x0d99, + 0x0cbb, 0x0ccf, 0x0cd8, 0x0ce0, 0x0ce7, 0x0ced, 0x0cf3, 0x0d06, + 0x0d13, 0x0d1a, 0x0d22, 0x0d2e, 0x0d36, 0x0d36, 0x0d48, 0x0d48, + 0x0d48, 0x0d55, 0x0d55, 0x0d60, 0x0d60, 0x0d60, 0x0d69, 0x0d74, + 0x0d85, 0x0d8a, 0x0d8a, 0x0d94, 0x0d9d, 0x0da9, 0x0da9, 0x0da9, + 0x0daf, 0x0db6, 0x0db6, 0x0db6, 0x0db6, 0x0dc0, 0x0dc4, 0x0dcb, + 0x0dd1, 0x0de4, 0x0ded, 0x0df2, 0x0dfa, 0x0dfa, 0x0e01, 0x0e07, + 0x0e11, 0x0e17, 0x0e17, 0x0e27, 0x0e27, 0x0e2b, 0x0e2b, 0x0e32, + 0x0e44, 0x0e4e, 0x0e4e, 0x0e57, 0x0e5b, 0x0e5b, 0x0e63, 0x0e63, // Entry 200 - 23F - 0x0da6, 0x0db4, 0x0dbc, 0x0dc4, 0x0dc4, 0x0dc9, 0x0dc9, 0x0dc9, - 0x0dd1, 0x0dd7, 0x0de0, 0x0de0, 0x0df4, 0x0dfe, 0x0dfe, 0x0dfe, - 0x0e04, 0x0e09, 0x0e10, 0x0e16, 0x0e1c, 0x0e20, 0x0e2b, 0x0e2b, - 0x0e35, 0x0e3c, 0x0e3c, 0x0e44, 0x0e56, 0x0e5e, 0x0e5e, 0x0e5e, - 0x0e5e, 0x0e68, 0x0e68, 0x0e71, 0x0e7c, 0x0e83, 0x0e8d, 0x0e96, - 0x0e9e, 0x0eab, 0x0eb5, 0x0eb9, 0x0ebd, 0x0ebd, 0x0ebd, 0x0ebd, - 0x0ebd, 0x0ec5, 0x0ec5, 0x0ecb, 0x0ecb, 0x0ed2, 0x0ed8, 0x0ede, - 0x0ee6, 0x0ee6, 0x0ef0, 0x0ef0, 0x0ef5, 0x0ef9, 0x0f01, 0x0f01, + 0x0e63, 0x0e71, 0x0e7e, 0x0e8b, 0x0e99, 0x0ea1, 0x0ea9, 0x0eb5, + 0x0eba, 0x0ebe, 0x0ebe, 0x0ec6, 0x0ecc, 0x0ed5, 0x0ee1, 0x0ef5, + 0x0eff, 0x0eff, 0x0eff, 0x0f05, 0x0f0a, 0x0f11, 0x0f17, 0x0f1d, + 0x0f21, 0x0f2c, 0x0f2c, 0x0f36, 0x0f3d, 0x0f3d, 0x0f45, 0x0f57, + 0x0f5f, 0x0f5f, 0x0f67, 0x0f67, 0x0f71, 0x0f71, 0x0f7a, 0x0f85, + 0x0f8c, 0x0f96, 0x0f9f, 0x0fa7, 0x0fb4, 0x0fbe, 0x0fc2, 0x0fc6, + 0x0fc6, 0x0fc6, 0x0fc6, 0x0fc6, 0x0fce, 0x0fce, 0x0fd4, 0x0fda, + 0x0fe1, 0x0fe7, 0x0fed, 0x0ff5, 0x0ff5, 0x0fff, 0x0fff, 0x1004, // Entry 240 - 27F - 0x0f01, 0x0f01, 0x0f01, 0x0f09, 0x0f13, 0x0f13, 0x0f19, 0x0f38, - 0x0f3e, 0x0f53, 0x0f53, 0x0f6f, 0x0f6f, 0x0f82, 0x0f96, 0x0fa6, - 0x0fb5, 0x0fc0, 0x0fd0, 0x0feb, 0x0ffc, 0x100f, 0x100f, 0x1020, - 0x1031, 0x103d, 0x1045, 0x105d, 0x1072, 0x107c, 0x108d, 0x109d, - 0x10b5, 0x10cd, -} // Size: 1244 bytes - -var itLangStr string = "" + // Size: 4988 bytes + 0x1008, 0x1010, 0x1017, 0x101c, 0x101c, 0x1026, 0x102e, 0x1038, + 0x1038, 0x103e, 0x105d, 0x1063, 0x1078, 0x1083, 0x109f, 0x109f, + 0x10b2, 0x10c6, 0x10d6, 0x10e5, 0x10f0, 0x1100, 0x111b, 0x112c, + 0x113f, 0x113f, 0x1150, 0x1161, 0x116d, 0x1175, 0x118d, 0x11a2, + 0x11ac, 0x11bd, 0x11cd, 0x11e5, 0x11fd, +} // Size: 1250 bytes + +const itLangStr string = "" + // Size: 5026 bytes "afarabcasoavestanafrikaansakanamaricoaragonesearaboassameseavaroaymaraaz" + "erbaigianobaschirobielorussobulgarobislamabambarabengalesetibetanobreton" + "ebosniacocatalanocecenochamorrocorsocreececoslavo della Chiesaciuvasciog" + @@ -16423,69 +19637,69 @@ var itLangStr string = "" + // Size: 4988 bytes "i motucroatohaitianoungheresearmenohererointerlinguaindonesianointerling" + "ueigbosichuan yiinupiakidoislandeseitalianoinuktitutgiapponesegiavaneseg" + "eorgianokongokikuyukuanyamakazakogroenlandesekhmerkannadacoreanokanurika" + - "shmiricurdokomicornicochirghisolatinolussemburghesegandalimburgeselingal" + - "alaolituanoluba-katangalettonemalgasciomarshallesemaorimacedonemalayalam" + - "mongolomarathimalesemaltesebirmanonaurundebele del nordnepalesendongaola" + - "ndesenorvegese nynorsknorvegese bokmålndebele del sudnavajonyanjaoccitan" + - "oojibwaoromooriyaosseticopunjabipalipolaccopashtoportoghesequechuaromanc" + - "iorundirumenorussokinyarwandasanscritosardosindhisami del nordsangosinga" + - "leseslovaccoslovenosamoanoshonasomaloalbaneseserboswatisotho del sudsund" + - "anesesvedeseswahilitamiltelugutagicothaitigrinoturcomannotswanatonganotu" + - "rcotsongatatarotaitianouiguroucrainourduusbecovendavietnamitavolapükvall" + - "onewolofxhosayiddishyorubazhuangcinesezuluaccineseacioliadangmeadygheara" + - "bo tunisinoafrihiliaghemainuaccadoalabamaaleutoalbanese ghegoaltai merid" + - "ionaleinglese anticoangikaaramaicoaraucanoaraonaarapahoarabo algerinoaru" + + "shmiricurdokomicornicochirghisolatinolussemburghesegandalimburgheselinga" + + "lalaolituanoluba-katangalettonemalgasciomarshallesemaorimacedonemalayala" + + "mmongolomarathimalesemaltesebirmanonaurundebele del nordnepalesendongaol" + + "andesenorvegese nynorsknorvegese bokmålndebele del sudnavajonyanjaoccita" + + "noojibwaoromooriyaosseticopunjabipalipolaccopashtoportoghesequechuaroman" + + "ciorundirumenorussokinyarwandasanscritosardosindhisami del nordsangosing" + + "aleseslovaccoslovenosamoanoshonasomaloalbaneseserboswatisotho del sudsun" + + "danesesvedeseswahilitamiltelugutagicothaitigrinoturcomannotswanatonganot" + + "urcotsongatatarotaitianouiguroucrainourduusbecovendavietnamitavolapükval" + + "lonewolofxhosayiddishyorubazhuangcinesezuluaccineseacioliadangmeadyghear" + + "abo tunisinoafrihiliaghemainuaccadoalabamaaleutoalbanese ghegoaltai meri" + + "dionaleinglese anticoangikaaramaicomapuchearaonaarapahoarabo algerinoaru" + "acoarabo marocchinoarabo egizianoasulingua dei segni americanaasturianok" + "otavaawadhibelucibalinesebavaresebasabamunbatak tobaghomalabegiawembabet" + "awibenabafutbadagabeluci occidentalebhojpuribicolbinibanjarkomsiksikabis" + "hnupriyabakhtiaribrajbrahuibodoakooseburiatbugibulublinmedumbacaddocarib" + "icocayugaatsamcebuanochigachibchaciagataicochuukesemarigergo chinookchoc" + - "tawchipewyancherokeecheyennecurdo soranicoptocapiznonturco crimeokashubi" + - "andakotadargwataitadelawareslavedogribdincazarmadogribasso sorabodusun c" + - "entraledualaolandese mediojola-fonydiuladazagaembuefikemilianoegiziano a" + - "nticoekajukaelamiticoinglese medioyupik centraleewondoestremegnofangfili" + - "ppinofinlandese del Tornedalenfonfrancese cajunfrancese mediofrancese an" + - "ticofrancoprovenzalefrisone settentrionalefrisone orientalefriulanogagag" + - "auzogangayogbayadari zoroastrianogeezgilbertesegilakitedesco medio altot" + - "edesco antico altokonkani goanogondigorontalogoticogerbogreco anticotede" + - "sco svizzerowayuugusiigwichʼinhaidahakkahawaianohindi figianohiligaynahi" + - "ttitehmongalto soraboxianghupaibanibibioilocanoingushingricocreolo giama" + - "icanolojbanngamambomachamegiudeo persianogiudeo arabojutlandicokara-kalp" + - "akcabilokachinkaikambakawikabardiakanembutyapmakondecapoverdianokorokain" + - "gangkhasikhotanesekoyra chiinikhowarkirmanjkikakokalenjinkimbundupermiac" + - "okonkanikosraeankpellekarachay-Balkarcarelianokurukhshambalabafiacolonie" + - "sekumykkutenaigiudeo-spagnololangilahndalambalezghianLingua Franca Noval" + - "igurelivonelakotalombardololo bantuloziluri settentrionaleletgalloluba-l" + - "ulualuisenolundaluolushailuyiacinese classicolazmaduresemafamagahimaithi" + - "limakasarmandingomasaimabamokshamandarmendemerucreolo maurizianoirlandes" + - "e mediomakhuwa-meettometa’micmacmenangkabaumanchumanipurimohawkmossimari" + - " occidentalemundangmultilinguacreekmirandesemarwarimentawaimyeneerzyamaz" + - "andaranimin nannapoletanonamabasso tedesconewariniasniueaokwasiongiemboo" + - "nnogainorse anticonovialn’kosotho del nordnuernewari classiconyamwezinya" + - "nkolenyoronzimaosageturco ottomanopangasinanpahlavipampangapapiamentopal" + - "aupiccardotedesco della Pennsylvaniapersiano anticotedesco palatinofenic" + - "iopiemonteseponticoponapeprussianoprovenzale anticok’iche’quechua dell’a" + - "ltopiano del Chimborazorajasthanirapanuirarotongaromagnolotarifitromboro" + - "manirotumanorutenorovianaarumenorwasandaweyakutaramaico samaritanosambur" + - "usasaksantalisaurashtrangambaysangusicilianoscozzesesassaresecurdo merid" + - "ionalesenecasenaseriselkupkoyraboro senniirlandese anticosamogiticotashe" + - "lhitshanchadian arabicsidamotedesco slesianoselayarsami del sudsami di L" + - "ulesami di Inarisami skoltsoninkesogdianosranan tongoserersahosaterfries" + - "ischsukumasususumerocomorianosiriaco classicosiriacoslesianotulutemnetes" + - "oterenotetumtigretivtokelautsakhurklingontlingittalisciotamasheknyasa de" + - "l Tongatok pisinturoyotarokozaconicotsimshiantat islamicotumbukatuvaluta" + - "sawaqtuviniantamazightudmurtugariticombundurootvaivenetovepsofiammingo o" + - "ccidentalevotovõrovunjowalserwalamowaraywashowarlpiriwukalmykmengrelioso" + - "gayao (bantu)yapeseyangbenyembanheengatucantonesezapotecblissymbolzeland" + - "esezenagatamazight del Marocco standardzuninessun contenuto linguisticoz" + - "azaarabo moderno standardtedesco austriacoalto tedesco svizzeroinglese a" + - "ustralianoinglese canadeseinglese britannicoinglese americanospagnolo la" + - "tinoamericanospagnolo europeospagnolo messicanofrancese canadesefrancese" + - " svizzerobasso tedesco olandesefiammingoportoghese brasilianoportoghese " + - "europeomoldavoserbo-croatocongo swahilicinese semplificatocinese tradizi" + - "onale" - -var itLangIdx = []uint16{ // 610 elements + "tawchipewyancherokeecheyennecurdo soranicoptocapiznonturco crimeocreolo " + + "delle Seychelleskashubiandakotadargwataitadelawareslavedogribdincazarmad" + + "ogribasso sorabodusun centraledualaolandese mediojola-fonydiuladazagaemb" + + "uefikemilianoegiziano anticoekajukaelamiticoinglese medioyupik centralee" + + "wondoestremegnofangfilippinofinlandese del Tornedalenfonfrancese cajunfr" + + "ancese mediofrancese anticofrancoprovenzalefrisone settentrionalefrisone" + + " orientalefriulanogagagauzogangayogbayadari zoroastrianogeezgilbertesegi" + + "lakitedesco medio altotedesco antico altokonkani goanogondigorontalogoti" + + "cogrebogreco anticotedesco svizzerowayuugusiigwichʼinhaidahakkahawaianoh" + + "indi figianoilongohittitehmongalto soraboxianghupaibanibibioilocanoingus" + + "hingricocreolo giamaicanolojbanngamambomachamegiudeo persianogiudeo arab" + + "ojutlandicokara-kalpakcabilokachinkaikambakawicabardinokanembutyapmakond" + + "ecapoverdianokorokaingangkhasikhotanesekoyra chiinikhowarkirmanjkikakoka" + + "lenjinkimbundupermiacokonkanikosraeankpellekarachay-Balkarcarelianokuruk" + + "hshambalabafiacoloniesekumykkutenaigiudeo-spagnololangilahndalambalesgoL" + + "ingua Franca Novaligurelivonelakotalombardololo bantuloziluri settentrio" + + "naleletgalloluba-lulualuisenolundaluolushailuyiacinese classicolazmadure" + + "semafamagahimaithilimakasarmandingomasaimabamokshamandarmendemerucreolo " + + "maurizianoirlandese mediomakhuwa-meettometa’micmacmenangkabaumanchumanip" + + "urimohawkmossimari occidentalemundangmultilinguacreekmirandesemarwarimen" + + "tawaimyeneerzyamazandaranimin nannapoletanonamabasso tedesconewariniasni" + + "ueaokwasiongiemboonnogainorse anticonovialn’kosotho del nordnuernewari c" + + "lassiconyamwezinyankolenyoronzimaosageturco ottomanopangasinanpahlavipam" + + "pangapapiamentopalaupiccardopidgin nigerianotedesco della Pennsylvaniape" + + "rsiano anticotedesco palatinofeniciopiemonteseponticoponapeprussianoprov" + + "enzale anticok’iche’quechua dell’altopiano del Chimborazorajasthanirapan" + + "uirarotongaromagnolotarifitromboromanirotumanorutenorovianaarumenorwasan" + + "daweyakutaramaico samaritanosamburusasaksantalisaurashtrangambaysangusic" + + "ilianoscozzesesassaresecurdo meridionalesenecasenaseriselkupkoyraboro se" + + "nniirlandese anticosamogiticotashelhitshanarabo ciadianosidamotedesco sl" + + "esianoselayarsami del sudsami di Lulesami di Inarisami skoltsoninkesogdi" + + "anosranan tongoserersahosaterfriesischsukumasususumerocomorianosiriaco c" + + "lassicosiriacoslesianotulutemnetesoterenotetumtigretivtokelautsakhurklin" + + "gontlingittalisciotamasheknyasa del Tongatok pisinturoyotarokozaconicots" + + "imshiantat islamicotumbukatuvalutasawaqtuviniantamazightudmurtugariticom" + + "bundurootvaivenetovepsofiammingo occidentalevotovõrovunjowalserwalamowar" + + "aywashowarlpiriwukalmykmengreliosogayao (bantu)yapeseyangbenyembanheenga" + + "tucantonesezapotecblissymbolzelandesezenagatamazight del Marocco standar" + + "dzuninessun contenuto linguisticozazaarabo moderno standardtedesco austr" + + "iacoalto tedesco svizzeroinglese australianoinglese canadeseinglese brit" + + "annicoinglese americanospagnolo latinoamericanospagnolo europeospagnolo " + + "messicanofrancese canadesefrancese svizzerobasso tedesco olandesefiammin" + + "goportoghese brasilianoportoghese europeomoldavoserbo-croatoswahili del " + + "Congocinese semplificatocinese tradizionale" + +var itLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000a, 0x0011, 0x001a, 0x001e, 0x0025, 0x002e, 0x0033, 0x003b, 0x0040, 0x0046, 0x0052, 0x005a, 0x0064, 0x006b, @@ -16499,676 +19713,729 @@ var itLangIdx = []uint16{ // 610 elements 0x01e5, 0x01f0, 0x01fb, 0x01ff, 0x0209, 0x0210, 0x0213, 0x021c, 0x0224, 0x022d, 0x0237, 0x0240, 0x0249, 0x024e, 0x0254, 0x025c, 0x0262, 0x026e, 0x0273, 0x027a, 0x0281, 0x0287, 0x028f, 0x0294, - 0x0298, 0x029f, 0x02a8, 0x02ae, 0x02bc, 0x02c1, 0x02cb, 0x02d2, - 0x02d5, 0x02dc, 0x02e8, 0x02ef, 0x02f8, 0x0303, 0x0308, 0x0310, - 0x0319, 0x0320, 0x0327, 0x032d, 0x0334, 0x033b, 0x0340, 0x0350, - 0x0358, 0x035e, 0x0366, 0x0377, 0x0388, 0x0397, 0x039d, 0x03a3, - 0x03ab, 0x03b1, 0x03b6, 0x03bb, 0x03c3, 0x03ca, 0x03ce, 0x03d5, + 0x0298, 0x029f, 0x02a8, 0x02ae, 0x02bc, 0x02c1, 0x02cc, 0x02d3, + 0x02d6, 0x02dd, 0x02e9, 0x02f0, 0x02f9, 0x0304, 0x0309, 0x0311, + 0x031a, 0x0321, 0x0328, 0x032e, 0x0335, 0x033c, 0x0341, 0x0351, + 0x0359, 0x035f, 0x0367, 0x0378, 0x0389, 0x0398, 0x039e, 0x03a4, + 0x03ac, 0x03b2, 0x03b7, 0x03bc, 0x03c4, 0x03cb, 0x03cf, 0x03d6, // Entry 80 - BF - 0x03db, 0x03e5, 0x03ec, 0x03f4, 0x03f9, 0x03ff, 0x0404, 0x040f, - 0x0418, 0x041d, 0x0423, 0x0430, 0x0435, 0x043e, 0x0446, 0x044d, - 0x0454, 0x0459, 0x045f, 0x0467, 0x046c, 0x0471, 0x047e, 0x0487, - 0x048e, 0x0495, 0x049a, 0x04a0, 0x04a6, 0x04aa, 0x04b1, 0x04bb, - 0x04c1, 0x04c8, 0x04cd, 0x04d3, 0x04d9, 0x04e1, 0x04e7, 0x04ee, - 0x04f2, 0x04f8, 0x04fd, 0x0507, 0x050f, 0x0516, 0x051b, 0x0520, - 0x0527, 0x052d, 0x0533, 0x0539, 0x053d, 0x0545, 0x054b, 0x0552, - 0x0558, 0x0566, 0x056e, 0x0573, 0x0577, 0x057d, 0x0584, 0x058a, + 0x03dc, 0x03e6, 0x03ed, 0x03f5, 0x03fa, 0x0400, 0x0405, 0x0410, + 0x0419, 0x041e, 0x0424, 0x0431, 0x0436, 0x043f, 0x0447, 0x044e, + 0x0455, 0x045a, 0x0460, 0x0468, 0x046d, 0x0472, 0x047f, 0x0488, + 0x048f, 0x0496, 0x049b, 0x04a1, 0x04a7, 0x04ab, 0x04b2, 0x04bc, + 0x04c2, 0x04c9, 0x04ce, 0x04d4, 0x04da, 0x04e2, 0x04e8, 0x04ef, + 0x04f3, 0x04f9, 0x04fe, 0x0508, 0x0510, 0x0517, 0x051c, 0x0521, + 0x0528, 0x052e, 0x0534, 0x053a, 0x053e, 0x0546, 0x054c, 0x0553, + 0x0559, 0x0567, 0x056f, 0x0574, 0x0578, 0x057e, 0x0585, 0x058b, // Entry C0 - FF - 0x0598, 0x05a9, 0x05b7, 0x05bd, 0x05c5, 0x05cd, 0x05d3, 0x05da, - 0x05e8, 0x05ee, 0x05fe, 0x060c, 0x060f, 0x0629, 0x0632, 0x0638, - 0x063e, 0x0644, 0x064c, 0x0654, 0x0658, 0x065d, 0x0667, 0x066e, - 0x0673, 0x0678, 0x067e, 0x0682, 0x0687, 0x068d, 0x069f, 0x06a7, - 0x06ac, 0x06b0, 0x06b6, 0x06b9, 0x06c0, 0x06cb, 0x06d4, 0x06d8, - 0x06de, 0x06e2, 0x06e8, 0x06ee, 0x06f2, 0x06f6, 0x06fa, 0x0701, - 0x0706, 0x070e, 0x0714, 0x0719, 0x0720, 0x0725, 0x072c, 0x0736, - 0x073e, 0x0742, 0x074f, 0x0756, 0x075f, 0x0767, 0x076f, 0x077b, + 0x0599, 0x05aa, 0x05b8, 0x05be, 0x05c6, 0x05cd, 0x05d3, 0x05da, + 0x05e8, 0x05e8, 0x05ee, 0x05fe, 0x060c, 0x060f, 0x0629, 0x0632, + 0x0638, 0x063e, 0x0644, 0x064c, 0x0654, 0x0658, 0x065d, 0x0667, + 0x066e, 0x0673, 0x0678, 0x067e, 0x0682, 0x0687, 0x068d, 0x069f, + 0x06a7, 0x06ac, 0x06b0, 0x06b6, 0x06b9, 0x06c0, 0x06cb, 0x06d4, + 0x06d8, 0x06de, 0x06e2, 0x06e8, 0x06ee, 0x06f2, 0x06f6, 0x06fa, + 0x0701, 0x0706, 0x070e, 0x0714, 0x0719, 0x0720, 0x0725, 0x072c, + 0x0736, 0x073e, 0x0742, 0x074f, 0x0756, 0x075f, 0x0767, 0x076f, // Entry 100 - 13F - 0x0780, 0x0788, 0x0794, 0x079d, 0x07a3, 0x07a9, 0x07ae, 0x07b6, - 0x07bb, 0x07c1, 0x07c6, 0x07cb, 0x07d0, 0x07dc, 0x07ea, 0x07ef, - 0x07fd, 0x0806, 0x080b, 0x0811, 0x0815, 0x0819, 0x0821, 0x0830, - 0x0837, 0x0840, 0x084d, 0x085b, 0x0861, 0x086b, 0x086f, 0x0878, - 0x0891, 0x0894, 0x08a2, 0x08b0, 0x08bf, 0x08cf, 0x08e5, 0x08f6, - 0x08fe, 0x0900, 0x0907, 0x090a, 0x090e, 0x0913, 0x0924, 0x0928, - 0x0932, 0x0938, 0x094a, 0x095d, 0x096a, 0x096f, 0x0978, 0x097e, - 0x0983, 0x098f, 0x099f, 0x09a4, 0x09a4, 0x09a9, 0x09b2, 0x09b7, + 0x077b, 0x0780, 0x0788, 0x0794, 0x07ab, 0x07b4, 0x07ba, 0x07c0, + 0x07c5, 0x07cd, 0x07d2, 0x07d8, 0x07dd, 0x07e2, 0x07e7, 0x07f3, + 0x0801, 0x0806, 0x0814, 0x081d, 0x0822, 0x0828, 0x082c, 0x0830, + 0x0838, 0x0847, 0x084e, 0x0857, 0x0864, 0x0872, 0x0878, 0x0882, + 0x0886, 0x088f, 0x08a8, 0x08ab, 0x08b9, 0x08c7, 0x08d6, 0x08e6, + 0x08fc, 0x090d, 0x0915, 0x0917, 0x091e, 0x0921, 0x0925, 0x092a, + 0x093b, 0x093f, 0x0949, 0x094f, 0x0961, 0x0974, 0x0981, 0x0986, + 0x098f, 0x0995, 0x099a, 0x09a6, 0x09b6, 0x09bb, 0x09bb, 0x09c0, // Entry 140 - 17F - 0x09bc, 0x09c4, 0x09d1, 0x09da, 0x09e1, 0x09e6, 0x09f1, 0x09f6, - 0x09fa, 0x09fe, 0x0a04, 0x0a0b, 0x0a11, 0x0a18, 0x0a29, 0x0a2f, - 0x0a37, 0x0a3e, 0x0a4d, 0x0a59, 0x0a63, 0x0a6e, 0x0a74, 0x0a7a, - 0x0a7d, 0x0a82, 0x0a86, 0x0a8e, 0x0a95, 0x0a99, 0x0aa0, 0x0aac, - 0x0aac, 0x0ab0, 0x0ab8, 0x0abd, 0x0ac6, 0x0ad2, 0x0ad8, 0x0ae1, - 0x0ae5, 0x0aed, 0x0af5, 0x0afd, 0x0b04, 0x0b0c, 0x0b12, 0x0b21, - 0x0b21, 0x0b21, 0x0b2a, 0x0b30, 0x0b38, 0x0b3d, 0x0b46, 0x0b4b, - 0x0b52, 0x0b61, 0x0b66, 0x0b6c, 0x0b71, 0x0b79, 0x0b8b, 0x0b91, + 0x09c9, 0x09ce, 0x09d3, 0x09db, 0x09e8, 0x09ee, 0x09f5, 0x09fa, + 0x0a05, 0x0a0a, 0x0a0e, 0x0a12, 0x0a18, 0x0a1f, 0x0a25, 0x0a2c, + 0x0a3d, 0x0a43, 0x0a4b, 0x0a52, 0x0a61, 0x0a6d, 0x0a77, 0x0a82, + 0x0a88, 0x0a8e, 0x0a91, 0x0a96, 0x0a9a, 0x0aa3, 0x0aaa, 0x0aae, + 0x0ab5, 0x0ac1, 0x0ac1, 0x0ac5, 0x0acd, 0x0ad2, 0x0adb, 0x0ae7, + 0x0aed, 0x0af6, 0x0afa, 0x0b02, 0x0b0a, 0x0b12, 0x0b19, 0x0b21, + 0x0b27, 0x0b36, 0x0b36, 0x0b36, 0x0b3f, 0x0b45, 0x0b4d, 0x0b52, + 0x0b5b, 0x0b60, 0x0b67, 0x0b76, 0x0b7b, 0x0b81, 0x0b86, 0x0b8b, // Entry 180 - 1BF - 0x0b97, 0x0b9d, 0x0ba5, 0x0baf, 0x0bb3, 0x0bc6, 0x0bce, 0x0bd8, - 0x0bdf, 0x0be4, 0x0be7, 0x0bed, 0x0bf2, 0x0c01, 0x0c04, 0x0c0c, - 0x0c10, 0x0c16, 0x0c1e, 0x0c25, 0x0c2d, 0x0c32, 0x0c36, 0x0c3c, - 0x0c42, 0x0c47, 0x0c4b, 0x0c5c, 0x0c6b, 0x0c79, 0x0c80, 0x0c86, - 0x0c91, 0x0c97, 0x0c9f, 0x0ca5, 0x0caa, 0x0cba, 0x0cc1, 0x0ccc, - 0x0cd1, 0x0cda, 0x0ce1, 0x0ce9, 0x0cee, 0x0cf3, 0x0cfe, 0x0d05, - 0x0d0f, 0x0d13, 0x0d20, 0x0d26, 0x0d2a, 0x0d2e, 0x0d30, 0x0d36, - 0x0d3f, 0x0d44, 0x0d50, 0x0d56, 0x0d5c, 0x0d6a, 0x0d6e, 0x0d7d, + 0x0b9d, 0x0ba3, 0x0ba9, 0x0baf, 0x0bb7, 0x0bc1, 0x0bc5, 0x0bd8, + 0x0be0, 0x0bea, 0x0bf1, 0x0bf6, 0x0bf9, 0x0bff, 0x0c04, 0x0c13, + 0x0c16, 0x0c1e, 0x0c22, 0x0c28, 0x0c30, 0x0c37, 0x0c3f, 0x0c44, + 0x0c48, 0x0c4e, 0x0c54, 0x0c59, 0x0c5d, 0x0c6e, 0x0c7d, 0x0c8b, + 0x0c92, 0x0c98, 0x0ca3, 0x0ca9, 0x0cb1, 0x0cb7, 0x0cbc, 0x0ccc, + 0x0cd3, 0x0cde, 0x0ce3, 0x0cec, 0x0cf3, 0x0cfb, 0x0d00, 0x0d05, + 0x0d10, 0x0d17, 0x0d21, 0x0d25, 0x0d32, 0x0d38, 0x0d3c, 0x0d40, + 0x0d42, 0x0d48, 0x0d51, 0x0d56, 0x0d62, 0x0d68, 0x0d6e, 0x0d7c, // Entry 1C0 - 1FF - 0x0d85, 0x0d8d, 0x0d92, 0x0d97, 0x0d9c, 0x0daa, 0x0db4, 0x0dbb, - 0x0dc3, 0x0dcd, 0x0dd2, 0x0dda, 0x0df4, 0x0df4, 0x0e03, 0x0e13, - 0x0e1a, 0x0e24, 0x0e2b, 0x0e31, 0x0e3a, 0x0e4b, 0x0e56, 0x0e7d, - 0x0e87, 0x0e8e, 0x0e97, 0x0ea0, 0x0ea7, 0x0eac, 0x0eb2, 0x0eba, - 0x0ec0, 0x0ec7, 0x0ece, 0x0ed1, 0x0ed8, 0x0edd, 0x0ef0, 0x0ef7, - 0x0efc, 0x0f03, 0x0f0d, 0x0f14, 0x0f19, 0x0f22, 0x0f2a, 0x0f33, - 0x0f44, 0x0f4a, 0x0f4e, 0x0f52, 0x0f58, 0x0f67, 0x0f77, 0x0f81, - 0x0f8a, 0x0f8e, 0x0f9c, 0x0fa2, 0x0fb2, 0x0fb9, 0x0fc5, 0x0fd1, + 0x0d80, 0x0d8f, 0x0d97, 0x0d9f, 0x0da4, 0x0da9, 0x0dae, 0x0dbc, + 0x0dc6, 0x0dcd, 0x0dd5, 0x0ddf, 0x0de4, 0x0dec, 0x0dfc, 0x0e16, + 0x0e16, 0x0e25, 0x0e35, 0x0e3c, 0x0e46, 0x0e4d, 0x0e53, 0x0e5c, + 0x0e6d, 0x0e78, 0x0e9f, 0x0ea9, 0x0eb0, 0x0eb9, 0x0ec2, 0x0ec9, + 0x0ece, 0x0ed4, 0x0edc, 0x0ee2, 0x0ee9, 0x0ef0, 0x0ef3, 0x0efa, + 0x0eff, 0x0f12, 0x0f19, 0x0f1e, 0x0f25, 0x0f2f, 0x0f36, 0x0f3b, + 0x0f44, 0x0f4c, 0x0f55, 0x0f66, 0x0f6c, 0x0f70, 0x0f74, 0x0f7a, + 0x0f89, 0x0f99, 0x0fa3, 0x0fac, 0x0fb0, 0x0fbe, 0x0fc4, 0x0fd4, // Entry 200 - 23F - 0x0fde, 0x0fe8, 0x0fef, 0x0ff7, 0x1003, 0x1008, 0x100c, 0x101a, - 0x1020, 0x1024, 0x102a, 0x1033, 0x1043, 0x104a, 0x1052, 0x1056, - 0x105b, 0x105f, 0x1065, 0x106a, 0x106f, 0x1072, 0x1079, 0x1080, - 0x1087, 0x108e, 0x1096, 0x109e, 0x10ad, 0x10b6, 0x10bc, 0x10c2, - 0x10ca, 0x10d3, 0x10df, 0x10e6, 0x10ec, 0x10f3, 0x10fb, 0x1104, - 0x110a, 0x1113, 0x1119, 0x111d, 0x1120, 0x1126, 0x112b, 0x1140, - 0x1140, 0x1144, 0x1149, 0x114e, 0x1154, 0x115a, 0x115f, 0x1164, - 0x116c, 0x116e, 0x1174, 0x117d, 0x1181, 0x118c, 0x1192, 0x1199, + 0x0fdb, 0x0fe7, 0x0ff3, 0x1000, 0x100a, 0x1011, 0x1019, 0x1025, + 0x102a, 0x102e, 0x103c, 0x1042, 0x1046, 0x104c, 0x1055, 0x1065, + 0x106c, 0x1074, 0x1078, 0x107d, 0x1081, 0x1087, 0x108c, 0x1091, + 0x1094, 0x109b, 0x10a2, 0x10a9, 0x10b0, 0x10b8, 0x10c0, 0x10cf, + 0x10d8, 0x10de, 0x10e4, 0x10ec, 0x10f5, 0x1101, 0x1108, 0x110e, + 0x1115, 0x111d, 0x1126, 0x112c, 0x1135, 0x113b, 0x113f, 0x1142, + 0x1148, 0x114d, 0x1162, 0x1162, 0x1166, 0x116b, 0x1170, 0x1176, + 0x117c, 0x1181, 0x1186, 0x118e, 0x1190, 0x1196, 0x119f, 0x11a3, // Entry 240 - 27F - 0x119e, 0x11a7, 0x11b0, 0x11b7, 0x11c1, 0x11ca, 0x11d0, 0x11ee, - 0x11f2, 0x120e, 0x1212, 0x1228, 0x1228, 0x1239, 0x124e, 0x1261, - 0x1271, 0x1283, 0x1294, 0x12ac, 0x12bc, 0x12ce, 0x12ce, 0x12df, - 0x12f0, 0x1306, 0x130f, 0x1324, 0x1336, 0x133d, 0x1349, 0x1356, - 0x1369, 0x137c, -} // Size: 1244 bytes - -var jaLangStr string = "" + // Size: 10000 bytes + 0x11ae, 0x11b4, 0x11bb, 0x11c0, 0x11c9, 0x11d2, 0x11d9, 0x11e3, + 0x11ec, 0x11f2, 0x1210, 0x1214, 0x1230, 0x1234, 0x124a, 0x124a, + 0x125b, 0x1270, 0x1283, 0x1293, 0x12a5, 0x12b6, 0x12ce, 0x12de, + 0x12f0, 0x12f0, 0x1301, 0x1312, 0x1328, 0x1331, 0x1346, 0x1358, + 0x135f, 0x136b, 0x137c, 0x138f, 0x13a2, +} // Size: 1250 bytes + +const jaLangStr string = "" + // Size: 10070 bytes "アファル語アブハズ語アヴェスタ語アフリカーンス語アカン語アムハラ語アラゴン語アラビア語アッサム語アヴァル語アイマラ語アゼルバイジャン語バシキール" + "語ベラルーシ語ブルガリア語ビスラマ語バンバラ語ベンガル語チベット語ブルトン語ボスニア語カタロニア語チェチェン語チャモロ語コルシカ語クリー語チ" + "ェコ語教会スラブ語チュヴァシ語ウェールズ語デンマーク語ドイツ語ディベヒ語ゾンカ語エウェ語ギリシャ語英語エスペラント語スペイン語エストニア語バ" + - "スク語ペルシア語フラニ語フィンランド語フィジー語フェロー語フランス語西フリジア語アイルランド語スコットランド・ゲール語ガリシア語グアラニー語" + - "グジャラート語マン島語ハウサ語ヘブライ語ヒンディー語ヒリモツ語クロアチア語ハイチ語ハンガリー語アルメニア語ヘレロ語インターリングアインドネシ" + - "ア語インターリングイボ語四川イ語イヌピアック語イド語アイスランド語イタリア語イヌクウティトット語日本語ジャワ語ジョージア語コンゴ語キクユ語ク" + - "ワニャマ語カザフ語グリーンランド語クメール語カンナダ語韓国語カヌリ語カシミール語クルド語コミ語コーンウォール語キルギス語ラテン語ルクセンブル" + - "ク語ガンダ語リンブルフ語リンガラ語ラオ語リトアニア語ルバ・カタンガ語ラトビア語マダガスカル語マーシャル語マオリ語マケドニア語マラヤーラム語モ" + - "ンゴル語マラーティー語マレー語マルタ語ビルマ語ナウル語北ンデベレ語ネパール語ンドンガ語オランダ語ノルウェー語(ニーノシュク)ノルウェー語(ブ" + - "ークモール)南ンデベレ語ナバホ語ニャンジャ語オック語オジブウェー語オロモ語オリヤー語オセット語パンジャブ語パーリ語ポーランド語パシュトゥー語" + - "ポルトガル語ケチュア語ロマンシュ語ルンディ語ルーマニア語ロシア語ルワンダ語サンスクリット語サルデーニャ語シンド語北サーミ語サンゴ語シンハラ語" + - "スロバキア語スロベニア語サモア語ショナ語ソマリ語アルバニア語セルビア語スワジ語南部ソト語スンダ語スウェーデン語スワヒリ語タミル語テルグ語タジ" + - "ク語タイ語ティグリニア語トルクメン語ツワナ語トンガ語トルコ語ツォンガ語タタール語タヒチ語ウイグル語ウクライナ語ウルドゥー語ウズベク語ベンダ語" + - "ベトナム語ヴォラピュク語ワロン語ウォロフ語コサ語イディッシュ語ヨルバ語チワン語中国語ズールー語アチェ語アチョリ語アダングメ語アディゲ語チュニ" + - "ジア・アラビア語アフリヒリ語アゲム語アイヌ語アッカド語アラバマ語アレウト語ゲグ・アルバニア語南アルタイ語古英語アンギカ語アラム語アラウカン語" + - "アラオナ語アラパホー語アルジェリア・アラビア語アラワク語モロッコ・アラビア語エジプト・アラビア語アス語アメリカ手話アストゥリアス語コタヴァア" + - "ワディー語バルーチー語バリ語バイエルン・オーストリア語バサ語バムン語トバ・バタク語ゴーマラ語ベジャ語ベンバ語ベタウィ語ベナ語バフット語バダガ" + - "語西バローチー語ボージュプリー語ビコル語ビニ語バンジャル語コム語シクシカ語ビシュヌプリヤ・マニプリ語バフティヤーリー語ブラジ語ブラフイ語ボド" + - "語アコース語ブリヤート語ブギ語ブル語ビリン語メドゥンバ語カドー語カリブ語カユーガ語チャワイ語セブアノ語チガ語チブチャ語チャガタイ語チューク語" + - "マリ語チヌーク混成語チョクトー語チペワイアン語チェロキー語シャイアン語クルド語(ソラニー)コプト語カピス語クリミア・タタール語カシューブ語ダ" + - "コタ語ダルガン語タイタ語デラウェア語スレイビー語ドグリブ語ディンカ語ザルマ語ドーグリー語低ソルビア語中央ドゥスン語ドゥアラ語中世オランダ語ジ" + - "ョラ=フォニィ語ジュラ語ダザガ語エンブ語エフィク語エミリア語古代エジプト語エカジュク語エラム語中英語中央アラスカ・ユピック語エウォンド語エス" + - "トレマドゥーラ語ファング語フィリピノ語トルネダール・フィンランド語フォン語ケイジャン・フランス語中期フランス語古フランス語アルピタン語北フリ" + - "ジア語東フリジア語フリウリ語ガ語ガガウズ語贛語ガヨ語バヤ語ダリー語(ゾロアスター教)ゲエズ語キリバス語ギラキ語中高ドイツ語古高ドイツ語ゴア・" + - "コンカニ語ゴーンディー語ゴロンタロ語ゴート語グレボ語古代ギリシャ語スイスドイツ語ワユ語フラフラ語グシイ語グウィッチン語ハイダ語客家語ハワイ語" + - "フィジー・ヒンディー語ヒリガイノン語ヒッタイト語フモン語上ソルビア語湘語アタパスカ語イバン語イビビオ語イロカノ語イングーシ語イングリア語ジャ" + - "マイカ・クレオール語ロジバン語ンゴンバ語マチャメ語ユダヤ・ペルシア語ユダヤ・アラビア語ユトランド語カラカルパク語カビル語カチン語カジェ語カン" + - "バ語カウィ語カバルド語カネンブ語カタブ語マコンデ語カーボベルデ・クレオール語ニャン語コロ語カインガング語カシ語コータン語コイラ・チーニ語コワ" + - "ール語キルマンジュキ語カコ語カレンジン語キンブンド語コミ・ペルミャク語コンカニ語コスラエ語クペレ語カラチャイ語クリオ語キナライア語カレリア語" + - "クルク語サンバー語バフィア語ケルン語クムク語クテナイ語ラディノ語ランギ語ラフンダー語ランバ語レズギ語リングア・フランカ・ノバリグリア語リヴォ" + - "ニア語ラコタ語ロンバルド語モンゴ語ロジ語北ロル語ラトガリア語ルバ・ルルア語ルイセーニョ語ルンダ語ルオ語ルシャイ語ルヒヤ語漢文ラズ語マドゥラ語" + - "マファ語マガヒー語マイティリー語マカッサル語マンディンゴ語マサイ語マバ語モクシャ語マンダル語メンデ語メル語モーリシャス・クレオール語中期アイ" + - "ルランド語マクア・ミート語メタ語ミクマク語ミナンカバウ語満州語マニプリ語モーホーク語モシ語山地マリ語ムンダン語複数言語クリーク語ミランダ語マ" + - "ールワーリー語メンタワイ語ミエネ語エルジャ語マーザンダラーン語閩南語ナポリ語ナマ語低地ドイツ語ネワール語ニアス語ニウーエイ語アオ・ナガ語クワ" + - "シオ語ンジエムブーン語ノガイ語古ノルド語ノヴィアルンコ語北部ソト語ヌエル語古典ネワール語ニャムウェジ語ニャンコレ語ニョロ語ンゼマ語オセージ語" + - "オスマントルコ語パンガシナン語パフラヴィー語パンパンガ語パピアメント語パラオ語ピカルディ語ペンシルベニア・ドイツ語メノナイト低地ドイツ語古代" + - "ペルシア語プファルツ語フェニキア語ピエモンテ語ポントス・ギリシャ語ポンペイ語プロシア語古期プロバンス語キチェ語チンボラソ高地ケチュア語ラージ" + - "ャスターン語ラパヌイ語ラロトンガ語ロマーニャ語リーフ語ロンボ語ロマーニー語ロツマ語ルシン語ロヴィアナ語アルーマニア語ルワ語サンダウェ語ヤクー" + - "ト語サマリア・アラム語サンブル語ササク語サンターリー語サウラーシュトラ語ンガムバイ語サング語シチリア語スコットランド語サッサリ・サルデーニャ" + - "語南部クルド語セネカ語セナ語セリ語セリクプ語コイラボロ・センニ語古期アイルランド語サモギティア語)タシルハイト語シャン語チャド・アラビア語シ" + - "ダモ語低シレジア語スラヤール語南サーミ語ルレ・サーミ語イナリ・サーミ語スコルト・サーミ語ソニンケ語ソグド語スリナム語セレル語サホ語ザーターフ" + - "リジア語スクマ語スス語シュメール語コモロ語古典シリア語シリア語シレジア語トゥル語テムネ語テソ語テレーノ語テトゥン語ティグレ語ティブ語トケラウ" + - "語ツァフル語クリンゴン語トリンギット語タリシュ語タマシェク語トンガ語(ニアサ)トク・ピシン語トゥロヨ語タロコ語ツァコン語チムシュ語ムスリム・" + - "タタール語トゥンブカ語ツバル語タサワク語トゥヴァ語中央アトラス・タマジクト語ウドムルト語ウガリト語ムブンドゥ語ルートヴァイ語ヴェネト語ヴェプ" + - "ス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語ウォライタ語ワライ語ワショ語ワルピリ語呉語カルムイク語メグレル語ソガ語" + - "ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリスシンボルゼーラント語ゼナガ語タマージク語(モロッコ公用語)ズニ語言語" + - "的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英語カナダ英語イギリス英語アメリカ英語スペイン語 (イベリア半島)フ" + - "レミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語コンゴ・スワヒリ語簡体中国語繁体中国語" - -var jaLangIdx = []uint16{ // 610 elements + "スク語ペルシア語フラ語フィンランド語フィジー語フェロー語フランス語西フリジア語アイルランド語スコットランド・ゲール語ガリシア語グアラニー語グ" + + "ジャラート語マン島語ハウサ語ヘブライ語ヒンディー語ヒリモツ語クロアチア語ハイチ語ハンガリー語アルメニア語ヘレロ語インターリングアインドネシア" + + "語インターリングイボ語四川イ語イヌピアック語イド語アイスランド語イタリア語イヌクウティトット語日本語ジャワ語ジョージア語コンゴ語キクユ語クワ" + + "ニャマ語カザフ語グリーンランド語クメール語カンナダ語韓国語カヌリ語カシミール語クルド語コミ語コーンウォール語キルギス語ラテン語ルクセンブルク" + + "語ガンダ語リンブルフ語リンガラ語ラオ語リトアニア語ルバ・カタンガ語ラトビア語マダガスカル語マーシャル語マオリ語マケドニア語マラヤーラム語モン" + + "ゴル語マラーティー語マレー語マルタ語ミャンマー語ナウル語北ンデベレ語ネパール語ンドンガ語オランダ語ノルウェー語(ニーノシュク)ノルウェー語(" + + "ブークモール)南ンデベレ語ナバホ語ニャンジャ語オック語オジブウェー語オロモ語オリヤー語オセット語パンジャブ語パーリ語ポーランド語パシュトゥー" + + "語ポルトガル語ケチュア語ロマンシュ語ルンディ語ルーマニア語ロシア語キニアルワンダ語サンスクリット語サルデーニャ語シンド語北サーミ語サンゴ語シ" + + "ンハラ語スロバキア語スロベニア語サモア語ショナ語ソマリ語アルバニア語セルビア語スワジ語南部ソト語スンダ語スウェーデン語スワヒリ語タミル語テル" + + "グ語タジク語タイ語ティグリニア語トルクメン語ツワナ語トンガ語トルコ語ツォンガ語タタール語タヒチ語ウイグル語ウクライナ語ウルドゥー語ウズベク語" + + "ベンダ語ベトナム語ヴォラピュク語ワロン語ウォロフ語コサ語イディッシュ語ヨルバ語チワン語中国語ズールー語アチェ語アチョリ語アダングメ語アディゲ" + + "語チュニジア・アラビア語アフリヒリ語アゲム語アイヌ語アッカド語アラバマ語アレウト語ゲグ・アルバニア語南アルタイ語古英語アンギカ語アラム語マプ" + + "チェ語アラオナ語アラパホー語アルジェリア・アラビア語アラワク語モロッコ・アラビア語エジプト・アラビア語アス語アメリカ手話アストゥリアス語コタ" + + "ヴァアワディー語バルーチー語バリ語バイエルン・オーストリア語バサ語バムン語トバ・バタク語ゴーマラ語ベジャ語ベンバ語ベタウィ語ベナ語バフット語" + + "バダガ語西バローチー語ボージュプリー語ビコル語ビニ語バンジャル語コム語シクシカ語ビシュヌプリヤ・マニプリ語バフティヤーリー語ブラジ語ブラフイ" + + "語ボド語アコース語ブリヤート語ブギ語ブル語ビリン語メドゥンバ語カドー語カリブ語カユーガ語チャワイ語セブアノ語チガ語チブチャ語チャガタイ語チュ" + + "ーク語マリ語チヌーク混成語チョクトー語チペワイアン語チェロキー語シャイアン語クルド語(ソラニー)コプト語カピス語クリミア・タタール語セーシェ" + + "ル・クレオール語カシューブ語ダコタ語ダルガン語タイタ語デラウェア語スレイビー語ドグリブ語ディンカ語ザルマ語ドーグリー語低地ソルブ語中央ドゥス" + + "ン語ドゥアラ語中世オランダ語ジョラ=フォニィ語ジュラ語ダザガ語エンブ語エフィク語エミリア語古代エジプト語エカジュク語エラム語中英語中央アラス" + + "カ・ユピック語エウォンド語エストレマドゥーラ語ファング語フィリピノ語トルネダール・フィンランド語フォン語ケイジャン・フランス語中期フランス語" + + "古フランス語アルピタン語北フリジア語東フリジア語フリウリ語ガ語ガガウズ語贛語ガヨ語バヤ語ダリー語(ゾロアスター教)ゲエズ語キリバス語ギラキ語" + + "中高ドイツ語古高ドイツ語ゴア・コンカニ語ゴーンディー語ゴロンタロ語ゴート語グレボ語古代ギリシャ語スイスドイツ語ワユ語フラフラ語グシイ語グウィ" + + "ッチン語ハイダ語客家語ハワイ語フィジー・ヒンディー語ヒリガイノン語ヒッタイト語フモン語高地ソルブ語湘語フパ語イバン語イビビオ語イロカノ語イン" + + "グーシ語イングリア語ジャマイカ・クレオール語ロジバン語ンゴンバ語マチャメ語ユダヤ・ペルシア語ユダヤ・アラビア語ユトランド語カラカルパク語カビ" + + "ル語カチン語カジェ語カンバ語カウィ語カバルド語カネンブ語カタブ語マコンデ語カーボベルデ・クレオール語ニャン語コロ語カインガング語カシ語コータ" + + "ン語コイラ・チーニ語コワール語キルマンジュキ語カコ語カレンジン語キンブンド語コミ・ペルミャク語コンカニ語コスラエ語クペレ語カラチャイ・バルカ" + + "ル語クリオ語キナライア語カレリア語クルク語サンバー語バフィア語ケルン語クムク語クテナイ語ラディノ語ランギ語ラフンダー語ランバ語レズギ語リング" + + "ア・フランカ・ノバリグリア語リヴォニア語ラコタ語ロンバルド語モンゴ語ロジ語北ロル語ラトガリア語ルバ・ルルア語ルイセーニョ語ルンダ語ルオ語ルシ" + + "ャイ語ルヒヤ語漢文ラズ語マドゥラ語マファ語マガヒー語マイティリー語マカッサル語マンディンゴ語マサイ語マバ語モクシャ語マンダル語メンデ語メル語" + + "モーリシャス・クレオール語中期アイルランド語マクア・ミート語メタ語ミクマク語ミナンカバウ語満州語マニプリ語モーホーク語モシ語山地マリ語ムンダ" + + "ン語複数言語クリーク語ミランダ語マールワーリー語メンタワイ語ミエネ語エルジャ語マーザンダラーン語閩南語ナポリ語ナマ語低地ドイツ語ネワール語ニ" + + "アス語ニウーエイ語アオ・ナガ語クワシオ語ンジエムブーン語ノガイ語古ノルド語ノヴィアルンコ語北部ソト語ヌエル語古典ネワール語ニャムウェジ語ニャ" + + "ンコレ語ニョロ語ンゼマ語オセージ語オスマントルコ語パンガシナン語パフラヴィー語パンパンガ語パピアメント語パラオ語ピカルディ語ナイジェリア・ピ" + + "ジン語ペンシルベニア・ドイツ語メノナイト低地ドイツ語古代ペルシア語プファルツ語フェニキア語ピエモンテ語ポントス・ギリシャ語ポンペイ語プロシア" + + "語古期プロバンス語キチェ語チンボラソ高地ケチュア語ラージャスターン語ラパヌイ語ラロトンガ語ロマーニャ語リーフ語ロンボ語ロマーニー語ロツマ語ル" + + "シン語ロヴィアナ語アルーマニア語ルワ語サンダウェ語サハ語サマリア・アラム語サンブル語ササク語サンターリー語サウラーシュトラ語ンガムバイ語サン" + + "グ語シチリア語スコットランド語サッサリ・サルデーニャ語南部クルド語セネカ語セナ語セリ語セリクプ語コイラボロ・センニ語古アイルランド語サモギテ" + + "ィア語タシルハイト語シャン語チャド・アラビア語シダモ語低シレジア語スラヤール語南サーミ語ルレ・サーミ語イナリ・サーミ語スコルト・サーミ語ソニ" + + "ンケ語ソグド語スリナム語セレル語サホ語ザーターフリジア語スクマ語スス語シュメール語コモロ語古典シリア語シリア語シレジア語トゥル語テムネ語テソ" + + "語テレーノ語テトゥン語ティグレ語ティブ語トケラウ語ツァフル語クリンゴン語トリンギット語タリシュ語タマシェク語トンガ語(ニアサ)トク・ピシン語" + + "トゥロヨ語タロコ語ツァコン語チムシュ語ムスリム・タタール語トゥンブカ語ツバル語タサワク語トゥヴァ語中央アトラス・タマジクト語ウドムルト語ウガ" + + "リト語ムブンドゥ語ルートヴァイ語ヴェネト語ヴェプス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語ウォライタ語ワライ語ワ" + + "ショ語ワルピリ語呉語カルムイク語メグレル語ソガ語ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリスシンボルゼーラント語" + + "ゼナガ語標準モロッコ タマジクト語ズニ語言語的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英語カナダ英語イギリス英" + + "語アメリカ英語スペイン語 (イベリア半島)フレミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語コンゴ・スワヒリ語簡体" + + "中国語繁体中国語" + +var jaLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000f, 0x001e, 0x0030, 0x0048, 0x0054, 0x0063, 0x0072, 0x0081, 0x0090, 0x009f, 0x00ae, 0x00c9, 0x00db, 0x00ed, 0x00ff, 0x010e, 0x011d, 0x012c, 0x013b, 0x014a, 0x0159, 0x016b, 0x017d, 0x018c, 0x019b, 0x01a7, 0x01b3, 0x01c5, 0x01d7, 0x01e9, 0x01fb, 0x0207, 0x0216, 0x0222, 0x022e, 0x023d, 0x0243, 0x0258, 0x0267, - 0x0279, 0x0285, 0x0294, 0x02a0, 0x02b5, 0x02c4, 0x02d3, 0x02e2, - 0x02f4, 0x0309, 0x032d, 0x033c, 0x034e, 0x0363, 0x036f, 0x037b, - 0x038a, 0x039c, 0x03ab, 0x03bd, 0x03c9, 0x03db, 0x03ed, 0x03f9, + 0x0279, 0x0285, 0x0294, 0x029d, 0x02b2, 0x02c1, 0x02d0, 0x02df, + 0x02f1, 0x0306, 0x032a, 0x0339, 0x034b, 0x0360, 0x036c, 0x0378, + 0x0387, 0x0399, 0x03a8, 0x03ba, 0x03c6, 0x03d8, 0x03ea, 0x03f6, // Entry 40 - 7F - 0x0411, 0x0426, 0x043b, 0x0444, 0x0450, 0x0465, 0x046e, 0x0483, - 0x0492, 0x04b0, 0x04b9, 0x04c5, 0x04d7, 0x04e3, 0x04ef, 0x0501, - 0x050d, 0x0525, 0x0534, 0x0543, 0x054c, 0x0558, 0x056a, 0x0576, - 0x057f, 0x0597, 0x05a6, 0x05b2, 0x05ca, 0x05d6, 0x05e8, 0x05f7, - 0x0600, 0x0612, 0x062a, 0x0639, 0x064e, 0x0660, 0x066c, 0x067e, - 0x0693, 0x06a2, 0x06b7, 0x06c3, 0x06cf, 0x06db, 0x06e7, 0x06f9, - 0x0708, 0x0717, 0x0726, 0x074c, 0x0772, 0x0784, 0x0790, 0x07a2, - 0x07ae, 0x07c3, 0x07cf, 0x07de, 0x07ed, 0x07ff, 0x080b, 0x081d, + 0x040e, 0x0423, 0x0438, 0x0441, 0x044d, 0x0462, 0x046b, 0x0480, + 0x048f, 0x04ad, 0x04b6, 0x04c2, 0x04d4, 0x04e0, 0x04ec, 0x04fe, + 0x050a, 0x0522, 0x0531, 0x0540, 0x0549, 0x0555, 0x0567, 0x0573, + 0x057c, 0x0594, 0x05a3, 0x05af, 0x05c7, 0x05d3, 0x05e5, 0x05f4, + 0x05fd, 0x060f, 0x0627, 0x0636, 0x064b, 0x065d, 0x0669, 0x067b, + 0x0690, 0x069f, 0x06b4, 0x06c0, 0x06cc, 0x06de, 0x06ea, 0x06fc, + 0x070b, 0x071a, 0x0729, 0x074f, 0x0775, 0x0787, 0x0793, 0x07a5, + 0x07b1, 0x07c6, 0x07d2, 0x07e1, 0x07f0, 0x0802, 0x080e, 0x0820, // Entry 80 - BF - 0x0832, 0x0844, 0x0853, 0x0865, 0x0874, 0x0886, 0x0892, 0x08a1, - 0x08b9, 0x08ce, 0x08da, 0x08e9, 0x08f5, 0x0904, 0x0916, 0x0928, - 0x0934, 0x0940, 0x094c, 0x095e, 0x096d, 0x0979, 0x0988, 0x0994, - 0x09a9, 0x09b8, 0x09c4, 0x09d0, 0x09dc, 0x09e5, 0x09fa, 0x0a0c, - 0x0a18, 0x0a24, 0x0a30, 0x0a3f, 0x0a4e, 0x0a5a, 0x0a69, 0x0a7b, - 0x0a8d, 0x0a9c, 0x0aa8, 0x0ab7, 0x0acc, 0x0ad8, 0x0ae7, 0x0af0, - 0x0b05, 0x0b11, 0x0b1d, 0x0b26, 0x0b35, 0x0b41, 0x0b50, 0x0b62, - 0x0b71, 0x0b92, 0x0ba4, 0x0bb0, 0x0bbc, 0x0bcb, 0x0bda, 0x0be9, + 0x0835, 0x0847, 0x0856, 0x0868, 0x0877, 0x0889, 0x0895, 0x08ad, + 0x08c5, 0x08da, 0x08e6, 0x08f5, 0x0901, 0x0910, 0x0922, 0x0934, + 0x0940, 0x094c, 0x0958, 0x096a, 0x0979, 0x0985, 0x0994, 0x09a0, + 0x09b5, 0x09c4, 0x09d0, 0x09dc, 0x09e8, 0x09f1, 0x0a06, 0x0a18, + 0x0a24, 0x0a30, 0x0a3c, 0x0a4b, 0x0a5a, 0x0a66, 0x0a75, 0x0a87, + 0x0a99, 0x0aa8, 0x0ab4, 0x0ac3, 0x0ad8, 0x0ae4, 0x0af3, 0x0afc, + 0x0b11, 0x0b1d, 0x0b29, 0x0b32, 0x0b41, 0x0b4d, 0x0b5c, 0x0b6e, + 0x0b7d, 0x0b9e, 0x0bb0, 0x0bbc, 0x0bc8, 0x0bd7, 0x0be6, 0x0bf5, // Entry C0 - FF - 0x0c04, 0x0c16, 0x0c1f, 0x0c2e, 0x0c3a, 0x0c4c, 0x0c5b, 0x0c6d, - 0x0c91, 0x0ca0, 0x0cbe, 0x0cdc, 0x0ce5, 0x0cf7, 0x0d0f, 0x0d1b, - 0x0d2d, 0x0d3f, 0x0d48, 0x0d6f, 0x0d78, 0x0d84, 0x0d99, 0x0da8, - 0x0db4, 0x0dc0, 0x0dcf, 0x0dd8, 0x0de7, 0x0df3, 0x0e08, 0x0e20, - 0x0e2c, 0x0e35, 0x0e47, 0x0e50, 0x0e5f, 0x0e86, 0x0ea1, 0x0ead, - 0x0ebc, 0x0ec5, 0x0ed4, 0x0ee6, 0x0eef, 0x0ef8, 0x0f04, 0x0f16, - 0x0f22, 0x0f2e, 0x0f3d, 0x0f4c, 0x0f5b, 0x0f64, 0x0f73, 0x0f85, - 0x0f94, 0x0f9d, 0x0fb2, 0x0fc4, 0x0fd9, 0x0feb, 0x0ffd, 0x1017, + 0x0c10, 0x0c22, 0x0c2b, 0x0c3a, 0x0c46, 0x0c55, 0x0c64, 0x0c76, + 0x0c9a, 0x0c9a, 0x0ca9, 0x0cc7, 0x0ce5, 0x0cee, 0x0d00, 0x0d18, + 0x0d24, 0x0d36, 0x0d48, 0x0d51, 0x0d78, 0x0d81, 0x0d8d, 0x0da2, + 0x0db1, 0x0dbd, 0x0dc9, 0x0dd8, 0x0de1, 0x0df0, 0x0dfc, 0x0e11, + 0x0e29, 0x0e35, 0x0e3e, 0x0e50, 0x0e59, 0x0e68, 0x0e8f, 0x0eaa, + 0x0eb6, 0x0ec5, 0x0ece, 0x0edd, 0x0eef, 0x0ef8, 0x0f01, 0x0f0d, + 0x0f1f, 0x0f2b, 0x0f37, 0x0f46, 0x0f55, 0x0f64, 0x0f6d, 0x0f7c, + 0x0f8e, 0x0f9d, 0x0fa6, 0x0fbb, 0x0fcd, 0x0fe2, 0x0ff4, 0x1006, // Entry 100 - 13F - 0x1023, 0x102f, 0x104d, 0x105f, 0x106b, 0x107a, 0x1086, 0x1098, - 0x10aa, 0x10b9, 0x10c8, 0x10d4, 0x10e6, 0x10f8, 0x110d, 0x111c, - 0x1131, 0x114c, 0x1158, 0x1164, 0x1170, 0x117f, 0x118e, 0x11a3, - 0x11b5, 0x11c1, 0x11ca, 0x11ee, 0x1200, 0x121e, 0x122d, 0x123f, - 0x1269, 0x1275, 0x1296, 0x12ab, 0x12bd, 0x12cf, 0x12e1, 0x12f3, - 0x1302, 0x1308, 0x1317, 0x131d, 0x1326, 0x132f, 0x1352, 0x135e, - 0x136d, 0x1379, 0x138b, 0x139d, 0x13b5, 0x13ca, 0x13dc, 0x13e8, - 0x13f4, 0x1409, 0x141e, 0x1427, 0x1436, 0x1442, 0x1457, 0x1463, + 0x1020, 0x102c, 0x1038, 0x1056, 0x107a, 0x108c, 0x1098, 0x10a7, + 0x10b3, 0x10c5, 0x10d7, 0x10e6, 0x10f5, 0x1101, 0x1113, 0x1125, + 0x113a, 0x1149, 0x115e, 0x1179, 0x1185, 0x1191, 0x119d, 0x11ac, + 0x11bb, 0x11d0, 0x11e2, 0x11ee, 0x11f7, 0x121b, 0x122d, 0x124b, + 0x125a, 0x126c, 0x1296, 0x12a2, 0x12c3, 0x12d8, 0x12ea, 0x12fc, + 0x130e, 0x1320, 0x132f, 0x1335, 0x1344, 0x134a, 0x1353, 0x135c, + 0x137f, 0x138b, 0x139a, 0x13a6, 0x13b8, 0x13ca, 0x13e2, 0x13f7, + 0x1409, 0x1415, 0x1421, 0x1436, 0x144b, 0x1454, 0x1463, 0x146f, // Entry 140 - 17F - 0x146c, 0x1478, 0x1499, 0x14ae, 0x14c0, 0x14cc, 0x14de, 0x14e4, - 0x14f6, 0x1502, 0x1511, 0x1520, 0x1532, 0x1544, 0x1568, 0x1577, - 0x1586, 0x1595, 0x15b0, 0x15cb, 0x15dd, 0x15f2, 0x15fe, 0x160a, - 0x1616, 0x1622, 0x162e, 0x163d, 0x164c, 0x1658, 0x1667, 0x168e, - 0x169a, 0x16a3, 0x16b8, 0x16c1, 0x16d0, 0x16e8, 0x16f7, 0x170f, - 0x1718, 0x172a, 0x173c, 0x1757, 0x1766, 0x1775, 0x1781, 0x1793, - 0x179f, 0x17b1, 0x17c0, 0x17cc, 0x17db, 0x17ea, 0x17f6, 0x1802, - 0x1811, 0x1820, 0x182c, 0x183e, 0x184a, 0x1856, 0x187a, 0x1889, + 0x1484, 0x1490, 0x1499, 0x14a5, 0x14c6, 0x14db, 0x14ed, 0x14f9, + 0x150b, 0x1511, 0x151a, 0x1526, 0x1535, 0x1544, 0x1556, 0x1568, + 0x158c, 0x159b, 0x15aa, 0x15b9, 0x15d4, 0x15ef, 0x1601, 0x1616, + 0x1622, 0x162e, 0x163a, 0x1646, 0x1652, 0x1661, 0x1670, 0x167c, + 0x168b, 0x16b2, 0x16be, 0x16c7, 0x16dc, 0x16e5, 0x16f4, 0x170c, + 0x171b, 0x1733, 0x173c, 0x174e, 0x1760, 0x177b, 0x178a, 0x1799, + 0x17a5, 0x17c6, 0x17d2, 0x17e4, 0x17f3, 0x17ff, 0x180e, 0x181d, + 0x1829, 0x1835, 0x1844, 0x1853, 0x185f, 0x1871, 0x187d, 0x1889, // Entry 180 - 1BF - 0x189b, 0x18a7, 0x18b9, 0x18c5, 0x18ce, 0x18da, 0x18ec, 0x1901, - 0x1916, 0x1922, 0x192b, 0x193a, 0x1946, 0x194c, 0x1955, 0x1964, - 0x1970, 0x197f, 0x1994, 0x19a6, 0x19bb, 0x19c7, 0x19d0, 0x19df, - 0x19ee, 0x19fa, 0x1a03, 0x1a2a, 0x1a45, 0x1a5d, 0x1a66, 0x1a75, - 0x1a8a, 0x1a93, 0x1aa2, 0x1ab4, 0x1abd, 0x1acc, 0x1adb, 0x1ae7, - 0x1af6, 0x1b05, 0x1b1d, 0x1b2f, 0x1b3b, 0x1b4a, 0x1b65, 0x1b6e, - 0x1b7a, 0x1b83, 0x1b95, 0x1ba4, 0x1bb0, 0x1bc2, 0x1bd4, 0x1be3, - 0x1bfb, 0x1c07, 0x1c16, 0x1c25, 0x1c2e, 0x1c3d, 0x1c49, 0x1c5e, + 0x18ad, 0x18bc, 0x18ce, 0x18da, 0x18ec, 0x18f8, 0x1901, 0x190d, + 0x191f, 0x1934, 0x1949, 0x1955, 0x195e, 0x196d, 0x1979, 0x197f, + 0x1988, 0x1997, 0x19a3, 0x19b2, 0x19c7, 0x19d9, 0x19ee, 0x19fa, + 0x1a03, 0x1a12, 0x1a21, 0x1a2d, 0x1a36, 0x1a5d, 0x1a78, 0x1a90, + 0x1a99, 0x1aa8, 0x1abd, 0x1ac6, 0x1ad5, 0x1ae7, 0x1af0, 0x1aff, + 0x1b0e, 0x1b1a, 0x1b29, 0x1b38, 0x1b50, 0x1b62, 0x1b6e, 0x1b7d, + 0x1b98, 0x1ba1, 0x1bad, 0x1bb6, 0x1bc8, 0x1bd7, 0x1be3, 0x1bf5, + 0x1c07, 0x1c16, 0x1c2e, 0x1c3a, 0x1c49, 0x1c58, 0x1c61, 0x1c70, // Entry 1C0 - 1FF - 0x1c73, 0x1c85, 0x1c91, 0x1c9d, 0x1cac, 0x1cc4, 0x1cd9, 0x1cee, - 0x1d00, 0x1d15, 0x1d21, 0x1d33, 0x1d57, 0x1d78, 0x1d8d, 0x1d9f, - 0x1db1, 0x1dc3, 0x1de1, 0x1df0, 0x1dff, 0x1e17, 0x1e23, 0x1e47, - 0x1e62, 0x1e71, 0x1e83, 0x1e95, 0x1ea1, 0x1ead, 0x1ebf, 0x1ecb, - 0x1ed7, 0x1ee9, 0x1efe, 0x1f07, 0x1f19, 0x1f28, 0x1f43, 0x1f52, - 0x1f5e, 0x1f73, 0x1f8e, 0x1fa0, 0x1fac, 0x1fbb, 0x1fd3, 0x1ff7, - 0x2009, 0x2015, 0x201e, 0x2027, 0x2036, 0x2054, 0x206f, 0x2085, - 0x209a, 0x20a6, 0x20c1, 0x20cd, 0x20df, 0x20f1, 0x2100, 0x2115, + 0x1c7c, 0x1c91, 0x1ca6, 0x1cb8, 0x1cc4, 0x1cd0, 0x1cdf, 0x1cf7, + 0x1d0c, 0x1d21, 0x1d33, 0x1d48, 0x1d54, 0x1d66, 0x1d87, 0x1dab, + 0x1dcc, 0x1de1, 0x1df3, 0x1e05, 0x1e17, 0x1e35, 0x1e44, 0x1e53, + 0x1e6b, 0x1e77, 0x1e9b, 0x1eb6, 0x1ec5, 0x1ed7, 0x1ee9, 0x1ef5, + 0x1f01, 0x1f13, 0x1f1f, 0x1f2b, 0x1f3d, 0x1f52, 0x1f5b, 0x1f6d, + 0x1f76, 0x1f91, 0x1fa0, 0x1fac, 0x1fc1, 0x1fdc, 0x1fee, 0x1ffa, + 0x2009, 0x2021, 0x2045, 0x2057, 0x2063, 0x206c, 0x2075, 0x2084, + 0x20a2, 0x20ba, 0x20cf, 0x20e4, 0x20f0, 0x210b, 0x2117, 0x2129, // Entry 200 - 23F - 0x212d, 0x2148, 0x2157, 0x2163, 0x2172, 0x217e, 0x2187, 0x21a2, - 0x21ae, 0x21b7, 0x21c9, 0x21d5, 0x21e7, 0x21f3, 0x2202, 0x220e, - 0x221a, 0x2223, 0x2232, 0x2241, 0x2250, 0x225c, 0x226b, 0x227a, - 0x228c, 0x22a1, 0x22b0, 0x22c2, 0x22d9, 0x22ee, 0x22fd, 0x2309, - 0x2318, 0x2327, 0x2345, 0x2357, 0x2363, 0x2372, 0x2381, 0x23a8, - 0x23ba, 0x23c9, 0x23db, 0x23e4, 0x23f0, 0x23ff, 0x240e, 0x2420, - 0x2438, 0x2447, 0x2453, 0x2462, 0x2471, 0x2483, 0x248f, 0x249b, - 0x24aa, 0x24b0, 0x24c2, 0x24d1, 0x24da, 0x24e3, 0x24ef, 0x24fe, + 0x213b, 0x214a, 0x215f, 0x2177, 0x2192, 0x21a1, 0x21ad, 0x21bc, + 0x21c8, 0x21d1, 0x21ec, 0x21f8, 0x2201, 0x2213, 0x221f, 0x2231, + 0x223d, 0x224c, 0x2258, 0x2264, 0x226d, 0x227c, 0x228b, 0x229a, + 0x22a6, 0x22b5, 0x22c4, 0x22d6, 0x22eb, 0x22fa, 0x230c, 0x2323, + 0x2338, 0x2347, 0x2353, 0x2362, 0x2371, 0x238f, 0x23a1, 0x23ad, + 0x23bc, 0x23cb, 0x23f2, 0x2404, 0x2413, 0x2425, 0x242e, 0x243a, + 0x2449, 0x2458, 0x246a, 0x2482, 0x2491, 0x249d, 0x24ac, 0x24bb, + 0x24cd, 0x24d9, 0x24e5, 0x24f4, 0x24fa, 0x250c, 0x251b, 0x2524, // Entry 240 - 27F - 0x250d, 0x2525, 0x252e, 0x253d, 0x2552, 0x2564, 0x2570, 0x2599, - 0x25a2, 0x25b7, 0x25c0, 0x25db, 0x25db, 0x25db, 0x25f9, 0x2614, - 0x2623, 0x2635, 0x2647, 0x2647, 0x266b, 0x266b, 0x266b, 0x266b, - 0x266b, 0x266b, 0x2680, 0x2680, 0x26a7, 0x26b9, 0x26d7, 0x26f2, - 0x2701, 0x2710, -} // Size: 1244 bytes - -var kaLangStr string = "" + // Size: 10123 bytes - "აფარიაფხაზურიავესტურიაფრიკაანსიაკანიამჰარულიარაგონულიარაბულიასამურიაიმარ" + - "ააზერბაიჯანულიბაშკირულიბელორუსულიბულგარულიბამბარაბენგალურიტიბეტურიბრეტ" + - "ონულიბოსნიურიკატალანურიჩეჩნურიკორსიკულიკრიჩეხურისაეკლესიო სლავურიჩუვაშ" + - "ურიუელსურიდანიურიგერმანულიდივეჰიძონგკხაევებერძნულიინგლისურიესპერანტოეს" + - "პანურიესტონურიბასკურისპარსულიფინურიფიჯიფარერულიფრანგულიდასავლეთფრიზიულ" + - "იირლანდიურიშოტლანდიური გელურიგალისიურიგუარანიგუჯარათიმენურიჰაუსაებრაულ" + - "იჰინდიხორვატულიჰაიტიურიუნგრულისომხურიინტერლინგუალურიინდონეზიურიინტერლი" + - "ნგიიგბოსიჩუანის იიდოისლანდიურიიტალიურიინუკტიტუტიიაპონურიიავურიქართულიკ" + - "ონგოკიკუიუყაზახურიდასავლეთ გრენლანდიურიქმერულიკანადაკორეულიკანურიქაშმი" + - "რულიქურთულიკომიკორნულიყირგიზულილათინურილუქსემბურგულიგანდალიმბურგულილინ" + - "გალალაოსურილიტვურილუბა-კატანგალატვიურიმალაგასიურიმაორიმაკედონურიმალაია" + - "ლამურიმონღოლურიმარათჰიმალაიურიმალტურიბირმულინაურუჩრდილოეთ ნდებელენეპალ" + - "ურინიდერლანდურინორვეგიული ნიუნორსკინორვეგიული ბუკმოლინავახონიანჯაოქსიტ" + - "ანურიოჯიბვეორომოორიაოსურიპენჯაბურიპალიპოლონურიპუშტუპორტუგალიურიკეჩუარე" + - "ტორომანულირუნდირუმინულირუსულიკინიარუანდასანსკრიტისარდინიულისინდჰურიჩრდ" + - "ილოეთ საამურისანგოსინჰალურისლოვაკურისლოვენურისამოაშონასომალიურიალბანურ" + - "ისერბულისამხრეთ სოთოს ენასუნდურიშვედურისუაჰილიტამილურიტელუგუტაჯიკურიტა" + - "ითიგრინიათურქმენულიტსვანატონგანურითურქულითათრულიუიღურულიუკრაინულიურდუუ" + - "ზბეკურივიეტნამურივოლოფურიქჰოსაიდიშიიორუბაჩინურიზულუაჩეხურიაჩოლიადანგმე" + - "ადიღეურიაღემიაინუურიაქადურიალეუტურისამხრეთ ალთაურიძველი ინგლისურიანგიკ" + - "აარამეულიმაპუდუნგუნიარაპაჰოარავაკიასუასტურიულიავადიბელუჯიბალინურიბასაბ" + - "ამუნიბეჯაბემბაბენადასავლეთ ბელუჯიბოჯპურიბრაჯიბოდობურიატულიბილინიკაიუგა" + - "ჩიგაჩიბჩამარიულიჩეროკისორანი ქურთულიკოპტურიყირიმულ-თურქულიკაშუბურიდაკო" + - "ტადარგუულიტაიტადელავარულიდოგრიბიდინკაზარმადოგრიქვემოსორბულიდუალადიოლად" + - "იულაემბუეფიკიძველეგვიპტურიევონდოფილიპინურიფონიძველი ფრანგულიჩრდილოფრიზ" + - "იულიაღმოსავლეთფრიზიულიფრიულურიგაგაუზურიგბაიაგეეზიძველი ზემოგერმანულიგო" + - "ნდიგოთურიძველი ბერძნულიშვეიცარიული გერმანულიგუსიიჰავაიურიხეთური ენაზემ" + - "ოსორბულიიბანიიბიბიოინგუშურილოჟბანინგომბაკიმაშამიიუდეო-სპარსულიიუდეო-არ" + - "აბულიყარაყალფახურიკაბილურიკაჩინიკამბაყაბარდოულიმაკონდეკაბუვერდიანუკოირ" + - "ა-ჩიინიკალენჯინიკიმბუნდუკომი-პერმიაკულიკონკანიკპელეყარაჩაულ-ბალყარულიკ" + - "არელიურიკურუქიშამბალაბაფიაყუმუხურიკუტენაილადინოლანგილანდალამბალეზგიური" + - "ლაკოტამონგოლოზიჩრდილოეთ ლურილუისენიოლუნდალუომიზოლუჰიამაფამაგაჰიმაითილი" + - "მასაიმაბამოქშამენდემერუმორისიენიმაქუვა-მეეტომეტა’ ენამანჯურიულიმანიპურ" + - "იმოჰაუკურიმუნდანგიკრიკიმირანდულიმარვარიმიენეერზიამაზანდერანულინეაპოლიტ" + - "ანურინამაქვემოგერმანულინევარიკვასიონოღაურიძველსკანდინავიურინკონუერიკლა" + - "სიკური ნევარულინიამვეზინიანკოლენიორონზიმაფალაურიძველი სპარსულიფინიკიურ" + - "იძველი პროვანსულიკიჩერაჯასთანირაპანუირაროტონგულირომბობოშურირუაიაკუტური" + - "სამარიულ-არამეულისამბურუსანგუსიცილიურისამხრეთ ქურთულისენეკასენასელკუპუ" + - "რიკოირაბორო-სენიძველი ირლანდიურიშილჰაშანიჩადური არაბულისამხრეთ საამური" + - "ლულე-საამურიინარი-საამურისკოლტ-საამურიშუმერულიკომორულიკლასიკური სირიულ" + - "ისირიულიტესოთიგრეკლინგონიტასავაქიტუვაცენტრალური მოროკოს ტამაზიგხტიუდმუ" + - "რტულიუგარითულიუცნობი ენავაივუნჯოველაითავალპირიყალმუხურისოგაკანტონურიბლ" + - "ისსიმბოლოებიზენაგასტანდარტული მაროკოული ტამაზიგხტილინგვისტური შიგთავსი" + - " არ არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გერმანულიშვეიცარი" + - "ული ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისურიბრიტანული ინგლ" + - "ისურიამერიკული ინგლისურილათინურ ამერიკული ესპანურიევროპული ესპანურიმექ" + - "სიკური ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვემოსაქსონურიფლამ" + - "ანდიურიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლდავურისერბულ-ხორ" + - "ვატულიკონგოს სუაჰილიგამარტივებული ჩინურიტრადიციული ჩინური" - -var kaLangIdx = []uint16{ // 610 elements + 0x252d, 0x2539, 0x2548, 0x2557, 0x256f, 0x2578, 0x2587, 0x259c, + 0x25ae, 0x25ba, 0x25df, 0x25e8, 0x25fd, 0x2606, 0x2621, 0x2621, + 0x2621, 0x263f, 0x265a, 0x2669, 0x267b, 0x268d, 0x268d, 0x26b1, + 0x26b1, 0x26b1, 0x26b1, 0x26b1, 0x26b1, 0x26c6, 0x26c6, 0x26ed, + 0x26ff, 0x271d, 0x2738, 0x2747, 0x2756, +} // Size: 1250 bytes + +const kaLangStr string = "" + // Size: 12200 bytes + "აფარიაფხაზურიავესტურიაფრიკაანსიაკანიამჰარულიარაგონულიარაბულიასამურიხუნძუ" + + "რიაიმარააზერბაიჯანულიბაშკირულიბელორუსულიბულგარულიბისლამაბამბარაბენგალუ" + + "რიტიბეტურიბრეტონულიბოსნიურიკატალანურიჩეჩნურიჩამოროკორსიკულიკრიჩეხურისა" + + "ეკლესიო სლავურიჩუვაშურიუელსურიდანიურიგერმანულიდივეჰიძონგკხაევებერძნული" + + "ინგლისურიესპერანტოესპანურიესტონურიბასკურისპარსულიფულაფინურიფიჯიფარერულ" + + "იფრანგულიდასავლეთფრიზიულიირლანდიურიშოტლანდიური გელურიგალისიურიგუარანიგ" + + "უჯარათიმენურიჰაუსაებრაულიჰინდიხორვატულიჰაიტიური კრეოლიუნგრულისომხურიჰე" + + "რეროინტერლინგუალურიინდონეზიურიინტერლინგიიგბოსიჩუანის იიდოისლანდიურიიტა" + + "ლიურიინუკტიტუტიიაპონურიიავურიქართულიკონგოკიკუიუკუნამაყაზახურიდასავლეთ " + + "გრენლანდიურიქმერულიკანადაკორეულიკანურიქაშმირულიქურთულიკომიკორნულიყირგი" + + "ზულილათინურილუქსემბურგულიგანდალიმბურგულილინგალალაოსურილიტვურილუბა-კატა" + + "ნგალატვიურიმალაგასიურიმარშალურიმაორიმაკედონურიმალაიალამურიმონღოლურიმარ" + + "ათჰიმალაიურიმალტურიბირმულინაურუჩრდილოეთ ნდებელენეპალურინდონგანიდერლანდ" + + "ურინორვეგიული ნიუნორსკინორვეგიული ბუკმოლისამხრეთ ნდებელურინავახონიანჯა" + + "ოქსიტანურიოჯიბვეორომოორიაოსურიპენჯაბურიპალიპოლონურიპუშტუპორტუგალიურიკე" + + "ჩუარეტორომანულირუნდირუმინულირუსულიკინიარუანდასანსკრიტისარდინიულისინდჰუ" + + "რიჩრდილოეთ საამურისანგოსინჰალურისლოვაკურისლოვენურისამოაშონასომალიურიალ" + + "ბანურისერბულისუატისამხრეთ სოთოს ენასუნდურიშვედურისუაჰილიტამილურიტელუგუ" + + "ტაჯიკურიტაიტიგრინიათურქმენულიტსვანატონგანურითურქულიტსონგათათრულიტაიტურ" + + "იუიღურულიუკრაინულიურდუუზბეკურივენდავიეტნამურივოლაპუკივალონურივოლოფურიქ" + + "ჰოსაიდიშიიორუბაჩინურიზულუაჩეხურიაჩოლიადანგმეადიღეურიაღემიაინუურიაქადურ" + + "იალეუტურისამხრეთ ალთაურიძველი ინგლისურიანგიკაარამეულიმაპუდუნგუნიარაპაჰ" + + "ოარავაკიასუასტურიულიავადიბელუჯიბალინურიბასაბამუნიბეჯაბემბაბენადასავლეთ" + + " ბელუჯიბოჯპურიბინისიკსიკაბრაჯიბოდობურიატულიბუგინურიბილინიკაიუგასებუანოჩი" + + "გაჩიბჩაჩუკოტკურიმარიულიჩინუკის ჟარგონიჩოკტოჩიპევიანიჩეროკიჩეიენისორანი" + + " ქურთულიკოპტურიყირიმულ-თურქულისესელვა-კრეოლური ფრანგულიკაშუბურიდაკოტურიდ" + + "არგუულიტაიტადელავერულისლეივიდოგრიბიდინკაზარმადოგრიქვემოსორბულიდუალასაშ" + + "უალო ჰოლანდიურიდიოლადიულადაზაგაემბუეფიკიძველეგვიპტურიეკაჯუკისაშუალო ინ" + + "გლისურიევონდოფილიპინურიფონისაშუალო ფრანგულიძველი ფრანგულიჩრდილოფრიზიულ" + + "იაღმოსავლეთფრიზიულიფრიულურიგაგაგაუზურიგბაიაგეეზიგილბერტულისაშუალო ზემო" + + "გერმანულიძველი ზემოგერმანულიგონდიგორონტალოგოთურიძველი ბერძნულიშვეიცარი" + + "ული გერმანულიგუსიიგვიჩინიჰავაიურიჰილიგაინონიხეთურიჰმონგიზემოსორბულიჰუპ" + + "აიბანიიბიბიოილოკოინგუშურილოჟბანინგომბაკიმაშამიიუდეო-სპარსულიიუდეო-არაბ" + + "ულიყარაყალფახურიკაბილურიკაჩინიკაჯიკამბაყაბარდოულიტიაპიმაკონდეკაბუვერდი" + + "ანუკოროხასიკოირა-ჩიინიკაკოკალენჯინიკიმბუნდუკომი-პერმიაკულიკონკანიკუსაი" + + "ეკპელეყარაჩაულ-ბალყარულიკარელიურიკურუქიშამბალაბაფიაკიოლშიყუმუხურიკუტენ" + + "აილადინოლანგილანდალამბალეზგიურილაკოტამონგოლოზიჩრდილოეთ ლურილუბა-ლულუალ" + + "უისენიოლუნდალუომიზოლუჰიამადურულიმაფამაგაჰიმაითილიმაკასარიმასაიმაბამოქშ" + + "ამენდემერუმორისიენისაშუალო ირლანდიურიმაქუვა-მეეტომეტა-ენამიკმაკიმინანგ" + + "კაბაუმანჯურიულიმანიპურიმოჰაუკურიმოსიმუნდანგისხვადასხვა ენაკრიკიმირანდუ" + + "ლიმარვარიმიენეერზიამაზანდერანულინეაპოლიტანურინამაქვემოგერმანულინევარინ" + + "იასინიუეკვასიონგიმბუნინოღაურიძველსკანდინავიურინკოჩრდილოეთ სოთონუერიკლა" + + "სიკური ნევარულინიამვეზინიანკოლენიორონზიმაპანგასინანიფალაურიპამპანგაპაპ" + + "იამენტოფალაუანინიგერიული კრეოლურიძველი სპარსულიფინიკიურიპრუსიულიძველი " + + "პროვანსულიკიჩერაჯასთანირაპანუირაროტონგულირომბობოშურიარომანულირუასანდავ" + + "ეიაკუტურისამარიულ-არამეულისამბურუსანტალინგამბაისანგუსიცილიურიშოტლანდიუ" + + "რისამხრეთქურთულისენეკასენასელკუპურიკოირაბორო-სენიძველი ირლანდიურიშილჰა" + + "შანიჩადური არაბულისამხრეთსამურილულე-საამურიინარი-საამურისკოლტ-საამურის" + + "ონინკესრანან ტონგოსაჰოსუკუმაშუმერულიკომორულიკლასიკური სირიულისირიულიტი" + + "ნმეტესოტეტუმითიგრეკლინგონიტოკ-პისინიტაროკოტუმბუკატუვალუტასავაქიტუვაცენ" + + "ტრალური მოროკოს ტამაზიგხტიუდმურტულიუგარითულიუმბუნდუძირეული ენავაივუნჯო" + + "ვალსერიველაითავარაივალპირიყალმუხურისოგაიანგბენიიემბაკანტონურიბლისსიმბო" + + "ლოებიზენაგასტანდარტული მაროკოული ტამაზიგხტიზუნილინგვისტური შიგთავსი არ" + + " არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გერმანულიშვეიცარიული" + + " ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისურიბრიტანული ინგლისური" + + "ამერიკული ინგლისურილათინურ ამერიკული ესპანურიევროპული ესპანურიმექსიკურ" + + "ი ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვემოსაქსონურიფლამანდიუ" + + "რიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლდავურისერბულ-ხორვატულ" + + "იკონგოს სუაჰილიგამარტივებული ჩინურიტრადიციული ჩინური" + +var kaLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0027, 0x003f, 0x005d, 0x006c, 0x0084, 0x009f, - 0x00b4, 0x00c9, 0x00c9, 0x00db, 0x0102, 0x011d, 0x013b, 0x0156, - 0x0156, 0x016b, 0x0186, 0x019e, 0x01b9, 0x01d1, 0x01ef, 0x0204, - 0x0204, 0x021f, 0x0228, 0x023a, 0x026b, 0x0283, 0x0298, 0x02ad, - 0x02c8, 0x02da, 0x02ef, 0x02f8, 0x0310, 0x032b, 0x0346, 0x035e, - 0x0376, 0x038b, 0x03a3, 0x03a3, 0x03b5, 0x03c1, 0x03d9, 0x03f1, - 0x0421, 0x043f, 0x0473, 0x048e, 0x04a3, 0x04bb, 0x04cd, 0x04dc, - 0x04f1, 0x0500, 0x0500, 0x051b, 0x0533, 0x0548, 0x055d, 0x055d, + 0x00b4, 0x00c9, 0x00de, 0x00f0, 0x0117, 0x0132, 0x0150, 0x016b, + 0x0180, 0x0195, 0x01b0, 0x01c8, 0x01e3, 0x01fb, 0x0219, 0x022e, + 0x0240, 0x025b, 0x0264, 0x0276, 0x02a7, 0x02bf, 0x02d4, 0x02e9, + 0x0304, 0x0316, 0x032b, 0x0334, 0x034c, 0x0367, 0x0382, 0x039a, + 0x03b2, 0x03c7, 0x03df, 0x03eb, 0x03fd, 0x0409, 0x0421, 0x0439, + 0x0469, 0x0487, 0x04bb, 0x04d6, 0x04eb, 0x0503, 0x0515, 0x0524, + 0x0539, 0x0548, 0x0548, 0x0563, 0x058e, 0x05a3, 0x05b8, 0x05ca, // Entry 40 - 7F - 0x058a, 0x05ab, 0x05c9, 0x05d5, 0x05f1, 0x05f1, 0x05fa, 0x0618, - 0x0630, 0x064e, 0x0666, 0x0678, 0x068d, 0x069c, 0x06ae, 0x06ae, - 0x06c6, 0x0703, 0x0718, 0x072a, 0x073f, 0x0751, 0x076c, 0x0781, - 0x078d, 0x07a2, 0x07bd, 0x07d5, 0x07fc, 0x080b, 0x0829, 0x083e, - 0x0853, 0x0868, 0x088a, 0x08a2, 0x08c3, 0x08c3, 0x08d2, 0x08f0, - 0x0914, 0x092f, 0x0944, 0x095c, 0x0971, 0x0986, 0x0995, 0x09c3, - 0x09db, 0x09db, 0x09ff, 0x0a39, 0x0a6d, 0x0a6d, 0x0a7f, 0x0a91, - 0x0aaf, 0x0ac1, 0x0ad0, 0x0adc, 0x0aeb, 0x0b06, 0x0b12, 0x0b2a, + 0x05f7, 0x0618, 0x0636, 0x0642, 0x065e, 0x065e, 0x0667, 0x0685, + 0x069d, 0x06bb, 0x06d3, 0x06e5, 0x06fa, 0x0709, 0x071b, 0x072d, + 0x0745, 0x0782, 0x0797, 0x07a9, 0x07be, 0x07d0, 0x07eb, 0x0800, + 0x080c, 0x0821, 0x083c, 0x0854, 0x087b, 0x088a, 0x08a8, 0x08bd, + 0x08d2, 0x08e7, 0x0909, 0x0921, 0x0942, 0x095d, 0x096c, 0x098a, + 0x09ae, 0x09c9, 0x09de, 0x09f6, 0x0a0b, 0x0a20, 0x0a2f, 0x0a5d, + 0x0a75, 0x0a87, 0x0aab, 0x0ae5, 0x0b19, 0x0b4a, 0x0b5c, 0x0b6e, + 0x0b8c, 0x0b9e, 0x0bad, 0x0bb9, 0x0bc8, 0x0be3, 0x0bef, 0x0c07, // Entry 80 - BF - 0x0b39, 0x0b5d, 0x0b6c, 0x0b90, 0x0b9f, 0x0bb7, 0x0bc9, 0x0bea, - 0x0c05, 0x0c23, 0x0c3b, 0x0c69, 0x0c78, 0x0c93, 0x0cae, 0x0cc9, - 0x0cd8, 0x0ce4, 0x0cff, 0x0d17, 0x0d2c, 0x0d2c, 0x0d5b, 0x0d70, - 0x0d85, 0x0d9a, 0x0db2, 0x0dc4, 0x0ddc, 0x0de5, 0x0dfd, 0x0e1b, - 0x0e2d, 0x0e48, 0x0e5d, 0x0e5d, 0x0e72, 0x0e72, 0x0e8a, 0x0ea5, - 0x0eb1, 0x0ec9, 0x0ec9, 0x0ee7, 0x0ee7, 0x0ee7, 0x0eff, 0x0f0e, - 0x0f1d, 0x0f2f, 0x0f2f, 0x0f41, 0x0f4d, 0x0f62, 0x0f71, 0x0f86, - 0x0f9e, 0x0f9e, 0x0f9e, 0x0fad, 0x0fc2, 0x0fd7, 0x0fd7, 0x0fef, + 0x0c16, 0x0c3a, 0x0c49, 0x0c6d, 0x0c7c, 0x0c94, 0x0ca6, 0x0cc7, + 0x0ce2, 0x0d00, 0x0d18, 0x0d46, 0x0d55, 0x0d70, 0x0d8b, 0x0da6, + 0x0db5, 0x0dc1, 0x0ddc, 0x0df4, 0x0e09, 0x0e18, 0x0e47, 0x0e5c, + 0x0e71, 0x0e86, 0x0e9e, 0x0eb0, 0x0ec8, 0x0ed1, 0x0ee9, 0x0f07, + 0x0f19, 0x0f34, 0x0f49, 0x0f5b, 0x0f70, 0x0f85, 0x0f9d, 0x0fb8, + 0x0fc4, 0x0fdc, 0x0feb, 0x1009, 0x1021, 0x1039, 0x1051, 0x1060, + 0x106f, 0x1081, 0x1081, 0x1093, 0x109f, 0x10b4, 0x10c3, 0x10d8, + 0x10f0, 0x10f0, 0x10f0, 0x10ff, 0x1114, 0x1129, 0x1129, 0x1141, // Entry C0 - FF - 0x0fef, 0x101a, 0x1045, 0x1057, 0x106f, 0x1090, 0x1090, 0x10a5, - 0x10a5, 0x10ba, 0x10ba, 0x10ba, 0x10c3, 0x10c3, 0x10de, 0x10de, - 0x10ed, 0x10ff, 0x1117, 0x1117, 0x1123, 0x1135, 0x1135, 0x1135, - 0x1141, 0x1150, 0x1150, 0x115c, 0x115c, 0x115c, 0x1187, 0x119c, - 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x11ab, - 0x11ab, 0x11b7, 0x11b7, 0x11d2, 0x11d2, 0x11d2, 0x11e4, 0x11e4, - 0x11e4, 0x11e4, 0x11f6, 0x11f6, 0x11f6, 0x1202, 0x1211, 0x1211, - 0x1211, 0x1226, 0x1226, 0x1226, 0x1226, 0x1238, 0x1238, 0x1260, + 0x1141, 0x116c, 0x1197, 0x11a9, 0x11c1, 0x11e2, 0x11e2, 0x11f7, + 0x11f7, 0x11f7, 0x120c, 0x120c, 0x120c, 0x1215, 0x1215, 0x1230, + 0x1230, 0x123f, 0x1251, 0x1269, 0x1269, 0x1275, 0x1287, 0x1287, + 0x1287, 0x1293, 0x12a2, 0x12a2, 0x12ae, 0x12ae, 0x12ae, 0x12d9, + 0x12ee, 0x12ee, 0x12fa, 0x12fa, 0x12fa, 0x130f, 0x130f, 0x130f, + 0x131e, 0x131e, 0x132a, 0x132a, 0x1345, 0x135d, 0x135d, 0x136f, + 0x136f, 0x136f, 0x136f, 0x1381, 0x1381, 0x1396, 0x13a2, 0x13b1, + 0x13b1, 0x13cc, 0x13e1, 0x140c, 0x141b, 0x1436, 0x1448, 0x145a, // Entry 100 - 13F - 0x1275, 0x1275, 0x12a0, 0x12b8, 0x12ca, 0x12e2, 0x12f1, 0x130f, - 0x130f, 0x1324, 0x1333, 0x1342, 0x1351, 0x1375, 0x1375, 0x1384, - 0x1384, 0x1393, 0x13a2, 0x13a2, 0x13ae, 0x13bd, 0x13bd, 0x13e4, - 0x13e4, 0x13e4, 0x13e4, 0x13e4, 0x13f6, 0x13f6, 0x13f6, 0x1414, - 0x1414, 0x1420, 0x1420, 0x1420, 0x1448, 0x1448, 0x1472, 0x14a8, - 0x14c0, 0x14c0, 0x14db, 0x14db, 0x14db, 0x14ea, 0x14ea, 0x14f9, - 0x14f9, 0x14f9, 0x14f9, 0x1530, 0x1530, 0x153f, 0x153f, 0x1551, - 0x1551, 0x1579, 0x15b6, 0x15b6, 0x15b6, 0x15c5, 0x15c5, 0x15c5, + 0x1482, 0x1497, 0x1497, 0x14c2, 0x1509, 0x1521, 0x1539, 0x1551, + 0x1560, 0x157e, 0x1590, 0x15a5, 0x15b4, 0x15c3, 0x15d2, 0x15f6, + 0x15f6, 0x1605, 0x1639, 0x1648, 0x1657, 0x1669, 0x1675, 0x1684, + 0x1684, 0x16ab, 0x16c0, 0x16c0, 0x16f1, 0x16f1, 0x1703, 0x1703, + 0x1703, 0x1721, 0x1721, 0x172d, 0x172d, 0x175b, 0x1783, 0x1783, + 0x17ad, 0x17e3, 0x17fb, 0x1801, 0x181c, 0x181c, 0x181c, 0x182b, + 0x182b, 0x183a, 0x1858, 0x1858, 0x1895, 0x18cc, 0x18cc, 0x18db, + 0x18f6, 0x1908, 0x1908, 0x1930, 0x196d, 0x196d, 0x196d, 0x197c, // Entry 140 - 17F - 0x15c5, 0x15dd, 0x15dd, 0x15dd, 0x15f9, 0x15f9, 0x161a, 0x161a, - 0x161a, 0x1629, 0x163b, 0x163b, 0x1653, 0x1653, 0x1653, 0x1668, - 0x167a, 0x1692, 0x16ba, 0x16df, 0x16df, 0x1706, 0x171e, 0x1730, - 0x1730, 0x173f, 0x173f, 0x175d, 0x175d, 0x175d, 0x1772, 0x1796, - 0x1796, 0x1796, 0x1796, 0x1796, 0x1796, 0x17b5, 0x17b5, 0x17b5, - 0x17b5, 0x17d0, 0x17e8, 0x1813, 0x1828, 0x1828, 0x1837, 0x186b, - 0x186b, 0x186b, 0x1886, 0x1898, 0x18ad, 0x18bc, 0x18bc, 0x18d4, - 0x18e9, 0x18fb, 0x190a, 0x1919, 0x1928, 0x1940, 0x1940, 0x1940, + 0x1991, 0x1991, 0x1991, 0x19a9, 0x19a9, 0x19ca, 0x19dc, 0x19ee, + 0x1a0f, 0x1a0f, 0x1a1b, 0x1a2a, 0x1a3c, 0x1a4b, 0x1a63, 0x1a63, + 0x1a63, 0x1a78, 0x1a8a, 0x1aa2, 0x1aca, 0x1aef, 0x1aef, 0x1b16, + 0x1b2e, 0x1b40, 0x1b4c, 0x1b5b, 0x1b5b, 0x1b79, 0x1b79, 0x1b88, + 0x1b9d, 0x1bc1, 0x1bc1, 0x1bcd, 0x1bcd, 0x1bd9, 0x1bd9, 0x1bf8, + 0x1bf8, 0x1bf8, 0x1c04, 0x1c1f, 0x1c37, 0x1c62, 0x1c77, 0x1c89, + 0x1c98, 0x1ccc, 0x1ccc, 0x1ccc, 0x1ce7, 0x1cf9, 0x1d0e, 0x1d1d, + 0x1d2f, 0x1d47, 0x1d5c, 0x1d6e, 0x1d7d, 0x1d8c, 0x1d9b, 0x1db3, // Entry 180 - 1BF - 0x1940, 0x1952, 0x1952, 0x1961, 0x196d, 0x1992, 0x1992, 0x1992, - 0x19aa, 0x19b9, 0x19c2, 0x19ce, 0x19dd, 0x19dd, 0x19dd, 0x19dd, - 0x19e9, 0x19fb, 0x1a10, 0x1a10, 0x1a10, 0x1a1f, 0x1a2b, 0x1a3a, - 0x1a3a, 0x1a49, 0x1a55, 0x1a70, 0x1a70, 0x1a92, 0x1aab, 0x1aab, - 0x1aab, 0x1ac9, 0x1ae1, 0x1afc, 0x1afc, 0x1afc, 0x1b14, 0x1b14, - 0x1b23, 0x1b3e, 0x1b53, 0x1b53, 0x1b62, 0x1b71, 0x1b98, 0x1b98, - 0x1bbf, 0x1bcb, 0x1bf5, 0x1c07, 0x1c07, 0x1c07, 0x1c07, 0x1c19, - 0x1c19, 0x1c2e, 0x1c61, 0x1c61, 0x1c6a, 0x1c6a, 0x1c79, 0x1cad, + 0x1db3, 0x1db3, 0x1db3, 0x1dc5, 0x1dc5, 0x1dd4, 0x1de0, 0x1e05, + 0x1e05, 0x1e21, 0x1e39, 0x1e48, 0x1e51, 0x1e5d, 0x1e6c, 0x1e6c, + 0x1e6c, 0x1e84, 0x1e90, 0x1ea2, 0x1eb7, 0x1ecf, 0x1ecf, 0x1ede, + 0x1eea, 0x1ef9, 0x1ef9, 0x1f08, 0x1f14, 0x1f2f, 0x1f63, 0x1f85, + 0x1f9b, 0x1fb0, 0x1fd1, 0x1fef, 0x2007, 0x2022, 0x202e, 0x202e, + 0x2046, 0x206e, 0x207d, 0x2098, 0x20ad, 0x20ad, 0x20bc, 0x20cb, + 0x20f2, 0x20f2, 0x2119, 0x2125, 0x214f, 0x2161, 0x2170, 0x217c, + 0x217c, 0x218e, 0x21a6, 0x21bb, 0x21ee, 0x21ee, 0x21f7, 0x221c, // Entry 1C0 - 1FF - 0x1cc5, 0x1cdd, 0x1cec, 0x1cfb, 0x1cfb, 0x1cfb, 0x1cfb, 0x1d10, - 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d38, 0x1d38, - 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d81, 0x1d8d, 0x1d8d, - 0x1da8, 0x1dbd, 0x1dde, 0x1dde, 0x1dde, 0x1ded, 0x1dff, 0x1dff, - 0x1dff, 0x1dff, 0x1dff, 0x1e08, 0x1e08, 0x1e20, 0x1e51, 0x1e66, - 0x1e66, 0x1e66, 0x1e66, 0x1e66, 0x1e75, 0x1e90, 0x1e90, 0x1e90, - 0x1ebb, 0x1ecd, 0x1ed9, 0x1ed9, 0x1ef4, 0x1f1c, 0x1f4a, 0x1f4a, - 0x1f59, 0x1f65, 0x1f8d, 0x1f8d, 0x1f8d, 0x1f8d, 0x1fb8, 0x1fda, + 0x222b, 0x225f, 0x2277, 0x228f, 0x229e, 0x22ad, 0x22ad, 0x22ad, + 0x22ce, 0x22e3, 0x22fb, 0x2319, 0x2331, 0x2331, 0x2365, 0x2365, + 0x2365, 0x238d, 0x238d, 0x23a8, 0x23a8, 0x23a8, 0x23a8, 0x23c0, + 0x23ee, 0x23fa, 0x23fa, 0x2415, 0x242a, 0x244b, 0x244b, 0x244b, + 0x245a, 0x246c, 0x246c, 0x246c, 0x246c, 0x2487, 0x2490, 0x24a5, + 0x24bd, 0x24ee, 0x2503, 0x2503, 0x2518, 0x2518, 0x252d, 0x253c, + 0x2557, 0x2578, 0x2578, 0x25a2, 0x25b4, 0x25c0, 0x25c0, 0x25db, + 0x2603, 0x2631, 0x2631, 0x2640, 0x264c, 0x2674, 0x2674, 0x2674, // Entry 200 - 23F - 0x1fff, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, - 0x2024, 0x2024, 0x203c, 0x2054, 0x2085, 0x209a, 0x209a, 0x209a, - 0x209a, 0x20a6, 0x20a6, 0x20a6, 0x20b5, 0x20b5, 0x20b5, 0x20b5, - 0x20cd, 0x20cd, 0x20cd, 0x20cd, 0x20cd, 0x20cd, 0x20cd, 0x20cd, - 0x20cd, 0x20cd, 0x20cd, 0x20cd, 0x20cd, 0x20e5, 0x20f1, 0x2144, - 0x215f, 0x217a, 0x217a, 0x2196, 0x219f, 0x219f, 0x219f, 0x219f, - 0x219f, 0x219f, 0x219f, 0x21ae, 0x21ae, 0x21c3, 0x21c3, 0x21c3, - 0x21d8, 0x21d8, 0x21f3, 0x21f3, 0x21ff, 0x21ff, 0x21ff, 0x21ff, + 0x2674, 0x269b, 0x26bd, 0x26e2, 0x2707, 0x271c, 0x271c, 0x273e, + 0x273e, 0x274a, 0x274a, 0x275c, 0x275c, 0x2774, 0x278c, 0x27bd, + 0x27d2, 0x27d2, 0x27d2, 0x27e1, 0x27ed, 0x27ed, 0x27ff, 0x280e, + 0x280e, 0x280e, 0x280e, 0x2826, 0x2826, 0x2826, 0x2826, 0x2826, + 0x2842, 0x2842, 0x2854, 0x2854, 0x2854, 0x2854, 0x2869, 0x287b, + 0x2893, 0x289f, 0x28f2, 0x290d, 0x2928, 0x293d, 0x295c, 0x2965, + 0x2965, 0x2965, 0x2965, 0x2965, 0x2965, 0x2965, 0x2974, 0x2989, + 0x299e, 0x29ad, 0x29ad, 0x29c2, 0x29c2, 0x29dd, 0x29dd, 0x29e9, // Entry 240 - 27F - 0x21ff, 0x21ff, 0x221a, 0x221a, 0x2244, 0x2244, 0x2256, 0x22b2, - 0x22b2, 0x2300, 0x2312, 0x236b, 0x236b, 0x23a2, 0x23eb, 0x2428, - 0x245c, 0x2493, 0x24ca, 0x2514, 0x2545, 0x2579, 0x2579, 0x25aa, - 0x25e4, 0x260e, 0x262f, 0x2672, 0x26af, 0x26ca, 0x26f8, 0x2720, - 0x275a, 0x278b, -} // Size: 1244 bytes - -var kkLangStr string = "" + // Size: 5518 bytes - "абхаз тіліафрикаанс тіліакан тіліамхар тіліараб тіліассам тіліәзірбайжан" + - " тілібашқұрт тілібеларусь тіліболгар тілібамбара тілібенгал тілітибет ті" + - "лібретон тілібосния тілікаталан тілішешен тілікорсика тілічех тілічуваш" + - " тіліваллий тілідат тілінеміс тілідзонг-кэ тіліэве тілігрек тіліағылшын " + - "тіліэсперанто тіліиспан тіліэстон тілібаск тіліпарсы тіліфин тіліфиджи " + - "тіліфарер тіліфранцуз тілібатыс фриз тіліирланд тілігалисия тілігуарани" + - " тілігуджарати тілімэнс тіліхауса тіліиврит тіліхинди тіліхорват тілігаи" + - "ти тілівенгр тіліармян тіліиндонезия тіліигбо тілісычуан и тіліисланд т" + - "іліитальян тіліинуктитут тіліжапон тіліява тілігрузин тілікикуйю тіліқа" + - "зақ тілікалаалисут тілікхмер тіліканнада тілікәріс тілікашмир тілікүрд " + - "тілікорн тіліқырғыз тілілатын тілілюксембург тіліганда тілілингала тілі" + - "лаос тілілитва тілілуба-катанга тілілатыш тілімалагаси тілімаори тіліма" + - "кедон тілімалаялам тілімоңғол тілімаратхи тілімалай тілімальта тілібирм" + - "а тілісолтүстік ндебеле тілінепал тілінидерланд тілінорвегиялық нюнорск" + - " тілінорвегиялық букмол тіліоромо тіліория тіліпенджаб тіліполяк тіліпуш" + - "ту тіліпортугал тілікечуа тіліроманш тілірунди тілірумын тіліорыс тілік" + - "иньяруанда тілісанскрит тілісиндхи тілісолтүстік саам тілісанго тілісин" + - "гал тілісловак тілісловен тілішона тілісомали тіліалбан тілісерб тілішв" + - "ед тілісуахили тілітамил тілітелугу тілітәжік тілітай тілітигринья тілі" + - "түрікмен тілітонган тілітүрік тілітатар тіліұйғыр тіліукраин тіліурду т" + - "іліөзбек тілівьетнам тіліволоф тілікхоса тілійоруба тіліқытай тілізулу " + - "тіліагхем тілімапуче тіліасу тілібемба тілібена тілібатыс балучи тілібо" + - "до тілікига тілічероки тілісорани тілітаита тілізарма тілітөменгі лужиц" + - "а тілідуала тілідиола тіліембу тіліфилиппин тілігагауз тілішвейцариялық" + - " неміс тілігусии тілігавайи тіліжоғарғы лужица тілінгомба тілімачаме тіл" + - "ікабил тілікамба тілімаконде тілікабувердиана тілікойра чини тілікаленж" + - "ин тілікоми-пермяк тіліконкани тілішамбала тілібафиа тіліланги тілілако" + - "та тілісолтүстік люри тілілуо тілілухиа тілімасай тілімеру тіліморисиен" + - " тілімакуа-меетто тілімета тілімогавк тілімунданг тілімазандеран тілінам" + - "а тілітөменгі неміс тіліквасио тілінко тілінуэр тілінианколе тілікиче т" + - "іліромбо тіліруа тілісамбуру тілісангу тіліоңтүстік күрд тілісена тілік" + - "ойраборо сенни тіліташелхит тіліоңтүстік саам тілілуле саам тіліинари с" + - "аам тілісколт саамтесо тілітасавак тіліорталық атлас тамасагихт тілібел" + - "гісіз тілвай тілівунджо тілівальбири тілісога тілімарокколық стандартты" + - " тамазигхт тілітілдік мазмұны жоққазіргі стандартты араб тіліавстриялық " + - "неміс тілішвейцариялық жоғарғы неміс тіліавстралиялық ағылшын тіліканад" + - "алық ағылшын тілібританиялық ағылшын тіліамерикандық ағылшын тілілатын " + - "американдық испан тіліибериялық испан тілімексикалық испан тіліканадалы" + - "қ француз тілішвейцариялық француз тілітөменгі саксон тіліфламанд тіліб" + - "разилиялық португал тіліеуропалық португал тілімолдован тіліконго суахи" + - "ли тіліжеңілдетілген қытай тілідәстүрлі қытай тілі" - -var kkLangIdx = []uint16{ // 610 elements + 0x29e9, 0x29e9, 0x2a01, 0x2a10, 0x2a10, 0x2a2b, 0x2a2b, 0x2a55, + 0x2a55, 0x2a67, 0x2ac3, 0x2acf, 0x2b1d, 0x2b2f, 0x2b88, 0x2b88, + 0x2bbf, 0x2c08, 0x2c45, 0x2c79, 0x2cb0, 0x2ce7, 0x2d31, 0x2d62, + 0x2d96, 0x2d96, 0x2dc7, 0x2e01, 0x2e2b, 0x2e4c, 0x2e8f, 0x2ecc, + 0x2ee7, 0x2f15, 0x2f3d, 0x2f77, 0x2fa8, +} // Size: 1250 bytes + +const kkLangStr string = "" + // Size: 8563 bytes + "афар тіліабхаз тіліафрикаанс тіліакан тіліамхар тіліарагон тіліараб тілі" + + "ассам тіліавар тіліаймара тіліәзірбайжан тілібашқұрт тілібеларусь тіліб" + + "олгар тілібислама тілібамбара тілібенгал тілітибет тілібретон тілібосни" + + "я тілікаталан тілішешен тілічаморро тілікорсика тілічех тілішіркеулік с" + + "лавян тілічуваш тіліваллий тілідат тілінеміс тілідивехи тілідзонг-кэ ті" + + "ліэве тілігрек тіліағылшын тіліэсперанто тіліиспан тіліэстон тілібаск т" + + "іліпарсы тіліфула тіліфин тіліфиджи тіліфарер тіліфранцуз тілібатыс фри" + + "з тіліирланд тілігэль тілігалисия тілігуарани тілігуджарати тілімэн тіл" + + "іхауса тіліиврит тіліхинди тіліхорват тілігаити тілівенгр тіліармян тіл" + + "ігереро тіліинтерлингва тіліиндонезия тіліинтерлингве тіліигбо тілісычу" + + "ан и тіліидо тіліисланд тіліитальян тіліинуктитут тіліжапон тіліява тіл" + + "ігрузин тілікикуйю тілікваньяма тіліқазақ тілікалаалисут тілікхмер тілі" + + "каннада тілікорей тіліканури тілікашмир тілікүрд тілікоми тілікорн тілі" + + "қырғыз тілілатын тілілюксембург тіліганда тілілимбург тілілингала тіліл" + + "аос тілілитва тілілуба-катанга тілілатыш тілімалагаси тілімаршалл тілім" + + "аори тілімакедон тілімалаялам тілімоңғол тілімаратхи тілімалай тілімаль" + + "та тілібирма тілінауру тілісолтүстік ндебеле тілінепал тіліндонга тілін" + + "идерланд тілінорвегиялық нюнорск тілінорвегиялық букмол тіліоңтүстік нд" + + "ебеле тілінавахо тіліньянджа тіліокситан тіліоромо тіліория тіліосетин " + + "тіліпенджаб тіліполяк тіліпушту тіліпортугал тілікечуа тіліроманш тілір" + + "унди тілірумын тіліорыс тілікиньяруанда тілісанскрит тілісардин тілісин" + + "дхи тілісолтүстік саам тілісанго тілісингал тілісловак тілісловен тіліс" + + "амоа тілішона тілісомали тіліалбан тілісерб тілісвати тілісесото тілісу" + + "ндан тілішвед тілісуахили тілітамил тілітелугу тілітәжік тілітай тіліти" + + "гринья тілітүрікмен тілітсвана тілітонган тілітүрік тілітсонга тілітата" + + "р тілітаити тіліұйғыр тіліукраин тіліурду тіліөзбек тілівенда тілівьетн" + + "ам тіліволапюк тіліваллон тіліволоф тілікхоса тіліидиш тілійоруба тіліқ" + + "ытай тілізулу тіліачех тіліадангме тіліадыгей тіліагхем тіліайну тіліал" + + "еут тіліоңтүстік алтай тіліангика тілімапуче тіліарапахо тіліасу тіліас" + + "турия тіліавадхи тілібали тілібаса тілібемба тілібена тілібатыс балучи " + + "тілібходжпури тілібини тілісиксика тілібодо тілібугис тіліблин тілісебу" + + "ано тілікига тілічуук тілімари тілічокто тілічероки тілішайен тілісоран" + + "и тілісейшельдік креол тілідакота тілідаргин тілітаита тілідогриб тіліз" + + "арма тілітөменгі лужица тілідуала тілідиола тілідазага тіліэмбу тіліэфи" + + "к тіліэкаджук тіліэвондо тіліфилиппин тіліфон тіліфриуль тіліга тілігаг" + + "ауз тілігеэз тілігильберт тілігоронтало тілішвейцариялық неміс тілігуси" + + "и тілігвичин тілігавайи тіліхилигайнон тіліхмонг тіліжоғарғы лужица тіл" + + "іхупа тіліибан тіліибибио тіліилоко тіліингуш тіліложбан тілінгомба тіл" + + "імачаме тілікабил тілікачин тіліджу тілікамба тілікабардин тілітьяп тіл" + + "імаконде тілікабувердьяну тілікоро тілікхаси тілікойра чини тілікако ті" + + "лікаленжин тілікимбунду тілікоми-пермяк тіліконкани тілікпелле тіліқара" + + "шай-балқар тілікарель тілікурух тілішамбала тілібафиа тілікёльн тіліқұм" + + "ық тіліладино тіліланги тілілезгин тілілакота тілілози тілісолтүстік лю" + + "ри тілілуба-лулуа тілілунда тілілуо тілімизо тілілухиа тілімадур тіліма" + + "гахи тілімайтхили тілімакасар тілімасай тілімокша тіліменде тілімеру ті" + + "ліморисиен тілімакуа-меетто тілімета тілімикмак тіліминангкабау тіліман" + + "ипури тілімогавк тілімосси тілімунданг тілібірнеше тілкрик тілімиранд т" + + "іліэрзян тілімазандеран тілінеаполитан тілінама тілітөменгі неміс тілін" + + "евар тіліниас тіліниуэ тіліквасио тілінгиембун тіліноғай тілінко тілісо" + + "лтүстік сото тілінуэр тілінианколе тіліпангасинан тіліпампанга тіліпапь" + + "яменто тіліпалау тілінигериялық пиджин тіліпруссия тілікиче тілірапануй" + + " тіліраротонган тіліромбо тіліарумын тіліруа тілісандаве тіліякут тіліса" + + "мбуру тілісантали тілінгамбай тілісангу тілісицилия тілішотланд тіліоңт" + + "үстік күрд тілісена тілікойраборо сенни тіліташелхит тілішан тіліоңтүст" + + "ік саам тілілуле саам тіліинари саам тіліколтта саам тілісонинке тіліср" + + "анан тонго тілісахо тілісукума тілікомор тілісирия тілітемне тілітесо т" + + "ілітетум тілітигре тіліклингон тіліток-писин тілітароко тілітумбука тіл" + + "ітувалу тілітасавак тілітувин тіліорталық атлас тамазигхт тіліудмурт ті" + + "ліумбунду тіліата тілвай тілівунджо тілівальзер тіліволайта тіліварай т" + + "ілівальбири тіліқалмақ тілісога тіліянгбен тілійемба тілікантон тілімар" + + "окколық стандартты тамазигхт тілізуни тілітілдік мазмұны жоқзаза тіліқа" + + "зіргі стандартты араб тіліағылшын тілі (АҚШ)төменгі саксон тіліфламанд " + + "тілімолдован тілісерб-хорват тіліконго суахили тіліжеңілдетілген қытай " + + "тілідәстүрлі қытай тілі" + +var kkLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0013, 0x0013, 0x002e, 0x003f, 0x0052, 0x0052, - 0x0063, 0x0076, 0x0076, 0x0076, 0x0093, 0x00aa, 0x00c3, 0x00d8, - 0x00d8, 0x00ef, 0x0104, 0x0117, 0x012c, 0x0141, 0x0158, 0x016b, - 0x016b, 0x0182, 0x0182, 0x0191, 0x0191, 0x01a4, 0x01b9, 0x01c8, - 0x01db, 0x01db, 0x01f3, 0x0202, 0x0213, 0x022a, 0x0245, 0x0258, - 0x026b, 0x027c, 0x028f, 0x028f, 0x029e, 0x02b1, 0x02c4, 0x02db, - 0x02f7, 0x030c, 0x030c, 0x0323, 0x033a, 0x0355, 0x0366, 0x0379, - 0x038c, 0x039f, 0x039f, 0x03b4, 0x03c7, 0x03da, 0x03ed, 0x03ed, + 0x0000, 0x0011, 0x0024, 0x0024, 0x003f, 0x0050, 0x0063, 0x0078, + 0x0089, 0x009c, 0x00ad, 0x00c2, 0x00df, 0x00f6, 0x010f, 0x0124, + 0x013b, 0x0152, 0x0167, 0x017a, 0x018f, 0x01a4, 0x01bb, 0x01ce, + 0x01e5, 0x01fc, 0x01fc, 0x020b, 0x0233, 0x0246, 0x025b, 0x026a, + 0x027d, 0x0292, 0x02aa, 0x02b9, 0x02ca, 0x02e1, 0x02fc, 0x030f, + 0x0322, 0x0333, 0x0346, 0x0357, 0x0366, 0x0379, 0x038c, 0x03a3, + 0x03bf, 0x03d4, 0x03e5, 0x03fc, 0x0413, 0x042e, 0x043d, 0x0450, + 0x0463, 0x0476, 0x0476, 0x048b, 0x049e, 0x04b1, 0x04c4, 0x04d9, // Entry 40 - 7F - 0x03ed, 0x0408, 0x0408, 0x0419, 0x0431, 0x0431, 0x0431, 0x0446, - 0x045d, 0x0478, 0x048b, 0x049a, 0x04af, 0x04af, 0x04c4, 0x04c4, - 0x04d7, 0x04f4, 0x0507, 0x051e, 0x0531, 0x0531, 0x0546, 0x0557, - 0x0557, 0x0568, 0x057d, 0x0590, 0x05ad, 0x05c0, 0x05c0, 0x05d7, - 0x05e8, 0x05fb, 0x061b, 0x062e, 0x0647, 0x0647, 0x065a, 0x0671, - 0x068a, 0x069f, 0x06b6, 0x06c9, 0x06de, 0x06f1, 0x06f1, 0x071b, - 0x072e, 0x072e, 0x0749, 0x0777, 0x07a3, 0x07a3, 0x07a3, 0x07a3, - 0x07a3, 0x07a3, 0x07b6, 0x07c7, 0x07c7, 0x07de, 0x07de, 0x07f1, + 0x04f8, 0x0513, 0x0532, 0x0543, 0x055b, 0x055b, 0x056a, 0x057f, + 0x0596, 0x05b1, 0x05c4, 0x05d3, 0x05e8, 0x05e8, 0x05fd, 0x0616, + 0x0629, 0x0646, 0x0659, 0x0670, 0x0683, 0x0698, 0x06ad, 0x06be, + 0x06cf, 0x06e0, 0x06f5, 0x0708, 0x0725, 0x0738, 0x074f, 0x0766, + 0x0777, 0x078a, 0x07aa, 0x07bd, 0x07d6, 0x07ed, 0x0800, 0x0817, + 0x0830, 0x0845, 0x085c, 0x086f, 0x0884, 0x0897, 0x08aa, 0x08d4, + 0x08e7, 0x08fc, 0x0917, 0x0945, 0x0971, 0x0999, 0x09ae, 0x09c5, + 0x09dc, 0x09dc, 0x09ef, 0x0a00, 0x0a15, 0x0a2c, 0x0a2c, 0x0a3f, // Entry 80 - BF - 0x0804, 0x081d, 0x0830, 0x0845, 0x0858, 0x086b, 0x087c, 0x089b, - 0x08b4, 0x08b4, 0x08c9, 0x08ed, 0x0900, 0x0915, 0x092a, 0x093f, - 0x093f, 0x0950, 0x0965, 0x0978, 0x0989, 0x0989, 0x0989, 0x0989, - 0x099a, 0x09b1, 0x09c4, 0x09d9, 0x09ec, 0x09fb, 0x0a14, 0x0a2d, - 0x0a2d, 0x0a42, 0x0a55, 0x0a55, 0x0a68, 0x0a68, 0x0a7b, 0x0a90, - 0x0aa1, 0x0ab4, 0x0ab4, 0x0acb, 0x0acb, 0x0acb, 0x0ade, 0x0af1, - 0x0af1, 0x0b06, 0x0b06, 0x0b19, 0x0b2a, 0x0b2a, 0x0b2a, 0x0b2a, - 0x0b2a, 0x0b2a, 0x0b2a, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, + 0x0a52, 0x0a6b, 0x0a7e, 0x0a93, 0x0aa6, 0x0ab9, 0x0aca, 0x0ae9, + 0x0b02, 0x0b17, 0x0b2c, 0x0b50, 0x0b63, 0x0b78, 0x0b8d, 0x0ba2, + 0x0bb5, 0x0bc6, 0x0bdb, 0x0bee, 0x0bff, 0x0c12, 0x0c27, 0x0c3c, + 0x0c4d, 0x0c64, 0x0c77, 0x0c8c, 0x0c9f, 0x0cae, 0x0cc7, 0x0ce0, + 0x0cf5, 0x0d0a, 0x0d1d, 0x0d32, 0x0d45, 0x0d58, 0x0d6b, 0x0d80, + 0x0d91, 0x0da4, 0x0db7, 0x0dce, 0x0de5, 0x0dfa, 0x0e0d, 0x0e20, + 0x0e31, 0x0e46, 0x0e46, 0x0e59, 0x0e6a, 0x0e7b, 0x0e7b, 0x0e92, + 0x0ea7, 0x0ea7, 0x0ea7, 0x0eba, 0x0ecb, 0x0ecb, 0x0ecb, 0x0ede, // Entry C0 - FF - 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b52, 0x0b52, 0x0b52, - 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b61, 0x0b61, 0x0b61, 0x0b61, - 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, - 0x0b61, 0x0b74, 0x0b74, 0x0b85, 0x0b85, 0x0b85, 0x0ba5, 0x0ba5, - 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, - 0x0ba5, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, - 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bc7, 0x0bc7, 0x0bc7, - 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bdc, 0x0bdc, 0x0bf1, + 0x0ede, 0x0f02, 0x0f02, 0x0f17, 0x0f17, 0x0f2c, 0x0f2c, 0x0f43, + 0x0f43, 0x0f43, 0x0f43, 0x0f43, 0x0f43, 0x0f52, 0x0f52, 0x0f69, + 0x0f69, 0x0f7e, 0x0f7e, 0x0f8f, 0x0f8f, 0x0fa0, 0x0fa0, 0x0fa0, + 0x0fa0, 0x0fa0, 0x0fb3, 0x0fb3, 0x0fc4, 0x0fc4, 0x0fc4, 0x0fe4, + 0x0fff, 0x0fff, 0x1010, 0x1010, 0x1010, 0x1027, 0x1027, 0x1027, + 0x1027, 0x1027, 0x1038, 0x1038, 0x1038, 0x104b, 0x104b, 0x105c, + 0x105c, 0x105c, 0x105c, 0x105c, 0x105c, 0x1073, 0x1084, 0x1084, + 0x1084, 0x1095, 0x10a6, 0x10a6, 0x10b9, 0x10b9, 0x10ce, 0x10e1, // Entry 100 - 13F - 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0c04, 0x0c04, - 0x0c04, 0x0c04, 0x0c04, 0x0c17, 0x0c17, 0x0c3b, 0x0c3b, 0x0c4e, - 0x0c4e, 0x0c61, 0x0c61, 0x0c61, 0x0c72, 0x0c72, 0x0c72, 0x0c72, - 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c8b, - 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, - 0x0c8b, 0x0c8b, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, - 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, - 0x0ca0, 0x0ca0, 0x0ccc, 0x0ccc, 0x0ccc, 0x0cdf, 0x0cdf, 0x0cdf, + 0x10f6, 0x10f6, 0x10f6, 0x10f6, 0x111e, 0x111e, 0x1133, 0x1148, + 0x115b, 0x115b, 0x115b, 0x1170, 0x1170, 0x1183, 0x1183, 0x11a7, + 0x11a7, 0x11ba, 0x11ba, 0x11cd, 0x11cd, 0x11e2, 0x11f3, 0x1204, + 0x1204, 0x1204, 0x121b, 0x121b, 0x121b, 0x121b, 0x1230, 0x1230, + 0x1230, 0x1249, 0x1249, 0x1258, 0x1258, 0x1258, 0x1258, 0x1258, + 0x1258, 0x1258, 0x126d, 0x127a, 0x128f, 0x128f, 0x128f, 0x128f, + 0x128f, 0x12a0, 0x12b9, 0x12b9, 0x12b9, 0x12b9, 0x12b9, 0x12b9, + 0x12d4, 0x12d4, 0x12d4, 0x12d4, 0x1300, 0x1300, 0x1300, 0x1313, // Entry 140 - 17F - 0x0cdf, 0x0cf4, 0x0cf4, 0x0cf4, 0x0cf4, 0x0cf4, 0x0d18, 0x0d18, - 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, - 0x0d2d, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d55, 0x0d55, - 0x0d55, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d7f, 0x0da0, - 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0dbc, 0x0dbc, 0x0dbc, - 0x0dbc, 0x0dd5, 0x0dd5, 0x0df3, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e0a, - 0x0e0a, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e21, 0x0e34, 0x0e34, 0x0e34, - 0x0e34, 0x0e34, 0x0e47, 0x0e47, 0x0e47, 0x0e47, 0x0e47, 0x0e47, + 0x1328, 0x1328, 0x1328, 0x133d, 0x133d, 0x135a, 0x135a, 0x136d, + 0x1391, 0x1391, 0x13a2, 0x13b3, 0x13c8, 0x13db, 0x13ee, 0x13ee, + 0x13ee, 0x1403, 0x1418, 0x142d, 0x142d, 0x142d, 0x142d, 0x142d, + 0x1440, 0x1453, 0x1462, 0x1475, 0x1475, 0x148e, 0x148e, 0x149f, + 0x14b6, 0x14d7, 0x14d7, 0x14e8, 0x14e8, 0x14fb, 0x14fb, 0x1517, + 0x1517, 0x1517, 0x1528, 0x1541, 0x155a, 0x1578, 0x158f, 0x158f, + 0x15a4, 0x15c8, 0x15c8, 0x15c8, 0x15dd, 0x15f0, 0x1607, 0x161a, + 0x162d, 0x1640, 0x1640, 0x1655, 0x1668, 0x1668, 0x1668, 0x167d, // Entry 180 - 1BF - 0x0e47, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e80, 0x0e80, 0x0e80, - 0x0e80, 0x0e80, 0x0e8f, 0x0e8f, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, - 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0eb5, 0x0eb5, 0x0eb5, - 0x0eb5, 0x0eb5, 0x0ec6, 0x0edf, 0x0edf, 0x0eff, 0x0f10, 0x0f10, - 0x0f10, 0x0f10, 0x0f10, 0x0f25, 0x0f25, 0x0f25, 0x0f3c, 0x0f3c, - 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f59, 0x0f59, - 0x0f59, 0x0f6a, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, 0x0fa1, - 0x0fa1, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb0, 0x0fb0, 0x0fc1, 0x0fc1, + 0x167d, 0x167d, 0x167d, 0x1692, 0x1692, 0x1692, 0x16a3, 0x16c7, + 0x16c7, 0x16e3, 0x16e3, 0x16f6, 0x1705, 0x1716, 0x1729, 0x1729, + 0x1729, 0x173c, 0x173c, 0x1751, 0x176a, 0x1781, 0x1781, 0x1794, + 0x1794, 0x17a7, 0x17a7, 0x17ba, 0x17cb, 0x17e4, 0x17e4, 0x1804, + 0x1815, 0x182a, 0x1849, 0x1849, 0x1862, 0x1877, 0x188a, 0x188a, + 0x18a1, 0x18b6, 0x18c7, 0x18dc, 0x18dc, 0x18dc, 0x18dc, 0x18ef, + 0x190c, 0x190c, 0x1929, 0x193a, 0x195c, 0x196f, 0x1980, 0x1991, + 0x1991, 0x19a6, 0x19bf, 0x19d2, 0x19d2, 0x19d2, 0x19e1, 0x1a05, // Entry 1C0 - 1FF - 0x0fc1, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, - 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, - 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0feb, 0x0feb, - 0x0feb, 0x0feb, 0x0feb, 0x0feb, 0x0feb, 0x0ffe, 0x0ffe, 0x0ffe, - 0x0ffe, 0x0ffe, 0x0ffe, 0x100d, 0x100d, 0x100d, 0x100d, 0x1024, - 0x1024, 0x1024, 0x1024, 0x1024, 0x1037, 0x1037, 0x1037, 0x1037, - 0x1059, 0x1059, 0x106a, 0x106a, 0x106a, 0x1090, 0x1090, 0x1090, - 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10cb, 0x10e5, + 0x1a16, 0x1a16, 0x1a16, 0x1a2f, 0x1a2f, 0x1a2f, 0x1a2f, 0x1a2f, + 0x1a4c, 0x1a4c, 0x1a65, 0x1a82, 0x1a95, 0x1a95, 0x1abf, 0x1abf, + 0x1abf, 0x1abf, 0x1abf, 0x1abf, 0x1abf, 0x1abf, 0x1abf, 0x1ad6, + 0x1ad6, 0x1ae7, 0x1ae7, 0x1ae7, 0x1afe, 0x1b1b, 0x1b1b, 0x1b1b, + 0x1b2e, 0x1b2e, 0x1b2e, 0x1b2e, 0x1b2e, 0x1b43, 0x1b52, 0x1b69, + 0x1b7a, 0x1b7a, 0x1b91, 0x1b91, 0x1ba8, 0x1ba8, 0x1bbf, 0x1bd2, + 0x1be9, 0x1c00, 0x1c00, 0x1c22, 0x1c22, 0x1c33, 0x1c33, 0x1c33, + 0x1c59, 0x1c59, 0x1c59, 0x1c72, 0x1c81, 0x1c81, 0x1c81, 0x1c81, // Entry 200 - 23F - 0x1101, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, - 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, - 0x1114, 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, - 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, - 0x1125, 0x1125, 0x1125, 0x1125, 0x1125, 0x113c, 0x113c, 0x1173, - 0x1173, 0x1173, 0x1173, 0x118a, 0x1199, 0x1199, 0x1199, 0x1199, - 0x1199, 0x1199, 0x1199, 0x11ae, 0x11ae, 0x11ae, 0x11ae, 0x11ae, - 0x11c7, 0x11c7, 0x11c7, 0x11c7, 0x11d8, 0x11d8, 0x11d8, 0x11d8, + 0x1c81, 0x1ca3, 0x1cbd, 0x1cd9, 0x1cf7, 0x1d0e, 0x1d0e, 0x1d2e, + 0x1d2e, 0x1d3f, 0x1d3f, 0x1d54, 0x1d54, 0x1d54, 0x1d67, 0x1d67, + 0x1d7a, 0x1d7a, 0x1d7a, 0x1d8d, 0x1d9e, 0x1d9e, 0x1db1, 0x1dc4, + 0x1dc4, 0x1dc4, 0x1dc4, 0x1ddb, 0x1ddb, 0x1ddb, 0x1ddb, 0x1ddb, + 0x1df5, 0x1df5, 0x1e0a, 0x1e0a, 0x1e0a, 0x1e0a, 0x1e21, 0x1e36, + 0x1e4d, 0x1e60, 0x1e95, 0x1eaa, 0x1eaa, 0x1ec1, 0x1ece, 0x1edd, + 0x1edd, 0x1edd, 0x1edd, 0x1edd, 0x1edd, 0x1edd, 0x1ef2, 0x1f09, + 0x1f20, 0x1f33, 0x1f33, 0x1f4c, 0x1f4c, 0x1f61, 0x1f61, 0x1f72, // Entry 240 - 27F - 0x11d8, 0x11d8, 0x11d8, 0x11d8, 0x11d8, 0x11d8, 0x11d8, 0x121d, - 0x121d, 0x123f, 0x123f, 0x1274, 0x1274, 0x129c, 0x12d7, 0x1307, - 0x1331, 0x135f, 0x138d, 0x13c2, 0x13e8, 0x1410, 0x1410, 0x143a, - 0x146a, 0x148e, 0x14a5, 0x14d5, 0x1501, 0x151a, 0x151a, 0x153c, - 0x156a, 0x158e, -} // Size: 1244 bytes - -var kmLangStr string = "" + // Size: 5497 bytes - "ភាសាអាហ្វារអាប់ខាហ៊្សានភាសាអាវែស្តង់អាហ្វ្រិកានអាកានអាមហារីចភាសាអារ៉ាហ្គ" + - "ោនអារ៉ាប់អាសាមីសភាសាអីម៉ារ៉ាអាហ៊្សែរបែហ្សង់បែស្កឺបេឡារុស្សប៊ុលហ្ការីបា" + - "ម្បារាបង់ក្លាដែសទីបេប្រីស្តុនបូស្នីកាតាឡានឈីឆេនកូស៊ីខានឆេកឈូវ៉ាសវេលដាណ" + - "ឺម៉ាកអាល្លឺម៉ង់ដុងខាអ៊ីវក្រិចអង់គ្លេសអេស្ពេរ៉ាន់តូអេស្ប៉ាញអេស្តូនីបាស្" + - "កេភឺសៀនហ្វាំងឡង់ហ៊្វីជីហ្វារូសបារាំងហ្វ្រីស៊ានខាងលិចអៀរឡង់ភាសាហ្កែលិគ " + - "(gd)ហ្គាលីស្យានហ្គូរ៉ានីហ្កុយ៉ារាទីមេនហូសាអ៊ីស្រាអែលហិណ្ឌីក្រូអាតហៃទីហុង" + - "គ្រីអារមេនីឥណ្ឌូណេស៊ីអ៊ីកបូស៊ីឈាន់យីអ៊ីស្លង់អ៊ីតាលីអ៊ីនុកទីទុតជប៉ុនជ្វ" + - "ាហ្សក\u200bហ្ស៊ីគីគូយូកាហ្សាក់ស្តង់់កាឡាលលីស៊ុតខ្មែរកន្នដកូរ៉េកាស្មៀរឃ" + - "ឺដកូនីសគៀរហ្គីស្តង់ឡាតំាងលុចហ្សំបួរហ្គាន់ដាលីនកាឡាឡាវលីទុយអានីលូបាកាតា" + - "នហ្គាឡាតវីម៉ាឡាហ្គាស៊ីម៉ោរីម៉ាសេដូនីមលយាល័មម៉ុងហ្គោលីម៉ារ៉ាធីម៉ាឡេស៊ីម" + - "៉ាល់តាភូមានេបេលេខាងជើងនេប៉ាល់ហុល្លង់ន័រវែស នីនូសន័រវែស បុកម៉ាល់អូរ៉ូម៉" + - "ូអូរីយ៉ាបឹនជាពិប៉ូឡូញបាស្តូព័រទុយហ្កាល់កេទជួអារ៉ូម៉ង់រូន្ឌីរូម៉ានីរុស្" + - "ស៊ីគិនយ៉ាវ៉ាន់ដាសំស្ក្រឹតស៊ីនឌីសាមីខាងជើងសានហ្គោស្រីលង្កាស្លូវ៉ាគីស្លូ" + - "វ៉ានីភាសាសាមូអាសូណាសូម៉ាលីអាល់បានីស៊ែបស៊ូដង់ស៊ុយអែដស្វាហ៊ីលីតាមីលតេលុគ" + - "ុតាដហ្សីគីស្តង់ថៃទីរិនយាទួគមេនីស្តង់តុងហ្គោទួរគីតាតាអ៊ុយហ្គឺរអ៊ុយក្រែន" + - "អ៊ូរឌូអ៊ូហ្សបេគីស្តង់វៀតណាមវូឡុហ្វឃសាភាសាយីឌីហ្សយរូបាភាសាចួងចិនសូលូអាហ" + - "្គីមម៉ាពូឈីអាស៊ូបេមបាបេណាបាឡូជីខាងលិចបូដូឈីហ្គាឆេរូគីខឺដកណ្តាលតៃតាហ្សា" + - "ម៉ាសូប៊ីក្រោមឌូអាឡាចូឡាហ៊្វុនយីអេមប៊ូហ្វីលីពីនកាគូសអាល្លឺម៉ង (ស្វីស)ហ្" + - "គូស៊ីហាវៃសូប៊ីលើងុំបាម៉ាឆាំកាប៊ីឡេកាំបាម៉ាកូនដេកាប៊ូវឺឌៀនូគុយរ៉ាឈីនីកា" + - "លែនជីនគូមីភឹមយ៉ាគគុនកានីសាមបាឡាបាហ្វៀឡានហ្គីឡាកូតាលូរីខាងជើងលូអូលូយ៉ាម" + - "៉ាសៃមេរូម៉ូរីស៊ីនម៉ាកគូវ៉ាមីតូមេតាម៊ូហាគមុនដាងម៉ាហ្សានដឺរេនីណាម៉ាអាល្ល" + - "ឺម៉ង់ក្រោមក្វាស្យូនគោនូអ័រណានកូលេគីចឈីរុមបូរ៉្វាសាមបូរូសានហ្គូអម្បូរឃឺ" + - "ដខាងត្បូងស៊ីណាគុយរ៉ាបូរ៉ុស៊ីនីតាឈីលហ៊ីតសាមីខាងត្បូងលូលីសាមីអ៊ីណារីសាម៉" + - "ីស្កុលសាមីតេសូតាសាវ៉ាក់តាម៉ាសាយអាត្លាសកណ្តាលភាសាមិនស្គាល់វៃវុនចូវ៉ារីប" + - "៉ារីសូហ្គាម៉ារ៉ុកគ្មាន\u200bទិន្នន័យ\u200bភាសាអារ៉ាប់ផ្លូវការអេស្ប៉ាញ " + - "(អ៊ឺរ៉ុប)ហ្សាក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម៉ុលដាវីកុងហ្គោស្វា" + + 0x1f72, 0x1f72, 0x1f87, 0x1f9a, 0x1f9a, 0x1faf, 0x1faf, 0x1faf, + 0x1faf, 0x1faf, 0x1ff4, 0x2005, 0x2027, 0x2038, 0x206d, 0x206d, + 0x206d, 0x206d, 0x206d, 0x206d, 0x206d, 0x208d, 0x208d, 0x208d, + 0x208d, 0x208d, 0x208d, 0x208d, 0x20b1, 0x20c8, 0x20c8, 0x20c8, + 0x20e1, 0x20ff, 0x2121, 0x214f, 0x2173, +} // Size: 1250 bytes + +const kmLangStr string = "" + // Size: 8834 bytes + "អាហ្វារអាប់ខាហ៊្សានអាវេស្ថានអាហ្វ្រិកានអាកានអំហារិកអារ៉ាហ្គោនអារ៉ាប់អាសា" + + "មីសអាវ៉ារីកអីម៉ារ៉ាអាស៊ែបៃហ្សង់បាស្គៀបេឡារុស្សប៊ុលហ្គារីប៊ីស្លាម៉ាបាម្" + + "បារាបង់ក្លាដែសទីបេប្រីស្តុនបូស្នីកាតាឡានឈីឆេនឈីម៉ូរ៉ូកូស៊ីខានឆេកឈឺជស្ល" + + "ាវិកឈូវ៉ាសវេលដាណឺម៉ាកអាល្លឺម៉ង់ឌីវីហ៊ីដុងខាអ៊ីវក្រិកអង់គ្លេសអេស្ពេរ៉ាន" + + "់តូអេស្ប៉ាញអេស្តូនីបាសខ៍ភឺសៀនហ្វ៊ូឡាហ្វាំងឡង់ហ៊្វីជីហ្វារូសបារាំងហ្វ្រ" + + "ីស៊ានខាងលិចអៀរឡង់ស្កុតហ្កែលិគហ្គាលីស្យានហ្គូរ៉ានីហ្កុយ៉ារាទីមេនហូសាអ៊ី" + + "ស្រាអែលហិណ្ឌីក្រូអាតហៃទីហុងគ្រីអាមេនីហឺរីរ៉ូឥណ្ឌូណេស៊ីអ៊ីកបូស៊ីឈាន់យីអ" + + "៊ីដូអ៊ីស្លង់អ៊ីតាលីអ៊ីនុកទីទុតជប៉ុនជ្វាហ្សក\u200bហ្ស៊ីគីគូយូគូនយ៉ាម៉ាក" + + "ាហ្សាក់កាឡាលលីស៊ុតខ្មែរខាណាដាកូរ៉េកានូរីកាស្មៀរឃឺដកូមីកូនីស\u200bកៀហ្ស" + + "៊ីសឡាតំាងលុចហ្សំបួរហ្គាន់ដាលីមប៊ូសលីនកាឡាឡាវលីទុយអានីលូបាកាតានហ្គាឡាតវ" + + "ីម៉ាឡាហ្គាស៊ីម៉ាស់សលម៉ោរីម៉ាសេដូនីម៉ាឡាយ៉ាឡាមម៉ុងហ្គោលីម៉ារ៉ាធីម៉ាឡេម៉" + + "ាល់តាភូមាណូរូនេបេលេខាងជើងនេប៉ាល់នុនហ្គាហូឡង់ន័រវែស នីនូសន័រវែស បុកម៉ាល" + + "់នេប៊េលខាងត្បូងណាវ៉ាចូណានចាអូសីតាន់អូរ៉ូម៉ូអូឌៀអូស៊ីទិកបឹនជាពិប៉ូឡូញបា" + + "ស្តូព័រទុយហ្គាល់ហ្គិកឈួរ៉ូម៉ង់រូន្ឌីរូម៉ានីរុស្ស៊ីគិនយ៉ាវ៉ាន់ដាសំស្ក្រ" + + "ឹតសាឌីនាស៊ីនឌីសាមីខាងជើងសានហ្គោស្រីលង្កាស្លូវ៉ាគីស្លូវ៉ានីភាសាសាមូអាសូ" + + "ណាសូម៉ាលីអាល់បានីស៊ែបស្វាទីសូថូខាងត្បូងស៊ូដង់ស៊ុយអែតស្វាហ៊ីលីតាមីលតេលុ" + + "គុតាហ្ស៊ីគថៃទីហ្គ្រីញ៉ាតួកម៉េនស្វាណាតុងហ្គាទួរគីសុងហ្គាតាតាតាហ៊ីទីអ៊ុយ" + + "ហ្គឺរអ៊ុយក្រែនអ៊ូរឌូអ៊ូសបេគវេនដាវៀតណាមវូឡាពូកវ៉ាលូនវូឡុហ្វឃសាយីឌីហ្សយរ" + + "ូបាហ្សួងចិនសូលូអាកហ៊ីនឺសអាដេងមីអាឌីហ្គីអាហ្គីមអាយនូអាលូតអាល់តៃខាងត្បូង" + + "អាហ្គីកាម៉ាពូឈីអារ៉ាប៉ាហូអាស៊ូអាស្ទូរីអាវ៉ាឌីបាលីបាសាបេមបាបេណាបាឡូជីខា" + + "ងលិចបូចពូរីប៊ីនីស៊ីកស៊ីកាបូដូប៊ុកហ្គីប្ល៊ីនស៊ីប៊ូអាណូឈីហ្គាឈូគីម៉ារីឆុ" + + "កតាវឆេរូគីឈីយីនីឃឺដកណ្ដាលសេសេលវ៉ាគ្រីអូល (បារាំង)ដាកូតាដាចវ៉ាតៃតាដូគ្រ" + + "ីបហ្សាម៉ាសូប៊ីក្រោមឌួលឡាចូឡាហ៊្វុនយីដាហ្សាហ្គាអេមប៊ូអ៊ីហ្វិកអ៊ីកាជុកអ៊" + + "ីវ៉ុនដូហ្វីលីពីនហ្វ៊ុនហ៊្វ្រូលានហ្គាកាគូសជីសហ្គីលបឺទហ្គូរុនតាឡូអាល្លឺម" + + "៉ង (ស្វីស)ហ្គូស៊ីហ្គីចឈីនហាវៃហ៊ីលីហ្គេណុនម៉ុងសូប៊ីលើហ៊ូប៉ាអ៊ីបានអាយប៊ី" + + "ប៊ីអូអ៊ីឡូកូអ៊ិនហ្គូសលុចបានងុំបាម៉ាឆាំកាប៊ីឡេកាឈីនជូកាំបាកាបាឌៀយ៉ាប់ម៉" + + "ាកូនដេកាប៊ូវឺឌៀនូគូរូកាស៊ីគុយរ៉ាឈីនីកាកូកាលែនជីនគីមប៊ុនឌូគូមីភឹមយ៉ាគគុ" + + "នកានីគ្លីបការ៉ាឆាយបាល់កាការីលាគូរូកសាមបាឡាបាហ្វៀកូឡូញគូមីគឡាឌីណូឡានហ្គ" + + "ីឡេសហ្គីឡាកូតាឡូហ្ស៊ីលូរីខាងជើងលូបាលូឡាលុនដាលូអូមីហ្សូលូយ៉ាម៉ាឌូរីសម៉ា" + + "ហ្គាហ៊ីម៉ៃធីលីម៉ាកាសាម៉ាសៃមុខសាមេនឌីមេរូម៉ូរីស៊ីនម៉ាកគូវ៉ាមីតូមេតាមិកម" + + "េកមីណាងកាប៊ូម៉ានីពូរីម៊ូហាគមូស៊ីមុនដាងពហុភាសាគ្រីកមីរ៉ានដេសអឺហ្ស៊ីយ៉ាម" + + "៉ាហ្សានដឺរេនីនាប៉ូលីតានណាម៉ាអាល្លឺម៉ង់ក្រោមនេវ៉ាវីនីអាសនូអៀនក្វាស្យូងៀ" + + "មប៊ូនណូហ្គៃនគោសូថូខាងជើងនូអ័រណានកូលេភេនហ្គាស៊ីណានផាមភេនហ្គាប៉ាប៉ៃមេនតូ" + + "ប៉ាលូអានភាសាទំនាក់ទំនងនីហ្សេរីយ៉ាព្រូស៊ានគីចឈីរ៉ាប៉ានូរ៉ារ៉ូតុងហ្គានរុ" + + "មបូអារ៉ូម៉ានីរ៉្វាសានដាវីសាខាសាមបូរូសានតាលីងាំបេយសានហ្គូស៊ីស៊ីលានស្កុត" + + "ឃឺដខាងត្បូងស៊ីណាគុយរ៉ាបូរ៉ុស៊ីនីតាឈីលហ៊ីតសានសាមីខាងត្បូងលូលីសាមីអ៊ីណារ" + + "ីសាម៉ីស្កុលសាមីសូនីនគេស្រាណានតុងហ្គោសាហូស៊ូគូម៉ាកូម៉ូរីស៊ីរៀគធីមនីតេសូ" + + "ទីទុំធីហ្គ្រាឃ្លីនហ្គុនថុកពីស៊ីនតារ៉ូកូទុមប៊ូកាទូវ៉ាលូតាសាវ៉ាក់ទូវីនៀត" + + "ាម៉ាសាយអាត្លាសកណ្តាលអាត់មូដអាម់ប៊ុនឌូរូតវៃវុនចូវេលសឺវ៉ូឡាយតាវ៉ារេយវ៉ារ" + + "ីប៉ារីកាលមីគសូហ្គាយ៉ាងបេនយេមបាកន្តាំងតាម៉ាហ្សៃម៉ារ៉ុកស្តង់ដាហ្សូនីគ្មា" + + "ន\u200bទិន្នន័យ\u200bភាសាហ្សាហ្សាអារ៉ាប់ផ្លូវការអេស្ប៉ាញ (អ៊ឺរ៉ុប)ហ្សា" + + "ក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម៉ុលដាវីសឺបូក្រូអាតកុងហ្គោស្វា" + "ហ៊ីលីចិន\u200bអក្សរ\u200bកាត់ចិន\u200bអក្សរ\u200bពេញ" -var kmLangIdx = []uint16{ // 610 elements +var kmLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0021, 0x0045, 0x006c, 0x008d, 0x009c, 0x00b4, 0x00de, - 0x00f3, 0x0108, 0x0108, 0x012c, 0x0159, 0x016b, 0x0186, 0x01a4, - 0x01a4, 0x01bc, 0x01da, 0x01e6, 0x0201, 0x0213, 0x0228, 0x0237, - 0x0237, 0x024f, 0x024f, 0x0258, 0x0258, 0x026a, 0x0273, 0x028b, - 0x02a9, 0x02a9, 0x02b8, 0x02c4, 0x02d3, 0x02eb, 0x0312, 0x032a, - 0x0342, 0x0354, 0x0363, 0x0363, 0x037e, 0x0393, 0x03a8, 0x03ba, - 0x03ea, 0x03fc, 0x0422, 0x0443, 0x045e, 0x047f, 0x0488, 0x0494, - 0x04b2, 0x04c4, 0x04c4, 0x04d9, 0x04e5, 0x04fa, 0x050f, 0x050f, + 0x0000, 0x0015, 0x0039, 0x0054, 0x0075, 0x0084, 0x0099, 0x00b7, + 0x00cc, 0x00e1, 0x00f9, 0x0111, 0x0135, 0x0147, 0x0162, 0x0180, + 0x019e, 0x01b6, 0x01d4, 0x01e0, 0x01fb, 0x020d, 0x0222, 0x0231, + 0x0249, 0x0261, 0x0261, 0x026a, 0x0288, 0x029a, 0x02a3, 0x02bb, + 0x02d9, 0x02ee, 0x02fd, 0x0309, 0x0318, 0x0330, 0x0357, 0x036f, + 0x0387, 0x0396, 0x03a5, 0x03ba, 0x03d5, 0x03ea, 0x03ff, 0x0411, + 0x0441, 0x0453, 0x0477, 0x0498, 0x04b3, 0x04d4, 0x04dd, 0x04e9, + 0x0507, 0x0519, 0x0519, 0x052e, 0x053a, 0x054f, 0x0561, 0x0576, // Entry 40 - 7F - 0x050f, 0x052d, 0x052d, 0x053f, 0x055a, 0x055a, 0x055a, 0x0572, - 0x0587, 0x05a8, 0x05b7, 0x05c3, 0x05e1, 0x05e1, 0x05f3, 0x05f3, - 0x061d, 0x063e, 0x064d, 0x065c, 0x066b, 0x066b, 0x0680, 0x0689, - 0x0689, 0x0698, 0x06bc, 0x06ce, 0x06ec, 0x0704, 0x0704, 0x0719, - 0x0722, 0x073d, 0x0764, 0x0773, 0x0797, 0x0797, 0x07a6, 0x07c1, - 0x07d6, 0x07f4, 0x080c, 0x0824, 0x0839, 0x0845, 0x0845, 0x0869, - 0x087e, 0x087e, 0x0893, 0x08b5, 0x08e0, 0x08e0, 0x08e0, 0x08e0, - 0x08e0, 0x08e0, 0x08f8, 0x090d, 0x090d, 0x0922, 0x0922, 0x0934, + 0x0576, 0x0594, 0x0594, 0x05a6, 0x05c1, 0x05c1, 0x05d0, 0x05e8, + 0x05fd, 0x061e, 0x062d, 0x0639, 0x0657, 0x0657, 0x0669, 0x0684, + 0x069c, 0x06bd, 0x06cc, 0x06de, 0x06ed, 0x06ff, 0x0714, 0x071d, + 0x0729, 0x0738, 0x0753, 0x0765, 0x0783, 0x079b, 0x07b0, 0x07c5, + 0x07ce, 0x07e9, 0x0810, 0x081f, 0x0843, 0x0858, 0x0867, 0x0882, + 0x08a3, 0x08c1, 0x08d9, 0x08e8, 0x08fd, 0x0909, 0x0915, 0x0939, + 0x094e, 0x0963, 0x0972, 0x0994, 0x09bf, 0x09e9, 0x09fe, 0x0a0d, + 0x0a25, 0x0a25, 0x0a3d, 0x0a49, 0x0a61, 0x0a76, 0x0a76, 0x0a88, // Entry 80 - BF - 0x0946, 0x096a, 0x097f, 0x0994, 0x09a6, 0x09bb, 0x09d0, 0x09f7, - 0x0a12, 0x0a12, 0x0a24, 0x0a42, 0x0a57, 0x0a72, 0x0a8d, 0x0aa8, - 0x0ac6, 0x0ad2, 0x0ae7, 0x0aff, 0x0b0b, 0x0b0b, 0x0b0b, 0x0b1d, - 0x0b32, 0x0b4d, 0x0b5c, 0x0b6e, 0x0b98, 0x0b9e, 0x0bb3, 0x0bd7, - 0x0bd7, 0x0bec, 0x0bfb, 0x0bfb, 0x0c07, 0x0c07, 0x0c22, 0x0c3d, - 0x0c4f, 0x0c7c, 0x0c7c, 0x0c8e, 0x0c8e, 0x0c8e, 0x0ca3, 0x0cac, - 0x0ccd, 0x0cdc, 0x0cf1, 0x0cfa, 0x0d06, 0x0d06, 0x0d06, 0x0d06, - 0x0d06, 0x0d06, 0x0d06, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, + 0x0a9a, 0x0abe, 0x0ad3, 0x0ae8, 0x0afa, 0x0b0f, 0x0b24, 0x0b4b, + 0x0b66, 0x0b78, 0x0b8a, 0x0ba8, 0x0bbd, 0x0bd8, 0x0bf3, 0x0c0e, + 0x0c2c, 0x0c38, 0x0c4d, 0x0c65, 0x0c71, 0x0c83, 0x0ca7, 0x0cb9, + 0x0cce, 0x0ce9, 0x0cf8, 0x0d0a, 0x0d22, 0x0d28, 0x0d49, 0x0d5e, + 0x0d70, 0x0d85, 0x0d94, 0x0da9, 0x0db5, 0x0dca, 0x0de5, 0x0e00, + 0x0e12, 0x0e27, 0x0e36, 0x0e48, 0x0e5d, 0x0e6f, 0x0e84, 0x0e8d, + 0x0ea2, 0x0eb1, 0x0ec0, 0x0ec9, 0x0ed5, 0x0ef0, 0x0ef0, 0x0f05, + 0x0f1d, 0x0f1d, 0x0f1d, 0x0f32, 0x0f41, 0x0f41, 0x0f41, 0x0f50, // Entry C0 - FF - 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d30, 0x0d30, 0x0d30, - 0x0d30, 0x0d30, 0x0d30, 0x0d30, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, - 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, - 0x0d3f, 0x0d4e, 0x0d4e, 0x0d5a, 0x0d5a, 0x0d5a, 0x0d7e, 0x0d7e, - 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, - 0x0d7e, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, - 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d9c, 0x0d9c, 0x0d9c, - 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0dae, 0x0dae, 0x0dc9, + 0x0f50, 0x0f7a, 0x0f7a, 0x0f92, 0x0f92, 0x0fa7, 0x0fa7, 0x0fc5, + 0x0fc5, 0x0fc5, 0x0fc5, 0x0fc5, 0x0fc5, 0x0fd4, 0x0fd4, 0x0fec, + 0x0fec, 0x1001, 0x1001, 0x100d, 0x100d, 0x1019, 0x1019, 0x1019, + 0x1019, 0x1019, 0x1028, 0x1028, 0x1034, 0x1034, 0x1034, 0x1058, + 0x106d, 0x106d, 0x107c, 0x107c, 0x107c, 0x1097, 0x1097, 0x1097, + 0x1097, 0x1097, 0x10a3, 0x10a3, 0x10a3, 0x10bb, 0x10bb, 0x10cd, + 0x10cd, 0x10cd, 0x10cd, 0x10cd, 0x10cd, 0x10eb, 0x10fd, 0x10fd, + 0x10fd, 0x1109, 0x1118, 0x1118, 0x112a, 0x112a, 0x113c, 0x114e, // Entry 100 - 13F - 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dd5, 0x0dd5, - 0x0dd5, 0x0dd5, 0x0dd5, 0x0dea, 0x0dea, 0x0e08, 0x0e08, 0x0e1a, - 0x0e1a, 0x0e3e, 0x0e3e, 0x0e3e, 0x0e50, 0x0e50, 0x0e50, 0x0e50, - 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e6b, - 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, - 0x0e6b, 0x0e6b, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, - 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, - 0x0e7a, 0x0e7a, 0x0ea7, 0x0ea7, 0x0ea7, 0x0ebc, 0x0ebc, 0x0ebc, + 0x1169, 0x1169, 0x1169, 0x1169, 0x11ab, 0x11ab, 0x11bd, 0x11cf, + 0x11db, 0x11db, 0x11db, 0x11f0, 0x11f0, 0x1205, 0x1205, 0x1223, + 0x1223, 0x1232, 0x1232, 0x1256, 0x1256, 0x1274, 0x1286, 0x129e, + 0x129e, 0x129e, 0x12b6, 0x12b6, 0x12b6, 0x12b6, 0x12d1, 0x12d1, + 0x12d1, 0x12ec, 0x12ec, 0x12fe, 0x12fe, 0x12fe, 0x12fe, 0x12fe, + 0x12fe, 0x12fe, 0x131c, 0x1328, 0x1337, 0x1337, 0x1337, 0x1337, + 0x1337, 0x1340, 0x1358, 0x1358, 0x1358, 0x1358, 0x1358, 0x1358, + 0x1379, 0x1379, 0x1379, 0x1379, 0x13a6, 0x13a6, 0x13a6, 0x13bb, // Entry 140 - 17F - 0x0ebc, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0edd, 0x0edd, - 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, - 0x0eec, 0x0efe, 0x0efe, 0x0efe, 0x0efe, 0x0efe, 0x0f13, 0x0f13, - 0x0f13, 0x0f22, 0x0f22, 0x0f22, 0x0f22, 0x0f22, 0x0f3a, 0x0f5b, - 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f79, 0x0f79, 0x0f79, - 0x0f79, 0x0f91, 0x0f91, 0x0fb2, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fc7, - 0x0fc7, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fdc, 0x0fee, 0x0fee, 0x0fee, - 0x0fee, 0x0fee, 0x1003, 0x1003, 0x1003, 0x1003, 0x1003, 0x1003, + 0x13d3, 0x13d3, 0x13d3, 0x13df, 0x13df, 0x1403, 0x1403, 0x140f, + 0x1424, 0x1424, 0x1436, 0x1448, 0x1469, 0x147e, 0x1499, 0x1499, + 0x1499, 0x14ab, 0x14ba, 0x14cc, 0x14cc, 0x14cc, 0x14cc, 0x14cc, + 0x14e1, 0x14f0, 0x14f6, 0x1505, 0x1505, 0x1517, 0x1517, 0x1526, + 0x153e, 0x155f, 0x155f, 0x156b, 0x156b, 0x157a, 0x157a, 0x1598, + 0x1598, 0x1598, 0x15a4, 0x15bc, 0x15d7, 0x15f8, 0x160d, 0x160d, + 0x161c, 0x1646, 0x1646, 0x1646, 0x1658, 0x1667, 0x167c, 0x168e, + 0x169d, 0x16ac, 0x16ac, 0x16be, 0x16d3, 0x16d3, 0x16d3, 0x16e8, // Entry 180 - 1BF - 0x1003, 0x1015, 0x1015, 0x1015, 0x1015, 0x1033, 0x1033, 0x1033, - 0x1033, 0x1033, 0x103f, 0x103f, 0x104e, 0x104e, 0x104e, 0x104e, - 0x104e, 0x104e, 0x104e, 0x104e, 0x104e, 0x105d, 0x105d, 0x105d, - 0x105d, 0x105d, 0x1069, 0x1084, 0x1084, 0x10ab, 0x10b7, 0x10b7, - 0x10b7, 0x10b7, 0x10b7, 0x10c9, 0x10c9, 0x10c9, 0x10db, 0x10db, - 0x10db, 0x10db, 0x10db, 0x10db, 0x10db, 0x10db, 0x1105, 0x1105, - 0x1105, 0x1114, 0x1141, 0x1141, 0x1141, 0x1141, 0x1141, 0x1159, - 0x1159, 0x1159, 0x1159, 0x1159, 0x1162, 0x1162, 0x1171, 0x1171, + 0x16e8, 0x16e8, 0x16e8, 0x16fa, 0x16fa, 0x16fa, 0x170f, 0x172d, + 0x172d, 0x1745, 0x1745, 0x1754, 0x1760, 0x1772, 0x1781, 0x1781, + 0x1781, 0x1799, 0x1799, 0x17b7, 0x17cc, 0x17e1, 0x17e1, 0x17f0, + 0x17f0, 0x17ff, 0x17ff, 0x180e, 0x181a, 0x1835, 0x1835, 0x185c, + 0x1868, 0x187a, 0x1898, 0x1898, 0x18b3, 0x18c5, 0x18d4, 0x18d4, + 0x18e6, 0x18fb, 0x190a, 0x1925, 0x1925, 0x1925, 0x1925, 0x1943, + 0x196d, 0x196d, 0x198b, 0x199a, 0x19c7, 0x19dc, 0x19eb, 0x19fa, + 0x19fa, 0x1a12, 0x1a27, 0x1a39, 0x1a39, 0x1a39, 0x1a42, 0x1a60, // Entry 1C0 - 1FF - 0x1171, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, - 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, - 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1195, 0x1195, - 0x1195, 0x1195, 0x1195, 0x1195, 0x1195, 0x11a4, 0x11a4, 0x11a4, - 0x11a4, 0x11a4, 0x11a4, 0x11b3, 0x11b3, 0x11b3, 0x11b3, 0x11c8, - 0x11c8, 0x11c8, 0x11c8, 0x11c8, 0x11dd, 0x11dd, 0x11dd, 0x11dd, - 0x1210, 0x1210, 0x121f, 0x121f, 0x121f, 0x124f, 0x124f, 0x124f, - 0x126a, 0x126a, 0x126a, 0x126a, 0x126a, 0x126a, 0x128e, 0x12a6, + 0x1a6f, 0x1a6f, 0x1a6f, 0x1a84, 0x1a84, 0x1a84, 0x1a84, 0x1a84, + 0x1aab, 0x1aab, 0x1ac9, 0x1aea, 0x1b02, 0x1b02, 0x1b4d, 0x1b4d, + 0x1b4d, 0x1b4d, 0x1b4d, 0x1b4d, 0x1b4d, 0x1b4d, 0x1b4d, 0x1b65, + 0x1b65, 0x1b74, 0x1b74, 0x1b74, 0x1b8c, 0x1bb6, 0x1bb6, 0x1bb6, + 0x1bc5, 0x1bc5, 0x1bc5, 0x1bc5, 0x1bc5, 0x1be3, 0x1bf2, 0x1c07, + 0x1c13, 0x1c13, 0x1c28, 0x1c28, 0x1c3d, 0x1c3d, 0x1c4f, 0x1c64, + 0x1c7f, 0x1c8e, 0x1c8e, 0x1caf, 0x1caf, 0x1cbe, 0x1cbe, 0x1cbe, + 0x1cee, 0x1cee, 0x1cee, 0x1d09, 0x1d12, 0x1d12, 0x1d12, 0x1d12, // Entry 200 - 23F - 0x12ca, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, - 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, - 0x12e5, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, - 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, - 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x12f1, 0x130c, 0x130c, 0x134b, - 0x134b, 0x134b, 0x134b, 0x1372, 0x1378, 0x1378, 0x1378, 0x1378, - 0x1378, 0x1378, 0x1378, 0x1387, 0x1387, 0x1387, 0x1387, 0x1387, - 0x13a5, 0x13a5, 0x13a5, 0x13a5, 0x13b7, 0x13b7, 0x13b7, 0x13b7, + 0x1d12, 0x1d36, 0x1d4e, 0x1d72, 0x1d8d, 0x1da2, 0x1da2, 0x1dcc, + 0x1dcc, 0x1dd8, 0x1dd8, 0x1df0, 0x1df0, 0x1df0, 0x1e05, 0x1e05, + 0x1e17, 0x1e17, 0x1e17, 0x1e26, 0x1e32, 0x1e32, 0x1e41, 0x1e59, + 0x1e59, 0x1e59, 0x1e59, 0x1e77, 0x1e77, 0x1e77, 0x1e77, 0x1e77, + 0x1e92, 0x1e92, 0x1ea7, 0x1ea7, 0x1ea7, 0x1ea7, 0x1ebf, 0x1ed4, + 0x1eef, 0x1f01, 0x1f40, 0x1f55, 0x1f55, 0x1f73, 0x1f7c, 0x1f82, + 0x1f82, 0x1f82, 0x1f82, 0x1f82, 0x1f82, 0x1f82, 0x1f91, 0x1fa0, + 0x1fb8, 0x1fca, 0x1fca, 0x1fe8, 0x1fe8, 0x1ffa, 0x1ffa, 0x200c, // Entry 240 - 27F - 0x13b7, 0x13b7, 0x13b7, 0x13b7, 0x13b7, 0x13b7, 0x13b7, 0x13cc, - 0x13cc, 0x1405, 0x1405, 0x1432, 0x1432, 0x1432, 0x1432, 0x1432, - 0x1432, 0x1432, 0x1432, 0x1432, 0x1462, 0x1462, 0x1462, 0x1462, - 0x1462, 0x1492, 0x14a7, 0x14a7, 0x14e0, 0x14f8, 0x14f8, 0x1528, - 0x1552, 0x1579, -} // Size: 1244 bytes - -var knLangStr string = "" + // Size: 11656 bytes + 0x200c, 0x200c, 0x2021, 0x2030, 0x2030, 0x2045, 0x2045, 0x2045, + 0x2045, 0x2045, 0x208a, 0x209c, 0x20d5, 0x20ed, 0x211a, 0x211a, + 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x214a, + 0x214a, 0x214a, 0x214a, 0x214a, 0x217a, 0x218f, 0x218f, 0x21c8, + 0x21e0, 0x2201, 0x2231, 0x225b, 0x2282, +} // Size: 1250 bytes + +const knLangStr string = "" + // Size: 12261 bytes "ಅಫಾರ್ಅಬ್ಖಾಜಿಯನ್ಅವೆಸ್ಟನ್ಆಫ್ರಿಕಾನ್ಸ್ಅಕಾನ್ಅಂಹರಿಕ್ಅರಗೊನೀಸ್ಅರೇಬಿಕ್ಅಸ್ಸಾಮೀಸ್ಅವ" + - "ರಿಕ್ಅಯ್ಮಾರಾಅಜೆರ್ಬೈಜಾನಿಬಶ್ಕಿರ್ಬೆಲರೂಸಿಯನ್ಬಲ್ಗೇರಿಯನ್ಬಿಸ್ಲಾಮಾಬಂಬಾರಾಬೆಂಗಾಲಿ" + + "ರಿಕ್ಅಯ್ಮಾರಾಅಜೆರ್ಬೈಜಾನಿಬಶ್ಕಿರ್ಬೆಲರೂಸಿಯನ್ಬಲ್ಗೇರಿಯನ್ಬಿಸ್ಲಾಮಾಬಂಬಾರಾಬಾಂಗ್ಲಾ" + "ಟಿಬೇಟಿಯನ್ಬ್ರೆಟನ್ಬೋಸ್ನಿಯನ್ಕೆಟಲಾನ್ಚೆಚನ್ಕಮೊರೊಕೋರ್ಸಿಕನ್ಕ್ರೀಜೆಕ್ಚರ್ಚ್ ಸ್ಲಾವ" + "ಿಕ್ಚುವಾಶ್ವೆಲ್ಶ್ಡ್ಯಾನಿಶ್ಜರ್ಮನ್ದಿವೆಹಿಜೋಂಗ್\u200cಖಾಈವ್ಗ್ರೀಕ್ಇಂಗ್ಲೀಷ್ಎಸ್ಪೆ" + "ರಾಂಟೊಸ್ಪ್ಯಾನಿಷ್ಎಸ್ಟೊನಿಯನ್ಬಾಸ್ಕ್ಪರ್ಶಿಯನ್ಫುಲಾಹ್ಫಿನ್ನಿಶ್ಫಿಜಿಯನ್ಫರೋಸಿಫ್ರೆಂ" + "ಚ್ಪಶ್ಚಿಮ ಫ್ರಿಸಿಯನ್ಐರಿಷ್ಸ್ಕಾಟಿಶ್ ಗ್ಯಾಲಿಕ್ಗ್ಯಾಲಿಶಿಯನ್ಗೌರಾನಿಗುಜರಾತಿಮ್ಯಾಂಕ" + - "್ಸ್ಹೌಸಾಹೀಬ್ರ್ಯೂಹಿಂದಿಹಿರಿ ಮೊಟುಕ್ರೊಯೇಶಿಯನ್ಹೈತಿಯನ್ಹಂಗೇರಿಯನ್ಅರ್ಮೇನಿಯನ್ಹೆರೆ" + - "ರೊಇಂಟರ್\u200cಲಿಂಗ್ವಾಇಂಡೋನೇಶಿಯನ್ಇಂಟರ್ಲಿಂಗ್ಇಗ್ಬೊಸಿಚುಅನ್ ಯಿಇನುಪಿಯಾಕ್ಇಡೊಐಸ" + - "್ಲಾಂಡಿಕ್ಇಟಾಲಿಯನ್ಇನುಕ್ಟಿಟುಟ್ಜಾಪನೀಸ್ಜಾವಾನೀಸ್ಜಾರ್ಜಿಯನ್ಕೊಂಗೊಕಿಕುಯುಕ್ವಾನ್" + - "\u200cಯಾಮಾಕಝಕ್ಕಲಾಲ್ಲಿಸುಟ್ಖಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕನುರಿಕಾಶ್ಮೀರಿಕುರ್ದಿಷ್ಕೋಮಿಕೋರ್ನ" + - "ಿಷ್ಕಿರ್ಗಿಜ್ಲ್ಯಾಟಿನ್ಲಕ್ಸಂಬರ್ಗ್ಗಾಂಡಾಲಿಂಬರ್ಗಿಶ್ಲಿಂಗಾಲಲಾವೋಲಿಥುವೇನಿಯನ್ಲೂಬಾ-" + - "ಕಟಾಂಗಾಲಟ್ವಿಯನ್ಮಲಗಾಸಿಮಾರ್ಶಲ್ಲೀಸ್ಮಾವೋರಿಮೆಸಿಡೋನಿಯನ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮರಾಠಿಮಲ" + - "ಯ್ಮಾಲ್ಟೀಸ್ಬರ್ಮೀಸ್ನೌರುಉತ್ತರ ದೆಬೆಲೆನೇಪಾಳಿಡೋಂಗಾಡಚ್ನಾರ್ವೆಜಿಯನ್ ನೈನೊಸ್ಕ್ನಾರ" + - "್ವೆಜಿಯನ್ ಬೊಕ್ಮಲ್ದಕ್ಷಿಣ ದೆಬೆಲೆನವಾಜೊನ್ಯಾಂಜಾಒಸಿಟನ್ಒಜಿಬ್ವಾಓರೊಮೋಒರಿಯಾಒಸ್ಸೆಟ" + - "ಿಕ್ಪಂಜಾಬಿಪಾಲಿಪೋಲಿಶ್ಪಾಷ್ಟೋಪೋರ್ಚುಗೀಸ್ಕ್ವೆಚುವಾರೊಮಾನ್ಷ್ರುಂಡಿರೊಮೇನಿಯನ್ರಷ್ಯನ" + - "್ಕೀನ್ಯಾರುವಾಂಡಾಸಂಸ್ಕೃತಸರ್ಡೀನಿಯನ್ಸಿಂಧಿಉತ್ತರ ಸಾಮಿಸಾಂಗೋಸಿಂಹಳಸ್ಲೋವಾಕ್ಸ್ಲೋವೇ" + - "ನಿಯನ್ಸಮೋವನ್ಶೋನಾಸೊಮಾಲಿಅಲ್ಬೇನಿಯನ್ಸರ್ಬಿಯನ್ಸ್ವಾತಿದಕ್ಷಿಣ ಸೋಥೋಸುಂಡಾನೀಸ್ಸ್ವೀಡ" + - "ಿಷ್ಸ್ವಹಿಲಿತಮಿಳುತೆಲುಗುತಾಜಿಕ್ಥಾಯ್ಟಿಗ್ರಿನ್ಯಾಟರ್ಕ್\u200cಮೆನ್ಸ್ವಾನಾಟೋಂಗನ್ಟರ" + - "್ಕಿಶ್ಸೋಂಗಾಟಾಟರ್ತಹಿತಿಯನ್ಉಯಿಘರ್ಉಕ್ರೈನಿಯನ್ಉರ್ದುಉಜ್ಬೇಕ್ವೆಂಡಾವಿಯೇಟ್ನಾಮೀಸ್ವೋ" + - "ಲಾಪುಕ್ವಾಲೂನ್ವೋಲೋಫ್ಕ್ಸೋಸಯಡ್ಡಿಶ್ಯೊರುಬಾಝೂವಾಂಗ್ಚೈನೀಸ್ಜುಲುಅಛಿನೀಸ್ಅಕೋಲಿಅಡಂಗ್" + - "\u200cಮೆಅಡೈಘೆಆಫ್ರಿಹಿಲಿಅಘೆಮ್ಐನುಅಕ್ಕಾಡಿಯನ್ಅಲೆಯುಟ್ದಕ್ಷಿಣ ಅಲ್ಟಾಯ್ಪ್ರಾಚೀನ ಇಂಗ" + - "್ಲೀಷ್ಆಂಗಿಕಾಅರಾಮಿಕ್ಮಪುಚೆಅರಪಾಹೋಅರಾವಾಕ್ಅಸುಆಸ್ಟುರಿಯನ್ಅವಧಿಬಲೂಚಿಬಲಿನೀಸ್ಬಸಾಬೇ" + - "ಜಾಬೆಂಬಾಬೆನಪಶ್ಚಿಮ ಬಲೊಚಿಭೋಜಪುರಿಬಿಕೊಲ್ಬಿನಿಸಿಕ್ಸಿಕಾಬ್ರಾಜ್ಬೋಡೊಬುರಿಯಟ್ಬುಗಿನೀ" + - "ಸ್ಬ್ಲಿನ್ಕ್ಯಾಡ್ಡೋಕಾರಿಬ್ಅಟ್ಸಮ್ಸೆಬುಆನೋಚಿಗಾಚಿಬ್ಚಾಚಗಟಾಯ್ಚೂಕಿಸೆಮಾರಿಚಿನೂಕ್ ಜಾ" + - "ರ್ಗೋನ್ಚೋಕ್ಟಾವ್ಚಿಪೆವ್ಯಾನ್ಚೆರೋಕೀಚೀಯೆನ್ನೇಸೊರಾನಿ ಕುರ್ದಿಷ್ಕೊಪ್ಟಿಕ್ಕ್ರಿಮೀಯನ್" + - " ಟರ್ಕಿಷ್ಕಶುಬಿಯನ್ಡಕೋಟದರ್ಗ್ವಾಟೈಟಡೆಲಾವೇರ್ಸ್ಲೇವ್ಡೋಗ್ರಿಬ್ಡಿಂಕಾಜರ್ಮಾಡೋಗ್ರಿಲೋವರ" + - "್ ಸೋರ್ಬಿಯನ್ಡುವಾಲಾಮಧ್ಯ ಡಚ್ಜೊಲ-ಫೊನ್ಯಿಡ್ಯೂಲಾಎಂಬುಎಫಿಕ್ಪ್ರಾಚೀನ ಈಜಿಪ್ಟಿಯನ್ಎಕ" + - "ಾಜುಕ್ಎಲಾಮೈಟ್ಮಧ್ಯ ಇಂಗ್ಲೀಷ್ಇವಾಂಡೋಫೆಂಗ್ಫಿಲಿಪಿನೊಫೋನ್ಮಧ್ಯ ಫ್ರೆಂಚ್ಪ್ರಾಚೀನ ಫ್" + - "ರೆಂಚ್ಉತ್ತರ ಫ್ರಿಸಿಯನ್ಪೂರ್ವ ಫ್ರಿಸಿಯನ್ಫ್ರಿಯುಲಿಯನ್ಗಗಗೌಜ್ಗಾಯೋಗ್ಬಾಯಾಗೀಝ್ಗಿಲ್" + - "ಬರ್ಟೀಸ್ಮಧ್ಯ ಹೈ ಜರ್ಮನ್ಪ್ರಾಚೀನ ಹೈ ಜರ್ಮನ್ಗೊಂಡಿಗೊರೊಂಟಾಲೋಗೋಥಿಕ್ಗ್ರೇಬೋಪ್ರಾಚೀ" + - "ನ ಗ್ರೀಕ್ಸ್ವಿಸ್ ಜರ್ಮನ್ಗುಸಿಗ್ವಿಚ್\u200cಇನ್ಹೈಡಾಹವಾಯಿಯನ್ಹಿಲಿಗೇನನ್ಹಿಟ್ಟಿಟೆಮ" + - "ೋಂಗ್ಅಪ್ಪರ್ ಸರ್ಬಿಯನ್ಹೂಪಾಇಬಾನ್ಇಲ್ಲಿಕೋಇಂಗುಷ್ಲೊಜ್ಬಾನ್ನೊಂಬಾಮ್ಯಕಮೆಜೂಡಿಯೋ-ಪರ್" + - "ಶಿಯನ್ಜೂಡಿಯೋ-ಅರೇಬಿಕ್ಕಾರಾ-ಕಲ್ಪಾಕ್ಕಬೈಲ್ಕಚಿನ್ಜ್ಜುಕಂಬಾಕಾವಿಕಬರ್ಡಿಯನ್ಟ್ಯಾಪ್ಮ್" + - "ಯಾಕೊಂಡ್ಕಬುವೆರ್ಡಿಯನುಕೋರೋಖಾಸಿಖೋಟಾನೀಸ್ಕೊಯ್ರ ಚೀನಿಕಲೆಂಜಿನ್ಕಿಂಬುಂಡುಕೊಮಿ-ಪರ್ಮ" + - "್ಯಕ್ಕೊಂಕಣಿಕೊಸರಿಯನ್ಕಪೆಲ್ಲೆಕರಚಯ್-ಬಲ್ಕಾರ್ಕರೇಲಿಯನ್ಕುರುಖ್ಶಂಬಲಬಫಿಯಕುಮೈಕ್ಕುಟೇ" + - "ನಾಯ್ಕಾಡಿನೋಲಾಂಗಿಲಹಂಡಾಲಂಬಾಲೆಜ್ಘಿಯನ್ಲಕೊಟಮೊಂಗೋಲೋಝಿಲುಬ-ಲುಲಾಲೂಯಿಸೆನೋಲುಂಡಾಲುವ" + - "ೋಲುಶಾಯ್ಲುಯಿಯಮದುರೀಸ್ಮಗಾಹಿಮೈಥಿಲಿಮಕಾಸರ್ಮಂಡಿಂಗೊಮಸಾಯ್ಮೋಕ್ಷಮಂದಾರ್ಮೆಂಡೆಮೆರುಮೊ" + - "ರಿಸನ್ಮಧ್ಯ ಐರಿಷ್ಮ್ಯಖುವಾ- ಮೀಟ್ಟೊಮೆಟಾಮಿಕ್\u200cಮ್ಯಾಕ್ಮಿನಂಗ್\u200cಕಬಾವುಮಂಚ" + - "ುಮಣಿಪುರಿಮೊಹಾವ್ಕ್ಮೊಸ್ಸಿಮುಂಡಂಗ್ಬಹುಸಂಖ್ಯೆಯ ಭಾಷೆಗಳುಕ್ರೀಕ್ಕಿರಾಂಡೀಸ್ಮಾರ್ವಾಡಿ" + - "ಎರ್\u200cಝ್ಯಾನಿಯಾಪೊಲಿಟನ್ನಮಲೋ ಜರ್ಮನ್ನೇವಾರೀನಿಯಾಸ್ನಿಯುವನ್ಖ್ವಾಸಿಯೊನೊಗಾಯ್ಪ್" + - "ರಾಚೀನ ನೋರ್ಸ್ಎನ್\u200cಕೋಉತ್ತರ ಸೋಥೋನೂಯರ್ಶಾಸ್ತ್ರೀಯ ನೇವಾರಿನ್ಯಾಮ್\u200cವೆಂಜ" + - "ಿನ್ಯಾನ್\u200cಕೋಲೆನ್ಯೋರೋಜೀಮಾಓಸಾಜ್ಒಟ್ಟೋಮನ್ ತುರ್ಕಿಷ್ಪಂಗಾಸಿನನ್ಪಹ್ಲವಿಪಂಪಾಂಗ" + - "ಾಪಾಪಿಯಮೆಂಟೋಪಲುಆನ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಫೀನಿಷಿಯನ್ಪೋನ್\u200c\u200cಪಿಯನ್ಪ್ರಾಚೀನ" + - " ಪ್ರೊವೆನ್ಶಿಯಲ್ಕಿಷೆರಾಜಾಸ್ಥಾನಿರಾಪಾನುಯಿರಾರೋಟೊಂಗನ್ರೊಂಬೊರೋಮಾನಿಅರೋಮಾನಿಯನ್ರುವಸಂ" + - "ಡಾವೇಯಾಕುಟ್ಸಮರಿಟನ್ ಅರಾಮಿಕ್ಸಂಬುರುಸಸಾಕ್ಸಂತಾಲಿಸಂಗುಸಿಸಿಲಿಯನ್ಸ್ಕೋಟ್ಸ್ದಕ್ಷಿಣ " + - "ಕುರ್ದಿಶ್ಸೆನಸೆಲ್ಕಪ್ಕೊಯ್ರಬೊರೊ ಸೆನ್ನಿಪ್ರಾಚೀನ ಐರಿಷ್ಟಷೆಲ್\u200dಹಿಟ್ಶಾನ್ಸಿಡಾ" + - "ಮೋದಕ್ಷಿಣ ಸಾಮಿಲೂಲ್ ಸಾಮಿಇನರಿ ಸಾಮಿಸ್ಕೋಟ್ ಸಾಮಿಸೋನಿಂಕೆಸೋಗ್ಡಿಏನ್ಸ್ರಾನನ್ ಟೋಂಗ" + - "ೋಸೇರೇರ್ಸುಕುಮಾಸುಸುಸುಮೇರಿಯನ್ಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ಸಿರಿಯಕ್ಟಿಮ್ನೆಟೆಸೊಟೆರೆನೋಟೇಟಮ" + - "್ಟೈಗ್ರೆಟಿವ್ಟೊಕೆಲಾವ್ಕ್ಲಿಂಗನ್ಟ್ಲಿಂಗಿಟ್ಟಮಾಷೆಕ್ನ್ಯಾಸಾ ಟೋಂಗಾಟೋಕ್ ಪಿಸಿನ್ಸಿಂಶ" + - "ಿಯನ್ತುಂಬುಕಾಟುವಾಲುಟಸವಕ್ಟುವಿನಿಯನ್ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್ಉಡ್\u200cಮುರ್ಟ್ಉಗಾರಿ" + - "ಟಿಕ್ಉಂಬುಂಡುರೂಟ್ವಾಯಿವೋಟಿಕ್ವುಂಜೊವಲಾಮೋವರಾಯ್ವಾಷೋವಾರ್ಲ್\u200cಪಿರಿಕಲ್\u200cಮ" + - "ೈಕ್ಸೊಗಯಾಓಯಪೀಸೆಝೋಪೊಟೆಕ್ಬ್ಲಿಸ್\u200cಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್" + - " ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರಮಾಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿ" + - "ಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ಬ್ರಿಟ" + - "ಿಷ್ ಇಂಗ್ಲೀಷ್ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ್ಯಾನಿಶ್ಯುರೋಪಿಯನ್ ಸ್ಪ" + - "್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್ ಫ್ರೆಂಚ್ಫ್ಲೆಮಿಷ್ಬ್ರೆ" + - "ಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮೊಲ್ಡೆವಿಯನ್ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಕಾಂಗ" + - "ೊ ಸ್ವಹಿಲಿಸರಳೀಕೃತ ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್" - -var knLangIdx = []uint16{ // 610 elements + "್ಸ್ಹೌಸಾಹೀಬ್ರ್ಯೂಹಿಂದಿಹಿರಿ ಮೊಟುಕ್ರೊಯೇಶಿಯನ್ಹೈಷಿಯನ್ ಕ್ರಿಯೋಲ್ಹಂಗೇರಿಯನ್ಅರ್ಮೇ" + + "ನಿಯನ್ಹೆರೆರೊಇಂಟರ್\u200cಲಿಂಗ್ವಾಇಂಡೋನೇಶಿಯನ್ಇಂಟರ್ಲಿಂಗ್ಇಗ್ಬೊಸಿಚುಅನ್ ಯಿಇನುಪಿ" + + "ಯಾಕ್ಇಡೊಐಸ್ಲಾಂಡಿಕ್ಇಟಾಲಿಯನ್ಇನುಕ್ಟಿಟುಟ್ಜಾಪನೀಸ್ಜಾವಾನೀಸ್ಜಾರ್ಜಿಯನ್ಕಾಂಗೋಕಿಕುಯ" + + "ುಕ್ವಾನ್\u200cಯಾಮಾಕಝಕ್ಕಲಾಲ್ಲಿಸುಟ್ಖಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕನುರಿಕಾಶ್ಮೀರಿಕುರ್ದಿಷ್" + + "ಕೋಮಿಕಾರ್ನಿಷ್ಕಿರ್ಗಿಜ್ಲ್ಯಾಟಿನ್ಲಕ್ಸಂಬರ್ಗಿಷ್ಗಾಂಡಾಲಿಂಬರ್ಗಿಶ್ಲಿಂಗಾಲಲಾವೋಲಿಥುವ" + + "ೇನಿಯನ್ಲೂಬಾ-ಕಟಾಂಗಾಲಟ್ವಿಯನ್ಮಲಗಾಸಿಮಾರ್ಶಲ್ಲೀಸ್ಮಾವೋರಿಮೆಸಿಡೋನಿಯನ್ಮಲಯಾಳಂಮಂಗೋಲ" + + "ಿಯನ್ಮರಾಠಿಮಲಯ್ಮಾಲ್ಟೀಸ್ಬರ್ಮೀಸ್ನೌರುಉತ್ತರ ದೆಬೆಲೆನೇಪಾಳಿಡೋಂಗಾಡಚ್ನಾರ್ವೇಜಿಯನ್ " + + "ನೈನಾರ್ಸ್ಕ್ನಾರ್ವೆಜಿಯನ್ ಬೊಕ್ಮಲ್ದಕ್ಷಿಣ ದೆಬೆಲೆನವಾಜೊನ್ಯಾಂಜಾಒಸಿಟನ್ಒಜಿಬ್ವಾಓರೊ" + + "ಮೋಒರಿಯಾಒಸ್ಸೆಟಿಕ್ಪಂಜಾಬಿಪಾಲಿಪಾಲಿಷ್ಪಾಷ್ಟೋಪೋರ್ಚುಗೀಸ್ಕ್ವೆಚುವಾರೊಮಾನ್ಷ್ರುಂಡಿರ" + + "ೊಮೇನಿಯನ್ರಷ್ಯನ್ಕೀನ್ಯಾರುವಾಂಡಾಸಂಸ್ಕೃತಸರ್ಡೀನಿಯನ್ಸಿಂಧಿಉತ್ತರ ಸಾಮಿಸಾಂಗೋಸಿಂಹಳಸ" + + "್ಲೋವಾಕ್ಸ್ಲೋವೇನಿಯನ್ಸಮೋವನ್ಶೋನಾಸೊಮಾಲಿಅಲ್ಬೇನಿಯನ್ಸರ್ಬಿಯನ್ಸ್ವಾತಿದಕ್ಷಿಣ ಸೋಥೋಸ" + + "ುಂಡಾನೀಸ್ಸ್ವೀಡಿಷ್ಸ್ವಹಿಲಿತಮಿಳುತೆಲುಗುತಾಜಿಕ್ಥಾಯ್ಟಿಗ್ರಿನ್ಯಾಟರ್ಕ್\u200cಮೆನ್ಸ" + + "್ವಾನಾಟೋಂಗನ್ಟರ್ಕಿಶ್ಸೋಂಗಾಟಾಟರ್ಟಹೀಟಿಯನ್ಉಯಿಘರ್ಉಕ್ರೈನಿಯನ್ಉರ್ದುಉಜ್ಬೇಕ್ವೆಂಡಾವ" + + "ಿಯೇಟ್ನಾಮೀಸ್ವೋಲಾಪುಕ್ವಾಲೂನ್ವೋಲೋಫ್ಕ್ಸೋಸಯಿಡ್ಡಿಶ್ಯೊರುಬಾಝೂವಾಂಗ್ಚೈನೀಸ್ಜುಲುಅಛಿ" + + "ನೀಸ್ಅಕೋಲಿಅಡಂಗ್ಮೆಅಡೈಘೆಆಫ್ರಿಹಿಲಿಅಘೆಮ್ಐನುಅಕ್ಕಾಡಿಯನ್ಅಲೆಯುಟ್ದಕ್ಷಿಣ ಅಲ್ಟಾಯ್ಪ" + + "್ರಾಚೀನ ಇಂಗ್ಲೀಷ್ಆಂಗಿಕಾಅರಾಮಿಕ್ಮಪುಚೆಅರಪಾಹೋಅರಾವಾಕ್ಅಸುಆಸ್ಟುರಿಯನ್ಅವಧಿಬಲೂಚಿಬಲ" + + "ಿನೀಸ್ಬಸಾಬೇಜಾಬೆಂಬಾಬೆನಪಶ್ಚಿಮ ಬಲೊಚಿಭೋಜಪುರಿಬಿಕೊಲ್ಬಿನಿಸಿಕ್ಸಿಕಾಬ್ರಜ್ಬೋಡೊಬುರಿ" + + "ಯಟ್ಬುಗಿನೀಸ್ಬ್ಲಿನ್ಕ್ಯಾಡ್ಡೋಕಾರಿಬ್ಅಟ್ಸಮ್ಸೆಬುಆನೋಚಿಗಾಚಿಬ್ಚಾಚಗಟಾಯ್ಚೂಕಿಸೆಮಾರಿ" + + "ಚಿನೂಕ್ ಜಾರ್ಗೋನ್ಚೋಕ್ಟಾವ್ಚಿಪೆವ್ಯಾನ್ಚೆರೋಕೀಚೀಯೆನ್ನೇಸೊರಾನಿ ಕುರ್ದಿಷ್ಕೊಪ್ಟಿಕ್" + + "ಕ್ರಿಮೀಯನ್ ಟರ್ಕಿಷ್ಸೆಸೆಲ್ವಾ ಕ್ರಯೋಲ್ ಫ್ರೆಂಚ್ಕಶುಬಿಯನ್ಡಕೋಟಾದರ್ಗ್ವಾಟೈಟಡೆಲಾವೇ" + + "ರ್ಸ್ಲೇವ್ಡೋಗ್ರಿಬ್ಡಿಂಕಾಜರ್ಮಾಡೋಗ್ರಿಲೋವರ್ ಸೋರ್ಬಿಯನ್ಡುವಾಲಾಮಧ್ಯ ಡಚ್ಜೊಲ-ಫೊನ್ಯ" + + "ಿಡ್ಯೂಲಾಡಜಾಗಎಂಬುಎಫಿಕ್ಪ್ರಾಚೀನ ಈಜಿಪ್ಟಿಯನ್ಎಕಾಜುಕ್ಎಲಾಮೈಟ್ಮಧ್ಯ ಇಂಗ್ಲೀಷ್ಇವಾಂಡ" + + "ೋಫಾಂಗ್ಫಿಲಿಪಿನೊಫೋನ್ಮಧ್ಯ ಫ್ರೆಂಚ್ಪ್ರಾಚೀನ ಫ್ರೆಂಚ್ಉತ್ತರ ಫ್ರಿಸಿಯನ್ಪೂರ್ವ ಫ್ರಿ" + + "ಸಿಯನ್ಫ್ರಿಯುಲಿಯನ್ಗಗಗೌಜ್ಗಾನ್ ಚೀನೀಸ್ಗಾಯೋಗ್ಬಾಯಾಗೀಝ್ಗಿಲ್ಬರ್ಟೀಸ್ಮಧ್ಯ ಹೈ ಜರ್ಮ" + + "ನ್ಪ್ರಾಚೀನ ಹೈ ಜರ್ಮನ್ಗೊಂಡಿಗೊರೊಂಟಾಲೋಗೋಥಿಕ್ಗ್ರೇಬೋಪ್ರಾಚೀನ ಗ್ರೀಕ್ಸ್ವಿಸ್ ಜರ್ಮ" + + "ನ್ಗುಸಿಗ್ವಿಚ್\u200cಇನ್ಹೈಡಾಹಕ್ಹವಾಯಿಯನ್ಹಿಲಿಗೇನನ್ಹಿಟ್ಟಿಟೆಮೋಂಗ್ಅಪ್ಪರ್ ಸರ್ಬಿ" + + "ಯನ್ಶಯಾಂಗ್ ಚೀನೀಸೇಹೂಪಾಇಬಾನ್ಇಬಿಬಿಯೋಇಲ್ಲಿಕೋಇಂಗುಷ್ಲೊಜ್ಬಾನ್ನೊಂಬಾಮ್ಯಕಮೆಜೂಡಿಯೋ" + + "-ಪರ್ಶಿಯನ್ಜೂಡಿಯೋ-ಅರೇಬಿಕ್ಕಾರಾ-ಕಲ್ಪಾಕ್ಕಬೈಲ್ಕಚಿನ್ಜ್ಜುಕಂಬಾಕಾವಿಕಬರ್ಡಿಯನ್ಟ್ಯಾಪ್" + + "ಮ್ಯಾಕೊಂಡ್ಕಬುವೆರ್ಡಿಯನುಕೋರೋಖಾಸಿಖೋಟಾನೀಸ್ಕೊಯ್ರ ಚೀನಿಕಾಕೊಕಲೆಂಜಿನ್ಕಿಂಬುಂಡುಕೋಮ" + + "ಿ-ಪರ್ಮ್ಯಕ್ಕೊಂಕಣಿಕೊಸರಿಯನ್ಕಪೆಲ್ಲೆಕರಚಯ್-ಬಲ್ಕಾರ್ಕರೇಲಿಯನ್ಕುರುಖ್ಶಂಬಲಬಫಿಯಕಲೊಗ" + + "್ನಿಯನ್ಕುಮೈಕ್ಕುಟೇನಾಯ್ಲ್ಯಾಡಿನೋಲಾಂಗಿಲಹಂಡಾಲಂಬಾಲೆಜ್ಘಿಯನ್ಲಕೊಟಮೊಂಗೋಲೋಝಿಉತ್ತರ " + + "ಲೂರಿಲುಬ-ಲುಲಾಲೂಯಿಸೆನೋಲುಂಡಾಲುವೋಮಿಝೋಲುಯಿಯಮದುರೀಸ್ಮಗಾಹಿಮೈಥಿಲಿಮಕಾಸರ್ಮಂಡಿಂಗೊಮ" + + "ಸಾಯ್ಮೋಕ್ಷಮಂದಾರ್ಮೆಂಡೆಮೆರುಮೊರಿಸನ್ಮಧ್ಯ ಐರಿಷ್ಮ್ಯಖುವಾ- ಮೀಟ್ಟೊಮೆಟಾಮಿಕ್\u200c" + + "ಮ್ಯಾಕ್ಮಿನಂಗ್\u200cಕಬಾವುಮಂಚುಮಣಿಪುರಿಮೊಹಾವ್ಕ್ಮೊಸ್ಸಿಮುಂಡಂಗ್ಬಹುಸಂಖ್ಯೆಯ ಭಾಷೆ" + + "ಗಳುಕ್ರೀಕ್ಮಿರಾಂಡೀಸ್ಮಾರ್ವಾಡಿಎರ್ಝ್ಯಾಮಜಂದೆರಾನಿನಾನ್ನಿಯಾಪೊಲಿಟನ್ನಮಲೋ ಜರ್ಮನ್ನೇ" + + "ವಾರೀನಿಯಾಸ್ನಿಯುವನ್ಖ್ವಾಸಿಯೊನಿಂಬೂನ್ನೊಗಾಯ್ಪ್ರಾಚೀನ ನೋರ್ಸ್ಎನ್\u200cಕೋಉತ್ತರ ಸ" + + "ೋಥೋನೂಯರ್ಶಾಸ್ತ್ರೀಯ ನೇವಾರಿನ್ಯಾಮ್\u200cವೆಂಜಿನ್ಯಾನ್\u200cಕೋಲೆನ್ಯೋರೋಜೀಮಾಓಸಾ" + + "ಜ್ಒಟ್ಟೋಮನ್ ತುರ್ಕಿಷ್ಪಂಗಾಸಿನನ್ಪಹ್ಲವಿಪಂಪಾಂಗಾಪಾಪಿಯಮೆಂಟೋಪಲುಆನ್ನೈಜೀರಿಯನ್ ಪಿಡ" + + "್ಗಿನ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಫೀನಿಷಿಯನ್ಪೋನ್\u200c\u200cಪಿಯನ್ಪ್ರಶಿಯನ್ಪ್ರಾಚೀನ ಪ್ರ" + + "ೊವೆನ್ಶಿಯಲ್ಕಿಷೆರಾಜಸ್ಥಾನಿರಾಪಾನುಯಿರಾರೋಟೊಂಗನ್ರೊಂಬೊರೋಮಾನಿಅರೋಮಾನಿಯನ್ರುವಸಂಡಾವ" + + "ೇಸಖಾಸಮರಿಟನ್ ಅರಾಮಿಕ್ಸಂಬುರುಸಸಾಕ್ಸಂತಾಲಿನಂಬೇಸಂಗುಸಿಸಿಲಿಯನ್ಸ್ಕೋಟ್ಸ್ದಕ್ಷಿಣ ಕು" + + "ರ್ದಿಶ್ಸೆನಸೆಲ್ಕಪ್ಕೊಯ್ರಬೊರೊ ಸೆನ್ನಿಪ್ರಾಚೀನ ಐರಿಷ್ಟಷೆಲ್\u200dಹಿಟ್ಶಾನ್ಸಿಡಾಮೋ" + + "ದಕ್ಷಿಣ ಸಾಮಿಲೂಲ್ ಸಾಮಿಇನರಿ ಸಾಮಿಸ್ಕೋಟ್ ಸಾಮಿಸೋನಿಂಕೆಸೋಗ್ಡಿಯನ್ಸ್ರಾನನ್ ಟೋಂಗೋಸ" + + "ೇರೇರ್ಸಹೊಸುಕುಮಾಸುಸುಸುಮೇರಿಯನ್ಕೊಮೊರಿಯನ್ಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ಸಿರಿಯಕ್ಟಿಮ್ನೆಟೆಸೊ" + + "ಟೆರೆನೋಟೇಟಮ್ಟೈಗ್ರೆಟಿವ್ಟೊಕೆಲಾವ್ಕ್ಲಿಂಗನ್ಟ್ಲಿಂಗಿಟ್ಟಮಾಷೆಕ್ನ್ಯಾಸಾ ಟೋಂಗಾಟೋಕ್ " + + "ಪಿಸಿನ್ಟರೊಕೊಸಿಂಶಿಯನ್ತುಂಬುಕಾಟುವಾಲುಟಸವಕ್ಟುವಿನಿಯನ್ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್ಉಡ್" + + "\u200cಮುರ್ಟ್ಉಗಾರಿಟಿಕ್ಉಂಬುಂಡುರೂಟ್ವಾಯಿವೋಟಿಕ್ವುಂಜೊವಾಲ್ಸರ್ವಲಾಯ್ತಾವರಾಯ್ವಾಷೋವಾ" + + "ರ್ಲ್\u200cಪಿರಿವುಕಲ್ಮೈಕ್ಸೊಗಯಾವೊಯಪೀಸೆಯಾಂಗ್ಬೆನ್ಯೆಂಬಾಕ್ಯಾಂಟನೀಸ್ಝೋಪೊಟೆಕ್ಬ್ಲ" + + "ಿಸ್ಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿ" + + "ಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರಮಾಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ಆಸ್" + + "ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್" + + "ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಕೆ" + + "ನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್ ಫ್ರೆಂಚ್ಲೋ ಸ್ಯಾಕ್ಸನ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ" + + "್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮಾಲ್ಡೇವಿಯನ್ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಕಾಂಗೊ ಸ್ವಹಿಲಿಸರಳೀಕೃತ " + + "ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್" + +var knLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000f, 0x002d, 0x0045, 0x0066, 0x0075, 0x008a, 0x00a2, 0x00b7, 0x00d2, 0x00e4, 0x00f9, 0x011a, 0x012f, 0x014d, 0x016b, @@ -17177,125 +20444,125 @@ var knLangIdx = []uint16{ // 610 elements 0x02d1, 0x02e3, 0x02fb, 0x0304, 0x0316, 0x032e, 0x034c, 0x036a, 0x0388, 0x039a, 0x03b2, 0x03c4, 0x03dc, 0x03f1, 0x0400, 0x0415, 0x0443, 0x0452, 0x0483, 0x04a4, 0x04b6, 0x04cb, 0x04e6, 0x04f2, - 0x050a, 0x0519, 0x0532, 0x0553, 0x0568, 0x0583, 0x05a1, 0x05b3, + 0x050a, 0x0519, 0x0532, 0x0553, 0x0581, 0x059c, 0x05ba, 0x05cc, // Entry 40 - 7F - 0x05da, 0x05fb, 0x0619, 0x0628, 0x0644, 0x065f, 0x0668, 0x0686, - 0x069e, 0x06bf, 0x06d4, 0x06ec, 0x0707, 0x0716, 0x0728, 0x0749, - 0x0755, 0x0776, 0x0785, 0x0794, 0x07a9, 0x07b8, 0x07d0, 0x07e8, - 0x07f4, 0x080c, 0x0824, 0x083c, 0x085a, 0x0869, 0x0887, 0x0899, - 0x08a5, 0x08c6, 0x08e5, 0x08fd, 0x090f, 0x0930, 0x0942, 0x0963, - 0x0975, 0x0990, 0x099f, 0x09ab, 0x09c3, 0x09d8, 0x09e4, 0x0a06, - 0x0a18, 0x0a27, 0x0a30, 0x0a6a, 0x0aa1, 0x0ac6, 0x0ad5, 0x0aea, - 0x0afc, 0x0b11, 0x0b20, 0x0b2f, 0x0b4a, 0x0b5c, 0x0b68, 0x0b7a, + 0x05f3, 0x0614, 0x0632, 0x0641, 0x065d, 0x0678, 0x0681, 0x069f, + 0x06b7, 0x06d8, 0x06ed, 0x0705, 0x0720, 0x072f, 0x0741, 0x0762, + 0x076e, 0x078f, 0x079e, 0x07ad, 0x07c2, 0x07d1, 0x07e9, 0x0801, + 0x080d, 0x0825, 0x083d, 0x0855, 0x0879, 0x0888, 0x08a6, 0x08b8, + 0x08c4, 0x08e5, 0x0904, 0x091c, 0x092e, 0x094f, 0x0961, 0x0982, + 0x0994, 0x09af, 0x09be, 0x09ca, 0x09e2, 0x09f7, 0x0a03, 0x0a25, + 0x0a37, 0x0a46, 0x0a4f, 0x0a8f, 0x0ac6, 0x0aeb, 0x0afa, 0x0b0f, + 0x0b21, 0x0b36, 0x0b45, 0x0b54, 0x0b6f, 0x0b81, 0x0b8d, 0x0b9f, // Entry 80 - BF - 0x0b8c, 0x0baa, 0x0bc2, 0x0bda, 0x0be9, 0x0c04, 0x0c16, 0x0c3d, - 0x0c52, 0x0c70, 0x0c7f, 0x0c9b, 0x0caa, 0x0cb9, 0x0cd1, 0x0cf2, - 0x0d04, 0x0d10, 0x0d22, 0x0d40, 0x0d58, 0x0d6a, 0x0d89, 0x0da4, - 0x0dbc, 0x0dd1, 0x0de0, 0x0df2, 0x0e04, 0x0e10, 0x0e2e, 0x0e4c, - 0x0e5e, 0x0e70, 0x0e85, 0x0e94, 0x0ea3, 0x0ebb, 0x0ecd, 0x0eeb, - 0x0efa, 0x0f0f, 0x0f1e, 0x0f42, 0x0f5a, 0x0f6c, 0x0f7e, 0x0f8d, - 0x0fa2, 0x0fb4, 0x0fc9, 0x0fdb, 0x0fe7, 0x0ffc, 0x100b, 0x1023, - 0x1032, 0x1032, 0x104d, 0x105c, 0x1065, 0x1083, 0x1083, 0x1098, + 0x0bb1, 0x0bcf, 0x0be7, 0x0bff, 0x0c0e, 0x0c29, 0x0c3b, 0x0c62, + 0x0c77, 0x0c95, 0x0ca4, 0x0cc0, 0x0ccf, 0x0cde, 0x0cf6, 0x0d17, + 0x0d29, 0x0d35, 0x0d47, 0x0d65, 0x0d7d, 0x0d8f, 0x0dae, 0x0dc9, + 0x0de1, 0x0df6, 0x0e05, 0x0e17, 0x0e29, 0x0e35, 0x0e53, 0x0e71, + 0x0e83, 0x0e95, 0x0eaa, 0x0eb9, 0x0ec8, 0x0ee0, 0x0ef2, 0x0f10, + 0x0f1f, 0x0f34, 0x0f43, 0x0f67, 0x0f7f, 0x0f91, 0x0fa3, 0x0fb2, + 0x0fca, 0x0fdc, 0x0ff1, 0x1003, 0x100f, 0x1024, 0x1033, 0x1048, + 0x1057, 0x1057, 0x1072, 0x1081, 0x108a, 0x10a8, 0x10a8, 0x10bd, // Entry C0 - FF - 0x1098, 0x10c0, 0x10ee, 0x1100, 0x1115, 0x1124, 0x1124, 0x1136, - 0x1136, 0x114b, 0x114b, 0x114b, 0x1154, 0x1154, 0x1172, 0x1172, - 0x117e, 0x118d, 0x11a2, 0x11a2, 0x11ab, 0x11ab, 0x11ab, 0x11ab, - 0x11b7, 0x11c6, 0x11c6, 0x11cf, 0x11cf, 0x11cf, 0x11f1, 0x1206, - 0x1218, 0x1224, 0x1224, 0x1224, 0x123c, 0x123c, 0x123c, 0x124e, - 0x124e, 0x125a, 0x125a, 0x126f, 0x1287, 0x1287, 0x1299, 0x1299, - 0x12b1, 0x12c3, 0x12c3, 0x12d5, 0x12ea, 0x12f6, 0x1308, 0x131a, - 0x132c, 0x1338, 0x1363, 0x137b, 0x1399, 0x13ab, 0x13c3, 0x13ee, + 0x10bd, 0x10e5, 0x1113, 0x1125, 0x113a, 0x1149, 0x1149, 0x115b, + 0x115b, 0x115b, 0x1170, 0x1170, 0x1170, 0x1179, 0x1179, 0x1197, + 0x1197, 0x11a3, 0x11b2, 0x11c7, 0x11c7, 0x11d0, 0x11d0, 0x11d0, + 0x11d0, 0x11dc, 0x11eb, 0x11eb, 0x11f4, 0x11f4, 0x11f4, 0x1216, + 0x122b, 0x123d, 0x1249, 0x1249, 0x1249, 0x1261, 0x1261, 0x1261, + 0x1270, 0x1270, 0x127c, 0x127c, 0x1291, 0x12a9, 0x12a9, 0x12bb, + 0x12bb, 0x12d3, 0x12e5, 0x12e5, 0x12f7, 0x130c, 0x1318, 0x132a, + 0x133c, 0x134e, 0x135a, 0x1385, 0x139d, 0x13bb, 0x13cd, 0x13e5, // Entry 100 - 13F - 0x1406, 0x1406, 0x1437, 0x144f, 0x145b, 0x1470, 0x1479, 0x1491, - 0x14a3, 0x14bb, 0x14ca, 0x14d9, 0x14eb, 0x1516, 0x1516, 0x1528, - 0x153e, 0x155a, 0x156c, 0x156c, 0x1578, 0x1587, 0x1587, 0x15bb, - 0x15d0, 0x15e5, 0x160a, 0x160a, 0x161c, 0x161c, 0x162b, 0x1643, - 0x1643, 0x164f, 0x164f, 0x1671, 0x169c, 0x169c, 0x16c7, 0x16f2, - 0x1713, 0x1716, 0x1725, 0x1725, 0x1731, 0x1743, 0x1743, 0x174f, - 0x1770, 0x1770, 0x1796, 0x17c5, 0x17c5, 0x17d4, 0x17ef, 0x1801, - 0x1813, 0x183b, 0x1860, 0x1860, 0x1860, 0x186c, 0x188a, 0x1896, + 0x1410, 0x1428, 0x1428, 0x1459, 0x149d, 0x14b5, 0x14c4, 0x14d9, + 0x14e2, 0x14fa, 0x150c, 0x1524, 0x1533, 0x1542, 0x1554, 0x157f, + 0x157f, 0x1591, 0x15a7, 0x15c3, 0x15d5, 0x15e1, 0x15ed, 0x15fc, + 0x15fc, 0x1630, 0x1645, 0x165a, 0x167f, 0x167f, 0x1691, 0x1691, + 0x16a0, 0x16b8, 0x16b8, 0x16c4, 0x16c4, 0x16e6, 0x1711, 0x1711, + 0x173c, 0x1767, 0x1788, 0x178b, 0x179a, 0x17b9, 0x17c5, 0x17d7, + 0x17d7, 0x17e3, 0x1804, 0x1804, 0x182a, 0x1859, 0x1859, 0x1868, + 0x1883, 0x1895, 0x18a7, 0x18cf, 0x18f4, 0x18f4, 0x18f4, 0x1900, // Entry 140 - 17F - 0x1896, 0x18ae, 0x18ae, 0x18c9, 0x18e1, 0x18f0, 0x191b, 0x191b, - 0x1927, 0x1936, 0x1936, 0x194b, 0x195d, 0x195d, 0x195d, 0x1975, - 0x1984, 0x1996, 0x19c1, 0x19e9, 0x19e9, 0x1a0b, 0x1a1a, 0x1a29, - 0x1a35, 0x1a41, 0x1a4d, 0x1a68, 0x1a68, 0x1a7a, 0x1a95, 0x1ab9, - 0x1ab9, 0x1ac5, 0x1ac5, 0x1ad1, 0x1ae9, 0x1b05, 0x1b05, 0x1b05, - 0x1b05, 0x1b1d, 0x1b35, 0x1b5a, 0x1b6c, 0x1b84, 0x1b99, 0x1bbe, - 0x1bbe, 0x1bbe, 0x1bd6, 0x1be8, 0x1bf4, 0x1c00, 0x1c00, 0x1c12, - 0x1c2a, 0x1c3c, 0x1c4b, 0x1c5a, 0x1c66, 0x1c81, 0x1c81, 0x1c81, + 0x191e, 0x192a, 0x1933, 0x194b, 0x194b, 0x1966, 0x197e, 0x198d, + 0x19b8, 0x19dd, 0x19e9, 0x19f8, 0x1a0d, 0x1a22, 0x1a34, 0x1a34, + 0x1a34, 0x1a4c, 0x1a5b, 0x1a6d, 0x1a98, 0x1ac0, 0x1ac0, 0x1ae2, + 0x1af1, 0x1b00, 0x1b0c, 0x1b18, 0x1b24, 0x1b3f, 0x1b3f, 0x1b51, + 0x1b6c, 0x1b90, 0x1b90, 0x1b9c, 0x1b9c, 0x1ba8, 0x1bc0, 0x1bdc, + 0x1bdc, 0x1bdc, 0x1be8, 0x1c00, 0x1c18, 0x1c3d, 0x1c4f, 0x1c67, + 0x1c7c, 0x1ca1, 0x1ca1, 0x1ca1, 0x1cb9, 0x1ccb, 0x1cd7, 0x1ce3, + 0x1d01, 0x1d13, 0x1d2b, 0x1d43, 0x1d52, 0x1d61, 0x1d6d, 0x1d88, // Entry 180 - 1BF - 0x1c81, 0x1c8d, 0x1c8d, 0x1c9c, 0x1ca8, 0x1ca8, 0x1ca8, 0x1cbe, - 0x1cd6, 0x1ce5, 0x1cf1, 0x1d03, 0x1d12, 0x1d12, 0x1d12, 0x1d27, - 0x1d27, 0x1d36, 0x1d48, 0x1d5a, 0x1d6f, 0x1d7e, 0x1d7e, 0x1d8d, - 0x1d9f, 0x1dae, 0x1dba, 0x1dcf, 0x1deb, 0x1e14, 0x1e20, 0x1e41, - 0x1e65, 0x1e71, 0x1e86, 0x1e9e, 0x1eb0, 0x1eb0, 0x1ec5, 0x1ef9, - 0x1f0b, 0x1f26, 0x1f3e, 0x1f3e, 0x1f3e, 0x1f56, 0x1f56, 0x1f56, - 0x1f77, 0x1f7d, 0x1f96, 0x1fa8, 0x1fba, 0x1fcf, 0x1fcf, 0x1fe7, - 0x1fe7, 0x1ff9, 0x2021, 0x2021, 0x2033, 0x204f, 0x205e, 0x208c, + 0x1d88, 0x1d88, 0x1d88, 0x1d94, 0x1d94, 0x1da3, 0x1daf, 0x1dcb, + 0x1dcb, 0x1de1, 0x1df9, 0x1e08, 0x1e14, 0x1e20, 0x1e2f, 0x1e2f, + 0x1e2f, 0x1e44, 0x1e44, 0x1e53, 0x1e65, 0x1e77, 0x1e8c, 0x1e9b, + 0x1e9b, 0x1eaa, 0x1ebc, 0x1ecb, 0x1ed7, 0x1eec, 0x1f08, 0x1f31, + 0x1f3d, 0x1f5e, 0x1f82, 0x1f8e, 0x1fa3, 0x1fbb, 0x1fcd, 0x1fcd, + 0x1fe2, 0x2016, 0x2028, 0x2043, 0x205b, 0x205b, 0x205b, 0x2070, + 0x208b, 0x2097, 0x20b8, 0x20be, 0x20d7, 0x20e9, 0x20fb, 0x2110, + 0x2110, 0x2128, 0x213d, 0x214f, 0x2177, 0x2177, 0x2189, 0x21a5, // Entry 1C0 - 1FF - 0x20b0, 0x20d1, 0x20e3, 0x20ef, 0x20fe, 0x212f, 0x214a, 0x215c, - 0x2171, 0x218f, 0x21a1, 0x21a1, 0x21a1, 0x21a1, 0x21cf, 0x21cf, - 0x21ea, 0x21ea, 0x21ea, 0x220b, 0x220b, 0x2248, 0x2254, 0x2254, - 0x2272, 0x228a, 0x22a8, 0x22a8, 0x22a8, 0x22b7, 0x22c9, 0x22c9, - 0x22c9, 0x22c9, 0x22e7, 0x22f0, 0x2302, 0x2314, 0x233f, 0x2351, - 0x2360, 0x2372, 0x2372, 0x2372, 0x237e, 0x2399, 0x23b1, 0x23b1, - 0x23dc, 0x23dc, 0x23e5, 0x23e5, 0x23fa, 0x2428, 0x244d, 0x244d, - 0x246b, 0x2477, 0x2477, 0x2489, 0x2489, 0x2489, 0x24a8, 0x24c1, + 0x21b4, 0x21e2, 0x2206, 0x2227, 0x2239, 0x2245, 0x2254, 0x2285, + 0x22a0, 0x22b2, 0x22c7, 0x22e5, 0x22f7, 0x22f7, 0x232b, 0x232b, + 0x232b, 0x2359, 0x2359, 0x2374, 0x2374, 0x2374, 0x2395, 0x23ad, + 0x23ea, 0x23f6, 0x23f6, 0x2411, 0x2429, 0x2447, 0x2447, 0x2447, + 0x2456, 0x2468, 0x2468, 0x2468, 0x2468, 0x2486, 0x248f, 0x24a1, + 0x24aa, 0x24d5, 0x24e7, 0x24f6, 0x2508, 0x2508, 0x2514, 0x2520, + 0x253b, 0x2553, 0x2553, 0x257e, 0x257e, 0x2587, 0x2587, 0x259c, + 0x25ca, 0x25ef, 0x25ef, 0x260d, 0x2619, 0x2619, 0x262b, 0x262b, // Entry 200 - 23F - 0x24da, 0x24f9, 0x250e, 0x2529, 0x254e, 0x2560, 0x2560, 0x2560, - 0x2572, 0x257e, 0x2599, 0x2599, 0x25ca, 0x25df, 0x25df, 0x25df, - 0x25f1, 0x25fd, 0x260f, 0x261e, 0x2630, 0x263c, 0x2654, 0x2654, - 0x266c, 0x2687, 0x2687, 0x269c, 0x26be, 0x26dd, 0x26dd, 0x26dd, - 0x26dd, 0x26f5, 0x26f5, 0x270a, 0x271c, 0x272b, 0x2746, 0x277b, - 0x2799, 0x27b4, 0x27c9, 0x27d5, 0x27e1, 0x27e1, 0x27e1, 0x27e1, - 0x27e1, 0x27f3, 0x27f3, 0x2802, 0x2802, 0x2811, 0x2820, 0x282c, - 0x284d, 0x284d, 0x2865, 0x2865, 0x286e, 0x2877, 0x2886, 0x2886, + 0x262b, 0x264a, 0x2663, 0x267c, 0x269b, 0x26b0, 0x26cb, 0x26f0, + 0x2702, 0x270b, 0x270b, 0x271d, 0x2729, 0x2744, 0x275f, 0x2790, + 0x27a5, 0x27a5, 0x27a5, 0x27b7, 0x27c3, 0x27d5, 0x27e4, 0x27f6, + 0x2802, 0x281a, 0x281a, 0x2832, 0x284d, 0x284d, 0x2862, 0x2884, + 0x28a3, 0x28a3, 0x28b2, 0x28b2, 0x28ca, 0x28ca, 0x28df, 0x28f1, + 0x2900, 0x291b, 0x2950, 0x296e, 0x2989, 0x299e, 0x29aa, 0x29b6, + 0x29b6, 0x29b6, 0x29b6, 0x29b6, 0x29c8, 0x29c8, 0x29d7, 0x29ec, + 0x2a01, 0x2a10, 0x2a1c, 0x2a3d, 0x2a43, 0x2a58, 0x2a58, 0x2a61, // Entry 240 - 27F - 0x2886, 0x2886, 0x2886, 0x289e, 0x28cb, 0x28cb, 0x28dd, 0x2930, - 0x293c, 0x2989, 0x2995, 0x29d6, 0x29d6, 0x2a07, 0x2a33, 0x2a70, - 0x2aa4, 0x2ad5, 0x2b06, 0x2b56, 0x2b90, 0x2bca, 0x2bca, 0x2bfb, - 0x2c23, 0x2c23, 0x2c3b, 0x2c7b, 0x2cb5, 0x2cd6, 0x2d07, 0x2d2c, - 0x2d54, 0x2d88, -} // Size: 1244 bytes - -var koLangStr string = "" + // Size: 7007 bytes + 0x2a6d, 0x2a7c, 0x2a97, 0x2aa6, 0x2aa6, 0x2ac4, 0x2adc, 0x2b06, + 0x2b06, 0x2b18, 0x2b6b, 0x2b77, 0x2bc4, 0x2bd0, 0x2c11, 0x2c11, + 0x2c42, 0x2c6e, 0x2cab, 0x2cdf, 0x2d10, 0x2d41, 0x2d91, 0x2dcb, + 0x2e05, 0x2e05, 0x2e36, 0x2e5e, 0x2e80, 0x2e98, 0x2ed8, 0x2f12, + 0x2f33, 0x2f64, 0x2f89, 0x2fb1, 0x2fe5, +} // Size: 1250 bytes + +const koLangStr string = "" + // Size: 7030 bytes "아파르어압카즈어아베스타어아프리칸스어아칸어암하라어아라곤어아랍어아삼어아바릭어아이마라어아제르바이잔어바슈키르어벨라루스어불가리아어비슬라마어" + "밤바라어벵골어티베트어브르타뉴어보스니아어카탈로니아어체첸어차모로어코르시카어크리어체코어교회 슬라브어추바시어웨일스어덴마크어독일어디베히" + - "어종카어에웨어그리스어영어에스페란토어스페인어에스토니아어바스크어페르시아어풀라어핀란드어피지어페로어프랑스어서프리지아어아일랜드어스코틀랜" + - "드 게일어갈리시아어과라니어구자라트어맹크스어하우사어히브리어힌디어히리 모투어크로아티아어아이티어헝가리어아르메니아어헤레로어인테르링구아" + - " (국제보조어협회)인도네시아어인테르링구에이그보어쓰촨 이어이누피아크어이도어아이슬란드어이탈리아어이눅티투트어일본어자바어조지아어콩고어키쿠" + - "유어쿠안야마어카자흐어그린란드어캄보디아어칸나다어한국어칸누리어카슈미르어쿠르드어코미어콘월어키르기스어라틴어룩셈부르크어간다어림버거어링갈" + - "라어라오어리투아니아어루바-카탄가어라트비아어말라가시어마셜제도어마오리어마케도니아어말라얄람어몽고어마라티어말레이어몰타어버마어나우루어북" + - "부 은데벨레어네팔어느동가어네덜란드어노르웨이어(니노르스크)노르웨이어(보크말)남부 은데벨레어나바호어니안자어; 치츄어; 츄어오크어오" + - "지브웨이어오로모어오리야어오세트어펀잡어팔리어폴란드어파슈토어포르투갈어케추아어로만시어룬디어루마니아어러시아어르완다어산스크리트어사르디니" + - "아어신디어북부 사미어산고어스리랑카어슬로바키아어슬로베니아어사모아어쇼나어소말리아어알바니아어세르비아어시스와티어소토어 (남부)순다어스" + - "웨덴어스와힐리어타밀어텔루구어타지크어태국어티그리냐어투르크멘어세츠와나어통가어터키어총가어타타르어타히티어위구르어우크라이나어우르두어우즈" + - "베크어벤다어베트남어볼라퓌크어왈론어월로프어코사어이디시어요루바어주앙어중국어줄루어아체어아콜리어아당메어아닥헤어튀니지 아랍어아프리히리어" + - "아그햄어아이누어아카드어알류트어남부 알타이어고대 영어앙가어아람어아라우칸어아라파호어알제리 아랍어아라와크어모로코 아랍어이집트 아랍어" + - "아수어아스투리아어아와히어발루치어발리어바사어바문어고말라어베자어벰바어베나어바푸트어서부 발로치어호즈푸리어비콜어비니어콤어식시카어브라지" + - "어브라후이어보도어아쿠즈어부리아타부기어불루어브린어메둠바어카도어카리브어카유가어앗삼어세부아노어치가어치브차어차가타이어추크어마리어치누크" + - "어와 영어 프랑스어의 혼성어촉토어치페우얀체로키어샤이엔어소라니 쿠르드어콥트어크리민 터키어; 크리민 타타르어카슈비아어다코타어다르그" + - "와어타이타어델라웨어어슬라브어도그리브어딩카어자르마어도그리어저지 소르비아어두알라어중세 네덜란드어졸라 포니어드율라어다장가어엠부어이픽" + - "어이집트어 (고대)이카죽어엘람어영어, 중세이원도어팡그어필리핀어폰어중세 프랑스어고대 프랑스어북부 프리슬란드어동부 프리슬란드어프리" + - "우리안어가어가가우스어가요어그바야어조로아스터 다리어게이즈어키리바시어길라키어중세 고지 독일어고대 고지 독일어고아 콘칸어곤디어고론탈" + - "로어고트어게르보어그리스어, 고대독일어(스위스)구시어그위친어하이다어하와이어피지 힌디어헤리가뇬어하타이트어히몸어고지 소르비아어후파어" + - "이반어이비비오어이로코어인귀시어로반어응곰바어마차메어유대-페르시아어유대-아라비아어카라칼파크어커바일어카친어까꼬토끄어캄바어카위어카바르" + - "디어카넴부어티얍어마콘데어크리올어코로어카시어호탄어코이라 친니어코와르어카코어칼렌진어킴분두어코미페르먀크어코카니어코스라이엔어크펠레어카" + - "라챠이-발카르어카렐리야어쿠르크어샴발라어바피아어콜로그니안어쿠믹어쿠테네어라디노어랑기어라한다어람바어레즈기안어링구아 프랑카 노바라코타" + - "어몽구어로지어북부 루리어루바-룰루아어루이세노어룬다어루오어루샤이어루야어마두라어마파어마가히마이틸리마카사어만딩고어마사이어마바어모크샤" + - "어만다르어멘데어메루어모리스얀어아일랜드어, 중세마크후와-메토어메타어미크맥어미낭카바우만주어마니푸리어모호크어모시어서부 마리어문당어다" + - "중 언어크리크어미란데어마르와리어미예네어엘즈야어마잔데라니어나폴리어나마어저지 독일어네와르어니아스어니웨언어크와시오어느기엠본어노가이어" + - "노르웨이, 고대응코어소토어 (북부)누에르어네와르어 (고전)니암웨지어니안콜어뉴로어느지마어오세이지어터키어, 오스만판가시난어팔레비어" + - "팜팡가어파피아먼토어파라우안어고대 페르시아어페니키아어폰틱어폼페이어고대 프로방스어키체어라자스탄어라파뉴이라로통가어롬보어집시어루신어아" + - "로마니아어르와어산다웨어야큐트어사마리아 아랍어삼부루어사사크어산탈리어느감바이어상구어시칠리아어스코틀랜드어남부 쿠르드어세네카어세나어셀" + - "쿠프어코이야보로 세니어아일랜드, 고대타셸히트어샨어차디언 아라비아어시다모어남부 사미어룰레 사미어이나리 사미어스콜트 사미어소닌케어" + - "소그디엔어스라난 통가어세레르어사호어수쿠마족어수수어수메르어코모로어시리아어 (고전)시리아어팀니어테조어테레노어테툼어티그레어티비어토켈" + - "라우제도어차후르어클링온어틀링깃족어탈리쉬어타마섹어통가어 (니아살랜드)토크 피신어타로코어트심시안어툼부카어투발루어타사와크어투비니안어" + - "중앙 모로코 타마지트어우드말트어유가리틱어윤번두어어근바이어보틱어분조어월저어와라모어와라이어와쇼어왈피리어칼미크어소가어야오족어얍페세어" + - "양본어옘바어사포테크어블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고지 독일어(스위스)" + - "영어(호주)플라망어몰도바어세르비아-크로아티아어콩고 스와힐리어" - -var koLangIdx = []uint16{ // 608 elements + "어종카어에웨어그리스어영어에스페란토어스페인어에스토니아어바스크어페르시아어풀라어핀란드어피지어페로어프랑스어서부 프리지아어아일랜드어스코" + + "틀랜드 게일어갈리시아어과라니어구자라트어맹크스어하우사어히브리어힌디어히리 모투어크로아티아어아이티어헝가리어아르메니아어헤레로어인터링구" + + "아인도네시아어인테르링구에이그보어쓰촨 이어이누피아크어이도어아이슬란드어이탈리아어이눅티투트어일본어자바어조지아어콩고어키쿠유어쿠안야마어" + + "카자흐어그린란드어크메르어칸나다어한국어칸누리어카슈미르어쿠르드어코미어콘월어키르기스어라틴어룩셈부르크어간다어림버거어링갈라어라오어리투아" + + "니아어루바-카탄가어라트비아어말라가시어마셜어마오리어마케도니아어말라얄람어몽골어마라티어말레이어몰타어버마어나우루어북부 은데벨레어네팔어" + + "느동가어네덜란드어노르웨이어(니노르스크)노르웨이어(보크말)남부 은데벨레어나바호어냔자어오크어오지브와어오로모어오리야어오세트어펀잡어팔" + + "리어폴란드어파슈토어포르투갈어케추아어로만시어룬디어루마니아어러시아어르완다어산스크리트어사르디니아어신디어북부 사미어산고어스리랑카어슬로" + + "바키아어슬로베니아어사모아어쇼나어소말리아어알바니아어세르비아어시스와티어남부 소토어순다어스웨덴어스와힐리어타밀어텔루구어타지크어태국어티" + + "그리냐어투르크멘어츠와나어통가어터키어총가어타타르어타히티어위구르어우크라이나어우르두어우즈베크어벤다어베트남어볼라퓌크어왈론어월로프어코사" + + "어이디시어요루바어주앙어중국어줄루어아체어아콜리어아당메어아디게어튀니지 아랍어아프리힐리어아그햄어아이누어아카드어알류트어남부 알타이어고" + + "대 영어앙가어아람어아라우칸어아라파호어알제리 아랍어아라와크어모로코 아랍어이집트 아랍어아수어아스투리아어아와히어발루치어발리어바사어바" + + "문어고말라어베자어벰바어베나어바푸트어서부 발로치어호즈푸리어비콜어비니어콤어식시카어브라지어브라후이어보도어아쿠즈어부리아타부기어불루어브" + + "린어메둠바어카도어카리브어카유가어앗삼어세부아노어치가어치브차어차가타이어추크어마리어치누크 자곤촉토어치페우얀체로키어샤이엔어소라니 쿠르" + + "드어콥트어크리민 터키어; 크리민 타타르어세이셸 크리올 프랑스어카슈비아어다코타어다르그와어타이타어델라웨어어슬라브어도그리브어딩카어자" + + "르마어도그리어저지 소르비아어두알라어중세 네덜란드어졸라 포니어드율라어다장가어엠부어이픽어고대 이집트어이카죽어엘람어중세 영어이원도어" + + "팡그어필리핀어폰어중세 프랑스어고대 프랑스어북부 프리지아어동부 프리슬란드어프리울리어가어가가우스어간어가요어그바야어조로아스터 다리어" + + "게이즈어키리바시어길라키어중세 고지 독일어고대 고지 독일어고아 콘칸어곤디어고론탈로어고트어게르보어고대 그리스어독일어(스위스)구시어" + + "그위친어하이다어하카어하와이어피지 힌디어헤리가뇬어하타이트어히몸어고지 소르비아어샹어후파어이반어이비비오어이로코어인귀시어로반어응곰바어" + + "마차메어유대-페르시아어유대-아라비아어카라칼파크어커바일어카친어까꼬토끄어캄바어카위어카바르디어카넴부어티얍어마콘데어크리올어코로어카시어" + + "호탄어코이라 친니어코와르어카코어칼렌진어킴분두어코미페르먀크어코카니어코스라이엔어크펠레어카라챠이-발카르어카렐리야어쿠르크어샴발라어바피" + + "아어콜로그니안어쿠믹어쿠테네어라디노어랑기어라한다어람바어레즈기안어링구아 프랑카 노바라코타어몽고어로지어북부 루리어루바-룰루아어루이세" + + "노어룬다어루오어루샤이어루야어마두라어마파어마가히어마이틸리어마카사어만딩고어마사이어마바어모크샤어만다르어멘데어메루어모리스얀어중세 아일" + + "랜드어마크후와-메토어메타어미크맥어미낭카바우어만주어마니푸리어모호크어모시어서부 마리어문당어다중 언어크리크어미란데어마르와리어미예네어" + + "엘즈야어마잔데라니어민난어나폴리어나마어저지 독일어네와르어니아스어니웨언어크와시오어느기엠본어노가이어고대 노르웨이어응코어북부 소토어누" + + "에르어고전 네와르어니암웨지어니안콜어뉴로어느지마어오세이지어오스만 터키어판가시난어팔레비어팜팡가어파피아먼토어팔라우어나이지리아 피진어" + + "고대 페르시아어페니키아어폰틱어폼페이어프러시아어고대 프로방스어키체어라자스탄어라파뉴이라로통가어롬보어집시어루신어아로마니아어르와어산다" + + "웨어야쿠트어사마리아 아랍어삼부루어사사크어산탈리어느감바이어상구어시칠리아어스코틀랜드어남부 쿠르드어세네카어세나어셀쿠프어코이야보로 세" + + "니어고대 아일랜드어타셸히트어샨어차디언 아라비아어시다모어남부 사미어룰레 사미어이나리 사미어스콜트 사미어소닌케어소그디엔어스라난 통" + + "가어세레르어사호어수쿠마어수수어수메르어코모로어고전 시리아어시리아어팀니어테조어테레노어테툼어티그레어티브어토켈라우제도어차후르어클링온어" + + "틀링깃족어탈리쉬어타마섹어니아사 통가어토크 피신어타로코어트심시안어툼부카어투발루어타사와크어투비니안어중앙 모로코 타마지트어우드말트어" + + "유가리틱어움분두어어근바이어보틱어분조어월저어월라이타어와라이어와쇼어왈피리어우어칼미크어소가어야오족어얍페세어양본어옘바어광둥어사포테크어" + + "블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고지 독일어(스위스)영어(호주)저지 색슨" + + "어플라망어몰도바어세르비아-크로아티아어콩고 스와힐리어" + +var koLangIdx = []uint16{ // 611 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0018, 0x0027, 0x0039, 0x0042, 0x004e, 0x005a, 0x0063, 0x006c, 0x0078, 0x0087, 0x009c, 0x00ab, 0x00ba, 0x00c9, @@ -17303,208 +20570,229 @@ var koLangIdx = []uint16{ // 608 elements 0x013e, 0x014d, 0x0156, 0x015f, 0x0172, 0x017e, 0x018a, 0x0196, 0x019f, 0x01ab, 0x01b4, 0x01bd, 0x01c9, 0x01cf, 0x01e1, 0x01ed, 0x01ff, 0x020b, 0x021a, 0x0223, 0x022f, 0x0238, 0x0241, 0x024d, - 0x025f, 0x026e, 0x0287, 0x0296, 0x02a2, 0x02b1, 0x02bd, 0x02c9, - 0x02d5, 0x02de, 0x02ee, 0x0300, 0x030c, 0x0318, 0x032a, 0x0336, + 0x0263, 0x0272, 0x028b, 0x029a, 0x02a6, 0x02b5, 0x02c1, 0x02cd, + 0x02d9, 0x02e2, 0x02f2, 0x0304, 0x0310, 0x031c, 0x032e, 0x033a, // Entry 40 - 7F - 0x0360, 0x0372, 0x0384, 0x0390, 0x039d, 0x03af, 0x03b8, 0x03ca, - 0x03d9, 0x03eb, 0x03f4, 0x03fd, 0x0409, 0x0412, 0x041e, 0x042d, - 0x0439, 0x0448, 0x0457, 0x0463, 0x046c, 0x0478, 0x0487, 0x0493, - 0x049c, 0x04a5, 0x04b4, 0x04bd, 0x04cf, 0x04d8, 0x04e4, 0x04f0, - 0x04f9, 0x050b, 0x051e, 0x052d, 0x053c, 0x054b, 0x0557, 0x0569, - 0x0578, 0x0581, 0x058d, 0x0599, 0x05a2, 0x05ab, 0x05b7, 0x05cd, - 0x05d6, 0x05e2, 0x05f1, 0x0611, 0x062b, 0x0641, 0x064d, 0x066c, - 0x0675, 0x0687, 0x0693, 0x069f, 0x06ab, 0x06b4, 0x06bd, 0x06c9, + 0x0349, 0x035b, 0x036d, 0x0379, 0x0386, 0x0398, 0x03a1, 0x03b3, + 0x03c2, 0x03d4, 0x03dd, 0x03e6, 0x03f2, 0x03fb, 0x0407, 0x0416, + 0x0422, 0x0431, 0x043d, 0x0449, 0x0452, 0x045e, 0x046d, 0x0479, + 0x0482, 0x048b, 0x049a, 0x04a3, 0x04b5, 0x04be, 0x04ca, 0x04d6, + 0x04df, 0x04f1, 0x0504, 0x0513, 0x0522, 0x052b, 0x0537, 0x0549, + 0x0558, 0x0561, 0x056d, 0x0579, 0x0582, 0x058b, 0x0597, 0x05ad, + 0x05b6, 0x05c2, 0x05d1, 0x05f1, 0x060b, 0x0621, 0x062d, 0x0636, + 0x063f, 0x064e, 0x065a, 0x0666, 0x0672, 0x067b, 0x0684, 0x0690, // Entry 80 - BF - 0x06d5, 0x06e4, 0x06f0, 0x06fc, 0x0705, 0x0714, 0x0720, 0x072c, - 0x073e, 0x0750, 0x0759, 0x0769, 0x0772, 0x0781, 0x0793, 0x07a5, - 0x07b1, 0x07ba, 0x07c9, 0x07d8, 0x07e7, 0x07f6, 0x0808, 0x0811, - 0x081d, 0x082c, 0x0835, 0x0841, 0x084d, 0x0856, 0x0865, 0x0874, - 0x0883, 0x088c, 0x0895, 0x089e, 0x08aa, 0x08b6, 0x08c2, 0x08d4, - 0x08e0, 0x08ef, 0x08f8, 0x0904, 0x0913, 0x091c, 0x0928, 0x0931, - 0x093d, 0x0949, 0x0952, 0x095b, 0x0964, 0x096d, 0x0979, 0x0985, - 0x0991, 0x09a4, 0x09b6, 0x09c2, 0x09ce, 0x09da, 0x09da, 0x09e6, + 0x069c, 0x06ab, 0x06b7, 0x06c3, 0x06cc, 0x06db, 0x06e7, 0x06f3, + 0x0705, 0x0717, 0x0720, 0x0730, 0x0739, 0x0748, 0x075a, 0x076c, + 0x0778, 0x0781, 0x0790, 0x079f, 0x07ae, 0x07bd, 0x07cd, 0x07d6, + 0x07e2, 0x07f1, 0x07fa, 0x0806, 0x0812, 0x081b, 0x082a, 0x0839, + 0x0845, 0x084e, 0x0857, 0x0860, 0x086c, 0x0878, 0x0884, 0x0896, + 0x08a2, 0x08b1, 0x08ba, 0x08c6, 0x08d5, 0x08de, 0x08ea, 0x08f3, + 0x08ff, 0x090b, 0x0914, 0x091d, 0x0926, 0x092f, 0x093b, 0x0947, + 0x0953, 0x0966, 0x0978, 0x0984, 0x0990, 0x099c, 0x099c, 0x09a8, // Entry C0 - FF - 0x09e6, 0x09f9, 0x0a06, 0x0a0f, 0x0a18, 0x0a27, 0x0a27, 0x0a36, - 0x0a49, 0x0a58, 0x0a6b, 0x0a7e, 0x0a87, 0x0a87, 0x0a99, 0x0a99, - 0x0aa5, 0x0ab1, 0x0aba, 0x0aba, 0x0ac3, 0x0acc, 0x0acc, 0x0ad8, - 0x0ae1, 0x0aea, 0x0aea, 0x0af3, 0x0aff, 0x0aff, 0x0b12, 0x0b21, - 0x0b2a, 0x0b33, 0x0b33, 0x0b39, 0x0b45, 0x0b45, 0x0b45, 0x0b51, - 0x0b60, 0x0b69, 0x0b75, 0x0b81, 0x0b8a, 0x0b93, 0x0b9c, 0x0ba8, - 0x0bb1, 0x0bbd, 0x0bc9, 0x0bd2, 0x0be1, 0x0bea, 0x0bf6, 0x0c05, - 0x0c0e, 0x0c17, 0x0c47, 0x0c50, 0x0c5c, 0x0c68, 0x0c74, 0x0c8a, + 0x09a8, 0x09bb, 0x09c8, 0x09d1, 0x09da, 0x09e9, 0x09e9, 0x09f8, + 0x0a0b, 0x0a0b, 0x0a1a, 0x0a2d, 0x0a40, 0x0a49, 0x0a49, 0x0a5b, + 0x0a5b, 0x0a67, 0x0a73, 0x0a7c, 0x0a7c, 0x0a85, 0x0a8e, 0x0a8e, + 0x0a9a, 0x0aa3, 0x0aac, 0x0aac, 0x0ab5, 0x0ac1, 0x0ac1, 0x0ad4, + 0x0ae3, 0x0aec, 0x0af5, 0x0af5, 0x0afb, 0x0b07, 0x0b07, 0x0b07, + 0x0b13, 0x0b22, 0x0b2b, 0x0b37, 0x0b43, 0x0b4c, 0x0b55, 0x0b5e, + 0x0b6a, 0x0b73, 0x0b7f, 0x0b8b, 0x0b94, 0x0ba3, 0x0bac, 0x0bb8, + 0x0bc7, 0x0bd0, 0x0bd9, 0x0be9, 0x0bf2, 0x0bfe, 0x0c0a, 0x0c16, // Entry 100 - 13F - 0x0c93, 0x0c93, 0x0cbe, 0x0ccd, 0x0cd9, 0x0ce8, 0x0cf4, 0x0d03, - 0x0d0f, 0x0d1e, 0x0d27, 0x0d33, 0x0d3f, 0x0d55, 0x0d55, 0x0d61, - 0x0d77, 0x0d87, 0x0d93, 0x0d9f, 0x0da8, 0x0db1, 0x0db1, 0x0dc6, - 0x0dd2, 0x0ddb, 0x0de9, 0x0de9, 0x0df5, 0x0df5, 0x0dfe, 0x0e0a, - 0x0e0a, 0x0e10, 0x0e10, 0x0e23, 0x0e36, 0x0e36, 0x0e4f, 0x0e68, - 0x0e7a, 0x0e80, 0x0e8f, 0x0e8f, 0x0e98, 0x0ea4, 0x0ebd, 0x0ec9, - 0x0ed8, 0x0ee4, 0x0efb, 0x0f12, 0x0f22, 0x0f2b, 0x0f3a, 0x0f43, - 0x0f4f, 0x0f63, 0x0f77, 0x0f77, 0x0f77, 0x0f80, 0x0f8c, 0x0f98, + 0x0c2c, 0x0c35, 0x0c35, 0x0c60, 0x0c80, 0x0c8f, 0x0c9b, 0x0caa, + 0x0cb6, 0x0cc5, 0x0cd1, 0x0ce0, 0x0ce9, 0x0cf5, 0x0d01, 0x0d17, + 0x0d17, 0x0d23, 0x0d39, 0x0d49, 0x0d55, 0x0d61, 0x0d6a, 0x0d73, + 0x0d73, 0x0d86, 0x0d92, 0x0d9b, 0x0da8, 0x0da8, 0x0db4, 0x0db4, + 0x0dbd, 0x0dc9, 0x0dc9, 0x0dcf, 0x0dcf, 0x0de2, 0x0df5, 0x0df5, + 0x0e0b, 0x0e24, 0x0e33, 0x0e39, 0x0e48, 0x0e4e, 0x0e57, 0x0e63, + 0x0e7c, 0x0e88, 0x0e97, 0x0ea3, 0x0eba, 0x0ed1, 0x0ee1, 0x0eea, + 0x0ef9, 0x0f02, 0x0f0e, 0x0f21, 0x0f35, 0x0f35, 0x0f35, 0x0f3e, // Entry 140 - 17F - 0x0f98, 0x0fa4, 0x0fb4, 0x0fc3, 0x0fd2, 0x0fdb, 0x0ff1, 0x0ff1, - 0x0ffa, 0x1003, 0x1012, 0x101e, 0x102a, 0x102a, 0x102a, 0x1033, - 0x103f, 0x104b, 0x1061, 0x1077, 0x1077, 0x1089, 0x1095, 0x109e, - 0x10ad, 0x10b6, 0x10bf, 0x10ce, 0x10da, 0x10e3, 0x10ef, 0x10fb, - 0x10fb, 0x1104, 0x1104, 0x110d, 0x1116, 0x1129, 0x1135, 0x1135, - 0x113e, 0x114a, 0x1156, 0x116b, 0x1177, 0x1189, 0x1195, 0x11ae, - 0x11ae, 0x11ae, 0x11bd, 0x11c9, 0x11d5, 0x11e1, 0x11f3, 0x11fc, - 0x1208, 0x1214, 0x121d, 0x1229, 0x1232, 0x1241, 0x125b, 0x125b, + 0x0f4a, 0x0f56, 0x0f5f, 0x0f6b, 0x0f7b, 0x0f8a, 0x0f99, 0x0fa2, + 0x0fb8, 0x0fbe, 0x0fc7, 0x0fd0, 0x0fdf, 0x0feb, 0x0ff7, 0x0ff7, + 0x0ff7, 0x1000, 0x100c, 0x1018, 0x102e, 0x1044, 0x1044, 0x1056, + 0x1062, 0x106b, 0x107a, 0x1083, 0x108c, 0x109b, 0x10a7, 0x10b0, + 0x10bc, 0x10c8, 0x10c8, 0x10d1, 0x10d1, 0x10da, 0x10e3, 0x10f6, + 0x1102, 0x1102, 0x110b, 0x1117, 0x1123, 0x1138, 0x1144, 0x1156, + 0x1162, 0x117b, 0x117b, 0x117b, 0x118a, 0x1196, 0x11a2, 0x11ae, + 0x11c0, 0x11c9, 0x11d5, 0x11e1, 0x11ea, 0x11f6, 0x11ff, 0x120e, // Entry 180 - 1BF - 0x125b, 0x1267, 0x1267, 0x1270, 0x1279, 0x1289, 0x1289, 0x129c, - 0x12ab, 0x12b4, 0x12bd, 0x12c9, 0x12d2, 0x12d2, 0x12d2, 0x12de, - 0x12e7, 0x12f0, 0x12fc, 0x1308, 0x1314, 0x1320, 0x1329, 0x1335, - 0x1341, 0x134a, 0x1353, 0x1362, 0x1379, 0x138f, 0x1398, 0x13a4, - 0x13b3, 0x13bc, 0x13cb, 0x13d7, 0x13e0, 0x13f0, 0x13f9, 0x1406, - 0x1412, 0x141e, 0x142d, 0x142d, 0x1439, 0x1445, 0x1457, 0x1457, - 0x1463, 0x146c, 0x147c, 0x1488, 0x1494, 0x14a0, 0x14a0, 0x14af, - 0x14be, 0x14ca, 0x14de, 0x14de, 0x14e7, 0x14f9, 0x1505, 0x151a, + 0x1228, 0x1228, 0x1228, 0x1234, 0x1234, 0x123d, 0x1246, 0x1256, + 0x1256, 0x1269, 0x1278, 0x1281, 0x128a, 0x1296, 0x129f, 0x129f, + 0x129f, 0x12ab, 0x12b4, 0x12c0, 0x12cf, 0x12db, 0x12e7, 0x12f3, + 0x12fc, 0x1308, 0x1314, 0x131d, 0x1326, 0x1335, 0x134b, 0x1361, + 0x136a, 0x1376, 0x1388, 0x1391, 0x13a0, 0x13ac, 0x13b5, 0x13c5, + 0x13ce, 0x13db, 0x13e7, 0x13f3, 0x1402, 0x1402, 0x140e, 0x141a, + 0x142c, 0x1435, 0x1441, 0x144a, 0x145a, 0x1466, 0x1472, 0x147e, + 0x147e, 0x148d, 0x149c, 0x14a8, 0x14be, 0x14be, 0x14c7, 0x14d7, // Entry 1C0 - 1FF - 0x1529, 0x1535, 0x153e, 0x154a, 0x1559, 0x156d, 0x157c, 0x1588, - 0x1594, 0x15a6, 0x15b5, 0x15b5, 0x15b5, 0x15b5, 0x15cb, 0x15cb, - 0x15da, 0x15da, 0x15e3, 0x15ef, 0x15ef, 0x1605, 0x160e, 0x160e, - 0x161d, 0x1629, 0x1638, 0x1638, 0x1638, 0x1641, 0x164a, 0x164a, - 0x1653, 0x1653, 0x1665, 0x166e, 0x167a, 0x1686, 0x169c, 0x16a8, - 0x16b4, 0x16c0, 0x16c0, 0x16cf, 0x16d8, 0x16e7, 0x16f9, 0x16f9, - 0x170c, 0x1718, 0x1721, 0x1721, 0x172d, 0x1746, 0x175a, 0x175a, - 0x1769, 0x176f, 0x1788, 0x1794, 0x1794, 0x1794, 0x17a4, 0x17b4, + 0x14e3, 0x14f6, 0x1505, 0x1511, 0x151a, 0x1526, 0x1535, 0x1548, + 0x1557, 0x1563, 0x156f, 0x1581, 0x158d, 0x158d, 0x15a6, 0x15a6, + 0x15a6, 0x15bc, 0x15bc, 0x15cb, 0x15cb, 0x15d4, 0x15e0, 0x15ef, + 0x1605, 0x160e, 0x160e, 0x161d, 0x1629, 0x1638, 0x1638, 0x1638, + 0x1641, 0x164a, 0x164a, 0x1653, 0x1653, 0x1665, 0x166e, 0x167a, + 0x1686, 0x169c, 0x16a8, 0x16b4, 0x16c0, 0x16c0, 0x16cf, 0x16d8, + 0x16e7, 0x16f9, 0x16f9, 0x170c, 0x1718, 0x1721, 0x1721, 0x172d, + 0x1746, 0x175c, 0x175c, 0x176b, 0x1771, 0x178a, 0x1796, 0x1796, // Entry 200 - 23F - 0x17c7, 0x17da, 0x17e6, 0x17f5, 0x1808, 0x1814, 0x181d, 0x181d, - 0x182c, 0x1835, 0x1841, 0x184d, 0x1862, 0x186e, 0x186e, 0x186e, - 0x1877, 0x1880, 0x188c, 0x1895, 0x18a1, 0x18aa, 0x18bf, 0x18cb, - 0x18d7, 0x18e6, 0x18f2, 0x18fe, 0x1919, 0x1929, 0x1929, 0x1935, - 0x1935, 0x1944, 0x1944, 0x1950, 0x195c, 0x196b, 0x197a, 0x199a, - 0x19a9, 0x19b8, 0x19c4, 0x19ca, 0x19d3, 0x19d3, 0x19d3, 0x19d3, - 0x19d3, 0x19dc, 0x19dc, 0x19e5, 0x19ee, 0x19fa, 0x1a06, 0x1a0f, - 0x1a1b, 0x1a1b, 0x1a27, 0x1a27, 0x1a30, 0x1a3c, 0x1a48, 0x1a51, + 0x1796, 0x17a6, 0x17b6, 0x17c9, 0x17dc, 0x17e8, 0x17f7, 0x180a, + 0x1816, 0x181f, 0x181f, 0x182b, 0x1834, 0x1840, 0x184c, 0x185f, + 0x186b, 0x186b, 0x186b, 0x1874, 0x187d, 0x1889, 0x1892, 0x189e, + 0x18a7, 0x18bc, 0x18c8, 0x18d4, 0x18e3, 0x18ef, 0x18fb, 0x190e, + 0x191e, 0x191e, 0x192a, 0x192a, 0x1939, 0x1939, 0x1945, 0x1951, + 0x1960, 0x196f, 0x198f, 0x199e, 0x19ad, 0x19b9, 0x19bf, 0x19c8, + 0x19c8, 0x19c8, 0x19c8, 0x19c8, 0x19d1, 0x19d1, 0x19da, 0x19e3, + 0x19f2, 0x19fe, 0x1a07, 0x1a13, 0x1a19, 0x1a25, 0x1a25, 0x1a2e, // Entry 240 - 27F - 0x1a5a, 0x1a5a, 0x1a5a, 0x1a69, 0x1a79, 0x1a79, 0x1a85, 0x1aa5, - 0x1aae, 0x1ac9, 0x1ad2, 0x1ae9, 0x1ae9, 0x1ae9, 0x1b04, 0x1b12, - 0x1b12, 0x1b12, 0x1b12, 0x1b12, 0x1b12, 0x1b12, 0x1b12, 0x1b12, - 0x1b12, 0x1b12, 0x1b1e, 0x1b1e, 0x1b1e, 0x1b2a, 0x1b49, 0x1b5f, -} // Size: 1240 bytes - -var kyLangStr string = "" + // Size: 3906 bytes - "абхазчаафрикаанчааканчаамхарчаарабчаассамчаазербайжанчабашкырчабеларусча" + - "болгарчабамбарадабангладешчетибетчебретончобоснийчекаталанчачеченчекорс" + - "иканчачехчечувашчауелшчедатчанемисчежонгучаэбечегрекчеанглисчеэсперанто" + - "испанчаэстончобаскчафарсчафинчефижичефароэчефранцузчабатыш фризчеирланд" + - "чагалисиячагуарашгужаратчаманксычахаусачаивриттехиндичехорватчагаитичем" + - "ажарчаармянчаиндонезчеигбочоносучаисландчаиталиянчаинуктитуттаяпончожав" + - "анизчегрузинчекикуйичеказакчакалаалисутчакмерчеканнадачакорейчекашмирче" + - "курдчакорнишчекыргызчалатынчалюксембургчагандачалингалачалаочолитовчолу" + - "ба-катангачалатышчамалагасчамаоричемакедончомалайаламчамоңголчомаратиче" + - "малайчамалтизчебурмачатүндүк ндыбелченепалчаголландчанорвежче (Нинорск)" + - "норвежче (Букмал)оромочоориячапунжабичеполякчапашточопортугалчакечуачар" + - "оманшчарундичерумынчаорусчаруандачасанскритчесиндхичетүндүк самичесанго" + - "чосингалачасловакчасловенчешоначасомаличеалбанчасербчесесотосунданчашве" + - "дчесуахиличетамилчетелугучатажикчетайчатигриниачатүркмөнчөтонгачатүркчө" + - "татарчауйгурчаукраинчеурдучаөзбекчевьетнамчауолофчокосачаидишчейорубача" + - "кытайчазулучаагемчемапучедеасучабембачабеначачыгыш балучичебододочигача" + - "черокичесорани курдтаитачазамрачатөмөнкү сорбианчадуалачажола-фоничеэмб" + - "учафилипиногагаузчанемисче (Швейцария)гусичегавайчажогорку сорбианчанго" + - "мбачамачамечекабылчакамбачамакондечекабувердичекойра чиничекаленжичеком" + - "и-пермякчаконканичешамабалачабафиячалангичелакотачатүндүк луричелуочолу" + - "хиячамасайчамеручаморисианчамакуачаметөчөмохаукчамундангчамазандераниче" + - "намачатөмөнкү немисчеквасиочонкочонуерченыйанколчокичечеромбочоруачасам" + - "буручасангучатүштүк курдчасеначакойраборо сенничеташелитчетүштүк саамич" + - "елөлө саамичеинари саамическолт саамичетесочоклингончотасабакчаборборду" + - "к Атлас тамазитчебелгисиз тилдевайичевунжочоворлпиричесогачамарокко там" + - "азигт адабий тилиндетилдик мазмун жоказыркы адабий араб тилиндеиспанча " + - "(Европа)төмөнкү саксончофламандчапортугалча (Европа)молдованчасерб-хорва" + - "тконго суахаличекытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)" - -var kyLangIdx = []uint16{ // 610 elements + 0x1a3a, 0x1a46, 0x1a4f, 0x1a58, 0x1a58, 0x1a61, 0x1a70, 0x1a80, + 0x1a80, 0x1a8c, 0x1aac, 0x1ab5, 0x1ad0, 0x1ad9, 0x1af0, 0x1af0, + 0x1af0, 0x1b0b, 0x1b19, 0x1b19, 0x1b19, 0x1b19, 0x1b19, 0x1b19, + 0x1b19, 0x1b19, 0x1b19, 0x1b19, 0x1b29, 0x1b35, 0x1b35, 0x1b35, + 0x1b41, 0x1b60, 0x1b76, +} // Size: 1246 bytes + +const kyLangStr string = "" + // Size: 6711 bytes + "афарчаабхазчаафрикаанчааканчаамхарчаарагончоарабчаассамчааварикчеаймарач" + + "аазербайжанчабашкырчабеларусчаболгарчабисламачабамбарачабангладешчетибе" + + "тчебретончобоснийчекаталанчачеченчечаморрочокорсиканчачехчечиркөө славя" + + "нчачувашчауелшчедатчанемисчедивехичежонгучаэбечегрекчеанглисчеэсперанто" + + "испанчаэстончобаскчафарсчафулачафинчефижичефароэчефранцузчабатыш фризче" + + "ирландчакельтчегалисиячагуарашгужаратчаманксычахаусачаивриттехиндичехор" + + "ватчагаитичевенгерчеармянчагерерочоинтерлингваиндонезчеигбочосычуань йи" + + "чеидочоисландчаиталиянчаинуктитутчажапончожаванизчегрузинчекикуйичекуан" + + "ьямачаказакчакалаалисутчакмерчеканнадачакорейчекануричекашмирчекурдчако" + + "мичекорнишчекыргызчалатынчалюксембургчагандачалимбургичелингалачалаочол" + + "итовчолуба-катангачалатышчамалагасчамаршаллчамаоричемакедончомалайаламч" + + "амонголчомаратичемалайчамалтизчебурмачанауручатүндүк ндыбелченепалчандо" + + "нгачаголландчанорвежче (Нинорск)норвежче (Букмал)түштүк ндебелеченавадж" + + "очоньянджачаокситанчаоромочоориячаосетинчепунжабичеполякчапуштучапортуг" + + "алчакечуачароманшчарундичерумынчаорусчаруандачасанскритчесардинчесиндхи" + + "четүндүк самичесангочосингалачасловакчасловенчесамоанчашоначасомаличеал" + + "банчасербчесватичесесоточосунданчашведчесуахиличетамилчетелугучатажикче" + + "тайчатигриниачатүркмөнчөтсваначатонгачатүркчөтсонгачататарчатаитичеуйгу" + + "рчаукраинчеурдучаөзбекчевендачавьетнамчаволапюкчаваллончоуолофчокосачаи" + + "дишчейорубачакытайчазулучаачехчеадаңмечеадыгейчеагемчеайнучаалеутчатүшт" + + "үк алтайчаангикачамапучечеарапахочоасучаастурийчеавадхичебаличебасаачаб" + + "ембачабеначачыгыш балучичебхожпуричебиничесиксикачабодочобугийчеблинчес" + + "ебуанчачигачачуукичемаричечокточочерокичешайеннчеборбордук курдчасеселв" + + "а креол французчадакотачадаргинчетаитачадогрибчезамрачатөмөнкү сорбианч" + + "адуалачажола-фоничедазагачаэмбучаэфикчеэкажукчаэвондочофилипинчефончофр" + + "иулчагачагагаузчаГань Кытайчагиизчегилбертчегоронталочонемисче (Швейцар" + + "ия)гусичегвичинчеХакка кытайчагавайчахилигайнончохмонгчожогорку сорбиан" + + "чаСянь Кытайчахупачаибанчаибибиочоилокочоингушчаложбанчангомбачамачамеч" + + "екабылчакахинчеджучакамбачакабардинчетяпчамакондечекабувердичекорочохас" + + "ичекойра чиничекакочокаленжичекимбундучакоми-пермякчаконканичекпеллечек" + + "арачай-балкарчакарелчекурухчашамабалачабафиячаколоньячакумыкчаладиночол" + + "ангичелезгинчелакотачалозичетүндүк луричелуба-лулуачалундачалуочомизочо" + + "лухиячамадурисчемагахичемаитиличемакасарчамасайчамокшачамендечемеручамо" + + "рисианчамакуачаметачамикмакчаминанкабаучаманипуричемохаукчамоссичемунда" + + "нгчабир нече тилдекрикчемирандизчеэрзянчамазандераничеnanнеополитанчана" + + "мачатөмөнкү немисченеваричениасчаньюанчаквасиочонгимбунчаногайчанкочотү" + + "ндүк сохочонуерченыйанколчопангасичепампангачапапиаменточопалауанчааргы" + + "ндашкан тил (Нигерия)пруссчакичечерапаньючараротонгачаромбочоаромунчару" + + "ачасандавечесахачасамбуручасанталиченгамбайчасангучасицилийчешотландчат" + + "үштүк курдчасеначакойраборо сенничеташелитчешанчатүштүк саамичелуле-сам" + + "ичеинари саамическолт саамичесонинкечесранан тонгочосахочосукумачакомор" + + "чосириячатимнечетесочотетумчатигречеклингончоток-писинчетарокочотумбука" + + "чатувалучатасабакчатувинчеБорбордук Атлас тамазитчеудмуртчаумбундучатүп" + + "күвайичевунжочовалцерчевольяттачаварайчаворлпиричеwuuкалмыкчасогачаянгб" + + "енчейембачакантончомарокко тамазигт адабий тилиндезуничетилдик мазмун ж" + + "окзазачаазыркы адабий араб тилиндеадабий немисче (Швейцария)испанча (Ев" + + "ропа)төмөнкү саксончофламандчапортугалча (Европа)молдованчасерб-хорватк" + + "онго суахаличекытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)" + +var kyLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x000e, 0x0022, 0x002e, 0x003c, 0x003c, - 0x0048, 0x0056, 0x0056, 0x0056, 0x006e, 0x007e, 0x0090, 0x00a0, - 0x00a0, 0x00b2, 0x00c8, 0x00d6, 0x00e6, 0x00f6, 0x0108, 0x0116, - 0x0116, 0x012a, 0x012a, 0x0134, 0x0134, 0x0142, 0x014e, 0x0158, - 0x0166, 0x0166, 0x0174, 0x017e, 0x018a, 0x019a, 0x01ac, 0x01ba, - 0x01c8, 0x01d4, 0x01e0, 0x01e0, 0x01ea, 0x01f6, 0x0204, 0x0216, - 0x022d, 0x023d, 0x023d, 0x024f, 0x025b, 0x026d, 0x027d, 0x028b, - 0x0299, 0x02a7, 0x02a7, 0x02b7, 0x02c5, 0x02d3, 0x02e1, 0x02e1, + 0x0000, 0x000c, 0x001a, 0x001a, 0x002e, 0x003a, 0x0048, 0x0058, + 0x0064, 0x0072, 0x0082, 0x0092, 0x00aa, 0x00ba, 0x00cc, 0x00dc, + 0x00ee, 0x0100, 0x0116, 0x0124, 0x0134, 0x0144, 0x0156, 0x0164, + 0x0176, 0x018a, 0x018a, 0x0194, 0x01b1, 0x01bf, 0x01cb, 0x01d5, + 0x01e3, 0x01f3, 0x0201, 0x020b, 0x0217, 0x0227, 0x0239, 0x0247, + 0x0255, 0x0261, 0x026d, 0x0279, 0x0283, 0x028f, 0x029d, 0x02af, + 0x02c6, 0x02d6, 0x02e4, 0x02f6, 0x0302, 0x0314, 0x0324, 0x0332, + 0x0340, 0x034e, 0x034e, 0x035e, 0x036c, 0x037c, 0x038a, 0x039a, // Entry 40 - 7F - 0x02e1, 0x02f3, 0x02f3, 0x02ff, 0x030b, 0x030b, 0x030b, 0x031b, - 0x032d, 0x0343, 0x034f, 0x0361, 0x0371, 0x0371, 0x0381, 0x0381, - 0x038f, 0x03a7, 0x03b3, 0x03c5, 0x03d3, 0x03d3, 0x03e3, 0x03ef, - 0x03ef, 0x03ff, 0x040f, 0x041d, 0x0435, 0x0443, 0x0443, 0x0455, - 0x045f, 0x046d, 0x0488, 0x0496, 0x04a8, 0x04a8, 0x04b6, 0x04c8, - 0x04de, 0x04ee, 0x04fe, 0x050c, 0x051c, 0x052a, 0x052a, 0x0547, - 0x0555, 0x0555, 0x0567, 0x0588, 0x05a7, 0x05a7, 0x05a7, 0x05a7, - 0x05a7, 0x05a7, 0x05b5, 0x05c1, 0x05c1, 0x05d3, 0x05d3, 0x05e1, + 0x03b0, 0x03c2, 0x03c2, 0x03ce, 0x03e5, 0x03e5, 0x03ef, 0x03ff, + 0x0411, 0x0427, 0x0435, 0x0447, 0x0457, 0x0457, 0x0467, 0x047b, + 0x0489, 0x04a1, 0x04ad, 0x04bf, 0x04cd, 0x04dd, 0x04ed, 0x04f9, + 0x0505, 0x0515, 0x0525, 0x0533, 0x054b, 0x0559, 0x056d, 0x057f, + 0x0589, 0x0597, 0x05b2, 0x05c0, 0x05d2, 0x05e4, 0x05f2, 0x0604, + 0x061a, 0x062a, 0x063a, 0x0648, 0x0658, 0x0666, 0x0674, 0x0691, + 0x069f, 0x06af, 0x06c1, 0x06e2, 0x0701, 0x0720, 0x0732, 0x0744, + 0x0756, 0x0756, 0x0764, 0x0770, 0x0780, 0x0792, 0x0792, 0x07a0, // Entry 80 - BF - 0x05ef, 0x0603, 0x0611, 0x0621, 0x062f, 0x063d, 0x0649, 0x0659, - 0x066d, 0x066d, 0x067d, 0x0696, 0x06a4, 0x06b6, 0x06c6, 0x06d6, - 0x06d6, 0x06e2, 0x06f2, 0x0700, 0x070c, 0x070c, 0x0718, 0x0728, - 0x0734, 0x0746, 0x0754, 0x0764, 0x0772, 0x077c, 0x0790, 0x07a2, - 0x07a2, 0x07b0, 0x07bc, 0x07bc, 0x07ca, 0x07ca, 0x07d8, 0x07e8, - 0x07f4, 0x0802, 0x0802, 0x0814, 0x0814, 0x0814, 0x0822, 0x082e, - 0x083a, 0x084a, 0x084a, 0x0858, 0x0864, 0x0864, 0x0864, 0x0864, - 0x0864, 0x0864, 0x0864, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, + 0x07ae, 0x07c2, 0x07d0, 0x07e0, 0x07ee, 0x07fc, 0x0808, 0x0818, + 0x082c, 0x083c, 0x084c, 0x0865, 0x0873, 0x0885, 0x0895, 0x08a5, + 0x08b5, 0x08c1, 0x08d1, 0x08df, 0x08eb, 0x08f9, 0x0909, 0x0919, + 0x0925, 0x0937, 0x0945, 0x0955, 0x0963, 0x096d, 0x0981, 0x0993, + 0x09a3, 0x09b1, 0x09bd, 0x09cd, 0x09db, 0x09e9, 0x09f7, 0x0a07, + 0x0a13, 0x0a21, 0x0a2f, 0x0a41, 0x0a53, 0x0a63, 0x0a71, 0x0a7d, + 0x0a89, 0x0a99, 0x0a99, 0x0aa7, 0x0ab3, 0x0abf, 0x0abf, 0x0acf, + 0x0adf, 0x0adf, 0x0adf, 0x0aeb, 0x0af7, 0x0af7, 0x0af7, 0x0b05, // Entry C0 - FF - 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x088a, 0x088a, 0x088a, 0x088a, - 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, - 0x088a, 0x0898, 0x0898, 0x08a4, 0x08a4, 0x08a4, 0x08bf, 0x08bf, - 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, - 0x08bf, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, - 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08d7, 0x08d7, 0x08d7, - 0x08d7, 0x08d7, 0x08d7, 0x08d7, 0x08d7, 0x08e7, 0x08e7, 0x08fc, + 0x0b05, 0x0b20, 0x0b20, 0x0b30, 0x0b30, 0x0b40, 0x0b40, 0x0b52, + 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b5c, 0x0b5c, 0x0b6e, + 0x0b6e, 0x0b7e, 0x0b7e, 0x0b8a, 0x0b8a, 0x0b98, 0x0b98, 0x0b98, + 0x0b98, 0x0b98, 0x0ba6, 0x0ba6, 0x0bb2, 0x0bb2, 0x0bb2, 0x0bcd, + 0x0be1, 0x0be1, 0x0bed, 0x0bed, 0x0bed, 0x0bff, 0x0bff, 0x0bff, + 0x0bff, 0x0bff, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c19, 0x0c19, 0x0c25, + 0x0c25, 0x0c25, 0x0c25, 0x0c25, 0x0c25, 0x0c35, 0x0c41, 0x0c41, + 0x0c41, 0x0c4f, 0x0c5b, 0x0c5b, 0x0c69, 0x0c69, 0x0c79, 0x0c89, // Entry 100 - 13F - 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x090a, 0x090a, - 0x090a, 0x090a, 0x090a, 0x0918, 0x0918, 0x0939, 0x0939, 0x0947, - 0x0947, 0x095c, 0x095c, 0x095c, 0x0968, 0x0968, 0x0968, 0x0968, - 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0978, - 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, - 0x0978, 0x0978, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, - 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, - 0x0988, 0x0988, 0x09ab, 0x09ab, 0x09ab, 0x09b7, 0x09b7, 0x09b7, + 0x0ca8, 0x0ca8, 0x0ca8, 0x0ca8, 0x0cd4, 0x0cd4, 0x0ce4, 0x0cf4, + 0x0d02, 0x0d02, 0x0d02, 0x0d12, 0x0d12, 0x0d20, 0x0d20, 0x0d41, + 0x0d41, 0x0d4f, 0x0d4f, 0x0d64, 0x0d64, 0x0d74, 0x0d80, 0x0d8c, + 0x0d8c, 0x0d8c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0dac, 0x0dac, + 0x0dac, 0x0dbe, 0x0dbe, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, + 0x0dc8, 0x0dc8, 0x0dd6, 0x0dde, 0x0dee, 0x0e05, 0x0e05, 0x0e05, + 0x0e05, 0x0e11, 0x0e23, 0x0e23, 0x0e23, 0x0e23, 0x0e23, 0x0e23, + 0x0e39, 0x0e39, 0x0e39, 0x0e39, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e68, // Entry 140 - 17F - 0x09b7, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09e6, 0x09e6, - 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, - 0x09f6, 0x0a06, 0x0a06, 0x0a06, 0x0a06, 0x0a06, 0x0a14, 0x0a14, - 0x0a14, 0x0a22, 0x0a22, 0x0a22, 0x0a22, 0x0a22, 0x0a34, 0x0a4a, - 0x0a4a, 0x0a4a, 0x0a4a, 0x0a4a, 0x0a4a, 0x0a61, 0x0a61, 0x0a61, - 0x0a61, 0x0a73, 0x0a73, 0x0a8c, 0x0a9e, 0x0a9e, 0x0a9e, 0x0a9e, - 0x0a9e, 0x0a9e, 0x0a9e, 0x0a9e, 0x0ab2, 0x0ac0, 0x0ac0, 0x0ac0, - 0x0ac0, 0x0ac0, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, + 0x0e78, 0x0e78, 0x0e91, 0x0e9f, 0x0e9f, 0x0eb7, 0x0eb7, 0x0ec5, + 0x0ee6, 0x0efd, 0x0f09, 0x0f15, 0x0f25, 0x0f33, 0x0f41, 0x0f41, + 0x0f41, 0x0f51, 0x0f61, 0x0f71, 0x0f71, 0x0f71, 0x0f71, 0x0f71, + 0x0f7f, 0x0f8d, 0x0f97, 0x0fa5, 0x0fa5, 0x0fb9, 0x0fb9, 0x0fc3, + 0x0fd5, 0x0feb, 0x0feb, 0x0ff7, 0x0ff7, 0x1003, 0x1003, 0x101a, + 0x101a, 0x101a, 0x1026, 0x1038, 0x104c, 0x1065, 0x1077, 0x1077, + 0x1087, 0x10a6, 0x10a6, 0x10a6, 0x10b4, 0x10c2, 0x10d6, 0x10e4, + 0x10f6, 0x1104, 0x1104, 0x1114, 0x1122, 0x1122, 0x1122, 0x1132, // Entry 180 - 1BF - 0x0ace, 0x0ade, 0x0ade, 0x0ade, 0x0ade, 0x0af7, 0x0af7, 0x0af7, - 0x0af7, 0x0af7, 0x0b01, 0x0b01, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, - 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b1d, 0x0b1d, 0x0b1d, - 0x0b1d, 0x0b1d, 0x0b29, 0x0b3d, 0x0b3d, 0x0b4b, 0x0b57, 0x0b57, - 0x0b57, 0x0b57, 0x0b57, 0x0b67, 0x0b67, 0x0b67, 0x0b79, 0x0b79, - 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b93, 0x0b93, - 0x0b93, 0x0b9f, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bcc, - 0x0bcc, 0x0bcc, 0x0bcc, 0x0bcc, 0x0bd6, 0x0bd6, 0x0be2, 0x0be2, + 0x1132, 0x1132, 0x1132, 0x1142, 0x1142, 0x1142, 0x114e, 0x1167, + 0x1167, 0x117e, 0x117e, 0x118c, 0x1196, 0x11a2, 0x11b0, 0x11b0, + 0x11b0, 0x11c2, 0x11c2, 0x11d2, 0x11e4, 0x11f6, 0x11f6, 0x1204, + 0x1204, 0x1212, 0x1212, 0x1220, 0x122c, 0x1240, 0x1240, 0x124e, + 0x125a, 0x126a, 0x1282, 0x1282, 0x1296, 0x12a6, 0x12b4, 0x12b4, + 0x12c6, 0x12e0, 0x12ec, 0x1300, 0x1300, 0x1300, 0x1300, 0x130e, + 0x1328, 0x132b, 0x1343, 0x134f, 0x136c, 0x137c, 0x1388, 0x1396, + 0x1396, 0x13a6, 0x13b8, 0x13c6, 0x13c6, 0x13c6, 0x13d0, 0x13e9, // Entry 1C0 - 1FF - 0x0be2, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, - 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, - 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0c02, 0x0c02, - 0x0c02, 0x0c02, 0x0c02, 0x0c02, 0x0c02, 0x0c10, 0x0c10, 0x0c10, - 0x0c10, 0x0c10, 0x0c10, 0x0c1a, 0x0c1a, 0x0c1a, 0x0c1a, 0x0c2c, - 0x0c2c, 0x0c2c, 0x0c2c, 0x0c2c, 0x0c3a, 0x0c3a, 0x0c3a, 0x0c3a, - 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c80, 0x0c80, 0x0c80, - 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0cad, 0x0cc4, + 0x13f5, 0x13f5, 0x13f5, 0x1409, 0x1409, 0x1409, 0x1409, 0x1409, + 0x141b, 0x141b, 0x142f, 0x1447, 0x1459, 0x1459, 0x1487, 0x1487, + 0x1487, 0x1487, 0x1487, 0x1487, 0x1487, 0x1487, 0x1487, 0x1495, + 0x1495, 0x14a1, 0x14a1, 0x14a1, 0x14b3, 0x14c9, 0x14c9, 0x14c9, + 0x14d7, 0x14d7, 0x14d7, 0x14d7, 0x14d7, 0x14e7, 0x14f1, 0x1503, + 0x150f, 0x150f, 0x1521, 0x1521, 0x1533, 0x1533, 0x1545, 0x1553, + 0x1565, 0x1577, 0x1577, 0x1590, 0x1590, 0x159c, 0x159c, 0x159c, + 0x15bd, 0x15bd, 0x15bd, 0x15cf, 0x15d9, 0x15d9, 0x15d9, 0x15d9, // Entry 200 - 23F - 0x0cdd, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, - 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, - 0x0cf6, 0x0d02, 0x0d02, 0x0d02, 0x0d02, 0x0d02, 0x0d02, 0x0d02, - 0x0d14, 0x0d14, 0x0d14, 0x0d14, 0x0d14, 0x0d14, 0x0d14, 0x0d14, - 0x0d14, 0x0d14, 0x0d14, 0x0d14, 0x0d14, 0x0d26, 0x0d26, 0x0d56, - 0x0d56, 0x0d56, 0x0d56, 0x0d71, 0x0d7d, 0x0d7d, 0x0d7d, 0x0d7d, - 0x0d7d, 0x0d7d, 0x0d7d, 0x0d8b, 0x0d8b, 0x0d8b, 0x0d8b, 0x0d8b, - 0x0d9f, 0x0d9f, 0x0d9f, 0x0d9f, 0x0dab, 0x0dab, 0x0dab, 0x0dab, + 0x15d9, 0x15f4, 0x1609, 0x1622, 0x163b, 0x164d, 0x164d, 0x1668, + 0x1668, 0x1674, 0x1674, 0x1684, 0x1684, 0x1684, 0x1692, 0x1692, + 0x16a0, 0x16a0, 0x16a0, 0x16ae, 0x16ba, 0x16ba, 0x16c8, 0x16d6, + 0x16d6, 0x16d6, 0x16d6, 0x16e8, 0x16e8, 0x16e8, 0x16e8, 0x16e8, + 0x16fd, 0x16fd, 0x170d, 0x170d, 0x170d, 0x170d, 0x171f, 0x172f, + 0x1741, 0x174f, 0x177f, 0x178f, 0x178f, 0x17a1, 0x17ab, 0x17b7, + 0x17b7, 0x17b7, 0x17b7, 0x17b7, 0x17b7, 0x17b7, 0x17c5, 0x17d5, + 0x17e9, 0x17f7, 0x17f7, 0x180b, 0x180e, 0x181e, 0x181e, 0x182a, // Entry 240 - 27F - 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0de6, - 0x0de6, 0x0e06, 0x0e06, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e54, 0x0e54, 0x0e54, 0x0e54, - 0x0e54, 0x0e73, 0x0e85, 0x0e85, 0x0ea8, 0x0ebc, 0x0ed1, 0x0eee, - 0x0f23, 0x0f42, -} // Size: 1244 bytes - -var loLangStr string = "" + // Size: 10775 bytes + 0x182a, 0x182a, 0x183a, 0x1848, 0x1848, 0x1858, 0x1858, 0x1858, + 0x1858, 0x1858, 0x1893, 0x189f, 0x18bf, 0x18cb, 0x18fc, 0x18fc, + 0x18fc, 0x192c, 0x192c, 0x192c, 0x192c, 0x192c, 0x192c, 0x1949, + 0x1949, 0x1949, 0x1949, 0x1949, 0x1968, 0x197a, 0x197a, 0x199d, + 0x19b1, 0x19c6, 0x19e3, 0x1a18, 0x1a37, +} // Size: 1250 bytes + +const loLangStr string = "" + // Size: 10855 bytes "ອະຟາແອບຄາຊຽນອາເວັສແຕນອາຟຣິການອາການອຳຮາຣິກອາຣາໂກເນັດອາຣັບອັສຊາມີສອາວາຣິກອ" + "າຍມາລາອາເຊີໄບຈານິບາຣກີເບລາຣັສຊຽນບັງກາຣຽນບິສລະມາບາມບາຣາເບັງກາລີທິເບທັນເ" + "ບຣຕັນບອສນຽນຄາຕາລານຊີເຄນຊາມໍໂຣຄໍຊິກາຄີເຊກໂບດສລາວິກຊູວາຊເວວແດນິຊເຢຍລະມັນ" + @@ -17514,51 +20802,52 @@ var loLangStr string = "" + // Size: 10775 bytes "ລິງລົວອິນໂດເນຊຽນອິນເຕີລິງກຣີອິກໂບເຊສວຍຢີອິນນູປຽກອີໂດໄອສແລນດິກອິຕາລຽນອິ" + "ນນຸກຕິຕັດຍີ່ປຸ່ນຈາແວນີສຈໍຈຽນຄອງໂກຄິຄູຢຸກວນຍາມາຄາຊັກກຣີນແລນລິດຂະເໝນຄັນນ" + "າດາເກົາຫລີຄານຸລິຄາສເມຍຣິເຄີດິສໂຄມິຄໍນິຊເກຍກີສລາຕິນລັກເຊມບວກກິຊແກນດາລິມ" + - "ເບີກີຊລິງກາລາລາວລິທົວນຽນລູບາ-ຄາຕັງກາລັດວຽນມາລາກາສຊີມາຊານເລັດມາວຣິແມັກເ" + - "ຊໂດນຽນມາເລອາລຳມອງໂກເລຍມາຣາທີມາເລມອລທີສມຽນມານາຢູລູເອັນເດເບເລເໜືອເນປາລີເ" + - "ອັນດອງກາດັຊນໍເວຈຽນ ນີນອກນໍເວຈຽນ ບັອກມອລນີບີລີໃຕ້ນາວາໂຈນານຈາອັອກຊີຕານໂອ" + - "ຈິບວາໂອໂຣໂມໂອຣິຢາອອດເຊຕິກປັນຈາບີປາລີໂປລິຊປາສໂຕປອກຕຸຍກິສຄີຊົວໂຣແມນຊ໌ຣຸນ" + - "ດິໂຣແມນຽນລັດເຊຍຄິນຢາວານດາສັນສະກຣິດສາດີນຽນສິນທິຊາມິເໜືອແຊງໂກສິນຫາລາສະໂລ" + - "ແວັກສະໂລເວນຽນຊາມົວໂຊນາໂຊມາລີອານບານຽນເຊີບຽນຊຣາຕິໂຊໂທໃຕ້ຊຸນແດນນີສສະວີດິຊ" + - "ຊວາຮີລິທາມິລເຕລູກູທາຈິກໄທຕິກຣິນຢາເທີກເມັນເຕສະວານາທອງການເທີຄິຊເຕຊອງກາທາ" + - "ທາຕາຮີຕຽນອຸຍເຄີຢູເຄຣນຽນອູຣດູອຸສເບກເວນດາຫວຽດນາມໂວລາພັກວໍລູມວໍລອບໂຮຊາຢິວ" + - "ໂຢຣູບາຊວາງຈີນຊູລູແອັກຊີເນັສອາໂຄລີອາແດງມີເອດີຮິແອຟີຮີລີອາເຮັມໄອນູອັກກາດ" + - "ຽມອາເລີດອານໄຕໃຕ້ອັງກິດໂບຮານແອນຈີກາອາລາມິກອາຣົວຄານຽນອາຣາປາໂຮອາຣາແວກອາຊູ" + - "ອັສຕູຮຽນອາວາຮິບາລູຊີບາລີເນັດບາຊາບາມຸນໂຄມາລາບີເຈເບັມບາບີນາບາຟັດບາໂລຈີ ພ" + - "າກຕາເວັນຕົກໂບພູຣິບີຄອນບີນີກົມຊິກຊິກາບຣາໂບດູອາຄຸດບູຣຽດບູຈີເນັດບູລູບລິນເ" + - "ມດູມບາແຄດໂດຄາຣິບຄາຢູກາອາດແຊມຊີບູໂນຊີກາຊິບຊາຊາກາໄຕຊູເກດມາຣິຊີນຸກຈາກອນຊອ" + - "ກຕິວຊີພິວຢານຊີໂຣກີຊີເຢນນີໂຊຣານິ ເຄີດິຊຄອບຕິກຄຣີເມນເຕີຄິຊກາຊູບຽນດາໂກຕາດ" + - "າກວາໄຕຕາເດລາວາຊີເລັບໂດກຣິບດິນກາຊາມາດອກຣີຊໍບຽນຕໍ່ກວ່າດົວລາດັກກາງໂຈລາ-ຟອ" + - "ນຢີດູລາດາຊາກາເອັມບູອີຟິກອີຢິບບູຮານອີກາຈັກອີລາໄມອັງກິດກາງອີວອນດູແຟງຟີລິ" + - "ປີໂນຟອນຟຮັ່ງເສດກາງຟຮັ່ງເສດໂບຮານຟຣີຊຽນເໜືອຟຣີຊຽນຕາເວັນອອກຟຣີລຽນກາກາກາອຸ" + - "ຊກາໂຢບາຍາກີກິນເບີເທັດເຢຍລະມັນສູງກາງເຢຍລະມັນສູງໂບຮານກອນດີໂກຣອນຕາໂຣກອດຮິ" + - "ກກຣີໂບແອນຊຽນກຣີກສະວິສ ເຈີແມນກູຊິວິດອິນໄຮດາຮາໄວອຽນຮິຣິໄກນອນຮິດໄຕມອງຊໍບຽ" + - "ນ ທາງຕອນເໜືອຮູປາໄອບານໄອໄບໄບໂອໄອໂລໂກອິນກັຊໂລບບັນງອມບາມາແຊມຈູແດວ-ເພີຊຽນຈ" + - "ູແດວ-ອາລາບິກກາຣາ-ການປາກກາໄບລ໌ກາຊິນຈຣູກາມບາກະວີກາບາດຽນຄາແນມບູຕີບມາຄອນເດ" + - "ຄາເວີເດຍນູໂຄໂລຄາສິໂຄຕັນຄອຍຣາ ຊິນີຄາໂກຄາເລັນຈິນຄິມບັນດູໂຄມີ-ເພີມຢັກກອນກ" + - "ານີຄູສໄລກາແປຣກາຣາໄຊ-ບານກາກາເຣລຽນກູຣູກຊຳບາລ້າບາເຟຍໂຄລອກນຽນຄູມີກຄູເທໄນລາ" + - "ດີໂນແລນກິລານດາແລມບາລີຊຽນລາໂກຕາແມັງໂກ້ໂລຊິລູຣິ ທາງຕອນເໜືອລູບາ-ລູລົວລູເຊ" + - "ໂນລຸນດາລົວລູໄຊລູໄຍມາດູລາມາຟາມາກາຮິໄມທີລິມາກາຊາຣມັນດິງກາມາໄຊມາບາມອກຊາມາ" + - "ນດາຣເມນເດເມຣູມໍຣິສເຢນໄອລິດກາງມາຄູວາ-ມີດໂຕເມທາມິກແມກທີແນງກາບູແມນຈູມານີພ" + - "ູຣິໂມຫາມອສຊີມັນດັງຫລາຍພາສາຄຣິກມີລັນດາມາວາຣິມໍຢິນເອີຍາມາແຊນເດີລັງນາໂປລີ" + - "ນາມາເຢຍລະມັນ ຕອນໄຕ້ນີວາຣິນີ່ອັດນີ່ອູກວາຊີໂອຈີ່ມບູນນໍໄກນໍໂບຮານເອັນໂກໂຊໂ" + - "ທເໜືອເນີເນວາດັ້ງເດີມນາມວີຊິນານຄອນໂນໂຣນິມາໂອແຊກຕູກີອອດໂຕມັນປານກາຊີມານພາ" + - "ລາວີປາມປານກາປາມເປຍເມັນໂທປາລົວອານເປີເຊຍໂບຮານຟີນີເຊຍພອນເພໂປວອງຊານໂບຮານKʼ" + - "icheʼຣາຈັສທານິຣາປານຸຍຣາໂຣທອນການຣົມໂບໂຣເມນີອາໂຣມານຽນອາຣວາຊັນດາວຊາກາສາມາຣິ" + - "ແຕນ-ຊຳບູຣູຊາຊັກຊານທາລິກຳເບຊານກູຊີຊິລີນສກອດພາກໄຕ້ ຂອງ ກູດິດຊີນາເຊນຄັບໂຄ" + - "ຍຣາໂບໂຣ ເຊນນິອີຣິຊເກົ່າທາເຊວຫິດໄທໃຫ່ຍອາລັບ-ຊາດຊິດາໂມຊາມິໃຕ້ລຸນຊາມິອີນາ" + - "ຣິຊາມິສກອດຊາມິໂຊນິນກີຊອກດິນສຣານນານຕອນໂກເຊເລີຊາໂຮຊູຄູມ້າຊູຊູຊູເມີເລຍໂຄໂ" + - "ນຣຽນຊີເລຍແບບດັ້ງເດີມຊີເລຍທີມເນເຕໂຊເຕເລໂນເຕຕູມໄທກຣີຕີວໂຕເກເລົາຄຣິງກອນທລ" + - "ີງກິດທາມາກເຊກນາຍອາຊາຕອງກາທອກພີຊິນຕາໂລໂກຊີມຊີແອນຕຳບູກາຕູວາລູຕາຊາວັກຕູວີ" + - "ນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູລູດໄວໂວຕິກວັນໂຈວາເຊີວາລາໂມວາເ" + - "ລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແຍງເບນແຢມບາກວາງຕຸ້ງຊາໂປແຕບສັນຍາລັກບລີຊິມ" + - "ເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖານຊູນີບໍ່ມີເນື້ອຫາພາສາຊາຊາອາຣາບິກມາດຕະຖາ" + - "ນສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ ໄຮ ເຈີແມນອັງກິດ (ໂອດສະຕາລີ)ອັງກິດ (ບຣິ" + - "ດທິຊ)ອັງກິດ (ອາເມລິກັນ)ລາຕິນ ອາເມຣິກັນ ສະແປນນິຊສະເປັນ ຢຸໂຣບເມັກຊິກັນ ສ" + - "ະແປນນິຊຟລັງ(ການາດາ)ຊາຊອນ ຕອນໄຕຟລີມິຊປອກຕຸຍກິສ ບະເລຊີ່ນປອກຕຸຍກິສ ຢຸໂຣບໂ" + - "ມດາວຽນເຊີໂບ-ໂກເຊຍຄອງໂກ ຊວາຮີລິຈີນແບບຮຽບງ່າຍຈີນແບບດັ້ງເດີມ" - -var loLangIdx = []uint16{ // 610 elements + "ເບີກີຊລິງກາລາລາວລິທົວນຽນລູບາ-ຄາຕັງກາລັດວຽນມາລາກາສຊີມາຊານເລັດມາວຣິແມຊິໂ" + + "ດນຽນມາເລອາລຳມອງໂກເລຍມາຣາທີມາເລມອລທີສມຽນມານາຢູລູເອັນເດເບເລເໜືອເນປາລີເອັ" + + "ນດອງກາດັຊນໍເວຈຽນ ນີນອກນໍເວຈຽນ ບັອກມອລນີບີລີໃຕ້ນາວາໂຈນານຈາອັອກຊີຕານໂອຈິ" + + "ບວາໂອໂຣໂມໂອຣິຢາອອດເຊຕິກປັນຈາບີປາລີໂປລິຊປາສໂຕປອກຕຸຍກິສຄີຊົວໂຣແມນຊ໌ຣຸນດິ" + + "ໂຣແມນຽນລັດເຊຍຄິນຢາວານດາສັນສະກຣິດສາດີນຽນສິນທິຊາມິເໜືອແຊງໂກສິນຫາລາສະໂລແວ" + + "ັກສະໂລເວນຽນຊາມົວໂຊນາໂຊມາລີອານບານຽນເຊີບຽນຊຣາຕິໂຊໂທໃຕ້ຊຸນແດນນີສສະວີດິຊຊວ" + + "າຮີລິທາມິລເຕລູກູທາຈິກໄທຕິກຣິນຢາເທີກເມັນເຕສະວານາທອງການເທີຄິຊເຕຊອງກາທາທາ" + + "ຕາຮີຕຽນອຸຍເຄີຢູເຄຣນຽນອູຣດູອຸສເບກເວນດາຫວຽດນາມໂວລາພັກວໍລູມວໍລອບໂຮຊາຢິວໂຢ" + + "ຣູບາຊວາງຈີນຊູລູແອັກຊີເນັສອາໂຄລີອາແດງມີເອດີຮິແອຟີຮີລີອາເຮັມໄອນູອັກກາດຽມ" + + "ອາເລີດອານໄຕໃຕ້ອັງກິດໂບຮານແອນຈີກາອາລາມິກມາພຸດຊີອາຣາປາໂຮອາຣາແວກອາຊູອັສຕູ" + + "ຮຽນອາວາຮິບາລູຊີບາລີເນັດບາຊາບາມຸນໂຄມາລາບີເຈເບັມບາບີນາບາຟັດບາໂລຈີ ພາກຕາເ" + + "ວັນຕົກໂບພູຣິບີຄອນບີນີກົມຊິກຊິກາບຣາໂບດູອາຄຸດບູຣຽດບູຈີເນັດບູລູບລິນເມດູມບ" + + "າແຄດໂດຄາຣິບຄາຢູກາອາດແຊມຊີບູໂນຊີກາຊິບຊາຊາກາໄຕຊູເກດມາຣິຊີນຸກຈາກອນຊອກຕິວຊ" + + "ີພິວຢານຊີໂຣກີຊີເຢນນີໂຊຣານິ ເຄີດິຊຄອບຕິກຄຣີເມນເຕີຄິຊເຊເຊວາ ໂຄຣດ ຝຣັ່ງກາ" + + "ຊູບຽນດາໂກຕາດາກວາໄຕຕາເດລາວາຊີເລັບໂດກຣິບດິນກາຊາມາດອກຣີຊໍບຽນຕໍ່ກວ່າດົວລາດ" + + "ັກກາງໂຈລາ-ຟອນຢີດູລາດາຊາກາເອັມບູອີຟິກອີຢິບບູຮານອີກາຈັກອີລາໄມອັງກິດກາງອີ" + + "ວອນດູແຟງຟີລິປີໂນຟອນຟຮັ່ງເສດກາງຟຮັ່ງເສດໂບຮານຟຣີຊຽນເໜືອຟຣີຊຽນຕາເວັນອອກຟຣ" + + "ີລຽນກາກາກາອຸຊກາໂຢບາຍາກີກິນເບີເທັດເຢຍລະມັນສູງກາງເຢຍລະມັນສູງໂບຮານກອນດີໂກ" + + "ຣອນຕາໂຣກອດຮິກກຣີໂບແອນຊຽນກຣີກສະວິສ ເຈີແມນກູຊິວິດອິນໄຮດາຮາໄວອຽນຮິຣິໄກນອນ" + + "ຮິດໄຕມອງຊໍບຽນ ທາງຕອນເໜືອຮູປາໄອບານໄອໄບໄບໂອໄອໂລໂກອິນກັຊໂລບບັນງອມບາມາແຊມຈ" + + "ູແດວ-ເພີຊຽນຈູແດວ-ອາລາບິກກາຣາ-ການປາກກາໄບລ໌ກາຊິນຈຣູກາມບາກະວີກາບາດຽນຄາແນມ" + + "ບູຕີບມາຄອນເດຄາເວີເດຍນູໂຄໂລຄາສິໂຄຕັນຄອຍຣາ ຊິນີຄາໂກຄາເລັນຈິນຄິມບັນດູໂຄມີ" + + "-ເພີມຢັກກອນການີຄູສໄລກາແປຣກາຣາໄຊ-ບານກາກາເຣລຽນກູຣູກຊຳບາລ້າບາເຟຍໂຄລອກນຽນຄູມ" + + "ີກຄູເທໄນລາດີໂນແລນກິລານດາແລມບາລີຊຽນລາໂກຕາແມັງໂກ້ໂລຊິລູຣິ ທາງຕອນເໜືອລູບາ" + + "-ລູລົວລູເຊໂນລຸນດາລົວລູໄຊລູໄຍມາດູລາມາຟາມາກາຮິໄມທີລິມາກາຊາຣມັນດິງກາມາໄຊມາບ" + + "າມອກຊາມານດາຣເມນເດເມຣູມໍຣິສເຢນໄອລິດກາງມາຄູວາ-ມີດໂຕເມທາມິກແມກທີແນງກາບູແມ" + + "ນຈູມານີພູຣິໂມຫາມອສຊີມັນດັງຫລາຍພາສາຄຣິກມີລັນດາມາວາຣິມໍຢິນເອີຍາມາແຊນເດີລ" + + "ັງນາໂປລີນາມາເຢຍລະມັນ ຕອນໄຕ້ນີວາຣິນີ່ອັດນີ່ອູກວາຊີໂອຈີ່ມບູນນໍໄກນໍໂບຮານເ" + + "ອັນໂກໂຊໂທເໜືອເນີເນວາດັ້ງເດີມນາມວີຊິນານຄອນໂນໂຣນິມາໂອແຊກຕູກີອອດໂຕມັນປານກ" + + "າຊີມານພາລາວີປາມປານກາປາມເປຍເມັນໂທປາລົວອານໄນຈີຣຽນພິດກິນເປີເຊຍໂບຮານຟີນີເຊ" + + "ຍພອນເພໂປວອງຊານໂບຮານKʼicheʼຣາຈັສທານິຣາປານຸຍຣາໂຣທອນການຣົມໂບໂຣເມນີອາໂຣມານ" + + "ຽນອາຣວາຊັນດາວຊາກາສາມາຣິແຕນ-ຊຳບູຣູຊາຊັກຊານທາລິກຳເບຊານກູຊີຊິລີນສກອດພາກໄຕ" + + "້ ຂອງ ກູດິດຊີນີກາຊີນາເຊນຄັບໂຄຍຣາໂບໂຣ ເຊນນິອີຣິຊເກົ່າທາເຊວຫິດຊານອາລັບ-ຊ" + + "າດຊິດາໂມຊາມິໃຕ້ລຸນຊາມິອີນາຣິຊາມິສກອດຊາມິໂຊນິນກີຊອກດິນສຣານນານຕອນໂກເຊເລີ" + + "ຊາໂຮຊູຄູມ້າຊູຊູຊູເມີເລຍໂຄໂນຣຽນຊີເລຍແບບດັ້ງເດີມຊີເລຍທີມເນເຕໂຊເຕເລໂນເຕຕູ" + + "ມໄທກຣີຕີວໂຕເກເລົາຄຣິງກອນທລີງກິດທາມາກເຊກນາຍອາຊາຕອງກາທອກພີຊິນຕາໂລໂກຊີມຊີ" + + "ແອນຕຳບູກາຕູວາລູຕາຊາວັກຕູວີນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູລູດ" + + "ໄວໂວຕິກວັນໂຈວາເຊີວາລາໂມວາເລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແຍງເບນແຢມບາກວາ" + + "ງຕຸ້ງຊາໂປແຕບສັນຍາລັກບລີຊິມເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖານຊູນີບໍ່ມີເນື" + + "້ອຫາພາສາຊາຊາອາຣາບິກມາດຕະຖານສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ ໄຮ ເຈີແມນອັງ" + + "ກິດ (ໂອດສະຕາລີ)ອັງກິດ (ບຣິດທິຊ)ອັງກິດ (ອາເມລິກັນ)ລາຕິນ ອາເມຣິກັນ ສະແປນ" + + "ນິຊສະເປັນ ຢຸໂຣບເມັກຊິກັນ ສະແປນນິຊຟລັງ(ການາດາ)ຊາຊອນ ຕອນໄຕຟລີມິຊປອກຕຸຍກິ" + + "ສ ບະເລຊີ່ນປອກຕຸຍກິສ ຢຸໂຣບໂມດາວຽນເຊີໂບ-ໂກເຊຍຄອງໂກ ຊວາຮີລິຈີນແບບຮຽບງ່າຍຈ" + + "ີນແບບດັ້ງເດີມ" + +var loLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0024, 0x003f, 0x0057, 0x0066, 0x007b, 0x0099, 0x00a8, 0x00c0, 0x00d5, 0x00ea, 0x010b, 0x011a, 0x0138, 0x0150, @@ -17573,149 +20862,150 @@ var loLangIdx = []uint16{ // 610 elements 0x05bc, 0x05dd, 0x05f2, 0x0607, 0x0616, 0x0625, 0x0637, 0x064c, 0x065b, 0x0679, 0x0688, 0x069d, 0x06b2, 0x06c4, 0x06dc, 0x06ee, 0x06fa, 0x0709, 0x071b, 0x072a, 0x074e, 0x075d, 0x0778, 0x078d, - 0x0796, 0x07ae, 0x07d0, 0x07e2, 0x07fd, 0x0818, 0x0827, 0x0848, - 0x0860, 0x0878, 0x088a, 0x0896, 0x08a8, 0x08b7, 0x08c9, 0x08f3, - 0x0905, 0x0920, 0x0929, 0x094e, 0x0979, 0x0994, 0x09a6, 0x09b5, - 0x09d0, 0x09e5, 0x09f7, 0x0a09, 0x0a21, 0x0a36, 0x0a42, 0x0a51, + 0x0796, 0x07ae, 0x07d0, 0x07e2, 0x07fd, 0x0818, 0x0827, 0x0842, + 0x085a, 0x0872, 0x0884, 0x0890, 0x08a2, 0x08b1, 0x08c3, 0x08ed, + 0x08ff, 0x091a, 0x0923, 0x0948, 0x0973, 0x098e, 0x09a0, 0x09af, + 0x09ca, 0x09df, 0x09f1, 0x0a03, 0x0a1b, 0x0a30, 0x0a3c, 0x0a4b, // Entry 80 - BF - 0x0a60, 0x0a7b, 0x0a8a, 0x0a9f, 0x0aae, 0x0ac3, 0x0ad5, 0x0af3, - 0x0b0e, 0x0b23, 0x0b32, 0x0b4a, 0x0b59, 0x0b6e, 0x0b86, 0x0ba1, - 0x0bb0, 0x0bbc, 0x0bce, 0x0be6, 0x0bf8, 0x0c07, 0x0c1c, 0x0c37, - 0x0c4c, 0x0c61, 0x0c70, 0x0c82, 0x0c91, 0x0c97, 0x0caf, 0x0cc7, - 0x0cdf, 0x0cf1, 0x0d03, 0x0d18, 0x0d24, 0x0d39, 0x0d4b, 0x0d63, - 0x0d72, 0x0d84, 0x0d93, 0x0da8, 0x0dbd, 0x0dcc, 0x0ddb, 0x0de7, - 0x0df0, 0x0e02, 0x0e0e, 0x0e17, 0x0e23, 0x0e41, 0x0e53, 0x0e68, - 0x0e7a, 0x0e7a, 0x0e92, 0x0ea4, 0x0eb0, 0x0ec8, 0x0ec8, 0x0eda, + 0x0a5a, 0x0a75, 0x0a84, 0x0a99, 0x0aa8, 0x0abd, 0x0acf, 0x0aed, + 0x0b08, 0x0b1d, 0x0b2c, 0x0b44, 0x0b53, 0x0b68, 0x0b80, 0x0b9b, + 0x0baa, 0x0bb6, 0x0bc8, 0x0be0, 0x0bf2, 0x0c01, 0x0c16, 0x0c31, + 0x0c46, 0x0c5b, 0x0c6a, 0x0c7c, 0x0c8b, 0x0c91, 0x0ca9, 0x0cc1, + 0x0cd9, 0x0ceb, 0x0cfd, 0x0d12, 0x0d1e, 0x0d33, 0x0d45, 0x0d5d, + 0x0d6c, 0x0d7e, 0x0d8d, 0x0da2, 0x0db7, 0x0dc6, 0x0dd5, 0x0de1, + 0x0dea, 0x0dfc, 0x0e08, 0x0e11, 0x0e1d, 0x0e3b, 0x0e4d, 0x0e62, + 0x0e74, 0x0e74, 0x0e8c, 0x0e9e, 0x0eaa, 0x0ec2, 0x0ec2, 0x0ed4, // Entry C0 - FF - 0x0eda, 0x0ef2, 0x0f13, 0x0f28, 0x0f3d, 0x0f5b, 0x0f5b, 0x0f73, - 0x0f73, 0x0f88, 0x0f88, 0x0f88, 0x0f94, 0x0f94, 0x0fac, 0x0fac, - 0x0fbe, 0x0fd0, 0x0fe8, 0x0fe8, 0x0ff4, 0x1003, 0x1003, 0x1015, - 0x1021, 0x1033, 0x1033, 0x103f, 0x104e, 0x104e, 0x1085, 0x1097, - 0x10a6, 0x10b2, 0x10b2, 0x10bb, 0x10d0, 0x10d0, 0x10d0, 0x10d9, - 0x10d9, 0x10e5, 0x10f4, 0x1103, 0x111b, 0x1127, 0x1133, 0x1148, - 0x1157, 0x1166, 0x1178, 0x118a, 0x119c, 0x11a8, 0x11b7, 0x11c9, - 0x11d8, 0x11e4, 0x1202, 0x1214, 0x122c, 0x123e, 0x1253, 0x1278, + 0x0ed4, 0x0eec, 0x0f0d, 0x0f22, 0x0f37, 0x0f4c, 0x0f4c, 0x0f64, + 0x0f64, 0x0f64, 0x0f79, 0x0f79, 0x0f79, 0x0f85, 0x0f85, 0x0f9d, + 0x0f9d, 0x0faf, 0x0fc1, 0x0fd9, 0x0fd9, 0x0fe5, 0x0ff4, 0x0ff4, + 0x1006, 0x1012, 0x1024, 0x1024, 0x1030, 0x103f, 0x103f, 0x1076, + 0x1088, 0x1097, 0x10a3, 0x10a3, 0x10ac, 0x10c1, 0x10c1, 0x10c1, + 0x10ca, 0x10ca, 0x10d6, 0x10e5, 0x10f4, 0x110c, 0x1118, 0x1124, + 0x1139, 0x1148, 0x1157, 0x1169, 0x117b, 0x118d, 0x1199, 0x11a8, + 0x11ba, 0x11c9, 0x11d5, 0x11f3, 0x1205, 0x121d, 0x122f, 0x1244, // Entry 100 - 13F - 0x128a, 0x128a, 0x12ae, 0x12c3, 0x12d5, 0x12e4, 0x12f0, 0x1302, - 0x1314, 0x1326, 0x1335, 0x1341, 0x1350, 0x1374, 0x1374, 0x1383, - 0x1395, 0x13b1, 0x13bd, 0x13cf, 0x13e1, 0x13f0, 0x13f0, 0x140e, - 0x1423, 0x1435, 0x1450, 0x1450, 0x1465, 0x1465, 0x146e, 0x1486, - 0x1486, 0x148f, 0x148f, 0x14b0, 0x14d7, 0x14d7, 0x14f5, 0x1522, - 0x1534, 0x153a, 0x154f, 0x154f, 0x155b, 0x1567, 0x1567, 0x156d, - 0x158b, 0x158b, 0x15b5, 0x15e5, 0x15e5, 0x15f4, 0x160f, 0x1621, - 0x1630, 0x164e, 0x1670, 0x1670, 0x1670, 0x167c, 0x168e, 0x169a, + 0x1269, 0x127b, 0x127b, 0x129f, 0x12ce, 0x12e3, 0x12f5, 0x1304, + 0x1310, 0x1322, 0x1334, 0x1346, 0x1355, 0x1361, 0x1370, 0x1394, + 0x1394, 0x13a3, 0x13b5, 0x13d1, 0x13dd, 0x13ef, 0x1401, 0x1410, + 0x1410, 0x142e, 0x1443, 0x1455, 0x1470, 0x1470, 0x1485, 0x1485, + 0x148e, 0x14a6, 0x14a6, 0x14af, 0x14af, 0x14d0, 0x14f7, 0x14f7, + 0x1515, 0x1542, 0x1554, 0x155a, 0x156f, 0x156f, 0x157b, 0x1587, + 0x1587, 0x158d, 0x15ab, 0x15ab, 0x15d5, 0x1605, 0x1605, 0x1614, + 0x162f, 0x1641, 0x1650, 0x166e, 0x1690, 0x1690, 0x1690, 0x169c, // Entry 140 - 17F - 0x169a, 0x16af, 0x16af, 0x16ca, 0x16d9, 0x16e2, 0x1710, 0x1710, - 0x171c, 0x172b, 0x1743, 0x1755, 0x1767, 0x1767, 0x1767, 0x1779, - 0x1788, 0x1797, 0x17b9, 0x17de, 0x17de, 0x17fd, 0x180f, 0x181e, - 0x1827, 0x1836, 0x1842, 0x1857, 0x186c, 0x1875, 0x188a, 0x18a8, - 0x18a8, 0x18b4, 0x18b4, 0x18c0, 0x18cf, 0x18eb, 0x18eb, 0x18eb, - 0x18f7, 0x1912, 0x192a, 0x194c, 0x1961, 0x1970, 0x197f, 0x19a1, - 0x19a1, 0x19a1, 0x19b6, 0x19c5, 0x19da, 0x19e9, 0x1a01, 0x1a10, - 0x1a22, 0x1a34, 0x1a43, 0x1a52, 0x1a61, 0x1a70, 0x1a70, 0x1a70, + 0x16ae, 0x16ba, 0x16ba, 0x16cf, 0x16cf, 0x16ea, 0x16f9, 0x1702, + 0x1730, 0x1730, 0x173c, 0x174b, 0x1763, 0x1775, 0x1787, 0x1787, + 0x1787, 0x1799, 0x17a8, 0x17b7, 0x17d9, 0x17fe, 0x17fe, 0x181d, + 0x182f, 0x183e, 0x1847, 0x1856, 0x1862, 0x1877, 0x188c, 0x1895, + 0x18aa, 0x18c8, 0x18c8, 0x18d4, 0x18d4, 0x18e0, 0x18ef, 0x190b, + 0x190b, 0x190b, 0x1917, 0x1932, 0x194a, 0x196c, 0x1981, 0x1990, + 0x199f, 0x19c1, 0x19c1, 0x19c1, 0x19d6, 0x19e5, 0x19fa, 0x1a09, + 0x1a21, 0x1a30, 0x1a42, 0x1a54, 0x1a63, 0x1a72, 0x1a81, 0x1a90, // Entry 180 - 1BF - 0x1a70, 0x1a82, 0x1a82, 0x1a97, 0x1aa3, 0x1ace, 0x1ace, 0x1aea, - 0x1afc, 0x1b0b, 0x1b14, 0x1b20, 0x1b2c, 0x1b2c, 0x1b2c, 0x1b3e, - 0x1b4a, 0x1b5c, 0x1b6e, 0x1b83, 0x1b9b, 0x1ba7, 0x1bb3, 0x1bc2, - 0x1bd4, 0x1be3, 0x1bef, 0x1c07, 0x1c1f, 0x1c41, 0x1c4d, 0x1c5f, - 0x1c7a, 0x1c89, 0x1ca1, 0x1cad, 0x1cbc, 0x1cbc, 0x1cce, 0x1ce6, - 0x1cf2, 0x1d07, 0x1d19, 0x1d19, 0x1d28, 0x1d37, 0x1d58, 0x1d58, - 0x1d6a, 0x1d76, 0x1da1, 0x1db3, 0x1dc5, 0x1dd4, 0x1dd4, 0x1de9, - 0x1dfe, 0x1e0a, 0x1e1f, 0x1e1f, 0x1e31, 0x1e49, 0x1e52, 0x1e76, + 0x1a90, 0x1a90, 0x1a90, 0x1aa2, 0x1aa2, 0x1ab7, 0x1ac3, 0x1aee, + 0x1aee, 0x1b0a, 0x1b1c, 0x1b2b, 0x1b34, 0x1b40, 0x1b4c, 0x1b4c, + 0x1b4c, 0x1b5e, 0x1b6a, 0x1b7c, 0x1b8e, 0x1ba3, 0x1bbb, 0x1bc7, + 0x1bd3, 0x1be2, 0x1bf4, 0x1c03, 0x1c0f, 0x1c27, 0x1c3f, 0x1c61, + 0x1c6d, 0x1c7f, 0x1c9a, 0x1ca9, 0x1cc1, 0x1ccd, 0x1cdc, 0x1cdc, + 0x1cee, 0x1d06, 0x1d12, 0x1d27, 0x1d39, 0x1d39, 0x1d48, 0x1d57, + 0x1d78, 0x1d78, 0x1d8a, 0x1d96, 0x1dc1, 0x1dd3, 0x1de5, 0x1df4, + 0x1df4, 0x1e09, 0x1e1e, 0x1e2a, 0x1e3f, 0x1e3f, 0x1e51, 0x1e69, // Entry 1C0 - 1FF - 0x1e8b, 0x1e9d, 0x1ea9, 0x1eb5, 0x1ec4, 0x1ee8, 0x1f06, 0x1f18, - 0x1f30, 0x1f54, 0x1f6c, 0x1f6c, 0x1f6c, 0x1f6c, 0x1f8d, 0x1f8d, - 0x1fa2, 0x1fa2, 0x1fa2, 0x1fb1, 0x1fb1, 0x1fd8, 0x1fe1, 0x1fe1, - 0x1ffc, 0x2011, 0x202f, 0x202f, 0x202f, 0x203e, 0x2050, 0x2050, - 0x2050, 0x2050, 0x206b, 0x207a, 0x208c, 0x2098, 0x20b4, 0x20c6, - 0x20d5, 0x20ea, 0x20ea, 0x20f6, 0x2105, 0x211a, 0x2126, 0x2126, - 0x2152, 0x2152, 0x215e, 0x215e, 0x2170, 0x219b, 0x21b9, 0x21b9, - 0x21d1, 0x21e3, 0x21fc, 0x220e, 0x220e, 0x220e, 0x2223, 0x2238, + 0x1e72, 0x1e96, 0x1eab, 0x1ebd, 0x1ec9, 0x1ed5, 0x1ee4, 0x1f08, + 0x1f26, 0x1f38, 0x1f50, 0x1f74, 0x1f8c, 0x1f8c, 0x1fb3, 0x1fb3, + 0x1fb3, 0x1fd4, 0x1fd4, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ff8, 0x1ff8, + 0x201f, 0x2028, 0x2028, 0x2043, 0x2058, 0x2076, 0x2076, 0x2076, + 0x2085, 0x2097, 0x2097, 0x2097, 0x2097, 0x20b2, 0x20c1, 0x20d3, + 0x20df, 0x20fb, 0x210d, 0x211c, 0x2131, 0x2131, 0x213d, 0x214c, + 0x2161, 0x216d, 0x216d, 0x2199, 0x21ab, 0x21b7, 0x21b7, 0x21c9, + 0x21f4, 0x2212, 0x2212, 0x222a, 0x2233, 0x224c, 0x225e, 0x225e, // Entry 200 - 23F - 0x2256, 0x226e, 0x2283, 0x2295, 0x22b9, 0x22c8, 0x22d4, 0x22d4, - 0x22e9, 0x22f5, 0x230d, 0x2322, 0x2352, 0x2361, 0x2361, 0x2361, - 0x2370, 0x237c, 0x238e, 0x239d, 0x23ac, 0x23b5, 0x23cd, 0x23cd, - 0x23e2, 0x23f7, 0x23f7, 0x240f, 0x2433, 0x244b, 0x244b, 0x245d, - 0x245d, 0x2475, 0x2475, 0x2487, 0x2499, 0x24ae, 0x24c3, 0x24f5, - 0x2507, 0x251c, 0x2531, 0x253a, 0x2540, 0x2540, 0x2540, 0x2540, - 0x2540, 0x254f, 0x254f, 0x255e, 0x256d, 0x257f, 0x258b, 0x2597, - 0x25ac, 0x25ac, 0x25be, 0x25be, 0x25ca, 0x25d9, 0x25e2, 0x25f4, + 0x225e, 0x2273, 0x2288, 0x22a6, 0x22be, 0x22d3, 0x22e5, 0x2309, + 0x2318, 0x2324, 0x2324, 0x2339, 0x2345, 0x235d, 0x2372, 0x23a2, + 0x23b1, 0x23b1, 0x23b1, 0x23c0, 0x23cc, 0x23de, 0x23ed, 0x23fc, + 0x2405, 0x241d, 0x241d, 0x2432, 0x2447, 0x2447, 0x245f, 0x2483, + 0x249b, 0x249b, 0x24ad, 0x24ad, 0x24c5, 0x24c5, 0x24d7, 0x24e9, + 0x24fe, 0x2513, 0x2545, 0x2557, 0x256c, 0x2581, 0x258a, 0x2590, + 0x2590, 0x2590, 0x2590, 0x2590, 0x259f, 0x259f, 0x25ae, 0x25bd, + 0x25cf, 0x25db, 0x25e7, 0x25fc, 0x25fc, 0x260e, 0x260e, 0x261a, // Entry 240 - 27F - 0x2603, 0x2603, 0x261b, 0x2630, 0x265a, 0x265a, 0x266c, 0x26b6, - 0x26c2, 0x26f2, 0x26fe, 0x2740, 0x2740, 0x2770, 0x2799, 0x27c9, - 0x27c9, 0x27f3, 0x2823, 0x2867, 0x2889, 0x28bd, 0x28bd, 0x28dd, - 0x28dd, 0x28fc, 0x290e, 0x2942, 0x296d, 0x2982, 0x29a1, 0x29c6, - 0x29ed, 0x2a17, -} // Size: 1244 bytes - -var ltLangStr string = "" + // Size: 5831 bytes + 0x2629, 0x2632, 0x2644, 0x2653, 0x2653, 0x266b, 0x2680, 0x26aa, + 0x26aa, 0x26bc, 0x2706, 0x2712, 0x2742, 0x274e, 0x2790, 0x2790, + 0x27c0, 0x27e9, 0x2819, 0x2819, 0x2843, 0x2873, 0x28b7, 0x28d9, + 0x290d, 0x290d, 0x292d, 0x292d, 0x294c, 0x295e, 0x2992, 0x29bd, + 0x29d2, 0x29f1, 0x2a16, 0x2a3d, 0x2a67, +} // Size: 1250 bytes + +const ltLangStr string = "" + // Size: 5947 bytes "afarųabchazųavestųafrikanųakanųamharųaragonesųarabųasamųavarikųaimarųaze" + "rbaidžaniečiųbaškirųbaltarusiųbulgarųbislamabambarųbengalųtibetiečiųbret" + "onųbosniųkatalonųčečėnųčamorųkorsikiečiųkryčekųbažnytinė slavųčiuvašųval" + - "ųdanųvokiečiųdivehibotijųeviųgraikųanglųesperantoispanųestųbaskųpersųfu" + + "ųdanųvokiečiųdivehųbotijųeviųgraikųanglųesperantoispanųestųbaskųpersųfu" + "lahųsuomiųfidžiųfarerųprancūzųvakarų fryzųairiųškotų (gėlų)galisųgvarani" + "ųgudžaratųmeniečiųhausųhebrajųhindihiri motukroatųHaičiovengrųarmėnųher" + - "erointerlingvaindoneziečiųinterkalbaigbųsičuan jiinupiakidoislandųitalųi" + - "nukitutjaponųjaviečiųgruzinųKongokikujųkuaniamakazachųkalalisutkhmerųkan" + - "adųkorėjiečiųkanurikašmyrųkurdųkomikornųkirgizųlotynųliuksemburgiečiųgan" + - "dalimburgišngalųlaosiečiųlietuviųluba katangalatviųmalagasųMaršalo Salųm" + - "aoriųmakedonųmalajaliųmongolųmaratųmalajiečiųmaltiečiųbirmiečiųnaurųšiau" + - "rės ndebelųnepaliečiųndongųolandųnaujoji norvegųNorvegijos rašytinė – bū" + - "kmolųpietų ndebelenavajųnianjaočitarųojibvaoromųorijųosetinųpendžabųpali" + - "lenkųpuštūnųportugalųkečujųretoromanųrundirumunųrusųkinjaruandųsanskrita" + - "ssardiniečiųsindųšiaurės samiųsangosinhalųslovakųslovėnųsamoašonųsomalie" + - "čiųalbanųserbųsvatipietų sesutosundųšvedųsuahiliųtamilųtelugųtadžikųtaj" + - "ųtigrajųturkmėnųtsvanatonganųturkųtsongatotoriųtaitiečiųuigūrųukrainieč" + - "iųurdųuzbekųvendavietnamiečiųvolapiukvalonųvolofųkosųjidišjorubųchuangki" + - "nųzulųačinezųakoliųadangmųadygėjųTuniso arabųafrihiliaghemųainųakadianųa" + - "labamiečiųaleutųalbanų kalbos gegų tarmėpietų Altajaussenoji anglųangikų" + - "aramaikųmapudungunųaraonųarapahųAlžyro arabųaravakųMaroko arabųEgipto ar" + - "abųasuAmerikos ženklų kalbaasturianųkotavaavadhibalučibalinezųbavarųbasų" + - "bamunųbatak tobaghomalųbėjųbembųbetavibenųbafutųbadagavakarų beludžiųbau" + - "čpuribikolųbinibandžarųkomųsiksikaBišnuprijosbakhtiaribrajųbrahujųbodoa" + - "kūsųburiatųbuginezųbulublinmedumbųkadokaribųkaijūgųatsamųcebuanųčigųčibč" + - "ačagatųčukesųmaričinuk žargonasčoktaučipvėjųčerokiųčajenųsoranių kurdųko" + - "ptųcapiznonKrymo turkųkašubųdakotųdargvataitųdelaveroslavedogribųdinkųza" + - "rmųdogrižemutinių sorbųcentrinio DusunodualųVidurio Vokietijosdžiola-fon" + - "idyulųdazagųembuefikitalų kalbos Emilijos tarmėsenovės egiptiečiųekajuke" + - "lamitųVidurio Anglijoscentrinės Aliaskos jupikųevondoispanų kalbos Ekstr" + - "emadūros tarmėfangfilipiniečiųsuomių kalbos Tornedalio tarmėfonkadžunų p" + - "rancūzųVidurio Prancūzijossenoji prancūzųArpitanošiaurinių fryzųrytų fry" + - "zųfrulangagagaūzųkinų kalbos dziangsi tarmėgajogbajazoroastrų darigyzkir" + - "ibatigilakiVidurio Aukštosios VokietijosSenoji Aukštosios VokietijosGoa " + - "konkaniųgondigorontalogotųgrebosenovės graikųŠveicarijos vokiečiųvajųfra" + - "fragusigvičinohaidokinų kalbos hakų tarmėhavajiečiųFidžio hindihiligaino" + - "nhititųhmongaukštutinių sorbųkinų kalbos hunano tarmėhupaibanibibioiloko" + - "ingušųingrųJamaikos kreolų anglųloibanngombųmačamųjudėjų persųjudėjų ara" + - "bųdanų kalbos jutų tarmėkarakalpakųkebailųkačinjukembųkavikabardinųkanem" + - "bųtyapmakondųŽaliojo Kyšulio kreolųkenyangkorokaingangkasikotanezųkojra " + - "činikhovarųkirmanjkikakokalenjinųkimbundukomių-permiųkonkaniųkosreanųkp" + - "elekaračiajų balkarijoskriokinaray-akarelųkurukšambalųbafųkolognųkumikųk" + - "utenailadinolangilandalambalezginųnaujoji frankų kalbaligūrųlyviųlakotųl" + - "ombardųmongolozišiaurės lurilatgaliųluba lulualuisenolundaluomizolujakla" + - "sikinė kinųlazmadurezųmafųmagahimaithilimakasaromandingomasajųmabųmokšam" + - "andarmendemerųmorisijųVidurio Airijosmakua-maetometamikmakminankabumanču" + - "manipurimohokmosivakarų marimundangųkelios kalboskrykųmirandezųmarvarime" + - "ntavaimjenųerzyjųmazenderaniųkinų kalbos pietų minų tarmėneapoliečiųnama" + - "Žemutinės Vokietijosnevariniasniuenųao nagakvasiųngiembūnųnogųnorsunovi" + - "alenkošiaurės sothųnuerųklasikinė nevariniamveziniankolųnioronzimaosageo" + - "smanų turkųpangasinanpahlavipampangapapiementopalaupikardųPensilvanijos " + - "vokiečiųvokiečių kalbos žemaičių tarmėsenoji persųvokiečių kalbos Pfalco" + - " tarmėfinikiečiųitalų kalbos Pjemonto tarmėPontoPonapėsprūsųsenovės prov" + - "ansalųkičiųČimboraso aukštumų kečujųradžastanorapanuirarotonganitalų kal" + - "bos Romanijos tarmėrifųromboromųrotumanųrusinųRovianosaromaniųruasandavi" + - "jakutųsamarėjų aramiųsambūrųsasaksantalisauraštrųngambajųsangųsiciliečių" + - "škotųsasaresų sardinųpietų kurdųsenecųsenųseriselkupkojraboro senisenoj" + - "i airiųžemaičiųtachelhitųšanchadian arabųsidamosileziečių žemaičiųselaja" + - "rųpietų samiųLulėjo samiųInario samiųSkolto samiųsoninkesogdiensranan to" + - "ngosererųsahoSaterlendo fryzųsukumasusušumerųKomorųklasikinė siriečiųsir" + - "ųsileziečiųtulųtimnetesoterenotetumtigretivtokelautsakurųklingonųtlingi" + - "ttalyšųtamašekniasa tongostok pisinturoyotarokotsakonųtsimšianmusulmonų " + - "tatųtumbukųtuvalutasavakųtuviųCentrinio Maroko tamazitųudmurtųugariticum" + - "bundurūtvaivenetųvepsųvakarų flamandųpagrindinė frankonųvotikvõrovunjova" + - "lserųvalamovaraivašovalrpirikinų kalbos vu tarmėkalmukųmegrelųsogųjaojap" + - "ezųjangbenųjembųnjengatukinų kalbos Kantono tarmėzapotekų„Bliss“ simboli" + - "ųzelandųzenagastandartinė Maroko tamazigtųzuninėra kalbinio turiniozaza" + + "erųtarpinėindoneziečiųinterkalbaigbųsičuan jiinupiakųidoislandųitalųinuk" + + "itutjaponųjaviečiųgruzinųKongokikujųkuaniamakazachųkalalisutkhmerųkanadų" + + "korėjiečiųkanuriųkašmyrųkurdųkomikornųkirgizųlotynųliuksemburgiečiųganda" + + "limburgiečiųngalųlaosiečiųlietuviųluba katangalatviųmalagasųMaršalo Salų" + + "maoriųmakedonųmalajaliųmongolųmaratųmalajiečiųmaltiečiųbirmiečiųnaurųšia" + + "urės ndebelųnepaliečiųndongųolandųnaujoji norvegųnorvegų bukmolaspietų n" + + "debelenavajųnianjųočitarųojibvaoromųodijųosetinųpendžabųpalilenkųpuštūnų" + + "portugalųkečujųretoromanųrundirumunųrusųkinjaruandųsanskritassardiniečių" + + "sindųšiaurės samiųsangosinhalųslovakųslovėnųSamoašonųsomaliečiųalbanųser" + + "bųsvatųpietų Sotosundųšvedųsuahiliųtamilųtelugųtadžikųtajųtigrajųturkmėn" + + "ųtsvanųtonganųturkųtsongųtotoriųtaitiečiųuigūrųukrainiečiųurdųuzbekųven" + + "dųvietnamiečiųvolapiukovalonųvolofųkosųjidišjorubųchuangkinųzulųačinezųa" + + "koliųadangmųadygėjųTuniso arabųafrihiliaghemųainųakadianųalabamiečiųaleu" + + "tųalbanų kalbos gegų tarmėpietų Altajaussenoji anglųangikųaramaikųmapudu" + + "ngunųaraonųarapahųAlžyro arabųaravakųMaroko arabųEgipto arabųasuAmerikos" + + " ženklų kalbaasturianųkotavaavadhibalučibaliečiųbavarųbasųbamunųbatak to" + + "baghomalųbėjųbembųbetavibenųbafutųbadagavakarų beludžiųbaučpuribikolųbin" + + "ibandžarųkomųsiksikųbišnuprijosbakhtiaribrajųbrahujųbodoakūsųburiatųbugi" + + "nezųbulublinmedumbųkadokaribųkaijūgųatsamųsebuanųčigųčibčųčagatųčukesųma" + + "riųčinuk žargonasčoktaučipvėjųčerokiųčajenųsoranių kurdųkoptųcapiznonKry" + + "mo turkųSeišelių kreolų ir prancūzųkašubųdakotųdargvataitųdelaveroslaved" + + "ogribųdinkųzarmųdogrižemutinių sorbųcentrinio DusunodualųVidurio Vokieti" + + "josdžiola-fonidyulųdazagųembuefikitalų kalbos Emilijos tarmėsenovės egip" + + "tiečiųekajukelamitųVidurio Anglijoscentrinės Aliaskos jupikųevondoispanų" + + " kalbos Ekstremadūros tarmėfangųfilipiniečiųsuomių kalbos Tornedalio tar" + + "mėfonkadžunų prancūzųVidurio Prancūzijossenoji prancūzųarpitanošiaurinių" + + " fryzųrytų fryzųfriuliųgagagaūzųkinų kalbos dziangsi tarmėgajogbajazoroa" + + "strų darigyzkiribatigilakiVidurio Aukštosios Vokietijossenoji Aukštosios" + + " VokietijosGoa konkaniųgondigorontalogotųgrebosenovės graikųŠveicarijos " + + "vokiečiųvajųfrafragusigvičinohaidokinų kalbos hakų tarmėhavajiečiųFidžio" + + " hindihiligainonųhititųhmongaukštutinių sorbųkinų kalbos hunano tarmėhup" + + "aibanibibijųilokųingušųingrųJamaikos kreolų anglųloibanngombųmačamųjudėj" + + "ų persųjudėjų arabųdanų kalbos jutų tarmėkarakalpakųkebailųkačinųjukemb" + + "ųkaviųkabardinųkanembųtyapmakondųŽaliojo Kyšulio kreolųkenyangkorokaing" + + "angkasikotanezųkojra činikhovarųkirmanjkikakokalenjinųkimbundukomių-perm" + + "iųkonkaniųkosreanųkpeliųkaračiajų balkarijoskriokinaray-akarelųkurukšamb" + + "alųbafųkolognųkumikųkutenailadinolangilandalambalezginųnaujoji frankų ka" + + "lbaligūrųlyviųlakotųlombardųmongųloziųšiaurės lurilatgaliųluba lulualuis" + + "enoLundosluomizolujaklasikinė kinųlazmadurezųmafųmagahimaithiliMakasarom" + + "andingųmasajųmabųmokšamandarųmendemerųmorisijųVidurio Airijosmakua-maeto" + + "metamikmakųminangkabaumančumanipuriųmohokmosivakarų marimundangųkelios k" + + "alboskrykųmirandezųmarvarimentavaimjenųerzyjųmazenderaniųkinų kalbos pie" + + "tų minų tarmėneapoliečiųnamaŽemutinės Vokietijosnevariniasniujiečiųao na" + + "gakvasiųngiembūnųnogųsenoji norsųnovialenkošiaurės Sotonuerųklasikinė ne" + + "variniamveziniankolųniorųnzimaosageosmanų turkųpangasinanųvidurinė persų" + + " kalbapampangųpapiamentopalauliečiųpikardųNigerijos pidžinųPensilvanijos" + + " vokiečiųvokiečių kalbos žemaičių tarmėsenoji persųvokiečių kalbos Pfalc" + + "o tarmėfinikiečiųitalų kalbos Pjemonto tarmėPontoPonapėsprūsųsenovės pro" + + "vansalųkičiųČimboraso aukštumų kečujųRadžastanorapanuirarotonganųitalų k" + + "albos Romanijos tarmėrifųromboromųrotumanųrusinųRovianosaromaniųruasanda" + + "viųjakutųsamarėjų aramiųsambūrųsasaksantaliųsauraštrųngambajųsangųsicili" + + "ečiųškotųsasaresų sardinųpietų kurdųsenecųsenųseriselkupkojraboro senise" + + "noji airiųžemaičiųtachelhitųšanchadian arabųsidamųsileziečių žemaičiųsel" + + "ajarųpietų samiųLiuleo samiųInario samiųSkolto samiųsoninkesogdiensranan" + + " tongosererųsahoSaterlendo fryzųsukumasusušumerųkomorųklasikinė sirųsirų" + + "sileziečiųtulųtimnetesoTerenotetumtigretivTokelautsakurųklingonųtlingitų" + + "talyšųtamašekniasa tongųPapua pidžinųturoyoTarokotsakonųtsimšianmusulmon" + + "ų tatųtumbukųTuvalutasavakųtuviųCentrinio Maroko tamazitųudmurtųugaritų" + + "umbundurūtvaivenetųvepsųvakarų flamandųpagrindinė frankonųVotikveruvunjo" + + "valserųvalamovaraiVašovalrpirikinų kalbos vu tarmėkalmukųmegrelųsogųjaoj" + + "apezųjangbenųjembųnjengatukinų kalbos Kantono tarmėzapotekųBLISS simboli" + + "ųzelandųzenagastandartinė Maroko tamazigtųZuninėra kalbinio turiniozaza" + "šiuolaikinė standartinė arabųAustrijos vokiečiųŠveicarijos aukštutinė v" + "okiečiųAustralijos anglųKanados anglųDidžiosios Britanijos anglųJungtini" + "ų Valstijų anglųLotynų Amerikos ispanųEuropos ispanųMeksikos ispanųKana" + @@ -17723,104 +21013,104 @@ var ltLangStr string = "" + // Size: 5831 bytes "dųBrazilijos portugalųEuropos portugalųmoldavųserbų-kroatųKongo suahilių" + "supaprastintoji kinųtradicinė kinų" -var ltLangIdx = []uint16{ // 610 elements +var ltLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0006, 0x000e, 0x0015, 0x001e, 0x0024, 0x002b, 0x0035, 0x003b, 0x0041, 0x0049, 0x0050, 0x0063, 0x006c, 0x0077, 0x007f, 0x0086, 0x008e, 0x0096, 0x00a2, 0x00aa, 0x00b1, 0x00ba, 0x00c4, 0x00cc, 0x00d9, 0x00dc, 0x00e2, 0x00f4, 0x00fe, 0x0103, 0x0108, - 0x0112, 0x0118, 0x011f, 0x0124, 0x012b, 0x0131, 0x013a, 0x0141, - 0x0146, 0x014c, 0x0152, 0x0159, 0x0160, 0x0168, 0x016f, 0x0179, - 0x0187, 0x018d, 0x019d, 0x01a4, 0x01ad, 0x01b8, 0x01c2, 0x01c8, - 0x01d0, 0x01d5, 0x01de, 0x01e5, 0x01ec, 0x01f3, 0x01fb, 0x0201, + 0x0112, 0x0119, 0x0120, 0x0125, 0x012c, 0x0132, 0x013b, 0x0142, + 0x0147, 0x014d, 0x0153, 0x015a, 0x0161, 0x0169, 0x0170, 0x017a, + 0x0188, 0x018e, 0x019e, 0x01a5, 0x01ae, 0x01b9, 0x01c3, 0x01c9, + 0x01d1, 0x01d6, 0x01df, 0x01e6, 0x01ed, 0x01f4, 0x01fc, 0x0203, // Entry 40 - 7F - 0x020c, 0x021a, 0x0224, 0x0229, 0x0233, 0x023a, 0x023d, 0x0245, - 0x024b, 0x0253, 0x025a, 0x0264, 0x026c, 0x0271, 0x0278, 0x0280, - 0x0288, 0x0291, 0x0298, 0x029f, 0x02ac, 0x02b2, 0x02bb, 0x02c1, - 0x02c5, 0x02cb, 0x02d3, 0x02da, 0x02ec, 0x02f1, 0x02fb, 0x0301, - 0x030c, 0x0315, 0x0321, 0x0328, 0x0331, 0x033f, 0x0346, 0x034f, - 0x0359, 0x0361, 0x0368, 0x0374, 0x037f, 0x038a, 0x0390, 0x03a2, - 0x03ae, 0x03b5, 0x03bc, 0x03cc, 0x03ef, 0x03fd, 0x0404, 0x040a, - 0x0413, 0x0419, 0x041f, 0x0425, 0x042d, 0x0437, 0x043b, 0x0441, + 0x020b, 0x0219, 0x0223, 0x0228, 0x0232, 0x023b, 0x023e, 0x0246, + 0x024c, 0x0254, 0x025b, 0x0265, 0x026d, 0x0272, 0x0279, 0x0281, + 0x0289, 0x0292, 0x0299, 0x02a0, 0x02ad, 0x02b5, 0x02be, 0x02c4, + 0x02c8, 0x02ce, 0x02d6, 0x02dd, 0x02ef, 0x02f4, 0x0302, 0x0308, + 0x0313, 0x031c, 0x0328, 0x032f, 0x0338, 0x0346, 0x034d, 0x0356, + 0x0360, 0x0368, 0x036f, 0x037b, 0x0386, 0x0391, 0x0397, 0x03a9, + 0x03b5, 0x03bc, 0x03c3, 0x03d3, 0x03e4, 0x03f2, 0x03f9, 0x0400, + 0x0409, 0x040f, 0x0415, 0x041b, 0x0423, 0x042d, 0x0431, 0x0437, // Entry 80 - BF - 0x044b, 0x0455, 0x045d, 0x0468, 0x046d, 0x0474, 0x0479, 0x0485, - 0x048f, 0x049c, 0x04a2, 0x04b2, 0x04b7, 0x04bf, 0x04c7, 0x04d0, - 0x04d5, 0x04db, 0x04e7, 0x04ee, 0x04f4, 0x04f9, 0x0506, 0x050c, - 0x0513, 0x051c, 0x0523, 0x052a, 0x0533, 0x0538, 0x0540, 0x054a, - 0x0550, 0x0558, 0x055e, 0x0564, 0x056c, 0x0577, 0x057f, 0x058c, - 0x0591, 0x0598, 0x059d, 0x05ab, 0x05b3, 0x05ba, 0x05c1, 0x05c6, - 0x05cc, 0x05d3, 0x05d9, 0x05de, 0x05e3, 0x05ec, 0x05f3, 0x05fb, - 0x0604, 0x0611, 0x0619, 0x0620, 0x0625, 0x062e, 0x063b, 0x0642, + 0x0441, 0x044b, 0x0453, 0x045e, 0x0463, 0x046a, 0x046f, 0x047b, + 0x0485, 0x0492, 0x0498, 0x04a8, 0x04ad, 0x04b5, 0x04bd, 0x04c6, + 0x04cb, 0x04d1, 0x04dd, 0x04e4, 0x04ea, 0x04f0, 0x04fb, 0x0501, + 0x0508, 0x0511, 0x0518, 0x051f, 0x0528, 0x052d, 0x0535, 0x053f, + 0x0546, 0x054e, 0x0554, 0x055b, 0x0563, 0x056e, 0x0576, 0x0583, + 0x0588, 0x058f, 0x0595, 0x05a3, 0x05ac, 0x05b3, 0x05ba, 0x05bf, + 0x05c5, 0x05cc, 0x05d2, 0x05d7, 0x05dc, 0x05e5, 0x05ec, 0x05f4, + 0x05fd, 0x060a, 0x0612, 0x0619, 0x061e, 0x0627, 0x0634, 0x063b, // Entry C0 - FF - 0x065d, 0x066c, 0x0679, 0x0680, 0x0689, 0x0695, 0x069c, 0x06a4, - 0x06b2, 0x06ba, 0x06c7, 0x06d4, 0x06d7, 0x06ee, 0x06f8, 0x06fe, - 0x0704, 0x070b, 0x0714, 0x071b, 0x0720, 0x0727, 0x0731, 0x0739, - 0x073f, 0x0745, 0x074b, 0x0750, 0x0757, 0x075d, 0x076f, 0x0778, - 0x077f, 0x0783, 0x078d, 0x0792, 0x0799, 0x07a5, 0x07ae, 0x07b4, - 0x07bc, 0x07c0, 0x07c7, 0x07cf, 0x07d8, 0x07dc, 0x07e0, 0x07e8, - 0x07ec, 0x07f3, 0x07fc, 0x0803, 0x080b, 0x0811, 0x0818, 0x0820, - 0x0828, 0x082c, 0x083c, 0x0843, 0x084d, 0x0856, 0x085e, 0x086d, + 0x0656, 0x0665, 0x0672, 0x0679, 0x0682, 0x068e, 0x0695, 0x069d, + 0x06ab, 0x06ab, 0x06b3, 0x06c0, 0x06cd, 0x06d0, 0x06e7, 0x06f1, + 0x06f7, 0x06fd, 0x0704, 0x070e, 0x0715, 0x071a, 0x0721, 0x072b, + 0x0733, 0x0739, 0x073f, 0x0745, 0x074a, 0x0751, 0x0757, 0x0769, + 0x0772, 0x0779, 0x077d, 0x0787, 0x078c, 0x0794, 0x07a0, 0x07a9, + 0x07af, 0x07b7, 0x07bb, 0x07c2, 0x07ca, 0x07d3, 0x07d7, 0x07db, + 0x07e3, 0x07e7, 0x07ee, 0x07f7, 0x07fe, 0x0806, 0x080c, 0x0814, + 0x081c, 0x0824, 0x082a, 0x083a, 0x0841, 0x084b, 0x0854, 0x085c, // Entry 100 - 13F - 0x0873, 0x087b, 0x0887, 0x088f, 0x0896, 0x089c, 0x08a2, 0x08aa, - 0x08af, 0x08b7, 0x08bd, 0x08c3, 0x08c8, 0x08da, 0x08ea, 0x08f0, - 0x0902, 0x090e, 0x0914, 0x091b, 0x091f, 0x0923, 0x0940, 0x0955, - 0x095b, 0x0963, 0x0973, 0x098e, 0x0994, 0x09b8, 0x09bc, 0x09ca, - 0x09ea, 0x09ed, 0x0a01, 0x0a15, 0x0a26, 0x0a2e, 0x0a40, 0x0a4c, - 0x0a52, 0x0a54, 0x0a5d, 0x0a79, 0x0a7d, 0x0a82, 0x0a91, 0x0a94, - 0x0a9c, 0x0aa2, 0x0ac0, 0x0add, 0x0aea, 0x0aef, 0x0af8, 0x0afd, - 0x0b02, 0x0b12, 0x0b29, 0x0b2e, 0x0b34, 0x0b38, 0x0b40, 0x0b45, + 0x086b, 0x0871, 0x0879, 0x0885, 0x08a5, 0x08ad, 0x08b4, 0x08ba, + 0x08c0, 0x08c8, 0x08cd, 0x08d5, 0x08db, 0x08e1, 0x08e6, 0x08f8, + 0x0908, 0x090e, 0x0920, 0x092c, 0x0932, 0x0939, 0x093d, 0x0941, + 0x095e, 0x0973, 0x0979, 0x0981, 0x0991, 0x09ac, 0x09b2, 0x09d6, + 0x09dc, 0x09ea, 0x0a0a, 0x0a0d, 0x0a21, 0x0a35, 0x0a46, 0x0a4e, + 0x0a60, 0x0a6c, 0x0a74, 0x0a76, 0x0a7f, 0x0a9b, 0x0a9f, 0x0aa4, + 0x0ab3, 0x0ab6, 0x0abe, 0x0ac4, 0x0ae2, 0x0aff, 0x0b0c, 0x0b11, + 0x0b1a, 0x0b1f, 0x0b24, 0x0b34, 0x0b4b, 0x0b50, 0x0b56, 0x0b5a, // Entry 140 - 17F - 0x0b5e, 0x0b6a, 0x0b77, 0x0b81, 0x0b88, 0x0b8d, 0x0ba1, 0x0bbb, - 0x0bbf, 0x0bc3, 0x0bc9, 0x0bce, 0x0bd6, 0x0bdc, 0x0bf3, 0x0bf9, - 0x0c00, 0x0c08, 0x0c17, 0x0c26, 0x0c3f, 0x0c4b, 0x0c53, 0x0c59, - 0x0c5b, 0x0c61, 0x0c65, 0x0c6f, 0x0c77, 0x0c7b, 0x0c83, 0x0c9c, - 0x0ca3, 0x0ca7, 0x0caf, 0x0cb3, 0x0cbc, 0x0cc7, 0x0ccf, 0x0cd8, - 0x0cdc, 0x0ce6, 0x0cee, 0x0cfc, 0x0d05, 0x0d0e, 0x0d13, 0x0d29, - 0x0d2d, 0x0d36, 0x0d3d, 0x0d42, 0x0d4b, 0x0d50, 0x0d58, 0x0d5f, - 0x0d66, 0x0d6c, 0x0d71, 0x0d76, 0x0d7b, 0x0d83, 0x0d98, 0x0da0, + 0x0b62, 0x0b67, 0x0b80, 0x0b8c, 0x0b99, 0x0ba5, 0x0bac, 0x0bb1, + 0x0bc5, 0x0bdf, 0x0be3, 0x0be7, 0x0bef, 0x0bf5, 0x0bfd, 0x0c03, + 0x0c1a, 0x0c20, 0x0c27, 0x0c2f, 0x0c3e, 0x0c4d, 0x0c66, 0x0c72, + 0x0c7a, 0x0c82, 0x0c84, 0x0c8a, 0x0c90, 0x0c9a, 0x0ca2, 0x0ca6, + 0x0cae, 0x0cc7, 0x0cce, 0x0cd2, 0x0cda, 0x0cde, 0x0ce7, 0x0cf2, + 0x0cfa, 0x0d03, 0x0d07, 0x0d11, 0x0d19, 0x0d27, 0x0d30, 0x0d39, + 0x0d40, 0x0d56, 0x0d5a, 0x0d63, 0x0d6a, 0x0d6f, 0x0d78, 0x0d7d, + 0x0d85, 0x0d8c, 0x0d93, 0x0d99, 0x0d9e, 0x0da3, 0x0da8, 0x0db0, // Entry 180 - 1BF - 0x0da6, 0x0dad, 0x0db6, 0x0dbb, 0x0dbf, 0x0dcd, 0x0dd6, 0x0de0, - 0x0de7, 0x0dec, 0x0def, 0x0df3, 0x0df7, 0x0e07, 0x0e0a, 0x0e13, - 0x0e18, 0x0e1e, 0x0e26, 0x0e2e, 0x0e36, 0x0e3d, 0x0e42, 0x0e48, - 0x0e4e, 0x0e53, 0x0e58, 0x0e61, 0x0e70, 0x0e7b, 0x0e7f, 0x0e85, - 0x0e8e, 0x0e94, 0x0e9c, 0x0ea1, 0x0ea5, 0x0eb1, 0x0eba, 0x0ec7, - 0x0ecd, 0x0ed7, 0x0ede, 0x0ee6, 0x0eec, 0x0ef3, 0x0f00, 0x0f20, - 0x0f2d, 0x0f31, 0x0f47, 0x0f4d, 0x0f51, 0x0f58, 0x0f5f, 0x0f66, - 0x0f71, 0x0f76, 0x0f7b, 0x0f81, 0x0f85, 0x0f95, 0x0f9b, 0x0fac, + 0x0dc5, 0x0dcd, 0x0dd3, 0x0dda, 0x0de3, 0x0de9, 0x0def, 0x0dfd, + 0x0e06, 0x0e10, 0x0e17, 0x0e1d, 0x0e20, 0x0e24, 0x0e28, 0x0e38, + 0x0e3b, 0x0e44, 0x0e49, 0x0e4f, 0x0e57, 0x0e5f, 0x0e68, 0x0e6f, + 0x0e74, 0x0e7a, 0x0e82, 0x0e87, 0x0e8c, 0x0e95, 0x0ea4, 0x0eaf, + 0x0eb3, 0x0ebb, 0x0ec6, 0x0ecc, 0x0ed6, 0x0edb, 0x0edf, 0x0eeb, + 0x0ef4, 0x0f01, 0x0f07, 0x0f11, 0x0f18, 0x0f20, 0x0f26, 0x0f2d, + 0x0f3a, 0x0f5a, 0x0f67, 0x0f6b, 0x0f81, 0x0f87, 0x0f8b, 0x0f96, + 0x0f9d, 0x0fa4, 0x0faf, 0x0fb4, 0x0fc1, 0x0fc7, 0x0fcb, 0x0fd9, // Entry 1C0 - 1FF - 0x0fb4, 0x0fbd, 0x0fc2, 0x0fc7, 0x0fcc, 0x0fda, 0x0fe4, 0x0feb, - 0x0ff3, 0x0ffd, 0x1002, 0x100a, 0x1022, 0x1046, 0x1053, 0x1072, - 0x107e, 0x109b, 0x10a0, 0x10a8, 0x10af, 0x10c3, 0x10ca, 0x10e8, - 0x10f3, 0x10fa, 0x1104, 0x1122, 0x1127, 0x112c, 0x1131, 0x113a, - 0x1141, 0x1149, 0x1152, 0x1155, 0x115c, 0x1163, 0x1175, 0x117e, - 0x1183, 0x118a, 0x1195, 0x119e, 0x11a4, 0x11b0, 0x11b7, 0x11c9, - 0x11d6, 0x11dd, 0x11e2, 0x11e6, 0x11ec, 0x11fa, 0x1207, 0x1212, - 0x121d, 0x1221, 0x122f, 0x1235, 0x124d, 0x1256, 0x1263, 0x1271, + 0x0fdf, 0x0ff0, 0x0ff8, 0x1001, 0x1007, 0x100c, 0x1011, 0x101f, + 0x102b, 0x1041, 0x104a, 0x1054, 0x1061, 0x1069, 0x107c, 0x1094, + 0x10b8, 0x10c5, 0x10e4, 0x10f0, 0x110d, 0x1112, 0x111a, 0x1121, + 0x1135, 0x113c, 0x115a, 0x1165, 0x116c, 0x1178, 0x1196, 0x119b, + 0x11a0, 0x11a5, 0x11ae, 0x11b5, 0x11bd, 0x11c6, 0x11c9, 0x11d2, + 0x11d9, 0x11eb, 0x11f4, 0x11f9, 0x1202, 0x120d, 0x1216, 0x121c, + 0x1228, 0x122f, 0x1241, 0x124e, 0x1255, 0x125a, 0x125e, 0x1264, + 0x1272, 0x127f, 0x128a, 0x1295, 0x1299, 0x12a7, 0x12ae, 0x12c6, // Entry 200 - 23F - 0x127e, 0x128b, 0x1292, 0x1299, 0x12a5, 0x12ac, 0x12b0, 0x12c1, - 0x12c7, 0x12cb, 0x12d3, 0x12da, 0x12ef, 0x12f4, 0x1300, 0x1305, - 0x130a, 0x130e, 0x1314, 0x1319, 0x131e, 0x1321, 0x1328, 0x1330, - 0x1339, 0x1340, 0x1348, 0x1350, 0x135c, 0x1365, 0x136b, 0x1371, - 0x1379, 0x1382, 0x1392, 0x139a, 0x13a0, 0x13a9, 0x13af, 0x13c9, - 0x13d1, 0x13d9, 0x13e0, 0x13e4, 0x13e7, 0x13ee, 0x13f4, 0x1405, - 0x141a, 0x141f, 0x1424, 0x1429, 0x1431, 0x1437, 0x143c, 0x1441, - 0x1449, 0x145f, 0x1467, 0x146f, 0x1474, 0x1477, 0x147e, 0x1487, + 0x12cf, 0x12dc, 0x12e9, 0x12f6, 0x1303, 0x130a, 0x1311, 0x131d, + 0x1324, 0x1328, 0x1339, 0x133f, 0x1343, 0x134b, 0x1352, 0x1362, + 0x1367, 0x1373, 0x1378, 0x137d, 0x1381, 0x1387, 0x138c, 0x1391, + 0x1394, 0x139b, 0x13a3, 0x13ac, 0x13b5, 0x13bd, 0x13c5, 0x13d1, + 0x13e0, 0x13e6, 0x13ec, 0x13f4, 0x13fd, 0x140d, 0x1415, 0x141b, + 0x1424, 0x142a, 0x1444, 0x144c, 0x1454, 0x145b, 0x145f, 0x1462, + 0x1469, 0x146f, 0x1480, 0x1495, 0x149a, 0x149e, 0x14a3, 0x14ab, + 0x14b1, 0x14b6, 0x14bb, 0x14c3, 0x14d9, 0x14e1, 0x14e9, 0x14ee, // Entry 240 - 27F - 0x148d, 0x1495, 0x14b0, 0x14b9, 0x14ce, 0x14d6, 0x14dc, 0x14fa, - 0x14fe, 0x1514, 0x1518, 0x1539, 0x1539, 0x154d, 0x1571, 0x1583, - 0x1591, 0x15ae, 0x15c9, 0x15e1, 0x15f0, 0x1600, 0x1600, 0x1612, - 0x1629, 0x164d, 0x1656, 0x166b, 0x167d, 0x1685, 0x1693, 0x16a2, - 0x16b7, 0x16c7, -} // Size: 1244 bytes - -var lvLangStr string = "" + // Size: 4332 bytes + 0x14f1, 0x14f8, 0x1501, 0x1507, 0x150f, 0x152a, 0x1533, 0x1542, + 0x154a, 0x1550, 0x156e, 0x1572, 0x1588, 0x158c, 0x15ad, 0x15ad, + 0x15c1, 0x15e5, 0x15f7, 0x1605, 0x1622, 0x163d, 0x1655, 0x1664, + 0x1674, 0x1674, 0x1686, 0x169d, 0x16c1, 0x16ca, 0x16df, 0x16f1, + 0x16f9, 0x1707, 0x1716, 0x172b, 0x173b, +} // Size: 1250 bytes + +const lvLangStr string = "" + // Size: 4355 bytes "afāruabhāzuavestaafrikanduakanuamharuaragoniešuarābuasamiešuavāruaimarua" + "zerbaidžāņubaškīrubaltkrievubulgārubišlamābambarubengāļutibetiešubretoņu" + "bosniešukatalāņučečenučamorrukorsikāņukrīčehubaznīcslāvučuvašuvelsiešudā" + "ņuvācumaldīviešudzongkeevugrieķuangļuesperantospāņuigauņubaskupersiešuf" + "ulusomufidžiešufērufrančurietumfrīzuīrugēlugalisiešugvaranugudžaratumeni" + "ešuhausuivritshindihirimotuhorvātuhaitiešuungāruarmēņuhereruinterlingvai" + - "ndonēziešuinterlingveigboSičuaņas jiinupiakuidoīslandiešuitāļuinuītujapā" + + "ndonēziešuinterlingveigboSičuaņas jiinupiakuidoislandiešuitāļuinuītujapā" + "ņujaviešugruzīnukongukikujukvaņamukazahugrenlandiešukhmerukannadukoreji" + "ešukanurukašmiriešukurdukomiešukorniešukirgīzulatīņuluksemburgiešugandul" + "imburgiešulingalalaosiešulietuviešulubakatangalatviešumalagasumāršaliešu" + @@ -17829,48 +21119,49 @@ var lvLangStr string = "" + // Size: 4332 bytes "ebelunavahučičevaoksitāņuodžibvuoromuorijuosetīnupandžabupālipoļupuštupo" + "rtugāļukečvuretoromāņurundurumāņukrievukiņaruandasanskritssardīniešusind" + "huziemeļsāmusangosingāļuslovākuslovēņusamoāņušonusomāļualbāņuserbusvatud" + - "ienvidsotusundaniešuzviedrusvahilitamilutelugutadžikutajutigrinjaturkmēņ" + - "ucvanutongiešuturkucongutatārutaitiešuuiguruukraiņuurduuzbekuvenduvjetna" + - "miešuvolapiksvaloņuvolofukhosujidišsjorubudžuanuķīniešuzuluačinuačoluada" + - "ngmuadiguafrihiliaghemuainuakadiešualeutudienvidaltajiešusenangļuangikaa" + - "ramiešuaraukāņuarapahuaravakuasuastūriešuavadhubeludžubaliešubasubamumug" + - "omalubedžubembubenabafuturietumbeludžubhodžpūrubikolubinukomusiksikubrad" + - "žiešubodonkosiburjatubugubulubilinumedumbukadukarībukajugaatsamusebuāņu" + - "kigačibčudžagatajsčūkumariešučinuku žargonsčoktavučipevaianučirokušejenu" + - "kurdu (Sorani)koptuKrimas tatārukašubudakotudargutaitudelavērusleivudogr" + - "ibudinkuzarmudogrulejassorbudualuvidusholandiešudiola-fonjīdiūludazukjem" + - "buefikuēģiptiešuekadžukuelamiešuvidusangļuevondufangufilipīniešufonuvidu" + - "sfrančusenfrančuziemeļfrīzuaustrumfrīzufriūlugagagauzugajogbajugēzukirib" + - "atiešuvidusaugšvācusenaugšvācugondu valodasgorontalugotugrebosengrieķuŠv" + - "eices vācugusiikučinuhaiduhavajiešuhiligainonuhetuhmonguaugšsorbuhupuiba" + - "nuibibioilokuingušuložbansjgomačamujūdpersiešujūdarābukarakalpakukabiluk" + - "ačinukadžikambukāvikabardiešukaņembukatabumakondekaboverdiešukorukhasuho" + - "taniešukoiračiinīkakokalendžīnukimbundukomiešu-permiešukonkanukosrājiešu" + - "kpellukaračaju un balkārukarēļukuruhušambalubafijuĶelnes vācukumikukuten" + - "ajuladinolangilandulambulezgīnulakotumongulozuziemeļlurulubalulvaluisenu" + - "lunduluolušejuluhjumaduriešumafumagahiešumaithilimakasarumandingumasajum" + - "abumokšumandarumendumeruMaurīcijas kreoluvidusīrumakua-meettomgomikmakum" + - "inangkabavumandžūrumanipūrumohaukumosumundanguvairākas valodaskrīkumiran" + - "diešumarvarumjenuerzjumazanderāņuneapoliešunamalejasvācunevarunjasuniuāņ" + - "ukvasiongjembūnunogajusennorvēģunkoziemeļsotunueruklasiskā nevaruņamvezu" + - "ņankoluņorunzemuvažāžuturku osmaņupangasinanupehlevipampanganupapjament" + - "opalaviešusenpersufeniķiešuponapiešusenprovansiešukičeradžastāņurapanuju" + - "rarotongiešurombočigānuaromūnuruandasandavujakutusamārijas aramiešusambu" + - "rusasakusantalungambejusangusicīliešuskotudienvidkurdusenekusenuselkupuk" + - "oiraboro sennisenīrušilhušanuČadas arābusidamudienvidsāmuLuleo sāmuInari" + - " sāmuskoltsāmusoninkusogdiešusranantogoserērusahosukumususušumerukomoruk" + - "lasiskā sīriešusīriešutemnutesoterenotetumutigrutivutokelaviešuklingoņut" + - "linkitutuaregunjasas tongutokpisinstarokocimšiāņutumbukutuvaliešutasavak" + - "utuviešuCentrālmarokas tamazītsudmurtuugaritiešuumbundusaknevajuvotuvund" + - "žoVallisas vācuvalamuvarajuvašovarlpirīkalmikusogujaojapiešujanbaņujemb" + - "ukantoniešusapotekublissimbolikazenagustandarta marokāņu berberuzunjubez" + - " lingvistiska saturazazakimūsdienu standarta arābudienvidazerbaidžāņuAus" + - "trijas vācuŠveices augšvācuAustrālijas angļuKanādas angļuLielbritānijas " + - "angļuASV angļuLatīņamerikas spāņuEiropas spāņuMeksikas spāņuKanādas fran" + - "čuŠveices frančulejassakšuflāmuBrazīlijas portugāļuEiropas portugāļumol" + - "dāvuserbu-horvātuKongo svahiliķīniešu vienkāršotāķīniešu tradicionālā" - -var lvLangIdx = []uint16{ // 610 elements + "ienvidsotuzunduzviedrusvahilitamilutelugutadžikutajutigrinjaturkmēņucvan" + + "utongiešuturkucongutatārutaitiešuuiguruukraiņuurduuzbekuvenduvjetnamiešu" + + "volapiksvaloņuvolofukhosujidišsjorubudžuanuķīniešuzuluačinuačoluadangmua" + + "diguafrihiliaghemuainuakadiešualeutudienvidaltajiešusenangļuangikaaramie" + + "šuaraukāņuarapahuaravakuasuastūriešuavadhubeludžubaliešubasubamumugomal" + + "ubedžubembubenabafuturietumbeludžubhodžpūrubikolubinukomusiksikubradžieš" + + "ubodonkosiburjatubugubulubilinumedumbukadukarībukajugaatsamusebuāņukigač" + + "ibčudžagatajsčūkumariešučinuku žargonsčoktavučipevaianučirokušejenucentr" + + "ālkurdukoptuKrimas tatārukreolu frančukašubudakotudargutaitudelavērusle" + + "ivudogribudinkuzarmudogrulejassorbudualuvidusholandiešudiola-fonjīdiūlud" + + "azukjembuefikuēģiptiešuekadžukuelamiešuvidusangļuevondufangufilipīniešuf" + + "onuvidusfrančusenfrančuziemeļfrīzuaustrumfrīzufriūlugagagauzugajogbajugē" + + "zukiribatiešuvidusaugšvācusenaugšvācugondu valodasgorontalugotugreboseng" + + "rieķuŠveices vācugusiikučinuhaiduhavajiešuhiligainonuhetuhmonguaugšsorbu" + + "hupuibanuibibioilokuingušuložbansjgomačamujūdpersiešujūdarābukarakalpaku" + + "kabilukačinukadžikambukāvikabardiešukaņembukatabumakondekaboverdiešukoru" + + "khasuhotaniešukoiračiinīkakokalendžīnukimbundukomiešu-permiešukonkanukos" + + "rājiešukpellukaračaju un balkārukarēļukuruhušambalubafijuĶelnes vācukumi" + + "kukutenajuladinolangilandulambulezgīnulakotumongulozuziemeļlurulubalulva" + + "luisenulunduluolušejuluhjumaduriešumafumagahiešumaithilimakasarumandingu" + + "masajumabumokšumandarumendumeruMaurīcijas kreoluvidusīrumakua-meettomgom" + + "ikmakuminangkabavumandžūrumanipūrumohaukumosumundanguvairākas valodaskrī" + + "kumirandiešumarvarumjenuerzjumazanderāņuneapoliešunamalejasvācunevarunja" + + "suniuāņukvasiongjembūnunogajusennorvēģunkoziemeļsotunueruklasiskā nevaru" + + "ņamvezuņankoluņorunzemuvažāžuturku osmaņupangasinanupehlevipampanganupa" + + "pjamentopalaviešupidžinssenpersufeniķiešuponapiešuprūšusenprovansiešukič" + + "eradžastāņurapanujurarotongiešurombočigānuaromūnuruandasandavujakutuSamā" + + "rijas aramiešusamburusasakusantalungambejusangusicīliešuskotudienvidkurd" + + "usenekusenuselkupukoiraboro sennisenīrušilhušanuČadas arābusidamudienvid" + + "sāmuLuleo sāmuInari sāmuskoltsāmusoninkusogdiešusranantogoserērusahosuku" + + "mususušumerukomoruklasiskā sīriešusīriešutemnutesoterenotetumutigrutivut" + + "okelaviešuklingoņutlinkitutuareguNjasas tongutokpisinstarokocimšiāņutumb" + + "ukutuvaliešutasavakutuviešuCentrālmarokas tamazītsudmurtuugaritiešuumbun" + + "dusaknevajuvotuvundžoVallisas vācuvalamuvarajuvašovarlpirīkalmikusogujao" + + "japiešujanbaņujembukantoniešusapotekublissimbolikazenagustandarta marokā" + + "ņu berberuzunjubez lingvistiska saturazazakimūsdienu standarta arābudie" + + "nvidazerbaidžāņuAustrijas vācuŠveices augšvācuAustrālijas angļuKanādas a" + + "ngļuLielbritānijas angļuASV angļuLatīņamerikas spāņuEiropas spāņuMeksika" + + "s spāņuKanādas frančuŠveices frančulejassakšuflāmuBrazīlijas portugāļuEi" + + "ropas portugāļumoldāvuserbu–horvātuKongo svahiliķīniešu vienkāršotāķīnie" + + "šu tradicionālā" + +var lvLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0006, 0x000d, 0x0013, 0x001c, 0x0021, 0x0027, 0x0032, 0x0038, 0x0041, 0x0047, 0x004d, 0x005c, 0x0065, 0x006f, 0x0077, @@ -17881,86 +21172,86 @@ var lvLangIdx = []uint16{ // 610 elements 0x0174, 0x0178, 0x017d, 0x0187, 0x018e, 0x0198, 0x01a0, 0x01a5, 0x01ab, 0x01b0, 0x01b8, 0x01c0, 0x01c9, 0x01d0, 0x01d8, 0x01de, // Entry 40 - 7F - 0x01e9, 0x01f6, 0x0201, 0x0205, 0x0212, 0x021a, 0x021d, 0x0229, - 0x0230, 0x0237, 0x023f, 0x0247, 0x024f, 0x0254, 0x025a, 0x0262, - 0x0268, 0x0275, 0x027b, 0x0282, 0x028c, 0x0292, 0x029e, 0x02a3, - 0x02ab, 0x02b4, 0x02bc, 0x02c4, 0x02d3, 0x02d8, 0x02e4, 0x02eb, - 0x02f4, 0x02ff, 0x030a, 0x0313, 0x031b, 0x0328, 0x032d, 0x033a, - 0x0342, 0x034a, 0x0350, 0x035a, 0x0363, 0x036c, 0x0376, 0x0384, - 0x038f, 0x0395, 0x03a0, 0x03ad, 0x03be, 0x03cc, 0x03d2, 0x03da, - 0x03e4, 0x03ec, 0x03f1, 0x03f6, 0x03fe, 0x0407, 0x040c, 0x0411, + 0x01e9, 0x01f6, 0x0201, 0x0205, 0x0212, 0x021a, 0x021d, 0x0228, + 0x022f, 0x0236, 0x023e, 0x0246, 0x024e, 0x0253, 0x0259, 0x0261, + 0x0267, 0x0274, 0x027a, 0x0281, 0x028b, 0x0291, 0x029d, 0x02a2, + 0x02aa, 0x02b3, 0x02bb, 0x02c3, 0x02d2, 0x02d7, 0x02e3, 0x02ea, + 0x02f3, 0x02fe, 0x0309, 0x0312, 0x031a, 0x0327, 0x032c, 0x0339, + 0x0341, 0x0349, 0x034f, 0x0359, 0x0362, 0x036b, 0x0375, 0x0383, + 0x038e, 0x0394, 0x039f, 0x03ac, 0x03bd, 0x03cb, 0x03d1, 0x03d9, + 0x03e3, 0x03eb, 0x03f0, 0x03f5, 0x03fd, 0x0406, 0x040b, 0x0410, // Entry 80 - BF - 0x0417, 0x0422, 0x0428, 0x0434, 0x0439, 0x0441, 0x0447, 0x0452, - 0x045b, 0x0467, 0x046d, 0x0479, 0x047e, 0x0487, 0x048f, 0x0498, - 0x04a1, 0x04a6, 0x04ae, 0x04b6, 0x04bb, 0x04c0, 0x04cb, 0x04d6, - 0x04dd, 0x04e4, 0x04ea, 0x04f0, 0x04f8, 0x04fc, 0x0504, 0x050e, - 0x0513, 0x051c, 0x0521, 0x0526, 0x052d, 0x0536, 0x053c, 0x0544, - 0x0548, 0x054e, 0x0553, 0x055f, 0x0567, 0x056e, 0x0574, 0x0579, - 0x0580, 0x0586, 0x058d, 0x0597, 0x059b, 0x05a1, 0x05a7, 0x05ae, - 0x05b3, 0x05b3, 0x05bb, 0x05c1, 0x05c5, 0x05ce, 0x05ce, 0x05d4, + 0x0416, 0x0421, 0x0427, 0x0433, 0x0438, 0x0440, 0x0446, 0x0451, + 0x045a, 0x0466, 0x046c, 0x0478, 0x047d, 0x0486, 0x048e, 0x0497, + 0x04a0, 0x04a5, 0x04ad, 0x04b5, 0x04ba, 0x04bf, 0x04ca, 0x04cf, + 0x04d6, 0x04dd, 0x04e3, 0x04e9, 0x04f1, 0x04f5, 0x04fd, 0x0507, + 0x050c, 0x0515, 0x051a, 0x051f, 0x0526, 0x052f, 0x0535, 0x053d, + 0x0541, 0x0547, 0x054c, 0x0558, 0x0560, 0x0567, 0x056d, 0x0572, + 0x0579, 0x057f, 0x0586, 0x0590, 0x0594, 0x059a, 0x05a0, 0x05a7, + 0x05ac, 0x05ac, 0x05b4, 0x05ba, 0x05be, 0x05c7, 0x05c7, 0x05cd, // Entry C0 - FF - 0x05d4, 0x05e5, 0x05ee, 0x05f4, 0x05fd, 0x0607, 0x0607, 0x060e, - 0x060e, 0x0615, 0x0615, 0x0615, 0x0618, 0x0618, 0x0623, 0x0623, - 0x0629, 0x0631, 0x0639, 0x0639, 0x063d, 0x0643, 0x0643, 0x0649, - 0x064f, 0x0654, 0x0654, 0x0658, 0x065e, 0x065e, 0x066c, 0x0677, - 0x067d, 0x0681, 0x0681, 0x0685, 0x068c, 0x068c, 0x068c, 0x0697, - 0x0697, 0x069b, 0x06a0, 0x06a7, 0x06ab, 0x06af, 0x06b5, 0x06bc, - 0x06c0, 0x06c7, 0x06cd, 0x06d3, 0x06dc, 0x06e0, 0x06e7, 0x06f1, - 0x06f7, 0x06ff, 0x070f, 0x0717, 0x0722, 0x0729, 0x0730, 0x073e, + 0x05cd, 0x05de, 0x05e7, 0x05ed, 0x05f6, 0x0600, 0x0600, 0x0607, + 0x0607, 0x0607, 0x060e, 0x060e, 0x060e, 0x0611, 0x0611, 0x061c, + 0x061c, 0x0622, 0x062a, 0x0632, 0x0632, 0x0636, 0x063c, 0x063c, + 0x0642, 0x0648, 0x064d, 0x064d, 0x0651, 0x0657, 0x0657, 0x0665, + 0x0670, 0x0676, 0x067a, 0x067a, 0x067e, 0x0685, 0x0685, 0x0685, + 0x0690, 0x0690, 0x0694, 0x0699, 0x06a0, 0x06a4, 0x06a8, 0x06ae, + 0x06b5, 0x06b9, 0x06c0, 0x06c6, 0x06cc, 0x06d5, 0x06d9, 0x06e0, + 0x06ea, 0x06f0, 0x06f8, 0x0708, 0x0710, 0x071b, 0x0722, 0x0729, // Entry 100 - 13F - 0x0743, 0x0743, 0x0751, 0x0758, 0x075e, 0x0763, 0x0768, 0x0771, - 0x0777, 0x077e, 0x0783, 0x0788, 0x078d, 0x0797, 0x0797, 0x079c, - 0x07ac, 0x07b8, 0x07be, 0x07c2, 0x07c8, 0x07cd, 0x07cd, 0x07d9, - 0x07e2, 0x07eb, 0x07f6, 0x07f6, 0x07fc, 0x07fc, 0x0801, 0x080e, - 0x080e, 0x0812, 0x0812, 0x081e, 0x0828, 0x0828, 0x0835, 0x0842, - 0x0849, 0x084b, 0x0852, 0x0852, 0x0856, 0x085b, 0x085b, 0x0860, - 0x086c, 0x086c, 0x087b, 0x0888, 0x0888, 0x0895, 0x089e, 0x08a2, - 0x08a7, 0x08b1, 0x08bf, 0x08bf, 0x08bf, 0x08c4, 0x08cb, 0x08d0, + 0x0736, 0x073b, 0x073b, 0x0749, 0x0757, 0x075e, 0x0764, 0x0769, + 0x076e, 0x0777, 0x077d, 0x0784, 0x0789, 0x078e, 0x0793, 0x079d, + 0x079d, 0x07a2, 0x07b2, 0x07be, 0x07c4, 0x07c8, 0x07ce, 0x07d3, + 0x07d3, 0x07df, 0x07e8, 0x07f1, 0x07fc, 0x07fc, 0x0802, 0x0802, + 0x0807, 0x0814, 0x0814, 0x0818, 0x0818, 0x0824, 0x082e, 0x082e, + 0x083b, 0x0848, 0x084f, 0x0851, 0x0858, 0x0858, 0x085c, 0x0861, + 0x0861, 0x0866, 0x0872, 0x0872, 0x0881, 0x088e, 0x088e, 0x089b, + 0x08a4, 0x08a8, 0x08ad, 0x08b7, 0x08c5, 0x08c5, 0x08c5, 0x08ca, // Entry 140 - 17F - 0x08d0, 0x08da, 0x08da, 0x08e5, 0x08e9, 0x08ef, 0x08f9, 0x08f9, - 0x08fd, 0x0902, 0x0908, 0x090d, 0x0914, 0x0914, 0x0914, 0x091c, - 0x091f, 0x0926, 0x0933, 0x093d, 0x093d, 0x0948, 0x094e, 0x0955, - 0x095b, 0x0960, 0x0965, 0x0970, 0x0978, 0x097e, 0x0985, 0x0992, - 0x0992, 0x0996, 0x0996, 0x099b, 0x09a5, 0x09b1, 0x09b1, 0x09b1, - 0x09b5, 0x09c1, 0x09c9, 0x09db, 0x09e2, 0x09ee, 0x09f4, 0x0a09, - 0x0a09, 0x0a09, 0x0a11, 0x0a17, 0x0a1f, 0x0a25, 0x0a32, 0x0a38, - 0x0a40, 0x0a46, 0x0a4b, 0x0a50, 0x0a55, 0x0a5d, 0x0a5d, 0x0a5d, + 0x08d1, 0x08d6, 0x08d6, 0x08e0, 0x08e0, 0x08eb, 0x08ef, 0x08f5, + 0x08ff, 0x08ff, 0x0903, 0x0908, 0x090e, 0x0913, 0x091a, 0x091a, + 0x091a, 0x0922, 0x0925, 0x092c, 0x0939, 0x0943, 0x0943, 0x094e, + 0x0954, 0x095b, 0x0961, 0x0966, 0x096b, 0x0976, 0x097e, 0x0984, + 0x098b, 0x0998, 0x0998, 0x099c, 0x099c, 0x09a1, 0x09ab, 0x09b7, + 0x09b7, 0x09b7, 0x09bb, 0x09c7, 0x09cf, 0x09e1, 0x09e8, 0x09f4, + 0x09fa, 0x0a0f, 0x0a0f, 0x0a0f, 0x0a17, 0x0a1d, 0x0a25, 0x0a2b, + 0x0a38, 0x0a3e, 0x0a46, 0x0a4c, 0x0a51, 0x0a56, 0x0a5b, 0x0a63, // Entry 180 - 1BF - 0x0a5d, 0x0a63, 0x0a63, 0x0a68, 0x0a6c, 0x0a77, 0x0a77, 0x0a80, - 0x0a87, 0x0a8c, 0x0a8f, 0x0a96, 0x0a9b, 0x0a9b, 0x0a9b, 0x0aa5, - 0x0aa9, 0x0ab3, 0x0abb, 0x0ac3, 0x0acb, 0x0ad1, 0x0ad5, 0x0adb, - 0x0ae2, 0x0ae7, 0x0aeb, 0x0afd, 0x0b06, 0x0b12, 0x0b15, 0x0b1c, - 0x0b28, 0x0b32, 0x0b3b, 0x0b42, 0x0b46, 0x0b46, 0x0b4e, 0x0b5f, - 0x0b65, 0x0b70, 0x0b77, 0x0b77, 0x0b7c, 0x0b81, 0x0b8e, 0x0b8e, - 0x0b99, 0x0b9d, 0x0ba7, 0x0bad, 0x0bb2, 0x0bba, 0x0bba, 0x0bc0, - 0x0bca, 0x0bd0, 0x0bdc, 0x0bdc, 0x0bdf, 0x0bea, 0x0bef, 0x0bff, + 0x0a63, 0x0a63, 0x0a63, 0x0a69, 0x0a69, 0x0a6e, 0x0a72, 0x0a7d, + 0x0a7d, 0x0a86, 0x0a8d, 0x0a92, 0x0a95, 0x0a9c, 0x0aa1, 0x0aa1, + 0x0aa1, 0x0aab, 0x0aaf, 0x0ab9, 0x0ac1, 0x0ac9, 0x0ad1, 0x0ad7, + 0x0adb, 0x0ae1, 0x0ae8, 0x0aed, 0x0af1, 0x0b03, 0x0b0c, 0x0b18, + 0x0b1b, 0x0b22, 0x0b2e, 0x0b38, 0x0b41, 0x0b48, 0x0b4c, 0x0b4c, + 0x0b54, 0x0b65, 0x0b6b, 0x0b76, 0x0b7d, 0x0b7d, 0x0b82, 0x0b87, + 0x0b94, 0x0b94, 0x0b9f, 0x0ba3, 0x0bad, 0x0bb3, 0x0bb8, 0x0bc0, + 0x0bc0, 0x0bc6, 0x0bd0, 0x0bd6, 0x0be2, 0x0be2, 0x0be5, 0x0bf0, // Entry 1C0 - 1FF - 0x0c07, 0x0c0f, 0x0c14, 0x0c19, 0x0c22, 0x0c2f, 0x0c3a, 0x0c41, - 0x0c4b, 0x0c55, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c67, 0x0c67, - 0x0c72, 0x0c72, 0x0c72, 0x0c7c, 0x0c7c, 0x0c8b, 0x0c90, 0x0c90, - 0x0c9d, 0x0ca5, 0x0cb2, 0x0cb2, 0x0cb2, 0x0cb7, 0x0cbf, 0x0cbf, - 0x0cbf, 0x0cbf, 0x0cc7, 0x0ccd, 0x0cd4, 0x0cda, 0x0cee, 0x0cf5, - 0x0cfb, 0x0d02, 0x0d02, 0x0d0a, 0x0d0f, 0x0d1a, 0x0d1f, 0x0d1f, - 0x0d2b, 0x0d31, 0x0d35, 0x0d35, 0x0d3c, 0x0d4b, 0x0d52, 0x0d52, - 0x0d58, 0x0d5d, 0x0d6a, 0x0d70, 0x0d70, 0x0d70, 0x0d7c, 0x0d87, + 0x0bf5, 0x0c05, 0x0c0d, 0x0c15, 0x0c1a, 0x0c1f, 0x0c28, 0x0c35, + 0x0c40, 0x0c47, 0x0c51, 0x0c5b, 0x0c65, 0x0c65, 0x0c6d, 0x0c6d, + 0x0c6d, 0x0c75, 0x0c75, 0x0c80, 0x0c80, 0x0c80, 0x0c8a, 0x0c91, + 0x0ca0, 0x0ca5, 0x0ca5, 0x0cb2, 0x0cba, 0x0cc7, 0x0cc7, 0x0cc7, + 0x0ccc, 0x0cd4, 0x0cd4, 0x0cd4, 0x0cd4, 0x0cdc, 0x0ce2, 0x0ce9, + 0x0cef, 0x0d03, 0x0d0a, 0x0d10, 0x0d17, 0x0d17, 0x0d1f, 0x0d24, + 0x0d2f, 0x0d34, 0x0d34, 0x0d40, 0x0d46, 0x0d4a, 0x0d4a, 0x0d51, + 0x0d60, 0x0d67, 0x0d67, 0x0d6d, 0x0d72, 0x0d7f, 0x0d85, 0x0d85, // Entry 200 - 23F - 0x0d92, 0x0d9c, 0x0da3, 0x0dac, 0x0db6, 0x0dbd, 0x0dc1, 0x0dc1, - 0x0dc7, 0x0dcb, 0x0dd2, 0x0dd8, 0x0deb, 0x0df4, 0x0df4, 0x0df4, - 0x0df9, 0x0dfd, 0x0e03, 0x0e09, 0x0e0e, 0x0e12, 0x0e1e, 0x0e1e, - 0x0e27, 0x0e2f, 0x0e2f, 0x0e36, 0x0e42, 0x0e4b, 0x0e4b, 0x0e51, - 0x0e51, 0x0e5c, 0x0e5c, 0x0e63, 0x0e6d, 0x0e75, 0x0e7d, 0x0e96, - 0x0e9d, 0x0ea8, 0x0eaf, 0x0eb4, 0x0eb8, 0x0eb8, 0x0eb8, 0x0eb8, - 0x0eb8, 0x0ebc, 0x0ebc, 0x0ec3, 0x0ed1, 0x0ed7, 0x0edd, 0x0ee2, - 0x0eeb, 0x0eeb, 0x0ef2, 0x0ef2, 0x0ef6, 0x0ef9, 0x0f01, 0x0f09, + 0x0d85, 0x0d91, 0x0d9c, 0x0da7, 0x0db1, 0x0db8, 0x0dc1, 0x0dcb, + 0x0dd2, 0x0dd6, 0x0dd6, 0x0ddc, 0x0de0, 0x0de7, 0x0ded, 0x0e00, + 0x0e09, 0x0e09, 0x0e09, 0x0e0e, 0x0e12, 0x0e18, 0x0e1e, 0x0e23, + 0x0e27, 0x0e33, 0x0e33, 0x0e3c, 0x0e44, 0x0e44, 0x0e4b, 0x0e57, + 0x0e60, 0x0e60, 0x0e66, 0x0e66, 0x0e71, 0x0e71, 0x0e78, 0x0e82, + 0x0e8a, 0x0e92, 0x0eab, 0x0eb2, 0x0ebd, 0x0ec4, 0x0ec9, 0x0ecd, + 0x0ecd, 0x0ecd, 0x0ecd, 0x0ecd, 0x0ed1, 0x0ed1, 0x0ed8, 0x0ee6, + 0x0eec, 0x0ef2, 0x0ef7, 0x0f00, 0x0f00, 0x0f07, 0x0f07, 0x0f0b, // Entry 240 - 27F - 0x0f0e, 0x0f0e, 0x0f19, 0x0f21, 0x0f2e, 0x0f2e, 0x0f34, 0x0f50, - 0x0f55, 0x0f6c, 0x0f72, 0x0f8c, 0x0fa2, 0x0fb1, 0x0fc4, 0x0fd7, - 0x0fe6, 0x0ffc, 0x1006, 0x101d, 0x102c, 0x103c, 0x103c, 0x104c, - 0x105c, 0x1067, 0x106d, 0x1084, 0x1097, 0x109f, 0x10ad, 0x10ba, - 0x10d3, 0x10ec, -} // Size: 1244 bytes - -var mkLangStr string = "" + // Size: 10127 bytes + 0x0f0e, 0x0f16, 0x0f1e, 0x0f23, 0x0f23, 0x0f2e, 0x0f36, 0x0f43, + 0x0f43, 0x0f49, 0x0f65, 0x0f6a, 0x0f81, 0x0f87, 0x0fa1, 0x0fb7, + 0x0fc6, 0x0fd9, 0x0fec, 0x0ffb, 0x1011, 0x101b, 0x1032, 0x1041, + 0x1051, 0x1051, 0x1061, 0x1071, 0x107c, 0x1082, 0x1099, 0x10ac, + 0x10b4, 0x10c4, 0x10d1, 0x10ea, 0x1103, +} // Size: 1250 bytes + +const mkLangStr string = "" + // Size: 10280 bytes "афарскиапхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" + "арскиајмарскиазербејџанскибашкирскибелорускибугарскибисламабамбарабенга" + "лскитибетскибретонскибосанскикаталонскичеченскичаморскикорзиканскикриче" + @@ -17969,72 +21260,73 @@ var mkLangStr string = "" + // Size: 10127 bytes "цускизападнофризискиирскишкотски гелскигалицискигваранскигуџаратиманксх" + "аусахебрејскихиндихири мотухрватскихаитскиунгарскиерменскихерероинтерли" + "нгваиндонезискиокциденталигбосичуан јиинупијачкиидоисландскииталијански" + - "инуктитутјапонскијаванскигрузискиконгокикујуквањамаказакстанскикалалису" + - "ткмерскиканнадакорејскиканурикашмирскикурдскикомикорнскикиргистанскилат" + - "инскилуксембуршкигандалимбуршкилингалалаошкилитванскилуба-катангалатвис" + - "кималгашкимаршалскимаорскимакедонскималајаламмонголскимаратималајскимал" + - "тешкибурманскинауруанскисеверен ндебеленепалскиндонгахоландскинорвешки " + - "нинорскнорвешки букмолјужен ндебеленавахоњанџаокситанскиоџибваоромоориј" + - "аосетскипенџапскипалиполскипаштунскипортугалскикечуанскиретороманскирун" + - "дироманскирускируандасанскритсардинскисиндисевернолапонскисангосинхалск" + - "исловачкисловенечкисамоанскишонасомалискиалбанскисрпскисватисесотосундс" + - "кишведскисвахилитамилскителугутаџикистанскитајландскитигрињатуркменскиц" + - "ванатонганскитурскицонгататарскитахитскиујгурскиукраинскиурдуузбекистан" + - "скивендавиетнамскиволапиквалонскиволофскикосајидишјорупскиџуаншкикинеск" + - "изулуачешкиаколиадангмеадигејскитуниски арапскиафрихилиагемскиајнуакадс" + - "киалабамскиалеутскигешки албанскијужноалтајскистароанглискиангикаарамеј" + - "скимапучкиараонаарапахоалжирски арапскиаравачкимарокански арапскиегипет" + - "ски арапскиасуамерикански знаковен јазикастурскикотаваавадибелуџискибал" + - "искибаварскибасабамунскитобагомалабеџабембабетавскибенабафутбадагазапад" + - "ен балочибоџпурибиколскибинибанџарскикомсиксикабишнупријабахтијарскибра" + - "јбрахујскибодоакосебурјатскибугискибулубиленскимедумбакадокарипскикајуг" + - "аацамсебуанскичигачибчачагатајскичучкимарискичинучки жаргончоктавскичип" + - "евјанскичерокискичејенскицентрален курдскикоптскикапизнонкримскотурскик" + - "ашупскидакотадаргватаитаделаверслејвидогрипскидинказармадогридолнолужич" + - "кидусунскидуаласреднохоландскијола-фоњиџуладазагаембуефикемилијанскиста" + - "роегипетскиекаџукеламскисредноанглискицентралнојупичкиевондоекстремадур" + - "скифангфилипинскитурнедаленски финскифонкаџунски францускисреднофранцус" + - "кистарофранцускифранкопровансалскисевернофризискиисточнофризискифурланс" + - "кигагагаускигангајогбајазороастриски даригизгилбертанскигиланскисредног" + - "орногерманскистарогорногерманскигоански конканигондигоронталоготскигреб" + - "остарогрчкишвајцарски германскигвахирофарефарегусигвичинскихајдахакахав" + - "ајскифиџиски хиндихилигајнонскихетитскихмонггорнолужичкисјангхупаибаниб" + - "ибиоилоканскиингушкиижорскијамајски креолскиложбаннгомбамачамееврејскоп" + - "ерсискиеврејскоарапскијитскикаракалпачкикабилскикачинскикаџекамбакавика" + - "бардинскиканембутјапмакондекабувердианукењангкорокаинганшкикасихотански" + - "којра чииниковарскизазакикакокаленџинкимбундукоми-пермјачкиконканикозре" + - "јскикпелекарачаевско-балкарскикриокинарајскикарелскикурухшамбалабафијак" + - "олоњскикумичкикутенајскиладинолангиландаламбалезгинскилингва франка нов" + - "алигурскиливонскилакотскиломбардскимонголозисевернолурискилатгалскилуба" + - "-лулуалујсењскилундалуомизолујакнижевен кинескиласкимадурскимафамагахима" + - "итилимакасарскимандингомасајскимабамокшанскимандарскимендемеруморисјенс" + - "редноирскимакува-митометамикмакминангкабауманџурскиманипуримохавскимоси" + - "западномарискимундангповеќе јазицикрикмирандскимарваримјенеерзјанскимаз" + - "ендеранскијужноминскинеаполскинамадолногерманскиневарскинијасниуејскиао" + - "квазионгиембунногајскистаронордискиновијалнкосеверен сотонуеркласичен н" + - "еварскињамвезињанколењоронзимаосашкиотомански турскипангасинанскисредно" + - "персискипампангапапијаментопалауанскипикардскипенсилваниски германскиме" + - "нонитски долногерманскистароперсискифалечкогерманскифеникискипиемонтски" + - "понтскипонпејскипрускистаропровансалскикичекичванскираџастанскирапанујс" + - "кираротонганскиромањолскирифскиромборомскиротуманскирусинскировијанскив" + - "лашкируасандавејакутскисамарјански арамејскисамбурусасачкисанталисаураш" + - "трангембејсангусицилијанскишкотски германскисасарски сардинскијужнокурд" + - "скисенекасенасериселкупскикојраборо сенистароирскисамогитскитачелхитшан" + - "чадски арапскисидамодолношлезискиселајарскијужнолапонскилулски лапонски" + - "инарски лапонскисколтски лапонскисонинкезогдијанскисрански тонгосерерса" + - "хозатерландски фризискисукумасусусумерскикоморијанскикласичен сирискиси" + - "рискишлезискитулутимнетесотеренотетумтигретивтокелауанскицахурскиклинго" + - "нскитлингитталишкитамашекњаса тонгаток писинтуројотарокоцаконскицимшија" + - "нскитатскитумбукатувалуанскитазавактуванскицентрално марокански тамазит" + - "скиудмуртскиугаритскиумбундукоренвајвенетскивепшкизападнофламанскимајнс" + - "кофранконскивотскивирувунџовалсерволамоварајскивашовукалмичкимегрелскис" + - "огајаојапскијенгбенјембањенгатукантонскизапотечкиблиссимболизеландскизе" + - "нагастандарден марокански тамазигтскизунибез лингвистичка содржиназазал" + - "итературен арапскибритански англискиамерикански англискишпански (во Евр" + - "опа)француски (во Канада)португалски (во Европа)молдавскисрпскохрватски" + - "конгоански свахилипоедноставен кинескитрадиционален кинески" - -var mkLangIdx = []uint16{ // 610 elements + "инуктитутјапонскијаванскигрузискиконгокикујуквањамаказашкикалалисуткмер" + + "скиканнадакорејскиканурикашмирскикурдскикомикорнскикиргискилатинскилукс" + + "ембуршкигандалимбуршкилингалалаошкилитванскилуба-катангалатвискималгашк" + + "имаршалскимаорскимакедонскималајамскимонголскимаратималајскималтешкибур" + + "манскинауруанскисеверен ндебеленепалскиндонгахоландскинорвешки нинорскн" + + "орвешки букмолјужен ндебеленавахоњанџаокситанскиоџибваоромоодијаосетски" + + "пенџапскипалиполскипаштунскипортугалскикечуанскиретороманскирундироманс" + + "кирускируандскисанскритсардинскисиндисеверен самисангосинхалскисловачки" + + "словенечкисамоанскишонасомалискиалбанскисрпскисватисесотосундскишведски" + + "свахилитамилскителугутаџикистанскитајландскитигрињатуркменскицванатонга" + + "јскитурскицонгататарскитахитскиујгурскиукраинскиурдуузбечкивендавиетнам" + + "скиволапиквалонскиволофскикосајидишјорупскиџуаншкикинескизулуачешкиакол" + + "иадангмеадигејскитуниски арапскиафрихилиагемскиајнуакадскиалабамскиалеу" + + "тскигешки албанскијужноалтајскистароанглискиангикаарамејскимапучкиараон" + + "аарапахоалжирски арапскиаравачкимарокански арапскиегипетски арапскиасуа" + + "мерикански знаковен јазикастурскикотаваавадибелуџискибалискибаварскибас" + + "абамунскитобагомалабеџабембабетавскибенабафутбадагазападен балочибоџпур" + + "ибиколскибинибанџарскикомсиксикабишнупријабахтијарскибрајбрахујскибодоа" + + "косебурјатскибугискибулубиленскимедумбакадокарипскикајугаацамсебуанскич" + + "игачибчачагатајскичучкимарискичинучки жаргончоктавскичипевјанскичерокис" + + "кичејенскицентралнокурдскикоптскикапизнонкримскотурскифранцуски (Сеселв" + + "а креоли)кашупскидакотадаргватаитаделаверслејвидогрипскидинказармадогри" + + "долнолужичкидусунскидуаласреднохоландскијола-фоњиџуладазагаембуефикемил" + + "ијанскистароегипетскиекаџукеламскисредноанглискицентралнојупичкиевондое" + + "кстремадурскифангфилипинскитурнедаленски финскифонкаџунски францускисре" + + "днофранцускистарофранцускифранкопровансалскисевернофризискиисточнофризи" + + "скифурланскигагагаускигангајогбајазороастриски даригизгилбертанскигилан" + + "скисредногорногерманскистарогорногерманскигоански конканигондигоронтало" + + "готскигребостарогрчкишвајцарски германскигвахирофарефарегусигвичинскиха" + + "јдахакахавајскифиџиски хиндихилигајнонскихетитскихмонггорнолужичкисјанг" + + "хупаибанибибиоилоканскиингушкиижорскијамајски креолскиложбаннгомбамачам" + + "ееврејскоперсискиеврејскоарапскијитскикаракалпачкикабилскикачинскикаџек" + + "амбакавикабардинскиканембутјапмакондекабувердианукењангкорокаинганшкика" + + "сихотанскикојра чииниковарскизазакикакокаленџинкимбундукоми-пермјачкико" + + "нканикозрејскикпелекарачаевско-балкарскикриокинарајскикарелскикурухшамб" + + "алабафијаколоњскикумичкикутенајскиладинолангиландаламбалезгинскилингва " + + "франка новалигурскиливонскилакотскиломбардискимонголозисевернолурискила" + + "тгалскилуба-лулуалујсењскилундалуомизолујакнижевен кинескиласкимадурски" + + "мафамагахимаитилимакасарскимандингомасајскимабамокшанскимандарскимендем" + + "еруморисјенсредноирскимакува-митометамикмакминангкабауманџурскиманипурс" + + "кимохавскимосизападномарискимундангповеќе јазицикрикмирандскимарваримје" + + "неерзјанскимазендеранскијужноминскинеаполскинамадолногерманскиневарскин" + + "ијасниујескиао нагаквазионгиембунногајскистаронордискиновијалнкосеверно" + + "сотскинуеркласичен неварскињамвезињанколењоронзимаосашкиотомански турск" + + "ипангасинанскисредноперсискипампангапапијаментопалауанскипикардскинигер" + + "иски пиџинпенсилваниски германскименонитски долногерманскистароперсиски" + + "фалечкогерманскифеникискипиемонтскипонтскипонпејскипрускистаропровансал" + + "скикичекичванскираџастанскирапанујскираротонганскиромањолскирифскиромбо" + + "ромскиротуманскирусинскировијанскивлашкируасандавејакутскисамарјански а" + + "рамејскисамбурусасачкисанталисаураштрангембејсангусицилијанскишкотски г" + + "ерманскисасарски сардинскијужнокурдскисенекасенасериселкупскикојраборо " + + "сенистароирскисамогитскитачелхитшанчадски арапскисидамодолношлезискисел" + + "ајарскијужен самилуле самиинари самисколт самисонинкезогдијанскисрански" + + " тонгосерерсахозатерландски фризискисукумасусусумерскикоморијанскикласич" + + "ен сирискисирискишлезискитулутимнетесотеренотетумтигретивтокелауанскица" + + "хурскиклингонскитлингитталишкитамашекњаса тонгаток писинтуројотарокоцак" + + "онскицимшијанскитатскитумбукатувалуанскитазавактуванскицентралноатланск" + + "и тамазитскиудмуртскиугаритскиумбундукоренвајвенетскивепшкизападнофлама" + + "нскимајнскофранконскивотскивирувунџовалсерволамоварајскивашоварлпиривук" + + "алмичкимегрелскисогајаојапскијенгбенјембањенгатукантонскизапотечкиблисс" + + "имболизеландскизенагастандарден марокански тамазитскизунибез лингвистич" + + "ка содржиназазалитературен арапскиавстралиски англискиканадски англиски" + + "британски англискиамерикански англискишпански (во Европа)канадски франц" + + "ускишвајцарски францускифламанскипортугалски (во Европа)молдавскисрпско" + + "хрватскиконгоански свахилипоедноставен кинескитрадиционален кинески" + +var mkLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x004e, 0x005e, 0x0070, 0x007e, 0x008c, 0x009a, 0x00aa, 0x00c4, 0x00d6, 0x00e8, 0x00f8, @@ -18047,350 +21339,371 @@ var mkLangIdx = []uint16{ // 610 elements // Entry 40 - 7F 0x03ea, 0x0400, 0x0414, 0x041c, 0x042d, 0x0441, 0x0447, 0x0459, 0x046f, 0x0481, 0x0491, 0x04a1, 0x04b1, 0x04bb, 0x04c7, 0x04d5, - 0x04ed, 0x04ff, 0x050d, 0x051b, 0x052b, 0x0537, 0x0549, 0x0557, - 0x055f, 0x056d, 0x0585, 0x0595, 0x05ad, 0x05b7, 0x05c9, 0x05d7, - 0x05e3, 0x05f5, 0x060c, 0x061c, 0x062c, 0x063e, 0x064c, 0x0660, - 0x0672, 0x0684, 0x0690, 0x06a0, 0x06b0, 0x06c2, 0x06d6, 0x06f3, - 0x0703, 0x070f, 0x0721, 0x0740, 0x075d, 0x0776, 0x0782, 0x078c, - 0x07a0, 0x07ac, 0x07b6, 0x07c0, 0x07ce, 0x07e0, 0x07e8, 0x07f4, + 0x04e3, 0x04f5, 0x0503, 0x0511, 0x0521, 0x052d, 0x053f, 0x054d, + 0x0555, 0x0563, 0x0573, 0x0583, 0x059b, 0x05a5, 0x05b7, 0x05c5, + 0x05d1, 0x05e3, 0x05fa, 0x060a, 0x061a, 0x062c, 0x063a, 0x064e, + 0x0662, 0x0674, 0x0680, 0x0690, 0x06a0, 0x06b2, 0x06c6, 0x06e3, + 0x06f3, 0x06ff, 0x0711, 0x0730, 0x074d, 0x0766, 0x0772, 0x077c, + 0x0790, 0x079c, 0x07a6, 0x07b0, 0x07be, 0x07d0, 0x07d8, 0x07e4, // Entry 80 - BF - 0x0806, 0x081c, 0x082e, 0x0846, 0x0850, 0x0860, 0x086a, 0x0876, - 0x0886, 0x0898, 0x08a2, 0x08c0, 0x08ca, 0x08dc, 0x08ec, 0x0900, - 0x0912, 0x091a, 0x092c, 0x093c, 0x0948, 0x0952, 0x095e, 0x096c, - 0x097a, 0x0988, 0x0998, 0x09a4, 0x09be, 0x09d2, 0x09e0, 0x09f4, - 0x09fe, 0x0a10, 0x0a1c, 0x0a26, 0x0a36, 0x0a46, 0x0a56, 0x0a68, - 0x0a70, 0x0a8a, 0x0a94, 0x0aa8, 0x0ab6, 0x0ac6, 0x0ad6, 0x0ade, - 0x0ae8, 0x0af8, 0x0b06, 0x0b14, 0x0b1c, 0x0b28, 0x0b32, 0x0b40, - 0x0b52, 0x0b6f, 0x0b7f, 0x0b8d, 0x0b95, 0x0ba3, 0x0bb5, 0x0bc5, + 0x07f6, 0x080c, 0x081e, 0x0836, 0x0840, 0x0850, 0x085a, 0x086a, + 0x087a, 0x088c, 0x0896, 0x08ad, 0x08b7, 0x08c9, 0x08d9, 0x08ed, + 0x08ff, 0x0907, 0x0919, 0x0929, 0x0935, 0x093f, 0x094b, 0x0959, + 0x0967, 0x0975, 0x0985, 0x0991, 0x09ab, 0x09bf, 0x09cd, 0x09e1, + 0x09eb, 0x09fd, 0x0a09, 0x0a13, 0x0a23, 0x0a33, 0x0a43, 0x0a55, + 0x0a5d, 0x0a6b, 0x0a75, 0x0a89, 0x0a97, 0x0aa7, 0x0ab7, 0x0abf, + 0x0ac9, 0x0ad9, 0x0ae7, 0x0af5, 0x0afd, 0x0b09, 0x0b13, 0x0b21, + 0x0b33, 0x0b50, 0x0b60, 0x0b6e, 0x0b76, 0x0b84, 0x0b96, 0x0ba6, // Entry C0 - FF - 0x0be0, 0x0bfa, 0x0c14, 0x0c20, 0x0c32, 0x0c40, 0x0c4c, 0x0c5a, - 0x0c79, 0x0c89, 0x0cac, 0x0ccd, 0x0cd3, 0x0d05, 0x0d15, 0x0d21, - 0x0d2b, 0x0d3d, 0x0d4b, 0x0d5b, 0x0d63, 0x0d73, 0x0d7b, 0x0d87, - 0x0d8f, 0x0d99, 0x0da9, 0x0db1, 0x0dbb, 0x0dc7, 0x0de2, 0x0df0, - 0x0e00, 0x0e08, 0x0e1a, 0x0e20, 0x0e2e, 0x0e42, 0x0e58, 0x0e60, - 0x0e72, 0x0e7a, 0x0e84, 0x0e96, 0x0ea4, 0x0eac, 0x0ebc, 0x0eca, - 0x0ed2, 0x0ee2, 0x0eee, 0x0ef6, 0x0f08, 0x0f10, 0x0f1a, 0x0f2e, - 0x0f38, 0x0f46, 0x0f61, 0x0f73, 0x0f89, 0x0f9b, 0x0fab, 0x0fcc, + 0x0bc1, 0x0bdb, 0x0bf5, 0x0c01, 0x0c13, 0x0c21, 0x0c2d, 0x0c3b, + 0x0c5a, 0x0c5a, 0x0c6a, 0x0c8d, 0x0cae, 0x0cb4, 0x0ce6, 0x0cf6, + 0x0d02, 0x0d0c, 0x0d1e, 0x0d2c, 0x0d3c, 0x0d44, 0x0d54, 0x0d5c, + 0x0d68, 0x0d70, 0x0d7a, 0x0d8a, 0x0d92, 0x0d9c, 0x0da8, 0x0dc3, + 0x0dd1, 0x0de1, 0x0de9, 0x0dfb, 0x0e01, 0x0e0f, 0x0e23, 0x0e39, + 0x0e41, 0x0e53, 0x0e5b, 0x0e65, 0x0e77, 0x0e85, 0x0e8d, 0x0e9d, + 0x0eab, 0x0eb3, 0x0ec3, 0x0ecf, 0x0ed7, 0x0ee9, 0x0ef1, 0x0efb, + 0x0f0f, 0x0f19, 0x0f27, 0x0f42, 0x0f54, 0x0f6a, 0x0f7c, 0x0f8c, // Entry 100 - 13F - 0x0fda, 0x0fea, 0x1004, 0x1014, 0x1020, 0x102c, 0x1036, 0x1044, - 0x1050, 0x1062, 0x106c, 0x1076, 0x1080, 0x1098, 0x10a8, 0x10b2, - 0x10d0, 0x10e1, 0x10e9, 0x10f5, 0x10fd, 0x1105, 0x111b, 0x1137, - 0x1143, 0x1151, 0x116d, 0x118d, 0x1199, 0x11b5, 0x11bd, 0x11d1, - 0x11f8, 0x11fe, 0x1221, 0x123f, 0x125b, 0x127f, 0x129d, 0x12bb, - 0x12cd, 0x12d1, 0x12e1, 0x12e7, 0x12ef, 0x12f9, 0x131a, 0x1320, - 0x1338, 0x1348, 0x1370, 0x1396, 0x13b3, 0x13bd, 0x13cf, 0x13db, - 0x13e5, 0x13f9, 0x1420, 0x142e, 0x143e, 0x1446, 0x1458, 0x1462, + 0x0fac, 0x0fba, 0x0fca, 0x0fe4, 0x1014, 0x1024, 0x1030, 0x103c, + 0x1046, 0x1054, 0x1060, 0x1072, 0x107c, 0x1086, 0x1090, 0x10a8, + 0x10b8, 0x10c2, 0x10e0, 0x10f1, 0x10f9, 0x1105, 0x110d, 0x1115, + 0x112b, 0x1147, 0x1153, 0x1161, 0x117d, 0x119d, 0x11a9, 0x11c5, + 0x11cd, 0x11e1, 0x1208, 0x120e, 0x1231, 0x124f, 0x126b, 0x128f, + 0x12ad, 0x12cb, 0x12dd, 0x12e1, 0x12f1, 0x12f7, 0x12ff, 0x1309, + 0x132a, 0x1330, 0x1348, 0x1358, 0x1380, 0x13a6, 0x13c3, 0x13cd, + 0x13df, 0x13eb, 0x13f5, 0x1409, 0x1430, 0x143e, 0x144e, 0x1456, // Entry 140 - 17F - 0x146a, 0x147a, 0x1493, 0x14ad, 0x14bd, 0x14c7, 0x14df, 0x14e9, - 0x14f1, 0x14f9, 0x1505, 0x1517, 0x1525, 0x1533, 0x1554, 0x1560, - 0x156c, 0x1578, 0x1598, 0x15b6, 0x15c2, 0x15da, 0x15ea, 0x15fa, - 0x1602, 0x160c, 0x1614, 0x162a, 0x1638, 0x1640, 0x164e, 0x1666, - 0x1672, 0x167a, 0x168e, 0x1696, 0x16a6, 0x16bb, 0x16cb, 0x16d7, - 0x16df, 0x16ef, 0x16ff, 0x171a, 0x1728, 0x173a, 0x1744, 0x176d, - 0x1775, 0x1789, 0x1799, 0x17a3, 0x17b1, 0x17bd, 0x17cd, 0x17db, - 0x17ef, 0x17fb, 0x1805, 0x180f, 0x1819, 0x182b, 0x184d, 0x185d, + 0x1468, 0x1472, 0x147a, 0x148a, 0x14a3, 0x14bd, 0x14cd, 0x14d7, + 0x14ef, 0x14f9, 0x1501, 0x1509, 0x1515, 0x1527, 0x1535, 0x1543, + 0x1564, 0x1570, 0x157c, 0x1588, 0x15a8, 0x15c6, 0x15d2, 0x15ea, + 0x15fa, 0x160a, 0x1612, 0x161c, 0x1624, 0x163a, 0x1648, 0x1650, + 0x165e, 0x1676, 0x1682, 0x168a, 0x169e, 0x16a6, 0x16b6, 0x16cb, + 0x16db, 0x16e7, 0x16ef, 0x16ff, 0x170f, 0x172a, 0x1738, 0x174a, + 0x1754, 0x177d, 0x1785, 0x1799, 0x17a9, 0x17b3, 0x17c1, 0x17cd, + 0x17dd, 0x17eb, 0x17ff, 0x180b, 0x1815, 0x181f, 0x1829, 0x183b, // Entry 180 - 1BF - 0x186d, 0x187d, 0x1891, 0x189b, 0x18a3, 0x18bf, 0x18d1, 0x18e4, - 0x18f6, 0x1900, 0x1906, 0x190e, 0x1916, 0x1935, 0x193f, 0x194f, - 0x1957, 0x1963, 0x1971, 0x1985, 0x1995, 0x19a5, 0x19ad, 0x19bf, - 0x19d1, 0x19db, 0x19e3, 0x19f3, 0x1a09, 0x1a1e, 0x1a26, 0x1a32, - 0x1a48, 0x1a5a, 0x1a6a, 0x1a7a, 0x1a82, 0x1a9e, 0x1aac, 0x1ac5, - 0x1acd, 0x1adf, 0x1aed, 0x1aed, 0x1af7, 0x1b09, 0x1b23, 0x1b39, - 0x1b4b, 0x1b53, 0x1b6f, 0x1b7f, 0x1b89, 0x1b99, 0x1b9d, 0x1ba9, - 0x1bb9, 0x1bc9, 0x1be3, 0x1bf1, 0x1bf7, 0x1c0e, 0x1c16, 0x1c37, + 0x185d, 0x186d, 0x187d, 0x188d, 0x18a3, 0x18ad, 0x18b5, 0x18d1, + 0x18e3, 0x18f6, 0x1908, 0x1912, 0x1918, 0x1920, 0x1928, 0x1947, + 0x1951, 0x1961, 0x1969, 0x1975, 0x1983, 0x1997, 0x19a7, 0x19b7, + 0x19bf, 0x19d1, 0x19e3, 0x19ed, 0x19f5, 0x1a05, 0x1a1b, 0x1a30, + 0x1a38, 0x1a44, 0x1a5a, 0x1a6c, 0x1a80, 0x1a90, 0x1a98, 0x1ab4, + 0x1ac2, 0x1adb, 0x1ae3, 0x1af5, 0x1b03, 0x1b03, 0x1b0d, 0x1b1f, + 0x1b39, 0x1b4f, 0x1b61, 0x1b69, 0x1b85, 0x1b95, 0x1b9f, 0x1baf, + 0x1bbc, 0x1bc8, 0x1bd8, 0x1be8, 0x1c02, 0x1c10, 0x1c16, 0x1c30, // Entry 1C0 - 1FF - 0x1c45, 0x1c53, 0x1c5b, 0x1c65, 0x1c71, 0x1c90, 0x1caa, 0x1cc6, - 0x1cd6, 0x1cec, 0x1d00, 0x1d12, 0x1d3f, 0x1d70, 0x1d8a, 0x1daa, - 0x1dbc, 0x1dd0, 0x1dde, 0x1df0, 0x1dfc, 0x1e1e, 0x1e26, 0x1e38, - 0x1e4e, 0x1e62, 0x1e7c, 0x1e90, 0x1e9c, 0x1ea6, 0x1eb2, 0x1ec6, - 0x1ed6, 0x1eea, 0x1ef6, 0x1efc, 0x1f0a, 0x1f1a, 0x1f43, 0x1f51, - 0x1f5f, 0x1f6d, 0x1f7f, 0x1f8d, 0x1f97, 0x1faf, 0x1fd0, 0x1ff3, - 0x200b, 0x2017, 0x201f, 0x2027, 0x2039, 0x2054, 0x2068, 0x207c, - 0x208c, 0x2092, 0x20ad, 0x20b9, 0x20d3, 0x20e7, 0x2101, 0x211e, + 0x1c38, 0x1c59, 0x1c67, 0x1c75, 0x1c7d, 0x1c87, 0x1c93, 0x1cb2, + 0x1ccc, 0x1ce8, 0x1cf8, 0x1d0e, 0x1d22, 0x1d34, 0x1d51, 0x1d7e, + 0x1daf, 0x1dc9, 0x1de9, 0x1dfb, 0x1e0f, 0x1e1d, 0x1e2f, 0x1e3b, + 0x1e5d, 0x1e65, 0x1e77, 0x1e8d, 0x1ea1, 0x1ebb, 0x1ecf, 0x1edb, + 0x1ee5, 0x1ef1, 0x1f05, 0x1f15, 0x1f29, 0x1f35, 0x1f3b, 0x1f49, + 0x1f59, 0x1f82, 0x1f90, 0x1f9e, 0x1fac, 0x1fbe, 0x1fcc, 0x1fd6, + 0x1fee, 0x200f, 0x2032, 0x204a, 0x2056, 0x205e, 0x2066, 0x2078, + 0x2093, 0x20a7, 0x20bb, 0x20cb, 0x20d1, 0x20ec, 0x20f8, 0x2112, // Entry 200 - 23F - 0x213d, 0x215e, 0x216c, 0x2182, 0x219b, 0x21a5, 0x21ad, 0x21d6, - 0x21e2, 0x21ea, 0x21fa, 0x2212, 0x2231, 0x223f, 0x224f, 0x2257, - 0x2261, 0x2269, 0x2275, 0x227f, 0x2289, 0x228f, 0x22a7, 0x22b7, - 0x22cb, 0x22d9, 0x22e7, 0x22f5, 0x2308, 0x2319, 0x2325, 0x2331, - 0x2341, 0x2357, 0x2363, 0x2371, 0x2387, 0x2395, 0x23a5, 0x23e1, - 0x23f3, 0x2405, 0x2413, 0x241d, 0x2423, 0x2433, 0x243f, 0x245f, - 0x2481, 0x248d, 0x2495, 0x249f, 0x24ab, 0x24b7, 0x24c7, 0x24cf, - 0x24cf, 0x24d3, 0x24e3, 0x24f5, 0x24fd, 0x2503, 0x250f, 0x251d, + 0x2126, 0x2139, 0x214a, 0x215d, 0x2170, 0x217e, 0x2194, 0x21ad, + 0x21b7, 0x21bf, 0x21e8, 0x21f4, 0x21fc, 0x220c, 0x2224, 0x2243, + 0x2251, 0x2261, 0x2269, 0x2273, 0x227b, 0x2287, 0x2291, 0x229b, + 0x22a1, 0x22b9, 0x22c9, 0x22dd, 0x22eb, 0x22f9, 0x2307, 0x231a, + 0x232b, 0x2337, 0x2343, 0x2353, 0x2369, 0x2375, 0x2383, 0x2399, + 0x23a7, 0x23b7, 0x23ee, 0x2400, 0x2412, 0x2420, 0x242a, 0x2430, + 0x2440, 0x244c, 0x246c, 0x248e, 0x249a, 0x24a2, 0x24ac, 0x24b8, + 0x24c4, 0x24d4, 0x24dc, 0x24ec, 0x24f0, 0x2500, 0x2512, 0x251a, // Entry 240 - 27F - 0x2527, 0x2535, 0x2547, 0x2559, 0x256f, 0x2581, 0x258d, 0x25cd, - 0x25d5, 0x2605, 0x260d, 0x2632, 0x2632, 0x2632, 0x2632, 0x2632, - 0x2632, 0x2655, 0x267c, 0x267c, 0x269e, 0x269e, 0x269e, 0x26c4, - 0x26c4, 0x26c4, 0x26c4, 0x26c4, 0x26ee, 0x2700, 0x271c, 0x273f, - 0x2766, 0x278f, -} // Size: 1244 bytes - -var mlLangStr string = "" + // Size: 11903 bytes + 0x2520, 0x252c, 0x253a, 0x2544, 0x2552, 0x2564, 0x2576, 0x258c, + 0x259e, 0x25aa, 0x25e8, 0x25f0, 0x2620, 0x2628, 0x264d, 0x264d, + 0x264d, 0x264d, 0x2674, 0x2695, 0x26b8, 0x26df, 0x26df, 0x2701, + 0x2701, 0x2701, 0x2724, 0x274b, 0x274b, 0x275d, 0x275d, 0x2787, + 0x2799, 0x27b5, 0x27d8, 0x27ff, 0x2828, +} // Size: 1250 bytes + +const mlLangStr string = "" + // Size: 12319 bytes "അഫാർഅബ്\u200cഖാസിയൻഅവസ്റ്റാൻആഫ്രിക്കാൻസ്അകാൻ\u200cഅംഹാരിക്അരഗോണീസ്അറബിക്" + "ആസ്സാമീസ്അവാരിക്അയ്മാറഅസർബൈജാനിബഷ്ഖിർബെലാറുഷ്യൻബൾഗേറിയൻബിസ്\u200cലാമബം" + - "ബാറബംഗാളിടിബറ്റൻബ്രെട്ടൺബോസ്നിയൻകറ്റാലാൻചെചൻകമോറോകോർസിക്കൻക്രീചെക്ക്ചർ" + - "ച്ച് സ്ലാവിക്ചുവാഷ്വെൽഷ്ഡാനിഷ്ജർമ്മൻദിവെഹിസോങ്കഇവ്ഗ്രീക്ക്ഇംഗ്ലീഷ്എസ്" + + "ബാറബംഗാളിടിബറ്റൻബ്രെട്ടൺബോസ്നിയൻകറ്റാലാൻചെചൻചമോറോകോർസിക്കൻക്രീചെക്ക്ചർ" + + "ച്ച് സ്ലാവിക്ചുവാഷ്വെൽഷ്ഡാനിഷ്ജർമ്മൻദിവെഹിസോങ്കയൂവ്ഗ്രീക്ക്ഇംഗ്ലീഷ്എസ്" + "\u200cപരാന്റോസ്\u200cപാനിഷ്എസ്റ്റോണിയൻബാസ്\u200cക്പേർഷ്യൻഫുലഫിന്നിഷ്ഫിജി" + "യൻഫാറോസ്ഫ്രഞ്ച്പശ്ചിമ ഫ്രിഷിയൻഐറിഷ്സ്കോട്ടിഷ് ഗൈലിക്ഗലീഷ്യൻഗ്വരനീഗുജറാ" + - "ത്തിമാൻസ്ഹൗസഹീബ്രുഹിന്ദിഹിരി മോതുക്രൊയേഷ്യൻഹെയ്\u200cതിയൻഹംഗേറിയൻഅർമേന" + - "ിയൻഹെരേരൊഇന്റർലിൻ\u200cഗ്വാഇൻഡോനേഷ്യൻഇന്റർലിംഗ്വഇഗ്ബോഷുവാൻയിഇനുപിയാക്ഇ" + - "ഡോഐസ്\u200cലാൻഡിക്ഇറ്റാലിയൻഇനുക്റ്റിറ്റട്ട്ജാപ്പനീസ്ജാവാനീസ്ജോർജിയൻകോം" + - "ഗോകികൂയുക്വാന്യമകസാഖ്കലാല്ലിസട്ട്ഖമെർകന്നഡകൊറിയൻകനൂറികാശ്\u200cമീരികുർ" + - "ദ്ദിഷ്കോമികോർണിഷ്കിർഗിസ്ലാറ്റിൻലക്\u200cസംബർഗിഷ്ഗാണ്ടലിംബർഗിഷ്ലിംഗാലലാ" + - "വോലിത്വാനിയൻലുബ-കറ്റംഗലാറ്റ്വിയൻമലഗാസിമാർഷല്ലീസ്മവോറിമാസിഡോണിയൻമലയാളംമ" + - "ംഗോളിയൻമറാത്തിമലെയ്മാൾട്ടീസ്ബർമീസ്നൗറുനോർത്ത് ഡെബിൾനേപ്പാളിഡോങ്കഡച്ച്ന" + - "ോർവീജിയൻ നൈനോർക്\u200cസ്നോർവീജിയൻ ബുക്\u200cമൽദക്ഷിണ നെഡിബിൾനവാഹൊന്യൻജ" + - "ഓക്\u200cസിറ്റൻഓജിബ്വാഒറോമോഒഡിയഒസ്സെറ്റിക്പഞ്ചാബിപാലിപോളിഷ്പഷ്തുപോർച്ച" + - "ുഗീസ്ക്വെച്ചുവറൊമാഞ്ച്റുണ്ടിറൊമാനിയൻറഷ്യൻകിന്യാർവാണ്ടസംസ്\u200cകൃതംസർഡ" + - "ിനിയാൻസിന്ധിവടക്കൻ സമിസാംഗോസിംഹളസ്ലോവാക്സ്ലോവേനിയൻസമോവൻഷോണസോമാലിഅൽബേനി" + - "യൻസെർബിയൻസ്വാറ്റിതെക്കൻ സോതോസുണ്ടാനീസ്സ്വീഡിഷ്സ്വാഹിലിതമിഴ്തെലുങ്ക്താജ" + - "ിക്തായ്ടൈഗ്രിന്യതുർക്\u200cമെൻത്സ്വാനടോംഗൻടർക്കിഷ്ത്സോംഗടാട്ടർതാഹിതിയൻ" + - "ഉയ്ഘുർഉക്രേനിയൻഉറുദുഉസ്\u200cബെക്ക്വെന്ദവിയറ്റ്നാമീസ്വോളാപുക്വല്ലൂൺവൊള" + - "ോഫ്ഖോസയിദ്ദിഷ്യൊറൂബാസ്വാംഗ്ചൈനീസ്സുലുഅചിനീസ്അകോലിഅഡാങ്ഗമിഅഡൈഗേആഫ്രിഹില" + - "ിആഘേംഅയിനുഅക്കാഡിയൻഅലൈട്ട്തെക്കൻ അൾത്തായിപഴയ ഇംഗ്ലീഷ്ആൻഗികഅരമായഭാഷമാപു" + - "ചിഅരപാഹോഅറാവക്ആസുഓസ്\u200cട്രിയൻഅവധിബലൂചിബാലിനീസ്ബസബാമുൻഘോമാലബേജബേംബബെ" + - "നാബാഫട്ട്പശ്ചിമ ബലൂചിഭോജ്\u200cപൂരിബികോൽബിനികോംസിക്സികബ്രജ്ബോഡോഅക്കൂസ്" + - "ബുറിയത്ത്ബുഗിനീസ്ബുളുബ്ലിൻമെഡുംബകാഡോകാരിബ്കയൂഗഅറ്റ്സാംസെബുവാനോചിഗചിബ്ച" + - "ചഗതൈചൂകീസ്മാരിചിനൂഗ്-ജാർഗൺചോക്റ്റാവ്ചിപേവ്യൻഷെരോക്കിചിയേന്നേസൊറാനി കുർ" + - "ദിഷ്കോപ്റ്റിക്ക്രിമിയൻ ടർക്കിഷ്കാഷുബിയാൻഡകോട്ടഡർഗ്വാതൈതദലവാരെസ്ലേവ്ഡോഗ" + - "്രിബ്ദിൻകസാർമ്മഡോഗ്രിലോവർ സോർബിയൻദ്വാലമദ്ധ്യ ഡച്ച്യോല-ഫോന്യിദ്വൈലഡാസാഗ" + - "എംബുഎഫിക്പ്രാചീന ഈജിപ്ഷ്യൻഎകാജുക്എലാമൈറ്റ്മദ്ധ്യ ഇംഗ്ലീഷ്എവോൻഡോഫങ്ഫിലി" + - "പ്പിനോഫോൻമദ്ധ്യ ഫ്രഞ്ച്പഴയ ഫ്രഞ്ച്നോർത്തേൻ ഫ്രിഷ്യൻഈസ്റ്റേൺ ഫ്രിഷ്യൻഫ്" + - "രിയുലിയാൻഗാഗാഗൂസ്ഗയൊഗബ്യഗീസ്ഗിൽബർസേമദ്ധ്യ ഉച്ച ജർമൻപ്രാചീന ഉച്ച ജർമൻഗോ" + - "ണ്ഡിഗൊറോൻറാലോഗോഥിക്ക്ഗ്രബൊപുരാതന യവന ഭാഷസ്വിസ് ജർമ്മൻഗുസീഗ്വിച്ച് ഇൻഹൈ" + - "ഡഹവായിയൻഹിലിഗയ്നോൺഹിറ്റൈറ്റേമോങ്അപ്പർ സോർബിയൻഹൂപഇബാൻഇബീബിയോഇലോകോഇംഗ്വി" + - "ഷ്ലോജ്ബാൻഗോമ്പമചേംജൂഡിയോ-പേർഷ്യൻജൂഡിയോ-അറബിക്കര-കാൽപ്പക്കബൈൽകാചിൻജ്ജുക" + - "ംബകാവികബർഡിയാൻകനെംബുട്യാപ്മക്കോണ്ടെകബുവെർദിയാനുകോറോഘാസിഘോറ്റാനേസേകൊയ്റ" + - " ചീനികക്കോകലെഞ്ഞിൻക്ലിംഗൻകോമി-പെർമ്യാക്ക്കൊങ്കണികൊസറേയൻകപെല്ലേകരചൈ-ബാൽകർ" + - "കരീലിയൻകുരുഖ്ഷംഭാളഭാഫിയകൊളോഞ്ഞിയൻകുമൈക്കുതേനൈലാഡിനോലാംഗിലഹ്\u200cൻഡലംബ" + - "ലഹ്ഗിയാൻലഗോത്തമോങ്കോലൊസിവടക്കൻ ലൂറിലൂബ-ലുലുവലൂയിസെനോലുൻഡലുവോമിസോലുയിയമ" + - "ദുരേസേമാഫമഗാഹിമൈഥിലിമകാസർമണ്ഡിൻഗോമസായ്മാബമോക്ഷമണ്ഡാർമെൻഡെമേരുമൊറിസിൻമദ" + - "്ധ്യ ഐറിഷ്മാഖുവാ-മീത്തോമേത്താമിക്മാക്മിനാങ്കബൗമൻചുമണിപ്പൂരിമോഹാക്മൊസ്സ" + - "ിമുന്ദാംഗ്പലഭാഷകൾക്രീക്ക്മിരാൻറസേമർവാരിമയീൻഏഴ്സ്യമസന്ററാനിനെപ്പോളിറ്റാ" + - "ൻനാമലോ ജർമൻനേവാരിനിയാസ്ന്യുവാൻക്വാസിയോഗീംബൂൺനോഗൈപഴയ പേർഷ്യൻഇൻകോനോർത്തേ" + - "ൻ സോതോനുവേർക്ലാസിക്കൽ നേവാരിന്യാംവേസിന്യാൻകോൾന്യോറോസിമഒസേജ്ഓട്ടോമൻ തുർ" + - "ക്കിഷ്പങ്കാസിനൻപാഹ്ലവിപാംപൻഗപാപിയാമെൻറൊപലാവുൻപ്രാചീന പേർഷ്യൻഫീനിഷ്യൻപൊ" + - "ൻപിയൻപ്രൊവൻഷ്ൽക്വിച്ചെരാജസ്ഥാനിരാപനൂയിരാരോടോങ്കൻറോംബോറോമനിആരോമാനിയൻറുവ" + - "ാസാൻഡവേസാഖസമരിയാക്കാരുടെ അരമായസംബുരുസസാക്സന്താലിഗംബായ്സംഗുസിസിലിയൻസ്കോ" + - "ട്സ്തെക്കൻ കുർദ്ദിഷ്സെനേകസേനസെൽകപ്കൊയ്റാബൊറോ സെന്നിപ്രാചീന ഐറിഷ്താച്ചല" + - "ിറ്റ്ഷാൻചാഡ് അറബിസിഡാമോതെക്കൻ സാമിലൂലീ സമിഇനാരി സാമിസ്കോൾട്ട് സമിസോണിൻ" + - "കെസോജിഡിയൻശ്രാനൻ ഡോങ്കോസെറർസാഹോസുകുമസുസുസുമേരിയൻകൊമോറിയൻപുരാതന സുറിയാന" + - "ിഭാഷസുറിയാനിടിംനേടെസോടെറേനോടെറ്റുംടൈഗ്രിടിവ്ടൊക്കേലൗക്ലിംഗോൺലിംഗ്വിറ്റ" + - "്ടമഷേക്ന്യാസാ ഡോങ്കടോക് പിസിൻതരോക്കോസിംഷ്യൻടുംബുകതുവാലുടസവാക്ക്തുവിനിയ" + - "ൻമധ്യ അറ്റ്\u200cലസ് ടമാസൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്ദുമൂലഭാഷവൈവോട്" + - "ടിക്വുഞ്ജോവാൾസർവലമൊവാരേയ്വാഷൊവാൾപ്പിരികൽമൈക്സോഗോയാവോയെപ്പീസ്യാംഗ്ബെൻയം" + - "ബകാന്റണീസ്സാപ്പോടെക്ബ്ലിസ്സിംബൽസ്സെനഗമൊറോക്കൻ സാധാരണ താമസൈറ്റ്സുനിഭാഷാ" + - "പരമായ ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്ഓസ്\u200cട്രിയൻ" + - " ജർമൻസ്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്ലീഷ്കനേഡിയൻ ഇംഗ്ലീഷ്ബ്രിട്ടീഷ് " + - "ഇംഗ്ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരിക്കൻ സ്\u200cപാനിഷ്യൂറോപ്യൻ സ്" + + "ത്തിമാൻസ്ഹൗസഹീബ്രുഹിന്ദിഹിരി മോതുക്രൊയേഷ്യൻഹെയ്\u200cതിയൻ ക്രിയോൾഹംഗേറ" + + "ിയൻഅർമേനിയൻഹെരേരൊഇന്റർലിംഗ്വഇൻഡോനേഷ്യൻഇന്റർലിംഗ്വേഇഗ്ബോഷുവാൻയിഇനുപിയാക" + + "്ഇഡോഐസ്\u200cലാൻഡിക്ഇറ്റാലിയൻഇനുക്റ്റിറ്റട്ട്ജാപ്പനീസ്ജാവാനീസ്ജോർജിയൻക" + + "ോംഗോകികൂയുക്വാന്യമകസാഖ്കലാല്ലിസട്ട്ഖമെർകന്നഡകൊറിയൻകനൂറികാശ്\u200cമീരിക" + + "ുർദ്ദിഷ്കോമികോർണിഷ്കിർഗിസ്ലാറ്റിൻലക്\u200cസംബർഗിഷ്ഗാണ്ടലിംബർഗിഷ്ലിംഗാല" + + "ലാവോലിത്വാനിയൻലുബ-കറ്റംഗലാറ്റ്വിയൻമലഗാസിമാർഷല്ലീസ്മവോറിമാസിഡോണിയൻമലയാള" + + "ംമംഗോളിയൻമറാത്തിമലെയ്മാൾട്ടീസ്ബർമീസ്നൗറുനോർത്ത് ഡെബിൾനേപ്പാളിഡോങ്കഡച്ച" + + "്നോർവീജിയൻ നൈനോർക്\u200cസ്നോർവീജിയൻ ബുക്\u200cമൽദക്ഷിണ നെഡിബിൾനവാജോന്യ" + + "ൻജഓക്\u200cസിറ്റൻഓജിബ്വാഒറോമോഒഡിയഒസ്സെറ്റിക്പഞ്ചാബിപാലിപോളിഷ്പഷ്\u200c" + + "തോപോർച്ചുഗീസ്ക്വെച്ചുവറൊമാഞ്ച്റുണ്ടിറൊമാനിയൻറഷ്യൻകിന്യാർവാണ്ടസംസ്" + + "\u200cകൃതംസർഡിനിയാൻസിന്ധിവടക്കൻ സമിസാംഗോസിംഹളസ്ലോവാക്സ്ലോവേനിയൻസമോവൻഷോണസ" + + "ോമാലിഅൽബേനിയൻസെർബിയൻസ്വാറ്റിതെക്കൻ സോതോസുണ്ടാനീസ്സ്വീഡിഷ്സ്വാഹിലിതമിഴ്" + + "തെലുങ്ക്താജിക്തായ്ടൈഗ്രിന്യതുർക്\u200cമെൻസ്വാനടോംഗൻടർക്കിഷ്സോംഗടാട്ടർത" + + "ാഹിതിയൻഉയ്ഘുർഉക്രേനിയൻഉറുദുഉസ്\u200cബെക്ക്വെന്ദവിയറ്റ്നാമീസ്വോളാപുക്വല" + + "്ലൂൺവൊളോഫ്ഖോസയിദ്ദിഷ്യൊറൂബാസ്വാംഗ്ചൈനീസ്സുലുഅചിനീസ്അകോലിഅഡാങ്\u200cമിഅ" + + "ഡൈഗേആഫ്രിഹിലിആഘേംഐനുഅക്കാഡിയൻഅലൂട്ട്തെക്കൻ അൾത്തായിപഴയ ഇംഗ്ലീഷ്ആൻഗികഅര" + + "മായമാപുചിഅറാപഹോഅറാവക്ആസുഓസ്\u200cട്രിയൻഅവാധിബലൂചിബാലിനീസ്ബസബാമുൻഘോമാലബ" + + "േജബേംബബെനാബാഫട്ട്പശ്ചിമ ബലൂചിഭോജ്\u200cപുരിബികോൽബിനികോംസിക്സികബ്രജ്ബോഡ" + + "ോഅക്കൂസ്ബുറിയത്ത്ബുഗിനീസ്ബുളുബ്ലിൻമെഡുംബകാഡോകാരിബ്കയൂഗഅറ്റ്സാംസെബുവാനോ" + + "ചിഗചിബ്ചഷാഗതായ്ചൂകീസ്മാരിചിനൂഗ് ജാർഗൺചോക്റ്റാവ്ചിപേവ്യൻഷെരോക്കിഷായാൻസൊ" + + "റാനി കുർദിഷ്കോപ്റ്റിക്ക്രിമിയൻ ടർക്കിഷ്സെഷൽവ ക്രിയോൾ ഫ്രഞ്ച്കാഷുബിയാൻഡ" + + "കോട്ടഡർഗ്വാതൈതദെലവേർസ്ലേവ്ഡോഗ്രിബ്ദിൻകസാർമ്മഡോഗ്രിലോവർ സോർബിയൻദ്വാലമദ്" + + "ധ്യ ഡച്ച്യോല-ഫോന്യിദ്വൈലഡാസാഗഎംബുഎഫിക്പ്രാചീന ഈജിപ്ഷ്യൻഎകാജുക്എലാമൈറ്റ" + + "്മദ്ധ്യ ഇംഗ്ലീഷ്എവോൻഡോഫങ്ഫിലിപ്പിനോഫോൻമദ്ധ്യ ഫ്രഞ്ച്പഴയ ഫ്രഞ്ച്നോർത്തേ" + + "ൻ ഫ്രിഷ്യൻഈസ്റ്റേൺ ഫ്രിഷ്യൻഫ്രിയുലിയാൻഗാഗാഗൂസ്ഗാൻ ചൈനീസ്ഗയൊഗബ്യഗീസ്ഗിൽ" + + "ബർട്ടീസ്മദ്ധ്യ ഉച്ച ജർമൻഓൾഡ് ഹൈ ജർമൻഗോണ്ഡിഗൊറോൻറാലോഗോഥിക്ക്ഗ്രബൊപുരാതന" + + " ഗ്രീക്ക്സ്വിസ് ജർമ്മൻഗുസീഗ്വിച്ചിൻഹൈഡഹാക്ക ചൈനീസ്ഹവായിയൻഹിലിഗയ്നോൺഹിറ്റ" + + "ൈറ്റ്മോങ്അപ്പർ സോർബിയൻഷ്യാങ് ചൈനീസ്ഹൂപഇബാൻഇബീബിയോഇലോകോഇംഗ്വിഷ്ലോജ്ബാൻഗ" + + "ോമ്പമചേംജൂഡിയോ-പേർഷ്യൻജൂഡിയോ-അറബിക്കര-കാൽപ്പക്കബൈൽകാചിൻജ്ജുകംബകാവികബർഡ" + + "ിയാൻകനെംബുട്യാപ്മക്കോണ്ടെകബുവെർദിയാനുകോറോഘാസിഘോറ്റാനേസേകൊയ്റ ചീനികാകോക" + + "ലെഞ്ഞിൻകിംബുണ്ടുകോമി-പെർമ്യാക്ക്കൊങ്കണികൊസറേയൻകപെല്ലേകരചൈ-ബാൽകർകരീലിയൻ" + + "കുരുഖ്ഷംഭാളബാഫിയകൊളോണിയൻകുമൈക്കുതേനൈലാഡിനോലാംഗിലഹ്\u200cൻഡലംബലഹ്ഗിയാൻല" + + "ഗോത്തമോങ്കോലൊസിവടക്കൻ ലൂറിലൂബ-ലുലുവലൂയിസെനോലുൻഡലുവോമിസോലുയിയമദുരേസേമാഫ" + + "മഗാഹിമൈഥിലിമകാസർമണ്ഡിൻഗോമസായ്മാബമോക്ഷമണ്ഡാർമെൻഡെമേരുമൊറിസിൻമദ്ധ്യ ഐറിഷ" + + "്മാഖുവാ-മീത്തോമേത്താമിക്മാക്മിനാങ്കബൗമാൻ\u200cചുമണിപ്പൂരിമോഹാക്മൊസ്സിമ" + + "ുന്ദാംഗ്പലഭാഷകൾക്രീക്ക്മിരാൻറസേമർവാരിമയീൻഏഴ്സ്യമസന്ററാനിമിൻ നാൻ ചൈനീസ്" + + "നെപ്പോളിറ്റാൻനാമലോ ജർമൻനേവാരിനിയാസ്ന്യുവാൻക്വാസിയോഗീംബൂൺനോഗൈപഴയ നോഴ്" + + "\u200cസ്ഇൻകോനോർത്തേൻ സോതോനുവേർക്ലാസിക്കൽ നേവാരിന്യാംവേസിന്യാൻകോൾന്യോറോസി" + + "മഒസേജ്ഓട്ടോമൻ തുർക്കിഷ്പങ്കാസിനൻപാഹ്ലവിപാംപൻഗപാപിയാമെന്റൊപലാവുൻനൈജീരിയ" + + "ൻ പിഡ്\u200cഗിൻപഴയ പേർഷ്യൻഫീനിഷ്യൻപൊൻപിയൻപ്രഷ്യൻപഴയ പ്രൊവൻഷ്ൽക്വിച്ചെര" + + "ാജസ്ഥാനിരാപനൂയിരാരോടോങ്കൻറോംബോറൊമാനിആരോമാനിയൻറുവാസാൻഡവേസാഖസമരിയാക്കാരു" + + "ടെ അരമായസംബുരുസസാക്സന്താലിഗംബായ്സംഗുസിസിലിയൻസ്കോട്സ്തെക്കൻ കുർദ്ദിഷ്സെ" + + "നേകസേനസെൽകപ്കൊയ്റാബൊറോ സെന്നിപഴയ ഐറിഷ്താച്ചലിറ്റ്ഷാൻചാഡിയൻ അറബിസിഡാമോത" + + "െക്കൻ സാമിലൂലീ സമിഇനാരി സാമിസ്കോൾട്ട് സമിസോണിൻകെസോജിഡിയൻശ്രാനൻ ഡോങ്കോസ" + + "െറർസാഹോസുകുമസുസുസുമേരിയൻകൊമോറിയൻപുരാതന സുറിയാനിഭാഷസുറിയാനിടിംനേടെസോടെറ" + + "േനോടെറ്റുംടൈഗ്രിടിവ്ടൊക്കേലൗക്ലിംഗോൺലിംഗ്വിറ്റ്ടമഷേക്ന്യാസാ ഡോങ്കടോക് " + + "പിസിൻതരോക്കോസിംഷ്യൻടുംബുകടുവാലുടസവാക്ക്തുവിനിയൻമധ്യ അറ്റ്\u200cലസ് ടമാ" + + "സൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്ദുമൂലഭാഷവൈവോട്ടിക്വുൻജോവാൾസർവൊലൈറ്റവാര" + + "േയ്വാഷൊവൂൾപിരിവു ചൈനീസ്കൽമൈക്സോഗോയാവോയെപ്പീസ്യാംഗ്ബെൻയംബകാന്റണീസ്സാപ്പ" + + "ോടെക്ബ്ലിസ്സിംബൽസ്സെനഗസ്റ്റാൻഡേർഡ് മൊറോക്കൻ റ്റാമസിയറ്റ്സുനിഭാഷാപരമായ " + + "ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്ഓസ്\u200cട്രിയൻ ജർമൻസ" + + "്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്ലീഷ്കനേഡിയൻ ഇംഗ്ലീഷ്ബ്രിട്ടീഷ് ഇംഗ്" + + "ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരിക്കൻ സ്\u200cപാനിഷ്യൂറോപ്യൻ സ്" + "\u200cപാനിഷ്മെക്സിക്കൻ സ്പാനിഷ്കനേഡിയൻ ഫ്രഞ്ച്സ്വിസ് ഫ്രഞ്ച്ലോ സാക്സൺഫ്ല" + "മിഷ്ബ്രസീലിയൻ പോർച്ചുഗീസ്യൂറോപ്യൻ പോർച്ചുഗീസ്മോൾഡാവിയൻസെർബോ-ക്രൊയേഷ്യൻ" + - "കോംഗോ സ്വാഹിലി" + "കോംഗോ സ്വാഹിലിലളിതമാക്കിയ ചൈനീസ്പരമ്പരാഗത ചൈനീസ്" -var mlLangIdx = []uint16{ // 608 elements +var mlLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000c, 0x002a, 0x0045, 0x0069, 0x0078, 0x0090, 0x00a8, 0x00ba, 0x00d5, 0x00ea, 0x00fc, 0x0117, 0x0129, 0x0147, 0x015f, 0x0177, 0x0186, 0x0198, 0x01ad, 0x01c5, 0x01dd, 0x01f5, 0x0201, 0x0210, 0x022b, 0x0237, 0x0249, 0x0274, 0x0286, 0x0295, 0x02a7, - 0x02b9, 0x02cb, 0x02da, 0x02e3, 0x02fb, 0x0313, 0x0334, 0x034f, - 0x0370, 0x0385, 0x039a, 0x03a3, 0x03bb, 0x03cd, 0x03df, 0x03f4, - 0x041f, 0x042e, 0x045f, 0x0474, 0x0486, 0x04a1, 0x04b0, 0x04b9, - 0x04cb, 0x04dd, 0x04f6, 0x0514, 0x052f, 0x0547, 0x055f, 0x0571, + 0x02b9, 0x02cb, 0x02da, 0x02e6, 0x02fe, 0x0316, 0x0337, 0x0352, + 0x0373, 0x0388, 0x039d, 0x03a6, 0x03be, 0x03d0, 0x03e2, 0x03f7, + 0x0422, 0x0431, 0x0462, 0x0477, 0x0489, 0x04a4, 0x04b3, 0x04bc, + 0x04ce, 0x04e0, 0x04f9, 0x0517, 0x0548, 0x0560, 0x0578, 0x058a, // Entry 40 - 7F - 0x0598, 0x05b6, 0x05d7, 0x05e6, 0x05fb, 0x0616, 0x061f, 0x0640, - 0x065b, 0x068b, 0x06a6, 0x06be, 0x06d3, 0x06e2, 0x06f4, 0x070c, - 0x071b, 0x073f, 0x074b, 0x075a, 0x076c, 0x077b, 0x0796, 0x07b1, - 0x07bd, 0x07d2, 0x07e7, 0x07fc, 0x0820, 0x082f, 0x084a, 0x085c, - 0x0868, 0x0886, 0x08a2, 0x08c0, 0x08d2, 0x08f0, 0x08ff, 0x091d, - 0x092f, 0x0947, 0x095c, 0x096b, 0x0986, 0x0998, 0x09a4, 0x09c9, - 0x09e1, 0x09f0, 0x09ff, 0x0a39, 0x0a6a, 0x0a92, 0x0aa1, 0x0ab0, - 0x0ace, 0x0ae3, 0x0af2, 0x0afe, 0x0b1f, 0x0b34, 0x0b40, 0x0b52, + 0x05ab, 0x05c9, 0x05ed, 0x05fc, 0x0611, 0x062c, 0x0635, 0x0656, + 0x0671, 0x06a1, 0x06bc, 0x06d4, 0x06e9, 0x06f8, 0x070a, 0x0722, + 0x0731, 0x0755, 0x0761, 0x0770, 0x0782, 0x0791, 0x07ac, 0x07c7, + 0x07d3, 0x07e8, 0x07fd, 0x0812, 0x0836, 0x0845, 0x0860, 0x0872, + 0x087e, 0x089c, 0x08b8, 0x08d6, 0x08e8, 0x0906, 0x0915, 0x0933, + 0x0945, 0x095d, 0x0972, 0x0981, 0x099c, 0x09ae, 0x09ba, 0x09df, + 0x09f7, 0x0a06, 0x0a15, 0x0a4f, 0x0a80, 0x0aa8, 0x0ab7, 0x0ac6, + 0x0ae4, 0x0af9, 0x0b08, 0x0b14, 0x0b35, 0x0b4a, 0x0b56, 0x0b68, // Entry 80 - BF - 0x0b61, 0x0b82, 0x0b9d, 0x0bb5, 0x0bc7, 0x0bdf, 0x0bee, 0x0c12, - 0x0c2d, 0x0c48, 0x0c5a, 0x0c76, 0x0c85, 0x0c94, 0x0cac, 0x0cca, - 0x0cd9, 0x0ce2, 0x0cf4, 0x0d0c, 0x0d21, 0x0d39, 0x0d58, 0x0d76, - 0x0d8e, 0x0da6, 0x0db5, 0x0dcd, 0x0ddf, 0x0deb, 0x0e06, 0x0e21, - 0x0e36, 0x0e45, 0x0e5d, 0x0e6f, 0x0e81, 0x0e99, 0x0eab, 0x0ec6, - 0x0ed5, 0x0ef3, 0x0f02, 0x0f29, 0x0f41, 0x0f53, 0x0f65, 0x0f6e, - 0x0f86, 0x0f98, 0x0fad, 0x0fbf, 0x0fcb, 0x0fe0, 0x0fef, 0x1007, - 0x1016, 0x1016, 0x1031, 0x103d, 0x104c, 0x1067, 0x1067, 0x107c, + 0x0b7a, 0x0b9b, 0x0bb6, 0x0bce, 0x0be0, 0x0bf8, 0x0c07, 0x0c2b, + 0x0c46, 0x0c61, 0x0c73, 0x0c8f, 0x0c9e, 0x0cad, 0x0cc5, 0x0ce3, + 0x0cf2, 0x0cfb, 0x0d0d, 0x0d25, 0x0d3a, 0x0d52, 0x0d71, 0x0d8f, + 0x0da7, 0x0dbf, 0x0dce, 0x0de6, 0x0df8, 0x0e04, 0x0e1f, 0x0e3a, + 0x0e49, 0x0e58, 0x0e70, 0x0e7c, 0x0e8e, 0x0ea6, 0x0eb8, 0x0ed3, + 0x0ee2, 0x0f00, 0x0f0f, 0x0f36, 0x0f4e, 0x0f60, 0x0f72, 0x0f7b, + 0x0f93, 0x0fa5, 0x0fba, 0x0fcc, 0x0fd8, 0x0fed, 0x0ffc, 0x1014, + 0x1023, 0x1023, 0x103e, 0x104a, 0x1053, 0x106e, 0x106e, 0x1083, // Entry C0 - FF - 0x107c, 0x10a7, 0x10c9, 0x10d8, 0x10f0, 0x1102, 0x1102, 0x1114, - 0x1114, 0x1126, 0x1126, 0x1126, 0x112f, 0x112f, 0x114d, 0x114d, - 0x1159, 0x1168, 0x1180, 0x1180, 0x1186, 0x1195, 0x1195, 0x11a4, - 0x11ad, 0x11b9, 0x11b9, 0x11c5, 0x11da, 0x11da, 0x11fc, 0x1217, - 0x1226, 0x1232, 0x1232, 0x123b, 0x1250, 0x1250, 0x1250, 0x125f, - 0x125f, 0x126b, 0x1280, 0x129b, 0x12b3, 0x12bf, 0x12ce, 0x12e0, - 0x12ec, 0x12fe, 0x130a, 0x1322, 0x133a, 0x1343, 0x1352, 0x135e, - 0x1370, 0x137c, 0x139e, 0x13bc, 0x13d4, 0x13ec, 0x1404, 0x142c, + 0x1083, 0x10ae, 0x10d0, 0x10df, 0x10ee, 0x1100, 0x1100, 0x1112, + 0x1112, 0x1112, 0x1124, 0x1124, 0x1124, 0x112d, 0x112d, 0x114b, + 0x114b, 0x115a, 0x1169, 0x1181, 0x1181, 0x1187, 0x1196, 0x1196, + 0x11a5, 0x11ae, 0x11ba, 0x11ba, 0x11c6, 0x11db, 0x11db, 0x11fd, + 0x1218, 0x1227, 0x1233, 0x1233, 0x123c, 0x1251, 0x1251, 0x1251, + 0x1260, 0x1260, 0x126c, 0x1281, 0x129c, 0x12b4, 0x12c0, 0x12cf, + 0x12e1, 0x12ed, 0x12ff, 0x130b, 0x1323, 0x133b, 0x1344, 0x1353, + 0x1368, 0x137a, 0x1386, 0x13a8, 0x13c6, 0x13de, 0x13f6, 0x1405, // Entry 100 - 13F - 0x144a, 0x144a, 0x147b, 0x1496, 0x14a8, 0x14ba, 0x14c3, 0x14d5, - 0x14e7, 0x14ff, 0x150b, 0x151d, 0x152f, 0x1551, 0x1551, 0x1560, - 0x1582, 0x159e, 0x15ad, 0x15bc, 0x15c8, 0x15d7, 0x15d7, 0x1608, - 0x161d, 0x1638, 0x1663, 0x1663, 0x1675, 0x1675, 0x167e, 0x169c, - 0x169c, 0x16a5, 0x16a5, 0x16cd, 0x16ec, 0x16ec, 0x171d, 0x174e, - 0x176f, 0x1775, 0x1787, 0x1787, 0x1790, 0x179c, 0x179c, 0x17a8, - 0x17bd, 0x17bd, 0x17e9, 0x1818, 0x1818, 0x182a, 0x1845, 0x185d, - 0x186c, 0x1892, 0x18b7, 0x18b7, 0x18b7, 0x18c3, 0x18e2, 0x18eb, + 0x142d, 0x144b, 0x144b, 0x147c, 0x14b7, 0x14d2, 0x14e4, 0x14f6, + 0x14ff, 0x1511, 0x1523, 0x153b, 0x1547, 0x1559, 0x156b, 0x158d, + 0x158d, 0x159c, 0x15be, 0x15da, 0x15e9, 0x15f8, 0x1604, 0x1613, + 0x1613, 0x1644, 0x1659, 0x1674, 0x169f, 0x169f, 0x16b1, 0x16b1, + 0x16ba, 0x16d8, 0x16d8, 0x16e1, 0x16e1, 0x1709, 0x1728, 0x1728, + 0x1759, 0x178a, 0x17ab, 0x17b1, 0x17c3, 0x17df, 0x17e8, 0x17f4, + 0x17f4, 0x1800, 0x1821, 0x1821, 0x184d, 0x186d, 0x186d, 0x187f, + 0x189a, 0x18b2, 0x18c1, 0x18ec, 0x1911, 0x1911, 0x1911, 0x191d, // Entry 140 - 17F - 0x18eb, 0x1900, 0x1900, 0x191e, 0x193c, 0x1948, 0x196d, 0x196d, - 0x1976, 0x1982, 0x1997, 0x19a6, 0x19be, 0x19be, 0x19be, 0x19d3, - 0x19e2, 0x19ee, 0x1a16, 0x1a3b, 0x1a3b, 0x1a5a, 0x1a66, 0x1a75, - 0x1a81, 0x1a8a, 0x1a96, 0x1aae, 0x1ac0, 0x1ad2, 0x1aed, 0x1b11, - 0x1b11, 0x1b1d, 0x1b1d, 0x1b29, 0x1b47, 0x1b63, 0x1b63, 0x1b63, - 0x1b72, 0x1b8a, 0x1b9f, 0x1bcd, 0x1be2, 0x1bf7, 0x1c0c, 0x1c28, - 0x1c28, 0x1c28, 0x1c3d, 0x1c4f, 0x1c5e, 0x1c6d, 0x1c8b, 0x1c9d, - 0x1caf, 0x1cc1, 0x1cd0, 0x1ce2, 0x1ceb, 0x1d03, 0x1d03, 0x1d03, + 0x1938, 0x1941, 0x1963, 0x1978, 0x1978, 0x1996, 0x19b4, 0x19c0, + 0x19e5, 0x1a0a, 0x1a13, 0x1a1f, 0x1a34, 0x1a43, 0x1a5b, 0x1a5b, + 0x1a5b, 0x1a70, 0x1a7f, 0x1a8b, 0x1ab3, 0x1ad8, 0x1ad8, 0x1af7, + 0x1b03, 0x1b12, 0x1b1e, 0x1b27, 0x1b33, 0x1b4b, 0x1b5d, 0x1b6f, + 0x1b8a, 0x1bae, 0x1bae, 0x1bba, 0x1bba, 0x1bc6, 0x1be4, 0x1c00, + 0x1c00, 0x1c00, 0x1c0c, 0x1c24, 0x1c3f, 0x1c6d, 0x1c82, 0x1c97, + 0x1cac, 0x1cc8, 0x1cc8, 0x1cc8, 0x1cdd, 0x1cef, 0x1cfe, 0x1d0d, + 0x1d25, 0x1d37, 0x1d49, 0x1d5b, 0x1d6a, 0x1d7c, 0x1d85, 0x1d9d, // Entry 180 - 1BF - 0x1d03, 0x1d15, 0x1d15, 0x1d27, 0x1d33, 0x1d52, 0x1d52, 0x1d6b, - 0x1d83, 0x1d8f, 0x1d9b, 0x1da7, 0x1db6, 0x1db6, 0x1db6, 0x1dcb, - 0x1dd4, 0x1de3, 0x1df5, 0x1e04, 0x1e1c, 0x1e2b, 0x1e34, 0x1e43, - 0x1e55, 0x1e64, 0x1e70, 0x1e85, 0x1ea7, 0x1ecc, 0x1ede, 0x1ef6, - 0x1f11, 0x1f1d, 0x1f38, 0x1f4a, 0x1f5c, 0x1f5c, 0x1f77, 0x1f8c, - 0x1fa4, 0x1fbc, 0x1fce, 0x1fce, 0x1fda, 0x1fec, 0x2007, 0x2007, - 0x202e, 0x2037, 0x204a, 0x205c, 0x206e, 0x2083, 0x2083, 0x209b, - 0x20ad, 0x20b9, 0x20d8, 0x20d8, 0x20e4, 0x2109, 0x2118, 0x2149, + 0x1d9d, 0x1d9d, 0x1d9d, 0x1daf, 0x1daf, 0x1dc1, 0x1dcd, 0x1dec, + 0x1dec, 0x1e05, 0x1e1d, 0x1e29, 0x1e35, 0x1e41, 0x1e50, 0x1e50, + 0x1e50, 0x1e65, 0x1e6e, 0x1e7d, 0x1e8f, 0x1e9e, 0x1eb6, 0x1ec5, + 0x1ece, 0x1edd, 0x1eef, 0x1efe, 0x1f0a, 0x1f1f, 0x1f41, 0x1f66, + 0x1f78, 0x1f90, 0x1fab, 0x1fbd, 0x1fd8, 0x1fea, 0x1ffc, 0x1ffc, + 0x2017, 0x202c, 0x2044, 0x205c, 0x206e, 0x206e, 0x207a, 0x208c, + 0x20a7, 0x20cd, 0x20f4, 0x20fd, 0x2110, 0x2122, 0x2134, 0x2149, + 0x2149, 0x2161, 0x2173, 0x217f, 0x219e, 0x219e, 0x21aa, 0x21cf, // Entry 1C0 - 1FF - 0x2164, 0x217c, 0x218e, 0x2197, 0x21a6, 0x21d7, 0x21f2, 0x2207, - 0x2219, 0x223a, 0x224c, 0x224c, 0x224c, 0x224c, 0x2277, 0x2277, - 0x228f, 0x228f, 0x228f, 0x22a4, 0x22a4, 0x22bf, 0x22d7, 0x22d7, - 0x22f2, 0x2307, 0x2325, 0x2325, 0x2325, 0x2334, 0x2343, 0x2343, - 0x2343, 0x2343, 0x235e, 0x236a, 0x237c, 0x2385, 0x23bf, 0x23d1, - 0x23e0, 0x23f5, 0x23f5, 0x2407, 0x2413, 0x242b, 0x2443, 0x2443, - 0x2471, 0x2480, 0x2489, 0x2489, 0x249b, 0x24cc, 0x24f1, 0x24f1, - 0x2512, 0x251b, 0x2534, 0x2546, 0x2546, 0x2546, 0x2565, 0x257b, + 0x21de, 0x220f, 0x222a, 0x2242, 0x2254, 0x225d, 0x226c, 0x229d, + 0x22b8, 0x22cd, 0x22df, 0x2303, 0x2315, 0x2315, 0x2346, 0x2346, + 0x2346, 0x2365, 0x2365, 0x237d, 0x237d, 0x237d, 0x2392, 0x23a7, + 0x23cc, 0x23e4, 0x23e4, 0x23ff, 0x2414, 0x2432, 0x2432, 0x2432, + 0x2441, 0x2453, 0x2453, 0x2453, 0x2453, 0x246e, 0x247a, 0x248c, + 0x2495, 0x24cf, 0x24e1, 0x24f0, 0x2505, 0x2505, 0x2517, 0x2523, + 0x253b, 0x2553, 0x2553, 0x2581, 0x2590, 0x2599, 0x2599, 0x25ab, + 0x25dc, 0x25f5, 0x25f5, 0x2616, 0x261f, 0x263e, 0x2650, 0x2650, // Entry 200 - 23F - 0x2597, 0x25bc, 0x25d1, 0x25e9, 0x260e, 0x261a, 0x2626, 0x2626, - 0x2635, 0x2641, 0x2659, 0x2671, 0x26a5, 0x26bd, 0x26bd, 0x26bd, - 0x26cc, 0x26d8, 0x26ea, 0x26ff, 0x2711, 0x271d, 0x2735, 0x2735, - 0x274d, 0x276e, 0x276e, 0x2780, 0x27a2, 0x27be, 0x27be, 0x27d3, - 0x27d3, 0x27e8, 0x27e8, 0x27fa, 0x280c, 0x2824, 0x283c, 0x2880, - 0x289e, 0x28bc, 0x28d4, 0x28e6, 0x28ec, 0x28ec, 0x28ec, 0x28ec, - 0x28ec, 0x2904, 0x2904, 0x2916, 0x2925, 0x2931, 0x2943, 0x294f, - 0x296a, 0x296a, 0x297c, 0x297c, 0x2988, 0x2994, 0x29ac, 0x29c4, + 0x2650, 0x266f, 0x2685, 0x26a1, 0x26c6, 0x26db, 0x26f3, 0x2718, + 0x2724, 0x2730, 0x2730, 0x273f, 0x274b, 0x2763, 0x277b, 0x27af, + 0x27c7, 0x27c7, 0x27c7, 0x27d6, 0x27e2, 0x27f4, 0x2809, 0x281b, + 0x2827, 0x283f, 0x283f, 0x2857, 0x2878, 0x2878, 0x288a, 0x28ac, + 0x28c8, 0x28c8, 0x28dd, 0x28dd, 0x28f2, 0x28f2, 0x2904, 0x2916, + 0x292e, 0x2946, 0x298a, 0x29a8, 0x29c6, 0x29de, 0x29f0, 0x29f6, + 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x2a0e, 0x2a0e, 0x2a1d, 0x2a2c, + 0x2a41, 0x2a53, 0x2a5f, 0x2a74, 0x2a8d, 0x2a9f, 0x2a9f, 0x2aab, // Entry 240 - 27F - 0x29cd, 0x29cd, 0x29e8, 0x2a06, 0x2a2d, 0x2a2d, 0x2a39, 0x2a80, - 0x2a8c, 0x2ae1, 0x2aed, 0x2b37, 0x2b37, 0x2b62, 0x2b88, 0x2bc5, - 0x2bf3, 0x2c2a, 0x2c5e, 0x2cab, 0x2cdf, 0x2d16, 0x2d16, 0x2d41, - 0x2d69, 0x2d82, 0x2d97, 0x2dd4, 0x2e0e, 0x2e29, 0x2e57, 0x2e7f, -} // Size: 1240 bytes - -var mnLangStr string = "" + // Size: 3152 bytes - "абхазафрикаканамхарарабассамазербайжанбашкирбеларусьболгарбамбарабенгалт" + - "өвдбретонбосникаталанкорсикчехуэлсданигерманжонхаэвэгреканглиэсперантои" + - "спаниэстонибаскперсфинляндфижифарерфранцбаруун фризынирландшотланд келт" + - "галикгуаранигужаратиманксхаусаеврейхиндихорватгаитиунгарарменинтерлингв" + - "оиндонезинэгдмэл хэлигбошичуан еиисландиталиинуктитутяпонявагүржкикуюүх" + - "асагкалалисуткамбожканнадасолонгоскашмиркүрдкорныкиргизлатинлюксембургг" + - "андалингалалаослитвалуба-катангалатвималагасимаоримакедонмалайламмонгол" + - "маратималаймалтибирмхойд ндебелебалбаголланднорвегийн нинорскнорвегийн " + - "букмолфранцын окситаноромоорияпанжабпольшпаштопортугалкечуароманшрундир" + - "умынороскинярвандасанскритсиндхихойд самисангосинхаласловаксловеншонасо" + - "малиалбанисербсунданшведсвахилитамилтэлүгүтажиктайтигринатуркментонгату" + - "рктатаруйгарукрайнурдуузбеквьетнамволофхосаиддишёрубахятадзулуагеммапүч" + - "иасубембабенабодочигачирокисорани күрдтайтазармаловер-сорбидуалажола-фо" + - "ниэмбуфилиппингагузшвейцари германгузыхавайдээд сорбингомбамачамэкабиле" + - "камбамакондекабүвердианукойра чиникаленжинкоми-пермякконканишамбалабафи" + - "алангилакоталуолуяамасаймеруморисенмакува-митометамохаукмундангнамакваз" + - "ионконуернянколекичеромборвасамбүрүсангүсенакёраборо сенитачелхитөмнөд " + - "самилюле самиинари самисколт самитэсотасавактөв атласын тамазайттодорхо" + - "йгүй хэлвайвунжосогатамазитхэл зүйн агуулга байхгүйстандарт арабавстри " + - "германшвейцари дээр германавстрали англиканад англибританийн англиамери" + - "кийн англилатин америкийн испаниевропын испанимексикийн испаниканад фра" + - "нцшвейцари францфламандпортугал (бразил)европын португалмолдавконго сва" + - "хилихялбаршуулсан хятадуламжлалт хятад" - -var mnLangIdx = []uint16{ // 610 elements + 0x2ab7, 0x2acf, 0x2ae7, 0x2af0, 0x2af0, 0x2b0b, 0x2b29, 0x2b50, + 0x2b50, 0x2b5c, 0x2bbe, 0x2bca, 0x2c1f, 0x2c2b, 0x2c75, 0x2c75, + 0x2ca0, 0x2cc6, 0x2d03, 0x2d31, 0x2d68, 0x2d9c, 0x2de9, 0x2e1d, + 0x2e54, 0x2e54, 0x2e7f, 0x2ea7, 0x2ec0, 0x2ed5, 0x2f12, 0x2f4c, + 0x2f67, 0x2f95, 0x2fbd, 0x2ff1, 0x301f, +} // Size: 1250 bytes + +const mnLangStr string = "" + // Size: 5582 bytes + "афарабхазафрикаканамхарарагонарабассамавар хэлаймараазербайжанбашкирбела" + + "русьболгарбисламбамбарабенгалтөвдбретонбосникаталанчеченьчаморро хэлкор" + + "сикчехсүмийн славян хэлчувашуэльсданигермандивехи хэлжонхаэвэгреканглиэ" + + "сперантоиспаниэстонибаскперсфулафинляндфижифарерфранцбаруун фризынирлан" + + "дшотланд келтгаликгуаранигужаратиманксхаусаеврейхиндихорватгаитийн крео" + + "лунгарарменхерероинтерлингвоиндонезинэгдмэл хэлигбосычуань иидоисландит" + + "алиинуктитутяпонявагүржкикуюүкуаньямахасагкалалисуткамбожканнадасолонго" + + "сканури хэлкашмиркүрдкоми хэлкорныкыргызлатинлюксембурггандалимбург хэл" + + "лингалалаослитвалуба-катангалатвималагасимаршаллын хэлмаоримакедонмалай" + + "ламмонголмаратималаймалтибирмнаурухойд ндебелебалбандонгаголланднорвеги" + + "йн нинорскнорвегийн букмолөмнөд ндебеленавахонянжафранцын окситаноромоо" + + "рияоссетийнпанжабпольшпаштопортугалькечуароманшрундирумынороскинярванда" + + "санскритсардинысиндхихойд самисангосинхаласловаксловенисамоагийншонасом" + + "алиалбанисербсватисесотосунданшведсвахилитамилтэлүгүтажиктайтигринатурк" + + "менцванатонгатуркцонгататартаитынуйгарукраинурдуузбеквендавьетнамволапю" + + "куоллунволофхосаиддишёрубахятадзулуачин хэладангмэадигэагемайнуалютөмнө" + + "д алтайангикмапүчиарапагоасуастури хэлавадхибали хэлбасаа хэлбембабенаб" + + "ожпурибинисиксикабодобуги хэлблин хэлсебуано хэлчигачуук хэлмари хэлчок" + + "тау хэлчирокичэеннсорани күрдсеселва креолын франц хэлдакотадаргва хэлт" + + "айтадогриб хэлзармаловер-сорбидуалажола-фонидазага хэлэмбуэфикэкажукэво" + + "ндофилиппинфонфриулийнгагагузгийзгилбертийнгоронталошвейцари германгузы" + + "гвичинхавайхилигайныхмонгдээд сорбихупаибанибибиоилокоингушложбан хэлнг" + + "омбамачамэкабилекачин хэлжжу хэлкамбакабардин хэлтяпмакондекабүвердиану" + + "корокаси хэлкойра чиникако хэлкаленжинкимбунду хэлкоми-пермякконканикпе" + + "ллекарачай-балкаркарель хэлкурукшамбалабафиакёльш хэлкумукладинлангилез" + + "ги хэллакоталозихойд лурилуба-лулуалундалуомизолуяамадури хэлмагахи хэл" + + "маймакасармасаймокшамендэ хэлмеруморисенмакува-митометамикмак хэлминанг" + + "кабауманипуримохаукмосси хэлмунданголон хэлкрийк хэлмеранди хэлэрзямаза" + + "ндеранинеаполитан хэлнаманевариниас хэлниуи хэлквазионгиембүүнногаи хэл" + + "нкохойд сотонуернянколепангасинпампангапапьяментопалаугийннигерийн пидж" + + "ин хэлпруссийнкичерапануираротонгийнромбоароманырвасандавэсахасамбүрүса" + + "нталингамбайсангүсицилийншотландуудсенакёраборо сенитачелхитшаньөмнөд с" + + "амилюле самиинари самисколт самисонинкесранан тонгосахосукумакомори хэл" + + "сирийнтимнтэсотетумтигрклингон хэлток писинтарокотумбулатувалутасавакту" + + "ватөв атласын тамазайтудмуртумбундурутвайвунжоуолсэруоллайттаварайхалим" + + "аг хэлсогаянгбенембакантон хэлтамазитзунихэл зүйн агуулгагүйзазастандар" + + "т арабавстри германшвейцари дээр германавстрали англиканад англибритани" + + "йн англиамерикийн англилатин америкийн испаниевропын испанимексикийн ис" + + "паниканад францшвейцари францбага саксонфламандпортугаль (бразил)европы" + + "н португальмолдавхорватын сербконго свахилихялбаршуулсан хятадуламжлалт" + + " хятад" + +var mnLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x000a, 0x0014, 0x001c, 0x0026, 0x0026, - 0x002e, 0x0038, 0x0038, 0x0038, 0x004c, 0x0058, 0x0068, 0x0074, - 0x0074, 0x0082, 0x008e, 0x0096, 0x00a2, 0x00ac, 0x00ba, 0x00ba, - 0x00ba, 0x00c6, 0x00c6, 0x00cc, 0x00cc, 0x00cc, 0x00d4, 0x00dc, - 0x00e8, 0x00e8, 0x00f2, 0x00f8, 0x0100, 0x010a, 0x011c, 0x0128, - 0x0134, 0x013c, 0x0144, 0x0144, 0x0152, 0x015a, 0x0164, 0x016e, - 0x0187, 0x0193, 0x01aa, 0x01b4, 0x01c2, 0x01d2, 0x01dc, 0x01e6, - 0x01f0, 0x01fa, 0x01fa, 0x0206, 0x0210, 0x021a, 0x0224, 0x0224, + 0x0000, 0x0008, 0x0012, 0x0012, 0x001c, 0x0024, 0x002e, 0x003a, + 0x0042, 0x004c, 0x005b, 0x0067, 0x007b, 0x0087, 0x0097, 0x00a3, + 0x00af, 0x00bd, 0x00c9, 0x00d1, 0x00dd, 0x00e7, 0x00f5, 0x0101, + 0x0116, 0x0122, 0x0122, 0x0128, 0x0148, 0x0152, 0x015c, 0x0164, + 0x0170, 0x0183, 0x018d, 0x0193, 0x019b, 0x01a5, 0x01b7, 0x01c3, + 0x01cf, 0x01d7, 0x01df, 0x01e7, 0x01f5, 0x01fd, 0x0207, 0x0211, + 0x022a, 0x0236, 0x024d, 0x0257, 0x0265, 0x0275, 0x027f, 0x0289, + 0x0293, 0x029d, 0x029d, 0x02a9, 0x02c2, 0x02cc, 0x02d6, 0x02e2, // Entry 40 - 7F - 0x023a, 0x024a, 0x025f, 0x0267, 0x0278, 0x0278, 0x0278, 0x0284, - 0x028e, 0x02a0, 0x02a8, 0x02ae, 0x02b6, 0x02b6, 0x02c2, 0x02c2, - 0x02cc, 0x02de, 0x02ea, 0x02f8, 0x0308, 0x0308, 0x0314, 0x031c, - 0x031c, 0x0326, 0x0332, 0x033c, 0x0350, 0x035a, 0x035a, 0x0368, - 0x0370, 0x037a, 0x0391, 0x039b, 0x03ab, 0x03ab, 0x03b5, 0x03c3, - 0x03d3, 0x03df, 0x03eb, 0x03f5, 0x03ff, 0x0407, 0x0407, 0x041e, - 0x0428, 0x0428, 0x0436, 0x0457, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0493, 0x0493, 0x049d, 0x04a5, 0x04a5, 0x04b1, 0x04b1, 0x04bb, + 0x02f8, 0x0308, 0x031d, 0x0325, 0x0336, 0x0336, 0x033c, 0x0348, + 0x0352, 0x0364, 0x036c, 0x0372, 0x037a, 0x037a, 0x0386, 0x0396, + 0x03a0, 0x03b2, 0x03be, 0x03cc, 0x03dc, 0x03ef, 0x03fb, 0x0403, + 0x0412, 0x041c, 0x0428, 0x0432, 0x0446, 0x0450, 0x0465, 0x0473, + 0x047b, 0x0485, 0x049c, 0x04a6, 0x04b6, 0x04cf, 0x04d9, 0x04e7, + 0x04f7, 0x0503, 0x050f, 0x0519, 0x0523, 0x052b, 0x0535, 0x054c, + 0x0556, 0x0562, 0x0570, 0x0591, 0x05b0, 0x05c9, 0x05d5, 0x05df, + 0x05fc, 0x05fc, 0x0606, 0x060e, 0x061e, 0x062a, 0x062a, 0x0634, // Entry 80 - BF - 0x04c5, 0x04d5, 0x04df, 0x04eb, 0x04f5, 0x04ff, 0x0507, 0x051b, - 0x052b, 0x052b, 0x0537, 0x0548, 0x0552, 0x0560, 0x056c, 0x0578, - 0x0578, 0x0580, 0x058c, 0x0598, 0x05a0, 0x05a0, 0x05a0, 0x05ac, - 0x05b4, 0x05c2, 0x05cc, 0x05d8, 0x05e2, 0x05e8, 0x05f6, 0x0604, - 0x0604, 0x060e, 0x0616, 0x0616, 0x0620, 0x0620, 0x062a, 0x0636, - 0x063e, 0x0648, 0x0648, 0x0656, 0x0656, 0x0656, 0x0660, 0x0668, - 0x0672, 0x067c, 0x067c, 0x0686, 0x068e, 0x068e, 0x068e, 0x068e, - 0x068e, 0x068e, 0x068e, 0x0696, 0x0696, 0x0696, 0x0696, 0x0696, + 0x063e, 0x0650, 0x065a, 0x0666, 0x0670, 0x067a, 0x0682, 0x0696, + 0x06a6, 0x06b4, 0x06c0, 0x06d1, 0x06db, 0x06e9, 0x06f5, 0x0703, + 0x0715, 0x071d, 0x0729, 0x0735, 0x073d, 0x0747, 0x0753, 0x075f, + 0x0767, 0x0775, 0x077f, 0x078b, 0x0795, 0x079b, 0x07a9, 0x07b7, + 0x07c1, 0x07cb, 0x07d3, 0x07dd, 0x07e7, 0x07f3, 0x07fd, 0x0809, + 0x0811, 0x081b, 0x0825, 0x0833, 0x0841, 0x084d, 0x0857, 0x085f, + 0x0869, 0x0873, 0x0873, 0x087d, 0x0885, 0x0894, 0x0894, 0x08a2, + 0x08ac, 0x08ac, 0x08ac, 0x08b4, 0x08bc, 0x08bc, 0x08bc, 0x08c4, // Entry C0 - FF - 0x0696, 0x0696, 0x0696, 0x0696, 0x0696, 0x06a2, 0x06a2, 0x06a2, - 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a8, 0x06a8, 0x06a8, 0x06a8, - 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, - 0x06a8, 0x06b2, 0x06b2, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, - 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, - 0x06ba, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, - 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06ca, 0x06ca, 0x06ca, - 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d6, 0x06d6, 0x06eb, + 0x08c4, 0x08d9, 0x08d9, 0x08e3, 0x08e3, 0x08ef, 0x08ef, 0x08fd, + 0x08fd, 0x08fd, 0x08fd, 0x08fd, 0x08fd, 0x0903, 0x0903, 0x0916, + 0x0916, 0x0922, 0x0922, 0x0931, 0x0931, 0x0942, 0x0942, 0x0942, + 0x0942, 0x0942, 0x094c, 0x094c, 0x0954, 0x0954, 0x0954, 0x0954, + 0x0962, 0x0962, 0x096a, 0x096a, 0x096a, 0x0978, 0x0978, 0x0978, + 0x0978, 0x0978, 0x0980, 0x0980, 0x0980, 0x098f, 0x098f, 0x099e, + 0x099e, 0x099e, 0x099e, 0x099e, 0x099e, 0x09b3, 0x09bb, 0x09bb, + 0x09bb, 0x09ca, 0x09d9, 0x09d9, 0x09ec, 0x09ec, 0x09f8, 0x0a02, // Entry 100 - 13F - 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06f5, 0x06f5, - 0x06f5, 0x06f5, 0x06f5, 0x06ff, 0x06ff, 0x0714, 0x0714, 0x071e, - 0x071e, 0x072f, 0x072f, 0x072f, 0x0737, 0x0737, 0x0737, 0x0737, - 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0747, - 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, - 0x0747, 0x0747, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, - 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, - 0x0751, 0x0751, 0x076e, 0x076e, 0x076e, 0x0776, 0x0776, 0x0776, + 0x0a17, 0x0a17, 0x0a17, 0x0a17, 0x0a46, 0x0a46, 0x0a52, 0x0a65, + 0x0a6f, 0x0a6f, 0x0a6f, 0x0a82, 0x0a82, 0x0a8c, 0x0a8c, 0x0aa1, + 0x0aa1, 0x0aab, 0x0aab, 0x0abc, 0x0abc, 0x0acf, 0x0ad7, 0x0adf, + 0x0adf, 0x0adf, 0x0aeb, 0x0aeb, 0x0aeb, 0x0aeb, 0x0af7, 0x0af7, + 0x0af7, 0x0b07, 0x0b07, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, + 0x0b0d, 0x0b0d, 0x0b1d, 0x0b21, 0x0b2b, 0x0b2b, 0x0b2b, 0x0b2b, + 0x0b2b, 0x0b33, 0x0b47, 0x0b47, 0x0b47, 0x0b47, 0x0b47, 0x0b47, + 0x0b59, 0x0b59, 0x0b59, 0x0b59, 0x0b76, 0x0b76, 0x0b76, 0x0b7e, // Entry 140 - 17F - 0x0776, 0x0780, 0x0780, 0x0780, 0x0780, 0x0780, 0x0793, 0x0793, - 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, - 0x079f, 0x07ab, 0x07ab, 0x07ab, 0x07ab, 0x07ab, 0x07b7, 0x07b7, - 0x07b7, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07cf, 0x07e7, - 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07fa, 0x07fa, 0x07fa, - 0x07fa, 0x080a, 0x080a, 0x081f, 0x082d, 0x082d, 0x082d, 0x082d, - 0x082d, 0x082d, 0x082d, 0x082d, 0x083b, 0x0845, 0x0845, 0x0845, - 0x0845, 0x0845, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f, + 0x0b8a, 0x0b8a, 0x0b8a, 0x0b94, 0x0b94, 0x0ba6, 0x0ba6, 0x0bb0, + 0x0bc3, 0x0bc3, 0x0bcb, 0x0bd3, 0x0bdf, 0x0be9, 0x0bf3, 0x0bf3, + 0x0bf3, 0x0c06, 0x0c12, 0x0c1e, 0x0c1e, 0x0c1e, 0x0c1e, 0x0c1e, + 0x0c2a, 0x0c3b, 0x0c48, 0x0c52, 0x0c52, 0x0c69, 0x0c69, 0x0c6f, + 0x0c7d, 0x0c95, 0x0c95, 0x0c9d, 0x0c9d, 0x0cac, 0x0cac, 0x0cbf, + 0x0cbf, 0x0cbf, 0x0cce, 0x0cde, 0x0cf5, 0x0d0a, 0x0d18, 0x0d18, + 0x0d24, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d52, 0x0d5c, 0x0d6a, 0x0d74, + 0x0d85, 0x0d8f, 0x0d8f, 0x0d99, 0x0da3, 0x0da3, 0x0da3, 0x0db4, // Entry 180 - 1BF - 0x084f, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, - 0x085b, 0x085b, 0x0861, 0x0861, 0x0869, 0x0869, 0x0869, 0x0869, - 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0873, 0x0873, 0x0873, - 0x0873, 0x0873, 0x087b, 0x0889, 0x0889, 0x089e, 0x08a6, 0x08a6, - 0x08a6, 0x08a6, 0x08a6, 0x08b2, 0x08b2, 0x08b2, 0x08c0, 0x08c0, - 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, - 0x08c0, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4, - 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08da, 0x08da, 0x08e2, 0x08e2, + 0x0db4, 0x0db4, 0x0db4, 0x0dc0, 0x0dc0, 0x0dc0, 0x0dc8, 0x0dd9, + 0x0dd9, 0x0dec, 0x0dec, 0x0df6, 0x0dfc, 0x0e04, 0x0e0c, 0x0e0c, + 0x0e0c, 0x0e1f, 0x0e1f, 0x0e32, 0x0e38, 0x0e46, 0x0e46, 0x0e50, + 0x0e50, 0x0e5a, 0x0e5a, 0x0e6b, 0x0e73, 0x0e81, 0x0e81, 0x0e96, + 0x0e9e, 0x0eb1, 0x0ec7, 0x0ec7, 0x0ed7, 0x0ee3, 0x0ef4, 0x0ef4, + 0x0f02, 0x0f11, 0x0f22, 0x0f37, 0x0f37, 0x0f37, 0x0f37, 0x0f3f, + 0x0f55, 0x0f55, 0x0f70, 0x0f78, 0x0f78, 0x0f84, 0x0f93, 0x0fa2, + 0x0fa2, 0x0fae, 0x0fc0, 0x0fd1, 0x0fd1, 0x0fd1, 0x0fd7, 0x0fe8, // Entry 1C0 - 1FF - 0x08e2, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, - 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, - 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f8, 0x08f8, - 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x0902, 0x0902, 0x0902, - 0x0902, 0x0902, 0x0902, 0x0908, 0x0908, 0x0908, 0x0908, 0x0916, - 0x0916, 0x0916, 0x0916, 0x0916, 0x0920, 0x0920, 0x0920, 0x0920, - 0x0920, 0x0920, 0x0928, 0x0928, 0x0928, 0x0941, 0x0941, 0x0941, - 0x0951, 0x0951, 0x0951, 0x0951, 0x0951, 0x0951, 0x0964, 0x0975, + 0x0ff0, 0x0ff0, 0x0ff0, 0x0ffe, 0x0ffe, 0x0ffe, 0x0ffe, 0x0ffe, + 0x100e, 0x100e, 0x101e, 0x1032, 0x1044, 0x1044, 0x1068, 0x1068, + 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1068, 0x1078, + 0x1078, 0x1080, 0x1080, 0x1080, 0x108e, 0x10a4, 0x10a4, 0x10a4, + 0x10ae, 0x10ae, 0x10ae, 0x10ae, 0x10ae, 0x10bc, 0x10c2, 0x10d0, + 0x10d8, 0x10d8, 0x10e6, 0x10e6, 0x10f4, 0x10f4, 0x1102, 0x110c, + 0x111c, 0x1130, 0x1130, 0x1130, 0x1130, 0x1138, 0x1138, 0x1138, + 0x1151, 0x1151, 0x1151, 0x1161, 0x1169, 0x1169, 0x1169, 0x1169, // Entry 200 - 23F - 0x0988, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, - 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, - 0x099b, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, - 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, - 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09a3, 0x09b1, 0x09b1, 0x09d7, - 0x09d7, 0x09d7, 0x09d7, 0x09f4, 0x09fa, 0x09fa, 0x09fa, 0x09fa, - 0x09fa, 0x09fa, 0x09fa, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, - 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a0c, 0x0a0c, 0x0a0c, 0x0a0c, + 0x1169, 0x117c, 0x118d, 0x11a0, 0x11b3, 0x11c1, 0x11c1, 0x11d8, + 0x11d8, 0x11e0, 0x11e0, 0x11ec, 0x11ec, 0x11ec, 0x11ff, 0x11ff, + 0x120b, 0x120b, 0x120b, 0x1213, 0x121b, 0x121b, 0x1225, 0x122d, + 0x122d, 0x122d, 0x122d, 0x1242, 0x1242, 0x1242, 0x1242, 0x1242, + 0x1253, 0x1253, 0x125f, 0x125f, 0x125f, 0x125f, 0x126d, 0x1279, + 0x1287, 0x128f, 0x12b5, 0x12c1, 0x12c1, 0x12cf, 0x12d5, 0x12db, + 0x12db, 0x12db, 0x12db, 0x12db, 0x12db, 0x12db, 0x12e5, 0x12f1, + 0x1303, 0x130d, 0x130d, 0x130d, 0x130d, 0x1322, 0x1322, 0x132a, // Entry 240 - 27F - 0x0a0c, 0x0a0c, 0x0a0c, 0x0a0c, 0x0a0c, 0x0a0c, 0x0a0c, 0x0a1a, - 0x0a1a, 0x0a47, 0x0a47, 0x0a60, 0x0a60, 0x0a79, 0x0a9f, 0x0aba, - 0x0acf, 0x0aec, 0x0b09, 0x0b33, 0x0b4e, 0x0b6d, 0x0b6d, 0x0b82, - 0x0b9d, 0x0b9d, 0x0bab, 0x0bca, 0x0be9, 0x0bf5, 0x0bf5, 0x0c0e, - 0x0c33, 0x0c50, -} // Size: 1244 bytes - -var mrLangStr string = "" + // Size: 11013 bytes + 0x132a, 0x132a, 0x1336, 0x133e, 0x133e, 0x1351, 0x1351, 0x1351, + 0x1351, 0x1351, 0x135f, 0x1367, 0x138b, 0x1393, 0x13ac, 0x13ac, + 0x13c5, 0x13eb, 0x1406, 0x141b, 0x1438, 0x1455, 0x147f, 0x149a, + 0x14b9, 0x14b9, 0x14ce, 0x14e9, 0x14fe, 0x150c, 0x152d, 0x154e, + 0x155a, 0x1573, 0x158c, 0x15b1, 0x15ce, +} // Size: 1250 bytes + +const mrLangStr string = "" + // Size: 11500 bytes "अफारअबखेजियनअवेस्तनअफ्रिकान्सअकानअम्हारिकअर्गोनीजअरबीआसामीअ\u200dॅव्हेरि" + "कऐमराअझरबैजानीबष्किरबेलारुशियनबल्गेरियनबिस्लामाबाम्बाराबंगालीतिबेटीब्र" + "ेतॉनबोस्नियनकातालानचेचेनकॅमोरोकॉर्सिकनक्रीझेकचर्च स्लाव्हिकचूवाशवेल्शड" + @@ -18409,44 +21722,46 @@ var mrLangStr string = "" + // Size: 11013 bytes "ियनसर्बियनस्वातीसेसोथोसुंदानीजस्वीडिशस्वाहिलीतामिळतेलगूताजिकथाईतिग्रिन" + "्यातुर्कमेनत्स्वानाटोंगनतुर्कीसोंगातातरताहितीयनउइगुरयुक्रेनियनउर्दूउझ्" + "बेकव्हेंदाव्हिएतनामीओलापुकवालूनवोलोफखोसायिद्दिशयोरुबाझुआंगचीनीझुलूअचीन" + - "ीअकोलीअडांग्मेअडिघेअफ्रिहिलीअघेमऐनूअक्कादिआनअलेउतदक्षिणात्य अल्ताईपुरा" + - "तन इंग्रजीअंगिकाअ\u200dॅरेमाइकमापुचीअराफाओअरावकअसुअस्तुरियनअवधीबलुचीबा" + - "लिनीसबसाबेजाबेम्बाबेनापश्चिमी बालोचीभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोडोबु" + - "रियातबगिनीसब्लिनकॅड्डोकॅरिबअत्समसिबुआनोकिगाचिब्चाछगाताईचूकीसेमारीचिनूक" + - " जारगॉनचोक्तौशिपेव्यानचेरोकीशेयेन्नमध्य कुर्दिशकॉप्टिकक्राइमीन तुर्कीकाश" + - "ुबियनदाकोतादार्गवातायताडेलॅवेयरस्लाव्हडोग्रिबदिन्काझार्माडोगरीलोअर सोर" + - "्बियनदुआलामिडल डचजोला-फोंयीड्युलाएम्बूएफिकप्राचीन इजिप्शियनएकाजुकएलामा" + - "इटमिडल इंग्रजीइवोन्डोफँगफिलिपिनोफॉनमिडल फ्रेंचपुरातन फ्रेंचउत्तरी फ्रि" + - "शियनपौर्वात्य फ्रिशियनफ्रियुलियानGaगागाउझगायोबायागीझजिल्बरटीजमिडल हाय " + - "जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन ग्रीकस्विस जर्म" + - "नगसीग्विच’इनहैडाहवाईयनहिलीगेनॉनहिट्टितेमाँगअप्पर सॉर्बियनहूपाइबानइलोको" + - "इंगुशलोज्बानगोम्बामशामेजुदेओ-फारसीजुदेओ-अरबीकारा-कल्पककबाइलकाचिनज्जुका" + - "म्बाकावीकबार्डियनत्यापमाकोन्देकाबवर्दियानुकोरोखासीखोतानीसकोयरा चीनीकाल" + - "ेंजीनकिम्बन्दुकोमी-परम्याककोंकणीकोसरियनक्पेल्लेकराचय-बाल्करकरेलियनकुरू" + - "खशांबालाबाफियाकुमीककुतेनाईलादीनोलांगीलाह्न्डालाम्बालेझ्घीयनलाकोटामोंगो" + - "लोझिउत्तरी ल्युरीलुबा-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युइयामादुरीसमगहीमै" + - "थिलीमकस्सरमन्डिन्गोमसाईमोक्षमंडारमेन्डेमेरूमोरिस्येनमिडल आयरिशमाखुव्हा" + - "-मीट्टोमीटामिकमॅकमिनांग्काबाउमान्चुमणिपुरीमोहॉकमोस्सीमुंडांगएकविध भाषाक्" + - "रीकमिरांडिज्मारवाडीएर्झ्यामाझानदेरानीनेपोलिटाननामालो जर्मननेवारीनियासन" + - "ियुआनक्वासिओनोगाईपुरातन नॉर्सएन्कोउत्तरी सोथोनुएरअभिजात नेवारीन्यामवेझ" + - "ीन्यानकोलन्योरोन्झिमाओसेजओटोमान तुर्किशपंगासीनानपहलवीपाम्पान्गापापियाम" + - "ेन्टोपालाउआनपुरातन फारसीफोनिशियनपोह्नपियनपुरातन प्रोव्हेन्सलकीशेइराजस्" + - "थानीरापानुईरारोटोंगनरोम्बोरोमानीअरोमानियनरव्हासँडवेयाकूतसामरिटान अरॅमि" + - "कसांबुरूसासाकसंतालीसांगुसिसिलियनस्कॉट्सदक्षिणी कुर्दिशसेनासेल्कपकोयराब" + - "ोरो सेन्नीपुरातन आयरिशताशेल्हिटशॅनसिदामोदक्षिणात्य सामील्युल सामीइनारी" + - " सामीस्कोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनको" + - "मोरियनअभिजात सिरियाकसिरियाकटिम्नेतेसोतेरेनोतेतुमटाइग्रेतिवटोकेलाऊक्लिं" + - "गोनलिंगिततामाशेकन्यासा टोन्गाटोक पिसिनसिम्शियनतुम्बुकाटुवालुतासाव्हाकट" + - "ुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयुगॅरिटिकउम्बुन्डुरूटवाईवॉटिकवुंजोवला" + - "मोवारेवाशोवार्लपिरीकाल्मिकसोगायाओयापीसकँटोनीजझेपोटेकब्लिसिम्बॉल्सझेनान" + - "्गाप्रमाण मोरोक्कन तॅमॅझायटझुनीभाषावैज्ञानिक सामग्री नाहीझाझाआधुनिक प्" + - "रमाणित अरबीऑस्ट्रियन जर्मनस्विस हाय जर्मनऑस्ट्रेलियन इंग्रजीकॅनडियन इं" + - "ग्रजीब्रिटिश इंग्रजीअमेरिकन इंग्रजीलॅटिन अमेरिकन स्पॅनिशयुरोपियन स्पॅन" + - "िशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस फ्रेंचलो सॅक्सनफ्लेमिशब्राझिलियन" + - " पोर्तुगीजयुरोपियन पोर्तुगीजमोल्डाव्हियनसर्बो-क्रोएशियनकाँगो स्वाहिलीसरल" + - "ीकृत चीनीपारंपारिक चीनी" - -var mrLangIdx = []uint16{ // 610 elements + "ीअकोलीअडांग्मेअडिघेअफ्रिहिलीअघेमऐनूअक्केडियनअलेउतदक्षिणात्य अल्ताईपुरा" + + "तन इंग्रजीअंगिकाअ\u200dॅरेमाइकमापुचीआरापाहोआरावाकअसुअस्तुरियनअवधीबलुची" + + "बालिनीजबसाबेजाबेम्बाबेनापश्चिमी बालोचीभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोडो" + + "बुरियातबगिनीसब्लिनकॅड्डोकॅरिबअत्समसिबुआनोकिगाचिब्चाछागाताइचूकीसेमारीचि" + + "नूक जारगॉनचोक्तौशिपेव्यानचेरोकीशेयेन्नमध्य कुर्दिशकॉप्टिकक्राइमीन तुर्" + + "कीसेसेल्वा क्रिओल फ्रेंचकाशुबियनडाकोटादार्गवातायताडेलावेयरस्लाव्हडोग्र" + + "िबडिन्काझार्माडोगरीलोअर सोर्बियनदुआलामिडल डचजोला-फोंयीड्युलादाझागाएम्ब" + + "ूएफिकप्राचीन इजिप्शियनएकाजुकएलामाइटमिडल इंग्रजीइवोन्डोफँगफिलिपिनोफॉनमि" + + "डल फ्रेंचपुरातन फ्रेंचउत्तरी फ्रिशियनपौर्वात्य फ्रिशियनफ्रियुलियानगागा" + + "गाउझगॅन चिनीगायोबायागीझजिल्बरटीजमिडल हाय जर्मनपुरातन हाइ जर्मनगाँडीगोर" + + "ोन्तालोगॉथिकग्रेबोप्राचीन ग्रीकस्विस जर्मनगसीग्विच’इनहैडाहाक्का चिनीहव" + + "ाईयनहिलीगेनॉनहिट्टितेमाँगअप्पर सॉर्बियनशियांग चिनीहूपाइबानइबिबिओइलोकोइ" + + "ंगुशलोज्बानगोम्बामशामेजुदेओ-फारसीजुदेओ-अरबीकारा-कल्पककबाइलकाचिनज्जुकाम" + + "्बाकावीकबार्डियनत्यापमाकोन्देकाबवर्दियानुकोरोखासीखोतानीसकोयरा चीनीकाको" + + "कालेंजीनकिम्बन्दुकोमी-परम्याककोंकणीकोसरियनक्पेल्लेकराचय-बाल्करकरेलियनक" + + "ुरूखशांबालाबाफियाकोलोग्नियनकुमीककुतेनाईलादीनोलांगीलाह्न्डालाम्बालेझ्घी" + + "यनलाकोटामोंगोलोझिउत्तरी ल्युरीलुबा-लुलुआलुइसेनोलुन्डाल्युओमिझोल्युइयाम" + + "ादुरीसमगहीमैथिलीमकस्सरमन्डिन्गोमसाईमोक्षमंडारमेन्डेमेरूमोरिस्येनमिडल आ" + + "यरिशमाखुव्हा-मीट्टोमीटामिकमॅकमिनांग्काबाउमान्चुमणिपुरीमोहॉकमोस्सीमुंडा" + + "ंगएकविध भाषाक्रीकमिरांडिज्मारवाडीएर्झ्यामाझानदेरानीमिन नान चिनीनेपोलिट" + + "ाननामालो जर्मननेवारीनियासनियुआनक्वासिओजिएम्बूननोगाईपुरातन नॉर्सएन्कोउत" + + "्तरी सोथोनुएरअभिजात नेवारीन्यामवेझीन्यानकोलन्योरोन्झिमाओसेजओटोमान तुर्" + + "किशपंगासीनानपहलवीपाम्पान्गापापियामेन्टोपालाउआननायजिरिअन पिजिनपुरातन फा" + + "रसीफोनिशियनपोह्नपियनप्रुशियनपुरातन प्रोव्हेन्सलकीशेइराजस्थानीरापानुईरा" + + "रोटोंगनरोम्बोरोमानीअरोमानियनरव्हासँडवेसाखासामरिटान अरॅमिकसांबुरूसासाकस" + + "ंतालीगाम्बेसांगुसिसिलियनस्कॉट्सदक्षिणी कुर्दिशसेनासेल्कपकोयराबोरो सेन्" + + "नीपुरातन आयरिशताशेल्हिटशॅनसिदामोदक्षिणात्य सामील्युल सामीइनारी सामीस्क" + + "ोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसाहोसुकुमासुसुसुमेरियनकोमो" + + "रियनअभिजात सिरियाकसिरियाकटिम्नेतेसोतेरेनोतेतुमटाइग्रेतिवटोकेलाऊक्लिंगो" + + "नलिंगिततामाशेकन्यासा टोन्गाटोक पिसिनतारोकोसिम्शियनतुम्बुकाटुवालुतासाव्" + + "हाकटुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयुगॅरिटिकउम्बुन्डुरूटवाईवॉटिकवुंज" + + "ोवालसेरवोलायतावारेवाशोवार्लपिरीव्हू चिनीकाल्मिकसोगायाओयापीसयानगबेनयेमब" + + "ाकँटोनीजझेपोटेकब्लिसिम्बॉल्सझेनान्गाप्रमाण मोरोक्कन तॅमॅझायटझुनीभाषावै" + + "ज्ञानिक सामग्री नाहीझाझाआधुनिक प्रमाणित अरबीऑस्ट्रियन जर्मनस्विस हाय ज" + + "र्मनऑस्ट्रेलियन इंग्रजीकॅनडियन इंग्रजीब्रिटिश इंग्रजीअमेरिकन इंग्रजीलॅ" + + "टिन अमेरिकन स्पॅनिशयुरोपियन स्पॅनिशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस" + + " फ्रेंचलो सॅक्सनफ्लेमिशब्राझिलियन पोर्तुगीजयुरोपियन पोर्तुगीजमोल्डाव्हिय" + + "नसर्बो-क्रोएशियनकाँगो स्वाहिलीसरलीकृत चीनीपारंपारिक चीनी" + +var mrLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0024, 0x0039, 0x0057, 0x0063, 0x007b, 0x0093, 0x009f, 0x00ae, 0x00cc, 0x00d8, 0x00f3, 0x0105, 0x0123, 0x013e, @@ -18475,383 +21790,416 @@ var mrLangIdx = []uint16{ // 610 elements 0x0e60, 0x0e72, 0x0e81, 0x0e8d, 0x0e99, 0x0ea8, 0x0eb7, 0x0ecf, 0x0ede, 0x0ede, 0x0ef9, 0x0f05, 0x0f0e, 0x0f29, 0x0f29, 0x0f38, // Entry C0 - FF - 0x0f38, 0x0f69, 0x0f91, 0x0fa3, 0x0fbe, 0x0fd0, 0x0fd0, 0x0fe2, - 0x0fe2, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ffa, 0x0ffa, 0x1015, 0x1015, - 0x1021, 0x1030, 0x1045, 0x1045, 0x104e, 0x104e, 0x104e, 0x104e, - 0x105a, 0x106c, 0x106c, 0x1078, 0x1078, 0x1078, 0x10a0, 0x10b5, - 0x10c4, 0x10d0, 0x10d0, 0x10d0, 0x10e8, 0x10e8, 0x10e8, 0x10f4, - 0x10f4, 0x1100, 0x1100, 0x1115, 0x1127, 0x1127, 0x1136, 0x1136, - 0x1148, 0x1157, 0x1157, 0x1166, 0x117b, 0x1187, 0x1199, 0x11ab, - 0x11bd, 0x11c9, 0x11eb, 0x11fd, 0x1218, 0x122a, 0x123f, 0x1261, + 0x0f38, 0x0f69, 0x0f91, 0x0fa3, 0x0fbe, 0x0fd0, 0x0fd0, 0x0fe5, + 0x0fe5, 0x0fe5, 0x0ff7, 0x0ff7, 0x0ff7, 0x1000, 0x1000, 0x101b, + 0x101b, 0x1027, 0x1036, 0x104b, 0x104b, 0x1054, 0x1054, 0x1054, + 0x1054, 0x1060, 0x1072, 0x1072, 0x107e, 0x107e, 0x107e, 0x10a6, + 0x10bb, 0x10ca, 0x10d6, 0x10d6, 0x10d6, 0x10ee, 0x10ee, 0x10ee, + 0x10fa, 0x10fa, 0x1106, 0x1106, 0x111b, 0x112d, 0x112d, 0x113c, + 0x113c, 0x114e, 0x115d, 0x115d, 0x116c, 0x1181, 0x118d, 0x119f, + 0x11b4, 0x11c6, 0x11d2, 0x11f4, 0x1206, 0x1221, 0x1233, 0x1248, // Entry 100 - 13F - 0x1276, 0x1276, 0x12a1, 0x12b9, 0x12cb, 0x12e0, 0x12ef, 0x1307, - 0x131c, 0x1331, 0x1343, 0x1355, 0x1364, 0x1389, 0x1389, 0x1398, - 0x13ab, 0x13c7, 0x13d9, 0x13d9, 0x13e8, 0x13f4, 0x13f4, 0x1425, - 0x1437, 0x144c, 0x146e, 0x146e, 0x1483, 0x1483, 0x148c, 0x14a4, - 0x14a4, 0x14ad, 0x14ad, 0x14cc, 0x14f1, 0x14f1, 0x151c, 0x1550, - 0x1571, 0x1573, 0x1585, 0x1585, 0x1591, 0x159d, 0x159d, 0x15a6, - 0x15c1, 0x15c1, 0x15e7, 0x1613, 0x1613, 0x1622, 0x1640, 0x164f, - 0x1661, 0x1686, 0x16a5, 0x16a5, 0x16a5, 0x16ae, 0x16c6, 0x16d2, + 0x126a, 0x127f, 0x127f, 0x12aa, 0x12e8, 0x1300, 0x1312, 0x1327, + 0x1336, 0x134e, 0x1363, 0x1378, 0x138a, 0x139c, 0x13ab, 0x13d0, + 0x13d0, 0x13df, 0x13f2, 0x140e, 0x1420, 0x1432, 0x1441, 0x144d, + 0x144d, 0x147e, 0x1490, 0x14a5, 0x14c7, 0x14c7, 0x14dc, 0x14dc, + 0x14e5, 0x14fd, 0x14fd, 0x1506, 0x1506, 0x1525, 0x154a, 0x154a, + 0x1575, 0x15a9, 0x15ca, 0x15d0, 0x15e2, 0x15f8, 0x1604, 0x1610, + 0x1610, 0x1619, 0x1634, 0x1634, 0x165a, 0x1686, 0x1686, 0x1695, + 0x16b3, 0x16c2, 0x16d4, 0x16f9, 0x1718, 0x1718, 0x1718, 0x1721, // Entry 140 - 17F - 0x16d2, 0x16e4, 0x16e4, 0x16ff, 0x1717, 0x1723, 0x174b, 0x174b, - 0x1757, 0x1763, 0x1763, 0x1772, 0x1781, 0x1781, 0x1781, 0x1796, - 0x17a8, 0x17b7, 0x17d6, 0x17f2, 0x17f2, 0x180e, 0x181d, 0x182c, - 0x1838, 0x184a, 0x1856, 0x1871, 0x1871, 0x1880, 0x1898, 0x18bc, - 0x18bc, 0x18c8, 0x18c8, 0x18d4, 0x18e9, 0x1905, 0x1905, 0x1905, - 0x1905, 0x191d, 0x1938, 0x195a, 0x196c, 0x1981, 0x1999, 0x19bb, - 0x19bb, 0x19bb, 0x19d0, 0x19df, 0x19f4, 0x1a06, 0x1a06, 0x1a15, - 0x1a2a, 0x1a3c, 0x1a4b, 0x1a63, 0x1a75, 0x1a8d, 0x1a8d, 0x1a8d, + 0x1739, 0x1745, 0x1764, 0x1776, 0x1776, 0x1791, 0x17a9, 0x17b5, + 0x17dd, 0x17fc, 0x1808, 0x1814, 0x1826, 0x1835, 0x1844, 0x1844, + 0x1844, 0x1859, 0x186b, 0x187a, 0x1899, 0x18b5, 0x18b5, 0x18d1, + 0x18e0, 0x18ef, 0x18fb, 0x190d, 0x1919, 0x1934, 0x1934, 0x1943, + 0x195b, 0x197f, 0x197f, 0x198b, 0x198b, 0x1997, 0x19ac, 0x19c8, + 0x19c8, 0x19c8, 0x19d4, 0x19ec, 0x1a07, 0x1a29, 0x1a3b, 0x1a50, + 0x1a68, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a9f, 0x1aae, 0x1ac3, 0x1ad5, + 0x1af3, 0x1b02, 0x1b17, 0x1b29, 0x1b38, 0x1b50, 0x1b62, 0x1b7a, // Entry 180 - 1BF - 0x1a8d, 0x1a9f, 0x1a9f, 0x1aae, 0x1aba, 0x1adf, 0x1adf, 0x1afb, - 0x1b10, 0x1b22, 0x1b31, 0x1b40, 0x1b55, 0x1b55, 0x1b55, 0x1b6a, - 0x1b6a, 0x1b76, 0x1b88, 0x1b9a, 0x1bb5, 0x1bc1, 0x1bc1, 0x1bd0, - 0x1bdf, 0x1bf1, 0x1bfd, 0x1c18, 0x1c34, 0x1c5f, 0x1c6b, 0x1c7d, - 0x1ca1, 0x1cb3, 0x1cc8, 0x1cd7, 0x1ce9, 0x1ce9, 0x1cfe, 0x1d1a, - 0x1d29, 0x1d44, 0x1d59, 0x1d59, 0x1d59, 0x1d6e, 0x1d8f, 0x1d8f, - 0x1daa, 0x1db6, 0x1dcc, 0x1dde, 0x1ded, 0x1dff, 0x1dff, 0x1e14, - 0x1e14, 0x1e23, 0x1e45, 0x1e45, 0x1e54, 0x1e73, 0x1e7f, 0x1ea4, + 0x1b7a, 0x1b7a, 0x1b7a, 0x1b8c, 0x1b8c, 0x1b9b, 0x1ba7, 0x1bcc, + 0x1bcc, 0x1be8, 0x1bfd, 0x1c0f, 0x1c1e, 0x1c2a, 0x1c3f, 0x1c3f, + 0x1c3f, 0x1c54, 0x1c54, 0x1c60, 0x1c72, 0x1c84, 0x1c9f, 0x1cab, + 0x1cab, 0x1cba, 0x1cc9, 0x1cdb, 0x1ce7, 0x1d02, 0x1d1e, 0x1d49, + 0x1d55, 0x1d67, 0x1d8b, 0x1d9d, 0x1db2, 0x1dc1, 0x1dd3, 0x1dd3, + 0x1de8, 0x1e04, 0x1e13, 0x1e2e, 0x1e43, 0x1e43, 0x1e43, 0x1e58, + 0x1e79, 0x1e99, 0x1eb4, 0x1ec0, 0x1ed6, 0x1ee8, 0x1ef7, 0x1f09, + 0x1f09, 0x1f1e, 0x1f36, 0x1f45, 0x1f67, 0x1f67, 0x1f76, 0x1f95, // Entry 1C0 - 1FF - 0x1ebf, 0x1ed7, 0x1ee9, 0x1efb, 0x1f07, 0x1f2f, 0x1f4a, 0x1f59, - 0x1f77, 0x1f9b, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fd2, 0x1fd2, - 0x1fea, 0x1fea, 0x1fea, 0x2005, 0x2005, 0x203c, 0x204b, 0x204b, - 0x2066, 0x207b, 0x2096, 0x2096, 0x2096, 0x20a8, 0x20ba, 0x20ba, - 0x20ba, 0x20ba, 0x20d5, 0x20e4, 0x20f3, 0x2102, 0x212d, 0x2142, - 0x2151, 0x2163, 0x2163, 0x2163, 0x2172, 0x218a, 0x219f, 0x219f, - 0x21ca, 0x21ca, 0x21d6, 0x21d6, 0x21e8, 0x2216, 0x2238, 0x2238, - 0x2253, 0x225c, 0x225c, 0x226e, 0x226e, 0x226e, 0x2299, 0x22b5, + 0x1fa1, 0x1fc6, 0x1fe1, 0x1ff9, 0x200b, 0x201d, 0x2029, 0x2051, + 0x206c, 0x207b, 0x2099, 0x20bd, 0x20d2, 0x20d2, 0x20fd, 0x20fd, + 0x20fd, 0x211f, 0x211f, 0x2137, 0x2137, 0x2137, 0x2152, 0x216a, + 0x21a1, 0x21b0, 0x21b0, 0x21cb, 0x21e0, 0x21fb, 0x21fb, 0x21fb, + 0x220d, 0x221f, 0x221f, 0x221f, 0x221f, 0x223a, 0x2249, 0x2258, + 0x2264, 0x228f, 0x22a4, 0x22b3, 0x22c5, 0x22c5, 0x22d7, 0x22e6, + 0x22fe, 0x2313, 0x2313, 0x233e, 0x233e, 0x234a, 0x234a, 0x235c, + 0x238a, 0x23ac, 0x23ac, 0x23c7, 0x23d0, 0x23d0, 0x23e2, 0x23e2, // Entry 200 - 23F - 0x22d1, 0x22f3, 0x230b, 0x2323, 0x234b, 0x235a, 0x235a, 0x235a, - 0x236c, 0x2378, 0x2390, 0x23a8, 0x23d0, 0x23e5, 0x23e5, 0x23e5, - 0x23f7, 0x2403, 0x2415, 0x2424, 0x2439, 0x2442, 0x2457, 0x2457, - 0x246f, 0x2481, 0x2481, 0x2496, 0x24bb, 0x24d4, 0x24d4, 0x24d4, - 0x24d4, 0x24ec, 0x24ec, 0x2504, 0x2516, 0x2531, 0x2549, 0x257e, - 0x2593, 0x25ae, 0x25c9, 0x25d2, 0x25db, 0x25db, 0x25db, 0x25db, - 0x25db, 0x25ea, 0x25ea, 0x25f9, 0x25f9, 0x2608, 0x2614, 0x2620, - 0x263b, 0x263b, 0x2650, 0x2650, 0x265c, 0x2665, 0x2674, 0x2674, + 0x23e2, 0x240d, 0x2429, 0x2445, 0x2467, 0x247f, 0x2497, 0x24bf, + 0x24ce, 0x24da, 0x24da, 0x24ec, 0x24f8, 0x2510, 0x2528, 0x2550, + 0x2565, 0x2565, 0x2565, 0x2577, 0x2583, 0x2595, 0x25a4, 0x25b9, + 0x25c2, 0x25d7, 0x25d7, 0x25ef, 0x2601, 0x2601, 0x2616, 0x263b, + 0x2654, 0x2654, 0x2666, 0x2666, 0x267e, 0x267e, 0x2696, 0x26a8, + 0x26c3, 0x26db, 0x2710, 0x2725, 0x2740, 0x275b, 0x2764, 0x276d, + 0x276d, 0x276d, 0x276d, 0x276d, 0x277c, 0x277c, 0x278b, 0x279d, + 0x27b2, 0x27be, 0x27ca, 0x27e5, 0x27fe, 0x2813, 0x2813, 0x281f, // Entry 240 - 27F - 0x2674, 0x2674, 0x2689, 0x269e, 0x26c5, 0x26c5, 0x26dd, 0x2721, - 0x272d, 0x2777, 0x2783, 0x27bb, 0x27bb, 0x27e6, 0x280f, 0x2846, - 0x2871, 0x289c, 0x28c7, 0x2902, 0x2930, 0x295e, 0x295e, 0x2986, - 0x29a8, 0x29c1, 0x29d6, 0x2a10, 0x2a44, 0x2a68, 0x2a93, 0x2abb, - 0x2add, 0x2b05, -} // Size: 1244 bytes - -var msLangStr string = "" + // Size: 2443 bytes - "AbkhaziaAvestanAfrikaansAkanAmharicArabAssamAvaricAymaraAzerbaijanBashki" + - "rBelarusBulgariaBambaraBenggalaTibetBretonBosniaCataloniaChechenCorsicaC" + - "zechSlavik GerejaChuvashWalesDenmarkJermanDivehiDzongkhaEweGreekInggeris" + - "EsperantoSepanyolEstoniaBasqueParsiFinlandFijiFaroePerancisFrisian Barat" + - "IrelandScots GaelicGaliciaGuaraniGujeratManxHausaIbraniHindiCroatiaHaiti" + - "HungaryArmeniaInterlinguaIndonesiaInterlingueIgboSichuan YiIcelandItaliI" + - "nuktitutJepunJawaGeorgiaKongoKikuyaKazakhstanKalaallisutKhmerKannadaKore" + - "aKashmirKurdishCornishKirghizLatinLuxembourgGandaLingalaLaosLithuaniaLub" + - "a-KatangaLatviaMalagasyMaoriMacedoniaMalayalamMongoliaMarathiBahasa Mela" + - "yuMaltaBurmaNdebele UtaraNepalBelandaNynorsk NorwayBokmål NorwayNyanjaOc" + - "citaniaOromoOriyaOssetePunjabiPolandPashtoPortugisQuechuaRomanshRundiRom" + - "aniaRusiaKinyarwandaSanskritSindhiSami UtaraSangoSinhalaSlovakSloveniaSa" + - "moaShonaSomaliAlbaniaSerbiaSwatiSotho SelatanSundaSwedenSwahiliTamilTelu" + - "guTajikThaiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkraine" + - "UrduUzbekistanVendaVietnamWolofXhosaYiddishYorubaCinaZuluAkoliAdygheArab" + - " TunisiaAghemAltai SelatanMapucheArab AlgeriaArab MaghribiArab MesirAsuB" + - "aluchiBasaaBamunGhomalaBejaBembaBenaBafutBalochi BaratKomBishnupriyaBrah" + - "uiBodoAkooseBuriatBuluMedumbaCayugaChigaMariCherokeeKurdi SoraniCopticTu" + - "rki KrimeaTaitaZarmaDogriLower SorbianDualaJola-FonyiDazagaEmbuEfikEwond" + - "oFilipinaGaGagauzGbayaZoroastrian DariGilakiGreek PurbaJerman Switzerlan" + - "dGusiiHawaiiUpper SorbianIbibioNgombaMachameKabyleKambaKanembuMakondeKab" + - "uverdianuKoyra ChiiniKhowarKakoKalenjinKomi-PermyakKonkaniShambalaBafiaC" + - "olognianLangiLahndaLakotaLoziLuri UtaraLuba-LuluaLuoMizoLuyiaMafaMasaiMa" + - "baMeruMorisyenMakhuwa-MeettoMeta’ManipuriMohawkMundangMyeneMazanderaniNa" + - "maJerman RendahKwasioNgiemboonN’koSotho UtaraNuerNyankoleKʼicheʼRomboRwa" + - "SamburuNgambaySanguKurdish SelatanSenecaSenaKoyraboro SenniTachelhitChad" + - "ian ArabSami SelatanLule SamiInari SamiSkolt SamiSahoComoriaTesoTetumKli" + - "ngonTalyshTok PisinTarokoTumbukaTasawaqTamazight Atlas TengahBahasa Tida" + - "k DiketahuiVaiVunjoWalserWarlpiriSogaYangbenYembaTamazight Maghribi Stan" + - "dardTiada kandungan linguistikZazaArab Standard ModenJerman AustriaJerma" + - "n Halus SwitzerlandInggeris AustraliaInggeris KanadaInggeris BritishIngg" + - "eris ASSepanyol Amerika LatinSepanyol EropahSepanyol MexicoPerancis Kana" + - "daPerancis SwitzerlandSaxon RendahFlemishPortugis BrazilPortugis EropahM" + - "oldaviaSerboCroatiaCongo SwahiliCina RingkasCina Tradisional" - -var msLangIdx = []uint16{ // 610 elements + 0x2828, 0x2837, 0x284c, 0x285b, 0x285b, 0x2870, 0x2885, 0x28ac, + 0x28ac, 0x28c4, 0x2908, 0x2914, 0x295e, 0x296a, 0x29a2, 0x29a2, + 0x29cd, 0x29f6, 0x2a2d, 0x2a58, 0x2a83, 0x2aae, 0x2ae9, 0x2b17, + 0x2b45, 0x2b45, 0x2b6d, 0x2b8f, 0x2ba8, 0x2bbd, 0x2bf7, 0x2c2b, + 0x2c4f, 0x2c7a, 0x2ca2, 0x2cc4, 0x2cec, +} // Size: 1250 bytes + +const msLangStr string = "" + // Size: 3266 bytes + "aaAbkhaziaAvestanAfrikaansAkanAmharicAragonArabAssamAvaricAymaraAzerbaij" + + "anBashkirBelarusBulgariaBislamaBambaraBenggalaTibetBretonBosniaCatalonia" + + "ChechenChamorroCorsicaCzechSlavik GerejaChuvashWalesDenmarkJermanDivehiD" + + "zongkhaEweGreekInggerisEsperantoSepanyolEstoniaBasqueParsiFulahFinlandFi" + + "jiFaroePerancisFrisian BaratIrelandScots GaelicGaliciaGuaraniGujeratManx" + + "HausaIbraniHindiCroatiaHaitiHungaryArmeniaHereroInterlinguaIndonesiaInte" + + "rlingueIgboSichuan YiIdoIcelandItaliInuktitutJepunJawaGeorgiaKongoKikuya" + + "KuanyamaKazakhstanKalaallisutKhmerKannadaKoreaKanuriKashmirKurdishKomiCo" + + "rnishKirghizLatinLuxembourgGandaLimburgishLingalaLaosLithuaniaLuba-Katan" + + "gaLatviaMalagasyMarshallMaoriMacedoniaMalayalamMongoliaMarathiBahasa Mel" + + "ayuMaltaBurmaNauruNdebele UtaraNepalNdongaBelandaNynorsk NorwayBokmål No" + + "rwayNdebele SelatanNavajoNyanjaOccitaniaOromoOriyaOssetePunjabiPolandPas" + + "htoPortugisQuechuaRomanshRundiRomaniaRusiaKinyarwandaSanskritSardiniaSin" + + "dhiSami UtaraSangoSinhalaSlovakSloveniaSamoaShonaSomaliAlbaniaSerbiaSwat" + + "iSotho SelatanSundaSwedenSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswan" + + "aTongaTurkiTsongaTatarTahitiUyghurUkraineUrduUzbekistanVendaVietnamVolap" + + "ükWalloonWolofXhosaYiddishYorubaCinaZuluAcehAkoliAdangmeAdygheArab Tuni" + + "siaAghemAinualeAltai SelatananpMapucheArapahoArab AlgeriaArab MaghribiAr" + + "ab MesirAsuAsturiaAwadhiBaluchiBaliBasaaBamunGhomalaBejaBembaBenaBafutBa" + + "lochi BaratBhojpuriBiniKomSiksikaBishnupriyaBrahuiBodoAkooseBuriatBugisB" + + "uluBlinMedumbaCayugaCebuanoChigaChukeseMariChoctawCherokeeCheyenneKurdi " + + "SoraniCopticTurki KrimeaPerancis Seselwa CreoleDakotaDargwaTaitaDogribZa" + + "rmaDogriSorbian RendahDualaJola-FonyiDazagaEmbuEfikEkajukEwondoFilipinaF" + + "onFriulianGaGagauzCina GanGbayaZoroastrian DariGeezKiribatiGilakiGoronta" + + "loGreek PurbaJerman SwitzerlandGusiiGwichʼinCina HakkaHawaiiHiligaynonHm" + + "ongSorbian AtasCina XiangHupaIbanIbibioIlokoIngushLojbanNgombaMachameKab" + + "yleKachinJjuKambaKabardianKanembuTyapMakondeKabuverdianuKoroKhasiKoyra C" + + "hiiniKhowarKakoKalenjinKimbunduKomi-PermyakKonkaniKpelleKarachay-BalkarK" + + "arelianKurukhShambalaBafiaColognianKumykLadinoLangiLahndaLezghianLakotaL" + + "oziLuri UtaraLuba-LuluaLundaLuoMizoLuyiaMaduraMafaMagahiMaithiliMakasarM" + + "asaiMabaMokshaMendeMeruMorisyenMakhuwa-MeettoMeta’MicmacMinangkabauManip" + + "uriMohawkMossiMundangPelbagai BahasaCreekMirandeseMyeneErzyaMazanderaniC" + + "ina Min NanNeapolitanNamaJerman RendahNewariNiasNiuKwasioNgiemboonNogaiN" + + "’koSotho UtaraNuerNyankolePangasinanPampangaPapiamentoPalauanNigerian " + + "PidginPrussianKʼicheʼRapanuiRarotongaRomboAromanianRwaSandaweSakhaSambur" + + "uSantaliNgambaySanguSiciliScotsKurdish SelatanSenecaSenaKoyraboro SenniT" + + "achelhitShanArab ChadianSami SelatanLule SamiInari SamiSkolt SamiSoninke" + + "Sranan TongoSahoSukumaComoriaSyriacTimneTesoTetumTigreKlingonTalyshTok P" + + "isinTarokoTumbukaTuvaluTasawaqTuvinianTamazight Atlas TengahUdmurtUmbund" + + "uRootVaiVunjoWalserWolayttaWarayWarlpiriCina WuKalmykSogaYangbenYembaKan" + + "tonisTamazight Maghribi StandardZuniTiada kandungan linguistikZazaArab S" + + "tandard ModenJerman AustriaJerman Halus SwitzerlandInggeris AustraliaIng" + + "geris KanadaInggeris BritishInggeris ASSepanyol Amerika LatinSepanyol Er" + + "opahSepanyol MexicoPerancis KanadaPerancis SwitzerlandSaxon RendahFlemis" + + "hPortugis BrazilPortugis EropahMoldaviaSerboCroatiaCongo SwahiliCina Rin" + + "gkasCina Tradisional" + +var msLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x000f, 0x0018, 0x001c, 0x0023, 0x0023, - 0x0027, 0x002c, 0x0032, 0x0038, 0x0042, 0x0049, 0x0050, 0x0058, - 0x0058, 0x005f, 0x0067, 0x006c, 0x0072, 0x0078, 0x0081, 0x0088, - 0x0088, 0x008f, 0x008f, 0x0094, 0x00a1, 0x00a8, 0x00ad, 0x00b4, - 0x00ba, 0x00c0, 0x00c8, 0x00cb, 0x00d0, 0x00d8, 0x00e1, 0x00e9, - 0x00f0, 0x00f6, 0x00fb, 0x00fb, 0x0102, 0x0106, 0x010b, 0x0113, - 0x0120, 0x0127, 0x0133, 0x013a, 0x0141, 0x0148, 0x014c, 0x0151, - 0x0157, 0x015c, 0x015c, 0x0163, 0x0168, 0x016f, 0x0176, 0x0176, + 0x0000, 0x0002, 0x000a, 0x0011, 0x001a, 0x001e, 0x0025, 0x002b, + 0x002f, 0x0034, 0x003a, 0x0040, 0x004a, 0x0051, 0x0058, 0x0060, + 0x0067, 0x006e, 0x0076, 0x007b, 0x0081, 0x0087, 0x0090, 0x0097, + 0x009f, 0x00a6, 0x00a6, 0x00ab, 0x00b8, 0x00bf, 0x00c4, 0x00cb, + 0x00d1, 0x00d7, 0x00df, 0x00e2, 0x00e7, 0x00ef, 0x00f8, 0x0100, + 0x0107, 0x010d, 0x0112, 0x0117, 0x011e, 0x0122, 0x0127, 0x012f, + 0x013c, 0x0143, 0x014f, 0x0156, 0x015d, 0x0164, 0x0168, 0x016d, + 0x0173, 0x0178, 0x0178, 0x017f, 0x0184, 0x018b, 0x0192, 0x0198, // Entry 40 - 7F - 0x0181, 0x018a, 0x0195, 0x0199, 0x01a3, 0x01a3, 0x01a3, 0x01aa, - 0x01af, 0x01b8, 0x01bd, 0x01c1, 0x01c8, 0x01cd, 0x01d3, 0x01d3, - 0x01dd, 0x01e8, 0x01ed, 0x01f4, 0x01f9, 0x01f9, 0x0200, 0x0207, - 0x0207, 0x020e, 0x0215, 0x021a, 0x0224, 0x0229, 0x0229, 0x0230, - 0x0234, 0x023d, 0x0249, 0x024f, 0x0257, 0x0257, 0x025c, 0x0265, - 0x026e, 0x0276, 0x027d, 0x028a, 0x028f, 0x0294, 0x0294, 0x02a1, - 0x02a6, 0x02a6, 0x02ad, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02cf, - 0x02d8, 0x02d8, 0x02dd, 0x02e2, 0x02e8, 0x02ef, 0x02ef, 0x02f5, + 0x01a3, 0x01ac, 0x01b7, 0x01bb, 0x01c5, 0x01c5, 0x01c8, 0x01cf, + 0x01d4, 0x01dd, 0x01e2, 0x01e6, 0x01ed, 0x01f2, 0x01f8, 0x0200, + 0x020a, 0x0215, 0x021a, 0x0221, 0x0226, 0x022c, 0x0233, 0x023a, + 0x023e, 0x0245, 0x024c, 0x0251, 0x025b, 0x0260, 0x026a, 0x0271, + 0x0275, 0x027e, 0x028a, 0x0290, 0x0298, 0x02a0, 0x02a5, 0x02ae, + 0x02b7, 0x02bf, 0x02c6, 0x02d3, 0x02d8, 0x02dd, 0x02e2, 0x02ef, + 0x02f4, 0x02fa, 0x0301, 0x030f, 0x031d, 0x032c, 0x0332, 0x0338, + 0x0341, 0x0341, 0x0346, 0x034b, 0x0351, 0x0358, 0x0358, 0x035e, // Entry 80 - BF - 0x02fb, 0x0303, 0x030a, 0x0311, 0x0316, 0x031d, 0x0322, 0x032d, - 0x0335, 0x0335, 0x033b, 0x0345, 0x034a, 0x0351, 0x0357, 0x035f, - 0x0364, 0x0369, 0x036f, 0x0376, 0x037c, 0x0381, 0x038e, 0x0393, - 0x0399, 0x03a0, 0x03a5, 0x03ab, 0x03b0, 0x03b4, 0x03bc, 0x03c3, - 0x03c9, 0x03ce, 0x03d3, 0x03d9, 0x03de, 0x03e4, 0x03ea, 0x03f1, - 0x03f5, 0x03ff, 0x0404, 0x040b, 0x040b, 0x040b, 0x0410, 0x0415, - 0x041c, 0x0422, 0x0422, 0x0426, 0x042a, 0x042a, 0x042f, 0x042f, - 0x0435, 0x0441, 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, + 0x0364, 0x036c, 0x0373, 0x037a, 0x037f, 0x0386, 0x038b, 0x0396, + 0x039e, 0x03a6, 0x03ac, 0x03b6, 0x03bb, 0x03c2, 0x03c8, 0x03d0, + 0x03d5, 0x03da, 0x03e0, 0x03e7, 0x03ed, 0x03f2, 0x03ff, 0x0404, + 0x040a, 0x0411, 0x0416, 0x041c, 0x0421, 0x0425, 0x042d, 0x0434, + 0x043a, 0x043f, 0x0444, 0x044a, 0x044f, 0x0455, 0x045b, 0x0462, + 0x0466, 0x0470, 0x0475, 0x047c, 0x0484, 0x048b, 0x0490, 0x0495, + 0x049c, 0x04a2, 0x04a2, 0x04a6, 0x04aa, 0x04ae, 0x04b3, 0x04ba, + 0x04c0, 0x04cc, 0x04cc, 0x04d1, 0x04d5, 0x04d5, 0x04d5, 0x04d8, // Entry C0 - FF - 0x0446, 0x0453, 0x0453, 0x0453, 0x0453, 0x045a, 0x045a, 0x045a, - 0x0466, 0x0466, 0x0473, 0x047d, 0x0480, 0x0480, 0x0480, 0x0480, - 0x0480, 0x0487, 0x0487, 0x0487, 0x048c, 0x0491, 0x0491, 0x0498, - 0x049c, 0x04a1, 0x04a1, 0x04a5, 0x04aa, 0x04aa, 0x04b7, 0x04b7, - 0x04b7, 0x04b7, 0x04b7, 0x04ba, 0x04ba, 0x04c5, 0x04c5, 0x04c5, - 0x04cb, 0x04cf, 0x04d5, 0x04db, 0x04db, 0x04df, 0x04df, 0x04e6, - 0x04e6, 0x04e6, 0x04ec, 0x04ec, 0x04ec, 0x04f1, 0x04f1, 0x04f1, - 0x04f1, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04fd, 0x04fd, 0x0509, + 0x04d8, 0x04e5, 0x04e5, 0x04e8, 0x04e8, 0x04ef, 0x04ef, 0x04f6, + 0x0502, 0x0502, 0x0502, 0x050f, 0x0519, 0x051c, 0x051c, 0x0523, + 0x0523, 0x0529, 0x0530, 0x0534, 0x0534, 0x0539, 0x053e, 0x053e, + 0x0545, 0x0549, 0x054e, 0x054e, 0x0552, 0x0557, 0x0557, 0x0564, + 0x056c, 0x056c, 0x0570, 0x0570, 0x0573, 0x057a, 0x0585, 0x0585, + 0x0585, 0x058b, 0x058f, 0x0595, 0x059b, 0x05a0, 0x05a4, 0x05a8, + 0x05af, 0x05af, 0x05af, 0x05b5, 0x05b5, 0x05bc, 0x05c1, 0x05c1, + 0x05c1, 0x05c8, 0x05cc, 0x05cc, 0x05d3, 0x05d3, 0x05db, 0x05e3, // Entry 100 - 13F - 0x050f, 0x050f, 0x051b, 0x051b, 0x051b, 0x051b, 0x0520, 0x0520, - 0x0520, 0x0520, 0x0520, 0x0525, 0x052a, 0x0537, 0x0537, 0x053c, - 0x053c, 0x0546, 0x0546, 0x054c, 0x0550, 0x0554, 0x0554, 0x0554, - 0x0554, 0x0554, 0x0554, 0x0554, 0x055a, 0x055a, 0x055a, 0x0562, - 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, - 0x0562, 0x0564, 0x056a, 0x056a, 0x056a, 0x056f, 0x057f, 0x057f, - 0x057f, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, - 0x0585, 0x0590, 0x05a2, 0x05a2, 0x05a2, 0x05a7, 0x05a7, 0x05a7, + 0x05ef, 0x05f5, 0x05f5, 0x0601, 0x0618, 0x0618, 0x061e, 0x0624, + 0x0629, 0x0629, 0x0629, 0x062f, 0x062f, 0x0634, 0x0639, 0x0647, + 0x0647, 0x064c, 0x064c, 0x0656, 0x0656, 0x065c, 0x0660, 0x0664, + 0x0664, 0x0664, 0x066a, 0x066a, 0x066a, 0x066a, 0x0670, 0x0670, + 0x0670, 0x0678, 0x0678, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, + 0x067b, 0x067b, 0x0683, 0x0685, 0x068b, 0x0693, 0x0693, 0x0698, + 0x06a8, 0x06ac, 0x06b4, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, + 0x06c3, 0x06c3, 0x06c3, 0x06ce, 0x06e0, 0x06e0, 0x06e0, 0x06e5, // Entry 140 - 17F - 0x05a7, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05ba, 0x05ba, - 0x05ba, 0x05ba, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, - 0x05c6, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05d3, 0x05d3, - 0x05d3, 0x05d8, 0x05d8, 0x05d8, 0x05df, 0x05df, 0x05e6, 0x05f2, - 0x05f2, 0x05f2, 0x05f2, 0x05f2, 0x05f2, 0x05fe, 0x0604, 0x0604, - 0x0608, 0x0610, 0x0610, 0x061c, 0x0623, 0x0623, 0x0623, 0x0623, - 0x0623, 0x0623, 0x0623, 0x0623, 0x062b, 0x0630, 0x0639, 0x0639, - 0x0639, 0x0639, 0x063e, 0x0644, 0x0644, 0x0644, 0x0644, 0x0644, + 0x06ee, 0x06ee, 0x06f8, 0x06fe, 0x06fe, 0x0708, 0x0708, 0x070d, + 0x0719, 0x0723, 0x0727, 0x072b, 0x0731, 0x0736, 0x073c, 0x073c, + 0x073c, 0x0742, 0x0748, 0x074f, 0x074f, 0x074f, 0x074f, 0x074f, + 0x0755, 0x075b, 0x075e, 0x0763, 0x0763, 0x076c, 0x0773, 0x0777, + 0x077e, 0x078a, 0x078a, 0x078e, 0x078e, 0x0793, 0x0793, 0x079f, + 0x07a5, 0x07a5, 0x07a9, 0x07b1, 0x07b9, 0x07c5, 0x07cc, 0x07cc, + 0x07d2, 0x07e1, 0x07e1, 0x07e1, 0x07e9, 0x07ef, 0x07f7, 0x07fc, + 0x0805, 0x080a, 0x080a, 0x0810, 0x0815, 0x081b, 0x081b, 0x0823, // Entry 180 - 1BF - 0x0644, 0x064a, 0x064a, 0x064a, 0x064e, 0x0658, 0x0658, 0x0662, - 0x0662, 0x0662, 0x0665, 0x0669, 0x066e, 0x066e, 0x066e, 0x066e, - 0x0672, 0x0672, 0x0672, 0x0672, 0x0672, 0x0677, 0x067b, 0x067b, - 0x067b, 0x067b, 0x067f, 0x0687, 0x0687, 0x0695, 0x069c, 0x069c, - 0x069c, 0x069c, 0x06a4, 0x06aa, 0x06aa, 0x06aa, 0x06b1, 0x06b1, - 0x06b1, 0x06b1, 0x06b1, 0x06b1, 0x06b6, 0x06b6, 0x06c1, 0x06c1, - 0x06c1, 0x06c5, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d8, - 0x06e1, 0x06e1, 0x06e1, 0x06e1, 0x06e7, 0x06f2, 0x06f6, 0x06f6, + 0x0823, 0x0823, 0x0823, 0x0829, 0x0829, 0x0829, 0x082d, 0x0837, + 0x0837, 0x0841, 0x0841, 0x0846, 0x0849, 0x084d, 0x0852, 0x0852, + 0x0852, 0x0858, 0x085c, 0x0862, 0x086a, 0x0871, 0x0871, 0x0876, + 0x087a, 0x0880, 0x0880, 0x0885, 0x0889, 0x0891, 0x0891, 0x089f, + 0x08a6, 0x08ac, 0x08b7, 0x08b7, 0x08bf, 0x08c5, 0x08ca, 0x08ca, + 0x08d1, 0x08e0, 0x08e5, 0x08ee, 0x08ee, 0x08ee, 0x08f3, 0x08f8, + 0x0903, 0x090f, 0x0919, 0x091d, 0x092a, 0x0930, 0x0934, 0x0937, + 0x0937, 0x093d, 0x0946, 0x094b, 0x094b, 0x094b, 0x0951, 0x095c, // Entry 1C0 - 1FF - 0x06f6, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, - 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, - 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x0707, 0x0707, - 0x0707, 0x0707, 0x0707, 0x0707, 0x0707, 0x070c, 0x070c, 0x070c, - 0x070c, 0x070c, 0x070c, 0x070f, 0x070f, 0x070f, 0x070f, 0x0716, - 0x0716, 0x0716, 0x0716, 0x071d, 0x0722, 0x0722, 0x0722, 0x0722, - 0x0731, 0x0737, 0x073b, 0x073b, 0x073b, 0x074a, 0x074a, 0x074a, - 0x0753, 0x0753, 0x075f, 0x075f, 0x075f, 0x075f, 0x076b, 0x0774, + 0x0960, 0x0960, 0x0960, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, + 0x0972, 0x0972, 0x097a, 0x0984, 0x098b, 0x098b, 0x099a, 0x099a, + 0x099a, 0x099a, 0x099a, 0x099a, 0x099a, 0x099a, 0x099a, 0x09a2, + 0x09a2, 0x09ab, 0x09ab, 0x09ab, 0x09b2, 0x09bb, 0x09bb, 0x09bb, + 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c9, 0x09cc, 0x09d3, + 0x09d8, 0x09d8, 0x09df, 0x09df, 0x09e6, 0x09e6, 0x09ed, 0x09f2, + 0x09f8, 0x09fd, 0x09fd, 0x0a0c, 0x0a12, 0x0a16, 0x0a16, 0x0a16, + 0x0a25, 0x0a25, 0x0a25, 0x0a2e, 0x0a32, 0x0a3e, 0x0a3e, 0x0a3e, // Entry 200 - 23F - 0x077e, 0x0788, 0x0788, 0x0788, 0x0788, 0x0788, 0x078c, 0x078c, - 0x078c, 0x078c, 0x078c, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, - 0x0793, 0x0797, 0x0797, 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, - 0x07a3, 0x07a3, 0x07a9, 0x07a9, 0x07a9, 0x07b2, 0x07b2, 0x07b8, - 0x07b8, 0x07b8, 0x07b8, 0x07bf, 0x07bf, 0x07c6, 0x07c6, 0x07dc, - 0x07dc, 0x07dc, 0x07dc, 0x07f2, 0x07f5, 0x07f5, 0x07f5, 0x07f5, - 0x07f5, 0x07f5, 0x07f5, 0x07fa, 0x0800, 0x0800, 0x0800, 0x0800, - 0x0808, 0x0808, 0x0808, 0x0808, 0x080c, 0x080c, 0x080c, 0x0813, + 0x0a3e, 0x0a4a, 0x0a53, 0x0a5d, 0x0a67, 0x0a6e, 0x0a6e, 0x0a7a, + 0x0a7a, 0x0a7e, 0x0a7e, 0x0a84, 0x0a84, 0x0a84, 0x0a8b, 0x0a8b, + 0x0a91, 0x0a91, 0x0a91, 0x0a96, 0x0a9a, 0x0a9a, 0x0a9f, 0x0aa4, + 0x0aa4, 0x0aa4, 0x0aa4, 0x0aab, 0x0aab, 0x0ab1, 0x0ab1, 0x0ab1, + 0x0aba, 0x0aba, 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac7, 0x0acd, + 0x0ad4, 0x0adc, 0x0af2, 0x0af8, 0x0af8, 0x0aff, 0x0b03, 0x0b06, + 0x0b06, 0x0b06, 0x0b06, 0x0b06, 0x0b06, 0x0b06, 0x0b0b, 0x0b11, + 0x0b19, 0x0b1e, 0x0b1e, 0x0b26, 0x0b2d, 0x0b33, 0x0b33, 0x0b37, // Entry 240 - 27F - 0x0818, 0x0818, 0x0818, 0x0818, 0x0818, 0x0818, 0x0818, 0x0833, - 0x0833, 0x084d, 0x0851, 0x0864, 0x0864, 0x0872, 0x088a, 0x089c, - 0x08ab, 0x08bb, 0x08c6, 0x08dc, 0x08eb, 0x08fa, 0x08fa, 0x0909, - 0x091d, 0x0929, 0x0930, 0x093f, 0x094e, 0x0956, 0x0962, 0x096f, - 0x097b, 0x098b, -} // Size: 1244 bytes - -var myLangStr string = "" + // Size: 6975 bytes - "အဘ်ခါဇီရန်အာဖရိကန်းစ်အာကိန်အန်ဟာရစျချအာရေဗီအက္စမီစ်အော်ဇောဘိုင်ဂျောနီဘက်" + - "ရှ်ကီအာဘီလာရုဘူဂေးရီးယားဘန်ဘာရာဘင်္ဂါလီတိဘက်ဘရီတွန်ဘော့စ်နီးယားကာတာလန်" + - "ချေချင်းခိုစီကန်ခရီးချက်ချူဗက်ရှ်ဝေလဒိန်းမတ်ဂျာမန်ဒွန်ကာဝီဂရိအင်္ဂလိပ်" + - "အက္စပရန္တိုစပိန်အက်စ်တိုးနီးရန်းဘစ်က္ကီပါရှန်ဖင်နစ်ရှ်ဖီဂျီဖာရိုအိစ်ပြ" + - "င်သစ်အနောက်ပိုင်း ဖရီစီရန်အိုင်းရစ်ဂါလာစီယံဂူအာရာနီဂူဂျာရသီမန်းဇ်ဟာဥစာ" + - "ဟီးဘရူးဟိန္ဒီခရိုအေရှန်ဟာအီတီအန်ဟန်ဂေရီအာမေနီအန်အင်ဒိုနီးရှားအစ္ဂဘိုစီ" + - "ချွမ် ရီအိုင်စ်လန္ဒီအီတလီအီနုခ်တီတုဂျပန်ဂျာဗားနီးစ်ဂျော်ဂျီယန်ကွန်ဂိုခ" + - "ီခူယူခါဇါခ်ခလာအ်လီဆပ်ခမာကန္နာဒါကိုးရီးယားကက်ရှ်မီရီကဒ်ခိုနီရှ်ခရူဂစ်လက" + - "်တင်လူဇင်ဘတ်က်ဂန်ဒီလင်ဂါလာလာအိုလစ္သူအာနီယံလူဘာ-ခါတန်ဂါလက္ဘီအံအာလာဂါစီမ" + - "ောင်းရီ (နယူးဇီလန်ကျွန်းရှိ ပင်ရင်းတိုင်းရင်းသားလူမျိုး)မာစီဒိုနီယံမလေ" + - "းရာလမ်မွန်ဂိုလီးယန်းမာရသီမလေးမောလ္တီစ်ဗမာတောင်ဒီဘီလီနီပါလီဒတ်ချ်နော်ဝေ" + - "း နီးနော်စ်ခ်ဘွတ်မော်လ်အိုရိုမိုအိုရီရာပန်ချာပီပါဠိပိုလန်ပါရှ်တိုပေါ်တ" + - "ူဂီခက်ချ်ဝါရောမရွန်ဒီရိုမေနီယားရုရှကင်ရာဝန်ဒါသင်္သကရိုက်စင်ဒီတောင်ဆာမိ" + - "ဆမ်ဂိုဆင်ဟာလစလိုဗက်စလိုဗေးနီးယမ်းရှိနာဆိုမာလီအယ်လ်ဘေးနီးယန်းဆားဗီးယန်း" + - "ဆွီဒင်ဆြာဟီလီတမီးလ်တီလီဂုတာဂျစ်ထိုင်းတီဂ်ရင်ရာတခ္မင်တွန်ဂါတာကစ်တတာဝီဂါ" + - "ယူကရိန်းအော်ဒူဦးဇ်ဘက်ဗီယက်နမ်ဝူလိုဖ်ဇိုစာရိုရုဘာတရုတ်ဇူလူအာဂ်ဟိန်းအင်္" + - "ဂလိပ်စာဟောင်းမာပုချီအာစုဘာလီဘာဆာဘိန်ဘာဘီနာအနောက်ပိုင်းဘဲလိုချီဗိုဒိုချ" + - "ီဂါချာရိုကီဆိုရာနီ ကူဒစ်ရှ်ဒါကိုတာတိုင်တာဒီလာဝဲဇာမာအောက်ဆိုဘီအမ်ဒူအလာအ" + - "လယ်ပိုင်း ဒတ်ချ်ဂျိုလာ-ဖွန်ရီအမ်ဘူရှေးဟောင်း အီဂျစ်အလယ်ပိုင်း အင်္ဂလိပ" + - "်ဖိလစ်ပီနိုအလယ်ပိုင်းပြင်သစ်ပြင်သစ်ဟောင်းမြောက်ပိုင်း ဖရီစီရန်အရှေ့ပို" + - "င်း ဖရီစီရန်ဂါဂါဇ်အလယ်ပိုင်းအမြင့်ဂျာမန်ရှေးဟောင်း ဂရိဆွစ် ဂျာမန်ဂူစီး" + - "ဟာဝေယံအပေါ်ဆိုဘီအမ်ဂွမ်ဘာမချာမီဂျူဒီယို-ပါရှန်ဂျူဒီယို-အာရေဗျခဘိုင်လ်က" + - "ချင်ခမ်ဘာမာခွန်ဒီခဘူဗာဒီအာနူခါစီခိုရာ ချီအီနီခါလိမ်ဂျင်ကိုမီ-ပါမြက်ကွန" + - "်ကနီရှန်ဘာလာဘာဖီအာလန်ဂီလာကိုတာမြောက်လူရီလူအိုလူရီအာမာဆိုင်မီရုမိုရှီစ်" + - "ယန်းအလယ်ပိုင်း အိုင်းရစ်မာခူဝါ-မီအီတိုမီတာမန်ချူးမိုဟော့ခ်မန်ဒန်းအကြိမ" + - "်များစွာ ဘာသာစကားများမာဇန်ဒါရန်နီနာမာအနိမ့် ဂျာမန်ဝါဆီအိုနကိုနူအာယန်ကိ" + - "ုလီပါရှန် အဟောင်းခီခ်အီချီရွမ်ဘိုဝါဆန်ဘူရုဆန်ဂုစကော့စီနာခိုရာဘိုရို ဆမ" + - "်နီအိုင်းရစ် ဟောင်းတာချယ်လ်ဟစ်ရှမ်းတောင်ပိုင်း ဆာမိလူလီ ဆာမိအီနာရီ ဆာမ" + - "ိခိုလ် ဆာမိတီဆိုတာဆာဝါခ်အလယ်အက်တ်လက်စ် တာမာဇိုက်မူလရင်းမြစ်ဗိုင်ဗန်ဂျိ" + - "ုဝေါလ်ပါရီဆိုဂါမိုရိုကန် တွမ်မဇိုတ် စံဘာသာစကား နှင့် ပတ်သက် သောအရာမရှိ" + - "အရေဗီ(ပုံမှန်)ဩစတြီးယ ဂျာမန်ဆွစ် အမြင့် ဂျာမန်ဩစတြေးလျှ အင်္ဂလိပ်ကနေဒါ" + - " အင်္ဂလိပ်ဗြိတိသျှ အင်္ဂလိပ်အမေရိကန် အင်္ဂလိပ်လက်တင်အမေရိက စပိန်စပိန်(ဥရ" + - "ောပ)ကနေဒါ ပြင်သစ်ဆွစ် ပြင်သစ်ဖလီမစ်ရှ်ဘရာဇီး ပေါ်တူဂီဥရောပ ပေါ်တူဂီခွန" + - "်ဂို စွာဟီလီရိုးရှင်းသော တရုတ်ရှေးရိုးစဉ်လာ တရုတ်" - -var myLangIdx = []uint16{ // 610 elements + 0x0b37, 0x0b37, 0x0b3e, 0x0b43, 0x0b43, 0x0b4b, 0x0b4b, 0x0b4b, + 0x0b4b, 0x0b4b, 0x0b66, 0x0b6a, 0x0b84, 0x0b88, 0x0b9b, 0x0b9b, + 0x0ba9, 0x0bc1, 0x0bd3, 0x0be2, 0x0bf2, 0x0bfd, 0x0c13, 0x0c22, + 0x0c31, 0x0c31, 0x0c40, 0x0c54, 0x0c60, 0x0c67, 0x0c76, 0x0c85, + 0x0c8d, 0x0c99, 0x0ca6, 0x0cb2, 0x0cc2, +} // Size: 1250 bytes + +const myLangStr string = "" + // Size: 10322 bytes + "အာဖာအဘ်ခါဇီရာတောင်အာဖရိကအာကန်အမ်ဟာရစ်ခ်အာရာဂွန်အာရဗီအာသံအာဗာရစ်ခ်အိုင်မာ" + + "ရအဇာဘိုင်ဂျန်ဘက်ရှ်ကာဘီလာရုဇ်ဘူလ်ဂေးရီးယားဘစ်စ်လာမာဘန်ဘာရာဘင်္ဂါလီတိဘက" + + "်ဘရီတွန်ဘော့စ်နီးယားကတ်တလန်ချက်ချန်းချမိုရိုခိုစီကန်ခရီးချက်ချပ်ချ် စလ" + + "ာဗစ်ချူဗက်ရှ်ဝေလဒိန်းမတ်ဂျာမန်ဒီဗာဟီဒဇွန်ကာအီဝီဂရိအင်္ဂလိပ်အက်စ်ပရန်တိ" + + "ုစပိန်အက်စ်တိုးနီးယားဘာစ်ခ်ပါရှန်ဖူလာဖင်လန်ဖီဂျီဖာရိုပြင်သစ်အနောက် ဖရီ" + + "စီရန်အိုင်းရစ်ရှ်စကော့တစ်ရှ် ဂေးလစ်ခ်ဂါလီစီယာဂူအာရာနီဂူဂျာရသီမန်းဇ်ဟာဥ" + + "စာဟီးဘရူးဟိန္ဒူခရိုအေးရှားဟေတီဟန်ဂေရီအာမေးနီးယားဟီရဲရိုအင်တာလင်ဂွါအင်ဒ" + + "ိုနီးရှားအစ္ဂဘိုစီချွမ် ရီအီဒိုအိုက်စ်လန်အီတလီအီနုခ်တီတုဂျပန်ဂျာဗားဂျေ" + + "ာ်ဂျီယာကွန်ဂိုကီကူယူကွန်းယာမာကာဇာခ်ကလာအ်လီဆပ်ခမာကန္နာဒါကိုရီးယားကနူရီက" + + "က်ရှ်မီးယားကဒ်ကိုမီခိုနီရှ်ကာဂျစ်လက်တင်လူဇင်ဘတ်ဂန်ဒါလင်ဘာဂစ်ရှ်လင်ဂါလာ" + + "လာအိုလစ်သူဝေးနီးယားလူဘာ-ကတန်ဂါလတ်ဗီးယားမာလဂက်စီမာရှယ်လိဇ်မာအိုရီမက်စီဒ" + + "ိုးနီးယားမလေးရာလမ်မွန်ဂိုလီးယားမာရသီမလေးမော်လ်တာမြန်မာနော်ရူးတောင် အွန" + + "်န်ဒီဘီလီနီပေါအွန်ဒွန်ဂါဒတ်ချ်နော်ဝေး နီးနောစ်နော်ဝေး ဘွတ်ခ်မော်လ်တောင" + + "် အွန်န်ဘီလီနာဗာဟိုနရန်ဂျာအိုစီတန်အိုရိုမိုအိုရီရာအိုဆဲတစ်ခ်ပန်ချာပီပါ" + + "ဠိပိုလန်ပက်ရှ်တွန်းပေါ်တူဂီခီချူဝါအိုဝါရောမရွန်ဒီရိုမေနီယားရုရှကင်ရာဝန" + + "်ဒါသင်္သကရိုက်ဆာဒီနီးယားစင်ဒီမြောက် ဆာမိဆန်ဂိုစင်ဟာလာစလိုဗက်စလိုဗေးနီး" + + "ယားဆမိုအာရှိုနာဆိုမာလီအယ်လ်ဘေးနီးယားဆားဘီးယားဆွာဇီလန်တောင်ပိုင်း ဆိုသိ" + + "ုဆူဒန်ဆွီဒင်ဆွာဟီလီတမီးလ်တီလီဂူတာဂျစ်ထိုင်းတီဂ်ရင်ရာတာ့ခ်မင်နစ္စတန်တီဆ" + + "ဝါနာတွန်ဂါတူရကီဆွန်ဂါတာတာတဟီတီဝီဂါယူကရိန်းအူရ်ဒူဦးဇ်ဘက်ဗင်န်ဒါဗီယက်နမ်" + + "ဗိုလာပိုက်ဝါလူးန်ဝူလိုဖ်ဇိုစာဂျူးယိုရူဘာတရုတ်ဇူးလူးအာချေးဒန်မဲအဒိုင်ဂီ" + + "အာဂ်ဟိန်းအိန်နုအာလီယုတောင် အာလ်တိုင်းအင်ဂလို ဆက္ကစွန်အန်ဂီကာမာပုချီအာရ" + + "ာပါဟိုအာစုအက်စတူရီယန်းအာဝါဒီဘာလီဘာဆာဘိန်ဘာဘီနာအနောက် ဘဲလိုချီဘို့ဂျ်ပူ" + + "ရီဘီနီစစ္စီကာဗိုဒိုဘူဂစ်စ်ဘလင်စီဗူအာနိုချီဂါချူကီးစ်မာရီချော့တိုချာရို" + + "ကီချေယန်းဆိုရာနီခရီအိုလီဒါကိုတာဒါဂ်ဝါတိုင်တာဒယ်လာဝဲလ်ဒေါ့ဂ်ရစ်ဘ်ဇာမာအန" + + "ိမ့် ဆိုဘီယန်းဒူအလာအလယ်ပိုင်း ဒတ်ချ်ဂျိုလာ-ဖွန်ရီဒဇာဂါအမ်ဘူအာဖိခ်ရှေးဟ" + + "ောင်း အီဂျစ်အီကာဂျုခ်အလယ်ပိုင်း အင်္ဂလိပ်အီဝန်ဒိုဖိလစ်ပိုင်ဖော်န်အလယ်ပ" + + "ိုင်း ပြင်သစ်ဖရန်စီစ်မြောက် ဖရီစီရန်အရှေ့ ဖရီစီရန်ဖရူလီယန်းဂါဂါဂုဇ်ဂီး" + + "ဇ်ကာရီဗာတီအလယ်ပိုင်း အမြင့် ဂျာမန်ဂိုရိုတာလိုရှေးဟောင်း ဂရိဆွစ် ဂျာမန်" + + "ဂူစီးဂွစ်ချင်ဟာဝိုင်ယီဟီလီဂေနွန်မုံဆက္ကဆိုနီဟူပါအီဗန်အီဘီဘီယိုအီလိုကို" + + "အင်ဂုရှ်လိုဂျ်ဘန်ဂွမ်ဘာမချာမီဂျူဒီယို-ပါရှန်ဂျူဒီယို-အာရဗီကဘိုင်လ်ကချင" + + "်ဂျူအူကမ်ဘာကဘာဒင်တိုင်အပ်မာခွန်ဒီကဘူဗာဒီအာနူကိုရိုခါစီကိုရာ ချီအီနီကကိ" + + "ုကလန်ဂျင်ကင်ဘွန်ဒူကိုမီ-ပါမြက်ကွန်ကနီကပ်ပဲလ်ကရာချေး-ဘာကာကာရီလီယန်ကူရုပ" + + "်ခ်ရှန်ဘာလာဘာဖီအာကိုလိုနီယန်းကွမ်မိုက်လာဒီနိုလန်ဂီလက်ဇ်ဂီးယားလာကိုတာလိ" + + "ုဇီမြောက်လူရီလူဘာ-လူလူအာလွန်ဒါလူအိုမီဇိုလူရီအာမဒူရာမဂါဟီမိုင်သီလီမကာဆာ" + + "မာဆိုင်မို့ခ်ရှာမန်ဒဲမီရုမောရစ်ရှအလယ်ပိုင်း အိုင်းရစ်ရှ်မာခူဝါ-မီအီတို" + + "မီတာမစ်ခ်မက်ခ်စူကူမီနန်မန်ချူးမနိပူရမိုဟော့ခ်မိုစီမွန်ဒန်းဘာသာစကား အမျ" + + "ိုးမျိုးခရိခ်မီရန်ဒီးဇ်အီဇယာမာဇန်ဒါရန်နီနပိုလီတန်နာမာအနိမ့် ဂျာမန်နီဝါ" + + "ရီနီးရပ်စ်နူအဲယန်းကွာစီအိုအွန်ရဲဘွန်းနိုဂိုင်အွန်ကိုမြောက် ဆိုသိုနူအာန" + + "ရန်ကိုလီပန်ဂါစီနန်ပမ်ပန်ညာပါပီမင်တိုပလာအိုနိုင်ဂျီးရီးယား ပစ်ဂျင်ပါရှန" + + "် အဟောင်းပရူရှန်ကီခ်အီချီရပန်နူအီရရိုတွန်ဂန်ရွမ်ဘိုအာရိုမန်းနီးယန်းရူဝ" + + "မ်ဆန်ဒါဝီဆခါဆမ်ဘူရူဆန်တာလီအွန်ဂမ်းဘေးဆန်ဂုစစ္စလီစကော့တ်စီနာကိုရာဘိုရို" + + " ဆမ်နီအိုင်းရစ် ဟောင်းတာချယ်လ်ဟစ်ရှမ်းတောင် ဆာမိလူလီ ဆာမိအီနာရီ ဆာမိစခို" + + "းလ် ဆမ်မီဆိုနင်ကေးဆရာနန် တွန်ဂိုဆာဟိုဆူကူမာကိုမိုရီးယန်းဆီးရီးယားတင်မ်" + + "နဲတီဆိုတီတွမ်တီဂရီကလင်ဂွန်တော့ခ် ပိစင်တရိုကိုတမ်ဘူကာတူဗာလူတာဆာဝါခ်တူဗန" + + "်အလယ်အာ့တလာစ် တာမာဇိုက်အူမူရတ်အူဘန်ဒူမူလရင်းမြစ်ဗိုင်ဗွန်ဂျိုဝေါလ်ဆာဝိ" + + "ုလက်တာဝါရေးဝေါလ်ပီရီကာလ်မိုက်ဆိုဂါရန်ဘဲန်ရမ်ဘာကွမ်တုံမိုရိုကို တမဇိုက်" + + "ဇူနီဘာသာစကားနှင့် ပတ်သက်သောအရာ မရှိပါဇာဇာဩစတြီးယား ဂျာမန်အလီမဲန်နစ် ဂျ" + + "ာမန်ဩစတြေးလျှ အင်္ဂလိပ်ကနေဒါ အင်္ဂလိပ်ဗြိတိသျှ အင်္ဂလိပ်အမေရိကန် အင်္ဂ" + + "လိပ်စပိန် (ဥရောပ)ကနေဒါ ပြင်သစ်ဆွစ် ပြင်သစ်ဂျာမန် (နယ်သာလန်)ဖလီမစ်ရှ်ဘရ" + + "ာဇီး ပေါ်တူဂီဥရောပ ပေါ်တူဂီမော်လဒိုဗာကွန်ဂို ဆွာဟီလီ" + +var myLangIdx = []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x001e, 0x001e, 0x003f, 0x0051, 0x006f, 0x006f, - 0x0081, 0x0099, 0x0099, 0x0099, 0x00cf, 0x00ed, 0x00ff, 0x0120, - 0x0120, 0x0135, 0x014d, 0x015c, 0x0171, 0x0195, 0x01aa, 0x01c2, - 0x01c2, 0x01da, 0x01e6, 0x01f2, 0x01f2, 0x020d, 0x0216, 0x022e, - 0x0240, 0x0240, 0x0252, 0x0258, 0x0261, 0x027c, 0x029d, 0x02ac, - 0x02dc, 0x02f1, 0x0303, 0x0303, 0x031e, 0x032d, 0x0348, 0x035d, - 0x039a, 0x03b5, 0x03b5, 0x03cd, 0x03e5, 0x03fd, 0x040f, 0x041e, - 0x0433, 0x0445, 0x0445, 0x0463, 0x047e, 0x0493, 0x04ae, 0x04ae, + 0x0000, 0x000c, 0x0027, 0x0027, 0x0048, 0x0057, 0x0075, 0x008d, + 0x009c, 0x00a8, 0x00c3, 0x00db, 0x00ff, 0x0117, 0x012f, 0x0156, + 0x0171, 0x0186, 0x019e, 0x01ad, 0x01c2, 0x01e6, 0x01fb, 0x0216, + 0x022e, 0x0246, 0x0252, 0x025e, 0x0286, 0x02a1, 0x02aa, 0x02c2, + 0x02d4, 0x02e6, 0x02fb, 0x0307, 0x0310, 0x032b, 0x034f, 0x035e, + 0x038b, 0x039d, 0x03af, 0x03bb, 0x03cd, 0x03dc, 0x03eb, 0x0400, + 0x042b, 0x044f, 0x0489, 0x04a1, 0x04b9, 0x04d1, 0x04e3, 0x04f2, + 0x0507, 0x0519, 0x0519, 0x053a, 0x0546, 0x055b, 0x057c, 0x0591, // Entry 40 - 7F - 0x04ae, 0x04d5, 0x04d5, 0x04ea, 0x0506, 0x0506, 0x0506, 0x052a, - 0x0539, 0x0557, 0x0566, 0x0587, 0x05a8, 0x05bd, 0x05cf, 0x05cf, - 0x05e1, 0x05ff, 0x0608, 0x061d, 0x063b, 0x063b, 0x0659, 0x0662, - 0x0662, 0x067a, 0x068c, 0x069e, 0x06bc, 0x06cb, 0x06cb, 0x06e0, - 0x06ef, 0x0710, 0x0732, 0x0747, 0x075f, 0x075f, 0x0802, 0x0823, - 0x083e, 0x0868, 0x0877, 0x0883, 0x089e, 0x08a7, 0x08a7, 0x08c8, - 0x08da, 0x08da, 0x08ec, 0x0923, 0x0941, 0x0941, 0x0941, 0x0941, - 0x0941, 0x0941, 0x095c, 0x0971, 0x0971, 0x0989, 0x0995, 0x09a7, + 0x05b2, 0x05d9, 0x05d9, 0x05ee, 0x060a, 0x060a, 0x0619, 0x0637, + 0x0646, 0x0664, 0x0673, 0x0685, 0x06a3, 0x06b8, 0x06ca, 0x06e5, + 0x06f7, 0x0715, 0x071e, 0x0733, 0x074e, 0x075d, 0x0781, 0x078a, + 0x0799, 0x07b1, 0x07c3, 0x07d5, 0x07ed, 0x07fc, 0x081d, 0x0832, + 0x0841, 0x086b, 0x088a, 0x08a5, 0x08bd, 0x08db, 0x08f0, 0x091d, + 0x0938, 0x095f, 0x096e, 0x097a, 0x0992, 0x09a4, 0x09b9, 0x09ed, + 0x09fc, 0x0a1a, 0x0a2c, 0x0a5a, 0x0a94, 0x0ac2, 0x0ad7, 0x0aec, + 0x0b04, 0x0b04, 0x0b1f, 0x0b34, 0x0b52, 0x0b6a, 0x0b76, 0x0b88, // Entry 80 - BF - 0x09bf, 0x09d7, 0x09ef, 0x09fb, 0x0a0d, 0x0a2b, 0x0a37, 0x0a55, - 0x0a76, 0x0a76, 0x0a85, 0x0aa0, 0x0ab2, 0x0ac4, 0x0ad9, 0x0b03, - 0x0b03, 0x0b12, 0x0b27, 0x0b54, 0x0b72, 0x0b72, 0x0b72, 0x0b72, - 0x0b84, 0x0b99, 0x0bab, 0x0bbd, 0x0bcf, 0x0be1, 0x0bfc, 0x0c0e, - 0x0c0e, 0x0c20, 0x0c2f, 0x0c2f, 0x0c38, 0x0c38, 0x0c44, 0x0c5c, - 0x0c6e, 0x0c83, 0x0c83, 0x0c9b, 0x0c9b, 0x0c9b, 0x0cb0, 0x0cbf, - 0x0cbf, 0x0cd4, 0x0cd4, 0x0ce3, 0x0cef, 0x0cef, 0x0cef, 0x0cef, - 0x0cef, 0x0cef, 0x0cef, 0x0d0a, 0x0d0a, 0x0d0a, 0x0d0a, 0x0d0a, + 0x0ba9, 0x0bc1, 0x0be5, 0x0bf1, 0x0c03, 0x0c21, 0x0c2d, 0x0c4b, + 0x0c6c, 0x0c8a, 0x0c99, 0x0cb8, 0x0cca, 0x0cdf, 0x0cf4, 0x0d1b, + 0x0d2d, 0x0d3f, 0x0d54, 0x0d7e, 0x0d99, 0x0db1, 0x0de5, 0x0df4, + 0x0e06, 0x0e1b, 0x0e2d, 0x0e3f, 0x0e51, 0x0e63, 0x0e7e, 0x0eab, + 0x0ec0, 0x0ed2, 0x0ee1, 0x0ef3, 0x0eff, 0x0f0e, 0x0f1a, 0x0f32, + 0x0f44, 0x0f59, 0x0f6e, 0x0f86, 0x0fa4, 0x0fb9, 0x0fce, 0x0fdd, + 0x0fe9, 0x0ffe, 0x0ffe, 0x100d, 0x101f, 0x1031, 0x1031, 0x1040, + 0x1058, 0x1058, 0x1058, 0x1073, 0x1085, 0x1085, 0x1085, 0x1097, // Entry C0 - FF - 0x0d0a, 0x0d0a, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d52, 0x0d52, 0x0d52, - 0x0d52, 0x0d52, 0x0d52, 0x0d52, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d5e, - 0x0d5e, 0x0d5e, 0x0d6a, 0x0d6a, 0x0d76, 0x0d76, 0x0d76, 0x0d76, - 0x0d76, 0x0d88, 0x0d88, 0x0d94, 0x0d94, 0x0d94, 0x0dd0, 0x0dd0, - 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, - 0x0dd0, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, - 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0df1, 0x0df1, 0x0df1, - 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0e09, 0x0e09, 0x0e37, + 0x1097, 0x10c5, 0x10f3, 0x1108, 0x1108, 0x111d, 0x111d, 0x1138, + 0x1138, 0x1138, 0x1138, 0x1138, 0x1138, 0x1144, 0x1144, 0x1168, + 0x1168, 0x117a, 0x117a, 0x1186, 0x1186, 0x1192, 0x1192, 0x1192, + 0x1192, 0x1192, 0x11a4, 0x11a4, 0x11b0, 0x11b0, 0x11b0, 0x11db, + 0x11fc, 0x11fc, 0x1208, 0x1208, 0x1208, 0x121d, 0x121d, 0x121d, + 0x121d, 0x121d, 0x122f, 0x122f, 0x122f, 0x1244, 0x1244, 0x1250, + 0x1250, 0x1250, 0x1250, 0x1250, 0x1250, 0x126b, 0x127a, 0x127a, + 0x127a, 0x1292, 0x129e, 0x129e, 0x12b6, 0x12b6, 0x12ce, 0x12e3, // Entry 100 - 13F - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e4c, 0x0e4c, 0x0e61, 0x0e73, - 0x0e73, 0x0e73, 0x0e73, 0x0e7f, 0x0e7f, 0x0ea6, 0x0ea6, 0x0eb5, - 0x0ee6, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f1a, 0x0f1a, 0x0f1a, 0x0f4b, - 0x0f4b, 0x0f4b, 0x0f85, 0x0f85, 0x0f85, 0x0f85, 0x0f85, 0x0fa3, - 0x0fa3, 0x0fa3, 0x0fa3, 0x0fd6, 0x0ffd, 0x0ffd, 0x103a, 0x1074, - 0x1074, 0x1074, 0x1086, 0x1086, 0x1086, 0x1086, 0x1086, 0x1086, - 0x1086, 0x1086, 0x10c8, 0x10c8, 0x10c8, 0x10c8, 0x10c8, 0x10c8, - 0x10c8, 0x10f0, 0x110f, 0x110f, 0x110f, 0x111e, 0x111e, 0x111e, + 0x12f8, 0x12f8, 0x12f8, 0x12f8, 0x1310, 0x1310, 0x1325, 0x1337, + 0x134c, 0x1367, 0x1367, 0x1388, 0x1388, 0x1394, 0x1394, 0x13c2, + 0x13c2, 0x13d1, 0x1402, 0x1427, 0x1427, 0x1436, 0x1445, 0x1457, + 0x1457, 0x1488, 0x14a3, 0x14a3, 0x14dd, 0x14dd, 0x14f5, 0x14f5, + 0x14f5, 0x1513, 0x1513, 0x1525, 0x1525, 0x1559, 0x1571, 0x1571, + 0x159c, 0x15c4, 0x15df, 0x15e5, 0x15f7, 0x15f7, 0x15f7, 0x15f7, + 0x15f7, 0x1606, 0x161e, 0x161e, 0x1662, 0x1662, 0x1662, 0x1662, + 0x1683, 0x1683, 0x1683, 0x16ab, 0x16ca, 0x16ca, 0x16ca, 0x16d9, // Entry 140 - 17F - 0x111e, 0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x1157, 0x1157, - 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, - 0x1169, 0x117b, 0x11a6, 0x11d1, 0x11d1, 0x11d1, 0x11e9, 0x11f8, - 0x11f8, 0x1207, 0x1207, 0x1207, 0x1207, 0x1207, 0x121f, 0x1240, - 0x1240, 0x1240, 0x1240, 0x124c, 0x124c, 0x1271, 0x1271, 0x1271, - 0x1271, 0x128f, 0x128f, 0x12b1, 0x12c6, 0x12c6, 0x12c6, 0x12c6, - 0x12c6, 0x12c6, 0x12c6, 0x12c6, 0x12de, 0x12f0, 0x12f0, 0x12f0, - 0x12f0, 0x12f0, 0x12ff, 0x12ff, 0x12ff, 0x12ff, 0x12ff, 0x12ff, + 0x16f1, 0x16f1, 0x16f1, 0x170c, 0x170c, 0x172a, 0x172a, 0x1733, + 0x174e, 0x174e, 0x175a, 0x1769, 0x1784, 0x179c, 0x17b4, 0x17b4, + 0x17b4, 0x17cf, 0x17e1, 0x17f3, 0x181e, 0x1846, 0x1846, 0x1846, + 0x185e, 0x186d, 0x187c, 0x188b, 0x188b, 0x189d, 0x189d, 0x18b5, + 0x18cd, 0x18ee, 0x18ee, 0x1900, 0x1900, 0x190c, 0x190c, 0x1931, + 0x1931, 0x1931, 0x193d, 0x1955, 0x1970, 0x1992, 0x19a7, 0x19a7, + 0x19bc, 0x19de, 0x19de, 0x19de, 0x19f9, 0x1a11, 0x1a29, 0x1a3b, + 0x1a5f, 0x1a7a, 0x1a7a, 0x1a8f, 0x1a9e, 0x1a9e, 0x1a9e, 0x1abf, // Entry 180 - 1BF - 0x12ff, 0x1314, 0x1314, 0x1314, 0x1314, 0x1332, 0x1332, 0x1332, - 0x1332, 0x1332, 0x1341, 0x1341, 0x1353, 0x1353, 0x1353, 0x1353, - 0x1353, 0x1353, 0x1353, 0x1353, 0x1353, 0x1368, 0x1368, 0x1368, - 0x1368, 0x1368, 0x1374, 0x1398, 0x13d2, 0x13fa, 0x1406, 0x1406, - 0x1406, 0x141b, 0x141b, 0x1436, 0x1436, 0x1436, 0x144b, 0x1497, - 0x1497, 0x1497, 0x1497, 0x1497, 0x1497, 0x1497, 0x14bb, 0x14bb, - 0x14bb, 0x14c7, 0x14ec, 0x14ec, 0x14ec, 0x14ec, 0x14ec, 0x1501, - 0x1501, 0x1501, 0x1501, 0x1501, 0x150d, 0x150d, 0x1519, 0x1519, + 0x1abf, 0x1abf, 0x1abf, 0x1ad4, 0x1ad4, 0x1ad4, 0x1ae3, 0x1b01, + 0x1b01, 0x1b20, 0x1b20, 0x1b32, 0x1b41, 0x1b50, 0x1b62, 0x1b62, + 0x1b62, 0x1b71, 0x1b71, 0x1b80, 0x1b9b, 0x1baa, 0x1baa, 0x1bbf, + 0x1bbf, 0x1bda, 0x1bda, 0x1be9, 0x1bf5, 0x1c0d, 0x1c50, 0x1c78, + 0x1c84, 0x1ca2, 0x1cbd, 0x1cd2, 0x1ce4, 0x1cff, 0x1d0e, 0x1d0e, + 0x1d26, 0x1d60, 0x1d6f, 0x1d8d, 0x1d8d, 0x1d8d, 0x1d8d, 0x1d9c, + 0x1dc0, 0x1dc0, 0x1ddb, 0x1de7, 0x1e0c, 0x1e1e, 0x1e36, 0x1e4e, + 0x1e4e, 0x1e66, 0x1e87, 0x1e9f, 0x1e9f, 0x1e9f, 0x1eb4, 0x1ed9, // Entry 1C0 - 1FF - 0x1519, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, - 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1559, 0x1559, - 0x1559, 0x1559, 0x1559, 0x1559, 0x1559, 0x1559, 0x1574, 0x1574, - 0x1574, 0x1574, 0x1574, 0x1574, 0x1574, 0x1589, 0x1589, 0x1589, - 0x1589, 0x1589, 0x1589, 0x158f, 0x158f, 0x158f, 0x158f, 0x15a4, - 0x15a4, 0x15a4, 0x15a4, 0x15a4, 0x15b3, 0x15b3, 0x15c2, 0x15c2, - 0x15c2, 0x15c2, 0x15ce, 0x15ce, 0x15ce, 0x15ff, 0x162d, 0x162d, - 0x164e, 0x165d, 0x165d, 0x165d, 0x165d, 0x165d, 0x168b, 0x16a4, + 0x1ee5, 0x1ee5, 0x1ee5, 0x1f00, 0x1f00, 0x1f00, 0x1f00, 0x1f00, + 0x1f1e, 0x1f1e, 0x1f36, 0x1f54, 0x1f66, 0x1f66, 0x1fa9, 0x1fa9, + 0x1fa9, 0x1fd1, 0x1fd1, 0x1fd1, 0x1fd1, 0x1fd1, 0x1fd1, 0x1fe6, + 0x1fe6, 0x2001, 0x2001, 0x2001, 0x2019, 0x203a, 0x203a, 0x203a, + 0x204f, 0x204f, 0x204f, 0x204f, 0x204f, 0x207f, 0x208e, 0x20a3, + 0x20ac, 0x20ac, 0x20c1, 0x20c1, 0x20d6, 0x20d6, 0x20f7, 0x2106, + 0x2118, 0x212d, 0x212d, 0x212d, 0x212d, 0x2139, 0x2139, 0x2139, + 0x216a, 0x2198, 0x2198, 0x21b9, 0x21c8, 0x21c8, 0x21c8, 0x21c8, // Entry 200 - 23F - 0x16c3, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, - 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, - 0x16df, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, - 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, - 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x16ee, 0x1706, 0x1706, 0x174c, - 0x174c, 0x174c, 0x174c, 0x176d, 0x177c, 0x177c, 0x177c, 0x177c, - 0x177c, 0x177c, 0x177c, 0x1791, 0x1791, 0x1791, 0x1791, 0x1791, - 0x17ac, 0x17ac, 0x17ac, 0x17ac, 0x17bb, 0x17bb, 0x17bb, 0x17bb, + 0x21c8, 0x21e4, 0x21fd, 0x221c, 0x2241, 0x225c, 0x225c, 0x2284, + 0x2284, 0x2293, 0x2293, 0x22a5, 0x22a5, 0x22a5, 0x22cc, 0x22cc, + 0x22e7, 0x22e7, 0x22e7, 0x22fc, 0x230b, 0x230b, 0x231d, 0x232c, + 0x232c, 0x232c, 0x232c, 0x2344, 0x2344, 0x2344, 0x2344, 0x2344, + 0x2366, 0x2366, 0x237b, 0x237b, 0x237b, 0x237b, 0x2390, 0x23a2, + 0x23ba, 0x23c9, 0x2409, 0x241e, 0x241e, 0x2433, 0x2454, 0x2463, + 0x2463, 0x2463, 0x2463, 0x2463, 0x2463, 0x2463, 0x247b, 0x2490, + 0x24a8, 0x24b7, 0x24b7, 0x24d2, 0x24d2, 0x24ed, 0x24ed, 0x24fc, // Entry 240 - 27F - 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17fc, - 0x17fc, 0x1856, 0x1856, 0x187c, 0x187c, 0x18a4, 0x18d6, 0x190d, - 0x1938, 0x196c, 0x19a0, 0x19d4, 0x19f4, 0x19f4, 0x19f4, 0x1a19, - 0x1a3b, 0x1a3b, 0x1a56, 0x1a81, 0x1aa9, 0x1aa9, 0x1aa9, 0x1ad4, - 0x1b08, 0x1b3f, -} // Size: 1244 bytes - -var neLangStr string = "" + // Size: 12514 bytes + 0x24fc, 0x24fc, 0x2511, 0x2520, 0x2520, 0x2535, 0x2535, 0x2535, + 0x2535, 0x2535, 0x2566, 0x2572, 0x25d1, 0x25dd, 0x25dd, 0x25dd, + 0x260b, 0x263c, 0x2673, 0x269e, 0x26d2, 0x2706, 0x2706, 0x2727, + 0x2727, 0x2727, 0x274c, 0x276e, 0x279b, 0x27b6, 0x27e1, 0x2809, + 0x2827, 0x2827, 0x2852, +} // Size: 1246 bytes + +const neLangStr string = "" + // Size: 13512 bytes "अफारअब्खाजियालीअवेस्तानअफ्रिकान्सआकानअम्हारिकअरागोनीअरबीआसामीअवारिकऐमारा" + "अजरबैजानीबास्किरबेलारुसीबुल्गेरियालीबिस्लामबाम्बाराबंगालीतिब्बतीब्रेटन" + "बोस्नियालीक्याटालनचेचेनचामोर्रोकोर्सिकनक्रीचेकचर्च स्लाभिकचुभासवेल्शडे" + "निसजर्मनदिबेहीजोङ्खाइवीग्रीकअङ्ग्रेजीएस्पेरान्तोस्पेनीइस्टोनियालीबास्क" + - "फारसीफुलाहफिनिसफिजियालीफारोजफ्रान्सेलीफ्रिजीयनआयरिसस्कटिस गाएलिकगलिसिय" + + "फारसीफुलाहफिनिसफिजियालीफारोजफ्रान्सेलीफ्रिजियनआयरिसस्कटिस गाएलिकगलिसिय" + "ालीगुवारानीगुजरातीमान्क्सहाउसाहिब्रुहिन्दीहिरी मोटुक्रोयसियालीहैटियाली" + - "हङ्गेरियालीआर्मेनियालीहेरेरोइन्टर्लिङ्गुआइन्डोनेसियालीइन्टरलिङ्ग्वेइग्" + - "बोसिचुआन यिइनुपिआक्इडोआइसल्यान्डियालीइटालेलीइनुक्टिटुटजापानीजाभानीजर्ज" + - "ियालीकोङ्गोकिकुयुकुआन्यामाकाजाखकालालिसुटखमेरकन्नाडाकोरियालीकानुरीकास्म" + - "िरीकुर्दीकोमीकोर्निसकिर्गिजल्याटिनलक्जेम्बर्गीगान्डालिम्बुर्गीलिङ्गाला" + - "लाओलिथुआनियालीलुबा-काताङ्गालात्भियालीमलागासीमार्सालीमाओरीम्यासेडोनियाल" + - "ीमलयालममङ्गोलियालीमराठीमलायमाल्टिजबर्मेलीनाउरूउत्तरी न्डेबेलेनेपालीन्द" + - "ोन्गाडचनर्वेली नाइनोर्स्कनर्वेली बोकमालनाभाजोन्यान्जाअक्सिटनओजिब्वाओरो" + - "मोउडियाअोस्सेटिकपंजाबीपालीपोलिसपास्तोपोर्तुगीक्वेचुवारोमानिसरुन्डीरोमा" + - "नियालीरूसीकिन्यारवान्डासंस्कृतसिन्धीउत्तरी सामीसाङ्गोसिन्हालीस्लोभाकिय" + - "ालीस्लोभेनियालीशोनासोमालीअल्बानियालीसर्बियालीस्वातीस्विडिसस्वाहिलीतामि" + - "लतेलुगुताजिकथाईतिग्रीन्याटर्कमेनटोङ्गनटर्किशतातारउइघुरयुक्रेनीउर्दुउज्" + - "बेकीभियतनामीवुलुफखोसायिद्दिसयोरूवाचिनियाँजुलुअचाइनिजअकोलीअदाङमेअदिघेअफ" + - "्रिहिलीआघेमअइनुअक्कादियालीअलाबामाअलेउटघेग अल्बानियालीपुरातन अङ्ग्रेजीअ" + - "ङ्गिकाअरामाइकमापुचेअराओनाअरापाहोअल्जेरियाली अरबीअरावाकमोरोक्कोली अरबीइ" + - "जिप्ट अरबीआसुअमेरिकी साङ्केतिक भाषाअस्टुरियालीकोटावाअवधीबालुचीबालीबाभा" + - "रियालीबासाबामुनबाताक तोबाघोमालाबेजाबेम्बाबेटावीबेनाबाफुटबडागापश्चिम बा" + - "लोचीभोजपुरीबिकोलबिनीबन्जारकोमविष्णुप्रियाबाख्तिआरीब्रजब्राहुइबोडोअकुजब" + - "ुरिआतबुगिनियालीबुलुब्लिनमेडुम्बाकाड्डोक्यारिबकायुगाअट्सामसेबुआनोचिगाचि" + - "ब्चाचागाटाईचुकेसेमारीचिनुक जार्गनचोक्टावचिपेव्यानचेरोकीचेयेन्नेकेन्द्र" + - "ीय कुर्दीकोप्टिककापिज्नोनक्रिमियाली तुर्ककासुवियनडाकोटादार्ग्वाताइतादे" + - "लावरदोग्रिबदिन्काजर्माडोगरीतल्लो सोर्बियनकेन्द्रीय दुसुनदुवालामध्य डचज" + - "ोला-फोनिलद्युलादाजागाएम्बुएफिकएमिलियालीपुरातन इजिप्टीएकाजुकएलामाइटमध्य" + - " अङ्ग्रेजीकेन्द्रीय युपिकइवोन्डोएक्सट्रेमादुरालीफाङफिलिपिनीफोनकाहुन फ्रा" + - "न्सेलीमध्य फ्रान्सेलीपुरातन फ्रान्सेलीअर्पितानउत्तरी फ्रिजीपूर्वी फ्रि" + - "सियालीफ्रिउलियालीगागगाउजगान चिनियाँगायोग्बायागिजगिल्बर्टीगिलाकीमध्य उच" + - "्च जर्मनपुरातन उच्च जर्मनगोवा कोन्कानीगोन्डीगोरोन्टालोगोथिकग्रेबोपुरात" + - "न ग्रिकस्वीस जर्मनफ्राफ्रागुसीगुइचिनहाइदाहक्का चिनियाँहवाइयनफिजी हिन्द" + - "ीहिलिगायनोनहिट्टिटेहमोङमाथिल्लो सोर्बियनहुपाइबानइबिबियोइयोकोइन्गसइन्ग्" + - "रियालीजमैकाली क्रेओले अङ्ग्रेजीलोज्बानन्गोम्बामाचामेजुडियो-फारसीजुडियो" + - "-अरबीजुटिसकारा-काल्पाककाबिलकाचिनज्जुकाम्बाकावीकाबार्दियालीकानेम्बुमाकोन्" + - "डेकाबुभेर्डियानुकेनयाङकोरोकाइनगाङखासीखोटानीकोयरा चिनीखोवारकिर्मान्जकीक" + - "ाकोकालेन्जिनकिम्बुन्डुकोमी-पर्म्याककोन्कानीकोस्रालीक्पेल्लेकाराचाय-बाल" + - "्करक्रिओकिनाराय-एकारेलियालीकुरुखशाम्बालाबाफियाकोलोग्नियालीकुमिककुतेनाइ" + - "लाडिनोलाङ्गीलाहन्डालाम्बालाज्घियालीलिङ्गुवा फ्राङ्का नोभालिगुरियालीलिभ" + - "ोनियालीलाकोतालोम्बार्डमोङ्गोलोजीउत्तरी लुरीलाट्गालीलुबा-लुलुआलुइसेनोलु" + - "न्डालुओमिजोलुइयासाहित्यिक चिनियाँलाजमादुरेसेमाफामगधीमैथिलीमाकासारमान्द" + - "िङोमसाईमाबामोक्षमन्दरमेन्डेमेरूमोरिसेनमध्य आयरिसमाखुवा-मिट्टोमेटामिकमा" + - "कमिनाङकाबाउमान्चुमनिपुरीमोहकमोस्सीमुन्डाङबहुभाषाक्रिकमिरान्डीमाडवारीमे" + - "न्टावाईम्येनेइर्ज्यामजानडेरानीमिन नान चिनियाँनेपोलिटाननामातल्लो जर्मनन" + - "ेवारीनियासनिउएनअओ नागाक्वासियोन्गिएम्बुननोगाइपुरानो नोर्सेनोभियलनकोउत्" + - "तरी सोथोनुएरपरम्परागत नेवारीन्यामवेजीन्यान्कोलन्योरोनजिमाओसागेअटोमन तु" + - "र्कीपाङ्गासिनानपाहलावीपामपाङ्गापापियामेन्तोपालाउवालीपिकार्डपेन्सिलभानि" + - "याली जर्मनपुरातन फारसीपालाटिन जर्मनफोनिसियालीपिएडमोन्तेसेपोन्टिकपुरातन" + - " प्रोभेन्कालकिचेचिम्बोराजो उच्चस्थान किचुआराजस्थानीरोम्बोअरोमानीयालीर्" + - "\u200cवासाम्बुरूसान्तालीन्गामबायसाङ्गुदक्षिणी कुर्दिशसेनाकोयराबोरो सेन्न" + - "ीपुरातन आयरीसटाचेल्हिटचाड अरबीतल्लो सिलेसियालीदक्षिणी सामीलुले सामीइना" + - "री सामीस्कोइट सामीस्रानान टोङ्गोसुकुमासुसूसुमेरियालीकोमोरीपरम्परागत सि" + - "रियाकसिरियाकटेसोक्लिङ्गनन्यास टोङ्गामुस्लिम टाटतासावाककेन्द्रीय एट्लास" + - " टामाजिघटअज्ञात भाषाभाइमुख्य-फ्राङ्कोनियालीभुन्जोवार्ल्पिरीकाल्मिकमिनग्र" + - "ेलियालीसोगान्हिनगातुकान्टोनियालीब्लिससिम्बोल्समानक मोरोक्कोन तामाजिघटभ" + - "ाषिक सामग्री छैनआधुनिक मानक अरबीअस्ट्रियाली जर्मनस्वीस हाई जर्मनअस्ट्र" + - "ेलियाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअमेरिकी अङ्ग्रेज" + - "ील्याटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्यानेडाली फ्रान्" + - "सेलीतल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुगीमाल्डाभियनकङ्" + - "गो स्वाहिलीसरलिकृत चिनियाँपरम्परागत चिनियाँ" - -var neLangIdx = []uint16{ // 610 elements + " क्रियोलहङ्गेरियालीआर्मेनियालीहेरेरोइन्टर्लिङ्गुआइन्डोनेसियालीइन्टरलिङ्ग" + + "्वेइग्बोसिचुआन यिइनुपिआक्इडोआइसल्यान्डियालीइटालेलीइनुक्टिटुटजापानीजाभा" + + "नीजर्जियालीकोङ्गोकिकुयुकुआन्यामाकाजाखकालालिसुटखमेरकन्नाडाकोरियालीकानुर" + + "ीकास्मिरीकुर्दीकोमीकोर्निसकिर्गिजल्याटिनलक्जेम्बर्गीगान्डालिम्बुर्गीलि" + + "ङ्गालालाओलिथुआनियालीलुबा-काताङ्गालात्भियालीमलागासीमार्सालीमाओरीम्यासेड" + + "ोनियालीमलयालममङ्गोलियालीमराठीमलायमाल्टिजबर्मेलीनाउरूउत्तरी न्डेबेलेनेप" + + "ालीन्दोन्गाडचनर्वेली नाइनोर्स्कनर्वेली बोकमालदक्षिण न्देबेलेनाभाजोन्या" + + "न्जाअक्सिटनओजिब्वाओरोमोउडियाअोस्सेटिकपंजाबीपालीपोलिसपास्तोपोर्तुगीक्वे" + + "चुवारोमानिसरुन्डीरोमानियालीरसियालीकिन्यारवान्डासंस्कृतसार्डिनियालीसिन्" + + "धीउत्तरी सामीसाङ्गोसिन्हालीस्लोभाकियालीस्लोभेनियालीसामोआशोनासोमालीअल्ब" + + "ानियालीसर्बियालीस्वातीदक्षिणी सोथोसुडानीस्विडिसस्वाहिलीतामिलतेलुगुताजि" + + "कथाईटिग्रिन्याटर्कमेनट्स्वानाटोङ्गनटर्किशट्सोङ्गातातारटाहिटियनउइघुरयुक" + + "्रेनीउर्दुउज्बेकीभेन्डाभियतनामीभोलापिकवाल्लुनवुलुफखोसायिद्दिसयोरूवाचिन" + + "ियाँजुलुअचाइनिजअकोलीअदाङमेअदिघेअफ्रिहिलीआघेमअइनुअक्कादियालीअलाबामाअलेउ" + + "टघेग अल्बानियालीदक्षिणी आल्टाइपुरातन अङ्ग्रेजीअङ्गिकाअरामाइकमापुचेअराओ" + + "नाअरापाहोअल्जेरियाली अरबीअरावाकमोरोक्कोली अरबीइजिप्ट अरबीआसुअमेरिकी सा" + + "ङ्केतिक भाषाअस्टुरियालीकोटावाअवधीबालुचीबालीबाभारियालीबासाबामुनबाताक तो" + + "बाघोमालाबेजाबेम्बाबेटावीबेनाबाफुटबडागापश्चिम बालोचीभोजपुरीबिकोलबिनीबन्" + + "जारकोमसिक्सिकाविष्णुप्रियाबाख्तिआरीब्रजब्राहुइबोडोअकुजबुरिआतबुगिनियाली" + + "बुलुब्लिनमेडुम्बाकाड्डोक्यारिबकायुगाअट्सामसेबुआनोचिगाचिब्चाचागाटाईचुके" + + "सेमारीचिनुक जार्गनचोक्टावचिपेव्यानचेरोकीचेयेन्नेकेन्द्रीय कुर्दीकोप्टि" + + "ककापिज्नोनक्रिमियाली तुर्कसेसेल्वा क्रिओल फ्रान्सेलीकासुवियनडाकोटादार्" + + "ग्वाताइतादेलावरदोग्रिबदिन्काजर्माडोगरीतल्लो सोर्बियनकेन्द्रीय दुसुनदुव" + + "ालामध्य डचजोला-फोनिलद्युलादाजागाएम्बुएफिकएमिलियालीपुरातन इजिप्टीएकाजुक" + + "एलामाइटमध्य अङ्ग्रेजीकेन्द्रीय युपिकइवोन्डोएक्सट्रेमादुरालीफाङफिलिपिनी" + + "फोनकाहुन फ्रान्सेलीमध्य फ्रान्सेलीपुरातन फ्रान्सेलीअर्पितानउत्तरी फ्रि" + + "जीपूर्वी फ्रिसियालीफ्रिउलियालीगागगाउजगान चिनियाँगायोग्बायागिजगिल्बर्टी" + + "गिलाकीमध्य उच्च जर्मनपुरातन उच्च जर्मनगोवा कोन्कानीगोन्डीगोरोन्टालोगोथ" + + "िकग्रेबोपुरातन ग्रिकस्वीस जर्मनफ्राफ्रागुसीगुइचिनहाइदाहक्का चिनियाँहवा" + + "इयनफिजी हिन्दीहिलिगायनोनहिट्टिटेहमोङमाथिल्लो सोर्बियनहुपाइबानइबिबियोइय" + + "ोकोइन्गसइन्ग्रियालीजमैकाली क्रेओले अङ्ग्रेजीलोज्बानन्गोम्बामाचामेजुडिय" + + "ो-फारसीजुडियो-अरबीजुटिसकारा-काल्पाककाबिलकाचिनज्जुकाम्बाकावीकाबार्दियाल" + + "ीकानेम्बुटुआपमाकोन्डेकाबुभेर्डियानुकेनयाङकोरोकाइनगाङखासीखोटानीकोयरा चि" + + "नीखोवारकिर्मान्जकीकाकोकालेन्जिनकिम्बुन्डुकोमी-पर्म्याककोन्कानीकोस्राली" + + "क्पेल्लेकाराचाय-बाल्करक्रिओकिनाराय-एकारेलियालीकुरुखशाम्बालाबाफियाकोलोग" + + "्नियालीकुमिककुतेनाइलाडिनोलाङ्गीलाहन्डालाम्बालाज्घियालीलिङ्गुवा फ्राङ्क" + + "ा नोभालिगुरियालीलिभोनियालीलाकोतालोम्बार्डमोङ्गोलोजीउत्तरी लुरीलाट्गाली" + + "लुबा-लुलुआलुइसेनोलुन्डालुओमिजोलुइयासाहित्यिक चिनियाँलाजमादुरेसेमाफामगध" + + "ीमैथिलीमाकासारमान्दिङोमसाईमाबामोक्षमन्दरमेन्डेमेरूमोरिसेनमध्य आयरिसमाख" + + "ुवा-मिट्टोमेटामिकमाकमिनाङकाबाउमान्चुमनिपुरीमोहकमोस्सीमुन्डाङबहुभाषाक्र" + + "िकमिरान्डीमाडवारीमेन्टावाईम्येनेइर्ज्यामजानडेरानीमिन नान चिनियाँनेपोलि" + + "टाननामातल्लो जर्मननेवारीनियासनिउएनअओ नागाक्वासियोन्गिएम्बुननोगाइपुरानो" + + " नोर्सेनोभियलनकोउत्तरी सोथोनुएरपरम्परागत नेवारीन्यामवेजीन्यान्कोलन्योरोन" + + "जिमाओसागेअटोमन तुर्कीपाङ्गासिनानपाहलावीपामपाङ्गापापियामेन्तोपालाउवालीप" + + "िकार्डनाइजेरियाली पिड्जिनपेन्सिलभानियाली जर्मनपुरातन फारसीपालाटिन जर्म" + + "नफोनिसियालीपिएडमोन्तेसेपोन्टिकप्रसियालीपुरातन प्रोभेन्कालकिचेचिम्बोराज" + + "ो उच्चस्थान किचुआराजस्थानीरापानुईरारोटोङ्गानरोम्बोअरोमानीयालीर्\u200cव" + + "ासान्डेअसाखासाम्बुरूसान्तालीन्गामबायसाङ्गुसिसिलियालीस्कट्सदक्षिणी कुर्" + + "दिशसेनाकोयराबोरो सेन्नीपुरातन आयरीसटाचेल्हिटशानचाड अरबीतल्लो सिलेसियाल" + + "ीदक्षिणी सामीलुले सामीइनारी सामीस्कोइट सामीसोनिन्केस्रानान टोङ्गोसाहोस" + + "ुकुमासुसूसुमेरियालीकोमोरीपरम्परागत सिरियाकसिरियाकटिम्नेटेसोटेटुमटिग्रे" + + "क्लिङ्गनन्यास टोङ्गाटोक पिसिनटारोकोमुस्लिम टाटटुम्बुकाटुभालुतासावाकटुभ" + + "िनियालीकेन्द्रीय एट्लास टामाजिघटउड्मुर्टउम्बुन्डीrootभाइमुख्य-फ्राङ्को" + + "नियालीभुन्जोवाल्सरवोलेट्टावारेवार्ल्पिरीकाल्मिकमिनग्रेलियालीसोगायाङ्बे" + + "नयेम्बान्हिनगातुकान्टोनियालीब्लिससिम्बोल्समानक मोरोक्कोन तामाजिघटजुनीभ" + + "ाषिक सामग्री छैनजाजाआधुनिक मानक अरबीअस्ट्रियाली जर्मनस्वीस हाई जर्मनअस" + + "्ट्रेलियाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअमेरिकी अङ्ग" + + "्रेजील्याटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्यानेडाली फ्" + + "रान्सेलीतल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुगीकङ्गो स्व" + + "ाहिलीसरलिकृत चिनियाँपरम्परागत चिनियाँ" + +var neLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000c, 0x002d, 0x0045, 0x0063, 0x006f, 0x0087, 0x009c, 0x00a8, 0x00b7, 0x00c9, 0x00d8, 0x00f3, 0x0108, 0x0120, 0x0144, @@ -18860,88 +22208,88 @@ var neLangIdx = []uint16{ // 610 elements 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031c, 0x033d, 0x034c, 0x035b, 0x036a, 0x0379, 0x0391, 0x03a0, 0x03be, 0x03d6, 0x03e5, 0x040a, 0x0425, 0x043d, 0x0452, 0x0467, 0x0476, - 0x0488, 0x049a, 0x04b3, 0x04d4, 0x04ec, 0x050d, 0x052e, 0x0540, + 0x0488, 0x049a, 0x04b3, 0x04d4, 0x0502, 0x0523, 0x0544, 0x0556, // Entry 40 - 7F - 0x0567, 0x058e, 0x05b5, 0x05c4, 0x05dd, 0x05f5, 0x05fe, 0x062b, - 0x0640, 0x065e, 0x0670, 0x0682, 0x069d, 0x06af, 0x06c1, 0x06dc, - 0x06eb, 0x0706, 0x0712, 0x0727, 0x073f, 0x0751, 0x0769, 0x077b, - 0x0787, 0x079c, 0x07b1, 0x07c6, 0x07ea, 0x07fc, 0x081a, 0x0832, - 0x083b, 0x085c, 0x0881, 0x089f, 0x08b4, 0x08cc, 0x08db, 0x0905, - 0x0917, 0x0938, 0x0947, 0x0953, 0x0968, 0x097d, 0x098c, 0x09b7, - 0x09c9, 0x09e1, 0x09e7, 0x0a1b, 0x0a43, 0x0a43, 0x0a55, 0x0a6d, - 0x0a82, 0x0a97, 0x0aa6, 0x0ab5, 0x0ad0, 0x0ae2, 0x0aee, 0x0afd, + 0x057d, 0x05a4, 0x05cb, 0x05da, 0x05f3, 0x060b, 0x0614, 0x0641, + 0x0656, 0x0674, 0x0686, 0x0698, 0x06b3, 0x06c5, 0x06d7, 0x06f2, + 0x0701, 0x071c, 0x0728, 0x073d, 0x0755, 0x0767, 0x077f, 0x0791, + 0x079d, 0x07b2, 0x07c7, 0x07dc, 0x0800, 0x0812, 0x0830, 0x0848, + 0x0851, 0x0872, 0x0897, 0x08b5, 0x08ca, 0x08e2, 0x08f1, 0x091b, + 0x092d, 0x094e, 0x095d, 0x0969, 0x097e, 0x0993, 0x09a2, 0x09cd, + 0x09df, 0x09f7, 0x09fd, 0x0a31, 0x0a59, 0x0a84, 0x0a96, 0x0aae, + 0x0ac3, 0x0ad8, 0x0ae7, 0x0af6, 0x0b11, 0x0b23, 0x0b2f, 0x0b3e, // Entry 80 - BF - 0x0b0f, 0x0b27, 0x0b3f, 0x0b54, 0x0b66, 0x0b84, 0x0b90, 0x0bb7, - 0x0bcc, 0x0bcc, 0x0bde, 0x0bfd, 0x0c0f, 0x0c27, 0x0c4b, 0x0c6f, - 0x0c6f, 0x0c7b, 0x0c8d, 0x0cae, 0x0cc9, 0x0cdb, 0x0cdb, 0x0cdb, - 0x0cf0, 0x0d08, 0x0d17, 0x0d29, 0x0d38, 0x0d41, 0x0d5f, 0x0d74, - 0x0d74, 0x0d86, 0x0d98, 0x0d98, 0x0da7, 0x0da7, 0x0db6, 0x0dce, - 0x0ddd, 0x0df2, 0x0df2, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e19, 0x0e25, - 0x0e3a, 0x0e4c, 0x0e4c, 0x0e61, 0x0e6d, 0x0e82, 0x0e91, 0x0ea3, - 0x0eb2, 0x0eb2, 0x0ecd, 0x0ed9, 0x0ee5, 0x0f06, 0x0f1b, 0x0f2a, + 0x0b50, 0x0b68, 0x0b80, 0x0b95, 0x0ba7, 0x0bc5, 0x0bda, 0x0c01, + 0x0c16, 0x0c3a, 0x0c4c, 0x0c6b, 0x0c7d, 0x0c95, 0x0cb9, 0x0cdd, + 0x0cec, 0x0cf8, 0x0d0a, 0x0d2b, 0x0d46, 0x0d58, 0x0d7a, 0x0d8c, + 0x0da1, 0x0db9, 0x0dc8, 0x0dda, 0x0de9, 0x0df2, 0x0e10, 0x0e25, + 0x0e3d, 0x0e4f, 0x0e61, 0x0e79, 0x0e88, 0x0ea0, 0x0eaf, 0x0ec7, + 0x0ed6, 0x0eeb, 0x0efd, 0x0f15, 0x0f2a, 0x0f3f, 0x0f4e, 0x0f5a, + 0x0f6f, 0x0f81, 0x0f81, 0x0f96, 0x0fa2, 0x0fb7, 0x0fc6, 0x0fd8, + 0x0fe7, 0x0fe7, 0x1002, 0x100e, 0x101a, 0x103b, 0x1050, 0x105f, // Entry C0 - FF - 0x0f55, 0x0f55, 0x0f83, 0x0f98, 0x0fad, 0x0fbf, 0x0fd1, 0x0fe6, - 0x1014, 0x1026, 0x1051, 0x1070, 0x1079, 0x10b7, 0x10d8, 0x10ea, - 0x10f6, 0x1108, 0x1114, 0x1132, 0x113e, 0x114d, 0x1169, 0x117b, - 0x1187, 0x1199, 0x11ab, 0x11b7, 0x11c6, 0x11d5, 0x11fa, 0x120f, - 0x121e, 0x122a, 0x123c, 0x1245, 0x1245, 0x1269, 0x1284, 0x1290, - 0x12a5, 0x12b1, 0x12bd, 0x12cf, 0x12ed, 0x12f9, 0x1308, 0x1320, - 0x1332, 0x1347, 0x1359, 0x136b, 0x1380, 0x138c, 0x139e, 0x13b3, - 0x13c5, 0x13d1, 0x13f3, 0x1408, 0x1423, 0x1435, 0x144d, 0x147b, + 0x108a, 0x10b2, 0x10e0, 0x10f5, 0x110a, 0x111c, 0x112e, 0x1143, + 0x1171, 0x1171, 0x1183, 0x11ae, 0x11cd, 0x11d6, 0x1214, 0x1235, + 0x1247, 0x1253, 0x1265, 0x1271, 0x128f, 0x129b, 0x12aa, 0x12c6, + 0x12d8, 0x12e4, 0x12f6, 0x1308, 0x1314, 0x1323, 0x1332, 0x1357, + 0x136c, 0x137b, 0x1387, 0x1399, 0x13a2, 0x13ba, 0x13de, 0x13f9, + 0x1405, 0x141a, 0x1426, 0x1432, 0x1444, 0x1462, 0x146e, 0x147d, + 0x1495, 0x14a7, 0x14bc, 0x14ce, 0x14e0, 0x14f5, 0x1501, 0x1513, + 0x1528, 0x153a, 0x1546, 0x1568, 0x157d, 0x1598, 0x15aa, 0x15c2, // Entry 100 - 13F - 0x1490, 0x14ab, 0x14d9, 0x14f1, 0x1503, 0x151b, 0x152a, 0x153c, - 0x153c, 0x1551, 0x1563, 0x1572, 0x1581, 0x15a9, 0x15d4, 0x15e6, - 0x15f9, 0x1615, 0x1627, 0x1639, 0x1648, 0x1654, 0x166f, 0x1697, - 0x16a9, 0x16be, 0x16e6, 0x1711, 0x1726, 0x1756, 0x175f, 0x1777, - 0x1777, 0x1780, 0x17ae, 0x17d9, 0x180a, 0x1822, 0x1847, 0x1878, - 0x1899, 0x189f, 0x18ae, 0x18cd, 0x18d9, 0x18eb, 0x18eb, 0x18f4, - 0x190f, 0x1921, 0x194a, 0x1979, 0x199e, 0x19b0, 0x19ce, 0x19dd, - 0x19ef, 0x1a11, 0x1a30, 0x1a30, 0x1a48, 0x1a54, 0x1a66, 0x1a75, + 0x15f0, 0x1605, 0x1620, 0x164e, 0x1698, 0x16b0, 0x16c2, 0x16da, + 0x16e9, 0x16fb, 0x16fb, 0x1710, 0x1722, 0x1731, 0x1740, 0x1768, + 0x1793, 0x17a5, 0x17b8, 0x17d4, 0x17e6, 0x17f8, 0x1807, 0x1813, + 0x182e, 0x1856, 0x1868, 0x187d, 0x18a5, 0x18d0, 0x18e5, 0x1915, + 0x191e, 0x1936, 0x1936, 0x193f, 0x196d, 0x1998, 0x19c9, 0x19e1, + 0x1a06, 0x1a37, 0x1a58, 0x1a5e, 0x1a6d, 0x1a8c, 0x1a98, 0x1aaa, + 0x1aaa, 0x1ab3, 0x1ace, 0x1ae0, 0x1b09, 0x1b38, 0x1b5d, 0x1b6f, + 0x1b8d, 0x1b9c, 0x1bae, 0x1bd0, 0x1bef, 0x1bef, 0x1c07, 0x1c13, // Entry 140 - 17F - 0x1a9a, 0x1aac, 0x1acb, 0x1ae9, 0x1b01, 0x1b0d, 0x1b3e, 0x1b3e, - 0x1b4a, 0x1b56, 0x1b6b, 0x1b7a, 0x1b89, 0x1baa, 0x1bf1, 0x1c06, - 0x1c1e, 0x1c30, 0x1c52, 0x1c71, 0x1c80, 0x1ca2, 0x1cb1, 0x1cc0, - 0x1ccc, 0x1cde, 0x1cea, 0x1d0e, 0x1d26, 0x1d26, 0x1d3e, 0x1d68, - 0x1d7a, 0x1d86, 0x1d9b, 0x1da7, 0x1db9, 0x1dd5, 0x1de4, 0x1e05, - 0x1e11, 0x1e2c, 0x1e4a, 0x1e6f, 0x1e87, 0x1e9f, 0x1eb7, 0x1edf, - 0x1eee, 0x1f07, 0x1f25, 0x1f34, 0x1f4c, 0x1f5e, 0x1f82, 0x1f91, - 0x1fa6, 0x1fb8, 0x1fca, 0x1fdf, 0x1ff1, 0x200f, 0x204d, 0x206b, + 0x1c25, 0x1c34, 0x1c59, 0x1c6b, 0x1c8a, 0x1ca8, 0x1cc0, 0x1ccc, + 0x1cfd, 0x1cfd, 0x1d09, 0x1d15, 0x1d2a, 0x1d39, 0x1d48, 0x1d69, + 0x1db0, 0x1dc5, 0x1ddd, 0x1def, 0x1e11, 0x1e30, 0x1e3f, 0x1e61, + 0x1e70, 0x1e7f, 0x1e8b, 0x1e9d, 0x1ea9, 0x1ecd, 0x1ee5, 0x1ef1, + 0x1f09, 0x1f33, 0x1f45, 0x1f51, 0x1f66, 0x1f72, 0x1f84, 0x1fa0, + 0x1faf, 0x1fd0, 0x1fdc, 0x1ff7, 0x2015, 0x203a, 0x2052, 0x206a, + 0x2082, 0x20aa, 0x20b9, 0x20d2, 0x20f0, 0x20ff, 0x2117, 0x2129, + 0x214d, 0x215c, 0x2171, 0x2183, 0x2195, 0x21aa, 0x21bc, 0x21da, // Entry 180 - 1BF - 0x2089, 0x209b, 0x20b6, 0x20c8, 0x20d4, 0x20f3, 0x210b, 0x2127, - 0x213c, 0x214e, 0x2157, 0x2163, 0x2172, 0x21a3, 0x21ac, 0x21c4, - 0x21d0, 0x21dc, 0x21ee, 0x2203, 0x221b, 0x2227, 0x2233, 0x2242, - 0x2251, 0x2263, 0x226f, 0x2284, 0x22a0, 0x22c5, 0x22d1, 0x22e3, - 0x2301, 0x2313, 0x2328, 0x2334, 0x2346, 0x2346, 0x235b, 0x2370, - 0x237f, 0x2397, 0x23ac, 0x23c7, 0x23d9, 0x23ee, 0x240c, 0x2435, - 0x2450, 0x245c, 0x247b, 0x248d, 0x249c, 0x24ab, 0x24be, 0x24d6, - 0x24f4, 0x2503, 0x2528, 0x253a, 0x2543, 0x2562, 0x256e, 0x259c, + 0x2218, 0x2236, 0x2254, 0x2266, 0x2281, 0x2293, 0x229f, 0x22be, + 0x22d6, 0x22f2, 0x2307, 0x2319, 0x2322, 0x232e, 0x233d, 0x236e, + 0x2377, 0x238f, 0x239b, 0x23a7, 0x23b9, 0x23ce, 0x23e6, 0x23f2, + 0x23fe, 0x240d, 0x241c, 0x242e, 0x243a, 0x244f, 0x246b, 0x2490, + 0x249c, 0x24ae, 0x24cc, 0x24de, 0x24f3, 0x24ff, 0x2511, 0x2511, + 0x2526, 0x253b, 0x254a, 0x2562, 0x2577, 0x2592, 0x25a4, 0x25b9, + 0x25d7, 0x2600, 0x261b, 0x2627, 0x2646, 0x2658, 0x2667, 0x2676, + 0x2689, 0x26a1, 0x26bf, 0x26ce, 0x26f3, 0x2705, 0x270e, 0x272d, // Entry 1C0 - 1FF - 0x25b7, 0x25d2, 0x25e4, 0x25f3, 0x2602, 0x2624, 0x2645, 0x265a, - 0x2675, 0x2699, 0x26b4, 0x26c9, 0x2706, 0x2706, 0x2728, 0x274d, - 0x276b, 0x278f, 0x27a4, 0x27a4, 0x27a4, 0x27d8, 0x27e4, 0x282e, - 0x2849, 0x2849, 0x2849, 0x2849, 0x2849, 0x285b, 0x285b, 0x285b, - 0x285b, 0x285b, 0x287c, 0x288b, 0x288b, 0x288b, 0x288b, 0x28a3, - 0x28a3, 0x28bb, 0x28bb, 0x28d3, 0x28e5, 0x28e5, 0x28e5, 0x28e5, - 0x2910, 0x2910, 0x291c, 0x291c, 0x291c, 0x294a, 0x296c, 0x296c, - 0x2987, 0x2987, 0x299d, 0x299d, 0x29cb, 0x29cb, 0x29ed, 0x2a06, + 0x2739, 0x2767, 0x2782, 0x279d, 0x27af, 0x27be, 0x27cd, 0x27ef, + 0x2810, 0x2825, 0x2840, 0x2864, 0x287f, 0x2894, 0x28cb, 0x2908, + 0x2908, 0x292a, 0x294f, 0x296d, 0x2991, 0x29a6, 0x29a6, 0x29c1, + 0x29f5, 0x2a01, 0x2a4b, 0x2a66, 0x2a7b, 0x2a9c, 0x2a9c, 0x2a9c, + 0x2aae, 0x2aae, 0x2aae, 0x2aae, 0x2aae, 0x2acf, 0x2ade, 0x2af3, + 0x2aff, 0x2aff, 0x2b17, 0x2b17, 0x2b2f, 0x2b2f, 0x2b47, 0x2b59, + 0x2b77, 0x2b89, 0x2b89, 0x2bb4, 0x2bb4, 0x2bc0, 0x2bc0, 0x2bc0, + 0x2bee, 0x2c10, 0x2c10, 0x2c2b, 0x2c34, 0x2c4a, 0x2c4a, 0x2c78, // Entry 200 - 23F - 0x2a22, 0x2a41, 0x2a41, 0x2a41, 0x2a69, 0x2a69, 0x2a69, 0x2a69, - 0x2a7b, 0x2a87, 0x2aa5, 0x2ab7, 0x2ae8, 0x2afd, 0x2afd, 0x2afd, - 0x2afd, 0x2b09, 0x2b09, 0x2b09, 0x2b09, 0x2b09, 0x2b09, 0x2b09, - 0x2b21, 0x2b21, 0x2b21, 0x2b21, 0x2b43, 0x2b43, 0x2b43, 0x2b43, - 0x2b43, 0x2b43, 0x2b62, 0x2b62, 0x2b62, 0x2b77, 0x2b77, 0x2bbe, - 0x2bbe, 0x2bbe, 0x2bbe, 0x2bdd, 0x2be6, 0x2be6, 0x2be6, 0x2be6, - 0x2c20, 0x2c20, 0x2c20, 0x2c32, 0x2c32, 0x2c32, 0x2c32, 0x2c32, - 0x2c50, 0x2c50, 0x2c65, 0x2c8c, 0x2c98, 0x2c98, 0x2c98, 0x2c98, + 0x2c78, 0x2c9a, 0x2cb3, 0x2ccf, 0x2cee, 0x2d06, 0x2d06, 0x2d2e, + 0x2d2e, 0x2d3a, 0x2d3a, 0x2d4c, 0x2d58, 0x2d76, 0x2d88, 0x2db9, + 0x2dce, 0x2dce, 0x2dce, 0x2de0, 0x2dec, 0x2dec, 0x2dfb, 0x2e0d, + 0x2e0d, 0x2e0d, 0x2e0d, 0x2e25, 0x2e25, 0x2e25, 0x2e25, 0x2e47, + 0x2e60, 0x2e60, 0x2e72, 0x2e72, 0x2e72, 0x2e91, 0x2ea9, 0x2ebb, + 0x2ed0, 0x2eee, 0x2f35, 0x2f4d, 0x2f4d, 0x2f68, 0x2f6c, 0x2f75, + 0x2f75, 0x2f75, 0x2f75, 0x2faf, 0x2faf, 0x2faf, 0x2fc1, 0x2fd3, + 0x2feb, 0x2ff7, 0x2ff7, 0x3015, 0x3015, 0x302a, 0x3051, 0x305d, // Entry 240 - 27F - 0x2c98, 0x2cb3, 0x2cd7, 0x2cd7, 0x2d01, 0x2d01, 0x2d01, 0x2d42, - 0x2d42, 0x2d71, 0x2d71, 0x2d9d, 0x2d9d, 0x2dce, 0x2df7, 0x2e3a, - 0x2e74, 0x2ea5, 0x2ed6, 0x2f14, 0x2f3f, 0x2f6a, 0x2f6a, 0x2fa7, - 0x2fa7, 0x2fc9, 0x2fde, 0x300f, 0x3040, 0x305e, 0x305e, 0x3086, - 0x30b1, 0x30e2, -} // Size: 1244 bytes - -var nlLangStr string = "" + // Size: 4999 bytes + 0x305d, 0x305d, 0x3072, 0x3084, 0x309f, 0x30c3, 0x30c3, 0x30ed, + 0x30ed, 0x30ed, 0x312e, 0x313a, 0x3169, 0x3175, 0x31a1, 0x31a1, + 0x31d2, 0x31fb, 0x323e, 0x3278, 0x32a9, 0x32da, 0x3318, 0x3343, + 0x336e, 0x336e, 0x33ab, 0x33ab, 0x33cd, 0x33e2, 0x3413, 0x3444, + 0x3444, 0x3444, 0x346c, 0x3497, 0x34c8, +} // Size: 1250 bytes + +const nlLangStr string = "" + // Size: 4728 bytes "AfarAbchazischAvestischAfrikaansAkanAmhaarsAragoneesArabischAssameesAvar" + "ischAymaraAzerbeidzjaansBasjkiersWit-RussischBulgaarsBislamaBambaraBenga" + "alsTibetaansBretonsBosnischCatalaansTsjetsjeensChamorroCorsicaansCreeTsj" + @@ -18969,49 +22317,45 @@ var nlLangStr string = "" + // Size: 4999 bytes "rs BeloetsjiBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBra" + "huiBodoAkooseBoerjatischBugineesBuluBlinMedumbaCaddoCaribischCayugaAtsam" + "CebuanoChigaChibchaChagataiChuukeesMariChinook JargonChoctawChipewyanChe" + - "rokeeCheyenneSoranîKoptischCapiznonKrim-TataarsKasjoebischDakotaDargwaTa" + - "itaDelawareSlaveyDogribDinkaZarmaDogriNedersorbischDusunDualaMiddelneder" + - "landsJola-FonyiDyulaDazagaEmbuEfikEmilianoOudegyptischEkajukElamitischMi" + - "ddelengelsYupikEwondoExtremeensFangFilipijnsTornedal-FinsFonCajun-FransM" + - "iddelfransOudfransArpitaansNoord-FriesOost-FriesFriulischGaGagaoezischGa" + - "nyuGayoGbayaZoroastrisch DariGe’ezGilberteesGilakiMiddelhoogduitsOudhoog" + - "duitsGoa KonkaniGondiGorontaloGothischGreboOudgrieksZwitserduitsWayuuGur" + - "uneGusiiGwichʼinHaidaHakkaHawaïaansFijisch HindiHiligaynonHettitischHmon" + - "gOppersorbischXiangyuHupaIbanIbibioIlokoIngoesjetischIngrischJamaicaans " + - "CreoolsLojbanNgombaMachameJudeo-PerzischJudeo-ArabischJutlandsKarakalpak" + - "sKabylischKachinJjuKambaKawiKabardischKanembuTyapMakondeKaapverdisch Cre" + - "oolsKenyangKoroKaingangKhasiKhotaneesKoyra ChiiniKhowarKirmanckîKakoKale" + - "njinKimbunduKomi-PermjaaksKonkaniKosraeaansKpelleKaratsjaj-BalkarischKri" + - "oKinaray-aKarelischKurukhShambalaBafiaKölschKoemuksKutenaiLadinoLangiLah" + - "ndaLambaLezgischLingua Franca NovaLigurischLijfsLakotaLombardischMongoLo" + - "ziNoordelijk LuriLetgaalsLuba-LuluaLuisenoLundaLuoMizoLuyiaKlassiek Chin" + - "eesLazischMadoereesMafaMagahiMaithiliMakassaarsMandingoMaaMabaMoksjaMand" + - "arMendeMeruMorisyenMiddeliersMakhuwa-MeettoMeta’Mi’kmaqMinangkabauMantsj" + - "oeMeiteiMohawkMossiWest-MariMundangMeerdere talenCreekMirandeesMarwariMe" + - "ntawaiMyeneErzjaMazanderaniMinnanyuNapolitaansNamaNedersaksischNewariNia" + - "sNiueaansAo NagaNgumbaNgiemboonNogaiOudnoorsNovialN’KoNoord-SothoNuerKla" + - "ssiek NepalbhasaNyamweziNyankoleNyoroNzimaOsageOttomaans-TurksPangasinan" + - "PahlaviPampangaPapiamentsPalausPicardischPennsylvania-DuitsPlautdietschO" + - "udperzischPaltsischFoenicischPiëmonteesPontischPohnpeiaansOudpruisischOu" + - "dprovençaalsK’iche’KichwaRajasthaniRapanuiRarotonganRomagnolRiffijnsRomb" + - "oRomaniRotumaansRoetheensRovianaAroemeensRwaSandaweJakoetsSamaritaans-Ar" + - "ameesSamburuSasakSantaliSaurashtraNgambaySanguSiciliaansSchotsSassareesP" + - "ahlavaniSenecaSenaSeriSelkoepsKoyraboro SenniOudiersSamogitischTashelhiy" + - "tShanTsjadisch ArabischSidamoSilezisch DuitsSelayarZuid-SamischLule-Sami" + - "schInari-SamischSkolt-SamischSoninkeSogdischSranantongoSererSahoSaterfri" + - "esSukumaSoesoeSoemerischShimaoreKlassiek SyrischSyrischSilezischTuluTimn" + - "eTesoTerenoTetunTigreTivTokelausTsakhurKlingonTlingitTalyshTamashekNyasa" + - " TongaTok PisinTuroyoTarokoTsakonischTsimshianMoslim TatToemboekaTuvalua" + - "ansTasawaqToevaansTamazight (Centraal-Marokko)OedmoertsOegaritischUmbund" + - "uRootVaiVenetiaansWepsischWest-VlaamsOpperfrankischVotischVõroVunjoWalse" + - "rWolayttaWarayWashoWarlpiriWuyuKalmuksMingreelsSogaYaoYapeesYangbenYemba" + - "NheengatuKantoneesZapotecBlissymbolenZeeuwsZenagaStandaard Marokkaanse T" + - "amazightZunigeen linguïstische inhoudZazamodern standaard ArabischOosten" + - "rijks DuitsZwitsers HoogduitsAustralisch EngelsCanadees EngelsBrits Enge" + - "lsAmerikaans EngelsLatijns-Amerikaans SpaansEuropees SpaansMexicaans Spa" + - "ansCanadees FransZwitsers FransVlaamsBraziliaans PortugeesEuropees Portu" + - "geesServo-KroatischCongo Swahilivereenvoudigd Chineestraditioneel Chinee" + - "s" + "rokeeCheyenneSoranîKoptischCapiznonKrim-TataarsSeychellencreoolsKasjoebi" + + "schDakotaDargwaTaitaDelawareSlaveyDogribDinkaZarmaDogriNedersorbischDusu" + + "nDualaMiddelnederlandsJola-FonyiDyulaDazagaEmbuEfikEmilianoOudegyptischE" + + "kajukElamitischMiddelengelsYupikEwondoExtremeensFangFilipijnsTornedal-Fi" + + "nsFonCajun-FransMiddelfransOudfransArpitaansNoord-FriesOost-FriesFriulis" + + "chGaGagaoezischGanyuGayoGbayaZoroastrisch DariGe’ezGilberteesGilakiMidde" + + "lhoogduitsOudhoogduitsGoa KonkaniGondiGorontaloGothischGreboOudgrieksZwi" + + "tserduitsWayuuGuruneGusiiGwichʼinHaidaHakkaHawaïaansFijisch HindiHiligay" + + "nonHettitischHmongOppersorbischXiangyuHupaIbanIbibioIlokoIngoesjetischIn" + + "grischJamaicaans CreoolsLojbanNgombaMachameJudeo-PerzischJudeo-ArabischJ" + + "utlandsKarakalpaksKabylischKachinJjuKambaKawiKabardischKanembuTyapMakond" + + "eKaapverdisch CreoolsKenyangKoroKaingangKhasiKhotaneesKoyra ChiiniKhowar" + + "KirmanckîKakoKalenjinKimbunduKomi-PermjaaksKonkaniKosraeaansKpelleKarats" + + "jaj-BalkarischKrioKinaray-aKarelischKurukhShambalaBafiaKölschKoemuksKute" + + "naiLadinoLangiLahndaLambaLezgischLingua Franca NovaLigurischLijfsLakotaL" + + "ombardischMongoLoziNoordelijk LuriLetgaalsLuba-LuluaLuisenoLundaLuoMizoL" + + "uyiaKlassiek ChineesLazischMadoereesMafaMagahiMaithiliMakassaarsMandingo" + + "MaaMabaMoksjaMandarMendeMeruMorisyenMiddeliersMakhuwa-MeettoMeta’Mi’kmaq" + + "MinangkabauMantsjoeMeiteiMohawkMossiWest-MariMundangMeerdere talenCreekM" + + "irandeesMarwariMentawaiMyeneErzjaMazanderaniMinnanyuNapolitaansNamaNeder" + + "saksischNewariNiasNiueaansAo NagaNgumbaNgiemboonNogaiOudnoorsNovialN’KoN" + + "oord-SothoNuerKlassiek NepalbhasaNyamweziNyankoleNyoroNzimaOsageOttomaan" + + "s-TurksPangasinanPahlaviPampangaPapiamentsPalausPicardischNigeriaans Pid" + + "ginPennsylvania-DuitsPlautdietschOudperzischPaltsischFoenicischPiëmontee" + + "sPontischPohnpeiaansOudpruisischOudprovençaalsK’iche’KichwaRajasthaniRap" + + "anuiRarotonganRomagnolRiffijnsRomboRomaniRotumaansRoetheensRovianaAroeme" + + "ensRwaSandaweJakoetsSamaritaans-ArameesSamburuSasakSantaliSaurashtraNgam" + + "baySanguSiciliaansSchotsSassareesPahlavaniSenecaSenaSeriSelkoepsKoyrabor" + + "o SenniOudiersSamogitischTashelhiytShanTsjadisch ArabischSidamoSilezisch" + + " DuitsSelayarZuid-SamischLule-SamischInari-SamischSkolt-SamischSoninkeSo" + + "gdischSranantongoSererSahoSaterfriesSukumaSoesoeSoemerischShimaoreKlassi" + + "ek SyrischSyrischSilezischTuluTimneTesoTerenoTetunTigreTivTokelausTsakhu" + + "rKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoTarokoTsakonischT" + + "simshianMoslim TatToemboekaTuvaluaansTasawaqToevaansTamazight (Centraal-" + + "Marokko)OedmoertsOegaritischUmbunduRootVaiVenetiaansWepsischWest-VlaamsO" + + "pperfrankischVotischVõroVunjoWalserWolayttaWarayWashoWarlpiriWuyuKalmuks" + + "MingreelsSogaYaoYapeesYangbenYembaNheengatuKantoneesZapotecBlissymbolenZ" + + "eeuwsZenagaStandaard Marokkaanse TamazightZunigeen linguïstische inhoudZ" + + "azaServo-Kroatisch" var nlLangIdx = []uint16{ // 610 elements // Entry 0 - 3F @@ -19043,514 +22387,526 @@ var nlLangIdx = []uint16{ // 610 elements 0x0586, 0x0598, 0x05a0, 0x05a5, 0x05a9, 0x05b2, 0x05b9, 0x05c3, // Entry C0 - FF 0x05ca, 0x05d8, 0x05e1, 0x05e7, 0x05ee, 0x05f8, 0x05fe, 0x0605, - 0x0617, 0x061d, 0x0630, 0x0642, 0x0645, 0x065c, 0x0665, 0x066b, - 0x0671, 0x067a, 0x0682, 0x0688, 0x068c, 0x0692, 0x069c, 0x06a6, - 0x06aa, 0x06af, 0x06b5, 0x06b9, 0x06be, 0x06c4, 0x06d5, 0x06dd, - 0x06e2, 0x06e6, 0x06ec, 0x06ef, 0x06f6, 0x0701, 0x070a, 0x070e, - 0x0714, 0x0718, 0x071e, 0x0729, 0x0731, 0x0735, 0x0739, 0x0740, - 0x0745, 0x074e, 0x0754, 0x0759, 0x0760, 0x0765, 0x076c, 0x0774, - 0x077c, 0x0780, 0x078e, 0x0795, 0x079e, 0x07a6, 0x07ae, 0x07b5, + 0x0617, 0x0617, 0x061d, 0x0630, 0x0642, 0x0645, 0x065c, 0x0665, + 0x066b, 0x0671, 0x067a, 0x0682, 0x0688, 0x068c, 0x0692, 0x069c, + 0x06a6, 0x06aa, 0x06af, 0x06b5, 0x06b9, 0x06be, 0x06c4, 0x06d5, + 0x06dd, 0x06e2, 0x06e6, 0x06ec, 0x06ef, 0x06f6, 0x0701, 0x070a, + 0x070e, 0x0714, 0x0718, 0x071e, 0x0729, 0x0731, 0x0735, 0x0739, + 0x0740, 0x0745, 0x074e, 0x0754, 0x0759, 0x0760, 0x0765, 0x076c, + 0x0774, 0x077c, 0x0780, 0x078e, 0x0795, 0x079e, 0x07a6, 0x07ae, // Entry 100 - 13F - 0x07bd, 0x07c5, 0x07d1, 0x07dc, 0x07e2, 0x07e8, 0x07ed, 0x07f5, - 0x07fb, 0x0801, 0x0806, 0x080b, 0x0810, 0x081d, 0x0822, 0x0827, - 0x0837, 0x0841, 0x0846, 0x084c, 0x0850, 0x0854, 0x085c, 0x0868, - 0x086e, 0x0878, 0x0884, 0x0889, 0x088f, 0x0899, 0x089d, 0x08a6, - 0x08b3, 0x08b6, 0x08c1, 0x08cc, 0x08d4, 0x08dd, 0x08e8, 0x08f2, - 0x08fb, 0x08fd, 0x0908, 0x090d, 0x0911, 0x0916, 0x0927, 0x092e, - 0x0938, 0x093e, 0x094d, 0x0959, 0x0964, 0x0969, 0x0972, 0x097a, - 0x097f, 0x0988, 0x0994, 0x0999, 0x099f, 0x09a4, 0x09ad, 0x09b2, + 0x07b5, 0x07bd, 0x07c5, 0x07d1, 0x07e2, 0x07ed, 0x07f3, 0x07f9, + 0x07fe, 0x0806, 0x080c, 0x0812, 0x0817, 0x081c, 0x0821, 0x082e, + 0x0833, 0x0838, 0x0848, 0x0852, 0x0857, 0x085d, 0x0861, 0x0865, + 0x086d, 0x0879, 0x087f, 0x0889, 0x0895, 0x089a, 0x08a0, 0x08aa, + 0x08ae, 0x08b7, 0x08c4, 0x08c7, 0x08d2, 0x08dd, 0x08e5, 0x08ee, + 0x08f9, 0x0903, 0x090c, 0x090e, 0x0919, 0x091e, 0x0922, 0x0927, + 0x0938, 0x093f, 0x0949, 0x094f, 0x095e, 0x096a, 0x0975, 0x097a, + 0x0983, 0x098b, 0x0990, 0x0999, 0x09a5, 0x09aa, 0x09b0, 0x09b5, // Entry 140 - 17F - 0x09b7, 0x09c1, 0x09ce, 0x09d8, 0x09e2, 0x09e7, 0x09f4, 0x09fb, - 0x09ff, 0x0a03, 0x0a09, 0x0a0e, 0x0a1b, 0x0a23, 0x0a35, 0x0a3b, - 0x0a41, 0x0a48, 0x0a56, 0x0a64, 0x0a6c, 0x0a77, 0x0a80, 0x0a86, - 0x0a89, 0x0a8e, 0x0a92, 0x0a9c, 0x0aa3, 0x0aa7, 0x0aae, 0x0ac2, - 0x0ac9, 0x0acd, 0x0ad5, 0x0ada, 0x0ae3, 0x0aef, 0x0af5, 0x0aff, - 0x0b03, 0x0b0b, 0x0b13, 0x0b21, 0x0b28, 0x0b32, 0x0b38, 0x0b4c, - 0x0b50, 0x0b59, 0x0b62, 0x0b68, 0x0b70, 0x0b75, 0x0b7c, 0x0b83, - 0x0b8a, 0x0b90, 0x0b95, 0x0b9b, 0x0ba0, 0x0ba8, 0x0bba, 0x0bc3, + 0x09be, 0x09c3, 0x09c8, 0x09d2, 0x09df, 0x09e9, 0x09f3, 0x09f8, + 0x0a05, 0x0a0c, 0x0a10, 0x0a14, 0x0a1a, 0x0a1f, 0x0a2c, 0x0a34, + 0x0a46, 0x0a4c, 0x0a52, 0x0a59, 0x0a67, 0x0a75, 0x0a7d, 0x0a88, + 0x0a91, 0x0a97, 0x0a9a, 0x0a9f, 0x0aa3, 0x0aad, 0x0ab4, 0x0ab8, + 0x0abf, 0x0ad3, 0x0ada, 0x0ade, 0x0ae6, 0x0aeb, 0x0af4, 0x0b00, + 0x0b06, 0x0b10, 0x0b14, 0x0b1c, 0x0b24, 0x0b32, 0x0b39, 0x0b43, + 0x0b49, 0x0b5d, 0x0b61, 0x0b6a, 0x0b73, 0x0b79, 0x0b81, 0x0b86, + 0x0b8d, 0x0b94, 0x0b9b, 0x0ba1, 0x0ba6, 0x0bac, 0x0bb1, 0x0bb9, // Entry 180 - 1BF - 0x0bc8, 0x0bce, 0x0bd9, 0x0bde, 0x0be2, 0x0bf1, 0x0bf9, 0x0c03, - 0x0c0a, 0x0c0f, 0x0c12, 0x0c16, 0x0c1b, 0x0c2b, 0x0c32, 0x0c3b, - 0x0c3f, 0x0c45, 0x0c4d, 0x0c57, 0x0c5f, 0x0c62, 0x0c66, 0x0c6c, - 0x0c72, 0x0c77, 0x0c7b, 0x0c83, 0x0c8d, 0x0c9b, 0x0ca2, 0x0cab, - 0x0cb6, 0x0cbe, 0x0cc4, 0x0cca, 0x0ccf, 0x0cd8, 0x0cdf, 0x0ced, - 0x0cf2, 0x0cfb, 0x0d02, 0x0d0a, 0x0d0f, 0x0d14, 0x0d1f, 0x0d27, - 0x0d32, 0x0d36, 0x0d43, 0x0d49, 0x0d4d, 0x0d55, 0x0d5c, 0x0d62, - 0x0d6b, 0x0d70, 0x0d78, 0x0d7e, 0x0d84, 0x0d8f, 0x0d93, 0x0da6, + 0x0bcb, 0x0bd4, 0x0bd9, 0x0bdf, 0x0bea, 0x0bef, 0x0bf3, 0x0c02, + 0x0c0a, 0x0c14, 0x0c1b, 0x0c20, 0x0c23, 0x0c27, 0x0c2c, 0x0c3c, + 0x0c43, 0x0c4c, 0x0c50, 0x0c56, 0x0c5e, 0x0c68, 0x0c70, 0x0c73, + 0x0c77, 0x0c7d, 0x0c83, 0x0c88, 0x0c8c, 0x0c94, 0x0c9e, 0x0cac, + 0x0cb3, 0x0cbc, 0x0cc7, 0x0ccf, 0x0cd5, 0x0cdb, 0x0ce0, 0x0ce9, + 0x0cf0, 0x0cfe, 0x0d03, 0x0d0c, 0x0d13, 0x0d1b, 0x0d20, 0x0d25, + 0x0d30, 0x0d38, 0x0d43, 0x0d47, 0x0d54, 0x0d5a, 0x0d5e, 0x0d66, + 0x0d6d, 0x0d73, 0x0d7c, 0x0d81, 0x0d89, 0x0d8f, 0x0d95, 0x0da0, // Entry 1C0 - 1FF - 0x0dae, 0x0db6, 0x0dbb, 0x0dc0, 0x0dc5, 0x0dd4, 0x0dde, 0x0de5, - 0x0ded, 0x0df7, 0x0dfd, 0x0e07, 0x0e19, 0x0e25, 0x0e30, 0x0e39, - 0x0e43, 0x0e4e, 0x0e56, 0x0e61, 0x0e6d, 0x0e7c, 0x0e87, 0x0e8d, - 0x0e97, 0x0e9e, 0x0ea8, 0x0eb0, 0x0eb8, 0x0ebd, 0x0ec3, 0x0ecc, - 0x0ed5, 0x0edc, 0x0ee5, 0x0ee8, 0x0eef, 0x0ef6, 0x0f09, 0x0f10, - 0x0f15, 0x0f1c, 0x0f26, 0x0f2d, 0x0f32, 0x0f3c, 0x0f42, 0x0f4b, - 0x0f54, 0x0f5a, 0x0f5e, 0x0f62, 0x0f6a, 0x0f79, 0x0f80, 0x0f8b, - 0x0f95, 0x0f99, 0x0fab, 0x0fb1, 0x0fc0, 0x0fc7, 0x0fd3, 0x0fdf, + 0x0da4, 0x0db7, 0x0dbf, 0x0dc7, 0x0dcc, 0x0dd1, 0x0dd6, 0x0de5, + 0x0def, 0x0df6, 0x0dfe, 0x0e08, 0x0e0e, 0x0e18, 0x0e29, 0x0e3b, + 0x0e47, 0x0e52, 0x0e5b, 0x0e65, 0x0e70, 0x0e78, 0x0e83, 0x0e8f, + 0x0e9e, 0x0ea9, 0x0eaf, 0x0eb9, 0x0ec0, 0x0eca, 0x0ed2, 0x0eda, + 0x0edf, 0x0ee5, 0x0eee, 0x0ef7, 0x0efe, 0x0f07, 0x0f0a, 0x0f11, + 0x0f18, 0x0f2b, 0x0f32, 0x0f37, 0x0f3e, 0x0f48, 0x0f4f, 0x0f54, + 0x0f5e, 0x0f64, 0x0f6d, 0x0f76, 0x0f7c, 0x0f80, 0x0f84, 0x0f8c, + 0x0f9b, 0x0fa2, 0x0fad, 0x0fb7, 0x0fbb, 0x0fcd, 0x0fd3, 0x0fe2, // Entry 200 - 23F - 0x0fec, 0x0ff9, 0x1000, 0x1008, 0x1013, 0x1018, 0x101c, 0x1026, - 0x102c, 0x1032, 0x103c, 0x1044, 0x1054, 0x105b, 0x1064, 0x1068, - 0x106d, 0x1071, 0x1077, 0x107c, 0x1081, 0x1084, 0x108c, 0x1093, - 0x109a, 0x10a1, 0x10a7, 0x10af, 0x10ba, 0x10c3, 0x10c9, 0x10cf, - 0x10d9, 0x10e2, 0x10ec, 0x10f5, 0x10ff, 0x1106, 0x110e, 0x112a, - 0x1133, 0x113e, 0x1145, 0x1149, 0x114c, 0x1156, 0x115e, 0x1169, - 0x1177, 0x117e, 0x1183, 0x1188, 0x118e, 0x1196, 0x119b, 0x11a0, - 0x11a8, 0x11ac, 0x11b3, 0x11bc, 0x11c0, 0x11c3, 0x11c9, 0x11d0, + 0x0fe9, 0x0ff5, 0x1001, 0x100e, 0x101b, 0x1022, 0x102a, 0x1035, + 0x103a, 0x103e, 0x1048, 0x104e, 0x1054, 0x105e, 0x1066, 0x1076, + 0x107d, 0x1086, 0x108a, 0x108f, 0x1093, 0x1099, 0x109e, 0x10a3, + 0x10a6, 0x10ae, 0x10b5, 0x10bc, 0x10c3, 0x10c9, 0x10d1, 0x10dc, + 0x10e5, 0x10eb, 0x10f1, 0x10fb, 0x1104, 0x110e, 0x1117, 0x1121, + 0x1128, 0x1130, 0x114c, 0x1155, 0x1160, 0x1167, 0x116b, 0x116e, + 0x1178, 0x1180, 0x118b, 0x1199, 0x11a0, 0x11a5, 0x11aa, 0x11b0, + 0x11b8, 0x11bd, 0x11c2, 0x11ca, 0x11ce, 0x11d5, 0x11de, 0x11e2, // Entry 240 - 27F - 0x11d5, 0x11de, 0x11e7, 0x11ee, 0x11fa, 0x1200, 0x1206, 0x1225, - 0x1229, 0x1243, 0x1247, 0x1260, 0x1260, 0x1271, 0x1283, 0x1295, - 0x12a4, 0x12b0, 0x12c1, 0x12da, 0x12e9, 0x12f9, 0x12f9, 0x1307, - 0x1315, 0x1315, 0x131b, 0x1330, 0x1342, 0x1342, 0x1351, 0x135e, - 0x1373, 0x1387, + 0x11e5, 0x11eb, 0x11f2, 0x11f7, 0x1200, 0x1209, 0x1210, 0x121c, + 0x1222, 0x1228, 0x1247, 0x124b, 0x1265, 0x1269, 0x1269, 0x1269, + 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, + 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, + 0x1269, 0x1278, } // Size: 1244 bytes -var noLangStr string = "" + // Size: 4987 bytes - "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamiskavarisk" + - "aymaraaserbajdsjanskbasjkirskhviterussiskbulgarskbislamabambarabengaliti" + - "betanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcreetsjekkis" + - "kkirkeslavisktsjuvasjiskwalisiskdansktyskdivehidzongkhaewegreskengelskes" + - "perantospanskestiskbaskiskpersiskfulanifinskfijianskfærøyskfranskvestfri" + - "siskirskskotsk gæliskgalisiskguaranigujaratimanskhausahebraiskhindihiri " + - "motukroatiskhaitiskungarskarmenskhererointerlinguaindonesiskinterlinguei" + - "bosichuan-yiinupiakidoislandskitalienskinuktitutjapanskjavanesiskgeorgis" + - "kkikongokikuyukuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurikasjm" + - "irikurdiskkomikorniskkirgisisklatinluxemburgskgandalimburgisklingalalaot" + - "isklitauiskluba-katangalatviskgassiskmarshallesiskmaorimakedonskmalayala" + - "mmongolskmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalindongan" + - "ederlandsknorsk nynorsknorsk bokmålsør-ndebelenavajonyanjaoksitanskojibw" + - "aoromooriyaossetiskpunjabipalipolskpashtoportugisiskquechuaretoromanskru" + - "ndirumenskrussiskkinyarwandasanskritsardinsksindhinordsamisksangosingale" + - "siskslovakiskslovensksamoanskshonasomalialbanskserbiskswatisør-sothosund" + - "anesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensksetswanato" + - "ngansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskvendaviet" + - "namesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzuluachinesi" + - "skacoliadangmeadyghetunisisk-arabiskafrihiliaghemainuakkadiskalabamaaleu" + - "tiskgegisk-albansksøraltaiskgammelengelskangikaarameiskaraukanskaraonaar" + - "apahoalgerisk arabiskarawakmarokkansk-arabiskegyptisk arabiskasuamerikan" + - "sk tegnspråkasturiskkotavaawadhibaluchibalinesiskbairiskbasabamunbatak t" + - "obaghomalabejabembabetawibenabafutbadagavestbalutsjibhojpuribikolbiniban" + - "jarkomsiksikabishnupriyabakhtiaribrajbrahuibodoakoseburiatbuginesiskbulu" + - "blinmedumbacaddokaribiskcayugaatsamcebuanskkigachibchachagataichuukesisk" + - "marichinookchoctawchipewianskcherokesiskcheyennekurdisk (sorani)koptiskk" + - "apizkrimtatariskkasjubiskdakotadargwataitadelawareslaviskdogribdinkazarm" + - "adogrilavsorbisksentraldusundualamellomnederlandskjola-fonyidyuladazagak" + - "iembuefikemilianskgammelegyptiskekajukelamittiskmellomengelsksentralyupi" + - "kewondoekstremaduranskfangfilippinsktornedalsfinskfonkajunfranskmellomfr" + - "anskgammelfranskarpitansknordfrisiskøstfrisiskfriulianskgagagausiskganga" + - "yogbayazoroastrisk darigeskiribatiskgilekimellomhøytyskgammelhøytyskgoan" + - "sk konkanigondigorontalogotiskgrebogammelgresksveitsertyskwayuufrafragus" + - "iigwichinhaidahakkahawaiiskfijiansk hindihiligaynonhettittiskhmonghøysor" + - "biskxianghupaibanibibioilokoingusjiskingriskjamaicansk kreolengelsklojba" + - "nngombamachamejødepersiskjødearabiskjyskkarakalpakiskkabylskkachinjjukam" + - "bakawikabardiskkanembutyapmakondekappverdiskkenyangkorokaingangkhasikhot" + - "anesiskkoyra chiinikhowarkirmanckikakokalenjinkimbundukomipermjakiskkonk" + - "anikosraeanskkpellekarachay-balkarkriokinaray-akarelskkurukhshambalabafi" + - "akølnskkumykkutenailadinsklangilahndalambalezghianlingua franca novaligu" + - "risklivisklakotalombardiskmongolozinord-lurilatgalliskluba-lulualuisenol" + - "undaluomizoluhyaklassisk kinesisklaziskmaduresiskmafamagahimaithilimakas" + - "armandingomasaimabamokshamandarmendemerumauritisk-kreolskmellomirskmakhu" + - "wa-meettometa’micmacminangkabaumandsjumanipurimohawkmossivestmariskmunda" + - "ngflere språkcreekmirandesiskmarwarimentawaimyeneerzyamazandaraniminnann" + - "apolitansknamanedertysknewariniasniueanskao nagakwasiongiemboonnogaigamm" + - "elnorsknovialnʼkonord-sothonuerklassisk newarinyamwezinyankolenyoronzima" + - "osageottomansk tyrkiskpangasinanpahlavipampangapapiamentopalauiskpikardi" + - "skpennsylvaniatyskplautdietschgammelpersiskpalatintyskfønikiskpiemontesi" + - "skpontiskponapiskprøyssiskgammelprovençalskquichékichwa (Chimborazo-høyl" + - "andet)rajasthanirapanuirarotonganskromagnolskriffromboromanirotumanskrus" + - "inskrovianaaromanskrwasandawejakutsksamaritansk arameisksamburusasaksant" + - "alisaurashtrangambaysangusicilianskskotsksassarisk sardinsksørkurdisksen" + - "ecasenaseriselkupiskkoyraboro sennigammelirsksamogitisktachelhitshanTsja" + - "d-arabisksidamolavschlesiskselayarsørsamisklulesamiskenaresamiskskoltesa" + - "misksoninkesogdisksranan tongoserersahosaterfrisisksukumasususumeriskkom" + - "oriskklassisk syrisksyriskschlesisktulutemnetesoterenotetumtigrétivtokel" + - "autsakhurskklingontlingittalyshtamasjeknyasa-tongansktok pisinturoyotaro" + - "kotsakonisktsimshianmuslimsk tattumbukatuvalutasawaqtuvinisksentralmarok" + - "kansk tamazightudmurtugaritiskumbundurotvaivenetianskvepsiskvestflamskMa" + - "in-frankiskvotisksørestiskvunjowalserwalamowaraywashowarlpiriwukalmykmin" + - "grelsksogayaoyapesiskyangbenyembanheengatukantonesiskzapotecblissymboler" + - "zeeuwszenagastandard marrokansk tamazightzuniuten språklig innholdzazamo" + - "derne standard arabiskøsterriksk tysksveitsisk høytyskaustralsk engelskc" + - "anadisk engelskbritisk engelskamerikansk engelsklatinamerikansk spanskeu" + - "ropeisk spanskmeksikansk spanskcanadisk fransksveitsisk fransknedersaksi" + - "skflamskbrasiliansk portugisiskeuropeisk portugisiskmoldovskserbokroatis" + - "kkongolesisk swahiliforenklet kinesisktradisjonell kinesisk" - -var noLangIdx = []uint16{ // 610 elements +const noLangStr string = "" + // Size: 4834 bytes + "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamesiskavari" + + "skaymaraaserbajdsjanskbasjkirskhviterussiskbulgarskbislamabambarabengali" + + "tibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcreetsjekk" + + "iskkirkeslavisktsjuvasjiskwalisiskdansktyskdhivehidzongkhaewegreskengels" + + "kesperantospanskestiskbaskiskpersiskfulfuldefinskfijianskfærøyskfranskve" + + "stfrisiskirskskotsk-gæliskgalisiskguaranigujaratimanskhausahebraiskhindi" + + "hiri motukroatiskhaitiskungarskarmenskhererointerlinguaindonesiskinterli" + + "ngueibosichuan-yiinupiakidoislandskitalienskinuittiskjapanskjavanesiskge" + + "orgiskkikongokikuyukuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanuri" + + "kasjmirikurdiskkomikorniskkirgisisklatinluxemburgskgandalimburgsklingala" + + "laotisklitauiskluba-katangalatviskgassiskmarshallesiskmaorimakedonskmala" + + "yalammongolskmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalindo" + + "nganederlandsknorsk nynorsknorsk bokmålsør-ndebelenavajonyanjaoksitansko" + + "jibwaoromooriyaossetiskpunjabipalipolskpashtoportugisiskquechuaretoroman" + + "skrundirumenskrussiskkinyarwandasanskritsardisksindhinordsamisksangosing" + + "alesiskslovakiskslovensksamoanskshonasomalialbanskserbiskswatisør-sothos" + + "undanesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensksetswan" + + "atongansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskvendav" + + "ietnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzuluachin" + + "esiskacoliadangmeadygeisktunisisk-arabiskafrihiliaghemainuakkadiskalabam" + + "aaleutiskgegisk-albansksøraltaiskgammelengelskangikaarameiskmapudungunar" + + "aonaarapahoalgerisk arabiskarawakmarokkansk-arabiskegyptisk arabiskasuam" + + "erikansk tegnspråkasturiskkotavaavadhibaluchibalinesiskbairiskbasaabamun" + + "batak tobaghomalabejabembabetawibenabafutbadagavestbalutsjibhojpuribikol" + + "binibanjarkomsiksikabishnupriyabakhtiaribrajbrahuibodoakoseburjatiskbugi" + + "nesiskbulublinmedumbacaddokaribiskcayugaatsamcebuanskkigachibchatsjagata" + + "ichuukesiskmarichinookchoctawchipewianskcherokesiskcheyennekurdisk (sora" + + "ni)koptiskkapizkrimtatariskseselwakasjubiskdakotadargwataitadelawareslav" + + "eydogribdinkazarmadogrilavsorbisksentraldusundualamellomnederlandskjola-" + + "fonyidyuladazagakiembuefikemilianskgammelegyptiskekajukelamittiskmellome" + + "ngelsksentralyupikewondoekstremaduranskfangfilipinotornedalsfinskfoncaju" + + "nfranskmellomfranskgammelfranskarpitansknordfrisiskøstfrisiskfriulianskg" + + "agagausiskgangayogbayazoroastrisk darigeezkiribatiskgilekimellomhøytyskg" + + "ammelhøytyskgoansk konkanigondigorontalogotiskgrebogammelgresksveitserty" + + "skwayuufrafragusiigwichinhaidahakkahawaiiskfijiansk hindihiligaynonhetti" + + "ttiskhmonghøysorbiskxianghupaibanibibioilokoingusjiskingriskjamaicansk k" + + "reolengelsklojbanngombamachamejødepersiskjødearabiskjyskkarakalpakiskkab" + + "ylskkachinjjukambakawikabardiskkanembutyapmakondekappverdiskkenyangkorok" + + "aingangkhasikhotanesiskkoyra chiinikhowarkirmanckikakokalenjinkimbunduko" + + "mipermjakiskkonkanikosraeanskkpellekaratsjajbalkarskkriokinaray-akarelsk" + + "kurukhshambalabafiakølnskkumykiskkutenailadinsklangilahndalambalesgiskli" + + "ngua franca novaligurisklivisklakotalombardiskmongolozinord-lurilatgalli" + + "skluba-lulualuisenolundaluomizoluhyaklassisk kinesisklaziskmaduresiskmaf" + + "amagahimaithilimakasarmandingomasaimabamoksjamandarmendemerumauritisk-kr" + + "eolskmellomirskmakhuwa-meettometa’micmacminangkabaumandsjumanipurimohawk" + + "mossivestmariskmundangflere språkcreekmirandesiskmarwarimentawaimyeneerz" + + "iamazandaraniminnannapolitansknamanedertysknewariniasniueanskao nagakwas" + + "iongiemboonnogaiskgammelnorsknovialnʼkonord-sothonuerklassisk newarinyam" + + "wezinyankolenyoronzimaosageottomansk tyrkiskpangasinanpahlavipampangapap" + + "iamentopalauiskpikardisknigeriansk pidginspråkpennsylvaniatyskplautdiets" + + "chgammelpersiskpalatintyskfønikiskpiemontesiskpontiskponapiskprøyssiskga" + + "mmelprovençalskquichékichwa (Chimborazo-høylandet)rajasthanirapanuirarot" + + "onganskromagnolskriffromboromanirotumanskrusinskrovianaaromanskrwasandaw" + + "ejakutisksamaritansk arameisksamburusasaksantalisaurashtrangambaysangusi" + + "cilianskskotsksassaresisk sardisksørkurdisksenecasenaseriselkupiskkoyrab" + + "oro sennigammelirsksamogitisktachelhitshantsjadisk arabisksidamolavschle" + + "siskselayarsørsamisklulesamiskenaresamiskskoltesamisksoninkesogdisksrana" + + "nserersahosaterfrisisksukumasususumeriskkomoriskklassisk syriskgammelsyr" + + "iskschlesisktulutemnetesoterenotetumtigrétivtokelauisktsakhurskklingontl" + + "ingittalysjtamasjeknyasa-tongansktok pisinturoyotarokotsakonisktsimshian" + + "muslimsk tattumbukatuvalsktasawaqtuvinsksentralmarokkansk tamazightudmur" + + "tiskugaritiskumbundurotvaivenetianskvepsiskvestflamskMain-frankiskvotisk" + + "sørestiskvunjowalsertyskwolayttawaray-waraywashowarlpiriwukalmukkiskming" + + "relsksogayaoyapesiskyangbenyembanheengatukantonesiskzapotekiskblissymbol" + + "erzeeuwszenagastandard marrokansk tamazightzuniuten språklig innholdzaza" + + "iskmoderne standardarabisknedersaksiskflamskmoldovskserbokroatiskkongole" + + "sisk swahiliforenklet kinesisktradisjonell kinesisk" + +var noLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032, - 0x0039, 0x0041, 0x0048, 0x004e, 0x005c, 0x0065, 0x0071, 0x0079, - 0x0080, 0x0087, 0x008e, 0x0097, 0x009f, 0x00a6, 0x00af, 0x00ba, - 0x00c2, 0x00cc, 0x00d0, 0x00d9, 0x00e5, 0x00f0, 0x00f8, 0x00fd, - 0x0101, 0x0107, 0x010f, 0x0112, 0x0117, 0x011e, 0x0127, 0x012d, - 0x0133, 0x013a, 0x0141, 0x0147, 0x014c, 0x0154, 0x015d, 0x0163, - 0x016e, 0x0172, 0x0180, 0x0188, 0x018f, 0x0197, 0x019c, 0x01a1, - 0x01a9, 0x01ae, 0x01b7, 0x01bf, 0x01c6, 0x01cd, 0x01d4, 0x01da, + 0x0039, 0x0043, 0x004a, 0x0050, 0x005e, 0x0067, 0x0073, 0x007b, + 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00bc, + 0x00c4, 0x00ce, 0x00d2, 0x00db, 0x00e7, 0x00f2, 0x00fa, 0x00ff, + 0x0103, 0x010a, 0x0112, 0x0115, 0x011a, 0x0121, 0x012a, 0x0130, + 0x0136, 0x013d, 0x0144, 0x014c, 0x0151, 0x0159, 0x0162, 0x0168, + 0x0173, 0x0177, 0x0185, 0x018d, 0x0194, 0x019c, 0x01a1, 0x01a6, + 0x01ae, 0x01b3, 0x01bc, 0x01c4, 0x01cb, 0x01d2, 0x01d9, 0x01df, // Entry 40 - 7F - 0x01e5, 0x01ef, 0x01fa, 0x01fd, 0x0207, 0x020e, 0x0211, 0x0219, - 0x0222, 0x022b, 0x0232, 0x023c, 0x0244, 0x024b, 0x0251, 0x0259, - 0x0262, 0x026d, 0x0272, 0x0279, 0x0281, 0x0287, 0x028f, 0x0296, - 0x029a, 0x02a1, 0x02aa, 0x02af, 0x02ba, 0x02bf, 0x02c9, 0x02d0, - 0x02d7, 0x02df, 0x02eb, 0x02f2, 0x02f9, 0x0306, 0x030b, 0x0314, - 0x031d, 0x0325, 0x032c, 0x0334, 0x033d, 0x0346, 0x034b, 0x0357, - 0x035d, 0x0363, 0x036e, 0x037b, 0x0388, 0x0394, 0x039a, 0x03a0, - 0x03a9, 0x03af, 0x03b4, 0x03b9, 0x03c1, 0x03c8, 0x03cc, 0x03d1, + 0x01ea, 0x01f4, 0x01ff, 0x0202, 0x020c, 0x0213, 0x0216, 0x021e, + 0x0227, 0x0230, 0x0237, 0x0241, 0x0249, 0x0250, 0x0256, 0x025e, + 0x0267, 0x0272, 0x0277, 0x027e, 0x0286, 0x028c, 0x0294, 0x029b, + 0x029f, 0x02a6, 0x02af, 0x02b4, 0x02bf, 0x02c4, 0x02cd, 0x02d4, + 0x02db, 0x02e3, 0x02ef, 0x02f6, 0x02fd, 0x030a, 0x030f, 0x0318, + 0x0321, 0x0329, 0x0330, 0x0338, 0x0341, 0x034a, 0x034f, 0x035b, + 0x0361, 0x0367, 0x0372, 0x037f, 0x038c, 0x0398, 0x039e, 0x03a4, + 0x03ad, 0x03b3, 0x03b8, 0x03bd, 0x03c5, 0x03cc, 0x03d0, 0x03d5, // Entry 80 - BF - 0x03d7, 0x03e2, 0x03e9, 0x03f4, 0x03f9, 0x0400, 0x0407, 0x0412, - 0x041a, 0x0422, 0x0428, 0x0432, 0x0437, 0x0442, 0x044b, 0x0453, - 0x045b, 0x0460, 0x0466, 0x046d, 0x0474, 0x0479, 0x0483, 0x048e, - 0x0494, 0x049b, 0x04a0, 0x04a6, 0x04b0, 0x04b4, 0x04bc, 0x04c5, - 0x04cd, 0x04d5, 0x04dc, 0x04e2, 0x04ea, 0x04f2, 0x04fa, 0x0502, - 0x0506, 0x050e, 0x0513, 0x051f, 0x0526, 0x052e, 0x0533, 0x0538, - 0x053f, 0x0545, 0x054b, 0x0553, 0x0557, 0x0561, 0x0566, 0x056d, - 0x0573, 0x0583, 0x058b, 0x0590, 0x0594, 0x059c, 0x05a3, 0x05ab, + 0x03db, 0x03e6, 0x03ed, 0x03f8, 0x03fd, 0x0404, 0x040b, 0x0416, + 0x041e, 0x0425, 0x042b, 0x0435, 0x043a, 0x0445, 0x044e, 0x0456, + 0x045e, 0x0463, 0x0469, 0x0470, 0x0477, 0x047c, 0x0486, 0x0491, + 0x0497, 0x049e, 0x04a3, 0x04a9, 0x04b3, 0x04b7, 0x04bf, 0x04c8, + 0x04d0, 0x04d8, 0x04df, 0x04e5, 0x04ed, 0x04f5, 0x04fd, 0x0505, + 0x0509, 0x0511, 0x0516, 0x0522, 0x0529, 0x0531, 0x0536, 0x053b, + 0x0542, 0x0548, 0x054e, 0x0556, 0x055a, 0x0564, 0x0569, 0x0570, + 0x0578, 0x0588, 0x0590, 0x0595, 0x0599, 0x05a1, 0x05a8, 0x05b0, // Entry C0 - FF - 0x05b9, 0x05c4, 0x05d1, 0x05d7, 0x05df, 0x05e8, 0x05ee, 0x05f5, - 0x0605, 0x060b, 0x061d, 0x062d, 0x0630, 0x0645, 0x064d, 0x0653, - 0x0659, 0x0660, 0x066a, 0x0671, 0x0675, 0x067a, 0x0684, 0x068b, - 0x068f, 0x0694, 0x069a, 0x069e, 0x06a3, 0x06a9, 0x06b5, 0x06bd, - 0x06c2, 0x06c6, 0x06cc, 0x06cf, 0x06d6, 0x06e1, 0x06ea, 0x06ee, - 0x06f4, 0x06f8, 0x06fd, 0x0703, 0x070d, 0x0711, 0x0715, 0x071c, - 0x0721, 0x0729, 0x072f, 0x0734, 0x073c, 0x0740, 0x0747, 0x074f, - 0x0759, 0x075d, 0x0764, 0x076b, 0x0776, 0x0781, 0x0789, 0x0799, + 0x05be, 0x05c9, 0x05d6, 0x05dc, 0x05e4, 0x05ee, 0x05f4, 0x05fb, + 0x060b, 0x060b, 0x0611, 0x0623, 0x0633, 0x0636, 0x064b, 0x0653, + 0x0659, 0x065f, 0x0666, 0x0670, 0x0677, 0x067c, 0x0681, 0x068b, + 0x0692, 0x0696, 0x069b, 0x06a1, 0x06a5, 0x06aa, 0x06b0, 0x06bc, + 0x06c4, 0x06c9, 0x06cd, 0x06d3, 0x06d6, 0x06dd, 0x06e8, 0x06f1, + 0x06f5, 0x06fb, 0x06ff, 0x0704, 0x070d, 0x0717, 0x071b, 0x071f, + 0x0726, 0x072b, 0x0733, 0x0739, 0x073e, 0x0746, 0x074a, 0x0751, + 0x075a, 0x0764, 0x0768, 0x076f, 0x0776, 0x0781, 0x078c, 0x0794, // Entry 100 - 13F - 0x07a0, 0x07a5, 0x07b1, 0x07ba, 0x07c0, 0x07c6, 0x07cb, 0x07d3, - 0x07da, 0x07e0, 0x07e5, 0x07ea, 0x07ef, 0x07f9, 0x0805, 0x080a, - 0x081b, 0x0825, 0x082a, 0x0830, 0x0836, 0x083a, 0x0843, 0x0851, - 0x0857, 0x0861, 0x086e, 0x087a, 0x0880, 0x088f, 0x0893, 0x089d, - 0x08ab, 0x08ae, 0x08b9, 0x08c5, 0x08d1, 0x08da, 0x08e5, 0x08f0, - 0x08fa, 0x08fc, 0x0905, 0x0908, 0x090c, 0x0911, 0x0921, 0x0924, - 0x092e, 0x0934, 0x0942, 0x0950, 0x095e, 0x0963, 0x096c, 0x0972, - 0x0977, 0x0982, 0x098e, 0x0993, 0x0999, 0x099e, 0x09a5, 0x09aa, + 0x07a4, 0x07ab, 0x07b0, 0x07bc, 0x07c3, 0x07cc, 0x07d2, 0x07d8, + 0x07dd, 0x07e5, 0x07eb, 0x07f1, 0x07f6, 0x07fb, 0x0800, 0x080a, + 0x0816, 0x081b, 0x082c, 0x0836, 0x083b, 0x0841, 0x0847, 0x084b, + 0x0854, 0x0862, 0x0868, 0x0872, 0x087f, 0x088b, 0x0891, 0x08a0, + 0x08a4, 0x08ac, 0x08ba, 0x08bd, 0x08c8, 0x08d4, 0x08e0, 0x08e9, + 0x08f4, 0x08ff, 0x0909, 0x090b, 0x0914, 0x0917, 0x091b, 0x0920, + 0x0930, 0x0934, 0x093e, 0x0944, 0x0952, 0x0960, 0x096e, 0x0973, + 0x097c, 0x0982, 0x0987, 0x0992, 0x099e, 0x09a3, 0x09a9, 0x09ae, // Entry 140 - 17F - 0x09af, 0x09b7, 0x09c5, 0x09cf, 0x09d9, 0x09de, 0x09e9, 0x09ee, - 0x09f2, 0x09f6, 0x09fc, 0x0a01, 0x0a0a, 0x0a11, 0x0a28, 0x0a2e, - 0x0a34, 0x0a3b, 0x0a47, 0x0a53, 0x0a57, 0x0a64, 0x0a6b, 0x0a71, - 0x0a74, 0x0a79, 0x0a7d, 0x0a86, 0x0a8d, 0x0a91, 0x0a98, 0x0aa3, - 0x0aaa, 0x0aae, 0x0ab6, 0x0abb, 0x0ac6, 0x0ad2, 0x0ad8, 0x0ae1, - 0x0ae5, 0x0aed, 0x0af5, 0x0b03, 0x0b0a, 0x0b14, 0x0b1a, 0x0b29, - 0x0b2d, 0x0b36, 0x0b3d, 0x0b43, 0x0b4b, 0x0b50, 0x0b57, 0x0b5c, - 0x0b63, 0x0b6a, 0x0b6f, 0x0b75, 0x0b7a, 0x0b82, 0x0b94, 0x0b9c, + 0x09b5, 0x09ba, 0x09bf, 0x09c7, 0x09d5, 0x09df, 0x09e9, 0x09ee, + 0x09f9, 0x09fe, 0x0a02, 0x0a06, 0x0a0c, 0x0a11, 0x0a1a, 0x0a21, + 0x0a38, 0x0a3e, 0x0a44, 0x0a4b, 0x0a57, 0x0a63, 0x0a67, 0x0a74, + 0x0a7b, 0x0a81, 0x0a84, 0x0a89, 0x0a8d, 0x0a96, 0x0a9d, 0x0aa1, + 0x0aa8, 0x0ab3, 0x0aba, 0x0abe, 0x0ac6, 0x0acb, 0x0ad6, 0x0ae2, + 0x0ae8, 0x0af1, 0x0af5, 0x0afd, 0x0b05, 0x0b13, 0x0b1a, 0x0b24, + 0x0b2a, 0x0b3b, 0x0b3f, 0x0b48, 0x0b4f, 0x0b55, 0x0b5d, 0x0b62, + 0x0b69, 0x0b71, 0x0b78, 0x0b7f, 0x0b84, 0x0b8a, 0x0b8f, 0x0b96, // Entry 180 - 1BF - 0x0ba2, 0x0ba8, 0x0bb2, 0x0bb7, 0x0bbb, 0x0bc4, 0x0bce, 0x0bd8, - 0x0bdf, 0x0be4, 0x0be7, 0x0beb, 0x0bf0, 0x0c01, 0x0c07, 0x0c11, - 0x0c15, 0x0c1b, 0x0c23, 0x0c2a, 0x0c32, 0x0c37, 0x0c3b, 0x0c41, - 0x0c47, 0x0c4c, 0x0c50, 0x0c61, 0x0c6b, 0x0c79, 0x0c80, 0x0c86, - 0x0c91, 0x0c98, 0x0ca0, 0x0ca6, 0x0cab, 0x0cb5, 0x0cbc, 0x0cc8, - 0x0ccd, 0x0cd8, 0x0cdf, 0x0ce7, 0x0cec, 0x0cf1, 0x0cfc, 0x0d02, - 0x0d0d, 0x0d11, 0x0d1a, 0x0d20, 0x0d24, 0x0d2c, 0x0d33, 0x0d39, - 0x0d42, 0x0d47, 0x0d52, 0x0d58, 0x0d5d, 0x0d67, 0x0d6b, 0x0d7a, + 0x0ba8, 0x0bb0, 0x0bb6, 0x0bbc, 0x0bc6, 0x0bcb, 0x0bcf, 0x0bd8, + 0x0be2, 0x0bec, 0x0bf3, 0x0bf8, 0x0bfb, 0x0bff, 0x0c04, 0x0c15, + 0x0c1b, 0x0c25, 0x0c29, 0x0c2f, 0x0c37, 0x0c3e, 0x0c46, 0x0c4b, + 0x0c4f, 0x0c55, 0x0c5b, 0x0c60, 0x0c64, 0x0c75, 0x0c7f, 0x0c8d, + 0x0c94, 0x0c9a, 0x0ca5, 0x0cac, 0x0cb4, 0x0cba, 0x0cbf, 0x0cc9, + 0x0cd0, 0x0cdc, 0x0ce1, 0x0cec, 0x0cf3, 0x0cfb, 0x0d00, 0x0d05, + 0x0d10, 0x0d16, 0x0d21, 0x0d25, 0x0d2e, 0x0d34, 0x0d38, 0x0d40, + 0x0d47, 0x0d4d, 0x0d56, 0x0d5d, 0x0d68, 0x0d6e, 0x0d73, 0x0d7d, // Entry 1C0 - 1FF - 0x0d82, 0x0d8a, 0x0d8f, 0x0d94, 0x0d99, 0x0daa, 0x0db4, 0x0dbb, - 0x0dc3, 0x0dcd, 0x0dd5, 0x0dde, 0x0dee, 0x0dfa, 0x0e07, 0x0e12, - 0x0e1b, 0x0e27, 0x0e2e, 0x0e36, 0x0e40, 0x0e52, 0x0e59, 0x0e77, - 0x0e81, 0x0e88, 0x0e94, 0x0e9e, 0x0ea2, 0x0ea7, 0x0ead, 0x0eb6, - 0x0ebd, 0x0ec4, 0x0ecc, 0x0ecf, 0x0ed6, 0x0edd, 0x0ef1, 0x0ef8, - 0x0efd, 0x0f04, 0x0f0e, 0x0f15, 0x0f1a, 0x0f24, 0x0f2a, 0x0f3c, - 0x0f47, 0x0f4d, 0x0f51, 0x0f55, 0x0f5e, 0x0f6d, 0x0f77, 0x0f81, - 0x0f8a, 0x0f8e, 0x0f9b, 0x0fa1, 0x0fad, 0x0fb4, 0x0fbe, 0x0fc8, + 0x0d81, 0x0d90, 0x0d98, 0x0da0, 0x0da5, 0x0daa, 0x0daf, 0x0dc0, + 0x0dca, 0x0dd1, 0x0dd9, 0x0de3, 0x0deb, 0x0df4, 0x0e0b, 0x0e1b, + 0x0e27, 0x0e34, 0x0e3f, 0x0e48, 0x0e54, 0x0e5b, 0x0e63, 0x0e6d, + 0x0e7f, 0x0e86, 0x0ea4, 0x0eae, 0x0eb5, 0x0ec1, 0x0ecb, 0x0ecf, + 0x0ed4, 0x0eda, 0x0ee3, 0x0eea, 0x0ef1, 0x0ef9, 0x0efc, 0x0f03, + 0x0f0b, 0x0f1f, 0x0f26, 0x0f2b, 0x0f32, 0x0f3c, 0x0f43, 0x0f48, + 0x0f52, 0x0f58, 0x0f6b, 0x0f76, 0x0f7c, 0x0f80, 0x0f84, 0x0f8d, + 0x0f9c, 0x0fa6, 0x0fb0, 0x0fb9, 0x0fbd, 0x0fcd, 0x0fd3, 0x0fdf, // Entry 200 - 23F - 0x0fd3, 0x0fdf, 0x0fe6, 0x0fed, 0x0ff9, 0x0ffe, 0x1002, 0x100e, - 0x1014, 0x1018, 0x1020, 0x1028, 0x1037, 0x103d, 0x1046, 0x104a, - 0x104f, 0x1053, 0x1059, 0x105e, 0x1064, 0x1067, 0x106e, 0x1077, - 0x107e, 0x1085, 0x108b, 0x1093, 0x10a1, 0x10aa, 0x10b0, 0x10b6, - 0x10bf, 0x10c8, 0x10d4, 0x10db, 0x10e1, 0x10e8, 0x10f0, 0x110b, - 0x1111, 0x111a, 0x1121, 0x1124, 0x1127, 0x1131, 0x1138, 0x1142, - 0x114f, 0x1155, 0x115f, 0x1164, 0x116a, 0x1170, 0x1175, 0x117a, - 0x1182, 0x1184, 0x118a, 0x1193, 0x1197, 0x119a, 0x11a2, 0x11a9, + 0x0fe6, 0x0ff0, 0x0ffa, 0x1005, 0x1011, 0x1018, 0x101f, 0x1025, + 0x102a, 0x102e, 0x103a, 0x1040, 0x1044, 0x104c, 0x1054, 0x1063, + 0x106f, 0x1078, 0x107c, 0x1081, 0x1085, 0x108b, 0x1090, 0x1096, + 0x1099, 0x10a3, 0x10ac, 0x10b3, 0x10ba, 0x10c0, 0x10c8, 0x10d6, + 0x10df, 0x10e5, 0x10eb, 0x10f4, 0x10fd, 0x1109, 0x1110, 0x1117, + 0x111e, 0x1125, 0x1140, 0x1149, 0x1152, 0x1159, 0x115c, 0x115f, + 0x1169, 0x1170, 0x117a, 0x1187, 0x118d, 0x1197, 0x119c, 0x11a6, + 0x11ae, 0x11b9, 0x11be, 0x11c6, 0x11c8, 0x11d2, 0x11db, 0x11df, // Entry 240 - 27F - 0x11ae, 0x11b7, 0x11c2, 0x11c9, 0x11d5, 0x11db, 0x11e1, 0x11fe, - 0x1202, 0x1218, 0x121c, 0x1234, 0x1234, 0x1244, 0x1256, 0x1267, - 0x1277, 0x1286, 0x1298, 0x12ae, 0x12be, 0x12cf, 0x12cf, 0x12de, - 0x12ee, 0x12fa, 0x1300, 0x1317, 0x132c, 0x1334, 0x1341, 0x1354, - 0x1366, 0x137b, -} // Size: 1244 bytes - -var paLangStr string = "" + // Size: 5353 bytes - "ਅਬਖਾਜ਼ੀਅਨਅਫ਼ਰੀਕੀਅਕਾਨਅਮਹਾਰਿਕਅਰਬੀਅਸਾਮੀਅਜ਼ਰਬਾਈਜਾਨੀਬਸ਼ਕੀਰਬੇਲਾਰੂਸੀਬੁਲਗਾਰੀਆਈਬੰ" + - "ਬਾਰਾਬੰਗਾਲੀਤਿੱਬਤੀਬਰੇਟਨਬੋਸਨੀਆਈਕੈਟਾਲਾਨਚੇਚਨਕੋਰਸੀਕਨਚੈਕਚੁਵਾਸ਼ਵੈਲਜ਼ਡੈਨਿਸ਼ਜਰਮਨ" + - "ਜ਼ੋਂਗਖਾਈਵਈਯੂਨਾਨੀਅੰਗਰੇਜ਼ੀਇਸਪੇਰਾਂਟੋਸਪੇਨੀਇਸਟੋਨੀਆਈਬਾਸਕਫ਼ਾਰਸੀਫਿਨਿਸ਼ਫ਼ਿਜ਼ੀਫ਼" + - "ੇਰੋਸੇਫਰਾਂਸੀਸੀਪੱਛਮੀ ਫ੍ਰਿਸੀਅਨਆਇਰੀਗੈਲਿਸ਼ਿਅਨਗੁਆਰਾਨੀਗੁਜਰਾਤੀਮੈਂਕਸਹੌਸਾਹਿਬਰੂਹਿ" + - "ੰਦੀਕ੍ਰੋਏਸ਼ਿਆਈਹੈਤੀਆਈਹੰਗਰੀਆਈਅਰਮੀਨੀਆਈਇੰਡੋਨੇਸ਼ੀਆਈਇਗਬੋਸਿਚੁਆਨ ਯੀਆਈਸਲੈਂਡਿਕਇਤਾ" + - "ਲਵੀਇੰਕਟੀਟੂਤਜਪਾਨੀਜਾਵਾਨੀਜ਼ਜਾਰਜੀਆਈਕਿਕੂਯੂਕਜ਼ਾਖ਼ਕਲਾਅੱਲੀਸੁਟਖਮੇਰਕੰਨੜਕੋਰੀਆਈਕਸ਼" + - "ਮੀਰੀਕੁਰਦਕੋਰਨਿਸ਼ਕਿਰਗੀਜ਼ਲਾਤੀਨੀਲਕਜ਼ਮਬਰਗਿਸ਼ਗਾਂਡਾਲਿੰਗਾਲਾਲਾਓਲਿਥੁਆਨੀਅਨਲੂਬਾ-ਕਾ" + - "ਟਾਂਗਾਲਾਟਵਿਅਨਮੇਲੇਗਸੀਮਾਉਰੀਮੈਕਡੋਨੀਆਈਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਰਾਠੀਮਲਯਮਾਲਟੀਜ਼ਬਰਮੀਉੱਤਰ" + - "ੀ ਨਡੇਬੇਲੇਨੇਪਾਲੀਡੱਚਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲਓਰੋਮੋਉੜੀਆਪੰਜਾਬੀਪਲੀਪ" + - "ੋਲੈਂਡੀਪਸ਼ਤੋਪੁਰਤਗਾਲੀਕਕੇਸ਼ੁਆਰੋਮਾਂਸ਼ਰੁੰਡੀਰੋਮਾਨੀਆਈਰੂਸੀਕਿਨਿਆਰਵਾਂਡਾਸੰਸਕ੍ਰਿਤਸ" + - "ਿੰਧੀਉੱਤਰੀ ਸਾਮੀਸਾਂਗੋਸਿੰਹਾਲਾਸਲੋਵਾਕਸਲੋਵੇਨੀਆਈਸ਼ੋਨਾਸੋਮਾਲੀਅਲਬਾਨੀਆਈਸਰਬੀਆਈਸੂੰਡ" + - "ਾਨੀਸਵੀਡਿਸ਼ਸਵਾਹਿਲੀਤਮਿਲਤੇਲਗੂਤਾਜਿਕਥਾਈਤਿਗ੍ਰੀਨਿਆਤੁਰਕਮੇਨਟੌਂਗਨਤੁਰਕੀਤਤਾਰਉਇਗੁਰਯ" + - "ੂਕਰੇਨੀਆਈਉਰਦੂਉਜ਼ਬੇਕਵੀਅਤਨਾਮੀਵੋਲੋਫਖੋਸਾਯੋਰੂਬਾਚੀਨੀਜ਼ੁਲੂਅਚੀਨੀਅਕੋਲੀਅਗੇਮਪੁਰਾਣੀ" + - " ਅੰਗਰੇਜ਼ੀਮਾਪੁਚੇਅਸੂਬੇਮਬਾਬੇਨਾਪੱਛਮੀ ਬਲੂਚੀਭੋਜਪੁਰੀਬੋਡੋਚੀਗਾਮਾਰੀਚੇਰੋਕੀਕੇਂਦਰੀ ਕੁ" + - "ਰਦਿਸ਼ਟੇਟਾਜ਼ਾਰਮਾਲੋਅਰ ਸੋਰਬੀਅਨਡੂਆਲਾਜੋਲਾ-ਫੋਇਨੀਇੰਬੂਪੁਰਾਤਨ ਮਿਸਰੀਫਿਲੀਪਿਨੋਗਾਗੌ" + - "ਜ਼ਪੁਰਾਤਨ ਯੂਨਾਨੀਸਵਿਸ ਜਰਮਨਗੁਸੀਹਵਾਈਫਿਜੀ ਹਿੰਦੀਅੱਪਰ ਸੋਰਬੀਅਨਨਗੋਂਬਾਮਚਾਮੇਕਬਾਇਲ" + - "ਕੰਬਾਮਕੋਂਡਕਾਬੁਵੇਰਦਿਆਨੂਕੋਯਰਾ ਚੀਨੀਕਲੇਜਿਨਕੋਮੀ-ਪੇਰਮਿਆਕਕੋਂਕਣੀਸ਼ੰਬਾਲਾਬਫ਼ੀਆਲੰਗ" + - "ਾਈਲਕੋਟਾਉੱਤਰੀ ਲੁਰੀਲੂਓਲੂਈਆਮੈਥਲੀਮਸਾਈਮੇਰੂਮੋਰੀਸਿਅਨਮਖੋਵਾ-ਮਿੱਟੋਮੇਟਾਮਨੀਪੁਰੀਮੋਹ" + - "ਾਵਕਮੁੰਡੇਂਗਕਈ ਭਾਸ਼ਾਵਾਂਮੇਜ਼ੈਂਡਰਾਨੀਨਾਮਾਲੋ ਜਰਮਨਕਵਾਸਿਓਐਂਕੋਨੁਏਰਨਿਆਂਕੋਲੇਕੇਸ਼ਰ" + - "ਾਜਸਥਾਨੀਰੋਮਬੋਰਵਾਸਮਬੁਰੂਸੰਥਾਲੀਸੇਂਗੋਦੱਖਣੀ ਕੁਰਦਿਸ਼ਸੇਨਾਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀਟਚੇਲਹਿ" + - "ਟਸ਼ਾਨਦੱਖਣੀ ਸਾਮੀਲਿਊਲ ਸਾਮੀਇਨਾਰੀ ਸਾਮੀਸਕੌਲਟ ਸਾਮੀਟੇਸੋਤਾਸਾਵਿਕਮੱਧ ਐਟਲਸ ਤਮਾਜ਼ਿ" + - "ਤਅਗਿਆਤ ਭਾਸ਼ਾਵਾਈਵੂੰਜੋਵਾਲਪੁਰੀਸੋਗਾਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕਕੋਈ ਭਾਸ਼ਾਈ ਸਮੱਗਰੀ" + - " ਨਹੀਂਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਆਸਟਰੀਆਈ ਜਰਮਨਸਵਿਸ ਹਾਈ ਜਰਮਨਆਸਟ੍ਰੇਲੀਆਈ ਅੰਗਰੇਜ਼ੀਕੈਨੇਡੀ" + - "ਅਨ ਅੰਗਰੇਜ਼ੀਬਰਤਾਨਵੀ ਅੰਗਰੇਜ਼ੀਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀਲਾਤੀਨੀ ਅਮਰੀਕੀ ਸਪੇਨੀਯੂਰਪੀ ਸਪੇ" + - "ਨੀਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼ਕੈਨੇਡੀਅਨ ਫਰਾਂਸੀਸੀਸਵਿਸ ਫਰਾਂਸੀਸੀਲੋ ਸੈਕਸਨਫਲੈਮਿਸ਼ਬ੍ਰਾਜ਼ੀਲ" + - "ੀਆਈ ਪੁਰਤਗਾਲੀਯੂਰਪੀ ਪੁਰਤਗਾਲੀਮੋਲਡਾਵੀਆਈਕਾਂਗੋ ਸਵਾਹਿਲੀਸਰਲ ਚੀਨੀਰਵਾਇਤੀ ਚੀਨੀ" - -var paLangIdx = []uint16{ // 610 elements + 0x11e2, 0x11ea, 0x11f1, 0x11f6, 0x11ff, 0x120a, 0x1214, 0x1220, + 0x1226, 0x122c, 0x1249, 0x124d, 0x1263, 0x126a, 0x1281, 0x1281, + 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, + 0x1281, 0x1281, 0x1281, 0x1281, 0x128d, 0x1293, 0x1293, 0x1293, + 0x129b, 0x12a8, 0x12bb, 0x12cd, 0x12e2, +} // Size: 1250 bytes + +const paLangStr string = "" + // Size: 8148 bytes + "ਅਫ਼ਾਰਅਬਖਾਜ਼ੀਅਨਅਫ਼ਰੀਕੀਅਕਾਨਅਮਹਾਰਿਕਅਰਾਗੋਨੀਅਰਬੀਅਸਾਮੀਅਵਾਰਿਕਅਈਮਾਰਾਅਜ਼ਰਬਾਈਜਾਨੀਬ" + + "ਸ਼ਕੀਰਬੇਲਾਰੂਸੀਬੁਲਗਾਰੀਆਈਬਿਸਲਾਮਾਬੰਬਾਰਾਬੰਗਾਲੀਤਿੱਬਤੀਬਰੇਟਨਬੋਸਨੀਆਈਕੈਟਾਲਾਨਚੇਚਨ" + + "ਚਮੋਰੋਕੋਰਸੀਕਨਚੈੱਕਚਰਚ ਸਲਾਵੀਚੁਵਾਸ਼ਵੈਲਸ਼ਡੈਨਿਸ਼ਜਰਮਨਦਿਵੇਹੀਜ਼ੋਂਗਖਾਈਵਈਯੂਨਾਨੀਅੰ" + + "ਗਰੇਜ਼ੀਇਸਪੇਰਾਂਟੋਸਪੇਨੀਇਸਟੋਨੀਆਈਬਾਸਕਫ਼ਾਰਸੀਫੁਲਾਹਫਿਨਿਸ਼ਫ਼ਿਜ਼ੀਫ਼ੇਰੋਸੇਫਰਾਂਸੀਸੀ" + + "ਪੱਛਮੀ ਫ੍ਰਿਸੀਅਨਆਇਰਸ਼ਸਕਾਟਿਸ਼ ਗੇਲਿਕਗੈਲਿਸ਼ਿਅਨਗੁਆਰਾਨੀਗੁਜਰਾਤੀਮੈਂਕਸਹੌਸਾਹਿਬਰੂਹ" + + "ਿੰਦੀਕ੍ਰੋਏਸ਼ਿਆਈਹੈਤੀਆਈਹੰਗਰੀਆਈਅਰਮੀਨੀਆਈਹਰੇਰੋਇੰਟਰਲਿੰਗੁਆਇੰਡੋਨੇਸ਼ੀਆਈਇਗਬੋਸਿਚੁਆ" + + "ਨ ਯੀਇਡੂਆਈਸਲੈਂਡਿਕਇਤਾਲਵੀਇੰਕਟੀਟੂਤਜਪਾਨੀਜਾਵਾਨੀਜ਼ਜਾਰਜੀਆਈਕਿਕੂਯੂਕੁਆਨਯਾਮਾਕਜ਼ਾਖ਼" + + "ਕਲਾਅੱਲੀਸੁਟਖਮੇਰਕੰਨੜਕੋਰੀਆਈਕਨੂਰੀਕਸ਼ਮੀਰੀਕੁਰਦਕੋਮੀਕੋਰਨਿਸ਼ਕਿਰਗੀਜ਼ਲਾਤੀਨੀਲਕਜ਼ਮਬ" + + "ਰਗਿਸ਼ਗਾਂਡਾਲਿਮਬੁਰਗੀਲਿੰਗਾਲਾਲਾਓਲਿਥੁਆਨੀਅਨਲੂਬਾ-ਕਾਟਾਂਗਾਲਾਤੀਵੀਮੇਲੇਗਸੀਮਾਰਸ਼ਲੀਜ" + + "਼ਮਾਉਰੀਮੈਕਡੋਨੀਆਈਮਲਿਆਲਮਮੰਗੋਲੀਮਰਾਠੀਮਲਯਮਾਲਟੀਜ਼ਬਰਮੀਨਾਉਰੂਉੱਤਰੀ ਨਡੇਬੇਲੇਨੇਪਾਲੀ" + + "ਐਂਡੋਂਗਾਡੱਚਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲਸਾਊਥ ਨਡੇਬੇਲੇਨਵਾਜੋਨਯਾਂਜਾਓਕਸੀ" + + "ਟਾਨਓਰੋਮੋਉੜੀਆਓਸੈਟਿਕਪੰਜਾਬੀਪਾਲੀਪੋਲੈਂਡੀਪਸ਼ਤੋਪੁਰਤਗਾਲੀਕਕੇਸ਼ੁਆਰੋਮਾਂਸ਼ਰੁੰਡੀਰੋਮ" + + "ਾਨੀਆਈਰੂਸੀਕਿਨਿਆਰਵਾਂਡਾਸੰਸਕ੍ਰਿਤਸਾਰਡੀਨੀਆਈਸਿੰਧੀਉੱਤਰੀ ਸਾਮੀਸਾਂਗੋਸਿੰਹਾਲਾਸਲੋਵਾਕ" + + "ਸਲੋਵੇਨੀਆਈਸਾਮੋਨਸ਼ੋਨਾਸੋਮਾਲੀਅਲਬਾਨੀਆਈਸਰਬੀਆਈਸਵਾਤੀਦੱਖਣੀ ਸੋਥੋਸੂੰਡਾਨੀਸਵੀਡਿਸ਼ਸਵ" + + "ਾਹਿਲੀਤਮਿਲਤੇਲਗੂਤਾਜਿਕਥਾਈਤਿਗ੍ਰੀਨਿਆਤੁਰਕਮੇਨਤਸਵਾਨਾਟੌਂਗਨਤੁਰਕੀਸੋਂਗਾਤਤਾਰਤਾਹੀਟੀਉ" + + "ਇਗੁਰਯੂਕਰੇਨੀਆਈਉੜਦੂਉਜ਼ਬੇਕਵੇਂਡਾਵੀਅਤਨਾਮੀਵੋਲਾਪੂਕਵਲੂਨਵੋਲੋਫਖੋਸਾਯਿਦਿਸ਼ਯੋਰੂਬਾਚੀ" + + "ਨੀ (ਮੈਂਡਰਿਨ)ਜ਼ੁਲੂਅਚੀਨੀਅਕੋਲੀਅਡਾਂਗਮੇਅਡਿਗੇਅਗੇਮਆਇਨੂਅਲੇਉਟਦੱਖਣੀ ਅਲਤਾਈਪੁਰਾਣੀ " + + "ਅੰਗਰੇਜ਼ੀਅੰਗਿਕਾਮਾਪੁਚੇਅਰਾਫਾਓਅਸੂਅਸਤੂਰੀਅਵਧੀਬਾਲੀਨੀਜ਼ਬਾਸਾਬੇਮਬਾਬੇਨਾਪੱਛਮੀ ਬਲੂਚ" + + "ੀਭੋਜਪੁਰੀਬਿਨੀਸਿਕਸਿਕਾਬੋਡੋਬਗਨੀਜ਼ਬਲਿਨਸੀਬੂਆਨੋਚੀਗਾਚੂਕੀਸਮਾਰੀਚੌਕਟੋਚੇਰੋਕੀਛਾਇਆਨਕ" + + "ੇਂਦਰੀ ਕੁਰਦਿਸ਼ਸੇਸੇਲਵਾ ਕ੍ਰਿਓਲ ਫ੍ਰੈਂਚਡਕੋਟਾਦਾਰਗਵਾਟੇਟਾਡੋਗਰਿੱਬਜ਼ਾਰਮਾਲੋਅਰ ਸੋਰ" + + "ਬੀਅਨਡੂਆਲਾਜੋਲਾ-ਫੋਇਨੀਡਜ਼ਾਗਾਇੰਬੂਐਫਿਕਪੁਰਾਤਨ ਮਿਸਰੀਏਕਾਜੁਕਇਵੋਂਡੋਫਿਲੀਪਿਨੋਫੌਨਫਰ" + + "ੀਉਲੀਅਨਗਾਗਾਗੌਜ਼ਚੀਨੀ ਗਾਨਜੀਜ਼ਗਿਲਬਰਤੀਜ਼ਗੋਰੋਂਤਾਲੋਪੁਰਾਤਨ ਯੂਨਾਨੀਜਰਮਨ (ਸਵਿਸ)ਗੁ" + + "ਸੀਗਵਿਚ’ਇਨਚੀਨੀ ਹਾਕਾਹਵਾਈਫਿਜੀ ਹਿੰਦੀਹਿਲੀਗੇਨਨਹਮੋਂਗਅੱਪਰ ਸੋਰਬੀਅਨਚੀਨੀ ਜ਼ਿਆਂਗਹੂ" + + "ਪਾਇਬਾਨਇਬੀਬੀਓਇਲੋਕੋਇੰਗੁਸ਼ਲੋਜਬਾਨਨਗੋਂਬਾਮਚਾਮੇਕਬਾਇਲਕਾਚਿਨਜਜੂਕੰਬਾਕਬਾਰਦੀਟਾਇਪਮਕੋ" + + "ਂਡਕਾਬੁਵੇਰਦਿਆਨੂਕੋਰੋਖਾਸੀਕੋਯਰਾ ਚੀਨੀਕਾਕੋਕਲੇਜਿਨਕਿਮਬੁੰਦੂਕੋਮੀ-ਪੇਰਮਿਆਕਕੋਂਕਣੀਕਪ" + + "ੇਲਕਰਾਚੇ ਬਲਕਾਰਕਰੀਲੀਅਨਕੁਰੁਖਸ਼ੰਬਾਲਾਬਫ਼ੀਆਕਲੋਗਨੀਅਨਕੁਮੀਕਲੈਡੀਨੋਲੰਗਾਈਲੈਜ਼ਗੀਲਕੋ" + + "ਟਾਲੋਜ਼ੀਉੱਤਰੀ ਲੁਰੀਲੁੰਡਾਲੂਓਮਿਜ਼ੋਲੂਈਆਮਾਡੂਰੀਸਮਗਾਹੀਮੈਥਲੀਮਕਾਸਰਮਸਾਈਮੋਕਸ਼ਾਮੇਂਡ" + + "ੇਮੇਰੂਮੋਰੀਸਿਅਨਮਖੋਵਾ-ਮਿੱਟੋਮੇਟਾਮਾਇਮੈਕਮਿਨਾਂਗਕਾਬਾਓਮਨੀਪੁਰੀਮੋਹਆਕਮੋਸੀਮੁੰਡੇਂਗਬਹ" + + "ੁਤੀਆਂ ਬੋਲੀਆਂਕ੍ਰੀਕਮਿਰਾਂਡੀਇਰਜ਼ੀਆਮੇਜ਼ੈਂਡਰਾਨੀਚੀਨੀ ਮਿਨ ਨਾਨਨਿਆਪੋਲੀਟਨਨਾਮਾਲੋ ਜ" + + "ਰਮਨਨੇਵਾਰੀਨਿਆਸਨਿਊਏਈਕਵਾਸਿਓਨਿਓਮਬੂਨਨੋਗਾਈਐਂਕੋਉੱਤਰੀ ਸੋਥੋਨੁਏਰਨਿਆਂਕੋਲੇਪੰਗਾਸੀਨਾ" + + "ਨਪੈਂਪਾਂਗਾਪਾਪਿਆਮੈਂਟੋਪਲਾਊਵੀਨਾਇਜੀਰੀਆਈ ਪਿਡਗਿਨਪਰੂਸ਼ੀਆਕੇਸ਼ਰਾਜਸਥਾਨੀਰਾਪਾਨੁਈਰਾਰ" + + "ੋਤੋਂਗਨਰੋਮਬੋਅਰੋਮੀਨੀਆਈਰਵਾਸਾਂਡੋਸਾਖਾਸਮਬੁਰੂਸੰਥਾਲੀਨਗਾਂਬੇਸੇਂਗੋਸਿਸੀਲੀਅਨਸਕਾਟਸਦੱ" + + "ਖਣੀ ਕੁਰਦਿਸ਼ਸੇਨਾਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀਟਚੇਲਹਿਟਸ਼ਾਨਦੱਖਣੀ ਸਾਮੀਲਿਊਲ ਸਾਮੀਇਨਾਰੀ ਸਾਮੀ" + + "ਸਕੌਲਟ ਸਾਮੀਸੋਨਿੰਕੇਸ੍ਰਾਨਾਨ ਟੋਂਗੋਸਾਹੋਸੁਕੁਮਾਕੋਮੋਰੀਅਨਸੀਰੀਆਈਟਿਮਨੇਟੇਸੋਟੇਟਮਟਿਗ" + + "ਰਾਕਲਿੰਗਨਟੋਕ ਪਿਸਿਨਟਾਰੋਕੋਤੁੰਬੁਕਾਟਿਊਵਾਲੂਤਾਸਾਵਿਕਤੁਵੀਨੀਅਨਮੱਧ ਐਟਲਸ ਤਮਾਜ਼ਿਤਉਦ" + + "ਮੁਰਤਉਮਬੁੰਡੂਰੂਟਵਾਈਵੂੰਜੋਵਾਲਸਰਵੋਲਾਏਟਾਵੈਰੇਵਾਲਪੁਰੀਚੀਨੀ ਵੂਕਾਲਮਿਕਸੋਗਾਯਾਂਗਬੇਨਯ" + + "ੇਂਬਾਕੈਂਟੋਨੀਜ਼ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕਜ਼ੂਨੀਬੋਲੀ ਸੰਬੰਧੀ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂਜ਼ਾ" + + "ਜ਼ਾਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਜਰਮਨ (ਆਸਟਰੀਆਈ)ਅੰਗਰੇਜ਼ੀ (ਬਰਤਾਨਵੀ)ਅੰਗਰੇਜ਼ੀ (ਅਮਰੀਕੀ)ਸ" + + "ਪੇਨੀ (ਯੂਰਪੀ)ਫਰਾਂਸੀਸੀ (ਕੈਨੇਡੀਅਨ)ਲੋ ਸੈਕਸਨਫਲੈਮਿਸ਼ਪੁਰਤਗਾਲੀ (ਬ੍ਰਾਜ਼ੀਲੀ)ਪੁਰਤ" + + "ਗਾਲੀ (ਯੂਰਪੀ)ਮੋਲਡਾਵੀਆਈਚੀਨੀ (ਸਰਲ)ਚੀਨੀ (ਰਵਾਇਤੀ)" + +var paLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x001b, 0x001b, 0x0030, 0x003c, 0x0051, 0x0051, - 0x005d, 0x006c, 0x006c, 0x006c, 0x008d, 0x009f, 0x00b7, 0x00d2, - 0x00d2, 0x00e4, 0x00f6, 0x0108, 0x0117, 0x012c, 0x0141, 0x014d, - 0x014d, 0x0162, 0x0162, 0x016b, 0x016b, 0x017d, 0x018c, 0x019e, - 0x01aa, 0x01aa, 0x01bf, 0x01c8, 0x01da, 0x01f2, 0x020d, 0x021c, - 0x0234, 0x0240, 0x0252, 0x0252, 0x0264, 0x0276, 0x028b, 0x02a3, - 0x02cb, 0x02d7, 0x02d7, 0x02f2, 0x0307, 0x031c, 0x032b, 0x0337, - 0x0346, 0x0355, 0x0355, 0x0373, 0x0385, 0x039a, 0x03b2, 0x03b2, + 0x0000, 0x000f, 0x002a, 0x002a, 0x003f, 0x004b, 0x0060, 0x0075, + 0x0081, 0x0090, 0x00a2, 0x00b4, 0x00d5, 0x00e7, 0x00ff, 0x011a, + 0x012f, 0x0141, 0x0153, 0x0165, 0x0174, 0x0189, 0x019e, 0x01aa, + 0x01b9, 0x01ce, 0x01ce, 0x01da, 0x01f3, 0x0205, 0x0214, 0x0226, + 0x0232, 0x0244, 0x0259, 0x0262, 0x0274, 0x028c, 0x02a7, 0x02b6, + 0x02ce, 0x02da, 0x02ec, 0x02fb, 0x030d, 0x031f, 0x0334, 0x034c, + 0x0374, 0x0383, 0x03a8, 0x03c3, 0x03d8, 0x03ed, 0x03fc, 0x0408, + 0x0417, 0x0426, 0x0426, 0x0444, 0x0456, 0x046b, 0x0483, 0x0492, // Entry 40 - 7F - 0x03b2, 0x03d3, 0x03d3, 0x03df, 0x03f8, 0x03f8, 0x03f8, 0x0413, - 0x0425, 0x043d, 0x044c, 0x0464, 0x0479, 0x0479, 0x048b, 0x048b, - 0x049d, 0x04bb, 0x04c7, 0x04d3, 0x04e5, 0x04e5, 0x04fa, 0x0506, - 0x0506, 0x051b, 0x0530, 0x0542, 0x0563, 0x0572, 0x0572, 0x0587, - 0x0590, 0x05ab, 0x05cd, 0x05e2, 0x05f7, 0x05f7, 0x0606, 0x0621, - 0x0633, 0x064b, 0x065a, 0x0663, 0x0678, 0x0684, 0x0684, 0x06a9, - 0x06bb, 0x06bb, 0x06c4, 0x06f8, 0x0723, 0x0723, 0x0723, 0x0723, - 0x0723, 0x0723, 0x0732, 0x073e, 0x073e, 0x0750, 0x0759, 0x076e, + 0x04b0, 0x04d1, 0x04d1, 0x04dd, 0x04f6, 0x04f6, 0x04ff, 0x051a, + 0x052c, 0x0544, 0x0553, 0x056b, 0x0580, 0x0580, 0x0592, 0x05aa, + 0x05bc, 0x05da, 0x05e6, 0x05f2, 0x0604, 0x0613, 0x0628, 0x0634, + 0x0640, 0x0655, 0x066a, 0x067c, 0x069d, 0x06ac, 0x06c4, 0x06d9, + 0x06e2, 0x06fd, 0x071f, 0x0731, 0x0746, 0x0761, 0x0770, 0x078b, + 0x079d, 0x07af, 0x07be, 0x07c7, 0x07dc, 0x07e8, 0x07f7, 0x081c, + 0x082e, 0x0843, 0x084c, 0x0880, 0x08ab, 0x08cd, 0x08dc, 0x08ee, + 0x0903, 0x0903, 0x0912, 0x091e, 0x0930, 0x0942, 0x094e, 0x0963, // Entry 80 - BF - 0x077d, 0x0795, 0x07aa, 0x07bf, 0x07ce, 0x07e6, 0x07f2, 0x0813, - 0x082b, 0x082b, 0x083a, 0x0856, 0x0865, 0x087a, 0x088c, 0x08a7, - 0x08a7, 0x08b6, 0x08c8, 0x08e0, 0x08f2, 0x08f2, 0x08f2, 0x0907, - 0x091c, 0x0931, 0x093d, 0x094c, 0x095b, 0x0964, 0x097f, 0x0994, - 0x0994, 0x09a3, 0x09b2, 0x09b2, 0x09be, 0x09be, 0x09cd, 0x09e8, - 0x09f4, 0x0a06, 0x0a06, 0x0a1e, 0x0a1e, 0x0a1e, 0x0a2d, 0x0a39, - 0x0a39, 0x0a4b, 0x0a4b, 0x0a57, 0x0a66, 0x0a75, 0x0a84, 0x0a84, - 0x0a84, 0x0a84, 0x0a84, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90, + 0x0972, 0x098a, 0x099f, 0x09b4, 0x09c3, 0x09db, 0x09e7, 0x0a08, + 0x0a20, 0x0a3b, 0x0a4a, 0x0a66, 0x0a75, 0x0a8a, 0x0a9c, 0x0ab7, + 0x0ac6, 0x0ad5, 0x0ae7, 0x0aff, 0x0b11, 0x0b20, 0x0b3c, 0x0b51, + 0x0b66, 0x0b7b, 0x0b87, 0x0b96, 0x0ba5, 0x0bae, 0x0bc9, 0x0bde, + 0x0bf0, 0x0bff, 0x0c0e, 0x0c1d, 0x0c29, 0x0c3b, 0x0c4a, 0x0c65, + 0x0c71, 0x0c83, 0x0c92, 0x0caa, 0x0cbf, 0x0ccb, 0x0cda, 0x0ce6, + 0x0cf8, 0x0d0a, 0x0d0a, 0x0d2e, 0x0d3d, 0x0d4c, 0x0d5b, 0x0d70, + 0x0d7f, 0x0d7f, 0x0d7f, 0x0d8b, 0x0d97, 0x0d97, 0x0d97, 0x0da6, // Entry C0 - FF - 0x0a90, 0x0a90, 0x0abb, 0x0abb, 0x0abb, 0x0acd, 0x0acd, 0x0acd, - 0x0acd, 0x0acd, 0x0acd, 0x0acd, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, - 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, - 0x0ad6, 0x0ae5, 0x0ae5, 0x0af1, 0x0af1, 0x0af1, 0x0b10, 0x0b25, - 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, - 0x0b25, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, - 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b3d, 0x0b3d, 0x0b3d, - 0x0b3d, 0x0b49, 0x0b49, 0x0b49, 0x0b49, 0x0b5b, 0x0b5b, 0x0b83, + 0x0da6, 0x0dc5, 0x0df0, 0x0e02, 0x0e02, 0x0e14, 0x0e14, 0x0e26, + 0x0e26, 0x0e26, 0x0e26, 0x0e26, 0x0e26, 0x0e2f, 0x0e2f, 0x0e41, + 0x0e41, 0x0e4d, 0x0e4d, 0x0e65, 0x0e65, 0x0e71, 0x0e71, 0x0e71, + 0x0e71, 0x0e71, 0x0e80, 0x0e80, 0x0e8c, 0x0e8c, 0x0e8c, 0x0eab, + 0x0ec0, 0x0ec0, 0x0ecc, 0x0ecc, 0x0ecc, 0x0ee1, 0x0ee1, 0x0ee1, + 0x0ee1, 0x0ee1, 0x0eed, 0x0eed, 0x0eed, 0x0eff, 0x0eff, 0x0f0b, + 0x0f0b, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f20, 0x0f2c, 0x0f2c, + 0x0f2c, 0x0f3b, 0x0f47, 0x0f47, 0x0f56, 0x0f56, 0x0f68, 0x0f77, // Entry 100 - 13F - 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b8f, 0x0b8f, - 0x0b8f, 0x0b8f, 0x0b8f, 0x0ba1, 0x0ba1, 0x0bc3, 0x0bc3, 0x0bd2, - 0x0bd2, 0x0bee, 0x0bee, 0x0bee, 0x0bfa, 0x0bfa, 0x0bfa, 0x0c1c, - 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c34, - 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, - 0x0c34, 0x0c34, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, - 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, - 0x0c46, 0x0c6b, 0x0c84, 0x0c84, 0x0c84, 0x0c90, 0x0c90, 0x0c90, + 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0fda, 0x0fda, 0x0fe9, 0x0ffb, + 0x1007, 0x1007, 0x1007, 0x101c, 0x101c, 0x102e, 0x102e, 0x1050, + 0x1050, 0x105f, 0x105f, 0x107b, 0x107b, 0x108d, 0x1099, 0x10a5, + 0x10a5, 0x10c7, 0x10d9, 0x10d9, 0x10d9, 0x10d9, 0x10eb, 0x10eb, + 0x10eb, 0x1103, 0x1103, 0x110c, 0x110c, 0x110c, 0x110c, 0x110c, + 0x110c, 0x110c, 0x1124, 0x112a, 0x113c, 0x1152, 0x1152, 0x1152, + 0x1152, 0x115e, 0x1179, 0x1179, 0x1179, 0x1179, 0x1179, 0x1179, + 0x1194, 0x1194, 0x1194, 0x11b9, 0x11d4, 0x11d4, 0x11d4, 0x11e0, // Entry 140 - 17F - 0x0c90, 0x0c9c, 0x0cb8, 0x0cb8, 0x0cb8, 0x0cb8, 0x0cda, 0x0cda, - 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, - 0x0cec, 0x0cfb, 0x0cfb, 0x0cfb, 0x0cfb, 0x0cfb, 0x0d0a, 0x0d0a, - 0x0d0a, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d25, 0x0d49, - 0x0d49, 0x0d49, 0x0d49, 0x0d49, 0x0d49, 0x0d65, 0x0d65, 0x0d65, - 0x0d65, 0x0d77, 0x0d77, 0x0d99, 0x0dab, 0x0dab, 0x0dab, 0x0dab, - 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0dc0, 0x0dcf, 0x0dcf, 0x0dcf, - 0x0dcf, 0x0dcf, 0x0dde, 0x0dde, 0x0dde, 0x0dde, 0x0dde, 0x0dde, + 0x11f5, 0x11f5, 0x120e, 0x121a, 0x1236, 0x124e, 0x124e, 0x125d, + 0x127f, 0x129e, 0x12aa, 0x12b6, 0x12c8, 0x12d7, 0x12e9, 0x12e9, + 0x12e9, 0x12fb, 0x130d, 0x131c, 0x131c, 0x131c, 0x131c, 0x131c, + 0x132b, 0x133a, 0x1343, 0x134f, 0x134f, 0x1361, 0x1361, 0x136d, + 0x137c, 0x13a0, 0x13a0, 0x13ac, 0x13ac, 0x13b8, 0x13b8, 0x13d4, + 0x13d4, 0x13d4, 0x13e0, 0x13f2, 0x140a, 0x142c, 0x143e, 0x143e, + 0x144a, 0x1469, 0x1469, 0x1469, 0x147e, 0x148d, 0x14a2, 0x14b1, + 0x14c9, 0x14d8, 0x14d8, 0x14ea, 0x14f9, 0x14f9, 0x14f9, 0x150b, // Entry 180 - 1BF - 0x0dde, 0x0ded, 0x0ded, 0x0ded, 0x0ded, 0x0e09, 0x0e09, 0x0e09, - 0x0e09, 0x0e09, 0x0e12, 0x0e12, 0x0e1e, 0x0e1e, 0x0e1e, 0x0e1e, - 0x0e1e, 0x0e1e, 0x0e2d, 0x0e2d, 0x0e2d, 0x0e39, 0x0e39, 0x0e39, - 0x0e39, 0x0e39, 0x0e45, 0x0e5d, 0x0e5d, 0x0e7c, 0x0e88, 0x0e88, - 0x0e88, 0x0e88, 0x0e9d, 0x0eaf, 0x0eaf, 0x0eaf, 0x0ec4, 0x0ee3, - 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0f04, 0x0f04, - 0x0f04, 0x0f10, 0x0f23, 0x0f23, 0x0f23, 0x0f23, 0x0f23, 0x0f35, - 0x0f35, 0x0f35, 0x0f35, 0x0f35, 0x0f41, 0x0f41, 0x0f4d, 0x0f4d, + 0x150b, 0x150b, 0x150b, 0x151a, 0x151a, 0x151a, 0x1529, 0x1545, + 0x1545, 0x1545, 0x1545, 0x1554, 0x155d, 0x156c, 0x1578, 0x1578, + 0x1578, 0x158d, 0x158d, 0x159c, 0x15ab, 0x15ba, 0x15ba, 0x15c6, + 0x15c6, 0x15d8, 0x15d8, 0x15e7, 0x15f3, 0x160b, 0x160b, 0x162a, + 0x1636, 0x1648, 0x1669, 0x1669, 0x167e, 0x168d, 0x1699, 0x1699, + 0x16ae, 0x16d6, 0x16e5, 0x16fa, 0x16fa, 0x16fa, 0x16fa, 0x170c, + 0x172d, 0x174d, 0x1768, 0x1774, 0x1787, 0x1799, 0x17a5, 0x17b4, + 0x17b4, 0x17c6, 0x17db, 0x17ea, 0x17ea, 0x17ea, 0x17f6, 0x1812, // Entry 1C0 - 1FF - 0x0f4d, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, - 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, - 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f71, 0x0f71, - 0x0f89, 0x0f89, 0x0f89, 0x0f89, 0x0f89, 0x0f98, 0x0f98, 0x0f98, - 0x0f98, 0x0f98, 0x0f98, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb3, - 0x0fb3, 0x0fc5, 0x0fc5, 0x0fc5, 0x0fd4, 0x0fd4, 0x0fd4, 0x0fd4, - 0x0ff9, 0x0ff9, 0x1005, 0x1005, 0x1005, 0x1030, 0x1030, 0x1030, - 0x1045, 0x1051, 0x1051, 0x1051, 0x1051, 0x1051, 0x106d, 0x1086, + 0x181e, 0x181e, 0x181e, 0x1836, 0x1836, 0x1836, 0x1836, 0x1836, + 0x1851, 0x1851, 0x1869, 0x1887, 0x1899, 0x1899, 0x18c7, 0x18c7, + 0x18c7, 0x18c7, 0x18c7, 0x18c7, 0x18c7, 0x18c7, 0x18c7, 0x18dc, + 0x18dc, 0x18e8, 0x18e8, 0x1900, 0x1915, 0x1930, 0x1930, 0x1930, + 0x193f, 0x193f, 0x193f, 0x193f, 0x193f, 0x195a, 0x1963, 0x1972, + 0x197e, 0x197e, 0x1990, 0x1990, 0x19a2, 0x19a2, 0x19b4, 0x19c3, + 0x19db, 0x19ea, 0x19ea, 0x1a0f, 0x1a0f, 0x1a1b, 0x1a1b, 0x1a1b, + 0x1a46, 0x1a46, 0x1a46, 0x1a5b, 0x1a67, 0x1a67, 0x1a67, 0x1a67, // Entry 200 - 23F - 0x10a2, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, - 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, - 0x10be, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, - 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, - 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10ca, 0x10df, 0x10df, 0x110b, - 0x110b, 0x110b, 0x110b, 0x112a, 0x1133, 0x1133, 0x1133, 0x1133, - 0x1133, 0x1133, 0x1133, 0x1142, 0x1142, 0x1142, 0x1142, 0x1142, - 0x1157, 0x1157, 0x1157, 0x1157, 0x1163, 0x1163, 0x1163, 0x1163, + 0x1a67, 0x1a83, 0x1a9c, 0x1ab8, 0x1ad4, 0x1ae9, 0x1ae9, 0x1b0e, + 0x1b0e, 0x1b1a, 0x1b1a, 0x1b2c, 0x1b2c, 0x1b2c, 0x1b44, 0x1b44, + 0x1b56, 0x1b56, 0x1b56, 0x1b65, 0x1b71, 0x1b71, 0x1b7d, 0x1b8c, + 0x1b8c, 0x1b8c, 0x1b8c, 0x1b9e, 0x1b9e, 0x1b9e, 0x1b9e, 0x1b9e, + 0x1bb7, 0x1bb7, 0x1bc9, 0x1bc9, 0x1bc9, 0x1bc9, 0x1bde, 0x1bf3, + 0x1c08, 0x1c20, 0x1c4c, 0x1c5e, 0x1c5e, 0x1c73, 0x1c7c, 0x1c85, + 0x1c85, 0x1c85, 0x1c85, 0x1c85, 0x1c85, 0x1c85, 0x1c94, 0x1ca3, + 0x1cb8, 0x1cc4, 0x1cc4, 0x1cd9, 0x1cec, 0x1cfe, 0x1cfe, 0x1d0a, // Entry 240 - 27F - 0x1163, 0x1163, 0x1163, 0x1163, 0x1163, 0x1163, 0x1163, 0x11a1, - 0x11a1, 0x11dd, 0x11dd, 0x120c, 0x120c, 0x122e, 0x1251, 0x1288, - 0x12b9, 0x12e7, 0x1312, 0x1347, 0x1366, 0x1391, 0x1391, 0x13c2, - 0x13e7, 0x13fd, 0x1412, 0x144c, 0x1474, 0x148f, 0x148f, 0x14b4, - 0x14ca, 0x14e9, -} // Size: 1244 bytes - -var plLangStr string = "" + // Size: 5558 bytes + 0x1d0a, 0x1d0a, 0x1d1f, 0x1d2e, 0x1d2e, 0x1d49, 0x1d49, 0x1d49, + 0x1d49, 0x1d49, 0x1d87, 0x1d96, 0x1ddf, 0x1df1, 0x1e20, 0x1e20, + 0x1e44, 0x1e44, 0x1e44, 0x1e44, 0x1e74, 0x1ea1, 0x1ea1, 0x1ec2, + 0x1ec2, 0x1ec2, 0x1ef5, 0x1ef5, 0x1f0b, 0x1f20, 0x1f56, 0x1f80, + 0x1f9b, 0x1f9b, 0x1f9b, 0x1fb3, 0x1fd4, +} // Size: 1250 bytes + +const plLangStr string = "" + // Size: 5567 bytes "afarabchaskiawestyjskiafrikaansakanamharskiaragońskiarabskiasamskiawarsk" + - "iajmaraazerskibaszkirskibiałoruskibułgarskibislamabambarabengalskitybeta" + - "ńskibretońskibośniackikatalońskiczeczeńskichamorrokorsykańskikriczeskis" + - "taro-cerkiewno-słowiańskiczuwaskiwalijskiduńskiniemieckimalediwskidzongk" + - "haewegreckiangielskiesperantohiszpańskiestońskibaskijskiperskifulanifińs" + - "kifidżijskifarerskifrancuskizachodniofryzyjskiirlandzkiszkocki gaelickig" + - "alicyjskiguaranigudźarackimanxhausahebrajskihindihiri motuchorwackihaita" + - "ńskiwęgierskiormiańskihererointerlinguaindonezyjskiinterlingueigbosyczu" + - "ańskiinupiakidoislandzkiwłoskiinuktitutjapońskijawajskigruzińskikongokik" + - "ujukwanyamakazachskigrenlandzkikhmerskikannadakoreańskikanurikaszmirskik" + - "urdyjskikomikornijskikirgiskiłacińskiluksemburskigandalimburgijskilingal" + - "alaotańskilitewskiluba-katangałotewskimalgaskimarshallmaoryjskimacedońsk" + - "imalajalammongolskimarathimalajskimaltańskibirmańskinaurundebele północn" + - "ynepalskindonganiderlandzkinorweski (nynorsk)norweski (bokmål)ndebele po" + - "łudniowynawahonjandżaprowansalskiodżibwaoromskiorijaosetyjskipendżabski" + - "palijskipolskipasztoportugalskikeczuaretoromańskirundirumuńskirosyjskiki" + - "nya-ruandasanskrytsardyńskisindhilapoński północnysangosyngaleskisłowack" + - "isłoweńskisamoańskiszonasomalijskialbańskiserbskisiswatisotho południowy" + - "sundajskiszwedzkisuahilitamilskitelugutadżyckitajskitigriniaturkmeńskise" + - "tswanatongatureckitsongatatarskitahitańskiujgurskiukraińskiurduuzbeckive" + - "ndawietnamskivolapukwalońskiwolofkhosajidyszjorubaczuangchińskizuluaceha" + - "czoliadangmeadygejskitunezyjski arabskiafrihiliaghemajnuakadyjskialabama" + - "aleuckialbański gegijskipołudniowoałtajskistaroangielskiangikaaramejskia" + - "raukańskiaraonaarapahoalgierski arabskiarawakmarokański arabskiegipski a" + - "rabskiasuamerykański język migowyasturyjskikotavaawadhibeludżibalijskiba" + - "warskibasabamumbatak tobaghomalabedżabembabetawibenabafutbadagabeludżi p" + - "ółnocnybhodźpuribikolbinibanjarkomsiksikabisznuprija-manipuribachtiarsk" + - "ibradźbrahuibodoakoseburiackibugińskibulublinmedumbakaddokaribikajugaats" + - "amcebuanochigaczibczaczagatajskitrukmaryjskiżargon Chinookchoctawchipewy" + - "anczirokeskijęzyk Czejenówsoranikoptyjskicapiznonkrymski tureckikaszubsk" + - "idakotadargwijskitaitadelawareslavedogribdinkadżermadogridolnołużyckidus" + - "un centralnydualaśredniowieczny niderlandzkidioladyuladazagaembuefikemil" + - "ijskistarożytny egipskiekajukelamickiśrednioangielskiyupik środkowosyber" + - "yjskiewondoestremadurskifangfilipinomeänkielifoncajunśredniofrancuskista" + - "rofrancuskifranko-prowansalskipółnocnofryzyjskifryzyjski wschodnifriulij" + - "skigagagauskigangayogbayazaratusztriański darigyyzgilbertańskigiliańskiś" + - "rednio-wysoko-niemieckistaro-wysoko-niemieckikonkani (Goa)gondigorontalo" + - "gockigrebostarogreckiszwajcarski niemieckiwayúufrafragusiigwichʼinhaidah" + - "akkahawajskihindi fidżyjskiehiligajnonhetyckihmongijskigórnołużyckixiang" + - "hupaibanagibibioilokanoinguskiingryjskijamajskilojbanngombemachamejudeop" + - "erskijudeoarabskijutlandzkikarakałpackikabylskikaczinjjukambakawikabardy" + - "jskikanembutyapmakondekreolski Wysp Zielonego Przylądkakenyangkorokainga" + - "ngkhasichotańskikoyra chinikhowarkirmandżkikakokalenjinkimbundukomi-perm" + - "iackikonkanikosraekpellekaraczajsko-bałkarskikriokinarayakarelskikurukhs" + - "ambalabafiagwara kolońskakumyckikutenailadyńskilangilahndalambalezgijski" + - "Lingua Franca Novaliguryjskiliwskilakotalombardzkimongoloziluryjski półn" + - "ocnyłatgalskiluba-lulualuisenolundaluolushailuhyachiński klasycznylazyjs" + - "kimadurajskimafamagahimaithilimakasarmandingomasajskimabamokshamandarmen" + - "demerukreolski Mauritiusaśrednioirlandzkimakuametamicmacminangkabumanchu" + - "manipuryjskimohawkmossizachodniomaryjskimundangwiele językówcreekmirande" + - "semarwarimentawaimyeneerzyamazanderańskiminnańskineapolitańskinamadolnon" + - "iemieckinewarskiniasniueaongumbangiemboonnogajskistaronordyjskinovialn’k" + - "osotho północnynuernewarski klasycznyniamwezinyankolenyoronzemaosageosma" + - "ńsko-tureckipangasinopahlavipampangopapiamentopalaupikardyjskipensylwań" + - "skiplautdietschstaroperskipalatynackifenickipiemonckipontyjskiponpejskip" + - "ruskistaroprowansalskikiczechimborazo górski keczuaradźasthanirapanuirar" + - "otongaromagnoltarifitrombocygańskirotumańskirusińskirovianaarumuńskirwas" + - "andawejakuckisamarytański aramejskisamburusasaksantalisaurasztryjskingam" + - "baysangusycylijskiszkockisassarskipołudniowokurdyjskisenekasenaseriselku" + - "pskikoyraboro sennistaroirlandzkiżmudzkitashelhiytshanarabski (Czad)sida" + - "modolnośląskiselayarlapoński południowylapoński Lulelapoński Inarilapońs" + - "ki Skoltsoninkesogdyjskisranan tongoserersahofryzyjski saterlandzkisukum" + - "asususumeryjskikomoryjskisyriackisyryjskiśląskitulutemneatesoterenotetum" + - "tigretiwtokelaucachurskiklingońskitlingittałyskitamaszektonga (Niasa)tok" + - " pisinturoyotarokocakońskitsimshiantackitumbukatuvalutasawaqtuwińskicent" + - "ralnomarokański tamazightudmurckiugaryckiumbundujęzyk rdzennywaiweneckiw" + - "epskizachodnioflamandzkimeński frankońskiwotiackivõrovunjowalserwalamowa" + - "rajwashoWarlpiriwukałmuckimegrelskisogayaojapskiyangbenyembanhengatukant" + - "ońskizapoteckiblisszelandzkizenagastandardowy marokański tamazightzunibr" + - "ak treści o charakterze językowymzazakiwspółczesny arabskiaustriacki nie" + - "mieckiwysokoniemiecki (Szwajcaria)australijski angielskikanadyjski angie" + - "lskibrytyjski angielskiamerykański angielskiamerykański hiszpańskieurope" + - "jski hiszpańskimeksykański hiszpańskikanadyjski francuskiszwajcarski fra" + - "ncuskiflamandzkibrazylijski portugalskieuropejski portugalskimołdawskise" + - "rbsko-chorwackikongijski suahilichiński (uproszczony)chiński (tradycyjny" + - ")" - -var plLangIdx = []uint16{ // 610 elements + "iajmaraazerbejdżańskibaszkirskibiałoruskibułgarskibislamabambarabengalsk" + + "itybetańskibretońskibośniackikatalońskiczeczeńskiczamorrokorsykańskikric" + + "zeskicerkiewnosłowiańskiczuwaskiwalijskiduńskiniemieckimalediwskidzongkh" + + "aewegreckiangielskiesperantohiszpańskiestońskibaskijskiperskifulanifińsk" + + "ifidżijskifarerskifrancuskizachodniofryzyjskiirlandzkiszkocki gaelickiga" + + "licyjskiguaranigudżaratimanxhausahebrajskihindihiri motuchorwackikreolsk" + + "i haitańskiwęgierskiormiańskihererointerlinguaindonezyjskiinterlingueigb" + + "osyczuańskiinupiakidoislandzkiwłoskiinuktitutjapońskijawajskigruzińskiko" + + "ngokikujukwanyamakazachskigrenlandzkikhmerskikannadakoreańskikanurikaszm" + + "irskikurdyjskikomikornijskikirgiskiłacińskiluksemburskigandalimburskilin" + + "galalaotańskilitewskiluba-katangałotewskimalgaskimarszalskimaoryjskimace" + + "dońskimalajalammongolskimarathimalajskimaltańskibirmańskinaurundebele pó" + + "łnocnynepalskindonganiderlandzkinorweski (nynorsk)norweski (bokmål)ndeb" + + "ele południowynawahonjandżaoksytańskiodżibwaoromoorijaosetyjskipendżabsk" + + "ipalijskipolskipasztoportugalskikeczuaretoromańskirundirumuńskirosyjskik" + + "inya-ruandasanskrytsardyńskisindhipółnocnolapońskisangosyngaleskisłowack" + + "isłoweńskisamoańskishonasomalijskialbańskiserbskisuazisotho południowysu" + + "ndajskiszwedzkisuahilitamilskitelugutadżyckitajskitigriniaturkmeńskisets" + + "wanatongatureckitsongatatarskitahitańskiujgurskiukraińskiurduuzbeckivend" + + "awietnamskiwolapikwalońskiwolofkhosajidyszjorubaczuangchińskizuluacehacz" + + "oliadangmeadygejskitunezyjski arabskiafrihiliaghemajnuakadyjskialabamaal" + + "euckialbański gegijskipołudniowoałtajskistaroangielskiangikaaramejskimap" + + "udungunaraonaarapahoalgierski arabskiarawakmarokański arabskiegipski ara" + + "bskiasuamerykański język migowyasturyjskikotavaawadhibeludżibalijskibawa" + + "rskibasaabamumbatak tobaghomalabedżabembabetawibenabafutbadagabeludżi pó" + + "łnocnybhodźpuribikolbinibanjarkomsiksikabisznuprija-manipuribachtiarski" + + "bradźbrahuibodoakooseburiackibugijskibulublinmedumbakaddokaraibskikajuga" + + "atsamcebuanochigaczibczaczagatajskichuukmaryjskiżargon czinuckiczoktawsk" + + "iczipewiańskiczirokeskiczejeńskisoranikoptyjskicapiznonkrymskotatarskikr" + + "eolski seszelskikaszubskidakotadargwijskitaitadelawareslavedogribdinkadż" + + "ermadogridolnołużyckidusun centralnydualaśredniowieczny niderlandzkidiol" + + "adiuladazagaembuefikemilijskistaroegipskiekajukelamickiśrednioangielskiy" + + "upik środkowosyberyjskiewondoestremadurskifangfilipinomeänkielifoncajuńs" + + "kiśredniofrancuskistarofrancuskifranko-prowansalskipółnocnofryzyjskiwsch" + + "odniofryzyjskifriulskigagagauskigangayogbayazaratusztriański darigyyzgil" + + "bertańskigiliańskiśrednio-wysoko-niemieckistaro-wysoko-niemieckikonkani " + + "(Goa)gondigorontalogockigrebostarogreckiszwajcarski niemieckiwayúufrafra" + + "gusiigwichʼinhaidahakkahawajskihindi fidżyjskiehiligaynonhetyckihmonggór" + + "nołużyckixianghupaibanibibioilokanoinguskiingryjskijamajskilojbanngombem" + + "achamejudeo-perskijudeoarabskijutlandzkikarakałpackikabylskikaczinjjukam" + + "bakawikabardyjskikanembutyapmakondekreolski Wysp Zielonego Przylądkakeny" + + "angkorokaingangkhasichotańskikoyra chiinikhowarkirmandżkikakokalenjinkim" + + "bundukomi-permiackikonkanikosraekpellekaraczajsko-bałkarskikriokinarayak" + + "arelskikurukhsambalabafiagwara kolońskakumyckikutenailadyńskilangilahnda" + + "lambalezgijskiLingua Franca Novaliguryjskiliwskilakotalombardzkimongoloz" + + "iluryjski północnyłatgalskiluba-lulualuisenolundaluomizoluhyachiński kla" + + "sycznylazyjskimadurajskimafamagahimaithilimakasarmandingomasajskimabamok" + + "szamandarmendemerukreolski Mauritiusaśrednioirlandzkimakuametamikmakmina" + + "ngkabumanchumanipurimohawkmossizachodniomaryjskimundangwiele językówkrik" + + "mirandyjskimarwarimentawaimyeneerzjamazanderańskiminnańskineapolitańskin" + + "amadolnoniemieckinewarskiniasniueaongumbangiemboonnogajskistaronordyjski" + + "novialn’kosotho północnynuernewarski klasycznyniamwezinyankolenyoronzema" + + "osageosmańsko-tureckipangasinopahlavipampangopapiamentopalaupikardyjskip" + + "idżyn nigeryjskipensylwańskiplautdietschstaroperskipalatynackifenickipie" + + "monckipontyjskiponpejskipruskistaroprowansalskikiczekeczua górski (Chimb" + + "orazo)radźasthanirapanuirarotongaromagnoltarifitrombocygańskirotumańskir" + + "usińskirovianaarumuńskirwasandawejakuckisamarytański aramejskisamburusas" + + "aksantalisaurasztryjskingambaysangusycylijskiscotssassarskipołudniowokur" + + "dyjskisenekasenaseriselkupskikoyraboro sennistaroirlandzkiżmudzkitashelh" + + "iytszanarabski (Czad)sidamodolnośląskiselayarpołudniowolapońskiluleinari" + + "skoltsoninkesogdyjskisranan tongoserersahofryzyjski saterlandzkisukumasu" + + "susumeryjskikomoryjskisyriackisyryjskiśląskitulutemneatesoterenotetumtig" + + "retiwtokelaucachurskiklingońskitlingittałyskitamaszektonga (Niasa)tok pi" + + "sinturoyotarokocakońskitsimshiantackitumbukatuvalutasawaqtuwińskitamazig" + + "ht (Atlas Środkowy)udmurckiugaryckiumbundujęzyk rdzennywaiweneckiwepskiz" + + "achodnioflamandzkimeński frankońskiwotiackivõrovunjowalserwolaytawarajwa" + + "showarlpiriwukałmuckimegrelskisogayaojapskiyangbenyembanheengatukantońsk" + + "izapoteckiblisszelandzkizenagastandardowy marokański tamazightzunibrak t" + + "reści o charakterze językowymzazakiwspółczesny arabskiaustriacki niemiec" + + "kiwysokoniemiecki (Szwajcaria)australijski angielskikanadyjski angielski" + + "brytyjski angielskiamerykański angielskiamerykański hiszpańskieuropejski" + + " hiszpańskimeksykański hiszpańskikanadyjski francuskiszwajcarski francus" + + "kidolnosaksońskiflamandzkibrazylijski portugalskieuropejski portugalskim" + + "ołdawskiserbsko-chorwackikongijski suahilichiński uproszczonychiński tra" + + "dycyjny" + +var plLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000c, 0x0016, 0x001f, 0x0023, 0x002b, 0x0035, - 0x003c, 0x0043, 0x004a, 0x0050, 0x0057, 0x0061, 0x006c, 0x0076, - 0x007d, 0x0084, 0x008d, 0x0098, 0x00a2, 0x00ac, 0x00b7, 0x00c2, - 0x00ca, 0x00d6, 0x00d9, 0x00df, 0x00fb, 0x0103, 0x010b, 0x0112, - 0x011b, 0x0125, 0x012d, 0x0130, 0x0136, 0x013f, 0x0148, 0x0153, - 0x015c, 0x0165, 0x016b, 0x0171, 0x0178, 0x0182, 0x018a, 0x0193, - 0x01a5, 0x01ae, 0x01be, 0x01c8, 0x01cf, 0x01da, 0x01de, 0x01e3, - 0x01ec, 0x01f1, 0x01fa, 0x0203, 0x020d, 0x0217, 0x0221, 0x0227, + 0x003c, 0x0043, 0x004a, 0x0050, 0x0060, 0x006a, 0x0075, 0x007f, + 0x0086, 0x008d, 0x0096, 0x00a1, 0x00ab, 0x00b5, 0x00c0, 0x00cb, + 0x00d3, 0x00df, 0x00e2, 0x00e8, 0x00fd, 0x0105, 0x010d, 0x0114, + 0x011d, 0x0127, 0x012f, 0x0132, 0x0138, 0x0141, 0x014a, 0x0155, + 0x015e, 0x0167, 0x016d, 0x0173, 0x017a, 0x0184, 0x018c, 0x0195, + 0x01a7, 0x01b0, 0x01c0, 0x01ca, 0x01d1, 0x01db, 0x01df, 0x01e4, + 0x01ed, 0x01f2, 0x01fb, 0x0204, 0x0217, 0x0221, 0x022b, 0x0231, // Entry 40 - 7F - 0x0232, 0x023e, 0x0249, 0x024d, 0x0258, 0x025f, 0x0262, 0x026b, - 0x0272, 0x027b, 0x0284, 0x028c, 0x0296, 0x029b, 0x02a1, 0x02a9, - 0x02b2, 0x02bd, 0x02c5, 0x02cc, 0x02d6, 0x02dc, 0x02e6, 0x02ef, - 0x02f3, 0x02fc, 0x0304, 0x030e, 0x031a, 0x031f, 0x032b, 0x0332, - 0x033c, 0x0344, 0x0350, 0x0359, 0x0361, 0x0369, 0x0372, 0x037d, - 0x0386, 0x038f, 0x0396, 0x039e, 0x03a8, 0x03b2, 0x03b7, 0x03c9, - 0x03d1, 0x03d7, 0x03e3, 0x03f5, 0x0407, 0x041a, 0x0420, 0x0428, - 0x0434, 0x043c, 0x0443, 0x0448, 0x0451, 0x045c, 0x0464, 0x046a, + 0x023c, 0x0248, 0x0253, 0x0257, 0x0262, 0x0269, 0x026c, 0x0275, + 0x027c, 0x0285, 0x028e, 0x0296, 0x02a0, 0x02a5, 0x02ab, 0x02b3, + 0x02bc, 0x02c7, 0x02cf, 0x02d6, 0x02e0, 0x02e6, 0x02f0, 0x02f9, + 0x02fd, 0x0306, 0x030e, 0x0318, 0x0324, 0x0329, 0x0332, 0x0339, + 0x0343, 0x034b, 0x0357, 0x0360, 0x0368, 0x0372, 0x037b, 0x0386, + 0x038f, 0x0398, 0x039f, 0x03a7, 0x03b1, 0x03bb, 0x03c0, 0x03d2, + 0x03da, 0x03e0, 0x03ec, 0x03fe, 0x0410, 0x0423, 0x0429, 0x0431, + 0x043c, 0x0444, 0x0449, 0x044e, 0x0457, 0x0462, 0x046a, 0x0470, // Entry 80 - BF - 0x0470, 0x047b, 0x0481, 0x048e, 0x0493, 0x049c, 0x04a4, 0x04b0, - 0x04b8, 0x04c2, 0x04c8, 0x04dc, 0x04e1, 0x04eb, 0x04f4, 0x04ff, - 0x0509, 0x050e, 0x0518, 0x0521, 0x0528, 0x052f, 0x0540, 0x0549, - 0x0551, 0x0558, 0x0560, 0x0566, 0x056f, 0x0575, 0x057d, 0x0588, - 0x0590, 0x0595, 0x059c, 0x05a2, 0x05aa, 0x05b5, 0x05bd, 0x05c7, - 0x05cb, 0x05d2, 0x05d7, 0x05e1, 0x05e8, 0x05f1, 0x05f6, 0x05fb, - 0x0601, 0x0607, 0x060d, 0x0615, 0x0619, 0x061d, 0x0623, 0x062a, - 0x0633, 0x0645, 0x064d, 0x0652, 0x0656, 0x065f, 0x0666, 0x066d, + 0x0476, 0x0481, 0x0487, 0x0494, 0x0499, 0x04a2, 0x04aa, 0x04b6, + 0x04be, 0x04c8, 0x04ce, 0x04e1, 0x04e6, 0x04f0, 0x04f9, 0x0504, + 0x050e, 0x0513, 0x051d, 0x0526, 0x052d, 0x0532, 0x0543, 0x054c, + 0x0554, 0x055b, 0x0563, 0x0569, 0x0572, 0x0578, 0x0580, 0x058b, + 0x0593, 0x0598, 0x059f, 0x05a5, 0x05ad, 0x05b8, 0x05c0, 0x05ca, + 0x05ce, 0x05d5, 0x05da, 0x05e4, 0x05eb, 0x05f4, 0x05f9, 0x05fe, + 0x0604, 0x060a, 0x0610, 0x0618, 0x061c, 0x0620, 0x0626, 0x062d, + 0x0636, 0x0648, 0x0650, 0x0655, 0x0659, 0x0662, 0x0669, 0x0670, // Entry C0 - FF - 0x067f, 0x0693, 0x06a1, 0x06a7, 0x06b0, 0x06bb, 0x06c1, 0x06c8, - 0x06d9, 0x06df, 0x06f2, 0x0701, 0x0704, 0x071e, 0x0728, 0x072e, - 0x0734, 0x073c, 0x0744, 0x074c, 0x0750, 0x0755, 0x075f, 0x0766, - 0x076c, 0x0771, 0x0777, 0x077b, 0x0780, 0x0786, 0x0799, 0x07a3, - 0x07a8, 0x07ac, 0x07b2, 0x07b5, 0x07bc, 0x07d0, 0x07db, 0x07e1, - 0x07e7, 0x07eb, 0x07f0, 0x07f8, 0x0801, 0x0805, 0x0809, 0x0810, - 0x0815, 0x081b, 0x0821, 0x0826, 0x082d, 0x0832, 0x0839, 0x0844, - 0x0848, 0x0850, 0x085f, 0x0866, 0x086f, 0x0879, 0x0889, 0x088f, + 0x0682, 0x0696, 0x06a4, 0x06aa, 0x06b3, 0x06bd, 0x06c3, 0x06ca, + 0x06db, 0x06db, 0x06e1, 0x06f4, 0x0703, 0x0706, 0x0720, 0x072a, + 0x0730, 0x0736, 0x073e, 0x0746, 0x074e, 0x0753, 0x0758, 0x0762, + 0x0769, 0x076f, 0x0774, 0x077a, 0x077e, 0x0783, 0x0789, 0x079c, + 0x07a6, 0x07ab, 0x07af, 0x07b5, 0x07b8, 0x07bf, 0x07d3, 0x07de, + 0x07e4, 0x07ea, 0x07ee, 0x07f4, 0x07fc, 0x0804, 0x0808, 0x080c, + 0x0813, 0x0818, 0x0821, 0x0827, 0x082c, 0x0833, 0x0838, 0x083f, + 0x084a, 0x084f, 0x0857, 0x0867, 0x0871, 0x087e, 0x0888, 0x0892, // Entry 100 - 13F - 0x0898, 0x08a0, 0x08af, 0x08b8, 0x08be, 0x08c8, 0x08cd, 0x08d5, - 0x08da, 0x08e0, 0x08e5, 0x08ec, 0x08f1, 0x08ff, 0x090e, 0x0913, - 0x092f, 0x0934, 0x0939, 0x093f, 0x0943, 0x0947, 0x0950, 0x0963, - 0x0969, 0x0971, 0x0982, 0x099b, 0x09a1, 0x09ae, 0x09b2, 0x09ba, - 0x09c4, 0x09c7, 0x09cc, 0x09dd, 0x09eb, 0x09fe, 0x0a11, 0x0a23, - 0x0a2d, 0x0a2f, 0x0a37, 0x0a3a, 0x0a3e, 0x0a43, 0x0a59, 0x0a5d, - 0x0a6a, 0x0a74, 0x0a8d, 0x0aa3, 0x0ab0, 0x0ab5, 0x0abe, 0x0ac3, - 0x0ac8, 0x0ad3, 0x0ae8, 0x0aee, 0x0af4, 0x0af9, 0x0b02, 0x0b07, + 0x0898, 0x08a1, 0x08a9, 0x08b8, 0x08ca, 0x08d3, 0x08d9, 0x08e3, + 0x08e8, 0x08f0, 0x08f5, 0x08fb, 0x0900, 0x0907, 0x090c, 0x091a, + 0x0929, 0x092e, 0x094a, 0x094f, 0x0954, 0x095a, 0x095e, 0x0962, + 0x096b, 0x0977, 0x097d, 0x0985, 0x0996, 0x09af, 0x09b5, 0x09c2, + 0x09c6, 0x09ce, 0x09d8, 0x09db, 0x09e4, 0x09f5, 0x0a03, 0x0a16, + 0x0a29, 0x0a3b, 0x0a43, 0x0a45, 0x0a4d, 0x0a50, 0x0a54, 0x0a59, + 0x0a6f, 0x0a73, 0x0a80, 0x0a8a, 0x0aa3, 0x0ab9, 0x0ac6, 0x0acb, + 0x0ad4, 0x0ad9, 0x0ade, 0x0ae9, 0x0afe, 0x0b04, 0x0b0a, 0x0b0f, // Entry 140 - 17F - 0x0b0c, 0x0b14, 0x0b25, 0x0b2f, 0x0b36, 0x0b40, 0x0b4f, 0x0b54, - 0x0b58, 0x0b5e, 0x0b64, 0x0b6b, 0x0b72, 0x0b7b, 0x0b83, 0x0b89, - 0x0b8f, 0x0b96, 0x0ba1, 0x0bad, 0x0bb7, 0x0bc4, 0x0bcc, 0x0bd2, - 0x0bd5, 0x0bda, 0x0bde, 0x0be9, 0x0bf0, 0x0bf4, 0x0bfb, 0x0c1d, - 0x0c24, 0x0c28, 0x0c30, 0x0c35, 0x0c3f, 0x0c4a, 0x0c50, 0x0c5b, - 0x0c5f, 0x0c67, 0x0c6f, 0x0c7d, 0x0c84, 0x0c8a, 0x0c90, 0x0ca6, - 0x0caa, 0x0cb2, 0x0cba, 0x0cc0, 0x0cc7, 0x0ccc, 0x0cdb, 0x0ce2, - 0x0ce9, 0x0cf2, 0x0cf7, 0x0cfd, 0x0d02, 0x0d0b, 0x0d1d, 0x0d27, + 0x0b18, 0x0b1d, 0x0b22, 0x0b2a, 0x0b3b, 0x0b45, 0x0b4c, 0x0b51, + 0x0b60, 0x0b65, 0x0b69, 0x0b6d, 0x0b73, 0x0b7a, 0x0b81, 0x0b8a, + 0x0b92, 0x0b98, 0x0b9e, 0x0ba5, 0x0bb1, 0x0bbd, 0x0bc7, 0x0bd4, + 0x0bdc, 0x0be2, 0x0be5, 0x0bea, 0x0bee, 0x0bf9, 0x0c00, 0x0c04, + 0x0c0b, 0x0c2d, 0x0c34, 0x0c38, 0x0c40, 0x0c45, 0x0c4f, 0x0c5b, + 0x0c61, 0x0c6c, 0x0c70, 0x0c78, 0x0c80, 0x0c8e, 0x0c95, 0x0c9b, + 0x0ca1, 0x0cb7, 0x0cbb, 0x0cc3, 0x0ccb, 0x0cd1, 0x0cd8, 0x0cdd, + 0x0cec, 0x0cf3, 0x0cfa, 0x0d03, 0x0d08, 0x0d0e, 0x0d13, 0x0d1c, // Entry 180 - 1BF - 0x0d2d, 0x0d33, 0x0d3d, 0x0d42, 0x0d46, 0x0d59, 0x0d63, 0x0d6d, - 0x0d74, 0x0d79, 0x0d7c, 0x0d82, 0x0d87, 0x0d99, 0x0da1, 0x0dab, - 0x0daf, 0x0db5, 0x0dbd, 0x0dc4, 0x0dcc, 0x0dd4, 0x0dd8, 0x0dde, - 0x0de4, 0x0de9, 0x0ded, 0x0e00, 0x0e11, 0x0e16, 0x0e1a, 0x0e20, - 0x0e2a, 0x0e30, 0x0e3c, 0x0e42, 0x0e47, 0x0e58, 0x0e5f, 0x0e6e, - 0x0e73, 0x0e7c, 0x0e83, 0x0e8b, 0x0e90, 0x0e95, 0x0ea3, 0x0ead, - 0x0ebb, 0x0ebf, 0x0ecd, 0x0ed5, 0x0ed9, 0x0edd, 0x0edf, 0x0ee5, - 0x0eee, 0x0ef6, 0x0f04, 0x0f0a, 0x0f10, 0x0f20, 0x0f24, 0x0f36, + 0x0d2e, 0x0d38, 0x0d3e, 0x0d44, 0x0d4e, 0x0d53, 0x0d57, 0x0d6a, + 0x0d74, 0x0d7e, 0x0d85, 0x0d8a, 0x0d8d, 0x0d91, 0x0d96, 0x0da8, + 0x0db0, 0x0dba, 0x0dbe, 0x0dc4, 0x0dcc, 0x0dd3, 0x0ddb, 0x0de3, + 0x0de7, 0x0ded, 0x0df3, 0x0df8, 0x0dfc, 0x0e0f, 0x0e20, 0x0e25, + 0x0e29, 0x0e2f, 0x0e39, 0x0e3f, 0x0e47, 0x0e4d, 0x0e52, 0x0e63, + 0x0e6a, 0x0e79, 0x0e7d, 0x0e88, 0x0e8f, 0x0e97, 0x0e9c, 0x0ea1, + 0x0eaf, 0x0eb9, 0x0ec7, 0x0ecb, 0x0ed9, 0x0ee1, 0x0ee5, 0x0ee9, + 0x0eeb, 0x0ef1, 0x0efa, 0x0f02, 0x0f10, 0x0f16, 0x0f1c, 0x0f2c, // Entry 1C0 - 1FF - 0x0f3e, 0x0f46, 0x0f4b, 0x0f50, 0x0f55, 0x0f66, 0x0f6f, 0x0f76, - 0x0f7e, 0x0f88, 0x0f8d, 0x0f98, 0x0fa5, 0x0fb1, 0x0fbc, 0x0fc7, - 0x0fce, 0x0fd7, 0x0fe0, 0x0fe9, 0x0fef, 0x1000, 0x1005, 0x101e, - 0x102a, 0x1031, 0x103a, 0x1042, 0x1049, 0x104e, 0x1057, 0x1062, - 0x106b, 0x1072, 0x107c, 0x107f, 0x1086, 0x108d, 0x10a4, 0x10ab, - 0x10b0, 0x10b7, 0x10c5, 0x10cc, 0x10d1, 0x10db, 0x10e2, 0x10eb, - 0x10ff, 0x1105, 0x1109, 0x110d, 0x1116, 0x1125, 0x1133, 0x113b, - 0x1145, 0x1149, 0x1157, 0x115d, 0x116a, 0x1171, 0x1186, 0x1194, + 0x0f30, 0x0f42, 0x0f4a, 0x0f52, 0x0f57, 0x0f5c, 0x0f61, 0x0f72, + 0x0f7b, 0x0f82, 0x0f8a, 0x0f94, 0x0f99, 0x0fa4, 0x0fb6, 0x0fc3, + 0x0fcf, 0x0fda, 0x0fe5, 0x0fec, 0x0ff5, 0x0ffe, 0x1007, 0x100d, + 0x101e, 0x1023, 0x103e, 0x104a, 0x1051, 0x105a, 0x1062, 0x1069, + 0x106e, 0x1077, 0x1082, 0x108b, 0x1092, 0x109c, 0x109f, 0x10a6, + 0x10ad, 0x10c4, 0x10cb, 0x10d0, 0x10d7, 0x10e5, 0x10ec, 0x10f1, + 0x10fb, 0x1100, 0x1109, 0x111d, 0x1123, 0x1127, 0x112b, 0x1134, + 0x1143, 0x1151, 0x1159, 0x1163, 0x1167, 0x1175, 0x117b, 0x1188, // Entry 200 - 23F - 0x11a3, 0x11b2, 0x11b9, 0x11c2, 0x11ce, 0x11d3, 0x11d7, 0x11ed, - 0x11f3, 0x11f7, 0x1201, 0x120b, 0x1213, 0x121b, 0x1223, 0x1227, - 0x122c, 0x1231, 0x1237, 0x123c, 0x1241, 0x1244, 0x124b, 0x1254, - 0x125f, 0x1266, 0x126e, 0x1276, 0x1283, 0x128c, 0x1292, 0x1298, - 0x12a1, 0x12aa, 0x12af, 0x12b6, 0x12bc, 0x12c3, 0x12cc, 0x12ea, - 0x12f2, 0x12fa, 0x1301, 0x130f, 0x1312, 0x1319, 0x131f, 0x1332, - 0x1345, 0x134d, 0x1352, 0x1357, 0x135d, 0x1363, 0x1368, 0x136d, - 0x1375, 0x1377, 0x1380, 0x1389, 0x138d, 0x1390, 0x1396, 0x139d, + 0x118f, 0x11a3, 0x11a7, 0x11ac, 0x11b1, 0x11b8, 0x11c1, 0x11cd, + 0x11d2, 0x11d6, 0x11ec, 0x11f2, 0x11f6, 0x1200, 0x120a, 0x1212, + 0x121a, 0x1222, 0x1226, 0x122b, 0x1230, 0x1236, 0x123b, 0x1240, + 0x1243, 0x124a, 0x1253, 0x125e, 0x1265, 0x126d, 0x1275, 0x1282, + 0x128b, 0x1291, 0x1297, 0x12a0, 0x12a9, 0x12ae, 0x12b5, 0x12bb, + 0x12c2, 0x12cb, 0x12e6, 0x12ee, 0x12f6, 0x12fd, 0x130b, 0x130e, + 0x1315, 0x131b, 0x132e, 0x1341, 0x1349, 0x134e, 0x1353, 0x1359, + 0x1360, 0x1365, 0x136a, 0x1372, 0x1374, 0x137d, 0x1386, 0x138a, // Entry 240 - 27F - 0x13a2, 0x13aa, 0x13b4, 0x13bd, 0x13c2, 0x13cb, 0x13d1, 0x13f2, - 0x13f6, 0x141b, 0x1421, 0x1436, 0x1436, 0x144a, 0x1466, 0x147c, - 0x1490, 0x14a3, 0x14b9, 0x14d1, 0x14e7, 0x14ff, 0x14ff, 0x1513, - 0x1528, 0x1528, 0x1532, 0x1549, 0x155f, 0x1569, 0x157a, 0x158b, - 0x15a1, 0x15b6, -} // Size: 1244 bytes - -var ptLangStr string = "" + // Size: 4263 bytes + 0x138d, 0x1393, 0x139a, 0x139f, 0x13a8, 0x13b2, 0x13bb, 0x13c0, + 0x13c9, 0x13cf, 0x13f0, 0x13f4, 0x1419, 0x141f, 0x1434, 0x1434, + 0x1448, 0x1464, 0x147a, 0x148e, 0x14a1, 0x14b7, 0x14cf, 0x14e5, + 0x14fd, 0x14fd, 0x1511, 0x1526, 0x1535, 0x153f, 0x1556, 0x156c, + 0x1576, 0x1587, 0x1598, 0x15ac, 0x15bf, +} // Size: 1250 bytes + +const ptLangStr string = "" + // Size: 4104 bytes "afarabcázioavésticoafricânerakanamáricoaragonêsárabeassamêsavaricaimaraa" + "zerbaijanobashkirbielorrussobúlgarobislamábambarabengalitibetanobretãobó" + "sniocatalãochechenochamorrocórsicocreetchecoeslavo eclesiásticotchuvache" + @@ -19564,52 +22920,50 @@ var ptLangStr string = "" + // Size: 4263 bytes "-catangaletãomalgaxemarshalêsmaorimacedôniomalaialamongolmaratamalaiomal" + "têsbirmanêsnauruanondebele do nortenepalidongoholandêsnynorsk norueguêsb" + "okmål norueguêsndebele do sulnavajonianjaoccitânicoojibwaoromooriyaosset" + - "icpanjabipálipolonêspashtoportuguêsquíchuaromancherundiromenorussoquinia" + - "ruandasânscritosardosindisami do nortesangocingalêseslovacoeslovenosamoa" + - "noshonasomalialbanêssérvioswatisoto do sulsundanêssuecosuaílitâmiltelugu" + - "tajiquetailandêstigríniaturcomenotswanatonganêsturcotsongatatartaitianou" + - "igurucranianourduusbequevendavietnamitavolapuquevalãouólofexosaiídicheio" + - "rubazhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadianoaleú" + - "tealtai do sulinglês arcaicoangikaaramaicomapudungunarapahoarauaquiasuas" + - "turianoawadhibalúchibalinêsbasabamumghomala’bejabembabenabafutbalúchi oc" + - "identalbhojpuribikolbinikomsiksikabrajbodoakooseburiatbuginêsbulublinmed" + - "umbacaddocaribecayugaatsamcebuanochigachibchachagataichuukesemarichinook" + - " jargonchoctawchipewyancherokeecheienesorâni curdocoptaturco da Crimeiak" + - "ashubiandacotadargwataitadelawareslavedogribdinkazarmadogrisorábio baixo" + - "dualaholandês médiojola-fonyidiúladazagaembuefiqueegípcio arcaicoekajuke" + - "lamiteinglês médioewondofanguefilipinofomfrancês médiofrancês arcaicofrí" + - "sio setentrionalfrisão orientalfriulanogagagauzgayogbaiageezgilbertêsale" + - "mão médio-altoalemão arcaico altogondigorontalogóticogrebogrego arcaicoa" + - "lemão suíçogusiigwichʼinhaidahavaianohiligaynonhititahmongsorábio altohu" + - "paibanibibioilocanoinguchelojbannguembamachamejudaico-persajudaico-arábi" + - "cokara-kalpakkabylekachinjjukambakawikabardianokanembutyapmacondekabuver" + - "dianukorokhasikhotanêskoyra chiinikakokalenjinquimbundokomi-permyakconca" + - "nikosraeankpellekarachay-balkaridioma caréliokurukhshambalabafiakölschku" + - "mykkutenailadinolangilahndalambalezghianlacotamongoloziluri setentrional" + - "luba-lulualuisenolundaluolushailuyiamadurêsmafamagahimaithilimakasarmand" + - "ingamassaimabamocsamandarmendemerumorisyenirlandês médiomacuameta’miquem" + - "aqueminangkabaumanchumanipurimoicanomossimundangidiomas múltiploscreekmi" + - "randêsmarwarimyeneerzyamazandaraninapolitanonamabaixo alemãonewariniasni" + - "ueanokwasiongiemboonnogainórdico arcaicon’kosoto setentrionalnuernewari " + - "clássiconyamwezinyankolenyoronzimaosageturco otomanopangasinãpálavipampa" + - "ngapapiamentopalauanopersa arcaicofeníciopohnpeianprovençal arcaicoquich" + - "érajastanirapanuirarotonganoromboromaniaromenorwasandaweiacutoaramaico " + - "samaritanosamburusasaksantalingambaysangusicilianoescocêscurdo meridiona" + - "lsenecasenaselkupkoyraboro senniirlandês arcaicotachelhitshanárabe chadi" + - "anosidamosami do sulsami de Lulesami de Inarisami de Skoltsoninquêsogdia" + - "noidioma surinamêssereresahosukumasossosumériocomorianosiríaco clássicos" + - "iríacotimnetesoterenotétumtigrétivtoquelauanoklingontlinguitetamaxequeto" + - "nganês de Nyasatok pisintarokotsimshiantumbukatuvaluanotasawaqtuvinianot" + - "amazight do Atlas Centraludmurtugaríticoumbunduidioma desconhecidovaivot" + - "icvunjowalserwalamowaraywashowarlpirikalmyklusogayaoyapeseyangbenyembaca" + - "ntonêszapotecasímbolos bliszenagatamazight marroquino padrãozunhisem con" + - "teúdo linguísticozazaárabe modernoazeri sulalemão austríacoalto alemão s" + - "uíçoinglês australianoinglês canadenseinglês britânicoinglês americanoes" + - "panhol latino-americanoespanhol europeuespanhol mexicanofrancês canadens" + - "efrancês suíçobaixo-saxãoflamengoportuguês do Brasilportuguês europeumol" + - "dávioservo-croatasuaíli do Congochinês simplificadochinês tradicional" - -var ptLangIdx = []uint16{ // 610 elements + "opanjabipálipolonêspashtoportuguêsquíchuaromancherundiromenorussoquiniar" + + "uandasânscritosardosindisami setentrionalsangocingalêseslovacoeslovenosa" + + "moanoshonasomalialbanêssérviosuázisoto do sulsundanêssuecosuaílitâmiltel" + + "ugutajiquetailandêstigrínioturcomenotswanatonganêsturcotsongatatartaitia" + + "nouigurucranianourduusbequevendavietnamitavolapuquevalãouólofexosaiídich" + + "eiorubázhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadianoa" + + "leútealtai do sulinglês arcaicoangikaaramaicomapudungunarapahoarauaquias" + + "uasturianoawadhibalúchibalinêsbasabamumghomala’bejabembabenabafutbalúchi" + + " ocidentalbhojpuribikolbinikomsiksikabrajbodoakooseburiatobuginêsbulubli" + + "nmedumbacaddocaribecayugaatsamcebuanochigachibchachagataichuukesemarijar" + + "gão Chinookchoctawchipewyancherokeecheienesorâni curdocoptaturco da Crim" + + "eiacrioulo francês seichelensekashubiandacotadargwataitadelawareslavedog" + + "ribdinkazarmadogribaixo sorábiodualaholandês médiojola-fonyidiúladazagae" + + "mbuefiqueegípcio arcaicoekajukelamiteinglês médioewondofanguefilipinofom" + + "francês médiofrancês arcaicofrísio setentrionalfrisão orientalfriulanoga" + + "gagauzgangayogbaiageezgilbertêsalto alemão médioalemão arcaico altogondi" + + "gorontalogóticogrebogrego arcaicoalemão (Suíça)gusiigwichʼinhaidahacáhav" + + "aianohiligaynonhititahmongalto sorábioxianghupaibanibibioilocanoinguchel" + + "ojbannguembamachamejudaico-persajudaico-arábicokara-kalpakkabylekachinjj" + + "ukambakawikabardianokanembutyapmacondekabuverdianukorokhasikhotanêskoyra" + + " chiinikakokalenjinquimbundokomi-permyakconcanikosraeankpellekarachay-ba" + + "lkarcaréliokurukhshambalabafiakölschkumykkutenailadinolangilahndalambale" + + "zghianlacotamongoloziluri setentrionalluba-lulualuisenolundaluolushailuy" + + "iamadurêsmafamagahimaithilimakasarmandingamassaimabamocsamandarmendemeru" + + "morisyenirlandês médiomacuameta’miquemaqueminangkabaumanchumanipurimoica" + + "nomossimundangmúltiplos idiomascreekmirandêsmarwarimyeneerzyamazandarani" + + "min nannapolitanonamabaixo alemãonewariniasniueanokwasiongiemboonnogainó" + + "rdico arcaicon’kosoto setentrionalnuernewari clássiconyamwezinyankolenyo" + + "ronzimaosageturco otomanopangasinãpálavipampangapapiamentopalauanopidgin" + + " nigerianopersa arcaicofeníciopohnpeianoprussianoprovençal arcaicoquiché" + + "rajastanirapanuirarotonganoromboromaniaromenorwasandaweiacutoaramaico sa" + + "maritanosamburusasaksantalingambaysangusicilianoscotscurdo meridionalsen" + + "ecasenaselkupkoyraboro senniirlandês arcaicotachelhitshanárabe chadianos" + + "idamosami do sulsami de Lulesami de Inarisami de Skoltsoninquêsogdianosu" + + "rinamêssereresahosukumasususumériocomorianosiríaco clássicosiríacotimnet" + + "esoterenotétumtigrétivtoquelauanoklingontlinguitetamaxequetonganês de Ny" + + "asatok pisintarokotsimshianotumbukatuvaluanotasawaqtuvinianotamazight do" + + " Atlas Centraludmurteugaríticoumbunduraizvaivóticovunjowalserwolayttawar" + + "aywashowarlpiriwukalmyklusogayaoyapeseyangbenyembacantonêszapotecosímbol" + + "os bliszenagatamazight marroquino padrãozunhisem conteúdo linguísticozaz" + + "aárabe modernoazeri sulalto alemão (Suíça)baixo saxãoflamengomoldávioser" + + "vo-croatasuaíli do Congochinês simplificadochinês tradicional" + +var ptLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000c, 0x0015, 0x001f, 0x0023, 0x002b, 0x0034, 0x003a, 0x0042, 0x0048, 0x004e, 0x0059, 0x0060, 0x006b, 0x0073, @@ -19627,672 +22981,695 @@ var ptLangIdx = []uint16{ // 610 elements 0x02ef, 0x02f6, 0x0302, 0x0308, 0x030f, 0x0319, 0x031e, 0x0328, 0x0330, 0x0336, 0x033c, 0x0342, 0x0349, 0x0352, 0x035a, 0x036a, 0x0370, 0x0375, 0x037e, 0x0390, 0x03a2, 0x03b0, 0x03b6, 0x03bc, - 0x03c7, 0x03cd, 0x03d2, 0x03d7, 0x03de, 0x03e5, 0x03ea, 0x03f2, + 0x03c7, 0x03cd, 0x03d2, 0x03d7, 0x03dd, 0x03e4, 0x03e9, 0x03f1, // Entry 80 - BF - 0x03f8, 0x0402, 0x040a, 0x0412, 0x0417, 0x041d, 0x0422, 0x042e, - 0x0438, 0x043d, 0x0442, 0x044f, 0x0454, 0x045d, 0x0465, 0x046d, - 0x0474, 0x0479, 0x047f, 0x0487, 0x048e, 0x0493, 0x049e, 0x04a7, - 0x04ac, 0x04b3, 0x04b9, 0x04bf, 0x04c6, 0x04d0, 0x04d9, 0x04e2, - 0x04e8, 0x04f1, 0x04f6, 0x04fc, 0x0501, 0x0509, 0x050e, 0x0517, - 0x051b, 0x0522, 0x0527, 0x0531, 0x053a, 0x0540, 0x0547, 0x054b, - 0x0553, 0x0559, 0x055f, 0x0566, 0x056a, 0x0570, 0x0575, 0x057c, - 0x0582, 0x0582, 0x058a, 0x058f, 0x0593, 0x059b, 0x059b, 0x05a2, + 0x03f7, 0x0401, 0x0409, 0x0411, 0x0416, 0x041c, 0x0421, 0x042d, + 0x0437, 0x043c, 0x0441, 0x0452, 0x0457, 0x0460, 0x0468, 0x0470, + 0x0477, 0x047c, 0x0482, 0x048a, 0x0491, 0x0497, 0x04a2, 0x04ab, + 0x04b0, 0x04b7, 0x04bd, 0x04c3, 0x04ca, 0x04d4, 0x04dd, 0x04e6, + 0x04ec, 0x04f5, 0x04fa, 0x0500, 0x0505, 0x050d, 0x0512, 0x051b, + 0x051f, 0x0526, 0x052b, 0x0535, 0x053e, 0x0544, 0x054b, 0x054f, + 0x0557, 0x055e, 0x0564, 0x056b, 0x056f, 0x0575, 0x057a, 0x0581, + 0x0587, 0x0587, 0x058f, 0x0594, 0x0598, 0x05a0, 0x05a0, 0x05a7, // Entry C0 - FF - 0x05a2, 0x05ae, 0x05bd, 0x05c3, 0x05cb, 0x05d5, 0x05d5, 0x05dc, - 0x05dc, 0x05e4, 0x05e4, 0x05e4, 0x05e7, 0x05e7, 0x05f0, 0x05f0, - 0x05f6, 0x05fe, 0x0606, 0x0606, 0x060a, 0x060f, 0x060f, 0x0619, - 0x061d, 0x0622, 0x0622, 0x0626, 0x062b, 0x062b, 0x063d, 0x0645, - 0x064a, 0x064e, 0x064e, 0x0651, 0x0658, 0x0658, 0x0658, 0x065c, - 0x065c, 0x0660, 0x0666, 0x066c, 0x0674, 0x0678, 0x067c, 0x0683, - 0x0688, 0x068e, 0x0694, 0x0699, 0x06a0, 0x06a5, 0x06ac, 0x06b4, - 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ed, 0x06fa, + 0x05a7, 0x05b3, 0x05c2, 0x05c8, 0x05d0, 0x05da, 0x05da, 0x05e1, + 0x05e1, 0x05e1, 0x05e9, 0x05e9, 0x05e9, 0x05ec, 0x05ec, 0x05f5, + 0x05f5, 0x05fb, 0x0603, 0x060b, 0x060b, 0x060f, 0x0614, 0x0614, + 0x061e, 0x0622, 0x0627, 0x0627, 0x062b, 0x0630, 0x0630, 0x0642, + 0x064a, 0x064f, 0x0653, 0x0653, 0x0656, 0x065d, 0x065d, 0x065d, + 0x0661, 0x0661, 0x0665, 0x066b, 0x0672, 0x067a, 0x067e, 0x0682, + 0x0689, 0x068e, 0x0694, 0x069a, 0x069f, 0x06a6, 0x06ab, 0x06b2, + 0x06ba, 0x06c2, 0x06c6, 0x06d5, 0x06dc, 0x06e5, 0x06ed, 0x06f4, // Entry 100 - 13F - 0x06ff, 0x06ff, 0x070f, 0x0718, 0x071e, 0x0724, 0x0729, 0x0731, - 0x0736, 0x073c, 0x0741, 0x0746, 0x074b, 0x0759, 0x0759, 0x075e, - 0x076e, 0x0778, 0x077e, 0x0784, 0x0788, 0x078e, 0x078e, 0x079e, - 0x07a4, 0x07ab, 0x07b9, 0x07b9, 0x07bf, 0x07bf, 0x07c5, 0x07cd, - 0x07cd, 0x07d0, 0x07d0, 0x07df, 0x07ef, 0x07ef, 0x0803, 0x0813, - 0x081b, 0x081d, 0x0823, 0x0823, 0x0827, 0x082c, 0x082c, 0x0830, - 0x083a, 0x083a, 0x084d, 0x0861, 0x0861, 0x0866, 0x086f, 0x0876, - 0x087b, 0x0888, 0x0897, 0x0897, 0x0897, 0x089c, 0x08a5, 0x08aa, + 0x0701, 0x0706, 0x0706, 0x0716, 0x0732, 0x073b, 0x0741, 0x0747, + 0x074c, 0x0754, 0x0759, 0x075f, 0x0764, 0x0769, 0x076e, 0x077c, + 0x077c, 0x0781, 0x0791, 0x079b, 0x07a1, 0x07a7, 0x07ab, 0x07b1, + 0x07b1, 0x07c1, 0x07c7, 0x07ce, 0x07dc, 0x07dc, 0x07e2, 0x07e2, + 0x07e8, 0x07f0, 0x07f0, 0x07f3, 0x07f3, 0x0802, 0x0812, 0x0812, + 0x0826, 0x0836, 0x083e, 0x0840, 0x0846, 0x0849, 0x084d, 0x0852, + 0x0852, 0x0856, 0x0860, 0x0860, 0x0873, 0x0887, 0x0887, 0x088c, + 0x0895, 0x089c, 0x08a1, 0x08ae, 0x08bf, 0x08bf, 0x08bf, 0x08c4, // Entry 140 - 17F - 0x08aa, 0x08b2, 0x08b2, 0x08bc, 0x08c2, 0x08c7, 0x08d4, 0x08d4, - 0x08d8, 0x08dc, 0x08e2, 0x08e9, 0x08f0, 0x08f0, 0x08f0, 0x08f6, - 0x08fd, 0x0904, 0x0911, 0x0921, 0x0921, 0x092c, 0x0932, 0x0938, - 0x093b, 0x0940, 0x0944, 0x094e, 0x0955, 0x0959, 0x0960, 0x096c, - 0x096c, 0x0970, 0x0970, 0x0975, 0x097e, 0x098a, 0x098a, 0x098a, - 0x098e, 0x0996, 0x099f, 0x09ab, 0x09b2, 0x09ba, 0x09c0, 0x09cf, - 0x09cf, 0x09cf, 0x09de, 0x09e4, 0x09ec, 0x09f1, 0x09f8, 0x09fd, - 0x0a04, 0x0a0a, 0x0a0f, 0x0a15, 0x0a1a, 0x0a22, 0x0a22, 0x0a22, + 0x08cd, 0x08d2, 0x08d7, 0x08df, 0x08df, 0x08e9, 0x08ef, 0x08f4, + 0x0901, 0x0906, 0x090a, 0x090e, 0x0914, 0x091b, 0x0922, 0x0922, + 0x0922, 0x0928, 0x092f, 0x0936, 0x0943, 0x0953, 0x0953, 0x095e, + 0x0964, 0x096a, 0x096d, 0x0972, 0x0976, 0x0980, 0x0987, 0x098b, + 0x0992, 0x099e, 0x099e, 0x09a2, 0x09a2, 0x09a7, 0x09b0, 0x09bc, + 0x09bc, 0x09bc, 0x09c0, 0x09c8, 0x09d1, 0x09dd, 0x09e4, 0x09ec, + 0x09f2, 0x0a01, 0x0a01, 0x0a01, 0x0a09, 0x0a0f, 0x0a17, 0x0a1c, + 0x0a23, 0x0a28, 0x0a2f, 0x0a35, 0x0a3a, 0x0a40, 0x0a45, 0x0a4d, // Entry 180 - 1BF - 0x0a22, 0x0a28, 0x0a28, 0x0a2d, 0x0a31, 0x0a42, 0x0a42, 0x0a4c, - 0x0a53, 0x0a58, 0x0a5b, 0x0a61, 0x0a66, 0x0a66, 0x0a66, 0x0a6e, - 0x0a72, 0x0a78, 0x0a80, 0x0a87, 0x0a8f, 0x0a95, 0x0a99, 0x0a9e, - 0x0aa4, 0x0aa9, 0x0aad, 0x0ab5, 0x0ac5, 0x0aca, 0x0ad1, 0x0adb, - 0x0ae6, 0x0aec, 0x0af4, 0x0afb, 0x0b00, 0x0b00, 0x0b07, 0x0b19, - 0x0b1e, 0x0b27, 0x0b2e, 0x0b2e, 0x0b33, 0x0b38, 0x0b43, 0x0b43, - 0x0b4d, 0x0b51, 0x0b5e, 0x0b64, 0x0b68, 0x0b6f, 0x0b6f, 0x0b75, - 0x0b7e, 0x0b83, 0x0b93, 0x0b93, 0x0b99, 0x0baa, 0x0bae, 0x0bbe, + 0x0a4d, 0x0a4d, 0x0a4d, 0x0a53, 0x0a53, 0x0a58, 0x0a5c, 0x0a6d, + 0x0a6d, 0x0a77, 0x0a7e, 0x0a83, 0x0a86, 0x0a8c, 0x0a91, 0x0a91, + 0x0a91, 0x0a99, 0x0a9d, 0x0aa3, 0x0aab, 0x0ab2, 0x0aba, 0x0ac0, + 0x0ac4, 0x0ac9, 0x0acf, 0x0ad4, 0x0ad8, 0x0ae0, 0x0af0, 0x0af5, + 0x0afc, 0x0b06, 0x0b11, 0x0b17, 0x0b1f, 0x0b26, 0x0b2b, 0x0b2b, + 0x0b32, 0x0b44, 0x0b49, 0x0b52, 0x0b59, 0x0b59, 0x0b5e, 0x0b63, + 0x0b6e, 0x0b75, 0x0b7f, 0x0b83, 0x0b90, 0x0b96, 0x0b9a, 0x0ba1, + 0x0ba1, 0x0ba7, 0x0bb0, 0x0bb5, 0x0bc5, 0x0bc5, 0x0bcb, 0x0bdc, // Entry 1C0 - 1FF - 0x0bc6, 0x0bce, 0x0bd3, 0x0bd8, 0x0bdd, 0x0bea, 0x0bf4, 0x0bfb, - 0x0c03, 0x0c0d, 0x0c15, 0x0c15, 0x0c15, 0x0c15, 0x0c22, 0x0c22, - 0x0c2a, 0x0c2a, 0x0c2a, 0x0c33, 0x0c33, 0x0c45, 0x0c4c, 0x0c4c, - 0x0c55, 0x0c5c, 0x0c67, 0x0c67, 0x0c67, 0x0c6c, 0x0c72, 0x0c72, - 0x0c72, 0x0c72, 0x0c79, 0x0c7c, 0x0c83, 0x0c89, 0x0c9c, 0x0ca3, - 0x0ca8, 0x0caf, 0x0caf, 0x0cb6, 0x0cbb, 0x0cc4, 0x0ccc, 0x0ccc, - 0x0cdc, 0x0ce2, 0x0ce6, 0x0ce6, 0x0cec, 0x0cfb, 0x0d0c, 0x0d0c, - 0x0d15, 0x0d19, 0x0d28, 0x0d2e, 0x0d2e, 0x0d2e, 0x0d39, 0x0d45, + 0x0be0, 0x0bf0, 0x0bf8, 0x0c00, 0x0c05, 0x0c0a, 0x0c0f, 0x0c1c, + 0x0c26, 0x0c2d, 0x0c35, 0x0c3f, 0x0c47, 0x0c47, 0x0c57, 0x0c57, + 0x0c57, 0x0c64, 0x0c64, 0x0c6c, 0x0c6c, 0x0c6c, 0x0c76, 0x0c7f, + 0x0c91, 0x0c98, 0x0c98, 0x0ca1, 0x0ca8, 0x0cb3, 0x0cb3, 0x0cb3, + 0x0cb8, 0x0cbe, 0x0cbe, 0x0cbe, 0x0cbe, 0x0cc5, 0x0cc8, 0x0ccf, + 0x0cd5, 0x0ce8, 0x0cef, 0x0cf4, 0x0cfb, 0x0cfb, 0x0d02, 0x0d07, + 0x0d10, 0x0d15, 0x0d15, 0x0d25, 0x0d2b, 0x0d2f, 0x0d2f, 0x0d35, + 0x0d44, 0x0d55, 0x0d55, 0x0d5e, 0x0d62, 0x0d71, 0x0d77, 0x0d77, // Entry 200 - 23F - 0x0d52, 0x0d5f, 0x0d68, 0x0d70, 0x0d81, 0x0d87, 0x0d8b, 0x0d8b, - 0x0d91, 0x0d96, 0x0d9e, 0x0da7, 0x0db9, 0x0dc1, 0x0dc1, 0x0dc1, - 0x0dc6, 0x0dca, 0x0dd0, 0x0dd6, 0x0ddc, 0x0ddf, 0x0dea, 0x0dea, - 0x0df1, 0x0dfa, 0x0dfa, 0x0e03, 0x0e15, 0x0e1e, 0x0e1e, 0x0e24, - 0x0e24, 0x0e2d, 0x0e2d, 0x0e34, 0x0e3d, 0x0e44, 0x0e4d, 0x0e67, - 0x0e6d, 0x0e77, 0x0e7e, 0x0e91, 0x0e94, 0x0e94, 0x0e94, 0x0e94, - 0x0e94, 0x0e99, 0x0e99, 0x0e9e, 0x0ea4, 0x0eaa, 0x0eaf, 0x0eb4, - 0x0ebc, 0x0ebc, 0x0ec2, 0x0ec2, 0x0ec8, 0x0ecb, 0x0ed1, 0x0ed8, + 0x0d77, 0x0d82, 0x0d8e, 0x0d9b, 0x0da8, 0x0db1, 0x0db9, 0x0dc3, + 0x0dc9, 0x0dcd, 0x0dcd, 0x0dd3, 0x0dd7, 0x0ddf, 0x0de8, 0x0dfa, + 0x0e02, 0x0e02, 0x0e02, 0x0e07, 0x0e0b, 0x0e11, 0x0e17, 0x0e1d, + 0x0e20, 0x0e2b, 0x0e2b, 0x0e32, 0x0e3b, 0x0e3b, 0x0e44, 0x0e56, + 0x0e5f, 0x0e5f, 0x0e65, 0x0e65, 0x0e6f, 0x0e6f, 0x0e76, 0x0e7f, + 0x0e86, 0x0e8f, 0x0ea9, 0x0eb0, 0x0eba, 0x0ec1, 0x0ec5, 0x0ec8, + 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ecf, 0x0ecf, 0x0ed4, 0x0eda, + 0x0ee2, 0x0ee7, 0x0eec, 0x0ef4, 0x0ef6, 0x0efc, 0x0efc, 0x0f02, // Entry 240 - 27F - 0x0edd, 0x0edd, 0x0ee6, 0x0eee, 0x0efc, 0x0efc, 0x0f02, 0x0f1e, - 0x0f23, 0x0f3d, 0x0f41, 0x0f4f, 0x0f58, 0x0f6a, 0x0f7e, 0x0f91, - 0x0fa2, 0x0fb4, 0x0fc5, 0x0fde, 0x0fee, 0x0fff, 0x0fff, 0x1011, - 0x1021, 0x102d, 0x1035, 0x1049, 0x105b, 0x1064, 0x1070, 0x1080, - 0x1094, 0x10a7, -} // Size: 1244 bytes - -var ptPTLangStr string = "" + // Size: 591 bytes - "africânderchecochuvasheweestóniofrísico ocidentalhaúçahindiarménioigboco" + - "nguêscanarimgandamacedónionorueguês nynorsknorueguês bokmålprovençalossé" + - "ticopolacopastókinyarwandaturcomanotongamapuchebamunghomalajargão chinoo" + - "ksorani curdobaixo sórabioegípcio clássicoinglês medievalfrancês medieva" + - "lfrísio orientalalemão medieval altogrego clássicoalto sórabiocabo-verdi" + - "anolezghianoluri do norteluoirlandês, medievalmohawkbaixo-alemãoromanêss" + - "akhaárabe do Chadelule samiinari samiskolt samirootvaisogaárabe moderno " + - "padrãoazeri meridionalinglês canadianofrancês canadiano" - -var ptPTLangIdx = []uint16{ // 600 elements + 0x0f05, 0x0f0b, 0x0f12, 0x0f17, 0x0f17, 0x0f20, 0x0f28, 0x0f36, + 0x0f36, 0x0f3c, 0x0f58, 0x0f5d, 0x0f77, 0x0f7b, 0x0f89, 0x0f92, + 0x0f92, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, + 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fb4, 0x0fbc, 0x0fbc, 0x0fbc, + 0x0fc5, 0x0fd1, 0x0fe1, 0x0ff5, 0x1008, +} // Size: 1250 bytes + +const ptPTLangStr string = "" + // Size: 882 bytes + "africanêschecochuvasheweestóniofrísico ocidentalhaúçahindiarménioigbocan" + + "arimgandamacedónionorueguês nynorsknorueguês bokmåloccitanoosséticopolac" + + "opastókinyarwandasami do nortetigríniaturcomanotongaiorubainglês antigom" + + "apuchebamunghomalaburiatjargão chinooksorani curdofrancês crioulo seselw" + + "aegípcio clássicofrancês antigofrísio orientalalemão alto antigogrego cl" + + "ássicoalemão suíçocabardianocrioulo cabo-verdianolezghianoluri do norte" + + "luomohawkbaixo-alemãonórdico antigolíngua pangasinesapersa antigolíngua " + + "pohnpeicaprovençal antigorajastanêssakhairlandês antigoárabe do Chadeina" + + "ri samirootvaisogaárabe moderno padrãoalemão austríacoalto alemão suíçoi" + + "nglês australianoinglês canadianoinglês britânicoinglês americanoespanho" + + "l latino-americanoespanhol europeufrancês canadianofrancês suíçobaixo-sa" + + "xãoportuguês do Brasilportuguês europeu" + +var ptPTLangIdx = []uint16{ // 608 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x003b, - 0x003b, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0048, 0x0048, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000f, 0x000f, 0x0016, 0x0016, 0x0016, + 0x0016, 0x0016, 0x0016, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003a, + 0x003a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, // Entry 40 - 7F - 0x0048, 0x0048, 0x0048, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x007c, 0x008e, 0x008e, 0x008e, 0x008e, - 0x0098, 0x0098, 0x0098, 0x0098, 0x00a1, 0x00a1, 0x00a1, 0x00a7, + 0x0047, 0x0047, 0x0047, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, + 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, + 0x004b, 0x004b, 0x004b, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0061, + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, + 0x0061, 0x0061, 0x0061, 0x0073, 0x0085, 0x0085, 0x0085, 0x0085, + 0x008d, 0x008d, 0x008d, 0x008d, 0x0096, 0x0096, 0x0096, 0x009c, // Entry 80 - BF - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8, - 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c1, - 0x00c1, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00ad, + 0x00ad, 0x00ad, 0x00ad, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, + 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, + 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00c3, 0x00cc, + 0x00cc, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, + 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, + 0x00d1, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, + 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, // Entry C0 - FF - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d2, 0x00d2, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f4, + 0x00d7, 0x00d7, 0x00e5, 0x00e5, 0x00e5, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f1, 0x00f1, + 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, + 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, + 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00fe, 0x00fe, 0x00fe, 0x00fe, + 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, + 0x00fe, 0x00fe, 0x00fe, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, // Entry 100 - 13F - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0114, - 0x0114, 0x0114, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0135, 0x0135, 0x0135, 0x0135, 0x0145, - 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, - 0x0145, 0x0145, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, + 0x0131, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, + 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0152, 0x0152, + 0x0152, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, + 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0175, 0x0175, 0x0175, + 0x0175, 0x0175, 0x0175, 0x0184, 0x0193, 0x0193, 0x0193, 0x0193, // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0183, - 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x018c, 0x018c, 0x018c, + 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, + 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, + 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, + 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x019d, 0x019d, 0x019d, + 0x019d, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, + 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, + 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, + 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01bb, // Entry 180 - 1BF - 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, - 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, - 0x019c, 0x019c, 0x019c, 0x019c, 0x01af, 0x01af, 0x01af, 0x01af, - 0x01af, 0x01af, 0x01af, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, - 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, - 0x01b5, 0x01b5, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, + 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01c8, + 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01cb, 0x01cb, 0x01cb, 0x01cb, + 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, + 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, + 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01d1, 0x01d1, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01de, 0x01de, 0x01de, 0x01de, + 0x01de, 0x01de, 0x01de, 0x01de, 0x01ed, 0x01ed, 0x01ed, 0x01ed, // Entry 1C0 - 1FF - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01ca, 0x01ca, - 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01cf, 0x01cf, 0x01cf, - 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, - 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, - 0x01cf, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e7, + 0x01ed, 0x01ed, 0x01ed, 0x01ed, 0x01ed, 0x01ed, 0x01ed, 0x01ed, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x021d, 0x021d, + 0x022e, 0x022e, 0x022e, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, + 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, + 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, + 0x023e, 0x024e, 0x024e, 0x024e, 0x024e, 0x025d, 0x025d, 0x025d, // Entry 200 - 23F - 0x01f1, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x01ff, 0x0202, 0x0202, 0x0202, 0x0202, - 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, - 0x0202, 0x0202, 0x0202, 0x0202, 0x0206, 0x0206, 0x0206, 0x0206, + 0x025d, 0x025d, 0x025d, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x026b, 0x026e, + 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, + 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x0272, // Entry 240 - 27F - 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, - 0x0206, 0x0206, 0x0206, 0x021c, 0x022c, 0x022c, 0x022c, 0x022c, - 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x024f, -} // Size: 1224 bytes + 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, + 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0288, 0x0288, + 0x029a, 0x02ae, 0x02c1, 0x02d2, 0x02e4, 0x02f5, 0x030e, 0x031e, + 0x031e, 0x031e, 0x0330, 0x0340, 0x034c, 0x034c, 0x0360, 0x0372, +} // Size: 1240 bytes -var roLangStr string = "" + // Size: 4388 bytes +const roLangStr string = "" + // Size: 4228 bytes "afarabhazăavestanăafrikaansakanamharicăaragonezăarabăasamezăavarăaymaraa" + "zerăbașkirăbielorusăbulgarăbislamabambarabengalezătibetanăbretonăbosniac" + "ăcatalanăcecenăchamorrocorsicanăcreecehăslavonăciuvașăgalezădanezăgerma" + - "nădivehidzongkhaewegreacăenglezăesperantospaniolăestonianăbascăpersanăfu" + - "lahfinlandezăfijianăfaroezăfrancezăfrizonă occidentalăirlandezăgaelică s" + - "coțianăgalicianăguaranigujaratimanxhausaebraicăhindihiri motucroatăhaiti" + - "anămaghiarăarmeanăhererointerlinguaindonezianăinterlingueigbosichuan yii" + - "nupiakidoislandezăitalianăinuktitutjaponezăjavanezăgeorgianăcongolezăkik" + - "uyukuanyamakazahăkalaallisutkhmerăkannadacoreeanăkanuricașmirăkurdăkomic" + - "ornicăkârgâzălatinăluxemburghezăgandalimburghezălingalalaoțianălituanian" + - "ăluba-katangaletonămalgașămarshallezămaorimacedoneanămalayalammongolăma" + - "rathimalaezămaltezăbirmanezănaurundebele de nordnepalezăndonganeerlandez" + - "ănorvegiană nynorsknorvegiană bokmålndebele de sudnavajonyanjaoccitanăo" + - "jibwaoromooriyaosetăpunjabipalipolonezăpaștunăportughezăquechuaromanșăki" + - "rundiromânărusăkinyarwandasanscrităsardinianăsindhisami de nordsangosing" + - "halezăslovacăslovenăsamoanăshonasomalezăalbanezăsârbăswatisesothosundane" + - "zăsuedezăswahilitamilătelugutadjicăthailandezătigrinăturkmenăsetswanaton" + - "gaturcătsongatătarătahitianăuigurăucraineanăurduuzbecăvendavietnamezăvol" + - "apukvalonăwolofxhosaidișyorubazhuangchinezăzuluacehacoliadangmeadygheafr" + - "ihiliaghemainuakkadianăaleutăaltaică meridionalăengleză vecheangikaarama" + - "icămapuchearapahoarawakasuasturianăawadhibaluchibalinezăbasaabamunghomal" + - "abejabembabenabafutbaluchi occidentalăbhojpuribikolbinikomsiksikabrajbod" + - "oakooseburiatbuginezăbulublinmedumbacaddocaribcayugaatsamcebuanochigachi" + - "bchachagataichuukesemarijargon chinookchoctawchipewyancherokeecheyenneku" + - "rdă soranicoptăturcă crimeeanăcașubianădakotadargwataitadelawareslavedog" + - "ribdinkazarmadogrisorabă de josdualaolandeză mijlociejola-fonyidyuladaza" + - "gaembuefikegipteană vecheekajukelamităengleză mijlocieewondofangfilipine" + - "zăfonfranceză mijlociefranceză vechefrizonă nordicăfrizonă orientalăfriu" + - "lanăgagăgăuzăgayogbayageezgilbertinăgermană mijlocie înaltăgermană veche" + - " înaltăgondigorontalogoticăgrebogreacă vechegermană elvețianăgusiigwichʼ" + - "inhaidahawaiianăhiligaynonhitităhmongsorabă de sushupaibanibibioilokoing" + - "ușălojbanngombamachameiudeo-persanăiudeo-arabăkarakalpakkabylekachinjjuk" + - "ambakawikabardiankanembutyapmakondekabuverdianukorokhasilimbp khotanezăk" + - "oyra chiinikakokalenjinkimbundukomi-permiakkonkanikosraekpellekaraceai-b" + - "alkarkarelianăkurukhshambalabafiakölschkumykkutenailadinolangilahndalamb" + - "alezghianlakotamongoloziluri de nordluba-lulualuisenolundaluolusahiluyia" + - "madurezămafamagahimaithilimakasarmandingomasaimabamokshamandarmendemerum" + - "orisyenirlandeză mijlociemakhuwa-meettometa’micmacminangkabaumanciuriană" + - "manipurmohawkmossimundanglimbi multiplecreekmirandezămarwarimyeneerzyama" + - "zanderaninapolitanănamagermana de josnewariniasniueanăkwasiongiemboonnog" + - "ainordică vechen’kosotho de nordnuernewari clasicănyamwezinyankolenyoron" + - "zimaosageturcă otomanăpangasinanpahlavipampangapapiamentopalauanăpersană" + - " vechefenicianăpohnpeianăprovensală vechequichérajasthanirapanuirarotong" + - "anromboromaniaromânărwasandawesakhaaramaică samariteanăsamburusasaksanta" + - "lingambaysangusicilianăscotskurdă de sudsenecasenaselkupkoyraboro Sennii" + - "rlandeză vechetachelhitshanarabă ciadianăsidamosami de sudlule samiinari" + - " samiskolt samisoninkesogdiensranan tongoserersahosukumasususumerianăcom" + - "orezăsiriacă clasicăsiriacătimnetesoterenotetumtigretivtokelauklingonian" + - "ătlingittamasheknyasa tongatok pisintarokotsimshiantumbukatuvalutasawaq" + - "tuvanătamazight central marocanăudmurtugariticăumbundurootvaivoticvunjow" + - "alserwalamowaraywashowarlpiricalmucăsogayaoyapezăyangbenyembacantonezăza" + - "potecăsimboluri Bilsszenagatamazight standard marocanăzunifară conținut " + - "lingvisticzazaarabă standard modernăgermană austriacăgermană standard el" + - "vețianăengleză australianăengleză canadianăengleză britanicăengleză amer" + - "icanăspaniolă latino-americanăspaniolă europeanăspaniolă mexicanăfrancez" + - "ă canadianăfranceză elvețianăsaxona de josflamandăportugheză braziliană" + - "portugheză europeanămoldoveneascăsârbo-croatăswahili Congochineză simpli" + - "ficatăchineză tradițională" - -var roLangIdx = []uint16{ // 610 elements + "nădivehidzongkhaewegreacăenglezăesperantospaniolăestonăbascăpersanăfulah" + + "finlandezăfijianăfaroezăfrancezăfrizonă occidentalăirlandezăgaelică scoț" + + "ianăgalicianăguaranigujaratimanxhausaebraicăhindihiri motucroatăhaitiană" + + "maghiarăarmeanăhererointerlinguaindonezianăinterlingueigbosichuan yiinup" + + "iakidoislandezăitalianăinuktitutjaponezăjavanezăgeorgianăcongolezăkikuyu" + + "kuanyamakazahăkalaallisutkhmerăkannadacoreeanăkanuricașmirăkurdăkomicorn" + + "icăkârgâzălatinăluxemburghezăgandalimburghezălingalalaoțianălituanianălu" + + "ba-katangaletonămalgașămarshallezămaorimacedoneanămalayalammongolămarath" + + "imalaezămaltezăbirmanănaurundebele de nordnepalezăndonganeerlandezănorve" + + "giană nynorsknorvegiană bokmålndebele de sudnavajonyanjaoccitanăojibwaor" + + "omooriyaosetăpunjabipalipolonezăpaștunăportughezăquechuaromanșăkirundiro" + + "mânărusăkinyarwandasanscrităsardinianăsindhisami de nordsangosingalezăsl" + + "ovacăslovenăsamoanăshonasomalezăalbanezăsârbăswatisesothosundanezăsuedez" + + "ăswahilitamilătelugutadjicăthailandezătigrinăturkmenăsetswanatonganătur" + + "cătsongatătarătahitianăuigurăucraineanăurduuzbecăvendavietnamezăvolapukv" + + "alonăwolofxhosaidișyorubazhuangchinezăzuluacehacoliadangmeadygheafrihili" + + "aghemainuakkadianăaleutăaltaică meridionalăengleză vecheangikaaramaicăar" + + "aucanianăarapahoarawakasuasturianăawadhibaluchibalinezăbasaabamunghomala" + + "bejabembabenabafutbaluchi occidentalăbhojpuribikolbinikomsiksikabrajbodo" + + "akooseburiatbuginezăbulublinmedumbacaddocaribcayugaatsamcebuanăchigachib" + + "chachagataichuukesemarijargon chinookchoctawchipewyancherokeecheyennekur" + + "dă centralăcoptăturcă crimeeanăcreolă franceză seselwacașubianădakotadar" + + "gwataitadelawareslavedogribdinkazarmadogrisorabă de josdualaneerlandeză " + + "mediejola-fonyidyuladazagaembuefikegipteană vecheekajukelamităengleză me" + + "dieewondofangfilipinezăfonfranceză mediefranceză vechefrizonă nordicăfri" + + "zonă orientalăfriulanăgagăgăuzăchineză gangayogbayageezgilbertinăgermană" + + " înaltă mediegermană înaltă vechegondigorontalogoticăgrebogreacă vechege" + + "rmană (Elveția)gusiigwichʼinhaidachineză hakkahawaiianăhiligaynonhitităh" + + "mongsorabă de suschineză xianghupaibanibibioilokoingușălojbanngombamacha" + + "meiudeo-persanăiudeo-arabăkarakalpakkabylekachinjjukambakawikabardiankan" + + "embutyapmakondekabuverdianukorokhasikhotanezăkoyra chiinikakokalenjinkim" + + "bundukomi-permiakkonkanikosraekpellekaraceai-balkarkarelianăkurukhshamba" + + "labafiakölschkumykkutenailadinolangilahndalambalezghianlakotamongolozilu" + + "ri de nordluba-lulualuisenolundaluomizoluyiamadurezămafamagahimaithilima" + + "kasarmandingomasaimabamokshamandarmendemerumorisyenirlandeză mediemakhuw" + + "a-meettometa’micmacminangkabaumanciurianămanipurimohawkmossimundangmai m" + + "ulte limbicreekmirandezămarwarimyeneerzyamazanderanichineză min nannapol" + + "itanănamagermana de josnewariniasniueanăkwasiongiemboonnogainordică vech" + + "en’kosotho de nordnuernewari clasicănyamwezinyankolenyoronzimaosageturcă" + + " otomanăpangasinanpahlavipampangapapiamentopalauanăpidgin nigerianpersan" + + "ă vechefenicianăpohnpeianăprusacăprovensală vechequichérajasthanirapanu" + + "irarotonganromboromaniaromânărwasandawesakhaaramaică samariteanăsamburus" + + "asaksantalingambaysangusicilianăscotskurdă de sudsenecasenaselkupkoyrabo" + + "ro Senniirlandeză vechetachelhitshanarabă ciadianăsidamosami de sudlule " + + "samiinari samiskolt samisoninkesogdiensranan tongoserersahosukumasususum" + + "erianăcomorezăsiriacă clasicăsiriacătimnetesoterenotetumtigretivtokelauk" + + "lingonianătlingittamasheknyasa tongatok pisintarokotsimshiantumbukatuval" + + "utasawaqtuvanătamazight central marocanăudmurtugariticăumbundurootvaivot" + + "icăvunjowalserwolaitawaraywashowarlpirichineză wucalmucăsogayaoyapezăyan" + + "gbenyembacantonezăzapotecăsimboluri Bilsszenagatamazight standard maroca" + + "năzunifară conținut lingvisticzazaarabă standard modernăgermană standard" + + " (Elveția)saxona de josflamandămoldoveneascăsârbo-croatăswahili (R.D. Co" + + "ngo)chineză tradițională" + +var roLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0034, 0x003a, 0x0042, 0x0048, 0x004e, 0x0054, 0x005d, 0x0067, 0x006f, 0x0076, 0x007d, 0x0087, 0x0090, 0x0098, 0x00a1, 0x00aa, 0x00b1, 0x00b9, 0x00c3, 0x00c7, 0x00cc, 0x00d4, 0x00dd, 0x00e4, 0x00eb, 0x00f3, 0x00f9, 0x0101, 0x0104, 0x010b, 0x0113, 0x011c, 0x0125, - 0x012f, 0x0135, 0x013d, 0x0142, 0x014d, 0x0155, 0x015d, 0x0166, - 0x017b, 0x0185, 0x0198, 0x01a2, 0x01a9, 0x01b1, 0x01b5, 0x01ba, - 0x01c2, 0x01c7, 0x01d0, 0x01d7, 0x01e0, 0x01e9, 0x01f1, 0x01f7, + 0x012c, 0x0132, 0x013a, 0x013f, 0x014a, 0x0152, 0x015a, 0x0163, + 0x0178, 0x0182, 0x0195, 0x019f, 0x01a6, 0x01ae, 0x01b2, 0x01b7, + 0x01bf, 0x01c4, 0x01cd, 0x01d4, 0x01dd, 0x01e6, 0x01ee, 0x01f4, // Entry 40 - 7F - 0x0202, 0x020e, 0x0219, 0x021d, 0x0227, 0x022e, 0x0231, 0x023b, - 0x0244, 0x024d, 0x0256, 0x025f, 0x0269, 0x0273, 0x0279, 0x0281, - 0x0288, 0x0293, 0x029a, 0x02a1, 0x02aa, 0x02b0, 0x02b9, 0x02bf, - 0x02c3, 0x02cb, 0x02d5, 0x02dc, 0x02ea, 0x02ef, 0x02fb, 0x0302, - 0x030c, 0x0317, 0x0323, 0x032a, 0x0333, 0x033f, 0x0344, 0x0350, - 0x0359, 0x0361, 0x0368, 0x0370, 0x0378, 0x0382, 0x0387, 0x0396, - 0x039f, 0x03a5, 0x03b1, 0x03c4, 0x03d7, 0x03e5, 0x03eb, 0x03f1, - 0x03fa, 0x0400, 0x0405, 0x040a, 0x0410, 0x0417, 0x041b, 0x0424, + 0x01ff, 0x020b, 0x0216, 0x021a, 0x0224, 0x022b, 0x022e, 0x0238, + 0x0241, 0x024a, 0x0253, 0x025c, 0x0266, 0x0270, 0x0276, 0x027e, + 0x0285, 0x0290, 0x0297, 0x029e, 0x02a7, 0x02ad, 0x02b6, 0x02bc, + 0x02c0, 0x02c8, 0x02d2, 0x02d9, 0x02e7, 0x02ec, 0x02f8, 0x02ff, + 0x0309, 0x0314, 0x0320, 0x0327, 0x0330, 0x033c, 0x0341, 0x034d, + 0x0356, 0x035e, 0x0365, 0x036d, 0x0375, 0x037d, 0x0382, 0x0391, + 0x039a, 0x03a0, 0x03ac, 0x03bf, 0x03d2, 0x03e0, 0x03e6, 0x03ec, + 0x03f5, 0x03fb, 0x0400, 0x0405, 0x040b, 0x0412, 0x0416, 0x041f, // Entry 80 - BF - 0x042d, 0x0438, 0x043f, 0x0448, 0x044f, 0x0457, 0x045c, 0x0467, - 0x0471, 0x047c, 0x0482, 0x048e, 0x0493, 0x049e, 0x04a6, 0x04ae, - 0x04b6, 0x04bb, 0x04c4, 0x04cd, 0x04d4, 0x04d9, 0x04e0, 0x04ea, - 0x04f2, 0x04f9, 0x0500, 0x0506, 0x050e, 0x051a, 0x0522, 0x052b, - 0x0533, 0x0538, 0x053e, 0x0544, 0x054c, 0x0556, 0x055d, 0x0568, - 0x056c, 0x0573, 0x0578, 0x0583, 0x058a, 0x0591, 0x0596, 0x059b, - 0x05a0, 0x05a6, 0x05ac, 0x05b4, 0x05b8, 0x05bc, 0x05c1, 0x05c8, - 0x05ce, 0x05ce, 0x05d6, 0x05db, 0x05df, 0x05e9, 0x05e9, 0x05f0, + 0x0428, 0x0433, 0x043a, 0x0443, 0x044a, 0x0452, 0x0457, 0x0462, + 0x046c, 0x0477, 0x047d, 0x0489, 0x048e, 0x0498, 0x04a0, 0x04a8, + 0x04b0, 0x04b5, 0x04be, 0x04c7, 0x04ce, 0x04d3, 0x04da, 0x04e4, + 0x04ec, 0x04f3, 0x04fa, 0x0500, 0x0508, 0x0514, 0x051c, 0x0525, + 0x052d, 0x0535, 0x053b, 0x0541, 0x0549, 0x0553, 0x055a, 0x0565, + 0x0569, 0x0570, 0x0575, 0x0580, 0x0587, 0x058e, 0x0593, 0x0598, + 0x059d, 0x05a3, 0x05a9, 0x05b1, 0x05b5, 0x05b9, 0x05be, 0x05c5, + 0x05cb, 0x05cb, 0x05d3, 0x05d8, 0x05dc, 0x05e6, 0x05e6, 0x05ed, // Entry C0 - FF - 0x05f0, 0x0605, 0x0613, 0x0619, 0x0622, 0x0629, 0x0629, 0x0630, - 0x0630, 0x0636, 0x0636, 0x0636, 0x0639, 0x0639, 0x0643, 0x0643, - 0x0649, 0x0650, 0x0659, 0x0659, 0x065e, 0x0663, 0x0663, 0x066a, - 0x066e, 0x0673, 0x0673, 0x0677, 0x067c, 0x067c, 0x0690, 0x0698, - 0x069d, 0x06a1, 0x06a1, 0x06a4, 0x06ab, 0x06ab, 0x06ab, 0x06af, - 0x06af, 0x06b3, 0x06b9, 0x06bf, 0x06c8, 0x06cc, 0x06d0, 0x06d7, - 0x06dc, 0x06e1, 0x06e7, 0x06ec, 0x06f3, 0x06f8, 0x06ff, 0x0707, - 0x070f, 0x0713, 0x0721, 0x0728, 0x0731, 0x0739, 0x0741, 0x074e, + 0x05ed, 0x0602, 0x0610, 0x0616, 0x061f, 0x062b, 0x062b, 0x0632, + 0x0632, 0x0632, 0x0638, 0x0638, 0x0638, 0x063b, 0x063b, 0x0645, + 0x0645, 0x064b, 0x0652, 0x065b, 0x065b, 0x0660, 0x0665, 0x0665, + 0x066c, 0x0670, 0x0675, 0x0675, 0x0679, 0x067e, 0x067e, 0x0692, + 0x069a, 0x069f, 0x06a3, 0x06a3, 0x06a6, 0x06ad, 0x06ad, 0x06ad, + 0x06b1, 0x06b1, 0x06b5, 0x06bb, 0x06c1, 0x06ca, 0x06ce, 0x06d2, + 0x06d9, 0x06de, 0x06e3, 0x06e9, 0x06ee, 0x06f6, 0x06fb, 0x0702, + 0x070a, 0x0712, 0x0716, 0x0724, 0x072b, 0x0734, 0x073c, 0x0744, // Entry 100 - 13F - 0x0754, 0x0754, 0x0765, 0x0770, 0x0776, 0x077c, 0x0781, 0x0789, - 0x078e, 0x0794, 0x0799, 0x079e, 0x07a3, 0x07b1, 0x07b1, 0x07b6, - 0x07c8, 0x07d2, 0x07d7, 0x07dd, 0x07e1, 0x07e5, 0x07e5, 0x07f5, - 0x07fb, 0x0803, 0x0814, 0x0814, 0x081a, 0x081a, 0x081e, 0x0829, - 0x0829, 0x082c, 0x082c, 0x083e, 0x084d, 0x084d, 0x085e, 0x0871, - 0x087a, 0x087c, 0x0886, 0x0886, 0x088a, 0x088f, 0x088f, 0x0893, - 0x089e, 0x089e, 0x08b8, 0x08cf, 0x08cf, 0x08d4, 0x08dd, 0x08e4, - 0x08e9, 0x08f6, 0x090a, 0x090a, 0x090a, 0x090f, 0x0918, 0x091d, + 0x0754, 0x075a, 0x075a, 0x076b, 0x0784, 0x078f, 0x0795, 0x079b, + 0x07a0, 0x07a8, 0x07ad, 0x07b3, 0x07b8, 0x07bd, 0x07c2, 0x07d0, + 0x07d0, 0x07d5, 0x07e7, 0x07f1, 0x07f6, 0x07fc, 0x0800, 0x0804, + 0x0804, 0x0814, 0x081a, 0x0822, 0x0830, 0x0830, 0x0836, 0x0836, + 0x083a, 0x0845, 0x0845, 0x0848, 0x0848, 0x0857, 0x0866, 0x0866, + 0x0877, 0x088a, 0x0893, 0x0895, 0x089f, 0x08ab, 0x08af, 0x08b4, + 0x08b4, 0x08b8, 0x08c3, 0x08c3, 0x08da, 0x08f1, 0x08f1, 0x08f6, + 0x08ff, 0x0906, 0x090b, 0x0918, 0x092b, 0x092b, 0x092b, 0x0930, // Entry 140 - 17F - 0x091d, 0x0927, 0x0927, 0x0931, 0x0938, 0x093d, 0x094b, 0x094b, - 0x094f, 0x0953, 0x0959, 0x095e, 0x0966, 0x0966, 0x0966, 0x096c, - 0x0972, 0x0979, 0x0987, 0x0993, 0x0993, 0x099d, 0x09a3, 0x09a9, - 0x09ac, 0x09b1, 0x09b5, 0x09be, 0x09c5, 0x09c9, 0x09d0, 0x09dc, - 0x09dc, 0x09e0, 0x09e0, 0x09e5, 0x09f5, 0x0a01, 0x0a01, 0x0a01, - 0x0a05, 0x0a0d, 0x0a15, 0x0a21, 0x0a28, 0x0a2e, 0x0a34, 0x0a43, - 0x0a43, 0x0a43, 0x0a4d, 0x0a53, 0x0a5b, 0x0a60, 0x0a67, 0x0a6c, - 0x0a73, 0x0a79, 0x0a7e, 0x0a84, 0x0a89, 0x0a91, 0x0a91, 0x0a91, + 0x0939, 0x093e, 0x094c, 0x0956, 0x0956, 0x0960, 0x0967, 0x096c, + 0x097a, 0x0988, 0x098c, 0x0990, 0x0996, 0x099b, 0x09a3, 0x09a3, + 0x09a3, 0x09a9, 0x09af, 0x09b6, 0x09c4, 0x09d0, 0x09d0, 0x09da, + 0x09e0, 0x09e6, 0x09e9, 0x09ee, 0x09f2, 0x09fb, 0x0a02, 0x0a06, + 0x0a0d, 0x0a19, 0x0a19, 0x0a1d, 0x0a1d, 0x0a22, 0x0a2c, 0x0a38, + 0x0a38, 0x0a38, 0x0a3c, 0x0a44, 0x0a4c, 0x0a58, 0x0a5f, 0x0a65, + 0x0a6b, 0x0a7a, 0x0a7a, 0x0a7a, 0x0a84, 0x0a8a, 0x0a92, 0x0a97, + 0x0a9e, 0x0aa3, 0x0aaa, 0x0ab0, 0x0ab5, 0x0abb, 0x0ac0, 0x0ac8, // Entry 180 - 1BF - 0x0a91, 0x0a97, 0x0a97, 0x0a9c, 0x0aa0, 0x0aac, 0x0aac, 0x0ab6, - 0x0abd, 0x0ac2, 0x0ac5, 0x0acb, 0x0ad0, 0x0ad0, 0x0ad0, 0x0ad9, - 0x0add, 0x0ae3, 0x0aeb, 0x0af2, 0x0afa, 0x0aff, 0x0b03, 0x0b09, - 0x0b0f, 0x0b14, 0x0b18, 0x0b20, 0x0b33, 0x0b41, 0x0b48, 0x0b4e, - 0x0b59, 0x0b65, 0x0b6c, 0x0b72, 0x0b77, 0x0b77, 0x0b7e, 0x0b8c, - 0x0b91, 0x0b9b, 0x0ba2, 0x0ba2, 0x0ba7, 0x0bac, 0x0bb7, 0x0bb7, - 0x0bc2, 0x0bc6, 0x0bd4, 0x0bda, 0x0bde, 0x0be6, 0x0be6, 0x0bec, - 0x0bf5, 0x0bfa, 0x0c08, 0x0c08, 0x0c0e, 0x0c1b, 0x0c1f, 0x0c2e, + 0x0ac8, 0x0ac8, 0x0ac8, 0x0ace, 0x0ace, 0x0ad3, 0x0ad7, 0x0ae3, + 0x0ae3, 0x0aed, 0x0af4, 0x0af9, 0x0afc, 0x0b00, 0x0b05, 0x0b05, + 0x0b05, 0x0b0e, 0x0b12, 0x0b18, 0x0b20, 0x0b27, 0x0b2f, 0x0b34, + 0x0b38, 0x0b3e, 0x0b44, 0x0b49, 0x0b4d, 0x0b55, 0x0b65, 0x0b73, + 0x0b7a, 0x0b80, 0x0b8b, 0x0b97, 0x0b9f, 0x0ba5, 0x0baa, 0x0baa, + 0x0bb1, 0x0bc0, 0x0bc5, 0x0bcf, 0x0bd6, 0x0bd6, 0x0bdb, 0x0be0, + 0x0beb, 0x0bfb, 0x0c06, 0x0c0a, 0x0c18, 0x0c1e, 0x0c22, 0x0c2a, + 0x0c2a, 0x0c30, 0x0c39, 0x0c3e, 0x0c4c, 0x0c4c, 0x0c52, 0x0c5f, // Entry 1C0 - 1FF - 0x0c36, 0x0c3e, 0x0c43, 0x0c48, 0x0c4d, 0x0c5c, 0x0c66, 0x0c6d, - 0x0c75, 0x0c7f, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c96, 0x0c96, - 0x0ca0, 0x0ca0, 0x0ca0, 0x0cab, 0x0cab, 0x0cbc, 0x0cc3, 0x0cc3, - 0x0ccd, 0x0cd4, 0x0cde, 0x0cde, 0x0cde, 0x0ce3, 0x0ce9, 0x0ce9, - 0x0ce9, 0x0ce9, 0x0cf2, 0x0cf5, 0x0cfc, 0x0d01, 0x0d17, 0x0d1e, - 0x0d23, 0x0d2a, 0x0d2a, 0x0d31, 0x0d36, 0x0d40, 0x0d45, 0x0d45, - 0x0d52, 0x0d58, 0x0d5c, 0x0d5c, 0x0d62, 0x0d71, 0x0d81, 0x0d81, - 0x0d8a, 0x0d8e, 0x0d9e, 0x0da4, 0x0da4, 0x0da4, 0x0daf, 0x0db8, + 0x0c63, 0x0c72, 0x0c7a, 0x0c82, 0x0c87, 0x0c8c, 0x0c91, 0x0ca0, + 0x0caa, 0x0cb1, 0x0cb9, 0x0cc3, 0x0ccc, 0x0ccc, 0x0cdb, 0x0cdb, + 0x0cdb, 0x0ce9, 0x0ce9, 0x0cf3, 0x0cf3, 0x0cf3, 0x0cfe, 0x0d06, + 0x0d17, 0x0d1e, 0x0d1e, 0x0d28, 0x0d2f, 0x0d39, 0x0d39, 0x0d39, + 0x0d3e, 0x0d44, 0x0d44, 0x0d44, 0x0d44, 0x0d4d, 0x0d50, 0x0d57, + 0x0d5c, 0x0d72, 0x0d79, 0x0d7e, 0x0d85, 0x0d85, 0x0d8c, 0x0d91, + 0x0d9b, 0x0da0, 0x0da0, 0x0dad, 0x0db3, 0x0db7, 0x0db7, 0x0dbd, + 0x0dcc, 0x0ddc, 0x0ddc, 0x0de5, 0x0de9, 0x0df9, 0x0dff, 0x0dff, // Entry 200 - 23F - 0x0dc2, 0x0dcc, 0x0dd3, 0x0dda, 0x0de6, 0x0deb, 0x0def, 0x0def, - 0x0df5, 0x0df9, 0x0e03, 0x0e0c, 0x0e1d, 0x0e25, 0x0e25, 0x0e25, - 0x0e2a, 0x0e2e, 0x0e34, 0x0e39, 0x0e3e, 0x0e41, 0x0e48, 0x0e48, - 0x0e54, 0x0e5b, 0x0e5b, 0x0e63, 0x0e6e, 0x0e77, 0x0e77, 0x0e7d, - 0x0e7d, 0x0e86, 0x0e86, 0x0e8d, 0x0e93, 0x0e9a, 0x0ea1, 0x0ebc, - 0x0ec2, 0x0ecc, 0x0ed3, 0x0ed7, 0x0eda, 0x0eda, 0x0eda, 0x0eda, - 0x0eda, 0x0edf, 0x0edf, 0x0ee4, 0x0eea, 0x0ef0, 0x0ef5, 0x0efa, - 0x0f02, 0x0f02, 0x0f0a, 0x0f0a, 0x0f0e, 0x0f11, 0x0f18, 0x0f1f, + 0x0dff, 0x0e0a, 0x0e13, 0x0e1d, 0x0e27, 0x0e2e, 0x0e35, 0x0e41, + 0x0e46, 0x0e4a, 0x0e4a, 0x0e50, 0x0e54, 0x0e5e, 0x0e67, 0x0e78, + 0x0e80, 0x0e80, 0x0e80, 0x0e85, 0x0e89, 0x0e8f, 0x0e94, 0x0e99, + 0x0e9c, 0x0ea3, 0x0ea3, 0x0eaf, 0x0eb6, 0x0eb6, 0x0ebe, 0x0ec9, + 0x0ed2, 0x0ed2, 0x0ed8, 0x0ed8, 0x0ee1, 0x0ee1, 0x0ee8, 0x0eee, + 0x0ef5, 0x0efc, 0x0f17, 0x0f1d, 0x0f27, 0x0f2e, 0x0f32, 0x0f35, + 0x0f35, 0x0f35, 0x0f35, 0x0f35, 0x0f3c, 0x0f3c, 0x0f41, 0x0f47, + 0x0f4e, 0x0f53, 0x0f58, 0x0f60, 0x0f6b, 0x0f73, 0x0f73, 0x0f77, // Entry 240 - 27F - 0x0f24, 0x0f24, 0x0f2e, 0x0f37, 0x0f46, 0x0f46, 0x0f4c, 0x0f68, - 0x0f6c, 0x0f86, 0x0f8a, 0x0fa2, 0x0fa2, 0x0fb5, 0x0fd2, 0x0fe7, - 0x0ffa, 0x100d, 0x1020, 0x103b, 0x104f, 0x1062, 0x1062, 0x1076, - 0x108b, 0x1098, 0x10a1, 0x10b8, 0x10ce, 0x10dc, 0x10ea, 0x10f7, - 0x110d, 0x1124, -} // Size: 1244 bytes - -var ruLangStr string = "" + // Size: 9370 bytes - "афарабхазскийавестийскийафрикаансаканамхарскийарагонскийарабскийассамски" + - "йаварскийаймараазербайджанскийбашкирскийбелорусскийболгарскийбисламабам" + - "барийскийбенгальскийтибетскийбретонскийбоснийскийкаталанскийчеченскийча" + - "моррокорсиканскийкриийскийчешскийцерковнославянскийчувашскийваллийскийд" + - "атскийнемецкиймальдивскийдзонг-кээвегреческийанглийскийэсперантоиспанск" + - "ийэстонскийбаскскийперсидскийфулахфинскийфиджифарерскийфранцузскийзапад" + - "но-фризскийирландскийгэльскийгалисийскийгуаранигуджаратимэнскийхаусаивр" + - "итхиндихиримотухорватскийгаитянскийвенгерскийармянскийгерероинтерлингва" + - "индонезийскийинтерлингвеигбосычуаньинупиакидоисландскийитальянскийинукт" + - "итутяпонскийяванскийгрузинскийконгокикуйюкунамаказахскийгренландскийкхм" + - "ерскийканнадакорейскийканурикашмирикурдскийкомикорнийскийкиргизскийлати" + - "нскийлюксембургскийгандалимбургскийлингалалаосскийлитовскийлуба-катанга" + - "латышскиймалагасийскиймаршалльскиймаоримакедонскиймалаяламмонгольскийма" + - "ратхималайскиймальтийскийбирманскийнаурусеверный ндебелинепальскийндонг" + - "анидерландскийнорвежский нюнорскнорвежский букмолндебели южныйнавахонья" + - "нджаокситанскийоджибваоромоорияосетинскийпанджабипалипольскийпуштупорту" + - "гальскийкечуароманшскийрундирумынскийрусскийкиньяруандасанскритсардинск" + - "ийсиндхисеверносаамскийсангосингальскийсловацкийсловенскийсамоанскийшон" + - "асомалиалбанскийсербскийсвазисото южныйсунданскийшведскийсуахилитамильс" + - "кийтелугутаджикскийтайскийтигриньятуркменскийтсванатонганскийтурецкийтс" + - "онгататарскийтаитянскийуйгурскийукраинскийурдуузбекскийвендавьетнамский" + - "волапюкваллонскийволофкосаидишйорубачжуанькитайскийзулуачехскийачолиада" + - "нгмеадыгейскийафрихилиагхемайнуаккадскийалеутскийюжноалтайскийстароангл" + - "ийскийангикаарамейскийарауканскийарапахоаравакскийасуастурийскийавадхиб" + - "елуджскийбалийскийбасабамумгхомалабеджабембабенабафутзападно-белуджский" + - "бходжпурибикольскийбиникомсиксикабрауибодоакоосебурятскийбугийскийбулуб" + - "илин (блин)медумбакаддокарибкайюгаатсамкебуаночигачибчачагатайскийчукот" + - "скиймарийский (черемисский)чинук жаргончоктавчипевайянчерокичейеннсоран" + - "и курдскийкоптскийкрымско-татарскийкашубианскийдакотадаргватаитаделавар" + - "скийслейвидогрибдинказармадогринижнелужицкийдуаласредненидерландскийдьо" + - "ла-фоньидиула (дьюла)дазагскийэмбуэфикдревнеегипетскийэкаджукэламскийср" + - "еднеанглийскийэвондофангфилиппинскийфонсреднефранцузскийстарофранцузски" + - "йфризский северныйвосточный фризскийфриульскийгагагаузскийгайогбаягеэзг" + - "ильбертскийсредневерхненемецкийдревневерхненемецкийгондигоронталоготски" + - "йгребодревнегреческийшвейцарский немецкийгусиигвичинхайдагавайскийхилиг" + - "айнонхеттскийхмонгверхнелужицкийхупаибанскийибибиоилокоингушскийложбанн" + - "гомбамачамееврейско-персидскийеврейско-арабскийкаракалпакскийкабильский" + - "качинскийкаджикамбакавикабардинскийканембутьяпмакондекабувердьянукорокх" + - "асихотанскийкойра чииникакокаленджинкимбундийскийкоми-пермяцкийконканик" + - "осраенскийкпеллекарачаево-балкарскийкарельскийкурухшамбалабафиякёльшкум" + - "ыкскийкутенаиладинолангилахндаламбалезгинскийлакотамонголозисеверно-лур" + - "ийскийлуба-лулуалуисеньолундалуо (Кения и Танзания)лушайлухьямадурскийм" + - "афамагахимайтхилимакассарскиймандингомасаимабанскиймокшанскиймандарский" + - "мендемерумаврикийский креольскийсреднеирландскиймакуа-мееттометамикмакм" + - "инангкабауманьчжурскийманипурскиймохаукмосимундангнесколько языковкрикм" + - "ирандийскиймарваримиенеэрзямазендеранскийнеаполитанскийнаманижнегерманс" + - "кийневарскийниасниуэквасионгиембундногайскийстаронорвежскийнкосото севе" + - "рныйнуэрневари (классический)ньямвезиньянколеньоронзимаоседжистаротурец" + - "кийпангасинанпехлевийскийпампангапапьяментопалаустароперсидскийфиникийс" + - "кийпонапестаропровансальскийкичераджастханирапануираротонганскийромбоцы" + - "ганскийарумынскийруандасандавеякутскийсамаритянский арамейскийсамбуруса" + - "сакисанталингамбайскийсангусицилийскийшотландскийюжнокурдскийсенекасена" + - "селькупскийкойраборо сеннистароирландскийташельхитшанскийчадский арабсс" + - "идамаюжно-саамскийлуле-саамскийинари-саамскийскольт-саамскийсонинкесогд" + - "ийскийсранан тонгосерерсахосукумасусушумерскийкоморскийклассический сир" + - "ийскийсирийскийтемнетесотеренотетумтигретивитокелайскийклингонскийтлинг" + - "иттамашекньяса (тонга)ток-писинтуройотарокоцимшиантумбукатувалутасавакт" + - "увинскийсреднеатласский тамазигхтскийудмуртскийугаритскийумбундукорнево" + - "й языкваиводскийвунджовалисскийволамоварайвашовальбирикалмыцкийсогаяояп" + - "янбанйембакантонскийсапотекскийблиссимволиказенагскийтамазигхтскийзуньи" + - "без языкового содержаниязазаарабский литературныйавстрийский немецкийшв" + - "ейцарский верхненемецкийавстралийский английскийканадский английскийбри" + - "танский английскийамериканский английскийлатиноамериканский испанскийев" + - "ропейский испанскиймексиканский испанскийканадский французскийшвейцарск" + - "ий французскийнижнесаксонскийфламандскийбразильский португальскийевропе" + - "йский португальскиймолдавскийсербскохорватскийконголезский суахилиупрощ" + - "енный китайскийтрадиционный китайский" - -var ruLangIdx = []uint16{ // 610 elements + 0x0f7a, 0x0f81, 0x0f88, 0x0f8d, 0x0f8d, 0x0f97, 0x0fa0, 0x0faf, + 0x0faf, 0x0fb5, 0x0fd1, 0x0fd5, 0x0fef, 0x0ff3, 0x100b, 0x100b, + 0x100b, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, + 0x1027, 0x1027, 0x1027, 0x1027, 0x1034, 0x103d, 0x103d, 0x103d, + 0x104b, 0x1059, 0x106d, 0x106d, 0x1084, +} // Size: 1250 bytes + +const ruLangStr string = "" + // Size: 9389 bytes + "афарскийабхазскийавестийскийафрикаансаканамхарскийарагонскийарабскийасса" + + "мскийаварскийаймараазербайджанскийбашкирскийбелорусскийболгарскийбислам" + + "абамбарабенгальскийтибетскийбретонскийбоснийскийкаталанскийчеченскийчам" + + "оррокорсиканскийкричешскийцерковнославянскийчувашскийваллийскийдатскийн" + + "емецкиймальдивскийдзонг-кээвегреческийанглийскийэсперантоиспанскийэстон" + + "скийбаскскийперсидскийфулахфинскийфиджифарерскийфранцузскийзападный фри" + + "зскийирландскийгэльскийгалисийскийгуаранигуджаратимэнскийхаусаивритхинд" + + "ихиримотухорватскийгаитянскийвенгерскийармянскийгерероинтерлингваиндоне" + + "зийскийинтерлингвеигбоносуинупиакидоисландскийитальянскийинуктитутяпонс" + + "кийяванскийгрузинскийконгокикуйюкунамаказахскийгренландскийкхмерскийкан" + + "надакорейскийканурикашмирикурдскийкомикорнскийкиргизскийлатинскийлюксем" + + "бургскийгандалимбургскийлингалалаосскийлитовскийлуба-катангалатышскийма" + + "лагасийскиймаршалльскиймаоримакедонскиймалаяламмонгольскиймаратхималайс" + + "киймальтийскийбирманскийнаурусеверный ндебеленепальскийндонганидерландс" + + "кийнюнорскнорвежский букмолюжный ндебеленавахоньянджаокситанскийоджибва" + + "оромоорияосетинскийпанджабипалипольскийпуштупортугальскийкечуароманшски" + + "йрундирумынскийрусскийкиньяруандасанскритсардинскийсиндхисеверносаамски" + + "йсангосингальскийсловацкийсловенскийсамоанскийшонасомалиалбанскийсербск" + + "ийсвазиюжный сотосунданскийшведскийсуахилитамильскийтелугутаджикскийтай" + + "скийтигриньятуркменскийтсванатонганскийтурецкийтсонгататарскийтаитянски" + + "йуйгурскийукраинскийурдуузбекскийвендавьетнамскийволапюкваллонскийволоф" + + "косаидишйорубачжуанькитайскийзулуачехскийачолиадангмеадыгейскийафрихили" + + "агхемайнуаккадскийалеутскийюжноалтайскийстароанглийскийангикаарамейский" + + "мапучеарапахоаравакскийасуастурийскийавадхибелуджскийбалийскийбасабамум" + + "гомалабеджабембабенабафутзападный белуджскийбходжпурибикольскийбиникомс" + + "иксикабрауибодоакоосебурятскийбугийскийбулубилинмедумбакаддокарибкайюга" + + "атсамсебуанокигачибчачагатайскийчукотскиймарийскийчинук жаргончоктавчип" + + "евьянчерокичейеннсораникоптскийкрымско-татарскийсейшельский креольскийк" + + "ашубскийдакотадаргинскийтаитаделаварскийслейвидогрибдинкаджермадогриниж" + + "нелужицкийдуаласредненидерландскийдиола-фоньидиуладазаэмбуэфикдревнееги" + + "петскийэкаджукэламскийсреднеанглийскийэвондофангфилиппинскийфонсреднефр" + + "анцузскийстарофранцузскийсеверный фризскийвосточный фризскийфриульскийг" + + "агагаузскийганьгайогбаягеэзгильбертскийсредневерхненемецкийдревневерхне" + + "немецкийгондигоронталоготскийгребодревнегреческийшвейцарский немецкийгу" + + "сиигвичинхайдахаккагавайскийхилигайнонхеттскийхмонгверхнелужицкийсянхуп" + + "аибанскийибибиоилокоингушскийложбаннгомбамачамееврейско-персидскийеврей" + + "ско-арабскийкаракалпакскийкабильскийкачинскийкаджикамбакавикабардинский" + + "канембутьяпмакондекабувердьянукорокхасихотанскийкойра чииникакокаленджи" + + "нкимбундукоми-пермяцкийконканикосраенскийкпеллекарачаево-балкарскийкаре" + + "льскийкурухшамбалабафиякёльнскийкумыкскийкутенаиладиноланголахндаламбал" + + "езгинскийлакотамонголозисевернолурскийлуба-лулуалуисеньолундалуолушейлу" + + "хьямадурскиймафамагахимайтхилимакассарскиймандингомасаимабамокшанскийма" + + "ндарскиймендемерумаврикийский креольскийсреднеирландскиймакуа-мееттомет" + + "амикмакминангкабауманьчжурскийманипурскиймохаукмосимундангязыки разных " + + "семейкрикмирандскиймарваримиенеэрзянскиймазендеранскийминьнаньнеаполита" + + "нскийнаманижнегерманскийневарскийниасниуэквасионгиембундногайскийстарон" + + "орвежскийнкосеверный сотонуэрклассический невариньямвезиньянколеньоронз" + + "имаоседжистаротурецкийпангасинанпехлевийскийпампангапапьяментопалауниге" + + "рийско-креольскийстароперсидскийфиникийскийпонапепрусскийстаропровансал" + + "ьскийкичераджастханирапануйскийраротонгаромбоцыганскийарумынскийруандас" + + "андавеякутскийсамаритянский арамейскийсамбурусасакскийсанталингамбайски" + + "йсангусицилийскийшотландскийюжнокурдскийсенекасенаселькупскийкойраборо " + + "сеннистароирландскийташельхитшанскийчадский арабскийсидамаюжносаамскийл" + + "уле-саамскийинари-саамскийколтта-саамскийсонинкесогдийскийсранан-тонгос" + + "ерерсахосукумасусушумерскийкоморскийклассический сирийскийсирийскийтемн" + + "етесотеренотетумтигретивитокелайскийклингонскийтлингиттамашектонгаток-п" + + "исинтуройоседекскийцимшиантумбукатувалутасавактувинскийсреднеатласский " + + "тамазигхтскийудмуртскийугаритскийумбундукорневой языкваиводскийвунджова" + + "ллисскийволамоварайвашовальбиривукалмыцкийсогаяояпянгбенйембакантонский" + + "сапотекскийблиссимволиказенагскийтамазигхтскийзуньинет языкового матери" + + "алазазаарабский литературныйавстрийский немецкийлитературный швейцарски" + + "й немецкийавстралийский английскийканадский английскийбританский англий" + + "скийамериканский английскийлатиноамериканский испанскийевропейский испа" + + "нскиймексиканский испанскийканадский французскийшвейцарский французский" + + "нижнесаксонскийфламандскийбразильский португальскийевропейский португал" + + "ьскиймолдавскийсербскохорватскийконголезский суахиликитайский, упрощенн" + + "ое письмокитайский, традиционное письмо" + +var ruLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0008, 0x001a, 0x0030, 0x0042, 0x004a, 0x005c, 0x0070, - 0x0080, 0x0092, 0x00a2, 0x00ae, 0x00cc, 0x00e0, 0x00f6, 0x010a, - 0x0118, 0x0130, 0x0146, 0x0158, 0x016c, 0x0180, 0x0196, 0x01a8, - 0x01b6, 0x01ce, 0x01e0, 0x01ee, 0x0212, 0x0224, 0x0238, 0x0246, - 0x0256, 0x026c, 0x027b, 0x0281, 0x0293, 0x02a7, 0x02b9, 0x02cb, - 0x02dd, 0x02ed, 0x0301, 0x030b, 0x0319, 0x0323, 0x0335, 0x034b, - 0x036a, 0x037e, 0x038e, 0x03a4, 0x03b2, 0x03c4, 0x03d2, 0x03dc, - 0x03e6, 0x03f0, 0x0400, 0x0414, 0x0428, 0x043c, 0x044e, 0x045a, + 0x0000, 0x0010, 0x0022, 0x0038, 0x004a, 0x0052, 0x0064, 0x0078, + 0x0088, 0x009a, 0x00aa, 0x00b6, 0x00d4, 0x00e8, 0x00fe, 0x0112, + 0x0120, 0x012e, 0x0144, 0x0156, 0x016a, 0x017e, 0x0194, 0x01a6, + 0x01b4, 0x01cc, 0x01d2, 0x01e0, 0x0204, 0x0216, 0x022a, 0x0238, + 0x0248, 0x025e, 0x026d, 0x0273, 0x0285, 0x0299, 0x02ab, 0x02bd, + 0x02cf, 0x02df, 0x02f3, 0x02fd, 0x030b, 0x0315, 0x0327, 0x033d, + 0x035e, 0x0372, 0x0382, 0x0398, 0x03a6, 0x03b8, 0x03c6, 0x03d0, + 0x03da, 0x03e4, 0x03f4, 0x0408, 0x041c, 0x0430, 0x0442, 0x044e, // Entry 40 - 7F - 0x0470, 0x048a, 0x04a0, 0x04a8, 0x04b6, 0x04c4, 0x04ca, 0x04de, - 0x04f4, 0x0506, 0x0516, 0x0526, 0x053a, 0x0544, 0x0550, 0x055c, - 0x056e, 0x0586, 0x0598, 0x05a6, 0x05b8, 0x05c4, 0x05d2, 0x05e2, - 0x05ea, 0x05fe, 0x0612, 0x0624, 0x0640, 0x064a, 0x0660, 0x066e, - 0x067e, 0x0690, 0x06a7, 0x06b9, 0x06d3, 0x06eb, 0x06f5, 0x070b, - 0x071b, 0x0731, 0x073f, 0x0751, 0x0767, 0x077b, 0x0785, 0x07a4, - 0x07b8, 0x07c4, 0x07de, 0x0801, 0x0822, 0x083b, 0x0847, 0x0855, - 0x086b, 0x0879, 0x0883, 0x088b, 0x089f, 0x08af, 0x08b7, 0x08c7, + 0x0464, 0x047e, 0x0494, 0x049c, 0x04a4, 0x04b2, 0x04b8, 0x04cc, + 0x04e2, 0x04f4, 0x0504, 0x0514, 0x0528, 0x0532, 0x053e, 0x054a, + 0x055c, 0x0574, 0x0586, 0x0594, 0x05a6, 0x05b2, 0x05c0, 0x05d0, + 0x05d8, 0x05e8, 0x05fc, 0x060e, 0x062a, 0x0634, 0x064a, 0x0658, + 0x0668, 0x067a, 0x0691, 0x06a3, 0x06bd, 0x06d5, 0x06df, 0x06f5, + 0x0705, 0x071b, 0x0729, 0x073b, 0x0751, 0x0765, 0x076f, 0x078e, + 0x07a2, 0x07ae, 0x07c8, 0x07d6, 0x07f7, 0x0810, 0x081c, 0x082a, + 0x0840, 0x084e, 0x0858, 0x0860, 0x0874, 0x0884, 0x088c, 0x089c, // Entry 80 - BF - 0x08d1, 0x08eb, 0x08f5, 0x0909, 0x0913, 0x0925, 0x0933, 0x0949, - 0x0959, 0x096d, 0x0979, 0x0997, 0x09a1, 0x09b7, 0x09c9, 0x09dd, - 0x09f1, 0x09f9, 0x0a05, 0x0a17, 0x0a27, 0x0a31, 0x0a44, 0x0a58, - 0x0a68, 0x0a76, 0x0a8a, 0x0a96, 0x0aaa, 0x0ab8, 0x0ac8, 0x0ade, - 0x0aea, 0x0afe, 0x0b0e, 0x0b1a, 0x0b2c, 0x0b40, 0x0b52, 0x0b66, - 0x0b6e, 0x0b80, 0x0b8a, 0x0ba0, 0x0bae, 0x0bc2, 0x0bcc, 0x0bd4, - 0x0bdc, 0x0be8, 0x0bf4, 0x0c06, 0x0c0e, 0x0c1e, 0x0c28, 0x0c36, - 0x0c4a, 0x0c4a, 0x0c5a, 0x0c64, 0x0c6c, 0x0c7e, 0x0c7e, 0x0c90, + 0x08a6, 0x08c0, 0x08ca, 0x08de, 0x08e8, 0x08fa, 0x0908, 0x091e, + 0x092e, 0x0942, 0x094e, 0x096c, 0x0976, 0x098c, 0x099e, 0x09b2, + 0x09c6, 0x09ce, 0x09da, 0x09ec, 0x09fc, 0x0a06, 0x0a19, 0x0a2d, + 0x0a3d, 0x0a4b, 0x0a5f, 0x0a6b, 0x0a7f, 0x0a8d, 0x0a9d, 0x0ab3, + 0x0abf, 0x0ad3, 0x0ae3, 0x0aef, 0x0b01, 0x0b15, 0x0b27, 0x0b3b, + 0x0b43, 0x0b55, 0x0b5f, 0x0b75, 0x0b83, 0x0b97, 0x0ba1, 0x0ba9, + 0x0bb1, 0x0bbd, 0x0bc9, 0x0bdb, 0x0be3, 0x0bf3, 0x0bfd, 0x0c0b, + 0x0c1f, 0x0c1f, 0x0c2f, 0x0c39, 0x0c41, 0x0c53, 0x0c53, 0x0c65, // Entry C0 - FF - 0x0c90, 0x0caa, 0x0cc8, 0x0cd4, 0x0ce8, 0x0cfe, 0x0cfe, 0x0d0c, - 0x0d0c, 0x0d20, 0x0d20, 0x0d20, 0x0d26, 0x0d26, 0x0d3c, 0x0d3c, - 0x0d48, 0x0d5c, 0x0d6e, 0x0d6e, 0x0d76, 0x0d80, 0x0d80, 0x0d8e, - 0x0d98, 0x0da2, 0x0da2, 0x0daa, 0x0db4, 0x0db4, 0x0dd7, 0x0de9, - 0x0dfd, 0x0e05, 0x0e05, 0x0e0b, 0x0e19, 0x0e19, 0x0e19, 0x0e23, - 0x0e23, 0x0e2b, 0x0e37, 0x0e49, 0x0e5b, 0x0e63, 0x0e78, 0x0e86, - 0x0e90, 0x0e9a, 0x0ea6, 0x0eb0, 0x0ebe, 0x0ec6, 0x0ed0, 0x0ee6, - 0x0ef8, 0x0f23, 0x0f3a, 0x0f46, 0x0f58, 0x0f64, 0x0f70, 0x0f8d, + 0x0c65, 0x0c7f, 0x0c9d, 0x0ca9, 0x0cbd, 0x0cc9, 0x0cc9, 0x0cd7, + 0x0cd7, 0x0cd7, 0x0ceb, 0x0ceb, 0x0ceb, 0x0cf1, 0x0cf1, 0x0d07, + 0x0d07, 0x0d13, 0x0d27, 0x0d39, 0x0d39, 0x0d41, 0x0d4b, 0x0d4b, + 0x0d57, 0x0d61, 0x0d6b, 0x0d6b, 0x0d73, 0x0d7d, 0x0d7d, 0x0da2, + 0x0db4, 0x0dc8, 0x0dd0, 0x0dd0, 0x0dd6, 0x0de4, 0x0de4, 0x0de4, + 0x0dee, 0x0dee, 0x0df6, 0x0e02, 0x0e14, 0x0e26, 0x0e2e, 0x0e38, + 0x0e46, 0x0e50, 0x0e5a, 0x0e66, 0x0e70, 0x0e7e, 0x0e86, 0x0e90, + 0x0ea6, 0x0eb8, 0x0eca, 0x0ee1, 0x0eed, 0x0efd, 0x0f09, 0x0f15, // Entry 100 - 13F - 0x0f9d, 0x0f9d, 0x0fbe, 0x0fd6, 0x0fe2, 0x0fee, 0x0ff8, 0x100e, - 0x101a, 0x1026, 0x1030, 0x103a, 0x1044, 0x105e, 0x105e, 0x1068, - 0x108e, 0x10a3, 0x10ba, 0x10cc, 0x10d4, 0x10dc, 0x10dc, 0x10fc, - 0x110a, 0x111a, 0x113a, 0x113a, 0x1146, 0x1146, 0x114e, 0x1166, - 0x1166, 0x116c, 0x116c, 0x118e, 0x11ae, 0x11ae, 0x11cf, 0x11f2, - 0x1206, 0x120a, 0x121e, 0x121e, 0x1226, 0x122e, 0x122e, 0x1236, - 0x124e, 0x124e, 0x1276, 0x129e, 0x129e, 0x12a8, 0x12ba, 0x12c8, - 0x12d2, 0x12f0, 0x1317, 0x1317, 0x1317, 0x1321, 0x132d, 0x1337, + 0x0f21, 0x0f31, 0x0f31, 0x0f52, 0x0f7d, 0x0f8f, 0x0f9b, 0x0faf, + 0x0fb9, 0x0fcf, 0x0fdb, 0x0fe7, 0x0ff1, 0x0ffd, 0x1007, 0x1021, + 0x1021, 0x102b, 0x1051, 0x1066, 0x1070, 0x1078, 0x1080, 0x1088, + 0x1088, 0x10a8, 0x10b6, 0x10c6, 0x10e6, 0x10e6, 0x10f2, 0x10f2, + 0x10fa, 0x1112, 0x1112, 0x1118, 0x1118, 0x113a, 0x115a, 0x115a, + 0x117b, 0x119e, 0x11b2, 0x11b6, 0x11ca, 0x11d2, 0x11da, 0x11e2, + 0x11e2, 0x11ea, 0x1202, 0x1202, 0x122a, 0x1252, 0x1252, 0x125c, + 0x126e, 0x127c, 0x1286, 0x12a4, 0x12cb, 0x12cb, 0x12cb, 0x12d5, // Entry 140 - 17F - 0x1337, 0x1349, 0x1349, 0x135d, 0x136d, 0x1377, 0x1393, 0x1393, - 0x139b, 0x13ab, 0x13b7, 0x13c1, 0x13d3, 0x13d3, 0x13d3, 0x13df, - 0x13eb, 0x13f7, 0x141c, 0x143d, 0x143d, 0x1459, 0x146d, 0x147f, - 0x1489, 0x1493, 0x149b, 0x14b3, 0x14c1, 0x14c9, 0x14d7, 0x14ef, - 0x14ef, 0x14f7, 0x14f7, 0x1501, 0x1513, 0x1528, 0x1528, 0x1528, - 0x1530, 0x1542, 0x155c, 0x1577, 0x1585, 0x159b, 0x15a7, 0x15ce, - 0x15ce, 0x15ce, 0x15e2, 0x15ec, 0x15fa, 0x1604, 0x160e, 0x1620, - 0x162e, 0x163a, 0x1644, 0x1650, 0x165a, 0x166e, 0x166e, 0x166e, + 0x12e1, 0x12eb, 0x12f5, 0x1307, 0x1307, 0x131b, 0x132b, 0x1335, + 0x1351, 0x1357, 0x135f, 0x136f, 0x137b, 0x1385, 0x1397, 0x1397, + 0x1397, 0x13a3, 0x13af, 0x13bb, 0x13e0, 0x1401, 0x1401, 0x141d, + 0x1431, 0x1443, 0x144d, 0x1457, 0x145f, 0x1477, 0x1485, 0x148d, + 0x149b, 0x14b3, 0x14b3, 0x14bb, 0x14bb, 0x14c5, 0x14d7, 0x14ec, + 0x14ec, 0x14ec, 0x14f4, 0x1506, 0x1516, 0x1531, 0x153f, 0x1555, + 0x1561, 0x1588, 0x1588, 0x1588, 0x159c, 0x15a6, 0x15b4, 0x15be, + 0x15d0, 0x15e2, 0x15f0, 0x15fc, 0x1606, 0x1612, 0x161c, 0x1630, // Entry 180 - 1BF - 0x166e, 0x167a, 0x167a, 0x1684, 0x168c, 0x16ad, 0x16ad, 0x16c0, - 0x16d0, 0x16da, 0x1701, 0x170b, 0x1715, 0x1715, 0x1715, 0x1727, - 0x172f, 0x173b, 0x174b, 0x1763, 0x1773, 0x177d, 0x178f, 0x17a3, - 0x17b7, 0x17c1, 0x17c9, 0x17f6, 0x1816, 0x182d, 0x1835, 0x1841, - 0x1857, 0x186f, 0x1885, 0x1891, 0x1899, 0x1899, 0x18a7, 0x18c6, - 0x18ce, 0x18e6, 0x18f4, 0x18f4, 0x18fe, 0x1906, 0x1922, 0x1922, - 0x193e, 0x1946, 0x1964, 0x1976, 0x197e, 0x1986, 0x1986, 0x1992, - 0x19a4, 0x19b6, 0x19d4, 0x19d4, 0x19da, 0x19f3, 0x19fb, 0x1a22, + 0x1630, 0x1630, 0x1630, 0x163c, 0x163c, 0x1646, 0x164e, 0x166a, + 0x166a, 0x167d, 0x168d, 0x1697, 0x169d, 0x16a7, 0x16b1, 0x16b1, + 0x16b1, 0x16c3, 0x16cb, 0x16d7, 0x16e7, 0x16ff, 0x170f, 0x1719, + 0x1721, 0x1735, 0x1749, 0x1753, 0x175b, 0x1788, 0x17a8, 0x17bf, + 0x17c7, 0x17d3, 0x17e9, 0x1801, 0x1817, 0x1823, 0x182b, 0x182b, + 0x1839, 0x185b, 0x1863, 0x1877, 0x1885, 0x1885, 0x188f, 0x18a1, + 0x18bd, 0x18cd, 0x18e9, 0x18f1, 0x190f, 0x1921, 0x1929, 0x1931, + 0x1931, 0x193d, 0x194f, 0x1961, 0x197f, 0x197f, 0x1985, 0x199e, // Entry 1C0 - 1FF - 0x1a32, 0x1a42, 0x1a4c, 0x1a56, 0x1a62, 0x1a7c, 0x1a90, 0x1aa8, - 0x1ab8, 0x1acc, 0x1ad6, 0x1ad6, 0x1ad6, 0x1ad6, 0x1af4, 0x1af4, - 0x1b0a, 0x1b0a, 0x1b0a, 0x1b16, 0x1b16, 0x1b3c, 0x1b44, 0x1b44, - 0x1b5a, 0x1b68, 0x1b84, 0x1b84, 0x1b84, 0x1b8e, 0x1ba0, 0x1ba0, - 0x1ba0, 0x1ba0, 0x1bb4, 0x1bc0, 0x1bce, 0x1bde, 0x1c0d, 0x1c1b, - 0x1c27, 0x1c35, 0x1c35, 0x1c4b, 0x1c55, 0x1c6b, 0x1c81, 0x1c81, - 0x1c99, 0x1ca5, 0x1cad, 0x1cad, 0x1cc3, 0x1ce0, 0x1cfe, 0x1cfe, - 0x1d10, 0x1d1e, 0x1d37, 0x1d43, 0x1d43, 0x1d43, 0x1d5c, 0x1d75, + 0x19a6, 0x19cb, 0x19db, 0x19eb, 0x19f5, 0x19ff, 0x1a0b, 0x1a25, + 0x1a39, 0x1a51, 0x1a61, 0x1a75, 0x1a7f, 0x1a7f, 0x1aa8, 0x1aa8, + 0x1aa8, 0x1ac6, 0x1ac6, 0x1adc, 0x1adc, 0x1adc, 0x1ae8, 0x1af8, + 0x1b1e, 0x1b26, 0x1b26, 0x1b3c, 0x1b52, 0x1b64, 0x1b64, 0x1b64, + 0x1b6e, 0x1b80, 0x1b80, 0x1b80, 0x1b80, 0x1b94, 0x1ba0, 0x1bae, + 0x1bbe, 0x1bed, 0x1bfb, 0x1c0d, 0x1c1b, 0x1c1b, 0x1c31, 0x1c3b, + 0x1c51, 0x1c67, 0x1c67, 0x1c7f, 0x1c8b, 0x1c93, 0x1c93, 0x1ca9, + 0x1cc6, 0x1ce4, 0x1ce4, 0x1cf6, 0x1d04, 0x1d23, 0x1d2f, 0x1d2f, // Entry 200 - 23F - 0x1d90, 0x1dad, 0x1dbb, 0x1dcf, 0x1de6, 0x1df0, 0x1df8, 0x1df8, - 0x1e04, 0x1e0c, 0x1e1e, 0x1e30, 0x1e5b, 0x1e6d, 0x1e6d, 0x1e6d, - 0x1e77, 0x1e7f, 0x1e8b, 0x1e95, 0x1e9f, 0x1ea7, 0x1ebd, 0x1ebd, - 0x1ed3, 0x1ee1, 0x1ee1, 0x1eef, 0x1f06, 0x1f17, 0x1f23, 0x1f2f, - 0x1f2f, 0x1f3d, 0x1f3d, 0x1f4b, 0x1f57, 0x1f65, 0x1f77, 0x1fb0, - 0x1fc4, 0x1fd8, 0x1fe6, 0x1fff, 0x2005, 0x2005, 0x2005, 0x2005, - 0x2005, 0x2013, 0x2013, 0x201f, 0x2031, 0x203d, 0x2047, 0x204f, - 0x205f, 0x205f, 0x2071, 0x2071, 0x2079, 0x207d, 0x2081, 0x208b, + 0x1d2f, 0x1d47, 0x1d60, 0x1d7b, 0x1d98, 0x1da6, 0x1dba, 0x1dd1, + 0x1ddb, 0x1de3, 0x1de3, 0x1def, 0x1df7, 0x1e09, 0x1e1b, 0x1e46, + 0x1e58, 0x1e58, 0x1e58, 0x1e62, 0x1e6a, 0x1e76, 0x1e80, 0x1e8a, + 0x1e92, 0x1ea8, 0x1ea8, 0x1ebe, 0x1ecc, 0x1ecc, 0x1eda, 0x1ee4, + 0x1ef5, 0x1f01, 0x1f13, 0x1f13, 0x1f21, 0x1f21, 0x1f2f, 0x1f3b, + 0x1f49, 0x1f5b, 0x1f94, 0x1fa8, 0x1fbc, 0x1fca, 0x1fe3, 0x1fe9, + 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ff7, 0x1ff7, 0x2003, 0x2017, + 0x2023, 0x202d, 0x2035, 0x2045, 0x2049, 0x205b, 0x205b, 0x2063, // Entry 240 - 27F - 0x2095, 0x2095, 0x20a9, 0x20bf, 0x20d9, 0x20d9, 0x20eb, 0x2105, - 0x210f, 0x213d, 0x2145, 0x216e, 0x216e, 0x2195, 0x21c8, 0x21f7, - 0x221e, 0x2247, 0x2274, 0x22ab, 0x22d4, 0x22ff, 0x22ff, 0x2328, - 0x2355, 0x2373, 0x2389, 0x23ba, 0x23eb, 0x23ff, 0x2421, 0x2448, - 0x246f, 0x249a, -} // Size: 1244 bytes - -var siLangStr string = "" + // Size: 5819 bytes - "ඇබ්කාසියානුඅප්\u200dරිකානුඅකාන්ඇම්හාරික්අරාබිඇසමියානුඅසර්බයිජාන්බාෂ්කිර්" + - "බෙලරුසියානුබල්ගේරියානුබම්බරාබෙංගාලිටිබෙට්බ්\u200dරේටොන්බොස්නියානුකැටලන" + - "්චෙච්නියානුක්\u200dරොඑශියානුචෙත්චවේෂ්වේල්ස්ඩැනිශ්ජර්මන්දිවෙහිඩිසොන්කාඉ" + - "ව්ග්\u200dරීකඉංග්\u200dරීසිඑස්පැරන්ටෝස්පාඤ්ඤඑස්තෝනියානුබොස්කෝපර්සියානු" + - "ෆින්ලන්තෆීජිෆාරෝස්ප්\u200dරංශබටහිර ෆ්\u200dරිසියානුඅයර්ලන්තගැලීසියානුග" + - "ුවාරනිගුජරාටිමැන්ක්ස්හෝසාහීබෲහින්දික්\u200dරෝයේශියානුහයිටිහන්ගේරියානුආ" + - "ර්මේනියානුඉන්දුනීසියානුඉග්බෝසිචුආන් යීඅයිස්ලන්තඉතාලිඉනුක්ටිටුට්ජපන්ජාව" + - "ාජෝර්ජියානුකිකුයුකසාඛ්කලාලිසට්කමර්කණ්ණඩකොරියානුකාෂ්මීර්කුර්දිකෝනීසියාන" + - "ුකිර්ගිස්ලතින්ලක්සැම්බර්ග්ගන්ඩාලින්ගලාලාඕලිතුවේනියානුලුලැට්වියානුමලගාස" + - "ිමාවොරිමැසිඩෝනියානුමලයාලම්මොංගෝලියානුමරාතිමැලේමොල්ටිස්බුරුමඋතුරු එන්ඩි" + - "බෙලෙනේපාලලන්දේසිනොවේර්ජියානු නයිනෝර්ස්ක්නෝවේජියානු බොක්මාල්ඔරොමෝඔරියාජ" + - "න්ජාබිපෝලන්තපෂ්ටොපෘතුගීසික්වීචුවාරොමෑන්ශ්රුන්ඩිරොමේනියානුරුසියානුකින්ය" + - "ර්වන්ඩාසංස්කෘතසින්ධිඋතුරු සාමිසන්ග්\u200dරෝසිංහලස්ලෝවැක්ස්ලෝවේනියානුශෝ" + - "නාසෝමාලිඇල්බේනියානුසර්බියානුසන්ඩනීසියානුස්වීඩන්ස්වාහිලිදෙමළතෙළිඟුටජික්" + - "තායිටිග්\u200dරින්යාටර්ක්මෙන්ටොංගාතුර්කිටාටර්උයිගර්යුක්රේනියානුඋර්දුඋස" + - "්බෙක්වියට්නාම්වොලොෆ්ශෝසායොරූබාචීනසුලුටියුනිසියනු අරාබිඇගම්මපුචෙඅසුබෙම්" + - "බාබෙනාබටහිර බලොචිබොඩොචිගාචෙරොකීසොරානි කුර්දිෂ්ටයිටාෆර්මාපහළ සෝබියානුඩු" + - "ආලාජොල-ෆෝනියිඑම්බුපිලිපීනගගාස්ස්විස් ජර්මනිගුසීහවායිඉහළ සෝබියානුනොම්බා" + - "මැකාමීකැබලාකැම්බාමැකොන්ඩ්කබුවෙර්ඩියානෝකොයිරා චිනිකලෙන්ජන්කොමි-පර්මියාක" + - "්කොන්කනිශාම්බලාබාෆියාලංගිලකොටඋතුරු ලුරිලුඔලුයියාමසායිමෙරුමොරිස්යෙම්මඛු" + - "වා-මීටෝමෙටාමොහොව්ක්මුන්ඩන්මැසන්ඩරනිනාමාපහළ ජර්මන්කුවාසිඔඑන්‘කෝනොයර්නයන" + - "්කොළේකියිචේරෝම්බෝර්වාසම්බුරුසංගුදකුණු කුර්දිසෙනාකෝයිරාබොරො සෙන්නිටචේල්" + - "හිට්දකුණු සාමිලුලේ සාමිඉනාරි සාමිස්කොල්ට් සාමිටෙසෝටසවාක්මධ්\u200dයම ඇට" + - "්ලස් ටමසිට්නොදන්නා භාෂාවවයිවුන්ජෝවොපිරිසොගාසම්මත මොරොක්කෝ ටමසිග්ත්වාග්" + - " විද්\u200dයා අන්තර්ගතයක් නැතනවීන සම්මත අරාබිඔස්ට්\u200dරියානු ජර්මන්ස්ව" + - "ිස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසිකැනේඩියානු ඉංග්\u200d" + - "රීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු ඉංග්\u200dරීසිලතින් " + - "ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤකැනේඩියානු ප්\u200dරං" + - "ශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල පෘතුගීසියුරෝපීය පෘත" + - "ුගීසිමොල්ඩෝවාවකොන්ගෝ ස්වාහිලිසුළුකළ චීනසාම්ප්\u200dරදායික චීන" - -var siLangIdx = []uint16{ // 610 elements + 0x2067, 0x206b, 0x2077, 0x2081, 0x2081, 0x2095, 0x20ab, 0x20c5, + 0x20c5, 0x20d7, 0x20f1, 0x20fb, 0x2127, 0x212f, 0x2158, 0x2158, + 0x217f, 0x21bf, 0x21ee, 0x2215, 0x223e, 0x226b, 0x22a2, 0x22cb, + 0x22f6, 0x22f6, 0x231f, 0x234c, 0x236a, 0x2380, 0x23b1, 0x23e2, + 0x23f6, 0x2418, 0x243f, 0x2474, 0x24ad, +} // Size: 1250 bytes + +const siLangStr string = "" + // Size: 9440 bytes + "අෆාර්ඇබ්කාසියානුඅප්\u200dරිකානුඅකාන්ඇම්හාරික්ඇරගොනීස්අරාබිඇසමියානුඇවරික්" + + "අයිමරාඅසර්බයිජාන්බාෂ්කිර්බෙලරුසියානුබල්ගේරියානුබිස්ලමාබම්බරාබෙංගාලිටිබ" + + "ෙට්බ්\u200dරේටොන්බොස්නියානුකැටලන්චෙච්නියානුචමොරොක්\u200dරොඑශියානුචෙත්ච" + + "ර්ච් ස්ලැවික්චවේෂ්වේල්ස්ඩැනිශ්ජර්මන්දිවෙහිඩිසොන්කාඉව්ග්\u200dරීකඉංග්" + + "\u200dරීසිඑස්පැරන්ටෝස්පාඤ්ඤඑස්තෝනියානුබොස්කෝපර්සියානුෆුලාහ්ෆින්ලන්තෆීජිෆ" + + "ාරෝස්ප්\u200dරංශබටහිර ෆ්\u200dරිසියානුඅයර්ලන්තස්කොට්ටිශ් ගෙලික්ගැලීසිය" + + "ානුගුවාරනිගුජරාටිමැන්ක්ස්හෝසාහීබෲහින්දික්\u200dරෝයේශියානුහයිටිහන්ගේරිය" + + "ානුආර්මේනියානුහෙරෙරොඉන්ටලින්ගුආඉන්දුනීසියානුඉග්බෝසිචුආන් යීඉඩොඅයිස්ලන්" + + "තඉතාලිඉනුක්ටිටුට්ජපන්ජාවාජෝර්ජියානුකිකුයුකුයන්යමාකසාඛ්කලාලිසට්කමර්කණ්ණ" + + "ඩකොරියානුකනුරිකාෂ්මීර්කුර්දිකොමිකෝනීසියානුකිර්ගිස්ලතින්ලක්සැම්බර්ග්ගන්" + + "ඩාලිම්බර්ගිශ්ලින්ගලාලාඕලිතුවේනියානුලුලැට්වියානුමලගාසිමාශලීස්මාවොරිමැසි" + + "ඩෝනියානුමලයාලම්මොංගෝලියානුමරාතිමැලේමොල්ටිස්බුරුමනෞරුඋතුරු එන්ඩිබෙලෙනේප" + + "ාලන්ඩොන්ගාලන්දේසිනොවේර්ජියානු නයිනෝර්ස්ක්නෝවේජියානු බොක්මාල්සෞත් ඩ්බේල" + + "්නවාජොන්යන්ජාඔසිටාන්ඔරොමෝඔරියාඔසිටෙක්පන්ජාබිපෝලන්තපෂ්ටොපෘතුගීසික්වීචුව" + + "ාරොමෑන්ශ්රුන්ඩිරොමේනියානුරුසියානුකින්යර්වන්ඩාසංස්කෘතසාර්ඩිනිඅන්සින්ධිඋ" + + "තුරු සාමිසන්ග්\u200dරෝසිංහලස්ලෝවැක්ස්ලෝවේනියානුසෑමොඅන්ශෝනාසෝමාලිඇල්බේන" + + "ියානුසර්බියානුස්වතිසතර්න් සොතොසන්ඩනීසියානුස්වීඩන්ස්වාහිලිදෙමළතෙළිඟුටජි" + + "ක්තායිටිග්\u200dරින්යාටර්ක්මෙන්ස්වනාටොංගාතුර්කිසොන්ගටාටර්ටහිටියන්උයිගර" + + "්යුක්රේනියානුඋර්දුඋස්බෙක්වෙන්ඩාවියට්නාම්වොලපූක්වෑලූන්වොලොෆ්ශෝසායිඩිශ්ය" + + "ොරූබාචීනසුලුඅචයිනිස්අඩන්ග්මෙඅඩිඝෙටියුනිසියනු අරාබිඇගම්අයිනුඇලුඑට්සතර්න" + + "් අල්ටය්අන්ගිකමපුචෙඇරපහොඅසුඇස්ටියුරියන්අවදිබැලිනීස්බසාබෙම්බාබෙනාබටහිර " + + "බලොචිබොජ්පුරිබිනිසික්සිකාබොඩොබුගිනීස්බ්ලින්සෙබුඅනොචිගාචූකීස්මරිචොක්ටොව" + + "්චෙරොකීචෙයෙන්නෙසොරානි කුර්දිෂ්සෙසෙල්ව ක්\u200dරොල් ෆ්\u200dරෙන්ච්ඩකොටා" + + "ඩාර්ග්වාටයිටාඩොග්\u200dරිබ්සර්මාපහළ සෝබියානුඩුආලාජොල-ෆෝනියිඩසාගාඑම්බුඑ" + + "ෆික්එකජුක්එවොන්ඩොපිලිපීනෆොන්ෆ්\u200dරියුලියන්ගාගගාස්ගැන් චයිනිස්ගීස්ගි" + + "ල්බර්ටීස්ගොරොන්ටාලොස්විස් ජර්මානුගුසීග්විචින්හකා චයිනිස්හවායිහිලිගෙනන්" + + "මොන්ග්ඉහළ සෝබියානුසියැන් චීනහුපාඉබන්ඉබිබියොඉලොකොඉන්ගුෂ්ලොජ්බන්නොම්බාමැ" + + "කාමීකැබලාකචින්ජ්ජුකැම්බාකබාර්ඩියන්ට්යප්මැකොන්ඩ්කබුවෙර්ඩියානෝකොරොඛසිකොය" + + "ිරා චිනිකකොකලෙන්ජන්කිම්බුන්ඩුකොමි-පර්මියාක්කොන්කනික්පෙලෙකරන්චි-බාකර්කැ" + + "රෙලියන්කුරුඛ්ශාම්බලාබාෆියාකොලොග්නියන්කුමික්ලඩිනොලංගිලෙස්ගියන්ලකොටලොසිඋ" + + "තුරු ලුරිලුබ-ලුලුඅලුන්ඩලුඔමිසොලුයියාමදුරීස්මඝහිමයිතිලිමකාසාර්මසායිමොක්" + + "ශාමෙන්ඩෙමෙරුමොරිස්යෙම්මඛුවා-මීටෝමෙටාමික්මැක්මිනන්ග්කබාවුමනිපුරිමොහොව්ක" + + "්මොස්සිමුන්ඩන්බහු භාෂාක්\u200dරීක්මිරන්ඩීස්එර්ස්යාමැසන්ඩරනිමින් නන් චය" + + "ිනිස්නියාපොලිටන්නාමාපහළ ජර්මන්නෙවාරිනියාස්නියුඑන්කුවාසිඔන්ගියාම්බූන්නො" + + "ගායිඑන්‘කෝනොදර්න් සොතොනොයර්නයන්කොළේපන්ගසීනන්පන්පන්ගපපියමෙන්ටොපලවුවන්නෛ" + + "ජීරියන් පෙන්ගින්පෘශියන්කියිචේරපනුයිරරොටොන්ගන්රෝම්බෝඇරොමෙන්යන්ර්වාසන්ඩව" + + "ෙසඛාසම්බුරුසෑන්ටලින්ගම්බෙසංගුසිසිලියන්ස්කොට්ස්දකුණු කුර්දිසෙනාකෝයිරාබො" + + "රො සෙන්නිටචේල්හිට්ශාන්දකුණු සාමිලුලේ සාමිඉනාරි සාමිස්කොල්ට් සාමිසොනින්" + + "කෙස්\u200dරන් ටොන්ගොසහොසුකුමාකොමොරියන්ස්\u200dරයෑක්ටිම්නෙටෙසෝටේටම්ටීග්" + + "\u200dරෙක්ලින්ගොන්ටොක් පිසින්ටරොකොටුම්බුකාටුවාලුටසවාක්ටුවිනියන්මධ්\u200d" + + "යම ඇට්ලස් ටමසිට්අඩ්මර්ට්උබුන්ඩුරූට්වයිවුන්ජෝවොල්සර්වොලෙට්ටවොරෙය්වොපිරි" + + "වූ චයිනිස්කල්මික්සොගායන්ග්බෙන්යෙම්බාකැන්ටොනීස්සම්මත මොරොක්කෝ ටමසිග්ත්ස" + + "ුනිවාග් විද්\u200dයා අන්තර්ගතයක් නැතසාසානවීන සම්මත අරාබිඔස්ට්\u200dරිය" + + "ානු ජර්මන්ස්විස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසිකැනේඩියා" + + "නු ඉංග්\u200dරීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු ඉංග්" + + "\u200dරීසිලතින් ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤකැනේඩිය" + + "ානු ප්\u200dරංශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල පෘතුග" + + "ීසියුරෝපීය පෘතුගීසිමොල්ඩවිආනුසුළුකළ චීනසාම්ප්\u200dරදායික චීන" + +var siLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0021, 0x0021, 0x003f, 0x004e, 0x0069, 0x0069, - 0x0078, 0x0090, 0x0090, 0x0090, 0x00b1, 0x00c9, 0x00ea, 0x010b, - 0x010b, 0x011d, 0x0132, 0x0144, 0x015f, 0x017d, 0x018f, 0x01ad, - 0x01ad, 0x01d1, 0x01d1, 0x01dd, 0x01dd, 0x01ec, 0x01fe, 0x0210, - 0x0222, 0x0234, 0x024c, 0x0255, 0x0267, 0x0282, 0x02a0, 0x02b5, - 0x02d6, 0x02e8, 0x0303, 0x0303, 0x031b, 0x0327, 0x0339, 0x034b, - 0x037c, 0x0394, 0x0394, 0x03b2, 0x03c7, 0x03dc, 0x03f4, 0x0400, - 0x040c, 0x041e, 0x041e, 0x0445, 0x0454, 0x0475, 0x0496, 0x0496, + 0x0000, 0x000f, 0x0030, 0x0030, 0x004e, 0x005d, 0x0078, 0x0090, + 0x009f, 0x00b7, 0x00c9, 0x00db, 0x00fc, 0x0114, 0x0135, 0x0156, + 0x016b, 0x017d, 0x0192, 0x01a4, 0x01bf, 0x01dd, 0x01ef, 0x020d, + 0x021c, 0x0240, 0x0240, 0x024c, 0x0274, 0x0283, 0x0295, 0x02a7, + 0x02b9, 0x02cb, 0x02e3, 0x02ec, 0x02fe, 0x0319, 0x0337, 0x034c, + 0x036d, 0x037f, 0x039a, 0x03ac, 0x03c4, 0x03d0, 0x03e2, 0x03f4, + 0x0425, 0x043d, 0x046e, 0x048c, 0x04a1, 0x04b6, 0x04ce, 0x04da, + 0x04e6, 0x04f8, 0x04f8, 0x051f, 0x052e, 0x054f, 0x0570, 0x0582, // Entry 40 - 7F - 0x0496, 0x04bd, 0x04bd, 0x04cc, 0x04e8, 0x04e8, 0x04e8, 0x0503, - 0x0512, 0x0533, 0x053f, 0x054b, 0x0569, 0x0569, 0x057b, 0x057b, - 0x058a, 0x05a2, 0x05ae, 0x05bd, 0x05d5, 0x05d5, 0x05ed, 0x05ff, - 0x05ff, 0x061d, 0x0635, 0x0644, 0x0668, 0x0677, 0x0677, 0x068c, - 0x0695, 0x06b9, 0x06bf, 0x06dd, 0x06ef, 0x06ef, 0x0701, 0x0725, - 0x073a, 0x075b, 0x076a, 0x0776, 0x078e, 0x079d, 0x079d, 0x07c8, - 0x07d7, 0x07d7, 0x07ec, 0x0832, 0x0869, 0x0869, 0x0869, 0x0869, - 0x0869, 0x0869, 0x0878, 0x0887, 0x0887, 0x089c, 0x089c, 0x08ae, + 0x05a3, 0x05ca, 0x05ca, 0x05d9, 0x05f5, 0x05f5, 0x05fe, 0x0619, + 0x0628, 0x0649, 0x0655, 0x0661, 0x067f, 0x067f, 0x0691, 0x06a9, + 0x06b8, 0x06d0, 0x06dc, 0x06eb, 0x0703, 0x0712, 0x072a, 0x073c, + 0x0748, 0x0766, 0x077e, 0x078d, 0x07b1, 0x07c0, 0x07e1, 0x07f6, + 0x07ff, 0x0823, 0x0829, 0x0847, 0x0859, 0x086e, 0x0880, 0x08a4, + 0x08b9, 0x08da, 0x08e9, 0x08f5, 0x090d, 0x091c, 0x0928, 0x0953, + 0x0962, 0x097a, 0x098f, 0x09d5, 0x0a0c, 0x0a2b, 0x0a3a, 0x0a4f, + 0x0a64, 0x0a64, 0x0a73, 0x0a82, 0x0a97, 0x0aac, 0x0aac, 0x0abe, // Entry 80 - BF - 0x08bd, 0x08d5, 0x08ed, 0x0905, 0x0917, 0x0935, 0x094d, 0x0971, - 0x0986, 0x0986, 0x0998, 0x09b4, 0x09cc, 0x09db, 0x09f3, 0x0a17, - 0x0a17, 0x0a23, 0x0a35, 0x0a56, 0x0a71, 0x0a71, 0x0a71, 0x0a95, - 0x0aaa, 0x0ac2, 0x0ace, 0x0ae0, 0x0aef, 0x0afb, 0x0b1c, 0x0b37, - 0x0b37, 0x0b46, 0x0b58, 0x0b58, 0x0b67, 0x0b67, 0x0b79, 0x0b9d, - 0x0bac, 0x0bc1, 0x0bc1, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bee, 0x0bfa, - 0x0bfa, 0x0c0c, 0x0c0c, 0x0c15, 0x0c21, 0x0c21, 0x0c21, 0x0c21, - 0x0c21, 0x0c52, 0x0c52, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, + 0x0acd, 0x0ae5, 0x0afd, 0x0b15, 0x0b27, 0x0b45, 0x0b5d, 0x0b81, + 0x0b96, 0x0bb7, 0x0bc9, 0x0be5, 0x0bfd, 0x0c0c, 0x0c24, 0x0c48, + 0x0c5d, 0x0c69, 0x0c7b, 0x0c9c, 0x0cb7, 0x0cc6, 0x0ce5, 0x0d09, + 0x0d1e, 0x0d36, 0x0d42, 0x0d54, 0x0d63, 0x0d6f, 0x0d90, 0x0dab, + 0x0dba, 0x0dc9, 0x0ddb, 0x0dea, 0x0df9, 0x0e11, 0x0e23, 0x0e47, + 0x0e56, 0x0e6b, 0x0e7d, 0x0e98, 0x0ead, 0x0ebf, 0x0ed1, 0x0edd, + 0x0eef, 0x0f01, 0x0f01, 0x0f0a, 0x0f16, 0x0f2e, 0x0f2e, 0x0f46, + 0x0f55, 0x0f86, 0x0f86, 0x0f92, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb3, // Entry C0 - FF - 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c6d, 0x0c6d, 0x0c6d, - 0x0c6d, 0x0c6d, 0x0c6d, 0x0c6d, 0x0c76, 0x0c76, 0x0c76, 0x0c76, - 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, - 0x0c76, 0x0c88, 0x0c88, 0x0c94, 0x0c94, 0x0c94, 0x0cb3, 0x0cb3, - 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, - 0x0cb3, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, - 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0ccb, 0x0ccb, 0x0ccb, - 0x0ccb, 0x0ccb, 0x0ccb, 0x0ccb, 0x0ccb, 0x0cdd, 0x0cdd, 0x0d08, + 0x0fb3, 0x0fd8, 0x0fd8, 0x0fea, 0x0fea, 0x0ff9, 0x0ff9, 0x1008, + 0x1008, 0x1008, 0x1008, 0x1008, 0x1008, 0x1011, 0x1011, 0x1035, + 0x1035, 0x1041, 0x1041, 0x1059, 0x1059, 0x1062, 0x1062, 0x1062, + 0x1062, 0x1062, 0x1074, 0x1074, 0x1080, 0x1080, 0x1080, 0x109f, + 0x10b7, 0x10b7, 0x10c3, 0x10c3, 0x10c3, 0x10db, 0x10db, 0x10db, + 0x10db, 0x10db, 0x10e7, 0x10e7, 0x10e7, 0x10ff, 0x10ff, 0x1111, + 0x1111, 0x1111, 0x1111, 0x1111, 0x1111, 0x1126, 0x1132, 0x1132, + 0x1132, 0x1144, 0x114d, 0x114d, 0x1165, 0x1165, 0x1177, 0x118f, // Entry 100 - 13F - 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d17, 0x0d17, - 0x0d17, 0x0d17, 0x0d17, 0x0d26, 0x0d26, 0x0d48, 0x0d48, 0x0d57, - 0x0d57, 0x0d73, 0x0d73, 0x0d73, 0x0d82, 0x0d82, 0x0d82, 0x0d82, - 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d97, - 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, - 0x0d97, 0x0d97, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, - 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, - 0x0da6, 0x0da6, 0x0dcb, 0x0dcb, 0x0dcb, 0x0dd7, 0x0dd7, 0x0dd7, + 0x11ba, 0x11ba, 0x11ba, 0x11ba, 0x1201, 0x1201, 0x1210, 0x1228, + 0x1237, 0x1237, 0x1237, 0x1252, 0x1252, 0x1261, 0x1261, 0x1283, + 0x1283, 0x1292, 0x1292, 0x12ae, 0x12ae, 0x12bd, 0x12cc, 0x12db, + 0x12db, 0x12db, 0x12ed, 0x12ed, 0x12ed, 0x12ed, 0x1302, 0x1302, + 0x1302, 0x1317, 0x1317, 0x1323, 0x1323, 0x1323, 0x1323, 0x1323, + 0x1323, 0x1323, 0x1347, 0x134d, 0x135c, 0x137e, 0x137e, 0x137e, + 0x137e, 0x138a, 0x13ab, 0x13ab, 0x13ab, 0x13ab, 0x13ab, 0x13ab, + 0x13c9, 0x13c9, 0x13c9, 0x13c9, 0x13f1, 0x13f1, 0x13f1, 0x13fd, // Entry 140 - 17F - 0x0dd7, 0x0de6, 0x0de6, 0x0de6, 0x0de6, 0x0de6, 0x0e08, 0x0e08, - 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, - 0x0e1a, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e3b, 0x0e3b, - 0x0e3b, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e65, 0x0e8c, - 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0eab, 0x0eab, 0x0eab, - 0x0eab, 0x0ec3, 0x0ec3, 0x0eeb, 0x0f00, 0x0f00, 0x0f00, 0x0f00, - 0x0f00, 0x0f00, 0x0f00, 0x0f00, 0x0f15, 0x0f27, 0x0f27, 0x0f27, - 0x0f27, 0x0f27, 0x0f33, 0x0f33, 0x0f33, 0x0f33, 0x0f33, 0x0f33, + 0x1415, 0x1415, 0x1434, 0x1443, 0x1443, 0x145e, 0x145e, 0x1470, + 0x1492, 0x14ae, 0x14ba, 0x14c6, 0x14db, 0x14ea, 0x14ff, 0x14ff, + 0x14ff, 0x1514, 0x1526, 0x1538, 0x1538, 0x1538, 0x1538, 0x1538, + 0x1547, 0x1556, 0x1562, 0x1574, 0x1574, 0x1592, 0x1592, 0x15a1, + 0x15b9, 0x15e0, 0x15e0, 0x15ec, 0x15ec, 0x15f5, 0x15f5, 0x1614, + 0x1614, 0x1614, 0x161d, 0x1635, 0x1653, 0x167b, 0x1690, 0x1690, + 0x16a2, 0x16c4, 0x16c4, 0x16c4, 0x16df, 0x16f1, 0x1706, 0x1718, + 0x1739, 0x174b, 0x174b, 0x175a, 0x1766, 0x1766, 0x1766, 0x1781, // Entry 180 - 1BF - 0x0f33, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f5b, 0x0f5b, 0x0f5b, - 0x0f5b, 0x0f5b, 0x0f64, 0x0f64, 0x0f76, 0x0f76, 0x0f76, 0x0f76, - 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f85, 0x0f85, 0x0f85, - 0x0f85, 0x0f85, 0x0f91, 0x0faf, 0x0faf, 0x0fcb, 0x0fd7, 0x0fd7, - 0x0fd7, 0x0fd7, 0x0fd7, 0x0fef, 0x0fef, 0x0fef, 0x1004, 0x1004, - 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x101f, 0x101f, - 0x101f, 0x102b, 0x1047, 0x1047, 0x1047, 0x1047, 0x1047, 0x105c, - 0x105c, 0x105c, 0x105c, 0x105c, 0x106e, 0x106e, 0x107d, 0x107d, + 0x1781, 0x1781, 0x1781, 0x178d, 0x178d, 0x178d, 0x1799, 0x17b5, + 0x17b5, 0x17ce, 0x17ce, 0x17dd, 0x17e6, 0x17f2, 0x1804, 0x1804, + 0x1804, 0x1819, 0x1819, 0x1825, 0x183a, 0x184f, 0x184f, 0x185e, + 0x185e, 0x1870, 0x1870, 0x1882, 0x188e, 0x18ac, 0x18ac, 0x18c8, + 0x18d4, 0x18ec, 0x1910, 0x1910, 0x1925, 0x193d, 0x194f, 0x194f, + 0x1964, 0x197a, 0x198f, 0x19aa, 0x19aa, 0x19aa, 0x19aa, 0x19bf, + 0x19da, 0x1a06, 0x1a27, 0x1a33, 0x1a4f, 0x1a61, 0x1a73, 0x1a88, + 0x1a88, 0x1a9d, 0x1ac1, 0x1ad3, 0x1ad3, 0x1ad3, 0x1ae5, 0x1b07, // Entry 1C0 - 1FF - 0x107d, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, - 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, - 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x10a7, 0x10a7, - 0x10a7, 0x10a7, 0x10a7, 0x10a7, 0x10a7, 0x10b9, 0x10b9, 0x10b9, - 0x10b9, 0x10b9, 0x10b9, 0x10c5, 0x10c5, 0x10c5, 0x10c5, 0x10da, - 0x10da, 0x10da, 0x10da, 0x10da, 0x10e6, 0x10e6, 0x10e6, 0x10e6, - 0x1108, 0x1108, 0x1114, 0x1114, 0x1114, 0x1145, 0x1145, 0x1145, - 0x1160, 0x1160, 0x1160, 0x1160, 0x1160, 0x1160, 0x117c, 0x1195, + 0x1b16, 0x1b16, 0x1b16, 0x1b2e, 0x1b2e, 0x1b2e, 0x1b2e, 0x1b2e, + 0x1b49, 0x1b49, 0x1b5e, 0x1b7c, 0x1b91, 0x1b91, 0x1bc5, 0x1bc5, + 0x1bc5, 0x1bc5, 0x1bc5, 0x1bc5, 0x1bc5, 0x1bc5, 0x1bc5, 0x1bda, + 0x1bda, 0x1bec, 0x1bec, 0x1bec, 0x1bfe, 0x1c1c, 0x1c1c, 0x1c1c, + 0x1c2e, 0x1c2e, 0x1c2e, 0x1c2e, 0x1c2e, 0x1c4c, 0x1c58, 0x1c6a, + 0x1c73, 0x1c73, 0x1c88, 0x1c88, 0x1c9d, 0x1c9d, 0x1cb2, 0x1cbe, + 0x1cd9, 0x1cf1, 0x1cf1, 0x1d13, 0x1d13, 0x1d1f, 0x1d1f, 0x1d1f, + 0x1d50, 0x1d50, 0x1d50, 0x1d6b, 0x1d77, 0x1d77, 0x1d77, 0x1d77, // Entry 200 - 23F - 0x11b1, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, - 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, - 0x11d6, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, - 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, - 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11e2, 0x11f4, 0x11f4, 0x122c, - 0x122c, 0x122c, 0x122c, 0x1251, 0x125a, 0x125a, 0x125a, 0x125a, - 0x125a, 0x125a, 0x125a, 0x126c, 0x126c, 0x126c, 0x126c, 0x126c, - 0x127e, 0x127e, 0x127e, 0x127e, 0x128a, 0x128a, 0x128a, 0x128a, + 0x1d77, 0x1d93, 0x1dac, 0x1dc8, 0x1ded, 0x1e05, 0x1e05, 0x1e2a, + 0x1e2a, 0x1e33, 0x1e33, 0x1e45, 0x1e45, 0x1e45, 0x1e60, 0x1e60, + 0x1e78, 0x1e78, 0x1e78, 0x1e8a, 0x1e96, 0x1e96, 0x1ea5, 0x1eba, + 0x1eba, 0x1eba, 0x1eba, 0x1ed8, 0x1ed8, 0x1ed8, 0x1ed8, 0x1ed8, + 0x1ef7, 0x1ef7, 0x1f06, 0x1f06, 0x1f06, 0x1f06, 0x1f1e, 0x1f30, + 0x1f42, 0x1f5d, 0x1f95, 0x1fad, 0x1fad, 0x1fc2, 0x1fce, 0x1fd7, + 0x1fd7, 0x1fd7, 0x1fd7, 0x1fd7, 0x1fd7, 0x1fd7, 0x1fe9, 0x1ffe, + 0x2013, 0x2025, 0x2025, 0x2037, 0x2053, 0x2068, 0x2068, 0x2074, // Entry 240 - 27F - 0x128a, 0x128a, 0x128a, 0x128a, 0x128a, 0x128a, 0x128a, 0x12cb, - 0x12cb, 0x1319, 0x1319, 0x1345, 0x1345, 0x137c, 0x13ae, 0x13f4, - 0x142e, 0x146b, 0x14a2, 0x14e0, 0x150b, 0x153f, 0x153f, 0x1570, - 0x1595, 0x15b4, 0x15cc, 0x15fa, 0x1628, 0x1643, 0x1643, 0x166e, - 0x168a, 0x16bb, -} // Size: 1244 bytes - -var skLangStr string = "" + // Size: 5626 bytes + 0x2074, 0x2074, 0x208f, 0x20a1, 0x20a1, 0x20bf, 0x20bf, 0x20bf, + 0x20bf, 0x20bf, 0x2100, 0x210c, 0x215a, 0x2166, 0x2192, 0x2192, + 0x21c9, 0x21fb, 0x2241, 0x227b, 0x22b8, 0x22ef, 0x232d, 0x2358, + 0x238c, 0x238c, 0x23bd, 0x23e2, 0x2401, 0x2419, 0x2447, 0x2475, + 0x2493, 0x2493, 0x2493, 0x24af, 0x24e0, +} // Size: 1250 bytes + +const skLangStr string = "" + // Size: 5794 bytes "afarčinaabcházčinaavestčinaafrikánčinaakančinaamharčinaaragónčinaarabčin" + "aásamčinaavarčinaaymarčinaazerbajdžančinabaškirčinabieloruštinabulharčin" + "abislamabambarčinabengálčinatibetčinabretónčinabosniačtinakatalánčinačeč" + "enčinačamorčinakorzičtinakríčeštinacirkevná slovančinačuvaštinawaleština" + - "dánčinanemčinadivehidzongkäeweštinagréčtinaangličtinaesperantošpanielčin" + - "aestónčinabaskičtinaperzštinafulbčinafínčinafidžijčinafaerčinafrancúzšti" + - "nazápadná frízštinaírčinaškótska gaelčinagalícijčinaguaraníjčinagudžarát" + - "činamančinahauštinahebrejčinahindčinahiri motuchorvátčinahaitčinamaďarč" + - "inaarménčinahererointerlinguaindonézštinainterlingueigboštinas’čchuanská" + - " ioštinainupiaqidoislandčinataliančinainuktitutjapončinajávčinagruzínčin" + - "akongčinakikujčinakuaňamakazaštinagrónčinakhmérčinakannadčinakórejčinaka" + - "nurijčinakašmírčinakurdčinakomijčinakornčinakirgizštinalatinčinaluxembur" + - "činagandčinalimburčinalingalčinalaoštinalitovčinalubčina (katanžská)lot" + - "yštinamalgaštinakajin-majolmaorijčinamacedónčinamalajálamčinamongolčinam" + - "aráthčinamalajčinamaltčinabarmčinanauruseverné ndebelenepálčinandongahol" + - "andčinanórčina (nynorsk)nórčina (bokmål)južná ndebelčinanavajočewaokcitá" + - "nčinaodžibvaoromčinauríjčinaosetčinapandžábčinapálípoľštinapaštčinaportu" + - "galčinakečuánčinarétorománčinakirundčinarumunčinaruštinakiňarwandasanskr" + - "itsardínčinasindhčinalapončina (severná)sangosinhalčinaslovenčinaslovinč" + - "inasamojčinašončinasomálčinaalbánčinasrbčinasvazijčinajužná sothčinasund" + - "činašvédčinasvahilčinatamilčinatelugčinatadžičtinathajčinatigriňaturkmé" + - "nčinatswančinatongčinaturečtinatsongatatárčinatahitčinaujgurčinaukrajinč" + - "inaurdčinauzbečtinavendčinavietnamčinavolapükvalónčinawolofčinaxhoštinaj" + - "idišjorubčinačuangčinačínštinazuluštinaacehčinaačoliadangmeadygčinaafrih" + - "iliaghemainčinaakkadčinaaleutčinajužná altajčinastará angličtinaangikaar" + - "amejčinaaraukánčinaarapahoarawačtinaasuastúrčinaavadhčinabalúčtinabalijč" + - "inabasabamunghomalabedžabembabenabafutzápadná balúčtinabhódžpurčinabikol" + - "binikomsiksikabradžčinabodoakooseburiatčinabugištinabulublinmedumbakaddo" + - "karibskýcayugaatsamcebuánčinakigačibčačagatajčinatrukmarijčinačinucký ža" + - "rgónčoktavčinačipevajčinačerokíčejenčinakurdčina (sorání)koptčinakrymská" + - " turečtinakašubčinadakotčinadarginčinataitadelawarčinaslovančinadogribči" + - "nadinkazarmadógrídolnolužická srbčinadualastredná holandčinajola-fonyiďu" + - "ladazagaembuefikstaroegyptskýekadžukelamčinastredná angličtinaewondofang" + - "činafilipínčinafončinastredná francúzštinastará francúzštinaseverná frí" + - "zštinavýchodná frízštinafriulčinagagagauzštinagayogbajaetiópčinakiribatč" + - "inastredná horná nemčinastará horná nemčinagóndčinagorontalogótčinagrebo" + - "starogréčtinanemčina (švajčiarska)gusiigwichʼinhaidahavajčinahiligajnonč" + - "inachetitčinahmonghornolužická srbčinahupčinaibančinaibibioilokánčinaing" + - "uštinalojbanngombamašamežidovská perzštinažidovská arabčinakarakalpačtin" + - "akabylčinakačjinčinajjukambakawikabardčinakanembutyapmakondekapverdčinak" + - "orokhasijčinachotančinazápadná songhajčinakakokalendžinkimbundukomi-perm" + - "iačtinakonkánčinakusaiekpellekaračajevsko-balkarský jazykkarelčinakurukh" + - "činašambalabafiakolínčinakumyčtinakutenajčinažidovská španielčinalangil" + - "ahandčinalambalezginčinalakotčinamongoloziseverné luriluba-luluánčinalui" + - "seňolundaluomizorámčinaluhjamadurčinamafamagadhčinamaithilčinamakasarčin" + - "amandingomasajčinamabamokšiančinamandarčinamendimerumaurícijská kreolčin" + - "astredná írčinamakua-meettometa’mikmakčinaminangkabaučinamandžuštinamaní" + - "purčinamohawkčinamossimundangviaceré jazykykríkčinamirandčinamarawarimye" + - "neerzjančinamázandaránčinaneapolčinanamadolná nemčinanevárčinaniasánčina" + - "niueštinakwasiongiemboonnogajčinastará nórčinan’koseverná sothčinanuerkl" + - "asická nevárčinaňamweziňankoleňoronzimaosagčinaosmanská turečtinapangasi" + - "nančinapahlavípampangapapiamentopalaučinastará perzštinafeničtinapohnpei" + - "činastará okcitánčinakičéradžastančinarapanujčinararotonganromborómčina" + - "arumunčinarwasandawejakutčinasamaritánska aramejčinasamburusasačtinasant" + - "alčinangambaysangusicílčinaškótčinakurdčina (južná)senecasenaselkupčinak" + - "oyraboro sennistará írčinatachelhitšančinačadská arabčinasidamolapončina" + - " (južná)lapončina (lulská)lapončina (inarijská)lapončina (skoltská)sonin" + - "kesogdijčinasrananserersahosukumasususumerčinakomorčinaklasická sýrčinas" + - "ýrčinatemnetesoterenotetumtigrejčinativtokelaučinaklingónčinatlingitčin" + - "atamašekňasa tongatok pisintarokotsimshijské jazykytumbukatuvalčinatasaw" + - "aqtuviančinatamašek (stredomarocký)udmurtčinaugaritčinaumbundukoreňvaivo" + - "dčinavunjowalserčinawalamowaraywashowarlpirikalmyčtinasogajaojapčinajang" + - "benyembakantončinazapotéčtinasystém Blisszenagatamašek (štandardný maroc" + - "ký)zuništinabez jazykového obsahuzázáarabčina (moderná štandardná)nemčin" + + "dánčinanemčinamaldivčinadzongkhaeweštinagréčtinaangličtinaesperantošpani" + + "elčinaestónčinabaskičtinaperzštinafulbčinafínčinafidžijčinafaerčinafranc" + + "úzštinazápadná frízštinaírčinaškótska gaelčinagalícijčinaguaraníjčinagu" + + "džarátčinamančinahauštinahebrejčinahindčinahiri motuchorvátčinahaitská k" + + "reolčinamaďarčinaarménčinahererointerlinguaindonézštinainterlingueigbošt" + + "inas’čchuanská iovčinainupikidoislandčinataliančinainuktitutjapončinajáv" + + "činagruzínčinakongčinakikujčinakuaňamakazaštinagrónčinakhmérčinakannadč" + + "inakórejčinakanurijčinakašmírčinakurdčinakomijčinakornčinakirgizštinalat" + + "inčinaluxemburčinagandčinalimburčinalingalčinalaoštinalitovčinalubčina (" + + "katanžská)lotyštinamalgaštinamarshallčinamaorijčinamacedónčinamalajálamč" + + "inamongolčinamaráthčinamalajčinamaltčinabarmčinanauruštinaseverná ndebel" + + "činanepálčinandongaholandčinanórčina (nynorsk)nórčina (bokmal)južná nde" + + "belčinanavahoňandžaokcitánčinaodžibvaoromčinauríjčinaosetčinapandžábčina" + + "pálípoľštinapaštčinaportugalčinakečuánčinarétorománčinarundčinarumunčina" + + "ruštinarwandčinasanskritsardínčinasindhčinaseverná lapončinasangosinhalč" + + "inaslovenčinaslovinčinasamojčinašončinasomálčinaalbánčinasrbčinasvazijči" + + "najužná sothčinasundčinašvédčinaswahilčinatamilčinatelugčinatadžičtinath" + + "ajčinatigriňaturkménčinatswančinatongčinaturečtinatsongčinatatárčinatahi" + + "tčinaujgurčinaukrajinčinaurdčinauzbečtinavendčinavietnamčinavolapükvalón" + + "činawolofčinaxhoštinajidišjorubčinačuangčinačínštinazuluštinaacehčinaač" + + "oliadangmeadygejčinaafrihiliaghemainčinaakkadčinaaleutčinajužná altajčin" + + "astará angličtinaangikaaramejčinaaraukánčinaarapažštinaarawačtinaasuastú" + + "rčinaawadhibalúčtinabalijčinabasabamunghomalabedžabembabenabafutzápadná " + + "balúčtinabhódžpurčinabikolčinabinikomsiksikabradžčinabodoakooseburiatčin" + + "abugištinabulublinmedumbakaddokaribčinakajugčinaatsamcebuánčinakigačibča" + + "čagatajčinachuukmarijčinačinucký žargónčoktčinačipevajčinačerokíčejenči" + + "nakurdčina (sorání)koptčinakrymská tatárčinaseychelská kreolčinakašubčin" + + "adakotčinadarginčinataitadelawarčinaslavédogribčinadinkčinazarmadógrídol" + + "nolužická srbčinadualastredná holandčinajola-fonyiďuladazagaembuefikstar" + + "oegyptčinaekadžukelamčinastredná angličtinaewondofangčinafilipínčinafonč" + + "inastredná francúzštinastará francúzštinaseverná frízštinavýchodofrízšti" + + "nafriulčinagagagauzštinagayogbajaetiópčinakiribatčinastredná horná nemči" + + "nastará horná nemčinagóndčinagorontalogótčinagrebostarogréčtinanemčina (" + + "švajčiarska)gusiikučinčinahaidahavajčinahiligajnončinachetitčinahmongči" + + "nahornolužická srbčinahupčinaibančinaibibioilokánčinainguštinalojbanngom" + + "bamašamežidovská perzštinažidovská arabčinakarakalpačtinakabylčinakačjin" + + "činajjukambakawikabardčinakanembutyapmakondekapverdčinakorokhasijčinach" + + "otančinazápadná songhajčinakakokalendžinkimbundukomi-permiačtinakonkánči" + + "nakusaiekpellekaračajevsko-balkarčinakarelčinakuruchčinašambalabafiakolí" + + "nčinakumyčtinakutenajčinažidovská španielčinalangilahandčinalambalezginč" + + "inalakotčinamongoloziseverné lurilubčina (luluánska)luiseňolundaluomizor" + + "ámčinaluhjamadurčinamafamagadhčinamaithilčinamakasarčinamandingomasajči" + + "namabamokšiančinamandarčinamendejčinamerumaurícijská kreolčinastredná ír" + + "činamakua-meettometa’mikmakčinaminangkabaučinamandžuštinamanípurčinamoh" + + "awkčinamossimundangviaceré jazykykríkčinamirandčinamarwarimyeneerzjančin" + + "amázandaránčinaneapolčinanamadolná nemčinanevárčinaniasánčinaniueštinakw" + + "asiongiemboonnogajčinastará nórčinan’koseverná sothčinanuerklasická nevá" + + "rčinaňamweziňankoleňoronzimaosedžštinaosmanská turečtinapangasinančinapa" + + "hlavíkapampangančinapapiamentopalaučinanigerijský pidžinstará perzštinaf" + + "eničtinapohnpeištinapruštinastará okcitánčinaquichéradžastančinarapanujč" + + "inararotongská maorijčinaromborómčinaarumunčinarwasandaweštinajakutčinas" + + "amaritánska aramejčinasamburusasačtinasantalčinangambaysangusicílčinaškó" + + "tčinajužná kurdčinasenekčinasenaselkupčinakoyraboro sennistará írčinatac" + + "helhitšančinačadská arabčinasidamojužná lapončinalapončina (lulská)lapon" + + "čina (inarijská)lapončina (skoltská)soninkesogdijčinasurinamčinasererči" + + "nasahosukumasususumerčinakomorčinasýrčina (klasická)sýrčinatemnetesoterê" + + "natetumčinatigrejčinativtokelauštinaklingónčinatlingitčinatuaregčinaňasa" + + " tonganovoguinejský pidžintarokocimšjančinatumbukatuvalčinatasawaqtuvian" + + "činastredomarocká tuaregčinaudmurtčinaugaritčinaumbundukoreňvaivodčinav" + + "unjowalserčinawalamčinawaraywashowarlpirikalmyčtinasogajaojapčinajangben" + + "yembakantončinazapotéčtinasystém Blisszenagatuaregčina (štandardná maroc" + + "ká)zuništinabez jazykového obsahuzazaarabčina (moderná štandardná)nemčin" + "a (rakúska)nemčina (švajčiarska spisovná)angličtina (austrálska)angličti" + "na (kanadská)angličtina (britská)angličtina (americká)španielčina (latin" + "skoamerická)španielčina (európska)španielčina (mexická)francúzština (kan" + @@ -20300,174 +23677,177 @@ var skLangStr string = "" + // Size: 5626 bytes "lska)portugalčina (európska)moldavčinasrbochorvátčinasvahilčina (konžská" + ")čínština (zjednodušená)čínština (tradičná)" -var skLangIdx = []uint16{ // 610 elements +var skLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0015, 0x001f, 0x002c, 0x0035, 0x003f, 0x004b, 0x0054, 0x005e, 0x0067, 0x0071, 0x0082, 0x008e, 0x009b, 0x00a6, 0x00ad, 0x00b8, 0x00c4, 0x00ce, 0x00da, 0x00e6, 0x00f3, 0x00ff, 0x010a, 0x0115, 0x0119, 0x0122, 0x0137, 0x0142, 0x014c, 0x0155, - 0x015d, 0x0163, 0x016b, 0x0174, 0x017e, 0x0189, 0x0192, 0x019f, - 0x01aa, 0x01b5, 0x01bf, 0x01c8, 0x01d1, 0x01dd, 0x01e6, 0x01f4, - 0x0209, 0x0211, 0x0224, 0x0231, 0x023f, 0x024e, 0x0256, 0x025f, - 0x026a, 0x0273, 0x027c, 0x0289, 0x0292, 0x029d, 0x02a8, 0x02ae, + 0x015d, 0x0168, 0x0170, 0x0179, 0x0183, 0x018e, 0x0197, 0x01a4, + 0x01af, 0x01ba, 0x01c4, 0x01cd, 0x01d6, 0x01e2, 0x01eb, 0x01f9, + 0x020e, 0x0216, 0x0229, 0x0236, 0x0244, 0x0253, 0x025b, 0x0264, + 0x026f, 0x0278, 0x0281, 0x028e, 0x02a1, 0x02ac, 0x02b7, 0x02bd, // Entry 40 - 7F - 0x02b9, 0x02c7, 0x02d2, 0x02dc, 0x02f4, 0x02fb, 0x02fe, 0x0309, - 0x0314, 0x031d, 0x0327, 0x0330, 0x033c, 0x0345, 0x034f, 0x0357, - 0x0361, 0x036b, 0x0376, 0x0381, 0x038c, 0x0398, 0x03a5, 0x03ae, - 0x03b8, 0x03c1, 0x03cd, 0x03d7, 0x03e4, 0x03ed, 0x03f8, 0x0403, - 0x040c, 0x0416, 0x042c, 0x0436, 0x0441, 0x044c, 0x0457, 0x0464, - 0x0473, 0x047e, 0x048a, 0x0494, 0x049d, 0x04a6, 0x04ab, 0x04bb, - 0x04c6, 0x04cc, 0x04d7, 0x04ea, 0x04fd, 0x0510, 0x0516, 0x051b, - 0x0528, 0x0530, 0x0539, 0x0543, 0x054c, 0x055a, 0x0560, 0x056a, + 0x02c8, 0x02d6, 0x02e1, 0x02eb, 0x0303, 0x0309, 0x030c, 0x0317, + 0x0322, 0x032b, 0x0335, 0x033e, 0x034a, 0x0353, 0x035d, 0x0365, + 0x036f, 0x0379, 0x0384, 0x038f, 0x039a, 0x03a6, 0x03b3, 0x03bc, + 0x03c6, 0x03cf, 0x03db, 0x03e5, 0x03f2, 0x03fb, 0x0406, 0x0411, + 0x041a, 0x0424, 0x043a, 0x0444, 0x044f, 0x045c, 0x0467, 0x0474, + 0x0483, 0x048e, 0x049a, 0x04a4, 0x04ad, 0x04b6, 0x04c1, 0x04d5, + 0x04e0, 0x04e6, 0x04f1, 0x0504, 0x0516, 0x0529, 0x052f, 0x0537, + 0x0544, 0x054c, 0x0555, 0x055f, 0x0568, 0x0576, 0x057c, 0x0586, // Entry 80 - BF - 0x0574, 0x0581, 0x058e, 0x059e, 0x05a9, 0x05b3, 0x05bb, 0x05c6, - 0x05ce, 0x05da, 0x05e4, 0x05f9, 0x05fe, 0x0609, 0x0614, 0x061f, - 0x0629, 0x0632, 0x063d, 0x0648, 0x0650, 0x065b, 0x066c, 0x0675, - 0x0680, 0x068b, 0x0695, 0x069f, 0x06ab, 0x06b4, 0x06bc, 0x06c9, - 0x06d3, 0x06dc, 0x06e6, 0x06ec, 0x06f7, 0x0701, 0x070b, 0x0717, - 0x071f, 0x0729, 0x0732, 0x073e, 0x0746, 0x0751, 0x075b, 0x0764, - 0x076a, 0x0774, 0x077f, 0x078a, 0x0794, 0x079d, 0x07a3, 0x07aa, - 0x07b3, 0x07b3, 0x07bb, 0x07c0, 0x07c8, 0x07d2, 0x07d2, 0x07dc, + 0x0590, 0x059d, 0x05aa, 0x05ba, 0x05c3, 0x05cd, 0x05d5, 0x05df, + 0x05e7, 0x05f3, 0x05fd, 0x0610, 0x0615, 0x0620, 0x062b, 0x0636, + 0x0640, 0x0649, 0x0654, 0x065f, 0x0667, 0x0672, 0x0683, 0x068c, + 0x0697, 0x06a2, 0x06ac, 0x06b6, 0x06c2, 0x06cb, 0x06d3, 0x06e0, + 0x06ea, 0x06f3, 0x06fd, 0x0707, 0x0712, 0x071c, 0x0726, 0x0732, + 0x073a, 0x0744, 0x074d, 0x0759, 0x0761, 0x076c, 0x0776, 0x077f, + 0x0785, 0x078f, 0x079a, 0x07a5, 0x07af, 0x07b8, 0x07be, 0x07c5, + 0x07d0, 0x07d0, 0x07d8, 0x07dd, 0x07e5, 0x07ef, 0x07ef, 0x07f9, // Entry C0 - FF - 0x07dc, 0x07ee, 0x0800, 0x0806, 0x0811, 0x081e, 0x081e, 0x0825, - 0x0825, 0x0830, 0x0830, 0x0830, 0x0833, 0x0833, 0x083e, 0x083e, - 0x0848, 0x0853, 0x085d, 0x085d, 0x0861, 0x0866, 0x0866, 0x086d, - 0x0873, 0x0878, 0x0878, 0x087c, 0x0881, 0x0881, 0x0896, 0x08a5, - 0x08aa, 0x08ae, 0x08ae, 0x08b1, 0x08b8, 0x08b8, 0x08b8, 0x08c3, - 0x08c3, 0x08c7, 0x08cd, 0x08d8, 0x08e2, 0x08e6, 0x08ea, 0x08f1, - 0x08f6, 0x08ff, 0x0905, 0x090a, 0x0916, 0x091a, 0x0921, 0x092e, - 0x0932, 0x093c, 0x094e, 0x095a, 0x0967, 0x096f, 0x097a, 0x098e, + 0x07f9, 0x080b, 0x081d, 0x0823, 0x082e, 0x083b, 0x083b, 0x0848, + 0x0848, 0x0848, 0x0853, 0x0853, 0x0853, 0x0856, 0x0856, 0x0861, + 0x0861, 0x0867, 0x0872, 0x087c, 0x087c, 0x0880, 0x0885, 0x0885, + 0x088c, 0x0892, 0x0897, 0x0897, 0x089b, 0x08a0, 0x08a0, 0x08b5, + 0x08c4, 0x08ce, 0x08d2, 0x08d2, 0x08d5, 0x08dc, 0x08dc, 0x08dc, + 0x08e7, 0x08e7, 0x08eb, 0x08f1, 0x08fc, 0x0906, 0x090a, 0x090e, + 0x0915, 0x091a, 0x0924, 0x092e, 0x0933, 0x093f, 0x0943, 0x094a, + 0x0957, 0x095c, 0x0966, 0x0978, 0x0982, 0x098f, 0x0997, 0x09a2, // Entry 100 - 13F - 0x0997, 0x0997, 0x09aa, 0x09b5, 0x09bf, 0x09ca, 0x09cf, 0x09db, - 0x09e6, 0x09f1, 0x09f6, 0x09fb, 0x0a02, 0x0a19, 0x0a19, 0x0a1e, - 0x0a32, 0x0a3c, 0x0a41, 0x0a47, 0x0a4b, 0x0a4f, 0x0a4f, 0x0a5d, - 0x0a65, 0x0a6e, 0x0a82, 0x0a82, 0x0a88, 0x0a88, 0x0a91, 0x0a9e, - 0x0a9e, 0x0aa6, 0x0aa6, 0x0abd, 0x0ad2, 0x0ad2, 0x0ae6, 0x0afc, - 0x0b06, 0x0b08, 0x0b14, 0x0b14, 0x0b18, 0x0b1d, 0x0b1d, 0x0b28, - 0x0b34, 0x0b34, 0x0b4c, 0x0b62, 0x0b62, 0x0b6c, 0x0b75, 0x0b7e, - 0x0b83, 0x0b92, 0x0baa, 0x0baa, 0x0baa, 0x0baf, 0x0bb8, 0x0bbd, + 0x09b6, 0x09bf, 0x09bf, 0x09d3, 0x09e9, 0x09f4, 0x09fe, 0x0a09, + 0x0a0e, 0x0a1a, 0x0a20, 0x0a2b, 0x0a34, 0x0a39, 0x0a40, 0x0a57, + 0x0a57, 0x0a5c, 0x0a70, 0x0a7a, 0x0a7f, 0x0a85, 0x0a89, 0x0a8d, + 0x0a8d, 0x0a9c, 0x0aa4, 0x0aad, 0x0ac1, 0x0ac1, 0x0ac7, 0x0ac7, + 0x0ad0, 0x0add, 0x0add, 0x0ae5, 0x0ae5, 0x0afc, 0x0b11, 0x0b11, + 0x0b25, 0x0b38, 0x0b42, 0x0b44, 0x0b50, 0x0b50, 0x0b54, 0x0b59, + 0x0b59, 0x0b64, 0x0b70, 0x0b70, 0x0b88, 0x0b9e, 0x0b9e, 0x0ba8, + 0x0bb1, 0x0bba, 0x0bbf, 0x0bce, 0x0be6, 0x0be6, 0x0be6, 0x0beb, // Entry 140 - 17F - 0x0bbd, 0x0bc7, 0x0bc7, 0x0bd6, 0x0be1, 0x0be6, 0x0bfd, 0x0bfd, - 0x0c05, 0x0c0e, 0x0c14, 0x0c20, 0x0c2a, 0x0c2a, 0x0c2a, 0x0c30, - 0x0c36, 0x0c3d, 0x0c52, 0x0c66, 0x0c66, 0x0c75, 0x0c7f, 0x0c8b, - 0x0c8e, 0x0c93, 0x0c97, 0x0ca2, 0x0ca9, 0x0cad, 0x0cb4, 0x0cc0, - 0x0cc0, 0x0cc4, 0x0cc4, 0x0ccf, 0x0cda, 0x0cf0, 0x0cf0, 0x0cf0, - 0x0cf4, 0x0cfe, 0x0d06, 0x0d17, 0x0d23, 0x0d29, 0x0d2f, 0x0d4d, - 0x0d4d, 0x0d4d, 0x0d57, 0x0d62, 0x0d6a, 0x0d6f, 0x0d7a, 0x0d84, - 0x0d90, 0x0da8, 0x0dad, 0x0db8, 0x0dbd, 0x0dc8, 0x0dc8, 0x0dc8, + 0x0bf6, 0x0bfb, 0x0bfb, 0x0c05, 0x0c05, 0x0c14, 0x0c1f, 0x0c29, + 0x0c40, 0x0c40, 0x0c48, 0x0c51, 0x0c57, 0x0c63, 0x0c6d, 0x0c6d, + 0x0c6d, 0x0c73, 0x0c79, 0x0c80, 0x0c95, 0x0ca9, 0x0ca9, 0x0cb8, + 0x0cc2, 0x0cce, 0x0cd1, 0x0cd6, 0x0cda, 0x0ce5, 0x0cec, 0x0cf0, + 0x0cf7, 0x0d03, 0x0d03, 0x0d07, 0x0d07, 0x0d12, 0x0d1d, 0x0d33, + 0x0d33, 0x0d33, 0x0d37, 0x0d41, 0x0d49, 0x0d5a, 0x0d66, 0x0d6c, + 0x0d72, 0x0d8b, 0x0d8b, 0x0d8b, 0x0d95, 0x0da0, 0x0da8, 0x0dad, + 0x0db8, 0x0dc2, 0x0dce, 0x0de6, 0x0deb, 0x0df6, 0x0dfb, 0x0e06, // Entry 180 - 1BF - 0x0dc8, 0x0dd2, 0x0dd2, 0x0dd7, 0x0ddb, 0x0de8, 0x0de8, 0x0df9, - 0x0e01, 0x0e06, 0x0e09, 0x0e16, 0x0e1b, 0x0e1b, 0x0e1b, 0x0e25, - 0x0e29, 0x0e34, 0x0e40, 0x0e4c, 0x0e54, 0x0e5e, 0x0e62, 0x0e6f, - 0x0e7a, 0x0e7f, 0x0e83, 0x0e9b, 0x0eac, 0x0eb8, 0x0ebf, 0x0eca, - 0x0eda, 0x0ee7, 0x0ef4, 0x0eff, 0x0f04, 0x0f04, 0x0f0b, 0x0f1a, - 0x0f24, 0x0f2f, 0x0f37, 0x0f37, 0x0f3c, 0x0f47, 0x0f58, 0x0f58, - 0x0f63, 0x0f67, 0x0f76, 0x0f81, 0x0f8d, 0x0f97, 0x0f97, 0x0f9d, - 0x0fa6, 0x0fb0, 0x0fc0, 0x0fc0, 0x0fc6, 0x0fd8, 0x0fdc, 0x0ff1, + 0x0e06, 0x0e06, 0x0e06, 0x0e10, 0x0e10, 0x0e15, 0x0e19, 0x0e26, + 0x0e26, 0x0e3b, 0x0e43, 0x0e48, 0x0e4b, 0x0e58, 0x0e5d, 0x0e5d, + 0x0e5d, 0x0e67, 0x0e6b, 0x0e76, 0x0e82, 0x0e8e, 0x0e96, 0x0ea0, + 0x0ea4, 0x0eb1, 0x0ebc, 0x0ec7, 0x0ecb, 0x0ee3, 0x0ef4, 0x0f00, + 0x0f07, 0x0f12, 0x0f22, 0x0f2f, 0x0f3c, 0x0f47, 0x0f4c, 0x0f4c, + 0x0f53, 0x0f62, 0x0f6c, 0x0f77, 0x0f7e, 0x0f7e, 0x0f83, 0x0f8e, + 0x0f9f, 0x0f9f, 0x0faa, 0x0fae, 0x0fbd, 0x0fc8, 0x0fd4, 0x0fde, + 0x0fde, 0x0fe4, 0x0fed, 0x0ff7, 0x1007, 0x1007, 0x100d, 0x101f, // Entry 1C0 - 1FF - 0x0ff9, 0x1001, 0x1006, 0x100b, 0x1014, 0x1028, 0x1037, 0x103f, - 0x1047, 0x1051, 0x105b, 0x105b, 0x105b, 0x105b, 0x106c, 0x106c, - 0x1076, 0x1076, 0x1076, 0x1082, 0x1082, 0x1096, 0x109c, 0x109c, - 0x10ab, 0x10b7, 0x10c1, 0x10c1, 0x10c1, 0x10c6, 0x10cf, 0x10cf, - 0x10cf, 0x10cf, 0x10da, 0x10dd, 0x10e4, 0x10ee, 0x1107, 0x110e, - 0x1118, 0x1123, 0x1123, 0x112a, 0x112f, 0x113a, 0x1145, 0x1145, - 0x1158, 0x115e, 0x1162, 0x1162, 0x116d, 0x117c, 0x118b, 0x118b, - 0x1194, 0x119d, 0x11af, 0x11b5, 0x11b5, 0x11b5, 0x11c9, 0x11dd, + 0x1023, 0x1038, 0x1040, 0x1048, 0x104d, 0x1052, 0x105e, 0x1072, + 0x1081, 0x1089, 0x1099, 0x10a3, 0x10ad, 0x10ad, 0x10c0, 0x10c0, + 0x10c0, 0x10d1, 0x10d1, 0x10db, 0x10db, 0x10db, 0x10e8, 0x10f1, + 0x1105, 0x110c, 0x110c, 0x111b, 0x1127, 0x113f, 0x113f, 0x113f, + 0x1144, 0x114d, 0x114d, 0x114d, 0x114d, 0x1158, 0x115b, 0x1168, + 0x1172, 0x118b, 0x1192, 0x119c, 0x11a7, 0x11a7, 0x11ae, 0x11b3, + 0x11be, 0x11c9, 0x11c9, 0x11da, 0x11e4, 0x11e8, 0x11e8, 0x11f3, + 0x1202, 0x1211, 0x1211, 0x121a, 0x1223, 0x1235, 0x123b, 0x123b, // Entry 200 - 23F - 0x11f4, 0x120a, 0x1211, 0x121c, 0x1222, 0x1227, 0x122b, 0x122b, - 0x1231, 0x1235, 0x123f, 0x1249, 0x125c, 0x1265, 0x1265, 0x1265, - 0x126a, 0x126e, 0x1274, 0x1279, 0x1284, 0x1287, 0x1293, 0x1293, - 0x12a0, 0x12ac, 0x12ac, 0x12b4, 0x12bf, 0x12c8, 0x12c8, 0x12ce, - 0x12ce, 0x12e1, 0x12e1, 0x12e8, 0x12f2, 0x12f9, 0x1304, 0x131d, - 0x1328, 0x1333, 0x133a, 0x1340, 0x1343, 0x1343, 0x1343, 0x1343, - 0x1343, 0x134b, 0x134b, 0x1350, 0x135b, 0x1361, 0x1366, 0x136b, - 0x1373, 0x1373, 0x137e, 0x137e, 0x1382, 0x1385, 0x138d, 0x1394, + 0x123b, 0x124d, 0x1261, 0x1278, 0x128e, 0x1295, 0x12a0, 0x12ac, + 0x12b6, 0x12ba, 0x12ba, 0x12c0, 0x12c4, 0x12ce, 0x12d8, 0x12ed, + 0x12f6, 0x12f6, 0x12f6, 0x12fb, 0x12ff, 0x1306, 0x1310, 0x131b, + 0x131e, 0x132b, 0x132b, 0x1338, 0x1344, 0x1344, 0x134f, 0x135a, + 0x1370, 0x1370, 0x1376, 0x1376, 0x1383, 0x1383, 0x138a, 0x1394, + 0x139b, 0x13a6, 0x13c0, 0x13cb, 0x13d6, 0x13dd, 0x13e3, 0x13e6, + 0x13e6, 0x13e6, 0x13e6, 0x13e6, 0x13ee, 0x13ee, 0x13f3, 0x13fe, + 0x1408, 0x140d, 0x1412, 0x141a, 0x141a, 0x1425, 0x1425, 0x1429, // Entry 240 - 27F - 0x1399, 0x1399, 0x13a4, 0x13b1, 0x13be, 0x13be, 0x13c4, 0x13e4, - 0x13ee, 0x1404, 0x140a, 0x142b, 0x142b, 0x143e, 0x1460, 0x1479, - 0x1490, 0x14a6, 0x14bd, 0x14de, 0x14f7, 0x150f, 0x150f, 0x1529, - 0x1547, 0x1556, 0x1560, 0x157a, 0x1593, 0x159e, 0x15af, 0x15c6, - 0x15e2, 0x15fa, -} // Size: 1244 bytes - -var slLangStr string = "" + // Size: 6193 bytes + 0x142c, 0x1434, 0x143b, 0x1440, 0x1440, 0x144b, 0x1458, 0x1465, + 0x1465, 0x146b, 0x148e, 0x1498, 0x14ae, 0x14b2, 0x14d3, 0x14d3, + 0x14e6, 0x1508, 0x1521, 0x1538, 0x154e, 0x1565, 0x1586, 0x159f, + 0x15b7, 0x15b7, 0x15d1, 0x15ef, 0x15fe, 0x1608, 0x1622, 0x163b, + 0x1646, 0x1657, 0x166e, 0x168a, 0x16a2, +} // Size: 1250 bytes + +const slLangStr string = "" + // Size: 6423 bytes "afarščinaabhaščinaavestijščinaafrikanščinaakanščinaamharščinaaragonščina" + "arabščinaasamščinaavarščinaajmarščinaazerbajdžanščinabaškirščinabelorušč" + "inabolgarščinabislamščinabambarščinabengalščinatibetanščinabretonščinabo" + "sanščinakatalonščinačečenščinačamorščinakorziščinakrijščinačeščinastara " + "cerkvena slovanščinačuvaščinavaližanščinadanščinanemščinadiveščinadzonka" + "evenščinagrščinaangleščinaesperantošpanščinaestonščinabaskovščinaperzijš" + - "činafulščinafinščinafidžijščinaferščinafrancoščinafrizijščinairščinaško" + - "tska gelščinagalicijščinagvaranijščinagudžaratščinamanščinahavščinahebre" + - "jščinahindujščinahiri motuhrvaščinahaitijska kreolščinamadžarščinaarmenš" + - "činahererointerlingvaindonezijščinainterlingveigboščinasečuanska jiščin" + - "ainupiaščinaidoislandščinaitalijanščinainuktitutščinajaponščinajavanščin" + - "agruzinščinakongovščinakikujščinakvanjamakazaščinagrenlandščinakmerščina" + - "kanadakorejščinakanurščinakašmirščinakurdščinakomijščinakornijščinakirgi" + - "ščinalatinščinaluksemburščinagandalimburščinalingalalaoščinalitovščinal" + - "uba-katangalatvijščinamalagaščinamarshallovščinamaorščinamakedonščinamal" + - "ajalamščinamongolščinamaratščinamalajščinamalteščinaburmanščinanaurujšči" + - "naseverna ndebelščinanepalščinanizozemščinanovonorveščinaknjižna norvešč" + - "inajužna ndebelščinanavajščinanjanščinaokcitanščinaanašinabščinaoromoori" + - "jščinaosetinščinapandžabščinapalijščinapoljščinapaštunščinaportugalščina" + - "kečuanščinaretoromanščinarundščinaromunščinaruščinaruandščinasanskrtsard" + - "inščinasindščinaseverna samijščinasangosingalščinaslovaščinaslovenščinas" + - "amoanščinašonščinasomalščinaalbanščinasrbščinasvazijščinasesotosundanšči" + - "našvedščinasvahilitamilščinatelugijščinatadžiščinatajščinatigrajščinatur" + - "kmenščinacvanščinatongščinaturščinatsongatatarščinatahitščinaujgurščinau" + - "krajinščinaurdujščinauzbeščinavendavietnamščinavolapukvalonščinavolofšči" + - "nakoščinajidišjorubščinakitajščinazulujščinaačejščinaačolijščinaadangmej" + - "ščinaadigejščinaafrihiliaghemščinaainujščinaakadščinaaleutščinajužna al" + - "tajščinastara angleščinaangikaščinaaramejščinaaravkanščinaarapaščinaarav" + - "aščinaasujščinaasturijščinaavadščinabeludžijščinabalijščinabasabedžabemb" + - "abenajščinazahodnobalučijščinabodžpuribikolski jezikedosiksikabradžbakan" + - "ščinabodojščinaburjatščinabuginščinablinščinakadoščinakaribski jezikseb" + - "uanščinačigajščinačibčevščinačagatajščinatrukeščinamarijščinačinuški žar" + - "gončoktavščinačipevščinačerokeščinačejenščinasoranska kurdščinakoptščina" + - "krimska tatarščinakašubščinadakotščinadarginščinataitajščinadelavarščina" + - "slavejščinadogribdinkazarmajščinadogridolnja lužiška srbščinadualasrednj" + - "a nizozemščinajola-fonjiščinadiulaembujščinaefiščinastara egipčanščinaek" + - "ajukelamščinasrednja angleščinaevondovščinafangijščinafilipinščinafonšči" + - "nasrednja francoščinastara francoščinaseverna frizijščinavzhodna frizijš" + - "činafurlanščinagagagavščinagajščinagbajščinaetiopščinakiribatščinasredn" + - "ja visoka nemščinastara visoka nemščinagondigorontalščinagotščinagrebšči" + - "nastara grščinanemščina (Švica)gusijščinahaidščinahavajščinahiligajnonšč" + - "inahetitščinahmonščinagornja lužiška srbščinahupaibanščinailokanščinaing" + - "uščinalojbanngombamačamejščinajudovska perzijščinajudovska arabščinakara" + - "kalpaščinakabilščinakačinščinakambaščinakavikabardinščinatjapska nigerij" + - "ščinamakondščinazelenortskootoška kreolščinakasikotanščinakoyra chiinik" + - "alenjinščinakimbundukomi-permjaščinakonkanščinakosrajščinakpelejščinakar" + - "ačaj-balkarščinakarelščinakurukshambalabafiakumiščinakutenajščinaladinšč" + - "inalangijščinalandalambalezginščinalakotščinamongolozisevernolurijščinal" + - "uba-lulualuisenščinalundaluolushailuhijščinamadurščinamagadščinamaitilim" + - "akasarščinamandingomasajščinamokšavščinamandarščinamendemerumorisjenščin" + - "asrednja irščinamakuva-metometamikmaščinaminangkabaumandžurščinamanipurš" + - "činamohoščinamosijščinamundangveč jezikovmirandeščinamarvarščinaerzjanš" + - "činamazanderanščinanapolitanščinakhoekhoenizka nemščinanevarščinaniašči" + - "naniuejščinakwasionogajščinastara nordijščinan’koseverna sotščinanueršči" + - "naklasična nevarščinanjamveščinanjankolenjoronzimaosageotomanska turščin" + - "apangasinanščinapampanščinapapiamentupalavanščinastara perzijščinafeniča" + - "nščinaponpejščinastara provansalščinaquicheradžastanščinarapanujščinarar" + - "otongščinaromboromščinaaromunščinarwajakutščinasamaritanska aramejščinas" + - "amburščinasasaščinasantalščinasangujščinasicilijanščinaškotščinajužna ku" + - "rdščinasenaselkupščinakoyraboro sennistara irščinatahelitska berberščina" + - "šanščinasidamščinajužna samijščinaluleška samijščinainarska samijščinas" + - "amijščina Skoltsurinamska kreolščinasererščinasukumasusujščinasumerščina" + - "šikomorklasična sirščinasirščinatemnejščinatesotetumščinatigrejščinativ" + - "ščinatokelavščinaklingonščinatlingitščinatamajaščinamalavijska tongščin" + - "atok pisintsimščinatumbukščinatuvalujščinatasawaqtuvinščinatamašek (sred" + - "nji atlas)udmurtščinaugaritski jezikumbundščinaneznan ali neveljaven jez" + - "ikvajščinavotjaščinavunjovalamščinavarajščinavašajščinavarlpirščinakalmi" + - "ščinasogščinajaojščinajapščinakantonščinazapoteščinaznakovni jezik Blis" + - "szenaščinastandardni maroški tamazigzunijščinabrez jezikoslovne vsebinez" + - "azajščinasodobna standardna arabščinaavstrijska nemščinavisoka nemščina " + - "(Švica)avstralska angleščinakanadska angleščinaangleščina (VB)angleščina" + - " (ZDA)latinskoameriška španščinaiberska španščinakanadska francoščinašvi" + - "carska francoščinanizka saščinaflamščinabrazilska portugalščinaiberska p" + - "ortugalščinamoldavščinasrbohrvaščinasvahili (Kongo)poenostavljena kitajš" + - "činatradicionalna kitajščina" - -var slLangIdx = []uint16{ // 610 elements + "činafulščinafinščinafidžijščinaferščinafrancoščinazahodna frizijščinair" + + "ščinaškotska gelščinagalicijščinagvaranijščinagudžaratščinamanščinahavš" + + "činahebrejščinahindujščinahiri motuhrvaščinahaitijska kreolščinamadžarš" + + "činaarmenščinahererointerlingvaindonezijščinainterlingveigboščinasečuan" + + "ska jiščinainupiaščinaidoislandščinaitalijanščinainuktitutščinajaponščin" + + "ajavanščinagruzijščinakongovščinakikujščinakvanjamakazaščinagrenlandščin" + + "akmerščinakanadakorejščinakanurščinakašmirščinakurdščinakomijščinakornij" + + "ščinakirgiščinalatinščinaluksemburščinagandalimburščinalingalalaoščinal" + + "itovščinaluba-katangalatvijščinamalagaščinamarshallovščinamaorščinamaked" + + "onščinamalajalamščinamongolščinamaratščinamalajščinamalteščinaburmanščin" + + "anaurujščinaseverna ndebelščinanepalščinandonganizozemščinanovonorveščin" + + "aknjižna norveščinajužna ndebelščinanavajščinanjanščinaokcitanščinaanaši" + + "nabščinaoromoodijščinaosetinščinapandžabščinapalijščinapoljščinapaštunšč" + + "inaportugalščinakečuanščinaretoromanščinarundščinaromunščinaruščinaruand" + + "ščinasanskrtsardinščinasindščinaseverna samijščinasangosinhalščinaslova" + + "ščinaslovenščinasamoanščinašonščinasomalščinaalbanščinasrbščinasvazijšč" + + "inasesotosundanščinašvedščinasvahilitamilščinatelugijščinatadžiščinatajš" + + "činatigrajščinaturkmenščinacvanščinatongščinaturščinatsongatatarščinata" + + "hitščinaujgurščinaukrajinščinaurdujščinauzbeščinavendavietnamščinavolapu" + + "kvalonščinavolofščinakoščinajidišjorubščinakitajščinazulujščinaačejščina" + + "ačolijščinaadangmejščinaadigejščinaafrihiliaghemščinaainujščinaakadščina" + + "aleutščinajužna altajščinastara angleščinaangikaščinaaramejščinamapudung" + + "unščinaarapaščinaaravaščinaasujščinaasturijščinaavadščinabeludžijščinaba" + + "lijščinabasabedžabembabenajščinazahodnobalučijščinabodžpuribikolski jezi" + + "kedosiksikabradžbakanščinabodojščinaburjatščinabuginščinablinščinakadošč" + + "inakaribski jeziksebuanščinačigajščinačibčevščinačagatajščinatrukeščinam" + + "arijščinačinuški žargončoktavščinačipevščinačerokeščinačejenščinasoransk" + + "a kurdščinakoptščinakrimska tatarščinasejšelska francoska kreolščinakašu" + + "bščinadakotščinadarginščinataitajščinadelavarščinaslavejščinadogribdinka" + + "zarmajščinadogridolnja lužiška srbščinadualasrednja nizozemščinajola-fon" + + "jiščinadiuladazagaembujščinaefiščinastara egipčanščinaekajukelamščinasre" + + "dnja angleščinaevondovščinafangijščinafilipinščinafonščinasrednja franco" + + "ščinastara francoščinaseverna frizijščinavzhodna frizijščinafurlanščina" + + "gagagavščinagajščinagbajščinaetiopščinakiribatščinasrednja visoka nemšči" + + "nastara visoka nemščinagondigorontalščinagotščinagrebščinastara grščinan" + + "emščina (Švica)gusijščinagvičinhaidščinahavajščinahiligajnonščinahetitšč" + + "inahmonščinagornja lužiška srbščinahupaibanščinaibibijščinailokanščinain" + + "guščinalojbanngombamačamejščinajudovska perzijščinajudovska arabščinakar" + + "akalpaščinakabilščinakačinščinajjukambaščinakavikabardinščinatjapska nig" + + "erijščinamakondščinazelenortskootoška kreolščinakorokasikotanščinakoyra " + + "chiinikakokalenjinščinakimbundukomi-permjaščinakonkanščinakosrajščinakpe" + + "lejščinakaračaj-balkarščinakarelščinakurukšambalabafiakölnsko narečjekum" + + "iščinakutenajščinaladinščinalangijščinalandalambalezginščinalakotščinamo" + + "ngolozisevernolurijščinaluba-lulualuisenščinalundaluolushailuhijščinamad" + + "urščinamagadščinamaitilimakasarščinamandingomasajščinamokšavščinamandarš" + + "činamendemerumorisjenščinasrednja irščinamakuva-metometamikmaščinaminan" + + "gkabaumandžurščinamanipurščinamohoščinamosijščinamundangveč jezikovcreek" + + "ovščinamirandeščinamarvarščinaerzjanščinamazanderanščinanapolitanščinakh" + + "oekhoenizka nemščinanevarščinaniaščinaniuejščinakwasiongiemboonščinanoga" + + "jščinastara nordijščinan’koseverna sotščinanuerščinaklasična nevarščinan" + + "jamveščinanjankolenjoronzimaosageotomanska turščinapangasinanščinapampan" + + "ščinapapiamentupalavanščinanigerijski pidžinstara perzijščinafeničanšči" + + "naponpejščinastara pruščinastara provansalščinaquicheradžastanščinarapan" + + "ujščinararotongščinaromboromščinaaromunščinarwasandavščinajakutščinasama" + + "ritanska aramejščinasamburščinasasaščinasantalščinangambajščinasangujšči" + + "nasicilijanščinaškotščinajužna kurdščinasenaselkupščinakoyraboro sennist" + + "ara irščinatahelitska berberščinašanščinasidamščinajužna samijščinaluleš" + + "ka samijščinainarska samijščinasamijščina Skoltsoninkesurinamska kreolšč" + + "inasererščinasahosukumasusujščinasumerščinašikomorklasična sirščinasiršč" + + "inatemnejščinatesotetumščinatigrejščinativščinatokelavščinaklingonščinat" + + "lingitščinatamajaščinamalavijska tongščinatok pisintarokotsimščinatumbuk" + + "ščinatuvalujščinatasawaqtuvinščinatamašek (srednji atlas)udmurtščinauga" + + "ritski jezikumbundščinarootščinavajščinavotjaščinavunjowalservalamščinav" + + "arajščinavašajščinavarlpirščinakalmiščinasogščinajaojščinajapščinajangbe" + + "njembajščinakantonščinazapoteščinaznakovni jezik Blisszenaščinastandardn" + + "i maroški tamazigzunijščinabrez jezikoslovne vsebinezazajščinasodobna st" + + "andardna arabščinaavstrijska nemščinavisoka nemščina (Švica)avstralska a" + + "ngleščinakanadska angleščinaangleščina (VB)angleščina (ZDA)latinskoameri" + + "ška španščinaiberska španščinakanadska francoščinašvicarska francoščina" + + "nizka saščinaflamščinabrazilska portugalščinaiberska portugalščinamoldav" + + "ščinasrbohrvaščinakongoška svahilščinapoenostavljena kitajščinatradicio" + + "nalna kitajščina" + +var slLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000b, 0x0016, 0x0024, 0x0032, 0x003d, 0x0049, 0x0056, 0x0061, 0x006c, 0x0077, 0x0083, 0x0096, 0x00a4, 0x00b1, 0x00be, @@ -20475,863 +23855,921 @@ var slLangIdx = []uint16{ // 610 elements 0x0135, 0x0141, 0x014c, 0x0156, 0x0172, 0x017e, 0x018d, 0x0197, 0x01a1, 0x01ac, 0x01b2, 0x01bd, 0x01c6, 0x01d2, 0x01db, 0x01e7, 0x01f3, 0x0200, 0x020d, 0x0217, 0x0221, 0x022f, 0x0239, 0x0246, - 0x0253, 0x025c, 0x026f, 0x027d, 0x028c, 0x029c, 0x02a6, 0x02b0, - 0x02bd, 0x02ca, 0x02d3, 0x02de, 0x02f4, 0x0302, 0x030e, 0x0314, + 0x025b, 0x0264, 0x0277, 0x0285, 0x0294, 0x02a4, 0x02ae, 0x02b8, + 0x02c5, 0x02d2, 0x02db, 0x02e6, 0x02fc, 0x030a, 0x0316, 0x031c, // Entry 40 - 7F - 0x031f, 0x032f, 0x033a, 0x0345, 0x0359, 0x0366, 0x0369, 0x0376, - 0x0385, 0x0395, 0x03a1, 0x03ad, 0x03ba, 0x03c7, 0x03d3, 0x03db, - 0x03e6, 0x03f5, 0x0400, 0x0406, 0x0412, 0x041e, 0x042c, 0x0437, - 0x0443, 0x0450, 0x045c, 0x0468, 0x0478, 0x047d, 0x048a, 0x0491, - 0x049b, 0x04a7, 0x04b3, 0x04c0, 0x04cd, 0x04de, 0x04e9, 0x04f7, - 0x0507, 0x0514, 0x0520, 0x052c, 0x0538, 0x0545, 0x0552, 0x0567, - 0x0573, 0x0573, 0x0581, 0x0591, 0x05a6, 0x05ba, 0x05c6, 0x05d1, - 0x05df, 0x05ef, 0x05f4, 0x05ff, 0x060c, 0x061b, 0x0627, 0x0632, + 0x0327, 0x0337, 0x0342, 0x034d, 0x0361, 0x036e, 0x0371, 0x037e, + 0x038d, 0x039d, 0x03a9, 0x03b5, 0x03c2, 0x03cf, 0x03db, 0x03e3, + 0x03ee, 0x03fd, 0x0408, 0x040e, 0x041a, 0x0426, 0x0434, 0x043f, + 0x044b, 0x0458, 0x0464, 0x0470, 0x0480, 0x0485, 0x0492, 0x0499, + 0x04a3, 0x04af, 0x04bb, 0x04c8, 0x04d5, 0x04e6, 0x04f1, 0x04ff, + 0x050f, 0x051c, 0x0528, 0x0534, 0x0540, 0x054d, 0x055a, 0x056f, + 0x057b, 0x0581, 0x058f, 0x059f, 0x05b4, 0x05c8, 0x05d4, 0x05df, + 0x05ed, 0x05fd, 0x0602, 0x060d, 0x061a, 0x0629, 0x0635, 0x0640, // Entry 80 - BF - 0x0640, 0x064f, 0x065d, 0x066d, 0x0678, 0x0684, 0x068d, 0x0699, - 0x06a0, 0x06ad, 0x06b8, 0x06cc, 0x06d1, 0x06de, 0x06ea, 0x06f7, - 0x0704, 0x070f, 0x071b, 0x0727, 0x0731, 0x073e, 0x0744, 0x0751, - 0x075d, 0x0764, 0x0770, 0x077e, 0x078b, 0x0795, 0x07a2, 0x07b0, - 0x07bb, 0x07c6, 0x07d0, 0x07d6, 0x07e2, 0x07ee, 0x07fa, 0x0808, - 0x0814, 0x081f, 0x0824, 0x0832, 0x0839, 0x0845, 0x0851, 0x085a, - 0x0860, 0x086c, 0x086c, 0x0878, 0x0884, 0x0890, 0x089e, 0x08ad, - 0x08ba, 0x08ba, 0x08c2, 0x08ce, 0x08da, 0x08e5, 0x08e5, 0x08f1, + 0x064e, 0x065d, 0x066b, 0x067b, 0x0686, 0x0692, 0x069b, 0x06a7, + 0x06ae, 0x06bb, 0x06c6, 0x06da, 0x06df, 0x06ec, 0x06f8, 0x0705, + 0x0712, 0x071d, 0x0729, 0x0735, 0x073f, 0x074c, 0x0752, 0x075f, + 0x076b, 0x0772, 0x077e, 0x078c, 0x0799, 0x07a3, 0x07b0, 0x07be, + 0x07c9, 0x07d4, 0x07de, 0x07e4, 0x07f0, 0x07fc, 0x0808, 0x0816, + 0x0822, 0x082d, 0x0832, 0x0840, 0x0847, 0x0853, 0x085f, 0x0868, + 0x086e, 0x087a, 0x087a, 0x0886, 0x0892, 0x089e, 0x08ac, 0x08bb, + 0x08c8, 0x08c8, 0x08d0, 0x08dc, 0x08e8, 0x08f3, 0x08f3, 0x08ff, // Entry C0 - FF - 0x08f1, 0x0904, 0x0916, 0x0923, 0x0930, 0x093e, 0x093e, 0x094a, - 0x094a, 0x0956, 0x0956, 0x0956, 0x0961, 0x0961, 0x096f, 0x096f, - 0x097a, 0x098a, 0x0996, 0x0996, 0x099a, 0x099a, 0x099a, 0x099a, - 0x09a0, 0x09a5, 0x09a5, 0x09b1, 0x09b1, 0x09b1, 0x09c7, 0x09d0, - 0x09de, 0x09e1, 0x09e1, 0x09e1, 0x09e8, 0x09e8, 0x09e8, 0x09fa, - 0x09fa, 0x0a06, 0x0a06, 0x0a13, 0x0a1f, 0x0a1f, 0x0a2a, 0x0a2a, - 0x0a35, 0x0a43, 0x0a43, 0x0a43, 0x0a50, 0x0a5d, 0x0a6c, 0x0a7b, - 0x0a87, 0x0a93, 0x0aa4, 0x0ab2, 0x0abf, 0x0acd, 0x0ada, 0x0aee, + 0x08ff, 0x0912, 0x0924, 0x0931, 0x093e, 0x094f, 0x094f, 0x095b, + 0x095b, 0x095b, 0x0967, 0x0967, 0x0967, 0x0972, 0x0972, 0x0980, + 0x0980, 0x098b, 0x099b, 0x09a7, 0x09a7, 0x09ab, 0x09ab, 0x09ab, + 0x09ab, 0x09b1, 0x09b6, 0x09b6, 0x09c2, 0x09c2, 0x09c2, 0x09d8, + 0x09e1, 0x09ef, 0x09f2, 0x09f2, 0x09f2, 0x09f9, 0x09f9, 0x09f9, + 0x0a0b, 0x0a0b, 0x0a17, 0x0a17, 0x0a24, 0x0a30, 0x0a30, 0x0a3b, + 0x0a3b, 0x0a46, 0x0a54, 0x0a54, 0x0a54, 0x0a61, 0x0a6e, 0x0a7d, + 0x0a8c, 0x0a98, 0x0aa4, 0x0ab5, 0x0ac3, 0x0ad0, 0x0ade, 0x0aeb, // Entry 100 - 13F - 0x0af9, 0x0af9, 0x0b0d, 0x0b1a, 0x0b26, 0x0b33, 0x0b40, 0x0b4e, - 0x0b5b, 0x0b61, 0x0b66, 0x0b73, 0x0b78, 0x0b93, 0x0b93, 0x0b98, - 0x0bae, 0x0bbf, 0x0bc4, 0x0bc4, 0x0bd0, 0x0bda, 0x0bda, 0x0bef, - 0x0bf5, 0x0c00, 0x0c14, 0x0c14, 0x0c22, 0x0c22, 0x0c2f, 0x0c3d, - 0x0c3d, 0x0c47, 0x0c47, 0x0c5c, 0x0c6f, 0x0c6f, 0x0c84, 0x0c99, - 0x0ca6, 0x0ca8, 0x0cb4, 0x0cb4, 0x0cbe, 0x0cc9, 0x0cc9, 0x0cd5, - 0x0ce3, 0x0ce3, 0x0cfc, 0x0d13, 0x0d13, 0x0d18, 0x0d27, 0x0d31, - 0x0d3c, 0x0d4b, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d6a, 0x0d6a, 0x0d75, + 0x0aff, 0x0b0a, 0x0b0a, 0x0b1e, 0x0b3f, 0x0b4c, 0x0b58, 0x0b65, + 0x0b72, 0x0b80, 0x0b8d, 0x0b93, 0x0b98, 0x0ba5, 0x0baa, 0x0bc5, + 0x0bc5, 0x0bca, 0x0be0, 0x0bf1, 0x0bf6, 0x0bfc, 0x0c08, 0x0c12, + 0x0c12, 0x0c27, 0x0c2d, 0x0c38, 0x0c4c, 0x0c4c, 0x0c5a, 0x0c5a, + 0x0c67, 0x0c75, 0x0c75, 0x0c7f, 0x0c7f, 0x0c94, 0x0ca7, 0x0ca7, + 0x0cbc, 0x0cd1, 0x0cde, 0x0ce0, 0x0cec, 0x0cec, 0x0cf6, 0x0d01, + 0x0d01, 0x0d0d, 0x0d1b, 0x0d1b, 0x0d34, 0x0d4b, 0x0d4b, 0x0d50, + 0x0d5f, 0x0d69, 0x0d74, 0x0d83, 0x0d96, 0x0d96, 0x0d96, 0x0da2, // Entry 140 - 17F - 0x0d75, 0x0d81, 0x0d81, 0x0d92, 0x0d9e, 0x0da9, 0x0dc4, 0x0dc4, - 0x0dc8, 0x0dd3, 0x0dd3, 0x0de0, 0x0deb, 0x0deb, 0x0deb, 0x0df1, - 0x0df7, 0x0e06, 0x0e1c, 0x0e30, 0x0e30, 0x0e40, 0x0e4c, 0x0e59, - 0x0e59, 0x0e65, 0x0e69, 0x0e78, 0x0e78, 0x0e8e, 0x0e9b, 0x0eba, - 0x0eba, 0x0eba, 0x0eba, 0x0ebe, 0x0eca, 0x0ed6, 0x0ed6, 0x0ed6, - 0x0ed6, 0x0ee5, 0x0eed, 0x0eff, 0x0f0c, 0x0f19, 0x0f26, 0x0f3c, - 0x0f3c, 0x0f3c, 0x0f48, 0x0f4d, 0x0f55, 0x0f5a, 0x0f5a, 0x0f65, - 0x0f73, 0x0f7f, 0x0f8c, 0x0f91, 0x0f96, 0x0fa3, 0x0fa3, 0x0fa3, + 0x0da9, 0x0db4, 0x0db4, 0x0dc0, 0x0dc0, 0x0dd1, 0x0ddd, 0x0de8, + 0x0e03, 0x0e03, 0x0e07, 0x0e12, 0x0e1f, 0x0e2c, 0x0e37, 0x0e37, + 0x0e37, 0x0e3d, 0x0e43, 0x0e52, 0x0e68, 0x0e7c, 0x0e7c, 0x0e8c, + 0x0e98, 0x0ea5, 0x0ea8, 0x0eb4, 0x0eb8, 0x0ec7, 0x0ec7, 0x0edd, + 0x0eea, 0x0f09, 0x0f09, 0x0f0d, 0x0f0d, 0x0f11, 0x0f1d, 0x0f29, + 0x0f29, 0x0f29, 0x0f2d, 0x0f3c, 0x0f44, 0x0f56, 0x0f63, 0x0f70, + 0x0f7d, 0x0f93, 0x0f93, 0x0f93, 0x0f9f, 0x0fa4, 0x0fac, 0x0fb1, + 0x0fc2, 0x0fcd, 0x0fdb, 0x0fe7, 0x0ff4, 0x0ff9, 0x0ffe, 0x100b, // Entry 180 - 1BF - 0x0fa3, 0x0faf, 0x0faf, 0x0fb4, 0x0fb8, 0x0fcb, 0x0fcb, 0x0fd5, - 0x0fe2, 0x0fe7, 0x0fea, 0x0ff0, 0x0ffc, 0x0ffc, 0x0ffc, 0x1008, - 0x1008, 0x1014, 0x101b, 0x1029, 0x1031, 0x103d, 0x103d, 0x104b, - 0x1058, 0x105d, 0x1061, 0x1070, 0x1081, 0x108c, 0x1090, 0x109c, - 0x10a7, 0x10b6, 0x10c4, 0x10cf, 0x10db, 0x10db, 0x10e2, 0x10ee, - 0x10ee, 0x10fc, 0x1109, 0x1109, 0x1109, 0x1116, 0x1127, 0x1127, - 0x1137, 0x113f, 0x114f, 0x115b, 0x1165, 0x1171, 0x1171, 0x1177, - 0x1177, 0x1183, 0x1196, 0x1196, 0x119c, 0x11ae, 0x11b9, 0x11cf, + 0x100b, 0x100b, 0x100b, 0x1017, 0x1017, 0x101c, 0x1020, 0x1033, + 0x1033, 0x103d, 0x104a, 0x104f, 0x1052, 0x1058, 0x1064, 0x1064, + 0x1064, 0x1070, 0x1070, 0x107c, 0x1083, 0x1091, 0x1099, 0x10a5, + 0x10a5, 0x10b3, 0x10c0, 0x10c5, 0x10c9, 0x10d8, 0x10e9, 0x10f4, + 0x10f8, 0x1104, 0x110f, 0x111e, 0x112c, 0x1137, 0x1143, 0x1143, + 0x114a, 0x1156, 0x1164, 0x1172, 0x117f, 0x117f, 0x117f, 0x118c, + 0x119d, 0x119d, 0x11ad, 0x11b5, 0x11c5, 0x11d1, 0x11db, 0x11e7, + 0x11e7, 0x11ed, 0x11fd, 0x1209, 0x121c, 0x121c, 0x1222, 0x1234, // Entry 1C0 - 1FF - 0x11dc, 0x11e4, 0x11e9, 0x11ee, 0x11f3, 0x1207, 0x1218, 0x1218, - 0x1225, 0x122f, 0x123d, 0x123d, 0x123d, 0x123d, 0x1250, 0x1250, - 0x125f, 0x125f, 0x125f, 0x126c, 0x126c, 0x1282, 0x1288, 0x1288, - 0x1299, 0x12a7, 0x12b6, 0x12b6, 0x12b6, 0x12bb, 0x12c5, 0x12c5, - 0x12c5, 0x12c5, 0x12d2, 0x12d5, 0x12d5, 0x12e1, 0x12fb, 0x1308, - 0x1313, 0x1320, 0x1320, 0x1320, 0x132d, 0x133d, 0x1349, 0x1349, - 0x135b, 0x135b, 0x135f, 0x135f, 0x136c, 0x137b, 0x138a, 0x138a, - 0x13a2, 0x13ad, 0x13ad, 0x13b9, 0x13b9, 0x13b9, 0x13cc, 0x13e1, + 0x123f, 0x1255, 0x1262, 0x126a, 0x126f, 0x1274, 0x1279, 0x128d, + 0x129e, 0x129e, 0x12ab, 0x12b5, 0x12c3, 0x12c3, 0x12d5, 0x12d5, + 0x12d5, 0x12e8, 0x12e8, 0x12f7, 0x12f7, 0x12f7, 0x1304, 0x1314, + 0x132a, 0x1330, 0x1330, 0x1341, 0x134f, 0x135e, 0x135e, 0x135e, + 0x1363, 0x136d, 0x136d, 0x136d, 0x136d, 0x137a, 0x137d, 0x138a, + 0x1396, 0x13b0, 0x13bd, 0x13c8, 0x13d5, 0x13d5, 0x13e3, 0x13f0, + 0x1400, 0x140c, 0x140c, 0x141e, 0x141e, 0x1422, 0x1422, 0x142f, + 0x143e, 0x144d, 0x144d, 0x1465, 0x1470, 0x1470, 0x147c, 0x147c, // Entry 200 - 23F - 0x13f5, 0x1407, 0x1407, 0x1407, 0x141e, 0x142a, 0x142a, 0x142a, - 0x1430, 0x143c, 0x1448, 0x1450, 0x1464, 0x146e, 0x146e, 0x146e, - 0x147b, 0x147f, 0x147f, 0x148b, 0x1498, 0x14a2, 0x14b0, 0x14b0, - 0x14be, 0x14cc, 0x14cc, 0x14d9, 0x14ef, 0x14f8, 0x14f8, 0x14f8, - 0x14f8, 0x1503, 0x1503, 0x1510, 0x151e, 0x1525, 0x1531, 0x1549, - 0x1556, 0x1565, 0x1572, 0x158d, 0x1597, 0x1597, 0x1597, 0x1597, - 0x1597, 0x15a3, 0x15a3, 0x15a8, 0x15a8, 0x15b4, 0x15c0, 0x15cd, - 0x15db, 0x15db, 0x15e7, 0x15e7, 0x15f1, 0x15fc, 0x1606, 0x1606, + 0x147c, 0x148f, 0x14a4, 0x14b8, 0x14ca, 0x14d1, 0x14d1, 0x14e8, + 0x14f4, 0x14f8, 0x14f8, 0x14fe, 0x150a, 0x1516, 0x151e, 0x1532, + 0x153c, 0x153c, 0x153c, 0x1549, 0x154d, 0x154d, 0x1559, 0x1566, + 0x1570, 0x157e, 0x157e, 0x158c, 0x159a, 0x159a, 0x15a7, 0x15bd, + 0x15c6, 0x15c6, 0x15cc, 0x15cc, 0x15d7, 0x15d7, 0x15e4, 0x15f2, + 0x15f9, 0x1605, 0x161d, 0x162a, 0x1639, 0x1646, 0x1651, 0x165b, + 0x165b, 0x165b, 0x165b, 0x165b, 0x1667, 0x1667, 0x166c, 0x1672, + 0x167e, 0x168a, 0x1697, 0x16a5, 0x16a5, 0x16b1, 0x16b1, 0x16bb, // Entry 240 - 27F - 0x1606, 0x1606, 0x1613, 0x1620, 0x1634, 0x1634, 0x163f, 0x165a, - 0x1666, 0x167f, 0x168b, 0x16a9, 0x16a9, 0x16be, 0x16d8, 0x16ef, - 0x1704, 0x1715, 0x1727, 0x1745, 0x1759, 0x1759, 0x1759, 0x176f, - 0x1787, 0x1796, 0x17a1, 0x17ba, 0x17d1, 0x17de, 0x17ed, 0x17fc, - 0x1817, 0x1831, -} // Size: 1244 bytes - -var sqLangStr string = "" + // Size: 2672 bytes - "abkazishtafrikanishtakanishtamarikishtarabishtasamezishtazerbajxhanishtb" + - "ashkirishtbjellorusishtbullgarishtbambarishtbengalishttibetishtbretonish" + - "tboshnjakishtkatalonishtçeçenishtkorsikanishtçekishtçuvashishtuellsishtd" + - "anishtgjermanishtxhongaishtjuishtgreqishtanglishtesperantospanjishteston" + - "ishtbaskishtpersishtfinlandishtfixhianishtfaroishtfrëngjishtfrizianishti" + - "rlandishtgalikeguaranishtguxharatishtmanksishthausishthebraishtindishtkr" + - "oatishthaitianishthungarishtarmenishtindonezishtigboishtsishuanishtislan" + - "dishtitalishtinuktitutishtjaponishtjavanishtgjeorgjishtkikujuishtkazakis" + - "htkalalisutishtkmerekanadekoreanishtkashmirekurdekornishishtkirgizishtla" + - "tinishtluksemburgasegandishtlingalishtlaosishtlituanishtlubakatangishtle" + - "tonishtmalagezishtmaorishtmaqedonishtmalajalamishtmongolishtmaratishtmal" + - "ajishtmaltishtbirmanishtndebelishte veriorenepalishtholandishtninorske n" + - "orvegjezebokmalishte norvegjezeoromoishtorijaishtpanxhabishtpolonishtpas" + - "htoishtportugalishtkeçuaishtromerundishtrumanishtrusishtkiniaruandishtsa" + - "nskritishtsindishtsamishte verioresangoishtsinhalishtsllovakishtslloveni" + - "shtshonishtsomalishtshqipserbishtsundanishtsuedishtsuahilishttamiletelug" + - "etaxhikishttajlandishttigrinjeturkmenishttonganishtturqishttatarishtujgu" + - "reukrainishturduuzbekevietnamishtulufishtxhozaishtjorubishtkinezishtzulu" + - "ishtagemishtmapuçishtasuishtbembaishtbenaishtbalokishte perëndimorebodoi" + - "shtçigishtçerokishtkurdishte soranitaitishtzarmishtsorbishte e poshtmedu" + - "alaishtxhulafonjishtembuishtfilipinasegagauzishtgjermanishte zviceranegu" + - "sishthuajanishtsorbiane e sipërmengombishtmaçamishtkabilishtkambaishtmak" + - "ondishtkabuverdianishtkojraçinishtkalenjinishtkomishte permiakekonkanish" + - "tshambalishtbafianishtlangishtlakotishtlurishte verioreluoishtlujaishtma" + - "saishtmeruishtnorisjenemakuamitoishtmetaishtmohaukishtmundagishtemazande" + - "ranishtnamaishtegjermanishte e vendeve të ulëtakuasishtnkoishtnuerishtni" + - "ankolishtkiçeishtromboishteruaishtsamburishtsanguishtkurdishte jugoresen" + - "aishtesenishte kojraboretaçelitishtsamishte jugoresamishte lulejesamisht" + - "e inariesamishte skoltetezoishttasaukishttamaziatishte atlase qendroree " + - "panjohurvaishtvunjishtuarlipirishtsogishttamazishte standarde marokenenu" + - "k ka përmbajtje gjuhësorearabishte standarde modernegjermanishte austria" + - "kegjermanishte zvicerane (dialekti i Alpeve)anglishte australianeanglish" + - "te kanadezeanglishte britanikeanglishte amerikanespanjishte amerikano-la" + - "tinespanjishte evropianespanjishte meksikanefrëngjishte kanadezefrëngjis" + - "hte zviceranegjermanishte saksone e vendeve të ulëtaflamandishtportugali" + - "shte brazilianeportugalishte evropianemoldavishteSerbo-Kroatishtsuahilis" + - "hte kongojekinezishte e thjeshtuarkinezishte tradicionale" - -var sqLangIdx = []uint16{ // 610 elements + 0x16c6, 0x16d0, 0x16d7, 0x16e4, 0x16e4, 0x16f1, 0x16fe, 0x1712, + 0x1712, 0x171d, 0x1738, 0x1744, 0x175d, 0x1769, 0x1787, 0x1787, + 0x179c, 0x17b6, 0x17cd, 0x17e2, 0x17f3, 0x1805, 0x1823, 0x1837, + 0x1837, 0x1837, 0x184d, 0x1865, 0x1874, 0x187f, 0x1898, 0x18af, + 0x18bc, 0x18cb, 0x18e2, 0x18fd, 0x1917, +} // Size: 1250 bytes + +const sqLangStr string = "" + // Size: 4427 bytes + "afarishtabkazishtafrikanishtakanishtamarishtaragonezishtarabishtasamezis" + + "htavarikishtajmarishtazerbajxhanishtbashkirishtbjellorusishtbullgarishtb" + + "islamishtbambarishtbengalishttibetishtbretonishtboshnjakishtkatalonishtç" + + "eçenishtkamoroishtkorsikishtçekishtsllavishte kisheçuvashishtuellsishtda" + + "nishtgjermanishtdivehishtxhongaishteveishtgreqishtanglishtesperantospanj" + + "ishtestonishtbaskishtpersishtfulaishtfinlandishtfixhianishtfaroishtfrëng" + + "jishtfrizianishte perëndimoreirlandishtgalishte skocezegalicishtguaranis" + + "htguxharatishtmanksishthausishthebraishtindishtkroatishthaitishthungaris" + + "htarmenishthereroishtinterlinguaindonezishtgjuha oksidentaleigboishtsish" + + "uanishtidoishtislandishtitalishtinuktitutishtjaponishtjavanishtgjeorgjis" + + "htkikujuishtkuanjamaishtkazakishtkalalisutishtkmerishtkanadishtkoreanish" + + "tkanurishtkashmirishtkurdishtkomishtkornishtkirgizishtlatinishtluksembur" + + "gishtgandaishtlimburgishtlingalishtlaosishtlituanishtluba-katangaishtlet" + + "onishtmalagezishtmarshallishtmaorishtmaqedonishtmalajalamishtmongolishtm" + + "aratishtmalajishtmaltishtbirmanishtnauruishtndebelishte veriorenepalisht" + + "ndongaishtholandishtnorvegjishte nynorsknorvegjishte letrarendebelishte " + + "jugorenavahoishtnianjishtoksitanishtoromoishtodishtosetishtpanxhabishtpo" + + "lonishtpashtoishtportugalishtkeçuaishtretoromanishtrundishtrumanishtrusi" + + "shtkiniaruandishtsanskritishtsardenjishtsindishtsamishte verioresangoish" + + "tsinhalishtsllovakishtsllovenishtsamoanishtshonishtsomalishtshqipserbish" + + "tsuatishtsotoishte jugoresundanishtsuedishtsuahilishttamilishtteluguisht" + + "taxhikishttajlandishttigrinjaishtturkmenishtcuanaishttonganishtturqishtc" + + "ongaishttatarishttahitishtujgurishtukrainishturduishtuzbekishtvendaishtv" + + "ietnamishtvolapykishtualunishtulufishtkosaishtjidishtjorubaishtkinezisht" + + "zuluishtakinezishtandangmeishtadigishtagemishtajnuishtaleutishtaltaishte" + + " jugoreangikishtmapuçishtarapahoishtasuishtasturishtauadhishtbalinezisht" + + "basaishtbembaishtbenaishtbalokishte perëndimoreboxhpurishtbinishtsiksika" + + "ishtbodoishtbuginezishtblinishtsebuanishtçigishtçukezishtmarishtçoktauis" + + "htçerokishtçejenishtkurdishte qendrorefrëngjishte kreole seselvedakotish" + + "tdarguaishttajtaishtdogribishtzarmaishtsorbishte e poshtmedualaishtxhula" + + "fonjishtdazagauishtembuishtefikishtekajukishteuondoishtfilipinishtfonish" + + "tfriulianishtgaishtgagauzishtgizishtgilbertazishtgorontaloishtgjermanish" + + "te zviceranegusishtguiçinishthavaishthiligajnonishthmongishtsorbishte e " + + "sipërmehupaishtibanishtibibioishtilokoishtingushishtlojbanishtngombishtm" + + "açamishtkabilishtkaçinishtkajeishtkambaishtkabardianishttjapishtmakondis" + + "htkreolishte e Kepit të Gjelbërkoroishtkasishtkojraçinishtkakoishtkalenx" + + "hinishtkimbunduishtkomi-parmjakishtkonkanishtkpeleishtkaraçaj-balkarisht" + + "karelianishtkurukishtshambalishtbafianishtkëlnishtkumikishtladinoishtlan" + + "gishtlezgianishtlakotishtlozishtlurishte verioreluba-luluaishtlundaishtl" + + "uoishtmizoishtlujaishtmadurezishtmagaishtmaitilishtmakasarishtmasaishtmo" + + "kshaishtmendishtmeruishtmorisjenishtmakua-mitoishtmetaishtmikmakishtmina" + + "ngkabauishtmanipurishtmohokishtmosishtmundangishtgjuhë të shumëfishtakri" + + "kishtmirandishterzjaishtmazanderanishtnapoletanishtnamaishtgjermanishte " + + "e vendeve të ulëtaneuarishtniasishtniueanishtkuasishtngiembunishtnogajis" + + "htnkoishtsotoishte veriorenuerishtniankolishtpangasinanishtpampangaishtp" + + "apiamentishtpaluanishtpixhinishte nigerianeprusishtkiçeishtrapanuishtrar" + + "ontonganishtromboishtarumuneruaishtsandauishtsakaishtsamburishtsantalish" + + "tngambajishtsanguishtsiçilianishtskotishtkurdishte jugoresenaishtsenisht" + + "e kojraboretaçelitishtshanishtsamishte jugoresamishte lulesamishte inari" + + "samishte skoltisoninkishtsrananisht (sranantongoisht)sahoishtsukumaishtk" + + "amorianishtsiriakishttimneishttesoishttetumishttigreishtklingonishtpisin" + + "ishte tokutorokoishttumbukaishttuvaluishttasavakishttuvinianishttamaziat" + + "ishte atlase qendroreudmurtishtumbunduishtrutishtvaishtvunxhoishtualseri" + + "shtulajtaishtuarajishtuarlpirishtkalmikishtsogishtjangbenishtjembaishtka" + + "ntonezishttamaziatishte standarde marokenezunishtnuk ka përmbajtje gjuhë" + + "sorezazaishtarabishte standarde modernegjermanishte austriakegjermanisht" + + "e zvicerane (dialekti i Alpeve)anglishte australianeanglishte kanadezean" + + "glishte britanikeanglishte amerikanespanjishte amerikano-latinespanjisht" + + "e evropianespanjishte meksikanefrëngjishte kanadezefrëngjishte zvicerane" + + "gjermanishte saksone e vendeve të ulëtaflamandishtportugalishte brazilia" + + "neportugalishte evropianemoldavishtserbo-kroatishtsuahilishte kongoje" + +var sqLangIdx = []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0009, 0x0014, 0x001c, 0x0026, 0x0026, - 0x002e, 0x0038, 0x0038, 0x0038, 0x0047, 0x0052, 0x005f, 0x006a, - 0x006a, 0x0074, 0x007e, 0x0087, 0x0091, 0x009d, 0x00a8, 0x00b3, - 0x00b3, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00d2, 0x00db, 0x00e2, - 0x00ed, 0x00ed, 0x00f7, 0x00fd, 0x0105, 0x010d, 0x0116, 0x011f, - 0x0128, 0x0130, 0x0138, 0x0138, 0x0143, 0x014e, 0x0156, 0x0161, - 0x016c, 0x0176, 0x0176, 0x017c, 0x0186, 0x0192, 0x019b, 0x01a3, - 0x01ac, 0x01b3, 0x01b3, 0x01bc, 0x01c7, 0x01d1, 0x01da, 0x01da, + 0x0000, 0x0008, 0x0011, 0x0011, 0x001c, 0x0024, 0x002c, 0x0038, + 0x0040, 0x004a, 0x0054, 0x005d, 0x006c, 0x0077, 0x0084, 0x008f, + 0x0099, 0x00a3, 0x00ad, 0x00b6, 0x00c0, 0x00cc, 0x00d7, 0x00e2, + 0x00ec, 0x00f6, 0x00f6, 0x00fe, 0x010e, 0x0119, 0x0122, 0x0129, + 0x0134, 0x013d, 0x0147, 0x014e, 0x0156, 0x015e, 0x0167, 0x0170, + 0x0179, 0x0181, 0x0189, 0x0191, 0x019c, 0x01a7, 0x01af, 0x01ba, + 0x01d3, 0x01dd, 0x01ed, 0x01f6, 0x0200, 0x020c, 0x0215, 0x021d, + 0x0226, 0x022d, 0x022d, 0x0236, 0x023e, 0x0248, 0x0251, 0x025b, // Entry 40 - 7F - 0x01da, 0x01e5, 0x01e5, 0x01ed, 0x01f8, 0x01f8, 0x01f8, 0x0202, - 0x020a, 0x0217, 0x0220, 0x0229, 0x0234, 0x0234, 0x023e, 0x023e, - 0x0247, 0x0254, 0x0259, 0x025f, 0x0269, 0x0269, 0x0271, 0x0276, - 0x0276, 0x0281, 0x028b, 0x0294, 0x02a1, 0x02a9, 0x02a9, 0x02b3, - 0x02bb, 0x02c5, 0x02d3, 0x02dc, 0x02e7, 0x02e7, 0x02ef, 0x02fa, - 0x0307, 0x0311, 0x031a, 0x0323, 0x032b, 0x0335, 0x0335, 0x0348, - 0x0351, 0x0351, 0x035b, 0x036e, 0x0384, 0x0384, 0x0384, 0x0384, - 0x0384, 0x0384, 0x038d, 0x0396, 0x0396, 0x03a1, 0x03a1, 0x03aa, + 0x0266, 0x0271, 0x0282, 0x028a, 0x0295, 0x0295, 0x029c, 0x02a6, + 0x02ae, 0x02bb, 0x02c4, 0x02cd, 0x02d8, 0x02d8, 0x02e2, 0x02ee, + 0x02f7, 0x0304, 0x030c, 0x0315, 0x031f, 0x0328, 0x0333, 0x033b, + 0x0342, 0x034a, 0x0354, 0x035d, 0x036b, 0x0374, 0x037f, 0x0389, + 0x0391, 0x039b, 0x03ab, 0x03b4, 0x03bf, 0x03cb, 0x03d3, 0x03de, + 0x03eb, 0x03f5, 0x03fe, 0x0407, 0x040f, 0x0419, 0x0422, 0x0435, + 0x043e, 0x0448, 0x0452, 0x0466, 0x047a, 0x048c, 0x0496, 0x049f, + 0x04aa, 0x04aa, 0x04b3, 0x04b9, 0x04c1, 0x04cc, 0x04cc, 0x04d5, // Entry 80 - BF - 0x03b4, 0x03c0, 0x03ca, 0x03ce, 0x03d6, 0x03df, 0x03e6, 0x03f4, - 0x0400, 0x0400, 0x0408, 0x0418, 0x0421, 0x042b, 0x0436, 0x0441, - 0x0441, 0x0449, 0x0452, 0x0457, 0x045f, 0x045f, 0x045f, 0x0469, - 0x0471, 0x047b, 0x0481, 0x0487, 0x0491, 0x049c, 0x04a4, 0x04af, - 0x04af, 0x04b9, 0x04c1, 0x04c1, 0x04ca, 0x04ca, 0x04d0, 0x04da, - 0x04de, 0x04e4, 0x04e4, 0x04ef, 0x04ef, 0x04ef, 0x04f7, 0x0500, - 0x0500, 0x0509, 0x0509, 0x0512, 0x051a, 0x051a, 0x051a, 0x051a, - 0x051a, 0x051a, 0x051a, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, + 0x04df, 0x04eb, 0x04f5, 0x0502, 0x050a, 0x0513, 0x051a, 0x0528, + 0x0534, 0x053f, 0x0547, 0x0557, 0x0560, 0x056a, 0x0575, 0x0580, + 0x058a, 0x0592, 0x059b, 0x05a0, 0x05a8, 0x05b0, 0x05c0, 0x05ca, + 0x05d2, 0x05dc, 0x05e5, 0x05ef, 0x05f9, 0x0604, 0x0610, 0x061b, + 0x0624, 0x062e, 0x0636, 0x063f, 0x0648, 0x0651, 0x065a, 0x0664, + 0x066c, 0x0675, 0x067e, 0x0689, 0x0694, 0x069d, 0x06a5, 0x06ad, + 0x06b4, 0x06be, 0x06be, 0x06c7, 0x06cf, 0x06d9, 0x06d9, 0x06e5, + 0x06ed, 0x06ed, 0x06ed, 0x06f5, 0x06fd, 0x06fd, 0x06fd, 0x0706, // Entry C0 - FF - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052c, 0x052c, 0x052c, - 0x052c, 0x052c, 0x052c, 0x052c, 0x0533, 0x0533, 0x0533, 0x0533, - 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, - 0x0533, 0x053c, 0x053c, 0x0544, 0x0544, 0x0544, 0x055b, 0x055b, - 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, - 0x055b, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, - 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x056b, 0x056b, 0x056b, - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0575, 0x0575, 0x0585, + 0x0706, 0x0716, 0x0716, 0x071f, 0x071f, 0x0729, 0x0729, 0x0734, + 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x073b, 0x073b, 0x0744, + 0x0744, 0x074d, 0x074d, 0x0758, 0x0758, 0x0760, 0x0760, 0x0760, + 0x0760, 0x0760, 0x0769, 0x0769, 0x0771, 0x0771, 0x0771, 0x0788, + 0x0793, 0x0793, 0x079a, 0x079a, 0x079a, 0x07a5, 0x07a5, 0x07a5, + 0x07a5, 0x07a5, 0x07ad, 0x07ad, 0x07ad, 0x07b8, 0x07b8, 0x07c0, + 0x07c0, 0x07c0, 0x07c0, 0x07c0, 0x07c0, 0x07ca, 0x07d2, 0x07d2, + 0x07d2, 0x07dc, 0x07e3, 0x07e3, 0x07ee, 0x07ee, 0x07f8, 0x0802, // Entry 100 - 13F - 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x058d, 0x058d, - 0x058d, 0x058d, 0x058d, 0x0595, 0x0595, 0x05a8, 0x05a8, 0x05b1, - 0x05b1, 0x05be, 0x05be, 0x05be, 0x05c6, 0x05c6, 0x05c6, 0x05c6, - 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05d0, - 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, - 0x05d0, 0x05d0, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, - 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, - 0x05da, 0x05da, 0x05f0, 0x05f0, 0x05f0, 0x05f7, 0x05f7, 0x05f7, + 0x0814, 0x0814, 0x0814, 0x0814, 0x082f, 0x082f, 0x0838, 0x0842, + 0x084b, 0x084b, 0x084b, 0x0855, 0x0855, 0x085e, 0x085e, 0x0871, + 0x0871, 0x087a, 0x087a, 0x0887, 0x0887, 0x0892, 0x089a, 0x08a2, + 0x08a2, 0x08a2, 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08b6, 0x08b6, + 0x08b6, 0x08c1, 0x08c1, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, + 0x08c8, 0x08c8, 0x08d4, 0x08da, 0x08e4, 0x08e4, 0x08e4, 0x08e4, + 0x08e4, 0x08eb, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, + 0x0905, 0x0905, 0x0905, 0x0905, 0x091b, 0x091b, 0x091b, 0x0922, // Entry 140 - 17F - 0x05f7, 0x0601, 0x0601, 0x0601, 0x0601, 0x0601, 0x0614, 0x0614, - 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, - 0x061d, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0630, 0x0630, - 0x0630, 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x0643, 0x0652, - 0x0652, 0x0652, 0x0652, 0x0652, 0x0652, 0x065f, 0x065f, 0x065f, - 0x065f, 0x066b, 0x066b, 0x067c, 0x0686, 0x0686, 0x0686, 0x0686, - 0x0686, 0x0686, 0x0686, 0x0686, 0x0691, 0x069b, 0x069b, 0x069b, - 0x069b, 0x069b, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, + 0x092d, 0x092d, 0x092d, 0x0935, 0x0935, 0x0943, 0x0943, 0x094c, + 0x0960, 0x0960, 0x0968, 0x0970, 0x097a, 0x0983, 0x098d, 0x098d, + 0x098d, 0x0997, 0x09a0, 0x09aa, 0x09aa, 0x09aa, 0x09aa, 0x09aa, + 0x09b3, 0x09bd, 0x09c5, 0x09ce, 0x09ce, 0x09db, 0x09db, 0x09e3, + 0x09ed, 0x0a0c, 0x0a0c, 0x0a14, 0x0a14, 0x0a1b, 0x0a1b, 0x0a28, + 0x0a28, 0x0a28, 0x0a30, 0x0a3d, 0x0a49, 0x0a59, 0x0a63, 0x0a63, + 0x0a6c, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a8b, 0x0a94, 0x0a9f, 0x0aa9, + 0x0ab2, 0x0abb, 0x0abb, 0x0ac5, 0x0acd, 0x0acd, 0x0acd, 0x0ad8, // Entry 180 - 1BF - 0x06a3, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06bc, 0x06bc, 0x06bc, - 0x06bc, 0x06bc, 0x06c3, 0x06c3, 0x06cb, 0x06cb, 0x06cb, 0x06cb, - 0x06cb, 0x06cb, 0x06cb, 0x06cb, 0x06cb, 0x06d3, 0x06d3, 0x06d3, - 0x06d3, 0x06d3, 0x06db, 0x06e4, 0x06e4, 0x06f1, 0x06f9, 0x06f9, - 0x06f9, 0x06f9, 0x06f9, 0x0703, 0x0703, 0x0703, 0x070e, 0x070e, - 0x070e, 0x070e, 0x070e, 0x070e, 0x070e, 0x070e, 0x071c, 0x071c, - 0x071c, 0x0725, 0x0746, 0x0746, 0x0746, 0x0746, 0x0746, 0x074e, - 0x074e, 0x074e, 0x074e, 0x074e, 0x0755, 0x0755, 0x075d, 0x075d, + 0x0ad8, 0x0ad8, 0x0ad8, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae8, 0x0af8, + 0x0af8, 0x0b06, 0x0b06, 0x0b0f, 0x0b16, 0x0b1e, 0x0b26, 0x0b26, + 0x0b26, 0x0b31, 0x0b31, 0x0b39, 0x0b43, 0x0b4e, 0x0b4e, 0x0b56, + 0x0b56, 0x0b60, 0x0b60, 0x0b68, 0x0b70, 0x0b7c, 0x0b7c, 0x0b8a, + 0x0b92, 0x0b9c, 0x0bab, 0x0bab, 0x0bb6, 0x0bbf, 0x0bc6, 0x0bc6, + 0x0bd1, 0x0be8, 0x0bf0, 0x0bfa, 0x0bfa, 0x0bfa, 0x0bfa, 0x0c03, + 0x0c11, 0x0c11, 0x0c1e, 0x0c26, 0x0c47, 0x0c50, 0x0c58, 0x0c62, + 0x0c62, 0x0c6a, 0x0c76, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c86, 0x0c97, // Entry 1C0 - 1FF - 0x075d, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, - 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, - 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0771, 0x0771, - 0x0771, 0x0771, 0x0771, 0x0771, 0x0771, 0x077b, 0x077b, 0x077b, - 0x077b, 0x077b, 0x077b, 0x0782, 0x0782, 0x0782, 0x0782, 0x078c, - 0x078c, 0x078c, 0x078c, 0x078c, 0x0795, 0x0795, 0x0795, 0x0795, - 0x07a5, 0x07a5, 0x07ae, 0x07ae, 0x07ae, 0x07c0, 0x07c0, 0x07c0, - 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07db, 0x07ea, + 0x0c9f, 0x0c9f, 0x0c9f, 0x0caa, 0x0caa, 0x0caa, 0x0caa, 0x0caa, + 0x0cb8, 0x0cb8, 0x0cc4, 0x0cd1, 0x0cdb, 0x0cdb, 0x0cf0, 0x0cf0, + 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf8, + 0x0cf8, 0x0d01, 0x0d01, 0x0d01, 0x0d0b, 0x0d1a, 0x0d1a, 0x0d1a, + 0x0d23, 0x0d23, 0x0d23, 0x0d23, 0x0d23, 0x0d2a, 0x0d31, 0x0d3b, + 0x0d43, 0x0d43, 0x0d4d, 0x0d4d, 0x0d57, 0x0d57, 0x0d62, 0x0d6b, + 0x0d78, 0x0d80, 0x0d80, 0x0d90, 0x0d90, 0x0d98, 0x0d98, 0x0d98, + 0x0daa, 0x0daa, 0x0daa, 0x0db6, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, // Entry 200 - 23F - 0x07f9, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, - 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, - 0x0808, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, - 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, - 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x081a, 0x081a, 0x0837, - 0x0837, 0x0837, 0x0837, 0x0841, 0x0847, 0x0847, 0x0847, 0x0847, - 0x0847, 0x0847, 0x0847, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f, - 0x085b, 0x085b, 0x085b, 0x085b, 0x0862, 0x0862, 0x0862, 0x0862, + 0x0dbe, 0x0dcd, 0x0dda, 0x0de8, 0x0df7, 0x0e01, 0x0e01, 0x0e1d, + 0x0e1d, 0x0e25, 0x0e25, 0x0e2f, 0x0e2f, 0x0e2f, 0x0e3b, 0x0e3b, + 0x0e45, 0x0e45, 0x0e45, 0x0e4e, 0x0e56, 0x0e56, 0x0e5f, 0x0e68, + 0x0e68, 0x0e68, 0x0e68, 0x0e73, 0x0e73, 0x0e73, 0x0e73, 0x0e73, + 0x0e82, 0x0e82, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e97, 0x0ea1, + 0x0eac, 0x0eb8, 0x0ed5, 0x0edf, 0x0edf, 0x0eea, 0x0ef1, 0x0ef7, + 0x0ef7, 0x0ef7, 0x0ef7, 0x0ef7, 0x0ef7, 0x0ef7, 0x0f01, 0x0f0b, + 0x0f15, 0x0f1e, 0x0f1e, 0x0f29, 0x0f29, 0x0f33, 0x0f33, 0x0f3a, // Entry 240 - 27F - 0x0862, 0x0862, 0x0862, 0x0862, 0x0862, 0x0862, 0x0862, 0x087f, - 0x087f, 0x089c, 0x089c, 0x08b7, 0x08b7, 0x08cd, 0x08f7, 0x090c, - 0x091e, 0x0931, 0x0944, 0x095f, 0x0973, 0x0987, 0x0987, 0x099c, - 0x09b2, 0x09db, 0x09e6, 0x09fe, 0x0a15, 0x0a20, 0x0a2f, 0x0a42, - 0x0a59, 0x0a70, -} // Size: 1244 bytes - -var srLangStr string = "" + // Size: 7594 bytes - "АфарскиабхаскиАвестанскиафрикансаканамхарскиАрагонежанскиарапскиасамскиА" + - "варскиАјмараазербејџанскибашкирскибелорускибугарскиБисламабамбарабенгал" + - "скитибетанскибретонскибосанскикаталонскиЧеченскиЧаморокорзиканскиКричеш" + - "киСтарословенскиЧувашкивелшкиданскинемачкиДивехијскиџонгаевегрчкиенглес" + - "киесперантошпанскиестонскибаскијскиперсијскиФулахфинскифиџијскифарскифр" + - "анцускизападни фризијскиирскиШкотски Галскигалицијскигваранигуџаратиман" + - "скихаусахебрејскихиндиХири МотухрватскихаићанскимађарскијерменскиХереро" + - "ИнтерлингваиндонежанскиМеђујезичкиигбосечуан јиУнупиакИдоисландскиитали" + - "јанскиинуктитутјапанскијаванскигрузијскиКонгокикујуКуањамаказашкикалали" + - "суткмерскиканадакорејскиКанурикашмирскикурдскиКомикорнволскикиргискилат" + - "инскилуксембуршкигандаЛимбургишлингалалаошкилитванскилуба-катангалетонс" + - "кималгашкиМаршалскимаорскимакедонскималајаламмонголскимаратималајскимал" + - "тешкибурманскиНаурусеверни ндебеленепалскиНдонгахоландскинорвешки нинор" + - "скнорвешки бокмалЈужни ндебелеНавахоЊањаПровансалскиОјибваоромооријаОсе" + - "тскипанџабиПалипољскипаштунскипортугалскикечуарето-романскирундирумунск" + - "ирускикинјаруандасанскритСардињаскисиндисеверни самисангосинхалскислова" + - "чкисловеначкиСамоанскишонасомалскиалбанскисрпскиСватиСесотосунданскишве" + - "дскисвахилитамилскителугутаџичкитајландскитигрињатуркменскиТсванатонгат" + - "урскиТсонгататарскиТахићанскиујгурскиукрајинскиурдуузбечкиВендавијетнам" + - "скиВолапукВалунволофкосаЈидишјорубаЖуангкинескизулуАчинескиАколиАдангме" + - "јскиАдигејскиАфрихилиагемАинуАкадијскиАљутЈужни алтаиСтароенглескиАнгик" + - "аАрмајскимапучеАрапахоАравакасуАстуријскиАвадхиБалучиБалинезијскиБасаБе" + - "јабембабеназападни белучкиБојпуриБиколБиниСисикаБрајбодоБуриатБугинежан" + - "скиБлинКадоКарипскиАтсамскиЦебуаночигаЧибчаЧагатаиЧукескиМариЧинукскиЧо" + - "ктавскиЧипвијанскичерокиЧејенскисорани курдскиКоптскиКримеански турскиК" + - "ашубијанскиДакотаДаргватаитаДелаверСлавскиДогрибДинказармаДогридоњи луж" + - "ичкосрпскидуалаСредњи холандскиџола фоњиЂулаембуЕфикскиСтароегипатскиЕк" + - "ајукЕламитскиСредњи енглескиЕвондоФангфилипинскиФонСредњи францускиСтар" + - "офранцускиСеверно-фризијскиИсточни фризијскиФриулијскиГагагаузГајоГбаја" + - "ЏизГилбертшкиСредњи високи немачкиСтаронемачкиГондиГоронталоГотскиГребо" + - "СтарогрчкиШвајцарски немачкигусиГвич’инХаидахавајскиХилигајнонХититеХмо" + - "нггорњи лужичкосрпскиХупаИбанИлокоИнгвишкиЛојбаннгомбамачамеЈудео-перси" + - "јскиЈудео-арапскиКара-калпашкикабилеКачинЂукамбаКавиКабардијскиТјапмако" + - "ндезеленортски креолскиКороКасиКотанешкикојра чииникаленџинКимбундукоми" + - "-пермскиконканиКосреанскиКпелеКарачај-балкарКарелијскиКурукхшамбалабафиј" + - "аКумикКутенаиЛадинолангиЛандаЛамбаЛезгианлакотаМонгоЛозисеверни луриЛуб" + - "а-лулуаЛуисеноЛундалуоЛушаилујиаМадурешкиМагахиМаитилиМакасарМандингома" + - "саиМокшаМандарМендемеруморисјенСредњи ирскимакува-меетометаМикмакМинанг" + - "кабауМанчуМанипуримохокМосимундангВише језикаКришкиМирандешкиМарвариЕрз" + - "ијамазандеранскиНеаполитанскинамаНиски немачкиНевариНиасНиуеанквасиоНог" + - "аиСтари норскин’коСеверни сотонуерКласични невариЊамвезинјанколеЊороНзи" + - "маОсагеОтомански турскиПангасинскиПахлавиПампангаПапиаментоПалауанскиСт" + - "ароперсијскиФеничанскиПонпејскиСтаропровансалскик’ичеРађастаниРапануиРа" + - "ротонганромбоРоманиАроманијскируаСандавеЈакутСамаритански арамејскисамб" + - "уруСасакСанталисангуСицилијанскиШкотскијужнокурдскисенаСелкапкојраборо " + - "сениСтароирскиташелхитШанСидамојужни самилуле самиинари самисколт самиС" + - "онинкеСоџијенскиСранански тонгоСерерСукумаСусуСумерскиКоморскиКласични " + - "сиријскиСиријскиТимнетесоТереноТетумТигреТивТокелауКлингонскиТлингитТам" + - "ашекЊаса тонгаТок ПисинТсимшианТумбукаТувалутасавакТувинијскицентралноа" + - "тласки тамазигтУдмуртУгаритскиУмбундуРутваиВотскивунџоВаламоВарајВашова" + - "рлпириКалмиксогаЈаоЈапешкиКантонскиЗапотечкиБлисимболиЗенагастандардни " + - "марокански тамазигтЗунибез лингвистичког садржајаЗазамодеран стандардни" + - " арапскишвајцарски високи немачкинискосаксонскифламанскиБразилски португ" + - "алскиИберијски португалскимолдавскиСрпскохрватскиконго свахили" - -var srLangIdx = []uint16{ // 608 elements + 0x0f3a, 0x0f3a, 0x0f45, 0x0f4e, 0x0f4e, 0x0f5a, 0x0f5a, 0x0f5a, + 0x0f5a, 0x0f5a, 0x0f7a, 0x0f81, 0x0f9e, 0x0fa6, 0x0fc1, 0x0fc1, + 0x0fd7, 0x1001, 0x1016, 0x1028, 0x103b, 0x104e, 0x1069, 0x107d, + 0x1091, 0x1091, 0x10a6, 0x10bc, 0x10e5, 0x10f0, 0x1108, 0x111f, + 0x1129, 0x1138, 0x114b, +} // Size: 1246 bytes + +const srLangStr string = "" + // Size: 8071 bytes + "афарскиабхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" + + "арскиајмараазербејџанскибашкирскибелорускибугарскибисламабамбарабенгалс" + + "китибетанскибретонскибосанскикаталонскичеченскичаморокорзиканскикричешк" + + "ицрквенословенскичувашкивелшкиданскинемачкималдивскиџонгаевегрчкиенглес" + + "киесперантошпанскиестонскибаскијскиперсијскифулафинскифиџијскифарскифра" + + "нцускизападни фризијскиирскишкотски гелскигалицијскигваранигуџаратиманк" + + "схаусахебрејскихиндихири мотухрватскихаићанскимађарскијерменскихерероин" + + "терлингваиндонежанскиинтерлингвеигбосечуански јиинупикидоисландскиитали" + + "јанскиинуитскијапанскијаванскигрузијскиконгокикујуквањамаказашкигренлан" + + "дскикмерскиканадакорејскиканурикашмирскикурдскикомикорнволскикиргискила" + + "тинскилуксембуршкигандалимбуршкилингалалаоскилитванскилуба-катангалетон" + + "скималгашкимаршалскимаорскимакедонскималајаламмонголскимаратималајскима" + + "лтешкибурманскинаурускисеверни ндебеленепалскиндонгахоландскинорвешки н" + + "инорскнорвешки букмолјужни ндебеленавахоњанџаокситанскиоџибвеоромоодија" + + "осетинскипенџапскипалипољскипаштунскипортугалскикечуароманшкирундирумун" + + "скирускикињаруандасанскритсардинскисиндисеверни самисангосинхалешкислов" + + "ачкисловеначкисамоанскишонасомалскиалбанскисрпскисвазисесотосунданскишв" + + "едскисвахилитамилскителугутаџичкитајскитигрињатуркменскицванатонганскит" + + "урскицонгататарскитахићанскиујгурскиукрајинскиурдуузбечкивендавијетнамс" + + "киволапиквалонскиволофкосајидишјорубаџуаншкикинескизулуацешкиаколиаданг" + + "меадигејскиафрихилиагемаинуакадијскиалеутскијужноалтајскистароенглескиа" + + "нгикаарамејскимапучеарапахоаравачкиасуастуријскиавадибелучкибалијскибас" + + "абеџабембабеназападни белучкибоџпурибиколбинисисикабрајбодобурјатскибуг" + + "ијскиблинскикадокарипскиатсамсебуанскичигачипчачагатајчучкимаричинучкич" + + "октавскичипевјанскичерокичејенскицентрални курдскикоптскикримскотатарск" + + "исејшелски креолски францускикашупскидакотадаргинскитаитаделаверскислеј" + + "видогрипскидинказармадогридоњи лужичкосрпскидуаласредњехоландскиџола фо" + + "њиђуладазагаембуефичкистароегипатскиекаџукеламитскисредњеенглескиевондо" + + "фангфилипинскифонсредњефранцускистарофранцускисевернофризијскиисточнофр" + + "изијскифриулскигагагаузгајогбајагеезгилбертскисредњи високонемачкистаро" + + "немачкигондигоронталоготскигребостарогрчкиШвајцарски немачкигусигвичинс" + + "кихаидахавајскихилигајнонскихетитскихмоншкигорњи лужичкосрпскихупаибанс" + + "киибибиоилокоингушкиложбаннгомбамачамејудео-персијскијудео-арапскикара-" + + "калпашкикабилекачинскиџукамбакавикабардијскитјапмакондезеленортскикорок" + + "асикотанешкикојра чииникакокаленџинскикимбундукоми-пермскиконканикосрен" + + "скикпелекарачајско-балкарскикриокарелскикурукшамбалабафијакелнскикумичк" + + "икутенајладинолангиландаламбалезгинскилакотамонголозисеверни лурилуба-л" + + "улуалуисењолундалуомизолујиамадурскимагахимаитилимакасарскимандингомаса" + + "јскимокшамандармендемеруморисјенсредњеирскимакува-митометамикмакминангк" + + "абауманџурскиманипурскимохочкимосимундангВише језикакришкимирандскимарв" + + "ариерзјамазандеранскинапуљскинаманисконемачкиневариниасниуејскиквасионг" + + "иембунногајскистаронордијскинкосеверни сотонуеркласични неварскињамвези" + + "њанколењоронзимаосагеосмански турскипангасинанскипахлавипампангапапиаме" + + "нтопалаускинигеријски пиџинстароперсијскифеничанскипонпејскипрускистаро" + + "окситанскикичераџастанскирапануираротонганскиромборомскицинцарскируасан" + + "давејакутскисамаријански арамејскисамбурусасаксанталингамбајсангусицили" + + "јанскишкотскијужнокурдскисенаселкупскикојраборо сенистароирскиташелхитш" + + "анскисидамојужни самилуле самиинари самисколтски лапонскисонинкесогдијс" + + "кисранан тонгосерерскисахосукумасусусумерскикоморскисиријачкисиријскити" + + "мнетесотеренотетумтигретивтокелауклингонскитлингиттамашекњаса тонгаток " + + "писинтарокоцимшиантумбукатувалутасавактувинскицентралноатласки тамазигт" + + "удмуртскиугаритскиумбундуРутваиводскивунџовалсерскиволајтаварајскивашов" + + "арлпирикалмичкисогајаојапскијангбенјембакантонскизапотечкиблисимболизен" + + "агастандардни марокански тамазигтзунибез лингвистичког садржајазазасавр" + + "емени стандардни арапскишвајцарски високи немачкиенглески (Велика Брита" + + "нија)енглески (Сједињене Америчке Државе)нискосаксонскифламанскипортуга" + + "лски (Португал)молдавскисрпскохрватскикисвахилипоједностављени кинескит" + + "радиционални кинески" + +var srLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x0048, 0x0058, 0x0072, - 0x0080, 0x008e, 0x009c, 0x00a8, 0x00c2, 0x00d4, 0x00e6, 0x00f6, - 0x0104, 0x0112, 0x0124, 0x0138, 0x014a, 0x015a, 0x016e, 0x017e, - 0x018a, 0x01a0, 0x01a6, 0x01b0, 0x01cc, 0x01da, 0x01e6, 0x01f2, - 0x0200, 0x0214, 0x021e, 0x0224, 0x022e, 0x023e, 0x0250, 0x025e, - 0x026e, 0x0280, 0x0292, 0x029c, 0x02a8, 0x02b8, 0x02c4, 0x02d6, - 0x02f7, 0x0301, 0x031c, 0x0330, 0x033e, 0x034e, 0x035a, 0x0364, - 0x0376, 0x0380, 0x0391, 0x03a1, 0x03b3, 0x03c3, 0x03d5, 0x03e1, + 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x004e, 0x005e, 0x0070, + 0x007e, 0x008c, 0x009a, 0x00a6, 0x00c0, 0x00d2, 0x00e4, 0x00f4, + 0x0102, 0x0110, 0x0122, 0x0136, 0x0148, 0x0158, 0x016c, 0x017c, + 0x0188, 0x019e, 0x01a4, 0x01ae, 0x01ce, 0x01dc, 0x01e8, 0x01f4, + 0x0202, 0x0214, 0x021e, 0x0224, 0x022e, 0x023e, 0x0250, 0x025e, + 0x026e, 0x0280, 0x0292, 0x029a, 0x02a6, 0x02b6, 0x02c2, 0x02d4, + 0x02f5, 0x02ff, 0x031a, 0x032e, 0x033c, 0x034c, 0x0356, 0x0360, + 0x0372, 0x037c, 0x038d, 0x039d, 0x03af, 0x03bf, 0x03d1, 0x03dd, // Entry 40 - 7F - 0x03f7, 0x040f, 0x0425, 0x042d, 0x043e, 0x044c, 0x0452, 0x0464, - 0x047a, 0x048c, 0x049c, 0x04ac, 0x04be, 0x04c8, 0x04d4, 0x04e2, - 0x04f0, 0x0502, 0x0510, 0x051c, 0x052c, 0x0538, 0x054a, 0x0558, - 0x0560, 0x0574, 0x0584, 0x0594, 0x05ac, 0x05b6, 0x05c8, 0x05d6, - 0x05e2, 0x05f4, 0x060b, 0x061b, 0x062b, 0x063d, 0x064b, 0x065f, - 0x0671, 0x0683, 0x068f, 0x069f, 0x06af, 0x06c1, 0x06cb, 0x06e8, - 0x06f8, 0x0704, 0x0716, 0x0735, 0x0752, 0x076b, 0x0777, 0x077f, - 0x0797, 0x07a3, 0x07ad, 0x07b7, 0x07c5, 0x07d3, 0x07db, 0x07e7, + 0x03f3, 0x040b, 0x0421, 0x0429, 0x0440, 0x044c, 0x0452, 0x0464, + 0x047a, 0x048a, 0x049a, 0x04aa, 0x04bc, 0x04c6, 0x04d2, 0x04e0, + 0x04ee, 0x0504, 0x0512, 0x051e, 0x052e, 0x053a, 0x054c, 0x055a, + 0x0562, 0x0576, 0x0586, 0x0596, 0x05ae, 0x05b8, 0x05ca, 0x05d8, + 0x05e4, 0x05f6, 0x060d, 0x061d, 0x062d, 0x063f, 0x064d, 0x0661, + 0x0673, 0x0685, 0x0691, 0x06a1, 0x06b1, 0x06c3, 0x06d3, 0x06f0, + 0x0700, 0x070c, 0x071e, 0x073d, 0x075a, 0x0773, 0x077f, 0x0789, + 0x079d, 0x07a9, 0x07b3, 0x07bd, 0x07cf, 0x07e1, 0x07e9, 0x07f5, // Entry 80 - BF - 0x07f9, 0x080f, 0x0819, 0x0832, 0x083c, 0x084c, 0x0856, 0x086c, - 0x087c, 0x0890, 0x089a, 0x08b1, 0x08bb, 0x08cd, 0x08dd, 0x08f1, - 0x0903, 0x090b, 0x091b, 0x092b, 0x0937, 0x0941, 0x094d, 0x095f, - 0x096d, 0x097b, 0x098b, 0x0997, 0x09a5, 0x09b9, 0x09c7, 0x09db, - 0x09e7, 0x09f1, 0x09fd, 0x0a09, 0x0a19, 0x0a2d, 0x0a3d, 0x0a51, - 0x0a59, 0x0a67, 0x0a71, 0x0a87, 0x0a95, 0x0a9f, 0x0aa9, 0x0ab1, - 0x0abb, 0x0ac7, 0x0ad1, 0x0adf, 0x0ae7, 0x0af7, 0x0b01, 0x0b17, - 0x0b29, 0x0b29, 0x0b39, 0x0b41, 0x0b49, 0x0b5b, 0x0b5b, 0x0b63, + 0x0807, 0x081d, 0x0827, 0x0833, 0x0841, 0x0851, 0x085b, 0x086f, + 0x087f, 0x0891, 0x089b, 0x08b2, 0x08bc, 0x08d0, 0x08e0, 0x08f4, + 0x0906, 0x090e, 0x091e, 0x092e, 0x093a, 0x0944, 0x0950, 0x0962, + 0x0970, 0x097e, 0x098e, 0x099a, 0x09a8, 0x09b4, 0x09c2, 0x09d6, + 0x09e0, 0x09f2, 0x09fe, 0x0a08, 0x0a18, 0x0a2c, 0x0a3c, 0x0a50, + 0x0a58, 0x0a66, 0x0a70, 0x0a86, 0x0a94, 0x0aa4, 0x0aae, 0x0ab6, + 0x0ac0, 0x0acc, 0x0ada, 0x0ae8, 0x0af0, 0x0afc, 0x0b06, 0x0b14, + 0x0b26, 0x0b26, 0x0b36, 0x0b3e, 0x0b46, 0x0b58, 0x0b58, 0x0b68, // Entry C0 - FF - 0x0b63, 0x0b78, 0x0b92, 0x0b9e, 0x0bae, 0x0bba, 0x0bba, 0x0bc8, - 0x0bc8, 0x0bd4, 0x0bd4, 0x0bd4, 0x0bda, 0x0bda, 0x0bee, 0x0bee, - 0x0bfa, 0x0c06, 0x0c1e, 0x0c1e, 0x0c26, 0x0c26, 0x0c26, 0x0c26, - 0x0c2e, 0x0c38, 0x0c38, 0x0c40, 0x0c40, 0x0c40, 0x0c5d, 0x0c6b, - 0x0c75, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c89, 0x0c89, 0x0c89, 0x0c91, - 0x0c91, 0x0c99, 0x0c99, 0x0ca5, 0x0cbd, 0x0cbd, 0x0cc5, 0x0cc5, - 0x0ccd, 0x0cdd, 0x0cdd, 0x0ced, 0x0cfb, 0x0d03, 0x0d0d, 0x0d1b, - 0x0d29, 0x0d31, 0x0d41, 0x0d53, 0x0d69, 0x0d75, 0x0d85, 0x0da0, + 0x0b68, 0x0b82, 0x0b9c, 0x0ba8, 0x0bba, 0x0bc6, 0x0bc6, 0x0bd4, + 0x0bd4, 0x0bd4, 0x0be4, 0x0be4, 0x0be4, 0x0bea, 0x0bea, 0x0bfe, + 0x0bfe, 0x0c08, 0x0c16, 0x0c26, 0x0c26, 0x0c2e, 0x0c2e, 0x0c2e, + 0x0c2e, 0x0c36, 0x0c40, 0x0c40, 0x0c48, 0x0c48, 0x0c48, 0x0c65, + 0x0c73, 0x0c7d, 0x0c85, 0x0c85, 0x0c85, 0x0c91, 0x0c91, 0x0c91, + 0x0c99, 0x0c99, 0x0ca1, 0x0ca1, 0x0cb3, 0x0cc3, 0x0cc3, 0x0cd1, + 0x0cd1, 0x0cd9, 0x0ce9, 0x0ce9, 0x0cf3, 0x0d05, 0x0d0d, 0x0d17, + 0x0d25, 0x0d2f, 0x0d37, 0x0d45, 0x0d57, 0x0d6d, 0x0d79, 0x0d89, // Entry 100 - 13F - 0x0dae, 0x0dae, 0x0dcf, 0x0de7, 0x0df3, 0x0dff, 0x0e09, 0x0e17, - 0x0e25, 0x0e31, 0x0e3b, 0x0e45, 0x0e4f, 0x0e72, 0x0e72, 0x0e7c, - 0x0e9b, 0x0eac, 0x0eb4, 0x0eb4, 0x0ebc, 0x0eca, 0x0eca, 0x0ee6, - 0x0ef2, 0x0f04, 0x0f21, 0x0f21, 0x0f2d, 0x0f2d, 0x0f35, 0x0f49, - 0x0f49, 0x0f4f, 0x0f4f, 0x0f6e, 0x0f8a, 0x0f8a, 0x0fab, 0x0fcc, - 0x0fe0, 0x0fe4, 0x0ff0, 0x0ff0, 0x0ff8, 0x1002, 0x1002, 0x1008, - 0x101c, 0x101c, 0x1044, 0x105c, 0x105c, 0x1066, 0x1078, 0x1084, - 0x108e, 0x10a2, 0x10c5, 0x10c5, 0x10c5, 0x10cd, 0x10dc, 0x10e6, + 0x0daa, 0x0db8, 0x0db8, 0x0dd6, 0x0e0c, 0x0e1c, 0x0e28, 0x0e3a, + 0x0e44, 0x0e58, 0x0e64, 0x0e76, 0x0e80, 0x0e8a, 0x0e94, 0x0eb7, + 0x0eb7, 0x0ec1, 0x0edf, 0x0ef0, 0x0ef8, 0x0f04, 0x0f0c, 0x0f18, + 0x0f18, 0x0f34, 0x0f40, 0x0f52, 0x0f6e, 0x0f6e, 0x0f7a, 0x0f7a, + 0x0f82, 0x0f96, 0x0f96, 0x0f9c, 0x0f9c, 0x0fba, 0x0fd6, 0x0fd6, + 0x0ff6, 0x1016, 0x1026, 0x102a, 0x1036, 0x1036, 0x103e, 0x1048, + 0x1048, 0x1050, 0x1064, 0x1064, 0x108b, 0x10a3, 0x10a3, 0x10ad, + 0x10bf, 0x10cb, 0x10d5, 0x10e9, 0x110c, 0x110c, 0x110c, 0x1114, // Entry 140 - 17F - 0x10e6, 0x10f6, 0x10f6, 0x110a, 0x1116, 0x1120, 0x1145, 0x1145, - 0x114d, 0x1155, 0x1155, 0x115f, 0x116f, 0x116f, 0x116f, 0x117b, - 0x1187, 0x1193, 0x11b0, 0x11c9, 0x11c9, 0x11e2, 0x11ee, 0x11f8, - 0x11fc, 0x1206, 0x120e, 0x1224, 0x1224, 0x122c, 0x123a, 0x1261, - 0x1261, 0x1269, 0x1269, 0x1271, 0x1283, 0x1298, 0x1298, 0x1298, - 0x1298, 0x12a8, 0x12b8, 0x12cf, 0x12dd, 0x12f1, 0x12fb, 0x1316, - 0x1316, 0x1316, 0x132a, 0x1336, 0x1344, 0x1350, 0x1350, 0x135a, - 0x1368, 0x1374, 0x137e, 0x1388, 0x1392, 0x13a0, 0x13a0, 0x13a0, + 0x1126, 0x1130, 0x1130, 0x1140, 0x1140, 0x115a, 0x116a, 0x1178, + 0x119d, 0x119d, 0x11a5, 0x11b3, 0x11bf, 0x11c9, 0x11d7, 0x11d7, + 0x11d7, 0x11e3, 0x11ef, 0x11fb, 0x1218, 0x1231, 0x1231, 0x124a, + 0x1256, 0x1266, 0x126a, 0x1274, 0x127c, 0x1292, 0x1292, 0x129a, + 0x12a8, 0x12be, 0x12be, 0x12c6, 0x12c6, 0x12ce, 0x12e0, 0x12f5, + 0x12f5, 0x12f5, 0x12fd, 0x1313, 0x1323, 0x133a, 0x1348, 0x135a, + 0x1364, 0x138b, 0x1393, 0x1393, 0x13a3, 0x13ad, 0x13bb, 0x13c7, + 0x13d5, 0x13e3, 0x13f1, 0x13fd, 0x1407, 0x1411, 0x141b, 0x142d, // Entry 180 - 1BF - 0x13a0, 0x13ac, 0x13ac, 0x13b6, 0x13be, 0x13d5, 0x13d5, 0x13e8, - 0x13f6, 0x1400, 0x1406, 0x1410, 0x141a, 0x141a, 0x141a, 0x142c, - 0x142c, 0x1438, 0x1446, 0x1454, 0x1464, 0x146e, 0x146e, 0x1478, - 0x1484, 0x148e, 0x1496, 0x14a6, 0x14bd, 0x14d4, 0x14dc, 0x14e8, - 0x14fe, 0x1508, 0x1518, 0x1522, 0x152a, 0x152a, 0x1538, 0x154d, - 0x1559, 0x156d, 0x157b, 0x157b, 0x157b, 0x1587, 0x15a1, 0x15a1, - 0x15bb, 0x15c3, 0x15dc, 0x15e8, 0x15f0, 0x15fc, 0x15fc, 0x1608, - 0x1608, 0x1612, 0x1629, 0x1629, 0x1632, 0x1649, 0x1651, 0x166e, + 0x142d, 0x142d, 0x142d, 0x1439, 0x1439, 0x1443, 0x144b, 0x1462, + 0x1462, 0x1475, 0x1483, 0x148d, 0x1493, 0x149b, 0x14a5, 0x14a5, + 0x14a5, 0x14b5, 0x14b5, 0x14c1, 0x14cf, 0x14e3, 0x14f3, 0x1503, + 0x1503, 0x150d, 0x1519, 0x1523, 0x152b, 0x153b, 0x1551, 0x1566, + 0x156e, 0x157a, 0x1590, 0x15a2, 0x15b6, 0x15c4, 0x15cc, 0x15cc, + 0x15da, 0x15ef, 0x15fb, 0x160d, 0x161b, 0x161b, 0x161b, 0x1625, + 0x163f, 0x163f, 0x164f, 0x1657, 0x166f, 0x167b, 0x1683, 0x1693, + 0x1693, 0x169f, 0x16af, 0x16bf, 0x16db, 0x16db, 0x16e1, 0x16f8, // Entry 1C0 - 1FF - 0x167c, 0x168c, 0x1694, 0x169e, 0x16a8, 0x16c7, 0x16dd, 0x16eb, - 0x16fb, 0x170f, 0x1723, 0x1723, 0x1723, 0x1723, 0x173f, 0x173f, - 0x1753, 0x1753, 0x1753, 0x1765, 0x1765, 0x1787, 0x1792, 0x1792, - 0x17a4, 0x17b2, 0x17c6, 0x17c6, 0x17c6, 0x17d0, 0x17dc, 0x17dc, - 0x17dc, 0x17dc, 0x17f2, 0x17f8, 0x1806, 0x1810, 0x183b, 0x1849, - 0x1853, 0x1861, 0x1861, 0x1861, 0x186b, 0x1883, 0x1891, 0x1891, - 0x18a9, 0x18a9, 0x18b1, 0x18b1, 0x18bd, 0x18d8, 0x18ec, 0x18ec, - 0x18fc, 0x1902, 0x1902, 0x190e, 0x190e, 0x190e, 0x1921, 0x1932, + 0x1700, 0x1721, 0x172f, 0x173d, 0x1745, 0x174f, 0x1759, 0x1776, + 0x1790, 0x179e, 0x17ae, 0x17c2, 0x17d2, 0x17d2, 0x17f1, 0x17f1, + 0x17f1, 0x180d, 0x180d, 0x1821, 0x1821, 0x1821, 0x1833, 0x183f, + 0x185d, 0x1865, 0x1865, 0x187b, 0x1889, 0x18a3, 0x18a3, 0x18a3, + 0x18ad, 0x18b9, 0x18b9, 0x18b9, 0x18b9, 0x18cb, 0x18d1, 0x18df, + 0x18ef, 0x191a, 0x1928, 0x1932, 0x1940, 0x1940, 0x194e, 0x1958, + 0x1970, 0x197e, 0x197e, 0x1996, 0x1996, 0x199e, 0x199e, 0x19b0, + 0x19cb, 0x19df, 0x19df, 0x19ef, 0x19fb, 0x19fb, 0x1a07, 0x1a07, // Entry 200 - 23F - 0x1945, 0x1958, 0x1966, 0x197a, 0x1997, 0x19a1, 0x19a1, 0x19a1, - 0x19ad, 0x19b5, 0x19c5, 0x19d5, 0x19f6, 0x1a06, 0x1a06, 0x1a06, - 0x1a10, 0x1a18, 0x1a24, 0x1a2e, 0x1a38, 0x1a3e, 0x1a4c, 0x1a4c, - 0x1a60, 0x1a6e, 0x1a6e, 0x1a7c, 0x1a8f, 0x1aa0, 0x1aa0, 0x1aa0, - 0x1aa0, 0x1ab0, 0x1ab0, 0x1abe, 0x1aca, 0x1ad8, 0x1aec, 0x1b1d, - 0x1b29, 0x1b3b, 0x1b49, 0x1b4f, 0x1b55, 0x1b55, 0x1b55, 0x1b55, - 0x1b55, 0x1b61, 0x1b61, 0x1b6b, 0x1b6b, 0x1b77, 0x1b81, 0x1b89, - 0x1b99, 0x1b99, 0x1ba5, 0x1ba5, 0x1bad, 0x1bb3, 0x1bc1, 0x1bc1, + 0x1a07, 0x1a1a, 0x1a2b, 0x1a3e, 0x1a5f, 0x1a6d, 0x1a7f, 0x1a96, + 0x1aa6, 0x1aae, 0x1aae, 0x1aba, 0x1ac2, 0x1ad2, 0x1ae2, 0x1af4, + 0x1b04, 0x1b04, 0x1b04, 0x1b0e, 0x1b16, 0x1b22, 0x1b2c, 0x1b36, + 0x1b3c, 0x1b4a, 0x1b4a, 0x1b5e, 0x1b6c, 0x1b6c, 0x1b7a, 0x1b8d, + 0x1b9e, 0x1b9e, 0x1baa, 0x1baa, 0x1bb8, 0x1bb8, 0x1bc6, 0x1bd2, + 0x1be0, 0x1bf0, 0x1c21, 0x1c33, 0x1c45, 0x1c53, 0x1c59, 0x1c5f, + 0x1c5f, 0x1c5f, 0x1c5f, 0x1c5f, 0x1c6b, 0x1c6b, 0x1c75, 0x1c87, + 0x1c95, 0x1ca5, 0x1cad, 0x1cbd, 0x1cbd, 0x1ccd, 0x1ccd, 0x1cd5, // Entry 240 - 27F - 0x1bc1, 0x1bc1, 0x1bd3, 0x1be5, 0x1bf9, 0x1bf9, 0x1c05, 0x1c3f, - 0x1c47, 0x1c79, 0x1c81, 0x1cb3, 0x1cb3, 0x1cb3, 0x1ce3, 0x1ce3, - 0x1ce3, 0x1ce3, 0x1ce3, 0x1ce3, 0x1ce3, 0x1ce3, 0x1ce3, 0x1ce3, - 0x1ce3, 0x1cff, 0x1d11, 0x1d3a, 0x1d63, 0x1d75, 0x1d91, 0x1daa, -} // Size: 1240 bytes - -var srLatnLangStr string = "" + // Size: 3982 bytes - "AfarskiabhaskiAvestanskiafrikansakanamharskiAragonežanskiarapskiasamskiA" + - "varskiAjmaraazerbejdžanskibaškirskibeloruskibugarskiBislamabambarabengal" + - "skitibetanskibretonskibosanskikatalonskiČečenskiČamorokorzikanskiKričešk" + - "iStaroslovenskiČuvaškivelškidanskinemačkiDivehijskidžongaevegrčkienglesk" + - "iesperantošpanskiestonskibaskijskipersijskiFulahfinskifidžijskifarskifra" + - "ncuskizapadni frizijskiirskiŠkotski Galskigalicijskigvaranigudžaratimans" + - "kihausahebrejskihindiHiri MotuhrvatskihaićanskimađarskijermenskiHereroIn" + - "terlingvaindonežanskiMeđujezičkiigbosečuan jiUnupiakIdoislandskiitalijan" + - "skiinuktitutjapanskijavanskigruzijskiKongokikujuKuanjamakazaškikalalisut" + - "kmerskikanadakorejskiKanurikašmirskikurdskiKomikornvolskikirgiskilatinsk" + - "iluksemburškigandaLimburgišlingalalaoškilitvanskiluba-katangaletonskimal" + - "gaškiMaršalskimaorskimakedonskimalajalammongolskimaratimalajskimalteškib" + - "urmanskiNauruseverni ndebelenepalskiNdongaholandskinorveški ninorsknorve" + - "ški bokmalJužni ndebeleNavahoNjanjaProvansalskiOjibvaoromoorijaOsetskip" + - "andžabiPalipoljskipaštunskiportugalskikečuareto-romanskirundirumunskirus" + - "kikinjaruandasanskritSardinjaskisindiseverni samisangosinhalskislovačkis" + - "lovenačkiSamoanskišonasomalskialbanskisrpskiSvatiSesotosundanskišvedskis" + - "vahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskiTsvanatongatursk" + - "iTsongatatarskiTahićanskiujgurskiukrajinskiurduuzbečkiVendavijetnamskiVo" + - "lapukValunvolofkosaJidišjorubaŽuangkineskizuluAčineskiAkoliAdangmejskiAd" + - "igejskiAfrihiliagemAinuAkadijskiAljutJužni altaiStaroengleskiAngikaArmaj" + - "skimapučeArapahoAravakasuAsturijskiAvadhiBalučiBalinezijskiBasaBejabemba" + - "benazapadni belučkiBojpuriBikolBiniSisikaBrajbodoBuriatBuginežanskiBlinK" + - "adoKaripskiAtsamskiCebuanočigaČibčaČagataiČukeskiMariČinukskiČoktavskiČi" + - "pvijanskičerokiČejenskisorani kurdskiKoptskiKrimeanski turskiKašubijansk" + - "iDakotaDargvataitaDelaverSlavskiDogribDinkazarmaDogridonji lužičkosrpski" + - "dualaSrednji holandskidžola fonjiĐulaembuEfikskiStaroegipatskiEkajukElam" + - "itskiSrednji engleskiEvondoFangfilipinskiFonSrednji francuskiStarofrancu" + - "skiSeverno-frizijskiIstočni frizijskiFriulijskiGagagauzGajoGbajaDžizGilb" + - "ertškiSrednji visoki nemačkiStaronemačkiGondiGorontaloGotskiGreboStarogr" + - "čkiŠvajcarski nemačkigusiGvič’inHaidahavajskiHiligajnonHititeHmonggornj" + - "i lužičkosrpskiHupaIbanIlokoIngviškiLojbanngombamačameJudeo-persijskiJud" + - "eo-arapskiKara-kalpaškikabileKačinĐukambaKaviKabardijskiTjapmakondezelen" + - "ortski kreolskiKoroKasiKotaneškikojra čiinikalendžinKimbundukomi-permski" + - "konkaniKosreanskiKpeleKaračaj-balkarKarelijskiKurukhšambalabafijaKumikKu" + - "tenaiLadinolangiLandaLambaLezgianlakotaMongoLoziseverni luriLuba-luluaLu" + - "isenoLundaluoLušailujiaMadureškiMagahiMaitiliMakasarMandingomasaiMokšaMa" + - "ndarMendemerumorisjenSrednji irskimakuva-meetometaMikmakMinangkabauManču" + - "ManipurimohokMosimundangViše jezikaKriškiMirandeškiMarvariErzijamazander" + - "anskiNeapolitanskinamaNiski nemačkiNevariNiasNiueankvasioNogaiStari nors" + - "kin’koSeverni sotonuerKlasični nevariNjamvezinjankoleNjoroNzimaOsageOtom" + - "anski turskiPangasinskiPahlaviPampangaPapiamentoPalauanskiStaropersijski" + - "FeničanskiPonpejskiStaroprovansalskik’ičeRađastaniRapanuiRarotonganrombo" + - "RomaniAromanijskiruaSandaveJakutSamaritanski aramejskisamburuSasakSantal" + - "isanguSicilijanskiŠkotskijužnokurdskisenaSelkapkojraboro seniStaroirskit" + - "ašelhitŠanSidamojužni samilule samiinari samiskolt samiSoninkeSodžijensk" + - "iSrananski tongoSererSukumaSusuSumerskiKomorskiKlasični sirijskiSirijski" + - "TimnetesoTerenoTetumTigreTivTokelauKlingonskiTlingitTamašekNjasa tongaTo" + - "k PisinTsimšianTumbukaTuvalutasavakTuvinijskicentralnoatlaski tamazigtUd" + - "murtUgaritskiUmbunduRutvaiVotskivundžoValamoVarajVašovarlpiriKalmiksogaJ" + - "aoJapeškiKantonskiZapotečkiBlisimboliZenagastandardni marokanski tamazig" + - "tZunibez lingvističkog sadržajaZazamoderan standardni arapskišvajcarski " + - "visoki nemačkiniskosaksonskiflamanskiBrazilski portugalskiIberijski port" + - "ugalskimoldavskiSrpskohrvatskikongo svahili" - -var srLatnLangIdx = []uint16{ // 608 elements + 0x1cdb, 0x1ce7, 0x1cf5, 0x1cff, 0x1cff, 0x1d11, 0x1d23, 0x1d37, + 0x1d37, 0x1d43, 0x1d7d, 0x1d85, 0x1db7, 0x1dbf, 0x1df5, 0x1df5, + 0x1df5, 0x1e25, 0x1e25, 0x1e25, 0x1e57, 0x1e9a, 0x1e9a, 0x1e9a, + 0x1e9a, 0x1e9a, 0x1e9a, 0x1e9a, 0x1eb6, 0x1ec8, 0x1ec8, 0x1ef1, + 0x1f03, 0x1f1f, 0x1f31, 0x1f5e, 0x1f87, +} // Size: 1250 bytes + +const srLatnLangStr string = "" + // Size: 4236 bytes + "afarskiabhaskiavestanskiafrikansakanskiamharskiaragonskiarapskiasamskiav" + + "arskiajmaraazerbejdžanskibaškirskibeloruskibugarskibislamabambarabengals" + + "kitibetanskibretonskibosanskikatalonskičečenskičamorokorzikanskikričeški" + + "crkvenoslovenskičuvaškivelškidanskinemačkimaldivskidžongaevegrčkienglesk" + + "iesperantošpanskiestonskibaskijskipersijskifulafinskifidžijskifarskifran" + + "cuskizapadni frizijskiirskiškotski gelskigalicijskigvaranigudžaratimanks" + + "hausahebrejskihindihiri motuhrvatskihaićanskimađarskijermenskihererointe" + + "rlingvaindonežanskiinterlingveigbosečuanski jiinupikidoislandskiitalijan" + + "skiinuitskijapanskijavanskigruzijskikongokikujukvanjamakazaškigrenlandsk" + + "ikmerskikanadakorejskikanurikašmirskikurdskikomikornvolskikirgiskilatins" + + "kiluksemburškigandalimburškilingalalaoskilitvanskiluba-katangaletonskima" + + "lgaškimaršalskimaorskimakedonskimalajalammongolskimaratimalajskimalteški" + + "burmanskinauruskiseverni ndebelenepalskindongaholandskinorveški ninorskn" + + "orveški bukmoljužni ndebelenavahonjandžaoksitanskiodžibveoromoodijaoseti" + + "nskipendžapskipalipoljskipaštunskiportugalskikečuaromanškirundirumunskir" + + "uskikinjaruandasanskritsardinskisindiseverni samisangosinhaleškislovački" + + "slovenačkisamoanskišonasomalskialbanskisrpskisvazisesotosundanskišvedski" + + "svahilitamilskitelugutadžičkitajskitigrinjaturkmenskicvanatonganskitursk" + + "icongatatarskitahićanskiujgurskiukrajinskiurduuzbečkivendavijetnamskivol" + + "apikvalonskivolofkosajidišjorubadžuanškikineskizuluaceškiakoliadangmeadi" + + "gejskiafrihiliagemainuakadijskialeutskijužnoaltajskistaroengleskiangikaa" + + "ramejskimapučearapahoaravačkiasuasturijskiavadibelučkibalijskibasabedžab" + + "embabenazapadni belučkibodžpuribikolbinisisikabrajbodoburjatskibugijskib" + + "linskikadokaripskiatsamsebuanskičigačipčačagatajčučkimaričinučkičoktavsk" + + "ičipevjanskičerokičejenskicentralni kurdskikoptskikrimskotatarskisejšels" + + "ki kreolski francuskikašupskidakotadarginskitaitadelaverskislejvidogrips" + + "kidinkazarmadogridonji lužičkosrpskidualasrednjeholandskidžola fonjiđula" + + "dazagaembuefičkistaroegipatskiekadžukelamitskisrednjeengleskievondofangf" + + "ilipinskifonsrednjefrancuskistarofrancuskisevernofrizijskiistočnofrizijs" + + "kifriulskigagagauzgajogbajageezgilbertskisrednji visokonemačkistaronemač" + + "kigondigorontalogotskigrebostarogrčkiŠvajcarski nemačkigusigvičinskihaid" + + "ahavajskihiligajnonskihetitskihmonškigornji lužičkosrpskihupaibanskiibib" + + "ioilokoinguškiložbanngombamačamejudeo-persijskijudeo-arapskikara-kalpašk" + + "ikabilekačinskidžukambakavikabardijskitjapmakondezelenortskikorokasikota" + + "neškikojra čiinikakokalendžinskikimbundukomi-permskikonkanikosrenskikpel" + + "ekaračajsko-balkarskikriokarelskikurukšambalabafijakelnskikumičkikutenaj" + + "ladinolangilandalambalezginskilakotamongoloziseverni luriluba-lulualuise" + + "njolundaluomizolujiamadurskimagahimaitilimakasarskimandingomasajskimokša" + + "mandarmendemerumorisjensrednjeirskimakuva-mitometamikmakminangkabaumandž" + + "urskimanipurskimohočkimosimundangViše jezikakriškimirandskimarvarierzjam" + + "azanderanskinapuljskinamaniskonemačkinevariniasniuejskikvasiongiembunnog" + + "ajskistaronordijskinkoseverni sotonuerklasični nevarskinjamvezinjankolen" + + "joronzimaosageosmanski turskipangasinanskipahlavipampangapapiamentopalau" + + "skinigerijski pidžinstaropersijskifeničanskiponpejskipruskistarooksitans" + + "kikičeradžastanskirapanuirarotonganskiromboromskicincarskiruasandavejaku" + + "tskisamarijanski aramejskisamburusasaksantalingambajsangusicilijanskiško" + + "tskijužnokurdskisenaselkupskikojraboro senistaroirskitašelhitšanskisidam" + + "ojužni samilule samiinari samiskoltski laponskisoninkesogdijskisranan to" + + "ngosererskisahosukumasususumerskikomorskisirijačkisirijskitimnetesoteren" + + "otetumtigretivtokelauklingonskitlingittamašeknjasa tongatok pisintarokoc" + + "imšiantumbukatuvalutasavaktuvinskicentralnoatlaski tamazigtudmurtskiugar" + + "itskiumbunduRutvaivodskivundžovalserskivolajtavarajskivašovarlpirikalmič" + + "kisogajaojapskijangbenjembakantonskizapotečkiblisimbolizenagastandardni " + + "marokanski tamazigtzunibez lingvističkog sadržajazazasavremeni standardn" + + "i arapskišvajcarski visoki nemačkiengleski (Velika Britanija)engleski (S" + + "jedinjene Američke Države)niskosaksonskiflamanskiportugalski (Portugal)m" + + "oldavskisrpskohrvatskikisvahilipojednostavljeni kineskitradicionalni kin" + + "eski" + +var srLatnLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0024, 0x002c, 0x003a, - 0x0041, 0x0048, 0x004f, 0x0055, 0x0064, 0x006e, 0x0077, 0x007f, - 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a9, 0x00b1, 0x00bb, 0x00c5, - 0x00cc, 0x00d7, 0x00da, 0x00e1, 0x00ef, 0x00f8, 0x00ff, 0x0105, - 0x010d, 0x0117, 0x011e, 0x0121, 0x0127, 0x012f, 0x0138, 0x0140, - 0x0148, 0x0151, 0x015a, 0x015f, 0x0165, 0x016f, 0x0175, 0x017e, - 0x018f, 0x0194, 0x01a3, 0x01ad, 0x01b4, 0x01be, 0x01c4, 0x01c9, - 0x01d2, 0x01d7, 0x01e0, 0x01e8, 0x01f2, 0x01fb, 0x0204, 0x020a, + 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0027, 0x002f, 0x0038, + 0x003f, 0x0046, 0x004d, 0x0053, 0x0062, 0x006c, 0x0075, 0x007d, + 0x0084, 0x008b, 0x0094, 0x009e, 0x00a7, 0x00af, 0x00b9, 0x00c3, + 0x00ca, 0x00d5, 0x00d8, 0x00df, 0x00ef, 0x00f8, 0x00ff, 0x0105, + 0x010d, 0x0116, 0x011d, 0x0120, 0x0126, 0x012e, 0x0137, 0x013f, + 0x0147, 0x0150, 0x0159, 0x015d, 0x0163, 0x016d, 0x0173, 0x017c, + 0x018d, 0x0192, 0x01a1, 0x01ab, 0x01b2, 0x01bc, 0x01c1, 0x01c6, + 0x01cf, 0x01d4, 0x01dd, 0x01e5, 0x01ef, 0x01f8, 0x0201, 0x0207, // Entry 40 - 7F - 0x0215, 0x0222, 0x022f, 0x0233, 0x023d, 0x0244, 0x0247, 0x0250, - 0x025b, 0x0264, 0x026c, 0x0274, 0x027d, 0x0282, 0x0288, 0x0290, - 0x0298, 0x02a1, 0x02a8, 0x02ae, 0x02b6, 0x02bc, 0x02c6, 0x02cd, - 0x02d1, 0x02db, 0x02e3, 0x02eb, 0x02f8, 0x02fd, 0x0307, 0x030e, - 0x0315, 0x031e, 0x032a, 0x0332, 0x033b, 0x0345, 0x034c, 0x0356, - 0x035f, 0x0368, 0x036e, 0x0376, 0x037f, 0x0388, 0x038d, 0x039c, - 0x03a4, 0x03aa, 0x03b3, 0x03c4, 0x03d4, 0x03e2, 0x03e8, 0x03ee, - 0x03fa, 0x0400, 0x0405, 0x040a, 0x0411, 0x041a, 0x041e, 0x0425, + 0x0212, 0x021f, 0x022a, 0x022e, 0x023b, 0x0241, 0x0244, 0x024d, + 0x0258, 0x0260, 0x0268, 0x0270, 0x0279, 0x027e, 0x0284, 0x028c, + 0x0294, 0x029f, 0x02a6, 0x02ac, 0x02b4, 0x02ba, 0x02c4, 0x02cb, + 0x02cf, 0x02d9, 0x02e1, 0x02e9, 0x02f6, 0x02fb, 0x0305, 0x030c, + 0x0312, 0x031b, 0x0327, 0x032f, 0x0338, 0x0342, 0x0349, 0x0353, + 0x035c, 0x0365, 0x036b, 0x0373, 0x037c, 0x0385, 0x038d, 0x039c, + 0x03a4, 0x03aa, 0x03b3, 0x03c4, 0x03d4, 0x03e2, 0x03e8, 0x03f0, + 0x03fa, 0x0402, 0x0407, 0x040c, 0x0415, 0x0420, 0x0424, 0x042b, // Entry 80 - BF - 0x042f, 0x043a, 0x0440, 0x044d, 0x0452, 0x045a, 0x045f, 0x046a, - 0x0472, 0x047d, 0x0482, 0x048e, 0x0493, 0x049c, 0x04a5, 0x04b0, - 0x04b9, 0x04be, 0x04c6, 0x04ce, 0x04d4, 0x04d9, 0x04df, 0x04e8, - 0x04f0, 0x04f7, 0x04ff, 0x0505, 0x050f, 0x0519, 0x0521, 0x052b, - 0x0531, 0x0536, 0x053c, 0x0542, 0x054a, 0x0555, 0x055d, 0x0567, - 0x056b, 0x0573, 0x0578, 0x0583, 0x058a, 0x058f, 0x0594, 0x0598, - 0x059e, 0x05a4, 0x05aa, 0x05b1, 0x05b5, 0x05be, 0x05c3, 0x05ce, - 0x05d7, 0x05d7, 0x05df, 0x05e3, 0x05e7, 0x05f0, 0x05f0, 0x05f5, + 0x0435, 0x0440, 0x0446, 0x044d, 0x0454, 0x045c, 0x0461, 0x046c, + 0x0474, 0x047d, 0x0482, 0x048e, 0x0493, 0x049e, 0x04a7, 0x04b2, + 0x04bb, 0x04c0, 0x04c8, 0x04d0, 0x04d6, 0x04db, 0x04e1, 0x04ea, + 0x04f2, 0x04f9, 0x0501, 0x0507, 0x0511, 0x0517, 0x051f, 0x0529, + 0x052e, 0x0537, 0x053d, 0x0542, 0x054a, 0x0555, 0x055d, 0x0567, + 0x056b, 0x0573, 0x0578, 0x0583, 0x058a, 0x0592, 0x0597, 0x059b, + 0x05a1, 0x05a7, 0x05b1, 0x05b8, 0x05bc, 0x05c3, 0x05c8, 0x05cf, + 0x05d8, 0x05d8, 0x05e0, 0x05e4, 0x05e8, 0x05f1, 0x05f1, 0x05f9, // Entry C0 - FF - 0x05f5, 0x0601, 0x060e, 0x0614, 0x061c, 0x0623, 0x0623, 0x062a, - 0x062a, 0x0630, 0x0630, 0x0630, 0x0633, 0x0633, 0x063d, 0x063d, - 0x0643, 0x064a, 0x0656, 0x0656, 0x065a, 0x065a, 0x065a, 0x065a, - 0x065e, 0x0663, 0x0663, 0x0667, 0x0667, 0x0667, 0x0677, 0x067e, - 0x0683, 0x0687, 0x0687, 0x0687, 0x068d, 0x068d, 0x068d, 0x0691, - 0x0691, 0x0695, 0x0695, 0x069b, 0x06a8, 0x06a8, 0x06ac, 0x06ac, - 0x06b0, 0x06b8, 0x06b8, 0x06c0, 0x06c7, 0x06cc, 0x06d3, 0x06db, - 0x06e3, 0x06e7, 0x06f0, 0x06fa, 0x0706, 0x070d, 0x0716, 0x0724, + 0x05f9, 0x0607, 0x0614, 0x061a, 0x0623, 0x062a, 0x062a, 0x0631, + 0x0631, 0x0631, 0x063a, 0x063a, 0x063a, 0x063d, 0x063d, 0x0647, + 0x0647, 0x064c, 0x0654, 0x065c, 0x065c, 0x0660, 0x0660, 0x0660, + 0x0660, 0x0666, 0x066b, 0x066b, 0x066f, 0x066f, 0x066f, 0x067f, + 0x0688, 0x068d, 0x0691, 0x0691, 0x0691, 0x0697, 0x0697, 0x0697, + 0x069b, 0x069b, 0x069f, 0x069f, 0x06a8, 0x06b0, 0x06b0, 0x06b7, + 0x06b7, 0x06bb, 0x06c3, 0x06c3, 0x06c8, 0x06d1, 0x06d6, 0x06dd, + 0x06e5, 0x06ec, 0x06f0, 0x06f9, 0x0703, 0x070f, 0x0716, 0x071f, // Entry 100 - 13F - 0x072b, 0x072b, 0x073c, 0x0749, 0x074f, 0x0755, 0x075a, 0x0761, - 0x0768, 0x076e, 0x0773, 0x0778, 0x077d, 0x0792, 0x0792, 0x0797, - 0x07a8, 0x07b4, 0x07b9, 0x07b9, 0x07bd, 0x07c4, 0x07c4, 0x07d2, - 0x07d8, 0x07e1, 0x07f1, 0x07f1, 0x07f7, 0x07f7, 0x07fb, 0x0805, - 0x0805, 0x0808, 0x0808, 0x0819, 0x0827, 0x0827, 0x0838, 0x084a, - 0x0854, 0x0856, 0x085c, 0x085c, 0x0860, 0x0865, 0x0865, 0x086a, - 0x0875, 0x0875, 0x088c, 0x0899, 0x0899, 0x089e, 0x08a7, 0x08ad, - 0x08b2, 0x08bd, 0x08d1, 0x08d1, 0x08d1, 0x08d5, 0x08df, 0x08e4, + 0x0730, 0x0737, 0x0737, 0x0746, 0x0763, 0x076c, 0x0772, 0x077b, + 0x0780, 0x078a, 0x0790, 0x0799, 0x079e, 0x07a3, 0x07a8, 0x07bd, + 0x07bd, 0x07c2, 0x07d2, 0x07de, 0x07e3, 0x07e9, 0x07ed, 0x07f4, + 0x07f4, 0x0802, 0x080a, 0x0813, 0x0822, 0x0822, 0x0828, 0x0828, + 0x082c, 0x0836, 0x0836, 0x0839, 0x0839, 0x0849, 0x0857, 0x0857, + 0x0867, 0x0878, 0x0880, 0x0882, 0x0888, 0x0888, 0x088c, 0x0891, + 0x0891, 0x0895, 0x089f, 0x089f, 0x08b5, 0x08c2, 0x08c2, 0x08c7, + 0x08d0, 0x08d6, 0x08db, 0x08e6, 0x08fa, 0x08fa, 0x08fa, 0x08fe, // Entry 140 - 17F - 0x08e4, 0x08ec, 0x08ec, 0x08f6, 0x08fc, 0x0901, 0x0917, 0x0917, - 0x091b, 0x091f, 0x091f, 0x0924, 0x092d, 0x092d, 0x092d, 0x0933, - 0x0939, 0x0940, 0x094f, 0x095c, 0x095c, 0x096a, 0x0970, 0x0976, - 0x0979, 0x097e, 0x0982, 0x098d, 0x098d, 0x0991, 0x0998, 0x09ac, - 0x09ac, 0x09b0, 0x09b0, 0x09b4, 0x09be, 0x09ca, 0x09ca, 0x09ca, - 0x09ca, 0x09d4, 0x09dc, 0x09e8, 0x09ef, 0x09f9, 0x09fe, 0x0a0d, - 0x0a0d, 0x0a0d, 0x0a17, 0x0a1d, 0x0a25, 0x0a2b, 0x0a2b, 0x0a30, - 0x0a37, 0x0a3d, 0x0a42, 0x0a47, 0x0a4c, 0x0a53, 0x0a53, 0x0a53, + 0x0908, 0x090d, 0x090d, 0x0915, 0x0915, 0x0922, 0x092a, 0x0932, + 0x0948, 0x0948, 0x094c, 0x0953, 0x0959, 0x095e, 0x0966, 0x0966, + 0x0966, 0x096d, 0x0973, 0x097a, 0x0989, 0x0996, 0x0996, 0x09a4, + 0x09aa, 0x09b3, 0x09b7, 0x09bc, 0x09c0, 0x09cb, 0x09cb, 0x09cf, + 0x09d6, 0x09e1, 0x09e1, 0x09e5, 0x09e5, 0x09e9, 0x09f3, 0x09ff, + 0x09ff, 0x09ff, 0x0a03, 0x0a10, 0x0a18, 0x0a24, 0x0a2b, 0x0a34, + 0x0a39, 0x0a4e, 0x0a52, 0x0a52, 0x0a5a, 0x0a5f, 0x0a67, 0x0a6d, + 0x0a74, 0x0a7c, 0x0a83, 0x0a89, 0x0a8e, 0x0a93, 0x0a98, 0x0aa1, // Entry 180 - 1BF - 0x0a53, 0x0a59, 0x0a59, 0x0a5e, 0x0a62, 0x0a6e, 0x0a6e, 0x0a78, - 0x0a7f, 0x0a84, 0x0a87, 0x0a8d, 0x0a92, 0x0a92, 0x0a92, 0x0a9c, - 0x0a9c, 0x0aa2, 0x0aa9, 0x0ab0, 0x0ab8, 0x0abd, 0x0abd, 0x0ac3, - 0x0ac9, 0x0ace, 0x0ad2, 0x0ada, 0x0ae7, 0x0af3, 0x0af7, 0x0afd, - 0x0b08, 0x0b0e, 0x0b16, 0x0b1b, 0x0b1f, 0x0b1f, 0x0b26, 0x0b32, - 0x0b39, 0x0b44, 0x0b4b, 0x0b4b, 0x0b4b, 0x0b51, 0x0b5e, 0x0b5e, - 0x0b6b, 0x0b6f, 0x0b7d, 0x0b83, 0x0b87, 0x0b8d, 0x0b8d, 0x0b93, - 0x0b93, 0x0b98, 0x0ba4, 0x0ba4, 0x0baa, 0x0bb6, 0x0bba, 0x0bca, + 0x0aa1, 0x0aa1, 0x0aa1, 0x0aa7, 0x0aa7, 0x0aac, 0x0ab0, 0x0abc, + 0x0abc, 0x0ac6, 0x0ace, 0x0ad3, 0x0ad6, 0x0ada, 0x0adf, 0x0adf, + 0x0adf, 0x0ae7, 0x0ae7, 0x0aed, 0x0af4, 0x0afe, 0x0b06, 0x0b0e, + 0x0b0e, 0x0b14, 0x0b1a, 0x0b1f, 0x0b23, 0x0b2b, 0x0b37, 0x0b42, + 0x0b46, 0x0b4c, 0x0b57, 0x0b62, 0x0b6c, 0x0b74, 0x0b78, 0x0b78, + 0x0b7f, 0x0b8b, 0x0b92, 0x0b9b, 0x0ba2, 0x0ba2, 0x0ba2, 0x0ba7, + 0x0bb4, 0x0bb4, 0x0bbd, 0x0bc1, 0x0bce, 0x0bd4, 0x0bd8, 0x0be0, + 0x0be0, 0x0be6, 0x0bee, 0x0bf6, 0x0c04, 0x0c04, 0x0c07, 0x0c13, // Entry 1C0 - 1FF - 0x0bd2, 0x0bda, 0x0bdf, 0x0be4, 0x0be9, 0x0bf9, 0x0c04, 0x0c0b, - 0x0c13, 0x0c1d, 0x0c27, 0x0c27, 0x0c27, 0x0c27, 0x0c35, 0x0c35, - 0x0c40, 0x0c40, 0x0c40, 0x0c49, 0x0c49, 0x0c5a, 0x0c62, 0x0c62, - 0x0c6c, 0x0c73, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c82, 0x0c88, 0x0c88, - 0x0c88, 0x0c88, 0x0c93, 0x0c96, 0x0c9d, 0x0ca2, 0x0cb8, 0x0cbf, - 0x0cc4, 0x0ccb, 0x0ccb, 0x0ccb, 0x0cd0, 0x0cdc, 0x0ce4, 0x0ce4, - 0x0cf1, 0x0cf1, 0x0cf5, 0x0cf5, 0x0cfb, 0x0d09, 0x0d13, 0x0d13, - 0x0d1c, 0x0d20, 0x0d20, 0x0d26, 0x0d26, 0x0d26, 0x0d31, 0x0d3a, + 0x0c17, 0x0c29, 0x0c31, 0x0c39, 0x0c3e, 0x0c43, 0x0c48, 0x0c57, + 0x0c64, 0x0c6b, 0x0c73, 0x0c7d, 0x0c85, 0x0c85, 0x0c97, 0x0c97, + 0x0c97, 0x0ca5, 0x0ca5, 0x0cb0, 0x0cb0, 0x0cb0, 0x0cb9, 0x0cbf, + 0x0cce, 0x0cd3, 0x0cd3, 0x0ce0, 0x0ce7, 0x0cf4, 0x0cf4, 0x0cf4, + 0x0cf9, 0x0cff, 0x0cff, 0x0cff, 0x0cff, 0x0d08, 0x0d0b, 0x0d12, + 0x0d1a, 0x0d30, 0x0d37, 0x0d3c, 0x0d43, 0x0d43, 0x0d4a, 0x0d4f, + 0x0d5b, 0x0d63, 0x0d63, 0x0d70, 0x0d70, 0x0d74, 0x0d74, 0x0d7d, + 0x0d8b, 0x0d95, 0x0d95, 0x0d9e, 0x0da5, 0x0da5, 0x0dab, 0x0dab, // Entry 200 - 23F - 0x0d44, 0x0d4e, 0x0d55, 0x0d61, 0x0d70, 0x0d75, 0x0d75, 0x0d75, - 0x0d7b, 0x0d7f, 0x0d87, 0x0d8f, 0x0da1, 0x0da9, 0x0da9, 0x0da9, - 0x0dae, 0x0db2, 0x0db8, 0x0dbd, 0x0dc2, 0x0dc5, 0x0dcc, 0x0dcc, - 0x0dd6, 0x0ddd, 0x0ddd, 0x0de5, 0x0df0, 0x0df9, 0x0df9, 0x0df9, - 0x0df9, 0x0e02, 0x0e02, 0x0e09, 0x0e0f, 0x0e16, 0x0e20, 0x0e39, - 0x0e3f, 0x0e48, 0x0e4f, 0x0e52, 0x0e55, 0x0e55, 0x0e55, 0x0e55, - 0x0e55, 0x0e5b, 0x0e5b, 0x0e62, 0x0e62, 0x0e68, 0x0e6d, 0x0e72, - 0x0e7a, 0x0e7a, 0x0e80, 0x0e80, 0x0e84, 0x0e87, 0x0e8f, 0x0e8f, + 0x0dab, 0x0db6, 0x0dbf, 0x0dc9, 0x0dda, 0x0de1, 0x0dea, 0x0df6, + 0x0dfe, 0x0e02, 0x0e02, 0x0e08, 0x0e0c, 0x0e14, 0x0e1c, 0x0e26, + 0x0e2e, 0x0e2e, 0x0e2e, 0x0e33, 0x0e37, 0x0e3d, 0x0e42, 0x0e47, + 0x0e4a, 0x0e51, 0x0e51, 0x0e5b, 0x0e62, 0x0e62, 0x0e6a, 0x0e75, + 0x0e7e, 0x0e7e, 0x0e84, 0x0e84, 0x0e8c, 0x0e8c, 0x0e93, 0x0e99, + 0x0ea0, 0x0ea8, 0x0ec1, 0x0eca, 0x0ed3, 0x0eda, 0x0edd, 0x0ee0, + 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee6, 0x0ee6, 0x0eed, 0x0ef6, + 0x0efd, 0x0f05, 0x0f0a, 0x0f12, 0x0f12, 0x0f1b, 0x0f1b, 0x0f1f, // Entry 240 - 27F - 0x0e8f, 0x0e8f, 0x0e98, 0x0ea2, 0x0eac, 0x0eac, 0x0eb2, 0x0ed0, - 0x0ed4, 0x0ef0, 0x0ef4, 0x0f0e, 0x0f0e, 0x0f0e, 0x0f29, 0x0f29, - 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f29, - 0x0f29, 0x0f37, 0x0f40, 0x0f55, 0x0f6a, 0x0f73, 0x0f81, 0x0f8e, -} // Size: 1240 bytes - -var svLangStr string = "" + // Size: 5432 bytes + 0x0f22, 0x0f28, 0x0f2f, 0x0f34, 0x0f34, 0x0f3d, 0x0f47, 0x0f51, + 0x0f51, 0x0f57, 0x0f75, 0x0f79, 0x0f95, 0x0f99, 0x0fb5, 0x0fb5, + 0x0fb5, 0x0fd0, 0x0fd0, 0x0fd0, 0x0feb, 0x1012, 0x1012, 0x1012, + 0x1012, 0x1012, 0x1012, 0x1012, 0x1020, 0x1029, 0x1029, 0x103f, + 0x1048, 0x1056, 0x105f, 0x1077, 0x108c, +} // Size: 1250 bytes + +const svLangStr string = "" + // Size: 5455 bytes "afarabchaziskaavestiskaafrikaansakanamhariskaaragonesiskaarabiskaassames" + "iskaavariskaaymaraazerbajdzjanskabasjkiriskavitryskabulgariskabislamabam" + "barabengalitibetanskabretonskabosniskakatalanskatjetjenskachamorrokorsik" + - "anskacreetjeckiskakyrkslaviskatjuvasjiskawalesiskadanskatyskadivehibhuta" + - "nesiskaewegrekiskaengelskaesperantospanskaestniskabaskiskapersiskafulani" + - "finskafijianskafäröiskafranskavästfrisiskairiskaskotsk gäliskagaliciskag" + - "uaranígujaratimanxhausahebreiskahindihirimotukroatiskahaitiskaungerskaar" + - "meniskahererointerlinguaindonesiskainterlingueigboszezuan iinupiakidoisl" + - "ändskaitalienskainuktitutjapanskajavanesiskageorgiskakikongokikuyukuany" + - "amakazakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurd" + - "iskakomekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalao" + - "tiskalitauiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonsk" + - "amalayalammongoliskamarathimalajiskamaltesiskaburmesiskanaurunordndebele" + - "nepalesiskandonganederländskanynorskanorskt bokmålsydndebelenavahonyanja" + - "occitanskaodjibwaoromooriyaossetiskapunjabipalipolskaafghanskaportugisis" + - "kaquechuarätoromanskarundirumänskaryskakinjarwandasanskritsardiskasindhi" + - "nordsamiskasangosingalesiskaslovakiskaslovenskasamoanskashonasomaliskaal" + - "banskaserbiskaswatisydsothosundanesiskasvenskaswahilitamiltelugiskatadzj" + - "ikiskathailändskatigrinjaturkmeniskatswanatonganskaturkiskatsongatataris" + - "katahitiskauiguriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallo" + - "nskawolofxhosajiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmea" + - "dygeiskatunisisk arabiskaafrihiliaghemainuakkadiskaAlabama-muskogeealeut" + - "iskagegiskasydaltaiskafornengelskaangikaarameiskaaraukanskaaraoniskaarap" + - "ahoalgerisk arabiskaarawakiskamarockansk arabiskaegyptisk arabiskaasuame" + - "rikanskt teckenspråkasturiskakotavaawadhibaluchiskabalinesiskabayerskaba" + - "sabamunskabatak-tobaghomalabejabembabetawiskabenabafutbagadavästbaluchis" + - "kabhojpuribikolbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahu" + - "iskabodobakossiburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayu" + - "gaatsamcebuanochigachibchachagataichuukesiskamariskachinookchoctawchipew" + - "yancherokesiskacheyennesoranisk kurdiskakoptiskakapisnonkrimtatariskakas" + - "jubiskadakotadarginskataitadelawareslavejdogribdinkazarmadogrilågsorbisk" + - "acentraldusundualamedelnederländskajola-fonyidyuladazagaembuefikemiliska" + - "fornegyptiskaekajukelamitiskamedelengelskacentralalaskisk jupiskaewondoe" + - "xtremaduriskafangfilippinskameänkielifonspråketcajun-franskamedelfranska" + - "fornfranskafrankoprovensalskanordfrisiskaöstfrisiskafriulianskagãgagauzi" + - "skagangayogbayazoroastrisk darietiopiskagilbertiskagilakimedelhögtyskafo" + - "rnhögtyskaGoa-konkanigondigorontalogotiskagreboforngrekiskaschweizertysk" + - "awayuufarefaregusiigwichinhaidahakkahawaiiskaFiji-hindihiligaynonhettiti" + - "skahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjiskaingriskajam" + - "aikansk engelsk kreollojbanngombakimashamijudisk persiskajudisk arabiska" + - "jylländskakarakalpakiskakabyliskakachinjjukambakawikabardinskakanembutya" + - "pmakondekapverdiskakenjangkorokaingangkhasikhotanesiskaTimbuktu-songhoyk" + - "howarkirmanjkimkakokalenjinkimbundukomi-permjakiskakonkanikosreanskakpel" + - "lekarachay-balkarkriokinaray-akarelskakurukhkisambaabafiakölniskakumykis" + - "kakutenajladinolangilahndalambalezghienlingua franca novaliguriskalivoni" + - "skalakotalombardiskamongolozinordlurilettgalliskaluba-lulualuiseñolundal" + - "uolushailuhyalitterär kineiskalaziskamaduresiskamafamagahimaithilimakasa" + - "rmandemassajiskamabamoksjamandarmendemerumauritansk kreolmedeliriskamakh" + - "uwa-meettometa’mi’kmaqminangkabaumanchuriskamanipurimohawkmossivästmaris" + - "kamundangflera språkmuskogeemirandesiskamarwarimentawaimyeneerjyamazande" + - "ranimin nannapolitanskanamalågtyskanewariskaniasniueanskaao-nagakwasioba" + - "mileké-ngiemboonnogaifornnordiskanovialn-kånordsothonuerklassisk newaris" + - "kanyamwezinyankolenyoronzimaosageottomanskapangasinanmedelpersiskapampan" + - "gapapiamentopalaupikardiskaPennsylvaniatyskamennonitisk lågtyskafornpers" + - "iskaPfalz-tyskafeniciskapiemontesiskapontiskaponapefornpreussiskafornpro" + - "vensalskaquichéChimborazo-höglandskichwarajasthanirapanuirarotonganskaro" + - "magnolriffianskaromboromanirotumänskarusynrovianskaarumänskarwasandaweja" + - "kutiskasamaritanskasamburusasaksantalisaurashtrangambaysangusicilianskas" + - "kotskasassaresisk sardiskasydkurdiskasenecasenaseriselkupGao-songhayforn" + - "iriskasamogitiskatachelhitshanChad-arabiskasidamolågsilesiskaselayarsyds" + - "amiskalulesamiskaenaresamiskaskoltsamiskasoninkesogdiskasranan tongosere" + - "rsahosaterfrisiskasukumasususumeriskashimaoréklassisk syriskasyriskasile" + - "siskatulutemnetesoterenotetumtigrétivitokelauiskatsakhurklingonskatlingi" + - "ttalyshtamasheknyasatonganskatok pisinturoyotarokotsakodiskatsimshianmus" + - "limsk tatariskatumbukatuvaluanskatasawaqtuviniskacentralmarockansk tamaz" + - "ightudmurtiskaugaritiskaumbundurotvajvenetianskavepsvästflamländskaMain-" + - "frankiskavotiskavõruvunjowalsertyskawalamowaraywashowarlpiriwukalmuckisk" + - "amingrelianskalusogakiyaojapetiskayangbenbamileké-jembanheengatukantones" + - "iskazapotekblissymbolerzeeländskazenagamarockansk standard-tamazightzuni" + - "inget språkligt innehållzazaiskamodern standardarabiskaösterrikisk tyska" + - "schweizisk högtyskaaustralisk engelskakanadensisk engelskabrittisk engel" + - "skaamerikansk engelskalatinamerikansk spanskaeuropeisk spanskamexikansk " + - "spanskakanadensisk franskaschweizisk franskalågsaxiskaflamländskabrasili" + - "ansk portugisiskaeuropeisk portugisiskamoldaviskaserbokroatiskaKongo-swa" + - "hiliförenklad kinesiskatraditionell kinesiska" - -var svLangIdx = []uint16{ // 610 elements + "anskacreetjeckiskakyrkslaviskatjuvasjiskawalesiskadanskatyskadivehidzong" + + "khaewegrekiskaengelskaesperantospanskaestniskabaskiskapersiskafulanifins" + + "kafijianskafäröiskafranskavästfrisiskairiskaskotsk gäliskagaliciskaguara" + + "nígujaratimanxhausahebreiskahindihirimotukroatiskahaitiskaungerskaarmeni" + + "skahererointerlinguaindonesiskainterlingueigboszezuan iinupiakidoisländs" + + "kaitalienskainuktitutjapanskajavanesiskageorgiskakikongokikuyukuanyamaka" + + "zakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurdiskak" + + "omekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalaotiska" + + "litauiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonskamala" + + "yalammongoliskamarathimalajiskamaltesiskaburmesiskanaurunordndebelenepal" + + "esiskandonganederländskanynorskabokmålsydndebelenavahonyanjaoccitanskaod" + + "jibwaoromooriyaossetiskapunjabipalipolskaafghanskaportugisiskaquechuarät" + + "oromanskarundirumänskaryskakinjarwandasanskritsardinskasindhinordsamiska" + + "sangosingalesiskaslovakiskaslovenskasamoanskashonasomaliskaalbanskaserbi" + + "skaswatisydsothosundanesiskasvenskaswahilitamiltelugutadzjikiskathailänd" + + "skatigrinjaturkmeniskatswanatonganskaturkiskatsongatatariskatahitiskauig" + + "uriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallonskawolofxhosa" + + "jiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmeadygeiskatunisi" + + "sk arabiskaafrihiliaghemainuakkadiskaAlabama-muskogeealeutiskagegiskasyd" + + "altaiskafornengelskaangikaarameiskamapudungunaraoniskaarapahoalgerisk ar" + + "abiskaarawakiskamarockansk arabiskaegyptisk arabiskaasuamerikanskt tecke" + + "nspråkasturiskakotavaawadhibaluchiskabalinesiskabayerskabasabamunskabata" + + "k-tobaghomalabejabembabetawiskabenabafutbagadavästbaluchiskabhojpuribiko" + + "lbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahuiskabodobakoss" + + "iburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayugaatsamcebuano" + + "chigachibchachagataichuukesiskamariskachinookchoctawchipewyancherokesisk" + + "acheyennesoranisk kurdiskakoptiskakapisnonkrimtatariskaseychellisk kreol" + + "kasjubiskadakotadarginskataitadelawareslavejdogribdinkazarmadogrilågsorb" + + "iskacentraldusundualamedelnederländskajola-fonyidyuladazagaembuefikemili" + + "skafornegyptiskaekajukelamitiskamedelengelskacentralalaskisk jupiskaewon" + + "doextremaduriskafangfilippinskameänkielifonspråketcajun-franskamedelfran" + + "skafornfranskafrankoprovensalskanordfrisiskaöstfrisiskafriulianskagãgaga" + + "uziskagangayogbayazoroastrisk darietiopiskagilbertiskagilakimedelhögtysk" + + "afornhögtyskaGoa-konkanigondigorontalogotiskagreboforngrekiskaschweizert" + + "yskawayuufarefaregusiigwichinhaidahakkahawaiiskaFiji-hindihiligaynonhett" + + "itiskahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjiskaingriska" + + "jamaikansk engelsk kreollojbanngombakimashamijudisk persiskajudisk arabi" + + "skajylländskakarakalpakiskakabyliskakachinjjukambakawikabardinskakanembu" + + "tyapmakondekapverdiskakenjangkorokaingangkhasikhotanesiskaTimbuktu-songh" + + "oykhowarkirmanjkimkakokalenjinkimbundukomi-permjakiskakonkanikosreanskak" + + "pellekarachay-balkarkriokinaray-akarelskakurukhkisambaabafiakölniskakumy" + + "kiskakutenajladinolangilahndalambalezghienlingua franca novaliguriskaliv" + + "oniskalakotalombardiskamongolozinordlurilettgalliskaluba-lulualuiseñolun" + + "daluolushailuhyalitterär kineiskalaziskamaduresiskamafamagahimaithilimak" + + "asarmandemassajiskamabamoksjamandarmendemerumauritansk kreolmedeliriskam" + + "akhuwa-meettometa’mi’kmaqminangkabaumanchuriskamanipurimohawkmossivästma" + + "riskamundangflera språkmuskogeemirandesiskamarwarimentawaimyeneerjyamaza" + + "nderanimin nannapolitanskanamalågtyskanewariskaniasniueanskaao-nagakwasi" + + "obamileké-ngiemboonnogaifornnordiskanovialn-kånordsothonuerklassisk newa" + + "riskanyamwezinyankolenyoronzimaosageottomanskapangasinanmedelpersiskapam" + + "pangapapiamentopalaupikardiskaNigeria-pidginPennsylvaniatyskamennonitisk" + + " lågtyskafornpersiskaPfalz-tyskafeniciskapiemontesiskapontiskapohnpeiska" + + "fornpreussiskafornprovensalskaquichéChimborazo-höglandskichwarajasthanir" + + "apanuirarotonganskaromagnolriffianskaromboromanirotumänskarusynrovianska" + + "arumänskarwasandawejakutiskasamaritanskasamburusasaksantalisaurashtranga" + + "mbaysangusicilianskaskotskasassaresisk sardiskasydkurdiskasenecasenaseri" + + "selkupGao-songhayforniriskasamogitiskatachelhitshanTchad-arabiskasidamol" + + "ågsilesiskaselayarsydsamiskalulesamiskaenaresamiskaskoltsamiskasoninkes" + + "ogdiskasranan tongoserersahosaterfrisiskasukumasususumeriskashimaoréklas" + + "sisk syriskasyriskasilesiskatulutemnetesoterenotetumtigrétivitokelauiska" + + "tsakhurklingonskatlingittalyshtamasheknyasatonganskatok pisinturoyotarok" + + "otsakodiskatsimshianmuslimsk tatariskatumbukatuvaluanskatasawaqtuviniska" + + "centralmarockansk tamazightudmurtiskaugaritiskaumbundurotvajvenetianskav" + + "epsvästflamländskaMain-frankiskavotiskavõruvunjowalsertyskawalamowaraywa" + + "showarlpiriwukalmuckiskamingrelianskalusogakiyaojapetiskayangbenbamileké" + + "-jembanheengatukantonesiskazapotekblissymbolerzeeländskazenagamarockansk" + + " standard-tamazightzuniinget språkligt innehållzazaiskamodern standardar" + + "abiskaösterrikisk tyskaschweizisk högtyskaaustralisk engelskakanadensisk" + + " engelskabrittisk engelskaamerikansk engelskalatinamerikansk spanskaeuro" + + "peisk spanskamexikansk spanskakanadensisk franskaschweizisk franskalågsa" + + "xiskaflamländskabrasiliansk portugisiskaeuropeisk portugisiskamoldaviska" + + "serbokroatiskaKongo-swahiliförenklad kinesiskatraditionell kinesiska" + +var svLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, 0x0041, 0x004c, 0x0054, 0x005a, 0x0069, 0x0074, 0x007c, 0x0086, 0x008d, 0x0094, 0x009b, 0x00a5, 0x00ae, 0x00b6, 0x00c0, 0x00ca, 0x00d2, 0x00dd, 0x00e1, 0x00ea, 0x00f6, 0x0101, 0x010a, 0x0110, - 0x0115, 0x011b, 0x0127, 0x012a, 0x0132, 0x013a, 0x0143, 0x014a, - 0x0152, 0x015a, 0x0162, 0x0168, 0x016e, 0x0177, 0x0181, 0x0188, - 0x0195, 0x019b, 0x01aa, 0x01b3, 0x01bb, 0x01c3, 0x01c7, 0x01cc, - 0x01d5, 0x01da, 0x01e2, 0x01eb, 0x01f3, 0x01fb, 0x0204, 0x020a, + 0x0115, 0x011b, 0x0123, 0x0126, 0x012e, 0x0136, 0x013f, 0x0146, + 0x014e, 0x0156, 0x015e, 0x0164, 0x016a, 0x0173, 0x017d, 0x0184, + 0x0191, 0x0197, 0x01a6, 0x01af, 0x01b7, 0x01bf, 0x01c3, 0x01c8, + 0x01d1, 0x01d6, 0x01de, 0x01e7, 0x01ef, 0x01f7, 0x0200, 0x0206, // Entry 40 - 7F - 0x0215, 0x0220, 0x022b, 0x022f, 0x0238, 0x023f, 0x0242, 0x024c, - 0x0256, 0x025f, 0x0267, 0x0272, 0x027b, 0x0282, 0x0288, 0x0290, - 0x0299, 0x02a6, 0x02b2, 0x02b9, 0x02c2, 0x02c8, 0x02d3, 0x02db, - 0x02df, 0x02e7, 0x02f1, 0x02f6, 0x0303, 0x030a, 0x0315, 0x031c, - 0x0324, 0x032d, 0x0339, 0x0341, 0x034d, 0x0359, 0x035e, 0x0368, - 0x0371, 0x037b, 0x0382, 0x038b, 0x0395, 0x039f, 0x03a4, 0x03af, - 0x03ba, 0x03c0, 0x03cd, 0x03d5, 0x03e3, 0x03ed, 0x03f3, 0x03f9, - 0x0403, 0x040a, 0x040f, 0x0414, 0x041d, 0x0424, 0x0428, 0x042e, + 0x0211, 0x021c, 0x0227, 0x022b, 0x0234, 0x023b, 0x023e, 0x0248, + 0x0252, 0x025b, 0x0263, 0x026e, 0x0277, 0x027e, 0x0284, 0x028c, + 0x0295, 0x02a2, 0x02ae, 0x02b5, 0x02be, 0x02c4, 0x02cf, 0x02d7, + 0x02db, 0x02e3, 0x02ed, 0x02f2, 0x02ff, 0x0306, 0x0311, 0x0318, + 0x0320, 0x0329, 0x0335, 0x033d, 0x0349, 0x0355, 0x035a, 0x0364, + 0x036d, 0x0377, 0x037e, 0x0387, 0x0391, 0x039b, 0x03a0, 0x03ab, + 0x03b6, 0x03bc, 0x03c9, 0x03d1, 0x03d8, 0x03e2, 0x03e8, 0x03ee, + 0x03f8, 0x03ff, 0x0404, 0x0409, 0x0412, 0x0419, 0x041d, 0x0423, // Entry 80 - BF - 0x0437, 0x0443, 0x044a, 0x0457, 0x045c, 0x0465, 0x046a, 0x0475, - 0x047d, 0x0485, 0x048b, 0x0496, 0x049b, 0x04a7, 0x04b1, 0x04ba, - 0x04c3, 0x04c8, 0x04d1, 0x04d9, 0x04e1, 0x04e6, 0x04ee, 0x04fa, - 0x0501, 0x0508, 0x050d, 0x0516, 0x0521, 0x052d, 0x0535, 0x0540, - 0x0546, 0x054f, 0x0557, 0x055d, 0x0566, 0x056f, 0x0578, 0x0581, - 0x0585, 0x058e, 0x0593, 0x05a0, 0x05a8, 0x05b1, 0x05b6, 0x05bb, - 0x05c3, 0x05c9, 0x05cf, 0x05d8, 0x05dc, 0x05e7, 0x05ed, 0x05f4, - 0x05fd, 0x060e, 0x0616, 0x061b, 0x061f, 0x0628, 0x0638, 0x0641, + 0x042c, 0x0438, 0x043f, 0x044c, 0x0451, 0x045a, 0x045f, 0x046a, + 0x0472, 0x047b, 0x0481, 0x048c, 0x0491, 0x049d, 0x04a7, 0x04b0, + 0x04b9, 0x04be, 0x04c7, 0x04cf, 0x04d7, 0x04dc, 0x04e4, 0x04f0, + 0x04f7, 0x04fe, 0x0503, 0x0509, 0x0514, 0x0520, 0x0528, 0x0533, + 0x0539, 0x0542, 0x054a, 0x0550, 0x0559, 0x0562, 0x056b, 0x0574, + 0x0578, 0x0581, 0x0586, 0x0593, 0x059b, 0x05a4, 0x05a9, 0x05ae, + 0x05b6, 0x05bc, 0x05c2, 0x05cb, 0x05cf, 0x05da, 0x05e0, 0x05e7, + 0x05f0, 0x0601, 0x0609, 0x060e, 0x0612, 0x061b, 0x062b, 0x0634, // Entry C0 - FF - 0x0648, 0x0653, 0x065f, 0x0665, 0x066e, 0x0678, 0x0681, 0x0688, - 0x0699, 0x06a3, 0x06b6, 0x06c7, 0x06ca, 0x06e2, 0x06eb, 0x06f1, - 0x06f7, 0x0701, 0x070c, 0x0714, 0x0718, 0x0720, 0x072a, 0x0731, - 0x0735, 0x073a, 0x0743, 0x0747, 0x074c, 0x0752, 0x0761, 0x0769, - 0x076e, 0x0772, 0x077c, 0x0783, 0x078a, 0x0795, 0x079e, 0x07a2, - 0x07ab, 0x07af, 0x07b6, 0x07c1, 0x07cc, 0x07d2, 0x07d6, 0x07de, - 0x07e3, 0x07ec, 0x07f2, 0x07f7, 0x07fe, 0x0803, 0x080a, 0x0812, - 0x081d, 0x0824, 0x082b, 0x0832, 0x083b, 0x0847, 0x084f, 0x0860, + 0x063b, 0x0646, 0x0652, 0x0658, 0x0661, 0x066b, 0x0674, 0x067b, + 0x068c, 0x068c, 0x0696, 0x06a9, 0x06ba, 0x06bd, 0x06d5, 0x06de, + 0x06e4, 0x06ea, 0x06f4, 0x06ff, 0x0707, 0x070b, 0x0713, 0x071d, + 0x0724, 0x0728, 0x072d, 0x0736, 0x073a, 0x073f, 0x0745, 0x0754, + 0x075c, 0x0761, 0x0765, 0x076f, 0x0776, 0x077d, 0x0788, 0x0791, + 0x0795, 0x079e, 0x07a2, 0x07a9, 0x07b4, 0x07bf, 0x07c5, 0x07c9, + 0x07d1, 0x07d6, 0x07df, 0x07e5, 0x07ea, 0x07f1, 0x07f6, 0x07fd, + 0x0805, 0x0810, 0x0817, 0x081e, 0x0825, 0x082e, 0x083a, 0x0842, // Entry 100 - 13F - 0x0868, 0x0870, 0x087d, 0x0887, 0x088d, 0x0896, 0x089b, 0x08a3, - 0x08a9, 0x08af, 0x08b4, 0x08b9, 0x08be, 0x08ca, 0x08d6, 0x08db, - 0x08ed, 0x08f7, 0x08fc, 0x0902, 0x0906, 0x090a, 0x0912, 0x091f, - 0x0925, 0x092f, 0x093c, 0x0953, 0x0959, 0x0967, 0x096b, 0x0976, - 0x0980, 0x098b, 0x0998, 0x09a4, 0x09af, 0x09c1, 0x09cd, 0x09d9, - 0x09e4, 0x09e7, 0x09f1, 0x09f4, 0x09f8, 0x09fd, 0x0a0d, 0x0a16, - 0x0a21, 0x0a27, 0x0a35, 0x0a42, 0x0a4d, 0x0a52, 0x0a5b, 0x0a62, - 0x0a67, 0x0a73, 0x0a81, 0x0a86, 0x0a8e, 0x0a93, 0x0a9a, 0x0a9f, + 0x0853, 0x085b, 0x0863, 0x0870, 0x0881, 0x088b, 0x0891, 0x089a, + 0x089f, 0x08a7, 0x08ad, 0x08b3, 0x08b8, 0x08bd, 0x08c2, 0x08ce, + 0x08da, 0x08df, 0x08f1, 0x08fb, 0x0900, 0x0906, 0x090a, 0x090e, + 0x0916, 0x0923, 0x0929, 0x0933, 0x0940, 0x0957, 0x095d, 0x096b, + 0x096f, 0x097a, 0x0984, 0x098f, 0x099c, 0x09a8, 0x09b3, 0x09c5, + 0x09d1, 0x09dd, 0x09e8, 0x09eb, 0x09f5, 0x09f8, 0x09fc, 0x0a01, + 0x0a11, 0x0a1a, 0x0a25, 0x0a2b, 0x0a39, 0x0a46, 0x0a51, 0x0a56, + 0x0a5f, 0x0a66, 0x0a6b, 0x0a77, 0x0a85, 0x0a8a, 0x0a92, 0x0a97, // Entry 140 - 17F - 0x0aa4, 0x0aad, 0x0ab7, 0x0ac1, 0x0acb, 0x0ad6, 0x0ae2, 0x0ae7, - 0x0aeb, 0x0af2, 0x0af8, 0x0afd, 0x0b07, 0x0b0f, 0x0b27, 0x0b2d, - 0x0b33, 0x0b3c, 0x0b4b, 0x0b5a, 0x0b65, 0x0b73, 0x0b7c, 0x0b82, - 0x0b85, 0x0b8a, 0x0b8e, 0x0b99, 0x0ba0, 0x0ba4, 0x0bab, 0x0bb6, - 0x0bbd, 0x0bc1, 0x0bc9, 0x0bce, 0x0bda, 0x0bea, 0x0bf0, 0x0bf9, - 0x0bfe, 0x0c06, 0x0c0e, 0x0c1e, 0x0c25, 0x0c2f, 0x0c35, 0x0c44, - 0x0c48, 0x0c51, 0x0c59, 0x0c5f, 0x0c67, 0x0c6c, 0x0c75, 0x0c7e, - 0x0c85, 0x0c8b, 0x0c90, 0x0c96, 0x0c9b, 0x0ca3, 0x0cb5, 0x0cbe, + 0x0a9e, 0x0aa3, 0x0aa8, 0x0ab1, 0x0abb, 0x0ac5, 0x0acf, 0x0ada, + 0x0ae6, 0x0aeb, 0x0aef, 0x0af6, 0x0afc, 0x0b01, 0x0b0b, 0x0b13, + 0x0b2b, 0x0b31, 0x0b37, 0x0b40, 0x0b4f, 0x0b5e, 0x0b69, 0x0b77, + 0x0b80, 0x0b86, 0x0b89, 0x0b8e, 0x0b92, 0x0b9d, 0x0ba4, 0x0ba8, + 0x0baf, 0x0bba, 0x0bc1, 0x0bc5, 0x0bcd, 0x0bd2, 0x0bde, 0x0bee, + 0x0bf4, 0x0bfd, 0x0c02, 0x0c0a, 0x0c12, 0x0c22, 0x0c29, 0x0c33, + 0x0c39, 0x0c48, 0x0c4c, 0x0c55, 0x0c5d, 0x0c63, 0x0c6b, 0x0c70, + 0x0c79, 0x0c82, 0x0c89, 0x0c8f, 0x0c94, 0x0c9a, 0x0c9f, 0x0ca7, // Entry 180 - 1BF - 0x0cc7, 0x0ccd, 0x0cd8, 0x0cdd, 0x0ce1, 0x0ce9, 0x0cf5, 0x0cff, - 0x0d07, 0x0d0c, 0x0d0f, 0x0d15, 0x0d1a, 0x0d2c, 0x0d33, 0x0d3e, - 0x0d42, 0x0d48, 0x0d50, 0x0d57, 0x0d5c, 0x0d66, 0x0d6a, 0x0d70, - 0x0d76, 0x0d7b, 0x0d7f, 0x0d8f, 0x0d9a, 0x0da8, 0x0daf, 0x0db8, - 0x0dc3, 0x0dce, 0x0dd6, 0x0ddc, 0x0de1, 0x0ded, 0x0df4, 0x0e00, - 0x0e08, 0x0e14, 0x0e1b, 0x0e23, 0x0e28, 0x0e2d, 0x0e38, 0x0e3f, - 0x0e4b, 0x0e4f, 0x0e58, 0x0e61, 0x0e65, 0x0e6e, 0x0e75, 0x0e7b, - 0x0e8e, 0x0e93, 0x0e9f, 0x0ea5, 0x0eaa, 0x0eb3, 0x0eb7, 0x0ec9, + 0x0cb9, 0x0cc2, 0x0ccb, 0x0cd1, 0x0cdc, 0x0ce1, 0x0ce5, 0x0ced, + 0x0cf9, 0x0d03, 0x0d0b, 0x0d10, 0x0d13, 0x0d19, 0x0d1e, 0x0d30, + 0x0d37, 0x0d42, 0x0d46, 0x0d4c, 0x0d54, 0x0d5b, 0x0d60, 0x0d6a, + 0x0d6e, 0x0d74, 0x0d7a, 0x0d7f, 0x0d83, 0x0d93, 0x0d9e, 0x0dac, + 0x0db3, 0x0dbc, 0x0dc7, 0x0dd2, 0x0dda, 0x0de0, 0x0de5, 0x0df1, + 0x0df8, 0x0e04, 0x0e0c, 0x0e18, 0x0e1f, 0x0e27, 0x0e2c, 0x0e31, + 0x0e3c, 0x0e43, 0x0e4f, 0x0e53, 0x0e5c, 0x0e65, 0x0e69, 0x0e72, + 0x0e79, 0x0e7f, 0x0e92, 0x0e97, 0x0ea3, 0x0ea9, 0x0eae, 0x0eb7, // Entry 1C0 - 1FF - 0x0ed1, 0x0ed9, 0x0ede, 0x0ee3, 0x0ee8, 0x0ef2, 0x0efc, 0x0f09, - 0x0f11, 0x0f1b, 0x0f20, 0x0f2a, 0x0f3b, 0x0f50, 0x0f5c, 0x0f67, - 0x0f70, 0x0f7d, 0x0f85, 0x0f8b, 0x0f99, 0x0fa9, 0x0fb0, 0x0fca, - 0x0fd4, 0x0fdb, 0x0fe8, 0x0ff0, 0x0ffa, 0x0fff, 0x1005, 0x1010, - 0x1015, 0x101e, 0x1028, 0x102b, 0x1032, 0x103b, 0x1047, 0x104e, - 0x1053, 0x105a, 0x1064, 0x106b, 0x1070, 0x107b, 0x1082, 0x1096, - 0x10a1, 0x10a7, 0x10ab, 0x10af, 0x10b5, 0x10c0, 0x10ca, 0x10d5, - 0x10de, 0x10e2, 0x10ef, 0x10f5, 0x1102, 0x1109, 0x1113, 0x111e, + 0x0ebb, 0x0ecd, 0x0ed5, 0x0edd, 0x0ee2, 0x0ee7, 0x0eec, 0x0ef6, + 0x0f00, 0x0f0d, 0x0f15, 0x0f1f, 0x0f24, 0x0f2e, 0x0f3c, 0x0f4d, + 0x0f62, 0x0f6e, 0x0f79, 0x0f82, 0x0f8f, 0x0f97, 0x0fa1, 0x0faf, + 0x0fbf, 0x0fc6, 0x0fe0, 0x0fea, 0x0ff1, 0x0ffe, 0x1006, 0x1010, + 0x1015, 0x101b, 0x1026, 0x102b, 0x1034, 0x103e, 0x1041, 0x1048, + 0x1051, 0x105d, 0x1064, 0x1069, 0x1070, 0x107a, 0x1081, 0x1086, + 0x1091, 0x1098, 0x10ac, 0x10b7, 0x10bd, 0x10c1, 0x10c5, 0x10cb, + 0x10d6, 0x10e0, 0x10eb, 0x10f4, 0x10f8, 0x1106, 0x110c, 0x1119, // Entry 200 - 23F - 0x112a, 0x1136, 0x113d, 0x1145, 0x1151, 0x1156, 0x115a, 0x1167, - 0x116d, 0x1171, 0x117a, 0x1183, 0x1193, 0x119a, 0x11a3, 0x11a7, - 0x11ac, 0x11b0, 0x11b6, 0x11bb, 0x11c1, 0x11c5, 0x11d0, 0x11d7, - 0x11e1, 0x11e8, 0x11ee, 0x11f6, 0x1204, 0x120d, 0x1213, 0x1219, - 0x1223, 0x122c, 0x123e, 0x1245, 0x1250, 0x1257, 0x1260, 0x127b, - 0x1285, 0x128f, 0x1296, 0x1299, 0x129c, 0x12a7, 0x12ab, 0x12bc, - 0x12ca, 0x12d1, 0x12d6, 0x12db, 0x12e6, 0x12ec, 0x12f1, 0x12f6, - 0x12fe, 0x1300, 0x130b, 0x1318, 0x131e, 0x1323, 0x132c, 0x1333, + 0x1120, 0x112a, 0x1135, 0x1141, 0x114d, 0x1154, 0x115c, 0x1168, + 0x116d, 0x1171, 0x117e, 0x1184, 0x1188, 0x1191, 0x119a, 0x11aa, + 0x11b1, 0x11ba, 0x11be, 0x11c3, 0x11c7, 0x11cd, 0x11d2, 0x11d8, + 0x11dc, 0x11e7, 0x11ee, 0x11f8, 0x11ff, 0x1205, 0x120d, 0x121b, + 0x1224, 0x122a, 0x1230, 0x123a, 0x1243, 0x1255, 0x125c, 0x1267, + 0x126e, 0x1277, 0x1292, 0x129c, 0x12a6, 0x12ad, 0x12b0, 0x12b3, + 0x12be, 0x12c2, 0x12d3, 0x12e1, 0x12e8, 0x12ed, 0x12f2, 0x12fd, + 0x1303, 0x1308, 0x130d, 0x1315, 0x1317, 0x1322, 0x132f, 0x1335, // Entry 240 - 27F - 0x1342, 0x134b, 0x1357, 0x135e, 0x136a, 0x1375, 0x137b, 0x1398, - 0x139c, 0x13b6, 0x13be, 0x13d5, 0x13d5, 0x13e7, 0x13fb, 0x140e, - 0x1422, 0x1433, 0x1446, 0x145d, 0x146e, 0x147f, 0x147f, 0x1492, - 0x14a4, 0x14af, 0x14bb, 0x14d3, 0x14e9, 0x14f3, 0x1501, 0x150e, - 0x1522, 0x1538, -} // Size: 1244 bytes - -var swLangStr string = "" + // Size: 2426 bytes - "KiabkhaziKiafrikanaKiakaniKiamhariKiarabuKiassamKiaimaraKiazabajaniKibas" + - "hkirKibelarusiKibulgariaKibambaraKibengaliKitibetiKibretoniKibosniaKikat" + - "alaniKichecheniaKikosikaniKichekiKichuvashKiwelisiKidenmakiKijerumaniKid" + - "ivehiKizongkhaKieweKigirikiKiingerezaKiesperantoKihispaniaKiestoniaKibas" + - "queKiajemiKifiniKifijiKifaroeKifaransaKifrisia cha MagharibiKiayalandiKi" + - "gaeli cha UskotiKigalisiKiguaraniKigujaratiKimanxKihausaKiebraniaKihindi" + - "KroeshiaKihaitiKihungariKiarmeniaKiintalinguaKiindonesiaKiigboSichuan Yi" + - "KiaisilandiKiitalianoKiinuktitutKijapaniKijavaKijojiaKikongoKikikuyuKika" + - "zakiKikalaallisutKikambodiaKikannadaKikoreaKikashmiriKikurdiKikomiKikorn" + - "iKikirigiziKilatiniKilasembagiKigandaKilingalaKilaosiKilithuaniaKiluba-K" + - "atangaKilatviaMalagasiKimaoriKimasedoniaKimalayalamKimongoliaKimarathiKi" + - "malesiaKimaltaKiburmaKindebele cha KaskaziniKinepaliKiholanziKinorwe Kip" + - "yaKibokmal cha NorweKinyanjaKiokitaniKioromoKioriyaKiosetiaKipunjabiKipo" + - "landiKipashtoKirenoKiquechuaKiromanshiKirundiKiromaniaKirusiKinyarwandaK" + - "isanskritiKisindhiKisami cha KaskaziniKisangoKisinhalaKislovakiaKisloven" + - "iaKisamoaKishonaKisomaliKialbaniaKiserbiaKiswatiKisotho cha KusiniKisund" + - "aKiswidiKiswahiliKitamilKiteluguKitajikiKitailandiKitigrinyaKiturukimeni" + - "KitswanaKitongaKiturukiKitsongaKitatariKitahitiKiuyghurKiukraniaKiurduKi" + - "uzbekiKivendaKivietinamuKiwolofuKixhosaKiyidiKiyorubaKichinaKizuluKiakol" + - "iKiaghemKimapucheKiarabu cha KialjeriaKiarabu cha MisriKiasuKibembaKiben" + - "aKibalochi cha MagharibiKibodoKichigaKicherokeeKikurdi cha SoraniKitaita" + - "KizarmaKidolnoserbskiKidualaKijola-FonyiKiembuKiefikiKifilipinoKigaKigag" + - "auziKiyunaniKijerumani cha UswisiKikisiiKihawaiKihitihsbKingombaKimacham" + - "eKikabyliaKikambaKimakondeKikabuverdianuKikoroKikoyra ChiiniKikalenjinKi" + - "mbunduKikomipermyakKikonkaniKisambaaKibafiaKirangiChilambaKilakotaKilozi" + - "Kiluri cha KaskaziniKiluba-LuluaKijaluoKiluhyaKimagahiKimaasaiKimeruKimo" + - "riseniKimakhuwa-MeettoKimetaKimohokiKimundangKimazanderaniKinamandsKinew" + - "ariKikwasioN’KoKisotho cha KaskaziniKinuerKinewari cha kaleKinyankoleKʼi" + - "cheʼKiromboKirwoKisamburuKisanguKikurdi cha KusiniKisenaKoyraboro SenniK" + - "itachelhitKisami cha KusiniKisami cha LuleKisami cha InariKisami cha Sko" + - "ltKisukumaKitesoKitetumKiklingoniKitokpisinKitumbukaKitasawaqCentral Atl" + - "as TamazightLugha IsiyojulikanaKivaiKivunjoKiwarlpiriKisogaKiyaoTamaziti" + - " Msingi ya KimorokoHakuna maudhui ya lughaKiarabu Sanifu cha KisasaKingw" + - "anaKichina (Kilichorahisishwa)Kichina cha Jadi" - -var swLangIdx = []uint16{ // 610 elements + 0x133a, 0x1343, 0x134a, 0x1359, 0x1362, 0x136e, 0x1375, 0x1381, + 0x138c, 0x1392, 0x13af, 0x13b3, 0x13cd, 0x13d5, 0x13ec, 0x13ec, + 0x13fe, 0x1412, 0x1425, 0x1439, 0x144a, 0x145d, 0x1474, 0x1485, + 0x1496, 0x1496, 0x14a9, 0x14bb, 0x14c6, 0x14d2, 0x14ea, 0x1500, + 0x150a, 0x1518, 0x1525, 0x1539, 0x154f, +} // Size: 1250 bytes + +const swLangStr string = "" + // Size: 3904 bytes + "KiafarKiabkhaziKiafrikanaKiakaniKiamhariKiaragoniKiarabuKiassamKiavariKi" + + "aymaraKiazerbaijaniKibashkirKibelarusiKibulgariaKibislamaKibambaraKibeng" + + "aliKitibetiKibretoniKibosniaKikatalaniKichecheniaKichamorroKikosikaniKic" + + "hekiKislovakia cha ChurchKichuvashKiwelisiKidenmakiKijerumaniKidivehiKiz" + + "ongkhaKieweKigirikiKiingerezaKiesperantoKihispaniaKiestoniaKibasqueKiaje" + + "miKifulaKifiniKifijiKifaroeKifaransaKifrisia cha MagharibiKiayalandiKiga" + + "eli cha UskotiKigalisiKiguaraniKigujaratiKimanxKihausaKiebraniaKihindiKi" + + "kroeshiaKihaitiKihangariKiarmeniaKihereroKiintalinguaKiindonesiaKiigboSi" + + "chuan YiKiidoKiaisilandiKiitalianoKiinuktitutKijapaniKijavaKijojiaKikong" + + "oKikikuyuKikwanyamaKikazakhKikalaallisutKikambodiaKikannadaKikoreaKikanu" + + "riKikashmiriKikurdiKikomiKikorniKikyrgyzKilatiniKilasembagiKigandaLimbur" + + "gishKilingalaKilaosiKilithuaniaKiluba-KatangaKilatviaKimalagasiKimaoriKi" + + "macedoniaKimalayalamKimongoliaKimarathiKimaleiKimaltaKiburmaKinauruKinde" + + "bele cha KaskaziniKinepaliKindongaKiholanziKinorwe cha NynorskKinorwe ch" + + "a BokmålKindebeleKinavajoKinyanjaKiokitaniKioromoKioriyaKiosetiaKipunjab" + + "iKipolandiKipashtoKirenoKiquechuaKiromanshiKirundiKiromaniaKirusiKinyarw" + + "andaKisanskritiKisardiniaKisindhiKisami cha KaskaziniKisangoKisinhalaKis" + + "lovakiaKisloveniaKisamoaKishonaKisomaliKialbaniaKiserbiaKiswatiKisothoKi" + + "sundaKiswidiKiswahiliKitamilKiteluguKitajikiKitailandiKitigrinyaKituruki" + + "meniKitswanaKitongaKiturukiKitsongaKitatariKitahitiKiuyghurKiukraineKiur" + + "duKiuzbekiKivendaKivietinamuKivolapükWalloonLugha ya WolofKixhosaKiyiddi" + + "KiyorubaKichinaKizuluKiacheniKiakoliKiadangmeKiadygheKiaghemKiainuKialeu" + + "tKialtaiKiingereza cha KaleKiangikaKiaramuKimapucheKiarapahoKiarabu cha " + + "AlgeriaKiarabu cha MisriKiasuKiasturiaKiawadhiKibaliKibasaaKibamunKighom" + + "alaKibejaKibembaKibenaKibafutKibalochi cha MagharibiKibhojpuriKibiniKiko" + + "mKisiksikaKibodoLugha ya BugineseKibuluKiblinKimedumbaKichebuanoKichigaK" + + "ichukisiKimariKichoktaoKicherokeeKicheyeniKikurdi cha SoraniKikhuftiKrio" + + "li ya ShelisheliKidakotaKidaragwaKitaitaKidogribKizarmaKidolnoserbskiKid" + + "ualaKijola-FonyiKijulaKidazagaKiembuKiefikiKimisriKiekajukKiewondoKifili" + + "pinoKifonKifaransa cha KaleKifrisia cha KaskaziniKifrisia cha MasharikiK" + + "ifriulianKigaKigagauzKigbayaKige’ezKikiribatiKigorontaloKiyunaniKijeruma" + + "ni cha UswisiKikisiiGwichʼinKihawaiKihiligaynonKihitiKihmongKisobia cha " + + "Ukanda wa JuuHupaKiibanKiibibioKiilocanoLojbanKingombaKimachameKikabylia" + + "KachinKijjuKikambaKikanembuKityapKimakondeKikabuverdianuKikoroKikhasiKoy" + + "ra ChiiniLugha ya KakoKikalenjinKimbunduKikomi-PermyakKikonkaniKikpelleK" + + "ikarachay-BalkarKarjalaKurukhKisambaaKibafiaKicologneKumykKiladinoKirang" + + "iLambaKilakotaKimongoKiloziKiluri cha KaskaziniKiluba-LuluaKilundaKijalu" + + "oKimizoKiluhyaKimaduraKimafaKimagahiKimaithiliKimakasarKimaasaiKimabaLug" + + "ha ya MokshaKimendeKimeruKimoriseniKimakhuwa-MeettoKimetaMi’kmaqKiminang" + + "kabauKimanipuriLugha ya MohawkKimooreKimundangLugha NyingiKikrikiKierzya" + + "KimazanderaniKinapoliKinamaKisaksoniKinewariKiniueaKikwasioLugha ya Ngie" + + "mboonKinogaiN’KoKisotho cha KaskaziniKinuerKinewari cha kaleKinyamweziKi" + + "nyankoleKinyoroKinzemaKipangasinanKipampangaKipapiamentoKipalauKiajemi c" + + "ha KaleKiprussiaKʼicheʼKirapanuiKirarotongaKiromboKiaromaniaKirwaKisanda" + + "weKisakhaKiaramu cha WasamariaKisamburuKisantaliKingambayKisanguKisicili" + + "aKiskotiKikurdi cha KusiniKisenaKoyraboro SenniKitachelhitKishanKisami c" + + "ha KusiniKisami cha LuleKisami cha InariKisami cha SkoltKisoninkeLugha y" + + "a Sranan TongoKisahoKisukumaKisusuShikomorLugha ya SyriacKitemneKitesoKi" + + "tetumKitigreKiklingoniKitokpisinKitarokoKitumbukaKituvaluKitasawaqKituva" + + "Central Atlas TamazightUdmurtUmbunduRootKivaiKivunjoWalserKiwolayttaKiwa" + + "rayKiwarlpiriKikalmykKisogaKiyaoKiyangbenKiyembaKikantoniTamaziti Sanifu" + + " ya KimorokoKizuniHakuna maudhui ya lughaKizazaKiarabu Sanifu cha Kisasa" + + "Kihispania (Uhispania)Kihispania (Mexico)Kifaransa (Canada)KiflemiKireno" + + " (Brazil)Kiserbia-kroeshiaKingwanaKichina (Kilichorahisishwa)Kichina cha" + + " Jadi" + +var swLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x001a, 0x0022, 0x0022, - 0x0029, 0x0030, 0x0030, 0x0038, 0x0043, 0x004c, 0x0056, 0x0060, - 0x0060, 0x0069, 0x0072, 0x007a, 0x0083, 0x008b, 0x0095, 0x00a0, - 0x00a0, 0x00aa, 0x00aa, 0x00b1, 0x00b1, 0x00ba, 0x00c2, 0x00cb, - 0x00d5, 0x00dd, 0x00e6, 0x00eb, 0x00f3, 0x00fd, 0x0108, 0x0112, - 0x011b, 0x0123, 0x012a, 0x012a, 0x0130, 0x0136, 0x013d, 0x0146, - 0x015c, 0x0166, 0x0178, 0x0180, 0x0189, 0x0193, 0x0199, 0x01a0, - 0x01a9, 0x01b0, 0x01b0, 0x01b8, 0x01bf, 0x01c8, 0x01d1, 0x01d1, + 0x0000, 0x0006, 0x000f, 0x000f, 0x0019, 0x0020, 0x0028, 0x0031, + 0x0038, 0x003f, 0x0046, 0x004e, 0x005b, 0x0064, 0x006e, 0x0078, + 0x0081, 0x008a, 0x0093, 0x009b, 0x00a4, 0x00ac, 0x00b6, 0x00c1, + 0x00cb, 0x00d5, 0x00d5, 0x00dc, 0x00f1, 0x00fa, 0x0102, 0x010b, + 0x0115, 0x011d, 0x0126, 0x012b, 0x0133, 0x013d, 0x0148, 0x0152, + 0x015b, 0x0163, 0x016a, 0x0170, 0x0176, 0x017c, 0x0183, 0x018c, + 0x01a2, 0x01ac, 0x01be, 0x01c6, 0x01cf, 0x01d9, 0x01df, 0x01e6, + 0x01ef, 0x01f6, 0x01f6, 0x0200, 0x0207, 0x0210, 0x0219, 0x0221, // Entry 40 - 7F - 0x01dd, 0x01e8, 0x01e8, 0x01ee, 0x01f8, 0x01f8, 0x01f8, 0x0203, - 0x020d, 0x0218, 0x0220, 0x0226, 0x022d, 0x0234, 0x023c, 0x023c, - 0x0244, 0x0251, 0x025b, 0x0264, 0x026b, 0x026b, 0x0275, 0x027c, - 0x0282, 0x0289, 0x0293, 0x029b, 0x02a6, 0x02ad, 0x02ad, 0x02b6, - 0x02bd, 0x02c8, 0x02d6, 0x02de, 0x02e6, 0x02e6, 0x02ed, 0x02f8, - 0x0303, 0x030d, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d, 0x0344, - 0x034c, 0x034c, 0x0355, 0x0362, 0x0374, 0x0374, 0x0374, 0x037c, - 0x0385, 0x0385, 0x038c, 0x0393, 0x039b, 0x03a4, 0x03a4, 0x03ad, + 0x022d, 0x0238, 0x0238, 0x023e, 0x0248, 0x0248, 0x024d, 0x0258, + 0x0262, 0x026d, 0x0275, 0x027b, 0x0282, 0x0289, 0x0291, 0x029b, + 0x02a3, 0x02b0, 0x02ba, 0x02c3, 0x02ca, 0x02d2, 0x02dc, 0x02e3, + 0x02e9, 0x02f0, 0x02f8, 0x0300, 0x030b, 0x0312, 0x031c, 0x0325, + 0x032c, 0x0337, 0x0345, 0x034d, 0x0357, 0x0357, 0x035e, 0x0369, + 0x0374, 0x037e, 0x0387, 0x038e, 0x0395, 0x039c, 0x03a3, 0x03ba, + 0x03c2, 0x03ca, 0x03d3, 0x03e6, 0x03f9, 0x0402, 0x040a, 0x0412, + 0x041b, 0x041b, 0x0422, 0x0429, 0x0431, 0x043a, 0x043a, 0x0443, // Entry 80 - BF - 0x03b5, 0x03bb, 0x03c4, 0x03ce, 0x03d5, 0x03de, 0x03e4, 0x03ef, - 0x03fa, 0x03fa, 0x0402, 0x0416, 0x041d, 0x0426, 0x0430, 0x043a, - 0x0441, 0x0448, 0x0450, 0x0459, 0x0461, 0x0468, 0x047a, 0x0481, - 0x0488, 0x0491, 0x0498, 0x04a0, 0x04a8, 0x04b2, 0x04bc, 0x04c8, - 0x04d0, 0x04d7, 0x04df, 0x04e7, 0x04ef, 0x04f7, 0x04ff, 0x0508, - 0x050e, 0x0516, 0x051d, 0x0528, 0x0528, 0x0528, 0x0530, 0x0537, - 0x053d, 0x0545, 0x0545, 0x054c, 0x0552, 0x0552, 0x0559, 0x0559, - 0x0559, 0x0559, 0x0559, 0x0560, 0x0560, 0x0560, 0x0560, 0x0560, + 0x044b, 0x0451, 0x045a, 0x0464, 0x046b, 0x0474, 0x047a, 0x0485, + 0x0490, 0x049a, 0x04a2, 0x04b6, 0x04bd, 0x04c6, 0x04d0, 0x04da, + 0x04e1, 0x04e8, 0x04f0, 0x04f9, 0x0501, 0x0508, 0x050f, 0x0516, + 0x051d, 0x0526, 0x052d, 0x0535, 0x053d, 0x0547, 0x0551, 0x055d, + 0x0565, 0x056c, 0x0574, 0x057c, 0x0584, 0x058c, 0x0594, 0x059d, + 0x05a3, 0x05ab, 0x05b2, 0x05bd, 0x05c7, 0x05ce, 0x05dc, 0x05e3, + 0x05ea, 0x05f2, 0x05f2, 0x05f9, 0x05ff, 0x0607, 0x060e, 0x0617, + 0x061f, 0x061f, 0x061f, 0x0626, 0x062c, 0x062c, 0x062c, 0x0633, // Entry C0 - FF - 0x0560, 0x0560, 0x0560, 0x0560, 0x0560, 0x0569, 0x0569, 0x0569, - 0x057e, 0x057e, 0x057e, 0x058f, 0x0594, 0x0594, 0x0594, 0x0594, - 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, - 0x0594, 0x059b, 0x059b, 0x05a1, 0x05a1, 0x05a1, 0x05b8, 0x05b8, - 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, - 0x05b8, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, - 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05c5, 0x05c5, 0x05c5, - 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05cf, 0x05cf, 0x05e1, + 0x0633, 0x063a, 0x064d, 0x0655, 0x065c, 0x0665, 0x0665, 0x066e, + 0x0681, 0x0681, 0x0681, 0x0681, 0x0692, 0x0697, 0x0697, 0x06a0, + 0x06a0, 0x06a8, 0x06a8, 0x06ae, 0x06ae, 0x06b5, 0x06bc, 0x06bc, + 0x06c5, 0x06cb, 0x06d2, 0x06d2, 0x06d8, 0x06df, 0x06df, 0x06f6, + 0x0700, 0x0700, 0x0706, 0x0706, 0x070b, 0x0714, 0x0714, 0x0714, + 0x0714, 0x0714, 0x071a, 0x071a, 0x071a, 0x072b, 0x0731, 0x0737, + 0x0740, 0x0740, 0x0740, 0x0740, 0x0740, 0x074a, 0x0751, 0x0751, + 0x0751, 0x075a, 0x0760, 0x0760, 0x0769, 0x0769, 0x0773, 0x077c, // Entry 100 - 13F - 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e8, 0x05e8, - 0x05e8, 0x05e8, 0x05e8, 0x05ef, 0x05ef, 0x05fd, 0x05fd, 0x0604, - 0x0604, 0x0610, 0x0610, 0x0610, 0x0616, 0x061d, 0x061d, 0x061d, - 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x0627, - 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, - 0x0627, 0x062b, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, - 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, - 0x0634, 0x063c, 0x0651, 0x0651, 0x0651, 0x0658, 0x0658, 0x0658, + 0x078e, 0x0796, 0x0796, 0x0796, 0x07aa, 0x07aa, 0x07b2, 0x07bb, + 0x07c2, 0x07c2, 0x07c2, 0x07ca, 0x07ca, 0x07d1, 0x07d1, 0x07df, + 0x07df, 0x07e6, 0x07e6, 0x07f2, 0x07f8, 0x0800, 0x0806, 0x080d, + 0x080d, 0x0814, 0x081c, 0x081c, 0x081c, 0x081c, 0x0824, 0x0824, + 0x0824, 0x082e, 0x082e, 0x0833, 0x0833, 0x0833, 0x0845, 0x0845, + 0x085b, 0x0871, 0x087b, 0x087f, 0x0887, 0x0887, 0x0887, 0x088e, + 0x088e, 0x0897, 0x08a1, 0x08a1, 0x08a1, 0x08a1, 0x08a1, 0x08a1, + 0x08ac, 0x08ac, 0x08ac, 0x08b4, 0x08c9, 0x08c9, 0x08c9, 0x08d0, // Entry 140 - 17F - 0x0658, 0x065f, 0x065f, 0x065f, 0x0665, 0x0665, 0x0668, 0x0668, - 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, - 0x0670, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0682, 0x0682, - 0x0682, 0x0689, 0x0689, 0x0689, 0x0689, 0x0689, 0x0692, 0x06a0, - 0x06a0, 0x06a6, 0x06a6, 0x06a6, 0x06a6, 0x06b4, 0x06b4, 0x06b4, - 0x06b4, 0x06be, 0x06c6, 0x06d3, 0x06dc, 0x06dc, 0x06dc, 0x06dc, - 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0x06e4, 0x06eb, 0x06eb, 0x06eb, - 0x06eb, 0x06eb, 0x06f2, 0x06f2, 0x06fa, 0x06fa, 0x06fa, 0x06fa, + 0x08d9, 0x08d9, 0x08d9, 0x08e0, 0x08e0, 0x08ec, 0x08f2, 0x08f9, + 0x0912, 0x0912, 0x0916, 0x091c, 0x0924, 0x092d, 0x092d, 0x092d, + 0x092d, 0x0933, 0x093b, 0x0944, 0x0944, 0x0944, 0x0944, 0x0944, + 0x094d, 0x0953, 0x0958, 0x095f, 0x095f, 0x095f, 0x0968, 0x096e, + 0x0977, 0x0985, 0x0985, 0x098b, 0x098b, 0x0992, 0x0992, 0x099e, + 0x099e, 0x099e, 0x09ab, 0x09b5, 0x09bd, 0x09cb, 0x09d4, 0x09d4, + 0x09dc, 0x09ed, 0x09ed, 0x09ed, 0x09f4, 0x09fa, 0x0a02, 0x0a09, + 0x0a12, 0x0a17, 0x0a17, 0x0a1f, 0x0a26, 0x0a26, 0x0a2b, 0x0a2b, // Entry 180 - 1BF - 0x06fa, 0x0702, 0x0702, 0x0702, 0x0708, 0x071c, 0x071c, 0x0728, - 0x0728, 0x0728, 0x072f, 0x072f, 0x0736, 0x0736, 0x0736, 0x0736, - 0x0736, 0x073e, 0x073e, 0x073e, 0x073e, 0x0746, 0x0746, 0x0746, - 0x0746, 0x0746, 0x074c, 0x0756, 0x0756, 0x0766, 0x076c, 0x076c, - 0x076c, 0x076c, 0x076c, 0x0774, 0x0774, 0x0774, 0x077d, 0x077d, - 0x077d, 0x077d, 0x077d, 0x077d, 0x077d, 0x077d, 0x078a, 0x078a, - 0x078a, 0x0790, 0x0793, 0x079b, 0x079b, 0x079b, 0x079b, 0x07a3, - 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a9, 0x07be, 0x07c4, 0x07d5, + 0x0a2b, 0x0a2b, 0x0a2b, 0x0a33, 0x0a33, 0x0a3a, 0x0a40, 0x0a54, + 0x0a54, 0x0a60, 0x0a60, 0x0a67, 0x0a6e, 0x0a74, 0x0a7b, 0x0a7b, + 0x0a7b, 0x0a83, 0x0a89, 0x0a91, 0x0a9b, 0x0aa4, 0x0aa4, 0x0aac, + 0x0ab2, 0x0ac1, 0x0ac1, 0x0ac8, 0x0ace, 0x0ad8, 0x0ad8, 0x0ae8, + 0x0aee, 0x0af7, 0x0b04, 0x0b04, 0x0b0e, 0x0b1d, 0x0b24, 0x0b24, + 0x0b2d, 0x0b39, 0x0b40, 0x0b40, 0x0b40, 0x0b40, 0x0b40, 0x0b47, + 0x0b54, 0x0b54, 0x0b5c, 0x0b62, 0x0b6b, 0x0b73, 0x0b73, 0x0b7a, + 0x0b7a, 0x0b82, 0x0b94, 0x0b9b, 0x0b9b, 0x0b9b, 0x0ba1, 0x0bb6, // Entry 1C0 - 1FF - 0x07d5, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, - 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, - 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07e8, 0x07e8, - 0x07e8, 0x07e8, 0x07e8, 0x07e8, 0x07e8, 0x07ef, 0x07ef, 0x07ef, - 0x07ef, 0x07ef, 0x07ef, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07fd, - 0x07fd, 0x07fd, 0x07fd, 0x07fd, 0x0804, 0x0804, 0x0804, 0x0804, - 0x0816, 0x0816, 0x081c, 0x081c, 0x081c, 0x082b, 0x082b, 0x082b, - 0x0836, 0x0836, 0x0836, 0x0836, 0x0836, 0x0836, 0x0847, 0x0856, + 0x0bbc, 0x0bcd, 0x0bd7, 0x0be1, 0x0be8, 0x0bef, 0x0bef, 0x0bef, + 0x0bfb, 0x0bfb, 0x0c05, 0x0c11, 0x0c18, 0x0c18, 0x0c18, 0x0c18, + 0x0c18, 0x0c28, 0x0c28, 0x0c28, 0x0c28, 0x0c28, 0x0c28, 0x0c31, + 0x0c31, 0x0c3a, 0x0c3a, 0x0c3a, 0x0c43, 0x0c4e, 0x0c4e, 0x0c4e, + 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c5f, 0x0c64, 0x0c6d, + 0x0c74, 0x0c89, 0x0c92, 0x0c92, 0x0c9b, 0x0c9b, 0x0ca4, 0x0cab, + 0x0cb4, 0x0cbb, 0x0cbb, 0x0ccd, 0x0ccd, 0x0cd3, 0x0cd3, 0x0cd3, + 0x0ce2, 0x0ce2, 0x0ce2, 0x0ced, 0x0cf3, 0x0cf3, 0x0cf3, 0x0cf3, // Entry 200 - 23F - 0x0866, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, - 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, - 0x087e, 0x0884, 0x0884, 0x088b, 0x088b, 0x088b, 0x088b, 0x088b, - 0x0895, 0x0895, 0x0895, 0x0895, 0x0895, 0x089f, 0x089f, 0x089f, - 0x089f, 0x089f, 0x089f, 0x08a8, 0x08a8, 0x08b1, 0x08b1, 0x08c8, - 0x08c8, 0x08c8, 0x08c8, 0x08db, 0x08e0, 0x08e0, 0x08e0, 0x08e0, - 0x08e0, 0x08e0, 0x08e0, 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08e7, - 0x08f1, 0x08f1, 0x08f1, 0x08f1, 0x08f7, 0x08fc, 0x08fc, 0x08fc, + 0x0cf3, 0x0d04, 0x0d13, 0x0d23, 0x0d33, 0x0d3c, 0x0d3c, 0x0d51, + 0x0d51, 0x0d57, 0x0d57, 0x0d5f, 0x0d65, 0x0d65, 0x0d6d, 0x0d6d, + 0x0d7c, 0x0d7c, 0x0d7c, 0x0d83, 0x0d89, 0x0d89, 0x0d90, 0x0d97, + 0x0d97, 0x0d97, 0x0d97, 0x0da1, 0x0da1, 0x0da1, 0x0da1, 0x0da1, + 0x0dab, 0x0dab, 0x0db3, 0x0db3, 0x0db3, 0x0db3, 0x0dbc, 0x0dc4, + 0x0dcd, 0x0dd3, 0x0dea, 0x0df0, 0x0df0, 0x0df7, 0x0dfb, 0x0e00, + 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e07, 0x0e0d, + 0x0e17, 0x0e1e, 0x0e1e, 0x0e28, 0x0e28, 0x0e30, 0x0e30, 0x0e36, // Entry 240 - 27F - 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x0917, - 0x0917, 0x092e, 0x092e, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, - 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, - 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x094f, - 0x096a, 0x097a, -} // Size: 1244 bytes - -var taLangStr string = "" + // Size: 12271 bytes + 0x0e3b, 0x0e3b, 0x0e44, 0x0e4b, 0x0e4b, 0x0e54, 0x0e54, 0x0e54, + 0x0e54, 0x0e54, 0x0e6f, 0x0e75, 0x0e8c, 0x0e92, 0x0eab, 0x0eab, + 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0ec1, + 0x0ed4, 0x0ed4, 0x0ee6, 0x0ee6, 0x0ee6, 0x0eed, 0x0efc, 0x0efc, + 0x0efc, 0x0f0d, 0x0f15, 0x0f30, 0x0f40, +} // Size: 1250 bytes + +const taLangStr string = "" + // Size: 12975 bytes "அஃபார்அப்காஜியான்அவெஸ்தான்ஆஃப்ரிகான்ஸ்அகான்அம்ஹாரிக்ஆர்கோனீஸ்அரபிக்அஸ்ஸா" + "மீஸ்அவேரிக்அய்மராஅஸர்பைஜானிபஷ்கிர்பெலாருஷியன்பல்கேரியன்பிஸ்லாமாபம்பாரா" + "வங்காளம்திபெத்தியன்பிரெட்டன்போஸ்னியன்கேட்டலான்செச்சென்சாமோரோகார்சிகன்க" + "்ரீசெக்சர்ச் ஸ்லாவிக்சுவாஷ்வேல்ஷ்டேனிஷ்ஜெர்மன்திவேஹிபூடானிஈவ்கிரேக்கம்" + "ஆங்கிலம்எஸ்பரேன்டோஸ்பானிஷ்எஸ்டோனியன்பாஸ்க்பெர்ஷியன்ஃபுலாஃபின்னிஷ்ஃபிஜி" + - "யன்ஃபரோயிஸ்பிரெஞ்சுமேற்கு ஃப்ரிஷியன்ஐரிஷ்ஸ்காட்ஸ் கேலிக்காலிஸியன்குரான" + - "ிகுஜராத்திமேங்க்ஸ்ஹௌஸாஹீப்ரூஇந்திஹிரி மோட்டுகுரோஷியன்ஹைத்தியன்ஹங்கேரிய" + - "ன்ஆர்மேனியன்ஹெரேரோஇண்டர்லிங்வாஇந்தோனேஷியன்இன்டர்லிங்இக்போசிசுவான் ஈஇனு" + - "பியாக்இடோஐஸ்லேண்டிக்இத்தாலியன்இனுகிடூட்ஜப்பானியம்ஜாவனீஸ்ஜார்ஜியன்காங்க" + - "ோகிகுயூகுவான்யாமாகசாக்கலாலிசூட்கெமெர்கன்னடம்கொரியன்கனுரிகாஷ்மிரிகுர்தி" + - "ஷ்கோமிகார்னிஷ்கிர்கிஸ்லத்தின்லக்ஸம்போர்கிஷ்கான்டாலிம்பர்கிஷ்லிங்காலாலா" + - "வோலிதுவேனியன்லுபா-கடாங்காலாட்வியன்மலகாஸிமார்ஷெலிஷ்மௌரிமாஸிடோனியன்மலையா" + - "ளம்மங்கோலியன்மராத்திமலாய்மால்டிஸ்பர்மீஸ்நவ்ரூவடக்கு தெபெலேநேபாளிதோங்கா" + - "டச்சுநார்வேஜியன் நியூநார்ஸ்க்நார்வேஜியன் பொக்மால்தெற்கு தெபெலேநவாஜோநயன" + - "்ஜாஒக்கிடன்ஓஜிபவாஒரோமோஒரியாஒசெட்டிக்பஞ்சாபிபாலிபோலிஷ்பஷ்தோபோர்ச்சுக்கீ" + - "ஸ்கிவேசுவாரோமான்ஷ்ருண்டிரோமேனியன்ரஷியன்கின்யாருவான்டாசமஸ்கிருதம்சாடினி" + - "யன்சிந்திவடக்கு சமிசாங்கோசிங்களம்ஸ்லோவாக்ஸ்லோவேனியன்ஸாமோவான்ஷோனாசோமாலி" + - "அல்பேனியன்செர்பியன்ஸ்வாடீதெற்கு ஸோதோசுண்டானீஸ்ஸ்வீடிஷ்சுவாஹிலிதமிழ்தெல" + - "ுங்குதாஜிக்தாய்டிக்ரின்யாதுருக்மென்ஸ்வானாடோங்கான்துருக்கிஷ்ஸோங்காடாடர்" + - "டஹிதியான்உய்குர்உக்ரைனியன்உருதுஉஸ்பெக்வென்டாவியட்நாமிஸ்ஒலாபூக்ஒவாலூன்ஒ" + - "லூஃப்ஹோசாஇத்திஷ்யோருபாஜுவாங்சீனம்ஜுலுஆச்சினீஸ்அகோலிஅதாங்மேஅதகேதுனிசிய " + - "அரபுஅஃப்ரிஹிலிஅகெம்ஐனுஅக்கேதியன்அலூட்தெற்கு அல்தைபழைய ஆங்கிலம்அங்கிகாஅ" + - "ராமைக்மபுசேஅரபஹோஅராவாக்அசுஅஸ்துரியன்அவதிபெலுசிபலினீஸ்பாஸாபேஜாபெம்பாபென" + - "ாபடகாமேற்கு பலோச்சிபோஜ்பூரிபிகோல்பினிசிக்சிகாபிஷ்ணுப்பிரியாப்ராஜ்போடோப" + - "ுரியாத்புகினீஸ்ப்லின்கேடோகரீப்ஆட்சம்செபுவானோசிகாசிப்சாஷகதைசூகிசேமாரிசி" + - "னூக் ஜார்கான்சோக்தௌசிபெவ்யான்செரோகீசெயேனிமத்திய குர்திஷ்காப்டிக்கிரிமி" + - "யன் துர்க்கிகஷுபியன்தகோடாதார்குவாடைடாதெலாவேர்ஸ்லாவ்டோக்ரிப்டின்காசார்ம" + - "ாடோக்ரிலோயர் சோர்பியன்டுவாலாமத்திய டச்சுஜோலா-ஃபோன்யிட்யூலாஎம்புஎஃபிக்ப" + - "ண்டைய எகிப்தியன்ஈகாஜுக்எலமைட்மத்திய ஆங்கிலம்எவோன்டோஃபங்க்ஃபிலிபினோஃபான" + - "்மத்திய ஃப்ரென்ச்பழைய ஃப்ரென்ச்வடக்கு ஃப்ரிஸியான்கிழக்கு ஃப்ரிஸியான்ஃப" + - "்ரியூலியன்காகாகௌஸ்கயோபயாகீஜ்கில்பெர்டீஸ்மத்திய ஹை ஜெர்மன்பழைய ஹை ஜெர்ம" + - "ன்கோன்டிகோரோன்டலோகோதிக்க்ரேபோபண்டைய கிரேக்கம்ஜெர்மன் (ஸ்விஸ்)குஸிகுவிச" + - "ின்ஹைடாஹவாயியன்பிஜி இந்திஹிலிகாய்னான்ஹிட்டைட்மாங்க்அப்பர் சோர்பியான்ஹு" + - "பாஇபான்இலோகோஇங்குஷ்லோஜ்பன்நகொம்பாமாசெம்ஜூதேயோ-பெர்ஷியன்ஜூதேயோ-அராபிக்க" + - "ாரா-கல்பாக்கபாய்ல்காசின்ஜ்ஜூகம்பாகாவிகபார்டியன்தையாப்மகொண்டேகபுவெர்திய" + - "ானுகோரோகாஸிகோதானீஸ்கொய்ரா சீனீகலின்ஜின்கிம்புன்துகொமி-பெர்ம்யாக்கொங்கண" + - "ிகோஸ்ரைன்க்பெல்லேகராசே-பல்கார்கரேலியன்குருக்ஷம்பாலாபாஃபியாகும்இக்குடேன" + - "ைலடினோலங்கிலஹன்டாலம்பாலெஜ்ஜியன்லகோடாமோங்கோலோசிவடக்கு லுரிலுபா-லுலுலாலு" + - "ய்சேனோலூன்டாலுயோலுஷய்லுயியாமதுரீஸ்மகாஹிமைதிலிமகாசார்மான்டிங்கோமாசாய்மோ" + - "க்க்ஷாமான்டார்மென்டீமெருமொரிசியன்மத்திய ஐரிஷ்மகுவா-மீட்டோமேடாமிக்மாக்ம" + - "ின்னாங்கபௌமன்சுமனிபூரிமொஹாக்மோஸ்ஸிமுன்டாங்பல மொழிகள்க்ரீக்மிரான்டீஸ்மா" + - "ர்வாரிஏர்ஜியாமசந்தேரனிநியோபோலிடன்நாமாலோ ஜெர்மன்நெவாரிநியாஸ்நியூவான்க்வ" + - "ாசியோநோகைபழைய நோர்ஸ்என்‘கோவடக்கு சோதோநியூர்பாரம்பரிய நேவாரிநியாம்வேஜிந" + - "ியான்கோலேநியோரோநிஜ்மாஓசேஜ்ஒட்டோமன் துர்க்கிபன்காசினன்பாஹ்லவிபம்பாங்காப" + - "பியேமென்டோபலௌவ்ன்பென்சில்வேனிய ஜெர்மன்பழைய பெர்ஷியன்ஃபொனிஷியன்ஃபோன்பெய" + - "ென்பழைய ப்ரோவென்சால்கீசீராஜஸ்தானிரபனுய்ரரோடோங்கன்ரோம்போரோமானிஅரோமானியன" + - "்ருவாசான்டாவேயாகுட்சமாரிடன் அராமைக்சம்புருசாசாக்சான்டாலிசௌராஷ்டிரம்சங்" + - "குசிசிலியன்ஸ்காட்ஸ்தெற்கு குர்திஷ்செனாசெல்குப்கொய்ராபோரோ சென்னிபழைய ஐர" + - "ிஷ்தசேஹித்ஷான்சிடாமோதெற்கு சமிலுலே சமிஇனாரி சமிஸ்கோல்ட் சமிசோனின்கேசோக" + - "்தியன்ஸ்ரானன் டோங்கோசெரெர்சுகுமாசுசுசுமேரியன்கொமோரியன்பாரம்பரிய சிரியா" + - "க்சிரியாக்டிம்னேடெசோடெரெனோடெடும்டைக்ரேடிவ்டோகேலௌக்ளிங்கோன்டிலிங்கிட்டா" + - "மாஷேக்நயாசா டோங்காடோக் பிஸின்ட்ஸிம்ஷியன்தும்புகாடுவாலுடசவாக்டுவினியன்ம" + - "த்திய அட்லஸ் டமசைட்உட்முர்ட்உகாரிட்க்அம்பொண்டுரூட்வைவோட்க்வுன்ஜோவாலாமோ" + - "வாரேவாஷோவல்பிரிகல்மிக்சோகாயாவ்யாபேசிகாண்டோனீஸ்ஜாபோடெக்ப்லிஸ்ஸிம்பால்ஸ்" + - "ஜெனகாஸ்டாண்டர்ட் மொராக்கன் தமாசைட்ஜூனிமொழி உள்ளடக்கம் ஏதுமில்லைஜாஜாநவீ" + - "ன நிலையான அரபிக்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை ஜெர்மன்ஆஸ்திரேலிய ஆங்கிலம்கன" + - "டிய ஆங்கிலம்பிரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்கிலம்ஸ்பானிஷ் (ஐரோப்பா)கனடி" + - "ய பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன்ஃப்லெமிஷ்போர்ச்சுகீஸ் (பிரேசில்)போர்" + - "ச்சுகீஸ் (ஐரோப்பா)மோல்டாவியன்செர்போ-க்ரோஷியன்காங்கோ சுவாஹிலிஎளிதாக்கப்" + - "பட்ட சீனம்பாரம்பரிய சீனம்" - -var taLangIdx = []uint16{ // 610 elements + "யன்ஃபரோயிஸ்பிரெஞ்சுமேற்கு ஃப்ரிஷியன்ஐரிஷ்ஸ்காட்ஸ் கேலிக்காலிஸியன்க்வார" + + "னிகுஜராத்திமேங்க்ஸ்ஹௌஸாஹீப்ரூஇந்திஹிரி மோட்டுகுரோஷியன்ஹைத்தியன் க்ரியோ" + + "லிஹங்கேரியன்ஆர்மேனியன்ஹெரேரோஇன்டர்லிங்வாஇந்தோனேஷியன்இன்டர்லிங்இக்போசிச" + + "ுவான் ஈஇனுபியாக்இடோஐஸ்லேண்டிக்இத்தாலியன்இனுகிடூட்ஜப்பானியம்ஜாவனீஸ்ஜார்" + + "ஜியன்காங்கோகிகுயூகுவான்யாமாகசாக்கலாலிசூட்கெமெர்கன்னடம்கொரியன்கனுரிகாஷ்" + + "மிரிகுர்திஷ்கொமிகார்னிஷ்கிர்கிஸ்லத்தின்லக்ஸம்போர்கிஷ்கான்டாலிம்பர்கிஷ்" + + "லிங்காலாலாவோலிதுவேனியன்லுபா-கடாங்காலாட்வியன்மலகாஸிமார்ஷெலீஸ்மௌரிமாஸிடோ" + + "னியன்மலையாளம்மங்கோலியன்மராத்திமலாய்மால்டிஸ்பர்மீஸ்நவ்ரூவடக்கு தெபெலேநே" + + "பாளிதோங்காடச்சுநார்வேஜியன் நியூநார்ஸ்க்நார்வேஜியன் பொக்மால்தெற்கு தெபெ" + + "லேநவாஜோநயன்ஜாஒக்கிடன்ஒஜிப்வாஒரோமோஒடியாஒசெட்டிக்பஞ்சாபிபாலிபோலிஷ்பஷ்தோப" + + "ோர்ச்சுக்கீஸ்க்வெச்சுவாரோமான்ஷ்ருண்டிரோமேனியன்ரஷியன்கின்யாருவான்டாசமஸ்" + + "கிருதம்சார்தீனியன்சிந்திவடக்கு சமிசாங்கோசிங்களம்ஸ்லோவாக்ஸ்லோவேனியன்சமோ" + + "வான்ஷோனாசோமாலிஅல்பேனியன்செர்பியன்ஸ்வாடீதெற்கு ஸோதோசுண்டானீஸ்ஸ்வீடிஷ்ஸ்" + + "வாஹிலிதமிழ்தெலுங்குதஜிக்தாய்டிக்ரின்யாதுருக்மென்ஸ்வானாடோங்கான்துருக்கி" + + "ஷ்ஸோங்காடாடர்தஹிதியன்உய்குர்உக்ரைனியன்உருதுஉஸ்பெக்வென்டாவியட்நாமீஸ்ஒலா" + + "பூக்ஒவாலூன்ஓலோஃப்ஹோசாயெட்டிஷ்யோருபாஜுவாங்சீனம்ஜுலுஆச்சினீஸ்அகோலிஅதாங்ம" + + "ேஅதகேதுனிசிய அரபுஅஃப்ரிஹிலிஅகெம்ஐனுஅக்கேதியன்அலூட்தெற்கு அல்தைபழைய ஆங்" + + "கிலம்அங்கிகாஅராமைக்மபுச்சேஅரபஹோஅராவாக்அசுஅஸ்துரியன்அவதிபலூச்சிபலினீஸ்ப" + + "ாஸாபேஜாபெம்பாபெனாபடகாமேற்கு பலோச்சிபோஜ்பூரிபிகோல்பினிசிக்சிகாபிஷ்ணுப்ப" + + "ிரியாப்ராஜ்போடோபுரியாத்புகினீஸ்ப்லின்கேடோகரீப்ஆட்சம்செபுவானோசிகாசிப்சா" + + "ஷகதைசூகிசேமாரிசினூக் ஜார்கான்சோக்தௌசிபெவ்யான்செரோகீசெயேனிமத்திய குர்தி" + + "ஷ்காப்டிக்கிரிமியன் துர்க்கிசெசெல்வா க்ரெயோல் பிரெஞ்சுகஷுபியன்டகோடாதார" + + "்குவாடைடாடெலாவர்ஸ்லாவ்டோக்ரிப்டின்காஸார்மாடோக்ரிலோயர் சோர்பியன்டுவாலாம" + + "ிடில் டச்சுஜோலா-ஃபோன்யிட்யூலாடசாகாஎம்புஎஃபிக்பண்டைய எகிப்தியன்ஈகாஜுக்எ" + + "லமைட்மிடில் ஆங்கிலம்எவோன்டோஃபேங்க்ஃபிலிபினோஃபான்மிடில் பிரெஞ்சுபழைய பி" + + "ரெஞ்சுவடக்கு ஃப்ரிஸியான்கிழக்கு ஃப்ரிஸியான்ஃப்ரியூலியன்காகாகௌஸ்கன் சீன" + + "ம்கயோபயாகீஜ்கில்பெர்டீஸ்மிடில் ஹை ஜெர்மன்பழைய ஹை ஜெர்மன்கோன்டிகோரோன்டல" + + "ோகோதிக்க்ரேபோபண்டைய கிரேக்கம்ஸ்விஸ் ஜெர்மன்குஸிகுவிசின்ஹைடாஹக்கா சீனம்" + + "ஹவாயியன்ஃபிஜி இந்திஹிலிகாய்னான்ஹிட்டைட்மாங்க்அப்பர் சோர்பியான்சியாங்க்" + + " சீனம்ஹுபாஇபான்இபிபியோஇலோகோஇங்குஷ்லோஜ்பன்நகொம்பாமாசெம்ஜூதேயோ-பெர்ஷியன்ஜூ" + + "தேயோ-அராபிக்காரா-கல்பாக்கபாய்ல்காசின்ஜ்ஜூகம்பாகாவிகபார்டியன்தையாப்மகொண" + + "்டேகபுவெர்தியானுகோரோகாஸிகோதானீஸ்கொய்ரா சீனீககோகலின்ஜின்கிம்புன்துகொமி-" + + "பெர்ம்யாக்கொங்கணிகோஸ்ரைன்க்பெல்லேகராசே-பல்கார்கரேலியன்குருக்ஷம்பாலாபாஃ" + + "பியாகொலோக்னியன்கும்இக்குடேனைலடினோலங்கிலஹன்டாலம்பாலெஜ்ஜியன்லகோடாமோங்கோல" + + "ோசிவடக்கு லுரிலுபா-லுலுலாலுய்சேனோலூன்டாலுயோமிஸோலுயியாமதுரீஸ்மகாஹிமைதில" + + "ிமகாசார்மான்டிங்கோமாசாய்மோக்க்ஷாமான்டார்மென்டீமெருமொரிசியன்மிடில் ஐரிஷ" + + "்மகுவா-மீட்டோமேடாமிக்மாக்மின்னாங்கபௌமன்சூமணிப்புரிமொஹாக்மோஸ்ஸிமுன்டாங்" + + "பல மொழிகள்க்ரீக்மிரான்டீஸ்மார்வாரிஏர்ஜியாமசந்தேரனிமின் நான் சீனம்நியோப" + + "ோலிடன்நாமாலோ ஜெர்மன்நெவாரிநியாஸ்நியூவான்க்வாசியோநெகெய்ம்பூன்நோகைபழைய ந" + + "ோர்ஸ்என்‘கோவடக்கு சோதோநியூர்பாரம்பரிய நேவாரிநியாம்வேஜிநியான்கோலேநியோரோ" + + "நிஜ்மாஓசேஜ்ஓட்டோமான் துருக்கிஷ்பன்காசினன்பாஹ்லவிபம்பாங்காபபியாமென்டோபல" + + "ௌவன்நைஜீரியன் பிட்கின்பென்சில்வேனிய ஜெர்மன்பழைய பெர்ஷியன்ஃபொனிஷியன்ஃபோ" + + "ன்பெயென்பிரஷ்யன்பழைய ப்ரோவென்சால்கீசீராஜஸ்தானிரபனுய்ரரோடோங்கன்ரோம்போரோ" + + "மானிஅரோமானியன்ருவாசான்டாவேசகாசமாரிடன் அராமைக்சம்புருசாசாக்சான்டாலிசௌரா" + + "ஷ்டிரம்நெகாம்பேசங்குசிசிலியன்ஸ்காட்ஸ்தெற்கு குர்திஷ்செனாசெல்குப்கொய்ரா" + + "போரோ சென்னிபழைய ஐரிஷ்தசேஹித்ஷான்சிடாமோதெற்கு சமிலுலே சமிஇனாரி சமிஸ்கோல" + + "்ட் சமிசோனின்கேசோக்தியன்ஸ்ரானன் டோங்கோசெரெர்சஹோசுகுமாசுசுசுமேரியன்கொமோ" + + "ரியன்பாரம்பரிய சிரியாக்சிரியாக்டிம்னேடெசோடெரெனோடெடும்டைக்ரேடிவ்டோகேலௌக" + + "்ளிங்கோன்லிங்கிட்தமஷேக்நயாசா டோங்காடோக் பிஸின்தரோகோட்ஸிம்ஷியன்தும்புகா" + + "டுவாலுடசவாக்டுவினியன்மத்திய அட்லஸ் டமசைட்உட்முர்ட்உகாரிடிக்அம்பொண்டுரூ" + + "ட்வைவோட்க்வுன்ஜோவால்சேர்வோலாய்ட்டாவாரேவாஷோவல்பிரிவூ சீனம்கல்மிக்சோகாயா" + + "வ்யாபேசேயாங்பென்யெம்பாகாண்டோனீஸ்ஜாபோடெக்ப்லிஸ்ஸிம்பால்ஸ்ஜெனகாஸ்டாண்டர்" + + "ட் மொராக்கன் தமாசைட்ஜூனிமொழி உள்ளடக்கம் ஏதுமில்லைஜாஜாநவீன நிலையான அரபி" + + "க்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை ஜெர்மன்ஆஸ்திரேலிய ஆங்கிலம்கனடிய ஆங்கிலம்பி" + + "ரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்கிலம்லத்தின் அமெரிக்க ஸ்பானிஷ்ஐரோப்பிய ஸ்" + + "பானிஷ்மெக்ஸிகன் ஸ்பானிஷ்கனடிய பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன்ஃப்லெமிஷ" + + "்பிரேசிலிய போர்ச்சுகீஸ்ஐரோப்பிய போர்ச்சுகீஸ்மோல்டாவியன்செர்போ-குரோஷியன" + + "்காங்கோ ஸ்வாஹிலிஎளிதாக்கப்பட்ட சீனம்பாரம்பரிய சீனம்" + +var taLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0012, 0x0033, 0x004e, 0x0072, 0x0081, 0x009c, 0x00b7, 0x00c9, 0x00e4, 0x00f9, 0x010b, 0x0129, 0x013e, 0x015f, 0x017d, @@ -21339,238 +24777,242 @@ var taLangIdx = []uint16{ // 610 elements 0x025e, 0x0279, 0x0285, 0x0291, 0x02b9, 0x02cb, 0x02dd, 0x02ef, 0x0304, 0x0316, 0x0328, 0x0331, 0x034c, 0x0364, 0x0382, 0x039a, 0x03b8, 0x03ca, 0x03e5, 0x03f4, 0x040f, 0x0427, 0x043f, 0x0457, - 0x0488, 0x0497, 0x04c2, 0x04dd, 0x04ef, 0x050a, 0x0522, 0x052e, - 0x0540, 0x054f, 0x056e, 0x0589, 0x05a4, 0x05c2, 0x05e0, 0x05f2, + 0x0488, 0x0497, 0x04c2, 0x04dd, 0x04f2, 0x050d, 0x0525, 0x0531, + 0x0543, 0x0552, 0x0571, 0x058c, 0x05c0, 0x05de, 0x05fc, 0x060e, // Entry 40 - 7F - 0x0616, 0x063a, 0x0658, 0x0667, 0x0683, 0x069e, 0x06a7, 0x06c8, - 0x06e6, 0x0701, 0x071f, 0x0734, 0x074f, 0x0761, 0x0773, 0x0791, - 0x07a0, 0x07bb, 0x07cd, 0x07e2, 0x07f7, 0x0806, 0x081e, 0x0836, - 0x0842, 0x085a, 0x0872, 0x0887, 0x08b1, 0x08c3, 0x08e4, 0x08fc, - 0x0908, 0x0929, 0x094b, 0x0966, 0x0978, 0x0996, 0x09a2, 0x09c3, - 0x09db, 0x09f9, 0x0a0e, 0x0a1d, 0x0a35, 0x0a4a, 0x0a59, 0x0a7e, - 0x0a90, 0x0aa2, 0x0ab1, 0x0af7, 0x0b31, 0x0b56, 0x0b65, 0x0b77, - 0x0b8f, 0x0ba1, 0x0bb0, 0x0bbf, 0x0bda, 0x0bef, 0x0bfb, 0x0c0d, + 0x0632, 0x0656, 0x0674, 0x0683, 0x069f, 0x06ba, 0x06c3, 0x06e4, + 0x0702, 0x071d, 0x073b, 0x0750, 0x076b, 0x077d, 0x078f, 0x07ad, + 0x07bc, 0x07d7, 0x07e9, 0x07fe, 0x0813, 0x0822, 0x083a, 0x0852, + 0x085e, 0x0876, 0x088e, 0x08a3, 0x08cd, 0x08df, 0x0900, 0x0918, + 0x0924, 0x0945, 0x0967, 0x0982, 0x0994, 0x09b2, 0x09be, 0x09df, + 0x09f7, 0x0a15, 0x0a2a, 0x0a39, 0x0a51, 0x0a66, 0x0a75, 0x0a9a, + 0x0aac, 0x0abe, 0x0acd, 0x0b13, 0x0b4d, 0x0b72, 0x0b81, 0x0b93, + 0x0bab, 0x0bc0, 0x0bcf, 0x0bde, 0x0bf9, 0x0c0e, 0x0c1a, 0x0c2c, // Entry 80 - BF - 0x0c1c, 0x0c46, 0x0c5e, 0x0c76, 0x0c88, 0x0ca3, 0x0cb5, 0x0cdf, - 0x0d00, 0x0d1b, 0x0d2d, 0x0d49, 0x0d5b, 0x0d73, 0x0d8b, 0x0dac, - 0x0dc4, 0x0dd0, 0x0de2, 0x0e00, 0x0e1b, 0x0e2d, 0x0e4c, 0x0e6a, - 0x0e82, 0x0e9a, 0x0ea9, 0x0ec1, 0x0ed3, 0x0edf, 0x0efd, 0x0f1b, - 0x0f2d, 0x0f45, 0x0f63, 0x0f75, 0x0f84, 0x0f9f, 0x0fb4, 0x0fd2, - 0x0fe1, 0x0ff6, 0x1008, 0x1029, 0x103e, 0x1053, 0x1065, 0x1071, - 0x1086, 0x1098, 0x10aa, 0x10b9, 0x10c5, 0x10e0, 0x10ef, 0x1104, - 0x1110, 0x1132, 0x1150, 0x115f, 0x1168, 0x1186, 0x1186, 0x1195, + 0x0c3b, 0x0c65, 0x0c83, 0x0c9b, 0x0cad, 0x0cc8, 0x0cda, 0x0d04, + 0x0d25, 0x0d46, 0x0d58, 0x0d74, 0x0d86, 0x0d9e, 0x0db6, 0x0dd7, + 0x0dec, 0x0df8, 0x0e0a, 0x0e28, 0x0e43, 0x0e55, 0x0e74, 0x0e92, + 0x0eaa, 0x0ec2, 0x0ed1, 0x0ee9, 0x0ef8, 0x0f04, 0x0f22, 0x0f40, + 0x0f52, 0x0f6a, 0x0f88, 0x0f9a, 0x0fa9, 0x0fc1, 0x0fd6, 0x0ff4, + 0x1003, 0x1018, 0x102a, 0x104b, 0x1060, 0x1075, 0x1087, 0x1093, + 0x10ab, 0x10bd, 0x10cf, 0x10de, 0x10ea, 0x1105, 0x1114, 0x1129, + 0x1135, 0x1157, 0x1175, 0x1184, 0x118d, 0x11ab, 0x11ab, 0x11ba, // Entry C0 - FF - 0x1195, 0x11b7, 0x11dc, 0x11f1, 0x1206, 0x1215, 0x1215, 0x1224, - 0x1224, 0x1239, 0x1239, 0x1239, 0x1242, 0x1242, 0x1260, 0x1260, - 0x126c, 0x127e, 0x1293, 0x1293, 0x129f, 0x129f, 0x129f, 0x129f, - 0x12ab, 0x12bd, 0x12bd, 0x12c9, 0x12c9, 0x12d5, 0x12fd, 0x1315, - 0x1327, 0x1333, 0x1333, 0x1333, 0x134b, 0x1375, 0x1375, 0x1387, - 0x1387, 0x1393, 0x1393, 0x13ab, 0x13c3, 0x13c3, 0x13d5, 0x13d5, - 0x13e1, 0x13f0, 0x13f0, 0x1402, 0x141a, 0x1426, 0x1438, 0x1444, - 0x1456, 0x1462, 0x148d, 0x149f, 0x14bd, 0x14cf, 0x14e1, 0x150c, + 0x11ba, 0x11dc, 0x1201, 0x1216, 0x122b, 0x1240, 0x1240, 0x124f, + 0x124f, 0x124f, 0x1264, 0x1264, 0x1264, 0x126d, 0x126d, 0x128b, + 0x128b, 0x1297, 0x12ac, 0x12c1, 0x12c1, 0x12cd, 0x12cd, 0x12cd, + 0x12cd, 0x12d9, 0x12eb, 0x12eb, 0x12f7, 0x12f7, 0x1303, 0x132b, + 0x1343, 0x1355, 0x1361, 0x1361, 0x1361, 0x1379, 0x13a3, 0x13a3, + 0x13b5, 0x13b5, 0x13c1, 0x13c1, 0x13d9, 0x13f1, 0x13f1, 0x1403, + 0x1403, 0x140f, 0x141e, 0x141e, 0x1430, 0x1448, 0x1454, 0x1466, + 0x1472, 0x1484, 0x1490, 0x14bb, 0x14cd, 0x14eb, 0x14fd, 0x150f, // Entry 100 - 13F - 0x1524, 0x1524, 0x1558, 0x1570, 0x157f, 0x1597, 0x15a3, 0x15bb, - 0x15cd, 0x15e5, 0x15f7, 0x1609, 0x161b, 0x1646, 0x1646, 0x1658, - 0x167a, 0x169c, 0x16ae, 0x16ae, 0x16bd, 0x16cf, 0x16cf, 0x1700, - 0x1715, 0x1727, 0x1752, 0x1752, 0x1767, 0x1767, 0x1779, 0x1794, - 0x1794, 0x17a3, 0x17a3, 0x17d1, 0x17f9, 0x17f9, 0x182d, 0x1864, - 0x1888, 0x188e, 0x18a0, 0x18a0, 0x18a9, 0x18b2, 0x18b2, 0x18be, - 0x18e2, 0x18e2, 0x1911, 0x193a, 0x193a, 0x194c, 0x1967, 0x1979, - 0x198b, 0x19b9, 0x19e3, 0x19e3, 0x19e3, 0x19ef, 0x1a07, 0x1a13, + 0x153a, 0x1552, 0x1552, 0x1586, 0x15d0, 0x15e8, 0x15f7, 0x160f, + 0x161b, 0x1630, 0x1642, 0x165a, 0x166c, 0x167e, 0x1690, 0x16bb, + 0x16bb, 0x16cd, 0x16ef, 0x1711, 0x1723, 0x1732, 0x1741, 0x1753, + 0x1753, 0x1784, 0x1799, 0x17ab, 0x17d6, 0x17d6, 0x17eb, 0x17eb, + 0x1800, 0x181b, 0x181b, 0x182a, 0x182a, 0x1855, 0x187a, 0x187a, + 0x18ae, 0x18e5, 0x1909, 0x190f, 0x1921, 0x193a, 0x1943, 0x194c, + 0x194c, 0x1958, 0x197c, 0x197c, 0x19ab, 0x19d4, 0x19d4, 0x19e6, + 0x1a01, 0x1a13, 0x1a25, 0x1a53, 0x1a7b, 0x1a7b, 0x1a7b, 0x1a87, // Entry 140 - 17F - 0x1a13, 0x1a2b, 0x1a47, 0x1a6b, 0x1a83, 0x1a95, 0x1ac6, 0x1ac6, - 0x1ad2, 0x1ae1, 0x1ae1, 0x1af0, 0x1b05, 0x1b05, 0x1b05, 0x1b1a, - 0x1b2f, 0x1b41, 0x1b6f, 0x1b97, 0x1b97, 0x1bb9, 0x1bce, 0x1be0, - 0x1bec, 0x1bfb, 0x1c07, 0x1c25, 0x1c25, 0x1c37, 0x1c4c, 0x1c73, - 0x1c73, 0x1c7f, 0x1c7f, 0x1c8b, 0x1ca3, 0x1cc2, 0x1cc2, 0x1cc2, - 0x1cc2, 0x1cdd, 0x1cfb, 0x1d26, 0x1d3b, 0x1d53, 0x1d6b, 0x1d90, - 0x1d90, 0x1d90, 0x1da8, 0x1dba, 0x1dcf, 0x1de4, 0x1de4, 0x1df9, - 0x1e0b, 0x1e1a, 0x1e29, 0x1e3b, 0x1e4a, 0x1e65, 0x1e65, 0x1e65, + 0x1a9f, 0x1aab, 0x1aca, 0x1ae2, 0x1b01, 0x1b25, 0x1b3d, 0x1b4f, + 0x1b80, 0x1ba8, 0x1bb4, 0x1bc3, 0x1bd8, 0x1be7, 0x1bfc, 0x1bfc, + 0x1bfc, 0x1c11, 0x1c26, 0x1c38, 0x1c66, 0x1c8e, 0x1c8e, 0x1cb0, + 0x1cc5, 0x1cd7, 0x1ce3, 0x1cf2, 0x1cfe, 0x1d1c, 0x1d1c, 0x1d2e, + 0x1d43, 0x1d6a, 0x1d6a, 0x1d76, 0x1d76, 0x1d82, 0x1d9a, 0x1db9, + 0x1db9, 0x1db9, 0x1dc2, 0x1ddd, 0x1dfb, 0x1e26, 0x1e3b, 0x1e53, + 0x1e6b, 0x1e90, 0x1e90, 0x1e90, 0x1ea8, 0x1eba, 0x1ecf, 0x1ee4, + 0x1f05, 0x1f1a, 0x1f2c, 0x1f3b, 0x1f4a, 0x1f5c, 0x1f6b, 0x1f86, // Entry 180 - 1BF - 0x1e65, 0x1e74, 0x1e74, 0x1e86, 0x1e92, 0x1eb1, 0x1eb1, 0x1ed0, - 0x1ee8, 0x1efa, 0x1f06, 0x1f15, 0x1f27, 0x1f27, 0x1f27, 0x1f3c, - 0x1f3c, 0x1f4b, 0x1f5d, 0x1f72, 0x1f90, 0x1fa2, 0x1fa2, 0x1fba, - 0x1fd2, 0x1fe4, 0x1ff0, 0x200b, 0x202d, 0x204f, 0x205b, 0x2073, - 0x2094, 0x20a3, 0x20b8, 0x20ca, 0x20dc, 0x20dc, 0x20f4, 0x2110, - 0x2122, 0x2140, 0x2158, 0x2158, 0x2158, 0x216d, 0x2188, 0x2188, - 0x21a9, 0x21b5, 0x21d1, 0x21e3, 0x21f5, 0x220d, 0x220d, 0x2225, - 0x2225, 0x2231, 0x2250, 0x2250, 0x2262, 0x2281, 0x2293, 0x22c1, + 0x1f86, 0x1f86, 0x1f86, 0x1f95, 0x1f95, 0x1fa7, 0x1fb3, 0x1fd2, + 0x1fd2, 0x1ff1, 0x2009, 0x201b, 0x2027, 0x2033, 0x2045, 0x2045, + 0x2045, 0x205a, 0x205a, 0x2069, 0x207b, 0x2090, 0x20ae, 0x20c0, + 0x20c0, 0x20d8, 0x20f0, 0x2102, 0x210e, 0x2129, 0x214b, 0x216d, + 0x2179, 0x2191, 0x21b2, 0x21c1, 0x21dc, 0x21ee, 0x2200, 0x2200, + 0x2218, 0x2234, 0x2246, 0x2264, 0x227c, 0x227c, 0x227c, 0x2291, + 0x22ac, 0x22d5, 0x22f6, 0x2302, 0x231e, 0x2330, 0x2342, 0x235a, + 0x235a, 0x2372, 0x2396, 0x23a2, 0x23c1, 0x23c1, 0x23d3, 0x23f2, // Entry 1C0 - 1FF - 0x22df, 0x22fd, 0x230f, 0x2321, 0x2330, 0x2361, 0x237f, 0x2394, - 0x23af, 0x23d0, 0x23e5, 0x23e5, 0x2422, 0x2422, 0x244a, 0x244a, - 0x2468, 0x2468, 0x2468, 0x2489, 0x2489, 0x24ba, 0x24c6, 0x24c6, - 0x24e1, 0x24f3, 0x2511, 0x2511, 0x2511, 0x2523, 0x2535, 0x2535, - 0x2535, 0x2535, 0x2553, 0x255f, 0x2577, 0x2589, 0x25b7, 0x25cc, - 0x25de, 0x25f6, 0x2617, 0x2617, 0x2626, 0x2641, 0x2659, 0x2659, - 0x2684, 0x2684, 0x2690, 0x2690, 0x26a8, 0x26d9, 0x26f5, 0x26f5, - 0x270a, 0x2716, 0x2716, 0x2728, 0x2728, 0x2728, 0x2744, 0x275a, + 0x2404, 0x2432, 0x2450, 0x246e, 0x2480, 0x2492, 0x24a1, 0x24db, + 0x24f9, 0x250e, 0x2529, 0x254a, 0x255c, 0x255c, 0x2590, 0x25cd, + 0x25cd, 0x25f5, 0x25f5, 0x2613, 0x2613, 0x2613, 0x2634, 0x264c, + 0x267d, 0x2689, 0x2689, 0x26a4, 0x26b6, 0x26d4, 0x26d4, 0x26d4, + 0x26e6, 0x26f8, 0x26f8, 0x26f8, 0x26f8, 0x2716, 0x2722, 0x273a, + 0x2743, 0x2771, 0x2786, 0x2798, 0x27b0, 0x27d1, 0x27e9, 0x27f8, + 0x2813, 0x282b, 0x282b, 0x2856, 0x2856, 0x2862, 0x2862, 0x287a, + 0x28ab, 0x28c7, 0x28c7, 0x28dc, 0x28e8, 0x28e8, 0x28fa, 0x28fa, // Entry 200 - 23F - 0x2773, 0x2795, 0x27ad, 0x27c8, 0x27f0, 0x2802, 0x2802, 0x2802, - 0x2814, 0x2820, 0x283b, 0x2856, 0x288a, 0x28a2, 0x28a2, 0x28a2, - 0x28b4, 0x28c0, 0x28d2, 0x28e4, 0x28f6, 0x2902, 0x2914, 0x2914, - 0x2932, 0x2950, 0x2950, 0x2968, 0x298a, 0x29a9, 0x29a9, 0x29a9, - 0x29a9, 0x29ca, 0x29ca, 0x29e2, 0x29f4, 0x2a06, 0x2a21, 0x2a59, - 0x2a74, 0x2a8f, 0x2aaa, 0x2ab6, 0x2abc, 0x2abc, 0x2abc, 0x2abc, - 0x2abc, 0x2ace, 0x2ace, 0x2ae0, 0x2ae0, 0x2af2, 0x2afe, 0x2b0a, - 0x2b1f, 0x2b1f, 0x2b34, 0x2b34, 0x2b40, 0x2b4c, 0x2b5e, 0x2b5e, + 0x28fa, 0x2916, 0x292c, 0x2945, 0x2967, 0x297f, 0x299a, 0x29c2, + 0x29d4, 0x29dd, 0x29dd, 0x29ef, 0x29fb, 0x2a16, 0x2a31, 0x2a65, + 0x2a7d, 0x2a7d, 0x2a7d, 0x2a8f, 0x2a9b, 0x2aad, 0x2abf, 0x2ad1, + 0x2add, 0x2aef, 0x2aef, 0x2b0d, 0x2b25, 0x2b25, 0x2b37, 0x2b59, + 0x2b78, 0x2b78, 0x2b87, 0x2b87, 0x2ba8, 0x2ba8, 0x2bc0, 0x2bd2, + 0x2be4, 0x2bff, 0x2c37, 0x2c52, 0x2c6d, 0x2c88, 0x2c94, 0x2c9a, + 0x2c9a, 0x2c9a, 0x2c9a, 0x2c9a, 0x2cac, 0x2cac, 0x2cbe, 0x2cd6, + 0x2cf4, 0x2d00, 0x2d0c, 0x2d21, 0x2d37, 0x2d4c, 0x2d4c, 0x2d58, // Entry 240 - 27F - 0x2b5e, 0x2b5e, 0x2b7c, 0x2b94, 0x2bc4, 0x2bc4, 0x2bd3, 0x2c26, - 0x2c32, 0x2c79, 0x2c85, 0x2cba, 0x2cba, 0x2ce8, 0x2d17, 0x2d4e, - 0x2d76, 0x2dad, 0x2dde, 0x2dde, 0x2e0e, 0x2e0e, 0x2e0e, 0x2e36, - 0x2e5e, 0x2e7a, 0x2e95, 0x2ed4, 0x2f10, 0x2f31, 0x2f5f, 0x2f8a, - 0x2fc4, 0x2fef, -} // Size: 1244 bytes - -var teLangStr string = "" + // Size: 11712 bytes - "అఫార్అబ్ఖాజియన్అవేస్టాన్ఆఫ్రికాన్స్అకాన్అమ్హారిక్అరగోనిస్అరబిక్అస్సామీఅవ" + - "ారిక్ఐమారాఅజర్బైజానిబష్కిర్బెలరుశియన్బల్గేరియన్బిస్లామాబంబారాబెంగాలీటి" + - "బెటన్బ్రెటన్బోస్నియన్కెటలాన్చెచెన్చమర్రోకోర్సికన్క్రిచెక్చర్చ స్లావిక్" + - "చువాష్వెల్ష్డేనిష్జర్మన్దివేహిజొన్ఖాఈవీగ్రీక్ఆంగ్లంఎస్పరెన్టొస్పానిష్ఈ" + - "స్టొనియన్బాస్క్పర్షియన్ఫ్యులఫిన్నిష్ఫిజియన్ఫారోయీజ్ఫ్రెంచ్పశ్చిమ ఫ్రిస" + - "ియన్ఐరిష్స్కాటిష్ గేలిక్గెలిషియన్గురానిగుజరాతిమంకస్హౌసాహీబ్రుహిందీహిరి" + - " మోటుక్రొయెషియన్హైతియన్హన్గేరియన్ఆర్మేనియన్హిరేరోఇంటర్లింగ్వాఇండోనేషియన్" + - "ఇంటర్ లింగ్ఇగ్బోశిషువన్ ఈఇనూపైఏక్ఈడౌఐస్లాండిక్ఇటాలియన్ఇనుక్టిటుట్జాపనీ" + - "స్జావనీస్జార్జియన్కోంగోకికుయుక్వాన్యామకజఖ్కలాల్లిసూట్ఖ్మేర్కన్నడకొరియన" + - "్కానురికాశ్మీరికుర్దిష్కోమికోర్నిష్కిర్గిజ్లాటిన్లుక్సంబర్గిష్గాండాలిమ" + - "్బర్గిష్లింగాలలావోలిథుయేనియన్లూబ-కటాంగలాట్వియన్మాలాగసిమార్షలీస్మయోరిమస" + - "డోనియన్మలయాళంమంగోలియన్మరాఠీమలేయ్మాల్టీస్బర్మీస్నౌరుఉత్తర దెబెలెనేపాలిద" + - "ోంగాడచ్నార్విజియాన్ న్యోర్స్క్నార్వీజియన్ బొక్మాల్దక్షిణ దెబెలెనవాహోన్" + - "యాన్జాఆక్సిటన్చేవాఒరోమోఒరియాఒసేటిక్పంజాబీపాలీపోలిష్పాష్టోపోర్చుగీస్కెష" + - "ుయారోమన్ష్రండిరోమానియన్రష్యన్కిన్యర్వాండాసంస్కృతంసార్డీనియన్సింధీఉత్తర" + - " సామిసాంగోసింహళంస్లోవాక్స్లోవేనియాన్సమోవన్షోనసోమాలిఅల్బేనియన్సెర్బియన్స్" + - "వాతిదక్షిణ సోతోసుడానీస్స్వీడిష్స్వాహిలితమిళముతెలుగుతజిక్థాయ్తిగ్రిన్యా" + - "తుర్కమెన్సెటస్వానాటాంగాన్టర్కిష్సోంగాటాటర్తహితియన్ఉయ్\u200cఘర్ఉక్రేనియ" + - "న్ఉర్దూఉజ్బెక్వెండావియత్నామీస్వోలాపుక్వాలూన్వొలాఫ్షోసాఇడ్డిష్యోరుబాజువ" + - "ాన్చైనీస్జూలూఆఖినీస్అకోలిఅడాంగ్మేఅడిగాబ్జేఅఫ్రిహిలిఅగేమ్ఐనుఅక్కాడియాన్" + - "అలియుట్దక్షిణ ఆల్టైప్రాచీన ఆగ్లంఆంగికఅరామేక్అరౌకేనియన్అరాపాహోఅరావాక్అస" + - "ుఅస్టురియాన్అవధిబాలుచిబాలినీస్బసాబేజాబెంబాబీనాపశ్చిమ బలూచీభోజ్ పూరిబిక" + - "ోల్బినిసిక్ సికాబ్రాజ్బోడోబురియట్బ్యుగినిస్బ్లిన్కేడ్డోకేరిబ్అట్సామ్సే" + - "బుఆనోఛిగాచిబ్చాచాగటైచూకిస్మారిచినూక్ జార్గన్చొచ్కతావ్చిపెవ్యాన్చెరోకీచ" + - "ేయేన్సెంట్రల్ కుర్దిష్కోప్టిక్క్రిమియన్ టర్కిష్కషుబియన్డకోటాడార్గ్వాటై" + - "టాడెలావేర్స్లేవ్డోగ్రిబ్డింకాజార్మాడోగ్రిలోవర్ సోర్బియన్దుఆలామధ్యమ డచ్" + - "జోలా-ఫోనయిడ్యులాఇంబుఎఫిక్ప్రాచీన ఇజిప్షియన్ఏకాజక్ఎలామైట్మధ్యమ ఆంగ్లంఎవ" + - "ోండొఫాంగ్ఫిలిపినోఫాన్మధ్యమ ప్రెంచ్ప్రాచీన ప్రెంచ్ఉత్తర ఫ్రిసియన్తూర్పు" + - " ఫ్రిసియన్ఫ్రియులియన్గాగాగౌజ్గాయోగ్బాయాజీజ్గిల్బర్టీస్మధ్యమ హై జర్మన్ప్ర" + - "ాచీన హై జర్మన్గోండిగోరోంటలాగోథిక్గ్రేబోప్రాచీన గ్రీక్స్విస్ జర్మన్గుస్" + - "సీగ్విచిన్హైడాహవాయియన్హిలి గేయినోన్హిట్టిటేమోంగ్అప్పర్ సోర్బియన్హుపాఐబ" + - "ాన్ఐయోకోఇంగుష్లోజ్బాన్గోంబామకొమ్జ్యుడియో-పర్షియన్జ్యుడియో-అరబిక్కారా-క" + - "ల్పాక్కాబిల్కాచిన్జ్యూకంబాకావికబార్డియన్ట్యాప్మకొండేకాబువేర్దియనుకోరోఖ" + - "ాసిఖటోనీస్కొయరా చీన్నీకలెంజిన్కిమ్బుండుకోమి-పర్మాక్కొంకణికోస్రేయన్పెల్" + - "లేకరచే-బల్కార్కరేలియన్కూరుఖ్శంబాలాబాఫియకుమ్యిక్కుటేనైలాడినోలాంగీలాహండా" + - "లాంబాలేజ్ఘియన్లకొటామొంగోలోజిఉత్తర లూరీలుబా-లులువలుఇసేనోలుండాలువోలుషైలు" + - "యియమాదురీస్మగాహిమైథిలిమకాసార్మండింగోమాసాయిమొక్షామండార్మెండేమెరుమొరిస్య" + - "ేన్మధ్యమ ఐరిష్మక్వా-మిట్టోమెటామికమాక్మినాంగ్కాబోమంచుమణిపూరిమోహుక్మోస్స" + - "ిముదాంగ్బహుళ భాషలుక్రీక్మిరాండిస్మార్వాడిఎర్జియామాసన్\u200cదెరానినియాప" + - "ోలిటన్నమలో జర్మన్నెవారినియాస్నియూఇయాన్క్వాసియెనోగైప్రాచిన నోర్స్న్కోఉత" + - "్తర సోతోన్యుర్సాంప్రదాయ న్యుఆరిన్యంవేజిన్యాన్కోలెనిఓరోజీమాఒసాజ్ఒట్టోమన" + - "్ టర్కిష్పంగా సినాన్పహ్లావిపంపగ్నపపియమేంటోపాలుఆన్ప్రాచీన పర్షియన్ఫోనిక" + - "న్పోహ్న్పెయన్ప్రాచీన ప్రోవెంసాల్కిచేరాజస్తానిరాపన్యుయిరారోటొంగాన్రోంబో" + - "రోమానీఆరోమేనియన్ర్వాసండావియాకుట్సమారిటన్ అరమేక్సంబురుససక్సంటాలిసాంగుసి" + - "సిలియన్స్కాట్స్దక్షిణ కుర్దిష్సెనాసేల్కప్కోయోరాబోరో సెన్నీప్రాచీన ఐరిష" + - "్టాచెల్\u200cహిట్షాన్సిడామోదక్షిణ సామిలులే సామిఇనారి సామిస్కోల్ట్ సామి" + - "సోనింకిసోగ్డియన్స్రానన్ టోనగోసెరేర్సుకుమాసుసుసుమేరియాన్కొమొరియన్సాంప్ర" + - "దాయ సిరియాక్సిరియాక్టింనేటెసోటెరెనోటేటంటీగ్రెటివ్టోకెలావ్క్లింగాన్లింగ" + - "ిట్టామషేక్న్యాసా టోన్గాటోక్ పిసిన్శింషీయన్టుంబుకాటువాలుటసావాఖ్టువినియన" + - "్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర్ట్ఉగారిటిక్ఉమ్బుండురూట్వాయివోటిక్వుంజ" + - "ొవాలామోవారేవాషోవార్లపిరికల్మిక్సొగాయాఒయాపిస్కాంటనీస్జపోటెక్బ్లిసింబల్స" + - "్జెనాగాప్రామాణిక మొరొకన్ తమజియట్జునిలిపి లేదుజాజాఆధునిక ప్రామాణిక అరబి" + - "క్ఆస్ట్రేలియన్ జర్మన్స్విస్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీష్కెనడియన్ ఇంగ" + - "్లీష్బ్రిటిష్ ఇంగ్లీష్అమెరికన్ ఇంగ్లీష్లాటిన్ అమెరికెన్ స్పానిష్యూరోపి" + - "యన్ స్పానిష్మెక్సికన్ స్పానిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్రెంచ్లో సాక్సన" + - "్ఫ్లెమిష్బ్రెజీలియన్ పోర్చుగీస్యూరోపియన్ పోర్చుగీస్మొల్డావియన్సేర్బో-క" + - "్రొయేషియన్కాంగో స్వాహిలిసరళీకృత చైనీస్సాంప్రదాయక చైనీస్" - -var teLangIdx = []uint16{ // 610 elements + 0x2d64, 0x2d76, 0x2d8e, 0x2da0, 0x2da0, 0x2dbe, 0x2dd6, 0x2e06, + 0x2e06, 0x2e15, 0x2e68, 0x2e74, 0x2ebb, 0x2ec7, 0x2efc, 0x2efc, + 0x2f2a, 0x2f59, 0x2f90, 0x2fb8, 0x2fef, 0x3020, 0x3067, 0x3098, + 0x30cc, 0x30cc, 0x30f4, 0x311c, 0x3138, 0x3153, 0x3193, 0x31d0, + 0x31f1, 0x321f, 0x324a, 0x3284, 0x32af, +} // Size: 1250 bytes + +const teLangStr string = "" + // Size: 12415 bytes + "అఫార్అబ్ఖాజియన్అవేస్టాన్ఆఫ్రికాన్స్అకాన్అమ్హారిక్అరగోనిస్అరబిక్అస్సామీస్" + + "అవారిక్ఐమారాఅజర్బైజానిబష్కిర్బెలరుషియన్బల్గేరియన్బిస్లామాబంబారాబాంగ్లా" + + "టిబెటన్బ్రెటన్బోస్నియన్కెటలాన్చెచెన్చమర్రోకోర్సికన్క్రిచెక్చర్చ స్లావి" + + "క్చువాష్వెల్ష్డానిష్జర్మన్దివేహిజోంఖాఈవీగ్రీక్ఆంగ్లంఎస్పెరాంటోస్పానిష్" + + "ఈస్టోనియన్బాస్క్యూపర్షియన్ఫ్యులఫిన్నిష్ఫిజియన్ఫారోయీజ్ఫ్రెంచ్పశ్చిమ ఫ్" + + "రిసియన్ఐరిష్స్కాటిష్ గేలిక్గాలిషియన్గురానిగుజరాతిమంకస్హౌసాహీబ్రూహిందీహ" + + "ిరి మోటుక్రోయేషియన్హైటియన్ క్రియోల్హంగేరియన్ఆర్మేనియన్హిరేరోఇంటర్లింగ్" + + "వాఇండోనేషియన్ఇంటర్లింగ్ఇగ్బోశిషువన్ ఈఇనుపైయాక్ఈడౌఐస్లాండిక్ఇటాలియన్ఇంక" + + "్టిటుట్జపనీస్జావనీస్జార్జియన్కోంగోకికుయుక్వాన్యామకజఖ్కలాల్లిసూట్ఖ్మేర్" + + "కన్నడకొరియన్కానురికాశ్మీరికుర్దిష్కోమికోర్నిష్కిర్గిజ్లాటిన్లుక్సంబర్గ" + + "ిష్గాండాలిమ్బర్గిష్లింగాలలావోలిథుయేనియన్లూబ-కటాంగలాట్వియన్మాలాగసిమార్ష" + + "లీస్మయోరిమసడోనియన్మలయాళంమంగోలియన్మరాఠీమలేయ్మాల్టీస్బర్మీస్నౌరుఉత్తర దె" + + "బెలెనేపాలిదోంగాడచ్నార్వేజియాన్ న్యోర్స్క్నార్వేజియన్ బొక్మాల్దక్షిణ దె" + + "బెలెనవాజొన్యాన్జాఆక్సిటన్చేవాఒరోమోఒడియాఒసేటిక్పంజాబీపాలీపోలిష్పాష్టోపో" + + "ర్చుగీస్కెషుయారోమన్ష్రండిరోమానియన్రష్యన్కిన్యర్వాండాసంస్కృతంసార్డీనియన" + + "్సింధీఉత్తర సామిసాంగోసింహళంస్లోవాక్స్లోవేనియాన్సమోవన్షోనసోమాలిఅల్బేనియ" + + "న్సెర్బియన్స్వాతిదక్షిణ సోతోసుడానీస్స్వీడిష్స్వాహిలితమిళముతెలుగుతజిక్థ" + + "ాయ్తిగ్రిన్యాతుర్కమెన్సెటస్వానాటాంగాన్టర్కిష్సోంగాటాటర్తహితియన్ఉయ్" + + "\u200cఘర్ఉక్రేనియన్ఉర్దూఉజ్బెక్వెండావియత్నామీస్వోలాపుక్వాలూన్వొలాఫ్షోసాఇ" + + "డ్డిష్యోరుబాజువాన్చైనీస్జూలూఆఖినీస్అకోలిఅడాంగ్మేఅడిగాబ్జేటునీషియా అరబి" + + "క్అఫ్రిహిలిఅగేమ్ఐనుఅక్కాడియాన్అలియుట్దక్షిణ ఆల్టైప్రాచీన ఆంగ్లంఆంగికఅర" + + "ామేక్అరౌకేనియన్అరాపాహోఅరావాక్ఈజిప్షియన్ అరబిక్అసుఅస్టురియాన్అవధిబాలుచి" + + "బాలినీస్బసాబేజాబెంబాబీనాపశ్చిమ బలూచీభోజ్ పూరిబికోల్బినిసిక్ సికాబిష్ణు" + + "ప్రియబ్రాజ్బోడోబురియట్బ్యుగినిస్బ్లిన్కేడ్డోకేరిబ్అట్సామ్సెబుయానోఛిగాచ" + + "ిబ్చాచాగటైచూకిస్మారిచినూక్ జార్గన్చొచ్కతావ్చిపెవ్యాన్చెరోకీచేయేన్సెంట్" + + "రల్ కుర్దిష్కోప్టిక్క్రిమియన్ టర్కిష్సెసేల్వా క్రియోల్ ఫ్రెంచ్కషుబియన్" + + "డకోటాడార్గ్వాటైటాడెలావేర్స్లేవ్డోగ్రిబ్డింకాజార్మాడోగ్రిలోవర్ సోర్బియన" + + "్దుఆలామధ్యమ డచ్జోలా-ఫోనయిడ్యులాడాజాగాఇంబుఎఫిక్ప్రాచీన ఈజిప్షియన్ఏకాజక్" + + "ఎలామైట్మధ్యమ ఆంగ్లంఎవోండొఫాంగ్ఫిలిపినోఫాన్మధ్యమ ప్రెంచ్ప్రాచీన ఫ్రెంచ్" + + "ఉత్తర ఫ్రిసియన్తూర్పు ఫ్రిసియన్ఫ్రియులియన్గాగాగౌజ్గాన్ చైనీస్గాయోగ్బాయ" + + "ాజీజ్గిల్బర్టీస్మధ్యమ హై జర్మన్ప్రాచీన హై జర్మన్గోండిగోరోంటలాగోథిక్గ్ర" + + "ేబోప్రాచీన గ్రీక్స్విస్ జర్మన్గుస్సీగ్విచిన్హైడాహక్కా చైనీస్హవాయియన్హి" + + "లిగేయినోన్హిట్టిటేమోంగ్అప్పర్ సోర్బియన్జియాంగ్ చైనీస్హుపాఐబాన్ఇబిబియోఐ" + + "యోకోఇంగుష్లోజ్బాన్గోంబామకొమ్జ్యుడియో-పర్షియన్జ్యుడియో-అరబిక్కారా-కల్పా" + + "క్కాబిల్కాచిన్జ్యూకంబాకావికబార్డియన్ట్యాప్మకొండేకాబువేర్దియనుకోరోఖాసిఖ" + + "టోనీస్కొయరా చీన్నీకాకోకలెంజిన్కిమ్బుండుకోమి-పర్మాక్కొంకణికోస్రేయన్పెల్" + + "లేకరచే-బల్కార్కరేలియన్కూరుఖ్శంబాలాబాఫియకొలొజీయన్కుమ్యిక్కుటేనైలాడినోలా" + + "ంగీలాహండాలాంబాలేజ్ఘియన్లకొటామొంగోలోజిఉత్తర లూరీలుబా-లులువలుయిసెనోలుండా" + + "లువోమిజోలుయియమాదురీస్మగాహిమైథిలిమకాసార్మండింగోమాసాయిమొక్షామండార్మెండేమ" + + "ెరుమొరిస్యేన్మధ్యమ ఐరిష్మక్వా-మిట్టోమెటామికమాక్మినాంగ్కాబోమంచుమణిపూరిమ" + + "ోహుక్మోస్సిముదాంగ్బహుళ భాషలుక్రీక్మిరాండిస్మార్వాడిఎర్జియామాసన్\u200cద" + + "ెరానిమిన్ నాన్ చైనీస్నియాపోలిటన్నమలో జర్మన్నెవారినియాస్నియూఇయాన్క్వాసి" + + "యెగింబోన్నోగైప్రాచిన నోర్స్న్కోఉత్తర సోతోన్యుర్సాంప్రదాయ న్యూయారీన్యంవ" + + "ేజిన్యాన్కోలెనేయోరోజీమాఒసాజ్ఒట్టోమన్ టర్కిష్పంగా సినాన్పహ్లావిపంపగ్నపప" + + "ియమేంటోపాలుఆన్నైజీరియా పిడ్గిన్ప్రాచీన పర్షియన్ఫోనికన్పోహ్న్పెయన్ప్రష్" + + "యన్ప్రాచీన ప్రోవెంసాల్కిచేరాజస్తానీరాపన్యుయిరారోటొంగాన్రోంబోరోమానీఆరోమ" + + "ేనియన్ర్వాసండావిసఖాసమారిటన్ అరమేక్సంబురుససక్సంటాలిగాంబేసాంగుసిసిలియన్స" + + "్కాట్స్దక్షిణ కుర్దిష్సెనాసేల్కప్కోయోరాబోరో సెన్నీప్రాచీన ఐరిష్టాచెల్" + + "\u200cహిట్షాన్సిడామోదక్షిణ సామిలులే సామిఇనారి సామిస్కోల్ట్ సామిసోనింకిసో" + + "గ్డియన్స్రానన్ టోనగోసెరేర్సహోసుకుమాసుసుసుమేరియాన్కొమొరియన్సాంప్రదాయ సి" + + "రియాక్సిరియాక్తుళుటింనేటెసోటెరెనోటేటంటీగ్రెటివ్టోకెలావ్క్లింగాన్ట్లింగ" + + "ిట్టామషేక్న్యాసా టోన్గాటోక్ పిసిన్తరోకోశింషీయన్టుంబుకాటువాలుటసావాఖ్టువ" + + "ినియన్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర్ట్ఉగారిటిక్ఉమ్బుండురూట్వాయివోటిక" + + "్వుంజొవాల్సర్వాలేట్టావారేవాషోవార్లపిరివు చైనీస్కల్మిక్సొగాయాయేయాపిస్యా" + + "ంగ్\u200cబెన్యెంబాకాంటనీస్జపోటెక్బ్లిసింబల్స్జెనాగాప్రామాణిక మొరొకన్ త" + + "మజియట్జునిలిపి లేదుజాజాఆధునిక ప్రామాణిక అరబిక్ఆస్ట్రేలియన్ జర్మన్స్విస" + + "్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీష్కెనడియన్ ఇంగ్లీష్బ్రిటిష్ ఇంగ్లీష్అమెర" + + "ికన్ ఇంగ్లీష్లాటిన్ అమెరికన్ స్పానిష్యూరోపియన్ స్పానిష్మెక్సికన్ స్పాన" + + "ిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్రెంచ్లో సాక్సన్ఫ్లెమిష్బ్రెజీలియన్ పోర్చు" + + "గీస్యూరోపియన్ పోర్చుగీస్మొల్డావియన్సేర్బో-క్రొయేషియన్కాంగో స్వాహిలిసరళ" + + "ీకృత చైనీస్సాంప్రదాయక చైనీస్" + +var teLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000f, 0x002d, 0x0048, 0x0069, 0x0078, 0x0093, 0x00ab, - 0x00bd, 0x00d2, 0x00e7, 0x00f6, 0x0114, 0x0129, 0x0147, 0x0165, - 0x017d, 0x018f, 0x01a4, 0x01b9, 0x01ce, 0x01e9, 0x01fe, 0x0210, - 0x0222, 0x023d, 0x0249, 0x0255, 0x027a, 0x028c, 0x029e, 0x02b0, - 0x02c2, 0x02d4, 0x02e6, 0x02ef, 0x0301, 0x0313, 0x0331, 0x0349, - 0x0367, 0x0379, 0x0391, 0x03a0, 0x03b8, 0x03cd, 0x03e5, 0x03fa, - 0x0428, 0x0437, 0x0462, 0x047d, 0x048f, 0x04a4, 0x04b3, 0x04bf, - 0x04d1, 0x04e0, 0x04f9, 0x051a, 0x052f, 0x054d, 0x056b, 0x057d, + 0x00bd, 0x00d8, 0x00ed, 0x00fc, 0x011a, 0x012f, 0x014d, 0x016b, + 0x0183, 0x0195, 0x01aa, 0x01bf, 0x01d4, 0x01ef, 0x0204, 0x0216, + 0x0228, 0x0243, 0x024f, 0x025b, 0x0280, 0x0292, 0x02a4, 0x02b6, + 0x02c8, 0x02da, 0x02e9, 0x02f2, 0x0304, 0x0316, 0x0334, 0x034c, + 0x036a, 0x0382, 0x039a, 0x03a9, 0x03c1, 0x03d6, 0x03ee, 0x0403, + 0x0431, 0x0440, 0x046b, 0x0486, 0x0498, 0x04ad, 0x04bc, 0x04c8, + 0x04da, 0x04e9, 0x0502, 0x0523, 0x0551, 0x056c, 0x058a, 0x059c, // Entry 40 - 7F - 0x05a1, 0x05c2, 0x05e1, 0x05f0, 0x0609, 0x0621, 0x062a, 0x0648, - 0x0660, 0x0681, 0x0696, 0x06ab, 0x06c6, 0x06d5, 0x06e7, 0x0702, - 0x070e, 0x072f, 0x0741, 0x0750, 0x0765, 0x0777, 0x078f, 0x07a7, - 0x07b3, 0x07cb, 0x07e3, 0x07f5, 0x081c, 0x082b, 0x084c, 0x085e, - 0x086a, 0x088b, 0x08a4, 0x08bf, 0x08d4, 0x08ef, 0x08fe, 0x0919, - 0x092b, 0x0946, 0x0955, 0x0964, 0x097c, 0x0991, 0x099d, 0x09bf, - 0x09d1, 0x09e0, 0x09e9, 0x0a2c, 0x0a66, 0x0a8b, 0x0a9a, 0x0ab2, - 0x0aca, 0x0ad6, 0x0ae5, 0x0af4, 0x0b09, 0x0b1b, 0x0b27, 0x0b39, + 0x05c0, 0x05e1, 0x05ff, 0x060e, 0x0627, 0x0642, 0x064b, 0x0669, + 0x0681, 0x069f, 0x06b1, 0x06c6, 0x06e1, 0x06f0, 0x0702, 0x071d, + 0x0729, 0x074a, 0x075c, 0x076b, 0x0780, 0x0792, 0x07aa, 0x07c2, + 0x07ce, 0x07e6, 0x07fe, 0x0810, 0x0837, 0x0846, 0x0867, 0x0879, + 0x0885, 0x08a6, 0x08bf, 0x08da, 0x08ef, 0x090a, 0x0919, 0x0934, + 0x0946, 0x0961, 0x0970, 0x097f, 0x0997, 0x09ac, 0x09b8, 0x09da, + 0x09ec, 0x09fb, 0x0a04, 0x0a47, 0x0a81, 0x0aa6, 0x0ab5, 0x0acd, + 0x0ae5, 0x0af1, 0x0b00, 0x0b0f, 0x0b24, 0x0b36, 0x0b42, 0x0b54, // Entry 80 - BF - 0x0b4b, 0x0b69, 0x0b7b, 0x0b90, 0x0b9c, 0x0bb7, 0x0bc9, 0x0bed, - 0x0c05, 0x0c26, 0x0c35, 0x0c51, 0x0c60, 0x0c72, 0x0c8a, 0x0cae, - 0x0cc0, 0x0cc9, 0x0cdb, 0x0cf9, 0x0d14, 0x0d26, 0x0d45, 0x0d5d, - 0x0d75, 0x0d8d, 0x0d9f, 0x0db1, 0x0dc0, 0x0dcc, 0x0dea, 0x0e05, - 0x0e20, 0x0e35, 0x0e4a, 0x0e59, 0x0e68, 0x0e80, 0x0e95, 0x0eb3, - 0x0ec2, 0x0ed7, 0x0ee6, 0x0f07, 0x0f1f, 0x0f31, 0x0f43, 0x0f4f, - 0x0f64, 0x0f76, 0x0f88, 0x0f9a, 0x0fa6, 0x0fbb, 0x0fca, 0x0fe2, - 0x0ffd, 0x0ffd, 0x1018, 0x1027, 0x1030, 0x1051, 0x1051, 0x1066, + 0x0b66, 0x0b84, 0x0b96, 0x0bab, 0x0bb7, 0x0bd2, 0x0be4, 0x0c08, + 0x0c20, 0x0c41, 0x0c50, 0x0c6c, 0x0c7b, 0x0c8d, 0x0ca5, 0x0cc9, + 0x0cdb, 0x0ce4, 0x0cf6, 0x0d14, 0x0d2f, 0x0d41, 0x0d60, 0x0d78, + 0x0d90, 0x0da8, 0x0dba, 0x0dcc, 0x0ddb, 0x0de7, 0x0e05, 0x0e20, + 0x0e3b, 0x0e50, 0x0e65, 0x0e74, 0x0e83, 0x0e9b, 0x0eb0, 0x0ece, + 0x0edd, 0x0ef2, 0x0f01, 0x0f22, 0x0f3a, 0x0f4c, 0x0f5e, 0x0f6a, + 0x0f7f, 0x0f91, 0x0fa3, 0x0fb5, 0x0fc1, 0x0fd6, 0x0fe5, 0x0ffd, + 0x1018, 0x1043, 0x105e, 0x106d, 0x1076, 0x1097, 0x1097, 0x10ac, // Entry C0 - FF - 0x1066, 0x1088, 0x10ad, 0x10bc, 0x10d1, 0x10ef, 0x10ef, 0x1104, - 0x1104, 0x1119, 0x1119, 0x1119, 0x1122, 0x1122, 0x1143, 0x1143, - 0x114f, 0x1161, 0x1179, 0x1179, 0x1182, 0x1182, 0x1182, 0x1182, - 0x118e, 0x119d, 0x119d, 0x11a9, 0x11a9, 0x11a9, 0x11cb, 0x11e4, - 0x11f6, 0x1202, 0x1202, 0x1202, 0x121b, 0x121b, 0x121b, 0x122d, - 0x122d, 0x1239, 0x1239, 0x124e, 0x126c, 0x126c, 0x127e, 0x127e, - 0x1290, 0x12a2, 0x12a2, 0x12b7, 0x12cc, 0x12d8, 0x12ea, 0x12f9, - 0x130b, 0x1317, 0x133f, 0x135a, 0x1378, 0x138a, 0x139c, 0x13cd, + 0x10ac, 0x10ce, 0x10f6, 0x1105, 0x111a, 0x1138, 0x1138, 0x114d, + 0x114d, 0x114d, 0x1162, 0x1162, 0x1193, 0x119c, 0x119c, 0x11bd, + 0x11bd, 0x11c9, 0x11db, 0x11f3, 0x11f3, 0x11fc, 0x11fc, 0x11fc, + 0x11fc, 0x1208, 0x1217, 0x1217, 0x1223, 0x1223, 0x1223, 0x1245, + 0x125e, 0x1270, 0x127c, 0x127c, 0x127c, 0x1295, 0x12b6, 0x12b6, + 0x12c8, 0x12c8, 0x12d4, 0x12d4, 0x12e9, 0x1307, 0x1307, 0x1319, + 0x1319, 0x132b, 0x133d, 0x133d, 0x1352, 0x136a, 0x1376, 0x1388, + 0x1397, 0x13a9, 0x13b5, 0x13dd, 0x13f8, 0x1416, 0x1428, 0x143a, // Entry 100 - 13F - 0x13e5, 0x13e5, 0x1416, 0x142e, 0x143d, 0x1455, 0x1461, 0x1479, - 0x148b, 0x14a3, 0x14b2, 0x14c4, 0x14d6, 0x1501, 0x1501, 0x1510, - 0x1529, 0x1545, 0x1557, 0x1557, 0x1563, 0x1572, 0x1572, 0x15a6, - 0x15b8, 0x15cd, 0x15ef, 0x15ef, 0x1601, 0x1601, 0x1610, 0x1628, - 0x1628, 0x1634, 0x1634, 0x1659, 0x1684, 0x1684, 0x16af, 0x16dd, - 0x16fe, 0x1704, 0x1716, 0x1716, 0x1722, 0x1734, 0x1734, 0x1740, - 0x1761, 0x1761, 0x178a, 0x17b9, 0x17b9, 0x17c8, 0x17e0, 0x17f2, - 0x1804, 0x182c, 0x1851, 0x1851, 0x1851, 0x1863, 0x187b, 0x1887, + 0x146b, 0x1483, 0x1483, 0x14b4, 0x14fb, 0x1513, 0x1522, 0x153a, + 0x1546, 0x155e, 0x1570, 0x1588, 0x1597, 0x15a9, 0x15bb, 0x15e6, + 0x15e6, 0x15f5, 0x160e, 0x162a, 0x163c, 0x164e, 0x165a, 0x1669, + 0x1669, 0x169d, 0x16af, 0x16c4, 0x16e6, 0x16e6, 0x16f8, 0x16f8, + 0x1707, 0x171f, 0x171f, 0x172b, 0x172b, 0x1750, 0x177b, 0x177b, + 0x17a6, 0x17d4, 0x17f5, 0x17fb, 0x180d, 0x182c, 0x1838, 0x184a, + 0x184a, 0x1856, 0x1877, 0x1877, 0x18a0, 0x18cf, 0x18cf, 0x18de, + 0x18f6, 0x1908, 0x191a, 0x1942, 0x1967, 0x1967, 0x1967, 0x1979, // Entry 140 - 17F - 0x1887, 0x189f, 0x189f, 0x18c4, 0x18dc, 0x18eb, 0x1919, 0x1919, - 0x1925, 0x1934, 0x1934, 0x1943, 0x1955, 0x1955, 0x1955, 0x196d, - 0x197c, 0x198b, 0x19bc, 0x19e7, 0x19e7, 0x1a09, 0x1a1b, 0x1a2d, - 0x1a39, 0x1a45, 0x1a51, 0x1a6f, 0x1a6f, 0x1a81, 0x1a93, 0x1aba, - 0x1aba, 0x1ac6, 0x1ac6, 0x1ad2, 0x1ae7, 0x1b09, 0x1b09, 0x1b09, - 0x1b09, 0x1b21, 0x1b3c, 0x1b5e, 0x1b70, 0x1b8b, 0x1b9d, 0x1bbf, - 0x1bbf, 0x1bbf, 0x1bd7, 0x1be9, 0x1bfb, 0x1c0a, 0x1c0a, 0x1c22, - 0x1c34, 0x1c46, 0x1c55, 0x1c67, 0x1c76, 0x1c91, 0x1c91, 0x1c91, + 0x1991, 0x199d, 0x19bf, 0x19d7, 0x19d7, 0x19fb, 0x1a13, 0x1a22, + 0x1a50, 0x1a78, 0x1a84, 0x1a93, 0x1aa8, 0x1ab7, 0x1ac9, 0x1ac9, + 0x1ac9, 0x1ae1, 0x1af0, 0x1aff, 0x1b30, 0x1b5b, 0x1b5b, 0x1b7d, + 0x1b8f, 0x1ba1, 0x1bad, 0x1bb9, 0x1bc5, 0x1be3, 0x1be3, 0x1bf5, + 0x1c07, 0x1c2e, 0x1c2e, 0x1c3a, 0x1c3a, 0x1c46, 0x1c5b, 0x1c7d, + 0x1c7d, 0x1c7d, 0x1c89, 0x1ca1, 0x1cbc, 0x1cde, 0x1cf0, 0x1d0b, + 0x1d1d, 0x1d3f, 0x1d3f, 0x1d3f, 0x1d57, 0x1d69, 0x1d7b, 0x1d8a, + 0x1da5, 0x1dbd, 0x1dcf, 0x1de1, 0x1df0, 0x1e02, 0x1e11, 0x1e2c, // Entry 180 - 1BF - 0x1c91, 0x1ca0, 0x1ca0, 0x1caf, 0x1cbb, 0x1cd7, 0x1cd7, 0x1cf3, - 0x1d08, 0x1d17, 0x1d23, 0x1d2f, 0x1d3e, 0x1d3e, 0x1d3e, 0x1d56, - 0x1d56, 0x1d65, 0x1d77, 0x1d8c, 0x1da1, 0x1db3, 0x1db3, 0x1dc5, - 0x1dd7, 0x1de6, 0x1df2, 0x1e10, 0x1e2f, 0x1e51, 0x1e5d, 0x1e72, - 0x1e93, 0x1e9f, 0x1eb4, 0x1ec6, 0x1ed8, 0x1ed8, 0x1eed, 0x1f09, - 0x1f1b, 0x1f36, 0x1f4e, 0x1f4e, 0x1f4e, 0x1f63, 0x1f87, 0x1f87, - 0x1fa8, 0x1fae, 0x1fc7, 0x1fd9, 0x1feb, 0x2006, 0x2006, 0x201e, - 0x201e, 0x202a, 0x2052, 0x2052, 0x205e, 0x207a, 0x208c, 0x20bd, + 0x1e2c, 0x1e2c, 0x1e2c, 0x1e3b, 0x1e3b, 0x1e4a, 0x1e56, 0x1e72, + 0x1e72, 0x1e8e, 0x1ea6, 0x1eb5, 0x1ec1, 0x1ecd, 0x1edc, 0x1edc, + 0x1edc, 0x1ef4, 0x1ef4, 0x1f03, 0x1f15, 0x1f2a, 0x1f3f, 0x1f51, + 0x1f51, 0x1f63, 0x1f75, 0x1f84, 0x1f90, 0x1fae, 0x1fcd, 0x1fef, + 0x1ffb, 0x2010, 0x2031, 0x203d, 0x2052, 0x2064, 0x2076, 0x2076, + 0x208b, 0x20a7, 0x20b9, 0x20d4, 0x20ec, 0x20ec, 0x20ec, 0x2101, + 0x2125, 0x2151, 0x2172, 0x2178, 0x2191, 0x21a3, 0x21b5, 0x21d0, + 0x21d0, 0x21e8, 0x21fd, 0x2209, 0x2231, 0x2231, 0x223d, 0x2259, // Entry 1C0 - 1FF - 0x20d5, 0x20f3, 0x2102, 0x210e, 0x211d, 0x214b, 0x216a, 0x217f, - 0x2191, 0x21ac, 0x21c1, 0x21c1, 0x21c1, 0x21c1, 0x21ef, 0x21ef, - 0x2204, 0x2204, 0x2204, 0x2225, 0x2225, 0x225c, 0x2268, 0x2268, - 0x2283, 0x229e, 0x22bf, 0x22bf, 0x22bf, 0x22ce, 0x22e0, 0x22e0, - 0x22e0, 0x22e0, 0x22fe, 0x230a, 0x231c, 0x232e, 0x2359, 0x236b, - 0x2377, 0x2389, 0x2389, 0x2389, 0x2398, 0x23b3, 0x23cb, 0x23cb, - 0x23f6, 0x23f6, 0x2402, 0x2402, 0x2417, 0x2448, 0x246d, 0x246d, - 0x248e, 0x249a, 0x249a, 0x24ac, 0x24ac, 0x24ac, 0x24cb, 0x24e4, + 0x226b, 0x229f, 0x22b7, 0x22d5, 0x22e7, 0x22f3, 0x2302, 0x2330, + 0x234f, 0x2364, 0x2376, 0x2391, 0x23a6, 0x23a6, 0x23d7, 0x23d7, + 0x23d7, 0x2405, 0x2405, 0x241a, 0x241a, 0x241a, 0x243b, 0x2453, + 0x248a, 0x2496, 0x2496, 0x24b1, 0x24cc, 0x24ed, 0x24ed, 0x24ed, + 0x24fc, 0x250e, 0x250e, 0x250e, 0x250e, 0x252c, 0x2538, 0x254a, + 0x2553, 0x257e, 0x2590, 0x259c, 0x25ae, 0x25ae, 0x25bd, 0x25cc, + 0x25e7, 0x25ff, 0x25ff, 0x262a, 0x262a, 0x2636, 0x2636, 0x264b, + 0x267c, 0x26a1, 0x26a1, 0x26c2, 0x26ce, 0x26ce, 0x26e0, 0x26e0, // Entry 200 - 23F - 0x2500, 0x2525, 0x253a, 0x2555, 0x257a, 0x258c, 0x258c, 0x258c, - 0x259e, 0x25aa, 0x25c8, 0x25e3, 0x2617, 0x262f, 0x262f, 0x262f, - 0x263e, 0x264a, 0x265c, 0x2668, 0x267a, 0x2686, 0x269e, 0x269e, - 0x26b9, 0x26ce, 0x26ce, 0x26e3, 0x2708, 0x2727, 0x2727, 0x2727, - 0x2727, 0x273f, 0x273f, 0x2754, 0x2766, 0x277b, 0x2796, 0x27dd, - 0x27f8, 0x2813, 0x282b, 0x2837, 0x2843, 0x2843, 0x2843, 0x2843, - 0x2843, 0x2855, 0x2855, 0x2864, 0x2864, 0x2876, 0x2882, 0x288e, - 0x28a9, 0x28a9, 0x28be, 0x28be, 0x28ca, 0x28d3, 0x28e5, 0x28e5, + 0x26e0, 0x26ff, 0x2718, 0x2734, 0x2759, 0x276e, 0x2789, 0x27ae, + 0x27c0, 0x27c9, 0x27c9, 0x27db, 0x27e7, 0x2805, 0x2820, 0x2854, + 0x286c, 0x286c, 0x2878, 0x2887, 0x2893, 0x28a5, 0x28b1, 0x28c3, + 0x28cf, 0x28e7, 0x28e7, 0x2902, 0x291d, 0x291d, 0x2932, 0x2957, + 0x2976, 0x2976, 0x2985, 0x2985, 0x299d, 0x299d, 0x29b2, 0x29c4, + 0x29d9, 0x29f4, 0x2a3b, 0x2a56, 0x2a71, 0x2a89, 0x2a95, 0x2aa1, + 0x2aa1, 0x2aa1, 0x2aa1, 0x2aa1, 0x2ab3, 0x2ab3, 0x2ac2, 0x2ad7, + 0x2aef, 0x2afb, 0x2b07, 0x2b22, 0x2b3b, 0x2b50, 0x2b50, 0x2b5c, // Entry 240 - 27F - 0x28e5, 0x28e5, 0x28fd, 0x2912, 0x2936, 0x2936, 0x2948, 0x298f, - 0x299b, 0x29b4, 0x29c0, 0x2a01, 0x2a01, 0x2a38, 0x2a64, 0x2aa1, - 0x2ad2, 0x2b03, 0x2b34, 0x2b7b, 0x2baf, 0x2be3, 0x2be3, 0x2c14, - 0x2c3c, 0x2c58, 0x2c70, 0x2cb0, 0x2cea, 0x2d0b, 0x2d3f, 0x2d67, - 0x2d8f, 0x2dc0, -} // Size: 1244 bytes - -var thLangStr string = "" + // Size: 13735 bytes + 0x2b68, 0x2b7a, 0x2b98, 0x2ba7, 0x2ba7, 0x2bbf, 0x2bd4, 0x2bf8, + 0x2bf8, 0x2c0a, 0x2c51, 0x2c5d, 0x2c76, 0x2c82, 0x2cc3, 0x2cc3, + 0x2cfa, 0x2d26, 0x2d63, 0x2d94, 0x2dc5, 0x2df6, 0x2e3a, 0x2e6e, + 0x2ea2, 0x2ea2, 0x2ed3, 0x2efb, 0x2f17, 0x2f2f, 0x2f6f, 0x2fa9, + 0x2fca, 0x2ffe, 0x3026, 0x304e, 0x307f, +} // Size: 1250 bytes + +const thLangStr string = "" + // Size: 13813 bytes "อะฟาร์อับคาซอเวสตะแอฟริกานส์อาคันอัมฮาราอารากอนอาหรับอัสสัมอาวาร์ไอย์มาร" + "าอาเซอร์ไบจานบัชคีร์เบลารุสบัลแกเรียบิสลามาบัมบาราเบงกาลีทิเบตเบรตันบอ" + "สเนียกาตาลังเชเชนชามอร์โรคอร์ซิกาครีเช็กเชอร์ชสลาวิกชูวัชเวลส์เดนมาร์ก" + @@ -21587,58 +25029,59 @@ var thLangStr string = "" + // Size: 13735 bytes "ูโปรตุเกสควิชัวโรแมนซ์บุรุนดีโรมาเนียรัสเซียรวันดาสันสกฤตซาร์เดญาสินธุ" + "ซามิเหนือแซงโกสิงหลสโลวักสโลวีเนียซามัวโชนาโซมาลีแอลเบเนียเซอร์เบียสวา" + "ติโซโทใต้ซุนดาสวีเดนสวาฮีลีทมิฬเตลูกูทาจิกไทยติกริญญาเติร์กเมนิสถานบอต" + - "สวานาตองกาตุรกีซิิตซองกาตาตาร์ตาฮิตีอุยกัวยูเครนอูรดูอุซเบกเวนดาเวียดน" + - "ามโวลาพึควาโลนีโวลอฟคะห์โอซายิวโยรูบาจ้วงจีนซูลูอาเจะห์อาโคลิอาแดงมีอะ" + - "ดืยเกอาหรับตูนิเซียแอฟริฮีลีอักเฮมไอนุอักกาดแอละแบมาอาลิวต์เกกแอลเบเนี" + - "ยอัลไตใต้อังกฤษโบราณอังคิกาอราเมอิกอาเราคาเนียนอาเรานาอาราปาโฮอาหรับแอ" + - "ลจีเรียอาราวักอาหรับโมร็อกโกอาหรับพื้นเมืองอียิปต์อาซูภาษามืออเมริกันอ" + - "ัสตูเรียสโคตาวาอวธีบาลูชิบาหลีบาวาเรียบาสาบามันบาตักโทบาโคมาลาเบจาเบมบ" + - "าเบตาวีเบนาบาฟัตพทคะบาลูจิตะวันออกโภชปุรีบิกอลบินีบันจาร์กมสิกสิกาพิศน" + - "ุปริยะบักติยารีพัรชบราฮุยโพโฑอาโคซีบูเรียตบูกิสบูลูบลินเมดุมบาคัดโดคาร" + - "ิบคายูกาแอตแซมเซบูคีกาชิบชาชะกะไตชูกมารีชินุกจาร์กอนช็อกทอว์ชิพิวยันเช" + - "อโรกีเชเยนเนเคิร์ดโซรานีคอปติกกาปิซนอนตุรกีไครเมียคาซูเบียนดาโกทาดาร์ก" + - "ินไททาเดลาแวร์สเลวีโดกริบดิงกาซาร์มาโฑครีซอร์บส์ตอนล่างดูซุนกลางดัวลาด" + - "ัตช์กลางโจลา-ฟอนยีดิวลาดาซากาเอ็มบูอีฟิกเอมีเลียอียิปต์โบราณอีกาจุกอีล" + - "าไมต์อังกฤษกลางยูพิกกลางอีวันโดเอกซ์เตรมาดูราฟองฟิลิปปินส์ฟินแลนด์ทอร์" + - "เนดาเล็นฟอนฝรั่งเศสกาฌ็องฝรั่งเศสกลางฝรั่งเศสโบราณอาร์พิตาฟริเซียนเหนื" + - "อฟริเซียนตะวันออกฟรูลีกากากาอุซจีนกานกาโยกบายาดารีโซโรอัสเตอร์กีซกิลเบ" + - "อร์ตกิลากีเยอรมันสูงกลางเยอรมันสูงโบราณกอนกานีของกัวกอนดิกอรอนทาโลโกธิ" + - "กเกรโบกรีกโบราณเยอรมันสวิสวายูฟราฟรากุซซีกวิชอินไฮดาจีนแคะฮาวายฮินดีฟิ" + - "จิฮีลีกัยนนฮิตไตต์ม้งซอร์บส์ตอนบนจีนเซียงฮูปาอิบานอิบิบิโออีโลโกอินกุช" + - "อินเกรียนอังกฤษคลีโอลจาเมกาโลชบันอึนกอมบามาชาเมยิว-เปอร์เซียยิว-อาหรับ" + - "จัทการา-กาลพากกาไบลกะฉิ่นคจูคัมบากวีคาร์บาเดียคาเนมบูทีแยปมาคอนเดคาบูเ" + - "วอร์เดียนูเกินยางโคโรเคนก่างกาสีโคตันโคย์ราชีนีโควาร์เคอร์มานิกิคาโกคา" + - "เลนจินคิมบุนดูโคมิ-เปียร์เมียคกอนกานีคูสไรกาแปลคาราไช-บัลคาร์คริโอกินา" + - "รายอาแกรเลียนกุรุขชัมบาลาบาเฟียโคโลญคูมืยค์คูเทไนลาดิโนแลนจีลาฮ์นดาแลม" + - "บาเลซเกียนลิงกัวฟรังกาโนวาลิกูเรียลิโวเนียลาโกตาลอมบาร์ดมองโกโลซิลูรีเ" + - "หนือลัตเกลลูบา-ลูลัวลุยเซโนลันดาลัวลูไชลูเยียจีนคลาสสิกแลซมาดูรามาฟามค" + - "หีไมถิลีมากาซาร์มันดิงกามาไซมาบามอคชามานดาร์เมนเดเมรูมอริสเยนไอริชกลาง" + - "มากัววา-มีทโทเมตามิกแมกมีนังกาเบาแมนจูมณีปุระโมฮอว์กโมซีมารีตะวันตกมัน" + - "ดังหลายภาษาครีกมีรันดามารวาฑีเม็นตาไวมยีนเอียร์ซยามาซันดารานีจีนมินหนา" + - "นนาโปลีนามาเยอรมันต่ำ - แซกซอนต่ำเนวาร์นีอัสนีอูอ๋าวนากากวาซิโอจีมบูนโ" + - "นไกนอร์สโบราณโนเวียลเอ็นโกโซโทเหนือเนือร์เนวาร์ดั้งเดิมเนียมเวซีเนียนโ" + - "กเลนิโอโรนซิมาโอซากีตุรกีออตโตมันปางาซีนันปะห์ลาวีปัมปางาปาเปียเมนโตปา" + - "เลาปิการ์เยอรมันเพนซิลเวเนียเพลาท์ดิชเปอร์เซียโบราณเยอรมันพาลาทิเนตฟิน" + - "ิเชียพีดมอนต์พอนติกพอห์นเพปรัสเซียโปรวองซาลโบราณกีเชควิชัวไฮแลนด์ชิมโบ" + - "ราโซราชสถานราปานูราโรทองกาโรมัณโญริฟฟิอันรอมโบโรมานีโรทูมันรูซินโรเวีย" + - "นาอาโรมาเนียนรวาซันดาเวซาฮาอราเมอิกซามาเรียแซมบูรูซาซักสันตาลีเสาราษฏร" + - "์กัมเบแซงกูซิซิลีสกอตส์ซาร์ดิเนียซาสซารีเคอร์ดิชใต้เซนิกาเซนาเซรีเซลคุ" + - "ปโคย์ราโบโรเซนนีไอริชโบราณซาโมจิเตียนทาเชลีห์ทไทใหญ่อาหรับ-ชาดซิดาโมไซ" + - "ลีเซียตอนล่างเซลายาร์ซามิใต้ซามิลูเลซามิอีนารีซามิสคอลต์โซนีนเกซอกดีนซ" + - "ูรินาเมเซแรร์ซาโฮฟรีเซียนซัทเธอร์แลนด์ซูคูมาซูซูซูเมอโคเมอเรียนซีเรียแ" + - "บบดั้งเดิมซีเรียไซลีเซียตูลูทิมเนเตโซเทเรโนเตตุมตีเกรทิฟโตเกเลาแซคเซอร" + - "์คลิงกอนทลิงกิตทาลิชทามาเชกไนอะซาตองกาท็อกพิซินตูโรโยทาโรโกซาโคเนียซิม" + - "ชีแอนตัตมุสลิมทุมบูกาตูวาลูตัสซาวัคตูวาทามาไซต์แอตลาสกลางอุดมูร์ตยูการ" + - "ิตอุมบุนดูรูทไวเวเนโต้เวปส์เฟลมิชตะวันตกเมน-ฟรานโกเนียโวทิกโวโรวุนจูวั" + - "ลเซอร์วาลาโมวาเรย์วาโชวอล์เพอร์รีจีนอู๋คัลมืยค์เมเกรเลียโซกาเย้ายัปแยง" + - "เบนเยมบาเหงงกาตุกวางตุ้งซาโปเตกบลิสซิมโบลส์เซแลนด์เซนากาทามาไซต์โมร็อก" + - "โกมาตรฐานซูนิไม่มีข้อมูลภาษาซาซาอาหรับมาตรฐานสมัยใหม่เยอรมัน - ออสเตรี" + - "ยเยอรมันสูง (สวิส)อังกฤษ - ออสเตรเลียอังกฤษ - แคนาดาอังกฤษ - สหราชอาณา" + - "จักรอังกฤษ - อเมริกันสเปน - ละตินอเมริกาสเปน - ยุโรปสเปน - เม็กซิโกฝรั" + - "่งเศส - แคนาดาฝรั่งเศส (สวิส)แซกซอนใต้เฟลมิชโปรตุเกส - บราซิลโปรตุเกส " + - "- ยุโรปมอลโดวาเซอร์โบ-โครเอเชียสวาฮีลี-คองโกจีนตัวย่อจีนตัวเต็ม" - -var thLangIdx = []uint16{ // 610 elements + "สวานาตองกาตุรกีซิตซองกาตาตาร์ตาฮิตีอุยกัวยูเครนอูรดูอุซเบกเวนดาเวียดนา" + + "มโวลาพึควาโลนีโวลอฟคะห์โอซายิวโยรูบาจ้วงจีนซูลูอาเจะห์อาโคลิอาแดงมีอะด" + + "ืยเกอาหรับตูนิเซียแอฟริฮีลีอักเฮมไอนุอักกาดแอละแบมาอาลิวต์เกกแอลเบเนีย" + + "อัลไตใต้อังกฤษโบราณอังคิกาอราเมอิกอาเราคาเนียนอาเรานาอาราปาโฮอาหรับแอล" + + "จีเรียอาราวักอาหรับโมร็อกโกอาหรับพื้นเมืองอียิปต์อาซูภาษามืออเมริกันอั" + + "สตูเรียสโคตาวาอวธีบาลูชิบาหลีบาวาเรียบาสาบามันบาตักโทบาโคมาลาเบจาเบมบา" + + "เบตาวีเบนาบาฟัตพทคะบาลูจิตะวันตกโภชปุรีบิกอลบินีบันจาร์กมสิกสิกาพิศนุป" + + "ริยะบักติยารีพัรชบราฮุยโพโฑอาโคซีบูเรียตบูกิสบูลูบลินเมดุมบาคัดโดคาริบ" + + "คายูกาแอตแซมเซบูคีกาชิบชาชะกะไตชูกมารีชินุกจาร์กอนช็อกทอว์ชิพิวยันเชอโ" + + "รกีเชเยนเนเคิร์ดโซรานีคอปติกกาปิซนอนตุรกีไครเมียครีโอลเซเซลส์ฝรั่งเศสค" + + "าซูเบียนดาโกทาดาร์กินไททาเดลาแวร์สเลวีโดกริบดิงกาซาร์มาโฑครีซอร์บส์ตอน" + + "ล่างดูซุนกลางดัวลาดัตช์กลางโจลา-ฟอนยีดิวลาดาซากาเอ็มบูอีฟิกเอมีเลียอีย" + + "ิปต์โบราณอีกาจุกอีลาไมต์อังกฤษกลางยูพิกกลางอีวันโดเอกซ์เตรมาดูราฟองฟิล" + + "ิปปินส์ฟินแลนด์ทอร์เนดาเล็นฟอนฝรั่งเศสกาฌ็องฝรั่งเศสกลางฝรั่งเศสโบราณอ" + + "าร์พิตาฟริเซียนเหนือฟริเซียนตะวันออกฟรูลีกากากาอุซจีนกั้นกาโยกบายาดารี" + + "โซโรอัสเตอร์กีซกิลเบอร์ตกิลากีเยอรมันสูงกลางเยอรมันสูงโบราณกอนกานีของก" + + "ัวกอนดิกอรอนทาโลโกธิกเกรโบกรีกโบราณเยอรมันสวิสวายูฟราฟรากุซซีกวิชอินไฮ" + + "ดาจีนแคะฮาวายฮินดีฟิจิฮีลีกัยนนฮิตไตต์ม้งซอร์บส์ตอนบนจีนเซียงฮูปาอิบาน" + + "อิบิบิโออีโลโกอินกุชอินเกรียนอังกฤษคลีโอลจาเมกาโลชบันอึนกอมบามาชาเมยิว" + + "-เปอร์เซียยิว-อาหรับจัทการา-กาลพากกาไบลกะฉิ่นคจูคัมบากวีคาร์บาเดียคาเนมบ" + + "ูทีแยปมาคอนเดคาบูเวอร์เดียนูเกินยางโคโรเคนก่างกาสีโคตันโคย์ราชีนีโควาร" + + "์เคอร์มานิกิคาโกคาเลนจินคิมบุนดูโคมิ-เปียร์เมียคกอนกานีคูสไรกาแปลคาราไ" + + "ช-บัลคาร์คริโอกินารายอาแกรเลียนกุรุขชัมบาลาบาเฟียโคโลญคูมืยค์คูเทไนลาด" + + "ิโนแลนจีลาฮ์นดาแลมบาเลซเกียนลิงกัวฟรังกาโนวาลิกูเรียลิโวเนียลาโกตาลอมบ" + + "าร์ดมองโกโลซิลูรีเหนือลัตเกลลูบา-ลูลัวลุยเซโนลันดาลัวลูไชลูเยียจีนคลาส" + + "สิกแลซมาดูรามาฟามคหีไมถิลีมากาซาร์มันดิงกามาไซมาบามอคชามานดาร์เมนเดเมร" + + "ูมอริสเยนไอริชกลางมากัววา-มีทโทเมตามิกแมกมีนังกาเบาแมนจูมณีปุระโมฮอว์ก" + + "โมซีมารีตะวันตกมันดังหลายภาษาครีกมีรันดามารวาฑีเม็นตาไวมยีนเอียร์ซยามา" + + "ซันดารานีจีนมินหนานนาโปลีนามาเยอรมันต่ำ - แซกซอนต่ำเนวาร์นีอัสนีอูอ๋าว" + + "นากากวาซิโอจีมบูนโนไกนอร์สโบราณโนเวียลเอ็นโกโซโทเหนือเนือร์เนวาร์ดั้งเ" + + "ดิมเนียมเวซีเนียนโกเลนิโอโรนซิมาโอซากีตุรกีออตโตมันปางาซีนันปะห์ลาวีปั" + + "มปางาปาเปียเมนโตปาเลาปิการ์พิดจินเยอรมันเพนซิลเวเนียเพลาท์ดิชเปอร์เซีย" + + "โบราณเยอรมันพาลาทิเนตฟินิเชียพีดมอนต์พอนติกพอห์นเพปรัสเซียโปรวองซาลโบร" + + "าณกีเชควิชัวไฮแลนด์ชิมโบราโซราชสถานราปานูราโรทองกาโรมัณโญริฟฟิอันรอมโบ" + + "โรมานีโรทูมันรูซินโรเวียนาอาโรมาเนียนรวาซันดาเวซาฮาอราเมอิกซามาเรียแซม" + + "บูรูซาซักสันตาลีเสาราษฏร์กัมเบแซงกูซิซิลีสกอตส์ซาร์ดิเนียซาสซารีเคอร์ด" + + "ิชใต้เซนิกาเซนาเซรีเซลคุปโคย์ราโบโรเซนนีไอริชโบราณซาโมจิเตียนทาเชลีห์ท" + + "ไทใหญ่อาหรับ-ชาดซิดาโมไซลีเซียตอนล่างเซลายาร์ซามิใต้ซามิลูเลซามิอีนารี" + + "ซามิสคอลต์โซนีนเกซอกดีนซูรินาเมเซแรร์ซาโฮฟรีเซียนซัทเธอร์แลนด์ซูคูมาซู" + + "ซูซูเมอโคเมอเรียนซีเรียแบบดั้งเดิมซีเรียไซลีเซียตูลูทิมเนเตโซเทเรโนเตต" + + "ุมตีเกรทิฟโตเกเลาแซคเซอร์คลิงกอนทลิงกิตทาลิชทามาเชกไนอะซาตองกาท็อกพิซิ" + + "นตูโรโยทาโรโกซาโคเนียซิมชีแอนตัตมุสลิมทุมบูกาตูวาลูตัสซาวัคตูวาทามาไซต" + + "์แอตลาสกลางอุดมูร์ตยูการิตอุมบุนดูรูทไวเวเนโต้เวปส์เฟลมิชตะวันตกเมน-ฟร" + + "านโกเนียโวทิกโวโรวุนจูวัลเซอร์วาลาโมวาเรย์วาโชวอล์เพอร์รีจีนอู๋คัลมืยค" + + "์เมเกรเลียโซกาเย้ายัปแยงเบนเยมบาเหงงกาตุกวางตุ้งซาโปเตกบลิสซิมโบลส์เซแ" + + "ลนด์เซนากาทามาไซต์โมร็อกโกมาตรฐานซูนิไม่มีข้อมูลภาษาซาซาอาหรับมาตรฐานส" + + "มัยใหม่เยอรมัน - ออสเตรียเยอรมันสูง (สวิส)อังกฤษ - ออสเตรเลียอังกฤษ - " + + "แคนาดาอังกฤษ - สหราชอาณาจักรอังกฤษ - อเมริกันสเปน - ละตินอเมริกาสเปน -" + + " ยุโรปสเปน - เม็กซิโกฝรั่งเศส - แคนาดาฝรั่งเศส (สวิส)แซกซอนใต้เฟลมิชโปรต" + + "ุเกส - บราซิลโปรตุเกส - ยุโรปมอลโดวาเซอร์โบ-โครเอเชียสวาฮีลี-คองโกจีนต" + + "ัวย่อจีนตัวเต็ม" + +var thLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0012, 0x0024, 0x0036, 0x0054, 0x0063, 0x0078, 0x008d, 0x009f, 0x00b1, 0x00c3, 0x00db, 0x00ff, 0x0114, 0x0129, 0x0144, @@ -21662,243 +25105,248 @@ var thLangIdx = []uint16{ // 610 elements 0x0b59, 0x0b71, 0x0b80, 0x0b9b, 0x0baa, 0x0bb9, 0x0bcb, 0x0be6, 0x0bf5, 0x0c01, 0x0c13, 0x0c2e, 0x0c49, 0x0c58, 0x0c6d, 0x0c7c, 0x0c8e, 0x0ca3, 0x0caf, 0x0cc1, 0x0cd0, 0x0cd9, 0x0cf1, 0x0d1b, - 0x0d33, 0x0d42, 0x0d51, 0x0d6c, 0x0d7e, 0x0d90, 0x0da2, 0x0db4, - 0x0dc3, 0x0dd5, 0x0de4, 0x0dfc, 0x0e11, 0x0e23, 0x0e32, 0x0e4a, - 0x0e53, 0x0e65, 0x0e71, 0x0e7a, 0x0e86, 0x0e9b, 0x0ead, 0x0ec2, - 0x0ed7, 0x0f01, 0x0f1c, 0x0f2e, 0x0f3a, 0x0f4c, 0x0f64, 0x0f79, + 0x0d33, 0x0d42, 0x0d51, 0x0d69, 0x0d7b, 0x0d8d, 0x0d9f, 0x0db1, + 0x0dc0, 0x0dd2, 0x0de1, 0x0df9, 0x0e0e, 0x0e20, 0x0e2f, 0x0e47, + 0x0e50, 0x0e62, 0x0e6e, 0x0e77, 0x0e83, 0x0e98, 0x0eaa, 0x0ebf, + 0x0ed4, 0x0efe, 0x0f19, 0x0f2b, 0x0f37, 0x0f49, 0x0f61, 0x0f76, // Entry C0 - FF - 0x0f9d, 0x0fb5, 0x0fd6, 0x0feb, 0x1003, 0x1027, 0x103c, 0x1054, - 0x1081, 0x1096, 0x10c0, 0x1102, 0x110e, 0x113b, 0x1159, 0x116b, - 0x1177, 0x1189, 0x1198, 0x11b0, 0x11bc, 0x11cb, 0x11e6, 0x11f8, - 0x1204, 0x1213, 0x1225, 0x1231, 0x1240, 0x124c, 0x1276, 0x128b, - 0x129a, 0x12a6, 0x12bb, 0x12c1, 0x12d6, 0x12f4, 0x130f, 0x131b, - 0x132d, 0x1339, 0x134b, 0x1360, 0x136f, 0x137b, 0x1387, 0x139c, - 0x13ab, 0x13ba, 0x13cc, 0x13de, 0x13ea, 0x13f6, 0x1405, 0x1417, - 0x1420, 0x142c, 0x1450, 0x1468, 0x1480, 0x1495, 0x14aa, 0x14ce, + 0x0f9a, 0x0fb2, 0x0fd3, 0x0fe8, 0x1000, 0x1024, 0x1039, 0x1051, + 0x107e, 0x107e, 0x1093, 0x10bd, 0x10ff, 0x110b, 0x1138, 0x1156, + 0x1168, 0x1174, 0x1186, 0x1195, 0x11ad, 0x11b9, 0x11c8, 0x11e3, + 0x11f5, 0x1201, 0x1210, 0x1222, 0x122e, 0x123d, 0x1249, 0x1270, + 0x1285, 0x1294, 0x12a0, 0x12b5, 0x12bb, 0x12d0, 0x12ee, 0x1309, + 0x1315, 0x1327, 0x1333, 0x1345, 0x135a, 0x1369, 0x1375, 0x1381, + 0x1396, 0x13a5, 0x13b4, 0x13c6, 0x13d8, 0x13e4, 0x13f0, 0x13ff, + 0x1411, 0x141a, 0x1426, 0x144a, 0x1462, 0x147a, 0x148f, 0x14a4, // Entry 100 - 13F - 0x14e0, 0x14f8, 0x151c, 0x1537, 0x1549, 0x155e, 0x156a, 0x1582, - 0x1591, 0x15a3, 0x15b2, 0x15c4, 0x15d3, 0x15fd, 0x1618, 0x1627, - 0x1642, 0x165e, 0x166d, 0x167f, 0x1691, 0x16a0, 0x16b8, 0x16dc, - 0x16f1, 0x1709, 0x1727, 0x1742, 0x1757, 0x1781, 0x178a, 0x17a8, - 0x17e4, 0x17ed, 0x1817, 0x183b, 0x1862, 0x187a, 0x18a1, 0x18d1, - 0x18e0, 0x18e6, 0x18fb, 0x190d, 0x1919, 0x1928, 0x1958, 0x1961, - 0x197c, 0x198e, 0x19b8, 0x19e5, 0x1a0c, 0x1a1b, 0x1a36, 0x1a45, - 0x1a54, 0x1a6f, 0x1a90, 0x1a9c, 0x1aae, 0x1abd, 0x1ad2, 0x1ade, + 0x14c8, 0x14da, 0x14f2, 0x1516, 0x1555, 0x1570, 0x1582, 0x1597, + 0x15a3, 0x15bb, 0x15ca, 0x15dc, 0x15eb, 0x15fd, 0x160c, 0x1636, + 0x1651, 0x1660, 0x167b, 0x1697, 0x16a6, 0x16b8, 0x16ca, 0x16d9, + 0x16f1, 0x1715, 0x172a, 0x1742, 0x1760, 0x177b, 0x1790, 0x17ba, + 0x17c3, 0x17e1, 0x181d, 0x1826, 0x1850, 0x1874, 0x189b, 0x18b3, + 0x18da, 0x190a, 0x1919, 0x191f, 0x1934, 0x1949, 0x1955, 0x1964, + 0x1994, 0x199d, 0x19b8, 0x19ca, 0x19f4, 0x1a21, 0x1a48, 0x1a57, + 0x1a72, 0x1a81, 0x1a90, 0x1aab, 0x1acc, 0x1ad8, 0x1aea, 0x1af9, // Entry 140 - 17F - 0x1af0, 0x1aff, 0x1b1a, 0x1b35, 0x1b4a, 0x1b53, 0x1b77, 0x1b8f, - 0x1b9b, 0x1baa, 0x1bc2, 0x1bd4, 0x1be6, 0x1c01, 0x1c37, 0x1c49, - 0x1c61, 0x1c73, 0x1c98, 0x1cb4, 0x1cbd, 0x1cdc, 0x1ceb, 0x1cfd, - 0x1d06, 0x1d15, 0x1d1e, 0x1d3c, 0x1d51, 0x1d60, 0x1d75, 0x1da2, - 0x1db7, 0x1dc3, 0x1dd8, 0x1de4, 0x1df3, 0x1e11, 0x1e23, 0x1e44, - 0x1e50, 0x1e68, 0x1e80, 0x1eae, 0x1ec3, 0x1ed2, 0x1ee1, 0x1f09, - 0x1f18, 0x1f33, 0x1f4b, 0x1f5a, 0x1f6f, 0x1f81, 0x1f90, 0x1fa5, - 0x1fb7, 0x1fc9, 0x1fd8, 0x1fed, 0x1ffc, 0x2014, 0x2044, 0x205c, + 0x1b0e, 0x1b1a, 0x1b2c, 0x1b3b, 0x1b56, 0x1b71, 0x1b86, 0x1b8f, + 0x1bb3, 0x1bcb, 0x1bd7, 0x1be6, 0x1bfe, 0x1c10, 0x1c22, 0x1c3d, + 0x1c73, 0x1c85, 0x1c9d, 0x1caf, 0x1cd4, 0x1cf0, 0x1cf9, 0x1d18, + 0x1d27, 0x1d39, 0x1d42, 0x1d51, 0x1d5a, 0x1d78, 0x1d8d, 0x1d9c, + 0x1db1, 0x1dde, 0x1df3, 0x1dff, 0x1e14, 0x1e20, 0x1e2f, 0x1e4d, + 0x1e5f, 0x1e80, 0x1e8c, 0x1ea4, 0x1ebc, 0x1eea, 0x1eff, 0x1f0e, + 0x1f1d, 0x1f45, 0x1f54, 0x1f6f, 0x1f87, 0x1f96, 0x1fab, 0x1fbd, + 0x1fcc, 0x1fe1, 0x1ff3, 0x2005, 0x2014, 0x2029, 0x2038, 0x2050, // Entry 180 - 1BF - 0x2074, 0x2086, 0x209e, 0x20ad, 0x20b9, 0x20d4, 0x20e6, 0x2102, - 0x2117, 0x2126, 0x212f, 0x213b, 0x214d, 0x216b, 0x2174, 0x2186, - 0x2192, 0x219e, 0x21b0, 0x21c8, 0x21e0, 0x21ec, 0x21f8, 0x2207, - 0x221c, 0x222b, 0x2237, 0x224f, 0x226a, 0x228f, 0x229b, 0x22ad, - 0x22cb, 0x22da, 0x22ef, 0x2304, 0x2310, 0x2331, 0x2343, 0x235b, - 0x2367, 0x237c, 0x2391, 0x23a9, 0x23b5, 0x23d0, 0x23f1, 0x240f, - 0x2421, 0x242d, 0x2469, 0x247b, 0x248a, 0x2496, 0x24ae, 0x24c3, - 0x24d5, 0x24e1, 0x24ff, 0x2514, 0x2526, 0x2541, 0x2553, 0x257d, + 0x2080, 0x2098, 0x20b0, 0x20c2, 0x20da, 0x20e9, 0x20f5, 0x2110, + 0x2122, 0x213e, 0x2153, 0x2162, 0x216b, 0x2177, 0x2189, 0x21a7, + 0x21b0, 0x21c2, 0x21ce, 0x21da, 0x21ec, 0x2204, 0x221c, 0x2228, + 0x2234, 0x2243, 0x2258, 0x2267, 0x2273, 0x228b, 0x22a6, 0x22cb, + 0x22d7, 0x22e9, 0x2307, 0x2316, 0x232b, 0x2340, 0x234c, 0x236d, + 0x237f, 0x2397, 0x23a3, 0x23b8, 0x23cd, 0x23e5, 0x23f1, 0x240c, + 0x242d, 0x244b, 0x245d, 0x2469, 0x24a5, 0x24b7, 0x24c6, 0x24d2, + 0x24ea, 0x24ff, 0x2511, 0x251d, 0x253b, 0x2550, 0x2562, 0x257d, // Entry 1C0 - 1FF - 0x2598, 0x25b3, 0x25c5, 0x25d4, 0x25e6, 0x260d, 0x2628, 0x2640, - 0x2655, 0x2676, 0x2685, 0x2697, 0x26d0, 0x26eb, 0x2715, 0x2745, - 0x275d, 0x2775, 0x2787, 0x279c, 0x27b4, 0x27de, 0x27ea, 0x282c, - 0x2841, 0x2853, 0x286e, 0x2883, 0x289b, 0x28aa, 0x28bc, 0x28d1, - 0x28e0, 0x28f8, 0x2919, 0x2922, 0x2937, 0x2943, 0x2973, 0x2988, - 0x2997, 0x29ac, 0x29c7, 0x29d6, 0x29e5, 0x29f7, 0x2a09, 0x2a3c, - 0x2a5d, 0x2a6f, 0x2a7b, 0x2a87, 0x2a99, 0x2ac6, 0x2ae4, 0x2b05, - 0x2b20, 0x2b32, 0x2b4e, 0x2b60, 0x2b8d, 0x2ba5, 0x2bba, 0x2bd2, + 0x258f, 0x25b9, 0x25d4, 0x25ef, 0x2601, 0x2610, 0x2622, 0x2649, + 0x2664, 0x267c, 0x2691, 0x26b2, 0x26c1, 0x26d3, 0x26e5, 0x271e, + 0x2739, 0x2763, 0x2793, 0x27ab, 0x27c3, 0x27d5, 0x27ea, 0x2802, + 0x282c, 0x2838, 0x287a, 0x288f, 0x28a1, 0x28bc, 0x28d1, 0x28e9, + 0x28f8, 0x290a, 0x291f, 0x292e, 0x2946, 0x2967, 0x2970, 0x2985, + 0x2991, 0x29c1, 0x29d6, 0x29e5, 0x29fa, 0x2a15, 0x2a24, 0x2a33, + 0x2a45, 0x2a57, 0x2a8a, 0x2aab, 0x2abd, 0x2ac9, 0x2ad5, 0x2ae7, + 0x2b14, 0x2b32, 0x2b53, 0x2b6e, 0x2b80, 0x2b9c, 0x2bae, 0x2bdb, // Entry 200 - 23F - 0x2bf0, 0x2c0e, 0x2c23, 0x2c35, 0x2c4d, 0x2c5f, 0x2c6b, 0x2caa, - 0x2cbc, 0x2cc8, 0x2cd7, 0x2cf5, 0x2d28, 0x2d3a, 0x2d52, 0x2d5e, - 0x2d6d, 0x2d79, 0x2d8b, 0x2d9a, 0x2da9, 0x2db2, 0x2dc7, 0x2ddf, - 0x2df4, 0x2e09, 0x2e18, 0x2e2d, 0x2e4e, 0x2e69, 0x2e7b, 0x2e8d, - 0x2ea5, 0x2ebd, 0x2ed8, 0x2eed, 0x2eff, 0x2f17, 0x2f23, 0x2f59, - 0x2f71, 0x2f86, 0x2f9e, 0x2fa7, 0x2fad, 0x2fc2, 0x2fd1, 0x2ff8, - 0x3020, 0x302f, 0x303b, 0x304a, 0x3062, 0x3074, 0x3086, 0x3092, - 0x30b3, 0x30c5, 0x30dd, 0x30f8, 0x3104, 0x3110, 0x3119, 0x312b, + 0x2bf3, 0x2c08, 0x2c20, 0x2c3e, 0x2c5c, 0x2c71, 0x2c83, 0x2c9b, + 0x2cad, 0x2cb9, 0x2cf8, 0x2d0a, 0x2d16, 0x2d25, 0x2d43, 0x2d76, + 0x2d88, 0x2da0, 0x2dac, 0x2dbb, 0x2dc7, 0x2dd9, 0x2de8, 0x2df7, + 0x2e00, 0x2e15, 0x2e2d, 0x2e42, 0x2e57, 0x2e66, 0x2e7b, 0x2e9c, + 0x2eb7, 0x2ec9, 0x2edb, 0x2ef3, 0x2f0b, 0x2f26, 0x2f3b, 0x2f4d, + 0x2f65, 0x2f71, 0x2fa7, 0x2fbf, 0x2fd4, 0x2fec, 0x2ff5, 0x2ffb, + 0x3010, 0x301f, 0x3046, 0x306e, 0x307d, 0x3089, 0x3098, 0x30b0, + 0x30c2, 0x30d4, 0x30e0, 0x3101, 0x3113, 0x312b, 0x3146, 0x3152, // Entry 240 - 27F - 0x313a, 0x3152, 0x316a, 0x317f, 0x31a3, 0x31b8, 0x31ca, 0x320f, - 0x321b, 0x3248, 0x3254, 0x3293, 0x3293, 0x32c3, 0x32f0, 0x3323, - 0x334a, 0x3386, 0x33b3, 0x33e6, 0x3404, 0x342b, 0x342b, 0x3458, - 0x347f, 0x349a, 0x34ac, 0x34d9, 0x3503, 0x3518, 0x3549, 0x356e, - 0x3589, 0x35a7, -} // Size: 1244 bytes - -var trLangStr string = "" + // Size: 5557 bytes + 0x315e, 0x3167, 0x3179, 0x3188, 0x31a0, 0x31b8, 0x31cd, 0x31f1, + 0x3206, 0x3218, 0x325d, 0x3269, 0x3296, 0x32a2, 0x32e1, 0x32e1, + 0x3311, 0x333e, 0x3371, 0x3398, 0x33d4, 0x3401, 0x3434, 0x3452, + 0x3479, 0x3479, 0x34a6, 0x34cd, 0x34e8, 0x34fa, 0x3527, 0x3551, + 0x3566, 0x3597, 0x35bc, 0x35d7, 0x35f5, +} // Size: 1250 bytes + +const trLangStr string = "" + // Size: 5927 bytes "AfarAbhazcaAvestçeAfrikaancaAkanAmharcaAragoncaArapçaAssamcaAvar DiliAym" + - "araAzericeBaşkırtçaBeyaz RusçaBulgarcaBislamaBambaraBengalceTibetçeBreto" + - "ncaBoşnakçaKatalancaÇeçenceChamorroKorsikacaCreeÇekçeKilise SlavcasıÇuva" + - "şçaGalceDancaAlmancaDivehiButan DiliEweYunancaİngilizceEsperantoİspanyo" + - "lcaEstoncaBaskçaFarsçaFulahFinceFiji DiliFaroe DiliFransızcaBatı Frizces" + - "iİrlandacaİskoç Gal DiliGaliçyacaGuarani DiliGüceratçaManksHausaİbranice" + - "HintçeHiri MotuHırvatçaHaiti DiliMacarcaErmeniceHereroInterlinguaEndonez" + - "ceInterlingueİbo DiliSichuan YiInupiakIdoİzlandacaİtalyancaInuktitutJapo" + - "ncaCava DiliGürcüceKongoKikuyuKuanyamaKazakçaGrönland DiliKmerceKannadaK" + - "oreceKanuriKeşmirceKürtçeKomiKernevekçeKırgızcaLatinceLüksemburgcaGandaL" + - "imburgcaLingalaLaocaLitvancaLuba-KatangaLetoncaMalgaşçaMarshall Adaları " + - "DiliMaori DiliMakedoncaMalayalamMoğolcaMarathiMalaycaMaltacaBurmacaNauru" + - " DiliKuzey NdebeleNepalceNdongaHollandacaNorveççe NynorskNorveççe Bokmål" + - "Güney NdebeleNavaho DiliNyanjaOccitanOjibva DiliOromoOriya DiliOsetçePen" + - "capçaPaliLehçePeştucaPortekizceKeçuvacaRomanşçaKirundiRomenceRusçaKinyar" + - "wandaSanskritçeSardunya DiliSindhiKuzey SamiSangoSeylancaSlovakçaSlovenc" + - "eSamoa DiliShonaSomaliceArnavutçaSırpçaSisvatiGüney SothoSunda Diliİsveç" + - "çeSvahiliTamilceTelugu DiliTacikçeTaycaTigrinyaTürkmenceSetsvanaTongaca" + - "TürkçeTsongaTatarcaTahiti DiliUygurcaUkraynacaUrducaÖzbekçeVendaVietnamc" + - "aVolapükValoncaVolofçaZosaYidişYorubacaZhuangÇinceZulucaAchineseAcoliAda" + - "ngmeAdigeceTunus ArapçasıAfrihiliAghemAyni DiliAkad DiliAlabamacaAleutGh" + - "eg ArnavutçasıGüney AltaycaEski İngilizceAngikaAramiceAraukanya DiliArao" + - "naArapaho DiliCezayir ArapçasıArawak DiliFas ArapçasıMısır ArapçasıAsuAm" + - "erikan İşaret DiliAsturyascaKotavaAwadhiBaluchiBali DiliBavyera DiliBasa" + - " DiliBamunBatak TobaGhomalaBeja DiliBembaBetawiBenaBafutBadagaBatı Baloc" + - "hiArayaniceBikolBiniBanjar DiliKomSiksikaBishnupriyaBahtiyariBrajBrohice" + - "BodoAkooseBuryatBugisBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoKigacaCh" + - "ibchaÇağatay DiliChuukeseMariChinook JargonChoctawChipewyanÇerokiceŞayen" + - " DiliOrta KürtçeKıpticeCapiznonKırım TürkçesiKashubianDakotaDarginceTait" + - "aDelawareSlaveyDogribDinkaZarmaDogriAşağı SorbçaOrta KadazanDualaOrtaçağ" + - " FelemenkçesiJola-FonyiDyulaDazagaEmbuEfikEmilia DiliEski Mısır DiliEkaj" + - "ukElamOrtaçağ İngilizcesiMerkezi YupikçeEwondoEkstremadura DiliFangFilip" + - "inceTornedalin FincesiFonCajun FransızcasıOrtaçağ FransızcasıEski Fransı" + - "zcaArpitancaKuzey FrizceDoğu FrizcesiFriulianGaGagavuzcaGan ÇincesiGayoG" + - "bayaZerdüşt DaricesiGeezKiribati DiliGilaniceOrtaçağ Yüksek AlmancasıEsk" + - "i Yüksek AlmancaGoa KonkanicesiGondiGorontaloGotçaGreboAntik Yunancaİsvi" + - "çre AlmancasıWayuuFrafraGusiiGwichʼinHaidaHakka ÇincesiHawaii DiliFiji " + - "HintçesiHiligaynonHititçeHmongYukarı SorbçaXiang ÇincesiHupaIbanIbibioIl" + - "okoİnguşçaİngriya DiliJamaika Patois DiliLojbanNgombaMachameYahudi Farsç" + - "asıYahudi ArapçasıYutland DiliKarakalpakçaKabiliyeceKaçinJjuKambaKawiKab" + - "ardeyceKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiHotancaKoyr" + - "a ChiiniÇitral DiliKırmanççaKakoKalenjinKimbunduKomi-PermyakKonkaniKosra" + - "eanKpelleKaraçay-BalkarcaKrioKinaray-aKarelyacaKurukhShambalaBafiaKöln D" + - "iyalektiKumukçaKutenaiLadinoLangiLahndaLambaLezgiceLingua Franca NovaLig" + - "urcaLivoncaLakotacaLombardçaMongoLoziKuzey LuriLatgalianLuba-LuluaLuisen" + - "oLundaLuoLushaiLuyiaEdebi ÇinceLazcaMadura DiliMafaMagahiMaithiliMakasar" + - "MandingoMasaiMabaMokşa DiliMandarMendeMeruMorisyenOrtaçağ İrlandacasıMak" + - "huwa-MeettoMeta’MicmacMinangkabauMançurya DiliManipuriMohavk DiliMossiOv" + - "a ÇirmişçesiMundangBirden Fazla DilCreekMiranda DiliMarvariMentawaiMyene" + - "ErzyaMazenderancaMin Nan ÇincesiNapoliceNamaAşağı AlmancaNevariNiasNiuea" + - "nAo NagaKwasioNgiemboonNogaycaEski NorseNovialN’KoKuzey SothoNuerKlasik " + - "NevariNyamveziNyankoleNyoroNzimaOsageOsmanlı TürkçesiPangasinanPehlevi D" + - "iliPampangaPapiamentoPalau DiliPicard DiliPensilvanya AlmancasıPlautdiet" + - "schEski FarsçaPalatin AlmancasıFenike DiliPiyemonteceKuzeybatı KafkasyaP" + - "ohnpeianPrusyacaEski ProvensalKiçeceChimborazo Highland QuichuaRajasthan" + - "iRapanuiRarotonganRomanyolcaRif BerbericesiRomboRomancaRotumanRusinceRov" + - "ianaUlahçaRwaSandaveYakutçaSamarit AramcasıSamburuSasakSantaliSaurashtra" + - "NgambaySanguSicilyacaScotsSassari SarducaGüney KürtçesiSenecaSenaSeriSel" + - "kupKoyraboro SenniEski İrlandacaSamogitçeTaşelhitShan DiliÇad ArapçasıSi" + - "damoAşağı SilezyacaSelayarGüney SamiLule SamiInari SamiSkolt SamiSoninke" + - "Sogdiana DiliSranan TongoSererSahoSaterland FrizcesiSukumaSusuSümerceKom" + - "orcaKlasik SüryaniceSüryaniceSilezyacaTulucaTimneTesoTerenoTetumTigreTiv" + - "TokelauSahurcaKlingoncaTlingitTalışçaTamaşekNyasa TongaTok PisinTuroyoTa" + - "rokoTsakoncaTsimshianTatçaTumbukaTuvaluTasawaqTuvacaOrta Fas TamazigtiUd" + - "murtçaUgarit DiliUmbunduKökenVaiVenedikçeVepsBatı FlamancaMain Frankonya" + - " DiliVoticVõroVunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiKalmıkçaMegrel" + - "ceSogaYaoYapçaYangbenYembaNheengatuKantoncaZapotek DiliBlis SembolleriZe" + - "landacaZenagaStandart Berberi Dili TamazightZuniDilbilim içeriği yokZaza" + - "caModern Standart ArapçaGüney AzericeAvusturya Almancasıİsviçre Yüksek A" + - "lmancasıAvustralya İngilizcesiKanada İngilizcesiİngiliz İngilizcesiAmeri" + - "kan İngilizcesiLatin Amerika İspanyolcasıAvrupa İspanyolcasıMeksika İspa" + - "nyolcasıKanada Fransızcasıİsviçre FransızcasıAşağı SaksoncaFlamancaBrezi" + - "lya PortekizcesiAvrupa PortekizcesiMoldovacaSırp-Hırvat DiliKongo Svahil" + - "iBasitleştirilmiş ÇinceGeleneksel Çince" - -var trLangIdx = []uint16{ // 610 elements + "araAzericeBaşkırtçaBelarusçaBulgarcaBislamaBambaraBengalceTibetçeBretonc" + + "aBoşnakçaKatalancaÇeçenceÇamorro diliKorsikacaKriceÇekçeKilise SlavcasıÇ" + + "uvaşçaGalceDancaAlmancaDivehi diliDzongkhaEweYunancaİngilizceEsperantoİs" + + "panyolcaEstoncaBaskçaFarsçaFula diliFinceFiji DiliFaroe DiliFransızcaBat" + + "ı Frizcesiİrlandacaİskoç GaelcesiGaliçyacaGuarani diliGüceratçaManksHau" + + "sa diliİbraniceHintçeHiri MotuHırvatçaHaiti KreyoluMacarcaErmeniceHerero" + + " diliInterlinguaEndonezceInterlingueİbo diliSichuan YiİnyupikçeIdoİzland" + + "acaİtalyancaİnuit diliJaponcaCava DiliGürcüceKongo diliKikuyuKuanyamaKaz" + + "akçaGrönland diliKmerceKannada diliKoreceKanuri diliKeşmir diliKürtçeKom" + + "iKernevekçeKırgızcaLatinceLüksemburgcaGandaLimburgcaLingalaLao diliLitva" + + "ncaLuba-KatangaLetoncaMalgaşçaMarshall Adaları diliMaori diliMakedoncaMa" + + "layalam diliMoğolcaMarathiMalaycaMaltacaBurmacaNauru diliKuzey NdebeleNe" + + "palceNdongaFelemenkçeNorveççe NynorskNorveççe BokmålGüney NdebeleNavaho " + + "diliNyanjaOksitan diliOjibva diliOromo diliOriya DiliOsetçePencapçaPaliL" + + "ehçePeştucaPortekizceKeçuva diliRomanşçaKirundiRumenceRusçaKinyarwandaSa" + + "nskritSardunya diliSindhiKuzey LaponcasıSangoSeylancaSlovakçaSlovenceSam" + + "oa diliShonaSomaliceArnavutçaSırpçaSisvatiGüney Sotho diliSunda Diliİsve" + + "ççeSvahiliTamilceTelugu diliTacikçeTaycaTigrinyaTürkmenceSetsvanaTonga " + + "diliTürkçeTsongaTatarcaTahiti diliUygurcaUkraynacaUrducaÖzbekçeVenda dil" + + "iVietnamcaVolapükValoncaVolofçaZosa diliYidişYorubacaZhuangcaÇinceZuluca" + + "AçeceAcoliAdangmeAdigeceTunus ArapçasıAfrihiliAghemAyni DiliAkad DiliAla" + + "bamacaAleut diliGheg ArnavutçasıGüney AltaycaEski İngilizceAngikaAramice" + + "Mapuçe diliAraonaArapaho DiliCezayir ArapçasıArawak DiliFas ArapçasıMısı" + + "r ArapçasıAsuAmerikan İşaret DiliAsturyascaKotavaAwadhiBeluççaBali diliB" + + "avyera diliBasa DiliBamunBatak TobaGhomalaBeja diliBembaBetawiBenaBafutB" + + "adagaBatı BalochiArayaniceBikolBiniBanjar DiliKomKaraayak diliBishnupriy" + + "aBahtiyariBrajBrohiceBodoAkooseBuryatçaBugisBuluBlinMedumbaKado diliCari" + + "bKayuga diliAtsamSebuano diliKigacaÇibça diliÇağataycaChuukeseMari diliÇ" + + "inuk diliÇoktav diliÇipevya diliÇerokiceŞayenceOrta KürtçeKıpticeCapizno" + + "nKırım TürkçesiSeselwa Kreole FransızcasıKashubianDakotacaDarginceTaitaD" + + "elawareSlavey diliDogribDinka diliZarmaDogriAşağı SorbçaOrta KadazanDual" + + "aOrtaçağ FelemenkçesiJola-FonyiDyulaDazagaEmbuEfikEmilia DiliEski Mısır " + + "DiliEkajukElamOrtaçağ İngilizcesiMerkezi YupikçeEwondoEkstremadura DiliF" + + "angFilipinceTornedalin FincesiFonCajun FransızcasıOrtaçağ FransızcasıEsk" + + "i FransızcaArpitancaKuzey FrizceDoğu FrizcesiFriuli diliGa diliGagavuzca" + + "Gan ÇincesiGayo diliGbayaZerdüşt DaricesiGeezKiribaticeGilaniceOrtaçağ Y" + + "üksek AlmancasıEski Yüksek AlmancaGoa KonkanicesiGondi diliGorontalo di" + + "liGotçaGrebo diliAntik Yunancaİsviçre AlmancasıWayuu diliFrafraGusiiGuçi" + + "nceHaydacaHakka ÇincesiHawaii diliFiji HintçesiHiligaynon diliHititçeHmo" + + "ngYukarı SorbçaXiang ÇincesiHupacaIbanİbibio diliIlokoİnguşçaİngriya Dil" + + "iJamaika Patois DiliLojbanNgombaMachameYahudi FarsçasıYahudi ArapçasıYut" + + "land DiliKarakalpakçaKabiliyeceKaçin diliJjuKambaKawiKabardeyceKanembuTy" + + "apMakondeKabuverdianuKenyangKoroKaingangKhasi diliHotancaKoyra ChiiniÇit" + + "ral DiliKırmanççaKakoKalenjinKimbunduKomi-PermyakKonkani diliKosraeanKpe" + + "lle diliKaraçay-BalkarcaKrioKinaray-aKarelyacaKurukhShambalaBafiaKöln le" + + "hçesiKumukçaKutenai diliLadinoLangiLahndaLamba diliLezgiceLingua Franca " + + "NovaLigurcaLivoncaLakotacaLombardçaMongoLoziKuzey LuriLatgalianLuba-Lulu" + + "aLuisenoLundaLuoLushaiLuyiaEdebi ÇinceLazcaMadura DiliMafaMagahiMaithili" + + "MakasarMandingoMasaiMabaMokşa diliMandarMende diliMeruMorisyenOrtaçağ İr" + + "landacasıMakhuwa-MeettoMeta’MicmacMinangkabauMançurya diliManipuri diliM" + + "ohavk diliMossiOva ÇirmişçesiMundangBirden Fazla DilKrikçeMiranda diliMa" + + "rvariMentawaiMyeneErzyaMazenderancaMin Nan ÇincesiNapoliceNamaAşağı Alma" + + "ncaNevariNiasNiue diliAo NagaKwasioNgiemboonNogaycaEski Nors diliNovialN" + + "’KoKuzey Sotho diliNuerKlasik NevariNyamveziNyankoleNyoroNzima diliOsa" + + "geOsmanlı TürkçesiPangasinan diliPehlevi DiliPampangaPapiamentoPalau dil" + + "iPicard DiliNijerya Pidgin diliPensilvanya AlmancasıPlautdietschEski Far" + + "sçaPalatin AlmancasıFenike diliPiyemonteceKuzeybatı KafkasyaPohnpeianPru" + + "syacaEski ProvensalKiçeceChimborazo Highland QuichuaRajasthaniRapanui di" + + "liRarotonganRomanyolcaRif BerbericesiRomboRomancaRotumanRusinceRovianaUl" + + "ahçaRwaSandaveYakutçaSamarit AramcasıSamburuSasakSantaliSaurashtraNgamba" + + "ySanguSicilyacaİskoççaSassari SarducaGüney KürtçesiSeneca diliSenaSeriSe" + + "lkup diliKoyraboro SenniEski İrlandacaSamogitçeTaşelhitShan diliÇad Arap" + + "çasıSidamo diliAşağı SilezyacaSelayarGüney LaponcasıLule Laponcasıİnari" + + " LaponcasıSkolt LaponcasıSoninkeSogdiana DiliSranan TongoSerer diliSahoS" + + "aterland FrizcesiSukuma diliSusuSümerceKomorcaKlasik SüryaniceSüryaniceS" + + "ilezyacaTulucaTimneTesoTerenoTetumTigreTivTokelau diliSahurcaKlingoncaTl" + + "ingitTalışçaTamaşekNyasa TongaTok PisinTuroyoTarokoTsakoncaTsimshianTatç" + + "aTumbukaTuvalyancaTasawaqTuvacaOrta Atlas TamazigtiUdmurtçaUgarit diliUm" + + "bunduKökenVaiVenedikçeVeps diliBatı FlamancaMain Frankonya DiliVotçaVõro" + + "VunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiKalmıkçaMegrelceSogaYaoYapça" + + "YangbenYembaNheengatuKantoncaZapotek diliBlis SembolleriZelandacaZenaga " + + "diliStandart Fas TamazigtiZuniceDilbilim içeriği yokZazacaModern Standar" + + "t ArapçaGüney AzericeAvusturya Almancasıİsviçre Yüksek AlmancasıAvustral" + + "ya İngilizcesiKanada İngilizcesiİngiliz İngilizcesiAmerikan İngilizcesiL" + + "atin Amerika İspanyolcasıAvrupa İspanyolcasıMeksika İspanyolcasıKanada F" + + "ransızcasıİsviçre FransızcasıAşağı SaksoncaFlamancaBrezilya Portekizcesi" + + "Avrupa PortekizcesiMoldovacaSırp-Hırvat DiliKongo SvahiliBasitleştirilmi" + + "ş ÇinceGeleneksel Çince" + +var trLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000b, 0x0013, 0x001d, 0x0021, 0x0028, 0x0030, - 0x0037, 0x003e, 0x0047, 0x004d, 0x0054, 0x0060, 0x006c, 0x0074, - 0x007b, 0x0082, 0x008a, 0x0092, 0x009a, 0x00a4, 0x00ad, 0x00b6, - 0x00be, 0x00c7, 0x00cb, 0x00d2, 0x00e2, 0x00ec, 0x00f1, 0x00f6, - 0x00fd, 0x0103, 0x010d, 0x0110, 0x0117, 0x0121, 0x012a, 0x0135, - 0x013c, 0x0143, 0x014a, 0x014f, 0x0154, 0x015d, 0x0167, 0x0171, - 0x017f, 0x0189, 0x0199, 0x01a3, 0x01af, 0x01ba, 0x01bf, 0x01c4, - 0x01cd, 0x01d4, 0x01dd, 0x01e7, 0x01f1, 0x01f8, 0x0200, 0x0206, + 0x0037, 0x003e, 0x0047, 0x004d, 0x0054, 0x0060, 0x006a, 0x0072, + 0x0079, 0x0080, 0x0088, 0x0090, 0x0098, 0x00a2, 0x00ab, 0x00b4, + 0x00c1, 0x00ca, 0x00cf, 0x00d6, 0x00e6, 0x00f0, 0x00f5, 0x00fa, + 0x0101, 0x010c, 0x0114, 0x0117, 0x011e, 0x0128, 0x0131, 0x013c, + 0x0143, 0x014a, 0x0151, 0x015a, 0x015f, 0x0168, 0x0172, 0x017c, + 0x018a, 0x0194, 0x01a4, 0x01ae, 0x01ba, 0x01c5, 0x01ca, 0x01d4, + 0x01dd, 0x01e4, 0x01ed, 0x01f7, 0x0204, 0x020b, 0x0213, 0x021e, // Entry 40 - 7F - 0x0211, 0x021a, 0x0225, 0x022e, 0x0238, 0x023f, 0x0242, 0x024c, - 0x0256, 0x025f, 0x0266, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b, - 0x0293, 0x02a1, 0x02a7, 0x02ae, 0x02b4, 0x02ba, 0x02c3, 0x02cb, - 0x02cf, 0x02da, 0x02e4, 0x02eb, 0x02f8, 0x02fd, 0x0306, 0x030d, - 0x0312, 0x031a, 0x0326, 0x032d, 0x0337, 0x034d, 0x0357, 0x0360, - 0x0369, 0x0371, 0x0378, 0x037f, 0x0386, 0x038d, 0x0397, 0x03a4, - 0x03ab, 0x03b1, 0x03bb, 0x03cd, 0x03df, 0x03ed, 0x03f8, 0x03fe, - 0x0405, 0x0410, 0x0415, 0x041f, 0x0426, 0x042f, 0x0433, 0x0439, + 0x0229, 0x0232, 0x023d, 0x0246, 0x0250, 0x025b, 0x025e, 0x0268, + 0x0272, 0x027d, 0x0284, 0x028d, 0x0296, 0x02a0, 0x02a6, 0x02ae, + 0x02b6, 0x02c4, 0x02ca, 0x02d6, 0x02dc, 0x02e7, 0x02f3, 0x02fb, + 0x02ff, 0x030a, 0x0314, 0x031b, 0x0328, 0x032d, 0x0336, 0x033d, + 0x0345, 0x034d, 0x0359, 0x0360, 0x036a, 0x0380, 0x038a, 0x0393, + 0x03a1, 0x03a9, 0x03b0, 0x03b7, 0x03be, 0x03c5, 0x03cf, 0x03dc, + 0x03e3, 0x03e9, 0x03f4, 0x0406, 0x0418, 0x0426, 0x0431, 0x0437, + 0x0443, 0x044e, 0x0458, 0x0462, 0x0469, 0x0472, 0x0476, 0x047c, // Entry 80 - BF - 0x0441, 0x044b, 0x0454, 0x045e, 0x0465, 0x046c, 0x0472, 0x047d, - 0x0488, 0x0495, 0x049b, 0x04a5, 0x04aa, 0x04b2, 0x04bb, 0x04c3, - 0x04cd, 0x04d2, 0x04da, 0x04e4, 0x04ec, 0x04f3, 0x04ff, 0x0509, - 0x0513, 0x051a, 0x0521, 0x052c, 0x0534, 0x0539, 0x0541, 0x054b, - 0x0553, 0x055a, 0x0562, 0x0568, 0x056f, 0x057a, 0x0581, 0x058a, - 0x0590, 0x0599, 0x059e, 0x05a7, 0x05af, 0x05b6, 0x05be, 0x05c2, - 0x05c8, 0x05d0, 0x05d6, 0x05dc, 0x05e2, 0x05ea, 0x05ef, 0x05f6, - 0x05fd, 0x060d, 0x0615, 0x061a, 0x0623, 0x062c, 0x0635, 0x063a, + 0x0484, 0x048e, 0x049a, 0x04a4, 0x04ab, 0x04b2, 0x04b8, 0x04c3, + 0x04cb, 0x04d8, 0x04de, 0x04ee, 0x04f3, 0x04fb, 0x0504, 0x050c, + 0x0516, 0x051b, 0x0523, 0x052d, 0x0535, 0x053c, 0x054d, 0x0557, + 0x0561, 0x0568, 0x056f, 0x057a, 0x0582, 0x0587, 0x058f, 0x0599, + 0x05a1, 0x05ab, 0x05b3, 0x05b9, 0x05c0, 0x05cb, 0x05d2, 0x05db, + 0x05e1, 0x05ea, 0x05f4, 0x05fd, 0x0605, 0x060c, 0x0614, 0x061d, + 0x0623, 0x062b, 0x0633, 0x0639, 0x063f, 0x0645, 0x064a, 0x0651, + 0x0658, 0x0668, 0x0670, 0x0675, 0x067e, 0x0687, 0x0690, 0x069a, // Entry C0 - FF - 0x064c, 0x065a, 0x0669, 0x066f, 0x0676, 0x0684, 0x068a, 0x0696, - 0x06a8, 0x06b3, 0x06c1, 0x06d3, 0x06d6, 0x06ec, 0x06f6, 0x06fc, - 0x0702, 0x0709, 0x0712, 0x071e, 0x0727, 0x072c, 0x0736, 0x073d, - 0x0746, 0x074b, 0x0751, 0x0755, 0x075a, 0x0760, 0x076d, 0x0776, - 0x077b, 0x077f, 0x078a, 0x078d, 0x0794, 0x079f, 0x07a8, 0x07ac, - 0x07b3, 0x07b7, 0x07bd, 0x07c3, 0x07c8, 0x07cc, 0x07d0, 0x07d7, - 0x07dc, 0x07e1, 0x07e7, 0x07ec, 0x07f3, 0x07f9, 0x0800, 0x080e, - 0x0816, 0x081a, 0x0828, 0x082f, 0x0838, 0x0841, 0x084c, 0x0859, + 0x06ac, 0x06ba, 0x06c9, 0x06cf, 0x06d6, 0x06e2, 0x06e8, 0x06f4, + 0x0706, 0x0706, 0x0711, 0x071f, 0x0731, 0x0734, 0x074a, 0x0754, + 0x075a, 0x0760, 0x0769, 0x0772, 0x077e, 0x0787, 0x078c, 0x0796, + 0x079d, 0x07a6, 0x07ab, 0x07b1, 0x07b5, 0x07ba, 0x07c0, 0x07cd, + 0x07d6, 0x07db, 0x07df, 0x07ea, 0x07ed, 0x07fa, 0x0805, 0x080e, + 0x0812, 0x0819, 0x081d, 0x0823, 0x082c, 0x0831, 0x0835, 0x0839, + 0x0840, 0x0849, 0x084e, 0x0859, 0x085e, 0x086a, 0x0870, 0x087c, + 0x0887, 0x088f, 0x0898, 0x08a3, 0x08af, 0x08bc, 0x08c5, 0x08cd, // Entry 100 - 13F - 0x0861, 0x0869, 0x087b, 0x0884, 0x088a, 0x0892, 0x0897, 0x089f, - 0x08a5, 0x08ab, 0x08b0, 0x08b5, 0x08ba, 0x08ca, 0x08d6, 0x08db, - 0x08f2, 0x08fc, 0x0901, 0x0907, 0x090b, 0x090f, 0x091a, 0x092b, - 0x0931, 0x0935, 0x094b, 0x095b, 0x0961, 0x0972, 0x0976, 0x097f, - 0x0991, 0x0994, 0x09a7, 0x09be, 0x09cd, 0x09d6, 0x09e2, 0x09f0, - 0x09f8, 0x09fa, 0x0a03, 0x0a0f, 0x0a13, 0x0a18, 0x0a2a, 0x0a2e, - 0x0a3b, 0x0a43, 0x0a5f, 0x0a73, 0x0a82, 0x0a87, 0x0a90, 0x0a96, - 0x0a9b, 0x0aa8, 0x0abc, 0x0ac1, 0x0ac7, 0x0acc, 0x0ad5, 0x0ada, + 0x08da, 0x08e2, 0x08ea, 0x08fc, 0x0918, 0x0921, 0x0929, 0x0931, + 0x0936, 0x093e, 0x0949, 0x094f, 0x0959, 0x095e, 0x0963, 0x0973, + 0x097f, 0x0984, 0x099b, 0x09a5, 0x09aa, 0x09b0, 0x09b4, 0x09b8, + 0x09c3, 0x09d4, 0x09da, 0x09de, 0x09f4, 0x0a04, 0x0a0a, 0x0a1b, + 0x0a1f, 0x0a28, 0x0a3a, 0x0a3d, 0x0a50, 0x0a67, 0x0a76, 0x0a7f, + 0x0a8b, 0x0a99, 0x0aa4, 0x0aab, 0x0ab4, 0x0ac0, 0x0ac9, 0x0ace, + 0x0ae0, 0x0ae4, 0x0aee, 0x0af6, 0x0b12, 0x0b26, 0x0b35, 0x0b3f, + 0x0b4d, 0x0b53, 0x0b5d, 0x0b6a, 0x0b7e, 0x0b88, 0x0b8e, 0x0b93, // Entry 140 - 17F - 0x0ae8, 0x0af3, 0x0b01, 0x0b0b, 0x0b13, 0x0b18, 0x0b27, 0x0b35, - 0x0b39, 0x0b3d, 0x0b43, 0x0b48, 0x0b52, 0x0b5f, 0x0b72, 0x0b78, - 0x0b7e, 0x0b85, 0x0b96, 0x0ba7, 0x0bb3, 0x0bc0, 0x0bca, 0x0bd0, - 0x0bd3, 0x0bd8, 0x0bdc, 0x0be6, 0x0bed, 0x0bf1, 0x0bf8, 0x0c04, - 0x0c0b, 0x0c0f, 0x0c17, 0x0c1c, 0x0c23, 0x0c2f, 0x0c3b, 0x0c47, - 0x0c4b, 0x0c53, 0x0c5b, 0x0c67, 0x0c6e, 0x0c76, 0x0c7c, 0x0c8d, - 0x0c91, 0x0c9a, 0x0ca3, 0x0ca9, 0x0cb1, 0x0cb6, 0x0cc5, 0x0ccd, - 0x0cd4, 0x0cda, 0x0cdf, 0x0ce5, 0x0cea, 0x0cf1, 0x0d03, 0x0d0a, + 0x0b9b, 0x0ba2, 0x0bb0, 0x0bbb, 0x0bc9, 0x0bd8, 0x0be0, 0x0be5, + 0x0bf4, 0x0c02, 0x0c08, 0x0c0c, 0x0c18, 0x0c1d, 0x0c27, 0x0c34, + 0x0c47, 0x0c4d, 0x0c53, 0x0c5a, 0x0c6b, 0x0c7c, 0x0c88, 0x0c95, + 0x0c9f, 0x0caa, 0x0cad, 0x0cb2, 0x0cb6, 0x0cc0, 0x0cc7, 0x0ccb, + 0x0cd2, 0x0cde, 0x0ce5, 0x0ce9, 0x0cf1, 0x0cfb, 0x0d02, 0x0d0e, + 0x0d1a, 0x0d26, 0x0d2a, 0x0d32, 0x0d3a, 0x0d46, 0x0d52, 0x0d5a, + 0x0d65, 0x0d76, 0x0d7a, 0x0d83, 0x0d8c, 0x0d92, 0x0d9a, 0x0d9f, + 0x0dad, 0x0db5, 0x0dc1, 0x0dc7, 0x0dcc, 0x0dd2, 0x0ddc, 0x0de3, // Entry 180 - 1BF - 0x0d11, 0x0d19, 0x0d23, 0x0d28, 0x0d2c, 0x0d36, 0x0d3f, 0x0d49, - 0x0d50, 0x0d55, 0x0d58, 0x0d5e, 0x0d63, 0x0d6f, 0x0d74, 0x0d7f, - 0x0d83, 0x0d89, 0x0d91, 0x0d98, 0x0da0, 0x0da5, 0x0da9, 0x0db4, - 0x0dba, 0x0dbf, 0x0dc3, 0x0dcb, 0x0de2, 0x0df0, 0x0df7, 0x0dfd, - 0x0e08, 0x0e16, 0x0e1e, 0x0e29, 0x0e2e, 0x0e3f, 0x0e46, 0x0e56, - 0x0e5b, 0x0e67, 0x0e6e, 0x0e76, 0x0e7b, 0x0e80, 0x0e8c, 0x0e9c, - 0x0ea4, 0x0ea8, 0x0eb8, 0x0ebe, 0x0ec2, 0x0ec8, 0x0ecf, 0x0ed5, - 0x0ede, 0x0ee5, 0x0eef, 0x0ef5, 0x0efb, 0x0f06, 0x0f0a, 0x0f17, + 0x0df5, 0x0dfc, 0x0e03, 0x0e0b, 0x0e15, 0x0e1a, 0x0e1e, 0x0e28, + 0x0e31, 0x0e3b, 0x0e42, 0x0e47, 0x0e4a, 0x0e50, 0x0e55, 0x0e61, + 0x0e66, 0x0e71, 0x0e75, 0x0e7b, 0x0e83, 0x0e8a, 0x0e92, 0x0e97, + 0x0e9b, 0x0ea6, 0x0eac, 0x0eb6, 0x0eba, 0x0ec2, 0x0ed9, 0x0ee7, + 0x0eee, 0x0ef4, 0x0eff, 0x0f0d, 0x0f1a, 0x0f25, 0x0f2a, 0x0f3b, + 0x0f42, 0x0f52, 0x0f59, 0x0f65, 0x0f6c, 0x0f74, 0x0f79, 0x0f7e, + 0x0f8a, 0x0f9a, 0x0fa2, 0x0fa6, 0x0fb6, 0x0fbc, 0x0fc0, 0x0fc9, + 0x0fd0, 0x0fd6, 0x0fdf, 0x0fe6, 0x0ff4, 0x0ffa, 0x1000, 0x1010, // Entry 1C0 - 1FF - 0x0f1f, 0x0f27, 0x0f2c, 0x0f31, 0x0f36, 0x0f49, 0x0f53, 0x0f5f, - 0x0f67, 0x0f71, 0x0f7b, 0x0f86, 0x0f9c, 0x0fa8, 0x0fb4, 0x0fc6, - 0x0fd1, 0x0fdc, 0x0fef, 0x0ff8, 0x1000, 0x100e, 0x1015, 0x1030, - 0x103a, 0x1041, 0x104b, 0x1055, 0x1064, 0x1069, 0x1070, 0x1077, - 0x107e, 0x1085, 0x108c, 0x108f, 0x1096, 0x109e, 0x10af, 0x10b6, - 0x10bb, 0x10c2, 0x10cc, 0x10d3, 0x10d8, 0x10e1, 0x10e6, 0x10f5, - 0x1106, 0x110c, 0x1110, 0x1114, 0x111a, 0x1129, 0x1138, 0x1142, - 0x114b, 0x1154, 0x1163, 0x1169, 0x117b, 0x1182, 0x118d, 0x1196, + 0x1014, 0x1021, 0x1029, 0x1031, 0x1036, 0x1040, 0x1045, 0x1058, + 0x1067, 0x1073, 0x107b, 0x1085, 0x108f, 0x109a, 0x10ad, 0x10c3, + 0x10cf, 0x10db, 0x10ed, 0x10f8, 0x1103, 0x1116, 0x111f, 0x1127, + 0x1135, 0x113c, 0x1157, 0x1161, 0x116d, 0x1177, 0x1181, 0x1190, + 0x1195, 0x119c, 0x11a3, 0x11aa, 0x11b1, 0x11b8, 0x11bb, 0x11c2, + 0x11ca, 0x11db, 0x11e2, 0x11e7, 0x11ee, 0x11f8, 0x11ff, 0x1204, + 0x120d, 0x1217, 0x1226, 0x1237, 0x1242, 0x1246, 0x124a, 0x1255, + 0x1264, 0x1273, 0x127d, 0x1286, 0x128f, 0x129e, 0x12a9, 0x12bb, // Entry 200 - 23F - 0x11a0, 0x11aa, 0x11b1, 0x11be, 0x11ca, 0x11cf, 0x11d3, 0x11e5, - 0x11eb, 0x11ef, 0x11f7, 0x11fe, 0x120f, 0x1219, 0x1222, 0x1228, - 0x122d, 0x1231, 0x1237, 0x123c, 0x1241, 0x1244, 0x124b, 0x1252, - 0x125b, 0x1262, 0x126c, 0x1274, 0x127f, 0x1288, 0x128e, 0x1294, - 0x129c, 0x12a5, 0x12ab, 0x12b2, 0x12b8, 0x12bf, 0x12c5, 0x12d7, - 0x12e0, 0x12eb, 0x12f2, 0x12f8, 0x12fb, 0x1305, 0x1309, 0x1317, - 0x132a, 0x132f, 0x1334, 0x1339, 0x133f, 0x1345, 0x134a, 0x134f, - 0x1357, 0x1362, 0x136c, 0x1374, 0x1378, 0x137b, 0x1381, 0x1388, + 0x12c2, 0x12d3, 0x12e2, 0x12f3, 0x1303, 0x130a, 0x1317, 0x1323, + 0x132d, 0x1331, 0x1343, 0x134e, 0x1352, 0x135a, 0x1361, 0x1372, + 0x137c, 0x1385, 0x138b, 0x1390, 0x1394, 0x139a, 0x139f, 0x13a4, + 0x13a7, 0x13b3, 0x13ba, 0x13c3, 0x13ca, 0x13d4, 0x13dc, 0x13e7, + 0x13f0, 0x13f6, 0x13fc, 0x1404, 0x140d, 0x1413, 0x141a, 0x1424, + 0x142b, 0x1431, 0x1445, 0x144e, 0x1459, 0x1460, 0x1466, 0x1469, + 0x1473, 0x147c, 0x148a, 0x149d, 0x14a3, 0x14a8, 0x14ad, 0x14b3, + 0x14b9, 0x14be, 0x14c3, 0x14cb, 0x14d6, 0x14e0, 0x14e8, 0x14ec, // Entry 240 - 27F - 0x138d, 0x1396, 0x139e, 0x13aa, 0x13b9, 0x13c2, 0x13c8, 0x13e7, - 0x13eb, 0x1401, 0x1407, 0x141e, 0x142c, 0x1440, 0x145c, 0x1473, - 0x1486, 0x149b, 0x14b0, 0x14cc, 0x14e1, 0x14f7, 0x14f7, 0x150b, - 0x1522, 0x1533, 0x153b, 0x1550, 0x1563, 0x156c, 0x157e, 0x158b, - 0x15a4, 0x15b5, -} // Size: 1244 bytes - -var ukLangStr string = "" + // Size: 9058 bytes + 0x14ef, 0x14f5, 0x14fc, 0x1501, 0x150a, 0x1512, 0x151e, 0x152d, + 0x1536, 0x1541, 0x1557, 0x155d, 0x1573, 0x1579, 0x1590, 0x159e, + 0x15b2, 0x15ce, 0x15e5, 0x15f8, 0x160d, 0x1622, 0x163e, 0x1653, + 0x1669, 0x1669, 0x167d, 0x1694, 0x16a5, 0x16ad, 0x16c2, 0x16d5, + 0x16de, 0x16f0, 0x16fd, 0x1716, 0x1727, +} // Size: 1250 bytes + +const ukLangStr string = "" + // Size: 9189 bytes "афарськаабхазькаавестійськаафрикаансаканамхарськаарагонськаарабськаассам" + "ськааварськааймараазербайджанськабашкирськабілоруськаболгарськабісламаб" + "амбарабенгальськатибетськабретонськабоснійськакаталонськачеченськачамор" + - "рокорсиканськакрічеськацерковнослов’янськачуваськаваллійськаданськаніме" + + "рокорсиканськакрічеськацерковнословʼянськачуваськаваллійськаданськаніме" + "цькадівехідзонг-кеевегрецькаанглійськаесперантоіспанськаестонськабасксь" + "каперськафулафінськафіджіфарерськафранцузьказахіднофризькаірландськагае" + "льськагалісійськагуаранігуджаратіменкськахаусаівритгіндіхірі-мотухорват" + @@ -21915,7 +25363,7 @@ var ukLangStr string = "" + // Size: 9058 bytes "а північнасангосингальськасловацькасловенськасамоанськашонасомаліалбанс" + "ькасербськасісватісото південнасунданськашведськасуахілітамільськателуг" + "утаджицькатайськатигриньятуркменськатсванатонганськатурецькатсонгататар" + - "ськатаїтянськауйгурськаукраїнськаурдуузбецькавендавʼєтнамськаволап’юква" + + "ськатаїтянськауйгурськаукраїнськаурдуузбецькавендавʼєтнамськаволапʼюква" + "ллонськаволофкхосаідишйорубачжуанкитайськазулуськаачехськаачоліадангмеа" + "дигейськаафрихіліагемайнськааккадськаалабамаалеутськапівденноалтайськад" + "авньоанглійськаангікаарамейськаарауканськаараонаарапахоалжирська арабсь" + @@ -21923,969 +25371,1022 @@ var ukLangStr string = "" + // Size: 9058 bytes "рішбасабамумбатак тобагомалабеджабембабетавібенабафутбадагасхіднобелудж" + "ійськабходжпурібікольськабінібанджарськакомсіксікабахтіарібраджбодоакус" + "бурятськабугійськабулублінмедумбакаддокарібськакайюгаатсамсебуанськакіг" + - "ачібчачагатайськачуукськамарійськачинук жаргончокточіпев’янчерокічейєнн" + - "курдська (сорані)коптськакримськотатарськакашубськадакотадаргінськатаіт" + - "аделаварськаслейвдогрибськадінкаджермадогрінижньолужицькадуаласередньон" + - "ідерландськадьола-фонідіуладазагаембуефікдавньоєгипетськаекаджукеламськ" + - "асередньоанглійськаевондофангфіліппінськафонсередньофранцузькадавньофра" + - "нцузькаарпітанськафризька північнафризька східнафріульськагагагаузькага" + - "йогбайягєезгільбертськасередньоверхньонімецькадавньоверхньонімецькагонд" + - "ігоронталоготськагребодавньогрецьканімецька (Швейцарія)гусіїкучінхайдаг" + - "авайськахілігайнонхітітіхмонгверхньолужицькахупаібанськаібібіоілоканськ" + - "аінгуськаложбаннгомбамачамеіудео-перськаіудео-арабськакаракалпацькакабі" + - "льськакачінйюкамбакавікабардинськаканембутіапмакондекабувердіанукорокха" + - "сіхотаносакськакойра чіїнікакокаленджинкімбундукомі-перм’яцькаконканіко" + - "сраекпеллєкарачаєво-балкарськакарельськакурукхшамбалабафіаколоніанкумиц" + - "ькакутенаїладінолангіландаламбалезгінськалакотамонголозіпівнічна лурськ" + - "алуба-лулуалуїсеньолундалуолушейлуйямадурськамафамагадхімайтхілімакасар" + - "ськамандінгомасаїмабамокшамандарськамендемерумаврикійська креольськасер" + - "едньоірландськамакува-меетометамікмакмінангкабауманчжурськаманіпурімага" + - "вкмоссімундангдекілька мовкрікмірандськамарварімиінерзямазандеранськане" + - "аполітанськанаманижньонімецьканеварініаськаніуеао нагаквазіонгємбуннога" + - "йськадавньонорвезьканкосото північнануерневарі класичнаньямвезіньянколе" + - "ньоронзімаосейджосманськапангасінанськапехлевіпампангапап’яментопалауан" + - "ськадавньоперськафінікійсько-пунічнапонапедавньопровансальськакічераджа" + - "стханірапануїраротонгаромбоциганськаарумунськарвасандавеякутськасамарит" + - "янська арамейськасамбурусасакськасантальськангамбайсангусицилійськашотл" + - "андськапівденнокурдськасенекасенаселькупськакойраборо сенідавньоірландс" + - "ькатачелітшанськачадійська арабськасідамопівденносаамськасаамська лулес" + - "аамська інарісаамська скольтсонінкесогдійськасранан тонгосерерсахосукум" + - "асусушумерськакоморськасирійська класичнасирійськатемнетесотеренотетумт" + - "игретівтокелауклінгонтлінгіттамашекньяса тонгаток-пісінтарокоцимшиантум" + - "букатувалутасавактувинськацентральномароканська тамазітудмуртськаугарит" + - "ськаумбундукоріньваїводськавуньовалзерськаваламоварайвашовалпірікалмиць" + - "касогаяояпянгбенємбакантонськасапотекськаблісса мовазенагастандартна ма" + - "рокканська берберськазуньїнемає мовного вмістузазакісучасна стандартна " + - "арабськапівденноазербайджанськаверхньонімецька (Швейцарія)англійська бр" + - "итанськаіспанська (Європа)нижньосаксонськафламандськапортугальська (Євр" + - "опа)молдавськасербсько-хорватськаконгійське суахілікитайська спрощенаки" + - "тайська традиційна" - -var ukLangIdx = []uint16{ // 610 elements + "ачібчачагатайськачуукськамарійськачинук жаргончокточіпевʼянчерокічейєнн" + + "курдська (сорані)коптськакримськотатарськасейшельська креольськакашубсь" + + "кадакотадаргінськатаітаделаварськаслейвдогрибськадінкаджермадогрінижньо" + + "лужицькадуаласередньонідерландськадьола-фонідіуладазагаембуефікдавньоєг" + + "ипетськаекаджукеламськасередньоанглійськаевондофангфіліппінськафонсеред" + + "ньофранцузькадавньофранцузькаарпітанськафризька північнафризька східнаф" + + "ріульськагагагаузькагайогбайягєезгільбертськасередньоверхньонімецькадав" + + "ньоверхньонімецькагондігоронталоготськагребодавньогрецьканімецька (Швей" + + "царія)гусіїкучінхайдагавайськахілігайнонхітітіхмонгверхньолужицькахупаі" + + "банськаібібіоілоканськаінгуськаложбаннгомбамачамеюдео-перськаюдео-арабс" + + "ькакаракалпацькакабільськакачінйюкамбакавікабардинськаканембутіапмаконд" + + "екабувердіанукорокхасіхотаносакськакойра чіїнікакокаленджинкімбундукомі" + + "-перм’яцькаконканікосраекпеллєкарачаєво-балкарськакарельськакурукхшамбал" + + "абафіаколоніанкумицькакутенаїладінолангіландаламбалезгінськалакотамонго" + + "лозіпівнічна лурськалуба-лулуалуїсеньолундалуомізолуйямадурськамафамага" + + "дхімайтхілімакасарськамандінгомасаїмабамокшамандарськамендемерумаврикій" + + "ська креольськасередньоірландськамакува-меетометамікмакмінангкабауманчж" + + "урськаманіпурімагавкмоссімундангкілька мовкрікмірандськамарварімиінерзя" + + "мазандеранськанеаполітанськанаманижньонімецьканеварініаськаніуеао нагак" + + "вазіонгємбунногайськадавньонорвезьканкосото північнануерневарі класична" + + "ньямвезіньянколеньоронзімаосейджосманськапангасінанськапехлевіпампангап" + + "апʼяментопалауанськанігерійсько-креольськадавньоперськафінікійсько-пуні" + + "чнапонапепруськадавньопровансальськакічераджастханірапануїраротонгаромб" + + "оциганськаарумунськарвасандавеякутськасамаритянська арамейськасамбуруса" + + "сакськасантальськангамбайсангусицилійськашотландськапівденнокурдськасен" + + "екасенаселькупськакойраборо сенідавньоірландськатачелітшанськачадійська" + + " арабськасідамопівденносаамськасаамська лулесаамська інарісаамська сколь" + + "тсонінкесогдійськасранан тонгосерерсахосукумасусушумерськакоморськасирі" + + "йська класичнасирійськатемнетесотеренотетумтигретівтокелауклінгонтлінгі" + + "ттамашекньяса тонгаток-пісінтарокоцимшиантумбукатувалутасавактувинськац" + + "ентральномароканська тамазітудмуртськаугаритськаумбундукоріньваїводська" + + "вуньовалзерськаваламоварайвашовалпірікалмицькасогаяояпянгбенємбакантонс" + + "ькасапотекськаблісса мовазенагастандартна марокканська берберськазуньїн" + + "емає мовного вмістузазакісучасна стандартна арабськапівденноазербайджан" + + "ськаверхньонімецька (Швейцарія)британська англійськаамериканська англій" + + "ськаіспанська (Європа)нижньосаксонськафламандськапортугальська (Європа)" + + "молдавськасербсько-хорватськаконгійське суахілікитайська спрощенакитайс" + + "ька традиційна" + +var ukLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0020, 0x0036, 0x0048, 0x0050, 0x0062, 0x0076, 0x0086, 0x0098, 0x00a8, 0x00b4, 0x00d2, 0x00e6, 0x00fa, 0x010e, 0x011c, 0x012a, 0x0140, 0x0152, 0x0166, 0x017a, 0x0190, 0x01a2, - 0x01b0, 0x01c8, 0x01ce, 0x01da, 0x0201, 0x0211, 0x0225, 0x0233, - 0x0243, 0x024f, 0x025e, 0x0264, 0x0272, 0x0286, 0x0298, 0x02aa, - 0x02bc, 0x02cc, 0x02da, 0x02e2, 0x02f0, 0x02fa, 0x030c, 0x0320, - 0x033c, 0x0350, 0x0362, 0x0378, 0x0386, 0x0398, 0x03a8, 0x03b2, - 0x03bc, 0x03c6, 0x03d7, 0x03eb, 0x03ff, 0x040f, 0x0423, 0x042f, + 0x01b0, 0x01c8, 0x01ce, 0x01da, 0x0200, 0x0210, 0x0224, 0x0232, + 0x0242, 0x024e, 0x025d, 0x0263, 0x0271, 0x0285, 0x0297, 0x02a9, + 0x02bb, 0x02cb, 0x02d9, 0x02e1, 0x02ef, 0x02f9, 0x030b, 0x031f, + 0x033b, 0x034f, 0x0361, 0x0377, 0x0385, 0x0397, 0x03a7, 0x03b1, + 0x03bb, 0x03c5, 0x03d6, 0x03ea, 0x03fe, 0x040e, 0x0422, 0x042e, // Entry 40 - 7F - 0x0445, 0x045f, 0x0475, 0x047d, 0x048b, 0x0499, 0x049f, 0x04b3, - 0x04c7, 0x04d9, 0x04e9, 0x04f9, 0x050d, 0x0523, 0x052f, 0x053b, - 0x054d, 0x0563, 0x0575, 0x0583, 0x0595, 0x05a1, 0x05b5, 0x05c5, - 0x05cd, 0x05e1, 0x05f3, 0x0605, 0x061f, 0x0629, 0x0643, 0x0651, - 0x065f, 0x0671, 0x0688, 0x069c, 0x06b6, 0x06ce, 0x06d8, 0x06ee, - 0x06fe, 0x0714, 0x0722, 0x0734, 0x074a, 0x075e, 0x0768, 0x0787, - 0x079b, 0x07a7, 0x07bd, 0x07dc, 0x07fb, 0x081a, 0x0826, 0x0834, - 0x0840, 0x084e, 0x0858, 0x0860, 0x0874, 0x0884, 0x088c, 0x089c, + 0x0444, 0x045e, 0x0474, 0x047c, 0x048a, 0x0498, 0x049e, 0x04b2, + 0x04c6, 0x04d8, 0x04e8, 0x04f8, 0x050c, 0x0522, 0x052e, 0x053a, + 0x054c, 0x0562, 0x0574, 0x0582, 0x0594, 0x05a0, 0x05b4, 0x05c4, + 0x05cc, 0x05e0, 0x05f2, 0x0604, 0x061e, 0x0628, 0x0642, 0x0650, + 0x065e, 0x0670, 0x0687, 0x069b, 0x06b5, 0x06cd, 0x06d7, 0x06ed, + 0x06fd, 0x0713, 0x0721, 0x0733, 0x0749, 0x075d, 0x0767, 0x0786, + 0x079a, 0x07a6, 0x07bc, 0x07db, 0x07fa, 0x0819, 0x0825, 0x0833, + 0x083f, 0x084d, 0x0857, 0x085f, 0x0873, 0x0883, 0x088b, 0x089b, // Entry 80 - BF - 0x08a6, 0x08c0, 0x08ca, 0x08e4, 0x08ee, 0x0900, 0x0912, 0x0928, - 0x0938, 0x094c, 0x0958, 0x0979, 0x0983, 0x0999, 0x09ab, 0x09bf, - 0x09d3, 0x09db, 0x09e7, 0x09f9, 0x0a09, 0x0a17, 0x0a30, 0x0a44, - 0x0a54, 0x0a62, 0x0a76, 0x0a82, 0x0a94, 0x0aa2, 0x0ab2, 0x0ac8, - 0x0ad4, 0x0ae8, 0x0af8, 0x0b04, 0x0b16, 0x0b2a, 0x0b3c, 0x0b50, - 0x0b58, 0x0b68, 0x0b72, 0x0b88, 0x0b99, 0x0bad, 0x0bb7, 0x0bc1, - 0x0bc9, 0x0bd5, 0x0bdf, 0x0bf1, 0x0c01, 0x0c11, 0x0c1b, 0x0c29, - 0x0c3d, 0x0c3d, 0x0c4d, 0x0c55, 0x0c63, 0x0c75, 0x0c83, 0x0c95, + 0x08a5, 0x08bf, 0x08c9, 0x08e3, 0x08ed, 0x08ff, 0x0911, 0x0927, + 0x0937, 0x094b, 0x0957, 0x0978, 0x0982, 0x0998, 0x09aa, 0x09be, + 0x09d2, 0x09da, 0x09e6, 0x09f8, 0x0a08, 0x0a16, 0x0a2f, 0x0a43, + 0x0a53, 0x0a61, 0x0a75, 0x0a81, 0x0a93, 0x0aa1, 0x0ab1, 0x0ac7, + 0x0ad3, 0x0ae7, 0x0af7, 0x0b03, 0x0b15, 0x0b29, 0x0b3b, 0x0b4f, + 0x0b57, 0x0b67, 0x0b71, 0x0b87, 0x0b97, 0x0bab, 0x0bb5, 0x0bbf, + 0x0bc7, 0x0bd3, 0x0bdd, 0x0bef, 0x0bff, 0x0c0f, 0x0c19, 0x0c27, + 0x0c3b, 0x0c3b, 0x0c4b, 0x0c53, 0x0c61, 0x0c73, 0x0c81, 0x0c93, // Entry C0 - FF - 0x0c95, 0x0cb7, 0x0cd7, 0x0ce3, 0x0cf7, 0x0d0d, 0x0d19, 0x0d27, - 0x0d4a, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d64, 0x0d90, 0x0da2, 0x0da2, - 0x0dae, 0x0dba, 0x0dcc, 0x0dd8, 0x0de0, 0x0dea, 0x0dfd, 0x0e09, - 0x0e13, 0x0e1d, 0x0e29, 0x0e31, 0x0e3b, 0x0e47, 0x0e6b, 0x0e7d, - 0x0e91, 0x0e99, 0x0eaf, 0x0eb5, 0x0ec3, 0x0ec3, 0x0ed3, 0x0edd, - 0x0edd, 0x0ee5, 0x0eed, 0x0eff, 0x0f11, 0x0f19, 0x0f21, 0x0f2f, - 0x0f39, 0x0f4b, 0x0f57, 0x0f61, 0x0f75, 0x0f7d, 0x0f87, 0x0f9d, - 0x0fad, 0x0fbf, 0x0fd6, 0x0fe0, 0x0ff1, 0x0ffd, 0x1009, 0x1028, + 0x0c93, 0x0cb5, 0x0cd5, 0x0ce1, 0x0cf5, 0x0d0b, 0x0d17, 0x0d25, + 0x0d48, 0x0d48, 0x0d5c, 0x0d5c, 0x0d5c, 0x0d62, 0x0d8e, 0x0da0, + 0x0da0, 0x0dac, 0x0db8, 0x0dca, 0x0dd6, 0x0dde, 0x0de8, 0x0dfb, + 0x0e07, 0x0e11, 0x0e1b, 0x0e27, 0x0e2f, 0x0e39, 0x0e45, 0x0e69, + 0x0e7b, 0x0e8f, 0x0e97, 0x0ead, 0x0eb3, 0x0ec1, 0x0ec1, 0x0ed1, + 0x0edb, 0x0edb, 0x0ee3, 0x0eeb, 0x0efd, 0x0f0f, 0x0f17, 0x0f1f, + 0x0f2d, 0x0f37, 0x0f49, 0x0f55, 0x0f5f, 0x0f73, 0x0f7b, 0x0f85, + 0x0f9b, 0x0fab, 0x0fbd, 0x0fd4, 0x0fde, 0x0fee, 0x0ffa, 0x1006, // Entry 100 - 13F - 0x1038, 0x1038, 0x105a, 0x106c, 0x1078, 0x108c, 0x1096, 0x10ac, - 0x10b6, 0x10ca, 0x10d4, 0x10e0, 0x10ea, 0x1106, 0x1106, 0x1110, - 0x113a, 0x114d, 0x1157, 0x1163, 0x116b, 0x1173, 0x1173, 0x1193, - 0x11a1, 0x11b1, 0x11d5, 0x11d5, 0x11e1, 0x11e1, 0x11e9, 0x1201, - 0x1201, 0x1207, 0x1207, 0x122b, 0x124b, 0x1261, 0x1280, 0x129b, - 0x12af, 0x12b3, 0x12c5, 0x12c5, 0x12cd, 0x12d7, 0x12d7, 0x12df, - 0x12f7, 0x12f7, 0x1325, 0x134f, 0x134f, 0x1359, 0x136b, 0x1379, - 0x1383, 0x139d, 0x13c2, 0x13c2, 0x13c2, 0x13cc, 0x13d6, 0x13e0, + 0x1025, 0x1035, 0x1035, 0x1057, 0x1082, 0x1094, 0x10a0, 0x10b4, + 0x10be, 0x10d4, 0x10de, 0x10f2, 0x10fc, 0x1108, 0x1112, 0x112e, + 0x112e, 0x1138, 0x1162, 0x1175, 0x117f, 0x118b, 0x1193, 0x119b, + 0x119b, 0x11bb, 0x11c9, 0x11d9, 0x11fd, 0x11fd, 0x1209, 0x1209, + 0x1211, 0x1229, 0x1229, 0x122f, 0x122f, 0x1253, 0x1273, 0x1289, + 0x12a8, 0x12c3, 0x12d7, 0x12db, 0x12ed, 0x12ed, 0x12f5, 0x12ff, + 0x12ff, 0x1307, 0x131f, 0x131f, 0x134d, 0x1377, 0x1377, 0x1381, + 0x1393, 0x13a1, 0x13ab, 0x13c5, 0x13ea, 0x13ea, 0x13ea, 0x13f4, // Entry 140 - 17F - 0x13e0, 0x13f2, 0x13f2, 0x1406, 0x1412, 0x141c, 0x143a, 0x143a, - 0x1442, 0x1452, 0x145e, 0x1472, 0x1482, 0x1482, 0x1482, 0x148e, - 0x149a, 0x14a6, 0x14bf, 0x14da, 0x14da, 0x14f4, 0x1508, 0x1512, - 0x1516, 0x1520, 0x1528, 0x1540, 0x154e, 0x1556, 0x1564, 0x157c, - 0x157c, 0x1584, 0x1584, 0x158e, 0x15a8, 0x15bd, 0x15bd, 0x15bd, - 0x15c5, 0x15d7, 0x15e7, 0x1605, 0x1613, 0x161f, 0x162b, 0x1652, - 0x1652, 0x1652, 0x1666, 0x1672, 0x1680, 0x168a, 0x169a, 0x16aa, - 0x16b8, 0x16c4, 0x16ce, 0x16d8, 0x16e2, 0x16f6, 0x16f6, 0x16f6, + 0x13fe, 0x1408, 0x1408, 0x141a, 0x141a, 0x142e, 0x143a, 0x1444, + 0x1462, 0x1462, 0x146a, 0x147a, 0x1486, 0x149a, 0x14aa, 0x14aa, + 0x14aa, 0x14b6, 0x14c2, 0x14ce, 0x14e5, 0x14fe, 0x14fe, 0x1518, + 0x152c, 0x1536, 0x153a, 0x1544, 0x154c, 0x1564, 0x1572, 0x157a, + 0x1588, 0x15a0, 0x15a0, 0x15a8, 0x15a8, 0x15b2, 0x15cc, 0x15e1, + 0x15e1, 0x15e1, 0x15e9, 0x15fb, 0x160b, 0x1629, 0x1637, 0x1643, + 0x164f, 0x1676, 0x1676, 0x1676, 0x168a, 0x1696, 0x16a4, 0x16ae, + 0x16be, 0x16ce, 0x16dc, 0x16e8, 0x16f2, 0x16fc, 0x1706, 0x171a, // Entry 180 - 1BF - 0x16f6, 0x1702, 0x1702, 0x170c, 0x1714, 0x1733, 0x1733, 0x1746, - 0x1756, 0x1760, 0x1766, 0x1770, 0x1778, 0x1778, 0x1778, 0x178a, - 0x1792, 0x17a0, 0x17b0, 0x17c6, 0x17d6, 0x17e0, 0x17e8, 0x17f2, - 0x1806, 0x1810, 0x1818, 0x1845, 0x1869, 0x1880, 0x1888, 0x1894, - 0x18aa, 0x18c0, 0x18d0, 0x18dc, 0x18e6, 0x18e6, 0x18f4, 0x190b, - 0x1913, 0x1927, 0x1935, 0x1935, 0x193d, 0x1945, 0x1961, 0x1961, - 0x197d, 0x1985, 0x19a1, 0x19ad, 0x19bb, 0x19c3, 0x19d0, 0x19dc, - 0x19ea, 0x19fc, 0x1a1a, 0x1a1a, 0x1a20, 0x1a39, 0x1a41, 0x1a5e, + 0x171a, 0x171a, 0x171a, 0x1726, 0x1726, 0x1730, 0x1738, 0x1757, + 0x1757, 0x176a, 0x177a, 0x1784, 0x178a, 0x1792, 0x179a, 0x179a, + 0x179a, 0x17ac, 0x17b4, 0x17c2, 0x17d2, 0x17e8, 0x17f8, 0x1802, + 0x180a, 0x1814, 0x1828, 0x1832, 0x183a, 0x1867, 0x188b, 0x18a2, + 0x18aa, 0x18b6, 0x18cc, 0x18e2, 0x18f2, 0x18fe, 0x1908, 0x1908, + 0x1916, 0x1929, 0x1931, 0x1945, 0x1953, 0x1953, 0x195b, 0x1963, + 0x197f, 0x197f, 0x199b, 0x19a3, 0x19bf, 0x19cb, 0x19d9, 0x19e1, + 0x19ee, 0x19fa, 0x1a08, 0x1a1a, 0x1a38, 0x1a38, 0x1a3e, 0x1a57, // Entry 1C0 - 1FF - 0x1a6e, 0x1a7e, 0x1a88, 0x1a92, 0x1a9e, 0x1ab0, 0x1acc, 0x1ada, - 0x1aea, 0x1aff, 0x1b15, 0x1b15, 0x1b15, 0x1b15, 0x1b2f, 0x1b2f, - 0x1b54, 0x1b54, 0x1b54, 0x1b60, 0x1b60, 0x1b88, 0x1b90, 0x1b90, - 0x1ba6, 0x1bb4, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bd0, 0x1be2, 0x1be2, - 0x1be2, 0x1be2, 0x1bf6, 0x1bfc, 0x1c0a, 0x1c1a, 0x1c49, 0x1c57, - 0x1c69, 0x1c7f, 0x1c7f, 0x1c8d, 0x1c97, 0x1cad, 0x1cc3, 0x1cc3, - 0x1ce3, 0x1cef, 0x1cf7, 0x1cf7, 0x1d0d, 0x1d28, 0x1d48, 0x1d48, - 0x1d56, 0x1d64, 0x1d87, 0x1d93, 0x1d93, 0x1d93, 0x1db3, 0x1dcc, + 0x1a5f, 0x1a7c, 0x1a8c, 0x1a9c, 0x1aa6, 0x1ab0, 0x1abc, 0x1ace, + 0x1aea, 0x1af8, 0x1b08, 0x1b1c, 0x1b32, 0x1b32, 0x1b5d, 0x1b5d, + 0x1b5d, 0x1b77, 0x1b77, 0x1b9c, 0x1b9c, 0x1b9c, 0x1ba8, 0x1bb6, + 0x1bde, 0x1be6, 0x1be6, 0x1bfc, 0x1c0a, 0x1c1c, 0x1c1c, 0x1c1c, + 0x1c26, 0x1c38, 0x1c38, 0x1c38, 0x1c38, 0x1c4c, 0x1c52, 0x1c60, + 0x1c70, 0x1c9f, 0x1cad, 0x1cbf, 0x1cd5, 0x1cd5, 0x1ce3, 0x1ced, + 0x1d03, 0x1d19, 0x1d19, 0x1d39, 0x1d45, 0x1d4d, 0x1d4d, 0x1d63, + 0x1d7e, 0x1d9e, 0x1d9e, 0x1dac, 0x1dba, 0x1ddd, 0x1de9, 0x1de9, // Entry 200 - 23F - 0x1de7, 0x1e04, 0x1e12, 0x1e26, 0x1e3d, 0x1e47, 0x1e4f, 0x1e4f, - 0x1e5b, 0x1e63, 0x1e75, 0x1e87, 0x1eaa, 0x1ebc, 0x1ebc, 0x1ebc, - 0x1ec6, 0x1ece, 0x1eda, 0x1ee4, 0x1eee, 0x1ef4, 0x1f02, 0x1f02, - 0x1f10, 0x1f1e, 0x1f1e, 0x1f2c, 0x1f41, 0x1f52, 0x1f52, 0x1f5e, - 0x1f5e, 0x1f6c, 0x1f6c, 0x1f7a, 0x1f86, 0x1f94, 0x1fa6, 0x1fdf, - 0x1ff3, 0x2007, 0x2015, 0x2021, 0x2027, 0x2027, 0x2027, 0x2027, - 0x2027, 0x2035, 0x2035, 0x203f, 0x2053, 0x205f, 0x2069, 0x2071, - 0x207f, 0x207f, 0x2091, 0x2091, 0x2099, 0x209d, 0x20a1, 0x20ad, + 0x1de9, 0x1e09, 0x1e22, 0x1e3d, 0x1e5a, 0x1e68, 0x1e7c, 0x1e93, + 0x1e9d, 0x1ea5, 0x1ea5, 0x1eb1, 0x1eb9, 0x1ecb, 0x1edd, 0x1f00, + 0x1f12, 0x1f12, 0x1f12, 0x1f1c, 0x1f24, 0x1f30, 0x1f3a, 0x1f44, + 0x1f4a, 0x1f58, 0x1f58, 0x1f66, 0x1f74, 0x1f74, 0x1f82, 0x1f97, + 0x1fa8, 0x1fa8, 0x1fb4, 0x1fb4, 0x1fc2, 0x1fc2, 0x1fd0, 0x1fdc, + 0x1fea, 0x1ffc, 0x2035, 0x2049, 0x205d, 0x206b, 0x2077, 0x207d, + 0x207d, 0x207d, 0x207d, 0x207d, 0x208b, 0x208b, 0x2095, 0x20a9, + 0x20b5, 0x20bf, 0x20c7, 0x20d5, 0x20d5, 0x20e7, 0x20e7, 0x20ef, // Entry 240 - 27F - 0x20b5, 0x20b5, 0x20c9, 0x20df, 0x20f4, 0x20f4, 0x2100, 0x2142, - 0x214c, 0x2172, 0x217e, 0x21b2, 0x21e0, 0x21e0, 0x2213, 0x2213, - 0x2213, 0x223c, 0x223c, 0x223c, 0x225d, 0x225d, 0x225d, 0x225d, - 0x225d, 0x227d, 0x2293, 0x2293, 0x22bc, 0x22d0, 0x22f5, 0x2318, - 0x233b, 0x2362, -} // Size: 1244 bytes - -var urLangStr string = "" + // Size: 3619 bytes - "ابقازیانایفریکانزاکانامہاریعربیآسامیایماراآزربائیجانیباشکیربیلاروسیبلغار" + - "یبمبارابنگالیتبتیبریٹنبوسنیکیٹالانچیچنکوراسیکنچیکچوواشویلشڈینشجرمنڈیویہ" + - "یژونگکھاایویونانیانگریزیایسپرانٹوہسپانویاسٹونینباسکیفارسیفینیشفجیفیروئی" + - "زفرانسیسیمغربی فریسیئنآئیرِشسکاٹ گیلِکگالیشیائیگُارانیگجراتیمینکسہؤساعب" + - "رانیہندیکراتیہیتیہنگیرینارمینیبین لسانیاتانڈونیثیائیاِگبوسچوان ایآئس لی" + - "نڈکاطالویاینُکٹیٹٹجاپانیجاویجارجیکانگوکیکویوقزاخكالاليستخمیرکنّاڈاکوریا" + - "ئیکشمیریکردشکورنشکرغیزیلاطینیلگژمبرگشگینڈالِنگَلالاؤلتھُواینینلبا-كاتان" + - "جالیٹوینملاگاسیماؤریمقدونیائیمالایالممنگؤلیمراٹهیمالائیمالٹیبرمیشمالی د" + - "بیلنیپالیڈچنورویجینی نینورسکنارویجین بوکملنیانجاآكسیٹاناورومواورِیااوسی" + - "ٹکپنجابیپولستانیپشتوپُرتگالیکویچوآرومانشرونڈیرومینینروسیکینیاروانڈاسَنس" + - "کرِتسندھیشمالی سامیساںغوسنہالاسلوواکسلووینیائیساموآنشوناصومالیالبانیصرب" + - "یسواتیجنوبی سوتھوسنڈانیزسویڈشسواحلیتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹ" + - "ونگنترکیزونگاتاتارتاہیتییوئگہریوکرینیائیاردوازبیکوینڈاویتنامیوولوفژوسای" + - "دشیوروباچینیزولواکولیاغمماپوچےآسوبیمبابینامغربی بلوچیبوڈوچیگاچیروکیسورا" + - "نی کردشتائتازرماذیلی سربیائیدوالاجولا فونياامبوایفِکفلیپینوگاغاغاوزسوئس" + - " جرمنگسیہوائیاپر سربیائینگومباماشیمقبائلیکامباماكوندهكابويرديانوكويرا شي" + - "نيكالينجينکومی پرمیاککونکنیشامبالابافيالانگیلاکوٹالوزیشمالی لریلیوبا لو" + - "لوآلولویاماسایمیروموریسیینماخاوا-ميتومیٹاموہاکمنڈانگمزندرانیناماادنی جر" + - "منكوايسواینکوشمالی سوتھونویرنینکولكيشیرومبورواسامبوروسانگوجنوبی کردسینا" + - "كويرابورو سينیتشلحيتجنوبی سامیلول سامیاناری سامیسکولٹ سامیتیسوٹیٹمکلنگن" + - "ٹوک پِسِنٹمبوکاتاساواقسینٹرل ایٹلس ٹمازائٹنامعلوم زبانوائیونجووارلپیریس" + - "وگااسٹینڈرڈ مراقشی تمازیقیکوئی لسانی مواد نہیںماڈرن اسٹینڈرڈ عربیجنوبی " + - "آزربائیجانیآسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکینیڈین انگریزی" + - "برطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییورپی ہسپانویمیکسیکن " + - "ہسپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرازیلی پرتگالییورپی پ" + - "رتگالیمالدوواسربو-کروئیشینکانگو سواحلیچینی (آسان کردہ)روایتی چینی" - -var urLangIdx = []uint16{ // 610 elements + 0x20f3, 0x20f7, 0x2103, 0x210b, 0x210b, 0x211f, 0x2135, 0x214a, + 0x214a, 0x2156, 0x2198, 0x21a2, 0x21c8, 0x21d4, 0x2208, 0x2236, + 0x2236, 0x2269, 0x2269, 0x2269, 0x2292, 0x22bf, 0x22bf, 0x22e0, + 0x22e0, 0x22e0, 0x22e0, 0x22e0, 0x2300, 0x2316, 0x2316, 0x233f, + 0x2353, 0x2378, 0x239b, 0x23be, 0x23e5, +} // Size: 1250 bytes + +const urLangStr string = "" + // Size: 5313 bytes + "افارابقازیانایفریکانزاکانامہاریاراگونیزعربیآسامیاواریایماراآذربائیجانیبا" + + "شکیربیلاروسیبلغاریبسلامابمبارابنگالیتبتیبریٹنبوسنیکیٹالانچیچنکموروکوراس" + + "یکنچیکچرچ سلاؤچوواشویلشڈینشجرمنڈیویہیژونگکھاایویونانیانگریزیایسپرانٹوہس" + + "پانویاسٹونینباسکیفارسیفولہفینیشفجیفیروئیزفرانسیسیمغربی فریسیئنآئیرِشسکا" + + "ٹ گیلِکگالیشیائیگُارانیگجراتیمینکسہؤساعبرانیہندیکراتیہیتیہنگیرینارمینیہ" + + "ریروبین لسانیاتانڈونیثیائیاِگبوسچوان ایایڈوآئس لینڈکاطالویاینُکٹیٹٹجاپا" + + "نیجاویجارجیکانگوکیکویوکونیاماقزاخكالاليستخمیرکنّاڈاکوریائیکانوریکشمیریک" + + "ردشکومیکورنشکرغیزیلاطینیلکسمبرگیشگینڈالیمبرگشلِنگَلالاؤلیتھوینینلبا-كات" + + "انجالیٹوینملاگاسیمارشلیزماؤریمقدونیائیمالایالممنگولینمراٹهیمالےمالٹیبرم" + + "یناؤروشمالی دبیلنیپالینڈونگاڈچنورویجینی نینورسکنارویجین بوکملجنوبی نڈیب" + + "یلینواجونیانجاآكسیٹاناورومواڑیہاوسیٹکپنجابیپولشپشتوپُرتگالیکویچوآرومانش" + + "رونڈیرومینینروسیکینیاروانڈاسنسکرتسردینینسندھیشمالی سامیساںغوسنہالاسلووا" + + "کسلووینیائیساموآنشوناصومالیالبانیسربینسواتیجنوبی سوتھوسنڈانیزسویڈشسواحل" + + "یتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹونگنترکیزونگاتاتارتاہیتییوئگہریوکر" + + "ینیائیاردوازبیکوینڈاویتنامیوولاپوکوالونوولوفژوسایدشیوروباچینیزولواچائین" + + "یزاکولیادانگمےادیگھےاغماینوالیوتجنوبی الٹائیانگیکاماپوچےاراپاہوآسواسٹور" + + "یائیاوادھیبالینیزباسابیمبابینامغربی بلوچیبھوجپوریبینیسکسیکابوڈوبگینیزبل" + + "ینسیبوآنوچیگاچوکیزماریچاکٹاؤچیروکیچینّےسورانی کردشڈاکوٹادرگواتائتادوگری" + + "بزرماذیلی سربیائیدوالاجولا فونيادزاگاامبوایفِکایکاجویایوانڈوفلیپینوفونف" + + "ریولیائیگاغاغاوزganگیزگلبرتیزگورانٹالوسوئس جرمنگسیگوئچ انhakہوائیحلی گی" + + "ننہمانگاپر سربیائیhsnہیوپاایبانابی بیوایلوکوانگوشلوجباننگومباماشیمقبائل" + + "یکاچنجے جوکامباکبارڈینتیاپماكوندهكابويرديانوکوروکھاسیكويرا شينيکاکوكالي" + + "نجينکیمبونڈوکومی پرمیاککونکنیکیپیلّےکراچے بالکرکیرلینکوروکھشامبالابافيا" + + "کولوگنیائیکومیکلیڈینولانگیلیزگیانلاکوٹالوزیشمالی لریلیوبا لولوآلونڈالوم" + + "یزولویامدورسیمگاہیمیتھیلیمکاسرماسایموکشامیندےمیروموریسیینماخاوا-ميتومیٹ" + + "امکمیکمنانگکباؤمنی پوریموہاکموسیمنڈانگمتعدد زبانیںکریکمیرانڈیزارزیامزند" + + "رانیnanنیاپولیٹنناماادنی جرمننیوارینیاسنیویائیكوايسونگیمبوننوگائیاینکوش" + + "مالی سوتھونویرنینکولپنگاسنانپامپنگاپاپیامینٹوپالاوننائجیریائی پڈگنپارسی" + + "كيشیرپانویراروتونگانرومبوارومانیرواسنڈاوےساکھاسامبوروسنتالینگامبےسانگوس" + + "یسیلینسکاٹجنوبی کردسیناكويرابورو سينیتشلحيتشانجنوبی سامیلول سامیاناری س" + + "امیسکولٹ سامیسوننکےسرانن ٹونگوساہوسکوماکوموریائیسریانیٹمنےتیسوٹیٹمٹگرےک" + + "لنگنٹوک پِسِنٹوروکوٹمبوکاتووالوتاساواقتووینینسینٹرل ایٹلس ٹمازائٹادمورت" + + "اومبوندوروٹوائیونجووالسروولایتاوارےوارلپیریwuuکالمیکسوگایانگبینیمباکینٹ" + + "ونیزاسٹینڈرڈ مراقشی تمازیقیزونیکوئی لسانی مواد نہیںزازاماڈرن اسٹینڈرڈ ع" + + "ربیآزربائیجانی (عربی)آسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکینیڈ" + + "ین انگریزیبرطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییورپی ہسپان" + + "ویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرازیلی پرتگ" + + "الییورپی پرتگالیمالدوواسربو-کروئیشینکانگو سواحلیچینی (آسان کردہ)روایتی " + + "چینی" + +var urLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x002a, 0x0036, 0x0036, - 0x003e, 0x0048, 0x0048, 0x0054, 0x006a, 0x0076, 0x0086, 0x0092, - 0x0092, 0x009e, 0x00aa, 0x00b2, 0x00bc, 0x00c6, 0x00d4, 0x00dc, - 0x00dc, 0x00ec, 0x00ec, 0x00f2, 0x00f2, 0x00fc, 0x0104, 0x010c, - 0x0114, 0x0120, 0x012e, 0x0134, 0x0140, 0x014e, 0x0160, 0x016e, - 0x017c, 0x0186, 0x0190, 0x0190, 0x019a, 0x01a0, 0x01ae, 0x01be, - 0x01d7, 0x01e3, 0x01f6, 0x0208, 0x0216, 0x0222, 0x022c, 0x0234, - 0x0240, 0x0248, 0x0248, 0x0252, 0x025a, 0x0268, 0x0274, 0x0274, + 0x0000, 0x0008, 0x0018, 0x0018, 0x002a, 0x0032, 0x003e, 0x004e, + 0x0056, 0x0060, 0x006a, 0x0076, 0x008c, 0x0098, 0x00a8, 0x00b4, + 0x00c0, 0x00cc, 0x00d8, 0x00e0, 0x00ea, 0x00f4, 0x0102, 0x010a, + 0x0114, 0x0124, 0x0124, 0x012a, 0x0139, 0x0143, 0x014b, 0x0153, + 0x015b, 0x0167, 0x0175, 0x017b, 0x0187, 0x0195, 0x01a7, 0x01b5, + 0x01c3, 0x01cd, 0x01d7, 0x01df, 0x01e9, 0x01ef, 0x01fd, 0x020d, + 0x0226, 0x0232, 0x0245, 0x0257, 0x0265, 0x0271, 0x027b, 0x0283, + 0x028f, 0x0297, 0x0297, 0x02a1, 0x02a9, 0x02b7, 0x02c3, 0x02cd, // Entry 40 - 7F - 0x0289, 0x029f, 0x029f, 0x02a9, 0x02b8, 0x02b8, 0x02b8, 0x02c9, - 0x02d5, 0x02e7, 0x02f3, 0x02fb, 0x0305, 0x030f, 0x031b, 0x031b, - 0x0323, 0x0333, 0x033b, 0x0347, 0x0355, 0x0355, 0x0361, 0x0369, - 0x0369, 0x0373, 0x037f, 0x038b, 0x039b, 0x03a5, 0x03a5, 0x03b3, - 0x03b9, 0x03cd, 0x03e2, 0x03ee, 0x03fc, 0x03fc, 0x0406, 0x0418, - 0x0428, 0x0434, 0x0440, 0x044c, 0x0456, 0x045e, 0x045e, 0x0471, - 0x047d, 0x047d, 0x0481, 0x04a2, 0x04bd, 0x04bd, 0x04bd, 0x04c9, - 0x04d7, 0x04d7, 0x04e3, 0x04ef, 0x04fb, 0x0507, 0x0507, 0x0517, + 0x02e2, 0x02f8, 0x02f8, 0x0302, 0x0311, 0x0311, 0x0319, 0x032a, + 0x0336, 0x0348, 0x0354, 0x035c, 0x0366, 0x0370, 0x037c, 0x038a, + 0x0392, 0x03a2, 0x03aa, 0x03b6, 0x03c4, 0x03d0, 0x03dc, 0x03e4, + 0x03ec, 0x03f6, 0x0402, 0x040e, 0x0420, 0x042a, 0x0438, 0x0446, + 0x044c, 0x045e, 0x0473, 0x047f, 0x048d, 0x049b, 0x04a5, 0x04b7, + 0x04c7, 0x04d5, 0x04e1, 0x04e9, 0x04f3, 0x04fb, 0x0505, 0x0518, + 0x0524, 0x0530, 0x0534, 0x0555, 0x0570, 0x0589, 0x0593, 0x059f, + 0x05ad, 0x05ad, 0x05b9, 0x05c1, 0x05cd, 0x05d9, 0x05d9, 0x05e1, // Entry 80 - BF - 0x051f, 0x052f, 0x053b, 0x0547, 0x0551, 0x055f, 0x0567, 0x057d, - 0x058d, 0x058d, 0x0597, 0x05aa, 0x05b4, 0x05c0, 0x05cc, 0x05e0, - 0x05ec, 0x05f4, 0x0600, 0x060c, 0x0614, 0x061e, 0x0633, 0x0641, - 0x064b, 0x0657, 0x065d, 0x0667, 0x066f, 0x0679, 0x0687, 0x0693, - 0x069d, 0x06a7, 0x06af, 0x06b9, 0x06c3, 0x06cf, 0x06db, 0x06ef, - 0x06f7, 0x0701, 0x070b, 0x0719, 0x0719, 0x0719, 0x0723, 0x072b, - 0x0731, 0x073d, 0x073d, 0x0745, 0x074d, 0x074d, 0x0757, 0x0757, - 0x0757, 0x0757, 0x0757, 0x075d, 0x075d, 0x075d, 0x075d, 0x075d, + 0x05e9, 0x05f9, 0x0605, 0x0611, 0x061b, 0x0629, 0x0631, 0x0647, + 0x0653, 0x0661, 0x066b, 0x067e, 0x0688, 0x0694, 0x06a0, 0x06b4, + 0x06c0, 0x06c8, 0x06d4, 0x06e0, 0x06ea, 0x06f4, 0x0709, 0x0717, + 0x0721, 0x072d, 0x0733, 0x073d, 0x0745, 0x074f, 0x075d, 0x0769, + 0x0773, 0x077d, 0x0785, 0x078f, 0x0799, 0x07a5, 0x07b1, 0x07c5, + 0x07cd, 0x07d7, 0x07e1, 0x07ef, 0x07fd, 0x0807, 0x0811, 0x0819, + 0x081f, 0x082b, 0x082b, 0x0833, 0x083b, 0x084b, 0x0855, 0x0863, + 0x086f, 0x086f, 0x086f, 0x0875, 0x087d, 0x087d, 0x087d, 0x0887, // Entry C0 - FF - 0x075d, 0x075d, 0x075d, 0x075d, 0x075d, 0x0769, 0x0769, 0x0769, - 0x0769, 0x0769, 0x0769, 0x0769, 0x076f, 0x076f, 0x076f, 0x076f, - 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, - 0x076f, 0x0779, 0x0779, 0x0781, 0x0781, 0x0781, 0x0796, 0x0796, - 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, - 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, - 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07a6, 0x07a6, 0x07a6, - 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07b2, 0x07b2, 0x07c7, + 0x0887, 0x089e, 0x089e, 0x08aa, 0x08aa, 0x08b6, 0x08b6, 0x08c4, + 0x08c4, 0x08c4, 0x08c4, 0x08c4, 0x08c4, 0x08ca, 0x08ca, 0x08dc, + 0x08dc, 0x08e8, 0x08e8, 0x08f6, 0x08f6, 0x08fe, 0x08fe, 0x08fe, + 0x08fe, 0x08fe, 0x0908, 0x0908, 0x0910, 0x0910, 0x0910, 0x0925, + 0x0935, 0x0935, 0x093d, 0x093d, 0x093d, 0x0949, 0x0949, 0x0949, + 0x0949, 0x0949, 0x0951, 0x0951, 0x0951, 0x095d, 0x095d, 0x0965, + 0x0965, 0x0965, 0x0965, 0x0965, 0x0965, 0x0973, 0x097b, 0x097b, + 0x097b, 0x0985, 0x098d, 0x098d, 0x0999, 0x0999, 0x09a5, 0x09af, // Entry 100 - 13F - 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07d1, 0x07d1, - 0x07d1, 0x07d1, 0x07d1, 0x07d9, 0x07d9, 0x07f0, 0x07f0, 0x07fa, - 0x07fa, 0x080d, 0x080d, 0x080d, 0x0815, 0x081f, 0x081f, 0x081f, - 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x082d, - 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, - 0x082d, 0x0831, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, - 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, - 0x083d, 0x083d, 0x084e, 0x084e, 0x084e, 0x0854, 0x0854, 0x0854, + 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09d0, 0x09da, + 0x09e4, 0x09e4, 0x09e4, 0x09f0, 0x09f0, 0x09f8, 0x09f8, 0x0a0f, + 0x0a0f, 0x0a19, 0x0a19, 0x0a2c, 0x0a2c, 0x0a36, 0x0a3e, 0x0a48, + 0x0a48, 0x0a48, 0x0a56, 0x0a56, 0x0a56, 0x0a56, 0x0a64, 0x0a64, + 0x0a64, 0x0a72, 0x0a72, 0x0a78, 0x0a78, 0x0a78, 0x0a78, 0x0a78, + 0x0a78, 0x0a78, 0x0a8a, 0x0a8e, 0x0a9a, 0x0a9d, 0x0a9d, 0x0a9d, + 0x0a9d, 0x0aa3, 0x0ab1, 0x0ab1, 0x0ab1, 0x0ab1, 0x0ab1, 0x0ab1, + 0x0ac3, 0x0ac3, 0x0ac3, 0x0ac3, 0x0ad4, 0x0ad4, 0x0ad4, 0x0ada, // Entry 140 - 17F - 0x0854, 0x085e, 0x085e, 0x085e, 0x085e, 0x085e, 0x0873, 0x0873, - 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, - 0x087f, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0895, 0x0895, - 0x0895, 0x089f, 0x089f, 0x089f, 0x089f, 0x089f, 0x08ad, 0x08c3, - 0x08c3, 0x08c3, 0x08c3, 0x08c3, 0x08c3, 0x08d6, 0x08d6, 0x08d6, - 0x08d6, 0x08e6, 0x08e6, 0x08fb, 0x0907, 0x0907, 0x0907, 0x0907, - 0x0907, 0x0907, 0x0907, 0x0907, 0x0915, 0x091f, 0x091f, 0x091f, - 0x091f, 0x091f, 0x0929, 0x0929, 0x0929, 0x0929, 0x0929, 0x0929, + 0x0ae7, 0x0ae7, 0x0aea, 0x0af4, 0x0af4, 0x0b03, 0x0b03, 0x0b0d, + 0x0b22, 0x0b25, 0x0b2f, 0x0b39, 0x0b46, 0x0b52, 0x0b5c, 0x0b5c, + 0x0b5c, 0x0b68, 0x0b74, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, + 0x0b8a, 0x0b92, 0x0b9b, 0x0ba5, 0x0ba5, 0x0bb3, 0x0bb3, 0x0bbb, + 0x0bc9, 0x0bdf, 0x0bdf, 0x0be7, 0x0be7, 0x0bf1, 0x0bf1, 0x0c04, + 0x0c04, 0x0c04, 0x0c0c, 0x0c1c, 0x0c2c, 0x0c41, 0x0c4d, 0x0c4d, + 0x0c5b, 0x0c70, 0x0c70, 0x0c70, 0x0c7c, 0x0c88, 0x0c96, 0x0ca0, + 0x0cb4, 0x0cbe, 0x0cbe, 0x0cca, 0x0cd4, 0x0cd4, 0x0cd4, 0x0ce2, // Entry 180 - 1BF - 0x0929, 0x0935, 0x0935, 0x0935, 0x093d, 0x094e, 0x094e, 0x0963, - 0x0963, 0x0963, 0x0967, 0x0967, 0x096f, 0x096f, 0x096f, 0x096f, - 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x0979, 0x0979, 0x0979, - 0x0979, 0x0979, 0x0981, 0x0991, 0x0991, 0x09a6, 0x09ae, 0x09ae, - 0x09ae, 0x09ae, 0x09ae, 0x09b8, 0x09b8, 0x09b8, 0x09c4, 0x09c4, - 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09d4, 0x09d4, - 0x09d4, 0x09dc, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09f9, - 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x0a03, 0x0a18, 0x0a20, 0x0a20, + 0x0ce2, 0x0ce2, 0x0ce2, 0x0cee, 0x0cee, 0x0cee, 0x0cf6, 0x0d07, + 0x0d07, 0x0d1c, 0x0d1c, 0x0d26, 0x0d2a, 0x0d32, 0x0d3a, 0x0d3a, + 0x0d3a, 0x0d46, 0x0d46, 0x0d50, 0x0d5e, 0x0d68, 0x0d68, 0x0d72, + 0x0d72, 0x0d7c, 0x0d7c, 0x0d86, 0x0d8e, 0x0d9e, 0x0d9e, 0x0db3, + 0x0dbb, 0x0dc5, 0x0dd7, 0x0dd7, 0x0de6, 0x0df0, 0x0df8, 0x0df8, + 0x0e04, 0x0e1b, 0x0e23, 0x0e33, 0x0e33, 0x0e33, 0x0e33, 0x0e3d, + 0x0e4d, 0x0e50, 0x0e62, 0x0e6a, 0x0e7b, 0x0e87, 0x0e8f, 0x0e9d, + 0x0e9d, 0x0ea9, 0x0eb7, 0x0ec3, 0x0ec3, 0x0ec3, 0x0ecd, 0x0ee2, // Entry 1C0 - 1FF - 0x0a20, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, - 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, - 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a34, 0x0a34, - 0x0a34, 0x0a34, 0x0a34, 0x0a34, 0x0a34, 0x0a3e, 0x0a3e, 0x0a3e, - 0x0a3e, 0x0a3e, 0x0a3e, 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a52, - 0x0a52, 0x0a52, 0x0a52, 0x0a52, 0x0a5c, 0x0a5c, 0x0a5c, 0x0a5c, - 0x0a6d, 0x0a6d, 0x0a75, 0x0a75, 0x0a75, 0x0a90, 0x0a90, 0x0a90, - 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0aaf, 0x0abe, + 0x0eea, 0x0eea, 0x0eea, 0x0ef6, 0x0ef6, 0x0ef6, 0x0ef6, 0x0ef6, + 0x0f06, 0x0f06, 0x0f14, 0x0f28, 0x0f34, 0x0f34, 0x0f51, 0x0f51, + 0x0f51, 0x0f51, 0x0f51, 0x0f51, 0x0f51, 0x0f51, 0x0f51, 0x0f5b, + 0x0f5b, 0x0f63, 0x0f63, 0x0f63, 0x0f6f, 0x0f83, 0x0f83, 0x0f83, + 0x0f8d, 0x0f8d, 0x0f8d, 0x0f8d, 0x0f8d, 0x0f9b, 0x0fa1, 0x0fad, + 0x0fb7, 0x0fb7, 0x0fc5, 0x0fc5, 0x0fd1, 0x0fd1, 0x0fdd, 0x0fe7, + 0x0ff5, 0x0ffd, 0x0ffd, 0x100e, 0x100e, 0x1016, 0x1016, 0x1016, + 0x1031, 0x1031, 0x1031, 0x103d, 0x1043, 0x1043, 0x1043, 0x1043, // Entry 200 - 23F - 0x0ad1, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, - 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, - 0x0ae4, 0x0aec, 0x0aec, 0x0af4, 0x0af4, 0x0af4, 0x0af4, 0x0af4, - 0x0afe, 0x0afe, 0x0afe, 0x0afe, 0x0afe, 0x0b0f, 0x0b0f, 0x0b0f, - 0x0b0f, 0x0b0f, 0x0b0f, 0x0b1b, 0x0b1b, 0x0b29, 0x0b29, 0x0b4f, - 0x0b4f, 0x0b4f, 0x0b4f, 0x0b66, 0x0b6e, 0x0b6e, 0x0b6e, 0x0b6e, - 0x0b6e, 0x0b6e, 0x0b6e, 0x0b76, 0x0b76, 0x0b76, 0x0b76, 0x0b76, - 0x0b86, 0x0b86, 0x0b86, 0x0b86, 0x0b8e, 0x0b8e, 0x0b8e, 0x0b8e, + 0x1043, 0x1056, 0x1065, 0x1078, 0x108b, 0x1097, 0x1097, 0x10ac, + 0x10ac, 0x10b4, 0x10b4, 0x10be, 0x10be, 0x10be, 0x10d0, 0x10d0, + 0x10dc, 0x10dc, 0x10dc, 0x10e4, 0x10ec, 0x10ec, 0x10f4, 0x10fc, + 0x10fc, 0x10fc, 0x10fc, 0x1106, 0x1106, 0x1106, 0x1106, 0x1106, + 0x1117, 0x1117, 0x1123, 0x1123, 0x1123, 0x1123, 0x112f, 0x113b, + 0x1149, 0x1157, 0x117d, 0x1189, 0x1189, 0x1199, 0x119f, 0x11a7, + 0x11a7, 0x11a7, 0x11a7, 0x11a7, 0x11a7, 0x11a7, 0x11af, 0x11b9, + 0x11c7, 0x11cf, 0x11cf, 0x11df, 0x11e2, 0x11ee, 0x11ee, 0x11f6, // Entry 240 - 27F - 0x0b8e, 0x0b8e, 0x0b8e, 0x0b8e, 0x0b8e, 0x0b8e, 0x0b8e, 0x0bba, - 0x0bba, 0x0bdf, 0x0bdf, 0x0c03, 0x0c24, 0x0c3d, 0x0c57, 0x0c7a, - 0x0c97, 0x0cb4, 0x0ccf, 0x0cf7, 0x0d10, 0x0d2d, 0x0d2d, 0x0d4c, - 0x0d5f, 0x0d72, 0x0d7e, 0x0d9b, 0x0db4, 0x0dc2, 0x0ddb, 0x0df2, - 0x0e0e, 0x0e23, -} // Size: 1244 bytes - -var uzLangStr string = "" + // Size: 1850 bytes - "abxazafrikaansakanamxararabassamozarbayjonboshqirdbelarusbolgarbambarben" + - "galtibetbretonbosniykatalanchechenkorsikanchexchuvashvalliydatnemischadz" + - "ongkaevegrekinglizchaesperantoispanchaestonchabaskforsfinchafijifarercha" + - "fransuzchag‘arbiy frizirlandgalisiyguaranigujarotmenxausaibroniyhindxorv" + - "atgaityanvengerarmanindonezigbosichuanislanditalyaninuktitutyaponyavangr" + - "uzinchakikuyuqozoqchagrenlandxmerchakannadakoreyschakashmirchakurdchakor" + - "nqirgʻizchalotinchalyuksemburgchagandalingalalaoschalitvaluba-katangalat" + - "ishchamalagasiymaorimakedonmalayalammo‘g‘ulmaratximalaymaltiybirmanshimo" + - "liy ndebelenepalgollandnorveg-nyunorsknorveg-bokmaloromooriyapanjobchapo" + - "lyakchapushtuportugalchakechuaromanshrundirumincharuschakinyaruandasansk" + - "ritsindxishimoliy saamsangosingalslovakchaslovenchashonasomalichaalbanse" + - "rbchasundanshvedsuaxilitamiltelugutojiktaytigrinyaturkmantonganturktatar" + - "uyg‘urukrainurduo‘zbekvyetnamvolofkxosayorubaxitoyzuluagemaraukanasubemb" + - "abenag‘arbiy belujibodochigacherokisorani-kurdtaitazarmaquyi sorbchadual" + - "adiola-fogniembufilipinchagagauznemis (Shveytsariya)gusiigavaychayuqori " + - "sorbngombamachamekabilkambamakondekabuverdianukoyra-chiinikalenjinkomi-p" + - "ermyakkonkanshambalabafiyalangilakotashimoliy luriluoluhyamasaymendemeru" + - "morisyenmaxuva-mittometamohaukmundangmazanderannamaquyi nemiskvasionkonu" + - "ernyankolekicheromboruandasamburusangujanubiy kurdsenakoyraboro-sennitas" + - "helxitjanubiy saamlule-saaminari-saamskolt-saamtesotasavaqmarkaziy atlas" + - " tamazigxtnoma’lum tilvaivunjovalbirisogatamazigxttil tarkibi yo‘qstanda" + - "rt arabnemis (Avstriya)yuqori nemis (Shveytsariya)ingliz (Avstraliya)ing" + - "liz (Kanada)ingliz (Britaniya)ingliz (Amerika)ispan (Lotin Amerikasi)isp" + - "an (Yevropa)ispan (Meksika)fransuz (Kanada)fransuz (Shveytsariya)quyi sa" + - "ksonflamandportugal (Braziliya)portugal (Yevropa)moldovankongo-suaxiliso" + - "ddalashgan xitoyan’anaviy xitoy" - -var uzLangIdx = []uint16{ // 610 elements + 0x11f6, 0x11f6, 0x1204, 0x120c, 0x120c, 0x121c, 0x121c, 0x121c, + 0x121c, 0x121c, 0x1248, 0x1250, 0x1275, 0x127d, 0x12a1, 0x12c2, + 0x12db, 0x12f5, 0x1318, 0x1335, 0x1352, 0x136d, 0x1395, 0x13ae, + 0x13cb, 0x13cb, 0x13ea, 0x13fd, 0x1410, 0x141c, 0x1439, 0x1452, + 0x1460, 0x1479, 0x1490, 0x14ac, 0x14c1, +} // Size: 1250 bytes + +const uzLangStr string = "" + // Size: 2777 bytes + "abxazafrikaansakanamxararagonarabassamavaraymaraozarbayjonboshqirdbelaru" + + "sbolgarbislamabambarabengaltibetbretonbosniykatalanchechenchamorrokorsik" + + "anchexslavyan (cherkov)chuvashvalliydatnemischadzongkaevegrekinglizchaes" + + "perantoispanchaestonchabaskforsfinchafijifarerchafransuzchag‘arbiy frizi" + + "rlandgalisiyguaranigujarotmenxausaibroniyhindxorvatgaityanvengerarmanger" + + "erointerlingvaindonezigbosichuanidoislanditalyaninuktitutyaponyavangruzi" + + "nchakikuyukvanyamaqozoqchagrenlandxmerchakannadakoreyschakanurikashmirch" + + "akurdchakomikornqirgʻizchalotinchalyuksemburgchagandalimburglingalalaosl" + + "itvaluba-katangalatishchamalagasiymarshallmaorimakedonmalayalammo‘g‘ulma" + + "ratximalaymaltiybirmannaurushimoliy ndebelenepalndongagollandnorveg-nyun" + + "orsknorveg-bokmalnavaxooromooriyaosetinpanjobchapolyakchapushtuportugalc" + + "hakechuaromanshrundirumincharuschakinyaruandasanskritsardinsindxishimoli" + + "y saamsangosingalslovakchaslovenchasamoashonasomalichaalbanserbchajanubi" + + "y sotosundanshvedsuaxilitamiltelugutojiktaytigrinyaturkmantsvanatongantu" + + "rktsongatatartaitiuyg‘urukrainurduo‘zbekvendavyetnamvolapyukvallonvolofk" + + "xosaidishyorubaxitoyzuluachinadangmeadigeyagemaynualeutjanubiy oltoyangi" + + "kaaraukanarapaxoasuasturiyavadxibembabenag‘arbiy balujbxojpuribinisiksik" + + "abodobugichigachukotchoktavcherokicheyennsorani-kurdkreol (Seyshel)dakot" + + "adargvataitadogribzarmaquyi sorbchadualadiola-fogniembuefikekajukfilipin" + + "chafongagagauzgangeezgilbertgorontalonemis (Shveytsariya)gusiigvichinhak" + + "gavaychaxmongyuqori sorbhsnxupaibanibibioilokoingushlojbanngombamachamek" + + "abilkachinkajikambakabardintyapmakondekabuverdianukorokxasikoyra-chiinik" + + "akokalenjinkimbundukomi-permyakkonkankpelleqorachoy-bolqorkarelkuruxsham" + + "balabafiyakyolnqo‘miqladinolangilezginlakotalozishimoliy luriluba-lulual" + + "undaluolushayluhyamadurmagahimaythilimakasarmasaymokshamendemerumorisyen" + + "maxuva-mittometamikmakminangkabaumohaukmossimundangbir nechta tilkrikmir" + + "andaerzyamozandaronnanneapolitannamaquyi nemisnevarniaskvasiongiyembunno" + + "‘g‘aynkoshimoliy sotonuernyankolepangasinanpampangapalaukreol (Nigeriy" + + "a)prusskicherapanuirarotonganromboaruminruandasandavesaxasamburungambays" + + "angusitsiliyashotlandjanubiy kurdsenakoyraboro-sennitashelxitshanjanubiy" + + " saamlule-saaminari-saamskolt-saamsoninkesranan-tongosukumaqamartimnetes" + + "otetumtigreklingontok-piksintarokotumbukatuvalutasavaktuvamarkaziy atlas" + + " tamazigxtudmurtumbundutub aholi tilivaivunjovarayvalbiriwuuqalmoqsogaya" + + "ngbenyembakantontamazigxtzunitil tarkibi yo‘qzazastandart arabnemis (Avs" + + "triya)yuqori nemis (Shveytsariya)ingliz (Avstraliya)ingliz (Kanada)ingli" + + "z (Britaniya)ingliz (Amerika)ispan (Lotin Amerikasi)ispan (Yevropa)ispan" + + " (Meksika)fransuz (Kanada)fransuz (Shveytsariya)quyi saksonflamandportug" + + "al (Braziliya)portugal (Yevropa)moldovansuaxili (Kongo)xitoy (soddalashg" + + "an)xitoy (an’anaviy)" + +var uzLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0005, 0x000e, 0x0012, 0x0017, 0x0017, - 0x001b, 0x0020, 0x0020, 0x0020, 0x002a, 0x0032, 0x0039, 0x003f, - 0x003f, 0x0045, 0x004b, 0x0050, 0x0056, 0x005c, 0x0063, 0x006a, - 0x006a, 0x0072, 0x0072, 0x0076, 0x0076, 0x007d, 0x0083, 0x0086, - 0x008e, 0x008e, 0x0095, 0x0098, 0x009c, 0x00a5, 0x00ae, 0x00b6, - 0x00be, 0x00c2, 0x00c6, 0x00c6, 0x00cc, 0x00d0, 0x00d8, 0x00e2, - 0x00f0, 0x00f6, 0x00f6, 0x00fd, 0x0104, 0x010b, 0x010e, 0x0113, - 0x011a, 0x011e, 0x011e, 0x0124, 0x012b, 0x0131, 0x0136, 0x0136, + 0x0000, 0x0000, 0x0005, 0x0005, 0x000e, 0x0012, 0x0017, 0x001d, + 0x0021, 0x0026, 0x002a, 0x0030, 0x003a, 0x0042, 0x0049, 0x004f, + 0x0056, 0x005d, 0x0063, 0x0068, 0x006e, 0x0074, 0x007b, 0x0082, + 0x008a, 0x0092, 0x0092, 0x0096, 0x00a7, 0x00ae, 0x00b4, 0x00b7, + 0x00bf, 0x00bf, 0x00c6, 0x00c9, 0x00cd, 0x00d6, 0x00df, 0x00e7, + 0x00ef, 0x00f3, 0x00f7, 0x00f7, 0x00fd, 0x0101, 0x0109, 0x0113, + 0x0121, 0x0127, 0x0127, 0x012e, 0x0135, 0x013c, 0x013f, 0x0144, + 0x014b, 0x014f, 0x014f, 0x0155, 0x015c, 0x0162, 0x0167, 0x016d, // Entry 40 - 7F - 0x0136, 0x013d, 0x013d, 0x0141, 0x0148, 0x0148, 0x0148, 0x014e, - 0x0155, 0x015e, 0x0163, 0x0168, 0x0171, 0x0171, 0x0177, 0x0177, - 0x017f, 0x0187, 0x018e, 0x0195, 0x019e, 0x019e, 0x01a8, 0x01af, - 0x01af, 0x01b3, 0x01be, 0x01c6, 0x01d4, 0x01d9, 0x01d9, 0x01e0, - 0x01e7, 0x01ec, 0x01f8, 0x0201, 0x020a, 0x020a, 0x020f, 0x0216, - 0x021f, 0x022a, 0x0231, 0x0236, 0x023c, 0x0242, 0x0242, 0x0252, - 0x0257, 0x0257, 0x025e, 0x026d, 0x027a, 0x027a, 0x027a, 0x027a, - 0x027a, 0x027a, 0x027f, 0x0284, 0x0284, 0x028d, 0x028d, 0x0296, + 0x0178, 0x017f, 0x017f, 0x0183, 0x018a, 0x018a, 0x018d, 0x0193, + 0x019a, 0x01a3, 0x01a8, 0x01ad, 0x01b6, 0x01b6, 0x01bc, 0x01c4, + 0x01cc, 0x01d4, 0x01db, 0x01e2, 0x01eb, 0x01f1, 0x01fb, 0x0202, + 0x0206, 0x020a, 0x0215, 0x021d, 0x022b, 0x0230, 0x0237, 0x023e, + 0x0242, 0x0247, 0x0253, 0x025c, 0x0265, 0x026d, 0x0272, 0x0279, + 0x0282, 0x028d, 0x0294, 0x0299, 0x029f, 0x02a5, 0x02aa, 0x02ba, + 0x02bf, 0x02c5, 0x02cc, 0x02db, 0x02e8, 0x02e8, 0x02ee, 0x02ee, + 0x02ee, 0x02ee, 0x02f3, 0x02f8, 0x02fe, 0x0307, 0x0307, 0x0310, // Entry 80 - BF - 0x029c, 0x02a7, 0x02ad, 0x02b4, 0x02b9, 0x02c1, 0x02c7, 0x02d2, - 0x02da, 0x02da, 0x02e0, 0x02ed, 0x02f2, 0x02f8, 0x0301, 0x030a, - 0x030a, 0x030f, 0x0318, 0x031d, 0x0324, 0x0324, 0x0324, 0x032a, - 0x032f, 0x0336, 0x033b, 0x0341, 0x0346, 0x0349, 0x0351, 0x0358, - 0x0358, 0x035e, 0x0362, 0x0362, 0x0367, 0x0367, 0x036f, 0x0375, - 0x0379, 0x0381, 0x0381, 0x0388, 0x0388, 0x0388, 0x038d, 0x0392, - 0x0392, 0x0398, 0x0398, 0x039d, 0x03a1, 0x03a1, 0x03a1, 0x03a1, - 0x03a1, 0x03a1, 0x03a1, 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03a5, + 0x0316, 0x0321, 0x0327, 0x032e, 0x0333, 0x033b, 0x0341, 0x034c, + 0x0354, 0x035a, 0x0360, 0x036d, 0x0372, 0x0378, 0x0381, 0x038a, + 0x038f, 0x0394, 0x039d, 0x03a2, 0x03a9, 0x03a9, 0x03b5, 0x03bb, + 0x03c0, 0x03c7, 0x03cc, 0x03d2, 0x03d7, 0x03da, 0x03e2, 0x03e9, + 0x03ef, 0x03f5, 0x03f9, 0x03ff, 0x0404, 0x0409, 0x0411, 0x0417, + 0x041b, 0x0423, 0x0428, 0x042f, 0x0437, 0x043d, 0x0442, 0x0447, + 0x044c, 0x0452, 0x0452, 0x0457, 0x045b, 0x0460, 0x0460, 0x0467, + 0x046d, 0x046d, 0x046d, 0x0471, 0x0475, 0x0475, 0x0475, 0x047a, // Entry C0 - FF - 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03ac, 0x03ac, 0x03ac, - 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03af, 0x03af, 0x03af, 0x03af, - 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, - 0x03af, 0x03b4, 0x03b4, 0x03b8, 0x03b8, 0x03b8, 0x03c8, 0x03c8, - 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, - 0x03c8, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, - 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03d1, 0x03d1, 0x03d1, - 0x03d1, 0x03d1, 0x03d1, 0x03d1, 0x03d1, 0x03d8, 0x03d8, 0x03e3, + 0x047a, 0x0487, 0x0487, 0x048d, 0x048d, 0x0494, 0x0494, 0x049b, + 0x049b, 0x049b, 0x049b, 0x049b, 0x049b, 0x049e, 0x049e, 0x04a5, + 0x04a5, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, + 0x04ab, 0x04ab, 0x04b0, 0x04b0, 0x04b4, 0x04b4, 0x04b4, 0x04c3, + 0x04cb, 0x04cb, 0x04cf, 0x04cf, 0x04cf, 0x04d6, 0x04d6, 0x04d6, + 0x04d6, 0x04d6, 0x04da, 0x04da, 0x04da, 0x04de, 0x04de, 0x04de, + 0x04de, 0x04de, 0x04de, 0x04de, 0x04de, 0x04de, 0x04e3, 0x04e3, + 0x04e3, 0x04e9, 0x04e9, 0x04e9, 0x04f0, 0x04f0, 0x04f7, 0x04fe, // Entry 100 - 13F - 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e8, 0x03e8, - 0x03e8, 0x03e8, 0x03e8, 0x03ed, 0x03ed, 0x03f9, 0x03f9, 0x03fe, - 0x03fe, 0x0409, 0x0409, 0x0409, 0x040d, 0x040d, 0x040d, 0x040d, - 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x0417, - 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, - 0x0417, 0x0417, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x0431, 0x0431, 0x0431, 0x0436, 0x0436, 0x0436, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0518, 0x0518, 0x051e, 0x0524, + 0x0529, 0x0529, 0x0529, 0x052f, 0x052f, 0x0534, 0x0534, 0x0540, + 0x0540, 0x0545, 0x0545, 0x0550, 0x0550, 0x0550, 0x0554, 0x0558, + 0x0558, 0x0558, 0x055e, 0x055e, 0x055e, 0x055e, 0x055e, 0x055e, + 0x055e, 0x0568, 0x0568, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, + 0x056b, 0x056b, 0x056b, 0x056d, 0x0573, 0x0576, 0x0576, 0x0576, + 0x0576, 0x057a, 0x0581, 0x0581, 0x0581, 0x0581, 0x0581, 0x0581, + 0x058a, 0x058a, 0x058a, 0x058a, 0x059e, 0x059e, 0x059e, 0x05a3, // Entry 140 - 17F - 0x0436, 0x043e, 0x043e, 0x043e, 0x043e, 0x043e, 0x0449, 0x0449, - 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, - 0x044f, 0x0456, 0x0456, 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, - 0x045b, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0467, 0x0473, - 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x047f, 0x047f, 0x047f, - 0x047f, 0x0487, 0x0487, 0x0493, 0x0499, 0x0499, 0x0499, 0x0499, - 0x0499, 0x0499, 0x0499, 0x0499, 0x04a1, 0x04a7, 0x04a7, 0x04a7, - 0x04a7, 0x04a7, 0x04ac, 0x04ac, 0x04ac, 0x04ac, 0x04ac, 0x04ac, + 0x05aa, 0x05aa, 0x05ad, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05ba, + 0x05c5, 0x05c8, 0x05cc, 0x05d0, 0x05d6, 0x05db, 0x05e1, 0x05e1, + 0x05e1, 0x05e7, 0x05ed, 0x05f4, 0x05f4, 0x05f4, 0x05f4, 0x05f4, + 0x05f9, 0x05ff, 0x0603, 0x0608, 0x0608, 0x0610, 0x0610, 0x0614, + 0x061b, 0x0627, 0x0627, 0x062b, 0x062b, 0x0630, 0x0630, 0x063c, + 0x063c, 0x063c, 0x0640, 0x0648, 0x0650, 0x065c, 0x0662, 0x0662, + 0x0668, 0x0677, 0x0677, 0x0677, 0x067c, 0x0681, 0x0689, 0x068f, + 0x0694, 0x069c, 0x069c, 0x06a2, 0x06a7, 0x06a7, 0x06a7, 0x06ad, // Entry 180 - 1BF - 0x04ac, 0x04b2, 0x04b2, 0x04b2, 0x04b2, 0x04bf, 0x04bf, 0x04bf, - 0x04bf, 0x04bf, 0x04c2, 0x04c2, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04d1, 0x04d5, 0x04dd, 0x04dd, 0x04e9, 0x04ed, 0x04ed, - 0x04ed, 0x04ed, 0x04ed, 0x04f3, 0x04f3, 0x04f3, 0x04fa, 0x04fa, - 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x0504, 0x0504, - 0x0504, 0x0508, 0x0512, 0x0512, 0x0512, 0x0512, 0x0512, 0x0518, - 0x0518, 0x0518, 0x0518, 0x0518, 0x051b, 0x051b, 0x051f, 0x051f, + 0x06ad, 0x06ad, 0x06ad, 0x06b3, 0x06b3, 0x06b3, 0x06b7, 0x06c4, + 0x06c4, 0x06ce, 0x06ce, 0x06d3, 0x06d6, 0x06dc, 0x06e1, 0x06e1, + 0x06e1, 0x06e6, 0x06e6, 0x06ec, 0x06f4, 0x06fb, 0x06fb, 0x0700, + 0x0700, 0x0706, 0x0706, 0x070b, 0x070f, 0x0717, 0x0717, 0x0723, + 0x0727, 0x072d, 0x0738, 0x0738, 0x0738, 0x073e, 0x0743, 0x0743, + 0x074a, 0x0758, 0x075c, 0x0763, 0x0763, 0x0763, 0x0763, 0x0768, + 0x0772, 0x0775, 0x077f, 0x0783, 0x078d, 0x0792, 0x0796, 0x0796, + 0x0796, 0x079c, 0x07a5, 0x07b0, 0x07b0, 0x07b0, 0x07b3, 0x07c0, // Entry 1C0 - 1FF - 0x051f, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, - 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, - 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x052c, 0x052c, - 0x052c, 0x052c, 0x052c, 0x052c, 0x052c, 0x0531, 0x0531, 0x0531, - 0x0531, 0x0531, 0x0531, 0x0537, 0x0537, 0x0537, 0x0537, 0x053e, - 0x053e, 0x053e, 0x053e, 0x053e, 0x0543, 0x0543, 0x0543, 0x0543, - 0x054f, 0x054f, 0x0553, 0x0553, 0x0553, 0x0562, 0x0562, 0x0562, - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0577, 0x0580, + 0x07c4, 0x07c4, 0x07c4, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, + 0x07d6, 0x07d6, 0x07de, 0x07de, 0x07e3, 0x07e3, 0x07f3, 0x07f3, + 0x07f3, 0x07f3, 0x07f3, 0x07f3, 0x07f3, 0x07f3, 0x07f3, 0x07f8, + 0x07f8, 0x07fd, 0x07fd, 0x07fd, 0x0804, 0x080e, 0x080e, 0x080e, + 0x0813, 0x0813, 0x0813, 0x0813, 0x0813, 0x0819, 0x081f, 0x0826, + 0x082a, 0x082a, 0x0831, 0x0831, 0x0831, 0x0831, 0x0838, 0x083d, + 0x0846, 0x084e, 0x084e, 0x085a, 0x085a, 0x085e, 0x085e, 0x085e, + 0x086d, 0x086d, 0x086d, 0x0876, 0x087a, 0x087a, 0x087a, 0x087a, // Entry 200 - 23F - 0x058a, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, - 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, - 0x0594, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, - 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, - 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x059f, 0x059f, 0x05b7, - 0x05b7, 0x05b7, 0x05b7, 0x05c5, 0x05c8, 0x05c8, 0x05c8, 0x05c8, - 0x05c8, 0x05c8, 0x05c8, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05cd, - 0x05d4, 0x05d4, 0x05d4, 0x05d4, 0x05d8, 0x05d8, 0x05d8, 0x05d8, + 0x087a, 0x0886, 0x088f, 0x0899, 0x08a3, 0x08aa, 0x08aa, 0x08b6, + 0x08b6, 0x08b6, 0x08b6, 0x08bc, 0x08bc, 0x08bc, 0x08c1, 0x08c1, + 0x08c1, 0x08c1, 0x08c1, 0x08c6, 0x08ca, 0x08ca, 0x08cf, 0x08d4, + 0x08d4, 0x08d4, 0x08d4, 0x08db, 0x08db, 0x08db, 0x08db, 0x08db, + 0x08e5, 0x08e5, 0x08eb, 0x08eb, 0x08eb, 0x08eb, 0x08f2, 0x08f8, + 0x08ff, 0x0903, 0x091b, 0x0921, 0x0921, 0x0928, 0x0936, 0x0939, + 0x0939, 0x0939, 0x0939, 0x0939, 0x0939, 0x0939, 0x093e, 0x093e, + 0x093e, 0x0943, 0x0943, 0x094a, 0x094d, 0x0953, 0x0953, 0x0957, // Entry 240 - 27F - 0x05d8, 0x05d8, 0x05d8, 0x05d8, 0x05d8, 0x05d8, 0x05d8, 0x05e1, - 0x05e1, 0x05f3, 0x05f3, 0x0600, 0x0600, 0x0610, 0x062b, 0x063e, - 0x064d, 0x065f, 0x066f, 0x0686, 0x0695, 0x06a4, 0x06a4, 0x06b4, - 0x06ca, 0x06d5, 0x06dc, 0x06f0, 0x0702, 0x070a, 0x070a, 0x0717, - 0x0729, 0x073a, -} // Size: 1244 bytes - -var viLangStr string = "" + // Size: 8556 bytes - "Tiếng AfarTiếng AbkhaziaTiếng AvestanTiếng Nam PhiTiếng AkanTiếng Amhari" + - "cTiếng AragonTiếng Ả RậpTiếng AssamTiếng AvaricTiếng AymaraTiếng Azerbai" + - "janTiếng BashkirTiếng BelarusTiếng BulgariaTiếng BislamaTiếng BambaraTiế" + - "ng BengaliTiếng Tây TạngTiếng BretonTiếng Nam TưTiếng CatalanTiếng Chech" + - "enTiếng ChamorroTiếng CorsicaTiếng CreeTiếng SécTiếng Slavơ Nhà thờTiếng" + - " ChuvashTiếng WalesTiếng Đan MạchTiếng ĐứcTiếng DivehiTiếng DzongkhaTiến" + - "g EweTiếng Hy LạpTiếng AnhTiếng Quốc Tế NgữTiếng Tây Ban NhaTiếng Estoni" + - "aTiếng BasqueTiếng Ba TưTiếng FulahTiếng Phần LanTiếng FijiTiếng FaoreTi" + - "ếng PhápTiếng FrisiaTiếng Ai-lenTiếng Xentơ (Xcốt len)Tiếng GalicianTi" + - "ếng GuaraniTiếng GujaratiTiếng ManxTiếng HausaTiếng Do TháiTiếng Hindi" + - "Tiếng Hiri MotuTiếng CroatiaTiếng HaitiTiếng HungaryTiếng ArmeniaTiếng H" + - "ereroTiếng Khoa Học Quốc TếTiếng IndonesiaTiếng InterlingueTiếng IgboTiế" + - "ng Di Tứ XuyênTiếng InupiaqTiếng IdoTiếng IcelandTiếng ÝTiếng InuktitutT" + - "iếng NhậtTiếng JavaTiếng GruziaTiếng KongoTiếng KikuyuTiếng KuanyamaTiến" + - "g KazakhTiếng KalaallisutTiếng Khơ-meTiếng KannadaTiếng HànTiếng KanuriT" + - "iếng KashmiriTiếng KurdTiếng KomiTiếng CornwallTiếng KyrgyzTiếng La-tinh" + - "Tiếng LuxembourgTiếng GandaTiếng LimburgTiếng LingalaTiếng LàoTiếng Lít-" + - "vaTiếng Luba-KatangaTiếng LatviaTiếng MalagasyTiếng MarshallTiếng MaoriT" + - "iếng MacedoniaTiếng MalayalamTiếng Mông CổTiếng MarathiTiếng MalaysiaTiế" + - "ng MaltTiếng Miến ĐiệnTiếng NauruTiếng Ndebele Miền BắcTiếng NepalTiếng " + - "NdongaTiếng Hà LanTiếng Na Uy (Nynorsk)Tiếng Na Uy (Bokmål)Tiếng Ndebele" + - " Miền NamTiếng NavajoTiếng NyanjaTiếng OccitanTiếng OjibwaTiếng OromoTiế" + - "ng OriyaTiếng OsseticTiếng PunjabTiếng PaliTiếng Ba LanTiếng PashtoTiếng" + - " Bồ Đào NhaTiếng QuechuaTiếng RomanshTiếng RundiTiếng RumaniTiếng NgaTiế" + - "ng KinyarwandaTiếng PhạnTiếng SardiniaTiếng SindhiTiếng Sami Miền BắcTiế" + - "ng SangoTiếng SinhalaTiếng SlovakTiếng SloveniaTiếng SamoaTiếng ShonaTiế" + - "ng SomaliTiếng An-ba-niTiếng SerbiaTiếng SwatiTiếng SesothoTiếng SundaTi" + + 0x0957, 0x0957, 0x095e, 0x0963, 0x0963, 0x0969, 0x0969, 0x0969, + 0x0969, 0x0969, 0x0972, 0x0976, 0x0988, 0x098c, 0x0999, 0x0999, + 0x09a9, 0x09c4, 0x09d7, 0x09e6, 0x09f8, 0x0a08, 0x0a1f, 0x0a2e, + 0x0a3d, 0x0a3d, 0x0a4d, 0x0a63, 0x0a6e, 0x0a75, 0x0a89, 0x0a9b, + 0x0aa3, 0x0aa3, 0x0ab2, 0x0ac6, 0x0ad9, +} // Size: 1250 bytes + +const viLangStr string = "" + // Size: 8662 bytes + "Tiếng AfarTiếng AbkhaziaTiếng AvestanTiếng AfrikaansTiếng AkanTiếng Amha" + + "ricTiếng AragonTiếng Ả RậpTiếng AssamTiếng AvaricTiếng AymaraTiếng Azerb" + + "aijanTiếng BashkirTiếng BelarusTiếng BulgariaTiếng BislamaTiếng BambaraT" + + "iếng BanglaTiếng Tây TạngTiếng BretonTiếng BosniaTiếng CatalanTiếng Chec" + + "henTiếng ChamorroTiếng CorsicaTiếng CreeTiếng SécTiếng Slavơ Nhà thờTiến" + + "g ChuvashTiếng WalesTiếng Đan MạchTiếng ĐứcTiếng DivehiTiếng DzongkhaTiế" + + "ng EweTiếng Hy LạpTiếng AnhTiếng Quốc Tế NgữTiếng Tây Ban NhaTiếng Eston" + + "iaTiếng BasqueTiếng Ba TưTiếng FulahTiếng Phần LanTiếng FijiTiếng FaroeT" + + "iếng PhápTiếng FrisiaTiếng IrelandTiếng Gael ScotlandTiếng GalicianTiếng" + + " GuaraniTiếng GujaratiTiếng ManxTiếng HausaTiếng Do TháiTiếng HindiTiếng" + + " Hiri MotuTiếng CroatiaTiếng HaitiTiếng HungaryTiếng ArmeniaTiếng Herero" + + "Tiếng Khoa Học Quốc TếTiếng IndonesiaTiếng InterlingueTiếng IgboTiếng Di" + + " Tứ XuyênTiếng InupiaqTiếng IdoTiếng IcelandTiếng ÝTiếng InuktitutTiếng " + + "NhậtTiếng JavaTiếng GruziaTiếng KongoTiếng KikuyuTiếng KuanyamaTiếng Kaz" + + "akhTiếng KalaallisutTiếng Khơ-meTiếng KannadaTiếng HànTiếng KanuriTiếng " + + "KashmirTiếng KurdTiếng KomiTiếng CornwallTiếng KyrgyzTiếng La-tinhTiếng " + + "LuxembourgTiếng GandaTiếng LimburgTiếng LingalaTiếng LàoTiếng LitvaTiếng" + + " Luba-KatangaTiếng LatviaTiếng MalagasyTiếng MarshallTiếng MaoriTiếng Ma" + + "cedoniaTiếng MalayalamTiếng Mông CổTiếng MarathiTiếng Mã LaiTiếng MaltaT" + + "iếng Miến ĐiệnTiếng NauruTiếng Ndebele Miền BắcTiếng NepalTiếng NdongaTi" + + "ếng Hà LanTiếng Na Uy (Nynorsk)Tiếng Na Uy (Bokmål)Tiếng Ndebele Miền " + + "NamTiếng NavajoTiếng NyanjaTiếng OccitanTiếng OjibwaTiếng OromoTiếng Odi" + + "aTiếng OsseticTiếng PunjabTiếng PaliTiếng Ba LanTiếng PashtoTiếng Bồ Đào" + + " NhaTiếng QuechuaTiếng RomanshTiếng RundiTiếng RomaniaTiếng NgaTiếng Kin" + + "yarwandaTiếng PhạnTiếng SardiniaTiếng SindhiTiếng Sami Miền BắcTiếng San" + + "goTiếng SinhalaTiếng SlovakTiếng SloveniaTiếng SamoaTiếng ShonaTiếng Som" + + "aliTiếng AlbaniaTiếng SerbiaTiếng SwatiTiếng Sotho Miền NamTiếng SundaTi" + "ếng Thụy ĐiểnTiếng SwahiliTiếng TamilTiếng TeluguTiếng TajikTiếng Thái" + - "Tiếng TigrigyaTiếng TurkTiếng TswanaTiếng TongaTiếng Thổ Nhĩ KỳTiếng Tso" + - "ngaTiếng TatarTiếng TahitiTiếng UyghurTiếng UcrainaTiếng UđuTiếng UzbekT" + - "iếng VendaTiếng ViệtTiếng VolapükTiếng WalloonTiếng WolofTiếng XhosaTiến" + - "g Y-đitTiếng YorubaTiếng ZhuangTiếng TrungTiếng ZuluTiếng AchineseTiếng " + - "AcoliTiếng AdangmeTiếng AdygheTiếng AfrihiliTiếng AghemTiếng AinuTiếng A" + - "kkadiaTiếng AlabamaTiếng AleutTiếng Gheg AlbaniTiếng Altai Miền NamTiếng" + - " Anh cổTiếng AngikaTiếng AramaicTiếng AraucanianTiếng AraonaTiếng Arapah" + - "oTiếng Ả Rập AlgeriaTiếng ArawakTiếng Ả Rập Ai CậpTiếng AsuNgôn ngữ Ký h" + - "iệu MỹTiếng AsturiasTiếng AwadhiTiếng BaluchiTiếng BaliTiếng BavariaTiến" + - "g BasaaTiếng BamunTiếng Batak TobaTiếng GhomalaTiếng BejaTiếng BembaTiến" + - "g BetawiTiếng BenaTiếng BafutTiếng BadagaTiếng Tây BalochiTiếng Bhojpuri" + - "Tiếng BikolTiếng BiniTiếng BanjarTiếng KomTiếng SiksikaTiếng Bishnupriya" + - "Tiếng BakhtiariTiếng BrajTiếng BrahuiTiếng BodoTiếng AkooseTiếng BuriatT" + - "iếng BuginTiếng BuluTiếng BlinTiếng MedumbaTiếng CaddoTiếng CaribTiếng C" + - "ayugaTiếng AtsamTiếng CebuanoTiếng ChigaTiếng ChibchaTiếng ChagataiTiếng" + - " ChuukTiếng MariBiệt ngữ ChinookTiếng ChoctawTiếng ChipewyanTiếng Cherok" + - "eeTiếng CheyenneTiếng Kurd Miền TrungTiếng CopticTiếng CapiznonTiếng Thổ" + - " Nhĩ Kỳ CrimeanTiếng KashubiaTiếng DakotaTiếng DargwaTiếng TaitaTiếng De" + - "lawareTiếng SlaveTiếng DogribTiếng DinkaTiếng ZarmaTiếng DogriTiếng Hạ S" + - "orbiaTiếng Dusun Miền TrungTiếng DualaTiếng Hà Lan Trung cổTiếng Jola-Fo" + - "nyiTiếng DyulaTiếng DazagaTiếng EmbuTiếng EfikTiếng EmiliaTiếng Ai Cập c" + - "ổTiếng EkajukTiếng ElamiteTiếng Anh Trung cổTiếng Yupik Miền TrungTiến" + - "g EwondoTiếng ExtremaduraTiếng FangTiếng PhilipinTiếng FonTiếng Pháp Caj" + - "unTiếng Pháp Trung cổTiếng Pháp cổTiếng ArpitanTiếng Frisian Miền BắcTiế" + - "ng Frisian Miền ĐôngTiếng FriulianTiếng GaTiếng GagauzTiếng GayoTiếng Gb" + - "ayaTiếng GeezTiếng GilbertTiếng GilakiTiếng Thượng Giéc-man Trung cổTiến" + - "g Thượng Giéc-man cổTiếng Goan KonkaniTiếng GondiTiếng GorontaloTiếng Gô" + - "-tíchTiếng GreboTiếng Hy Lạp cổTiếng Đức (Thụy Sĩ)Tiếng FrafraTiếng Gusi" + - "iTiếng GwichʼinTiếng HaidaTiếng Trung HakkaTiếng HawaiiTiếng Fiji HindiT" + - "iếng HiligaynonTiếng HittiteTiếng HmôngTiếng Thượng SorbiaTiếng HupaTiến" + - "g IbanTiếng IbibioTiếng IlokoTiếng IngushTiếng IngriaTiếng Anh Jamaica C" + - "reoleTiếng LojbanTiếng NgombaTiếng MachameTiếng Judeo-Ba TưTiếng Judeo-Ả" + - " RậpTiếng JutishTiếng Kara-KalpakTiếng KabyleTiếng KachinTiếng JjuTiếng " + - "KambaTiếng KawiTiếng KabardianTiếng KanembuTiếng TyapTiếng MakondeTiếng " + - "KabuverdianuTiếng KoroTiếng KhasiTiếng KhotanTiếng Koyra ChiiniTiếng Kak" + - "oTiếng KalenjinTiếng KimbunduTiếng Komi-PermyakTiếng KonkaniTiếng Kosrae" + - "Tiếng KpelleTiếng Karachay-BalkarTiếng KarelianTiếng KurukhTiếng Shambal" + - "aTiếng BafiaTiếng CologneTiếng KumykTiếng KutenaiTiếng LadinoTiếng Langi" + - "Tiếng LahndaTiếng LambaTiếng LezghianTiếng LakotaTiếng MongoTiếng LoziTi" + - "ếng Bắc LuriTiếng Luba-LuluaTiếng LuisenoTiếng LundaTiếng LuoTiếng Lus" + - "haiTiếng LuyiaTiếng MaduraTiếng MafaTiếng MagahiTiếng MaithiliTiếng Maka" + - "sarTiếng MandingoTiếng MasaiTiếng MabaTiếng MokshaTiếng MandarTiếng Mend" + - "eTiếng MeruTiếng MorisyenTiếng Ai-len Trung cổTiếng Makhuwa-MeettoTiếng " + - "Meta’Tiếng MicmacTiếng MinangkabauTiếng ManchuTiếng ManipuriTiếng Mohawk" + - "Tiếng MossiTiếng MundangNhiều Ngôn ngữTiếng CreekTiếng MirandaTiếng Marw" + - "ariTiếng MyeneTiếng ErzyaTiếng MazanderaniTiếng NapoliTiếng NamaTiếng Hạ" + - " Giéc-manTiếng NewariTiếng NiasTiếng NiueanTiếng Ao NagaTiếng KwasioTiến" + - "g NgiemboonTiếng NogaiTiếng Na Uy cổTiếng N’KoBắc SothoTiếng NuerTiếng N" + - "ewari Cổ điểnTiếng NyamweziTiếng NyankoleTiếng NyoroTiếng NzimaTiếng Osa" + - "geTiếng Thổ Nhĩ Kỳ OttomanTiếng PangasinanTiếng PahlaviTiếng PampangaTiế" + - "ng PapiamentoTiếng PalauanTiếng Ba Tư cổTiếng PhoeniciaTiếng PohnpeianTi" + - "ếng Provençal cổTiếng KʼicheʼTiếng Quechua ở Cao nguyên ChimborazoTiến" + - "g RajasthaniTiếng RapanuiTiếng RarotonganTiếng RomboTiếng RomanyTiếng Ar" + - "omaniaTiếng RwaTiếng SandaweTiếng SakhaTiếng Samaritan AramaicTiếng Samb" + - "uruTiếng SasakTiếng SantaliTiếng NgambayTiếng SanguTiếng SiciliaTiếng Sc" + - "otsTiếng Kurd Miền NamTiếng SenecaTiếng SenaTiếng SelkupTiếng Koyraboro " + - "SenniTiếng Ai-len cổTiếng TachelhitTiếng ShanTiếng Ả-Rập ChadTiếng Sidam" + - "oTIếng Sami Miền NamTiếng Lule SamiTiếng Inari SamiTiếng Skolt SamiTiếng" + - " SoninkeTiếng SogdienTiếng Sranan TongoTiếng SererTiếng SahoTiếng Sukuma" + - "Tiếng SusuTiếng SumeriaTiếng CômoTiếng Syria Cổ điểnTiếng SyriacTiếng Ti" + - "mneTiếng TesoTiếng TerenoTetumTiếng TigreTiếng TivTiếng TokelauTiếng Kli" + - "ngonTiếng TlingitTiếng TamashekTiếng Nyasa TongaTiếng Tok PisinTiếng Tar" + - "okoTiếng TsimshianTiếng TumbukaTiếng TuvaluTiếng TasawaqTiếng TuvinianTi" + - "ếng Tamazight Miền Trung Ma-rốcTiếng UdmurtTiếng UgariticTiếng Umbundu" + - "Tiếng RootTiếng VaiTiếng VoticTiếng VunjoTiếng WalserTiếng WalamoTiếng W" + - "arayTiếng WashoTiếng WarlpiriTiếng KalmykTiếng SogaTiếng YaoTiếng YapTiế" + - "ng YangbenTiếng YembaTiếng Quảng ĐôngTiếng ZapotecKý hiệu BlissymbolsTiế" + - "ng ZenagaTiếng Tamazight Chuẩn của Ma-rốcTiếng ZuniKhông có nội dung ngô" + - "n ngữTiếng ZazaTiếng Ả Rập Hiện đạiTiếng Thượng Giéc-man (Thụy Sĩ)Tiếng " + - "Anh (Anh)Tiếng Anh (Mỹ)Tiếng Tây Ban Nha (Mỹ La tinh)Tiếng Tây Ban Nha (" + - "Châu Âu)Tiếng Hạ SaxonTiếng FlemishTiếng Bồ Đào Nha (Braxin)Tiếng Bồ Đào" + - " Nha (Châu Âu)Tiếng MoldovaTiếng Xéc bi - CroatiaTiếng Swahili Congo" - -var viLangIdx = []uint16{ // 608 elements + "Tiếng TigrinyaTiếng TurkmenTiếng TswanaTiếng TongaTiếng Thổ Nhĩ KỳTiếng " + + "TsongaTiếng TatarTiếng TahitiTiếng Duy Ngô NhĩTiếng UcrainaTiếng UrduTiế" + + "ng UzbekTiếng VendaTiếng ViệtTiếng VolapükTiếng WalloonTiếng WolofTiếng " + + "XhosaTiếng YiddishTiếng YorubaTiếng ChoangTiếng TrungTiếng ZuluTiếng Ach" + + "ineseTiếng AcoliTiếng AdangmeTiếng AdygheTiếng AfrihiliTiếng AghemTiếng " + + "AinuTiếng AkkadiaTiếng AlabamaTiếng AleutTiếng Gheg AlbaniTiếng Altai Mi" + + "ền NamTiếng Anh cổTiếng AngikaTiếng AramaicTiếng MapucheTiếng AraonaTi" + + "ếng ArapahoTiếng Ả Rập AlgeriaTiếng ArawakTiếng Ả Rập Ai CậpTiếng AsuN" + + "gôn ngữ Ký hiệu MỹTiếng AsturiasTiếng AwadhiTiếng BaluchiTiếng BaliTiếng" + + " BavariaTiếng BasaaTiếng BamunTiếng Batak TobaTiếng GhomalaTiếng BejaTiế" + + "ng BembaTiếng BetawiTiếng BenaTiếng BafutTiếng BadagaTiếng Tây BalochiTi" + + "ếng BhojpuriTiếng BikolTiếng BiniTiếng BanjarTiếng KomTiếng SiksikaTiế" + + "ng BishnupriyaTiếng BakhtiariTiếng BrajTiếng BrahuiTiếng BodoTiếng Akoos" + + "eTiếng BuriatTiếng BuginTiếng BuluTiếng BlinTiếng MedumbaTiếng CaddoTiến" + + "g CaribTiếng CayugaTiếng AtsamTiếng CebuanoTiếng ChigaTiếng ChibchaTiếng" + + " ChagataiTiếng ChuukTiếng MariBiệt ngữ ChinookTiếng ChoctawTiếng Chipewy" + + "anTiếng CherokeeTiếng CheyenneTiếng Kurd Miền TrungTiếng CopticTiếng Cap" + + "iznonTiếng Thổ Nhĩ Kỳ CrimeanTiếng Pháp Seselwa CreoleTiếng KashubiaTiến" + + "g DakotaTiếng DargwaTiếng TaitaTiếng DelawareTiếng SlaveTiếng DogribTiến" + + "g DinkaTiếng ZarmaTiếng DogriTiếng Hạ SorbiaTiếng Dusun Miền TrungTiếng " + + "DualaTiếng Hà Lan Trung cổTiếng Jola-FonyiTiếng DyulaTiếng DazagaTiếng E" + + "mbuTiếng EfikTiếng EmiliaTiếng Ai Cập cổTiếng EkajukTiếng ElamiteTiếng A" + + "nh Trung cổTiếng Yupik Miền TrungTiếng EwondoTiếng ExtremaduraTiếng Fang" + + "Tiếng PhilippinesTiếng FonTiếng Pháp CajunTiếng Pháp Trung cổTiếng Pháp " + + "cổTiếng ArpitanTiếng Frisia Miền BắcTiếng Frisian Miền ĐôngTiếng Friulia" + + "nTiếng GaTiếng GagauzTiếng CámTiếng GayoTiếng GbayaTiếng GeezTiếng Gilbe" + + "rtTiếng GilakiTiếng Thượng Giéc-man Trung cổTiếng Thượng Giéc-man cổTiến" + + "g Goan KonkaniTiếng GondiTiếng GorontaloTiếng Gô-tíchTiếng GreboTiếng Hy" + + " Lạp cổTiếng Đức (Thụy Sĩ)Tiếng FrafraTiếng GusiiTiếng GwichʼinTiếng Hai" + + "daTiếng Khách GiaTiếng HawaiiTiếng Fiji HindiTiếng HiligaynonTiếng Hitti" + + "teTiếng HmôngTiếng Thượng SorbiaTiếng TươngTiếng HupaTiếng IbanTiếng Ibi" + + "bioTiếng IlokoTiếng IngushTiếng IngriaTiếng Anh Jamaica CreoleTiếng Lojb" + + "anTiếng NgombaTiếng MachameTiếng Judeo-Ba TưTiếng Judeo-Ả RậpTiếng Jutis" + + "hTiếng Kara-KalpakTiếng KabyleTiếng KachinTiếng JjuTiếng KambaTiếng Kawi" + + "Tiếng KabardianTiếng KanembuTiếng TyapTiếng MakondeTiếng KabuverdianuTiế" + + "ng KoroTiếng KhasiTiếng KhotanTiếng Koyra ChiiniTiếng KakoTiếng Kalenjin" + + "Tiếng KimbunduTiếng Komi-PermyakTiếng KonkaniTiếng KosraeTiếng KpelleTiế" + + "ng Karachay-BalkarTiếng KarelianTiếng KurukhTiếng ShambalaTiếng BafiaTiế" + + "ng CologneTiếng KumykTiếng KutenaiTiếng LadinoTiếng LangiTiếng LahndaTiế" + + "ng LambaTiếng LezghianTiếng LakotaTiếng MongoTiếng LoziTiếng Bắc LuriTiế" + + "ng Luba-LuluaTiếng LuisenoTiếng LundaTiếng LuoTiếng LushaiTiếng LuyiaTiế" + + "ng MaduraTiếng MafaTiếng MagahiTiếng MaithiliTiếng MakasarTiếng Mandingo" + + "Tiếng MasaiTiếng MabaTiếng MokshaTiếng MandarTiếng MendeTiếng MeruTiếng " + + "MorisyenTiếng Ai-len Trung cổTiếng Makhuwa-MeettoTiếng Meta’Tiếng Micmac" + + "Tiếng MinangkabauTiếng Mãn ChâuTiếng ManipuriTiếng MohawkTiếng MossiTiến" + + "g MundangNhiều Ngôn ngữTiếng CreekTiếng MirandaTiếng MarwariTiếng MyeneT" + + "iếng ErzyaTiếng MazanderaniTiếng Mân NamTiếng NapoliTiếng NamaTiếng Hạ G" + + "iéc-manTiếng NewariTiếng NiasTiếng NiueanTiếng Ao NagaTiếng KwasioTiếng " + + "NgiemboonTiếng NogaiTiếng Na Uy cổTiếng N’KoTiếng Sotho Miền BắcTiếng Nu" + + "erTiếng Newari cổTiếng NyamweziTiếng NyankoleTiếng NyoroTiếng NzimaTiếng" + + " OsageTiếng Thổ Nhĩ Kỳ OttomanTiếng PangasinanTiếng PahlaviTiếng Pampang" + + "aTiếng PapiamentoTiếng PalauanTiếng Nigeria PidginTiếng Ba Tư cổTiếng Ph" + + "oeniciaTiếng PohnpeianTiếng PrussiaTiếng Provençal cổTiếng KʼicheʼTiếng " + + "Quechua ở Cao nguyên ChimborazoTiếng RajasthaniTiếng RapanuiTiếng Raroto" + + "nganTiếng RomboTiếng RomanyTiếng AromaniaTiếng RwaTiếng SandaweTiếng Sak" + + "haTiếng Samaritan AramaicTiếng SamburuTiếng SasakTiếng SantaliTiếng Ngam" + + "bayTiếng SanguTiếng SiciliaTiếng ScotsTiếng Kurd Miền NamTiếng SenecaTiế" + + "ng SenaTiếng SelkupTiếng Koyraboro SenniTiếng Ai-len cổTiếng TachelhitTi" + + "ếng ShanTiếng Ả-Rập ChadTiếng SidamoTiếng Sami Miền NamTiếng Lule Sami" + + "Tiếng Inari SamiTiếng Skolt SamiTiếng SoninkeTiếng SogdienTiếng Sranan T" + + "ongoTiếng SererTiếng SahoTiếng SukumaTiếng SusuTiếng SumeriaTiếng CômoTi" + + "ếng Syriac cổTiếng SyriacTiếng TimneTiếng TesoTiếng TerenoTiếng TetumT" + + "iếng TigreTiếng TivTiếng TokelauTiếng KlingonTiếng TlingitTiếng Tamashek" + + "Tiếng Nyasa TongaTiếng Tok PisinTiếng TarokoTiếng TsimshianTiếng Tumbuka" + + "Tiếng TuvaluTiếng TasawaqTiếng TuvinianTiếng Tamazight Miền Trung Ma-rốc" + + "Tiếng UdmurtTiếng UgariticTiếng UmbunduTiếng RootTiếng VaiTiếng VoticTiế" + + "ng VunjoTiếng WalserTiếng WalamoTiếng WarayTiếng WashoTiếng WarlpiriTiến" + + "g NgôTiếng KalmykTiếng SogaTiếng YaoTiếng YapTiếng YangbenTiếng YembaTiế" + + "ng Quảng ĐôngTiếng ZapotecKý hiệu BlissymbolsTiếng ZenagaTiếng Tamazight" + + " Chuẩn của Ma-rốcTiếng ZuniKhông có nội dung ngôn ngữTiếng ZazaTiếng Ả R" + + "ập Hiện đạiTiếng Thượng Giéc-man (Thụy Sĩ)Tiếng Anh (Anh)Tiếng Anh (Mỹ" + + ")Tiếng Tây Ban Nha (Mỹ La tinh)Tiếng Tây Ban Nha (Châu Âu)Tiếng Hạ Saxon" + + "Tiếng FlemishTiếng Bồ Đào Nha (Châu Âu)Tiếng MoldovaTiếng Serbo-CroatiaT" + + "iếng Swahili Congo" + +var viLangIdx = []uint16{ // 611 elements // Entry 0 - 3F - 0x0000, 0x000c, 0x001c, 0x002b, 0x003a, 0x0046, 0x0055, 0x0063, - 0x0074, 0x0081, 0x008f, 0x009d, 0x00af, 0x00be, 0x00cd, 0x00dd, - 0x00ec, 0x00fb, 0x010a, 0x011d, 0x012b, 0x013a, 0x0149, 0x0158, + 0x0000, 0x000c, 0x001c, 0x002b, 0x003c, 0x0048, 0x0057, 0x0065, + 0x0076, 0x0083, 0x0091, 0x009f, 0x00b1, 0x00c0, 0x00cf, 0x00df, + 0x00ee, 0x00fd, 0x010b, 0x011e, 0x012c, 0x013a, 0x0149, 0x0158, 0x0168, 0x0177, 0x0183, 0x018f, 0x01a8, 0x01b7, 0x01c4, 0x01d7, 0x01e5, 0x01f3, 0x0203, 0x020e, 0x021e, 0x0229, 0x0242, 0x0256, 0x0265, 0x0273, 0x0281, 0x028e, 0x02a0, 0x02ac, 0x02b9, 0x02c6, - 0x02d4, 0x02e2, 0x02fd, 0x030d, 0x031c, 0x032c, 0x0338, 0x0345, - 0x0355, 0x0362, 0x0373, 0x0382, 0x038f, 0x039e, 0x03ad, 0x03bb, + 0x02d4, 0x02e3, 0x02f8, 0x0308, 0x0317, 0x0327, 0x0333, 0x0340, + 0x0350, 0x035d, 0x036e, 0x037d, 0x038a, 0x0399, 0x03a8, 0x03b6, // Entry 40 - 7F - 0x03d9, 0x03ea, 0x03fd, 0x0409, 0x041f, 0x042e, 0x0439, 0x0448, - 0x0452, 0x0463, 0x0471, 0x047d, 0x048b, 0x0498, 0x04a6, 0x04b6, - 0x04c4, 0x04d7, 0x04e6, 0x04f5, 0x0501, 0x050f, 0x051f, 0x052b, - 0x0537, 0x0547, 0x0555, 0x0564, 0x0576, 0x0583, 0x0592, 0x05a1, - 0x05ad, 0x05bc, 0x05d0, 0x05de, 0x05ee, 0x05fe, 0x060b, 0x061c, - 0x062d, 0x063f, 0x064e, 0x065e, 0x066a, 0x0680, 0x068d, 0x06a9, - 0x06b6, 0x06c4, 0x06d3, 0x06ea, 0x0701, 0x071b, 0x0729, 0x0737, - 0x0746, 0x0754, 0x0761, 0x076e, 0x077d, 0x078b, 0x0797, 0x07a5, + 0x03d4, 0x03e5, 0x03f8, 0x0404, 0x041a, 0x0429, 0x0434, 0x0443, + 0x044d, 0x045e, 0x046c, 0x0478, 0x0486, 0x0493, 0x04a1, 0x04b1, + 0x04bf, 0x04d2, 0x04e1, 0x04f0, 0x04fc, 0x050a, 0x0519, 0x0525, + 0x0531, 0x0541, 0x054f, 0x055e, 0x0570, 0x057d, 0x058c, 0x059b, + 0x05a7, 0x05b4, 0x05c8, 0x05d6, 0x05e6, 0x05f6, 0x0603, 0x0614, + 0x0625, 0x0637, 0x0646, 0x0655, 0x0662, 0x0678, 0x0685, 0x06a1, + 0x06ae, 0x06bc, 0x06cb, 0x06e2, 0x06f9, 0x0713, 0x0721, 0x072f, + 0x073e, 0x074c, 0x0759, 0x0765, 0x0774, 0x0782, 0x078e, 0x079c, // Entry 80 - BF - 0x07b3, 0x07c9, 0x07d8, 0x07e7, 0x07f4, 0x0802, 0x080d, 0x0820, - 0x082e, 0x083e, 0x084c, 0x0865, 0x0872, 0x0881, 0x088f, 0x089f, - 0x08ac, 0x08b9, 0x08c7, 0x08d7, 0x08e5, 0x08f2, 0x0901, 0x090e, - 0x0924, 0x0933, 0x0940, 0x094e, 0x095b, 0x0968, 0x0978, 0x0984, - 0x0992, 0x099f, 0x09b6, 0x09c4, 0x09d1, 0x09df, 0x09ed, 0x09fc, - 0x0a08, 0x0a15, 0x0a22, 0x0a30, 0x0a40, 0x0a4f, 0x0a5c, 0x0a69, - 0x0a77, 0x0a85, 0x0a93, 0x0aa0, 0x0aac, 0x0abc, 0x0ac9, 0x0ad8, - 0x0ae6, 0x0ae6, 0x0af6, 0x0b03, 0x0b0f, 0x0b1e, 0x0b2d, 0x0b3a, + 0x07aa, 0x07c0, 0x07cf, 0x07de, 0x07eb, 0x07fa, 0x0805, 0x0818, + 0x0826, 0x0836, 0x0844, 0x085d, 0x086a, 0x0879, 0x0887, 0x0897, + 0x08a4, 0x08b1, 0x08bf, 0x08ce, 0x08dc, 0x08e9, 0x0901, 0x090e, + 0x0924, 0x0933, 0x0940, 0x094e, 0x095b, 0x0968, 0x0978, 0x0987, + 0x0995, 0x09a2, 0x09b9, 0x09c7, 0x09d4, 0x09e2, 0x09f7, 0x0a06, + 0x0a12, 0x0a1f, 0x0a2c, 0x0a3a, 0x0a4a, 0x0a59, 0x0a66, 0x0a73, + 0x0a82, 0x0a90, 0x0a9e, 0x0aab, 0x0ab7, 0x0ac7, 0x0ad4, 0x0ae3, + 0x0af1, 0x0af1, 0x0b01, 0x0b0e, 0x0b1a, 0x0b29, 0x0b38, 0x0b45, // Entry C0 - FF - 0x0b4d, 0x0b65, 0x0b75, 0x0b83, 0x0b92, 0x0ba4, 0x0bb2, 0x0bc1, - 0x0bda, 0x0be8, 0x0be8, 0x0c02, 0x0c0d, 0x0c28, 0x0c38, 0x0c38, - 0x0c46, 0x0c55, 0x0c61, 0x0c70, 0x0c7d, 0x0c8a, 0x0c9c, 0x0cab, - 0x0cb7, 0x0cc4, 0x0cd2, 0x0cde, 0x0ceb, 0x0cf9, 0x0d0d, 0x0d1d, - 0x0d2a, 0x0d36, 0x0d44, 0x0d4f, 0x0d5e, 0x0d71, 0x0d82, 0x0d8e, - 0x0d9c, 0x0da8, 0x0db6, 0x0dc4, 0x0dd1, 0x0ddd, 0x0de9, 0x0df8, - 0x0e05, 0x0e12, 0x0e20, 0x0e2d, 0x0e3c, 0x0e49, 0x0e58, 0x0e68, - 0x0e75, 0x0e81, 0x0e95, 0x0ea4, 0x0eb5, 0x0ec5, 0x0ed5, 0x0eee, + 0x0b58, 0x0b70, 0x0b80, 0x0b8e, 0x0b9d, 0x0bac, 0x0bba, 0x0bc9, + 0x0be2, 0x0be2, 0x0bf0, 0x0bf0, 0x0c0a, 0x0c15, 0x0c30, 0x0c40, + 0x0c40, 0x0c4e, 0x0c5d, 0x0c69, 0x0c78, 0x0c85, 0x0c92, 0x0ca4, + 0x0cb3, 0x0cbf, 0x0ccc, 0x0cda, 0x0ce6, 0x0cf3, 0x0d01, 0x0d15, + 0x0d25, 0x0d32, 0x0d3e, 0x0d4c, 0x0d57, 0x0d66, 0x0d79, 0x0d8a, + 0x0d96, 0x0da4, 0x0db0, 0x0dbe, 0x0dcc, 0x0dd9, 0x0de5, 0x0df1, + 0x0e00, 0x0e0d, 0x0e1a, 0x0e28, 0x0e35, 0x0e44, 0x0e51, 0x0e60, + 0x0e70, 0x0e7d, 0x0e89, 0x0e9d, 0x0eac, 0x0ebd, 0x0ecd, 0x0edd, // Entry 100 - 13F - 0x0efc, 0x0f0c, 0x0f2b, 0x0f3b, 0x0f49, 0x0f57, 0x0f64, 0x0f74, - 0x0f81, 0x0f8f, 0x0f9c, 0x0fa9, 0x0fb6, 0x0fc9, 0x0fe3, 0x0ff0, - 0x100a, 0x101c, 0x1029, 0x1037, 0x1043, 0x104f, 0x105d, 0x1072, - 0x1080, 0x108f, 0x10a5, 0x10bf, 0x10cd, 0x10e0, 0x10ec, 0x10fc, - 0x10fc, 0x1107, 0x111a, 0x1132, 0x1144, 0x1153, 0x116f, 0x118c, - 0x119c, 0x11a6, 0x11b4, 0x11b4, 0x11c0, 0x11cd, 0x11cd, 0x11d9, - 0x11e8, 0x11f6, 0x121c, 0x123c, 0x1250, 0x125d, 0x126e, 0x127f, - 0x128c, 0x12a1, 0x12bc, 0x12bc, 0x12ca, 0x12d7, 0x12e8, 0x12f5, + 0x0ef6, 0x0f04, 0x0f14, 0x0f33, 0x0f4f, 0x0f5f, 0x0f6d, 0x0f7b, + 0x0f88, 0x0f98, 0x0fa5, 0x0fb3, 0x0fc0, 0x0fcd, 0x0fda, 0x0fed, + 0x1007, 0x1014, 0x102e, 0x1040, 0x104d, 0x105b, 0x1067, 0x1073, + 0x1081, 0x1096, 0x10a4, 0x10b3, 0x10c9, 0x10e3, 0x10f1, 0x1104, + 0x1110, 0x1123, 0x1123, 0x112e, 0x1141, 0x1159, 0x116b, 0x117a, + 0x1195, 0x11b2, 0x11c2, 0x11cc, 0x11da, 0x11e6, 0x11f2, 0x11ff, + 0x11ff, 0x120b, 0x121a, 0x1228, 0x124e, 0x126e, 0x1282, 0x128f, + 0x12a0, 0x12b1, 0x12be, 0x12d3, 0x12ee, 0x12ee, 0x12fc, 0x1309, // Entry 140 - 17F - 0x1308, 0x1316, 0x1328, 0x133a, 0x1349, 0x1357, 0x136f, 0x136f, - 0x137b, 0x1387, 0x1395, 0x13a2, 0x13b0, 0x13be, 0x13d8, 0x13e6, - 0x13f4, 0x1403, 0x1417, 0x142e, 0x143c, 0x144f, 0x145d, 0x146b, - 0x1476, 0x1483, 0x148f, 0x14a0, 0x14af, 0x14bb, 0x14ca, 0x14de, - 0x14de, 0x14ea, 0x14ea, 0x14f7, 0x1505, 0x1519, 0x1519, 0x1519, - 0x1525, 0x1535, 0x1545, 0x1559, 0x1568, 0x1576, 0x1584, 0x159b, - 0x159b, 0x159b, 0x15ab, 0x15b9, 0x15c9, 0x15d6, 0x15e5, 0x15f2, - 0x1601, 0x160f, 0x161c, 0x162a, 0x1637, 0x1647, 0x1647, 0x1647, + 0x131a, 0x1327, 0x1339, 0x1347, 0x1359, 0x136b, 0x137a, 0x1388, + 0x13a0, 0x13af, 0x13bb, 0x13c7, 0x13d5, 0x13e2, 0x13f0, 0x13fe, + 0x1418, 0x1426, 0x1434, 0x1443, 0x1457, 0x146e, 0x147c, 0x148f, + 0x149d, 0x14ab, 0x14b6, 0x14c3, 0x14cf, 0x14e0, 0x14ef, 0x14fb, + 0x150a, 0x151e, 0x151e, 0x152a, 0x152a, 0x1537, 0x1545, 0x1559, + 0x1559, 0x1559, 0x1565, 0x1575, 0x1585, 0x1599, 0x15a8, 0x15b6, + 0x15c4, 0x15db, 0x15db, 0x15db, 0x15eb, 0x15f9, 0x1609, 0x1616, + 0x1625, 0x1632, 0x1641, 0x164f, 0x165c, 0x166a, 0x1677, 0x1687, // Entry 180 - 1BF - 0x1647, 0x1655, 0x1655, 0x1662, 0x166e, 0x1680, 0x1680, 0x1692, - 0x16a1, 0x16ae, 0x16b9, 0x16c7, 0x16d4, 0x16d4, 0x16d4, 0x16e2, - 0x16ee, 0x16fc, 0x170c, 0x171b, 0x172b, 0x1738, 0x1744, 0x1752, - 0x1760, 0x176d, 0x1779, 0x1789, 0x17a2, 0x17b8, 0x17c7, 0x17d5, - 0x17e8, 0x17f6, 0x1806, 0x1814, 0x1821, 0x1821, 0x1830, 0x1843, - 0x1850, 0x185f, 0x186e, 0x186e, 0x187b, 0x1888, 0x189b, 0x189b, - 0x18a9, 0x18b5, 0x18cb, 0x18d9, 0x18e5, 0x18f3, 0x1902, 0x1910, - 0x1921, 0x192e, 0x1940, 0x1940, 0x194e, 0x1959, 0x1965, 0x1980, + 0x1687, 0x1687, 0x1687, 0x1695, 0x1695, 0x16a2, 0x16ae, 0x16c0, + 0x16c0, 0x16d2, 0x16e1, 0x16ee, 0x16f9, 0x1707, 0x1714, 0x1714, + 0x1714, 0x1722, 0x172e, 0x173c, 0x174c, 0x175b, 0x176b, 0x1778, + 0x1784, 0x1792, 0x17a0, 0x17ad, 0x17b9, 0x17c9, 0x17e2, 0x17f8, + 0x1807, 0x1815, 0x1828, 0x183a, 0x184a, 0x1858, 0x1865, 0x1865, + 0x1874, 0x1887, 0x1894, 0x18a3, 0x18b2, 0x18b2, 0x18bf, 0x18cc, + 0x18df, 0x18ef, 0x18fd, 0x1909, 0x191f, 0x192d, 0x1939, 0x1947, + 0x1956, 0x1964, 0x1975, 0x1982, 0x1994, 0x1994, 0x19a2, 0x19bc, // Entry 1C0 - 1FF - 0x1990, 0x19a0, 0x19ad, 0x19ba, 0x19c7, 0x19e6, 0x19f8, 0x1a07, - 0x1a17, 0x1a29, 0x1a38, 0x1a38, 0x1a38, 0x1a38, 0x1a4b, 0x1a4b, - 0x1a5c, 0x1a5c, 0x1a5c, 0x1a6d, 0x1a6d, 0x1a84, 0x1a95, 0x1abf, - 0x1ad1, 0x1ae0, 0x1af2, 0x1af2, 0x1af2, 0x1aff, 0x1b0d, 0x1b0d, - 0x1b0d, 0x1b0d, 0x1b1d, 0x1b28, 0x1b37, 0x1b44, 0x1b5d, 0x1b6c, - 0x1b79, 0x1b88, 0x1b88, 0x1b97, 0x1ba4, 0x1bb3, 0x1bc0, 0x1bc0, - 0x1bd7, 0x1be5, 0x1bf1, 0x1bf1, 0x1bff, 0x1c16, 0x1c29, 0x1c29, - 0x1c3a, 0x1c46, 0x1c5c, 0x1c6a, 0x1c6a, 0x1c6a, 0x1c81, 0x1c92, + 0x19c8, 0x19db, 0x19eb, 0x19fb, 0x1a08, 0x1a15, 0x1a22, 0x1a41, + 0x1a53, 0x1a62, 0x1a72, 0x1a84, 0x1a93, 0x1a93, 0x1aa9, 0x1aa9, + 0x1aa9, 0x1abc, 0x1abc, 0x1acd, 0x1acd, 0x1acd, 0x1ade, 0x1aed, + 0x1b04, 0x1b15, 0x1b3f, 0x1b51, 0x1b60, 0x1b72, 0x1b72, 0x1b72, + 0x1b7f, 0x1b8d, 0x1b8d, 0x1b8d, 0x1b8d, 0x1b9d, 0x1ba8, 0x1bb7, + 0x1bc4, 0x1bdd, 0x1bec, 0x1bf9, 0x1c08, 0x1c08, 0x1c17, 0x1c24, + 0x1c33, 0x1c40, 0x1c40, 0x1c57, 0x1c65, 0x1c71, 0x1c71, 0x1c7f, + 0x1c96, 0x1ca9, 0x1ca9, 0x1cba, 0x1cc6, 0x1cdc, 0x1cea, 0x1cea, // Entry 200 - 23F - 0x1ca4, 0x1cb6, 0x1cc5, 0x1cd4, 0x1ce8, 0x1cf5, 0x1d01, 0x1d01, - 0x1d0f, 0x1d1b, 0x1d2a, 0x1d37, 0x1d51, 0x1d5f, 0x1d5f, 0x1d5f, - 0x1d6c, 0x1d78, 0x1d86, 0x1d8b, 0x1d98, 0x1da3, 0x1db2, 0x1db2, - 0x1dc1, 0x1dd0, 0x1dd0, 0x1de0, 0x1df3, 0x1e04, 0x1e04, 0x1e12, - 0x1e12, 0x1e23, 0x1e23, 0x1e32, 0x1e40, 0x1e4f, 0x1e5f, 0x1e86, - 0x1e94, 0x1ea4, 0x1eb3, 0x1ebf, 0x1eca, 0x1eca, 0x1eca, 0x1eca, - 0x1eca, 0x1ed7, 0x1ed7, 0x1ee4, 0x1ef2, 0x1f00, 0x1f0d, 0x1f1a, - 0x1f2a, 0x1f2a, 0x1f38, 0x1f38, 0x1f44, 0x1f4f, 0x1f5a, 0x1f69, + 0x1cea, 0x1d01, 0x1d12, 0x1d24, 0x1d36, 0x1d45, 0x1d54, 0x1d68, + 0x1d75, 0x1d81, 0x1d81, 0x1d8f, 0x1d9b, 0x1daa, 0x1db7, 0x1dca, + 0x1dd8, 0x1dd8, 0x1dd8, 0x1de5, 0x1df1, 0x1dff, 0x1e0c, 0x1e19, + 0x1e24, 0x1e33, 0x1e33, 0x1e42, 0x1e51, 0x1e51, 0x1e61, 0x1e74, + 0x1e85, 0x1e85, 0x1e93, 0x1e93, 0x1ea4, 0x1ea4, 0x1eb3, 0x1ec1, + 0x1ed0, 0x1ee0, 0x1f07, 0x1f15, 0x1f25, 0x1f34, 0x1f40, 0x1f4b, + 0x1f4b, 0x1f4b, 0x1f4b, 0x1f4b, 0x1f58, 0x1f58, 0x1f65, 0x1f73, + 0x1f81, 0x1f8e, 0x1f9b, 0x1fab, 0x1fb7, 0x1fc5, 0x1fc5, 0x1fd1, // Entry 240 - 27F - 0x1f76, 0x1f76, 0x1f8c, 0x1f9b, 0x1fb1, 0x1fb1, 0x1fbf, 0x1fe7, - 0x1ff3, 0x2014, 0x2020, 0x203f, 0x203f, 0x203f, 0x2067, 0x2067, - 0x2067, 0x2078, 0x208a, 0x20ad, 0x20cd, 0x20cd, 0x20cd, 0x20cd, - 0x20cd, 0x20df, 0x20ee, 0x210d, 0x212f, 0x213e, 0x2157, 0x216c, -} // Size: 1240 bytes - -var zhLangStr string = "" + // Size: 6405 bytes - "阿法文阿布哈西亚文阿维斯塔文南非荷兰文阿肯文阿姆哈拉文阿拉贡文阿拉伯文阿萨姆文阿瓦尔文艾马拉文阿塞拜疆文巴什客尔文白俄罗斯文保加利亚文比斯拉马文" + - "班巴拉文孟加拉文藏文布里多尼文波斯尼亚文加泰罗尼亚文车臣文查莫罗文科西嘉文克里族文捷克文宗教斯拉夫文楚瓦什文威尔士文丹麦文德文迪维希文不丹文" + - "埃维文希腊文英文世界文西班牙文爱沙尼亚文巴斯克文波斯文夫拉文芬兰文斐济文法罗文法文西弗里西亚文爱尔兰文苏格兰盖尔文加利西亚文瓜拉尼文古吉拉特" + - "文马恩岛文豪萨文希伯来文印地文希里莫图文克罗地亚文海地文匈牙利文亚美尼亚文赫雷罗文国际文字印度尼西亚文国际文字(E)伊布文四川彝文依奴皮维克" + - "文伊多文冰岛文意大利文因纽特文日文爪哇文格鲁吉亚文刚果文吉库尤文宽亚玛文哈萨克文格陵兰文高棉文卡纳达文韩文卡努里文克什米尔文库尔德文科米文凯" + - "尔特文吉尔吉斯文拉丁文卢森堡文卢干达文淋布尔吉文林加拉文老挝文立陶宛文鲁巴加丹加文拉脱维亚文马尔加什文马绍尔文毛利文马其顿文马拉雅拉姆文蒙古" + - "文马拉地文马来文马耳他文缅甸文瑙鲁文北恩德贝勒文尼泊尔文恩东加文荷兰文挪威尼诺斯克文挪威博克马尔文南恩德贝勒文纳瓦霍文尼扬扎文奥克西唐文奥吉" + - "布瓦文奥洛莫文奥里亚文奥塞梯文旁遮普文巴利文波兰文普什图文葡萄牙文盖丘亚文罗曼什文基隆迪文罗马尼亚文俄文卢旺达文梵文萨丁文信德文北萨米文桑戈" + - "文僧伽罗文斯洛伐克文斯洛文尼亚文萨摩亚文绍纳文索马里文阿尔巴尼亚文塞尔维亚文斯瓦特文南索托文巽他文瑞典文斯瓦希里文泰米尔文泰卢固文塔吉克文泰" + - "文提格里尼亚文土库曼文塞茨瓦纳文汤加文土耳其文宗加文塔塔尔文塔西提文维吾尔文乌克兰文乌尔都文乌兹别克文文达文越南文沃拉普克文瓦隆文沃洛夫文科" + - "萨文依地文约鲁巴文壮文中文祖鲁文亚齐文阿乔利文阿当梅文阿迪何文阿弗里希利文亚罕文阿伊努文阿卡德文阿留申文南阿尔泰文古英文昂加文阿拉米文马普切" + - "文阿拉帕霍文阿拉瓦克文阿苏文阿斯图里亚思特文阿瓦乔文俾路支文巴里文巴萨文巴姆穆文戈马拉文别札文别姆巴文贝纳文巴非特文西俾路支文博杰普尔文毕库" + - "尔文比尼文科姆文司克司卡文布拉杰文博多文阿库色文布里亚特文布吉文布鲁文布林文梅敦巴文卡多文巴勒比文卡尤加文阿灿文宿务文奇加文契布卡文查加文楚" + - "吾克文马里文契努克文乔克托文佩瓦扬文彻罗基文夏延文索拉尼库尔德文科普特文克里米亚土耳其文卡舒文达科他文达尔格瓦文台塔文特拉华文司雷夫文多格里" + - "布文丁卡文哲尔马文多格拉文下索布文都阿拉文中古荷兰文朱拉文迪尤拉文达扎葛文恩布文埃菲克文古埃及文埃克丘克文艾拉米特文中古英文旺杜文芳格文菲律" + - "宾文丰文中古法文古法文北弗里西亚文东弗里西亚文弗留利文加文加告兹文迦约文葛巴亚文吉兹文吉尔伯特斯文中古高地德文古高地德文岗德文科洛涅达罗文哥" + - "特文格列博文古希腊文瑞士德文古西文吉维克琴文海达文夏威夷文希利盖农文赫梯文赫蒙文上索布文胡帕文伊班文伊比比奥文伊洛干诺文印古什文逻辑文恩艮巴" + - "马切姆文犹太波斯文犹太阿拉伯文卡拉卡尔帕克文卡比尔文卡琴文卡捷文卡姆巴文卡威文卡巴尔达文加涅姆布文卡塔布文马孔德文卡布佛得鲁文科罗文卡西文和" + - "田文西桑海文卡库文卡伦金文金邦杜文科米-彼尔米亚克文刚卡尼文科斯拉伊文克佩列文卡拉恰伊巴尔卡尔文卡累利阿文库鲁克文香巴拉文巴菲亚文科隆文库梅" + - "克文库特内文拉迪诺文朗吉文拉亨达文兰巴文莱兹依昂文拉科塔文芒戈文洛兹文北卢尔文鲁巴鲁瓦文路易塞诺文隆达文卢奥文卢晒文卢雅文马都拉文马法文马加" + - "伊文迈蒂利文望加锡文曼丁哥文萨伊文马坝文莫克沙文曼达尔文门迪文梅鲁文毛里求斯克里奥尔文中古爱尔兰文马夸文梅塔米克马克文米南卡保文满文曼尼普里" + - "文摩霍克文莫西文蒙当文多种语系克里克文米兰德斯文马尔瓦利文姆耶内文俄日亚文马赞德兰文拿波里文纳马文低地德文尼瓦尔文尼亚斯文纽埃文夸西奥文恩甘" + - "澎文诺盖文古诺尔斯文西非书面文字北索托文努埃尔文经典尼瓦尔文尼亚姆韦齐文尼昂科勒文尼约罗文恩济马文奥萨格文奥托曼土耳其文邦阿西楠文帕拉维文邦" + - "板牙文帕皮亚门托文帕劳文古老波斯文腓尼基文波纳佩文普罗文斯文基切文拉贾斯坦文拉帕努伊文拉罗汤加文兰博文吉普赛文阿罗马尼亚文罗瓦文散达维文雅库" + - "特文萨玛利亚文桑布鲁文萨萨克文桑塔利文甘拜文桑古文西西里文苏格兰文南库尔德文塞内卡文塞纳文塞尔库普文东桑海文古爱尔兰文希尔哈文掸文乍得阿拉伯" + - "文悉达摩文南萨米文律勒欧萨米文伊纳里萨米文斯科特萨米文索尼基文古粟特文苏里南汤加文谢列尔文萨霍文苏库马文苏苏文苏马文科摩罗文经典叙利亚文叙利" + - "亚文滕内文特索文特列纳文特塔姆文提格雷文蒂夫文托克劳文克林贡文特林吉特文塔马奇克文汤加文(尼亚萨地区)托克皮辛文太鲁阁文蒂姆西亚文通布卡文图" + - "瓦卢文北桑海文图瓦文塔马齐格特文乌德穆尔特文乌加里特文翁本杜文根语言瓦伊文维普森文沃提克文温旧文瓦尔瑟文瓦拉莫文瓦赖文瓦绍文瓦尔皮瑞文卡尔梅" + - "克文索加文瑶族文雅浦文洋卞文耶姆巴文粤语萨波蒂克文布利斯符号泽纳加文标准摩洛哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯文南阿塞拜疆文奥" + - "地利德文瑞士高地德文澳大利亚英文加拿大英文英式英文美式英文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文加拿大法文瑞士法文佛兰芒文巴西葡萄牙文欧" + - "洲葡萄牙文摩尔多瓦文塞尔维亚-克罗地亚文刚果斯瓦希里文简体中文繁体中文" - -var zhLangIdx = []uint16{ // 610 elements + 0x1fdc, 0x1fe7, 0x1ff6, 0x2003, 0x2003, 0x2019, 0x2028, 0x203e, + 0x203e, 0x204c, 0x2074, 0x2080, 0x20a1, 0x20ad, 0x20cc, 0x20cc, + 0x20cc, 0x20f4, 0x20f4, 0x20f4, 0x2105, 0x2117, 0x213a, 0x215a, + 0x215a, 0x215a, 0x215a, 0x215a, 0x216c, 0x217b, 0x217b, 0x219d, + 0x21ac, 0x21c1, 0x21d6, +} // Size: 1246 bytes + +const zhLangStr string = "" + // Size: 6428 bytes + "阿法尔文阿布哈西亚语阿维斯塔文南非荷兰语阿肯文阿姆哈拉文阿拉贡文阿拉伯语阿萨姆文阿瓦尔文艾马拉文阿塞拜疆语巴什基尔文白俄罗斯语保加利亚语比斯拉马" + + "文班巴拉文孟加拉语藏语布列塔尼文波斯尼亚语加泰罗尼亚语车臣文查莫罗文科西嘉文克里族文捷克语教会斯拉夫文楚瓦什文威尔士语丹麦语德文迪维希文宗卡" + + "文埃维文希腊语英语世界语西班牙文爱沙尼亚语巴斯克文波斯文富拉文芬兰语斐济文法罗文法语西弗里西亚文爱尔兰语苏格兰盖尔文加利西亚语瓜拉尼文古吉拉" + + "特语马恩岛文豪萨文希伯来语印地语希里莫图文克罗地亚语海地克里奥尔文匈牙利语亚美尼亚语赫雷罗文国际语印度尼西亚语国际文字(E)伊布文四川彝文伊" + + "努皮克文伊多文冰岛语意大利语因纽特语日语爪哇语格鲁吉亚语刚果语吉库尤文宽亚玛文哈萨克语格陵兰文高棉文卡纳达文韩文卡努里文克什米尔文库尔德文科" + + "米文凯尔特文吉尔吉斯文拉丁语卢森堡语卢干达文林堡文林加拉文老挝语立陶宛语鲁巴加丹加文拉脱维亚语马尔加什文马绍尔文毛利文马其顿文马拉雅拉姆语蒙" + + "古文马拉地文马来语马耳他文缅甸语瑙鲁文北恩德贝勒文尼泊尔语恩东加文荷兰语挪威尼诺斯克文挪威博克马尔语南恩德贝勒文纳瓦霍文尼昂加文奥克西唐文奥" + + "吉布瓦文奥洛莫文奥里亚文奥塞梯文旁遮普文巴利文波兰文普什图文葡萄牙文盖丘亚文罗曼什文隆迪文罗马尼亚文俄文卢旺达语梵文萨丁文信德文北萨米文桑戈" + + "文僧伽罗文斯洛伐克文斯洛文尼亚文萨摩亚文绍纳文索马里文阿尔巴尼亚文塞尔维亚文斯瓦蒂文南索托文巽他文瑞典语斯瓦希里文泰米尔语泰卢固语塔吉克语泰" + + "语提格利尼亚文土库曼文茨瓦纳文汤加文土耳其文聪加文鞑靼文塔西提文维吾尔语乌克兰语乌尔都语乌兹别克语文达文越南语沃拉普克文瓦隆文沃洛夫文科萨文" + + "意第绪文约鲁巴文壮语中文祖鲁语亚齐文阿乔利文阿当梅文阿迪格文阿弗里希利文亚罕文阿伊努文阿卡德文阿留申文南阿尔泰文古英文昂加文阿拉米文马普切文" + + "阿拉帕霍文阿拉瓦克文阿苏文阿斯图里亚斯文阿瓦乔文俾路支文巴里文巴萨文巴姆穆文戈马拉文贝沙文别姆巴文贝纳文巴非特文西俾路支文博杰普尔文比科尔文" + + "比尼文科姆文西克西卡文布拉杰文博多文阿库色文布里亚特文布吉文布鲁文布林文梅敦巴文卡多文加勒比语卡尤加文阿灿文宿务文奇加文奇布查文查加台文丘克" + + "文马里文奇努克混合文乔克托文奇佩维安文彻罗基文夏延文中库尔德文科普特文克里米亚土耳其文塞舌尔克里奥尔文卡舒比文达科他文达尔格瓦文台塔文特拉华" + + "文史拉维文多格里布文丁卡文哲尔马文多格拉文下索布文都阿拉文中古荷兰文朱拉文迪尤拉文达扎葛文恩布文埃菲克文古埃及语艾卡朱克文埃兰文中古英文旺杜" + + "文芳格文菲律宾语丰文中古法文古法文北弗里西亚文东弗里西亚文弗留利文加族文加告兹文赣语迦约文格巴亚文吉兹文吉尔伯特斯文中古高地德文古高地德文冈" + + "德文哥伦打洛文哥特文格列博文古希腊语德语(瑞士)古西文吉维克琴文海达文客家语夏威夷文希利盖农文赫梯文苗族文上索布文湘语胡帕文伊班文伊比比奥文" + + "伊洛干诺文印古什文逻辑文恩艮巴马切姆文犹太波斯语犹太阿拉伯语卡拉卡尔帕克文卡比尔文克钦文卡捷文卡姆巴文卡威文卡巴尔德文加涅姆布文卡塔布文马孔" + + "德文卡布佛得鲁文科罗文卡西文和田文西桑海文卡库文卡伦金文金邦杜文科米-彼尔米亚克文刚卡尼文科斯拉伊文克佩列文卡拉恰伊巴尔卡尔文卡累利阿文库鲁" + + "克文香巴拉文巴菲亚文科隆文库米克文库特奈文拉地诺文朗吉文印度-雅利安文兰巴文列兹金文拉科塔文蒙戈文洛齐文北卢尔文卢巴-卢拉文卢伊塞诺文隆达文" + + "卢奥文米佐文卢雅文马都拉文马法文马加伊文迈蒂利文望加锡文曼丁哥文萨伊文马坝文莫克沙文曼达尔文门德文梅鲁文毛里求斯克里奥尔文中古爱尔兰文马库阿" + + "文梅塔文密克马克文米南卡保文满文曼尼普尔文摩霍克文莫西文蒙当文多种语系克里克文米兰德斯文马尔瓦里文姆耶内文厄尔兹亚文马赞德兰文闽南语那不勒斯" + + "文纳马文低地德文内瓦里文尼亚斯文纽埃文夸西奥文恩甘澎文诺盖文古诺尔斯文西非书面文字北索托文努埃尔文古典尼瓦尔文尼扬韦齐文尼昂科勒文尼奥罗文恩" + + "济马文奥塞治文奥斯曼土耳其文邦阿西南文巴拉维文邦板牙文帕皮阿门托文帕劳文尼日利亚皮钦文古波斯文腓尼基文波纳佩文普鲁士文古普罗文斯文基切文拉贾" + + "斯坦文拉帕努伊文拉罗汤加文兰博文吉普赛文阿罗蒙文罗瓦文桑达韦文萨哈文萨马利亚阿拉姆文桑布鲁文萨萨克文桑塔利文甘拜文桑古文西西里文苏格兰文南库" + + "尔德文塞内卡文塞纳文塞尔库普文东桑海文古爱尔兰文希尔哈文掸文乍得阿拉伯文悉达摩文南萨米文律勒萨米文伊纳里萨米文斯科特萨米文索宁克文粟特文苏里" + + "南汤加文塞雷尔文萨霍文苏库马文苏苏文苏美尔文科摩罗文古典叙利亚文古叙利亚文泰姆奈文特索文特伦诺文德顿文提格雷文蒂夫文托克劳文克林贡文特林吉特" + + "文塔马奇克文尼亚萨汤加文托克皮辛文太鲁阁文钦西安文通布卡文图瓦卢文北桑海文图瓦文塔马齐格特文乌德穆尔特文乌加里特文翁本杜文根语言瓦伊文维普森" + + "文沃提克文温旧文瓦尔瑟文瓦拉莫文瓦瑞文瓦绍文瓦尔皮瑞文吴语卡尔梅克文索加文瑶族语雅浦文洋卞文耶姆巴文粤语萨波蒂克文布里斯符号泽纳加文标准摩洛" + + "哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯语南阿塞拜疆文奥地利德文瑞士高地德文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文低萨克森文佛兰" + + "德文巴西葡萄牙文欧洲葡萄牙文摩尔多瓦文塞尔维亚-克罗地亚文刚果斯瓦希里文简体中文繁体中文" + +var zhLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0009, 0x001b, 0x002a, 0x0039, 0x0042, 0x0051, 0x005d, - 0x0069, 0x0075, 0x0081, 0x008d, 0x009c, 0x00ab, 0x00ba, 0x00c9, - 0x00d8, 0x00e4, 0x00f0, 0x00f6, 0x0105, 0x0114, 0x0126, 0x012f, - 0x013b, 0x0147, 0x0153, 0x015c, 0x016e, 0x017a, 0x0186, 0x018f, - 0x0195, 0x01a1, 0x01aa, 0x01b3, 0x01bc, 0x01c2, 0x01cb, 0x01d7, - 0x01e6, 0x01f2, 0x01fb, 0x0204, 0x020d, 0x0216, 0x021f, 0x0225, - 0x0237, 0x0243, 0x0255, 0x0264, 0x0270, 0x027f, 0x028b, 0x0294, - 0x02a0, 0x02a9, 0x02b8, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7, + 0x0000, 0x000c, 0x001e, 0x002d, 0x003c, 0x0045, 0x0054, 0x0060, + 0x006c, 0x0078, 0x0084, 0x0090, 0x009f, 0x00ae, 0x00bd, 0x00cc, + 0x00db, 0x00e7, 0x00f3, 0x00f9, 0x0108, 0x0117, 0x0129, 0x0132, + 0x013e, 0x014a, 0x0156, 0x015f, 0x0171, 0x017d, 0x0189, 0x0192, + 0x0198, 0x01a4, 0x01ad, 0x01b6, 0x01bf, 0x01c5, 0x01ce, 0x01da, + 0x01e9, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x0222, 0x0228, + 0x023a, 0x0246, 0x0258, 0x0267, 0x0273, 0x0282, 0x028e, 0x0297, + 0x02a3, 0x02ac, 0x02bb, 0x02ca, 0x02df, 0x02eb, 0x02fa, 0x0306, // Entry 40 - 7F - 0x0303, 0x0315, 0x0328, 0x0331, 0x033d, 0x034f, 0x0358, 0x0361, - 0x036d, 0x0379, 0x037f, 0x0388, 0x0397, 0x03a0, 0x03ac, 0x03b8, - 0x03c4, 0x03d0, 0x03d9, 0x03e5, 0x03eb, 0x03f7, 0x0406, 0x0412, - 0x041b, 0x0427, 0x0436, 0x043f, 0x044b, 0x0457, 0x0466, 0x0472, - 0x047b, 0x0487, 0x0499, 0x04a8, 0x04b7, 0x04c3, 0x04cc, 0x04d8, - 0x04ea, 0x04f3, 0x04ff, 0x0508, 0x0514, 0x051d, 0x0526, 0x0538, - 0x0544, 0x0550, 0x0559, 0x056e, 0x0583, 0x0595, 0x05a1, 0x05ad, - 0x05bc, 0x05cb, 0x05d7, 0x05e3, 0x05ef, 0x05fb, 0x0604, 0x060d, + 0x030f, 0x0321, 0x0334, 0x033d, 0x0349, 0x0358, 0x0361, 0x036a, + 0x0376, 0x0382, 0x0388, 0x0391, 0x03a0, 0x03a9, 0x03b5, 0x03c1, + 0x03cd, 0x03d9, 0x03e2, 0x03ee, 0x03f4, 0x0400, 0x040f, 0x041b, + 0x0424, 0x0430, 0x043f, 0x0448, 0x0454, 0x0460, 0x0469, 0x0475, + 0x047e, 0x048a, 0x049c, 0x04ab, 0x04ba, 0x04c6, 0x04cf, 0x04db, + 0x04ed, 0x04f6, 0x0502, 0x050b, 0x0517, 0x0520, 0x0529, 0x053b, + 0x0547, 0x0553, 0x055c, 0x0571, 0x0586, 0x0598, 0x05a4, 0x05b0, + 0x05bf, 0x05ce, 0x05da, 0x05e6, 0x05f2, 0x05fe, 0x0607, 0x0610, // Entry 80 - BF - 0x0619, 0x0625, 0x0631, 0x063d, 0x0649, 0x0658, 0x065e, 0x066a, + 0x061c, 0x0628, 0x0634, 0x0640, 0x0649, 0x0658, 0x065e, 0x066a, 0x0670, 0x0679, 0x0682, 0x068e, 0x0697, 0x06a3, 0x06b2, 0x06c4, 0x06d0, 0x06d9, 0x06e5, 0x06f7, 0x0706, 0x0712, 0x071e, 0x0727, 0x0730, 0x073f, 0x074b, 0x0757, 0x0763, 0x0769, 0x077b, 0x0787, - 0x0796, 0x079f, 0x07ab, 0x07b4, 0x07c0, 0x07cc, 0x07d8, 0x07e4, - 0x07f0, 0x07ff, 0x0808, 0x0811, 0x0820, 0x0829, 0x0835, 0x083e, - 0x0847, 0x0853, 0x0859, 0x085f, 0x0868, 0x0871, 0x087d, 0x0889, - 0x0895, 0x0895, 0x08a7, 0x08b0, 0x08bc, 0x08c8, 0x08c8, 0x08d4, + 0x0793, 0x079c, 0x07a8, 0x07b1, 0x07ba, 0x07c6, 0x07d2, 0x07de, + 0x07ea, 0x07f9, 0x0802, 0x080b, 0x081a, 0x0823, 0x082f, 0x0838, + 0x0844, 0x0850, 0x0856, 0x085c, 0x0865, 0x086e, 0x087a, 0x0886, + 0x0892, 0x0892, 0x08a4, 0x08ad, 0x08b9, 0x08c5, 0x08c5, 0x08d1, // Entry C0 - FF - 0x08d4, 0x08e3, 0x08ec, 0x08f5, 0x0901, 0x090d, 0x090d, 0x091c, - 0x091c, 0x092b, 0x092b, 0x092b, 0x0934, 0x0934, 0x094c, 0x094c, - 0x0958, 0x0964, 0x096d, 0x096d, 0x0976, 0x0982, 0x0982, 0x098e, - 0x0997, 0x09a3, 0x09a3, 0x09ac, 0x09b8, 0x09b8, 0x09c7, 0x09d6, - 0x09e2, 0x09eb, 0x09eb, 0x09f4, 0x0a03, 0x0a03, 0x0a03, 0x0a0f, - 0x0a0f, 0x0a18, 0x0a24, 0x0a33, 0x0a3c, 0x0a45, 0x0a4e, 0x0a5a, - 0x0a63, 0x0a6f, 0x0a7b, 0x0a84, 0x0a8d, 0x0a96, 0x0aa2, 0x0aab, - 0x0ab7, 0x0ac0, 0x0acc, 0x0ad8, 0x0ae4, 0x0af0, 0x0af9, 0x0b0e, + 0x08d1, 0x08e0, 0x08e9, 0x08f2, 0x08fe, 0x090a, 0x090a, 0x0919, + 0x0919, 0x0919, 0x0928, 0x0928, 0x0928, 0x0931, 0x0931, 0x0946, + 0x0946, 0x0952, 0x095e, 0x0967, 0x0967, 0x0970, 0x097c, 0x097c, + 0x0988, 0x0991, 0x099d, 0x099d, 0x09a6, 0x09b2, 0x09b2, 0x09c1, + 0x09d0, 0x09dc, 0x09e5, 0x09e5, 0x09ee, 0x09fd, 0x09fd, 0x09fd, + 0x0a09, 0x0a09, 0x0a12, 0x0a1e, 0x0a2d, 0x0a36, 0x0a3f, 0x0a48, + 0x0a54, 0x0a5d, 0x0a69, 0x0a75, 0x0a7e, 0x0a87, 0x0a90, 0x0a9c, + 0x0aa8, 0x0ab1, 0x0aba, 0x0acc, 0x0ad8, 0x0ae7, 0x0af3, 0x0afc, // Entry 100 - 13F - 0x0b1a, 0x0b1a, 0x0b32, 0x0b3b, 0x0b47, 0x0b56, 0x0b5f, 0x0b6b, - 0x0b77, 0x0b86, 0x0b8f, 0x0b9b, 0x0ba7, 0x0bb3, 0x0bb3, 0x0bbf, - 0x0bce, 0x0bd7, 0x0be3, 0x0bef, 0x0bf8, 0x0c04, 0x0c04, 0x0c10, - 0x0c1f, 0x0c2e, 0x0c3a, 0x0c3a, 0x0c43, 0x0c43, 0x0c4c, 0x0c58, - 0x0c58, 0x0c5e, 0x0c5e, 0x0c6a, 0x0c73, 0x0c73, 0x0c85, 0x0c97, - 0x0ca3, 0x0ca9, 0x0cb5, 0x0cb5, 0x0cbe, 0x0cca, 0x0cca, 0x0cd3, - 0x0ce5, 0x0ce5, 0x0cf7, 0x0d06, 0x0d06, 0x0d0f, 0x0d21, 0x0d2a, - 0x0d36, 0x0d42, 0x0d4e, 0x0d4e, 0x0d4e, 0x0d57, 0x0d66, 0x0d6f, + 0x0b0b, 0x0b17, 0x0b17, 0x0b2f, 0x0b47, 0x0b53, 0x0b5f, 0x0b6e, + 0x0b77, 0x0b83, 0x0b8f, 0x0b9e, 0x0ba7, 0x0bb3, 0x0bbf, 0x0bcb, + 0x0bcb, 0x0bd7, 0x0be6, 0x0bef, 0x0bfb, 0x0c07, 0x0c10, 0x0c1c, + 0x0c1c, 0x0c28, 0x0c37, 0x0c40, 0x0c4c, 0x0c4c, 0x0c55, 0x0c55, + 0x0c5e, 0x0c6a, 0x0c6a, 0x0c70, 0x0c70, 0x0c7c, 0x0c85, 0x0c85, + 0x0c97, 0x0ca9, 0x0cb5, 0x0cbe, 0x0cca, 0x0cd0, 0x0cd9, 0x0ce5, + 0x0ce5, 0x0cee, 0x0d00, 0x0d00, 0x0d12, 0x0d21, 0x0d21, 0x0d2a, + 0x0d39, 0x0d42, 0x0d4e, 0x0d5a, 0x0d6c, 0x0d6c, 0x0d6c, 0x0d75, // Entry 140 - 17F - 0x0d6f, 0x0d7b, 0x0d7b, 0x0d8a, 0x0d93, 0x0d9c, 0x0da8, 0x0da8, - 0x0db1, 0x0dba, 0x0dc9, 0x0dd8, 0x0de4, 0x0de4, 0x0de4, 0x0ded, - 0x0df6, 0x0e02, 0x0e11, 0x0e23, 0x0e23, 0x0e38, 0x0e44, 0x0e4d, - 0x0e56, 0x0e62, 0x0e6b, 0x0e7a, 0x0e89, 0x0e95, 0x0ea1, 0x0eb3, - 0x0eb3, 0x0ebc, 0x0ebc, 0x0ec5, 0x0ece, 0x0eda, 0x0eda, 0x0eda, - 0x0ee3, 0x0eef, 0x0efb, 0x0f14, 0x0f20, 0x0f2f, 0x0f3b, 0x0f56, - 0x0f56, 0x0f56, 0x0f65, 0x0f71, 0x0f7d, 0x0f89, 0x0f92, 0x0f9e, - 0x0faa, 0x0fb6, 0x0fbf, 0x0fcb, 0x0fd4, 0x0fe3, 0x0fe3, 0x0fe3, + 0x0d84, 0x0d8d, 0x0d96, 0x0da2, 0x0da2, 0x0db1, 0x0dba, 0x0dc3, + 0x0dcf, 0x0dd5, 0x0dde, 0x0de7, 0x0df6, 0x0e05, 0x0e11, 0x0e11, + 0x0e11, 0x0e1a, 0x0e23, 0x0e2f, 0x0e3e, 0x0e50, 0x0e50, 0x0e65, + 0x0e71, 0x0e7a, 0x0e83, 0x0e8f, 0x0e98, 0x0ea7, 0x0eb6, 0x0ec2, + 0x0ece, 0x0ee0, 0x0ee0, 0x0ee9, 0x0ee9, 0x0ef2, 0x0efb, 0x0f07, + 0x0f07, 0x0f07, 0x0f10, 0x0f1c, 0x0f28, 0x0f41, 0x0f4d, 0x0f5c, + 0x0f68, 0x0f83, 0x0f83, 0x0f83, 0x0f92, 0x0f9e, 0x0faa, 0x0fb6, + 0x0fbf, 0x0fcb, 0x0fd7, 0x0fe3, 0x0fec, 0x0fff, 0x1008, 0x1014, // Entry 180 - 1BF - 0x0fe3, 0x0fef, 0x0fef, 0x0ff8, 0x1001, 0x100d, 0x100d, 0x101c, - 0x102b, 0x1034, 0x103d, 0x1046, 0x104f, 0x104f, 0x104f, 0x105b, - 0x1064, 0x1070, 0x107c, 0x1088, 0x1094, 0x109d, 0x10a6, 0x10b2, - 0x10be, 0x10c7, 0x10d0, 0x10eb, 0x10fd, 0x1106, 0x110c, 0x111b, - 0x112a, 0x1130, 0x113f, 0x114b, 0x1154, 0x1154, 0x115d, 0x1169, - 0x1175, 0x1184, 0x1193, 0x1193, 0x119f, 0x11ab, 0x11ba, 0x11ba, - 0x11c6, 0x11cf, 0x11db, 0x11e7, 0x11f3, 0x11fc, 0x11fc, 0x1208, - 0x1214, 0x121d, 0x122c, 0x122c, 0x123e, 0x124a, 0x1256, 0x1268, + 0x1014, 0x1014, 0x1014, 0x1020, 0x1020, 0x1029, 0x1032, 0x103e, + 0x103e, 0x104e, 0x105d, 0x1066, 0x106f, 0x1078, 0x1081, 0x1081, + 0x1081, 0x108d, 0x1096, 0x10a2, 0x10ae, 0x10ba, 0x10c6, 0x10cf, + 0x10d8, 0x10e4, 0x10f0, 0x10f9, 0x1102, 0x111d, 0x112f, 0x113b, + 0x1144, 0x1153, 0x1162, 0x1168, 0x1177, 0x1183, 0x118c, 0x118c, + 0x1195, 0x11a1, 0x11ad, 0x11bc, 0x11cb, 0x11cb, 0x11d7, 0x11e6, + 0x11f5, 0x11fe, 0x120d, 0x1216, 0x1222, 0x122e, 0x123a, 0x1243, + 0x1243, 0x124f, 0x125b, 0x1264, 0x1273, 0x1273, 0x1285, 0x1291, // Entry 1C0 - 1FF - 0x127a, 0x1289, 0x1295, 0x12a1, 0x12ad, 0x12c2, 0x12d1, 0x12dd, - 0x12e9, 0x12fb, 0x1304, 0x1304, 0x1304, 0x1304, 0x1313, 0x1313, - 0x131f, 0x131f, 0x131f, 0x132b, 0x132b, 0x133a, 0x1343, 0x1343, - 0x1352, 0x1361, 0x1370, 0x1370, 0x1370, 0x1379, 0x1385, 0x1385, - 0x1385, 0x1385, 0x1397, 0x13a0, 0x13ac, 0x13b8, 0x13c7, 0x13d3, - 0x13df, 0x13eb, 0x13eb, 0x13f4, 0x13fd, 0x1409, 0x1415, 0x1415, - 0x1424, 0x1430, 0x1439, 0x1439, 0x1448, 0x1454, 0x1463, 0x1463, - 0x146f, 0x1475, 0x1487, 0x1493, 0x1493, 0x1493, 0x149f, 0x14b1, + 0x129d, 0x12af, 0x12be, 0x12cd, 0x12d9, 0x12e5, 0x12f1, 0x1306, + 0x1315, 0x1321, 0x132d, 0x133f, 0x1348, 0x1348, 0x135d, 0x135d, + 0x135d, 0x1369, 0x1369, 0x1375, 0x1375, 0x1375, 0x1381, 0x138d, + 0x139f, 0x13a8, 0x13a8, 0x13b7, 0x13c6, 0x13d5, 0x13d5, 0x13d5, + 0x13de, 0x13ea, 0x13ea, 0x13ea, 0x13ea, 0x13f6, 0x13ff, 0x140b, + 0x1414, 0x142c, 0x1438, 0x1444, 0x1450, 0x1450, 0x1459, 0x1462, + 0x146e, 0x147a, 0x147a, 0x1489, 0x1495, 0x149e, 0x149e, 0x14ad, + 0x14b9, 0x14c8, 0x14c8, 0x14d4, 0x14da, 0x14ec, 0x14f8, 0x14f8, // Entry 200 - 23F - 0x14c3, 0x14d5, 0x14e1, 0x14ed, 0x14ff, 0x150b, 0x1514, 0x1514, - 0x1520, 0x1529, 0x1532, 0x153e, 0x1550, 0x155c, 0x155c, 0x155c, - 0x1565, 0x156e, 0x157a, 0x1586, 0x1592, 0x159b, 0x15a7, 0x15a7, - 0x15b3, 0x15c2, 0x15c2, 0x15d1, 0x15ef, 0x15fe, 0x15fe, 0x160a, - 0x160a, 0x1619, 0x1619, 0x1625, 0x1631, 0x163d, 0x1646, 0x1658, - 0x166a, 0x1679, 0x1685, 0x168e, 0x1697, 0x1697, 0x16a3, 0x16a3, - 0x16a3, 0x16af, 0x16af, 0x16b8, 0x16c4, 0x16d0, 0x16d9, 0x16e2, - 0x16f1, 0x16f1, 0x1700, 0x1700, 0x1709, 0x1712, 0x171b, 0x1724, + 0x14f8, 0x1504, 0x1513, 0x1525, 0x1537, 0x1543, 0x154c, 0x155e, + 0x156a, 0x1573, 0x1573, 0x157f, 0x1588, 0x1594, 0x15a0, 0x15b2, + 0x15c1, 0x15c1, 0x15c1, 0x15cd, 0x15d6, 0x15e2, 0x15eb, 0x15f7, + 0x1600, 0x160c, 0x160c, 0x1618, 0x1627, 0x1627, 0x1636, 0x1648, + 0x1657, 0x1657, 0x1663, 0x1663, 0x166f, 0x166f, 0x167b, 0x1687, + 0x1693, 0x169c, 0x16ae, 0x16c0, 0x16cf, 0x16db, 0x16e4, 0x16ed, + 0x16ed, 0x16f9, 0x16f9, 0x16f9, 0x1705, 0x1705, 0x170e, 0x171a, + 0x1726, 0x172f, 0x1738, 0x1747, 0x174d, 0x175c, 0x175c, 0x1765, // Entry 240 - 27F - 0x1730, 0x1730, 0x1736, 0x1745, 0x1754, 0x1754, 0x1760, 0x177e, - 0x1787, 0x1796, 0x179f, 0x17b7, 0x17c9, 0x17d8, 0x17ea, 0x17fc, - 0x180b, 0x1817, 0x1823, 0x183b, 0x184d, 0x1862, 0x1862, 0x1871, - 0x187d, 0x187d, 0x1889, 0x189b, 0x18ad, 0x18bc, 0x18d8, 0x18ed, - 0x18f9, 0x1905, -} // Size: 1244 bytes - -var zhHantLangStr string = "" + // Size: 7564 bytes - "阿法文阿布哈茲文阿緯斯陀文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什客爾文白俄羅斯文保加利亞文比斯拉馬文班" + - "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰羅尼亞文車臣文查莫洛文科西嘉文克裡文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗卡文埃維" + - "文希臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉尼文古吉拉特文曼" + - "島文豪撒文希伯來文北印度文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川彝文依奴皮維克文伊多文冰" + - "島文義大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努裡文喀什米爾文庫爾德文科米文康瓦耳文吉爾吉" + - "斯文拉丁文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾" + - "他文緬甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐利亞文奧塞" + - "提文旁遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文梵文撒丁文信德文北方薩米文桑戈文僧伽羅文斯洛伐克文斯洛維" + - "尼亞文薩摩亞文紹納文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文札那" + - "文東加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文中文祖魯" + - "文亞齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂加文阿拉" + - "米文馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支文峇里文" + - "巴伐利亞文巴薩文巴姆穆文巴塔克托巴文戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆文錫克錫" + - "卡文比什奴普萊利亞文巴赫蒂亞里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧文奇加文" + - "奇布查文查加文處奇斯文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文索拉尼庫爾德文科普特文卡皮茲文克里米亞半島的土耳其文;克里米亞半島的塔" + - "塔爾文卡舒布文達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文迪尤拉文達薩文" + - "恩布文埃菲克文埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐文卡真法文中古法文古法" + - "文法蘭克-普羅旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉爾伯特群島文吉拉基文中古高地德" + - "文古高地日耳曼文孔卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文海達文客家話夏威夷文斐濟印地文希利蓋農" + - "文赫梯文孟文上索布文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格裏亞文牙買加克裏奧爾英文邏輯文恩格姆巴文馬恰美文猶太教-波斯文猶太阿拉伯文" + - "日德蘭文卡拉卡爾帕克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文西桑海文" + - "科瓦文北紮紮其文卡庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利阿文庫魯" + - "科文尚巴拉文巴菲亞文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛齊文北盧" + - "爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文盧晒文盧雅文文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文莫克沙文" + - "曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸文美塔文米克馬克文米南卡堡文滿族文曼尼普裡文莫霍克文莫西文馬里蒙當文多種語言克里克文米" + - "蘭德斯文馬爾尼裡文明打威文姆耶內文厄爾茲亞文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎文諾蓋文古諾" + - "爾斯文諾維亞文曼德文字 (N’Ko)北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文巴列維文潘帕" + - "嘉文帕皮阿門托文帛琉文庇卡底文賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺斯文基切文欽" + - "博拉索海蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅瓦文桑達韋文" + - "雅庫特文薩瑪利亞阿拉姆文薩布魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫爾德文塞訥卡文賽納文瑟里文瑟爾" + - "卡普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯科特薩米文索尼基" + - "文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆文特索文泰雷諾文泰頓文蒂" + - "格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克尼恩文欽西安文穆斯林塔特文圖姆" + - "布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-法蘭克尼亞文沃提克文佛羅文溫舊" + - "文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤納加文標" + - "準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(剛果)" + - "簡體中文繁體中文" - -var zhHantLangIdx = []uint16{ // 610 elements + 0x176e, 0x1777, 0x1780, 0x178c, 0x178c, 0x1792, 0x17a1, 0x17b0, + 0x17b0, 0x17bc, 0x17da, 0x17e3, 0x17f2, 0x17fb, 0x1813, 0x1825, + 0x1834, 0x1846, 0x1846, 0x1846, 0x1846, 0x1846, 0x185e, 0x1870, + 0x1885, 0x1885, 0x1885, 0x1885, 0x1894, 0x18a0, 0x18b2, 0x18c4, + 0x18d3, 0x18ef, 0x1904, 0x1910, 0x191c, +} // Size: 1250 bytes + +const zhHantLangStr string = "" + // Size: 7573 bytes + "阿法文阿布哈茲文阿維斯塔文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什喀爾文白俄羅斯文保加利亞文比斯拉馬文班" + + "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰蘭文車臣文查莫洛文科西嘉文克里文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗卡文埃維文希" + + "臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉尼文古吉拉特文曼島文" + + "豪撒文希伯來文印地文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川彝文依奴皮維克文伊多文冰島文義" + + "大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努里文喀什米爾文庫德文科米文康瓦耳文吉爾吉斯文拉丁" + + "文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾他文緬甸" + + "文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐迪亞文奧塞提文旁遮" + + "普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文梵文撒丁文信德文北薩米文桑戈文僧伽羅文斯洛伐克文斯洛維尼亞文薩摩" + + "亞文紹納文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文突尼西亞文東加" + + "文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文中文祖魯文亞齊" + + "文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂加文阿拉米文馬" + + "普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支文峇里文巴伐利" + + "亞文巴薩文巴姆穆文巴塔克托巴文戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆文錫克錫卡文比" + + "什奴普萊利亞文巴赫蒂亞里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧文奇加文奇布查" + + "文查加文處奇斯文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文中庫德文科普特文卡皮茲文土耳其文(克里米亞半島)塞席爾克里奧爾法文卡舒布文達" + + "科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文迪尤拉文達薩文恩布文埃菲克文埃" + + "米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐文卡真法文中古法文古法文法蘭克-普羅旺" + + "斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉爾伯特群島文吉拉基文中古高地德文古高地德文孔卡" + + "尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文海達文客家話夏威夷文斐濟印地文希利蓋農文赫梯文孟文上索布文" + + "湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格里亞文牙買加克里奧爾英文邏輯文恩格姆巴文馬恰美文猶太教-波斯文猶太阿拉伯文日德蘭文卡拉卡爾帕克" + + "文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文西桑海文科瓦文北紮紮其文卡庫" + + "文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利阿文庫魯科文尚巴拉文巴菲亞文" + + "科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛齊文北盧爾文拉特加萊文魯巴魯" + + "魯亞文路易塞諾文盧恩達文盧奧文米佐文盧雅文文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文莫克沙文曼達文門德文梅魯文克" + + "里奧文(模里西斯)中古愛爾蘭文馬夸文美塔文米克馬克文米南卡堡文滿族文曼尼普爾文莫霍克文莫西文西馬里文蒙當文多種語言克里克文米蘭德斯文馬瓦里文" + + "明打威文姆耶內文厄爾茲亞文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎文諾蓋文古諾爾斯文諾維亞文曼德" + + "文字 (N’Ko)北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文巴列維文潘帕嘉文帕皮阿門托文帛" + + "琉文庇卡底文奈及利亞皮欽文賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺斯文基切文欽博拉" + + "索海蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅瓦文桑達韋文雅庫" + + "特文薩瑪利亞阿拉姆文薩布魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫德文塞訥卡文賽納文瑟里文塞爾庫普文" + + "東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納里薩米文斯科特薩米文索尼基文索格" + + "底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆文特索文泰雷諾文泰頓文蒂格雷文" + + "提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克尼恩文欽西安文穆斯林塔特文圖姆布卡文" + + "吐瓦魯文北桑海文圖瓦文中阿特拉斯塔馬塞特文烏德穆爾特文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-法蘭克尼亞文沃提克文佛羅文" + + "溫舊文瓦爾瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤納" + + "加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(" + + "剛果)簡體中文繁體中文" + +var zhHantLangIdx = []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6, - 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c, - 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189, - 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1, - 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f, - 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b, - 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7, + 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x011d, 0x0126, + 0x0132, 0x013e, 0x0147, 0x0150, 0x0162, 0x016e, 0x017a, 0x0183, + 0x0189, 0x0195, 0x019e, 0x01a7, 0x01b0, 0x01b6, 0x01bf, 0x01cb, + 0x01da, 0x01e6, 0x01ef, 0x01f8, 0x0201, 0x020a, 0x0213, 0x0219, + 0x022b, 0x0237, 0x0249, 0x0258, 0x0264, 0x0273, 0x027c, 0x0285, + 0x0291, 0x029a, 0x02ac, 0x02be, 0x02c7, 0x02d3, 0x02e2, 0x02ee, // Entry 40 - 7F - 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352, - 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6, - 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400, - 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457, - 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba, - 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517, - 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586, - 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6, + 0x02f7, 0x0300, 0x0310, 0x0319, 0x0325, 0x0337, 0x0340, 0x0349, + 0x0355, 0x0361, 0x0367, 0x0370, 0x037c, 0x0385, 0x0391, 0x039d, + 0x03a9, 0x03b5, 0x03be, 0x03ca, 0x03d0, 0x03dc, 0x03eb, 0x03f4, + 0x03fd, 0x0409, 0x0418, 0x0421, 0x042d, 0x0436, 0x043f, 0x044b, + 0x0451, 0x045d, 0x046f, 0x047e, 0x048d, 0x0499, 0x04a2, 0x04ae, + 0x04c0, 0x04c9, 0x04d5, 0x04de, 0x04ea, 0x04f3, 0x04fc, 0x050b, + 0x0517, 0x0523, 0x052c, 0x0541, 0x0553, 0x0562, 0x056e, 0x057a, + 0x0589, 0x0598, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d1, 0x05da, // Entry 80 - BF - 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640, - 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d, - 0x06a9, 0x06b2, 0x06be, 0x06d0, 0x06df, 0x06eb, 0x06f7, 0x0700, - 0x0709, 0x0718, 0x0724, 0x0730, 0x073c, 0x0742, 0x0754, 0x0760, - 0x0769, 0x0772, 0x077e, 0x078a, 0x0793, 0x079f, 0x07ab, 0x07b7, - 0x07c0, 0x07cf, 0x07d8, 0x07e1, 0x07f0, 0x07f9, 0x0805, 0x080e, - 0x081a, 0x0826, 0x082c, 0x0832, 0x083b, 0x0844, 0x0850, 0x085c, - 0x0868, 0x087d, 0x088f, 0x0898, 0x08a4, 0x08b0, 0x08bf, 0x08cb, + 0x05e6, 0x05f2, 0x05fe, 0x060a, 0x0613, 0x0622, 0x0628, 0x0634, + 0x063a, 0x0643, 0x064c, 0x0658, 0x0661, 0x066d, 0x067c, 0x068e, + 0x069a, 0x06a3, 0x06af, 0x06c1, 0x06d0, 0x06dc, 0x06e8, 0x06f1, + 0x06fa, 0x0709, 0x0715, 0x0721, 0x072d, 0x0733, 0x0745, 0x0751, + 0x0760, 0x0769, 0x0775, 0x0781, 0x078a, 0x0796, 0x07a2, 0x07ae, + 0x07b7, 0x07c6, 0x07cf, 0x07d8, 0x07e7, 0x07f0, 0x07fc, 0x0805, + 0x0811, 0x081d, 0x0823, 0x0829, 0x0832, 0x083b, 0x0847, 0x0853, + 0x085f, 0x0874, 0x0886, 0x088f, 0x089b, 0x08a7, 0x08b6, 0x08c2, // Entry C0 - FF - 0x08e3, 0x08f2, 0x08fb, 0x0904, 0x0910, 0x091c, 0x092b, 0x093a, - 0x0955, 0x0964, 0x0979, 0x098b, 0x0994, 0x09a0, 0x09b2, 0x09be, - 0x09c7, 0x09d3, 0x09dc, 0x09eb, 0x09f4, 0x0a00, 0x0a12, 0x0a1e, - 0x0a27, 0x0a33, 0x0a3f, 0x0a48, 0x0a51, 0x0a5d, 0x0a6c, 0x0a7b, - 0x0a87, 0x0a90, 0x0a9c, 0x0aa5, 0x0ab4, 0x0acc, 0x0ade, 0x0aea, - 0x0af6, 0x0aff, 0x0b0b, 0x0b1a, 0x0b26, 0x0b2f, 0x0b38, 0x0b44, - 0x0b4d, 0x0b59, 0x0b65, 0x0b6e, 0x0b77, 0x0b80, 0x0b8c, 0x0b95, - 0x0ba1, 0x0baa, 0x0bb6, 0x0bc2, 0x0bd1, 0x0bdd, 0x0be9, 0x0bfe, + 0x08da, 0x08e9, 0x08f2, 0x08fb, 0x0907, 0x0913, 0x0922, 0x0931, + 0x094c, 0x094c, 0x095b, 0x0970, 0x0982, 0x098b, 0x0997, 0x09a9, + 0x09b5, 0x09be, 0x09ca, 0x09d3, 0x09e2, 0x09eb, 0x09f7, 0x0a09, + 0x0a15, 0x0a1e, 0x0a2a, 0x0a36, 0x0a3f, 0x0a48, 0x0a54, 0x0a63, + 0x0a72, 0x0a7e, 0x0a87, 0x0a93, 0x0a9c, 0x0aab, 0x0ac3, 0x0ad5, + 0x0ae1, 0x0aed, 0x0af6, 0x0b02, 0x0b11, 0x0b1d, 0x0b26, 0x0b2f, + 0x0b3b, 0x0b44, 0x0b50, 0x0b5c, 0x0b65, 0x0b6e, 0x0b77, 0x0b83, + 0x0b8c, 0x0b98, 0x0ba1, 0x0bad, 0x0bb9, 0x0bc8, 0x0bd4, 0x0be0, // Entry 100 - 13F - 0x0c0a, 0x0c16, 0x0c5b, 0x0c67, 0x0c73, 0x0c82, 0x0c8b, 0x0c97, - 0x0ca0, 0x0caf, 0x0cb8, 0x0cc4, 0x0cd0, 0x0cdc, 0x0ceb, 0x0cf7, - 0x0d06, 0x0d0f, 0x0d1b, 0x0d24, 0x0d2d, 0x0d39, 0x0d48, 0x0d54, - 0x0d63, 0x0d6c, 0x0d78, 0x0d87, 0x0d93, 0x0dab, 0x0db4, 0x0dc0, - 0x0dd2, 0x0dd8, 0x0de4, 0x0df0, 0x0df9, 0x0e12, 0x0e24, 0x0e36, - 0x0e42, 0x0e4b, 0x0e57, 0x0e5d, 0x0e66, 0x0e72, 0x0e8d, 0x0e96, - 0x0eab, 0x0eb7, 0x0ec9, 0x0ede, 0x0eea, 0x0ef3, 0x0f02, 0x0f0b, - 0x0f17, 0x0f23, 0x0f35, 0x0f3e, 0x0f4d, 0x0f56, 0x0f5f, 0x0f68, + 0x0bec, 0x0bf8, 0x0c04, 0x0c28, 0x0c43, 0x0c4f, 0x0c5b, 0x0c6a, + 0x0c73, 0x0c7f, 0x0c88, 0x0c97, 0x0ca0, 0x0cac, 0x0cb8, 0x0cc4, + 0x0cd3, 0x0cdf, 0x0cee, 0x0cf7, 0x0d03, 0x0d0c, 0x0d15, 0x0d21, + 0x0d30, 0x0d3c, 0x0d4b, 0x0d54, 0x0d60, 0x0d6f, 0x0d7b, 0x0d93, + 0x0d9c, 0x0da8, 0x0dba, 0x0dc0, 0x0dcc, 0x0dd8, 0x0de1, 0x0dfa, + 0x0e0c, 0x0e1e, 0x0e2a, 0x0e33, 0x0e3f, 0x0e45, 0x0e4e, 0x0e5a, + 0x0e75, 0x0e7e, 0x0e93, 0x0e9f, 0x0eb1, 0x0ec0, 0x0ecc, 0x0ed5, + 0x0ee4, 0x0eed, 0x0ef9, 0x0f05, 0x0f17, 0x0f20, 0x0f2f, 0x0f38, // Entry 140 - 17F - 0x0f71, 0x0f7d, 0x0f8c, 0x0f9b, 0x0fa4, 0x0faa, 0x0fb6, 0x0fbc, - 0x0fc5, 0x0fce, 0x0fdd, 0x0fe9, 0x0ff5, 0x1004, 0x101f, 0x1028, - 0x1037, 0x1043, 0x1056, 0x1068, 0x1074, 0x1089, 0x1095, 0x109e, - 0x10a7, 0x10b3, 0x10bc, 0x10cb, 0x10d7, 0x10e3, 0x10ef, 0x1101, - 0x110a, 0x1113, 0x111c, 0x1125, 0x112e, 0x113a, 0x1143, 0x1152, - 0x115b, 0x1167, 0x1173, 0x118c, 0x1195, 0x11a4, 0x11b0, 0x11c9, - 0x11e4, 0x11f3, 0x1202, 0x120e, 0x121a, 0x1226, 0x122f, 0x123b, - 0x1247, 0x1253, 0x125c, 0x1268, 0x1271, 0x127d, 0x128c, 0x129b, + 0x0f41, 0x0f4a, 0x0f53, 0x0f5f, 0x0f6e, 0x0f7d, 0x0f86, 0x0f8c, + 0x0f98, 0x0f9e, 0x0fa7, 0x0fb0, 0x0fbf, 0x0fcb, 0x0fd7, 0x0fe6, + 0x1001, 0x100a, 0x1019, 0x1025, 0x1038, 0x104a, 0x1056, 0x106b, + 0x1077, 0x1080, 0x1089, 0x1095, 0x109e, 0x10ad, 0x10b9, 0x10c5, + 0x10d1, 0x10e3, 0x10ec, 0x10f5, 0x10fe, 0x1107, 0x1110, 0x111c, + 0x1125, 0x1134, 0x113d, 0x1149, 0x1155, 0x116e, 0x1177, 0x1186, + 0x1192, 0x11ab, 0x11c6, 0x11d5, 0x11e4, 0x11f0, 0x11fc, 0x1208, + 0x1211, 0x121d, 0x1229, 0x1235, 0x123e, 0x124a, 0x1253, 0x125f, // Entry 180 - 1BF - 0x12aa, 0x12b6, 0x12c2, 0x12cb, 0x12d4, 0x12e0, 0x12ef, 0x1301, - 0x1310, 0x131c, 0x1325, 0x132e, 0x1337, 0x1340, 0x1349, 0x1355, - 0x135e, 0x136a, 0x1376, 0x1382, 0x138e, 0x1397, 0x13a0, 0x13ac, - 0x13b5, 0x13be, 0x13c7, 0x13e5, 0x13f7, 0x1400, 0x1409, 0x1418, - 0x1427, 0x1430, 0x143f, 0x144b, 0x1454, 0x145a, 0x1463, 0x146f, - 0x147b, 0x148a, 0x1499, 0x14a5, 0x14b1, 0x14c0, 0x14cf, 0x14d8, - 0x14e4, 0x14ed, 0x14f9, 0x1505, 0x1511, 0x151a, 0x1529, 0x1535, - 0x1541, 0x154a, 0x1559, 0x1565, 0x157a, 0x1586, 0x1592, 0x15a1, + 0x126e, 0x127d, 0x128c, 0x1298, 0x12a4, 0x12ad, 0x12b6, 0x12c2, + 0x12d1, 0x12e3, 0x12f2, 0x12fe, 0x1307, 0x1310, 0x1319, 0x1322, + 0x132b, 0x1337, 0x1340, 0x134c, 0x1358, 0x1364, 0x1370, 0x1379, + 0x1382, 0x138e, 0x1397, 0x13a0, 0x13a9, 0x13c7, 0x13d9, 0x13e2, + 0x13eb, 0x13fa, 0x1409, 0x1412, 0x1421, 0x142d, 0x1436, 0x1442, + 0x144b, 0x1457, 0x1463, 0x1472, 0x147e, 0x148a, 0x1496, 0x14a5, + 0x14b4, 0x14bd, 0x14c9, 0x14d2, 0x14de, 0x14ea, 0x14f6, 0x14ff, + 0x150e, 0x151a, 0x1526, 0x152f, 0x153e, 0x154a, 0x155f, 0x156b, // Entry 1C0 - 1FF - 0x15b0, 0x15bf, 0x15cb, 0x15d7, 0x15e3, 0x15f8, 0x1604, 0x1610, - 0x161c, 0x162e, 0x1637, 0x1643, 0x1658, 0x166a, 0x1676, 0x1688, - 0x1694, 0x16a3, 0x16b2, 0x16be, 0x16ca, 0x16dc, 0x16e5, 0x1703, - 0x1715, 0x1721, 0x1730, 0x1742, 0x1751, 0x175a, 0x1766, 0x1775, - 0x1784, 0x1793, 0x17a5, 0x17ae, 0x17ba, 0x17c6, 0x17de, 0x17ea, - 0x17f6, 0x1802, 0x1814, 0x181d, 0x1826, 0x1832, 0x183e, 0x1857, - 0x1866, 0x1872, 0x187b, 0x1884, 0x1893, 0x189f, 0x18ae, 0x18c0, - 0x18cc, 0x18d2, 0x18ea, 0x18f6, 0x1908, 0x1914, 0x1920, 0x192f, + 0x1577, 0x1586, 0x1595, 0x15a4, 0x15b0, 0x15bc, 0x15c8, 0x15dd, + 0x15e9, 0x15f5, 0x1601, 0x1613, 0x161c, 0x1628, 0x163d, 0x1652, + 0x1664, 0x1670, 0x1682, 0x168e, 0x169d, 0x16ac, 0x16b8, 0x16c4, + 0x16d6, 0x16df, 0x16fd, 0x170f, 0x171b, 0x172a, 0x173c, 0x174b, + 0x1754, 0x1760, 0x176f, 0x177e, 0x178d, 0x179f, 0x17a8, 0x17b4, + 0x17c0, 0x17d8, 0x17e4, 0x17f0, 0x17fc, 0x180e, 0x1817, 0x1820, + 0x182c, 0x1838, 0x1851, 0x185d, 0x1869, 0x1872, 0x187b, 0x188a, + 0x1896, 0x18a5, 0x18b7, 0x18c3, 0x18c9, 0x18e1, 0x18ed, 0x18ff, // Entry 200 - 23F - 0x1941, 0x1953, 0x195f, 0x1971, 0x1983, 0x198f, 0x1998, 0x19aa, - 0x19b6, 0x19bf, 0x19c8, 0x19d1, 0x19e0, 0x19ec, 0x19fb, 0x1a04, - 0x1a0d, 0x1a16, 0x1a22, 0x1a2b, 0x1a37, 0x1a40, 0x1a4c, 0x1a58, - 0x1a64, 0x1a73, 0x1a7f, 0x1a8e, 0x1aa6, 0x1ab2, 0x1abe, 0x1aca, - 0x1adc, 0x1ae8, 0x1afa, 0x1b09, 0x1b15, 0x1b21, 0x1b2a, 0x1b3c, - 0x1b4b, 0x1b57, 0x1b63, 0x1b6c, 0x1b75, 0x1b81, 0x1b8d, 0x1b9c, - 0x1bb5, 0x1bc1, 0x1bca, 0x1bd3, 0x1bdc, 0x1be8, 0x1bf1, 0x1bfa, - 0x1c06, 0x1c0c, 0x1c1b, 0x1c2a, 0x1c33, 0x1c39, 0x1c42, 0x1c4b, + 0x190b, 0x1917, 0x1926, 0x1938, 0x194a, 0x1956, 0x1968, 0x197a, + 0x1986, 0x198f, 0x19a1, 0x19ad, 0x19b6, 0x19bf, 0x19c8, 0x19d7, + 0x19e3, 0x19f2, 0x19fb, 0x1a04, 0x1a0d, 0x1a19, 0x1a22, 0x1a2e, + 0x1a37, 0x1a43, 0x1a4f, 0x1a5b, 0x1a6a, 0x1a76, 0x1a85, 0x1a9d, + 0x1aa9, 0x1ab5, 0x1ac1, 0x1ad3, 0x1adf, 0x1af1, 0x1b00, 0x1b0c, + 0x1b18, 0x1b21, 0x1b3f, 0x1b51, 0x1b5d, 0x1b69, 0x1b72, 0x1b7b, + 0x1b87, 0x1b93, 0x1ba2, 0x1bbb, 0x1bc7, 0x1bd0, 0x1bd9, 0x1be5, + 0x1bf1, 0x1bfa, 0x1c03, 0x1c0f, 0x1c15, 0x1c24, 0x1c33, 0x1c3c, // Entry 240 - 27F - 0x1c57, 0x1c66, 0x1c6c, 0x1c7b, 0x1c8a, 0x1c93, 0x1c9f, 0x1cbd, - 0x1cc6, 0x1cd5, 0x1cde, 0x1cf6, 0x1cf6, 0x1cf6, 0x1d0e, 0x1d0e, - 0x1d0e, 0x1d0e, 0x1d0e, 0x1d0e, 0x1d0e, 0x1d0e, 0x1d0e, 0x1d0e, - 0x1d0e, 0x1d20, 0x1d2c, 0x1d2c, 0x1d2c, 0x1d3b, 0x1d59, 0x1d74, - 0x1d80, 0x1d8c, -} // Size: 1244 bytes - -var zuLangStr string = "" + // Size: 3045 bytes - "isi-Abkhaziani-Afrikaansisi-Akanisi-Amharicisi-Arabicisi-Assameseisi-Aym" + - "araisi-Azerbaijaniisi-Bashkirisi-Belarusianisi-Bulgariisi-Bambaraisi-Ben" + - "galiisi-Tibetanisi-Bretonisi-Bosnianisi-Catalanisi-Chechenisi-Corsicanis" + - "i-Czechisi-Chuvashisi-Welshisi-Danishisi-Germanisi-Divehiisi-Dzongkhaisi" + - "-Eweisi-Greeki-Englishisi-Esperantoisi-Spanishisi-Estoniaisi-Basqueisi-P" + - "ersianisi-Finnishisi-Fijianisi-Faroeseisi-Frenchisi-Western Frisianisi-I" + - "rishi-Scottish Gaelicisi-Galiciaisi-Guaraniisi-Gujaratiisi-Manxisi-Hausa" + - "isi-Hebrewisi-Hindiisi-Croatianisi-Haitianisi-Hungarianisi-ArmeniaIzilim" + - "i ezihlangeneisi-Indonesianisi-Igboisi-Sichuan Yiisi-Icelandicisi-Italia" + - "nisi-Inuktitutisi-Japaneseisi-Javaneseisi-GeorgianIsi-Kongoisi-Kikuyuisi" + - "-Kazakhisi-Kalaallisutisi-Khmerisi-Kannadaisi-Koreanisi-Kashmiriisi-Kurd" + - "ishisi-Cornishisi-Kyrgyzisi-Latinisi-Luxembourgishisi-Gandaisi-Lingalai-" + - "Laoisi-Lithuanianisi-Luba-Katangaisi-Latvianisi-Malagasyisi-Maoriisi-Mac" + - "edonianisi-Malayalamisi-Mongolianisi-Marathiisi-Malayisi-Malteseisi-Burm" + - "eseisi-North Ndebeleisi-Nepaliisi-Dutchi-Norwegian Nynorskisi-Norwegian " + - "Bokmålisi-NyanjaIsi-Osithanii-Oromoisi-Oriyaisi-Osseticisi-Punjabiisi-Po" + - "lishisi-Pashtoisi-Portugueseisi-Quechuaisi-Romanshisi-Rundiisi-Romaniani" + - "si-Russianisi-Kinyarwandaisi-Sanskritisi-Sindhiisi-Northern Samiisi-Sang" + - "oi-Sinhalaisi-Slovakisi-Slovenianisi-SamoanisiShonaisi-Somaliisi-Albania" + - "isi-SerbianisiSwatiisiSuthuisi-Sundaneseisi-SwedishisiSwahiliisi-Tamilis" + - "i-Teluguisi-Tajikisi-Thaiisi-Tigrinyaisi-Turkmenisi-Tswanaisi-Tonganisi-" + - "Turkishisi-Tsongaisi-Tatarisi-Tahitianisi-Uighurisi-Ukrainianisi-Urduisi" + - "-Uzbekisi-Vendaisi-Vietnameseisi-WolofisiXhosaIsi-Yidishisi-Yorubaisi-Ch" + - "ineseisiZuluIsi-Acoliisi-Aghemisi-Mapucheisi-Asuisi-Bembaisi-Benaisi-Wes" + - "tern Balochiisi-Bodoisi-Chigaisi-Cherokeeisi-Central Kurdishisi-Taitaisi" + - "-Zarmaisi-Lower Sorbianisi-Dualaisi-Jola-Fonylisi-Embuisi-Efikisi-Filipi" + - "noIsi-Gaisi-Gagauzisi-Swiss Germanisi-Gusliisi-Hawaiianisi-Upper Sorbian" + - "isi-Ngombaisi-Machameisi-Kabyleisi-Kambaisi-Makondeisi-Kabuverdianuisi-K" + - "oyra Chiiniisi-Kalenjinisi-Komi-Permyakisi-KonkaniisiShambalaisi-Bafiais" + - "i-Langiisi-LakotaIsi-Loziisi-Northern LuriIsi-Luba-Luluaisi-Luoisi-Luyia" + - "isi-Masaiisi-Meruisi-Morisyenisi-Makhuwa-Meettoisi-Meta’isi-Mohawkisi-Mu" + - "ndangisi-Mazanderaniisi-Namandsisi-Kwasioisi-N’Koisi-Northern Sothoisi-N" + - "uerisi-Nyankoleisi-Kʼicheʼisi-Romboisi-Rwaisi-Samburuisi-Sangui-Southern" + - " Kurdishisi-Senaisi-Koyraboro Senniisi-Tachelhitisi-Southern Samiisi-Lul" + - "e Samiisi-Inari Samiisi-Skolt Samiisi-Tesoisi-TetumIsi-Klingonisi-Tok Pi" + - "sinIsi-Tumbukaisi-Tasawaqisi-Central Atlas Tamazightulimi olungaziwaisi-" + - "VaiisiVunjoisi-Warlpiriisi-Sogaisi-Standard Moroccan Tamazightakukho oku" + - "qukethwe kolimiisi-Arabic esivamile sesimanjeisi-Austrian Germani-Swiss " + - "High Germanisi-Austrillian Englishi-Canadian Englishi-British Englishi-A" + - "merican Englishisi-Latin American Spanishi-European Spanishi-Mexican Spa" + - "nishi-Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Flemishisi-Brazillia" + - "n Portugueseisi-European Portugueseisi-Moldavianisi-Congo Swahiliisi-Chi" + - "nese (Okosiko)" - -var zuLangIdx = []uint16{ // 610 elements + 0x1c42, 0x1c4b, 0x1c54, 0x1c60, 0x1c6f, 0x1c75, 0x1c84, 0x1c93, + 0x1c9c, 0x1ca8, 0x1cc6, 0x1ccf, 0x1cde, 0x1ce7, 0x1cff, 0x1cff, + 0x1cff, 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d17, + 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d29, 0x1d35, 0x1d35, 0x1d35, + 0x1d44, 0x1d62, 0x1d7d, 0x1d89, 0x1d95, +} // Size: 1250 bytes + +const zuLangStr string = "" + // Size: 4670 bytes + "isi-Afarisi-Abkhaziani-Afrikaansisi-Akanisi-Amharicisi-Aragoneseisi-Arab" + + "icisi-Assameseisi-Avaricisi-Aymaraisi-Azerbaijaniisi-Bashkirisi-Belarusi" + + "anisi-Bulgarii-Bislamaisi-Bambaraisi-Bengaliisi-Tibetanisi-Bretonisi-Bos" + + "nianisi-Catalanisi-Chechenisi-Chamorroisi-Corsicanisi-Czechisi-Church Sl" + + "avicisi-Chuvashisi-Welshisi-Danishisi-Germanisi-Divehiisi-Dzongkhaisi-Ew" + + "eisi-Greeki-Englishisi-Esperantoisi-Spanishisi-Estoniaisi-Basqueisi-Pers" + + "ianisi-Fulahisi-Finnishisi-Fijianisi-Faroeseisi-Frenchisi-Western Frisia" + + "nisi-Irishi-Scottish Gaelicisi-Galiciaisi-Guaraniisi-Gujaratiisi-Manxisi" + + "-Hausaisi-Hebrewisi-Hindiisi-Croatianisi-Haitianisi-Hungarianisi-Armenia" + + "isi-Hereroizilimi ezihlangeneisi-Indonesianizimiliisi-Igboisi-Sichuan Yi" + + "isi-Idoisi-Icelandicisi-Italianisi-Inuktitutisi-Japaneseisi-Javaneseisi-" + + "Georgianisi-Kongoisi-Kikuyuisi-Kuanyamaisi-Kazakhisi-Kalaallisutisi-Khme" + + "risi-Kannadaisi-Koreanisi-Kanuriisi-Kashmiriisi-Kurdishisi-Komiisi-Corni" + + "shisi-Kyrgyzisi-Latinisi-Luxembourgishisi-Gandaisi-Limburgishisi-Lingala" + + "i-Laoisi-Lithuanianisi-Luba-Katangaisi-Latvianisi-Malagasyisi-Marshalles" + + "eisi-Maoriisi-Macedonianisi-Malayalamisi-Mongolianisi-Marathiisi-Malayis" + + "i-Malteseisi-Burmeseisi-Nauruisi-North Ndebeleisi-Nepaliisi-Ndongaisi-Du" + + "tchi-Norwegian Nynorskisi-Norwegian Bokmåli-South Ndebeleisi-Navajoisi-N" + + "yanjaisi-Occitani-Oromoisi-Odiaisi-Osseticisi-Punjabiisi-Polishisi-Pasht" + + "oisi-Portugueseisi-Quechuaisi-Romanshisi-Rundiisi-Romanianisi-Russianisi" + + "-Kinyarwandaisi-Sanskriti-Sardinianisi-Sindhiisi-Northern Samiisi-Sangoi" + + "-Sinhalaisi-Slovakisi-Slovenianisi-SamoanisiShonaisi-Somaliisi-Albaniais" + + "i-SerbianisiSwatiisiSuthuisi-Sundaneseisi-SwedishisiSwahiliisi-Tamilisi-" + + "Teluguisi-Tajikisi-Thaiisi-Tigrinyaisi-Turkmenisi-Tswanaisi-Tonganisi-Tu" + + "rkishisi-Tsongaisi-Tatarisi-Tahitianisi-Uighurisi-Ukrainianisi-Urduisi-U" + + "zbekisi-Vendaisi-Vietnameseisi-Volapükisi-Walloonisi-WolofisiXhosaisi-Yi" + + "ddishisi-Yorubaisi-ChineseisiZuluisi-Achineseisi-Acoliisi-Adangmeisi-Ady" + + "gheisi-Aghemisi-Ainuisi-Aleuti-Southern Altaiisi-Angikaisi-Mapucheisi-Ar" + + "apahoisi-Asuisi-Asturianisi-Awadhiisi-Balineseisi-Basaaisi-Bembaisi-Bena" + + "isi-Western Balochiisi-Bhojpurii-Binii-Siksikaisi-Bodoisi-Buginesei-Blin" + + "isi-Cebuanoisi-Chigaisi-Chuukeseisi-Mariisi-Choctawisi-Cherokeeisi-Cheye" + + "nneisi-Central Kurdishi-Seselwa Creole Frenchisi-Dakotaisi-Dargwaisi-Tai" + + "taisi-Dogribisi-Zarmaisi-Lower Sorbianisi-Dualaisi-Jola-Fonyiisi-Dazagai" + + "si-Embuisi-Efikisi-Ekajukisi-Ewondoisi-Filipinoisi-Fonisi-Friulianisi-Ga" + + "isi-Gagauzisi-Gan Chineseisi-Geezisi-Gilberteseisi-Gorontaloisi-Swiss Ge" + + "rmanisi-Gusliisi-Gwichʼinisi-Hakka Chineseisi-Hawaiianisi-Hiligaynonisi-" + + "Hmongisi-Upper Sorbianisi-Xiang Chineseisi-Hupaisi-Ibanisi-Ibibioisi-Ilo" + + "koisi-Ingushisi-Lojbanisi-Ngombaisi-Machameisi-Kabyleisi-Kachinisi-Jjuis" + + "i-Kambaisi-Kabardianisi-Tyapisi-Makondeisi-Kabuverdianuisi-Koroisi-Khasi" + + "isi-Koyra Chiiniisi-Kakoisi-Kalenjinisi-Kimbunduisi-Komi-Permyakisi-Konk" + + "aniisi-Kpelleisi-Karachay-Balkarisi-Karelianisi-KurukhisiShambalaisi-Baf" + + "iaisi-Colognianisi-Kumykisi-Ladinoisi-Langiisi-Lezghianisi-Lakotaisi-Loz" + + "iisi-Northern Luriisi-Luba-Luluaisi-Lundaisi-Luoisi-Mizoisi-Luyiaisi-Mad" + + "ureseisi-Magahiisi-Maithiliisi-Makasarisi-Masaiisi-Mokshaisi-Mendeisi-Me" + + "ruisi-Morisyenisi-Makhuwa-Meettoisi-Meta’isi-Micmacisi-Minangkabauisi-Ma" + + "nipuriisi-Mohawkisi-Mossiisi-Mundangizilimi ezehlukeneisi-Creekisi-Miran" + + "deseisi-Erzyaisi-Mazanderaniisi-Min Nan Chineseisi-Neapolitanisi-Namaisi" + + "-Low Germanisi-Newariisi-Niasisi-Niueanisi-Kwasioisi-Ngiemboonisi-Nogaii" + + "si-N’Koisi-Northern Sothoisi-Nuerisi-Nyankoleisi-Pangasinanisi-Pampangai" + + "si-Papiamentoisi-Palauanisi-Nigerian Pidginisi-Prussianisi-Kʼicheʼi-Rapa" + + "nuii-Rarotonganisi-Romboisi-Aromanianisi-Rwai-Sandawei-Sakhaisi-Samburui" + + "-Santaliisi-Ngambayisi-Sangui-Siciliani-Scotsi-Southern Kurdishisi-Senai" + + "si-Koyraboro Senniisi-Tachelhiti-Shani-Southern Samiisi-Lule Samiisi-Ina" + + "ri Samiisi-Skolt Samii-Soninkei-Sranan Tongoi-Sahoi-Sukumaisi-Comoriani-" + + "Syriacisi-Timneisi-Tesoisi-Tetumisi-Tigreisi-Klingonisi-Tok Pisinisi-Tar" + + "okoisi-Tumbukaisi-Tuvaluisi-Tasawaqisi-Tuvinianisi-Central Atlas Tamazig" + + "htisi-Udmurtisi-Umbundui-Rootisi-VaiisiVunjoisi-Walserisi-Wolayttaisi-Wa" + + "rayisi-Warlpiriisi-Wu Chineseisi-Kalmykisi-Sogaisi-Yangbenisi-Yembaisi-C" + + "antoneseisi-Moroccan Tamazight esivamileisi-Zuniakukho okuqukethwe kolim" + + "iisi-Zazaisi-Arabic esivamile sesimanjeisi-Austrian Germani-Swiss High G" + + "ermanisi-Austrillian Englishi-Canadian Englishi-British Englishi-America" + + "n Englishisi-Latin American Spanishi-European Spanishi-Mexican Spanishi-" + + "Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Flemishisi-Brazillian Port" + + "ugueseisi-European Portugueseisi-Moldavianisi-Serbo-Croatianisi-Congo Sw" + + "ahiliisi-Chinese (esenziwe-lula)isi-Chinese (Okosiko)" + +var zuLangIdx = []uint16{ // 613 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000d, 0x000d, 0x0018, 0x0020, 0x002b, 0x002b, - 0x0035, 0x0041, 0x0041, 0x004b, 0x005a, 0x0065, 0x0073, 0x007e, - 0x007e, 0x0089, 0x0094, 0x009f, 0x00a9, 0x00b4, 0x00bf, 0x00ca, - 0x00ca, 0x00d6, 0x00d6, 0x00df, 0x00df, 0x00ea, 0x00f3, 0x00fd, - 0x0107, 0x0111, 0x011d, 0x0124, 0x012d, 0x0136, 0x0143, 0x014e, - 0x0159, 0x0163, 0x016e, 0x016e, 0x0179, 0x0183, 0x018e, 0x0198, - 0x01ab, 0x01b4, 0x01c5, 0x01d0, 0x01db, 0x01e7, 0x01ef, 0x01f8, - 0x0202, 0x020b, 0x020b, 0x0217, 0x0222, 0x022f, 0x023a, 0x023a, + 0x0000, 0x0008, 0x0015, 0x0015, 0x0020, 0x0028, 0x0033, 0x0040, + 0x004a, 0x0056, 0x0060, 0x006a, 0x0079, 0x0084, 0x0092, 0x009d, + 0x00a6, 0x00b1, 0x00bc, 0x00c7, 0x00d1, 0x00dc, 0x00e7, 0x00f2, + 0x00fe, 0x010a, 0x010a, 0x0113, 0x0124, 0x012f, 0x0138, 0x0142, + 0x014c, 0x0156, 0x0162, 0x0169, 0x0172, 0x017b, 0x0188, 0x0193, + 0x019e, 0x01a8, 0x01b3, 0x01bc, 0x01c7, 0x01d1, 0x01dc, 0x01e6, + 0x01f9, 0x0202, 0x0213, 0x021e, 0x0229, 0x0235, 0x023d, 0x0246, + 0x0250, 0x0259, 0x0259, 0x0265, 0x0270, 0x027d, 0x0288, 0x0292, // Entry 40 - 7F - 0x024d, 0x025b, 0x025b, 0x0263, 0x0271, 0x0271, 0x0271, 0x027e, - 0x0289, 0x0296, 0x02a2, 0x02ae, 0x02ba, 0x02c3, 0x02cd, 0x02cd, - 0x02d7, 0x02e6, 0x02ef, 0x02fa, 0x0304, 0x0304, 0x0310, 0x031b, - 0x031b, 0x0326, 0x0330, 0x0339, 0x034a, 0x0353, 0x0353, 0x035e, - 0x0363, 0x0371, 0x0381, 0x038c, 0x0398, 0x0398, 0x03a1, 0x03af, - 0x03bc, 0x03c9, 0x03d4, 0x03dd, 0x03e8, 0x03f3, 0x03f3, 0x0404, - 0x040e, 0x040e, 0x0417, 0x042a, 0x043f, 0x043f, 0x043f, 0x0449, - 0x0455, 0x0455, 0x045c, 0x0465, 0x0470, 0x047b, 0x047b, 0x0485, + 0x02a5, 0x02b3, 0x02ba, 0x02c2, 0x02d0, 0x02d0, 0x02d7, 0x02e4, + 0x02ef, 0x02fc, 0x0308, 0x0314, 0x0320, 0x0329, 0x0333, 0x033f, + 0x0349, 0x0358, 0x0361, 0x036c, 0x0376, 0x0380, 0x038c, 0x0397, + 0x039f, 0x03aa, 0x03b4, 0x03bd, 0x03ce, 0x03d7, 0x03e5, 0x03f0, + 0x03f5, 0x0403, 0x0413, 0x041e, 0x042a, 0x0439, 0x0442, 0x0450, + 0x045d, 0x046a, 0x0475, 0x047e, 0x0489, 0x0494, 0x049d, 0x04ae, + 0x04b8, 0x04c2, 0x04cb, 0x04de, 0x04f3, 0x0502, 0x050c, 0x0516, + 0x0521, 0x0521, 0x0528, 0x0530, 0x053b, 0x0546, 0x0546, 0x0550, // Entry 80 - BF - 0x048f, 0x049d, 0x04a8, 0x04b3, 0x04bc, 0x04c8, 0x04d3, 0x04e2, - 0x04ee, 0x04ee, 0x04f8, 0x0509, 0x0512, 0x051b, 0x0525, 0x0532, - 0x053c, 0x0544, 0x054e, 0x0559, 0x0564, 0x056c, 0x0574, 0x0581, - 0x058c, 0x0596, 0x059f, 0x05a9, 0x05b2, 0x05ba, 0x05c6, 0x05d1, - 0x05db, 0x05e5, 0x05f0, 0x05fa, 0x0603, 0x060f, 0x0619, 0x0626, - 0x062e, 0x0637, 0x0640, 0x064e, 0x064e, 0x064e, 0x0657, 0x065f, - 0x0669, 0x0673, 0x0673, 0x067e, 0x0685, 0x0685, 0x068e, 0x068e, - 0x068e, 0x068e, 0x068e, 0x0697, 0x0697, 0x0697, 0x0697, 0x0697, + 0x055a, 0x0568, 0x0573, 0x057e, 0x0587, 0x0593, 0x059e, 0x05ad, + 0x05b9, 0x05c4, 0x05ce, 0x05df, 0x05e8, 0x05f1, 0x05fb, 0x0608, + 0x0612, 0x061a, 0x0624, 0x062f, 0x063a, 0x0642, 0x064a, 0x0657, + 0x0662, 0x066c, 0x0675, 0x067f, 0x0688, 0x0690, 0x069c, 0x06a7, + 0x06b1, 0x06bb, 0x06c6, 0x06d0, 0x06d9, 0x06e5, 0x06ef, 0x06fc, + 0x0704, 0x070d, 0x0716, 0x0724, 0x0730, 0x073b, 0x0744, 0x074c, + 0x0757, 0x0761, 0x0761, 0x076c, 0x0773, 0x077f, 0x0788, 0x0793, + 0x079d, 0x079d, 0x079d, 0x07a6, 0x07ae, 0x07ae, 0x07ae, 0x07b7, // Entry C0 - FF - 0x0697, 0x0697, 0x0697, 0x0697, 0x0697, 0x06a2, 0x06a2, 0x06a2, - 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a9, 0x06a9, 0x06a9, 0x06a9, - 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, - 0x06a9, 0x06b2, 0x06b2, 0x06ba, 0x06ba, 0x06ba, 0x06cd, 0x06cd, - 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, - 0x06cd, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, - 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06de, 0x06de, 0x06de, - 0x06de, 0x06de, 0x06de, 0x06de, 0x06de, 0x06ea, 0x06ea, 0x06fd, + 0x07b7, 0x07c7, 0x07c7, 0x07d1, 0x07d1, 0x07dc, 0x07dc, 0x07e7, + 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07ee, 0x07ee, 0x07fa, + 0x07fa, 0x0804, 0x0804, 0x0810, 0x0810, 0x0819, 0x0819, 0x0819, + 0x0819, 0x0819, 0x0822, 0x0822, 0x082a, 0x082a, 0x082a, 0x083d, + 0x0849, 0x0849, 0x084f, 0x084f, 0x084f, 0x0858, 0x0858, 0x0858, + 0x0858, 0x0858, 0x0860, 0x0860, 0x0860, 0x086c, 0x086c, 0x0872, + 0x0872, 0x0872, 0x0872, 0x0872, 0x0872, 0x087d, 0x0886, 0x0886, + 0x0886, 0x0892, 0x089a, 0x089a, 0x08a5, 0x08a5, 0x08b1, 0x08bd, // Entry 100 - 13F - 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x0706, 0x0706, - 0x0706, 0x0706, 0x0706, 0x070f, 0x070f, 0x0720, 0x0720, 0x0729, - 0x0729, 0x0737, 0x0737, 0x0737, 0x073f, 0x0747, 0x0747, 0x0747, - 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0753, - 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, - 0x0753, 0x0759, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, - 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, - 0x0763, 0x0763, 0x0773, 0x0773, 0x0773, 0x077c, 0x077c, 0x077c, + 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e7, 0x08e7, 0x08f1, 0x08fb, + 0x0904, 0x0904, 0x0904, 0x090e, 0x090e, 0x0917, 0x0917, 0x0928, + 0x0928, 0x0931, 0x0931, 0x093f, 0x093f, 0x0949, 0x0951, 0x0959, + 0x0959, 0x0959, 0x0963, 0x0963, 0x0963, 0x0963, 0x096d, 0x096d, + 0x096d, 0x0979, 0x0979, 0x0980, 0x0980, 0x0980, 0x0980, 0x0980, + 0x0980, 0x0980, 0x098c, 0x0992, 0x099c, 0x09ab, 0x09ab, 0x09ab, + 0x09ab, 0x09b3, 0x09c1, 0x09c1, 0x09c1, 0x09c1, 0x09c1, 0x09c1, + 0x09ce, 0x09ce, 0x09ce, 0x09ce, 0x09de, 0x09de, 0x09de, 0x09e7, // Entry 140 - 17F - 0x077c, 0x0788, 0x0788, 0x0788, 0x0788, 0x0788, 0x0799, 0x0799, - 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, - 0x07a3, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07b8, 0x07b8, - 0x07b8, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07cc, 0x07dc, - 0x07dc, 0x07dc, 0x07dc, 0x07dc, 0x07dc, 0x07ec, 0x07ec, 0x07ec, - 0x07ec, 0x07f8, 0x07f8, 0x0808, 0x0813, 0x0813, 0x0813, 0x0813, - 0x0813, 0x0813, 0x0813, 0x0813, 0x081e, 0x0827, 0x0827, 0x0827, - 0x0827, 0x0827, 0x0830, 0x0830, 0x0830, 0x0830, 0x0830, 0x0830, + 0x09f4, 0x09f4, 0x0a05, 0x0a11, 0x0a11, 0x0a1f, 0x0a1f, 0x0a28, + 0x0a39, 0x0a4a, 0x0a52, 0x0a5a, 0x0a64, 0x0a6d, 0x0a77, 0x0a77, + 0x0a77, 0x0a81, 0x0a8b, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, + 0x0aa0, 0x0aaa, 0x0ab1, 0x0aba, 0x0aba, 0x0ac7, 0x0ac7, 0x0acf, + 0x0ada, 0x0aea, 0x0aea, 0x0af2, 0x0af2, 0x0afb, 0x0afb, 0x0b0b, + 0x0b0b, 0x0b0b, 0x0b13, 0x0b1f, 0x0b2b, 0x0b3b, 0x0b46, 0x0b46, + 0x0b50, 0x0b63, 0x0b63, 0x0b63, 0x0b6f, 0x0b79, 0x0b84, 0x0b8d, + 0x0b9a, 0x0ba3, 0x0ba3, 0x0bad, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bc2, // Entry 180 - 1BF - 0x0830, 0x083a, 0x083a, 0x083a, 0x0842, 0x0853, 0x0853, 0x0861, - 0x0861, 0x0861, 0x0868, 0x0868, 0x0871, 0x0871, 0x0871, 0x0871, - 0x0871, 0x0871, 0x0871, 0x0871, 0x0871, 0x087a, 0x087a, 0x087a, - 0x087a, 0x087a, 0x0882, 0x088e, 0x088e, 0x08a0, 0x08ab, 0x08ab, - 0x08ab, 0x08ab, 0x08ab, 0x08b5, 0x08b5, 0x08b5, 0x08c0, 0x08c0, - 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08cf, 0x08cf, - 0x08cf, 0x08d7, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08e4, - 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08ee, 0x0900, 0x0908, 0x0908, + 0x0bc2, 0x0bc2, 0x0bc2, 0x0bcc, 0x0bcc, 0x0bcc, 0x0bd4, 0x0be5, + 0x0be5, 0x0bf3, 0x0bf3, 0x0bfc, 0x0c03, 0x0c0b, 0x0c14, 0x0c14, + 0x0c14, 0x0c20, 0x0c20, 0x0c2a, 0x0c36, 0x0c41, 0x0c41, 0x0c4a, + 0x0c4a, 0x0c54, 0x0c54, 0x0c5d, 0x0c65, 0x0c71, 0x0c71, 0x0c83, + 0x0c8e, 0x0c98, 0x0ca7, 0x0ca7, 0x0cb3, 0x0cbd, 0x0cc6, 0x0cc6, + 0x0cd1, 0x0ce3, 0x0cec, 0x0cf9, 0x0cf9, 0x0cf9, 0x0cf9, 0x0d02, + 0x0d11, 0x0d24, 0x0d32, 0x0d3a, 0x0d48, 0x0d52, 0x0d5a, 0x0d64, + 0x0d64, 0x0d6e, 0x0d7b, 0x0d84, 0x0d84, 0x0d84, 0x0d8e, 0x0da0, // Entry 1C0 - 1FF - 0x0908, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, - 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, - 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0921, 0x0921, - 0x0921, 0x0921, 0x0921, 0x0921, 0x0921, 0x092a, 0x092a, 0x092a, - 0x092a, 0x092a, 0x092a, 0x0931, 0x0931, 0x0931, 0x0931, 0x093c, - 0x093c, 0x093c, 0x093c, 0x093c, 0x0945, 0x0945, 0x0945, 0x0945, - 0x0957, 0x0957, 0x095f, 0x095f, 0x095f, 0x0972, 0x0972, 0x0972, - 0x097f, 0x097f, 0x097f, 0x097f, 0x097f, 0x097f, 0x0990, 0x099d, + 0x0da8, 0x0da8, 0x0da8, 0x0db4, 0x0db4, 0x0db4, 0x0db4, 0x0db4, + 0x0dc2, 0x0dc2, 0x0dce, 0x0ddc, 0x0de7, 0x0de7, 0x0dfa, 0x0dfa, + 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0e06, + 0x0e06, 0x0e13, 0x0e13, 0x0e13, 0x0e1c, 0x0e28, 0x0e28, 0x0e28, + 0x0e31, 0x0e31, 0x0e31, 0x0e31, 0x0e31, 0x0e3e, 0x0e45, 0x0e4e, + 0x0e55, 0x0e55, 0x0e60, 0x0e60, 0x0e69, 0x0e69, 0x0e74, 0x0e7d, + 0x0e87, 0x0e8e, 0x0e8e, 0x0ea0, 0x0ea0, 0x0ea8, 0x0ea8, 0x0ea8, + 0x0ebb, 0x0ebb, 0x0ebb, 0x0ec8, 0x0ece, 0x0ece, 0x0ece, 0x0ece, // Entry 200 - 23F - 0x09ab, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, - 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, - 0x09b9, 0x09c1, 0x09c1, 0x09ca, 0x09ca, 0x09ca, 0x09ca, 0x09ca, - 0x09d5, 0x09d5, 0x09d5, 0x09d5, 0x09d5, 0x09e2, 0x09e2, 0x09e2, - 0x09e2, 0x09e2, 0x09e2, 0x09ed, 0x09ed, 0x09f8, 0x09f8, 0x0a13, - 0x0a13, 0x0a13, 0x0a13, 0x0a23, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, - 0x0a2a, 0x0a2a, 0x0a2a, 0x0a32, 0x0a32, 0x0a32, 0x0a32, 0x0a32, - 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a46, 0x0a46, 0x0a46, 0x0a46, + 0x0ece, 0x0edd, 0x0eea, 0x0ef8, 0x0f06, 0x0f0f, 0x0f0f, 0x0f1d, + 0x0f1d, 0x0f23, 0x0f23, 0x0f2b, 0x0f2b, 0x0f2b, 0x0f37, 0x0f37, + 0x0f3f, 0x0f3f, 0x0f3f, 0x0f48, 0x0f50, 0x0f50, 0x0f59, 0x0f62, + 0x0f62, 0x0f62, 0x0f62, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f6d, + 0x0f7a, 0x0f7a, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f8f, 0x0f99, + 0x0fa4, 0x0fb0, 0x0fcb, 0x0fd5, 0x0fd5, 0x0fe0, 0x0fe6, 0x0fed, + 0x0fed, 0x0fed, 0x0fed, 0x0fed, 0x0fed, 0x0fed, 0x0ff5, 0x0fff, + 0x100b, 0x1014, 0x1014, 0x1020, 0x102e, 0x1038, 0x1038, 0x1040, // Entry 240 - 27F - 0x0a46, 0x0a46, 0x0a46, 0x0a46, 0x0a46, 0x0a46, 0x0a46, 0x0a65, - 0x0a65, 0x0a7e, 0x0a7e, 0x0a9c, 0x0a9c, 0x0aaf, 0x0ac2, 0x0ad9, - 0x0aeb, 0x0afc, 0x0b0e, 0x0b28, 0x0b3a, 0x0b4b, 0x0b4b, 0x0b5c, - 0x0b6a, 0x0b77, 0x0b82, 0x0b9b, 0x0bb2, 0x0bbf, 0x0bbf, 0x0bd0, - 0x0bd0, 0x0be5, -} // Size: 1244 bytes + 0x1040, 0x1040, 0x104b, 0x1054, 0x1054, 0x1061, 0x1061, 0x1061, + 0x1061, 0x1061, 0x1081, 0x1089, 0x10a2, 0x10aa, 0x10c8, 0x10c8, + 0x10db, 0x10ee, 0x1105, 0x1117, 0x1128, 0x113a, 0x1154, 0x1166, + 0x1177, 0x1177, 0x1188, 0x1196, 0x11a3, 0x11ae, 0x11c7, 0x11de, + 0x11eb, 0x11fd, 0x120e, 0x1229, 0x123e, +} // Size: 1250 bytes -// Total size for lang: 903410 bytes (903 KB) +// Total size for lang: 1022818 bytes (1022 KB) -// Number of keys: 168 +// Number of keys: 175 var ( scriptIndex = tagIndex{ "", "", - "AfakAghbAhomArabArmiArmnAvstBaliBamuBassBatkBengBlisBopoBrahBraiBugiBuhd" + - "CakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyhEgypElba" + - "EthiGeokGeorGlagGothGranGrekGujrGuruHangHaniHanoHansHantHatrHebrHira" + - "HluwHmngHrktHungIndsItalJavaJpanJurcKaliKanaKharKhmrKhojKndaKoreKpel" + - "KthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMandMani" + - "MayaMendMercMeroMlymModiMongMoonMrooMteiMultMymrNarbNbatNkgbNkooNshu" + - "OgamOlckOrkhOryaOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPlrdPrtiRjngRoro" + - "RunrSamrSaraSarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrcSyreSyrj" + - "SyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhUgar" + - "VaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsyeZsymZxxxZyyyZzzz", + "AdlmAfakAghbAhomArabArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopoBrahBrai" + + "BugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyh" + + "EgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHanbHangHaniHanoHansHant" + + "HatrHebrHiraHluwHmngHrktHungIndsItalJamoJavaJpanJurcKaliKanaKharKhmr" + + "KhojKndaKoreKpelKthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyci" + + "LydiMahjMandManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymr" + + "NarbNbatNewaNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhli" + + "PhlpPhlvPhnxPlrdPrtiRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSiddSind" + + "SinhSoraSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTeng" + + "TfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsye" + + "ZsymZxxxZyyyZzzz", } ) -var scriptHeaders = [220]header{ +var scriptHeaders = [252]header{ { // af afScriptStr, afScriptIdx, @@ -22901,66 +26402,69 @@ var scriptHeaders = [220]header{ arScriptIdx, }, {}, // ar-EG + {}, // ar-LY + {}, // ar-SA { // as "বঙালী", - []uint16{ // 13 elements + []uint16{ // 14 elements 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, }, }, {}, // asa { // ast - "afakacáucaso-albanésahomárabearamaicu imperialarmeniuavésticubalinésbamu" + - "mbassa vahbatakbengalínsímbolos de Blissbopomofobrahmibraillelontara" + - "buhidchakmasilábicu unificáu de los nativos canadiensescariuchamcher" + - "okicirthcoptuxipriotacirílicueslavónicu cirílicu eclesiásticu antigu" + - "udevanagarialfabetu Deserettaquigrafía Duployédemóticu exipcianuhier" + - "áticu exipcianuxeroglíficos exipcianoselbasanetíopekhutsuri xeorxan" + - "uxeorxanuglagolíticugóticugranthagrieguguyaratigurmukhihangulhanhanu" + - "nó’ohan simplificáuhan tradicionalhatranuhebréuḥiraganaxeroglíficos " + - "anatoliospahawh hmongsilabarios xaponeseshúngaru antiguuindusitálicu" + - " antiguuxavanésxaponésjurchenkayah likatakanakharoshthiḥemerkhojkica" + - "naréscoreanukpellekaithilannalaosianufraktur llatíngaélicu llatínlla" + - "tínlepchalimbullinial Allinial Balfabetu de Fraserlomaliciulidiumaha" + - "janimandéumaniquéuxeroglíficos mayesmendemeroíticu en cursivameroíti" + - "cumalayalammodimongoltipos Moonmromeitei mayekmultanibirmanuárabe de" + - "l norte antiguunabatéugeba del naxin’konüshuoghamol chikiorkhonoriya" + - "osmanyapalmirenuPau Cin Haupérmicu antiguuescritura ‘Phags-papahlavi" + - " d’inscripcionespahlavi de salteriupahlavi de llibrosfeniciufonéticu" + - " de Pollardpartu d’inscripcionesrejangrongorongorunessamaritanusarat" + - "iárabe del sur antiguusaurashtraescritura de signosshavianusharadasi" + - "ddhamkhudabadicingaléssora sompengsondanéssyloti nagrisiriacusiriacu" + - " estrangelosiriacu occidentalsiriacu orientaltagbanwatakritai letai " + - "lue nuevutamiltanguttai viettelugutengwartifinaghtagalogthaanatailan" + - "déstibetanutirhutaugaríticuvaifala visiblevarang kshitiwoleaipersa a" + - "ntiguucuneiforme sumeriu acadiuyiheredáuescritura matemáticasímbolos" + - "non escritucomúnescritura desconocida", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x0016, 0x001a, 0x0020, 0x0031, 0x0038, 0x0041, - 0x0049, 0x004e, 0x0057, 0x005c, 0x0065, 0x0077, 0x007f, 0x0085, - 0x008c, 0x0093, 0x0098, 0x009e, 0x00cc, 0x00d1, 0x00d5, 0x00dc, - 0x00e1, 0x00e6, 0x00ee, 0x00f7, 0x0122, 0x012c, 0x013c, 0x0151, - 0x0164, 0x0178, 0x0190, 0x0197, 0x019e, 0x01af, 0x01b7, 0x01c3, - 0x01ca, 0x01d1, 0x01d7, 0x01df, 0x01e7, 0x01ed, 0x01f0, 0x01fb, - 0x020b, 0x021a, 0x0221, 0x0228, 0x0232, 0x0249, 0x0255, 0x0269, - 0x0279, 0x027e, 0x028e, 0x0296, 0x029e, 0x02a5, 0x02ad, 0x02b5, - // Entry 40 - 7F - 0x02bf, 0x02c6, 0x02cc, 0x02d4, 0x02db, 0x02e1, 0x02e7, 0x02ec, - 0x02f4, 0x0303, 0x0313, 0x031a, 0x0320, 0x0325, 0x032e, 0x0337, - 0x0349, 0x034d, 0x0352, 0x0357, 0x035f, 0x0366, 0x036f, 0x0382, - 0x0387, 0x039c, 0x03a6, 0x03af, 0x03b3, 0x03b9, 0x03c3, 0x03c6, - 0x03d2, 0x03d9, 0x03e0, 0x03f8, 0x0400, 0x040d, 0x0413, 0x0419, - 0x041e, 0x0426, 0x042c, 0x0431, 0x0438, 0x0441, 0x044c, 0x045c, - 0x0471, 0x048a, 0x049d, 0x04af, 0x04b6, 0x04ca, 0x04e1, 0x04e7, - 0x04f1, 0x04f6, 0x0500, 0x0506, 0x051c, 0x0526, 0x0539, 0x0541, - // Entry 80 - BF - 0x0548, 0x054f, 0x0558, 0x0561, 0x056d, 0x0576, 0x0582, 0x0589, - 0x059b, 0x05ad, 0x05bd, 0x05c5, 0x05ca, 0x05d0, 0x05dd, 0x05e2, - 0x05e8, 0x05f0, 0x05f6, 0x05fd, 0x0605, 0x060c, 0x0612, 0x061c, - 0x0624, 0x062b, 0x0635, 0x0638, 0x0644, 0x0651, 0x0657, 0x0664, - 0x067d, 0x067f, 0x0687, 0x069c, 0x069c, 0x06a5, 0x06b0, 0x06b6, - 0x06cb, + "adlmafakacáucaso-albanésahomárabearamaicu imperialarmeniuavésticubalinés" + + "bamumbassa vahbatakbengalínbhkssímbolos de Blissbopomofobrahmibraill" + + "elontarabuhidchakmasilábicu unificáu de los nativos canadiensescariu" + + "chamcherokicirthcoptuxipriotacirílicueslavónicu cirílicu eclesiástic" + + "u antiguudevanagarialfabetu Deserettaquigrafía Duployédemóticu exipc" + + "ianuhieráticu exipcianuxeroglíficos exipcianoselbasanetíopekhutsuri " + + "xeorxanuxeorxanuglagolíticugóticugranthagrieguguyaratigurmukhihanbha" + + "ngulhanhanunó’ohan simplificáuhan tradicionalhatranuhebréuḥiraganaxe" + + "roglíficos anatoliospahawh hmongsilabarios xaponeseshúngaru antiguui" + + "ndusitálicu antiguujamoxavanésxaponésjurchenkayah likatakanakharosht" + + "hiḥemerkhojkicanaréscoreanukpellekaithilannalaosianufraktur llatínga" + + "élicu llatínllatínlepchalimbullinial Allinial Balfabetu de Fraserlo" + + "maliciulidiumahajanimandéumaniquéumarcxeroglíficos mayesmendemeroíti" + + "cu en cursivameroíticumalayalammodimongoltipos Moonmromeitei mayekmu" + + "ltanibirmanuárabe del norte antiguunabatéunewageba del naxin’konüshu" + + "oghamol chikiorkhonoriyaosgeosmanyapalmirenupau cin haupérmicu antig" + + "uuescritura ‘Phags-papahlavi d’inscripcionespahlavi de salteriupahla" + + "vi de llibrosfeniciufonéticu de Pollardpartu d’inscripcionesrejangro" + + "ngorongorunessamaritanusaratiárabe del sur antiguusaurashtraescritur" + + "a de signosshavianusharadasiddhamkhudabadicingaléssora sompengsondan" + + "éssyloti nagrisiriacusiriacu estrangelosiriacu occidentalsiriacu or" + + "ientaltagbanwatakritai letai lue nuevutamiltanguttai viettelugutengw" + + "artifinaghtagalogthaanatailandéstibetanutirhutaugaríticuvaifala visi" + + "blevarang kshitiwoleaipersa antiguucuneiforme sumeriu acadiuyiheredá" + + "uescritura matemáticaemojisímbolosnon escritucomúnescritura desconoc" + + "ida", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0004, 0x0009, 0x001a, 0x001e, 0x0024, 0x0035, 0x003c, + 0x0045, 0x004d, 0x0052, 0x005b, 0x0060, 0x0069, 0x006d, 0x007f, + 0x0087, 0x008d, 0x0094, 0x009b, 0x00a0, 0x00a6, 0x00d4, 0x00d9, + 0x00dd, 0x00e4, 0x00e9, 0x00ee, 0x00f6, 0x00ff, 0x012a, 0x0134, + 0x0144, 0x0159, 0x016c, 0x0180, 0x0198, 0x019f, 0x01a6, 0x01b7, + 0x01bf, 0x01cb, 0x01d2, 0x01d9, 0x01df, 0x01e7, 0x01ef, 0x01f3, + 0x01f9, 0x01fc, 0x0207, 0x0217, 0x0226, 0x022d, 0x0234, 0x023e, + 0x0255, 0x0261, 0x0275, 0x0285, 0x028a, 0x029a, 0x029e, 0x02a6, + // Entry 40 - 7F + 0x02ae, 0x02b5, 0x02bd, 0x02c5, 0x02cf, 0x02d6, 0x02dc, 0x02e4, + 0x02eb, 0x02f1, 0x02f7, 0x02fc, 0x0304, 0x0313, 0x0323, 0x032a, + 0x0330, 0x0335, 0x033e, 0x0347, 0x0359, 0x035d, 0x0362, 0x0367, + 0x036f, 0x0376, 0x037f, 0x0383, 0x0396, 0x039b, 0x03b0, 0x03ba, + 0x03c3, 0x03c7, 0x03cd, 0x03d7, 0x03da, 0x03e6, 0x03ed, 0x03f4, + 0x040c, 0x0414, 0x0418, 0x0425, 0x042b, 0x0431, 0x0436, 0x043e, + 0x0444, 0x0449, 0x044d, 0x0454, 0x045d, 0x0468, 0x0478, 0x048d, + 0x04a6, 0x04b9, 0x04cb, 0x04d2, 0x04e6, 0x04fd, 0x0503, 0x050d, + // Entry 80 - BF + 0x0512, 0x051c, 0x0522, 0x0538, 0x0542, 0x0555, 0x055d, 0x0564, + 0x056b, 0x0574, 0x057d, 0x0589, 0x0592, 0x059e, 0x05a5, 0x05b7, + 0x05c9, 0x05d9, 0x05e1, 0x05e6, 0x05ec, 0x05f9, 0x05fe, 0x0604, + 0x060c, 0x0612, 0x0619, 0x0621, 0x0628, 0x062e, 0x0638, 0x0640, + 0x0647, 0x0651, 0x0654, 0x0660, 0x066d, 0x0673, 0x0680, 0x0699, + 0x069b, 0x06a3, 0x06b8, 0x06bd, 0x06c6, 0x06d1, 0x06d7, 0x06ec, }, }, { // az @@ -22969,47 +26473,48 @@ var scriptHeaders = [220]header{ }, { // az-Cyrl "Кирил", - []uint16{ // 28 elements + []uint16{ // 30 elements 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, }, }, {}, // bas { // be "арабскаеармянскаебенгальскаебапамофашрыфт Брайлякірыліцадэванагарыэфіопс" + - "каегрузінскаегрэчаскаегуджараціГурмукхіхангыльханспрошчаны хантрады" + - "цыйны ханяўрэйскаехіраганаяпонскаекатаканакхмерскаеканадакарэйскаел" + - "аоскаелацінкамалаяламстарамангольскаем’янмарскаеорыясінгальскаетамі" + - "льскаетэлугутанатайскаетыбецкаесімвалынепісьменнызвычайнаеневядомае" + - " пісьмо", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0038, 0x0038, 0x0048, 0x0048, - 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, - 0x005f, 0x005f, 0x005f, 0x006f, 0x006f, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0095, 0x0095, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00bb, 0x00cd, 0x00dd, 0x00eb, 0x00f1, 0x00f1, - 0x010a, 0x0125, 0x0125, 0x0137, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0157, 0x0157, 0x0157, 0x0167, - // Entry 40 - 7F - 0x0167, 0x0179, 0x0179, 0x0185, 0x0197, 0x0197, 0x0197, 0x0197, - 0x01a5, 0x01a5, 0x01a5, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, - 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, - 0x01b3, 0x01b3, 0x01b3, 0x01c3, 0x01c3, 0x01e3, 0x01e3, 0x01e3, - 0x01e3, 0x01e3, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, - 0x01fa, 0x01fa, 0x01fa, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, - 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, - 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, - // Entry 80 - BF - 0x0202, 0x0202, 0x0202, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, - 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x022c, - 0x022c, 0x022c, 0x0238, 0x0238, 0x0238, 0x0238, 0x0240, 0x024e, - 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, - 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x026c, 0x0282, 0x0294, - 0x02b3, + "каегрузінскаегрэчаскаегуджарацігурмукхіхан з бапамофахангыльханспро" + + "шчанае хантрадыцыйнае ханяўрэйскаехіраганаяпонскія складовыя пісьмы" + + "чамояпонскаекатаканакхмерскаеканадакарэйскаелаоскаелацініцамалаялам" + + "старамангольскаем’янмарскаеорыясінгальскаетамільскаетэлугутанатайск" + + "аетыбецкаематэматычныя знакіэмодзісімвалыбеспісьменнаязвычайнаеневя" + + "домае пісьмо", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, + 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0038, 0x0038, 0x0038, + 0x0048, 0x0048, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, + 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x006f, 0x006f, 0x0083, + 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0095, 0x0095, + 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00bb, 0x00cd, 0x00dd, 0x00f7, + 0x0105, 0x010b, 0x010b, 0x0126, 0x0143, 0x0143, 0x0155, 0x0165, + 0x0165, 0x0165, 0x0195, 0x0195, 0x0195, 0x0195, 0x019d, 0x019d, + // Entry 40 - 7F + 0x01ad, 0x01ad, 0x01ad, 0x01bd, 0x01bd, 0x01cf, 0x01cf, 0x01db, + 0x01ed, 0x01ed, 0x01ed, 0x01ed, 0x01fb, 0x01fb, 0x01fb, 0x020b, + 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, + 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, + 0x021b, 0x021b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x0252, + 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, + 0x0252, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, + 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, + // Entry 80 - BF + 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, + 0x025a, 0x025a, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, + 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0284, 0x0284, + 0x0284, 0x0290, 0x0290, 0x0290, 0x0290, 0x0298, 0x02a6, 0x02b6, + 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, + 0x02b6, 0x02b6, 0x02d9, 0x02e5, 0x02f3, 0x030d, 0x031f, 0x033e, }, }, {}, // bem @@ -23023,10 +26528,11 @@ var scriptHeaders = [220]header{ bnScriptStr, bnScriptIdx, }, + {}, // bn-IN { // bo "རྒྱ་ཡིག་གསར་པ།རྒྱ་ཡིག་རྙིང་པ།བོད་ཡིག་སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་" + "ཟིན་ཐོ།", - []uint16{ // 167 elements + []uint16{ // 174 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -23034,7 +26540,7 @@ var scriptHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x002a, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0000, 0x0000, 0x0000, 0x002a, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, // Entry 40 - 7F 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, @@ -23049,8 +26555,9 @@ var scriptHeaders = [220]header{ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00eb, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00eb, }, }, {}, // bo-IN @@ -23064,32 +26571,32 @@ var scriptHeaders = [220]header{ "neksirieksiriek Estrangelāsiriek ar C’hornôgsiriek ar Retertamilekte" + "lougoutagalogthaanathaitibetanekougaritekvaipersek kozhnotadur jedon" + "ielarouezioùanskrivetboutinskritur dianav", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0018, 0x0022, 0x0029, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0037, 0x0037, 0x003f, 0x003f, - 0x0046, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x0053, 0x0053, 0x005b, 0x006f, 0x0079, 0x0079, 0x0079, - 0x0079, 0x0079, 0x008d, 0x008d, 0x0094, 0x0094, 0x009d, 0x00a7, - 0x00ac, 0x00ac, 0x00b5, 0x00bd, 0x00c5, 0x00cc, 0x00cf, 0x00cf, - 0x00da, 0x00e7, 0x00e7, 0x00ee, 0x00f6, 0x010b, 0x010b, 0x010b, - 0x010b, 0x010b, 0x0114, 0x011b, 0x0122, 0x0122, 0x0122, 0x012a, - // Entry 40 - 7F - 0x012a, 0x012f, 0x012f, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, - 0x0144, 0x0144, 0x0153, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x016b, - 0x016b, 0x016b, 0x016b, 0x0174, 0x0174, 0x017c, 0x017c, 0x017c, - 0x017c, 0x017c, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0187, 0x0187, 0x0187, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0018, 0x0022, + 0x0029, 0x0030, 0x0030, 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, + 0x003f, 0x003f, 0x0046, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x0053, 0x0053, 0x005b, 0x006f, 0x0079, + 0x0079, 0x0079, 0x0079, 0x0079, 0x008d, 0x008d, 0x0094, 0x0094, + 0x009d, 0x00a7, 0x00ac, 0x00ac, 0x00b5, 0x00bd, 0x00c5, 0x00c5, + 0x00cc, 0x00cf, 0x00cf, 0x00da, 0x00e7, 0x00e7, 0x00ee, 0x00f6, + 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x0114, 0x011b, + // Entry 40 - 7F + 0x0122, 0x0122, 0x0122, 0x012a, 0x012a, 0x012f, 0x012f, 0x0136, + 0x013e, 0x013e, 0x013e, 0x013e, 0x0144, 0x0144, 0x0153, 0x0158, + 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, + 0x0158, 0x0158, 0x0158, 0x0158, 0x016b, 0x016b, 0x016b, 0x016b, + 0x0174, 0x0174, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x0183, + 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0187, 0x0187, + 0x0187, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, - 0x018c, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, // Entry 80 - BF - 0x0191, 0x0191, 0x0191, 0x019a, 0x019a, 0x01a2, 0x01a2, 0x01a8, - 0x01ba, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e5, - 0x01e5, 0x01e5, 0x01ed, 0x01ed, 0x01ed, 0x01f4, 0x01fa, 0x01fe, - 0x0207, 0x0207, 0x0210, 0x0213, 0x0213, 0x0213, 0x0213, 0x021e, - 0x021e, 0x021e, 0x021e, 0x022e, 0x022e, 0x0238, 0x0241, 0x0247, - 0x0255, + 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, + 0x0191, 0x0191, 0x019a, 0x019a, 0x01a2, 0x01a2, 0x01a8, 0x01ba, + 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e5, 0x01e5, + 0x01e5, 0x01ed, 0x01ed, 0x01ed, 0x01f4, 0x01fa, 0x01fe, 0x0207, + 0x0207, 0x0210, 0x0213, 0x0213, 0x0213, 0x0213, 0x021e, 0x021e, + 0x021e, 0x021e, 0x022e, 0x022e, 0x0238, 0x0241, 0x0247, 0x0255, }, }, { // brx @@ -23109,90 +26616,90 @@ var scriptHeaders = [220]header{ "ीरीआकपूर्वी सीरीआकतागबानवाताई लेनया ताई लुएतमीळतेलुगुतेंगवारतीफीना" + "ग़टागालॉगथानाथाईतिब्बतीऊगारीटीकवाईवीज़ीबल बोलीपुरानी फारसीसुमेरो अ" + "क्काड़ी कुनेईफॉर्मयीविरासतअलिखितआमअज्ञात या अवैध लिपि", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0037, 0x0055, 0x006a, - 0x0076, 0x0076, 0x0076, 0x0082, 0x0094, 0x00b3, 0x00cb, 0x00e0, - 0x00ef, 0x0101, 0x0110, 0x0110, 0x0179, 0x018b, 0x0194, 0x01a6, - 0x01b5, 0x01c4, 0x01df, 0x01f7, 0x022f, 0x0247, 0x025c, 0x025c, - 0x0287, 0x02b2, 0x02e6, 0x02e6, 0x02fe, 0x032c, 0x0344, 0x0365, - 0x0374, 0x0374, 0x0383, 0x0398, 0x03ad, 0x03bc, 0x03c5, 0x03d7, - 0x03f6, 0x041b, 0x041b, 0x042d, 0x0445, 0x0445, 0x046a, 0x04a2, - 0x04cd, 0x04df, 0x0507, 0x051c, 0x052e, 0x052e, 0x0544, 0x055c, - // Entry 40 - 7F - 0x0571, 0x0580, 0x0580, 0x0592, 0x05a7, 0x05a7, 0x05a7, 0x05b3, - 0x05bc, 0x05e7, 0x0606, 0x0615, 0x0624, 0x0636, 0x064c, 0x0665, - 0x0665, 0x0665, 0x0677, 0x0689, 0x0689, 0x0698, 0x06aa, 0x06d5, - 0x06d5, 0x06d5, 0x06f0, 0x0705, 0x0705, 0x0720, 0x072c, 0x072c, - 0x0748, 0x0748, 0x0763, 0x0763, 0x0763, 0x0763, 0x0772, 0x0772, - 0x0781, 0x0794, 0x07a3, 0x07b5, 0x07d0, 0x07d0, 0x07d0, 0x07f8, - 0x080e, 0x080e, 0x080e, 0x0839, 0x0851, 0x087f, 0x087f, 0x0891, - 0x08af, 0x08be, 0x08d0, 0x08df, 0x08df, 0x08fa, 0x091c, 0x092e, - // Entry 80 - BF - 0x092e, 0x092e, 0x092e, 0x0943, 0x0943, 0x0955, 0x097d, 0x098f, - 0x09c3, 0x09eb, 0x0a10, 0x0a28, 0x0a28, 0x0a38, 0x0a55, 0x0a61, - 0x0a61, 0x0a61, 0x0a73, 0x0a88, 0x0aa0, 0x0ab5, 0x0ac1, 0x0aca, - 0x0adf, 0x0adf, 0x0af7, 0x0b00, 0x0b22, 0x0b22, 0x0b22, 0x0b44, - 0x0b8e, 0x0b94, 0x0ba6, 0x0ba6, 0x0ba6, 0x0ba6, 0x0bb8, 0x0bbe, - 0x0bf1, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0037, 0x0055, + 0x006a, 0x0076, 0x0076, 0x0076, 0x0082, 0x0094, 0x0094, 0x00b3, + 0x00cb, 0x00e0, 0x00ef, 0x0101, 0x0110, 0x0110, 0x0179, 0x018b, + 0x0194, 0x01a6, 0x01b5, 0x01c4, 0x01df, 0x01f7, 0x022f, 0x0247, + 0x025c, 0x025c, 0x0287, 0x02b2, 0x02e6, 0x02e6, 0x02fe, 0x032c, + 0x0344, 0x0365, 0x0374, 0x0374, 0x0383, 0x0398, 0x03ad, 0x03ad, + 0x03bc, 0x03c5, 0x03d7, 0x03f6, 0x041b, 0x041b, 0x042d, 0x0445, + 0x0445, 0x046a, 0x04a2, 0x04cd, 0x04df, 0x0507, 0x0507, 0x051c, + // Entry 40 - 7F + 0x052e, 0x052e, 0x0544, 0x055c, 0x0571, 0x0580, 0x0580, 0x0592, + 0x05a7, 0x05a7, 0x05a7, 0x05b3, 0x05bc, 0x05e7, 0x0606, 0x0615, + 0x0624, 0x0636, 0x064c, 0x0665, 0x0665, 0x0665, 0x0677, 0x0689, + 0x0689, 0x0698, 0x06aa, 0x06aa, 0x06d5, 0x06d5, 0x06d5, 0x06f0, + 0x0705, 0x0705, 0x0720, 0x072c, 0x072c, 0x0748, 0x0748, 0x0763, + 0x0763, 0x0763, 0x0763, 0x0763, 0x0772, 0x0772, 0x0781, 0x0794, + 0x07a3, 0x07b5, 0x07b5, 0x07d0, 0x07d0, 0x07d0, 0x07f8, 0x080e, + 0x080e, 0x080e, 0x0839, 0x0851, 0x087f, 0x087f, 0x0891, 0x08af, + // Entry 80 - BF + 0x08be, 0x08d0, 0x08df, 0x08df, 0x08fa, 0x091c, 0x092e, 0x092e, + 0x092e, 0x092e, 0x0943, 0x0943, 0x0955, 0x097d, 0x098f, 0x09c3, + 0x09eb, 0x0a10, 0x0a28, 0x0a28, 0x0a38, 0x0a55, 0x0a61, 0x0a61, + 0x0a61, 0x0a73, 0x0a88, 0x0aa0, 0x0ab5, 0x0ac1, 0x0aca, 0x0adf, + 0x0adf, 0x0af7, 0x0b00, 0x0b22, 0x0b22, 0x0b22, 0x0b44, 0x0b8e, + 0x0b94, 0x0ba6, 0x0ba6, 0x0ba6, 0x0ba6, 0x0bb8, 0x0bbe, 0x0bf1, }, }, { // bs - "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" + - "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pi" + - "smobramansko pismobrajevo pismobuginsko pismobuhidsko pismočakmansko" + - " pismoUjedinjeni kanadski aboridžinski silabicikarijsko pismočamsko " + - "pismočerokicirt pismokoptičko pismokiparsko pismoćirilicaStarosloven" + - "ska crkvena ćirilicadevanagaridezeretegipatsko narodno pismoegipatsk" + - "o hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khuts" + - "uri pismogruzijsko pismoglagoljicagotikagrčko pismogudžarati pismogu" + - "rmuki pismohangul pismohan pismohanuno pismopojednostavljeno hansko " + - "pismotradicionalno hansko pismohebrejsko pismohiraganapahawh hmong p" + - "ismoKatakana ili HiraganaStaromađarsko pismoinduško ismostaro italsk" + - "o pismojavansko pismojapansko pismokajah li pismokatakanakarošti pis" + - "mokmersko pismokanada pismokorejsko pismokaićansko pismolanna pismol" + - "aosko pismolatinica (fraktur varijanta)galska latinicalatinicalepča " + - "pismolimbu pismolinearno A pismolinearno B pismolisijsko pismolidijs" + - "ko pismomandeansko pismomanihejsko pismomajanski hijeroglifimeroitik" + - " pismomalajalam pismomongolsko pismomesečevo pismomeitei majek pismo" + - "mijanmarsko pismon’ko pismoogham pismool čiki pismoorkhon pismoorija" + - " pismoosmanja pismostaro permiksko pismophags-pa pismopisani pahlavi" + - "psalter pahlavipahlavi pismofeničansko pismopolard fonetsko pismopis" + - "ani partianrejang pismorongorongo pismorunsko pismosamaritansko pism" + - "osarati pismosauraštra pismoznakovno pismošavian pismosinhala pismos" + - "iloti nagri pismosirijsko pismosirijsko estrangelo pismozapadnosirij" + - "sko pismopismo istočne Sirijetagbanva pismotai le pismonovo tai lue " + - "pismotamilsko pismotai viet pismotelugu pismotengvar pismotifinag pi" + - "smotagalogtana pismotajlandsko pismotibetansko pismougaritsko pismov" + - "ai pismovidljivi govorstaropersijsko pismosumersko-akadsko kuneiform" + - " pismoji pismonasledno pismomatematička notacijasimbolinepisani jezi" + - "kzajedničko pismonepoznato pismo", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, 0x0046, - 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x0082, 0x0090, 0x009f, - 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, 0x011d, 0x0124, - 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, 0x0185, 0x0185, - 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, 0x0200, 0x020a, - 0x0210, 0x0210, 0x021c, 0x022c, 0x0239, 0x0245, 0x024e, 0x025a, - 0x0277, 0x0291, 0x0291, 0x02a0, 0x02a8, 0x02a8, 0x02ba, 0x02cf, - 0x02e3, 0x02f0, 0x0303, 0x0311, 0x031f, 0x031f, 0x032d, 0x0335, - // Entry 40 - 7F - 0x0343, 0x0350, 0x0350, 0x035c, 0x036a, 0x036a, 0x037a, 0x0385, - 0x0391, 0x03ad, 0x03bc, 0x03c4, 0x03d0, 0x03db, 0x03eb, 0x03fb, - 0x03fb, 0x03fb, 0x0409, 0x0417, 0x0417, 0x0427, 0x0437, 0x044b, - 0x044b, 0x044b, 0x0459, 0x0468, 0x0468, 0x0477, 0x0486, 0x0486, - 0x0498, 0x0498, 0x04a9, 0x04a9, 0x04a9, 0x04a9, 0x04b5, 0x04b5, - 0x04c0, 0x04ce, 0x04da, 0x04e5, 0x04f2, 0x04f2, 0x04f2, 0x0507, - 0x0515, 0x0523, 0x0532, 0x053f, 0x0550, 0x0565, 0x0573, 0x057f, - 0x058f, 0x059b, 0x05ad, 0x05b9, 0x05b9, 0x05c9, 0x05d7, 0x05e4, - // Entry 80 - BF - 0x05e4, 0x05e4, 0x05e4, 0x05f1, 0x05f1, 0x05f1, 0x0603, 0x0611, - 0x062a, 0x063f, 0x0654, 0x0662, 0x0662, 0x066e, 0x0680, 0x068e, - 0x068e, 0x069c, 0x06a8, 0x06b5, 0x06c2, 0x06c9, 0x06d3, 0x06e3, - 0x06f3, 0x06f3, 0x0702, 0x070b, 0x0719, 0x0719, 0x0719, 0x072d, - 0x074d, 0x0755, 0x0763, 0x0778, 0x0778, 0x077f, 0x078d, 0x079e, - 0x07ad, + "arapsko pismoimperijsko aramejsko pismoarmensko pismoavestansko pismobal" + + "ijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pis" + + "mobramansko pismobrajevo pismobuginsko pismobuhidsko pismočakmansko " + + "pismoUjedinjeni kanadski aboridžinski silabicikarijsko pismočamsko p" + + "ismočerokicirt pismokoptičko pismokiparsko pismoćirilicaStaroslovens" + + "ka crkvena ćirilicadevanagari pismodezeretegipatsko narodno pismoegi" + + "patsko hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko " + + "khutsuri pismogruzijsko pismoglagoljicagotikagrčko pismogudžarati pi" + + "smogurmuki pismohanb pismohangul pismohan pismohanuno pismopojednost" + + "avljeno han pismotradicionalno han pismohebrejsko pismohiraganapahaw" + + "h hmong pismokatakana ili hiraganaStaromađarsko pismoinduško ismosta" + + "ro italsko pismojamojavansko pismojapansko pismokajah li pismokataka" + + "nakarošti pismokmersko pismokanada pismokorejsko pismokaićansko pism" + + "olanna pismolaosko pismolatinica (fraktur varijanta)galska latinical" + + "atinicalepča pismolimbu pismolinearno A pismolinearno B pismolisijsk" + + "o pismolidijsko pismomandeansko pismomanihejsko pismomajanski hijero" + + "glifimeroitik pismomalajalamsko pismomongolsko pismomesečevo pismome" + + "itei majek pismomijanmarsko pismon’ko pismoogham pismool čiki pismoo" + + "rkhon pismoorija pismoosmanja pismostaro permiksko pismophags-pa pis" + + "mopisani pahlavipsalter pahlavipahlavi pismofeničansko pismopolard f" + + "onetsko pismopisani partianrejang pismorongorongo pismorunsko pismos" + + "amaritansko pismosarati pismosauraštra pismoznakovno pismošavian pis" + + "mosinhala pismosiloti nagri pismosirijsko pismosirijsko estrangelo p" + + "ismozapadnosirijsko pismopismo istočne Sirijetagbanva pismotai le pi" + + "smonovo tai lue pismotamilsko pismotai viet pismotelugu pismotengvar" + + " pismotifinag pismotagalogtana pismotajlandsko pismotibetansko pismo" + + "ugaritsko pismovai pismovidljivi govorstaropersijsko pismosumersko-a" + + "kadsko kuneiform pismoji pismonasledno pismomatematička notacijaemoj" + + "i sličicesimbolinepisani jezikzajedničko pismonepoznato pismo", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0035, + 0x0045, 0x0053, 0x0053, 0x0053, 0x005e, 0x006d, 0x006d, 0x0081, + 0x008f, 0x009e, 0x00ab, 0x00b9, 0x00c7, 0x00d7, 0x0101, 0x010f, + 0x011c, 0x0123, 0x012d, 0x013c, 0x014a, 0x0153, 0x0173, 0x0183, + 0x018a, 0x018a, 0x01a1, 0x01bb, 0x01d0, 0x01d0, 0x01de, 0x01f6, + 0x0205, 0x020f, 0x0215, 0x0215, 0x0221, 0x0231, 0x023e, 0x0248, + 0x0254, 0x025d, 0x0269, 0x0283, 0x029a, 0x029a, 0x02a9, 0x02b1, + 0x02b1, 0x02c3, 0x02d8, 0x02ec, 0x02f9, 0x030c, 0x0310, 0x031e, + // Entry 40 - 7F + 0x032c, 0x032c, 0x033a, 0x0342, 0x0350, 0x035d, 0x035d, 0x0369, + 0x0377, 0x0377, 0x0387, 0x0392, 0x039e, 0x03ba, 0x03c9, 0x03d1, + 0x03dd, 0x03e8, 0x03f8, 0x0408, 0x0408, 0x0408, 0x0416, 0x0424, + 0x0424, 0x0434, 0x0444, 0x0444, 0x0458, 0x0458, 0x0458, 0x0466, + 0x0478, 0x0478, 0x0487, 0x0496, 0x0496, 0x04a8, 0x04a8, 0x04b9, + 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04c5, 0x04c5, 0x04d0, 0x04de, + 0x04ea, 0x04f5, 0x04f5, 0x0502, 0x0502, 0x0502, 0x0517, 0x0525, + 0x0533, 0x0542, 0x054f, 0x0560, 0x0575, 0x0583, 0x058f, 0x059f, + // Entry 80 - BF + 0x05ab, 0x05bd, 0x05c9, 0x05c9, 0x05d9, 0x05e7, 0x05f4, 0x05f4, + 0x05f4, 0x05f4, 0x0601, 0x0601, 0x0601, 0x0613, 0x0621, 0x063a, + 0x064f, 0x0664, 0x0672, 0x0672, 0x067e, 0x0690, 0x069e, 0x069e, + 0x06ac, 0x06b8, 0x06c5, 0x06d2, 0x06d9, 0x06e3, 0x06f3, 0x0703, + 0x0703, 0x0712, 0x071b, 0x0729, 0x0729, 0x0729, 0x073d, 0x075d, + 0x0765, 0x0773, 0x0788, 0x0796, 0x079d, 0x07ab, 0x07bc, 0x07cb, }, }, { // bs-Cyrl @@ -23206,51 +26713,51 @@ var scriptHeaders = [220]header{ "утсури писмогрузијско писмоглагољицаГотикагрчко писмогујарати писмо" + "гурмуки писмохангулханханунопоједностављени хантрадиционални ханхеб" + "рејско писмоХираганапахав хмонг писмоКатакана или Хираганастаромађа" + - "рско писмоиндушко писмостари италикјаванско писмојапанско писмокаја" + - "х-ли писмоКатаканакарошти писмокмерско писмоканнада писмокорејско п" + - "исмокаитиланна писмолаошко писмолатиница (фрактур варијанта)галска " + - "латиницаЛатиницалепча писмолимбу писмолинеарно А писмолинеарно Б пи" + - "смолисијско писмолидијско писмомандеанско писмоманихејско писмомаја" + - "нски хијероглифимероитик писмомалајалам писмомонголско писмомесечев" + - "о писмомеитеи мајек писмомијанмарско писмон’ко писмоогамско писмоол" + - " чики писмоорконско писмооријанско писмоосмањанско писмостаро пермик" + - "ско писмопагс-па писмописани пахлавипсалтер пахлавипахлави писмоФен" + - "ичанско писмопоралд фонетско писмописани партианрејанг писморонгоро" + - "нго писморунско писмосамаританско писмосарати писмосаураштра писмоз" + - "наковно писмошавијанско писмосинхала писмосилоти нагри писмосиријск" + - "о писмосиријско естрангело писмозападносиријско писмописмо источне " + - "Сиријетагбанва писмотаи ле писмонови таи луетамилско писмотаи виет " + - "писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмотајлан" + - "дско писмотибетанско писмоугаритско писмоваи писмовидљиви говорстар" + - "оперсијско писмосумерско-акадско кунеиформ писмоји писмонаследно пи" + - "смоматематичка нотацијасимболиНеписани језикзаједничко писмоНепозна" + - "то или неважеће писмо", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, 0x0087, - 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00f9, 0x0114, 0x0131, - 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, 0x021a, 0x0226, - 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, 0x02dd, 0x02dd, - 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, 0x03ca, 0x03dc, - 0x03e8, 0x03e8, 0x03fd, 0x0418, 0x0431, 0x043d, 0x0443, 0x044f, - 0x0474, 0x0495, 0x0495, 0x04b2, 0x04c2, 0x04c2, 0x04e2, 0x050a, - 0x052f, 0x0548, 0x055f, 0x057a, 0x0595, 0x0595, 0x05af, 0x05bf, - // Entry 40 - 7F - 0x05d8, 0x05f1, 0x05f1, 0x060a, 0x0625, 0x0625, 0x062f, 0x0644, - 0x065b, 0x068f, 0x06ac, 0x06bc, 0x06d1, 0x06e6, 0x0704, 0x0722, - 0x0722, 0x0722, 0x073d, 0x0758, 0x0758, 0x0777, 0x0796, 0x07bd, - 0x07bd, 0x07bd, 0x07d8, 0x07f5, 0x07f5, 0x0812, 0x082d, 0x082d, - 0x084f, 0x084f, 0x0870, 0x0870, 0x0870, 0x0870, 0x0884, 0x0884, - 0x089d, 0x08b5, 0x08d0, 0x08ed, 0x090c, 0x090c, 0x090c, 0x0934, - 0x094c, 0x0967, 0x0984, 0x099d, 0x09bc, 0x09e4, 0x09ff, 0x0a16, - 0x0a35, 0x0a4c, 0x0a6f, 0x0a86, 0x0a86, 0x0aa3, 0x0abe, 0x0add, - // Entry 80 - BF - 0x0add, 0x0add, 0x0add, 0x0af6, 0x0af6, 0x0af6, 0x0b18, 0x0b33, - 0x0b63, 0x0b8c, 0x0bb2, 0x0bcd, 0x0bcd, 0x0be3, 0x0bf9, 0x0c14, - 0x0c14, 0x0c2e, 0x0c45, 0x0c5e, 0x0c77, 0x0c85, 0x0c9a, 0x0cb9, - 0x0cd8, 0x0cd8, 0x0cf5, 0x0d06, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d46, - 0x0d83, 0x0d92, 0x0dad, 0x0dd4, 0x0dd4, 0x0de2, 0x0dfd, 0x0e1c, - 0x0e51, + "рско писмоиндушко писмостари италикЏамојаванско писмојапанско писмо" + + "кајах-ли писмоКатаканакарошти писмокмерско писмоканнада писмокорејс" + + "ко писмокаитиланна писмолаошко писмолатиница (фрактур варијанта)гал" + + "ска латиницаЛатиницалепча писмолимбу писмолинеарно А писмолинеарно " + + "Б писмолисијско писмолидијско писмомандеанско писмоманихејско писмо" + + "мајански хијероглифимероитик писмомалајалам писмомонголско писмомес" + + "ечево писмомеитеи мајек писмомијанмарско писмон’ко писмоогамско пис" + + "моол чики писмоорконско писмооријанско писмоосмањанско писмостаро п" + + "ермикско писмопагс-па писмописани пахлавипсалтер пахлавипахлави пис" + + "моФеничанско писмопоралд фонетско писмописани партианрејанг писморо" + + "нгоронго писморунско писмосамаританско писмосарати писмосаураштра п" + + "исмознаковно писмошавијанско писмосинхала писмосилоти нагри писмоси" + + "ријско писмосиријско естрангело писмозападносиријско писмописмо ист" + + "очне Сиријетагбанва писмотаи ле писмонови таи луетамилско писмотаи " + + "виет писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмот" + + "ајландско писмотибетанско писмоугаритско писмоваи писмовидљиви гово" + + "рстароперсијско писмосумерско-акадско кунеиформ писмоји писмонаслед" + + "но писмоматематичка нотацијасимболиНеписани језикзаједничко писмоНе" + + "познато или неважеће писмо", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, + 0x0087, 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00d4, 0x00f9, + 0x0114, 0x0131, 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, + 0x021a, 0x0226, 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, + 0x02dd, 0x02dd, 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, + 0x03ca, 0x03dc, 0x03e8, 0x03e8, 0x03fd, 0x0418, 0x0431, 0x0431, + 0x043d, 0x0443, 0x044f, 0x0474, 0x0495, 0x0495, 0x04b2, 0x04c2, + 0x04c2, 0x04e2, 0x050a, 0x052f, 0x0548, 0x055f, 0x0567, 0x0582, + // Entry 40 - 7F + 0x059d, 0x059d, 0x05b7, 0x05c7, 0x05e0, 0x05f9, 0x05f9, 0x0612, + 0x062d, 0x062d, 0x0637, 0x064c, 0x0663, 0x0697, 0x06b4, 0x06c4, + 0x06d9, 0x06ee, 0x070c, 0x072a, 0x072a, 0x072a, 0x0745, 0x0760, + 0x0760, 0x077f, 0x079e, 0x079e, 0x07c5, 0x07c5, 0x07c5, 0x07e0, + 0x07fd, 0x07fd, 0x081a, 0x0835, 0x0835, 0x0857, 0x0857, 0x0878, + 0x0878, 0x0878, 0x0878, 0x0878, 0x088c, 0x088c, 0x08a5, 0x08bd, + 0x08d8, 0x08f5, 0x08f5, 0x0914, 0x0914, 0x0914, 0x093c, 0x0954, + 0x096f, 0x098c, 0x09a5, 0x09c4, 0x09ec, 0x0a07, 0x0a1e, 0x0a3d, + // Entry 80 - BF + 0x0a54, 0x0a77, 0x0a8e, 0x0a8e, 0x0aab, 0x0ac6, 0x0ae5, 0x0ae5, + 0x0ae5, 0x0ae5, 0x0afe, 0x0afe, 0x0afe, 0x0b20, 0x0b3b, 0x0b6b, + 0x0b94, 0x0bba, 0x0bd5, 0x0bd5, 0x0beb, 0x0c01, 0x0c1c, 0x0c1c, + 0x0c36, 0x0c4d, 0x0c66, 0x0c7f, 0x0c8d, 0x0ca2, 0x0cc1, 0x0ce0, + 0x0ce0, 0x0cfd, 0x0d0e, 0x0d27, 0x0d27, 0x0d27, 0x0d4e, 0x0d8b, + 0x0d9a, 0x0db5, 0x0ddc, 0x0ddc, 0x0dea, 0x0e05, 0x0e24, 0x0e59, }, }, { // ca @@ -23263,92 +26770,96 @@ var scriptHeaders = [220]header{ "гтийнхираганаяпонийнкатаканакхмерийнканнадакорейнлаоссийнлатинанмал" + "аялийнмонголийнмьянманийнорисингалхойнтамилхойнтелугутаанатайнтибет" + "хойнсимволашйоза доцумассара а тӀеэцнадоьвзуш доцу йоза", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0044, 0x0044, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, 0x0094, 0x0094, - 0x0094, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00d2, 0x00de, 0x00de, - 0x00f3, 0x0110, 0x0110, 0x011e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x013c, 0x013c, 0x013c, 0x014c, - // Entry 40 - 7F - 0x014c, 0x015c, 0x015c, 0x016a, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0186, 0x0186, 0x0186, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0034, + 0x0044, 0x0044, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x0076, + 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, + 0x0094, 0x0094, 0x0094, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00c4, + 0x00d2, 0x00de, 0x00de, 0x00f3, 0x0110, 0x0110, 0x011e, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + // Entry 40 - 7F + 0x013c, 0x013c, 0x013c, 0x014c, 0x014c, 0x015c, 0x015c, 0x016a, + 0x0176, 0x0176, 0x0176, 0x0176, 0x0186, 0x0186, 0x0186, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, - 0x0194, 0x0194, 0x0194, 0x01a6, 0x01a6, 0x01b8, 0x01b8, 0x01b8, - 0x01b8, 0x01b8, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, - 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, + 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, + 0x01a6, 0x01a6, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01cc, + 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, + 0x01cc, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, // Entry 80 - BF - 0x01d2, 0x01d2, 0x01d2, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f8, - 0x01f8, 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204, 0x020e, 0x0216, + 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, + 0x01d2, 0x01d2, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f8, 0x01f8, + 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204, 0x020e, 0x0216, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0238, 0x0249, 0x0269, - 0x0289, + 0x0228, 0x0228, 0x0228, 0x0228, 0x0238, 0x0249, 0x0269, 0x0289, }, }, {}, // cgg { // chr - "ᎡᎳᏈᎩᏣᎳᎩᏲᏂᎢ ᏗᎪᏪᎵᎠᎯᏗᎨ ᏓᎶᏂᎨᎤᏦᏍᏗ ᏓᎶᏂᎨᎳᏗᎾᏄᏬᎵᏍᏛᎾ ᎠᏍᏓᏩᏛᏍᏙᏗ", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, - 0x0015, 0x0015, 0x0015, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x0044, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - // Entry 40 - 7F - 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - 0x005d, 0x005d, 0x005d, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - // Entry 80 - BF - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0091, + "ᎡᎳᏈᎩᎠᎳᎻᎠᏂᏇᏂᎦᎠᏆᏉᎼᏬᏗᏂᎨᏫ ᎤᏃᏪᎶᏙᏗᏣᎳᎩᏲᏂᎢ ᏗᎪᏪᎵᏕᏫᎾᎦᎵᎢᏗᏯᏈᎩᏦᏥᎠᏂᎪᎢᎫᏣᎳᏘᎬᎹᎩᎭᏂ-ᏆᏉᎼᏬᎭᏂᎫ" + + "ᎵᎭᏂᎠᎯᏗᎨ ᎭᏂᎤᏦᏍᏗ ᎭᏂᎠᏂᏈᎵᎯᎳᎦᎾᏣᏩᏂᏏ ᏧᏃᏴᎩᏣᎼᏣᏆᏂᏏᎧᏔᎧᎾᎩᎻᎷᎧᎾᏓᎪᎵᎠᏂᎳᎣᎳᏘᏂᎹᎳᏯᎳᎻᎹᏂ" + + "ᎪᎵᎠᏂᎹᎡᏂᎹᎳᎣᏗᎠᏏᏅᎭᎳᏔᎻᎵᏖᎷᎦᏔᎠᎾᏔᏱ ᏔᏯᎴᏂᏘᏇᏔᏂᎠᏰᎦᎴᏴᏫᏍᎩ ᎠᎤᏓᏗᏍᏙᏗᎡᎼᏥᏗᎬᏟᎶᏍᏙᏗᎪᏪᎳᏅ" + + " ᏂᎨᏒᎾᏯᏃᏉ ᏱᎬᏍᏛᏭᏄᏬᎵᏍᏛᎾ ᎠᏍᏓᏩᏛᏍᏙᏗ", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0027, 0x0027, 0x0027, + 0x0033, 0x0033, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x005b, 0x005b, 0x005b, 0x005b, 0x0071, 0x0071, 0x0080, + 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x008f, 0x008f, + 0x009b, 0x009b, 0x009b, 0x009b, 0x00a1, 0x00ad, 0x00b6, 0x00c9, + 0x00d5, 0x00db, 0x00db, 0x00ee, 0x0101, 0x0101, 0x010d, 0x0119, + 0x0119, 0x0119, 0x0132, 0x0132, 0x0132, 0x0132, 0x0138, 0x0138, + // Entry 40 - 7F + 0x0144, 0x0144, 0x0144, 0x0150, 0x0150, 0x0159, 0x0159, 0x0162, + 0x016e, 0x016e, 0x016e, 0x016e, 0x0174, 0x0174, 0x0174, 0x017d, + 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, + 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, + 0x018c, 0x018c, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x01ad, + 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, + 0x01ad, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, + 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, + // Entry 80 - BF + 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, + 0x01b6, 0x01b6, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, + 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01cb, 0x01cb, + 0x01cb, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01dd, 0x01f0, 0x01fc, + 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, + 0x01fc, 0x01fc, 0x022a, 0x0233, 0x0248, 0x0261, 0x027a, 0x02a5, }, }, { // ckb "عەرەبیئەرمەنیبەنگالیبۆپۆمۆفۆبرەیلسریلیکدەڤەناگەریئەتیۆپیکگورجییۆنانیگوجە" + "راتیگورموکھیھانگولهیبرێھیراگاناژاپۆنیکاتاکاناخمێریکەنەداکۆریاییلاول" + "اتینیمالایالاممەنگۆلیمیانمارئۆریاسینھالاتامیلیتیلوگوتانەتایلەندی", - []uint16{ // 152 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x0028, 0x0028, 0x0038, 0x0038, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x004e, 0x004e, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0072, 0x0072, 0x007c, 0x007c, - 0x007c, 0x007c, 0x0088, 0x0098, 0x00a8, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00be, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00da, 0x00da, 0x00da, 0x00ea, - // Entry 40 - 7F - 0x00ea, 0x00f4, 0x00f4, 0x0100, 0x010e, 0x010e, 0x010e, 0x010e, - 0x0114, 0x0114, 0x0114, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + []uint16{ // 159 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0028, 0x0028, 0x0028, + 0x0038, 0x0038, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x004e, 0x004e, 0x0062, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0072, 0x0072, + 0x007c, 0x007c, 0x007c, 0x007c, 0x0088, 0x0098, 0x00a8, 0x00a8, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00be, 0x00ce, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + // Entry 40 - 7F + 0x00da, 0x00da, 0x00da, 0x00ea, 0x00ea, 0x00f4, 0x00f4, 0x0100, + 0x010e, 0x010e, 0x010e, 0x010e, 0x0114, 0x0114, 0x0114, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0132, 0x0132, 0x0140, 0x0140, 0x0140, - 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x014e, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, + 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + 0x0132, 0x0132, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, 0x014e, + 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, + 0x014e, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, // Entry 80 - BF - 0x0158, 0x0158, 0x0158, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0172, - 0x0172, 0x0172, 0x017e, 0x017e, 0x017e, 0x017e, 0x0186, 0x0196, + 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, + 0x0158, 0x0158, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, + 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0172, 0x0172, + 0x0172, 0x017e, 0x017e, 0x017e, 0x017e, 0x0186, 0x0196, }, }, { // cs @@ -23357,37 +26868,37 @@ var scriptHeaders = [220]header{ }, { // cy "ArabaiddArmenaiddBengalaiddBopomofoBrailleCyriligDevanagariEthiopigGeorg" + - "aiddGroegaiddGwjarataiddGwrmwciHangulHanHan symledigHan traddodiadol" + - "HebreigHiraganaJapaneaiddCatacanaChmeraiddCanaraiddCoreaiddLaoaiddLl" + - "adinMalayalamaiddMongolaiddMyanmaraiddOgamOrïaiddSinhanaiddTamilaidd" + - "TeluguThaanaTaiTibetaiddSymbolauAnysgrifenedigCyffredinSgript anhysb" + - "ys", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x001b, 0x001b, 0x0023, 0x0023, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x004c, 0x004c, - 0x004c, 0x004c, 0x0055, 0x0060, 0x0067, 0x006d, 0x0070, 0x0070, - 0x007c, 0x008c, 0x008c, 0x0093, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x00a5, 0x00a5, 0x00a5, 0x00ad, - // Entry 40 - 7F - 0x00ad, 0x00b6, 0x00b6, 0x00bf, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, - 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, - 0x00d4, 0x00d4, 0x00d4, 0x00e1, 0x00e1, 0x00eb, 0x00eb, 0x00eb, - 0x00eb, 0x00eb, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - 0x00fa, 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - // Entry 80 - BF - 0x0102, 0x0102, 0x0102, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0115, - 0x0115, 0x0115, 0x011b, 0x011b, 0x011b, 0x011b, 0x0121, 0x0124, - 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, - 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x0135, 0x0143, 0x014c, - 0x015b, + "aiddGroegaiddGwjarataiddGwrmwciHanbHangulHanHan symledigHan traddodi" + + "adolHebreigHiraganaSyllwyddor JapaneaiddJamoJapaneaiddCatacanaChmera" + + "iddCanaraiddCoreaiddLaoaiddLladinMalayalamaiddMongolaiddMyanmaraiddO" + + "gamOrïaiddSinhanaiddTamilaiddTeluguThaanaTaiTibetaiddNodiant Mathema" + + "tegolEmojiSymbolauAnysgrifenedigCyffredinSgript anhysbys", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001b, 0x001b, 0x001b, + 0x0023, 0x0023, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0031, 0x0031, 0x003b, + 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, + 0x004c, 0x004c, 0x004c, 0x004c, 0x0055, 0x0060, 0x0067, 0x006b, + 0x0071, 0x0074, 0x0074, 0x0080, 0x0090, 0x0090, 0x0097, 0x009f, + 0x009f, 0x009f, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b8, 0x00b8, + // Entry 40 - 7F + 0x00c2, 0x00c2, 0x00c2, 0x00ca, 0x00ca, 0x00d3, 0x00d3, 0x00dc, + 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00eb, 0x00eb, 0x00eb, 0x00f1, + 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, + 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, + 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0113, + 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0117, 0x0117, + 0x0117, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + // Entry 80 - BF + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, + 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0132, 0x0132, + 0x0132, 0x0138, 0x0138, 0x0138, 0x0138, 0x013e, 0x0141, 0x014a, + 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, + 0x014a, 0x014a, 0x015e, 0x0163, 0x016b, 0x0179, 0x0182, 0x0191, }, }, { // da @@ -23399,7 +26910,9 @@ var scriptHeaders = [220]header{ deScriptStr, deScriptIdx, }, + {}, // de-AT {}, // de-CH + {}, // de-LU {}, // dje { // dsb "arabskiarmeńskibengalskibopomofobraillowe pismokyriliskidevanagarietiopi" + @@ -23407,32 +26920,32 @@ var scriptHeaders = [220]header{ "onalne hanhebrejskihiraganajapańskikatakanakhmerkannadakorejskilaosk" + "iłatyńskimalayalamskimongolskiburmaskioriyasinghaleskitamilskitelugu" + "thaanathaiskitibetskisymbolebźez pismapowšyknenjeznate pismo", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0021, 0x0021, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0039, 0x0039, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004c, 0x004c, 0x0055, 0x0055, - 0x0055, 0x0055, 0x005e, 0x0066, 0x006e, 0x0074, 0x0077, 0x0077, - 0x0086, 0x0097, 0x0097, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b1, 0x00b1, 0x00b1, 0x00b9, - // Entry 40 - 7F - 0x00b9, 0x00be, 0x00be, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00d3, 0x00d3, 0x00d3, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0019, + 0x0021, 0x0021, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, + 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0039, 0x0039, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004c, 0x004c, + 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x0066, 0x006e, 0x006e, + 0x0074, 0x0077, 0x0077, 0x0086, 0x0097, 0x0097, 0x00a0, 0x00a8, + 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, + // Entry 40 - 7F + 0x00b1, 0x00b1, 0x00b1, 0x00b9, 0x00b9, 0x00be, 0x00be, 0x00c5, + 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d3, 0x00d3, 0x00d3, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00f2, - 0x00f2, 0x00f2, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00fa, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, + 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, + 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00fa, + 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, + 0x00fa, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, // Entry 80 - BF - 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, - 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0112, - 0x0112, 0x0112, 0x0118, 0x0118, 0x0118, 0x0118, 0x011e, 0x0125, + 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, + 0x00ff, 0x00ff, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0112, 0x0112, + 0x0112, 0x0118, 0x0118, 0x0118, 0x0118, 0x011e, 0x0125, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, - 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x0134, 0x013f, 0x0148, - 0x0156, + 0x012d, 0x012d, 0x012d, 0x012d, 0x0134, 0x013f, 0x0148, 0x0156, }, }, {}, // dua @@ -23447,32 +26960,32 @@ var scriptHeaders = [220]header{ "ུསོག་པོའི་ཡིག་གུབར་མིས་ཡིག་གུཨོ་རི་ཡ་ཡིག་གུསིན་ཧ་ལ་རིག་གུཏ་མིལ་ཡིག" + "་གུཏེ་ལུ་གུ་ཡིག་གུཐཱ་ན་ཡིག་གུཐཱའི་ཡིག་གུང་བཅས་ཀྱི་ཡིག་གུམཚན་རྟགསཡི" + "ག་ཐོག་མ་བཀོདཔསྤྱིཡིགངོ་མ་ཤེས་པའི་ཡི་གུ", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x002d, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x008a, 0x008a, 0x00c3, 0x00c3, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x010b, 0x010b, 0x0141, 0x0141, 0x0141, - 0x0141, 0x0141, 0x0141, 0x0141, 0x017d, 0x017d, 0x01ad, 0x01ad, - 0x01ad, 0x01ad, 0x01ce, 0x01fe, 0x0231, 0x025b, 0x0282, 0x0282, - 0x02b6, 0x02ea, 0x02ea, 0x0311, 0x035c, 0x035c, 0x035c, 0x035c, - 0x035c, 0x035c, 0x035c, 0x035c, 0x0380, 0x0380, 0x0380, 0x03c8, - // Entry 40 - 7F - 0x03c8, 0x03ef, 0x03ef, 0x0413, 0x0443, 0x0443, 0x0443, 0x0443, - 0x0461, 0x0461, 0x0461, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x002d, 0x0066, + 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x008a, 0x008a, 0x008a, + 0x00c3, 0x00c3, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, + 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x010b, 0x010b, 0x0141, + 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x017d, 0x017d, + 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ce, 0x01fe, 0x0231, 0x0231, + 0x025b, 0x0282, 0x0282, 0x02b6, 0x02ea, 0x02ea, 0x0311, 0x035c, + 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, + // Entry 40 - 7F + 0x0380, 0x0380, 0x0380, 0x03c8, 0x03c8, 0x03ef, 0x03ef, 0x0413, + 0x0443, 0x0443, 0x0443, 0x0443, 0x0461, 0x0461, 0x0461, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, - 0x0488, 0x0488, 0x0488, 0x04b5, 0x04b5, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, - 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, + 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, + 0x04b5, 0x04b5, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x0509, + 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, + 0x0509, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, // Entry 80 - BF - 0x0533, 0x0533, 0x0533, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0581, - 0x0581, 0x0581, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05cf, 0x05f0, + 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, + 0x0533, 0x0533, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, + 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0581, 0x0581, + 0x0581, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05cf, 0x05f0, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, - 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0638, 0x0665, 0x067a, - 0x06b0, + 0x0620, 0x0620, 0x0620, 0x0620, 0x0638, 0x0665, 0x067a, 0x06b0, }, }, {}, // ebu @@ -23486,32 +26999,32 @@ var scriptHeaders = [220]header{ "yagbeŋɔŋlɔsinhalagbeŋɔŋlɔtamilgbeŋɔŋlɔtelegugbeŋɔŋlɔthaanagbeŋɔŋlɔta" + "igbeŋɔŋlɔtibetgbeŋɔŋlɔŋɔŋlɔdzesiwogbemaŋlɔgbeŋɔŋlɔ bɔbɔgbeŋɔŋlɔ many" + "a", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0038, 0x0038, 0x004b, 0x004b, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x0072, 0x0072, 0x0088, 0x0088, 0x0088, - 0x0088, 0x0088, 0x0088, 0x0088, 0x009c, 0x009c, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00bf, 0x00d4, 0x00e8, 0x00fa, 0x0109, 0x0109, - 0x0119, 0x012e, 0x012e, 0x013f, 0x0153, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x0153, 0x0153, 0x0167, 0x0167, 0x0167, 0x017b, - // Entry 40 - 7F - 0x017b, 0x018c, 0x018c, 0x019f, 0x01b0, 0x01b0, 0x01b0, 0x01b0, - 0x01bf, 0x01bf, 0x01bf, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0038, 0x0038, 0x0038, + 0x004b, 0x004b, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0072, 0x0072, 0x0088, + 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x009c, 0x009c, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bf, 0x00d4, 0x00e8, 0x00e8, + 0x00fa, 0x0109, 0x0109, 0x0119, 0x012e, 0x012e, 0x013f, 0x0153, + 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, + // Entry 40 - 7F + 0x0167, 0x0167, 0x0167, 0x017b, 0x017b, 0x018c, 0x018c, 0x019f, + 0x01b0, 0x01b0, 0x01b0, 0x01b0, 0x01bf, 0x01bf, 0x01bf, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01d0, 0x01e2, 0x01e2, 0x01f6, 0x01f6, 0x01f6, - 0x01f6, 0x01f6, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, - 0x0209, 0x0209, 0x0209, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, - 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, + 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, + 0x01e2, 0x01e2, 0x01f6, 0x01f6, 0x01f6, 0x01f6, 0x01f6, 0x0209, + 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, + 0x0209, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, // Entry 80 - BF - 0x021a, 0x021a, 0x021a, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, - 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x023e, - 0x023e, 0x023e, 0x0250, 0x0250, 0x0250, 0x0250, 0x0262, 0x0271, + 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, + 0x021a, 0x021a, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, + 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x023e, 0x023e, + 0x023e, 0x0250, 0x0250, 0x0250, 0x0250, 0x0262, 0x0271, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, - 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0292, 0x029c, 0x02af, - 0x02c1, + 0x0282, 0x0282, 0x0282, 0x0282, 0x0292, 0x029c, 0x02af, 0x02c1, }, }, { // el @@ -23523,9 +27036,27 @@ var scriptHeaders = [220]header{ enScriptIdx, }, {}, // en-AU - { // en-GB - enGBScriptStr, - enGBScriptIdx, + { // en-IN + "BengaliOriya", + []uint16{ // 114 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + // Entry 40 - 7F + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0007, 0x000c, + }, }, {}, // en-NZ {}, // eo @@ -23537,10 +27068,18 @@ var scriptHeaders = [220]header{ es419ScriptStr, es419ScriptIdx, }, + {}, // es-AR + {}, // es-BO {}, // es-CL + {}, // es-CO + {}, // es-CR + {}, // es-DO + {}, // es-EC + {}, // es-GT + {}, // es-HN { // es-MX "telugú", - []uint16{ // 147 elements + []uint16{ // 154 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -23562,47 +27101,57 @@ var scriptHeaders = [220]header{ // Entry 80 - BF 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, }, }, + {}, // es-NI + {}, // es-PA + {}, // es-PE + {}, // es-PR + {}, // es-PY + {}, // es-SV + {}, // es-US + {}, // es-VE { // et etScriptStr, etScriptIdx, }, { // eu "arabiarraarmeniarrabengaliarrabopomofoabrailleazirilikoadevanagariaetiop" + - "iarrageorgiarragreziarragujarateragurmukhiahangulaidazkera txinatarr" + - "aidazkera txinatar sinplifikatuaidazkera txinatar tradizionalahebree" + - "rahiraganajaponiarrakatakanakhemerarrakanadarrakorearralaosarralatin" + - "amalayalameramongoliarrabirmaniarraoriyarrasinhalatamilarrateluguarr" + - "athaanathailandiarratibetarraikurrakidatzi gabeaohikoaidazkera ezeza" + - "guna", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x0013, - 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x001e, 0x0027, 0x0027, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004d, 0x004d, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0060, 0x006a, 0x0073, 0x007a, 0x008d, 0x008d, - 0x00ac, 0x00ca, 0x00ca, 0x00d2, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00e4, 0x00e4, 0x00e4, 0x00ec, - // Entry 40 - 7F - 0x00ec, 0x00f6, 0x00f6, 0x00ff, 0x0107, 0x0107, 0x0107, 0x0107, - 0x010f, 0x010f, 0x010f, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0121, 0x0121, 0x012c, 0x012c, 0x012c, - 0x012c, 0x012c, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, - 0x0137, 0x0137, 0x0137, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + "iarrageorgiarragreziarragujarateragurmukhiahänerahangulaidazkera txi" + + "natarraidazkera txinatar sinplifikatuaidazkera txinatar tradizionala" + + "hebreerahiraganasilaba japoniarrakjamo-bihurketajaponiarrakatakanakh" + + "emerarrakanadarrakorearralaosarralatinamalayalameramongoliarrabirman" + + "iarraoriyarrasinhalatamilarrateluguarrathaanathailandiarratibetarram" + + "atematikako notazioaemotikonoaikurrakidatzi gabeaohikoaidazkera ezez" + + "aguna", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, + 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x001e, 0x001e, + 0x0027, 0x0027, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004d, 0x004d, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0060, 0x006a, 0x0073, 0x007a, + 0x0081, 0x0094, 0x0094, 0x00b3, 0x00d1, 0x00d1, 0x00d9, 0x00e1, + 0x00e1, 0x00e1, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x0101, 0x0101, + // Entry 40 - 7F + 0x010b, 0x010b, 0x010b, 0x0113, 0x0113, 0x011d, 0x011d, 0x0126, + 0x012e, 0x012e, 0x012e, 0x012e, 0x0136, 0x0136, 0x0136, 0x013c, + 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, + 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, + 0x0148, 0x0148, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x015e, + 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, + 0x015e, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, + 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, // Entry 80 - BF - 0x013f, 0x013f, 0x013f, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, - 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x014f, - 0x014f, 0x014f, 0x0159, 0x0159, 0x0159, 0x0159, 0x015f, 0x016c, - 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, - 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x017c, 0x0188, 0x018e, - 0x01a0, + 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, + 0x0166, 0x0166, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, + 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x0176, 0x0176, + 0x0176, 0x0180, 0x0180, 0x0180, 0x0180, 0x0186, 0x0193, 0x019c, + 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, + 0x019c, 0x019c, 0x01b1, 0x01bb, 0x01c2, 0x01ce, 0x01d4, 0x01e6, }, }, {}, // ewo @@ -23612,7 +27161,7 @@ var scriptHeaders = [220]header{ }, { // fa-AF "مغلی", - []uint16{ // 94 elements + []uint16{ // 99 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -23626,7 +27175,8 @@ var scriptHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0008, }, }, {}, // ff @@ -23640,42 +27190,44 @@ var scriptHeaders = [220]header{ }, { // fo "arabiskarmensktbengalibopomofoblindaskriftkyrillisktdevanagarietiopisktg" + - "eorgiansktgriksktgujaratigurmukhihangulhaneinkult hanvanligt hanhebr" + - "aiskthiraganajapansktkatakanakhmerkannadakoreansktlaolatínsktmalayal" + - "ammongolskmyanmarsktoriyasinhalatamilsktteluguthaanatailendskttibets" + - "kttekinóskrivavanligókend skrift", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x0016, 0x001e, 0x001e, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x0047, 0x0047, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0059, 0x0061, 0x0069, 0x006f, 0x0072, 0x0072, - 0x007d, 0x0088, 0x0088, 0x0091, 0x0099, 0x0099, 0x0099, 0x0099, - 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1, 0x00a9, - // Entry 40 - 7F - 0x00a9, 0x00ae, 0x00ae, 0x00b5, 0x00be, 0x00be, 0x00be, 0x00be, - 0x00c1, 0x00c1, 0x00c1, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, - 0x00e5, 0x00e5, 0x00e5, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + "eorgiansktgriksktgujaratigurmukhihanbhangulhaneinkult hanvanligt han" + + "hebraiskthiraganajapanskir stavirjamojapansktkatakanakhmerkannadakor" + + "eansktlaolatínsktmalayalammongolskmyanmarsktoriyasinhalatamilskttelu" + + "guthaanatailendskttibetsktstøddfrøðilig teknskipanemojitekinóskrivav" + + "anligókend skrift", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x0016, 0x0016, + 0x001e, 0x001e, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0047, 0x0047, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0059, 0x0061, 0x0069, 0x006d, + 0x0073, 0x0076, 0x0076, 0x0081, 0x008c, 0x008c, 0x0095, 0x009d, + 0x009d, 0x009d, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b1, 0x00b1, + // Entry 40 - 7F + 0x00b9, 0x00b9, 0x00b9, 0x00c1, 0x00c1, 0x00c6, 0x00c6, 0x00cd, + 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d9, 0x00d9, 0x00d9, 0x00e2, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + 0x00eb, 0x00eb, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x00fd, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, + 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, // Entry 80 - BF - 0x00ea, 0x00ea, 0x00ea, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, - 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f9, - 0x00f9, 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0105, 0x010f, - 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, - 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x011c, 0x0124, 0x012a, - 0x0137, + 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, + 0x0102, 0x0102, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, + 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0111, 0x0111, + 0x0111, 0x0117, 0x0117, 0x0117, 0x0117, 0x011d, 0x0127, 0x012f, + 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, + 0x012f, 0x012f, 0x014a, 0x014f, 0x0154, 0x015c, 0x0162, 0x016f, }, }, { // fr frScriptStr, frScriptIdx, }, + {}, // fr-BE { // fr-CA frCAScriptStr, frCAScriptIdx, @@ -23692,32 +27244,32 @@ var scriptHeaders = [220]header{ "iriac ocidentâlsiriac orientâltamiltelegutagalogthaanathaitibetanuga" + "riticvieri persiancuneiform sumeric-acadiccodiç pes lenghis no scrit" + "iscomuncodiç par scrituris no codificadis", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, 0x0009, - 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, 0x001a, - 0x0021, 0x0029, 0x0029, 0x0029, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x0053, 0x005a, 0x0061, 0x0085, 0x008f, 0x008f, 0x008f, - 0x009f, 0x00af, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00d4, 0x00de, - 0x00e3, 0x00e3, 0x00e8, 0x00f0, 0x00f0, 0x00f0, 0x00f3, 0x00f3, - 0x0103, 0x0113, 0x0113, 0x0118, 0x0118, 0x0118, 0x0118, 0x012b, - 0x013a, 0x013a, 0x0146, 0x014f, 0x0158, 0x0158, 0x0158, 0x0158, - // Entry 40 - 7F - 0x0158, 0x015d, 0x015d, 0x0164, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016d, 0x017a, 0x0186, 0x018b, 0x018b, 0x018b, 0x0194, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01ad, - 0x01ad, 0x01ad, 0x01ad, 0x01b6, 0x01b6, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, - 0x01c3, 0x01c3, 0x01c3, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, + 0x0009, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x0021, 0x0029, 0x0029, 0x0029, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x0053, 0x005a, 0x0061, 0x0085, 0x008f, + 0x008f, 0x008f, 0x009f, 0x00af, 0x00c4, 0x00c4, 0x00cb, 0x00cb, + 0x00d4, 0x00de, 0x00e3, 0x00e3, 0x00e8, 0x00f0, 0x00f0, 0x00f0, + 0x00f0, 0x00f3, 0x00f3, 0x0103, 0x0113, 0x0113, 0x0118, 0x0118, + 0x0118, 0x0118, 0x012b, 0x013a, 0x013a, 0x0146, 0x0146, 0x014f, + // Entry 40 - 7F + 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x015d, 0x015d, 0x0164, + 0x016a, 0x016a, 0x016a, 0x016a, 0x016d, 0x017a, 0x0186, 0x018b, + 0x018b, 0x018b, 0x0194, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, + 0x019d, 0x019d, 0x019d, 0x019d, 0x01ad, 0x01ad, 0x01ad, 0x01ad, + 0x01b6, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c3, + 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, + 0x01c3, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, - 0x01c8, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, // Entry 80 - BF - 0x01cd, 0x01cd, 0x01cd, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01da, - 0x01eb, 0x01fc, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0211, - 0x0211, 0x0211, 0x0217, 0x0217, 0x0217, 0x021e, 0x0224, 0x0228, - 0x022f, 0x022f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0244, - 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x0279, 0x027e, - 0x02a1, + 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, + 0x01cd, 0x01cd, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01da, 0x01eb, + 0x01fc, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0211, 0x0211, + 0x0211, 0x0217, 0x0217, 0x0217, 0x021e, 0x0224, 0x0228, 0x022f, + 0x022f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0244, 0x025c, + 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x0279, 0x027e, 0x02a1, }, }, { // fy @@ -23729,89 +27281,91 @@ var scriptHeaders = [220]header{ "iopyskGeorgysk KhutsuriGeorgyskGlagolityskGothyskGranthaGrieksGujara" + "tiGurmukhiHangulHanHanunooFerienfâldigd SineeskTraditjoneel SineeskH" + "ebreeuwskHiraganaAnatolyske hiërogliefenPahawh HmongKatakana of Hira" + - "ganaAldhongaarsIndusAld-italyskJavaanskJapansJurchenKayah LiKatakana" + - "KharoshthiKhmerKhojkiKannadaKoreaanskKpelleKaithiLannaLaoGotysk Laty" + - "nGaelysk LatynLatynLepchaLimbuLineair ALineair BFraserLomaLycyskLydy" + - "skMandaeansManicheaanskMayahiërogliefenMendeMeroitysk cursiefMeroïty" + - "skMalayalamMongoolsMoonMroMeiteiMyanmarAld Noard-ArabyskNabateaanskN" + - "axi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensAldpermyskP" + - "hags-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicyskPol" + - "lard-fonetyskInscriptioneel ParthyskRejangRongorongoRunicSamaritaans" + - "kSaratiAld Sûd-ArabyskSaurashtraSignWritingShavianSharadaSindhiSinha" + - "laSora SompengSoendaneeskSyloti NagriSyriacEstrangelo ArameeskWest-A" + - "rameeskEast-ArameeskTagbanwaTakriTai LeNij Tai LueTamilTangutTai Vie" + - "tTeluguTengwarTifinaghTagalogThaanaThaisTibetaanskTirhutaUgarityskVa" + - "iSichtbere spraakVarang KshitiWoleaiAldperzyskSumero-Akkadian Cuneif" + - "ormYiOergeërfdWiskundige notatieSymbolenOngeschrevenAlgemeenOnbekend" + - " schriftsysteem", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0006, 0x0006, 0x0006, 0x000d, 0x001f, 0x0026, 0x0030, - 0x0039, 0x003f, 0x0048, 0x004d, 0x0056, 0x0062, 0x006a, 0x0070, - 0x0077, 0x0080, 0x0085, 0x008b, 0x00b1, 0x00b7, 0x00bb, 0x00c3, - 0x00c8, 0x00cf, 0x00d6, 0x00df, 0x00f7, 0x0101, 0x0108, 0x011c, - 0x012d, 0x0140, 0x0157, 0x0157, 0x0160, 0x0171, 0x0179, 0x0184, - 0x018b, 0x0192, 0x0198, 0x01a0, 0x01a8, 0x01ae, 0x01b1, 0x01b8, - 0x01ce, 0x01e2, 0x01e2, 0x01ec, 0x01f4, 0x020c, 0x0218, 0x022c, - 0x0237, 0x023c, 0x0247, 0x024f, 0x0255, 0x025c, 0x0264, 0x026c, - // Entry 40 - 7F - 0x0276, 0x027b, 0x0281, 0x0288, 0x0291, 0x0297, 0x029d, 0x02a2, - 0x02a5, 0x02b1, 0x02be, 0x02c3, 0x02c9, 0x02ce, 0x02d7, 0x02e0, - 0x02e6, 0x02ea, 0x02f0, 0x02f6, 0x02f6, 0x02ff, 0x030b, 0x031c, - 0x0321, 0x0332, 0x033c, 0x0345, 0x0345, 0x034d, 0x0351, 0x0354, - 0x035a, 0x035a, 0x0361, 0x0372, 0x037d, 0x0386, 0x038c, 0x0392, - 0x0397, 0x039f, 0x03a5, 0x03a9, 0x03b0, 0x03ba, 0x03ba, 0x03c4, - 0x03cc, 0x03e2, 0x03f1, 0x03fd, 0x0406, 0x0416, 0x042d, 0x0433, - 0x043d, 0x0442, 0x044e, 0x0454, 0x0464, 0x046e, 0x0479, 0x0480, - // Entry 80 - BF - 0x0487, 0x0487, 0x048d, 0x0494, 0x04a0, 0x04ab, 0x04b7, 0x04bd, - 0x04d0, 0x04dd, 0x04ea, 0x04f2, 0x04f7, 0x04fd, 0x0508, 0x050d, - 0x0513, 0x051b, 0x0521, 0x0528, 0x0530, 0x0537, 0x053d, 0x0542, - 0x054c, 0x0553, 0x055c, 0x055f, 0x056f, 0x057c, 0x0582, 0x058c, - 0x05a5, 0x05a7, 0x05b1, 0x05c3, 0x05c3, 0x05cb, 0x05d7, 0x05df, - 0x05f6, + "ganaAldhongaarsIndusAld-italyskJamoJavaanskJapansJurchenKayah LiKata" + + "kanaKharoshthiKhmerKhojkiKannadaKoreaanskKpelleKaithiLannaLaoGotysk " + + "LatynGaelysk LatynLatynLepchaLimbuLineair ALineair BFraserLomaLycysk" + + "LydyskMandaeansManicheaanskMayahiërogliefenMendeMeroitysk cursiefMer" + + "oïtyskMalayalamMongoolsMoonMroMeiteiMyanmarAld Noard-ArabyskNabateaa" + + "nskNaxi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensAldperm" + + "yskPhags-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicys" + + "kPollard-fonetyskInscriptioneel ParthyskRejangRongorongoRunicSamarit" + + "aanskSaratiAld Sûd-ArabyskSaurashtraSignWritingShavianSharadaSindhiS" + + "inhalaSora SompengSoendaneeskSyloti NagriSyriacEstrangelo ArameeskWe" + + "st-ArameeskEast-ArameeskTagbanwaTakriTai LeNij Tai LueTamilTangutTai" + + " VietTeluguTengwarTifinaghTagalogThaanaThaisTibetaanskTirhutaUgarity" + + "skVaiSichtbere spraakVarang KshitiWoleaiAldperzyskSumero-Akkadian Cu" + + "neiformYiOergeërfdWiskundige notatieSymbolenOngeschrevenAlgemeenOnbe" + + "kend schriftsysteem", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x000d, 0x001f, 0x0026, + 0x0030, 0x0039, 0x003f, 0x0048, 0x004d, 0x0056, 0x0056, 0x0062, + 0x006a, 0x0070, 0x0077, 0x0080, 0x0085, 0x008b, 0x00b1, 0x00b7, + 0x00bb, 0x00c3, 0x00c8, 0x00cf, 0x00d6, 0x00df, 0x00f7, 0x0101, + 0x0108, 0x011c, 0x012d, 0x0140, 0x0157, 0x0157, 0x0160, 0x0171, + 0x0179, 0x0184, 0x018b, 0x0192, 0x0198, 0x01a0, 0x01a8, 0x01a8, + 0x01ae, 0x01b1, 0x01b8, 0x01ce, 0x01e2, 0x01e2, 0x01ec, 0x01f4, + 0x020c, 0x0218, 0x022c, 0x0237, 0x023c, 0x0247, 0x024b, 0x0253, + // Entry 40 - 7F + 0x0259, 0x0260, 0x0268, 0x0270, 0x027a, 0x027f, 0x0285, 0x028c, + 0x0295, 0x029b, 0x02a1, 0x02a6, 0x02a9, 0x02b5, 0x02c2, 0x02c7, + 0x02cd, 0x02d2, 0x02db, 0x02e4, 0x02ea, 0x02ee, 0x02f4, 0x02fa, + 0x02fa, 0x0303, 0x030f, 0x030f, 0x0320, 0x0325, 0x0336, 0x0340, + 0x0349, 0x0349, 0x0351, 0x0355, 0x0358, 0x035e, 0x035e, 0x0365, + 0x0376, 0x0381, 0x0381, 0x038a, 0x0390, 0x0396, 0x039b, 0x03a3, + 0x03a9, 0x03ad, 0x03ad, 0x03b4, 0x03be, 0x03be, 0x03c8, 0x03d0, + 0x03e6, 0x03f5, 0x0401, 0x040a, 0x041a, 0x0431, 0x0437, 0x0441, + // Entry 80 - BF + 0x0446, 0x0452, 0x0458, 0x0468, 0x0472, 0x047d, 0x0484, 0x048b, + 0x048b, 0x0491, 0x0498, 0x04a4, 0x04af, 0x04bb, 0x04c1, 0x04d4, + 0x04e1, 0x04ee, 0x04f6, 0x04fb, 0x0501, 0x050c, 0x0511, 0x0517, + 0x051f, 0x0525, 0x052c, 0x0534, 0x053b, 0x0541, 0x0546, 0x0550, + 0x0557, 0x0560, 0x0563, 0x0573, 0x0580, 0x0586, 0x0590, 0x05a9, + 0x05ab, 0x05b5, 0x05c7, 0x05c7, 0x05cf, 0x05db, 0x05e3, 0x05fa, }, }, { // ga - "ArabachAirméanachAivéisteachBailíochBatacachBeangálachBopomofoBrailleBui" + - "gineachButhaideachSeiricíochCoptachCipireachCoireallachDéiveanágrach" + - "Éigipteach coiteannÉigipteach cliarúilIairiglifí ÉigipteachaAetópac" + - "hSeoirseachGlagalachGotachGréagachGúisearátachGurmúcachHangalachHanH" + - "an SimplitheHan TraidisiúntaEabhrachHireagánachIairiglifí Anatólacha" + - "Siollabraí SeapánachaSean-UngárachSean-IodáilicIávachSeapánachCatacá" + - "nachCiméarachCannadachCóiréachLaosachCló GaelachLaidineachLiombúchLí" + - "neach ALíneach BFraserLiciachLidiachMahasánachMainicéasachIairiglifí" + - " MáigheachaMeindeachMailéalamachMongólachMaenmarachOghamOiríseachSea" + - "n-PheirmeachFéiníceachRúnachSamárachShawachSiolónachSiriceachTamalac" + - "hTeileagúchTifinaghTagálagachTánachTéalannachTibéadachSean-Pheirseac" + - "hDingchruthach Suiméar-AcádachNodaireacht MhatamaiticiúilSiombailíGa" + - "n ScríobhCoitiantaScript Anaithnid", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x001e, - 0x0027, 0x0027, 0x0027, 0x002f, 0x003a, 0x003a, 0x0042, 0x0042, - 0x0049, 0x0053, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069, - 0x0069, 0x0070, 0x0079, 0x0084, 0x0084, 0x0093, 0x0093, 0x0093, - 0x00a7, 0x00bc, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00e7, 0x00f0, - 0x00f6, 0x00f6, 0x00ff, 0x010d, 0x0117, 0x0120, 0x0123, 0x0123, - 0x0130, 0x0141, 0x0141, 0x0149, 0x0155, 0x016c, 0x016c, 0x0183, - 0x0191, 0x0191, 0x019f, 0x01a6, 0x01b0, 0x01b0, 0x01b0, 0x01bb, - // Entry 40 - 7F - 0x01bb, 0x01c5, 0x01c5, 0x01ce, 0x01d8, 0x01d8, 0x01d8, 0x01d8, - 0x01df, 0x01df, 0x01eb, 0x01f5, 0x01f5, 0x01fe, 0x0208, 0x0212, - 0x0218, 0x0218, 0x021f, 0x0226, 0x0231, 0x0231, 0x023e, 0x0255, - 0x025e, 0x025e, 0x025e, 0x026b, 0x026b, 0x0275, 0x0275, 0x0275, - 0x0275, 0x0275, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f, - 0x0284, 0x0284, 0x0284, 0x028e, 0x028e, 0x028e, 0x028e, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02b0, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c0, - // Entry 80 - BF - 0x02c0, 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02d3, - 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02db, - 0x02db, 0x02db, 0x02e6, 0x02e6, 0x02ee, 0x02f9, 0x0300, 0x030b, - 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0324, - 0x0343, 0x0343, 0x0343, 0x035f, 0x035f, 0x0369, 0x0375, 0x037e, - 0x038e, + "Albánach CugasachArabachAramach ImpiriúilAirméanachAivéisteachBailíochBa" + + "tacachBeangálachBopomofoBrailleBuigineachButhaideachSeiricíochCoptac" + + "hCipireachCoireallachDéiveanágrachÉigipteach coiteannÉigipteach clia" + + "rúilIairiglifí ÉigipteachaAetópachSeoirseachGlagalachGotachGréagachG" + + "úisearátachGurmúcachHan agus BopomofoHangalachHanHan SimplitheHan T" + + "raidisiúntaEabhrachHireagánachIairiglifí AnatólachaSiollabraí Seapán" + + "achaSean-UngárachSean-IodáilicSeamóIávachSeapánachCatacánachCiméarac" + + "hCannadachCóiréachLaosachCló GaelachLaidineachLiombúchLíneach ALínea" + + "ch BFraserLiciachLidiachMahasánachMainicéasachIairiglifí MáigheachaM" + + "eindeachMailéalamachMongólachMaenmarachSean-Arabach ThuaidhOghamOirí" + + "seachSean-PheirmeachFéiníceachPollard FoghrachPairtiach Inscríbhinni" + + "úilRúnachSamárachSean-Arabach TheasShawachSiolónachSiriceachTamalac" + + "hTeileagúchTifinaghTagálagachTánachTéalannachTibéadachÚgairíteachSea" + + "n-PheirseachDingchruthach Suiméar-AcádachÍsOidhreachtNodaireacht Mha" + + "tamaiticiúilEmojiSiombailíGan ScríobhCoitiantaScript Anaithnid", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0019, 0x002b, 0x0036, + 0x0042, 0x004b, 0x004b, 0x004b, 0x0053, 0x005e, 0x005e, 0x005e, + 0x0066, 0x0066, 0x006d, 0x0077, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x008d, 0x008d, 0x0094, 0x009d, 0x00a8, 0x00a8, 0x00b7, + 0x00b7, 0x00b7, 0x00cb, 0x00e0, 0x00f8, 0x00f8, 0x0101, 0x0101, + 0x010b, 0x0114, 0x011a, 0x011a, 0x0123, 0x0131, 0x013b, 0x014c, + 0x0155, 0x0158, 0x0158, 0x0165, 0x0176, 0x0176, 0x017e, 0x018a, + 0x01a1, 0x01a1, 0x01b8, 0x01c6, 0x01c6, 0x01d4, 0x01da, 0x01e1, + // Entry 40 - 7F + 0x01eb, 0x01eb, 0x01eb, 0x01f6, 0x01f6, 0x0200, 0x0200, 0x0209, + 0x0213, 0x0213, 0x0213, 0x0213, 0x021a, 0x021a, 0x0226, 0x0230, + 0x0230, 0x0239, 0x0243, 0x024d, 0x0253, 0x0253, 0x025a, 0x0261, + 0x026c, 0x026c, 0x0279, 0x0279, 0x0290, 0x0299, 0x0299, 0x0299, + 0x02a6, 0x02a6, 0x02b0, 0x02b0, 0x02b0, 0x02b0, 0x02b0, 0x02ba, + 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02d3, 0x02d3, + 0x02d3, 0x02dd, 0x02dd, 0x02dd, 0x02dd, 0x02dd, 0x02ec, 0x02ec, + 0x02ec, 0x02ec, 0x02ec, 0x02f8, 0x0308, 0x0323, 0x0323, 0x0323, + // Entry 80 - BF + 0x032a, 0x0333, 0x0333, 0x0345, 0x0345, 0x0345, 0x034c, 0x034c, + 0x034c, 0x034c, 0x0356, 0x0356, 0x0356, 0x0356, 0x035f, 0x035f, + 0x035f, 0x035f, 0x035f, 0x035f, 0x035f, 0x035f, 0x0367, 0x0367, + 0x0367, 0x0372, 0x0372, 0x037a, 0x0385, 0x038c, 0x0397, 0x03a1, + 0x03a1, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03bd, 0x03dc, + 0x03df, 0x03e9, 0x0405, 0x040a, 0x0414, 0x0420, 0x0429, 0x0439, }, }, { // gd @@ -23822,80 +27376,80 @@ var scriptHeaders = [220]header{ "seDevanagariDeseretSealbh-sgrìobhadh ÈipheiteachGe’ezCairtbheilisGot" + "aisGranthaGreugaisGujaratiGurmukhiHangulHanHanunooHan simplichteHan " + "tradaiseantaEabhraHiraganaDealbh-sgrìobhadh AnatolachPahawh HmongKat" + - "akana no HiraganaSeann-UngaraisSeann-EadailtisDeàbhanaisSeapanaisJur" + - "chenKayah LiKatakanaKharoshthiCmèarKhojkiKannadaCoirèanaisKpelleKait" + - "hiLannaLàthoLaideann frakturLaideann GhàidhealachLaideannLepchaLimbu" + - "Linear ALinear BLomaMahajaniDealbh-sgrìobhadh MayachMendeMalayalamMo" + - "diMongolaisMroMeitei MayekMultaniMiànmarSeann-Arabach ThuathachNaxi " + - "GebaN’koNüshuOgham-chraobhOl ChikiOrkhonOriyaOsmanyaPau Cin HauPhags" + - "-paPartais snaidh-sgrìobhteRejangRongorongoRùn-sgrìobhadhSaratiSeann" + - "-Arabais DheasachSaurashtraSharadaSiddhamKhudawadiSinhalaSora Sompen" + - "gSundaSyloti NagriSuraidheacSuraidheac SiarachSuraidheac EarachTagba" + - "nwaTakriTai LeTai Lue ÙrTaimilTangutTai VietTeluguTengwarTifinaghTag" + - "alogThaanaTàidhTibeitisTirhutaVaiVarang KshitiWoleaiSeann-PheirsisYi" + - "Gnìomhairean matamataigSamhlaidheanGun sgrìobhadhCoitcheannLitreadh " + - "neo-aithnichte", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x001a, 0x001e, 0x0025, 0x0035, 0x003e, 0x0048, - 0x004c, 0x0051, 0x005a, 0x005f, 0x0069, 0x0078, 0x0080, 0x0086, - 0x008d, 0x008d, 0x0092, 0x0098, 0x00cc, 0x00cc, 0x00d0, 0x00d8, - 0x00dd, 0x00e4, 0x00ef, 0x00f6, 0x011b, 0x0125, 0x012c, 0x012c, - 0x012c, 0x012c, 0x014b, 0x014b, 0x0152, 0x0152, 0x015e, 0x015e, - 0x0164, 0x016b, 0x0173, 0x017b, 0x0183, 0x0189, 0x018c, 0x0193, - 0x01a1, 0x01b1, 0x01b1, 0x01b7, 0x01bf, 0x01db, 0x01e7, 0x01fb, - 0x0209, 0x0209, 0x0218, 0x0223, 0x022c, 0x0233, 0x023b, 0x0243, - // Entry 40 - 7F - 0x024d, 0x0253, 0x0259, 0x0260, 0x026b, 0x0271, 0x0277, 0x027c, - 0x0282, 0x0292, 0x02a8, 0x02b0, 0x02b6, 0x02bb, 0x02c3, 0x02cb, - 0x02cb, 0x02cf, 0x02cf, 0x02cf, 0x02d7, 0x02d7, 0x02d7, 0x02f0, - 0x02f5, 0x02f5, 0x02f5, 0x02fe, 0x0302, 0x030b, 0x030b, 0x030e, - 0x031a, 0x0321, 0x0329, 0x0340, 0x0340, 0x0349, 0x034f, 0x0355, - 0x0362, 0x036a, 0x0370, 0x0375, 0x037c, 0x037c, 0x0387, 0x0387, - 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x03a8, 0x03ae, - 0x03b8, 0x03c8, 0x03c8, 0x03ce, 0x03e4, 0x03ee, 0x03ee, 0x03ee, - // Entry 80 - BF - 0x03f5, 0x03fc, 0x0405, 0x040c, 0x0418, 0x041d, 0x0429, 0x0433, - 0x0433, 0x0445, 0x0456, 0x045e, 0x0463, 0x0469, 0x0474, 0x047a, - 0x0480, 0x0488, 0x048e, 0x0495, 0x049d, 0x04a4, 0x04aa, 0x04b0, - 0x04b8, 0x04bf, 0x04bf, 0x04c2, 0x04c2, 0x04cf, 0x04d5, 0x04e3, - 0x04e3, 0x04e5, 0x04e5, 0x04fd, 0x04fd, 0x0509, 0x0518, 0x0522, - 0x0539, + "akana no HiraganaSeann-UngaraisSeann-EadailtisJamoDeàbhanaisSeapanai" + + "sJurchenKayah LiKatakanaKharoshthiCmèarKhojkiKannadaCoirèanaisKpelle" + + "KaithiLannaLàthoLaideann frakturLaideann GhàidhealachLaideannLepchaL" + + "imbuLinear ALinear BLomaMahajaniDealbh-sgrìobhadh MayachMendeMalayal" + + "amModiMongolaisMroMeitei MayekMultaniMiànmarSeann-Arabach ThuathachN" + + "axi GebaN’koNüshuOgham-chraobhOl ChikiOrkhonOriyaOsmanyaPau Cin HauP" + + "hags-paPartais snaidh-sgrìobhteRejangRongorongoRùn-sgrìobhadhSaratiS" + + "eann-Arabais DheasachSaurashtraSharadaSiddhamKhudawadiSinhalaSora So" + + "mpengSundaSyloti NagriSuraidheacSuraidheac SiarachSuraidheac EarachT" + + "agbanwaTakriTai LeTai Lue ÙrTaimilTangutTai VietTeluguTengwarTifinag" + + "hTagalogThaanaTàidhTibeitisTirhutaVaiVarang KshitiWoleaiSeann-Pheirs" + + "isYiGnìomhairean matamataigSamhlaidheanGun sgrìobhadhCoitcheannLitre" + + "adh neo-aithnichte", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0005, 0x001a, 0x001e, 0x0025, 0x0035, 0x003e, + 0x0048, 0x004c, 0x0051, 0x005a, 0x005f, 0x0069, 0x0069, 0x0078, + 0x0080, 0x0086, 0x008d, 0x008d, 0x0092, 0x0098, 0x00cc, 0x00cc, + 0x00d0, 0x00d8, 0x00dd, 0x00e4, 0x00ef, 0x00f6, 0x011b, 0x0125, + 0x012c, 0x012c, 0x012c, 0x012c, 0x014b, 0x014b, 0x0152, 0x0152, + 0x015e, 0x015e, 0x0164, 0x016b, 0x0173, 0x017b, 0x0183, 0x0183, + 0x0189, 0x018c, 0x0193, 0x01a1, 0x01b1, 0x01b1, 0x01b7, 0x01bf, + 0x01db, 0x01e7, 0x01fb, 0x0209, 0x0209, 0x0218, 0x021c, 0x0227, + // Entry 40 - 7F + 0x0230, 0x0237, 0x023f, 0x0247, 0x0251, 0x0257, 0x025d, 0x0264, + 0x026f, 0x0275, 0x027b, 0x0280, 0x0286, 0x0296, 0x02ac, 0x02b4, + 0x02ba, 0x02bf, 0x02c7, 0x02cf, 0x02cf, 0x02d3, 0x02d3, 0x02d3, + 0x02db, 0x02db, 0x02db, 0x02db, 0x02f4, 0x02f9, 0x02f9, 0x02f9, + 0x0302, 0x0306, 0x030f, 0x030f, 0x0312, 0x031e, 0x0325, 0x032d, + 0x0344, 0x0344, 0x0344, 0x034d, 0x0353, 0x0359, 0x0366, 0x036e, + 0x0374, 0x0379, 0x0379, 0x0380, 0x0380, 0x038b, 0x038b, 0x0393, + 0x0393, 0x0393, 0x0393, 0x0393, 0x0393, 0x03ac, 0x03b2, 0x03bc, + // Entry 80 - BF + 0x03cc, 0x03cc, 0x03d2, 0x03e8, 0x03f2, 0x03f2, 0x03f2, 0x03f9, + 0x0400, 0x0409, 0x0410, 0x041c, 0x0421, 0x042d, 0x0437, 0x0437, + 0x0449, 0x045a, 0x0462, 0x0467, 0x046d, 0x0478, 0x047e, 0x0484, + 0x048c, 0x0492, 0x0499, 0x04a1, 0x04a8, 0x04ae, 0x04b4, 0x04bc, + 0x04c3, 0x04c3, 0x04c6, 0x04c6, 0x04d3, 0x04d9, 0x04e7, 0x04e7, + 0x04e9, 0x04e9, 0x0501, 0x0501, 0x050d, 0x051c, 0x0526, 0x053d, }, }, { // gl - "ÁrabeArmenioBengalíBopomofoBrailleSilabario aborixe canadiano unificadoC" + - "irílicoDevanagariEtíopeXeorxianoGregoguxaratíGurmukhiHangulHanHan si" + - "mplificadoHan tradicionalHebreoHiraganaXaponésKatakanaCamboxanocanar" + - "ésCoreanoLaosianoLatinoMalabarMongolBirmaniaOriyaCingalésTámilTelug" + - "úThaanaTailandésTibetanoSímbolosNon escritaComúnEscritura descoñeci" + - "da", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x001d, 0x001d, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0049, 0x0049, 0x0049, 0x0049, - 0x0049, 0x0049, 0x0049, 0x0052, 0x0052, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x0063, 0x0063, 0x006c, 0x006c, - 0x006c, 0x006c, 0x0071, 0x007a, 0x0082, 0x0088, 0x008b, 0x008b, - 0x009b, 0x00aa, 0x00aa, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c0, 0x00c8, - // Entry 40 - 7F - 0x00c8, 0x00d1, 0x00d1, 0x00d9, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e8, 0x00e8, 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00fb, 0x00fb, 0x00fb, - 0x00fb, 0x00fb, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, - 0x0103, 0x0103, 0x0103, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, + "árabearmeniobengalíbopomofobrailleSilabario aborixe canadiano unificadoc" + + "irílicodevanágarietíopexeorxianogregoguxaratígurmukhihanbhangulhanha" + + "n simplificadohan tradicionalhebreohiraganasilabarios xaponesesjamox" + + "aponéskatakanakhmercanaréscoreanolaosianolatinomalabarmongolbirmanoo" + + "riácingaléstámiltelugúthaanatailandéstibetanonotación matemáticaemoj" + + "issímbolosnon escritocomúnalfabeto descoñecido", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, + 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x0015, + 0x001d, 0x001d, 0x0024, 0x0024, 0x0024, 0x0024, 0x0049, 0x0049, + 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0052, 0x0052, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x0064, 0x0064, + 0x006d, 0x006d, 0x006d, 0x006d, 0x0072, 0x007b, 0x0083, 0x0087, + 0x008d, 0x0090, 0x0090, 0x00a0, 0x00af, 0x00af, 0x00b5, 0x00bd, + 0x00bd, 0x00bd, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d5, 0x00d5, + // Entry 40 - 7F + 0x00dd, 0x00dd, 0x00dd, 0x00e5, 0x00e5, 0x00ea, 0x00ea, 0x00f2, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0101, 0x0101, 0x0101, 0x0107, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, + 0x010e, 0x010e, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x011b, + 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, + 0x011b, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, // Entry 80 - BF - 0x0108, 0x0108, 0x0108, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, - 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0117, - 0x0117, 0x0117, 0x011e, 0x011e, 0x011e, 0x011e, 0x0124, 0x012e, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x013f, 0x014a, 0x0150, - 0x0166, + 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, + 0x0120, 0x0120, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, + 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x012f, 0x012f, + 0x012f, 0x0136, 0x0136, 0x0136, 0x0136, 0x013c, 0x0146, 0x014e, + 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, + 0x014e, 0x014e, 0x0163, 0x0169, 0x0172, 0x017d, 0x0183, 0x0198, }, }, { // gsw @@ -23919,32 +27473,32 @@ var scriptHeaders = [220]header{ "tischUgaritischVaiSichtbari SchpraachAltpersischSumerisch-akkadischi" + " KeilschriftYiG’eerbtä SchriftwärtSchriftlosi SchpraachUnbeschtimmtU" + "ncodiirti Schrift", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, 0x0020, - 0x002b, 0x002b, 0x002b, 0x0035, 0x003f, 0x004c, 0x0054, 0x005a, - 0x0068, 0x0073, 0x0078, 0x0078, 0x007c, 0x0083, 0x0087, 0x008f, - 0x0094, 0x009c, 0x00a7, 0x00b1, 0x00c1, 0x00cd, 0x00d4, 0x00d4, - 0x00e9, 0x00ff, 0x0118, 0x0118, 0x0123, 0x012b, 0x0134, 0x0140, - 0x0147, 0x0147, 0x0151, 0x015b, 0x0163, 0x0169, 0x0174, 0x017b, - 0x019c, 0x01be, 0x01be, 0x01c8, 0x01d0, 0x01d0, 0x01dc, 0x01f2, - 0x01fe, 0x020b, 0x0216, 0x0221, 0x022a, 0x022a, 0x0232, 0x023a, - // Entry 40 - 7F - 0x0244, 0x0249, 0x0249, 0x0250, 0x025a, 0x025a, 0x025a, 0x025f, - 0x0267, 0x0284, 0x02a5, 0x02af, 0x02b5, 0x02ba, 0x02c2, 0x02ca, - 0x02ca, 0x02ca, 0x02d1, 0x02d8, 0x02d8, 0x02e2, 0x02ee, 0x02ff, - 0x02ff, 0x02ff, 0x0309, 0x0313, 0x0313, 0x031d, 0x0321, 0x0321, - 0x032d, 0x032d, 0x0337, 0x0337, 0x0337, 0x0337, 0x033d, 0x033d, - 0x0342, 0x034a, 0x0356, 0x035b, 0x0364, 0x0364, 0x0364, 0x036f, - 0x0377, 0x0377, 0x0377, 0x037e, 0x0389, 0x039b, 0x039b, 0x03a1, - 0x03ab, 0x03b7, 0x03c4, 0x03ca, 0x03ca, 0x03d4, 0x03e7, 0x03f4, - // Entry 80 - BF - 0x03f4, 0x03f4, 0x03f4, 0x0401, 0x0401, 0x040d, 0x0419, 0x0420, - 0x043f, 0x044c, 0x0458, 0x0460, 0x0460, 0x0466, 0x046d, 0x0476, - 0x0476, 0x0476, 0x047c, 0x0483, 0x048b, 0x0492, 0x0498, 0x049c, - 0x04a6, 0x04a6, 0x04b0, 0x04b3, 0x04c6, 0x04c6, 0x04c6, 0x04d1, - 0x04f1, 0x04f3, 0x050b, 0x050b, 0x050b, 0x050b, 0x0520, 0x052c, - 0x053e, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, + 0x0020, 0x002b, 0x002b, 0x002b, 0x0035, 0x003f, 0x003f, 0x004c, + 0x0054, 0x005a, 0x0068, 0x0073, 0x0078, 0x0078, 0x007c, 0x0083, + 0x0087, 0x008f, 0x0094, 0x009c, 0x00a7, 0x00b1, 0x00c1, 0x00cd, + 0x00d4, 0x00d4, 0x00e9, 0x00ff, 0x0118, 0x0118, 0x0123, 0x012b, + 0x0134, 0x0140, 0x0147, 0x0147, 0x0151, 0x015b, 0x0163, 0x0163, + 0x0169, 0x0174, 0x017b, 0x019c, 0x01be, 0x01be, 0x01c8, 0x01d0, + 0x01d0, 0x01dc, 0x01f2, 0x01fe, 0x020b, 0x0216, 0x0216, 0x0221, + // Entry 40 - 7F + 0x022a, 0x022a, 0x0232, 0x023a, 0x0244, 0x0249, 0x0249, 0x0250, + 0x025a, 0x025a, 0x025a, 0x025f, 0x0267, 0x0284, 0x02a5, 0x02af, + 0x02b5, 0x02ba, 0x02c2, 0x02ca, 0x02ca, 0x02ca, 0x02d1, 0x02d8, + 0x02d8, 0x02e2, 0x02ee, 0x02ee, 0x02ff, 0x02ff, 0x02ff, 0x0309, + 0x0313, 0x0313, 0x031d, 0x0321, 0x0321, 0x032d, 0x032d, 0x0337, + 0x0337, 0x0337, 0x0337, 0x0337, 0x033d, 0x033d, 0x0342, 0x034a, + 0x0356, 0x035b, 0x035b, 0x0364, 0x0364, 0x0364, 0x036f, 0x0377, + 0x0377, 0x0377, 0x037e, 0x0389, 0x039b, 0x039b, 0x03a1, 0x03ab, + // Entry 80 - BF + 0x03b7, 0x03c4, 0x03ca, 0x03ca, 0x03d4, 0x03e7, 0x03f4, 0x03f4, + 0x03f4, 0x03f4, 0x0401, 0x0401, 0x040d, 0x0419, 0x0420, 0x043f, + 0x044c, 0x0458, 0x0460, 0x0460, 0x0466, 0x046d, 0x0476, 0x0476, + 0x0476, 0x047c, 0x0483, 0x048b, 0x0492, 0x0498, 0x049c, 0x04a6, + 0x04a6, 0x04b0, 0x04b3, 0x04c6, 0x04c6, 0x04c6, 0x04d1, 0x04f1, + 0x04f3, 0x050b, 0x050b, 0x050b, 0x050b, 0x0520, 0x052c, 0x053e, }, }, { // gu @@ -23974,32 +27528,32 @@ var scriptHeaders = [220]header{ "merscekannadscekorejscelaoscełaćonscemalayalamscemongolsceburmasceor" + "iyasinghalscetamilsceteluguthaanathailandscetibetscesymbolebjez pism" + "apowšitkownenjeznate pismo", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0020, 0x0020, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x004b, 0x004b, 0x0054, 0x0054, - 0x0054, 0x0054, 0x005c, 0x0064, 0x006c, 0x0072, 0x0079, 0x0079, - 0x0092, 0x00ad, 0x00ad, 0x00b6, 0x00be, 0x00be, 0x00be, 0x00be, - 0x00be, 0x00be, 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00ce, - // Entry 40 - 7F - 0x00ce, 0x00d6, 0x00d6, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00ed, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, + 0x0020, 0x0020, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x004b, 0x004b, + 0x0054, 0x0054, 0x0054, 0x0054, 0x005c, 0x0064, 0x006c, 0x006c, + 0x0072, 0x0079, 0x0079, 0x0092, 0x00ad, 0x00ad, 0x00b6, 0x00be, + 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, + // Entry 40 - 7F + 0x00c6, 0x00c6, 0x00c6, 0x00ce, 0x00ce, 0x00d6, 0x00d6, 0x00df, + 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c, - 0x010c, 0x010c, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x0114, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, + 0x0103, 0x0103, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0114, + 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, + 0x0114, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, // Entry 80 - BF - 0x0119, 0x0119, 0x0119, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x012b, - 0x012b, 0x012b, 0x0131, 0x0131, 0x0131, 0x0131, 0x0137, 0x0142, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x012b, 0x012b, + 0x012b, 0x0131, 0x0131, 0x0131, 0x0131, 0x0137, 0x0142, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, - 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x0151, 0x015b, 0x0167, - 0x0175, + 0x014a, 0x014a, 0x014a, 0x014a, 0x0151, 0x015b, 0x0167, 0x0175, }, }, { // hu @@ -24017,19 +27571,19 @@ var scriptHeaders = [220]header{ {}, // ig { // ii "ꀊꇁꀨꁱꂷꀊꆨꌦꇁꃚꁱꂷꈝꐯꉌꈲꁱꂷꀎꋏꉌꈲꁱꂷꇁꄀꁱꂷꆈꌠꁱꂷꁱꀋꉆꌠꅉꀋꐚꌠꁱꂷ", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x000f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0036, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, + 0x0024, 0x0024, 0x0024, 0x0036, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, // Entry 40 - 7F 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, @@ -24041,8 +27595,8 @@ var scriptHeaders = [220]header{ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006c, 0x006c, - 0x007e, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006c, 0x006c, 0x007e, }, }, { // is @@ -24060,7 +27614,7 @@ var scriptHeaders = [220]header{ { // jgo "mík -ŋwaꞌnɛ yi ɛ́ líŋɛ́nɛ Latɛ̂ŋntúu yi pɛ́ ká ŋwaꞌnεntɛ-ŋwaꞌnɛ yí pɛ́ k" + "á kɛ́ jí", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -24072,7 +27626,7 @@ var scriptHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, @@ -24084,8 +27638,8 @@ var scriptHeaders = [220]header{ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x004c, 0x004c, - 0x0073, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x004c, 0x004c, 0x0073, }, }, {}, // jmc @@ -24098,36 +27652,36 @@ var scriptHeaders = [220]header{ {}, // kde { // kea "arábikuarméniubengalibopomofobraillesirílikudevanagarietiópikujorjianugr" + - "egugujaratigurmukiangulhanhan simplifikaduhan tradisionalebraikuirag" + - "anajaponeskatakanakmerkanareskorianulausianulatinumalaialammongolbir" + - "manesoriyasingalestamiltelugutaanatailandestibetanusimbulusnãu skrit" + - "ukomunskrita diskonxedu", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0017, 0x0017, 0x001f, 0x001f, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x002f, 0x002f, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x004a, 0x004a, - 0x004a, 0x004a, 0x004f, 0x0057, 0x005e, 0x0063, 0x0066, 0x0066, - 0x0076, 0x0085, 0x0085, 0x008c, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x0093, 0x009a, 0x009a, 0x009a, 0x00a2, - // Entry 40 - 7F - 0x00a2, 0x00a6, 0x00a6, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1, - 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + "egugujaratigurmukihangulhanhan simplifikaduhan tradisionalebraikuira" + + "ganajaponeskatakanakmerkanareskorianulausianulatinumalaialammongolbi" + + "rmanesoriyasingalestamiltelugutaanatailandestibetanusímbulusnãu skri" + + "tukomunskrita diskonxedu", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0017, 0x0017, 0x0017, + 0x001f, 0x001f, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x002f, 0x002f, 0x0039, + 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004f, 0x0057, 0x005e, 0x005e, + 0x0064, 0x0067, 0x0067, 0x0077, 0x0086, 0x0086, 0x008d, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + // Entry 40 - 7F + 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a7, 0x00a7, 0x00ae, + 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00bd, 0x00bd, 0x00bd, 0x00c3, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, + 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, // Entry 80 - BF - 0x00de, 0x00de, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00eb, - 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f6, 0x00ff, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x010f, 0x011a, 0x011f, - 0x0130, + 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, + 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, + 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00ec, 0x00ec, + 0x00ec, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f7, 0x0100, 0x0108, + 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, + 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x011c, 0x0121, 0x0132, }, }, {}, // khq @@ -24151,6 +27705,7 @@ var scriptHeaders = [220]header{ koScriptStr, koScriptIdx, }, + {}, // ko-KP {}, // kok { // ks "اَربیاَرمانیَناَویستَنبالَنیٖزباتَکبیٚنگٲلۍبِلِس سِمبلزبوپوموفوبرٛاہمیبر" + @@ -24170,32 +27725,32 @@ var scriptHeaders = [220]header{ "و تیلوتَمِلتیلگوٗتیٚنگوارتِفِناگتَگَلوگتھاناتھاےتِبتیاُگارِٹِکواےوِ" + "زِبٕل سپیٖچپرون فارسیسُمیرو اکادیَن کوٗنِفامیٖیلیٚکھنَےعاماَن زٲنۍ " + "یا نا لَگہٕ ہار رَسمُل خظ", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x001c, 0x002c, - 0x003c, 0x003c, 0x003c, 0x0046, 0x0056, 0x006d, 0x007d, 0x008b, - 0x0093, 0x00a3, 0x00ad, 0x00ad, 0x00f7, 0x0103, 0x0109, 0x0117, - 0x0121, 0x012d, 0x013d, 0x014d, 0x017f, 0x018f, 0x01a1, 0x01a1, - 0x01c2, 0x01e3, 0x020a, 0x020a, 0x021c, 0x023b, 0x024b, 0x025f, - 0x026b, 0x026b, 0x0279, 0x0283, 0x0291, 0x029f, 0x02a5, 0x02b3, - 0x02d0, 0x02e4, 0x02e4, 0x02f0, 0x0302, 0x0302, 0x0317, 0x033d, - 0x0358, 0x0364, 0x037b, 0x038b, 0x039d, 0x039d, 0x03aa, 0x03ba, - // Entry 40 - 7F - 0x03ca, 0x03d6, 0x03d6, 0x03e2, 0x03ee, 0x03ee, 0x03ee, 0x03f6, - 0x03fc, 0x0415, 0x042a, 0x0434, 0x0440, 0x044c, 0x045f, 0x0472, - 0x0472, 0x0472, 0x0480, 0x048e, 0x048e, 0x049e, 0x04b0, 0x04cf, - 0x04cf, 0x04cf, 0x04df, 0x04ef, 0x04ef, 0x0503, 0x050b, 0x050b, - 0x051e, 0x051e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053b, 0x053b, - 0x0547, 0x0556, 0x0564, 0x0570, 0x0580, 0x0580, 0x0580, 0x0595, - 0x05a4, 0x05a4, 0x05a4, 0x05bb, 0x05cf, 0x05ea, 0x05ea, 0x05f8, - 0x0611, 0x061b, 0x062d, 0x0639, 0x0639, 0x0649, 0x0666, 0x0672, - // Entry 80 - BF - 0x0672, 0x0672, 0x0672, 0x0680, 0x0680, 0x0692, 0x06a9, 0x06b9, - 0x06e2, 0x06fd, 0x0718, 0x0728, 0x0728, 0x0734, 0x0745, 0x074f, - 0x074f, 0x074f, 0x075b, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, - 0x07a3, 0x07a3, 0x07b5, 0x07bb, 0x07d4, 0x07d4, 0x07d4, 0x07e7, - 0x0813, 0x0819, 0x0819, 0x0819, 0x0819, 0x0819, 0x0829, 0x082f, - 0x086c, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x001c, + 0x002c, 0x003c, 0x003c, 0x003c, 0x0046, 0x0056, 0x0056, 0x006d, + 0x007d, 0x008b, 0x0093, 0x00a3, 0x00ad, 0x00ad, 0x00f7, 0x0103, + 0x0109, 0x0117, 0x0121, 0x012d, 0x013d, 0x014d, 0x017f, 0x018f, + 0x01a1, 0x01a1, 0x01c2, 0x01e3, 0x020a, 0x020a, 0x021c, 0x023b, + 0x024b, 0x025f, 0x026b, 0x026b, 0x0279, 0x0283, 0x0291, 0x0291, + 0x029f, 0x02a5, 0x02b3, 0x02d0, 0x02e4, 0x02e4, 0x02f0, 0x0302, + 0x0302, 0x0317, 0x033d, 0x0358, 0x0364, 0x037b, 0x037b, 0x038b, + // Entry 40 - 7F + 0x039d, 0x039d, 0x03aa, 0x03ba, 0x03ca, 0x03d6, 0x03d6, 0x03e2, + 0x03ee, 0x03ee, 0x03ee, 0x03f6, 0x03fc, 0x0415, 0x042a, 0x0434, + 0x0440, 0x044c, 0x045f, 0x0472, 0x0472, 0x0472, 0x0480, 0x048e, + 0x048e, 0x049e, 0x04b0, 0x04b0, 0x04cf, 0x04cf, 0x04cf, 0x04df, + 0x04ef, 0x04ef, 0x0503, 0x050b, 0x050b, 0x051e, 0x051e, 0x052e, + 0x052e, 0x052e, 0x052e, 0x052e, 0x053b, 0x053b, 0x0547, 0x0556, + 0x0564, 0x0570, 0x0570, 0x0580, 0x0580, 0x0580, 0x0595, 0x05a4, + 0x05a4, 0x05a4, 0x05bb, 0x05cf, 0x05ea, 0x05ea, 0x05f8, 0x0611, + // Entry 80 - BF + 0x061b, 0x062d, 0x0639, 0x0639, 0x0649, 0x0666, 0x0672, 0x0672, + 0x0672, 0x0672, 0x0680, 0x0680, 0x0692, 0x06a9, 0x06b9, 0x06e2, + 0x06fd, 0x0718, 0x0728, 0x0728, 0x0734, 0x0745, 0x074f, 0x074f, + 0x074f, 0x075b, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, 0x07a3, + 0x07a3, 0x07b5, 0x07bb, 0x07d4, 0x07d4, 0x07d4, 0x07e7, 0x0813, + 0x0819, 0x0819, 0x0819, 0x0819, 0x0819, 0x0829, 0x082f, 0x086c, }, }, {}, // ksb @@ -24210,37 +27765,37 @@ var scriptHeaders = [220]header{ "chreffen japaanesche Schreffjapaanesche Kattakaana-SchreffKhmer-Schr" + "effindesche Kannada-Schreffkorrejaanesche Schreff udder en schineese" + "sche Schrefflahootesche Schrefflateinesche Schreffindesche Malajalam" + - "-Schreffmongjoolesche Schreffbirmaanesche Schreffindesche Orija-Schr" + + "-Schreffmongjoolesche Schreffbirmahnesche Schreffindesche Orija-Schr" + "effsingjaleesesche Schrefftamiilesche Schreffindesche Telugu-Schreff" + "malledivesche Taana-Schrefftailändesche Schrefftibeetesche Schreff-Z" + "eiche ävver kein Schreff--jaa keij Schreff--öhnß en Schreff--onbikan" + "nte Schreff-", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x003c, 0x003c, 0x005c, 0x005c, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x007e, 0x007e, 0x0099, 0x0099, 0x0099, - 0x0099, 0x0099, 0x0099, 0x0099, 0x00ae, 0x00ae, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00d8, 0x00ed, 0x0106, 0x011c, 0x0134, 0x0134, - 0x0153, 0x0176, 0x0176, 0x018c, 0x01aa, 0x01aa, 0x01aa, 0x01aa, - 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01c0, 0x01c0, 0x01c0, 0x01de, - // Entry 40 - 7F - 0x01de, 0x01eb, 0x01eb, 0x0203, 0x0238, 0x0238, 0x0238, 0x0238, - 0x024b, 0x024b, 0x024b, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x003c, 0x003c, 0x003c, + 0x005c, 0x005c, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x007e, 0x007e, 0x0099, + 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x00ae, 0x00ae, + 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00d8, 0x00ed, 0x0106, 0x0106, + 0x011c, 0x0134, 0x0134, 0x0153, 0x0176, 0x0176, 0x018c, 0x01aa, + 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, + // Entry 40 - 7F + 0x01c0, 0x01c0, 0x01c0, 0x01de, 0x01de, 0x01eb, 0x01eb, 0x0203, + 0x0238, 0x0238, 0x0238, 0x0238, 0x024b, 0x024b, 0x024b, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, - 0x025e, 0x025e, 0x025e, 0x0278, 0x0278, 0x028d, 0x028d, 0x028d, - 0x028d, 0x028d, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, - 0x02a1, 0x02a1, 0x02a1, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, - 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, + 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, + 0x0278, 0x0278, 0x028d, 0x028d, 0x028d, 0x028d, 0x028d, 0x02a1, + 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, + 0x02a1, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, // Entry 80 - BF - 0x02b7, 0x02b7, 0x02b7, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, - 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02e1, - 0x02e1, 0x02e1, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x0313, 0x0328, + 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, + 0x02b7, 0x02b7, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, + 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02e1, 0x02e1, + 0x02e1, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x0313, 0x0328, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, - 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x0357, 0x0369, 0x037c, - 0x0390, + 0x033b, 0x033b, 0x033b, 0x033b, 0x0357, 0x0369, 0x037c, 0x0390, }, }, {}, // kw @@ -24269,32 +27824,32 @@ var scriptHeaders = [220]header{ "gThaanaThaiTibeteschUgariteschVaiSiichtbar SproochAlperseschSumeresc" + "h-akkadesch KeilschrëftYiGeierfte SchrëftwäertSymbolerOuni SchrëftOn" + "bestëmmtOncodéiert Schrëft", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, 0x001e, - 0x0029, 0x0029, 0x0029, 0x0033, 0x003d, 0x004b, 0x0053, 0x0059, - 0x0067, 0x0072, 0x0077, 0x0077, 0x007b, 0x0082, 0x0086, 0x008e, - 0x0093, 0x009b, 0x00a6, 0x00b0, 0x00c1, 0x00cb, 0x00d2, 0x00d2, - 0x00e5, 0x00f9, 0x010f, 0x010f, 0x0119, 0x0121, 0x012a, 0x0136, - 0x013d, 0x013d, 0x0147, 0x014f, 0x0157, 0x015d, 0x0167, 0x016e, - 0x0184, 0x019c, 0x019c, 0x01a6, 0x01ae, 0x01ae, 0x01ba, 0x01d0, - 0x01db, 0x01e9, 0x01f3, 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217, - // Entry 40 - 7F - 0x0221, 0x0226, 0x0226, 0x022d, 0x0237, 0x0237, 0x0237, 0x023c, - 0x0244, 0x025f, 0x027c, 0x0287, 0x028d, 0x0292, 0x029a, 0x02a2, - 0x02a2, 0x02a2, 0x02a9, 0x02b0, 0x02b0, 0x02ba, 0x02c6, 0x02d7, - 0x02d7, 0x02d7, 0x02e1, 0x02eb, 0x02eb, 0x02f5, 0x02f9, 0x02f9, - 0x0305, 0x0305, 0x030f, 0x030f, 0x030f, 0x030f, 0x0315, 0x0315, - 0x031a, 0x0322, 0x032e, 0x0333, 0x033c, 0x033c, 0x033c, 0x0346, - 0x034e, 0x034e, 0x034e, 0x0355, 0x0360, 0x0372, 0x0372, 0x0378, - 0x0382, 0x038e, 0x039b, 0x03a1, 0x03a1, 0x03ab, 0x03b8, 0x03c5, - // Entry 80 - BF - 0x03c5, 0x03c5, 0x03c5, 0x03d2, 0x03d2, 0x03de, 0x03ea, 0x03f1, - 0x040b, 0x0416, 0x0420, 0x0420, 0x0420, 0x0426, 0x042d, 0x0436, - 0x0436, 0x0436, 0x043c, 0x0443, 0x044b, 0x0452, 0x0458, 0x045c, - 0x0465, 0x0465, 0x046f, 0x0472, 0x0483, 0x0483, 0x0483, 0x048d, - 0x04ad, 0x04af, 0x04c6, 0x04c6, 0x04c6, 0x04ce, 0x04db, 0x04e6, - 0x04fa, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, + 0x001e, 0x0029, 0x0029, 0x0029, 0x0033, 0x003d, 0x003d, 0x004b, + 0x0053, 0x0059, 0x0067, 0x0072, 0x0077, 0x0077, 0x007b, 0x0082, + 0x0086, 0x008e, 0x0093, 0x009b, 0x00a6, 0x00b0, 0x00c1, 0x00cb, + 0x00d2, 0x00d2, 0x00e5, 0x00f9, 0x010f, 0x010f, 0x0119, 0x0121, + 0x012a, 0x0136, 0x013d, 0x013d, 0x0147, 0x014f, 0x0157, 0x0157, + 0x015d, 0x0167, 0x016e, 0x0184, 0x019c, 0x019c, 0x01a6, 0x01ae, + 0x01ae, 0x01ba, 0x01d0, 0x01db, 0x01e9, 0x01f3, 0x01f3, 0x01fe, + // Entry 40 - 7F + 0x0207, 0x0207, 0x020f, 0x0217, 0x0221, 0x0226, 0x0226, 0x022d, + 0x0237, 0x0237, 0x0237, 0x023c, 0x0244, 0x025f, 0x027c, 0x0287, + 0x028d, 0x0292, 0x029a, 0x02a2, 0x02a2, 0x02a2, 0x02a9, 0x02b0, + 0x02b0, 0x02ba, 0x02c6, 0x02c6, 0x02d7, 0x02d7, 0x02d7, 0x02e1, + 0x02eb, 0x02eb, 0x02f5, 0x02f9, 0x02f9, 0x0305, 0x0305, 0x030f, + 0x030f, 0x030f, 0x030f, 0x030f, 0x0315, 0x0315, 0x031a, 0x0322, + 0x032e, 0x0333, 0x0333, 0x033c, 0x033c, 0x033c, 0x0346, 0x034e, + 0x034e, 0x034e, 0x0355, 0x0360, 0x0372, 0x0372, 0x0378, 0x0382, + // Entry 80 - BF + 0x038e, 0x039b, 0x03a1, 0x03a1, 0x03ab, 0x03b8, 0x03c5, 0x03c5, + 0x03c5, 0x03c5, 0x03d2, 0x03d2, 0x03de, 0x03ea, 0x03f1, 0x040b, + 0x0416, 0x0420, 0x0420, 0x0420, 0x0426, 0x042d, 0x0436, 0x0436, + 0x0436, 0x043c, 0x0443, 0x044b, 0x0452, 0x0458, 0x045c, 0x0465, + 0x0465, 0x046f, 0x0472, 0x0483, 0x0483, 0x0483, 0x048d, 0x04ad, + 0x04af, 0x04c6, 0x04c6, 0x04c6, 0x04ce, 0x04db, 0x04e6, 0x04fa, }, }, {}, // lg @@ -24310,32 +27865,32 @@ var scriptHeaders = [220]header{ "اپوٙنیکاتانگاخئمئرکاناداکورئ ییلائولاتینمالایامموغولیمیانمارئوریاسی" + "ناھالاتامیلتئلئگوتاناتایلأندیتأبأتینئشوٙنە یانیسئسە نأبیەجائوفتاأنی" + "سئسە نادیار", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0026, 0x0026, 0x0032, 0x0032, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x004c, 0x004c, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x0076, 0x0076, 0x0080, 0x0080, - 0x0080, 0x0080, 0x008e, 0x009e, 0x00b0, 0x00be, 0x00c6, 0x00c6, - 0x00e0, 0x00f7, 0x00f7, 0x0101, 0x0111, 0x0111, 0x0111, 0x0111, - 0x0111, 0x0111, 0x0111, 0x0111, 0x011f, 0x011f, 0x011f, 0x012d, - // Entry 40 - 7F - 0x012d, 0x0137, 0x0137, 0x0143, 0x0150, 0x0150, 0x0150, 0x0150, - 0x0158, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0026, 0x0026, 0x0026, + 0x0032, 0x0032, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x004c, 0x004c, 0x005e, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0076, 0x0076, + 0x0080, 0x0080, 0x0080, 0x0080, 0x008e, 0x009e, 0x00b0, 0x00b0, + 0x00be, 0x00c6, 0x00c6, 0x00e0, 0x00f7, 0x00f7, 0x0101, 0x0111, + 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, + // Entry 40 - 7F + 0x011f, 0x011f, 0x011f, 0x012d, 0x012d, 0x0137, 0x0137, 0x0143, + 0x0150, 0x0150, 0x0150, 0x0150, 0x0158, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x0162, 0x0170, 0x0170, 0x017c, 0x017c, 0x017c, - 0x017c, 0x017c, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, - 0x018a, 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, + 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, + 0x0170, 0x0170, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x018a, + 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, + 0x018a, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, // Entry 80 - BF - 0x0194, 0x0194, 0x0194, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01ae, - 0x01ae, 0x01ae, 0x01ba, 0x01ba, 0x01ba, 0x01ba, 0x01c2, 0x01d2, + 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, + 0x0194, 0x0194, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, + 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01ae, 0x01ae, + 0x01ae, 0x01ba, 0x01ba, 0x01ba, 0x01ba, 0x01c2, 0x01d2, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, - 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01f1, 0x0208, 0x0218, - 0x0231, + 0x01de, 0x01de, 0x01de, 0x01de, 0x01f1, 0x0208, 0x0218, 0x0231, }, }, { // lt @@ -24356,7 +27911,7 @@ var scriptHeaders = [220]header{ {}, // mgh { // mgo "ngam ŋwaʼringam choʼabo ŋwaʼri tisɔʼ", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -24368,7 +27923,7 @@ var scriptHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, @@ -24380,8 +27935,8 @@ var scriptHeaders = [220]header{ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0017, 0x0017, - 0x002b, + 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, + 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0017, 0x0017, 0x002b, }, }, { // mk @@ -24407,19 +27962,19 @@ var scriptHeaders = [220]header{ { // mt "GħarbiĊirillikuGriegHan SimplifikatHan TradizzjonaliLatinPersjan AntikMh" + "ux MiktubKomuniKitba Mhux Magħrufa", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, - 0x0025, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0016, 0x0016, 0x0016, 0x0016, + 0x0016, 0x0016, 0x0016, 0x0025, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, // Entry 40 - 7F 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, + 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, @@ -24430,9 +27985,9 @@ var scriptHeaders = [220]header{ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0053, 0x0059, - 0x006d, + 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, + 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x0048, 0x0048, + 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0053, 0x0059, 0x006d, }, }, {}, // mua @@ -24444,15 +27999,18 @@ var scriptHeaders = [220]header{ "عربیارمنیبنگالیبوپوموفوسیریلیکدیوانانگریاتیوپیاییگرجییونانیگجراتیگورموخی" + "هانگولهانساده\u200cبَیی هاناستاندارد ِسنتی هانتعبریهیراگاناجاپونیکا" + "تاکانا", - []uint16{ // 64 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e, + []uint16{ // 68 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x001e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x003c, 0x003c, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x006a, 0x006a, - 0x006a, 0x006a, 0x0076, 0x0082, 0x0090, 0x009c, 0x00a2, 0x00a2, - 0x00bc, 0x00e2, 0x00e2, 0x00ea, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0106, 0x0106, 0x0106, 0x0116, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x003c, 0x003c, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, + 0x006a, 0x006a, 0x006a, 0x006a, 0x0076, 0x0082, 0x0090, 0x0090, + 0x009c, 0x00a2, 0x00a2, 0x00bc, 0x00e2, 0x00e2, 0x00ea, 0x00fa, + 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, + // Entry 40 - 7F + 0x0106, 0x0106, 0x0106, 0x0116, }, }, {}, // naq @@ -24487,32 +28045,32 @@ var scriptHeaders = [220]header{ "ghtagalogthaanathaitibetanskugaritiskvaisynleg talegammalpersisksume" + "ro-akkadisk kileskriftyinedarvamatematisk notasjonsymbolkode for spr" + "åk utan skriftfellesukjend skrift", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000d, 0x0014, 0x001c, - 0x0026, 0x0026, 0x0026, 0x002b, 0x0032, 0x003c, 0x0044, 0x004a, - 0x0051, 0x005b, 0x0060, 0x0066, 0x0089, 0x008f, 0x0093, 0x009b, - 0x00a0, 0x00a7, 0x00b1, 0x00ba, 0x00db, 0x00e5, 0x00ec, 0x00ec, - 0x00fd, 0x010f, 0x0124, 0x0124, 0x012c, 0x014e, 0x0156, 0x0162, - 0x0168, 0x0168, 0x016d, 0x0175, 0x017d, 0x0183, 0x0186, 0x018d, - 0x019e, 0x01b3, 0x01b3, 0x01bb, 0x01c3, 0x01c3, 0x01cf, 0x01e6, - 0x01f3, 0x01f8, 0x0205, 0x020f, 0x0216, 0x0216, 0x021e, 0x0226, - // Entry 40 - 7F - 0x0230, 0x0235, 0x0235, 0x023c, 0x0244, 0x0244, 0x024c, 0x0251, - 0x0258, 0x0270, 0x0289, 0x0290, 0x0296, 0x029b, 0x02a4, 0x02ad, - 0x02ad, 0x02ad, 0x02b3, 0x02b9, 0x02b9, 0x02c1, 0x02ca, 0x02da, - 0x02da, 0x02da, 0x02e3, 0x02ec, 0x02ec, 0x02f4, 0x02f8, 0x02f8, - 0x0304, 0x0304, 0x030b, 0x030b, 0x030b, 0x030b, 0x0311, 0x0311, - 0x0316, 0x031e, 0x0324, 0x0329, 0x0330, 0x0330, 0x0330, 0x033d, - 0x0345, 0x0358, 0x0364, 0x036b, 0x0374, 0x0384, 0x0398, 0x039e, - 0x03a8, 0x03ad, 0x03b8, 0x03be, 0x03be, 0x03c8, 0x03d3, 0x03da, - // Entry 80 - BF - 0x03da, 0x03da, 0x03da, 0x03e1, 0x03e1, 0x03ec, 0x03f8, 0x0401, - 0x041f, 0x043a, 0x0455, 0x045d, 0x045d, 0x0463, 0x046d, 0x0474, - 0x0474, 0x047c, 0x0482, 0x0489, 0x0491, 0x0498, 0x049e, 0x04a2, - 0x04ab, 0x04ab, 0x04b4, 0x04b7, 0x04c2, 0x04c2, 0x04c2, 0x04cf, - 0x04e9, 0x04eb, 0x04f2, 0x0505, 0x0505, 0x050b, 0x0526, 0x052c, - 0x0539, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000d, 0x0014, + 0x001c, 0x0026, 0x0026, 0x0026, 0x002b, 0x0032, 0x0032, 0x003c, + 0x0044, 0x004a, 0x0051, 0x005b, 0x0060, 0x0066, 0x0089, 0x008f, + 0x0093, 0x009b, 0x00a0, 0x00a7, 0x00b1, 0x00ba, 0x00db, 0x00e5, + 0x00ec, 0x00ec, 0x00fd, 0x010f, 0x0124, 0x0124, 0x012c, 0x014e, + 0x0156, 0x0162, 0x0168, 0x0168, 0x016d, 0x0175, 0x017d, 0x017d, + 0x0183, 0x0186, 0x018d, 0x019e, 0x01b3, 0x01b3, 0x01bb, 0x01c3, + 0x01c3, 0x01cf, 0x01e6, 0x01f3, 0x01f8, 0x0205, 0x0205, 0x020f, + // Entry 40 - 7F + 0x0216, 0x0216, 0x021e, 0x0226, 0x0230, 0x0235, 0x0235, 0x023c, + 0x0244, 0x0244, 0x024c, 0x0251, 0x0258, 0x0270, 0x0289, 0x0290, + 0x0296, 0x029b, 0x02a4, 0x02ad, 0x02ad, 0x02ad, 0x02b3, 0x02b9, + 0x02b9, 0x02c1, 0x02ca, 0x02ca, 0x02da, 0x02da, 0x02da, 0x02e3, + 0x02ec, 0x02ec, 0x02f4, 0x02f8, 0x02f8, 0x0304, 0x0304, 0x030b, + 0x030b, 0x030b, 0x030b, 0x030b, 0x0311, 0x0311, 0x0316, 0x031e, + 0x0324, 0x0329, 0x0329, 0x0330, 0x0330, 0x0330, 0x033d, 0x0345, + 0x0358, 0x0364, 0x036b, 0x0374, 0x0384, 0x0398, 0x039e, 0x03a8, + // Entry 80 - BF + 0x03ad, 0x03b8, 0x03be, 0x03be, 0x03c8, 0x03d3, 0x03da, 0x03da, + 0x03da, 0x03da, 0x03e1, 0x03e1, 0x03ec, 0x03f8, 0x0401, 0x041f, + 0x043a, 0x0455, 0x045d, 0x045d, 0x0463, 0x046d, 0x0474, 0x0474, + 0x047c, 0x0482, 0x0489, 0x0491, 0x0498, 0x049e, 0x04a2, 0x04ab, + 0x04ab, 0x04b4, 0x04b7, 0x04c2, 0x04c2, 0x04c2, 0x04cf, 0x04e9, + 0x04eb, 0x04f2, 0x0505, 0x0505, 0x050b, 0x0526, 0x052c, 0x0539, }, }, {}, // nnh @@ -24524,7 +28082,7 @@ var scriptHeaders = [220]header{ {}, // nyn { // om "Latin", - []uint16{ // 76 elements + []uint16{ // 80 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -24536,7 +28094,7 @@ var scriptHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, }, }, { // or @@ -24559,50 +28117,50 @@ var scriptHeaders = [220]header{ "ୁଏତାମିଲ୍ତାଇ ଭିଏତ୍ତେଲୁଗୁତେଙ୍ଗୱାର୍ତିଫିଙ୍ଘାଟାଗାଲୋଗ୍ଥାନାଥାଇତିବେତାନ୍ୟୁଗ" + "ାରିଟିକ୍ୱାଇଭିଜିବଲ୍ ସ୍ପିଚ୍ପୁରୁଣା ଫରାସୀସୁମେରୋ-ଆକ୍କାଡିଆନ୍ ସୁନିଫର୍ମୟୀବଂ" + "ଶଗତଗାଣିତିକ ନୋଟେସନ୍ସିମ୍ବଲ୍ଅଲିଖିତସାଧାରଣଅଞ୍ଜାତ କିମ୍ବା ଅବୈଧ ସ୍କ୍ରୀପ୍ଟ", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, 0x007c, - 0x0094, 0x0094, 0x0094, 0x00a6, 0x00bb, 0x00df, 0x00f7, 0x010f, - 0x0121, 0x0139, 0x014b, 0x0157, 0x01cc, 0x01db, 0x01e4, 0x01f6, - 0x0205, 0x0217, 0x022f, 0x0247, 0x029b, 0x02b6, 0x02c8, 0x02c8, - 0x02ff, 0x0339, 0x0379, 0x0379, 0x038e, 0x03bc, 0x03d4, 0x03f8, - 0x040a, 0x040a, 0x041c, 0x0434, 0x044c, 0x0464, 0x0470, 0x0482, - 0x04a4, 0x04cf, 0x04cf, 0x04e7, 0x04ff, 0x04ff, 0x051b, 0x055f, - 0x0590, 0x05a2, 0x05c4, 0x05dc, 0x05f4, 0x05f4, 0x060d, 0x0622, - // Entry 40 - 7F - 0x063a, 0x064c, 0x064c, 0x065b, 0x0670, 0x0670, 0x067c, 0x0688, - 0x0691, 0x06bf, 0x06e7, 0x06f9, 0x0708, 0x071a, 0x072f, 0x074b, - 0x074b, 0x074b, 0x0760, 0x0775, 0x0775, 0x078a, 0x079c, 0x07ca, - 0x07ca, 0x07ca, 0x07e5, 0x07fa, 0x07fa, 0x0818, 0x082a, 0x082a, - 0x084c, 0x084c, 0x0861, 0x0861, 0x0861, 0x0861, 0x0871, 0x0871, - 0x0880, 0x0896, 0x08a8, 0x08b4, 0x08cf, 0x08cf, 0x08cf, 0x08ee, - 0x0904, 0x0947, 0x0975, 0x099a, 0x09b5, 0x09e3, 0x0a29, 0x0a3e, - 0x0a62, 0x0a71, 0x0a89, 0x0a9b, 0x0a9b, 0x0ab6, 0x0adb, 0x0af3, - // Entry 80 - BF - 0x0af3, 0x0af3, 0x0af3, 0x0b02, 0x0b02, 0x0b1a, 0x0b39, 0x0b51, - 0x0b8b, 0x0bb6, 0x0bde, 0x0bf6, 0x0bf6, 0x0c06, 0x0c26, 0x0c38, - 0x0c38, 0x0c51, 0x0c63, 0x0c7e, 0x0c96, 0x0cae, 0x0cba, 0x0cc3, - 0x0cdb, 0x0cdb, 0x0cf9, 0x0d02, 0x0d2a, 0x0d2a, 0x0d2a, 0x0d4c, - 0x0d96, 0x0d9c, 0x0dab, 0x0dd6, 0x0dd6, 0x0deb, 0x0dfd, 0x0e0f, - 0x0e5d, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, + 0x007c, 0x0094, 0x0094, 0x0094, 0x00a6, 0x00bb, 0x00bb, 0x00df, + 0x00f7, 0x010f, 0x0121, 0x0139, 0x014b, 0x0157, 0x01cc, 0x01db, + 0x01e4, 0x01f6, 0x0205, 0x0217, 0x022f, 0x0247, 0x029b, 0x02b6, + 0x02c8, 0x02c8, 0x02ff, 0x0339, 0x0379, 0x0379, 0x038e, 0x03bc, + 0x03d4, 0x03f8, 0x040a, 0x040a, 0x041c, 0x0434, 0x044c, 0x044c, + 0x0464, 0x0470, 0x0482, 0x04a4, 0x04cf, 0x04cf, 0x04e7, 0x04ff, + 0x04ff, 0x051b, 0x055f, 0x0590, 0x05a2, 0x05c4, 0x05c4, 0x05dc, + // Entry 40 - 7F + 0x05f4, 0x05f4, 0x060d, 0x0622, 0x063a, 0x064c, 0x064c, 0x065b, + 0x0670, 0x0670, 0x067c, 0x0688, 0x0691, 0x06bf, 0x06e7, 0x06f9, + 0x0708, 0x071a, 0x072f, 0x074b, 0x074b, 0x074b, 0x0760, 0x0775, + 0x0775, 0x078a, 0x079c, 0x079c, 0x07ca, 0x07ca, 0x07ca, 0x07e5, + 0x07fa, 0x07fa, 0x0818, 0x082a, 0x082a, 0x084c, 0x084c, 0x0861, + 0x0861, 0x0861, 0x0861, 0x0861, 0x0871, 0x0871, 0x0880, 0x0896, + 0x08a8, 0x08b4, 0x08b4, 0x08cf, 0x08cf, 0x08cf, 0x08ee, 0x0904, + 0x0947, 0x0975, 0x099a, 0x09b5, 0x09e3, 0x0a29, 0x0a3e, 0x0a62, + // Entry 80 - BF + 0x0a71, 0x0a89, 0x0a9b, 0x0a9b, 0x0ab6, 0x0adb, 0x0af3, 0x0af3, + 0x0af3, 0x0af3, 0x0b02, 0x0b02, 0x0b1a, 0x0b39, 0x0b51, 0x0b8b, + 0x0bb6, 0x0bde, 0x0bf6, 0x0bf6, 0x0c06, 0x0c26, 0x0c38, 0x0c38, + 0x0c51, 0x0c63, 0x0c7e, 0x0c96, 0x0cae, 0x0cba, 0x0cc3, 0x0cdb, + 0x0cdb, 0x0cf9, 0x0d02, 0x0d2a, 0x0d2a, 0x0d2a, 0x0d4c, 0x0d96, + 0x0d9c, 0x0dab, 0x0dd6, 0x0dd6, 0x0deb, 0x0dfd, 0x0e0f, 0x0e5d, }, }, { // os "АраббагКиррилицӕӔнцонгонд китайагТрадицион китайагЛатинагНӕфысгӕНӕзонгӕ " + "скрипт", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0041, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, + 0x0020, 0x0020, 0x0020, 0x0041, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, // Entry 40 - 7F 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, @@ -24614,8 +28172,8 @@ var scriptHeaders = [220]header{ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x007e, 0x007e, - 0x0099, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x007e, 0x007e, 0x0099, }, }, { // pa @@ -24624,13 +28182,13 @@ var scriptHeaders = [220]header{ }, { // pa-Arab "عربیگُرمُکھی", - []uint16{ // 45 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, + []uint16{ // 47 elements + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0018, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0018, }, }, { // pl @@ -24640,8 +28198,8 @@ var scriptHeaders = [220]header{ {}, // prg { // ps "عربي", - []uint16{ // 5 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, + []uint16{ // 6 elements + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, }, }, { // pt @@ -24674,32 +28232,32 @@ var scriptHeaders = [220]header{ "ticvaiialfabet visibelpersian veglscrittira a cugn sumeric-accadicay" + "iertànotaziun matematicasimbolslinguas na scrittasbetg determinàscri" + "ttira nunenconuschenta u nunvalaivla", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x0019, 0x0020, - 0x0028, 0x0028, 0x0028, 0x002d, 0x0033, 0x0043, 0x004b, 0x0051, - 0x0065, 0x006d, 0x0072, 0x0078, 0x009d, 0x00a3, 0x00a7, 0x00af, - 0x00b4, 0x00ba, 0x00c1, 0x00c9, 0x00de, 0x00e8, 0x00ef, 0x00ef, - 0x00ff, 0x010f, 0x0124, 0x0124, 0x012b, 0x0132, 0x013a, 0x0144, - 0x0149, 0x0149, 0x014d, 0x0155, 0x015d, 0x0163, 0x0166, 0x016d, - 0x018d, 0x01ac, 0x01ac, 0x01b2, 0x01ba, 0x01ba, 0x01c6, 0x01d9, - 0x01e6, 0x01eb, 0x01f6, 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217, - // Entry 40 - 7F - 0x0221, 0x0232, 0x0232, 0x0239, 0x023f, 0x023f, 0x0245, 0x024a, - 0x024e, 0x0266, 0x027f, 0x0284, 0x028a, 0x028f, 0x0297, 0x029f, - 0x029f, 0x029f, 0x02a5, 0x02aa, 0x02aa, 0x02b1, 0x02ba, 0x02c9, - 0x02c9, 0x02c9, 0x02d1, 0x02da, 0x02da, 0x02e2, 0x02e6, 0x02e6, - 0x02f2, 0x02f2, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02ff, 0x02ff, - 0x0304, 0x030c, 0x0312, 0x0317, 0x031c, 0x031c, 0x031c, 0x0327, - 0x032f, 0x0347, 0x0358, 0x036b, 0x0373, 0x0386, 0x039d, 0x03a3, - 0x03ad, 0x03b2, 0x03bb, 0x03c1, 0x03c1, 0x03cb, 0x03da, 0x03e1, - // Entry 80 - BF - 0x03e1, 0x03e1, 0x03e1, 0x03ea, 0x03ea, 0x03f3, 0x03ff, 0x0404, - 0x0414, 0x0422, 0x0432, 0x043a, 0x043a, 0x0440, 0x0447, 0x044c, - 0x044c, 0x0454, 0x045a, 0x0461, 0x0469, 0x0470, 0x0476, 0x0480, - 0x0487, 0x0487, 0x048f, 0x0493, 0x04a2, 0x04a2, 0x04a2, 0x04ae, - 0x04cf, 0x04d1, 0x04d6, 0x04e9, 0x04e9, 0x04f0, 0x0503, 0x0512, - 0x053a, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x0019, + 0x0020, 0x0028, 0x0028, 0x0028, 0x002d, 0x0033, 0x0033, 0x0043, + 0x004b, 0x0051, 0x0065, 0x006d, 0x0072, 0x0078, 0x009d, 0x00a3, + 0x00a7, 0x00af, 0x00b4, 0x00ba, 0x00c1, 0x00c9, 0x00de, 0x00e8, + 0x00ef, 0x00ef, 0x00ff, 0x010f, 0x0124, 0x0124, 0x012b, 0x0132, + 0x013a, 0x0144, 0x0149, 0x0149, 0x014d, 0x0155, 0x015d, 0x015d, + 0x0163, 0x0166, 0x016d, 0x018d, 0x01ac, 0x01ac, 0x01b2, 0x01ba, + 0x01ba, 0x01c6, 0x01d9, 0x01e6, 0x01eb, 0x01f6, 0x01f6, 0x01fe, + // Entry 40 - 7F + 0x0207, 0x0207, 0x020f, 0x0217, 0x0221, 0x0232, 0x0232, 0x0239, + 0x023f, 0x023f, 0x0245, 0x024a, 0x024e, 0x0266, 0x027f, 0x0284, + 0x028a, 0x028f, 0x0297, 0x029f, 0x029f, 0x029f, 0x02a5, 0x02aa, + 0x02aa, 0x02b1, 0x02ba, 0x02ba, 0x02c9, 0x02c9, 0x02c9, 0x02d1, + 0x02da, 0x02da, 0x02e2, 0x02e6, 0x02e6, 0x02f2, 0x02f2, 0x02f9, + 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02ff, 0x02ff, 0x0304, 0x030c, + 0x0312, 0x0317, 0x0317, 0x031c, 0x031c, 0x031c, 0x0327, 0x032f, + 0x0347, 0x0358, 0x036b, 0x0373, 0x0386, 0x039d, 0x03a3, 0x03ad, + // Entry 80 - BF + 0x03b2, 0x03bb, 0x03c1, 0x03c1, 0x03cb, 0x03da, 0x03e1, 0x03e1, + 0x03e1, 0x03e1, 0x03ea, 0x03ea, 0x03f3, 0x03ff, 0x0404, 0x0414, + 0x0422, 0x0432, 0x043a, 0x043a, 0x0440, 0x0447, 0x044c, 0x044c, + 0x0454, 0x045a, 0x0461, 0x0469, 0x0470, 0x0476, 0x0480, 0x0487, + 0x0487, 0x048f, 0x0493, 0x04a2, 0x04a2, 0x04a2, 0x04ae, 0x04cf, + 0x04d1, 0x04d6, 0x04e9, 0x04e9, 0x04f0, 0x0503, 0x0512, 0x053a, }, }, {}, // rn @@ -24707,42 +28265,44 @@ var scriptHeaders = [220]header{ roScriptStr, roScriptIdx, }, + {}, // ro-MD {}, // rof { // ru ruScriptStr, ruScriptIdx, }, + {}, // ru-UA {}, // rw {}, // rwk { // sah - "АрааптыыЭрмээннииНууччалыыКириэктииДьоппуоннууКэриэйдииЛатыынныыТаайдыыС" + - "урулла иликБиллибэт сурук", - []uint16{ // 169 elements + "АрааптыыЭрмээннииНууччалыыГириэктииДьоппуоннууКэриэйдииЛатыынныыМоҕуоллу" + + "уТаайдыыСуруллубатахБиллибэт сурук", + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0034, 0x0034, 0x0034, 0x0034, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x005c, 0x005c, 0x005c, 0x005c, - // Entry 40 - 7F - 0x005c, 0x005c, 0x005c, 0x005c, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, + // Entry 40 - 7F + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0080, 0x0080, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, // Entry 80 - BF - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x00a5, 0x00a5, - 0x00c0, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x00a0, 0x00a0, + 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, + 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00b8, 0x00b8, 0x00d3, }, }, {}, // saq @@ -24750,19 +28310,19 @@ var scriptHeaders = [220]header{ { // se "arábakyrillalašgreikkalašhangulkiinnašálkiárbevirolašhiraganakatakanaláh" + "tenašorrut chállojuvvotdovdameahttun chállin", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x001c, 0x001c, 0x001c, 0x0022, 0x002a, 0x002a, - 0x002f, 0x003c, 0x003c, 0x003c, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, + 0x0011, 0x0011, 0x0011, 0x0011, 0x001c, 0x001c, 0x001c, 0x001c, + 0x0022, 0x002a, 0x002a, 0x002f, 0x003c, 0x003c, 0x003c, 0x0044, + 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, // Entry 40 - 7F - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, + 0x0044, 0x0044, 0x0044, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, @@ -24774,22 +28334,22 @@ var scriptHeaders = [220]header{ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0069, 0x0069, - 0x007f, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0069, 0x0069, 0x007f, }, }, { // se-FI "arábalaškiinnálašálkes kiinnálašárbevirolaš kiinnálašorrut čállojuvvotdo" + "vdameahttun čállin", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0015, 0x0015, - 0x0027, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x0015, 0x0015, 0x0027, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, // Entry 40 - 7F 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, @@ -24805,8 +28365,8 @@ var scriptHeaders = [220]header{ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0053, 0x0053, - 0x0069, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0053, 0x0053, 0x0069, }, }, {}, // seh @@ -24830,7 +28390,7 @@ var scriptHeaders = [220]header{ {}, // sn { // so "Aan la qorinFar aan la aqoon amase aan saxnayn", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -24854,8 +28414,8 @@ var scriptHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, - 0x002e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x002e, }, }, { // sq @@ -24866,10 +28426,16 @@ var scriptHeaders = [220]header{ srScriptStr, srScriptIdx, }, + {}, // sr-Cyrl-BA + {}, // sr-Cyrl-ME + {}, // sr-Cyrl-XK { // sr-Latn srLatnScriptStr, srLatnScriptIdx, }, + {}, // sr-Latn-BA + {}, // sr-Latn-ME + {}, // sr-Latn-XK { // sv svScriptStr, svScriptIdx, @@ -24880,6 +28446,7 @@ var scriptHeaders = [220]header{ swScriptIdx, }, {}, // sw-CD + {}, // sw-KE { // ta taScriptStr, taScriptIdx, @@ -24895,19 +28462,19 @@ var scriptHeaders = [220]header{ }, { // ti "ፊደልላቲን", - []uint16{ // 76 elements + []uint16{ // 80 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, // Entry 40 - 7F 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0012, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0012, }, }, { // to @@ -24925,73 +28492,73 @@ var scriptHeaders = [220]header{ "-fakaʻisipitetohinima fakaʻelepasanitohinima fakaʻītiōpiatohinima fa" + "kakutusuli-seōsiatohinima fakaseōsiatohinima fakakalakolititohinima " + "fakakotikatohinima fakasilanitātohinima fakakalisitohinima fakaʻinit" + - "ia-kutalatitohinima fakakūmukitohinima fakakōlea-hāngūlutohinima fak" + - "asiainatohinima fakahanunōʻotohinima fakasiaina-fakafaingofuatohinim" + - "a fakasiaina-tukufakaholotohinima fakahepelūtohinima fakasiapani-hil" + - "akanatohinima tongitapu-fakaʻanatoliatohinima fakapahaumongitohinima" + - " fakasilapa-siapanitohinima fakahungakalia-motuʻatohinima fakaʻinitu" + - "sitohinima fakaʻītali-motuʻatohinima fakasavatohinima fakasiapanitoh" + - "inima fakaiūkenitohinima fakakaialītohinima fakasiapani-katakanatohi" + - "nima fakakalositītohinima fakakamipōtiatohinima fakakosikītohinima f" + - "akaʻinitia-kanatatohinima fakakōleatohinima fakakepeletohinima fakak" + - "aiatītohinima fakalanatohinima fakalautohinima fakalatina-falakituli" + - "tohinima fakalatina-kaelikitohinima fakalatinatohinima fakalepasātoh" + - "inima fakalimipūtohinima fakalinea-Atohinima fakalinea-Ptohinima fak" + - "afalāsetohinima fakalomatohinima fakalīsiatohinima fakalītiatohinima" + - " fakamahasanitohinima fakamanitaeatohinima fakamanikaeatohinima tong" + - "itapu fakamaiatohinima fakamēnititohinima fakameloue-heiheitohinima " + - "fakamelouetohinima fakaʻinitia-malāialamitohinima fakamotītohinima f" + - "akamongokōliatohinima laukonga ki he kui-māhinatohinima fakamolōtohi" + - "nima fakametei-maiekitohinima fakapematohinima fakaʻalepea-tokelau-m" + - "otuʻatohinima fakanapateatohinima fakanati-sepatohinima fakanikōtohi" + - "nima fakanasiūtohinima fakaʻokamitohinima fakaʻolisikitohinima fakaʻ" + - "olikonitohinima fakaʻinitia-ʻolāeatohinima fakaʻosimāniatohinima fak" + - "apalamilenetohinima fakapausinihautohinima fakapēmi-motuʻatohinima f" + - "akapākisipātohinima fakapālavi-tongitohinima fakapālavi-saametohinim" + - "a fakapālavi-tohitohinima fakafoinikiatohinima fakafonētiki-polātito" + - "hinima fakapātia-tongitohinima fakalesiangitohinima fakalongolongoto" + - "hinima fakalunikitohinima fakasamalitanetohinima fakasalatitohinima " + - "fakaʻalepea-tonga-motuʻatohinima fakasaulasitātohinima fakaʻilonga-t" + - "ohitohinima fakasiavitohinima fakasiālatātohinima fakasititamitohini" + - "ma fakakutauātitohinima fakasingihalatohinima fakasolasomipengitohin" + - "ima fakasunitātohinima fakasailoti-nakilitohinima fakasuliāiātohinim" + - "a fakasuliāiā-ʻesitelangelotohinima fakasuliāiā-hihifotohinima fakas" + - "uliāiā-hahaketohinima fakatakipaneuātohinima fakatakilitohinima faka" + - "tai-luetohinima fakatai-lue-foʻoutohinima fakatamilitohinima fakatan" + - "gutitohinima fakatai-vietitohinima fakaʻinitia-telukutohinima fakate" + - "ngiualitohinima fakatifinākitohinima fakatakalokatohinima fakatānato" + - "hinima fakatailanitohinima fakataipetitohinima fakatīhutatohinima fa" + - "kaʻūkalititohinima fakavaitohinima fakafonētiki-hāmaitohinima fakava" + - "langi-kisitītohinima fakauoleaitohinima fakapēsiamuʻatohinima fakama" + - "taʻingahau-sumelo-akatiatohinima fakaīītohinima hokositohinima fakam" + - "atematikatohinima fakaʻilongatohinima taʻetohitohiʻitohinima fakatat" + - "autohinima taʻeʻiloa", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0014, 0x0035, 0x0035, 0x004a, 0x006b, 0x0081, 0x0099, - 0x00aa, 0x00bd, 0x00d2, 0x00e6, 0x00fc, 0x0118, 0x012d, 0x0142, - 0x015d, 0x0170, 0x0183, 0x0197, 0x01c0, 0x01d1, 0x01e2, 0x01f6, - 0x020a, 0x021f, 0x0235, 0x0248, 0x0268, 0x028a, 0x029f, 0x02bb, - 0x02da, 0x02fa, 0x031a, 0x0332, 0x034a, 0x0367, 0x037b, 0x0392, - 0x03a5, 0x03bb, 0x03ce, 0x03ec, 0x0400, 0x041d, 0x0430, 0x0447, - 0x0468, 0x0488, 0x0488, 0x049c, 0x04b9, 0x04da, 0x04f1, 0x050c, - 0x052b, 0x0541, 0x055e, 0x056f, 0x0583, 0x0597, 0x05ab, 0x05c8, - // Entry 40 - 7F - 0x05de, 0x05f5, 0x0609, 0x0625, 0x0638, 0x064b, 0x065f, 0x0670, - 0x0680, 0x069e, 0x06b9, 0x06cc, 0x06e0, 0x06f4, 0x0708, 0x071c, - 0x0730, 0x0741, 0x0754, 0x0767, 0x077c, 0x0791, 0x07a6, 0x07c1, - 0x07d5, 0x07ef, 0x0802, 0x0823, 0x0835, 0x084d, 0x0870, 0x0882, - 0x089b, 0x089b, 0x08ac, 0x08d1, 0x08e5, 0x08fb, 0x090d, 0x0920, - 0x0934, 0x094a, 0x0960, 0x097e, 0x0996, 0x09ad, 0x09c4, 0x09de, - 0x09f5, 0x0a0f, 0x0a29, 0x0a42, 0x0a57, 0x0a75, 0x0a8e, 0x0aa3, - 0x0aba, 0x0acd, 0x0ae4, 0x0af7, 0x0b1a, 0x0b31, 0x0b4b, 0x0b5d, - // Entry 80 - BF - 0x0b73, 0x0b88, 0x0b9e, 0x0bb4, 0x0bce, 0x0be2, 0x0bfd, 0x0c13, - 0x0c38, 0x0c55, 0x0c72, 0x0c8a, 0x0c9d, 0x0cb1, 0x0ccc, 0x0cdf, - 0x0cf3, 0x0d09, 0x0d25, 0x0d3b, 0x0d51, 0x0d66, 0x0d78, 0x0d8c, - 0x0da0, 0x0db4, 0x0dcb, 0x0ddb, 0x0df8, 0x0e14, 0x0e27, 0x0e3f, - 0x0e67, 0x0e78, 0x0e87, 0x0e9e, 0x0e9e, 0x0eb3, 0x0ecc, 0x0ede, - 0x0ef2, + "ia-kutalatitohinima fakakūmukitohinima fakahānipitohinima fakakōlea-" + + "hāngūlutohinima fakasiainatohinima fakahanunōʻotohinima fakasiaina-f" + + "akafaingofuatohinima fakasiaina-tukufakaholotohinima fakahepelūtohin" + + "ima fakasiapani-hilakanatohinima tongitapu-fakaʻanatoliatohinima fak" + + "apahaumongitohinima fakasilapa-siapanitohinima fakahungakalia-motuʻa" + + "tohinima fakaʻinitusitohinima fakaʻītali-motuʻatohinima fakasamotohi" + + "nima fakasavatohinima fakasiapanitohinima fakaiūkenitohinima fakakai" + + "alītohinima fakasiapani-katakanatohinima fakakalositītohinima fakaka" + + "mipōtiatohinima fakakosikītohinima fakaʻinitia-kanatatohinima fakakō" + + "leatohinima fakakepeletohinima fakakaiatītohinima fakalanatohinima f" + + "akalautohinima fakalatina-falakitulitohinima fakalatina-kaelikitohin" + + "ima fakalatinatohinima fakalepasātohinima fakalimipūtohinima fakalin" + + "ea-Atohinima fakalinea-Ptohinima fakafalāsetohinima fakalomatohinima" + + " fakalīsiatohinima fakalītiatohinima fakamahasanitohinima fakamanita" + + "eatohinima fakamanikaeatohinima tongitapu fakamaiatohinima fakamēnit" + + "itohinima fakameloue-heiheitohinima fakamelouetohinima fakaʻinitia-m" + + "alāialamitohinima fakamotītohinima fakamongokōliatohinima laukonga k" + + "i he kui-māhinatohinima fakamolōtohinima fakametei-maiekitohinima fa" + + "kapematohinima fakaʻalepea-tokelau-motuʻatohinima fakanapateatohinim" + + "a fakanati-sepatohinima fakanikōtohinima fakanasiūtohinima fakaʻokam" + + "itohinima fakaʻolisikitohinima fakaʻolikonitohinima fakaʻotiatohinim" + + "a fakaʻosimāniatohinima fakapalamilenetohinima fakapausinihautohinim" + + "a fakapēmi-motuʻatohinima fakapākisipātohinima fakapālavi-tongitohin" + + "ima fakapālavi-saametohinima fakapālavi-tohitohinima fakafoinikiatoh" + + "inima fakafonētiki-polātitohinima fakapātia-tongitohinima fakalesian" + + "gitohinima fakalongolongotohinima fakalunikitohinima fakasamalitanet" + + "ohinima fakasalatitohinima fakaʻalepea-tonga-motuʻatohinima fakasaul" + + "asitātohinima fakaʻilonga-tohitohinima fakasiavitohinima fakasiālatā" + + "tohinima fakasititamitohinima fakakutauātitohinima fakasingihalatohi" + + "nima fakasolasomipengitohinima fakasunitātohinima fakasailoti-nakili" + + "tohinima fakasuliāiātohinima fakasuliāiā-ʻesitelangelotohinima fakas" + + "uliāiā-hihifotohinima fakasuliāiā-hahaketohinima fakatakipaneuātohin" + + "ima fakatakilitohinima fakatai-luetohinima fakatai-lue-foʻoutohinima" + + " fakatamilitohinima fakatangutitohinima fakatai-vietitohinima fakaʻi" + + "nitia-telukutohinima fakatengiualitohinima fakatifinākitohinima faka" + + "takalokatohinima fakatānatohinima fakatailanitohinima fakataipetitoh" + + "inima fakatīhutatohinima fakaʻūkalititohinima fakavaitohinima fakafo" + + "nētiki-hāmaitohinima fakavalangi-kisitītohinima fakauoleaitohinima f" + + "akapēsiamuʻatohinima fakamataʻingahau-sumelo-akatiatohinima fakaīīto" + + "hinima hokositohinima fakamatematikatohinima fakatātātohinima fakaʻi" + + "longatohinima taʻetohitohiʻitohinima fakatatautohinima taʻeʻiloa", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0014, 0x0035, 0x0035, 0x004a, 0x006b, 0x0081, + 0x0099, 0x00aa, 0x00bd, 0x00d2, 0x00e6, 0x00fc, 0x00fc, 0x0118, + 0x012d, 0x0142, 0x015d, 0x0170, 0x0183, 0x0197, 0x01c0, 0x01d1, + 0x01e2, 0x01f6, 0x020a, 0x021f, 0x0235, 0x0248, 0x0268, 0x028a, + 0x029f, 0x02bb, 0x02da, 0x02fa, 0x031a, 0x0332, 0x034a, 0x0367, + 0x037b, 0x0392, 0x03a5, 0x03bb, 0x03ce, 0x03ec, 0x0400, 0x0414, + 0x0431, 0x0444, 0x045b, 0x047c, 0x049c, 0x049c, 0x04b0, 0x04cd, + 0x04ee, 0x0505, 0x0520, 0x053f, 0x0555, 0x0572, 0x0583, 0x0594, + // Entry 40 - 7F + 0x05a8, 0x05bc, 0x05d0, 0x05ed, 0x0603, 0x061a, 0x062e, 0x064a, + 0x065d, 0x0670, 0x0684, 0x0695, 0x06a5, 0x06c3, 0x06de, 0x06f1, + 0x0705, 0x0719, 0x072d, 0x0741, 0x0755, 0x0766, 0x0779, 0x078c, + 0x07a1, 0x07b6, 0x07cb, 0x07cb, 0x07e6, 0x07fa, 0x0814, 0x0827, + 0x0848, 0x085a, 0x0872, 0x0895, 0x08a7, 0x08c0, 0x08c0, 0x08d1, + 0x08f6, 0x090a, 0x090a, 0x0920, 0x0932, 0x0945, 0x0959, 0x096f, + 0x0985, 0x0998, 0x0998, 0x09b0, 0x09c7, 0x09de, 0x09f8, 0x0a0f, + 0x0a29, 0x0a43, 0x0a5c, 0x0a71, 0x0a8f, 0x0aa8, 0x0abd, 0x0ad4, + // Entry 80 - BF + 0x0ae7, 0x0afe, 0x0b11, 0x0b34, 0x0b4b, 0x0b65, 0x0b77, 0x0b8d, + 0x0ba2, 0x0bb8, 0x0bce, 0x0be8, 0x0bfc, 0x0c17, 0x0c2d, 0x0c52, + 0x0c6f, 0x0c8c, 0x0ca4, 0x0cb7, 0x0ccb, 0x0ce6, 0x0cf9, 0x0d0d, + 0x0d23, 0x0d3f, 0x0d55, 0x0d6b, 0x0d80, 0x0d92, 0x0da6, 0x0dba, + 0x0dce, 0x0de5, 0x0df5, 0x0e12, 0x0e2e, 0x0e41, 0x0e59, 0x0e81, + 0x0e92, 0x0ea1, 0x0eb8, 0x0ecb, 0x0ee0, 0x0ef9, 0x0f0b, 0x0f1f, }, }, { // tr @@ -25026,32 +28593,32 @@ var scriptHeaders = [220]header{ "ۇگارىتىكچەۋايچەكۆرۈنۈشچان تاۋۇشۋاراڭ كىشىتىۋولىئايقەدىمكى پارىسچەسۇ" + "مېر-ئاككادىيان مىخ خەتيىچەئىرسىيەت ئاتالغۇماتېماتىكىلىق بەلگەبەلگەي" + "ېزىلمىغانئورتاقيوچۇن يېزىق", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x000c, 0x000c, 0x0016, 0x0036, 0x0042, 0x0050, - 0x0058, 0x0062, 0x006c, 0x0076, 0x0082, 0x009f, 0x00b6, 0x00c2, - 0x00ea, 0x00f2, 0x00fc, 0x0106, 0x0157, 0x0163, 0x0169, 0x0175, - 0x0181, 0x018d, 0x0199, 0x01a3, 0x01de, 0x01f2, 0x0200, 0x022a, - 0x0247, 0x0268, 0x028e, 0x028e, 0x02a6, 0x02c7, 0x02d9, 0x02eb, - 0x02f5, 0x0307, 0x0315, 0x0327, 0x0339, 0x0339, 0x0343, 0x0353, - 0x036a, 0x0385, 0x0385, 0x0397, 0x03a7, 0x03d7, 0x03e1, 0x041a, - 0x0437, 0x0447, 0x046a, 0x0476, 0x0484, 0x0494, 0x04a2, 0x04b2, - // Entry 40 - 7F - 0x04c4, 0x04d4, 0x04e2, 0x04f4, 0x0504, 0x0514, 0x0524, 0x0532, - 0x0540, 0x055f, 0x0578, 0x0586, 0x0594, 0x05a2, 0x05b4, 0x05c6, - 0x05d6, 0x05e2, 0x05f4, 0x0604, 0x0604, 0x0618, 0x062e, 0x0656, - 0x0664, 0x0683, 0x0693, 0x06a5, 0x06a5, 0x06b5, 0x06c1, 0x06cb, - 0x06df, 0x06df, 0x06ed, 0x0719, 0x0729, 0x0735, 0x0741, 0x074d, - 0x075b, 0x076e, 0x077e, 0x078e, 0x079e, 0x07b0, 0x07b0, 0x07cf, - 0x07dd, 0x0801, 0x0829, 0x084f, 0x085d, 0x087e, 0x08a4, 0x08b2, - 0x08c6, 0x08d4, 0x08e4, 0x08f4, 0x091e, 0x0938, 0x094f, 0x0961, - // Entry 80 - BF - 0x0971, 0x0971, 0x0983, 0x0995, 0x09aa, 0x09b8, 0x09d7, 0x09e7, - 0x0a04, 0x0a21, 0x0a3e, 0x0a52, 0x0a60, 0x0a6f, 0x0a87, 0x0a95, - 0x0aa5, 0x0acc, 0x0adc, 0x0aec, 0x0afe, 0x0b10, 0x0b1c, 0x0b2e, - 0x0b3c, 0x0b4e, 0x0b64, 0x0b6e, 0x0b8d, 0x0ba4, 0x0bb2, 0x0bcf, - 0x0bfc, 0x0c04, 0x0c23, 0x0c48, 0x0c48, 0x0c52, 0x0c66, 0x0c72, - 0x0c87, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x0016, 0x0036, 0x0042, + 0x0050, 0x0058, 0x0062, 0x006c, 0x0076, 0x0082, 0x0082, 0x009f, + 0x00b6, 0x00c2, 0x00ea, 0x00f2, 0x00fc, 0x0106, 0x0157, 0x0163, + 0x0169, 0x0175, 0x0181, 0x018d, 0x0199, 0x01a3, 0x01de, 0x01f2, + 0x0200, 0x022a, 0x0247, 0x0268, 0x028e, 0x028e, 0x02a6, 0x02c7, + 0x02d9, 0x02eb, 0x02f5, 0x0307, 0x0315, 0x0327, 0x0339, 0x0339, + 0x0339, 0x0343, 0x0353, 0x036a, 0x0385, 0x0385, 0x0397, 0x03a7, + 0x03d7, 0x03e1, 0x041a, 0x0437, 0x0447, 0x046a, 0x046a, 0x0476, + // Entry 40 - 7F + 0x0484, 0x0494, 0x04a2, 0x04b2, 0x04c4, 0x04d4, 0x04e2, 0x04f4, + 0x0504, 0x0514, 0x0524, 0x0532, 0x0540, 0x055f, 0x0578, 0x0586, + 0x0594, 0x05a2, 0x05b4, 0x05c6, 0x05d6, 0x05e2, 0x05f4, 0x0604, + 0x0604, 0x0618, 0x062e, 0x062e, 0x0656, 0x0664, 0x0683, 0x0693, + 0x06a5, 0x06a5, 0x06b5, 0x06c1, 0x06cb, 0x06df, 0x06df, 0x06ed, + 0x0719, 0x0729, 0x0729, 0x0735, 0x0741, 0x074d, 0x075b, 0x076e, + 0x077e, 0x078e, 0x078e, 0x079e, 0x07b0, 0x07b0, 0x07cf, 0x07dd, + 0x0801, 0x0829, 0x084f, 0x085d, 0x087e, 0x08a4, 0x08b2, 0x08c6, + // Entry 80 - BF + 0x08d4, 0x08e4, 0x08f4, 0x091e, 0x0938, 0x094f, 0x0961, 0x0971, + 0x0971, 0x0983, 0x0995, 0x09aa, 0x09b8, 0x09d7, 0x09e7, 0x0a04, + 0x0a21, 0x0a3e, 0x0a52, 0x0a60, 0x0a6f, 0x0a87, 0x0a95, 0x0aa5, + 0x0acc, 0x0adc, 0x0aec, 0x0afe, 0x0b10, 0x0b1c, 0x0b2e, 0x0b3c, + 0x0b4e, 0x0b64, 0x0b6e, 0x0b8d, 0x0ba4, 0x0bb2, 0x0bcf, 0x0bfc, + 0x0c04, 0x0c23, 0x0c48, 0x0c48, 0x0c52, 0x0c66, 0x0c72, 0x0c87, }, }, { // uk @@ -25069,8 +28636,8 @@ var scriptHeaders = [220]header{ }, { // uz-Arab "عربی", - []uint16{ // 5 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, + []uint16{ // 6 elements + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, }, }, { // uz-Cyrl @@ -25078,32 +28645,32 @@ var scriptHeaders = [220]header{ "ухиХангулХанСоддалаштирилганАнъанавийИбронийХираганаЯпонКатаканаХме" + "рКаннадаКорейсЛаоЛотинМалайаламМўғулчаМьянмаОрияСинхалаТамилТелугуТ" + "аанаТайТибетРамзларЁзилмаганУмумийНомаълум шрифт", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x0020, 0x0030, 0x0030, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x0048, 0x0048, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0078, 0x0088, 0x0096, 0x00a2, 0x00a8, 0x00a8, - 0x00c8, 0x00da, 0x00da, 0x00e8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0100, 0x0100, 0x0100, 0x0110, - // Entry 40 - 7F - 0x0110, 0x0118, 0x0118, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0138, 0x0138, 0x0138, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x0020, 0x0020, + 0x0030, 0x0030, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0048, 0x0048, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0088, 0x0096, 0x0096, + 0x00a2, 0x00a8, 0x00a8, 0x00c8, 0x00da, 0x00da, 0x00e8, 0x00f8, + 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, + // Entry 40 - 7F + 0x0100, 0x0100, 0x0100, 0x0110, 0x0110, 0x0118, 0x0118, 0x0126, + 0x0132, 0x0132, 0x0132, 0x0132, 0x0138, 0x0138, 0x0138, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, - 0x0142, 0x0142, 0x0142, 0x0154, 0x0154, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, - 0x016e, 0x016e, 0x016e, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, + 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, + 0x0154, 0x0154, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x016e, + 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, + 0x016e, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, // Entry 80 - BF - 0x0176, 0x0176, 0x0176, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, - 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x018e, - 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a4, 0x01aa, + 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, + 0x0176, 0x0176, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, + 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x018e, 0x018e, + 0x018e, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a4, 0x01aa, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, - 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01c2, 0x01d4, 0x01e0, - 0x01fb, + 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01c2, 0x01d4, 0x01e0, 0x01fb, }, }, {}, // vai @@ -25118,51 +28685,51 @@ var scriptHeaders = [220]header{ "ifačtTraditionellHebräišJapanišKhmerKannadaKorianišLaotišLatinišMala" + "isišBurmesišOriyaSingalesišTamilišTeluguThánaThaiSchriftlosUnkodiert" + "i Schrift", - []uint16{ // 169 elements + []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0021, 0x0021, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x0034, 0x0034, 0x003c, 0x003c, - 0x003c, 0x003c, 0x0044, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x0056, 0x0062, 0x0062, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, - // Entry 40 - 7F - 0x0073, 0x0078, 0x0078, 0x007f, 0x0088, 0x0088, 0x0088, 0x0088, - 0x008f, 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0021, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x0034, 0x0034, + 0x003c, 0x003c, 0x003c, 0x003c, 0x0044, 0x004c, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x0056, 0x0062, 0x0062, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + // Entry 40 - 7F + 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0078, 0x0078, 0x007f, + 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, - 0x0097, 0x0097, 0x0097, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, + 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a9, + 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, + 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, // Entry 80 - BF - 0x00ae, 0x00ae, 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, - 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c1, - 0x00c1, 0x00c1, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cd, 0x00d1, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, + 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c1, 0x00c1, + 0x00c1, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cd, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, - 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00db, 0x00db, - 0x00ed, + 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00db, 0x00db, 0x00ed, }, }, {}, // xog {}, // yav { // yi "אַראַבישצירילישדעוואַנאַגאַריגריכישHebrגַלחיש", - []uint16{ // 76 elements + []uint16{ // 80 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x001e, 0x001e, 0x003a, 0x003a, 0x003a, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001e, 0x001e, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, // Entry 40 - 7F 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, - 0x004a, 0x004a, 0x004a, 0x0056, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0056, }, }, {}, // yo @@ -25171,42 +28738,42 @@ var scriptHeaders = [220]header{ "阿法卡文字高加索阿爾巴尼亞文阿拉伯文皇室亞美尼亞文亞美尼亞文阿維斯陀文峇里文巴姆穆文巴薩文巴塔克文孟加拉文布列斯文注音符號婆羅米文盲人用點字布吉" + "斯文布希德文查克馬文加拿大原住民通用字符卡里亞文占文柴羅基文色斯文科普特文塞浦路斯文斯拉夫文西里爾文(古教會斯拉夫文變體)天城文德瑟" + "雷特文杜普洛伊速記古埃及世俗體古埃及僧侶體古埃及象形文字愛爾巴桑文衣索比亞文喬治亞語系(阿索他路里和努斯克胡里文)喬治亞文格拉哥里文" + - "歌德文格蘭他文字希臘文古吉拉特文古魯穆奇文韓文字漢語哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名或平假名" + - "古匈牙利文印度河流域(哈拉帕文)古意大利文爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培列文凱提文藍拿文" + - "寮國文拉丁文(尖角體活字變體)拉丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞語里底亞語曼底安" + - "文摩尼教文瑪雅象形文字門德文麥羅埃文(曲線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納巴泰文字納西格巴" + - "文西非書面語言 (N’Ko)女書文字歐甘文桑塔利文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文(碑銘體)巴列維" + - "文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古南阿拉伯文索拉什" + - "特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字變體)敘利亞文(" + - "西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納文塔加拉文塔安那" + - "文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯亞甲文楔形文字彞文繼承文字(Unicode)數學符號" + - "符號非書寫語言一般文字未知文字", - []uint16{ // 169 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, 0x0069, - 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b7, 0x00c3, - 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, 0x0126, 0x0132, - 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, 0x01a7, 0x01b9, - 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, 0x0255, 0x0264, - 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, 0x02ac, 0x02b2, 0x02be, - 0x02ca, 0x02d6, 0x02d6, 0x02e2, 0x02eb, 0x0306, 0x0315, 0x032a, - 0x0339, 0x035a, 0x0369, 0x0372, 0x0378, 0x0384, 0x0390, 0x0399, - // Entry 40 - 7F - 0x03a8, 0x03b1, 0x03c0, 0x03cc, 0x03d2, 0x03de, 0x03e7, 0x03f0, - 0x03f9, 0x041d, 0x043b, 0x0444, 0x0450, 0x0459, 0x046c, 0x047f, - 0x0488, 0x0491, 0x049d, 0x04a9, 0x04a9, 0x04b5, 0x04c1, 0x04d3, - 0x04dc, 0x04fa, 0x0506, 0x0518, 0x0518, 0x0521, 0x052d, 0x0533, - 0x0542, 0x0542, 0x054b, 0x055d, 0x056c, 0x057b, 0x0596, 0x05a2, - 0x05ab, 0x05b7, 0x05c3, 0x05cf, 0x05de, 0x05f0, 0x05f0, 0x0602, - 0x060e, 0x0629, 0x0644, 0x065c, 0x0668, 0x067a, 0x0695, 0x069e, - 0x06b3, 0x06c2, 0x06d1, 0x06dd, 0x06ef, 0x0701, 0x0713, 0x0722, - // Entry 80 - BF - 0x072e, 0x073a, 0x0743, 0x074c, 0x075e, 0x0767, 0x077c, 0x0788, - 0x07af, 0x07d3, 0x07f7, 0x0800, 0x080f, 0x0818, 0x082d, 0x0839, - 0x0842, 0x084b, 0x0857, 0x0863, 0x086f, 0x087b, 0x0887, 0x088d, - 0x0896, 0x08a2, 0x08ae, 0x08b7, 0x08c9, 0x08db, 0x08e7, 0x08f3, - 0x0911, 0x0917, 0x0930, 0x093c, 0x093c, 0x0942, 0x0951, 0x095d, - 0x0969, + "歌德文格蘭他文字希臘文古吉拉特文古魯穆奇文漢語注音韓文字漢語哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名" + + "或平假名古匈牙利文印度河流域(哈拉帕文)古意大利文韓文字母爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培" + + "列文凱提文藍拿文寮國文拉丁文(尖角體活字變體)拉丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞" + + "語里底亞語曼底安文摩尼教文瑪雅象形文字門德文麥羅埃文(曲線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納" + + "巴泰文字納西格巴文西非書面語言 (N’Ko)女書文字歐甘文桑塔利文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文" + + "(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古" + + "南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字" + + "變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納" + + "文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯亞甲文楔形文字彞文繼承文字(Unic" + + "ode)數學符號表情符號符號非書寫語言一般文字未知文字", + []uint16{ // 176 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, + 0x0069, 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x009f, 0x00ab, + 0x00b7, 0x00c3, 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, + 0x0126, 0x0132, 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, + 0x01a7, 0x01b9, 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, + 0x0255, 0x0264, 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, 0x02af, + 0x02b8, 0x02be, 0x02ca, 0x02d6, 0x02e2, 0x02e2, 0x02ee, 0x02f7, + 0x0312, 0x0321, 0x0336, 0x0345, 0x0366, 0x0375, 0x0381, 0x038a, + // Entry 40 - 7F + 0x0390, 0x039c, 0x03a8, 0x03b1, 0x03c0, 0x03c9, 0x03d8, 0x03e4, + 0x03ea, 0x03f6, 0x03ff, 0x0408, 0x0411, 0x0435, 0x0453, 0x045c, + 0x0468, 0x0471, 0x0484, 0x0497, 0x04a0, 0x04a9, 0x04b5, 0x04c1, + 0x04c1, 0x04cd, 0x04d9, 0x04d9, 0x04eb, 0x04f4, 0x0512, 0x051e, + 0x0530, 0x0530, 0x0539, 0x0545, 0x054b, 0x055a, 0x055a, 0x0563, + 0x0575, 0x0584, 0x0584, 0x0593, 0x05ae, 0x05ba, 0x05c3, 0x05cf, + 0x05db, 0x05e7, 0x05e7, 0x05f6, 0x0608, 0x0608, 0x061a, 0x0626, + 0x0641, 0x065c, 0x0674, 0x0680, 0x0692, 0x06ad, 0x06b6, 0x06cb, + // Entry 80 - BF + 0x06da, 0x06e9, 0x06f5, 0x0707, 0x0719, 0x072b, 0x073a, 0x0746, + 0x0752, 0x075b, 0x0764, 0x0776, 0x077f, 0x0794, 0x07a0, 0x07c7, + 0x07eb, 0x080f, 0x0818, 0x0827, 0x0830, 0x0845, 0x0851, 0x085a, + 0x0863, 0x086f, 0x087b, 0x0887, 0x0893, 0x089f, 0x08a5, 0x08ae, + 0x08ba, 0x08c6, 0x08cf, 0x08e1, 0x08f3, 0x08ff, 0x090b, 0x0929, + 0x092f, 0x0948, 0x0954, 0x0960, 0x0966, 0x0975, 0x0981, 0x098d, }, }, {}, // zgh @@ -25219,31 +28786,31 @@ var scriptHeaders = [220]header{ zhHantScriptIdx, }, { // zh-Hant-HK - "西里爾文梵文埃塞俄比亞文格魯吉亞文古木基文韓文字母簡體字繁體字坎納達文老撾文拉丁字母馬拉雅拉姆文奧里雅文僧伽羅文泰米爾文它拿字母藏文", - []uint16{ // 153 elements + "西里爾文梵文埃塞俄比亞文格魯吉亞文古木基文簡體字繁體字坎納達文老撾文拉丁字母馬拉雅拉姆文奧里雅文僧伽羅文泰米爾文它拿字母藏文", + []uint16{ // 160 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0024, 0x0024, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x003f, 0x004b, 0x004b, 0x004b, - 0x0054, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0024, 0x0024, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x0048, 0x0051, 0x0051, 0x0051, 0x0051, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, // Entry 40 - 7F - 0x005d, 0x005d, 0x005d, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0072, 0x0072, 0x0072, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x007e, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x0066, 0x0066, 0x0066, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, + 0x0084, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, // Entry 80 - BF - 0x009c, 0x009c, 0x009c, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c0, 0x00c0, - 0x00c6, + 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, + 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x00a8, 0x00a8, + 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b4, 0x00b4, 0x00ba, }, }, { // zu @@ -25252,1014 +28819,1050 @@ var scriptHeaders = [220]header{ }, } -var afScriptStr string = "" + // Size: 315 bytes +const afScriptStr string = "" + // Size: 372 bytes "ArabiesArmeensBengaalsBopomofoBrailleSirilliesDevanagariEtiopiesGeorgies" + - "GrieksGudjaratiGurmukhiHangulHanVereenvoudigde HanTradisionele HanHebree" + - "usHiraganaJapanneesKatakanaKhmerKannadaKoreaansLaoLatynMalabaarsMongools" + - "MianmarOriyaSinhalaTamilTeloegoeThaanaThaiTibettaansSimboleOngeskreweAlg" + - "emeenOnbekende skryfstelsel" + "GrieksGudjaratiGurmukhiHanbHangulHanVereenvoudigde HanTradisionele HanHe" + + "breeusHiraganaJapannese lettergreepskrifJamoJapanneesKatakanaKhmerKannad" + + "aKoreaansLaoLatynMalabaarsMongoolsMianmarOriyaSinhalaTamilTeloegoeThaana" + + "ThaiTibettaansWiskundige notasieEmojiSimboleOngeskreweAlgemeenOnbekende " + + "skryfstelsel" -var afScriptIdx = []uint16{ // 169 elements +var afScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x001e, 0x001e, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x002e, 0x002e, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, 0x0048, 0x0048, - 0x0048, 0x0048, 0x004e, 0x0057, 0x005f, 0x0065, 0x0068, 0x0068, - 0x007a, 0x008a, 0x008a, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00ab, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x0016, + 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e, 0x002e, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, + 0x0048, 0x0048, 0x0048, 0x0048, 0x004e, 0x0057, 0x005f, 0x0063, + 0x0069, 0x006c, 0x006c, 0x007e, 0x008e, 0x008e, 0x0096, 0x009e, + 0x009e, 0x009e, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00bc, 0x00bc, // Entry 40 - 7F - 0x00ab, 0x00b0, 0x00b0, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00c2, 0x00c2, 0x00c2, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, - 0x00df, 0x00df, 0x00df, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, + 0x00c5, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00d2, 0x00d2, 0x00d9, + 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e4, 0x00e4, 0x00e4, 0x00e9, + 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, + 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, + 0x00f2, 0x00f2, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0101, + 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, + 0x0101, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, // Entry 80 - BF - 0x00e4, 0x00e4, 0x00e4, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f0, - 0x00f0, 0x00f0, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00fe, 0x0102, - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0113, 0x011d, 0x0125, - 0x013b, -} // Size: 362 bytes - -var amScriptStr string = "" + // Size: 505 bytes - "ዓረብኛአርሜንያዊቤንጋሊቦፖሞፎብሬይልሲይሪልክደቫንጋሪኢትዮፒክጆርጂያዊግሪክጉጃራቲጉርሙኪሐንጉልሃንቀለል ያለ ሃንባህላዊ" + - " ሃንእብራይስጥሂራጋናጃፓንኛካታካናክህመርካንአዳኮሪያኛላኦላቲንማላያልምሞንጎሊያኛምያንማርኦሪያሲንሃላታሚልተሉጉታናታይቲ" + - "ቤታንምልክቶችያልተጻፈየጋራያልታወቀ ስክሪፕት" - -var amScriptIdx = []uint16{ // 169 elements + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0106, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x0112, 0x0112, + 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x0120, 0x0124, 0x012e, + 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, + 0x012e, 0x012e, 0x0140, 0x0145, 0x014c, 0x0156, 0x015e, 0x0174, +} // Size: 376 bytes + +const amScriptStr string = "" + // Size: 566 bytes + "ዓረብኛአርሜንያዊቤንጋሊቦፖሞፎብሬይልሲይሪልክደቫንጋሪኢትዮፒክጆርጂያዊግሪክጉጃራቲጉርሙኪሃንብሐንጉልሃንቀለል ያለ ሃንባ" + + "ህላዊ ሃንእብራይስጥሂራጋናካታካና ወይንም ሂራጋናጃሞጃፓንኛካታካናክህመርካንአዳኮሪያኛላኦላቲንማላያልምሞንጎሊያኛምያ" + + "ንማርኦሪያሲንሃላታሚልተሉጉታናታይቲቤታንZmthZsyeምልክቶችያልተጻፈየጋራያልታወቀ ስክሪፕት" + +var amScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x002a, 0x0036, 0x0036, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0051, 0x0051, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x006f, 0x006f, 0x007e, 0x007e, - 0x007e, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b1, 0x00b1, - 0x00c8, 0x00db, 0x00db, 0x00ed, 0x00f9, 0x00f9, 0x00f9, 0x00f9, - 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0105, 0x0105, 0x0105, 0x0111, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x002a, 0x002a, + 0x0036, 0x0036, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0051, 0x0051, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006f, 0x006f, + 0x007e, 0x007e, 0x007e, 0x007e, 0x0087, 0x0093, 0x009f, 0x00a8, + 0x00b4, 0x00ba, 0x00ba, 0x00d1, 0x00e4, 0x00e4, 0x00f6, 0x0102, + 0x0102, 0x0102, 0x0128, 0x0128, 0x0128, 0x0128, 0x012e, 0x012e, // Entry 40 - 7F - 0x0111, 0x011d, 0x011d, 0x0129, 0x0135, 0x0135, 0x0135, 0x0135, - 0x013b, 0x013b, 0x013b, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, - 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, - 0x0144, 0x0144, 0x0144, 0x0153, 0x0153, 0x0165, 0x0165, 0x0165, - 0x0165, 0x0165, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x0174, 0x0174, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, - 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, - 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, + 0x013a, 0x013a, 0x013a, 0x0146, 0x0146, 0x0152, 0x0152, 0x015e, + 0x016a, 0x016a, 0x016a, 0x016a, 0x0170, 0x0170, 0x0170, 0x0179, + 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, + 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, + 0x0188, 0x0188, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a9, + 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, + 0x01a9, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, + 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, // Entry 80 - BF - 0x017d, 0x017d, 0x017d, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0192, - 0x0192, 0x0192, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a1, 0x01a7, - 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, - 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01c2, 0x01d1, 0x01da, - 0x01f9, -} // Size: 362 bytes - -var arScriptStr string = "" + // Size: 2430 bytes + 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, + 0x01b2, 0x01b2, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, + 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01c7, 0x01c7, + 0x01c7, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d6, 0x01dc, 0x01e8, + 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, + 0x01e8, 0x01e8, 0x01ec, 0x01f0, 0x01ff, 0x020e, 0x0217, 0x0236, +} // Size: 376 bytes + +const arScriptStr string = "" + // Size: 2477 bytes "العربيةالأرمينيةالباليةالباتاكالبنغاليةرموز بليسالبوبوموفوالهندوسيةالبرا" + "يلالبجينيزالبهيديةمقاطع كندية أصلية موحدةالكاريةالتشاميةالشيروكيالسيرثا" + "لقبطيةالقبرصيةالسيريليةالسيريلية السلافية الكنسية القديمةالديفاناجاريال" + "ديسيريتالديموطيقيةالهيراطيقيةالهيروغليفيةالأثيوبيةالأبجدية الجورجية - أ" + "سومتافرلي و نسخريالجورجيةالجلاجوليتيكالقوطيةاليونانيةالتاغجراتيةالجرمخي" + - "الهانغولالهانالهانونوالهان المبسطةالهان التقليديةالعبريةالهيراجاناالباه" + - "وه همونجالكتكانا أو الهيراجاناالمجرية القديمةاندس - هارابانالإيطالية ال" + - "قديمةالجاويةاليابانيةالكياه لىالكتكاناالخاروشتىالخميريةالكاناداالكوريةا" + - "لانااللاواللاتينية - متغير فراكتراللاتينية - متغير غيلىاللاتينيةالليبتش" + - "ا - رونجالليمبوالخطية أالخطية بالليسيةالليديةالمانداينيةالمايا الهيروغل" + - "يفيةالميرويتيكالماليالامالمغوليةمونالميانمارالعربية الشمالية القديمةأنك" + - "والأوجهامالأورخونالأورياالأوسمانياالبيرميكية القديمةالفاجسباالفينيقيةال" + - "صوتيات الجماءرنجورنجوالرونيالساراتيالعربية الجنوبية القديمةالشوانيالسين" + - "هالاالسوندانيةالسيلوتي ناغريالسريانيةالسريانية الأسترنجيليةالسريانية ال" + - "غربيةالسريانية الشرقيةالتاجبانواالتاي ليالتاى لى الجديدالتاميليةالتيلجو" + - "التينجوارالتيفيناغالتغالوغيةالثعنةالتايلانديةالتبتيةالأجاريتيكيةالفايال" + - "كلام المرئيالفارسية القديمةالكتابة المسمارية الأكدية السومريةالييالمورو" + - "ثرموزغير مكتوبعامنظام كتابة غير معروف" - -var arScriptIdx = []uint16{ // 169 elements + "هانبالهانغولالهانالهانونوالهان المبسطةالهان التقليديةالعبريةالهيراجاناا" + + "لباهوه همونجأبجدية مقطعية يابانيةالمجرية القديمةاندس - هارابانالإيطالية" + + " القديمةجاموالجاويةاليابانيةالكياه لىالكتكاناالخاروشتىالخميريةالكاناداال" + + "كوريةالانااللاواللاتينية - متغير فراكتراللاتينية - متغير غيلىاللاتينيةا" + + "لليبتشا - رونجالليمبوالخطية أالخطية بالليسيةالليديةالمانداينيةالمايا ال" + + "هيروغليفيةالميرويتيكالماليالامالمغوليةمونالميانمارالعربية الشمالية القد" + + "يمةأنكوالأوجهامالأورخونالأورياالأوسمانياالبيرميكية القديمةالفاجسباالفين" + + "يقيةالصوتيات الجماءرنجورنجوالرونيالساراتيالعربية الجنوبية القديمةالشوان" + + "يالسينهالاالسوندانيةالسيلوتي ناغريالسريانيةالسريانية الأسترنجيليةالسريا" + + "نية الغربيةالسريانية الشرقيةالتاجبانواالتاي ليالتاى لى الجديدالتاميليةا" + + "لتيلجوالتينجوارالتيفيناغالتغالوغيةالثعنةالتايلانديةالتبتيةالأجاريتيكيةا" + + "لفايالكلام المرئيالفارسية القديمةالكتابة المسمارية الأكدية السومريةاليي" + + "الموروثتدوين رياضيإيموجيرموزغير مكتوبعامنظام كتابة غير معروف" + +var arScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, 0x0020, - 0x002e, 0x002e, 0x002e, 0x003c, 0x004e, 0x005f, 0x0073, 0x0085, - 0x0093, 0x00a3, 0x00b3, 0x00b3, 0x00de, 0x00ec, 0x00fc, 0x010c, - 0x0118, 0x0126, 0x0136, 0x0148, 0x0189, 0x01a1, 0x01b3, 0x01b3, - 0x01c9, 0x01df, 0x01f7, 0x01f7, 0x0209, 0x024f, 0x025f, 0x0277, - 0x0285, 0x0285, 0x0297, 0x02ad, 0x02bb, 0x02cb, 0x02d5, 0x02e5, - 0x02fe, 0x031b, 0x031b, 0x0329, 0x033d, 0x033d, 0x0356, 0x0380, - 0x039d, 0x03b6, 0x03d7, 0x03e5, 0x03f7, 0x03f7, 0x0408, 0x0418, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, + 0x0020, 0x002e, 0x002e, 0x002e, 0x003c, 0x004e, 0x004e, 0x005f, + 0x0073, 0x0085, 0x0093, 0x00a3, 0x00b3, 0x00b3, 0x00de, 0x00ec, + 0x00fc, 0x010c, 0x0118, 0x0126, 0x0136, 0x0148, 0x0189, 0x01a1, + 0x01b3, 0x01b3, 0x01c9, 0x01df, 0x01f7, 0x01f7, 0x0209, 0x024f, + 0x025f, 0x0277, 0x0285, 0x0285, 0x0297, 0x02ad, 0x02bb, 0x02c3, + 0x02d3, 0x02dd, 0x02ed, 0x0306, 0x0323, 0x0323, 0x0331, 0x0345, + 0x0345, 0x035e, 0x0386, 0x03a3, 0x03bc, 0x03dd, 0x03e5, 0x03f3, // Entry 40 - 7F - 0x042a, 0x043a, 0x043a, 0x044a, 0x0458, 0x0458, 0x0458, 0x0462, - 0x046c, 0x0498, 0x04c0, 0x04d2, 0x04ed, 0x04fb, 0x050a, 0x0519, - 0x0519, 0x0519, 0x0527, 0x0535, 0x0535, 0x054b, 0x054b, 0x0570, - 0x0570, 0x0570, 0x0584, 0x0598, 0x0598, 0x05a8, 0x05ae, 0x05ae, - 0x05ae, 0x05ae, 0x05c0, 0x05ee, 0x05ee, 0x05ee, 0x05f6, 0x05f6, - 0x0606, 0x0606, 0x0616, 0x0624, 0x0638, 0x0638, 0x0638, 0x065b, - 0x066b, 0x066b, 0x066b, 0x066b, 0x067d, 0x069a, 0x069a, 0x069a, - 0x06aa, 0x06b6, 0x06b6, 0x06c6, 0x06f4, 0x06f4, 0x06f4, 0x0702, + 0x0405, 0x0405, 0x0416, 0x0426, 0x0438, 0x0448, 0x0448, 0x0458, + 0x0466, 0x0466, 0x0466, 0x0470, 0x047a, 0x04a6, 0x04ce, 0x04e0, + 0x04fb, 0x0509, 0x0518, 0x0527, 0x0527, 0x0527, 0x0535, 0x0543, + 0x0543, 0x0559, 0x0559, 0x0559, 0x057e, 0x057e, 0x057e, 0x0592, + 0x05a6, 0x05a6, 0x05b6, 0x05bc, 0x05bc, 0x05bc, 0x05bc, 0x05ce, + 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x0604, 0x0604, 0x0614, 0x0614, + 0x0624, 0x0632, 0x0632, 0x0646, 0x0646, 0x0646, 0x0669, 0x0679, + 0x0679, 0x0679, 0x0679, 0x068b, 0x06a8, 0x06a8, 0x06a8, 0x06b8, // Entry 80 - BF - 0x0702, 0x0702, 0x0702, 0x0714, 0x0714, 0x0728, 0x0743, 0x0755, - 0x0780, 0x07a1, 0x07c2, 0x07d6, 0x07d6, 0x07e5, 0x0801, 0x0813, - 0x0813, 0x0813, 0x0821, 0x0833, 0x0845, 0x0859, 0x0865, 0x087b, - 0x0889, 0x0889, 0x08a1, 0x08ab, 0x08c4, 0x08c4, 0x08c4, 0x08e3, - 0x0924, 0x092c, 0x093a, 0x093a, 0x093a, 0x0942, 0x0953, 0x0959, - 0x097e, -} // Size: 362 bytes - -var azScriptStr string = "" + // Size: 1043 bytes + 0x06c4, 0x06c4, 0x06d4, 0x0702, 0x0702, 0x0702, 0x0710, 0x0710, + 0x0710, 0x0710, 0x0722, 0x0722, 0x0736, 0x0751, 0x0763, 0x078e, + 0x07af, 0x07d0, 0x07e4, 0x07e4, 0x07f3, 0x080f, 0x0821, 0x0821, + 0x0821, 0x082f, 0x0841, 0x0853, 0x0867, 0x0873, 0x0889, 0x0897, + 0x0897, 0x08af, 0x08b9, 0x08d2, 0x08d2, 0x08d2, 0x08f1, 0x0932, + 0x093a, 0x0948, 0x095d, 0x0969, 0x0971, 0x0982, 0x0988, 0x09ad, +} // Size: 376 bytes + +const azScriptStr string = "" + // Size: 1070 bytes "ərəbarmierməniavestanbalibatakbenqalblissymbolsbopomofobrahmibraylbuqinb" + "uhidkakmbirləşmiş kanada yerli yazısıkariyançamçirokisirtkoptikkiprkiril" + "qədimi kilsa kirilidevanaqarideseretmisir demotikmisir hiyeratikmisir hi" + - "yeroqlifefiopgürcü xutsurigürcüqlaqolitikqotikyunanqucaratqurmuxihanqılh" + - "anhanunuSadələşdirilmiş HanƏnənəvi Hanibraniiraqanapahav monqkatakana və" + - "ya hiraqanaqədimi macarhindistanqədimi italyalıcavayaponkayax likatakana" + - "xaroştikxmerkannadakoreyaktilannalaofraktur latınıgael latınılatınlepçəl" + - "imbulusianludianmandayenmaniçayenmaya hiyeroqlifimeroytikmalayalammonqol" + - "munmeytey mayekmyanmarnkooğamol çikiorxonoriyaosmanyaqədimi permikfaqs-p" + - "afliflpkitab paxlavifoenikpolard fonetikprtirecəngronqoronqoruniksamarit" + - "ansaratisaurastraişarət yazısışavyansinhalsundansiloti nəqrisiryakestran" + - "gela süryanicetaqbanvatay letəzə tay lutamiltavtteluqutengvartifinaqtaqa" + - "loqthanataytibetuqaritvaydanışma səsləriqədimi farssumer-akadyan kuneyfo" + - "rmyizmthsimvollaryazısızümumi yazınaməlum skript" - -var azScriptIdx = []uint16{ // 169 elements + "yeroqlifefiopgürcü xutsurigürcüqlaqolitikqotikyunanqucaratqurmuxihanbhan" + + "qılhanhanunuSadələşdirilmiş HanƏnənəvi Hanibraniiraqanapahav monqhecalı " + + "yapon əlifbasıqədimi macarhindistanqədimi italyalıjamocavayaponkayax lik" + + "atakanaxaroştikxmerkannadakoreyaktilannalaofraktur latınıgael latınılatı" + + "nlepçəlimbulusianludianmandayenmaniçayenmaya hiyeroqlifimeroytikmalayala" + + "mmonqolmunmeytey mayekmyanmarnkooğamol çikiorxonoriyaosmanyaqədimi permi" + + "kfaqs-pafliflpkitab paxlavifoenikpolard fonetikprtirecəngronqoronqorunik" + + "samaritansaratisaurastraişarət yazısışavyansinhalsundansiloti nəqrisirya" + + "kestrangela süryanicetaqbanvatay letəzə tay lutamiltavtteluqutengvartifi" + + "naqtaqaloqthanataytibetuqaritvaydanışma səsləriqədimi farssumer-akadyan " + + "kuneyformyiriyazi notasiyaemojisimvollaryazısızümumi yazıtanınmayan yazı" + +var azScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0011, 0x0018, - 0x001c, 0x001c, 0x001c, 0x0021, 0x0027, 0x0032, 0x003a, 0x0040, - 0x0045, 0x004a, 0x004f, 0x0053, 0x0075, 0x007c, 0x0080, 0x0087, - 0x008b, 0x0091, 0x0095, 0x009a, 0x00ae, 0x00b8, 0x00bf, 0x00bf, - 0x00cc, 0x00db, 0x00eb, 0x00eb, 0x00f0, 0x00ff, 0x0106, 0x0110, - 0x0115, 0x0115, 0x011a, 0x0121, 0x0128, 0x012f, 0x0132, 0x0138, - 0x014f, 0x015d, 0x015d, 0x0163, 0x016a, 0x016a, 0x0174, 0x018b, - 0x0198, 0x01a1, 0x01b2, 0x01b6, 0x01bb, 0x01bb, 0x01c3, 0x01cb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0011, + 0x0018, 0x001c, 0x001c, 0x001c, 0x0021, 0x0027, 0x0027, 0x0032, + 0x003a, 0x0040, 0x0045, 0x004a, 0x004f, 0x0053, 0x0075, 0x007c, + 0x0080, 0x0087, 0x008b, 0x0091, 0x0095, 0x009a, 0x00ae, 0x00b8, + 0x00bf, 0x00bf, 0x00cc, 0x00db, 0x00eb, 0x00eb, 0x00f0, 0x00ff, + 0x0106, 0x0110, 0x0115, 0x0115, 0x011a, 0x0121, 0x0128, 0x012c, + 0x0133, 0x0136, 0x013c, 0x0153, 0x0161, 0x0161, 0x0167, 0x016e, + 0x016e, 0x0178, 0x0190, 0x019d, 0x01a6, 0x01b7, 0x01bb, 0x01bf, // Entry 40 - 7F - 0x01d3, 0x01d8, 0x01d8, 0x01df, 0x01e5, 0x01e5, 0x01e8, 0x01ed, - 0x01f0, 0x0200, 0x020d, 0x0213, 0x021a, 0x021f, 0x021f, 0x021f, - 0x021f, 0x021f, 0x0225, 0x022b, 0x022b, 0x0233, 0x023d, 0x024d, - 0x024d, 0x024d, 0x0255, 0x025e, 0x025e, 0x0264, 0x0267, 0x0267, - 0x0273, 0x0273, 0x027a, 0x027a, 0x027a, 0x027a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x028f, 0x0294, 0x029b, 0x029b, 0x029b, 0x02a9, - 0x02b0, 0x02b3, 0x02b6, 0x02c3, 0x02c9, 0x02d7, 0x02db, 0x02e2, - 0x02ec, 0x02f1, 0x02fa, 0x0300, 0x0300, 0x0309, 0x031a, 0x0321, + 0x01c4, 0x01c4, 0x01cc, 0x01d4, 0x01dc, 0x01e1, 0x01e1, 0x01e8, + 0x01ee, 0x01ee, 0x01f1, 0x01f6, 0x01f9, 0x0209, 0x0216, 0x021c, + 0x0223, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x022e, 0x0234, + 0x0234, 0x023c, 0x0246, 0x0246, 0x0256, 0x0256, 0x0256, 0x025e, + 0x0267, 0x0267, 0x026d, 0x0270, 0x0270, 0x027c, 0x027c, 0x0283, + 0x0283, 0x0283, 0x0283, 0x0283, 0x0286, 0x0286, 0x028b, 0x0293, + 0x0298, 0x029d, 0x029d, 0x02a4, 0x02a4, 0x02a4, 0x02b2, 0x02b9, + 0x02bc, 0x02bf, 0x02cc, 0x02d2, 0x02e0, 0x02e4, 0x02eb, 0x02f5, // Entry 80 - BF - 0x0321, 0x0321, 0x0321, 0x0327, 0x0327, 0x032d, 0x033a, 0x0340, - 0x0355, 0x0355, 0x0355, 0x035d, 0x035d, 0x0363, 0x0370, 0x0375, - 0x0375, 0x0379, 0x037f, 0x0386, 0x038d, 0x0394, 0x0399, 0x039c, - 0x03a1, 0x03a1, 0x03a7, 0x03aa, 0x03bd, 0x03bd, 0x03bd, 0x03c9, - 0x03e0, 0x03e2, 0x03e2, 0x03e6, 0x03e6, 0x03ef, 0x03f8, 0x0404, - 0x0413, -} // Size: 362 bytes - -var bgScriptStr string = "" + // Size: 2324 bytes + 0x02fa, 0x0303, 0x0309, 0x0309, 0x0312, 0x0323, 0x032a, 0x032a, + 0x032a, 0x032a, 0x0330, 0x0330, 0x0336, 0x0343, 0x0349, 0x035e, + 0x035e, 0x035e, 0x0366, 0x0366, 0x036c, 0x0379, 0x037e, 0x037e, + 0x0382, 0x0388, 0x038f, 0x0396, 0x039d, 0x03a2, 0x03a5, 0x03aa, + 0x03aa, 0x03b0, 0x03b3, 0x03c6, 0x03c6, 0x03c6, 0x03d2, 0x03e9, + 0x03eb, 0x03eb, 0x03fa, 0x03ff, 0x0408, 0x0411, 0x041d, 0x042e, +} // Size: 376 bytes + +const bgScriptStr string = "" + // Size: 2351 bytes "арабскаАрамейскаарменскаАвестанскаБалийскиБатакскабенгалскаБлис символиб" + "опомофоБрахмиБрайловаБугинскаБухидЧакмаУнифицирани символи на канадски " + "аборигениКарийскаХамитскаЧерокиКиртКоптскаКипърскакирилицадеванагариДез" + "еретЕгипетско демотично писмоЕгипетско йератично писмоЕгипетски йерогли" + "фиетиопскаГрузинска хуцуригрузинскаГлаголическаГотическагръцкагуджарати" + - "гурмукхихангълкитайскаХанунуопростен китайскитрадиционен китайскиивритх" + - "ираганаПахау хмонгКатакана или ХираганаСтароунгарскаХарапскаДревно итал" + - "ийскаЯванскаяпонскаКая ЛикатаканаКхароштхикхмерскаканнадакорейскаКайтхи" + - "ЛанналаоскаЛатинска фрактураГалска латинскалатиницаЛепчаЛимбуЛинейна АЛ" + - "инейна БЛицийскаЛидийскаМандаринскаМанихейскаЙероглифи на МаитеМероитск" + - "амалаяламмонголскаМунМанипурибирманскаН’КоОгамическаОл ЧикиОрхоно-енисе" + - "йскаорияОсманскаДревно пермскаФагс-паПахлавскаФиникийскаПисменост Полар" + - "дРонго-ронгоРуническаСамаританскаСаратиСаураштрасинхалскаСунданскаСилот" + - "и НагриСирийскаСирийска естрангелоЗападна сирийскаИзточна сирийскаТагба" + - "нваТай ЛеНова Тай ЛетамилскателугуТагалогтаанатайскатибетскаУгаритскаВа" + - "йскаВидима речСтароперсийскаШумеро-акадски клинописЙиМатематически симв" + - "олисимволибез писменостобщанепозната писменост" - -var bgScriptIdx = []uint16{ // 169 elements + "гурмукхиханбхангълкитайскаХанунуопростен китайскитрадиционен китайскиив" + + "ритхираганаПахау хмонгяпонска сричковаСтароунгарскаХарапскаДревно итали" + + "йскаджамоЯванскаяпонскаКая ЛикатаканаКхароштхикхмерскаканнадакорейскаКа" + + "йтхиЛанналаоскаЛатинска фрактураГалска латинскалатиницаЛепчаЛимбуЛинейн" + + "а АЛинейна БЛицийскаЛидийскаМандаринскаМанихейскаЙероглифи на МаитеМеро" + + "итскамалаяламмонголскаМунМанипурибирманскаН’КоОгамическаОл ЧикиОрхоно-е" + + "нисейскаорияОсманскаДревно пермскаФагс-паПахлавскаФиникийскаПисменост П" + + "олардРонго-ронгоРуническаСамаританскаСаратиСаураштрасинхалскаСунданскаС" + + "илоти НагриСирийскаСирийска естрангелоЗападна сирийскаИзточна сирийскаТ" + + "агбанваТай ЛеНова Тай ЛетамилскателугуТагалогтаанатайскатибетскаУгаритс" + + "каВайскаВидима речСтароперсийскаШумеро-акадски клинописЙиМатематически " + + "символиемотиконисимволибез писменостобщанепозната писменост" + +var bgScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0020, 0x0030, 0x0044, - 0x0054, 0x0054, 0x0054, 0x0064, 0x0076, 0x008d, 0x009d, 0x00a9, - 0x00b9, 0x00c9, 0x00d3, 0x00dd, 0x012b, 0x013b, 0x014b, 0x0157, - 0x015f, 0x016d, 0x017d, 0x018d, 0x018d, 0x01a1, 0x01af, 0x01af, - 0x01df, 0x020f, 0x0234, 0x0234, 0x0244, 0x0263, 0x0275, 0x028d, - 0x029f, 0x029f, 0x02ab, 0x02bd, 0x02cd, 0x02d9, 0x02e9, 0x02f5, - 0x0316, 0x033d, 0x033d, 0x0347, 0x0357, 0x0357, 0x036c, 0x0394, - 0x03ae, 0x03be, 0x03dd, 0x03eb, 0x03f9, 0x03f9, 0x0404, 0x0414, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0020, 0x0030, + 0x0044, 0x0054, 0x0054, 0x0054, 0x0064, 0x0076, 0x0076, 0x008d, + 0x009d, 0x00a9, 0x00b9, 0x00c9, 0x00d3, 0x00dd, 0x012b, 0x013b, + 0x014b, 0x0157, 0x015f, 0x016d, 0x017d, 0x018d, 0x018d, 0x01a1, + 0x01af, 0x01af, 0x01df, 0x020f, 0x0234, 0x0234, 0x0244, 0x0263, + 0x0275, 0x028d, 0x029f, 0x029f, 0x02ab, 0x02bd, 0x02cd, 0x02d5, + 0x02e1, 0x02f1, 0x02fd, 0x031e, 0x0345, 0x0345, 0x034f, 0x035f, + 0x035f, 0x0374, 0x0393, 0x03ad, 0x03bd, 0x03dc, 0x03e6, 0x03f4, // Entry 40 - 7F - 0x0426, 0x0436, 0x0436, 0x0444, 0x0454, 0x0454, 0x0460, 0x046a, - 0x0476, 0x0497, 0x04b4, 0x04c4, 0x04ce, 0x04d8, 0x04e9, 0x04fa, - 0x04fa, 0x04fa, 0x050a, 0x051a, 0x051a, 0x0530, 0x0544, 0x0566, - 0x0566, 0x0566, 0x0578, 0x0588, 0x0588, 0x059a, 0x05a0, 0x05a0, - 0x05b0, 0x05b0, 0x05c2, 0x05c2, 0x05c2, 0x05c2, 0x05cb, 0x05cb, - 0x05df, 0x05ec, 0x060b, 0x0613, 0x0623, 0x0623, 0x0623, 0x063e, - 0x064b, 0x064b, 0x064b, 0x065d, 0x0671, 0x0690, 0x0690, 0x0690, - 0x06a5, 0x06b7, 0x06cf, 0x06db, 0x06db, 0x06ed, 0x06ed, 0x06ed, + 0x0402, 0x0402, 0x040d, 0x041d, 0x042f, 0x043f, 0x043f, 0x044d, + 0x045d, 0x045d, 0x0469, 0x0473, 0x047f, 0x04a0, 0x04bd, 0x04cd, + 0x04d7, 0x04e1, 0x04f2, 0x0503, 0x0503, 0x0503, 0x0513, 0x0523, + 0x0523, 0x0539, 0x054d, 0x054d, 0x056f, 0x056f, 0x056f, 0x0581, + 0x0591, 0x0591, 0x05a3, 0x05a9, 0x05a9, 0x05b9, 0x05b9, 0x05cb, + 0x05cb, 0x05cb, 0x05cb, 0x05cb, 0x05d4, 0x05d4, 0x05e8, 0x05f5, + 0x0614, 0x061c, 0x061c, 0x062c, 0x062c, 0x062c, 0x0647, 0x0654, + 0x0654, 0x0654, 0x0666, 0x067a, 0x0699, 0x0699, 0x0699, 0x06ae, // Entry 80 - BF - 0x06ed, 0x06ed, 0x06ed, 0x06ff, 0x06ff, 0x0711, 0x0728, 0x0738, - 0x075d, 0x077c, 0x079b, 0x07ab, 0x07ab, 0x07b6, 0x07ca, 0x07da, - 0x07da, 0x07da, 0x07e6, 0x07e6, 0x07e6, 0x07f4, 0x07fe, 0x080a, - 0x081a, 0x081a, 0x082c, 0x0838, 0x084b, 0x084b, 0x084b, 0x0867, - 0x0893, 0x0897, 0x0897, 0x08c0, 0x08c0, 0x08ce, 0x08e7, 0x08ef, - 0x0914, -} // Size: 362 bytes - -var bnScriptStr string = "" + // Size: 3576 bytes + 0x06c0, 0x06d8, 0x06e4, 0x06e4, 0x06f6, 0x06f6, 0x06f6, 0x06f6, + 0x06f6, 0x06f6, 0x0708, 0x0708, 0x071a, 0x0731, 0x0741, 0x0766, + 0x0785, 0x07a4, 0x07b4, 0x07b4, 0x07bf, 0x07d3, 0x07e3, 0x07e3, + 0x07e3, 0x07ef, 0x07ef, 0x07ef, 0x07fd, 0x0807, 0x0813, 0x0823, + 0x0823, 0x0835, 0x0841, 0x0854, 0x0854, 0x0854, 0x0870, 0x089c, + 0x08a0, 0x08a0, 0x08c9, 0x08db, 0x08e9, 0x0902, 0x090a, 0x092f, +} // Size: 376 bytes + +const bnScriptStr string = "" + // Size: 3617 bytes "আরবিআরমিআর্মেনীয়আভেসতানবালীয়বাটাকবাংলাব্লিসপ্রতীকবোপোমোফোব্রাহ্মীব্রেই" + "লবুগিবুহিডচাকমাসংযুক্ত কানাডিয়ান অ্যাব্রোজিনিয়ান সিলেবিক্সক্যারিয়ান" + "চ্যামচেরোকিকির্টকোপ্টিকসাইপ্রোয়েটসিরিলিকপ্রাচীন চার্চ স্লাভোনিক সিরিল" + "িকদেবনাগরিদেসেরাতমিশরীয় ডেমোটিকমিশরীয় হায়রেটিকমিশরীয় হায়ারোগ্লিপই" + - "থিওপিয়জর্জিয় খুৎসুরিজর্জিয়ানগ্লাগোলিটিকগোথিকগ্রিকগুজরাটিগুরুমুখিহাঙ" + - "্গুলহ্যানহ্যানুনুসরলিকৃত হ্যানঐতিহ্যবাহী হ্যানহিব্রুহিরাগানাফাহাও মঙকা" + - "টাকানা অথবা হিরাগানাপুরোনো হাঙ্গেরীয়সিন্ধুপ্রাচীন ইতালিজাভানিজজাপানীক" + - "ায়াহ লিকাটাকানাখরোষ্ঠীখমেরকানাড়াকোরিয়ানকাইথিলান্নালাওফ্রাক্টুর ল্যা" + - "টিনগ্যালিক ল্যাটিনল্যাটিনলেপ্চালিম্বুলিনিয়ার এলিনিয়ার বিলাইসিয়ানলাই" + - "ডিয়ানম্যান্ডায়ীনম্যানিচাইনমায়ান হায়ারোগ্লিপমেরোইটিকমালায়ালামমোঙ্গ" + - "োলীয়মুনমেইটেই মায়েকমায়ানমারএনকোওঘামওল চিকিঅর্খোনওড়িয়াওসমানিয়প্রা" + - "চীন পার্মিকফাগ্স-পাখদিত পাহলভিসল্টার পাহলভিপুস্তক পাহলভিফিনিশিয়পোলার্" + - "ড ধ্বনিকপার্থিয়নরেজ্যাঙ্গরোঙ্গোরোঙ্গোরুনিকসমেরিটনসারাতিসৌরাষ্ট্রচিহ্ন" + - " লিখনসাভিয়ানসিংহলিসান্দানিজসিলেটি নাগরিসিরিয়াকএস্ট্রেঙ্গেলো সিরিয়াকপশ" + - "্চিমাঞ্চলীয় সিরিয়াকপূর্বাঞ্চলীয় সিরিয়াকটাগোওয়ানাতাইলেনতুন তাই লুত" + - "ামিলতাই ভিয়েৎতেলেগুতেঙ্গোয়ারতিফিনাগটাগালগথানাথাইতিব্বতিউগারিটিকভাইদৃ" + - "শ্যমান ভাষাপ্রাচীন ফার্সিসুমের-আক্কাদীয় কীলকরূপউইকাইগানিতিক চিহ্নপ্রত" + - "ীকসমুহঅলিখিতসাধারনঅজানা লিপি" - -var bnScriptIdx = []uint16{ // 169 elements + "থিওপিয়জর্জিয় খুৎসুরিজর্জিয়ানগ্লাগোলিটিকগোথিকগ্রিকগুজরাটিগুরুমুখিহ্য" + + "ানবিহাঙ্গুলহ্যানহ্যানুনুসরলিকৃত হ্যানঐতিহ্যবাহী হ্যানহিব্রুহিরাগানাফাহ" + + "াও মঙজাপানি অক্ষরমালাপুরোনো হাঙ্গেরীয়সিন্ধুপ্রাচীন ইতালিজ্যামোজাভানিজ" + + "জাপানীকায়াহ লিকাটাকানাখরোষ্ঠীখেমেরকানাড়াকোরিয়ানকাইথিলান্নালাওফ্রাক্" + + "টুর ল্যাটিনগ্যালিক ল্যাটিনল্যাটিনলেপ্চালিম্বুলিনিয়ার এলিনিয়ার বিলাইস" + + "িয়ানলাইডিয়ানম্যান্ডায়ীনম্যানিচাইনমায়ান হায়ারোগ্লিপমেরোইটিকমালায়া" + + "লামমোঙ্গোলীয়মুনমেইটেই মায়েকমায়ানমারএনকোওঘামওল চিকিঅর্খোনওড়িয়াওসমা" + + "নিয়প্রাচীন পার্মিকফাগ্স-পাখদিত পাহলভিসল্টার পাহলভিপুস্তক পাহলভিফিনিশি" + + "য়পোলার্ড ধ্বনিকপার্থিয়নরেজ্যাঙ্গরোঙ্গোরোঙ্গোরুনিকসমেরিটনসারাতিসৌরাষ্" + + "ট্রচিহ্ন লিখনসাভিয়ানসিংহলিসান্দানিজসিলেটি নাগরিসিরিয়াকএস্ট্রেঙ্গেলো " + + "সিরিয়াকপশ্চিমাঞ্চলীয় সিরিয়াকপূর্বাঞ্চলীয় সিরিয়াকটাগোওয়ানাতাইলেনত" + + "ুন তাই লুতামিলতাই ভিয়েৎতেলেগুতেঙ্গোয়ারতিফিনাগটাগালগথানাথাইতিব্বতিউগা" + + "রিটিকভাইদৃশ্যমান ভাষাপ্রাচীন ফার্সিসুমের-আক্কাদীয় কীলকরূপউইকাইগানিতিক" + + " চিহ্নইমোজিপ্রতিকগুলিঅলিখিতসাধারনঅজানা লিপি" + +var bnScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0018, 0x0033, 0x0048, - 0x005a, 0x005a, 0x005a, 0x0069, 0x0078, 0x0099, 0x00b1, 0x00c9, - 0x00db, 0x00e7, 0x00f6, 0x0105, 0x0186, 0x01a4, 0x01b3, 0x01c5, - 0x01d4, 0x01e9, 0x020a, 0x021f, 0x0276, 0x028e, 0x02a3, 0x02a3, - 0x02ce, 0x02ff, 0x0339, 0x0339, 0x0351, 0x037c, 0x0397, 0x03b8, - 0x03c7, 0x03c7, 0x03d6, 0x03eb, 0x0403, 0x0418, 0x0427, 0x043f, - 0x0464, 0x0492, 0x0492, 0x04a4, 0x04bc, 0x04bc, 0x04d2, 0x0510, - 0x0541, 0x0553, 0x0578, 0x058d, 0x059f, 0x059f, 0x05b8, 0x05d0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0018, 0x0033, + 0x0048, 0x005a, 0x005a, 0x005a, 0x0069, 0x0078, 0x0078, 0x0099, + 0x00b1, 0x00c9, 0x00db, 0x00e7, 0x00f6, 0x0105, 0x0186, 0x01a4, + 0x01b3, 0x01c5, 0x01d4, 0x01e9, 0x020a, 0x021f, 0x0276, 0x028e, + 0x02a3, 0x02a3, 0x02ce, 0x02ff, 0x0339, 0x0339, 0x0351, 0x037c, + 0x0397, 0x03b8, 0x03c7, 0x03c7, 0x03d6, 0x03eb, 0x0403, 0x0418, + 0x042d, 0x043c, 0x0454, 0x0479, 0x04a7, 0x04a7, 0x04b9, 0x04d1, + 0x04d1, 0x04e7, 0x0515, 0x0546, 0x0558, 0x057d, 0x058f, 0x05a4, // Entry 40 - 7F - 0x05e5, 0x05f1, 0x05f1, 0x0606, 0x061e, 0x061e, 0x062d, 0x063f, - 0x0648, 0x0679, 0x06a4, 0x06b9, 0x06cb, 0x06dd, 0x06f9, 0x0718, - 0x0718, 0x0718, 0x0733, 0x074e, 0x074e, 0x0772, 0x0790, 0x07c7, - 0x07c7, 0x07c7, 0x07df, 0x07fd, 0x07fd, 0x081b, 0x0824, 0x0824, - 0x0849, 0x0849, 0x0864, 0x0864, 0x0864, 0x0864, 0x0870, 0x0870, - 0x087c, 0x088f, 0x08a1, 0x08b6, 0x08ce, 0x08ce, 0x08ce, 0x08f9, - 0x090f, 0x092e, 0x0953, 0x0978, 0x0990, 0x09b8, 0x09d3, 0x09ee, - 0x0a12, 0x0a21, 0x0a36, 0x0a48, 0x0a48, 0x0a63, 0x0a7f, 0x0a97, + 0x05b6, 0x05b6, 0x05cf, 0x05e7, 0x05fc, 0x060b, 0x060b, 0x0620, + 0x0638, 0x0638, 0x0647, 0x0659, 0x0662, 0x0693, 0x06be, 0x06d3, + 0x06e5, 0x06f7, 0x0713, 0x0732, 0x0732, 0x0732, 0x074d, 0x0768, + 0x0768, 0x078c, 0x07aa, 0x07aa, 0x07e1, 0x07e1, 0x07e1, 0x07f9, + 0x0817, 0x0817, 0x0835, 0x083e, 0x083e, 0x0863, 0x0863, 0x087e, + 0x087e, 0x087e, 0x087e, 0x087e, 0x088a, 0x088a, 0x0896, 0x08a9, + 0x08bb, 0x08d0, 0x08d0, 0x08e8, 0x08e8, 0x08e8, 0x0913, 0x0929, + 0x0948, 0x096d, 0x0992, 0x09aa, 0x09d2, 0x09ed, 0x0a08, 0x0a2c, // Entry 80 - BF - 0x0a97, 0x0a97, 0x0a97, 0x0aa9, 0x0aa9, 0x0ac4, 0x0ae6, 0x0afe, - 0x0b3e, 0x0b81, 0x0bc1, 0x0bdf, 0x0bdf, 0x0bee, 0x0c0b, 0x0c1a, - 0x0c1a, 0x0c36, 0x0c48, 0x0c66, 0x0c7b, 0x0c8d, 0x0c99, 0x0ca2, - 0x0cb7, 0x0cb7, 0x0ccf, 0x0cd8, 0x0cfd, 0x0cfd, 0x0cfd, 0x0d25, - 0x0d66, 0x0d6c, 0x0d75, 0x0d9a, 0x0d9a, 0x0db8, 0x0dca, 0x0ddc, - 0x0df8, -} // Size: 362 bytes - -var caScriptStr string = "" + // Size: 1535 bytes - "afakaàrabarameu imperialarmeniavèsticbalinèsbamumbassa vahbatakbengalísí" + - "mbols Blissbopomofobrahmibraillebuginèsbuhidchakmasíl·labes dels aboríge" + - "ns canadencs unificatscariàchamcherokeecirthcoptexipriotaciríl·licciríl·" + - "lic de l’antic eslau eclesiàsticdevanagarideserettaquigrafia Duployédemò" + - "tic egipcihieràtic egipcijeroglífic egipcietiòpicgeorgià hucurigeorgiàgl" + - "agolíticgòticgranthagrecgujaratigurmukhihangulhanhanunoohan simplificath" + - "an tradicionalhebreuhiraganajeroglífic anatolipahawh hmongkatakana o hir" + - "aganahongarès anticescriptura de la vall de l’Induscursiva antigajavanès" + - "japonèsjürchenkayah likatakanakharosthikhmerkhojakannadacoreàkpellekaith" + - "ilannalaollatí frakturllatí gaèlicllatílepchalimbulineal Alineal Blisulo" + - "malicilidimandaicmaniqueujeroglífics maiesmendecursiva meroíticameroític" + - "malaiàlammongolmoonmromanipuríbirmàantic nord-aràbicnabateugeban’Konü sh" + - "uoghamsantaliorkhonoriyaosmanyapalmirèantic pèrmicphagspapahlavi inscrip" + - "cionalpsalter pahlavipahlavifenicipollard miaoparthià inscripcionalrejan" + - "grongo-rongorúnicsamaritàsaratisud-aràbic anticsaurashtraescriptura de s" + - "ignesshaviàshradadevangarisingalèssora sompengsundanèssyloti nagrisiríac" + - "siríac estrangelosiríac occidentalsiríac orientaltagbanwatakritai lenou " + - "tai luetàmiltanguttai viettelugutengwartifinaghtagàlogthaanatailandèstib" + - "etàtirhutugaríticvaillenguatge visiblevarang kshitiwoleaipersa anticcune" + - "ïforme sumeri-accadiyiheretatnotació matemàticasímbolssense escripturac" + - "omúescriptura desconeguda" - -var caScriptIdx = []uint16{ // 169 elements + 0x0a3b, 0x0a50, 0x0a62, 0x0a62, 0x0a7d, 0x0a99, 0x0ab1, 0x0ab1, + 0x0ab1, 0x0ab1, 0x0ac3, 0x0ac3, 0x0ade, 0x0b00, 0x0b18, 0x0b58, + 0x0b9b, 0x0bdb, 0x0bf9, 0x0bf9, 0x0c08, 0x0c25, 0x0c34, 0x0c34, + 0x0c50, 0x0c62, 0x0c80, 0x0c95, 0x0ca7, 0x0cb3, 0x0cbc, 0x0cd1, + 0x0cd1, 0x0ce9, 0x0cf2, 0x0d17, 0x0d17, 0x0d17, 0x0d3f, 0x0d80, + 0x0d86, 0x0d8f, 0x0db4, 0x0dc3, 0x0de1, 0x0df3, 0x0e05, 0x0e21, +} // Size: 376 bytes + +const caScriptStr string = "" + // Size: 1638 bytes + "adlamafakaalbanès caucàsicahomàrabarameu imperialarmeniavèsticbalinèsbam" + + "umbassa vahbatakbengalíbhaiksukisímbols Blissbopomofobrahmibraillebuginè" + + "sbuhidchakmasíl·labes dels aborígens canadencs unificatscariàchamcheroke" + + "ecirthcoptexipriotaciríl·licciríl·lic de l’antic eslau eclesiàsticdevana" + + "garideserettaquigrafia Duployédemòtic egipcihieràtic egipcijeroglífic eg" + + "ipcielbasanetiòpicgeorgià hucurigeorgiàglagolíticgòticgranthagrecgujarat" + + "igurmukhihanbhangulhanhanunoohan simplificathan tradicionalhebreuhiragan" + + "ajeroglífic anatolipahawh hmongkatakana o hiraganahongarès anticescriptu" + + "ra de la vall de l’Induscursiva antigajamojavanèsjaponèsjürchenkayah lik" + + "atakanakharosthikhmerkhojakannadacoreàkpellekaithilannalaollatí frakturl" + + "latí gaèlicllatílepchalimbulineal Alineal Blisulomalicilidimahajanimanda" + + "icmaniqueujeroglífics maiesmendecursiva meroíticameroíticmalaiàlammodimo" + + "ngolmoonmromanipurímultanibirmàantic nord-aràbicnabateunewargeban’Konü s" + + "huoghamsantaliorkhonoriyaosageosmanyapalmirèPau Cin Hauantic pèrmicphags" + + "papahlavi inscripcionalpsalter pahlavipahlavifenicipollard miaoparthià i" + + "nscripcionalrejangrongo-rongorúnicsamaritàsaratisud-aràbic anticsaurasht" + + "raescriptura de signesshaviàshradasiddhamdevangarisingalèssora sompengsu" + + "ndanèssyloti nagrisiríacsiríac estrangelosiríac occidentalsiríac orienta" + + "ltagbanwatakritai lenou tai luetàmiltanguttai viettelugutengwartifinaght" + + "agàlogthaanatailandèstibetàtirhutugaríticvaillenguatge visiblevarang ksh" + + "itiwoleaipersa anticcuneïforme sumeri-accadiyiheretatnotació matemàticae" + + "mojisímbolssense escripturacomúescriptura desconeguda" + +var caScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x0019, 0x001f, 0x0027, - 0x002f, 0x0034, 0x003d, 0x0042, 0x004a, 0x0058, 0x0060, 0x0066, - 0x006d, 0x0075, 0x007a, 0x0080, 0x00af, 0x00b5, 0x00b9, 0x00c1, - 0x00c6, 0x00cb, 0x00d3, 0x00de, 0x0109, 0x0113, 0x011a, 0x012e, - 0x013d, 0x014d, 0x015f, 0x015f, 0x0167, 0x0176, 0x017e, 0x0189, - 0x018f, 0x0196, 0x019a, 0x01a2, 0x01aa, 0x01b0, 0x01b3, 0x01ba, - 0x01c9, 0x01d8, 0x01d8, 0x01de, 0x01e6, 0x01f9, 0x0205, 0x0218, - 0x0227, 0x0249, 0x0257, 0x025f, 0x0267, 0x026f, 0x0277, 0x027f, + 0x0000, 0x0005, 0x000a, 0x001c, 0x0020, 0x0025, 0x0034, 0x003a, + 0x0042, 0x004a, 0x004f, 0x0058, 0x005d, 0x0065, 0x006e, 0x007c, + 0x0084, 0x008a, 0x0091, 0x0099, 0x009e, 0x00a4, 0x00d3, 0x00d9, + 0x00dd, 0x00e5, 0x00ea, 0x00ef, 0x00f7, 0x0102, 0x012d, 0x0137, + 0x013e, 0x0152, 0x0161, 0x0171, 0x0183, 0x018a, 0x0192, 0x01a1, + 0x01a9, 0x01b4, 0x01ba, 0x01c1, 0x01c5, 0x01cd, 0x01d5, 0x01d9, + 0x01df, 0x01e2, 0x01e9, 0x01f8, 0x0207, 0x0207, 0x020d, 0x0215, + 0x0228, 0x0234, 0x0247, 0x0256, 0x0278, 0x0286, 0x028a, 0x0292, // Entry 40 - 7F - 0x0288, 0x028d, 0x0292, 0x0299, 0x029f, 0x02a5, 0x02ab, 0x02b0, - 0x02b3, 0x02c1, 0x02cf, 0x02d5, 0x02db, 0x02e0, 0x02e8, 0x02f0, - 0x02f4, 0x02f8, 0x02fc, 0x0300, 0x0300, 0x0307, 0x030f, 0x0321, - 0x0326, 0x0338, 0x0341, 0x034b, 0x034b, 0x0351, 0x0355, 0x0358, - 0x0361, 0x0361, 0x0367, 0x0379, 0x0380, 0x0384, 0x038a, 0x0391, - 0x0396, 0x039d, 0x03a3, 0x03a8, 0x03af, 0x03b7, 0x03b7, 0x03c4, - 0x03cb, 0x03e0, 0x03ef, 0x03f6, 0x03fc, 0x0408, 0x041e, 0x0424, - 0x042f, 0x0435, 0x043e, 0x0444, 0x0455, 0x045f, 0x0473, 0x047a, + 0x029a, 0x02a2, 0x02aa, 0x02b2, 0x02bb, 0x02c0, 0x02c5, 0x02cc, + 0x02d2, 0x02d8, 0x02de, 0x02e3, 0x02e6, 0x02f4, 0x0302, 0x0308, + 0x030e, 0x0313, 0x031b, 0x0323, 0x0327, 0x032b, 0x032f, 0x0333, + 0x033b, 0x0342, 0x034a, 0x034a, 0x035c, 0x0361, 0x0373, 0x037c, + 0x0386, 0x038a, 0x0390, 0x0394, 0x0397, 0x03a0, 0x03a7, 0x03ad, + 0x03bf, 0x03c6, 0x03cb, 0x03cf, 0x03d5, 0x03dc, 0x03e1, 0x03e8, + 0x03ee, 0x03f3, 0x03f8, 0x03ff, 0x0407, 0x0412, 0x041f, 0x0426, + 0x043b, 0x044a, 0x0451, 0x0457, 0x0463, 0x0479, 0x047f, 0x048a, // Entry 80 - BF - 0x0480, 0x0480, 0x0489, 0x0492, 0x049e, 0x04a7, 0x04b3, 0x04ba, - 0x04cc, 0x04de, 0x04ee, 0x04f6, 0x04fb, 0x0501, 0x050c, 0x0512, - 0x0518, 0x0520, 0x0526, 0x052d, 0x0535, 0x053d, 0x0543, 0x054d, - 0x0554, 0x055a, 0x0563, 0x0566, 0x0578, 0x0585, 0x058b, 0x0596, - 0x05af, 0x05b1, 0x05b8, 0x05cc, 0x05cc, 0x05d4, 0x05e4, 0x05e9, - 0x05ff, -} // Size: 362 bytes - -var csScriptStr string = "" + // Size: 1891 bytes + 0x0490, 0x0499, 0x049f, 0x04b0, 0x04ba, 0x04ce, 0x04d5, 0x04db, + 0x04e2, 0x04eb, 0x04f4, 0x0500, 0x0509, 0x0515, 0x051c, 0x052e, + 0x0540, 0x0550, 0x0558, 0x055d, 0x0563, 0x056e, 0x0574, 0x057a, + 0x0582, 0x0588, 0x058f, 0x0597, 0x059f, 0x05a5, 0x05af, 0x05b6, + 0x05bc, 0x05c5, 0x05c8, 0x05da, 0x05e7, 0x05ed, 0x05f8, 0x0611, + 0x0613, 0x061a, 0x062e, 0x0633, 0x063b, 0x064b, 0x0650, 0x0666, +} // Size: 376 bytes + +const csScriptStr string = "" + // Size: 1906 bytes "afakakavkazskoalbánskéarabskéaramejské (imperiální)arménskéavestánskébal" + "ijskébamumskébassa vahbatackébengálskéBlissovo písmobopomofobráhmíBraill" + "ovo písmobuginskébuhidskéčakmaslabičné písmo kanadských domorodcůkarijsk" + "éčamčerokíkirtkoptskékyperskécyrilicecyrilce - staroslověnskádévanágárí" + "deseretDuployého těsnopisegyptské démotickéegyptské hieratickéegyptské h" + "ieroglyfyelbasanskéetiopskégruzínské chutsurigruzínskéhlaholicegotickégr" + - "anthařeckégudžarátígurmukhihangulhanhanunóohan (zjednodušené)han (tradič" + - "ní)hebrejskéhiraganaanatolské hieroglyfyhmongskéjaponské slabičnéstaroma" + - "ďarskéharappskéetruskéjavánskéjaponskédžürčenskékayah likatakanakháróšt" + - "híkhmerskéchodžikikannadskékorejskékpellekaithilannalaoskélatinka - lome" + - "nálatinka - galskálatinkalepčskélimbulineární Alineární BFraserovolomalý" + - "kijskélýdskémahádžanímandejskémanichejskémayské hieroglyfymendskémeroiti" + - "cké psacímeroitickémalajlámskémodímongolskéMoonovomromejtej majek (manip" + - "urské)myanmarskéstaroseveroarabskénabatejskénaxi geban’konü-šuogamskésan" + - "tálské (ol chiki)orchonskéurijskéosmansképalmýrsképau cin haustaropermsk" + - "éphags-papahlavské klínovépahlavské žalmovépahlavské knižnífénickéPolla" + - "rdova fonetická abecedaparthské klínovéredžanskérongorongorunovésamařské" + - "saratistarojihoarabskésaurášterskéSignWritingShawova abecedašáradásiddha" + - "mchudábádísinhálskésora sompengsundskésylhetskésyrskésyrské - estrangelo" + - "syrské - západnísyrské - východnítagbanwatakrítai letai lü novétamilskét" + - "anguttai viettelugskétengwarberberskétagalskéthaanathajskétibetskétirhut" + - "augaritské klínovévaividitelná řečvarang kšitikarolínské (woleai)starope" + - "rské klínové písmosumero-akkadské klínové písmoyimatematický zápissymbol" + - "ybez zápisuobecnéneznámé písmo" - -var csScriptIdx = []uint16{ // 169 elements + "anthařeckégudžarátígurmukhihanbhangulhanhanunóohan (zjednodušené)han (tr" + + "adiční)hebrejskéhiraganaanatolské hieroglyfyhmongskéjaponské slabičnésta" + + "romaďarskéharappskéetruskéjamojavánskéjaponskédžürčenskékayah likatakana" + + "kháróšthíkhmerskéchodžikikannadskékorejskékpellekaithilannalaoskélatinka" + + " - lomenálatinka - galskálatinkalepčskélimbulineární Alineární BFraserov" + + "olomalýkijskélýdskémahádžanímandejskémanichejskémayské hieroglyfymendské" + + "meroitické psacímeroitickémalajlámskémodímongolskéMoonovomromejtej majek" + + " (manipurské)myanmarskéstaroseveroarabskénabatejskénaxi geban’konü-šuoga" + + "mskésantálské (ol chiki)orchonskéurijskéosmansképalmýrsképau cin haustar" + + "opermsképhags-papahlavské klínovépahlavské žalmovépahlavské knižnífénick" + + "éPollardova fonetická abecedaparthské klínovéredžanskérongorongorunovés" + + "amařskésaratistarojihoarabskésaurášterskéSignWritingShawova abecedašárad" + + "ásiddhamchudábádísinhálskésora sompengsundskésylhetskésyrskésyrské - es" + + "trangelosyrské - západnísyrské - východnítagbanwatakrítai letai lü novét" + + "amilskétanguttai viettelugskétengwarberberskétagalskéthaanathajskétibets" + + "kétirhutaugaritské klínovévaividitelná řečvarang kšitikarolínské (woleai" + + ")staroperské klínové písmosumero-akkadské klínové písmoyimatematický záp" + + "isemodžisymbolybez zápisuobecnéneznámé písmo" + +var csScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0018, 0x0018, 0x0020, 0x0039, 0x0043, 0x004f, - 0x0058, 0x0061, 0x006a, 0x0072, 0x007d, 0x008c, 0x0094, 0x009c, - 0x00ac, 0x00b5, 0x00be, 0x00c4, 0x00ec, 0x00f5, 0x00f9, 0x0101, - 0x0105, 0x010d, 0x0116, 0x011e, 0x0138, 0x0146, 0x014d, 0x0161, - 0x0176, 0x018b, 0x019f, 0x01aa, 0x01b3, 0x01c7, 0x01d2, 0x01db, - 0x01e3, 0x01ea, 0x01f1, 0x01fd, 0x0205, 0x020b, 0x020e, 0x0216, - 0x022a, 0x023a, 0x023a, 0x0244, 0x024c, 0x0261, 0x026a, 0x027e, - 0x028d, 0x0297, 0x029f, 0x02a9, 0x02b2, 0x02c0, 0x02c8, 0x02d0, + 0x0000, 0x0000, 0x0005, 0x0018, 0x0018, 0x0020, 0x0039, 0x0043, + 0x004f, 0x0058, 0x0061, 0x006a, 0x0072, 0x007d, 0x007d, 0x008c, + 0x0094, 0x009c, 0x00ac, 0x00b5, 0x00be, 0x00c4, 0x00ec, 0x00f5, + 0x00f9, 0x0101, 0x0105, 0x010d, 0x0116, 0x011e, 0x0138, 0x0146, + 0x014d, 0x0161, 0x0176, 0x018b, 0x019f, 0x01aa, 0x01b3, 0x01c7, + 0x01d2, 0x01db, 0x01e3, 0x01ea, 0x01f1, 0x01fd, 0x0205, 0x0209, + 0x020f, 0x0212, 0x021a, 0x022e, 0x023e, 0x023e, 0x0248, 0x0250, + 0x0265, 0x026e, 0x0282, 0x0291, 0x029b, 0x02a3, 0x02a7, 0x02b1, // Entry 40 - 7F - 0x02dd, 0x02e6, 0x02ef, 0x02f9, 0x0302, 0x0308, 0x030e, 0x0313, - 0x031a, 0x032b, 0x033c, 0x0343, 0x034c, 0x0351, 0x035d, 0x0369, - 0x0372, 0x0376, 0x0380, 0x0388, 0x0394, 0x039e, 0x03aa, 0x03bc, - 0x03c4, 0x03d6, 0x03e1, 0x03ee, 0x03f3, 0x03fd, 0x0404, 0x0407, - 0x0421, 0x0421, 0x042c, 0x043f, 0x044a, 0x0453, 0x0459, 0x0460, - 0x0468, 0x047e, 0x0488, 0x0490, 0x0499, 0x04a4, 0x04af, 0x04bc, - 0x04c4, 0x04d8, 0x04ec, 0x04ff, 0x0508, 0x0525, 0x0538, 0x0543, - 0x054d, 0x0554, 0x055e, 0x0564, 0x0575, 0x0584, 0x058f, 0x059e, + 0x02ba, 0x02c8, 0x02d0, 0x02d8, 0x02e5, 0x02ee, 0x02f7, 0x0301, + 0x030a, 0x0310, 0x0316, 0x031b, 0x0322, 0x0333, 0x0344, 0x034b, + 0x0354, 0x0359, 0x0365, 0x0371, 0x037a, 0x037e, 0x0388, 0x0390, + 0x039c, 0x03a6, 0x03b2, 0x03b2, 0x03c4, 0x03cc, 0x03de, 0x03e9, + 0x03f6, 0x03fb, 0x0405, 0x040c, 0x040f, 0x0429, 0x0429, 0x0434, + 0x0447, 0x0452, 0x0452, 0x045b, 0x0461, 0x0468, 0x0470, 0x0486, + 0x0490, 0x0498, 0x0498, 0x04a1, 0x04ac, 0x04b7, 0x04c4, 0x04cc, + 0x04e0, 0x04f4, 0x0507, 0x0510, 0x052d, 0x0540, 0x054b, 0x0555, // Entry 80 - BF - 0x05a7, 0x05ae, 0x05ba, 0x05c5, 0x05d1, 0x05d9, 0x05e3, 0x05ea, - 0x05fe, 0x0611, 0x0625, 0x062d, 0x0633, 0x0639, 0x0646, 0x064f, - 0x0655, 0x065d, 0x0666, 0x066d, 0x0677, 0x0680, 0x0686, 0x068e, - 0x0697, 0x069e, 0x06b2, 0x06b5, 0x06c5, 0x06d2, 0x06e7, 0x0704, - 0x0725, 0x0727, 0x0727, 0x073a, 0x073a, 0x0741, 0x074c, 0x0753, - 0x0763, -} // Size: 362 bytes - -var daScriptStr string = "" + // Size: 1443 bytes + 0x055c, 0x0566, 0x056c, 0x057d, 0x058c, 0x0597, 0x05a6, 0x05af, + 0x05b6, 0x05c2, 0x05cd, 0x05d9, 0x05e1, 0x05eb, 0x05f2, 0x0606, + 0x0619, 0x062d, 0x0635, 0x063b, 0x0641, 0x064e, 0x0657, 0x065d, + 0x0665, 0x066e, 0x0675, 0x067f, 0x0688, 0x068e, 0x0696, 0x069f, + 0x06a6, 0x06ba, 0x06bd, 0x06cd, 0x06da, 0x06ef, 0x070c, 0x072d, + 0x072f, 0x072f, 0x0742, 0x0749, 0x0750, 0x075b, 0x0762, 0x0772, +} // Size: 376 bytes + +const daScriptStr string = "" + // Size: 1483 bytes "afakaarabiskarmiarmenskavestanskbalinesiskbamumbassabatakbengaliblissymb" + "olerbopomofobramiskbrailleskriftbuginesiskbuhidcakmoprindelige canadiske" + " symbolerkarianskchamcherokeecirtkoptiskcypriotiskkyrilliskkyrillisk - o" + "ldkirkeslavisk variantdevanagarideseretDuploya-stenografiegyptisk demoti" + "skegyptisk hieratiskegyptiske hieroglyfferetiopiskgeorgisk kutsurigeorgi" + - "skglagolitiskgotiskgranthagræskgujaratigurmukhihangulhanhanunooforenklet" + - " hantraditionelt hanhebraiskhiraganaanatolske hieroglyfferpahawh hmongka" + - "takana eller hiraganaoldungarskindusOlditaliskjavanesiskjapanskjurchenka" + - "ya likatakanakharoshtikhmerkhojkikannadakoreanskkpellekthilannalaolatins" + - "k - frakturvariantlatinsk - gælisk variantlatinsklepchalimbulineær Aline" + - "ær Blisulomalykisklydiskmandaiskmanikæiskmayahieroglyffermendemetroitis" + - "k sammenhængendemeroitiskmalayalammongolskmoonmroomeitei-mayekburmesiskg" + - "ammelt nordarabisknabateisknakhi geban’konüshuoghamol-chikiorkhonoriyaos" + - "manniskpalmyrenskoldpermiskphags-paphliphlppahlavifønikiskpollardtegnprt" + - "irejangrongo-rongorunersamaritansksaratioldsørarabisksaurashtrategnskrif" + - "tshavisksharadakhudawadisingalesisksorasundanesisksyloti nagrisyrisksyri" + - "sk - estrangelovariantvestsyriskøstsyriakisktagbanwatakritai letai lueta" + - "milsktanguttavttelugutengwartifinaghtagalogthaanathailandsktibetansktirh" + - "utaugaritiskvaisynlig talevarang kshitiwoleaioldpersisksumero-akkadisk c" + - "uneiformyiarvetzmthzsymuden skriftsprogfællesukendt skriftsprog" - -var daScriptIdx = []uint16{ // 169 elements + "skglagolitiskgotiskgranthagræskgujaratigurmukhihan med bopomofohangulhan" + + "hanunooforenklet hantraditionelt hanhebraiskhiraganaanatolske hieroglyff" + + "erpahawh hmongjapanske skrifttegnoldungarskindusOlditaliskjamojavanesisk" + + "japanskjurchenkaya likatakanakharoshtikhmerkhojkikannadakoreanskkpellekt" + + "hilannalaolatinsk - frakturvariantlatinsk - gælisk variantlatinsklepchal" + + "imbulineær Alineær Blisulomalykisklydiskmandaiskmanikæiskmayahieroglyffe" + + "rmendemetroitisk sammenhængendemeroitiskmalayalammongolskmoonmroomeitei-" + + "mayekburmesiskgammelt nordarabisknabateisknakhi geban’konüshuoghamol-chi" + + "kiorkhonoriyaosmanniskpalmyrenskoldpermiskphags-paphliphlppahlavifønikis" + + "kpollardtegnprtirejangrongo-rongorunersamaritansksaratioldsørarabisksaur" + + "ashtrategnskriftshavisksharadakhudawadisingalesisksorasundanesisksyloti " + + "nagrisyrisksyrisk - estrangelovariantvestsyriskøstsyriakisktagbanwatakri" + + "tai letai luetamilsktanguttavttelugutengwartifinaghtagalogthaanathailand" + + "sktibetansktirhutaugaritiskvaisynlig talevarang kshitiwoleaioldpersisksu" + + "mero-akkadisk cuneiformyiarvetmatematisk notationemojisymboleruden skrif" + + "tsprogfællesukendt skriftsprog" + +var daScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0005, 0x0005, 0x000c, 0x0010, 0x0017, 0x0020, - 0x002a, 0x002f, 0x0034, 0x0039, 0x0040, 0x004c, 0x0054, 0x005b, - 0x0068, 0x0072, 0x0077, 0x007b, 0x0099, 0x00a1, 0x00a5, 0x00ad, - 0x00b1, 0x00b8, 0x00c2, 0x00cb, 0x00ee, 0x00f8, 0x00ff, 0x0111, - 0x0122, 0x0134, 0x014a, 0x014a, 0x0152, 0x0162, 0x016a, 0x0175, - 0x017b, 0x0182, 0x0188, 0x0190, 0x0198, 0x019e, 0x01a1, 0x01a8, - 0x01b5, 0x01c5, 0x01c5, 0x01cd, 0x01d5, 0x01eb, 0x01f7, 0x020e, - 0x0218, 0x021d, 0x0227, 0x0231, 0x0238, 0x023f, 0x0246, 0x024e, + 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, 0x000c, 0x0010, 0x0017, + 0x0020, 0x002a, 0x002f, 0x0034, 0x0039, 0x0040, 0x0040, 0x004c, + 0x0054, 0x005b, 0x0068, 0x0072, 0x0077, 0x007b, 0x0099, 0x00a1, + 0x00a5, 0x00ad, 0x00b1, 0x00b8, 0x00c2, 0x00cb, 0x00ee, 0x00f8, + 0x00ff, 0x0111, 0x0122, 0x0134, 0x014a, 0x014a, 0x0152, 0x0162, + 0x016a, 0x0175, 0x017b, 0x0182, 0x0188, 0x0190, 0x0198, 0x01a8, + 0x01ae, 0x01b1, 0x01b8, 0x01c5, 0x01d5, 0x01d5, 0x01dd, 0x01e5, + 0x01fb, 0x0207, 0x021a, 0x0224, 0x0229, 0x0233, 0x0237, 0x0241, // Entry 40 - 7F - 0x0257, 0x025c, 0x0262, 0x0269, 0x0271, 0x0277, 0x027b, 0x0280, - 0x0283, 0x029b, 0x02b4, 0x02bb, 0x02c1, 0x02c6, 0x02cf, 0x02d8, - 0x02dc, 0x02e0, 0x02e6, 0x02ec, 0x02ec, 0x02f4, 0x02fe, 0x030e, - 0x0313, 0x032d, 0x0336, 0x033f, 0x033f, 0x0347, 0x034b, 0x034f, - 0x035b, 0x035b, 0x0364, 0x0377, 0x0380, 0x038a, 0x0390, 0x0396, - 0x039b, 0x03a3, 0x03a9, 0x03ae, 0x03b7, 0x03c1, 0x03c1, 0x03cb, - 0x03d3, 0x03d7, 0x03db, 0x03e2, 0x03eb, 0x03f6, 0x03fa, 0x0400, - 0x040b, 0x0410, 0x041b, 0x0421, 0x042f, 0x0439, 0x0443, 0x044a, + 0x0248, 0x024f, 0x0256, 0x025e, 0x0267, 0x026c, 0x0272, 0x0279, + 0x0281, 0x0287, 0x028b, 0x0290, 0x0293, 0x02ab, 0x02c4, 0x02cb, + 0x02d1, 0x02d6, 0x02df, 0x02e8, 0x02ec, 0x02f0, 0x02f6, 0x02fc, + 0x02fc, 0x0304, 0x030e, 0x030e, 0x031e, 0x0323, 0x033d, 0x0346, + 0x034f, 0x034f, 0x0357, 0x035b, 0x035f, 0x036b, 0x036b, 0x0374, + 0x0387, 0x0390, 0x0390, 0x039a, 0x03a0, 0x03a6, 0x03ab, 0x03b3, + 0x03b9, 0x03be, 0x03be, 0x03c7, 0x03d1, 0x03d1, 0x03db, 0x03e3, + 0x03e7, 0x03eb, 0x03f2, 0x03fb, 0x0406, 0x040a, 0x0410, 0x041b, // Entry 80 - BF - 0x0451, 0x0451, 0x045a, 0x0465, 0x0469, 0x0474, 0x0480, 0x0486, - 0x04a0, 0x04aa, 0x04b7, 0x04bf, 0x04c4, 0x04ca, 0x04d1, 0x04d8, - 0x04de, 0x04e2, 0x04e8, 0x04ef, 0x04f7, 0x04fe, 0x0504, 0x050e, - 0x0517, 0x051e, 0x0527, 0x052a, 0x0535, 0x0542, 0x0548, 0x0552, - 0x056b, 0x056d, 0x0572, 0x0576, 0x0576, 0x057a, 0x058a, 0x0591, - 0x05a3, -} // Size: 362 bytes - -var deScriptStr string = "" + // Size: 1682 bytes + 0x0420, 0x042b, 0x0431, 0x043f, 0x0449, 0x0453, 0x045a, 0x0461, + 0x0461, 0x046a, 0x0475, 0x0479, 0x0484, 0x0490, 0x0496, 0x04b0, + 0x04ba, 0x04c7, 0x04cf, 0x04d4, 0x04da, 0x04e1, 0x04e8, 0x04ee, + 0x04f2, 0x04f8, 0x04ff, 0x0507, 0x050e, 0x0514, 0x051e, 0x0527, + 0x052e, 0x0537, 0x053a, 0x0545, 0x0552, 0x0558, 0x0562, 0x057b, + 0x057d, 0x0582, 0x0595, 0x059a, 0x05a2, 0x05b2, 0x05b9, 0x05cb, +} // Size: 376 bytes + +const deScriptStr string = "" + // Size: 1697 bytes "AfakaKaukasisch-AlbanischArabischArmiArmenischAvestischBalinesischBamunB" + "assaBattakischBengalischBliss-SymboleBopomofoBrahmiBlindenschriftBugines" + "ischBuhidChakmaUCASKarischChamCherokeeCirthKoptischZypriotischKyrillisch" + "AltkirchenslawischDevanagariDeseretDuployanischÄgyptisch - DemotischÄgyp" + "tisch - HieratischÄgyptische HieroglyphenElbasanischÄthiopischKhutsuriGe" + - "orgischGlagolitischGotischGranthaGriechischGujaratiGurmukhiHangulChinesi" + - "schHanunooVereinfachtes ChinesischTraditionelles ChinesischHebräischHira" + - "ganaHieroglyphen-LuwischPahawh HmongKatakana oder HiraganaAltungarischIn" + - "dus-SchriftAltitalischJavanesischJapanischJurchenKayah LiKatakanaKharosh" + - "thiKhmerKhojkiKannadaKoreanischKpelleKaithiLannaLaotischLateinisch - Fra" + - "ktur-VarianteLateinisch - Gälische VarianteLateinischLepchaLimbuLinear A" + - "Linear BFraserLomaLykischLydischMahajaniMandäischManichäischMaya-Hierogl" + - "yphenMendeMeroitisch kursivMeroitischMalayalamModiMongolischMoonMroMeite" + - "i MayekBirmanischAltnordarabischNabatäischGebaN’KoFrauenschriftOghamOl C" + - "hikiOrchon-RunenOriyaOsmanischPalmyrenischPau Cin HauAltpermischPhags-pa" + - "Buch-PahlaviPsalter-PahlaviPahlaviPhönizischPollard PhonetischParthischR" + - "ejangRongorongoRunenschriftSamaritanischSaratiAltsüdarabischSaurashtraGe" + - "bärdenspracheShaw-AlphabetSharadaSiddhamKhudawadiSinghalesischSora Sompe" + - "ngSundanesischSyloti NagriSyrischSyrisch - Estrangelo-VarianteWestsyrisc" + - "hOstsyrischTagbanwaTakriTai LeTai LueTamilischXixiaTai-VietTeluguTengwar" + - "TifinaghTagalogThaanaThaiTibetischTirhutaUgaritischVaiSichtbare SpracheV" + - "arang KshitiWoleaianischAltpersischSumerisch-akkadische KeilschriftYiGee" + - "rbter SchriftwertMathematische NotationSymboleSchriftlosUnbestimmtUnbeka" + - "nnte Schrift" - -var deScriptIdx = []uint16{ // 169 elements + "orgischGlagolitischGotischGranthaGriechischGujaratiGurmukhiHanbHangulChi" + + "nesischHanunooVereinfachtes ChinesischTraditionelles ChinesischHebräisch" + + "HiraganaHieroglyphen-LuwischPahawh HmongJapanische SilbenschriftAltungar" + + "ischIndus-SchriftAltitalischJamoJavanesischJapanischJurchenKayah LiKatak" + + "anaKharoshthiKhmerKhojkiKannadaKoreanischKpelleKaithiLannaLaotischLatein" + + "isch - Fraktur-VarianteLateinisch - Gälische VarianteLateinischLepchaLim" + + "buLinear ALinear BFraserLomaLykischLydischMahajaniMandäischManichäischMa" + + "ya-HieroglyphenMendeMeroitisch kursivMeroitischMalayalamModiMongolischMo" + + "onMroMeitei MayekBirmanischAltnordarabischNabatäischGebaN’KoFrauenschrif" + + "tOghamOl ChikiOrchon-RunenOriyaOsmanischPalmyrenischPau Cin HauAltpermis" + + "chPhags-paBuch-PahlaviPsalter-PahlaviPahlaviPhönizischPollard Phonetisch" + + "ParthischRejangRongorongoRunenschriftSamaritanischSaratiAltsüdarabischSa" + + "urashtraGebärdenspracheShaw-AlphabetSharadaSiddhamKhudawadiSinghalesisch" + + "Sora SompengSundanesischSyloti NagriSyrischSyrisch - Estrangelo-Variante" + + "WestsyrischOstsyrischTagbanwaTakriTai LeTai LueTamilischXixiaTai-VietTel" + + "uguTengwarTifinaghTagalogThaanaThaiTibetischTirhutaUgaritischVaiSichtbar" + + "e SpracheVarang KshitiWoleaianischAltpersischSumerisch-akkadische Keilsc" + + "hriftYiGeerbter SchriftwertMathematische NotationEmojiSymboleSchriftlosV" + + "erbreitetUnbekannte Schrift" + +var deScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0019, 0x0019, 0x0021, 0x0025, 0x002e, 0x0037, - 0x0042, 0x0047, 0x004c, 0x0056, 0x0060, 0x006d, 0x0075, 0x007b, - 0x0089, 0x0094, 0x0099, 0x009f, 0x00a3, 0x00aa, 0x00ae, 0x00b6, - 0x00bb, 0x00c3, 0x00ce, 0x00d8, 0x00ea, 0x00f4, 0x00fb, 0x0107, - 0x011d, 0x0134, 0x014c, 0x0157, 0x0162, 0x016a, 0x0173, 0x017f, - 0x0186, 0x018d, 0x0197, 0x019f, 0x01a7, 0x01ad, 0x01b7, 0x01be, - 0x01d6, 0x01ef, 0x01ef, 0x01f9, 0x0201, 0x0215, 0x0221, 0x0237, - 0x0243, 0x0250, 0x025b, 0x0266, 0x026f, 0x0276, 0x027e, 0x0286, + 0x0000, 0x0000, 0x0005, 0x0019, 0x0019, 0x0021, 0x0025, 0x002e, + 0x0037, 0x0042, 0x0047, 0x004c, 0x0056, 0x0060, 0x0060, 0x006d, + 0x0075, 0x007b, 0x0089, 0x0094, 0x0099, 0x009f, 0x00a3, 0x00aa, + 0x00ae, 0x00b6, 0x00bb, 0x00c3, 0x00ce, 0x00d8, 0x00ea, 0x00f4, + 0x00fb, 0x0107, 0x011d, 0x0134, 0x014c, 0x0157, 0x0162, 0x016a, + 0x0173, 0x017f, 0x0186, 0x018d, 0x0197, 0x019f, 0x01a7, 0x01ab, + 0x01b1, 0x01bb, 0x01c2, 0x01da, 0x01f3, 0x01f3, 0x01fd, 0x0205, + 0x0219, 0x0225, 0x023d, 0x0249, 0x0256, 0x0261, 0x0265, 0x0270, // Entry 40 - 7F - 0x0290, 0x0295, 0x029b, 0x02a2, 0x02ac, 0x02b2, 0x02b8, 0x02bd, - 0x02c5, 0x02e2, 0x0301, 0x030b, 0x0311, 0x0316, 0x031e, 0x0326, - 0x032c, 0x0330, 0x0337, 0x033e, 0x0346, 0x0350, 0x035c, 0x036d, - 0x0372, 0x0383, 0x038d, 0x0396, 0x039a, 0x03a4, 0x03a8, 0x03ab, - 0x03b7, 0x03b7, 0x03c1, 0x03d0, 0x03db, 0x03df, 0x03e5, 0x03f2, - 0x03f7, 0x03ff, 0x040b, 0x0410, 0x0419, 0x0425, 0x0430, 0x043b, - 0x0443, 0x044f, 0x045e, 0x0465, 0x0470, 0x0482, 0x048b, 0x0491, - 0x049b, 0x04a7, 0x04b4, 0x04ba, 0x04c9, 0x04d3, 0x04e3, 0x04f0, + 0x0279, 0x0280, 0x0288, 0x0290, 0x029a, 0x029f, 0x02a5, 0x02ac, + 0x02b6, 0x02bc, 0x02c2, 0x02c7, 0x02cf, 0x02ec, 0x030b, 0x0315, + 0x031b, 0x0320, 0x0328, 0x0330, 0x0336, 0x033a, 0x0341, 0x0348, + 0x0350, 0x035a, 0x0366, 0x0366, 0x0377, 0x037c, 0x038d, 0x0397, + 0x03a0, 0x03a4, 0x03ae, 0x03b2, 0x03b5, 0x03c1, 0x03c1, 0x03cb, + 0x03da, 0x03e5, 0x03e5, 0x03e9, 0x03ef, 0x03fc, 0x0401, 0x0409, + 0x0415, 0x041a, 0x041a, 0x0423, 0x042f, 0x043a, 0x0445, 0x044d, + 0x0459, 0x0468, 0x046f, 0x047a, 0x048c, 0x0495, 0x049b, 0x04a5, // Entry 80 - BF - 0x04f7, 0x04fe, 0x0507, 0x0514, 0x0520, 0x052c, 0x0538, 0x053f, - 0x055c, 0x0567, 0x0571, 0x0579, 0x057e, 0x0584, 0x058b, 0x0594, - 0x0599, 0x05a1, 0x05a7, 0x05ae, 0x05b6, 0x05bd, 0x05c3, 0x05c7, - 0x05d0, 0x05d7, 0x05e1, 0x05e4, 0x05f5, 0x0602, 0x060e, 0x0619, - 0x0639, 0x063b, 0x064f, 0x0665, 0x0665, 0x066c, 0x0676, 0x0680, - 0x0692, -} // Size: 362 bytes - -var elScriptStr string = "" + // Size: 2635 bytes + 0x04b1, 0x04be, 0x04c4, 0x04d3, 0x04dd, 0x04ed, 0x04fa, 0x0501, + 0x0508, 0x0511, 0x051e, 0x052a, 0x0536, 0x0542, 0x0549, 0x0566, + 0x0571, 0x057b, 0x0583, 0x0588, 0x058e, 0x0595, 0x059e, 0x05a3, + 0x05ab, 0x05b1, 0x05b8, 0x05c0, 0x05c7, 0x05cd, 0x05d1, 0x05da, + 0x05e1, 0x05eb, 0x05ee, 0x05ff, 0x060c, 0x0618, 0x0623, 0x0643, + 0x0645, 0x0659, 0x066f, 0x0674, 0x067b, 0x0685, 0x068f, 0x06a1, +} // Size: 376 bytes + +const elScriptStr string = "" + // Size: 2665 bytes "ΑραβικόΑυτοκρατορικό ΑραμαϊκόΑρμενικόΑβεστάνΜπαλινίζΜπατάκΜπενγκάλιΣύμβο" + "λα BlissΜποπομόφοΜπραχμίΜπράιγΜπούγκιςΜπουχίντΤσάκμαΕνοποιημένοι Καναδε" + "ζικοί Συλλαβισμοί ΙθαγενώνΚαριάνΤσαμΤσερόκιΣερθΚοπτικόΚυπριακόΚυριλλικό" + "Παλαιό Εκκλησιαστικό Σλαβικό ΚυριλλικόΝτεβαναγκάριΝτεσερέΛαϊκό Αιγυπτια" + "κόΙερατικό ΑιγυπτιακόΑιγυπτιακά ΙερογλυφικάΑιθιοπικόΓεωργιανό Κχουτσούρ" + - "ιΓεωργιανόΓκλαγκολιτικόΓοτθικόΕλληνικόΓκουγιαράτιΓκουρμουκχίΧανγκούλΧαν" + - "ΧανούνουΑπλοποιημένο ΧανΠαραδοσιακό ΧανΕβραϊκόΧιραγκάναΠαχάχ ΧμονγκΚατα" + - "κάνα ή ΧιραγκάναΠαλαιό ΟυγγρικόΊνδουςΠαλαιό ΙταλικόΙαβανεζικόΙαπωνικόΚα" + - "γιάχ ΛιΚατακάναΚαρόσθιΧμερΚανάνταΚορεατικόΚαϊθίΛάνναΛάοςΦράκτουρ Λατινι" + - "κόΓαελικό ΛατινικόΛατινικόΛέπτσαΛιμπούΓραμμικό ΑΓραμμικό ΒΛυκιανικόΛυδι" + - "ανικόΜανδαϊκόΜανιχαϊκόΙερογλυφικά ΜάγιαΜεροϊτικόΜαλαγιάλαμΜογγολικόΜουν" + - "Μεϊτέι ΜάγεκΜιανμάρΝ’ΚοΌγκχαμΟλ ΤσίκιΌρκχονΟρίγιαΟσμάνγιαΠαλαιό Περμικό" + - "Παγκς-παΕπιγραφικό ΠαχλάβιΨάλτερ ΠαχλάβιΜπουκ ΠαχλαβίΦοινικικόΦωνητικό " + - "ΠόλαρντΕπιγραφικό ΠαρθιάνΡετζάνγκΡονγκορόνγκοΡουνίκΣαμαριτικόΣαράθιΣαου" + - "ράστραΝοηματική γραφήΣαβιανόΣινχάλαΣουνδανικόΣυλότι ΝάγκριΣυριακόΕστραν" + - "τζέλο ΣυριακόΔυτικό ΣυριακόΑνατολικό ΣυριακόΤαγκμάνγουαΤάι ΛεΝέο Τάι Λο" + - "ύεΤαμίλΤάι ΒιέτΤελούγκουΤεγνγουάρΤιφινάγκΤαγκαλόγκΘαανάΤαϊλανδικόΘιβετι" + - "ανόΟυγκαριτικόΒάιΟρατή ομιλίαΠαλαιό ΠερσικόΣούμερο-Ακάντιαν ΚουνεϊφόρμΓ" + - "ιΚληρονομημένοΜαθηματική παράστασηΣύμβολαΆγραφοΚοινόΆγνωστη γραφή" - -var elScriptIdx = []uint16{ // 169 elements + "ιΓεωργιανόΓκλαγκολιτικόΓοτθικόΕλληνικόΓκουγιαράτιΓκουρμουκχίΧανμπΧανγκο" + + "ύλΧανΧανούνουΑπλοποιημένο ΧανΠαραδοσιακό ΧανΕβραϊκόΧιραγκάναΠαχάχ Χμονγ" + + "κΚατακάνα ή ΧιραγκάναΠαλαιό ΟυγγρικόΊνδουςΠαλαιό ΙταλικόΤζάμοΙαβανεζικό" + + "ΙαπωνικόΚαγιάχ ΛιΚατακάναΚαρόσθιΧμερΚανάνταΚορεατικόΚαϊθίΛάνναΛάοςΦράκτ" + + "ουρ ΛατινικόΓαελικό ΛατινικόΛατινικόΛέπτσαΛιμπούΓραμμικό ΑΓραμμικό ΒΛυκ" + + "ιανικόΛυδιανικόΜανδαϊκόΜανιχαϊκόΙερογλυφικά ΜάγιαΜεροϊτικόΜαλαγιάλαμΜογ" + + "γολικόΜουνΜεϊτέι ΜάγεκΜιανμάρΝ’ΚοΌγκχαμΟλ ΤσίκιΌρκχονΟρίγιαΟσμάνγιαΠαλα" + + "ιό ΠερμικόΠαγκς-παΕπιγραφικό ΠαχλάβιΨάλτερ ΠαχλάβιΜπουκ ΠαχλαβίΦοινικικ" + + "όΦωνητικό ΠόλαρντΕπιγραφικό ΠαρθιάνΡετζάνγκΡονγκορόνγκοΡουνίκΣαμαριτικό" + + "ΣαράθιΣαουράστραΝοηματική γραφήΣαβιανόΣινχάλαΣουνδανικόΣυλότι ΝάγκριΣυρ" + + "ιακόΕστραντζέλο ΣυριακόΔυτικό ΣυριακόΑνατολικό ΣυριακόΤαγκμάνγουαΤάι Λε" + + "Νέο Τάι ΛούεΤαμίλΤάι ΒιέτΤελούγκουΤεγνγουάρΤιφινάγκΤαγκαλόγκΘαανάΤαϊλαν" + + "δικόΘιβετιανόΟυγκαριτικόΒάιΟρατή ομιλίαΠαλαιό ΠερσικόΣούμερο-Ακάντιαν Κ" + + "ουνεϊφόρμΓιΚληρονομημένοΜαθηματική σημειογραφίαZsyeΣύμβολαΆγραφοΚοινόΆγ" + + "νωστη γραφή" + +var elScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0039, 0x0049, 0x0057, - 0x0067, 0x0067, 0x0067, 0x0073, 0x0085, 0x0099, 0x00ab, 0x00b9, - 0x00c5, 0x00d5, 0x00e5, 0x00f1, 0x0148, 0x0154, 0x015c, 0x016a, - 0x0172, 0x0180, 0x0190, 0x01a2, 0x01eb, 0x0203, 0x0211, 0x0211, - 0x0230, 0x0255, 0x0280, 0x0280, 0x0292, 0x02b9, 0x02cb, 0x02e5, - 0x02f3, 0x02f3, 0x0303, 0x0319, 0x032f, 0x033f, 0x0345, 0x0355, - 0x0374, 0x0391, 0x0391, 0x039f, 0x03b1, 0x03b1, 0x03c8, 0x03ee, - 0x040b, 0x0417, 0x0432, 0x0446, 0x0456, 0x0456, 0x0467, 0x0477, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0039, 0x0049, + 0x0057, 0x0067, 0x0067, 0x0067, 0x0073, 0x0085, 0x0085, 0x0099, + 0x00ab, 0x00b9, 0x00c5, 0x00d5, 0x00e5, 0x00f1, 0x0148, 0x0154, + 0x015c, 0x016a, 0x0172, 0x0180, 0x0190, 0x01a2, 0x01eb, 0x0203, + 0x0211, 0x0211, 0x0230, 0x0255, 0x0280, 0x0280, 0x0292, 0x02b9, + 0x02cb, 0x02e5, 0x02f3, 0x02f3, 0x0303, 0x0319, 0x032f, 0x0339, + 0x0349, 0x034f, 0x035f, 0x037e, 0x039b, 0x039b, 0x03a9, 0x03bb, + 0x03bb, 0x03d2, 0x03f8, 0x0415, 0x0421, 0x043c, 0x0446, 0x045a, // Entry 40 - 7F - 0x0485, 0x048d, 0x048d, 0x049b, 0x04ad, 0x04ad, 0x04b7, 0x04c1, - 0x04c9, 0x04ea, 0x0509, 0x0519, 0x0525, 0x0531, 0x0544, 0x0557, - 0x0557, 0x0557, 0x0569, 0x057b, 0x057b, 0x058b, 0x059d, 0x05be, - 0x05be, 0x05be, 0x05d0, 0x05e4, 0x05e4, 0x05f6, 0x05fe, 0x05fe, - 0x0615, 0x0615, 0x0623, 0x0623, 0x0623, 0x0623, 0x062c, 0x062c, - 0x0638, 0x0647, 0x0653, 0x065f, 0x066f, 0x066f, 0x066f, 0x068a, - 0x0699, 0x06bc, 0x06d7, 0x06f0, 0x0702, 0x0721, 0x0744, 0x0754, - 0x076c, 0x0778, 0x078c, 0x0798, 0x0798, 0x07ac, 0x07c9, 0x07d7, + 0x046a, 0x046a, 0x047b, 0x048b, 0x0499, 0x04a1, 0x04a1, 0x04af, + 0x04c1, 0x04c1, 0x04cb, 0x04d5, 0x04dd, 0x04fe, 0x051d, 0x052d, + 0x0539, 0x0545, 0x0558, 0x056b, 0x056b, 0x056b, 0x057d, 0x058f, + 0x058f, 0x059f, 0x05b1, 0x05b1, 0x05d2, 0x05d2, 0x05d2, 0x05e4, + 0x05f8, 0x05f8, 0x060a, 0x0612, 0x0612, 0x0629, 0x0629, 0x0637, + 0x0637, 0x0637, 0x0637, 0x0637, 0x0640, 0x0640, 0x064c, 0x065b, + 0x0667, 0x0673, 0x0673, 0x0683, 0x0683, 0x0683, 0x069e, 0x06ad, + 0x06d0, 0x06eb, 0x0704, 0x0716, 0x0735, 0x0758, 0x0768, 0x0780, // Entry 80 - BF - 0x07d7, 0x07d7, 0x07d7, 0x07e5, 0x07e5, 0x07f9, 0x0812, 0x0820, - 0x0845, 0x0860, 0x0881, 0x0897, 0x0897, 0x08a2, 0x08b8, 0x08c2, - 0x08c2, 0x08d1, 0x08e3, 0x08f5, 0x0905, 0x0917, 0x0921, 0x0935, - 0x0947, 0x0947, 0x095d, 0x0963, 0x097a, 0x097a, 0x097a, 0x0995, - 0x09c9, 0x09cd, 0x09e7, 0x0a0e, 0x0a0e, 0x0a1c, 0x0a28, 0x0a32, - 0x0a4b, -} // Size: 362 bytes - -var enScriptStr string = "" + // Size: 1536 bytes - "AfakaCaucasian AlbanianAhomArabicImperial AramaicArmenianAvestanBalinese" + - "BamumBassa VahBatakBengaliBlissymbolsBopomofoBrahmiBrailleBugineseBuhidC" + - "hakmaUnified Canadian Aboriginal SyllabicsCarianChamCherokeeCirthCopticC" + - "ypriotCyrillicOld Church Slavonic CyrillicDevanagariDeseretDuployan shor" + - "thandEgyptian demoticEgyptian hieraticEgyptian hieroglyphsElbasanEthiopi" + - "cGeorgian KhutsuriGeorgianGlagoliticGothicGranthaGreekGujaratiGurmukhiHa" + - "ngulHanHanunooSimplified HanTraditional HanHatranHebrewHiraganaAnatolian" + - " HieroglyphsPahawh HmongJapanese syllabariesOld HungarianIndusOld Italic" + - "JavaneseJapaneseJurchenKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKorea" + - "nKpelleKaithiLannaLaoFraktur LatinGaelic LatinLatinLepchaLimbuLinear ALi" + - "near BFraserLomaLycianLydianMahajaniMandaeanManichaeanMayan hieroglyphsM" + - "endeMeroitic CursiveMeroiticMalayalamModiMongolianMoonMroMeitei MayekMul" + - "taniMyanmarOld North ArabianNabataeanNaxi GebaN’KoNüshuOghamOl ChikiOrkh" + - "onOriyaOsmanyaPalmyrenePau Cin HauOld PermicPhags-paInscriptional Pahlav" + - "iPsalter PahlaviBook PahlaviPhoenicianPollard PhoneticInscriptional Part" + - "hianRejangRongorongoRunicSamaritanSaratiOld South ArabianSaurashtraSignW" + - "ritingShavianSharadaSiddhamKhudawadiSinhalaSora SompengSundaneseSyloti N" + - "agriSyriacEstrangelo SyriacWestern SyriacEastern SyriacTagbanwaTakriTai " + - "LeNew Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTi" + - "betanTirhutaUgariticVaiVisible SpeechVarang KshitiWoleaiOld PersianSumer" + - "o-Akkadian CuneiformYiInheritedMathematical NotationEmojiSymbolsUnwritte" + - "nCommonUnknown Script" - -var enScriptIdx = []uint16{ // 169 elements + 0x078c, 0x07a0, 0x07ac, 0x07ac, 0x07c0, 0x07dd, 0x07eb, 0x07eb, + 0x07eb, 0x07eb, 0x07f9, 0x07f9, 0x080d, 0x0826, 0x0834, 0x0859, + 0x0874, 0x0895, 0x08ab, 0x08ab, 0x08b6, 0x08cc, 0x08d6, 0x08d6, + 0x08e5, 0x08f7, 0x0909, 0x0919, 0x092b, 0x0935, 0x0949, 0x095b, + 0x095b, 0x0971, 0x0977, 0x098e, 0x098e, 0x098e, 0x09a9, 0x09dd, + 0x09e1, 0x09fb, 0x0a28, 0x0a2c, 0x0a3a, 0x0a46, 0x0a50, 0x0a69, +} // Size: 376 bytes + +const enScriptStr string = "" + // Size: 1585 bytes + "AdlamAfakaCaucasian AlbanianAhomArabicImperial AramaicArmenianAvestanBal" + + "ineseBamumBassa VahBatakBanglaBhaiksukiBlissymbolsBopomofoBrahmiBrailleB" + + "ugineseBuhidChakmaUnified Canadian Aboriginal SyllabicsCarianChamCheroke" + + "eCirthCopticCypriotCyrillicOld Church Slavonic CyrillicDevanagariDeseret" + + "Duployan shorthandEgyptian demoticEgyptian hieraticEgyptian hieroglyphsE" + + "lbasanEthiopicGeorgian KhutsuriGeorgianGlagoliticGothicGranthaGreekGujar" + + "atiGurmukhiHan with BopomofoHangulHanHanunooSimplified HanTraditional Ha" + + "nHatranHebrewHiraganaAnatolian HieroglyphsPahawh HmongJapanese syllabari" + + "esOld HungarianIndusOld ItalicJamoJavaneseJapaneseJurchenKayah LiKatakan" + + "aKharoshthiKhmerKhojkiKannadaKoreanKpelleKaithiLannaLaoFraktur LatinGael" + + "ic LatinLatinLepchaLimbuLinear ALinear BFraserLomaLycianLydianMahajaniMa" + + "ndaeanManichaeanMarchenMayan hieroglyphsMendeMeroitic CursiveMeroiticMal" + + "ayalamModiMongolianMoonMroMeitei MayekMultaniMyanmarOld North ArabianNab" + + "ataeanNewaNaxi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsageOsmanyaPalmyrene" + + "Pau Cin HauOld PermicPhags-paInscriptional PahlaviPsalter PahlaviBook Pa" + + "hlaviPhoenicianPollard PhoneticInscriptional ParthianRejangRongorongoRun" + + "icSamaritanSaratiOld South ArabianSaurashtraSignWritingShavianSharadaSid" + + "dhamKhudawadiSinhalaSora SompengSundaneseSyloti NagriSyriacEstrangelo Sy" + + "riacWestern SyriacEastern SyriacTagbanwaTakriTai LeNew Tai LueTamilTangu" + + "tTai VietTeluguTengwarTifinaghTagalogThaanaThaiTibetanTirhutaUgariticVai" + + "Visible SpeechVarang KshitiWoleaiOld PersianSumero-Akkadian CuneiformYiI" + + "nheritedMathematical NotationEmojiSymbolsUnwrittenCommonUnknown Script" + +var enScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0017, 0x001b, 0x0021, 0x0031, 0x0039, 0x0040, - 0x0048, 0x004d, 0x0056, 0x005b, 0x0062, 0x006d, 0x0075, 0x007b, - 0x0082, 0x008a, 0x008f, 0x0095, 0x00ba, 0x00c0, 0x00c4, 0x00cc, - 0x00d1, 0x00d7, 0x00de, 0x00e6, 0x0102, 0x010c, 0x0113, 0x0125, - 0x0135, 0x0146, 0x015a, 0x0161, 0x0169, 0x017a, 0x0182, 0x018c, - 0x0192, 0x0199, 0x019e, 0x01a6, 0x01ae, 0x01b4, 0x01b7, 0x01be, - 0x01cc, 0x01db, 0x01e1, 0x01e7, 0x01ef, 0x0204, 0x0210, 0x0224, - 0x0231, 0x0236, 0x0240, 0x0248, 0x0250, 0x0257, 0x025f, 0x0267, + 0x0000, 0x0005, 0x000a, 0x001c, 0x0020, 0x0026, 0x0036, 0x003e, + 0x0045, 0x004d, 0x0052, 0x005b, 0x0060, 0x0066, 0x006f, 0x007a, + 0x0082, 0x0088, 0x008f, 0x0097, 0x009c, 0x00a2, 0x00c7, 0x00cd, + 0x00d1, 0x00d9, 0x00de, 0x00e4, 0x00eb, 0x00f3, 0x010f, 0x0119, + 0x0120, 0x0132, 0x0142, 0x0153, 0x0167, 0x016e, 0x0176, 0x0187, + 0x018f, 0x0199, 0x019f, 0x01a6, 0x01ab, 0x01b3, 0x01bb, 0x01cc, + 0x01d2, 0x01d5, 0x01dc, 0x01ea, 0x01f9, 0x01ff, 0x0205, 0x020d, + 0x0222, 0x022e, 0x0242, 0x024f, 0x0254, 0x025e, 0x0262, 0x026a, // Entry 40 - 7F - 0x0271, 0x0276, 0x027c, 0x0283, 0x0289, 0x028f, 0x0295, 0x029a, - 0x029d, 0x02aa, 0x02b6, 0x02bb, 0x02c1, 0x02c6, 0x02ce, 0x02d6, - 0x02dc, 0x02e0, 0x02e6, 0x02ec, 0x02f4, 0x02fc, 0x0306, 0x0317, - 0x031c, 0x032c, 0x0334, 0x033d, 0x0341, 0x034a, 0x034e, 0x0351, - 0x035d, 0x0364, 0x036b, 0x037c, 0x0385, 0x038e, 0x0394, 0x039a, - 0x039f, 0x03a7, 0x03ad, 0x03b2, 0x03b9, 0x03c2, 0x03cd, 0x03d7, - 0x03df, 0x03f4, 0x0403, 0x040f, 0x0419, 0x0429, 0x043f, 0x0445, - 0x044f, 0x0454, 0x045d, 0x0463, 0x0474, 0x047e, 0x0489, 0x0490, + 0x0272, 0x0279, 0x0281, 0x0289, 0x0293, 0x0298, 0x029e, 0x02a5, + 0x02ab, 0x02b1, 0x02b7, 0x02bc, 0x02bf, 0x02cc, 0x02d8, 0x02dd, + 0x02e3, 0x02e8, 0x02f0, 0x02f8, 0x02fe, 0x0302, 0x0308, 0x030e, + 0x0316, 0x031e, 0x0328, 0x032f, 0x0340, 0x0345, 0x0355, 0x035d, + 0x0366, 0x036a, 0x0373, 0x0377, 0x037a, 0x0386, 0x038d, 0x0394, + 0x03a5, 0x03ae, 0x03b2, 0x03bb, 0x03c1, 0x03c7, 0x03cc, 0x03d4, + 0x03da, 0x03de, 0x03e3, 0x03ea, 0x03f3, 0x03fe, 0x0408, 0x0410, + 0x0425, 0x0434, 0x0440, 0x044a, 0x045a, 0x0470, 0x0476, 0x0480, // Entry 80 - BF - 0x0497, 0x049e, 0x04a7, 0x04ae, 0x04ba, 0x04c3, 0x04cf, 0x04d5, - 0x04e6, 0x04f4, 0x0502, 0x050a, 0x050f, 0x0515, 0x0520, 0x0525, - 0x052b, 0x0533, 0x0539, 0x0540, 0x0548, 0x054f, 0x0555, 0x0559, - 0x0560, 0x0567, 0x056f, 0x0572, 0x0580, 0x058d, 0x0593, 0x059e, - 0x05b7, 0x05b9, 0x05c2, 0x05d7, 0x05dc, 0x05e3, 0x05ec, 0x05f2, - 0x0600, -} // Size: 362 bytes - -const enGBScriptStr string = "" - -var enGBScriptIdx = []uint16{ // 0 elements - -} // Size: 24 bytes - -var esScriptStr string = "" + // Size: 1165 bytes + 0x0485, 0x048e, 0x0494, 0x04a5, 0x04af, 0x04ba, 0x04c1, 0x04c8, + 0x04cf, 0x04d8, 0x04df, 0x04eb, 0x04f4, 0x0500, 0x0506, 0x0517, + 0x0525, 0x0533, 0x053b, 0x0540, 0x0546, 0x0551, 0x0556, 0x055c, + 0x0564, 0x056a, 0x0571, 0x0579, 0x0580, 0x0586, 0x058a, 0x0591, + 0x0598, 0x05a0, 0x05a3, 0x05b1, 0x05be, 0x05c4, 0x05cf, 0x05e8, + 0x05ea, 0x05f3, 0x0608, 0x060d, 0x0614, 0x061d, 0x0623, 0x0631, +} // Size: 376 bytes + +const esScriptStr string = "" + // Size: 1206 bytes "árabearmenioavésticobalinésbatakbengalísímbolos blisbopomofobrahmibraill" + "ebuginésbuhidsímbolos aborígenes canadienses unificadoscariochamcherokee" + "cirthcoptochipriotacirílicocirílico del antiguo eslavo eclesiásticodevan" + "agarideseretegipcio demóticoegipcio hieráticojeroglíficos egipciosetiópi" + "cogeorgiano eclesiásticogeorgianoglagolíticogóticogriegogujaratigurmujih" + - "angulhanhanunoohan simplificadohan tradicionalhebreohiraganapahawh hmong" + - "katakana o hiraganahúngaro antiguoIndio (harappan)antigua bastardillajav" + - "anésjaponéskayah likatakanakharosthijemercanaréscoreanolannalaolatino fr" + - "akturlatino gaélicolatínlepchalimbulineal Alineal Bliciolidiomandeojerog" + - "líficos mayasmeroíticomalayálammongolmoonmanipuribirmanon’kooghamol ciki" + - "orkhonoriyaosmaniyapermiano antiguophags-pafenicioPollard Miaorejangrong" + - "o-rongorúnicosaratisaurashtraSignWritingshavianocingaléssundanéssyloti n" + - "agrisiriacosiriaco estrangelosiriaco occidentalsiriaco orientaltagbanúat" + - "ai lenuevo tai luetamiltelugutengwartifinaghtagalothaanatailandéstibetan" + - "ougaríticovailenguaje visiblepersa antiguocuneiforme sumerio-acadioyiher" + - "edadosímbolosno escritocomúnalfabeto desconocido" - -var esScriptIdx = []uint16{ // 169 elements + "anbhangulhanhanunoohan simplificadohan tradicionalhebreohiraganapahawh h" + + "mongsilabarios japoneseshúngaro antiguoIndio (harappan)antigua bastardil" + + "lajamojavanésjaponéskayah likatakanakharosthijemercanaréscoreanolannalao" + + "sianolatino frakturlatino gaélicolatinolepchalimbulineal Alineal Bliciol" + + "idiomandeojeroglíficos mayasmeroíticomalayálammongolmoonmanipuribirmanon" + + "’kooghamol cikiorkhonoriyaosmaniyapermiano antiguophags-pafenicioPolla" + + "rd Miaorejangrongo-rongorúnicosaratisaurashtraSignWritingshavianocingalé" + + "ssundanéssyloti nagrisiriacosiriaco estrangelosiriaco occidentalsiriaco " + + "orientaltagbanúatai lenuevo tai luetamiltelugutengwartifinaghtagalothaan" + + "atailandéstibetanougaríticovailenguaje visiblepersa antiguocuneiforme su" + + "merio-acadioyiheredadonotación matemáticaemojissímbolosno escritocomúnal" + + "fabeto desconocido" + +var esScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, 0x0016, - 0x001e, 0x001e, 0x001e, 0x0023, 0x002b, 0x0039, 0x0041, 0x0047, - 0x004e, 0x0056, 0x005b, 0x005b, 0x0087, 0x008c, 0x0090, 0x0098, - 0x009d, 0x00a2, 0x00ab, 0x00b4, 0x00de, 0x00e8, 0x00ef, 0x00ef, - 0x0100, 0x0112, 0x0128, 0x0128, 0x0131, 0x0148, 0x0151, 0x015d, - 0x0164, 0x0164, 0x016a, 0x0172, 0x0179, 0x017f, 0x0182, 0x0189, - 0x0199, 0x01a8, 0x01a8, 0x01ae, 0x01b6, 0x01b6, 0x01c2, 0x01d5, - 0x01e5, 0x01f5, 0x0208, 0x0210, 0x0218, 0x0218, 0x0220, 0x0228, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, + 0x0016, 0x001e, 0x001e, 0x001e, 0x0023, 0x002b, 0x002b, 0x0039, + 0x0041, 0x0047, 0x004e, 0x0056, 0x005b, 0x005b, 0x0087, 0x008c, + 0x0090, 0x0098, 0x009d, 0x00a2, 0x00ab, 0x00b4, 0x00de, 0x00e8, + 0x00ef, 0x00ef, 0x0100, 0x0112, 0x0128, 0x0128, 0x0131, 0x0148, + 0x0151, 0x015d, 0x0164, 0x0164, 0x016a, 0x0172, 0x0179, 0x017d, + 0x0183, 0x0186, 0x018d, 0x019d, 0x01ac, 0x01ac, 0x01b2, 0x01ba, + 0x01ba, 0x01c6, 0x01da, 0x01ea, 0x01fa, 0x020d, 0x0211, 0x0219, // Entry 40 - 7F - 0x0231, 0x0236, 0x0236, 0x023e, 0x0245, 0x0245, 0x0245, 0x024a, - 0x024d, 0x025b, 0x026a, 0x0270, 0x0276, 0x027b, 0x0283, 0x028b, - 0x028b, 0x028b, 0x0290, 0x0295, 0x0295, 0x029b, 0x029b, 0x02ae, - 0x02ae, 0x02ae, 0x02b8, 0x02c2, 0x02c2, 0x02c8, 0x02cc, 0x02cc, - 0x02d4, 0x02d4, 0x02db, 0x02db, 0x02db, 0x02db, 0x02e1, 0x02e1, - 0x02e6, 0x02ed, 0x02f3, 0x02f8, 0x0300, 0x0300, 0x0300, 0x0310, - 0x0318, 0x0318, 0x0318, 0x0318, 0x031f, 0x032b, 0x032b, 0x0331, - 0x033c, 0x0343, 0x0343, 0x0349, 0x0349, 0x0353, 0x035e, 0x0366, + 0x0221, 0x0221, 0x0229, 0x0231, 0x023a, 0x023f, 0x023f, 0x0247, + 0x024e, 0x024e, 0x024e, 0x0253, 0x025b, 0x0269, 0x0278, 0x027e, + 0x0284, 0x0289, 0x0291, 0x0299, 0x0299, 0x0299, 0x029e, 0x02a3, + 0x02a3, 0x02a9, 0x02a9, 0x02a9, 0x02bc, 0x02bc, 0x02bc, 0x02c6, + 0x02d0, 0x02d0, 0x02d6, 0x02da, 0x02da, 0x02e2, 0x02e2, 0x02e9, + 0x02e9, 0x02e9, 0x02e9, 0x02e9, 0x02ef, 0x02ef, 0x02f4, 0x02fb, + 0x0301, 0x0306, 0x0306, 0x030e, 0x030e, 0x030e, 0x031e, 0x0326, + 0x0326, 0x0326, 0x0326, 0x032d, 0x0339, 0x0339, 0x033f, 0x034a, // Entry 80 - BF - 0x0366, 0x0366, 0x0366, 0x036f, 0x036f, 0x0378, 0x0384, 0x038b, - 0x039d, 0x03af, 0x03bf, 0x03c8, 0x03c8, 0x03ce, 0x03db, 0x03e0, - 0x03e0, 0x03e0, 0x03e6, 0x03ed, 0x03f5, 0x03fb, 0x0401, 0x040b, - 0x0413, 0x0413, 0x041d, 0x0420, 0x0430, 0x0430, 0x0430, 0x043d, - 0x0456, 0x0458, 0x0460, 0x0460, 0x0460, 0x0469, 0x0473, 0x0479, - 0x048d, -} // Size: 362 bytes + 0x0351, 0x0351, 0x0357, 0x0357, 0x0361, 0x036c, 0x0374, 0x0374, + 0x0374, 0x0374, 0x037d, 0x037d, 0x0386, 0x0392, 0x0399, 0x03ab, + 0x03bd, 0x03cd, 0x03d6, 0x03d6, 0x03dc, 0x03e9, 0x03ee, 0x03ee, + 0x03ee, 0x03f4, 0x03fb, 0x0403, 0x0409, 0x040f, 0x0419, 0x0421, + 0x0421, 0x042b, 0x042e, 0x043e, 0x043e, 0x043e, 0x044b, 0x0464, + 0x0466, 0x046e, 0x0483, 0x0489, 0x0492, 0x049c, 0x04a2, 0x04b6, +} // Size: 376 bytes -const es419ScriptStr string = "" +const es419ScriptStr string = "katakana o hiraganalaolatín" -var es419ScriptIdx = []uint16{ // 0 elements - -} // Size: 24 bytes +var es419ScriptIdx = []uint16{ // 80 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, + // Entry 40 - 7F + 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, + 0x0013, 0x0013, 0x0013, 0x0013, 0x0016, 0x0016, 0x0016, 0x001c, +} // Size: 184 bytes -var etScriptStr string = "" + // Size: 1541 bytes +const etScriptStr string = "" + // Size: 1555 bytes "afakaalbaaniahomiaraabiavanaarameaarmeeniaavestabalibamumibassabatakiben" + "galiBlissi sümbolidbopomofobraahmipunktkiribugibuhiditšaakmaKanada põlis" + "rahvaste ühtlustatud silpkirikaariatšaamitšerokiiCirthikoptiKüprose silp" + "kirikirillitsakürilliline kirikuslaavidevanaagarideseretiDuployé kiirkir" + "iegiptuse demootilineegiptuse hieraatilineegiptuse hieroglüüfkiriElbasan" + - "ietioopiahutsurigruusiaglagoolitsagootigranthakreekagudžaratigurmukhikor" + - "eahanihanunoolihtsustatud hanitraditsiooniline haniHatraheebreahiraganaA" + - "natoolia hieroglüüfkiriphahau-hmongi kirijaapani silpkirjadvanaungariInd" + - "usevanaitalijaavajaapanitšurtšenikaja-liikatakanakharoshthikhmeerihodžki" + - "kannadakorea segakirikpellekaithitai-thamilaoladina fraktuurkiriladina g" + - "aeliladinaleptšalimbulineaarkiri Alineaarkiri Blisulomalüükialüüdiamahaa" + - "džanimandeamanimaaja hieroglüüfkirimendemeroe kursiivkirimeroemalajalami" + - "modimongoliMoonimruumeiteiMultanibirmaPõhja-AraabiaNabateanasinkoonüšuog" + - "amsantaliOrhonioriaosmaniPalmyravanapermiphakpapahlavi raidkiripahlavi p" + - "salmikiripahlavi raamatukirifoiniikiaPollardi miaopartia raidkiriredžang" + - "irongorongoruunikiriSamaariasaratiLõuna-AraabiasauraštraviipekiriShaw’ k" + - "irišaaradasiddhamihudavadisingalisorasundasilotisüüriasüüria estrangelol" + - "äänesüüriaidasüüriatagbanvataakritai-lööuus tai-lõõtamilitanguuditai-vi" + - "etiteluguTengwaritifinagitagalogitaanataitiibetitirhutaugaritivainähtava" + - " kõnehoovoleaivanapärsiasumeri-akadi kiilkirijiipäritudmatemaatiline täh" + - "istussümbolidkirjakeeletaüldinemääramata kiri" - -var etScriptIdx = []uint16{ // 169 elements + "ietioopiahutsurigruusiaglagoolitsagootigranthakreekagudžaratigurmukhihan" + + "bikoreahanihanunoolihtsustatud hanitraditsiooniline haniHatraheebreahira" + + "ganaAnatoolia hieroglüüfkiriphahau-hmongi kirijaapani silpkirjadvanaunga" + + "riIndusevanaitalijamojaavajaapanitšurtšenikaja-liikatakanakharoshthikhme" + + "erihodžkikannadakorea segakirikpellekaithitai-thamilaoladina fraktuurkir" + + "iladina gaeliladinaleptšalimbulineaarkiri Alineaarkiri Blisulomalüükialü" + + "üdiamahaadžanimandeamanimaaja hieroglüüfkirimendemeroe kursiivkirimeroe" + + "malajalamimodimongoliMoonimruumeiteiMultanibirmaPõhja-AraabiaNabateanasi" + + "nkoonüšuogamsantaliOrhonioriaosmaniPalmyravanapermiphakpapahlavi raidkir" + + "ipahlavi psalmikiripahlavi raamatukirifoiniikiaPollardi miaopartia raidk" + + "iriredžangirongorongoruunikiriSamaariasaratiLõuna-Araabiasauraštraviipek" + + "iriShaw’ kirišaaradasiddhamihudavadisingalisorasundasilotisüüriasüüria e" + + "strangeloläänesüüriaidasüüriatagbanvataakritai-lööuus tai-lõõtamilitangu" + + "uditai-vietiteluguTengwaritifinagitagalogitaanataitiibetitirhutaugaritiv" + + "ainähtava kõnehoovoleaivanapärsiasumeri-akadi kiilkirijiipäritudmatemaat" + + "iline tähistusemojisümbolidkirjakeeletaüldinemääramata kiri" + +var etScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x000c, 0x0011, 0x0018, 0x0022, 0x002a, 0x0030, - 0x0034, 0x003a, 0x003f, 0x0045, 0x004c, 0x005c, 0x0064, 0x006b, - 0x0074, 0x0078, 0x007e, 0x0086, 0x00b1, 0x00b7, 0x00be, 0x00c7, - 0x00cd, 0x00d2, 0x00e3, 0x00ed, 0x0106, 0x0111, 0x0119, 0x012a, - 0x013e, 0x0153, 0x016c, 0x0174, 0x017c, 0x0183, 0x018a, 0x0195, - 0x019a, 0x01a1, 0x01a7, 0x01b1, 0x01b9, 0x01be, 0x01c2, 0x01c9, - 0x01da, 0x01ef, 0x01f4, 0x01fb, 0x0203, 0x021d, 0x022f, 0x0241, - 0x024b, 0x0251, 0x025a, 0x025f, 0x0266, 0x0271, 0x0279, 0x0281, + 0x0000, 0x0000, 0x0005, 0x000c, 0x0011, 0x0018, 0x0022, 0x002a, + 0x0030, 0x0034, 0x003a, 0x003f, 0x0045, 0x004c, 0x004c, 0x005c, + 0x0064, 0x006b, 0x0074, 0x0078, 0x007e, 0x0086, 0x00b1, 0x00b7, + 0x00be, 0x00c7, 0x00cd, 0x00d2, 0x00e3, 0x00ed, 0x0106, 0x0111, + 0x0119, 0x012a, 0x013e, 0x0153, 0x016c, 0x0174, 0x017c, 0x0183, + 0x018a, 0x0195, 0x019a, 0x01a1, 0x01a7, 0x01b1, 0x01b9, 0x01be, + 0x01c3, 0x01c7, 0x01ce, 0x01df, 0x01f4, 0x01f9, 0x0200, 0x0208, + 0x0222, 0x0234, 0x0246, 0x0250, 0x0256, 0x025f, 0x0263, 0x0268, // Entry 40 - 7F - 0x028b, 0x0292, 0x0299, 0x02a0, 0x02ae, 0x02b4, 0x02ba, 0x02c3, - 0x02c6, 0x02d9, 0x02e5, 0x02eb, 0x02f2, 0x02f7, 0x0304, 0x0311, - 0x0315, 0x0319, 0x0321, 0x0329, 0x0334, 0x033a, 0x033e, 0x0354, - 0x0359, 0x036a, 0x036f, 0x0379, 0x037d, 0x0384, 0x0389, 0x038d, - 0x0393, 0x039a, 0x039f, 0x03ad, 0x03b4, 0x03b8, 0x03bc, 0x03c2, - 0x03c6, 0x03cd, 0x03d3, 0x03d7, 0x03dd, 0x03e4, 0x03e4, 0x03ed, - 0x03f3, 0x0403, 0x0415, 0x0428, 0x0431, 0x043e, 0x044d, 0x0456, - 0x0460, 0x0469, 0x0471, 0x0477, 0x0485, 0x048f, 0x0498, 0x04a4, + 0x026f, 0x027a, 0x0282, 0x028a, 0x0294, 0x029b, 0x02a2, 0x02a9, + 0x02b7, 0x02bd, 0x02c3, 0x02cc, 0x02cf, 0x02e2, 0x02ee, 0x02f4, + 0x02fb, 0x0300, 0x030d, 0x031a, 0x031e, 0x0322, 0x032a, 0x0332, + 0x033d, 0x0343, 0x0347, 0x0347, 0x035d, 0x0362, 0x0373, 0x0378, + 0x0382, 0x0386, 0x038d, 0x0392, 0x0396, 0x039c, 0x03a3, 0x03a8, + 0x03b6, 0x03bd, 0x03bd, 0x03c1, 0x03c5, 0x03cb, 0x03cf, 0x03d6, + 0x03dc, 0x03e0, 0x03e0, 0x03e6, 0x03ed, 0x03ed, 0x03f6, 0x03fc, + 0x040c, 0x041e, 0x0431, 0x043a, 0x0447, 0x0456, 0x045f, 0x0469, // Entry 80 - BF - 0x04ac, 0x04b4, 0x04bc, 0x04c3, 0x04c7, 0x04cc, 0x04d2, 0x04da, - 0x04ed, 0x04fc, 0x0507, 0x050f, 0x0515, 0x051e, 0x052b, 0x0531, - 0x0539, 0x0542, 0x0548, 0x0550, 0x0558, 0x0560, 0x0565, 0x0568, - 0x056f, 0x0576, 0x057d, 0x0580, 0x058e, 0x0591, 0x0597, 0x05a2, - 0x05b7, 0x05ba, 0x05c2, 0x05d9, 0x05d9, 0x05e2, 0x05ee, 0x05f5, - 0x0605, -} // Size: 362 bytes - -var faScriptStr string = "" + // Size: 1849 bytes + 0x0472, 0x047a, 0x0480, 0x048e, 0x0498, 0x04a1, 0x04ad, 0x04b5, + 0x04bd, 0x04c5, 0x04cc, 0x04d0, 0x04d5, 0x04db, 0x04e3, 0x04f6, + 0x0505, 0x0510, 0x0518, 0x051e, 0x0527, 0x0534, 0x053a, 0x0542, + 0x054b, 0x0551, 0x0559, 0x0561, 0x0569, 0x056e, 0x0571, 0x0578, + 0x057f, 0x0586, 0x0589, 0x0597, 0x059a, 0x05a0, 0x05ab, 0x05c0, + 0x05c3, 0x05cb, 0x05e2, 0x05e7, 0x05f0, 0x05fc, 0x0603, 0x0613, +} // Size: 376 bytes + +const faScriptStr string = "" + // Size: 1877 bytes "آلبانیایی قفقازیعربیآرامی هخامنشیارمنیاوستاییبالیاییباتاکیبنگالینمادهای " + "بلیسبوپوموفوبراهمیبریلبوگیاییبوهیدچاکماییکاریچمیچروکیاییکرتقبطیقبرسیسیر" + "یلیدوناگریدیسرتیکاهنی مصریهیروگلیف مصریاتیوپیاییگرجی خوتسوریگرجیگلاگولی" + - "تیگوتییونانیگجراتیگورومخیهانگولهانهانونوییهان ساده\u200cشدههان سنتیعبری" + - "هیراگاناهیروگلیف آناتولیسیلابی\u200cهای ژاپنیمجاری باستانایندوسایتالی ب" + - "استانجاوه\u200cایژاپنیکایالیکاتاکاناخمریخواجکیکاناراکره\u200cایکثیلانای" + - "یلائوسیلاتینی فراکتورلاتینی گیلیلاتینیلیمباییخطی الفخطی بلسیاییلدیاییمن" + - "ده\u200cایمانویهیروگلیف مایاییمروییتیمالایالامیمغولیمونیمایک میتیمیانما" + - "رعربی شمالی باستاننبطیاوگامیاورخونیاوریه\u200cایپالمیراییپرمی باستانپهل" + - "وی کتیبه\u200cایپهلوی زبوریپهلوی کتابیفنیقیپارتی کتیبه\u200cایرجنگیرونی" + - "سامریساراتیعربی جنوبی باستانسوراشتراییشاویسینهالیسیلوتی نگاریسریانیسریا" + - "نی سطرنجیلیسریانی غربیسریانی شرقیتگبنواییتامیلیتلوگوییتنگوارتیفیناغیتاگ" + - "الوگیتانه\u200cایتایلندیتبتیاوگاریتیویاییگفتار قابل مشاهدهفارسی باستانم" + - "یخی سومری‐اکدیییموروثیعلائم ریاضیعلائمنانوشتهمشترکخط نامشخص" - -var faScriptIdx = []uint16{ // 169 elements + "تیگوتییونانیگجراتیگورومخیهانبیهانگولهانهانونوییهان ساده\u200cشدههان سنت" + + "یعبریهیراگاناهیروگلیف آناتولیسیلابی\u200cهای ژاپنیمجاری باستانایندوسایت" + + "الی باستانجاموجاوه\u200cایژاپنیکایالیکاتاکاناخمریخواجکیکاناراکره\u200cا" + + "یکثیلاناییلائوسیلاتینی فراکتورلاتینی گیلیلاتینیلیمباییخطی الفخطی بلسیای" + + "یلدیاییمنده\u200cایمانویهیروگلیف مایاییمروییتیمالایالامیمغولیمونیمایک م" + + "یتیمیانمارعربی شمالی باستاننبطیاوگامیاورخونیاوریه\u200cایپالمیراییپرمی " + + "باستانپهلوی کتیبه\u200cایپهلوی زبوریپهلوی کتابیفنیقیپارتی کتیبه\u200cای" + + "رجنگیرونیسامریساراتیعربی جنوبی باستانسوراشتراییشاویسینهالیسیلوتی نگاریس" + + "ریانیسریانی سطرنجیلیسریانی غربیسریانی شرقیتگبنواییتامیلیتلوگوییتنگوارتی" + + "فیناغیتاگالوگیتانه\u200cایتایلندیتبتیاوگاریتیویاییگفتار قابل مشاهدهفارس" + + "ی باستانمیخی سومری‐اکدیییموروثیعلائم ریاضیاموجیعلائمنانوشتهمشترکخط نامش" + + "خص" + +var faScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x001f, 0x001f, 0x0027, 0x0040, 0x004a, 0x0058, - 0x0066, 0x0066, 0x0066, 0x0072, 0x007e, 0x0095, 0x00a5, 0x00b1, - 0x00b9, 0x00c7, 0x00d1, 0x00df, 0x00df, 0x00e7, 0x00ed, 0x00fd, - 0x0103, 0x010b, 0x0115, 0x0121, 0x0121, 0x012f, 0x013b, 0x013b, - 0x013b, 0x014e, 0x0167, 0x0167, 0x0179, 0x0190, 0x0198, 0x01aa, - 0x01b2, 0x01b2, 0x01be, 0x01ca, 0x01d8, 0x01e4, 0x01ea, 0x01fa, - 0x0212, 0x0221, 0x0221, 0x0229, 0x0239, 0x0258, 0x0258, 0x0278, - 0x028f, 0x029b, 0x02b4, 0x02c3, 0x02cd, 0x02cd, 0x02d9, 0x02e9, + 0x0000, 0x0000, 0x0000, 0x001f, 0x001f, 0x0027, 0x0040, 0x004a, + 0x0058, 0x0066, 0x0066, 0x0066, 0x0072, 0x007e, 0x007e, 0x0095, + 0x00a5, 0x00b1, 0x00b9, 0x00c7, 0x00d1, 0x00df, 0x00df, 0x00e7, + 0x00ed, 0x00fd, 0x0103, 0x010b, 0x0115, 0x0121, 0x0121, 0x012f, + 0x013b, 0x013b, 0x013b, 0x014e, 0x0167, 0x0167, 0x0179, 0x0190, + 0x0198, 0x01aa, 0x01b2, 0x01b2, 0x01be, 0x01ca, 0x01d8, 0x01e2, + 0x01ee, 0x01f4, 0x0204, 0x021c, 0x022b, 0x022b, 0x0233, 0x0243, + 0x0262, 0x0262, 0x0282, 0x0299, 0x02a5, 0x02be, 0x02c6, 0x02d5, // Entry 40 - 7F - 0x02e9, 0x02f1, 0x02fd, 0x0309, 0x0316, 0x0316, 0x031c, 0x0328, - 0x0334, 0x034f, 0x0364, 0x0370, 0x0370, 0x037e, 0x038b, 0x0394, - 0x0394, 0x0394, 0x03a0, 0x03ac, 0x03ac, 0x03bb, 0x03c5, 0x03e2, - 0x03e2, 0x03e2, 0x03f0, 0x0404, 0x0404, 0x040e, 0x0416, 0x0416, - 0x0427, 0x0427, 0x0435, 0x0455, 0x045d, 0x045d, 0x045d, 0x045d, - 0x0469, 0x0469, 0x0477, 0x0488, 0x0488, 0x049a, 0x049a, 0x04af, - 0x04af, 0x04cb, 0x04e0, 0x04f5, 0x04ff, 0x04ff, 0x051b, 0x0525, - 0x0525, 0x052d, 0x0537, 0x0543, 0x0563, 0x0577, 0x0577, 0x057f, + 0x02df, 0x02df, 0x02eb, 0x02fb, 0x02fb, 0x0303, 0x030f, 0x031b, + 0x0328, 0x0328, 0x032e, 0x033a, 0x0346, 0x0361, 0x0376, 0x0382, + 0x0382, 0x0390, 0x039d, 0x03a6, 0x03a6, 0x03a6, 0x03b2, 0x03be, + 0x03be, 0x03cd, 0x03d7, 0x03d7, 0x03f4, 0x03f4, 0x03f4, 0x0402, + 0x0416, 0x0416, 0x0420, 0x0428, 0x0428, 0x0439, 0x0439, 0x0447, + 0x0467, 0x046f, 0x046f, 0x046f, 0x046f, 0x046f, 0x047b, 0x047b, + 0x0489, 0x049a, 0x049a, 0x049a, 0x04ac, 0x04ac, 0x04c1, 0x04c1, + 0x04dd, 0x04f2, 0x0507, 0x0511, 0x0511, 0x052d, 0x0537, 0x0537, // Entry 80 - BF - 0x057f, 0x057f, 0x057f, 0x058d, 0x058d, 0x058d, 0x05a4, 0x05b0, - 0x05cd, 0x05e2, 0x05f7, 0x0607, 0x0607, 0x0607, 0x0607, 0x0613, - 0x0613, 0x0613, 0x0621, 0x062d, 0x063d, 0x064d, 0x065c, 0x066a, - 0x0672, 0x0672, 0x0682, 0x068c, 0x06ac, 0x06ac, 0x06ac, 0x06c3, - 0x06e1, 0x06e5, 0x06f1, 0x0706, 0x0706, 0x0710, 0x071e, 0x0728, - 0x0739, -} // Size: 362 bytes - -var fiScriptStr string = "" + // Size: 2325 bytes - "afakakaukasianalbanialainenahomarabialainenvaltakunnanaramealainenarmeni" + - "alainenavestalainenbalilainenbamumbassabatakilainenbengalilainenbliss-sy" + - "mbolitbopomofobrahmibraille-pistekirjoitusbugilainenbuhidilainenchakmala" + - "inenkanadalaisten alkuperäiskansojen yhtenäistetty tavukirjoituskaariala" + - "inentšamilainencherokeelainencirthkoptilainenmuinaiskyproslainenkyrillin" + - "enkyrillinen muinaiskirkkoslaavimuunnelmadevanagarideseretDuployén pikak" + - "irjoitusegyptiläinen demoottinenegyptiläinen hieraattinenegyptiläiset hi" + - "eroglyfitelbasanilainenetiopialainenmuinaisgeorgialainengeorgialainengla" + - "goliittinengoottilainengranthakreikkalainengudžaratilainengurmukhihangul" + - "kiinalainen hanhanunoolainenkiinalainen yksinkertaistettu hankiinalainen" + - " perinteinen hanhatralainenheprealainenhiraganaanatolialaiset hieroglyfi" + - "tpahawh hmonghiragana tai katakanamuinaisunkarilaineninduslainenmuinaisi" + - "talialainenjaavalainenjapanilainendžurtšenkayah likatakanakharosthikhmer" + - "iläinenkhojkikannadalainenkorealainenkpellekaithilannalaolainenlatinalai" + - "nen fraktuuramuunnelmalatinalainen gaelimuunnelmalatinalainenlepchalaine" + - "nlimbulainenlineaari-Alineaari-BFraserin aakkosetlomalyykialainenlyydial" + - "ainenmahajanilainenmandealainenmanikealainenmaya-hieroglyfitmendemeroiit" + - "tinen kursiivikirjoitusmeroiittinenmalajalamilainenmodi-aakkosetmongolil" + - "ainenmoon-kohokirjoitusmromeiteimultanilainenburmalainenmuinaispohjoisar" + - "abialainennabatealainennaxi geban’konüshuogamol chikiorkhonorijalainenos" + - "manjalainenpalmyralainenzotuallaimuinaispermiläinenphags-papiirtokirjoit" + - "uspahlavilainenpsalttaripahlavilainenkirjapahlavilainenfoinikialainenPol" + - "lardin foneettinenpiirtokirjoitusparthialainenrejangrongorongoriimukirjo" + - "itussamarianaramealainensaratimuinaiseteläarabialainensaurashtraSignWrit" + - "ingshaw’lainenšaradasiddham-tavukirjoituskhudabadisinhalilainensorang so" + - "mpengsundalainensyloti nagrisyyrialainensyyrialainen estrangelo-muunnelm" + - "asyyrialainen läntinen muunnelmasyyrialainen itäinen muunnelmatagbanwala" + - "inentakritailelainenuusi tailuelainentamililainentanguttai viettelugulai" + - "nentengwartifinaghtagalogilainenthaanathailainentiibetiläinentirhutaugar" + - "itilainenvailainennäkyvä puhevarang kshitiwoleaimuinaispersialainensumer" + - "ilais-akkadilainen nuolenpääkirjoitusyiläinenperittymatemaattinensymboli" + - "tkirjoittamatonmäärittämätöntuntematon kirjoitusjärjestelmä" - -var fiScriptIdx = []uint16{ // 169 elements + 0x053f, 0x0549, 0x0555, 0x0575, 0x0589, 0x0589, 0x0591, 0x0591, + 0x0591, 0x0591, 0x059f, 0x059f, 0x059f, 0x05b6, 0x05c2, 0x05df, + 0x05f4, 0x0609, 0x0619, 0x0619, 0x0619, 0x0619, 0x0625, 0x0625, + 0x0625, 0x0633, 0x063f, 0x064f, 0x065f, 0x066e, 0x067c, 0x0684, + 0x0684, 0x0694, 0x069e, 0x06be, 0x06be, 0x06be, 0x06d5, 0x06f3, + 0x06f7, 0x0703, 0x0718, 0x0722, 0x072c, 0x073a, 0x0744, 0x0755, +} // Size: 376 bytes + +const fiScriptStr string = "" + // Size: 2515 bytes + "fulanin adlam-aakkostoafakakaukasianalbanialainenahomarabialainenvaltaku" + + "nnanaramealainenarmenialainenavestalainenbalilainenbamumbassabatakilaine" + + "nbengalilainensanskritin bhaiksuki-aakkostobliss-symbolitbopomofobrahmib" + + "raille-pistekirjoitusbugilainenbuhidilainenchakmalainenkanadalaisten alk" + + "uperäiskansojen yhtenäistetty tavukirjoituskaarialainentšamilainencherok" + + "eelainencirthkoptilainenmuinaiskyproslainenkyrillinenkyrillinen muinaisk" + + "irkkoslaavimuunnelmadevanagarideseretDuployén pikakirjoitusegyptiläinen " + + "demoottinenegyptiläinen hieraattinenegyptiläiset hieroglyfitelbasanilain" + + "enetiopialainenmuinaisgeorgialainengeorgialainenglagoliittinengoottilain" + + "engranthakreikkalainengudžaratilainengurmukhikiinan han ja bopomofohangu" + + "lkiinalainen hanhanunoolainenkiinalainen yksinkertaistettu hankiinalaine" + + "n perinteinen hanhatralainenheprealainenhiraganaanatolialaiset hieroglyf" + + "itpahawh hmonghiragana tai katakanamuinaisunkarilaineninduslainenmuinais" + + "italialainenkorean hangulin jamo-elementitjaavalainenjapanilainendžurtše" + + "nkayah likatakanakharosthikhmeriläinenkhojkikannadalainenkorealainenkpel" + + "lekaithilannalaolainenlatinalainen fraktuuramuunnelmalatinalainen gaelim" + + "uunnelmalatinalainenlepchalainenlimbulainenlineaari-Alineaari-BFraserin " + + "aakkosetlomalyykialainenlyydialainenmahajanilainenmandealainenmanikealai" + + "nentiibetiläinen marchan-kirjoitusmaya-hieroglyfitmendemeroiittinen kurs" + + "iivikirjoitusmeroiittinenmalajalamilainenmodi-aakkosetmongolilainenmoon-" + + "kohokirjoitusmromeiteimultanilainenburmalainenmuinaispohjoisarabialainen" + + "nabatealainennewarin newa-tavukirjoitusnaxi geban’konüshuogamol chikiork" + + "honorijalainenosagen aakkostoosmanjalainenpalmyralainenzotuallaimuinaisp" + + "ermiläinenphags-papiirtokirjoituspahlavilainenpsalttaripahlavilainenkirj" + + "apahlavilainenfoinikialainenPollardin foneettinenpiirtokirjoitusparthial" + + "ainenrejangrongorongoriimukirjoitussamarianaramealainensaratimuinaisetel" + + "äarabialainensaurashtraSignWritingshaw’lainenšaradasiddham-tavukirjoitu" + + "skhudabadisinhalilainensorang sompengsundalainensyloti nagrisyyrialainen" + + "syyrialainen estrangelo-muunnelmasyyrialainen läntinen muunnelmasyyriala" + + "inen itäinen muunnelmatagbanwalainentakritailelainenuusi tailuelainentam" + + "ililainentanguttai viettelugulainentengwartifinaghtagalogilainenthaanath" + + "ailainentiibetiläinentirhutaugaritilainenvailainennäkyvä puhevarang kshi" + + "tiwoleaimuinaispersialainensumerilais-akkadilainen nuolenpääkirjoitusyil" + + "äinenperittymatemaattinenemoji-symbolitsymbolitkirjoittamatonmäärittämä" + + "töntuntematon kirjoitusjärjestelmä" + +var fiScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x001b, 0x001f, 0x002b, 0x0042, 0x004f, 0x005b, - 0x0065, 0x006a, 0x006f, 0x007b, 0x0088, 0x0096, 0x009e, 0x00a4, - 0x00ba, 0x00c4, 0x00d0, 0x00dc, 0x011a, 0x0126, 0x0132, 0x0140, - 0x0145, 0x0150, 0x0163, 0x016d, 0x0194, 0x019e, 0x01a5, 0x01bc, - 0x01d5, 0x01ef, 0x0208, 0x0216, 0x0223, 0x0237, 0x0244, 0x0252, - 0x025e, 0x0265, 0x0272, 0x0282, 0x028a, 0x0290, 0x029f, 0x02ac, - 0x02cd, 0x02e8, 0x02f3, 0x02ff, 0x0307, 0x0321, 0x032d, 0x0342, - 0x0355, 0x0360, 0x0373, 0x037e, 0x038a, 0x0394, 0x039c, 0x03a4, + 0x0000, 0x0016, 0x001b, 0x0031, 0x0035, 0x0041, 0x0058, 0x0065, + 0x0071, 0x007b, 0x0080, 0x0085, 0x0091, 0x009e, 0x00bb, 0x00c9, + 0x00d1, 0x00d7, 0x00ed, 0x00f7, 0x0103, 0x010f, 0x014d, 0x0159, + 0x0165, 0x0173, 0x0178, 0x0183, 0x0196, 0x01a0, 0x01c7, 0x01d1, + 0x01d8, 0x01ef, 0x0208, 0x0222, 0x023b, 0x0249, 0x0256, 0x026a, + 0x0277, 0x0285, 0x0291, 0x0298, 0x02a5, 0x02b5, 0x02bd, 0x02d3, + 0x02d9, 0x02e8, 0x02f5, 0x0316, 0x0331, 0x033c, 0x0348, 0x0350, + 0x036a, 0x0376, 0x038b, 0x039e, 0x03a9, 0x03bc, 0x03da, 0x03e5, // Entry 40 - 7F - 0x03ad, 0x03ba, 0x03c0, 0x03cd, 0x03d8, 0x03de, 0x03e4, 0x03e9, - 0x03f2, 0x0411, 0x042c, 0x0438, 0x0444, 0x044f, 0x0459, 0x0463, - 0x0474, 0x0478, 0x0484, 0x0490, 0x049e, 0x04aa, 0x04b7, 0x04c7, - 0x04cc, 0x04ea, 0x04f6, 0x0506, 0x0513, 0x0520, 0x0532, 0x0535, - 0x053b, 0x0548, 0x0553, 0x056d, 0x057a, 0x0583, 0x0589, 0x058f, - 0x0593, 0x059b, 0x05a1, 0x05ac, 0x05b9, 0x05c6, 0x05cf, 0x05e2, - 0x05ea, 0x0606, 0x061c, 0x062e, 0x063c, 0x0651, 0x066d, 0x0673, - 0x067d, 0x068b, 0x069f, 0x06a5, 0x06be, 0x06c8, 0x06d3, 0x06e0, + 0x03f1, 0x03fb, 0x0403, 0x040b, 0x0414, 0x0421, 0x0427, 0x0434, + 0x043f, 0x0445, 0x044b, 0x0450, 0x0459, 0x0478, 0x0493, 0x049f, + 0x04ab, 0x04b6, 0x04c0, 0x04ca, 0x04db, 0x04df, 0x04eb, 0x04f7, + 0x0505, 0x0511, 0x051e, 0x053e, 0x054e, 0x0553, 0x0571, 0x057d, + 0x058d, 0x059a, 0x05a7, 0x05b9, 0x05bc, 0x05c2, 0x05cf, 0x05da, + 0x05f4, 0x0601, 0x061b, 0x0624, 0x062a, 0x0630, 0x0634, 0x063c, + 0x0642, 0x064d, 0x065c, 0x0669, 0x0676, 0x067f, 0x0692, 0x069a, + 0x06b6, 0x06cc, 0x06de, 0x06ec, 0x0701, 0x071d, 0x0723, 0x072d, // Entry 80 - BF - 0x06e7, 0x06fc, 0x0705, 0x0712, 0x0720, 0x072b, 0x0737, 0x0743, - 0x0764, 0x0784, 0x07a3, 0x07b1, 0x07b6, 0x07c1, 0x07d2, 0x07de, - 0x07e4, 0x07ec, 0x07f8, 0x07ff, 0x0807, 0x0815, 0x081b, 0x0825, - 0x0833, 0x083a, 0x0847, 0x0850, 0x085d, 0x086a, 0x0870, 0x0883, - 0x08af, 0x08b8, 0x08bf, 0x08cc, 0x08cc, 0x08d4, 0x08e2, 0x08f4, - 0x0915, -} // Size: 362 bytes - -var filScriptStr string = "" + // Size: 311 bytes - "ArabicArmenianBengaliBopomofoBrailleCyrillicDevanagariEthiopicGeorgianGr" + - "eekGujaratiGurmukhiHangulHanPinasimpleng HanTradisyonal na HanHebrewHira" + - "ganaJapaneseKatakanaKhmerKannadaKoreanLaoLatinMalayalamMongolianMyanmarO" + - "riyaSinhalaTamilTeluguThaanaThaiTibetanMga SimboloHindi NakasulatKaraniw" + - "anHindi Kilalang Script" - -var filScriptIdx = []uint16{ // 169 elements + 0x073b, 0x074f, 0x0755, 0x076e, 0x0778, 0x0783, 0x0790, 0x0797, + 0x07ac, 0x07b5, 0x07c2, 0x07d0, 0x07db, 0x07e7, 0x07f3, 0x0814, + 0x0834, 0x0853, 0x0861, 0x0866, 0x0871, 0x0882, 0x088e, 0x0894, + 0x089c, 0x08a8, 0x08af, 0x08b7, 0x08c5, 0x08cb, 0x08d5, 0x08e3, + 0x08ea, 0x08f7, 0x0900, 0x090d, 0x091a, 0x0920, 0x0933, 0x095f, + 0x0968, 0x096f, 0x097c, 0x098a, 0x0992, 0x09a0, 0x09b2, 0x09d3, +} // Size: 376 bytes + +const filScriptStr string = "" + // Size: 363 bytes + "ArabicArmenianBanglaBopomofoBrailleCyrillicDevanagariEthiopicGeorgianGre" + + "ekGujaratiGurmukhiHanbHangulHanPinasimpleng HanTradisyonal na HanHebrewH" + + "iraganaJapanese syllabariesJamoJapaneseKatakanaKhmerKannadaKoreanLaoLati" + + "nMalayalamMongolianMyanmarOdiaSinhalaTamilTeluguThaanaThaiTibetanMathema" + + "tical NotationEmojiMga SimboloHindi NakasulatKaraniwanHindi Kilalang Scr" + + "ipt" + +var filScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x0015, 0x0015, 0x001d, 0x001d, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x002c, 0x002c, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x003e, 0x003e, 0x0046, 0x0046, - 0x0046, 0x0046, 0x004b, 0x0053, 0x005b, 0x0061, 0x0064, 0x0064, - 0x0074, 0x0086, 0x0086, 0x008c, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x009c, 0x009c, 0x009c, 0x00a4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0014, 0x0014, 0x0014, + 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, + 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x002b, 0x002b, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, + 0x0045, 0x0045, 0x0045, 0x0045, 0x004a, 0x0052, 0x005a, 0x005e, + 0x0064, 0x0067, 0x0067, 0x0077, 0x0089, 0x0089, 0x008f, 0x0097, + 0x0097, 0x0097, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00af, 0x00af, // Entry 40 - 7F - 0x00a4, 0x00a9, 0x00a9, 0x00b0, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b9, 0x00b9, 0x00b9, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, - 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, - 0x00be, 0x00be, 0x00be, 0x00c7, 0x00c7, 0x00d0, 0x00d0, 0x00d0, - 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, - 0x00d7, 0x00d7, 0x00d7, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00b7, 0x00b7, 0x00b7, 0x00bf, 0x00bf, 0x00c4, 0x00c4, 0x00cb, + 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d4, 0x00d4, 0x00d4, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00e2, 0x00e2, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f2, + 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, + 0x00f2, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, // Entry 80 - BF - 0x00dc, 0x00dc, 0x00dc, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e8, - 0x00e8, 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f4, 0x00f8, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x0119, 0x0122, - 0x0137, -} // Size: 362 bytes - -var frScriptStr string = "" + // Size: 1445 bytes + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0102, 0x0102, + 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x010e, 0x0112, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x012e, 0x0133, 0x013e, 0x014d, 0x0156, 0x016b, +} // Size: 376 bytes + +const frScriptStr string = "" + // Size: 1457 bytes "arabearaméen impérialarménienavestiquebalinaisbatakbengalisymboles Bliss" + "bopomofobrâhmîbraillebouguisbouhidechakmasyllabaire autochtone canadien " + "unifiécarienchamcherokeecirthcoptesyllabaire chypriotecyrilliquecyrilliq" + "ue (variante slavonne)dévanâgarîdéséretdémotique égyptienhiératique égyp" + "tienhiéroglyphes égyptienséthiopiquegéorgien khoutsourigéorgienglagoliti" + - "quegotiquegrecgoudjarâtîgourmoukhîhangûlsinogrammeshanounóosinogrammes s" + - "implifiéssinogrammes traditionnelshébreuhiraganapahawh hmongkatakana ou " + - "hiraganaancien hongroisindusancien italiquejavanaisjaponaiskayah likatak" + - "anakharochthîkhmerkannaracoréenkaithîlannalaolatin (variante brisée)lati" + - "n (variante gaélique)latinlepchalimboulinéaire Alinéaire Blycienlydienma" + - "ndéenmanichéenhiéroglyphes mayasméroïtiquemalayalammongolmoonmeitei maye" + - "kbirmann’koogamol tchikiorkhonoriyaosmanaisancien permienphags papehlevi" + - " des inscriptionspehlevi des psautierspehlevi des livresphénicienphonéti" + - "que de Pollardparthe des inscriptionsrejangrongorongoruniquesamaritainsa" + - "ratisaurashtraécriture des signesshaviencinghalaissundanaissylotî nâgrîs" + - "yriaquesyriaque estranghélosyriaque occidentalsyriaque orientaltagbanoua" + - "taï-lenouveau taï-luetamoultaï viêttélougoutengwartifinaghtagalthânathaï" + - "tibétainougaritiquevaïparole visiblecunéiforme persépolitaincunéiforme s" + - "uméro-akkadienyihériténotation mathématiquesymbolesnon écritcommunécritu" + - "re inconnue" - -var frScriptIdx = []uint16{ // 169 elements + "quegotiquegrecgoudjarâtîgourmoukhîHanbhangûlsinogrammeshanounóosinogramm" + + "es simplifiéssinogrammes traditionnelshébreuhiraganapahawh hmongkatakana" + + " ou hiraganaancien hongroisindusancien italiqueJamojavanaisjaponaiskayah" + + " likatakanakharochthîkhmerkannaracoréenkaithîlannalaolatin (variante bri" + + "sée)latin (variante gaélique)latinlepchalimboulinéaire Alinéaire Blycien" + + "lydienmandéenmanichéenhiéroglyphes mayasméroïtiquemalayalammongolmoonmei" + + "tei mayekbirmann’koogamol tchikiorkhonoriyaosmanaisancien permienphags p" + + "apehlevi des inscriptionspehlevi des psautierspehlevi des livresphénicie" + + "nphonétique de Pollardparthe des inscriptionsrejangrongorongoruniquesama" + + "ritainsaratisaurashtraécriture des signesshaviencinghalaissundanaissylot" + + "î nâgrîsyriaquesyriaque estranghélosyriaque occidentalsyriaque oriental" + + "tagbanouataï-lenouveau taï-luetamoultaï viêttélougoutengwartifinaghtagal" + + "thânathaïtibétainougaritiquevaïparole visiblecunéiforme persépolitaincun" + + "éiforme suméro-akkadienyihériténotation mathématiqueZsyesymbolesnon écr" + + "itcommunécriture inconnue" + +var frScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0017, 0x0020, 0x0029, - 0x0031, 0x0031, 0x0031, 0x0036, 0x003d, 0x004b, 0x0053, 0x005b, - 0x0062, 0x0069, 0x0070, 0x0076, 0x009c, 0x00a2, 0x00a6, 0x00ae, - 0x00b3, 0x00b8, 0x00cc, 0x00d6, 0x00f4, 0x0101, 0x010a, 0x010a, - 0x011e, 0x0133, 0x014b, 0x014b, 0x0156, 0x016a, 0x0173, 0x017f, - 0x0186, 0x0186, 0x018a, 0x0196, 0x01a1, 0x01a8, 0x01b3, 0x01bc, - 0x01d3, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0207, 0x021b, - 0x022a, 0x022f, 0x023e, 0x0246, 0x024e, 0x024e, 0x0256, 0x025e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0017, 0x0020, + 0x0029, 0x0031, 0x0031, 0x0031, 0x0036, 0x003d, 0x003d, 0x004b, + 0x0053, 0x005b, 0x0062, 0x0069, 0x0070, 0x0076, 0x009c, 0x00a2, + 0x00a6, 0x00ae, 0x00b3, 0x00b8, 0x00cc, 0x00d6, 0x00f4, 0x0101, + 0x010a, 0x010a, 0x011e, 0x0133, 0x014b, 0x014b, 0x0156, 0x016a, + 0x0173, 0x017f, 0x0186, 0x0186, 0x018a, 0x0196, 0x01a1, 0x01a5, + 0x01ac, 0x01b7, 0x01c0, 0x01d7, 0x01f0, 0x01f0, 0x01f7, 0x01ff, + 0x01ff, 0x020b, 0x021f, 0x022e, 0x0233, 0x0242, 0x0246, 0x024e, // Entry 40 - 7F - 0x0269, 0x026e, 0x026e, 0x0275, 0x027c, 0x027c, 0x0283, 0x0288, - 0x028b, 0x02a3, 0x02bd, 0x02c2, 0x02c8, 0x02ce, 0x02d9, 0x02e4, - 0x02e4, 0x02e4, 0x02ea, 0x02f0, 0x02f0, 0x02f8, 0x0302, 0x0315, - 0x0315, 0x0315, 0x0321, 0x032a, 0x032a, 0x0330, 0x0334, 0x0334, - 0x0340, 0x0340, 0x0346, 0x0346, 0x0346, 0x0346, 0x034c, 0x034c, - 0x0350, 0x0359, 0x035f, 0x0364, 0x036c, 0x036c, 0x036c, 0x037a, - 0x0382, 0x039a, 0x03af, 0x03c1, 0x03cb, 0x03e1, 0x03f8, 0x03fe, - 0x0408, 0x040f, 0x0419, 0x041f, 0x041f, 0x0429, 0x043d, 0x0444, + 0x0256, 0x0256, 0x025e, 0x0266, 0x0271, 0x0276, 0x0276, 0x027d, + 0x0284, 0x0284, 0x028b, 0x0290, 0x0293, 0x02ab, 0x02c5, 0x02ca, + 0x02d0, 0x02d6, 0x02e1, 0x02ec, 0x02ec, 0x02ec, 0x02f2, 0x02f8, + 0x02f8, 0x0300, 0x030a, 0x030a, 0x031d, 0x031d, 0x031d, 0x0329, + 0x0332, 0x0332, 0x0338, 0x033c, 0x033c, 0x0348, 0x0348, 0x034e, + 0x034e, 0x034e, 0x034e, 0x034e, 0x0354, 0x0354, 0x0358, 0x0361, + 0x0367, 0x036c, 0x036c, 0x0374, 0x0374, 0x0374, 0x0382, 0x038a, + 0x03a2, 0x03b7, 0x03c9, 0x03d3, 0x03e9, 0x0400, 0x0406, 0x0410, // Entry 80 - BF - 0x0444, 0x0444, 0x0444, 0x044e, 0x044e, 0x0457, 0x0466, 0x046e, - 0x0483, 0x0496, 0x04a7, 0x04b0, 0x04b0, 0x04b7, 0x04c7, 0x04cd, - 0x04cd, 0x04d7, 0x04e0, 0x04e7, 0x04ef, 0x04f4, 0x04fa, 0x04ff, - 0x0508, 0x0508, 0x0513, 0x0517, 0x0525, 0x0525, 0x0525, 0x053f, - 0x055b, 0x055d, 0x0565, 0x057b, 0x057b, 0x0583, 0x058d, 0x0593, - 0x05a5, -} // Size: 362 bytes - -var frCAScriptStr string = "devanagarigujarati" - -var frCAScriptIdx = []uint16{ // 44 elements + 0x0417, 0x0421, 0x0427, 0x0427, 0x0431, 0x0445, 0x044c, 0x044c, + 0x044c, 0x044c, 0x0456, 0x0456, 0x045f, 0x046e, 0x0476, 0x048b, + 0x049e, 0x04af, 0x04b8, 0x04b8, 0x04bf, 0x04cf, 0x04d5, 0x04d5, + 0x04df, 0x04e8, 0x04ef, 0x04f7, 0x04fc, 0x0502, 0x0507, 0x0510, + 0x0510, 0x051b, 0x051f, 0x052d, 0x052d, 0x052d, 0x0547, 0x0563, + 0x0565, 0x056d, 0x0583, 0x0587, 0x058f, 0x0599, 0x059f, 0x05b1, +} // Size: 376 bytes + +const frCAScriptStr string = "" + // Size: 118 bytes + "devanagarigujaratihanbcaractères chinois simplifiéscaractères chinois tr" + + "aditionnelssyllabaires japonaisjamoodiazsye" + +var frCAScriptIdx = []uint16{ // 172 elements + // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x0012, -} // Size: 112 bytes + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0016, + 0x0016, 0x0016, 0x0016, 0x0035, 0x0056, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x006a, 0x006a, 0x006a, 0x006a, 0x006e, 0x006e, + // Entry 40 - 7F + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, + 0x006e, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + // Entry 80 - BF + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0076, +} // Size: 368 bytes -var guScriptStr string = "" + // Size: 3319 bytes +const guScriptStr string = "" + // Size: 3357 bytes "અરબીઇમ્પિરિયલ આર્મનિકઅર્મેનિયનઅવેસ્તનબાલીનીઝબટાકબંગાળીબ્લિસિમ્બોલ્સબોપોમ" + "ોફોબ્રહ્મીબ્રેલબગિનીસબુહિદચકમાયુનાઇટેડ કેનેડિયન એબોરિજનલ સિલેબિક્સકરૈન" + "ચેરોકીસિર્થકોપ્ટિકસિપ્રાયટસિરિલિકઓલ્ડ ચર્ચ સ્લાવોનિક સિરિલિકદેવનાગરીડે" + "સરેટઇજિપ્શિયન ડેમોટિકઇજિપ્શિયન હાઇરેટિકઇજિપ્શિયન હાઇરોગ્લિફ્સઇથિયોપિકજ" + - "્યોર્જિઅન ખુતસુરીજ્યોર્જિઅનગ્લેગોલિટિકગોથિકગ્રીકગુજરાતીગુરૂમુખીહંગુલહા" + - "નહનુનૂસરળીકૃત હાનપરંપરાગત હાનહીબ્રુહિરાગાનાપહાઉ મોન્ગકતાકના અને હિરાગન" + - "ાઓલ્ડ હંગેરિયનસિન્ધુજૂનુ ઇટાલિકજાવાનીસજાપાનીકાયાહ લીકટાકાનાખારોશ્થીખ્મ" + - "ેરકન્નડાકોરિયનકૈથીલાનાલાઓફ્રેકતુર લેટિનગૈલિક લેટિનલેટિનલેપચાલિમ્બૂલીનિ" + - "યર અલીનિયર બીલિશિયનલિડિયનમાન્ડાયીનમાનીચાયીનમયાન હાઇરોગ્લિફ્સમેરોઇટિકમલ" + - "યાલમમોંગોલિયનમૂનમેઇતેઇ માયેકમ્યાંમારએન’ કોઓઘામઓલ ચિકીઓરખોનઉડિયાઓસ્માન્" + - "યાઓલ્ડ પરમિકફાગ્સ-પાઇન્સ્ક્રિપ્શનલ પહલવીસાલટર પહલવીબુક પહલવીફોનિશિયનપો" + - "લાર્ડ ફોનેટિકઇન્સ્ક્રિપ્શનલ પાર્થિયનરીજાંગરોંગોરોંગોરૂનિકસમરિટાનસરાતીસ" + - "ૌરાષ્ટ્રસંકેત લિપીશાવિયાનસિંહલીસુદાનીઝસિલોતી નાગરીસિરિયેકએસ્ત્રેન્જેલો" + - " સિરિયાકપશ્ચિમ સિરિયાકપૂર્વ સિરિયાકતગબન્વાતાઇ લીનવીન તાઇ લૂતમિલતાઇ વેઇતત" + - "ેલુગુતેન્ગવારતિફિનાઘટેગાલોગથાનાથાઇટિબેટીયુગાતિટિકવાઇવિસિબલ સ્પીચજુની ફ" + - "ારસીસુમેરો અક્કાદિયન સુનિફોર્મયીવંશાગતગણિતીય સંકેતલિપિપ્રતીકોઅલિખિતસામ" + - "ાન્યઅજ્ઞાત લિપિ" - -var guScriptIdx = []uint16{ // 169 elements + "્યોર્જિઅન ખુતસુરીજ્યોર્જિઅનગ્લેગોલિટિકગોથિકગ્રીકગુજરાતીગુરૂમુખીહાન્બહં" + + "ગુલહાનહનુનૂસરળીકૃત હાનપરંપરાગત હાનહીબ્રુહિરાગાનાપહાઉ મોન્ગજાપાનીઝ વર્ણ" + + "માળાઓલ્ડ હંગેરિયનસિન્ધુજૂનુ ઇટાલિકજેમોજાવાનીસજાપાનીકાયાહ લીકટાકાનાખારો" + + "શ્થીખ્મેરકન્નડાકોરિયનકૈથીલાનાલાઓફ્રેકતુર લેટિનગૈલિક લેટિનલેટિનલેપચાલિમ" + + "્બૂલીનિયર અલીનિયર બીલિશિયનલિડિયનમાન્ડાયીનમાનીચાયીનમયાન હાઇરોગ્લિફ્સમેર" + + "ોઇટિકમલયાલમમોંગોલિયનમૂનમેઇતેઇ માયેકમ્યાંમારએન’ કોઓઘામઓલ ચિકીઓરખોનઉડિયા" + + "ઓસ્માન્યાઓલ્ડ પરમિકફાગ્સ-પાઇન્સ્ક્રિપ્શનલ પહલવીસાલટર પહલવીબુક પહલવીફોન" + + "િશિયનપોલાર્ડ ફોનેટિકઇન્સ્ક્રિપ્શનલ પાર્થિયનરીજાંગરોંગોરોંગોરૂનિકસમરિટા" + + "નસરાતીસૌરાષ્ટ્રસંકેત લિપીશાવિયાનસિંહલીસુદાનીઝસિલોતી નાગરીસિરિયેકએસ્ત્ર" + + "ેન્જેલો સિરિયાકપશ્ચિમ સિરિયાકપૂર્વ સિરિયાકતગબન્વાતાઇ લીનવીન તાઇ લૂતમિલ" + + "તાઇ વેઇતતેલુગુતેન્ગવારતિફિનાઘટેગાલોગથાનાથાઇટિબેટીયુગાતિટિકવાઇવિસિબલ સ્" + + "પીચજુની ફારસીસુમેરો અક્કાદિયન સુનિફોર્મયીવંશાગતગણિતીય સંકેતલિપિઇમોજીપ્" + + "રતીકોઅલિખિતસામાન્યઅજ્ઞાત લિપિ" + +var guScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x003d, 0x0058, 0x006d, - 0x0082, 0x0082, 0x0082, 0x008e, 0x00a0, 0x00c7, 0x00df, 0x00f4, - 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, 0x01a2, 0x01b4, - 0x01c3, 0x01d8, 0x01f0, 0x0205, 0x0250, 0x0268, 0x027a, 0x027a, - 0x02ab, 0x02df, 0x031f, 0x031f, 0x0337, 0x036b, 0x0389, 0x03aa, - 0x03b9, 0x03b9, 0x03c8, 0x03dd, 0x03f5, 0x0404, 0x040d, 0x041c, - 0x043b, 0x045d, 0x045d, 0x046f, 0x0487, 0x0487, 0x04a3, 0x04d5, - 0x04fa, 0x050c, 0x052b, 0x0540, 0x0552, 0x0552, 0x0568, 0x057d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x003d, 0x0058, + 0x006d, 0x0082, 0x0082, 0x0082, 0x008e, 0x00a0, 0x00a0, 0x00c7, + 0x00df, 0x00f4, 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, + 0x01a2, 0x01b4, 0x01c3, 0x01d8, 0x01f0, 0x0205, 0x0250, 0x0268, + 0x027a, 0x027a, 0x02ab, 0x02df, 0x031f, 0x031f, 0x0337, 0x036b, + 0x0389, 0x03aa, 0x03b9, 0x03b9, 0x03c8, 0x03dd, 0x03f5, 0x0404, + 0x0413, 0x041c, 0x042b, 0x044a, 0x046c, 0x046c, 0x047e, 0x0496, + 0x0496, 0x04b2, 0x04e0, 0x0505, 0x0517, 0x0536, 0x0542, 0x0557, // Entry 40 - 7F - 0x0595, 0x05a4, 0x05a4, 0x05b6, 0x05c8, 0x05c8, 0x05d4, 0x05e0, - 0x05e9, 0x0611, 0x0630, 0x063f, 0x064e, 0x0660, 0x0676, 0x068f, - 0x068f, 0x068f, 0x06a1, 0x06b3, 0x06b3, 0x06ce, 0x06e9, 0x071a, - 0x071a, 0x071a, 0x0732, 0x0744, 0x0744, 0x075f, 0x0768, 0x0768, - 0x078a, 0x078a, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07b2, 0x07b2, - 0x07be, 0x07d1, 0x07e0, 0x07ef, 0x080a, 0x080a, 0x080a, 0x0826, - 0x083c, 0x0876, 0x0895, 0x08ae, 0x08c6, 0x08f1, 0x0934, 0x0946, - 0x0964, 0x0973, 0x0988, 0x0997, 0x0997, 0x09b2, 0x09ce, 0x09e3, + 0x0569, 0x0569, 0x057f, 0x0594, 0x05ac, 0x05bb, 0x05bb, 0x05cd, + 0x05df, 0x05df, 0x05eb, 0x05f7, 0x0600, 0x0628, 0x0647, 0x0656, + 0x0665, 0x0677, 0x068d, 0x06a6, 0x06a6, 0x06a6, 0x06b8, 0x06ca, + 0x06ca, 0x06e5, 0x0700, 0x0700, 0x0731, 0x0731, 0x0731, 0x0749, + 0x075b, 0x075b, 0x0776, 0x077f, 0x077f, 0x07a1, 0x07a1, 0x07b9, + 0x07b9, 0x07b9, 0x07b9, 0x07b9, 0x07c9, 0x07c9, 0x07d5, 0x07e8, + 0x07f7, 0x0806, 0x0806, 0x0821, 0x0821, 0x0821, 0x083d, 0x0853, + 0x088d, 0x08ac, 0x08c5, 0x08dd, 0x0908, 0x094b, 0x095d, 0x097b, // Entry 80 - BF - 0x09e3, 0x09e3, 0x09e3, 0x09f5, 0x09f5, 0x0a0a, 0x0a2c, 0x0a41, - 0x0a7e, 0x0aa6, 0x0acb, 0x0ae0, 0x0ae0, 0x0af0, 0x0b0d, 0x0b19, - 0x0b19, 0x0b2f, 0x0b41, 0x0b59, 0x0b6e, 0x0b83, 0x0b8f, 0x0b98, - 0x0baa, 0x0baa, 0x0bc5, 0x0bce, 0x0bf0, 0x0bf0, 0x0bf0, 0x0c0c, - 0x0c56, 0x0c5c, 0x0c6e, 0x0c9c, 0x0c9c, 0x0cb1, 0x0cc3, 0x0cd8, - 0x0cf7, -} // Size: 362 bytes - -var heScriptStr string = "" + // Size: 849 bytes + 0x098a, 0x099f, 0x09ae, 0x09ae, 0x09c9, 0x09e5, 0x09fa, 0x09fa, + 0x09fa, 0x09fa, 0x0a0c, 0x0a0c, 0x0a21, 0x0a43, 0x0a58, 0x0a95, + 0x0abd, 0x0ae2, 0x0af7, 0x0af7, 0x0b07, 0x0b24, 0x0b30, 0x0b30, + 0x0b46, 0x0b58, 0x0b70, 0x0b85, 0x0b9a, 0x0ba6, 0x0baf, 0x0bc1, + 0x0bc1, 0x0bdc, 0x0be5, 0x0c07, 0x0c07, 0x0c07, 0x0c23, 0x0c6d, + 0x0c73, 0x0c85, 0x0cb3, 0x0cc2, 0x0cd7, 0x0ce9, 0x0cfe, 0x0d1d, +} // Size: 376 bytes + +const heScriptStr string = "" + // Size: 875 bytes "ערביארמניבאלינזיבנגליבופומופובריילצ׳אםצ׳ירוקיקופטיקפריסאיקיריליקירילי סל" + "אבוני כנסייתי עתיקדוואנגריכתב חרטומיםאתיופיגאורגיגותייווניגוג׳רטיגורמוק" + - "יהאנגולהאןכתב האן פשוטכתב האן מסורתיעבריהירגאנההונגרי עתיקאינדוסאיטלקי " + - "עתיקג׳אוונזייפניקטקאנהקמריתקאנדהקוריאנילאיתלטיני גאלילטינימאיהמליאלאםמו" + - "נגולימיאנמראורייהפיניקירוניסינהלהסוריסורי מערביסורי מזרחיטמילטלוגוטגלוג" + - "כתב טאנהתאיטיבטיאוגריתיפרסי עתיקמורשסימון מתמטיסימניםלא כתוברגילכתב שאי" + - "נו ידוע" + "יהאנבהאנגולהאןהאן פשוטהאן מסורתיעבריהירגאנההברתי יפניהונגרי עתיקאינדוסא" + + "יטלקי עתיקג׳אמוג׳אוונזייפניקטקאנהחמריקאנאדהקוריאנילאיתלטיני גאלילטינימא" + + "יהמליאלאםמונגולימיאנמראורייהפיניקירוניסינהלהסוריסורי מערביסורי מזרחיטמי" + + "לטלוגוטגלוגתאנהתאיטיבטיאוגריתיפרסי עתיקמורשסימון מתמטיאמוג׳יסמליםלא כתו" + + "ברגילכתב שאינו ידוע" -var heScriptIdx = []uint16{ // 169 elements +var heScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012, - 0x0020, 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x003a, 0x003a, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x005a, - 0x005a, 0x0064, 0x0072, 0x007e, 0x00b1, 0x00c1, 0x00c1, 0x00c1, - 0x00c1, 0x00c1, 0x00d6, 0x00d6, 0x00e2, 0x00e2, 0x00ee, 0x00ee, - 0x00f6, 0x00f6, 0x0100, 0x010e, 0x011c, 0x0128, 0x012e, 0x012e, - 0x0144, 0x015e, 0x015e, 0x0166, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0189, 0x0195, 0x01aa, 0x01ba, 0x01c2, 0x01c2, 0x01c2, 0x01ce, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, + 0x0012, 0x0020, 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x002a, + 0x003a, 0x003a, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x004c, 0x005a, 0x005a, 0x0064, 0x0072, 0x007e, 0x00b1, 0x00c1, + 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00d6, 0x00d6, 0x00e2, 0x00e2, + 0x00ee, 0x00ee, 0x00f6, 0x00f6, 0x0100, 0x010e, 0x011c, 0x0124, + 0x0130, 0x0136, 0x0136, 0x0145, 0x0158, 0x0158, 0x0160, 0x016e, + 0x016e, 0x016e, 0x0181, 0x0196, 0x01a2, 0x01b7, 0x01c1, 0x01d1, // Entry 40 - 7F - 0x01ce, 0x01d8, 0x01d8, 0x01e2, 0x01f0, 0x01f0, 0x01f0, 0x01f0, - 0x01f8, 0x01f8, 0x020b, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x021d, - 0x021d, 0x021d, 0x021d, 0x022b, 0x022b, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245, - 0x0245, 0x0245, 0x0245, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, - 0x0251, 0x0251, 0x0251, 0x0251, 0x025d, 0x025d, 0x025d, 0x025d, - 0x025d, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, + 0x01d9, 0x01d9, 0x01d9, 0x01e5, 0x01e5, 0x01ed, 0x01ed, 0x01f9, + 0x0207, 0x0207, 0x0207, 0x0207, 0x020f, 0x020f, 0x0222, 0x022c, + 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, + 0x022c, 0x022c, 0x022c, 0x022c, 0x0234, 0x0234, 0x0234, 0x0234, + 0x0242, 0x0242, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x025c, + 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, + 0x025c, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, + 0x0268, 0x0268, 0x0268, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, // Entry 80 - BF - 0x0265, 0x0265, 0x0265, 0x0271, 0x0271, 0x0271, 0x0271, 0x0279, - 0x0279, 0x028c, 0x029f, 0x029f, 0x029f, 0x029f, 0x029f, 0x02a7, - 0x02a7, 0x02a7, 0x02b1, 0x02b1, 0x02b1, 0x02bb, 0x02ca, 0x02d0, - 0x02da, 0x02da, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02f9, - 0x02f9, 0x02f9, 0x0301, 0x0316, 0x0316, 0x0322, 0x032f, 0x0337, - 0x0351, -} // Size: 362 bytes - -var hiScriptStr string = "" + // Size: 3328 bytes + 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, + 0x027c, 0x027c, 0x0288, 0x0288, 0x0288, 0x0288, 0x0290, 0x0290, + 0x02a3, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02be, 0x02be, + 0x02be, 0x02c8, 0x02c8, 0x02c8, 0x02d2, 0x02da, 0x02e0, 0x02ea, + 0x02ea, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x0309, 0x0309, + 0x0309, 0x0311, 0x0326, 0x0332, 0x033c, 0x0349, 0x0351, 0x036b, +} // Size: 376 bytes + +const hiScriptStr string = "" + // Size: 3366 bytes "अरबीइम्पिरियल आर्मेनिकआर्मेनियाईअवेस्तनबालीबटकीबंगालीब्लिसिम्बॉल्सबोपोमो" + "फ़ोब्रह्मीब्रेलबगिनीसबुहिदचकमायुनिफाइड कैनेडियन एबोरिजनल सिलेबिक्सकरैन" + "चामचेरोकीकिर्थकॉप्टिककाइप्रायटसिरिलिकओल्ड चर्च स्लावोनिक सिरिलिकदेवनाग" + "रीडेसरेटइजिप्शियन डेमोटिकइजिप्शियन हाइरेटिकइजिप्शियन हाइरोग्लिफ्सइथियो" + "पियाईजॉर्जियन खुतसुरीजॉर्जियनग्लेगोलिटिकगोथिकग्रन्थयूनानीगुजरातीगुरमुख" + - "ीहंगुलहानहनुनूसरलीकृत हानपारंपरिक हानहिब्रूहिरागानापाहो ह्मोन्गकचाकना " + - "और हिरागनाऑल्ड हंगेरियनसिन्धुपुरानी इटलीजावानीसजापानीकायाह लीकाताकानाख" + - "ारोशथीखमेरकन्नड़कोरियाईकैथीलानालाओफ़्रैक्टुर लातिनीगेली लातिनीलैटिनलेप" + - "चालिम्बूलीनियर Aलीनियर बीलिशियनलिडियनमनडेनमनीशीनमयान हाइरोग्लिफ्समेरोइ" + - "टिकमलयालममंगोलियाईमूनमेइतेइ मायेकम्यांमारएन्‘कोओगमऑल चिकीओरखोनउड़ियाओस" + - "्मान्याओल्ड परमिकफाग्स-पाइंस्क्रिपश्नल पाहलवीसॉल्टर पाहलवीबुक पाहलवीफो" + - "निशियनपॉलार्ड फोनेटिकइंस्क्रिपश्नल पार्थियनरीजांगरोन्गोरोन्गोरूनिकसमरि" + - "टनसरातीसौराष्ट्रसांकेतिक लेखशावियानसिंहलीसूडानीसिलोती नागरीसिरियेकएस्त" + - "्रेन्जेलो सिरिएकपश्चिम सिरिएकपूर्व सिरिएकतगबन्वाताई लीनया ताई लुतमिलता" + - "ई विएततेलुगूतेन्गवारतिफिनाघटैगालोगथानाथाईतिब्बतीयुगारिटिकवाईविसिबल स्प" + - "ीचपुरानी फारसीसुमेरो अक्कादियन सुनिफॉर्मयीविरासतगणितीय संकेतनचिह्नअलिख" + - "ितसामान्यअज्ञात लिपि" - -var hiScriptIdx = []uint16{ // 169 elements + "ीहांबहंगुलहानहनुनूसरलीकृत हानपारंपरिक हानहिब्रूहिरागानापाहो ह्मोन्गजाप" + + "ानी सिलेबरीज़ऑल्ड हंगेरियनसिन्धुपुरानी इटलीजामोजावानीसजापानीकायाह लीका" + + "ताकानाखारोशथीखमेरकन्नड़कोरियाईकैथीलानालाओफ़्रैक्टुर लातिनीगेली लातिनील" + + "ैटिनलेपचालिम्बूलीनियर Aलीनियर बीलिशियनलिडियनमनडेनमनीशीनमयान हाइरोग्लिफ" + + "्समेरोइटिकमलयालममंगोलियाईमूनमेइतेइ मायेकम्यांमारएन्‘कोओगमऑल चिकीओरखोनउ" + + "ड़ियाओस्मान्याओल्ड परमिकफाग्स-पाइंस्क्रिपश्नल पाहलवीसॉल्टर पाहलवीबुक प" + + "ाहलवीफोनिशियनपॉलार्ड फोनेटिकइंस्क्रिपश्नल पार्थियनरीजांगरोन्गोरोन्गोरू" + + "निकसमरिटनसरातीसौराष्ट्रसांकेतिक लेखशावियानसिंहलीसूडानीसिलोती नागरीसिरि" + + "येकएस्त्रेन्जेलो सिरिएकपश्चिम सिरिएकपूर्व सिरिएकतगबन्वाताई लीनया ताई ल" + + "ुतमिलताई विएततेलुगूतेन्गवारतिफिनाघटैगालोगथानाथाईतिब्बतीयुगारिटिकवाईविस" + + "िबल स्पीचपुरानी फारसीसुमेरो अक्कादियन सुनिफॉर्मयीविरासतगणितीय संकेतनईम" + + "ोजीचिह्नअलिखितसामान्यअज्ञात लिपि" + +var hiScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005e, 0x0073, - 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x00c4, 0x00df, 0x00f4, - 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, 0x01ab, 0x01bd, - 0x01cc, 0x01e1, 0x01fc, 0x0211, 0x025c, 0x0274, 0x0286, 0x0286, - 0x02b7, 0x02eb, 0x032b, 0x032b, 0x0349, 0x0377, 0x038f, 0x03b0, - 0x03bf, 0x03d1, 0x03e3, 0x03f8, 0x040d, 0x041c, 0x0425, 0x0434, - 0x0453, 0x0475, 0x0475, 0x0487, 0x049f, 0x049f, 0x04c1, 0x04f0, - 0x0515, 0x0527, 0x0546, 0x055b, 0x056d, 0x056d, 0x0583, 0x059b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005e, + 0x0073, 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x009d, 0x00c4, + 0x00df, 0x00f4, 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, + 0x01ab, 0x01bd, 0x01cc, 0x01e1, 0x01fc, 0x0211, 0x025c, 0x0274, + 0x0286, 0x0286, 0x02b7, 0x02eb, 0x032b, 0x032b, 0x0349, 0x0377, + 0x038f, 0x03b0, 0x03bf, 0x03d1, 0x03e3, 0x03f8, 0x040d, 0x0419, + 0x0428, 0x0431, 0x0440, 0x045f, 0x0481, 0x0481, 0x0493, 0x04ab, + 0x04ab, 0x04cd, 0x04fb, 0x0520, 0x0532, 0x0551, 0x055d, 0x0572, // Entry 40 - 7F - 0x05b0, 0x05bc, 0x05bc, 0x05ce, 0x05e3, 0x05e3, 0x05ef, 0x05fb, - 0x0604, 0x0635, 0x0654, 0x0663, 0x0672, 0x0684, 0x0698, 0x06b1, - 0x06b1, 0x06b1, 0x06c3, 0x06d5, 0x06d5, 0x06e4, 0x06f6, 0x0727, - 0x0727, 0x0727, 0x073f, 0x0751, 0x0751, 0x076c, 0x0775, 0x0775, - 0x0797, 0x0797, 0x07af, 0x07af, 0x07af, 0x07af, 0x07c1, 0x07c1, - 0x07ca, 0x07dd, 0x07ec, 0x07fe, 0x0819, 0x0819, 0x0819, 0x0835, - 0x084b, 0x0885, 0x08aa, 0x08c6, 0x08de, 0x0909, 0x0949, 0x095b, - 0x097f, 0x098e, 0x09a0, 0x09af, 0x09af, 0x09ca, 0x09ec, 0x0a01, + 0x0584, 0x0584, 0x059a, 0x05b2, 0x05c7, 0x05d3, 0x05d3, 0x05e5, + 0x05fa, 0x05fa, 0x0606, 0x0612, 0x061b, 0x064c, 0x066b, 0x067a, + 0x0689, 0x069b, 0x06af, 0x06c8, 0x06c8, 0x06c8, 0x06da, 0x06ec, + 0x06ec, 0x06fb, 0x070d, 0x070d, 0x073e, 0x073e, 0x073e, 0x0756, + 0x0768, 0x0768, 0x0783, 0x078c, 0x078c, 0x07ae, 0x07ae, 0x07c6, + 0x07c6, 0x07c6, 0x07c6, 0x07c6, 0x07d8, 0x07d8, 0x07e1, 0x07f4, + 0x0803, 0x0815, 0x0815, 0x0830, 0x0830, 0x0830, 0x084c, 0x0862, + 0x089c, 0x08c1, 0x08dd, 0x08f5, 0x0920, 0x0960, 0x0972, 0x0996, // Entry 80 - BF - 0x0a01, 0x0a01, 0x0a01, 0x0a13, 0x0a13, 0x0a25, 0x0a47, 0x0a5c, - 0x0a96, 0x0abb, 0x0add, 0x0af2, 0x0af2, 0x0b02, 0x0b1c, 0x0b28, - 0x0b28, 0x0b3e, 0x0b50, 0x0b68, 0x0b7d, 0x0b92, 0x0b9e, 0x0ba7, - 0x0bbc, 0x0bbc, 0x0bd7, 0x0be0, 0x0c02, 0x0c02, 0x0c02, 0x0c24, - 0x0c6e, 0x0c74, 0x0c86, 0x0cab, 0x0cab, 0x0cba, 0x0ccc, 0x0ce1, - 0x0d00, -} // Size: 362 bytes - -var hrScriptStr string = "" + // Size: 2371 bytes + 0x09a5, 0x09b7, 0x09c6, 0x09c6, 0x09e1, 0x0a03, 0x0a18, 0x0a18, + 0x0a18, 0x0a18, 0x0a2a, 0x0a2a, 0x0a3c, 0x0a5e, 0x0a73, 0x0aad, + 0x0ad2, 0x0af4, 0x0b09, 0x0b09, 0x0b19, 0x0b33, 0x0b3f, 0x0b3f, + 0x0b55, 0x0b67, 0x0b7f, 0x0b94, 0x0ba9, 0x0bb5, 0x0bbe, 0x0bd3, + 0x0bd3, 0x0bee, 0x0bf7, 0x0c19, 0x0c19, 0x0c19, 0x0c3b, 0x0c85, + 0x0c8b, 0x0c9d, 0x0cc2, 0x0cd1, 0x0ce0, 0x0cf2, 0x0d07, 0x0d26, +} // Size: 376 bytes + +const hrScriptStr string = "" + // Size: 2397 bytes "afaka pismoarapsko pismoaramejsko pismoarmensko pismoavestansko pismobal" + "ijsko pismobamum pismobassa vah pismobatak pismobengalsko pismoblissymbo" + "lsbopomofo pismobrahmi pismobrajicabuginsko pismobuhid pismochakma pismo" + @@ -26268,1269 +29871,1279 @@ var hrScriptStr string = "" + // Size: 2371 bytes "a čirilicadevangari pismodeseret pismoegipatsko narodno pismoegipatsko h" + "ijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khutsuri pis" + "mogruzijsko pismoglagoljicagotičko pismograntha pismogrčko pismogudžarat" + - "sko pismogurmukhi pismohangul pismohan pismohanunoo pismopojednostavljen" + - "o hansko pismotradicionalno hansko pismohebrejsko pismohiragana pismoana" + - "tolijski hijeroglifipahawh hmong pismokatakana ili hiragana pismostaro m" + - "ađarsko pismoindijsko pismostaro talijansko pismojavansko pismojapansko " + - "pismojurchen pismokayah li pismokatakana pismokharoshthi pismokmersko pi" + - "smokhojki pismokannada pismokorejsko pismokpelle pismokaithi pismolanna " + - "pismolaosko pismofraktur latinicakeltska latinicalatinicalepcha pismolim" + - "bu pismolinear A pismolinear B pismofraser pismoloma pismolikijsko pismo" + - "lidijsko pismomandai pismomanihejsko pismomajanski hijeroglifimende pism" + - "omeroitski kurzivmeroitic pismomalajalamsko pismomongolsko pismomoon pis" + - "momro pismomeitei mayek pismomjanmarsko pismostaro sjevernoarapsko pismo" + - "nabatejsko pismonaxi geba pismon’ko pismonushu pismoogham pismool chiki " + - "pismoorkhon pismoorijsko pismoosmanya pismopalmyrene pismostaro permic p" + - "ismophags-pa pismopisani pahlavipsalter pahlavipahlavi pismofeničko pism" + - "opollard fonetsko pismopisani parthianrejang pismorongorongo pismorunsko" + - " pismosamaritansko pismosarati pismostaro južnoarapsko pismosaurashtra p" + - "ismoznakovno pismoshavian pismosharada pismokhudawadi pismosinhaleško pi" + - "smosora sompeng pismosundansko pismosyloti nagri pismosirijsko pismosiri" + - "jsko estrangelo pismopismo zapadne Sirijepismo istočne Sirijetagbanwa pi" + - "smotakri pismotai le pismonovo tai lue pismotamilsko pismotangut pismota" + - "i viet pismotelugu pismotengwar pismotifinartagalog pismothaana pismotaj" + - "landsko pismotibetansko pismotirhuta pismougaritsko pismovai pismoVisibl" + - "e Speechvarang kshiti pismowoleai pismostaro perzijsko pismosumersko-aka" + - "dsko cuneiform pismoYi pismonasljedno pismomatematičko znakovljesimbolij" + - "ezik bez pismenostizajedničko pismonepoznato pismo" - -var hrScriptIdx = []uint16{ // 169 elements + "sko pismogurmukhi pismohanb pismohangul pismohansko pismohanunoo pismopo" + + "jednostavljeno hansko pismotradicionalno hansko pismohebrejsko pismohira" + + "gana pismoanatolijski hijeroglifipahawh hmong pismojapansko slogovno pis" + + "mostaro mađarsko pismoindijsko pismostaro talijansko pismojamo pismojava" + + "nsko pismojapansko pismojurchen pismokayah li pismokatakana pismokharosh" + + "thi pismokmersko pismokhojki pismokannada pismokorejsko pismokpelle pism" + + "okaithi pismolanna pismolaosko pismofraktur latinicakeltska latinicalati" + + "nicalepcha pismolimbu pismolinear A pismolinear B pismofraser pismoloma " + + "pismolikijsko pismolidijsko pismomandai pismomanihejsko pismomajanski hi" + + "jeroglifimende pismomeroitski kurzivmeroitic pismomalajalamsko pismomong" + + "olsko pismomoon pismomro pismomeitei mayek pismomjanmarsko pismostaro sj" + + "evernoarapsko pismonabatejsko pismonaxi geba pismon’ko pismonushu pismoo" + + "gham pismool chiki pismoorkhon pismoorijsko pismoosmanya pismopalmyrene " + + "pismostaro permic pismophags-pa pismopisani pahlavipsalter pahlavipahlav" + + "i pismofeničko pismopollard fonetsko pismopisani parthianrejang pismoron" + + "gorongo pismorunsko pismosamaritansko pismosarati pismostaro južnoarapsk" + + "o pismosaurashtra pismoznakovno pismoshavian pismosharada pismokhudawadi" + + " pismosinhaleško pismosora sompeng pismosundansko pismosyloti nagri pism" + + "osirijsko pismosirijsko estrangelo pismopismo zapadne Sirijepismo istočn" + + "e Sirijetagbanwa pismotakri pismotai le pismonovo tai lue pismotamilsko " + + "pismotangut pismotai viet pismoteluško pismotengwar pismotifinartagalog " + + "pismothaana pismotajsko pismotibetansko pismotirhuta pismougaritsko pism" + + "ovai pismoVisible Speechvarang kshiti pismowoleai pismostaro perzijsko p" + + "ismosumersko-akadsko cuneiform pismoYi pismonasljedno pismomatematičko z" + + "nakovljeemotikonisimbolijezik bez pismenostizajedničko pismonepoznato pi" + + "smo" + +var hrScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000b, 0x000b, 0x000b, 0x0018, 0x0027, 0x0035, 0x0045, - 0x0053, 0x005e, 0x006d, 0x0078, 0x0087, 0x0092, 0x00a0, 0x00ac, - 0x00b3, 0x00c1, 0x00cc, 0x00d8, 0x0101, 0x010f, 0x011c, 0x0129, - 0x0134, 0x0141, 0x014e, 0x0157, 0x0177, 0x0186, 0x0193, 0x0193, - 0x01aa, 0x01c4, 0x01d9, 0x01d9, 0x01e7, 0x01ff, 0x020e, 0x0218, - 0x0226, 0x0233, 0x023f, 0x0251, 0x025f, 0x026b, 0x0274, 0x0281, - 0x029e, 0x02b8, 0x02b8, 0x02c7, 0x02d5, 0x02ec, 0x02fe, 0x0319, - 0x032e, 0x033c, 0x0352, 0x0360, 0x036e, 0x037b, 0x0389, 0x0397, + 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x0018, 0x0027, 0x0035, + 0x0045, 0x0053, 0x005e, 0x006d, 0x0078, 0x0087, 0x0087, 0x0092, + 0x00a0, 0x00ac, 0x00b3, 0x00c1, 0x00cc, 0x00d8, 0x0101, 0x010f, + 0x011c, 0x0129, 0x0134, 0x0141, 0x014e, 0x0157, 0x0177, 0x0186, + 0x0193, 0x0193, 0x01aa, 0x01c4, 0x01d9, 0x01d9, 0x01e7, 0x01ff, + 0x020e, 0x0218, 0x0226, 0x0233, 0x023f, 0x0251, 0x025f, 0x0269, + 0x0275, 0x0281, 0x028e, 0x02ab, 0x02c5, 0x02c5, 0x02d4, 0x02e2, + 0x02f9, 0x030b, 0x0322, 0x0337, 0x0345, 0x035b, 0x0365, 0x0373, // Entry 40 - 7F - 0x03a7, 0x03b4, 0x03c0, 0x03cd, 0x03db, 0x03e7, 0x03f3, 0x03fe, - 0x040a, 0x041a, 0x042a, 0x0432, 0x043e, 0x0449, 0x0457, 0x0465, - 0x0471, 0x047b, 0x0489, 0x0497, 0x0497, 0x04a3, 0x04b3, 0x04c7, - 0x04d2, 0x04e2, 0x04f0, 0x0502, 0x0502, 0x0511, 0x051b, 0x0524, - 0x0536, 0x0536, 0x0546, 0x0561, 0x0571, 0x0580, 0x058c, 0x0597, - 0x05a2, 0x05b0, 0x05bc, 0x05c9, 0x05d6, 0x05e5, 0x05e5, 0x05f7, - 0x0605, 0x0613, 0x0622, 0x062f, 0x063d, 0x0653, 0x0662, 0x066e, - 0x067e, 0x068a, 0x069c, 0x06a8, 0x06c1, 0x06d1, 0x06df, 0x06ec, + 0x0381, 0x038e, 0x039c, 0x03aa, 0x03ba, 0x03c7, 0x03d3, 0x03e0, + 0x03ee, 0x03fa, 0x0406, 0x0411, 0x041d, 0x042d, 0x043d, 0x0445, + 0x0451, 0x045c, 0x046a, 0x0478, 0x0484, 0x048e, 0x049c, 0x04aa, + 0x04aa, 0x04b6, 0x04c6, 0x04c6, 0x04da, 0x04e5, 0x04f5, 0x0503, + 0x0515, 0x0515, 0x0524, 0x052e, 0x0537, 0x0549, 0x0549, 0x0559, + 0x0574, 0x0584, 0x0584, 0x0593, 0x059f, 0x05aa, 0x05b5, 0x05c3, + 0x05cf, 0x05dc, 0x05dc, 0x05e9, 0x05f8, 0x05f8, 0x060a, 0x0618, + 0x0626, 0x0635, 0x0642, 0x0650, 0x0666, 0x0675, 0x0681, 0x0691, // Entry 80 - BF - 0x06f9, 0x06f9, 0x0708, 0x0719, 0x072b, 0x073a, 0x074c, 0x075a, - 0x0773, 0x0787, 0x079c, 0x07aa, 0x07b5, 0x07c1, 0x07d3, 0x07e1, - 0x07ed, 0x07fb, 0x0807, 0x0814, 0x081b, 0x0828, 0x0834, 0x0844, - 0x0854, 0x0861, 0x0870, 0x0879, 0x0887, 0x089a, 0x08a6, 0x08bb, - 0x08db, 0x08e3, 0x08f2, 0x0908, 0x0908, 0x090f, 0x0923, 0x0934, - 0x0943, -} // Size: 362 bytes - -var huScriptStr string = "" + // Size: 1273 bytes + 0x069d, 0x06af, 0x06bb, 0x06d4, 0x06e4, 0x06f2, 0x06ff, 0x070c, + 0x070c, 0x071b, 0x072c, 0x073e, 0x074d, 0x075f, 0x076d, 0x0786, + 0x079a, 0x07af, 0x07bd, 0x07c8, 0x07d4, 0x07e6, 0x07f4, 0x0800, + 0x080e, 0x081c, 0x0829, 0x0830, 0x083d, 0x0849, 0x0855, 0x0865, + 0x0872, 0x0881, 0x088a, 0x0898, 0x08ab, 0x08b7, 0x08cc, 0x08ec, + 0x08f4, 0x0903, 0x0919, 0x0922, 0x0929, 0x093d, 0x094e, 0x095d, +} // Size: 376 bytes + +const huScriptStr string = "" + // Size: 1286 bytes "ArabBirodalmi arámiÖrményAvesztánBalinézBatakBengáliBliss jelképrendszer" + "BopomofoBrámiVakírásBuginézBuhidCsakmaEgyesített kanadai őslakos jelekKa" + "riCsámCserokiKoptCiprusiCirillÓegyházi szláv cirillDevanagáriDeseretEgyi" + "ptomi demotikusEgyiptomi hieratikusEgyiptomi hieroglifákEtiópGrúz kucsur" + - "iGrúzGlagolitikusGótGörögGudzsarátiGurmukiHangulHanHanunooEgyszerűsített" + - " kínaiHagyományos kínaiHéberHiraganaPahawh hmongKatakana vagy hiraganaÓm" + - "agyarIndusRégi olaszJávaiJapánKajah liKatakanaKharoshthiKhmerKannadaKore" + - "aiKaithiLannaLaoFraktur latinGael latinLatinLepchaLimbuLineáris ALineári" + - "s BLíciaiLídiaiMandaiManicheusMaja hieroglifákMeroitikusMalajálamMongolM" + - "oonMeitei mayekBurmaiN’koOghamOl chikiOrhonOriyaOszmánÓpermikusPhags-paF" + - "elriatos pahlaviPsalter pahlaviKönyv pahlaviFőniciaiPollard fonetikusFel" + - "iratos parthianRedzsangRongorongoRunikusSzamaritánSzaratiSzaurastraJelír" + - "ásShaw ábécéSzingalézSzundanézSylheti nagáriSzíriaiEstrangelo szíriaiNy" + - "ugat-szíriaiKelet-szíriaiTagbanwaTai LeÚj tai lueTamilTai vietTeluguTeng" + - "warBerberTagalogThaanaThaiTibetiUgariVaiLátható beszédÓperzsaÉkírásos su" + - "méro-akkádJiSzármaztatottMatematikai jelrendszerSzimbólumÍratlan nyelvek" + - " kódjaMeghatározatlanIsmeretlen írásrendszer" - -var huScriptIdx = []uint16{ // 169 elements + "iGrúzGlagolitikusGótGörögGudzsarátiGurmukiHanbHangulHanHanunooEgyszerűsí" + + "tett kínaiHagyományos kínaiHéberHiraganaPahawh hmongKatakana vagy hiraga" + + "naÓmagyarIndusRégi olaszJamoJávaiJapánKajah liKatakanaKharoshthiKhmerKan" + + "nadaKoreaiKaithiLannaLaoFraktur latinGael latinLatinLepchaLimbuLineáris " + + "ALineáris BLíciaiLídiaiMandaiManicheusMaja hieroglifákMeroitikusMalajála" + + "mMongolMoonMeitei mayekBurmaiN’koOghamOl chikiOrhonOriyaOszmánÓpermikusP" + + "hags-paFelriatos pahlaviPsalter pahlaviKönyv pahlaviFőniciaiPollard fone" + + "tikusFeliratos parthianRedzsangRongorongoRunikusSzamaritánSzaratiSzauras" + + "traJelírásShaw ábécéSzingalézSzundanézSylheti nagáriSzíriaiEstrangelo sz" + + "íriaiNyugat-szíriaiKelet-szíriaiTagbanwaTai LeÚj tai lueTamilTai vietTe" + + "luguTengwarBerberTagalogThaanaThaiTibetiUgariVaiLátható beszédÓperzsaÉkí" + + "rásos suméro-akkádJiSzármaztatottMatematikai jelrendszerEmojiSzimbólumÍr" + + "atlan nyelvek kódjaMeghatározatlanIsmeretlen írásrendszer" + +var huScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x001c, 0x0025, - 0x002d, 0x002d, 0x002d, 0x0032, 0x003a, 0x004f, 0x0057, 0x005d, - 0x0066, 0x006e, 0x0073, 0x0079, 0x009b, 0x009f, 0x00a4, 0x00ab, - 0x00ab, 0x00af, 0x00b6, 0x00bc, 0x00d4, 0x00df, 0x00e6, 0x00e6, - 0x00f9, 0x010d, 0x0123, 0x0123, 0x0129, 0x0136, 0x013b, 0x0147, - 0x014b, 0x014b, 0x0152, 0x015d, 0x0164, 0x016a, 0x016d, 0x0174, - 0x018b, 0x019e, 0x019e, 0x01a4, 0x01ac, 0x01ac, 0x01b8, 0x01ce, - 0x01d6, 0x01db, 0x01e6, 0x01ec, 0x01f2, 0x01f2, 0x01fa, 0x0202, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x001c, + 0x0025, 0x002d, 0x002d, 0x002d, 0x0032, 0x003a, 0x003a, 0x004f, + 0x0057, 0x005d, 0x0066, 0x006e, 0x0073, 0x0079, 0x009b, 0x009f, + 0x00a4, 0x00ab, 0x00ab, 0x00af, 0x00b6, 0x00bc, 0x00d4, 0x00df, + 0x00e6, 0x00e6, 0x00f9, 0x010d, 0x0123, 0x0123, 0x0129, 0x0136, + 0x013b, 0x0147, 0x014b, 0x014b, 0x0152, 0x015d, 0x0164, 0x0168, + 0x016e, 0x0171, 0x0178, 0x018f, 0x01a2, 0x01a2, 0x01a8, 0x01b0, + 0x01b0, 0x01bc, 0x01d2, 0x01da, 0x01df, 0x01ea, 0x01ee, 0x01f4, // Entry 40 - 7F - 0x020c, 0x0211, 0x0211, 0x0218, 0x021e, 0x021e, 0x0224, 0x0229, - 0x022c, 0x0239, 0x0243, 0x0248, 0x024e, 0x0253, 0x025e, 0x0269, - 0x0269, 0x0269, 0x0270, 0x0277, 0x0277, 0x027d, 0x0286, 0x0297, - 0x0297, 0x0297, 0x02a1, 0x02ab, 0x02ab, 0x02b1, 0x02b5, 0x02b5, - 0x02c1, 0x02c1, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02cd, 0x02cd, - 0x02d2, 0x02da, 0x02df, 0x02e4, 0x02eb, 0x02eb, 0x02eb, 0x02f5, - 0x02fd, 0x030e, 0x031d, 0x032b, 0x0334, 0x0345, 0x0357, 0x035f, - 0x0369, 0x0370, 0x037b, 0x0382, 0x0382, 0x038c, 0x0395, 0x03a2, + 0x01fa, 0x01fa, 0x0202, 0x020a, 0x0214, 0x0219, 0x0219, 0x0220, + 0x0226, 0x0226, 0x022c, 0x0231, 0x0234, 0x0241, 0x024b, 0x0250, + 0x0256, 0x025b, 0x0266, 0x0271, 0x0271, 0x0271, 0x0278, 0x027f, + 0x027f, 0x0285, 0x028e, 0x028e, 0x029f, 0x029f, 0x029f, 0x02a9, + 0x02b3, 0x02b3, 0x02b9, 0x02bd, 0x02bd, 0x02c9, 0x02c9, 0x02cf, + 0x02cf, 0x02cf, 0x02cf, 0x02cf, 0x02d5, 0x02d5, 0x02da, 0x02e2, + 0x02e7, 0x02ec, 0x02ec, 0x02f3, 0x02f3, 0x02f3, 0x02fd, 0x0305, + 0x0316, 0x0325, 0x0333, 0x033c, 0x034d, 0x035f, 0x0367, 0x0371, // Entry 80 - BF - 0x03a2, 0x03a2, 0x03a2, 0x03ac, 0x03ac, 0x03b6, 0x03c5, 0x03cd, - 0x03e0, 0x03ef, 0x03fd, 0x0405, 0x0405, 0x040b, 0x0416, 0x041b, - 0x041b, 0x0423, 0x0429, 0x0430, 0x0436, 0x043d, 0x0443, 0x0447, - 0x044d, 0x044d, 0x0452, 0x0455, 0x0466, 0x0466, 0x0466, 0x046e, - 0x0488, 0x048a, 0x0498, 0x04af, 0x04af, 0x04b9, 0x04d0, 0x04e0, - 0x04f9, -} // Size: 362 bytes - -var hyScriptStr string = "" + // Size: 679 bytes - "արաբականհայկականբենգալականբոպոմոֆոբրայլիկյուրեղագիրդեվանագարիեթովպականվր" + - "ացականհունականգուջարաթիգուրմուխիհանգուլչինականպարզեցված չինականավանդակա" + - "ն չինականեբրայականհիրագանաճապոնականկատականաքմերականկաննադակորեականլաոսա" + - "կանլատինականմալայալամմոնղոլականմյանմարականօրիյասինհալականթամիլականթելու" + - "գութաանաթայականտիբեթականնշաններչգրվածընդհանուրանհայտ գիր" - -var hyScriptIdx = []uint16{ // 169 elements + 0x0378, 0x0383, 0x038a, 0x038a, 0x0394, 0x039d, 0x03aa, 0x03aa, + 0x03aa, 0x03aa, 0x03b4, 0x03b4, 0x03be, 0x03cd, 0x03d5, 0x03e8, + 0x03f7, 0x0405, 0x040d, 0x040d, 0x0413, 0x041e, 0x0423, 0x0423, + 0x042b, 0x0431, 0x0438, 0x043e, 0x0445, 0x044b, 0x044f, 0x0455, + 0x0455, 0x045a, 0x045d, 0x046e, 0x046e, 0x046e, 0x0476, 0x0490, + 0x0492, 0x04a0, 0x04b7, 0x04bc, 0x04c6, 0x04dd, 0x04ed, 0x0506, +} // Size: 376 bytes + +const hyScriptStr string = "" + // Size: 781 bytes + "արաբականհայկականբենգալականբոպոմոֆոբրայլիկյուրեղագիրդեւանագարիեթովպականվր" + + "ացականհունականգուջարաթիգուրմուխիհանբհանգուլչինականպարզեցված չինականավան" + + "դական չինականեբրայականհիրագանաճապոնական վանկագիրջամոճապոնականկատականաքմ" + + "երականկաննադակորեականլաոսականլատինականմալայալամմոնղոլականմյանմարականօրի" + + "յասինհալականթամիլականթելուգութաանաթայականտիբեթականմաթեմատիկական նշաններ" + + "էմոձինշաններչգրվածընդհանուրանհայտ գիր" + +var hyScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0044, 0x0044, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0066, 0x0066, 0x007a, 0x007a, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x008c, 0x008c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x00ac, 0x00be, 0x00d0, 0x00de, 0x00ec, 0x00ec, - 0x010d, 0x012e, 0x012e, 0x0140, 0x0150, 0x0150, 0x0150, 0x0150, - 0x0150, 0x0150, 0x0150, 0x0150, 0x0162, 0x0162, 0x0162, 0x0172, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0034, + 0x0044, 0x0044, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, + 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0066, 0x0066, 0x007a, + 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x008c, 0x008c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x00ac, 0x00be, 0x00d0, 0x00d8, + 0x00e6, 0x00f4, 0x00f4, 0x0115, 0x0136, 0x0136, 0x0148, 0x0158, + 0x0158, 0x0158, 0x017b, 0x017b, 0x017b, 0x017b, 0x0183, 0x0183, // Entry 40 - 7F - 0x0172, 0x0182, 0x0182, 0x0190, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01b0, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8, - 0x01e8, 0x01e8, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, - 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, - 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, + 0x0195, 0x0195, 0x0195, 0x01a5, 0x01a5, 0x01b5, 0x01b5, 0x01c3, + 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01e3, 0x01e3, 0x01e3, 0x01f5, + 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, + 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x01f5, + 0x0207, 0x0207, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x0231, + 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, + 0x0231, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, + 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, // Entry 80 - BF - 0x0208, 0x0208, 0x0208, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, - 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x022e, - 0x022e, 0x022e, 0x023e, 0x023e, 0x023e, 0x023e, 0x0248, 0x0256, - 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, - 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0276, 0x0282, 0x0294, - 0x02a7, -} // Size: 362 bytes - -var idScriptStr string = "" + // Size: 1396 bytes + 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, + 0x023b, 0x023b, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, + 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x0261, 0x0261, + 0x0261, 0x0271, 0x0271, 0x0271, 0x0271, 0x027b, 0x0289, 0x029b, + 0x029b, 0x029b, 0x029b, 0x029b, 0x029b, 0x029b, 0x029b, 0x029b, + 0x029b, 0x029b, 0x02c4, 0x02ce, 0x02dc, 0x02e8, 0x02fa, 0x030d, +} // Size: 376 bytes + +const idScriptStr string = "" + // Size: 1408 bytes "AfakaAlbania KaukasiaArabAram ImperialArmeniaAvestaBaliBamumBassa VahBat" + "akBengaliBlissymbolBopomofoBrahmiBrailleBugisBuhidChakmaSimbol Aborigin " + "Kanada KesatuanKariaChamCherokeeCirthKoptikSiprusSirilikGereja Slavonia " + "Sirilik LamaDevanagariDeseretStenografi DuployanDemotik MesirHieratik Me" + "sirHieroglip MesirEtiopiaGeorgian KhutsuriGeorgiaGlagoliticGothicGrantha" + - "YunaniGujaratiGurmukhiHangulHanHanunooHan SederhanaHan TradisionalIbrani" + - "HiraganaHieroglif AnatoliaPahawh HmongKatakana atau HiraganaHungaria Kun" + - "oIndusItalia LamaJawaJepangJurchenKayah LiKatakanaKharoshthiKhmerKhojkiK" + - "annadaKoreaKpelleKaithiLannaLaosLatin FrakturLatin GaelikLatinLepchaLimb" + - "uLinear ALinear BLisuLomaLyciaLydiaMandaeManikheiHieroglip MayaMendeKurs" + - "if MeroitikMeroitikMalayalamModiMongoliaMoonMroMeitei MayekMyanmarArab U" + - "tara KunoNabataeaNaxi GebaN’KoNushuOghamChiki LamaOrkhonOriyaOsmanyaPalm" + - "iraPermik KunoPhags-paPahleviMazmur PahleviKitab PahleviPhoenixFonetik P" + - "ollardPrasasti ParthiaRejangRongorongoRunikSamariaSaratiArab Selatan Kun" + - "oSaurashtraTulisan IsyaratShaviaSharadaSiddhamKhudawadiSinhalaSora Sompe" + - "ngSundaSyloti NagriSuriahSuriah EstrangeloSuriah BaratSuriah TimurTagban" + - "waTakriTai LeTai Lue BaruTamilTangutTai VietTeluguTenghwarTifinaghTagalo" + - "gThaanaThaiTibetTirhutaUgaritikVaiUcapan TerlihatVarang KshitiWoleaiPers" + - "ia KunoCuneiform Sumero-AkkadiaYiWarisanNotasi MatematikaSimbolTidak Ter" + - "tulisUmumSkrip Tak Dikenal" - -var idScriptIdx = []uint16{ // 169 elements + "YunaniGujaratGurmukhiHanbHangulHanHanunooHan SederhanaHan TradisionalIbr" + + "aniHiraganaHieroglif AnatoliaPahawh HmongKatakana atau HiraganaHungaria " + + "KunoIndusItalia LamaJamoJawaJepangJurchenKayah LiKatakanaKharoshthiKhmer" + + "KhojkiKannadaKoreaKpelleKaithiLannaLaosLatin FrakturLatin GaelikLatinLep" + + "chaLimbuLinear ALinear BLisuLomaLyciaLydiaMandaeManikheiHieroglip MayaMe" + + "ndeKursif MeroitikMeroitikMalayalamModiMongoliaMoonMroMeitei MayekMyanma" + + "rArab Utara KunoNabataeaNaxi GebaN’KoNushuOghamChiki LamaOrkhonOriyaOsma" + + "nyaPalmiraPermik KunoPhags-paPahleviMazmur PahleviKitab PahleviPhoenixFo" + + "netik PollardPrasasti ParthiaRejangRongorongoRunikSamariaSaratiArab Sela" + + "tan KunoSaurashtraTulisan IsyaratShaviaSharadaSiddhamKhudawadiSinhalaSor" + + "a SompengSundaSyloti NagriSuriahSuriah EstrangeloSuriah BaratSuriah Timu" + + "rTagbanwaTakriTai LeTai Lue BaruTamilTangutTai VietTeluguTenghwarTifinag" + + "hTagalogThaanaThaiTibetTirhutaUgaritikVaiUcapan TerlihatVarang KshitiWol" + + "eaiPersia KunoCuneiform Sumero-AkkadiaYiWarisanNotasi MatematikaEmojiSim" + + "bolTidak TertulisUmumSkrip Tak Dikenal" + +var idScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0015, 0x0015, 0x0019, 0x0026, 0x002d, 0x0033, - 0x0037, 0x003c, 0x0045, 0x004a, 0x0051, 0x005b, 0x0063, 0x0069, - 0x0070, 0x0075, 0x007a, 0x0080, 0x009f, 0x00a4, 0x00a8, 0x00b0, - 0x00b5, 0x00bb, 0x00c1, 0x00c8, 0x00e4, 0x00ee, 0x00f5, 0x0108, - 0x0115, 0x0123, 0x0132, 0x0132, 0x0139, 0x014a, 0x0151, 0x015b, - 0x0161, 0x0168, 0x016e, 0x0176, 0x017e, 0x0184, 0x0187, 0x018e, - 0x019b, 0x01aa, 0x01aa, 0x01b0, 0x01b8, 0x01ca, 0x01d6, 0x01ec, - 0x01f9, 0x01fe, 0x0209, 0x020d, 0x0213, 0x021a, 0x0222, 0x022a, + 0x0000, 0x0000, 0x0005, 0x0015, 0x0015, 0x0019, 0x0026, 0x002d, + 0x0033, 0x0037, 0x003c, 0x0045, 0x004a, 0x0051, 0x0051, 0x005b, + 0x0063, 0x0069, 0x0070, 0x0075, 0x007a, 0x0080, 0x009f, 0x00a4, + 0x00a8, 0x00b0, 0x00b5, 0x00bb, 0x00c1, 0x00c8, 0x00e4, 0x00ee, + 0x00f5, 0x0108, 0x0115, 0x0123, 0x0132, 0x0132, 0x0139, 0x014a, + 0x0151, 0x015b, 0x0161, 0x0168, 0x016e, 0x0175, 0x017d, 0x0181, + 0x0187, 0x018a, 0x0191, 0x019e, 0x01ad, 0x01ad, 0x01b3, 0x01bb, + 0x01cd, 0x01d9, 0x01ef, 0x01fc, 0x0201, 0x020c, 0x0210, 0x0214, // Entry 40 - 7F - 0x0234, 0x0239, 0x023f, 0x0246, 0x024b, 0x0251, 0x0257, 0x025c, - 0x0260, 0x026d, 0x0279, 0x027e, 0x0284, 0x0289, 0x0291, 0x0299, - 0x029d, 0x02a1, 0x02a6, 0x02ab, 0x02ab, 0x02b1, 0x02b9, 0x02c7, - 0x02cc, 0x02db, 0x02e3, 0x02ec, 0x02f0, 0x02f8, 0x02fc, 0x02ff, - 0x030b, 0x030b, 0x0312, 0x0321, 0x0329, 0x0332, 0x0338, 0x033d, - 0x0342, 0x034c, 0x0352, 0x0357, 0x035e, 0x0365, 0x0365, 0x0370, - 0x0378, 0x037f, 0x038d, 0x039a, 0x03a1, 0x03b0, 0x03c0, 0x03c6, - 0x03d0, 0x03d5, 0x03dc, 0x03e2, 0x03f3, 0x03fd, 0x040c, 0x0412, + 0x021a, 0x0221, 0x0229, 0x0231, 0x023b, 0x0240, 0x0246, 0x024d, + 0x0252, 0x0258, 0x025e, 0x0263, 0x0267, 0x0274, 0x0280, 0x0285, + 0x028b, 0x0290, 0x0298, 0x02a0, 0x02a4, 0x02a8, 0x02ad, 0x02b2, + 0x02b2, 0x02b8, 0x02c0, 0x02c0, 0x02ce, 0x02d3, 0x02e2, 0x02ea, + 0x02f3, 0x02f7, 0x02ff, 0x0303, 0x0306, 0x0312, 0x0312, 0x0319, + 0x0328, 0x0330, 0x0330, 0x0339, 0x033f, 0x0344, 0x0349, 0x0353, + 0x0359, 0x035e, 0x035e, 0x0365, 0x036c, 0x036c, 0x0377, 0x037f, + 0x0386, 0x0394, 0x03a1, 0x03a8, 0x03b7, 0x03c7, 0x03cd, 0x03d7, // Entry 80 - BF - 0x0419, 0x0420, 0x0429, 0x0430, 0x043c, 0x0441, 0x044d, 0x0453, - 0x0464, 0x0470, 0x047c, 0x0484, 0x0489, 0x048f, 0x049b, 0x04a0, - 0x04a6, 0x04ae, 0x04b4, 0x04bc, 0x04c4, 0x04cb, 0x04d1, 0x04d5, - 0x04da, 0x04e1, 0x04e9, 0x04ec, 0x04fb, 0x0508, 0x050e, 0x0519, - 0x0531, 0x0533, 0x053a, 0x054b, 0x054b, 0x0551, 0x055f, 0x0563, - 0x0574, -} // Size: 362 bytes - -var isScriptStr string = "" + // Size: 363 bytes + 0x03dc, 0x03e3, 0x03e9, 0x03fa, 0x0404, 0x0413, 0x0419, 0x0420, + 0x0427, 0x0430, 0x0437, 0x0443, 0x0448, 0x0454, 0x045a, 0x046b, + 0x0477, 0x0483, 0x048b, 0x0490, 0x0496, 0x04a2, 0x04a7, 0x04ad, + 0x04b5, 0x04bb, 0x04c3, 0x04cb, 0x04d2, 0x04d8, 0x04dc, 0x04e1, + 0x04e8, 0x04f0, 0x04f3, 0x0502, 0x050f, 0x0515, 0x0520, 0x0538, + 0x053a, 0x0541, 0x0552, 0x0557, 0x055d, 0x056b, 0x056f, 0x0580, +} // Size: 376 bytes + +const isScriptStr string = "" + // Size: 401 bytes "arabísktarmensktbengalsktbopomofoblindraleturkyrillísktdevanagarieþíópís" + - "ktgeorgísktgrísktgújaratígurmukhihangulkínverskteinfaldað hanhefðbundið " + - "hanhebreskthiraganakatakana eða hiraganajapansktkatakanakmerkannadakóres" + - "ktlaolatnesktmalalajammongólsktmjanmarsktoriyasinhalatamílskttelúgúthaan" + - "ataílenskttíbeskttáknóskrifaðalmenntóþekkt letur" + "ktgeorgísktgrísktgújaratígurmukhihanbhangulkínverskteinfaldað hanhefðbun" + + "dið hanhebreskthiraganakatakana eða hiraganajamojapansktkatakanakmerkann" + + "adakóresktlaolatnesktmalalajammongólsktmjanmarsktoriyasinhalatamílskttel" + + "úgúthaanataílenskttíbesktstærðfræðitáknemoji-tákntáknóskrifaðalmenntóþe" + + "kkt letur" -var isScriptIdx = []uint16{ // 169 elements +var isScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x0022, 0x0022, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0050, 0x0050, 0x005a, 0x005a, - 0x005a, 0x005a, 0x0061, 0x006b, 0x0073, 0x0079, 0x0083, 0x0083, - 0x0091, 0x00a1, 0x00a1, 0x00a9, 0x00b1, 0x00b1, 0x00b1, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cf, 0x00cf, 0x00cf, 0x00d7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, + 0x0022, 0x0022, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0043, + 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0050, 0x0050, + 0x005a, 0x005a, 0x005a, 0x005a, 0x0061, 0x006b, 0x0073, 0x0077, + 0x007d, 0x0087, 0x0087, 0x0095, 0x00a5, 0x00a5, 0x00ad, 0x00b5, + 0x00b5, 0x00b5, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cf, 0x00cf, // Entry 40 - 7F - 0x00d7, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ed, 0x00ed, 0x00ed, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, - 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, - 0x00f5, 0x00f5, 0x00f5, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, - 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, - 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, + 0x00d7, 0x00d7, 0x00d7, 0x00df, 0x00df, 0x00e3, 0x00e3, 0x00ea, + 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f5, 0x00f5, 0x00f5, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, + 0x0106, 0x0106, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x011a, + 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, + 0x011a, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, // Entry 80 - BF - 0x0117, 0x0117, 0x0117, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0127, - 0x0127, 0x0127, 0x012f, 0x012f, 0x012f, 0x012f, 0x0135, 0x013f, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x014c, 0x0156, 0x015d, - 0x016b, -} // Size: 362 bytes - -var itScriptStr string = "" + // Size: 1562 bytes + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, + 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x012f, 0x012f, + 0x012f, 0x0137, 0x0137, 0x0137, 0x0137, 0x013d, 0x0147, 0x014f, + 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, + 0x014f, 0x014f, 0x0162, 0x016d, 0x0172, 0x017c, 0x0183, 0x0191, +} // Size: 376 bytes + +const itScriptStr string = "" + // Size: 1575 bytes "afakaaraboaramaico imperialearmenoavesticobalinesebamumBassa Vahbatakben" + "galesesimboli blissbopomofobrahmibraillebuginesebuhidchakmasimboli abori" + "geni canadesi unificaticarianchamcherokeecirthcoptocipriotacirillicociri" + "llico antica chiesa slavonicadevanagarideseretstenografia duployanegizia" + "no demoticoieratico egizianogeroglifici egizianietiopekutsurigeorgianogl" + - "agoliticogoticogranthagrecogujaratigurmukhihangulhanhanunoohan semplific" + - "atohan tradizionaleebraicohiraganageroglifici anatolicipahawn hmongkatan" + - "aka o hiraganaantico unghereseinduitalico anticojavanesegiapponesejurche" + - "nkayah likatakanakharoshthikhmerkhojkikannadacoreanoKpellekaithilannalao" + - "variante fraktur del latinovariante gaelica del latinolatinolepchalimbul" + - "ineare Alineare Blisulomalycilydimandaicomanicheogeroglifici mayamendeco" + - "rsivo meroiticomeroiticomalayalammongolomoonmromeetei mayekbirmanoarabo " + - "settentrionale anticonabateogeba naxin’konushuoghamol chikiorkhonoriyaos" + - "manyapalmirenopermico anticophags-papahlavi delle iscrizionipahlavi psal" + - "terpahlavi bookfeniciofonetica di pollardpartico delle iscrizionirejangr" + - "ongorongorunicosamaritanosaratiarabo meridionale anticosaurashtralinguag" + - "gio dei segnishavianosharadakhudawadisingalesesora sompengsundanesesylot" + - "i nagrisirianosiriaco estrangelosiriaco occidentalesiriaco orientaletagb" + - "anwatakritai letai luetamiltanguttai viettelugutengwartifinaghtagalogtha" + - "anathailandesetibetanotirhutaugaritavaiialfabeto visivovarang kshitiwole" + - "aipersiano anticosumero-accadiano cuneiformeyiereditatonotazione matemat" + - "icasimbolinon scrittocomunescrittura sconosciuta" - -var itScriptIdx = []uint16{ // 169 elements + "agoliticogoticogranthagrecogujaratigurmukhihanbhangulhanhanunoohan sempl" + + "ificatohan tradizionaleebraicohiraganageroglifici anatolicipahawn hmongk" + + "atanaka o hiraganaantico unghereseinduitalico anticojamojavanesegiappone" + + "sejurchenkayah likatakanakharoshthikhmerkhojkikannadacoreanoKpellekaithi" + + "lannalaovariante fraktur del latinovariante gaelica del latinolatinolepc" + + "halimbulineare Alineare Blisulomalycilydimandaicomanicheogeroglifici may" + + "amendecorsivo meroiticomeroiticomalayalammongolomoonmromeetei mayekbirma" + + "noarabo settentrionale anticonabateogeba naxin’konushuoghamol chikiorkho" + + "noriyaosmanyapalmirenopermico anticophags-papahlavi delle iscrizionipahl" + + "avi psalterpahlavi bookfeniciofonetica di pollardpartico delle iscrizion" + + "irejangrongorongorunicosamaritanosaratiarabo meridionale anticosaurashtr" + + "alinguaggio dei segnishavianosharadakhudawadisingalesesora sompengsundan" + + "esesyloti nagrisirianosiriaco estrangelosiriaco occidentalesiriaco orien" + + "taletagbanwatakritai letai luetamiltanguttai viettelugutengwartifinaghta" + + "galogthaanathailandesetibetanotirhutaugaritavaiialfabeto visivovarang ks" + + "hitiwoleaipersiano anticosumero-accadiano cuneiformeyiereditatonotazione" + + " matematicaemojisimbolinon scrittocomunescrittura sconosciuta" + +var itScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x001c, 0x0022, 0x002a, - 0x0032, 0x0037, 0x0040, 0x0045, 0x004e, 0x005b, 0x0063, 0x0069, - 0x0070, 0x0078, 0x007d, 0x0083, 0x00a7, 0x00ad, 0x00b1, 0x00b9, - 0x00be, 0x00c3, 0x00cb, 0x00d4, 0x00f5, 0x00ff, 0x0106, 0x011a, - 0x012b, 0x013c, 0x0150, 0x0150, 0x0156, 0x015d, 0x0166, 0x0171, - 0x0177, 0x017e, 0x0183, 0x018b, 0x0193, 0x0199, 0x019c, 0x01a3, - 0x01b3, 0x01c3, 0x01c3, 0x01ca, 0x01d2, 0x01e7, 0x01f3, 0x0206, - 0x0216, 0x021a, 0x0228, 0x0230, 0x023a, 0x0241, 0x0249, 0x0251, + 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x001c, 0x0022, + 0x002a, 0x0032, 0x0037, 0x0040, 0x0045, 0x004e, 0x004e, 0x005b, + 0x0063, 0x0069, 0x0070, 0x0078, 0x007d, 0x0083, 0x00a7, 0x00ad, + 0x00b1, 0x00b9, 0x00be, 0x00c3, 0x00cb, 0x00d4, 0x00f5, 0x00ff, + 0x0106, 0x011a, 0x012b, 0x013c, 0x0150, 0x0150, 0x0156, 0x015d, + 0x0166, 0x0171, 0x0177, 0x017e, 0x0183, 0x018b, 0x0193, 0x0197, + 0x019d, 0x01a0, 0x01a7, 0x01b7, 0x01c7, 0x01c7, 0x01ce, 0x01d6, + 0x01eb, 0x01f7, 0x020a, 0x021a, 0x021e, 0x022c, 0x0230, 0x0238, // Entry 40 - 7F - 0x025b, 0x0260, 0x0266, 0x026d, 0x0274, 0x027a, 0x0280, 0x0285, - 0x0288, 0x02a3, 0x02be, 0x02c4, 0x02ca, 0x02cf, 0x02d8, 0x02e1, - 0x02e5, 0x02e9, 0x02ed, 0x02f1, 0x02f1, 0x02f9, 0x0301, 0x0311, - 0x0316, 0x0327, 0x0330, 0x0339, 0x0339, 0x0340, 0x0344, 0x0347, - 0x0353, 0x0353, 0x035a, 0x0375, 0x037c, 0x0385, 0x038b, 0x0390, - 0x0395, 0x039d, 0x03a3, 0x03a8, 0x03af, 0x03b8, 0x03b8, 0x03c6, - 0x03ce, 0x03e6, 0x03f5, 0x0401, 0x0408, 0x041b, 0x0433, 0x0439, - 0x0443, 0x0449, 0x0453, 0x0459, 0x0471, 0x047b, 0x048f, 0x0497, + 0x0242, 0x0249, 0x0251, 0x0259, 0x0263, 0x0268, 0x026e, 0x0275, + 0x027c, 0x0282, 0x0288, 0x028d, 0x0290, 0x02ab, 0x02c6, 0x02cc, + 0x02d2, 0x02d7, 0x02e0, 0x02e9, 0x02ed, 0x02f1, 0x02f5, 0x02f9, + 0x02f9, 0x0301, 0x0309, 0x0309, 0x0319, 0x031e, 0x032f, 0x0338, + 0x0341, 0x0341, 0x0348, 0x034c, 0x034f, 0x035b, 0x035b, 0x0362, + 0x037d, 0x0384, 0x0384, 0x038d, 0x0393, 0x0398, 0x039d, 0x03a5, + 0x03ab, 0x03b0, 0x03b0, 0x03b7, 0x03c0, 0x03c0, 0x03ce, 0x03d6, + 0x03ee, 0x03fd, 0x0409, 0x0410, 0x0423, 0x043b, 0x0441, 0x044b, // Entry 80 - BF - 0x049e, 0x049e, 0x04a7, 0x04b0, 0x04bc, 0x04c5, 0x04d1, 0x04d8, - 0x04ea, 0x04fd, 0x050e, 0x0516, 0x051b, 0x0521, 0x0528, 0x052d, - 0x0533, 0x053b, 0x0541, 0x0548, 0x0550, 0x0557, 0x055d, 0x0568, - 0x0570, 0x0577, 0x057e, 0x0582, 0x0591, 0x059e, 0x05a4, 0x05b3, - 0x05ce, 0x05d0, 0x05d9, 0x05ed, 0x05ed, 0x05f4, 0x05ff, 0x0605, - 0x061a, -} // Size: 362 bytes - -var jaScriptStr string = "" + // Size: 3253 bytes + 0x0451, 0x045b, 0x0461, 0x0479, 0x0483, 0x0497, 0x049f, 0x04a6, + 0x04a6, 0x04af, 0x04b8, 0x04c4, 0x04cd, 0x04d9, 0x04e0, 0x04f2, + 0x0505, 0x0516, 0x051e, 0x0523, 0x0529, 0x0530, 0x0535, 0x053b, + 0x0543, 0x0549, 0x0550, 0x0558, 0x055f, 0x0565, 0x0570, 0x0578, + 0x057f, 0x0586, 0x058a, 0x0599, 0x05a6, 0x05ac, 0x05bb, 0x05d6, + 0x05d8, 0x05e1, 0x05f5, 0x05fa, 0x0601, 0x060c, 0x0612, 0x0627, +} // Size: 376 bytes + +const jaScriptStr string = "" + // Size: 3286 bytes "アファカ文字カフカス・アルバニア文字アラビア文字帝国アラム文字アルメニア文字アヴェスター文字バリ文字バムン文字バサ文字バタク文字ベンガル文字ブリ" + "スシンボル注音字母ブラーフミー文字ブライユ点字ブギス文字ブヒッド文字チャクマ文字統合カナダ先住民音節文字カリア文字チャム文字チェロキー文字キ" + "アス文字コプト文字キプロス文字キリル文字古代教会スラブ語キリル文字デーバナーガリー文字デセレット文字デュプロワエ式速記エジプト民衆文字エジプ" + "ト神官文字エジプト聖刻文字エルバサン文字エチオピア文字ジョージア文字(フツリ)ジョージア文字グラゴル文字ゴート文字グランタ文字ギリシャ文字グ" + - "ジャラート文字グルムキー文字ハングル漢字ハヌノオ文字漢字(簡体字)漢字(繁体字)ヘブライ文字ひらがなアナトリア象形文字パハウ・フモン文字仮名" + - "古代ハンガリー文字インダス文字古イタリア文字ジャワ文字日本語の文字女真文字カヤー文字カタカナカローシュティー文字クメール文字ホジャ文字カンナ" + - "ダ文字韓国語の文字クペレ文字カイティ文字ラーンナー文字ラオ文字ラテン文字(ドイツ文字)ラテン文字 (ゲール文字)ラテン文字レプチャ文字リンブ" + - "文字線文字A線文字Bフレイザー文字ロマ文字リキア文字リディア文字マハージャニー文字マンダ文字マニ文字マヤ象形文字メンデ文字メロエ文字草書体メ" + - "ロエ文字マラヤーラム文字モーディー文字モンゴル文字ムーン文字ムロ文字メイテイ文字ミャンマー文字古代北アラビア文字ナバテア文字ナシ族ゲバ文字ン" + - "コ文字女書オガム文字オルチキ文字オルホン文字オリヤー文字オスマニア文字パルミラ文字パウ・チン・ハウ文字古ぺルム文字パスパ文字碑文パフラヴィー" + - "文字詩編用パフラヴィー文字書物用パフラヴィー文字フェニキア文字ポラード音声記号碑文パルティア文字ルジャン文字ロンゴロンゴ文字ルーン文字サマリ" + - "ア文字サラティ文字古代南アラビア文字サウラーシュトラ文字手話文字ショー文字シャーラダー文字梵字クダワディ文字シンハラ文字ソラング・ソンペング" + - "文字スンダ文字シロティ・ナグリ文字シリア文字シリア文字(エストランゲロ文字)シリア文字(西方シリア文字)シリア文字(東方シリア文字)タグバン" + - "ワ文字タークリー文字タイ・レ文字新タイ・ルー文字タミール文字西夏文字タイ・ヴェト文字テルグ文字テングワール文字ティフナグ文字タガログ文字ター" + - "ナ文字タイ文字チベット文字ティルフータ文字ウガリット文字ヴァイ文字視話法バラン・クシティ文字ウォレアイ文字古代ペルシア文字シュメール=アッカ" + - "ド語楔形文字イ文字基底文字の種別を継承する結合文字数学記号記号文字非表記共通文字未定義文字" - -var jaScriptIdx = []uint16{ // 169 elements + "ジャラート文字グルムキー文字漢語注音字母ハングル漢字ハヌノオ文字漢字(簡体字)漢字(繁体字)ヘブライ文字ひらがなアナトリア象形文字パハウ・フ" + + "モン文字仮名古代ハンガリー文字インダス文字古イタリア文字字母ジャワ文字日本語の文字女真文字カヤー文字カタカナカローシュティー文字クメール文字" + + "ホジャ文字カンナダ文字韓国語の文字クペレ文字カイティ文字ラーンナー文字ラオ文字ラテン文字(ドイツ文字)ラテン文字 (ゲール文字)ラテン文字レ" + + "プチャ文字リンブ文字線文字A線文字Bフレイザー文字ロマ文字リキア文字リディア文字マハージャニー文字マンダ文字マニ文字マヤ象形文字メンデ文字メ" + + "ロエ文字草書体メロエ文字マラヤーラム文字モーディー文字モンゴル文字ムーン文字ムロ文字メイテイ文字ミャンマー文字古代北アラビア文字ナバテア文字" + + "ナシ族ゲバ文字ンコ文字女書オガム文字オルチキ文字オルホン文字オリヤー文字オスマニア文字パルミラ文字パウ・チン・ハウ文字古ぺルム文字パスパ文字" + + "碑文パフラヴィー文字詩編用パフラヴィー文字書物用パフラヴィー文字フェニキア文字ポラード音声記号碑文パルティア文字ルジャン文字ロンゴロンゴ文字" + + "ルーン文字サマリア文字サラティ文字古代南アラビア文字サウラーシュトラ文字手話文字ショー文字シャーラダー文字梵字クダワディ文字シンハラ文字ソラ" + + "ング・ソンペング文字スンダ文字シロティ・ナグリ文字シリア文字シリア文字(エストランゲロ文字)シリア文字(西方シリア文字)シリア文字(東方シリ" + + "ア文字)タグバンワ文字タークリー文字タイ・レ文字新タイ・ルー文字タミール文字西夏文字タイ・ヴェト文字テルグ文字テングワール文字ティフナグ文字" + + "タガログ文字ターナ文字タイ文字チベット文字ティルフータ文字ウガリット文字ヴァイ文字視話法バラン・クシティ文字ウォレアイ文字古代ペルシア文字シ" + + "ュメール=アッカド語楔形文字イ文字基底文字の種別を継承する結合文字数学記号絵文字記号文字非表記共通文字未定義文字" + +var jaScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0012, 0x0036, 0x0036, 0x0048, 0x005d, 0x0072, 0x008a, - 0x0096, 0x00a5, 0x00b1, 0x00c0, 0x00d2, 0x00e7, 0x00f3, 0x010b, - 0x011d, 0x012c, 0x013e, 0x0150, 0x0174, 0x0183, 0x0192, 0x01a7, - 0x01b6, 0x01c5, 0x01d7, 0x01e6, 0x020d, 0x022b, 0x0240, 0x025b, - 0x0273, 0x028b, 0x02a3, 0x02b8, 0x02cd, 0x02ed, 0x0302, 0x0314, - 0x0323, 0x0335, 0x0347, 0x035f, 0x0374, 0x0380, 0x0386, 0x0398, - 0x03a9, 0x03ba, 0x03ba, 0x03cc, 0x03d8, 0x03f3, 0x040e, 0x0414, - 0x042f, 0x0441, 0x0456, 0x0465, 0x0477, 0x0483, 0x0492, 0x049e, + 0x0000, 0x0000, 0x0012, 0x0036, 0x0036, 0x0048, 0x005d, 0x0072, + 0x008a, 0x0096, 0x00a5, 0x00b1, 0x00c0, 0x00d2, 0x00d2, 0x00e7, + 0x00f3, 0x010b, 0x011d, 0x012c, 0x013e, 0x0150, 0x0174, 0x0183, + 0x0192, 0x01a7, 0x01b6, 0x01c5, 0x01d7, 0x01e6, 0x020d, 0x022b, + 0x0240, 0x025b, 0x0273, 0x028b, 0x02a3, 0x02b8, 0x02cd, 0x02ed, + 0x0302, 0x0314, 0x0323, 0x0335, 0x0347, 0x035f, 0x0374, 0x0386, + 0x0392, 0x0398, 0x03aa, 0x03bb, 0x03cc, 0x03cc, 0x03de, 0x03ea, + 0x0405, 0x0420, 0x0426, 0x0441, 0x0453, 0x0468, 0x046e, 0x047d, // Entry 40 - 7F - 0x04bc, 0x04ce, 0x04dd, 0x04ef, 0x0501, 0x0510, 0x0522, 0x0537, - 0x0543, 0x0563, 0x0584, 0x0593, 0x05a5, 0x05b4, 0x05be, 0x05c8, - 0x05dd, 0x05e9, 0x05f8, 0x060a, 0x0625, 0x0634, 0x0640, 0x0652, - 0x0661, 0x0679, 0x0688, 0x06a0, 0x06b5, 0x06c7, 0x06d6, 0x06e2, - 0x06f4, 0x06f4, 0x0709, 0x0724, 0x0736, 0x074b, 0x0757, 0x075d, - 0x076c, 0x077e, 0x0790, 0x07a2, 0x07b7, 0x07c9, 0x07e7, 0x07f9, - 0x0808, 0x0826, 0x0847, 0x0868, 0x087d, 0x0895, 0x08b0, 0x08c2, - 0x08da, 0x08e9, 0x08fb, 0x090d, 0x0928, 0x0946, 0x0952, 0x0961, + 0x048f, 0x049b, 0x04aa, 0x04b6, 0x04d4, 0x04e6, 0x04f5, 0x0507, + 0x0519, 0x0528, 0x053a, 0x054f, 0x055b, 0x057b, 0x059c, 0x05ab, + 0x05bd, 0x05cc, 0x05d6, 0x05e0, 0x05f5, 0x0601, 0x0610, 0x0622, + 0x063d, 0x064c, 0x0658, 0x0658, 0x066a, 0x0679, 0x0691, 0x06a0, + 0x06b8, 0x06cd, 0x06df, 0x06ee, 0x06fa, 0x070c, 0x070c, 0x0721, + 0x073c, 0x074e, 0x074e, 0x0763, 0x076f, 0x0775, 0x0784, 0x0796, + 0x07a8, 0x07ba, 0x07ba, 0x07cf, 0x07e1, 0x07ff, 0x0811, 0x0820, + 0x083e, 0x085f, 0x0880, 0x0895, 0x08ad, 0x08c8, 0x08da, 0x08f2, // Entry 80 - BF - 0x0979, 0x097f, 0x0994, 0x09a6, 0x09ca, 0x09d9, 0x09f7, 0x0a06, - 0x0a32, 0x0a58, 0x0a7e, 0x0a93, 0x0aa8, 0x0aba, 0x0ad2, 0x0ae4, - 0x0af0, 0x0b08, 0x0b17, 0x0b2f, 0x0b44, 0x0b56, 0x0b65, 0x0b71, - 0x0b83, 0x0b9b, 0x0bb0, 0x0bbf, 0x0bc8, 0x0be6, 0x0bfb, 0x0c13, - 0x0c40, 0x0c49, 0x0c79, 0x0c85, 0x0c85, 0x0c91, 0x0c9a, 0x0ca6, - 0x0cb5, -} // Size: 362 bytes - -var kaScriptStr string = "" + // Size: 4008 bytes + 0x0901, 0x0913, 0x0925, 0x0940, 0x095e, 0x096a, 0x0979, 0x0991, + 0x0997, 0x09ac, 0x09be, 0x09e2, 0x09f1, 0x0a0f, 0x0a1e, 0x0a4a, + 0x0a70, 0x0a96, 0x0aab, 0x0ac0, 0x0ad2, 0x0aea, 0x0afc, 0x0b08, + 0x0b20, 0x0b2f, 0x0b47, 0x0b5c, 0x0b6e, 0x0b7d, 0x0b89, 0x0b9b, + 0x0bb3, 0x0bc8, 0x0bd7, 0x0be0, 0x0bfe, 0x0c13, 0x0c2b, 0x0c58, + 0x0c61, 0x0c91, 0x0c9d, 0x0ca6, 0x0cb2, 0x0cbb, 0x0cc7, 0x0cd6, +} // Size: 376 bytes + +const kaScriptStr string = "" + // Size: 4040 bytes "აფაკაარაბულიიმპერიული არამეულისომხურიავესტურიბალიურიბამუმიბასა ვაჰიბატაკ" + "იბენგალურიბლისსიმბოლოებიბოპომოფობრაჰმიბრაილიბუჰიდიჩაკმაკარიულიჩამიჩერო" + "კიკირთიკოპტურიკვიპროსულიკირილიცაძველი სლავური კირილიცადევანაგარიდეზერე" + "ტისდუპლოის სტენოგრაფიაეგვიპტური დემოტიკურიეგვიპტური იერატიკულიეგვიპტურ" + "ი იეროგლიფურიეთიოპიურიხუცურიქართულიგლაგოლიცაგოთურიგრანთაბერძნულიგუჯარა" + - "თულიგურმუხიჰანგულიჰანიჰანუნოოგამარტივებული ჰანიტრადიციული ჰანიებრაულიჰ" + - "ირაგანაანატოლიური იეროგლიფურიფაჰაუ-მონიიაპონური კანაძველი უნგრულიიავურ" + - "იიაპონურიჯურჯენულიკაიაჰ-ლიკატაკანაქაროშთიქმერულიქოჯკიკანადაკორეულიკპელ" + - "ეკაითილაოსურიგელური ლათინურილათინურილიმბუA-ხაზოვანიB-ხაზოვანილომალიკიუ" + - "რილიდიურიმანდეურიმანიქეურიმაიას იეროგლიფებიმენდემეროიტული კურსივიმეროი" + - "ტულიმალაიალამურიმონღოლურიმრომიანმურიძველი ჩრდილოეთ-არაბულინაბატეურინკო" + - "ნუშუოღამიოლ-ჩიკიორხონულიორიაოსმანიაპალმირულიძველი პერმულიფაგსპამონუმენ" + - "ტური ფალაურიფსალმუნური ფალაურიწიგნური ფალაურიფინიკიურიმონუმენტური პართ" + - "ულირეჯანგირონგორონგორუნულისამარიულისარატიძველი სამხრეთ-არაბულისაურაშტრ" + - "აჟესტთაშარადაქუდავადისინჰალურისორან-სომპენისუნდანურისილოტი ნაგრისირიულ" + - "ისირიული ესტრანგელოდასავლეთი სირიულიაღმოსავლეთი სირიულიტაგბანვატაკრიტა" + - "ი ლეახალი ტაი ლიუტამილურიტანღუტურიტაი-ვიეტიტელუგუტენგვარიტიფინაღითაანა" + - "ტაიტიბეტურიტირჰუტაუგარითულივაიხილული მეტყველებავარანგ-კშიტივოლეაიძველი" + - " სპარსულიშუმერულ-აქადური ლურსმნულიგადაღებულიმათემატიკური ნოტაციასიმბოლოე" + - "ბიუმწერლობოზოგადიუცნობი დამწერლობა" - -var kaScriptIdx = []uint16{ // 169 elements + "თულიგურმუხიჰანბიჰანგულიჰანიჰანუნოოგამარტივებული ჰანიტრადიციული ჰანიებრ" + + "აულიჰირაგანაანატოლიური იეროგლიფურიფაჰაუ-მონიიაპონური კანაძველი უნგრული" + + "ჯამოიავურიიაპონურიჯურჯენულიკაიაჰ-ლიკატაკანაქაროშთიქმერულიქოჯკიკანადაკო" + + "რეულიკპელეკაითილაოსურიგელური ლათინურილათინურილიმბუA-ხაზოვანიB-ხაზოვანი" + + "ლომალიკიურილიდიურიმანდეურიმანიქეურიმაიას იეროგლიფებიმენდემეროიტული კურ" + + "სივიმეროიტულიმალაიალამურიმონღოლურიმრომიანმურიძველი ჩრდილოეთ-არაბულინაბ" + + "ატეურინკონუშუოღამიოლ-ჩიკიორხონულიორიაოსმანიაპალმირულიძველი პერმულიფაგს" + + "პამონუმენტური ფალაურიფსალმუნური ფალაურიწიგნური ფალაურიფინიკიურიმონუმენ" + + "ტური პართულირეჯანგირონგორონგორუნულისამარიულისარატიძველი სამხრეთ-არაბულ" + + "ისაურაშტრაჟესტთაშარადაქუდავადისინჰალურისორან-სომპენისუნდანურისილოტი ნა" + + "გრისირიულისირიული ესტრანგელოდასავლეთი სირიულიაღმოსავლეთი სირიულიტაგბან" + + "ვატაკრიტაი ლეახალი ტაი ლიუტამილურიტანღუტურიტაი-ვიეტიტელუგუტენგვარიტიფი" + + "ნაღითაანატაიტიბეტურიტირჰუტაუგარითულივაიხილული მეტყველებავარანგ-კშიტივო" + + "ლეაიძველი სპარსულიშუმერულ-აქადური ლურსმნულიგადაღებულიმათემატიკური ნოტა" + + "ციაEmojiსიმბოლოებიუმწერლობოზოგადიუცნობი დამწერლობა" + +var kaScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000f, 0x000f, 0x000f, 0x0024, 0x0058, 0x006d, 0x0085, - 0x009a, 0x00ac, 0x00c5, 0x00d7, 0x00f2, 0x011c, 0x0134, 0x0146, - 0x0158, 0x0158, 0x016a, 0x0179, 0x0179, 0x018e, 0x019a, 0x01ac, - 0x01bb, 0x01d0, 0x01ee, 0x0206, 0x0244, 0x0262, 0x027d, 0x02b4, - 0x02ee, 0x0328, 0x0365, 0x0365, 0x0380, 0x0392, 0x03a7, 0x03c2, - 0x03d4, 0x03e6, 0x03fe, 0x041c, 0x0431, 0x0446, 0x0452, 0x0467, - 0x049b, 0x04c6, 0x04c6, 0x04db, 0x04f3, 0x0533, 0x054f, 0x0574, - 0x0599, 0x0599, 0x0599, 0x05ab, 0x05c3, 0x05de, 0x05f4, 0x060c, + 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x0024, 0x0058, 0x006d, + 0x0085, 0x009a, 0x00ac, 0x00c5, 0x00d7, 0x00f2, 0x00f2, 0x011c, + 0x0134, 0x0146, 0x0158, 0x0158, 0x016a, 0x0179, 0x0179, 0x018e, + 0x019a, 0x01ac, 0x01bb, 0x01d0, 0x01ee, 0x0206, 0x0244, 0x0262, + 0x027d, 0x02b4, 0x02ee, 0x0328, 0x0365, 0x0365, 0x0380, 0x0392, + 0x03a7, 0x03c2, 0x03d4, 0x03e6, 0x03fe, 0x041c, 0x0431, 0x0440, + 0x0455, 0x0461, 0x0476, 0x04aa, 0x04d5, 0x04d5, 0x04ea, 0x0502, + 0x0542, 0x055e, 0x0583, 0x05a8, 0x05a8, 0x05a8, 0x05b4, 0x05c6, // Entry 40 - 7F - 0x0621, 0x0636, 0x0645, 0x0657, 0x066c, 0x067b, 0x068a, 0x068a, - 0x069f, 0x069f, 0x06ca, 0x06e2, 0x06e2, 0x06f1, 0x070b, 0x0725, - 0x0725, 0x0731, 0x0746, 0x075b, 0x075b, 0x0773, 0x078e, 0x07bf, - 0x07ce, 0x07ff, 0x081a, 0x083e, 0x083e, 0x0859, 0x0859, 0x0862, - 0x0862, 0x0862, 0x087a, 0x08b8, 0x08d3, 0x08d3, 0x08dc, 0x08e8, - 0x08f7, 0x090a, 0x0922, 0x092e, 0x0943, 0x095e, 0x095e, 0x0983, - 0x0995, 0x09cc, 0x0a00, 0x0a2b, 0x0a46, 0x0a46, 0x0a7d, 0x0a92, - 0x0ab0, 0x0ac2, 0x0add, 0x0aef, 0x0b2a, 0x0b45, 0x0b57, 0x0b57, + 0x05de, 0x05f9, 0x060f, 0x0627, 0x063c, 0x0651, 0x0660, 0x0672, + 0x0687, 0x0696, 0x06a5, 0x06a5, 0x06ba, 0x06ba, 0x06e5, 0x06fd, + 0x06fd, 0x070c, 0x0726, 0x0740, 0x0740, 0x074c, 0x0761, 0x0776, + 0x0776, 0x078e, 0x07a9, 0x07a9, 0x07da, 0x07e9, 0x081a, 0x0835, + 0x0859, 0x0859, 0x0874, 0x0874, 0x087d, 0x087d, 0x087d, 0x0895, + 0x08d3, 0x08ee, 0x08ee, 0x08ee, 0x08f7, 0x0903, 0x0912, 0x0925, + 0x093d, 0x0949, 0x0949, 0x095e, 0x0979, 0x0979, 0x099e, 0x09b0, + 0x09e7, 0x0a1b, 0x0a46, 0x0a61, 0x0a61, 0x0a98, 0x0aad, 0x0acb, // Entry 80 - BF - 0x0b69, 0x0b69, 0x0b81, 0x0b9c, 0x0bc1, 0x0bdc, 0x0bfe, 0x0c13, - 0x0c47, 0x0c78, 0x0caf, 0x0cc7, 0x0cd6, 0x0ce6, 0x0d09, 0x0d21, - 0x0d3c, 0x0d55, 0x0d67, 0x0d7f, 0x0d97, 0x0d97, 0x0da6, 0x0daf, - 0x0dc7, 0x0ddc, 0x0df7, 0x0e00, 0x0e31, 0x0e53, 0x0e65, 0x0e8d, - 0x0ed4, 0x0ed4, 0x0ef2, 0x0f2c, 0x0f2c, 0x0f4a, 0x0f65, 0x0f77, - 0x0fa8, -} // Size: 362 bytes - -var kkScriptStr string = "" + // Size: 918 bytes + 0x0add, 0x0af8, 0x0b0a, 0x0b45, 0x0b60, 0x0b72, 0x0b72, 0x0b84, + 0x0b84, 0x0b9c, 0x0bb7, 0x0bdc, 0x0bf7, 0x0c19, 0x0c2e, 0x0c62, + 0x0c93, 0x0cca, 0x0ce2, 0x0cf1, 0x0d01, 0x0d24, 0x0d3c, 0x0d57, + 0x0d70, 0x0d82, 0x0d9a, 0x0db2, 0x0db2, 0x0dc1, 0x0dca, 0x0de2, + 0x0df7, 0x0e12, 0x0e1b, 0x0e4c, 0x0e6e, 0x0e80, 0x0ea8, 0x0eef, + 0x0eef, 0x0f0d, 0x0f47, 0x0f4c, 0x0f6a, 0x0f85, 0x0f97, 0x0fc8, +} // Size: 376 bytes + +const kkScriptStr string = "" + // Size: 1036 bytes "араб жазуыармян жазуыбенгал жазуыбопомофо жазуБрайль жазуыкирилл жазуыде" + "ванагари жазуыэфиоп жазугрузин жазуыгрек жазуыгуджарати жазуыгурмукхи ж" + - "азуыхангул жазуықытай жазуыжеңілдетілген қытай иероглифыдәстүрлі қытай " + - "иероглифыиврит жазуыхирагана жазуыжапон жазуыкатакана жазуыкхмер жазуык" + - "аннада жазуыкорей жазуылаос жазуылатын жазуымалаялам жазуымоңғол жазуым" + - "ьянма жазуыория жазуысингаль жазуытамиль жазуытелугу жазуытаана жазуыта" + - "й жазуытибет жазуытаңбаларжазусызжалпыбелгісіз жазу" - -var kkScriptIdx = []uint16{ // 169 elements + "азуыханб жазуыхангыл жазуықытай жазуыжеңілдетілген қытай иероглифыдәстү" + + "рлі қытай иероглифыиврит жазуыхирагана жазуыжапон силлабарийічамо жазуы" + + "жапон жазуыкатакана жазуыкхмер жазуыканнада жазуыкорей жазуылаос жазуыл" + + "атын жазуымалаялам жазуымоңғол жазуымьянма жазуыория жазуысингаль жазуы" + + "тамиль жазуытелугу жазуытаана жазуытай жазуытибет жазуыматематикалық жа" + + "зуэмодзитаңбаларжазусызжалпыбелгісіз жазу" + +var kkScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x003f, 0x003f, 0x0058, 0x0058, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, - 0x006f, 0x006f, 0x006f, 0x0086, 0x0086, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b8, 0x00b8, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00e2, 0x00ff, 0x011a, 0x0131, 0x0146, 0x0146, - 0x017e, 0x01ac, 0x01ac, 0x01c1, 0x01dc, 0x01dc, 0x01dc, 0x01dc, - 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01f1, 0x01f1, 0x01f1, 0x020c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x003f, 0x003f, 0x003f, + 0x0058, 0x0058, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0086, 0x0086, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b8, 0x00b8, + 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00e2, 0x00ff, 0x011a, 0x012d, + 0x0144, 0x0159, 0x0159, 0x0191, 0x01bf, 0x01bf, 0x01d4, 0x01ef, + 0x01ef, 0x01ef, 0x0210, 0x0210, 0x0210, 0x0210, 0x0223, 0x0223, // Entry 40 - 7F - 0x020c, 0x0221, 0x0221, 0x023a, 0x024f, 0x024f, 0x024f, 0x024f, - 0x0262, 0x0262, 0x0262, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, - 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, - 0x0277, 0x0277, 0x0277, 0x0292, 0x0292, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c0, - 0x02c0, 0x02c0, 0x02c0, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, - 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, - 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, + 0x0238, 0x0238, 0x0238, 0x0253, 0x0253, 0x0268, 0x0268, 0x0281, + 0x0296, 0x0296, 0x0296, 0x0296, 0x02a9, 0x02a9, 0x02a9, 0x02be, + 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, + 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, + 0x02d9, 0x02d9, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x0307, + 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, + 0x0307, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, + 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, // Entry 80 - BF - 0x02d3, 0x02d3, 0x02d3, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, - 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x0303, - 0x0303, 0x0303, 0x031a, 0x031a, 0x031a, 0x031a, 0x032f, 0x0340, - 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, - 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0365, 0x0373, 0x037d, - 0x0396, -} // Size: 362 bytes - -var kmScriptStr string = "" + // Size: 957 bytes - "អារ៉ាប់អាម៉ានីបង់ក្លាដែសបូផូម៉ូហ្វូអក្សរ\u200bសម្រាប់មនុស្ស\u200bពិការ" + + 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, + 0x031a, 0x031a, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, + 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x034a, 0x034a, + 0x034a, 0x0361, 0x0361, 0x0361, 0x0361, 0x0376, 0x0387, 0x039c, + 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, + 0x039c, 0x039c, 0x03bf, 0x03cb, 0x03db, 0x03e9, 0x03f3, 0x040c, +} // Size: 376 bytes + +const kmScriptStr string = "" + // Size: 1140 bytes + "អារ៉ាប់អាមេនីបង់ក្លាដែសបូផូម៉ូហ្វូអក្សរ\u200bសម្រាប់មនុស្ស\u200bពិការ" + "\u200bភ្នែកស៊ីរីលីកដាវ៉ាន់ណាការិអេត្យូពីហ្សកហ្ស៊ីក្រិចគូចារ៉ាទីកុមុយឃីហា" + - "ំងកុលហានអក្សរ\u200bហាន\u200bកាត់អក្សរ\u200bហាន\u200bពេញអ៊ីស្រាអែលហ៊ីរ៉" + - "ាកាណាជប៉ុនកាតាកាណាខ្មែរកន្នដកូរ៉េឡាវឡាតាំងមលយាល័មម៉ុងហ្គោលីភូមាអូរីយ៉ា" + - "ស៊ីនហាឡាតាមីលតេលុគុថាណាថៃទីបេនិមិត្តសញ្ញាគ្មានការសរសេរទូទៅអក្សរមិនស្គា" + - "ល់" + "នប៍ហាំងកុលហានអក្សរ\u200bហាន\u200bកាត់អក្សរ\u200bហាន\u200bពេញអ៊ីស្រាអែល" + + "ហ៊ីរ៉ាកាណាសញ្ញាសំឡេងភាសាជប៉ុនចាម៉ូជប៉ុនកាតាកាណាខ្មែរខាណាដាកូរ៉េឡាវឡាតា" + + "ំងមលយាល័មម៉ុងហ្គោលីភូមាអូឌៀស៊ីនហាឡាតាមីលតេលុគុថាណាថៃទីបេនិមិត្តសញ្ញាគណ" + + "ិតវិទ្យាសញ្ញាអារម្មណ៍និមិត្តសញ្ញាគ្មានការសរសេរទូទៅអក្សរមិនស្គាល់" -var kmScriptIdx = []uint16{ // 169 elements +var kmScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x0048, 0x0048, 0x0069, 0x0069, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00de, 0x00de, 0x0105, 0x0105, 0x0105, - 0x0105, 0x0105, 0x0105, 0x0105, 0x011d, 0x011d, 0x0138, 0x0138, - 0x0138, 0x0138, 0x0147, 0x0162, 0x0177, 0x018c, 0x0195, 0x0195, - 0x01bf, 0x01e6, 0x01e6, 0x0204, 0x0222, 0x0222, 0x0222, 0x0222, - 0x0222, 0x0222, 0x0222, 0x0222, 0x0231, 0x0231, 0x0231, 0x0249, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0045, 0x0045, 0x0045, + 0x0066, 0x0066, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00db, 0x0102, + 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x011a, 0x011a, + 0x0135, 0x0135, 0x0135, 0x0135, 0x0144, 0x015f, 0x0174, 0x0183, + 0x0198, 0x01a1, 0x01a1, 0x01cb, 0x01f2, 0x01f2, 0x0210, 0x022e, + 0x022e, 0x022e, 0x0267, 0x0267, 0x0267, 0x0267, 0x0276, 0x0276, // Entry 40 - 7F - 0x0249, 0x0258, 0x0258, 0x0267, 0x0276, 0x0276, 0x0276, 0x0276, - 0x027f, 0x027f, 0x027f, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, - 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, - 0x0291, 0x0291, 0x0291, 0x02a6, 0x02a6, 0x02c4, 0x02c4, 0x02c4, - 0x02c4, 0x02c4, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, - 0x02d0, 0x02d0, 0x02d0, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, - 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, - 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, + 0x0285, 0x0285, 0x0285, 0x029d, 0x029d, 0x02ac, 0x02ac, 0x02be, + 0x02cd, 0x02cd, 0x02cd, 0x02cd, 0x02d6, 0x02d6, 0x02d6, 0x02e8, + 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, + 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, + 0x02fd, 0x02fd, 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, 0x0327, + 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, + 0x0327, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, + 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, // Entry 80 - BF - 0x02e5, 0x02e5, 0x02e5, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, - 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x030c, - 0x030c, 0x030c, 0x031e, 0x031e, 0x031e, 0x031e, 0x032a, 0x0330, - 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, - 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x0360, 0x0387, 0x0393, - 0x03bd, -} // Size: 362 bytes - -var knScriptStr string = "" + // Size: 3788 bytes + 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, + 0x0333, 0x0333, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, + 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, 0x035a, 0x035a, + 0x035a, 0x036c, 0x036c, 0x036c, 0x036c, 0x0378, 0x037e, 0x038a, + 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, + 0x038a, 0x038a, 0x03cc, 0x03f3, 0x0417, 0x043e, 0x044a, 0x0474, +} // Size: 376 bytes + +const knScriptStr string = "" + // Size: 3811 bytes "ಅರೇಬಿಕ್ಇಂಪೀರಿಯಲ್ ಅರೆಮಾಯಿಕ್ಅರ್ಮೇನಿಯನ್ಅವೆಸ್ತಾನ್ಬಾಲಿನೀಸ್ಬಾಟಕ್ಬೆಂಗಾಲಿಬ್ಲಿಸ್" + "\u200cಸಿಂಬಲ್ಸ್ಬೋಪೊಮೋಫೋಬ್ರಾಹ್ಮಿಬ್ರೈಲ್ಬಗಿನೀಸ್ಬುಹಿದ್ಕಾಕಂಯುನಿಟೆಡ್ ಕೆನೆಡಿಯನ್ " + "ಅಬೊರಿಜಿನಲ್ ಸಿಲ್ಯಾಬಿಕ್ಸ್ಕರೇನ್ಚಾಮ್ಚೆರೋಕೀಸಿರ್ಥ್ಕಾಪ್ಟಿಕ್ಸಿಪ್ರಿಯಾಟ್ಸಿರಿಲಿಕ್" + "ಪ್ರಾಚೀನ ಚರ್ಚ್ ಸ್ಲೋವಾನಿಕ್ ಸಿರಿಲಿಕ್ದೇವನಾಗರಿಡಸರ್ಟ್ಈಜಿಪ್ಟಿಯನ್ ಡೆಮೋಟಿಕ್ಈಜಿಪ" + "್ಟಿಯನ್ ಹಯಾರಿಟಿಕ್ಈಜಿಪ್ಟಿಯನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಇಥಿಯೋಪಿಕ್ಜಾರ್ಜಿಯನ್ ಖುಸ್ತುರಿಜಾರ್" + - "ಜಿಯನ್ಗ್ಲಾಗೋಲಿಟಿಕ್ಗೋತಿಕ್ಗ್ರೀಕ್ಗುಜರಾತಿಗುರ್ಮುಖಿಹ್ಯಾಂಗುಲ್ಹಾನ್ಹನೂನೂಸರಳೀಕೃತ " + - "ಹಾನ್ಸಾಂಪ್ರದಾಯಿಕ ಹಾನ್ಹೀಬ್ರೂಹಿರಗಾನಾಪಹವ್ ಹ್ಮೋಂಗ್ಕಟಕಾನಾ ಅಥವಾ ಹಿರಗಾನಾಪ್ರಾಚೀ" + - "ನ ಹಂಗೇರಿಯನ್ಸಿಂಧೂಪ್ರಾಚೀನ್ ಇಟಾಲಿಕ್ಜಾವನೀಸ್ಜಾಪನೀಸ್ಕೆಯಾ ಲಿಕಟಕಾನಾಖರೋಶ್ತಿಖಮೇಕ" + - "ನ್ನಡಕೊರಿಯನ್ಕೈಥಿಲಾನಾಲಾವೋಫ್ರಾಕ್ತರ್ ಲ್ಯಾಟಿನ್ಗೇಲಿಕ್ ಲ್ಯಾಟಿನ್ಲ್ಯಾಟಿನ್ಲೆಪ್ಚಾ" + - "ಲಿಂಬುಲೀನಯರ್ ಎಲೀನಯರ್ ಬಿಲೈಸಿಯನ್ಲಿಡಿಯನ್ಮಂಡೇಯನ್ಮನಿಚೈಯನ್ಮಯಾನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಮ" + - "ೆರೊಯಿಟಿಕ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮೂನ್ಮೈತಿ ಮಯೆಕ್ಮ್ಯಾನ್ಮಾರ್ಎನ್\u200dಕೋಓಘಮ್ಓಲ್ ಚಿಕ" + - "ಿಓರ್ಖೋನ್ಒರಿಯಾಓಸ್ಮಾನ್ಯಾಪ್ರಾಚೀನ ಪೆರ್ಮಿಕ್ಫಾಗ್ಸ್-ಪಾಇನ್ಸ್\u200cಕ್ರಿಪ್ಶನಲ್ ಪ" + - "ಾಹ್ಲವಿಸಾಲ್ಟರ್ ಪಾಹ್ಲವಿಬುಕ್ ಪಾಹ್ಲವಿಫೀನಿಶಿಯನ್ಪೊಲ್ಲಾರ್ಡ್ ಫೊನೆಟಿಕ್ಇನ್ಸ್" + - "\u200cಕ್ರಿಪ್ಶನಲ್ ಪಾರ್ಥಿಯನ್ರೆಜಾಂಗ್ರೋಂಗೋರೋಂಗೋರೂನಿಕ್ಸಮಾರಿಟನ್ಸರಾಟಿಸೌರಾಷ್ಟ್ರಸ" + - "ೈನ್\u200cರೈಟಿಂಗ್ಶಾವಿಯಾನ್ಸಿಂಹಳಸುಂಡಾನೀಸ್ಸೈಲೋಟಿ ನಗ್ರಿಸಿರಿಯಾಕ್ಎಸ್ಟ್ರಾಂಜಿಲೋ" + - " ಸಿರಿಯಾಕ್ಪಶ್ಚಿಮ ಸಿರಿಯಾಕ್ಪೂರ್ವ ಸಿರಿಯಾಕ್ಟಾಗ್ಬಾನವಾಥಾಯ್ ಲಿನ್ಯೂ ಥಾಯ್ ಲುಇತಮಿಳು" + - "ಥಾಯ್ ವಿಯೆಟ್ತೆಲುಗುತೆಂಗ್\u200cವಾರ್ಟಿಫಿನಾಘ್ಟ್ಯಾಗಲೋಗ್ಥಾನಾಥಾಯ್ಟಿಬೇಟನ್ಉಗಾರಿಟ" + - "ಿಕ್ವಾಯ್ವಿಸಿಬಲ್ ಸ್ಪೀಚ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಸುಮೇರೋ-ಅಕ್ಕಾಡಿಯನ್ ಕ್ಯೂನಿಫಾರ್ಮ್ಯಿಇ" + - "ನ್\u200dಹೆರಿಟೆಡ್ಗಣೀತ ಸಂಕೇತಲಿಪಿಸಂಕೇತಗಳುಅಲಿಖಿತಸಾಮಾನ್ಯಗೊತ್ತಿಲ್ಲದ ಲಿಪಿ" - -var knScriptIdx = []uint16{ // 169 elements + "ಜಿಯನ್ಗ್ಲಾಗೋಲಿಟಿಕ್ಗೋತಿಕ್ಗ್ರೀಕ್ಗುಜರಾತಿಗುರ್ಮುಖಿಹಂಬ್ಹ್ಯಾಂಗುಲ್ಹಾನ್ಹನೂನೂಸರಳೀ" + + "ಕೃತ ಹಾನ್ಸಾಂಪ್ರದಾಯಿಕ ಹಾನ್ಹೀಬ್ರೂಹಿರಾಗನಪಹವ್ ಹ್ಮೋಂಗ್ಜಪಾನೀಸ್ ಸಿಲಬರೀಸ್ಪ್ರಾಚೀ" + + "ನ ಹಂಗೇರಿಯನ್ಸಿಂಧೂಪ್ರಾಚೀನ್ ಇಟಾಲಿಕ್ಜಮೋಜಾವನೀಸ್ಜಾಪನೀಸ್ಕೆಯಾ ಲಿಕಟಕಾನಾಖರೋಶ್ತಿಖ" + + "ಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕೈಥಿಲಾನಾಲಾವೋಫ್ರಾಕ್ತರ್ ಲ್ಯಾಟಿನ್ಗೇಲಿಕ್ ಲ್ಯಾಟಿನ್ಲ್ಯಾಟಿನ್ಲ" + + "ೆಪ್ಚಾಲಿಂಬುಲೀನಯರ್ ಎಲೀನಯರ್ ಬಿಲೈಸಿಯನ್ಲಿಡಿಯನ್ಮಂಡೇಯನ್ಮನಿಚೈಯನ್ಮಯಾನ್ ಹೀರೋಗ್ಲಿ" + + "ಫ್ಸ್ಮೆರೊಯಿಟಿಕ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮೂನ್ಮೈತಿ ಮಯೆಕ್ಮ್ಯಾನ್ಮಾರ್ಎನ್\u200dಕೋಓಘಮ್ಓಲ" + + "್ ಚಿಕಿಓರ್ಖೋನ್ಒರಿಯಾಓಸ್ಮಾನ್ಯಾಪ್ರಾಚೀನ ಪೆರ್ಮಿಕ್ಫಾಗ್ಸ್-ಪಾಇನ್ಸ್\u200cಕ್ರಿಪ್ಶ" + + "ನಲ್ ಪಾಹ್ಲವಿಸಾಲ್ಟರ್ ಪಾಹ್ಲವಿಬುಕ್ ಪಾಹ್ಲವಿಫೀನಿಶಿಯನ್ಪೊಲ್ಲಾರ್ಡ್ ಫೊನೆಟಿಕ್ಇನ್ಸ" + + "್\u200cಕ್ರಿಪ್ಶನಲ್ ಪಾರ್ಥಿಯನ್ರೆಜಾಂಗ್ರೋಂಗೋರೋಂಗೋರೂನಿಕ್ಸಮಾರಿಟನ್ಸರಾಟಿಸೌರಾಷ್ಟ" + + "್ರಸೈನ್\u200cರೈಟಿಂಗ್ಶಾವಿಯಾನ್ಸಿಂಹಳಸುಂಡಾನೀಸ್ಸೈಲೋಟಿ ನಗ್ರಿಸಿರಿಯಾಕ್ಎಸ್ಟ್ರಾಂಜ" + + "ಿಲೋ ಸಿರಿಯಾಕ್ಪಶ್ಚಿಮ ಸಿರಿಯಾಕ್ಪೂರ್ವ ಸಿರಿಯಾಕ್ಟಾಗ್ಬಾನವಾಥಾಯ್ ಲಿನ್ಯೂ ಥಾಯ್ ಲುಇ" + + "ತಮಿಳುಥಾಯ್ ವಿಯೆಟ್ತೆಲುಗುತೆಂಗ್\u200cವಾರ್ಟಿಫಿನಾಘ್ಟ್ಯಾಗಲೋಗ್ಥಾನಾಥಾಯ್ಟಿಬೇಟನ್ಉ" + + "ಗಾರಿಟಿಕ್ವಾಯ್ವಿಸಿಬಲ್ ಸ್ಪೀಚ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಸುಮೇರೋ-ಅಕ್ಕಾಡಿಯನ್ ಕ್ಯೂನಿಫಾರ್" + + "ಮ್ಯಿಇನ್\u200dಹೆರಿಟೆಡ್ಗಣೀತ ಸಂಕೇತಲಿಪಿಎಮೋಜಿಸಂಕೇತಗಳುಅಲಿಖಿತಸಾಮಾನ್ಯಅಪರಿಚಿತ ಲ" + + "ಿಪಿ" + +var knScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x004c, 0x006a, 0x0085, - 0x009d, 0x009d, 0x009d, 0x00ac, 0x00c1, 0x00ee, 0x0106, 0x011e, - 0x0130, 0x0145, 0x0157, 0x0163, 0x01db, 0x01ea, 0x01f6, 0x0208, - 0x021a, 0x0232, 0x0250, 0x0268, 0x02c5, 0x02dd, 0x02ef, 0x02ef, - 0x0326, 0x0360, 0x03a3, 0x03a3, 0x03be, 0x03f2, 0x040d, 0x0431, - 0x0443, 0x0443, 0x0455, 0x046a, 0x0482, 0x049d, 0x04a9, 0x04b8, - 0x04da, 0x0508, 0x0508, 0x051a, 0x052f, 0x052f, 0x0551, 0x0586, - 0x05b7, 0x05c6, 0x05f4, 0x0609, 0x061e, 0x061e, 0x0631, 0x0643, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x004c, 0x006a, + 0x0085, 0x009d, 0x009d, 0x009d, 0x00ac, 0x00c1, 0x00c1, 0x00ee, + 0x0106, 0x011e, 0x0130, 0x0145, 0x0157, 0x0163, 0x01db, 0x01ea, + 0x01f6, 0x0208, 0x021a, 0x0232, 0x0250, 0x0268, 0x02c5, 0x02dd, + 0x02ef, 0x02ef, 0x0326, 0x0360, 0x03a3, 0x03a3, 0x03be, 0x03f2, + 0x040d, 0x0431, 0x0443, 0x0443, 0x0455, 0x046a, 0x0482, 0x048e, + 0x04a9, 0x04b5, 0x04c4, 0x04e6, 0x0514, 0x0514, 0x0526, 0x0538, + 0x0538, 0x055a, 0x0588, 0x05b9, 0x05c8, 0x05f6, 0x05ff, 0x0614, // Entry 40 - 7F - 0x0658, 0x0661, 0x0661, 0x0670, 0x0685, 0x0685, 0x0691, 0x069d, - 0x06a9, 0x06dd, 0x0708, 0x0720, 0x0732, 0x0741, 0x0757, 0x0770, - 0x0770, 0x0770, 0x0785, 0x079a, 0x079a, 0x07af, 0x07c7, 0x07fb, - 0x07fb, 0x07fb, 0x0819, 0x082b, 0x082b, 0x0846, 0x0852, 0x0852, - 0x086e, 0x086e, 0x088c, 0x088c, 0x088c, 0x088c, 0x089e, 0x089e, - 0x08aa, 0x08c0, 0x08d5, 0x08e4, 0x08ff, 0x08ff, 0x08ff, 0x092d, - 0x0946, 0x098c, 0x09b7, 0x09d9, 0x09f4, 0x0a2b, 0x0a77, 0x0a8c, - 0x0aaa, 0x0abc, 0x0ad4, 0x0ae3, 0x0ae3, 0x0afe, 0x0b22, 0x0b3a, + 0x0629, 0x0629, 0x063c, 0x064e, 0x0663, 0x0672, 0x0672, 0x0681, + 0x0696, 0x0696, 0x06a2, 0x06ae, 0x06ba, 0x06ee, 0x0719, 0x0731, + 0x0743, 0x0752, 0x0768, 0x0781, 0x0781, 0x0781, 0x0796, 0x07ab, + 0x07ab, 0x07c0, 0x07d8, 0x07d8, 0x080c, 0x080c, 0x080c, 0x082a, + 0x083c, 0x083c, 0x0857, 0x0863, 0x0863, 0x087f, 0x087f, 0x089d, + 0x089d, 0x089d, 0x089d, 0x089d, 0x08af, 0x08af, 0x08bb, 0x08d1, + 0x08e6, 0x08f5, 0x08f5, 0x0910, 0x0910, 0x0910, 0x093e, 0x0957, + 0x099d, 0x09c8, 0x09ea, 0x0a05, 0x0a3c, 0x0a88, 0x0a9d, 0x0abb, // Entry 80 - BF - 0x0b3a, 0x0b3a, 0x0b3a, 0x0b49, 0x0b49, 0x0b64, 0x0b86, 0x0b9e, - 0x0bdb, 0x0c06, 0x0c2e, 0x0c49, 0x0c49, 0x0c5c, 0x0c7f, 0x0c8e, - 0x0c8e, 0x0cad, 0x0cbf, 0x0cdd, 0x0cf5, 0x0d10, 0x0d1c, 0x0d28, - 0x0d3d, 0x0d3d, 0x0d58, 0x0d64, 0x0d8c, 0x0d8c, 0x0d8c, 0x0dba, - 0x0e10, 0x0e16, 0x0e3a, 0x0e62, 0x0e62, 0x0e7a, 0x0e8c, 0x0ea1, - 0x0ecc, -} // Size: 362 bytes - -var koScriptStr string = "" + // Size: 2788 bytes + 0x0acd, 0x0ae5, 0x0af4, 0x0af4, 0x0b0f, 0x0b33, 0x0b4b, 0x0b4b, + 0x0b4b, 0x0b4b, 0x0b5a, 0x0b5a, 0x0b75, 0x0b97, 0x0baf, 0x0bec, + 0x0c17, 0x0c3f, 0x0c5a, 0x0c5a, 0x0c6d, 0x0c90, 0x0c9f, 0x0c9f, + 0x0cbe, 0x0cd0, 0x0cee, 0x0d06, 0x0d21, 0x0d2d, 0x0d39, 0x0d4e, + 0x0d4e, 0x0d69, 0x0d75, 0x0d9d, 0x0d9d, 0x0d9d, 0x0dcb, 0x0e21, + 0x0e27, 0x0e4b, 0x0e73, 0x0e82, 0x0e9a, 0x0eac, 0x0ec1, 0x0ee3, +} // Size: 376 bytes + +const koScriptStr string = "" + // Size: 2803 bytes "아파카 문자코카시안 알바니아 문자아랍 문자아랍제국 문자아르메니아 문자아베스타 문자발리 문자바뭄 문자바사바흐 문자바타크 문자벵골 문" + "자블리스기호 문자주음부호브라미브라유 점자부기 문자부히드 문자차크마 문자통합 캐나다 토착어카리 문자칸 고어체로키 문자키르쓰콥트 " + "문자키프로스 문자키릴 문자고대교회슬라브어 키릴문자데바나가리 문자디저렛 문자듀플로이안 문자고대 이집트 민중문자고대 이집트 신관문" + - "자고대 이집트 신성문자엘바산 문자에티오피아 문자그루지야 쿠츠리 문자그루지야 문자글라골 문자고트 문자그란타 문자그리스 문자구쟈라" + - "티 문자구르무키 문자한글한자하누누 문자한자 간체한자 번체히브리 문자히라가나아나톨리아 상형문자파하우 몽 문자가나고대 헝가리 문자" + - "인더스 문자고대 이탈리아 문자자바 문자일본 문자줄첸 문자카야 리 문자가타카나카로슈티 문자크메르 문자코즈키 문자칸나다 문자한국어" + - "크펠레 문자카이시 문자란나 문자라오 문자독일식 로마자아일랜드식 로마자로마자렙차 문자림부 문자선형 문자(A)선형 문자(B)프레이" + - "저 문자로마 문자리키아 문자리디아 문자마하자니 문자만다이아 문자마니교 문자마야 상형 문자멘데 문자메로에 필기체메로에 문자말라얄" + - "람 문자몽골 문자문 문자므로 문자메이테이 마옉 문자미얀마 문자옛 북부 아라비아 문자나바테아 문자나시 게바 문자응코 문자누슈 문" + - "자오검 문자올 치키 문자오르혼어오리야 문자오스마니아 문자팔미라 문자고대 페름 문자파스파 문자명문 팔라비 문자솔터 팔라비 문자북" + + "자고대 이집트 신성문자엘바산 문자에티오피아 문자그루지야 쿠츠리 문자조지아 문자글라골 문자고트 문자그란타 문자그리스 문자구자라트" + + " 문자구르무키 문자주음 자모한글한자하누누 문자한자 간체한자 번체히브리 문자히라가나아나톨리아 상형문자파하우 몽 문자가나고대 헝가리 " + + "문자인더스 문자고대 이탈리아 문자자모자바 문자일본 문자줄첸 문자카야 리 문자가타카나카로슈티 문자크메르 문자코즈키 문자칸나다 문" + + "자한국어크펠레 문자카이시 문자란나 문자라오 문자독일식 로마자아일랜드식 로마자로마자렙차 문자림부 문자선형 문자(A)선형 문자(B" + + ")프레이저 문자로마 문자리키아 문자리디아 문자마하자니 문자만다이아 문자마니교 문자마야 상형 문자멘데 문자메로에 필기체메로에 문자말" + + "라얄람 문자몽골 문자문 문자므로 문자메이테이 마옉 문자미얀마 문자옛 북부 아라비아 문자나바테아 문자나시 게바 문자응코 문자누슈" + + " 문자오검 문자올 치키 문자오르혼어오리야 문자오스마니아 문자팔미라 문자고대 페름 문자파스파 문자명문 팔라비 문자솔터 팔라비 문자북" + " 팔라비 문자페니키아 문자폴라드 표음 문자명문 파라티아 문자레장 문자롱고롱고룬 문자사마리아 문자사라티옛 남부 아라비아 문자사우라슈" + "트라 문자수화 문자샤비안 문자사라다 문자실담자쿠다와디 문자신할라 문자소라 솜펭 문자순다 문자실헤티 나가리시리아 문자에스트랑겔로" + "식 시리아 문자서부 시리아 문자동부 시리아 문자타그반와 문자타크리 문자타이 레 문자신 타이 루에타밀 문자탕구트 문자태국 베트남" + " 문자텔루구 문자텡과르 문자티피나그 문자타갈로그 문자타나 문자타이 문자티베트 문자티르후타 문자우가리트 문자바이 문자시화법바랑 크시" + - "티 문자울레아이고대 페르시아 문자수메르-아카드어 설형문자이 문자구전 문자수학 기호기호구전일반 문자기록되지 않은 문자(구전)" + "티 문자울레아이고대 페르시아 문자수메르-아카드어 설형문자이 문자구전 문자수학 기호이모티콘기호구전일반 문자알 수 없는 문자" -var koScriptIdx = []uint16{ // 169 elements +var koScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0010, 0x0030, 0x0030, 0x003d, 0x0050, 0x0066, 0x0079, - 0x0086, 0x0093, 0x00a6, 0x00b6, 0x00c3, 0x00d9, 0x00e5, 0x00ee, - 0x00fe, 0x010b, 0x011b, 0x012b, 0x0145, 0x0152, 0x015c, 0x016c, - 0x0175, 0x0182, 0x0195, 0x01a2, 0x01c7, 0x01dd, 0x01ed, 0x0203, - 0x0220, 0x023d, 0x025a, 0x026a, 0x0280, 0x029d, 0x02b0, 0x02c0, - 0x02cd, 0x02dd, 0x02ed, 0x0300, 0x0313, 0x0319, 0x031f, 0x032f, - 0x033c, 0x0349, 0x0349, 0x0359, 0x0365, 0x0381, 0x0395, 0x039b, - 0x03b2, 0x03c2, 0x03dc, 0x03e9, 0x03f6, 0x0403, 0x0414, 0x0420, + 0x0000, 0x0000, 0x0010, 0x0030, 0x0030, 0x003d, 0x0050, 0x0066, + 0x0079, 0x0086, 0x0093, 0x00a6, 0x00b6, 0x00c3, 0x00c3, 0x00d9, + 0x00e5, 0x00ee, 0x00fe, 0x010b, 0x011b, 0x012b, 0x0145, 0x0152, + 0x015c, 0x016c, 0x0175, 0x0182, 0x0195, 0x01a2, 0x01c7, 0x01dd, + 0x01ed, 0x0203, 0x0220, 0x023d, 0x025a, 0x026a, 0x0280, 0x029d, + 0x02ad, 0x02bd, 0x02ca, 0x02da, 0x02ea, 0x02fd, 0x0310, 0x031d, + 0x0323, 0x0329, 0x0339, 0x0346, 0x0353, 0x0353, 0x0363, 0x036f, + 0x038b, 0x039f, 0x03a5, 0x03bc, 0x03cc, 0x03e6, 0x03ec, 0x03f9, // Entry 40 - 7F - 0x0433, 0x0443, 0x0453, 0x0463, 0x046c, 0x047c, 0x048c, 0x0499, - 0x04a6, 0x04b9, 0x04d2, 0x04db, 0x04e8, 0x04f5, 0x0505, 0x0515, - 0x0528, 0x0535, 0x0545, 0x0555, 0x0568, 0x057b, 0x058b, 0x059f, - 0x05ac, 0x05bf, 0x05cf, 0x05e2, 0x05e2, 0x05ef, 0x05f9, 0x0606, - 0x0620, 0x0620, 0x0630, 0x064e, 0x0661, 0x0675, 0x0682, 0x068f, - 0x069c, 0x06ad, 0x06b9, 0x06c9, 0x06df, 0x06ef, 0x06ef, 0x0703, - 0x0713, 0x072a, 0x0741, 0x0755, 0x0768, 0x077f, 0x0799, 0x07a6, - 0x07b2, 0x07bc, 0x07cf, 0x07d8, 0x07f6, 0x080f, 0x081c, 0x082c, + 0x0406, 0x0413, 0x0424, 0x0430, 0x0443, 0x0453, 0x0463, 0x0473, + 0x047c, 0x048c, 0x049c, 0x04a9, 0x04b6, 0x04c9, 0x04e2, 0x04eb, + 0x04f8, 0x0505, 0x0515, 0x0525, 0x0538, 0x0545, 0x0555, 0x0565, + 0x0578, 0x058b, 0x059b, 0x059b, 0x05af, 0x05bc, 0x05cf, 0x05df, + 0x05f2, 0x05f2, 0x05ff, 0x0609, 0x0616, 0x0630, 0x0630, 0x0640, + 0x065e, 0x0671, 0x0671, 0x0685, 0x0692, 0x069f, 0x06ac, 0x06bd, + 0x06c9, 0x06d9, 0x06d9, 0x06ef, 0x06ff, 0x06ff, 0x0713, 0x0723, + 0x073a, 0x0751, 0x0765, 0x0778, 0x078f, 0x07a9, 0x07b6, 0x07c2, // Entry 80 - BF - 0x083c, 0x0845, 0x0858, 0x0868, 0x087c, 0x0889, 0x089c, 0x08ac, - 0x08d2, 0x08e9, 0x0900, 0x0913, 0x0923, 0x0934, 0x0945, 0x0952, - 0x0962, 0x0979, 0x0989, 0x0999, 0x09ac, 0x09bf, 0x09cc, 0x09d9, - 0x09e9, 0x09fc, 0x0a0f, 0x0a1c, 0x0a25, 0x0a3c, 0x0a48, 0x0a62, - 0x0a85, 0x0a8f, 0x0a9c, 0x0aa9, 0x0aa9, 0x0aaf, 0x0ab5, 0x0ac2, - 0x0ae4, -} // Size: 362 bytes - -var kyScriptStr string = "" + // Size: 491 bytes + 0x07cc, 0x07df, 0x07e8, 0x0806, 0x081f, 0x082c, 0x083c, 0x084c, + 0x0855, 0x0868, 0x0878, 0x088c, 0x0899, 0x08ac, 0x08bc, 0x08e2, + 0x08f9, 0x0910, 0x0923, 0x0933, 0x0944, 0x0955, 0x0962, 0x0972, + 0x0989, 0x0999, 0x09a9, 0x09bc, 0x09cf, 0x09dc, 0x09e9, 0x09f9, + 0x0a0c, 0x0a1f, 0x0a2c, 0x0a35, 0x0a4c, 0x0a58, 0x0a72, 0x0a95, + 0x0a9f, 0x0aac, 0x0ab9, 0x0ac5, 0x0acb, 0x0ad1, 0x0ade, 0x0af3, +} // Size: 376 bytes + +const kyScriptStr string = "" + // Size: 608 bytes "АрабАрмянБенгалБопомофоБрейлКириллДеванагариЭфиопГрузинГрекГужаратиГурму" + - "хиХангулХаньЖөн. КытайСалт. КытайИвритХираганаЖапанКатаканаКмерКаннадаК" + - "орейЛаоЛатынМалайаламМоңголМйанмарОрийаСингалаТамилТелуТаанаТайТибетБел" + - "гилерЖазылбаганЖалпыБелгисиз жазуу" + "хиХанбХангулХаньЖөнөк. ХаньСалттуу ХаньИвритХираганаЖапон силлабография" + + "сыДжамоЖапанКатаканаКмерКаннадаКорейЛаоЛатынМалайаламМонголМйанмарОрийа" + + "СингалаТамилТелуТаанаТайТибетМатематикалык мааниБыйтыкчаБелгилерЖазылба" + + "ганЖалпыБелгисиз жазуу" -var kyScriptIdx = []uint16{ // 169 elements +var kyScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0044, 0x0044, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0062, 0x0062, 0x006e, 0x006e, - 0x006e, 0x006e, 0x0076, 0x0086, 0x0094, 0x00a0, 0x00a8, 0x00a8, - 0x00ba, 0x00ce, 0x00ce, 0x00d8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f2, 0x00f2, 0x00f2, 0x0102, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x001e, + 0x002e, 0x002e, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0044, 0x0044, 0x0058, + 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0062, 0x0062, + 0x006e, 0x006e, 0x006e, 0x006e, 0x0076, 0x0086, 0x0094, 0x009c, + 0x00a8, 0x00b0, 0x00b0, 0x00c4, 0x00db, 0x00db, 0x00e5, 0x00f5, + 0x00f5, 0x00f5, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0128, // Entry 40 - 7F - 0x0102, 0x010a, 0x010a, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122, - 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x0132, 0x0144, 0x0144, 0x0150, 0x0150, 0x0150, - 0x0150, 0x0150, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x015e, 0x015e, 0x015e, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, + 0x0132, 0x0132, 0x0132, 0x0142, 0x0142, 0x014a, 0x014a, 0x0158, + 0x0162, 0x0162, 0x0162, 0x0162, 0x0168, 0x0168, 0x0168, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, + 0x0184, 0x0184, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x019e, + 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, + 0x019e, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, // Entry 80 - BF - 0x0168, 0x0168, 0x0168, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0180, - 0x0180, 0x0180, 0x0188, 0x0188, 0x0188, 0x0188, 0x0192, 0x0198, - 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, - 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01b2, 0x01c6, 0x01d0, - 0x01eb, -} // Size: 362 bytes - -var loScriptStr string = "" + // Size: 3892 bytes - "ອັບຟາກາອາລັບອິມພີຮຽນ ອາເມອິກອາເມນຽນອະເວສຕະບາລີບາມູມບັດຊາບາຕັກເບັງກາລິບລິ" + + 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, + 0x01a8, 0x01a8, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, + 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01c0, 0x01c0, + 0x01c0, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01d2, 0x01d8, 0x01e2, + 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, + 0x01e2, 0x01e2, 0x0207, 0x0217, 0x0227, 0x023b, 0x0245, 0x0260, +} // Size: 376 bytes + +const loScriptStr string = "" + // Size: 3937 bytes + "ອັບຟາກາອາຣາບິກອິມພີຮຽນ ອາເມອິກອາເມນຽນອະເວສຕະບາລີບາມູມບັດຊາບາຕັກເບັງກາບລິ" + "ກຊິມໂບລສຈູ້ອິນພຮາຫມີເບຣວບູກິສບູຮິດຊາກມາສັນຍາລັກຊົນເຜົ່າພື້ນເມືອງແຄນນາດ" + "າຄາເຮຍຈາມເຊໂຮກີເຊີຮຄອບຕິກໄຊເປຍຊີຣິວລິກເຊຮັດສລາ ໂວນິກຊີຮິກລິກໂບຮານດີວານ" + "າກາຣີເດເຊເຮຊົວເລດັບໂລຍັນດີໂມຕິກອີຍິບເຮຍຮາຕິກອີຍິບເຮຍໂຮກລິຟອີຍິບອີທິໂອປ" + - "ິກຄອດຊູຮີຈໍເຈຍຈໍຈຽນກລາໂກລິຕິກໂກຮິກເຄນທາກະເລັກຈູຈາຣາທີກົວມູຄີຮັນກູນຮານຮ" + - "ານູໂນໂອຈີນ (ແບບງ່າຍ)ຈີນ (ດັ້ງເດີມ)ຮີບຣິວຣິຣະງະນະອັກລຮະອານາໂຕເລຍປາເຮາເມ" + - "ັງຄະຕະກະນະຫຮືຮີຮະງະນະຮັງກາຮີໂບຮານອິນດັດອີຕາລີໂບຮານຈາວາຍີ່ປຸ່ນຈູຮເຊັນຄຍ" + - "າຄະຕະກະນະຂໍໂຮກສີຂະໝຽນຄໍຈຄີຄັນນາດາເກົາຫຼີເປລເລກາຍຕິລ້ານນາລາວລາຕິນ-ຟຮັ່ງ" + - "ເຕຣລາຕິນ-ແກລິກລາຕິນເລຊາລິມບູລີເນຍລີເນຍຣເຟຣເຊຮໂລມາໄລເຊຍລີເດຍແມນດຽນມານິແ" + - "ຊນມາຍາໄຮໂຮກລິບເມນເດເຄເລີຊີເມໂຮອິຕິກເມໂຮຕິກມາລາຍັນມົງໂກນມູນເມໂຮເມເທມາເຍ" + - "ກມຽນມາອາຮະເບຍເໜືອໂບຮານນາບາທາທຽນກີບາ-ນາຊີເອັນໂກນຸຊຸອອກຄອນໂອຊິກິອອກສມັນຍ" + - "າໂອຣິຢາພາລໄມຮິນເພີມີໂບຮານຟາກສ-ປາປະຫລາວີອິນສຄິບຊັນແນລປະຫລາວີຊອດເຕຮ໌ປະຫລ" + - "າວີບຸກຟີນິເຊຍສັດຕະສາດພໍຮລາພາຮ໌ເທຍອິນສຄຮິປຊັນແນລເຮຈັງຮອງໂກຮອງໂກຮູນິກຊາມ" + - "າເລຍຊາຮາຕິອາລະເບຍໃຕ້ໂບຮານໂສຮັດຕຣະໄຊນ໌ໄຮຕີ້ງຊອວຽນຊາຮາດາດຸດາວາດີສິນຫາລາໂ" + - "ສຮາສົມເປັງຊຸນດາຊີໂລຕິນາກຣີຊີເຮຍຊີເຮຍເອສທຮານຈີໂລຊີເຮຍຕາເວັນຕົກຊີເຮຍຕາເວ" + - "ັນອອກຕັກບັນວາທາຄຮີໄທເລໄທລື້ໃໝ່ທາມິລຕັນກັນໄທຫວຽດເຕລູກູເທງກວາຮທີຟີນາກຕາກ" + - "າລອກທານາໄທທິເບທັນເທຮຸທາຍູກາຮິດໄວຄຳເວົ້າທີ່ເບີ່ງເຫັນໄດ້ວາຮັງກສິຕິໂອລີເອ" + - "ເປຮເຊຍໂບຮານອັກສອນຮູບປລີ່ມສຸເມເຮຍ-ອັດຄາເດຍຍີອິນເຮຮິດເຄື່ອງໝາຍທາງຄະນິດສາ" + - "ດສັນຍາລັກບໍ່ມີພາສາຂຽນສາມັນການຂຽນທີ່ບໍ່ຮູ້ຈັກ" - -var loScriptIdx = []uint16{ // 169 elements + "ິກຄອດຊູຮີຈໍເຈຍຈໍຈຽນກລາໂກລິຕິກໂກຮິກເຄນທາກຣີກຈູຈາຣາທີກົວມູຄີຮັນຮັນກູນຮານ" + + "ຮານູໂນໂອຈີນ (ແບບງ່າຍ)ຈີນ (ດັ້ງເດີມ)ຮີບຣິວຣິຣະງະນະອັກລຮະອານາໂຕເລຍປາເຮາເ" + + "ມັງຕາຕາລາງພະຍາງພາສາຍີ່ປຸ່ນຮັງກາຮີໂບຮານອິນດັດອີຕາລີໂບຮານຈາໂມຈາວາຍີ່ປຸ່ນ" + + "ຈູຮເຊັນຄຍາຄະຕະກະນະຂໍໂຮກສີຂະແມຄໍຈຄີຄັນນາດາເກົາຫຼີເປລເລກາຍຕິລ້ານນາລາວລາຕ" + + "ິນ-ຟຮັ່ງເຕຣລາຕິນ-ແກລິກລາຕິນເລຊາລິມບູລີເນຍລີເນຍຣເຟຣເຊຮໂລມາໄລເຊຍລີເດຍແມນ" + + "ດຽນມານິແຊນມາຍາໄຮໂຮກລິບເມນເດເຄເລີຊີເມໂຮອິຕິກເມໂຮຕິກມາເລຢາລາມມົງໂກນມູນເມ" + + "ໂຮເມເທມາເຍກມຽນມາອາຮະເບຍເໜືອໂບຮານນາບາທາທຽນກີບາ-ນາຊີເອັນໂກນຸຊຸອອກຄອນໂອຊິ" + + "ກິອອກສມັນຍາໂອເດຍພາລໄມຮິນເພີມີໂບຮານຟາກສ-ປາປະຫລາວີອິນສຄິບຊັນແນລປະຫລາວີຊອ" + + "ດເຕຮ໌ປະຫລາວີບຸກຟີນິເຊຍສັດຕະສາດພໍຮລາພາຮ໌ເທຍອິນສຄຮິປຊັນແນລເຮຈັງຮອງໂກຮອງໂ" + + "ກຮູນິກຊາມາເລຍຊາຮາຕິອາລະເບຍໃຕ້ໂບຮານໂສຮັດຕຣະໄຊນ໌ໄຮຕີ້ງຊອວຽນຊາຮາດາດຸດາວາດ" + + "ີສິນຫາລາໂສຮາສົມເປັງຊຸນດາຊີໂລຕິນາກຣີຊີເຮຍຊີເຮຍເອສທຮານຈີໂລຊີເຮຍຕາເວັນຕົກ" + + "ຊີເຮຍຕາເວັນອອກຕັກບັນວາທາຄຮີໄທເລໄທລື້ໃໝ່ທາມິລຕັນກັນໄທຫວຽດເທລູກູເທງກວາຮທ" + + "ີຟີນາກຕາກາລອກທານາໄທທິເບທັນເທຮຸທາຍູກາຮິດໄວຄຳເວົ້າທີ່ເບີ່ງເຫັນໄດ້ວາຮັງກສ" + + "ິຕິໂອລີເອເປຮເຊຍໂບຮານອັກສອນຮູບປລີ່ມສຸເມເຮຍ-ອັດຄາເດຍຍີອິນເຮຮິດເຄື່ອງໝາຍທ" + + "າງຄະນິດສາດອີໂມຈິສັນຍາລັກບໍ່ມີພາສາຂຽນສາມັນແບບຂຽນທີ່ບໍ່ຮູ້ຈັກ" + +var loScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0015, 0x0015, 0x0015, 0x0024, 0x0052, 0x0067, 0x007c, - 0x0088, 0x0097, 0x00a6, 0x00b5, 0x00cd, 0x00ee, 0x0100, 0x0112, - 0x011e, 0x012d, 0x013c, 0x014b, 0x01ab, 0x01ba, 0x01c3, 0x01d5, - 0x01e1, 0x01f3, 0x0202, 0x021a, 0x0269, 0x0287, 0x0299, 0x02c0, - 0x02e4, 0x030b, 0x0335, 0x0335, 0x0350, 0x0374, 0x0383, 0x03a1, - 0x03b0, 0x03bf, 0x03d1, 0x03e9, 0x03fe, 0x0410, 0x0419, 0x0431, - 0x0452, 0x0476, 0x0476, 0x0488, 0x04a0, 0x04cd, 0x04e8, 0x0521, - 0x0545, 0x0557, 0x0578, 0x0584, 0x0599, 0x05ae, 0x05b7, 0x05cf, + 0x0000, 0x0000, 0x0015, 0x0015, 0x0015, 0x002a, 0x0058, 0x006d, + 0x0082, 0x008e, 0x009d, 0x00ac, 0x00bb, 0x00cd, 0x00cd, 0x00ee, + 0x0100, 0x0112, 0x011e, 0x012d, 0x013c, 0x014b, 0x01ab, 0x01ba, + 0x01c3, 0x01d5, 0x01e1, 0x01f3, 0x0202, 0x021a, 0x0269, 0x0287, + 0x0299, 0x02c0, 0x02e4, 0x030b, 0x0335, 0x0335, 0x0350, 0x0374, + 0x0383, 0x03a1, 0x03b0, 0x03bf, 0x03cb, 0x03e3, 0x03f8, 0x0401, + 0x0413, 0x041c, 0x0434, 0x0455, 0x0479, 0x0479, 0x048b, 0x04a3, + 0x04d0, 0x04eb, 0x0530, 0x0554, 0x0566, 0x0587, 0x0593, 0x059f, // Entry 40 - 7F - 0x05e4, 0x05f3, 0x0602, 0x0617, 0x062c, 0x063b, 0x064a, 0x065c, - 0x0665, 0x068d, 0x06ac, 0x06bb, 0x06c7, 0x06d6, 0x06e5, 0x06f7, - 0x0709, 0x0715, 0x0724, 0x0733, 0x0733, 0x0745, 0x075a, 0x077e, - 0x078d, 0x07bd, 0x07d2, 0x07e7, 0x07e7, 0x07f9, 0x0802, 0x080e, - 0x0829, 0x0829, 0x0838, 0x0868, 0x0883, 0x089c, 0x08ae, 0x08ba, - 0x08cc, 0x08de, 0x08f9, 0x090b, 0x090b, 0x0923, 0x0923, 0x0941, - 0x0954, 0x0990, 0x09ba, 0x09d8, 0x09ed, 0x0a14, 0x0a53, 0x0a62, - 0x0a80, 0x0a8f, 0x0aa4, 0x0ab6, 0x0ae3, 0x0afb, 0x0b19, 0x0b28, + 0x05b4, 0x05c9, 0x05d2, 0x05ea, 0x05ff, 0x060b, 0x061a, 0x062f, + 0x0644, 0x0653, 0x0662, 0x0674, 0x067d, 0x06a5, 0x06c4, 0x06d3, + 0x06df, 0x06ee, 0x06fd, 0x070f, 0x0721, 0x072d, 0x073c, 0x074b, + 0x074b, 0x075d, 0x0772, 0x0772, 0x0796, 0x07a5, 0x07d5, 0x07ea, + 0x0805, 0x0805, 0x0817, 0x0820, 0x082c, 0x0847, 0x0847, 0x0856, + 0x0886, 0x08a1, 0x08a1, 0x08ba, 0x08cc, 0x08d8, 0x08ea, 0x08fc, + 0x0917, 0x0926, 0x0926, 0x0926, 0x093e, 0x093e, 0x095c, 0x096f, + 0x09ab, 0x09d5, 0x09f3, 0x0a08, 0x0a2f, 0x0a6e, 0x0a7d, 0x0a9b, // Entry 80 - BF - 0x0b3a, 0x0b3a, 0x0b52, 0x0b67, 0x0b88, 0x0b97, 0x0bb8, 0x0bc7, - 0x0bf7, 0x0c21, 0x0c4b, 0x0c63, 0x0c72, 0x0c7e, 0x0c96, 0x0ca5, - 0x0cb7, 0x0cc9, 0x0cdb, 0x0cf0, 0x0d05, 0x0d1a, 0x0d26, 0x0d2c, - 0x0d41, 0x0d53, 0x0d68, 0x0d6e, 0x0db0, 0x0dce, 0x0de0, 0x0e01, - 0x0e59, 0x0e5f, 0x0e77, 0x0eb3, 0x0eb3, 0x0ecb, 0x0eef, 0x0efe, - 0x0f34, -} // Size: 362 bytes - -var ltScriptStr string = "" + // Size: 1634 bytes + 0x0aaa, 0x0abf, 0x0ad1, 0x0afe, 0x0b16, 0x0b34, 0x0b43, 0x0b55, + 0x0b55, 0x0b6d, 0x0b82, 0x0ba3, 0x0bb2, 0x0bd3, 0x0be2, 0x0c12, + 0x0c3c, 0x0c66, 0x0c7e, 0x0c8d, 0x0c99, 0x0cb1, 0x0cc0, 0x0cd2, + 0x0ce4, 0x0cf6, 0x0d0b, 0x0d20, 0x0d35, 0x0d41, 0x0d47, 0x0d5c, + 0x0d6e, 0x0d83, 0x0d89, 0x0dcb, 0x0de9, 0x0dfb, 0x0e1c, 0x0e74, + 0x0e7a, 0x0e92, 0x0ece, 0x0ee0, 0x0ef8, 0x0f1c, 0x0f2b, 0x0f61, +} // Size: 376 bytes + +const ltScriptStr string = "" + // Size: 1663 bytes "AfakaKaukazo Albanijosarabųimperinė aramaikųarmėnųavestanoBaliečiųBamumB" + "assa Vahbatakbengalų„Bliss“ simboliaibopomofobrahmibrailiobuginezųbuhidč" + "akmasuvienodinti Kanados aborigenų silabiniaikariųčamčerokiųkirtkoptųkip" + "rokirilicasenoji bažnytinė slavų kirilicadevanagarideseretasDuplojė sten" + "ografijaEgipto liaudiesEgipto žyniųegipto hieroglifaiElbasanoetiopųgruzi" + - "nų kutsurigruzinųglagolitikgotųGrantagraikųgudžaratųgurmukihangulhanhanu" + - "nosupaprastinti hantradiciniai hanhebrajųhiraganaAnatolijaus hieroglifai" + - "pahav hmongkatakana / hiraganasenasis vengrųindussenasis italųjaviečiųja" + - "ponųJurchenkajah likatakanakaroštikhmerųKhojkikanadųkorėjiečiųKpelųkaith" + - "ilanalaosiečiųfraktur lotynųgėlų lotynųlotynųlepčalimbulinijiniai Alinij" + - "iniai BFraserLomalicianlidianMahadžanimandėjųmaničųmalų hieroglifaiMende" + - "Merojitų rankraštinismeroitikmalajaliųModimongolųmūnMromeitei majekbirmi" + - "ečiųSenasis šiaurės arabųNabatėjųNaxi GebaenkoNüshuoghamol čikiorkonorij" + - "ųosmanųPalmirosPau Cin Hausenieji permėspagsa parašytiniai pahlavipselt" + - "er pahlavibuk pahvalifoenikųpolard fonetinėrašytiniai partųrejangrongoro" + - "ngorunųsamariečiųsaratisenoji pietų Arabijossauraštraženklų raštasšaviųŠ" + - "aradosSiddhamKhudawadisinhalųSora Sompengsundųsyloti nagrisirųestrangelo" + - " siriečiųvakarų sirųrytų sirųtagbanvaTakritai lenaujasis Tailando luetam" + - "ilųTanguttai vettelugųtengvartifinagtagalogųhanatajųtibetiečiųTirhutauga" + - "ritikvaimatoma kalbaVarang KshitiWoleaisenieji persųŠumero Akado dantira" + - "štisjipaveldėtasmatematiniai simboliaisimboliųneparašytabendrinežinomi " + - "rašmenys" - -var ltScriptIdx = []uint16{ // 169 elements + "nų kutsurigruzinųglagolitikgotųGrantagraikųgudžaratųgurmukihanbųhangulha" + + "nhanunosupaprastinti hantradiciniai hanhebrajųhiraganaAnatolijaus hierog" + + "lifaipahav hmongkatakana / hiraganasenasis vengrųindussenasis italųJamo " + + "simboliaijaviečiųjaponųJurchenkajah likatakanakaroštikhmerųKhojkikanadųk" + + "orėjiečiųKpelųkaithilanalaosiečiųfraktur lotynųgėlų lotynųlotynųlepčalim" + + "bulinijiniai Alinijiniai BFraserLomalicianlidianMahadžanimandėjųmaničųma" + + "lų hieroglifaiMendeMerojitų rankraštinismeroitikmalajaliųModimongolųmūnM" + + "romeitei majekbirmiečiųSenasis šiaurės arabųNabatėjųNaxi GebaenkoNüshuog" + + "hamol čikiorkonorijųosmanųPalmirosPau Cin Hausenieji permėspagsa parašyt" + + "iniai pahlavipselter pahlavibuk pahvalifoenikųpolard fonetinėrašytiniai " + + "partųrejangrongorongorunųsamariečiųsaratisenoji pietų Arabijossauraštraž" + + "enklų raštasšaviųŠaradosSiddhamKhudawadisinhalųSora Sompengsundųsyloti n" + + "agrisirųestrangelo siriečiųvakarų sirųrytų sirųtagbanvaTakritai lenaujas" + + "is Tailando luetamilųTanguttai vettelugųtengvartifinagtagalogųhanatajųti" + + "betiečiųTirhutaugaritikvaimatoma kalbaVarang KshitiWoleaisenieji persųŠu" + + "mero Akado dantiraštisjipaveldėtasmatematiniai simboliaijaustukaisimboli" + + "ųneparašytabendrinežinomi rašmenys" + +var ltScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0016, 0x0016, 0x001c, 0x002f, 0x0037, 0x003f, - 0x0049, 0x004e, 0x0057, 0x005c, 0x0064, 0x0079, 0x0081, 0x0087, - 0x008e, 0x0097, 0x009c, 0x00a2, 0x00cc, 0x00d2, 0x00d6, 0x00df, - 0x00e3, 0x00e9, 0x00ee, 0x00f6, 0x0118, 0x0122, 0x012b, 0x0140, - 0x014f, 0x015d, 0x016f, 0x0177, 0x017e, 0x018e, 0x0196, 0x01a0, - 0x01a5, 0x01ab, 0x01b2, 0x01bd, 0x01c4, 0x01ca, 0x01cd, 0x01d3, - 0x01e4, 0x01f3, 0x01f3, 0x01fb, 0x0203, 0x021a, 0x0225, 0x0238, - 0x0247, 0x024c, 0x025a, 0x0264, 0x026b, 0x0272, 0x027a, 0x0282, + 0x0000, 0x0000, 0x0005, 0x0016, 0x0016, 0x001c, 0x002f, 0x0037, + 0x003f, 0x0049, 0x004e, 0x0057, 0x005c, 0x0064, 0x0064, 0x0079, + 0x0081, 0x0087, 0x008e, 0x0097, 0x009c, 0x00a2, 0x00cc, 0x00d2, + 0x00d6, 0x00df, 0x00e3, 0x00e9, 0x00ee, 0x00f6, 0x0118, 0x0122, + 0x012b, 0x0140, 0x014f, 0x015d, 0x016f, 0x0177, 0x017e, 0x018e, + 0x0196, 0x01a0, 0x01a5, 0x01ab, 0x01b2, 0x01bd, 0x01c4, 0x01ca, + 0x01d0, 0x01d3, 0x01d9, 0x01ea, 0x01f9, 0x01f9, 0x0201, 0x0209, + 0x0220, 0x022b, 0x023e, 0x024d, 0x0252, 0x0260, 0x026e, 0x0278, // Entry 40 - 7F - 0x028a, 0x0291, 0x0297, 0x029e, 0x02ab, 0x02b1, 0x02b7, 0x02bb, - 0x02c6, 0x02d5, 0x02e3, 0x02ea, 0x02f0, 0x02f5, 0x0301, 0x030d, - 0x0313, 0x0317, 0x031d, 0x0323, 0x032d, 0x0336, 0x033e, 0x034f, - 0x0354, 0x036b, 0x0373, 0x037d, 0x0381, 0x0389, 0x038d, 0x0390, - 0x039c, 0x039c, 0x03a7, 0x03bf, 0x03c9, 0x03d2, 0x03d6, 0x03dc, - 0x03e1, 0x03e9, 0x03ee, 0x03f4, 0x03fb, 0x0403, 0x040e, 0x041d, - 0x0425, 0x0438, 0x0447, 0x0452, 0x045a, 0x046a, 0x047c, 0x0482, - 0x048c, 0x0491, 0x049d, 0x04a3, 0x04b9, 0x04c3, 0x04d3, 0x04da, + 0x027f, 0x0286, 0x028e, 0x0296, 0x029e, 0x02a5, 0x02ab, 0x02b2, + 0x02bf, 0x02c5, 0x02cb, 0x02cf, 0x02da, 0x02e9, 0x02f7, 0x02fe, + 0x0304, 0x0309, 0x0315, 0x0321, 0x0327, 0x032b, 0x0331, 0x0337, + 0x0341, 0x034a, 0x0352, 0x0352, 0x0363, 0x0368, 0x037f, 0x0387, + 0x0391, 0x0395, 0x039d, 0x03a1, 0x03a4, 0x03b0, 0x03b0, 0x03bb, + 0x03d3, 0x03dd, 0x03dd, 0x03e6, 0x03ea, 0x03f0, 0x03f5, 0x03fd, + 0x0402, 0x0408, 0x0408, 0x040f, 0x0417, 0x0422, 0x0431, 0x0439, + 0x044c, 0x045b, 0x0466, 0x046e, 0x047e, 0x0490, 0x0496, 0x04a0, // Entry 80 - BF - 0x04e2, 0x04e9, 0x04f2, 0x04fa, 0x0506, 0x050c, 0x0518, 0x051d, - 0x0532, 0x053f, 0x054a, 0x0552, 0x0557, 0x055d, 0x0572, 0x0579, - 0x057f, 0x0586, 0x058d, 0x0594, 0x059b, 0x05a4, 0x05a8, 0x05ad, - 0x05b9, 0x05c0, 0x05c8, 0x05cb, 0x05d7, 0x05e4, 0x05ea, 0x05f8, - 0x0612, 0x0614, 0x061f, 0x0635, 0x0635, 0x063e, 0x0649, 0x064f, - 0x0662, -} // Size: 362 bytes - -var lvScriptStr string = "" + // Size: 761 bytes + 0x04a5, 0x04b1, 0x04b7, 0x04cd, 0x04d7, 0x04e7, 0x04ee, 0x04f6, + 0x04fd, 0x0506, 0x050e, 0x051a, 0x0520, 0x052c, 0x0531, 0x0546, + 0x0553, 0x055e, 0x0566, 0x056b, 0x0571, 0x0586, 0x058d, 0x0593, + 0x059a, 0x05a1, 0x05a8, 0x05af, 0x05b8, 0x05bc, 0x05c1, 0x05cd, + 0x05d4, 0x05dc, 0x05df, 0x05eb, 0x05f8, 0x05fe, 0x060c, 0x0626, + 0x0628, 0x0633, 0x0649, 0x0652, 0x065b, 0x0666, 0x066c, 0x067f, +} // Size: 376 bytes + +const lvScriptStr string = "" + // Size: 794 bytes "arābuaramiešuarmēņubaliešubengāļubopomofobrahmiBraila rakstsirokēzukoptu" + "kirilicasenslāvudevānagāridemotiskais rakstshierātiskais rakstsēģiptiešu" + - " hieroglifietiopiešugruzīnugotugrieķugudžaratupandžabuhangilaķīniešuhanu" + - " vienkāršotāhanu tradicionālāivritshiraganakatakana vai hiraganasenungār" + - "uvecitāļujaviešujapāņukatakanakhmerukannarukorejiešulaosiešulatīņulineār" + - "ā Alineārā BlīdiešumaijumalajalumongoļuMūna rakstsbirmiešuogamiskais ra" + - "kstsorijuosmaņu turkufeniķiešurongorongorūnu rakstssamariešusingāļuzundu" + - "sīriešurietumsīriešuaustrumsīriešutamilutelugutagalutaanatajutibetiešuse" + - "nperiešušumeru-akadiešu ķīļrakstsjimantotāmatemātiskais pierakstssimboli" + - "bez rakstībasvispārējānezināma rakstība" - -var lvScriptIdx = []uint16{ // 169 elements + " hieroglifietiopiešugruzīnugotugrieķugudžaratupandžabuķīniešu hanbhangil" + + "aķīniešuhanu vienkāršotāhanu tradicionālāivritshiraganakatakana vai hira" + + "ganasenungāruvecitāļudžamojaviešujapāņukatakanakhmerukannadukorejiešulao" + + "siešulatīņulineārā Alineārā BlīdiešumaijumalajalumongoļuMūna rakstsbirmi" + + "ešuogamiskais rakstsorijuosmaņu turkufeniķiešurongorongorūnu rakstssamar" + + "iešusingāļuzundusīriešurietumsīriešuaustrumsīriešutamilutelugutagalutaan" + + "atajutibetiešusenperiešušumeru-akadiešu ķīļrakstsjimantotāmatemātiskais " + + "pierakstsemocijzīmessimbolibez rakstībasvispārējānezināma rakstība" + +var lvScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000f, 0x0017, 0x0017, - 0x001f, 0x001f, 0x001f, 0x001f, 0x0028, 0x0028, 0x0030, 0x0036, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, - 0x004b, 0x0050, 0x0050, 0x0058, 0x0061, 0x006d, 0x006d, 0x006d, - 0x007f, 0x0093, 0x00aa, 0x00aa, 0x00b4, 0x00b4, 0x00bc, 0x00bc, - 0x00c0, 0x00c0, 0x00c7, 0x00d1, 0x00da, 0x00e1, 0x00eb, 0x00eb, - 0x00fe, 0x0111, 0x0111, 0x0117, 0x011f, 0x011f, 0x011f, 0x0134, - 0x013e, 0x013e, 0x0148, 0x0150, 0x0158, 0x0158, 0x0158, 0x0160, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000f, 0x0017, + 0x0017, 0x001f, 0x001f, 0x001f, 0x001f, 0x0028, 0x0028, 0x0028, + 0x0030, 0x0036, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0043, 0x004b, 0x004b, 0x0050, 0x0050, 0x0058, 0x0061, 0x006d, + 0x006d, 0x006d, 0x007f, 0x0093, 0x00aa, 0x00aa, 0x00b4, 0x00b4, + 0x00bc, 0x00bc, 0x00c0, 0x00c0, 0x00c7, 0x00d1, 0x00da, 0x00e9, + 0x00f0, 0x00fa, 0x00fa, 0x010d, 0x0120, 0x0120, 0x0126, 0x012e, + 0x012e, 0x012e, 0x0143, 0x014d, 0x014d, 0x0157, 0x015d, 0x0165, // Entry 40 - 7F - 0x0160, 0x0166, 0x0166, 0x016d, 0x0177, 0x0177, 0x0177, 0x0177, - 0x0180, 0x0180, 0x0180, 0x0188, 0x0188, 0x0188, 0x0193, 0x019e, - 0x019e, 0x019e, 0x019e, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01ac, - 0x01ac, 0x01ac, 0x01ac, 0x01b4, 0x01b4, 0x01bc, 0x01c8, 0x01c8, - 0x01c8, 0x01c8, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, - 0x01e2, 0x01e2, 0x01e2, 0x01e7, 0x01f4, 0x01f4, 0x01f4, 0x01f4, - 0x01f4, 0x01f4, 0x01f4, 0x01f4, 0x01ff, 0x01ff, 0x01ff, 0x01ff, - 0x0209, 0x0215, 0x021f, 0x021f, 0x021f, 0x021f, 0x021f, 0x021f, + 0x016d, 0x016d, 0x016d, 0x0175, 0x0175, 0x017b, 0x017b, 0x0182, + 0x018c, 0x018c, 0x018c, 0x018c, 0x0195, 0x0195, 0x0195, 0x019d, + 0x019d, 0x019d, 0x01a8, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01bc, + 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c1, 0x01c1, 0x01c1, 0x01c1, + 0x01c9, 0x01c9, 0x01d1, 0x01dd, 0x01dd, 0x01dd, 0x01dd, 0x01e6, + 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f7, 0x01f7, + 0x01f7, 0x01fc, 0x01fc, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, + 0x0209, 0x0209, 0x0209, 0x0214, 0x0214, 0x0214, 0x0214, 0x021e, // Entry 80 - BF - 0x021f, 0x021f, 0x021f, 0x0228, 0x0228, 0x022d, 0x022d, 0x0236, - 0x0236, 0x0245, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x025b, - 0x025b, 0x025b, 0x0261, 0x0261, 0x0261, 0x0267, 0x026c, 0x0270, - 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x0285, - 0x02a3, 0x02a5, 0x02ad, 0x02c5, 0x02c5, 0x02cc, 0x02da, 0x02e6, - 0x02f9, -} // Size: 362 bytes - -var mkScriptStr string = "" + // Size: 3505 bytes + 0x022a, 0x0234, 0x0234, 0x0234, 0x0234, 0x0234, 0x0234, 0x0234, + 0x0234, 0x0234, 0x023d, 0x023d, 0x0242, 0x0242, 0x024b, 0x024b, + 0x025a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0270, 0x0270, + 0x0270, 0x0276, 0x0276, 0x0276, 0x027c, 0x0281, 0x0285, 0x028f, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x029a, 0x02b8, + 0x02ba, 0x02c2, 0x02da, 0x02e6, 0x02ed, 0x02fb, 0x0307, 0x031a, +} // Size: 376 bytes + +const mkScriptStr string = "" + // Size: 3531 bytes "афакакавкаскоалбанскиарапско писмоцарскоарамејскиерменско писмоавестанск" + "обалискобамумскобасабатачкобенгалско писмоблиссимболибопомофобрамибрајо" + "во писмобугискобухидскочакманскоканадско слоговнокарискочамскочерокиско" + "кирткоптскокипарскокирилско писмостарословенска кирилицадеванагаридезер" + "етскоДиплојеево стенографскоегипетско демотскоегипетско хиератскоегипет" + "ски хиероглифиелбасанскоетиопско писмогрузиски хуцуригрузиско писмоглаг" + - "олицаготскогрантагрчко писмогуџаратигурмукихангулханско писмохануноовск" + - "опоедноставено ханско писмотрадиционално ханскохебрејско писмохираганаа" + - "надолски хиероглифипахауанско хмоншкојапонско слоговностароунгарскохара" + - "пскостароиталскојаванскојапонско писмоџурченскокаја ликатаканакароштикм" + - "ерско писмохоџкиканнадакорејско писмокпелскокајтилансколаошко писмофрак" + - "турна латиницагелска латиницалатинично писмолепчансколимбулинеарно Алин" + - "еарно БФрејзероволомсколикисколидискомахаџанимандејскоманихејскомајанск" + - "и хиероглифимендскомероитско ракописномероитскомалајаламско писмомодимо" + - "нголско писмоМуновомромејтејскомјанмарско писмостаросеверноарапсконабат" + - "ејсконасиска гебанконишуогамол чикистаротурскооријанско писмосомалископ" + - "алмирскоПаучинхауовостаропермскопагспанатписно средноперсископсалтирско" + - " средноперсискокнижевно староперсискофеникискоПолардовонатписно партиско" + - "реџаншкоронгоронгорунскосамарјанскосаратистаројужноарапскосаураштранско" + - "знаковно пишувањеШоовошарадасидамкудабадисинхалско писмосоранг сомпенгс" + - "унданскосилхетско нагарисирискоестрангелско сирискозападносирискоисточн" + - "осирискотагбанванскотакритај леново тај луетамилско писмотангутскотај в" + - "јеттелугутенгвартифинагтагалошкотанатајландско писмотибетско писмотирху" + - "таугаритсковајвидлив говорваранг кшитиволеајскостароперсискосумероакадс" + - "ко клинестојинаследеноматематичка нотацијасимболибез писмоопштонепознат" + - "о писмо" - -var mkScriptIdx = []uint16{ // 169 elements + "олицаготскогрантагрчко писмогуџаратигурмукиханбхангулханско писмохануно" + + "овскопоедноставено ханско писмотрадиционално ханскохебрејско писмохираг" + + "анаанадолски хиероглифипахауанско хмоншкојапонско слоговностароунгарско" + + "харапскостароиталскоџамојаванскојапонско писмоџурченскокаја ликатаканак" + + "ароштикмерско писмохоџкиканнадакорејско писмокпелскокајтилансколаошко п" + + "исмофрактурна латиницагелска латиницалатинично писмолепчансколимбулинеа" + + "рно Алинеарно БФрејзероволомсколикисколидискомахаџанимандејскоманихејск" + + "омајански хиероглифимендскомероитско ракописномероитскомалајаламско пис" + + "момодимонголско писмоМуновомромејтејскомјанмарско писмостаросеверноарап" + + "сконабатејсконасиска гебанконишуогамол чикистаротурскооријанско писмосо" + + "малископалмирскоПаучинхауовостаропермскопагспанатписно средноперсископс" + + "алтирско средноперсискокнижевно староперсискофеникискоПолардовонатписно" + + " партискореџаншкоронгоронгорунскосамарјанскосаратистаројужноарапскосаура" + + "штранскознаковно пишувањеШоовошарадасидамкудабадисинхалско писмосоранг " + + "сомпенгсунданскосилхетско нагарисирискоестрангелско сирискозападносирис" + + "коисточносирискотагбанванскотакритај леново тај луетамилско писмотангут" + + "скотај вјеттелугутенгвартифинагтагалошкотанатајландско писмотибетско пи" + + "смотирхутаугаритсковајвидлив говорваранг кшитиволеајскостароперсискосум" + + "ероакадско клинестојинаследеноматематичка нотацијаемоџисимболибез писмо" + + "општонепознато писмо" + +var mkScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000a, 0x002a, 0x002a, 0x0043, 0x0061, 0x007c, 0x0090, - 0x009e, 0x00ae, 0x00b6, 0x00c4, 0x00e1, 0x00f7, 0x0107, 0x0111, - 0x012a, 0x0138, 0x0148, 0x015a, 0x017b, 0x0189, 0x0195, 0x01a7, - 0x01af, 0x01bd, 0x01cd, 0x01e8, 0x0215, 0x0229, 0x023d, 0x026a, - 0x028d, 0x02b2, 0x02d9, 0x02ed, 0x0308, 0x0325, 0x0340, 0x0352, - 0x035e, 0x036a, 0x037f, 0x038f, 0x039d, 0x03a9, 0x03c0, 0x03d6, - 0x0408, 0x042f, 0x042f, 0x044c, 0x045c, 0x0483, 0x04a6, 0x04c7, - 0x04e1, 0x04f1, 0x0509, 0x0519, 0x0534, 0x0546, 0x0553, 0x0563, + 0x0000, 0x0000, 0x000a, 0x002a, 0x002a, 0x0043, 0x0061, 0x007c, + 0x0090, 0x009e, 0x00ae, 0x00b6, 0x00c4, 0x00e1, 0x00e1, 0x00f7, + 0x0107, 0x0111, 0x012a, 0x0138, 0x0148, 0x015a, 0x017b, 0x0189, + 0x0195, 0x01a7, 0x01af, 0x01bd, 0x01cd, 0x01e8, 0x0215, 0x0229, + 0x023d, 0x026a, 0x028d, 0x02b2, 0x02d9, 0x02ed, 0x0308, 0x0325, + 0x0340, 0x0352, 0x035e, 0x036a, 0x037f, 0x038f, 0x039d, 0x03a5, + 0x03b1, 0x03c8, 0x03de, 0x0410, 0x0437, 0x0437, 0x0454, 0x0464, + 0x048b, 0x04ae, 0x04cf, 0x04e9, 0x04f9, 0x0511, 0x0519, 0x0529, // Entry 40 - 7F - 0x0571, 0x058a, 0x0594, 0x05a2, 0x05bd, 0x05cb, 0x05d5, 0x05e1, - 0x05f8, 0x061b, 0x0638, 0x0655, 0x0667, 0x0671, 0x0684, 0x0697, - 0x06ab, 0x06b7, 0x06c5, 0x06d3, 0x06e3, 0x06f5, 0x0709, 0x072e, - 0x073c, 0x0761, 0x0773, 0x0796, 0x079e, 0x07bb, 0x07c7, 0x07cd, - 0x07df, 0x07df, 0x07fe, 0x0824, 0x0838, 0x084f, 0x0855, 0x085d, - 0x0865, 0x0872, 0x0888, 0x08a5, 0x08b7, 0x08c9, 0x08e1, 0x08f9, - 0x0905, 0x0932, 0x0963, 0x098e, 0x09a0, 0x09b2, 0x09d3, 0x09e3, - 0x09f7, 0x0a03, 0x0a19, 0x0a25, 0x0a47, 0x0a61, 0x0a82, 0x0a8c, + 0x0544, 0x0556, 0x0563, 0x0573, 0x0581, 0x059a, 0x05a4, 0x05b2, + 0x05cd, 0x05db, 0x05e5, 0x05f1, 0x0608, 0x062b, 0x0648, 0x0665, + 0x0677, 0x0681, 0x0694, 0x06a7, 0x06bb, 0x06c7, 0x06d5, 0x06e3, + 0x06f3, 0x0705, 0x0719, 0x0719, 0x073e, 0x074c, 0x0771, 0x0783, + 0x07a6, 0x07ae, 0x07cb, 0x07d7, 0x07dd, 0x07ef, 0x07ef, 0x080e, + 0x0834, 0x0848, 0x0848, 0x085f, 0x0865, 0x086d, 0x0875, 0x0882, + 0x0898, 0x08b5, 0x08b5, 0x08c7, 0x08d9, 0x08f1, 0x0909, 0x0915, + 0x0942, 0x0973, 0x099e, 0x09b0, 0x09c2, 0x09e3, 0x09f3, 0x0a07, // Entry 80 - BF - 0x0a98, 0x0aa2, 0x0ab2, 0x0acf, 0x0aea, 0x0afc, 0x0b1b, 0x0b29, - 0x0b50, 0x0b6c, 0x0b88, 0x0ba0, 0x0baa, 0x0bb5, 0x0bcb, 0x0be6, - 0x0bf8, 0x0c07, 0x0c13, 0x0c21, 0x0c2f, 0x0c41, 0x0c49, 0x0c68, - 0x0c83, 0x0c91, 0x0ca3, 0x0ca9, 0x0cc0, 0x0cd7, 0x0ce9, 0x0d03, - 0x0d2e, 0x0d32, 0x0d44, 0x0d6b, 0x0d6b, 0x0d79, 0x0d8a, 0x0d94, - 0x0db1, -} // Size: 362 bytes - -var mlScriptStr string = "" + // Size: 3465 bytes + 0x0a13, 0x0a29, 0x0a35, 0x0a57, 0x0a71, 0x0a92, 0x0a9c, 0x0aa8, + 0x0ab2, 0x0ac2, 0x0adf, 0x0afa, 0x0b0c, 0x0b2b, 0x0b39, 0x0b60, + 0x0b7c, 0x0b98, 0x0bb0, 0x0bba, 0x0bc5, 0x0bdb, 0x0bf6, 0x0c08, + 0x0c17, 0x0c23, 0x0c31, 0x0c3f, 0x0c51, 0x0c59, 0x0c78, 0x0c93, + 0x0ca1, 0x0cb3, 0x0cb9, 0x0cd0, 0x0ce7, 0x0cf9, 0x0d13, 0x0d3e, + 0x0d42, 0x0d54, 0x0d7b, 0x0d85, 0x0d93, 0x0da4, 0x0dae, 0x0dcb, +} // Size: 376 bytes + +const mlScriptStr string = "" + // Size: 3513 bytes "അറബിക്അർമിഅർമേനിയൻഅവെസ്ഥൻബാലിനീസ്ബട്ടക്ബംഗാളിബ്ലിസ് ചിത്ര ലിപിബോപ്പോമോഫോ" + "ബ്രാഹ്മിബ്രെയ്\u200cലിബുഗിനീസ്ബുഹിഡ്ചകംഏകീകൃത കനേഡിയൻ ഗോത്രലിപിചരിയൻഛം" + "ചെറോക്കിചിർത്ത്കോപ്റ്റിക്സൈപ്രിയോട്ട്സിറിലിക്പുരാതന ചർച്ച് സ്ലവോണിക് സ" + "ിറിലിക്ദേവനാഗരിഡെസെർട്ട്ഈജിപ്ഷ്യൻ ഡിമോട്ടിക്ഈജിപ്ഷ്യൻ ഹിരാറ്റിക്ഈജിപ്ഷ" + "്യൻ ചിത്രലിപിഎത്യോപിക്ജോർജ്ജിയൻ ഖുട്സുരിജോർജ്ജിയൻഗ്ലഗോലിറ്റിക്ഗോഥിക്ഗ്" + - "രീക്ക്ഗുജറാത്തിഗുരുമുഖിഹാംഗുൽഹാൻഹനുനൂലളിതവൽക്കരിച്ച ഹാൻപരമ്പരാഗത ഹാൻഹീ" + - "ബ്രുഹിരഗാനപഹ്വാ ഹമോംഗ്കടകാനയോ ഹിരാഗാനയോപുരാതന ഹംഗേറിയൻസിന്ധുപഴയ ഇറ്റാല" + - "ിയൻജാവനീസ്ജാപ്പനീസ്കയാ ലികറ്റക്കാനഖരോഷ്ടിഖമെർകന്നഡകൊറിയൻക്തിലന്നലാവോഫ്" + - "രാക്ടുർ ലാറ്റിൻഗെയ്\u200cലിക് ലാറ്റിൻലാറ്റിൻലെപ്ചലിംബുസമരേഖയിലുള്ള എലീ" + - "നിയർ ബിലൈസിൻലൈഡിയൻമൻഡേയൻമണിചേയൻമായൻ ചിത്രലിപിമെറോയിറ്റിക്മലയാളംമംഗോളിയ" + - "ൻമൂൺമേറ്റി മായക്മ്യാൻമാർഎൻകോഒഖാംഒൽ ചിക്കിഒർഖോൺഒഡിയഒസ്\u200cമാനിയപുരാതന" + - " പെർമിക്ഫഗസ് പഎഴുത്തു പഹൽവിസാൾട്ടർ പഹൽവിപഹൽവി ലിപിഫിനീഷ്യൻപൊള്ളാർഡ് ശബ്ദ" + - "ലിപിപൃതിറെജാംഗ്റൊംഗോറൊംഗോറുണിക്സമരിയസരതിസൗരാഷ്ട്രചിഹ്നലിപിഷാവിയൻസിംഹളസ" + - "ന്താനീസ്സൈലോതി നാഗരിസിറിയക്ക്എസ്റ്റ്രാംഗ്ലോ സിറിയക്പശ്ചിമസുറിയാനികിഴക്" + - "കൻ സിറിയക്തഗ്ബൻവാതായ് ലേപുതിയ തായ് ല്യൂതമിഴ്ത്വട്തെലുങ്ക്തെംഗ്വർതിഫിനാ" + - "ഗ്തഗലോഗ്ഥാനതായ്ടിബറ്റൻഉഗ്രൈറ്റിക്വൈദൃശ്യഭാഷപഴയ പേർഷ്യൻസുമേറോ അക്കാഡിയൻ" + - " ക്യുണിഫോംയിപാരമ്പര്യമായഗണിത രൂപംചിഹ്നങ്ങൾഎഴുതപ്പെടാത്തത്സാധാരണഅജ്ഞാത ലി" + - "പി" - -var mlScriptIdx = []uint16{ // 169 elements + "രീക്ക്ഗുജറാത്തിഗുരുമുഖിഹൻബ്ഹാംഗുൽഹാൻഹനുനൂലളിതവൽക്കരിച്ച ഹാൻപരമ്പരാഗത ഹ" + + "ാൻഹീബ്രുഹിരഗാനപഹ്വാ ഹമോംഗ്ജാപ്പനീസ് സില്ലബറീസ്പുരാതന ഹംഗേറിയൻസിന്ധുപഴയ" + + " ഇറ്റാലിയൻജാമോജാവനീസ്ജാപ്പനീസ്കയാ ലികറ്റക്കാനഖരോഷ്ടിഖമെർകന്നഡകൊറിയൻക്തില" + + "ന്നലാവോഫ്രാക്ടുർ ലാറ്റിൻഗെയ്\u200cലിക് ലാറ്റിൻലാറ്റിൻലെപ്ചലിംബുസമരേഖയി" + + "ലുള്ള എലീനിയർ ബിലൈസിൻലൈഡിയൻമൻഡേയൻമണിചേയൻമായൻ ചിത്രലിപിമെറോയിറ്റിക്മലയാ" + + "ളംമംഗോളിയൻമൂൺമേറ്റി മായക്മ്യാൻമാർഎൻകോഒഖാംഒൽ ചിക്കിഒർഖോൺഒഡിയഒസ്\u200cമാ" + + "നിയപുരാതന പെർമിക്ഫഗസ് പഎഴുത്തു പഹൽവിസാൾട്ടർ പഹൽവിപഹൽവി ലിപിഫിനീഷ്യൻപൊള" + + "്ളാർഡ് ശബ്ദലിപിപൃതിറെജാംഗ്റൊംഗോറൊംഗോറുണിക്സമരിയസരതിസൗരാഷ്ട്രചിഹ്നലിപിഷ" + + "ാവിയൻസിംഹളസന്താനീസ്സൈലോതി നാഗരിസിറിയക്ക്എസ്റ്റ്രാംഗ്ലോ സിറിയക്പശ്ചിമസു" + + "റിയാനികിഴക്കൻ സിറിയക്തഗ്ബൻവാതായ് ലേപുതിയ തായ് ല്യൂതമിഴ്ത്വട്തെലുങ്ക്തെ" + + "ംഗ്വർതിഫിനാഗ്തഗലോഗ്ഥാനതായ്ടിബറ്റൻഉഗ്രൈറ്റിക്വൈദൃശ്യഭാഷപഴയ പേർഷ്യൻസുമേറ" + + "ോ അക്കാഡിയൻ ക്യുണിഫോംയിപാരമ്പര്യമായഗണിത രൂപംഇമോജിചിഹ്നങ്ങൾഎഴുതപ്പെടാത്" + + "തത്സാധാരണഅജ്ഞാത ലിപി" + +var mlScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x001e, 0x0036, 0x004b, - 0x0063, 0x0063, 0x0063, 0x0075, 0x0087, 0x00b6, 0x00d4, 0x00ec, - 0x0107, 0x011f, 0x0131, 0x013a, 0x017e, 0x018d, 0x0193, 0x01ab, - 0x01c0, 0x01de, 0x0202, 0x021a, 0x0274, 0x028c, 0x02a7, 0x02a7, - 0x02e1, 0x031b, 0x0352, 0x0352, 0x036d, 0x03a1, 0x03bc, 0x03e3, - 0x03f5, 0x03f5, 0x040d, 0x0428, 0x0440, 0x0452, 0x045b, 0x046a, - 0x049e, 0x04c3, 0x04c3, 0x04d5, 0x04e7, 0x04e7, 0x0509, 0x053a, - 0x0565, 0x0577, 0x059c, 0x05b1, 0x05cc, 0x05cc, 0x05dc, 0x05f7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x001e, 0x0036, + 0x004b, 0x0063, 0x0063, 0x0063, 0x0075, 0x0087, 0x0087, 0x00b6, + 0x00d4, 0x00ec, 0x0107, 0x011f, 0x0131, 0x013a, 0x017e, 0x018d, + 0x0193, 0x01ab, 0x01c0, 0x01de, 0x0202, 0x021a, 0x0274, 0x028c, + 0x02a7, 0x02a7, 0x02e1, 0x031b, 0x0352, 0x0352, 0x036d, 0x03a1, + 0x03bc, 0x03e3, 0x03f5, 0x03f5, 0x040d, 0x0428, 0x0440, 0x044c, + 0x045e, 0x0467, 0x0476, 0x04aa, 0x04cf, 0x04cf, 0x04e1, 0x04f3, + 0x04f3, 0x0515, 0x054f, 0x057a, 0x058c, 0x05b1, 0x05bd, 0x05d2, // Entry 40 - 7F - 0x060c, 0x0618, 0x0618, 0x0627, 0x0639, 0x0639, 0x0645, 0x0651, - 0x065d, 0x068e, 0x06bf, 0x06d4, 0x06e3, 0x06f2, 0x071a, 0x0733, - 0x0733, 0x0733, 0x0742, 0x0754, 0x0754, 0x0766, 0x077b, 0x07a3, - 0x07a3, 0x07a3, 0x07c7, 0x07d9, 0x07d9, 0x07f1, 0x07fa, 0x07fa, - 0x081c, 0x081c, 0x0834, 0x0834, 0x0834, 0x0834, 0x0840, 0x0840, - 0x084c, 0x0865, 0x0874, 0x0880, 0x089b, 0x089b, 0x089b, 0x08c3, - 0x08d3, 0x08f8, 0x091d, 0x0939, 0x0951, 0x0985, 0x0991, 0x09a6, - 0x09c4, 0x09d6, 0x09e5, 0x09f1, 0x09f1, 0x0a0c, 0x0a27, 0x0a39, + 0x05ed, 0x05ed, 0x05fd, 0x0618, 0x062d, 0x0639, 0x0639, 0x0648, + 0x065a, 0x065a, 0x0666, 0x0672, 0x067e, 0x06af, 0x06e0, 0x06f5, + 0x0704, 0x0713, 0x073b, 0x0754, 0x0754, 0x0754, 0x0763, 0x0775, + 0x0775, 0x0787, 0x079c, 0x079c, 0x07c4, 0x07c4, 0x07c4, 0x07e8, + 0x07fa, 0x07fa, 0x0812, 0x081b, 0x081b, 0x083d, 0x083d, 0x0855, + 0x0855, 0x0855, 0x0855, 0x0855, 0x0861, 0x0861, 0x086d, 0x0886, + 0x0895, 0x08a1, 0x08a1, 0x08bc, 0x08bc, 0x08bc, 0x08e4, 0x08f4, + 0x0919, 0x093e, 0x095a, 0x0972, 0x09a6, 0x09b2, 0x09c7, 0x09e5, // Entry 80 - BF - 0x0a39, 0x0a39, 0x0a39, 0x0a48, 0x0a48, 0x0a63, 0x0a85, 0x0aa0, - 0x0ae0, 0x0b0a, 0x0b35, 0x0b4a, 0x0b4a, 0x0b5d, 0x0b86, 0x0b95, - 0x0b95, 0x0ba4, 0x0bbc, 0x0bd1, 0x0be9, 0x0bfb, 0x0c04, 0x0c10, - 0x0c25, 0x0c25, 0x0c46, 0x0c4c, 0x0c64, 0x0c64, 0x0c64, 0x0c83, - 0x0ccd, 0x0cd3, 0x0cf7, 0x0d10, 0x0d10, 0x0d2b, 0x0d58, 0x0d6a, - 0x0d89, -} // Size: 362 bytes - -var mnScriptStr string = "" + // Size: 532 bytes - "арабарменбенгалвопомофобрайлкирилдеванагариэтиопгүржгрекгүжаратигурмукхи" + - "хангулханхялбаршуулсан ханзуламжлалт ханзеврейхираганаяпонкатаканакхмер" + - "каннадасолонгослаослатинмалаяламмонгол бичигмьянмарориясинхалатамилтэлү" + - "гүтанатайтөвдтэмдэгбичигдээгүйнийтлэгтодорхойгүй бичиг" - -var mnScriptIdx = []uint16{ // 169 elements + 0x09f7, 0x0a06, 0x0a12, 0x0a12, 0x0a2d, 0x0a48, 0x0a5a, 0x0a5a, + 0x0a5a, 0x0a5a, 0x0a69, 0x0a69, 0x0a84, 0x0aa6, 0x0ac1, 0x0b01, + 0x0b2b, 0x0b56, 0x0b6b, 0x0b6b, 0x0b7e, 0x0ba7, 0x0bb6, 0x0bb6, + 0x0bc5, 0x0bdd, 0x0bf2, 0x0c0a, 0x0c1c, 0x0c25, 0x0c31, 0x0c46, + 0x0c46, 0x0c67, 0x0c6d, 0x0c85, 0x0c85, 0x0c85, 0x0ca4, 0x0cee, + 0x0cf4, 0x0d18, 0x0d31, 0x0d40, 0x0d5b, 0x0d88, 0x0d9a, 0x0db9, +} // Size: 376 bytes + +const mnScriptStr string = "" + // Size: 666 bytes + "арабарменибенгалвопомофобрайлкириллдеванагариэтиопгүржгрекгүжаратигурмук" + + "хиханбхангулханхялбаршуулсан ханзуламжлалт ханзеврейхираганаяпон хэлний" + + " үеийн цагаан толгойжамояпонкатаканакхмерканнадасолонгослаослатинмалаяла" + + "ммонгол бичигмьянмарориясинхалатамилтэлүгүтанатайтөвдматематик тооллын " + + "системэможитэмдэгбичигдээгүйнийтлэгтодорхойгүй бичиг" + +var mnScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0042, 0x0042, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0060, 0x0060, 0x0068, 0x0068, - 0x0068, 0x0068, 0x0070, 0x0080, 0x0090, 0x009c, 0x00a2, 0x00a2, - 0x00c5, 0x00e0, 0x00e0, 0x00ea, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0112, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x0020, 0x0020, + 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, + 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0084, 0x0094, 0x009c, + 0x00a8, 0x00ae, 0x00ae, 0x00d1, 0x00ec, 0x00ec, 0x00f6, 0x0106, + 0x0106, 0x0106, 0x0140, 0x0140, 0x0140, 0x0140, 0x0148, 0x0148, // Entry 40 - 7F - 0x0112, 0x011c, 0x011c, 0x012a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x0142, 0x0142, 0x0142, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, - 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, - 0x014c, 0x014c, 0x014c, 0x015c, 0x015c, 0x0173, 0x0173, 0x0173, - 0x0173, 0x0173, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x0181, 0x0181, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, + 0x0150, 0x0150, 0x0150, 0x0160, 0x0160, 0x016a, 0x016a, 0x0178, + 0x0188, 0x0188, 0x0188, 0x0188, 0x0190, 0x0190, 0x0190, 0x019a, + 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, + 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, + 0x01aa, 0x01aa, 0x01c1, 0x01c1, 0x01c1, 0x01c1, 0x01c1, 0x01cf, + 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, + 0x01cf, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, + 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, // Entry 80 - BF - 0x0189, 0x0189, 0x0189, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, - 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x01a1, - 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b5, 0x01bb, - 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, - 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01cf, 0x01e5, 0x01f3, - 0x0214, -} // Size: 362 bytes - -var mrScriptStr string = "" + // Size: 3386 bytes + 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, + 0x01d7, 0x01d7, 0x01e5, 0x01e5, 0x01e5, 0x01e5, 0x01e5, 0x01e5, + 0x01e5, 0x01e5, 0x01e5, 0x01e5, 0x01e5, 0x01e5, 0x01ef, 0x01ef, + 0x01ef, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0203, 0x0209, 0x0211, + 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, + 0x0211, 0x0211, 0x023f, 0x0249, 0x0255, 0x026b, 0x0279, 0x029a, +} // Size: 376 bytes + +const mrScriptStr string = "" + // Size: 3418 bytes "अरबीइम्पिरियल आर्मेनिकअर्मेनियनअवेस्तानबालीबटाकबंगालीब्लिसिम्बॉल्सबोपोमो" + "फोब्रह्मीब्रेलबूगीबुहिदचकमायूनिफाइड कॅनेडियन अ\u200dॅबोरिदनल सिलॅबिक्स" + "कॅरियनचामचेरोकीकिर्थकॉप्टिकसायप्रिऑटसीरिलिकपुरातन चर्च स्लाव्होनिक सिर" + "िलिकदेवनागरीडेसर्टइजिप्शियन डेमोटिकइजिप्शियन हायरेटिकइजिप्शियन हायरोग्" + "लिफ्सईथिओपिकजॉर्जियन खुत्सुरीजॉर्जियनग्लॅगोलिटिकगोथिकग्रीकगुजरातीगुरुम" + - "ुखीहंगुलहानहनुनूसरलीकृत हानपारंपारिक हानहिब्रूहिरागानापहाउ मंगकॅटाकना " + - "आणि हिरागानापुरातन हंगेरियनसिन्धुजुनी इटालिकजावानीसजपानीकायाह लीकॅटाका" + - "नाखारोश्थीख्मेरकन्नडकोरियनकाइथीलानालाओफ्रॅक्तुर लॅटिनगाएलिक लेटिनलॅटिन" + - "लेपचालिम्बूलीनियार अलीनियर बीलायशियानलायडियानमान्डायीनमानीचायीनमायान ह" + - "ाइरोग्लिफ्समेरोइटिकमल्याळममंगोलियनमूनमेइतेइ मायेकम्यानमारएन्‘कोओघामओल " + - "चिकिओर्खोनउडियाउस्मानियापुरातन पर्मिकफाग्स-पाइन्स्क्रिप्शनल पाहलवीसॉल्" + - "टर पाहलवीबुक पाहलवीफोनिशियनपोलार्ड फोनेटिकइन्स्क्रिप्शनल पर्थियनरीजांग" + - "रोन्गोरोन्गोरूनिकसमरिटानसरातीसौराष्ट्रसंकेत लिपीशॅव्हियनसिंहलासूदानीसि" + - "लोती नागरीसिरीयाकएस्त्ट्रेन्जेलो सिरियाकपश्चिमी सिरियाकपूर्वी सिरियाकत" + - "गोआन्वाताई लीनवीन ताई लूतामिळताई विएततेलगुतेन्गवारतिफिनाघटागालोगथानाथा" + - "ईतिबेटीयुगारिटिकवाईदृश्य संवादपुरातन फारसीदृश्यमान भाषायीवंशपरंपरागतगण" + - "िती संकेतलिपीप्रतीकअलिखितसामान्यअज्ञात लिपी" - -var mrScriptIdx = []uint16{ // 169 elements + "ुखीहान्बहंगुलहानहनुनूसरलीकृत हानपारंपारिक हानहिब्रूहिरागानापहाउ मंगजाप" + + "ानी स्वरलिपीपुरातन हंगेरियनसिन्धुजुनी इटालिकजामोजावानीसजपानीकायाह लीकॅ" + + "टाकानाखारोश्थीख्मेरकन्नडकोरियनकाइथीलानालाओफ्रॅक्तुर लॅटिनगाएलिक लेटिनल" + + "ॅटिनलेपचालिम्बूलीनियार अलीनियर बीलायशियानलायडियानमान्डायीनमानीचायीनमाय" + + "ान हाइरोग्लिफ्समेरोइटिकमल्याळममंगोलियनमूनमेइतेइ मायेकम्यानमारएन्‘कोओघा" + + "मओल चिकिओर्खोनउडियाउस्मानियापुरातन पर्मिकफाग्स-पाइन्स्क्रिप्शनल पाहलवी" + + "सॉल्टर पाहलवीबुक पाहलवीफोनिशियनपोलार्ड फोनेटिकइन्स्क्रिप्शनल पर्थियनरी" + + "जांगरोन्गोरोन्गोरूनिकसमरिटानसरातीसौराष्ट्रसंकेत लिपीशॅव्हियनसिंहलासूदा" + + "नीसिलोती नागरीसिरीयाकएस्त्ट्रेन्जेलो सिरियाकपश्चिमी सिरियाकपूर्वी सिरि" + + "याकतगोआन्वाताई लीनवीन ताई लूतामिळताई विएततेलगुतेन्गवारतिफिनाघटागालोगथा" + + "नाथाईतिबेटीयुगारिटिकवाईदृश्य संवादपुरातन फारसीदृश्यमान भाषायीवंशपरंपरा" + + "गतगणितीय संकेतलिपीइमोजीप्रतीकअलिखितसामान्यअज्ञात लिपी" + +var mrScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005b, 0x0073, - 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x00c4, 0x00dc, 0x00f1, - 0x0100, 0x010c, 0x011b, 0x0127, 0x0193, 0x01a5, 0x01ae, 0x01c0, - 0x01cf, 0x01e4, 0x01ff, 0x0214, 0x026b, 0x0283, 0x0295, 0x0295, - 0x02c6, 0x02fa, 0x033a, 0x033a, 0x034f, 0x0380, 0x0398, 0x03b9, - 0x03c8, 0x03c8, 0x03d7, 0x03ec, 0x0404, 0x0413, 0x041c, 0x042b, - 0x044a, 0x046f, 0x046f, 0x0481, 0x0499, 0x0499, 0x04af, 0x04e7, - 0x0512, 0x0524, 0x0543, 0x0558, 0x0567, 0x0567, 0x057d, 0x0595, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005b, + 0x0073, 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x009d, 0x00c4, + 0x00dc, 0x00f1, 0x0100, 0x010c, 0x011b, 0x0127, 0x0193, 0x01a5, + 0x01ae, 0x01c0, 0x01cf, 0x01e4, 0x01ff, 0x0214, 0x026b, 0x0283, + 0x0295, 0x0295, 0x02c6, 0x02fa, 0x033a, 0x033a, 0x034f, 0x0380, + 0x0398, 0x03b9, 0x03c8, 0x03c8, 0x03d7, 0x03ec, 0x0404, 0x0413, + 0x0422, 0x042b, 0x043a, 0x0459, 0x047e, 0x047e, 0x0490, 0x04a8, + 0x04a8, 0x04be, 0x04e9, 0x0514, 0x0526, 0x0545, 0x0551, 0x0566, // Entry 40 - 7F - 0x05ad, 0x05bc, 0x05bc, 0x05cb, 0x05dd, 0x05dd, 0x05ec, 0x05f8, - 0x0601, 0x062c, 0x064e, 0x065d, 0x066c, 0x067e, 0x0697, 0x06b0, - 0x06b0, 0x06b0, 0x06c8, 0x06e0, 0x06e0, 0x06fb, 0x0716, 0x074a, - 0x074a, 0x074a, 0x0762, 0x0777, 0x0777, 0x078f, 0x0798, 0x0798, - 0x07ba, 0x07ba, 0x07d2, 0x07d2, 0x07d2, 0x07d2, 0x07e4, 0x07e4, - 0x07f0, 0x0803, 0x0815, 0x0824, 0x083f, 0x083f, 0x083f, 0x0864, - 0x087a, 0x08b7, 0x08dc, 0x08f8, 0x0910, 0x093b, 0x097b, 0x098d, - 0x09b1, 0x09c0, 0x09d5, 0x09e4, 0x09e4, 0x09ff, 0x0a1b, 0x0a33, + 0x0575, 0x0575, 0x058b, 0x05a3, 0x05bb, 0x05ca, 0x05ca, 0x05d9, + 0x05eb, 0x05eb, 0x05fa, 0x0606, 0x060f, 0x063a, 0x065c, 0x066b, + 0x067a, 0x068c, 0x06a5, 0x06be, 0x06be, 0x06be, 0x06d6, 0x06ee, + 0x06ee, 0x0709, 0x0724, 0x0724, 0x0758, 0x0758, 0x0758, 0x0770, + 0x0785, 0x0785, 0x079d, 0x07a6, 0x07a6, 0x07c8, 0x07c8, 0x07e0, + 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07f2, 0x07f2, 0x07fe, 0x0811, + 0x0823, 0x0832, 0x0832, 0x084d, 0x084d, 0x084d, 0x0872, 0x0888, + 0x08c5, 0x08ea, 0x0906, 0x091e, 0x0949, 0x0989, 0x099b, 0x09bf, // Entry 80 - BF - 0x0a33, 0x0a33, 0x0a33, 0x0a45, 0x0a45, 0x0a57, 0x0a79, 0x0a8e, - 0x0ad1, 0x0afc, 0x0b24, 0x0b3c, 0x0b3c, 0x0b4c, 0x0b69, 0x0b78, - 0x0b78, 0x0b8e, 0x0b9d, 0x0bb5, 0x0bca, 0x0bdf, 0x0beb, 0x0bf4, - 0x0c06, 0x0c06, 0x0c21, 0x0c2a, 0x0c49, 0x0c49, 0x0c49, 0x0c6b, - 0x0c90, 0x0c96, 0x0cb7, 0x0ce2, 0x0ce2, 0x0cf4, 0x0d06, 0x0d1b, - 0x0d3a, -} // Size: 362 bytes - -var msScriptStr string = "" + // Size: 289 bytes - "ArabArmeniaBaliBamuBengaliBopomofoBrailleCansCyrilDevanagariEthiopiaGeor" + - "giaGreekGujaratGurmukhiHangulHanHan RingkasHan TradisionalIbraniHiragana" + - "JepunKatakanaKhmerKannadaKoreaLaoLatinMalayalamMongoliaMyammarOriyaSinha" + - "laTamilTeluguThaanaThaiTibetSimbolTidak ditulisBiasaSkrip Tidak Diketahu" + - "i" - -var msScriptIdx = []uint16{ // 169 elements + 0x09ce, 0x09e3, 0x09f2, 0x09f2, 0x0a0d, 0x0a29, 0x0a41, 0x0a41, + 0x0a41, 0x0a41, 0x0a53, 0x0a53, 0x0a65, 0x0a87, 0x0a9c, 0x0adf, + 0x0b0a, 0x0b32, 0x0b4a, 0x0b4a, 0x0b5a, 0x0b77, 0x0b86, 0x0b86, + 0x0b9c, 0x0bab, 0x0bc3, 0x0bd8, 0x0bed, 0x0bf9, 0x0c02, 0x0c14, + 0x0c14, 0x0c2f, 0x0c38, 0x0c57, 0x0c57, 0x0c57, 0x0c79, 0x0c9e, + 0x0ca4, 0x0cc5, 0x0cf3, 0x0d02, 0x0d14, 0x0d26, 0x0d3b, 0x0d5a, +} // Size: 376 bytes + +const msScriptStr string = "" + // Size: 342 bytes + "ArabArmeniaBaliBamuBenggalaBopomofoBrailleCansCyrilDevanagariEthiopiaGeo" + + "rgiaGreekGujaratGurmukhiHanbHangulHanHan RingkasHan TradisionalIbraniHir" + + "aganaEjaan sukuan JepunJamoJepunKatakanaKhmerKannadaKoreaLaoLatinMalayal" + + "amMongoliaMyammarOriyaSinhalaTamilTeluguThaanaThaiTibetTatatanda matemat" + + "ikEmojiSimbolTidak ditulisLazimTulisan Tidak Diketahui" + +var msScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x000b, 0x000b, - 0x000f, 0x0013, 0x0013, 0x0013, 0x001a, 0x001a, 0x0022, 0x0022, - 0x0029, 0x0029, 0x0029, 0x0029, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x0032, 0x0032, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x0044, 0x0044, 0x004b, 0x004b, - 0x004b, 0x004b, 0x0050, 0x0057, 0x005f, 0x0065, 0x0068, 0x0068, - 0x0073, 0x0082, 0x0082, 0x0088, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0095, 0x0095, 0x0095, 0x009d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x000b, + 0x000b, 0x000f, 0x0013, 0x0013, 0x0013, 0x001b, 0x001b, 0x001b, + 0x0023, 0x0023, 0x002a, 0x002a, 0x002a, 0x002a, 0x002e, 0x002e, + 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x0033, 0x0033, 0x003d, + 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, + 0x004c, 0x004c, 0x004c, 0x004c, 0x0051, 0x0058, 0x0060, 0x0064, + 0x006a, 0x006d, 0x006d, 0x0078, 0x0087, 0x0087, 0x008d, 0x0095, + 0x0095, 0x0095, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00ab, 0x00ab, // Entry 40 - 7F - 0x009d, 0x00a2, 0x00a2, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00b1, 0x00b1, 0x00b1, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, + 0x00b0, 0x00b0, 0x00b0, 0x00b8, 0x00b8, 0x00bd, 0x00bd, 0x00c4, + 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00cc, 0x00cc, 0x00cc, 0x00d1, + 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, + 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, + 0x00da, 0x00da, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e9, + 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, + 0x00e9, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, // Entry 80 - BF - 0x00d3, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00df, - 0x00df, 0x00df, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00eb, 0x00ef, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fa, 0x0107, 0x010c, - 0x0121, -} // Size: 362 bytes - -var myScriptStr string = "" + // Size: 1208 bytes + 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, + 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00fa, 0x00fa, + 0x00fa, 0x0100, 0x0100, 0x0100, 0x0100, 0x0106, 0x010a, 0x010f, + 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, + 0x010f, 0x010f, 0x0122, 0x0127, 0x012d, 0x013a, 0x013f, 0x0156, +} // Size: 376 bytes + +const myScriptStr string = "" + // Size: 1241 bytes "အာရေဗျအာမေးနီးယားဘင်္ဂါလီဘိုပိုဗြဟ္မမီဘရေစစ်ရိလစ်ဒီဗနာဂရီအီသီယိုးပီးယားဂ" + - "ျော်ဂျီယန်ဂရိဂုဂျာရသီဂူရူဟန်ဂူးလ်ဟန်ရိုးရှင်းသော ဟန်ရှေးရိုးစဉ်လာဟန်ဟီ" + - "ဗရူးဟိရဂဏခတခဏ သို့မဟုတ် ဟိရဂဏဂျာဗားနီးစ်ဂျပန်ကယားလီခတခဏခမာခန္နာဒါကိုးရ" + - "ီးယားလာအိုလက်တင်မာလာရာလန်မွန်ဂိုလီးယားမြန်မာအိုရာဆင်ဟာလတိုင်လီတမီးလ်တီ" + - "လုတဂလော့ဂ်သာအ်ထိုင်းတိဘက်မြင်နိုင်သော စကားပါရှန် အဟောင်းရီသင်္ကေတမရေးထ" + - "ားသောအများနှင့်သက်ဆိုင်သောမသိ သို့မဟုတ် မရှိသော စကားလုံး" + "ျော်ဂျီယာဂရိဂုဂျာရသီဂူရူဟန်ဘ်ဟန်ဂူးလ်ဟန်ဟန် ရိုးရှင်းဟန် ရိုးရာဟီဗရူးဟ" + + "ီရဂနဂျပန် အက္ခရာဂျမိုဂျာဗားနီးစ်ဂျပန်ကယားလီခတခနခမာခန္နာဒါကိုရီးယားလာအိ" + + "ုလက်တင်မာလာယာလမ်မွန်ဂိုလီးယားမြန်မာအိုရာဆင်ဟာလတိုင်လီတမီးလ်တီလုတဂလော့ဂ" + + "်သာအ်ထိုင်းတိဘက်မြင်နိုင်သော စကားပါရှန် အဟောင်းရီဂဏန်းသင်္ချာအီမိုဂျီသ" + + "င်္ကေတမရေးထားသောအများနှင့်သက်ဆိုင်သောမသိ သို့မဟုတ် မရှိသော စကားလုံး" -var myScriptIdx = []uint16{ // 169 elements +var myScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x004b, 0x004b, 0x005d, 0x0072, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, - 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00d5, 0x00d5, 0x00f6, 0x00f6, - 0x00f6, 0x00f6, 0x00ff, 0x0117, 0x0123, 0x013b, 0x0144, 0x0144, - 0x0172, 0x01a2, 0x01a2, 0x01b4, 0x01c3, 0x01c3, 0x01c3, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x021c, 0x022b, 0x022b, 0x023d, 0x0249, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x004b, 0x004b, 0x004b, + 0x005d, 0x0072, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0093, 0x0093, 0x00ab, + 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00d5, 0x00d5, + 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00fc, 0x0114, 0x0120, 0x012f, + 0x0147, 0x0150, 0x0150, 0x0175, 0x0191, 0x0191, 0x01a3, 0x01b2, + 0x01b2, 0x01b2, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01e3, 0x0204, // Entry 40 - 7F - 0x0249, 0x0252, 0x0252, 0x0267, 0x0285, 0x0285, 0x0285, 0x0285, - 0x0294, 0x0294, 0x0294, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, - 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, - 0x02a6, 0x02a6, 0x02a6, 0x02c1, 0x02c1, 0x02e8, 0x02e8, 0x02e8, - 0x02e8, 0x02e8, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa, - 0x02fa, 0x02fa, 0x02fa, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, - 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, - 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, + 0x0213, 0x0213, 0x0225, 0x0231, 0x0231, 0x023a, 0x023a, 0x024f, + 0x026a, 0x026a, 0x026a, 0x026a, 0x0279, 0x0279, 0x0279, 0x028b, + 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, + 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, + 0x02a6, 0x02a6, 0x02cd, 0x02cd, 0x02cd, 0x02cd, 0x02cd, 0x02df, + 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, 0x02df, + 0x02df, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, + 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, // Entry 80 - BF - 0x0309, 0x0309, 0x0309, 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, - 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, 0x0330, 0x0330, 0x0342, - 0x0342, 0x0342, 0x034e, 0x034e, 0x034e, 0x0366, 0x0372, 0x0384, - 0x0393, 0x0393, 0x0393, 0x0393, 0x03c4, 0x03c4, 0x03c4, 0x03ec, - 0x03ec, 0x03f2, 0x03f2, 0x03f2, 0x03f2, 0x0407, 0x0425, 0x0464, - 0x04b8, -} // Size: 362 bytes - -var neScriptStr string = "" + // Size: 3010 bytes + 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, 0x02ee, + 0x02ee, 0x02ee, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, + 0x0300, 0x0300, 0x0300, 0x0300, 0x0315, 0x0315, 0x0327, 0x0327, + 0x0327, 0x0333, 0x0333, 0x0333, 0x034b, 0x0357, 0x0369, 0x0378, + 0x0378, 0x0378, 0x0378, 0x03a9, 0x03a9, 0x03a9, 0x03d1, 0x03d1, + 0x03d7, 0x03d7, 0x03fb, 0x0413, 0x0428, 0x0446, 0x0485, 0x04d9, +} // Size: 376 bytes + +const neScriptStr string = "" + // Size: 3039 bytes "अरबीआर्मीआर्मेनियालीआभेस्टानबालीबाटकबङ्गालीब्लिजसिम्बोल्सबोपोमोफोब्राह्म" + "ीब्रेलबुगिनिजबुहिदकाक्म्कारियनचामचेरोकीकिर्थकप्टिककप्रियटसिरिलिकदेवाना" + "गरीडेसेरेटइजिप्टियन डेमोटिकइजिप्टियन हाइरटिकइजिप्टियन हाइरोग्लिफ्सइथिय" + - "ोपिकग्रुजियाली खुट्सुरीजोर्जियनग्लागोलिटिकगोथिकग्रीकगुजरातीगुरूमुखीहान" + - "्गुलहानहानुनुसरलिकृत चिनीपरम्परागत चिनीहिब्रुहिरागनापहावह हमोङ्गकाताका" + - "ना वा हिरागानापुरानो हङ्गेरियालीइन्दुसपुरानो इटालिकजाभानीजापानीकायाहली" + - "काताकानाखारोस्थितिखमेरकान्नाडाकोरियनक्थीलान्नालाओफ्राक्टुर ल्याटिनग्या" + - "लिक ल्याटिनल्याटिनलेप्चालिम्बुलाइसियनलाइडियनमान्डाएनमानिकाएनमाया हाइरो" + - "ग्लिफ्समेरियोटिकमलायालममङ्गोलजूनमाइटेइ मायेकम्यान्मारएन्कोओघामओलचिकीओर" + - "्खोनओडियाओस्मान्यापुरानो पर्मिकफाग्स-पाफ्लिफ्ल्पबुक पहल्भीफोनिसियनपोल्" + - "लार्ड फोनेटिकपिआरटीरेजाङरोङ्गोरोङ्गोरूनिकसमारिटनसारतीसौराष्ट्रसाइनराइट" + - "िङशाभियनसिन्हालास्ल्योटी नाग्रीसिरियाकइस्ट्रेनजेलो सिरियाकपश्चिमी सिरि" + - "याकपूर्वी सिरियाकटाग्वान्वाटाइलेन्यू टाइ लुइतामिलटाभ्टतेलुगुटेङ्वारटिफ" + - "िनाघटागालोगथानाथाईतिब्बतीयुगारिटिकभाइदृश्यमय वाणीपुरानो पर्सियनयीइन्हे" + - "रिटेडजमथप्रतीकहरूनलेखिएकोसाझाअज्ञात लिपि" - -var neScriptIdx = []uint16{ // 169 elements + "ोपिकग्रुजियाली खुट्सुरीजर्जियालीग्लागोलिटिकगोथिकग्रीकगुजरातीगुरूमुखीहा" + + "न्बहान्गुलहानहानुनुसरलिकृत चिनीपरम्परागत चिनीहिब्रुहिरागनापहावह हमोङ्ग" + + "काताकाना वा हिरागानापुरानो हङ्गेरियालीइन्दुसपुरानो इटालिकजामोजाभानीजाप" + + "ानीकायाहलीकाताकानाखारोस्थितिखमेरकान्नाडाकोरियनक्थीलान्नालाओफ्राक्टुर ल" + + "्याटिनग्यालिक ल्याटिनल्याटिनलेप्चालिम्बुलाइसियनलाइडियनमान्डाएनमानिकाएन" + + "माया हाइरोग्लिफ्समेरियोटिकमलायालममङ्गोलजूनमाइटेइ मायेकम्यान्मारएन्कोओघ" + + "ामओलचिकीओर्खोनओडियाओस्मान्यापुरानो पर्मिकफाग्स-पाफ्लिफ्ल्पबुक पहल्भीफो" + + "निसियनपोल्लार्ड फोनेटिकपिआरटीरेजाङरोङ्गोरोङ्गोरूनिकसमारिटनसारतीसौराष्ट" + + "्रसाइनराइटिङशाभियनसिन्हालास्ल्योटी नाग्रीसिरियाकइस्ट्रेनजेलो सिरियाकपश" + + "्चिमी सिरियाकपूर्वी सिरियाकटाग्वान्वाटाइलेन्यू टाइ लुइतामिलटाभ्टतेलुगु" + + "टेङ्वारटिफिनाघटागालोगथानाथाईतिब्बतीयुगारिटिकभाइदृश्यमय वाणीपुरानो पर्स" + + "ियनयीइन्हेरिटेडZmthZsyeप्रतीकहरूनलेखिएकोसाझाअज्ञात लिपि" + +var neScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x001b, 0x003c, 0x0054, - 0x0060, 0x0060, 0x0060, 0x006c, 0x0081, 0x00ab, 0x00c3, 0x00db, - 0x00ea, 0x00ff, 0x010e, 0x0120, 0x0120, 0x0132, 0x013b, 0x014d, - 0x015c, 0x016e, 0x0183, 0x0198, 0x0198, 0x01b3, 0x01c8, 0x01c8, - 0x01f9, 0x022a, 0x026a, 0x026a, 0x0282, 0x02b9, 0x02d1, 0x02f2, - 0x0301, 0x0301, 0x0310, 0x0325, 0x033d, 0x0352, 0x035b, 0x036d, - 0x038f, 0x03b7, 0x03b7, 0x03c9, 0x03de, 0x03de, 0x0400, 0x0438, - 0x046c, 0x047e, 0x04a3, 0x04b5, 0x04c7, 0x04c7, 0x04dc, 0x04f4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x001b, 0x003c, + 0x0054, 0x0060, 0x0060, 0x0060, 0x006c, 0x0081, 0x0081, 0x00ab, + 0x00c3, 0x00db, 0x00ea, 0x00ff, 0x010e, 0x0120, 0x0120, 0x0132, + 0x013b, 0x014d, 0x015c, 0x016e, 0x0183, 0x0198, 0x0198, 0x01b3, + 0x01c8, 0x01c8, 0x01f9, 0x022a, 0x026a, 0x026a, 0x0282, 0x02b9, + 0x02d4, 0x02f5, 0x0304, 0x0304, 0x0313, 0x0328, 0x0340, 0x034f, + 0x0364, 0x036d, 0x037f, 0x03a1, 0x03c9, 0x03c9, 0x03db, 0x03f0, + 0x03f0, 0x0412, 0x044a, 0x047e, 0x0490, 0x04b5, 0x04c1, 0x04d3, // Entry 40 - 7F - 0x0512, 0x051e, 0x051e, 0x0536, 0x0548, 0x0548, 0x0554, 0x0566, - 0x056f, 0x05a0, 0x05cb, 0x05e0, 0x05f2, 0x0604, 0x0604, 0x0604, - 0x0604, 0x0604, 0x0619, 0x062e, 0x062e, 0x0646, 0x065e, 0x068f, - 0x068f, 0x068f, 0x06aa, 0x06bf, 0x06bf, 0x06d1, 0x06da, 0x06da, - 0x06fc, 0x06fc, 0x0717, 0x0717, 0x0717, 0x0717, 0x0726, 0x0726, - 0x0732, 0x0744, 0x0756, 0x0765, 0x0780, 0x0780, 0x0780, 0x07a5, - 0x07bb, 0x07c7, 0x07d6, 0x07f2, 0x080a, 0x083b, 0x084d, 0x085c, - 0x0880, 0x088f, 0x08a4, 0x08b3, 0x08b3, 0x08ce, 0x08ec, 0x08fe, + 0x04e5, 0x04e5, 0x04fa, 0x0512, 0x0530, 0x053c, 0x053c, 0x0554, + 0x0566, 0x0566, 0x0572, 0x0584, 0x058d, 0x05be, 0x05e9, 0x05fe, + 0x0610, 0x0622, 0x0622, 0x0622, 0x0622, 0x0622, 0x0637, 0x064c, + 0x064c, 0x0664, 0x067c, 0x067c, 0x06ad, 0x06ad, 0x06ad, 0x06c8, + 0x06dd, 0x06dd, 0x06ef, 0x06f8, 0x06f8, 0x071a, 0x071a, 0x0735, + 0x0735, 0x0735, 0x0735, 0x0735, 0x0744, 0x0744, 0x0750, 0x0762, + 0x0774, 0x0783, 0x0783, 0x079e, 0x079e, 0x079e, 0x07c3, 0x07d9, + 0x07e5, 0x07f4, 0x0810, 0x0828, 0x0859, 0x086b, 0x087a, 0x089e, // Entry 80 - BF - 0x08fe, 0x08fe, 0x08fe, 0x0916, 0x0916, 0x0916, 0x0941, 0x0956, - 0x0990, 0x09bb, 0x09e3, 0x0a01, 0x0a01, 0x0a10, 0x0a30, 0x0a3f, - 0x0a3f, 0x0a4e, 0x0a60, 0x0a75, 0x0a8a, 0x0a9f, 0x0aab, 0x0ab4, - 0x0ac9, 0x0ac9, 0x0ae4, 0x0aed, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b37, - 0x0b37, 0x0b3d, 0x0b5b, 0x0b64, 0x0b64, 0x0b7f, 0x0b97, 0x0ba3, - 0x0bc2, -} // Size: 362 bytes - -var nlScriptStr string = "" + // Size: 1633 bytes - "DefakaKaukasisch AlbaneesAhomArabischKeizerlijk ArameesArmeensAvestaansB" + - "alineesBamounBassa VahBatakBengaalsBlissymbolenBopomofoBrahmiBrailleBugi" + - "neesBuhidChakmaVerenigde Canadese Aboriginal-symbolenCarischChamCherokee" + - "CirthKoptischCyprischCyrillischOudkerkslavisch CyrillischDevanagariDeser" + - "etDuployan snelschriftEgyptisch demotischEgyptisch hiëratischEgyptische " + - "hiërogliefenElbasanEthiopischGeorgisch KhutsuriGeorgischGlagolitischGoth" + - "ischGranthaGrieksGujaratiGurmukhiHangulHanHanunoovereenvoudigd Chineestr" + - "aditioneel ChineesHatranHebreeuwsHiraganaAnatolische hiërogliefenPahawh " + - "HmongKatakana of HiraganaOudhongaarsIndusOud-italischJavaansJapansJurche" + - "nKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKoreaansKpelleKaithiLannaLa" + - "otiaansGotisch LatijnsGaelisch LatijnsLatijnsLepchaLimbuLineair ALineair" + - " BFraserLomaLycischLydischMahajaniMandaeansManicheaansMayahiërogliefenMe" + - "ndeMeroitisch cursiefMeroïtischMalayalamModiMongoolsMoonMroMeiteiMultani" + - "BirmaansOud Noord-ArabischNabateaansNaxi GebaN’KoNüshuOghamOl ChikiOrkho" + - "nOdiaOsmanyaPalmyreensPau Cin HauOudpermischPhags-paInscriptioneel Pahla" + - "viPsalmen PahlaviBoek PahlaviFoenicischPollard-fonetischInscriptioneel P" + - "arthischRejangRongorongoRunicSamaritaansSaratiOud Zuid-ArabischSaurashtr" + - "aSignWritingShavianSharadaSiddhamSindhiSingaleesSora SompengSoendaneesSy" + - "loti NagriSyriacEstrangelo ArameesWest-ArameesOost-ArameesTagbanwaTakriT" + - "ai LeNieuw Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaT" + - "haiTibetaansTirhutaUgaritischVaiZichtbare spraakVarang KshitiWoleaiOudpe" + - "rzischSumero-Akkadian CuneiformYiOvergeërfdWiskundige notatieSymbolenong" + - "eschrevenalgemeenonbekend schriftsysteem" - -var nlScriptIdx = []uint16{ // 169 elements + 0x08ad, 0x08c2, 0x08d1, 0x08d1, 0x08ec, 0x090a, 0x091c, 0x091c, + 0x091c, 0x091c, 0x0934, 0x0934, 0x0934, 0x095f, 0x0974, 0x09ae, + 0x09d9, 0x0a01, 0x0a1f, 0x0a1f, 0x0a2e, 0x0a4e, 0x0a5d, 0x0a5d, + 0x0a6c, 0x0a7e, 0x0a93, 0x0aa8, 0x0abd, 0x0ac9, 0x0ad2, 0x0ae7, + 0x0ae7, 0x0b02, 0x0b0b, 0x0b2d, 0x0b2d, 0x0b2d, 0x0b55, 0x0b55, + 0x0b5b, 0x0b79, 0x0b7d, 0x0b81, 0x0b9c, 0x0bb4, 0x0bc0, 0x0bdf, +} // Size: 376 bytes + +const nlScriptStr string = "" + // Size: 1678 bytes + "AdlamDefakaKaukasisch AlbaneesAhomArabischKeizerlijk ArameesArmeensAvest" + + "aansBalineesBamounBassa VahBatakBengaalsBhaiksukiBlissymbolenBopomofoBra" + + "hmiBrailleBugineesBuhidChakmaVerenigde Canadese Aboriginal-symbolenCaris" + + "chChamCherokeeCirthKoptischCyprischCyrillischOudkerkslavisch CyrillischD" + + "evanagariDeseretDuployan snelschriftEgyptisch demotischEgyptisch hiërati" + + "schEgyptische hiërogliefenElbasanEthiopischGeorgisch KhutsuriGeorgischGl" + + "agolitischGothischGranthaGrieksGujaratiGurmukhiHanbHangulHanHanunooveree" + + "nvoudigd Chineestraditioneel ChineesHatranHebreeuwsHiraganaAnatolische h" + + "iërogliefenPahawh HmongKatakana of HiraganaOudhongaarsIndusOud-italischJ" + + "amoJavaansJapansJurchenKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKorea" + + "ansKpelleKaithiLannaLaotiaansGotisch LatijnsGaelisch LatijnsLatijnsLepch" + + "aLimbuLineair ALineair BFraserLomaLycischLydischMahajaniMandaeansManiche" + + "aansMarchenMayahiërogliefenMendeMeroitisch cursiefMeroïtischMalayalamMod" + + "iMongoolsMoonMroMeiteiMultaniBirmaansOud Noord-ArabischNabateaansNewariN" + + "axi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsageOsmanyaPalmyreensPau Cin Ha" + + "uOudpermischPhags-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoe" + + "nicischPollard-fonetischInscriptioneel ParthischRejangRongorongoRunicSam" + + "aritaansSaratiOud Zuid-ArabischSaurashtraSignWritingShavianSharadaSiddha" + + "mSindhiSingaleesSora SompengSoendaneesSyloti NagriSyriacEstrangelo Arame" + + "esWest-ArameesOost-ArameesTagbanwaTakriTai LeNieuw Tai LueTamilTangutTai" + + " VietTeluguTengwarTifinaghTagalogThaanaThaiTibetaansTirhutaUgaritischVai" + + "Zichtbare spraakVarang KshitiWoleaiOudperzischSumero-Akkadian CuneiformY" + + "iOvergeërfdWiskundige notatieemojiSymbolenongeschrevenalgemeenonbekend s" + + "chriftsysteem" + +var nlScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0006, 0x0019, 0x001d, 0x0025, 0x0037, 0x003e, 0x0047, - 0x004f, 0x0055, 0x005e, 0x0063, 0x006b, 0x0077, 0x007f, 0x0085, - 0x008c, 0x0094, 0x0099, 0x009f, 0x00c5, 0x00cc, 0x00d0, 0x00d8, - 0x00dd, 0x00e5, 0x00ed, 0x00f7, 0x0111, 0x011b, 0x0122, 0x0136, - 0x0149, 0x015e, 0x0176, 0x017d, 0x0187, 0x0199, 0x01a2, 0x01ae, - 0x01b6, 0x01bd, 0x01c3, 0x01cb, 0x01d3, 0x01d9, 0x01dc, 0x01e3, - 0x01f8, 0x020c, 0x0212, 0x021b, 0x0223, 0x023c, 0x0248, 0x025c, - 0x0267, 0x026c, 0x0278, 0x027f, 0x0285, 0x028c, 0x0294, 0x029c, + 0x0000, 0x0005, 0x000b, 0x001e, 0x0022, 0x002a, 0x003c, 0x0043, + 0x004c, 0x0054, 0x005a, 0x0063, 0x0068, 0x0070, 0x0079, 0x0085, + 0x008d, 0x0093, 0x009a, 0x00a2, 0x00a7, 0x00ad, 0x00d3, 0x00da, + 0x00de, 0x00e6, 0x00eb, 0x00f3, 0x00fb, 0x0105, 0x011f, 0x0129, + 0x0130, 0x0144, 0x0157, 0x016c, 0x0184, 0x018b, 0x0195, 0x01a7, + 0x01b0, 0x01bc, 0x01c4, 0x01cb, 0x01d1, 0x01d9, 0x01e1, 0x01e5, + 0x01eb, 0x01ee, 0x01f5, 0x020a, 0x021e, 0x0224, 0x022d, 0x0235, + 0x024e, 0x025a, 0x026e, 0x0279, 0x027e, 0x028a, 0x028e, 0x0295, // Entry 40 - 7F - 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02c0, 0x02c6, 0x02cc, 0x02d1, - 0x02da, 0x02e9, 0x02f9, 0x0300, 0x0306, 0x030b, 0x0314, 0x031d, - 0x0323, 0x0327, 0x032e, 0x0335, 0x033d, 0x0346, 0x0351, 0x0362, - 0x0367, 0x0379, 0x0384, 0x038d, 0x0391, 0x0399, 0x039d, 0x03a0, - 0x03a6, 0x03ad, 0x03b5, 0x03c7, 0x03d1, 0x03da, 0x03e0, 0x03e6, - 0x03eb, 0x03f3, 0x03f9, 0x03fd, 0x0404, 0x040e, 0x0419, 0x0424, - 0x042c, 0x0442, 0x0451, 0x045d, 0x0467, 0x0478, 0x0490, 0x0496, - 0x04a0, 0x04a5, 0x04b0, 0x04b6, 0x04c7, 0x04d1, 0x04dc, 0x04e3, + 0x029b, 0x02a2, 0x02aa, 0x02b2, 0x02bc, 0x02c1, 0x02c7, 0x02ce, + 0x02d6, 0x02dc, 0x02e2, 0x02e7, 0x02f0, 0x02ff, 0x030f, 0x0316, + 0x031c, 0x0321, 0x032a, 0x0333, 0x0339, 0x033d, 0x0344, 0x034b, + 0x0353, 0x035c, 0x0367, 0x036e, 0x037f, 0x0384, 0x0396, 0x03a1, + 0x03aa, 0x03ae, 0x03b6, 0x03ba, 0x03bd, 0x03c3, 0x03ca, 0x03d2, + 0x03e4, 0x03ee, 0x03f4, 0x03fd, 0x0403, 0x0409, 0x040e, 0x0416, + 0x041c, 0x0420, 0x0425, 0x042c, 0x0436, 0x0441, 0x044c, 0x0454, + 0x046a, 0x0479, 0x0485, 0x048f, 0x04a0, 0x04b8, 0x04be, 0x04c8, // Entry 80 - BF - 0x04ea, 0x04f1, 0x04f7, 0x0500, 0x050c, 0x0516, 0x0522, 0x0528, - 0x053a, 0x0546, 0x0552, 0x055a, 0x055f, 0x0565, 0x0572, 0x0577, - 0x057d, 0x0585, 0x058b, 0x0592, 0x059a, 0x05a1, 0x05a7, 0x05ab, - 0x05b4, 0x05bb, 0x05c5, 0x05c8, 0x05d8, 0x05e5, 0x05eb, 0x05f6, - 0x060f, 0x0611, 0x061c, 0x062e, 0x062e, 0x0636, 0x0642, 0x064a, - 0x0661, -} // Size: 362 bytes - -var noScriptStr string = "" + // Size: 1588 bytes + 0x04cd, 0x04d8, 0x04de, 0x04ef, 0x04f9, 0x0504, 0x050b, 0x0512, + 0x0519, 0x051f, 0x0528, 0x0534, 0x053e, 0x054a, 0x0550, 0x0562, + 0x056e, 0x057a, 0x0582, 0x0587, 0x058d, 0x059a, 0x059f, 0x05a5, + 0x05ad, 0x05b3, 0x05ba, 0x05c2, 0x05c9, 0x05cf, 0x05d3, 0x05dc, + 0x05e3, 0x05ed, 0x05f0, 0x0600, 0x060d, 0x0613, 0x061e, 0x0637, + 0x0639, 0x0644, 0x0656, 0x065b, 0x0663, 0x066f, 0x0677, 0x068e, +} // Size: 376 bytes + +const noScriptStr string = "" + // Size: 1603 bytes "afakakaukasus-albanskahomarabiskarameiskarmenskavestiskbalinesiskbamumba" + "ssa vahbatakbengalskblissymbolbopomofobrahmibraillebuginesiskbuhidchakma" + "felles kanadiske urspråksstavelserkariskchamcherokeecirthkoptiskkyprioti" + "skkyrilliskkirkeslavisk kyrilliskdevanagarideseretduployan stenografiegy" + "ptisk demotiskegyptisk hieratiskegyptiske hieroglyferelbasisketiopiskgeo" + "rgisk khutsurigeorgiskglagolittiskgotiskgammeltamilskgreskgujaratigurmuk" + - "hihangulhanhanunooforenklet hantradisjonell hanhatransk armenskhebraiskh" + - "iraganaanatoliske hieroglyferpahawh hmongkatakana eller hiraganagammelun" + - "garskindusgammelitaliskjavanesiskjapanskjurchenkayah likatakanakharoshth" + - "ikhmerkhojkikannadakoreanskkpellekaithisklannalaotiskfrakturlatinskgælis" + - "k latinsklatinsklepchalimbulineær Alineær Bfraserlomalykisklydiskmahajan" + - "imandaiskmanikeiskmaya-hieroglyfermendemeroitisk kursivmeroitiskmalayala" + - "mmodimongolskmoonmromeitei-mayekmultanimyanmargammelnordarabisknabataean" + - "sknaxi geban’konüshuoghamol-chikiorkhonoriyaosmanyapalmyrenskpau cin hau" + - "gammelpermiskphags-painskripsjonspahlavipsalter pahlavipahlavifønikiskpo" + - "llard-fonetiskinskripsjonsparthiskrejangrongorongorunersamaritansksarati" + - "gammelsørarabisksaurashtrategnskriftshavisksharadasiddhamkhudawadisinhal" + - "asora sompengsundanesisksyloti nagrisyriskestrangelosyriakiskvestlig syr" + - "iakiskøstlig syriakisktagbanwatakritai leny tai luetamilsktanguttai viet" + - "telugutengwartifinaghtagalogthaanathaitibetansktirhutaugaritiskvaisynlig" + - " talevarang kshitiwoleaigammelpersisksumersk-akkadisk kileskriftyinedarv" + - "etmatematisk notasjonsymbolerspråk uten skriftfellesukjent skrift" - -var noScriptIdx = []uint16{ // 169 elements + "hihanbhangulhanhanunooforenklet hantradisjonell hanhatransk armenskhebra" + + "iskhiraganaanatoliske hieroglyferpahawh hmongjapanske stavelsesskrifterg" + + "ammelungarskindusgammelitaliskjamojavanesiskjapanskjurchenkayah likataka" + + "nakharoshthikhmerkhojkikannadakoreanskkpellekaithisklannalaotiskfrakturl" + + "atinskgælisk latinsklatinsklepchalimbulineær Alineær Bfraserlomalykiskly" + + "diskmahajanimandaiskmanikeiskmaya-hieroglyfermendemeroitisk kursivmeroit" + + "iskmalayalammodimongolskmoonmromeitei-mayekmultanimyanmargammelnordarabi" + + "sknabataeansknaxi geban’konüshuoghamol-chikiorkhonoriyaosmanyapalmyrensk" + + "pau cin haugammelpermiskphags-painskripsjonspahlavipsalter pahlavipahlav" + + "ifønikiskpollard-fonetiskinskripsjonsparthiskrejangrongorongorunersamari" + + "tansksaratigammelsørarabisksaurashtrategnskriftshavisksharadasiddhamkhud" + + "awadisinhalasora sompengsundanesisksyloti nagrisyriskestrangelosyriakisk" + + "vestlig syriakiskøstlig syriakisktagbanwatakritai leny tai luetamilsktan" + + "guttai viettelugutengwartifinaghtagalogthaanathaitibetansktirhutaugariti" + + "skvaisynlig talevarang kshitiwoleaigammelpersisksumersk-akkadisk kileskr" + + "iftyinedarvetmatematisk notasjonzsyesymbolerspråk uten skriftfellesukjen" + + "t skrift" + +var noScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0015, 0x0019, 0x0020, 0x0028, 0x002f, 0x0037, - 0x0041, 0x0046, 0x004f, 0x0054, 0x005c, 0x0066, 0x006e, 0x0074, - 0x007b, 0x0085, 0x008a, 0x0090, 0x00b3, 0x00b9, 0x00bd, 0x00c5, - 0x00ca, 0x00d1, 0x00db, 0x00e4, 0x00fa, 0x0104, 0x010b, 0x011e, - 0x012f, 0x0141, 0x0156, 0x015e, 0x0166, 0x0177, 0x017f, 0x018b, - 0x0191, 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01b9, 0x01bc, 0x01c3, - 0x01d0, 0x01e0, 0x01f0, 0x01f8, 0x0200, 0x0216, 0x0222, 0x0239, - 0x0246, 0x024b, 0x0258, 0x0262, 0x0269, 0x0270, 0x0278, 0x0280, + 0x0000, 0x0000, 0x0005, 0x0015, 0x0019, 0x0020, 0x0028, 0x002f, + 0x0037, 0x0041, 0x0046, 0x004f, 0x0054, 0x005c, 0x005c, 0x0066, + 0x006e, 0x0074, 0x007b, 0x0085, 0x008a, 0x0090, 0x00b3, 0x00b9, + 0x00bd, 0x00c5, 0x00ca, 0x00d1, 0x00db, 0x00e4, 0x00fa, 0x0104, + 0x010b, 0x011e, 0x012f, 0x0141, 0x0156, 0x015e, 0x0166, 0x0177, + 0x017f, 0x018b, 0x0191, 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01b7, + 0x01bd, 0x01c0, 0x01c7, 0x01d4, 0x01e4, 0x01f4, 0x01fc, 0x0204, + 0x021a, 0x0226, 0x0240, 0x024d, 0x0252, 0x025f, 0x0263, 0x026d, // Entry 40 - 7F - 0x028a, 0x028f, 0x0295, 0x029c, 0x02a4, 0x02aa, 0x02b2, 0x02b7, - 0x02be, 0x02cc, 0x02db, 0x02e2, 0x02e8, 0x02ed, 0x02f6, 0x02ff, - 0x0305, 0x0309, 0x030f, 0x0315, 0x031d, 0x0325, 0x032e, 0x033e, - 0x0343, 0x0353, 0x035c, 0x0365, 0x0369, 0x0371, 0x0375, 0x0378, - 0x0384, 0x038b, 0x0392, 0x03a3, 0x03ae, 0x03b7, 0x03bd, 0x03c3, - 0x03c8, 0x03d0, 0x03d6, 0x03db, 0x03e2, 0x03ec, 0x03f7, 0x0404, - 0x040c, 0x041f, 0x042e, 0x0435, 0x043e, 0x044e, 0x0462, 0x0468, - 0x0472, 0x0477, 0x0482, 0x0488, 0x0499, 0x04a3, 0x04ad, 0x04b4, + 0x0274, 0x027b, 0x0283, 0x028b, 0x0295, 0x029a, 0x02a0, 0x02a7, + 0x02af, 0x02b5, 0x02bd, 0x02c2, 0x02c9, 0x02d7, 0x02e6, 0x02ed, + 0x02f3, 0x02f8, 0x0301, 0x030a, 0x0310, 0x0314, 0x031a, 0x0320, + 0x0328, 0x0330, 0x0339, 0x0339, 0x0349, 0x034e, 0x035e, 0x0367, + 0x0370, 0x0374, 0x037c, 0x0380, 0x0383, 0x038f, 0x0396, 0x039d, + 0x03ae, 0x03b9, 0x03b9, 0x03c2, 0x03c8, 0x03ce, 0x03d3, 0x03db, + 0x03e1, 0x03e6, 0x03e6, 0x03ed, 0x03f7, 0x0402, 0x040f, 0x0417, + 0x042a, 0x0439, 0x0440, 0x0449, 0x0459, 0x046d, 0x0473, 0x047d, // Entry 80 - BF - 0x04bb, 0x04c2, 0x04cb, 0x04d2, 0x04de, 0x04e9, 0x04f5, 0x04fb, - 0x050e, 0x051f, 0x0530, 0x0538, 0x053d, 0x0543, 0x054d, 0x0554, - 0x055a, 0x0562, 0x0568, 0x056f, 0x0577, 0x057e, 0x0584, 0x0588, - 0x0591, 0x0598, 0x05a1, 0x05a4, 0x05af, 0x05bc, 0x05c2, 0x05cf, - 0x05ea, 0x05ec, 0x05f4, 0x0607, 0x0607, 0x060f, 0x0621, 0x0627, - 0x0634, -} // Size: 362 bytes - -var paScriptStr string = "" + // Size: 740 bytes - "ਅਰਬੀਅਰਮੀਨੀਆਈਬੰਗਾਲੀਬੋਪੋਮੋਫੋਬਰੇਲਸਿਰੀਲਿਕਦੇਵਨਾਗਰੀਇਥੀਓਪਿਕਜਾਰਜੀਆਈਗ੍ਰੀਕਗੁਜਰਾਤੀਗ" + - "ੁਰਮੁਖੀਹੰਗੁਲਹਾਨਸਰਲ ਹਾਨਰਵਾਇਤੀ ਹਾਨਹਿਬਰੂਹਿਰਾਗਾਨਾਜਪਾਨੀਕਾਟਾਕਾਨਾਖਮੇਰਕੰਨੜਕੋਰੀਆ" + - "ਈਲਾਓਲਾਤੀਨੀਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਿਆਂਮਾਰਉੜੀਆਸਿੰਹਾਲਾਤਮਿਲਤੇਲਗੂਥਾਨਾਥਾਈਤਿੱਬਤੀਗਣਿਤ ਚ" + - "ਿੰਨ੍ਹ-ਲਿਪੀਚਿੰਨ੍ਹਅਲਿਖਤਸਧਾਰਨਅਣਪਛਾਤੀ ਲਿਪੀ" - -var paScriptIdx = []uint16{ // 169 elements + 0x0482, 0x048d, 0x0493, 0x04a4, 0x04ae, 0x04b8, 0x04bf, 0x04c6, + 0x04cd, 0x04d6, 0x04dd, 0x04e9, 0x04f4, 0x0500, 0x0506, 0x0519, + 0x052a, 0x053b, 0x0543, 0x0548, 0x054e, 0x0558, 0x055f, 0x0565, + 0x056d, 0x0573, 0x057a, 0x0582, 0x0589, 0x058f, 0x0593, 0x059c, + 0x05a3, 0x05ac, 0x05af, 0x05ba, 0x05c7, 0x05cd, 0x05da, 0x05f5, + 0x05f7, 0x05ff, 0x0612, 0x0616, 0x061e, 0x0630, 0x0636, 0x0643, +} // Size: 376 bytes + +const paScriptStr string = "" + // Size: 828 bytes + "ਅਰਬੀਅਰਮੀਨੀਆਈਬੰਗਾਲੀਬੋਪੋਮੋਫੋਬਰੇਲਸਿਰੀਲਿਕਦੇਵਨਾਗਰੀਇਥੀਓਪਿਕਜਾਰਜੀਆਈਯੂਨਾਨੀਗੁਜਰਾਤੀ" + + "ਗੁਰਮੁਖੀਹਾਂਬਹੰਗੁਲਹਾਨਸਰਲ ਹਾਨਰਵਾਇਤੀ ਹਾਨਹਿਬਰੂਹਿਰਾਗਾਨਾਜਾਪਾਨੀ ਸਿਲੇਬਰੀਜ਼ਜਾਮੋਜ" + + "ਪਾਨੀਕਾਟਾਕਾਨਾਖਮੇਰਕੰਨੜਕੋਰੀਆਈਲਾਓਲਾਤੀਨੀਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਿਆਂਮਾਰਉੜੀਆਸਿੰਹਾਲਾਤਮਿ" + + "ਲਤੇਲਗੂਥਾਨਾਥਾਈਤਿੱਬਤੀਗਣਿਤ ਚਿੰਨ੍ਹ-ਲਿਪੀਇਮੋਜੀਚਿੰਨ੍ਹਅਲਿਖਤਸਧਾਰਨਅਣਪਛਾਤੀ ਲਿਪੀ" + +var paScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0036, 0x0036, 0x004e, 0x004e, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x006f, 0x006f, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x009c, 0x009c, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00c0, 0x00d5, 0x00ea, 0x00f9, 0x0102, 0x0102, - 0x0115, 0x0131, 0x0131, 0x0140, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0167, 0x0167, 0x0167, 0x017f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0024, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0036, 0x0036, 0x0036, + 0x004e, 0x004e, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006f, 0x006f, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x009c, 0x009c, + 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00c3, 0x00d8, 0x00ed, 0x00f9, + 0x0108, 0x0111, 0x0111, 0x0124, 0x0140, 0x0140, 0x014f, 0x0167, + 0x0167, 0x0167, 0x0195, 0x0195, 0x0195, 0x0195, 0x01a1, 0x01a1, // Entry 40 - 7F - 0x017f, 0x018b, 0x018b, 0x0197, 0x01a9, 0x01a9, 0x01a9, 0x01a9, - 0x01b2, 0x01b2, 0x01b2, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, - 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, - 0x01c4, 0x01c4, 0x01c4, 0x01d6, 0x01d6, 0x01ee, 0x01ee, 0x01ee, - 0x01ee, 0x01ee, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203, - 0x0203, 0x0203, 0x0203, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, - 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, - 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, + 0x01b0, 0x01b0, 0x01b0, 0x01c8, 0x01c8, 0x01d4, 0x01d4, 0x01e0, + 0x01f2, 0x01f2, 0x01f2, 0x01f2, 0x01fb, 0x01fb, 0x01fb, 0x020d, + 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, + 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, + 0x021f, 0x021f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x024c, + 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, + 0x024c, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, + 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, // Entry 80 - BF - 0x020f, 0x020f, 0x020f, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, - 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0230, - 0x0230, 0x0230, 0x023f, 0x023f, 0x023f, 0x023f, 0x024b, 0x0254, - 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, - 0x0266, 0x0266, 0x0266, 0x0292, 0x0292, 0x02a4, 0x02b3, 0x02c2, - 0x02e4, -} // Size: 362 bytes - -var plScriptStr string = "" + // Size: 1483 bytes + 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, + 0x0258, 0x0258, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, + 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, 0x0279, 0x0279, + 0x0279, 0x0288, 0x0288, 0x0288, 0x0288, 0x0294, 0x029d, 0x02af, + 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, + 0x02af, 0x02af, 0x02db, 0x02ea, 0x02fc, 0x030b, 0x031a, 0x033c, +} // Size: 376 bytes + +const plScriptStr string = "" + // Size: 1489 bytes "arabskiearmiormiańskieawestyjskiebalijskiebamunbatakbengalskiesymbole Bl" + "issabopomofobrahmiBraille’abugińskiebuhidchakmazunifikowane symbole kana" + "dyjskich autochtonówkaryjskieczamskieczirokeskicirthkoptyjskiecypryjskie" + - "cyrylicacyrylica staro-cerkiewno-słowiańskadevanagarideseretegipskie dem" + + "cyrylicacyrylica staro-cerkiewno-słowiańskadewanagarideseretegipskie dem" + "otyczneegipskie hieratycznehieroglify egipskieetiopskiegruzińskie chucur" + - "igruzińskiegłagolicagotyckiegreckiegudźarackiegurmukhihangylhanhanunooup" + - "roszczone hantradycyjne hanhebrajskiehiraganapahawh hmongkatakana lub hi" + - "raganastarowęgierskieindusstarowłoskiejawajskiejapońskiekayah likatakana" + - "charostikhmerskiekannadakoreańskiekaithilannalaotańskiełaciński - fraktu" + - "rałaciński - odmiana gaelickałacińskielepchalimbulinearne Alinearne Blik" + - "ijskielidyjskiemandejskiemanichejskiehieroglify Majówmeroickiemalajalamm" + - "ongolskieMoon’ameitei mayekbirmańskien’kooghamol chikiorchońskieorijaosm" + - "anyastaropermskiephags-painskrypcyjne pahlawipahlawi psałterzowypahlawi " + - "książkowyfenickifonetyczny Pollard’apartyjski inskrypcyjnyrejangrongoron" + - "gorunicznesamarytańskisaratisaurashtrapismo znakoweshawasyngaleskiesunda" + - "jskiesyloti nagrisyryjskisyriacki estrangelosyryjski (odmiana zachodnia)" + - "syryjski (odmiana wschodnia)tagbanwatai lenowy tai luetamilskietai viett" + - "elugutengwartifinagh (berberski)tagalogthaanatajskietybetańskieugaryckie" + - "vaiVisible Speechstaroperskieklinowe sumero-akadyjskieyidziedziczonenota" + - "cja matematycznasymbolejęzyk bez systemu pismawspólnenieznane lub niepop" + - "rawne" - -var plScriptIdx = []uint16{ // 169 elements + "igruzińskiegłagolicagotyckiegreckiegudźarackiegurmukhihanbhangylhanhanun" + + "oouproszczone hantradycyjne hanhebrajskiehiraganapahawh hmongsylabariusz" + + "e japońskiestarowęgierskieindusstarowłoskiejamojawajskiejapońskiekayah l" + + "ikatakanacharostikhmerskiekannadakoreańskiekaithilannalaotańskiełaciński" + + " - frakturałaciński - odmiana gaelickałacińskielepchalimbulinearne Aline" + + "arne Blikijskielidyjskiemandejskiemanichejskiehieroglify Majówmeroickiem" + + "alajalammongolskieMoon’ameitei mayekbirmańskien’kooghamol chikiorchoński" + + "eorijaosmanyastaropermskiephags-painskrypcyjne pahlawipahlawi psałterzow" + + "ypahlawi książkowyfenickifonetyczny Pollard’apartyjski inskrypcyjnyrejan" + + "grongorongorunicznesamarytańskisaratisaurashtrapismo znakoweshawasyngale" + + "skiesundajskiesyloti nagrisyryjskisyriacki estrangelosyryjski (odmiana z" + + "achodnia)syryjski (odmiana wschodnia)tagbanwatai lenowy tai luetamilskie" + + "tai viettelugutengwartifinagh (berberski)tagalogthaanatajskietybetańskie" + + "ugaryckievaiVisible Speechstaroperskieklinowe sumero-akadyjskieyidziedzi" + + "czonenotacja matematycznaEmojisymbolejęzyk bez systemu pismawspólneniezn" + + "any skrypt" + +var plScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0017, 0x0022, - 0x002b, 0x0030, 0x0030, 0x0035, 0x003f, 0x004d, 0x0055, 0x005b, - 0x0066, 0x0070, 0x0075, 0x007b, 0x00a9, 0x00b2, 0x00ba, 0x00c4, - 0x00c9, 0x00d3, 0x00dd, 0x00e5, 0x010a, 0x0114, 0x011b, 0x011b, - 0x012e, 0x0142, 0x0155, 0x0155, 0x015e, 0x0171, 0x017c, 0x0186, - 0x018e, 0x018e, 0x0195, 0x01a1, 0x01a9, 0x01af, 0x01b2, 0x01b9, - 0x01c8, 0x01d6, 0x01d6, 0x01e0, 0x01e8, 0x01e8, 0x01f4, 0x0209, - 0x0219, 0x021e, 0x022b, 0x0234, 0x023e, 0x023e, 0x0246, 0x024e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0017, + 0x0022, 0x002b, 0x0030, 0x0030, 0x0035, 0x003f, 0x003f, 0x004d, + 0x0055, 0x005b, 0x0066, 0x0070, 0x0075, 0x007b, 0x00a9, 0x00b2, + 0x00ba, 0x00c4, 0x00c9, 0x00d3, 0x00dd, 0x00e5, 0x010a, 0x0114, + 0x011b, 0x011b, 0x012e, 0x0142, 0x0155, 0x0155, 0x015e, 0x0171, + 0x017c, 0x0186, 0x018e, 0x018e, 0x0195, 0x01a1, 0x01a9, 0x01ad, + 0x01b3, 0x01b6, 0x01bd, 0x01cc, 0x01da, 0x01da, 0x01e4, 0x01ec, + 0x01ec, 0x01f8, 0x020f, 0x021f, 0x0224, 0x0231, 0x0235, 0x023e, // Entry 40 - 7F - 0x0256, 0x025f, 0x025f, 0x0266, 0x0271, 0x0271, 0x0277, 0x027c, - 0x0287, 0x029c, 0x02b9, 0x02c4, 0x02ca, 0x02cf, 0x02d9, 0x02e3, - 0x02e3, 0x02e3, 0x02ec, 0x02f5, 0x02f5, 0x02ff, 0x030b, 0x031c, - 0x031c, 0x031c, 0x0325, 0x032e, 0x032e, 0x0338, 0x0340, 0x0340, - 0x034c, 0x034c, 0x0357, 0x0357, 0x0357, 0x0357, 0x035d, 0x035d, - 0x0362, 0x036a, 0x0375, 0x037a, 0x0381, 0x0381, 0x0381, 0x038e, - 0x0396, 0x03aa, 0x03be, 0x03d1, 0x03d8, 0x03ee, 0x0404, 0x040a, - 0x0414, 0x041c, 0x0429, 0x042f, 0x042f, 0x0439, 0x0446, 0x044b, + 0x0248, 0x0248, 0x0250, 0x0258, 0x0260, 0x0269, 0x0269, 0x0270, + 0x027b, 0x027b, 0x0281, 0x0286, 0x0291, 0x02a6, 0x02c3, 0x02ce, + 0x02d4, 0x02d9, 0x02e3, 0x02ed, 0x02ed, 0x02ed, 0x02f6, 0x02ff, + 0x02ff, 0x0309, 0x0315, 0x0315, 0x0326, 0x0326, 0x0326, 0x032f, + 0x0338, 0x0338, 0x0342, 0x034a, 0x034a, 0x0356, 0x0356, 0x0361, + 0x0361, 0x0361, 0x0361, 0x0361, 0x0367, 0x0367, 0x036c, 0x0374, + 0x037f, 0x0384, 0x0384, 0x038b, 0x038b, 0x038b, 0x0398, 0x03a0, + 0x03b4, 0x03c8, 0x03db, 0x03e2, 0x03f8, 0x040e, 0x0414, 0x041e, // Entry 80 - BF - 0x044b, 0x044b, 0x044b, 0x0456, 0x0456, 0x0460, 0x046c, 0x0474, - 0x0487, 0x04a3, 0x04bf, 0x04c7, 0x04c7, 0x04cd, 0x04d9, 0x04e2, - 0x04e2, 0x04ea, 0x04f0, 0x04f7, 0x050b, 0x0512, 0x0518, 0x051f, - 0x052b, 0x052b, 0x0534, 0x0537, 0x0545, 0x0545, 0x0545, 0x0551, - 0x056a, 0x056c, 0x0578, 0x058c, 0x058c, 0x0593, 0x05ab, 0x05b3, - 0x05cb, -} // Size: 362 bytes - -var ptScriptStr string = "" + // Size: 1251 bytes + 0x0426, 0x0433, 0x0439, 0x0439, 0x0443, 0x0450, 0x0455, 0x0455, + 0x0455, 0x0455, 0x0460, 0x0460, 0x046a, 0x0476, 0x047e, 0x0491, + 0x04ad, 0x04c9, 0x04d1, 0x04d1, 0x04d7, 0x04e3, 0x04ec, 0x04ec, + 0x04f4, 0x04fa, 0x0501, 0x0515, 0x051c, 0x0522, 0x0529, 0x0535, + 0x0535, 0x053e, 0x0541, 0x054f, 0x054f, 0x054f, 0x055b, 0x0574, + 0x0576, 0x0582, 0x0596, 0x059b, 0x05a2, 0x05ba, 0x05c2, 0x05d1, +} // Size: 376 bytes + +const ptScriptStr string = "" + // Size: 1282 bytes "árabearmiarmênioavésticobalinêsbamumbataquebengalisímbolos blissbopomofo" + "brahmibraillebuginêsbuhidcakmescrita silábica unificada dos aborígenes c" + "anadensescarianochamcherokeecirthcópticocipriotacirílicocirílico eslavo " + "eclesiásticodevanágarideseretdemótico egípciohierático egípciohieróglifo" + "s egípciosetiópicokhutsuri georgianogeorgianoglagolíticogóticogregogujer" + - "atigurmuquihangulhanhanunoohan simplificadohan tradicionalhebraicohiraga" + - "napahawh hmongkatakana ou hiraganahúngaro antigoindoitálico antigojavanê" + - "sjaponêskayah likatakanakharoshthikhmerkannadacoreanokthilannalaolatim f" + - "rakturlatim gaélicolatimlepchalimbulinear Alinear Blisulíciolídiomandaic" + - "omaniqueanohieróglifos maiasmeroítico cursivomeroíticomalaialamongolmoon" + - "meitei mayekbirmanêsn’koogâmicool chikiorkhonoriyaosmaniapérmico antigop" + - "hags-paphliphlppahlavi antigofeníciofonético pollardprtirejangrongorongo" + - "rúnicosamaritanosaratisaurashtrasignwritingshavianocingalêssundanêssylot" + - "i nagrisiríacosiríaco estrangelosiríaco ocidentalsiríaco orientaltagbanw" + - "atai Lenovo tai luetâmiltavttélugotengwartifinaghtagalothaanatailandêsti" + - "betanougaríticovaivisible speechpersa antigosumério-acadiano cuneiformey" + - "iherdadozmthzsymágrafocomumescrita desconhecida" - -var ptScriptIdx = []uint16{ // 169 elements + "atigurmuquihanbhangulhanhanunoohan simplificadohan tradicionalhebraicohi" + + "raganapahawh hmongsilabários japoneseshúngaro antigoindoitálico antigoja" + + "mojavanêsjaponêskayah likatakanakharoshthikhmerkannadacoreanokthilannala" + + "olatim frakturlatim gaélicolatimlepchalimbulinear Alinear Blisulíciolídi" + + "omandaicomaniqueanohieróglifos maiasmeroítico cursivomeroíticomalaialamo" + + "ngolmoonmeitei mayekbirmanêsn’koogâmicool chikiorkhonoriyaosmaniapérmico" + + " antigophags-paphliphlppahlavi antigofeníciofonético pollardprtirejangro" + + "ngorongorúnicosamaritanosaratisaurashtrasignwritingshavianocingalêssunda" + + "nêssyloti nagrisiríacosiríaco estrangelosiríaco ocidentalsiríaco orienta" + + "ltagbanwatai Lenovo tai luetâmiltavttélugotengwartifinaghtagalothaanatai" + + "landêstibetanougaríticovaivisible speechpersa antigosumério-acadiano cun" + + "eiformeyiherdadonotação matemáticaEmojizsymágrafocomumescrita desconheci" + + "da" + +var ptScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0012, 0x001b, - 0x0023, 0x0028, 0x0028, 0x002f, 0x0036, 0x0045, 0x004d, 0x0053, - 0x005a, 0x0062, 0x0067, 0x006b, 0x00a1, 0x00a8, 0x00ac, 0x00b4, - 0x00b9, 0x00c1, 0x00c9, 0x00d2, 0x00f0, 0x00fb, 0x0102, 0x0102, - 0x0114, 0x0127, 0x013d, 0x013d, 0x0146, 0x0158, 0x0161, 0x016d, - 0x0174, 0x0174, 0x0179, 0x0181, 0x0189, 0x018f, 0x0192, 0x0199, - 0x01a9, 0x01b8, 0x01b8, 0x01c0, 0x01c8, 0x01c8, 0x01d4, 0x01e8, - 0x01f7, 0x01fb, 0x020a, 0x0212, 0x021a, 0x021a, 0x0222, 0x022a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0012, + 0x001b, 0x0023, 0x0028, 0x0028, 0x002f, 0x0036, 0x0036, 0x0045, + 0x004d, 0x0053, 0x005a, 0x0062, 0x0067, 0x006b, 0x00a1, 0x00a8, + 0x00ac, 0x00b4, 0x00b9, 0x00c1, 0x00c9, 0x00d2, 0x00f0, 0x00fb, + 0x0102, 0x0102, 0x0114, 0x0127, 0x013d, 0x013d, 0x0146, 0x0158, + 0x0161, 0x016d, 0x0174, 0x0174, 0x0179, 0x0181, 0x0189, 0x018d, + 0x0193, 0x0196, 0x019d, 0x01ad, 0x01bc, 0x01bc, 0x01c4, 0x01cc, + 0x01cc, 0x01d8, 0x01ed, 0x01fc, 0x0200, 0x020f, 0x0213, 0x021b, // Entry 40 - 7F - 0x0234, 0x0239, 0x0239, 0x0240, 0x0247, 0x0247, 0x024b, 0x0250, - 0x0253, 0x0260, 0x026e, 0x0273, 0x0279, 0x027e, 0x0286, 0x028e, - 0x0292, 0x0292, 0x0298, 0x029e, 0x029e, 0x02a6, 0x02b0, 0x02c2, - 0x02c2, 0x02d4, 0x02de, 0x02e6, 0x02e6, 0x02ec, 0x02f0, 0x02f0, - 0x02fc, 0x02fc, 0x0305, 0x0305, 0x0305, 0x0305, 0x030b, 0x030b, - 0x0313, 0x031b, 0x0321, 0x0326, 0x032d, 0x032d, 0x032d, 0x033c, - 0x0344, 0x0348, 0x034c, 0x035a, 0x0362, 0x0373, 0x0377, 0x037d, - 0x0387, 0x038e, 0x0398, 0x039e, 0x039e, 0x03a8, 0x03b3, 0x03bb, + 0x0223, 0x0223, 0x022b, 0x0233, 0x023d, 0x0242, 0x0242, 0x0249, + 0x0250, 0x0250, 0x0254, 0x0259, 0x025c, 0x0269, 0x0277, 0x027c, + 0x0282, 0x0287, 0x028f, 0x0297, 0x029b, 0x029b, 0x02a1, 0x02a7, + 0x02a7, 0x02af, 0x02b9, 0x02b9, 0x02cb, 0x02cb, 0x02dd, 0x02e7, + 0x02ef, 0x02ef, 0x02f5, 0x02f9, 0x02f9, 0x0305, 0x0305, 0x030e, + 0x030e, 0x030e, 0x030e, 0x030e, 0x0314, 0x0314, 0x031c, 0x0324, + 0x032a, 0x032f, 0x032f, 0x0336, 0x0336, 0x0336, 0x0345, 0x034d, + 0x0351, 0x0355, 0x0363, 0x036b, 0x037c, 0x0380, 0x0386, 0x0390, // Entry 80 - BF - 0x03bb, 0x03bb, 0x03bb, 0x03c4, 0x03c4, 0x03cd, 0x03d9, 0x03e1, - 0x03f4, 0x0406, 0x0417, 0x041f, 0x041f, 0x0425, 0x0431, 0x0437, - 0x0437, 0x043b, 0x0442, 0x0449, 0x0451, 0x0457, 0x045d, 0x0467, - 0x046f, 0x046f, 0x0479, 0x047c, 0x048a, 0x048a, 0x048a, 0x0496, - 0x04b2, 0x04b4, 0x04bb, 0x04bf, 0x04bf, 0x04c3, 0x04ca, 0x04cf, - 0x04e3, -} // Size: 362 bytes - -var ptPTScriptStr string = "" + // Size: 103 bytes + 0x0397, 0x03a1, 0x03a7, 0x03a7, 0x03b1, 0x03bc, 0x03c4, 0x03c4, + 0x03c4, 0x03c4, 0x03cd, 0x03cd, 0x03d6, 0x03e2, 0x03ea, 0x03fd, + 0x040f, 0x0420, 0x0428, 0x0428, 0x042e, 0x043a, 0x0440, 0x0440, + 0x0444, 0x044b, 0x0452, 0x045a, 0x0460, 0x0466, 0x0470, 0x0478, + 0x0478, 0x0482, 0x0485, 0x0493, 0x0493, 0x0493, 0x049f, 0x04bb, + 0x04bd, 0x04c4, 0x04d9, 0x04de, 0x04e2, 0x04e9, 0x04ee, 0x0502, +} // Size: 376 bytes + +const ptPTScriptStr string = "" + // Size: 108 bytes "arménioegípcio demóticoegípcio hieráticoguzerateindussiloti nagritai let" + - "elugusímbolosnão escrito" + "eluguemojisímbolosnão escrito" -var ptPTScriptIdx = []uint16{ // 167 elements +var ptPTScriptIdx = []uint16{ // 174 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0008, 0x0008, 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, + 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x0035, 0x0035, 0x0035, 0x0035, 0x003a, 0x003a, 0x003a, 0x003a, // Entry 40 - 7F 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, @@ -27541,268 +31154,269 @@ var ptPTScriptIdx = []uint16{ // 167 elements 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, // Entry 80 - BF - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046, 0x0046, + 0x0046, 0x0046, 0x0046, 0x0046, 0x004c, 0x004c, 0x004c, 0x004c, + 0x004c, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005b, 0x0067, -} // Size: 358 bytes + 0x0052, 0x0052, 0x0052, 0x0057, 0x0060, 0x006c, +} // Size: 372 bytes -var roScriptStr string = "" + // Size: 825 bytes +const roScriptStr string = "" + // Size: 858 bytes "arabăarmeanăbalinezăbengalezăbopomofobraillesilabică aborigenă canadiană" + " unificatăcoptăcipriotăchirilicăchirilică slavonă bisericească vechedeva" + "nagarimormonădemotică egipteanăhieratică egipteanăhieroglife egipteneeti" + "opianăgeorgiană bisericeascăgeorgianăglagoliticăgoticăgreacăgujaratigurm" + - "ukhihangulhanhan simplificatăhan tradiționalăebraicăhiraganakatakana sau" + - " hiraganamaghiară vecheindusitalică vechejavanezăjaponezăkatakanakhmerăk" + - "annadacoreeanălaoțianălatină Frakturlatină gaelicălatinălineară Alineară" + - " Blidianăhieroglife mayamalayalammongolăbirmanăoriyafenicianărunicăsinga" + - "lezăsiriacăsiriacă occidentalăsiriacă orientalătamilăteluguberberăthaana" + - "thailandezătibetanăpersană vechecuneiformă sumero-akkadianămoștenităsimb" + - "olurinescrisăcomunăscriere necunoscută" - -var roScriptIdx = []uint16{ // 169 elements + "ukhihanbhangulhanhan simplificatăhan tradiționalăebraicăhiraganakatakana" + + " sau hiraganamaghiară vecheindusitalică vechejamojavanezăjaponezăkatakan" + + "akhmerăkannadacoreeanălaoțianălatină Frakturlatină gaelicălatinălineară " + + "Alineară Blidianăhieroglife mayamalayalammongolăbirmanăoriyafenicianărun" + + "icăsingalezăsiriacăsiriacă occidentalăsiriacă orientalătamilăteluguberbe" + + "răthaanathailandezătibetanăpersană vechecuneiformă sumero-akkadianămoște" + + "nitănotație matematicăemojisimbolurinescrisăcomunăscriere necunoscută" + +var roScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, 0x000e, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0021, 0x0021, 0x0029, 0x0029, - 0x0030, 0x0030, 0x0030, 0x0030, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x0060, 0x0069, 0x0073, 0x009a, 0x00a4, 0x00ac, 0x00ac, - 0x00c0, 0x00d5, 0x00e8, 0x00e8, 0x00f2, 0x010a, 0x0114, 0x0120, - 0x0127, 0x0127, 0x012e, 0x0136, 0x013e, 0x0144, 0x0147, 0x0147, - 0x0158, 0x016a, 0x016a, 0x0172, 0x017a, 0x017a, 0x017a, 0x018f, - 0x019e, 0x01a3, 0x01b1, 0x01ba, 0x01c3, 0x01c3, 0x01c3, 0x01cb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, + 0x000e, 0x0017, 0x0017, 0x0017, 0x0017, 0x0021, 0x0021, 0x0021, + 0x0029, 0x0029, 0x0030, 0x0030, 0x0030, 0x0030, 0x005a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x0060, 0x0069, 0x0073, 0x009a, 0x00a4, + 0x00ac, 0x00ac, 0x00c0, 0x00d5, 0x00e8, 0x00e8, 0x00f2, 0x010a, + 0x0114, 0x0120, 0x0127, 0x0127, 0x012e, 0x0136, 0x013e, 0x0142, + 0x0148, 0x014b, 0x014b, 0x015c, 0x016e, 0x016e, 0x0176, 0x017e, + 0x017e, 0x017e, 0x0193, 0x01a2, 0x01a7, 0x01b5, 0x01b9, 0x01c2, // Entry 40 - 7F - 0x01cb, 0x01d2, 0x01d2, 0x01d9, 0x01e2, 0x01e2, 0x01e2, 0x01e2, - 0x01ec, 0x01fb, 0x020b, 0x0212, 0x0212, 0x0212, 0x021c, 0x0226, - 0x0226, 0x0226, 0x0226, 0x022e, 0x022e, 0x022e, 0x022e, 0x023d, - 0x023d, 0x023d, 0x023d, 0x0246, 0x0246, 0x024e, 0x024e, 0x024e, - 0x024e, 0x024e, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, - 0x025b, 0x025b, 0x025b, 0x025b, 0x0265, 0x0265, 0x0265, 0x0265, - 0x0265, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, + 0x01cb, 0x01cb, 0x01cb, 0x01d3, 0x01d3, 0x01da, 0x01da, 0x01e1, + 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01f4, 0x0203, 0x0213, 0x021a, + 0x021a, 0x021a, 0x0224, 0x022e, 0x022e, 0x022e, 0x022e, 0x0236, + 0x0236, 0x0236, 0x0236, 0x0236, 0x0245, 0x0245, 0x0245, 0x0245, + 0x024e, 0x024e, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x025e, + 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, + 0x025e, 0x0263, 0x0263, 0x0263, 0x0263, 0x0263, 0x0263, 0x0263, + 0x0263, 0x0263, 0x0263, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, // Entry 80 - BF - 0x026c, 0x026c, 0x026c, 0x0276, 0x0276, 0x0276, 0x0276, 0x027e, - 0x027e, 0x0293, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02ad, - 0x02ad, 0x02ad, 0x02b3, 0x02b3, 0x02bb, 0x02bb, 0x02c1, 0x02cd, - 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02e4, - 0x0301, 0x0301, 0x030c, 0x030c, 0x030c, 0x0315, 0x031e, 0x0325, - 0x0339, -} // Size: 362 bytes - -var ruScriptStr string = "" + // Size: 3384 bytes + 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, + 0x0274, 0x0274, 0x027e, 0x027e, 0x027e, 0x027e, 0x0286, 0x0286, + 0x029b, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02b5, 0x02b5, + 0x02b5, 0x02bb, 0x02bb, 0x02c3, 0x02c3, 0x02c9, 0x02d5, 0x02de, + 0x02de, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de, 0x02ec, 0x0309, + 0x0309, 0x0314, 0x0328, 0x032d, 0x0336, 0x033f, 0x0346, 0x035a, +} // Size: 376 bytes + +const ruScriptStr string = "" + // Size: 3416 bytes "афакаарабицаарамейскаяармянскаяавестийскаябалийскаябамумбасса (вах)батак" + "скаябенгальскаяблиссимволикабопомофобрахмиБрайлябугинизийскаябухидчакми" + "йскаяканадское слоговое письмокарийскаячамскаячерокикирткоптскаякипрска" + "якириллицастарославянскаядеванагаридезеретдуплоянская скорописьегипетск" + "ая демотическаяегипетская иератическаяегипетская иероглифическаяэфиопск" + "аягрузинская хуцуригрузинскаяглаголицаготскаягрантхагреческаягуджаратиг" + - "урмукхихангылькитайскаяханунуупрощенная китайскаятрадиционная китайская" + - "ивритхираганалувийские иероглифыпахау хмонгкатакана или хираганастарове" + - "нгерскаяхараппская (письменность долины Инда)староитальянскаяяванскаяяп" + - "онскаячжурчжэньскаякайакатаканакхароштхикхмерскаяходжикиканнадакорейска" + - "якпеллекайтхиланналаосскаялатинская фрактурагэльская латинскаялатиницал" + - "епхалимбулинейное письмо Алинейное письмо Блисуломалицианлидийскаяманде" + - "йскаяманихейскаямайямендемероитская курсивнаямероитскаямалаяльскаямонго" + - "льскаяазбука мунамроманипуримьянманскаясеверноаравийскоенабатейскаянаси" + - " гебанконюй-шуогамическаяол чикиорхоно-енисейскаяорияосманскаяпальмирыдр" + - "евнепермскаяпагспапехлевийскаяпахлави псалтирнаяпахлави книжнаяфиникийс" + - "каяполлардовская фонетикапарфянскаяреджангскаяронго-ронгоруническаясама" + - "ритянскаясаратистароюжноарабскаясаураштраязык знаковалфавит Шоушарадакх" + - "удавадисингальскаясора-сонпенгсунданскаясилоти нагрисирийскаясирийская " + - "эстрангелозападносирийскаявосточно-сирийскаятагбанватакритайский леновы" + - "й тайский летамильскаятангутское менятай-вьеттелугутенгварскаядревнелив" + - "ийскаятагалогтаанатайскаятибетскаятирхутаугаритскаявайскаявидимая речьв" + - "аранг-кшитиволеаистароперсидскаяшумеро-аккадская клинописьиунаследованн" + - "аяматематические обозначениясимволыбесписьменныйобщепринятаянеизвестная" + - " письменность" - -var ruScriptIdx = []uint16{ // 169 elements + "урмукхиханьбхангылькитайскаяханунуупрощенная китайскаятрадиционная кита" + + "йскаяеврейскаяхираганалувийские иероглифыпахау хмонгкатакана или хирага" + + "настаровенгерскаяхараппская (письменность долины Инда)староитальянскаяд" + + "жамояванскаяяпонскаячжурчжэньскаякайакатаканакхароштхикхмерскаяходжикик" + + "аннадакорейскаякпеллекайтхиланналаосскаялатинская фрактурагэльская лати" + + "нскаялатиницалепхалимбулинейное письмо Алинейное письмо Блисуломалициан" + + "лидийскаямандейскаяманихейскаямайямендемероитская курсивнаямероитскаяма" + + "лаяламмонгольскаяазбука мунамроманипуримьянманскаясеверноаравийскоенаба" + + "тейскаянаси гебанконюй-шуогамическаяол чикиорхоно-енисейскаяорияосманск" + + "аяпальмирыдревнепермскаяпагспапехлевийскаяпахлави псалтирнаяпахлави кни" + + "жнаяфиникийскаяполлардовская фонетикапарфянскаяреджангскаяронго-ронгору" + + "ническаясамаритянскаясаратистароюжноарабскаясаураштраязык знаковалфавит" + + " Шоушарадакхудавадисингальскаясора-сонпенгсунданскаясилоти нагрисирийска" + + "ясирийская эстрангелозападносирийскаявосточно-сирийскаятагбанватакритай" + + "ский леновый тайский летамильскаятангутское менятай-вьеттелугутенгварск" + + "аядревнеливийскаятагалогтанатайскаятибетскаятирхутаугаритскаявайскаявид" + + "имая речьваранг-кшитиволеаистароперсидскаяшумеро-аккадская клинописьиун" + + "аследованнаяматематические обозначенияэмодзисимволыбесписьменныйобщепри" + + "нятаянеизвестная письменность" + +var ruScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000a, 0x000a, 0x000a, 0x0018, 0x002c, 0x003e, 0x0054, - 0x0066, 0x0070, 0x0083, 0x0095, 0x00ab, 0x00c5, 0x00d5, 0x00e1, - 0x00ed, 0x0107, 0x0111, 0x0125, 0x0155, 0x0167, 0x0175, 0x0181, - 0x0189, 0x0199, 0x01a9, 0x01bb, 0x01d9, 0x01ed, 0x01fb, 0x0224, - 0x0251, 0x027e, 0x02b1, 0x02b1, 0x02c3, 0x02e4, 0x02f8, 0x030a, - 0x0318, 0x0326, 0x0338, 0x034a, 0x035a, 0x0368, 0x037a, 0x0386, - 0x03ad, 0x03d8, 0x03d8, 0x03e2, 0x03f2, 0x0417, 0x042c, 0x0454, - 0x0472, 0x04b7, 0x04d7, 0x04e7, 0x04f7, 0x0511, 0x0519, 0x0529, + 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x0018, 0x002c, 0x003e, + 0x0054, 0x0066, 0x0070, 0x0083, 0x0095, 0x00ab, 0x00ab, 0x00c5, + 0x00d5, 0x00e1, 0x00ed, 0x0107, 0x0111, 0x0125, 0x0155, 0x0167, + 0x0175, 0x0181, 0x0189, 0x0199, 0x01a9, 0x01bb, 0x01d9, 0x01ed, + 0x01fb, 0x0224, 0x0251, 0x027e, 0x02b1, 0x02b1, 0x02c3, 0x02e4, + 0x02f8, 0x030a, 0x0318, 0x0326, 0x0338, 0x034a, 0x035a, 0x0364, + 0x0372, 0x0384, 0x0390, 0x03b7, 0x03e2, 0x03e2, 0x03f4, 0x0404, + 0x0429, 0x043e, 0x0466, 0x0484, 0x04c9, 0x04e9, 0x04f3, 0x0503, // Entry 40 - 7F - 0x053b, 0x054d, 0x055b, 0x0569, 0x057b, 0x0587, 0x0593, 0x059d, - 0x05ad, 0x05d0, 0x05f3, 0x0603, 0x060d, 0x0617, 0x0637, 0x0657, - 0x065f, 0x0667, 0x0673, 0x0685, 0x0685, 0x0699, 0x06af, 0x06b7, - 0x06c1, 0x06e8, 0x06fc, 0x0712, 0x0712, 0x0728, 0x073d, 0x0743, - 0x0753, 0x0753, 0x0769, 0x078b, 0x07a1, 0x07b2, 0x07b8, 0x07c3, - 0x07d9, 0x07e6, 0x0807, 0x080f, 0x0821, 0x0831, 0x0831, 0x084d, - 0x0859, 0x0871, 0x0894, 0x08b1, 0x08c7, 0x08f2, 0x0906, 0x091c, - 0x0931, 0x0945, 0x095f, 0x096b, 0x098d, 0x099f, 0x09b4, 0x09c9, + 0x0513, 0x052d, 0x0535, 0x0545, 0x0557, 0x0569, 0x0577, 0x0585, + 0x0597, 0x05a3, 0x05af, 0x05b9, 0x05c9, 0x05ec, 0x060f, 0x061f, + 0x0629, 0x0633, 0x0653, 0x0673, 0x067b, 0x0683, 0x068f, 0x06a1, + 0x06a1, 0x06b5, 0x06cb, 0x06cb, 0x06d3, 0x06dd, 0x0704, 0x0718, + 0x0728, 0x0728, 0x073e, 0x0753, 0x0759, 0x0769, 0x0769, 0x077f, + 0x07a1, 0x07b7, 0x07b7, 0x07c8, 0x07ce, 0x07d9, 0x07ef, 0x07fc, + 0x081d, 0x0825, 0x0825, 0x0837, 0x0847, 0x0847, 0x0863, 0x086f, + 0x0887, 0x08aa, 0x08c7, 0x08dd, 0x0908, 0x091c, 0x0932, 0x0947, // Entry 80 - BF - 0x09d5, 0x09d5, 0x09e7, 0x09fd, 0x0a14, 0x0a28, 0x0a3f, 0x0a51, - 0x0a78, 0x0a98, 0x0abb, 0x0acb, 0x0ad5, 0x0ae8, 0x0b06, 0x0b1a, - 0x0b37, 0x0b46, 0x0b52, 0x0b68, 0x0b86, 0x0b94, 0x0b9e, 0x0bac, - 0x0bbe, 0x0bcc, 0x0be0, 0x0bee, 0x0c05, 0x0c1c, 0x0c28, 0x0c46, - 0x0c78, 0x0c7a, 0x0c96, 0x0cc9, 0x0cc9, 0x0cd7, 0x0cf1, 0x0d09, - 0x0d38, -} // Size: 362 bytes - -var siScriptStr string = "" + // Size: 809 bytes + 0x095b, 0x0975, 0x0981, 0x09a3, 0x09b5, 0x09ca, 0x09df, 0x09eb, + 0x09eb, 0x09fd, 0x0a13, 0x0a2a, 0x0a3e, 0x0a55, 0x0a67, 0x0a8e, + 0x0aae, 0x0ad1, 0x0ae1, 0x0aeb, 0x0afe, 0x0b1c, 0x0b30, 0x0b4d, + 0x0b5c, 0x0b68, 0x0b7e, 0x0b9c, 0x0baa, 0x0bb2, 0x0bc0, 0x0bd2, + 0x0be0, 0x0bf4, 0x0c02, 0x0c19, 0x0c30, 0x0c3c, 0x0c5a, 0x0c8c, + 0x0c8e, 0x0caa, 0x0cdd, 0x0ce9, 0x0cf7, 0x0d11, 0x0d29, 0x0d58, +} // Size: 376 bytes + +const siScriptStr string = "" + // Size: 940 bytes "අරාබිආර්මේනියානුබෙංගාලිබොපොමොෆෝබ්\u200dරේල්සිරිලික්දේවනාගරීඉතියෝපියානුජෝ" + - "ර්ජියානුග්\u200dරීකගුජරාටිගුර්මුඛිහැන්ගුල්හන්සුළුකළ හෑන්සම්ප්\u200dරදා" + - "යික හෑන්හීබෲහිරඟනාජපන්කතකනාකමර්කණ්ණඩකොරියානුලාඕලතින්මලයාලම්මොන්ගෝලියාන" + - "ුමියන්මාරඔරියාසිංහලදෙමළතෙළිඟුතානතායිටි\u200dබෙට්සංකේතඅලිඛිතපොදු.නොදත් " + - "අක්ෂර මාලාව" + "ර්ජියානුග්\u200dරීකගුජරාටිගුර්මුඛිහැන්ඩ්බ්හැන්ගුල්හන්සුළුකළ හෑන්සම්ප්" + + "\u200dරදායික හෑන්හීබෲහිරඟනාජෑපනීස් සිලබරීස්ජාමොජපන්කතකනාකමර්කණ්ණඩකොරියාන" + + "ුලාඕලතින්මලයාලම්මොන්ගෝලියානුමියන්මාරඔරියාසිංහලදෙමළතෙළිඟුතානතායිටි" + + "\u200dබෙට්ගනිතමය සංකේතඉමොජිසංකේතඅලිඛිතපොදු.නොදත් අක්ෂර මාලාව" -var siScriptIdx = []uint16{ // 169 elements +var siScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0045, 0x0045, 0x005d, 0x005d, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x008a, 0x008a, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00c3, 0x00c3, 0x00e1, 0x00e1, - 0x00e1, 0x00e1, 0x00f3, 0x0108, 0x0120, 0x0138, 0x0141, 0x0141, - 0x0160, 0x0191, 0x0191, 0x019d, 0x01af, 0x01af, 0x01af, 0x01af, - 0x01af, 0x01af, 0x01af, 0x01af, 0x01bb, 0x01bb, 0x01bb, 0x01ca, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0030, + 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0045, 0x0045, 0x0045, + 0x005d, 0x005d, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x008a, 0x008a, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00c3, 0x00c3, + 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00f3, 0x0108, 0x0120, 0x0138, + 0x0150, 0x0159, 0x0159, 0x0178, 0x01a9, 0x01a9, 0x01b5, 0x01c7, + 0x01c7, 0x01c7, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x0201, 0x0201, // Entry 40 - 7F - 0x01ca, 0x01d6, 0x01d6, 0x01e5, 0x01fd, 0x01fd, 0x01fd, 0x01fd, - 0x0206, 0x0206, 0x0206, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x022a, 0x022a, 0x024e, 0x024e, 0x024e, - 0x024e, 0x024e, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, - 0x0266, 0x0266, 0x0266, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, - 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, - 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, + 0x020d, 0x020d, 0x020d, 0x021c, 0x021c, 0x0228, 0x0228, 0x0237, + 0x024f, 0x024f, 0x024f, 0x024f, 0x0258, 0x0258, 0x0258, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, + 0x027c, 0x027c, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02b8, + 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, + 0x02b8, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, + 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, // Entry 80 - BF - 0x0275, 0x0275, 0x0275, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0290, - 0x0290, 0x0290, 0x02a2, 0x02a2, 0x02a2, 0x02a2, 0x02ab, 0x02b7, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02db, 0x02ed, 0x02fa, - 0x0329, -} // Size: 362 bytes - -var skScriptStr string = "" + // Size: 487 bytes + 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, + 0x02c7, 0x02c7, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, + 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02e2, 0x02e2, + 0x02e2, 0x02f4, 0x02f4, 0x02f4, 0x02f4, 0x02fd, 0x0309, 0x031e, + 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, + 0x031e, 0x031e, 0x0340, 0x034f, 0x035e, 0x0370, 0x037d, 0x03ac, +} // Size: 376 bytes + +const skScriptStr string = "" + // Size: 540 bytes "arabskéarménskebalijskýbengálskebopomofobraillovocyrilikadévanágaríegypt" + - "ské hieroglyfyetiópskegruzínskehlaholikagotickýgréckegudžarátígurmukhiha" + - "ngulčínskečínske zjednodušenéčínske tradičnéhebrejskéhiraganajaponskékat" + - "akanakhmérskekannadskékórejskélaoskélatinkalineárna Alineárna Bmayské hi" + - "eroglyfymalajálamskemongolskébarmskéuríjskeosmanskýRunové písmosinhálske" + - "tamilskételugskétánathajskétibetskésymbolybez zápisuvšeobecnéneznáme pís" + - "mo" - -var skScriptIdx = []uint16{ // 169 elements + "ské hieroglyfyetiópskegruzínskehlaholikagotickýgréckegudžarátígurmukhičí" + + "nske a bopomofohangulčínskečínske zjednodušenéčínske tradičnéhebrejskéhi" + + "raganakanajamojaponskékatakanakhmérskekannadskékórejskélaoskélatinkaline" + + "árna Alineárna Bmayské hieroglyfymalajálamskemongolskébarmskéuríjskeosm" + + "anskýRunové písmosinhálsketamilskételugskétánathajskétibetskématematický" + + " zápisemodžisymbolybez zápisuvšeobecnéneznáme písmo" + +var skScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0011, - 0x001a, 0x001a, 0x001a, 0x001a, 0x0024, 0x0024, 0x002c, 0x002c, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x004a, 0x004a, 0x004a, - 0x004a, 0x004a, 0x005e, 0x005e, 0x0067, 0x0067, 0x0071, 0x007a, - 0x0082, 0x0082, 0x0089, 0x0095, 0x009d, 0x00a3, 0x00ab, 0x00ab, - 0x00c2, 0x00d5, 0x00d5, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, + 0x0011, 0x001a, 0x001a, 0x001a, 0x001a, 0x0024, 0x0024, 0x0024, + 0x002c, 0x002c, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x005e, 0x005e, 0x0067, 0x0067, + 0x0071, 0x007a, 0x0082, 0x0082, 0x0089, 0x0095, 0x009d, 0x00b0, + 0x00b6, 0x00be, 0x00be, 0x00d5, 0x00e8, 0x00e8, 0x00f2, 0x00fa, + 0x00fa, 0x00fa, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0102, 0x0102, // Entry 40 - 7F - 0x00f8, 0x0101, 0x0101, 0x010b, 0x0115, 0x0115, 0x0115, 0x0115, - 0x011c, 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x012e, 0x0139, - 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x014b, - 0x014b, 0x014b, 0x014b, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x016a, 0x0172, 0x017b, 0x017b, 0x017b, 0x017b, - 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, - 0x017b, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, + 0x010b, 0x010b, 0x010b, 0x0113, 0x0113, 0x011c, 0x011c, 0x0126, + 0x0130, 0x0130, 0x0130, 0x0130, 0x0137, 0x0137, 0x0137, 0x013e, + 0x013e, 0x013e, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0166, 0x0166, 0x0166, 0x0166, + 0x0173, 0x0173, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x0185, + 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, + 0x0185, 0x018d, 0x018d, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, + 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, // Entry 80 - BF - 0x0189, 0x0189, 0x0189, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, - 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x019c, - 0x019c, 0x019c, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01aa, 0x01b2, - 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, - 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d8, - 0x01e7, -} // Size: 362 bytes - -var slScriptStr string = "" + // Size: 1487 bytes + 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, + 0x01a4, 0x01a4, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, + 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01b7, 0x01b7, + 0x01b7, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c5, 0x01cd, 0x01d6, + 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, + 0x01d6, 0x01d6, 0x01e9, 0x01f0, 0x01f7, 0x0202, 0x020d, 0x021c, +} // Size: 376 bytes + +const slScriptStr string = "" + // Size: 1495 bytes "arabskiimperialno-aramejskiarmenskiavestanskibalijskibataškibengalskizna" + "kovna pisava Blissbopomofobramanskibraillova pisavabuginskibuhidskipoeno" + "tena zlogovna pisava kanadskih staroselcevChamčerokeškikirtkoptskiciprsk" + "icirilicastarocerkvenoslovanska cirilicadevanagarščicafonetska pisava de" + "seretdemotska egipčanska pisavahieratska egipčanska pisavaegipčanska sli" + "kovna pisavaetiopskicerkvenogruzijskigruzijskiglagoliškigotskigrškigudža" + - "ratskigurmukihangulkanjihanunskipoenostavljena pisava hantradicionalna p" + - "isava hanhebrejskihiraganapahavhmonska zlogovna pisavakatakana ali hirag" + - "anastaroogrskiinduškistaroitalskijavanskijaponskikarenskikatakanagandars" + - "kikmerskikanadskikorejskikajatskilaoškifrakturagelski latiničnilatinical" + - "epškilimbuškilinearna pisava Alinearna pisava Blicijskilidijskimandanski" + - "manihejskimajevska slikovna pisavameroitskimalajalamskimongolskaMoonova " + - "pisava za slepemanipurskimjanmarskiogamskisantalskiorkonskiorijskiosmans" + - "kistaropermijskipagpajskivrezani napisi pahlavipsalmski pahlaviknjižno p" + - "alavanskifeničanskiPollardova fonetska pisavarongorongorunskisamaritansk" + - "isaratskiznakovna pisavašojevskisinhalskisundanskisiletsko-nagarijskisir" + - "ijskisirska abeceda estrangelozahodnosirijskivzhodnosirijskitagbanskitam" + - "ilskitajsko-vietnamskiteluškitengvarskitifinajskitagaloškitanajskitajski" + - "tibetanskiugaritskizlogovna pisava vaividni govorstaroperzijskisumersko-" + - "akadski klinopispodedovanmatematična znamenjasimbolinenapisanosplošnonez" + - "nan ali neveljaven zapis" - -var slScriptIdx = []uint16{ // 169 elements + "ratskigurmukiHanbhangulkanjihanunskipoenostavljena pisava hantradicional" + + "na pisava hanhebrejskihiraganapahavhmonska zlogovna pisavakatakana ali h" + + "iraganastaroogrskiinduškistaroitalskiJamojavanskijaponskikarenskikatakan" + + "agandarskikmerskikanadskikorejskikajatskilaoškifrakturagelski latiničnil" + + "atinicalepškilimbuškilinearna pisava Alinearna pisava Blicijskilidijskim" + + "andanskimanihejskimajevska slikovna pisavameroitskimalajalamskimongolska" + + "Moonova pisava za slepemanipurskimjanmarskiogamskisantalskiorkonskiorijs" + + "kiosmanskistaropermijskipagpajskivrezani napisi pahlavipsalmski pahlavik" + + "njižno palavanskifeničanskiPollardova fonetska pisavarongorongorunskisam" + + "aritanskisaratskiznakovna pisavašojevskisinhalskisundanskisiletsko-nagar" + + "ijskisirijskisirska abeceda estrangelozahodnosirijskivzhodnosirijskitagb" + + "anskitamilskitajsko-vietnamskiteluškitengvarskitifinajskitagaloškitanajs" + + "kitajskitibetanskiugaritskizlogovna pisava vaividni govorstaroperzijskis" + + "umersko-akadski klinopispodedovanmatematična znamenjasimbolinenapisanosp" + + "lošnoneznan ali neveljaven zapis" + +var slScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x001b, 0x0023, 0x002d, - 0x0035, 0x0035, 0x0035, 0x003d, 0x0046, 0x005b, 0x0063, 0x006c, - 0x007c, 0x0084, 0x008c, 0x008c, 0x00bb, 0x00bb, 0x00bf, 0x00ca, - 0x00ce, 0x00d5, 0x00dc, 0x00e4, 0x0103, 0x0113, 0x012a, 0x012a, - 0x0145, 0x0161, 0x017c, 0x017c, 0x0184, 0x0195, 0x019e, 0x01a9, - 0x01af, 0x01af, 0x01b5, 0x01c1, 0x01c8, 0x01ce, 0x01d3, 0x01db, - 0x01f4, 0x020c, 0x020c, 0x0215, 0x021d, 0x021d, 0x0239, 0x024e, - 0x0259, 0x0261, 0x026d, 0x0275, 0x027d, 0x027d, 0x0285, 0x028d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x001b, 0x0023, + 0x002d, 0x0035, 0x0035, 0x0035, 0x003d, 0x0046, 0x0046, 0x005b, + 0x0063, 0x006c, 0x007c, 0x0084, 0x008c, 0x008c, 0x00bb, 0x00bb, + 0x00bf, 0x00ca, 0x00ce, 0x00d5, 0x00dc, 0x00e4, 0x0103, 0x0113, + 0x012a, 0x012a, 0x0145, 0x0161, 0x017c, 0x017c, 0x0184, 0x0195, + 0x019e, 0x01a9, 0x01af, 0x01af, 0x01b5, 0x01c1, 0x01c8, 0x01cc, + 0x01d2, 0x01d7, 0x01df, 0x01f8, 0x0210, 0x0210, 0x0219, 0x0221, + 0x0221, 0x023d, 0x0252, 0x025d, 0x0265, 0x0271, 0x0275, 0x027d, // Entry 40 - 7F - 0x0296, 0x029d, 0x029d, 0x02a5, 0x02ad, 0x02ad, 0x02b5, 0x02b5, - 0x02bc, 0x02c4, 0x02d5, 0x02dd, 0x02e4, 0x02ed, 0x02fe, 0x030f, - 0x030f, 0x030f, 0x0317, 0x031f, 0x031f, 0x0328, 0x0332, 0x034a, - 0x034a, 0x034a, 0x0353, 0x035f, 0x035f, 0x0368, 0x037f, 0x037f, - 0x0389, 0x0389, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393, - 0x039a, 0x03a3, 0x03ab, 0x03b2, 0x03ba, 0x03ba, 0x03ba, 0x03c8, - 0x03d1, 0x03e7, 0x03f7, 0x040a, 0x0415, 0x042f, 0x042f, 0x042f, - 0x0439, 0x043f, 0x044b, 0x0453, 0x0453, 0x0453, 0x0462, 0x046b, + 0x0285, 0x0285, 0x028d, 0x0295, 0x029e, 0x02a5, 0x02a5, 0x02ad, + 0x02b5, 0x02b5, 0x02bd, 0x02bd, 0x02c4, 0x02cc, 0x02dd, 0x02e5, + 0x02ec, 0x02f5, 0x0306, 0x0317, 0x0317, 0x0317, 0x031f, 0x0327, + 0x0327, 0x0330, 0x033a, 0x033a, 0x0352, 0x0352, 0x0352, 0x035b, + 0x0367, 0x0367, 0x0370, 0x0387, 0x0387, 0x0391, 0x0391, 0x039b, + 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x03a2, 0x03ab, + 0x03b3, 0x03ba, 0x03ba, 0x03c2, 0x03c2, 0x03c2, 0x03d0, 0x03d9, + 0x03ef, 0x03ff, 0x0412, 0x041d, 0x0437, 0x0437, 0x0437, 0x0441, // Entry 80 - BF - 0x046b, 0x046b, 0x046b, 0x0474, 0x0474, 0x047d, 0x0490, 0x0498, - 0x04b1, 0x04c0, 0x04cf, 0x04d8, 0x04d8, 0x04d8, 0x04d8, 0x04e0, - 0x04e0, 0x04f1, 0x04f9, 0x0503, 0x050d, 0x0517, 0x051f, 0x0525, - 0x052f, 0x052f, 0x0538, 0x054b, 0x0556, 0x0556, 0x0556, 0x0564, - 0x057d, 0x057d, 0x0586, 0x059b, 0x059b, 0x05a2, 0x05ac, 0x05b4, - 0x05cf, -} // Size: 362 bytes - -var sqScriptStr string = "" + // Size: 290 bytes + 0x0447, 0x0453, 0x045b, 0x045b, 0x045b, 0x046a, 0x0473, 0x0473, + 0x0473, 0x0473, 0x047c, 0x047c, 0x0485, 0x0498, 0x04a0, 0x04b9, + 0x04c8, 0x04d7, 0x04e0, 0x04e0, 0x04e0, 0x04e0, 0x04e8, 0x04e8, + 0x04f9, 0x0501, 0x050b, 0x0515, 0x051f, 0x0527, 0x052d, 0x0537, + 0x0537, 0x0540, 0x0553, 0x055e, 0x055e, 0x055e, 0x056c, 0x0585, + 0x0585, 0x058e, 0x05a3, 0x05a3, 0x05aa, 0x05b4, 0x05bc, 0x05d7, +} // Size: 376 bytes + +const sqScriptStr string = "" + // Size: 355 bytes "arabikarmenbengalbopomofbrailishtcirilikdevanagaretiopikgjeorgjiangrekgu" + - "xharatgurmukhangulhanhan i thjeshtuarhan tradicionalhebraikhiraganjapone" + - "zkatakankmerkanadkoreanlaosishtlatinmalajalammongolbirmanorijasinhaltami" + - "ltelugtanishttajlandeztibetishtme simbolei pashkruari zakonshëmi panjohu" + - "r" + "xharatgurmukhanbikhangulhanhan i thjeshtuarhan tradicionalhebraikhiragan" + + "alfabet rrokjesor japonezjamosishtjaponezkatakankmerkanadkoreanlaosishtl" + + "atinmalajalammongolbirmanorijasinhaltamiltelugtanishttajlandeztibetishts" + + "imbole matematikoreemojime simbolei pashkruari zakonshëmi panjohur" -var sqScriptIdx = []uint16{ // 169 elements +var sqScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x000b, 0x0011, 0x0011, 0x0018, 0x0018, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0028, 0x0028, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0046, 0x004e, 0x0054, 0x005a, 0x005d, 0x005d, - 0x006d, 0x007c, 0x007c, 0x0083, 0x008a, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x008a, 0x008a, 0x0091, 0x0091, 0x0091, 0x0098, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000b, + 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x0011, 0x0011, 0x0011, + 0x0018, 0x0018, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0028, 0x0028, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0046, 0x004e, 0x0054, 0x005a, + 0x0060, 0x0063, 0x0063, 0x0073, 0x0082, 0x0082, 0x0089, 0x0090, + 0x0090, 0x0090, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00b2, 0x00b2, // Entry 40 - 7F - 0x0098, 0x009c, 0x009c, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00af, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00bd, 0x00bd, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, - 0x00c9, 0x00c9, 0x00c9, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00b9, 0x00b9, 0x00b9, 0x00c0, 0x00c0, 0x00c4, 0x00c4, 0x00c9, + 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00d7, 0x00d7, 0x00d7, 0x00dc, + 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, + 0x00e5, 0x00e5, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f1, + 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, + 0x00f1, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, // Entry 80 - BF - 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, - 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d9, - 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e5, 0x00ee, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0101, 0x010c, 0x0118, - 0x0122, -} // Size: 362 bytes - -var srScriptStr string = "" + // Size: 3698 bytes + 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, + 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x0101, 0x0101, + 0x0101, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, 0x0116, 0x011f, + 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, + 0x011f, 0x011f, 0x0133, 0x0138, 0x0142, 0x014d, 0x0159, 0x0163, +} // Size: 376 bytes + +const srScriptStr string = "" + // Size: 3732 bytes "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" + "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо писмо" + "браманско писмоБрајево писмобугинско писмобухидско писмочакманско писмо" + @@ -27810,57 +31424,57 @@ var srScriptStr string = "" + // Size: 3698 bytes "цирт писмокоптичко писмокипарско писмоћирилицаСтарословенска црквена ћи" + "рилицадеванагариДезеретегипатско народно писмоегипатско хијератско писм" + "оегипатски хијероглифиетиопско писмогрузијско кхутсури писмогрузијско п" + - "исмоглагољицаГотикагрчко писмогуџаратско писмогурмуки писмохангулханхан" + - "унопоједностављено хан писмотрадиционално хан писмохебрејско писмохираг" + - "анапахав хмонг писмоКатакана или Хираганастаромађарско писмоиндушко пис" + - "мостари италикјаванско писмојапанско писмокајах-ли писмокатаканакарошти" + - " писмокмерско писмоканада писмокорејско писмокаитиланна писмолаошко писм" + - "олатиница (фрактур варијанта)галска латиницалатиницалепча писмолимбу пи" + - "смолинеарно А писмолинеарно Б писмолисијско писмолидијско писмомандеанс" + - "ко писмоманихејско писмомајански хијероглифимероитик писмомалајалам пис" + - "момонголско писмомесечево писмомеитеи мајек писмомијанмарско писмон’ко " + - "писмоогамско писмоол чики писмоорконско писмооријанско писмоосмањанско " + - "писмостаро пермикско писмопагс-па писмописани пахлавипсалтер пахлавипах" + - "лави писмоФеничанско писмопоралд фонетско писмописани партианрејанг пис" + - "моронгоронго писморунско писмосамаританско писмосарати писмосаураштра п" + - "исмознаковно писмошавијанско писмосинхалско писмосунданско писмосилоти " + - "нагри писмосиријско писмосиријско естрангело писмозападносиријско писмо" + - "писмо источне Сиријетагбанва писмотаи ле писмонови таи луетамилско писм" + - "отаи виет писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмо" + - "тајландско писмотибетанско писмоугаритско писмоваи писмовидљиви говорст" + - "ароперсијско писмосумерско-акадско кунеиформ писмоји писмонаследно писм" + - "оматематичка нотацијасимболинеписани језикзаједничко писмонепознато пис" + - "мо" - -var srScriptIdx = []uint16{ // 169 elements + "исмоглагољицаГотикагрчко писмогуџаратско писмогурмуки писмоханбхангулха" + + "нханунопоједностављено хан писмотрадиционално хан писмохебрејско писмох" + + "ираганапахав хмонг писмојапанска слоговна писмастаромађарско писмоиндуш" + + "ко писмостари италикџамојаванско писмојапанско писмокајах-ли писмокатак" + + "анакарошти писмокмерско писмоканада писмокорејско писмокаитиланна писмо" + + "лаошко писмолатиница (фрактур варијанта)галска латиницалатиницалепча пи" + + "смолимбу писмолинеарно А писмолинеарно Б писмолисијско писмолидијско пи" + + "смомандеанско писмоманихејско писмомајански хијероглифимероитик писмома" + + "лајаламско писмомонголско писмомесечево писмомеитеи мајек писмомијанмар" + + "ско писмон’ко писмоогамско писмоол чики писмоорконско писмооријанско пи" + + "смоосмањанско писмостаро пермикско писмопагс-па писмописани пахлавипсал" + + "тер пахлавипахлави писмоФеничанско писмопоралд фонетско писмописани пар" + + "тианрејанг писморонгоронго писморунско писмосамаританско писмосарати пи" + + "смосаураштра писмознаковно писмошавијанско писмосинхалско писмосунданск" + + "о писмосилоти нагри писмосиријско писмосиријско естрангело писмозападно" + + "сиријско писмописмо источне Сиријетагбанва писмотаи ле писмонови таи лу" + + "етамилско писмотаи виет писмотелугу писмотенгвар писмотифинаг писмоТага" + + "логтана писмотајландско писмотибетанско писмоугаритско писмоваи писмови" + + "дљиви говорстароперсијско писмосумерско-акадско кунеиформ писмоји писмо" + + "наследно писмоматематичка нотацијаемоџисимболинеписани језикзаједничко " + + "писмонепознато писмо" + +var srScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, 0x0087, - 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00f9, 0x0114, 0x0131, - 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, 0x021a, 0x0226, - 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, 0x02dd, 0x02dd, - 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, 0x03ca, 0x03dc, - 0x03e8, 0x03e8, 0x03fd, 0x041c, 0x0435, 0x0441, 0x0447, 0x0453, - 0x0483, 0x04af, 0x04af, 0x04cc, 0x04dc, 0x04dc, 0x04fc, 0x0524, - 0x0549, 0x0562, 0x0579, 0x0594, 0x05af, 0x05af, 0x05c9, 0x05d9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, + 0x0087, 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00d4, 0x00f9, + 0x0114, 0x0131, 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, + 0x021a, 0x0226, 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, + 0x02dd, 0x02dd, 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, + 0x03ca, 0x03dc, 0x03e8, 0x03e8, 0x03fd, 0x041c, 0x0435, 0x043d, + 0x0449, 0x044f, 0x045b, 0x048b, 0x04b7, 0x04b7, 0x04d4, 0x04e4, + 0x04e4, 0x0504, 0x0530, 0x0555, 0x056e, 0x0585, 0x058d, 0x05a8, // Entry 40 - 7F - 0x05f2, 0x060b, 0x060b, 0x0622, 0x063d, 0x063d, 0x0647, 0x065c, - 0x0673, 0x06a7, 0x06c4, 0x06d4, 0x06e9, 0x06fe, 0x071c, 0x073a, - 0x073a, 0x073a, 0x0755, 0x0770, 0x0770, 0x078f, 0x07ae, 0x07d5, - 0x07d5, 0x07d5, 0x07f0, 0x080d, 0x080d, 0x082a, 0x0845, 0x0845, - 0x0867, 0x0867, 0x0888, 0x0888, 0x0888, 0x0888, 0x089c, 0x089c, - 0x08b5, 0x08cd, 0x08e8, 0x0905, 0x0924, 0x0924, 0x0924, 0x094c, - 0x0964, 0x097f, 0x099c, 0x09b5, 0x09d4, 0x09fc, 0x0a17, 0x0a2e, - 0x0a4d, 0x0a64, 0x0a87, 0x0a9e, 0x0a9e, 0x0abb, 0x0ad6, 0x0af5, + 0x05c3, 0x05c3, 0x05dd, 0x05ed, 0x0606, 0x061f, 0x061f, 0x0636, + 0x0651, 0x0651, 0x065b, 0x0670, 0x0687, 0x06bb, 0x06d8, 0x06e8, + 0x06fd, 0x0712, 0x0730, 0x074e, 0x074e, 0x074e, 0x0769, 0x0784, + 0x0784, 0x07a3, 0x07c2, 0x07c2, 0x07e9, 0x07e9, 0x07e9, 0x0804, + 0x0827, 0x0827, 0x0844, 0x085f, 0x085f, 0x0881, 0x0881, 0x08a2, + 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08b6, 0x08b6, 0x08cf, 0x08e7, + 0x0902, 0x091f, 0x091f, 0x093e, 0x093e, 0x093e, 0x0966, 0x097e, + 0x0999, 0x09b6, 0x09cf, 0x09ee, 0x0a16, 0x0a31, 0x0a48, 0x0a67, // Entry 80 - BF - 0x0af5, 0x0af5, 0x0af5, 0x0b12, 0x0b12, 0x0b2f, 0x0b51, 0x0b6c, - 0x0b9c, 0x0bc5, 0x0beb, 0x0c06, 0x0c06, 0x0c1c, 0x0c32, 0x0c4d, - 0x0c4d, 0x0c67, 0x0c7e, 0x0c97, 0x0cb0, 0x0cbe, 0x0cd3, 0x0cf2, - 0x0d11, 0x0d11, 0x0d2e, 0x0d3f, 0x0d58, 0x0d58, 0x0d58, 0x0d7f, - 0x0dbc, 0x0dcb, 0x0de6, 0x0e0d, 0x0e0d, 0x0e1b, 0x0e36, 0x0e55, - 0x0e72, -} // Size: 362 bytes - -var srLatnScriptStr string = "" + // Size: 1953 bytes + 0x0a7e, 0x0aa1, 0x0ab8, 0x0ab8, 0x0ad5, 0x0af0, 0x0b0f, 0x0b0f, + 0x0b0f, 0x0b0f, 0x0b2c, 0x0b2c, 0x0b49, 0x0b6b, 0x0b86, 0x0bb6, + 0x0bdf, 0x0c05, 0x0c20, 0x0c20, 0x0c36, 0x0c4c, 0x0c67, 0x0c67, + 0x0c81, 0x0c98, 0x0cb1, 0x0cca, 0x0cd8, 0x0ceb, 0x0d0a, 0x0d29, + 0x0d29, 0x0d46, 0x0d57, 0x0d70, 0x0d70, 0x0d70, 0x0d97, 0x0dd4, + 0x0de3, 0x0dfe, 0x0e25, 0x0e2f, 0x0e3d, 0x0e58, 0x0e77, 0x0e94, +} // Size: 376 bytes + +const srLatnScriptStr string = "" + // Size: 1974 bytes "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" + "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pismob" + "ramansko pismoBrajevo pismobuginsko pismobuhidsko pismočakmansko pismouj" + @@ -27868,1488 +31482,2566 @@ var srLatnScriptStr string = "" + // Size: 1953 bytes "irt pismokoptičko pismokiparsko pismoćirilicaStaroslovenska crkvena ćiri" + "licadevanagariDezeretegipatsko narodno pismoegipatsko hijeratsko pismoeg" + "ipatski hijeroglifietiopsko pismogruzijsko khutsuri pismogruzijsko pismo" + - "glagoljicaGotikagrčko pismogudžaratsko pismogurmuki pismohangulhanhanuno" + - "pojednostavljeno han pismotradicionalno han pismohebrejsko pismohiragana" + - "pahav hmong pismoKatakana ili Hiraganastaromađarsko pismoinduško pismost" + - "ari italikjavansko pismojapansko pismokajah-li pismokatakanakarošti pism" + - "okmersko pismokanada pismokorejsko pismokaitilanna pismolaoško pismolati" + - "nica (fraktur varijanta)galska latinicalatinicalepča pismolimbu pismolin" + - "earno A pismolinearno B pismolisijsko pismolidijsko pismomandeansko pism" + - "omanihejsko pismomajanski hijeroglifimeroitik pismomalajalam pismomongol" + - "sko pismomesečevo pismomeitei majek pismomijanmarsko pismon’ko pismoogam" + - "sko pismool čiki pismoorkonsko pismoorijansko pismoosmanjansko pismostar" + - "o permiksko pismopags-pa pismopisani pahlavipsalter pahlavipahlavi pismo" + - "Feničansko pismoporald fonetsko pismopisani partianrejang pismorongorong" + - "o pismorunsko pismosamaritansko pismosarati pismosauraštra pismoznakovno" + - " pismošavijansko pismosinhalsko pismosundansko pismosiloti nagri pismosi" + - "rijsko pismosirijsko estrangelo pismozapadnosirijsko pismopismo istočne " + - "Sirijetagbanva pismotai le pismonovi tai luetamilsko pismotai viet pismo" + - "telugu pismotengvar pismotifinag pismoTagalogthana pismotajlandsko pismo" + - "tibetansko pismougaritsko pismovai pismovidljivi govorstaropersijsko pis" + - "mosumersko-akadsko kuneiform pismoji pismonasledno pismomatematička nota" + - "cijasimbolinepisani jezikzajedničko pismonepoznato pismo" - -var srLatnScriptIdx = []uint16{ // 169 elements + "glagoljicaGotikagrčko pismogudžaratsko pismogurmuki pismohanbhangulhanha" + + "nunopojednostavljeno han pismotradicionalno han pismohebrejsko pismohira" + + "ganapahav hmong pismojapanska slogovna pismastaromađarsko pismoinduško p" + + "ismostari italikdžamojavansko pismojapansko pismokajah-li pismokatakanak" + + "arošti pismokmersko pismokanada pismokorejsko pismokaitilanna pismolaošk" + + "o pismolatinica (fraktur varijanta)galska latinicalatinicalepča pismolim" + + "bu pismolinearno A pismolinearno B pismolisijsko pismolidijsko pismomand" + + "eansko pismomanihejsko pismomajanski hijeroglifimeroitik pismomalajalams" + + "ko pismomongolsko pismomesečevo pismomeitei majek pismomijanmarsko pismo" + + "n’ko pismoogamsko pismool čiki pismoorkonsko pismoorijansko pismoosmanja" + + "nsko pismostaro permiksko pismopags-pa pismopisani pahlavipsalter pahlav" + + "ipahlavi pismoFeničansko pismoporald fonetsko pismopisani partianrejang " + + "pismorongorongo pismorunsko pismosamaritansko pismosarati pismosauraštra" + + " pismoznakovno pismošavijansko pismosinhalsko pismosundansko pismosiloti" + + " nagri pismosirijsko pismosirijsko estrangelo pismozapadnosirijsko pismo" + + "pismo istočne Sirijetagbanva pismotai le pismonovi tai luetamilsko pismo" + + "tai viet pismotelugu pismotengvar pismotifinag pismoTagalogtana pismotaj" + + "landsko pismotibetansko pismougaritsko pismovai pismovidljivi govorstaro" + + "persijsko pismosumersko-akadsko kuneiform pismoji pismonasledno pismomat" + + "ematička notacijaemodžisimbolinepisani jezikzajedničko pismonepoznato pi" + + "smo" + +var srLatnScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, 0x0046, - 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x0082, 0x0090, 0x009f, - 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, 0x011d, 0x0124, - 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, 0x0185, 0x0185, - 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, 0x0200, 0x020a, - 0x0210, 0x0210, 0x021c, 0x022e, 0x023b, 0x0241, 0x0244, 0x024a, - 0x0264, 0x027b, 0x027b, 0x028a, 0x0292, 0x0292, 0x02a3, 0x02b8, - 0x02cc, 0x02da, 0x02e6, 0x02f4, 0x0302, 0x0302, 0x0310, 0x0318, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, + 0x0046, 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x006e, 0x0082, + 0x0090, 0x009f, 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, + 0x011d, 0x0124, 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, + 0x0185, 0x0185, 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, + 0x0200, 0x020a, 0x0210, 0x0210, 0x021c, 0x022e, 0x023b, 0x023f, + 0x0245, 0x0248, 0x024e, 0x0268, 0x027f, 0x027f, 0x028e, 0x0296, + 0x0296, 0x02a7, 0x02be, 0x02d2, 0x02e0, 0x02ec, 0x02f2, 0x0300, // Entry 40 - 7F - 0x0326, 0x0333, 0x0333, 0x033f, 0x034d, 0x034d, 0x0352, 0x035d, - 0x036a, 0x0386, 0x0395, 0x039d, 0x03a9, 0x03b4, 0x03c4, 0x03d4, - 0x03d4, 0x03d4, 0x03e2, 0x03f0, 0x03f0, 0x0400, 0x0410, 0x0424, - 0x0424, 0x0424, 0x0432, 0x0441, 0x0441, 0x0450, 0x045f, 0x045f, - 0x0471, 0x0471, 0x0482, 0x0482, 0x0482, 0x0482, 0x048e, 0x048e, - 0x049b, 0x04a9, 0x04b7, 0x04c6, 0x04d7, 0x04d7, 0x04d7, 0x04ec, - 0x04f9, 0x0507, 0x0516, 0x0523, 0x0534, 0x0549, 0x0557, 0x0563, - 0x0573, 0x057f, 0x0591, 0x059d, 0x059d, 0x05ad, 0x05bb, 0x05cc, + 0x030e, 0x030e, 0x031c, 0x0324, 0x0332, 0x033f, 0x033f, 0x034b, + 0x0359, 0x0359, 0x035e, 0x0369, 0x0376, 0x0392, 0x03a1, 0x03a9, + 0x03b5, 0x03c0, 0x03d0, 0x03e0, 0x03e0, 0x03e0, 0x03ee, 0x03fc, + 0x03fc, 0x040c, 0x041c, 0x041c, 0x0430, 0x0430, 0x0430, 0x043e, + 0x0450, 0x0450, 0x045f, 0x046e, 0x046e, 0x0480, 0x0480, 0x0491, + 0x0491, 0x0491, 0x0491, 0x0491, 0x049d, 0x049d, 0x04aa, 0x04b8, + 0x04c6, 0x04d5, 0x04d5, 0x04e6, 0x04e6, 0x04e6, 0x04fb, 0x0508, + 0x0516, 0x0525, 0x0532, 0x0543, 0x0558, 0x0566, 0x0572, 0x0582, // Entry 80 - BF - 0x05cc, 0x05cc, 0x05cc, 0x05db, 0x05db, 0x05ea, 0x05fc, 0x060a, - 0x0623, 0x0638, 0x064d, 0x065b, 0x065b, 0x0667, 0x0673, 0x0681, - 0x0681, 0x068f, 0x069b, 0x06a8, 0x06b5, 0x06bc, 0x06c7, 0x06d7, - 0x06e7, 0x06e7, 0x06f6, 0x06ff, 0x070d, 0x070d, 0x070d, 0x0721, - 0x0741, 0x0749, 0x0757, 0x076c, 0x076c, 0x0773, 0x0781, 0x0792, - 0x07a1, -} // Size: 362 bytes - -var svScriptStr string = "" + // Size: 1661 bytes + 0x058e, 0x05a0, 0x05ac, 0x05ac, 0x05bc, 0x05ca, 0x05db, 0x05db, + 0x05db, 0x05db, 0x05ea, 0x05ea, 0x05f9, 0x060b, 0x0619, 0x0632, + 0x0647, 0x065c, 0x066a, 0x066a, 0x0676, 0x0682, 0x0690, 0x0690, + 0x069e, 0x06aa, 0x06b7, 0x06c4, 0x06cb, 0x06d5, 0x06e5, 0x06f5, + 0x06f5, 0x0704, 0x070d, 0x071b, 0x071b, 0x071b, 0x072f, 0x074f, + 0x0757, 0x0765, 0x077a, 0x0781, 0x0788, 0x0796, 0x07a7, 0x07b6, +} // Size: 376 bytes + +const svScriptStr string = "" + // Size: 1720 bytes "afakiskakaukasiska albanskaahomarabiskaimperisk arameiskaarmeniskaavesti" + - "skabalinesiskabamunskabassaiska vahbatakbengaliskablissymbolerbopomofobr" + - "amipunktskriftbuginesiskabuhidchakmakanadensiska stavelseteckenkariskach" + - "amcherokeecirtkoptiskacypriotiskakyrilliskafornkyrkoslavisk kyrilliskade" + - "vanagarideseretDuployéstenografiskademotiskahieratiskaegyptiska hierogly" + - "ferelbasiskaetiopiskakutsurigeorgiskaglagolitiskagotiskagammaltamilskagr" + - "ekiskagujaratigurmukhihangulhanhanunåförenklade han-teckentraditionella " + - "han-teckenhatranhebreiskahiraganahittitiska hieroglyferpahaw mongkatakan" + - "a/hiraganafornungerskaindusfornitaliskajavanskajapanskajurchenskakaya li" + - "katakanakharoshtikhmeriskakhojkiskakanaresiskakoreanskakpellékaithiskala" + - "nnalaotiskafrakturlatingaeliskt latinlatinskaronglimbulinjär Alinjär BFr" + - "aserlomalykiskalydiskamahajaniskamandaéiskamanikeanskamayahieroglyfermen" + - "dekursiv-meroitiskameroitiskamalayalammodiskamongoliskamoonmrumeitei-may" + - "ekmultaniskaburmesiskafornnordarabiskanabatateiskanaxi geban-kånüshuogha" + - "mol-chikiorkonoriyaosmanjapalmyreniskaPau Cin Hau-skriftfornpermiskaphag" + - "s-patidig pahlavipsaltaren-pahlavibokpahlavifenikiskapollardteckentidig " + - "parthianskarejangrongo-rongorunorsamaritiskasaratifornsydarabiskasaurash" + - "trateckningsskriftshawiskasharadasiddhamskasindhiskasingalesiskasora som" + - "pengsundanesiskasyloti nagrisyriskaestrangelosyriskavästsyriskaöstsyrisk" + - "atagbanwatakritiskatai letai luetamilskatangutiskatai viettelugutengwart" + - "ifinaghiskatagalogtaanathailändskatibetanskatirhutaugaritiskavajsynligt " + - "talvarang kshitiwoleaifornpersiskasumeo-akkadisk kilskriftyiärvdamatemat" + - "isk notationsymboleroskrivet språkgemensammaokänt skriftsystem" - -var svScriptIdx = []uint16{ // 169 elements + "skabalinesiskabamunskabassaiska vahbatakbengaliskabhaiksukiskablissymbol" + + "erbopomofobramipunktskriftbuginesiskabuhidchakmakanadensiska stavelsetec" + + "kenkariskachamcherokeecirtkoptiskacypriotiskakyrilliskafornkyrkoslavisk " + + "kyrilliskadevanagarideseretDuployéstenografiskademotiskahieratiskaegypti" + + "ska hieroglyferelbasiskaetiopiskakutsurigeorgiskaglagolitiskagotiskagamm" + + "altamilskagrekiskagujaratigurmukhihan med bopomofohangulhanhanunó’ofören" + + "klade han-teckentraditionella han-teckenhatranhebreiskahiraganahittitisk" + + "a hieroglyferpahaw mongkatakana/hiraganafornungerskaindusfornitaliskajam" + + "ojavanskajapanskajurchenskakaya likatakanakharoshtikhmeriskakhojkiskakan" + + "aresiskakoreanskakpellékaithiskalannalaotiskafrakturlatingaeliskt latinl" + + "atinskaronglimbulinjär Alinjär BFraserlomalykiskalydiskamahajaniskamanda" + + "éiskamanikeanskamarchenskamayahieroglyfermendekursiv-meroitiskameroitis" + + "kamalayalammodiskamongoliskamoonmrumeitei-mayekmultaniskaburmesiskafornn" + + "ordarabiskanabateiskanewariskanaxi geban-kånüshuoghamol-chikiorkonoriyao" + + "smanjapalmyreniskaPau Cin Hau-skriftfornpermiskaphags-patidig pahlavipsa" + + "ltaren-pahlavibokpahlavifeniciskapollardteckentidig parthianskarejangron" + + "go-rongorunorsamaritiskasaratifornsydarabiskasaurashtrateckningsskriftsh" + + "awiskasharadasiddhamskasindhiskasingalesiskasora sompengsundanesiskasylo" + + "ti nagrisyriskaestrangelosyriskavästsyriskaöstsyriskatagbanwatakritiskat" + + "ai letai luetamilskatangutiskatai viettelugutengwartifinaghiskatagalogta" + + "anathailändskatibetanskatirhutaugaritiskavajsynligt talvarang kshitiwole" + + "aifornpersiskasumero-akkadisk kilskriftyiärvdamatematisk notationemojisy" + + "mboleroskrivet språkgemensammaokänt skriftsystem" + +var svScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0008, 0x001b, 0x001f, 0x0027, 0x0039, 0x0042, 0x004b, - 0x0056, 0x005e, 0x006b, 0x0070, 0x007a, 0x0086, 0x008e, 0x0093, - 0x009e, 0x00a9, 0x00ae, 0x00b4, 0x00cf, 0x00d6, 0x00da, 0x00e2, - 0x00e6, 0x00ee, 0x00f9, 0x0103, 0x011e, 0x0128, 0x012f, 0x0144, - 0x014d, 0x0157, 0x016c, 0x0175, 0x017e, 0x0185, 0x018e, 0x019a, - 0x01a1, 0x01af, 0x01b7, 0x01bf, 0x01c7, 0x01cd, 0x01d0, 0x01d7, - 0x01ed, 0x0205, 0x020b, 0x0214, 0x021c, 0x0232, 0x023c, 0x024d, - 0x0259, 0x025e, 0x026a, 0x0272, 0x027a, 0x0284, 0x028b, 0x0293, + 0x0000, 0x0000, 0x0008, 0x001b, 0x001f, 0x0027, 0x0039, 0x0042, + 0x004b, 0x0056, 0x005e, 0x006b, 0x0070, 0x007a, 0x0086, 0x0092, + 0x009a, 0x009f, 0x00aa, 0x00b5, 0x00ba, 0x00c0, 0x00db, 0x00e2, + 0x00e6, 0x00ee, 0x00f2, 0x00fa, 0x0105, 0x010f, 0x012a, 0x0134, + 0x013b, 0x0150, 0x0159, 0x0163, 0x0178, 0x0181, 0x018a, 0x0191, + 0x019a, 0x01a6, 0x01ad, 0x01bb, 0x01c3, 0x01cb, 0x01d3, 0x01e3, + 0x01e9, 0x01ec, 0x01f7, 0x020d, 0x0225, 0x022b, 0x0234, 0x023c, + 0x0252, 0x025c, 0x026d, 0x0279, 0x027e, 0x028a, 0x028e, 0x0296, // Entry 40 - 7F - 0x029c, 0x02a5, 0x02ae, 0x02b9, 0x02c2, 0x02c9, 0x02d2, 0x02d7, - 0x02df, 0x02eb, 0x02f9, 0x0301, 0x0305, 0x030a, 0x0313, 0x031c, - 0x0322, 0x0326, 0x032d, 0x0334, 0x033f, 0x034a, 0x0355, 0x0364, - 0x0369, 0x037a, 0x0384, 0x038d, 0x0394, 0x039e, 0x03a2, 0x03a5, - 0x03b1, 0x03bb, 0x03c5, 0x03d5, 0x03e1, 0x03ea, 0x03ef, 0x03f5, - 0x03fa, 0x0402, 0x0407, 0x040c, 0x0413, 0x041f, 0x0431, 0x043d, - 0x0445, 0x0452, 0x0463, 0x046d, 0x0476, 0x0483, 0x0494, 0x049a, - 0x04a5, 0x04aa, 0x04b5, 0x04bb, 0x04ca, 0x04d4, 0x04e3, 0x04eb, + 0x029e, 0x02a8, 0x02af, 0x02b7, 0x02c0, 0x02c9, 0x02d2, 0x02dd, + 0x02e6, 0x02ed, 0x02f6, 0x02fb, 0x0303, 0x030f, 0x031d, 0x0325, + 0x0329, 0x032e, 0x0337, 0x0340, 0x0346, 0x034a, 0x0351, 0x0358, + 0x0363, 0x036e, 0x0379, 0x0383, 0x0392, 0x0397, 0x03a8, 0x03b2, + 0x03bb, 0x03c2, 0x03cc, 0x03d0, 0x03d3, 0x03df, 0x03e9, 0x03f3, + 0x0403, 0x040d, 0x0416, 0x041f, 0x0424, 0x042a, 0x042f, 0x0437, + 0x043c, 0x0441, 0x0441, 0x0448, 0x0454, 0x0466, 0x0472, 0x047a, + 0x0487, 0x0498, 0x04a2, 0x04ab, 0x04b8, 0x04c9, 0x04cf, 0x04da, // Entry 80 - BF - 0x04f2, 0x04fc, 0x0505, 0x0511, 0x051d, 0x0529, 0x0535, 0x053c, - 0x054d, 0x0559, 0x0564, 0x056c, 0x0576, 0x057c, 0x0583, 0x058b, - 0x0595, 0x059d, 0x05a3, 0x05aa, 0x05b6, 0x05bd, 0x05c2, 0x05ce, - 0x05d8, 0x05df, 0x05e9, 0x05ec, 0x05f7, 0x0604, 0x060a, 0x0616, - 0x062e, 0x0630, 0x0636, 0x0649, 0x0649, 0x0651, 0x0660, 0x066a, - 0x067d, -} // Size: 362 bytes - -var swScriptStr string = "" + // Size: 346 bytes + 0x04df, 0x04ea, 0x04f0, 0x04ff, 0x0509, 0x0518, 0x0520, 0x0527, + 0x0531, 0x053a, 0x0546, 0x0552, 0x055e, 0x056a, 0x0571, 0x0582, + 0x058e, 0x0599, 0x05a1, 0x05ab, 0x05b1, 0x05b8, 0x05c0, 0x05ca, + 0x05d2, 0x05d8, 0x05df, 0x05eb, 0x05f2, 0x05f7, 0x0603, 0x060d, + 0x0614, 0x061e, 0x0621, 0x062c, 0x0639, 0x063f, 0x064b, 0x0664, + 0x0666, 0x066c, 0x067f, 0x0684, 0x068c, 0x069b, 0x06a5, 0x06b8, +} // Size: 376 bytes + +const swScriptStr string = "" + // Size: 392 bytes "KiarabuKiarmeniaKibengaliKibopomofoBrailleKisirilikiKidevanagariKiethiop" + - "iaKijojiaKigirikiKigujaratiKigurmukhiKihangulKihanKihan RahisiKihan cha " + - "JadiKiebraniaKihiraganaKijapaniKikatakanaKikambodiaKikannadaKikoreaKilao" + - "siKilatiniKimalayalamKimongoliaMyamaKioriyaKisinhalaKitamilKiteluguKitha" + - "anaKitaiKitibetiAlamaHaijaandikwaKawaidaHati isiyojulikana" + "iaKijojiaKigirikiKigujaratiKigurmukhiHanbKihangulKihanKihan RahisiKihan " + + "cha JadiKiebraniaHiraganaHati za KijapaniJamoKijapaniKikatakanaKikambodi" + + "aKikannadaKikoreaKilaosiKilatiniKimalayalamKimongoliaMyamaKioriyaKisinha" + + "laKitamilKiteluguKithaanaKithaiKitibetiHati za kihisabatiEmojiAlamaHaija" + + "andikwaKawaidaHati isiyojulikana" -var swScriptIdx = []uint16{ // 169 elements +var swScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0023, 0x0023, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0059, 0x0063, 0x006d, 0x0075, 0x007a, 0x007a, - 0x0086, 0x0094, 0x0094, 0x009d, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00af, 0x00af, 0x00af, 0x00b9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0019, + 0x0023, 0x0023, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a, + 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, 0x0063, 0x006d, 0x0071, + 0x0079, 0x007e, 0x007e, 0x008a, 0x0098, 0x0098, 0x00a1, 0x00a9, + 0x00a9, 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00bd, 0x00bd, // Entry 40 - 7F - 0x00b9, 0x00c3, 0x00c3, 0x00cc, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00da, 0x00da, 0x00da, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00e2, 0x00e2, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, - 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, - 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, + 0x00c5, 0x00c5, 0x00c5, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00e2, + 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00f0, 0x00f0, 0x00f0, 0x00f8, + 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, + 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, + 0x0103, 0x0103, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x0112, + 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, + 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, // Entry 80 - BF - 0x0103, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0113, - 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x0123, 0x0128, - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0135, 0x0141, 0x0148, - 0x015a, -} // Size: 362 bytes - -var taScriptStr string = "" + // Size: 3904 bytes + 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, + 0x0119, 0x0119, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, + 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0129, 0x0129, + 0x0129, 0x0131, 0x0131, 0x0131, 0x0131, 0x0139, 0x013f, 0x0147, + 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, + 0x0147, 0x0147, 0x0159, 0x015e, 0x0163, 0x016f, 0x0176, 0x0188, +} // Size: 376 bytes + +const taScriptStr string = "" + // Size: 3954 bytes "அரபிக்இம்பேரியல் அரமெய்க்அர்மேனியன்அவெஸ்தான்பாலினீஸ்பாடாக்வங்காளம்ப்லிஸ்" + "ஸிமிபால்ஸ்போபோமோஃபோபிரம்மிபிரெயில்புகினீஸ்புகித்சக்மாயுனிஃபைடு கனடியன்" + " அபொரிஜினல் சிலபிக்ஸ்கரியன்சாம்செரோக்கிகிர்த்காப்டிக்சைப்ரியாட்சிரிலிக்ப" + "ழைய சர்ச் ஸ்லவோனிக் சிரிலிக்தேவநாகரிடெசராட்எகிப்தியன் டெமோட்டிக்எகிப்த" + "ியன் ஹைரேட்டிக்எகிப்தியன் ஹைரோகிளிப்ஸ்எத்தியோபிக்ஜியார்ஜியன் குட்சுரிஜ" + - "ார்ஜியன்க்லாகோலிடிக்கோதிக்கிரேக்கம்குஜராத்திகுர்முகிஹங்குல்ஹன்ஹனுனூஎளி" + - "தாக்கப்பட்ட ஹன்பாரம்பரிய ஹன்ஹீப்ருஹிராகானாபஹாவ் மாங்க்கடாகானா அல்லது ஹ" + - "ிராகானாபழைய ஹங்கேரியன்சிந்துபழைய இத்தாலிஜாவனீஸ்ஜப்பானியம்கயாஹ் லீகதகான" + - "ாகரோஷ்டிகமெர்கன்னடம்கொரியன்காய்திலன்னாலாவோஃப்ரக்டூர் லெத்தின்கேலிக் லெ" + - "த்தின்லத்தின்லெப்சாலிம்புலினியர் ஏலினியர் பிலிசியன்லிடியன்மேன்டியன்மனி" + - "செய்ன்மயான் ஹைரோகிளிப்மெராய்டிக்மலையாளம்மங்கோலியன்மூன்மெய்தெய் மயக்மிய" + - "ான்மர்என்‘கோஒகாம்ஒல் சிக்கிஆர்கான்ஒரியாஒஸ்மான்யாபழைய பெர்மிக்பக்ஸ்-பாஇ" + - "ன்ஸ்கிரிப்ஷனல் பஹலவிசால்டர் பஹலவிபுக் பஹலவிஃபோனேஷியன்போலார்ட் ஃபொனெட்ட" + - "ிக்இன்ஸ்கிரிப்ஷனல் பார்த்தியன்ரெஜெய்ன்ரொங்கோரொங்கோருனிக்சமாரிடன்சாராதி" + - "சௌராஷ்ட்ராஸைன்எழுத்துஷவியான்சிங்களம்சுந்தானீஸ்சிலோடி நக்ரிசிரியாக்எஸ்ட" + - "்ரெங்கெலோ சிரியாக்மேற்கு சிரியாக்கிழக்கு சிரியாக்தகோவானாதாய் லேபுதிய த" + - "ை லூதமிழ்தை வியத்தெலுங்குதெங்வார்டிஃபினாக்தகலாக்தானாதாய்திபெத்தியன்உகா" + - "ரதிக்வைவிசிபிள் ஸ்பீச்பழைய பெர்ஷியன்சுமெரோ-அக்கடியன் க்யூனிஃபார்ம்யீபா" + - "ரம்பரியமானகணிதக்குறியீடுசின்னங்கள்எழுதப்படாததுபொதுஅறியப்படாத எழுத்து" - -var taScriptIdx = []uint16{ // 169 elements + "ார்ஜியன்க்லாகோலிடிக்கோதிக்கிரேக்கம்குஜராத்திகுர்முகிஹன்ப்ஹங்குல்ஹன்ஹனு" + + "னூஎளிதாக்கப்பட்ட ஹன்பாரம்பரிய ஹன்ஹீப்ருஹிராகானாபஹாவ் மாங்க்ஜப்பானிய எழ" + + "ுத்துருக்கள்பழைய ஹங்கேரியன்சிந்துபழைய இத்தாலிஜமோஜாவனீஸ்ஜப்பானியம்கயாஹ்" + + " லீகதகானாகரோஷ்டிகமெர்கன்னடம்கொரியன்காய்திலன்னாலாவோஃப்ரக்டூர் லெத்தின்கேல" + + "ிக் லெத்தின்லத்தின்லெப்சாலிம்புலினியர் ஏலினியர் பிலிசியன்லிடியன்மேன்டி" + + "யன்மனிசெய்ன்மயான் ஹைரோகிளிப்மெராய்டிக்மலையாளம்மங்கோலியன்மூன்மெய்தெய் ம" + + "யக்மியான்மர்என்‘கோஒகாம்ஒல் சிக்கிஆர்கான்ஒடியாஒஸ்மான்யாபழைய பெர்மிக்பக்" + + "ஸ்-பாஇன்ஸ்கிரிப்ஷனல் பஹலவிசால்டர் பஹலவிபுக் பஹலவிஃபோனேஷியன்போலார்ட் ஃப" + + "ொனெட்டிக்இன்ஸ்கிரிப்ஷனல் பார்த்தியன்ரெஜெய்ன்ரொங்கோரொங்கோருனிக்சமாரிடன்" + + "சாராதிசௌராஷ்ட்ராஸைன்எழுத்துஷவியான்சிங்களம்சுந்தானீஸ்சிலோடி நக்ரிசிரியா" + + "க்எஸ்ட்ரெங்கெலோ சிரியாக்மேற்கு சிரியாக்கிழக்கு சிரியாக்தகோவானாதாய் லேப" + + "ுதிய தை லூதமிழ்தை வியத்தெலுங்குதெங்வார்டிஃபினாக்தகலாக்தானாதாய்திபெத்தி" + + "யன்உகாரதிக்வைவிசிபிள் ஸ்பீச்பழைய பெர்ஷியன்சுமெரோ-அக்கடியன் க்யூனிஃபார்" + + "ம்யீபாரம்பரியமானகணிதக்குறியீடுஎமோஜிசின்னங்கள்எழுதப்படாததுபொதுஅறியப்படா" + + "த ஸ்கிரிப்ட்" + +var taScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0049, 0x0067, 0x0082, - 0x009a, 0x009a, 0x009a, 0x00ac, 0x00c4, 0x00f4, 0x010f, 0x0124, - 0x013c, 0x0154, 0x0166, 0x0175, 0x01e1, 0x01f3, 0x01ff, 0x0217, - 0x0229, 0x0241, 0x025f, 0x0277, 0x02c8, 0x02e0, 0x02f5, 0x02f5, - 0x0332, 0x036f, 0x03b2, 0x03b2, 0x03d3, 0x040d, 0x0428, 0x044c, - 0x045e, 0x045e, 0x0479, 0x0494, 0x04ac, 0x04c1, 0x04ca, 0x04d9, - 0x050d, 0x0532, 0x0532, 0x0544, 0x055c, 0x055c, 0x057e, 0x05bf, - 0x05ea, 0x05fc, 0x061e, 0x0633, 0x0651, 0x0651, 0x0667, 0x0679, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0049, 0x0067, + 0x0082, 0x009a, 0x009a, 0x009a, 0x00ac, 0x00c4, 0x00c4, 0x00f4, + 0x010f, 0x0124, 0x013c, 0x0154, 0x0166, 0x0175, 0x01e1, 0x01f3, + 0x01ff, 0x0217, 0x0229, 0x0241, 0x025f, 0x0277, 0x02c8, 0x02e0, + 0x02f5, 0x02f5, 0x0332, 0x036f, 0x03b2, 0x03b2, 0x03d3, 0x040d, + 0x0428, 0x044c, 0x045e, 0x045e, 0x0479, 0x0494, 0x04ac, 0x04bb, + 0x04d0, 0x04d9, 0x04e8, 0x051c, 0x0541, 0x0541, 0x0553, 0x056b, + 0x056b, 0x058d, 0x05d0, 0x05fb, 0x060d, 0x062f, 0x0638, 0x064d, // Entry 40 - 7F - 0x068e, 0x069d, 0x069d, 0x06b2, 0x06c7, 0x06c7, 0x06d9, 0x06e8, - 0x06f4, 0x072b, 0x0756, 0x076b, 0x077d, 0x078f, 0x07a8, 0x07c4, - 0x07c4, 0x07c4, 0x07d9, 0x07ee, 0x07ee, 0x0809, 0x0824, 0x0852, - 0x0852, 0x0852, 0x0870, 0x0888, 0x0888, 0x08a6, 0x08b2, 0x08b2, - 0x08d7, 0x08d7, 0x08f2, 0x08f2, 0x08f2, 0x08f2, 0x0904, 0x0904, - 0x0913, 0x092f, 0x0944, 0x0953, 0x096e, 0x096e, 0x096e, 0x0993, - 0x09a9, 0x09e6, 0x0a0b, 0x0a27, 0x0a45, 0x0a7f, 0x0ace, 0x0ae6, - 0x0b0a, 0x0b1c, 0x0b34, 0x0b46, 0x0b46, 0x0b64, 0x0b85, 0x0b9a, + 0x066b, 0x066b, 0x0681, 0x0693, 0x06a8, 0x06b7, 0x06b7, 0x06cc, + 0x06e1, 0x06e1, 0x06f3, 0x0702, 0x070e, 0x0745, 0x0770, 0x0785, + 0x0797, 0x07a9, 0x07c2, 0x07de, 0x07de, 0x07de, 0x07f3, 0x0808, + 0x0808, 0x0823, 0x083e, 0x083e, 0x086c, 0x086c, 0x086c, 0x088a, + 0x08a2, 0x08a2, 0x08c0, 0x08cc, 0x08cc, 0x08f1, 0x08f1, 0x090c, + 0x090c, 0x090c, 0x090c, 0x090c, 0x091e, 0x091e, 0x092d, 0x0949, + 0x095e, 0x096d, 0x096d, 0x0988, 0x0988, 0x0988, 0x09ad, 0x09c3, + 0x0a00, 0x0a25, 0x0a41, 0x0a5f, 0x0a99, 0x0ae8, 0x0b00, 0x0b24, // Entry 80 - BF - 0x0b9a, 0x0b9a, 0x0b9a, 0x0bb2, 0x0bb2, 0x0bd0, 0x0bf2, 0x0c0a, - 0x0c4a, 0x0c75, 0x0ca3, 0x0cb8, 0x0cb8, 0x0ccb, 0x0ce8, 0x0cf7, - 0x0cf7, 0x0d0d, 0x0d25, 0x0d3d, 0x0d58, 0x0d6a, 0x0d76, 0x0d82, - 0x0da3, 0x0da3, 0x0dbb, 0x0dc1, 0x0dec, 0x0dec, 0x0dec, 0x0e14, - 0x0e6a, 0x0e70, 0x0e94, 0x0ebe, 0x0ebe, 0x0edc, 0x0f00, 0x0f0c, - 0x0f40, -} // Size: 362 bytes - -var teScriptStr string = "" + // Size: 3721 bytes - "అరబిక్ఇంపీరియల్ అరామాక్అర్మేనియన్అవేస్టాన్బాలినీస్బాటక్బెంగాలిబ్లిస్సింబ" + + 0x0b36, 0x0b4e, 0x0b60, 0x0b60, 0x0b7e, 0x0b9f, 0x0bb4, 0x0bb4, + 0x0bb4, 0x0bb4, 0x0bcc, 0x0bcc, 0x0bea, 0x0c0c, 0x0c24, 0x0c64, + 0x0c8f, 0x0cbd, 0x0cd2, 0x0cd2, 0x0ce5, 0x0d02, 0x0d11, 0x0d11, + 0x0d27, 0x0d3f, 0x0d57, 0x0d72, 0x0d84, 0x0d90, 0x0d9c, 0x0dbd, + 0x0dbd, 0x0dd5, 0x0ddb, 0x0e06, 0x0e06, 0x0e06, 0x0e2e, 0x0e84, + 0x0e8a, 0x0eae, 0x0ed8, 0x0ee7, 0x0f05, 0x0f29, 0x0f35, 0x0f72, +} // Size: 376 bytes + +const teScriptStr string = "" + // Size: 3756 bytes + "అరబిక్ఇంపీరియల్ అరామాక్అర్మేనియన్అవేస్టాన్బాలినీస్బాటక్బాంగ్లాబ్లిస్సింబ" + "ల్స్బోపోమోఫోబ్రాహ్మిబ్రెయిల్బ్యుగినీస్బుహిడ్చక్మాయునిఫైడ్ కెనెడియన్ అబ" + "ొరిజినల్ సిలబిక్స్కారియన్చామ్చిరోకిసిర్థ్కోప్టిక్సైప్రోట్సిరిలిక్ప్రాచ" + "ీన చర్చ స్లావోనిక్ సిరిలిక్దేవనాగరిడేసెరెట్ఇజిప్షియన్ డెమోటిక్ఇజిప్షియ" + "న్ హైరాటిక్ఇజిప్షియన్ హైరోగ్లైఫ్స్ఇథియోపిక్జార్జియన్ ఖట్సూరిజార్జియన్గ" + - "్లాగో లిటిక్గోతిక్గ్రీక్గుజరాతీగుర్ముఖిహంగుల్హాన్హనునూసరళీకృత హాన్సాంప" + - "్రదాయక హాన్హీబ్రుహిరాగానపాహవా హ్మోంగ్కాటాకాన లేదా హిరాగనప్రాచీన హంగేరి" + - "యన్సింధుప్రాచిన ఐటాలిక్జావనీస్జాపనీస్కాయాహ్ లికాటాకానఖరోషథిఖ్మేర్కన్నడ" + - "కొరియన్కైథిలన్నాలావోఫ్రాక్టూర్ లాటిన్గేలిక్ లాటిన్లాటిన్లేప్చాలింబులిన" + - "ియర్ ఎలినియర్ బిలిసియన్లిడియన్మాన్డియన్మానిచేన్మాయన్ హైరోగ్లైఫ్స్మెరోఇ" + - "టిక్మలయాళంమంగోలియన్మూన్మీటి మయెక్మయాన్మార్న్కోఒఘమ్ఓల్ చికిఓర్ఖోన్ఒరియా" + - "ఓసమాన్యప్రాచీన పెర్మిక్ఫాగ్స్-పాఇంస్క్రిప్షనాల్ పహ్లావిసల్టార్ పహ్లావి" + - "పుస్తక పహ్లావిఫోనిశియన్పోల్లర్డ్ ఫోనెటిక్ఇంస్క్రిప్షనాల్ పార్థియన్రేజా" + - "ంగ్రోంగో రోంగోరూనిక్సమారిటన్సరాటిసౌరాష్ట్రసంజ్ఞ లిపిషవియాన్సింహళంసుడాన" + - "ీస్స్లోటి నాగ్రిసిరియాక్ఎస్ట్రానజీలో సిరియాక్పశ్చిమ సిరియాక్తూర్పు సిర" + - "ియాక్టాగ్బానవాతై లీక్రొత్త టై లుఇతమిళముటై వియట్తెలుగుటేంగ్వార్టిఫీనాఘ్" + - "టగలాగ్థానాథాయ్టిబెటన్యుగారిటిక్వాయికనిపించే భాషప్రాచీన పర్షియన్సుమేరో-" + - " అక్కడియన్ క్యునిఫార్మ్యివారసత్వంగణిత సంకేతలిపిచిహ్నాలులిపి లేనిసామాన్యత" + - "ెలియని లిపి" - -var teScriptIdx = []uint16{ // 169 elements + "్లాగో లిటిక్గోతిక్గ్రీక్గుజరాతీగుర్ముఖిహాన్బ్హంగుల్హాన్హనునూసరళీకృత హా" + + "న్సాంప్రదాయక హాన్హీబ్రుహిరాగానపాహవా హ్మోంగ్జపనీస్ సిలబెరీస్ప్రాచీన హంగ" + + "ేరియన్సింధుప్రాచిన ఐటాలిక్జమోజావనీస్జాపనీస్కాయాహ్ లికాటాకానఖరోషథిఖ్మేర" + + "్కన్నడకొరియన్కైథిలన్నాలావోఫ్రాక్టూర్ లాటిన్గేలిక్ లాటిన్లాటిన్లేప్చాలి" + + "ంబులినియర్ ఎలినియర్ బిలిసియన్లిడియన్మాన్డియన్మానిచేన్మాయన్ హైరోగ్లైఫ్స" + + "్మెరోఇటిక్మలయాళంమంగోలియన్మూన్మీటి మయెక్మయాన్మార్న్కోఒఘమ్ఓల్ చికిఓర్ఖోన" + + "్ఒడియాఓసమాన్యప్రాచీన పెర్మిక్ఫాగ్స్-పాఇంస్క్రిప్షనాల్ పహ్లావిసల్టార్ ప" + + "హ్లావిపుస్తక పహ్లావిఫోనిశియన్పోల్లర్డ్ ఫోనెటిక్ఇంస్క్రిప్షనాల్ పార్థియ" + + "న్రేజాంగ్రోంగో రోంగోరూనిక్సమారిటన్సరాటిసౌరాష్ట్రసంజ్ఞ లిపిషవియాన్సింహళ" + + "ంసుడానీస్స్లోటి నాగ్రిసిరియాక్ఎస్ట్రానజీలో సిరియాక్పశ్చిమ సిరియాక్తూర్" + + "పు సిరియాక్టాగ్బానవాతై లీక్రొత్త టై లుఇతమిళముటై వియట్తెలుగుటేంగ్వార్టి" + + "ఫీనాఘ్టగలాగ్థానాథాయ్టిబెటన్యుగారిటిక్వాయికనిపించే భాషప్రాచీన పర్షియన్స" + + "ుమేరో- అక్కడియన్ క్యునిఫార్మ్యివారసత్వంగణిత సంకేతలిపిఎమోజిచిహ్నాలులిపి" + + " లేనిసామాన్యతెలియని లిపి" + +var teScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, 0x007c, - 0x0094, 0x0094, 0x0094, 0x00a3, 0x00b8, 0x00e2, 0x00fa, 0x0112, - 0x012a, 0x0148, 0x015a, 0x0169, 0x01d8, 0x01ed, 0x01f9, 0x020b, - 0x021d, 0x0235, 0x024d, 0x0265, 0x02bf, 0x02d7, 0x02ef, 0x02ef, - 0x0326, 0x035d, 0x03a0, 0x03a0, 0x03bb, 0x03ec, 0x0407, 0x042c, - 0x043e, 0x043e, 0x0450, 0x0465, 0x047d, 0x048f, 0x049b, 0x04aa, - 0x04cc, 0x04f7, 0x04f7, 0x0509, 0x051e, 0x051e, 0x0543, 0x0578, - 0x05a9, 0x05b8, 0x05e3, 0x05f8, 0x060d, 0x060d, 0x0626, 0x063b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, + 0x007c, 0x0094, 0x0094, 0x0094, 0x00a3, 0x00b8, 0x00b8, 0x00e2, + 0x00fa, 0x0112, 0x012a, 0x0148, 0x015a, 0x0169, 0x01d8, 0x01ed, + 0x01f9, 0x020b, 0x021d, 0x0235, 0x024d, 0x0265, 0x02bf, 0x02d7, + 0x02ef, 0x02ef, 0x0326, 0x035d, 0x03a0, 0x03a0, 0x03bb, 0x03ec, + 0x0407, 0x042c, 0x043e, 0x043e, 0x0450, 0x0465, 0x047d, 0x048f, + 0x04a1, 0x04ad, 0x04bc, 0x04de, 0x0509, 0x0509, 0x051b, 0x0530, + 0x0530, 0x0555, 0x0583, 0x05b4, 0x05c3, 0x05ee, 0x05f7, 0x060c, // Entry 40 - 7F - 0x064d, 0x065f, 0x065f, 0x066e, 0x0683, 0x0683, 0x068f, 0x069e, - 0x06aa, 0x06db, 0x0700, 0x0712, 0x0724, 0x0733, 0x074c, 0x0768, - 0x0768, 0x0768, 0x077d, 0x0792, 0x0792, 0x07ad, 0x07c5, 0x07f9, - 0x07f9, 0x07f9, 0x0814, 0x0826, 0x0826, 0x0841, 0x084d, 0x084d, - 0x0869, 0x0869, 0x0884, 0x0884, 0x0884, 0x0884, 0x0890, 0x0890, - 0x089c, 0x08b2, 0x08c7, 0x08d6, 0x08eb, 0x08eb, 0x08eb, 0x0919, - 0x0932, 0x0975, 0x09a0, 0x09c8, 0x09e3, 0x0a17, 0x0a60, 0x0a75, - 0x0a94, 0x0aa6, 0x0abe, 0x0acd, 0x0acd, 0x0ae8, 0x0b04, 0x0b19, + 0x0621, 0x0621, 0x063a, 0x064f, 0x0661, 0x0673, 0x0673, 0x0682, + 0x0697, 0x0697, 0x06a3, 0x06b2, 0x06be, 0x06ef, 0x0714, 0x0726, + 0x0738, 0x0747, 0x0760, 0x077c, 0x077c, 0x077c, 0x0791, 0x07a6, + 0x07a6, 0x07c1, 0x07d9, 0x07d9, 0x080d, 0x080d, 0x080d, 0x0828, + 0x083a, 0x083a, 0x0855, 0x0861, 0x0861, 0x087d, 0x087d, 0x0898, + 0x0898, 0x0898, 0x0898, 0x0898, 0x08a4, 0x08a4, 0x08b0, 0x08c6, + 0x08db, 0x08ea, 0x08ea, 0x08ff, 0x08ff, 0x08ff, 0x092d, 0x0946, + 0x0989, 0x09b4, 0x09dc, 0x09f7, 0x0a2b, 0x0a74, 0x0a89, 0x0aa8, // Entry 80 - BF - 0x0b19, 0x0b19, 0x0b19, 0x0b2b, 0x0b2b, 0x0b43, 0x0b68, 0x0b80, - 0x0bbd, 0x0be8, 0x0c13, 0x0c2e, 0x0c2e, 0x0c3b, 0x0c61, 0x0c73, - 0x0c73, 0x0c89, 0x0c9b, 0x0cb6, 0x0cce, 0x0ce0, 0x0cec, 0x0cf8, - 0x0d0d, 0x0d0d, 0x0d2b, 0x0d37, 0x0d59, 0x0d59, 0x0d59, 0x0d87, - 0x0ddb, 0x0de1, 0x0df9, 0x0e21, 0x0e21, 0x0e39, 0x0e52, 0x0e67, - 0x0e89, -} // Size: 362 bytes - -var thScriptStr string = "" + // Size: 4317 bytes + 0x0aba, 0x0ad2, 0x0ae1, 0x0ae1, 0x0afc, 0x0b18, 0x0b2d, 0x0b2d, + 0x0b2d, 0x0b2d, 0x0b3f, 0x0b3f, 0x0b57, 0x0b7c, 0x0b94, 0x0bd1, + 0x0bfc, 0x0c27, 0x0c42, 0x0c42, 0x0c4f, 0x0c75, 0x0c87, 0x0c87, + 0x0c9d, 0x0caf, 0x0cca, 0x0ce2, 0x0cf4, 0x0d00, 0x0d0c, 0x0d21, + 0x0d21, 0x0d3f, 0x0d4b, 0x0d6d, 0x0d6d, 0x0d6d, 0x0d9b, 0x0def, + 0x0df5, 0x0e0d, 0x0e35, 0x0e44, 0x0e5c, 0x0e75, 0x0e8a, 0x0eac, +} // Size: 376 bytes + +const thScriptStr string = "" + // Size: 4368 bytes "อะฟาคาแอลเบเนีย คอเคเซียอาหรับอิมพีเรียล อราเมอิกอาร์เมเนียอเวสตะบาหลีบา" + "มุมบัสซาบาตักเบงกาลีบลิสซิมโบลส์ปอพอมอฟอพราหมีเบรลล์บูกิสบูฮิดชากมาสัญ" + "ลักษณ์ชนเผ่าพื้นเมืองแคนาดาคาเรียจามเชอโรกีเซิร์ทคอปติกไซเปรียทซีริลลิ" + "กเชอร์ชสลาโวนิกซีริลลิกโบราณเทวนาครีเดเซเรทชวเลขดัปโลยันดีโมติกอียิปต์" + - "เฮียราติกอียิปต์เฮียโรกลิฟส์อียิปต์เอลบ์ซานเอทิโอปิกคัตซูรีจอร์เจียจอร" + - "์เจียกลาโกลิติกโกธิกคฤณห์กรีกคุชราตกูร์มูคีฮันกูลฮั่นฮานูโนโอฮั่นตัวย่" + - "อฮั่นตัวเต็มฮีบรูฮิระงะนะอักขระอานาโตเลียปาเฮาห์ม้งคะตะกะนะหรือฮิระงะน" + - "ะฮังการีโบราณอินดัสอิตาลีโบราณชวาญี่ปุ่นจูร์เชนคยาห์คะตะกะนะขโรษฐีเขมร" + - "คอจคีกันนาดาเกาหลีเปลเลกายติล้านนาลาวลาติน - ฟรังเตอร์ลาติน - แกลิกละต" + - "ินเลปชาลิมบูลีเนียร์เอลีเนียร์บีเฟรเซอร์โลมาไลเซียลีเดียมหาชนีแมนเดียน" + - "มานิแชนมายาไฮโรกลิฟส์เมนเดเคอร์ซีฟ-เมโรอิติกเมโรติกมาลายาลัมโมฑีมองโกเ" + - "ลียมูนมโรเมเทมาเยกพม่าอาระเบียเหนือโบราณนาบาทาเอียนกีบา-นาซีเอ็นโกนุซุ" + - "โอคัมโอลชิกิออร์คอนโอริยาออสมันยาพาลไมรีนป่อจิ้งฮอเปอร์มิกโบราณฟากส์-ป" + - "าปะห์ลาวีอินสคริปชันแนลปะห์ลาวีซอลเตอร์ปะห์ลาวีบุ๊กฟินิเชียสัทศาสตร์พอ" + - "ลลาร์ดพาร์เทียอินสคริปชันแนลเรจังรองโกรองโกรูนิกซามาเรียซาราติอาระเบีย" + - "ใต้โบราณโสวรัสตระไซน์ไรติ้งซอเวียนชาราดาสิทธัมคุดาวาดีสิงหลโสราสมเป็งซ" + - "ุนดาซิโลตินากรีซีเรียซีเรียเอสทรานจีโลซีเรียตะวันตกซีเรียตะวันออกตักบั" + - "นวาทาครีไทเลไทลื้อใหม่ทมิฬตันกัทไทเวียตเทลูกูเทงกวาร์ทิฟินากตากาล็อกทา" + - "นาไทยทิเบตเทอฮุทายูการิตไวคำพูดที่มองเห็นได้วารังกสิติโอลีเอเปอร์เซียโ" + - "บราณอักษรรูปลิ่มสุเมเรีย-อัคคาเดียยิอินเฮอริตเครื่องหมายทางคณิตศาสตร์ซ" + - "ิมโบลส์ไม่มีภาษาเขียนสามัญสคริปต์ที่ไม่รู้จัก" - -var thScriptIdx = []uint16{ // 169 elements + "เฮียราติกอียิปต์เฮียโรกลิฟส์อียิปต์เอลบ์ซานเอธิโอปิกคัตซูรีจอร์เจียจอร" + + "์เจียกลาโกลิติกโกธิกคฤณห์กรีกคุชราตกูร์มูคีจีนกลางฮันกึลฮั่นฮานูโนโอฮั" + + "่นตัวย่อฮั่นตัวเต็มฮีบรูฮิระงะนะอักขระอานาโตเลียปาเฮาห์ม้งคะตะกะนะหรือ" + + "ฮิระงะนะฮังการีโบราณอินดัสอิตาลีโบราณจาโมชวาญี่ปุ่นจูร์เชนคยาห์คะตะกะน" + + "ะขโรษฐีเขมรคอจคีกันนาดาเกาหลีเปลเลกายติล้านนาลาวลาติน - ฟรังเตอร์ลาติน" + + " - แกลิกละตินเลปชาลิมบูลีเนียร์เอลีเนียร์บีเฟรเซอร์โลมาไลเซียลีเดียมหาชน" + + "ีแมนเดียนมานิแชนมายาไฮโรกลิฟส์เมนเดเคอร์ซีฟ-เมโรอิติกเมโรติกมาลายาลัมโ" + + "มฑีมองโกเลียมูนมโรเมเทมาเยกพม่าอาระเบียเหนือโบราณนาบาทาเอียนกีบา-นาซีเ" + + "อ็นโกนุซุโอคัมโอลชิกิออร์คอนโอริยาออสมันยาพาลไมรีนป่อจิ้งฮอเปอร์มิกโบร" + + "าณฟากส์-ปาปะห์ลาวีอินสคริปชันแนลปะห์ลาวีซอลเตอร์ปะห์ลาวีบุ๊กฟินิเชียสั" + + "ทศาสตร์พอลลาร์ดพาร์เทียอินสคริปชันแนลเรจังรองโกรองโกรูนิกซามาเรียซาราต" + + "ิอาระเบียใต้โบราณโสวรัสตระไซน์ไรติ้งซอเวียนชาราดาสิทธัมคุดาวาดีสิงหลโส" + + "ราสมเป็งซุนดาซิโลตินากรีซีเรียซีเรียเอสทรานจีโลซีเรียตะวันตกซีเรียตะวั" + + "นออกตักบันวาทาครีไทเลไทลื้อใหม่ทมิฬตันกัทไทเวียตเตลูกูเทงกวาร์ทิฟินากต" + + "ากาล็อกทานาไทยทิเบตเทอฮุทายูการิตไวคำพูดที่มองเห็นได้วารังกสิติโอลีเอเ" + + "ปอร์เซียโบราณอักษรรูปลิ่มสุเมเรีย-อัคคาเดียยิอินเฮอริตเครื่องหมายทางคณ" + + "ิตศาสตร์อีโมจิซิมโบลส์ไม่มีภาษาเขียนสามัญสคริปต์ที่ไม่รู้จัก" + +var thScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0012, 0x0046, 0x0046, 0x0058, 0x008f, 0x00ad, 0x00bf, - 0x00ce, 0x00dd, 0x00ec, 0x00fb, 0x0110, 0x0134, 0x014c, 0x015e, - 0x0170, 0x017f, 0x018e, 0x019d, 0x01f7, 0x0209, 0x0212, 0x0227, - 0x0239, 0x024b, 0x0263, 0x027b, 0x02cc, 0x02e4, 0x02f9, 0x0320, - 0x034a, 0x037a, 0x03b3, 0x03cb, 0x03e6, 0x0413, 0x042b, 0x0449, - 0x0458, 0x0467, 0x0473, 0x0485, 0x049d, 0x04af, 0x04bb, 0x04d3, - 0x04f1, 0x0512, 0x0512, 0x0521, 0x0539, 0x0569, 0x0587, 0x05c3, - 0x05e7, 0x05f9, 0x061a, 0x0623, 0x0638, 0x064d, 0x065c, 0x0674, + 0x0000, 0x0000, 0x0012, 0x0046, 0x0046, 0x0058, 0x008f, 0x00ad, + 0x00bf, 0x00ce, 0x00dd, 0x00ec, 0x00fb, 0x0110, 0x0110, 0x0134, + 0x014c, 0x015e, 0x0170, 0x017f, 0x018e, 0x019d, 0x01f7, 0x0209, + 0x0212, 0x0227, 0x0239, 0x024b, 0x0263, 0x027b, 0x02cc, 0x02e4, + 0x02f9, 0x0320, 0x034a, 0x037a, 0x03b3, 0x03cb, 0x03e6, 0x0413, + 0x042b, 0x0449, 0x0458, 0x0467, 0x0473, 0x0485, 0x049d, 0x04b2, + 0x04c4, 0x04d0, 0x04e8, 0x0506, 0x0527, 0x0527, 0x0536, 0x054e, + 0x057e, 0x059c, 0x05d8, 0x05fc, 0x060e, 0x062f, 0x063b, 0x0644, // Entry 40 - 7F - 0x0686, 0x0692, 0x06a1, 0x06b6, 0x06c8, 0x06d7, 0x06e6, 0x06f8, - 0x0701, 0x072e, 0x074f, 0x075e, 0x076d, 0x077c, 0x079a, 0x07b8, - 0x07d0, 0x07dc, 0x07ee, 0x0800, 0x0812, 0x082a, 0x083f, 0x0869, - 0x0878, 0x08ac, 0x08c1, 0x08dc, 0x08e8, 0x0903, 0x090c, 0x0915, - 0x0930, 0x0930, 0x093c, 0x0972, 0x0993, 0x09ac, 0x09be, 0x09ca, - 0x09d9, 0x09ee, 0x0a03, 0x0a15, 0x0a2d, 0x0a45, 0x0a60, 0x0a87, - 0x0a9d, 0x0adf, 0x0b0f, 0x0b33, 0x0b4b, 0x0b7e, 0x0bc0, 0x0bcf, - 0x0bed, 0x0bfc, 0x0c14, 0x0c26, 0x0c56, 0x0c71, 0x0c8f, 0x0ca4, + 0x0659, 0x066e, 0x067d, 0x0695, 0x06a7, 0x06b3, 0x06c2, 0x06d7, + 0x06e9, 0x06f8, 0x0707, 0x0719, 0x0722, 0x074f, 0x0770, 0x077f, + 0x078e, 0x079d, 0x07bb, 0x07d9, 0x07f1, 0x07fd, 0x080f, 0x0821, + 0x0833, 0x084b, 0x0860, 0x0860, 0x088a, 0x0899, 0x08cd, 0x08e2, + 0x08fd, 0x0909, 0x0924, 0x092d, 0x0936, 0x0951, 0x0951, 0x095d, + 0x0993, 0x09b4, 0x09b4, 0x09cd, 0x09df, 0x09eb, 0x09fa, 0x0a0f, + 0x0a24, 0x0a36, 0x0a36, 0x0a4e, 0x0a66, 0x0a81, 0x0aa8, 0x0abe, + 0x0b00, 0x0b30, 0x0b54, 0x0b6c, 0x0b9f, 0x0be1, 0x0bf0, 0x0c0e, // Entry 80 - BF - 0x0cb6, 0x0cc8, 0x0ce0, 0x0cef, 0x0d0d, 0x0d1c, 0x0d3d, 0x0d4f, - 0x0d82, 0x0da9, 0x0dd3, 0x0deb, 0x0dfa, 0x0e06, 0x0e24, 0x0e30, - 0x0e42, 0x0e57, 0x0e69, 0x0e81, 0x0e96, 0x0eae, 0x0eba, 0x0ec3, - 0x0ed2, 0x0ee7, 0x0efc, 0x0f02, 0x0f38, 0x0f56, 0x0f68, 0x0f92, - 0x0fea, 0x0ff0, 0x100b, 0x1053, 0x1053, 0x106b, 0x1095, 0x10a4, - 0x10dd, -} // Size: 362 bytes - -var trScriptStr string = "" + // Size: 1491 bytes + 0x0c1d, 0x0c35, 0x0c47, 0x0c77, 0x0c92, 0x0cb0, 0x0cc5, 0x0cd7, + 0x0ce9, 0x0d01, 0x0d10, 0x0d2e, 0x0d3d, 0x0d5e, 0x0d70, 0x0da3, + 0x0dca, 0x0df4, 0x0e0c, 0x0e1b, 0x0e27, 0x0e45, 0x0e51, 0x0e63, + 0x0e78, 0x0e8a, 0x0ea2, 0x0eb7, 0x0ecf, 0x0edb, 0x0ee4, 0x0ef3, + 0x0f08, 0x0f1d, 0x0f23, 0x0f59, 0x0f77, 0x0f89, 0x0fb3, 0x100b, + 0x1011, 0x102c, 0x1074, 0x1086, 0x109e, 0x10c8, 0x10d7, 0x1110, +} // Size: 376 bytes + +const trScriptStr string = "" + // Size: 1504 bytes "AfakaKafkas AlbanyasıArapİmparatorluk AramicesiErmeniAvestaBali DiliBamu" + "mBassa VahBatakBengalBlis SembolleriBopomofoBrahmiBrailleBugisBuhidChakm" + "aUCASKaryaChamÇerokiCirthKıptiKıbrısKirilEski Kilise Slavcası KirilDevan" + "agariDeseretDuployé StenografiDemotik MısırHiyeratik MısırMısır Hiyerogl" + "ifleriElbasanEtiyopyaHutsuri GürcüGürcüGlagolitGotikGranthaYunanGüceratG" + - "urmukhiHangılHanHanunooBasitleştirilmiş HanGeleneksel HanİbraniHiraganaA" + - "nadolu HiyeroglifleriPahavh HmongKatakana veya HiraganaEski MacarIndusEs" + - "ki İtalyanCava DiliJaponJurchenKayah LiKatakanaKharoshthiKmerKhojkiKanna" + - "daKoreKpelleKaithiLannaLaoFraktur LatinGael LatinLatinLepchaLimbuLineer " + - "ALineer BFraserLomaLikyaLidyaMahajaniMandenManiMaya HiyeroglifleriMendeM" + - "eroitik El YazısıMeroitikMalayalamModiMoğolMoonMroMeitei MayekBurmaEski " + - "Kuzey ArapNebatiNaksi GebaN’KoNüshuOghamOl ChikiOrhunOriyaOsmanyaPalmira" + - "Pau Cin HauEski PermikPhags-paPehlevi Kitabe DiliPsalter PehleviKitap Pe" + - "hlevi DiliFenikePollard FonetikPartça Kitabe DiliRejangRongorongoRunikSa" + - "maritSaratiEski Güney ArapSaurashtraİşaret DiliShavianSharadaSiddhamKhud" + - "abadiSeylanSora SompengSundaSyloti NagriSüryaniEstrangela SüryaniBatı Sü" + - "ryaniDoğu SüryaniTagbanvaTakriTai LeNew Tai LueTamilTangutTai VietTelugu" + - "TengvarTifinaghTakalotThaanaTayTibetTirhutaUgarit Çivi YazısıVaiKonuşma " + - "Sesleri ÇizimlemesiVarang KshitiWoleaiEski FarsSümer-Akad Çivi YazısıYiK" + - "alıtsalMatematiksel GösterimSembolYazılı OlmayanOrtakBilinmeyen Alfabe" - -var trScriptIdx = []uint16{ // 169 elements + "urmukhiHanbHangılHanHanunooBasitleştirilmiş HanGeleneksel HanİbraniHirag" + + "anaAnadolu HiyeroglifleriPahavh HmongKatakana veya HiraganaEski MacarInd" + + "usEski İtalyanJamoCava DiliJaponJurchenKayah LiKatakanaKharoshthiKmerKho" + + "jkiKannadaKoreKpelleKaithiLannaLaoFraktur LatinGael LatinLatinLepchaLimb" + + "uLineer ALineer BFraserLomaLikyaLidyaMahajaniMandenManiMaya Hiyeroglifle" + + "riMendeMeroitik El YazısıMeroitikMalayalamModiMoğolMoonMroMeitei MayekBu" + + "rmaEski Kuzey ArapNebatiNaksi GebaN’KoNüshuOghamOl ChikiOrhunOriyaOsmany" + + "aPalmiraPau Cin HauEski PermikPhags-paPehlevi Kitabe DiliPsalter Pehlevi" + + "Kitap Pehlevi DiliFenikePollard FonetikPartça Kitabe DiliRejangRongorong" + + "oRunikSamaritSaratiEski Güney ArapSaurashtraİşaret DiliShavianSharadaSid" + + "dhamKhudabadiSeylanSora SompengSundaSyloti NagriSüryaniEstrangela Süryan" + + "iBatı SüryaniDoğu SüryaniTagbanvaTakriTai LeNew Tai LueTamilTangutTai Vi" + + "etTeluguTengvarTifinaghTakalotThaanaTayTibetTirhutaUgarit Çivi YazısıVai" + + "Konuşma Sesleri ÇizimlemesiVarang KshitiWoleaiEski FarsSümer-Akad Çivi Y" + + "azısıYiKalıtsalMatematiksel GösterimEmojiSembolYazılı OlmayanOrtakBilinm" + + "eyen Alfabe" + +var trScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0005, 0x0016, 0x0016, 0x001a, 0x0031, 0x0037, 0x003d, - 0x0046, 0x004b, 0x0054, 0x0059, 0x005f, 0x006e, 0x0076, 0x007c, - 0x0083, 0x0088, 0x008d, 0x0093, 0x0097, 0x009c, 0x00a0, 0x00a7, - 0x00ac, 0x00b2, 0x00ba, 0x00bf, 0x00da, 0x00e4, 0x00eb, 0x00fe, - 0x010d, 0x011e, 0x0134, 0x013b, 0x0143, 0x0152, 0x0159, 0x0161, - 0x0166, 0x016d, 0x0172, 0x017a, 0x0182, 0x0189, 0x018c, 0x0193, - 0x01a9, 0x01b7, 0x01b7, 0x01be, 0x01c6, 0x01dc, 0x01e8, 0x01fe, - 0x0208, 0x020d, 0x021a, 0x0223, 0x0228, 0x022f, 0x0237, 0x023f, + 0x0000, 0x0000, 0x0005, 0x0016, 0x0016, 0x001a, 0x0031, 0x0037, + 0x003d, 0x0046, 0x004b, 0x0054, 0x0059, 0x005f, 0x005f, 0x006e, + 0x0076, 0x007c, 0x0083, 0x0088, 0x008d, 0x0093, 0x0097, 0x009c, + 0x00a0, 0x00a7, 0x00ac, 0x00b2, 0x00ba, 0x00bf, 0x00da, 0x00e4, + 0x00eb, 0x00fe, 0x010d, 0x011e, 0x0134, 0x013b, 0x0143, 0x0152, + 0x0159, 0x0161, 0x0166, 0x016d, 0x0172, 0x017a, 0x0182, 0x0186, + 0x018d, 0x0190, 0x0197, 0x01ad, 0x01bb, 0x01bb, 0x01c2, 0x01ca, + 0x01e0, 0x01ec, 0x0202, 0x020c, 0x0211, 0x021e, 0x0222, 0x022b, // Entry 40 - 7F - 0x0249, 0x024d, 0x0253, 0x025a, 0x025e, 0x0264, 0x026a, 0x026f, - 0x0272, 0x027f, 0x0289, 0x028e, 0x0294, 0x0299, 0x02a1, 0x02a9, - 0x02af, 0x02b3, 0x02b8, 0x02bd, 0x02c5, 0x02cb, 0x02cf, 0x02e2, - 0x02e7, 0x02fb, 0x0303, 0x030c, 0x0310, 0x0316, 0x031a, 0x031d, - 0x0329, 0x0329, 0x032e, 0x033d, 0x0343, 0x034d, 0x0353, 0x0359, - 0x035e, 0x0366, 0x036b, 0x0370, 0x0377, 0x037e, 0x0389, 0x0394, - 0x039c, 0x03af, 0x03be, 0x03d0, 0x03d6, 0x03e5, 0x03f8, 0x03fe, - 0x0408, 0x040d, 0x0414, 0x041a, 0x042a, 0x0434, 0x0441, 0x0448, + 0x0230, 0x0237, 0x023f, 0x0247, 0x0251, 0x0255, 0x025b, 0x0262, + 0x0266, 0x026c, 0x0272, 0x0277, 0x027a, 0x0287, 0x0291, 0x0296, + 0x029c, 0x02a1, 0x02a9, 0x02b1, 0x02b7, 0x02bb, 0x02c0, 0x02c5, + 0x02cd, 0x02d3, 0x02d7, 0x02d7, 0x02ea, 0x02ef, 0x0303, 0x030b, + 0x0314, 0x0318, 0x031e, 0x0322, 0x0325, 0x0331, 0x0331, 0x0336, + 0x0345, 0x034b, 0x034b, 0x0355, 0x035b, 0x0361, 0x0366, 0x036e, + 0x0373, 0x0378, 0x0378, 0x037f, 0x0386, 0x0391, 0x039c, 0x03a4, + 0x03b7, 0x03c6, 0x03d8, 0x03de, 0x03ed, 0x0400, 0x0406, 0x0410, // Entry 80 - BF - 0x044f, 0x0456, 0x045f, 0x0465, 0x0471, 0x0476, 0x0482, 0x048a, - 0x049d, 0x04ab, 0x04b9, 0x04c1, 0x04c6, 0x04cc, 0x04d7, 0x04dc, - 0x04e2, 0x04ea, 0x04f0, 0x04f7, 0x04ff, 0x0506, 0x050c, 0x050f, - 0x0514, 0x051b, 0x0530, 0x0533, 0x0550, 0x055d, 0x0563, 0x056c, - 0x0586, 0x0588, 0x0591, 0x05a7, 0x05a7, 0x05ad, 0x05bd, 0x05c2, - 0x05d3, -} // Size: 362 bytes - -var ukScriptStr string = "" + // Size: 2925 bytes - "афакакавказька албанськаахомарабицяАрмівірменськаАвестійськийБалійськийБ" + - "амумбассаБатакбенгальськасимволи БліссабопомофоБрахмішрифт БрайляБугійс" + - "ькийБухідЧакмауніфіковані символи канадських тубільцівКаріанськийХамітс" + - "ькийЧерокіКиртКоптськийКіпрськийкирилицяДавньоцерковнословʼянськийдеван" + - "агаріДезеретЄгипетський демотичнийЄгипетський ієратичнийЄгипетський ієр" + - "огліфічнийефіопськаКхутсурігрузинськаГлаголичнийГотичнийгрецькагуджарат" + - "ігурмухіхангилькитайськаХанунукитайська спрощенакитайська традиційнаівр" + - "итхіраганаПахау хмонгКатакана чи хіраганаДавньоугорськийХарапськийДавнь" + - "оіталійськийЯванськийяпонськаКая ЛікатаканаКхароштхікхмерськаканнадакор" + - "ейськаКаїтіЛанналаоськаЛатинський фрактурнийЛатинський гельськийлатиниц" + - "яЛепчаЛімбуЛінійний АЛінійний Вабетка ФрейзераломаЛікійськийЛідійськийМ" + - "андейськийМаніхейськийМайя ієрогліфічнийМероїтськиймалаяламськамонгольс" + - "ькаМунМейтей майєкмʼянмськаНкоОгамічнийСантальськийОрхонськийоріяОсманс" + - "ькийДавньопермськийПхагс-паПехлеві написівПехлеві релігійнийПехлеві літ" + - "ературнийФінікійськийписемність ПоллардаПарфянськийРеджангРонго-ронгоРу" + - "нічнийСамаритянськийСаратіСаураштраЗнаковийШоусингальськаСунданськийСіл" + - "оті нагріСирійськийДавньосирійський естрангелоДавньосирійський західний" + - "Давньосирійський східнийТагбанваТай-ліНовий тайський луетамільськатангу" + - "тТай-вʼєттелугуТенгварТифінагТагальськийтаанатайськатибетськаУгаритськи" + - "йВаївидиме мовленняДавньоперськийШумеро-аккадський клінописЙїуспадкован" + - "аматематичнасимвольнабезписемназвичайнаневідома система письма" - -var ukScriptIdx = []uint16{ // 169 elements + 0x0415, 0x041c, 0x0422, 0x0432, 0x043c, 0x0449, 0x0450, 0x0457, + 0x045e, 0x0467, 0x046d, 0x0479, 0x047e, 0x048a, 0x0492, 0x04a5, + 0x04b3, 0x04c1, 0x04c9, 0x04ce, 0x04d4, 0x04df, 0x04e4, 0x04ea, + 0x04f2, 0x04f8, 0x04ff, 0x0507, 0x050e, 0x0514, 0x0517, 0x051c, + 0x0523, 0x0538, 0x053b, 0x0558, 0x0565, 0x056b, 0x0574, 0x058e, + 0x0590, 0x0599, 0x05af, 0x05b4, 0x05ba, 0x05ca, 0x05cf, 0x05e0, +} // Size: 376 bytes + +const ukScriptStr string = "" + // Size: 2950 bytes + "афакакавказька албанськаахомарабицяармівірменськаавестійськийбалійськийб" + + "амумбассабатакбенгальськасимволи Бліссабопомофобрахмішрифт Брайлябугійс" + + "ькийбухідчакмауніфіковані символи канадських тубільцівкаріанськийхамітс" + + "ькийчерокікирткоптськийкіпрськийкирилицядавньоцерковнословʼянськийдеван" + + "агарідезеретєгипетський демотичнийєгипетський ієратичнийєгипетський ієр" + + "огліфічнийефіопськакхутсурігрузинськаглаголичнийготичнийгрецькагуджарат" + + "ігурмухіханьхангилькитайськаханунукитайська спрощенакитайська традиційн" + + "аівритхіраганапахау хмонгяпонські силабаріїдавньоугорськийхарапськийдав" + + "ньоіталійськийчамояванськийяпонськакая лікатаканакхароштхікхмерськаканн" + + "адакорейськакаїтіланналаоськалатинський фрактурнийлатинський гельськийл" + + "атиницялепчалімбулінійний Алінійний Вабетка Фрейзераломалікійськийлідій" + + "ськиймандейськийманіхейськиймайя ієрогліфічниймероїтськиймалаяламськамо" + + "нгольськамунмейтей майєкмʼянмськанкоогамічнийсантальськийорхонськийорія" + + "османськийдавньопермськийпхагс-папехлеві написівпехлеві релігійнийпехле" + + "ві літературнийфінікійськийписемність Поллардапарфянськийреджангронго-р" + + "онгорунічнийсамаритянськийсаратісаураштразнаковийшоусингальськасундансь" + + "кийсілоті нагрісирійськийдавньосирійський естрангелодавньосирійський за" + + "хіднийдавньосирійський східнийтагбанватай-ліновий тайський луетамільськ" + + "атангуттай-вʼєттелугутенгвартифінагтагальськийтаанатайськатибетськаугар" + + "итськийваївидиме мовленнядавньоперськийшумеро-аккадський клінописйїуспа" + + "дкованаматематичнаемодзісимвольнабезписемназвичайнаневідома система пис" + + "ьма" + +var ukScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000a, 0x002f, 0x0037, 0x0045, 0x004d, 0x0061, 0x0079, - 0x008d, 0x0097, 0x00a1, 0x00ab, 0x00c1, 0x00dc, 0x00ec, 0x00f8, - 0x010f, 0x0123, 0x012d, 0x0137, 0x0184, 0x019a, 0x01ae, 0x01ba, - 0x01c2, 0x01d4, 0x01e6, 0x01f6, 0x022a, 0x023e, 0x024c, 0x024c, - 0x0277, 0x02a2, 0x02d3, 0x02d3, 0x02e5, 0x02f5, 0x0309, 0x031f, - 0x032f, 0x032f, 0x033d, 0x034f, 0x035d, 0x036b, 0x037d, 0x0389, - 0x03ac, 0x03d3, 0x03d3, 0x03dd, 0x03ed, 0x03ed, 0x0402, 0x0428, - 0x0446, 0x045a, 0x047c, 0x048e, 0x049e, 0x049e, 0x04a9, 0x04b9, + 0x0000, 0x0000, 0x000a, 0x002f, 0x0037, 0x0045, 0x004d, 0x0061, + 0x0079, 0x008d, 0x0097, 0x00a1, 0x00ab, 0x00c1, 0x00c1, 0x00dc, + 0x00ec, 0x00f8, 0x010f, 0x0123, 0x012d, 0x0137, 0x0184, 0x019a, + 0x01ae, 0x01ba, 0x01c2, 0x01d4, 0x01e6, 0x01f6, 0x022a, 0x023e, + 0x024c, 0x024c, 0x0277, 0x02a2, 0x02d3, 0x02d3, 0x02e5, 0x02f5, + 0x0309, 0x031f, 0x032f, 0x032f, 0x033d, 0x034f, 0x035d, 0x0365, + 0x0373, 0x0385, 0x0391, 0x03b4, 0x03db, 0x03db, 0x03e5, 0x03f5, + 0x03f5, 0x040a, 0x042d, 0x044b, 0x045f, 0x0481, 0x0489, 0x049b, // Entry 40 - 7F - 0x04cb, 0x04dd, 0x04dd, 0x04eb, 0x04fd, 0x04fd, 0x0507, 0x0511, - 0x051f, 0x0548, 0x056f, 0x057f, 0x0589, 0x0593, 0x05a6, 0x05b9, - 0x05d6, 0x05de, 0x05f2, 0x0606, 0x0606, 0x061c, 0x0634, 0x0657, - 0x0657, 0x0657, 0x066d, 0x0685, 0x0685, 0x069b, 0x06a1, 0x06a1, - 0x06b8, 0x06b8, 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d0, 0x06d0, - 0x06e2, 0x06fa, 0x070e, 0x0716, 0x072a, 0x072a, 0x072a, 0x0748, - 0x0757, 0x0774, 0x0797, 0x07be, 0x07d6, 0x07fb, 0x0811, 0x081f, - 0x0834, 0x0844, 0x0860, 0x086c, 0x086c, 0x087e, 0x088e, 0x0894, + 0x04ab, 0x04ab, 0x04b6, 0x04c6, 0x04d8, 0x04ea, 0x04ea, 0x04f8, + 0x050a, 0x050a, 0x0514, 0x051e, 0x052c, 0x0555, 0x057c, 0x058c, + 0x0596, 0x05a0, 0x05b3, 0x05c6, 0x05e3, 0x05eb, 0x05ff, 0x0613, + 0x0613, 0x0629, 0x0641, 0x0641, 0x0664, 0x0664, 0x0664, 0x067a, + 0x0692, 0x0692, 0x06a8, 0x06ae, 0x06ae, 0x06c5, 0x06c5, 0x06d7, + 0x06d7, 0x06d7, 0x06d7, 0x06d7, 0x06dd, 0x06dd, 0x06ef, 0x0707, + 0x071b, 0x0723, 0x0723, 0x0737, 0x0737, 0x0737, 0x0755, 0x0764, + 0x0781, 0x07a4, 0x07cb, 0x07e3, 0x0808, 0x081e, 0x082c, 0x0841, // Entry 80 - BF - 0x0894, 0x0894, 0x0894, 0x08aa, 0x08aa, 0x08c0, 0x08d7, 0x08eb, - 0x0920, 0x0951, 0x0980, 0x0990, 0x0990, 0x099b, 0x09bd, 0x09d1, - 0x09dd, 0x09ec, 0x09f8, 0x0a06, 0x0a14, 0x0a2a, 0x0a34, 0x0a42, - 0x0a54, 0x0a54, 0x0a6a, 0x0a70, 0x0a8d, 0x0a8d, 0x0a8d, 0x0aa9, - 0x0adb, 0x0adf, 0x0af5, 0x0b0b, 0x0b0b, 0x0b1d, 0x0b31, 0x0b41, - 0x0b6d, -} // Size: 362 bytes - -var urScriptStr string = "" + // Size: 492 bytes + 0x0851, 0x086d, 0x0879, 0x0879, 0x088b, 0x089b, 0x08a1, 0x08a1, + 0x08a1, 0x08a1, 0x08b7, 0x08b7, 0x08cd, 0x08e4, 0x08f8, 0x092d, + 0x095e, 0x098d, 0x099d, 0x099d, 0x09a8, 0x09ca, 0x09de, 0x09ea, + 0x09f9, 0x0a05, 0x0a13, 0x0a21, 0x0a37, 0x0a41, 0x0a4f, 0x0a61, + 0x0a61, 0x0a77, 0x0a7d, 0x0a9a, 0x0a9a, 0x0a9a, 0x0ab6, 0x0ae8, + 0x0aec, 0x0b02, 0x0b18, 0x0b24, 0x0b36, 0x0b4a, 0x0b5a, 0x0b86, +} // Size: 376 bytes + +const urScriptStr string = "" + // Size: 579 bytes "عربیآرمینیائیبنگالیبوپوموفوبریلسیریلکدیوناگریایتھوپیائیجارجیائییونانیگجر" + - "اتیگرمکھیہنگولہانآسان ہانروایتی ہانعبرانیہیراگیناجاپانیکٹاکاناخمیرکنڑکو" + - "ریائیلاؤلاطینیملیالممنگولیائیمیانماراڑیہسنہالاتملتیلگوتھاناتھائیتبتیعلا" + - "ماتغیر تحریر شدہعامنامعلوم رسم الخط" + "اتیگرمکھیہینبہنگولہانآسان ہانروایتی ہانعبرانیہیراگیناجاپانی سیلابریزجام" + + "وجاپانیکٹاکاناخمیرکنڑکوریائیلاؤلاطینیملیالممنگولیائیمیانماراڑیہسنہالاتم" + + "لتیلگوتھاناتھائیتبتیریاضی کی علامتیںایموجیعلاماتغیر تحریر شدہعامنامعلوم" + + " رسم الخط" -var urScriptIdx = []uint16{ // 169 elements +var urScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x0026, 0x0026, 0x0036, 0x0036, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x004a, 0x004a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x006e, 0x006e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x008a, 0x0096, 0x00a2, 0x00ac, 0x00b2, 0x00b2, - 0x00c1, 0x00d4, 0x00d4, 0x00e0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00fc, 0x00fc, 0x00fc, 0x010a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0026, 0x0026, 0x0026, + 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, + 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x004a, 0x004a, 0x005a, + 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006e, 0x006e, + 0x007e, 0x007e, 0x007e, 0x007e, 0x008a, 0x0096, 0x00a2, 0x00aa, + 0x00b4, 0x00ba, 0x00ba, 0x00c9, 0x00dc, 0x00dc, 0x00e8, 0x00f8, + 0x00f8, 0x00f8, 0x0115, 0x0115, 0x0115, 0x0115, 0x011d, 0x011d, // Entry 40 - 7F - 0x010a, 0x0112, 0x0112, 0x0118, 0x0126, 0x0126, 0x0126, 0x0126, - 0x012c, 0x012c, 0x012c, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, - 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, - 0x0138, 0x0138, 0x0138, 0x0144, 0x0144, 0x0156, 0x0156, 0x0156, - 0x0156, 0x0156, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, + 0x0129, 0x0129, 0x0129, 0x0137, 0x0137, 0x013f, 0x013f, 0x0145, + 0x0153, 0x0153, 0x0153, 0x0153, 0x0159, 0x0159, 0x0159, 0x0165, + 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, + 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, + 0x0171, 0x0171, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0191, + 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, + 0x0191, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, // Entry 80 - BF - 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x017e, - 0x017e, 0x017e, 0x0188, 0x0188, 0x0188, 0x0188, 0x0192, 0x019c, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b0, 0x01c8, 0x01ce, - 0x01ec, -} // Size: 362 bytes - -var uzScriptStr string = "" + // Size: 273 bytes - "arabarmanbengalbopomofoBraylkirilldevanagarhabashgruzingrekgujarotgurmuk" + - "xihangulxitoysoddalashgan xitoyan’anaviy xitoyibroniyhiraganayaponkataka" + - "naxmerkannadakoreyslaoslotinmalayalammo‘g‘ulmyanmaoriyasingaltamiltelugu" + - "taanataytibetbelgilaryozuvsizumumiynoma’lum yozuv" - -var uzScriptIdx = []uint16{ // 169 elements + 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, + 0x0199, 0x0199, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, + 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01ab, 0x01ab, + 0x01ab, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01bf, 0x01c9, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, + 0x01d1, 0x01d1, 0x01ef, 0x01fb, 0x0207, 0x021f, 0x0225, 0x0243, +} // Size: 376 bytes + +const uzScriptStr string = "" + // Size: 321 bytes + "arabarmanbengalbopomofobraylkirilldevanagarihabashgruzingrekgujarotgurmu" + + "kxihanbhangulxitoysoddalashgan xitoyan’anaviy xitoyivrithiraganakatakana" + + " yoki hiraganajamoyaponkatakanakxmerkannadakoreyslaoslotinmalayalammongo" + + "lmyanmaoriyasingaltamiltelugutaanataytibetmatematik ifodalaremojibelgila" + + "ryozuvsizumumiynoma’lum yozuv" + +var uzScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x000f, 0x000f, 0x0017, 0x0017, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x0022, 0x0022, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x0031, 0x0031, 0x0037, 0x0037, - 0x0037, 0x0037, 0x003b, 0x0042, 0x004a, 0x0050, 0x0055, 0x0055, - 0x0067, 0x0078, 0x0078, 0x007f, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x008c, 0x008c, 0x008c, 0x0094, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x000f, 0x000f, 0x000f, + 0x0017, 0x0017, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, + 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0022, 0x0022, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, + 0x0038, 0x0038, 0x0038, 0x0038, 0x003c, 0x0043, 0x004b, 0x004f, + 0x0055, 0x005a, 0x005a, 0x006c, 0x007d, 0x007d, 0x0082, 0x008a, + 0x008a, 0x008a, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a4, 0x00a4, // Entry 40 - 7F - 0x0094, 0x0098, 0x0098, 0x009f, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a9, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, + 0x00a9, 0x00a9, 0x00a9, 0x00b1, 0x00b1, 0x00b6, 0x00b6, 0x00bd, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c7, 0x00c7, 0x00c7, 0x00cc, + 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00d5, 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e1, + 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, + 0x00e1, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, + 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, // Entry 80 - BF - 0x00cd, 0x00cd, 0x00cd, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d8, - 0x00d8, 0x00d8, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e3, 0x00e6, - 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f3, 0x00fb, 0x0101, - 0x0111, -} // Size: 362 bytes - -var viScriptStr string = "" + // Size: 2484 bytes + 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, + 0x00e6, 0x00e6, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f1, 0x00f1, + 0x00f1, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00fc, 0x00ff, 0x0104, + 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, + 0x0104, 0x0104, 0x0116, 0x011b, 0x0123, 0x012b, 0x0131, 0x0141, +} // Size: 376 bytes + +const viScriptStr string = "" + // Size: 2528 bytes "Chữ AfakaChữ Ả RậpChữ Imperial AramaicChữ ArmeniaChữ AvestanChữ BaliChữ " + - "BamumChữ Bassa VahChữ BatakChữ BengaliChữ BlissymbolsChữ BopomofoChữ Bra" + - "hmiChữ nổi BrailleChữ BuginChữ BuhidChữ ChakmaÂm tiết Thổ dân Canada Hợp" + - " nhấtChữ CariaChữ ChămChữ CherokeeChữ CirthChữ CopticChứ SípChữ KirinChữ" + - " Kirin Slavơ Nhà thờ cổChữ DevanagariChữ DeseretChữ tốc ký DuployanChữ A" + - "i Cập bình dânChữ Ai Cập thày tuChữ tượng hình Ai CậpChữ EthiopiaChữ Khu" + - "tsuri GeorgiaChữ GruziaChữ GlagoliticChữ Gô-tíchChữ GranthaChữ Hy LạpChữ" + - " GujaratiChữ GurmukhiChữ HangulChữ HánChữ HanunooChữ Hán giản thểChữ Hán" + - " phồn thểChữ Do TháiChữ HiraganaChữ tượng hình AnatoliaChữ Pahawh HmongB" + - "ảng ký hiệu âm tiết Tiếng NhậtChữ Hungary cổChữ IndusChữ Italic cổChữ " + - "JavaChữ Nhật BảnChữ JurchenChữ Kayah LiChữ KatakanaChữ KharoshthiChữ Khơ" + - "-meChữ KhojkiChữ KannadaChữ Hàn QuốcChữ KpelleChữ KaithiChữ LannaChữ Lào" + - "Chữ La-tinh FrakturChữ La-tinh Xcốt-lenChữ La tinhChữ LepchaChữ LimbuChữ" + - " Linear AChữ Linear BChữ FraserChữ LomaChữ LyciaChữ LydiaChữ MandaeanChữ" + - " ManichaeanChữ tượng hình MayaChữ MendeChữ Meroitic Nét thảoChữ Meroitic" + - "Chữ MalayalamChữ Mông CổChữ nổi MoonChữ MroChữ Meitei MayekMyanmaChữ Bắc" + - " Ả Rập cổChữ NabataeanChữ Naxi GebaChữ N’KoChữ NüshuChữ OghamChữ Ol Chik" + - "iChữ OrkhonChữ OriyaChữ OsmanyaChữ PalmyreneChữ Permic cổChữ Phags-paChữ" + - " Pahlavi Văn biaChữ Pahlavi Thánh caChữ Pahlavi SáchChữ PhoeniciaNgữ âm " + - "PollardChữ Parthia Văn biaChữ RejangChữ RongorongoChữ RunicChữ Samaritan" + - "Chữ SaratiChữ Nam Ả Rập cổChữ SaurashtraChữ viết Ký hiệuChữ ShavianChữ S" + - "haradaChữ KhudawadiChữ SinhalaChữ Sora SompengChữ Xu-đăngChữ Syloti Nagr" + - "iChữ SyriaChữ Estrangelo SyriacChữ Tây SyriaChữ Đông SyriaChữ TagbanwaCh" + - "ữ TakriChữ Thái NaChữ Thái Lặc mớiChữ TamilChữ TangutChữ Thái ViệtChữ " + - "TeluguChữ TengwarChữ TifinaghChữ TagalogChữ ThaanaChữ TháiChữ Tây TạngCh" + - "ữ TirhutaChữ UgaritChữ VaiTiếng nói Nhìn thấy đượcChữ Varang KshitiChữ" + - " WoleaiChữ Ba Tư cổChữ hình nêm Sumero-AkkadianChữ DiChữ Kế thừaKý hiệu " + - "Toán họcKý hiệuChưa có chữ viếtChungChữ viết không xác định" - -var viScriptIdx = []uint16{ // 169 elements + "BamumChữ Bassa VahChữ BatakChữ BangladeshChữ BlissymbolsChữ BopomofoChữ " + + "BrahmiChữ nổi BrailleChữ BuginChữ BuhidChữ ChakmaÂm tiết Thổ dân Canada " + + "Hợp nhấtChữ CariaChữ ChămChữ CherokeeChữ CirthChữ CopticChứ SípChữ Kirin" + + "Chữ Kirin Slavơ Nhà thờ cổChữ DevanagariChữ DeseretChữ tốc ký DuployanCh" + + "ữ Ai Cập bình dânChữ Ai Cập thày tuChữ tượng hình Ai CậpChữ EthiopiaCh" + + "ữ Khutsuri GeorgiaChữ GruziaChữ GlagoliticChữ Gô-tíchChữ GranthaChữ Hy" + + " LạpChữ GujaratiChữ GurmukhiChữ HanbChữ HangulChữ HánChữ HanunooChữ Hán " + + "giản thểChữ Hán phồn thểChữ Do TháiChữ HiraganaChữ tượng hình AnatoliaCh" + + "ữ Pahawh HmongBảng ký hiệu âm tiết Tiếng NhậtChữ Hungary cổChữ IndusCh" + + "ữ Italic cổChữ JamoChữ JavaChữ Nhật BảnChữ JurchenChữ Kayah LiChữ Kata" + + "kanaChữ KharoshthiChữ Khơ-meChữ KhojkiChữ KannadaChữ Hàn QuốcChữ KpelleC" + + "hữ KaithiChữ LannaChữ LàoChữ La-tinh FrakturChữ La-tinh Xcốt-lenChữ La t" + + "inhChữ LepchaChữ LimbuChữ Linear AChữ Linear BChữ FraserChữ LomaChữ Lyci" + + "aChữ LydiaChữ MandaeanChữ ManichaeanChữ tượng hình MayaChữ MendeChữ Mero" + + "itic Nét thảoChữ MeroiticChữ MalayalamChữ Mông CổChữ nổi MoonChữ MroChữ " + + "Meitei MayekChữ MyanmarChữ Bắc Ả Rập cổChữ NabataeanChữ Naxi GebaChữ N’K" + + "oChữ NüshuChữ OghamChữ Ol ChikiChữ OrkhonChữ OdiaChữ OsmanyaChữ Palmyren" + + "eChữ Permic cổChữ Phags-paChữ Pahlavi Văn biaChữ Pahlavi Thánh caChữ Pah" + + "lavi SáchChữ PhoeniciaNgữ âm PollardChữ Parthia Văn biaChữ RejangChữ Ron" + + "gorongoChữ RunicChữ SamaritanChữ SaratiChữ Nam Ả Rập cổChữ SaurashtraChữ" + + " viết Ký hiệuChữ ShavianChữ SharadaChữ KhudawadiChữ SinhalaChữ Sora Somp" + + "engChữ Xu-đăngChữ Syloti NagriChữ SyriaChữ Estrangelo SyriacChữ Tây Syri" + + "aChữ Đông SyriaChữ TagbanwaChữ TakriChữ Thái NaChữ Thái Lặc mớiChữ Tamil" + + "Chữ TangutChữ Thái ViệtChữ TeluguChữ TengwarChữ TifinaghChữ TagalogChữ T" + + "haanaChữ TháiChữ Tây TạngChữ TirhutaChữ UgaritChữ VaiTiếng nói Nhìn thấy" + + " đượcChữ Varang KshitiChữ WoleaiChữ Ba Tư cổChữ hình nêm Sumero-Akkadian" + + "Chữ DiChữ Kế thừaKý hiệu Toán họcBiểu tượngKý hiệuChưa có chữ viếtChungC" + + "hữ viết không xác định" + +var viScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000b, 0x000b, 0x000b, 0x001a, 0x0030, 0x003d, 0x004a, - 0x0054, 0x005f, 0x006e, 0x0079, 0x0086, 0x0097, 0x00a5, 0x00b1, - 0x00c4, 0x00cf, 0x00da, 0x00e6, 0x010f, 0x011a, 0x0125, 0x0133, - 0x013e, 0x014a, 0x0154, 0x015f, 0x0181, 0x0191, 0x019e, 0x01b6, - 0x01cf, 0x01e6, 0x0203, 0x0203, 0x0211, 0x0227, 0x0233, 0x0243, - 0x0252, 0x025f, 0x026d, 0x027b, 0x0289, 0x0295, 0x029f, 0x02ac, - 0x02c3, 0x02da, 0x02da, 0x02e8, 0x02f6, 0x0313, 0x0325, 0x0350, - 0x0362, 0x036d, 0x037e, 0x0388, 0x039a, 0x03a7, 0x03b5, 0x03c3, + 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x001a, 0x0030, 0x003d, + 0x004a, 0x0054, 0x005f, 0x006e, 0x0079, 0x0089, 0x0089, 0x009a, + 0x00a8, 0x00b4, 0x00c7, 0x00d2, 0x00dd, 0x00e9, 0x0112, 0x011d, + 0x0128, 0x0136, 0x0141, 0x014d, 0x0157, 0x0162, 0x0184, 0x0194, + 0x01a1, 0x01b9, 0x01d2, 0x01e9, 0x0206, 0x0206, 0x0214, 0x022a, + 0x0236, 0x0246, 0x0255, 0x0262, 0x0270, 0x027e, 0x028c, 0x0296, + 0x02a2, 0x02ac, 0x02b9, 0x02d0, 0x02e7, 0x02e7, 0x02f5, 0x0303, + 0x0320, 0x0332, 0x035d, 0x036f, 0x037a, 0x038b, 0x0395, 0x039f, // Entry 40 - 7F - 0x03d3, 0x03e0, 0x03ec, 0x03f9, 0x040a, 0x0416, 0x0422, 0x042d, - 0x0437, 0x044c, 0x0464, 0x0471, 0x047d, 0x0488, 0x0496, 0x04a4, - 0x04b0, 0x04ba, 0x04c5, 0x04d0, 0x04d0, 0x04de, 0x04ee, 0x0507, - 0x0512, 0x052c, 0x053a, 0x0549, 0x0549, 0x0559, 0x0569, 0x0572, - 0x0584, 0x0584, 0x058a, 0x05a4, 0x05b3, 0x05c2, 0x05ce, 0x05da, - 0x05e5, 0x05f3, 0x05ff, 0x060a, 0x0617, 0x0626, 0x0626, 0x0637, - 0x0645, 0x065b, 0x0672, 0x0685, 0x0694, 0x06a5, 0x06bb, 0x06c7, - 0x06d7, 0x06e2, 0x06f1, 0x06fd, 0x0715, 0x0725, 0x073c, 0x0749, + 0x03b1, 0x03be, 0x03cc, 0x03da, 0x03ea, 0x03f7, 0x0403, 0x0410, + 0x0421, 0x042d, 0x0439, 0x0444, 0x044e, 0x0463, 0x047b, 0x0488, + 0x0494, 0x049f, 0x04ad, 0x04bb, 0x04c7, 0x04d1, 0x04dc, 0x04e7, + 0x04e7, 0x04f5, 0x0505, 0x0505, 0x051e, 0x0529, 0x0543, 0x0551, + 0x0560, 0x0560, 0x0570, 0x0580, 0x0589, 0x059b, 0x059b, 0x05a8, + 0x05c2, 0x05d1, 0x05d1, 0x05e0, 0x05ec, 0x05f8, 0x0603, 0x0611, + 0x061d, 0x0627, 0x0627, 0x0634, 0x0643, 0x0643, 0x0654, 0x0662, + 0x0678, 0x068f, 0x06a2, 0x06b1, 0x06c2, 0x06d8, 0x06e4, 0x06f4, // Entry 80 - BF - 0x0756, 0x0756, 0x0765, 0x0772, 0x0784, 0x0793, 0x07a5, 0x07b0, - 0x07c7, 0x07d7, 0x07e9, 0x07f7, 0x0802, 0x0810, 0x0827, 0x0832, - 0x083e, 0x0850, 0x085c, 0x0869, 0x0877, 0x0884, 0x0890, 0x089b, - 0x08ac, 0x08b9, 0x08c5, 0x08ce, 0x08f0, 0x0903, 0x090f, 0x0920, - 0x0940, 0x0948, 0x0959, 0x096f, 0x096f, 0x0979, 0x098f, 0x0994, - 0x09b4, -} // Size: 362 bytes - -var zhScriptStr string = "" + // Size: 2184 bytes - "阿法卡文阿拉伯文皇室亚拉姆文亚美尼亚文阿维斯陀文巴厘文巴姆穆文巴萨文巴塔克文孟加拉文布列斯符号汉语拼音婆罗米文字布莱叶盲文布吉文布希德文查克马文" + - "加拿大土著统一音节卡里亚文占文切罗基文色斯文克普特文塞浦路斯文西里尔文西里尔文字(古教会斯拉夫文的变体)天城文德塞莱特文杜普洛伊速记后期埃及" + - "文古埃及僧侣书写体古埃及象形文埃塞俄比亚文格鲁吉亚文(教堂体)格鲁吉亚文格拉哥里文哥特文格兰塔文希腊文古吉拉特文果鲁穆奇文韩文字汉字汉奴罗文" + - "简体中文繁体中文希伯来文平假名安那托利亚象形文字杨松录苗文片假名或平假名古匈牙利文古希腊哈拉潘古意大利文爪哇文日文女真文克耶李文字片假名卡罗" + - "须提文高棉文克吉奇文字卡纳达文韩文克佩列文凯提文兰拿文老挝文拉丁文(哥特式字体变体)拉丁文(盖尔文变体)拉丁文雷布查文林布文线形文字(A)线" + - "形文字(B)傈僳文洛马文利西亚文吕底亚文阿拉米文摩尼教文玛雅圣符文门迪文麦罗埃草书麦若提克文马拉雅拉姆文蒙古文韩文语系谬文曼尼普尔文缅甸文古" + - "北方阿拉伯文纳巴泰文纳西格巴文西非书面文字(N’Ko)女书欧甘文桑塔利文鄂尔浑文奥里亚文奥斯曼亚文帕尔迈拉文古彼尔姆文八思巴文巴列维文碑铭体" + - "巴列维文(圣诗体)巴列维文(书体)腓尼基文波拉德音标文字帕提亚文碑铭体拉让文朗格朗格文古代北欧文撒马利亚文沙拉堤文古南阿拉伯文索拉什特拉文书" + - "写符号萧伯纳式文夏拉达文信德文僧伽罗文索朗桑朋文巽他文锡尔赫特文叙利亚文福音体叙利亚文西叙利亚文东叙利亚文塔格班瓦文泰克里文泰乐文新傣文泰米" + - "尔文唐古特文越南傣文泰卢固文腾格瓦文字提非纳文塔加路文塔安那文泰文藏文迈蒂利文乌加里特文瓦依文可见语言瓦郎奇蒂文字沃莱艾文古波斯文苏美尔-阿" + - "卡德楔形文字彝文遗传学术语数学符号符号非书面文字通用未知文字" - -var zhScriptIdx = []uint16{ // 169 elements + 0x06ff, 0x070e, 0x071a, 0x0732, 0x0742, 0x0759, 0x0766, 0x0773, + 0x0773, 0x0782, 0x078f, 0x07a1, 0x07b0, 0x07c2, 0x07cd, 0x07e4, + 0x07f4, 0x0806, 0x0814, 0x081f, 0x082d, 0x0844, 0x084f, 0x085b, + 0x086d, 0x0879, 0x0886, 0x0894, 0x08a1, 0x08ad, 0x08b8, 0x08c9, + 0x08d6, 0x08e2, 0x08eb, 0x090d, 0x0920, 0x092c, 0x093d, 0x095d, + 0x0965, 0x0976, 0x098c, 0x099b, 0x09a5, 0x09bb, 0x09c0, 0x09e0, +} // Size: 376 bytes + +const zhScriptStr string = "" + // Size: 2277 bytes + "Adlm阿法卡文AghbAhom阿拉伯文皇室亚拉姆文亚美尼亚文阿维斯陀文巴厘文巴姆穆文巴萨文巴塔克文孟加拉文Bhks布列斯符号汉语拼音婆罗米文字" + + "布莱叶盲文布吉文布希德文查克马文加拿大土著统一音节卡里亚文占文切罗基文色斯文克普特文塞浦路斯文西里尔文西里尔文字(古教会斯拉夫文的变体)天城" + + "文德塞莱特文杜普洛伊速记后期埃及文古埃及僧侣书写体古埃及象形文厄尔巴埃塞俄比亚文格鲁吉亚文(教堂体)格鲁吉亚文格拉哥里文哥特文格兰塔文希腊文" + + "古吉拉特文果鲁穆奇文汉语注音谚文汉字汉奴罗文简体中文繁体中文Hatr希伯来文平假名安那托利亚象形文字杨松录苗文片假名或平假名古匈牙利文古希腊" + + "哈拉潘古意大利文韩文字母爪哇文日文女真文克耶李文字片假名卡罗须提文高棉文克吉奇文字卡纳达文韩文克佩列文凯提文兰拿文老挝文拉丁文(哥特式字体变" + + "体)拉丁文(盖尔文变体)拉丁文雷布查文林布文线形文字(A)线形文字(B)傈僳文洛马文利西亚文吕底亚文Mahj阿拉米文摩尼教文Marc玛雅圣符" + + "文门迪文麦罗埃草书麦若提克文马拉雅拉姆文Modi蒙古文韩文语系谬文曼尼普尔文Mult缅甸文古北方阿拉伯文纳巴泰文Newa纳西格巴文西非书面文" + + "字(N’Ko)女书欧甘文桑塔利文鄂尔浑文奥里亚文Osge奥斯曼亚文帕尔迈拉文Pauc古彼尔姆文八思巴文巴列维文碑铭体巴列维文(圣诗体)巴列维" + + "文(书体)腓尼基文波拉德音标文字帕提亚文碑铭体拉让文朗格朗格文古代北欧文撒马利亚文沙拉堤文古南阿拉伯文索拉什特拉文书写符号萧伯纳式文夏拉达文" + + "悉昙信德文僧伽罗文索朗桑朋文巽他文锡尔赫特文叙利亚文福音体叙利亚文西叙利亚文东叙利亚文塔格班瓦文泰克里文泰乐文新傣文泰米尔文唐古特文越南傣文" + + "泰卢固文腾格瓦文字提非纳文塔加路文塔安那文泰文藏文迈蒂利文乌加里特文瓦依文可见语言瓦郎奇蒂文字沃莱艾文古波斯文苏美尔-阿卡德楔形文字彝文遗传" + + "学术语数学符号绘文字符号非书面文字通用未知文字" + +var zhScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000c, 0x000c, 0x000c, 0x0018, 0x002a, 0x0039, 0x0048, - 0x0051, 0x005d, 0x0066, 0x0072, 0x007e, 0x008d, 0x0099, 0x00a8, - 0x00b7, 0x00c0, 0x00cc, 0x00d8, 0x00f3, 0x00ff, 0x0105, 0x0111, - 0x011a, 0x0126, 0x0135, 0x0141, 0x0174, 0x017d, 0x018c, 0x019e, - 0x01ad, 0x01c5, 0x01d7, 0x01d7, 0x01e9, 0x0207, 0x0216, 0x0225, - 0x022e, 0x023a, 0x0243, 0x0252, 0x0261, 0x026a, 0x0270, 0x027c, - 0x0288, 0x0294, 0x0294, 0x02a0, 0x02a9, 0x02c4, 0x02d3, 0x02e8, - 0x02f7, 0x0309, 0x0318, 0x0321, 0x0327, 0x0330, 0x033f, 0x0348, + 0x0000, 0x0004, 0x0010, 0x0014, 0x0018, 0x0024, 0x0036, 0x0045, + 0x0054, 0x005d, 0x0069, 0x0072, 0x007e, 0x008a, 0x008e, 0x009d, + 0x00a9, 0x00b8, 0x00c7, 0x00d0, 0x00dc, 0x00e8, 0x0103, 0x010f, + 0x0115, 0x0121, 0x012a, 0x0136, 0x0145, 0x0151, 0x0184, 0x018d, + 0x019c, 0x01ae, 0x01bd, 0x01d5, 0x01e7, 0x01f0, 0x0202, 0x0220, + 0x022f, 0x023e, 0x0247, 0x0253, 0x025c, 0x026b, 0x027a, 0x0286, + 0x028c, 0x0292, 0x029e, 0x02aa, 0x02b6, 0x02ba, 0x02c6, 0x02cf, + 0x02ea, 0x02f9, 0x030e, 0x031d, 0x032f, 0x033e, 0x034a, 0x0353, // Entry 40 - 7F - 0x0357, 0x0360, 0x036f, 0x037b, 0x0381, 0x038d, 0x0396, 0x039f, - 0x03a8, 0x03cc, 0x03ea, 0x03f3, 0x03ff, 0x0408, 0x041b, 0x042e, - 0x0437, 0x0440, 0x044c, 0x0458, 0x0458, 0x0464, 0x0470, 0x047f, - 0x0488, 0x0497, 0x04a6, 0x04b8, 0x04b8, 0x04c1, 0x04cd, 0x04d3, - 0x04e2, 0x04e2, 0x04eb, 0x0500, 0x050c, 0x051b, 0x0539, 0x053f, - 0x0548, 0x0554, 0x0560, 0x056c, 0x057b, 0x058a, 0x058a, 0x0599, - 0x05a5, 0x05ba, 0x05d5, 0x05ed, 0x05f9, 0x060e, 0x0623, 0x062c, - 0x063b, 0x064a, 0x0659, 0x0665, 0x0677, 0x0689, 0x0695, 0x06a4, + 0x0359, 0x0362, 0x0371, 0x037a, 0x0389, 0x0392, 0x03a1, 0x03ad, + 0x03b3, 0x03bf, 0x03c8, 0x03d1, 0x03da, 0x03fe, 0x041c, 0x0425, + 0x0431, 0x043a, 0x044d, 0x0460, 0x0469, 0x0472, 0x047e, 0x048a, + 0x048e, 0x049a, 0x04a6, 0x04aa, 0x04b9, 0x04c2, 0x04d1, 0x04e0, + 0x04f2, 0x04f6, 0x04ff, 0x050b, 0x0511, 0x0520, 0x0524, 0x052d, + 0x0542, 0x054e, 0x0552, 0x0561, 0x057f, 0x0585, 0x058e, 0x059a, + 0x05a6, 0x05b2, 0x05b6, 0x05c5, 0x05d4, 0x05d8, 0x05e7, 0x05f3, + 0x0608, 0x0623, 0x063b, 0x0647, 0x065c, 0x0671, 0x067a, 0x0689, // Entry 80 - BF - 0x06b0, 0x06b0, 0x06b9, 0x06c5, 0x06d4, 0x06dd, 0x06ec, 0x06f8, - 0x070d, 0x071c, 0x072b, 0x073a, 0x0746, 0x074f, 0x0758, 0x0764, - 0x0770, 0x077c, 0x0788, 0x0797, 0x07a3, 0x07af, 0x07bb, 0x07c1, - 0x07c7, 0x07d3, 0x07e2, 0x07eb, 0x07f7, 0x0809, 0x0815, 0x0821, - 0x0840, 0x0846, 0x0855, 0x0861, 0x0861, 0x0867, 0x0876, 0x087c, - 0x0888, -} // Size: 362 bytes - -var zhHantScriptStr string = "" + // Size: 2409 bytes + 0x0698, 0x06a7, 0x06b3, 0x06c5, 0x06d7, 0x06e3, 0x06f2, 0x06fe, + 0x0704, 0x070d, 0x0719, 0x0728, 0x0731, 0x0740, 0x074c, 0x0761, + 0x0770, 0x077f, 0x078e, 0x079a, 0x07a3, 0x07ac, 0x07b8, 0x07c4, + 0x07d0, 0x07dc, 0x07eb, 0x07f7, 0x0803, 0x080f, 0x0815, 0x081b, + 0x0827, 0x0836, 0x083f, 0x084b, 0x085d, 0x0869, 0x0875, 0x0894, + 0x089a, 0x08a9, 0x08b5, 0x08be, 0x08c4, 0x08d3, 0x08d9, 0x08e5, +} // Size: 376 bytes + +const zhHantScriptStr string = "" + // Size: 2460 bytes "阿法卡文字高加索阿爾巴尼亞文阿拉伯文皇室亞美尼亞文亞美尼亞文阿維斯陀文峇里文巴姆穆文巴薩文巴塔克文孟加拉文布列斯文注音符號婆羅米文盲人用點字布吉" + "斯文布希德文查克馬文加拿大原住民通用字符卡里亞文占文柴羅基文色斯文科普特文塞浦路斯文斯拉夫文西里爾文(古教會斯拉夫文變體)天城文德瑟雷特文杜" + "普洛伊速記古埃及世俗體古埃及僧侶體古埃及象形文字愛爾巴桑文衣索比亞文喬治亞語系(阿索他路里和努斯克胡里文)喬治亞文格拉哥里文歌德文格蘭他文字" + - "希臘文古吉拉特文古魯穆奇文韓文字漢語哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名或平假名古匈牙利文印度河流域(哈" + - "拉帕文)古意大利文爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培列文凱提文藍拿文寮國文拉丁文(尖角體活字變體)拉" + - "丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞語里底亞語曼底安文摩尼教文瑪雅象形文字門德文麥羅埃文(曲" + - "線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納巴泰文字納西格巴文西非書面語言 (N’Ko)女書文字歐甘文桑塔利" + - "文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文" + - "(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋" + - "文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣" + - "文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯" + - "亞甲文楔形文字彞文繼承文字(Unicode)數學符號符號非書寫語言一般文字未知文字" - -var zhHantScriptIdx = []uint16{ // 169 elements + "希臘文古吉拉特文古魯穆奇文標上注音符號的漢字韓文字漢字哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名或平假名古匈牙" + + "利文印度河流域(哈拉帕文)古意大利文韓文字母爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培列文凱提文藍拿文寮國文" + + "拉丁文(尖角體活字變體)拉丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞語里底亞語曼底安文摩尼教文瑪雅" + + "象形文字門德文麥羅埃文(曲線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納巴泰文字納西格巴文西非書面語言 (N’" + + "Ko)女書文字歐甘文桑塔利文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基" + + "文柏格理拼音符帕提亞文(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文" + + "字信德文錫蘭文索朗桑朋文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里" + + "文字傣哪文西雙版納新傣文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字" + + "沃雷艾文古波斯文蘇米魯亞甲文楔形文字彞文繼承文字(Unicode)數學符號表情符號符號非書寫語言一般文字未知文字" + +var zhHantScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, 0x0069, - 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b7, 0x00c3, - 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, 0x0126, 0x0132, - 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, 0x01a7, 0x01b9, - 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, 0x0255, 0x0264, - 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, 0x02ac, 0x02b2, 0x02be, - 0x02ca, 0x02d6, 0x02d6, 0x02e2, 0x02eb, 0x0306, 0x0315, 0x032a, - 0x0339, 0x035a, 0x0369, 0x0372, 0x0378, 0x0384, 0x0390, 0x0399, + 0x0000, 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, + 0x0069, 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x009f, 0x00ab, + 0x00b7, 0x00c3, 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, + 0x0126, 0x0132, 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, + 0x01a7, 0x01b9, 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, + 0x0255, 0x0264, 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, 0x02be, + 0x02c7, 0x02cd, 0x02d9, 0x02e5, 0x02f1, 0x02f1, 0x02fd, 0x0306, + 0x0321, 0x0330, 0x0345, 0x0354, 0x0375, 0x0384, 0x0390, 0x0399, // Entry 40 - 7F - 0x03a8, 0x03b1, 0x03c0, 0x03cc, 0x03d2, 0x03de, 0x03e7, 0x03f0, - 0x03f9, 0x041d, 0x043b, 0x0444, 0x0450, 0x0459, 0x046c, 0x047f, - 0x0488, 0x0491, 0x049d, 0x04a9, 0x04a9, 0x04b5, 0x04c1, 0x04d3, - 0x04dc, 0x04fa, 0x0506, 0x0518, 0x0518, 0x0521, 0x052d, 0x0533, - 0x0542, 0x0542, 0x054b, 0x055d, 0x056c, 0x057b, 0x0596, 0x05a2, - 0x05ab, 0x05b7, 0x05c3, 0x05cf, 0x05de, 0x05f0, 0x05f0, 0x0602, - 0x060e, 0x0629, 0x0644, 0x065c, 0x0668, 0x067a, 0x0695, 0x069e, - 0x06b3, 0x06c2, 0x06d1, 0x06dd, 0x06ef, 0x0701, 0x0713, 0x0722, + 0x039f, 0x03ab, 0x03b7, 0x03c0, 0x03cf, 0x03d8, 0x03e7, 0x03f3, + 0x03f9, 0x0405, 0x040e, 0x0417, 0x0420, 0x0444, 0x0462, 0x046b, + 0x0477, 0x0480, 0x0493, 0x04a6, 0x04af, 0x04b8, 0x04c4, 0x04d0, + 0x04d0, 0x04dc, 0x04e8, 0x04e8, 0x04fa, 0x0503, 0x0521, 0x052d, + 0x053f, 0x053f, 0x0548, 0x0554, 0x055a, 0x0569, 0x0569, 0x0572, + 0x0584, 0x0593, 0x0593, 0x05a2, 0x05bd, 0x05c9, 0x05d2, 0x05de, + 0x05ea, 0x05f6, 0x05f6, 0x0605, 0x0617, 0x0617, 0x0629, 0x0635, + 0x0650, 0x066b, 0x0683, 0x068f, 0x06a1, 0x06bc, 0x06c5, 0x06da, // Entry 80 - BF - 0x072e, 0x073a, 0x0743, 0x074c, 0x075e, 0x0767, 0x077c, 0x0788, - 0x07af, 0x07d3, 0x07f7, 0x0800, 0x080f, 0x0818, 0x082d, 0x0839, - 0x0842, 0x084b, 0x0857, 0x0863, 0x086f, 0x087b, 0x0887, 0x088d, - 0x0896, 0x08a2, 0x08ae, 0x08b7, 0x08c9, 0x08db, 0x08e7, 0x08f3, - 0x0911, 0x0917, 0x0930, 0x093c, 0x093c, 0x0942, 0x0951, 0x095d, - 0x0969, -} // Size: 362 bytes - -var zuScriptStr string = "" + // Size: 371 bytes - "i-Arabi-Armeniani-Bengalii-Bopomofoi-Braillei-Cyrillici-Devanagarii-Ethi" + - "opici-Georgiani-Greeki-Gujaratii-Gurmukhii-Hanguli-Hani-Simplified Hani-" + - "Traditional Hani-Hebrewi-Hiraganai-Japanesei-Katakanai-Khmeri-Kannadai-K" + - "oreani-Laoi-Latini-Malayami-Mongoliani-Myanmari-Oriyai-Sinhalai-Tamili-T" + - "elegui-Thaanai-Thaii-Tibetanamasimbuliokungabhaliweejwayelekileiskripthi" + - " esingaziwa" - -var zuScriptIdx = []uint16{ // 169 elements + 0x06e9, 0x06f8, 0x0704, 0x0716, 0x0728, 0x073a, 0x0749, 0x0755, + 0x0761, 0x076a, 0x0773, 0x0785, 0x078e, 0x07a3, 0x07af, 0x07d6, + 0x07fa, 0x081e, 0x0827, 0x0836, 0x083f, 0x0854, 0x0860, 0x0869, + 0x0872, 0x087e, 0x088a, 0x0896, 0x08a2, 0x08ae, 0x08b4, 0x08bd, + 0x08c9, 0x08d5, 0x08de, 0x08f0, 0x0902, 0x090e, 0x091a, 0x0938, + 0x093e, 0x0957, 0x0963, 0x096f, 0x0975, 0x0984, 0x0990, 0x099c, +} // Size: 376 bytes + +const zuScriptStr string = "" + // Size: 504 bytes + "isi-Arabicisi-Armenianisi-Banglaisi-Bopomofoi-Brailleisi-Cyrillicisi-Dev" + + "anagariisi-Ethiopicisi-Georgianisi-Greekisi-Gujaratiisi-Gurmukhiisi-Hanb" + + "isi-Hangulisi-Hanisi-Han esenziwe lulaisi-Han sosikoisi-Hebrewisi-Hiraga" + + "nai-Japanese syllabariesisi-Jamoisi-Japaneseisi-Katakanaisi-Khmerisi-Kan" + + "nadaisi-Koreanisi-Laoisi-Latinisi-Malayalamisi-Mongolianisi-Myanmarisi-O" + + "diaisi-Sinhalaisi-Tamilisi-Teluguisi-Thaanaisi-Thaii-Tibetani-Mathematic" + + "al Notationi-Emojiamasimbuliokungabhaliwejwayelekileiskripthi esingaziwa" + +var zuScriptIdx = []uint16{ // 176 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0023, 0x0023, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x0036, 0x0036, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x004c, 0x004c, 0x0056, 0x0056, - 0x0056, 0x0056, 0x005d, 0x0067, 0x0071, 0x0079, 0x007e, 0x007e, - 0x008e, 0x009f, 0x009f, 0x00a7, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00bb, 0x00c5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0016, + 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x0020, 0x0020, + 0x002c, 0x002c, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0041, 0x0041, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x005b, 0x005b, + 0x0067, 0x0067, 0x0067, 0x0067, 0x0070, 0x007c, 0x0088, 0x0090, + 0x009a, 0x00a1, 0x00a1, 0x00b6, 0x00c4, 0x00c4, 0x00ce, 0x00da, + 0x00da, 0x00da, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f8, 0x00f8, // Entry 40 - 7F - 0x00c5, 0x00cc, 0x00cc, 0x00d5, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00e2, 0x00e2, 0x00e2, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, + 0x0104, 0x0104, 0x0104, 0x0110, 0x0110, 0x0119, 0x0119, 0x0124, + 0x012e, 0x012e, 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x013e, + 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, + 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, + 0x014b, 0x014b, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0163, + 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, + 0x0163, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, + 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, // Entry 80 - BF - 0x010d, 0x010d, 0x010d, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, - 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x011d, - 0x011d, 0x011d, 0x0125, 0x0125, 0x0125, 0x0125, 0x012d, 0x0133, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x0146, 0x0153, 0x015f, - 0x0173, -} // Size: 362 bytes + 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, + 0x016b, 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, + 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x017f, 0x017f, + 0x017f, 0x0189, 0x0189, 0x0189, 0x0189, 0x0193, 0x019b, 0x01a4, + 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, + 0x01a4, 0x01a4, 0x01bb, 0x01c2, 0x01cc, 0x01d9, 0x01e4, 0x01f8, +} // Size: 376 bytes -// Total size for script: 233224 bytes (233 KB) +// Total size for script: 242449 bytes (242 KB) -// Number of keys: 289 +// Number of keys: 291 var ( regionIndex = tagIndex{ "ACADAEAFAGAIALAMAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBW" + "BYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEGEH" + - "ERESETEUFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHT" + - "HUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLRLS" + - "LTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINL" + - "NONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQAQORERORSRURWSASBSCSDSESGSH" + - "SISJSKSLSMSNSOSRSSSTSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUM" + - "USUYUZVAVCVEVGVIVNVUWFWSXKYEYTZAZMZWZZ", + "ERESETEUEZFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHR" + + "HTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLR" + + "LSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNI" + + "NLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQAQORERORSRURWSASBSCSDSESG" + + "SHSISJSKSLSMSNSOSRSSSTSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUG" + + "UMUNUSUYUZVAVCVEVGVIVNVUWFWSXKYEYTZAZMZWZZ", "001002003005009011013014015017018019021029030034035039053054057061142143" + "145150151154155419", "", } ) -var regionHeaders = [220]header{ +var regionHeaders = [252]header{ { // af afRegionStr, afRegionIdx, }, - { // agq - "ÀndolàYùnaetɛ Alab ɛmelɛ̀Àfɨ̀ganìsɨ̀tânÀntigwà à BàbudàÀŋgwilàÀabɛnìaÀmɛ" + - "nyìaÀŋgolàÀdzɛ̀ntinàÀmɛlekan SamwàUsɨtɨ̀làÙsɨ̀tɛ̀lɛlìaÀlubàÀzɨbɛ̀dzâ" + - "nBosɨnyìa à Hɛ̀zɛ̀gòvinàBàbadòsBaŋgɨ̀làdɛ̂BɛɛdzwùmBùkinà FasòBùugɛlì" + - "aBàlaenBùlundìBɛ̀nɨ̂ŋBɛ̀mudàBɨ̀lunèBòlevàBɨ̀làzîiBàhamàsMbutànBòtɨ̀s" + - "wǎnàBɛlàlûsBɛ̀lezɨ̀KanadàDɛ̀mùkàlatì Lèkpubèlè è KuŋgùSɛnta Afɨlekan" + - " LèkpobèlèKuŋgùSuezàlânKu Dɨ̀vûaChwɨla ŋ̀ KûʔChilèKàmàlûŋChaenàKòlom" + - "bìaKòsɨ̀tà LekàKuuwbàChwɨla ŋ̀ Kɛ̀b Vɛ̂ɛSaekpùlùChɛ̂ LèkpubèlèDzaman" + - "èDzìbuwtìDɛnɨmàDòmenekàDòmenekà LèkpubèlèÀadzɛlìaEkwadòÈsɨ̀tonyìaEd" + - "zìÈletɨ̀làSɨ̀kpɛ̂nÈtyǒpìaFɨnlànFidziChwɨlà fɨ FakɨlànMaekòlòneshìaFà" + - "lâŋnsìGàbûnYùnaetɛ Kiŋdɔ̀mGɨ̀lɛnadàDzɔɔdzìaGàyanà è FàlâŋnsìGaanàDzi" + - "bɨ̀latàGɨ̀lenlânGambìaGinèGwadalukpɛ̀Èkwɛ̀tolia GinèGɨ̀lêsGwàtɨ̀malà" + - "GwamGinè BìsawùGùyanàHɔndulàsKòwɛshìaHǎetìHɔŋgàlèÈndòneshìaAelɨ̀lânE" + - "zɨ̀lɛ̂EndìaDɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kòÈlâkɨ̀ÈlânAesɨ̀" + - "lânEtalèDzàmɛkàDzodànDzàkpânKɨnyàKìdzisɨ̀tânKàmbodìaKèlèbatiKomolòsS" + - "ɛ̀n Kî à NevìKùulîa, EkùwKùulîa, EmàmKùwɛ̂Chwɨlà ŋ̀ KaemànKàzasɨ̀tâ" + - "nLàwosLɛbanèSɛ̀n LushìaLetɨnshɨ̀nSɨ̀le LaŋkàLàebɛlìaLɛ̀sotùLètwǎnyìa" + - "LuzɨmbùʔLàtɨvaLebìaMòlokòMùnakuMòodovàMàdàgasɨkàChwɨlà fɨ MashàMɨ̀sɨ" + - "̀donyìaMalèMǐanmàMùŋgolìaChwɨlà m̀ Màlǐanà mɨ̀ Ekùw mòMàtìnekìMùlèt" + - "anyìaMùŋtselàMaatàMùleshwɨ̀sMàdivèMàlawìMɛkɨzikùMàlɛshìaMùzàmbîNàmib" + - "ìaKàlèdonyìa È fūghūNaedzàChwɨlà fɨ NufòʔGɨ̀anyɨNikàlagwàNedàlânNoo" + - "wɛ̂ɛNɛkpâaNàwulùNiyuZìlân È fūghūUmànKpanàmaKpɛlûKpoleneshìa è Fàlâŋ" + - "nsìKpakpua Ginè È fūghūFelèkpîKpakìsɨ̀tânKpulànSɛ̀n Kpiyɛ̀ à Mikelɔŋ" + - "Kpitɨ̀kalèKpǒto LekoAdzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à kɨ Gazà kòKputu" + - "wgàKpàlawùKpalàgwɛ̂KatàLèyunyɔ̀ŋLùmanyìaLoshìaLùwandàSawudi AlabiChw" + - "ɨlà fɨ Solomwɨ̀nSɛchɛ̀lɛ̀sSùdânSuedɨ̀nSiŋgàkpôoSɛ̀n ÈlenàSɨ̀lòvɨnyì" + - "aSɨ̀lòvɨkɨ̀aSilìa lûŋSàn MàlenùSɛ̀nɛ̀gâaSòmalìaSulènamèSawo Tɔ̀me à " + - "Kpèlènsikpɛ̀EsàvadòSilîaShǔazìlânChwɨla n Tɨtê à KaekùsChâTugùTaelàn" + - "Tàdzikìsɨ̀tânTuwkelawùÊs TaemòTekɨmènèsɨ̀tânTùneshìaTuŋgàTeekìTèlene" + - "dà à TòbagùTuwvalùwTaewànTàanzanyìaYùkɛ̀lɛ̂YùgandàUSAYulùgwɛ̂Yùzɨ̀bɛ" + - "kìsɨ̀tânVatikàn Sɨ̀tɛ̂Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tēVɛ̀nɛ̀zǔɛɛlàChwɨlà" + - " m̀ Vidzinyìa m̀ Bɨ̀letì mòU. S. Chwɨlà fɨ MbuʔmbuVìyɛnàmVànǔatùwWal" + - "es à FùwtuwnàSàmowàYɛmɛ̀nMàyotìAfɨlekà ghɨ Emàm ghòZambìaZìmbagbɛ̀", - []uint16{ // 259 elements + { // agq + "ÀndolàYùnaetɛ Alab ɛmelɛ̀Àfɨ̀ganìsɨ̀tânÀntigwà à BàbudàÀŋgwilàÀabɛnìaÀmɛ" + + "nyìaÀŋgolàÀdzɛ̀ntinàÀmɛlekan SamwàUsɨtɨ̀làÙsɨ̀tɛ̀lɛlìaÀlubàÀzɨbɛ̀dzâ" + + "nBosɨnyìa à Hɛ̀zɛ̀gòvinàBàbadòsBaŋgɨ̀làdɛ̂BɛɛdzwùmBùkinà FasòBùugɛlì" + + "aBàlaenBùlundìBɛ̀nɨ̂ŋBɛ̀mudàBɨ̀lunèBòlevàBɨ̀làzîiBàhamàsMbutànBòtɨ̀s" + + "wǎnàBɛlàlûsBɛ̀lezɨ̀KanadàDɛ̀mùkàlatì Lèkpubèlè è KuŋgùSɛnta Afɨlekan" + + " LèkpobèlèKuŋgùSuezàlânKu Dɨ̀vûaChwɨla ŋ̀ KûʔChilèKàmàlûŋChaenàKòlom" + + "bìaKòsɨ̀tà LekàKuuwbàChwɨla ŋ̀ Kɛ̀b Vɛ̂ɛSaekpùlùChɛ̂ LèkpubèlèDzaman" + + "èDzìbuwtìDɛnɨmàDòmenekàDòmenekà LèkpubèlèÀadzɛlìaEkwadòÈsɨ̀tonyìaEd" + + "zìÈletɨ̀làSɨ̀kpɛ̂nÈtyǒpìaFɨnlànFidziChwɨlà fɨ FakɨlànMaekòlòneshìaFà" + + "lâŋnsìGàbûnYùnaetɛ Kiŋdɔ̀mGɨ̀lɛnadàDzɔɔdzìaGàyanà è FàlâŋnsìGaanàDzi" + + "bɨ̀latàGɨ̀lenlânGambìaGinèGwadalukpɛ̀Èkwɛ̀tolia GinèGɨ̀lêsGwàtɨ̀malà" + + "GwamGinè BìsawùGùyanàHɔndulàsKòwɛshìaHǎetìHɔŋgàlèÈndòneshìaAelɨ̀lânE" + + "zɨ̀lɛ̂EndìaDɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kòÈlâkɨ̀ÈlânAesɨ̀" + + "lânEtalèDzàmɛkàDzodànDzàkpânKɨnyàKìdzisɨ̀tânKàmbodìaKèlèbatiKomolòsS" + + "ɛ̀n Kî à NevìKùulîa, EkùwKùulîa, EmàmKùwɛ̂Chwɨlà ŋ̀ KaemànKàzasɨ̀tâ" + + "nLàwosLɛbanèSɛ̀n LushìaLetɨnshɨ̀nSɨ̀le LaŋkàLàebɛlìaLɛ̀sotùLètwǎnyìa" + + "LuzɨmbùʔLàtɨvaLebìaMòlokòMùnakuMòodovàMàdàgasɨkàChwɨlà fɨ MashàMɨ̀sɨ" + + "̀donyìaMalèMǐanmàMùŋgolìaChwɨlà m̀ Màlǐanà mɨ̀ Ekùw mòMàtìnekìMùlèt" + + "anyìaMùŋtselàMaatàMùleshwɨ̀sMàdivèMàlawìMɛkɨzikùMàlɛshìaMùzàmbîNàmib" + + "ìaKàlèdonyìa È fūghūNaedzàChwɨlà fɨ NufòʔGɨ̀anyɨNikàlagwàNedàlânNoo" + + "wɛ̂ɛNɛkpâaNàwulùNiyuZìlân È fūghūUmànKpanàmaKpɛlûKpoleneshìa è Fàlâŋ" + + "nsìKpakpua Ginè È fūghūFelèkpîKpakìsɨ̀tânKpulànSɛ̀n Kpiyɛ̀ à Mikelɔŋ" + + "Kpitɨ̀kalèKpǒto LekoAdzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à kɨ Gazà kòKputu" + + "wgàKpàlawùKpalàgwɛ̂KatàLèyunyɔ̀ŋLùmanyìaLoshìaLùwandàSawudi AlabiChw" + + "ɨlà fɨ Solomwɨ̀nSɛchɛ̀lɛ̀sSùdânSuedɨ̀nSiŋgàkpôoSɛ̀n ÈlenàSɨ̀lòvɨnyì" + + "aSɨ̀lòvɨkɨ̀aSilìa lûŋSàn MàlenùSɛ̀nɛ̀gâaSòmalìaSulènamèSawo Tɔ̀me à " + + "Kpèlènsikpɛ̀EsàvadòSilîaShǔazìlânChwɨla n Tɨtê à KaekùsChâTugùTaelàn" + + "Tàdzikìsɨ̀tânTuwkelawùÊs TaemòTekɨmènèsɨ̀tânTùneshìaTuŋgàTeekìTèlene" + + "dà à TòbagùTuwvalùwTaewànTàanzanyìaYùkɛ̀lɛ̂YùgandàUSAYulùgwɛ̂Yùzɨ̀bɛ" + + "kìsɨ̀tânVatikàn Sɨ̀tɛ̂Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tēVɛ̀nɛ̀zǔɛɛlàChwɨlà" + + " m̀ Vidzinyìa m̀ Bɨ̀letì mòU. S. Chwɨlà fɨ MbuʔmbuVìyɛnàmVànǔatùwWal" + + "es à FùwtuwnàSàmowàYɛmɛ̀nMàyotìAfɨlekà ghɨ Emàm ghòZambìaZìmbagbɛ̀", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0008, 0x0020, 0x0035, 0x004a, 0x0054, 0x005e, + 0x0068, 0x0071, 0x0071, 0x007f, 0x0090, 0x009c, 0x00af, 0x00b6, + 0x00b6, 0x00c5, 0x00e5, 0x00ee, 0x00ff, 0x010a, 0x0118, 0x0123, + 0x012a, 0x0133, 0x013f, 0x013f, 0x0149, 0x0153, 0x015b, 0x015b, + 0x0167, 0x0170, 0x0177, 0x0177, 0x0186, 0x0190, 0x019c, 0x01a3, + 0x01a3, 0x01cb, 0x01e8, 0x01ef, 0x01f9, 0x0205, 0x0217, 0x021d, + 0x0228, 0x022f, 0x0239, 0x0239, 0x024a, 0x0251, 0x026c, 0x026c, + 0x026c, 0x0276, 0x0289, 0x0291, 0x0291, 0x029b, 0x02a4, 0x02ae, + // Entry 40 - 7F + 0x02c5, 0x02d0, 0x02d0, 0x02d7, 0x02e5, 0x02ea, 0x02ea, 0x02f6, + 0x0302, 0x030c, 0x030c, 0x030c, 0x0314, 0x0319, 0x032f, 0x033f, + 0x033f, 0x034b, 0x0352, 0x0366, 0x0373, 0x037e, 0x0396, 0x0396, + 0x039c, 0x03a9, 0x03b5, 0x03bc, 0x03c1, 0x03ce, 0x03e1, 0x03ea, + 0x03ea, 0x03f8, 0x03fc, 0x040a, 0x0412, 0x0412, 0x0412, 0x041c, + 0x0427, 0x042e, 0x0439, 0x0439, 0x0446, 0x0451, 0x045c, 0x045c, + 0x0462, 0x049a, 0x04a4, 0x04aa, 0x04b5, 0x04bb, 0x04bb, 0x04c5, + 0x04cc, 0x04d5, 0x04dc, 0x04eb, 0x04f5, 0x04ff, 0x0507, 0x051a, + // Entry 80 - BF + 0x0529, 0x0538, 0x0540, 0x0555, 0x0563, 0x0569, 0x0571, 0x057f, + 0x058c, 0x059b, 0x05a6, 0x05b0, 0x05bc, 0x05c7, 0x05cf, 0x05d5, + 0x05dd, 0x05e4, 0x05ed, 0x05ed, 0x05ed, 0x05fb, 0x060e, 0x061f, + 0x0624, 0x062c, 0x0637, 0x0637, 0x065e, 0x0669, 0x0676, 0x0681, + 0x0687, 0x0694, 0x069c, 0x06a4, 0x06af, 0x06ba, 0x06c4, 0x06cd, + 0x06e5, 0x06ec, 0x0700, 0x070a, 0x0715, 0x071e, 0x0728, 0x0730, + 0x0738, 0x073c, 0x074e, 0x0753, 0x075b, 0x0762, 0x077e, 0x0796, + 0x079f, 0x07ae, 0x07b5, 0x07d1, 0x07de, 0x07e9, 0x0822, 0x082b, + // Entry C0 - FF + 0x0834, 0x0840, 0x0845, 0x0845, 0x0852, 0x085c, 0x085c, 0x0863, + 0x086c, 0x0878, 0x0890, 0x089f, 0x08a6, 0x08af, 0x08bb, 0x08c9, + 0x08d9, 0x08d9, 0x08ea, 0x08f6, 0x0903, 0x0911, 0x091a, 0x0924, + 0x0924, 0x0944, 0x094d, 0x094d, 0x0953, 0x095f, 0x095f, 0x097a, + 0x097e, 0x097e, 0x0983, 0x098a, 0x099c, 0x09a6, 0x09b0, 0x09c4, + 0x09ce, 0x09d5, 0x09db, 0x09f1, 0x09fa, 0x0a01, 0x0a0d, 0x0a1a, + 0x0a23, 0x0a23, 0x0a23, 0x0a26, 0x0a31, 0x0a48, 0x0a5b, 0x0a7f, + 0x0a93, 0x0abd, 0x0ad8, 0x0ae2, 0x0aed, 0x0b00, 0x0b08, 0x0b08, + // Entry 100 - 13F + 0x0b11, 0x0b19, 0x0b32, 0x0b39, 0x0b45, + }, + }, + { // ak + "AndoraUnited Arab EmiratesAfganistanAntigua ne BaabudaAnguilaAlbeniaAame" + + "niaAngolaAgyɛntinaAmɛrika SamoaƆstriaƆstreliaArubaAzebaegyanBosnia n" + + "e HɛzegovinaBaabadosBangladɛhyeBɛlgyiumBɔkina FasoBɔlgeriaBarenBurun" + + "diBɛninBɛmudaBrunaeBoliviaBrazilBahamaButanBɔtswanaBɛlarusBelizKanad" + + "aKongo (Zair)Afrika Finimfin ManKongoSwetzalandLa Côte d’IvoireKook " + + "NsupɔwKyiliKamɛrunKyaenaKolombiaKɔsta RikaKubaKepvɛdfo IslandsSaeprɔ" + + "sKyɛk KurokɛseGyaamanGyibutiDɛnmakDɔmenekaDɔmeneka KurokɛseƆlgyeriaI" + + "kuwadɔƐstoniaNisrimƐritreaSpainIthiopiaFinlandFigyiFɔlkman AelandMae" + + "kronehyiaFrɛnkyemanGabɔnAhendiman NkabomGrenadaGyɔgyeaFrɛnkye Gayana" + + "GaanaGyebraltaGreenmanGambiaGiniGuwadelupGini IkuwetaGreekmanGuwatem" + + "alaGuamGini BisawGayanaHɔndurasKrowehyiaHeitiHangariIndɔnehyiaAerela" + + "ndIsraelIndiaBritenfo Hɔn Man Wɔ India Po No MuIrakIranAeslandItaliG" + + "yamekaGyɔdanGyapanKɛnyaKɛɛgestanKambodiaKiribatiKɔmɔrɔsSaint Kitts n" + + "e NɛvesEtifi KoriaAnaafo KoriaKuweteKemanfo IslandsKazakstanLaosLɛba" + + "nɔnSaint LuciaLektenstaenSri LankaLaeberiaLɛsutuLituweniaLaksembɛgLa" + + "tviaLibyaMorokoMɔnakoMɔldovaMadagaskaMarshall IslandsMasedoniaMaliMi" + + "yanmaMɔngoliaNorthern Mariana IslandsMatinikMɔreteniaMantseratMɔltaM" + + "ɔrehyeɔsMaldivesMalawiMɛksikoMalehyiaMozambikNamibiaKaledonia Fofor" + + "oNigyɛNɔfolk AelandNaegyeriaNekaraguwaNɛdɛlandNɔɔweNɛpɔlNaworuNiyuZi" + + "land FoforoOmanPanamaPeruFrɛnkye PɔlenehyiaPapua Guinea FoforoPhilip" + + "pinesPakistanPolandSaint Pierre ne MiquelonPitcairnPuɛto RikoPalesta" + + "en West Bank ne GazaPɔtugalPalauParaguayKataReyuniɔnRomeniaRɔhyeaRwa" + + "ndaSaudi ArabiaSolomon IslandsSeyhyɛlSudanSwedenSingapɔSaint HelenaS" + + "loviniaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé " + + "and PríncipeƐl SalvadɔSiriaSwazilandTurks ne Caicos IslandsKyadTogoT" + + "aelandTajikistanTokelauTimɔ BokaTɛkmɛnistanTunihyiaTongaTɛɛkiTrinida" + + "d ne TobagoTuvaluTaiwanTanzaniaUkrenUgandaAmɛrikaYurugwaeUzbɛkistanV" + + "atican ManSaint Vincent ne GrenadinesVenezuelaBritainfo Virgin Islan" + + "dsAmɛrika Virgin IslandsViɛtnamVanuatuWallis ne FutunaSamoaYɛmenMayɔ" + + "teAfrika AnaafoZambiaZembabwe", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0006, 0x001a, 0x0024, 0x0036, 0x003d, 0x0044, + 0x004b, 0x0051, 0x0051, 0x005b, 0x0069, 0x0070, 0x0079, 0x007e, + 0x007e, 0x0088, 0x009d, 0x00a5, 0x00b1, 0x00ba, 0x00c6, 0x00cf, + 0x00d4, 0x00db, 0x00e1, 0x00e1, 0x00e8, 0x00ee, 0x00f5, 0x00f5, + 0x00fb, 0x0101, 0x0106, 0x0106, 0x010f, 0x0117, 0x011c, 0x0122, + 0x0122, 0x012e, 0x0141, 0x0146, 0x0150, 0x0163, 0x016f, 0x0174, + 0x017c, 0x0182, 0x018a, 0x018a, 0x0195, 0x0199, 0x01aa, 0x01aa, + 0x01aa, 0x01b2, 0x01c1, 0x01c8, 0x01c8, 0x01cf, 0x01d6, 0x01df, + // Entry 40 - 7F + 0x01f2, 0x01fb, 0x01fb, 0x0203, 0x020b, 0x0211, 0x0211, 0x0219, + 0x021e, 0x0226, 0x0226, 0x0226, 0x022d, 0x0232, 0x0241, 0x024d, + 0x024d, 0x0258, 0x025e, 0x026e, 0x0275, 0x027d, 0x028c, 0x028c, + 0x0291, 0x029a, 0x02a2, 0x02a8, 0x02ac, 0x02b5, 0x02c1, 0x02c9, + 0x02c9, 0x02d3, 0x02d7, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02f0, + 0x02f9, 0x02fe, 0x0305, 0x0305, 0x0310, 0x0318, 0x031e, 0x031e, + 0x0323, 0x0347, 0x034b, 0x034f, 0x0356, 0x035b, 0x035b, 0x0362, + 0x0369, 0x036f, 0x0375, 0x0380, 0x0388, 0x0390, 0x039a, 0x03af, + // Entry 80 - BF + 0x03ba, 0x03c6, 0x03cc, 0x03db, 0x03e4, 0x03e8, 0x03f1, 0x03fc, + 0x0407, 0x0410, 0x0418, 0x041f, 0x0428, 0x0432, 0x0438, 0x043d, + 0x0443, 0x044a, 0x0452, 0x0452, 0x0452, 0x045b, 0x046b, 0x0474, + 0x0478, 0x047f, 0x0488, 0x0488, 0x04a0, 0x04a7, 0x04b1, 0x04ba, + 0x04c0, 0x04cb, 0x04d3, 0x04d9, 0x04e1, 0x04e9, 0x04f1, 0x04f8, + 0x0508, 0x050e, 0x051c, 0x0525, 0x052f, 0x0539, 0x0540, 0x0547, + 0x054d, 0x0551, 0x055e, 0x0562, 0x0568, 0x056c, 0x0580, 0x0593, + 0x059e, 0x05a6, 0x05ac, 0x05c4, 0x05cc, 0x05d7, 0x05f2, 0x05fa, + // Entry C0 - FF + 0x05ff, 0x0607, 0x060b, 0x060b, 0x0614, 0x061b, 0x061b, 0x0622, + 0x0628, 0x0634, 0x0643, 0x064b, 0x0650, 0x0656, 0x065e, 0x066a, + 0x0672, 0x0672, 0x067a, 0x0686, 0x0690, 0x0697, 0x069e, 0x06a6, + 0x06a6, 0x06be, 0x06ca, 0x06ca, 0x06cf, 0x06d8, 0x06d8, 0x06ef, + 0x06f3, 0x06f3, 0x06f7, 0x06fe, 0x0708, 0x070f, 0x0719, 0x0726, + 0x072e, 0x0733, 0x073a, 0x074c, 0x0752, 0x0758, 0x0760, 0x0765, + 0x076b, 0x076b, 0x076b, 0x0773, 0x077b, 0x0786, 0x0791, 0x07ac, + 0x07b5, 0x07cd, 0x07e4, 0x07ec, 0x07f3, 0x0803, 0x0808, 0x0808, + // Entry 100 - 13F + 0x080e, 0x0815, 0x0822, 0x0828, 0x0830, + }, + }, + { // am + amRegionStr, + amRegionIdx, + }, + { // ar + arRegionStr, + arRegionIdx, + }, + {}, // ar-EG + { // ar-LY + "سبتة ومليليةمونتيسيراتأوروغواي", + []uint16{ // 245 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + // Entry 80 - BF + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, + 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + // Entry C0 - FF + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x002b, 0x003b, + }, + }, + { // ar-SA + "جزر البهاماسبتة ومليليةمونتيسيراتسان بيير وميكولونأوروغواي", + []uint16{ // 245 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + // Entry 40 - 7F + 0x0015, 0x0015, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + // Entry 80 - BF + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + // Entry C0 - FF + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x0060, 0x0060, 0x0070, + }, + }, + { // as + "এন্টাৰ্টিকাব্ৰাজিলবভেট দ্বীপচীনজাৰ্মানিফ্ৰান্সসংযুক্ত ৰাজ্যদক্ষিণ জৰ্জিয" + + "়া আৰু দক্ষিণ চেণ্ডৱিচ্\u200c দ্বীপহাৰ্ড দ্বীপ আৰু মেক্\u200cডোনাল" + + "্ড দ্বীপভাৰতব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চলইটালিজাপানৰুচদক্ষিণ " + + "ফ্ৰান্সৰ অঞ্চলযুক্তৰাষ্ট্ৰঅজ্ঞাত বা অবৈধ অঞ্চল", + []uint16{ // 262 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, + 0x0036, 0x0036, 0x0036, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, + 0x005b, 0x005b, 0x005b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, + // Entry 40 - 7F + 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, + 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, + 0x0073, 0x0088, 0x0088, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, + 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, + 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0182, 0x0182, + 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, + 0x018e, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01fd, 0x01fd, 0x01fd, + 0x01fd, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + // Entry 80 - BF + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + // Entry C0 - FF + 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0215, + 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, + 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, + 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, + 0x0215, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, + 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, + 0x0250, 0x0250, 0x0250, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, + 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, + // Entry 100 - 13F + 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x02aa, + }, + }, + { // asa + "AndoraFalme dha KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArme" + + "niaAngolaAjentinaThamoa ya MarekaniAuthtriaAuthtraliaArubaAdhabajani" + + "Bothnia na HedhegovinaBabadothiBangladeshiUbelgijiBukinafathoBulgari" + + "aBahareniBurundiBeniniBermudaBruneiBraziliBahamaButaniBotthwanaBelar" + + "uthiBelidheKanadaJamhuri ya Kidemokrathia ya KongoJamhuri ya Afrika " + + "ya KatiKongoUthwithiKodivaaVithiwa vya CookChileKameruniChinaKolombi" + + "aKothtarikaKubaKepuvedeKuprothiJamhuri ya ChekiUjerumaniJibutiDenmak" + + "iDominikaJamhuri ya DominikaAljeriaEkwadoEthtoniaMithriEritreaHithpa" + + "niaUhabeshiUfiniFijiVithiwa vya FalklandMikronethiaUfaranthaGaboniUi" + + "ngeredhaGrenadaJojiaGwiyana ya UfaranthaGhanaJibraltaGrinlandiGambia" + + "GineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurathiK" + + "orathiaHaitiHungariaIndonethiaAyalandiIthraeliIndiaIeneo la Uingered" + + "ha katika Bahari HindiIrakiUajemiAithlandiItaliaJamaikaYordaniJapani" + + "KenyaKirigizithtaniKambodiaKiribatiKomoroThantakitdhi na NevithKorea" + + " KathkaziniKorea KuthiniKuwaitiVithiwa vya KaymanKazakithtaniLaothiL" + + "ebanoniThantaluthiaLishenteniThirilankaLiberiaLethotoLitwaniaLathemb" + + "agiLativiaLibyaMorokoMonakoMoldovaBukiniVithiwa vya MarshalMathedoni" + + "aMaliMyamaMongoliaVithiwa vya Mariana vya KathkaziniMartinikiMoritan" + + "iaMonttherratiMaltaMorithiModivuMalawiMekthikoMalethiaMthumbijiNamib" + + "iaNyukaledoniaNijeriKithiwa cha NorfokNijeriaNikaragwaUholandhiNorwe" + + "NepaliNauruNiueNyudhilandiOmaniPanamaPeruPolinesia ya UfaranthaPapua" + + "FilipinoPakithtaniPolandiThantapieri na MikeloniPitkairniPwetorikoPa" + + "lestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUruthiRwandaThaudiVit" + + "hiwa vya TholomonShelisheliThudaniUthwidiThingapooThantahelenaThlove" + + "niaTholvakiaThiera LeoniThamarinoThenegaliThomaliaThurinamuThao Tome" + + " na PrincipeElsavadoThiriaUthwadhiVithiwa vya Turki na KaikoChadiTog" + + "oTailandiTajikithtaniTokelauTimori ya MasharikiTurukimenithtaniTunit" + + "hiaTongaUturukiTrinidad na TobagoTuvaluTaiwaniTadhaniaUgandaMarekani" + + "UrugwaiUdhibekithtaniVatikaniThantavithenti na GrenadiniVenezuelaVit" + + "hiwa vya Virgin vya UingeredhaVithiwa vya Virgin vya MarekaniVietina" + + "muVanuatuWalith na FutunaThamoaYemeniMayotteAfrika KuthiniDhambiaDhi" + + "mbabwe", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0044, + 0x004b, 0x0051, 0x0051, 0x0059, 0x006b, 0x0073, 0x007d, 0x0082, + 0x0082, 0x008c, 0x00a2, 0x00ab, 0x00b6, 0x00be, 0x00c9, 0x00d1, + 0x00d9, 0x00e0, 0x00e6, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00f3, + 0x00fa, 0x0100, 0x0106, 0x0106, 0x010f, 0x0118, 0x011f, 0x0125, + 0x0125, 0x0146, 0x015f, 0x0164, 0x016c, 0x0173, 0x0183, 0x0188, + 0x0190, 0x0195, 0x019d, 0x019d, 0x01a7, 0x01ab, 0x01b3, 0x01b3, + 0x01b3, 0x01bb, 0x01cb, 0x01d4, 0x01d4, 0x01da, 0x01e1, 0x01e9, + // Entry 40 - 7F + 0x01fc, 0x0203, 0x0203, 0x0209, 0x0211, 0x0217, 0x0217, 0x021e, + 0x0227, 0x022f, 0x022f, 0x022f, 0x0234, 0x0238, 0x024c, 0x0257, + 0x0257, 0x0260, 0x0266, 0x0270, 0x0277, 0x027c, 0x0290, 0x0290, + 0x0295, 0x029d, 0x02a6, 0x02ac, 0x02b0, 0x02b9, 0x02c2, 0x02c9, + 0x02c9, 0x02d2, 0x02d6, 0x02df, 0x02e5, 0x02e5, 0x02e5, 0x02ef, + 0x02f7, 0x02fc, 0x0304, 0x0304, 0x030e, 0x0316, 0x031e, 0x031e, + 0x0323, 0x034a, 0x034f, 0x0355, 0x035e, 0x0364, 0x0364, 0x036b, + 0x0372, 0x0378, 0x037d, 0x038b, 0x0393, 0x039b, 0x03a1, 0x03b7, + // Entry 80 - BF + 0x03c7, 0x03d4, 0x03db, 0x03ed, 0x03f9, 0x03ff, 0x0407, 0x0413, + 0x041d, 0x0427, 0x042e, 0x0435, 0x043d, 0x0447, 0x044e, 0x0453, + 0x0459, 0x045f, 0x0466, 0x0466, 0x0466, 0x046c, 0x047f, 0x0489, + 0x048d, 0x0492, 0x049a, 0x049a, 0x04bc, 0x04c5, 0x04ce, 0x04da, + 0x04df, 0x04e6, 0x04ec, 0x04f2, 0x04fa, 0x0502, 0x050b, 0x0512, + 0x051e, 0x0524, 0x0536, 0x053d, 0x0546, 0x054f, 0x0554, 0x055a, + 0x055f, 0x0563, 0x056e, 0x0573, 0x0579, 0x057d, 0x0593, 0x0598, + 0x05a0, 0x05aa, 0x05b1, 0x05c8, 0x05d1, 0x05da, 0x05e3, 0x05e8, + // Entry C0 - FF + 0x05ed, 0x05f5, 0x05fb, 0x05fb, 0x0604, 0x060b, 0x060b, 0x0611, + 0x0617, 0x061d, 0x0631, 0x063b, 0x0642, 0x0649, 0x0652, 0x065e, + 0x0667, 0x0667, 0x0670, 0x067c, 0x0685, 0x068e, 0x0696, 0x069f, + 0x069f, 0x06b4, 0x06bc, 0x06bc, 0x06c2, 0x06ca, 0x06ca, 0x06e4, + 0x06e9, 0x06e9, 0x06ed, 0x06f5, 0x0701, 0x0708, 0x071b, 0x072b, + 0x0733, 0x0738, 0x073f, 0x0751, 0x0757, 0x075e, 0x0766, 0x0766, + 0x076c, 0x076c, 0x076c, 0x0774, 0x077b, 0x0789, 0x0791, 0x07ac, + 0x07b5, 0x07d6, 0x07f5, 0x07fe, 0x0805, 0x0815, 0x081b, 0x081b, + // Entry 100 - 13F + 0x0821, 0x0828, 0x0836, 0x083d, 0x0846, + }, + }, + { // ast + "Islla AscensiónAndorraEmiratos Árabes XuníosAfganistánAntigua y BarbudaA" + + "nguilaAlbaniaArmeniaAngolaL’AntártidaArxentinaSamoa AmericanaAustria" + + "AustraliaArubaIslles AlandAzerbaixánBosnia y HerzegovinaBarbadosBang" + + "ladexBélxicaBurkina FasuBulgariaBaḥréinBurundiBenínSan BartoloméLes " + + "BermudesBrunéiBoliviaCaribe neerlandésBrasilLes BahamesButánIslla Bo" + + "uvetBotsuanaBielorrusiaBelizeCanadáIslles Cocos (Keeling)Congu - Kin" + + "xasaRepública CentroafricanaCongu - BrazzavilleSuizaCosta de MarfilI" + + "slles CookChileCamerúnChinaColombiaIslla ClippertonCosta RicaCubaCab" + + "u VerdeCuraçaoIslla ChristmasXipreChequiaAlemañaDiego GarciaXibutiDi" + + "namarcaDominicaRepública DominicanaArxeliaCeuta y MelillaEcuadorEsto" + + "niaExiptuSáḥara OccidentalEritreaEspañaEtiopíaXunión EuropeaFinlandi" + + "aIslles FixiFalkland IslandsMicronesiaIslles FeroeFranciaGabónReinu " + + "XuníuGranadaXeorxaGuyana FrancesaGuernseyGhanaXibraltarGroenlandiaGa" + + "mbiaGuineaGuadalupeGuinea EcuatorialGreciaIslles Xeorxa del Sur y Sa" + + "ndwich del SurGuatemalaGuamGuinea-BisáuGuyanaARE China de Ḥong KongI" + + "slles Heard y McDonaldHonduresCroaciaHaitíHungríaIslles CanariesIndo" + + "nesiaIrlandaIsraelIslla de ManIndiaTerritoriu Británicu del Océanu Í" + + "ndicuIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKeniaKirguistán" + + "CamboyaKiribatiLes ComoresSaint Kitts y NevisCorea del NorteCorea de" + + "l SurKuwaitIslles CaimánKazakstánLaosLíbanuSanta LlucíaLiechtenstein" + + "Sri LankaLiberiaLesothuLituaniaLuxemburguLetoniaLibiaMarruecosMónacu" + + "MoldaviaMontenegruSaint MartinMadagascarIslles MarshallMacedoniaMalí" + + "Myanmar (Birmania)MongoliaARE China de MacáuIslles Marianes del Nort" + + "eLa MartinicaMauritaniaMontserratMaltaMauriciuLes MaldivesMalauiMéxi" + + "cuMalasiaMozambiqueNamibiaNueva CaledoniaEl NíxerIslla NorfolkNixeri" + + "aNicaraguaPaíses BaxosNoruegaNepalNauruNiueNueva ZelandaOmánPanamáPe" + + "rúPolinesia FrancesaPapúa Nueva GuineaFilipinesPaquistánPoloniaSaint" + + " Pierre y MiquelonIslles PitcairnPuertu RicuTerritorios PalestinosPo" + + "rtugalPaláuParaguáiQatarOceanía esteriorReuniónRumaníaSerbiaRusiaRua" + + "ndaArabia SauditaIslles SalomónLes SeixelesSudánSueciaSingapurSanta " + + "HelenaEsloveniaSvalbard ya Islla Jan MayenEslovaquiaSierra LleonaSan" + + " MarínSenegalSomaliaSurinamSudán del SurSantu Tomé y PríncipeEl Salv" + + "adorSint MaartenSiriaSuazilandiaTristán da CunhaIslles Turques y Cai" + + "cosChadTierres Australes FrancesesToguTailandiaTaxiquistánTokeláuTim" + + "or OrientalTurkmenistánTuniciaTongaTurquíaTrinidá y TobaguTuvaluTaiw" + + "ánTanzaniaUcraínaUgandaIslles Perifériques Menores de los EE.XX.Est" + + "aos XuníosUruguáiUzbequistánCiudá del VaticanuSan Vicente y Granadin" + + "esVenezuelaIslles Vírxenes BritániquesIslles Vírxenes AmericanesViet" + + "namVanuatuWallis y FutunaSamoaKosovuYemenMayotteSudáfricaZambiaZimba" + + "bueRexón desconocidaMunduÁfricaNorteaméricaAmérica del SurOceaníaÁfr" + + "ica OccidentalAmérica CentralÁfrica OrientalÁfrica del NorteÁfrica C" + + "entralÁfrica del SurAméricaAmérica del NorteCaribeAsia OrientalAsia " + + "del SurSureste AsiáticuEuropa del SurAustralasiaMelanesiaRexón de Mi" + + "cronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa Orienta" + + "lEuropa del NorteEuropa OccidentalAmérica Llatina", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0010, 0x0017, 0x002f, 0x003a, 0x004b, 0x0052, 0x0059, + 0x0060, 0x0066, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c, 0x00a1, + 0x00ad, 0x00b8, 0x00cc, 0x00d4, 0x00dd, 0x00e5, 0x00f1, 0x00f9, + 0x0103, 0x010a, 0x0110, 0x011e, 0x012a, 0x0131, 0x0138, 0x014a, + 0x0150, 0x015b, 0x0161, 0x016d, 0x0175, 0x0180, 0x0186, 0x018d, + 0x01a3, 0x01b2, 0x01cb, 0x01de, 0x01e3, 0x01f2, 0x01fd, 0x0202, + 0x020a, 0x020f, 0x0217, 0x0227, 0x0231, 0x0235, 0x023f, 0x0247, + 0x0256, 0x025b, 0x0262, 0x026a, 0x0276, 0x027c, 0x0285, 0x028d, + // Entry 40 - 7F + 0x02a2, 0x02a9, 0x02b8, 0x02bf, 0x02c6, 0x02cc, 0x02e0, 0x02e7, + 0x02ee, 0x02f6, 0x0305, 0x0305, 0x030e, 0x0319, 0x0329, 0x0333, + 0x033f, 0x0346, 0x034c, 0x0358, 0x035f, 0x0365, 0x0374, 0x037c, + 0x0381, 0x038a, 0x0395, 0x039b, 0x03a1, 0x03aa, 0x03bb, 0x03c1, + 0x03e9, 0x03f2, 0x03f6, 0x0403, 0x0409, 0x0421, 0x0438, 0x0440, + 0x0447, 0x044d, 0x0455, 0x0464, 0x046d, 0x0474, 0x047a, 0x0486, + 0x048b, 0x04b4, 0x04b8, 0x04bd, 0x04c5, 0x04cb, 0x04d1, 0x04d8, + 0x04e0, 0x04e6, 0x04eb, 0x04f6, 0x04fd, 0x0505, 0x0510, 0x0523, + // Entry 80 - BF + 0x0532, 0x053f, 0x0545, 0x0553, 0x055d, 0x0561, 0x0568, 0x0575, + 0x0582, 0x058b, 0x0592, 0x0599, 0x05a1, 0x05ab, 0x05b2, 0x05b7, + 0x05c0, 0x05c7, 0x05cf, 0x05d9, 0x05e5, 0x05ef, 0x05fe, 0x0607, + 0x060c, 0x061e, 0x0626, 0x0639, 0x0652, 0x065e, 0x0668, 0x0672, + 0x0677, 0x067f, 0x068b, 0x0691, 0x0698, 0x069f, 0x06a9, 0x06b0, + 0x06bf, 0x06c8, 0x06d5, 0x06dc, 0x06e5, 0x06f2, 0x06f9, 0x06fe, + 0x0703, 0x0707, 0x0714, 0x0719, 0x0720, 0x0725, 0x0737, 0x074a, + 0x0753, 0x075d, 0x0764, 0x077b, 0x078a, 0x0795, 0x07ab, 0x07b3, + // Entry C0 - FF + 0x07b9, 0x07c2, 0x07c7, 0x07d8, 0x07e0, 0x07e8, 0x07ee, 0x07f3, + 0x07f9, 0x0807, 0x0816, 0x0822, 0x0828, 0x082e, 0x0836, 0x0842, + 0x084b, 0x0866, 0x0870, 0x087d, 0x0887, 0x088e, 0x0895, 0x089c, + 0x08aa, 0x08c1, 0x08cc, 0x08d8, 0x08dd, 0x08e8, 0x08f9, 0x0910, + 0x0914, 0x092f, 0x0933, 0x093c, 0x0948, 0x0950, 0x095e, 0x096b, + 0x0972, 0x0977, 0x097f, 0x0990, 0x0996, 0x099d, 0x09a5, 0x09ad, + 0x09b3, 0x09dd, 0x09dd, 0x09eb, 0x09f3, 0x09ff, 0x0a12, 0x0a2a, + 0x0a33, 0x0a50, 0x0a6b, 0x0a72, 0x0a79, 0x0a88, 0x0a8d, 0x0a93, + // Entry 100 - 13F + 0x0a98, 0x0a9f, 0x0aa9, 0x0aaf, 0x0ab7, 0x0ac9, 0x0ace, 0x0ad5, + 0x0ae2, 0x0af2, 0x0afa, 0x0b0c, 0x0b1c, 0x0b2c, 0x0b3d, 0x0b4c, + 0x0b5b, 0x0b63, 0x0b75, 0x0b7b, 0x0b88, 0x0b94, 0x0ba5, 0x0bb3, + 0x0bbe, 0x0bc7, 0x0bdb, 0x0be4, 0x0be8, 0x0bf4, 0x0c03, 0x0c09, + 0x0c18, 0x0c28, 0x0c39, 0x0c49, + }, + }, + { // az + azRegionStr, + azRegionIdx, + }, + { // az-Cyrl + "Аскенсон адасыАндорраБирләшмиш Әрәб ӘмирликләриӘфганыстанАнтигуа вә Барб" + + "удаАнҝилјаАлбанијаЕрмәнистанАнголаАнтарктикаАрҝентинаАмерика Самоас" + + "ыАвстријаАвстралијаАрубаАланд адаларыАзәрбајҹанБоснија вә Һерсегови" + + "наБарбадосБангладешБелчикаБуркина ФасоБолгарыстанБәһрејнБурундиБени" + + "нСент-БартелемиБермуд адаларыБрунејБоливијаБразилијаБаһам адаларыБу" + + "танБуве адасыБотсванаБеларусБелизКанадаКокос (Килинг) адаларыКонго-" + + "КиншасаМәркәзи Африка РеспубликасыКонго-БраззавилИсвечрәKотд’ивуарК" + + "ук адаларыЧилиКамерунЧинКолумбијаКлиппертон адасыКоста РикаКубаКабо" + + "-ВердеКурасаоМилад адасыКипрЧехијаАлманијаДиего ГарсијаҸибутиДанимар" + + "каДоминикаДоминикан РеспубликасыӘлҹәзаирСеута вә МелилјаЕквадорЕсто" + + "нијаМисирЕритрејаИспанијаЕфиопијаАвропа БирлијиФинландијаФиҹиФолкле" + + "нд адаларыМикронезијаФарер адаларыФрансаГабонБирләшмиш КраллыгГрена" + + "даҜүрҹүстанФранса ГвианасыҜернсиГанаҸәбәллүтаригГренландијаГамбијаГ" + + "винејаГваделупаЕкваториал ГвинејаЈунаныстанҸәнуби Ҹорҹија вә Ҹәнуби" + + " Сендвич адаларыГватемалаГуамГвинеја-БисауГајанаҺонк Конг Хүсуси Инз" + + "ибати Әрази ЧинҺерд вә Макдоналд адаларыҺондурасХорватијаҺаитиМаҹар" + + "ыстанКанар адаларыИндонезијаИрландијаИсраилМен адасыҺиндистанБритан" + + "тјанын Һинд Океаны ӘразисиИрагИранИсландијаИталијаҸерсиЈамајкаИорда" + + "нијаЈапонијаКенијаГырғызыстанКамбоҹаКирибатиКомор адаларыСент-Китс " + + "вә НевисШимали КорејаҸәнуби КорејаКүвејтКајман адаларыГазахыстанЛао" + + "сЛиванСент-ЛусијаЛихтенштејнШри-ЛанкаЛиберијаЛесотоЛитваЛүксембургЛ" + + "атвијаЛивијаМәракешМонакоМолдоваМонтенегроСент МартинМадагаскарМарш" + + "ал адаларыМалиМјанмаМонголустанМакао Хүсуси Инзибати Әрази ЧинШимал" + + "и Мариан адаларыМартиникМавританијаМонсератМалтаМаврикиМалдив адала" + + "рыМалавиМексикаМалајзијаМозамбикНамибијаЈени КаледонијаНиҝерНорфолк" + + " адасыНиҝеријаНикарагуаНидерландНорвечНепалНауруНиуеЈени ЗеландијаОм" + + "анПанамаПеруФранса ПолинезијасыПапуа-Јени ГвинејаФилиппинПакистанПо" + + "лшаМүгәддәс Пјер вә МикелонПиткерн адаларыПуерто РикоПортугалијаПал" + + "ауПарагвајГәтәрУзаг ОкеанијаРејунјонРумынијаСербијаРусијаРуандаСәуд" + + "ијјә ӘрәбистаныСоломон адаларыСејшел адаларыСуданИсвечСингапурМүгәд" + + "дәс ЈеленаСловенијаСвалбард вә Јан-МајенСловакијаСјерра-ЛеонеСан-Ма" + + "риноСенегалСомалиСуринамҸәнуби СуданСан-Томе вә ПринсипиСалвадорСин" + + "т-МартенСуријаСвазилендТристан да КунјаТөркс вә Кајкос адаларыЧадФр" + + "ансанын Ҹәнуб ӘразиләриТогоТаиландТаҹикистанТокелауШәрги ТиморТүркм" + + "әнистанТунисТонгаТүркијәТринидад вә ТобагоТувалуТајванТанзанијаУкра" + + "јнаУгандаАБШ-а бағлы кичик адаҹыгларАмерика Бирләшмиш ШтатларыУругв" + + "ајӨзбәкистанВатиканСент-Винсент вә ГренадинләрВенесуелаБританијанын" + + " Вирҝин адаларыАБШ Вирҝин адаларыВјетнамВануатуУоллис вә ФутунаСамоа" + + "КосовоЈәмәнМајотҸәнуб АфрикаЗамбијаЗимбабвеНамәлум РеҝионДүнјаАфрик" + + "аШимали АмерикаҸәнуби АмерикаОкеанијаГәрби АфрикаМәркәзи АмерикаШәр" + + "ги АфрикаШимали АфрикаМәркәзи АфрикаҸәнуби АфрикаАмерикаШимал Амери" + + "касыКарибШәрги АсијаҸәнуби АсијаҸәнуб-Шәрги АсијаҸәнуби АвропаАвстр" + + "алазијаМеланезијаМикронезија РеҝионуПолинезијаАсијаМәркәзи АсијаГәр" + + "би АсијаАвропаШәрги АвропаШимали АвропаГәрби АвропаЛатын Америкасы", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x001b, 0x0029, 0x005b, 0x006f, 0x0091, 0x009f, 0x00af, + 0x00c3, 0x00cf, 0x00e3, 0x00f5, 0x0112, 0x0122, 0x0136, 0x0140, + 0x0159, 0x016d, 0x0197, 0x01a7, 0x01b9, 0x01c7, 0x01de, 0x01f4, + 0x0202, 0x0210, 0x021a, 0x0235, 0x0250, 0x025c, 0x026c, 0x026c, + 0x027e, 0x0297, 0x02a1, 0x02b4, 0x02c4, 0x02d2, 0x02dc, 0x02e8, + 0x0310, 0x0329, 0x035d, 0x037a, 0x0388, 0x039c, 0x03b1, 0x03b9, + 0x03c7, 0x03cd, 0x03df, 0x03fe, 0x0411, 0x0419, 0x042c, 0x043a, + 0x044f, 0x0457, 0x0463, 0x0473, 0x048c, 0x0498, 0x04aa, 0x04ba, + // Entry 40 - 7F + 0x04e5, 0x04f5, 0x0513, 0x0521, 0x0531, 0x053b, 0x053b, 0x054b, + 0x055b, 0x056b, 0x0586, 0x0586, 0x059a, 0x05a2, 0x05c1, 0x05d7, + 0x05f0, 0x05fc, 0x0606, 0x0627, 0x0635, 0x0647, 0x0664, 0x0670, + 0x0678, 0x0690, 0x06a6, 0x06b4, 0x06c2, 0x06d4, 0x06f7, 0x070b, + 0x0756, 0x0768, 0x0770, 0x0789, 0x0795, 0x07d6, 0x0805, 0x0815, + 0x0827, 0x0831, 0x0845, 0x085e, 0x0872, 0x0884, 0x0890, 0x08a1, + 0x08b3, 0x08f0, 0x08f8, 0x0900, 0x0912, 0x0920, 0x092a, 0x0938, + 0x094a, 0x095a, 0x0966, 0x097c, 0x098a, 0x099a, 0x09b3, 0x09d4, + // Entry 80 - BF + 0x09ed, 0x0a06, 0x0a12, 0x0a2d, 0x0a41, 0x0a49, 0x0a53, 0x0a68, + 0x0a7e, 0x0a8f, 0x0a9f, 0x0aab, 0x0ab5, 0x0ac9, 0x0ad7, 0x0ae3, + 0x0af1, 0x0afd, 0x0b0b, 0x0b1f, 0x0b34, 0x0b48, 0x0b63, 0x0b63, + 0x0b6b, 0x0b77, 0x0b8d, 0x0bc7, 0x0bef, 0x0bff, 0x0c15, 0x0c25, + 0x0c2f, 0x0c3d, 0x0c58, 0x0c64, 0x0c72, 0x0c84, 0x0c94, 0x0ca4, + 0x0cc1, 0x0ccb, 0x0ce4, 0x0cf4, 0x0d06, 0x0d18, 0x0d24, 0x0d2e, + 0x0d38, 0x0d40, 0x0d5b, 0x0d63, 0x0d6f, 0x0d77, 0x0d9c, 0x0dbe, + 0x0dce, 0x0dde, 0x0de8, 0x0e15, 0x0e32, 0x0e47, 0x0e47, 0x0e5d, + // Entry C0 - FF + 0x0e67, 0x0e77, 0x0e81, 0x0e9a, 0x0eaa, 0x0eba, 0x0ec8, 0x0ed4, + 0x0ee0, 0x0f05, 0x0f22, 0x0f3d, 0x0f47, 0x0f51, 0x0f61, 0x0f7e, + 0x0f90, 0x0fb7, 0x0fc9, 0x0fe0, 0x0ff3, 0x1001, 0x100d, 0x101b, + 0x1032, 0x1057, 0x1067, 0x107c, 0x1088, 0x109a, 0x10b8, 0x10e3, + 0x10e9, 0x1119, 0x1121, 0x112f, 0x1143, 0x1151, 0x1166, 0x117e, + 0x1188, 0x1192, 0x11a0, 0x11c2, 0x11ce, 0x11da, 0x11ec, 0x11fa, + 0x1206, 0x1238, 0x1238, 0x126a, 0x1278, 0x128c, 0x129a, 0x12cd, + 0x12df, 0x1313, 0x1335, 0x1343, 0x1351, 0x136f, 0x1379, 0x1385, + // Entry 100 - 13F + 0x138f, 0x1399, 0x13b0, 0x13be, 0x13ce, 0x13e9, 0x13f3, 0x13ff, + 0x141a, 0x1435, 0x1445, 0x145c, 0x1479, 0x1490, 0x14a9, 0x14c4, + 0x14dd, 0x14eb, 0x1508, 0x1512, 0x1527, 0x153e, 0x155e, 0x1577, + 0x158f, 0x15a3, 0x15c8, 0x15dc, 0x15e6, 0x15ff, 0x1614, 0x1620, + 0x1637, 0x1650, 0x1667, 0x1684, + }, + }, + { // bas + "Àŋdɔ̂rÀdnà i Bilɔ̀ŋ bi ArābìàÀfgànìstâŋÀŋtigà ɓɔ BàrbudàÀŋgiyàÀlbanìàÀrm" + + "enìàÀŋgolàÀrgàŋtinàÒstrǐkÒstralìàÀrubàÀzɛ̀rbajàŋBòhnià ƐrzègòvinàBàr" + + "badòBàŋglàdɛ̂sBɛlgyùmBùrkìnà FasòBùlgarìàBàraìnBùrundìBènɛ̂ŋBɛ̀rmudà" + + "BruneiBòlivìàBràsîlBàhamàsBùtânBòdsùanàBèlarùsBèlîsKànadàKòŋgo ìkɛŋi" + + "Ŋ̀ɛm AfrīkàKòŋgoSùwîsMàŋ mi Njɔ̂kBìòn bi KookKìlîKàmɛ̀rûnKinàKɔ̀lɔm" + + "bìàKòstà RikàKubàKabwɛ᷆rKipròJamânJìbutìDànmârkDòmnîkDòmnikàÀlgerìàÈ" + + "kwàtorìàÈstonìàÈgîptòÈrìtrěàPànyaÈtìopìàFìnlândFijiBìòn bi FalklandM" + + "ìkrònesìàPùlàsi / Fɛ̀lɛ̀nsi /Gàbɔ̂ŋÀdnà i Lɔ̂ŋGrènadàGèɔrgìàGùyanà " + + "PùlàsiGanàGìlbràtârGrǐnlàndGàmbiàGìnêGwàdèlûpGìne ÈkwàtorìàGrǐkyàGwà" + + "tèmalàGùâmGìne BìsàôGùyanàƆ̀ŋduràsKròasìàÀitìƆ̀ŋgriìIndònèsiàÌrlândI" + + "sràɛ̂lIndìàBìtèk bi Ŋgisì i Tūyɛ ĪndìàÌrâkÌrâŋÌslandìàÌtalìàJàmàikàY" + + "ɔ̀rdaniàKenìàKìrgìzìstàŋKàmbodìàKìrìbatìKɔ̀mɔ̂rNûmpubi Kîts nì Nevì" + + "sKɔ̀re ì Ŋ̀ɔmbɔkKɔ̀re ì Ŋ̀wɛ̀lmbɔkKòwêtBìòn bi KaymànKàzàkstâŋLàôsLè" + + "banònNûmpubi LusìLigstɛntànSrìlaŋkàLìberìàLesòtòLìtùanìàLùgsàmbûrLàd" + + "viàLibìàMàrokòMònakòMoldavìàMàdàgàskârBìòn bi MarcàlMàsèdonìàMàliMyà" + + "nmârMòŋgolìàBìòn bi Marìanà ŋ̀ɔmbɔkMàrtìnîkMòrìtanìàMɔ̀ŋseràtMaltàMò" + + "rîsMàldîfMàlàwiMɛ̀gsîkMàlɛ̀sìàMòsàmbîkNàmibìàKàlèdonìà Yɔ̀ndɔNìjɛ̂rÒ" + + "n i Nɔrfɔ̂kNìgerìàNìkàragwàǸlɛndiNɔ̀rvegìàNèpâlNerùNìuɛ̀Sìlând Yɔ̀nd" + + "ɔÒmânPànàmaPèrûPòlìnesìà PùlàsiGìne ì PàpuFìlìpînPàkìstânPòlàndNûmp" + + "ubi Petrò nì MikèlônPìdkaìrnPɔ̀rtò RikòPàlɛ̀htinà Hyɔ̀ŋg nì GazàPɔ̀t" + + "ɔkìPàlaùPàràgwêKàtârRèunyɔ̂ŋRùmanìàRuslàndRùandàSàudi ÀrabìàBìòn bi" + + " SalōmòSèsɛ̂lSùdâŋSwedɛ̀nSìŋgàpûrNûmpubi ƐlēnàSlòvanìàSlòvakìàSièra " + + "Lèɔ̂nNûmpubi MāatìnSènègâlSòmalìàSùrinâmSào Tòme ɓɔ Prɛ̀ŋcipèSàlvàdɔ" + + "̂rSirìàSwàzìlândBìòn bi Tûrks nì KalkòsCâdTògoTaylàndTàjìkìstaŋTòkè" + + "laòTìmɔ̂r lìkòlTùrgmènìstânTùnisìàTɔŋgàTùrkâyTrìnidàd ɓɔ TòbagòTùvàl" + + "ùTàywânTànzàniàÙkrɛ̌nÙgandàÀdnà i Bilɔ̀ŋ bi AmerkàÙrùgwêyÙzbèkìstân" + + "VàtìkâŋNûmpubi Vɛ̂ŋsâŋ nì grènàdînVènèzùelàBìòn bi kɔnji bi ŊgisìBìò" + + "n bi kɔnji bi U.S.Vìɛ̀dnâmVànùatùWàlîs nì FùtunàSàmoàYèmɛ̂nMàyɔ̂tÀfr" + + "ǐkà Sɔ̀ZàmbiàZìmbàbwê", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x000a, 0x0029, 0x0038, 0x0050, 0x0059, 0x0063, + 0x006d, 0x0076, 0x0076, 0x0083, 0x0083, 0x008b, 0x0096, 0x009d, + 0x009d, 0x00ac, 0x00c3, 0x00cc, 0x00db, 0x00e4, 0x00f4, 0x00ff, + 0x0107, 0x0110, 0x011a, 0x011a, 0x0125, 0x012b, 0x0135, 0x0135, + 0x013d, 0x0146, 0x014d, 0x014d, 0x0158, 0x0161, 0x0168, 0x0170, + 0x0170, 0x0180, 0x0190, 0x0197, 0x019e, 0x01ae, 0x01bc, 0x01c2, + 0x01ce, 0x01d3, 0x01e1, 0x01e1, 0x01ee, 0x01f3, 0x01fd, 0x01fd, + 0x01fd, 0x0203, 0x0203, 0x0209, 0x0209, 0x0211, 0x021a, 0x0222, + // Entry 40 - 7F + 0x022b, 0x0235, 0x0235, 0x0242, 0x024c, 0x0255, 0x0255, 0x0260, + 0x0266, 0x0271, 0x0271, 0x0271, 0x027a, 0x027e, 0x0290, 0x029e, + 0x029e, 0x02b8, 0x02c2, 0x02d2, 0x02db, 0x02e6, 0x02f7, 0x02f7, + 0x02fc, 0x0308, 0x0312, 0x031a, 0x0320, 0x032b, 0x033e, 0x0346, + 0x0346, 0x0352, 0x0358, 0x0366, 0x036e, 0x036e, 0x036e, 0x037a, + 0x0384, 0x038a, 0x0395, 0x0395, 0x03a1, 0x03a9, 0x03b3, 0x03b3, + 0x03ba, 0x03de, 0x03e4, 0x03eb, 0x03f6, 0x03ff, 0x03ff, 0x0409, + 0x0415, 0x0415, 0x041c, 0x042c, 0x0437, 0x0442, 0x044d, 0x0466, + // Entry 80 - BF + 0x047c, 0x0496, 0x049d, 0x04ae, 0x04bb, 0x04c1, 0x04ca, 0x04d8, + 0x04e4, 0x04ef, 0x04f9, 0x0501, 0x050d, 0x0519, 0x0521, 0x0528, + 0x0530, 0x0538, 0x0542, 0x0542, 0x0542, 0x0550, 0x0561, 0x056e, + 0x0573, 0x057c, 0x0588, 0x0588, 0x05a7, 0x05b2, 0x05bf, 0x05cc, + 0x05d2, 0x05d9, 0x05e1, 0x05e9, 0x05f3, 0x0600, 0x060b, 0x0615, + 0x062c, 0x0635, 0x0645, 0x064f, 0x065b, 0x0663, 0x0670, 0x0677, + 0x067c, 0x0684, 0x0696, 0x069c, 0x06a4, 0x06aa, 0x06c0, 0x06ce, + 0x06d8, 0x06e3, 0x06eb, 0x0708, 0x0712, 0x0721, 0x0743, 0x074e, + // Entry C0 - FF + 0x0755, 0x075f, 0x0766, 0x0766, 0x0772, 0x077c, 0x077c, 0x0784, + 0x078c, 0x079c, 0x07ae, 0x07b7, 0x07bf, 0x07c8, 0x07d4, 0x07e5, + 0x07f0, 0x07f0, 0x07fb, 0x080a, 0x081b, 0x0825, 0x082f, 0x0838, + 0x0838, 0x0855, 0x0862, 0x0862, 0x0869, 0x0875, 0x0875, 0x0891, + 0x0895, 0x0895, 0x089a, 0x08a2, 0x08b0, 0x08ba, 0x08cb, 0x08db, + 0x08e5, 0x08ed, 0x08f5, 0x090d, 0x0916, 0x091e, 0x0929, 0x0932, + 0x093a, 0x093a, 0x093a, 0x0957, 0x0961, 0x096f, 0x097a, 0x099f, + 0x09ac, 0x09c7, 0x09df, 0x09eb, 0x09f5, 0x0a09, 0x0a10, 0x0a10, + // Entry 100 - 13F + 0x0a19, 0x0a22, 0x0a31, 0x0a39, 0x0a44, + }, + }, + { // be + "Востраў УзнясенняАндораАб’яднаныя Арабскія ЭміратыАфганістанАнтыгуа і Ба" + + "рбудаАнгільяАлбаніяАрменіяАнголаАнтарктыкаАргенцінаАмерыканскае Сам" + + "оаАўстрыяАўстраліяАрубаАландскія астравыАзербайджанБоснія і Герцага" + + "вінаБарбадасБангладэшБельгіяБуркіна-ФасоБалгарыяБахрэйнБурундзіБені" + + "нСен-БартэльміБермудскія астравыБрунейБалівіяКарыбскія НідэрландыБр" + + "азіліяБагамыБутанВостраў БувэБатсванаБеларусьБелізКанадаКакосавыя (" + + "Кілінг) астравыКонга (Кіншаса)Цэнтральнаафрыканская РэспублікаКонга" + + " - БразавільШвейцарыяКот-д’ІвуарАстравы КукаЧыліКамерунКітайКалумбія" + + "Востраў КліпертонКоста-РыкаКубаКаба-ВердэКюрасааВостраў КалядКіпрЧэ" + + "хіяГерманіяВостраў Дыега-ГарсіяДжыбуціДаніяДамінікаДамініканская Рэ" + + "спублікаАлжырСеўта і МелільяЭквадорЭстоніяЕгіпетЗаходняя СахараЭрыт" + + "рэяІспаніяЭфіопіяЕўрапейскі саюзФінляндыяФіджыФалклендскія астравыМ" + + "ікранезіяФарэрскія астравыФранцыяГабонВялікабрытаніяГрэнадаГрузіяФр" + + "анцузская ГвіянаГернсіГанаГібралтарГрэнландыяГамбіяГвінеяГвадэлупаЭ" + + "кватарыяльная ГвінеяГрэцыяПаўднёвая Джорджыя і Паўднёвыя Сандвічавы" + + " астравыГватэмалаГуамГвінея-БісауГаянаГанконг, САР (Кітай)Астравы Хе" + + "рд і МакдональдГандурасХарватыяГаіціВенгрыяКанарскія астравыІнданез" + + "іяІрландыяІзраільВостраў МэнІндыяБрытанская тэрыторыя ў Індыйскім а" + + "кіянеІракІранІсландыяІталіяДжэрсіЯмайкаІарданіяЯпоніяКеніяКыргызста" + + "нКамбоджаКірыбаціКаморскія АстравыСент-Кітс і НевісПаўночная КарэяП" + + "аўднёвая КарэяКувейтКайманавы астравыКазахстанЛаосЛіванСент-ЛюсіяЛі" + + "хтэнштэйнШры-ЛанкаЛіберыяЛесотаЛітваЛюксембургЛатвіяЛівіяМарокаМана" + + "каМалдоваЧарнагорыяСен-МартэнМадагаскарМаршалавы АстравыМакедоніяМа" + + "ліМ’янма (Бірма)МанголіяМакаа, САР (Кітай)Паўночныя Марыянскія астр" + + "авыМарцінікаМаўрытаніяМантсератМальтаМаўрыкійМальдывыМалавіМексікаМ" + + "алайзіяМазамбікНамібіяНовая КаледоніяНігерВостраў НорфалкНігерыяНік" + + "арагуаНідэрландыНарвегіяНепалНауруНіуэНовая ЗеландыяАманПанамаПеруФ" + + "ранцузская ПалінезіяПапуа-Новая ГвінеяФіліпіныПакістанПольшчаСен-П’" + + "ер і МікелонАстравы ПіткэрнПуэрта-РыкаПалесцінскія ТэрыторыіПартуга" + + "ліяПалауПарагвайКатарЗнешняя АкіяніяРэюньёнРумыніяСербіяРасіяРуанда" + + "Саудаўская АравіяСаламонавы АстравыСейшэльскія АстравыСуданШвецыяСі" + + "нгапурВостраў Святой АленыСлавеніяШпіцберген і Ян-МаенСлавакіяСьера" + + "-ЛеонэСан-МарынаСенегалСамаліСурынамПаўднёвы СуданСан-Тамэ і Прынсіп" + + "іСальвадорСінт-МартэнСірыяСвазілендТрыстан-да-КуньяЦёркс і КайкасЧа" + + "дФранцузскія Паўднёвыя тэрыторыіТогаТайландТаджыкістанТакелауТымор-" + + "ЛешціТуркменістанТунісТонгаТурцыяТрынідад і ТабагаТувалуТайваньТанз" + + "аніяУкраінаУгандаМалыя Аддаленыя астравы ЗШАЗлучаныя Штаты АмерыкіУ" + + "ругвайУзбекістанВатыканСент-Вінсент і ГрэнадзіныВенесуэлаБрытанскія" + + " Віргінскія астравыАмерыканскія Віргінскія астравыВ’етнамВануатуУолі" + + "с і ФутунаСамоаКосаваЕменМаётаПаўднёваафрыканская РэспублікаЗамбіяЗ" + + "імбабвэНевядомы рэгіёнСветАфрыкаПаўночная АмерыкаПаўднёвая АмерыкаА" + + "кіяніяЗаходняя АфрыкаЦэнтральная АмерыкаУсходняя АфрыкаПаўночная Аф" + + "рыкаЦэнтральная АфрыкаПаўднёвая АфрыкаПаўночная і Паўднёвая Амерыкі" + + "Паўночнаамерыканскі рэгіёнКарыбскія астравыУсходняя АзіяПаўднёвая А" + + "зіяПаўднёва-Усходняя АзіяПаўднёвая ЕўропаАўстралазіяМеланезіяМікран" + + "езійскі рэгіёнПалінезіяАзіяЦэнтральная АзіяЗаходняя АзіяЕўропаУсход" + + "няя ЕўропаПаўночная ЕўропаЗаходняя ЕўропаЛацінская Амерыка", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0021, 0x002d, 0x0062, 0x0076, 0x0096, 0x00a4, 0x00b2, + 0x00c0, 0x00cc, 0x00e0, 0x00f2, 0x0115, 0x0123, 0x0135, 0x013f, + 0x0160, 0x0176, 0x019c, 0x01ac, 0x01be, 0x01cc, 0x01e3, 0x01f3, + 0x0201, 0x0211, 0x021b, 0x0234, 0x0257, 0x0263, 0x0271, 0x0298, + 0x02a8, 0x02b4, 0x02be, 0x02d5, 0x02e5, 0x02f5, 0x02ff, 0x030b, + 0x033b, 0x0356, 0x0395, 0x03b4, 0x03c6, 0x03dc, 0x03f3, 0x03fb, + 0x0409, 0x0413, 0x0423, 0x0444, 0x0457, 0x045f, 0x0472, 0x0480, + 0x0499, 0x04a1, 0x04ab, 0x04bb, 0x04e1, 0x04ef, 0x04f9, 0x0509, + // Entry 40 - 7F + 0x0538, 0x0542, 0x055e, 0x056c, 0x057a, 0x0586, 0x05a3, 0x05b1, + 0x05bf, 0x05cd, 0x05ea, 0x05ea, 0x05fc, 0x0606, 0x062d, 0x0641, + 0x0662, 0x0670, 0x067a, 0x0696, 0x06a4, 0x06b0, 0x06d3, 0x06df, + 0x06e7, 0x06f9, 0x070d, 0x0719, 0x0725, 0x0737, 0x0760, 0x076c, + 0x07c9, 0x07db, 0x07e3, 0x07fa, 0x0804, 0x0827, 0x0856, 0x0866, + 0x0876, 0x0880, 0x088e, 0x08af, 0x08c1, 0x08d1, 0x08df, 0x08f4, + 0x08fe, 0x0948, 0x0950, 0x0958, 0x0968, 0x0974, 0x0980, 0x098c, + 0x099c, 0x09a8, 0x09b2, 0x09c6, 0x09d6, 0x09e6, 0x0a07, 0x0a26, + // Entry 80 - BF + 0x0a43, 0x0a60, 0x0a6c, 0x0a8d, 0x0a9f, 0x0aa7, 0x0ab1, 0x0ac4, + 0x0ada, 0x0aeb, 0x0af9, 0x0b05, 0x0b0f, 0x0b23, 0x0b2f, 0x0b39, + 0x0b45, 0x0b51, 0x0b5f, 0x0b73, 0x0b86, 0x0b9a, 0x0bbb, 0x0bcd, + 0x0bd5, 0x0bef, 0x0bff, 0x0c1e, 0x0c54, 0x0c66, 0x0c7a, 0x0c8c, + 0x0c98, 0x0ca8, 0x0cb8, 0x0cc4, 0x0cd2, 0x0ce2, 0x0cf2, 0x0d00, + 0x0d1d, 0x0d27, 0x0d44, 0x0d52, 0x0d64, 0x0d78, 0x0d88, 0x0d92, + 0x0d9c, 0x0da4, 0x0dbf, 0x0dc7, 0x0dd3, 0x0ddb, 0x0e04, 0x0e26, + 0x0e36, 0x0e46, 0x0e54, 0x0e76, 0x0e93, 0x0ea8, 0x0ed3, 0x0ee7, + // Entry C0 - FF + 0x0ef1, 0x0f01, 0x0f0b, 0x0f28, 0x0f36, 0x0f44, 0x0f50, 0x0f5a, + 0x0f66, 0x0f87, 0x0faa, 0x0fcf, 0x0fd9, 0x0fe5, 0x0ff5, 0x101b, + 0x102b, 0x1050, 0x1060, 0x1075, 0x1088, 0x1096, 0x10a2, 0x10b0, + 0x10cb, 0x10ee, 0x1100, 0x1115, 0x111f, 0x1131, 0x114f, 0x1169, + 0x116f, 0x11ab, 0x11b3, 0x11c1, 0x11d7, 0x11e5, 0x11fa, 0x1212, + 0x121c, 0x1226, 0x1232, 0x1252, 0x125e, 0x126c, 0x127c, 0x128a, + 0x1296, 0x12c9, 0x12c9, 0x12f3, 0x1301, 0x1315, 0x1323, 0x1352, + 0x1364, 0x139c, 0x13d8, 0x13e7, 0x13f5, 0x140f, 0x1419, 0x1425, + // Entry 100 - 13F + 0x142d, 0x1437, 0x1472, 0x147e, 0x148e, 0x14ab, 0x14b3, 0x14bf, + 0x14e0, 0x1501, 0x150f, 0x152c, 0x1551, 0x156e, 0x158d, 0x15b0, + 0x15cf, 0x1606, 0x1639, 0x165a, 0x1673, 0x168e, 0x16b8, 0x16d7, + 0x16ed, 0x16ff, 0x1726, 0x1738, 0x1740, 0x175f, 0x1778, 0x1784, + 0x17a1, 0x17c0, 0x17dd, 0x17fe, + }, + }, + { // bem + "Zambia", + []uint16{ // 260 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry C0 - FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 100 - 13F + 0x0000, 0x0000, 0x0000, 0x0006, + }, + }, + { // bez + "HuandolaHufalme dza HihalabuHuafuganistaniHuantigua na HubarubudaHuangui" + + "laHualbaniaHuameniaHuangolaHuajendinaHusamoa ya HumalekaniHuastliaHu" + + "austlaliaHualubaHuazabajaniHubosinia na HuhezegovinaHubabadosiHubang" + + "aladeshiHuubelgijiHubukinafasoHubulgariaHubahaleniHuburundiHubeniniH" + + "ubelmudaHubruneiHuboliviaHublaziliHubahamaHubutaniHubotiswanaHubelal" + + "usiHubelizeHukanadaIjamhuri ya Hidemokrasi ya HukongoIjamhuri ya Afr" + + "ika ya PagatiHukongoHuuswisiHukodivaaIfisima fya KookHuchileHukameru" + + "niHuchinaHukolombiaHukostarikaHukubaHukepuvedeHukuprosiIjamhuri ya C" + + "hekiHuujerumaniHujibutiHudenmakiHudominikaIjamhuri ya HudominikaHual" + + "jeliaHuekwadoHuestoniaHumisriHueritreaHuhispaniaHuuhabeshiHuufiniHuf" + + "ijiIfisima fya FalklandHumikronesiaHuufaransaHugaboniHuuingerezaHugr" + + "enadaHujojiaHugwiyana ya HuufaransaHughanaHujiblaltaHujinlandiHugamb" + + "iaHujineHugwadelupeHuginekwetaHuugilikiHugwatemalaHugwamHuginebisauH" + + "uguyanaHuhondulasiHukorasiaHuhaitiHuhungaliaHuindonesiaHuayalandiHui" + + "slaheliHuindiaUlubali lwa Hubahari ya Hindi lwa HuingerezaHuilakiHuu" + + "ajemiHuaislandiHuitaliaHujamaikaHuyolodaniHujapaniHukenyaHukiligizis" + + "taniHukambodiaHukilibatiHukomoroHusantakitzi na HunevisHukolea Kaska" + + "ziniHukolea KusiniHukuwaitiIfisima fya KaymanHukazakistaniHulaosiHul" + + "ebanoniHusantalusiaHulishenteniHusirilankaHulibeliaHulesotoHulitwani" + + "aHulasembagiHulativiaHulibiyaHumolokoHumonakoHumoldovaHubukiniIfisim" + + "a fya MarshalHumasedoniaHumaliHumyamaHumongoliaIfisima fya Mariana f" + + "ya HukaskaziniHumartinikiHumolitaniaHumontserratiHumaltaHumolisiHumo" + + "divuHumalawiHumeksikoHumalesiaHumusumbijiHunamibiaHunyukaledoniaHuni" + + "jeliIhisima sha NorfokHunijeliaHunikaragwaHuuholanziHunolweHunepaliH" + + "unauruHuniueHunyuzilandiHuomaniHupanamaHupeluHupolinesia ya Huufaran" + + "saHupapuaHufilipinoHupakistaniHupolandiHusantapieri na HumikeloniHup" + + "itkainiHupwetorikoUlubali lwa Magharibi nu Gaza wa HupalestinaHuulen" + + "oHupalauHupalagwaiHukataliHuliyunioniHulomaniaHuulusiHulwandaHusaudi" + + "Ifisima fya SolomonHushelisheliHusudaniHuuswidiHusingapooHusantahele" + + "naHusloveniaHuslovakiaHusiela LioniHusamalinoHusenegaliHusomaliaHusu" + + "rinamuHusaotome na HuprinsipeHuelsavadoHusiliaHuuswaziIfisima fya Tu" + + "rki na KaikoHuchadiHutogoHutailandiHutajikistaniHutokelauHutimori ya" + + " MasharikiHuuturukimenistaniHutunisiaHutongaHuuturukiHutrinad na Hut" + + "obagoHutuvaluHutaiwaniHutanzaniaHuukrainiHuugandaHumalekaniHuulugwai" + + "HuuzibekistaniHuvatikaniHusantavisenti na HugrenadiniHuvenezuelaIfis" + + "ima fya Virgin fya HuingerezaIfisima fya Virgin fya HumelekaniHuviet" + + "inamuHuvanuatuHuwalis na HufutunaHusamoaHuyemeniHumayotteHuafrika iy" + + "a HukusiniHuzambiaHuzimbabwe", + []uint16{ // 261 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x0020, 0x0035, 0x004a, 0x0054, 0x005e, - 0x0068, 0x0071, 0x0071, 0x007f, 0x0090, 0x009c, 0x00af, 0x00b6, - 0x00b6, 0x00c5, 0x00e5, 0x00ee, 0x00ff, 0x010a, 0x0118, 0x0123, - 0x012a, 0x0133, 0x013f, 0x013f, 0x0149, 0x0153, 0x015b, 0x015b, - 0x0167, 0x0170, 0x0177, 0x0177, 0x0186, 0x0190, 0x019c, 0x01a3, - 0x01a3, 0x01cb, 0x01e8, 0x01ef, 0x01f9, 0x0205, 0x0217, 0x021d, - 0x0228, 0x022f, 0x0239, 0x0239, 0x024a, 0x0251, 0x026c, 0x026c, - 0x026c, 0x0276, 0x0289, 0x0291, 0x0291, 0x029b, 0x02a4, 0x02ae, + 0x0000, 0x0000, 0x0008, 0x001c, 0x002a, 0x0041, 0x004a, 0x0053, + 0x005b, 0x0063, 0x0063, 0x006d, 0x0082, 0x008a, 0x0095, 0x009c, + 0x009c, 0x00a7, 0x00c0, 0x00ca, 0x00d8, 0x00e2, 0x00ee, 0x00f8, + 0x0102, 0x010b, 0x0113, 0x0113, 0x011c, 0x0124, 0x012d, 0x012d, + 0x0136, 0x013e, 0x0146, 0x0146, 0x0151, 0x015b, 0x0163, 0x016b, + 0x016b, 0x018d, 0x01a9, 0x01b0, 0x01b8, 0x01c1, 0x01d1, 0x01d8, + 0x01e2, 0x01e9, 0x01f3, 0x01f3, 0x01fe, 0x0204, 0x020e, 0x020e, + 0x020e, 0x0217, 0x0228, 0x0233, 0x0233, 0x023b, 0x0244, 0x024e, // Entry 40 - 7F - 0x02c5, 0x02d0, 0x02d0, 0x02d7, 0x02e5, 0x02ea, 0x02ea, 0x02f6, - 0x0302, 0x030c, 0x030c, 0x0314, 0x0319, 0x032f, 0x033f, 0x033f, - 0x034b, 0x0352, 0x0366, 0x0373, 0x037e, 0x0396, 0x0396, 0x039c, - 0x03a9, 0x03b5, 0x03bc, 0x03c1, 0x03ce, 0x03e1, 0x03ea, 0x03ea, - 0x03f8, 0x03fc, 0x040a, 0x0412, 0x0412, 0x0412, 0x041c, 0x0427, - 0x042e, 0x0439, 0x0439, 0x0446, 0x0451, 0x045c, 0x045c, 0x0462, - 0x049a, 0x04a4, 0x04aa, 0x04b5, 0x04bb, 0x04bb, 0x04c5, 0x04cc, - 0x04d5, 0x04dc, 0x04eb, 0x04f5, 0x04ff, 0x0507, 0x051a, 0x0529, - // Entry 80 - BF - 0x0538, 0x0540, 0x0555, 0x0563, 0x0569, 0x0571, 0x057f, 0x058c, - 0x059b, 0x05a6, 0x05b0, 0x05bc, 0x05c7, 0x05cf, 0x05d5, 0x05dd, - 0x05e4, 0x05ed, 0x05ed, 0x05ed, 0x05fb, 0x060e, 0x061f, 0x0624, - 0x062c, 0x0637, 0x0637, 0x065e, 0x0669, 0x0676, 0x0681, 0x0687, - 0x0694, 0x069c, 0x06a4, 0x06af, 0x06ba, 0x06c4, 0x06cd, 0x06e5, - 0x06ec, 0x0700, 0x070a, 0x0715, 0x071e, 0x0728, 0x0730, 0x0738, - 0x073c, 0x074e, 0x0753, 0x075b, 0x0762, 0x077e, 0x0796, 0x079f, - 0x07ae, 0x07b5, 0x07d1, 0x07de, 0x07e9, 0x0822, 0x082b, 0x0834, - // Entry C0 - FF - 0x0840, 0x0845, 0x0845, 0x0852, 0x085c, 0x085c, 0x0863, 0x086c, - 0x0878, 0x0890, 0x089f, 0x08a6, 0x08af, 0x08bb, 0x08c9, 0x08d9, - 0x08d9, 0x08ea, 0x08f6, 0x0903, 0x0911, 0x091a, 0x0924, 0x0924, - 0x0944, 0x094d, 0x094d, 0x0953, 0x095f, 0x095f, 0x097a, 0x097e, - 0x097e, 0x0983, 0x098a, 0x099c, 0x09a6, 0x09b0, 0x09c4, 0x09ce, - 0x09d5, 0x09db, 0x09f1, 0x09fa, 0x0a01, 0x0a0d, 0x0a1a, 0x0a23, - 0x0a23, 0x0a26, 0x0a31, 0x0a48, 0x0a5b, 0x0a7f, 0x0a93, 0x0abd, - 0x0ad8, 0x0ae2, 0x0aed, 0x0b00, 0x0b08, 0x0b08, 0x0b11, 0x0b19, - // Entry 100 - 13F - 0x0b32, 0x0b39, 0x0b45, + 0x0264, 0x026d, 0x026d, 0x0275, 0x027e, 0x0285, 0x0285, 0x028e, + 0x0298, 0x02a2, 0x02a2, 0x02a2, 0x02a9, 0x02af, 0x02c3, 0x02cf, + 0x02cf, 0x02d9, 0x02e1, 0x02ec, 0x02f5, 0x02fc, 0x0313, 0x0313, + 0x031a, 0x0324, 0x032e, 0x0336, 0x033c, 0x0347, 0x0352, 0x035b, + 0x035b, 0x0366, 0x036c, 0x0377, 0x037f, 0x037f, 0x037f, 0x038a, + 0x0393, 0x039a, 0x03a4, 0x03a4, 0x03af, 0x03b9, 0x03c3, 0x03c3, + 0x03ca, 0x03f6, 0x03fd, 0x0405, 0x040f, 0x0417, 0x0417, 0x0420, + 0x042a, 0x0432, 0x0439, 0x0448, 0x0452, 0x045c, 0x0464, 0x047b, + // Entry 80 - BF + 0x048c, 0x049a, 0x04a3, 0x04b5, 0x04c2, 0x04c9, 0x04d3, 0x04df, + 0x04eb, 0x04f6, 0x04ff, 0x0507, 0x0511, 0x051c, 0x0525, 0x052d, + 0x0535, 0x053d, 0x0546, 0x0546, 0x0546, 0x054e, 0x0561, 0x056c, + 0x0572, 0x0579, 0x0583, 0x0583, 0x05a6, 0x05b1, 0x05bc, 0x05c9, + 0x05d0, 0x05d8, 0x05e0, 0x05e8, 0x05f1, 0x05fa, 0x0605, 0x060e, + 0x061c, 0x0624, 0x0636, 0x063f, 0x064a, 0x0654, 0x065b, 0x0663, + 0x066a, 0x0670, 0x067c, 0x0683, 0x068b, 0x0691, 0x06aa, 0x06b1, + 0x06bb, 0x06c6, 0x06cf, 0x06e9, 0x06f3, 0x06fe, 0x072a, 0x0731, + // Entry C0 - FF + 0x0738, 0x0742, 0x074a, 0x074a, 0x0755, 0x075e, 0x075e, 0x0765, + 0x076d, 0x0774, 0x0787, 0x0793, 0x079b, 0x07a3, 0x07ad, 0x07ba, + 0x07c4, 0x07c4, 0x07ce, 0x07db, 0x07e5, 0x07ef, 0x07f8, 0x0802, + 0x0802, 0x0819, 0x0823, 0x0823, 0x082a, 0x0832, 0x0832, 0x084c, + 0x0853, 0x0853, 0x0859, 0x0863, 0x0870, 0x0879, 0x088e, 0x08a0, + 0x08a9, 0x08b0, 0x08b9, 0x08cd, 0x08d5, 0x08de, 0x08e8, 0x08f1, + 0x08f9, 0x08f9, 0x08f9, 0x0903, 0x090c, 0x091a, 0x0924, 0x0941, + 0x094c, 0x096d, 0x098e, 0x0999, 0x09a2, 0x09b5, 0x09bc, 0x09bc, + // Entry 100 - 13F + 0x09c4, 0x09cd, 0x09e2, 0x09ea, 0x09f4, }, }, - { // ak - "AndoraUnited Arab EmiratesAfganistanAntigua ne BaabudaAnguilaAlbeniaAame" + - "niaAngolaAgyɛntinaAmɛrika SamoaƆstriaƆstreliaArubaAzebaegyanBosnia n" + - "e HɛzegovinaBaabadosBangladɛhyeBɛlgyiumBɔkina FasoBɔlgeriaBarenBurun" + - "diBɛninBɛmudaBrunaeBoliviaBrazilBahamaButanBɔtswanaBɛlarusBelizKanad" + - "aKongo (Zair)Afrika Finimfin ManKongoSwetzalandLa Côte d’IvoireKook " + - "NsupɔwKyiliKamɛrunKyaenaKolombiaKɔsta RikaKubaKepvɛdfo IslandsSaeprɔ" + - "sKyɛk KurokɛseGyaamanGyibutiDɛnmakDɔmenekaDɔmeneka KurokɛseƆlgyeriaI" + - "kuwadɔƐstoniaNisrimƐritreaSpainIthiopiaFinlandFigyiFɔlkman AelandMae" + - "kronehyiaFrɛnkyemanGabɔnAhendiman NkabomGrenadaGyɔgyeaFrɛnkye Gayana" + - "GaanaGyebraltaGreenmanGambiaGiniGuwadelupGini IkuwetaGreekmanGuwatem" + - "alaGuamGini BisawGayanaHɔndurasKrowehyiaHeitiHangariIndɔnehyiaAerela" + - "ndIsraelIndiaBritenfo Hɔn Man Wɔ India Po No MuIrakIranAeslandItaliG" + - "yamekaGyɔdanGyapanKɛnyaKɛɛgestanKambodiaKiribatiKɔmɔrɔsSaint Kitts n" + - "e NɛvesEtifi KoriaAnaafo KoriaKuweteKemanfo IslandsKazakstanLaosLɛba" + - "nɔnSaint LuciaLektenstaenSri LankaLaeberiaLɛsutuLituweniaLaksembɛgLa" + - "tviaLibyaMorokoMɔnakoMɔldovaMadagaskaMarshall IslandsMasedoniaMaliMi" + - "yanmaMɔngoliaNorthern Mariana IslandsMatinikMɔreteniaMantseratMɔltaM" + - "ɔrehyeɔsMaldivesMalawiMɛksikoMalehyiaMozambikNamibiaKaledonia Fofor" + - "oNigyɛNɔfolk AelandNaegyeriaNekaraguwaNɛdɛlandNɔɔweNɛpɔlNaworuNiyuZi" + - "land FoforoOmanPanamaPeruFrɛnkye PɔlenehyiaPapua Guinea FoforoPhilip" + - "pinesPakistanPolandSaint Pierre ne MiquelonPitcairnPuɛto RikoPalesta" + - "en West Bank ne GazaPɔtugalPalauParaguayKataReyuniɔnRomeniaRɔhyeaRwa" + - "ndaSaudi ArabiaSolomon IslandsSeyhyɛlSudanSwedenSingapɔSaint HelenaS" + - "loviniaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé " + - "and PríncipeƐl SalvadɔSiriaSwazilandTurks ne Caicos IslandsKyadTogoT" + - "aelandTajikistanTokelauTimɔ BokaTɛkmɛnistanTunihyiaTongaTɛɛkiTrinida" + - "d ne TobagoTuvaluTaiwanTanzaniaUkrenUgandaAmɛrikaYurugwaeUzbɛkistanV" + - "atican ManSaint Vincent ne GrenadinesVenezuelaBritainfo Virgin Islan" + - "dsAmɛrika Virgin IslandsViɛtnamVanuatuWallis ne FutunaSamoaYɛmenMayɔ" + - "teAfrika AnaafoZambiaZembabwe", - []uint16{ // 259 elements + { // bg + bgRegionStr, + bgRegionIdx, + }, + { // bm + "AndɔrArabu mara kafoliAfiganistaŋAntiga-ni-BarbudaAngiyaAlibaniArimeniAn" + + "golaArizantinSamowa amerikaniOtirisiOsitiraliArubaAzɛrbayjaŋBozni-Ɛr" + + "izigoviniBarbadiBɛngiladɛsiBɛlizikiBurukina FasoBuligariBareyiniBuru" + + "ndiBenɛnBermudiBurinɛyiBoliviBereziliBahamasiButaŋBɔtisiwanaBelarusi" + + "BeliziKanadaKongo ka republiki demɔkratikiSantarafirikiKongoSuwisiKo" + + "diwariKuki GunSiliKameruniSiniwajamanaKolombiKɔsitarikaKubaCapivɛrdi" + + "CipriCeki republikiAlimaɲiJibutiDanemarkiDɔminikiDɔmimiki republikiA" + + "lizeriEkwatɔrEsetoniEziputiEritereEsipaɲiEtiopiFinilandiFijiMaluwini" + + " GunMikironesiFaransiGabɔŋAngilɛtɛriGranadiZeyɔrziFaransi ka gwiyani" + + "GanaZibralitariGɔrɔhenelandiGanbiGineGwadelupGine ekwatɔriGɛrɛsiGwat" + + "emalaGwamGine BisawoGwiyanaHɔndirasiKroasiAyitiHɔngriƐndoneziIriland" + + "iIsirayeliƐndujamanaAngilɛ ka ɛndu dugukoloIrakiIraŋIsilandiItaliZam" + + "ayikiZɔrdaniZapɔnKeniyaKirigizisitaŋKambojiKiribatiKomɔriKristɔfo-Se" + + "nu-ni-ƝevɛsKɛɲɛka KoreWorodugu KoreKowɛtiBama GunKazakistaŋLayosiLib" + + "aŋLusi-SenuLisɛnsitayiniSirilankaLiberiyaLesotoLituyaniLikisanburuLe" + + "toniLibiMarɔkuMonakoMolidaviMadagasikariMarisali GunMacedɔniMaliMyan" + + "imariMoŋoliKɛɲɛka Mariyani GunMaritinikiMɔritaniMoŋseraMaltiMorisiMa" + + "ldiviMalawiMeksikiMalɛziMozanbikiNamibiKaledoni KouraNizɛriNɔrofolik" + + "i GunNizeriyaNikaragwaPeyibaNɔriwɛziNepaliNawuruNyuweZelandi KouraOm" + + "aŋPanamaPeruFaransi ka polineziPapuwasi-Gine-KouraFilipiniPakisitaŋP" + + "oloɲiPiyɛri-Senu-ni-MikelɔŋPitikariniPɔrotorikoPalesitiniPɔritigaliP" + + "alawuParaguwayiKatariReyuɲɔŋRumaniIrisiRuwandaArabiya SawudiyaSalomo" + + " GunSesɛliSudaŋSuwɛdiSɛngapuriƐlɛni SenuSloveniSlowakiSiyera LewɔniM" + + "arini-SenuSenegaliSomaliSurinamiSawo Tome-ni-PrinicipeSalivadɔrSiriS" + + "wazilandiTuriki Gun ni KayikiCadiTogoTayilandiTajikisitaniTokeloKɔrɔ" + + "n TimɔrTurikimenisitaniTuniziTongaTurikiTrinite-ni-TobagoTuvaluTayiw" + + "aniTanzaniUkɛrɛniUgandaAmerikiUrugwayiUzebekisitaniVatikaŋVinisɛn-Se" + + "nu-ni-GrenadiniVenezuwelaAngilɛ ka Sungurunnin GunAmeriki ka Sunguru" + + "nnin GunWiyɛtinamuVanuwatuWalisi-ni-FutunaSamowaYemɛniMayotiWorodugu" + + " AfrikiZanbiZimbabuwe", + []uint16{ // 261 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x001a, 0x0024, 0x0036, 0x003d, 0x0044, - 0x004b, 0x0051, 0x0051, 0x005b, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0088, 0x009d, 0x00a5, 0x00b1, 0x00ba, 0x00c6, 0x00cf, - 0x00d4, 0x00db, 0x00e1, 0x00e1, 0x00e8, 0x00ee, 0x00f5, 0x00f5, - 0x00fb, 0x0101, 0x0106, 0x0106, 0x010f, 0x0117, 0x011c, 0x0122, - 0x0122, 0x012e, 0x0141, 0x0146, 0x0150, 0x0163, 0x016f, 0x0174, - 0x017c, 0x0182, 0x018a, 0x018a, 0x0195, 0x0199, 0x01aa, 0x01aa, - 0x01aa, 0x01b2, 0x01c1, 0x01c8, 0x01c8, 0x01cf, 0x01d6, 0x01df, + 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0034, 0x003a, 0x0041, + 0x0048, 0x004e, 0x004e, 0x0057, 0x0067, 0x006e, 0x0077, 0x007c, + 0x007c, 0x0088, 0x009a, 0x00a1, 0x00ae, 0x00b7, 0x00c4, 0x00cc, + 0x00d4, 0x00db, 0x00e1, 0x00e1, 0x00e8, 0x00f1, 0x00f7, 0x00f7, + 0x00ff, 0x0107, 0x010d, 0x010d, 0x0118, 0x0120, 0x0126, 0x012c, + 0x012c, 0x014b, 0x0158, 0x015d, 0x0163, 0x016b, 0x0173, 0x0177, + 0x017f, 0x018b, 0x0192, 0x0192, 0x019d, 0x01a1, 0x01ab, 0x01ab, + 0x01ab, 0x01b0, 0x01be, 0x01c6, 0x01c6, 0x01cc, 0x01d5, 0x01de, // Entry 40 - 7F - 0x01f2, 0x01fb, 0x01fb, 0x0203, 0x020b, 0x0211, 0x0211, 0x0219, - 0x021e, 0x0226, 0x0226, 0x022d, 0x0232, 0x0241, 0x024d, 0x024d, - 0x0258, 0x025e, 0x026e, 0x0275, 0x027d, 0x028c, 0x028c, 0x0291, - 0x029a, 0x02a2, 0x02a8, 0x02ac, 0x02b5, 0x02c1, 0x02c9, 0x02c9, - 0x02d3, 0x02d7, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02f0, 0x02f9, - 0x02fe, 0x0305, 0x0305, 0x0310, 0x0318, 0x031e, 0x031e, 0x0323, - 0x0347, 0x034b, 0x034f, 0x0356, 0x035b, 0x035b, 0x0362, 0x0369, - 0x036f, 0x0375, 0x0380, 0x0388, 0x0390, 0x039a, 0x03af, 0x03ba, - // Entry 80 - BF - 0x03c6, 0x03cc, 0x03db, 0x03e4, 0x03e8, 0x03f1, 0x03fc, 0x0407, - 0x0410, 0x0418, 0x041f, 0x0428, 0x0432, 0x0438, 0x043d, 0x0443, - 0x044a, 0x0452, 0x0452, 0x0452, 0x045b, 0x046b, 0x0474, 0x0478, - 0x047f, 0x0488, 0x0488, 0x04a0, 0x04a7, 0x04b1, 0x04ba, 0x04c0, - 0x04cb, 0x04d3, 0x04d9, 0x04e1, 0x04e9, 0x04f1, 0x04f8, 0x0508, - 0x050e, 0x051c, 0x0525, 0x052f, 0x0539, 0x0540, 0x0547, 0x054d, - 0x0551, 0x055e, 0x0562, 0x0568, 0x056c, 0x0580, 0x0593, 0x059e, - 0x05a6, 0x05ac, 0x05c4, 0x05cc, 0x05d7, 0x05f2, 0x05fa, 0x05ff, - // Entry C0 - FF - 0x0607, 0x060b, 0x060b, 0x0614, 0x061b, 0x061b, 0x0622, 0x0628, - 0x0634, 0x0643, 0x064b, 0x0650, 0x0656, 0x065e, 0x066a, 0x0672, - 0x0672, 0x067a, 0x0686, 0x0690, 0x0697, 0x069e, 0x06a6, 0x06a6, - 0x06be, 0x06ca, 0x06ca, 0x06cf, 0x06d8, 0x06d8, 0x06ef, 0x06f3, - 0x06f3, 0x06f7, 0x06fe, 0x0708, 0x070f, 0x0719, 0x0726, 0x072e, - 0x0733, 0x073a, 0x074c, 0x0752, 0x0758, 0x0760, 0x0765, 0x076b, - 0x076b, 0x0773, 0x077b, 0x0786, 0x0791, 0x07ac, 0x07b5, 0x07cd, - 0x07e4, 0x07ec, 0x07f3, 0x0803, 0x0808, 0x0808, 0x080e, 0x0815, - // Entry 100 - 13F - 0x0822, 0x0828, 0x0830, + 0x01f1, 0x01f8, 0x01f8, 0x0200, 0x0207, 0x020e, 0x020e, 0x0215, + 0x021d, 0x0223, 0x0223, 0x0223, 0x022c, 0x0230, 0x023c, 0x0246, + 0x0246, 0x024d, 0x0254, 0x0260, 0x0267, 0x026f, 0x0281, 0x0281, + 0x0285, 0x0290, 0x029f, 0x02a4, 0x02a8, 0x02b0, 0x02be, 0x02c6, + 0x02c6, 0x02cf, 0x02d3, 0x02de, 0x02e5, 0x02e5, 0x02e5, 0x02ef, + 0x02f5, 0x02fa, 0x0301, 0x0301, 0x030a, 0x0312, 0x031b, 0x031b, + 0x0326, 0x033f, 0x0344, 0x0349, 0x0351, 0x0356, 0x0356, 0x035e, + 0x0366, 0x036c, 0x0372, 0x0380, 0x0387, 0x038f, 0x0396, 0x03af, + // Entry 80 - BF + 0x03bd, 0x03ca, 0x03d1, 0x03d9, 0x03e4, 0x03ea, 0x03f0, 0x03f9, + 0x0407, 0x0410, 0x0418, 0x041e, 0x0426, 0x0431, 0x0437, 0x043b, + 0x0442, 0x0448, 0x0450, 0x0450, 0x0450, 0x045c, 0x0468, 0x0471, + 0x0475, 0x047e, 0x0485, 0x0485, 0x049b, 0x04a5, 0x04ae, 0x04b6, + 0x04bb, 0x04c1, 0x04c8, 0x04ce, 0x04d5, 0x04dc, 0x04e5, 0x04eb, + 0x04f9, 0x0500, 0x050f, 0x0517, 0x0520, 0x0526, 0x0530, 0x0536, + 0x053c, 0x0541, 0x054e, 0x0553, 0x0559, 0x055d, 0x0570, 0x0583, + 0x058b, 0x0595, 0x059c, 0x05b5, 0x05bf, 0x05ca, 0x05d4, 0x05df, + // Entry C0 - FF + 0x05e5, 0x05ef, 0x05f5, 0x05f5, 0x05ff, 0x0605, 0x0605, 0x060a, + 0x0611, 0x0621, 0x062b, 0x0632, 0x0638, 0x063f, 0x0649, 0x0655, + 0x065c, 0x065c, 0x0663, 0x0671, 0x067c, 0x0684, 0x068a, 0x0692, + 0x0692, 0x06a8, 0x06b2, 0x06b2, 0x06b6, 0x06c0, 0x06c0, 0x06d4, + 0x06d8, 0x06d8, 0x06dc, 0x06e5, 0x06f1, 0x06f7, 0x0705, 0x0715, + 0x071b, 0x0720, 0x0726, 0x0737, 0x073d, 0x0745, 0x074c, 0x0755, + 0x075b, 0x075b, 0x075b, 0x0762, 0x076a, 0x0777, 0x077f, 0x0799, + 0x07a3, 0x07bd, 0x07d7, 0x07e2, 0x07ea, 0x07fa, 0x0800, 0x0800, + // Entry 100 - 13F + 0x0807, 0x080d, 0x081c, 0x0821, 0x082a, + }, + }, + { // bn + bnRegionStr, + bnRegionIdx, + }, + { // bn-IN + "হন্ডুরাসমলডোভামার্কিন যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ", + []uint16{ // 242 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + // Entry 80 - BF + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, + 0x0018, 0x0018, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + // Entry C0 - FF + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, + 0x002a, 0x00ae, + }, + }, + { // bo + "རྒྱ་ནགའཇར་མན་དབྱིན་ཇི་རྒྱ་གར་ཨི་ཀྲར་ལི་ཉི་ཧོང་ལྷོ་ཀོ་རི་ཡ།བལ་ཡུལ་ཨུ་རུ་ས" + + "ུ་ཨ་མེ་རི་ཀ།མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུགའཛམ་གླིང་།", + []uint16{ // 263 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, + 0x0012, 0x0012, 0x0012, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + // Entry 40 - 7F + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0027, 0x0027, 0x0027, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0075, 0x0075, 0x0075, + 0x0075, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, + // Entry 80 - BF + 0x008a, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00c3, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + // Entry C0 - FF + 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00de, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + // Entry 100 - 13F + 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x015f, 0x017d, }, }, - { // am - amRegionStr, - amRegionIdx, - }, - { // ar - arRegionStr, - arRegionIdx, - }, - {}, // ar-EG - { // as - "এন্টাৰ্টিকাব্ৰাজিলবভেট দ্বীপচীনজাৰ্মানিফ্ৰান্সসংযুক্ত ৰাজ্যদক্ষিণ জৰ্জিয" + - "়া আৰু দক্ষিণ চেণ্ডৱিচ্\u200c দ্বীপহাৰ্ড দ্বীপ আৰু মেক্\u200cডোনাল" + - "্ড দ্বীপভাৰতব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চলইটালিজাপানৰুচদক্ষিণ " + - "ফ্ৰান্সৰ অঞ্চলযুক্তৰাষ্ট্ৰঅজ্ঞাত বা অবৈধ অঞ্চল", - []uint16{ // 260 elements + { // bo-IN + "ཨོཤི་ཡཱན་ན།", + []uint16{ // 267 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0036, 0x0036, 0x0036, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0088, 0x0088, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0182, 0x0182, 0x0182, - 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x018e, - 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01fd, 0x01fd, 0x01fd, 0x01fd, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 80 - BF - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry C0 - FF - 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x0250, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, - 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 100 - 13F - 0x0274, 0x0274, 0x0274, 0x02aa, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0021, }, }, - { // asa - "AndoraFalme dha KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArme" + - "niaAngolaAjentinaThamoa ya MarekaniAuthtriaAuthtraliaArubaAdhabajani" + - "Bothnia na HedhegovinaBabadothiBangladeshiUbelgijiBukinafathoBulgari" + - "aBahareniBurundiBeniniBermudaBruneiBraziliBahamaButaniBotthwanaBelar" + - "uthiBelidheKanadaJamhuri ya Kidemokrathia ya KongoJamhuri ya Afrika " + - "ya KatiKongoUthwithiKodivaaVithiwa vya CookChileKameruniChinaKolombi" + - "aKothtarikaKubaKepuvedeKuprothiJamhuri ya ChekiUjerumaniJibutiDenmak" + - "iDominikaJamhuri ya DominikaAljeriaEkwadoEthtoniaMithriEritreaHithpa" + - "niaUhabeshiUfiniFijiVithiwa vya FalklandMikronethiaUfaranthaGaboniUi" + - "ngeredhaGrenadaJojiaGwiyana ya UfaranthaGhanaJibraltaGrinlandiGambia" + - "GineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurathiK" + - "orathiaHaitiHungariaIndonethiaAyalandiIthraeliIndiaIeneo la Uingered" + - "ha katika Bahari HindiIrakiUajemiAithlandiItaliaJamaikaYordaniJapani" + - "KenyaKirigizithtaniKambodiaKiribatiKomoroThantakitdhi na NevithKorea" + - " KathkaziniKorea KuthiniKuwaitiVithiwa vya KaymanKazakithtaniLaothiL" + - "ebanoniThantaluthiaLishenteniThirilankaLiberiaLethotoLitwaniaLathemb" + - "agiLativiaLibyaMorokoMonakoMoldovaBukiniVithiwa vya MarshalMathedoni" + - "aMaliMyamaMongoliaVithiwa vya Mariana vya KathkaziniMartinikiMoritan" + - "iaMonttherratiMaltaMorithiModivuMalawiMekthikoMalethiaMthumbijiNamib" + - "iaNyukaledoniaNijeriKithiwa cha NorfokNijeriaNikaragwaUholandhiNorwe" + - "NepaliNauruNiueNyudhilandiOmaniPanamaPeruPolinesia ya UfaranthaPapua" + - "FilipinoPakithtaniPolandiThantapieri na MikeloniPitkairniPwetorikoPa" + - "lestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUruthiRwandaThaudiVit" + - "hiwa vya TholomonShelisheliThudaniUthwidiThingapooThantahelenaThlove" + - "niaTholvakiaThiera LeoniThamarinoThenegaliThomaliaThurinamuThao Tome" + - " na PrincipeElsavadoThiriaUthwadhiVithiwa vya Turki na KaikoChadiTog" + - "oTailandiTajikithtaniTokelauTimori ya MasharikiTurukimenithtaniTunit" + - "hiaTongaUturukiTrinidad na TobagoTuvaluTaiwaniTadhaniaUgandaMarekani" + - "UrugwaiUdhibekithtaniVatikaniThantavithenti na GrenadiniVenezuelaVit" + - "hiwa vya Virgin vya UingeredhaVithiwa vya Virgin vya MarekaniVietina" + - "muVanuatuWalith na FutunaThamoaYemeniMayotteAfrika KuthiniDhambiaDhi" + - "mbabwe", - []uint16{ // 259 elements + { // br + "Enez AscensionAndorraEmirelezhioù Arab UnanetAfghanistanAntigua ha Barbu" + + "daAnguillaAlbaniaArmeniaAngolaAntarktikaArcʼhantinaSamoa AmerikanAos" + + "triaAostraliaArubaInizi ÅlandAzerbaidjanBosnia ha HerzegovinaBarbado" + + "sBangladeshBelgiaBurkina FasoBulgariaBahreinBurundiBeninSaint Barthé" + + "lemyBermudaBruneiBoliviaKarib NederlandatBrazilBahamasBhoutanEnez Bo" + + "uvetBotswanaBelarusBelizeKanadaInizi KokozKongo - KinshasaRepublik K" + + "reizafrikanKongo - BrazzavilleSuisAod an OlifantInizi CookChileKamer" + + "ounSinaKolombiaEnez ClippertonCosta RicaKubaKab-GlasCuraçaoEnez Chri" + + "stmasKiprenezRepublik TchekAlamagnDiego GarciaDjiboutiDanmarkDominic" + + "aRepublik DominikanAljeriaCeuta ha MelillaEcuadorEstoniaEgiptSahara " + + "ar CʼhornôgEritreaSpagnEtiopiaUnaniezh EuropaFinlandFidjiInizi Falkl" + + "andMikroneziaInizi FaeroFrañsGabonRouantelezh-UnanetGrenadaJorjiaGwi" + + "ana cʼhallGwernenezGhanaJibraltarGreunlandGambiaGineaGwadeloupGinea " + + "ar CʼhehederGresInizi Georgia ar Su hag Inizi Sandwich ar SuGuatemal" + + "aGuamGinea-BissauGuyanaHong Kong RMD SinaInizi Heard ha McDonaldHond" + + "urasKroatiaHaitiHungariaInizi KanariezIndoneziaIwerzhonIsraelEnez Va" + + "navIndiaTiriad breizhveurat Meurvor IndezIraqIranIslandItaliaJerzene" + + "zJamaikaJordaniaJapanKenyaKyrgyzstanKambodjaKiribatiKomorezSaint Kit" + + "ts ha NevisKorea an NorzhKorea ar SuKoweitInizi CaymanKazakstanLaosL" + + "ibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLuksembou" + + "rgLatviaLibiaMarokoMonacoMoldovaMontenegroSaint MartinMadagaskarIniz" + + "i MarshallMakedoniaMaliMyanmar (Birmania)MongoliaMacau RMD SinaInizi" + + " Mariana an NorzhMartinikMaouritaniaMontserratMaltaMorisMaldivezMala" + + "wiMecʼhikoMalaysiaMozambikNamibiaKaledonia NevezNigerEnez NorfolkNig" + + "eriaNicaraguaIzelvroioùNorvegiaNepalNauruNiueZeland-NevezOmanPanamáP" + + "erouPolinezia CʼhallPapoua Ginea-NevezFilipinezPakistanPoloniaSant-P" + + "êr-ha-MikelonEnez PitcairnPuerto RicoTiriadoù PalestinaPortugalPala" + + "uParaguayQatarOseania diabellAr ReünionRoumaniaSerbiaRusiaRwandaArab" + + "ia SaoudatInizi SalomonSechelezSoudanSvedenSingapourSaint-HelenaSlov" + + "eniaSvalbardSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSusou" + + "danSão Tomé ha PríncipeSalvadorSint MaartenSiriaSwazilandTristan da " + + "CunhaInizi Turks ha CaicosTchadDouaroù aostral FrañsTogoThailandTadj" + + "ikistanTokelauTimor-LesteTurkmenistanTuniziaTongaTurkiaTrinidad ha T" + + "obagoTuvaluTaiwanTanzaniaUkrainaOugandaInizi diabell ar Stadoù-Unane" + + "tStadoù-UnanetUruguayOuzbekistanVatikanSant Visant hag ar Grenadinez" + + "VenezuelaInizi Gwercʼh Breizh-VeurInizi Gwercʼh ar Stadoù-UnanetViêt" + + " NamVanuatuWallis ha FutunaSamoaKosovoYemenMayotteSuafrikaZambiaZimb" + + "abweRannved dianavBedAfrikaNorzhamerikaSuamerikaOseaniaAfrika ar Cʼh" + + "ornôgKreizamerikaAfrika ar ReterAfrika an NorzhAfrika ar CʼhreizAfri" + + "ka ar SuAmerikaoùAmerika an NorzhKaribAzia ar ReterAzia ar SuAzia ar" + + " GevredEuropa ar SuAostralaziaMelaneziaRannved MikroneziaPolineziaAz" + + "iaAzia ar CʼhreizAzia ar CʼhornôgEuropaEuropa ar ReterEuropa an Norz" + + "hEuropa ar CʼhornôgAmerika Latin", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0044, - 0x004b, 0x0051, 0x0051, 0x0059, 0x006b, 0x0073, 0x007d, 0x0082, - 0x0082, 0x008c, 0x00a2, 0x00ab, 0x00b6, 0x00be, 0x00c9, 0x00d1, - 0x00d9, 0x00e0, 0x00e6, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00f3, - 0x00fa, 0x0100, 0x0106, 0x0106, 0x010f, 0x0118, 0x011f, 0x0125, - 0x0125, 0x0146, 0x015f, 0x0164, 0x016c, 0x0173, 0x0183, 0x0188, - 0x0190, 0x0195, 0x019d, 0x019d, 0x01a7, 0x01ab, 0x01b3, 0x01b3, - 0x01b3, 0x01bb, 0x01cb, 0x01d4, 0x01d4, 0x01da, 0x01e1, 0x01e9, + 0x0000, 0x000e, 0x0015, 0x002e, 0x0039, 0x004b, 0x0053, 0x005a, + 0x0061, 0x0067, 0x0071, 0x007d, 0x008b, 0x0092, 0x009b, 0x00a0, + 0x00ac, 0x00b7, 0x00cc, 0x00d4, 0x00de, 0x00e4, 0x00f0, 0x00f8, + 0x00ff, 0x0106, 0x010b, 0x011c, 0x0123, 0x0129, 0x0130, 0x0141, + 0x0147, 0x014e, 0x0155, 0x0160, 0x0168, 0x016f, 0x0175, 0x017b, + 0x0186, 0x0196, 0x01ab, 0x01be, 0x01c2, 0x01d0, 0x01da, 0x01df, + 0x01e7, 0x01eb, 0x01f3, 0x0202, 0x020c, 0x0210, 0x0218, 0x0220, + 0x022e, 0x0236, 0x0244, 0x024b, 0x0257, 0x025f, 0x0266, 0x026e, // Entry 40 - 7F - 0x01fc, 0x0203, 0x0203, 0x0209, 0x0211, 0x0217, 0x0217, 0x021e, - 0x0227, 0x022f, 0x022f, 0x0234, 0x0238, 0x024c, 0x0257, 0x0257, - 0x0260, 0x0266, 0x0270, 0x0277, 0x027c, 0x0290, 0x0290, 0x0295, - 0x029d, 0x02a6, 0x02ac, 0x02b0, 0x02b9, 0x02c2, 0x02c9, 0x02c9, - 0x02d2, 0x02d6, 0x02df, 0x02e5, 0x02e5, 0x02e5, 0x02ef, 0x02f7, - 0x02fc, 0x0304, 0x0304, 0x030e, 0x0316, 0x031e, 0x031e, 0x0323, - 0x034a, 0x034f, 0x0355, 0x035e, 0x0364, 0x0364, 0x036b, 0x0372, - 0x0378, 0x037d, 0x038b, 0x0393, 0x039b, 0x03a1, 0x03b7, 0x03c7, - // Entry 80 - BF - 0x03d4, 0x03db, 0x03ed, 0x03f9, 0x03ff, 0x0407, 0x0413, 0x041d, - 0x0427, 0x042e, 0x0435, 0x043d, 0x0447, 0x044e, 0x0453, 0x0459, - 0x045f, 0x0466, 0x0466, 0x0466, 0x046c, 0x047f, 0x0489, 0x048d, - 0x0492, 0x049a, 0x049a, 0x04bc, 0x04c5, 0x04ce, 0x04da, 0x04df, - 0x04e6, 0x04ec, 0x04f2, 0x04fa, 0x0502, 0x050b, 0x0512, 0x051e, - 0x0524, 0x0536, 0x053d, 0x0546, 0x054f, 0x0554, 0x055a, 0x055f, - 0x0563, 0x056e, 0x0573, 0x0579, 0x057d, 0x0593, 0x0598, 0x05a0, - 0x05aa, 0x05b1, 0x05c8, 0x05d1, 0x05da, 0x05e3, 0x05e8, 0x05ed, - // Entry C0 - FF - 0x05f5, 0x05fb, 0x05fb, 0x0604, 0x060b, 0x060b, 0x0611, 0x0617, - 0x061d, 0x0631, 0x063b, 0x0642, 0x0649, 0x0652, 0x065e, 0x0667, - 0x0667, 0x0670, 0x067c, 0x0685, 0x068e, 0x0696, 0x069f, 0x069f, - 0x06b4, 0x06bc, 0x06bc, 0x06c2, 0x06ca, 0x06ca, 0x06e4, 0x06e9, - 0x06e9, 0x06ed, 0x06f5, 0x0701, 0x0708, 0x071b, 0x072b, 0x0733, - 0x0738, 0x073f, 0x0751, 0x0757, 0x075e, 0x0766, 0x0766, 0x076c, - 0x076c, 0x0774, 0x077b, 0x0789, 0x0791, 0x07ac, 0x07b5, 0x07d6, - 0x07f5, 0x07fe, 0x0805, 0x0815, 0x081b, 0x081b, 0x0821, 0x0828, - // Entry 100 - 13F - 0x0836, 0x083d, 0x0846, + 0x0280, 0x0287, 0x0297, 0x029e, 0x02a5, 0x02aa, 0x02be, 0x02c5, + 0x02ca, 0x02d1, 0x02e0, 0x02e0, 0x02e7, 0x02ec, 0x02fa, 0x0304, + 0x030f, 0x0315, 0x031a, 0x032c, 0x0333, 0x0339, 0x0347, 0x0350, + 0x0355, 0x035e, 0x0367, 0x036d, 0x0372, 0x037b, 0x038e, 0x0392, + 0x03be, 0x03c7, 0x03cb, 0x03d7, 0x03dd, 0x03ef, 0x0406, 0x040e, + 0x0415, 0x041a, 0x0422, 0x0430, 0x0439, 0x0441, 0x0447, 0x0451, + 0x0456, 0x0477, 0x047b, 0x047f, 0x0485, 0x048b, 0x0493, 0x049a, + 0x04a2, 0x04a7, 0x04ac, 0x04b6, 0x04be, 0x04c6, 0x04cd, 0x04e1, + // Entry 80 - BF + 0x04ef, 0x04fa, 0x0500, 0x050c, 0x0515, 0x0519, 0x051e, 0x0529, + 0x0536, 0x053f, 0x0546, 0x054d, 0x0555, 0x0560, 0x0566, 0x056b, + 0x0571, 0x0577, 0x057e, 0x0588, 0x0594, 0x059e, 0x05ac, 0x05b5, + 0x05b9, 0x05cb, 0x05d3, 0x05e1, 0x05f7, 0x05ff, 0x060a, 0x0614, + 0x0619, 0x061e, 0x0626, 0x062c, 0x0635, 0x063d, 0x0645, 0x064c, + 0x065b, 0x0660, 0x066c, 0x0673, 0x067c, 0x0687, 0x068f, 0x0694, + 0x0699, 0x069d, 0x06a9, 0x06ad, 0x06b4, 0x06b9, 0x06ca, 0x06dc, + 0x06e5, 0x06ed, 0x06f4, 0x0708, 0x0715, 0x0720, 0x0733, 0x073b, + // Entry C0 - FF + 0x0740, 0x0748, 0x074d, 0x075c, 0x0767, 0x076f, 0x0775, 0x077a, + 0x0780, 0x078e, 0x079b, 0x07a3, 0x07a9, 0x07af, 0x07b8, 0x07c4, + 0x07cc, 0x07d4, 0x07dc, 0x07e8, 0x07f2, 0x07f9, 0x0800, 0x0807, + 0x080f, 0x0826, 0x082e, 0x083a, 0x083f, 0x0848, 0x0858, 0x086d, + 0x0872, 0x0889, 0x088d, 0x0895, 0x08a0, 0x08a7, 0x08b2, 0x08be, + 0x08c5, 0x08ca, 0x08d0, 0x08e2, 0x08e8, 0x08ee, 0x08f6, 0x08fd, + 0x0904, 0x0923, 0x0923, 0x0931, 0x0938, 0x0943, 0x094a, 0x0967, + 0x0970, 0x098a, 0x09aa, 0x09b3, 0x09ba, 0x09ca, 0x09cf, 0x09d5, + // Entry 100 - 13F + 0x09da, 0x09e1, 0x09e9, 0x09ef, 0x09f7, 0x0a05, 0x0a08, 0x0a0e, + 0x0a1a, 0x0a23, 0x0a2a, 0x0a3e, 0x0a4a, 0x0a59, 0x0a68, 0x0a7a, + 0x0a86, 0x0a90, 0x0aa0, 0x0aa5, 0x0ab2, 0x0abc, 0x0aca, 0x0ad6, + 0x0ae1, 0x0aea, 0x0afc, 0x0b05, 0x0b09, 0x0b19, 0x0b2b, 0x0b31, + 0x0b40, 0x0b4f, 0x0b63, 0x0b70, }, }, - { // ast - "Islla AscensiónAndorraEmiratos Árabes XuníosAfganistánAntigua y BarbudaA" + - "nguilaAlbaniaArmeniaAngolaL’AntártidaArxentinaSamoa AmericanaAustria" + - "AustraliaArubaIslles AlandAzerbaixánBosnia y HerzegovinaBarbadosBang" + - "ladexBélxicaBurkina FasuBulgariaBaḥréinBurundiBenínSan BartoloméLes " + - "BermudesBrunéiBoliviaCaribe neerlandésBrasilLes BahamesButánIslla Bo" + - "uvetBotsuanaBielorrusiaBelizeCanadáIslles Cocos (Keeling)Congu - Kin" + - "xasaRepública CentroafricanaCongu - BrazzavilleSuizaCosta de MarfilI" + - "slles CookChileCamerúnChinaColombiaIslla ClippertonCosta RicaCubaCab" + - "u VerdeCuraçaoIslla ChristmasXipreChequiaAlemañaDiego GarciaXibutiDi" + - "namarcaDominicaRepública DominicanaArxeliaCeuta y MelillaEcuadorEsto" + - "niaExiptuSáḥara OccidentalEritreaEspañaEtiopíaXunión EuropeaFinlandi" + - "aIslles FixiFalkland IslandsMicronesiaIslles FeroeFranciaGabónReinu " + - "XuníuGranadaXeorxaGuyana FrancesaGuernseyGhanaXibraltarGroenlandiaGa" + - "mbiaGuineaGuadalupeGuinea EcuatorialGreciaIslles Xeorxa del Sur y Sa" + - "ndwich del SurGuatemalaGuamGuinea-BisáuGuyanaARE China de Ḥong KongI" + - "slles Heard y McDonaldHonduresCroaciaHaitíHungríaIslles CanariesIndo" + - "nesiaIrlandaIsraelIslla de ManIndiaTerritoriu Británicu del Océanu Í" + - "ndicuIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKeniaKirguistán" + - "CamboyaKiribatiLes ComoresSaint Kitts y NevisCorea del NorteCorea de" + - "l SurKuwaitIslles CaimánKazakstánLaosLíbanuSanta LlucíaLiechtenstein" + - "Sri LankaLiberiaLesothuLituaniaLuxemburguLetoniaLibiaMarruecosMónacu" + - "MoldaviaMontenegruSaint MartinMadagascarIslles MarshallMacedoniaMalí" + - "Myanmar (Birmania)MongoliaARE China de MacáuIslles Marianes del Nort" + - "eLa MartinicaMauritaniaMontserratMaltaMauriciuLes MaldivesMalauiMéxi" + - "cuMalasiaMozambiqueNamibiaNueva CaledoniaEl NíxerIslla NorfolkNixeri" + - "aNicaraguaPaíses BaxosNoruegaNepalNauruNiueNueva ZelandaOmánPanamáPe" + - "rúPolinesia FrancesaPapúa Nueva GuineaFilipinesPaquistánPoloniaSaint" + - " Pierre y MiquelonIslles PitcairnPuertu RicuTerritorios PalestinosPo" + - "rtugalPaláuParaguáiQatarOceanía esteriorReuniónRumaníaSerbiaRusiaRua" + - "ndaArabia SauditaIslles SalomónLes SeixelesSudánSueciaSingapurSanta " + - "HelenaEsloveniaSvalbard ya Islla Jan MayenEslovaquiaSierra LleonaSan" + - " MarínSenegalSomaliaSurinamSudán del SurSantu Tomé y PríncipeEl Salv" + - "adorSint MaartenSiriaSuazilandiaTristán da CunhaIslles Turques y Cai" + - "cosChadTierres Australes FrancesesToguTailandiaTaxiquistánTokeláuTim" + - "or OrientalTurkmenistánTuniciaTongaTurquíaTrinidá y TobaguTuvaluTaiw" + - "ánTanzaniaUcraínaUgandaIslles Perifériques Menores de los EE.XX.Est" + - "aos XuníosUruguáiUzbequistánCiudá del VaticanuSan Vicente y Granadin" + - "esVenezuelaIslles Vírxenes BritániquesIslles Vírxenes AmericanesViet" + - "namVanuatuWallis y FutunaSamoaKosovuYemenMayotteSudáfricaZambiaZimba" + - "bueRexón desconocidaMunduÁfricaNorteaméricaAmérica del SurOceaníaÁfr" + - "ica OccidentalAmérica CentralÁfrica OrientalÁfrica del NorteÁfrica C" + - "entralÁfrica del SurAméricaAmérica del NorteCaribeAsia OrientalAsia " + - "del SurSureste AsiáticuEuropa del SurAustralasiaMelanesiaRexón de Mi" + - "cronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa Orienta" + - "lEuropa del NorteEuropa OccidentalAmérica Llatina", - []uint16{ // 290 elements + { // brx + "ऍन्डोरासंयुक्त अरब अमीरातअफ़ग़ानिस्तानएन्टिगुआ एवं बारबूडाएंगीलाअल्बानिय" + + "ाआर्मेनियाअंगोलाअंटार्कटिकाअर्जेण्टिनाअमरिकी समोआऑस्ट्रियाऑस्ट्रेल" + + "ियाअरूबाआलाँड द्वीपअज़रबैजानबोसनिया हर्ज़ेगोविनाबारबाडोसबंगलादेशबे" + + "ल्जियमबुर्किना फासोबल्गैरियाबहरैनबुरुंडीबेनेँसेँ बार्थेलेमीबरमूडाब" + + "्रूनइबोलीवियाब्राज़ीलबहामाभूटानबुवे द्वीपबोत्स्वानाबेलारूसबेलिज़कै" + + "नाडाकोकोस द्वीपकॉंगो किनशासासेंट्रल अफ्रीकन रिपब्लिककॉंगो ब्राज़्ज" + + "़ावीलस्वित्ज़रलैंडआईवरी कोस्टकुक द्वीपचिलीकोमेरानचीनकोलम्बियाकोस्ट" + + "ारीकाक्यूबाकैप वेर्देक्रिस्मस द्वीपसाइप्रसचेक गणराज्यजर्मनीद्जिबूत" + + "ीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियाएक्वाडोरएस्टोनियामिस्रपश" + + "्चिमी सहाराएरिट्रियास्पेनइथिओपियायूरोपीय संघफिनलैंडफिजीफ़ॉल्कलैंड " + + "द्वीपमाइक्रोनेशियाफरो द्वीपफ्राँसगैबॉनब्रितनग्रेनडाजॉर्जियाफ्राँसी" + + "सी गिआनागेर्नसेघानाजिब्राल्टरग्रीनलैण्डगाम्बियागिनीग्वादलुपइक्वेटो" + + "रियल गिनीग्रीसदक्षिण जोर्जिया एवं दक्षिण सैंडवीच द्वीपगोतेदालागुआम" + + "गीनी-बिसाउगुयानाहाँगकाँग विशेष प्रशासनिक क्षेत्र चीनहर्ड द्वीप एवं" + + " मैकडोनॉल्ड द्वीपहौण्डूरासक्रोएशियाहाइतीहंगरीइंडोनेशियाआयरलैंडइस्राइ" + + "लआईल ऑफ़ मैनभारतब्रिटिश हिंद महासागरिय क्षेत्रईराक़ईरानआइसलैंडइटली" + + "जर्सीजमाइकाजॉर्डनजापानकेन्याकिर्गिज़कम्बोडियाकिरिबातीकोमोरोज़सेंट " + + "किट्स एवं नेविसउत्तर कोरियादक्षिण कोरियाकुवैतकेमैन द्वीपकज़ाखस्तान" + + "लाओसलेबनोनसेंट लूसियालिक्टैनस्टाईनश्री लँकालाइबेरियालसोथोलिथुआनिया" + + "लक्समबर्गलाट्वीयालीबियामोरोक्कोमोनाकोमोल्डेवियामोंटेनेग्रोसेँ मार्" + + "टेँमदागास्करमार्शल द्वीपमैसेडोनियामालीम्यानमारमंगोलियामकाओ विशेष प" + + "्रशासनिक क्षेत्र (चीन)उत्तरी मारियाना द्वीपमार्टीनिकमॉरिटेनियामॉंस" + + "ेरामाल्टामॉरिसमालदीवमलावीमैक्सिकोमलेशियामोज़ाम्बिकनामीबियान्यू कैल" + + "ेडोनियानाइजेरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनेदरलैण्डनॉर्वेनेपालना" + + "उरूनीयूएन्यूज़ीलैंडओमानपनामापेरूफ्राँसीसी पॉलिनीशियापापुआ न्यू गिन" + + "ीफिलीपिन्सपाकिस्तानपोलैण्डसेँ पीएर एवं मि\u200dकेलॉंपिटकेर्नपुएर्ट" + + "ो रीकोफ़िलिस्तीनपुर्तगालपलाऊपारागुएक़तारबाहरिय ओशेआनियारेयूनियॉंरो" + + "मानियासर्बियारूसरूआण्डासऊदी अरबसॉलोमन द्वीपसेशेल्ससूदानस्वीडनसिंगा" + + "पुरसेण्\u200dट हेलेनास्लोवेनियास्वाल्बार्ड एवं यान मायेनस्लोवाकिया" + + "सियेरा लेओनसैन मरीनोसेनेगालसोमालियासुरिनामसाउँ-तोमे एवं प्रिंसिपऍल" + + " साल्वाडोरसीरियास्वाज़ीलैंडतुर्की एवं कैकोज़ द्वीपचाडफ्राँसीसी उत्तर" + + "ी क्षेत्रोंटोगोथाइलैण्डताजिकिस्तानटोकेलौपूर्वी तिमोरतुर्कमेनीस्तान" + + "त्युनिशियाटॉंगातुर्कीट्रिनिडाड एवं टोबैगोतुवालुताइवानतंज़ानियायूक्" + + "रेनयुगाँडायुनाइटेड स्टेट्स के छोटे बाहरिय द्वीपसंयुक्त राज्य अमरिक" + + "ायुरूगुएउज़बेकिस्तानवैटिकनसेंट विंसंट एवं दी ग्रनाडीन्स्वेनेज़ुएला" + + "ब्रिटिश वर्जीन आईलंड्सयु.एस. वर्जीन आईलंड्सवियतनामवानाऊटुवॉलेस एवं" + + " फ़्यूचूनासमोआयमनमैयौटदक्षिण अफ्रीकाज़ाम्बियाज़ीम्बाब्वेअज्ञात या अव" + + "ैध प्रदेशदुनियाअफ्रीकाउत्तर अमरिकादक्षिण अमरिकाओशेआनियापश्चिमी अफ्" + + "रीकामध्य अमरिकापूर्वी अफ्रीकाउत्तरी अफ्रीकामध्य अफ्रीकादक्षिणी अफ्" + + "रीकाअमरिकाज़्उत्तरी अमरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-" + + "पूर्वी एशियादक्षिणी यूरोपऑस्ट्रेलिया एवं न्यूजीलैंडमेलीनेशियामाईक्" + + "रोनेशियापोलीनेशियाएशियामध्य एशियापश्चिमी ऐशियायूरोपपूर्वी यूरोपउत्" + + "तरी यूरोपपश्चिमी यूरोप्लैटिन अमरिका एवं करीबी", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x002f, 0x003a, 0x004b, 0x0052, 0x0059, - 0x0060, 0x0066, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c, 0x00a1, - 0x00ad, 0x00b8, 0x00cc, 0x00d4, 0x00dd, 0x00e5, 0x00f1, 0x00f9, - 0x0103, 0x010a, 0x0110, 0x011e, 0x012a, 0x0131, 0x0138, 0x014a, - 0x0150, 0x015b, 0x0161, 0x016d, 0x0175, 0x0180, 0x0186, 0x018d, - 0x01a3, 0x01b2, 0x01cb, 0x01de, 0x01e3, 0x01f2, 0x01fd, 0x0202, - 0x020a, 0x020f, 0x0217, 0x0227, 0x0231, 0x0235, 0x023f, 0x0247, - 0x0256, 0x025b, 0x0262, 0x026a, 0x0276, 0x027c, 0x0285, 0x028d, + 0x0000, 0x0000, 0x0015, 0x0047, 0x006e, 0x00a6, 0x00b8, 0x00d3, + 0x00ee, 0x0100, 0x0121, 0x0142, 0x0161, 0x017c, 0x019d, 0x01ac, + 0x01cb, 0x01e6, 0x0220, 0x0238, 0x0250, 0x0268, 0x028d, 0x02a8, + 0x02b7, 0x02cc, 0x02db, 0x0303, 0x0315, 0x0327, 0x033f, 0x033f, + 0x0357, 0x0366, 0x0375, 0x0391, 0x03af, 0x03c4, 0x03d6, 0x03e8, + 0x0407, 0x042c, 0x0470, 0x04a7, 0x04ce, 0x04ed, 0x0506, 0x0512, + 0x0527, 0x0530, 0x054b, 0x054b, 0x0569, 0x057b, 0x0597, 0x0597, + 0x05bf, 0x05d4, 0x05f3, 0x0605, 0x0605, 0x061d, 0x0635, 0x064d, // Entry 40 - 7F - 0x02a2, 0x02a9, 0x02b8, 0x02bf, 0x02c6, 0x02cc, 0x02e0, 0x02e7, - 0x02ee, 0x02f6, 0x0305, 0x030e, 0x0319, 0x0329, 0x0333, 0x033f, - 0x0346, 0x034c, 0x0358, 0x035f, 0x0365, 0x0374, 0x037c, 0x0381, - 0x038a, 0x0395, 0x039b, 0x03a1, 0x03aa, 0x03bb, 0x03c1, 0x03e9, - 0x03f2, 0x03f6, 0x0403, 0x0409, 0x0421, 0x0438, 0x0440, 0x0447, - 0x044d, 0x0455, 0x0464, 0x046d, 0x0474, 0x047a, 0x0486, 0x048b, - 0x04b4, 0x04b8, 0x04bd, 0x04c5, 0x04cb, 0x04d1, 0x04d8, 0x04e0, - 0x04e6, 0x04eb, 0x04f6, 0x04fd, 0x0505, 0x0510, 0x0523, 0x0532, - // Entry 80 - BF - 0x053f, 0x0545, 0x0553, 0x055d, 0x0561, 0x0568, 0x0575, 0x0582, - 0x058b, 0x0592, 0x0599, 0x05a1, 0x05ab, 0x05b2, 0x05b7, 0x05c0, - 0x05c7, 0x05cf, 0x05d9, 0x05e5, 0x05ef, 0x05fe, 0x0607, 0x060c, - 0x061e, 0x0626, 0x0639, 0x0652, 0x065e, 0x0668, 0x0672, 0x0677, - 0x067f, 0x068b, 0x0691, 0x0698, 0x069f, 0x06a9, 0x06b0, 0x06bf, - 0x06c8, 0x06d5, 0x06dc, 0x06e5, 0x06f2, 0x06f9, 0x06fe, 0x0703, - 0x0707, 0x0714, 0x0719, 0x0720, 0x0725, 0x0737, 0x074a, 0x0753, - 0x075d, 0x0764, 0x077b, 0x078a, 0x0795, 0x07ab, 0x07b3, 0x07b9, - // Entry C0 - FF - 0x07c2, 0x07c7, 0x07d8, 0x07e0, 0x07e8, 0x07ee, 0x07f3, 0x07f9, - 0x0807, 0x0816, 0x0822, 0x0828, 0x082e, 0x0836, 0x0842, 0x084b, - 0x0866, 0x0870, 0x087d, 0x0887, 0x088e, 0x0895, 0x089c, 0x08aa, - 0x08c1, 0x08cc, 0x08d8, 0x08dd, 0x08e8, 0x08f9, 0x0910, 0x0914, - 0x092f, 0x0933, 0x093c, 0x0948, 0x0950, 0x095e, 0x096b, 0x0972, - 0x0977, 0x097f, 0x0990, 0x0996, 0x099d, 0x09a5, 0x09ad, 0x09b3, - 0x09dd, 0x09eb, 0x09f3, 0x09ff, 0x0a12, 0x0a2a, 0x0a33, 0x0a50, - 0x0a6b, 0x0a72, 0x0a79, 0x0a88, 0x0a8d, 0x0a93, 0x0a98, 0x0a9f, - // Entry 100 - 13F - 0x0aa9, 0x0aaf, 0x0ab7, 0x0ac9, 0x0ace, 0x0ad5, 0x0ae2, 0x0af2, - 0x0afa, 0x0b0c, 0x0b1c, 0x0b2c, 0x0b3d, 0x0b4c, 0x0b5b, 0x0b63, - 0x0b75, 0x0b7b, 0x0b88, 0x0b94, 0x0ba5, 0x0bb3, 0x0bbe, 0x0bc7, - 0x0bdb, 0x0be4, 0x0be8, 0x0bf4, 0x0c03, 0x0c09, 0x0c18, 0x0c28, - 0x0c39, 0x0c49, + 0x067b, 0x0696, 0x0696, 0x06ae, 0x06c9, 0x06d8, 0x06fd, 0x0718, + 0x0727, 0x073f, 0x075e, 0x075e, 0x0773, 0x077f, 0x07ad, 0x07d4, + 0x07ed, 0x07ff, 0x080e, 0x0820, 0x0835, 0x084d, 0x0878, 0x088d, + 0x0899, 0x08b7, 0x08d5, 0x08ed, 0x08f9, 0x0911, 0x093f, 0x094e, + 0x09bc, 0x09d4, 0x09e0, 0x09fc, 0x0a0e, 0x0a72, 0x0ac7, 0x0ae2, + 0x0afd, 0x0b0c, 0x0b1b, 0x0b1b, 0x0b39, 0x0b4e, 0x0b63, 0x0b80, + 0x0b8c, 0x0be0, 0x0bef, 0x0bfb, 0x0c10, 0x0c1c, 0x0c2b, 0x0c3d, + 0x0c4f, 0x0c5e, 0x0c70, 0x0c88, 0x0ca3, 0x0cbb, 0x0cd3, 0x0d09, + // Entry 80 - BF + 0x0d2b, 0x0d50, 0x0d5f, 0x0d7e, 0x0d9c, 0x0da8, 0x0dba, 0x0dd9, + 0x0e00, 0x0e19, 0x0e34, 0x0e43, 0x0e5e, 0x0e79, 0x0e91, 0x0ea3, + 0x0ebb, 0x0ecd, 0x0eeb, 0x0f0c, 0x0f2b, 0x0f46, 0x0f68, 0x0f86, + 0x0f92, 0x0faa, 0x0fc2, 0x101c, 0x1057, 0x1072, 0x1090, 0x10a5, + 0x10b7, 0x10c6, 0x10d8, 0x10e7, 0x10ff, 0x1114, 0x1132, 0x114a, + 0x1175, 0x1187, 0x11ac, 0x11c7, 0x11e2, 0x11fd, 0x120f, 0x121e, + 0x122d, 0x123c, 0x125d, 0x1269, 0x1278, 0x1284, 0x12be, 0x12e7, + 0x1302, 0x131d, 0x1332, 0x136b, 0x1383, 0x13a5, 0x13c3, 0x13db, + // Entry C0 - FF + 0x13e7, 0x13fc, 0x140b, 0x1436, 0x1451, 0x1469, 0x147e, 0x1487, + 0x149c, 0x14b2, 0x14d4, 0x14e9, 0x14f8, 0x150a, 0x1522, 0x1547, + 0x1565, 0x15aa, 0x15c8, 0x15e7, 0x1600, 0x1615, 0x162d, 0x1642, + 0x1642, 0x167e, 0x16a0, 0x16a0, 0x16b2, 0x16d3, 0x16d3, 0x1712, + 0x171b, 0x1765, 0x1771, 0x1789, 0x17aa, 0x17bc, 0x17de, 0x1808, + 0x1826, 0x1835, 0x1847, 0x187f, 0x1891, 0x18a3, 0x18be, 0x18d3, + 0x18e8, 0x194d, 0x194d, 0x1985, 0x199a, 0x19be, 0x19d0, 0x1a22, + 0x1a40, 0x1a7e, 0x1ab5, 0x1aca, 0x1adf, 0x1b14, 0x1b20, 0x1b20, + // Entry 100 - 13F + 0x1b29, 0x1b38, 0x1b60, 0x1b7b, 0x1b9c, 0x1bd5, 0x1be7, 0x1bfc, + 0x1c1e, 0x1c43, 0x1c5b, 0x1c86, 0x1ca5, 0x1ccd, 0x1cf5, 0x1d17, + 0x1d42, 0x1d5d, 0x1d82, 0x1d9a, 0x1dbc, 0x1de1, 0x1e16, 0x1e3b, + 0x1e85, 0x1ea3, 0x1eca, 0x1ee8, 0x1ef7, 0x1f13, 0x1f38, 0x1f47, + 0x1f69, 0x1f8b, 0x1fb3, 0x1fef, }, }, - { // az - azRegionStr, - azRegionIdx, + { // bs + "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barbu" + + "daAngvilaAlbanijaArmenijaAngolaAntarktikaArgentinaAmerička SamoaAust" + + "rijaAustralijaArubaOlandska OstrvaAzerbejdžanBosna i HercegovinaBarb" + + "adosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti Bar" + + "tolomejBermudaBrunejBolivijaKaripska HolandijaBrazilBahamiButanOstrv" + + "o BuveBocvanaBjelorusijaBelizeKanadaKokosova (Kilingova) OstrvaDemok" + + "ratska Republika KongoCentralnoafrička RepublikaKongoŠvicarskaObala " + + "SlonovačeKukova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKostar" + + "ikaKubaKape VerdeKurasaoBožićna OstrvaKiparČeškaNjemačkaDijego Garsi" + + "jaDžibutiDanskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEkv" + + "adorEstonijaEgipatZapadna SaharaEritrejaŠpanijaEtiopijaEvropska unij" + + "aFinskaFidžiFolklandska OstrvaMikronezijaFarska OstrvaFrancuskaGabon" + + "Velika BritanijaGrenadaGruzijaFrancuska GvajanaGernziGanaGibraltarGr" + + "enlandGambijaGvinejaGvadalupeEkvatorijalna GvinejaGrčkaJužna Džordži" + + "ja i Južna Sendvička OstrvaGvatemalaGuamGvineja-BisaoGvajanaHong Kon" + + "g (SAR Kina)Herd i arhipelag MekDonaldHondurasHrvatskaHaitiMađarskaK" + + "anarska OstrvaIndonezijaIrskaIzraelOstrvo ManIndijaBritanska Teritor" + + "ija u Indijskom OkeanuIrakIranIslandItalijaDžerziJamajkaJordanJapanK" + + "enijaKirgistanKambodžaKiribatiKomorska OstrvaSveti Kits i NevisSjeve" + + "rna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstanLaosLibanSveta " + + "LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLatvijaLi" + + "bijaMarokoMonakoMoldavijaCrna GoraSv. MartinMadagaskarMaršalova Ostr" + + "vaMakedonijaMaliMijanmarMongolijaMakao (SAR Kina)Sjeverna Marijanska" + + " OstrvaMartinikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeksik" + + "oMalezijaMozambikNamibijaNova KaledonijaNigerOstrvo NorfolkNigerijaN" + + "ikaragvaHolandijaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFran" + + "cuska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSveti Petar" + + " i MikelonPitkernska OstrvaPorto RikoPalestinska TeritorijaPortugalP" + + "alauParagvajKatarVanjska OkeanijaReunionRumunijaSrbijaRusijaRuandaSa" + + "udijska ArabijaSolomonska OstrvaSejšeliSudanŠvedskaSingapurSveta Hel" + + "enaSlovenijaSvalbard i Jan MajenSlovačkaSijera LeoneSan MarinoSenega" + + "lSomalijaSurinamJužni SudanSao Tome i PrincipeSalvadorSint MartenSir" + + "ijaSvazilendTristan da KunjaOstrva Turks i KaikosČadFrancuske Južne " + + "TeritorijeTogoTajlandTadžikistanTokelauIstočni TimorTurkmenistanTuni" + + "sTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkrajinaUgandaAmer" + + "ička Vanjska OstrvaUjedinjene NacijeSjedinjene Američke DržaveUrugva" + + "jUzbekistanVatikanSveti Vinsent i GrenadinVenecuelaBritanska Djeviča" + + "nska OstrvaAmerička Djevičanska OstrvaVijetnamVanuatuOstrva Valis i " + + "FutunaSamoaKosovoJemenMajoteJužnoafrička RepublikaZambijaZimbabveNep" + + "oznata oblastSvijetAfrikaSjeverna AmerikaJužna AmerikaOkeanijaZapadn" + + "a AfrikaSrednja AmerikaIstočna AfrikaSjeverna AfrikaCentralna Afrika" + + "Južna AfrikaAmerikaSjeverni dio AmerikeKaribiIstočna AzijaJužna Azij" + + "aJugoistočna AzijaJužna EvropaAustralazijaMelanezijaMikronezijska re" + + "gijaPolinezijaAzijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaS" + + "jeverna EvropaZapadna EvropaLatinska Amerika", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059, + 0x0061, 0x0067, 0x0071, 0x007a, 0x0089, 0x0091, 0x009b, 0x00a0, + 0x00af, 0x00bb, 0x00ce, 0x00d6, 0x00e0, 0x00e7, 0x00f3, 0x00fb, + 0x0102, 0x0109, 0x010e, 0x011e, 0x0125, 0x012b, 0x0133, 0x0145, + 0x014b, 0x0151, 0x0156, 0x0161, 0x0168, 0x0173, 0x0179, 0x017f, + 0x019a, 0x01b5, 0x01d0, 0x01d5, 0x01df, 0x01ef, 0x01fc, 0x0201, + 0x0208, 0x020c, 0x0215, 0x0225, 0x022e, 0x0232, 0x023c, 0x0243, + 0x0253, 0x0258, 0x025f, 0x0268, 0x0276, 0x027e, 0x0284, 0x028c, + // Entry 40 - 7F + 0x02a2, 0x02a8, 0x02b7, 0x02be, 0x02c6, 0x02cc, 0x02da, 0x02e2, + 0x02ea, 0x02f2, 0x0300, 0x0300, 0x0306, 0x030c, 0x031e, 0x0329, + 0x0336, 0x033f, 0x0344, 0x0354, 0x035b, 0x0362, 0x0373, 0x0379, + 0x037d, 0x0386, 0x038e, 0x0395, 0x039c, 0x03a5, 0x03ba, 0x03c0, + 0x03ed, 0x03f6, 0x03fa, 0x0407, 0x040e, 0x0422, 0x043c, 0x0444, + 0x044c, 0x0451, 0x045a, 0x0469, 0x0473, 0x0478, 0x047e, 0x0488, + 0x048e, 0x04b5, 0x04b9, 0x04bd, 0x04c3, 0x04ca, 0x04d1, 0x04d8, + 0x04de, 0x04e3, 0x04e9, 0x04f2, 0x04fb, 0x0503, 0x0512, 0x0524, + // Entry 80 - BF + 0x0533, 0x0540, 0x0546, 0x0556, 0x055f, 0x0563, 0x0568, 0x0574, + 0x0580, 0x058a, 0x0592, 0x0598, 0x05a1, 0x05ab, 0x05b2, 0x05b8, + 0x05be, 0x05c4, 0x05cd, 0x05d6, 0x05e0, 0x05ea, 0x05fb, 0x0605, + 0x0609, 0x0611, 0x061a, 0x062a, 0x0644, 0x064c, 0x0657, 0x065f, + 0x0664, 0x066e, 0x0675, 0x067b, 0x0682, 0x068a, 0x0692, 0x069a, + 0x06a9, 0x06ae, 0x06bc, 0x06c4, 0x06cd, 0x06d6, 0x06df, 0x06e4, + 0x06e9, 0x06ed, 0x06f8, 0x06fc, 0x0702, 0x0706, 0x071a, 0x072c, + 0x0734, 0x073c, 0x0743, 0x0758, 0x0769, 0x0773, 0x0789, 0x0791, + // Entry C0 - FF + 0x0796, 0x079e, 0x07a3, 0x07b3, 0x07ba, 0x07c2, 0x07c8, 0x07ce, + 0x07d4, 0x07e5, 0x07f6, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081f, + 0x0828, 0x083c, 0x0845, 0x0851, 0x085b, 0x0862, 0x086a, 0x0871, + 0x087d, 0x0890, 0x0898, 0x08a3, 0x08a9, 0x08b2, 0x08c2, 0x08d7, + 0x08db, 0x08f6, 0x08fa, 0x0901, 0x090d, 0x0914, 0x0922, 0x092e, + 0x0933, 0x0938, 0x093e, 0x094f, 0x0955, 0x095b, 0x0964, 0x096c, + 0x0972, 0x098a, 0x099b, 0x09b7, 0x09be, 0x09c8, 0x09cf, 0x09e7, + 0x09f0, 0x0a0d, 0x0a2a, 0x0a32, 0x0a39, 0x0a4e, 0x0a53, 0x0a59, + // Entry 100 - 13F + 0x0a5e, 0x0a64, 0x0a7c, 0x0a83, 0x0a8b, 0x0a9b, 0x0aa1, 0x0aa7, + 0x0ab7, 0x0ac5, 0x0acd, 0x0adb, 0x0aea, 0x0af9, 0x0b08, 0x0b18, + 0x0b25, 0x0b2c, 0x0b40, 0x0b46, 0x0b54, 0x0b60, 0x0b72, 0x0b7f, + 0x0b8b, 0x0b95, 0x0ba9, 0x0bb3, 0x0bb8, 0x0bc7, 0x0bd4, 0x0bda, + 0x0be9, 0x0bf8, 0x0c06, 0x0c16, + }, }, - { // az-Cyrl - "АзәрбајҹанБразилијаЧинАлманијаФрансаҺиндистанИталијаЈапонијаРусијаАмерик" + - "а Бирләшмиш Штатлары", - []uint16{ // 242 elements + { // bs-Cyrl + "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" + + "аАнгвилаАлбанијаАрменијаАнголаАнтарктикАргентинаАмеричка СамоаАустр" + + "ијаАустралијаАрубаАландска острваАзербејџанБосна и ХерцеговинаБарба" + + "досБангладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвети Бар" + + "толомејБермудаБрунејБоливијаБразилБахамиБутанБуве ОстрваБоцванаБело" + + "русијаБелизеКанадаКокос (Келинг) ОстрваКонго - КиншасаЦентрално Афр" + + "ичка РепубликаКонго - БразавилШвајцарскаОбала СлоновачеКукова Острв" + + "аЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаКапе ВердеБож" + + "ићна острваКипарЧешкаНемачкаДијего ГарсијаЏибутиДанскаДоминикаДомин" + + "иканска РепубликаАлжирСеута и МелиљаЕквадорЕстонијаЕгипатЗападна Са" + + "хараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџиФокландска острв" + + "аМикронезијаФарска ОстрваФранцускаГабонВелика БританијаГренадаГрузи" + + "јаФранцуска ГвајанаГурнсиГанаГибралтарГренландГамбијаГвинејаГваделу" + + "пеЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна Сендвич ОстрваГва" + + "темалаГуамГвинеја-БисаоГвајанаХонг Конг С. А. Р. КинаХерд и Мекдона" + + "лд ОстрваХондурасХрватскаХаитиМађарскаКанарска острваИндонезијаИрск" + + "аИзраелОстрво МанИндијаБританска територија у Индијском океануИракИ" + + "ранИсландИталијаЏерсиЈамајкаЈорданЈапанКенијаКиргизстанКамбоџаКириб" + + "атиКоморска ОстрваСент Китс и НевисСеверна КорејаЈужна КорејаКувајт" + + "Кајманска ОстрваКазахстанЛаосЛибанСент ЛуцијаЛихтенштајнШри ЛанкаЛи" + + "беријаЛесотоЛитванијаЛуксембургЛетонијаЛибијаМарокоМонакоМолдавијаЦ" + + "рна ГораСент МартинМадагаскарМаршалска ОстрваМакедонијаМалиМијанмар" + + " (Бурма)МонголијаМакао С. А. Р. КинаСеверна Маријанска ОстрваМартини" + + "кМауританијаМонсератМалтаМаурицијусМалдивиМалавиМексикоМалезијаМоза" + + "мбикНамибијаНова КаледонијаНигерНорфолк ОстрвоНигеријаНикарагваХола" + + "ндијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаПеруФранцуска Полин" + + "езијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен Пјер и МикелонПитк" + + "ернПорто РикоПалестинске територијеПортугалијаПалауПарагвајКатарОст" + + "ала океанијаРеинионРумунијаСрбијаРусијаРуандаСаудијска АрабијаСолом" + + "онска ОстрваСејшелиСуданШведскаСингапурСвета ЈеленаСловенијаСвалбар" + + "д и Јанмајен ОстрваСловачкаСијера ЛеонеСан МариноСенегалСомалијаСур" + + "инамСао Томе и ПринципеСалвадорСиријаСвазилендТристан да КуњаТуркс " + + "и Кајкос ОстрваЧадФранцуске Јужне ТериторијеТогоТајландТаџикистанТо" + + "келауИсточни ТиморТуркменистанТунисТонгаТурскаТринидад и ТобагоТува" + + "луТајванТанзанијаУкрајинаУгандаМања удаљена острва САДСједињене Аме" + + "ричке ДржавеУругвајУзбекистанВатиканСент Винсент и ГренадиниВенецуе" + + "лаБританска Девичанска ОстрваС.А.Д. Девичанска ОстрваВијетнамВануат" + + "уВалис и Футуна ОстрваСамоаЈеменМајотеЈужноафричка РепубликаЗамбија" + + "ЗимбабвеНепозната или неважећа областСветАфрикаСеверноамерички конт" + + "инентЈужна АмерикаОкеанијаЗападна АфрикаЦентрална АмерикаИсточна Аф" + + "рикаСеверна АфрикаЦентрална АфрикаЈужна АфрикаАмерикеСеверна Америк" + + "аКарибиИсточна АзијаЈужна АзијаЈугоисточна АзијаЈужна ЕвропаАустрал" + + "ија и Нови ЗеландМеланезијаМикронезијски регионПолинезијаАзијаЦентр" + + "ална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна ЕвропаЗападна Ев" + + "ропаЛатинска Америка", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab, + 0x00bb, 0x00c7, 0x00d9, 0x00eb, 0x0106, 0x0116, 0x012a, 0x0134, + 0x0151, 0x0165, 0x0189, 0x0199, 0x01ab, 0x01b9, 0x01d0, 0x01e0, + 0x01ee, 0x01fc, 0x0206, 0x0225, 0x0233, 0x023f, 0x024f, 0x024f, + 0x025b, 0x0267, 0x0271, 0x0286, 0x0294, 0x02a8, 0x02b4, 0x02c0, + 0x02e6, 0x0301, 0x0335, 0x0352, 0x0366, 0x0383, 0x039c, 0x03a4, + 0x03b2, 0x03ba, 0x03cc, 0x03eb, 0x03fd, 0x0405, 0x0418, 0x0418, + 0x0433, 0x043d, 0x0447, 0x0455, 0x0470, 0x047c, 0x0488, 0x0498, // Entry 40 - 7F - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x0068, 0x0068, 0x0068, 0x0068, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - // Entry 80 - BF - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, + 0x04c3, 0x04cd, 0x04e7, 0x04f5, 0x0505, 0x0511, 0x052c, 0x053c, + 0x054a, 0x055a, 0x0575, 0x0575, 0x0581, 0x0589, 0x05aa, 0x05c0, + 0x05d9, 0x05eb, 0x05f5, 0x0614, 0x0622, 0x0630, 0x0651, 0x065d, + 0x0665, 0x0677, 0x0687, 0x0695, 0x06a3, 0x06b5, 0x06de, 0x06e8, + 0x072b, 0x073d, 0x0745, 0x075e, 0x076c, 0x0792, 0x07bd, 0x07cd, + 0x07dd, 0x07e7, 0x07f7, 0x0814, 0x0828, 0x0832, 0x083e, 0x0851, + 0x085d, 0x08a7, 0x08af, 0x08b7, 0x08c3, 0x08d1, 0x08db, 0x08e9, + 0x08f5, 0x08ff, 0x090b, 0x091f, 0x092d, 0x093d, 0x095a, 0x0979, + // Entry 80 - BF + 0x0994, 0x09ab, 0x09b7, 0x09d6, 0x09e8, 0x09f0, 0x09fa, 0x0a0f, + 0x0a25, 0x0a36, 0x0a46, 0x0a52, 0x0a64, 0x0a78, 0x0a88, 0x0a94, + 0x0aa0, 0x0aac, 0x0abe, 0x0acf, 0x0ae4, 0x0af8, 0x0b17, 0x0b2b, + 0x0b33, 0x0b50, 0x0b62, 0x0b81, 0x0bb1, 0x0bc1, 0x0bd7, 0x0be7, + 0x0bf1, 0x0c05, 0x0c13, 0x0c1f, 0x0c2d, 0x0c3d, 0x0c4d, 0x0c5d, + 0x0c7a, 0x0c84, 0x0c9f, 0x0caf, 0x0cc1, 0x0cd3, 0x0ce3, 0x0ced, + 0x0cf7, 0x0cff, 0x0d14, 0x0d1c, 0x0d28, 0x0d30, 0x0d57, 0x0d79, + 0x0d89, 0x0d99, 0x0da5, 0x0dc6, 0x0dd4, 0x0de7, 0x0e12, 0x0e28, // Entry C0 - FF - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x00b6, + 0x0e32, 0x0e42, 0x0e4c, 0x0e69, 0x0e77, 0x0e87, 0x0e93, 0x0e9f, + 0x0eab, 0x0ecc, 0x0eed, 0x0efb, 0x0f05, 0x0f13, 0x0f23, 0x0f3a, + 0x0f4c, 0x0f7d, 0x0f8d, 0x0fa4, 0x0fb7, 0x0fc5, 0x0fd5, 0x0fe3, + 0x0fe3, 0x1006, 0x1016, 0x1016, 0x1022, 0x1034, 0x1050, 0x1077, + 0x107d, 0x10af, 0x10b7, 0x10c5, 0x10d9, 0x10e7, 0x1100, 0x1118, + 0x1122, 0x112c, 0x1138, 0x1158, 0x1164, 0x1170, 0x1182, 0x1192, + 0x119e, 0x11c9, 0x11c9, 0x11f9, 0x1207, 0x121b, 0x1229, 0x1256, + 0x1268, 0x129c, 0x12c7, 0x12d7, 0x12e5, 0x130c, 0x1316, 0x1316, + // Entry 100 - 13F + 0x1320, 0x132c, 0x1357, 0x1365, 0x1375, 0x13ac, 0x13b4, 0x13c0, + 0x13f1, 0x140a, 0x141a, 0x1435, 0x1456, 0x1471, 0x148c, 0x14ab, + 0x14c2, 0x14d0, 0x14ed, 0x14f9, 0x1512, 0x1527, 0x1548, 0x155f, + 0x158c, 0x15a0, 0x15c7, 0x15db, 0x15e5, 0x1602, 0x161b, 0x1627, + 0x1642, 0x165d, 0x1678, 0x1697, }, }, - { // bas - "Àŋdɔ̂rÀdnà i Bilɔ̀ŋ bi ArābìàÀfgànìstâŋÀŋtigà ɓɔ BàrbudàÀŋgiyàÀlbanìàÀrm" + - "enìàÀŋgolàÀrgàŋtinàÒstrǐkÒstralìàÀrubàÀzɛ̀rbajàŋBòhnià ƐrzègòvinàBàr" + - "badòBàŋglàdɛ̂sBɛlgyùmBùrkìnà FasòBùlgarìàBàraìnBùrundìBènɛ̂ŋBɛ̀rmudà" + - "BruneiBòlivìàBràsîlBàhamàsBùtânBòdsùanàBèlarùsBèlîsKànadàKòŋgo ìkɛŋi" + - "Ŋ̀ɛm AfrīkàKòŋgoSùwîsMàŋ mi Njɔ̂kBìòn bi KookKìlîKàmɛ̀rûnKinàKɔ̀lɔm" + - "bìàKòstà RikàKubàKabwɛ᷆rKipròJamânJìbutìDànmârkDòmnîkDòmnikàÀlgerìàÈ" + - "kwàtorìàÈstonìàÈgîptòÈrìtrěàPànyaÈtìopìàFìnlândFijiBìòn bi FalklandM" + - "ìkrònesìàPùlàsi / Fɛ̀lɛ̀nsi /Gàbɔ̂ŋÀdnà i Lɔ̂ŋGrènadàGèɔrgìàGùyanà " + - "PùlàsiGanàGìlbràtârGrǐnlàndGàmbiàGìnêGwàdèlûpGìne ÈkwàtorìàGrǐkyàGwà" + - "tèmalàGùâmGìne BìsàôGùyanàƆ̀ŋduràsKròasìàÀitìƆ̀ŋgriìIndònèsiàÌrlândI" + - "sràɛ̂lIndìàBìtèk bi Ŋgisì i Tūyɛ ĪndìàÌrâkÌrâŋÌslandìàÌtalìàJàmàikàY" + - "ɔ̀rdaniàKenìàKìrgìzìstàŋKàmbodìàKìrìbatìKɔ̀mɔ̂rNûmpubi Kîts nì Nevì" + - "sKɔ̀re ì Ŋ̀ɔmbɔkKɔ̀re ì Ŋ̀wɛ̀lmbɔkKòwêtBìòn bi KaymànKàzàkstâŋLàôsLè" + - "banònNûmpubi LusìLigstɛntànSrìlaŋkàLìberìàLesòtòLìtùanìàLùgsàmbûrLàd" + - "viàLibìàMàrokòMònakòMoldavìàMàdàgàskârBìòn bi MarcàlMàsèdonìàMàliMyà" + - "nmârMòŋgolìàBìòn bi Marìanà ŋ̀ɔmbɔkMàrtìnîkMòrìtanìàMɔ̀ŋseràtMaltàMò" + - "rîsMàldîfMàlàwiMɛ̀gsîkMàlɛ̀sìàMòsàmbîkNàmibìàKàlèdonìà Yɔ̀ndɔNìjɛ̂rÒ" + - "n i Nɔrfɔ̂kNìgerìàNìkàragwàǸlɛndiNɔ̀rvegìàNèpâlNerùNìuɛ̀Sìlând Yɔ̀nd" + - "ɔÒmânPànàmaPèrûPòlìnesìà PùlàsiGìne ì PàpuFìlìpînPàkìstânPòlàndNûmp" + - "ubi Petrò nì MikèlônPìdkaìrnPɔ̀rtò RikòPàlɛ̀htinà Hyɔ̀ŋg nì GazàPɔ̀t" + - "ɔkìPàlaùPàràgwêKàtârRèunyɔ̂ŋRùmanìàRuslàndRùandàSàudi ÀrabìàBìòn bi" + - " SalōmòSèsɛ̂lSùdâŋSwedɛ̀nSìŋgàpûrNûmpubi ƐlēnàSlòvanìàSlòvakìàSièra " + - "Lèɔ̂nNûmpubi MāatìnSènègâlSòmalìàSùrinâmSào Tòme ɓɔ Prɛ̀ŋcipèSàlvàdɔ" + - "̂rSirìàSwàzìlândBìòn bi Tûrks nì KalkòsCâdTògoTaylàndTàjìkìstaŋTòkè" + - "laòTìmɔ̂r lìkòlTùrgmènìstânTùnisìàTɔŋgàTùrkâyTrìnidàd ɓɔ TòbagòTùvàl" + - "ùTàywânTànzàniàÙkrɛ̌nÙgandàÀdnà i Bilɔ̀ŋ bi AmerkàÙrùgwêyÙzbèkìstân" + - "VàtìkâŋNûmpubi Vɛ̂ŋsâŋ nì grènàdînVènèzùelàBìòn bi kɔnji bi ŊgisìBìò" + - "n bi kɔnji bi U.S.Vìɛ̀dnâmVànùatùWàlîs nì FùtunàSàmoàYèmɛ̂nMàyɔ̂tÀfr" + - "ǐkà Sɔ̀ZàmbiàZìmbàbwê", - []uint16{ // 259 elements + { // ca + caRegionStr, + caRegionIdx, + }, + { // ce + "Айъадаларан гӀайреАндорраӀарбийн Цхьанатоьхна ЭмираташОвхӀан-пачхьалкхАн" + + "тигуа а, Барбуда аАнгильяАлбаниЭрмалойчоьАнголаАнтарктидаАргентинаА" + + "мерикан СамоаАвстриАвстралиАрубаАландан гӀайренашАзербайджанБосни а" + + ", Герцеговина аБарбадосБангладешБельгиБуркина- ФасоБолгариБахрейнБур" + + "ундиБенинСен-БартельмиБермудан гӀайренашБруней-ДаруссаламБоливиБонэ" + + "йр, Синт-Эстатиус а, Саба аБразилиБагаман гӀайренашБутанБувен гӀайр" + + "еБотсванаБелоруссиБелизКанадаКокосийн гӀайренашДемократин Республик" + + "а КонгоЮккъерчу Африкин РеспубликаРеспублика КонгоШвейцариКот-Д’иву" + + "арКукан гӀайренашЧилиКамерунКитайКолумбиКлиппертонКоста-РикаКубаКаб" + + "о-ВердеКюрасаоГӀайре ӏиса пайхӏамар вина деКипрЧехиГерманиДиего-Гар" + + "сиДжибутиДаниДоминикаДоминикан РеспубликаАлжирСеута а, Мелилья аЭкв" + + "адорЭстониМисарМалхбузен СаьхьараЭритрейИспаниЭфиопиЕвробартФинлянд" + + "иФиджиФолклендан гӀайренашМикронезин Федеративни штаташФарерийн гӀа" + + "йренашФранциГабонЙоккха БританиГренадаГуьржийчоьФранцузийн ГвианаГе" + + "рнсиГанаГибралтарГренландиГамбиГвинейГваделупаЭкваторан ГвинейГреци" + + "Къилба Джорджи а, Къилба Гавайн гӀайренаш аГватемалаГуамГвиней-Биса" + + "уГайанаГонконг (ша-къаьстина кӀошт)Херд гӀайре а, Макдональд гӀайре" + + "наш аГондурасХорватиГаитиВенгриКанаран гӀайренашИндонезиИрландиИзра" + + "ильМэн гӀайреИндиБританин латта Индин океанехьӀиракъГӀажарийчоьИсла" + + "ндиИталиДжерсиЯмайкаУрданЯпониКениКиргизиКамбоджаКирибатиКоморашСен" + + "т-Китс а, Невис аКъилбаседа КорейКъилба КорейКувейтКайман гӀайренаш" + + "КазахстанЛаосЛиванСент-ЛюсиЛихтенштейнШри-ЛанкаЛибериЛесотоЛитваЛюк" + + "сембургЛатвиЛивиМароккоМонакоМолдавиӀаьржаламанхойчоьСен-МартенМада" + + "гаскарМаршаллан гӀайренашМакедониМалиМьянма (Бирма)МонголиМакао (ша" + + "-къаьстина кӀошт)Къилбаседа Марианан гӀайренашМартиникаМавританиМонт" + + "серратМальтаМаврикиМальдивашМалавиМексикаМалайзиМозамбикНамибиКерла" + + " КаледониНигерНорфолк гӀайреНигериНикарагуаНидерландашНорвегиНепалНа" + + "уруНиуэКерла ЗеландиОманПанамаПеруФранцузийн ПолинезиПапуа — Керла " + + "ГвинейФилиппинашПакистанПольшаСен-Пьер а, Микелон аПиткэрн гӀайрена" + + "шПуэрто-РикоПалестинан латтанашПортугалиПалауПарагвайКатарАрахьара " + + "ОкеаниРеюньонРумыниСербиРоссиРуандаСаӀудийн АравиСоломонан гӀайрена" + + "шСейшелан гӀайренашСуданШвециСингапурСийлахьчу Еленин гӀайреСловени" + + "Шпицберген а, Ян-Майен аСловакиСьерра- ЛеонеСан-МариноСенегалСомали" + + "СуринамКъилба СуданСан-Томе а, Принсипи аСальвадорСинт-МартенШемаСв" + + "азилендТристан-да- КуньяТёркс а, Кайкос а гӀайренашЧадФранцузийн къ" + + "илба латтанашТогоТаиландТаджикистанТокелауМалхбален ТиморТуркмениТу" + + "нисТонгаТуркойчоьТринидад а, Тобаго аТувалуТайваньТанзаниУкраинаУга" + + "ндаАЦШн арахьара кегийн гӀайренашЦхьанатоьхна ШтаташУругвайУзбекист" + + "анВатиканСент-Винсент а, Гренадинаш аВенесуэлаВиргинийн гӀайренаш (" + + "Британи)Виргинийн гӀайренаш (АЦШ)ВьетнамВануатуУоллис а, Футуна аСа" + + "моаКосовоЙеменМайоттаКъилба-Африкин РеспубликаЗамбиЗимбабвеЙоьвзуш " + + "йоцу регионДерригдуьненанАфрикаКъилбаседа АмерикаКъилба АмерикаОкеа" + + "ниМалхбузен АфрикаЮккъера АмерикаМалхбален АфрикаКъилбаседа АфрикаЮ" + + "ккъера АфрикаКъилба АфрикаКъилбаседа а, къилба а АмерикаКъилбаседа " + + "Америка – АЦШ а, Канада аКарибашЮккъера АзиКъилба АзиКъилба-малхбал" + + "ен АзиКъилба ЕвропаАвстралазиМеланезиМикронезиПолинезиАзиЮккъера Ма" + + "лхбалеЮккъера а, Гергара а МалхбалеЕвропаМалхбален ЕвропаКъилбаседа" + + " ЕвропаМалхбузен ЕвропаЛатинан Америка", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x0029, 0x0038, 0x0050, 0x0059, 0x0063, - 0x006d, 0x0076, 0x0076, 0x0083, 0x0083, 0x008b, 0x0096, 0x009d, - 0x009d, 0x00ac, 0x00c3, 0x00cc, 0x00db, 0x00e4, 0x00f4, 0x00ff, - 0x0107, 0x0110, 0x011a, 0x011a, 0x0125, 0x012b, 0x0135, 0x0135, - 0x013d, 0x0146, 0x014d, 0x014d, 0x0158, 0x0161, 0x0168, 0x0170, - 0x0170, 0x0180, 0x0190, 0x0197, 0x019e, 0x01ae, 0x01bc, 0x01c2, - 0x01ce, 0x01d3, 0x01e1, 0x01e1, 0x01ee, 0x01f3, 0x01fd, 0x01fd, - 0x01fd, 0x0203, 0x0203, 0x0209, 0x0209, 0x0211, 0x021a, 0x0222, + 0x0000, 0x0023, 0x0031, 0x0069, 0x0088, 0x00ac, 0x00ba, 0x00c6, + 0x00da, 0x00e6, 0x00fa, 0x010c, 0x0127, 0x0133, 0x0143, 0x014d, + 0x016e, 0x0184, 0x01ac, 0x01bc, 0x01ce, 0x01da, 0x01f2, 0x0200, + 0x020e, 0x021c, 0x0226, 0x023f, 0x0262, 0x0283, 0x028f, 0x02c6, + 0x02d4, 0x02f5, 0x02ff, 0x0316, 0x0326, 0x0338, 0x0342, 0x034e, + 0x0371, 0x03a5, 0x03d9, 0x03f8, 0x0408, 0x041e, 0x043b, 0x0443, + 0x0451, 0x045b, 0x0469, 0x047d, 0x0490, 0x0498, 0x04ab, 0x04b9, + 0x04ef, 0x04f7, 0x04ff, 0x050d, 0x0522, 0x0530, 0x0538, 0x0548, + // Entry 40 - 7F + 0x056f, 0x0579, 0x0599, 0x05a7, 0x05b3, 0x05bd, 0x05e0, 0x05ee, + 0x05fa, 0x0606, 0x0616, 0x0616, 0x0626, 0x0630, 0x0657, 0x068f, + 0x06b2, 0x06be, 0x06c8, 0x06e3, 0x06f1, 0x0705, 0x0726, 0x0732, + 0x073a, 0x074c, 0x075e, 0x0768, 0x0774, 0x0786, 0x07a5, 0x07af, + 0x07fe, 0x0810, 0x0818, 0x082f, 0x083b, 0x086e, 0x08b2, 0x08c2, + 0x08d0, 0x08da, 0x08e6, 0x0907, 0x0917, 0x0925, 0x0933, 0x0946, + 0x094e, 0x0985, 0x0991, 0x09a7, 0x09b5, 0x09bf, 0x09cb, 0x09d7, + 0x09e1, 0x09eb, 0x09f3, 0x0a01, 0x0a11, 0x0a21, 0x0a2f, 0x0a52, + // Entry 80 - BF + 0x0a71, 0x0a88, 0x0a94, 0x0ab3, 0x0ac5, 0x0acd, 0x0ad7, 0x0ae8, + 0x0afe, 0x0b0f, 0x0b1b, 0x0b27, 0x0b31, 0x0b45, 0x0b4f, 0x0b57, + 0x0b65, 0x0b71, 0x0b7f, 0x0ba1, 0x0bb4, 0x0bc8, 0x0bed, 0x0bfd, + 0x0c05, 0x0c1e, 0x0c2c, 0x0c5b, 0x0c93, 0x0ca5, 0x0cb7, 0x0ccb, + 0x0cd7, 0x0ce5, 0x0cf7, 0x0d03, 0x0d11, 0x0d1f, 0x0d2f, 0x0d3b, + 0x0d56, 0x0d60, 0x0d7b, 0x0d87, 0x0d99, 0x0daf, 0x0dbd, 0x0dc7, + 0x0dd1, 0x0dd9, 0x0df2, 0x0dfa, 0x0e06, 0x0e0e, 0x0e33, 0x0e59, + 0x0e6d, 0x0e7d, 0x0e89, 0x0eae, 0x0ecf, 0x0ee4, 0x0f09, 0x0f1b, + // Entry C0 - FF + 0x0f25, 0x0f35, 0x0f3f, 0x0f5c, 0x0f6a, 0x0f76, 0x0f80, 0x0f8a, + 0x0f96, 0x0fb1, 0x0fd6, 0x0ff9, 0x1003, 0x100d, 0x101d, 0x1049, + 0x1057, 0x1082, 0x1090, 0x10a8, 0x10bb, 0x10c9, 0x10d5, 0x10e3, + 0x10fa, 0x1121, 0x1133, 0x1148, 0x1150, 0x1162, 0x1181, 0x11b2, + 0x11b8, 0x11ea, 0x11f2, 0x1200, 0x1216, 0x1224, 0x1241, 0x1251, + 0x125b, 0x1265, 0x1277, 0x129b, 0x12a7, 0x12b5, 0x12c3, 0x12d1, + 0x12dd, 0x1316, 0x1316, 0x133b, 0x1349, 0x135d, 0x136b, 0x139e, + 0x13b0, 0x13e6, 0x1414, 0x1422, 0x1430, 0x1450, 0x145a, 0x1466, + // Entry 100 - 13F + 0x1470, 0x147e, 0x14ae, 0x14b8, 0x14c8, 0x14ec, 0x1508, 0x1514, + 0x1537, 0x1552, 0x155e, 0x157d, 0x159a, 0x15b9, 0x15da, 0x15f5, + 0x160e, 0x1645, 0x1687, 0x1695, 0x16aa, 0x16bd, 0x16e3, 0x16fc, + 0x1710, 0x1720, 0x1732, 0x1742, 0x1748, 0x1767, 0x179c, 0x17a8, + 0x17c7, 0x17e8, 0x1807, 0x1824, + }, + }, + { // cgg + "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" + + "wiraArubaniaArimeniyaAngoraArigentinaSamowa ya AmeerikaOsituriaOsitu" + + "reeriyaArubaAzabagyaniBoziniya na HezegovinaBabadosiBangaradeshiBubi" + + "rigiBokina FasoBurugariyaBahareniBurundiBeniniBerimudaBuruneiBoriivi" + + "yaBuraziiriBahamaButaniBotswanaBararusiBerizeKanadaDemokoratika Ripa" + + "aburika ya KongoEihanga rya Rwagati ya AfirikaKongoSwisiAivore Kosit" + + "iEbizinga bya KuukuChileKameruuniChinaKorombiyaKositarikaCubaEbizing" + + "a bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirimaaniGyibutiDeenima" + + "akaDominikaRipaaburika ya DominicaArigyeriyaIkwedaEsitoniyaMisiriEri" + + "teriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya FaakilandaMikironesi" + + "yaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana ya BufaransaGanaGi" + + "buraataGuriinirandiGambiyaGineGwaderupeGuniGuriisiGwatemaraGwamuGine" + + "bisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziyaIrerandiIsirairiI" + + "ndiyaIraakaIraaniAisilandiItareGyamaikaYorudaaniGyapaaniKenyaKirigiz" + + "istaniKambodiyaKiribatiKoromoSenti Kittis na NevisiKoreya AmatembaKo" + + "reya AmashuumaKuweitiEbizinga bya KayimaniKazakisitaniLayosiLebanoni" + + "Senti RusiyaLishenteniSirirankaLiberiyaLesothoLithuaniaLakizembaagaL" + + "atviyaLibyaMoroccoMonacoMoridovaMadagasikaEbizinga bya MarshaaMasedo" + + "oniaMariMyanamarMongoriaEbizinga by’amatemba ga MarianaMartiniqueMau" + + "riteeniyaMontserratiMaritaMaurishiasiMaridivesMarawiMexicomarayiziaM" + + "ozambiqueNamibiyaNiukaredoniaNaigyaEkizinga NorifokoNaigyeriyaNikara" + + "gwaHoorandiNoorweNepoNauruNiueNiuzirandiOmaaniPanamaPeruPolinesia ya" + + " BufaransaPapuaFiripinoPakisitaaniPoorandiSenti Piyerre na MikweronP" + + "itkainiPwetorikoPocugoPalaawuParagwaiKataRiyuniyoniRomaniyaRrashaRwa" + + "ndaSaudi AreebiyaEbizinga bya SurimaaniShesheresiSudaniSwideniSingap" + + "oSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSamarinoSenegoSomaar" + + "iyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiriyaSwazirandiEbizin" + + "ga bya Buturuki na KaikoChadiTogoTairandiTajikisitaniTokerawuBurugwe" + + "izooba bwa TimoriTurukimenisitaniTuniziaTongaButuruki /TakeTurinidad" + + " na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAmerikaUrugwaiUzibeki" + + "sitaniVatikaniSenti Vinsent na GurenadiniVenezuweraEbizinga bya Viri" + + "gini ebya BungyerezaEbizinga bya Virigini ebya AmerikaViyetinaamuVan" + + "uatuWarris na FutunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054, + 0x005d, 0x0063, 0x0063, 0x006d, 0x007f, 0x0087, 0x0093, 0x0098, + 0x0098, 0x00a2, 0x00b8, 0x00c0, 0x00cc, 0x00d4, 0x00df, 0x00e9, + 0x00f1, 0x00f8, 0x00fe, 0x00fe, 0x0106, 0x010d, 0x0116, 0x0116, + 0x011f, 0x0125, 0x012b, 0x012b, 0x0133, 0x013b, 0x0141, 0x0147, + 0x0147, 0x0168, 0x0186, 0x018b, 0x0190, 0x019d, 0x01af, 0x01b4, + 0x01bd, 0x01c2, 0x01cb, 0x01cb, 0x01d5, 0x01d9, 0x01ee, 0x01ee, + 0x01ee, 0x01f7, 0x020b, 0x0216, 0x0216, 0x021d, 0x0227, 0x022f, // Entry 40 - 7F - 0x022b, 0x0235, 0x0235, 0x0242, 0x024c, 0x0255, 0x0255, 0x0260, - 0x0266, 0x0271, 0x0271, 0x027a, 0x027e, 0x0290, 0x029e, 0x029e, - 0x02b8, 0x02c2, 0x02d2, 0x02db, 0x02e6, 0x02f7, 0x02f7, 0x02fc, - 0x0308, 0x0312, 0x031a, 0x0320, 0x032b, 0x033e, 0x0346, 0x0346, - 0x0352, 0x0358, 0x0366, 0x036e, 0x036e, 0x036e, 0x037a, 0x0384, - 0x038a, 0x0395, 0x0395, 0x03a1, 0x03a9, 0x03b3, 0x03b3, 0x03ba, - 0x03de, 0x03e4, 0x03eb, 0x03f6, 0x03ff, 0x03ff, 0x0409, 0x0415, - 0x0415, 0x041c, 0x042c, 0x0437, 0x0442, 0x044d, 0x0466, 0x047c, - // Entry 80 - BF - 0x0496, 0x049d, 0x04ae, 0x04bb, 0x04c1, 0x04ca, 0x04d8, 0x04e4, - 0x04ef, 0x04f9, 0x0501, 0x050d, 0x0519, 0x0521, 0x0528, 0x0530, - 0x0538, 0x0542, 0x0542, 0x0542, 0x0550, 0x0561, 0x056e, 0x0573, - 0x057c, 0x0588, 0x0588, 0x05a7, 0x05b2, 0x05bf, 0x05cc, 0x05d2, - 0x05d9, 0x05e1, 0x05e9, 0x05f3, 0x0600, 0x060b, 0x0615, 0x062c, - 0x0635, 0x0645, 0x064f, 0x065b, 0x0663, 0x0670, 0x0677, 0x067c, - 0x0684, 0x0696, 0x069c, 0x06a4, 0x06aa, 0x06c0, 0x06ce, 0x06d8, - 0x06e3, 0x06eb, 0x0708, 0x0712, 0x0721, 0x0743, 0x074e, 0x0755, - // Entry C0 - FF - 0x075f, 0x0766, 0x0766, 0x0772, 0x077c, 0x077c, 0x0784, 0x078c, - 0x079c, 0x07ae, 0x07b7, 0x07bf, 0x07c8, 0x07d4, 0x07e5, 0x07f0, - 0x07f0, 0x07fb, 0x080a, 0x081b, 0x0825, 0x082f, 0x0838, 0x0838, - 0x0855, 0x0862, 0x0862, 0x0869, 0x0875, 0x0875, 0x0891, 0x0895, - 0x0895, 0x089a, 0x08a2, 0x08b0, 0x08ba, 0x08cb, 0x08db, 0x08e5, - 0x08ed, 0x08f5, 0x090d, 0x0916, 0x091e, 0x0929, 0x0932, 0x093a, - 0x093a, 0x0957, 0x0961, 0x096f, 0x097a, 0x099f, 0x09ac, 0x09c7, - 0x09df, 0x09eb, 0x09f5, 0x0a09, 0x0a10, 0x0a10, 0x0a19, 0x0a22, - // Entry 100 - 13F - 0x0a31, 0x0a39, 0x0a44, - }, - }, - { // be - "Востраў УшэсцяАндораАб’яднаныя Арабскія ЭміратыАфганістанАнтыгуа і Барбу" + - "даАнгільяАлбаніяАрменіяАнголаАнтарктыкаАргенцінаАмерыканскае СамоаА" + - "ўстрыяАўстраліяАрубаАландскія астравыАзербайджанБоснія і Герцагавін" + - "аБарбадасБангладэшБельгіяБуркіна-ФасоБалгарыяБахрэйнБурундзіБенінСе" + - "н-БартэльміБермудскія астравыБрунейБалівіяКарыбскія НідэрландыБразі" + - "ліяБагамыБутанВостраў БувэБатсванаБеларусьБелізКанадаКакосавыя астр" + - "авыКонга (Кіншаса)Цэнтральна-Афрыканская РэспублікаКонга (Бразавіль" + - ")ШвейцарыяКот-д’ІвуарАстравы КукаЧыліКамерунКітайКалумбіяВостраў Клі" + - "пертонКоста-РыкаКубаКаба-ВердэВостраў КюрасааВостраў РастваКіпрЧэхі" + - "яГерманіяВостраў Дыега-ГарсіяДжыбуціДаніяДамінікаДамініканская Рэсп" + - "ублікаАлжырСеўта і МелільяЭквадорЭстоніяЕгіпетЗаходняя СахараЭрытрэ" + - "яІспаніяЭфіопіяЕўрапейскі саюзФінляндыяФіджыФалклендскія астравыМік" + - "ранезіяФарэрскія астравыФранцыяГабонВялікабрытаніяГрэнадаГрузіяФран" + - "цузская ГвіянаВостраў ГернсіГанаГібралтарГрэнландыяГамбіяГвінеяГвад" + - "элупаЭкватарыяльная ГвінеяГрэцыяПаўднёвая Джорджыя і Паўднёвыя Санд" + - "вічавы астравыГватэмалаГуамГвінея-БісауГаянаГанконг, САР (Кітай)Вос" + - "траў Херд і астравы МакдональдГандурасХарватыяГаіціВенгрыяКанарскія" + - " астравыІнданезіяІрландыяІзраільВостраў МэнІндыяБрытанская тэрыторыя" + - " ў Індыйскім акіянеІракІранІсландыяІталіяВостраў ДжэрсіЯмайкаІардані" + - "яЯпоніяКеніяКыргызстанКамбоджаКірыбаціКаморскія АстравыСент-Кітс і " + - "НевісПаўночная КарэяПаўднёвая КарэяКувейтКайманавы астравыКазахстан" + - "ЛаосЛіванСент-ЛюсіяЛіхтэнштэйнШры-ЛанкаЛіберыяЛесотаЛітваЛюксембург" + - "ЛатвіяЛівіяМарокаМанакаМалдоваЧарнагорыяСен-МартэнМадагаскарМаршала" + - "вы АстравыМакедоніяМаліМ’янма (Бірма)МанголіяМакаа, САР (Кітай)Паўн" + - "очныя Марыянскія астравыМарцінікаМаўрытаніяМантсератМальтаМаўрыкійМ" + - "альдывыМалавіМексікаМалайзіяМазамбікНамібіяНовая КаледоніяНігерВост" + - "раў НорфалкНігерыяНікарагуаНідэрландыНарвегіяНепалНауруНіуэНовая Зе" + - "ландыяАманПанамаПеруФранцузская ПалінезіяПапуа — Новая ГвінеяФіліпі" + - "ныПакістанПольшчаСен-П’ер і МікелонАстравы ПіткэрнПуэрта-РыкаПалест" + - "ынскія тэрыторыіПартугаліяПалауПарагвайКатарВонкавая АкіяніяРэюньён" + - "РумыніяСербіяРасіяРуандаСаудаўская АравіяСаламонавы АстравыСейшэльс" + - "кія АстравыСуданШвецыяСінгапурВостраў Святой АленыСлавеніяСвальбард" + - " (Паўночна-Усходняя Зямля) і Ян-МаенСлавакіяСьера-ЛеонэСан-МарынаСен" + - "егалСамаліСурынамПаўднёвы СуданСан-Тамэ і ПрынсіпіСальвадорСінт-Мар" + - "тэнСірыяСвазілендТрыстан-да-КуньяЦёркс і КайкасЧадФранцузскія Паўдн" + - "ёвыя тэрыторыіТогаТайландТаджыкістанТакелауУсходні ТыморТуркменіста" + - "нТунісТонгаТурцыяТрынідад і ТабагаТувалуТайваньТанзаніяУкраінаУганд" + - "аЗнешнія малыя астравы ЗШАЗлучаныя Штаты АмерыкіУругвайУзбекістанВа" + - "тыканСент-Вінсент і ГрэнадзіныВенесуэлаБрытанскія Віргінскія астрав" + - "ыАмерыканскія Віргінскія астравыВ’етнамВануатуУоліс і ФутунаСамоаКо" + - "саваЕменВостраў МаётаПаўднёва-Афрыканская РэспублікаЗамбіяЗімбабвэН" + - "евядомы рэгіёнСветАфрыкаПаўночная АмерыкаПаўднёвая АмерыкаАкіяніяЗа" + - "ходняя АфрыкаЦэнтральная АмерыкаУсходняя АфрыкаПаўночная АфрыкаЦэнт" + - "ральная АфрыкаПаўднёвая АфрыкаПаўночная і Паўднёвая АмерыкіПаўночна" + - "амерыканскі рэгіёнКарыбскія астравыУсходняя АзіяПаўднёвая АзіяПаўдн" + - "ёва-Усходняя АзіяПаўднёвая ЕўропаАўстралазіяМеланезіяМікранезійскі " + - "рэгіёнПалінезіяАзіяЦэнтральная АзіяЗаходняя АзіяЕўропаУсходняя Еўро" + - "паПаўночная ЕўропаЗаходняя ЕўропаЛацінская Амерыка", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x001b, 0x0027, 0x005c, 0x0070, 0x0090, 0x009e, 0x00ac, - 0x00ba, 0x00c6, 0x00da, 0x00ec, 0x010f, 0x011d, 0x012f, 0x0139, - 0x015a, 0x0170, 0x0196, 0x01a6, 0x01b8, 0x01c6, 0x01dd, 0x01ed, - 0x01fb, 0x020b, 0x0215, 0x022e, 0x0251, 0x025d, 0x026b, 0x0292, - 0x02a2, 0x02ae, 0x02b8, 0x02cf, 0x02df, 0x02ef, 0x02f9, 0x0305, - 0x0326, 0x0341, 0x0381, 0x03a0, 0x03b2, 0x03c8, 0x03df, 0x03e7, - 0x03f5, 0x03ff, 0x040f, 0x0430, 0x0443, 0x044b, 0x045e, 0x047b, - 0x0496, 0x049e, 0x04a8, 0x04b8, 0x04de, 0x04ec, 0x04f6, 0x0506, - // Entry 40 - 7F - 0x0535, 0x053f, 0x055b, 0x0569, 0x0577, 0x0583, 0x05a0, 0x05ae, - 0x05bc, 0x05ca, 0x05e7, 0x05f9, 0x0603, 0x062a, 0x063e, 0x065f, - 0x066d, 0x0677, 0x0693, 0x06a1, 0x06ad, 0x06d0, 0x06eb, 0x06f3, - 0x0705, 0x0719, 0x0725, 0x0731, 0x0743, 0x076c, 0x0778, 0x07d5, - 0x07e7, 0x07ef, 0x0806, 0x0810, 0x0833, 0x0871, 0x0881, 0x0891, - 0x089b, 0x08a9, 0x08ca, 0x08dc, 0x08ec, 0x08fa, 0x090f, 0x0919, - 0x0963, 0x096b, 0x0973, 0x0983, 0x098f, 0x09aa, 0x09b6, 0x09c6, - 0x09d2, 0x09dc, 0x09f0, 0x0a00, 0x0a10, 0x0a31, 0x0a50, 0x0a6d, - // Entry 80 - BF - 0x0a8a, 0x0a96, 0x0ab7, 0x0ac9, 0x0ad1, 0x0adb, 0x0aee, 0x0b04, - 0x0b15, 0x0b23, 0x0b2f, 0x0b39, 0x0b4d, 0x0b59, 0x0b63, 0x0b6f, - 0x0b7b, 0x0b89, 0x0b9d, 0x0bb0, 0x0bc4, 0x0be5, 0x0bf7, 0x0bff, - 0x0c19, 0x0c29, 0x0c48, 0x0c7e, 0x0c90, 0x0ca4, 0x0cb6, 0x0cc2, - 0x0cd2, 0x0ce2, 0x0cee, 0x0cfc, 0x0d0c, 0x0d1c, 0x0d2a, 0x0d47, - 0x0d51, 0x0d6e, 0x0d7c, 0x0d8e, 0x0da2, 0x0db2, 0x0dbc, 0x0dc6, - 0x0dce, 0x0de9, 0x0df1, 0x0dfd, 0x0e05, 0x0e2e, 0x0e54, 0x0e64, - 0x0e74, 0x0e82, 0x0ea4, 0x0ec1, 0x0ed6, 0x0f01, 0x0f15, 0x0f1f, - // Entry C0 - FF - 0x0f2f, 0x0f39, 0x0f58, 0x0f66, 0x0f74, 0x0f80, 0x0f8a, 0x0f96, - 0x0fb7, 0x0fda, 0x0fff, 0x1009, 0x1015, 0x1025, 0x104b, 0x105b, - 0x10ad, 0x10bd, 0x10d2, 0x10e5, 0x10f3, 0x10ff, 0x110d, 0x1128, - 0x114b, 0x115d, 0x1172, 0x117c, 0x118e, 0x11ac, 0x11c6, 0x11cc, - 0x1208, 0x1210, 0x121e, 0x1234, 0x1242, 0x125b, 0x1273, 0x127d, - 0x1287, 0x1293, 0x12b3, 0x12bf, 0x12cd, 0x12dd, 0x12eb, 0x12f7, - 0x1326, 0x1350, 0x135e, 0x1372, 0x1380, 0x13af, 0x13c1, 0x13f9, - 0x1435, 0x1444, 0x1452, 0x146c, 0x1476, 0x1482, 0x148a, 0x14a3, - // Entry 100 - 13F - 0x14df, 0x14eb, 0x14fb, 0x1518, 0x1520, 0x152c, 0x154d, 0x156e, - 0x157c, 0x1599, 0x15be, 0x15db, 0x15fa, 0x161d, 0x163c, 0x1673, - 0x16a6, 0x16c7, 0x16e0, 0x16fb, 0x1725, 0x1744, 0x175a, 0x176c, - 0x1793, 0x17a5, 0x17ad, 0x17cc, 0x17e5, 0x17f1, 0x180e, 0x182d, - 0x184a, 0x186b, + 0x0246, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265, 0x026e, + 0x0276, 0x0280, 0x0280, 0x0280, 0x0286, 0x028b, 0x02a2, 0x02ae, + 0x02ae, 0x02b7, 0x02be, 0x02c8, 0x02d0, 0x02d7, 0x02ea, 0x02ea, + 0x02ee, 0x02f7, 0x0303, 0x030a, 0x030e, 0x0317, 0x031b, 0x0322, + 0x0322, 0x032b, 0x0330, 0x0339, 0x033f, 0x033f, 0x033f, 0x0348, + 0x0350, 0x0355, 0x035c, 0x035c, 0x0367, 0x036f, 0x0377, 0x0377, + 0x037d, 0x037d, 0x0383, 0x0389, 0x0392, 0x0397, 0x0397, 0x039f, + 0x03a8, 0x03b0, 0x03b5, 0x03c2, 0x03cb, 0x03d3, 0x03d9, 0x03ef, + // Entry 80 - BF + 0x03fe, 0x040e, 0x0415, 0x042a, 0x0436, 0x043c, 0x0444, 0x0450, + 0x045a, 0x0463, 0x046b, 0x0472, 0x047b, 0x0487, 0x048e, 0x0493, + 0x049a, 0x04a0, 0x04a8, 0x04a8, 0x04a8, 0x04b2, 0x04c6, 0x04d0, + 0x04d4, 0x04dc, 0x04e4, 0x04e4, 0x0505, 0x050f, 0x051b, 0x0526, + 0x052c, 0x0537, 0x0540, 0x0546, 0x054c, 0x0555, 0x055f, 0x0567, + 0x0573, 0x0579, 0x058a, 0x0594, 0x059d, 0x05a5, 0x05ab, 0x05af, + 0x05b4, 0x05b8, 0x05c2, 0x05c8, 0x05ce, 0x05d2, 0x05e8, 0x05ed, + 0x05f5, 0x0600, 0x0608, 0x0621, 0x0629, 0x0632, 0x0632, 0x0638, + // Entry C0 - FF + 0x063f, 0x0647, 0x064b, 0x064b, 0x0655, 0x065d, 0x065d, 0x0663, + 0x0669, 0x0677, 0x068d, 0x0697, 0x069d, 0x06a4, 0x06ab, 0x06b7, + 0x06c2, 0x06c2, 0x06cd, 0x06da, 0x06e2, 0x06e8, 0x06f1, 0x06fa, + 0x06fa, 0x0710, 0x071c, 0x071c, 0x0722, 0x072c, 0x072c, 0x074a, + 0x074f, 0x074f, 0x0753, 0x075b, 0x0767, 0x076f, 0x0787, 0x0797, + 0x079e, 0x07a3, 0x07b1, 0x07c4, 0x07ca, 0x07d3, 0x07db, 0x07e3, + 0x07e9, 0x07e9, 0x07e9, 0x07f0, 0x07f7, 0x0804, 0x080c, 0x0827, + 0x0831, 0x0856, 0x0878, 0x0883, 0x088a, 0x089a, 0x08a0, 0x08a0, + // Entry 100 - 13F + 0x08a6, 0x08ac, 0x08b9, 0x08bf, 0x08c7, }, }, - { // bem - "Zambia", - []uint16{ // 258 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + { // chr + "ᎤᎵᏌᎳᏓᏅ ᎤᎦᏚᏛᎢᎠᏂᏙᎳᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏᎠᏫᎨᏂᏍᏖᏂᎤᏪᏘ ᎠᎴ ᏆᏊᏓᎠᏂᎩᎳᎠᎵᏇᏂᏯᎠᎵᎻᏂᎠᎠᏂᎪᎳᏧ" + + "ᏁᏍᏓᎸᎠᏥᏂᏘᏂᎠᎠᎺᎵᎧ ᏌᎼᎠᎠᏍᏟᏯᎡᎳᏗᏜᎠᎷᏆᎣᎴᏅᏓ ᏚᎦᏚᏛᎢᎠᏎᏆᏣᏂᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫᏆᏇᏙᏍᏆᏂᎦᎵᏕᏍ" + + "ᏇᎵᏥᎥᎻᏋᎩᎾ ᏩᏐᏊᎵᎨᎵᎠᏆᎭᎴᎢᏂᏋᎷᏂᏗᏆᏂᎢᏂᎤᏓᏅᏘ ᏆᏕᎳᎻᏆᏊᏓᏊᎾᎢᏉᎵᏫᎠᎧᎵᏈᎢᏂᎯ ᎾᏍᎩᏁᏛᎳᏂᏆᏏᎵᎾ" + + "ᏍᎩ ᏆᎭᎹᏍᏊᏔᏂᏊᏪ ᎤᎦᏚᏛᎢᏆᏣᏩᎾᏇᎳᎷᏍᏇᎵᏍᎨᎾᏓᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛᎢᎧᏂᎪ - ᎨᏂᏝᏌᎬᎿᎨᏍᏛ ᎠᏰᏟ" + + " ᏍᎦᏚᎩᎧᏂᎪ - ᏆᏌᏩᎵᏍᏫᏍᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚᏛᎢᏥᎵᎧᎹᎷᏂᏓᎶᏂᎨᏍᏛᎪᎸᎻᏈᎢᎠᎦᏂᏴᏔᏅᎣ" + + "ᏓᎸ ᎤᎦᏚᏛᎢᎪᏍᏓ ᎵᎧᎫᏆᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗᎫᎳᎨᎣᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢᏌᎢᏆᏍᏤᎩᎠᎠᏂᏛᏥᏗᏰᎪ ᎦᏏᏯᏥᏊᏗᏗ" + + "ᏂᎹᎦᏙᎻᏂᎧᏙᎻᏂᎧᏂ ᏍᎦᏚᎩᎠᎵᏥᎵᏯᏑᏔ ᎠᎴ ᎺᎵᏯᎡᏆᏙᎵᎡᏍᏙᏂᏯᎢᏥᏈᎢᏭᏕᎵᎬ ᏗᏜ ᏌᎮᎳᎡᎵᏟᏯᎠᏂᏍᏆᏂᏱᎢ" + + "ᏗᎣᏈᎠᏳᎳᏛ ᎠᏂᎤᎾᏓᏡᎬᏫᏂᎦᏙᎯᏫᏥᏩᎩ ᏚᎦᏚᏛᎢᎹᎢᏉᏂᏏᏯᏪᎶ ᏚᎦᏚᏛᎢᎦᎸᏥᏱᎦᏉᏂᎩᎵᏏᏲᏋᎾᏓᏣᎠᏥᎢᎠᏂᎦᎸ" + + "Ꮵ ᎩᎠᎬᏂᏏᎦᎠᎾᏥᏆᎵᏓᎢᏤᏍᏛᏱᎦᎹᏈᎢᎠᎩᎢᏂᏩᏓᎷᏇᎡᏆᏙᎵᎠᎵ ᎩᎢᏂᎪᎢᎯᏧᎦᏃᏮ ᏣᎠᏥᎢ ᎠᎴ ᎾᏍᎩ ᏧᎦᏃᏮ " + + "ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛᎢᏩᏔᎹᎳᏆᎻᎩᎢᏂ-ᏈᏌᎤᏫᎦᏯᎾᎰᏂᎩ ᎪᏂᎩ ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ ᏓᎶᏂᎨᏍᏛᎲᏗ " + + "ᎤᎦᏚᏛᎢ ᎠᎴ ᎺᎩᏓᎾᎵᏗ ᏚᎦᏚᏛᎢᎭᏂᏚᎳᏍᎧᎶᎡᏏᎠᎮᎢᏘᎲᏂᎦᎵᏥᏍᏆ ᏚᎦᏚᏛᎢᎢᏂᏙᏂᏍᏯᎠᏲᎳᏂᎢᏏᎵᏱᎤᏍᏗ Ꭴ" + + "ᎦᏚᏛᎢ ᎾᎿ ᎠᏍᎦᏯᎢᏅᏗᎾᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅᎢᎳᎩᎢᎴᏂᏧᏁᏍᏓᎸᎯᎢᏔᎵᏨᎵᏏᏣᎺᎢᎧᏦᏓᏂᏣᏩᏂᏏᎨᏂᏯᎩ" + + "ᎵᏣᎢᏍᎧᎹᏉᏗᎠᏂᎧᎵᏆᏘᎪᎼᎳᏍᎤᏓᏅᏘ ᎨᏘᏏ ᎠᎴ ᏁᏪᏏᏧᏴᏢ ᎪᎵᎠᏧᎦᏃᏮ ᎪᎵᎠᎫᏪᎢᏘᎨᎢᎹᏂ ᏚᎦᏚᏛᎢᎧᏎᎧᏍ" + + "ᏕᏂᎴᎣᏍᎴᏆᎾᏂᎤᏓᏅᏘ ᎷᏏᏯᎵᎦᏗᏂᏍᏓᏂᏍᎵ ᎳᏂᎧᎳᏈᎵᏯᎴᏐᏙᎵᏗᏪᏂᎠᎸᎧᏎᏋᎩᎳᏘᏫᎠᎵᏈᏯᎼᎶᎪᎹᎾᎪᎹᎵᏙᏫᎠᎼ" + + "ᏂᏔᏁᎦᎶᎤᏓᏅᏘ ᏡᏡᎹᏓᎦᏍᎧᎵᎹᏌᎵ ᏚᎦᏚᏛᎢᎹᏎᏙᏂᏯᎹᎵᎹᏯᎹᎵᎹᏂᎪᎵᎠᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾ" + + "ᏕᎾ) ᏣᎢᏧᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛᎢᎹᏘᏂᎨᎹᏘᎢᏯᎹᏂᏘᏌᎳᏗᎹᎵᏔᎼᎵᏏᎥᏍᎹᎵᏗᏫᏍᎹᎳᏫᎠᏂᏍᏆᏂᎹᎴᏏᎢᎠᎼᏎᎻ" + + "ᏇᎩᎾᎻᏈᎢᏯᎢᏤ ᎧᎵᏙᏂᎠᏂᎾᎢᏨᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢᏂᏥᎵᏯᏂᎧᎳᏆᏁᏛᎳᏂᏃᏪᏁᏆᎵᏃᎤᎷᏂᏳᎢᏤ ᏏᎢᎴᏂᏗᎣᎺᏂᏆᎾᎹ" + + "ᏇᎷᎠᏂᎦᎸᏥ ᏆᎵᏂᏏᎠᏆᏇ ᎢᏤ ᎩᎢᏂᎠᏂᏈᎵᎩᏃᏆᎩᏍᏖᏂᏉᎳᏂᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶᏂᏈᎧᎵᏂ ᏚᎦᏚᏛᎢᏇᎡᏙ Ꮅ" + + "ᎢᎪᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩᏉᏥᎦᎳᏆᎴᎠᏫᏆᎳᏇᎢᏯᎧᏔᎵᎠᏍᏛ ᎣᏏᏰᏂᎠᎴᏳᏂᎠᏂᎶᎹᏂᏯᏒᏈᏯᏲᏂᎢᎶᏩᏂᏓᏌᎤᏗ Ꭱ" + + "ᎴᏈᎠᏐᎶᎹᏂ ᏚᎦᏚᏛᎢᏏᎡᏥᎵᏍᏑᏕᏂᏍᏫᏕᏂᏏᏂᎦᏉᎵᎤᏓᏅᏘ ᎮᎵᎾᏍᎶᏫᏂᎠᏍᏩᎵᏆᎵᏗ ᎠᎴ ᏤᏂ ᎹᏰᏂᏍᎶᏩᎩᎠᏏᎡ" + + "Ꮃ ᎴᎣᏂᎤᏓᏅᏘ ᎹᎵᎢᏃᏏᏂᎦᎵᏐᎹᎵᏒᎵᎾᎻᏧᎦᎾᏮ ᏑᏕᏂᏌᎣ ᏙᎺ ᎠᎴ ᏈᏂᏏᏇᎡᎵᏌᎵᏆᏙᎵᏏᏂᏘ ᎹᏘᏂᏏᎵᎠᎠᏂᏍ" + + "ᏩᏏᎢᏟᏍᏛᏂ Ꮣ ᎫᎾᎭᎠᏂᏛᎵᎩ ᎠᎴ ᎨᎢᎪ ᏚᎦᏚᏛᎢᏣᏗᎠᏂᎦᎸᏥ ᏧᎦᎾᏮ ᎦᏙᎯ ᎤᎵᏍᏛᎢᏙᎪᏔᏯᎴᏂᏔᏥᎩᏍᏕᏂᏙ" + + "ᎨᎳᏭᏘᎼᎵ-ᎴᏍᏖᏛᎵᎩᎺᏂᏍᏔᏂᏚᏂᏏᏍᎠᏙᏅᎦᎬᏃᏟᏂᏕᏗ ᎠᎴ ᏙᏆᎪᏚᏩᎷᏔᎢᏩᏂᏖᏂᏏᏂᏯᏳᎧᎴᏂᏳᎦᏂᏓU.S. ᎠᏍ" + + "Ꮫ ᏚᎦᏚᏛᎢᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩᏳᎷᏇᎤᏍᏇᎩᏍᏖᏂᎠᏥᎳᏁᏠ ᎦᏚᎲᎤᏓᏅᏘ ᏫᏂᏏᏂᏗ ᎠᎴ ᎾᏍᎩ ᏇᎾᏗᏁᏍᏪᏁ" + + "ᏑᏪᎳᏈᏗᏍ ᎠᏒᏂᎸ ᏂᎨᏒᎾ ᏚᎦᏚᏛᎢU.S. ᎠᏒᏂᎸ ᏂᎨᏒᎾ ᏚᎦᏚᏛᎢᏫᎡᏘᎾᎻᏩᏂᎤᏩᏚᏩᎵᏍ ᎠᎴ ᏊᏚᎾᏌᎼᎠᎪ" + + "ᏐᏉᏰᎺᏂᎺᏯᏖᏧᎦᎾᏮ ᎬᎿᎨᏍᏛᏌᎻᏈᏯᏏᎻᏆᏇᏄᏬᎵᏍᏛᎾ ᎤᏔᏂᏗᎦᏙᎯᎡᎶᎯᎬᎿᎨᏍᏛᏧᏴᏢ ᎠᎹᏰᏟᏧᎦᏃᏮ ᎠᎺᎵᎦᎣ" + + "ᏏᏰᏂᎠᏭᏕᎵᎬ ᏗᏜ ᎬᎿᎨᏍᏛᎠᏰᏟ ᎠᎹᏰᏟᏗᎧᎸᎬ ᏗᏜ ᎬᎿᎨᏍᏛᏧᏴᏢ ᏗᏜ ᎬᎿᎨᏍᏛᎠᏰᏟ ᎬᎿᎨᏍᏛᏧᎦᎾᏮ ᏗᏜ" + + " ᎬᎿᎨᏍᏛᎠᎺᎵᎦᎢᏧᏴᏢ ᏗᏜ ᎠᎹᏰᏟᎨᏆᏙᏯᏗᎧᎸᎬ ᏗᏜ ᏓᎶᏂᎨᏍᏛᏧᎦᎾᏮ ᏗᏜ ᏓᎶᏂᎨᏍᏛᏧᎦᎾᏮ ᏗᎧᎸᎬ ᏓᎶᏂᎨ" + + "ᏍᏛᏧᎦᎾᏮ ᏗᏜ ᏳᎳᏛᎠᏍᏔᎴᏏᎠᎺᎳᏁᏏᎠᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂᏏᏯ ᎢᎬᎾᏕᎾᏆᎵᏂᏏᎠᏓᎶᎾᎨᏍᏛᎠᏰᏟ ᏓᎶ" + + "ᏂᎨᏍᏛᏭᏕᎵᎬ ᏗᏜ ᏓᎶᏂᎨᏍᏛᏳᎳᏛᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏛᏧᏴᏢ ᏗᏜ ᏳᎳᏛᏭᏕᎵᎬ ᏗᏜ ᏳᎳᏛᎳᏘᏂ ᎠᎹᏰᏟ", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0022, 0x002e, 0x0064, 0x0079, 0x0093, 0x009f, 0x00ae, + 0x00bd, 0x00c9, 0x00d8, 0x00ea, 0x0100, 0x010c, 0x0118, 0x0121, + 0x013d, 0x014c, 0x016c, 0x0178, 0x018a, 0x0199, 0x01a9, 0x01b8, + 0x01c7, 0x01d3, 0x01df, 0x01f8, 0x0201, 0x020a, 0x0216, 0x023e, + 0x0247, 0x025d, 0x0266, 0x027c, 0x0288, 0x0294, 0x029d, 0x02a6, + 0x02cb, 0x02e3, 0x0309, 0x0321, 0x032a, 0x034a, 0x0372, 0x0378, + 0x0384, 0x0396, 0x03a8, 0x03d0, 0x03e0, 0x03e6, 0x0405, 0x0411, + 0x0436, 0x0442, 0x044b, 0x0457, 0x046a, 0x0473, 0x047f, 0x048b, + // Entry 40 - 7F + 0x04a7, 0x04b6, 0x04cd, 0x04d9, 0x04e8, 0x04f4, 0x0511, 0x051d, + 0x052f, 0x053e, 0x055d, 0x055d, 0x056c, 0x0572, 0x0588, 0x059a, + 0x05b0, 0x05bc, 0x05c5, 0x05d1, 0x05da, 0x05e6, 0x05fc, 0x0605, + 0x060e, 0x061a, 0x0629, 0x0638, 0x0641, 0x064d, 0x0669, 0x0672, + 0x06c9, 0x06d5, 0x06db, 0x06f1, 0x06fa, 0x0759, 0x0799, 0x07a8, + 0x07b7, 0x07c0, 0x07cc, 0x07e5, 0x07f7, 0x0803, 0x080f, 0x083c, + 0x0848, 0x0875, 0x087e, 0x0887, 0x0899, 0x08a2, 0x08ab, 0x08b7, + 0x08c0, 0x08cc, 0x08d5, 0x08e4, 0x08f6, 0x0902, 0x090e, 0x0935, + // Entry 80 - BF + 0x0948, 0x095e, 0x096a, 0x0986, 0x0998, 0x09a1, 0x09ad, 0x09c3, + 0x09d8, 0x09e8, 0x09f4, 0x09fd, 0x0a0c, 0x0a1b, 0x0a27, 0x0a30, + 0x0a39, 0x0a42, 0x0a51, 0x0a63, 0x0a76, 0x0a88, 0x0aa1, 0x0ab0, + 0x0ab6, 0x0ac2, 0x0ad1, 0x0b1c, 0x0b49, 0x0b55, 0x0b61, 0x0b73, + 0x0b7c, 0x0b8b, 0x0b9a, 0x0ba3, 0x0bb2, 0x0bc1, 0x0bd0, 0x0bdf, + 0x0bf8, 0x0c01, 0x0c20, 0x0c2c, 0x0c38, 0x0c44, 0x0c4a, 0x0c53, + 0x0c5c, 0x0c62, 0x0c78, 0x0c81, 0x0c8a, 0x0c90, 0x0caf, 0x0cc6, + 0x0cd8, 0x0ce7, 0x0cf0, 0x0d17, 0x0d33, 0x0d46, 0x0d71, 0x0d7d, // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0d89, 0x0d98, 0x0da1, 0x0dba, 0x0dc9, 0x0dd5, 0x0dde, 0x0de7, + 0x0df3, 0x0e09, 0x0e25, 0x0e34, 0x0e3d, 0x0e49, 0x0e58, 0x0e6e, + 0x0e7d, 0x0ea7, 0x0eb6, 0x0ec9, 0x0ee2, 0x0eee, 0x0ef7, 0x0f03, + 0x0f19, 0x0f3a, 0x0f4f, 0x0f62, 0x0f6b, 0x0f7d, 0x0f97, 0x0fc7, + 0x0fcd, 0x1003, 0x1009, 0x1015, 0x1027, 0x1033, 0x1046, 0x105e, + 0x106d, 0x1076, 0x107c, 0x1099, 0x10a2, 0x10ae, 0x10bd, 0x10c9, + 0x10d5, 0x10f3, 0x10f3, 0x111c, 0x1125, 0x113a, 0x1153, 0x1190, + 0x119f, 0x11d2, 0x1200, 0x120f, 0x121e, 0x1238, 0x1241, 0x124a, // Entry 100 - 13F - 0x0000, 0x0006, + 0x1253, 0x125c, 0x1278, 0x1284, 0x1290, 0x12b8, 0x12c1, 0x12d0, + 0x12e6, 0x12ff, 0x130e, 0x1331, 0x1347, 0x136a, 0x138a, 0x13a3, + 0x13c6, 0x13d5, 0x13f2, 0x13fe, 0x1424, 0x144a, 0x1476, 0x1493, + 0x14a5, 0x14b4, 0x14f7, 0x1506, 0x1518, 0x1534, 0x155a, 0x1563, + 0x1580, 0x159a, 0x15b7, 0x15cd, }, }, - { // bez - "HuandolaHufalme dza HihalabuHuafuganistaniHuantigua na HubarubudaHuangui" + - "laHualbaniaHuameniaHuangolaHuajendinaHusamoa ya HumalekaniHuastliaHu" + - "austlaliaHualubaHuazabajaniHubosinia na HuhezegovinaHubabadosiHubang" + - "aladeshiHuubelgijiHubukinafasoHubulgariaHubahaleniHuburundiHubeniniH" + - "ubelmudaHubruneiHuboliviaHublaziliHubahamaHubutaniHubotiswanaHubelal" + - "usiHubelizeHukanadaIjamhuri ya Hidemokrasi ya HukongoIjamhuri ya Afr" + - "ika ya PagatiHukongoHuuswisiHukodivaaIfisima fya KookHuchileHukameru" + - "niHuchinaHukolombiaHukostarikaHukubaHukepuvedeHukuprosiIjamhuri ya C" + - "hekiHuujerumaniHujibutiHudenmakiHudominikaIjamhuri ya HudominikaHual" + - "jeliaHuekwadoHuestoniaHumisriHueritreaHuhispaniaHuuhabeshiHuufiniHuf" + - "ijiIfisima fya FalklandHumikronesiaHuufaransaHugaboniHuuingerezaHugr" + - "enadaHujojiaHugwiyana ya HuufaransaHughanaHujiblaltaHujinlandiHugamb" + - "iaHujineHugwadelupeHuginekwetaHuugilikiHugwatemalaHugwamHuginebisauH" + - "uguyanaHuhondulasiHukorasiaHuhaitiHuhungaliaHuindonesiaHuayalandiHui" + - "slaheliHuindiaUlubali lwa Hubahari ya Hindi lwa HuingerezaHuilakiHuu" + - "ajemiHuaislandiHuitaliaHujamaikaHuyolodaniHujapaniHukenyaHukiligizis" + - "taniHukambodiaHukilibatiHukomoroHusantakitzi na HunevisHukolea Kaska" + - "ziniHukolea KusiniHukuwaitiIfisima fya KaymanHukazakistaniHulaosiHul" + - "ebanoniHusantalusiaHulishenteniHusirilankaHulibeliaHulesotoHulitwani" + - "aHulasembagiHulativiaHulibiyaHumolokoHumonakoHumoldovaHubukiniIfisim" + - "a fya MarshalHumasedoniaHumaliHumyamaHumongoliaIfisima fya Mariana f" + - "ya HukaskaziniHumartinikiHumolitaniaHumontserratiHumaltaHumolisiHumo" + - "divuHumalawiHumeksikoHumalesiaHumusumbijiHunamibiaHunyukaledoniaHuni" + - "jeliIhisima sha NorfokHunijeliaHunikaragwaHuuholanziHunolweHunepaliH" + - "unauruHuniueHunyuzilandiHuomaniHupanamaHupeluHupolinesia ya Huufaran" + - "saHupapuaHufilipinoHupakistaniHupolandiHusantapieri na HumikeloniHup" + - "itkainiHupwetorikoUlubali lwa Magharibi nu Gaza wa HupalestinaHuulen" + - "oHupalauHupalagwaiHukataliHuliyunioniHulomaniaHuulusiHulwandaHusaudi" + - "Ifisima fya SolomonHushelisheliHusudaniHuuswidiHusingapooHusantahele" + - "naHusloveniaHuslovakiaHusiela LioniHusamalinoHusenegaliHusomaliaHusu" + - "rinamuHusaotome na HuprinsipeHuelsavadoHusiliaHuuswaziIfisima fya Tu" + - "rki na KaikoHuchadiHutogoHutailandiHutajikistaniHutokelauHutimori ya" + - " MasharikiHuuturukimenistaniHutunisiaHutongaHuuturukiHutrinad na Hut" + - "obagoHutuvaluHutaiwaniHutanzaniaHuukrainiHuugandaHumalekaniHuulugwai" + - "HuuzibekistaniHuvatikaniHusantavisenti na HugrenadiniHuvenezuelaIfis" + - "ima fya Virgin fya HuingerezaIfisima fya Virgin fya HumelekaniHuviet" + - "inamuHuvanuatuHuwalis na HufutunaHusamoaHuyemeniHumayotteHuafrika iy" + - "a HukusiniHuzambiaHuzimbabwe", - []uint16{ // 259 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x001c, 0x002a, 0x0041, 0x004a, 0x0053, - 0x005b, 0x0063, 0x0063, 0x006d, 0x0082, 0x008a, 0x0095, 0x009c, - 0x009c, 0x00a7, 0x00c0, 0x00ca, 0x00d8, 0x00e2, 0x00ee, 0x00f8, - 0x0102, 0x010b, 0x0113, 0x0113, 0x011c, 0x0124, 0x012d, 0x012d, - 0x0136, 0x013e, 0x0146, 0x0146, 0x0151, 0x015b, 0x0163, 0x016b, - 0x016b, 0x018d, 0x01a9, 0x01b0, 0x01b8, 0x01c1, 0x01d1, 0x01d8, - 0x01e2, 0x01e9, 0x01f3, 0x01f3, 0x01fe, 0x0204, 0x020e, 0x020e, - 0x020e, 0x0217, 0x0228, 0x0233, 0x0233, 0x023b, 0x0244, 0x024e, - // Entry 40 - 7F - 0x0264, 0x026d, 0x026d, 0x0275, 0x027e, 0x0285, 0x0285, 0x028e, - 0x0298, 0x02a2, 0x02a2, 0x02a9, 0x02af, 0x02c3, 0x02cf, 0x02cf, - 0x02d9, 0x02e1, 0x02ec, 0x02f5, 0x02fc, 0x0313, 0x0313, 0x031a, - 0x0324, 0x032e, 0x0336, 0x033c, 0x0347, 0x0352, 0x035b, 0x035b, - 0x0366, 0x036c, 0x0377, 0x037f, 0x037f, 0x037f, 0x038a, 0x0393, - 0x039a, 0x03a4, 0x03a4, 0x03af, 0x03b9, 0x03c3, 0x03c3, 0x03ca, - 0x03f6, 0x03fd, 0x0405, 0x040f, 0x0417, 0x0417, 0x0420, 0x042a, - 0x0432, 0x0439, 0x0448, 0x0452, 0x045c, 0x0464, 0x047b, 0x048c, - // Entry 80 - BF - 0x049a, 0x04a3, 0x04b5, 0x04c2, 0x04c9, 0x04d3, 0x04df, 0x04eb, - 0x04f6, 0x04ff, 0x0507, 0x0511, 0x051c, 0x0525, 0x052d, 0x0535, - 0x053d, 0x0546, 0x0546, 0x0546, 0x054e, 0x0561, 0x056c, 0x0572, - 0x0579, 0x0583, 0x0583, 0x05a6, 0x05b1, 0x05bc, 0x05c9, 0x05d0, - 0x05d8, 0x05e0, 0x05e8, 0x05f1, 0x05fa, 0x0605, 0x060e, 0x061c, - 0x0624, 0x0636, 0x063f, 0x064a, 0x0654, 0x065b, 0x0663, 0x066a, - 0x0670, 0x067c, 0x0683, 0x068b, 0x0691, 0x06aa, 0x06b1, 0x06bb, - 0x06c6, 0x06cf, 0x06e9, 0x06f3, 0x06fe, 0x072a, 0x0731, 0x0738, - // Entry C0 - FF - 0x0742, 0x074a, 0x074a, 0x0755, 0x075e, 0x075e, 0x0765, 0x076d, - 0x0774, 0x0787, 0x0793, 0x079b, 0x07a3, 0x07ad, 0x07ba, 0x07c4, - 0x07c4, 0x07ce, 0x07db, 0x07e5, 0x07ef, 0x07f8, 0x0802, 0x0802, - 0x0819, 0x0823, 0x0823, 0x082a, 0x0832, 0x0832, 0x084c, 0x0853, - 0x0853, 0x0859, 0x0863, 0x0870, 0x0879, 0x088e, 0x08a0, 0x08a9, - 0x08b0, 0x08b9, 0x08cd, 0x08d5, 0x08de, 0x08e8, 0x08f1, 0x08f9, - 0x08f9, 0x0903, 0x090c, 0x091a, 0x0924, 0x0941, 0x094c, 0x096d, - 0x098e, 0x0999, 0x09a2, 0x09b5, 0x09bc, 0x09bc, 0x09c4, 0x09cd, - // Entry 100 - 13F - 0x09e2, 0x09ea, 0x09f4, + { // ckb + "ئاندۆرامیرنشینە یەکگرتووە عەرەبییەکانئەفغانستانئانتیگوا و باربودائەڵبانی" + + "ائەرمەنستانئەنگۆلائانتارکتیکائارجەنتیناساموای ئەمەریکایینەمسائۆسترا" + + "لیائارووبائازەربایجانبۆسنیا و ھەرزەگۆڤیناباربادۆسبەنگلادیشبەلژیکبور" + + "کینافاسۆبولگاریابەحرەینبوروندیبنینبۆلیڤیابرازیلبەھامابووتانبۆتسوانا" + + "بیلاڕووسبەلیزکانەداکۆنگۆ کینشاساکۆماری ئەفریقای ناوەڕاستسویسراکۆتدی" + + "ڤوارشیلیکامیروونچینکۆلۆمبیاکۆستاریکاکووباکەیپڤەردقیبرسکۆماری چیکئەڵ" + + "مانیاجیبووتیدانمارکدۆمینیکائەلجەزایرئیکوادۆرمیسرئەریتریائیسپانیائەت" + + "یۆپیافینلاندفیجیمایکرۆنیزیافەڕەنساگابۆنشانشینی یەکگرتووگریناداگورجس" + + "تانغەناگرینلاندگامبیاگینێیۆنانگواتیمالاگوامگینێ بیساوگویاناھۆندوورا" + + "سکرۆواتیاھایتیمەجارستانئیندۆنیزیائیرلەندئیسرائیلھیندستانعێراقئێرانئ" + + "ایسلەندئیتاڵیجامایکائوردنژاپۆنقرغیزستانکەمبۆدیاکیریباسدوورگەکانی قە" + + "مەرسەینت کیتس و نیڤیسکۆریای باکوورکوەیتکازاخستانلاوسلوبنانسەینت لوو" + + "سیالیختنشتاینسریلانکالیبەریالەسۆتۆلیتوانایالوکسەمبورگلاتڤیالیبیامەغ" + + "ریبمۆناکۆمۆلدۆڤامۆنتینیگرۆماداگاسکاردوورگەکانی مارشاڵمالیمیانمارمەن" + + "گۆلیامۆریتانیاماڵتامالدیڤمالاویمەکسیکمالیزیامۆزامبیکنامیبیانیجەرنیک" + + "اراگواھۆڵەندانۆرویژنیپالنائوروونیوزیلاندعومانپاناماپیرووپاپوا گینێی" + + " نوێفلیپینپاکستانپۆڵەنداپورتوگالپالاوپاراگوایقەتەرڕۆمانیاسربیاڕووسیا" + + "ڕوانداعەرەبستانی سەعوودیدوورگەکانی سلێمانسیشێلسوودانسویدسینگاپورسلۆ" + + "ڤێنیاسلۆڤاکیاسیەرالیۆنسان مارینۆسینیگالسۆمالیاسورینامساوتۆمێ و پرین" + + "سیپیئێلسالڤادۆرسووریاسوازیلاندچادتۆگۆتایلەندتاجیکستانتورکمانستانتوو" + + "نستۆنگاتورکیاترینیداد و تۆباگوتووڤالووتایوانتانزانیائۆکرانیائوگاندا" + + "ئوروگوایئوزبەکستانڤاتیکانسەینت ڤینسەنت و گرینادینزڤیەتنامڤانوواتووس" + + "اموایەمەنئەفریقای باشوورزامبیازیمبابویئەورووپای باشووریئاسیای ناوەن" + + "دیئاسیای ڕۆژاوا", + []uint16{ // 287 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x000e, 0x0048, 0x005c, 0x007e, 0x007e, 0x008e, + 0x00a2, 0x00b0, 0x00c6, 0x00da, 0x00fb, 0x0105, 0x0117, 0x0125, + 0x0125, 0x013b, 0x0161, 0x0171, 0x0183, 0x018f, 0x01a5, 0x01b5, + 0x01c3, 0x01d1, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e7, 0x01e7, + 0x01f3, 0x01ff, 0x020b, 0x020b, 0x021b, 0x022b, 0x0235, 0x0241, + 0x0241, 0x025a, 0x0288, 0x0288, 0x0294, 0x02a6, 0x02a6, 0x02ae, + 0x02be, 0x02c4, 0x02d4, 0x02d4, 0x02e6, 0x02f0, 0x0300, 0x0300, + 0x0300, 0x030a, 0x031d, 0x032d, 0x032d, 0x033b, 0x0349, 0x0359, + // Entry 40 - 7F + 0x0359, 0x036b, 0x036b, 0x037b, 0x037b, 0x0383, 0x0383, 0x0393, + 0x03a3, 0x03b3, 0x03b3, 0x03b3, 0x03c1, 0x03c9, 0x03c9, 0x03df, + 0x03df, 0x03ed, 0x03f7, 0x0416, 0x0424, 0x0434, 0x0434, 0x0434, + 0x043c, 0x043c, 0x044c, 0x0458, 0x0460, 0x0460, 0x0460, 0x046a, + 0x046a, 0x047c, 0x0484, 0x0497, 0x04a3, 0x04a3, 0x04a3, 0x04b5, + 0x04c5, 0x04cf, 0x04e1, 0x04e1, 0x04f5, 0x0503, 0x0513, 0x0513, + 0x0523, 0x0523, 0x052d, 0x0537, 0x0547, 0x0553, 0x0553, 0x0561, + 0x056b, 0x0575, 0x0575, 0x0587, 0x0597, 0x05a5, 0x05c4, 0x05e5, + // Entry 80 - BF + 0x05fe, 0x05fe, 0x0608, 0x0608, 0x061a, 0x0622, 0x062e, 0x0645, + 0x0659, 0x0669, 0x0677, 0x0683, 0x0695, 0x06a9, 0x06b5, 0x06bf, + 0x06cb, 0x06d7, 0x06e5, 0x06f9, 0x06f9, 0x070d, 0x072e, 0x072e, + 0x0736, 0x0744, 0x0754, 0x0754, 0x0754, 0x0754, 0x0766, 0x0766, + 0x0770, 0x0770, 0x077c, 0x0788, 0x0794, 0x07a2, 0x07b2, 0x07c0, + 0x07c0, 0x07ca, 0x07ca, 0x07ca, 0x07dc, 0x07ea, 0x07f6, 0x0800, + 0x080e, 0x080e, 0x0820, 0x082a, 0x0836, 0x0840, 0x0840, 0x085c, + 0x0868, 0x0876, 0x0884, 0x0884, 0x0884, 0x0884, 0x0884, 0x0894, + // Entry C0 - FF + 0x089e, 0x08ae, 0x08b8, 0x08b8, 0x08b8, 0x08c6, 0x08d0, 0x08dc, + 0x08e8, 0x090b, 0x092c, 0x0936, 0x0942, 0x094a, 0x095a, 0x095a, + 0x096a, 0x096a, 0x097a, 0x098c, 0x099f, 0x09ad, 0x09bb, 0x09c9, + 0x09c9, 0x09eb, 0x0a01, 0x0a01, 0x0a0d, 0x0a1f, 0x0a1f, 0x0a1f, + 0x0a25, 0x0a25, 0x0a2d, 0x0a3b, 0x0a4d, 0x0a4d, 0x0a4d, 0x0a63, + 0x0a6d, 0x0a77, 0x0a83, 0x0aa3, 0x0ab3, 0x0abf, 0x0acf, 0x0adf, + 0x0aed, 0x0aed, 0x0aed, 0x0aed, 0x0afd, 0x0b11, 0x0b1f, 0x0b4e, + 0x0b4e, 0x0b4e, 0x0b4e, 0x0b5c, 0x0b6e, 0x0b6e, 0x0b78, 0x0b78, + // Entry 100 - 13F + 0x0b82, 0x0b82, 0x0b9f, 0x0bab, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, + 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, + 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bdc, + 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bf7, 0x0c10, }, }, - { // bg - bgRegionStr, - bgRegionIdx, + { // cs + csRegionStr, + csRegionIdx, }, - { // bm - "AndɔrArabu mara kafoliAfiganistaŋAntiga-ni-BarbudaAngiyaAlibaniArimeniAn" + - "golaArizantinSamowa amerikaniOtirisiOsitiraliArubaAzɛrbayjaŋBozni-Ɛr" + - "izigoviniBarbadiBɛngiladɛsiBɛlizikiBurukina FasoBuligariBareyiniBuru" + - "ndiBenɛnBermudiBurinɛyiBoliviBereziliBahamasiButaŋBɔtisiwanaBelarusi" + - "BeliziKanadaKongo ka republiki demɔkratikiSantarafirikiKongoSuwisiKo" + - "diwariKuki GunSiliKameruniSiniwajamanaKolombiKɔsitarikaKubaCapivɛrdi" + - "CipriCeki republikiAlimaɲiJibutiDanemarkiDɔminikiDɔmimiki republikiA" + - "lizeriEkwatɔrEsetoniEziputiEritereEsipaɲiEtiopiFinilandiFijiMaluwini" + - " GunMikironesiFaransiGabɔŋAngilɛtɛriGranadiZeyɔrziFaransi ka gwiyani" + - "GanaZibralitariGɔrɔhenelandiGanbiGineGwadelupGine ekwatɔriGɛrɛsiGwat" + - "emalaGwamGine BisawoGwiyanaHɔndirasiKroasiAyitiHɔngriƐndoneziIriland" + - "iIsirayeliƐndujamanaAngilɛ ka ɛndu dugukoloIrakiIraŋIsilandiItaliZam" + - "ayikiZɔrdaniZapɔnKeniyaKirigizisitaŋKambojiKiribatiKomɔriKristɔfo-Se" + - "nu-ni-ƝevɛsKɛɲɛka KoreWorodugu KoreKowɛtiBama GunKazakistaŋLayosiLib" + - "aŋLusi-SenuLisɛnsitayiniSirilankaLiberiyaLesotoLituyaniLikisanburuLe" + - "toniLibiMarɔkuMonakoMolidaviMadagasikariMarisali GunMacedɔniMaliMyan" + - "imariMoŋoliKɛɲɛka Mariyani GunMaritinikiMɔritaniMoŋseraMaltiMorisiMa" + - "ldiviMalawiMeksikiMalɛziMozanbikiNamibiKaledoni KouraNizɛriNɔrofolik" + - "i GunNizeriyaNikaragwaPeyibaNɔriwɛziNepaliNawuruNyuweZelandi KouraOm" + - "aŋPanamaPeruFaransi ka polineziPapuwasi-Gine-KouraFilipiniPakisitaŋP" + - "oloɲiPiyɛri-Senu-ni-MikelɔŋPitikariniPɔrotorikoPalesitiniPɔritigaliP" + - "alawuParaguwayiKatariReyuɲɔŋRumaniIrisiRuwandaArabiya SawudiyaSalomo" + - " GunSesɛliSudaŋSuwɛdiSɛngapuriƐlɛni SenuSloveniSlowakiSiyera LewɔniM" + - "arini-SenuSenegaliSomaliSurinamiSawo Tome-ni-PrinicipeSalivadɔrSiriS" + - "wazilandiTuriki Gun ni KayikiCadiTogoTayilandiTajikisitaniTokeloKɔrɔ" + - "n TimɔrTurikimenisitaniTuniziTongaTurikiTrinite-ni-TobagoTuvaluTayiw" + - "aniTanzaniUkɛrɛniUgandaAmerikiUrugwayiUzebekisitaniVatikaŋVinisɛn-Se" + - "nu-ni-GrenadiniVenezuwelaAngilɛ ka Sungurunnin GunAmeriki ka Sunguru" + - "nnin GunWiyɛtinamuVanuwatuWalisi-ni-FutunaSamowaYemɛniMayotiWorodugu" + - " AfrikiZanbiZimbabuwe", - []uint16{ // 259 elements + { // cy + "Ynys AscensionAndorraEmiradau Arabaidd UnedigAfghanistanAntigua a Barbud" + + "aAnguillaAlbaniaArmeniaAngolaAntarcticaYr ArianninSamoa AmericaAwstr" + + "iaAwstraliaArubaYnysoedd ÅlandAzerbaijanBosnia a HercegovinaBarbados" + + "BangladeshGwlad BelgBurkina FasoBwlgariaBahrainBurundiBeninSaint Bar" + + "thélemyBermudaBruneiBolifiaAntilles yr IseldiroeddBrasilY BahamasBhu" + + "tanYnys BouvetBotswanaBelarwsBelizeCanadaYnysoedd Cocos (Keeling)Y C" + + "ongo - KinshasaGweriniaeth Canolbarth AffricaY Congo - BrazzavilleY " + + "SwistirCôte d’IvoireYnysoedd CookChileCamerŵnTsieinaColombiaYnys Cli" + + "ppertonCosta RicaCiwbaCabo VerdeCuraçaoYnys y NadoligCyprusTsieciaYr" + + " AlmaenDiego GarciaDjiboutiDenmarcDominicaGweriniaeth DominicaAlgeri" + + "aCeuta a MelillaEcuadorEstoniaYr AifftGorllewin SaharaEritreaSbaenEt" + + "hiopiaYr Undeb EwropeaiddY FfindirFijiYnysoedd y Falkland/MalvinasMi" + + "cronesiaYnysoedd FfaroFfraincGabonY Deyrnas UnedigGrenadaGeorgiaGuya" + + "ne FfrengigYnys y GarnGhanaGibraltarYr Ynys LasGambiaGuinéeGuadeloup" + + "eGuinea GyhydeddolGwlad GroegDe Georgia ac Ynysoedd Sandwich y DeGua" + + "temalaGuamGuiné-BissauGuyanaHong Kong RhGA TsieinaYnys Heard ac Ynys" + + "oedd McDonaldHondurasCroatiaHaitiHwngariYr Ynysoedd DedwyddIndonesia" + + "IwerddonIsraelYnys ManawIndiaTiriogaeth Brydeinig Cefnfor IndiaIracI" + + "ranGwlad yr IâYr EidalJerseyJamaicaGwlad IorddonenJapanKenyaKyrgyzst" + + "anCambodiaKiribatiComorosSaint Kitts a NevisGogledd KoreaDe KoreaKuw" + + "aitYnysoedd CaymanKazakstanLaosLibanusSaint LuciaLiechtensteinSri La" + + "nkaLiberiaLesothoLithuaniaLwcsembwrgLatfiaLibyaMorocoMonacoMoldofaMo" + + "ntenegroSaint MartinMadagascarYnysoedd MarshallMacedoniaMaliMyanmar " + + "(Burma)MongoliaMacau RhGA TsieinaYnysoedd Gogledd MarianaMartiniqueM" + + "auritaniaMontserratMaltaMauritiusY MaldivesMalawiMecsicoMalaysiaMoza" + + "mbiqueNamibiaCaledonia NewyddNigerYnys NorfolkNigeriaNicaraguaYr Ise" + + "ldiroeddNorwyNepalNauruNiueSeland NewyddOmanPanamaPeriwPolynesia Ffr" + + "engigPapua Guinea NewyddY PhilipinauPakistanGwlad PwylSaint-Pierre-e" + + "t-MiquelonYnysoedd PitcairnPuerto RicoTiriogaethau PalesteinaiddPort" + + "iwgalPalauParaguayQatarOceania BellennigRéunionRwmaniaSerbiaRwsiaRwa" + + "ndaSaudi ArabiaYnysoedd SolomonSeychellesSwdanSwedenSingaporeSaint H" + + "elenaSlofeniaSvalbard a Jan MayenSlofaciaSierra LeoneSan MarinoSeneg" + + "alSomaliaSurinameDe SwdanSão Tomé a PríncipeEl SalvadorSint MaartenS" + + "yriaGwlad SwaziTristan da CunhaYnysoedd Turks a CaicosTchadTiroedd D" + + "eheuol ac Antarctig FfraincTogoGwlad ThaiTajikistanTokelauTimor-Lest" + + "eTurkmenistanTunisiaTongaTwrciTrinidad a TobagoTuvaluTaiwanTanzaniaW" + + "cráinUgandaYnysoedd Pellennig UDACenhedloedd UnedigYr Unol Daleithia" + + "uUruguayUzbekistanY FaticanSaint Vincent a’r GrenadinesVenezuelaYnys" + + "oedd Gwyryf PrydainYnysoedd Gwyryf yr Unol DaleithiauFietnamVanuatuW" + + "allis a FutunaSamoaKosovoYemenMayotteDe AffricaZambiaZimbabweRhanbar" + + "th AnhysbysY BydAffricaGogledd AmericaDe AmericaOceaniaGorllewin Aff" + + "ricaCanolbarth AmericaDwyrain AffricaGogledd AffricaCanol AffricaDeh" + + "eudir AffricaYr AmerigAmerica i’r Gogledd o FecsicoY CaribîDwyrain A" + + "siaDe AsiaDe-Ddwyrain AsiaDe EwropAwstralasiaMelanesiaRhanbarth Micr" + + "onesiaPolynesiaAsiaCanol AsiaGorllewin AsiaEwropDwyrain EwropGogledd" + + " EwropGorllewin EwropAmerica Ladin", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0034, 0x003a, 0x0041, - 0x0048, 0x004e, 0x004e, 0x0057, 0x0067, 0x006e, 0x0077, 0x007c, - 0x007c, 0x0088, 0x009a, 0x00a1, 0x00ae, 0x00b7, 0x00c4, 0x00cc, - 0x00d4, 0x00db, 0x00e1, 0x00e1, 0x00e8, 0x00f1, 0x00f7, 0x00f7, - 0x00ff, 0x0107, 0x010d, 0x010d, 0x0118, 0x0120, 0x0126, 0x012c, - 0x012c, 0x014b, 0x0158, 0x015d, 0x0163, 0x016b, 0x0173, 0x0177, - 0x017f, 0x018b, 0x0192, 0x0192, 0x019d, 0x01a1, 0x01ab, 0x01ab, - 0x01ab, 0x01b0, 0x01be, 0x01c6, 0x01c6, 0x01cc, 0x01d5, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x0200, 0x0207, 0x020e, 0x020e, 0x0215, - 0x021d, 0x0223, 0x0223, 0x022c, 0x0230, 0x023c, 0x0246, 0x0246, - 0x024d, 0x0254, 0x0260, 0x0267, 0x026f, 0x0281, 0x0281, 0x0285, - 0x0290, 0x029f, 0x02a4, 0x02a8, 0x02b0, 0x02be, 0x02c6, 0x02c6, - 0x02cf, 0x02d3, 0x02de, 0x02e5, 0x02e5, 0x02e5, 0x02ef, 0x02f5, - 0x02fa, 0x0301, 0x0301, 0x030a, 0x0312, 0x031b, 0x031b, 0x0326, - 0x033f, 0x0344, 0x0349, 0x0351, 0x0356, 0x0356, 0x035e, 0x0366, - 0x036c, 0x0372, 0x0380, 0x0387, 0x038f, 0x0396, 0x03af, 0x03bd, - // Entry 80 - BF - 0x03ca, 0x03d1, 0x03d9, 0x03e4, 0x03ea, 0x03f0, 0x03f9, 0x0407, - 0x0410, 0x0418, 0x041e, 0x0426, 0x0431, 0x0437, 0x043b, 0x0442, - 0x0448, 0x0450, 0x0450, 0x0450, 0x045c, 0x0468, 0x0471, 0x0475, - 0x047e, 0x0485, 0x0485, 0x049b, 0x04a5, 0x04ae, 0x04b6, 0x04bb, - 0x04c1, 0x04c8, 0x04ce, 0x04d5, 0x04dc, 0x04e5, 0x04eb, 0x04f9, - 0x0500, 0x050f, 0x0517, 0x0520, 0x0526, 0x0530, 0x0536, 0x053c, - 0x0541, 0x054e, 0x0553, 0x0559, 0x055d, 0x0570, 0x0583, 0x058b, - 0x0595, 0x059c, 0x05b5, 0x05bf, 0x05ca, 0x05d4, 0x05df, 0x05e5, - // Entry C0 - FF - 0x05ef, 0x05f5, 0x05f5, 0x05ff, 0x0605, 0x0605, 0x060a, 0x0611, - 0x0621, 0x062b, 0x0632, 0x0638, 0x063f, 0x0649, 0x0655, 0x065c, - 0x065c, 0x0663, 0x0671, 0x067c, 0x0684, 0x068a, 0x0692, 0x0692, - 0x06a8, 0x06b2, 0x06b2, 0x06b6, 0x06c0, 0x06c0, 0x06d4, 0x06d8, - 0x06d8, 0x06dc, 0x06e5, 0x06f1, 0x06f7, 0x0705, 0x0715, 0x071b, - 0x0720, 0x0726, 0x0737, 0x073d, 0x0745, 0x074c, 0x0755, 0x075b, - 0x075b, 0x0762, 0x076a, 0x0777, 0x077f, 0x0799, 0x07a3, 0x07bd, - 0x07d7, 0x07e2, 0x07ea, 0x07fa, 0x0800, 0x0800, 0x0807, 0x080d, - // Entry 100 - 13F - 0x081c, 0x0821, 0x082a, + 0x0000, 0x000e, 0x0015, 0x002d, 0x0038, 0x0049, 0x0051, 0x0058, + 0x005f, 0x0065, 0x006f, 0x007a, 0x0087, 0x008e, 0x0097, 0x009c, + 0x00ab, 0x00b5, 0x00c9, 0x00d1, 0x00db, 0x00e5, 0x00f1, 0x00f9, + 0x0100, 0x0107, 0x010c, 0x011d, 0x0124, 0x012a, 0x0131, 0x0148, + 0x014e, 0x0157, 0x015d, 0x0168, 0x0170, 0x0177, 0x017d, 0x0183, + 0x019b, 0x01ad, 0x01cb, 0x01e0, 0x01e9, 0x01f9, 0x0206, 0x020b, + 0x0213, 0x021a, 0x0222, 0x0231, 0x023b, 0x0240, 0x024a, 0x0252, + 0x0260, 0x0266, 0x026d, 0x0276, 0x0282, 0x028a, 0x0291, 0x0299, + // Entry 40 - 7F + 0x02ad, 0x02b4, 0x02c3, 0x02ca, 0x02d1, 0x02d9, 0x02e9, 0x02f0, + 0x02f5, 0x02fd, 0x0310, 0x0310, 0x0319, 0x031d, 0x0339, 0x0343, + 0x0351, 0x0358, 0x035d, 0x036d, 0x0374, 0x037b, 0x038a, 0x0395, + 0x039a, 0x03a3, 0x03ae, 0x03b4, 0x03bb, 0x03c5, 0x03d6, 0x03e1, + 0x0405, 0x040e, 0x0412, 0x041f, 0x0425, 0x043b, 0x045a, 0x0462, + 0x0469, 0x046e, 0x0475, 0x0488, 0x0491, 0x0499, 0x049f, 0x04a9, + 0x04ae, 0x04d0, 0x04d4, 0x04d8, 0x04e4, 0x04ec, 0x04f2, 0x04f9, + 0x0508, 0x050d, 0x0512, 0x051c, 0x0524, 0x052c, 0x0533, 0x0546, + // Entry 80 - BF + 0x0553, 0x055b, 0x0561, 0x0570, 0x0579, 0x057d, 0x0584, 0x058f, + 0x059c, 0x05a5, 0x05ac, 0x05b3, 0x05bc, 0x05c6, 0x05cc, 0x05d1, + 0x05d7, 0x05dd, 0x05e4, 0x05ee, 0x05fa, 0x0604, 0x0615, 0x061e, + 0x0622, 0x0631, 0x0639, 0x064b, 0x0663, 0x066d, 0x0677, 0x0681, + 0x0686, 0x068f, 0x0699, 0x069f, 0x06a6, 0x06ae, 0x06b8, 0x06bf, + 0x06cf, 0x06d4, 0x06e0, 0x06e7, 0x06f0, 0x06fe, 0x0703, 0x0708, + 0x070d, 0x0711, 0x071e, 0x0722, 0x0728, 0x072d, 0x073f, 0x0752, + 0x075e, 0x0766, 0x0770, 0x0788, 0x0799, 0x07a4, 0x07be, 0x07c7, + // Entry C0 - FF + 0x07cc, 0x07d4, 0x07d9, 0x07ea, 0x07f2, 0x07f9, 0x07ff, 0x0804, + 0x080a, 0x0816, 0x0826, 0x0830, 0x0835, 0x083b, 0x0844, 0x0850, + 0x0858, 0x086c, 0x0874, 0x0880, 0x088a, 0x0891, 0x0898, 0x08a0, + 0x08a8, 0x08be, 0x08c9, 0x08d5, 0x08da, 0x08e5, 0x08f5, 0x090c, + 0x0911, 0x0935, 0x0939, 0x0943, 0x094d, 0x0954, 0x095f, 0x096b, + 0x0972, 0x0977, 0x097c, 0x098d, 0x0993, 0x0999, 0x09a1, 0x09a8, + 0x09ae, 0x09c4, 0x09d6, 0x09e8, 0x09ef, 0x09f9, 0x0a02, 0x0a20, + 0x0a29, 0x0a40, 0x0a62, 0x0a69, 0x0a70, 0x0a7f, 0x0a84, 0x0a8a, + // Entry 100 - 13F + 0x0a8f, 0x0a96, 0x0aa0, 0x0aa6, 0x0aae, 0x0ac0, 0x0ac5, 0x0acc, + 0x0adb, 0x0ae5, 0x0aec, 0x0afd, 0x0b0f, 0x0b1e, 0x0b2d, 0x0b3a, + 0x0b4a, 0x0b53, 0x0b72, 0x0b7b, 0x0b87, 0x0b8e, 0x0b9e, 0x0ba6, + 0x0bb1, 0x0bba, 0x0bce, 0x0bd7, 0x0bdb, 0x0be5, 0x0bf3, 0x0bf8, + 0x0c05, 0x0c12, 0x0c21, 0x0c2e, }, }, - { // bn - bnRegionStr, - bnRegionIdx, + { // da + daRegionStr, + daRegionIdx, }, - { // bo - "རྒྱ་ནགའཇར་མན་དབྱིན་ཇི་རྒྱ་གར་ཨི་ཀྲར་ལི་ཉི་ཧོང་ལྷོ་ཀོ་རི་ཡ།བལ་ཡུལ་ཨུ་རུ་ས" + - "ུ་ཨ་མེ་རི་ཀ།མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུགའཛམ་གླིང་།", + { // dav + "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + + "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + + "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + + "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + + "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + + "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + + "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + + "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + + "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + + "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + + "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + + "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + + "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + + "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + + "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + + "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + + "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + + "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + + "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + + "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + + "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + + "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + + "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + + "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + + "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + + "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + + "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + + "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + + "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + + "yotteAfrika KusiniZambiaZimbabwe", []uint16{ // 261 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, + 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, + 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, + 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, + 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, + 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, + 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, + 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, + 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0075, 0x0075, 0x0075, 0x0075, - 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - // Entry 80 - BF - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, + 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, // Entry C0 - FF - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, // Entry 100 - 13F - 0x00fc, 0x00fc, 0x00fc, 0x015f, 0x017d, + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, - { // bo-IN - "ཨོཤི་ཡཱན་ན།", - []uint16{ // 265 elements + { // de + deRegionStr, + deRegionIdx, + }, + { // de-AT + "Svalbard und Jan Mayen", + []uint16{ // 210 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -29380,1498 +34072,1334 @@ var regionHeaders = [220]header{ // Entry C0 - FF 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, + }, + }, + { // de-CH + "BruneiBotswanaWeissrusslandKapverdenGrossbritannienÄusseres OzeanienSalo" + + "mon-InselnZimbabwe", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x000e, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0024, 0x0024, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, + // Entry 40 - 7F + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, + 0x0024, 0x0024, 0x0024, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + // Entry 80 - BF + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + // Entry C0 - FF + 0x0033, 0x0033, 0x0033, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, + // Entry 100 - 13F + 0x0053, 0x0053, 0x0053, 0x0053, 0x005b, + }, + }, + {}, // de-LU + { // dje + "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" + + "lbaaniArmeeniAngoolaArgentineAmeriki SamoaOtrišiOstraaliAruubaAzerba" + + "ayijaŋBosni nda HerzegovineBarbaadosBangladešiBelgiikiBurkina fasoBu" + + "lgaariBahareenBurundiBeniŋBermudaBruuneeBooliviBreezilBahamasBuutaŋB" + + "otswaanaBilorišiBeliiziKanaadaKongoo demookaratiki labooCentraafriki" + + " koyraKongooSwisuKudwarKuuk gungeyŠiiliKameruunŠiinKolombiKosta rika" + + "KuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuutiDanemarkDoominiki lab" + + "ooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEcioopiFinlanduFijiKalkan" + + " gungeyMikroneziFaransiGaabonAlbaasalaama MargantaGrenaadaGorgiFaran" + + "si GuyaanGaanaGibraltarGrinlandGambiGineGwadeluupGinee EkwatorialGre" + + "eceGwatemaalaGuamGine-BissoGuyaaneHondurasKrwaasiHaitiHungaariIndone" + + "eziIrlanduIsrayelIndu labooBritiši Indu teekoo laamaIraakIraanAysela" + + "ndItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstankamboogiKiribaatiKomoorS" + + "eŋ Kitts nda NevisGurma KooreeHawsa KooreeKuweetKayman gungeyKaazaks" + + "tanLaawosLubnaanSeŋ LussiaLiechtensteinSrilankaLiberiaLeesotoLituaan" + + "iLuxembourgLetooniLiibiMaarokMonakoMoldoviMadagascarMaršal gungeyMaa" + + "cedooniMaaliMaynamarMongooliMariana Gurma GungeyMartiniikiMooritaani" + + "MontserratMaltaMooris gungeyMaldiivuMalaawiMexikiMaleeziMozambikNaam" + + "ibiKaaledooni TaagaaNižerNorfolk GungooNaajiriiaNikaragwaHollanduNor" + + "veejNeepalNauruNiueZeelandu TaagaOmaanPanamaPeeruFaransi PolineeziPa" + + "pua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piyer nda MikelonPitikarin" + + "Porto RikoPalestine Dangay nda GaazaPortugaalPaluParaguweyKataarReen" + + "ioŋRumaaniIriši labooRwandaSaudiyaSolomon GungeySeešelSuudaŋSweedeSi" + + "ngapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan MarinoSenegalSomaaliSu" + + "rinaamSao Tome nda PrinsipeSalvador labooSuuriaSwazilandTurk nda Kay" + + "ikos GungeyCaaduTogoTaayilandTaažikistanTokelauTimoor hawsaTurkmenis" + + "taŋTuniziTongaTurkiTrinidad nda TobaagoTuvaluTaayiwanTanzaaniUkreenU" + + "gandaAmeriki Laabu MarganteyUruguweyUzbeekistanVaatikan LaamaSeŋvins" + + "aŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik Virgin Gung" + + "eyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa Afriki Labo" + + "oZambiZimbabwe", + []uint16{ // 261 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, + 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, + 0x0087, 0x0094, 0x00a9, 0x00b2, 0x00bd, 0x00c5, 0x00d1, 0x00d9, + 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f5, 0x00fc, 0x0103, 0x0103, + 0x010a, 0x0111, 0x0118, 0x0118, 0x0121, 0x012a, 0x0131, 0x0138, + 0x0138, 0x0152, 0x0164, 0x016a, 0x016f, 0x0175, 0x0180, 0x0186, + 0x018e, 0x0193, 0x019a, 0x019a, 0x01a4, 0x01a9, 0x01b7, 0x01b7, + 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01dd, + // Entry 40 - 7F + 0x01ec, 0x01f4, 0x01f4, 0x01fc, 0x0203, 0x0208, 0x0208, 0x020f, + 0x0217, 0x021e, 0x021e, 0x021e, 0x0226, 0x022a, 0x0237, 0x0240, + 0x0240, 0x0247, 0x024d, 0x0262, 0x026a, 0x026f, 0x027d, 0x027d, + 0x0282, 0x028b, 0x0293, 0x0298, 0x029c, 0x02a5, 0x02b5, 0x02bb, + 0x02bb, 0x02c5, 0x02c9, 0x02d3, 0x02da, 0x02da, 0x02da, 0x02e2, + 0x02e9, 0x02ee, 0x02f6, 0x02f6, 0x02ff, 0x0306, 0x030d, 0x030d, + 0x0317, 0x0331, 0x0336, 0x033b, 0x0343, 0x0349, 0x0349, 0x0351, + 0x0356, 0x035d, 0x0364, 0x036e, 0x0376, 0x037f, 0x0385, 0x0399, + // Entry 80 - BF + 0x03a5, 0x03b1, 0x03b7, 0x03c4, 0x03ce, 0x03d4, 0x03db, 0x03e6, + 0x03f3, 0x03fb, 0x0402, 0x0409, 0x0411, 0x041b, 0x0422, 0x0427, + 0x042d, 0x0433, 0x043a, 0x043a, 0x043a, 0x0444, 0x0452, 0x045c, + 0x0461, 0x0469, 0x0471, 0x0471, 0x0485, 0x048f, 0x0499, 0x04a3, + 0x04a8, 0x04b5, 0x04bd, 0x04c4, 0x04ca, 0x04d1, 0x04d9, 0x04e0, + 0x04f1, 0x04f7, 0x0505, 0x050e, 0x0517, 0x051f, 0x0526, 0x052c, + 0x0531, 0x0535, 0x0543, 0x0548, 0x054e, 0x0553, 0x0564, 0x0575, + 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b6, 0x05d0, 0x05d9, + // Entry C0 - FF + 0x05dd, 0x05e6, 0x05ec, 0x05ec, 0x05f4, 0x05fb, 0x05fb, 0x0607, + 0x060d, 0x0614, 0x0622, 0x0629, 0x0630, 0x0636, 0x063e, 0x0649, + 0x0651, 0x0651, 0x0659, 0x0663, 0x066d, 0x0674, 0x067b, 0x0683, + 0x0683, 0x0698, 0x06a6, 0x06a6, 0x06ac, 0x06b5, 0x06b5, 0x06cc, + 0x06d1, 0x06d1, 0x06d5, 0x06de, 0x06ea, 0x06f1, 0x06fd, 0x070a, + 0x0710, 0x0715, 0x071a, 0x072e, 0x0734, 0x073c, 0x0744, 0x074a, + 0x0750, 0x0750, 0x0750, 0x0767, 0x076f, 0x077a, 0x0788, 0x07a1, + 0x07ad, 0x07c3, 0x07d8, 0x07e0, 0x07e7, 0x07f8, 0x07fd, 0x07fd, + // Entry 100 - 13F + 0x0802, 0x0809, 0x081b, 0x0820, 0x0828, + }, + }, + { // dsb + "AscensionAndorraZjadnośone arabiske emiratyAfghanistanAntigua a BarbudaA" + + "nguillaAlbańskaArmeńskaAngolaAntarktisArgentinskaAmeriska SamoaAwstr" + + "iskaAwstralskaArubaÅlandAzerbajdžanBosniska a HercegowinaBarbadosBan" + + "gladešBelgiskaBurkina FasoBulgarskaBahrainBurundiBeninSt. Barthélemy" + + "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" + + "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" + + "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" + + "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" + + "ap VerdeCuraçaoGódowne kupyCypriskaČeska republikaNimskaDiego Garcia" + + "DžibutiDańskaDominikaDominikańska republikaAlgeriskaCeuta a MelillaE" + + "kwadorEstniskaEgyptojskaPódwjacorna SaharaEritrejaŠpańskaEtiopiskaEu" + + "ropska unijaFinskaFidžiFalklandske kupyMikroneziskaFäröjeFrancojskaG" + + "abunZjadnośone kralejstwoGrenadaGeorgiskaFrancojska GuyanaGuernseyGh" + + "anaGibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGri" + + "chiskaPódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupyGuatemal" + + "aGuamGineja-BissauGuyanaWósebna zastojnstwowa cona HongkongHeardowa " + + "kupa a McDonaldowe kupyHondurasChorwatskaHaitiHungorskaKanariske kup" + + "yIndoneziskaIrskaIsraelManIndiskaBritiski indiskooceaniski teritoriu" + + "mIrakIranIslandskaItalskaJerseyJamaikaJordaniskaJapańskaKeniaKirgizi" + + "stanKambodžaKiribatiKomorySt. Kitts a NevisPódpołnocna KorejaPódpołd" + + "njowa KorejaKuwaitKajmaniske kupyKazachstanLaosLibanonSt. LuciaLiech" + + "tensteinSri LankaLiberijaLesothoLitawskaLuxemburgskaLetiskaLibyskaMa" + + "rokkoMonacoMoldawskaCarna GóraSt. MartinMadagaskarMarshallowe kupyMa" + + "kedońskaMaliMyanmarMongolskaWósebna zastojnstwowa cona MacaoPódpołno" + + "cne MarianyMartiniqueMawretańskaMontserratMaltaMauritiusMalediwyMala" + + "wiMexikoMalajzijaMosambikNamibijaNowa KaledoniskaNigerNorfolkowa kup" + + "aNigerijaNikaraguaNižozemskaNorwegskaNepalNauruNiueNowoseelandskaOma" + + "nPanamaPeruFrancojska PolyneziskaPapua-NeuguineaFilipinyPakistanPóls" + + "kaSt. Pierre a MiquelonPitcairnowe kupyPuerto RicoPalestinski awtono" + + "mny teritoriumPortugalskaPalauParaguayKatarwenkowna OceaniskaRéunion" + + "RumuńskaSerbiskaRuskaRuandaSaudi-ArabiskaSalomonySeychelleSudanŠweds" + + "kaSingapurSt. HelenaSłowjeńskaSvalbard a Jan MayenSłowakskaSierra Le" + + "oneSan MarinoSenegalSomalijaSurinamskaPódpołdnjowy SudanSão Tomé a P" + + "ríncipeEl SalvadorSint MaartenSyriskaSwasiskaTristan da CunhaTurks a" + + " Caicos kupyČadFrancojski pódpołdnjowy a antarktiski teritoriumTogoT" + + "hailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTuneziskaTongaTurk" + + "ojskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUgandaAmeriska Oce" + + "aniskaZjadnośone staty AmerikiUruguayUzbekistanVatikańske městoSt. V" + + "incent a GrenadinyVenezuelaBritiske kněžniske kupyAmeriske kněžniske" + + " kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenMayottePódpołdnjow" + + "a Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfrikaPódpołno" + + "cna AmerikaPódpołdnjowa AmerikaOceaniskaPódwjacorna AfrikaSrjejźna A" + + "merikapódzajtšna Afrikapódpołnocna Afrikasrjejźna Afrikapódpołdnjowa" + + " AfrikaAmerikapódpołnocny ameriski kontinentKaribiskapódzajtšna Azij" + + "apódpołdnjowa Azijakrotkozajtšna Azijapódpołdnjowa EuropaAwstralazij" + + "aMelaneziskaMikroneziska (kupowy region)PolyneziskaAzijacentralna Az" + + "ijapódwjacorna AzijaEuropapódzajtšna Europapódpołnocna Europapódwjac" + + "orna EuropaŁatyńska Amerika", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0048, 0x0050, 0x0059, + 0x0062, 0x0068, 0x0071, 0x007c, 0x008a, 0x0093, 0x009d, 0x00a2, + 0x00a8, 0x00b4, 0x00ca, 0x00d2, 0x00dc, 0x00e4, 0x00f0, 0x00f9, + 0x0100, 0x0107, 0x010c, 0x011b, 0x0122, 0x0128, 0x0131, 0x0146, + 0x014f, 0x0155, 0x015b, 0x0169, 0x0171, 0x017c, 0x0182, 0x0188, + 0x0195, 0x01a3, 0x01bd, 0x01ce, 0x01d8, 0x01e8, 0x01f4, 0x01fb, + 0x0202, 0x0207, 0x0211, 0x0223, 0x022d, 0x0231, 0x023a, 0x0242, + 0x024f, 0x0257, 0x0267, 0x026d, 0x0279, 0x0281, 0x0288, 0x0290, + // Entry 40 - 7F + 0x02a7, 0x02b0, 0x02bf, 0x02c6, 0x02ce, 0x02d8, 0x02eb, 0x02f3, + 0x02fc, 0x0305, 0x0313, 0x0313, 0x0319, 0x031f, 0x032f, 0x033b, + 0x0343, 0x034d, 0x0352, 0x0368, 0x036f, 0x0378, 0x0389, 0x0391, + 0x0396, 0x039f, 0x03ab, 0x03b2, 0x03b8, 0x03c2, 0x03d5, 0x03de, + 0x0418, 0x0421, 0x0425, 0x0432, 0x0438, 0x045c, 0x047c, 0x0484, + 0x048e, 0x0493, 0x049c, 0x04aa, 0x04b5, 0x04ba, 0x04c0, 0x04c3, + 0x04ca, 0x04ee, 0x04f2, 0x04f6, 0x04ff, 0x0506, 0x050c, 0x0513, + 0x051d, 0x0526, 0x052b, 0x0536, 0x053f, 0x0547, 0x054d, 0x055e, + // Entry 80 - BF + 0x0572, 0x0587, 0x058d, 0x059c, 0x05a6, 0x05aa, 0x05b1, 0x05ba, + 0x05c7, 0x05d0, 0x05d8, 0x05df, 0x05e7, 0x05f3, 0x05fa, 0x0601, + 0x0608, 0x060e, 0x0617, 0x0622, 0x062c, 0x0636, 0x0646, 0x0651, + 0x0655, 0x065c, 0x0665, 0x0686, 0x069b, 0x06a5, 0x06b1, 0x06bb, + 0x06c0, 0x06c9, 0x06d1, 0x06d7, 0x06dd, 0x06e6, 0x06ee, 0x06f6, + 0x0706, 0x070b, 0x071a, 0x0722, 0x072b, 0x0736, 0x073f, 0x0744, + 0x0749, 0x074d, 0x075b, 0x075f, 0x0765, 0x0769, 0x077f, 0x078e, + 0x0796, 0x079e, 0x07a5, 0x07ba, 0x07ca, 0x07d5, 0x07f5, 0x0800, + // Entry C0 - FF + 0x0805, 0x080d, 0x0812, 0x0824, 0x082c, 0x0835, 0x083d, 0x0842, + 0x0848, 0x0856, 0x085e, 0x0867, 0x086c, 0x0874, 0x087c, 0x0886, + 0x0892, 0x08a6, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08df, + 0x08f3, 0x0909, 0x0914, 0x0920, 0x0927, 0x092f, 0x093f, 0x0952, + 0x0956, 0x0988, 0x098c, 0x0997, 0x09a3, 0x09aa, 0x09b5, 0x09c0, + 0x09c9, 0x09ce, 0x09d7, 0x09e8, 0x09ee, 0x09f4, 0x09fd, 0x0a04, + 0x0a0a, 0x0a1c, 0x0a1c, 0x0a35, 0x0a3c, 0x0a46, 0x0a58, 0x0a6f, + 0x0a78, 0x0a91, 0x0aaa, 0x0ab1, 0x0ab8, 0x0ac7, 0x0acc, 0x0ad2, + // Entry 100 - 13F + 0x0ad7, 0x0ade, 0x0aff, 0x0b06, 0x0b0e, 0x0b1d, 0x0b22, 0x0b28, + 0x0b3d, 0x0b53, 0x0b5c, 0x0b6f, 0x0b80, 0x0b93, 0x0ba7, 0x0bb7, + 0x0bcc, 0x0bd3, 0x0bf3, 0x0bfc, 0x0c0e, 0x0c22, 0x0c36, 0x0c4b, + 0x0c57, 0x0c62, 0x0c7e, 0x0c89, 0x0c8e, 0x0c9d, 0x0caf, 0x0cb5, + 0x0cc8, 0x0cdc, 0x0cef, 0x0d01, + }, + }, + { // dua + "Cameroun", + []uint16{ // 49 elements 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0021, + 0x0008, }, }, - { // br - "Enez AscensionAndorraEmirelezhioù Arab UnanetAfghanistanAntigua ha Barbu" + - "daAnguillaAlbaniaArmeniaAngolaAntarktikaArcʼhantinaSamoa AmerikanAos" + - "triaAostraliaArubaInizi ÅlandAzerbaidjanBosnia ha HerzegovinaBarbado" + - "sBangladeshBelgiaBurkina FasoBulgariaBahreinBurundiBeninSaint Barthé" + - "lemyBermudaBruneiBoliviaKarib NederlandatBrazilBahamasBhoutanEnez Bo" + - "uvetBotswanaBelarusBelizeKanadaInizi KokozKongo - KinshasaRepublik K" + - "reizafrikanKongo - BrazzavilleSuisAod an OlifantInizi CookChileKamer" + - "ounSinaKolombiaEnez ClippertonCosta RicaKubaKab-GlasCuraçaoEnez Chri" + - "stmasKiprenezRepublik TchekAlamagnDiego GarciaDjiboutiDanmarkDominic" + - "aRepublik DominikanAljeriaCeuta ha MelillaEcuadorEstoniaEgiptSahara " + - "ar CʼhornôgEritreaSpagnEtiopiaUnaniezh EuropaFinlandFidjiInizi Falkl" + - "andMikroneziaInizi FaeroFrañsGabonRouantelezh-UnanetGrenadaJorjiaGwi" + - "ana cʼhallGwernenezGhanaJibraltarGreunlandGambiaGineaGwadeloupGinea " + - "ar CʼhehederGresInizi Georgia ar Su hag Inizi Sandwich ar SuGuatemal" + - "aGuamGinea-BissauGuyanaHong Kong RMD SinaInizi Heard ha McDonaldHond" + - "urasKroatiaHaitiHungariaInizi KanariezIndoneziaIwerzhonIsraelEnez Va" + - "navIndiaTiriad breizhveurat Meurvor IndezIraqIranIslandItaliaJerzene" + - "zJamaikaJordaniaJapanKenyaKyrgyzstanKambodjaKiribatiKomorezSaint Kit" + - "ts ha NevisKorea an NorzhKorea ar SuKoweitInizi CaymanKazakstanLaosL" + - "ibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLuksembou" + - "rgLatviaLibiaMarokoMonacoMoldovaMontenegroSaint MartinMadagaskarIniz" + - "i MarshallMakedoniaMaliMyanmar (Birmania)MongoliaMacau RMD SinaInizi" + - " Mariana an NorzhMartinikMaouritaniaMontserratMaltaMorisMaldivezMala" + - "wiMecʼhikoMalaysiaMozambikNamibiaKaledonia NevezNigerEnez NorfolkNig" + - "eriaNicaraguaIzelvroioùNorvegiaNepalNauruNiueZeland-NevezOmanPanamáP" + - "erouPolinezia CʼhallPapoua Ginea-NevezFilipinezPakistanPoloniaSant-P" + - "êr-ha-MikelonEnez PitcairnPuerto RicoTiriadoù PalestinaPortugalPala" + - "uParaguayQatarOseania diabellAr ReünionRoumaniaSerbiaRusiaRwandaArab" + - "ia SaoudatInizi SalomonSechelezSoudanSvedenSingapourSaint-HelenaSlov" + - "eniaSvalbardSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSusou" + - "danSão Tomé ha PríncipeSalvadorSint MaartenSiriaSwazilandTristan da " + - "CunhaInizi Turks ha CaicosTchadDouaroù aostral FrañsTogoThailandTadj" + - "ikistanTokelauTimor-LesteTurkmenistanTuniziaTongaTurkiaTrinidad ha T" + - "obagoTuvaluTaiwanTanzaniaUkrainaOugandaInizi diabell ar Stadoù-Unane" + - "tStadoù-UnanetUruguayOuzbekistanVatikanSant Visant hag ar Grenadinez" + - "VenezuelaInizi Gwercʼh Breizh-VeurInizi Gwercʼh ar Stadoù-UnanetViêt" + - " NamVanuatuWallis ha FutunaSamoaKosovoYemenMayotteSuafrikaZambiaZimb" + - "abweRannved dianavBedAfrikaNorzhamerikaSuamerikaOseaniaAfrika ar Cʼh" + - "ornôgKreizamerikaAfrika ar ReterAfrika an NorzhAfrika ar CʼhreizAfri" + - "ka ar SuAmerikaoùAmerika an NorzhKaribAzia ar ReterAzia ar SuAzia ar" + - " GevredEuropa ar SuAostralaziaMelaneziaRannved MikroneziaPolineziaAz" + - "iaAzia ar CʼhreizAzia ar CʼhornôgEuropaEuropa ar ReterEuropa an Norz" + - "hEuropa ar CʼhornôgAmerika Latin", - []uint16{ // 290 elements + { // dyo + "AndorraAfganistanAntigua di BarbudaAngiiyaAlbaniArmeniAngolaArsantinSamo" + + "a yati AmerikOtrisOstraaliaArubaAserbaysanBosni di HersegovinBarbadB" + + "angladesBelsikBurukiina FasoBulgariBahraynBurundiBeneBermudBuruneyBo" + + "liiviBresilBahamaButanBoswanaBelarusBeliisKanadaMofam demokratik mat" + + "i KongoKongoKoddiwarCiliKamerunSiinKolombiKosta RikaKubaKap VerSiipr" + + "Mofam mati CekAlmaañJibutiDanmarkDominikaMofam mati DominikAlseriEku" + + "adorEstoniEsíptEritreeEspaañEcoopiFinlandFijiFransGabonGrenadaSeorsi" + + "GaanaSipraltaarGreenlandGambiGinéGuwadalupGresGuatemalaGuamGiné Bisa" + + "auGiyanOndurasKroasiAytiOŋriEndonesiIrlandIsraelEndIrakIranIislandIt" + + "aliSamaikSapoŋKeniyaKambojKomorSaŋ LusiaSiri LankaLiberiaMadagaskaar" + + "MaliEcinkey yati NoorfokAbari SaudiSudanSingapurSloveniSlovakiSerra " + + "LeonSenegalSomaliSalvadoorCadTogoTailand", + []uint16{ // 228 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0023, 0x002a, 0x0030, + 0x0036, 0x003c, 0x003c, 0x0044, 0x0055, 0x005a, 0x0063, 0x0068, + 0x0068, 0x0072, 0x0085, 0x008b, 0x0094, 0x009a, 0x00a8, 0x00af, + 0x00b6, 0x00bd, 0x00c1, 0x00c1, 0x00c7, 0x00ce, 0x00d5, 0x00d5, + 0x00db, 0x00e1, 0x00e6, 0x00e6, 0x00ed, 0x00f4, 0x00fa, 0x0100, + 0x0100, 0x011b, 0x011b, 0x0120, 0x0120, 0x0128, 0x0128, 0x012c, + 0x0133, 0x0137, 0x013e, 0x013e, 0x0148, 0x014c, 0x0153, 0x0153, + 0x0153, 0x0158, 0x0166, 0x016d, 0x016d, 0x0173, 0x017a, 0x0182, + // Entry 40 - 7F + 0x0194, 0x019a, 0x019a, 0x01a1, 0x01a7, 0x01ad, 0x01ad, 0x01b4, + 0x01bb, 0x01c1, 0x01c1, 0x01c1, 0x01c8, 0x01cc, 0x01cc, 0x01cc, + 0x01cc, 0x01d1, 0x01d6, 0x01d6, 0x01dd, 0x01e3, 0x01e3, 0x01e3, + 0x01e8, 0x01f2, 0x01fb, 0x0200, 0x0205, 0x020e, 0x020e, 0x0212, + 0x0212, 0x021b, 0x021f, 0x022b, 0x0230, 0x0230, 0x0230, 0x0237, + 0x023d, 0x0241, 0x0246, 0x0246, 0x024e, 0x0254, 0x025a, 0x025a, + 0x025d, 0x025d, 0x0261, 0x0265, 0x026c, 0x0271, 0x0271, 0x0277, + 0x0277, 0x027d, 0x0283, 0x0283, 0x0289, 0x0289, 0x028e, 0x028e, + // Entry 80 - BF + 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x0298, + 0x0298, 0x02a2, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, + 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02b4, 0x02b4, 0x02b4, + 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, + 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, + 0x02b8, 0x02b8, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, + 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, + 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, + // Entry C0 - FF + 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, + 0x02cc, 0x02d7, 0x02d7, 0x02d7, 0x02dc, 0x02dc, 0x02e4, 0x02e4, + 0x02eb, 0x02eb, 0x02f2, 0x02fc, 0x02fc, 0x0303, 0x0309, 0x0309, + 0x0309, 0x0309, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, + 0x0315, 0x0315, 0x0319, 0x0320, + }, + }, + { // dz + "ཨེ་སེན་ཤུན་ཚོ་གླིང༌ཨཱན་དོ་རཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊསཨཕ་གྷ་ནི་སཏཱནཨན་" + + "ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌཨང་གི་ལཨཱལ་བེ་ནི་ཡཨར་མི་ནི་ཡཨང་གྷོ་ལའཛམ་གླ" + + "ིང་ལྷོ་མཐའི་ཁྱགས་གླིངཨར་ཇེན་ཊི་ནས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངསཨཱོས་ཊྲི་" + + "ཡཨཱོས་ཊྲེལ་ལི་ཡཨ་རུ་བཱཨ་ལནཌ་གླིང་ཚོམཨ་ཛར་བྷའི་ཇཱནབྷོས་ནི་ཡ་ ཨེནཌ་ " + + "ཧར་ཛི་གྷོ་བི་ནབྷར་བེ་ཌོསབངྒ་ལ་དེཤབྷེལ་ཇམབྷར་ཀི་ན་ ཕེ་སོབུལ་ག་རི་ཡབ" + + "ྷ་རེནབྷུ་རུན་ཌིབྷེ་ནིནསེནཊ་ བར་ཐོ་ལོམ་མིའུབར་མུ་ཌབྷྲུ་ནའིབྷེ་ལི་བི" + + "་ཡཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄བྲ་ཛིལབྷ་ཧ་མས྄འབྲུགབོའུ་ཝེཊ་མཚོ་གླིངབྷོཙ" + + "་ཝ་ནབེལ་ཨ་རུ་སུབྷེ་ལིཛཀེ་ན་ཌཀོ་ཀོས་གླིང་ཚོམཀོང་གྷོ ཀིན་ཤ་སསེན་ཊལ་ " + + "ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀཀོང་གྷོ བྷྲ་ཛ་བིལསུ་ཝིཊ་ཛར་ལེནཌཀོ་ཊེ་ ཌི་ཨི་ཝོ" + + "་རེཀུག་གླིང་ཚོམཅི་ལིཀེ་མ་རུནརྒྱ་ནགཀོ་ལོམ་བྷི་ཡཀི་ལི་པེར་ཊོན་མཚོ་གླ" + + "ིང་ཀོས་ཊ་རི་ཀཀིའུ་བྷཀེཔ་བཱཌཀྱཱུར་ར་ཀོཁི་རིསྟ་མེས་མཚོ་གླིངསཱའི་པྲསཅ" + + "ེཀ་ རི་པབ་ལིཀཇཱར་མ་ནིཌི་ཡེ་གོ་གར་སིའོཇི་བྷུ་ཊིཌེན་མཱཀཌོ་མི་ནི་ཀཌོ་" + + "མི་ནི་ཀཱན་ རི་པབ་ལིཀཨཱལ་ཇི་རི་ཡསེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལཨེ་ཁྭ་ཌོརཨེས" + + "་ཊོ་ནི་ཡཨི་ཇིབཊནུབ་ཕྱོགས་ ས་ཧཱ་རཨེ་རི་ཊྲེ་ཡཨིས་པེནཨི་ཐི་ཡོ་པི་ཡཡུ་" + + "རོབ་གཅིག་བསྡོམས་ཚོགས་པཕིན་ལེནཌཕི་ཇིཕལྐ་ལནྜ་གླིང་ཚོམམའི་ཀྲོ་ནི་ཤི་ཡ" + + "ཕཱའེ་རོ་གླིང་ཚོམཕྲཱནསགྷ་བྷོནཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམགྲྀ་ན་ཌཇཽར་ཇཱགུའི་ཡ" + + "་ན་ ཕྲནས྄་མངའ་ཁོངསགུ་ཨེརྣ་སིགྷ་ནཇིབ་རཱལ་ཊརགིརཱིན་ལནཌ྄གྷེམ་བི་ཡགྷི་" + + "ནིགོ་ཌེ་ལུ་པེཨེ་ཀུ་ཊོ་རེལ་ གི་ནིགིརིས྄སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ" + + "྄་ཝིཅ་གླིང་ཚོམགྷོ་ཊ་མ་ལགུ་འམ་ མཚོ་གླིངགྷི་ནི་ བྷི་སཱའུགྷ་ཡ་ནཧོང་ཀོ" + + "ང་ཅཱའི་ནཧཱརཌ་མཚོ་གླིང་ དང་ མེཀ་ཌོ་ནལཌ྄་གླིང་ཚོམཧཱན་ཌུ་རཱས྄ཀྲོ་ཨེ་ཤ" + + "ཧེ་ཊིཧཱང་གྷ་རིཀ་ནེ་རི་གླིང་ཚོམཨིན་ཌོ་ནེ་ཤི་ཡཨཱ་ཡ་ལེནཌཨིས་ར་ཡེལཨ་ཡུ" + + "ལ་ ཨོཕ་ མཱནརྒྱ་གརབྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངསཨི་རཱཀཨི་རཱནཨཱའི" + + "ས་ལེནཌཨི་ཊ་ལིཇེར་སིཇཱ་མཻ་ཀཇོར་ཌནཇ་པཱནཀེན་ཡཀིར་གིས་སཏཱནཀམ་བྷོ་ཌི་ཡཀ" + + "ི་རི་བ་ཏི་མཚོ་གླིངཀོ་མོ་རོསསེནཊ་ ཀིཊས་ དང་ ནེ་བིསབྱང་ ཀོ་རི་ཡལྷོ་ " + + "ཀོ་རི་ཡཀུ་ཝེཊཁེ་མེན་གླིང་ཚོམཀ་ཛགས་སཏཱནལཱ་ཝོསལེ་བ་ནོནསེནཊ་ ལུ་སི་ཡལ" + + "ིཀ་ཏནས་ཏ་ཡིནཤྲཱི་ལང་ཀལཱའི་བེ་རི་ཡལཻ་སོ་ཐོལི་ཐུ་ཝེ་ནི་ཡལག་ཛམ་བོརྒལཊ" + + "་བི་ཡལི་བི་ཡམོ་རོ་ཀོམོ་ན་ཀོམོལ་དོ་བཱམོན་ཊི་ནེག་རོསེནཊ་ མཱར་ཊིནམ་དཱ" + + "་གེས་ཀརམར་ཤེལ་གླིང་ཚོམམ་སེ་ཌོ་ནི་ཡམཱ་ལིམི་ཡཱན་མར་ (བྷར་མ)སོག་པོ་ཡུ" + + "ལམཀ་ཨའུ་ཅཱའི་ནབྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམམཱར་ཊི་ནིཀམོ་རི་ཊེ་ནི་" + + "ཡམོན་ས་རཊམཱལ་ཊམོ་རི་ཤཱསམཱལ་དིབསམ་ལ་ཝིམེཀ་སི་ཀོམ་ལེ་ཤི་ཡམོ་ཛམ་བྷིཀན" + + "་མི་བི་ཡནིའུ་ཀ་ལི་དོ་ནི་ཡནཱའི་ཇཱནོར་ཕོལཀ་མཚོ་གླིང༌ནཱའི་ཇི་རི་ཡནི་ཀ" + + "ྲ་ཝ་གནེ་དར་ལནཌས྄ནོར་ཝེབལ་ཡུལནའུ་རུ་ནི་ཨུ་ཨཻནིའུ་ཛི་ལེནཌཨོ་མཱནཔ་ན་མ" + + "པེ་རུཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡཔ་པུ་ ནིའུ་གི་ནིཕི་ལི་པིནསཔ་ཀི་སཏཱནཔོ" + + "་ལེནཌསིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེནཔིཊ་ཀེ་ཡེརན་གླིང་ཚོམཔུ་འེར་ཊོ་རི་ཁ" + + "ོཔེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རིཔོར་ཅུ་གཱལཔ་ལའུཔ་ར་གུ་ཝའིཀ་ཊརཨོཤི་ཡཱན" + + "་ན་གྱི་མཐའ་མཚམསརེ་ཡུ་ནི་ཡོནརོ་མེ་ནི་ཡསཱར་བྷི་ཡཨུ་རུ་སུརུ་ཝན་ཌསཱཝ་ད" + + "ི་ ཨ་རེ་བྷི་ཡསོ་ལོ་མོན་ གླིང་ཚོམསེ་ཤཱལསསུ་ཌཱནསུའི་ཌེནསིང་ག་པོརསེནཊ" + + "་ ཧེ་ལི་ནསུ་ལོ་བི་ནི་ཡསྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེནསུ་ལོ་བཱ་ཀི་ཡསི་ར་" + + " ལི་འོནསཱན་མ་རི་ནོསེ་ནི་གྷལསོ་མ་ལི་ཡསུ་རི་ནཱམསཱའུཐ་ སུ་ཌཱནསཝ་ ཊོ་མེ་" + + " ཨེནཌ་ པྲྀན་སི་པེཨེལ་སལ་བ་ཌོརསིནཊ་ མཱར་ཊེནསི་རི་ཡསུ་ཝ་ཛི་ལེནཌཏྲིས་ཏན" + + "་ད་ཀུན་ཧཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམཅཱཌཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངསཊ" + + "ོ་གྷོཐཱའི་ལེནཌཏ་ཇིག་གི་སཏཱནཏོ་ཀེ་ལའུ་ མཚོ་གླིངཏི་་མོར་ལེ་ཨེསཊཊཱརཀ་" + + "མེནའི་སཏཱནཊུ་ནི་ཤི་ཡཊོང་གྷཊཱར་ཀིཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོཏུ་ཝ་ལུ" + + "ཊཱའི་ཝཱནཊཱན་ཛཱ་ནི་ཡཡུ་ཀརེནཡུ་གྷན་ཌཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་ཡུ་" + + "ཨེས་ཨེཡུ་རུ་གུ་ཝའིཨུས་བེག་གི་སཏཱནབ་ཊི་ཀཱན་ སི་ཊིསེནཊ་ཝིན་སེནཌ྄ ཨེན" + + "ཌ་ གི་རེ་ན་དིནས྄བེ་ནི་ཛུ་ཝེ་ལཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངསཝརཇི" + + "ན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངསབེཊ་ནཱམཝ་ནུ་ཨ་ཏུཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ" + + "་ན་ས་མོ་ཨཡེ་མེནམེ་ཡོཊསཱའུཐ་ ཨཕ་རི་ཀཛམ་བྷི་ཡཛིམ་བྷབ་ཝེངོ་མ་ཤེས་པའི་" + + "ལུང་ཕྱོགསའཛམ་གླིང༌ཨཕ་རི་ཀབྱང་ཨ་མི་རི་ཀལྷོ་ཨ་མི་རི་ཀཨོཤི་ཡཱན་ནནུབ་ཕ" + + "ྱོགས་ཀྱི་ཨཕ་རི་ཀབར་ཕྱོགས་ཨ་མི་རི་ཀཤར་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀབྱང་ཕྱོགས་ཀྱ" + + "ི་ཨཕ་རི་ཀསྦུག་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀལྷོའི་ཨཕ་རི་ཀཨ་མི་རི་ཀ་ཚུབྱང་ཕྱོགས་" + + "ཀྱི་ཨ་མི་རི་ཀཀེ་རི་བི་ཡེནཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཨེ་ཤི་ཡལྷོ་ཤར་ཕ" + + "ྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཡུ་རོབཨཱོས་ཊྲེལ་ཨེ་ཤི་ཡམེ་ལ་ནི་ཤི་ཡལུང་ཕྱོགས" + + "་མའི་ཀྲོ་ནི་ཤི་ཡཔོ་ལི་ནི་ཤི་ཡཨེ་ཤི་ཡསྦུག་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡནུབ་ཕྱོག" + + "ས་ཀྱི་ཨེ་ཤི་ཡཡུ་རོབཤར་ཕྱོགས་ཀྱི་ཡུ་རོབབྱང་ཕྱོགས་ཀྱི་ཡུ་རོབནུབ་ཕྱོག" + + "ས་ཀྱི་ཡུ་རོབལེ་ཊིནཨ་མི་རི་ཀ", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x002e, 0x0039, 0x004b, 0x0053, 0x005a, - 0x0061, 0x0067, 0x0071, 0x007d, 0x008b, 0x0092, 0x009b, 0x00a0, - 0x00ac, 0x00b7, 0x00cc, 0x00d4, 0x00de, 0x00e4, 0x00f0, 0x00f8, - 0x00ff, 0x0106, 0x010b, 0x011c, 0x0123, 0x0129, 0x0130, 0x0141, - 0x0147, 0x014e, 0x0155, 0x0160, 0x0168, 0x016f, 0x0175, 0x017b, - 0x0186, 0x0196, 0x01ab, 0x01be, 0x01c2, 0x01d0, 0x01da, 0x01df, - 0x01e7, 0x01eb, 0x01f3, 0x0202, 0x020c, 0x0210, 0x0218, 0x0220, - 0x022e, 0x0236, 0x0244, 0x024b, 0x0257, 0x025f, 0x0266, 0x026e, + 0x0000, 0x0039, 0x0051, 0x00a4, 0x00cb, 0x0118, 0x012d, 0x014e, + 0x016c, 0x0184, 0x01d5, 0x01f6, 0x0241, 0x025f, 0x0289, 0x029e, + 0x02c8, 0x02ef, 0x0348, 0x0366, 0x0381, 0x0396, 0x03c1, 0x03df, + 0x03f1, 0x040f, 0x0424, 0x045e, 0x0473, 0x048b, 0x04ac, 0x04f4, + 0x0506, 0x051e, 0x052d, 0x0560, 0x0578, 0x0599, 0x05ae, 0x05c0, + 0x05ed, 0x0618, 0x0668, 0x0699, 0x06c3, 0x06f7, 0x071b, 0x072a, + 0x0742, 0x0754, 0x0778, 0x07bd, 0x07db, 0x07f0, 0x0805, 0x0823, + 0x085f, 0x0877, 0x089f, 0x08b7, 0x08e7, 0x0902, 0x0917, 0x0935, // Entry 40 - 7F - 0x0280, 0x0287, 0x0297, 0x029e, 0x02a5, 0x02aa, 0x02be, 0x02c5, - 0x02ca, 0x02d1, 0x02e0, 0x02e7, 0x02ec, 0x02fa, 0x0304, 0x030f, - 0x0315, 0x031a, 0x032c, 0x0333, 0x0339, 0x0347, 0x0350, 0x0355, - 0x035e, 0x0367, 0x036d, 0x0372, 0x037b, 0x038e, 0x0392, 0x03be, - 0x03c7, 0x03cb, 0x03d7, 0x03dd, 0x03ef, 0x0406, 0x040e, 0x0415, - 0x041a, 0x0422, 0x0430, 0x0439, 0x0441, 0x0447, 0x0451, 0x0456, - 0x0477, 0x047b, 0x047f, 0x0485, 0x048b, 0x0493, 0x049a, 0x04a2, - 0x04a7, 0x04ac, 0x04b6, 0x04be, 0x04c6, 0x04cd, 0x04e1, 0x04ef, - // Entry 80 - BF - 0x04fa, 0x0500, 0x050c, 0x0515, 0x0519, 0x051e, 0x0529, 0x0536, - 0x053f, 0x0546, 0x054d, 0x0555, 0x0560, 0x0566, 0x056b, 0x0571, - 0x0577, 0x057e, 0x0588, 0x0594, 0x059e, 0x05ac, 0x05b5, 0x05b9, - 0x05cb, 0x05d3, 0x05e1, 0x05f7, 0x05ff, 0x060a, 0x0614, 0x0619, - 0x061e, 0x0626, 0x062c, 0x0635, 0x063d, 0x0645, 0x064c, 0x065b, - 0x0660, 0x066c, 0x0673, 0x067c, 0x0687, 0x068f, 0x0694, 0x0699, - 0x069d, 0x06a9, 0x06ad, 0x06b4, 0x06b9, 0x06ca, 0x06dc, 0x06e5, - 0x06ed, 0x06f4, 0x0708, 0x0715, 0x0720, 0x0733, 0x073b, 0x0740, - // Entry C0 - FF - 0x0748, 0x074d, 0x075c, 0x0767, 0x076f, 0x0775, 0x077a, 0x0780, - 0x078e, 0x079b, 0x07a3, 0x07a9, 0x07af, 0x07b8, 0x07c4, 0x07cc, - 0x07d4, 0x07dc, 0x07e8, 0x07f2, 0x07f9, 0x0800, 0x0807, 0x080f, - 0x0826, 0x082e, 0x083a, 0x083f, 0x0848, 0x0858, 0x086d, 0x0872, - 0x0889, 0x088d, 0x0895, 0x08a0, 0x08a7, 0x08b2, 0x08be, 0x08c5, - 0x08ca, 0x08d0, 0x08e2, 0x08e8, 0x08ee, 0x08f6, 0x08fd, 0x0904, - 0x0923, 0x0931, 0x0938, 0x0943, 0x094a, 0x0967, 0x0970, 0x098a, - 0x09aa, 0x09b3, 0x09ba, 0x09ca, 0x09cf, 0x09d5, 0x09da, 0x09e1, - // Entry 100 - 13F - 0x09e9, 0x09ef, 0x09f7, 0x0a05, 0x0a08, 0x0a0e, 0x0a1a, 0x0a23, - 0x0a2a, 0x0a3e, 0x0a4a, 0x0a59, 0x0a68, 0x0a7a, 0x0a86, 0x0a90, - 0x0aa0, 0x0aa5, 0x0ab2, 0x0abc, 0x0aca, 0x0ad6, 0x0ae1, 0x0aea, - 0x0afc, 0x0b05, 0x0b09, 0x0b19, 0x0b2b, 0x0b31, 0x0b40, 0x0b4f, - 0x0b63, 0x0b70, + 0x0978, 0x0999, 0x09da, 0x09f5, 0x0a16, 0x0a2b, 0x0a5c, 0x0a7d, + 0x0a92, 0x0ab9, 0x0b04, 0x0b04, 0x0b1c, 0x0b2b, 0x0b5b, 0x0b88, + 0x0bb8, 0x0bc7, 0x0bdc, 0x0c13, 0x0c28, 0x0c3a, 0x0c80, 0x0c9e, + 0x0caa, 0x0cc8, 0x0ce9, 0x0d04, 0x0d16, 0x0d37, 0x0d6e, 0x0d80, + 0x0dfa, 0x0e15, 0x0e40, 0x0e6e, 0x0e80, 0x0eaa, 0x0f1b, 0x0f3c, + 0x0f54, 0x0f63, 0x0f7e, 0x0fae, 0x0fd8, 0x0ff3, 0x100e, 0x1037, + 0x1049, 0x10ac, 0x10be, 0x10d0, 0x10ee, 0x1103, 0x1115, 0x112a, + 0x113c, 0x114b, 0x115a, 0x117e, 0x119f, 0x11d8, 0x11f3, 0x122f, + // Entry 80 - BF + 0x1251, 0x1273, 0x1285, 0x12b2, 0x12d0, 0x12e2, 0x12fa, 0x131f, + 0x1346, 0x1361, 0x1385, 0x139d, 0x13c4, 0x13e2, 0x13f7, 0x140c, + 0x1424, 0x1439, 0x1454, 0x147b, 0x14a0, 0x14c1, 0x14ee, 0x1512, + 0x1521, 0x1551, 0x156f, 0x1596, 0x15f0, 0x160e, 0x1635, 0x164d, + 0x165c, 0x1677, 0x168f, 0x16a1, 0x16bc, 0x16d7, 0x16f5, 0x1710, + 0x1743, 0x1758, 0x178e, 0x17b2, 0x17cd, 0x17ee, 0x1800, 0x1812, + 0x1827, 0x183f, 0x1863, 0x1875, 0x1884, 0x1893, 0x18db, 0x1909, + 0x1927, 0x1942, 0x1957, 0x19a4, 0x19e0, 0x1a0d, 0x1a61, 0x1a7f, + // Entry C0 - FF + 0x1a8e, 0x1aac, 0x1ab8, 0x1afd, 0x1b21, 0x1b3f, 0x1b5a, 0x1b72, + 0x1b87, 0x1bbb, 0x1bf2, 0x1c07, 0x1c19, 0x1c31, 0x1c4c, 0x1c71, + 0x1c98, 0x1ce2, 0x1d09, 0x1d2b, 0x1d4c, 0x1d67, 0x1d82, 0x1d9d, + 0x1dc2, 0x1e0d, 0x1e31, 0x1e56, 0x1e6b, 0x1e8f, 0x1ebc, 0x1f0c, + 0x1f15, 0x1f63, 0x1f75, 0x1f90, 0x1fb7, 0x1fee, 0x201b, 0x2048, + 0x2066, 0x2078, 0x208a, 0x20d7, 0x20ec, 0x2104, 0x2125, 0x213a, + 0x2152, 0x21a9, 0x21a9, 0x21c4, 0x21e8, 0x2215, 0x2240, 0x22a2, + 0x22c9, 0x232a, 0x238e, 0x23a3, 0x23be, 0x23ff, 0x2411, 0x2411, + // Entry 100 - 13F + 0x2423, 0x2435, 0x245d, 0x2475, 0x2493, 0x24d5, 0x24f0, 0x2505, + 0x252c, 0x2553, 0x2571, 0x25b0, 0x25e6, 0x2622, 0x2661, 0x26a3, + 0x26ca, 0x26ee, 0x2733, 0x2757, 0x2793, 0x27ba, 0x2802, 0x2826, + 0x2859, 0x287d, 0x28c8, 0x28ef, 0x2904, 0x2946, 0x2985, 0x2997, + 0x29d0, 0x2a0c, 0x2a48, 0x2a75, }, }, - { // brx - "ऍन्डोरासंयुक्त अरब अमीरातअफ़ग़ानिस्तानएन्टिगुआ एवं बारबूडाएंगीलाअल्बानिय" + - "ाआर्मेनियाअंगोलाअंटार्कटिकाअर्जेण्टिनाअमरिकी समोआऑस्ट्रियाऑस्ट्रेल" + - "ियाअरूबाआलाँड द्वीपअज़रबैजानबोसनिया हर्ज़ेगोविनाबारबाडोसबंगलादेशबे" + - "ल्जियमबुर्किना फासोबल्गैरियाबहरैनबुरुंडीबेनेँसेँ बार्थेलेमीबरमूडाब" + - "्रूनइबोलीवियाब्राज़ीलबहामाभूटानबुवे द्वीपबोत्स्वानाबेलारूसबेलिज़कै" + - "नाडाकोकोस द्वीपकॉंगो किनशासासेंट्रल अफ्रीकन रिपब्लिककॉंगो ब्राज़्ज" + - "़ावीलस्वित्ज़रलैंडआईवरी कोस्टकुक द्वीपचिलीकोमेरानचीनकोलम्बियाकोस्ट" + - "ारीकाक्यूबाकैप वेर्देक्रिस्मस द्वीपसाइप्रसचेक गणराज्यजर्मनीद्जिबूत" + - "ीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियाएक्वाडोरएस्टोनियामिस्रपश" + - "्चिमी सहाराएरिट्रियास्पेनइथिओपियायूरोपीय संघफिनलैंडफिजीफ़ॉल्कलैंड " + - "द्वीपमाइक्रोनेशियाफरो द्वीपफ्राँसगैबॉनब्रितनग्रेनडाजॉर्जियाफ्राँसी" + - "सी गिआनागेर्नसेघानाजिब्राल्टरग्रीनलैण्डगाम्बियागिनीग्वादलुपइक्वेटो" + - "रियल गिनीग्रीसदक्षिण जोर्जिया एवं दक्षिण सैंडवीच द्वीपगोतेदालागुआम" + - "गीनी-बिसाउगुयानाहाँगकाँग विशेष प्रशासनिक क्षेत्र चीनहर्ड द्वीप एवं" + - " मैकडोनॉल्ड द्वीपहौण्डूरासक्रोएशियाहाइतीहंगरीइंडोनेशियाआयरलैंडइस्राइ" + - "लआईल ऑफ़ मैनभारतब्रिटिश हिंद महासागरिय क्षेत्रईराक़ईरानआइसलैंडइटली" + - "जर्सीजमाइकाजॉर्डनजापानकेन्याकिर्गिज़कम्बोडियाकिरिबातीकोमोरोज़सेंट " + - "किट्स एवं नेविसउत्तर कोरियादक्षिण कोरियाकुवैतकेमैन द्वीपकज़ाखस्तान" + - "लाओसलेबनोनसेंट लूसियालिक्टैनस्टाईनश्री लँकालाइबेरियालसोथोलिथुआनिया" + - "लक्समबर्गलाट्वीयालीबियामोरोक्कोमोनाकोमोल्डेवियामोंटेनेग्रोसेँ मार्" + - "टेँमदागास्करमार्शल द्वीपमैसेडोनियामालीम्यानमारमंगोलियामकाओ विशेष प" + - "्रशासनिक क्षेत्र (चीन)उत्तरी मारियाना द्वीपमार्टीनिकमॉरिटेनियामॉंस" + - "ेरामाल्टामॉरिसमालदीवमलावीमैक्सिकोमलेशियामोज़ाम्बिकनामीबियान्यू कैल" + - "ेडोनियानाइजेरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनेदरलैण्डनॉर्वेनेपालना" + - "उरूनीयूएन्यूज़ीलैंडओमानपनामापेरूफ्राँसीसी पॉलिनीशियापापुआ न्यू गिन" + - "ीफिलीपिन्सपाकिस्तानपोलैण्डसेँ पीएर एवं मि\u200dकेलॉंपिटकेर्नपुएर्ट" + - "ो रीकोफ़िलिस्तीनपुर्तगालपलाऊपारागुएक़तारबाहरिय ओशेआनियारेयूनियॉंरो" + - "मानियासर्बियारूसरूआण्डासऊदी अरबसॉलोमन द्वीपसेशेल्ससूदानस्वीडनसिंगा" + - "पुरसेण्\u200dट हेलेनास्लोवेनियास्वाल्बार्ड एवं यान मायेनस्लोवाकिया" + - "सियेरा लेओनसैन मरीनोसेनेगालसोमालियासुरिनामसाउँ-तोमे एवं प्रिंसिपऍल" + - " साल्वाडोरसीरियास्वाज़ीलैंडतुर्की एवं कैकोज़ द्वीपचाडफ्राँसीसी उत्तर" + - "ी क्षेत्रोंटोगोथाइलैण्डताजिकिस्तानटोकेलौपूर्वी तिमोरतुर्कमेनीस्तान" + - "त्युनिशियाटॉंगातुर्कीट्रिनिडाड एवं टोबैगोतुवालुताइवानतंज़ानियायूक्" + - "रेनयुगाँडायुनाइटेड स्टेट्स के छोटे बाहरिय द्वीपसंयुक्त राज्य अमरिक" + - "ायुरूगुएउज़बेकिस्तानवैटिकनसेंट विंसंट एवं दी ग्रनाडीन्स्वेनेज़ुएला" + - "ब्रिटिश वर्जीन आईलंड्सयु.एस. वर्जीन आईलंड्सवियतनामवानाऊटुवॉलेस एवं" + - " फ़्यूचूनासमोआयमनमैयौटदक्षिण अफ्रीकाज़ाम्बियाज़ीम्बाब्वेअज्ञात या अव" + - "ैध प्रदेशदुनियाअफ्रीकाउत्तर अमरिकादक्षिण अमरिकाओशेआनियापश्चिमी अफ्" + - "रीकामध्य अमरिकापूर्वी अफ्रीकाउत्तरी अफ्रीकामध्य अफ्रीकादक्षिणी अफ्" + - "रीकाअमरिकाज़्उत्तरी अमरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-" + - "पूर्वी एशियादक्षिणी यूरोपऑस्ट्रेलिया एवं न्यूजीलैंडमेलीनेशियामाईक्" + - "रोनेशियापोलीनेशियाएशियामध्य एशियापश्चिमी ऐशियायूरोपपूर्वी यूरोपउत्" + - "तरी यूरोपपश्चिमी यूरोप्लैटिन अमरिका एवं करीबी", - []uint16{ // 290 elements + { // ebu + "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + + "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + + "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + + "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + + "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + + "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + + "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + + "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + + "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + + "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + + "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + + "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + + "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + + "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + + "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + + "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + + "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + + "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + + "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + + "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + + "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + + "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + + "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + + "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + + "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + + "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + + "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + + "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + + "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + + "yotteAfrika KusiniZambiaZimbabwe", + []uint16{ // 261 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0015, 0x0047, 0x006e, 0x00a6, 0x00b8, 0x00d3, - 0x00ee, 0x0100, 0x0121, 0x0142, 0x0161, 0x017c, 0x019d, 0x01ac, - 0x01cb, 0x01e6, 0x0220, 0x0238, 0x0250, 0x0268, 0x028d, 0x02a8, - 0x02b7, 0x02cc, 0x02db, 0x0303, 0x0315, 0x0327, 0x033f, 0x033f, - 0x0357, 0x0366, 0x0375, 0x0391, 0x03af, 0x03c4, 0x03d6, 0x03e8, - 0x0407, 0x042c, 0x0470, 0x04a7, 0x04ce, 0x04ed, 0x0506, 0x0512, - 0x0527, 0x0530, 0x054b, 0x054b, 0x0569, 0x057b, 0x0597, 0x0597, - 0x05bf, 0x05d4, 0x05f3, 0x0605, 0x0605, 0x061d, 0x0635, 0x064d, + 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, + 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, + 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, + 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, + 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, + 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, + 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, + 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F - 0x067b, 0x0696, 0x0696, 0x06ae, 0x06c9, 0x06d8, 0x06fd, 0x0718, - 0x0727, 0x073f, 0x075e, 0x0773, 0x077f, 0x07ad, 0x07d4, 0x07ed, - 0x07ff, 0x080e, 0x0820, 0x0835, 0x084d, 0x0878, 0x088d, 0x0899, - 0x08b7, 0x08d5, 0x08ed, 0x08f9, 0x0911, 0x093f, 0x094e, 0x09bc, - 0x09d4, 0x09e0, 0x09fc, 0x0a0e, 0x0a72, 0x0ac7, 0x0ae2, 0x0afd, - 0x0b0c, 0x0b1b, 0x0b1b, 0x0b39, 0x0b4e, 0x0b63, 0x0b80, 0x0b8c, - 0x0be0, 0x0bef, 0x0bfb, 0x0c10, 0x0c1c, 0x0c2b, 0x0c3d, 0x0c4f, - 0x0c5e, 0x0c70, 0x0c88, 0x0ca3, 0x0cbb, 0x0cd3, 0x0d09, 0x0d2b, - // Entry 80 - BF - 0x0d50, 0x0d5f, 0x0d7e, 0x0d9c, 0x0da8, 0x0dba, 0x0dd9, 0x0e00, - 0x0e19, 0x0e34, 0x0e43, 0x0e5e, 0x0e79, 0x0e91, 0x0ea3, 0x0ebb, - 0x0ecd, 0x0eeb, 0x0f0c, 0x0f2b, 0x0f46, 0x0f68, 0x0f86, 0x0f92, - 0x0faa, 0x0fc2, 0x101c, 0x1057, 0x1072, 0x1090, 0x10a5, 0x10b7, - 0x10c6, 0x10d8, 0x10e7, 0x10ff, 0x1114, 0x1132, 0x114a, 0x1175, - 0x1187, 0x11ac, 0x11c7, 0x11e2, 0x11fd, 0x120f, 0x121e, 0x122d, - 0x123c, 0x125d, 0x1269, 0x1278, 0x1284, 0x12be, 0x12e7, 0x1302, - 0x131d, 0x1332, 0x136b, 0x1383, 0x13a5, 0x13c3, 0x13db, 0x13e7, - // Entry C0 - FF - 0x13fc, 0x140b, 0x1436, 0x1451, 0x1469, 0x147e, 0x1487, 0x149c, - 0x14b2, 0x14d4, 0x14e9, 0x14f8, 0x150a, 0x1522, 0x1547, 0x1565, - 0x15aa, 0x15c8, 0x15e7, 0x1600, 0x1615, 0x162d, 0x1642, 0x1642, - 0x167e, 0x16a0, 0x16a0, 0x16b2, 0x16d3, 0x16d3, 0x1712, 0x171b, - 0x1765, 0x1771, 0x1789, 0x17aa, 0x17bc, 0x17de, 0x1808, 0x1826, - 0x1835, 0x1847, 0x187f, 0x1891, 0x18a3, 0x18be, 0x18d3, 0x18e8, - 0x194d, 0x1985, 0x199a, 0x19be, 0x19d0, 0x1a22, 0x1a40, 0x1a7e, - 0x1ab5, 0x1aca, 0x1adf, 0x1b14, 0x1b20, 0x1b20, 0x1b29, 0x1b38, - // Entry 100 - 13F - 0x1b60, 0x1b7b, 0x1b9c, 0x1bd5, 0x1be7, 0x1bfc, 0x1c1e, 0x1c43, - 0x1c5b, 0x1c86, 0x1ca5, 0x1ccd, 0x1cf5, 0x1d17, 0x1d42, 0x1d5d, - 0x1d82, 0x1d9a, 0x1dbc, 0x1de1, 0x1e16, 0x1e3b, 0x1e85, 0x1ea3, - 0x1eca, 0x1ee8, 0x1ef7, 0x1f13, 0x1f38, 0x1f47, 0x1f69, 0x1f8b, - 0x1fb3, 0x1fef, - }, - }, - { // bs - "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barbu" + - "daAngvilaAlbanijaJermenijaAngolaAntarktikaArgentinaAmerička SamoaAus" + - "trijaAustralijaArubaAlandska OstrvaAzerbejdžanBosna i HercegovinaBar" + - "badosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti Ba" + - "rtolomejBermudaBrunejBolivijaKaripska HolandijaBrazilBahamiButanBuve" + - " OstrvaBocvanaBjelorusijaBelizeKanadaKokosova (Kilingova) ostrvaDemo" + - "kratska Republika KongoCentralnoafrička RepublikaKongoŠvicarskaObala" + - " SlonovačeKukova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKosta" + - "rikaKubaKape VerdeKurasaoBožićna OstrvaKiparČeškaNjemačkaDijego Gars" + - "ijaDžibutiDanskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEk" + - "vadorEstonijaEgipatZapadna SaharaEritrejaŠpanijaEtiopijaEvropska Uni" + - "jaFinskaFidžiFolklandska OstrvaMikronezijaFarska OstrvaFrancuskaGabo" + - "nVelika BritanijaGrenadaGruzijaFrancuska GvajanaGernziGanaGibraltarG" + - "renlandGambijaGvinejaGvadelupeEkvatorijalna GvinejaGrčkaJužna Džordž" + - "ija i Južna Sendvič OstrvaGvatemalaGuamGvineja-BisaoGvajanaHong Kong" + - " (S. A. R. Kina)Heard i arhipelag McDonaldHondurasHrvatskaHaitiMađar" + - "skaKanarska ostrvaIndonezijaIrskaIzraelOstrvo ManIndijaBritanska Ter" + - "ritorija u Indijskom OkeanuIrakIranIslandItalijaDžersiJamajkaJordanJ" + - "apanKenijaKirgizstanKambodžaKiribatiKomorska OstrvaSent Kits i Nevis" + - "Sjeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstanLaosLibanS" + - "veta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLeto" + - "nijaLibijaMarokoMonakoMoldavijaCrna GoraSv. MartinMadagaskarMaršalsk" + - "a OstrvaMakedonijaMaliMijanmarMongolijaMakao (S. A. R. Kina)Sjeverna" + - " Marijanska OstrvaMartinikMauritanijaMonseratMaltaMauriciusMaldiviMa" + - "laviMeksikoMalezijaMozambikNamibijaNova KaledonijaNigerNorfolk Ostrv" + - "oNigerijaNikaragvaHolandijaNorveškaNepalNauruNiueNovi ZelandOmanPana" + - "maPeruFrancuska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaS" + - "veti Petar i MikelonPitkernPorto RikoPalestinska TeritorijaPortugalP" + - "alauParagvajKatarOstala OkeanijaRejunionRumunijaSrbijaRusijaRuandaSa" + - "udijska ArabijaSolomonska OstrvaSejšeliSudanŠvedskaSingapurSveta Hel" + - "enaSlovenijaSvalbard i Jan MajenSlovačkaSijera LeoneSan MarinoSenega" + - "lSomalijaSurinamJužni SudanSao Tome i PrincipeSalvadorSint MartenSir" + - "ijaSvazilendTristan da KunjaOstrva Turks i CaicosČadFrancuske Južne " + - "TeritorijeTogoTajlandTadžikistanTokelauTimor LesteTurkmenistanTunisT" + - "ongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkrajinaUgandaUdalje" + - "na ostrva SADSjedinjene Američke DržaveUrugvajUzbekistanVatikanSveti" + - " Vincent i GrenadiniVenecuelaBritanska Djevičanska OstrvaDjevičanska" + - " Ostrva SADVijetnamVanuatuWallis i FutunaSamoaKosovoJemenMajoteJužno" + - "afrička RepublikaZambijaZimbabveNepoznata oblastSvijetAfrikaSjeverno" + - "američki kontinentJužna AmerikaOkeanijaZapadna AfrikaCentralna Ameri" + - "kaIstočna AfrikaSjeverna AfrikaCentralna AfrikaJužna AfrikaAmerikaSj" + - "everna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna AzijaJužna E" + - "vropaAustralazijaMelanezijaMikronezijski RegionPolinezijaAzijaCentra" + - "lna AzijaZapadna AzijaEvropaIstočna EvropaSjeverna EvropaZapadna Evr" + - "opaLatinska Amerika", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059, - 0x0062, 0x0068, 0x0072, 0x007b, 0x008a, 0x0092, 0x009c, 0x00a1, - 0x00b0, 0x00bc, 0x00cf, 0x00d7, 0x00e1, 0x00e8, 0x00f4, 0x00fc, - 0x0103, 0x010a, 0x010f, 0x011f, 0x0126, 0x012c, 0x0134, 0x0146, - 0x014c, 0x0152, 0x0157, 0x0162, 0x0169, 0x0174, 0x017a, 0x0180, - 0x019b, 0x01b6, 0x01d1, 0x01d6, 0x01e0, 0x01f0, 0x01fd, 0x0202, - 0x0209, 0x020d, 0x0216, 0x0226, 0x022f, 0x0233, 0x023d, 0x0244, - 0x0254, 0x0259, 0x0260, 0x0269, 0x0277, 0x027f, 0x0285, 0x028d, - // Entry 40 - 7F - 0x02a3, 0x02a9, 0x02b8, 0x02bf, 0x02c7, 0x02cd, 0x02db, 0x02e3, - 0x02eb, 0x02f3, 0x0301, 0x0307, 0x030d, 0x031f, 0x032a, 0x0337, - 0x0340, 0x0345, 0x0355, 0x035c, 0x0363, 0x0374, 0x037a, 0x037e, - 0x0387, 0x038f, 0x0396, 0x039d, 0x03a6, 0x03bb, 0x03c1, 0x03ec, - 0x03f5, 0x03f9, 0x0406, 0x040d, 0x0426, 0x0440, 0x0448, 0x0450, - 0x0455, 0x045e, 0x046d, 0x0477, 0x047c, 0x0482, 0x048c, 0x0492, - 0x04ba, 0x04be, 0x04c2, 0x04c8, 0x04cf, 0x04d6, 0x04dd, 0x04e3, - 0x04e8, 0x04ee, 0x04f8, 0x0501, 0x0509, 0x0518, 0x0529, 0x0538, - // Entry 80 - BF - 0x0545, 0x054b, 0x055b, 0x0564, 0x0568, 0x056d, 0x0579, 0x0585, - 0x058f, 0x0597, 0x059d, 0x05a6, 0x05b0, 0x05b8, 0x05be, 0x05c4, - 0x05ca, 0x05d3, 0x05dc, 0x05e6, 0x05f0, 0x0601, 0x060b, 0x060f, - 0x0617, 0x0620, 0x0635, 0x064f, 0x0657, 0x0662, 0x066a, 0x066f, - 0x0678, 0x067f, 0x0685, 0x068c, 0x0694, 0x069c, 0x06a4, 0x06b3, - 0x06b8, 0x06c6, 0x06ce, 0x06d7, 0x06e0, 0x06e9, 0x06ee, 0x06f3, - 0x06f7, 0x0702, 0x0706, 0x070c, 0x0710, 0x0724, 0x0736, 0x073e, - 0x0746, 0x074d, 0x0762, 0x0769, 0x0773, 0x0789, 0x0791, 0x0796, - // Entry C0 - FF - 0x079e, 0x07a3, 0x07b2, 0x07ba, 0x07c2, 0x07c8, 0x07ce, 0x07d4, - 0x07e5, 0x07f6, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081f, 0x0828, - 0x083c, 0x0845, 0x0851, 0x085b, 0x0862, 0x086a, 0x0871, 0x087d, - 0x0890, 0x0898, 0x08a3, 0x08a9, 0x08b2, 0x08c2, 0x08d7, 0x08db, - 0x08f6, 0x08fa, 0x0901, 0x090d, 0x0914, 0x091f, 0x092b, 0x0930, - 0x0935, 0x093b, 0x094c, 0x0952, 0x0958, 0x0961, 0x0969, 0x096f, - 0x0982, 0x099e, 0x09a5, 0x09af, 0x09b6, 0x09cf, 0x09d8, 0x09f5, - 0x0a0c, 0x0a14, 0x0a1b, 0x0a2a, 0x0a2f, 0x0a35, 0x0a3a, 0x0a40, - // Entry 100 - 13F - 0x0a58, 0x0a5f, 0x0a67, 0x0a77, 0x0a7d, 0x0a83, 0x0a9e, 0x0aac, - 0x0ab4, 0x0ac2, 0x0ad3, 0x0ae2, 0x0af1, 0x0b01, 0x0b0e, 0x0b15, - 0x0b25, 0x0b2b, 0x0b39, 0x0b45, 0x0b57, 0x0b64, 0x0b70, 0x0b7a, - 0x0b8e, 0x0b98, 0x0b9d, 0x0bac, 0x0bb9, 0x0bbf, 0x0bce, 0x0bdd, - 0x0beb, 0x0bfb, + 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, - { // bs-Cyrl - "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" + - "аАнгвилаАлбанијаАрменијаАнголаАнтарктикАргентинаАмеричка СамоаАустр" + - "ијаАустралијаАрубаАландска острваАзербејџанБосна и ХерцеговинаБарба" + - "досБангладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвети Бар" + - "толомејБермудаБрунејБоливијаБразилБахамиБутанБуве ОстрваБоцванаБело" + - "русијаБелизеКанадаКокос (Келинг) ОстрваКонго - КиншасаЦентрално Афр" + - "ичка РепубликаКонго - БразавилШвајцарскаОбала СлоновачеКукова Острв" + - "аЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаКапе ВердеБож" + - "ићна острваКипарЧешкаНемачкаДијего ГарсијаЏибутиДанскаДоминикаДомин" + - "иканска РепубликаАлжирСеута и МелиљаЕквадорЕстонијаЕгипатЗападна Са" + - "хараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџиФокландска острв" + - "аМикронезијаФарска ОстрваФранцускаГабонВелика БританијаГренадаГрузи" + - "јаФранцуска ГвајанаГурнсиГанаГибралтарГренландГамбијаГвинејаГваделу" + - "пеЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна Сендвич ОстрваГва" + - "темалаГуамГвинеја-БисаоГвајанаХонг Конг С. А. Р. КинаХерд и Мекдона" + - "лд ОстрваХондурасХрватскаХаитиМађарскаКанарска острваИндонезијаИрск" + - "аИзраелОстрво МанИндијаБританска територија у Индијском океануИракИ" + - "ранИсландИталијаЏерсиЈамајкаЈорданЈапанКенијаКиргизстанКамбоџаКириб" + - "атиКоморска ОстрваСент Китс и НевисСеверна КорејаЈужна КорејаКувајт" + - "Кајманска ОстрваКазахстанЛаосЛибанСент ЛуцијаЛихтенштајнШри ЛанкаЛи" + - "беријаЛесотоЛитванијаЛуксембургЛетонијаЛибијаМарокоМонакоМолдавијаЦ" + - "рна ГораСент МартинМадагаскарМаршалска ОстрваМакедонијаМалиМијанмар" + - " (Бурма)МонголијаМакао С. А. Р. КинаСеверна Маријанска ОстрваМартини" + - "кМауританијаМонсератМалтаМаурицијусМалдивиМалавиМексикоМалезијаМоза" + - "мбикНамибијаНова КаледонијаНигерНорфолк ОстрвоНигеријаНикарагваХола" + - "ндијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаПеруФранцуска Полин" + - "езијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен Пјер и МикелонПитк" + - "ернПорто РикоПалестинске територијеПортугалијаПалауПарагвајКатарОст" + - "ала океанијаРеинионРумунијаСрбијаРусијаРуандаСаудијска АрабијаСолом" + - "онска ОстрваСејшелиСуданШведскаСингапурСвета ЈеленаСловенијаСвалбар" + - "д и Јанмајен ОстрваСловачкаСијера ЛеонеСан МариноСенегалСомалијаСур" + - "инамСао Томе и ПринципеСалвадорСиријаСвазилендТристан да КуњаТуркс " + - "и Кајкос ОстрваЧадФранцуске Јужне ТериторијеТогоТајландТаџикистанТо" + - "келауИсточни ТиморТуркменистанТунисТонгаТурскаТринидад и ТобагоТува" + - "луТајванТанзанијаУкрајинаУгандаМања удаљена острва САДСједињене Аме" + - "ричке ДржавеУругвајУзбекистанВатиканСент Винсент и ГренадиниВенецуе" + - "лаБританска Девичанска ОстрваС.А.Д. Девичанска ОстрваВијетнамВануат" + - "уВалис и Футуна ОстрваСамоаЈеменМајотеЈужноафричка РепубликаЗамбија" + - "ЗимбабвеНепозната или неважећа областСветАфрикаСеверноамерички конт" + - "инентЈужна АмерикаОкеанијаЗападна АфрикаЦентрална АмерикаИсточна Аф" + - "рикаСеверна АфрикаЦентрална АфрикаЈужна АфрикаАмерикеСеверна Америк" + - "аКарибиИсточна АзијаЈужна АзијаЈугоисточна АзијаЈужна ЕвропаАустрал" + - "ија и Нови ЗеландМеланезијаМикронезијски регионПолинезијаАзијаЦентр" + - "ална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна ЕвропаЗападна Ев" + - "ропаЛатинска Америка", - []uint16{ // 290 elements + { // ee + "Ascension ƒudomekpo nutomeAndorra nutomeUnited Arab Emirates nutomeAfgha" + + "nistan nutoméAntigua kple Barbuda nutomeAnguilla nutomeAlbania nuto" + + "meArmenia nutomeAngola nutomeAntartica nutomeArgentina nutomeAmerika" + + " Samoa nutomeAustria nutomeAustralia nutomeAruba nutomeÅland ƒudomek" + + "po nutomeAzerbaijan nutomeBosnia kple Herzergovina nutomeBarbados nu" + + "tomeBangladesh nutomeBelgium nutomeBurkina Faso nutomeBulgaria nutom" + + "eBahrain nutomeBurundi nutomeBenin nutomeSaint Barthélemy nutomeBerm" + + "uda nutomeBrunei nutomeBolivia nutomeBrazil nutomeBahamas nutomeBhut" + + "an nutomeBouvet ƒudomekpo nutomeBotswana nutomeBelarus nutomeBelize " + + "nutomeCanada nutomeKokos (Kiling) fudomekpo nutomeKongo Kinshasa nut" + + "omeTitina Afrika repɔblik nutomeKongo Brazzaville nutomeSwitzerland " + + "nutomeKote d’Ivoire nutomeKook ƒudomekpo nutomeTsile nutomeKamerun n" + + "utomeTsaina nutomeKolombia nutomeKlipaton ƒudomekpo nutomeKosta Rika" + + " nutomeKuba nutomeKape Verde nutomeKristmas ƒudomekpo nutomeSaiprus " + + "nutomeTsɛk repɔblik nutomeGermania nutomeDiego Garsia nutomeDzibuti " + + "nutomeDenmark nutomeDominika nutomeDominika repɔblik nutomeAlgeria n" + + "utomeKeuta and Melilla nutomeEkuadɔ nutomeEstonia nutomeEgypte nutom" + + "eƔetoɖoƒe Sahara nutomeEritrea nutomeSpain nutomeEtiopia nutomeEurop" + + "a Wɔɖeka nutomeFinland nutomeFidzi nutomeFalkland ƒudomekpowo nutome" + + "Mikronesia nutomeFaroe ƒudomekpowo nutomeFrance nutomeGabɔn nutomeUn" + + "ited Kingdom nutomeGrenada nutomeGeorgia nutomeFrentsi Gayana nutome" + + "Guernse nutomeGhana nutomeGibraltar nutomeGrinland nutomeGambia nuto" + + "meGuini nutomeGuadelupe nutomeEkuatorial Guini nutomeGreece nutomeAn" + + "yiehe Georgia kple Anyiehe Sandwich ƒudomekpowo nutomeGuatemala nuto" + + "meGuam nutomeGini-Bisao nutomeGuyanaduHɔng Kɔng SAR Tsaina nutomeHea" + + "rd kple Mcdonald ƒudomekpowo nutomeHondurasduKroatsia nutomeHaiti nu" + + "tomeHungari nutomeKanari ƒudomekpowo nutomeIndonesia nutomeIreland n" + + "utomeIsrael nutomeAisle of Man nutomeIndia nutomeBritaintɔwo ƒe indi" + + "a ƒudome nutomeiraqdukɔIran nutomeAiseland nutomeItalia nutomeDzɛse " + + "nutomeDzamaika nutomeYordan nutomeDzapan nutomeKenya nutomeKirgizsta" + + "n nutomeKambodia nutomeKiribati nutomeKomoros nutomeSaint Kitis kple" + + " Nevis nutomeDziehe Korea nutomeAnyiehe Korea nutomeKuwait nutomeKay" + + "man ƒudomekpowo nutomeKazakstan nutomeLaos nutomeLebanɔn nutomeSaint" + + " Lusia nutomeLitsenstein nutomeSri Lanka nutomeLiberia nutomeLɛsoto " + + "nutomeLituania nutomeLazembɔg nutomeLatvia nutomeLibya nutomeMoroko " + + "nutomeMonako nutomeMoldova nutomeMontenegro nutomeSaint Martin nutom" + + "eMadagaska nutomeMarshal ƒudomekpowo nutomeMakedonia nutomeMali nuto" + + "meMyanmar (Burma) nutomeMongolia nutomeMacau SAR Tsaina nutomeDziehe" + + " Marina ƒudomekpowo nutomeMartiniki nutomeMauritania nutomeMontserra" + + "t nutomeMalta nutomemauritiusdukɔmaldivesdukɔMalawi nutomeMexico nut" + + "omeMalaysia nutomeMozambiki nutomeNamibia nutomeNew Kaledonia nutome" + + "Niger nutomeNorfolk ƒudomekpo nutomeNigeria nutomeNicaraguadukɔNethe" + + "rlands nutomeNorway nutomeNepal nutomeNauru nutomeNiue nutomeNew Zea" + + "land nutomeOman nutomePanama nutomePeru nutomeFrentsi Pɔlinesia nuto" + + "mePapua New Gini nutomeFilipini nutomePakistan nutomePoland nutomeSa" + + "int Pierre kple Mikelɔn nutomePitkairn ƒudomekpo nutomePuerto Riko n" + + "utomePalestinia nutomePortugal nutomePalau nutomeParagua nutomeKatar" + + " nutomeOutlaying Oceania nutomeRéunion nutomeRomania nutomeRussia nu" + + "tomeRwanda nutomeSaudi Arabia nutomeSolomon ƒudomekpowo nutomeSeshɛl" + + "s nutomeSudan nutomeSweden nutomeSingapɔr nutomeSaint Helena nutomeS" + + "lovenia nutomeSvalbard kple Yan Mayen nutomeSlovakia nutomeSierra Le" + + "one nutomeSan Marino nutomeSenegal nutomeSomalia nutomeSuriname nuto" + + "meSão Tomé kple Príncipe nutomeEl Salvadɔ nutomeSiria nutomeSwazilan" + + "d nutomeTristan da Kunha nutomeTɛks kple Kaikos ƒudomekpowo nutomeTs" + + "ad nutomeAnyiehe Franseme nutomeTogo nutomeThailand nutomeTajikistan" + + " nutomeTokelau nutomeTimor-Leste nutomeTɛkmenistan nutomeTunisia nut" + + "omeTonga nutomeTɛki nutomeTrinidad kple Tobago nutomeTuvalu nutomeTa" + + "iwan nutomeTanzania nutomeUkraine nutomeUganda nutomeU.S. Minor Outl" + + "aying ƒudomekpowo nutomeUSA nutomeuruguaydukɔUzbekistan nutomeVatika" + + "ndu nutomeSaint Vincent kple Grenadine nutomeVenezuela nutomeBritain" + + "tɔwo ƒe Virgin ƒudomekpowo nutomeU.S. Vɛrgin ƒudomekpowo nutomeVietn" + + "am nutomeVanuatu nutomeWallis kple Futuna nutomeSamoa nutomeYemen nu" + + "tomeMayotte nutomeAnyiehe Africa nutomeZambia nutomeZimbabwe nutomen" + + "utome manyaxexemeAfrika nutomeDziehe Amerika nutomeAnyiehe Amerika n" + + "utomeOceania nutomeƔetoɖoƒelɔƒo Afrika nutomeTitina Amerika nutomeƔe" + + "dzeƒe Afrika nutomeDziehe Afrika nutomeTitina Afrika nutomeAnyiehelɔ" + + "ƒo Afrika nutomeAmerika nutomeDziehelɔƒo Amerika nutomeKaribbea nut" + + "omeƔedzeƒe Asia nutomeAnyiehelɔƒo Asia nutomeAnyiehe Ɣedzeƒe Afrika " + + "nutomeAnyiehelɔƒo Europa nutomeAustralia kple New Zealand nutomeMela" + + "nesia nutomeMikronesiaPɔlinesia nutomeAsia nutomeTitina Asia nutomeƔ" + + "etoɖoƒelɔƒo Asia nutomeEuropa nutomeƔedzeƒe Europa nutomeDziehelɔƒo " + + "Europa nutomeƔetoɖoƒelɔƒo Europa nutomeLatin Amerika nutome", + []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab, - 0x00bb, 0x00c7, 0x00d9, 0x00eb, 0x0106, 0x0116, 0x012a, 0x0134, - 0x0151, 0x0165, 0x0189, 0x0199, 0x01ab, 0x01b9, 0x01d0, 0x01e0, - 0x01ee, 0x01fc, 0x0206, 0x0225, 0x0233, 0x023f, 0x024f, 0x024f, - 0x025b, 0x0267, 0x0271, 0x0286, 0x0294, 0x02a8, 0x02b4, 0x02c0, - 0x02e6, 0x0301, 0x0335, 0x0352, 0x0366, 0x0383, 0x039c, 0x03a4, - 0x03b2, 0x03ba, 0x03cc, 0x03eb, 0x03fd, 0x0405, 0x0418, 0x0418, - 0x0433, 0x043d, 0x0447, 0x0455, 0x0470, 0x047c, 0x0488, 0x0498, + 0x0000, 0x001b, 0x0029, 0x0044, 0x0056, 0x0073, 0x0082, 0x0090, + 0x009e, 0x00ab, 0x00bb, 0x00cb, 0x00df, 0x00ed, 0x00fd, 0x0109, + 0x0121, 0x0132, 0x0151, 0x0160, 0x0171, 0x017f, 0x0192, 0x01a1, + 0x01af, 0x01bd, 0x01c9, 0x01e1, 0x01ef, 0x01fc, 0x020a, 0x020a, + 0x0217, 0x0225, 0x0232, 0x024a, 0x0259, 0x0267, 0x0274, 0x0281, + 0x02a0, 0x02b5, 0x02d3, 0x02eb, 0x02fd, 0x0313, 0x0329, 0x0335, + 0x0343, 0x0350, 0x035f, 0x0379, 0x038a, 0x0395, 0x03a6, 0x03a6, + 0x03c0, 0x03ce, 0x03e4, 0x03f3, 0x0406, 0x0414, 0x0422, 0x0431, // Entry 40 - 7F - 0x04c3, 0x04cd, 0x04e7, 0x04f5, 0x0505, 0x0511, 0x052c, 0x053c, - 0x054a, 0x055a, 0x0575, 0x0581, 0x0589, 0x05aa, 0x05c0, 0x05d9, - 0x05eb, 0x05f5, 0x0614, 0x0622, 0x0630, 0x0651, 0x065d, 0x0665, - 0x0677, 0x0687, 0x0695, 0x06a3, 0x06b5, 0x06de, 0x06e8, 0x072b, - 0x073d, 0x0745, 0x075e, 0x076c, 0x0792, 0x07bd, 0x07cd, 0x07dd, - 0x07e7, 0x07f7, 0x0814, 0x0828, 0x0832, 0x083e, 0x0851, 0x085d, - 0x08a7, 0x08af, 0x08b7, 0x08c3, 0x08d1, 0x08db, 0x08e9, 0x08f5, - 0x08ff, 0x090b, 0x091f, 0x092d, 0x093d, 0x095a, 0x0979, 0x0994, - // Entry 80 - BF - 0x09ab, 0x09b7, 0x09d6, 0x09e8, 0x09f0, 0x09fa, 0x0a0f, 0x0a25, - 0x0a36, 0x0a46, 0x0a52, 0x0a64, 0x0a78, 0x0a88, 0x0a94, 0x0aa0, - 0x0aac, 0x0abe, 0x0acf, 0x0ae4, 0x0af8, 0x0b17, 0x0b2b, 0x0b33, - 0x0b50, 0x0b62, 0x0b81, 0x0bb1, 0x0bc1, 0x0bd7, 0x0be7, 0x0bf1, - 0x0c05, 0x0c13, 0x0c1f, 0x0c2d, 0x0c3d, 0x0c4d, 0x0c5d, 0x0c7a, - 0x0c84, 0x0c9f, 0x0caf, 0x0cc1, 0x0cd3, 0x0ce3, 0x0ced, 0x0cf7, - 0x0cff, 0x0d14, 0x0d1c, 0x0d28, 0x0d30, 0x0d57, 0x0d79, 0x0d89, - 0x0d99, 0x0da5, 0x0dc6, 0x0dd4, 0x0de7, 0x0e12, 0x0e28, 0x0e32, - // Entry C0 - FF - 0x0e42, 0x0e4c, 0x0e69, 0x0e77, 0x0e87, 0x0e93, 0x0e9f, 0x0eab, - 0x0ecc, 0x0eed, 0x0efb, 0x0f05, 0x0f13, 0x0f23, 0x0f3a, 0x0f4c, - 0x0f7d, 0x0f8d, 0x0fa4, 0x0fb7, 0x0fc5, 0x0fd5, 0x0fe3, 0x0fe3, - 0x1006, 0x1016, 0x1016, 0x1022, 0x1034, 0x1050, 0x1077, 0x107d, - 0x10af, 0x10b7, 0x10c5, 0x10d9, 0x10e7, 0x1100, 0x1118, 0x1122, - 0x112c, 0x1138, 0x1158, 0x1164, 0x1170, 0x1182, 0x1192, 0x119e, - 0x11c9, 0x11f9, 0x1207, 0x121b, 0x1229, 0x1256, 0x1268, 0x129c, - 0x12c7, 0x12d7, 0x12e5, 0x130c, 0x1316, 0x1316, 0x1320, 0x132c, - // Entry 100 - 13F - 0x1357, 0x1365, 0x1375, 0x13ac, 0x13b4, 0x13c0, 0x13f1, 0x140a, - 0x141a, 0x1435, 0x1456, 0x1471, 0x148c, 0x14ab, 0x14c2, 0x14d0, - 0x14ed, 0x14f9, 0x1512, 0x1527, 0x1548, 0x155f, 0x158c, 0x15a0, - 0x15c7, 0x15db, 0x15e5, 0x1602, 0x161b, 0x1627, 0x1642, 0x165d, - 0x1678, 0x1697, + 0x044a, 0x0458, 0x0470, 0x047e, 0x048c, 0x0499, 0x04b2, 0x04c0, + 0x04cc, 0x04da, 0x04f0, 0x04f0, 0x04fe, 0x050a, 0x0526, 0x0537, + 0x0550, 0x055d, 0x056a, 0x057f, 0x058d, 0x059b, 0x05b0, 0x05be, + 0x05ca, 0x05da, 0x05e9, 0x05f6, 0x0602, 0x0612, 0x0629, 0x0636, + 0x066f, 0x067f, 0x068a, 0x069b, 0x06a3, 0x06c0, 0x06e7, 0x06f1, + 0x0700, 0x070c, 0x071a, 0x0734, 0x0744, 0x0752, 0x075f, 0x0772, + 0x077e, 0x07a3, 0x07ac, 0x07b7, 0x07c6, 0x07d3, 0x07e0, 0x07ef, + 0x07fc, 0x0809, 0x0815, 0x0826, 0x0835, 0x0844, 0x0852, 0x086f, + // Entry 80 - BF + 0x0882, 0x0896, 0x08a3, 0x08bd, 0x08cd, 0x08d8, 0x08e7, 0x08f9, + 0x090b, 0x091b, 0x0929, 0x0937, 0x0946, 0x0956, 0x0963, 0x096f, + 0x097c, 0x0989, 0x0997, 0x09a8, 0x09bb, 0x09cb, 0x09e6, 0x09f6, + 0x0a01, 0x0a17, 0x0a26, 0x0a3d, 0x0a5e, 0x0a6e, 0x0a7f, 0x0a90, + 0x0a9c, 0x0aaa, 0x0ab7, 0x0ac4, 0x0ad1, 0x0ae0, 0x0af0, 0x0afe, + 0x0b12, 0x0b1e, 0x0b37, 0x0b45, 0x0b53, 0x0b65, 0x0b72, 0x0b7e, + 0x0b8a, 0x0b95, 0x0ba7, 0x0bb2, 0x0bbf, 0x0bca, 0x0be3, 0x0bf8, + 0x0c07, 0x0c16, 0x0c23, 0x0c44, 0x0c5e, 0x0c70, 0x0c81, 0x0c90, + // Entry C0 - FF + 0x0c9c, 0x0caa, 0x0cb6, 0x0cce, 0x0cdd, 0x0ceb, 0x0ceb, 0x0cf8, + 0x0d05, 0x0d18, 0x0d33, 0x0d42, 0x0d4e, 0x0d5b, 0x0d6b, 0x0d7e, + 0x0d8d, 0x0dab, 0x0dba, 0x0dcd, 0x0dde, 0x0dec, 0x0dfa, 0x0e09, + 0x0e09, 0x0e29, 0x0e3b, 0x0e3b, 0x0e47, 0x0e57, 0x0e6e, 0x0e93, + 0x0e9e, 0x0eb5, 0x0ec0, 0x0ecf, 0x0ee0, 0x0eee, 0x0f00, 0x0f13, + 0x0f21, 0x0f2d, 0x0f39, 0x0f54, 0x0f61, 0x0f6e, 0x0f7d, 0x0f8b, + 0x0f98, 0x0fc0, 0x0fc0, 0x0fca, 0x0fd6, 0x0fe7, 0x0ff7, 0x101a, + 0x102a, 0x1055, 0x1075, 0x1083, 0x1091, 0x10aa, 0x10b6, 0x10b6, + // Entry 100 - 13F + 0x10c2, 0x10d0, 0x10e5, 0x10f2, 0x1101, 0x110d, 0x1113, 0x1120, + 0x1135, 0x114b, 0x1159, 0x1178, 0x118d, 0x11a4, 0x11b8, 0x11cc, + 0x11e7, 0x11f5, 0x1210, 0x121f, 0x1234, 0x124d, 0x126c, 0x1287, + 0x12a8, 0x12b8, 0x12c2, 0x12d3, 0x12de, 0x12f0, 0x130d, 0x131a, + 0x1331, 0x134b, 0x136a, 0x137e, }, }, - { // ca - caRegionStr, - caRegionIdx, + { // el + elRegionStr, + elRegionIdx, }, - { // ce - "Айъадаларан гӀайреАндорраӀарбийн Цхьанатоьхна ЭмираташОвхӀан-пачхьалкхАн" + - "тигуа а, Барбуда аАнгильяАлбаниЭрмалойчоьАнголаАнтарктидаАргентинаА" + - "мерикан СамоаАвстриАвстралиАрубаАландан гӀайренашАзербайджанБосни а" + - ", Герцеговина аБарбадосБангладешБельгиБуркина- ФасоБолгариБахрейнБур" + - "ундиБенинСен-БартельмиБермудан гӀайренашБруней-ДаруссаламБоливиБонэ" + - "йр, Синт-Эстатиус а, Саба аБразилиБагаман гӀайренашБутанБувен гӀайр" + - "еБотсванаБелоруссиБелизКанадаКокосийн гӀайренашДемократин Республик" + - "а КонгоЮккъерчу Африкин РеспубликаРеспублика КонгоШвейцариКот-Д’иву" + - "арКукан гӀайренашЧилиКамерунКитайКолумбиКлиппертонКоста-РикаКубаКаб" + - "о-ВердеКюрасаоГӀайре ӏиса пайхӏамар вина деКипрЧехиГерманиДиего-Гар" + - "сиДжибутиДаниДоминикаДоминикан РеспубликаАлжирСеута а, Мелилья аЭкв" + - "адорЭстониМисарМалхбузен СаьхьараЭритрейИспаниЭфиопиЕвробартФинлянд" + - "иФиджиФолклендан гӀайренашМикронезин Федеративни штаташФарерийн гӀа" + - "йренашФранциГабонЙоккха БританиГренадаГуьржийчоьФранцузийн ГвианаГе" + - "рнсиГанаГибралтарГренландиГамбиГвинейГваделупаЭкваторан ГвинейГреци" + - "Къилба Джорджи а, Къилба Гавайн гӀайренаш аГватемалаГуамГвиней-Биса" + - "уГайанаГонконг (ша-къаьстина кӀошт)Херд гӀайре а, Макдональд гӀайре" + - "наш аГондурасХорватиГаитиВенгриКанаран гӀайренашИндонезиИрландиИзра" + - "ильМэн гӀайреИндиБританин латта Индин океанехьӀиракъГӀажарийчоьИсла" + - "ндиИталиДжерсиЯмайкаУрданЯпониКениКиргизиКамбоджаКирибатиКоморашСен" + - "т-Китс а, Невис аКъилбаседа КорейКъилба КорейКувейтКайман гӀайренаш" + - "КазахстанЛаосЛиванСент-ЛюсиЛихтенштейнШри-ЛанкаЛибериЛесотоЛитваЛюк" + - "сембургЛатвиЛивиМароккоМонакоМолдавиӀаьржаламанхойчоьСен-МартенМада" + - "гаскарМаршаллан гӀайренашМакедониМалиМьянма (Бирма)МонголиМакао (ша" + - "-къаьстина кӀошт)Къилбаседа Марианан гӀайренашМартиникаМавританиМонт" + - "серратМальтаМаврикиМальдивашМалавиМексикаМалайзиМозамбикНамибиКерла" + - " КаледониНигерНорфолк гӀайреНигериНикарагуаНидерландашНорвегиНепалНа" + - "уруНиуэКерла ЗеландиОманПанамаПеруФранцузийн ПолинезиПапуа — Керла " + - "ГвинейФилиппинашПакистанПольшаСен-Пьер а, Микелон аПиткэрн гӀайрена" + - "шПуэрто-РикоПалестинан латтанашПортугалиПалауПарагвайКатарАрахьара " + - "ОкеаниРеюньонРумыниСербиРоссиРуандаСаӀудийн АравиСоломонан гӀайрена" + - "шСейшелан гӀайренашСуданШвециСингапурСийлахьчу Еленин гӀайреСловени" + - "Шпицберген а, Ян-Майен аСловакиСьерра- ЛеонеСан-МариноСенегалСомали" + - "СуринамКъилба СуданСан-Томе а, Принсипи аСальвадорСинт-МартенШемаСв" + - "азилендТристан-да- КуньяТёркс а, Кайкос а гӀайренашЧадФранцузийн къ" + - "илба латтанашТогоТаиландТаджикистанТокелауМалхбален ТиморТуркмениТу" + - "нисТонгаТуркойчоьТринидад а, Тобаго аТувалуТайваньТанзаниУкраинаУга" + - "ндаАЦШн арахьара кегийн гӀайренашЦхьанатоьхна ШтаташУругвайУзбекист" + - "анВатиканСент-Винсент а, Гренадинаш аВенесуэлаВиргинийн гӀайренаш (" + - "Британи)Виргинийн гӀайренаш (АЦШ)ВьетнамВануатуУоллис а, Футуна аСа" + - "моаКосовоЙеменМайоттаКъилба-Африкин РеспубликаЗамбиЗимбабвеЙоьвзуш " + - "йоцу регионДерригдуьненанАфрикаКъилбаседа АмерикаКъилба АмерикаОкеа" + - "ниМалхбузен АфрикаЮккъера АмерикаМалхбален АфрикаКъилбаседа АфрикаЮ" + - "ккъера АфрикаКъилба АфрикаКъилбаседа а, къилба а АмерикаКъилбаседа " + - "Америка – АЦШ а, Канада аКарибашЮккъера АзиКъилба АзиКъилба-малхбал" + - "ен АзиКъилба ЕвропаАвстралазиМеланезиМикронезиПолинезиАзиЮккъера Ма" + - "лхбалеЮккъера а, Гергара а МалхбалеЕвропаМалхбален ЕвропаКъилбаседа" + - " ЕвропаМалхбузен ЕвропаЛатинан Америка", - []uint16{ // 290 elements + { // en + enRegionStr, + enRegionIdx, + }, + {}, // en-AU + {}, // en-IN + {}, // en-NZ + { // eo + "AndoroUnuiĝintaj Arabaj EmirlandojAfganujoAntigvo-BarbudoAngviloAlbanujo" + + "ArmenujoAngoloAntarktoArgentinoAŭstrujoAŭstralioAruboAzerbajĝanoBosn" + + "io-HercegovinoBarbadoBangladeŝoBelgujoBurkinoBulgarujoBarejnoBurundo" + + "BeninoBermudojBrunejoBolivioBraziloBahamojButanoBocvanoBelorusujoBel" + + "izoKanadoCentr-Afrika RespublikoKongoloSvisujoEbur-BordoKukinsulojĈi" + + "lioKamerunoĈinujoKolombioKostarikoKuboKabo-VerdoKiproĈeĥujoGermanujo" + + "ĜibutioDanujoDominikoDomingoAlĝerioEkvadoroEstonujoEgiptoOkcidenta " + + "SaharoEritreoHispanujoEtiopujoFinnlandoFiĝojMikronezioFeroojFrancujo" + + "GabonoUnuiĝinta ReĝlandoGrenadoKartvelujoFranca GvianoGanaoĜibraltar" + + "oGronlandoGambioGvineoGvadelupoEkvatora GvineoGrekujoSud-Georgio kaj" + + " Sud-SandviĉinsulojGvatemaloGvamoGvineo-BisaŭoGujanoHerda kaj Makdon" + + "aldaj InsulojHonduroKroatujoHaitioHungarujoIndonezioIrlandoIsraeloHi" + + "ndujoBrita Hindoceana TeritorioIrakoIranoIslandoItalujoJamajkoJordan" + + "ioJapanujoKenjoKirgizistanoKamboĝoKiribatoKomorojSent-Kristofo kaj N" + + "evisoNord-KoreoSud-KoreoKuvajtoKejmanojKazaĥstanoLaosoLibanoSent-Luc" + + "ioLiĥtenŝtejnoSri-LankoLiberioLesotoLitovujoLuksemburgoLatvujoLibioM" + + "arokoMonakoMoldavujoMadagaskaroMarŝalojMakedonujoMalioMjanmaoMongolu" + + "joNord-MarianojMartinikoMaŭritanujoMaltoMaŭricioMaldivojMalavioMeksi" + + "koMalajzioMozambikoNamibioNov-KaledonioNiĝeroNorfolkinsuloNiĝerioNik" + + "aragvoNederlandoNorvegujoNepaloNauroNiuoNov-ZelandoOmanoPanamoPeruoF" + + "ranca PolinezioPapuo-Nov-GvineoFilipinojPakistanoPollandoSent-Piero " + + "kaj MikelonoPitkarna InsuloPuerto-RikoPortugalujoBelaŭoParagvajoKata" + + "roReunioRumanujoRusujoRuandoSaŭda ArabujoSalomonojSejŝelojSudanoSved" + + "ujoSingapuroSent-HelenoSlovenujoSvalbardo kaj Jan-Majen-insuloSlovak" + + "ujoSiera-LeonoSan-MarinoSenegaloSomalujoSurinamoSao-Tomeo kaj Princi" + + "peoSalvadoroSirioSvazilandoĈadoTogoloTajlandoTaĝikujoTurkmenujoTuniz" + + "ioTongoTurkujoTrinidado kaj TobagoTuvaloTajvanoTanzanioUkrajnoUgando" + + "Usonaj malgrandaj insulojUsonoUrugvajoUzbekujoVatikanoSent-Vincento " + + "kaj la GrenadinojVenezueloBritaj VirgulininsulojUsonaj Virgulininsul" + + "ojVjetnamoVanuatuoValiso kaj FutunoSamooJemenoMajotoSud-AfrikoZambio" + + "Zimbabvo", + []uint16{ // 261 elements // Entry 0 - 3F - 0x0000, 0x0023, 0x0031, 0x0069, 0x0088, 0x00ac, 0x00ba, 0x00c6, - 0x00da, 0x00e6, 0x00fa, 0x010c, 0x0127, 0x0133, 0x0143, 0x014d, - 0x016e, 0x0184, 0x01ac, 0x01bc, 0x01ce, 0x01da, 0x01f2, 0x0200, - 0x020e, 0x021c, 0x0226, 0x023f, 0x0262, 0x0283, 0x028f, 0x02c6, - 0x02d4, 0x02f5, 0x02ff, 0x0316, 0x0326, 0x0338, 0x0342, 0x034e, - 0x0371, 0x03a5, 0x03d9, 0x03f8, 0x0408, 0x041e, 0x043b, 0x0443, - 0x0451, 0x045b, 0x0469, 0x047d, 0x0490, 0x0498, 0x04ab, 0x04b9, - 0x04ef, 0x04f7, 0x04ff, 0x050d, 0x0522, 0x0530, 0x0538, 0x0548, + 0x0000, 0x0000, 0x0006, 0x0023, 0x002b, 0x003a, 0x0041, 0x0049, + 0x0051, 0x0057, 0x005f, 0x0068, 0x0068, 0x0071, 0x007b, 0x0080, + 0x0080, 0x008c, 0x009e, 0x00a5, 0x00b0, 0x00b7, 0x00be, 0x00c7, + 0x00ce, 0x00d5, 0x00db, 0x00db, 0x00e3, 0x00ea, 0x00f1, 0x00f1, + 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0116, 0x011c, 0x0122, + 0x0122, 0x0122, 0x0139, 0x0140, 0x0147, 0x0151, 0x015b, 0x0161, + 0x0169, 0x0170, 0x0178, 0x0178, 0x0181, 0x0185, 0x018f, 0x018f, + 0x018f, 0x0194, 0x019c, 0x01a5, 0x01a5, 0x01ad, 0x01b3, 0x01bb, // Entry 40 - 7F - 0x056f, 0x0579, 0x0599, 0x05a7, 0x05b3, 0x05bd, 0x05e0, 0x05ee, - 0x05fa, 0x0606, 0x0616, 0x0626, 0x0630, 0x0657, 0x068f, 0x06b2, - 0x06be, 0x06c8, 0x06e3, 0x06f1, 0x0705, 0x0726, 0x0732, 0x073a, - 0x074c, 0x075e, 0x0768, 0x0774, 0x0786, 0x07a5, 0x07af, 0x07fe, - 0x0810, 0x0818, 0x082f, 0x083b, 0x086e, 0x08b2, 0x08c2, 0x08d0, - 0x08da, 0x08e6, 0x0907, 0x0917, 0x0925, 0x0933, 0x0946, 0x094e, - 0x0985, 0x0991, 0x09a7, 0x09b5, 0x09bf, 0x09cb, 0x09d7, 0x09e1, - 0x09eb, 0x09f3, 0x0a01, 0x0a11, 0x0a21, 0x0a2f, 0x0a52, 0x0a71, - // Entry 80 - BF - 0x0a88, 0x0a94, 0x0ab3, 0x0ac5, 0x0acd, 0x0ad7, 0x0ae8, 0x0afe, - 0x0b0f, 0x0b1b, 0x0b27, 0x0b31, 0x0b45, 0x0b4f, 0x0b57, 0x0b65, - 0x0b71, 0x0b7f, 0x0ba1, 0x0bb4, 0x0bc8, 0x0bed, 0x0bfd, 0x0c05, - 0x0c1e, 0x0c2c, 0x0c5b, 0x0c93, 0x0ca5, 0x0cb7, 0x0ccb, 0x0cd7, - 0x0ce5, 0x0cf7, 0x0d03, 0x0d11, 0x0d1f, 0x0d2f, 0x0d3b, 0x0d56, - 0x0d60, 0x0d7b, 0x0d87, 0x0d99, 0x0daf, 0x0dbd, 0x0dc7, 0x0dd1, - 0x0dd9, 0x0df2, 0x0dfa, 0x0e06, 0x0e0e, 0x0e33, 0x0e59, 0x0e6d, - 0x0e7d, 0x0e89, 0x0eae, 0x0ecf, 0x0ee4, 0x0f09, 0x0f1b, 0x0f25, - // Entry C0 - FF - 0x0f35, 0x0f3f, 0x0f5c, 0x0f6a, 0x0f76, 0x0f80, 0x0f8a, 0x0f96, - 0x0fb1, 0x0fd6, 0x0ff9, 0x1003, 0x100d, 0x101d, 0x1049, 0x1057, - 0x1082, 0x1090, 0x10a8, 0x10bb, 0x10c9, 0x10d5, 0x10e3, 0x10fa, - 0x1121, 0x1133, 0x1148, 0x1150, 0x1162, 0x1181, 0x11b2, 0x11b8, - 0x11ea, 0x11f2, 0x1200, 0x1216, 0x1224, 0x1241, 0x1251, 0x125b, - 0x1265, 0x1277, 0x129b, 0x12a7, 0x12b5, 0x12c3, 0x12d1, 0x12dd, - 0x1316, 0x133b, 0x1349, 0x135d, 0x136b, 0x139e, 0x13b0, 0x13e6, - 0x1414, 0x1422, 0x1430, 0x1450, 0x145a, 0x1466, 0x1470, 0x147e, - // Entry 100 - 13F - 0x14ae, 0x14b8, 0x14c8, 0x14ec, 0x1508, 0x1514, 0x1537, 0x1552, - 0x155e, 0x157d, 0x159a, 0x15b9, 0x15da, 0x15f5, 0x160e, 0x1645, - 0x1687, 0x1695, 0x16aa, 0x16bd, 0x16e3, 0x16fc, 0x1710, 0x1720, - 0x1732, 0x1742, 0x1748, 0x1767, 0x179c, 0x17a8, 0x17c7, 0x17e8, - 0x1807, 0x1824, + 0x01c2, 0x01ca, 0x01ca, 0x01d2, 0x01da, 0x01e0, 0x01f0, 0x01f7, + 0x0200, 0x0208, 0x0208, 0x0208, 0x0211, 0x0217, 0x0217, 0x0221, + 0x0227, 0x022f, 0x0235, 0x0249, 0x0250, 0x025a, 0x0267, 0x0267, + 0x026c, 0x0277, 0x0280, 0x0286, 0x028c, 0x0295, 0x02a4, 0x02ab, + 0x02ce, 0x02d7, 0x02dc, 0x02ea, 0x02f0, 0x02f0, 0x030d, 0x0314, + 0x031c, 0x0322, 0x032b, 0x032b, 0x0334, 0x033b, 0x0342, 0x0342, + 0x0349, 0x0363, 0x0368, 0x036d, 0x0374, 0x037b, 0x037b, 0x0382, + 0x038a, 0x0392, 0x0397, 0x03a3, 0x03ab, 0x03b3, 0x03ba, 0x03d2, + // Entry 80 - BF + 0x03dc, 0x03e5, 0x03ec, 0x03f4, 0x03ff, 0x0404, 0x040a, 0x0414, + 0x0422, 0x042b, 0x0432, 0x0438, 0x0440, 0x044b, 0x0452, 0x0457, + 0x045d, 0x0463, 0x046c, 0x046c, 0x046c, 0x0477, 0x0480, 0x048a, + 0x048f, 0x0496, 0x049f, 0x049f, 0x04ac, 0x04b5, 0x04c1, 0x04c1, + 0x04c6, 0x04cf, 0x04d7, 0x04de, 0x04e5, 0x04ed, 0x04f6, 0x04fd, + 0x050a, 0x0511, 0x051e, 0x0526, 0x052f, 0x0539, 0x0542, 0x0548, + 0x054d, 0x0551, 0x055c, 0x0561, 0x0567, 0x056c, 0x057c, 0x058c, + 0x0595, 0x059e, 0x05a6, 0x05bd, 0x05cc, 0x05d7, 0x05d7, 0x05e2, + // Entry C0 - FF + 0x05e9, 0x05f2, 0x05f8, 0x05f8, 0x05fe, 0x0606, 0x0606, 0x060c, + 0x0612, 0x0620, 0x0629, 0x0632, 0x0638, 0x063f, 0x0648, 0x0653, + 0x065c, 0x067a, 0x0683, 0x068e, 0x0698, 0x06a0, 0x06a8, 0x06b0, + 0x06b0, 0x06c7, 0x06d0, 0x06d0, 0x06d5, 0x06df, 0x06df, 0x06df, + 0x06e4, 0x06e4, 0x06ea, 0x06f2, 0x06fb, 0x06fb, 0x06fb, 0x0705, + 0x070c, 0x0711, 0x0718, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x0767, 0x0767, 0x076c, 0x0774, 0x077c, 0x0784, 0x07a3, + 0x07ac, 0x07c2, 0x07d8, 0x07e0, 0x07e8, 0x07f9, 0x07fe, 0x07fe, + // Entry 100 - 13F + 0x0804, 0x080a, 0x0814, 0x081a, 0x0822, }, }, - { // cgg - "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" + - "wiraArubaniaArimeniyaAngoraArigentinaSamowa ya AmeerikaOsituriaOsitu" + - "reeriyaArubaAzabagyaniBoziniya na HezegovinaBabadosiBangaradeshiBubi" + - "rigiBokina FasoBurugariyaBahareniBurundiBeniniBerimudaBuruneiBoriivi" + - "yaBuraziiriBahamaButaniBotswanaBararusiBerizeKanadaDemokoratika Ripa" + - "aburika ya KongoEihanga rya Rwagati ya AfirikaKongoSwisiAivore Kosit" + - "iEbizinga bya KuukuChileKameruuniChinaKorombiyaKositarikaCubaEbizing" + - "a bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirimaaniGyibutiDeenima" + - "akaDominikaRipaaburika ya DominicaArigyeriyaIkwedaEsitoniyaMisiriEri" + - "teriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya FaakilandaMikironesi" + - "yaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana ya BufaransaGanaGi" + - "buraataGuriinirandiGambiyaGineGwaderupeGuniGuriisiGwatemaraGwamuGine" + - "bisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziyaIrerandiIsirairiI" + - "ndiyaIraakaIraaniAisilandiItareGyamaikaYorudaaniGyapaaniKenyaKirigiz" + - "istaniKambodiyaKiribatiKoromoSenti Kittis na NevisiKoreya AmatembaKo" + - "reya AmashuumaKuweitiEbizinga bya KayimaniKazakisitaniLayosiLebanoni" + - "Senti RusiyaLishenteniSirirankaLiberiyaLesothoLithuaniaLakizembaagaL" + - "atviyaLibyaMoroccoMonacoMoridovaMadagasikaEbizinga bya MarshaaMasedo" + - "oniaMariMyanamarMongoriaEbizinga by’amatemba ga MarianaMartiniqueMau" + - "riteeniyaMontserratiMaritaMaurishiasiMaridivesMarawiMexicomarayiziaM" + - "ozambiqueNamibiyaNiukaredoniaNaigyaEkizinga NorifokoNaigyeriyaNikara" + - "gwaHoorandiNoorweNepoNauruNiueNiuzirandiOmaaniPanamaPeruPolinesia ya" + - " BufaransaPapuaFiripinoPakisitaaniPoorandiSenti Piyerre na MikweronP" + - "itkainiPwetorikoPocugoPalaawuParagwaiKataRiyuniyoniRomaniyaRrashaRwa" + - "ndaSaudi AreebiyaEbizinga bya SurimaaniShesheresiSudaniSwideniSingap" + - "oSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSamarinoSenegoSomaar" + - "iyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiriyaSwazirandiEbizin" + - "ga bya Buturuki na KaikoChadiTogoTairandiTajikisitaniTokerawuBurugwe" + - "izooba bwa TimoriTurukimenisitaniTuniziaTongaButuruki /TakeTurinidad" + - " na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAmerikaUrugwaiUzibeki" + - "sitaniVatikaniSenti Vinsent na GurenadiniVenezuweraEbizinga bya Viri" + - "gini ebya BungyerezaEbizinga bya Virigini ebya AmerikaViyetinaamuVan" + - "uatuWarris na FutunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe", - []uint16{ // 259 elements + { // es + esRegionStr, + esRegionIdx, + }, + { // es-419 + es419RegionStr, + es419RegionIdx, + }, + { // es-AR + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054, - 0x005d, 0x0063, 0x0063, 0x006d, 0x007f, 0x0087, 0x0093, 0x0098, - 0x0098, 0x00a2, 0x00b8, 0x00c0, 0x00cc, 0x00d4, 0x00df, 0x00e9, - 0x00f1, 0x00f8, 0x00fe, 0x00fe, 0x0106, 0x010d, 0x0116, 0x0116, - 0x011f, 0x0125, 0x012b, 0x012b, 0x0133, 0x013b, 0x0141, 0x0147, - 0x0147, 0x0168, 0x0186, 0x018b, 0x0190, 0x019d, 0x01af, 0x01b4, - 0x01bd, 0x01c2, 0x01cb, 0x01cb, 0x01d5, 0x01d9, 0x01ee, 0x01ee, - 0x01ee, 0x01f7, 0x020b, 0x0216, 0x0216, 0x021d, 0x0227, 0x022f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x0246, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265, 0x026e, - 0x0276, 0x0280, 0x0280, 0x0286, 0x028b, 0x02a2, 0x02ae, 0x02ae, - 0x02b7, 0x02be, 0x02c8, 0x02d0, 0x02d7, 0x02ea, 0x02ea, 0x02ee, - 0x02f7, 0x0303, 0x030a, 0x030e, 0x0317, 0x031b, 0x0322, 0x0322, - 0x032b, 0x0330, 0x0339, 0x033f, 0x033f, 0x033f, 0x0348, 0x0350, - 0x0355, 0x035c, 0x035c, 0x0367, 0x036f, 0x0377, 0x0377, 0x037d, - 0x037d, 0x0383, 0x0389, 0x0392, 0x0397, 0x0397, 0x039f, 0x03a8, - 0x03b0, 0x03b5, 0x03c2, 0x03cb, 0x03d3, 0x03d9, 0x03ef, 0x03fe, - // Entry 80 - BF - 0x040e, 0x0415, 0x042a, 0x0436, 0x043c, 0x0444, 0x0450, 0x045a, - 0x0463, 0x046b, 0x0472, 0x047b, 0x0487, 0x048e, 0x0493, 0x049a, - 0x04a0, 0x04a8, 0x04a8, 0x04a8, 0x04b2, 0x04c6, 0x04d0, 0x04d4, - 0x04dc, 0x04e4, 0x04e4, 0x0505, 0x050f, 0x051b, 0x0526, 0x052c, - 0x0537, 0x0540, 0x0546, 0x054c, 0x0555, 0x055f, 0x0567, 0x0573, - 0x0579, 0x058a, 0x0594, 0x059d, 0x05a5, 0x05ab, 0x05af, 0x05b4, - 0x05b8, 0x05c2, 0x05c8, 0x05ce, 0x05d2, 0x05e8, 0x05ed, 0x05f5, - 0x0600, 0x0608, 0x0621, 0x0629, 0x0632, 0x0632, 0x0638, 0x063f, - // Entry C0 - FF - 0x0647, 0x064b, 0x064b, 0x0655, 0x065d, 0x065d, 0x0663, 0x0669, - 0x0677, 0x068d, 0x0697, 0x069d, 0x06a4, 0x06ab, 0x06b7, 0x06c2, - 0x06c2, 0x06cd, 0x06da, 0x06e2, 0x06e8, 0x06f1, 0x06fa, 0x06fa, - 0x0710, 0x071c, 0x071c, 0x0722, 0x072c, 0x072c, 0x074a, 0x074f, - 0x074f, 0x0753, 0x075b, 0x0767, 0x076f, 0x0787, 0x0797, 0x079e, - 0x07a3, 0x07b1, 0x07c4, 0x07ca, 0x07d3, 0x07db, 0x07e3, 0x07e9, - 0x07e9, 0x07f0, 0x07f7, 0x0804, 0x080c, 0x0827, 0x0831, 0x0856, - 0x0878, 0x0883, 0x088a, 0x089a, 0x08a0, 0x08a0, 0x08a6, 0x08ac, - // Entry 100 - 13F - 0x08b9, 0x08bf, 0x08c7, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // chr - "ᎠᏂᏙᎳᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏᎠᏫᎨᏂᏍᏖᏂᎤᏪᏘ ᎠᎴ ᏆᏊᏓᎠᏂᎩᎳᎠᎵᏇᏂᏯᎠᎵᎻᏂᎠᎠᏂᎪᎳᏧᏁᏍᏓᎸᎠᏥᏂᏘᏂᎠᎠᎺ" + - "ᎵᎧ ᏌᎼᎠᎠᏍᏟᏯᎡᎳᏗᏜᎠᎷᏆᎣᎴᏅᏓ ᏚᎦᏚᏛᎢᎠᏏᎵᏆᏌᏂᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫᏆᏇᏙᏍᏆᏂᎦᎵᏕᏍᏇᎵᏥᎥᎻᏋᎩᎾ ᏩᏐ" + - "ᏊᎵᎨᎵᎠᏆᎭᎴᎢᏂᏋᎷᏂᏗᏆᏂᎢᏂᎠᏥᎸᏉᏗ ᏆᏕᎳᎻᏆᏊᏓᏊᎾᎢᏉᎵᏫᎠᏆᏏᎵᎢᎾᏍᎩ ᏆᎭᎹᏍᏊᏔᏂᏊᏪ ᎤᎦᏚᏛᎢᏆᏣᏩᎾᏇ" + - "ᎳᎷᏍᏇᎵᏍᎨᎾᏓᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛᎧᏂᎪᎬᎿᎨᏍᏛ ᎠᏰᏟ ᏍᎦᏚᎩᎧᏂᎪ (ᏍᎦᏚᎩ)ᏍᏫᏍᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗᎠ" + - "ᏓᏍᏓᏴᎲᏍᎩ ᎤᎦᏚᏛᏥᎵᎧᎹᎷᏂᏓᎶᏂᎨᏍᏛᎪᎸᎻᏈᎢᎠᎪᏍᏓ ᎵᎧᎫᏆᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗᏂᎦᏓ ᎤᏂᎲ ᎾᎿ ᎫᎳᎨᎣᏓᏂ" + - "ᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢᏌᎢᏆᏍᏤᎩ ᏍᎦᏚᎩᎠᏂᏛᏥᏥᏊᏗᏗᏂᎹᎦᏙᎻᏂᎧᏙᎻᏂᎧᏂ ᏍᎦᏚᎩᎠᎵᏥᎵᏯᎡᏆᏙᎵᎡᏍᏙᏂᏯᎢᏥᏈᎢᎡ" + - "ᎵᏟᏯᎠᏂᏍᏆᏂᏱᏫᏂᎦᏙᎯᏫᏥᏩᎩ ᏚᎦᏚᏛᎢᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂᏏᏯᏪᎶ ᏚᎦᏚᏛᎢᎦᎸᏥᏱᎦᏉᏂᎩᎵᏏᏲᏋᎾᏓᏣ" + - "ᎠᏥᎢᎠᏂᎦᎸᏥ ᎩᎠᎬᏂᏏᎦᎠᎾᏥᏆᎵᏓᎢᏤᏍᏛᏱᎦᎹᏈᎢᎠᎫᏇᏩᏓᎷᏇᎡᏆᏙᎵᎠᎵ ᎩᎢᏂᎪᎢᎯᏧᎦᏃᏮ ᏣᏥᏱ ᎠᎴ ᎾᏍᎩ " + - "ᏧᎦᏃᏮ ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛᏩᏔᎹᎳᏆᎻᎫᏇ-ᏈᏌᎤᏫᎦᏯᎾᎰᏂᎩ ᎪᏂᎩᎲᏗ ᎤᎦᏚᏛᎢ ᎠᎴ ᎺᎩᏓᎾᎵᏗ ᏚᎦᏚᏛᎢᎧᎶᎡᏏ" + - "ᎠᎮᎢᏘᎲᏂᎦᎵᎢᏂᏙᏂᏍᏯᎠᎢᎴᏂᏗᎢᏏᎵᏱᎤᏍᏗ ᎤᎦᏚᏛᎢ ᎾᎿ ᎠᏍᎦᏯᎢᏅᏗᎾᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅᎢᎳᎩᎢᎴ" + - "ᏂᏧᏁᏍᏓᎸᎯᏲᎶᏨᎵᏏᏣᎺᎢᎧᏦᏓᏂᏣᏩᏂᏏᎨᏂᏯᎩᎵᏣᎢᏍᎧᎹᏉᏗᎠᏂᎧᎵᏆᏘᎪᎼᎳᏍᎠᏰᏟ ᎾᎿ ᎨᏥᎸᏉᏗ ᎠᏂᏪᏌ ᎠᎴ " + - "ᎠᏂᏁᏫᏍᏧᏴᏢ ᎪᎵᎠᏧᎦᏃᏮ ᎪᎵᎠᎫᏪᎢᏘᎨᎢᎹᏂ ᏚᎦᏚᏛᎢᎧᏎᎧᏍᏕᏂᎴᎣᏍᎴᏆᎾᏂᎵᎦᏗᏂᏍᏓᏂᏍᎵ ᎳᏂᎧᎳᏈᎵᏯᎴᏐ" + - "ᏙᎵᏗᏪᏂᎠᎸᎧᏎᏋᎩᎳᏘᏫᎠᎵᏈᏯᎼᎶᎪᎹᎾᎪᎹᎵᏙᏫᎠᎼᏂᏔᏁᎦᎶᎠᏥᎸᏉᏗ ᏡᏡᎹᏓᎦᏍᎧᎵᎹᏌᎵ ᏚᎪᏚᏛᎹᏏᏙᏂᎢᎠᎹᎵᎹ" + - "ᏯᎹᎵᎹᏂᎪᎵᎠᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ) ᏣᎢᎾᏍᎩ ᎤᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛᎹᏘᏂᎨᎹᏘᎢᏯᎹ" + - "ᏂᏘᏌᎳᏗᎹᎵᏔᎼᎵᏏᎥᏍᎹᎵᏗᏫᏍᎹᎳᏫᏍᏆᏂᏱᎹᎴᏏᎢᎠᎼᏎᎻᏇᎩᎾᎻᏈᎢᏯᎢᏤ ᎧᎵᏙᏂᎠᏂᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢᏂᏥᎵᏯᏂᎧ" + - "ᎳᏆᏁᏛᎳᏂᏃᏪᏁᏆᎵᏃᎤᎷᏂᏳᎢᏤ ᏏᎢᎴᏂᏗᎣᎺᏂᏆᎾᎹᏇᎷᎠᏂᎦᎸᏣ ᏆᎵᏂᏏᎠᏆᏇ ᎢᏤ ᎩᏂᎠᏂᏈᎵᎩᏃᏆᎩᏍᏖᏂᏉᎳᏂᏎ" + - "ᏂᏘ ᏈᏓ ᎠᎴ ᎻᏇᎶᏂᏈᎧᎵᏂ ᎤᎦᏚᏛᎢᏇᎡᏙ ᎵᎢᎪᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩᏉᏥᎦᎳᏆᎴᎠᏫᏆᎳᏇᎢᏯᎧᏔᎵᎶᎹᏂᏯᏒ" + - "ᏈᏯᏲᏂᎢᎶᏩᏂᏓᏌᎤᏗ ᎡᎴᏈᎠᏐᎶᎹᏂ ᏚᎦᏚᏛᎢᏏᎡᏥᎵᏍᏑᏕᏂᏍᏫᏕᏂᏏᏂᎦᏉᎵᎠᏥᎸᏉᏗ ᎮᎵᎾᏍᎶᏫᏂᎠᏍᎶᏩᎩᎠᏏᎡᎳ" + - " ᎴᎣᏂᎠᎹᏰᏟᏄᏬᎵᏍᏛᎾ ᎤᏔᏂᏗᎦᏙᎯᎡᎶᎯᏧᏴᏢ ᎠᎺᎵᎦᏧᎦᏃᏮ ᎠᎺᎵᎦᎠᎺᎵᎦᎢ", - []uint16{ // 272 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000c, 0x0042, 0x0057, 0x0071, 0x007d, 0x008c, - 0x009b, 0x00a7, 0x00b6, 0x00c8, 0x00de, 0x00ea, 0x00f6, 0x00ff, - 0x011b, 0x012d, 0x014d, 0x0159, 0x016b, 0x017a, 0x018a, 0x0199, - 0x01a8, 0x01b4, 0x01c0, 0x01dc, 0x01e5, 0x01ee, 0x01fa, 0x01fa, - 0x0206, 0x021c, 0x0225, 0x023b, 0x0247, 0x0253, 0x025c, 0x0265, - 0x0287, 0x0290, 0x02b6, 0x02ce, 0x02d7, 0x02f7, 0x031c, 0x0322, - 0x032e, 0x0340, 0x0352, 0x0352, 0x0362, 0x0368, 0x0387, 0x03ae, - 0x03d3, 0x03df, 0x03f2, 0x03fe, 0x03fe, 0x0407, 0x0413, 0x041f, - // Entry 40 - 7F - 0x043b, 0x044a, 0x044a, 0x0456, 0x0465, 0x0471, 0x0471, 0x047d, - 0x048f, 0x048f, 0x048f, 0x049e, 0x04a4, 0x04ba, 0x04ed, 0x0503, - 0x050f, 0x0518, 0x0524, 0x052d, 0x0539, 0x054f, 0x0558, 0x0561, - 0x056d, 0x057c, 0x058b, 0x0591, 0x059d, 0x05b9, 0x05c2, 0x0613, - 0x061f, 0x0625, 0x0638, 0x0641, 0x0654, 0x0694, 0x0694, 0x06a3, - 0x06ac, 0x06b8, 0x06b8, 0x06ca, 0x06d9, 0x06e5, 0x0712, 0x071e, - 0x074b, 0x0754, 0x075d, 0x076f, 0x0775, 0x077e, 0x078a, 0x0793, - 0x079f, 0x07a8, 0x07b7, 0x07c9, 0x07d5, 0x07e1, 0x0825, 0x0838, - // Entry 80 - BF - 0x084e, 0x085a, 0x0876, 0x0888, 0x0891, 0x089d, 0x089d, 0x08b2, - 0x08c2, 0x08ce, 0x08d7, 0x08e6, 0x08f5, 0x0901, 0x090a, 0x0913, - 0x091c, 0x092b, 0x093d, 0x0953, 0x0965, 0x097b, 0x098d, 0x0993, - 0x099f, 0x09ae, 0x09f9, 0x0a2d, 0x0a39, 0x0a45, 0x0a57, 0x0a60, - 0x0a6f, 0x0a7e, 0x0a87, 0x0a93, 0x0aa2, 0x0ab1, 0x0ac0, 0x0ad9, - 0x0ad9, 0x0af8, 0x0b04, 0x0b10, 0x0b1c, 0x0b22, 0x0b2b, 0x0b34, - 0x0b3a, 0x0b50, 0x0b59, 0x0b62, 0x0b68, 0x0b87, 0x0b9b, 0x0bad, - 0x0bbc, 0x0bc5, 0x0be9, 0x0c05, 0x0c18, 0x0c43, 0x0c4f, 0x0c5b, - // Entry C0 - FF - 0x0c6a, 0x0c73, 0x0c73, 0x0c73, 0x0c7f, 0x0c88, 0x0c91, 0x0c9d, - 0x0cb3, 0x0ccf, 0x0cde, 0x0ce7, 0x0cf3, 0x0d02, 0x0d1b, 0x0d2a, - 0x0d2a, 0x0d39, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, - 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, - 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, - 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, - 0x0d4c, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, - 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, - // Entry 100 - 13F - 0x0d58, 0x0d58, 0x0d58, 0x0d80, 0x0d89, 0x0d89, 0x0d9f, 0x0db8, - 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0dc7, + { // es-BO + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 40 - 7F + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // ckb - "ئەورووپای باشووریئاسیای ناوەندیئاسیای ڕۆژاوا", - []uint16{ // 285 elements + { // es-CL + "Bosnia y HerzegovinaSahara OccidentalTristán de AcuñaTimor-LesteIslas me" + + "nores alejadas de EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, // Entry C0 - FF + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0037, 0x0037, + 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0042, 0x0042, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x0042, 0x0063, + }, + }, + { // es-CO + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements + // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x003c, 0x0055, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 40 - 7F + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // cs - csRegionStr, - csRegionIdx, - }, - { // cy - "Ynys AscensionAndorraEmiradau Arabaidd UnedigAfghanistanAntigua a Barbud" + - "aAnguillaAlbaniaArmeniaAngolaAntarcticaYr ArianninSamoa AmericaAwstr" + - "iaAwstraliaArubaYnysoedd ÅlandAzerbaijanBosnia a HercegovinaBarbados" + - "BangladeshGwlad BelgBurkina FasoBwlgariaBahrainBurundiBeninSaint Bar" + - "thélemyBermudaBruneiBolifiaAntilles yr IseldiroeddBrasilY BahamasBhu" + - "tanYnys BouvetBotswanaBelarwsBelizeCanadaYnysoedd Cocos (Keeling)Y C" + - "ongo - KinshasaGweriniaeth Canolbarth AffricaY Congo - BrazzavilleY " + - "SwistirCôte d’IvoireYnysoedd CookChileCamerŵnTsieinaColombiaYnys Cli" + - "ppertonCosta RicaCiwbaCabo VerdeCuraçaoYnys y NadoligCyprusGweriniae" + - "th TsiecYr AlmaenDiego GarciaDjiboutiDenmarcDominicaGweriniaeth Domi" + - "nicaAlgeriaCeuta a MelillaEcuadorEstoniaYr AifftGorllewin SaharaErit" + - "reaSbaenEthiopiaYr Undeb EwropeaiddY FfindirFijiYnysoedd y Falkland/" + - "MalvinasMicronesiaYnysoedd FfaroFfraincGabonY Deyrnas UnedigGrenadaG" + - "eorgiaGuyane FfrengigYnys y GarnGhanaGibraltarYr Ynys LasGambiaGuiné" + - "eGuadeloupeGuinea GyhydeddolGwlad GroegDe Georgia ac Ynysoedd Sandwi" + - "ch y DeGuatemalaGuamGuiné-BissauGuyanaHong Kong RhGA TsieinaYnys Hea" + - "rd ac Ynysoedd McDonaldHondurasCroatiaHaitiHwngariYr Ynysoedd Dedwyd" + - "dIndonesiaIwerddonIsraelYnys ManawIndiaTiriogaeth Brydeinig Cefnfor " + - "IndiaIracIranGwlad yr IâYr EidalJerseyJamaicaGwlad IorddonenJapanKen" + - "yaKyrgyzstanCambodiaKiribatiComorosSaint Kitts a NevisGogledd KoreaD" + - "e KoreaKuwaitYnysoedd CaymanKazakstanLaosLibanusSaint LuciaLiechtens" + - "teinSri LankaLiberiaLesothoLithuaniaLwcsembwrgLatfiaLibyaMorocoMonac" + - "oMoldofaMontenegroSaint MartinMadagascarYnysoedd MarshallMacedoniaMa" + - "liMyanmar (Burma)MongoliaMacau RhGA TsieinaYnysoedd Gogledd MarianaM" + - "artiniqueMauritaniaMontserratMaltaMauritiusY MaldivesMalawiMecsicoMa" + - "laysiaMozambiqueNamibiaCaledonia NewyddNigerYnys NorfolkNigeriaNicar" + - "aguaYr IseldiroeddNorwyNepalNauruNiueSeland NewyddOmanPanamaPeriwPol" + - "ynesia FfrengigPapua Guinea NewyddY PhilipinauPakistanGwlad PwylSain" + - "t-Pierre-et-MiquelonYnysoedd PitcairnPuerto RicoTiriogaethau Paleste" + - "inaiddPortiwgalPalauParaguayQatarOceania BellennigRéunionRwmaniaSerb" + - "iaRwsiaRwandaSaudi ArabiaYnysoedd SolomonSeychellesSwdanSwedenSingap" + - "oreSaint HelenaSlofeniaSvalbard a Jan MayenSlofaciaSierra LeoneSan M" + - "arinoSenegalSomaliaSurinameDe SwdanSão Tomé a PríncipeEl SalvadorSin" + - "t MaartenSyriaGwlad SwaziTristan da CunhaYnysoedd Turks a CaicosTcha" + - "dTiroedd Deheuol ac Antarctig FfraincTogoGwlad ThaiTajikistanTokelau" + - "Timor-LesteTurkmenistanTunisiaTongaTwrciTrinidad a TobagoTuvaluTaiwa" + - "nTanzaniaWcráinUgandaYnysoedd Pellennig UDAYr Unol DaleithiauUruguay" + - "UzbekistanY FaticanSaint Vincent a’r GrenadinesVenezuelaYnysoedd Gwy" + - "ryf PrydainYnysoedd Gwyryf yr Unol DaleithiauFietnamVanuatuWallis a " + - "FutunaSamoaKosovoYemenMayotteDe AffricaZambiaZimbabweRhanbarth Anhys" + - "bysY BydAffricaGogledd AmericaDe AmericaOceaniaGorllewin AffricaCano" + - "lbarth AmericaDwyrain AffricaGogledd AffricaCanol AffricaDeheudir Af" + - "fricaYr AmerigAmerica i’r Gogledd o FecsicoY CaribîDwyrain AsiaDe As" + - "iaDe-Ddwyrain AsiaDe EwropAwstralasiaMelanesiaRhanbarth MicronesiaPo" + - "lynesiaAsiaCanol AsiaGorllewin AsiaEwropDwyrain EwropGogledd EwropGo" + - "rllewin EwropAmerica Ladin", - []uint16{ // 290 elements + { // es-CR + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x002d, 0x0038, 0x0049, 0x0051, 0x0058, - 0x005f, 0x0065, 0x006f, 0x007a, 0x0087, 0x008e, 0x0097, 0x009c, - 0x00ab, 0x00b5, 0x00c9, 0x00d1, 0x00db, 0x00e5, 0x00f1, 0x00f9, - 0x0100, 0x0107, 0x010c, 0x011d, 0x0124, 0x012a, 0x0131, 0x0148, - 0x014e, 0x0157, 0x015d, 0x0168, 0x0170, 0x0177, 0x017d, 0x0183, - 0x019b, 0x01ad, 0x01cb, 0x01e0, 0x01e9, 0x01f9, 0x0206, 0x020b, - 0x0213, 0x021a, 0x0222, 0x0231, 0x023b, 0x0240, 0x024a, 0x0252, - 0x0260, 0x0266, 0x0277, 0x0280, 0x028c, 0x0294, 0x029b, 0x02a3, - // Entry 40 - 7F - 0x02b7, 0x02be, 0x02cd, 0x02d4, 0x02db, 0x02e3, 0x02f3, 0x02fa, - 0x02ff, 0x0307, 0x031a, 0x0323, 0x0327, 0x0343, 0x034d, 0x035b, - 0x0362, 0x0367, 0x0377, 0x037e, 0x0385, 0x0394, 0x039f, 0x03a4, - 0x03ad, 0x03b8, 0x03be, 0x03c5, 0x03cf, 0x03e0, 0x03eb, 0x040f, - 0x0418, 0x041c, 0x0429, 0x042f, 0x0445, 0x0464, 0x046c, 0x0473, - 0x0478, 0x047f, 0x0492, 0x049b, 0x04a3, 0x04a9, 0x04b3, 0x04b8, - 0x04da, 0x04de, 0x04e2, 0x04ee, 0x04f6, 0x04fc, 0x0503, 0x0512, - 0x0517, 0x051c, 0x0526, 0x052e, 0x0536, 0x053d, 0x0550, 0x055d, - // Entry 80 - BF - 0x0565, 0x056b, 0x057a, 0x0583, 0x0587, 0x058e, 0x0599, 0x05a6, - 0x05af, 0x05b6, 0x05bd, 0x05c6, 0x05d0, 0x05d6, 0x05db, 0x05e1, - 0x05e7, 0x05ee, 0x05f8, 0x0604, 0x060e, 0x061f, 0x0628, 0x062c, - 0x063b, 0x0643, 0x0655, 0x066d, 0x0677, 0x0681, 0x068b, 0x0690, - 0x0699, 0x06a3, 0x06a9, 0x06b0, 0x06b8, 0x06c2, 0x06c9, 0x06d9, - 0x06de, 0x06ea, 0x06f1, 0x06fa, 0x0708, 0x070d, 0x0712, 0x0717, - 0x071b, 0x0728, 0x072c, 0x0732, 0x0737, 0x0749, 0x075c, 0x0768, - 0x0770, 0x077a, 0x0792, 0x07a3, 0x07ae, 0x07c8, 0x07d1, 0x07d6, - // Entry C0 - FF - 0x07de, 0x07e3, 0x07f4, 0x07fc, 0x0803, 0x0809, 0x080e, 0x0814, - 0x0820, 0x0830, 0x083a, 0x083f, 0x0845, 0x084e, 0x085a, 0x0862, - 0x0876, 0x087e, 0x088a, 0x0894, 0x089b, 0x08a2, 0x08aa, 0x08b2, - 0x08c8, 0x08d3, 0x08df, 0x08e4, 0x08ef, 0x08ff, 0x0916, 0x091b, - 0x093f, 0x0943, 0x094d, 0x0957, 0x095e, 0x0969, 0x0975, 0x097c, - 0x0981, 0x0986, 0x0997, 0x099d, 0x09a3, 0x09ab, 0x09b2, 0x09b8, - 0x09ce, 0x09e0, 0x09e7, 0x09f1, 0x09fa, 0x0a18, 0x0a21, 0x0a38, - 0x0a5a, 0x0a61, 0x0a68, 0x0a77, 0x0a7c, 0x0a82, 0x0a87, 0x0a8e, - // Entry 100 - 13F - 0x0a98, 0x0a9e, 0x0aa6, 0x0ab8, 0x0abd, 0x0ac4, 0x0ad3, 0x0add, - 0x0ae4, 0x0af5, 0x0b07, 0x0b16, 0x0b25, 0x0b32, 0x0b42, 0x0b4b, - 0x0b6a, 0x0b73, 0x0b7f, 0x0b86, 0x0b96, 0x0b9e, 0x0ba9, 0x0bb2, - 0x0bc6, 0x0bcf, 0x0bd3, 0x0bdd, 0x0beb, 0x0bf0, 0x0bfd, 0x0c0a, - 0x0c19, 0x0c26, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 40 - 7F + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // da - daRegionStr, - daRegionIdx, - }, - { // dav - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + { // es-DO + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // de - deRegionStr, - deRegionIdx, + { // es-EC + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 40 - 7F + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, + }, }, - { // de-CH - "BangladeshBruneiBotswanaWeissrusslandGrossbritannienMarshall-InselnÄusse" + - "res OzeanienSalomon-InselnZimbabwe", - []uint16{ // 259 elements + { // es-GT + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 80 - BF - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry C0 - FF - 0x0043, 0x0043, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 100 - 13F - 0x0063, 0x0063, 0x006b, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // dje - "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" + - "lbaaniArmeeniAngoolaArgentineAmeriki SamoaOtrišiOstraaliAruubaAzerba" + - "ayijaŋBosni nda HerzegovineBarbaadosBangladešiBelgiikiBurkina fasoBu" + - "lgaariBahareenBurundiBeniŋBermudaBruuneeBooliviBreezilBahamasBuutaŋB" + - "otswaanaBilorišiBeliiziKanaadaKongoo demookaratiki labooCentraafriki" + - " koyraKongooSwisuKudwarKuuk gungeyŠiiliKameruunŠiinKolombiKosta rika" + - "KuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuutiDanemarkDoominiki lab" + - "ooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEcioopiFinlanduFijiKalkan" + - " gungeyMikroneziFaransiGaabonAlbaasalaama MargantaGrenaadaGorgiFaran" + - "si GuyaanGaanaGibraltarGrinlandGambiGineGwadeluupGinee EkwatorialGre" + - "eceGwatemaalaGuamGine-BissoGuyaaneHondurasKrwaasiHaitiHungaariIndone" + - "eziIrlanduIsrayelIndu labooBritiši Indu teekoo laamaIraakIraanAysela" + - "ndItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstankamboogiKiribaatiKomoorS" + - "eŋ Kitts nda NevisGurma KooreeHawsa KooreeKuweetKayman gungeyKaazaks" + - "tanLaawosLubnaanSeŋ LussiaLiechtensteinSrilankaLiberiaLeesotoLituaan" + - "iLuxembourgLetooniLiibiMaarokMonakoMoldoviMadagascarMaršal gungeyMaa" + - "cedooniMaaliMaynamarMongooliMariana Gurma GungeyMartiniikiMooritaani" + - "MontserratMaltaMooris gungeyMaldiivuMalaawiMexikiMaleeziMozambikNaam" + - "ibiKaaledooni TaagaaNižerNorfolk GungooNaajiriiaNikaragwaHollanduNor" + - "veejNeepalNauruNiueZeelandu TaagaOmaanPanamaPeeruFaransi PolineeziPa" + - "pua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piyer nda MikelonPitikarin" + - "Porto RikoPalestine Dangay nda GaazaPortugaalPaluParaguweyKataarReen" + - "ioŋRumaaniIriši labooRwandaSaudiyaSolomon GungeySeešelSuudaŋSweedeSi" + - "ngapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan MarinoSenegalSomaaliSu" + - "rinaamSao Tome nda PrinsipeSalvador labooSuuriaSwazilandTurk nda Kay" + - "ikos GungeyCaaduTogoTaayilandTaažikistanTokelauTimoor hawsaTurkmenis" + - "taŋTuniziTongaTurkiTrinidad nda TobaagoTuvaluTaayiwanTanzaaniUkreenU" + - "gandaAmeriki Laabu MarganteyUruguweyUzbeekistanVaatikan LaamaSeŋvins" + - "aŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik Virgin Gung" + - "eyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa Afriki Labo" + - "oZambiZimbabwe", - []uint16{ // 259 elements + { // es-HN + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, - 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, - 0x0087, 0x0094, 0x00a9, 0x00b2, 0x00bd, 0x00c5, 0x00d1, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f5, 0x00fc, 0x0103, 0x0103, - 0x010a, 0x0111, 0x0118, 0x0118, 0x0121, 0x012a, 0x0131, 0x0138, - 0x0138, 0x0152, 0x0164, 0x016a, 0x016f, 0x0175, 0x0180, 0x0186, - 0x018e, 0x0193, 0x019a, 0x019a, 0x01a4, 0x01a9, 0x01b7, 0x01b7, - 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01dd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x01ec, 0x01f4, 0x01f4, 0x01fc, 0x0203, 0x0208, 0x0208, 0x020f, - 0x0217, 0x021e, 0x021e, 0x0226, 0x022a, 0x0237, 0x0240, 0x0240, - 0x0247, 0x024d, 0x0262, 0x026a, 0x026f, 0x027d, 0x027d, 0x0282, - 0x028b, 0x0293, 0x0298, 0x029c, 0x02a5, 0x02b5, 0x02bb, 0x02bb, - 0x02c5, 0x02c9, 0x02d3, 0x02da, 0x02da, 0x02da, 0x02e2, 0x02e9, - 0x02ee, 0x02f6, 0x02f6, 0x02ff, 0x0306, 0x030d, 0x030d, 0x0317, - 0x0331, 0x0336, 0x033b, 0x0343, 0x0349, 0x0349, 0x0351, 0x0356, - 0x035d, 0x0364, 0x036e, 0x0376, 0x037f, 0x0385, 0x0399, 0x03a5, - // Entry 80 - BF - 0x03b1, 0x03b7, 0x03c4, 0x03ce, 0x03d4, 0x03db, 0x03e6, 0x03f3, - 0x03fb, 0x0402, 0x0409, 0x0411, 0x041b, 0x0422, 0x0427, 0x042d, - 0x0433, 0x043a, 0x043a, 0x043a, 0x0444, 0x0452, 0x045c, 0x0461, - 0x0469, 0x0471, 0x0471, 0x0485, 0x048f, 0x0499, 0x04a3, 0x04a8, - 0x04b5, 0x04bd, 0x04c4, 0x04ca, 0x04d1, 0x04d9, 0x04e0, 0x04f1, - 0x04f7, 0x0505, 0x050e, 0x0517, 0x051f, 0x0526, 0x052c, 0x0531, - 0x0535, 0x0543, 0x0548, 0x054e, 0x0553, 0x0564, 0x0575, 0x057d, - 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b6, 0x05d0, 0x05d9, 0x05dd, - // Entry C0 - FF - 0x05e6, 0x05ec, 0x05ec, 0x05f4, 0x05fb, 0x05fb, 0x0607, 0x060d, - 0x0614, 0x0622, 0x0629, 0x0630, 0x0636, 0x063e, 0x0649, 0x0651, - 0x0651, 0x0659, 0x0663, 0x066d, 0x0674, 0x067b, 0x0683, 0x0683, - 0x0698, 0x06a6, 0x06a6, 0x06ac, 0x06b5, 0x06b5, 0x06cc, 0x06d1, - 0x06d1, 0x06d5, 0x06de, 0x06ea, 0x06f1, 0x06fd, 0x070a, 0x0710, - 0x0715, 0x071a, 0x072e, 0x0734, 0x073c, 0x0744, 0x074a, 0x0750, - 0x0750, 0x0767, 0x076f, 0x077a, 0x0788, 0x07a1, 0x07ad, 0x07c3, - 0x07d8, 0x07e0, 0x07e7, 0x07f8, 0x07fd, 0x07fd, 0x0802, 0x0809, - // Entry 100 - 13F - 0x081b, 0x0820, 0x0828, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // dsb - "AscensionAndorraZjadnośone arabiske emiratyAfghanistanAntigua a BarbudaA" + - "nguillaAlbańskaArmeńskaAngolaAntarktisArgentinskaAmeriska SamoaAwstr" + - "iskaAwstralskaArubaÅlandAzerbajdžanBosniska a HercegowinaBarbadosBan" + - "gladešBelgiskaBurkina FasoBulgarskaBahrainBurundiBeninSt. Barthélemy" + - "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" + - "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" + - "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" + - "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" + - "ap VerdeCuraçaoGódowne kupyCypriskaČeska republikaNimskaDiego Garcia" + - "DžibutiDańskaDominikaDominikańska republikaAlgeriskaCeuta a MelillaE" + - "kwadorEstniskaEgyptojskaPódwjacorna SaharaEritrejaŠpańskaEtiopiskaEu" + - "ropska unijaFinskaFidžiFalklandske kupyMikroneziskaFäröjeFrancojskaG" + - "abunZjadnośone kralejstwoGrenadaGeorgiskaFrancojska GuyanaGuernseyGh" + - "anaGibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGri" + - "chiskaPódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupyGuatemal" + - "aGuamGineja-BissauGuyanaWósebna zastojnstwowa cona HongkongHeardowa " + - "kupa a McDonaldowe kupyHondurasChorwatskaHaitiHungorskaKanariske kup" + - "yIndoneziskaIrskaIsraelManIndiskaBritiski indiskooceaniski teritoriu" + - "mIrakIranIslandskaItalskaJerseyJamaikaJordaniskaJapańskaKeniaKirgizi" + - "stanKambodžaKiribatiKomorySt. Kitts a NevisPódpołnocna KorejaPódpołd" + - "njowa KorejaKuwaitKajmaniske kupyKazachstanLaosLibanonSt. LuciaLiech" + - "tensteinSri LankaLiberijaLesothoLitawskaLuxemburgskaLetiskaLibyskaMa" + - "rokkoMonacoMoldawskaCarna GóraSt. MartinMadagaskarMarshallowe kupyMa" + - "kedońskaMaliMyanmarMongolskaWósebna zastojnstwowa cona MacaoPódpołno" + - "cne MarianyMartiniqueMawretańskaMontserratMaltaMauritiusMalediwyMala" + - "wiMexikoMalajzijaMosambikNamibijaNowa KaledoniskaNigerNorfolkowa kup" + - "aNigerijaNikaraguaNižozemskaNorwegskaNepalNauruNiueNowoseelandskaOma" + - "nPanamaPeruFrancojska PolyneziskaPapua-NeuguineaFilipinyPakistanPóls" + - "kaSt. Pierre a MiquelonPitcairnowe kupyPuerto RicoPalestinski awtono" + - "mny teritoriumPortugalskaPalauParaguayKatarwenkowna OceaniskaRéunion" + - "RumuńskaSerbiskaRuskaRuandaSaudi-ArabiskaSalomonySeychelleSudanŠweds" + - "kaSingapurSt. HelenaSłowjeńskaSvalbard a Jan MayenSłowakskaSierra Le" + - "oneSan MarinoSenegalSomalijaSurinamskaPódpołdnjowy SudanSão Tomé a P" + - "ríncipeEl SalvadorSint MaartenSyriskaSwasiskaTristan da CunhaTurks a" + - " Caicos kupyČadFrancojski pódpołdnjowy a antarktiski teritoriumTogoT" + - "hailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTuneziskaTongaTurk" + - "ojskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUgandaAmeriska Oce" + - "aniskaZjadnośone staty AmerikiUruguayUzbekistanVatikańske městoSt. V" + - "incent a GrenadinyVenezuelaBritiske kněžniske kupyAmeriske kněžniske" + - " kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenMayottePódpołdnjow" + - "a Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfrikaPódpołno" + - "cna AmerikaPódpołdnjowa AmerikaOceaniskaPódwjacorna AfrikaSrjejźna A" + - "merikapódzajtšna Afrikapódpołnocna Afrikasrjejźna Afrikapódpołdnjowa" + - " AfrikaAmerikapódpołnocny ameriski kontinentKaribiskapódzajtšna Azij" + - "apódpołdnjowa Azijakrotkozajtšna Azijapódpołdnjowa EuropaAwstralazij" + - "aMelaneziskaMikroneziska (kupowy region)PolyneziskaAzijacentralna Az" + - "ijapódwjacorna AzijaEuropapódzajtšna Europapódpołnocna Europapódwjac" + - "orna EuropaŁatyńska Amerika", - []uint16{ // 290 elements + { // es-MX + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas Ultramarinas Menore" + + "s de Estados UnidosÁfrica OccidentalÁfrica OrientalÁfrica del NorteÁ" + + "frica CentralÁfrica del SurAsia OrientalAsia del SurSudeste Asiático" + + "Europa del SurAsia CentralAsia OccidentalEuropa OrientalEuropa del N" + + "orteEuropa Occidental", + []uint16{ // 291 elements // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0048, 0x0050, 0x0059, - 0x0062, 0x0068, 0x0071, 0x007c, 0x008a, 0x0093, 0x009d, 0x00a2, - 0x00a8, 0x00b4, 0x00ca, 0x00d2, 0x00dc, 0x00e4, 0x00f0, 0x00f9, - 0x0100, 0x0107, 0x010c, 0x011b, 0x0122, 0x0128, 0x0131, 0x0146, - 0x014f, 0x0155, 0x015b, 0x0169, 0x0171, 0x017c, 0x0182, 0x0188, - 0x0195, 0x01a3, 0x01bd, 0x01ce, 0x01d8, 0x01e8, 0x01f4, 0x01fb, - 0x0202, 0x0207, 0x0211, 0x0223, 0x022d, 0x0231, 0x023a, 0x0242, - 0x024f, 0x0257, 0x0267, 0x026d, 0x0279, 0x0281, 0x0288, 0x0290, - // Entry 40 - 7F - 0x02a7, 0x02b0, 0x02bf, 0x02c6, 0x02ce, 0x02d8, 0x02eb, 0x02f3, - 0x02fc, 0x0305, 0x0313, 0x0319, 0x031f, 0x032f, 0x033b, 0x0343, - 0x034d, 0x0352, 0x0368, 0x036f, 0x0378, 0x0389, 0x0391, 0x0396, - 0x039f, 0x03ab, 0x03b2, 0x03b8, 0x03c2, 0x03d5, 0x03de, 0x0418, - 0x0421, 0x0425, 0x0432, 0x0438, 0x045c, 0x047c, 0x0484, 0x048e, - 0x0493, 0x049c, 0x04aa, 0x04b5, 0x04ba, 0x04c0, 0x04c3, 0x04ca, - 0x04ee, 0x04f2, 0x04f6, 0x04ff, 0x0506, 0x050c, 0x0513, 0x051d, - 0x0526, 0x052b, 0x0536, 0x053f, 0x0547, 0x054d, 0x055e, 0x0572, - // Entry 80 - BF - 0x0587, 0x058d, 0x059c, 0x05a6, 0x05aa, 0x05b1, 0x05ba, 0x05c7, - 0x05d0, 0x05d8, 0x05df, 0x05e7, 0x05f3, 0x05fa, 0x0601, 0x0608, - 0x060e, 0x0617, 0x0622, 0x062c, 0x0636, 0x0646, 0x0651, 0x0655, - 0x065c, 0x0665, 0x0686, 0x069b, 0x06a5, 0x06b1, 0x06bb, 0x06c0, - 0x06c9, 0x06d1, 0x06d7, 0x06dd, 0x06e6, 0x06ee, 0x06f6, 0x0706, - 0x070b, 0x071a, 0x0722, 0x072b, 0x0736, 0x073f, 0x0744, 0x0749, - 0x074d, 0x075b, 0x075f, 0x0765, 0x0769, 0x077f, 0x078e, 0x0796, - 0x079e, 0x07a5, 0x07ba, 0x07ca, 0x07d5, 0x07f5, 0x0800, 0x0805, - // Entry C0 - FF - 0x080d, 0x0812, 0x0824, 0x082c, 0x0835, 0x083d, 0x0842, 0x0848, - 0x0856, 0x085e, 0x0867, 0x086c, 0x0874, 0x087c, 0x0886, 0x0892, - 0x08a6, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08df, 0x08f3, - 0x0909, 0x0914, 0x0920, 0x0927, 0x092f, 0x093f, 0x0952, 0x0956, - 0x0988, 0x098c, 0x0997, 0x09a3, 0x09aa, 0x09b5, 0x09c0, 0x09c9, - 0x09ce, 0x09d7, 0x09e8, 0x09ee, 0x09f4, 0x09fd, 0x0a04, 0x0a0a, - 0x0a1c, 0x0a35, 0x0a3c, 0x0a46, 0x0a58, 0x0a6f, 0x0a78, 0x0a91, - 0x0aaa, 0x0ab1, 0x0ab8, 0x0ac7, 0x0acc, 0x0ad2, 0x0ad7, 0x0ade, - // Entry 100 - 13F - 0x0aff, 0x0b06, 0x0b0e, 0x0b1d, 0x0b22, 0x0b28, 0x0b3d, 0x0b53, - 0x0b5c, 0x0b6f, 0x0b80, 0x0b93, 0x0ba7, 0x0bb7, 0x0bcc, 0x0bd3, - 0x0bf3, 0x0bfc, 0x0c0e, 0x0c22, 0x0c36, 0x0c4b, 0x0c57, 0x0c62, - 0x0c7e, 0x0c89, 0x0c8e, 0x0c9d, 0x0caf, 0x0cb5, 0x0cc8, 0x0cdc, - 0x0cef, 0x0d01, - }, - }, - { // dua - "Cameroun", - []uint16{ // 49 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 40 - 7F + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + // Entry 100 - 13F + 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x005d, 0x005d, 0x005d, 0x006f, 0x006f, 0x007f, 0x0090, 0x009f, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bb, 0x00c7, 0x00d8, 0x00e6, + 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00f2, 0x0101, 0x0101, + 0x0110, 0x0120, 0x0131, }, }, - { // dyo - "AndorraAfganistanAntigua di BarbudaAngiiyaAlbaniArmeniAngolaArsantinSamo" + - "a yati AmerikOtrisOstraaliaArubaAserbaysanBosni di HersegovinBarbadB" + - "angladesBelsikBurukiina FasoBulgariBahraynBurundiBeneBermudBuruneyBo" + - "liiviBresilBahamaButanBoswanaBelarusBeliisKanadaMofam demokratik mat" + - "i KongoKongoKoddiwarCiliKamerunSiinKolombiKosta RikaKubaKap VerSiipr" + - "Mofam mati CekAlmaañJibutiDanmarkDominikaMofam mati DominikAlseriEku" + - "adorEstoniEsíptEritreeEspaañEcoopiFinlandFijiFransGabonGrenadaSeorsi" + - "GaanaSipraltaarGreenlandGambiGinéGuwadalupGresGuatemalaGuamGiné Bisa" + - "auGiyanOndurasKroasiAytiOŋriEndonesiIrlandIsraelEndIrakIranIislandIt" + - "aliSamaikSapoŋKeniyaKambojKomorSaŋ LusiaSiri LankaLiberiaMadagaskaar" + - "MaliEcinkey yati NoorfokAbari SaudiSudanSingapurSloveniSlovakiSerra " + - "LeonSenegalSomaliSalvadoorCadTogoTailand", - []uint16{ // 227 elements + { // es-NI + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0023, 0x002a, 0x0030, - 0x0036, 0x003c, 0x003c, 0x0044, 0x0055, 0x005a, 0x0063, 0x0068, - 0x0068, 0x0072, 0x0085, 0x008b, 0x0094, 0x009a, 0x00a8, 0x00af, - 0x00b6, 0x00bd, 0x00c1, 0x00c1, 0x00c7, 0x00ce, 0x00d5, 0x00d5, - 0x00db, 0x00e1, 0x00e6, 0x00e6, 0x00ed, 0x00f4, 0x00fa, 0x0100, - 0x0100, 0x011b, 0x011b, 0x0120, 0x0120, 0x0128, 0x0128, 0x012c, - 0x0133, 0x0137, 0x013e, 0x013e, 0x0148, 0x014c, 0x0153, 0x0153, - 0x0153, 0x0158, 0x0166, 0x016d, 0x016d, 0x0173, 0x017a, 0x0182, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x0194, 0x019a, 0x019a, 0x01a1, 0x01a7, 0x01ad, 0x01ad, 0x01b4, - 0x01bb, 0x01c1, 0x01c1, 0x01c8, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01d1, 0x01d6, 0x01d6, 0x01dd, 0x01e3, 0x01e3, 0x01e3, 0x01e8, - 0x01f2, 0x01fb, 0x0200, 0x0205, 0x020e, 0x020e, 0x0212, 0x0212, - 0x021b, 0x021f, 0x022b, 0x0230, 0x0230, 0x0230, 0x0237, 0x023d, - 0x0241, 0x0246, 0x0246, 0x024e, 0x0254, 0x025a, 0x025a, 0x025d, - 0x025d, 0x0261, 0x0265, 0x026c, 0x0271, 0x0271, 0x0277, 0x0277, - 0x027d, 0x0283, 0x0283, 0x0289, 0x0289, 0x028e, 0x028e, 0x028e, - // Entry 80 - BF - 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x0298, 0x0298, - 0x02a2, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02b4, 0x02b4, 0x02b4, 0x02b8, - 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, - 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, - 0x02b8, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry C0 - FF - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02d7, 0x02d7, 0x02d7, 0x02dc, 0x02dc, 0x02e4, 0x02e4, 0x02eb, - 0x02eb, 0x02f2, 0x02fc, 0x02fc, 0x0303, 0x0309, 0x0309, 0x0309, - 0x0309, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0315, - 0x0315, 0x0319, 0x0320, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // dz - "ཨེ་སེན་ཤུན་ཚོ་གླིང༌ཨཱན་དོ་རཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊསཨཕ་གྷ་ནི་སཏཱནཨན་" + - "ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌཨང་གི་ལཨཱལ་བེ་ནི་ཡཨར་མི་ནི་ཡཨང་གྷོ་ལའཛམ་གླ" + - "ིང་ལྷོ་མཐའི་ཁྱགས་གླིངཨར་ཇེན་ཊི་ནས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངསཨཱོས་ཊྲི་" + - "ཡཨཱོས་ཊྲེལ་ལི་ཡཨ་རུ་བཱཨ་ལནཌ་གླིང་ཚོམཨ་ཛར་བྷའི་ཇཱནབྷོས་ནི་ཡ་ ཨེནཌ་ " + - "ཧར་ཛི་གྷོ་བི་ནབྷར་བེ་ཌོསབངྒ་ལ་དེཤབྷེལ་ཇམབྷར་ཀི་ན་ ཕེ་སོབུལ་ག་རི་ཡབ" + - "ྷ་རེནབྷུ་རུན་ཌིབྷེ་ནིནསེནཊ་ བར་ཐོ་ལོམ་མིའུབར་མུ་ཌབྷྲུ་ནའིབྷེ་ལི་བི" + - "་ཡཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄བྲ་ཛིལབྷ་ཧ་མས྄འབྲུགབོའུ་ཝེཊ་མཚོ་གླིངབྷོཙ" + - "་ཝ་ནབེལ་ཨ་རུ་སུབྷེ་ལིཛཀེ་ན་ཌཀོ་ཀོས་གླིང་ཚོམཀོང་གྷོ ཀིན་ཤ་སསེན་ཊལ་ " + - "ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀཀོང་གྷོ བྷྲ་ཛ་བིལསུ་ཝིཊ་ཛར་ལེནཌཀོ་ཊེ་ ཌི་ཨི་ཝོ" + - "་རེཀུག་གླིང་ཚོམཅི་ལིཀེ་མ་རུནརྒྱ་ནགཀོ་ལོམ་བྷི་ཡཀི་ལི་པེར་ཊོན་མཚོ་གླ" + - "ིང་ཀོས་ཊ་རི་ཀཀིའུ་བྷཀེཔ་བཱཌཀྱཱུར་ར་ཀོཁི་རིསྟ་མེས་མཚོ་གླིངསཱའི་པྲསཅ" + - "ེཀ་ རི་པབ་ལིཀཇཱར་མ་ནིཌི་ཡེ་གོ་གར་སིའོཇི་བྷུ་ཊིཌེན་མཱཀཌོ་མི་ནི་ཀཌོ་" + - "མི་ནི་ཀཱན་ རི་པབ་ལིཀཨཱལ་ཇི་རི་ཡསེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལཨེ་ཁྭ་ཌོརཨེས" + - "་ཊོ་ནི་ཡཨི་ཇིབཊནུབ་ཕྱོགས་ ས་ཧཱ་རཨེ་རི་ཊྲེ་ཡཨིས་པེནཨི་ཐི་ཡོ་པི་ཡཡུ་" + - "རོབ་གཅིག་བསྡོམས་ཚོགས་པཕིན་ལེནཌཕི་ཇིཕལྐ་ལནྜ་གླིང་ཚོམམའི་ཀྲོ་ནི་ཤི་ཡ" + - "ཕཱའེ་རོ་གླིང་ཚོམཕྲཱནསགྷ་བྷོནཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམགྲྀ་ན་ཌཇཽར་ཇཱགུའི་ཡ" + - "་ན་ ཕྲནས྄་མངའ་ཁོངསགུ་ཨེརྣ་སིགྷ་ནཇིབ་རཱལ་ཊརགིརཱིན་ལནཌ྄གྷེམ་བི་ཡགྷི་" + - "ནིགོ་ཌེ་ལུ་པེཨེ་ཀུ་ཊོ་རེལ་ གི་ནིགིརིས྄སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ" + - "྄་ཝིཅ་གླིང་ཚོམགྷོ་ཊ་མ་ལགུ་འམ་ མཚོ་གླིངགྷི་ནི་ བྷི་སཱའུགྷ་ཡ་ནཧོང་ཀོ" + - "ང་ཅཱའི་ནཧཱརཌ་མཚོ་གླིང་ དང་ མེཀ་ཌོ་ནལཌ྄་གླིང་ཚོམཧཱན་ཌུ་རཱས྄ཀྲོ་ཨེ་ཤ" + - "ཧེ་ཊིཧཱང་གྷ་རིཀ་ནེ་རི་གླིང་ཚོམཨིན་ཌོ་ནེ་ཤི་ཡཨཱ་ཡ་ལེནཌཨིས་ར་ཡེལཨ་ཡུ" + - "ལ་ ཨོཕ་ མཱནརྒྱ་གརབྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངསཨི་རཱཀཨི་རཱནཨཱའི" + - "ས་ལེནཌཨི་ཊ་ལིཇེར་སིཇཱ་མཻ་ཀཇོར་ཌནཇ་པཱནཀེན་ཡཀིར་གིས་སཏཱནཀམ་བྷོ་ཌི་ཡཀ" + - "ི་རི་བ་ཏི་མཚོ་གླིངཀོ་མོ་རོསསེནཊ་ ཀིཊས་ དང་ ནེ་བིསབྱང་ ཀོ་རི་ཡལྷོ་ " + - "ཀོ་རི་ཡཀུ་ཝེཊཁེ་མེན་གླིང་ཚོམཀ་ཛགས་སཏཱནལཱ་ཝོསལེ་བ་ནོནསེནཊ་ ལུ་སི་ཡལ" + - "ིཀ་ཏནས་ཏ་ཡིནཤྲཱི་ལང་ཀལཱའི་བེ་རི་ཡལཻ་སོ་ཐོལི་ཐུ་ཝེ་ནི་ཡལག་ཛམ་བོརྒལཊ" + - "་བི་ཡལི་བི་ཡམོ་རོ་ཀོམོ་ན་ཀོམོལ་དོ་བཱམོན་ཊི་ནེག་རོསེནཊ་ མཱར་ཊིནམ་དཱ" + - "་གེས་ཀརམར་ཤེལ་གླིང་ཚོམམ་སེ་ཌོ་ནི་ཡམཱ་ལིམི་ཡཱན་མར་ (བྷར་མ)སོག་པོ་ཡུ" + - "ལམཀ་ཨའུ་ཅཱའི་ནབྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམམཱར་ཊི་ནིཀམོ་རི་ཊེ་ནི་" + - "ཡམོན་ས་རཊམཱལ་ཊམོ་རི་ཤཱསམཱལ་དིབསམ་ལ་ཝིམེཀ་སི་ཀོམ་ལེ་ཤི་ཡམོ་ཛམ་བྷིཀན" + - "་མི་བི་ཡནིའུ་ཀ་ལི་དོ་ནི་ཡནཱའི་ཇཱནོར་ཕོལཀ་མཚོ་གླིང༌ནཱའི་ཇི་རི་ཡནི་ཀ" + - "ྲ་ཝ་གནེ་དར་ལནཌས྄ནོར་ཝེབལ་ཡུལནའུ་རུ་ནི་ཨུ་ཨཻནིའུ་ཛི་ལེནཌཨོ་མཱནཔ་ན་མ" + - "པེ་རུཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡཔ་པུ་ ནིའུ་གི་ནིཕི་ལི་པིནསཔ་ཀི་སཏཱནཔོ" + - "་ལེནཌསིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེནཔིཊ་ཀེ་ཡེརན་གླིང་ཚོམཔུ་འེར་ཊོ་རི་ཁ" + - "ོཔེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རིཔོར་ཅུ་གཱལཔ་ལའུཔ་ར་གུ་ཝའིཀ་ཊརཨོཤི་ཡཱན" + - "་ན་གྱི་མཐའ་མཚམསརེ་ཡུ་ནི་ཡོནརོ་མེ་ནི་ཡསཱར་བྷི་ཡཨུ་རུ་སུརུ་ཝན་ཌསཱཝ་ད" + - "ི་ ཨ་རེ་བྷི་ཡསོ་ལོ་མོན་ གླིང་ཚོམསེ་ཤཱལསསུ་ཌཱནསུའི་ཌེནསིང་ག་པོརསེནཊ" + - "་ ཧེ་ལི་ནསུ་ལོ་བི་ནི་ཡསྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེནསུ་ལོ་བཱ་ཀི་ཡསི་ར་" + - " ལི་འོནསཱན་མ་རི་ནོསེ་ནི་གྷལསོ་མ་ལི་ཡསུ་རི་ནཱམསཱའུཐ་ སུ་ཌཱནསཝ་ ཊོ་མེ་" + - " ཨེནཌ་ པྲྀན་སི་པེཨེལ་སལ་བ་ཌོརསིནཊ་ མཱར་ཊེནསི་རི་ཡསུ་ཝ་ཛི་ལེནཌཏྲིས་ཏན" + - "་ད་ཀུན་ཧཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམཅཱཌཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངསཊ" + - "ོ་གྷོཐཱའི་ལེནཌཏ་ཇིག་གི་སཏཱནཏོ་ཀེ་ལའུ་ མཚོ་གླིངཏི་་མོར་ལེ་ཨེསཊཊཱརཀ་" + - "མེནའི་སཏཱནཊུ་ནི་ཤི་ཡཊོང་གྷཊཱར་ཀིཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོཏུ་ཝ་ལུ" + - "ཊཱའི་ཝཱནཊཱན་ཛཱ་ནི་ཡཡུ་ཀརེནཡུ་གྷན་ཌཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་ཡུ་" + - "ཨེས་ཨེཡུ་རུ་གུ་ཝའིཨུས་བེག་གི་སཏཱནབ་ཊི་ཀཱན་ སི་ཊིསེནཊ་ཝིན་སེནཌ྄ ཨེན" + - "ཌ་ གི་རེ་ན་དིནས྄བེ་ནི་ཛུ་ཝེ་ལཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངསཝརཇི" + - "ན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངསབེཊ་ནཱམཝ་ནུ་ཨ་ཏུཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ" + - "་ན་ས་མོ་ཨཡེ་མེནམེ་ཡོཊསཱའུཐ་ ཨཕ་རི་ཀཛམ་བྷི་ཡཛིམ་བྷབ་ཝེངོ་མ་ཤེས་པའི་" + - "ལུང་ཕྱོགསའཛམ་གླིང༌ཨཕ་རི་ཀབྱང་ཨ་མི་རི་ཀལྷོ་ཨ་མི་རི་ཀཨོཤི་ཡཱན་ནནུབ་ཕ" + - "ྱོགས་ཀྱི་ཨཕ་རི་ཀབར་ཕྱོགས་ཨ་མི་རི་ཀཤར་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀབྱང་ཕྱོགས་ཀྱ" + - "ི་ཨཕ་རི་ཀསྦུག་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀལྷོའི་ཨཕ་རི་ཀཨ་མི་རི་ཀ་ཚུབྱང་ཕྱོགས་" + - "ཀྱི་ཨ་མི་རི་ཀཀེ་རི་བི་ཡེནཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཨེ་ཤི་ཡལྷོ་ཤར་ཕ" + - "ྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཡུ་རོབཨཱོས་ཊྲེལ་ཨེ་ཤི་ཡམེ་ལ་ནི་ཤི་ཡལུང་ཕྱོགས" + - "་མའི་ཀྲོ་ནི་ཤི་ཡཔོ་ལི་ནི་ཤི་ཡཨེ་ཤི་ཡསྦུག་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡནུབ་ཕྱོག" + - "ས་ཀྱི་ཨེ་ཤི་ཡཡུ་རོབཤར་ཕྱོགས་ཀྱི་ཡུ་རོབབྱང་ཕྱོགས་ཀྱི་ཡུ་རོབནུབ་ཕྱོག" + - "ས་ཀྱི་ཡུ་རོབལེ་ཊིནཨ་མི་རི་ཀ", - []uint16{ // 290 elements + { // es-PA + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0039, 0x0051, 0x00a4, 0x00cb, 0x0118, 0x012d, 0x014e, - 0x016c, 0x0184, 0x01d5, 0x01f6, 0x0241, 0x025f, 0x0289, 0x029e, - 0x02c8, 0x02ef, 0x0348, 0x0366, 0x0381, 0x0396, 0x03c1, 0x03df, - 0x03f1, 0x040f, 0x0424, 0x045e, 0x0473, 0x048b, 0x04ac, 0x04f4, - 0x0506, 0x051e, 0x052d, 0x0560, 0x0578, 0x0599, 0x05ae, 0x05c0, - 0x05ed, 0x0618, 0x0668, 0x0699, 0x06c3, 0x06f7, 0x071b, 0x072a, - 0x0742, 0x0754, 0x0778, 0x07bd, 0x07db, 0x07f0, 0x0805, 0x0823, - 0x085f, 0x0877, 0x089f, 0x08b7, 0x08e7, 0x0902, 0x0917, 0x0935, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x0978, 0x0999, 0x09da, 0x09f5, 0x0a16, 0x0a2b, 0x0a5c, 0x0a7d, - 0x0a92, 0x0ab9, 0x0b04, 0x0b1c, 0x0b2b, 0x0b5b, 0x0b88, 0x0bb8, - 0x0bc7, 0x0bdc, 0x0c13, 0x0c28, 0x0c3a, 0x0c80, 0x0c9e, 0x0caa, - 0x0cc8, 0x0ce9, 0x0d04, 0x0d16, 0x0d37, 0x0d6e, 0x0d80, 0x0dfa, - 0x0e15, 0x0e40, 0x0e6e, 0x0e80, 0x0eaa, 0x0f1b, 0x0f3c, 0x0f54, - 0x0f63, 0x0f7e, 0x0fae, 0x0fd8, 0x0ff3, 0x100e, 0x1037, 0x1049, - 0x10ac, 0x10be, 0x10d0, 0x10ee, 0x1103, 0x1115, 0x112a, 0x113c, - 0x114b, 0x115a, 0x117e, 0x119f, 0x11d8, 0x11f3, 0x122f, 0x1251, - // Entry 80 - BF - 0x1273, 0x1285, 0x12b2, 0x12d0, 0x12e2, 0x12fa, 0x131f, 0x1346, - 0x1361, 0x1385, 0x139d, 0x13c4, 0x13e2, 0x13f7, 0x140c, 0x1424, - 0x1439, 0x1454, 0x147b, 0x14a0, 0x14c1, 0x14ee, 0x1512, 0x1521, - 0x1551, 0x156f, 0x1596, 0x15f0, 0x160e, 0x1635, 0x164d, 0x165c, - 0x1677, 0x168f, 0x16a1, 0x16bc, 0x16d7, 0x16f5, 0x1710, 0x1743, - 0x1758, 0x178e, 0x17b2, 0x17cd, 0x17ee, 0x1800, 0x1812, 0x1827, - 0x183f, 0x1863, 0x1875, 0x1884, 0x1893, 0x18db, 0x1909, 0x1927, - 0x1942, 0x1957, 0x19a4, 0x19e0, 0x1a0d, 0x1a61, 0x1a7f, 0x1a8e, - // Entry C0 - FF - 0x1aac, 0x1ab8, 0x1afd, 0x1b21, 0x1b3f, 0x1b5a, 0x1b72, 0x1b87, - 0x1bbb, 0x1bf2, 0x1c07, 0x1c19, 0x1c31, 0x1c4c, 0x1c71, 0x1c98, - 0x1ce2, 0x1d09, 0x1d2b, 0x1d4c, 0x1d67, 0x1d82, 0x1d9d, 0x1dc2, - 0x1e0d, 0x1e31, 0x1e56, 0x1e6b, 0x1e8f, 0x1ebc, 0x1f0c, 0x1f15, - 0x1f63, 0x1f75, 0x1f90, 0x1fb7, 0x1fee, 0x201b, 0x2048, 0x2066, - 0x2078, 0x208a, 0x20d7, 0x20ec, 0x2104, 0x2125, 0x213a, 0x2152, - 0x21a9, 0x21c4, 0x21e8, 0x2215, 0x2240, 0x22a2, 0x22c9, 0x232a, - 0x238e, 0x23a3, 0x23be, 0x23ff, 0x2411, 0x2411, 0x2423, 0x2435, - // Entry 100 - 13F - 0x245d, 0x2475, 0x2493, 0x24d5, 0x24f0, 0x2505, 0x252c, 0x2553, - 0x2571, 0x25b0, 0x25e6, 0x2622, 0x2661, 0x26a3, 0x26ca, 0x26ee, - 0x2733, 0x2757, 0x2793, 0x27ba, 0x2802, 0x2826, 0x2859, 0x287d, - 0x28c8, 0x28ef, 0x2904, 0x2946, 0x2985, 0x2997, 0x29d0, 0x2a0c, - 0x2a48, 0x2a75, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // ebu - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + { // es-PE + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, - }, - }, - { // ee - "Ascension ƒudomekpo nutomeAndorra nutomeUnited Arab Emirates nutomeAfgha" + - "nistan nutoméAntigua kple Barbuda nutomeAnguilla nutomeAlbania nuto" + - "meArmenia nutomeAngola nutomeAntartica nutomeArgentina nutomeAmerika" + - " Samoa nutomeAustria nutomeAustralia nutomeAruba nutomeÅland ƒudomek" + - "po nutomeAzerbaijan nutomeBosnia kple Herzergovina nutomeBarbados nu" + - "tomeBangladesh nutomeBelgium nutomeBurkina Faso nutomeBulgaria nutom" + - "eBahrain nutomeBurundi nutomeBenin nutomeSaint Barthélemy nutomeBerm" + - "uda nutomeBrunei nutomeBolivia nutomeBrazil nutomeBahamas nutomeBhut" + - "an nutomeBouvet ƒudomekpo nutomeBotswana nutomeBelarus nutomeBelize " + - "nutomeCanada nutomeKokos (Kiling) fudomekpo nutomeKongo Kinshasa nut" + - "omeTitina Afrika repɔblik nutomeKongo Brazzaville nutomeSwitzerland " + - "nutomeKote d’Ivoire nutomeKook ƒudomekpo nutomeTsile nutomeKamerun n" + - "utomeTsaina nutomeKolombia nutomeKlipaton ƒudomekpo nutomeKosta Rika" + - " nutomeKuba nutomeKape Verde nutomeKristmas ƒudomekpo nutomeSaiprus " + - "nutomeTsɛk repɔblik nutomeGermania nutomeDiego Garsia nutomeDzibuti " + - "nutomeDenmark nutomeDominika nutomeDominika repɔblik nutomeAlgeria n" + - "utomeKeuta and Melilla nutomeEkuadɔ nutomeEstonia nutomeEgypte nutom" + - "eƔetoɖoƒe Sahara nutomeEritrea nutomeSpain nutomeEtiopia nutomeEurop" + - "a Wɔɖeka nutomeFinland nutomeFidzi nutomeFalkland ƒudomekpowo nutome" + - "Mikronesia nutomeFaroe ƒudomekpowo nutomeFrance nutomeGabɔn nutomeUn" + - "ited Kingdom nutomeGrenada nutomeGeorgia nutomeFrentsi Gayana nutome" + - "Guernse nutomeGhana nutomeGibraltar nutomeGrinland nutomeGambia nuto" + - "meGuini nutomeGuadelupe nutomeEkuatorial Guini nutomeGreece nutomeAn" + - "yiehe Georgia kple Anyiehe Sandwich ƒudomekpowo nutomeGuatemala nuto" + - "meGuam nutomeGini-Bisao nutomeGuyanaduHɔng Kɔng SAR Tsaina nutomeHea" + - "rd kple Mcdonald ƒudomekpowo nutomeHondurasduKroatsia nutomeHaiti nu" + - "tomeHungari nutomeKanari ƒudomekpowo nutomeIndonesia nutomeIreland n" + - "utomeIsrael nutomeAisle of Man nutomeIndia nutomeBritaintɔwo ƒe indi" + - "a ƒudome nutomeiraqdukɔIran nutomeAiseland nutomeItalia nutomeDzɛse " + - "nutomeDzamaika nutomeYordan nutomeDzapan nutomeKenya nutomeKirgizsta" + - "n nutomeKambodia nutomeKiribati nutomeKomoros nutomeSaint Kitis kple" + - " Nevis nutomeDziehe Korea nutomeAnyiehe Korea nutomeKuwait nutomeKay" + - "man ƒudomekpowo nutomeKazakstan nutomeLaos nutomeLebanɔn nutomeSaint" + - " Lusia nutomeLitsenstein nutomeSri Lanka nutomeLiberia nutomeLɛsoto " + - "nutomeLituania nutomeLazembɔg nutomeLatvia nutomeLibya nutomeMoroko " + - "nutomeMonako nutomeMoldova nutomeMontenegro nutomeSaint Martin nutom" + - "eMadagaska nutomeMarshal ƒudomekpowo nutomeMakedonia nutomeMali nuto" + - "meMyanmar (Burma) nutomeMongolia nutomeMacau SAR Tsaina nutomeDziehe" + - " Marina ƒudomekpowo nutomeMartiniki nutomeMauritania nutomeMontserra" + - "t nutomeMalta nutomemauritiusdukɔmaldivesdukɔMalawi nutomeMexico nut" + - "omeMalaysia nutomeMozambiki nutomeNamibia nutomeNew Kaledonia nutome" + - "Niger nutomeNorfolk ƒudomekpo nutomeNigeria nutomeNicaraguadukɔNethe" + - "rlands nutomeNorway nutomeNepal nutomeNauru nutomeNiue nutomeNew Zea" + - "land nutomeOman nutomePanama nutomePeru nutomeFrentsi Pɔlinesia nuto" + - "mePapua New Gini nutomeFilipini nutomePakistan nutomePoland nutomeSa" + - "int Pierre kple Mikelɔn nutomePitkairn ƒudomekpo nutomePuerto Riko n" + - "utomePalestinia nutomePortugal nutomePalau nutomeParagua nutomeKatar" + - " nutomeOutlaying Oceania nutomeRéunion nutomeRomania nutomeRussia nu" + - "tomeRwanda nutomeSaudi Arabia nutomeSolomon ƒudomekpowo nutomeSeshɛl" + - "s nutomeSudan nutomeSweden nutomeSingapɔr nutomeSaint Helena nutomeS" + - "lovenia nutomeSvalbard kple Yan Mayen nutomeSlovakia nutomeSierra Le" + - "one nutomeSan Marino nutomeSenegal nutomeSomalia nutomeSuriname nuto" + - "meSão Tomé kple Príncipe nutomeEl Salvadɔ nutomeSiria nutomeSwazilan" + - "d nutomeTristan da Kunha nutomeTɛks kple Kaikos ƒudomekpowo nutomeTs" + - "ad nutomeAnyiehe Franseme nutomeTogo nutomeThailand nutomeTajikistan" + - " nutomeTokelau nutomeTimor-Leste nutomeTɛkmenistan nutomeTunisia nut" + - "omeTonga nutomeTɛki nutomeTrinidad kple Tobago nutomeTuvalu nutomeTa" + - "iwan nutomeTanzania nutomeUkraine nutomeUganda nutomeU.S. Minor Outl" + - "aying ƒudomekpowo nutomeUSA nutomeuruguaydukɔUzbekistan nutomeVatika" + - "ndu nutomeSaint Vincent kple Grenadine nutomeVenezuela nutomeBritain" + - "tɔwo ƒe Virgin ƒudomekpowo nutomeU.S. Vɛrgin ƒudomekpowo nutomeVietn" + - "am nutomeVanuatu nutomeWallis kple Futuna nutomeSamoa nutomeYemen nu" + - "tomeMayotte nutomeAnyiehe Africa nutomeZambia nutomeZimbabwe nutomen" + - "utome manyaxexemeAfrika nutomeDziehe Amerika nutomeAnyiehe Amerika n" + - "utomeOceania nutomeƔetoɖoƒelɔƒo Afrika nutomeTitina Amerika nutomeƔe" + - "dzeƒe Afrika nutomeDziehe Afrika nutomeTitina Afrika nutomeAnyiehelɔ" + - "ƒo Afrika nutomeAmerika nutomeDziehelɔƒo Amerika nutomeKaribbea nut" + - "omeƔedzeƒe Asia nutomeAnyiehelɔƒo Asia nutomeAnyiehe Ɣedzeƒe Afrika " + - "nutomeAnyiehelɔƒo Europa nutomeAustralia kple New Zealand nutomeMela" + - "nesia nutomeMikronesiaPɔlinesia nutomeAsia nutomeTitina Asia nutomeƔ" + - "etoɖoƒelɔƒo Asia nutomeEuropa nutomeƔedzeƒe Europa nutomeDziehelɔƒo " + - "Europa nutomeƔetoɖoƒelɔƒo Europa nutomeLatin Amerika nutome", - []uint16{ // 290 elements + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, + }, + }, + { // es-PR + "Islas menores alejadas de EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x001b, 0x0029, 0x0044, 0x0056, 0x0073, 0x0082, 0x0090, - 0x009e, 0x00ab, 0x00bb, 0x00cb, 0x00df, 0x00ed, 0x00fd, 0x0109, - 0x0121, 0x0132, 0x0151, 0x0160, 0x0171, 0x017f, 0x0192, 0x01a1, - 0x01af, 0x01bd, 0x01c9, 0x01e1, 0x01ef, 0x01fc, 0x020a, 0x020a, - 0x0217, 0x0225, 0x0232, 0x024a, 0x0259, 0x0267, 0x0274, 0x0281, - 0x02a0, 0x02b5, 0x02d3, 0x02eb, 0x02fd, 0x0313, 0x0329, 0x0335, - 0x0343, 0x0350, 0x035f, 0x0379, 0x038a, 0x0395, 0x03a6, 0x03a6, - 0x03c0, 0x03ce, 0x03e4, 0x03f3, 0x0406, 0x0414, 0x0422, 0x0431, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x044a, 0x0458, 0x0470, 0x047e, 0x048c, 0x0499, 0x04b2, 0x04c0, - 0x04cc, 0x04da, 0x04f0, 0x04fe, 0x050a, 0x0526, 0x0537, 0x0550, - 0x055d, 0x056a, 0x057f, 0x058d, 0x059b, 0x05b0, 0x05be, 0x05ca, - 0x05da, 0x05e9, 0x05f6, 0x0602, 0x0612, 0x0629, 0x0636, 0x066f, - 0x067f, 0x068a, 0x069b, 0x06a3, 0x06c0, 0x06e7, 0x06f1, 0x0700, - 0x070c, 0x071a, 0x0734, 0x0744, 0x0752, 0x075f, 0x0772, 0x077e, - 0x07a3, 0x07ac, 0x07b7, 0x07c6, 0x07d3, 0x07e0, 0x07ef, 0x07fc, - 0x0809, 0x0815, 0x0826, 0x0835, 0x0844, 0x0852, 0x086f, 0x0882, - // Entry 80 - BF - 0x0896, 0x08a3, 0x08bd, 0x08cd, 0x08d8, 0x08e7, 0x08f9, 0x090b, - 0x091b, 0x0929, 0x0937, 0x0946, 0x0956, 0x0963, 0x096f, 0x097c, - 0x0989, 0x0997, 0x09a8, 0x09bb, 0x09cb, 0x09e6, 0x09f6, 0x0a01, - 0x0a17, 0x0a26, 0x0a3d, 0x0a5e, 0x0a6e, 0x0a7f, 0x0a90, 0x0a9c, - 0x0aaa, 0x0ab7, 0x0ac4, 0x0ad1, 0x0ae0, 0x0af0, 0x0afe, 0x0b12, - 0x0b1e, 0x0b37, 0x0b45, 0x0b53, 0x0b65, 0x0b72, 0x0b7e, 0x0b8a, - 0x0b95, 0x0ba7, 0x0bb2, 0x0bbf, 0x0bca, 0x0be3, 0x0bf8, 0x0c07, - 0x0c16, 0x0c23, 0x0c44, 0x0c5e, 0x0c70, 0x0c81, 0x0c90, 0x0c9c, - // Entry C0 - FF - 0x0caa, 0x0cb6, 0x0cce, 0x0cdd, 0x0ceb, 0x0ceb, 0x0cf8, 0x0d05, - 0x0d18, 0x0d33, 0x0d42, 0x0d4e, 0x0d5b, 0x0d6b, 0x0d7e, 0x0d8d, - 0x0dab, 0x0dba, 0x0dcd, 0x0dde, 0x0dec, 0x0dfa, 0x0e09, 0x0e09, - 0x0e29, 0x0e3b, 0x0e3b, 0x0e47, 0x0e57, 0x0e6e, 0x0e93, 0x0e9e, - 0x0eb5, 0x0ec0, 0x0ecf, 0x0ee0, 0x0eee, 0x0f00, 0x0f13, 0x0f21, - 0x0f2d, 0x0f39, 0x0f54, 0x0f61, 0x0f6e, 0x0f7d, 0x0f8b, 0x0f98, - 0x0fc0, 0x0fca, 0x0fd6, 0x0fe7, 0x0ff7, 0x101a, 0x102a, 0x1055, - 0x1075, 0x1083, 0x1091, 0x10aa, 0x10b6, 0x10b6, 0x10c2, 0x10d0, - // Entry 100 - 13F - 0x10e5, 0x10f2, 0x1101, 0x110d, 0x1113, 0x1120, 0x1135, 0x114b, - 0x1159, 0x1178, 0x118d, 0x11a4, 0x11b8, 0x11cc, 0x11e7, 0x11f5, - 0x1210, 0x121f, 0x1234, 0x124d, 0x126c, 0x1287, 0x12a8, 0x12b8, - 0x12c2, 0x12d3, 0x12de, 0x12f0, 0x130d, 0x131a, 0x1331, 0x134b, - 0x136a, 0x137e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry C0 - FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0021, }, }, - { // el - elRegionStr, - elRegionIdx, - }, - { // en - enRegionStr, - enRegionIdx, - }, - {}, // en-AU - { // en-GB - enGBRegionStr, - enGBRegionIdx, - }, - {}, // en-NZ - { // eo - "AndoroUnuiĝintaj Arabaj EmirlandojAfganujoAntigvo-BarbudoAngviloAlbanujo" + - "ArmenujoAngoloAntarktoArgentinoAŭstrujoAŭstralioAruboAzerbajĝanoBosn" + - "io-HercegovinoBarbadoBangladeŝoBelgujoBurkinoBulgarujoBarejnoBurundo" + - "BeninoBermudojBrunejoBolivioBraziloBahamojButanoBocvanoBelorusujoBel" + - "izoKanadoCentr-Afrika RespublikoKongoloSvisujoEbur-BordoKukinsulojĈi" + - "lioKamerunoĈinujoKolombioKostarikoKuboKabo-VerdoKiproĈeĥujoGermanujo" + - "ĜibutioDanujoDominikoDomingoAlĝerioEkvadoroEstonujoEgiptoOkcidenta " + - "SaharoEritreoHispanujoEtiopujoFinnlandoFiĝojMikronezioFeroojFrancujo" + - "GabonoUnuiĝinta ReĝlandoGrenadoKartvelujoFranca GvianoGanaoĜibraltar" + - "oGronlandoGambioGvineoGvadelupoEkvatora GvineoGrekujoSud-Georgio kaj" + - " Sud-SandviĉinsulojGvatemaloGvamoGvineo-BisaŭoGujanoHerda kaj Makdon" + - "aldaj InsulojHonduroKroatujoHaitioHungarujoIndonezioIrlandoIsraeloHi" + - "ndujoBrita Hindoceana TeritorioIrakoIranoIslandoItalujoJamajkoJordan" + - "ioJapanujoKenjoKirgizistanoKamboĝoKiribatoKomorojSent-Kristofo kaj N" + - "evisoNord-KoreoSud-KoreoKuvajtoKejmanojKazaĥstanoLaosoLibanoSent-Luc" + - "ioLiĥtenŝtejnoSri-LankoLiberioLesotoLitovujoLuksemburgoLatvujoLibioM" + - "arokoMonakoMoldavujoMadagaskaroMarŝalojMakedonujoMalioMjanmaoMongolu" + - "joNord-MarianojMartinikoMaŭritanujoMaltoMaŭricioMaldivojMalavioMeksi" + - "koMalajzioMozambikoNamibioNov-KaledonioNiĝeroNorfolkinsuloNiĝerioNik" + - "aragvoNederlandoNorvegujoNepaloNauroNiuoNov-ZelandoOmanoPanamoPeruoF" + - "ranca PolinezioPapuo-Nov-GvineoFilipinojPakistanoPollandoSent-Piero " + - "kaj MikelonoPitkarna InsuloPuerto-RikoPortugalujoBelaŭoParagvajoKata" + - "roReunioRumanujoRusujoRuandoSaŭda ArabujoSalomonojSejŝelojSudanoSved" + - "ujoSingapuroSent-HelenoSlovenujoSvalbardo kaj Jan-Majen-insuloSlovak" + - "ujoSiera-LeonoSan-MarinoSenegaloSomalujoSurinamoSao-Tomeo kaj Princi" + - "peoSalvadoroSirioSvazilandoĈadoTogoloTajlandoTaĝikujoTurkmenujoTuniz" + - "ioTongoTurkujoTrinidado kaj TobagoTuvaloTajvanoTanzanioUkrajnoUgando" + - "Usonaj malgrandaj insulojUsonoUrugvajoUzbekujoVatikanoSent-Vincento " + - "kaj la GrenadinojVenezueloBritaj VirgulininsulojUsonaj Virgulininsul" + - "ojVjetnamoVanuatuoValiso kaj FutunoSamooJemenoMajotoSud-AfrikoZambio" + - "Zimbabvo", - []uint16{ // 259 elements + { // es-PY + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0023, 0x002b, 0x003a, 0x0041, 0x0049, - 0x0051, 0x0057, 0x005f, 0x0068, 0x0068, 0x0071, 0x007b, 0x0080, - 0x0080, 0x008c, 0x009e, 0x00a5, 0x00b0, 0x00b7, 0x00be, 0x00c7, - 0x00ce, 0x00d5, 0x00db, 0x00db, 0x00e3, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0116, 0x011c, 0x0122, - 0x0122, 0x0122, 0x0139, 0x0140, 0x0147, 0x0151, 0x015b, 0x0161, - 0x0169, 0x0170, 0x0178, 0x0178, 0x0181, 0x0185, 0x018f, 0x018f, - 0x018f, 0x0194, 0x019c, 0x01a5, 0x01a5, 0x01ad, 0x01b3, 0x01bb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x01c2, 0x01ca, 0x01ca, 0x01d2, 0x01da, 0x01e0, 0x01f0, 0x01f7, - 0x0200, 0x0208, 0x0208, 0x0211, 0x0217, 0x0217, 0x0221, 0x0227, - 0x022f, 0x0235, 0x0249, 0x0250, 0x025a, 0x0267, 0x0267, 0x026c, - 0x0277, 0x0280, 0x0286, 0x028c, 0x0295, 0x02a4, 0x02ab, 0x02ce, - 0x02d7, 0x02dc, 0x02ea, 0x02f0, 0x02f0, 0x030d, 0x0314, 0x031c, - 0x0322, 0x032b, 0x032b, 0x0334, 0x033b, 0x0342, 0x0342, 0x0349, - 0x0363, 0x0368, 0x036d, 0x0374, 0x037b, 0x037b, 0x0382, 0x038a, - 0x0392, 0x0397, 0x03a3, 0x03ab, 0x03b3, 0x03ba, 0x03d2, 0x03dc, - // Entry 80 - BF - 0x03e5, 0x03ec, 0x03f4, 0x03ff, 0x0404, 0x040a, 0x0414, 0x0422, - 0x042b, 0x0432, 0x0438, 0x0440, 0x044b, 0x0452, 0x0457, 0x045d, - 0x0463, 0x046c, 0x046c, 0x046c, 0x0477, 0x0480, 0x048a, 0x048f, - 0x0496, 0x049f, 0x049f, 0x04ac, 0x04b5, 0x04c1, 0x04c1, 0x04c6, - 0x04cf, 0x04d7, 0x04de, 0x04e5, 0x04ed, 0x04f6, 0x04fd, 0x050a, - 0x0511, 0x051e, 0x0526, 0x052f, 0x0539, 0x0542, 0x0548, 0x054d, - 0x0551, 0x055c, 0x0561, 0x0567, 0x056c, 0x057c, 0x058c, 0x0595, - 0x059e, 0x05a6, 0x05bd, 0x05cc, 0x05d7, 0x05d7, 0x05e2, 0x05e9, - // Entry C0 - FF - 0x05f2, 0x05f8, 0x05f8, 0x05fe, 0x0606, 0x0606, 0x060c, 0x0612, - 0x0620, 0x0629, 0x0632, 0x0638, 0x063f, 0x0648, 0x0653, 0x065c, - 0x067a, 0x0683, 0x068e, 0x0698, 0x06a0, 0x06a8, 0x06b0, 0x06b0, - 0x06c7, 0x06d0, 0x06d0, 0x06d5, 0x06df, 0x06df, 0x06df, 0x06e4, - 0x06e4, 0x06ea, 0x06f2, 0x06fb, 0x06fb, 0x06fb, 0x0705, 0x070c, - 0x0711, 0x0718, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x0767, 0x076c, 0x0774, 0x077c, 0x0784, 0x07a3, 0x07ac, 0x07c2, - 0x07d8, 0x07e0, 0x07e8, 0x07f9, 0x07fe, 0x07fe, 0x0804, 0x080a, - // Entry 100 - 13F - 0x0814, 0x081a, 0x0822, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry 80 - BF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + // Entry C0 - FF + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, - { // es - esRegionStr, - esRegionIdx, - }, - { // es-419 - es419RegionStr, - es419RegionIdx, + { // es-SV + "Islas menores alejadas de EE. UU.", + []uint16{ // 242 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry C0 - FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0021, + }, }, - { // es-CL - "Sahara Occidental", - []uint16{ // 71 elements + { // es-US + "Islas menores alejadas de EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -30882,61 +35410,72 @@ var regionHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0011, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry C0 - FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0021, }, }, - { // es-MX - "BangladeshIslas Cocos (Keeling)GuernseyRegión Administrativa Especial de" + - " Hong Kong de la República Popular ChinaIslas CanariasRegión Adminis" + - "trativa Especial de Macao de la República Popular ChinaTristán de Ac" + - "uñaIslas Ultramarinas Menores de Estados UnidosIslas Vírgenes de los" + - " Estados UnidosÁfrica OccidentalÁfrica OrientalÁfrica del NorteÁfric" + - "a CentralÁfrica del SurAméricasAsia OrientalAsia del SurSudeste Asiá" + - "ticoEuropa del SurAsia CentralAsia OccidentalEuropa OrientalEuropa d" + - "el NorteEuropa Occidental", - []uint16{ // 289 elements + { // es-VE + "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + + " EE. UU.", + []uint16{ // 242 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, + 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 40 - 7F - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry 80 - BF - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, // Entry C0 - FF - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, - 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, - // Entry 100 - 13F - 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, - 0x012a, 0x013c, 0x013c, 0x014c, 0x015d, 0x016c, 0x017b, 0x0184, - 0x0184, 0x0184, 0x0191, 0x019d, 0x01ae, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01c8, 0x01d7, 0x01d7, 0x01e6, 0x01f6, - 0x0207, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, + 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, + 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, + 0x0031, 0x0052, }, }, { // et @@ -30952,45 +35491,45 @@ var regionHeaders = [220]header{ "harteaBotswanaBielorrusiaBelizeKanadaCocos uharteakKongoko Errepubli" + "ka DemokratikoaAfrika Erdiko ErrepublikaKongo (Brazzaville)SuitzaBol" + "i KostaCook uharteakTxileKamerunTxinaKolonbiaClipperton uharteaCosta" + - " RicaKubaCabo VerdeCuraçaoChristmas uharteaZipreTxekiar ErrepublikaA" + - "lemaniaDiego GarciaDjibutiDanimarkaDominikaDominikar ErrepublikaAlje" + - "riaCeuta eta MelillaEkuadorEstoniaEgiptoMendebaldeko SaharaEritreaEs" + - "painiaEtiopiaEuropar BatasunaFinlandiaFijiMalvinakMikronesiaFaroe uh" + - "arteakFrantziaGabonErresuma BatuaGrenadaGeorgiaGuyana FrantsesaGuern" + - "eseyGhanaGibraltarGroenlandiaGambiaGineaGuadalupeEkuatore GineaGrezi" + - "aHegoaldeko Georgia eta Hegoaldeko Sandwich uharteakGuatemalaGuamGin" + - "ea-BissauGuyanaHong Kong AEB TxinaHeard eta McDonald uharteakHondura" + - "sKroaziaHaitiHungariaKanariakIndonesiaIrlandaIsraelMan uharteaIndiaI" + - "ndiako Ozeanoko lurralde britainiarraIrakIranIslandiaItaliaJerseyJam" + - "aikaJordaniaJaponiaKenyaKirgizistanKanbodiaKiribatiKomoreakSaint Kit" + - "ts eta NevisIpar KoreaHego KoreaKuwaitKaiman uharteakKazakhstanLaosL" + - "ibanoSanta LuziaLiechtensteinSri LankaLiberiaLesothoLituaniaLuxenbur" + - "goLetoniaLibiaMarokoMonakoMoldaviaMontenegroSaint MartinMadagaskarMa" + - "rshall uharteakMazedoniaMaliMyanmarMongoliaMacau AEB TxinaIparraldek" + - "o Mariana uharteakMartinikaMauritaniaMontserratMaltaMaurizioMaldivak" + - "MalawiMexikoMalaysiaMozambikeNamibiaKaledonia BerriaNigerNorfolk uha" + - "rteaNigeriaNikaraguaHerbehereakNorvegiaNepalNauruNiueZeelanda Berria" + - "OmanPanamaPeruPolinesia FrantsesaPapua Ginea BerriaFilipinakPakistan" + - "PoloniaSaint-Pierre eta MikelunePitcairn uharteakPuerto RicoPalestin" + - "ako LurraldeakPortugalPalauParaguaiQatarMugaz kanpoko OzeaniaReunion" + - "ErrumaniaSerbiaErrusiaRuandaSaudi ArabiaSalomon uharteakSeychelleakS" + - "udanSuediaSingapurSaint HelenaEsloveniaSvalbard eta Jan Mayen uharte" + - "akEslovakiaSierra LeonaSan MarinoSenegalSomaliaSurinamHego SudanSao " + - "Tome eta PrincipeEl SalvadorSint MaartenSiriaSwazilandiaTristan da C" + - "unhaTurk eta Caicos uharteakTxadHegoaldeko lurralde frantsesakTogoTh" + - "ailandiaTajikistanTokelauEkialdeko TimorTurkmenistanTunisiaTongaTurk" + - "iaTrinidad eta TobagoTuvaluTaiwanTanzaniaUkrainaUgandaAmeriketako Es" + - "tatu Batuetako Kanpoaldeko Uharte TxikiakAmeriketako Estatu BatuakUr" + - "uguaiUzbekistanVatikano HiriaSaint Vincent eta GrenadinakVenezuelaBi" + - "rjina uharte britainiarrakBirjina uharte amerikarrakVietnamVanuatuWa" + - "llis eta FutunaSamoaKosovoYemenMayotteHegoafrikaZambiaZimbabweEskual" + - "de ezezagunaMunduaAfrikaIpar AmerikaHego AmerikaOzeaniaAfrika mendeb" + - "aldeaErdialdeko AmerikaAfrika ekialdeaAfrika iparraldeaErdialdeko Af" + - "rikaAfrika hegoaldeaAmerikaAmerika iparraldeaKaribeaAsia ekialdeaAsi" + - "a hegoaldeaAsia hego-ekialdeaEuropa hegoaldeaAustralasiaMelanesiaMik" + - "ronesia eskualdeaPolinesiaAsiaAsia erdialdeaAsia mendebaldeaEuropaEu" + - "ropa ekialdeaEuropa iparraldeaEuropa mendebaldeaLatinoamerika", - []uint16{ // 290 elements + " RicaKubaCabo VerdeCuraçaoChristmas uharteaZipreTxekiaAlemaniaDiego " + + "GarciaDjibutiDanimarkaDominikaDominikar ErrepublikaAljeriaCeuta eta " + + "MelillaEkuadorEstoniaEgiptoMendebaldeko SaharaEritreaEspainiaEtiopia" + + "Europar BatasunaFinlandiaFijiMalvinakMikronesiaFaroe uharteakFrantzi" + + "aGabonErresuma BatuaGrenadaGeorgiaGuyana FrantsesaGuerneseyGhanaGibr" + + "altarGroenlandiaGambiaGineaGuadalupeEkuatore GineaGreziaHegoaldeko G" + + "eorgia eta Hegoaldeko Sandwich uharteakGuatemalaGuamGinea-BissauGuya" + + "naHong Kong AEB TxinaHeard eta McDonald uharteakHondurasKroaziaHaiti" + + "HungariaKanariakIndonesiaIrlandaIsraelMan uharteaIndiaIndiako Ozeano" + + "ko lurralde britainiarraIrakIranIslandiaItaliaJerseyJamaikaJordaniaJ" + + "aponiaKenyaKirgizistanKanbodiaKiribatiKomoreakSaint Kitts eta NevisI" + + "par KoreaHego KoreaKuwaitKaiman uharteakKazakhstanLaosLibanoSanta Lu" + + "ziaLiechtensteinSri LankaLiberiaLesothoLituaniaLuxenburgoLetoniaLibi" + + "aMarokoMonakoMoldaviaMontenegroSan MartinMadagaskarMarshall uharteak" + + "MazedoniaMaliMyanmar (Birmania)MongoliaMacau AEB TxinaIparraldeko Ma" + + "riana uharteakMartinikaMauritaniaMontserratMaltaMaurizioMaldivakMala" + + "wiMexikoMalaysiaMozambikeNamibiaKaledonia BerriaNigerNorfolk uhartea" + + "NigeriaNikaraguaHerbehereakNorvegiaNepalNauruNiueZeelanda BerriaOman" + + "PanamaPeruPolinesia FrantsesaPapua Ginea BerriaFilipinakPakistanPolo" + + "niaSaint-Pierre eta MikelunePitcairn uharteakPuerto RicoPalestinako " + + "LurraldeakPortugalPalauParaguaiQatarMugaz kanpoko OzeaniaReunionErru" + + "maniaSerbiaErrusiaRuandaSaudi ArabiaSalomon uharteakSeychelleakSudan" + + "SuediaSingapurSanta HelenaEsloveniaSvalbard eta Jan Mayen uharteakEs" + + "lovakiaSierra LeonaSan MarinoSenegalSomaliaSurinamHego SudanSao Tome" + + " eta PrincipeEl SalvadorSint MaartenSiriaSwazilandiaTristan da Cunha" + + "Turk eta Caico uharteakTxadHegoaldeko lurralde frantsesakTogoThailan" + + "diaTajikistanTokelauEkialdeko TimorTurkmenistanTunisiaTongaTurkiaTri" + + "nidad eta TobagoTuvaluTaiwanTanzaniaUkrainaUgandaAmeriketako Estatu " + + "Batuetako Kanpoaldeko Uharte TxikiakAmeriketako Estatu BatuakUruguai" + + "UzbekistanVatikano HiriaSaint Vincent eta GrenadinakVenezuelaBirjina" + + " uharte britainiarrakBirjina uharte amerikarrakVietnamVanuatuWallis " + + "eta FutunaSamoaKosovoYemenMayotteHegoafrikaZambiaZimbabweEskualde ez" + + "ezagunaMunduaAfrikaIpar AmerikaHego AmerikaOzeaniaAfrika mendebaldea" + + "Erdialdeko AmerikaAfrika ekialdeaAfrika iparraldeaErdialdeko AfrikaA" + + "frika hegoaldeaAmerikaAmerika iparraldeaKaribeaAsia ekialdeaAsia heg" + + "oaldeaAsia hego-ekialdeaEuropa hegoaldeaAustralasiaMelanesiaMikrones" + + "ia eskualdeaPolinesiaAsiaAsia erdialdeaAsia mendebaldeaEuropaEuropa " + + "ekialdeaEuropa iparraldeaEuropa mendebaldeaLatinoamerika", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0011, 0x0018, 0x002f, 0x0039, 0x004c, 0x0052, 0x0059, 0x0060, 0x0066, 0x006f, 0x0078, 0x0086, 0x008d, 0x0096, 0x009b, @@ -30999,40 +35538,40 @@ var regionHeaders = [220]header{ 0x0144, 0x014b, 0x0151, 0x015f, 0x0167, 0x0172, 0x0178, 0x017e, 0x018c, 0x01ac, 0x01c5, 0x01d8, 0x01de, 0x01e8, 0x01f5, 0x01fa, 0x0201, 0x0206, 0x020e, 0x0220, 0x022a, 0x022e, 0x0238, 0x0240, - 0x0251, 0x0256, 0x0269, 0x0271, 0x027d, 0x0284, 0x028d, 0x0295, - // Entry 40 - 7F - 0x02aa, 0x02b1, 0x02c2, 0x02c9, 0x02d0, 0x02d6, 0x02e9, 0x02f0, - 0x02f8, 0x02ff, 0x030f, 0x0318, 0x031c, 0x0324, 0x032e, 0x033c, - 0x0344, 0x0349, 0x0357, 0x035e, 0x0365, 0x0375, 0x037e, 0x0383, - 0x038c, 0x0397, 0x039d, 0x03a2, 0x03ab, 0x03b9, 0x03bf, 0x03f2, - 0x03fb, 0x03ff, 0x040b, 0x0411, 0x0424, 0x043f, 0x0447, 0x044e, - 0x0453, 0x045b, 0x0463, 0x046c, 0x0473, 0x0479, 0x0484, 0x0489, - 0x04af, 0x04b3, 0x04b7, 0x04bf, 0x04c5, 0x04cb, 0x04d2, 0x04da, - 0x04e1, 0x04e6, 0x04f1, 0x04f9, 0x0501, 0x0509, 0x051e, 0x0528, - // Entry 80 - BF - 0x0532, 0x0538, 0x0547, 0x0551, 0x0555, 0x055b, 0x0566, 0x0573, - 0x057c, 0x0583, 0x058a, 0x0592, 0x059c, 0x05a3, 0x05a8, 0x05ae, - 0x05b4, 0x05bc, 0x05c6, 0x05d2, 0x05dc, 0x05ed, 0x05f6, 0x05fa, - 0x0601, 0x0609, 0x0618, 0x0634, 0x063d, 0x0647, 0x0651, 0x0656, - 0x065e, 0x0666, 0x066c, 0x0672, 0x067a, 0x0683, 0x068a, 0x069a, - 0x069f, 0x06ae, 0x06b5, 0x06be, 0x06c9, 0x06d1, 0x06d6, 0x06db, - 0x06df, 0x06ee, 0x06f2, 0x06f8, 0x06fc, 0x070f, 0x0721, 0x072a, - 0x0732, 0x0739, 0x0752, 0x0763, 0x076e, 0x0784, 0x078c, 0x0791, - // Entry C0 - FF - 0x0799, 0x079e, 0x07b3, 0x07ba, 0x07c3, 0x07c9, 0x07d0, 0x07d6, - 0x07e2, 0x07f2, 0x07fd, 0x0802, 0x0808, 0x0810, 0x081c, 0x0825, - 0x0844, 0x084d, 0x0859, 0x0863, 0x086a, 0x0871, 0x0878, 0x0882, - 0x0897, 0x08a2, 0x08ae, 0x08b3, 0x08be, 0x08ce, 0x08e6, 0x08ea, - 0x0908, 0x090c, 0x0916, 0x0920, 0x0927, 0x0936, 0x0942, 0x0949, - 0x094e, 0x0954, 0x0967, 0x096d, 0x0973, 0x097b, 0x0982, 0x0988, - 0x09bf, 0x09d8, 0x09df, 0x09e9, 0x09f7, 0x0a13, 0x0a1c, 0x0a38, - 0x0a52, 0x0a59, 0x0a60, 0x0a71, 0x0a76, 0x0a7c, 0x0a81, 0x0a88, - // Entry 100 - 13F - 0x0a92, 0x0a98, 0x0aa0, 0x0ab2, 0x0ab8, 0x0abe, 0x0aca, 0x0ad6, - 0x0add, 0x0aef, 0x0b01, 0x0b10, 0x0b21, 0x0b32, 0x0b42, 0x0b49, - 0x0b5b, 0x0b62, 0x0b6f, 0x0b7d, 0x0b8f, 0x0b9f, 0x0baa, 0x0bb3, - 0x0bc7, 0x0bd0, 0x0bd4, 0x0be2, 0x0bf2, 0x0bf8, 0x0c07, 0x0c18, - 0x0c2a, 0x0c37, + 0x0251, 0x0256, 0x025c, 0x0264, 0x0270, 0x0277, 0x0280, 0x0288, + // Entry 40 - 7F + 0x029d, 0x02a4, 0x02b5, 0x02bc, 0x02c3, 0x02c9, 0x02dc, 0x02e3, + 0x02eb, 0x02f2, 0x0302, 0x0302, 0x030b, 0x030f, 0x0317, 0x0321, + 0x032f, 0x0337, 0x033c, 0x034a, 0x0351, 0x0358, 0x0368, 0x0371, + 0x0376, 0x037f, 0x038a, 0x0390, 0x0395, 0x039e, 0x03ac, 0x03b2, + 0x03e5, 0x03ee, 0x03f2, 0x03fe, 0x0404, 0x0417, 0x0432, 0x043a, + 0x0441, 0x0446, 0x044e, 0x0456, 0x045f, 0x0466, 0x046c, 0x0477, + 0x047c, 0x04a2, 0x04a6, 0x04aa, 0x04b2, 0x04b8, 0x04be, 0x04c5, + 0x04cd, 0x04d4, 0x04d9, 0x04e4, 0x04ec, 0x04f4, 0x04fc, 0x0511, + // Entry 80 - BF + 0x051b, 0x0525, 0x052b, 0x053a, 0x0544, 0x0548, 0x054e, 0x0559, + 0x0566, 0x056f, 0x0576, 0x057d, 0x0585, 0x058f, 0x0596, 0x059b, + 0x05a1, 0x05a7, 0x05af, 0x05b9, 0x05c3, 0x05cd, 0x05de, 0x05e7, + 0x05eb, 0x05fd, 0x0605, 0x0614, 0x0630, 0x0639, 0x0643, 0x064d, + 0x0652, 0x065a, 0x0662, 0x0668, 0x066e, 0x0676, 0x067f, 0x0686, + 0x0696, 0x069b, 0x06aa, 0x06b1, 0x06ba, 0x06c5, 0x06cd, 0x06d2, + 0x06d7, 0x06db, 0x06ea, 0x06ee, 0x06f4, 0x06f8, 0x070b, 0x071d, + 0x0726, 0x072e, 0x0735, 0x074e, 0x075f, 0x076a, 0x0780, 0x0788, + // Entry C0 - FF + 0x078d, 0x0795, 0x079a, 0x07af, 0x07b6, 0x07bf, 0x07c5, 0x07cc, + 0x07d2, 0x07de, 0x07ee, 0x07f9, 0x07fe, 0x0804, 0x080c, 0x0818, + 0x0821, 0x0840, 0x0849, 0x0855, 0x085f, 0x0866, 0x086d, 0x0874, + 0x087e, 0x0893, 0x089e, 0x08aa, 0x08af, 0x08ba, 0x08ca, 0x08e1, + 0x08e5, 0x0903, 0x0907, 0x0911, 0x091b, 0x0922, 0x0931, 0x093d, + 0x0944, 0x0949, 0x094f, 0x0962, 0x0968, 0x096e, 0x0976, 0x097d, + 0x0983, 0x09ba, 0x09ba, 0x09d3, 0x09da, 0x09e4, 0x09f2, 0x0a0e, + 0x0a17, 0x0a33, 0x0a4d, 0x0a54, 0x0a5b, 0x0a6c, 0x0a71, 0x0a77, + // Entry 100 - 13F + 0x0a7c, 0x0a83, 0x0a8d, 0x0a93, 0x0a9b, 0x0aad, 0x0ab3, 0x0ab9, + 0x0ac5, 0x0ad1, 0x0ad8, 0x0aea, 0x0afc, 0x0b0b, 0x0b1c, 0x0b2d, + 0x0b3d, 0x0b44, 0x0b56, 0x0b5d, 0x0b6a, 0x0b78, 0x0b8a, 0x0b9a, + 0x0ba5, 0x0bae, 0x0bc2, 0x0bcb, 0x0bcf, 0x0bdd, 0x0bed, 0x0bf3, + 0x0c02, 0x0c13, 0x0c25, 0x0c32, }, }, { // ewo @@ -31067,7 +35606,7 @@ var regionHeaders = [220]header{ "ŋ-ai-Bə GələnadínVenezuélańnam Minlán ɛ́ngəlísMinlán Mi AmɛrəkəViɛd" + "ənámVanuátuWalís-ai-FutúnaSamoáYemɛ́nMayɔ́dAfiríka yá SúdZambíZimba" + "bwé", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x001e, 0x002d, 0x0043, 0x004b, 0x0055, 0x005f, 0x0066, 0x0066, 0x0074, 0x008d, 0x0098, 0x00a4, 0x00aa, @@ -31079,33 +35618,33 @@ var regionHeaders = [220]header{ 0x0213, 0x021c, 0x0229, 0x0231, 0x0231, 0x0239, 0x0245, 0x024f, // Entry 40 - 7F 0x0266, 0x0270, 0x0270, 0x0278, 0x0280, 0x028b, 0x028b, 0x0294, - 0x029c, 0x02a3, 0x02a3, 0x02ac, 0x02b2, 0x02c9, 0x02d5, 0x02d5, - 0x02de, 0x02e5, 0x02f3, 0x02ff, 0x0309, 0x031d, 0x031d, 0x0322, - 0x032f, 0x0336, 0x033c, 0x0341, 0x034b, 0x0358, 0x0361, 0x0361, - 0x036b, 0x0370, 0x037c, 0x0382, 0x0382, 0x0382, 0x038a, 0x0395, - 0x039a, 0x03a1, 0x03a1, 0x03ac, 0x03b7, 0x03c2, 0x03c2, 0x03ca, - 0x03f3, 0x03f8, 0x03fd, 0x0408, 0x0411, 0x0411, 0x0419, 0x0423, - 0x042b, 0x0431, 0x043e, 0x0447, 0x0450, 0x0458, 0x0476, 0x0484, - // Entry 80 - BF - 0x0492, 0x049a, 0x04af, 0x04bb, 0x04c0, 0x04c7, 0x04d7, 0x04e9, - 0x04f6, 0x04fe, 0x0506, 0x050e, 0x051a, 0x0522, 0x0527, 0x052f, - 0x0537, 0x0541, 0x0541, 0x0541, 0x0550, 0x0564, 0x056e, 0x0573, - 0x057d, 0x0589, 0x0589, 0x05a4, 0x05af, 0x05b8, 0x05c5, 0x05ce, - 0x05d4, 0x05df, 0x05e6, 0x05f0, 0x05fa, 0x0603, 0x060a, 0x061f, - 0x0627, 0x0640, 0x0648, 0x0652, 0x065a, 0x0666, 0x066c, 0x0672, - 0x0677, 0x0689, 0x068e, 0x0695, 0x069a, 0x06b1, 0x06cf, 0x06d7, - 0x06e2, 0x06e8, 0x0708, 0x071b, 0x072a, 0x073c, 0x074a, 0x074f, - // Entry C0 - FF - 0x0757, 0x075d, 0x075d, 0x0768, 0x076f, 0x076f, 0x0776, 0x077e, - 0x078b, 0x07a1, 0x07aa, 0x07b1, 0x07b9, 0x07c2, 0x07d5, 0x07e0, - 0x07e0, 0x07ea, 0x07f8, 0x0809, 0x0811, 0x0819, 0x0821, 0x0821, - 0x083c, 0x0847, 0x0847, 0x084c, 0x0858, 0x0858, 0x0876, 0x087b, - 0x087b, 0x0880, 0x0887, 0x0896, 0x089d, 0x08a3, 0x08b8, 0x08bf, - 0x08c6, 0x08ce, 0x08e3, 0x08ea, 0x08f1, 0x08fc, 0x0906, 0x090d, - 0x090d, 0x091d, 0x0924, 0x0932, 0x0940, 0x096a, 0x0974, 0x098e, - 0x09a3, 0x09ae, 0x09b6, 0x09c7, 0x09cd, 0x09cd, 0x09d5, 0x09dd, - // Entry 100 - 13F - 0x09ee, 0x09f4, 0x09fd, + 0x029c, 0x02a3, 0x02a3, 0x02a3, 0x02ac, 0x02b2, 0x02c9, 0x02d5, + 0x02d5, 0x02de, 0x02e5, 0x02f3, 0x02ff, 0x0309, 0x031d, 0x031d, + 0x0322, 0x032f, 0x0336, 0x033c, 0x0341, 0x034b, 0x0358, 0x0361, + 0x0361, 0x036b, 0x0370, 0x037c, 0x0382, 0x0382, 0x0382, 0x038a, + 0x0395, 0x039a, 0x03a1, 0x03a1, 0x03ac, 0x03b7, 0x03c2, 0x03c2, + 0x03ca, 0x03f3, 0x03f8, 0x03fd, 0x0408, 0x0411, 0x0411, 0x0419, + 0x0423, 0x042b, 0x0431, 0x043e, 0x0447, 0x0450, 0x0458, 0x0476, + // Entry 80 - BF + 0x0484, 0x0492, 0x049a, 0x04af, 0x04bb, 0x04c0, 0x04c7, 0x04d7, + 0x04e9, 0x04f6, 0x04fe, 0x0506, 0x050e, 0x051a, 0x0522, 0x0527, + 0x052f, 0x0537, 0x0541, 0x0541, 0x0541, 0x0550, 0x0564, 0x056e, + 0x0573, 0x057d, 0x0589, 0x0589, 0x05a4, 0x05af, 0x05b8, 0x05c5, + 0x05ce, 0x05d4, 0x05df, 0x05e6, 0x05f0, 0x05fa, 0x0603, 0x060a, + 0x061f, 0x0627, 0x0640, 0x0648, 0x0652, 0x065a, 0x0666, 0x066c, + 0x0672, 0x0677, 0x0689, 0x068e, 0x0695, 0x069a, 0x06b1, 0x06cf, + 0x06d7, 0x06e2, 0x06e8, 0x0708, 0x071b, 0x072a, 0x073c, 0x074a, + // Entry C0 - FF + 0x074f, 0x0757, 0x075d, 0x075d, 0x0768, 0x076f, 0x076f, 0x0776, + 0x077e, 0x078b, 0x07a1, 0x07aa, 0x07b1, 0x07b9, 0x07c2, 0x07d5, + 0x07e0, 0x07e0, 0x07ea, 0x07f8, 0x0809, 0x0811, 0x0819, 0x0821, + 0x0821, 0x083c, 0x0847, 0x0847, 0x084c, 0x0858, 0x0858, 0x0876, + 0x087b, 0x087b, 0x0880, 0x0887, 0x0896, 0x089d, 0x08a3, 0x08b8, + 0x08bf, 0x08c6, 0x08ce, 0x08e3, 0x08ea, 0x08f1, 0x08fc, 0x0906, + 0x090d, 0x090d, 0x090d, 0x091d, 0x0924, 0x0932, 0x0940, 0x096a, + 0x0974, 0x098e, 0x09a3, 0x09ae, 0x09b6, 0x09c7, 0x09cd, 0x09cd, + // Entry 100 - 13F + 0x09d5, 0x09dd, 0x09ee, 0x09f4, 0x09fd, }, }, { // fa @@ -31113,55 +35652,56 @@ var regionHeaders = [220]header{ faRegionIdx, }, { // fa-AF - "اندوراانتیگوا و باربوداالبانیاانگولاارجنتاینآسترالیابوسنیا و هرزه\u200cگ" + - "وینابنگله\u200cدیشبلجیمبلغاریابرونیبولیویابرازیلبهاماسروسیهٔ سفیدکا" + - "نگو - کینشاساکانگو - برازویلسویسچلیکولمبیاکاستریکاکیوبادنمارکاستونی" + - "ااریتریاهسپانیهایتوپیافنلندمیکرونزیاگریناداگینیاگینیا استواییگواتیم" + - "الاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزیاآیرلندآیسلندجاپانکی" + - "نیاقرغزستانکمپوچیاکوریای شمالیکوریای جنوبیسریلانکالیسوتولتوانیالاتو" + - "یالیبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمبیقنیجریانیکار" + - "اگواهالندناروینیپالزیلاند جدیدپانامهپیروپاپوا نیو گینیاپولندپرتگالپ" + - "اراگوایرومانیاروآنداسویدنسینگاپورسلونیاسلواکیاسیرالیونسینیگالسومالی" + - "هالسلوادورتاجکستاناکراینیوروگوایونزویلازیمبابوی", - []uint16{ // 259 elements + "اندوراانتیگوا و باربوداالبانیاانگولاانترکتیکاارجنتاینآسترالیابوسنیا و هر" + + "زه\u200cگوینابنگله\u200cدیشبلجیمبلغاریابرونیبولیویابرازیلبهاماسروسی" + + "هٔ سفیدکانگو - کینشاساکانگو - برازویلسویسچلیکولمبیاکاستریکاکیوبادنم" + + "ارکاستونیااریتریاهسپانیهایتوپیافنلندمیکرونزیاگریناداگاناگینیاگینیا " + + "استواییگواتیمالاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزیاآیرلند" + + "آیسلندجاپانکینیاقرغزستانکمپوچیاکوریای شمالیکوریای جنوبیسریلانکالیسو" + + "تولتوانیالاتویالیبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمب" + + "یقنایجرنیجریانیکاراگواهالندناروینیپالزیلاند جدیدپانامهپیروپاپوا نیو" + + " گینیاپولندپرتگالپاراگوایرومانیاروآنداسویدنسینگاپورسلونیاسلواکیاسیرا" + + "لیونسینیگالسومالیهالسلوادورتاجکستاناکراینیوگاندایوروگوایسنت وینسنت " + + "و گرنادین\u200cهاونزویلاکوسوازیمبابوی", + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x002c, 0x002c, 0x003a, - 0x003a, 0x0046, 0x0046, 0x0056, 0x0056, 0x0056, 0x0066, 0x0066, - 0x0066, 0x0066, 0x008b, 0x008b, 0x009e, 0x00a8, 0x00a8, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c0, 0x00ce, 0x00ce, - 0x00da, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00fb, 0x00fb, 0x00fb, - 0x00fb, 0x0116, 0x0116, 0x0131, 0x0139, 0x0139, 0x0139, 0x013f, - 0x013f, 0x013f, 0x014d, 0x014d, 0x015d, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0173, 0x0173, - // Entry 40 - 7F - 0x0173, 0x0173, 0x0173, 0x0173, 0x0181, 0x0181, 0x0181, 0x018f, - 0x019d, 0x01ab, 0x01ab, 0x01b5, 0x01b5, 0x01b5, 0x01c7, 0x01c7, - 0x01c7, 0x01c7, 0x01c7, 0x01d5, 0x01d5, 0x01d5, 0x01d5, 0x01d5, - 0x01d5, 0x01d5, 0x01d5, 0x01df, 0x01df, 0x01f8, 0x01f8, 0x01f8, - 0x020a, 0x020a, 0x0221, 0x022b, 0x022b, 0x022b, 0x023b, 0x0247, - 0x0251, 0x0251, 0x0251, 0x0263, 0x026f, 0x026f, 0x026f, 0x026f, - 0x026f, 0x026f, 0x026f, 0x027b, 0x027b, 0x027b, 0x027b, 0x027b, - 0x0285, 0x028f, 0x029f, 0x02ad, 0x02ad, 0x02ad, 0x02ad, 0x02c4, - // Entry 80 - BF - 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, - 0x02eb, 0x02eb, 0x02f7, 0x0305, 0x0305, 0x0311, 0x031b, 0x031b, - 0x031b, 0x031b, 0x031b, 0x031b, 0x032b, 0x032b, 0x032b, 0x032b, - 0x032b, 0x0339, 0x0339, 0x0339, 0x0339, 0x034b, 0x034b, 0x0355, - 0x0355, 0x0355, 0x0355, 0x0361, 0x036f, 0x037d, 0x037d, 0x037d, - 0x037d, 0x037d, 0x0389, 0x039b, 0x03a5, 0x03af, 0x03b9, 0x03b9, - 0x03b9, 0x03ce, 0x03ce, 0x03da, 0x03e2, 0x03e2, 0x03fe, 0x03fe, - 0x03fe, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0414, 0x0414, - // Entry C0 - FF - 0x0424, 0x0424, 0x0424, 0x0424, 0x0432, 0x0432, 0x0432, 0x043e, - 0x043e, 0x043e, 0x043e, 0x043e, 0x0448, 0x0458, 0x0458, 0x0464, - 0x0464, 0x0472, 0x0482, 0x0482, 0x0490, 0x049e, 0x049e, 0x049e, - 0x049e, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, - 0x04b0, 0x04b0, 0x04b0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, - 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04ea, 0x04ea, - 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, - // Entry 100 - 13F - 0x04ea, 0x04ea, 0x04fa, + 0x003a, 0x0046, 0x0058, 0x0068, 0x0068, 0x0068, 0x0078, 0x0078, + 0x0078, 0x0078, 0x009d, 0x009d, 0x00b0, 0x00ba, 0x00ba, 0x00c8, + 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00d2, 0x00e0, 0x00e0, + 0x00ec, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x010d, 0x010d, 0x010d, + 0x010d, 0x0128, 0x0128, 0x0143, 0x014b, 0x014b, 0x014b, 0x0151, + 0x0151, 0x0151, 0x015f, 0x015f, 0x016f, 0x0179, 0x0179, 0x0179, + 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0185, 0x0185, + // Entry 40 - 7F + 0x0185, 0x0185, 0x0185, 0x0185, 0x0193, 0x0193, 0x0193, 0x01a1, + 0x01af, 0x01bd, 0x01bd, 0x01bd, 0x01c7, 0x01c7, 0x01c7, 0x01d9, + 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e7, 0x01e7, 0x01e7, 0x01e7, + 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01f9, 0x01f9, 0x0212, 0x0212, + 0x0212, 0x0224, 0x0224, 0x023b, 0x0245, 0x0245, 0x0245, 0x0255, + 0x0261, 0x026b, 0x026b, 0x026b, 0x027d, 0x0289, 0x0289, 0x0289, + 0x0289, 0x0289, 0x0289, 0x0289, 0x0295, 0x0295, 0x0295, 0x0295, + 0x0295, 0x029f, 0x02a9, 0x02b9, 0x02c7, 0x02c7, 0x02c7, 0x02c7, + // Entry 80 - BF + 0x02de, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, + 0x02f5, 0x0305, 0x0305, 0x0311, 0x031f, 0x031f, 0x032b, 0x0335, + 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0345, 0x0345, 0x0345, + 0x0345, 0x0345, 0x0353, 0x0353, 0x0353, 0x0353, 0x0365, 0x0365, + 0x036f, 0x036f, 0x036f, 0x036f, 0x037b, 0x0389, 0x0397, 0x0397, + 0x0397, 0x03a1, 0x03a1, 0x03ad, 0x03bf, 0x03c9, 0x03d3, 0x03dd, + 0x03dd, 0x03dd, 0x03f2, 0x03f2, 0x03fe, 0x0406, 0x0406, 0x0422, + 0x0422, 0x0422, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, 0x0438, + // Entry C0 - FF + 0x0438, 0x0448, 0x0448, 0x0448, 0x0448, 0x0456, 0x0456, 0x0456, + 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x046c, 0x047c, 0x047c, + 0x0488, 0x0488, 0x0496, 0x04a6, 0x04a6, 0x04b4, 0x04c2, 0x04c2, + 0x04c2, 0x04c2, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, + 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04e4, 0x04e4, 0x04e4, 0x04e4, + 0x04e4, 0x04e4, 0x04e4, 0x04e4, 0x04e4, 0x04e4, 0x04e4, 0x04f0, + 0x04fe, 0x04fe, 0x04fe, 0x04fe, 0x050e, 0x050e, 0x050e, 0x053a, + 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0552, + // Entry 100 - 13F + 0x0552, 0x0552, 0x0552, 0x0552, 0x0562, }, }, { // ff @@ -31197,7 +35737,7 @@ var regionHeaders = [220]header{ "Weesaa e GarnadiinWenesuwelaaduuɗe kecce britaniiDuuɗe Kecce AmerikW" + "iyetnaamWanuwaatuuWalis e FutunaSamowaaYemenMayootAfrik bŋ WorgoSamm" + "biSimbaabuwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0008, 0x001f, 0x002a, 0x003e, 0x0046, 0x004d, 0x0054, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0083, 0x0089, @@ -31209,33 +35749,33 @@ var regionHeaders = [220]header{ 0x01c6, 0x01cc, 0x01db, 0x01e2, 0x01e2, 0x01e9, 0x01f0, 0x01f8, // Entry 40 - 7F 0x020c, 0x0213, 0x0213, 0x021c, 0x0222, 0x0227, 0x0227, 0x022f, - 0x0236, 0x023c, 0x023c, 0x0243, 0x0248, 0x0257, 0x0262, 0x0262, - 0x0269, 0x026e, 0x0281, 0x0288, 0x028f, 0x029d, 0x029d, 0x02a2, - 0x02ac, 0x02b7, 0x02bd, 0x02c1, 0x02ca, 0x02de, 0x02e4, 0x02e4, - 0x02ef, 0x02f4, 0x0300, 0x0306, 0x0306, 0x0306, 0x030f, 0x0317, - 0x031d, 0x0324, 0x0324, 0x032e, 0x0336, 0x0342, 0x0342, 0x0347, - 0x0368, 0x036d, 0x0372, 0x037a, 0x037f, 0x037f, 0x0386, 0x038d, - 0x0392, 0x0398, 0x03a2, 0x03aa, 0x03b2, 0x03b8, 0x03c9, 0x03d3, - // Entry 80 - BF - 0x03de, 0x03e5, 0x03f2, 0x03fc, 0x0402, 0x0407, 0x0413, 0x041e, - 0x0428, 0x0431, 0x0437, 0x0440, 0x044a, 0x0451, 0x0455, 0x045a, - 0x0462, 0x046a, 0x046a, 0x046a, 0x0475, 0x0483, 0x048d, 0x0492, - 0x049a, 0x04a3, 0x04a3, 0x04b8, 0x04c0, 0x04c8, 0x04d1, 0x04d6, - 0x04dc, 0x04e4, 0x04eb, 0x04f1, 0x04f8, 0x0501, 0x0508, 0x0517, - 0x051d, 0x052b, 0x0534, 0x053f, 0x054a, 0x0551, 0x0557, 0x055d, - 0x0562, 0x0570, 0x0575, 0x057c, 0x0580, 0x0591, 0x05a3, 0x05ab, - 0x05b4, 0x05ba, 0x05ce, 0x05d5, 0x05e0, 0x05fd, 0x0606, 0x060c, - // Entry C0 - FF - 0x0616, 0x061c, 0x061c, 0x0624, 0x062b, 0x062b, 0x0631, 0x063a, - 0x0647, 0x0655, 0x065b, 0x0661, 0x0667, 0x0671, 0x067b, 0x0683, - 0x0683, 0x068b, 0x0696, 0x069f, 0x06a7, 0x06ae, 0x06b6, 0x06b6, - 0x06cb, 0x06d6, 0x06d6, 0x06db, 0x06e7, 0x06e7, 0x06fd, 0x0701, - 0x0701, 0x0706, 0x070f, 0x071a, 0x0722, 0x0733, 0x0740, 0x0747, - 0x074e, 0x0754, 0x0767, 0x076e, 0x0775, 0x077d, 0x0784, 0x078d, - 0x078d, 0x07a5, 0x07ae, 0x07b9, 0x07c7, 0x07dd, 0x07e8, 0x07fd, - 0x0810, 0x0819, 0x0823, 0x0831, 0x0838, 0x0838, 0x083d, 0x0843, - // Entry 100 - 13F - 0x0852, 0x0858, 0x0862, + 0x0236, 0x023c, 0x023c, 0x023c, 0x0243, 0x0248, 0x0257, 0x0262, + 0x0262, 0x0269, 0x026e, 0x0281, 0x0288, 0x028f, 0x029d, 0x029d, + 0x02a2, 0x02ac, 0x02b7, 0x02bd, 0x02c1, 0x02ca, 0x02de, 0x02e4, + 0x02e4, 0x02ef, 0x02f4, 0x0300, 0x0306, 0x0306, 0x0306, 0x030f, + 0x0317, 0x031d, 0x0324, 0x0324, 0x032e, 0x0336, 0x0342, 0x0342, + 0x0347, 0x0368, 0x036d, 0x0372, 0x037a, 0x037f, 0x037f, 0x0386, + 0x038d, 0x0392, 0x0398, 0x03a2, 0x03aa, 0x03b2, 0x03b8, 0x03c9, + // Entry 80 - BF + 0x03d3, 0x03de, 0x03e5, 0x03f2, 0x03fc, 0x0402, 0x0407, 0x0413, + 0x041e, 0x0428, 0x0431, 0x0437, 0x0440, 0x044a, 0x0451, 0x0455, + 0x045a, 0x0462, 0x046a, 0x046a, 0x046a, 0x0475, 0x0483, 0x048d, + 0x0492, 0x049a, 0x04a3, 0x04a3, 0x04b8, 0x04c0, 0x04c8, 0x04d1, + 0x04d6, 0x04dc, 0x04e4, 0x04eb, 0x04f1, 0x04f8, 0x0501, 0x0508, + 0x0517, 0x051d, 0x052b, 0x0534, 0x053f, 0x054a, 0x0551, 0x0557, + 0x055d, 0x0562, 0x0570, 0x0575, 0x057c, 0x0580, 0x0591, 0x05a3, + 0x05ab, 0x05b4, 0x05ba, 0x05ce, 0x05d5, 0x05e0, 0x05fd, 0x0606, + // Entry C0 - FF + 0x060c, 0x0616, 0x061c, 0x061c, 0x0624, 0x062b, 0x062b, 0x0631, + 0x063a, 0x0647, 0x0655, 0x065b, 0x0661, 0x0667, 0x0671, 0x067b, + 0x0683, 0x0683, 0x068b, 0x0696, 0x069f, 0x06a7, 0x06ae, 0x06b6, + 0x06b6, 0x06cb, 0x06d6, 0x06d6, 0x06db, 0x06e7, 0x06e7, 0x06fd, + 0x0701, 0x0701, 0x0706, 0x070f, 0x071a, 0x0722, 0x0733, 0x0740, + 0x0747, 0x074e, 0x0754, 0x0767, 0x076e, 0x0775, 0x077d, 0x0784, + 0x078d, 0x078d, 0x078d, 0x07a5, 0x07ae, 0x07b9, 0x07c7, 0x07dd, + 0x07e8, 0x07fd, 0x0810, 0x0819, 0x0823, 0x0831, 0x0838, 0x0838, + // Entry 100 - 13F + 0x083d, 0x0843, 0x0852, 0x0858, 0x0862, }, }, { // fi @@ -31290,7 +35830,7 @@ var regionHeaders = [220]header{ "urasiaÚtsynningsasiaSuðurevropaAvstralasiaMelanesiaMikronesi økiPoly" + "nesiaAsiaMiðasiaVesturasiaEvropaEysturevropaNorðurevropaVesturevropa" + "Latínamerika", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x0024, 0x002e, 0x003f, 0x0047, 0x004e, 0x0055, 0x005b, 0x0064, 0x006d, 0x007e, 0x0089, 0x0092, 0x0097, @@ -31302,43 +35842,63 @@ var regionHeaders = [220]header{ 0x0227, 0x022e, 0x0234, 0x023d, 0x0249, 0x0250, 0x0257, 0x025f, // Entry 40 - 7F 0x0273, 0x027a, 0x028a, 0x0291, 0x0298, 0x02a2, 0x02ae, 0x02b5, - 0x02bb, 0x02c2, 0x02d2, 0x02da, 0x02de, 0x02ee, 0x0302, 0x030a, - 0x0312, 0x0317, 0x0325, 0x032c, 0x0333, 0x0341, 0x0349, 0x034d, - 0x0356, 0x035f, 0x0365, 0x036b, 0x0375, 0x0382, 0x038c, 0x03b2, - 0x03bb, 0x03bf, 0x03cc, 0x03d2, 0x03e4, 0x03fc, 0x0404, 0x040b, - 0x0410, 0x0416, 0x0424, 0x042d, 0x0434, 0x043b, 0x0446, 0x044b, - 0x046b, 0x046f, 0x0473, 0x047a, 0x0480, 0x0486, 0x048d, 0x0493, - 0x0498, 0x049d, 0x04a5, 0x04ad, 0x04b5, 0x04c1, 0x04d2, 0x04de, - // Entry 80 - BF - 0x04e9, 0x04ef, 0x04fc, 0x0505, 0x0509, 0x0510, 0x0519, 0x0524, - 0x052d, 0x0534, 0x053a, 0x0540, 0x054a, 0x0552, 0x0557, 0x055e, - 0x0564, 0x056b, 0x0575, 0x057e, 0x0588, 0x0597, 0x05a1, 0x05a5, - 0x05b4, 0x05bc, 0x05ca, 0x05df, 0x05e9, 0x05f3, 0x05fd, 0x0602, - 0x060b, 0x0618, 0x061e, 0x0625, 0x062d, 0x0635, 0x063c, 0x0649, - 0x064e, 0x065b, 0x0662, 0x066b, 0x0675, 0x067a, 0x067f, 0x0684, - 0x0688, 0x0692, 0x0696, 0x069c, 0x06a0, 0x06b1, 0x06c0, 0x06cd, - 0x06d5, 0x06dd, 0x06f5, 0x0704, 0x070f, 0x0723, 0x072b, 0x0730, - // Entry C0 - FF - 0x0738, 0x073d, 0x074e, 0x0756, 0x075d, 0x0763, 0x076b, 0x0771, - 0x077c, 0x078a, 0x0799, 0x079e, 0x07a7, 0x07af, 0x07b9, 0x07c1, - 0x07d5, 0x07dd, 0x07e9, 0x07f3, 0x07fa, 0x0801, 0x0808, 0x0813, - 0x0826, 0x0831, 0x083d, 0x0843, 0x084c, 0x085c, 0x0873, 0x0877, - 0x0890, 0x0894, 0x089b, 0x08a7, 0x08ae, 0x08b9, 0x08c5, 0x08cc, - 0x08d1, 0x08da, 0x08eb, 0x08f1, 0x08f7, 0x08ff, 0x0906, 0x090c, - 0x0935, 0x094a, 0x0951, 0x095b, 0x0967, 0x0984, 0x098d, 0x09ac, - 0x09d1, 0x09d8, 0x09df, 0x09f7, 0x09fc, 0x0a02, 0x0a07, 0x0a0e, - // Entry 100 - 13F - 0x0a1a, 0x0a20, 0x0a28, 0x0a33, 0x0a39, 0x0a3f, 0x0a4d, 0x0a5a, - 0x0a61, 0x0a6d, 0x0a78, 0x0a84, 0x0a91, 0x0a9b, 0x0ab3, 0x0aba, - 0x0ad5, 0x0adc, 0x0ae6, 0x0af0, 0x0aff, 0x0b0b, 0x0b16, 0x0b1f, - 0x0b2d, 0x0b36, 0x0b3a, 0x0b42, 0x0b4c, 0x0b52, 0x0b5e, 0x0b6b, - 0x0b77, 0x0b84, + 0x02bb, 0x02c2, 0x02d2, 0x02d2, 0x02da, 0x02de, 0x02ee, 0x0302, + 0x030a, 0x0312, 0x0317, 0x0325, 0x032c, 0x0333, 0x0341, 0x0349, + 0x034d, 0x0356, 0x035f, 0x0365, 0x036b, 0x0375, 0x0382, 0x038c, + 0x03b2, 0x03bb, 0x03bf, 0x03cc, 0x03d2, 0x03e4, 0x03fc, 0x0404, + 0x040b, 0x0410, 0x0416, 0x0424, 0x042d, 0x0434, 0x043b, 0x0446, + 0x044b, 0x046b, 0x046f, 0x0473, 0x047a, 0x0480, 0x0486, 0x048d, + 0x0493, 0x0498, 0x049d, 0x04a5, 0x04ad, 0x04b5, 0x04c1, 0x04d2, + // Entry 80 - BF + 0x04de, 0x04e9, 0x04ef, 0x04fc, 0x0505, 0x0509, 0x0510, 0x0519, + 0x0524, 0x052d, 0x0534, 0x053a, 0x0540, 0x054a, 0x0552, 0x0557, + 0x055e, 0x0564, 0x056b, 0x0575, 0x057e, 0x0588, 0x0597, 0x05a1, + 0x05a5, 0x05b4, 0x05bc, 0x05ca, 0x05df, 0x05e9, 0x05f3, 0x05fd, + 0x0602, 0x060b, 0x0618, 0x061e, 0x0625, 0x062d, 0x0635, 0x063c, + 0x0649, 0x064e, 0x065b, 0x0662, 0x066b, 0x0675, 0x067a, 0x067f, + 0x0684, 0x0688, 0x0692, 0x0696, 0x069c, 0x06a0, 0x06b1, 0x06c0, + 0x06cd, 0x06d5, 0x06dd, 0x06f5, 0x0704, 0x070f, 0x0723, 0x072b, + // Entry C0 - FF + 0x0730, 0x0738, 0x073d, 0x074e, 0x0756, 0x075d, 0x0763, 0x076b, + 0x0771, 0x077c, 0x078a, 0x0799, 0x079e, 0x07a7, 0x07af, 0x07b9, + 0x07c1, 0x07d5, 0x07dd, 0x07e9, 0x07f3, 0x07fa, 0x0801, 0x0808, + 0x0813, 0x0826, 0x0831, 0x083d, 0x0843, 0x084c, 0x085c, 0x0873, + 0x0877, 0x0890, 0x0894, 0x089b, 0x08a7, 0x08ae, 0x08b9, 0x08c5, + 0x08cc, 0x08d1, 0x08da, 0x08eb, 0x08f1, 0x08f7, 0x08ff, 0x0906, + 0x090c, 0x0935, 0x0935, 0x094a, 0x0951, 0x095b, 0x0967, 0x0984, + 0x098d, 0x09ac, 0x09d1, 0x09d8, 0x09df, 0x09f7, 0x09fc, 0x0a02, + // Entry 100 - 13F + 0x0a07, 0x0a0e, 0x0a1a, 0x0a20, 0x0a28, 0x0a33, 0x0a39, 0x0a3f, + 0x0a4d, 0x0a5a, 0x0a61, 0x0a6d, 0x0a78, 0x0a84, 0x0a91, 0x0a9b, + 0x0ab3, 0x0aba, 0x0ad5, 0x0adc, 0x0ae6, 0x0af0, 0x0aff, 0x0b0b, + 0x0b16, 0x0b1f, 0x0b2d, 0x0b36, 0x0b3a, 0x0b42, 0x0b4c, 0x0b52, + 0x0b5e, 0x0b6b, 0x0b77, 0x0b84, }, }, { // fr frRegionStr, frRegionIdx, }, + { // fr-BE + "BruneiÎles Géorgie du Sud et Sandwich du Sud", + []uint16{ // 97 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + // Entry 40 - 7F + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, + 0x002e, + }, + }, { // fr-CA frCARegionStr, frCARegionIdx, @@ -31390,7 +35950,7 @@ var regionHeaders = [220]header{ "ntâlEurope meridionâlAustralie e Gnove ZelandeMelanesieRegjon de Mic" + "ronesiePolinesieAsieAsie centrâlAsie ocidentâlEuropeEurope orientâlE" + "urope setentrionâlEurope ocidentâlAmeriche latine", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001c, 0x0027, 0x0038, 0x0040, 0x0047, 0x004e, 0x0054, 0x005c, 0x0066, 0x0075, 0x007c, 0x0085, 0x008a, @@ -31402,37 +35962,37 @@ var regionHeaders = [220]header{ 0x0223, 0x0228, 0x0238, 0x0241, 0x024d, 0x0253, 0x025d, 0x0266, // Entry 40 - 7F 0x027b, 0x0282, 0x0291, 0x0298, 0x029f, 0x02a4, 0x02b5, 0x02bc, - 0x02c2, 0x02c9, 0x02d8, 0x02e1, 0x02e5, 0x02f4, 0x02fe, 0x030a, - 0x0310, 0x0315, 0x031f, 0x0326, 0x032f, 0x033e, 0x0346, 0x034b, - 0x0355, 0x035f, 0x0365, 0x036b, 0x0374, 0x0386, 0x038c, 0x03b5, - 0x03be, 0x03c2, 0x03cf, 0x03d5, 0x0407, 0x0424, 0x042c, 0x0435, - 0x043a, 0x0442, 0x0451, 0x045a, 0x0461, 0x0468, 0x0474, 0x0479, - 0x049b, 0x049f, 0x04a3, 0x04aa, 0x04b0, 0x04b6, 0x04bf, 0x04c7, - 0x04cd, 0x04d2, 0x04dd, 0x04e4, 0x04ec, 0x04f3, 0x0504, 0x0512, - // Entry 80 - BF - 0x051f, 0x0525, 0x0532, 0x053d, 0x0541, 0x0546, 0x0551, 0x055e, - 0x0567, 0x056e, 0x0575, 0x057d, 0x0587, 0x058e, 0x0593, 0x0598, - 0x059e, 0x05a6, 0x05b0, 0x05bb, 0x05c5, 0x05d4, 0x05dd, 0x05e1, - 0x05e9, 0x05f1, 0x061f, 0x0636, 0x0640, 0x064a, 0x0654, 0x0659, - 0x0660, 0x0668, 0x066e, 0x0674, 0x067c, 0x0684, 0x068b, 0x069a, - 0x069f, 0x06ac, 0x06b3, 0x06bc, 0x06c5, 0x06cd, 0x06d2, 0x06d7, - 0x06db, 0x06e8, 0x06ec, 0x06f3, 0x06f8, 0x070a, 0x071c, 0x0725, - 0x072d, 0x0734, 0x0749, 0x0751, 0x075b, 0x0770, 0x0778, 0x077d, - // Entry C0 - FF - 0x0785, 0x078a, 0x079d, 0x07a4, 0x07ab, 0x07b1, 0x07b7, 0x07bd, - 0x07cb, 0x07d9, 0x07e3, 0x07e8, 0x07ee, 0x07f7, 0x0802, 0x080a, - 0x081e, 0x0827, 0x0833, 0x083c, 0x0843, 0x084a, 0x0852, 0x0852, - 0x0866, 0x0871, 0x0871, 0x0876, 0x087f, 0x088f, 0x08a4, 0x08a8, - 0x08c6, 0x08ca, 0x08d3, 0x08dd, 0x08e4, 0x08f3, 0x08ff, 0x0906, - 0x090b, 0x0912, 0x0923, 0x0929, 0x092f, 0x0937, 0x093e, 0x0944, - 0x0971, 0x097e, 0x0985, 0x0990, 0x0997, 0x09b3, 0x09bc, 0x09d8, - 0x09f3, 0x09fa, 0x0a01, 0x0a10, 0x0a15, 0x0a15, 0x0a1a, 0x0a21, - // Entry 100 - 13F - 0x0a2c, 0x0a32, 0x0a3a, 0x0a5a, 0x0a5e, 0x0a65, 0x0a76, 0x0a8a, - 0x0a91, 0x0aa3, 0x0ab4, 0x0ac5, 0x0ada, 0x0aea, 0x0afd, 0x0b06, - 0x0b1c, 0x0b24, 0x0b32, 0x0b42, 0x0b54, 0x0b66, 0x0b7f, 0x0b88, - 0x0b9c, 0x0ba5, 0x0ba9, 0x0bb6, 0x0bc5, 0x0bcb, 0x0bdb, 0x0bef, - 0x0c00, 0x0c0f, + 0x02c2, 0x02c9, 0x02d8, 0x02d8, 0x02e1, 0x02e5, 0x02f4, 0x02fe, + 0x030a, 0x0310, 0x0315, 0x031f, 0x0326, 0x032f, 0x033e, 0x0346, + 0x034b, 0x0355, 0x035f, 0x0365, 0x036b, 0x0374, 0x0386, 0x038c, + 0x03b5, 0x03be, 0x03c2, 0x03cf, 0x03d5, 0x0407, 0x0424, 0x042c, + 0x0435, 0x043a, 0x0442, 0x0451, 0x045a, 0x0461, 0x0468, 0x0474, + 0x0479, 0x049b, 0x049f, 0x04a3, 0x04aa, 0x04b0, 0x04b6, 0x04bf, + 0x04c7, 0x04cd, 0x04d2, 0x04dd, 0x04e4, 0x04ec, 0x04f3, 0x0504, + // Entry 80 - BF + 0x0512, 0x051f, 0x0525, 0x0532, 0x053d, 0x0541, 0x0546, 0x0551, + 0x055e, 0x0567, 0x056e, 0x0575, 0x057d, 0x0587, 0x058e, 0x0593, + 0x0598, 0x059e, 0x05a6, 0x05b0, 0x05bb, 0x05c5, 0x05d4, 0x05dd, + 0x05e1, 0x05e9, 0x05f1, 0x061f, 0x0636, 0x0640, 0x064a, 0x0654, + 0x0659, 0x0660, 0x0668, 0x066e, 0x0674, 0x067c, 0x0684, 0x068b, + 0x069a, 0x069f, 0x06ac, 0x06b3, 0x06bc, 0x06c5, 0x06cd, 0x06d2, + 0x06d7, 0x06db, 0x06e8, 0x06ec, 0x06f3, 0x06f8, 0x070a, 0x071c, + 0x0725, 0x072d, 0x0734, 0x0749, 0x0751, 0x075b, 0x0770, 0x0778, + // Entry C0 - FF + 0x077d, 0x0785, 0x078a, 0x079d, 0x07a4, 0x07ab, 0x07b1, 0x07b7, + 0x07bd, 0x07cb, 0x07d9, 0x07e3, 0x07e8, 0x07ee, 0x07f7, 0x0802, + 0x080a, 0x081e, 0x0827, 0x0833, 0x083c, 0x0843, 0x084a, 0x0852, + 0x0852, 0x0866, 0x0871, 0x0871, 0x0876, 0x087f, 0x088f, 0x08a4, + 0x08a8, 0x08c6, 0x08ca, 0x08d3, 0x08dd, 0x08e4, 0x08f3, 0x08ff, + 0x0906, 0x090b, 0x0912, 0x0923, 0x0929, 0x092f, 0x0937, 0x093e, + 0x0944, 0x0971, 0x0971, 0x097e, 0x0985, 0x0990, 0x0997, 0x09b3, + 0x09bc, 0x09d8, 0x09f3, 0x09fa, 0x0a01, 0x0a10, 0x0a15, 0x0a15, + // Entry 100 - 13F + 0x0a1a, 0x0a21, 0x0a2c, 0x0a32, 0x0a3a, 0x0a5a, 0x0a5e, 0x0a65, + 0x0a76, 0x0a8a, 0x0a91, 0x0aa3, 0x0ab4, 0x0ac5, 0x0ada, 0x0aea, + 0x0afd, 0x0b06, 0x0b1c, 0x0b24, 0x0b32, 0x0b42, 0x0b54, 0x0b66, + 0x0b7f, 0x0b88, 0x0b9c, 0x0ba5, 0x0ba9, 0x0bb6, 0x0bc5, 0x0bcb, + 0x0bdb, 0x0bef, 0x0c00, 0x0c0f, }, }, { // fy @@ -31480,7 +36040,7 @@ var regionHeaders = [220]header{ "ebietEast-AziëSûd-AziëSûdoost-AziëSûd-EuropaAustralaziëMelanesiëMicr" + "onesyske regioPolynesiëAziëSintraal-AziëWest-AziëEuropaEast-EuropaNo" + "ard-EuropaWest-EuropaLatynsk-Amearika", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0048, 0x0050, 0x0058, 0x0060, 0x0066, 0x0070, 0x007b, 0x008c, 0x0095, 0x009f, 0x00a4, @@ -31492,37 +36052,37 @@ var regionHeaders = [220]header{ 0x023d, 0x0243, 0x024b, 0x0254, 0x0260, 0x0268, 0x0272, 0x027a, // Entry 40 - 7F 0x0290, 0x0298, 0x02a8, 0x02af, 0x02b6, 0x02bc, 0x02cd, 0x02d4, - 0x02da, 0x02e3, 0x02f2, 0x02f9, 0x02fd, 0x030d, 0x0318, 0x0320, - 0x0329, 0x032e, 0x0341, 0x0348, 0x0350, 0x035c, 0x0364, 0x0369, - 0x0372, 0x037b, 0x0381, 0x0387, 0x0391, 0x03a3, 0x03ac, 0x03d5, - 0x03de, 0x03e2, 0x03ef, 0x03f5, 0x040a, 0x0424, 0x042c, 0x0434, - 0x043a, 0x0443, 0x0456, 0x0460, 0x0467, 0x046e, 0x0479, 0x047e, - 0x04a2, 0x04a6, 0x04aa, 0x04b0, 0x04b7, 0x04bd, 0x04c4, 0x04cd, - 0x04d2, 0x04d7, 0x04e0, 0x04e8, 0x04f0, 0x04f7, 0x050b, 0x0516, - // Entry 80 - BF - 0x0520, 0x0527, 0x0535, 0x053f, 0x0543, 0x054a, 0x0555, 0x0562, - 0x056b, 0x0572, 0x0579, 0x0581, 0x058a, 0x0591, 0x0597, 0x059e, - 0x05a4, 0x05ad, 0x05b7, 0x05c3, 0x05cd, 0x05dd, 0x05e7, 0x05eb, - 0x05fa, 0x0603, 0x0615, 0x062f, 0x0639, 0x0644, 0x064e, 0x0653, - 0x065c, 0x0664, 0x066a, 0x0670, 0x0679, 0x0683, 0x068b, 0x0699, - 0x069e, 0x06ab, 0x06b2, 0x06bb, 0x06c4, 0x06cd, 0x06d2, 0x06d7, - 0x06db, 0x06e6, 0x06ea, 0x06f0, 0x06f4, 0x0704, 0x0715, 0x071f, - 0x0727, 0x072c, 0x0744, 0x0754, 0x075f, 0x0773, 0x077b, 0x0780, - // Entry C0 - FF - 0x0788, 0x078d, 0x079b, 0x07a3, 0x07ac, 0x07b3, 0x07ba, 0x07c0, - 0x07ce, 0x07de, 0x07e8, 0x07ee, 0x07f4, 0x07fd, 0x0808, 0x0811, - 0x0829, 0x0832, 0x083e, 0x0848, 0x084f, 0x0857, 0x085f, 0x086a, - 0x087f, 0x088a, 0x0896, 0x089c, 0x08a5, 0x08b5, 0x08cd, 0x08d3, - 0x0902, 0x0906, 0x090e, 0x091a, 0x0921, 0x092b, 0x0937, 0x093f, - 0x0944, 0x094b, 0x095d, 0x0963, 0x0969, 0x0971, 0x097a, 0x0981, - 0x09b1, 0x09c2, 0x09c9, 0x09d4, 0x09e1, 0x09ff, 0x0a08, 0x0a1e, - 0x0a3a, 0x0a41, 0x0a48, 0x0a58, 0x0a5d, 0x0a63, 0x0a68, 0x0a6f, - // Entry 100 - 13F - 0x0a7a, 0x0a80, 0x0a88, 0x0a97, 0x0a9d, 0x0aa3, 0x0ab0, 0x0abc, - 0x0ac4, 0x0acf, 0x0add, 0x0ae8, 0x0af4, 0x0b03, 0x0b13, 0x0b1a, - 0x0b2a, 0x0b39, 0x0b43, 0x0b4d, 0x0b5b, 0x0b66, 0x0b72, 0x0b7c, - 0x0b8e, 0x0b98, 0x0b9d, 0x0bab, 0x0bb5, 0x0bbb, 0x0bc6, 0x0bd2, - 0x0bdd, 0x0bed, + 0x02da, 0x02e3, 0x02f2, 0x02f2, 0x02f9, 0x02fd, 0x030d, 0x0318, + 0x0320, 0x0329, 0x032e, 0x0341, 0x0348, 0x0350, 0x035c, 0x0364, + 0x0369, 0x0372, 0x037b, 0x0381, 0x0387, 0x0391, 0x03a3, 0x03ac, + 0x03d5, 0x03de, 0x03e2, 0x03ef, 0x03f5, 0x040a, 0x0424, 0x042c, + 0x0434, 0x043a, 0x0443, 0x0456, 0x0460, 0x0467, 0x046e, 0x0479, + 0x047e, 0x04a2, 0x04a6, 0x04aa, 0x04b0, 0x04b7, 0x04bd, 0x04c4, + 0x04cd, 0x04d2, 0x04d7, 0x04e0, 0x04e8, 0x04f0, 0x04f7, 0x050b, + // Entry 80 - BF + 0x0516, 0x0520, 0x0527, 0x0535, 0x053f, 0x0543, 0x054a, 0x0555, + 0x0562, 0x056b, 0x0572, 0x0579, 0x0581, 0x058a, 0x0591, 0x0597, + 0x059e, 0x05a4, 0x05ad, 0x05b7, 0x05c3, 0x05cd, 0x05dd, 0x05e7, + 0x05eb, 0x05fa, 0x0603, 0x0615, 0x062f, 0x0639, 0x0644, 0x064e, + 0x0653, 0x065c, 0x0664, 0x066a, 0x0670, 0x0679, 0x0683, 0x068b, + 0x0699, 0x069e, 0x06ab, 0x06b2, 0x06bb, 0x06c4, 0x06cd, 0x06d2, + 0x06d7, 0x06db, 0x06e6, 0x06ea, 0x06f0, 0x06f4, 0x0704, 0x0715, + 0x071f, 0x0727, 0x072c, 0x0744, 0x0754, 0x075f, 0x0773, 0x077b, + // Entry C0 - FF + 0x0780, 0x0788, 0x078d, 0x079b, 0x07a3, 0x07ac, 0x07b3, 0x07ba, + 0x07c0, 0x07ce, 0x07de, 0x07e8, 0x07ee, 0x07f4, 0x07fd, 0x0808, + 0x0811, 0x0829, 0x0832, 0x083e, 0x0848, 0x084f, 0x0857, 0x085f, + 0x086a, 0x087f, 0x088a, 0x0896, 0x089c, 0x08a5, 0x08b5, 0x08cd, + 0x08d3, 0x0902, 0x0906, 0x090e, 0x091a, 0x0921, 0x092b, 0x0937, + 0x093f, 0x0944, 0x094b, 0x095d, 0x0963, 0x0969, 0x0971, 0x097a, + 0x0981, 0x09b1, 0x09b1, 0x09c2, 0x09c9, 0x09d4, 0x09e1, 0x09ff, + 0x0a08, 0x0a1e, 0x0a3a, 0x0a41, 0x0a48, 0x0a58, 0x0a5d, 0x0a63, + // Entry 100 - 13F + 0x0a68, 0x0a6f, 0x0a7a, 0x0a80, 0x0a88, 0x0a97, 0x0a9d, 0x0aa3, + 0x0ab0, 0x0abc, 0x0ac4, 0x0acf, 0x0add, 0x0ae8, 0x0af4, 0x0b03, + 0x0b13, 0x0b1a, 0x0b2a, 0x0b39, 0x0b43, 0x0b4d, 0x0b5b, 0x0b66, + 0x0b72, 0x0b7c, 0x0b8e, 0x0b98, 0x0b9d, 0x0bab, 0x0bb5, 0x0bbb, + 0x0bc6, 0x0bd2, 0x0bdd, 0x0bed, }, }, { // ga @@ -31569,19 +36129,19 @@ var regionHeaders = [220]header{ "sSeadCríocha Francacha Dheisceart an DomhainTógaAn TéalainnAn Táidsí" + "ceastáinTócaláTíomór ThoirAn TuircméanastáinAn TúinéisTongaAn TuircO" + "ileán na Tríonóide agus TobágaTuvaluAn TéaváinAn TansáinAn ÚcráinUga" + - "ndaOileáin Imeallacha S.A.M.Stáit Aontaithe MheiriceáUruguaAn Úisbéi" + - "ceastáinAn VatacáinSan Uinseann agus na GreanáidíníVeiniséalaOileáin" + - " Bhriotanacha na MaighdeanOileáin Mheiriceánacha na MaighdeanVítneam" + - "VanuatúVailís agus FutúnaSamóAn ChosaivÉiminMayotteAn Afraic TheasAn" + - " tSaimbiaAn tSiombáibRéigiún AnaithnidAn DomhanAn AfraicMeiriceá Thu" + - "aidhMeiriceá TheasAn AigéineIarthar na hAfraiceMeiriceá LáirOirthear" + - " na hAfraiceTuaisceart na hAfraiceAn Afraic LáirDeisceart na hAfraic" + - "eCríocha MheiriceáTuaisceart MheiriceáAn Mhuir ChairibOirthear na hÁ" + - "iseDeisceart na hÁiseOirdheisceart na hÁiseDeisceart na hEorpaAn Ast" + - "raláiseAn MheilinéisAn Réigiún MicrinéiseachAn PholainéisAn ÁiseAn Á" + - "ise LáirIarthar na hÁiseAn EoraipOirthear na hEorpaTuaisceart na hEo" + - "rpaIarthar na hEorpaMeiriceá Laidineach", - []uint16{ // 290 elements + "ndaOileáin Imeallacha S.A.M.Náisiúin AontaitheStáit Aontaithe Mheiri" + + "ceáUruguaAn ÚisbéiceastáinAn VatacáinSan Uinseann agus na Greanáidín" + + "íVeiniséalaOileáin Bhriotanacha na MaighdeanOileáin Mheiriceánacha " + + "na MaighdeanVítneamVanuatúVailís agus FutúnaSamóAn ChosaivÉiminMayot" + + "teAn Afraic TheasAn tSaimbiaAn tSiombáibRéigiún AnaithnidAn DomhanAn" + + " AfraicMeiriceá ThuaidhMeiriceá TheasAn AigéineIarthar na hAfraiceMe" + + "iriceá LáirOirthear na hAfraiceTuaisceart na hAfraiceAn Afraic LáirD" + + "eisceart na hAfraiceCríocha MheiriceáTuaisceart MheiriceáAn Mhuir Ch" + + "airibOirthear na hÁiseDeisceart na hÁiseOirdheisceart na hÁiseDeisce" + + "art na hEorpaAn AstraláiseAn MheilinéisAn Réigiún MicrinéiseachAn Ph" + + "olainéisAn ÁiseAn Áise LáirIarthar na hÁiseAn EoraipOirthear na hEor" + + "paTuaisceart na hEorpaIarthar na hEorpaMeiriceá Laidineach", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0017, 0x001e, 0x0042, 0x0051, 0x0066, 0x006e, 0x0078, 0x0083, 0x008a, 0x0097, 0x00a4, 0x00b7, 0x00c0, 0x00cb, 0x00d1, @@ -31593,229 +36153,230 @@ var regionHeaders = [220]header{ 0x02fa, 0x0303, 0x0314, 0x0321, 0x032d, 0x0335, 0x0341, 0x034a, // Entry 40 - 7F 0x0364, 0x036f, 0x0381, 0x038a, 0x0395, 0x039f, 0x03af, 0x03ba, - 0x03c4, 0x03ce, 0x03e0, 0x03ed, 0x03f3, 0x0407, 0x0415, 0x0424, - 0x042e, 0x0439, 0x044d, 0x0456, 0x0462, 0x0473, 0x047b, 0x0480, - 0x048b, 0x0499, 0x04a4, 0x04ad, 0x04b7, 0x04d0, 0x04da, 0x0509, - 0x0512, 0x0516, 0x0522, 0x052c, 0x0545, 0x0569, 0x0572, 0x057c, - 0x0584, 0x058e, 0x05a6, 0x05b2, 0x05b7, 0x05be, 0x05cd, 0x05d5, - 0x05f9, 0x0603, 0x060d, 0x0619, 0x0623, 0x062a, 0x0632, 0x063d, - 0x0649, 0x0654, 0x0664, 0x0670, 0x067b, 0x068c, 0x06a3, 0x06b6, - // Entry 80 - BF - 0x06c7, 0x06cd, 0x06dc, 0x06eb, 0x06ef, 0x06fa, 0x0705, 0x0712, - 0x071c, 0x0726, 0x072e, 0x073a, 0x0744, 0x074e, 0x0756, 0x075d, - 0x0764, 0x0770, 0x077e, 0x078a, 0x0794, 0x07a5, 0x07b2, 0x07b8, - 0x07c7, 0x07d3, 0x07e8, 0x080a, 0x0814, 0x0822, 0x082b, 0x0831, - 0x0841, 0x0854, 0x085f, 0x0868, 0x0875, 0x0880, 0x0889, 0x089a, - 0x08a3, 0x08b2, 0x08bc, 0x08c6, 0x08d2, 0x08da, 0x08e1, 0x08e7, - 0x08eb, 0x08fc, 0x0901, 0x0907, 0x090e, 0x0923, 0x0934, 0x094f, - 0x095d, 0x0968, 0x0980, 0x0991, 0x099d, 0x09b8, 0x09c8, 0x09cd, - // Entry C0 - FF - 0x09d4, 0x09d9, 0x09ee, 0x09f6, 0x0a01, 0x0a0c, 0x0a14, 0x0a1a, - 0x0a2b, 0x0a3d, 0x0a49, 0x0a55, 0x0a61, 0x0a6b, 0x0a76, 0x0a84, - 0x0a9b, 0x0aa7, 0x0ab2, 0x0abe, 0x0acd, 0x0ad8, 0x0adf, 0x0af1, - 0x0b0a, 0x0b18, 0x0b24, 0x0b2d, 0x0b3b, 0x0b4b, 0x0b6b, 0x0b6f, - 0x0b97, 0x0b9c, 0x0ba8, 0x0bbc, 0x0bc4, 0x0bd2, 0x0be6, 0x0bf2, - 0x0bf7, 0x0bff, 0x0c22, 0x0c28, 0x0c34, 0x0c3f, 0x0c4a, 0x0c50, - 0x0c6a, 0x0c85, 0x0c8b, 0x0c9f, 0x0cab, 0x0cce, 0x0cd9, 0x0cfb, - 0x0d20, 0x0d28, 0x0d30, 0x0d44, 0x0d49, 0x0d53, 0x0d59, 0x0d60, - // Entry 100 - 13F - 0x0d6f, 0x0d7a, 0x0d87, 0x0d9a, 0x0da3, 0x0dac, 0x0dbd, 0x0dcc, - 0x0dd7, 0x0dea, 0x0df9, 0x0e0d, 0x0e23, 0x0e32, 0x0e47, 0x0e5a, - 0x0e6f, 0x0e7f, 0x0e91, 0x0ea4, 0x0ebb, 0x0ece, 0x0edc, 0x0eea, - 0x0f05, 0x0f13, 0x0f1b, 0x0f29, 0x0f3a, 0x0f43, 0x0f55, 0x0f69, - 0x0f7a, 0x0f8e, + 0x03c4, 0x03ce, 0x03e0, 0x03e0, 0x03ed, 0x03f3, 0x0407, 0x0415, + 0x0424, 0x042e, 0x0439, 0x044d, 0x0456, 0x0462, 0x0473, 0x047b, + 0x0480, 0x048b, 0x0499, 0x04a4, 0x04ad, 0x04b7, 0x04d0, 0x04da, + 0x0509, 0x0512, 0x0516, 0x0522, 0x052c, 0x0545, 0x0569, 0x0572, + 0x057c, 0x0584, 0x058e, 0x05a6, 0x05b2, 0x05b7, 0x05be, 0x05cd, + 0x05d5, 0x05f9, 0x0603, 0x060d, 0x0619, 0x0623, 0x062a, 0x0632, + 0x063d, 0x0649, 0x0654, 0x0664, 0x0670, 0x067b, 0x068c, 0x06a3, + // Entry 80 - BF + 0x06b6, 0x06c7, 0x06cd, 0x06dc, 0x06eb, 0x06ef, 0x06fa, 0x0705, + 0x0712, 0x071c, 0x0726, 0x072e, 0x073a, 0x0744, 0x074e, 0x0756, + 0x075d, 0x0764, 0x0770, 0x077e, 0x078a, 0x0794, 0x07a5, 0x07b2, + 0x07b8, 0x07c7, 0x07d3, 0x07e8, 0x080a, 0x0814, 0x0822, 0x082b, + 0x0831, 0x0841, 0x0854, 0x085f, 0x0868, 0x0875, 0x0880, 0x0889, + 0x089a, 0x08a3, 0x08b2, 0x08bc, 0x08c6, 0x08d2, 0x08da, 0x08e1, + 0x08e7, 0x08eb, 0x08fc, 0x0901, 0x0907, 0x090e, 0x0923, 0x0934, + 0x094f, 0x095d, 0x0968, 0x0980, 0x0991, 0x099d, 0x09b8, 0x09c8, + // Entry C0 - FF + 0x09cd, 0x09d4, 0x09d9, 0x09ee, 0x09f6, 0x0a01, 0x0a0c, 0x0a14, + 0x0a1a, 0x0a2b, 0x0a3d, 0x0a49, 0x0a55, 0x0a61, 0x0a6b, 0x0a76, + 0x0a84, 0x0a9b, 0x0aa7, 0x0ab2, 0x0abe, 0x0acd, 0x0ad8, 0x0adf, + 0x0af1, 0x0b0a, 0x0b18, 0x0b24, 0x0b2d, 0x0b3b, 0x0b4b, 0x0b6b, + 0x0b6f, 0x0b97, 0x0b9c, 0x0ba8, 0x0bbc, 0x0bc4, 0x0bd2, 0x0be6, + 0x0bf2, 0x0bf7, 0x0bff, 0x0c22, 0x0c28, 0x0c34, 0x0c3f, 0x0c4a, + 0x0c50, 0x0c6a, 0x0c7e, 0x0c99, 0x0c9f, 0x0cb3, 0x0cbf, 0x0ce2, + 0x0ced, 0x0d0f, 0x0d34, 0x0d3c, 0x0d44, 0x0d58, 0x0d5d, 0x0d67, + // Entry 100 - 13F + 0x0d6d, 0x0d74, 0x0d83, 0x0d8e, 0x0d9b, 0x0dae, 0x0db7, 0x0dc0, + 0x0dd1, 0x0de0, 0x0deb, 0x0dfe, 0x0e0d, 0x0e21, 0x0e37, 0x0e46, + 0x0e5b, 0x0e6e, 0x0e83, 0x0e93, 0x0ea5, 0x0eb8, 0x0ecf, 0x0ee2, + 0x0ef0, 0x0efe, 0x0f19, 0x0f27, 0x0f2f, 0x0f3d, 0x0f4e, 0x0f57, + 0x0f69, 0x0f7d, 0x0f8e, 0x0fa2, }, }, { // gd "Eilean na DeasgabhalachAndorraNa h-Iomaratan Arabach AonaichteAfghanastà" + - "nAintìoga is BarbudaAnguillaAlbàiniaAirmeiniaAngòlaAn AntartaigAn Ar" + - "gantainSamotha na h-AimeireagaAn OstairAstràiliaArùbaNa h-Eileanan Å" + - "landAsarbaideànBosna agus HearsagobhanaBarbadosBangladaisA’ BheilgBu" + - "irciona FasoA’ BhulgairBachrainBurundaidhBeininSaint BarthélemyBearm" + - "ùdaBrùnaighBoilibhiaNa Tìrean Ìsle CaraibeachBraisilNa h-Eileanan B" + - "hathamaButànEilean BouvetBotsuanaA’ BhealaruisA’ BheilìsCanadaNa h-E" + - "ileanan Cocos (Keeling)Congo - KinshasaPoblachd Meadhan AfragaA’ Cho" + - "ngo - BrazzavilleAn EilbheisCôte d’IvoireEileanan CookAn t-SileCamar" + - "unAn t-SìnColoimbiaEilean ClippertonCosta RìceaCùbaAn Ceap UaineCura" + - "çaoEilean na NollaigCìoprasPoblachd na SeiceA’ GhearmailtDiego Garc" + - "iaDiobùtaidhAn DanmhairgDoiminiceaA’ Phoblachd DhoiminiceachAildiria" + - "Ceuta agus MelillaEacuadorAn EastoinAn ÈiphitSathara an IarEartraAn " + - "SpàinnAn ItiopAn t-Aonadh EòrpachAn FhionnlannFìdiNa h-Eileanan Fàcl" + - "annachNa Meanbh-EileananNa h-Eileanan FàroAn FhraingGabonAn Rìoghach" + - "d AonaichteGreanàdaA’ ChairtbheilGuidheàna na FraingeGeàrnsaidhGànaD" + - "iobraltarA’ GhraonlannA’ GhaimbiaGiniGuadalupGini Mheadhan-Chriosach" + - "A’ GhreugSeòrsea a Deas is na h-Eileanan Sandwich a DeasGuatamalaGua" + - "mGini-BiosoGuidheànaHong Kong SAR na SìneEilean Heard is MhicDhòmhna" + - "illHondùrasA’ ChròthaisHaidhtiAn UngairNa h-Eileanan CanàrachNa h-In" + - "nd InnseÈirinnIosraelEilean MhanainnNa h-InnseachanRanntair Breatann" + - "ach Cuan nan InnseachanIoràcIorànInnis TìleAn EadailtDeàrsaidhDiameu" + - "gaIòrdanAn t-SeapanCeiniaCìorgastanCambuideaCiribeasComorosNaomh Crì" + - "stean is NibheisCoirèa a TuathCoirèa a DeasCuibhèitNa h-Eileanan Cai" + - "meanCasachstànLàthosLeabanonNaomh LùiseaLichtensteinSri LancaLibèirL" + - "easotoAn LiotuainLugsamburgAn LaitbheLibiaMorocoMonacoA’ MholdobhaAm" + - " Monadh NeagrachNaomh MàrtainnMadagasgarEileanan MharshallA’ Mhasado" + - "nMàiliMiànmarDùthaich nam MongolMacàthu SAR na SìneNa h-Eileanan Mai" + - "rianach a TuathMairtinicMoratàineaMontsaratMaltaNa h-Eileanan Mhoiri" + - "seasNa h-Eileanan MhaladaibhMalabhaidhMeagsagoMalaidhseaMòsaimbicAn " + - "NamaibCailleann NuadhNìgeirEilean NorfolkNigèiriaNiocaraguaNa Tìrean" + - " ÌsleAn NirribhidhNeapàlNabhruNiueSealainn NuadhOmànPanamaPearùPoili" + - "nèis na FraingeGini Nuadh PhaputhachNa h-Eileanan FilipineachPagastà" + - "nA’ PhòlainnSaint Pierre agus MiquelonEilean Peit a’ ChàirnPorto Rìc" + - "eoNa Ranntairean PalastaineachA’ PhortagailPalabhParaguaidhCatarRoin" + - "n Iomallach a’ Chuain SèimhRéunionRomàiniaAn t-SèirbAn RuisRubhandaA" + - "ràibia nan SabhdEileanan SholaimhNa h-Eileanan SheiseallSudànAn t-Su" + - "ainSingeapòrEilean Naomh EilidhAn t-SlòbhainSvalbard agus Jan MayenA" + - "n t-SlòbhacSiarra LeòmhannSan MarinoSeanagalSomàiliaSuranamSudàn a D" + - "easSão Tomé agus PríncipeAn SalbhadorSint MaartenSiridheaDùthaich na" + - "n SuasaidhTristan da CunhaNa h-Eileanan Turcach is CaiceoAn t-SeàdRa" + - "nntairean a Deas na FraingeTogoDùthaich nan TàidhTaidigeastànTokelau" + - "Timor-LesteTurcmanastànTuiniseaTongaAn TuircTrianaid agus TobagoTubh" + - "aluTaidh-BhànAn TansanAn UcràinUgandaMeanbh-Eileanan Iomallach nan S" + - "ANa Stàitean AonaichteUruguaidhUsbagastànCathair na BhatacainNaomh B" + - "hionsant agus Eileanan GreanadachA’ BheinisealaEileanan Breatannach " + - "na MaighdinnEileanan Aimeireagach na MaighdinnBhiet-NamVanuatuUallas" + - " agus FutunaSamothaA’ ChosobhoAn EamanMayotteAfraga a DeasSàimbiaAn " + - "t-SìombabRoinn-dùthcha neo-aithnichteAn SaoghalAfragaAimeireaga a Tu" + - "athAimeireaga a DeasRoinn a’ Chuain SèimhAfraga an IarMeadhan Aimeir" + - "eagaAfraga an EarAfraga a TuathMeadhan AfragaCeann a Deas AfragaAn D" + - "à AimeireagaCeann a Tuath AimeireagaAm Muir CaraibeachÀisia an EarÀ" + - "isia a DeasÀisia an Ear-dheasAn Roinn-Eòrpa a DeasAstràilia is Seala" + - "inn NuadhNa h-Eileanan DubhaRoinn nam Meanbh-EileananPoilinèisÀisiaM" + - "eadhan ÀisiaÀisia an IarAn Roinn-EòrpaAn Roinn-Eòrpa an EarAn Roinn-" + - "Eòrpa a TuathAn Roinn-Eòrpa an IarAimeireaga Laidinneach", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x0017, 0x001e, 0x003e, 0x004a, 0x005e, 0x0066, 0x006f, - 0x0078, 0x007f, 0x008b, 0x0097, 0x00ae, 0x00b7, 0x00c1, 0x00c7, - 0x00db, 0x00e7, 0x00ff, 0x0107, 0x0111, 0x011c, 0x012a, 0x0137, - 0x013f, 0x0149, 0x014f, 0x0160, 0x0169, 0x0172, 0x017b, 0x0196, - 0x019d, 0x01b3, 0x01b9, 0x01c6, 0x01ce, 0x01dd, 0x01ea, 0x01f0, - 0x020d, 0x021d, 0x0234, 0x024d, 0x0258, 0x0268, 0x0275, 0x027e, - 0x0285, 0x028e, 0x0297, 0x02a8, 0x02b4, 0x02b9, 0x02c6, 0x02ce, - 0x02df, 0x02e7, 0x02f8, 0x0307, 0x0313, 0x031e, 0x032a, 0x0334, - // Entry 40 - 7F - 0x0350, 0x0358, 0x036a, 0x0372, 0x037c, 0x0386, 0x0394, 0x039a, - 0x03a4, 0x03ac, 0x03c0, 0x03cd, 0x03d2, 0x03eb, 0x03fd, 0x0410, - 0x041a, 0x041f, 0x0436, 0x043f, 0x044f, 0x0464, 0x046f, 0x0474, - 0x047e, 0x048d, 0x049a, 0x049e, 0x04a6, 0x04bd, 0x04c8, 0x04f8, - 0x0501, 0x0505, 0x050f, 0x0519, 0x052f, 0x054e, 0x0557, 0x0566, - 0x056d, 0x0576, 0x058d, 0x059c, 0x05a3, 0x05aa, 0x05b9, 0x05c8, - 0x05f0, 0x05f6, 0x05fc, 0x0607, 0x0611, 0x061b, 0x0623, 0x062a, - 0x0635, 0x063b, 0x0646, 0x064f, 0x0657, 0x065e, 0x0678, 0x0687, - // Entry 80 - BF - 0x0695, 0x069e, 0x06b3, 0x06be, 0x06c5, 0x06cd, 0x06da, 0x06e6, - 0x06ef, 0x06f6, 0x06fd, 0x0708, 0x0712, 0x071c, 0x0721, 0x0727, - 0x072d, 0x073b, 0x074d, 0x075c, 0x0766, 0x0778, 0x0785, 0x078b, - 0x0793, 0x07a7, 0x07bc, 0x07dc, 0x07e5, 0x07f0, 0x07f9, 0x07fe, - 0x0816, 0x082e, 0x0838, 0x0840, 0x084a, 0x0854, 0x085d, 0x086c, - 0x0873, 0x0881, 0x088a, 0x0894, 0x08a4, 0x08b1, 0x08b8, 0x08be, - 0x08c2, 0x08d0, 0x08d5, 0x08db, 0x08e1, 0x08f6, 0x090b, 0x0924, - 0x092d, 0x093b, 0x0955, 0x096d, 0x0979, 0x0995, 0x09a4, 0x09aa, - // Entry C0 - FF - 0x09b4, 0x09b9, 0x09db, 0x09e3, 0x09ec, 0x09f7, 0x09fe, 0x0a06, - 0x0a18, 0x0a29, 0x0a40, 0x0a46, 0x0a50, 0x0a5a, 0x0a6d, 0x0a7b, - 0x0a92, 0x0a9f, 0x0aaf, 0x0ab9, 0x0ac1, 0x0aca, 0x0ad1, 0x0ade, - 0x0af7, 0x0b03, 0x0b0f, 0x0b17, 0x0b2d, 0x0b3d, 0x0b5c, 0x0b66, - 0x0b83, 0x0b87, 0x0b9b, 0x0ba8, 0x0baf, 0x0bba, 0x0bc7, 0x0bcf, - 0x0bd4, 0x0bdc, 0x0bf0, 0x0bf7, 0x0c02, 0x0c0b, 0x0c15, 0x0c1b, - 0x0c3b, 0x0c51, 0x0c5a, 0x0c65, 0x0c79, 0x0ca1, 0x0cb1, 0x0cd2, - 0x0cf4, 0x0cfd, 0x0d04, 0x0d16, 0x0d1d, 0x0d2a, 0x0d32, 0x0d39, - // Entry 100 - 13F - 0x0d46, 0x0d4e, 0x0d5b, 0x0d78, 0x0d82, 0x0d88, 0x0d9a, 0x0dab, - 0x0dc3, 0x0dd0, 0x0de2, 0x0def, 0x0dfd, 0x0e0b, 0x0e1e, 0x0e2f, - 0x0e47, 0x0e59, 0x0e66, 0x0e73, 0x0e86, 0x0e9c, 0x0eb8, 0x0ecb, - 0x0ee4, 0x0eee, 0x0ef4, 0x0f02, 0x0f0f, 0x0f1e, 0x0f34, 0x0f4b, - 0x0f61, 0x0f77, + "nAintìoga is BarbudaAnguilliaAlbàiniaAirmeineaAngòlaAn AntartaigAn A" + + "rgantainSamotha na h-AimeireagaAn OstairAstràiliaArùbaNa h-Eileanan " + + "ÅlandAsarbaideànBosna agus HearsagobhanaBarbadosBangladaisA’ Bheilg" + + "Buirciona FasoA’ BhulgairBachrainBurundaidhBeininSaint BarthélemyBea" + + "rmùdaBrùnaighBoilibhiaNa Tìrean Ìsle CaraibeachBraisilNa h-Eileanan " + + "BhathamaButànEilean BouvetBotsuanaA’ BhealaruisA’ BheilìsCanadaNa h-" + + "Eileanan Chocos (Keeling)Congo - KinshasaPoblachd Meadhan AfragaA’ C" + + "hongo - BrazzavilleAn EilbheisCôte d’IvoireEileanan CookAn t-SileCam" + + "arunAn t-SìnColoimbiaEilean ClippertonCosta RìceaCùbaAn Ceap UaineCu" + + "raçaoEilean na NollaigCìoprasAn t-SeicA’ GhearmailtDiego GarciaDiobù" + + "taidhAn DanmhairgDoiminiceaA’ Phoblachd DhoiminiceachAildiriaCeuta a" + + "gus MelillaEacuadorAn EastoinAn ÈiphitSathara an IarEartraAn Spàinnt" + + "An ItiopAn t-Aonadh EòrpachAn FhionnlannFìdiNa h-Eileanan Fàclannach" + + "Na Meanbh-eileananNa h-Eileanan FàroAn FhraingGabonAn Rìoghachd Aona" + + "ichteGreanàdaA’ ChairtbheilGuidheàna na FraingeGeàrnsaidhGànaDiobral" + + "tarA’ GhraonlannA’ GhaimbiaGiniGuadalupGini Mheadhan-ChriosachA’ Ghr" + + "eugSeòirsea a Deas is na h-Eileanan Sandwich a DeasGuatamalaGuamGini" + + "-BiosoGuidheànaHong Kong SAR na SìneEilean Heard is MhicDhòmhnaillHo" + + "ndùrasA’ ChròthaisHaidhtiAn UngairNa h-Eileanan CanàrachNa h-Innd-in" + + "nseÈirinnIosraelEilean MhanainnNa h-InnseachanRanntair Breatannach C" + + "uan nan InnseachanIoràcIorànInnis TìleAn EadailtDeàrsaidhDiameugaIòr" + + "danAn t-SeapanCeiniaCìorgastanCambuideaCiribeasComorosNaomh Crìstean" + + " is NibheisCoirèa a TuathCoirèaCuibhèitNa h-Eileanan CaimeanCasachst" + + "ànLàthosLeabanonNaomh LùiseaLichtensteinSri LancaLibèirLeasotoAn Li" + + "otuainLugsamburgAn LaitbheLibiaMorocoMonacoA’ MholdobhaAm Monadh Nea" + + "grachNaomh MàrtainnMadagasgarEileanan MharshallA’ MhasadonMàiliMiànm" + + "arDùthaich nam MongolMacàthu SAR na SìneNa h-Eileanan Mairianach a T" + + "uathMairtinicMoratàineaMontsaratMaltaNa h-Eileanan MhoiriseasNa h-Ei" + + "leanan MhaladaibhMalabhaidhMeagsagoMalaidhseaMòsaimbicAn NamaibCaill" + + "eann NuadhNìgeirEilean NorfolkNigèiriaNiocaraguaNa Tìrean ÌsleNirrib" + + "hidhNeapàlNabhruNiueSealainn NuadhOmànPanamaPearùPoilinèis na Fraing" + + "eGini Nuadh PhaputhachNa h-Eileanan FilipineachPagastànA’ PhòlainnSa" + + "int Pierre agus MiquelonEileanan Peit a’ ChàirnPorto RìceoNa Ranntai" + + "rean PalastaineachA’ PhortagailPalabhParaguaidhCatarRoinn Iomallach " + + "a’ Chuain SèimhRéunionRomàiniaAn t-SèirbAn RuisRubhandaAràibia nan S" + + "abhdEileanan SholaimhNa h-Eileanan SheiseallSudànAn t-SuainSingeapòr" + + "Eilean Naomh EilidhAn t-SlòbhainSvalbard agus Jan MayenAn t-SlòbhacS" + + "iarra LeòmhannSan MarinoSeanagalSomàiliaSuranamSudàn a DeasSão Tomé " + + "agus PríncipeAn SalbhadorSint MaartenSiridheaDùthaich nan SuasaidhTr" + + "istan da CunhaNa h-Eileanan Turcach is CaiceoAn t-SeàdRanntairean a " + + "Deas na FraingeTogoDùthaich nan TàidhTaidigeastànTokelauTimor-LesteT" + + "urcmanastànTuiniseaTongaAn TuircTrianaid agus TobagoTubhaluTaidh-Bhà" + + "nAn TansanAn UcràinUgandaMeanbh-Eileanan Iomallach nan SANa Stàitean" + + " AonaichteUruguaidhUsbagastànCathair na BhatacainNaomh Bhionsant agu" + + "s Eileanan GreanadachA’ BheinisealaEileanan Breatannach na Maighdinn" + + "Eileanan na Maighdinn aig na SABhiet-NamVanuatuUallas agus FutunaSam" + + "othaA’ ChosobhoAn EamanMayotteAfraga a DeasSàimbiaAn t-SìombabRoinn-" + + "dùthcha neo-aithnichteAn SaoghalAfragaAimeireaga a TuathAimeireaga a" + + " DeasRoinn a’ Chuain SèimhAfraga an IarMeadhan AimeireagaAfraga an E" + + "arAfraga a TuathMeadhan AfragaCeann a Deas AfragaAn Dà AimeireagaCea" + + "nn a Tuath AimeireagaAm Muir CaraibeachÀisia an EarÀisia a DeasÀisia" + + " an Ear-dheasAn Roinn-Eòrpa a DeasAstràilia is Sealainn NuadhNa h-Ei" + + "leanan DubhaRoinn nam Meanbh-EileananPoilinèisÀisiaMeadhan ÀisiaÀisi" + + "a an IarAn Roinn-EòrpaAn Roinn-Eòrpa an EarAn Roinn-Eòrpa a TuathAn " + + "Roinn-Eòrpa an IarAimeireaga Laidinneach", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0017, 0x001e, 0x003e, 0x004a, 0x005e, 0x0067, 0x0070, + 0x0079, 0x0080, 0x008c, 0x0098, 0x00af, 0x00b8, 0x00c2, 0x00c8, + 0x00dc, 0x00e8, 0x0100, 0x0108, 0x0112, 0x011d, 0x012b, 0x0138, + 0x0140, 0x014a, 0x0150, 0x0161, 0x016a, 0x0173, 0x017c, 0x0197, + 0x019e, 0x01b4, 0x01ba, 0x01c7, 0x01cf, 0x01de, 0x01eb, 0x01f1, + 0x020f, 0x021f, 0x0236, 0x024f, 0x025a, 0x026a, 0x0277, 0x0280, + 0x0287, 0x0290, 0x0299, 0x02aa, 0x02b6, 0x02bb, 0x02c8, 0x02d0, + 0x02e1, 0x02e9, 0x02f2, 0x0301, 0x030d, 0x0318, 0x0324, 0x032e, + // Entry 40 - 7F + 0x034a, 0x0352, 0x0364, 0x036c, 0x0376, 0x0380, 0x038e, 0x0394, + 0x039f, 0x03a7, 0x03bb, 0x03bb, 0x03c8, 0x03cd, 0x03e6, 0x03f8, + 0x040b, 0x0415, 0x041a, 0x0431, 0x043a, 0x044a, 0x045f, 0x046a, + 0x046f, 0x0479, 0x0488, 0x0495, 0x0499, 0x04a1, 0x04b8, 0x04c3, + 0x04f4, 0x04fd, 0x0501, 0x050b, 0x0515, 0x052b, 0x054a, 0x0553, + 0x0562, 0x0569, 0x0572, 0x0589, 0x0598, 0x059f, 0x05a6, 0x05b5, + 0x05c4, 0x05ec, 0x05f2, 0x05f8, 0x0603, 0x060d, 0x0617, 0x061f, + 0x0626, 0x0631, 0x0637, 0x0642, 0x064b, 0x0653, 0x065a, 0x0674, + // Entry 80 - BF + 0x0683, 0x068a, 0x0693, 0x06a8, 0x06b3, 0x06ba, 0x06c2, 0x06cf, + 0x06db, 0x06e4, 0x06eb, 0x06f2, 0x06fd, 0x0707, 0x0711, 0x0716, + 0x071c, 0x0722, 0x0730, 0x0742, 0x0751, 0x075b, 0x076d, 0x077a, + 0x0780, 0x0788, 0x079c, 0x07b1, 0x07d1, 0x07da, 0x07e5, 0x07ee, + 0x07f3, 0x080b, 0x0823, 0x082d, 0x0835, 0x083f, 0x0849, 0x0852, + 0x0861, 0x0868, 0x0876, 0x087f, 0x0889, 0x0899, 0x08a3, 0x08aa, + 0x08b0, 0x08b4, 0x08c2, 0x08c7, 0x08cd, 0x08d3, 0x08e8, 0x08fd, + 0x0916, 0x091f, 0x092d, 0x0947, 0x0961, 0x096d, 0x0989, 0x0998, + // Entry C0 - FF + 0x099e, 0x09a8, 0x09ad, 0x09cf, 0x09d7, 0x09e0, 0x09eb, 0x09f2, + 0x09fa, 0x0a0c, 0x0a1d, 0x0a34, 0x0a3a, 0x0a44, 0x0a4e, 0x0a61, + 0x0a6f, 0x0a86, 0x0a93, 0x0aa3, 0x0aad, 0x0ab5, 0x0abe, 0x0ac5, + 0x0ad2, 0x0aeb, 0x0af7, 0x0b03, 0x0b0b, 0x0b21, 0x0b31, 0x0b50, + 0x0b5a, 0x0b77, 0x0b7b, 0x0b8f, 0x0b9c, 0x0ba3, 0x0bae, 0x0bbb, + 0x0bc3, 0x0bc8, 0x0bd0, 0x0be4, 0x0beb, 0x0bf6, 0x0bff, 0x0c09, + 0x0c0f, 0x0c2f, 0x0c2f, 0x0c45, 0x0c4e, 0x0c59, 0x0c6d, 0x0c95, + 0x0ca5, 0x0cc6, 0x0ce5, 0x0cee, 0x0cf5, 0x0d07, 0x0d0e, 0x0d1b, + // Entry 100 - 13F + 0x0d23, 0x0d2a, 0x0d37, 0x0d3f, 0x0d4c, 0x0d69, 0x0d73, 0x0d79, + 0x0d8b, 0x0d9c, 0x0db4, 0x0dc1, 0x0dd3, 0x0de0, 0x0dee, 0x0dfc, + 0x0e0f, 0x0e20, 0x0e38, 0x0e4a, 0x0e57, 0x0e64, 0x0e77, 0x0e8d, + 0x0ea9, 0x0ebc, 0x0ed5, 0x0edf, 0x0ee5, 0x0ef3, 0x0f00, 0x0f0f, + 0x0f25, 0x0f3c, 0x0f52, 0x0f68, }, }, { // gl "Illa de AscensiónAndorraEmiratos Árabes UnidosAfganistánAntiga e Barbuda" + "AnguilaAlbaniaArmeniaAngolaAntártidaArxentinaSamoa AmericanaAustriaA" + - "ustraliaArubaIllas AlandAcerbaixánBosnia e HercegovinaBarbadosBangla" + - "deshBélxicaBurkina FasoBulgariaBahreinBurundiBeninSan BartoloméBermu" + - "dasBruneiBoliviaCaribe neerlandésBrasilBahamasButánIlla BouvetBotsua" + + "ustraliaArubaIllas AlandAcerbaixánBosnia-HercegovinaBarbadosBangladé" + + "sBélxicaBurkina FasoBulgariaBahrainBurundiBeninSaint-BarthélemyBermu" + + "dasBruneiBoliviaCaribe NeerlandésBrasilBahamasButánIlla BouvetBotsua" + "naBielorrusiaBeliceCanadáIllas Cocos (Keeling)República Democrática " + - "do CongoRepública CentroafricanaCongoSuízaCosta de MarfilIllas CookC" + - "hileCamerúnChinaColombiaIlla ClippertonCosta RicaCubaCabo VerdeCuraç" + - "aoIlla ChristmasChipreRepública ChecaAlemañaDiego GarcíaDjibutiDinam" + - "arcaDominicaRepública DominicanaArxeliaCeuta e MelillaEcuadorEstonia" + - "ExiptoSáhara OccidentalEritreaEspañaEtiopíaUnión EuropeaFinlandiaFix" + - "iIllas MalvinasMicronesiaIllas FeroeFranciaGabónReino UnidoGranadaXe" + - "orxiaGüiana FrancesaGuernseyGanaXibraltarGrenlandiaGambiaGuineaGuada" + - "lupeGuinea EcuatorialGreciaXeorxia do Sur e Illas SandwichGuatemalaG" + - "uamGuinea-BissauGüianaHong Kong RAE de ChinaIlla Heard e Illas McDon" + - "aldHondurasCroaciaHaitíHungríaIllas CanariasIndonesiaIrlandaIsraelIl" + - "la de ManIndiaTerritorio Británico do Océano ÍndicoIraqIránIslandiaI" + - "taliaJerseyXamaicaXordaniaXapónKenyaQuirguicistánCambodiaKiribatiCom" + - "oresSan Cristovo e NevisCorea do NorteCorea do SurKuwaitIllas Caimán" + - "KazakhstanLaosLíbanoSanta LucíaLiechtensteinSri LankaLiberiaLesothoL" + - "ituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMoldovaMontenegroSan Mart" + - "iñoMadagascarIllas MarshallMacedoniaMaliMyanmar (Birmania)MongoliaMa" + - "cau RAE de ChinaIllas Marianas do norteMartinicaMauritaniaMontserrat" + - "MaltaMauricioMaldivasMalauiMéxicoMalaisiaMozambiqueNamibiaNova Caled" + - "oniaNíxerIlla NorfolkNixeriaNicaraguaPaíses BaixosNoruegaNepalNauruN" + - "iueNova CelandiaOmánPanamáPerúPolinesia FrancesaPapúa Nova GuineaFil" + - "ipinasPaquistánPoloniaSan Pedro e MiguelónIllas PitcairnPorto RicoTe" + - "rritorios palestinosPortugalPalauParaguaiQatarOceanía DistanteReunió" + - "nRomaníaSerbiaRusiaRuandaArabia SauditaIllas SalomónSeixelesSudánSue" + - "ciaSingapurSanta HelenaEsloveniaSvalbard e Jan MayenEslovaquiaSerra " + - "LeoaSan MarinoSenegalSomaliaSurinamSudán do surSan Tomé e PríncipeEl" + - " SalvadorSint MaartenSiriaSuacilandiaTristán da CunhaIllas Turks e C" + - "aicosChadTerritorios Franceses do SulTogoTailandiaTaxiquistánTokelau" + - "Timor LesteTurkmenistánTunisiaTongaTurquíaTrindade e TobagoTuvaluTai" + - "wánTanzaniaUcraínaUgandaIllas Menores Distantes dos EUA.Estados Unid" + - "os de AméricaUruguaiUzbekistánCidade do VaticanoSan Vicente e Granad" + - "inasVenezuelaIllas Virxes BritánicasIllas Virxes EstadounidensesViet" + - "namVanuatuWallis e FutunaSamoaKosovoIemenMayotteSudáfricaZambiaCimba" + - "bueRexión descoñecidaMundoÁfricaNorteaméricaSudaméricaOceaníaÁfrica " + - "OccidentalAmérica CentralÁfrica OrientalÁfrica SeptentrionalÁfrica C" + - "entralÁfrica MeridionalAméricaAmérica do NorteCaribeAsia OrientalSul" + - " de AsiaSureste AsiáticoEuropa MeridionalAustralasiaMelanesiaRexión " + - "da MicronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa do" + - " LesteEuropa SeptentrionalEuropa OccidentalAmérica Latina", - []uint16{ // 290 elements + "do CongoRepública CentroafricanaRepública do CongoSuízaCosta do Marf" + + "ilIllas CookChileCamerúnA ChinaColombiaIlla ClippertonCosta RicaCuba" + + "Cabo VerdeCuraçaoIlla de NadalChipreChequiaAlemañaDiego GarcíaDjibut" + + "iDinamarcaDominicaRepública DominicanaAlxeriaCeuta e MelillaEcuadorE" + + "stoniaExiptoSáhara OccidentalEritreaEspañaEtiopíaUnión EuropeaFinlan" + + "diaFidxiIllas MalvinasMicronesiaIllas FeroeFranciaGabónReino UnidoGr" + + "anadaXeorxiaGüiana FrancesaGuernseyGhanaXibraltarGroenlandiaGambiaGu" + + "ineaGuadalupeGuinea EcuatorialGreciaIllas Xeorxia do Sur e Sandwich " + + "do SurGuatemalaGuamGuinea-BisauGüianaHong Kong RAE de ChinaIlla Hear" + + "d e Illas McDonaldHondurasCroaciaHaitíHungríaIllas CanariasIndonesia" + + "IrlandaIsraelIlla de ManA IndiaTerritorio Británico do Océano Índico" + + "IraqIránIslandiaItaliaJerseyXamaicaXordaniaO XapónKenyaQuirguicistán" + + "CamboxaKiribatiComoresSaint Kitts e NevisCorea do NorteCorea do SurK" + + "uwaitIllas CaimánCasaquistánLaosLíbanoSanta LucíaLiechtensteinSri La" + + "nkaLiberiaLesotoLituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMoldavia" + + "MontenegroSaint-MartinMadagascarIllas MarshallMacedoniaMalíMyanmar (" + + "Birmania)MongoliaMacau RAE de ChinaIllas Marianas do NorteMartinicaM" + + "auritaniaMontserratMaltaMauricioMaldivasMalauiMéxicoMalaisiaMozambiq" + + "ueNamibiaNova CaledoniaNíxerIlla NorfolkNixeriaNicaraguaPaíses Baixo" + + "sNoruegaNepalNauruNiueNova ZelandiaOmánPanamáPerúPolinesia FrancesaP" + + "apúa-Nova GuineaFilipinasPaquistánPoloniaSaint Pierre e MiquelonIlla" + + "s PitcairnPorto RicoTerritorios palestinosPortugalPalauParaguaiQatar" + + "Territorios afastados de OceaníaReuniónRomaníaSerbiaRusiaRuandaArabi" + + "a SauditaIllas SalomónSeixelesSudánSueciaSingapurSanta HelenaEsloven" + + "iaSvalbard e Jan MayenEslovaquiaSerra LeoaSan MarinoSenegalSomaliaSu" + + "rinameSudán do surSan Tomé e PríncipeO SalvadorSint MaartenSiriaSuac" + + "ilandiaTristán da CunhaIllas Turks e CaicosChadTerritorios Austrais " + + "FrancesesTogoTailandiaTaxiquistánToquelauTimor LesteTurcomenistánTun" + + "isiaTongaTurquíaTrinidad e TobagoTuvaluTaiwánTanzaniaUcraínaUgandaIl" + + "las Ultramarinas dos EUANacións UnidasEstados Unidos de AméricaUrugu" + + "aiUzbekistánCidade do VaticanoSan Vicente e as GranadinasVenezuelaIl" + + "las Virxes BritánicasIllas Virxes EstadounidensesVietnamVanuatuWalli" + + "s e FutunaSamoaKosovoIemenMayotteSuráfricaZambiaCimbabuerexión desco" + + "ñecidamundoÁfricaNorteaméricaSuraméricaOceaníaÁfrica OccidentalAmér" + + "ica CentralÁfrica OrientalÁfrica SetentrionalÁfrica CentralÁfrica Me" + + "ridionalAméricaAmérica do NorteCaribeAsia OrientalAsia MeridionalSue" + + "ste AsiáticoEuropa MeridionalAustralasiaMelanesiarexión da Micronesi" + + "aPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa do LesteEuropa" + + " SetentrionalEuropa OccidentalAmérica Latina", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0012, 0x0019, 0x0030, 0x003b, 0x004b, 0x0052, 0x0059, 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x008f, 0x0098, 0x009d, - 0x00a8, 0x00b3, 0x00c7, 0x00cf, 0x00d9, 0x00e1, 0x00ed, 0x00f5, - 0x00fc, 0x0103, 0x0108, 0x0116, 0x011e, 0x0124, 0x012b, 0x013d, - 0x0143, 0x014a, 0x0150, 0x015b, 0x0163, 0x016e, 0x0174, 0x017b, - 0x0190, 0x01b0, 0x01c9, 0x01ce, 0x01d4, 0x01e3, 0x01ed, 0x01f2, - 0x01fa, 0x01ff, 0x0207, 0x0216, 0x0220, 0x0224, 0x022e, 0x0236, - 0x0244, 0x024a, 0x025a, 0x0262, 0x026f, 0x0276, 0x027f, 0x0287, - // Entry 40 - 7F - 0x029c, 0x02a3, 0x02b2, 0x02b9, 0x02c0, 0x02c6, 0x02d8, 0x02df, - 0x02e6, 0x02ee, 0x02fc, 0x0305, 0x0309, 0x0317, 0x0321, 0x032c, - 0x0333, 0x0339, 0x0344, 0x034b, 0x0352, 0x0362, 0x036a, 0x036e, - 0x0377, 0x0381, 0x0387, 0x038d, 0x0396, 0x03a7, 0x03ad, 0x03cc, - 0x03d5, 0x03d9, 0x03e6, 0x03ed, 0x0403, 0x041e, 0x0426, 0x042d, - 0x0433, 0x043b, 0x0449, 0x0452, 0x0459, 0x045f, 0x046a, 0x046f, - 0x0497, 0x049b, 0x04a0, 0x04a8, 0x04ae, 0x04b4, 0x04bb, 0x04c3, - 0x04c9, 0x04ce, 0x04dc, 0x04e4, 0x04ec, 0x04f3, 0x0507, 0x0515, - // Entry 80 - BF - 0x0521, 0x0527, 0x0534, 0x053e, 0x0542, 0x0549, 0x0555, 0x0562, - 0x056b, 0x0572, 0x0579, 0x0581, 0x058b, 0x0592, 0x0597, 0x059f, - 0x05a6, 0x05ad, 0x05b7, 0x05c3, 0x05cd, 0x05db, 0x05e4, 0x05e8, - 0x05fa, 0x0602, 0x0614, 0x062b, 0x0634, 0x063e, 0x0648, 0x064d, - 0x0655, 0x065d, 0x0663, 0x066a, 0x0672, 0x067c, 0x0683, 0x0691, - 0x0697, 0x06a3, 0x06aa, 0x06b3, 0x06c1, 0x06c8, 0x06cd, 0x06d2, - 0x06d6, 0x06e3, 0x06e8, 0x06ef, 0x06f4, 0x0706, 0x0718, 0x0721, - 0x072b, 0x0732, 0x0747, 0x0755, 0x075f, 0x0775, 0x077d, 0x0782, - // Entry C0 - FF - 0x078a, 0x078f, 0x07a0, 0x07a8, 0x07b0, 0x07b6, 0x07bb, 0x07c1, - 0x07cf, 0x07dd, 0x07e5, 0x07eb, 0x07f1, 0x07f9, 0x0805, 0x080e, - 0x0822, 0x082c, 0x0836, 0x0840, 0x0847, 0x084e, 0x0855, 0x0862, - 0x0877, 0x0882, 0x088e, 0x0893, 0x089e, 0x08af, 0x08c3, 0x08c7, - 0x08e3, 0x08e7, 0x08f0, 0x08fc, 0x0903, 0x090e, 0x091b, 0x0922, - 0x0927, 0x092f, 0x0940, 0x0946, 0x094d, 0x0955, 0x095d, 0x0963, - 0x0983, 0x099d, 0x09a4, 0x09af, 0x09c1, 0x09d9, 0x09e2, 0x09fa, - 0x0a16, 0x0a1d, 0x0a24, 0x0a33, 0x0a38, 0x0a3e, 0x0a43, 0x0a4a, - // Entry 100 - 13F - 0x0a54, 0x0a5a, 0x0a62, 0x0a76, 0x0a7b, 0x0a82, 0x0a8f, 0x0a9a, - 0x0aa2, 0x0ab4, 0x0ac4, 0x0ad4, 0x0ae9, 0x0af8, 0x0b0a, 0x0b12, - 0x0b23, 0x0b29, 0x0b36, 0x0b41, 0x0b52, 0x0b63, 0x0b6e, 0x0b77, - 0x0b8c, 0x0b95, 0x0b99, 0x0ba5, 0x0bb4, 0x0bba, 0x0bc9, 0x0bdd, - 0x0bee, 0x0bfd, + 0x00a8, 0x00b3, 0x00c5, 0x00cd, 0x00d7, 0x00df, 0x00eb, 0x00f3, + 0x00fa, 0x0101, 0x0106, 0x0117, 0x011f, 0x0125, 0x012c, 0x013e, + 0x0144, 0x014b, 0x0151, 0x015c, 0x0164, 0x016f, 0x0175, 0x017c, + 0x0191, 0x01b1, 0x01ca, 0x01dd, 0x01e3, 0x01f2, 0x01fc, 0x0201, + 0x0209, 0x0210, 0x0218, 0x0227, 0x0231, 0x0235, 0x023f, 0x0247, + 0x0254, 0x025a, 0x0261, 0x0269, 0x0276, 0x027d, 0x0286, 0x028e, + // Entry 40 - 7F + 0x02a3, 0x02aa, 0x02b9, 0x02c0, 0x02c7, 0x02cd, 0x02df, 0x02e6, + 0x02ed, 0x02f5, 0x0303, 0x0303, 0x030c, 0x0311, 0x031f, 0x0329, + 0x0334, 0x033b, 0x0341, 0x034c, 0x0353, 0x035a, 0x036a, 0x0372, + 0x0377, 0x0380, 0x038b, 0x0391, 0x0397, 0x03a0, 0x03b1, 0x03b7, + 0x03dd, 0x03e6, 0x03ea, 0x03f6, 0x03fd, 0x0413, 0x042e, 0x0436, + 0x043d, 0x0443, 0x044b, 0x0459, 0x0462, 0x0469, 0x046f, 0x047a, + 0x0481, 0x04a9, 0x04ad, 0x04b2, 0x04ba, 0x04c0, 0x04c6, 0x04cd, + 0x04d5, 0x04dd, 0x04e2, 0x04f0, 0x04f7, 0x04ff, 0x0506, 0x0519, + // Entry 80 - BF + 0x0527, 0x0533, 0x0539, 0x0546, 0x0552, 0x0556, 0x055d, 0x0569, + 0x0576, 0x057f, 0x0586, 0x058c, 0x0594, 0x059e, 0x05a5, 0x05aa, + 0x05b2, 0x05b9, 0x05c1, 0x05cb, 0x05d7, 0x05e1, 0x05ef, 0x05f8, + 0x05fd, 0x060f, 0x0617, 0x0629, 0x0640, 0x0649, 0x0653, 0x065d, + 0x0662, 0x066a, 0x0672, 0x0678, 0x067f, 0x0687, 0x0691, 0x0698, + 0x06a6, 0x06ac, 0x06b8, 0x06bf, 0x06c8, 0x06d6, 0x06dd, 0x06e2, + 0x06e7, 0x06eb, 0x06f8, 0x06fd, 0x0704, 0x0709, 0x071b, 0x072d, + 0x0736, 0x0740, 0x0747, 0x075e, 0x076c, 0x0776, 0x078c, 0x0794, + // Entry C0 - FF + 0x0799, 0x07a1, 0x07a6, 0x07c7, 0x07cf, 0x07d7, 0x07dd, 0x07e2, + 0x07e8, 0x07f6, 0x0804, 0x080c, 0x0812, 0x0818, 0x0820, 0x082c, + 0x0835, 0x0849, 0x0853, 0x085d, 0x0867, 0x086e, 0x0875, 0x087d, + 0x088a, 0x089f, 0x08a9, 0x08b5, 0x08ba, 0x08c5, 0x08d6, 0x08ea, + 0x08ee, 0x090c, 0x0910, 0x0919, 0x0925, 0x092d, 0x0938, 0x0946, + 0x094d, 0x0952, 0x095a, 0x096b, 0x0971, 0x0978, 0x0980, 0x0988, + 0x098e, 0x09a8, 0x09b7, 0x09d1, 0x09d8, 0x09e3, 0x09f5, 0x0a10, + 0x0a19, 0x0a31, 0x0a4d, 0x0a54, 0x0a5b, 0x0a6a, 0x0a6f, 0x0a75, + // Entry 100 - 13F + 0x0a7a, 0x0a81, 0x0a8b, 0x0a91, 0x0a99, 0x0aad, 0x0ab2, 0x0ab9, + 0x0ac6, 0x0ad1, 0x0ad9, 0x0aeb, 0x0afb, 0x0b0b, 0x0b1f, 0x0b2e, + 0x0b40, 0x0b48, 0x0b59, 0x0b5f, 0x0b6c, 0x0b7b, 0x0b8b, 0x0b9c, + 0x0ba7, 0x0bb0, 0x0bc5, 0x0bce, 0x0bd2, 0x0bde, 0x0bed, 0x0bf3, + 0x0c02, 0x0c15, 0x0c26, 0x0c35, }, }, { // gsw @@ -31865,7 +36426,7 @@ var regionHeaders = [220]header{ "alie und NöiseelandMelaneesieMikroneesischs InselgebietPolineesieAas" + "ieZentraalaasieWeschtaasieEuroopaOschteuroopaNordeuroopaWeschteuroop" + "aLatiinameerika", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0024, 0x0030, 0x0043, 0x004b, 0x0053, 0x005b, 0x0062, 0x006b, 0x0076, 0x0089, 0x0096, 0x00a2, 0x00a7, @@ -31877,37 +36438,37 @@ var regionHeaders = [220]header{ 0x023e, 0x0244, 0x0259, 0x0266, 0x0266, 0x0270, 0x0279, 0x0281, // Entry 40 - 7F 0x0299, 0x02a1, 0x02a1, 0x02a8, 0x02b0, 0x02b8, 0x02c4, 0x02cd, - 0x02d5, 0x02de, 0x02f3, 0x02fb, 0x0302, 0x0310, 0x031b, 0x0323, - 0x032d, 0x0332, 0x034a, 0x0351, 0x0359, 0x036f, 0x0378, 0x037d, - 0x0386, 0x0391, 0x0397, 0x039d, 0x03a6, 0x03b8, 0x03c3, 0x03f6, - 0x0400, 0x0404, 0x0411, 0x041a, 0x0437, 0x0454, 0x045c, 0x0464, - 0x0469, 0x046f, 0x046f, 0x0479, 0x047f, 0x0485, 0x0492, 0x0497, - 0x04c0, 0x04c5, 0x04ca, 0x04d1, 0x04d8, 0x04e1, 0x04ec, 0x04f5, - 0x04fa, 0x0500, 0x050e, 0x0518, 0x0521, 0x0528, 0x053c, 0x055f, - // Entry 80 - BF - 0x056e, 0x0575, 0x0583, 0x058f, 0x0594, 0x059b, 0x05a8, 0x05b7, - 0x05c2, 0x05ca, 0x05d1, 0x05d8, 0x05e1, 0x05e9, 0x05f1, 0x05f8, - 0x05fe, 0x060d, 0x0618, 0x0622, 0x062e, 0x063b, 0x0645, 0x064a, - 0x0659, 0x0661, 0x067b, 0x068e, 0x0697, 0x06a2, 0x06ac, 0x06b1, - 0x06bb, 0x06c4, 0x06cb, 0x06d1, 0x06da, 0x06e2, 0x06ea, 0x06f8, - 0x06fd, 0x070a, 0x0712, 0x071c, 0x0723, 0x072b, 0x0731, 0x0736, - 0x073a, 0x0745, 0x074a, 0x0750, 0x0754, 0x076b, 0x077a, 0x0785, - 0x078f, 0x0794, 0x07a9, 0x07b4, 0x07c0, 0x07db, 0x07e3, 0x07e8, - // Entry C0 - FF - 0x07f0, 0x07f6, 0x0806, 0x080f, 0x0819, 0x0820, 0x0828, 0x082e, - 0x083b, 0x0844, 0x084f, 0x0854, 0x085c, 0x0865, 0x086f, 0x0878, - 0x0891, 0x089a, 0x08a7, 0x08b2, 0x08b9, 0x08c1, 0x08c8, 0x08c8, - 0x08de, 0x08e9, 0x08e9, 0x08f1, 0x08fa, 0x08fa, 0x0913, 0x0919, - 0x0942, 0x0947, 0x094f, 0x095e, 0x0965, 0x096f, 0x097e, 0x0986, - 0x098b, 0x0993, 0x09a7, 0x09ad, 0x09b3, 0x09bc, 0x09c4, 0x09ca, - 0x09df, 0x09f3, 0x09fa, 0x0a09, 0x0a15, 0x0a34, 0x0a3e, 0x0a56, - 0x0a73, 0x0a7a, 0x0a81, 0x0a93, 0x0a99, 0x0a99, 0x0a9e, 0x0aa4, - // Entry 100 - 13F - 0x0ab0, 0x0ab6, 0x0abe, 0x0ae0, 0x0ae5, 0x0aeb, 0x0af7, 0x0b05, - 0x0b0d, 0x0b19, 0x0b27, 0x0b32, 0x0b3c, 0x0b4a, 0x0b5c, 0x0b7d, - 0x0b90, 0x0b97, 0x0ba1, 0x0bac, 0x0bbc, 0x0bc8, 0x0be4, 0x0bee, - 0x0c08, 0x0c12, 0x0c17, 0x0c24, 0x0c2f, 0x0c36, 0x0c42, 0x0c4d, - 0x0c5a, 0x0c68, + 0x02d5, 0x02de, 0x02f3, 0x02f3, 0x02fb, 0x0302, 0x0310, 0x031b, + 0x0323, 0x032d, 0x0332, 0x034a, 0x0351, 0x0359, 0x036f, 0x0378, + 0x037d, 0x0386, 0x0391, 0x0397, 0x039d, 0x03a6, 0x03b8, 0x03c3, + 0x03f6, 0x0400, 0x0404, 0x0411, 0x041a, 0x0437, 0x0454, 0x045c, + 0x0464, 0x0469, 0x046f, 0x046f, 0x0479, 0x047f, 0x0485, 0x0492, + 0x0497, 0x04c0, 0x04c5, 0x04ca, 0x04d1, 0x04d8, 0x04e1, 0x04ec, + 0x04f5, 0x04fa, 0x0500, 0x050e, 0x0518, 0x0521, 0x0528, 0x053c, + // Entry 80 - BF + 0x055f, 0x056e, 0x0575, 0x0583, 0x058f, 0x0594, 0x059b, 0x05a8, + 0x05b7, 0x05c2, 0x05ca, 0x05d1, 0x05d8, 0x05e1, 0x05e9, 0x05f1, + 0x05f8, 0x05fe, 0x060d, 0x0618, 0x0622, 0x062e, 0x063b, 0x0645, + 0x064a, 0x0659, 0x0661, 0x067b, 0x068e, 0x0697, 0x06a2, 0x06ac, + 0x06b1, 0x06bb, 0x06c4, 0x06cb, 0x06d1, 0x06da, 0x06e2, 0x06ea, + 0x06f8, 0x06fd, 0x070a, 0x0712, 0x071c, 0x0723, 0x072b, 0x0731, + 0x0736, 0x073a, 0x0745, 0x074a, 0x0750, 0x0754, 0x076b, 0x077a, + 0x0785, 0x078f, 0x0794, 0x07a9, 0x07b4, 0x07c0, 0x07db, 0x07e3, + // Entry C0 - FF + 0x07e8, 0x07f0, 0x07f6, 0x0806, 0x080f, 0x0819, 0x0820, 0x0828, + 0x082e, 0x083b, 0x0844, 0x084f, 0x0854, 0x085c, 0x0865, 0x086f, + 0x0878, 0x0891, 0x089a, 0x08a7, 0x08b2, 0x08b9, 0x08c1, 0x08c8, + 0x08c8, 0x08de, 0x08e9, 0x08e9, 0x08f1, 0x08fa, 0x08fa, 0x0913, + 0x0919, 0x0942, 0x0947, 0x094f, 0x095e, 0x0965, 0x096f, 0x097e, + 0x0986, 0x098b, 0x0993, 0x09a7, 0x09ad, 0x09b3, 0x09bc, 0x09c4, + 0x09ca, 0x09df, 0x09df, 0x09f3, 0x09fa, 0x0a09, 0x0a15, 0x0a34, + 0x0a3e, 0x0a56, 0x0a73, 0x0a7a, 0x0a81, 0x0a93, 0x0a99, 0x0a99, + // Entry 100 - 13F + 0x0a9e, 0x0aa4, 0x0ab0, 0x0ab6, 0x0abe, 0x0ae0, 0x0ae5, 0x0aeb, + 0x0af7, 0x0b05, 0x0b0d, 0x0b19, 0x0b27, 0x0b32, 0x0b3c, 0x0b4a, + 0x0b5c, 0x0b7d, 0x0b90, 0x0b97, 0x0ba1, 0x0bac, 0x0bbc, 0x0bc8, + 0x0be4, 0x0bee, 0x0c08, 0x0c12, 0x0c17, 0x0c24, 0x0c2f, 0x0c36, + 0x0c42, 0x0c4d, 0x0c5a, 0x0c68, }, }, { // gu @@ -31946,7 +36507,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -31958,38 +36519,38 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // gv "Rywvaneth UnysEllan Vannin", - []uint16{ // 111 elements + []uint16{ // 112 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -32002,10 +36563,10 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, + 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x001a, + 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x001a, }, }, { // ha @@ -32040,7 +36601,7 @@ var regionHeaders = [220]header{ "UzubekistanBatikanSan Binsan Da GirnadinBenezuwelaTsibirin Birjin Na" + " BirtaniyaTsibiran Birjin Ta AmurkaBiyetinamBanuwatuWalis Da FutunaS" + "amowaYamalMayotiAfirka Ta KuduZambiyaZimbabuwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0023, 0x002e, 0x0040, 0x0046, 0x004e, 0x0056, 0x005c, 0x005c, 0x0067, 0x0077, 0x007f, 0x0089, 0x008e, @@ -32052,40 +36613,40 @@ var regionHeaders = [220]header{ 0x01d1, 0x01d8, 0x01e6, 0x01eb, 0x01eb, 0x01f1, 0x01f8, 0x0200, // Entry 40 - 7F 0x0213, 0x021b, 0x021b, 0x0222, 0x022a, 0x0237, 0x0237, 0x0240, - 0x0245, 0x024c, 0x024c, 0x0252, 0x0256, 0x0267, 0x0273, 0x0273, - 0x027a, 0x027f, 0x0288, 0x028f, 0x0298, 0x02a7, 0x02a7, 0x02ab, - 0x02b5, 0x02bc, 0x02c3, 0x02c7, 0x02cf, 0x02de, 0x02e3, 0x02e3, - 0x02ec, 0x02f0, 0x02fa, 0x0300, 0x0300, 0x0300, 0x0308, 0x0314, - 0x0319, 0x0320, 0x0320, 0x032a, 0x0330, 0x033a, 0x033a, 0x0340, - 0x0360, 0x0366, 0x036a, 0x0371, 0x0378, 0x0378, 0x037f, 0x0385, - 0x038a, 0x038f, 0x039a, 0x03a3, 0x03ab, 0x03b3, 0x03c4, 0x03d3, - // Entry 80 - BF - 0x03e1, 0x03e7, 0x03f6, 0x0400, 0x0405, 0x040c, 0x0416, 0x0420, - 0x042a, 0x0432, 0x0438, 0x0442, 0x044c, 0x0454, 0x045a, 0x0460, - 0x0466, 0x046d, 0x046d, 0x046d, 0x0477, 0x0487, 0x0491, 0x0495, - 0x04a3, 0x04ac, 0x04ac, 0x04c6, 0x04ce, 0x04d8, 0x04e1, 0x04e6, - 0x04ed, 0x04f4, 0x04fa, 0x0502, 0x050b, 0x0513, 0x051b, 0x052c, - 0x0531, 0x0541, 0x0549, 0x0553, 0x0558, 0x055d, 0x0562, 0x0567, - 0x056b, 0x0572, 0x0576, 0x057c, 0x0580, 0x0595, 0x05a2, 0x05a9, - 0x05b1, 0x05b6, 0x05ca, 0x05d3, 0x05dd, 0x05e7, 0x05ef, 0x05f4, - // Entry C0 - FF - 0x05fb, 0x0601, 0x0601, 0x060a, 0x0612, 0x0612, 0x0617, 0x061e, - 0x062a, 0x063a, 0x0641, 0x0646, 0x064d, 0x0655, 0x065f, 0x0669, - 0x0669, 0x0673, 0x0679, 0x0683, 0x068a, 0x0692, 0x069a, 0x069a, - 0x06af, 0x06ba, 0x06ba, 0x06c6, 0x06cf, 0x06cf, 0x06e9, 0x06ed, - 0x06ed, 0x06f1, 0x06f7, 0x0701, 0x0708, 0x0716, 0x0723, 0x072b, - 0x0730, 0x0738, 0x074b, 0x0751, 0x0757, 0x0760, 0x0767, 0x076e, - 0x076e, 0x0774, 0x077b, 0x0786, 0x078d, 0x07a3, 0x07ad, 0x07c9, - 0x07e2, 0x07eb, 0x07f3, 0x0802, 0x0808, 0x0808, 0x080d, 0x0813, - // Entry 100 - 13F - 0x0821, 0x0828, 0x0831, + 0x0245, 0x024c, 0x024c, 0x024c, 0x0252, 0x0256, 0x0267, 0x0273, + 0x0273, 0x027a, 0x027f, 0x0288, 0x028f, 0x0298, 0x02a7, 0x02a7, + 0x02ab, 0x02b5, 0x02bc, 0x02c3, 0x02c7, 0x02cf, 0x02de, 0x02e3, + 0x02e3, 0x02ec, 0x02f0, 0x02fa, 0x0300, 0x0300, 0x0300, 0x0308, + 0x0314, 0x0319, 0x0320, 0x0320, 0x032a, 0x0330, 0x033a, 0x033a, + 0x0340, 0x0360, 0x0366, 0x036a, 0x0371, 0x0378, 0x0378, 0x037f, + 0x0385, 0x038a, 0x038f, 0x039a, 0x03a3, 0x03ab, 0x03b3, 0x03c4, + // Entry 80 - BF + 0x03d3, 0x03e1, 0x03e7, 0x03f6, 0x0400, 0x0405, 0x040c, 0x0416, + 0x0420, 0x042a, 0x0432, 0x0438, 0x0442, 0x044c, 0x0454, 0x045a, + 0x0460, 0x0466, 0x046d, 0x046d, 0x046d, 0x0477, 0x0487, 0x0491, + 0x0495, 0x04a3, 0x04ac, 0x04ac, 0x04c6, 0x04ce, 0x04d8, 0x04e1, + 0x04e6, 0x04ed, 0x04f4, 0x04fa, 0x0502, 0x050b, 0x0513, 0x051b, + 0x052c, 0x0531, 0x0541, 0x0549, 0x0553, 0x0558, 0x055d, 0x0562, + 0x0567, 0x056b, 0x0572, 0x0576, 0x057c, 0x0580, 0x0595, 0x05a2, + 0x05a9, 0x05b1, 0x05b6, 0x05ca, 0x05d3, 0x05dd, 0x05e7, 0x05ef, + // Entry C0 - FF + 0x05f4, 0x05fb, 0x0601, 0x0601, 0x060a, 0x0612, 0x0612, 0x0617, + 0x061e, 0x062a, 0x063a, 0x0641, 0x0646, 0x064d, 0x0655, 0x065f, + 0x0669, 0x0669, 0x0673, 0x0679, 0x0683, 0x068a, 0x0692, 0x069a, + 0x069a, 0x06af, 0x06ba, 0x06ba, 0x06c6, 0x06cf, 0x06cf, 0x06e9, + 0x06ed, 0x06ed, 0x06f1, 0x06f7, 0x0701, 0x0708, 0x0716, 0x0723, + 0x072b, 0x0730, 0x0738, 0x074b, 0x0751, 0x0757, 0x0760, 0x0767, + 0x076e, 0x076e, 0x076e, 0x0774, 0x077b, 0x0786, 0x078d, 0x07a3, + 0x07ad, 0x07c9, 0x07e2, 0x07eb, 0x07f3, 0x0802, 0x0808, 0x0808, + // Entry 100 - 13F + 0x080d, 0x0813, 0x0821, 0x0828, 0x0831, }, }, { // haw "NūhōlaniKanakāKinaKelemāniaKenemakaKepaniaPalaniAupuni Mōʻī Hui Pū ʻIaHe" + "leneʻIlelaniʻIseraʻelaʻĪniaʻĪkāliaIāpanaMekikoHōlaniAotearoaʻĀina Pi" + "lipinoLūkiaʻAmelika Hui Pū ʻIa", - []uint16{ // 242 elements + []uint16{ // 244 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, @@ -32098,29 +36659,29 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x0034, 0x0034, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x0055, 0x0055, + 0x002e, 0x0034, 0x0034, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, + 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x006a, 0x006a, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, 0x007b, 0x007b, 0x007b, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x006a, 0x006a, + 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, 0x007b, 0x007b, + 0x007b, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, // Entry 80 - BF 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, - 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a7, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0088, 0x0088, 0x0088, 0x0088, + 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f, + 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, // Entry C0 - FF - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00ad, 0x00ad, + 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00c3, + 0x00ad, 0x00ad, 0x00ad, 0x00c3, }, }, { // he @@ -32182,7 +36743,7 @@ var regionHeaders = [220]header{ "na Azijajužna EuropaAwstralazijaMelaneziskaMikroneziska (kupowy regi" + "on)PolyneziskaAzijacentralna Azijazapadna AzijaEuropawuchodna Europa" + "sewjerna Europazapadna EuropaŁaćonska Amerika", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057, 0x005f, 0x0065, 0x006f, 0x007a, 0x0088, 0x0091, 0x009b, 0x00a0, @@ -32194,37 +36755,37 @@ var regionHeaders = [220]header{ 0x024d, 0x0253, 0x0264, 0x026b, 0x0277, 0x027f, 0x0285, 0x028d, // Entry 40 - 7F 0x02a3, 0x02ac, 0x02bb, 0x02c2, 0x02c9, 0x02d3, 0x02e1, 0x02e9, - 0x02f2, 0x02fb, 0x0309, 0x030f, 0x0315, 0x0325, 0x0331, 0x033f, - 0x0348, 0x034d, 0x0362, 0x0369, 0x0372, 0x0382, 0x038a, 0x038f, - 0x0398, 0x03a4, 0x03ab, 0x03b1, 0x03bb, 0x03ce, 0x03d6, 0x0400, - 0x0409, 0x040d, 0x041a, 0x0420, 0x0442, 0x0462, 0x046a, 0x0474, - 0x0479, 0x0483, 0x0491, 0x049a, 0x049f, 0x04a5, 0x04a8, 0x04af, - 0x04d4, 0x04d8, 0x04dc, 0x04e5, 0x04ec, 0x04f2, 0x04f9, 0x0503, - 0x050b, 0x0511, 0x051c, 0x0525, 0x052d, 0x0533, 0x0544, 0x0553, - // Entry 80 - BF - 0x0560, 0x0566, 0x0574, 0x057e, 0x0582, 0x0589, 0x0592, 0x059f, - 0x05a8, 0x05b0, 0x05b7, 0x05bf, 0x05cb, 0x05d2, 0x05d9, 0x05e0, - 0x05e6, 0x05ef, 0x05f9, 0x0603, 0x060d, 0x061d, 0x0627, 0x062b, - 0x0632, 0x063b, 0x065a, 0x066a, 0x0674, 0x067f, 0x0689, 0x068e, - 0x0697, 0x069f, 0x06a5, 0x06ab, 0x06b4, 0x06bc, 0x06c4, 0x06d4, - 0x06d9, 0x06e8, 0x06f0, 0x06f9, 0x0704, 0x070d, 0x0712, 0x0717, - 0x071b, 0x0729, 0x072d, 0x0733, 0x0737, 0x074c, 0x075e, 0x0766, - 0x076e, 0x0775, 0x078a, 0x079a, 0x07a5, 0x07c4, 0x07cf, 0x07d4, - // Entry C0 - FF - 0x07dc, 0x07e1, 0x07f3, 0x07fb, 0x0803, 0x080b, 0x0810, 0x0816, - 0x0823, 0x082b, 0x0834, 0x0839, 0x0841, 0x0849, 0x0853, 0x085e, - 0x0872, 0x087c, 0x0888, 0x0892, 0x0899, 0x08a1, 0x08a8, 0x08b4, - 0x08ca, 0x08d5, 0x08e1, 0x08e8, 0x08f0, 0x0900, 0x0913, 0x0917, - 0x093f, 0x0943, 0x094e, 0x095a, 0x0961, 0x096c, 0x0977, 0x0980, - 0x0985, 0x098e, 0x099f, 0x09a5, 0x09ab, 0x09b4, 0x09bb, 0x09c1, - 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0e, 0x0a25, 0x0a2e, 0x0a47, - 0x0a60, 0x0a67, 0x0a6e, 0x0a7d, 0x0a82, 0x0a88, 0x0a8d, 0x0a94, - // Entry 100 - 13F - 0x0aad, 0x0ab4, 0x0abc, 0x0acb, 0x0ad0, 0x0ad6, 0x0ae6, 0x0af4, - 0x0afd, 0x0b0b, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b4a, 0x0b57, 0x0b5e, - 0x0b79, 0x0b81, 0x0b8f, 0x0b9b, 0x0bad, 0x0bba, 0x0bc6, 0x0bd1, - 0x0bed, 0x0bf8, 0x0bfd, 0x0c0c, 0x0c19, 0x0c1f, 0x0c2e, 0x0c3d, - 0x0c4b, 0x0c5d, + 0x02f2, 0x02fb, 0x0309, 0x0309, 0x030f, 0x0315, 0x0325, 0x0331, + 0x033f, 0x0348, 0x034d, 0x0362, 0x0369, 0x0372, 0x0382, 0x038a, + 0x038f, 0x0398, 0x03a4, 0x03ab, 0x03b1, 0x03bb, 0x03ce, 0x03d6, + 0x0400, 0x0409, 0x040d, 0x041a, 0x0420, 0x0442, 0x0462, 0x046a, + 0x0474, 0x0479, 0x0483, 0x0491, 0x049a, 0x049f, 0x04a5, 0x04a8, + 0x04af, 0x04d4, 0x04d8, 0x04dc, 0x04e5, 0x04ec, 0x04f2, 0x04f9, + 0x0503, 0x050b, 0x0511, 0x051c, 0x0525, 0x052d, 0x0533, 0x0544, + // Entry 80 - BF + 0x0553, 0x0560, 0x0566, 0x0574, 0x057e, 0x0582, 0x0589, 0x0592, + 0x059f, 0x05a8, 0x05b0, 0x05b7, 0x05bf, 0x05cb, 0x05d2, 0x05d9, + 0x05e0, 0x05e6, 0x05ef, 0x05f9, 0x0603, 0x060d, 0x061d, 0x0627, + 0x062b, 0x0632, 0x063b, 0x065a, 0x066a, 0x0674, 0x067f, 0x0689, + 0x068e, 0x0697, 0x069f, 0x06a5, 0x06ab, 0x06b4, 0x06bc, 0x06c4, + 0x06d4, 0x06d9, 0x06e8, 0x06f0, 0x06f9, 0x0704, 0x070d, 0x0712, + 0x0717, 0x071b, 0x0729, 0x072d, 0x0733, 0x0737, 0x074c, 0x075e, + 0x0766, 0x076e, 0x0775, 0x078a, 0x079a, 0x07a5, 0x07c4, 0x07cf, + // Entry C0 - FF + 0x07d4, 0x07dc, 0x07e1, 0x07f3, 0x07fb, 0x0803, 0x080b, 0x0810, + 0x0816, 0x0823, 0x082b, 0x0834, 0x0839, 0x0841, 0x0849, 0x0853, + 0x085e, 0x0872, 0x087c, 0x0888, 0x0892, 0x0899, 0x08a1, 0x08a8, + 0x08b4, 0x08ca, 0x08d5, 0x08e1, 0x08e8, 0x08f0, 0x0900, 0x0913, + 0x0917, 0x093f, 0x0943, 0x094e, 0x095a, 0x0961, 0x096c, 0x0977, + 0x0980, 0x0985, 0x098e, 0x099f, 0x09a5, 0x09ab, 0x09b4, 0x09bb, + 0x09c1, 0x09d3, 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0e, 0x0a25, + 0x0a2e, 0x0a47, 0x0a60, 0x0a67, 0x0a6e, 0x0a7d, 0x0a82, 0x0a88, + // Entry 100 - 13F + 0x0a8d, 0x0a94, 0x0aad, 0x0ab4, 0x0abc, 0x0acb, 0x0ad0, 0x0ad6, + 0x0ae6, 0x0af4, 0x0afd, 0x0b0b, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b4a, + 0x0b57, 0x0b5e, 0x0b79, 0x0b81, 0x0b8f, 0x0b9b, 0x0bad, 0x0bba, + 0x0bc6, 0x0bd1, 0x0bed, 0x0bf8, 0x0bfd, 0x0c0c, 0x0c19, 0x0c1f, + 0x0c2e, 0x0c3d, 0x0c4b, 0x0c5d, }, }, { // hu @@ -32241,7 +36802,7 @@ var regionHeaders = [220]header{ }, { // ig "BininBemudaChainaHatiComorosuLibyiaMaldivesaNigeria", - []uint16{ // 171 elements + []uint16{ // 172 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -32257,21 +36818,21 @@ var regionHeaders = [220]header{ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, 0x001d, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, // Entry 80 - BF 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0023, 0x0023, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x0033, + 0x0023, 0x0023, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, + 0x002c, 0x002c, 0x002c, 0x0033, }, }, { // ii "ꀠꑭꍏꇩꄓꇩꃔꇩꑱꇩꑴꄗꑴꄊꆺꏝꀪꊉꇆꌦꂰꇩꃅꄷꅉꀋꐚꌠ", - []uint16{ // 260 elements + []uint16{ // 262 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -32284,12 +36845,12 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0018, 0x0018, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x0012, 0x0018, 0x0018, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x002d, 0x002d, 0x002d, 0x002d, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, + 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x002d, 0x002d, 0x002d, + 0x002d, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, // Entry 80 - BF 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, @@ -32300,16 +36861,16 @@ var regionHeaders = [220]header{ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, // Entry C0 - FF - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, + 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, + 0x003c, 0x003c, 0x003c, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, // Entry 100 - 13F - 0x0042, 0x0042, 0x0042, 0x0054, + 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0054, }, }, { // is @@ -32335,7 +36896,7 @@ var regionHeaders = [220]header{ "SɛnɛgâlSɔmalîSáwɔŋ Tɔmɛ́ nɛ́ PɛlínsipɛSwazilânCâtTɔ́ŋgɔTunizîTanzanî" + "UŋgándaVɛnɛzwɛ́laMayɔ̂tZambîZimbámbwɛŋgɔŋ yi pɛ́ ká kɛ́ jʉɔMbíAfɛlîk" + "AmɛlîkAzîɄlôp", - []uint16{ // 286 elements + []uint16{ // 288 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, @@ -32348,35 +36909,35 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x00d4, 0x00dc, 0x00dc, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00fe, 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x011b, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x012d, - 0x012d, 0x012d, 0x0135, 0x013e, 0x013e, 0x0156, 0x0161, 0x0161, - 0x0161, 0x0161, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, - 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x017d, 0x017d, 0x0183, - 0x0183, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, 0x018e, 0x018e, - 0x0196, 0x019e, 0x019e, 0x019e, 0x019e, 0x01ac, 0x01ac, 0x01ac, + 0x0112, 0x011b, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, + 0x012d, 0x012d, 0x012d, 0x0135, 0x013e, 0x013e, 0x0156, 0x0161, + 0x0161, 0x0161, 0x0161, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, + 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x017d, 0x017d, + 0x0183, 0x0183, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, 0x018e, + 0x018e, 0x0196, 0x019e, 0x019e, 0x019e, 0x019e, 0x01ac, 0x01ac, // Entry 80 - BF 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, - 0x01ac, 0x01b4, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01c4, 0x01cd, - 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01dd, 0x01dd, 0x01dd, 0x01e2, - 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01ec, 0x01ec, 0x01ec, - 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0205, 0x020d, 0x020d, - 0x0214, 0x0214, 0x021f, 0x021f, 0x021f, 0x022d, 0x022d, 0x022d, - 0x022d, 0x022d, 0x022d, 0x022d, 0x0233, 0x0233, 0x0233, 0x0233, + 0x01ac, 0x01ac, 0x01b4, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01c4, + 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01dd, 0x01dd, 0x01dd, + 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01ec, 0x01ec, + 0x01ec, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0205, 0x020d, + 0x020d, 0x0214, 0x0214, 0x021f, 0x021f, 0x021f, 0x022d, 0x022d, + 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, // Entry C0 - FF - 0x0233, 0x0233, 0x0233, 0x0241, 0x0241, 0x024a, 0x024f, 0x0257, - 0x0257, 0x0257, 0x0264, 0x026b, 0x026b, 0x026b, 0x026b, 0x026b, - 0x026b, 0x026b, 0x027d, 0x027d, 0x0287, 0x028f, 0x028f, 0x028f, - 0x02b3, 0x02b3, 0x02b3, 0x02b3, 0x02bc, 0x02bc, 0x02bc, 0x02c0, - 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02d1, - 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d9, 0x02d9, 0x02e2, - 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02f0, 0x02f0, - 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f8, + 0x0233, 0x0233, 0x0233, 0x0233, 0x0241, 0x0241, 0x024a, 0x024f, + 0x0257, 0x0257, 0x0257, 0x0264, 0x026b, 0x026b, 0x026b, 0x026b, + 0x026b, 0x026b, 0x026b, 0x027d, 0x027d, 0x0287, 0x028f, 0x028f, + 0x028f, 0x02b3, 0x02b3, 0x02b3, 0x02b3, 0x02bc, 0x02bc, 0x02bc, + 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, + 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d9, 0x02d9, + 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, + 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, // Entry 100 - 13F - 0x02f8, 0x02fe, 0x0309, 0x0329, 0x032d, 0x0335, 0x0335, 0x0335, - 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x033d, - 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, - 0x033d, 0x033d, 0x0341, 0x0341, 0x0341, 0x0347, + 0x02f0, 0x02f8, 0x02f8, 0x02fe, 0x0309, 0x0329, 0x032d, 0x0335, + 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, + 0x0335, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, + 0x033d, 0x033d, 0x033d, 0x033d, 0x0341, 0x0341, 0x0341, 0x0347, }, }, { // jmc @@ -32411,7 +36972,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -32423,33 +36984,33 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // ka @@ -32487,7 +37048,7 @@ var regionHeaders = [220]header{ "dinVenzwilaTigzirin Tiverjiniyin TigliziyinW.D. Tigzirin n VirginyaV" + "yeṭnamVanwatuWallis d FutunaSamwaLyamenMayuṭTafriqt WaddaZambyaZimba" + "bwi", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0024, 0x002f, 0x003f, 0x0045, 0x004c, 0x0053, 0x0059, 0x0059, 0x0061, 0x0072, 0x0079, 0x0080, 0x0085, @@ -32499,33 +37060,33 @@ var regionHeaders = [220]header{ 0x01af, 0x01b3, 0x01b9, 0x01bf, 0x01bf, 0x01c6, 0x01cd, 0x01d4, // Entry 40 - 7F 0x01e7, 0x01ef, 0x01ef, 0x01f8, 0x01ff, 0x0205, 0x0205, 0x020d, - 0x0213, 0x0219, 0x0219, 0x0220, 0x0224, 0x0237, 0x0241, 0x0241, - 0x0247, 0x024c, 0x025d, 0x0263, 0x026a, 0x027a, 0x027a, 0x027f, - 0x0288, 0x0290, 0x0296, 0x029c, 0x02a5, 0x02b5, 0x02bb, 0x02bb, - 0x02c4, 0x02c8, 0x02d4, 0x02da, 0x02da, 0x02da, 0x02e2, 0x02ea, - 0x02ef, 0x02f5, 0x02f5, 0x02fd, 0x0304, 0x030b, 0x030b, 0x0310, - 0x032d, 0x0334, 0x0338, 0x033e, 0x0346, 0x0346, 0x034d, 0x0356, - 0x035b, 0x0360, 0x036a, 0x0372, 0x037a, 0x037f, 0x038f, 0x039c, - // Entry 80 - BF - 0x03a8, 0x03ae, 0x03bf, 0x03c9, 0x03cd, 0x03d3, 0x03dd, 0x03e8, - 0x03f1, 0x03f8, 0x0400, 0x040a, 0x0414, 0x041a, 0x041f, 0x0426, - 0x042c, 0x0433, 0x0433, 0x0433, 0x043e, 0x044f, 0x0457, 0x045b, - 0x0462, 0x046a, 0x046a, 0x0482, 0x048a, 0x0495, 0x049d, 0x04a3, - 0x04a8, 0x04ae, 0x04b4, 0x04ba, 0x04c1, 0x04c9, 0x04d0, 0x04e2, - 0x04e7, 0x04fa, 0x0501, 0x050a, 0x051c, 0x0522, 0x0527, 0x052b, - 0x052f, 0x053e, 0x0544, 0x0549, 0x054d, 0x0560, 0x0577, 0x057e, - 0x0586, 0x058c, 0x059d, 0x05a5, 0x05af, 0x05c2, 0x05ca, 0x05ce, - // Entry C0 - FF - 0x05d6, 0x05dd, 0x05dd, 0x05e5, 0x05eb, 0x05eb, 0x05ef, 0x05f6, - 0x0608, 0x061a, 0x0620, 0x0625, 0x0629, 0x0631, 0x063b, 0x0643, - 0x0643, 0x064b, 0x0654, 0x065e, 0x0665, 0x066c, 0x0673, 0x0673, - 0x0685, 0x068d, 0x068d, 0x0692, 0x069b, 0x069b, 0x06b5, 0x06b9, - 0x06b9, 0x06bf, 0x06c8, 0x06d2, 0x06d9, 0x06e5, 0x06f3, 0x06f8, - 0x06ff, 0x0705, 0x0719, 0x0721, 0x0729, 0x0733, 0x0738, 0x073f, - 0x073f, 0x0742, 0x0749, 0x0753, 0x0763, 0x0777, 0x077f, 0x079f, - 0x07b7, 0x07c0, 0x07c7, 0x07d6, 0x07db, 0x07db, 0x07e1, 0x07e8, - // Entry 100 - 13F - 0x07f5, 0x07fb, 0x0803, + 0x0213, 0x0219, 0x0219, 0x0219, 0x0220, 0x0224, 0x0237, 0x0241, + 0x0241, 0x0247, 0x024c, 0x025d, 0x0263, 0x026a, 0x027a, 0x027a, + 0x027f, 0x0288, 0x0290, 0x0296, 0x029c, 0x02a5, 0x02b5, 0x02bb, + 0x02bb, 0x02c4, 0x02c8, 0x02d4, 0x02da, 0x02da, 0x02da, 0x02e2, + 0x02ea, 0x02ef, 0x02f5, 0x02f5, 0x02fd, 0x0304, 0x030b, 0x030b, + 0x0310, 0x032d, 0x0334, 0x0338, 0x033e, 0x0346, 0x0346, 0x034d, + 0x0356, 0x035b, 0x0360, 0x036a, 0x0372, 0x037a, 0x037f, 0x038f, + // Entry 80 - BF + 0x039c, 0x03a8, 0x03ae, 0x03bf, 0x03c9, 0x03cd, 0x03d3, 0x03dd, + 0x03e8, 0x03f1, 0x03f8, 0x0400, 0x040a, 0x0414, 0x041a, 0x041f, + 0x0426, 0x042c, 0x0433, 0x0433, 0x0433, 0x043e, 0x044f, 0x0457, + 0x045b, 0x0462, 0x046a, 0x046a, 0x0482, 0x048a, 0x0495, 0x049d, + 0x04a3, 0x04a8, 0x04ae, 0x04b4, 0x04ba, 0x04c1, 0x04c9, 0x04d0, + 0x04e2, 0x04e7, 0x04fa, 0x0501, 0x050a, 0x051c, 0x0522, 0x0527, + 0x052b, 0x052f, 0x053e, 0x0544, 0x0549, 0x054d, 0x0560, 0x0577, + 0x057e, 0x0586, 0x058c, 0x059d, 0x05a5, 0x05af, 0x05c2, 0x05ca, + // Entry C0 - FF + 0x05ce, 0x05d6, 0x05dd, 0x05dd, 0x05e5, 0x05eb, 0x05eb, 0x05ef, + 0x05f6, 0x0608, 0x061a, 0x0620, 0x0625, 0x0629, 0x0631, 0x063b, + 0x0643, 0x0643, 0x064b, 0x0654, 0x065e, 0x0665, 0x066c, 0x0673, + 0x0673, 0x0685, 0x068d, 0x068d, 0x0692, 0x069b, 0x069b, 0x06b5, + 0x06b9, 0x06b9, 0x06bf, 0x06c8, 0x06d2, 0x06d9, 0x06e5, 0x06f3, + 0x06f8, 0x06ff, 0x0705, 0x0719, 0x0721, 0x0729, 0x0733, 0x0738, + 0x073f, 0x073f, 0x073f, 0x0742, 0x0749, 0x0753, 0x0763, 0x0777, + 0x077f, 0x079f, 0x07b7, 0x07c0, 0x07c7, 0x07d6, 0x07db, 0x07db, + // Entry 100 - 13F + 0x07e1, 0x07e8, 0x07f5, 0x07fb, 0x0803, }, }, { // kam @@ -32560,7 +37121,7 @@ var regionHeaders = [220]header{ "ntavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiw" + "a vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniM" + "ayotteAfrika KusiniNzambiaNzimbambwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -32572,33 +37133,33 @@ var regionHeaders = [220]header{ 0x01ab, 0x01b2, 0x01c2, 0x01cb, 0x01cb, 0x01d1, 0x01d8, 0x01e0, // Entry 40 - 7F 0x01f3, 0x01fa, 0x01fa, 0x0200, 0x0207, 0x020d, 0x020d, 0x0214, - 0x021c, 0x0224, 0x0224, 0x0229, 0x022d, 0x0240, 0x024a, 0x024a, - 0x0252, 0x0258, 0x0261, 0x0268, 0x026d, 0x0280, 0x0280, 0x0285, - 0x028d, 0x0296, 0x029c, 0x02a0, 0x02a9, 0x02b2, 0x02b9, 0x02b9, - 0x02c2, 0x02c6, 0x02cf, 0x02d5, 0x02d5, 0x02d5, 0x02de, 0x02e5, - 0x02ea, 0x02f2, 0x02f2, 0x02fb, 0x0303, 0x030a, 0x030a, 0x030f, - 0x0334, 0x0339, 0x033f, 0x0347, 0x034d, 0x034d, 0x0354, 0x035b, - 0x0361, 0x0366, 0x0373, 0x037b, 0x0383, 0x0389, 0x039c, 0x03ab, - // Entry 80 - BF - 0x03b7, 0x03be, 0x03ce, 0x03d9, 0x03de, 0x03e6, 0x03f0, 0x03fa, - 0x0403, 0x040a, 0x0410, 0x0418, 0x0421, 0x0428, 0x042d, 0x0433, - 0x0439, 0x0440, 0x0440, 0x0440, 0x0446, 0x0458, 0x0461, 0x0465, - 0x046a, 0x0472, 0x0472, 0x0492, 0x049b, 0x04a4, 0x04af, 0x04b4, - 0x04ba, 0x04c0, 0x04c6, 0x04cd, 0x04d4, 0x04dc, 0x04e3, 0x04ef, - 0x04f5, 0x0506, 0x050d, 0x0516, 0x051e, 0x0523, 0x0529, 0x052e, - 0x0532, 0x053c, 0x0541, 0x0547, 0x054b, 0x0560, 0x0565, 0x056d, - 0x0576, 0x057d, 0x0593, 0x059c, 0x05a5, 0x05d7, 0x05dc, 0x05e1, - // Entry C0 - FF - 0x05e9, 0x05ef, 0x05ef, 0x05f8, 0x05ff, 0x05ff, 0x0604, 0x060a, - 0x060f, 0x0620, 0x062a, 0x0630, 0x0636, 0x063e, 0x0649, 0x0651, - 0x0651, 0x0659, 0x0664, 0x066c, 0x0674, 0x067b, 0x0683, 0x0683, - 0x0697, 0x069f, 0x069f, 0x06a4, 0x06aa, 0x06aa, 0x06c3, 0x06c8, - 0x06c8, 0x06cc, 0x06d4, 0x06df, 0x06e6, 0x06f9, 0x0708, 0x070f, - 0x0714, 0x071b, 0x072d, 0x0733, 0x073a, 0x0742, 0x0749, 0x074f, - 0x074f, 0x0757, 0x075e, 0x076a, 0x0772, 0x078b, 0x0794, 0x07b3, - 0x07d1, 0x07da, 0x07e1, 0x07f0, 0x07f5, 0x07f5, 0x07fb, 0x0802, - // Entry 100 - 13F - 0x080f, 0x0816, 0x0820, + 0x021c, 0x0224, 0x0224, 0x0224, 0x0229, 0x022d, 0x0240, 0x024a, + 0x024a, 0x0252, 0x0258, 0x0261, 0x0268, 0x026d, 0x0280, 0x0280, + 0x0285, 0x028d, 0x0296, 0x029c, 0x02a0, 0x02a9, 0x02b2, 0x02b9, + 0x02b9, 0x02c2, 0x02c6, 0x02cf, 0x02d5, 0x02d5, 0x02d5, 0x02de, + 0x02e5, 0x02ea, 0x02f2, 0x02f2, 0x02fb, 0x0303, 0x030a, 0x030a, + 0x030f, 0x0334, 0x0339, 0x033f, 0x0347, 0x034d, 0x034d, 0x0354, + 0x035b, 0x0361, 0x0366, 0x0373, 0x037b, 0x0383, 0x0389, 0x039c, + // Entry 80 - BF + 0x03ab, 0x03b7, 0x03be, 0x03ce, 0x03d9, 0x03de, 0x03e6, 0x03f0, + 0x03fa, 0x0403, 0x040a, 0x0410, 0x0418, 0x0421, 0x0428, 0x042d, + 0x0433, 0x0439, 0x0440, 0x0440, 0x0440, 0x0446, 0x0458, 0x0461, + 0x0465, 0x046a, 0x0472, 0x0472, 0x0492, 0x049b, 0x04a4, 0x04af, + 0x04b4, 0x04ba, 0x04c0, 0x04c6, 0x04cd, 0x04d4, 0x04dc, 0x04e3, + 0x04ef, 0x04f5, 0x0506, 0x050d, 0x0516, 0x051e, 0x0523, 0x0529, + 0x052e, 0x0532, 0x053c, 0x0541, 0x0547, 0x054b, 0x0560, 0x0565, + 0x056d, 0x0576, 0x057d, 0x0593, 0x059c, 0x05a5, 0x05d7, 0x05dc, + // Entry C0 - FF + 0x05e1, 0x05e9, 0x05ef, 0x05ef, 0x05f8, 0x05ff, 0x05ff, 0x0604, + 0x060a, 0x060f, 0x0620, 0x062a, 0x0630, 0x0636, 0x063e, 0x0649, + 0x0651, 0x0651, 0x0659, 0x0664, 0x066c, 0x0674, 0x067b, 0x0683, + 0x0683, 0x0697, 0x069f, 0x069f, 0x06a4, 0x06aa, 0x06aa, 0x06c3, + 0x06c8, 0x06c8, 0x06cc, 0x06d4, 0x06df, 0x06e6, 0x06f9, 0x0708, + 0x070f, 0x0714, 0x071b, 0x072d, 0x0733, 0x073a, 0x0742, 0x0749, + 0x074f, 0x074f, 0x074f, 0x0757, 0x075e, 0x076a, 0x0772, 0x078b, + 0x0794, 0x07b3, 0x07d1, 0x07da, 0x07e1, 0x07f0, 0x07f5, 0x07f5, + // Entry 100 - 13F + 0x07fb, 0x0802, 0x080f, 0x0816, 0x0820, }, }, { // kde @@ -32634,7 +37195,7 @@ var regionHeaders = [220]header{ "senti na GlenadiniVenezuelaChisiwa Chivihi cha WingalesaChisiwa Chiv" + "ihi cha MalekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMaoleAfili" + "ka KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0028, 0x0034, 0x0046, 0x004d, 0x0054, 0x005b, 0x0061, 0x0061, 0x006a, 0x007b, 0x0082, 0x008b, 0x0090, @@ -32646,122 +37207,122 @@ var regionHeaders = [220]header{ 0x01cd, 0x01d4, 0x01e6, 0x01f0, 0x01f0, 0x01f7, 0x01fe, 0x0206, // Entry 40 - 7F 0x021a, 0x0221, 0x0221, 0x0227, 0x022e, 0x0233, 0x0233, 0x023b, - 0x0243, 0x024b, 0x024b, 0x0250, 0x0254, 0x0268, 0x0273, 0x0273, - 0x027b, 0x0281, 0x0289, 0x0290, 0x0296, 0x02a9, 0x02a9, 0x02ae, - 0x02b6, 0x02bf, 0x02c5, 0x02c9, 0x02d2, 0x02db, 0x02e3, 0x02e3, - 0x02ec, 0x02f0, 0x02f9, 0x02ff, 0x02ff, 0x02ff, 0x0308, 0x030f, - 0x0314, 0x031c, 0x031c, 0x0325, 0x032d, 0x0334, 0x0334, 0x0339, - 0x035f, 0x0364, 0x036b, 0x0373, 0x0379, 0x0379, 0x0381, 0x0388, - 0x038f, 0x0394, 0x03a1, 0x03a9, 0x03b1, 0x03b7, 0x03ca, 0x03da, - // Entry 80 - BF - 0x03e6, 0x03ed, 0x03fe, 0x040a, 0x040f, 0x0417, 0x0421, 0x042b, - 0x0434, 0x043b, 0x0441, 0x0449, 0x0452, 0x0459, 0x045e, 0x0464, - 0x046a, 0x0471, 0x0471, 0x0471, 0x0477, 0x048b, 0x0494, 0x0498, - 0x049d, 0x04a5, 0x04a5, 0x04c6, 0x04d0, 0x04d9, 0x04e2, 0x04e7, - 0x04ed, 0x04f3, 0x04f9, 0x0500, 0x0507, 0x050f, 0x0516, 0x0522, - 0x0529, 0x053c, 0x0544, 0x054d, 0x0555, 0x055a, 0x0560, 0x0565, - 0x0569, 0x0573, 0x0578, 0x057e, 0x0582, 0x0597, 0x059c, 0x05a4, - 0x05ad, 0x05b4, 0x05ca, 0x05d4, 0x05dd, 0x060f, 0x0614, 0x0619, - // Entry C0 - FF - 0x0621, 0x0627, 0x0627, 0x0630, 0x0637, 0x0637, 0x063c, 0x0642, - 0x0648, 0x065b, 0x0665, 0x066b, 0x0671, 0x0679, 0x0684, 0x068c, - 0x068c, 0x0694, 0x069f, 0x06a7, 0x06af, 0x06b6, 0x06be, 0x06be, - 0x06d1, 0x06d9, 0x06d9, 0x06de, 0x06e4, 0x06e4, 0x0700, 0x0705, - 0x0705, 0x0709, 0x0711, 0x071c, 0x0723, 0x0736, 0x0746, 0x074d, - 0x0752, 0x075a, 0x076d, 0x0773, 0x077a, 0x0782, 0x0789, 0x078f, - 0x078f, 0x0797, 0x079e, 0x07ab, 0x07b3, 0x07cc, 0x07d5, 0x07f2, - 0x080e, 0x0817, 0x081e, 0x082d, 0x0832, 0x0832, 0x0838, 0x083d, - // Entry 100 - 13F - 0x084b, 0x0851, 0x0859, + 0x0243, 0x024b, 0x024b, 0x024b, 0x0250, 0x0254, 0x0268, 0x0273, + 0x0273, 0x027b, 0x0281, 0x0289, 0x0290, 0x0296, 0x02a9, 0x02a9, + 0x02ae, 0x02b6, 0x02bf, 0x02c5, 0x02c9, 0x02d2, 0x02db, 0x02e3, + 0x02e3, 0x02ec, 0x02f0, 0x02f9, 0x02ff, 0x02ff, 0x02ff, 0x0308, + 0x030f, 0x0314, 0x031c, 0x031c, 0x0325, 0x032d, 0x0334, 0x0334, + 0x0339, 0x035f, 0x0364, 0x036b, 0x0373, 0x0379, 0x0379, 0x0381, + 0x0388, 0x038f, 0x0394, 0x03a1, 0x03a9, 0x03b1, 0x03b7, 0x03ca, + // Entry 80 - BF + 0x03da, 0x03e6, 0x03ed, 0x03fe, 0x040a, 0x040f, 0x0417, 0x0421, + 0x042b, 0x0434, 0x043b, 0x0441, 0x0449, 0x0452, 0x0459, 0x045e, + 0x0464, 0x046a, 0x0471, 0x0471, 0x0471, 0x0477, 0x048b, 0x0494, + 0x0498, 0x049d, 0x04a5, 0x04a5, 0x04c6, 0x04d0, 0x04d9, 0x04e2, + 0x04e7, 0x04ed, 0x04f3, 0x04f9, 0x0500, 0x0507, 0x050f, 0x0516, + 0x0522, 0x0529, 0x053c, 0x0544, 0x054d, 0x0555, 0x055a, 0x0560, + 0x0565, 0x0569, 0x0573, 0x0578, 0x057e, 0x0582, 0x0597, 0x059c, + 0x05a4, 0x05ad, 0x05b4, 0x05ca, 0x05d4, 0x05dd, 0x060f, 0x0614, + // Entry C0 - FF + 0x0619, 0x0621, 0x0627, 0x0627, 0x0630, 0x0637, 0x0637, 0x063c, + 0x0642, 0x0648, 0x065b, 0x0665, 0x066b, 0x0671, 0x0679, 0x0684, + 0x068c, 0x068c, 0x0694, 0x069f, 0x06a7, 0x06af, 0x06b6, 0x06be, + 0x06be, 0x06d1, 0x06d9, 0x06d9, 0x06de, 0x06e4, 0x06e4, 0x0700, + 0x0705, 0x0705, 0x0709, 0x0711, 0x071c, 0x0723, 0x0736, 0x0746, + 0x074d, 0x0752, 0x075a, 0x076d, 0x0773, 0x077a, 0x0782, 0x0789, + 0x078f, 0x078f, 0x078f, 0x0797, 0x079e, 0x07ab, 0x07b3, 0x07cc, + 0x07d5, 0x07f2, 0x080e, 0x0817, 0x081e, 0x082d, 0x0832, 0x0832, + // Entry 100 - 13F + 0x0838, 0x083d, 0x084b, 0x0851, 0x0859, }, }, { // kea - "Ilha di AsensãuAndoraEmiradus Arabi UniduAfeganistãuAntigua i BarbudaAng" + - "ilaAlbaniaArmeniaAngolaAntartikaArjentinaSamoa MerkanuAustriaAustral" + - "iaArubaIlhas ÅlandAzerbaijãuBosnia-ErzegovinaBarbadusBangladexiBélji" + - "kaBurkina FasuBulgariaBarainBurundiBeninSãu BartolomeuBermudasBrunei" + - "BolíviaKaraibas OlandezasBrazilBaamasButãuIlha BuveBotsuanaBelarusBe" + - "liziKanadáIlhas KokusKongu - KinxasaRepublika Sentru-AfrikanuKongu -" + - " BrazaviliSuisaKosta di MarfinIlhas KukXiliKamarõisXinaKolômbiaIlha " + - "KlipertonKosta RikaKubaKabu VerdiKurasauIlha di NatalXipriRepublika " + - "TxekaAlimanhaDiegu GarsiaDjibutiDinamarkaDominikaRepúblika Dominikan" + - "aArjeliaSeuta i MelilaEkuadorStoniaEjituSara OsidentalIritreiaSpanha" + - "ItiopiaUniãu EuropeiaFinlandiaFidjiIlhas MalvinasMikroneziaIlhas Far" + - "oeFransaGabãuReinu UniduGranadaJiorjiaGiana FransezaGernziGanaJibral" + - "tarGronelándiaGambiaGineGuadalupiGine EkuatorialGresiaJeórjia di Sul" + - " i Ilhas di Sanduixi di SulGuatimalaGuamGine-BisauGianaRejiãu Admini" + - "strativu Special di Hong KongIlha Heard i Ilhas McDonaldOndurasKroas" + - "iaAitíUngriaKanáriasIndoneziaIrlandaIsraelIlha di ManIndiaIlhas Brit" + - "anika di IndikuIrakiIronIslandiaItaliaJersiJamaikaJordaniaJapãuKenia" + - "KirgistonKambodjaKiribatiKamorisSãu Kristovãu i NevisKoreia di Norti" + - "Koreia di SulKueitiIlhas KaimãuKazakistãuLausLibanuSanta LúsiaLixens" + - "tainSri LankaLiberiaLezotuLituaniaLuxemburguLetoniaLibiaMarokusMonak" + - "uMoldaviaMontenegruSãu Martinhu di FransaMadagaskarIlhas MarxalMasid" + - "oniaMaliMianmarMongoliaRejiãu Administrativu Special di MakauIlhas M" + - "arianas di NortiMartinikaMauritaniaMonseratMaltaIlhas MaurisiaMaldiv" + - "asMalauiMéxikuMalaziaMusambikiNamibiaNova KalidoniaNijerIlhas Norfol" + - "kNijeriaNikaráguaOlandaNoruegaNepalNauruNiueNova ZilandiaOmanPanamáP" + - "eruPolinezia FransezaPapua-Nova GineFilipinasPakistãuPuloniaSan Pier" + - "e i MikelonPirkairnPortu RikuPalistinaPurtugalPalauParaguaiKatarIlha" + - "s di OseaniaRunionRomeniaServiaRúsiaRuandaArabia SauditaIlhas Salumo" + - "nSeixelisSudãuSuesiaSingapuraSanta IlenaSloveniaSvalbard i Jan Maien" + - "SlovakiaSera LioaSan MarinuSenegalSumaliaSurinamiSudãu di SulSãu Tum" + - "e i PrinsipiEl SalvadorSãu Martinhu di OlandaSiriaSuazilándiaTristan" + - " da KunhaIlhas Turkas i KaikusTxadiTerras Franses di SulToguTailandi" + - "aTadjikistãuTokelauTimor LestiTurkumenistãuTuniziaTongaTurkiaTrinida" + - "d i TobaguTuvaluTaiuanTanzaniaUkraniaUgandaIlhas Minoris Distantis d" + - "e Stadus UnidusStadus Unidos di MerkaUruguaiUzbekistãuVatikanuSãu Bi" + - "senti i GranadinasVinizuelaIlhas Virjens BritanikasIlhas Virjens Mer" + - "kanasVietnamVanuatuUalis i FutunaSamoaKozovuIemenMaioteAfrika di Sul" + - "ZambiaZimbabuiRejiãu DiskonxeduMunduÁfrikaMerka di NortiMerka di Sul" + - "OseaniaÁfrika OsidentalMerka SentralÁfrika OrientalNorti di ÁfrikaÁf" + - "rika SentralSul di ÁfrikaMerkasNorti di MerkaKaraibasÁzia OrientalSu" + - "l di ÁziaSudesti AziátikuEuropa di SulAustraláziaMelanéziaRejiãu di " + - "MikronéziaPolinéziaÁziaÁzia SentralÁzia OsidentalEuropaEuropa Orient" + - "alEuropa di NortiEuropa OsidentalMerka Latinu", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0016, 0x002a, 0x0036, 0x0047, 0x004d, 0x0054, - 0x005b, 0x0061, 0x006a, 0x0073, 0x0080, 0x0087, 0x0090, 0x0095, - 0x00a1, 0x00ac, 0x00bd, 0x00c5, 0x00cf, 0x00d7, 0x00e3, 0x00eb, - 0x00f1, 0x00f8, 0x00fd, 0x010c, 0x0114, 0x011a, 0x0122, 0x0134, - 0x013a, 0x0140, 0x0146, 0x014f, 0x0157, 0x015e, 0x0164, 0x016b, - 0x0176, 0x0185, 0x019e, 0x01af, 0x01b4, 0x01c3, 0x01cc, 0x01d0, - 0x01d9, 0x01dd, 0x01e6, 0x01f4, 0x01fe, 0x0202, 0x020c, 0x0213, - 0x0220, 0x0225, 0x0234, 0x023c, 0x0248, 0x024f, 0x0258, 0x0260, - // Entry 40 - 7F - 0x0275, 0x027c, 0x028a, 0x0291, 0x0297, 0x029c, 0x02aa, 0x02b2, - 0x02b8, 0x02bf, 0x02ce, 0x02d7, 0x02dc, 0x02ea, 0x02f4, 0x02ff, - 0x0305, 0x030b, 0x0316, 0x031d, 0x0324, 0x0332, 0x0338, 0x033c, - 0x0345, 0x0351, 0x0357, 0x035b, 0x0364, 0x0373, 0x0379, 0x03a3, - 0x03ac, 0x03b0, 0x03ba, 0x03bf, 0x03ea, 0x0405, 0x040c, 0x0413, - 0x0418, 0x041e, 0x0427, 0x0430, 0x0437, 0x043d, 0x0448, 0x044d, - 0x0466, 0x046b, 0x046f, 0x0477, 0x047d, 0x0482, 0x0489, 0x0491, - 0x0497, 0x049c, 0x04a5, 0x04ad, 0x04b5, 0x04bc, 0x04d3, 0x04e2, - // Entry 80 - BF - 0x04ef, 0x04f5, 0x0502, 0x050d, 0x0511, 0x0517, 0x0523, 0x052d, - 0x0536, 0x053d, 0x0543, 0x054b, 0x0555, 0x055c, 0x0561, 0x0568, - 0x056e, 0x0576, 0x0580, 0x0597, 0x05a1, 0x05ad, 0x05b6, 0x05ba, - 0x05c1, 0x05c9, 0x05f0, 0x0607, 0x0610, 0x061a, 0x0622, 0x0627, - 0x0635, 0x063d, 0x0643, 0x064a, 0x0651, 0x065a, 0x0661, 0x066f, - 0x0674, 0x0681, 0x0688, 0x0692, 0x0698, 0x069f, 0x06a4, 0x06a9, - 0x06ad, 0x06ba, 0x06be, 0x06c5, 0x06c9, 0x06db, 0x06ea, 0x06f3, - 0x06fc, 0x0703, 0x0716, 0x071e, 0x0728, 0x0731, 0x0739, 0x073e, - // Entry C0 - FF - 0x0746, 0x074b, 0x075b, 0x0761, 0x0768, 0x076e, 0x0774, 0x077a, - 0x0788, 0x0795, 0x079d, 0x07a3, 0x07a9, 0x07b2, 0x07bd, 0x07c5, - 0x07d9, 0x07e1, 0x07ea, 0x07f4, 0x07fb, 0x0802, 0x080a, 0x0817, - 0x082b, 0x0836, 0x084d, 0x0852, 0x085e, 0x086e, 0x0883, 0x0888, - 0x089d, 0x08a1, 0x08aa, 0x08b6, 0x08bd, 0x08c8, 0x08d6, 0x08dd, - 0x08e2, 0x08e8, 0x08f9, 0x08ff, 0x0905, 0x090d, 0x0914, 0x091a, - 0x0942, 0x0958, 0x095f, 0x096a, 0x0972, 0x098b, 0x0994, 0x09ac, - 0x09c2, 0x09c9, 0x09d0, 0x09de, 0x09e3, 0x09e9, 0x09ee, 0x09f4, - // Entry 100 - 13F - 0x0a01, 0x0a07, 0x0a0f, 0x0a21, 0x0a26, 0x0a2d, 0x0a3b, 0x0a47, - 0x0a4e, 0x0a5f, 0x0a6c, 0x0a7c, 0x0a8c, 0x0a9b, 0x0aa9, 0x0aaf, - 0x0abd, 0x0ac5, 0x0ad3, 0x0adf, 0x0af0, 0x0afd, 0x0b09, 0x0b13, - 0x0b29, 0x0b33, 0x0b38, 0x0b45, 0x0b54, 0x0b5a, 0x0b69, 0x0b78, - 0x0b88, 0x0b94, + "Ilha di AsensãuAndoraEmiradus Árabi UniduAfeganistãuAntigua i BarbudaAng" + + "ilaAlbániaArméniaAngolaAntártikaArjentinaSamoa MerkanuÁustriaAustrál" + + "iaArubaIlhas ÅlandAzerbaijãuBósnia i ErzegovinaBarbadusBangladexiBél" + + "jikaBurkina FasuBulgáriaBarainBurundiBeninSãu BartolomeuBermudasBrun" + + "eiBolíviaKaraibas OlandezasBrazilBaamasButãuIlha BuveBotsuanaBelarus" + + "BeliziKanadáIlhas Kokus (Keeling)Kongu - KinxasaRepublika Sentru-Afr" + + "ikanuKongu - BrazaviliSuisaKosta di MarfinIlhas KukXiliKamarõisXinaK" + + "olômbiaIlha KlipertonKosta RikaKubaKabu VerdiKurasauIlha di NatalXip" + + "riTxékiaAlimanhaDiegu GarsiaDjibutiDinamarkaDominikaRepúblika Domini" + + "kanaArjéliaSeuta i MelilhaEkuadorStóniaEjituSara OsidentalIritreiaSp" + + "anhaEtiópiaUniãu EuropeiaFinlándiaFidjiIlhas MalvinasMikronéziaIlhas" + + " FaroeFransaGabãuReinu UniduGranadaJiórjiaGiana FransezaGernziGanaJi" + + "braltarGronelándiaGámbiaGineGuadalupiGine EkuatorialGrésiaIlhas Jeór" + + "jia di Sul i Sanduixi di SulGuatimalaGuamGine-BisauGianaRejiãu Admin" + + "istrativu Spesial di Hong KongIlhas Heard i McDonaldOndurasKroásiaAi" + + "tíUngriaKanáriasIndonéziaIrlandaIsraelIlha di ManÍndiaIlhas Británik" + + "as di ÍndikuIrakiIrãuIslándiaItáliaJersiJamaikaJordániaJapãuKéniaKir" + + "gistãuKambodjaKiribatiKamorisSãu Kristovãu i NevisKoreia di NortiKor" + + "eia di SulKueitiIlhas KaimãuKazakistãuLausLíbanuSanta LúsiaLixenstai" + + "nSri LankaLibériaLezotuLituániaLuxemburguLetóniaLíbiaMarokusMónakuMo" + + "ldáviaMontenegruSãu Martinhu di FransaMadagaskarIlhas MarxalMasidóni" + + "aMaliMianmar (Birmánia)MongóliaRejiãu Administrativu Spesial di Maka" + + "uIlhas Marianas di NortiMartinikaMauritániaMonseratMaltaMaurísiaMald" + + "ivasMalauiMéxikuMaláziaMusambikiNamíbiaNova KalidóniaNijerIlhas Norf" + + "olkNijériaNikaráguaOlandaNoruegaNepalNauruNiueNova ZilándiaOmanPanam" + + "áPeruPolinézia FransezaPapua-Nova GineFilipinasPakistãuPulóniaSan P" + + "iere i MikelonPirkairnPortu RikuPalistinaPurtugalPalauParaguaiKatarI" + + "lhas di OseaniaRuniãuRuméniaSérviaRúsiaRuandaArábia SauditaIlhas Sal" + + "umãuSeixelisSudãuSuésiaSingapuraSanta IlenaSlovéniaSvalbard i Jan Ma" + + "ienSlovákiaSera LioaSan MarinuSenegalSumáliaSurinamiSudãu di SulSãu " + + "Tume i PrínsipiEl SalvadorSãu Martinhu di OlandaSíriaSuazilándiaTris" + + "tan da KunhaIlhas Turkas i KaikusTxadiTerras Franses di SulToguTailá" + + "ndiaTadjikistãuTokelauTimor LestiTurkumenistãuTuníziaTongaTurkiaTrin" + + "idad i TobaguTuvaluTaiuanTanzániaUkrániaUgandaIlhas Minoris Distanti" + + "s de Stadus UnidusStadus Unidos di MerkaUruguaiUzbekistãuVatikanuSãu" + + " Bisenti i GranadinasVinizuelaIlhas Virjens BritánikasIlhas Virjens " + + "MerkanasVietnamVanuatuUalis i FutunaSamoaKozovuIémenMaioteÁfrika di " + + "SulZámbiaZimbábuiRejiãu DiskonxeduMunduÁfrikaMerka di NortiMerka di " + + "SulOseaniaÁfrika OsidentalMerka SentralÁfrika OrientalNorti di Áfrik" + + "aÁfrika SentralSul di ÁfrikaMerkasNorti di MerkaKaraibasÁzia Orienta" + + "lSul di ÁziaSudesti AziátikuEuropa di SulAustraláziaMelanéziaRejiãu " + + "di MikronéziaPolinéziaÁziaÁzia SentralÁzia OsidentalEuropaEuropa Ori" + + "entalEuropa di NortiEuropa OsidentalMerka Latinu", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0010, 0x0016, 0x002b, 0x0037, 0x0048, 0x004e, 0x0056, + 0x005e, 0x0064, 0x006e, 0x0077, 0x0084, 0x008c, 0x0096, 0x009b, + 0x00a7, 0x00b2, 0x00c6, 0x00ce, 0x00d8, 0x00e0, 0x00ec, 0x00f5, + 0x00fb, 0x0102, 0x0107, 0x0116, 0x011e, 0x0124, 0x012c, 0x013e, + 0x0144, 0x014a, 0x0150, 0x0159, 0x0161, 0x0168, 0x016e, 0x0175, + 0x018a, 0x0199, 0x01b2, 0x01c3, 0x01c8, 0x01d7, 0x01e0, 0x01e4, + 0x01ed, 0x01f1, 0x01fa, 0x0208, 0x0212, 0x0216, 0x0220, 0x0227, + 0x0234, 0x0239, 0x0240, 0x0248, 0x0254, 0x025b, 0x0264, 0x026c, + // Entry 40 - 7F + 0x0281, 0x0289, 0x0298, 0x029f, 0x02a6, 0x02ab, 0x02b9, 0x02c1, + 0x02c7, 0x02cf, 0x02de, 0x02de, 0x02e8, 0x02ed, 0x02fb, 0x0306, + 0x0311, 0x0317, 0x031d, 0x0328, 0x032f, 0x0337, 0x0345, 0x034b, + 0x034f, 0x0358, 0x0364, 0x036b, 0x036f, 0x0378, 0x0387, 0x038e, + 0x03b5, 0x03be, 0x03c2, 0x03cc, 0x03d1, 0x03fc, 0x0412, 0x0419, + 0x0421, 0x0426, 0x042c, 0x0435, 0x043f, 0x0446, 0x044c, 0x0457, + 0x045d, 0x0479, 0x047e, 0x0483, 0x048c, 0x0493, 0x0498, 0x049f, + 0x04a8, 0x04ae, 0x04b4, 0x04be, 0x04c6, 0x04ce, 0x04d5, 0x04ec, + // Entry 80 - BF + 0x04fb, 0x0508, 0x050e, 0x051b, 0x0526, 0x052a, 0x0531, 0x053d, + 0x0547, 0x0550, 0x0558, 0x055e, 0x0567, 0x0571, 0x0579, 0x057f, + 0x0586, 0x058d, 0x0596, 0x05a0, 0x05b7, 0x05c1, 0x05cd, 0x05d7, + 0x05db, 0x05ee, 0x05f7, 0x061e, 0x0635, 0x063e, 0x0649, 0x0651, + 0x0656, 0x065f, 0x0667, 0x066d, 0x0674, 0x067c, 0x0685, 0x068d, + 0x069c, 0x06a1, 0x06ae, 0x06b6, 0x06c0, 0x06c6, 0x06cd, 0x06d2, + 0x06d7, 0x06db, 0x06e9, 0x06ed, 0x06f4, 0x06f8, 0x070b, 0x071a, + 0x0723, 0x072c, 0x0734, 0x0747, 0x074f, 0x0759, 0x0762, 0x076a, + // Entry C0 - FF + 0x076f, 0x0777, 0x077c, 0x078c, 0x0793, 0x079b, 0x07a2, 0x07a8, + 0x07ae, 0x07bd, 0x07cb, 0x07d3, 0x07d9, 0x07e0, 0x07e9, 0x07f4, + 0x07fd, 0x0811, 0x081a, 0x0823, 0x082d, 0x0834, 0x083c, 0x0844, + 0x0851, 0x0866, 0x0871, 0x0888, 0x088e, 0x089a, 0x08aa, 0x08bf, + 0x08c4, 0x08d9, 0x08dd, 0x08e7, 0x08f3, 0x08fa, 0x0905, 0x0913, + 0x091b, 0x0920, 0x0926, 0x0937, 0x093d, 0x0943, 0x094c, 0x0954, + 0x095a, 0x0982, 0x0982, 0x0998, 0x099f, 0x09aa, 0x09b2, 0x09cb, + 0x09d4, 0x09ed, 0x0a03, 0x0a0a, 0x0a11, 0x0a1f, 0x0a24, 0x0a2a, + // Entry 100 - 13F + 0x0a30, 0x0a36, 0x0a44, 0x0a4b, 0x0a54, 0x0a66, 0x0a6b, 0x0a72, + 0x0a80, 0x0a8c, 0x0a93, 0x0aa4, 0x0ab1, 0x0ac1, 0x0ad1, 0x0ae0, + 0x0aee, 0x0af4, 0x0b02, 0x0b0a, 0x0b18, 0x0b24, 0x0b35, 0x0b42, + 0x0b4e, 0x0b58, 0x0b6e, 0x0b78, 0x0b7d, 0x0b8a, 0x0b99, 0x0b9f, + 0x0bae, 0x0bbd, 0x0bcd, 0x0bd9, }, }, { // khq @@ -32796,7 +37357,7 @@ var regionHeaders = [220]header{ "aamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik " + "Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa " + "Afriki LabooZambiZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, @@ -32808,33 +37369,33 @@ var regionHeaders = [220]header{ 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e6, // Entry 40 - 7F 0x01f5, 0x01fd, 0x01fd, 0x0205, 0x020c, 0x0211, 0x0211, 0x0218, - 0x0220, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, 0x0249, - 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, 0x028b, - 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, 0x02c4, - 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, 0x02f2, - 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, 0x0320, - 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, 0x035f, - 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, 0x03af, - // Entry 80 - BF - 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, 0x03fe, - 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, 0x0438, - 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, 0x046c, - 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, 0x04b3, - 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, 0x04fc, - 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, 0x053c, - 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, 0x0588, - 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, 0x05e8, - // Entry C0 - FF - 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, 0x0618, - 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, 0x065c, - 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, 0x068e, - 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, 0x06dc, - 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, 0x071b, - 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, 0x075b, - 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, 0x07b8, 0x07ce, - 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, 0x080d, 0x0814, - // Entry 100 - 13F - 0x0826, 0x082b, 0x0833, + 0x0220, 0x0227, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, + 0x0249, 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, + 0x028b, 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, + 0x02c4, 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, + 0x02f2, 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, + 0x0320, 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, + 0x035f, 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, + // Entry 80 - BF + 0x03af, 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, + 0x03fe, 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, + 0x0438, 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, + 0x046c, 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, + 0x04b3, 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, + 0x04fc, 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, + 0x053c, 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, + 0x0588, 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, + // Entry C0 - FF + 0x05e8, 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, + 0x0618, 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, + 0x065c, 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, + 0x068e, 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, + 0x06dc, 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, + 0x071b, 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, + 0x075b, 0x075b, 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, + 0x07b8, 0x07ce, 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, + // Entry 100 - 13F + 0x080d, 0x0814, 0x0826, 0x082b, 0x0833, }, }, { // ki @@ -32869,7 +37430,7 @@ var regionHeaders = [220]header{ "ikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya Uingere" + "zaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoa" + "YemeniMayotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -32881,33 +37442,33 @@ var regionHeaders = [220]header{ 0x01ac, 0x01b3, 0x01c3, 0x01cc, 0x01cc, 0x01d2, 0x01d9, 0x01e1, // Entry 40 - 7F 0x01f4, 0x01fb, 0x01fb, 0x0201, 0x0208, 0x020d, 0x020d, 0x0214, - 0x021c, 0x0224, 0x0224, 0x0229, 0x022d, 0x0240, 0x024a, 0x024a, - 0x0252, 0x0258, 0x0260, 0x0267, 0x026c, 0x027f, 0x027f, 0x0284, - 0x028c, 0x0295, 0x029b, 0x029f, 0x02a8, 0x02b1, 0x02b8, 0x02b8, - 0x02c1, 0x02c5, 0x02ce, 0x02d4, 0x02d4, 0x02d4, 0x02dd, 0x02e4, - 0x02e9, 0x02f1, 0x02f1, 0x02fa, 0x0302, 0x0309, 0x0309, 0x030e, - 0x0333, 0x0338, 0x033e, 0x0346, 0x034c, 0x034c, 0x0353, 0x035d, - 0x0364, 0x0369, 0x0376, 0x037e, 0x0386, 0x038c, 0x039f, 0x03ae, - // Entry 80 - BF - 0x03ba, 0x03c1, 0x03d2, 0x03dd, 0x03e2, 0x03ea, 0x03f4, 0x03fe, - 0x0407, 0x040e, 0x0414, 0x041c, 0x0425, 0x042c, 0x0431, 0x0437, - 0x043d, 0x0444, 0x0444, 0x0444, 0x044a, 0x045c, 0x0465, 0x0469, - 0x046e, 0x0476, 0x0476, 0x0496, 0x049f, 0x04a8, 0x04b3, 0x04b8, - 0x04be, 0x04c4, 0x04ca, 0x04d1, 0x04d8, 0x04e0, 0x04e8, 0x04f4, - 0x04fa, 0x050b, 0x0514, 0x051d, 0x0525, 0x052a, 0x0530, 0x0535, - 0x0539, 0x0543, 0x0548, 0x054e, 0x0552, 0x0567, 0x056c, 0x0574, - 0x057d, 0x0584, 0x059a, 0x05a3, 0x05ac, 0x05de, 0x05e3, 0x05e8, - // Entry C0 - FF - 0x05f0, 0x05f6, 0x05f6, 0x05ff, 0x0606, 0x0606, 0x060b, 0x0611, - 0x0616, 0x0628, 0x0632, 0x0638, 0x063e, 0x0646, 0x0651, 0x0659, - 0x0659, 0x0661, 0x066c, 0x0674, 0x067c, 0x0683, 0x068b, 0x068b, - 0x069f, 0x06a7, 0x06a7, 0x06ac, 0x06b2, 0x06b2, 0x06cb, 0x06d0, - 0x06d0, 0x06d4, 0x06dc, 0x06e7, 0x06ee, 0x0701, 0x0710, 0x0717, - 0x071c, 0x0723, 0x0735, 0x073b, 0x0742, 0x074a, 0x0751, 0x0757, - 0x0757, 0x075e, 0x0765, 0x0771, 0x0779, 0x0792, 0x079b, 0x07ba, - 0x07d8, 0x07e1, 0x07e8, 0x07f7, 0x07fc, 0x07fc, 0x0802, 0x0809, - // Entry 100 - 13F - 0x0816, 0x081c, 0x0824, + 0x021c, 0x0224, 0x0224, 0x0224, 0x0229, 0x022d, 0x0240, 0x024a, + 0x024a, 0x0252, 0x0258, 0x0260, 0x0267, 0x026c, 0x027f, 0x027f, + 0x0284, 0x028c, 0x0295, 0x029b, 0x029f, 0x02a8, 0x02b1, 0x02b8, + 0x02b8, 0x02c1, 0x02c5, 0x02ce, 0x02d4, 0x02d4, 0x02d4, 0x02dd, + 0x02e4, 0x02e9, 0x02f1, 0x02f1, 0x02fa, 0x0302, 0x0309, 0x0309, + 0x030e, 0x0333, 0x0338, 0x033e, 0x0346, 0x034c, 0x034c, 0x0353, + 0x035d, 0x0364, 0x0369, 0x0376, 0x037e, 0x0386, 0x038c, 0x039f, + // Entry 80 - BF + 0x03ae, 0x03ba, 0x03c1, 0x03d2, 0x03dd, 0x03e2, 0x03ea, 0x03f4, + 0x03fe, 0x0407, 0x040e, 0x0414, 0x041c, 0x0425, 0x042c, 0x0431, + 0x0437, 0x043d, 0x0444, 0x0444, 0x0444, 0x044a, 0x045c, 0x0465, + 0x0469, 0x046e, 0x0476, 0x0476, 0x0496, 0x049f, 0x04a8, 0x04b3, + 0x04b8, 0x04be, 0x04c4, 0x04ca, 0x04d1, 0x04d8, 0x04e0, 0x04e8, + 0x04f4, 0x04fa, 0x050b, 0x0514, 0x051d, 0x0525, 0x052a, 0x0530, + 0x0535, 0x0539, 0x0543, 0x0548, 0x054e, 0x0552, 0x0567, 0x056c, + 0x0574, 0x057d, 0x0584, 0x059a, 0x05a3, 0x05ac, 0x05de, 0x05e3, + // Entry C0 - FF + 0x05e8, 0x05f0, 0x05f6, 0x05f6, 0x05ff, 0x0606, 0x0606, 0x060b, + 0x0611, 0x0616, 0x0628, 0x0632, 0x0638, 0x063e, 0x0646, 0x0651, + 0x0659, 0x0659, 0x0661, 0x066c, 0x0674, 0x067c, 0x0683, 0x068b, + 0x068b, 0x069f, 0x06a7, 0x06a7, 0x06ac, 0x06b2, 0x06b2, 0x06cb, + 0x06d0, 0x06d0, 0x06d4, 0x06dc, 0x06e7, 0x06ee, 0x0701, 0x0710, + 0x0717, 0x071c, 0x0723, 0x0735, 0x073b, 0x0742, 0x074a, 0x0751, + 0x0757, 0x0757, 0x0757, 0x075e, 0x0765, 0x0771, 0x0779, 0x0792, + 0x079b, 0x07ba, 0x07d8, 0x07e1, 0x07e8, 0x07f7, 0x07fc, 0x07fc, + // Entry 100 - 13F + 0x0802, 0x0809, 0x0816, 0x081c, 0x0824, }, }, { // kk @@ -32928,7 +37489,7 @@ var regionHeaders = [220]header{ }, { // kl "Kalaallit Nunaat", - []uint16{ // 90 elements + []uint16{ // 91 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -32942,7 +37503,7 @@ var regionHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0010, + 0x0000, 0x0000, 0x0010, }, }, { // kln @@ -33000,7 +37561,7 @@ var regionHeaders = [220]header{ "sh VirginIkwemweiyotab AmerikaEmetab VietnamEmetab VanuatuEmetab Wal" + "is ak FutunaEmetab SamoaEmetab YemenEmetab MayotteEmetab Afrika nebo" + " Murot taiEmetab ZambiaEmetab Zimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x000e, 0x002a, 0x003c, 0x0055, 0x0064, 0x0072, 0x0080, 0x008d, 0x008d, 0x009d, 0x00b2, 0x00c0, 0x00d0, 0x00dc, @@ -33012,33 +37573,33 @@ var regionHeaders = [220]header{ 0x02f4, 0x0301, 0x0316, 0x0324, 0x0324, 0x0333, 0x0341, 0x0350, // Entry 40 - 7F 0x0369, 0x0377, 0x0377, 0x0385, 0x0393, 0x03a0, 0x03a0, 0x03ae, - 0x03ba, 0x03c9, 0x03c9, 0x03d7, 0x03e2, 0x03f7, 0x0408, 0x0408, - 0x0415, 0x0421, 0x0440, 0x044e, 0x045c, 0x0477, 0x0477, 0x0483, - 0x0493, 0x04a3, 0x04b0, 0x04bd, 0x04ce, 0x04e6, 0x04f3, 0x04f3, - 0x0503, 0x050e, 0x0522, 0x052f, 0x052f, 0x052f, 0x053e, 0x054c, - 0x0558, 0x0566, 0x0566, 0x0576, 0x0584, 0x0591, 0x0591, 0x059d, - 0x05cd, 0x05d8, 0x05e3, 0x05f1, 0x05fd, 0x05fd, 0x060b, 0x0618, - 0x0624, 0x0630, 0x0641, 0x0650, 0x065f, 0x066d, 0x0688, 0x06a5, - // Entry 80 - BF - 0x06c0, 0x06cd, 0x06e0, 0x06f1, 0x06fc, 0x070a, 0x0719, 0x072d, - 0x073d, 0x074b, 0x0759, 0x0769, 0x077a, 0x0787, 0x0793, 0x07a1, - 0x07ae, 0x07bc, 0x07bc, 0x07bc, 0x07cd, 0x07e3, 0x07f3, 0x07fe, - 0x080c, 0x081b, 0x081b, 0x0841, 0x0852, 0x0863, 0x0874, 0x0880, - 0x0890, 0x089f, 0x08ac, 0x08b9, 0x08c8, 0x08d9, 0x08e7, 0x08fb, - 0x0907, 0x091c, 0x092a, 0x093a, 0x0947, 0x0954, 0x0960, 0x096c, - 0x0977, 0x0989, 0x0994, 0x09a1, 0x09ac, 0x09ca, 0x09e1, 0x09f3, - 0x0a02, 0x0a0f, 0x0a30, 0x0a3f, 0x0a51, 0x0a61, 0x0a70, 0x0a7c, - // Entry C0 - FF - 0x0a8b, 0x0a97, 0x0a97, 0x0aa6, 0x0ab4, 0x0ab4, 0x0ac1, 0x0ace, - 0x0ae1, 0x0af6, 0x0b07, 0x0b13, 0x0b20, 0x0b30, 0x0b46, 0x0b55, - 0x0b55, 0x0b64, 0x0b77, 0x0b88, 0x0b96, 0x0ba4, 0x0bb3, 0x0bb3, - 0x0bd2, 0x0be4, 0x0be4, 0x0bf0, 0x0c00, 0x0c00, 0x0c1d, 0x0c28, - 0x0c28, 0x0c33, 0x0c42, 0x0c53, 0x0c61, 0x0c7c, 0x0c8f, 0x0c9d, - 0x0ca9, 0x0cb6, 0x0ccf, 0x0cdc, 0x0ce9, 0x0cf8, 0x0d07, 0x0d14, - 0x0d14, 0x0d22, 0x0d30, 0x0d43, 0x0d51, 0x0d75, 0x0d85, 0x0da0, - 0x0db5, 0x0dc3, 0x0dd1, 0x0de7, 0x0df3, 0x0df3, 0x0dff, 0x0e0d, - // Entry 100 - 13F - 0x0e29, 0x0e36, 0x0e45, + 0x03ba, 0x03c9, 0x03c9, 0x03c9, 0x03d7, 0x03e2, 0x03f7, 0x0408, + 0x0408, 0x0415, 0x0421, 0x0440, 0x044e, 0x045c, 0x0477, 0x0477, + 0x0483, 0x0493, 0x04a3, 0x04b0, 0x04bd, 0x04ce, 0x04e6, 0x04f3, + 0x04f3, 0x0503, 0x050e, 0x0522, 0x052f, 0x052f, 0x052f, 0x053e, + 0x054c, 0x0558, 0x0566, 0x0566, 0x0576, 0x0584, 0x0591, 0x0591, + 0x059d, 0x05cd, 0x05d8, 0x05e3, 0x05f1, 0x05fd, 0x05fd, 0x060b, + 0x0618, 0x0624, 0x0630, 0x0641, 0x0650, 0x065f, 0x066d, 0x0688, + // Entry 80 - BF + 0x06a5, 0x06c0, 0x06cd, 0x06e0, 0x06f1, 0x06fc, 0x070a, 0x0719, + 0x072d, 0x073d, 0x074b, 0x0759, 0x0769, 0x077a, 0x0787, 0x0793, + 0x07a1, 0x07ae, 0x07bc, 0x07bc, 0x07bc, 0x07cd, 0x07e3, 0x07f3, + 0x07fe, 0x080c, 0x081b, 0x081b, 0x0841, 0x0852, 0x0863, 0x0874, + 0x0880, 0x0890, 0x089f, 0x08ac, 0x08b9, 0x08c8, 0x08d9, 0x08e7, + 0x08fb, 0x0907, 0x091c, 0x092a, 0x093a, 0x0947, 0x0954, 0x0960, + 0x096c, 0x0977, 0x0989, 0x0994, 0x09a1, 0x09ac, 0x09ca, 0x09e1, + 0x09f3, 0x0a02, 0x0a0f, 0x0a30, 0x0a3f, 0x0a51, 0x0a61, 0x0a70, + // Entry C0 - FF + 0x0a7c, 0x0a8b, 0x0a97, 0x0a97, 0x0aa6, 0x0ab4, 0x0ab4, 0x0ac1, + 0x0ace, 0x0ae1, 0x0af6, 0x0b07, 0x0b13, 0x0b20, 0x0b30, 0x0b46, + 0x0b55, 0x0b55, 0x0b64, 0x0b77, 0x0b88, 0x0b96, 0x0ba4, 0x0bb3, + 0x0bb3, 0x0bd2, 0x0be4, 0x0be4, 0x0bf0, 0x0c00, 0x0c00, 0x0c1d, + 0x0c28, 0x0c28, 0x0c33, 0x0c42, 0x0c53, 0x0c61, 0x0c7c, 0x0c8f, + 0x0c9d, 0x0ca9, 0x0cb6, 0x0ccf, 0x0cdc, 0x0ce9, 0x0cf8, 0x0d07, + 0x0d14, 0x0d14, 0x0d14, 0x0d22, 0x0d30, 0x0d43, 0x0d51, 0x0d75, + 0x0d85, 0x0da0, 0x0db5, 0x0dc3, 0x0dd1, 0x0de7, 0x0df3, 0x0df3, + // Entry 100 - 13F + 0x0dff, 0x0e0d, 0x0e29, 0x0e36, 0x0e45, }, }, { // km @@ -33053,9 +37614,34 @@ var regionHeaders = [220]header{ koRegionStr, koRegionIdx, }, + { // ko-KP + "조선민주주의인민공화국", + []uint16{ // 129 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0021, + }, + }, { // kok "भारत", - []uint16{ // 112 elements + []uint16{ // 113 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -33071,7 +37657,8 @@ var regionHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, }, }, { // ks @@ -33120,7 +37707,7 @@ var regionHeaders = [220]header{ "سٹریلیا تہٕ نِوزِلینٛڑمٮ۪لَنیٖشِیامَیکرونَیشِیَن خٕطہٕپالنیشِیاایشی" + "امرکٔزی ایشیامَغرِبی ایشیایوٗرَپمشرِقی یوٗرَپشُمٲلی یوٗرَپمغرِبی یو" + "ٗرَپلاطیٖنی اَمریٖکا تہٕ کیرَبیٖن", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0010, 0x0032, 0x0048, 0x0072, 0x0082, 0x0096, 0x00a8, 0x00b4, 0x00c8, 0x00da, 0x00f7, 0x0103, 0x0115, 0x0123, @@ -33132,37 +37719,37 @@ var regionHeaders = [220]header{ 0x0453, 0x0461, 0x047c, 0x0488, 0x0488, 0x0496, 0x04a8, 0x04b8, // Entry 40 - 7F 0x04dd, 0x04f1, 0x04f1, 0x0501, 0x0513, 0x051d, 0x0536, 0x0546, - 0x0550, 0x0562, 0x0562, 0x0572, 0x057a, 0x059d, 0x059d, 0x059d, - 0x05a9, 0x05b3, 0x05d4, 0x05e2, 0x05f0, 0x060d, 0x061f, 0x0627, - 0x0639, 0x064d, 0x065b, 0x0663, 0x0675, 0x0696, 0x06a0, 0x06ef, - 0x06ff, 0x0709, 0x071e, 0x072a, 0x0759, 0x079f, 0x07b3, 0x07c3, - 0x07cd, 0x07db, 0x07db, 0x07f1, 0x0805, 0x0815, 0x082b, 0x083f, - 0x0870, 0x087c, 0x0888, 0x089c, 0x08a6, 0x08b0, 0x08be, 0x08be, - 0x08c8, 0x08d4, 0x08e6, 0x08f8, 0x0908, 0x0916, 0x093d, 0x0956, - // Entry 80 - BF - 0x096f, 0x0979, 0x0992, 0x09a6, 0x09ac, 0x09ba, 0x09d3, 0x09e9, - 0x09ff, 0x0a11, 0x0a1f, 0x0a35, 0x0a4b, 0x0a5b, 0x0a65, 0x0a71, - 0x0a7f, 0x0a91, 0x0aa9, 0x0ac0, 0x0ad4, 0x0aef, 0x0b05, 0x0b0d, - 0x0b26, 0x0b3a, 0x0b60, 0x0b8c, 0x0b9c, 0x0bb0, 0x0bc4, 0x0bce, - 0x0bdc, 0x0bea, 0x0bf4, 0x0c04, 0x0c14, 0x0c24, 0x0c34, 0x0c4f, - 0x0c5b, 0x0c76, 0x0c88, 0x0c9c, 0x0cb2, 0x0cbc, 0x0cc6, 0x0cd2, - 0x0cda, 0x0cf0, 0x0cfa, 0x0d06, 0x0d12, 0x0d35, 0x0d55, 0x0d67, - 0x0d77, 0x0d85, 0x0db4, 0x0dd5, 0x0de8, 0x0dfa, 0x0e0a, 0x0e14, - // Entry C0 - FF - 0x0e22, 0x0e2c, 0x0e51, 0x0e65, 0x0e75, 0x0e83, 0x0e8b, 0x0e9d, - 0x0eb4, 0x0ed1, 0x0edf, 0x0eeb, 0x0ef9, 0x0f0f, 0x0f28, 0x0f3c, - 0x0f67, 0x0f7b, 0x0f8f, 0x0fa2, 0x0fb0, 0x0fc0, 0x0fce, 0x0fce, - 0x0ff3, 0x100c, 0x100c, 0x1012, 0x1026, 0x1026, 0x1051, 0x1057, - 0x1087, 0x108f, 0x10a1, 0x10b3, 0x10c1, 0x10dc, 0x10f2, 0x1102, - 0x110e, 0x1118, 0x113e, 0x114e, 0x115a, 0x116c, 0x117c, 0x118e, - 0x11e2, 0x1203, 0x1211, 0x1227, 0x123e, 0x1277, 0x1289, 0x12b3, - 0x12da, 0x12e8, 0x12f8, 0x131c, 0x1328, 0x1328, 0x1332, 0x133c, - // Entry 100 - 13F - 0x135b, 0x1369, 0x1377, 0x13ae, 0x13b8, 0x13c8, 0x13e5, 0x1406, - 0x1414, 0x1435, 0x1452, 0x1471, 0x148e, 0x14a7, 0x14c4, 0x14d6, - 0x14fe, 0x1510, 0x1529, 0x1540, 0x1568, 0x1581, 0x15ad, 0x15c5, - 0x15ec, 0x15fe, 0x1608, 0x161f, 0x1638, 0x1644, 0x165d, 0x1676, - 0x168f, 0x16c6, + 0x0550, 0x0562, 0x0562, 0x0562, 0x0572, 0x057a, 0x059d, 0x059d, + 0x059d, 0x05a9, 0x05b3, 0x05d4, 0x05e2, 0x05f0, 0x060d, 0x061f, + 0x0627, 0x0639, 0x064d, 0x065b, 0x0663, 0x0675, 0x0696, 0x06a0, + 0x06ef, 0x06ff, 0x0709, 0x071e, 0x072a, 0x0759, 0x079f, 0x07b3, + 0x07c3, 0x07cd, 0x07db, 0x07db, 0x07f1, 0x0805, 0x0815, 0x082b, + 0x083f, 0x0870, 0x087c, 0x0888, 0x089c, 0x08a6, 0x08b0, 0x08be, + 0x08be, 0x08c8, 0x08d4, 0x08e6, 0x08f8, 0x0908, 0x0916, 0x093d, + // Entry 80 - BF + 0x0956, 0x096f, 0x0979, 0x0992, 0x09a6, 0x09ac, 0x09ba, 0x09d3, + 0x09e9, 0x09ff, 0x0a11, 0x0a1f, 0x0a35, 0x0a4b, 0x0a5b, 0x0a65, + 0x0a71, 0x0a7f, 0x0a91, 0x0aa9, 0x0ac0, 0x0ad4, 0x0aef, 0x0b05, + 0x0b0d, 0x0b26, 0x0b3a, 0x0b60, 0x0b8c, 0x0b9c, 0x0bb0, 0x0bc4, + 0x0bce, 0x0bdc, 0x0bea, 0x0bf4, 0x0c04, 0x0c14, 0x0c24, 0x0c34, + 0x0c4f, 0x0c5b, 0x0c76, 0x0c88, 0x0c9c, 0x0cb2, 0x0cbc, 0x0cc6, + 0x0cd2, 0x0cda, 0x0cf0, 0x0cfa, 0x0d06, 0x0d12, 0x0d35, 0x0d55, + 0x0d67, 0x0d77, 0x0d85, 0x0db4, 0x0dd5, 0x0de8, 0x0dfa, 0x0e0a, + // Entry C0 - FF + 0x0e14, 0x0e22, 0x0e2c, 0x0e51, 0x0e65, 0x0e75, 0x0e83, 0x0e8b, + 0x0e9d, 0x0eb4, 0x0ed1, 0x0edf, 0x0eeb, 0x0ef9, 0x0f0f, 0x0f28, + 0x0f3c, 0x0f67, 0x0f7b, 0x0f8f, 0x0fa2, 0x0fb0, 0x0fc0, 0x0fce, + 0x0fce, 0x0ff3, 0x100c, 0x100c, 0x1012, 0x1026, 0x1026, 0x1051, + 0x1057, 0x1087, 0x108f, 0x10a1, 0x10b3, 0x10c1, 0x10dc, 0x10f2, + 0x1102, 0x110e, 0x1118, 0x113e, 0x114e, 0x115a, 0x116c, 0x117c, + 0x118e, 0x11e2, 0x11e2, 0x1203, 0x1211, 0x1227, 0x123e, 0x1277, + 0x1289, 0x12b3, 0x12da, 0x12e8, 0x12f8, 0x131c, 0x1328, 0x1328, + // Entry 100 - 13F + 0x1332, 0x133c, 0x135b, 0x1369, 0x1377, 0x13ae, 0x13b8, 0x13c8, + 0x13e5, 0x1406, 0x1414, 0x1435, 0x1452, 0x1471, 0x148e, 0x14a7, + 0x14c4, 0x14d6, 0x14fe, 0x1510, 0x1529, 0x1540, 0x1568, 0x1581, + 0x15ad, 0x15c5, 0x15ec, 0x15fe, 0x1608, 0x161f, 0x1638, 0x1644, + 0x165d, 0x1676, 0x168f, 0x16c6, }, }, { // ksb @@ -33197,7 +37784,7 @@ var regionHeaders = [220]header{ "diniVenezuelaVisiwa vya Vilgin vya UingeezaVisiwa vya Vilgin vya Mal" + "ekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMayotteAflika KusiniZ" + "ambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -33209,33 +37796,33 @@ var regionHeaders = [220]header{ 0x01a1, 0x01a8, 0x01b8, 0x01c0, 0x01c0, 0x01c6, 0x01cd, 0x01d5, // Entry 40 - 7F 0x01e8, 0x01ef, 0x01ef, 0x01f5, 0x01fc, 0x0201, 0x0201, 0x0208, - 0x0210, 0x0218, 0x0218, 0x021d, 0x0221, 0x0234, 0x023e, 0x023e, - 0x0246, 0x024c, 0x0254, 0x025b, 0x0260, 0x0273, 0x0273, 0x0278, - 0x0280, 0x0289, 0x028f, 0x0293, 0x029c, 0x02a5, 0x02ab, 0x02ab, - 0x02b4, 0x02b8, 0x02c1, 0x02c7, 0x02c7, 0x02c7, 0x02cf, 0x02d6, - 0x02db, 0x02e3, 0x02e3, 0x02ec, 0x02f4, 0x02fb, 0x02fb, 0x0300, - 0x0321, 0x0326, 0x032c, 0x0334, 0x033a, 0x033a, 0x0341, 0x0348, - 0x034e, 0x0353, 0x035f, 0x0367, 0x036e, 0x0374, 0x0387, 0x0396, - // Entry 80 - BF - 0x03a2, 0x03a9, 0x03ba, 0x03c5, 0x03ca, 0x03d2, 0x03dc, 0x03e6, - 0x03ef, 0x03f6, 0x03fc, 0x0404, 0x040d, 0x0414, 0x0419, 0x041f, - 0x0425, 0x042c, 0x042c, 0x042c, 0x0432, 0x0443, 0x044c, 0x0450, - 0x0455, 0x045d, 0x045d, 0x047d, 0x0486, 0x0490, 0x049a, 0x049f, - 0x04a5, 0x04ab, 0x04b1, 0x04b8, 0x04bf, 0x04c7, 0x04ce, 0x04da, - 0x04df, 0x04f0, 0x04f8, 0x0501, 0x0509, 0x050f, 0x0515, 0x051a, - 0x051e, 0x0528, 0x052d, 0x0533, 0x0537, 0x054c, 0x0551, 0x0559, - 0x0562, 0x0569, 0x057f, 0x0588, 0x0591, 0x05c3, 0x05c8, 0x05cd, - // Entry C0 - FF - 0x05d5, 0x05db, 0x05db, 0x05e4, 0x05eb, 0x05eb, 0x05f0, 0x05f6, - 0x05fb, 0x060d, 0x0617, 0x061d, 0x0623, 0x062b, 0x0636, 0x063e, - 0x063e, 0x0646, 0x0651, 0x0659, 0x0661, 0x0668, 0x0670, 0x0670, - 0x0684, 0x068c, 0x068c, 0x0691, 0x0697, 0x0697, 0x06b0, 0x06b5, - 0x06b5, 0x06b9, 0x06c1, 0x06cc, 0x06d3, 0x06e6, 0x06f5, 0x06fc, - 0x0701, 0x0708, 0x071a, 0x0720, 0x0727, 0x072f, 0x0736, 0x073c, - 0x073c, 0x0744, 0x074b, 0x0757, 0x075f, 0x0778, 0x0781, 0x079f, - 0x07bd, 0x07c6, 0x07cd, 0x07dc, 0x07e1, 0x07e1, 0x07e7, 0x07ee, - // Entry 100 - 13F - 0x07fb, 0x0801, 0x0809, + 0x0210, 0x0218, 0x0218, 0x0218, 0x021d, 0x0221, 0x0234, 0x023e, + 0x023e, 0x0246, 0x024c, 0x0254, 0x025b, 0x0260, 0x0273, 0x0273, + 0x0278, 0x0280, 0x0289, 0x028f, 0x0293, 0x029c, 0x02a5, 0x02ab, + 0x02ab, 0x02b4, 0x02b8, 0x02c1, 0x02c7, 0x02c7, 0x02c7, 0x02cf, + 0x02d6, 0x02db, 0x02e3, 0x02e3, 0x02ec, 0x02f4, 0x02fb, 0x02fb, + 0x0300, 0x0321, 0x0326, 0x032c, 0x0334, 0x033a, 0x033a, 0x0341, + 0x0348, 0x034e, 0x0353, 0x035f, 0x0367, 0x036e, 0x0374, 0x0387, + // Entry 80 - BF + 0x0396, 0x03a2, 0x03a9, 0x03ba, 0x03c5, 0x03ca, 0x03d2, 0x03dc, + 0x03e6, 0x03ef, 0x03f6, 0x03fc, 0x0404, 0x040d, 0x0414, 0x0419, + 0x041f, 0x0425, 0x042c, 0x042c, 0x042c, 0x0432, 0x0443, 0x044c, + 0x0450, 0x0455, 0x045d, 0x045d, 0x047d, 0x0486, 0x0490, 0x049a, + 0x049f, 0x04a5, 0x04ab, 0x04b1, 0x04b8, 0x04bf, 0x04c7, 0x04ce, + 0x04da, 0x04df, 0x04f0, 0x04f8, 0x0501, 0x0509, 0x050f, 0x0515, + 0x051a, 0x051e, 0x0528, 0x052d, 0x0533, 0x0537, 0x054c, 0x0551, + 0x0559, 0x0562, 0x0569, 0x057f, 0x0588, 0x0591, 0x05c3, 0x05c8, + // Entry C0 - FF + 0x05cd, 0x05d5, 0x05db, 0x05db, 0x05e4, 0x05eb, 0x05eb, 0x05f0, + 0x05f6, 0x05fb, 0x060d, 0x0617, 0x061d, 0x0623, 0x062b, 0x0636, + 0x063e, 0x063e, 0x0646, 0x0651, 0x0659, 0x0661, 0x0668, 0x0670, + 0x0670, 0x0684, 0x068c, 0x068c, 0x0691, 0x0697, 0x0697, 0x06b0, + 0x06b5, 0x06b5, 0x06b9, 0x06c1, 0x06cc, 0x06d3, 0x06e6, 0x06f5, + 0x06fc, 0x0701, 0x0708, 0x071a, 0x0720, 0x0727, 0x072f, 0x0736, + 0x073c, 0x073c, 0x073c, 0x0744, 0x074b, 0x0757, 0x075f, 0x0778, + 0x0781, 0x079f, 0x07bd, 0x07c6, 0x07cd, 0x07dc, 0x07e1, 0x07e1, + // Entry 100 - 13F + 0x07e7, 0x07ee, 0x07fb, 0x0801, 0x0809, }, }, { // ksf @@ -33266,7 +37853,7 @@ var regionHeaders = [220]header{ "atikáŋsɛnvǝnsǝŋ ri grɛnadínwɛnǝzwɛlazǝ bɛ gɔn inɛ a ingɛríszǝ bɛ gɔn" + " inɛ á amɛrikawyɛtnámwanwatuwalis ri futunasamɔayɛmɛnmayɔ́tafrik anǝ" + " a sudzambízimbabwɛ́", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0008, 0x002d, 0x0039, 0x004b, 0x0051, 0x0058, 0x0060, 0x0067, 0x0067, 0x0071, 0x0082, 0x0087, 0x0090, 0x0095, @@ -33278,33 +37865,33 @@ var regionHeaders = [220]header{ 0x01c3, 0x01ca, 0x01d0, 0x01d8, 0x01d8, 0x01e0, 0x01e6, 0x01ee, // Entry 40 - 7F 0x0201, 0x0209, 0x0209, 0x0215, 0x021d, 0x0224, 0x0224, 0x022e, - 0x0235, 0x023e, 0x023e, 0x0245, 0x024a, 0x0256, 0x0262, 0x0262, - 0x026d, 0x0274, 0x0292, 0x029b, 0x02a2, 0x02b6, 0x02b6, 0x02bb, - 0x02c4, 0x02cc, 0x02d2, 0x02d9, 0x02e3, 0x02f7, 0x02fe, 0x02fe, - 0x0309, 0x030e, 0x031d, 0x0323, 0x0323, 0x0323, 0x032b, 0x0332, - 0x0337, 0x033e, 0x033e, 0x0348, 0x034d, 0x0356, 0x0356, 0x035b, - 0x0378, 0x037d, 0x0383, 0x038e, 0x0394, 0x0394, 0x039b, 0x03a3, - 0x03ac, 0x03b2, 0x03bc, 0x03c3, 0x03cc, 0x03d2, 0x03ee, 0x03fa, - // Entry 80 - BF - 0x0403, 0x040a, 0x0413, 0x041e, 0x0423, 0x042a, 0x0435, 0x0443, - 0x044d, 0x0455, 0x045d, 0x0465, 0x0470, 0x0478, 0x047d, 0x0483, - 0x0489, 0x0492, 0x0492, 0x0492, 0x049b, 0x04a8, 0x04b3, 0x04b7, - 0x04bf, 0x04c8, 0x04c8, 0x04d9, 0x04e1, 0x04eb, 0x04f5, 0x04fb, - 0x0502, 0x050a, 0x0510, 0x0518, 0x0520, 0x0529, 0x0530, 0x0543, - 0x054b, 0x0559, 0x0563, 0x056e, 0x0580, 0x058a, 0x0590, 0x0596, - 0x059d, 0x05ac, 0x05b0, 0x05b6, 0x05bc, 0x05d5, 0x05ee, 0x05f8, - 0x0602, 0x060a, 0x0621, 0x062a, 0x0634, 0x0644, 0x064d, 0x0652, - // Entry C0 - FF - 0x065c, 0x0661, 0x0661, 0x066b, 0x0673, 0x0673, 0x0678, 0x067e, - 0x068b, 0x0699, 0x06a0, 0x06a5, 0x06ac, 0x06b4, 0x06c0, 0x06c9, - 0x06c9, 0x06d1, 0x06db, 0x06e5, 0x06ee, 0x06f5, 0x06fc, 0x06fc, - 0x0712, 0x071b, 0x071b, 0x0720, 0x0728, 0x0728, 0x073a, 0x073f, - 0x073f, 0x0743, 0x0749, 0x0755, 0x075d, 0x076f, 0x077d, 0x0785, - 0x078b, 0x0791, 0x07a5, 0x07ab, 0x07b2, 0x07ba, 0x07c0, 0x07c6, - 0x07c6, 0x07ce, 0x07d7, 0x07e3, 0x07ec, 0x0807, 0x0813, 0x0830, - 0x084d, 0x0856, 0x085d, 0x086c, 0x0872, 0x0872, 0x0879, 0x0881, - // Entry 100 - 13F - 0x0891, 0x0897, 0x08a2, + 0x0235, 0x023e, 0x023e, 0x023e, 0x0245, 0x024a, 0x0256, 0x0262, + 0x0262, 0x026d, 0x0274, 0x0292, 0x029b, 0x02a2, 0x02b6, 0x02b6, + 0x02bb, 0x02c4, 0x02cc, 0x02d2, 0x02d9, 0x02e3, 0x02f7, 0x02fe, + 0x02fe, 0x0309, 0x030e, 0x031d, 0x0323, 0x0323, 0x0323, 0x032b, + 0x0332, 0x0337, 0x033e, 0x033e, 0x0348, 0x034d, 0x0356, 0x0356, + 0x035b, 0x0378, 0x037d, 0x0383, 0x038e, 0x0394, 0x0394, 0x039b, + 0x03a3, 0x03ac, 0x03b2, 0x03bc, 0x03c3, 0x03cc, 0x03d2, 0x03ee, + // Entry 80 - BF + 0x03fa, 0x0403, 0x040a, 0x0413, 0x041e, 0x0423, 0x042a, 0x0435, + 0x0443, 0x044d, 0x0455, 0x045d, 0x0465, 0x0470, 0x0478, 0x047d, + 0x0483, 0x0489, 0x0492, 0x0492, 0x0492, 0x049b, 0x04a8, 0x04b3, + 0x04b7, 0x04bf, 0x04c8, 0x04c8, 0x04d9, 0x04e1, 0x04eb, 0x04f5, + 0x04fb, 0x0502, 0x050a, 0x0510, 0x0518, 0x0520, 0x0529, 0x0530, + 0x0543, 0x054b, 0x0559, 0x0563, 0x056e, 0x0580, 0x058a, 0x0590, + 0x0596, 0x059d, 0x05ac, 0x05b0, 0x05b6, 0x05bc, 0x05d5, 0x05ee, + 0x05f8, 0x0602, 0x060a, 0x0621, 0x062a, 0x0634, 0x0644, 0x064d, + // Entry C0 - FF + 0x0652, 0x065c, 0x0661, 0x0661, 0x066b, 0x0673, 0x0673, 0x0678, + 0x067e, 0x068b, 0x0699, 0x06a0, 0x06a5, 0x06ac, 0x06b4, 0x06c0, + 0x06c9, 0x06c9, 0x06d1, 0x06db, 0x06e5, 0x06ee, 0x06f5, 0x06fc, + 0x06fc, 0x0712, 0x071b, 0x071b, 0x0720, 0x0728, 0x0728, 0x073a, + 0x073f, 0x073f, 0x0743, 0x0749, 0x0755, 0x075d, 0x076f, 0x077d, + 0x0785, 0x078b, 0x0791, 0x07a5, 0x07ab, 0x07b2, 0x07ba, 0x07c0, + 0x07c6, 0x07c6, 0x07c6, 0x07ce, 0x07d7, 0x07e3, 0x07ec, 0x0807, + 0x0813, 0x0830, 0x084d, 0x0856, 0x085d, 0x086c, 0x0872, 0x0872, + // Entry 100 - 13F + 0x0879, 0x0881, 0x0891, 0x0897, 0x08a2, }, }, { // ksh @@ -33317,50 +37904,50 @@ var regionHeaders = [220]header{ "sButtaande Buvee-EnselBozwaanaWießrußlandBelizeKanadade Kokkos-Ensel" + "ledä Konggo (Kinschasa)de Zäntraalaffrikaanesche Republikdä Konggo (" + "Brassavill)de SchweizÄlfebeijn-Kößde Kuuk-EnselleSchiileKammeruhnSch" + - "iinaKolumbijede Klipperton-EnselKostarikaKubade kapvärdesche Enselle" + - "Curaçaode Weihnaachs-EnselZüpperede TschäscheiDoütschlandde Diego-Ga" + - "rcia-EnselDschibuttiDänemarkDominnikade Dommenekaanesche ReppublikAl" + - "ljeerijeZe’uta un MeliijaÄkwadorÄßlandÄjüpteWäß-SaharaÄritrejaSchpaa" + - "nijeÄttijoopijede Europäjesche UnijonFinnlandde Fidschi-Endellede Fa" + - "lkland-EnselleMikroneesijede Färrör-EnselleFrankrischJabuhnJruußbret" + - "tannijeJrenaadaJeorrjijeFranzüüsesch JujaanaJöönseiJaanaJibralltaaJr" + - "öhnlandJambijaJinnehaJuadeluppÄquatorial JineejaJrieschelandSöd-Jeo" + - "rjie un de södlijje Botteramms-EnselleJuwatemaalaJuhamJinneha_BißauJ" + - "ujaanaHongkongde Heart Ensel un de McDonald-EnselleHondurasKrowazije" + - "Ha’ittiUnjannde Kannaresche EnselleIndoneesijeIrrlandIßraälde Ensel " + - "MänIndijeBrettesche Besezunge em indesche OozejahnIrakPersijeIßlandI" + - "taalijeJöösehJammaikaJordaanijeJapanKeenijaKirrjiisijeKambodschaKiri" + - "batide KommooreZint Kitts un NevisNood-KorejaSöd-KorejaKuweitde Kaim" + - "an-EnselleKassakstahnLa’osLebbannonde Ensel Zint-LutschaLischteschte" + - "inSri LankaLibeerijaLesootoLittaueLuxemburschLätlandLibbijeMarokkoMo" + - "nakkoMoldaavijeet Monteneejrode Zint-Määtes-EnselMaddajaskade Machsc" + - "hall-EnselleMazedoonijeMaaliBirmaMongjoleiMakaude nöödlijje Marijann" + - "e-EnselleMachtinikMautitaanijeMongßerratMaltaMaurizijusMallediiveMal" + - "awiMäxikoMalaisijeMosambikNamiibijeNeuschottlandNijerde Noofok-Ensel" + - "NikaraaguaNikaraaguwade NederlängNorrweejeNepallNauruNiueNeuseelandO" + - "manPannamaPerruhFranzüüsesch PollineesijePapuwa NeujineejaFillipiine" + - "PakistahnPoleZint Pjäär un Mikelongde Pitkärn-EnselPochtorikoPalästi" + - "naPochtojallPallauParraguwaiKataaOzejaanije ußerhallefRehunjohnRomää" + - "nijeSärbijeRußlandRuandaSaudi Arraabijede Solomone-Ensellede Seischä" + - "lleNoodsudahnSchweedeSingjapuurde Ensel Zint Hellenaẞloveenijede Ens" + - "elle Svalbard un Jan MayenẞlovakeiSjärra LejoneSan-Marinoder Senneja" + - "llSomaalijeSürinammSödsudahnZint Tommeh un PrintschipeÄl SlavadoorZi" + - "nt MaartenSürijeẞwaasilandTristan da Cunjade Enselle Turks un Kaikos" + - "der TschaddFranzüüsesche Södsee-EnselleToojoTailandTadschikistahnTok" + - "elauOß-TimorTurkmenistahnTuneesijeTonggade TörkeiTrinidad un Tobääjo" + - "TuvaluTaiwanTansanijade Ukra’iineUjandade Vereineschte Schtaate vun " + - "Amärrika ier ußerhallef jelääje Enselschede vereineschte Schtaate vu" + - "n AmmärrikaUrrujwaiUßbeekistahnder VattikahnZint Vinzänz un de Jrena" + - "dines-EnselleVenezuelade brettesche Juffer-Ensellede ammärrikahnesch" + - "e Juffer-EnselleVijätnammVanuatuWallis un FutunaSammohaKosovoJämmeMa" + - "jottde Republik SödaffrikaSambijaSimbabwe- Jääjend onbikannt -de Ääd" + - "AffrikaNood-AmärrikaSöd-AmärrikaOzejaanijeWäß-AffrikaMeddelammärrika" + - "Oß-AffrikaNood-AffrikaMeddel-AffrikaSöd-AffrikaAmmärrikader Norde vu" + - "n Amärrikade KarribikOß-AasijeSöd-AasijeSöd-Oß-AasijeSöd-Europpade R" + - "ejjohn öm AustraalijeMellaneesijede Rejohn vun MikroneesejePolineesi" + - "jeAasijeMeddelaasijeWäß-AasijeEuroppaOß-EuroppaNood-EuroppaWäß-Europ" + - "paLateinamärrika", - []uint16{ // 290 elements + "iinaKolumbijede Klipperton-EnselKostarikaKuhbade kapvärdesche Ensell" + + "eCuraçaode Weihnaachs-EnselZüpperede TschäscheiDoütschlandde Diego-G" + + "arcia-EnselDschibuttiDänemarkDominnikade Dommenekaanesche ReppublikA" + + "lljeerijeZe’uta un MeliijaÄkwadorÄßlandÄjüpteWäß-SaharaÄritrejaSchpa" + + "anijeÄttijoopijede Europähjesche UnijonFinnlandde Fidschi-Endellede " + + "Falkland-EnselleMikroneesijede Färrör-EnselleFrankrischJabuhnJruußbr" + + "ettannijeJrenahdaJeorrjijeFranzüüsesch JujaanaJöönseiJaanaJibralltaa" + + "JröhnlandJambijaJinnehaJuadeluppÄquatorial JineejaJrieschelandSöd-Je" + + "orjie un de södlijje Botteramms-EnselleJuwatemahlaJuhamJinneha_Bißau" + + "JujaanaHongkongde Heart Ensel un de McDonald-EnselleHondurasKrowazij" + + "eHa’ittiUnjannde Kannaresche EnselleIndoneesijeIrrlandIßraälde Ensel" + + " MänIndijeBrettesche Besezunge em indesche OozejahnIrakPersijeIßland" + + "ItaalijeJöösehJammaikaJordaanijeJapanKeenijaKirrjiisijeKambodschaKir" + + "ibatide KommooreZint Kitts un NevisNood-KorejaSöd-KorejaKuweitde Kai" + + "man-EnselleKassakstahnLa’osLebbannonde Ensel Zint-LutschaLischtescht" + + "einSri LankaLibeerijaLesootoLittaueLuxemburschLätlandLibbijeMarokkoM" + + "onakkoMoldaavijeet Monteneejrode Zint-Määtes-EnselMaddajaskade Machs" + + "chall-EnselleMazedoonijeMaaliBirmaMongjoleiMakaude nöödlijje Marijan" + + "ne-EnselleMachtinikMautitaanijeMongßerratMaltaMaurizijusMallediiveMa" + + "lawiMäxikoMalaisijeMosambikNamiibijeNeuschottlandNijerde Noofok-Ense" + + "lNikaraaguaNikarahguwade NederlängNorrweejeNepallNauruNiueNeuseeland" + + "OmanPannamaPerruhFranzüüsesch PollineesijePapuwa NeujineejaFillipiin" + + "ePakistahnPoleZint Pjäär un Mikelongde Pitkärn-EnselPochtorikoPaläst" + + "inaPochtojallPallauParraguwaiKataaOzejahnije ußerhallefRehunjohnRomä" + + "änijeSärbijeRußlandRuandaSaudi Arraabijede Solomone-Ensellede Seisc" + + "hälleNoodsudahnSchweedeSingjapuurde Ensel Zint Hellenaẞloveenijede E" + + "nselle Svalbard un Jan MayenẞlovakeiSjärra LejoneSan-Marinoder Senne" + + "jallSomaalijeSürinammSödsudahnZint Tommeh un PrintschipeÄl Slavadohr" + + "Zint MaartenSürijeẞwaasilandTristan da Cunjade Enselle Turks un Kaik" + + "osder TschaddFranzüüsesche Södsee-EnselleToojoTailandTadschikistahnT" + + "okelauOß-TimorTurkmenistahnTuneesijeTonggade TörkeiTrinidad un Tobäh" + + "joTuvaluTaiwanTansanijade Ukra’iineUjandade Vereineschte Schtaate vu" + + "n Amärrika ier ußerhallef jelääje Enselschede vereineschte Schtaate " + + "vun AmmärrikaUrrujwaiUßbeekistahnder VattikahnZint Vinzänz un de Jre" + + "nadines-EnselleVenezuelade brettesche Juffer-Ensellede ammärrikahnes" + + "che Juffer-EnselleVijätnammVanuatuWallis un FutunaSammohaKosovoJämme" + + "Majottde Republik SödaffrikaSambijaSimbabwe- Jähjend onbikannt -de Ä" + + "ädAffrikaNood-AmärrikaSöhd-AmärrikaOzejahnejeWäß-AffrikaMeddelammär" + + "rikaOß-AffrikaNood-AffrikaMeddel-AffrikaSöhd-AffrikaAmmärrikader Nor" + + "de vun Amärrikade KarribikOß-AasijeSöhd-AasijeSöhd-Oß-AasijeSöhd-Eur" + + "oppade Rejjohn öm AustrahlijeMellanehsijede Rejohn vun MikronehsejeP" + + "olinehsijeAasijeMeddelaasijeWäß-AasijeEuroppaOß-EuroppaNood-EuroppaW" + + "äß-EuroppaLateinamärrika", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002f, 0x003b, 0x004d, 0x0056, 0x005f, 0x0069, 0x0071, 0x007c, 0x0088, 0x009e, 0x00aa, 0x00b5, 0x00ba, @@ -33368,46 +37955,46 @@ var regionHeaders = [220]header{ 0x0134, 0x013b, 0x0144, 0x015d, 0x0168, 0x016e, 0x0178, 0x0192, 0x019b, 0x01a5, 0x01ac, 0x01ba, 0x01c2, 0x01cf, 0x01d5, 0x01db, 0x01ec, 0x0202, 0x0225, 0x023c, 0x0246, 0x0256, 0x0265, 0x026c, - 0x0275, 0x027c, 0x0285, 0x0298, 0x02a1, 0x02a5, 0x02bd, 0x02c5, - 0x02d8, 0x02e0, 0x02ee, 0x02fa, 0x030f, 0x0319, 0x0322, 0x032b, - // Entry 40 - 7F - 0x0348, 0x0352, 0x0365, 0x036d, 0x0375, 0x037d, 0x0389, 0x0392, - 0x039c, 0x03a8, 0x03bf, 0x03c7, 0x03d9, 0x03ec, 0x03f8, 0x040b, - 0x0415, 0x041b, 0x042c, 0x0434, 0x043d, 0x0453, 0x045c, 0x0461, - 0x046b, 0x0475, 0x047c, 0x0483, 0x048c, 0x049f, 0x04ab, 0x04da, - 0x04e5, 0x04ea, 0x04f8, 0x04ff, 0x0507, 0x052c, 0x0534, 0x053d, - 0x0546, 0x054c, 0x0562, 0x056d, 0x0574, 0x057c, 0x0589, 0x058f, - 0x05b8, 0x05bc, 0x05c3, 0x05ca, 0x05d2, 0x05da, 0x05e2, 0x05ec, - 0x05f1, 0x05f8, 0x0603, 0x060d, 0x0615, 0x0620, 0x0633, 0x063e, - // Entry 80 - BF - 0x0649, 0x064f, 0x0660, 0x066b, 0x0672, 0x067b, 0x0690, 0x069e, - 0x06a7, 0x06b0, 0x06b7, 0x06be, 0x06c9, 0x06d1, 0x06d8, 0x06df, - 0x06e6, 0x06f0, 0x06fe, 0x0714, 0x071e, 0x0733, 0x073e, 0x0743, - 0x0748, 0x0751, 0x0756, 0x0776, 0x077f, 0x078b, 0x0796, 0x079b, - 0x07a5, 0x07af, 0x07b5, 0x07bc, 0x07c5, 0x07cd, 0x07d6, 0x07e3, - 0x07e8, 0x07f7, 0x0801, 0x080c, 0x0819, 0x0822, 0x0828, 0x082d, - 0x0831, 0x083b, 0x083f, 0x0846, 0x084c, 0x0867, 0x0878, 0x0882, - 0x088b, 0x088f, 0x08a7, 0x08b8, 0x08c2, 0x08cc, 0x08d6, 0x08dc, - // Entry C0 - FF - 0x08e6, 0x08eb, 0x0901, 0x090a, 0x0915, 0x091d, 0x0925, 0x092b, - 0x093a, 0x094d, 0x095b, 0x0965, 0x096d, 0x0977, 0x098c, 0x0998, - 0x09b8, 0x09c2, 0x09d0, 0x09da, 0x09e7, 0x09f0, 0x09f9, 0x0a03, - 0x0a1d, 0x0a2a, 0x0a36, 0x0a3d, 0x0a49, 0x0a59, 0x0a73, 0x0a7e, - 0x0a9d, 0x0aa2, 0x0aa9, 0x0ab7, 0x0abe, 0x0ac7, 0x0ad4, 0x0add, - 0x0ae3, 0x0aed, 0x0b02, 0x0b08, 0x0b0e, 0x0b17, 0x0b25, 0x0b2b, - 0x0b75, 0x0b9c, 0x0ba4, 0x0bb1, 0x0bbe, 0x0be4, 0x0bed, 0x0c09, - 0x0c2c, 0x0c36, 0x0c3d, 0x0c4d, 0x0c54, 0x0c5a, 0x0c60, 0x0c66, - // Entry 100 - 13F - 0x0c7d, 0x0c84, 0x0c8c, 0x0ca3, 0x0cab, 0x0cb2, 0x0cc0, 0x0cce, - 0x0cd8, 0x0ce5, 0x0cf5, 0x0d00, 0x0d0c, 0x0d1a, 0x0d26, 0x0d30, - 0x0d47, 0x0d52, 0x0d5c, 0x0d67, 0x0d76, 0x0d82, 0x0d9c, 0x0da8, - 0x0dc2, 0x0dcd, 0x0dd3, 0x0ddf, 0x0deb, 0x0df2, 0x0dfd, 0x0e09, - 0x0e16, 0x0e25, + 0x0275, 0x027c, 0x0285, 0x0298, 0x02a1, 0x02a6, 0x02be, 0x02c6, + 0x02d9, 0x02e1, 0x02ef, 0x02fb, 0x0310, 0x031a, 0x0323, 0x032c, + // Entry 40 - 7F + 0x0349, 0x0353, 0x0366, 0x036e, 0x0376, 0x037e, 0x038a, 0x0393, + 0x039d, 0x03a9, 0x03c1, 0x03c1, 0x03c9, 0x03db, 0x03ee, 0x03fa, + 0x040d, 0x0417, 0x041d, 0x042e, 0x0436, 0x043f, 0x0455, 0x045e, + 0x0463, 0x046d, 0x0477, 0x047e, 0x0485, 0x048e, 0x04a1, 0x04ad, + 0x04dc, 0x04e7, 0x04ec, 0x04fa, 0x0501, 0x0509, 0x052e, 0x0536, + 0x053f, 0x0548, 0x054e, 0x0564, 0x056f, 0x0576, 0x057e, 0x058b, + 0x0591, 0x05ba, 0x05be, 0x05c5, 0x05cc, 0x05d4, 0x05dc, 0x05e4, + 0x05ee, 0x05f3, 0x05fa, 0x0605, 0x060f, 0x0617, 0x0622, 0x0635, + // Entry 80 - BF + 0x0640, 0x064b, 0x0651, 0x0662, 0x066d, 0x0674, 0x067d, 0x0692, + 0x06a0, 0x06a9, 0x06b2, 0x06b9, 0x06c0, 0x06cb, 0x06d3, 0x06da, + 0x06e1, 0x06e8, 0x06f2, 0x0700, 0x0716, 0x0720, 0x0735, 0x0740, + 0x0745, 0x074a, 0x0753, 0x0758, 0x0778, 0x0781, 0x078d, 0x0798, + 0x079d, 0x07a7, 0x07b1, 0x07b7, 0x07be, 0x07c7, 0x07cf, 0x07d8, + 0x07e5, 0x07ea, 0x07f9, 0x0803, 0x080e, 0x081b, 0x0824, 0x082a, + 0x082f, 0x0833, 0x083d, 0x0841, 0x0848, 0x084e, 0x0869, 0x087a, + 0x0884, 0x088d, 0x0891, 0x08a9, 0x08ba, 0x08c4, 0x08ce, 0x08d8, + // Entry C0 - FF + 0x08de, 0x08e8, 0x08ed, 0x0903, 0x090c, 0x0917, 0x091f, 0x0927, + 0x092d, 0x093c, 0x094f, 0x095d, 0x0967, 0x096f, 0x0979, 0x098e, + 0x099a, 0x09ba, 0x09c4, 0x09d2, 0x09dc, 0x09e9, 0x09f2, 0x09fb, + 0x0a05, 0x0a1f, 0x0a2c, 0x0a38, 0x0a3f, 0x0a4b, 0x0a5b, 0x0a75, + 0x0a80, 0x0a9f, 0x0aa4, 0x0aab, 0x0ab9, 0x0ac0, 0x0ac9, 0x0ad6, + 0x0adf, 0x0ae5, 0x0aef, 0x0b03, 0x0b09, 0x0b0f, 0x0b18, 0x0b26, + 0x0b2c, 0x0b76, 0x0b76, 0x0b9d, 0x0ba5, 0x0bb2, 0x0bbf, 0x0be5, + 0x0bee, 0x0c0a, 0x0c2d, 0x0c37, 0x0c3e, 0x0c4e, 0x0c55, 0x0c5b, + // Entry 100 - 13F + 0x0c61, 0x0c67, 0x0c7e, 0x0c85, 0x0c8d, 0x0ca3, 0x0cab, 0x0cb2, + 0x0cc0, 0x0ccf, 0x0cd9, 0x0ce6, 0x0cf6, 0x0d01, 0x0d0d, 0x0d1b, + 0x0d28, 0x0d32, 0x0d49, 0x0d54, 0x0d5e, 0x0d6a, 0x0d7a, 0x0d87, + 0x0da1, 0x0dad, 0x0dc7, 0x0dd2, 0x0dd8, 0x0de4, 0x0df0, 0x0df7, + 0x0e02, 0x0e0e, 0x0e1b, 0x0e2a, }, }, { // kw "Rywvaneth Unys", - []uint16{ // 83 elements + []uint16{ // 84 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -33420,7 +38007,7 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000e, + 0x0000, 0x0000, 0x0000, 0x000e, }, }, { // ky @@ -33463,7 +38050,7 @@ var regionHeaders = [220]header{ "iniVenezuéelaVisíiwa vya Vigíini vya ɄɨngeréesaVisíiwa vya Vigíini v" + "ya Amerɨ́kaVietináamuVanuáatuWalíisi na FutúunaSamóoaYémeniMayóoteAf" + "ɨrɨka ya SaameSámbiaSimbáabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001b, 0x002a, 0x0041, 0x004a, 0x0053, 0x005c, 0x0064, 0x0064, 0x006e, 0x0083, 0x008d, 0x009a, 0x00a1, @@ -33475,33 +38062,33 @@ var regionHeaders = [220]header{ 0x021e, 0x0228, 0x023d, 0x0249, 0x0249, 0x0251, 0x0259, 0x0263, // Entry 40 - 7F 0x027a, 0x0283, 0x0283, 0x028a, 0x0292, 0x0299, 0x0299, 0x02a1, - 0x02ab, 0x02b6, 0x02b6, 0x02bd, 0x02c3, 0x02d9, 0x02e5, 0x02e5, - 0x02f0, 0x02f8, 0x0305, 0x030f, 0x0315, 0x032e, 0x032e, 0x0334, - 0x033f, 0x034c, 0x0353, 0x0359, 0x0364, 0x0373, 0x037b, 0x037b, - 0x0386, 0x038b, 0x0399, 0x03a1, 0x03a1, 0x03a1, 0x03ac, 0x03b5, - 0x03bc, 0x03c5, 0x03c5, 0x03cf, 0x03d9, 0x03e3, 0x03e3, 0x03e9, - 0x0412, 0x0419, 0x0422, 0x042d, 0x0434, 0x0434, 0x043c, 0x0443, - 0x044b, 0x0452, 0x0460, 0x0469, 0x0473, 0x047b, 0x049b, 0x04b0, - // Entry 80 - BF - 0x04bf, 0x04c8, 0x04dd, 0x04eb, 0x04f2, 0x04fc, 0x0511, 0x051d, - 0x0528, 0x0531, 0x0539, 0x0542, 0x054d, 0x0554, 0x055a, 0x0562, - 0x056a, 0x0574, 0x0574, 0x0574, 0x057c, 0x0594, 0x059e, 0x05a4, - 0x05ab, 0x05b4, 0x05b4, 0x05d4, 0x05e0, 0x05ea, 0x05f5, 0x05fc, - 0x0604, 0x060c, 0x0614, 0x061c, 0x0625, 0x0630, 0x0638, 0x0647, - 0x064d, 0x0664, 0x066d, 0x0678, 0x0683, 0x0688, 0x0690, 0x0697, - 0x069d, 0x06a8, 0x06ae, 0x06b6, 0x06bc, 0x06d6, 0x06dd, 0x06e8, - 0x06f4, 0x06fc, 0x0720, 0x072c, 0x073a, 0x075c, 0x0764, 0x076b, - // Entry C0 - FF - 0x0775, 0x077d, 0x077d, 0x0788, 0x0791, 0x0791, 0x0798, 0x07a0, - 0x07b1, 0x07c8, 0x07d4, 0x07dc, 0x07e4, 0x07ec, 0x0802, 0x080c, - 0x080c, 0x0817, 0x0822, 0x082c, 0x0836, 0x083e, 0x0848, 0x0848, - 0x085f, 0x086a, 0x086a, 0x0870, 0x0879, 0x0879, 0x0899, 0x08a0, - 0x08a0, 0x08a6, 0x08af, 0x08bd, 0x08c6, 0x08db, 0x08ee, 0x08f6, - 0x08fd, 0x0906, 0x091c, 0x0924, 0x092d, 0x0937, 0x0942, 0x094b, - 0x094b, 0x0953, 0x095c, 0x096b, 0x0975, 0x099b, 0x09a6, 0x09cd, - 0x09f1, 0x09fc, 0x0a05, 0x0a19, 0x0a20, 0x0a20, 0x0a27, 0x0a2f, - // Entry 100 - 13F - 0x0a41, 0x0a48, 0x0a52, + 0x02ab, 0x02b6, 0x02b6, 0x02b6, 0x02bd, 0x02c3, 0x02d9, 0x02e5, + 0x02e5, 0x02f0, 0x02f8, 0x0305, 0x030f, 0x0315, 0x032e, 0x032e, + 0x0334, 0x033f, 0x034c, 0x0353, 0x0359, 0x0364, 0x0373, 0x037b, + 0x037b, 0x0386, 0x038b, 0x0399, 0x03a1, 0x03a1, 0x03a1, 0x03ac, + 0x03b5, 0x03bc, 0x03c5, 0x03c5, 0x03cf, 0x03d9, 0x03e3, 0x03e3, + 0x03e9, 0x0412, 0x0419, 0x0422, 0x042d, 0x0434, 0x0434, 0x043c, + 0x0443, 0x044b, 0x0452, 0x0460, 0x0469, 0x0473, 0x047b, 0x049b, + // Entry 80 - BF + 0x04b0, 0x04bf, 0x04c8, 0x04dd, 0x04eb, 0x04f2, 0x04fc, 0x0511, + 0x051d, 0x0528, 0x0531, 0x0539, 0x0542, 0x054d, 0x0554, 0x055a, + 0x0562, 0x056a, 0x0574, 0x0574, 0x0574, 0x057c, 0x0594, 0x059e, + 0x05a4, 0x05ab, 0x05b4, 0x05b4, 0x05d4, 0x05e0, 0x05ea, 0x05f5, + 0x05fc, 0x0604, 0x060c, 0x0614, 0x061c, 0x0625, 0x0630, 0x0638, + 0x0647, 0x064d, 0x0664, 0x066d, 0x0678, 0x0683, 0x0688, 0x0690, + 0x0697, 0x069d, 0x06a8, 0x06ae, 0x06b6, 0x06bc, 0x06d6, 0x06dd, + 0x06e8, 0x06f4, 0x06fc, 0x0720, 0x072c, 0x073a, 0x075c, 0x0764, + // Entry C0 - FF + 0x076b, 0x0775, 0x077d, 0x077d, 0x0788, 0x0791, 0x0791, 0x0798, + 0x07a0, 0x07b1, 0x07c8, 0x07d4, 0x07dc, 0x07e4, 0x07ec, 0x0802, + 0x080c, 0x080c, 0x0817, 0x0822, 0x082c, 0x0836, 0x083e, 0x0848, + 0x0848, 0x085f, 0x086a, 0x086a, 0x0870, 0x0879, 0x0879, 0x0899, + 0x08a0, 0x08a0, 0x08a6, 0x08af, 0x08bd, 0x08c6, 0x08db, 0x08ee, + 0x08f6, 0x08fd, 0x0906, 0x091c, 0x0924, 0x092d, 0x0937, 0x0942, + 0x094b, 0x094b, 0x094b, 0x0953, 0x095c, 0x096b, 0x0975, 0x099b, + 0x09a6, 0x09cd, 0x09f1, 0x09fc, 0x0a05, 0x0a19, 0x0a20, 0x0a20, + // Entry 100 - 13F + 0x0a27, 0x0a2f, 0x0a41, 0x0a48, 0x0a52, }, }, { // lb @@ -33549,7 +38136,7 @@ var regionHeaders = [220]header{ "bikOstasienSüdasienSüdostasienSüdeuropaAustralien an NeiséilandMelan" + "esienMikronesescht InselgebittPolynesienAsienZentralasienWestasienEu" + "ropaOsteuropaNordeuropaWesteuropaLatäinamerika", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057, 0x005f, 0x0065, 0x006e, 0x0079, 0x008b, 0x0096, 0x00a0, 0x00a5, @@ -33561,37 +38148,37 @@ var regionHeaders = [220]header{ 0x0255, 0x025b, 0x0265, 0x0271, 0x027d, 0x0286, 0x028f, 0x0297, // Entry 40 - 7F 0x02ad, 0x02b5, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e3, 0x02ea, - 0x02f1, 0x02fa, 0x030c, 0x0314, 0x031b, 0x032a, 0x0335, 0x033d, - 0x0348, 0x034d, 0x035d, 0x0364, 0x036c, 0x0373, 0x037b, 0x0380, - 0x0389, 0x0392, 0x0398, 0x039e, 0x03a8, 0x03b8, 0x03c3, 0x03f0, - 0x03f9, 0x03fd, 0x040a, 0x0410, 0x042f, 0x0448, 0x0450, 0x0458, - 0x045d, 0x0463, 0x0474, 0x047e, 0x0484, 0x048a, 0x0495, 0x049b, - 0x04c3, 0x04c7, 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5, 0x04ee, - 0x04f3, 0x04f8, 0x0503, 0x050d, 0x0515, 0x051c, 0x052e, 0x0537, - // Entry 80 - BF - 0x0540, 0x0546, 0x0553, 0x055d, 0x0561, 0x0568, 0x0571, 0x057e, - 0x0587, 0x058e, 0x0595, 0x059c, 0x05a7, 0x05af, 0x05b5, 0x05bc, - 0x05c2, 0x05cb, 0x05d5, 0x05df, 0x05e9, 0x05f8, 0x0602, 0x0606, - 0x060d, 0x0615, 0x0630, 0x0642, 0x064c, 0x0657, 0x0661, 0x0666, - 0x066f, 0x0677, 0x067d, 0x0683, 0x068b, 0x0693, 0x069a, 0x06a7, - 0x06ac, 0x06b8, 0x06bf, 0x06c8, 0x06cf, 0x06d7, 0x06dc, 0x06e1, - 0x06e5, 0x06f0, 0x06f4, 0x06fa, 0x06fe, 0x0714, 0x0723, 0x072f, - 0x0737, 0x073c, 0x0751, 0x0760, 0x076b, 0x078c, 0x0794, 0x0799, - // Entry C0 - FF - 0x07a1, 0x07a6, 0x07b8, 0x07c0, 0x07c9, 0x07d0, 0x07d8, 0x07de, - 0x07eb, 0x07f4, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081d, 0x0826, - 0x083a, 0x0842, 0x084e, 0x0858, 0x085f, 0x0866, 0x086e, 0x0877, - 0x088d, 0x0898, 0x08a4, 0x08aa, 0x08b3, 0x08c3, 0x08d9, 0x08df, - 0x0905, 0x0909, 0x0911, 0x091e, 0x0925, 0x092d, 0x0939, 0x0941, - 0x0946, 0x094d, 0x095f, 0x0965, 0x096b, 0x0973, 0x0979, 0x097f, - 0x0994, 0x09b0, 0x09b7, 0x09c1, 0x09cc, 0x09ea, 0x09f3, 0x0a0b, - 0x0a27, 0x0a2e, 0x0a35, 0x0a44, 0x0a49, 0x0a4f, 0x0a54, 0x0a5b, - // Entry 100 - 13F - 0x0a65, 0x0a6b, 0x0a73, 0x0a84, 0x0a88, 0x0a8e, 0x0a99, 0x0aa4, - 0x0aac, 0x0ab6, 0x0ac4, 0x0acd, 0x0ad7, 0x0ae4, 0x0af4, 0x0afb, - 0x0b0d, 0x0b14, 0x0b1c, 0x0b25, 0x0b31, 0x0b3b, 0x0b54, 0x0b5e, - 0x0b77, 0x0b81, 0x0b86, 0x0b92, 0x0b9b, 0x0ba1, 0x0baa, 0x0bb4, - 0x0bbe, 0x0bcc, + 0x02f1, 0x02fa, 0x030c, 0x030c, 0x0314, 0x031b, 0x032a, 0x0335, + 0x033d, 0x0348, 0x034d, 0x035d, 0x0364, 0x036c, 0x0373, 0x037b, + 0x0380, 0x0389, 0x0392, 0x0398, 0x039e, 0x03a8, 0x03b8, 0x03c3, + 0x03f0, 0x03f9, 0x03fd, 0x040a, 0x0410, 0x042f, 0x0448, 0x0450, + 0x0458, 0x045d, 0x0463, 0x0474, 0x047e, 0x0484, 0x048a, 0x0495, + 0x049b, 0x04c3, 0x04c7, 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5, + 0x04ee, 0x04f3, 0x04f8, 0x0503, 0x050d, 0x0515, 0x051c, 0x052e, + // Entry 80 - BF + 0x0537, 0x0540, 0x0546, 0x0553, 0x055d, 0x0561, 0x0568, 0x0571, + 0x057e, 0x0587, 0x058e, 0x0595, 0x059c, 0x05a7, 0x05af, 0x05b5, + 0x05bc, 0x05c2, 0x05cb, 0x05d5, 0x05df, 0x05e9, 0x05f8, 0x0602, + 0x0606, 0x060d, 0x0615, 0x0630, 0x0642, 0x064c, 0x0657, 0x0661, + 0x0666, 0x066f, 0x0677, 0x067d, 0x0683, 0x068b, 0x0693, 0x069a, + 0x06a7, 0x06ac, 0x06b8, 0x06bf, 0x06c8, 0x06cf, 0x06d7, 0x06dc, + 0x06e1, 0x06e5, 0x06f0, 0x06f4, 0x06fa, 0x06fe, 0x0714, 0x0723, + 0x072f, 0x0737, 0x073c, 0x0751, 0x0760, 0x076b, 0x078c, 0x0794, + // Entry C0 - FF + 0x0799, 0x07a1, 0x07a6, 0x07b8, 0x07c0, 0x07c9, 0x07d0, 0x07d8, + 0x07de, 0x07eb, 0x07f4, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081d, + 0x0826, 0x083a, 0x0842, 0x084e, 0x0858, 0x085f, 0x0866, 0x086e, + 0x0877, 0x088d, 0x0898, 0x08a4, 0x08aa, 0x08b3, 0x08c3, 0x08d9, + 0x08df, 0x0905, 0x0909, 0x0911, 0x091e, 0x0925, 0x092d, 0x0939, + 0x0941, 0x0946, 0x094d, 0x095f, 0x0965, 0x096b, 0x0973, 0x0979, + 0x097f, 0x0994, 0x0994, 0x09b0, 0x09b7, 0x09c1, 0x09cc, 0x09ea, + 0x09f3, 0x0a0b, 0x0a27, 0x0a2e, 0x0a35, 0x0a44, 0x0a49, 0x0a4f, + // Entry 100 - 13F + 0x0a54, 0x0a5b, 0x0a65, 0x0a6b, 0x0a73, 0x0a84, 0x0a88, 0x0a8e, + 0x0a99, 0x0aa4, 0x0aac, 0x0ab6, 0x0ac4, 0x0acd, 0x0ad7, 0x0ae4, + 0x0af4, 0x0afb, 0x0b0d, 0x0b14, 0x0b1c, 0x0b25, 0x0b31, 0x0b3b, + 0x0b54, 0x0b5e, 0x0b77, 0x0b81, 0x0b86, 0x0b92, 0x0b9b, 0x0ba1, + 0x0baa, 0x0bb4, 0x0bbe, 0x0bcc, }, }, { // lg @@ -33630,7 +38217,7 @@ var regionHeaders = [220]header{ "irigini ebitwalibwa BungerezaBizinga bya Virigini eby’AmerikaVyetina" + "amuVanawuwatuWalisi ne FutunaSamowaYemeniMayotteSawusafirikaZambyaZi" + "mbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e, 0x0047, 0x004d, 0x004d, 0x0057, 0x0067, 0x0072, 0x007f, 0x0084, @@ -33642,40 +38229,40 @@ var regionHeaders = [220]header{ 0x01d5, 0x01dd, 0x01f0, 0x01f7, 0x01f7, 0x01fe, 0x0207, 0x020f, // Entry 40 - 7F 0x0225, 0x022d, 0x022d, 0x0233, 0x023c, 0x0242, 0x0242, 0x024b, - 0x0253, 0x025a, 0x025a, 0x0263, 0x0267, 0x0280, 0x028b, 0x028b, - 0x0294, 0x029a, 0x02a3, 0x02ab, 0x02b1, 0x02c1, 0x02c1, 0x02c5, - 0x02cf, 0x02da, 0x02e0, 0x02e4, 0x02ed, 0x0303, 0x0316, 0x0316, - 0x031f, 0x0324, 0x032f, 0x0335, 0x0335, 0x0335, 0x033e, 0x0347, - 0x034d, 0x0354, 0x0354, 0x035e, 0x0366, 0x0370, 0x0370, 0x0377, - 0x0389, 0x0390, 0x0397, 0x03a1, 0x03a7, 0x03a7, 0x03af, 0x03b7, - 0x03bd, 0x03c2, 0x03d1, 0x03d9, 0x03e1, 0x03f5, 0x040b, 0x0421, - // Entry 80 - BF - 0x043b, 0x0441, 0x0457, 0x0464, 0x046a, 0x0472, 0x047e, 0x048d, - 0x0496, 0x049d, 0x04a3, 0x04ac, 0x04b8, 0x04bf, 0x04c4, 0x04ca, - 0x04d0, 0x04d8, 0x04d8, 0x04d8, 0x04e2, 0x04f4, 0x04fe, 0x0502, - 0x0509, 0x0512, 0x0512, 0x0537, 0x0542, 0x054d, 0x0559, 0x055f, - 0x056a, 0x0580, 0x0586, 0x058e, 0x0595, 0x059f, 0x05a7, 0x05b6, - 0x05ba, 0x05d0, 0x05d9, 0x05e3, 0x05ea, 0x05ee, 0x05f4, 0x05fa, - 0x0600, 0x060c, 0x0612, 0x0618, 0x061c, 0x0630, 0x063d, 0x0651, - 0x065c, 0x0663, 0x067b, 0x0684, 0x068c, 0x0698, 0x06a1, 0x06a7, - // Entry C0 - FF - 0x06b0, 0x06b5, 0x06b5, 0x06be, 0x06c6, 0x06c6, 0x06ca, 0x06d0, - 0x06e6, 0x06fd, 0x0703, 0x070a, 0x0711, 0x071a, 0x0726, 0x072f, - 0x072f, 0x0738, 0x0744, 0x074e, 0x0757, 0x075f, 0x0768, 0x0768, - 0x077d, 0x0788, 0x0788, 0x078e, 0x0798, 0x0798, 0x07b7, 0x07bc, - 0x07bc, 0x07c0, 0x07c9, 0x07d6, 0x07de, 0x07e4, 0x07f3, 0x07fa, - 0x07ff, 0x0804, 0x0818, 0x081e, 0x0826, 0x082f, 0x0839, 0x0840, - 0x0840, 0x0847, 0x0850, 0x085f, 0x0868, 0x0886, 0x088e, 0x08b9, - 0x08db, 0x08e5, 0x08ef, 0x08ff, 0x0905, 0x0905, 0x090b, 0x0912, - // Entry 100 - 13F - 0x091e, 0x0924, 0x092c, + 0x0253, 0x025a, 0x025a, 0x025a, 0x0263, 0x0267, 0x0280, 0x028b, + 0x028b, 0x0294, 0x029a, 0x02a3, 0x02ab, 0x02b1, 0x02c1, 0x02c1, + 0x02c5, 0x02cf, 0x02da, 0x02e0, 0x02e4, 0x02ed, 0x0303, 0x0316, + 0x0316, 0x031f, 0x0324, 0x032f, 0x0335, 0x0335, 0x0335, 0x033e, + 0x0347, 0x034d, 0x0354, 0x0354, 0x035e, 0x0366, 0x0370, 0x0370, + 0x0377, 0x0389, 0x0390, 0x0397, 0x03a1, 0x03a7, 0x03a7, 0x03af, + 0x03b7, 0x03bd, 0x03c2, 0x03d1, 0x03d9, 0x03e1, 0x03f5, 0x040b, + // Entry 80 - BF + 0x0421, 0x043b, 0x0441, 0x0457, 0x0464, 0x046a, 0x0472, 0x047e, + 0x048d, 0x0496, 0x049d, 0x04a3, 0x04ac, 0x04b8, 0x04bf, 0x04c4, + 0x04ca, 0x04d0, 0x04d8, 0x04d8, 0x04d8, 0x04e2, 0x04f4, 0x04fe, + 0x0502, 0x0509, 0x0512, 0x0512, 0x0537, 0x0542, 0x054d, 0x0559, + 0x055f, 0x056a, 0x0580, 0x0586, 0x058e, 0x0595, 0x059f, 0x05a7, + 0x05b6, 0x05ba, 0x05d0, 0x05d9, 0x05e3, 0x05ea, 0x05ee, 0x05f4, + 0x05fa, 0x0600, 0x060c, 0x0612, 0x0618, 0x061c, 0x0630, 0x063d, + 0x0651, 0x065c, 0x0663, 0x067b, 0x0684, 0x068c, 0x0698, 0x06a1, + // Entry C0 - FF + 0x06a7, 0x06b0, 0x06b5, 0x06b5, 0x06be, 0x06c6, 0x06c6, 0x06ca, + 0x06d0, 0x06e6, 0x06fd, 0x0703, 0x070a, 0x0711, 0x071a, 0x0726, + 0x072f, 0x072f, 0x0738, 0x0744, 0x074e, 0x0757, 0x075f, 0x0768, + 0x0768, 0x077d, 0x0788, 0x0788, 0x078e, 0x0798, 0x0798, 0x07b7, + 0x07bc, 0x07bc, 0x07c0, 0x07c9, 0x07d6, 0x07de, 0x07e4, 0x07f3, + 0x07fa, 0x07ff, 0x0804, 0x0818, 0x081e, 0x0826, 0x082f, 0x0839, + 0x0840, 0x0840, 0x0840, 0x0847, 0x0850, 0x085f, 0x0868, 0x0886, + 0x088e, 0x08b9, 0x08db, 0x08e5, 0x08ef, 0x08ff, 0x0905, 0x0905, + // Entry 100 - 13F + 0x090b, 0x0912, 0x091e, 0x0924, 0x092c, }, }, { // lkt "Uŋčíyapi MakȟóčhePȟečhókaŋhaŋska MakȟóčheIyášiča MakȟóčheSpayólaȟče Makȟ" + "óčheKisúŋla MakȟóčheSpayóla MakȟóčheMílahaŋska TȟamákȟočheMakȟásito" + "mniHásapa MakȟáwitaKhéya WítaHazíla MakȟáwitaWašíču Makȟáwita", - []uint16{ // 286 elements + []uint16{ // 288 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -33693,13 +38280,13 @@ var regionHeaders = [220]header{ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + 0x0066, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, // Entry 80 - BF 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, + 0x007b, 0x007b, 0x007b, 0x007b, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, @@ -33710,13 +38297,13 @@ var regionHeaders = [220]header{ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, + 0x008f, 0x008f, 0x008f, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, // Entry 100 - 13F - 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b9, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00eb, 0x00eb, 0x00eb, 0x0100, + 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b9, 0x00cc, + 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, + 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, + 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00eb, 0x00eb, 0x00eb, 0x0100, }, }, { // ln @@ -33724,74 +38311,74 @@ var regionHeaders = [220]header{ "ntarctiqueArizantinɛSamoa ya AmerikiOtilisiOsitáliArubaAzɛlɛbaizáBos" + "ini mpé HezegovineBarɛbadɛBengalidɛsiBelezikiBukina FasoBiligariBahr" + "ɛnɛBurundiBenɛBermudaBrineyiBoliviBrezílɛBahamasɛButániBotswanaByel" + - "orisiBelizɛKanadaRepibiki demokratiki ya KongóRepibiki ya Afríka ya " + - "KátiKongoSwisɛKotídivualɛBisanga bya KookɛSíliKamɛruneSinɛKolombiKos" + - "itarikaKibaBisanga bya KapevɛrɛSípɛlɛRepibiki TsekɛAlemaniDzibutiDan" + - "ɛmarikeDomínikeRepibiki ya DomínikɛAlizɛriEkwatɛ́lɛEsitoniEzípiteEl" + - "itelɛEsipanyeEtsíopiFilandɛFidziBisanga bya MaluniMikroneziFalánsɛGa" + - "bɔAngɛlɛtɛ́lɛGelenadɛZorziGiyanɛ ya FalánsɛGuerneseyGanaZibatalɛGowe" + - "landeGambiGinɛGwadɛlupɛGinɛ́kwatɛ́lɛGelekiÎles de Géorgie du Sud et " + - "Sandwich du SudGwatémalaGwamɛGinɛbisauGiyaneIle Heard et Iles McDona" + - "ldOndurasɛKrowasiAyitiOngiliIndoneziIrelandɛIsirayelɛÍndɛMabelé ya A" + - "ngɛlɛtɛ́lɛ na mbú ya IndiyaIrakiIrâIsilandɛItaliZamaikiZɔdaniZapɔKen" + - "yaKigizisitáKambodzaKiribatiKomorɛSántu krístofe mpé Nevɛ̀sKorɛ ya n" + - "ɔ́rdiKorɛ ya súdiKowetiBisanga bya KayímaKazakisitáLawosiLibáSántu " + - "lisiLishɛteniSirilankaLibériyaLesotoLitwaniLikisambuluLetoniLibíMaro" + - "kɛMonakoMolidaviMonténégroMadagasikariBisanga bya MarishalɛMasedwanɛ" + - "MalíBirmanieMongolíBisanga bya Marianɛ ya nɔ́rdiMartinikiMoritaniMɔs" + - "eraMalitɛMorisɛMadívɛMalawiMeksikeMaleziMozambíkiNamibiKaledoni ya s" + - "ikaNizɛrɛEsanga NorfokɛNizeryaNikaragwaOlandɛNorivezɛNepálɛNauruNyué" + - "Zelandɛ ya sikaOmánɛPanamaPéruPolinezi ya FalánsɛPapwazi Ginɛ ya sik" + - "aFilipinɛPakisitáPoloniSántu pététo mpé MikelɔPikairniPɔtorikoPalɛsi" + - "nePutúlugɛsiPalauPalagweiKatariLenyoRomaniSerbieRisíRwandaAlabi Sawu" + - "ditɛBisanga SolomɔSɛshɛlɛSudáSwédɛSingapurɛSántu eleniSiloveniSilova" + - "kiSiera LeonɛSántu MarinɛSenegalɛSomaliSurinamɛSao Tomé mpé PresipɛS" + - "avadɔrɛSiríSwazilandiBisanga bya Turki mpé KaikoTsádiTerres australe" + - "s et antarctiques françaisesTogoTailandɛTazikisitáTokelauTimorɛ ya M" + - "oniɛlɛTikɛménisitáTiniziTongaTilikiTinidadɛ mpé TobagoTuvaluTaiwanin" + - "TanzaniIkrɛniUgandaAmerikiIrigweiUzibɛkisitáVatikáSántu vesá mpé Gel" + - "enadinɛVenézuelaBisanga bya Vierzi ya Angɛlɛtɛ́lɛBisanga bya Vierzi " + - "ya AmerikiViyetinamɛVanuatuWalisɛ mpé FutunaSamoaYemɛnɛMayotɛAfríka " + - "ya SúdiZambiZimbabwe", - []uint16{ // 259 elements + "orisiBelizɛKanadaRepublíki ya Kongó DemokratíkiRepibiki ya Afríka ya" + + " KátiKongoSwisɛKotídivualɛBisanga bya KookɛSíliKamɛruneSinɛKolombiKo" + + "sitarikaKibaBisanga bya KapevɛrɛSípɛlɛShekiaAlemaniDzibutiDanɛmarike" + + "DomínikeRepibiki ya DomínikɛAlizɛriEkwatɛ́lɛEsitoniEzípiteElitelɛEsi" + + "panyeEtsíopiFilandɛFidziBisanga bya MaluniMikroneziFalánsɛGabɔAngɛlɛ" + + "tɛ́lɛGelenadɛZorziGiyanɛ ya FalánsɛGuerneseyGanaZibatalɛGowelandeGam" + + "biGinɛGwadɛlupɛGinɛ́kwatɛ́lɛGelekiÎles de Géorgie du Sud et Sandwich" + + " du SudGwatémalaGwamɛGinɛbisauGiyaneIle Heard et Iles McDonaldOndura" + + "sɛKrowasiAyitiOngiliIndoneziIrelandɛIsirayelɛÍndɛMabelé ya Angɛlɛtɛ́" + + "lɛ na mbú ya IndiyaIrakiIrâIsilandɛItaliZamaikiZɔdaniZapɔKenyaKigizi" + + "sitáKambodzaKiribatiKomorɛSántu krístofe mpé Nevɛ̀sKorɛ ya nɔ́rdiKor" + + "ɛ ya súdiKowetiBisanga bya KayímaKazakisitáLawosiLibáSántu lisiLish" + + "ɛteniSirilankaLibériyaLesotoLitwaniLikisambuluLetoniLibíMarokɛMonak" + + "oMolidaviMonténégroMadagasikariBisanga bya MarishalɛMasedwanɛMalíBir" + + "manieMongolíBisanga bya Marianɛ ya nɔ́rdiMartinikiMoritaniMɔseraMali" + + "tɛMorisɛMadívɛMalawiMeksikeMaleziMozambíkiNamibiKaledoni ya sikaNizɛ" + + "rɛEsanga NorfokɛNizeryaNikaragwaOlandɛNorivezɛNepálɛNauruNyuéZelandɛ" + + " ya sikaOmánɛPanamaPéruPolinezi ya FalánsɛPapwazi Ginɛ ya sikaFilipi" + + "nɛPakisitáPoloniSántu pététo mpé MikelɔPikairniPɔtorikoPalɛsinePutúl" + + "ugɛsiPalauPalagweiKatariLenyoRomaniSerbieRisíRwandaAlabi SawuditɛBis" + + "anga SolomɔSɛshɛlɛSudáSwédɛSingapurɛSántu eleniSiloveniSilovakiSiera" + + " LeonɛSántu MarinɛSenegalɛSomaliSurinamɛSao Tomé mpé PresipɛSavadɔrɛ" + + "SiríSwazilandiBisanga bya Turki mpé KaikoTsádiTerres australes et an" + + "tarctiques françaisesTogoTailandɛTazikisitáTokelauTimorɛ ya MoniɛlɛT" + + "ikɛménisitáTiniziTongaTilikiTinidadɛ mpé TobagoTuvaluTaiwaninTanzani" + + "IkrɛniUgandaAmerikiIrigweiUzibɛkisitáVatikáSántu vesá mpé Gelenadinɛ" + + "VenézuelaBisanga bya Vierzi ya Angɛlɛtɛ́lɛBisanga bya Vierzi ya Amer" + + "ikiViyetinamɛVanuatuWalisɛ mpé FutunaSamoaYemɛnɛMayotɛAfríka ya Súdi" + + "ZambiZimbabwe", + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0014, 0x0020, 0x0033, 0x003a, 0x0041, 0x0047, 0x004e, 0x0059, 0x0064, 0x0074, 0x007b, 0x0083, 0x0088, 0x0088, 0x0095, 0x00ab, 0x00b5, 0x00c1, 0x00c9, 0x00d4, 0x00dc, 0x00e5, 0x00ec, 0x00f1, 0x00f1, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010e, 0x0117, 0x011e, 0x011e, 0x0126, 0x012f, 0x0136, 0x013c, - 0x013c, 0x015a, 0x0176, 0x017b, 0x0181, 0x018e, 0x01a0, 0x01a5, - 0x01ae, 0x01b3, 0x01ba, 0x01ba, 0x01c4, 0x01c8, 0x01de, 0x01de, - 0x01de, 0x01e7, 0x01f6, 0x01fd, 0x01fd, 0x0204, 0x020f, 0x0218, - // Entry 40 - 7F - 0x022e, 0x0236, 0x0236, 0x0242, 0x0249, 0x0251, 0x0251, 0x0259, - 0x0261, 0x0269, 0x0269, 0x0271, 0x0276, 0x0288, 0x0291, 0x0291, - 0x029a, 0x029f, 0x02af, 0x02b8, 0x02bd, 0x02d1, 0x02da, 0x02de, - 0x02e7, 0x02f0, 0x02f5, 0x02fa, 0x0305, 0x0317, 0x031d, 0x0348, - 0x0352, 0x0358, 0x0362, 0x0368, 0x0368, 0x0382, 0x038b, 0x0392, - 0x0397, 0x039d, 0x039d, 0x03a5, 0x03ae, 0x03b8, 0x03b8, 0x03be, - 0x03eb, 0x03f0, 0x03f4, 0x03fd, 0x0402, 0x0402, 0x0409, 0x0410, - 0x0415, 0x041a, 0x0425, 0x042d, 0x0435, 0x043c, 0x045a, 0x046b, - // Entry 80 - BF - 0x0479, 0x047f, 0x0492, 0x049d, 0x04a3, 0x04a8, 0x04b3, 0x04bd, - 0x04c6, 0x04cf, 0x04d5, 0x04dc, 0x04e7, 0x04ed, 0x04f2, 0x04f9, - 0x04ff, 0x0507, 0x0513, 0x0513, 0x051f, 0x0535, 0x053f, 0x0544, - 0x054c, 0x0554, 0x0554, 0x0574, 0x057d, 0x0585, 0x058c, 0x0593, - 0x059a, 0x05a2, 0x05a8, 0x05af, 0x05b5, 0x05bf, 0x05c5, 0x05d5, - 0x05dd, 0x05ec, 0x05f3, 0x05fc, 0x0603, 0x060c, 0x0614, 0x0619, - 0x061e, 0x062e, 0x0635, 0x063b, 0x0640, 0x0655, 0x066a, 0x0673, - 0x067c, 0x0682, 0x069e, 0x06a6, 0x06af, 0x06b8, 0x06c4, 0x06c9, - // Entry C0 - FF - 0x06d1, 0x06d7, 0x06d7, 0x06dc, 0x06e2, 0x06e8, 0x06ed, 0x06f3, - 0x0702, 0x0711, 0x071b, 0x0720, 0x0727, 0x0731, 0x073d, 0x0745, - 0x0745, 0x074d, 0x0759, 0x0767, 0x0770, 0x0776, 0x077f, 0x077f, - 0x0796, 0x07a0, 0x07a0, 0x07a5, 0x07af, 0x07af, 0x07cb, 0x07d1, - 0x07fd, 0x0801, 0x080a, 0x0815, 0x081c, 0x0830, 0x083f, 0x0845, - 0x084a, 0x0850, 0x0865, 0x086b, 0x0873, 0x087a, 0x0881, 0x0887, - 0x0887, 0x088e, 0x0895, 0x08a2, 0x08a9, 0x08c6, 0x08d0, 0x08f6, - 0x0913, 0x091e, 0x0925, 0x0938, 0x093d, 0x093d, 0x0945, 0x094c, - // Entry 100 - 13F - 0x095c, 0x0961, 0x0969, + 0x013c, 0x015d, 0x0179, 0x017e, 0x0184, 0x0191, 0x01a3, 0x01a8, + 0x01b1, 0x01b6, 0x01bd, 0x01bd, 0x01c7, 0x01cb, 0x01e1, 0x01e1, + 0x01e1, 0x01ea, 0x01f0, 0x01f7, 0x01f7, 0x01fe, 0x0209, 0x0212, + // Entry 40 - 7F + 0x0228, 0x0230, 0x0230, 0x023c, 0x0243, 0x024b, 0x024b, 0x0253, + 0x025b, 0x0263, 0x0263, 0x0263, 0x026b, 0x0270, 0x0282, 0x028b, + 0x028b, 0x0294, 0x0299, 0x02a9, 0x02b2, 0x02b7, 0x02cb, 0x02d4, + 0x02d8, 0x02e1, 0x02ea, 0x02ef, 0x02f4, 0x02ff, 0x0311, 0x0317, + 0x0342, 0x034c, 0x0352, 0x035c, 0x0362, 0x0362, 0x037c, 0x0385, + 0x038c, 0x0391, 0x0397, 0x0397, 0x039f, 0x03a8, 0x03b2, 0x03b2, + 0x03b8, 0x03e5, 0x03ea, 0x03ee, 0x03f7, 0x03fc, 0x03fc, 0x0403, + 0x040a, 0x040f, 0x0414, 0x041f, 0x0427, 0x042f, 0x0436, 0x0454, + // Entry 80 - BF + 0x0465, 0x0473, 0x0479, 0x048c, 0x0497, 0x049d, 0x04a2, 0x04ad, + 0x04b7, 0x04c0, 0x04c9, 0x04cf, 0x04d6, 0x04e1, 0x04e7, 0x04ec, + 0x04f3, 0x04f9, 0x0501, 0x050d, 0x050d, 0x0519, 0x052f, 0x0539, + 0x053e, 0x0546, 0x054e, 0x054e, 0x056e, 0x0577, 0x057f, 0x0586, + 0x058d, 0x0594, 0x059c, 0x05a2, 0x05a9, 0x05af, 0x05b9, 0x05bf, + 0x05cf, 0x05d7, 0x05e6, 0x05ed, 0x05f6, 0x05fd, 0x0606, 0x060e, + 0x0613, 0x0618, 0x0628, 0x062f, 0x0635, 0x063a, 0x064f, 0x0664, + 0x066d, 0x0676, 0x067c, 0x0698, 0x06a0, 0x06a9, 0x06b2, 0x06be, + // Entry C0 - FF + 0x06c3, 0x06cb, 0x06d1, 0x06d1, 0x06d6, 0x06dc, 0x06e2, 0x06e7, + 0x06ed, 0x06fc, 0x070b, 0x0715, 0x071a, 0x0721, 0x072b, 0x0737, + 0x073f, 0x073f, 0x0747, 0x0753, 0x0761, 0x076a, 0x0770, 0x0779, + 0x0779, 0x0790, 0x079a, 0x079a, 0x079f, 0x07a9, 0x07a9, 0x07c5, + 0x07cb, 0x07f7, 0x07fb, 0x0804, 0x080f, 0x0816, 0x082a, 0x0839, + 0x083f, 0x0844, 0x084a, 0x085f, 0x0865, 0x086d, 0x0874, 0x087b, + 0x0881, 0x0881, 0x0881, 0x0888, 0x088f, 0x089c, 0x08a3, 0x08c0, + 0x08ca, 0x08f0, 0x090d, 0x0918, 0x091f, 0x0932, 0x0937, 0x0937, + // Entry 100 - 13F + 0x093f, 0x0946, 0x0956, 0x095b, 0x0963, }, }, { // lo @@ -33802,7 +38389,7 @@ var regionHeaders = [220]header{ "بئرئزیلچینآلمانفأرانسەبیریتانیا گأپھئنئیتالیاجاپوٙنروٙسیەڤولاتیا یأکاگئر" + "تەراساگە نادیاردونیائفریقائمریکا شومالیئمریکا ھارگەھوم پئڤأند جأھوٙ" + "ن آڤمینجا ئمریکائمریکائمریکا ڤاروکارائیبآسیائوروٙپائمریکا لاتین", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -33815,12 +38402,12 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x002c, 0x002c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x001e, 0x002c, 0x002c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0059, 0x0059, 0x0059, + 0x0059, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry 80 - BF 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, @@ -33831,20 +38418,20 @@ var regionHeaders = [220]header{ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, // Entry C0 - FF - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0071, 0x0071, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0071, 0x0071, 0x0071, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, // Entry 100 - 13F - 0x0092, 0x0092, 0x0092, 0x00ab, 0x00b5, 0x00c1, 0x00da, 0x00f1, - 0x0116, 0x0116, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x0139, - 0x014e, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, - 0x015c, 0x015c, 0x0164, 0x0164, 0x0164, 0x0172, 0x0172, 0x0172, - 0x0172, 0x0189, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x00ab, 0x00b5, 0x00c1, + 0x00da, 0x00f1, 0x0116, 0x0116, 0x012d, 0x012d, 0x012d, 0x012d, + 0x012d, 0x0139, 0x014e, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, + 0x015c, 0x015c, 0x015c, 0x015c, 0x0164, 0x0164, 0x0164, 0x0172, + 0x0172, 0x0172, 0x0172, 0x0189, }, }, { // lt @@ -33883,7 +38470,7 @@ var regionHeaders = [220]header{ "tu vesa ne NgelenadineVenezuelaLutanda lua Vierzi wa AngeleteleLutan" + "da lua Vierzi wa AmerikiViyetinameVanuatuWalise ne FutunaSamoaYemenu" + "MayoteAfrika ya SúdiZambiZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0012, 0x001d, 0x002e, 0x0034, 0x003b, 0x0040, 0x0046, 0x0046, 0x0050, 0x0060, 0x0067, 0x006e, 0x0073, @@ -33895,33 +38482,33 @@ var regionHeaders = [220]header{ 0x01ae, 0x01b5, 0x01c7, 0x01ce, 0x01ce, 0x01d5, 0x01df, 0x01e7, // Entry 40 - 7F 0x01fa, 0x0201, 0x0201, 0x0209, 0x0210, 0x0217, 0x0217, 0x021e, - 0x0225, 0x022d, 0x022d, 0x0234, 0x0238, 0x024a, 0x0253, 0x0253, - 0x025b, 0x0260, 0x026a, 0x0273, 0x0279, 0x028b, 0x028b, 0x0290, - 0x029a, 0x02a4, 0x02a9, 0x02ae, 0x02b8, 0x02c5, 0x02cc, 0x02cc, - 0x02d6, 0x02dc, 0x02e6, 0x02ed, 0x02ed, 0x02ed, 0x02f5, 0x02fc, - 0x0301, 0x0307, 0x0307, 0x030f, 0x0317, 0x0320, 0x0320, 0x0324, - 0x034b, 0x0350, 0x0353, 0x035b, 0x0360, 0x0360, 0x0367, 0x036d, - 0x0371, 0x0376, 0x0380, 0x0388, 0x0390, 0x0396, 0x03ae, 0x03bb, - // Entry 80 - BF - 0x03ca, 0x03d0, 0x03e2, 0x03ec, 0x03f2, 0x03f6, 0x0400, 0x0409, - 0x0412, 0x041a, 0x0420, 0x0427, 0x0432, 0x0438, 0x043c, 0x0442, - 0x0448, 0x0450, 0x0450, 0x0450, 0x045c, 0x0471, 0x047a, 0x047e, - 0x0485, 0x048c, 0x048c, 0x04a8, 0x04b1, 0x04b9, 0x04bf, 0x04c5, - 0x04cb, 0x04d1, 0x04d7, 0x04de, 0x04e4, 0x04ed, 0x04f3, 0x0503, - 0x0509, 0x051b, 0x0522, 0x052b, 0x0532, 0x053a, 0x0542, 0x0547, - 0x054b, 0x055a, 0x055f, 0x0565, 0x0569, 0x057d, 0x0596, 0x059d, - 0x05a5, 0x05ac, 0x05c4, 0x05cc, 0x05d5, 0x05dd, 0x05e9, 0x05ee, - // Entry C0 - FF - 0x05f6, 0x05fc, 0x05fc, 0x0601, 0x0607, 0x0607, 0x060b, 0x0611, - 0x061e, 0x0630, 0x0637, 0x063b, 0x0641, 0x064a, 0x0655, 0x065d, - 0x065d, 0x0665, 0x0670, 0x067c, 0x0684, 0x068a, 0x0692, 0x0692, - 0x06a6, 0x06ae, 0x06ae, 0x06b2, 0x06bc, 0x06bc, 0x06d7, 0x06dd, - 0x06dd, 0x06e1, 0x06ea, 0x06f4, 0x06fb, 0x070b, 0x0717, 0x071d, - 0x0722, 0x0728, 0x073a, 0x0740, 0x0747, 0x074e, 0x0754, 0x075a, - 0x075a, 0x0761, 0x0768, 0x0773, 0x077a, 0x0793, 0x079c, 0x07bc, - 0x07d9, 0x07e3, 0x07ea, 0x07fa, 0x07ff, 0x07ff, 0x0805, 0x080b, - // Entry 100 - 13F - 0x081a, 0x081f, 0x0827, + 0x0225, 0x022d, 0x022d, 0x022d, 0x0234, 0x0238, 0x024a, 0x0253, + 0x0253, 0x025b, 0x0260, 0x026a, 0x0273, 0x0279, 0x028b, 0x028b, + 0x0290, 0x029a, 0x02a4, 0x02a9, 0x02ae, 0x02b8, 0x02c5, 0x02cc, + 0x02cc, 0x02d6, 0x02dc, 0x02e6, 0x02ed, 0x02ed, 0x02ed, 0x02f5, + 0x02fc, 0x0301, 0x0307, 0x0307, 0x030f, 0x0317, 0x0320, 0x0320, + 0x0324, 0x034b, 0x0350, 0x0353, 0x035b, 0x0360, 0x0360, 0x0367, + 0x036d, 0x0371, 0x0376, 0x0380, 0x0388, 0x0390, 0x0396, 0x03ae, + // Entry 80 - BF + 0x03bb, 0x03ca, 0x03d0, 0x03e2, 0x03ec, 0x03f2, 0x03f6, 0x0400, + 0x0409, 0x0412, 0x041a, 0x0420, 0x0427, 0x0432, 0x0438, 0x043c, + 0x0442, 0x0448, 0x0450, 0x0450, 0x0450, 0x045c, 0x0471, 0x047a, + 0x047e, 0x0485, 0x048c, 0x048c, 0x04a8, 0x04b1, 0x04b9, 0x04bf, + 0x04c5, 0x04cb, 0x04d1, 0x04d7, 0x04de, 0x04e4, 0x04ed, 0x04f3, + 0x0503, 0x0509, 0x051b, 0x0522, 0x052b, 0x0532, 0x053a, 0x0542, + 0x0547, 0x054b, 0x055a, 0x055f, 0x0565, 0x0569, 0x057d, 0x0596, + 0x059d, 0x05a5, 0x05ac, 0x05c4, 0x05cc, 0x05d5, 0x05dd, 0x05e9, + // Entry C0 - FF + 0x05ee, 0x05f6, 0x05fc, 0x05fc, 0x0601, 0x0607, 0x0607, 0x060b, + 0x0611, 0x061e, 0x0630, 0x0637, 0x063b, 0x0641, 0x064a, 0x0655, + 0x065d, 0x065d, 0x0665, 0x0670, 0x067c, 0x0684, 0x068a, 0x0692, + 0x0692, 0x06a6, 0x06ae, 0x06ae, 0x06b2, 0x06bc, 0x06bc, 0x06d7, + 0x06dd, 0x06dd, 0x06e1, 0x06ea, 0x06f4, 0x06fb, 0x070b, 0x0717, + 0x071d, 0x0722, 0x0728, 0x073a, 0x0740, 0x0747, 0x074e, 0x0754, + 0x075a, 0x075a, 0x075a, 0x0761, 0x0768, 0x0773, 0x077a, 0x0793, + 0x079c, 0x07bc, 0x07d9, 0x07e3, 0x07ea, 0x07fa, 0x07ff, 0x07ff, + // Entry 100 - 13F + 0x0805, 0x080b, 0x081a, 0x081f, 0x0827, }, }, { // luo @@ -33956,7 +38543,7 @@ var regionHeaders = [220]header{ "t gi GrenadinesVenezuelaBritish Virgin IslandsU.S. Virgin IslandsVie" + "tnamVanuatuWallis gi FutunaSamoaYemenMayotteSouth AfricaZambiaZimbab" + "we", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001b, 0x0026, 0x0038, 0x0040, 0x0047, 0x004e, 0x0054, 0x0054, 0x005d, 0x006b, 0x0072, 0x007b, 0x0080, @@ -33968,33 +38555,33 @@ var regionHeaders = [220]header{ 0x01b6, 0x01bc, 0x01ca, 0x01d1, 0x01d1, 0x01d9, 0x01e0, 0x01e8, // Entry 40 - 7F 0x01fa, 0x0201, 0x0201, 0x0208, 0x020f, 0x0214, 0x0214, 0x021b, - 0x0220, 0x0228, 0x0228, 0x022f, 0x0233, 0x0245, 0x024f, 0x024f, - 0x0255, 0x025a, 0x0268, 0x026f, 0x0276, 0x0283, 0x0283, 0x0288, - 0x0291, 0x029a, 0x02a0, 0x02a6, 0x02b0, 0x02c1, 0x02c7, 0x02c7, - 0x02d0, 0x02d4, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02ef, 0x02f6, - 0x02fb, 0x0302, 0x0302, 0x030b, 0x0312, 0x0318, 0x0318, 0x031d, - 0x033b, 0x033f, 0x0343, 0x034a, 0x034f, 0x034f, 0x0356, 0x035c, - 0x0361, 0x0366, 0x0370, 0x0378, 0x0380, 0x0387, 0x039b, 0x03a7, - // Entry 80 - BF - 0x03b4, 0x03ba, 0x03c8, 0x03d2, 0x03d6, 0x03dd, 0x03e8, 0x03f5, - 0x03fe, 0x0405, 0x040c, 0x0415, 0x041f, 0x0425, 0x042a, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0448, 0x045a, 0x0463, 0x0467, - 0x046e, 0x0476, 0x0476, 0x048e, 0x0498, 0x04a2, 0x04ac, 0x04b1, - 0x04ba, 0x04c2, 0x04c8, 0x04ce, 0x04d6, 0x04e0, 0x04e7, 0x04f4, - 0x04f9, 0x050a, 0x0511, 0x051a, 0x0525, 0x052b, 0x0530, 0x0535, - 0x0539, 0x0544, 0x0548, 0x054e, 0x0552, 0x0562, 0x0572, 0x057d, - 0x0585, 0x058b, 0x05a3, 0x05ab, 0x05b6, 0x05d3, 0x05db, 0x05e0, - // Entry C0 - FF - 0x05e8, 0x05ed, 0x05ed, 0x05f5, 0x05fc, 0x05fc, 0x0602, 0x0608, - 0x0614, 0x0623, 0x062d, 0x0632, 0x0638, 0x0641, 0x064d, 0x0655, - 0x0655, 0x065d, 0x0669, 0x0673, 0x067a, 0x0681, 0x0689, 0x0689, - 0x06a0, 0x06ab, 0x06ab, 0x06b0, 0x06b9, 0x06b9, 0x06d0, 0x06d4, - 0x06d4, 0x06d8, 0x06e0, 0x06ea, 0x06f1, 0x06fb, 0x0707, 0x070e, - 0x0713, 0x0719, 0x072b, 0x0731, 0x0737, 0x073f, 0x0746, 0x074c, - 0x074c, 0x074f, 0x0756, 0x0760, 0x076d, 0x0788, 0x0791, 0x07a7, - 0x07ba, 0x07c1, 0x07c8, 0x07d8, 0x07dd, 0x07dd, 0x07e2, 0x07e9, - // Entry 100 - 13F - 0x07f5, 0x07fb, 0x0803, + 0x0220, 0x0228, 0x0228, 0x0228, 0x022f, 0x0233, 0x0245, 0x024f, + 0x024f, 0x0255, 0x025a, 0x0268, 0x026f, 0x0276, 0x0283, 0x0283, + 0x0288, 0x0291, 0x029a, 0x02a0, 0x02a6, 0x02b0, 0x02c1, 0x02c7, + 0x02c7, 0x02d0, 0x02d4, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02ef, + 0x02f6, 0x02fb, 0x0302, 0x0302, 0x030b, 0x0312, 0x0318, 0x0318, + 0x031d, 0x033b, 0x033f, 0x0343, 0x034a, 0x034f, 0x034f, 0x0356, + 0x035c, 0x0361, 0x0366, 0x0370, 0x0378, 0x0380, 0x0387, 0x039b, + // Entry 80 - BF + 0x03a7, 0x03b4, 0x03ba, 0x03c8, 0x03d2, 0x03d6, 0x03dd, 0x03e8, + 0x03f5, 0x03fe, 0x0405, 0x040c, 0x0415, 0x041f, 0x0425, 0x042a, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0448, 0x045a, 0x0463, + 0x0467, 0x046e, 0x0476, 0x0476, 0x048e, 0x0498, 0x04a2, 0x04ac, + 0x04b1, 0x04ba, 0x04c2, 0x04c8, 0x04ce, 0x04d6, 0x04e0, 0x04e7, + 0x04f4, 0x04f9, 0x050a, 0x0511, 0x051a, 0x0525, 0x052b, 0x0530, + 0x0535, 0x0539, 0x0544, 0x0548, 0x054e, 0x0552, 0x0562, 0x0572, + 0x057d, 0x0585, 0x058b, 0x05a3, 0x05ab, 0x05b6, 0x05d3, 0x05db, + // Entry C0 - FF + 0x05e0, 0x05e8, 0x05ed, 0x05ed, 0x05f5, 0x05fc, 0x05fc, 0x0602, + 0x0608, 0x0614, 0x0623, 0x062d, 0x0632, 0x0638, 0x0641, 0x064d, + 0x0655, 0x0655, 0x065d, 0x0669, 0x0673, 0x067a, 0x0681, 0x0689, + 0x0689, 0x06a0, 0x06ab, 0x06ab, 0x06b0, 0x06b9, 0x06b9, 0x06d0, + 0x06d4, 0x06d4, 0x06d8, 0x06e0, 0x06ea, 0x06f1, 0x06fb, 0x0707, + 0x070e, 0x0713, 0x0719, 0x072b, 0x0731, 0x0737, 0x073f, 0x0746, + 0x074c, 0x074c, 0x074c, 0x074f, 0x0756, 0x0760, 0x076d, 0x0788, + 0x0791, 0x07a7, 0x07ba, 0x07c1, 0x07c8, 0x07d8, 0x07dd, 0x07dd, + // Entry 100 - 13F + 0x07e2, 0x07e9, 0x07f5, 0x07fb, 0x0803, }, }, { // luy @@ -34029,7 +38616,7 @@ var regionHeaders = [220]header{ "ntavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiw" + "a vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniM" + "ayotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x006a, 0x0071, 0x007a, 0x007f, @@ -34041,33 +38628,33 @@ var regionHeaders = [220]header{ 0x01aa, 0x01b1, 0x01c1, 0x01ca, 0x01ca, 0x01d0, 0x01d7, 0x01df, // Entry 40 - 7F 0x01f2, 0x01f9, 0x01f9, 0x01ff, 0x0206, 0x020b, 0x020b, 0x0212, - 0x021a, 0x0222, 0x0222, 0x0227, 0x022b, 0x023e, 0x0248, 0x0248, - 0x0250, 0x0256, 0x025f, 0x0266, 0x026b, 0x027e, 0x027e, 0x0283, - 0x028b, 0x0294, 0x029a, 0x029e, 0x02a7, 0x02b0, 0x02b7, 0x02b7, - 0x02c0, 0x02c4, 0x02cd, 0x02d3, 0x02d3, 0x02d3, 0x02dc, 0x02e3, - 0x02e8, 0x02f0, 0x02f0, 0x02f9, 0x0301, 0x0308, 0x0308, 0x030d, - 0x0332, 0x0337, 0x033d, 0x0345, 0x034b, 0x034b, 0x0352, 0x0359, - 0x035f, 0x0364, 0x0371, 0x0379, 0x0381, 0x0387, 0x039a, 0x03a9, - // Entry 80 - BF - 0x03b5, 0x03bc, 0x03cd, 0x03d8, 0x03dd, 0x03e5, 0x03ef, 0x03f9, - 0x0402, 0x0409, 0x040f, 0x0417, 0x0420, 0x0427, 0x042c, 0x0432, - 0x0438, 0x043f, 0x043f, 0x043f, 0x0445, 0x0457, 0x0460, 0x0464, - 0x0469, 0x0471, 0x0471, 0x0491, 0x049a, 0x04a3, 0x04ae, 0x04b3, - 0x04b9, 0x04bf, 0x04c5, 0x04cc, 0x04d3, 0x04db, 0x04e2, 0x04ee, - 0x04f4, 0x0505, 0x050c, 0x0515, 0x051d, 0x0522, 0x0528, 0x052d, - 0x0531, 0x053b, 0x0540, 0x0546, 0x054a, 0x055f, 0x0564, 0x056c, - 0x0575, 0x057c, 0x0592, 0x059b, 0x05a4, 0x05d6, 0x05db, 0x05e0, - // Entry C0 - FF - 0x05e8, 0x05ee, 0x05ee, 0x05f7, 0x05fe, 0x05fe, 0x0603, 0x0609, - 0x060e, 0x0620, 0x062a, 0x0630, 0x0636, 0x063e, 0x0649, 0x0651, - 0x0651, 0x0659, 0x0664, 0x066c, 0x0674, 0x067b, 0x0683, 0x0683, - 0x0697, 0x069f, 0x069f, 0x06a4, 0x06aa, 0x06aa, 0x06c3, 0x06c8, - 0x06c8, 0x06cc, 0x06d4, 0x06df, 0x06e6, 0x06f9, 0x0708, 0x070f, - 0x0714, 0x071b, 0x072d, 0x0733, 0x073a, 0x0742, 0x0749, 0x074f, - 0x074f, 0x0757, 0x075e, 0x076a, 0x0772, 0x078b, 0x0794, 0x07b3, - 0x07d1, 0x07da, 0x07e1, 0x07f0, 0x07f5, 0x07f5, 0x07fb, 0x0802, - // Entry 100 - 13F - 0x080f, 0x0815, 0x081d, + 0x021a, 0x0222, 0x0222, 0x0222, 0x0227, 0x022b, 0x023e, 0x0248, + 0x0248, 0x0250, 0x0256, 0x025f, 0x0266, 0x026b, 0x027e, 0x027e, + 0x0283, 0x028b, 0x0294, 0x029a, 0x029e, 0x02a7, 0x02b0, 0x02b7, + 0x02b7, 0x02c0, 0x02c4, 0x02cd, 0x02d3, 0x02d3, 0x02d3, 0x02dc, + 0x02e3, 0x02e8, 0x02f0, 0x02f0, 0x02f9, 0x0301, 0x0308, 0x0308, + 0x030d, 0x0332, 0x0337, 0x033d, 0x0345, 0x034b, 0x034b, 0x0352, + 0x0359, 0x035f, 0x0364, 0x0371, 0x0379, 0x0381, 0x0387, 0x039a, + // Entry 80 - BF + 0x03a9, 0x03b5, 0x03bc, 0x03cd, 0x03d8, 0x03dd, 0x03e5, 0x03ef, + 0x03f9, 0x0402, 0x0409, 0x040f, 0x0417, 0x0420, 0x0427, 0x042c, + 0x0432, 0x0438, 0x043f, 0x043f, 0x043f, 0x0445, 0x0457, 0x0460, + 0x0464, 0x0469, 0x0471, 0x0471, 0x0491, 0x049a, 0x04a3, 0x04ae, + 0x04b3, 0x04b9, 0x04bf, 0x04c5, 0x04cc, 0x04d3, 0x04db, 0x04e2, + 0x04ee, 0x04f4, 0x0505, 0x050c, 0x0515, 0x051d, 0x0522, 0x0528, + 0x052d, 0x0531, 0x053b, 0x0540, 0x0546, 0x054a, 0x055f, 0x0564, + 0x056c, 0x0575, 0x057c, 0x0592, 0x059b, 0x05a4, 0x05d6, 0x05db, + // Entry C0 - FF + 0x05e0, 0x05e8, 0x05ee, 0x05ee, 0x05f7, 0x05fe, 0x05fe, 0x0603, + 0x0609, 0x060e, 0x0620, 0x062a, 0x0630, 0x0636, 0x063e, 0x0649, + 0x0651, 0x0651, 0x0659, 0x0664, 0x066c, 0x0674, 0x067b, 0x0683, + 0x0683, 0x0697, 0x069f, 0x069f, 0x06a4, 0x06aa, 0x06aa, 0x06c3, + 0x06c8, 0x06c8, 0x06cc, 0x06d4, 0x06df, 0x06e6, 0x06f9, 0x0708, + 0x070f, 0x0714, 0x071b, 0x072d, 0x0733, 0x073a, 0x0742, 0x0749, + 0x074f, 0x074f, 0x074f, 0x0757, 0x075e, 0x076a, 0x0772, 0x078b, + 0x0794, 0x07b3, 0x07d1, 0x07da, 0x07e1, 0x07f0, 0x07f5, 0x07f5, + // Entry 100 - 13F + 0x07fb, 0x0802, 0x080f, 0x0815, 0x081d, }, }, { // lv @@ -34106,7 +38693,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniSambiaSimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -34118,33 +38705,33 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // mer @@ -34179,7 +38766,7 @@ var regionHeaders = [220]header{ "aniVatikaniSantavisenti na GrenadiniVenezuelaAĩrandi cia Virgin cia " + "NgerethaAĩrandi cia Virgin cia AmerikaVietinamuVanuatuWalis na Futun" + "aSamoaYemeniMayotteAfrika ya SouthiZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0045, 0x004c, 0x0052, 0x0052, 0x005a, 0x006a, 0x0072, 0x007c, 0x0081, @@ -34191,33 +38778,33 @@ var regionHeaders = [220]header{ 0x01b7, 0x01c0, 0x01ce, 0x01d6, 0x01d6, 0x01dc, 0x01e4, 0x01ec, // Entry 40 - 7F 0x01fd, 0x0204, 0x0204, 0x020a, 0x0211, 0x0217, 0x0217, 0x021e, - 0x0224, 0x022c, 0x022c, 0x0235, 0x0239, 0x024f, 0x0259, 0x0259, - 0x025f, 0x0265, 0x026d, 0x0274, 0x0279, 0x028a, 0x028a, 0x028f, - 0x0298, 0x02a4, 0x02aa, 0x02ae, 0x02b7, 0x02c5, 0x02cc, 0x02cc, - 0x02d5, 0x02d9, 0x02e2, 0x02e8, 0x02e8, 0x02e8, 0x02f1, 0x02fa, - 0x02ff, 0x0307, 0x0307, 0x0310, 0x0317, 0x031f, 0x031f, 0x0324, - 0x0353, 0x0358, 0x035d, 0x0366, 0x036c, 0x036c, 0x0373, 0x037c, - 0x0382, 0x0387, 0x0394, 0x039c, 0x03a4, 0x03aa, 0x03bd, 0x03c8, - // Entry 80 - BF - 0x03d5, 0x03dd, 0x03f0, 0x03fb, 0x0400, 0x0408, 0x0412, 0x041c, - 0x0425, 0x042c, 0x0433, 0x043c, 0x0445, 0x044c, 0x0452, 0x0458, - 0x045e, 0x0465, 0x0465, 0x0465, 0x046f, 0x0483, 0x048c, 0x0490, - 0x0497, 0x049f, 0x049f, 0x04bc, 0x04c5, 0x04cf, 0x04da, 0x04df, - 0x04ea, 0x04f0, 0x04f6, 0x04fc, 0x0504, 0x050d, 0x0514, 0x0525, - 0x0529, 0x053c, 0x0543, 0x054c, 0x0553, 0x0558, 0x055e, 0x0563, - 0x0567, 0x0571, 0x0576, 0x057c, 0x0580, 0x0593, 0x0598, 0x05a0, - 0x05a9, 0x05b0, 0x05c6, 0x05cf, 0x05d8, 0x0605, 0x060b, 0x0610, - // Entry C0 - FF - 0x0618, 0x061c, 0x061c, 0x0625, 0x062c, 0x062c, 0x0632, 0x0638, - 0x063d, 0x0650, 0x065a, 0x0660, 0x0667, 0x066f, 0x067a, 0x0682, - 0x0682, 0x068a, 0x0695, 0x069d, 0x06a3, 0x06aa, 0x06b2, 0x06b2, - 0x06c6, 0x06ce, 0x06ce, 0x06d3, 0x06dd, 0x06dd, 0x06f8, 0x06fd, - 0x06fd, 0x0701, 0x070b, 0x0716, 0x071d, 0x072b, 0x0738, 0x073f, - 0x0744, 0x0749, 0x075b, 0x0761, 0x0768, 0x0770, 0x0778, 0x077e, - 0x077e, 0x0785, 0x078c, 0x0798, 0x07a0, 0x07b9, 0x07c2, 0x07e2, - 0x0801, 0x080a, 0x0811, 0x0820, 0x0825, 0x0825, 0x082b, 0x0832, - // Entry 100 - 13F - 0x0842, 0x0848, 0x0850, + 0x0224, 0x022c, 0x022c, 0x022c, 0x0235, 0x0239, 0x024f, 0x0259, + 0x0259, 0x025f, 0x0265, 0x026d, 0x0274, 0x0279, 0x028a, 0x028a, + 0x028f, 0x0298, 0x02a4, 0x02aa, 0x02ae, 0x02b7, 0x02c5, 0x02cc, + 0x02cc, 0x02d5, 0x02d9, 0x02e2, 0x02e8, 0x02e8, 0x02e8, 0x02f1, + 0x02fa, 0x02ff, 0x0307, 0x0307, 0x0310, 0x0317, 0x031f, 0x031f, + 0x0324, 0x0353, 0x0358, 0x035d, 0x0366, 0x036c, 0x036c, 0x0373, + 0x037c, 0x0382, 0x0387, 0x0394, 0x039c, 0x03a4, 0x03aa, 0x03bd, + // Entry 80 - BF + 0x03c8, 0x03d5, 0x03dd, 0x03f0, 0x03fb, 0x0400, 0x0408, 0x0412, + 0x041c, 0x0425, 0x042c, 0x0433, 0x043c, 0x0445, 0x044c, 0x0452, + 0x0458, 0x045e, 0x0465, 0x0465, 0x0465, 0x046f, 0x0483, 0x048c, + 0x0490, 0x0497, 0x049f, 0x049f, 0x04bc, 0x04c5, 0x04cf, 0x04da, + 0x04df, 0x04ea, 0x04f0, 0x04f6, 0x04fc, 0x0504, 0x050d, 0x0514, + 0x0525, 0x0529, 0x053c, 0x0543, 0x054c, 0x0553, 0x0558, 0x055e, + 0x0563, 0x0567, 0x0571, 0x0576, 0x057c, 0x0580, 0x0593, 0x0598, + 0x05a0, 0x05a9, 0x05b0, 0x05c6, 0x05cf, 0x05d8, 0x0605, 0x060b, + // Entry C0 - FF + 0x0610, 0x0618, 0x061c, 0x061c, 0x0625, 0x062c, 0x062c, 0x0632, + 0x0638, 0x063d, 0x0650, 0x065a, 0x0660, 0x0667, 0x066f, 0x067a, + 0x0682, 0x0682, 0x068a, 0x0695, 0x069d, 0x06a3, 0x06aa, 0x06b2, + 0x06b2, 0x06c6, 0x06ce, 0x06ce, 0x06d3, 0x06dd, 0x06dd, 0x06f8, + 0x06fd, 0x06fd, 0x0701, 0x070b, 0x0716, 0x071d, 0x072b, 0x0738, + 0x073f, 0x0744, 0x0749, 0x075b, 0x0761, 0x0768, 0x0770, 0x0778, + 0x077e, 0x077e, 0x077e, 0x0785, 0x078c, 0x0798, 0x07a0, 0x07b9, + 0x07c2, 0x07e2, 0x0801, 0x080a, 0x0811, 0x0820, 0x0825, 0x0825, + // Entry 100 - 13F + 0x082b, 0x0832, 0x0842, 0x0848, 0x0850, }, }, { // mfe @@ -34249,7 +38836,7 @@ var regionHeaders = [220]header{ "zaniIkrennOugandaLamerikUruguayOuzbekistanLata VatikanSaint-Vincent-" + "ek-GrenadinesVenezuelaZil vierz britanikZil Vierz LamerikVietnamVanu" + "atuWallis-ek-FutunaSamoaYemennMayotSid-AfrikZambiZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0005, 0x0013, 0x001d, 0x002f, 0x0037, 0x003d, 0x0043, 0x0049, 0x0049, 0x0053, 0x0061, 0x0068, 0x0070, 0x0075, @@ -34261,33 +38848,33 @@ var regionHeaders = [220]header{ 0x0190, 0x0196, 0x01a3, 0x01a9, 0x01a9, 0x01b1, 0x01b9, 0x01c0, // Entry 40 - 7F 0x01d2, 0x01d8, 0x01d8, 0x01df, 0x01e5, 0x01eb, 0x01eb, 0x01f2, - 0x01f9, 0x0200, 0x0200, 0x0207, 0x020c, 0x0217, 0x0220, 0x0220, - 0x0227, 0x022c, 0x023a, 0x0240, 0x0246, 0x0254, 0x0254, 0x0259, - 0x0262, 0x026b, 0x0270, 0x0274, 0x027c, 0x028b, 0x028f, 0x028f, - 0x0298, 0x029c, 0x02a6, 0x02ac, 0x02ac, 0x02ac, 0x02b4, 0x02ba, - 0x02be, 0x02c3, 0x02c3, 0x02cb, 0x02d1, 0x02d7, 0x02d7, 0x02db, - 0x02fa, 0x02fe, 0x0302, 0x0308, 0x030d, 0x030d, 0x0313, 0x031a, - 0x031f, 0x0324, 0x0330, 0x0337, 0x033f, 0x0344, 0x0360, 0x036c, - // Entry 80 - BF - 0x0378, 0x037e, 0x0388, 0x0391, 0x0395, 0x039a, 0x03a6, 0x03b3, - 0x03bc, 0x03c3, 0x03c9, 0x03d0, 0x03da, 0x03e0, 0x03e4, 0x03e9, - 0x03ef, 0x03f6, 0x03f6, 0x03f6, 0x0400, 0x040c, 0x0415, 0x0419, - 0x0420, 0x0427, 0x0427, 0x0438, 0x0440, 0x0448, 0x0450, 0x0454, - 0x0459, 0x045f, 0x0465, 0x046a, 0x0470, 0x0478, 0x047e, 0x048d, - 0x0492, 0x049d, 0x04a4, 0x04ad, 0x04b2, 0x04b8, 0x04bd, 0x04c2, - 0x04c7, 0x04d4, 0x04d8, 0x04de, 0x04e3, 0x04f2, 0x0506, 0x050e, - 0x0516, 0x051c, 0x0534, 0x053c, 0x0546, 0x0558, 0x0560, 0x0565, - // Entry C0 - FF - 0x056d, 0x0572, 0x0572, 0x057a, 0x0581, 0x0581, 0x0587, 0x058d, - 0x059b, 0x05a6, 0x05ab, 0x05b1, 0x05b7, 0x05c0, 0x05cf, 0x05d6, - 0x05d6, 0x05dd, 0x05e9, 0x05f4, 0x05fb, 0x0601, 0x0608, 0x0608, - 0x061d, 0x0625, 0x0625, 0x062b, 0x0634, 0x0634, 0x0647, 0x064c, - 0x064c, 0x0650, 0x0658, 0x0663, 0x066a, 0x0678, 0x0684, 0x068a, - 0x068f, 0x0694, 0x06a5, 0x06ab, 0x06b1, 0x06b8, 0x06be, 0x06c5, - 0x06c5, 0x06cc, 0x06d3, 0x06de, 0x06ea, 0x0705, 0x070e, 0x0720, - 0x0731, 0x0738, 0x073f, 0x074f, 0x0754, 0x0754, 0x075a, 0x075f, - // Entry 100 - 13F - 0x0768, 0x076d, 0x0775, + 0x01f9, 0x0200, 0x0200, 0x0200, 0x0207, 0x020c, 0x0217, 0x0220, + 0x0220, 0x0227, 0x022c, 0x023a, 0x0240, 0x0246, 0x0254, 0x0254, + 0x0259, 0x0262, 0x026b, 0x0270, 0x0274, 0x027c, 0x028b, 0x028f, + 0x028f, 0x0298, 0x029c, 0x02a6, 0x02ac, 0x02ac, 0x02ac, 0x02b4, + 0x02ba, 0x02be, 0x02c3, 0x02c3, 0x02cb, 0x02d1, 0x02d7, 0x02d7, + 0x02db, 0x02fa, 0x02fe, 0x0302, 0x0308, 0x030d, 0x030d, 0x0313, + 0x031a, 0x031f, 0x0324, 0x0330, 0x0337, 0x033f, 0x0344, 0x0360, + // Entry 80 - BF + 0x036c, 0x0378, 0x037e, 0x0388, 0x0391, 0x0395, 0x039a, 0x03a6, + 0x03b3, 0x03bc, 0x03c3, 0x03c9, 0x03d0, 0x03da, 0x03e0, 0x03e4, + 0x03e9, 0x03ef, 0x03f6, 0x03f6, 0x03f6, 0x0400, 0x040c, 0x0415, + 0x0419, 0x0420, 0x0427, 0x0427, 0x0438, 0x0440, 0x0448, 0x0450, + 0x0454, 0x0459, 0x045f, 0x0465, 0x046a, 0x0470, 0x0478, 0x047e, + 0x048d, 0x0492, 0x049d, 0x04a4, 0x04ad, 0x04b2, 0x04b8, 0x04bd, + 0x04c2, 0x04c7, 0x04d4, 0x04d8, 0x04de, 0x04e3, 0x04f2, 0x0506, + 0x050e, 0x0516, 0x051c, 0x0534, 0x053c, 0x0546, 0x0558, 0x0560, + // Entry C0 - FF + 0x0565, 0x056d, 0x0572, 0x0572, 0x057a, 0x0581, 0x0581, 0x0587, + 0x058d, 0x059b, 0x05a6, 0x05ab, 0x05b1, 0x05b7, 0x05c0, 0x05cf, + 0x05d6, 0x05d6, 0x05dd, 0x05e9, 0x05f4, 0x05fb, 0x0601, 0x0608, + 0x0608, 0x061d, 0x0625, 0x0625, 0x062b, 0x0634, 0x0634, 0x0647, + 0x064c, 0x064c, 0x0650, 0x0658, 0x0663, 0x066a, 0x0678, 0x0684, + 0x068a, 0x068f, 0x0694, 0x06a5, 0x06ab, 0x06b1, 0x06b8, 0x06be, + 0x06c5, 0x06c5, 0x06c5, 0x06cc, 0x06d3, 0x06de, 0x06ea, 0x0705, + 0x070e, 0x0720, 0x0731, 0x0738, 0x073f, 0x074f, 0x0754, 0x0754, + // Entry 100 - 13F + 0x075a, 0x075f, 0x0768, 0x076d, 0x0775, }, }, { // mg @@ -34322,7 +38909,7 @@ var regionHeaders = [220]header{ "t-les GrenadinesVenezoelàNosy britanika virijinyNosy Virijiny Etazon" + "iaVietnamVanoatòWallis sy FutunaSamoaYemenMayôtyAfrika AtsimoZambiaZ" + "imbaboe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001e, 0x0029, 0x003a, 0x0042, 0x0049, 0x0050, 0x0056, 0x0056, 0x005f, 0x0070, 0x0077, 0x0080, 0x0086, @@ -34334,33 +38921,33 @@ var regionHeaders = [220]header{ 0x01b5, 0x01ba, 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e5, 0x01ed, // Entry 40 - 7F 0x0203, 0x020a, 0x020a, 0x0212, 0x0219, 0x021f, 0x021f, 0x0226, - 0x022d, 0x0235, 0x0235, 0x023d, 0x0242, 0x024e, 0x0259, 0x0259, - 0x0260, 0x0265, 0x026e, 0x0275, 0x027c, 0x028b, 0x028b, 0x0290, - 0x029a, 0x02a3, 0x02a9, 0x02ae, 0x02b7, 0x02c6, 0x02cb, 0x02cb, - 0x02d5, 0x02d9, 0x02e4, 0x02ea, 0x02ea, 0x02ea, 0x02f4, 0x02fb, - 0x0300, 0x0307, 0x0307, 0x0310, 0x0317, 0x031e, 0x031e, 0x0322, - 0x0343, 0x0347, 0x034b, 0x0352, 0x0358, 0x0358, 0x0360, 0x0368, - 0x036e, 0x0373, 0x037d, 0x0386, 0x038e, 0x0396, 0x03b2, 0x03c0, - // Entry 80 - BF - 0x03cc, 0x03d3, 0x03de, 0x03e8, 0x03ed, 0x03f3, 0x03ff, 0x040a, - 0x0413, 0x041a, 0x0421, 0x0429, 0x0434, 0x043b, 0x0440, 0x0447, - 0x044f, 0x0458, 0x0458, 0x0458, 0x0464, 0x0471, 0x047a, 0x047e, - 0x0485, 0x048f, 0x048f, 0x04a6, 0x04af, 0x04b9, 0x04c3, 0x04c8, - 0x04cf, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f5, 0x04fc, 0x050f, - 0x0514, 0x0520, 0x0527, 0x0531, 0x0538, 0x0540, 0x0546, 0x054c, - 0x0551, 0x0562, 0x0566, 0x056c, 0x0571, 0x0583, 0x059d, 0x05a5, - 0x05ad, 0x05b5, 0x05cd, 0x05d5, 0x05e2, 0x05eb, 0x05f6, 0x05fb, - // Entry C0 - FF - 0x0603, 0x0608, 0x0608, 0x0610, 0x0617, 0x0617, 0x061c, 0x0622, - 0x0630, 0x063d, 0x0645, 0x064a, 0x064f, 0x0658, 0x0667, 0x066f, - 0x066f, 0x0677, 0x0683, 0x068e, 0x0695, 0x069c, 0x06a3, 0x06a3, - 0x06ba, 0x06c5, 0x06c5, 0x06ca, 0x06d4, 0x06d4, 0x06ea, 0x06ef, - 0x06ef, 0x06f3, 0x06fc, 0x0706, 0x070d, 0x071d, 0x0729, 0x0730, - 0x0736, 0x073c, 0x074f, 0x0756, 0x075d, 0x0765, 0x076c, 0x0772, - 0x0772, 0x077a, 0x0781, 0x078b, 0x079f, 0x07be, 0x07c8, 0x07df, - 0x07f5, 0x07fc, 0x0804, 0x0814, 0x0819, 0x0819, 0x081e, 0x0825, - // Entry 100 - 13F - 0x0832, 0x0838, 0x0840, + 0x022d, 0x0235, 0x0235, 0x0235, 0x023d, 0x0242, 0x024e, 0x0259, + 0x0259, 0x0260, 0x0265, 0x026e, 0x0275, 0x027c, 0x028b, 0x028b, + 0x0290, 0x029a, 0x02a3, 0x02a9, 0x02ae, 0x02b7, 0x02c6, 0x02cb, + 0x02cb, 0x02d5, 0x02d9, 0x02e4, 0x02ea, 0x02ea, 0x02ea, 0x02f4, + 0x02fb, 0x0300, 0x0307, 0x0307, 0x0310, 0x0317, 0x031e, 0x031e, + 0x0322, 0x0343, 0x0347, 0x034b, 0x0352, 0x0358, 0x0358, 0x0360, + 0x0368, 0x036e, 0x0373, 0x037d, 0x0386, 0x038e, 0x0396, 0x03b2, + // Entry 80 - BF + 0x03c0, 0x03cc, 0x03d3, 0x03de, 0x03e8, 0x03ed, 0x03f3, 0x03ff, + 0x040a, 0x0413, 0x041a, 0x0421, 0x0429, 0x0434, 0x043b, 0x0440, + 0x0447, 0x044f, 0x0458, 0x0458, 0x0458, 0x0464, 0x0471, 0x047a, + 0x047e, 0x0485, 0x048f, 0x048f, 0x04a6, 0x04af, 0x04b9, 0x04c3, + 0x04c8, 0x04cf, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f5, 0x04fc, + 0x050f, 0x0514, 0x0520, 0x0527, 0x0531, 0x0538, 0x0540, 0x0546, + 0x054c, 0x0551, 0x0562, 0x0566, 0x056c, 0x0571, 0x0583, 0x059d, + 0x05a5, 0x05ad, 0x05b5, 0x05cd, 0x05d5, 0x05e2, 0x05eb, 0x05f6, + // Entry C0 - FF + 0x05fb, 0x0603, 0x0608, 0x0608, 0x0610, 0x0617, 0x0617, 0x061c, + 0x0622, 0x0630, 0x063d, 0x0645, 0x064a, 0x064f, 0x0658, 0x0667, + 0x066f, 0x066f, 0x0677, 0x0683, 0x068e, 0x0695, 0x069c, 0x06a3, + 0x06a3, 0x06ba, 0x06c5, 0x06c5, 0x06ca, 0x06d4, 0x06d4, 0x06ea, + 0x06ef, 0x06ef, 0x06f3, 0x06fc, 0x0706, 0x070d, 0x071d, 0x0729, + 0x0730, 0x0736, 0x073c, 0x074f, 0x0756, 0x075d, 0x0765, 0x076c, + 0x0772, 0x0772, 0x0772, 0x077a, 0x0781, 0x078b, 0x079f, 0x07be, + 0x07c8, 0x07df, 0x07f5, 0x07fc, 0x0804, 0x0814, 0x0819, 0x0819, + // Entry 100 - 13F + 0x081e, 0x0825, 0x0832, 0x0838, 0x0840, }, }, { // mgh @@ -34382,7 +38969,7 @@ var regionHeaders = [220]header{ "istaniUtunisiaUtongaUtukiUtrinidad na TobagoUtuvaluUtanzaniaUmarekan" + "iUvatikaniUsantavisenti na GrenadiniUvenezuelaUvietinamuUvanuatuUwal" + "is na FutunaUsamoaUyemeniAfrika du SuluUzambiaUzimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x002b, 0x002b, 0x002b, 0x002b, @@ -34394,38 +38981,38 @@ var regionHeaders = [220]header{ 0x0075, 0x007d, 0x0083, 0x0083, 0x0083, 0x008a, 0x0093, 0x009c, // Entry 40 - 7F 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ab, 0x00ab, 0x00b3, - 0x00bc, 0x00c4, 0x00c4, 0x00c9, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00d6, 0x00dd, 0x00dd, 0x00e5, 0x00eb, 0x00fc, 0x00fc, 0x0101, - 0x010a, 0x0114, 0x011b, 0x0120, 0x012a, 0x012a, 0x012a, 0x012a, - 0x0134, 0x0139, 0x0143, 0x014a, 0x014a, 0x014a, 0x0154, 0x015c, - 0x0162, 0x016b, 0x016b, 0x0174, 0x017d, 0x0185, 0x0185, 0x018d, - 0x018d, 0x0193, 0x0193, 0x0193, 0x0199, 0x0199, 0x01a1, 0x01a9, - 0x01b0, 0x01b6, 0x01b6, 0x01bf, 0x01bf, 0x01c6, 0x01da, 0x01ea, - // Entry 80 - BF - 0x01f7, 0x01f7, 0x01f7, 0x0203, 0x0203, 0x020c, 0x0217, 0x0220, - 0x022a, 0x0232, 0x0239, 0x0240, 0x0248, 0x0250, 0x0256, 0x0256, - 0x0256, 0x0256, 0x025f, 0x025f, 0x0266, 0x0266, 0x0270, 0x0270, + 0x00bc, 0x00c4, 0x00c4, 0x00c4, 0x00c9, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00d6, 0x00dd, 0x00dd, 0x00e5, 0x00eb, 0x00fc, 0x00fc, + 0x0101, 0x010a, 0x0114, 0x011b, 0x0120, 0x012a, 0x012a, 0x012a, + 0x012a, 0x0134, 0x0139, 0x0143, 0x014a, 0x014a, 0x014a, 0x0154, + 0x015c, 0x0162, 0x016b, 0x016b, 0x0174, 0x017d, 0x0185, 0x0185, + 0x018d, 0x018d, 0x0193, 0x0193, 0x0193, 0x0199, 0x0199, 0x01a1, + 0x01a9, 0x01b0, 0x01b6, 0x01b6, 0x01bf, 0x01bf, 0x01c6, 0x01da, + // Entry 80 - BF + 0x01ea, 0x01f7, 0x01f7, 0x01f7, 0x0203, 0x0203, 0x020c, 0x0217, + 0x0220, 0x022a, 0x0232, 0x0239, 0x0240, 0x0248, 0x0250, 0x0256, + 0x0256, 0x0256, 0x0256, 0x025f, 0x025f, 0x0266, 0x0266, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, - 0x0270, 0x0270, 0x0277, 0x0277, 0x0277, 0x0281, 0x0281, 0x0281, - 0x0288, 0x0288, 0x0290, 0x0290, 0x0290, 0x0296, 0x0296, 0x0296, - 0x0296, 0x0296, 0x029c, 0x02a3, 0x02a9, 0x02bb, 0x02c1, 0x02ca, - 0x02d4, 0x02dc, 0x02f3, 0x02fd, 0x0307, 0x0307, 0x0307, 0x0307, + 0x0270, 0x0270, 0x0270, 0x0277, 0x0277, 0x0277, 0x0281, 0x0281, + 0x0281, 0x0288, 0x0288, 0x0290, 0x0290, 0x0290, 0x0296, 0x0296, + 0x0296, 0x0296, 0x0296, 0x029c, 0x02a3, 0x02a9, 0x02bb, 0x02c1, + 0x02ca, 0x02d4, 0x02dc, 0x02f3, 0x02fd, 0x0307, 0x0307, 0x0307, // Entry C0 - FF - 0x030f, 0x0316, 0x0316, 0x0320, 0x0328, 0x0328, 0x0328, 0x032f, - 0x0335, 0x0335, 0x0340, 0x0347, 0x034d, 0x0356, 0x0362, 0x036b, - 0x036b, 0x0374, 0x0374, 0x037d, 0x0386, 0x038e, 0x0397, 0x0397, - 0x03ac, 0x03b5, 0x03b5, 0x03bb, 0x03c1, 0x03c1, 0x03c1, 0x03c7, - 0x03c7, 0x03cc, 0x03d5, 0x03df, 0x03e7, 0x03f6, 0x0406, 0x040e, - 0x0414, 0x0419, 0x042c, 0x0433, 0x0433, 0x043c, 0x043c, 0x043c, - 0x043c, 0x0445, 0x0445, 0x0445, 0x044e, 0x0468, 0x0472, 0x0472, - 0x0472, 0x047c, 0x0484, 0x0494, 0x049a, 0x049a, 0x04a1, 0x04a1, + 0x0307, 0x030f, 0x0316, 0x0316, 0x0320, 0x0328, 0x0328, 0x0328, + 0x032f, 0x0335, 0x0335, 0x0340, 0x0347, 0x034d, 0x0356, 0x0362, + 0x036b, 0x036b, 0x0374, 0x0374, 0x037d, 0x0386, 0x038e, 0x0397, + 0x0397, 0x03ac, 0x03b5, 0x03b5, 0x03bb, 0x03c1, 0x03c1, 0x03c1, + 0x03c7, 0x03c7, 0x03cc, 0x03d5, 0x03df, 0x03e7, 0x03f6, 0x0406, + 0x040e, 0x0414, 0x0419, 0x042c, 0x0433, 0x0433, 0x043c, 0x043c, + 0x043c, 0x043c, 0x043c, 0x0445, 0x0445, 0x0445, 0x044e, 0x0468, + 0x0472, 0x0472, 0x0472, 0x047c, 0x0484, 0x0494, 0x049a, 0x049a, // Entry 100 - 13F - 0x04af, 0x04b6, 0x04bf, + 0x04a1, 0x04a1, 0x04af, 0x04b6, 0x04bf, }, }, { // mgo "Kamalunaba aben tisɔ̀", - []uint16{ // 260 elements + []uint16{ // 262 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -34463,7 +39050,7 @@ var regionHeaders = [220]header{ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, // Entry 100 - 13F - 0x0007, 0x0007, 0x0007, 0x0017, + 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0017, }, }, { // mk @@ -34487,91 +39074,104 @@ var regionHeaders = [220]header{ msRegionIdx, }, { // mt - "AndorraEmirati Għarab MaqgħudaAfganistanAntigua and BarbudaAngwillaAlban" + - "ijaArmenjaAngolaAntartikaArġentinaSamoa AmerikanaAwstrijaAwstraljaAr" + - "ubaGżejjer AlandAżerbajġanBożnija ĦerżegovinaBarbadosBangladexxBelġj" + - "uBurkina FasoBulgarijaBaħrajnBurundiBeninBermudaBrunejBolivjaIl-Braż" + - "ilBaħamasButanBouvet IslandBotswanaBjelorussjaBeliżeKanadaCocos (Kee" + - "ling) IslandsDemocratic Republic of the CongoRepubblika Afrikana Ċen" + - "traliKongoSvizzeraKosta ta’ l-AvorjuCook IslandsĊiliKamerunIċ-ĊinaKo" + - "lombjaKosta RikaKubaKape VerdeChristmas IslandĊipruRepubblika ĊekaIl" + - "-ĠermanjaĠibutiDanimarkaDominikaRepublikka DomenikanaAlġerijaEkwador" + - "EstonjaEġittuSahara tal-PunentEritreaSpanjaEtijopjaUnjoni EwropeaFin" + - "landjaFiġiFalkland IslandsMikronesjaGżejjer FaroeFranzaGabonL-Ingilt" + - "erraGrenadaĠeorġjaGujana FranċiżaGanaGibraltarGrinlandjaGambjaGineaG" + - "wadelupeGinea EkwatorjaliGreċjaSouth Georgia and the South Sandwich " + - "IslandsGwatemalaGwamGinea-BissawGujanaĦong Kong S.A.R. ĊinaHeard Isl" + - "and and McDonald IslandsĦondurasKroazjaĦaitiUngerijaIndoneżjaIrlanda" + - "IżraelIsle of ManL-IndjaBritish Indian Ocean TerritoryIraqIranIsland" + - "aL-ItaljaĠamajkaĠordanIl-ĠappunKenjaKirgistanKambodjaKiribatiKomoros" + - "Saint Kitts and NevisKoreja ta’ FuqKoreja t’IsfelKuwajtGżejjer Kajma" + - "niKażakstanLaosLibanuSanta LuċijaLiechtensteinSri LankaLiberjaLesoto" + - "LitwanjaLussemburguLatvjaLibjaMarokkMonakoMoldovaMadagaskarGżejjer t" + - "a’ MarshallMaċedonjaMaliMjanmarMongoljaMacao S.A.R., ChinaGżejjer Ma" + - "rjana ta’ FuqMartinikMawritanjaMontserratMaltaMawrizjuMaldivesMalawi" + - "MessikuMalasjaMożambikNamibjaNew CaledoniaNiġerNorfolk IslandNiġerja" + - "NikaragwaOlandaNorveġjaNepalNauruNiueNew ZealandOmanPanamaPeruPoline" + - "sja FranċiżaPapwa-Ginea ĠdidaFilippiniPakistanPolonjaSaint Pierre an" + - "d MiquelonPitcairnPuerto RicoTerritorju PalestinjanPortugallPalauPar" + - "agwajQatarRéunionRumanijaIr-RussjaRwandaGħarabja SawditaSolomon Isla" + - "ndsSeychellesSudanŻvezjaSingaporSaint HelenaSlovenjaSvalbard and Jan" + - " MayenSlovakkjaSierra LeoneSan MarinoSenegalSomaljaSurinamSao Tome a" + - "nd PrincipeEl SalvadorSirjaSważilandTurks and Caicos IslandsĊadTerri" + - "torji Franċiżi ta’ NofsinharTogoTajlandjaTaġikistanTokelawTimor tal-" + - "LvantTurkmenistanTuneżTongaTurkijaTrinidad u TobagoTuvaluTajwanTanża" + - "nijaUkrainaUgandaUnited States Minor Outlying IslandsL-Istati UnitiU" + - "rugwajUżbekistanVatikanSaint Vincent and the GrenadinesVenezwelaBrit" + - "ish Virgin IslandsU.S. Virgin IslandsVjetnamVanwatuWallis and Futuna" + - "SamoaJemenMajotteAfrika t’IsfelŻambjaŻimbabweReġjun Mhux MagħrufDinj" + - "aAffrikaAmerika t’IsfelOċejanjaAffrika tal-PunentAmerika ĊentraliAff" + - "rika tal-LvantAffrika ta’ FuqAffrika NofsaniAffrika t’IsfelAmerikaKa" + - "ribewAsja tal-LvantAsja t’Isfel ĊentraliAsja tax-XlokkEwropa t’Isfel" + - "Awstralja u New ZealandMelanesjaReġjun ta’ MikroneżjaPolinesjaAsjaAs" + - "ja ĊentraliAsja tal-PunentEwropaEwropa tal-LvantEwropa ta’ FuqEwropa" + - " tal-PunentAmerika Latina", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0020, 0x002a, 0x003d, 0x0045, 0x004d, - 0x0054, 0x005a, 0x0063, 0x006d, 0x007c, 0x0084, 0x008d, 0x0092, - 0x00a0, 0x00ac, 0x00c2, 0x00ca, 0x00d4, 0x00db, 0x00e7, 0x00f0, - 0x00f8, 0x00ff, 0x0104, 0x0104, 0x010b, 0x0111, 0x0118, 0x0118, - 0x0122, 0x012a, 0x012f, 0x013c, 0x0144, 0x014f, 0x0156, 0x015c, - 0x0173, 0x0193, 0x01b0, 0x01b5, 0x01bd, 0x01d1, 0x01dd, 0x01e2, - 0x01e9, 0x01f2, 0x01fa, 0x01fa, 0x0204, 0x0208, 0x0212, 0x0212, - 0x0222, 0x0228, 0x0238, 0x0244, 0x0244, 0x024b, 0x0254, 0x025c, - // Entry 40 - 7F - 0x0271, 0x027a, 0x027a, 0x0281, 0x0288, 0x028f, 0x02a0, 0x02a7, - 0x02ad, 0x02b5, 0x02c3, 0x02cc, 0x02d1, 0x02e1, 0x02eb, 0x02f9, - 0x02ff, 0x0304, 0x0310, 0x0317, 0x0320, 0x0331, 0x0331, 0x0335, - 0x033e, 0x0348, 0x034e, 0x0353, 0x035c, 0x036d, 0x0374, 0x03a0, - 0x03a9, 0x03ad, 0x03b9, 0x03bf, 0x03d6, 0x03f7, 0x0400, 0x0407, - 0x040d, 0x0415, 0x0415, 0x041f, 0x0426, 0x042d, 0x0438, 0x043f, - 0x045d, 0x0461, 0x0465, 0x046c, 0x0474, 0x0474, 0x047c, 0x0483, - 0x048d, 0x0492, 0x049b, 0x04a3, 0x04ab, 0x04b2, 0x04c7, 0x04d7, - // Entry 80 - BF - 0x04e7, 0x04ed, 0x04fd, 0x0507, 0x050b, 0x0511, 0x051e, 0x052b, - 0x0534, 0x053b, 0x0541, 0x0549, 0x0554, 0x055a, 0x055f, 0x0565, - 0x056b, 0x0572, 0x0572, 0x0572, 0x057c, 0x0593, 0x059d, 0x05a1, - 0x05a8, 0x05b0, 0x05c3, 0x05dd, 0x05e5, 0x05ef, 0x05f9, 0x05fe, - 0x0606, 0x060e, 0x0614, 0x061b, 0x0622, 0x062b, 0x0632, 0x063f, - 0x0645, 0x0653, 0x065b, 0x0664, 0x066a, 0x0673, 0x0678, 0x067d, - 0x0681, 0x068c, 0x0690, 0x0696, 0x069a, 0x06ae, 0x06c0, 0x06c9, - 0x06d1, 0x06d8, 0x06f1, 0x06f9, 0x0704, 0x071a, 0x0723, 0x0728, - // Entry C0 - FF - 0x0730, 0x0735, 0x0735, 0x073d, 0x0745, 0x0745, 0x074e, 0x0754, - 0x0765, 0x0774, 0x077e, 0x0783, 0x078a, 0x0792, 0x079e, 0x07a6, - 0x07bc, 0x07c5, 0x07d1, 0x07db, 0x07e2, 0x07e9, 0x07f0, 0x07f0, - 0x0805, 0x0810, 0x0810, 0x0815, 0x081f, 0x081f, 0x0837, 0x083b, - 0x0860, 0x0864, 0x086d, 0x0878, 0x087f, 0x088e, 0x089a, 0x08a0, - 0x08a5, 0x08ac, 0x08bd, 0x08c3, 0x08c9, 0x08d3, 0x08da, 0x08e0, - 0x0904, 0x0912, 0x0919, 0x0924, 0x092b, 0x094b, 0x0954, 0x096a, - 0x097d, 0x0984, 0x098b, 0x099c, 0x09a1, 0x09a1, 0x09a6, 0x09ad, - // Entry 100 - 13F - 0x09bd, 0x09c4, 0x09cd, 0x09e2, 0x09e7, 0x09ee, 0x09ee, 0x09ff, - 0x0a08, 0x0a1a, 0x0a2b, 0x0a3c, 0x0a4d, 0x0a5c, 0x0a6d, 0x0a74, - 0x0a74, 0x0a7b, 0x0a89, 0x0aa1, 0x0aaf, 0x0abf, 0x0ad6, 0x0adf, - 0x0af8, 0x0b01, 0x0b05, 0x0b13, 0x0b22, 0x0b28, 0x0b38, 0x0b48, - 0x0b59, 0x0b67, + "Ascension IslandAndorral-Emirati Għarab Magħqudal-AfganistanAntigua u Ba" + + "rbudaAnguillal-Albanijal-Armenjal-Angolal-Antartikal-Arġentinais-Sam" + + "oa Amerikanal-Awstrijal-AwstraljaArubail-Gżejjer Alandl-Ażerbajġanil" + + "-Bożnija-ĦerzegovinaBarbadosil-Bangladeshil-Belġjuil-Burkina Fasoil-" + + "Bulgarijail-Bahrainil-Burundiil-BeninSaint BarthélemyBermudail-Brune" + + "iil-Bolivjain-Netherlands tal-KaribewIl-Brażilil-Bahamasil-BhutanGżi" + + "ra Bouvetil-Botswanail-Belarussjail-Belizeil-KanadaGżejjer Cocos (Ke" + + "eling)ir-Repubblika Demokratika tal-Kongoir-Repubblika Ċentru-Afrika" + + "nail-Kongo - BrazzavilleŻvizzerail-Kosta tal-AvorjuGżejjer Cookiċ-Ċi" + + "liil-KamerunCNil-Kolombjail-Gżira Clippertonil-Costa RicaKubaCape Ve" + + "rdeCuraçaoil-Gżira ChristmasĊipruir-Repubblika Ċekail-ĠermanjaDiego " + + "Garciail-Djiboutiid-DanimarkaDominicair-Repubblika Dominicanal-Alġer" + + "ijaCeuta u Melillal-Ekwadorl-Estonjal-Eġittuis-Saħara tal-Punentl-Er" + + "itreaSpanjal-EtjopjaUnjoni Ewropeail-FinlandjaFiġiil-Gżejjer Falklan" + + "dMikroneżjail-Gżejjer FaeroeFranzail-Gabonir-Renju UnitGrenadail-Geo" + + "rgiail-Guyana FranċiżaGuernseyil-GhanaĠibiltàGreenlandil-Gambjail-Gu" + + "ineaGuadeloupeil-Guinea Ekwatorjaliil-Greċjail-Georgia tan-Nofsinhar" + + " u l-Gżejjer Sandwich tan-Nofsinharil-GwatemalaGuamil-Guinea-Bissaui" + + "l-Guyanair-Reġjun Amministrattiv Speċjali ta’ Hong Kong tar-Repubbli" + + "ka tal-Poplu taċ-Ċinail-Gżejjer Heard u l-Gżejjer McDonaldil-Hondura" + + "sil-Kroazjail-Haitil-Ungerijail-Gżejjer Canaryl-Indoneżjal-IrlandaIż" + + "raelIsle of Manl-IndjaTerritorju Brittaniku tal-Oċean Indjanl-Iraql-" + + "Iranl-iżlandal-ItaljaJerseyil-Ġamajkail-Ġordanil-Ġappunil-Kenjail-Ki" + + "rgiżistanil-KambodjaKiribatiComorosSaint Kitts u Nevisil-Korea ta’ F" + + "uqil-Korea t’Isfelil-Kuwajtil-Gżejjer Caymanil-Każakistanil-Laosil-L" + + "ibanuSaint Luciail-Liechtensteinis-Sri Lankail-Liberjail-Lesotoil-Li" + + "twanjail-Lussemburguil-Latvjail-Libjail-MarokkMonacoil-Moldovail-Mon" + + "tenegroSaint MartinMadagascarGżejjer Marshalll-Eks-Repubblika Jugosl" + + "ava tal-Maċedoniail-Maliil-Myanmar/Burmail-Mongoljair-Reġjun Amminis" + + "trattiv Speċjali tal-Macao tar-Repubblika tal-Poplu taċ-ĊinaĠżejjer " + + "Mariana tat-TramuntanaMartiniqueil-MauritaniaMontserratMaltaMauritiu" + + "sil-Maldiviil-Malawiil-Messikuil-Malasjail-Mozambiquein-NamibjaNew C" + + "aledoniain-NiġerGżira Norfolkin-Niġerjain-Nikaragwain-Netherlandsin-" + + "Norveġjain-NepalNauruNiueNew Zealandl-Omanil-Panamail-PerùPolineżja " + + "FranċiżaPapua New Guineail-Filippiniil-Pakistanil-PolonjaSaint Pierr" + + "e u MiquelonGżejjer PitcairnPuerto Ricoit-Territorji Palestinjaniil-" + + "PortugallPalauil-Paragwajil-QatarRéunionir-Rumanijais-Serbjair-Russj" + + "air-Rwandal-Arabia Sawdijail-Gżejjer Solomonis-Seychellesis-Sudanl-I" + + "żvezjaSingaporeSaint Helenais-SlovenjaSvalbard u Jan Mayenis-Slovak" + + "kjaSierra LeoneSan Marinois-Senegalis-Somaljais-Surinameis-Sudan t’I" + + "sfelSão Tomé u PríncipeEl SalvadorSint Maartenis-Sirjais-SwazilandTr" + + "istan da Cunhail-Gżejjer Turks u Caicosiċ-ChadIt-Territorji Franċiżi" + + " tan-Nofsinharit-Togoit-Tajlandjait-Taġikistanit-TokelauTimor Lestei" + + "t-Turkmenistanit-TuneżijaTongait-TurkijaTrinidad u TobagoTuvaluit-Ta" + + "jwanit-Tanzanijal-Ukrajnal-UgandaIl-Gżejjer Minuri Mbiegħda tal-Ista" + + "ti Unitil-Istati Unitil-Urugwajl-Użbekistanl-Istat tal-Belt tal-Vati" + + "kanSaint Vincent u l-Grenadiniil-Venezwelail-Gżejjer Verġni Brittani" + + "ċiil-Gżejjer Verġni tal-Istati Unitiil-VjetnamVanuatuWallis u Futun" + + "aSamoaKosovoil-JemenMayottel-Afrika t’Isfeliż-Żambjaiż-ŻimbabweReġju" + + "n Mhux MagħrufDinjaAffrikaAmerika t’IsfelOċejanjaAffrika tal-PunentA" + + "merika ĊentraliAffrika tal-LvantAffrika ta’ FuqAffrika NofsaniAffrik" + + "a t’IsfelAmerikaKaribewAsja tal-LvantAsja t’Isfel ĊentraliAsja tax-X" + + "lokkEwropa t’IsfelAwstralja u New ZealandMelanesjaReġjun ta’ Mikrone" + + "żjaPolinesjaAsjaAsja ĊentraliAsja tal-PunentEwropaEwropa tal-LvantE" + + "wropa ta’ FuqEwropa tal-PunentAmerika Latina", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0010, 0x0017, 0x0032, 0x003e, 0x004f, 0x0057, 0x0061, + 0x006a, 0x0072, 0x007d, 0x0089, 0x009b, 0x00a5, 0x00b0, 0x00b5, + 0x00c6, 0x00d4, 0x00ec, 0x00f4, 0x0101, 0x010b, 0x011a, 0x0126, + 0x0130, 0x013a, 0x0142, 0x0153, 0x015a, 0x0163, 0x016d, 0x0187, + 0x0191, 0x019b, 0x01a4, 0x01b1, 0x01bc, 0x01c9, 0x01d2, 0x01db, + 0x01f3, 0x0216, 0x0234, 0x024a, 0x0253, 0x0266, 0x0273, 0x027c, + 0x0286, 0x0288, 0x0293, 0x02a7, 0x02b4, 0x02b8, 0x02c2, 0x02ca, + 0x02dd, 0x02e3, 0x02f6, 0x0302, 0x030e, 0x0319, 0x0325, 0x032d, + // Entry 40 - 7F + 0x0345, 0x0350, 0x035f, 0x0368, 0x0371, 0x037a, 0x038f, 0x0398, + 0x039e, 0x03a7, 0x03b5, 0x03b5, 0x03c1, 0x03c6, 0x03da, 0x03e5, + 0x03f7, 0x03fd, 0x0405, 0x0412, 0x0419, 0x0423, 0x0437, 0x043f, + 0x0447, 0x0450, 0x0459, 0x0462, 0x046b, 0x0475, 0x048a, 0x0494, + 0x04d0, 0x04dc, 0x04e0, 0x04f0, 0x04f9, 0x0550, 0x0577, 0x0582, + 0x058c, 0x0594, 0x059e, 0x05b0, 0x05bc, 0x05c5, 0x05cc, 0x05d7, + 0x05de, 0x0605, 0x060b, 0x0611, 0x061b, 0x0623, 0x0629, 0x0634, + 0x063e, 0x0648, 0x0650, 0x065f, 0x066a, 0x0672, 0x0679, 0x068c, + // Entry 80 - BF + 0x069e, 0x06b0, 0x06b9, 0x06cb, 0x06d9, 0x06e0, 0x06e9, 0x06f4, + 0x0704, 0x0710, 0x071a, 0x0723, 0x072e, 0x073c, 0x0745, 0x074d, + 0x0756, 0x075c, 0x0766, 0x0773, 0x077f, 0x0789, 0x079a, 0x07c3, + 0x07ca, 0x07da, 0x07e5, 0x0836, 0x0856, 0x0860, 0x086d, 0x0877, + 0x087c, 0x0885, 0x088f, 0x0898, 0x08a2, 0x08ac, 0x08b9, 0x08c3, + 0x08d0, 0x08d9, 0x08e7, 0x08f2, 0x08fe, 0x090c, 0x0918, 0x0920, + 0x0925, 0x0929, 0x0934, 0x093a, 0x0943, 0x094b, 0x0960, 0x0970, + 0x097c, 0x0987, 0x0991, 0x09a8, 0x09b9, 0x09c4, 0x09de, 0x09ea, + // Entry C0 - FF + 0x09ef, 0x09fa, 0x0a02, 0x0a02, 0x0a0a, 0x0a15, 0x0a1e, 0x0a27, + 0x0a30, 0x0a40, 0x0a53, 0x0a60, 0x0a68, 0x0a72, 0x0a7b, 0x0a87, + 0x0a92, 0x0aa6, 0x0ab2, 0x0abe, 0x0ac8, 0x0ad2, 0x0adc, 0x0ae7, + 0x0af9, 0x0b0f, 0x0b1a, 0x0b26, 0x0b2e, 0x0b3a, 0x0b4a, 0x0b64, + 0x0b6c, 0x0b92, 0x0b99, 0x0ba5, 0x0bb3, 0x0bbd, 0x0bc8, 0x0bd7, + 0x0be3, 0x0be8, 0x0bf2, 0x0c03, 0x0c09, 0x0c12, 0x0c1e, 0x0c27, + 0x0c2f, 0x0c5c, 0x0c5c, 0x0c6a, 0x0c73, 0x0c80, 0x0c9c, 0x0cb7, + 0x0cc3, 0x0ce2, 0x0d06, 0x0d10, 0x0d17, 0x0d26, 0x0d2b, 0x0d31, + // Entry 100 - 13F + 0x0d39, 0x0d40, 0x0d52, 0x0d5d, 0x0d6a, 0x0d7f, 0x0d84, 0x0d8b, + 0x0d8b, 0x0d9c, 0x0da5, 0x0db7, 0x0dc8, 0x0dd9, 0x0dea, 0x0df9, + 0x0e0a, 0x0e11, 0x0e11, 0x0e18, 0x0e26, 0x0e3e, 0x0e4c, 0x0e5c, + 0x0e73, 0x0e7c, 0x0e95, 0x0e9e, 0x0ea2, 0x0eb0, 0x0ebf, 0x0ec5, + 0x0ed5, 0x0ee5, 0x0ef6, 0x0f04, }, }, { // mua @@ -34608,7 +39208,7 @@ var regionHeaders = [220]header{ "aŋVaticaŋSǝr Vinceŋ ne GrenadiŋSǝr Venezuelaser Anglofon ma laŋneSǝr" + " amerika ma laŋneSǝr VietnamSǝr VanuatuWallis ne FutunaSǝr SamoaYeme" + "ŋMayotAfrika nekǝsǝŋZambiyaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001c, 0x0028, 0x003b, 0x0042, 0x004a, 0x0052, 0x0058, 0x0058, 0x0063, 0x0070, 0x0078, 0x0082, 0x0087, @@ -34620,33 +39220,33 @@ var regionHeaders = [220]header{ 0x01c0, 0x01c8, 0x01d1, 0x01da, 0x01da, 0x01e2, 0x01ea, 0x01f1, // Entry 40 - 7F 0x0204, 0x020c, 0x020c, 0x0214, 0x021c, 0x0226, 0x0226, 0x0231, - 0x023a, 0x0241, 0x0241, 0x024d, 0x0256, 0x026e, 0x0279, 0x0279, - 0x0281, 0x0287, 0x0295, 0x029d, 0x02a5, 0x02bc, 0x02bc, 0x02c0, - 0x02ce, 0x02dc, 0x02e3, 0x02e8, 0x02f8, 0x0302, 0x030b, 0x030b, - 0x0314, 0x0318, 0x0327, 0x032d, 0x032d, 0x032d, 0x033a, 0x0342, - 0x034c, 0x0354, 0x0354, 0x035e, 0x036a, 0x0375, 0x0375, 0x037f, - 0x0392, 0x0396, 0x039b, 0x03a6, 0x03ad, 0x03ad, 0x03b4, 0x03bd, - 0x03c3, 0x03cd, 0x03d8, 0x03e1, 0x03ee, 0x03f4, 0x040a, 0x041d, - // Entry 80 - BF - 0x0431, 0x043c, 0x044c, 0x0456, 0x045f, 0x0465, 0x046f, 0x047d, - 0x0487, 0x048f, 0x049b, 0x04a4, 0x04b2, 0x04ba, 0x04c0, 0x04c5, - 0x04cb, 0x04d4, 0x04d4, 0x04d4, 0x04de, 0x04f5, 0x04ff, 0x0508, - 0x0514, 0x051d, 0x051d, 0x0531, 0x053a, 0x0545, 0x0554, 0x055e, - 0x056b, 0x0573, 0x057e, 0x0584, 0x058d, 0x0596, 0x059e, 0x05ae, - 0x05b8, 0x05c9, 0x05d1, 0x05da, 0x05e9, 0x05f1, 0x05fb, 0x0605, - 0x0609, 0x0615, 0x061a, 0x0625, 0x0629, 0x0644, 0x0659, 0x0661, - 0x066a, 0x0671, 0x0688, 0x0690, 0x069a, 0x06aa, 0x06b7, 0x06c1, - // Entry C0 - FF - 0x06c9, 0x06ce, 0x06ce, 0x06da, 0x06e2, 0x06e2, 0x06e9, 0x06ef, - 0x06fb, 0x0711, 0x0718, 0x071e, 0x0727, 0x072f, 0x073a, 0x0743, - 0x0743, 0x074c, 0x0759, 0x0764, 0x076b, 0x0773, 0x077f, 0x077f, - 0x0793, 0x07a0, 0x07a0, 0x07a5, 0x07b3, 0x07b3, 0x07ce, 0x07d2, - 0x07d2, 0x07db, 0x07e2, 0x07ed, 0x07f9, 0x0801, 0x080e, 0x0816, - 0x0820, 0x0827, 0x0838, 0x0843, 0x084a, 0x0853, 0x085a, 0x0860, - 0x0860, 0x0867, 0x086e, 0x0879, 0x0881, 0x089a, 0x08a8, 0x08be, - 0x08d4, 0x08e0, 0x08ec, 0x08fc, 0x0906, 0x0906, 0x090c, 0x0911, - // Entry 100 - 13F - 0x0922, 0x0929, 0x0931, + 0x023a, 0x0241, 0x0241, 0x0241, 0x024d, 0x0256, 0x026e, 0x0279, + 0x0279, 0x0281, 0x0287, 0x0295, 0x029d, 0x02a5, 0x02bc, 0x02bc, + 0x02c0, 0x02ce, 0x02dc, 0x02e3, 0x02e8, 0x02f8, 0x0302, 0x030b, + 0x030b, 0x0314, 0x0318, 0x0327, 0x032d, 0x032d, 0x032d, 0x033a, + 0x0342, 0x034c, 0x0354, 0x0354, 0x035e, 0x036a, 0x0375, 0x0375, + 0x037f, 0x0392, 0x0396, 0x039b, 0x03a6, 0x03ad, 0x03ad, 0x03b4, + 0x03bd, 0x03c3, 0x03cd, 0x03d8, 0x03e1, 0x03ee, 0x03f4, 0x040a, + // Entry 80 - BF + 0x041d, 0x0431, 0x043c, 0x044c, 0x0456, 0x045f, 0x0465, 0x046f, + 0x047d, 0x0487, 0x048f, 0x049b, 0x04a4, 0x04b2, 0x04ba, 0x04c0, + 0x04c5, 0x04cb, 0x04d4, 0x04d4, 0x04d4, 0x04de, 0x04f5, 0x04ff, + 0x0508, 0x0514, 0x051d, 0x051d, 0x0531, 0x053a, 0x0545, 0x0554, + 0x055e, 0x056b, 0x0573, 0x057e, 0x0584, 0x058d, 0x0596, 0x059e, + 0x05ae, 0x05b8, 0x05c9, 0x05d1, 0x05da, 0x05e9, 0x05f1, 0x05fb, + 0x0605, 0x0609, 0x0615, 0x061a, 0x0625, 0x0629, 0x0644, 0x0659, + 0x0661, 0x066a, 0x0671, 0x0688, 0x0690, 0x069a, 0x06aa, 0x06b7, + // Entry C0 - FF + 0x06c1, 0x06c9, 0x06ce, 0x06ce, 0x06da, 0x06e2, 0x06e2, 0x06e9, + 0x06ef, 0x06fb, 0x0711, 0x0718, 0x071e, 0x0727, 0x072f, 0x073a, + 0x0743, 0x0743, 0x074c, 0x0759, 0x0764, 0x076b, 0x0773, 0x077f, + 0x077f, 0x0793, 0x07a0, 0x07a0, 0x07a5, 0x07b3, 0x07b3, 0x07ce, + 0x07d2, 0x07d2, 0x07db, 0x07e2, 0x07ed, 0x07f9, 0x0801, 0x080e, + 0x0816, 0x0820, 0x0827, 0x0838, 0x0843, 0x084a, 0x0853, 0x085a, + 0x0860, 0x0860, 0x0860, 0x0867, 0x086e, 0x0879, 0x0881, 0x089a, + 0x08a8, 0x08be, 0x08d4, 0x08e0, 0x08ec, 0x08fc, 0x0906, 0x0906, + // Entry 100 - 13F + 0x090c, 0x0911, 0x0922, 0x0929, 0x0931, }, }, { // my @@ -34693,7 +39293,7 @@ var regionHeaders = [220]header{ "ی آسیاجنوبی آسیاآسیای ِجنوب\u200cشرقی\u200cوَرجنوبی اروپااوسترالزیم" + "لانزیمیکرونزی منقطهپولی\u200cنزیآسیامیونی آسیاغربی آسیااروپاشرقی ار" + "وپاشمالی اروپاغربی اروپالاتین آمریکا", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0019, 0x0025, 0x0045, 0x0057, 0x0077, 0x0085, 0x0091, 0x00a1, 0x00ad, 0x00cc, 0x00dc, 0x00f7, 0x0101, 0x0111, 0x011b, @@ -34705,37 +39305,37 @@ var regionHeaders = [220]header{ 0x03c2, 0x03ca, 0x03db, 0x03e5, 0x03fa, 0x0406, 0x0414, 0x0422, // Entry 40 - 7F 0x043d, 0x044b, 0x0461, 0x046d, 0x0479, 0x047f, 0x0490, 0x049c, - 0x04ac, 0x04b8, 0x04d1, 0x04dd, 0x04e5, 0x0507, 0x0517, 0x052a, - 0x0536, 0x0540, 0x0550, 0x055e, 0x056c, 0x058a, 0x0594, 0x059a, - 0x05a9, 0x05b7, 0x05c3, 0x05cb, 0x05d9, 0x05f0, 0x05fa, 0x0639, - 0x0649, 0x0653, 0x0668, 0x0672, 0x067f, 0x06a9, 0x06b7, 0x06c3, - 0x06cf, 0x06df, 0x06f4, 0x0702, 0x070e, 0x071e, 0x072f, 0x0735, - 0x076e, 0x0776, 0x0780, 0x078c, 0x079a, 0x07a2, 0x07b2, 0x07ba, - 0x07c4, 0x07cc, 0x07de, 0x07ea, 0x07fa, 0x0804, 0x081f, 0x0832, - // Entry 80 - BF - 0x0845, 0x084d, 0x0869, 0x0879, 0x0883, 0x088d, 0x089e, 0x08b5, - 0x08c5, 0x08d1, 0x08db, 0x08e5, 0x08f9, 0x0905, 0x090d, 0x0917, - 0x0923, 0x0931, 0x0946, 0x0959, 0x096d, 0x0984, 0x0992, 0x099a, - 0x09a8, 0x09b8, 0x09d4, 0x09f8, 0x0a1c, 0x0a2c, 0x0a3c, 0x0a44, - 0x0a55, 0x0a61, 0x0a6d, 0x0a77, 0x0a81, 0x0a91, 0x0a9d, 0x0ab6, - 0x0abe, 0x0ad7, 0x0ae3, 0x0af7, 0x0aff, 0x0b07, 0x0b0f, 0x0b1b, - 0x0b23, 0x0b31, 0x0b39, 0x0b45, 0x0b4b, 0x0b6e, 0x0b86, 0x0b94, - 0x0ba2, 0x0bae, 0x0bc9, 0x0be4, 0x0bf6, 0x0c11, 0x0c1d, 0x0c29, - // Entry C0 - FF - 0x0c39, 0x0c3f, 0x0c6e, 0x0c7c, 0x0c88, 0x0c96, 0x0ca0, 0x0cac, - 0x0cba, 0x0cd1, 0x0cd9, 0x0ce3, 0x0ceb, 0x0cf9, 0x0d08, 0x0d16, - 0x0d39, 0x0d47, 0x0d57, 0x0d68, 0x0d72, 0x0d7e, 0x0d8c, 0x0da1, - 0x0dc3, 0x0dd7, 0x0de8, 0x0df2, 0x0e02, 0x0e20, 0x0e45, 0x0e4b, - 0x0e72, 0x0e7a, 0x0e86, 0x0e98, 0x0ea6, 0x0eb9, 0x0ecd, 0x0ed5, - 0x0edf, 0x0ee9, 0x0f09, 0x0f15, 0x0f21, 0x0f31, 0x0f3f, 0x0f4d, - 0x0f85, 0x0f9c, 0x0faa, 0x0fba, 0x0fc8, 0x0fed, 0x0ffb, 0x101a, - 0x1035, 0x1041, 0x104f, 0x1069, 0x1073, 0x107d, 0x1083, 0x108d, - // Entry 100 - 13F - 0x10a4, 0x10b0, 0x10c0, 0x10db, 0x10e3, 0x10ef, 0x1106, 0x111d, - 0x1131, 0x1146, 0x115d, 0x1172, 0x1189, 0x11a0, 0x11b7, 0x11c3, - 0x11da, 0x11e8, 0x11f9, 0x120c, 0x1235, 0x124a, 0x125c, 0x1268, - 0x1283, 0x1294, 0x129c, 0x12af, 0x12c0, 0x12ca, 0x12dd, 0x12f2, - 0x1305, 0x131c, + 0x04ac, 0x04b8, 0x04d1, 0x04d1, 0x04dd, 0x04e5, 0x0507, 0x0517, + 0x052a, 0x0536, 0x0540, 0x0550, 0x055e, 0x056c, 0x058a, 0x0594, + 0x059a, 0x05a9, 0x05b7, 0x05c3, 0x05cb, 0x05d9, 0x05f0, 0x05fa, + 0x0639, 0x0649, 0x0653, 0x0668, 0x0672, 0x067f, 0x06a9, 0x06b7, + 0x06c3, 0x06cf, 0x06df, 0x06f4, 0x0702, 0x070e, 0x071e, 0x072f, + 0x0735, 0x076e, 0x0776, 0x0780, 0x078c, 0x079a, 0x07a2, 0x07b2, + 0x07ba, 0x07c4, 0x07cc, 0x07de, 0x07ea, 0x07fa, 0x0804, 0x081f, + // Entry 80 - BF + 0x0832, 0x0845, 0x084d, 0x0869, 0x0879, 0x0883, 0x088d, 0x089e, + 0x08b5, 0x08c5, 0x08d1, 0x08db, 0x08e5, 0x08f9, 0x0905, 0x090d, + 0x0917, 0x0923, 0x0931, 0x0946, 0x0959, 0x096d, 0x0984, 0x0992, + 0x099a, 0x09a8, 0x09b8, 0x09d4, 0x09f8, 0x0a1c, 0x0a2c, 0x0a3c, + 0x0a44, 0x0a55, 0x0a61, 0x0a6d, 0x0a77, 0x0a81, 0x0a91, 0x0a9d, + 0x0ab6, 0x0abe, 0x0ad7, 0x0ae3, 0x0af7, 0x0aff, 0x0b07, 0x0b0f, + 0x0b1b, 0x0b23, 0x0b31, 0x0b39, 0x0b45, 0x0b4b, 0x0b6e, 0x0b86, + 0x0b94, 0x0ba2, 0x0bae, 0x0bc9, 0x0be4, 0x0bf6, 0x0c11, 0x0c1d, + // Entry C0 - FF + 0x0c29, 0x0c39, 0x0c3f, 0x0c6e, 0x0c7c, 0x0c88, 0x0c96, 0x0ca0, + 0x0cac, 0x0cba, 0x0cd1, 0x0cd9, 0x0ce3, 0x0ceb, 0x0cf9, 0x0d08, + 0x0d16, 0x0d39, 0x0d47, 0x0d57, 0x0d68, 0x0d72, 0x0d7e, 0x0d8c, + 0x0da1, 0x0dc3, 0x0dd7, 0x0de8, 0x0df2, 0x0e02, 0x0e20, 0x0e45, + 0x0e4b, 0x0e72, 0x0e7a, 0x0e86, 0x0e98, 0x0ea6, 0x0eb9, 0x0ecd, + 0x0ed5, 0x0edf, 0x0ee9, 0x0f09, 0x0f15, 0x0f21, 0x0f31, 0x0f3f, + 0x0f4d, 0x0f85, 0x0f85, 0x0f9c, 0x0faa, 0x0fba, 0x0fc8, 0x0fed, + 0x0ffb, 0x101a, 0x1035, 0x1041, 0x104f, 0x1069, 0x1073, 0x107d, + // Entry 100 - 13F + 0x1083, 0x108d, 0x10a4, 0x10b0, 0x10c0, 0x10db, 0x10e3, 0x10ef, + 0x1106, 0x111d, 0x1131, 0x1146, 0x115d, 0x1172, 0x1189, 0x11a0, + 0x11b7, 0x11c3, 0x11da, 0x11e8, 0x11f9, 0x120c, 0x1235, 0x124a, + 0x125c, 0x1268, 0x1283, 0x1294, 0x129c, 0x12af, 0x12c0, 0x12ca, + 0x12dd, 0x12f2, 0x1305, 0x131c, }, }, { // naq @@ -34772,7 +39372,7 @@ var regionHeaders = [220]header{ "tateSaint Vincent and the GrenadinesVenezuelabBritish Virgin Islands" + "U.S. Virgin IslandsVietnammiVanuatuWallis and FutunaSamoaYemenMayott" + "eSuid AfrikabZambiabZimbabweb", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0008, 0x001c, 0x0029, 0x003f, 0x0048, 0x0050, 0x0058, 0x005f, 0x005f, 0x0069, 0x0078, 0x0080, 0x008a, 0x0090, @@ -34784,33 +39384,33 @@ var regionHeaders = [220]header{ 0x01e4, 0x01ea, 0x01f9, 0x0203, 0x0203, 0x020b, 0x0213, 0x021c, // Entry 40 - 7F 0x022e, 0x0236, 0x0236, 0x023e, 0x0246, 0x024d, 0x024d, 0x0255, - 0x025c, 0x0265, 0x0265, 0x026d, 0x0272, 0x0282, 0x028c, 0x028c, - 0x0296, 0x029c, 0x02aa, 0x02b1, 0x02b9, 0x02c6, 0x02c6, 0x02cc, - 0x02d5, 0x02de, 0x02e5, 0x02ec, 0x02f6, 0x0308, 0x0312, 0x0312, - 0x031b, 0x031f, 0x032c, 0x0332, 0x0332, 0x0332, 0x033a, 0x0342, - 0x0347, 0x0351, 0x0351, 0x035b, 0x0362, 0x0369, 0x0369, 0x036f, - 0x038d, 0x0392, 0x0398, 0x039f, 0x03a6, 0x03a6, 0x03ae, 0x03b6, - 0x03bd, 0x03c3, 0x03cf, 0x03d8, 0x03e0, 0x03e7, 0x03fc, 0x0409, - // Entry 80 - BF - 0x0415, 0x041c, 0x042a, 0x0436, 0x043a, 0x0443, 0x044e, 0x045d, - 0x0467, 0x046f, 0x0477, 0x0481, 0x048c, 0x0492, 0x0498, 0x049f, - 0x04a5, 0x04ac, 0x04ac, 0x04ac, 0x04b7, 0x04c7, 0x04d1, 0x04d6, - 0x04dd, 0x04e5, 0x04e5, 0x04fd, 0x0507, 0x0511, 0x051b, 0x0520, - 0x0529, 0x0531, 0x0538, 0x053f, 0x0548, 0x0551, 0x0559, 0x0566, - 0x056c, 0x057a, 0x0582, 0x058c, 0x0597, 0x059f, 0x05a5, 0x05aa, - 0x05ae, 0x05ba, 0x05be, 0x05c4, 0x05c9, 0x05d9, 0x05ea, 0x05f5, - 0x05ff, 0x0606, 0x061f, 0x0627, 0x0632, 0x0650, 0x0659, 0x065e, - // Entry C0 - FF - 0x0667, 0x066c, 0x066c, 0x0674, 0x067b, 0x067b, 0x0681, 0x0688, - 0x0695, 0x06a4, 0x06ae, 0x06b5, 0x06bb, 0x06c4, 0x06d0, 0x06d8, - 0x06d8, 0x06e0, 0x06ec, 0x06f6, 0x06fe, 0x0706, 0x070e, 0x070e, - 0x0726, 0x0732, 0x0732, 0x0738, 0x0742, 0x0742, 0x075a, 0x075f, - 0x075f, 0x0764, 0x076d, 0x0777, 0x077e, 0x0788, 0x0794, 0x079c, - 0x07a1, 0x07a9, 0x07bc, 0x07c2, 0x07c8, 0x07d1, 0x07d8, 0x07df, - 0x07df, 0x07e7, 0x07ef, 0x07f9, 0x0806, 0x0826, 0x0830, 0x0846, - 0x0859, 0x0862, 0x0869, 0x087a, 0x087f, 0x087f, 0x0884, 0x088b, - // Entry 100 - 13F - 0x0897, 0x089e, 0x08a7, + 0x025c, 0x0265, 0x0265, 0x0265, 0x026d, 0x0272, 0x0282, 0x028c, + 0x028c, 0x0296, 0x029c, 0x02aa, 0x02b1, 0x02b9, 0x02c6, 0x02c6, + 0x02cc, 0x02d5, 0x02de, 0x02e5, 0x02ec, 0x02f6, 0x0308, 0x0312, + 0x0312, 0x031b, 0x031f, 0x032c, 0x0332, 0x0332, 0x0332, 0x033a, + 0x0342, 0x0347, 0x0351, 0x0351, 0x035b, 0x0362, 0x0369, 0x0369, + 0x036f, 0x038d, 0x0392, 0x0398, 0x039f, 0x03a6, 0x03a6, 0x03ae, + 0x03b6, 0x03bd, 0x03c3, 0x03cf, 0x03d8, 0x03e0, 0x03e7, 0x03fc, + // Entry 80 - BF + 0x0409, 0x0415, 0x041c, 0x042a, 0x0436, 0x043a, 0x0443, 0x044e, + 0x045d, 0x0467, 0x046f, 0x0477, 0x0481, 0x048c, 0x0492, 0x0498, + 0x049f, 0x04a5, 0x04ac, 0x04ac, 0x04ac, 0x04b7, 0x04c7, 0x04d1, + 0x04d6, 0x04dd, 0x04e5, 0x04e5, 0x04fd, 0x0507, 0x0511, 0x051b, + 0x0520, 0x0529, 0x0531, 0x0538, 0x053f, 0x0548, 0x0551, 0x0559, + 0x0566, 0x056c, 0x057a, 0x0582, 0x058c, 0x0597, 0x059f, 0x05a5, + 0x05aa, 0x05ae, 0x05ba, 0x05be, 0x05c4, 0x05c9, 0x05d9, 0x05ea, + 0x05f5, 0x05ff, 0x0606, 0x061f, 0x0627, 0x0632, 0x0650, 0x0659, + // Entry C0 - FF + 0x065e, 0x0667, 0x066c, 0x066c, 0x0674, 0x067b, 0x067b, 0x0681, + 0x0688, 0x0695, 0x06a4, 0x06ae, 0x06b5, 0x06bb, 0x06c4, 0x06d0, + 0x06d8, 0x06d8, 0x06e0, 0x06ec, 0x06f6, 0x06fe, 0x0706, 0x070e, + 0x070e, 0x0726, 0x0732, 0x0732, 0x0738, 0x0742, 0x0742, 0x075a, + 0x075f, 0x075f, 0x0764, 0x076d, 0x0777, 0x077e, 0x0788, 0x0794, + 0x079c, 0x07a1, 0x07a9, 0x07bc, 0x07c2, 0x07c8, 0x07d1, 0x07d8, + 0x07df, 0x07df, 0x07df, 0x07e7, 0x07ef, 0x07f9, 0x0806, 0x0826, + 0x0830, 0x0846, 0x0859, 0x0862, 0x0869, 0x087a, 0x087f, 0x087f, + // Entry 100 - 13F + 0x0884, 0x088b, 0x0897, 0x089e, 0x08a7, }, }, { // nd @@ -34846,7 +39446,7 @@ var regionHeaders = [220]header{ "iUzbekistanVatican StateSaint Vincent and the GrenadinesVenezuelaBri" + "tish Virgin IslandsU.S. Virgin IslandsVietnamVhanuatuWallis and Futu" + "naSamowaYemeniMayotteMzansi ye AfrikaZambiyaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x001a, 0x0025, 0x0037, 0x003f, 0x0046, 0x004d, 0x0053, 0x0053, 0x005b, 0x006b, 0x0072, 0x007b, 0x0081, @@ -34858,33 +39458,33 @@ var regionHeaders = [220]header{ 0x01d8, 0x01de, 0x01ec, 0x01f3, 0x01f3, 0x01fb, 0x0203, 0x020c, // Entry 40 - 7F 0x021e, 0x0226, 0x0226, 0x022d, 0x0234, 0x0239, 0x0239, 0x0240, - 0x0245, 0x024d, 0x024d, 0x0254, 0x0258, 0x0268, 0x0272, 0x0272, - 0x0279, 0x0280, 0x028e, 0x0295, 0x029c, 0x02ae, 0x02ae, 0x02b3, - 0x02bc, 0x02c5, 0x02cc, 0x02d2, 0x02dc, 0x02ed, 0x02f3, 0x02f3, - 0x02fc, 0x0300, 0x030d, 0x0313, 0x0313, 0x0313, 0x031b, 0x0322, - 0x0328, 0x032f, 0x032f, 0x0339, 0x0340, 0x0348, 0x0348, 0x034e, - 0x036c, 0x0371, 0x0375, 0x037c, 0x0381, 0x0381, 0x0388, 0x038e, - 0x0393, 0x0399, 0x03a3, 0x03ab, 0x03b4, 0x03bb, 0x03d0, 0x03db, - // Entry 80 - BF - 0x03e6, 0x03ee, 0x03fc, 0x0406, 0x040a, 0x0413, 0x041e, 0x042b, - 0x0434, 0x043d, 0x0444, 0x044d, 0x0457, 0x045d, 0x0464, 0x046b, - 0x0472, 0x0479, 0x0479, 0x0479, 0x0482, 0x0492, 0x049b, 0x049f, - 0x04a6, 0x04ae, 0x04ae, 0x04c6, 0x04d0, 0x04da, 0x04e4, 0x04e9, - 0x04f2, 0x04fa, 0x0500, 0x0508, 0x0511, 0x051b, 0x0524, 0x0531, - 0x0536, 0x0544, 0x054c, 0x0555, 0x0560, 0x0566, 0x056d, 0x0572, - 0x0576, 0x0581, 0x0586, 0x058c, 0x0591, 0x05a7, 0x05b7, 0x05c2, - 0x05cc, 0x05d4, 0x05ed, 0x05f5, 0x0600, 0x061e, 0x0626, 0x062b, - // Entry C0 - FF - 0x0633, 0x063a, 0x063a, 0x0642, 0x0649, 0x0649, 0x0650, 0x0657, - 0x0663, 0x0672, 0x067c, 0x0682, 0x0688, 0x0691, 0x069d, 0x06a5, - 0x06a5, 0x06ad, 0x06b9, 0x06c3, 0x06cb, 0x06d3, 0x06db, 0x06db, - 0x06f3, 0x06fe, 0x06fe, 0x0703, 0x070c, 0x070c, 0x0724, 0x0729, - 0x0729, 0x072e, 0x0738, 0x0742, 0x074b, 0x0755, 0x0761, 0x0769, - 0x076f, 0x0775, 0x0787, 0x078e, 0x0797, 0x07a0, 0x07a8, 0x07ae, - 0x07ae, 0x07b5, 0x07bd, 0x07c7, 0x07d4, 0x07f4, 0x07fd, 0x0813, - 0x0826, 0x082d, 0x0835, 0x0846, 0x084c, 0x084c, 0x0852, 0x0859, - // Entry 100 - 13F - 0x0869, 0x0870, 0x0878, + 0x0245, 0x024d, 0x024d, 0x024d, 0x0254, 0x0258, 0x0268, 0x0272, + 0x0272, 0x0279, 0x0280, 0x028e, 0x0295, 0x029c, 0x02ae, 0x02ae, + 0x02b3, 0x02bc, 0x02c5, 0x02cc, 0x02d2, 0x02dc, 0x02ed, 0x02f3, + 0x02f3, 0x02fc, 0x0300, 0x030d, 0x0313, 0x0313, 0x0313, 0x031b, + 0x0322, 0x0328, 0x032f, 0x032f, 0x0339, 0x0340, 0x0348, 0x0348, + 0x034e, 0x036c, 0x0371, 0x0375, 0x037c, 0x0381, 0x0381, 0x0388, + 0x038e, 0x0393, 0x0399, 0x03a3, 0x03ab, 0x03b4, 0x03bb, 0x03d0, + // Entry 80 - BF + 0x03db, 0x03e6, 0x03ee, 0x03fc, 0x0406, 0x040a, 0x0413, 0x041e, + 0x042b, 0x0434, 0x043d, 0x0444, 0x044d, 0x0457, 0x045d, 0x0464, + 0x046b, 0x0472, 0x0479, 0x0479, 0x0479, 0x0482, 0x0492, 0x049b, + 0x049f, 0x04a6, 0x04ae, 0x04ae, 0x04c6, 0x04d0, 0x04da, 0x04e4, + 0x04e9, 0x04f2, 0x04fa, 0x0500, 0x0508, 0x0511, 0x051b, 0x0524, + 0x0531, 0x0536, 0x0544, 0x054c, 0x0555, 0x0560, 0x0566, 0x056d, + 0x0572, 0x0576, 0x0581, 0x0586, 0x058c, 0x0591, 0x05a7, 0x05b7, + 0x05c2, 0x05cc, 0x05d4, 0x05ed, 0x05f5, 0x0600, 0x061e, 0x0626, + // Entry C0 - FF + 0x062b, 0x0633, 0x063a, 0x063a, 0x0642, 0x0649, 0x0649, 0x0650, + 0x0657, 0x0663, 0x0672, 0x067c, 0x0682, 0x0688, 0x0691, 0x069d, + 0x06a5, 0x06a5, 0x06ad, 0x06b9, 0x06c3, 0x06cb, 0x06d3, 0x06db, + 0x06db, 0x06f3, 0x06fe, 0x06fe, 0x0703, 0x070c, 0x070c, 0x0724, + 0x0729, 0x0729, 0x072e, 0x0738, 0x0742, 0x074b, 0x0755, 0x0761, + 0x0769, 0x076f, 0x0775, 0x0787, 0x078e, 0x0797, 0x07a0, 0x07a8, + 0x07ae, 0x07ae, 0x07ae, 0x07b5, 0x07bd, 0x07c7, 0x07d4, 0x07f4, + 0x07fd, 0x0813, 0x0826, 0x082d, 0x0835, 0x0846, 0x084c, 0x084c, + // Entry 100 - 13F + 0x0852, 0x0859, 0x0869, 0x0870, 0x0878, }, }, { // ne @@ -34925,7 +39525,7 @@ var regionHeaders = [220]header{ " Vincent ba GrenadinesVǝnǝzuelaMinsilɛ́ mímaŋ mí ngɛ̄lɛ̄nMinsilɛ mí " + "maŋ́ m´AmɛrkaViɛtnamVanuatuWallis ba FutunaSamoaYǝmɛnMayɔtAfríka yí " + "síZambiaZimbabwǝ", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0009, 0x002a, 0x0035, 0x0049, 0x0052, 0x0059, 0x0061, 0x0067, 0x0067, 0x0071, 0x0084, 0x008b, 0x0095, 0x009c, @@ -34937,33 +39537,33 @@ var regionHeaders = [220]header{ 0x01ca, 0x01d0, 0x01e5, 0x01ea, 0x01ea, 0x01f1, 0x01f9, 0x0202, // Entry 40 - 7F 0x0215, 0x021c, 0x021c, 0x0224, 0x022c, 0x0235, 0x0235, 0x023c, - 0x0242, 0x024b, 0x024b, 0x0253, 0x0259, 0x026a, 0x0274, 0x0274, - 0x0278, 0x027f, 0x0291, 0x0298, 0x029f, 0x02aa, 0x02aa, 0x02af, - 0x02b8, 0x02c1, 0x02c7, 0x02cc, 0x02d5, 0x02e5, 0x02eb, 0x02eb, - 0x02f4, 0x02f8, 0x0303, 0x0309, 0x0309, 0x0309, 0x0312, 0x0319, - 0x031f, 0x0327, 0x0327, 0x0330, 0x0336, 0x033d, 0x033d, 0x0342, - 0x0368, 0x036c, 0x0370, 0x0376, 0x037c, 0x037c, 0x0383, 0x038c, - 0x0392, 0x0398, 0x03a2, 0x03aa, 0x03b2, 0x03b9, 0x03cd, 0x03dc, - // Entry 80 - BF - 0x03e9, 0x03f0, 0x0400, 0x040a, 0x040e, 0x0414, 0x041f, 0x042a, - 0x0433, 0x043a, 0x0440, 0x0449, 0x0453, 0x0459, 0x045e, 0x0464, - 0x046a, 0x0473, 0x0473, 0x0473, 0x047d, 0x0490, 0x0499, 0x049d, - 0x04a4, 0x04ad, 0x04ad, 0x04ba, 0x04c3, 0x04cc, 0x04d6, 0x04db, - 0x04e2, 0x04ea, 0x04f0, 0x04f6, 0x04fe, 0x0506, 0x050d, 0x051c, - 0x0521, 0x0535, 0x053c, 0x0545, 0x054f, 0x0557, 0x055c, 0x0560, - 0x0565, 0x0572, 0x0576, 0x057c, 0x0580, 0x058e, 0x059b, 0x05a2, - 0x05aa, 0x05b2, 0x05c9, 0x05d1, 0x05dd, 0x05e6, 0x05ef, 0x05f3, - // Entry C0 - FF - 0x05fb, 0x0600, 0x0600, 0x0609, 0x0611, 0x0611, 0x0616, 0x061c, - 0x0628, 0x063b, 0x0645, 0x064b, 0x0650, 0x0658, 0x0662, 0x066a, - 0x066a, 0x0672, 0x067e, 0x0688, 0x068f, 0x0697, 0x069e, 0x069e, - 0x06b3, 0x06bc, 0x06bc, 0x06c1, 0x06ca, 0x06ca, 0x06e2, 0x06e7, - 0x06e7, 0x06eb, 0x06f3, 0x06fe, 0x0704, 0x0715, 0x0723, 0x072b, - 0x0731, 0x0736, 0x074a, 0x0751, 0x0758, 0x0762, 0x0768, 0x076e, - 0x076e, 0x0776, 0x077d, 0x0789, 0x0791, 0x07ac, 0x07b7, 0x07da, - 0x07f8, 0x0800, 0x0807, 0x0817, 0x081c, 0x081c, 0x0823, 0x0829, - // Entry 100 - 13F - 0x0838, 0x083e, 0x0847, + 0x0242, 0x024b, 0x024b, 0x024b, 0x0253, 0x0259, 0x026a, 0x0274, + 0x0274, 0x0278, 0x027f, 0x0291, 0x0298, 0x029f, 0x02aa, 0x02aa, + 0x02af, 0x02b8, 0x02c1, 0x02c7, 0x02cc, 0x02d5, 0x02e5, 0x02eb, + 0x02eb, 0x02f4, 0x02f8, 0x0303, 0x0309, 0x0309, 0x0309, 0x0312, + 0x0319, 0x031f, 0x0327, 0x0327, 0x0330, 0x0336, 0x033d, 0x033d, + 0x0342, 0x0368, 0x036c, 0x0370, 0x0376, 0x037c, 0x037c, 0x0383, + 0x038c, 0x0392, 0x0398, 0x03a2, 0x03aa, 0x03b2, 0x03b9, 0x03cd, + // Entry 80 - BF + 0x03dc, 0x03e9, 0x03f0, 0x0400, 0x040a, 0x040e, 0x0414, 0x041f, + 0x042a, 0x0433, 0x043a, 0x0440, 0x0449, 0x0453, 0x0459, 0x045e, + 0x0464, 0x046a, 0x0473, 0x0473, 0x0473, 0x047d, 0x0490, 0x0499, + 0x049d, 0x04a4, 0x04ad, 0x04ad, 0x04ba, 0x04c3, 0x04cc, 0x04d6, + 0x04db, 0x04e2, 0x04ea, 0x04f0, 0x04f6, 0x04fe, 0x0506, 0x050d, + 0x051c, 0x0521, 0x0535, 0x053c, 0x0545, 0x054f, 0x0557, 0x055c, + 0x0560, 0x0565, 0x0572, 0x0576, 0x057c, 0x0580, 0x058e, 0x059b, + 0x05a2, 0x05aa, 0x05b2, 0x05c9, 0x05d1, 0x05dd, 0x05e6, 0x05ef, + // Entry C0 - FF + 0x05f3, 0x05fb, 0x0600, 0x0600, 0x0609, 0x0611, 0x0611, 0x0616, + 0x061c, 0x0628, 0x063b, 0x0645, 0x064b, 0x0650, 0x0658, 0x0662, + 0x066a, 0x066a, 0x0672, 0x067e, 0x0688, 0x068f, 0x0697, 0x069e, + 0x069e, 0x06b3, 0x06bc, 0x06bc, 0x06c1, 0x06ca, 0x06ca, 0x06e2, + 0x06e7, 0x06e7, 0x06eb, 0x06f3, 0x06fe, 0x0704, 0x0715, 0x0723, + 0x072b, 0x0731, 0x0736, 0x074a, 0x0751, 0x0758, 0x0762, 0x0768, + 0x076e, 0x076e, 0x076e, 0x0776, 0x077d, 0x0789, 0x0791, 0x07ac, + 0x07b7, 0x07da, 0x07f8, 0x0800, 0x0807, 0x0817, 0x081c, 0x081c, + // Entry 100 - 13F + 0x0823, 0x0829, 0x0838, 0x083e, 0x0847, }, }, { // nn @@ -34971,86 +39571,87 @@ var regionHeaders = [220]header{ "daAnguillaAlbaniaArmeniaAngolaAntarktisArgentinaAmerikansk SamoaAust" + "errikeAustraliaArubaÅlandAserbajdsjanBosnia og HercegovinaBarbadosBa" + "ngladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint Barthélem" + - "yBermudaBrunei DarussalamBoliviaBrasilBahamasBhutanBouvetøyaBotswana" + - "KviterusslandBelizeCanadaKokosøyaneKongo-KinshasaDen sentralafrikans" + - "ke republikkenKongo-BrazzavilleSveitsElfenbeinskystenCookøyaneChileK" + - "amerunKinaColombiaClippertonøyaCosta RicaCubaKapp VerdeChristmasøyaK" + - "yprosTsjekkiaTysklandDiego GarciaDjiboutiDanmarkDominicaDen dominika" + - "nske republikkenAlgerieCeuta og MelillaEcuadorEstlandEgyptVest-Sahar" + - "aEritreaSpaniaEtiopiaDen europeiske unionenFinlandFijiFalklandsøyane" + - "MikronesiaføderasjonenFærøyaneFrankrikeGabonStorbritanniaGrenadaGeor" + - "giaFransk GuyanaGuernseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupe" + - "Ekvatorial-GuineaHellasSør-Georgia og Sør-Sandwich-øyaneGuatemalaGua" + - "mGuinea-BissauGuyanaHongkong S.A.R. KinaHeard- og McDonaldsøyaneHond" + - "urasKroatiaHaitiUngarnKanariøyaneIndonesiaIrlandIsraelManIndiaBritis" + - "ke område i Det indiske havIrakIranIslandItaliaJerseyJamaicaJordanJa" + - "panKenyaKirgisistanKambodsjaKiribatiKomoreneSt. Christopher og Nevis" + - "Nord-KoreaSør-KoreaKuwaitCaymanøyaneKasakhstanLaosLibanonSt. LuciaLi" + - "echtensteinSri LankaLiberiaLesothoLitauenLuxembourgLatviaLibyaMarokk" + - "oMonacoMoldovaMontenegroSaint MartinMadagaskarMarshalløyaneMakedonia" + - "MaliMyanmarMongoliaMacao S.A.R. KinaNord-MariananeMartiniqueMauritan" + - "iaMontserratMaltaMauritiusMaldivaneMalawiMexicoMalaysiaMosambikNamib" + - "iaNy-CaledoniaNigerNorfolkøyaneNigeriaNicaraguaNederlandNoregNepalNa" + - "uruNiueNew ZealandOmanPanamaPeruFransk PolynesiaPapua Ny-GuineaFilip" + - "pinanePakistanPolenSt. Pierre og MiquelonPitcairnPuerto RicoPalestin" + - "sk territoriumPortugalPalauParaguayQatarYtre OseaniaRéunionRomaniaSe" + - "rbiaRusslandRwandaSaudi ArabiaSalomonøyaneSeychellaneSudanSverigeSin" + - "gaporeSaint HelenaSloveniaSvalbard og Jan MayenSlovakiaSierra LeoneS" + - "an MarinoSenegalSomaliaSurinamSão Tomé og PríncipeEl SalvadorSyriaSw" + - "azilandTristan da CunhaTurks- og CaicosøyaneTchadFranske sørområdeTo" + - "goThailandTadsjikistanTokelauAust-TimorTurkmenistanTunisiaTongaTyrki" + - "aTrinidad og TobagoTuvaluTaiwanTanzaniaUkrainaUgandaUSAs ytre småøya" + - "rUSAUruguayUsbekistanVatikanstatenSt. Vincent og GrenadinaneVenezuel" + - "aDei britiske jomfruøyaneDei amerikanske jomfruøyaneVietnamVanuatuWa" + - "llis og FutunaSamoaYemenMayotteSør-AfrikaZambiaZimbabweukjent område" + - "verdaAfrikaNord-AmerikaSør-AmerikaOseaniaVest-AfrikaSentral-AmerikaA" + - "ust-AfrikaNord-AfrikaSentral-AfrikaSørlege AfrikaAmerikanordlege Ame" + - "rikaKaribiaAust-AsiaSør-AsiaSøraust-AsiaSør-EuropaAustralia og New Z" + - "ealandMelanesiaMikronesiaPolynesiaAsiaSentral-AsiaVest-AsiaEuropaAus" + - "t-EuropaNord-EuropaVest-EuropaLatin-Amerika", - []uint16{ // 290 elements + "yBermudaBruneiBoliviaBrasilBahamasBhutanBouvetøyaBotswanaKviterussla" + + "ndBelizeCanadaKokosøyaneKongo-KinshasaDen sentralafrikanske republik" + + "kenKongo-BrazzavilleSveitsElfenbeinskystenCookøyaneChileKamerunKinaC" + + "olombiaClippertonøyaCosta RicaCubaKapp VerdeCuraçaoChristmasøyaKypro" + + "sTsjekkiaTysklandDiego GarciaDjiboutiDanmarkDominicaDen dominikanske" + + " republikkenAlgerieCeuta og MelillaEcuadorEstlandEgyptVest-SaharaEri" + + "treaSpaniaEtiopiaDen europeiske unionenFinlandFijiFalklandsøyaneMikr" + + "onesiaføderasjonenFærøyaneFrankrikeGabonStorbritanniaGrenadaGeorgiaF" + + "ransk GuyanaGuernseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeEkva" + + "torial-GuineaHellasSør-Georgia og Sør-Sandwich-øyaneGuatemalaGuamGui" + + "nea-BissauGuyanaHongkong S.A.R. KinaHeard- og McDonaldsøyaneHonduras" + + "KroatiaHaitiUngarnKanariøyaneIndonesiaIrlandIsraelManIndiaBritiske o" + + "mråde i Det indiske havIrakIranIslandItaliaJerseyJamaicaJordanJapanK" + + "enyaKirgisistanKambodsjaKiribatiKomoraneSt. Christopher og NevisNord" + + "-KoreaSør-KoreaKuwaitCaymanøyaneKasakhstanLaosLibanonSt. LuciaLiecht" + + "ensteinSri LankaLiberiaLesothoLitauenLuxembourgLatviaLibyaMarokkoMon" + + "acoMoldovaMontenegroSaint MartinMadagaskarMarshalløyaneMakedoniaMali" + + "Myanmar (Burma)MongoliaMacao S.A.R. KinaNord-MariananeMartiniqueMaur" + + "itaniaMontserratMaltaMauritiusMaldivaneMalawiMexicoMalaysiaMosambikN" + + "amibiaNy-CaledoniaNigerNorfolkøyaneNigeriaNicaraguaNederlandNoregNep" + + "alNauruNiueNew ZealandOmanPanamaPeruFransk PolynesiaPapua Ny-GuineaF" + + "ilippinanePakistanPolenSt. Pierre og MiquelonPitcairnPuerto RicoPale" + + "stinsk territoriumPortugalPalauParaguayQatarYtre OseaniaRéunionRoman" + + "iaSerbiaRusslandRwandaSaudi-ArabiaSalomonøyaneSeychellaneSudanSverig" + + "eSingaporeSaint HelenaSloveniaSvalbard og Jan MayenSlovakiaSierra Le" + + "oneSan MarinoSenegalSomaliaSurinamSør-SudanSão Tomé og PríncipeEl Sa" + + "lvadorSint MaartenSyriaSwazilandTristan da CunhaTurks- og Caicosøyan" + + "eTsjadFranske sørområdeTogoThailandTadsjikistanTokelauTimor-Leste (A" + + "ust-Timor)TurkmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuvaluTaiw" + + "anTanzaniaUkrainaUgandaUSAs ytre småøyarUSAUruguayUsbekistanVatikans" + + "tatenSt. Vincent og GrenadinaneVenezuelaDei britiske jomfruøyaneDei " + + "amerikanske jomfruøyaneVietnamVanuatuWallis og FutunaSamoaKosovoJeme" + + "nMayotteSør-AfrikaZambiaZimbabweukjent områdeverdaAfrikaNord-Amerika" + + "Sør-AmerikaOseaniaVest-AfrikaSentral-AmerikaAust-AfrikaNord-AfrikaSe" + + "ntral-AfrikaSørlege AfrikaAmerikanordlege AmerikaKaribiaAust-AsiaSør" + + "-AsiaSøraust-AsiaSør-EuropaAustralia og New ZealandMelanesiaMikrones" + + "iaPolynesiaAsiaSentral-AsiaVest-AsiaEuropaAust-EuropaNord-EuropaVest" + + "-EuropaLatin-Amerika", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x0059, 0x0060, 0x0066, 0x006f, 0x0078, 0x0088, 0x0092, 0x009b, 0x00a0, 0x00a6, 0x00b2, 0x00c7, 0x00cf, 0x00d9, 0x00df, 0x00eb, 0x00f3, - 0x00fa, 0x0101, 0x0106, 0x0117, 0x011e, 0x012f, 0x0136, 0x0136, - 0x013c, 0x0143, 0x0149, 0x0153, 0x015b, 0x0168, 0x016e, 0x0174, - 0x017f, 0x018d, 0x01ae, 0x01bf, 0x01c5, 0x01d5, 0x01df, 0x01e4, - 0x01eb, 0x01ef, 0x01f7, 0x0205, 0x020f, 0x0213, 0x021d, 0x021d, - 0x022a, 0x0230, 0x0238, 0x0240, 0x024c, 0x0254, 0x025b, 0x0263, - // Entry 40 - 7F - 0x027f, 0x0286, 0x0296, 0x029d, 0x02a4, 0x02a9, 0x02b4, 0x02bb, - 0x02c1, 0x02c8, 0x02de, 0x02e5, 0x02e9, 0x02f8, 0x030f, 0x0319, - 0x0322, 0x0327, 0x0334, 0x033b, 0x0342, 0x034f, 0x0357, 0x035c, - 0x0365, 0x036e, 0x0374, 0x037a, 0x0384, 0x0395, 0x039b, 0x03bf, - 0x03c8, 0x03cc, 0x03d9, 0x03df, 0x03f3, 0x040c, 0x0414, 0x041b, - 0x0420, 0x0426, 0x0432, 0x043b, 0x0441, 0x0447, 0x044a, 0x044f, - 0x0471, 0x0475, 0x0479, 0x047f, 0x0485, 0x048b, 0x0492, 0x0498, - 0x049d, 0x04a2, 0x04ad, 0x04b6, 0x04be, 0x04c6, 0x04de, 0x04e8, - // Entry 80 - BF - 0x04f2, 0x04f8, 0x0504, 0x050e, 0x0512, 0x0519, 0x0522, 0x052f, - 0x0538, 0x053f, 0x0546, 0x054d, 0x0557, 0x055d, 0x0562, 0x0569, - 0x056f, 0x0576, 0x0580, 0x058c, 0x0596, 0x05a4, 0x05ad, 0x05b1, - 0x05b8, 0x05c0, 0x05d1, 0x05df, 0x05e9, 0x05f3, 0x05fd, 0x0602, - 0x060b, 0x0614, 0x061a, 0x0620, 0x0628, 0x0630, 0x0637, 0x0643, - 0x0648, 0x0655, 0x065c, 0x0665, 0x066e, 0x0673, 0x0678, 0x067d, - 0x0681, 0x068c, 0x0690, 0x0696, 0x069a, 0x06aa, 0x06b9, 0x06c4, - 0x06cc, 0x06d1, 0x06e7, 0x06ef, 0x06fa, 0x0710, 0x0718, 0x071d, - // Entry C0 - FF - 0x0725, 0x072a, 0x0736, 0x073e, 0x0745, 0x074b, 0x0753, 0x0759, - 0x0765, 0x0772, 0x077d, 0x0782, 0x0789, 0x0792, 0x079e, 0x07a6, - 0x07bb, 0x07c3, 0x07cf, 0x07d9, 0x07e0, 0x07e7, 0x07ee, 0x07ee, - 0x0805, 0x0810, 0x0810, 0x0815, 0x081e, 0x082e, 0x0844, 0x0849, - 0x085c, 0x0860, 0x0868, 0x0874, 0x087b, 0x0885, 0x0891, 0x0898, - 0x089d, 0x08a3, 0x08b5, 0x08bb, 0x08c1, 0x08c9, 0x08d0, 0x08d6, - 0x08e9, 0x08ec, 0x08f3, 0x08fd, 0x090a, 0x0924, 0x092d, 0x0946, - 0x0962, 0x0969, 0x0970, 0x0980, 0x0985, 0x0985, 0x098a, 0x0991, - // Entry 100 - 13F - 0x099c, 0x09a2, 0x09aa, 0x09b8, 0x09bd, 0x09c3, 0x09cf, 0x09db, - 0x09e2, 0x09ed, 0x09fc, 0x0a07, 0x0a12, 0x0a20, 0x0a2f, 0x0a36, - 0x0a46, 0x0a4d, 0x0a56, 0x0a5f, 0x0a6c, 0x0a77, 0x0a8f, 0x0a98, - 0x0aa2, 0x0aab, 0x0aaf, 0x0abb, 0x0ac4, 0x0aca, 0x0ad5, 0x0ae0, - 0x0aeb, 0x0af8, + 0x00fa, 0x0101, 0x0106, 0x0117, 0x011e, 0x0124, 0x012b, 0x012b, + 0x0131, 0x0138, 0x013e, 0x0148, 0x0150, 0x015d, 0x0163, 0x0169, + 0x0174, 0x0182, 0x01a3, 0x01b4, 0x01ba, 0x01ca, 0x01d4, 0x01d9, + 0x01e0, 0x01e4, 0x01ec, 0x01fa, 0x0204, 0x0208, 0x0212, 0x021a, + 0x0227, 0x022d, 0x0235, 0x023d, 0x0249, 0x0251, 0x0258, 0x0260, + // Entry 40 - 7F + 0x027c, 0x0283, 0x0293, 0x029a, 0x02a1, 0x02a6, 0x02b1, 0x02b8, + 0x02be, 0x02c5, 0x02db, 0x02db, 0x02e2, 0x02e6, 0x02f5, 0x030c, + 0x0316, 0x031f, 0x0324, 0x0331, 0x0338, 0x033f, 0x034c, 0x0354, + 0x0359, 0x0362, 0x036b, 0x0371, 0x0377, 0x0381, 0x0392, 0x0398, + 0x03bc, 0x03c5, 0x03c9, 0x03d6, 0x03dc, 0x03f0, 0x0409, 0x0411, + 0x0418, 0x041d, 0x0423, 0x042f, 0x0438, 0x043e, 0x0444, 0x0447, + 0x044c, 0x046e, 0x0472, 0x0476, 0x047c, 0x0482, 0x0488, 0x048f, + 0x0495, 0x049a, 0x049f, 0x04aa, 0x04b3, 0x04bb, 0x04c3, 0x04db, + // Entry 80 - BF + 0x04e5, 0x04ef, 0x04f5, 0x0501, 0x050b, 0x050f, 0x0516, 0x051f, + 0x052c, 0x0535, 0x053c, 0x0543, 0x054a, 0x0554, 0x055a, 0x055f, + 0x0566, 0x056c, 0x0573, 0x057d, 0x0589, 0x0593, 0x05a1, 0x05aa, + 0x05ae, 0x05bd, 0x05c5, 0x05d6, 0x05e4, 0x05ee, 0x05f8, 0x0602, + 0x0607, 0x0610, 0x0619, 0x061f, 0x0625, 0x062d, 0x0635, 0x063c, + 0x0648, 0x064d, 0x065a, 0x0661, 0x066a, 0x0673, 0x0678, 0x067d, + 0x0682, 0x0686, 0x0691, 0x0695, 0x069b, 0x069f, 0x06af, 0x06be, + 0x06c9, 0x06d1, 0x06d6, 0x06ec, 0x06f4, 0x06ff, 0x0715, 0x071d, + // Entry C0 - FF + 0x0722, 0x072a, 0x072f, 0x073b, 0x0743, 0x074a, 0x0750, 0x0758, + 0x075e, 0x076a, 0x0777, 0x0782, 0x0787, 0x078e, 0x0797, 0x07a3, + 0x07ab, 0x07c0, 0x07c8, 0x07d4, 0x07de, 0x07e5, 0x07ec, 0x07f3, + 0x07fd, 0x0814, 0x081f, 0x082b, 0x0830, 0x0839, 0x0849, 0x085f, + 0x0864, 0x0877, 0x087b, 0x0883, 0x088f, 0x0896, 0x08ae, 0x08ba, + 0x08c1, 0x08c6, 0x08cc, 0x08de, 0x08e4, 0x08ea, 0x08f2, 0x08f9, + 0x08ff, 0x0912, 0x0912, 0x0915, 0x091c, 0x0926, 0x0933, 0x094d, + 0x0956, 0x096f, 0x098b, 0x0992, 0x0999, 0x09a9, 0x09ae, 0x09b4, + // Entry 100 - 13F + 0x09b9, 0x09c0, 0x09cb, 0x09d1, 0x09d9, 0x09e7, 0x09ec, 0x09f2, + 0x09fe, 0x0a0a, 0x0a11, 0x0a1c, 0x0a2b, 0x0a36, 0x0a41, 0x0a4f, + 0x0a5e, 0x0a65, 0x0a75, 0x0a7c, 0x0a85, 0x0a8e, 0x0a9b, 0x0aa6, + 0x0abe, 0x0ac7, 0x0ad1, 0x0ada, 0x0ade, 0x0aea, 0x0af3, 0x0af9, + 0x0b04, 0x0b0f, 0x0b1a, 0x0b27, }, }, { // nnh @@ -35078,7 +39679,7 @@ var regionHeaders = [220]header{ "ylɛnCili̱KɛmɛrunCaynaKolombiaKothtirikaKɛp bedi ɣa̱ylɛnAlgeriaKorwaa" + "tiaBurutic ɣe̱ndian oce̱nKombodiaKomruthKaymɛn ɣa̱ylɛnSudanCa̱dBurut" + "ic dhuɔ̱ɔ̱l be̱rgin", - []uint16{ // 248 elements + []uint16{ // 250 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0006, 0x0011, 0x0028, 0x0031, 0x0039, 0x0043, 0x004a, 0x004a, 0x0054, 0x0062, 0x006b, 0x0077, 0x007c, @@ -35093,12 +39694,12 @@ var regionHeaders = [220]header{ 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, - 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01d7, + 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, - 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, - 0x01f0, 0x01f0, 0x01f0, 0x01f8, 0x01f8, 0x01ff, 0x01ff, 0x01ff, + 0x01d7, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, + 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f8, 0x01f8, 0x01ff, 0x01ff, // Entry 80 - BF - 0x01ff, 0x01ff, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, + 0x01ff, 0x01ff, 0x01ff, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, @@ -35108,12 +39709,13 @@ var regionHeaders = [220]header{ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, // Entry C0 - FF 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, + 0x0211, 0x0211, 0x0211, 0x0211, 0x0216, 0x0216, 0x0216, 0x0216, + 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x0238, + 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, + 0x021b, 0x0238, }, }, { // nyn @@ -35151,7 +39753,7 @@ var regionHeaders = [220]header{ "enti Vinsent na GurenadiniVenezuweraEbizinga bya Virigini ebya Bungy" + "erezaEbizinga bya Virigini ebya AmerikaViyetinaamuVanuatuWarris na F" + "utunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054, 0x005d, 0x0063, 0x0063, 0x006d, 0x007f, 0x0087, 0x0093, 0x0098, @@ -35163,39 +39765,39 @@ var regionHeaders = [220]header{ 0x01ee, 0x01f7, 0x020b, 0x0216, 0x0216, 0x021d, 0x0227, 0x022f, // Entry 40 - 7F 0x0246, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265, 0x026e, - 0x0276, 0x0280, 0x0280, 0x0286, 0x028b, 0x02a2, 0x02ae, 0x02ae, - 0x02b7, 0x02be, 0x02c8, 0x02d0, 0x02d7, 0x02ea, 0x02ea, 0x02ee, - 0x02f7, 0x0303, 0x030a, 0x030e, 0x0317, 0x031b, 0x0322, 0x0322, - 0x032b, 0x0330, 0x0339, 0x033f, 0x033f, 0x033f, 0x0348, 0x0350, - 0x0355, 0x035c, 0x035c, 0x0367, 0x036f, 0x0377, 0x0377, 0x037d, - 0x03a0, 0x03a6, 0x03ac, 0x03b5, 0x03ba, 0x03ba, 0x03c2, 0x03cb, - 0x03d3, 0x03d8, 0x03e5, 0x03ee, 0x03f6, 0x03fc, 0x0412, 0x0421, - // Entry 80 - BF - 0x0431, 0x0438, 0x044d, 0x0459, 0x045f, 0x0467, 0x0473, 0x047d, - 0x0486, 0x048e, 0x0495, 0x049e, 0x04aa, 0x04b1, 0x04b6, 0x04bd, - 0x04c3, 0x04cb, 0x04cb, 0x04cb, 0x04d5, 0x04e9, 0x04f3, 0x04f7, - 0x04ff, 0x0507, 0x0507, 0x0528, 0x0532, 0x053e, 0x0549, 0x054f, - 0x055a, 0x0563, 0x0569, 0x056f, 0x0578, 0x0582, 0x058a, 0x0596, - 0x059c, 0x05ad, 0x05b7, 0x05c0, 0x05c8, 0x05ce, 0x05d2, 0x05d7, - 0x05db, 0x05e5, 0x05eb, 0x05f1, 0x05f5, 0x060b, 0x0610, 0x0618, - 0x0623, 0x062b, 0x0644, 0x064c, 0x0655, 0x0667, 0x066d, 0x0674, - // Entry C0 - FF - 0x067c, 0x0680, 0x0680, 0x068a, 0x0692, 0x0692, 0x0698, 0x069e, - 0x06ac, 0x06c2, 0x06cc, 0x06d2, 0x06d9, 0x06e0, 0x06ec, 0x06f7, - 0x06f7, 0x0702, 0x070f, 0x0717, 0x071d, 0x0726, 0x072f, 0x072f, - 0x0745, 0x0751, 0x0751, 0x0757, 0x0761, 0x0761, 0x077f, 0x0784, - 0x0784, 0x0788, 0x0790, 0x079c, 0x07a4, 0x07bc, 0x07cc, 0x07d3, - 0x07d8, 0x07e6, 0x07f9, 0x07ff, 0x0808, 0x0810, 0x0818, 0x081e, - 0x081e, 0x0825, 0x082c, 0x0839, 0x0841, 0x085c, 0x0866, 0x088b, - 0x08ad, 0x08b8, 0x08bf, 0x08cf, 0x08d5, 0x08d5, 0x08db, 0x08e1, - // Entry 100 - 13F - 0x08ee, 0x08f4, 0x08fc, + 0x0276, 0x0280, 0x0280, 0x0280, 0x0286, 0x028b, 0x02a2, 0x02ae, + 0x02ae, 0x02b7, 0x02be, 0x02c8, 0x02d0, 0x02d7, 0x02ea, 0x02ea, + 0x02ee, 0x02f7, 0x0303, 0x030a, 0x030e, 0x0317, 0x031b, 0x0322, + 0x0322, 0x032b, 0x0330, 0x0339, 0x033f, 0x033f, 0x033f, 0x0348, + 0x0350, 0x0355, 0x035c, 0x035c, 0x0367, 0x036f, 0x0377, 0x0377, + 0x037d, 0x03a0, 0x03a6, 0x03ac, 0x03b5, 0x03ba, 0x03ba, 0x03c2, + 0x03cb, 0x03d3, 0x03d8, 0x03e5, 0x03ee, 0x03f6, 0x03fc, 0x0412, + // Entry 80 - BF + 0x0421, 0x0431, 0x0438, 0x044d, 0x0459, 0x045f, 0x0467, 0x0473, + 0x047d, 0x0486, 0x048e, 0x0495, 0x049e, 0x04aa, 0x04b1, 0x04b6, + 0x04bd, 0x04c3, 0x04cb, 0x04cb, 0x04cb, 0x04d5, 0x04e9, 0x04f3, + 0x04f7, 0x04ff, 0x0507, 0x0507, 0x0528, 0x0532, 0x053e, 0x0549, + 0x054f, 0x055a, 0x0563, 0x0569, 0x056f, 0x0578, 0x0582, 0x058a, + 0x0596, 0x059c, 0x05ad, 0x05b7, 0x05c0, 0x05c8, 0x05ce, 0x05d2, + 0x05d7, 0x05db, 0x05e5, 0x05eb, 0x05f1, 0x05f5, 0x060b, 0x0610, + 0x0618, 0x0623, 0x062b, 0x0644, 0x064c, 0x0655, 0x0667, 0x066d, + // Entry C0 - FF + 0x0674, 0x067c, 0x0680, 0x0680, 0x068a, 0x0692, 0x0692, 0x0698, + 0x069e, 0x06ac, 0x06c2, 0x06cc, 0x06d2, 0x06d9, 0x06e0, 0x06ec, + 0x06f7, 0x06f7, 0x0702, 0x070f, 0x0717, 0x071d, 0x0726, 0x072f, + 0x072f, 0x0745, 0x0751, 0x0751, 0x0757, 0x0761, 0x0761, 0x077f, + 0x0784, 0x0784, 0x0788, 0x0790, 0x079c, 0x07a4, 0x07bc, 0x07cc, + 0x07d3, 0x07d8, 0x07e6, 0x07f9, 0x07ff, 0x0808, 0x0810, 0x0818, + 0x081e, 0x081e, 0x081e, 0x0825, 0x082c, 0x0839, 0x0841, 0x085c, + 0x0866, 0x088b, 0x08ad, 0x08b8, 0x08bf, 0x08cf, 0x08d5, 0x08d5, + // Entry 100 - 13F + 0x08db, 0x08e1, 0x08ee, 0x08f4, 0x08fc, }, }, { // om "BrazilChinaGermanyItoophiyaaFranceUnited KingdomIndiaItalyJapanKeeniyaaR" + "ussiaUnited States", - []uint16{ // 242 elements + []uint16{ // 244 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -35208,12 +39810,12 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x0022, 0x0022, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, + 0x001c, 0x0022, 0x0022, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, + 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, + 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003a, 0x003a, 0x003a, + 0x003a, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, // Entry 80 - BF 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, @@ -35224,13 +39826,13 @@ var regionHeaders = [220]header{ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, // Entry C0 - FF - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x004d, 0x004d, + 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x005a, + 0x004d, 0x004d, 0x004d, 0x005a, }, }, { // or @@ -35280,7 +39882,7 @@ var regionHeaders = [220]header{ "ଷିଣ ୟୁରୋପ୍ଅଷ୍ଟ୍ରେଲିଆ ଏବଂ ନ୍ୟୁଜିଲ୍ୟାଣ୍ଡମେଲାନେସିଆମାଇକ୍ରୋନେସିଆନ୍ ଅଞ୍ଚ" + "ଳପଲିନେସିଆଏସିଆମଧ୍ୟ ଏସିଆପଶ୍ଚିମ ଏସିଆୟୁରୋପ୍ପୂର୍ବ ୟୁରୋପ୍ଉତ୍ତର ୟୁରୋପ୍ପଶ୍" + "ଚିମ ୟୁରୋପ୍ଲାଟିନ୍ ଆମେରିକା ଏବଂ କାରିବିଆନ୍", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0015, 0x004d, 0x0074, 0x00ac, 0x00ca, 0x00df, 0x00f7, 0x010c, 0x012d, 0x014e, 0x0179, 0x0191, 0x01af, 0x01be, @@ -35292,43 +39894,43 @@ var regionHeaders = [220]header{ 0x065d, 0x0675, 0x06a6, 0x06bb, 0x06bb, 0x06cd, 0x06e5, 0x06fd, // Entry 40 - 7F 0x073a, 0x074f, 0x074f, 0x076a, 0x0782, 0x0794, 0x07b9, 0x07d4, - 0x07e6, 0x07fb, 0x082c, 0x084a, 0x0856, 0x0896, 0x08ba, 0x08e8, - 0x08fd, 0x090f, 0x0927, 0x093f, 0x0951, 0x0976, 0x098e, 0x099a, - 0x09bb, 0x09df, 0x09f4, 0x0a06, 0x0a1e, 0x0a55, 0x0a67, 0x0ae4, - 0x0afc, 0x0b0b, 0x0b2d, 0x0b3c, 0x0b97, 0x0c10, 0x0c2e, 0x0c46, - 0x0c55, 0x0c6a, 0x0c6a, 0x0c88, 0x0ca6, 0x0cbe, 0x0ce1, 0x0ced, - 0x0d4a, 0x0d59, 0x0d68, 0x0d86, 0x0d95, 0x0da4, 0x0db9, 0x0dd1, - 0x0de3, 0x0df5, 0x0e1c, 0x0e37, 0x0e4f, 0x0e64, 0x0ea3, 0x0ec2, - // Entry 80 - BF - 0x0ee4, 0x0ef3, 0x0f2a, 0x0f4e, 0x0f5d, 0x0f72, 0x0f91, 0x0fb8, - 0x0fd3, 0x0fe8, 0x0ffa, 0x1012, 0x1030, 0x1042, 0x1051, 0x1069, - 0x107b, 0x1090, 0x10ab, 0x10d3, 0x10f4, 0x1128, 0x1143, 0x114f, - 0x1167, 0x117f, 0x119f, 0x11e3, 0x1207, 0x1225, 0x1246, 0x1258, - 0x126d, 0x1285, 0x1294, 0x12ac, 0x12c1, 0x12e5, 0x12fa, 0x1322, - 0x1334, 0x1359, 0x1371, 0x138c, 0x13ad, 0x13b9, 0x13c8, 0x13d7, - 0x13e0, 0x1401, 0x1410, 0x1422, 0x142e, 0x145c, 0x1488, 0x14a6, - 0x14c1, 0x14d6, 0x151e, 0x153c, 0x1564, 0x1585, 0x15a6, 0x15b5, - // Entry C0 - FF - 0x15ca, 0x15d9, 0x1601, 0x161c, 0x1631, 0x1643, 0x1652, 0x166a, - 0x1689, 0x16bd, 0x16d2, 0x16e4, 0x16fc, 0x171a, 0x173c, 0x1757, - 0x179c, 0x17b7, 0x17d6, 0x17f5, 0x180d, 0x1822, 0x1837, 0x1837, - 0x1873, 0x1898, 0x1898, 0x18a7, 0x18c8, 0x18c8, 0x1919, 0x1925, - 0x195d, 0x1969, 0x1981, 0x19a5, 0x19ba, 0x19dc, 0x1a09, 0x1a1e, - 0x1a30, 0x1a42, 0x1a7d, 0x1a8f, 0x1aa4, 0x1abf, 0x1ada, 0x1aef, - 0x1b68, 0x1ba3, 0x1bb5, 0x1bd9, 0x1bf1, 0x1c49, 0x1c61, 0x1cae, - 0x1cf2, 0x1d0a, 0x1d1f, 0x1d4e, 0x1d5d, 0x1d5d, 0x1d6f, 0x1d81, - // Entry 100 - 13F - 0x1da9, 0x1dbe, 0x1dd6, 0x1e15, 0x1e24, 0x1e39, 0x1e5e, 0x1e86, - 0x1e9e, 0x1ec6, 0x1ee8, 0x1f0d, 0x1f32, 0x1f54, 0x1f85, 0x1fa0, - 0x1fce, 0x1fe9, 0x2005, 0x2024, 0x2053, 0x2078, 0x20c8, 0x20e3, - 0x211d, 0x2135, 0x2141, 0x215a, 0x2179, 0x218b, 0x21ad, 0x21cf, - 0x21f4, 0x2242, + 0x07e6, 0x07fb, 0x082c, 0x082c, 0x084a, 0x0856, 0x0896, 0x08ba, + 0x08e8, 0x08fd, 0x090f, 0x0927, 0x093f, 0x0951, 0x0976, 0x098e, + 0x099a, 0x09bb, 0x09df, 0x09f4, 0x0a06, 0x0a1e, 0x0a55, 0x0a67, + 0x0ae4, 0x0afc, 0x0b0b, 0x0b2d, 0x0b3c, 0x0b97, 0x0c10, 0x0c2e, + 0x0c46, 0x0c55, 0x0c6a, 0x0c6a, 0x0c88, 0x0ca6, 0x0cbe, 0x0ce1, + 0x0ced, 0x0d4a, 0x0d59, 0x0d68, 0x0d86, 0x0d95, 0x0da4, 0x0db9, + 0x0dd1, 0x0de3, 0x0df5, 0x0e1c, 0x0e37, 0x0e4f, 0x0e64, 0x0ea3, + // Entry 80 - BF + 0x0ec2, 0x0ee4, 0x0ef3, 0x0f2a, 0x0f4e, 0x0f5d, 0x0f72, 0x0f91, + 0x0fb8, 0x0fd3, 0x0fe8, 0x0ffa, 0x1012, 0x1030, 0x1042, 0x1051, + 0x1069, 0x107b, 0x1090, 0x10ab, 0x10d3, 0x10f4, 0x1128, 0x1143, + 0x114f, 0x1167, 0x117f, 0x119f, 0x11e3, 0x1207, 0x1225, 0x1246, + 0x1258, 0x126d, 0x1285, 0x1294, 0x12ac, 0x12c1, 0x12e5, 0x12fa, + 0x1322, 0x1334, 0x1359, 0x1371, 0x138c, 0x13ad, 0x13b9, 0x13c8, + 0x13d7, 0x13e0, 0x1401, 0x1410, 0x1422, 0x142e, 0x145c, 0x1488, + 0x14a6, 0x14c1, 0x14d6, 0x151e, 0x153c, 0x1564, 0x1585, 0x15a6, + // Entry C0 - FF + 0x15b5, 0x15ca, 0x15d9, 0x1601, 0x161c, 0x1631, 0x1643, 0x1652, + 0x166a, 0x1689, 0x16bd, 0x16d2, 0x16e4, 0x16fc, 0x171a, 0x173c, + 0x1757, 0x179c, 0x17b7, 0x17d6, 0x17f5, 0x180d, 0x1822, 0x1837, + 0x1837, 0x1873, 0x1898, 0x1898, 0x18a7, 0x18c8, 0x18c8, 0x1919, + 0x1925, 0x195d, 0x1969, 0x1981, 0x19a5, 0x19ba, 0x19dc, 0x1a09, + 0x1a1e, 0x1a30, 0x1a42, 0x1a7d, 0x1a8f, 0x1aa4, 0x1abf, 0x1ada, + 0x1aef, 0x1b68, 0x1b68, 0x1ba3, 0x1bb5, 0x1bd9, 0x1bf1, 0x1c49, + 0x1c61, 0x1cae, 0x1cf2, 0x1d0a, 0x1d1f, 0x1d4e, 0x1d5d, 0x1d5d, + // Entry 100 - 13F + 0x1d6f, 0x1d81, 0x1da9, 0x1dbe, 0x1dd6, 0x1e15, 0x1e24, 0x1e39, + 0x1e5e, 0x1e86, 0x1e9e, 0x1ec6, 0x1ee8, 0x1f0d, 0x1f32, 0x1f54, + 0x1f85, 0x1fa0, 0x1fce, 0x1fe9, 0x2005, 0x2024, 0x2053, 0x2078, + 0x20c8, 0x20e3, 0x211d, 0x2135, 0x2141, 0x215a, 0x2179, 0x218b, + 0x21ad, 0x21cf, 0x21f4, 0x2242, }, }, { // os "БразилиКитайГерманФранцСтыр БританиГуырдзыстонИндиИталиЯпонУӕрӕсеАИШНӕзо" + "нгӕ бӕстӕДунеАфрикӕОкеаниАмерикӕАзиЕвропӕ", - []uint16{ // 286 elements + []uint16{ // 288 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -35341,12 +39943,12 @@ var regionHeaders = [220]header{ // Entry 40 - 7F 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x002e, 0x002e, 0x0045, 0x0045, 0x005b, 0x005b, 0x005b, 0x005b, + 0x0024, 0x002e, 0x002e, 0x0045, 0x0045, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x006d, 0x006d, 0x006d, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x006d, 0x006d, + 0x006d, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, // Entry 80 - BF 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, @@ -35357,19 +39959,19 @@ var regionHeaders = [220]header{ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, // Entry C0 - FF - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0081, 0x0081, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0081, 0x0081, 0x0081, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, // Entry 100 - 13F - 0x0087, 0x0087, 0x0087, 0x00a0, 0x00a8, 0x00b4, 0x00b4, 0x00b4, - 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00e0, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x00a0, 0x00a8, 0x00b4, + 0x00b4, 0x00b4, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, + 0x00c0, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00e0, }, }, { // pa @@ -35377,8 +39979,8 @@ var regionHeaders = [220]header{ paRegionIdx, }, { // pa-Arab - "پکستان", - []uint16{ // 185 elements + "پاکستان", + []uint16{ // 186 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -35405,7 +40007,7 @@ var regionHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, + 0x0000, 0x000e, }, }, { // pl @@ -35418,9 +40020,9 @@ var regionHeaders = [220]header{ "ولمبیاکیوباالمانډنمارکالجزایرمصرهسپانیهحبشهفنلینډفرانسهبرتانیهګاناګ" + "یانایونانګواتیمالاهانډوراسمجارستاناندونیزیاهندعراقآیسلینډایټالیهجمی" + "کاجاپانکمبودیاکویټلاوسلبنانلایبریالیبیامراکشمغولستانمالیزیانایجیریا" + - "نکاراګواهالېنډناروېنیپالنیوزیلنډپاکستانپولنډفلسطینپورتګالروسیهروندا" + + "نکاراګواهالېنډناروۍنیپالنیوزیلنډپاکستانپولنډفلسطینپورتګالروسیهروندا" + "سعودی عربستانسویډنسالوېډورسوریهتاجکستانتنزانیایوروګواییمن", - []uint16{ // 255 elements + []uint16{ // 257 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0020, 0x0020, 0x002c, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a, 0x004a, @@ -35432,31 +40034,33 @@ var regionHeaders = [220]header{ 0x009d, 0x009d, 0x009d, 0x00a7, 0x00a7, 0x00a7, 0x00b3, 0x00b3, // Entry 40 - 7F 0x00b3, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c7, 0x00c7, 0x00c7, - 0x00d5, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00f5, 0x00f5, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x010b, - 0x010b, 0x010b, 0x010b, 0x0115, 0x0115, 0x0115, 0x011f, 0x011f, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0141, 0x0141, - 0x0141, 0x0151, 0x0151, 0x0163, 0x0163, 0x0163, 0x0163, 0x0169, - 0x0169, 0x0171, 0x0171, 0x017f, 0x018d, 0x018d, 0x0197, 0x0197, - 0x01a1, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, - // Entry 80 - BF - 0x01af, 0x01b7, 0x01b7, 0x01b7, 0x01bf, 0x01c9, 0x01c9, 0x01c9, - 0x01c9, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e1, 0x01eb, + 0x00d5, 0x00dd, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00e9, 0x00e9, + 0x00e9, 0x00f5, 0x00f5, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, + 0x010b, 0x010b, 0x010b, 0x010b, 0x0115, 0x0115, 0x0115, 0x011f, + 0x011f, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0141, + 0x0141, 0x0141, 0x0151, 0x0151, 0x0163, 0x0163, 0x0163, 0x0163, + 0x0169, 0x0169, 0x0171, 0x0171, 0x017f, 0x018d, 0x018d, 0x0197, + 0x0197, 0x01a1, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01af, 0x01af, + // Entry 80 - BF + 0x01af, 0x01af, 0x01b7, 0x01b7, 0x01b7, 0x01bf, 0x01c9, 0x01c9, + 0x01c9, 0x01c9, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e1, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, - 0x01eb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0209, 0x0209, 0x0209, 0x0209, - 0x0209, 0x0209, 0x0219, 0x0229, 0x0235, 0x023f, 0x0249, 0x0249, - 0x0249, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, - 0x0267, 0x0271, 0x0271, 0x0271, 0x0271, 0x027d, 0x028b, 0x028b, - // Entry C0 - FF - 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x0295, 0x029f, - 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02c2, 0x02c2, 0x02c2, 0x02c2, + 0x01eb, 0x01eb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, + 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0209, 0x0209, 0x0209, + 0x0209, 0x0209, 0x0209, 0x0219, 0x0229, 0x0235, 0x023f, 0x0249, + 0x0249, 0x0249, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, + 0x0259, 0x0267, 0x0271, 0x0271, 0x0271, 0x0271, 0x027d, 0x028b, + // Entry C0 - FF + 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x0295, + 0x029f, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, - 0x02c2, 0x02d2, 0x02d2, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, - 0x02dc, 0x02dc, 0x02dc, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, - 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02fa, 0x02fa, 0x02fa, - 0x02fa, 0x02fa, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, - 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x0310, + 0x02c2, 0x02c2, 0x02d2, 0x02d2, 0x02dc, 0x02dc, 0x02dc, 0x02dc, + 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02ec, 0x02ec, 0x02ec, 0x02ec, + 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02fa, 0x02fa, + 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x030a, 0x030a, 0x030a, 0x030a, + 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, + // Entry 100 - 13F + 0x0310, }, }, { // pt @@ -35493,7 +40097,7 @@ var regionHeaders = [220]header{ "zaniaUgandaIslas menores alejadas de los EE.UU.Estados UnidosUruguay" + "UzbekistánSanta Sede (Ciudad del Vaticano)VenezuelaEE.UU. Islas Vírg" + "enesVietnamVanuatuWallis y FutunaSamoaYemenSudáfricaZambiaZimbabue", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x0012, 0x0012, 0x0019, 0x0020, 0x0026, 0x0026, 0x002f, 0x003e, 0x0045, 0x004e, 0x004e, @@ -35505,33 +40109,33 @@ var regionHeaders = [220]header{ 0x012c, 0x0132, 0x0132, 0x013a, 0x013a, 0x0140, 0x0149, 0x0151, // Entry 40 - 7F 0x0151, 0x0158, 0x0158, 0x015f, 0x0166, 0x016c, 0x016c, 0x0173, - 0x017a, 0x0182, 0x0182, 0x018b, 0x018f, 0x018f, 0x0199, 0x0199, - 0x01a0, 0x01a6, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01ba, 0x01bf, - 0x01bf, 0x01bf, 0x01c5, 0x01cb, 0x01cb, 0x01dc, 0x01e2, 0x01e2, - 0x01eb, 0x01ef, 0x01fc, 0x0202, 0x0211, 0x0227, 0x022f, 0x0236, - 0x023c, 0x023c, 0x023c, 0x0245, 0x0245, 0x024b, 0x024b, 0x0250, - 0x0250, 0x0254, 0x0259, 0x0261, 0x0267, 0x026d, 0x026d, 0x0275, - 0x0275, 0x027a, 0x0285, 0x028c, 0x0294, 0x029b, 0x02b2, 0x02c1, - // Entry 80 - BF - 0x02ce, 0x02d4, 0x02d4, 0x02df, 0x02e3, 0x02ea, 0x02ea, 0x02f7, - 0x0300, 0x0307, 0x030d, 0x0315, 0x031f, 0x0326, 0x0326, 0x032f, - 0x0336, 0x033d, 0x033d, 0x0348, 0x0352, 0x0360, 0x036d, 0x0372, - 0x0379, 0x0379, 0x0382, 0x039a, 0x039a, 0x03a4, 0x03a4, 0x03a9, - 0x03b1, 0x03b9, 0x03bf, 0x03c6, 0x03c6, 0x03d0, 0x03d7, 0x03e6, - 0x03ec, 0x03f8, 0x03ff, 0x0408, 0x0415, 0x041c, 0x0421, 0x0426, - 0x0426, 0x0426, 0x042b, 0x0432, 0x0437, 0x0449, 0x045c, 0x0465, - 0x046e, 0x0475, 0x048a, 0x0498, 0x04a3, 0x04b7, 0x04bf, 0x04c5, - // Entry C0 - FF - 0x04cd, 0x04d2, 0x04d2, 0x04d2, 0x04d2, 0x04d8, 0x04dd, 0x04e3, - 0x04f0, 0x04f0, 0x04fa, 0x0500, 0x0506, 0x050e, 0x050e, 0x0517, - 0x0517, 0x0521, 0x052d, 0x0537, 0x053e, 0x0545, 0x054c, 0x055a, - 0x0571, 0x057c, 0x0588, 0x058d, 0x0598, 0x0598, 0x0598, 0x059c, - 0x05bb, 0x05bf, 0x05c8, 0x05d3, 0x05d3, 0x05de, 0x05de, 0x05e4, - 0x05e9, 0x05f1, 0x0602, 0x0602, 0x0602, 0x060a, 0x060a, 0x0610, - 0x0634, 0x0642, 0x0649, 0x0654, 0x0674, 0x0674, 0x067d, 0x067d, - 0x0693, 0x069a, 0x06a1, 0x06b0, 0x06b5, 0x06b5, 0x06ba, 0x06ba, - // Entry 100 - 13F - 0x06c4, 0x06ca, 0x06d2, + 0x017a, 0x0182, 0x0182, 0x0182, 0x018b, 0x018f, 0x018f, 0x0199, + 0x0199, 0x01a0, 0x01a6, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01ba, + 0x01bf, 0x01bf, 0x01bf, 0x01c5, 0x01cb, 0x01cb, 0x01dc, 0x01e2, + 0x01e2, 0x01eb, 0x01ef, 0x01fc, 0x0202, 0x0211, 0x0227, 0x022f, + 0x0236, 0x023c, 0x023c, 0x023c, 0x0245, 0x0245, 0x024b, 0x024b, + 0x0250, 0x0250, 0x0254, 0x0259, 0x0261, 0x0267, 0x026d, 0x026d, + 0x0275, 0x0275, 0x027a, 0x0285, 0x028c, 0x0294, 0x029b, 0x02b2, + // Entry 80 - BF + 0x02c1, 0x02ce, 0x02d4, 0x02d4, 0x02df, 0x02e3, 0x02ea, 0x02ea, + 0x02f7, 0x0300, 0x0307, 0x030d, 0x0315, 0x031f, 0x0326, 0x0326, + 0x032f, 0x0336, 0x033d, 0x033d, 0x0348, 0x0352, 0x0360, 0x036d, + 0x0372, 0x0379, 0x0379, 0x0382, 0x039a, 0x039a, 0x03a4, 0x03a4, + 0x03a9, 0x03b1, 0x03b9, 0x03bf, 0x03c6, 0x03c6, 0x03d0, 0x03d7, + 0x03e6, 0x03ec, 0x03f8, 0x03ff, 0x0408, 0x0415, 0x041c, 0x0421, + 0x0426, 0x0426, 0x0426, 0x042b, 0x0432, 0x0437, 0x0449, 0x045c, + 0x0465, 0x046e, 0x0475, 0x048a, 0x0498, 0x04a3, 0x04b7, 0x04bf, + // Entry C0 - FF + 0x04c5, 0x04cd, 0x04d2, 0x04d2, 0x04d2, 0x04d2, 0x04d8, 0x04dd, + 0x04e3, 0x04f0, 0x04f0, 0x04fa, 0x0500, 0x0506, 0x050e, 0x050e, + 0x0517, 0x0517, 0x0521, 0x052d, 0x0537, 0x053e, 0x0545, 0x054c, + 0x055a, 0x0571, 0x057c, 0x0588, 0x058d, 0x0598, 0x0598, 0x0598, + 0x059c, 0x05bb, 0x05bf, 0x05c8, 0x05d3, 0x05d3, 0x05de, 0x05de, + 0x05e4, 0x05e9, 0x05f1, 0x0602, 0x0602, 0x0602, 0x060a, 0x060a, + 0x0610, 0x0634, 0x0634, 0x0642, 0x0649, 0x0654, 0x0674, 0x0674, + 0x067d, 0x067d, 0x0693, 0x069a, 0x06a1, 0x06b0, 0x06b5, 0x06b5, + // Entry 100 - 13F + 0x06ba, 0x06ba, 0x06c4, 0x06ca, 0x06d2, }, }, { // rm @@ -35580,7 +40184,7 @@ var regionHeaders = [220]header{ "idostEuropa dal SidAustralia e Nova ZelandaMelanesiaRegiun Micronesi" + "caPolinesiaAsiaAsia CentralaAsia dal VestEuropaEuropa OrientalaEurop" + "a dal NordEuropa dal VestAmerica Latina", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001a, 0x0025, 0x0036, 0x003e, 0x0045, 0x004c, 0x0052, 0x005c, 0x0066, 0x0075, 0x007c, 0x0085, 0x008a, @@ -35592,37 +40196,37 @@ var regionHeaders = [220]header{ 0x0203, 0x0208, 0x0219, 0x0221, 0x0221, 0x022a, 0x0232, 0x023a, // Entry 40 - 7F 0x024e, 0x0255, 0x0255, 0x025c, 0x0263, 0x0269, 0x027b, 0x0282, - 0x0288, 0x028f, 0x029e, 0x02a6, 0x02ad, 0x02c0, 0x02ca, 0x02d6, - 0x02df, 0x02e4, 0x02f2, 0x02f9, 0x0300, 0x030f, 0x0317, 0x031c, - 0x0325, 0x032f, 0x0335, 0x033b, 0x0345, 0x0357, 0x035d, 0x038a, - 0x0393, 0x0397, 0x03a4, 0x03aa, 0x03df, 0x03fc, 0x0404, 0x040b, - 0x0410, 0x0417, 0x0417, 0x0420, 0x0427, 0x042d, 0x0439, 0x043e, - 0x0464, 0x0468, 0x046c, 0x0473, 0x0479, 0x047f, 0x0487, 0x048f, - 0x0495, 0x049a, 0x04a6, 0x04b0, 0x04b8, 0x04bf, 0x04d2, 0x04e0, - // Entry 80 - BF - 0x04ed, 0x04f3, 0x0500, 0x050a, 0x050e, 0x0515, 0x0520, 0x052d, - 0x0536, 0x053d, 0x0544, 0x054c, 0x0555, 0x055d, 0x0562, 0x0567, - 0x056d, 0x0575, 0x057f, 0x058b, 0x0595, 0x05a7, 0x05b0, 0x05b4, - 0x05bb, 0x05c3, 0x05f2, 0x060b, 0x0615, 0x061f, 0x0629, 0x062e, - 0x0637, 0x063f, 0x0645, 0x064b, 0x0653, 0x065b, 0x0662, 0x0670, - 0x0675, 0x0682, 0x0689, 0x0692, 0x069d, 0x06a5, 0x06aa, 0x06af, - 0x06b3, 0x06bf, 0x06c3, 0x06c9, 0x06cd, 0x06df, 0x06f0, 0x06fa, - 0x0702, 0x0709, 0x0720, 0x0728, 0x0733, 0x0748, 0x0750, 0x0755, - // Entry C0 - FF - 0x075d, 0x0762, 0x0774, 0x077c, 0x0783, 0x0789, 0x078f, 0x0795, - 0x07a3, 0x07ac, 0x07b6, 0x07bb, 0x07c1, 0x07c9, 0x07d6, 0x07de, - 0x07f2, 0x07fb, 0x0807, 0x0811, 0x0818, 0x081f, 0x0826, 0x0826, - 0x083b, 0x0846, 0x0846, 0x084b, 0x0854, 0x0854, 0x0869, 0x086f, - 0x088d, 0x0891, 0x0899, 0x08a6, 0x08ad, 0x08bd, 0x08c9, 0x08d0, - 0x08d5, 0x08dc, 0x08ed, 0x08f3, 0x08f9, 0x0901, 0x0908, 0x090e, - 0x094b, 0x0966, 0x096d, 0x0977, 0x0988, 0x09a6, 0x09af, 0x09ca, - 0x09e4, 0x09eb, 0x09f2, 0x0a01, 0x0a06, 0x0a06, 0x0a0b, 0x0a12, - // Entry 100 - 13F - 0x0a20, 0x0a26, 0x0a2e, 0x0a54, 0x0a58, 0x0a5e, 0x0a6e, 0x0a7d, - 0x0a84, 0x0a93, 0x0aa3, 0x0ab4, 0x0ac3, 0x0ad2, 0x0ae4, 0x0b19, - 0x0b19, 0x0b21, 0x0b30, 0x0b3c, 0x0b4b, 0x0b59, 0x0b71, 0x0b7a, - 0x0b8c, 0x0b95, 0x0b99, 0x0ba6, 0x0bb3, 0x0bb9, 0x0bc9, 0x0bd8, - 0x0be7, 0x0bf5, + 0x0288, 0x028f, 0x029e, 0x029e, 0x02a6, 0x02ad, 0x02c0, 0x02ca, + 0x02d6, 0x02df, 0x02e4, 0x02f2, 0x02f9, 0x0300, 0x030f, 0x0317, + 0x031c, 0x0325, 0x032f, 0x0335, 0x033b, 0x0345, 0x0357, 0x035d, + 0x038a, 0x0393, 0x0397, 0x03a4, 0x03aa, 0x03df, 0x03fc, 0x0404, + 0x040b, 0x0410, 0x0417, 0x0417, 0x0420, 0x0427, 0x042d, 0x0439, + 0x043e, 0x0464, 0x0468, 0x046c, 0x0473, 0x0479, 0x047f, 0x0487, + 0x048f, 0x0495, 0x049a, 0x04a6, 0x04b0, 0x04b8, 0x04bf, 0x04d2, + // Entry 80 - BF + 0x04e0, 0x04ed, 0x04f3, 0x0500, 0x050a, 0x050e, 0x0515, 0x0520, + 0x052d, 0x0536, 0x053d, 0x0544, 0x054c, 0x0555, 0x055d, 0x0562, + 0x0567, 0x056d, 0x0575, 0x057f, 0x058b, 0x0595, 0x05a7, 0x05b0, + 0x05b4, 0x05bb, 0x05c3, 0x05f2, 0x060b, 0x0615, 0x061f, 0x0629, + 0x062e, 0x0637, 0x063f, 0x0645, 0x064b, 0x0653, 0x065b, 0x0662, + 0x0670, 0x0675, 0x0682, 0x0689, 0x0692, 0x069d, 0x06a5, 0x06aa, + 0x06af, 0x06b3, 0x06bf, 0x06c3, 0x06c9, 0x06cd, 0x06df, 0x06f0, + 0x06fa, 0x0702, 0x0709, 0x0720, 0x0728, 0x0733, 0x0748, 0x0750, + // Entry C0 - FF + 0x0755, 0x075d, 0x0762, 0x0774, 0x077c, 0x0783, 0x0789, 0x078f, + 0x0795, 0x07a3, 0x07ac, 0x07b6, 0x07bb, 0x07c1, 0x07c9, 0x07d6, + 0x07de, 0x07f2, 0x07fb, 0x0807, 0x0811, 0x0818, 0x081f, 0x0826, + 0x0826, 0x083b, 0x0846, 0x0846, 0x084b, 0x0854, 0x0854, 0x0869, + 0x086f, 0x088d, 0x0891, 0x0899, 0x08a6, 0x08ad, 0x08bd, 0x08c9, + 0x08d0, 0x08d5, 0x08dc, 0x08ed, 0x08f3, 0x08f9, 0x0901, 0x0908, + 0x090e, 0x094b, 0x094b, 0x0966, 0x096d, 0x0977, 0x0988, 0x09a6, + 0x09af, 0x09ca, 0x09e4, 0x09eb, 0x09f2, 0x0a01, 0x0a06, 0x0a06, + // Entry 100 - 13F + 0x0a0b, 0x0a12, 0x0a20, 0x0a26, 0x0a2e, 0x0a54, 0x0a58, 0x0a5e, + 0x0a6e, 0x0a7d, 0x0a84, 0x0a93, 0x0aa3, 0x0ab4, 0x0ac3, 0x0ad2, + 0x0ae4, 0x0b19, 0x0b19, 0x0b21, 0x0b30, 0x0b3c, 0x0b4b, 0x0b59, + 0x0b71, 0x0b7a, 0x0b8c, 0x0b95, 0x0b99, 0x0ba6, 0x0bb3, 0x0bb9, + 0x0bc9, 0x0bd8, 0x0be7, 0x0bf5, }, }, { // rn @@ -35663,7 +40267,7 @@ var regionHeaders = [220]header{ "erenadineVenezuwelaIbirwa by’isugi by’AbongerezaAmazinga y’Isugi y’A" + "banyamerikaViyetinamuVanuwatuWalisi na FutunaSamowaYemeniMayoteAfuri" + "ka y’EpfoZambiyaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0023, 0x0030, 0x0043, 0x004a, 0x0053, 0x005c, 0x0062, 0x0062, 0x006c, 0x007c, 0x0084, 0x008f, 0x0094, @@ -35675,39 +40279,67 @@ var regionHeaders = [220]header{ 0x01fa, 0x020c, 0x021e, 0x0225, 0x0225, 0x022b, 0x0235, 0x023d, // Entry 40 - 7F 0x0253, 0x025c, 0x025c, 0x0264, 0x026d, 0x0273, 0x0273, 0x027c, - 0x0286, 0x028f, 0x028f, 0x0298, 0x029c, 0x02b2, 0x02be, 0x02be, - 0x02c8, 0x02cc, 0x02d7, 0x02df, 0x02e9, 0x02ff, 0x02ff, 0x0303, - 0x030f, 0x031a, 0x0321, 0x0327, 0x0330, 0x0343, 0x034c, 0x034c, - 0x0355, 0x035a, 0x0367, 0x036d, 0x036d, 0x036d, 0x0376, 0x0380, - 0x0386, 0x038f, 0x038f, 0x0399, 0x03a1, 0x03aa, 0x03aa, 0x03b2, - 0x03e2, 0x03e7, 0x03ec, 0x03f6, 0x0401, 0x0401, 0x0409, 0x0413, - 0x041c, 0x0421, 0x042d, 0x0434, 0x043c, 0x044d, 0x045e, 0x0474, - // Entry 80 - BF - 0x0487, 0x048d, 0x04a0, 0x04ac, 0x04b2, 0x04b8, 0x04c0, 0x04d2, - 0x04db, 0x04e3, 0x04e9, 0x04f3, 0x04fe, 0x0504, 0x050a, 0x0510, - 0x0516, 0x051e, 0x051e, 0x051e, 0x052a, 0x053e, 0x0548, 0x054c, - 0x0556, 0x055f, 0x055f, 0x0585, 0x058f, 0x0599, 0x05a4, 0x05aa, - 0x05bb, 0x05c3, 0x05c9, 0x05d1, 0x05d9, 0x05e2, 0x05ea, 0x05f8, - 0x05fe, 0x0613, 0x061b, 0x0624, 0x062e, 0x0636, 0x063c, 0x0642, - 0x0648, 0x0655, 0x065a, 0x0660, 0x0664, 0x067d, 0x068e, 0x06a2, - 0x06ac, 0x06b3, 0x06c8, 0x06d4, 0x06de, 0x06fc, 0x0706, 0x070c, - // Entry C0 - FF - 0x0713, 0x0719, 0x0719, 0x072d, 0x0735, 0x0735, 0x073e, 0x0746, - 0x0756, 0x076a, 0x077f, 0x0785, 0x078b, 0x0794, 0x079c, 0x07a6, - 0x07a6, 0x07b0, 0x07bc, 0x07c6, 0x07ce, 0x07d6, 0x07de, 0x07de, - 0x07f3, 0x0801, 0x0801, 0x0807, 0x0812, 0x0812, 0x0831, 0x0835, - 0x0835, 0x0839, 0x0842, 0x084e, 0x0856, 0x086e, 0x087e, 0x0886, - 0x088b, 0x0893, 0x08a7, 0x08ad, 0x08b5, 0x08be, 0x08c5, 0x08cd, - 0x08cd, 0x08e9, 0x08ef, 0x08fc, 0x090e, 0x0923, 0x092d, 0x094e, - 0x0971, 0x097b, 0x0983, 0x0993, 0x0999, 0x0999, 0x099f, 0x09a5, - // Entry 100 - 13F - 0x09b5, 0x09bc, 0x09c4, + 0x0286, 0x028f, 0x028f, 0x028f, 0x0298, 0x029c, 0x02b2, 0x02be, + 0x02be, 0x02c8, 0x02cc, 0x02d7, 0x02df, 0x02e9, 0x02ff, 0x02ff, + 0x0303, 0x030f, 0x031a, 0x0321, 0x0327, 0x0330, 0x0343, 0x034c, + 0x034c, 0x0355, 0x035a, 0x0367, 0x036d, 0x036d, 0x036d, 0x0376, + 0x0380, 0x0386, 0x038f, 0x038f, 0x0399, 0x03a1, 0x03aa, 0x03aa, + 0x03b2, 0x03e2, 0x03e7, 0x03ec, 0x03f6, 0x0401, 0x0401, 0x0409, + 0x0413, 0x041c, 0x0421, 0x042d, 0x0434, 0x043c, 0x044d, 0x045e, + // Entry 80 - BF + 0x0474, 0x0487, 0x048d, 0x04a0, 0x04ac, 0x04b2, 0x04b8, 0x04c0, + 0x04d2, 0x04db, 0x04e3, 0x04e9, 0x04f3, 0x04fe, 0x0504, 0x050a, + 0x0510, 0x0516, 0x051e, 0x051e, 0x051e, 0x052a, 0x053e, 0x0548, + 0x054c, 0x0556, 0x055f, 0x055f, 0x0585, 0x058f, 0x0599, 0x05a4, + 0x05aa, 0x05bb, 0x05c3, 0x05c9, 0x05d1, 0x05d9, 0x05e2, 0x05ea, + 0x05f8, 0x05fe, 0x0613, 0x061b, 0x0624, 0x062e, 0x0636, 0x063c, + 0x0642, 0x0648, 0x0655, 0x065a, 0x0660, 0x0664, 0x067d, 0x068e, + 0x06a2, 0x06ac, 0x06b3, 0x06c8, 0x06d4, 0x06de, 0x06fc, 0x0706, + // Entry C0 - FF + 0x070c, 0x0713, 0x0719, 0x0719, 0x072d, 0x0735, 0x0735, 0x073e, + 0x0746, 0x0756, 0x076a, 0x077f, 0x0785, 0x078b, 0x0794, 0x079c, + 0x07a6, 0x07a6, 0x07b0, 0x07bc, 0x07c6, 0x07ce, 0x07d6, 0x07de, + 0x07de, 0x07f3, 0x0801, 0x0801, 0x0807, 0x0812, 0x0812, 0x0831, + 0x0835, 0x0835, 0x0839, 0x0842, 0x084e, 0x0856, 0x086e, 0x087e, + 0x0886, 0x088b, 0x0893, 0x08a7, 0x08ad, 0x08b5, 0x08be, 0x08c5, + 0x08cd, 0x08cd, 0x08cd, 0x08e9, 0x08ef, 0x08fc, 0x090e, 0x0923, + 0x092d, 0x094e, 0x0971, 0x097b, 0x0983, 0x0993, 0x0999, 0x0999, + // Entry 100 - 13F + 0x099f, 0x09a5, 0x09b5, 0x09bc, 0x09c4, }, }, { // ro roRegionStr, roRegionIdx, }, + { // ro-MD + "Myanmar", + []uint16{ // 154 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40 - 7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 80 - BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0007, + }, + }, { // rof "AndoroFalme za KiarabuAfuganistaniAntigua na BabudaAnguilaAlbaniaAmeniaA" + "ngoloAjentinaSamoa ya MarekaniOstriaAustraliaArubaAzabajaniBosnia na" + @@ -35740,7 +40372,7 @@ var regionHeaders = [220]header{ "senti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa vya" + " Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMayott" + "eAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0033, 0x003a, 0x0041, 0x0047, 0x004d, 0x004d, 0x0055, 0x0066, 0x006c, 0x0075, 0x007a, @@ -35752,42 +40384,84 @@ var regionHeaders = [220]header{ 0x01a5, 0x01ac, 0x01bc, 0x01c5, 0x01c5, 0x01cb, 0x01d2, 0x01da, // Entry 40 - 7F 0x01ed, 0x01f4, 0x01f4, 0x01fa, 0x0201, 0x0206, 0x0206, 0x020d, - 0x0215, 0x021d, 0x021d, 0x0222, 0x0226, 0x0239, 0x0243, 0x0243, - 0x024b, 0x0251, 0x025a, 0x0261, 0x0266, 0x0279, 0x0279, 0x027e, - 0x0286, 0x028f, 0x0295, 0x0299, 0x02a2, 0x02ab, 0x02b2, 0x02b2, - 0x02bb, 0x02bf, 0x02c8, 0x02ce, 0x02ce, 0x02ce, 0x02d7, 0x02de, - 0x02e3, 0x02eb, 0x02eb, 0x02f4, 0x02fc, 0x0303, 0x0303, 0x0308, - 0x032d, 0x0332, 0x0338, 0x0340, 0x0346, 0x0346, 0x034d, 0x0354, - 0x035a, 0x035f, 0x036c, 0x0374, 0x037c, 0x0382, 0x0395, 0x03a4, - // Entry 80 - BF - 0x03b0, 0x03b7, 0x03c8, 0x03d3, 0x03d8, 0x03e0, 0x03ea, 0x03f4, - 0x03fd, 0x0404, 0x040a, 0x0412, 0x041b, 0x0422, 0x0427, 0x042d, - 0x0433, 0x043a, 0x043a, 0x043a, 0x0440, 0x0452, 0x045b, 0x045f, - 0x0464, 0x046c, 0x046c, 0x048c, 0x0495, 0x049e, 0x04a9, 0x04ae, - 0x04b4, 0x04ba, 0x04c0, 0x04c7, 0x04ce, 0x04d6, 0x04dd, 0x04e9, - 0x04ef, 0x0500, 0x0507, 0x0510, 0x0518, 0x051d, 0x0523, 0x0528, - 0x052c, 0x0536, 0x053b, 0x0541, 0x0545, 0x055a, 0x055f, 0x0567, - 0x0570, 0x0577, 0x058d, 0x0596, 0x059f, 0x05d1, 0x05d6, 0x05db, - // Entry C0 - FF - 0x05e3, 0x05e9, 0x05e9, 0x05f2, 0x05f9, 0x05f9, 0x05fe, 0x0604, - 0x0609, 0x061b, 0x0625, 0x062b, 0x0631, 0x0639, 0x0644, 0x064c, - 0x064c, 0x0654, 0x065f, 0x0667, 0x066f, 0x0676, 0x067e, 0x067e, - 0x0692, 0x069a, 0x069a, 0x069f, 0x06a5, 0x06a5, 0x06be, 0x06c3, - 0x06c3, 0x06c7, 0x06cf, 0x06da, 0x06e1, 0x06f4, 0x0703, 0x070a, - 0x070f, 0x0716, 0x0728, 0x072e, 0x0735, 0x073d, 0x0744, 0x074a, - 0x074a, 0x0752, 0x0759, 0x0765, 0x076d, 0x0786, 0x078f, 0x07ae, - 0x07cc, 0x07d5, 0x07dc, 0x07eb, 0x07f0, 0x07f0, 0x07f6, 0x07fd, - // Entry 100 - 13F - 0x080a, 0x0810, 0x0818, + 0x0215, 0x021d, 0x021d, 0x021d, 0x0222, 0x0226, 0x0239, 0x0243, + 0x0243, 0x024b, 0x0251, 0x025a, 0x0261, 0x0266, 0x0279, 0x0279, + 0x027e, 0x0286, 0x028f, 0x0295, 0x0299, 0x02a2, 0x02ab, 0x02b2, + 0x02b2, 0x02bb, 0x02bf, 0x02c8, 0x02ce, 0x02ce, 0x02ce, 0x02d7, + 0x02de, 0x02e3, 0x02eb, 0x02eb, 0x02f4, 0x02fc, 0x0303, 0x0303, + 0x0308, 0x032d, 0x0332, 0x0338, 0x0340, 0x0346, 0x0346, 0x034d, + 0x0354, 0x035a, 0x035f, 0x036c, 0x0374, 0x037c, 0x0382, 0x0395, + // Entry 80 - BF + 0x03a4, 0x03b0, 0x03b7, 0x03c8, 0x03d3, 0x03d8, 0x03e0, 0x03ea, + 0x03f4, 0x03fd, 0x0404, 0x040a, 0x0412, 0x041b, 0x0422, 0x0427, + 0x042d, 0x0433, 0x043a, 0x043a, 0x043a, 0x0440, 0x0452, 0x045b, + 0x045f, 0x0464, 0x046c, 0x046c, 0x048c, 0x0495, 0x049e, 0x04a9, + 0x04ae, 0x04b4, 0x04ba, 0x04c0, 0x04c7, 0x04ce, 0x04d6, 0x04dd, + 0x04e9, 0x04ef, 0x0500, 0x0507, 0x0510, 0x0518, 0x051d, 0x0523, + 0x0528, 0x052c, 0x0536, 0x053b, 0x0541, 0x0545, 0x055a, 0x055f, + 0x0567, 0x0570, 0x0577, 0x058d, 0x0596, 0x059f, 0x05d1, 0x05d6, + // Entry C0 - FF + 0x05db, 0x05e3, 0x05e9, 0x05e9, 0x05f2, 0x05f9, 0x05f9, 0x05fe, + 0x0604, 0x0609, 0x061b, 0x0625, 0x062b, 0x0631, 0x0639, 0x0644, + 0x064c, 0x064c, 0x0654, 0x065f, 0x0667, 0x066f, 0x0676, 0x067e, + 0x067e, 0x0692, 0x069a, 0x069a, 0x069f, 0x06a5, 0x06a5, 0x06be, + 0x06c3, 0x06c3, 0x06c7, 0x06cf, 0x06da, 0x06e1, 0x06f4, 0x0703, + 0x070a, 0x070f, 0x0716, 0x0728, 0x072e, 0x0735, 0x073d, 0x0744, + 0x074a, 0x074a, 0x074a, 0x0752, 0x0759, 0x0765, 0x076d, 0x0786, + 0x078f, 0x07ae, 0x07cc, 0x07d5, 0x07dc, 0x07eb, 0x07f0, 0x07f0, + // Entry 100 - 13F + 0x07f6, 0x07fd, 0x080a, 0x0810, 0x0818, }, }, { // ru ruRegionStr, ruRegionIdx, }, + { // ru-UA + "О-в ВознесенияОбъединенные Арабские ЭмиратыО-в БувеЦентрально-Африканска" + + "я РеспубликаО-ва КукаО-в КлиппертонО-в РождестваО-ва Херд и Макдона" + + "льдО-в НорфолкТимор-ЛестеМалые Тихоокеанские Отдаленные Острова США", + []uint16{ // 242 elements + // Entry 0 - 3F + 0x0000, 0x001a, 0x001a, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, + 0x0052, 0x0052, 0x0052, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, + 0x0060, 0x0060, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00b0, 0x00b0, + 0x00b0, 0x00b0, 0x00b0, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + // Entry 40 - 7F + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, + 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + // Entry 80 - BF + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x010a, 0x010a, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + // Entry C0 - FF + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, + 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0133, 0x0133, + 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, + 0x0133, 0x0183, + }, + }, { // rw "RwandaIgitonga", - []uint16{ // 233 elements + []uint16{ // 234 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -35816,12 +40490,12 @@ var regionHeaders = [220]header{ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x000e, + 0x0006, 0x000e, }, }, { // rwk @@ -35856,7 +40530,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -35868,76 +40542,80 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // sah - "КытайАрассыыйаАан дойдуАапырыкаХотугу ЭмиэрикэСоҕуруу Эмиэрикэ", - []uint16{ // 264 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - // Entry 40 - 7F - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + "БразилияКанаадаЧиилиКытайКуубаЭстонияФинляндияУлуу БританияИрландияМэн а" + + "рыыИсландияДьамаайкаЛитваЛатвияЛиибийэМиэксикэНорвегияАрассыыйаСуда" + + "анШвецияАмерика Холбоһуктаах ШтааттараАан дойдуАапырыкаХотугу Эмиэр" + + "икэСоҕуруу Эмиэрикэ", + []uint16{ // 266 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001e, + 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0028, + 0x0028, 0x0032, 0x0032, 0x0032, 0x0032, 0x003c, 0x003c, 0x003c, + 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, + // Entry 40 - 7F + 0x003c, 0x003c, 0x003c, 0x003c, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, + 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0085, 0x0085, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x00a4, 0x00a4, 0x00a4, 0x00b6, + 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, // Entry 80 - BF - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, + 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c0, 0x00c0, 0x00cc, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, + 0x00da, 0x00da, 0x00da, 0x00da, 0x00ea, 0x00ea, 0x00ea, 0x00ea, + 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00fa, 0x00fa, + 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, + 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, // Entry C0 - FF - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, + 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x010c, + 0x010c, 0x010c, 0x010c, 0x010c, 0x0118, 0x0124, 0x0124, 0x0124, + 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, + 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, + 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, + 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, + 0x0124, 0x0124, 0x0124, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, + 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, // Entry 100 - 13F - 0x001c, 0x001c, 0x001c, 0x001c, 0x002d, 0x003d, 0x005a, 0x0079, + 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x016f, 0x017f, + 0x019c, 0x01bb, }, }, { // saq @@ -35972,7 +40650,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -35984,33 +40662,33 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // sbp @@ -36048,7 +40726,7 @@ var regionHeaders = [220]header{ "aniVatikaniSantavisenti na GilenadiniVenesuelaFigunguli ifya Viligin" + "iya ifya UwingelesaFigunguli fya Viliginiya ifya MalekaniVietinamuVa" + "nuatuWalisi ni FutunaSamoyaYemeniMayoteAfilika KusiniSambiyaSimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0018, 0x0025, 0x003a, 0x0042, 0x004b, 0x0054, 0x005a, 0x005a, 0x0062, 0x0074, 0x007f, 0x008c, 0x0091, @@ -36060,33 +40738,33 @@ var regionHeaders = [220]header{ 0x01d7, 0x01df, 0x01f0, 0x01fa, 0x01fa, 0x0200, 0x0208, 0x0210, // Entry 40 - 7F 0x0224, 0x022d, 0x022d, 0x0233, 0x023c, 0x0242, 0x0242, 0x024b, - 0x0255, 0x025d, 0x025d, 0x0263, 0x0267, 0x027e, 0x028a, 0x028a, - 0x0293, 0x0299, 0x02a3, 0x02ab, 0x02b1, 0x02c5, 0x02c5, 0x02ca, - 0x02d4, 0x02df, 0x02e6, 0x02ea, 0x02f3, 0x02fc, 0x0304, 0x0304, - 0x030d, 0x0312, 0x031c, 0x0322, 0x0322, 0x0322, 0x032b, 0x0333, - 0x0339, 0x0342, 0x0342, 0x034c, 0x0354, 0x035c, 0x035c, 0x0362, - 0x038b, 0x0390, 0x0397, 0x03a1, 0x03a8, 0x03a8, 0x03af, 0x03b7, - 0x03bd, 0x03c2, 0x03d0, 0x03d9, 0x03e1, 0x03e7, 0x03fc, 0x041b, - // Entry 80 - BF - 0x042b, 0x0432, 0x0449, 0x0455, 0x045b, 0x0463, 0x046e, 0x0479, - 0x0482, 0x048a, 0x0490, 0x0499, 0x04a2, 0x04aa, 0x04b0, 0x04b6, - 0x04bc, 0x04c4, 0x04c4, 0x04c4, 0x04ca, 0x04e2, 0x04ec, 0x04f0, - 0x04f6, 0x04ff, 0x04ff, 0x0530, 0x053a, 0x0544, 0x0550, 0x0556, - 0x055c, 0x0562, 0x0568, 0x0570, 0x0578, 0x0581, 0x0589, 0x0596, - 0x059c, 0x05b3, 0x05bb, 0x05c4, 0x05cd, 0x05d2, 0x05d8, 0x05de, - 0x05e3, 0x05ed, 0x05f2, 0x05f8, 0x05fc, 0x0613, 0x0619, 0x0621, - 0x062b, 0x0632, 0x0648, 0x0653, 0x065c, 0x068e, 0x0694, 0x069a, - // Entry C0 - FF - 0x06a3, 0x06a9, 0x06a9, 0x06b2, 0x06ba, 0x06ba, 0x06c0, 0x06c6, - 0x06cc, 0x06e2, 0x06ec, 0x06f2, 0x06f8, 0x0700, 0x070b, 0x0715, - 0x0715, 0x071f, 0x072b, 0x0733, 0x073b, 0x0743, 0x074b, 0x074b, - 0x0762, 0x076b, 0x076b, 0x0771, 0x0777, 0x0777, 0x0794, 0x0799, - 0x0799, 0x079d, 0x07a5, 0x07b1, 0x07b9, 0x07c9, 0x07d9, 0x07e1, - 0x07e6, 0x07ed, 0x0801, 0x0807, 0x080e, 0x0817, 0x0820, 0x0826, - 0x0826, 0x082e, 0x0836, 0x0843, 0x084b, 0x0865, 0x086e, 0x0897, - 0x08bd, 0x08c6, 0x08cd, 0x08dd, 0x08e3, 0x08e3, 0x08e9, 0x08ef, - // Entry 100 - 13F - 0x08fd, 0x0904, 0x090c, + 0x0255, 0x025d, 0x025d, 0x025d, 0x0263, 0x0267, 0x027e, 0x028a, + 0x028a, 0x0293, 0x0299, 0x02a3, 0x02ab, 0x02b1, 0x02c5, 0x02c5, + 0x02ca, 0x02d4, 0x02df, 0x02e6, 0x02ea, 0x02f3, 0x02fc, 0x0304, + 0x0304, 0x030d, 0x0312, 0x031c, 0x0322, 0x0322, 0x0322, 0x032b, + 0x0333, 0x0339, 0x0342, 0x0342, 0x034c, 0x0354, 0x035c, 0x035c, + 0x0362, 0x038b, 0x0390, 0x0397, 0x03a1, 0x03a8, 0x03a8, 0x03af, + 0x03b7, 0x03bd, 0x03c2, 0x03d0, 0x03d9, 0x03e1, 0x03e7, 0x03fc, + // Entry 80 - BF + 0x041b, 0x042b, 0x0432, 0x0449, 0x0455, 0x045b, 0x0463, 0x046e, + 0x0479, 0x0482, 0x048a, 0x0490, 0x0499, 0x04a2, 0x04aa, 0x04b0, + 0x04b6, 0x04bc, 0x04c4, 0x04c4, 0x04c4, 0x04ca, 0x04e2, 0x04ec, + 0x04f0, 0x04f6, 0x04ff, 0x04ff, 0x0530, 0x053a, 0x0544, 0x0550, + 0x0556, 0x055c, 0x0562, 0x0568, 0x0570, 0x0578, 0x0581, 0x0589, + 0x0596, 0x059c, 0x05b3, 0x05bb, 0x05c4, 0x05cd, 0x05d2, 0x05d8, + 0x05de, 0x05e3, 0x05ed, 0x05f2, 0x05f8, 0x05fc, 0x0613, 0x0619, + 0x0621, 0x062b, 0x0632, 0x0648, 0x0653, 0x065c, 0x068e, 0x0694, + // Entry C0 - FF + 0x069a, 0x06a3, 0x06a9, 0x06a9, 0x06b2, 0x06ba, 0x06ba, 0x06c0, + 0x06c6, 0x06cc, 0x06e2, 0x06ec, 0x06f2, 0x06f8, 0x0700, 0x070b, + 0x0715, 0x0715, 0x071f, 0x072b, 0x0733, 0x073b, 0x0743, 0x074b, + 0x074b, 0x0762, 0x076b, 0x076b, 0x0771, 0x0777, 0x0777, 0x0794, + 0x0799, 0x0799, 0x079d, 0x07a5, 0x07b1, 0x07b9, 0x07c9, 0x07d9, + 0x07e1, 0x07e6, 0x07ed, 0x0801, 0x0807, 0x080e, 0x0817, 0x0820, + 0x0826, 0x0826, 0x0826, 0x082e, 0x0836, 0x0843, 0x084b, 0x0865, + 0x086e, 0x0897, 0x08bd, 0x08c6, 0x08cd, 0x08dd, 0x08e3, 0x08e3, + // Entry 100 - 13F + 0x08e9, 0x08ef, 0x08fd, 0x0904, 0x090c, }, }, { // se @@ -36132,7 +40810,7 @@ var regionHeaders = [220]header{ "amátta-Ásiamátta-nuorta-Ásiamátta-EurohpáAustrália ja Ođđa-SelándaMe" + "lanesiaMikronesia guovllusPolynesiaÁsiagaska-Ásiaoarji-ÁsiaEurohpánu" + "orta-Eurohpádavvi-Eurohpáoarji-Eurohpálulli-Amerihkká", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x005a, 0x0061, 0x0067, 0x0071, 0x007a, 0x0089, 0x0094, 0x009e, 0x00a3, @@ -36144,43 +40822,43 @@ var regionHeaders = [220]header{ 0x0232, 0x0238, 0x0240, 0x0246, 0x0252, 0x025a, 0x0264, 0x026c, // Entry 40 - 7F 0x0284, 0x028b, 0x029b, 0x02a2, 0x02ab, 0x02b1, 0x02be, 0x02c5, - 0x02cc, 0x02d3, 0x02e3, 0x02e9, 0x02f3, 0x0301, 0x030b, 0x0315, - 0x031f, 0x0324, 0x0336, 0x033d, 0x0344, 0x0357, 0x035f, 0x0364, - 0x036d, 0x037d, 0x0384, 0x038a, 0x0394, 0x03a7, 0x03ad, 0x03d3, - 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x03fb, 0x0414, 0x041c, 0x0424, - 0x0429, 0x042f, 0x043d, 0x0446, 0x044e, 0x0454, 0x045f, 0x0464, - 0x0464, 0x0468, 0x046c, 0x0474, 0x047b, 0x0481, 0x0488, 0x0491, - 0x0498, 0x049d, 0x04a8, 0x04b1, 0x04b9, 0x04c0, 0x04d4, 0x04df, - // Entry 80 - BF - 0x04eb, 0x04f1, 0x04fe, 0x0507, 0x050b, 0x0512, 0x051d, 0x052a, - 0x0533, 0x053a, 0x0541, 0x0548, 0x0552, 0x0559, 0x055e, 0x0565, - 0x056b, 0x0574, 0x057e, 0x0596, 0x05a0, 0x05ae, 0x05b7, 0x05bb, - 0x05c0, 0x05c8, 0x05ce, 0x05dd, 0x05e7, 0x05f2, 0x05fc, 0x0602, - 0x060b, 0x0616, 0x061c, 0x0623, 0x062a, 0x0632, 0x0639, 0x0649, - 0x064e, 0x065b, 0x0662, 0x066b, 0x0679, 0x067e, 0x0683, 0x0688, - 0x068c, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06d1, 0x06dd, - 0x06e5, 0x06ea, 0x0702, 0x070a, 0x0715, 0x071e, 0x0728, 0x072d, - // Entry C0 - FF - 0x0735, 0x073a, 0x073a, 0x0742, 0x074a, 0x0750, 0x0758, 0x075e, - 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, 0x07a2, 0x07ae, 0x07b6, - 0x07cd, 0x07d6, 0x07e2, 0x07ec, 0x07f3, 0x07fb, 0x0802, 0x080d, - 0x0824, 0x082f, 0x084a, 0x084f, 0x0858, 0x0868, 0x087e, 0x0883, - 0x0883, 0x0887, 0x088f, 0x089a, 0x08a1, 0x08ad, 0x08b9, 0x08c0, - 0x08c5, 0x08ca, 0x08dc, 0x08e2, 0x08e8, 0x08f1, 0x08f8, 0x08fe, - 0x08fe, 0x091d, 0x0924, 0x092e, 0x0937, 0x0951, 0x095a, 0x0971, - 0x0982, 0x0989, 0x0990, 0x09a0, 0x09a5, 0x09ab, 0x09b0, 0x09b7, - // Entry 100 - 13F - 0x09c6, 0x09cc, 0x09d4, 0x09e8, 0x09f0, 0x09f9, 0x0a1e, 0x0a2f, - 0x0a36, 0x0a45, 0x0a55, 0x0a65, 0x0a74, 0x0a83, 0x0a93, 0x0a9d, - 0x0aae, 0x0ab5, 0x0ac1, 0x0acd, 0x0ae0, 0x0aef, 0x0b0c, 0x0b15, - 0x0b28, 0x0b31, 0x0b36, 0x0b41, 0x0b4c, 0x0b54, 0x0b63, 0x0b71, - 0x0b7f, 0x0b8f, + 0x02cc, 0x02d3, 0x02e3, 0x02e3, 0x02e9, 0x02f3, 0x0301, 0x030b, + 0x0315, 0x031f, 0x0324, 0x0336, 0x033d, 0x0344, 0x0357, 0x035f, + 0x0364, 0x036d, 0x037d, 0x0384, 0x038a, 0x0394, 0x03a7, 0x03ad, + 0x03d3, 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x03fb, 0x0414, 0x041c, + 0x0424, 0x0429, 0x042f, 0x043d, 0x0446, 0x044e, 0x0454, 0x045f, + 0x0464, 0x0464, 0x0468, 0x046c, 0x0474, 0x047b, 0x0481, 0x0488, + 0x0491, 0x0498, 0x049d, 0x04a8, 0x04b1, 0x04b9, 0x04c0, 0x04d4, + // Entry 80 - BF + 0x04df, 0x04eb, 0x04f1, 0x04fe, 0x0507, 0x050b, 0x0512, 0x051d, + 0x052a, 0x0533, 0x053a, 0x0541, 0x0548, 0x0552, 0x0559, 0x055e, + 0x0565, 0x056b, 0x0574, 0x057e, 0x0596, 0x05a0, 0x05ae, 0x05b7, + 0x05bb, 0x05c0, 0x05c8, 0x05ce, 0x05dd, 0x05e7, 0x05f2, 0x05fc, + 0x0602, 0x060b, 0x0616, 0x061c, 0x0623, 0x062a, 0x0632, 0x0639, + 0x0649, 0x064e, 0x065b, 0x0662, 0x066b, 0x0679, 0x067e, 0x0683, + 0x0688, 0x068c, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06d1, + 0x06dd, 0x06e5, 0x06ea, 0x0702, 0x070a, 0x0715, 0x071e, 0x0728, + // Entry C0 - FF + 0x072d, 0x0735, 0x073a, 0x073a, 0x0742, 0x074a, 0x0750, 0x0758, + 0x075e, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, 0x07a2, 0x07ae, + 0x07b6, 0x07cd, 0x07d6, 0x07e2, 0x07ec, 0x07f3, 0x07fb, 0x0802, + 0x080d, 0x0824, 0x082f, 0x084a, 0x084f, 0x0858, 0x0868, 0x087e, + 0x0883, 0x0883, 0x0887, 0x088f, 0x089a, 0x08a1, 0x08ad, 0x08b9, + 0x08c0, 0x08c5, 0x08ca, 0x08dc, 0x08e2, 0x08e8, 0x08f1, 0x08f8, + 0x08fe, 0x08fe, 0x08fe, 0x091d, 0x0924, 0x092e, 0x0937, 0x0951, + 0x095a, 0x0971, 0x0982, 0x0989, 0x0990, 0x09a0, 0x09a5, 0x09ab, + // Entry 100 - 13F + 0x09b0, 0x09b7, 0x09c6, 0x09cc, 0x09d4, 0x09e8, 0x09f0, 0x09f9, + 0x0a1e, 0x0a2f, 0x0a36, 0x0a45, 0x0a55, 0x0a65, 0x0a74, 0x0a83, + 0x0a93, 0x0a9d, 0x0aae, 0x0ab5, 0x0ac1, 0x0acd, 0x0ae0, 0x0aef, + 0x0b0c, 0x0b15, 0x0b28, 0x0b31, 0x0b36, 0x0b41, 0x0b4c, 0x0b54, + 0x0b63, 0x0b71, 0x0b7f, 0x0b8f, }, }, { // se-FI "Bosnia ja HercegovinaKambožaSudanChadDavvi-Amerihkká ja Gaska-AmerihkkáL" + "ulli-AmerihkkáGaska-AmerihkkáDavvi-AmerihkkáLatiinnalaš-Amerihkká", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -36198,7 +40876,7 @@ var regionHeaders = [220]header{ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, 0x001d, 0x001d, // Entry 80 - BF 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, @@ -36210,19 +40888,19 @@ var regionHeaders = [220]header{ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, // Entry C0 - FF 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, + 0x001d, 0x001d, 0x001d, 0x001d, 0x0022, 0x0022, 0x0022, 0x0022, + 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, // Entry 100 - 13F - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x004a, 0x005a, - 0x005a, 0x005a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, + 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, + 0x004a, 0x005a, 0x005a, 0x005a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, - 0x007a, 0x0091, + 0x007a, 0x007a, 0x007a, 0x0091, }, }, { // seh @@ -36256,7 +40934,7 @@ var regionHeaders = [220]header{ "âniaUgandaEstados UnidosUruguaiUzbequistãoVaticanoSão Vicente e Gra" + "nadinasVenezuelaIlhas Virgens BritânicasIlhas Virgens dos EUAVietnãV" + "anuatuWallis e FutunaSamoaIêmenMayotteÁfrica do SulZâmbiaZimbábue", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001e, 0x002a, 0x003c, 0x0044, 0x004c, 0x0054, 0x005a, 0x005a, 0x0063, 0x0072, 0x007a, 0x0084, 0x0089, @@ -36268,33 +40946,33 @@ var regionHeaders = [220]header{ 0x01bf, 0x01c5, 0x01d6, 0x01de, 0x01de, 0x01e5, 0x01ee, 0x01f6, // Entry 40 - 7F 0x020b, 0x0213, 0x0213, 0x021a, 0x0222, 0x0227, 0x0227, 0x0230, - 0x0237, 0x023f, 0x023f, 0x0249, 0x024d, 0x025b, 0x0266, 0x0266, - 0x026d, 0x0273, 0x027e, 0x0285, 0x028d, 0x029c, 0x029c, 0x02a0, - 0x02a9, 0x02b5, 0x02bc, 0x02c2, 0x02cb, 0x02dc, 0x02e3, 0x02e3, - 0x02ec, 0x02f0, 0x02fd, 0x0303, 0x0303, 0x0303, 0x030b, 0x0313, - 0x0318, 0x031f, 0x031f, 0x0329, 0x0330, 0x0336, 0x0336, 0x033c, - 0x0364, 0x036a, 0x036e, 0x0377, 0x037e, 0x037e, 0x0385, 0x038e, - 0x0394, 0x039b, 0x03a7, 0x03ae, 0x03b7, 0x03be, 0x03d5, 0x03e5, - // Entry 80 - BF - 0x03f3, 0x03f9, 0x0405, 0x0411, 0x0415, 0x041c, 0x0428, 0x0435, - 0x043e, 0x0446, 0x044c, 0x0455, 0x045f, 0x0467, 0x046d, 0x0475, - 0x047c, 0x0485, 0x0485, 0x0485, 0x048f, 0x049d, 0x04a7, 0x04ab, - 0x04b2, 0x04bb, 0x04bb, 0x04d2, 0x04db, 0x04e6, 0x04f0, 0x04f5, - 0x04fe, 0x0506, 0x050c, 0x0513, 0x051b, 0x0526, 0x052e, 0x053d, - 0x0543, 0x0550, 0x0558, 0x0562, 0x0569, 0x0570, 0x0575, 0x057a, - 0x057e, 0x058c, 0x0590, 0x0597, 0x059b, 0x05ae, 0x05bf, 0x05c8, - 0x05d2, 0x05da, 0x05f1, 0x05f9, 0x0603, 0x061b, 0x0623, 0x0628, - // Entry C0 - FF - 0x0630, 0x0635, 0x0635, 0x063d, 0x0645, 0x0645, 0x064c, 0x0652, - 0x0661, 0x066f, 0x0679, 0x067f, 0x0686, 0x068f, 0x069b, 0x06a5, - 0x06a5, 0x06b0, 0x06ba, 0x06c4, 0x06cb, 0x06d3, 0x06db, 0x06db, - 0x06f1, 0x06fc, 0x06fc, 0x0702, 0x070e, 0x070e, 0x0722, 0x0727, - 0x0727, 0x072b, 0x0735, 0x0742, 0x0749, 0x0754, 0x0762, 0x076a, - 0x076f, 0x0776, 0x0787, 0x078d, 0x0793, 0x0793, 0x079b, 0x07a1, - 0x07a1, 0x07af, 0x07b6, 0x07c2, 0x07ca, 0x07e3, 0x07ec, 0x0805, - 0x081a, 0x0821, 0x0828, 0x0837, 0x083c, 0x083c, 0x0842, 0x0849, - // Entry 100 - 13F - 0x0857, 0x085e, 0x0867, + 0x0237, 0x023f, 0x023f, 0x023f, 0x0249, 0x024d, 0x025b, 0x0266, + 0x0266, 0x026d, 0x0273, 0x027e, 0x0285, 0x028d, 0x029c, 0x029c, + 0x02a0, 0x02a9, 0x02b5, 0x02bc, 0x02c2, 0x02cb, 0x02dc, 0x02e3, + 0x02e3, 0x02ec, 0x02f0, 0x02fd, 0x0303, 0x0303, 0x0303, 0x030b, + 0x0313, 0x0318, 0x031f, 0x031f, 0x0329, 0x0330, 0x0336, 0x0336, + 0x033c, 0x0364, 0x036a, 0x036e, 0x0377, 0x037e, 0x037e, 0x0385, + 0x038e, 0x0394, 0x039b, 0x03a7, 0x03ae, 0x03b7, 0x03be, 0x03d5, + // Entry 80 - BF + 0x03e5, 0x03f3, 0x03f9, 0x0405, 0x0411, 0x0415, 0x041c, 0x0428, + 0x0435, 0x043e, 0x0446, 0x044c, 0x0455, 0x045f, 0x0467, 0x046d, + 0x0475, 0x047c, 0x0485, 0x0485, 0x0485, 0x048f, 0x049d, 0x04a7, + 0x04ab, 0x04b2, 0x04bb, 0x04bb, 0x04d2, 0x04db, 0x04e6, 0x04f0, + 0x04f5, 0x04fe, 0x0506, 0x050c, 0x0513, 0x051b, 0x0526, 0x052e, + 0x053d, 0x0543, 0x0550, 0x0558, 0x0562, 0x0569, 0x0570, 0x0575, + 0x057a, 0x057e, 0x058c, 0x0590, 0x0597, 0x059b, 0x05ae, 0x05bf, + 0x05c8, 0x05d2, 0x05da, 0x05f1, 0x05f9, 0x0603, 0x061b, 0x0623, + // Entry C0 - FF + 0x0628, 0x0630, 0x0635, 0x0635, 0x063d, 0x0645, 0x0645, 0x064c, + 0x0652, 0x0661, 0x066f, 0x0679, 0x067f, 0x0686, 0x068f, 0x069b, + 0x06a5, 0x06a5, 0x06b0, 0x06ba, 0x06c4, 0x06cb, 0x06d3, 0x06db, + 0x06db, 0x06f1, 0x06fc, 0x06fc, 0x0702, 0x070e, 0x070e, 0x0722, + 0x0727, 0x0727, 0x072b, 0x0735, 0x0742, 0x0749, 0x0754, 0x0762, + 0x076a, 0x076f, 0x0776, 0x0787, 0x078d, 0x0793, 0x0793, 0x079b, + 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07b6, 0x07c2, 0x07ca, 0x07e3, + 0x07ec, 0x0805, 0x081a, 0x0821, 0x0828, 0x0837, 0x083c, 0x083c, + // Entry 100 - 13F + 0x0842, 0x0849, 0x0857, 0x085e, 0x0867, }, }, { // ses @@ -36329,7 +41007,7 @@ var regionHeaders = [220]header{ "aamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik " + "Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa " + "Afriki LabooZambiZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, @@ -36341,33 +41019,33 @@ var regionHeaders = [220]header{ 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e6, // Entry 40 - 7F 0x01f5, 0x01fd, 0x01fd, 0x0205, 0x020c, 0x0211, 0x0211, 0x0218, - 0x0220, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, 0x0249, - 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, 0x028b, - 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, 0x02c4, - 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, 0x02f2, - 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, 0x0320, - 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, 0x035f, - 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, 0x03af, - // Entry 80 - BF - 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, 0x03fe, - 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, 0x0438, - 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, 0x046c, - 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, 0x04b3, - 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, 0x04fc, - 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, 0x053c, - 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, 0x0588, - 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, 0x05e8, - // Entry C0 - FF - 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, 0x0618, - 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, 0x065c, - 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, 0x068e, - 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, 0x06dc, - 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, 0x071b, - 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, 0x075b, - 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, 0x07b8, 0x07ce, - 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, 0x080d, 0x0814, - // Entry 100 - 13F - 0x0826, 0x082b, 0x0833, + 0x0220, 0x0227, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, + 0x0249, 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, + 0x028b, 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, + 0x02c4, 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, + 0x02f2, 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, + 0x0320, 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, + 0x035f, 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, + // Entry 80 - BF + 0x03af, 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, + 0x03fe, 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, + 0x0438, 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, + 0x046c, 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, + 0x04b3, 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, + 0x04fc, 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, + 0x053c, 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, + 0x0588, 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, + // Entry C0 - FF + 0x05e8, 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, + 0x0618, 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, + 0x065c, 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, + 0x068e, 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, + 0x06dc, 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, + 0x071b, 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, + 0x075b, 0x075b, 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, + 0x07b8, 0x07ce, 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, + // Entry 100 - 13F + 0x080d, 0x0814, 0x0826, 0x082b, 0x0833, }, }, { // sg @@ -36404,7 +41082,7 @@ var regionHeaders = [220]header{ "ensäan na âGrenadîniVenezueläaÂzôâ Viîrîggo tî AnglëeÂzûâ Virîgo tî " + "AmerîkaVietnämVanuatüWalîsi na FutunaSamoäaYëmêniMäyôteMbongo-Afrîka" + "ZambïiZimbäbwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x001b, 0x0033, 0x0047, 0x0050, 0x0058, 0x0060, 0x0068, 0x0068, 0x0072, 0x0085, 0x008c, 0x00a0, 0x00a6, @@ -36416,33 +41094,33 @@ var regionHeaders = [220]header{ 0x0235, 0x023b, 0x0254, 0x025b, 0x025b, 0x0264, 0x026e, 0x0279, // Entry 40 - 7F 0x0295, 0x029d, 0x029d, 0x02a6, 0x02ae, 0x02b6, 0x02b6, 0x02be, - 0x02c6, 0x02ce, 0x02ce, 0x02d7, 0x02de, 0x02f4, 0x02ff, 0x02ff, - 0x0307, 0x030e, 0x0323, 0x032b, 0x0332, 0x0347, 0x0347, 0x034d, - 0x0365, 0x036f, 0x0376, 0x037c, 0x0386, 0x039a, 0x03a1, 0x03a1, - 0x03ad, 0x03b2, 0x03bf, 0x03c6, 0x03c6, 0x03c6, 0x03d0, 0x03d8, - 0x03df, 0x03e9, 0x03e9, 0x03f5, 0x03fd, 0x0405, 0x0405, 0x040b, - 0x0435, 0x043b, 0x0441, 0x0449, 0x0451, 0x0451, 0x0459, 0x0462, - 0x0469, 0x0470, 0x047e, 0x0487, 0x048f, 0x0497, 0x04b1, 0x04c1, - // Entry 80 - BF - 0x04d2, 0x04da, 0x04f3, 0x0500, 0x0508, 0x0510, 0x051c, 0x052a, - 0x0535, 0x053d, 0x0545, 0x054e, 0x0559, 0x0562, 0x0568, 0x056f, - 0x0577, 0x0581, 0x0581, 0x0581, 0x058d, 0x059e, 0x05a8, 0x05ae, - 0x05b7, 0x05c0, 0x05c0, 0x05dc, 0x05e8, 0x05f2, 0x05fc, 0x0602, - 0x060a, 0x0612, 0x061a, 0x0623, 0x062b, 0x0637, 0x0640, 0x0650, - 0x0657, 0x0667, 0x066f, 0x0678, 0x0680, 0x0689, 0x0691, 0x0696, - 0x069a, 0x06a8, 0x06ae, 0x06b4, 0x06ba, 0x06d1, 0x06ee, 0x06f7, - 0x0701, 0x0709, 0x0721, 0x072b, 0x0736, 0x074a, 0x0766, 0x076b, - // Entry C0 - FF - 0x0774, 0x077b, 0x077b, 0x0783, 0x078b, 0x078b, 0x0791, 0x0799, - 0x07a7, 0x07b6, 0x07c0, 0x07c7, 0x07cd, 0x07d9, 0x07e6, 0x07f0, - 0x07f0, 0x07fa, 0x0807, 0x0813, 0x081c, 0x0824, 0x082c, 0x082c, - 0x0845, 0x084f, 0x084f, 0x0855, 0x0862, 0x0862, 0x0879, 0x087f, - 0x087f, 0x0884, 0x088d, 0x089b, 0x08a2, 0x08b1, 0x08c0, 0x08c8, - 0x08cd, 0x08d5, 0x08ea, 0x08f2, 0x08fb, 0x0904, 0x090b, 0x0913, - 0x0913, 0x092a, 0x0932, 0x093e, 0x0952, 0x096f, 0x097a, 0x0998, - 0x09b4, 0x09bc, 0x09c4, 0x09d5, 0x09dc, 0x09dc, 0x09e4, 0x09ec, - // Entry 100 - 13F - 0x09fa, 0x0a01, 0x0a0a, + 0x02c6, 0x02ce, 0x02ce, 0x02ce, 0x02d7, 0x02de, 0x02f4, 0x02ff, + 0x02ff, 0x0307, 0x030e, 0x0323, 0x032b, 0x0332, 0x0347, 0x0347, + 0x034d, 0x0365, 0x036f, 0x0376, 0x037c, 0x0386, 0x039a, 0x03a1, + 0x03a1, 0x03ad, 0x03b2, 0x03bf, 0x03c6, 0x03c6, 0x03c6, 0x03d0, + 0x03d8, 0x03df, 0x03e9, 0x03e9, 0x03f5, 0x03fd, 0x0405, 0x0405, + 0x040b, 0x0435, 0x043b, 0x0441, 0x0449, 0x0451, 0x0451, 0x0459, + 0x0462, 0x0469, 0x0470, 0x047e, 0x0487, 0x048f, 0x0497, 0x04b1, + // Entry 80 - BF + 0x04c1, 0x04d2, 0x04da, 0x04f3, 0x0500, 0x0508, 0x0510, 0x051c, + 0x052a, 0x0535, 0x053d, 0x0545, 0x054e, 0x0559, 0x0562, 0x0568, + 0x056f, 0x0577, 0x0581, 0x0581, 0x0581, 0x058d, 0x059e, 0x05a8, + 0x05ae, 0x05b7, 0x05c0, 0x05c0, 0x05dc, 0x05e8, 0x05f2, 0x05fc, + 0x0602, 0x060a, 0x0612, 0x061a, 0x0623, 0x062b, 0x0637, 0x0640, + 0x0650, 0x0657, 0x0667, 0x066f, 0x0678, 0x0680, 0x0689, 0x0691, + 0x0696, 0x069a, 0x06a8, 0x06ae, 0x06b4, 0x06ba, 0x06d1, 0x06ee, + 0x06f7, 0x0701, 0x0709, 0x0721, 0x072b, 0x0736, 0x074a, 0x0766, + // Entry C0 - FF + 0x076b, 0x0774, 0x077b, 0x077b, 0x0783, 0x078b, 0x078b, 0x0791, + 0x0799, 0x07a7, 0x07b6, 0x07c0, 0x07c7, 0x07cd, 0x07d9, 0x07e6, + 0x07f0, 0x07f0, 0x07fa, 0x0807, 0x0813, 0x081c, 0x0824, 0x082c, + 0x082c, 0x0845, 0x084f, 0x084f, 0x0855, 0x0862, 0x0862, 0x0879, + 0x087f, 0x087f, 0x0884, 0x088d, 0x089b, 0x08a2, 0x08b1, 0x08c0, + 0x08c8, 0x08cd, 0x08d5, 0x08ea, 0x08f2, 0x08fb, 0x0904, 0x090b, + 0x0913, 0x0913, 0x0913, 0x092a, 0x0932, 0x093e, 0x0952, 0x096f, + 0x097a, 0x0998, 0x09b4, 0x09bc, 0x09c4, 0x09d5, 0x09dc, 0x09dc, + // Entry 100 - 13F + 0x09e4, 0x09ec, 0x09fa, 0x0a01, 0x0a0a, }, }, { // shi @@ -36476,7 +41154,7 @@ var regionHeaders = [220]header{ "ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡ" + "ⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰ" + "ⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095, 0x00aa, 0x00bc, 0x00bc, 0x00d4, 0x0105, 0x0114, 0x012c, 0x013b, @@ -36488,33 +41166,33 @@ var regionHeaders = [220]header{ 0x049e, 0x04b0, 0x04e4, 0x04f9, 0x04f9, 0x050e, 0x0523, 0x0538, // Entry 40 - 7F 0x0572, 0x0581, 0x0581, 0x0596, 0x05ab, 0x05b7, 0x05b7, 0x05cf, - 0x05e1, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a, 0x066a, - 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705, 0x0711, - 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd, 0x07bd, - 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830, 0x0845, - 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae, 0x08bd, - 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c, 0x097e, - 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28, 0x0a4e, - // Entry 80 - BF - 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00, 0x0b1e, - 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4, 0x0bc6, - 0x0bd8, 0x0bf0, 0x0bf0, 0x0bf0, 0x0c0e, 0x0c3d, 0x0c58, 0x0c64, - 0x0c79, 0x0c8e, 0x0c8e, 0x0cd4, 0x0cec, 0x0d07, 0x0d1f, 0x0d2e, - 0x0d3d, 0x0d4f, 0x0d61, 0x0d73, 0x0d88, 0x0d9d, 0x0db2, 0x0de6, - 0x0df8, 0x0e2a, 0x0e3f, 0x0e5a, 0x0e6f, 0x0e81, 0x0e90, 0x0e9f, - 0x0eab, 0x0ec9, 0x0ed8, 0x0eea, 0x0ef6, 0x0f30, 0x0f68, 0x0f80, - 0x0f98, 0x0fad, 0x0fd9, 0x0ff1, 0x100d, 0x1044, 0x1056, 0x1065, - // Entry C0 - FF - 0x107d, 0x108c, 0x108c, 0x10a4, 0x10b9, 0x10b9, 0x10c8, 0x10da, - 0x10f5, 0x1127, 0x1139, 0x114b, 0x115a, 0x1172, 0x118a, 0x11a2, - 0x11a2, 0x11ba, 0x11d5, 0x11f0, 0x1208, 0x121a, 0x122f, 0x122f, - 0x125e, 0x1276, 0x1276, 0x1285, 0x12a3, 0x12a3, 0x12e3, 0x12ef, - 0x12ef, 0x12fb, 0x1310, 0x1331, 0x1343, 0x1366, 0x1387, 0x1393, - 0x13a2, 0x13b4, 0x13e3, 0x13f5, 0x1407, 0x141f, 0x1434, 0x1446, - 0x1446, 0x1485, 0x149a, 0x14b8, 0x14e1, 0x1519, 0x1531, 0x1573, - 0x15c8, 0x15da, 0x15ef, 0x1615, 0x1624, 0x1624, 0x1633, 0x1642, - // Entry 100 - 13F - 0x166b, 0x167d, 0x1695, + 0x05e1, 0x05f6, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a, + 0x066a, 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705, + 0x0711, 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd, + 0x07bd, 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830, + 0x0845, 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae, + 0x08bd, 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c, + 0x097e, 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28, + // Entry 80 - BF + 0x0a4e, 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00, + 0x0b1e, 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4, + 0x0bc6, 0x0bd8, 0x0bf0, 0x0bf0, 0x0bf0, 0x0c0e, 0x0c3d, 0x0c58, + 0x0c64, 0x0c79, 0x0c8e, 0x0c8e, 0x0cd4, 0x0cec, 0x0d07, 0x0d1f, + 0x0d2e, 0x0d3d, 0x0d4f, 0x0d61, 0x0d73, 0x0d88, 0x0d9d, 0x0db2, + 0x0de6, 0x0df8, 0x0e2a, 0x0e3f, 0x0e5a, 0x0e6f, 0x0e81, 0x0e90, + 0x0e9f, 0x0eab, 0x0ec9, 0x0ed8, 0x0eea, 0x0ef6, 0x0f30, 0x0f68, + 0x0f80, 0x0f98, 0x0fad, 0x0fd9, 0x0ff1, 0x100d, 0x1044, 0x1056, + // Entry C0 - FF + 0x1065, 0x107d, 0x108c, 0x108c, 0x10a4, 0x10b9, 0x10b9, 0x10c8, + 0x10da, 0x10f5, 0x1127, 0x1139, 0x114b, 0x115a, 0x1172, 0x118a, + 0x11a2, 0x11a2, 0x11ba, 0x11d5, 0x11f0, 0x1208, 0x121a, 0x122f, + 0x122f, 0x125e, 0x1276, 0x1276, 0x1285, 0x12a3, 0x12a3, 0x12e3, + 0x12ef, 0x12ef, 0x12fb, 0x1310, 0x1331, 0x1343, 0x1366, 0x1387, + 0x1393, 0x13a2, 0x13b4, 0x13e3, 0x13f5, 0x1407, 0x141f, 0x1434, + 0x1446, 0x1446, 0x1446, 0x1485, 0x149a, 0x14b8, 0x14e1, 0x1519, + 0x1531, 0x1573, 0x15c8, 0x15da, 0x15ef, 0x1615, 0x1624, 0x1624, + // Entry 100 - 13F + 0x1633, 0x1642, 0x166b, 0x167d, 0x1695, }, }, { // shi-Latn @@ -36548,7 +41226,7 @@ var regionHeaders = [220]header{ "an d grinadinfinzwilatigzirin timgad n nngliztigzirin timgad n iwuna" + "k munninfitnamfanwaṭuwalis d futunasamwayamanmayuṭafriqya n iffuszam" + "byazimbabwi", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x000d, 0x0018, 0x0027, 0x002d, 0x0034, 0x003b, 0x0041, 0x0041, 0x0049, 0x005a, 0x005f, 0x0067, 0x006c, @@ -36560,33 +41238,33 @@ var regionHeaders = [220]header{ 0x0199, 0x019f, 0x01b1, 0x01b8, 0x01b8, 0x01bf, 0x01c6, 0x01cd, // Entry 40 - 7F 0x01e1, 0x01e6, 0x01e6, 0x01ed, 0x01f4, 0x01fc, 0x01fc, 0x0204, - 0x020a, 0x0211, 0x0211, 0x0219, 0x021e, 0x022f, 0x0239, 0x0239, - 0x023f, 0x0244, 0x0251, 0x025a, 0x0260, 0x0271, 0x0271, 0x0276, - 0x0287, 0x028e, 0x0294, 0x029a, 0x02a2, 0x02b2, 0x02b8, 0x02b8, - 0x02c1, 0x02c5, 0x02d1, 0x02d8, 0x02d8, 0x02d8, 0x02e0, 0x02e7, - 0x02ec, 0x02f4, 0x02f4, 0x02fd, 0x0304, 0x030b, 0x030b, 0x0310, - 0x0332, 0x0339, 0x033d, 0x0343, 0x034b, 0x034b, 0x0352, 0x0358, - 0x035e, 0x0363, 0x036f, 0x0377, 0x037f, 0x0384, 0x0393, 0x03a7, - // Entry 80 - BF - 0x03b4, 0x03b9, 0x03ca, 0x03d3, 0x03d7, 0x03dd, 0x03e5, 0x03ef, - 0x03f7, 0x03fe, 0x0408, 0x0410, 0x041a, 0x0420, 0x0425, 0x042c, - 0x0432, 0x043a, 0x043a, 0x043a, 0x0445, 0x0456, 0x045f, 0x0463, - 0x046a, 0x0472, 0x0472, 0x0492, 0x049a, 0x04a7, 0x04af, 0x04b6, - 0x04bb, 0x04c1, 0x04c7, 0x04cd, 0x04d4, 0x04db, 0x04e2, 0x04f4, - 0x04fa, 0x050c, 0x0513, 0x051c, 0x0523, 0x0529, 0x052e, 0x0533, - 0x0537, 0x0541, 0x0547, 0x054d, 0x0551, 0x0565, 0x057a, 0x0582, - 0x058a, 0x0591, 0x05a1, 0x05a9, 0x05b3, 0x05cb, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05e2, 0x05e7, 0x05e7, 0x05ef, 0x05f6, 0x05f6, 0x05fb, 0x0601, - 0x060b, 0x061d, 0x0623, 0x0629, 0x062e, 0x0637, 0x063f, 0x0647, - 0x0647, 0x064f, 0x0658, 0x0661, 0x0669, 0x0673, 0x067a, 0x067a, - 0x068d, 0x0695, 0x0695, 0x069a, 0x06a4, 0x06a4, 0x06bc, 0x06c0, - 0x06c0, 0x06c6, 0x06cf, 0x06da, 0x06e2, 0x06ef, 0x06fa, 0x06fe, - 0x0705, 0x070b, 0x071e, 0x0724, 0x072c, 0x0738, 0x073f, 0x0746, - 0x0746, 0x075d, 0x0764, 0x076e, 0x077d, 0x0791, 0x0799, 0x07b1, - 0x07d0, 0x07d6, 0x07df, 0x07ed, 0x07f2, 0x07f2, 0x07f7, 0x07fe, - // Entry 100 - 13F - 0x080d, 0x0813, 0x081b, + 0x020a, 0x0211, 0x0211, 0x0211, 0x0219, 0x021e, 0x022f, 0x0239, + 0x0239, 0x023f, 0x0244, 0x0251, 0x025a, 0x0260, 0x0271, 0x0271, + 0x0276, 0x0287, 0x028e, 0x0294, 0x029a, 0x02a2, 0x02b2, 0x02b8, + 0x02b8, 0x02c1, 0x02c5, 0x02d1, 0x02d8, 0x02d8, 0x02d8, 0x02e0, + 0x02e7, 0x02ec, 0x02f4, 0x02f4, 0x02fd, 0x0304, 0x030b, 0x030b, + 0x0310, 0x0332, 0x0339, 0x033d, 0x0343, 0x034b, 0x034b, 0x0352, + 0x0358, 0x035e, 0x0363, 0x036f, 0x0377, 0x037f, 0x0384, 0x0393, + // Entry 80 - BF + 0x03a7, 0x03b4, 0x03b9, 0x03ca, 0x03d3, 0x03d7, 0x03dd, 0x03e5, + 0x03ef, 0x03f7, 0x03fe, 0x0408, 0x0410, 0x041a, 0x0420, 0x0425, + 0x042c, 0x0432, 0x043a, 0x043a, 0x043a, 0x0445, 0x0456, 0x045f, + 0x0463, 0x046a, 0x0472, 0x0472, 0x0492, 0x049a, 0x04a7, 0x04af, + 0x04b6, 0x04bb, 0x04c1, 0x04c7, 0x04cd, 0x04d4, 0x04db, 0x04e2, + 0x04f4, 0x04fa, 0x050c, 0x0513, 0x051c, 0x0523, 0x0529, 0x052e, + 0x0533, 0x0537, 0x0541, 0x0547, 0x054d, 0x0551, 0x0565, 0x057a, + 0x0582, 0x058a, 0x0591, 0x05a1, 0x05a9, 0x05b3, 0x05cb, 0x05d5, + // Entry C0 - FF + 0x05da, 0x05e2, 0x05e7, 0x05e7, 0x05ef, 0x05f6, 0x05f6, 0x05fb, + 0x0601, 0x060b, 0x061d, 0x0623, 0x0629, 0x062e, 0x0637, 0x063f, + 0x0647, 0x0647, 0x064f, 0x0658, 0x0661, 0x0669, 0x0673, 0x067a, + 0x067a, 0x068d, 0x0695, 0x0695, 0x069a, 0x06a4, 0x06a4, 0x06bc, + 0x06c0, 0x06c0, 0x06c6, 0x06cf, 0x06da, 0x06e2, 0x06ef, 0x06fa, + 0x06fe, 0x0705, 0x070b, 0x071e, 0x0724, 0x072c, 0x0738, 0x073f, + 0x0746, 0x0746, 0x0746, 0x075d, 0x0764, 0x076e, 0x077d, 0x0791, + 0x0799, 0x07b1, 0x07d0, 0x07d6, 0x07df, 0x07ed, 0x07f2, 0x07f2, + // Entry 100 - 13F + 0x07f7, 0x07fe, 0x080d, 0x0813, 0x081b, }, }, { // si @@ -36602,20 +41280,82 @@ var regionHeaders = [220]header{ slRegionIdx, }, { // smn - "Suomâ", - []uint16{ // 76 elements + "Ascension-suáluiAndorraArabiemirkodehAfganistanAntigua já BarbudaAnguill" + + "aAlbaniaArmeniaAngolaAntarktisArgentinaAmerika SamoaNuorttâriijkâAus" + + "traliaArubaVuáskueennâmAzerbaidžanBosnia já HerzegovinaBarbadosBangl" + + "adeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSt. BarthélemyBerm" + + "udaBruneiBoliviaBrasiliaBahamaBhutanBouvetsuáluiBotswanaVielgis-Ruoš" + + "šâBelizeKanadaKookossuolluuh (Keelingsuolluuh)Koskâ-Afrika täsiväld" + + "iSveitsiCôte d’IvoireCooksuolluuhChileKamerunKiinaKolumbiaClipperton" + + "suáluiCosta RicaKuubaCape VerdeCuraçaoJuovlâsuáluiKyprosTšekkiSaksaD" + + "iego GarciaDjiboutiTanskaDominicaDominikaanisâš täsiväldiAlgeriaCeut" + + "a já MelillaEcuadorEestieennâmEgyptiEritreaEspanjaEtiopiaSuomâFidžiF" + + "alklandsuolluuhMikronesia littoväldiFärsuolluuhRanskaGabonOvtâstum K" + + "unâgâskoddeGrenadaGeorgiaRanska GuyanaGuernseyGhanaGibraltarGrönland" + + "GambiaGuineaGuadeloupePeeivitäsideijee GuineaKreikkaMaadâ-Georgia já" + + " Máddááh SandwichsuolluuhGuatemalaGuamGuinea-BissauGuyanaHongkong – " + + "Kiina e.h.k.Heard já McDonaldsuolluuhHondurasKroatiaHaitiUŋgarKanari" + + "asuolluuhIndonesiaIrlandIsraelMansuáluiIndiaBrittilâš India väldimee" + + "râ kuávluIrakIranIslandItaliaJerseyJamaikaJordanJaapaanKeniaKirgisia" + + "KambodžaKiribatiKomorehSt. Kitts já NevisTave-KoreaMaadâ-KoreaKuwait" + + "CaymansuolluuhKazakstanLaosLibanonSt. LuciaLiechtensteinSri LankaLib" + + "eriaLesothoLiettuaLuxemburgLatviaLibyaMarokkoMonacoMoldovaMontenegro" + + "St. MartinMadagaskarMarshallsuolluuhMaliMyanmar (Burma)MongoliaMacao" + + " - – Kiina e.h.k.Tave-MarianehMartiniqueMauritaniaMontserratMaltaMau" + + "ritiusMaledivehMalawiMeksikoMalaysiaMosambikNamibiaUđđâ-KaledoniaNig" + + "erNorfolksuáluiNigeriaNicaraguaVuáládâhenâmehTaažâNepalNauruNiueUđđâ" + + "-SeelandOmanPanamaPeruRanska PolynesiaPapua-Uđđâ-GuineaFilipinehPaki" + + "stanPuolaSt. Pierre já MiquelonPitcairnPuerto RicoPortugalPalauParag" + + "uayQatarRéunionRomaniaSerbiaRuoššâRuandaSaudi ArabiaSalomosuolluuhSe" + + "ychellehSudanRuotâSingaporeSaint HelenaSloveniaČokkeväärih já Jan Ma" + + "yenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamMaadâ-SudanSão" + + " Tomé já PríncipeEl SalvadorSint MaartenSyriaSwazieennâmTristan da C" + + "unhaTurks- já CaicossuolluuhTšadRanska máddááh kuávluhTogoThaieennâm" + + "TadžikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTurkkiTrinidad " + + "já TobagoTuvaluTaiwanTansaniaUkrainaUgandaOvtâstum Staatâi sierânâss" + + "uolluuhOvtâstum StaatahUruguayUzbekistanVatikanSt. Vincent já Grenad" + + "inesVenezuelaBrittiliih NieidâsuolluuhOvtâstum Staatâi Nieidâsuolluu" + + "hVietnamVanuatuWallis já FutunaSamoaKosovoJemenMayotteMaadâ-AfrikkaS" + + "ambiaZimbabwe", + []uint16{ // 261 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0006, + 0x0000, 0x0011, 0x0018, 0x0026, 0x0030, 0x0043, 0x004b, 0x0052, + 0x0059, 0x005f, 0x0068, 0x0071, 0x007e, 0x008d, 0x0096, 0x009b, + 0x00a9, 0x00b5, 0x00cb, 0x00d3, 0x00dd, 0x00e3, 0x00ef, 0x00f7, + 0x00fe, 0x0105, 0x010a, 0x0119, 0x0120, 0x0126, 0x012d, 0x012d, + 0x0135, 0x013b, 0x0141, 0x014e, 0x0156, 0x0167, 0x016d, 0x0173, + 0x0193, 0x0193, 0x01ac, 0x01ac, 0x01b3, 0x01c3, 0x01cf, 0x01d4, + 0x01db, 0x01e0, 0x01e8, 0x01f9, 0x0203, 0x0208, 0x0212, 0x021a, + 0x0228, 0x022e, 0x0235, 0x023a, 0x0246, 0x024e, 0x0254, 0x025c, + // Entry 40 - 7F + 0x0278, 0x027f, 0x0290, 0x0297, 0x02a3, 0x02a9, 0x02a9, 0x02b0, + 0x02b7, 0x02be, 0x02be, 0x02be, 0x02c4, 0x02ca, 0x02da, 0x02f0, + 0x02fc, 0x0302, 0x0307, 0x031f, 0x0326, 0x032d, 0x033a, 0x0342, + 0x0347, 0x0350, 0x0359, 0x035f, 0x0365, 0x036f, 0x0387, 0x038e, + 0x03bc, 0x03c5, 0x03c9, 0x03d6, 0x03dc, 0x03f5, 0x040f, 0x0417, + 0x041e, 0x0423, 0x0429, 0x0438, 0x0441, 0x0447, 0x044d, 0x0457, + 0x045c, 0x0482, 0x0486, 0x048a, 0x0490, 0x0496, 0x049c, 0x04a3, + 0x04a9, 0x04b0, 0x04b5, 0x04bd, 0x04c6, 0x04ce, 0x04d5, 0x04e8, + // Entry 80 - BF + 0x04f2, 0x04fe, 0x0504, 0x0512, 0x051b, 0x051f, 0x0526, 0x052f, + 0x053c, 0x0545, 0x054c, 0x0553, 0x055a, 0x0563, 0x0569, 0x056e, + 0x0575, 0x057b, 0x0582, 0x058c, 0x0596, 0x05a0, 0x05b0, 0x05b0, + 0x05b4, 0x05c3, 0x05cb, 0x05e3, 0x05f0, 0x05fa, 0x0604, 0x060e, + 0x0613, 0x061c, 0x0625, 0x062b, 0x0632, 0x063a, 0x0642, 0x0649, + 0x065a, 0x065f, 0x066d, 0x0674, 0x067d, 0x068f, 0x0696, 0x069b, + 0x06a0, 0x06a4, 0x06b3, 0x06b7, 0x06bd, 0x06c1, 0x06d1, 0x06e5, + 0x06ee, 0x06f6, 0x06fb, 0x0712, 0x071a, 0x0725, 0x0725, 0x072d, + // Entry C0 - FF + 0x0732, 0x073a, 0x073f, 0x073f, 0x0747, 0x074e, 0x0754, 0x075d, + 0x0763, 0x076f, 0x077d, 0x0787, 0x078c, 0x0792, 0x079b, 0x07a7, + 0x07af, 0x07cb, 0x07d3, 0x07df, 0x07e9, 0x07f0, 0x07f7, 0x07fe, + 0x080a, 0x0822, 0x082d, 0x0839, 0x083e, 0x084a, 0x085a, 0x0873, + 0x0878, 0x0892, 0x0896, 0x08a1, 0x08ad, 0x08b4, 0x08bf, 0x08cb, + 0x08d2, 0x08d7, 0x08dd, 0x08f0, 0x08f6, 0x08fc, 0x0904, 0x090b, + 0x0911, 0x0936, 0x0936, 0x0947, 0x094e, 0x0958, 0x095f, 0x0979, + 0x0982, 0x099c, 0x09be, 0x09c5, 0x09cc, 0x09dd, 0x09e2, 0x09e8, + // Entry 100 - 13F + 0x09ed, 0x09f4, 0x0a02, 0x0a08, 0x0a10, }, }, { // sn @@ -36650,7 +41390,7 @@ var regionHeaders = [220]header{ "can StateSaint Vincent and the GrenadinesVenezuelaZvitsuwa zveHingir" + "andiZvitsuwa zveAmerikaVietnamVanuatuWallis and FutunaSamoaYemenMayo" + "tteSouth AfricaZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x001a, 0x0026, 0x0038, 0x003f, 0x0046, 0x004d, 0x0053, 0x0053, 0x005b, 0x006b, 0x0072, 0x007b, 0x0081, @@ -36662,33 +41402,33 @@ var regionHeaders = [220]header{ 0x01c4, 0x01ca, 0x01d8, 0x01df, 0x01df, 0x01e7, 0x01ee, 0x01f6, // Entry 40 - 7F 0x0208, 0x020f, 0x020f, 0x0216, 0x021d, 0x0222, 0x0222, 0x0229, - 0x022e, 0x0235, 0x0235, 0x023c, 0x0240, 0x0255, 0x025f, 0x025f, - 0x0265, 0x026a, 0x0278, 0x027f, 0x0286, 0x0293, 0x0293, 0x0298, - 0x02a1, 0x02aa, 0x02b0, 0x02b6, 0x02c0, 0x02d1, 0x02d7, 0x02d7, - 0x02e0, 0x02e4, 0x02f1, 0x02f7, 0x02f7, 0x02f7, 0x02ff, 0x0306, - 0x030b, 0x0312, 0x0312, 0x031b, 0x0322, 0x032a, 0x032a, 0x032f, - 0x034d, 0x0351, 0x0355, 0x035c, 0x0361, 0x0361, 0x0368, 0x036e, - 0x0373, 0x0378, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ad, 0x03b9, - // Entry 80 - BF - 0x03c5, 0x03cb, 0x03dd, 0x03e7, 0x03eb, 0x03f2, 0x03fd, 0x040a, - 0x0413, 0x041a, 0x0421, 0x042a, 0x0434, 0x043a, 0x043f, 0x0446, - 0x044c, 0x0453, 0x0453, 0x0453, 0x045d, 0x0471, 0x047a, 0x047e, - 0x0485, 0x048d, 0x048d, 0x04b0, 0x04ba, 0x04c4, 0x04ce, 0x04d3, - 0x04dc, 0x04e4, 0x04ea, 0x04f0, 0x04f8, 0x0502, 0x0509, 0x0516, - 0x051b, 0x052e, 0x0535, 0x053e, 0x0549, 0x054f, 0x0554, 0x0559, - 0x055d, 0x0568, 0x056c, 0x0572, 0x0576, 0x0586, 0x0596, 0x05a1, - 0x05a9, 0x05af, 0x05c8, 0x05d0, 0x05db, 0x05db, 0x05e3, 0x05e8, - // Entry C0 - FF - 0x05f0, 0x05f5, 0x05f5, 0x05fd, 0x0604, 0x0604, 0x060a, 0x0610, - 0x061c, 0x062f, 0x0639, 0x063e, 0x0644, 0x064d, 0x0659, 0x0661, - 0x0661, 0x0669, 0x0675, 0x067f, 0x0686, 0x068d, 0x0695, 0x0695, - 0x06ad, 0x06b8, 0x06b8, 0x06bd, 0x06c6, 0x06c6, 0x06de, 0x06e3, - 0x06e3, 0x06e7, 0x06ef, 0x06f9, 0x0700, 0x070a, 0x0716, 0x071d, - 0x0722, 0x0728, 0x073b, 0x0741, 0x0747, 0x074f, 0x0756, 0x075c, - 0x075c, 0x0763, 0x076a, 0x0774, 0x0781, 0x07a1, 0x07aa, 0x07c0, - 0x07d3, 0x07da, 0x07e1, 0x07f2, 0x07f7, 0x07f7, 0x07fc, 0x0803, - // Entry 100 - 13F - 0x080f, 0x0815, 0x081d, + 0x022e, 0x0235, 0x0235, 0x0235, 0x023c, 0x0240, 0x0255, 0x025f, + 0x025f, 0x0265, 0x026a, 0x0278, 0x027f, 0x0286, 0x0293, 0x0293, + 0x0298, 0x02a1, 0x02aa, 0x02b0, 0x02b6, 0x02c0, 0x02d1, 0x02d7, + 0x02d7, 0x02e0, 0x02e4, 0x02f1, 0x02f7, 0x02f7, 0x02f7, 0x02ff, + 0x0306, 0x030b, 0x0312, 0x0312, 0x031b, 0x0322, 0x032a, 0x032a, + 0x032f, 0x034d, 0x0351, 0x0355, 0x035c, 0x0361, 0x0361, 0x0368, + 0x036e, 0x0373, 0x0378, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ad, + // Entry 80 - BF + 0x03b9, 0x03c5, 0x03cb, 0x03dd, 0x03e7, 0x03eb, 0x03f2, 0x03fd, + 0x040a, 0x0413, 0x041a, 0x0421, 0x042a, 0x0434, 0x043a, 0x043f, + 0x0446, 0x044c, 0x0453, 0x0453, 0x0453, 0x045d, 0x0471, 0x047a, + 0x047e, 0x0485, 0x048d, 0x048d, 0x04b0, 0x04ba, 0x04c4, 0x04ce, + 0x04d3, 0x04dc, 0x04e4, 0x04ea, 0x04f0, 0x04f8, 0x0502, 0x0509, + 0x0516, 0x051b, 0x052e, 0x0535, 0x053e, 0x0549, 0x054f, 0x0554, + 0x0559, 0x055d, 0x0568, 0x056c, 0x0572, 0x0576, 0x0586, 0x0596, + 0x05a1, 0x05a9, 0x05af, 0x05c8, 0x05d0, 0x05db, 0x05db, 0x05e3, + // Entry C0 - FF + 0x05e8, 0x05f0, 0x05f5, 0x05f5, 0x05fd, 0x0604, 0x0604, 0x060a, + 0x0610, 0x061c, 0x062f, 0x0639, 0x063e, 0x0644, 0x064d, 0x0659, + 0x0661, 0x0661, 0x0669, 0x0675, 0x067f, 0x0686, 0x068d, 0x0695, + 0x0695, 0x06ad, 0x06b8, 0x06b8, 0x06bd, 0x06c6, 0x06c6, 0x06de, + 0x06e3, 0x06e3, 0x06e7, 0x06ef, 0x06f9, 0x0700, 0x070a, 0x0716, + 0x071d, 0x0722, 0x0728, 0x073b, 0x0741, 0x0747, 0x074f, 0x0756, + 0x075c, 0x075c, 0x075c, 0x0763, 0x076a, 0x0774, 0x0781, 0x07a1, + 0x07aa, 0x07c0, 0x07d3, 0x07da, 0x07e1, 0x07f2, 0x07f7, 0x07f7, + // Entry 100 - 13F + 0x07fc, 0x0803, 0x080f, 0x0815, 0x081d, }, }, { // so @@ -36710,23 +41450,23 @@ var regionHeaders = [220]header{ "itts and NevisKuuriyada WaqooyiKuuriyada KoonfureedKuwaytCayman Isla" + "ndsKasaakhistaanLaosLubnaanSaint LuciaLiechtensteinSirilaankaLaybeer" + "iyaLosootoLituweeniyaLuksemboorgLatfiyaLiibiyaMarookoMoonakoMoldofaM" + - "adagaskarMarshall IslandsMakadooniyaMaaliMyanmarMongooliyaNorthern M" + - "ariana IslandsMartiniqueMuritaaniyaMontserratMaaldaMurishiyoosMaaldi" + - "qeenMalaawiMeksikoMalaysiaMusambiigNamiibiyaNew CaledoniaNayjerNorfo" + - "lk IslandNayjeeriyaNikaraaguwaNetherlandsNoorweeyNebaalNauruNiueNeyu" + - "usilaandCumaanPanamaPeruFrench PolynesiaPapua New GuineaFilibiinBaki" + - "staanBoolandSaint Pierre and MiquelonPitcairnPuerto RicoFalastiin Da" + - "anka galbeed iyo QasaBortuqaalPalauParaguayQadarRéunionRumaaniyaRuus" + - "hRuwandaSacuudi CarabiyaSolomon IslandsSishelisSuudaanIswidhanSingab" + - "oorSaint HelenaSloveniaSlovakiaSiraaliyoonSan MarinoSinigaalSoomaali" + - "yaSurinameSão Tomé and PríncipeEl SalvadorSuuriyaIswaasilaandTurks a" + - "nd Caicos IslandsJaadToogoTaylaandTajikistanTokelauTimorka bariTurkm" + - "enistanTuniisiyaTongaTurkiTrinidad and TobagoTuvaluTaywaanTansaaniya" + - "UkraynUgaandaMaraykankaUruguwaayUusbakistaanFaatikaanSaint Vincent a" + - "nd the GrenadinesFenisuweelaBritish Virgin IslandsU.S. Virgin Island" + - "sFiyetnaamVanuatuWallis and FutunaSamoaYamanMayotteKoonfur AfrikaSaa" + - "mbiyaSimbaabweFar aan la aqoon amase aan saxnayn", - []uint16{ // 260 elements + "adagaskarMarshall IslandsMakadooniyaMaaliMiyanmarMongooliyaNorthern " + + "Mariana IslandsMartiniqueMuritaaniyaMontserratMaaldaMurishiyoosMaald" + + "iqeenMalaawiMeksikoMalaysiaMusambiigNamiibiyaNew CaledoniaNayjerNorf" + + "olk IslandNayjeeriyaNikaraaguwaNetherlandsNoorweeyNebaalNauruNiueNey" + + "uusilaandCumaanPanamaPeruFrench PolynesiaPapua New GuineaFilibiinBak" + + "istaanBoolandSaint Pierre and MiquelonPitcairnPuerto RicoFalastiin D" + + "aanka galbeed iyo QasaBortuqaalPalauParaguayQadarRéunionRumaaniyaRuu" + + "shRuwandaSacuudi CarabiyaSolomon IslandsSishelisSuudaanIswidhanSinga" + + "boorSaint HelenaSloveniaSlovakiaSiraaliyoonSan MarinoSinigaalSoomaal" + + "iyaSurinameSão Tomé and PríncipeEl SalvadorSuuriyaIswaasilaandTurks " + + "and Caicos IslandsJaadToogoTaylaandTajikistanTokelauTimorka bariTurk" + + "menistanTuniisiyaTongaTurkiTrinidad and TobagoTuvaluTaywaanTansaaniy" + + "aUkraynUgaandaMaraykankaUruguwaayUusbakistaanFaatikaanSaint Vincent " + + "and the GrenadinesFenisuweelaBritish Virgin IslandsU.S. Virgin Islan" + + "dsFiyetnaamVanuatuWallis and FutunaSamoaYamanMayotteKoonfur AfrikaSa" + + "ambiyaSimbaabweFar aan la aqoon amase aan saxnayn", + []uint16{ // 262 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0024, 0x0030, 0x0043, 0x004b, 0x0054, 0x005d, 0x0064, 0x0064, 0x006d, 0x007c, 0x0085, 0x0091, 0x0096, @@ -36738,33 +41478,33 @@ var regionHeaders = [220]header{ 0x01f3, 0x01f9, 0x020a, 0x0210, 0x0210, 0x0217, 0x021e, 0x0227, // Entry 40 - 7F 0x023e, 0x0247, 0x0247, 0x0250, 0x0259, 0x025e, 0x025e, 0x0268, - 0x026e, 0x0276, 0x0276, 0x027d, 0x0281, 0x0295, 0x029f, 0x029f, - 0x02a8, 0x02af, 0x02bd, 0x02c7, 0x02cf, 0x02dc, 0x02dc, 0x02e1, - 0x02ea, 0x02f3, 0x02fa, 0x02fe, 0x0308, 0x0319, 0x031f, 0x031f, - 0x032b, 0x032f, 0x033a, 0x0340, 0x0340, 0x0340, 0x0348, 0x0353, - 0x0358, 0x035f, 0x035f, 0x036a, 0x0372, 0x037c, 0x037c, 0x0383, - 0x03a1, 0x03a7, 0x03ad, 0x03b5, 0x03bd, 0x03bd, 0x03c4, 0x03c9, - 0x03cf, 0x03d6, 0x03e0, 0x03ea, 0x03f2, 0x03fa, 0x040f, 0x0420, - // Entry 80 - BF - 0x0434, 0x043a, 0x0448, 0x0455, 0x0459, 0x0460, 0x046b, 0x0478, - 0x0482, 0x048c, 0x0493, 0x049e, 0x04a9, 0x04b0, 0x04b7, 0x04be, - 0x04c5, 0x04cc, 0x04cc, 0x04cc, 0x04d6, 0x04e6, 0x04f1, 0x04f6, - 0x04fd, 0x0507, 0x0507, 0x051f, 0x0529, 0x0534, 0x053e, 0x0544, - 0x054f, 0x0559, 0x0560, 0x0567, 0x056f, 0x0578, 0x0581, 0x058e, - 0x0594, 0x05a2, 0x05ac, 0x05b7, 0x05c2, 0x05ca, 0x05d0, 0x05d5, - 0x05d9, 0x05e5, 0x05eb, 0x05f1, 0x05f5, 0x0605, 0x0615, 0x061d, - 0x0626, 0x062d, 0x0646, 0x064e, 0x0659, 0x067a, 0x0683, 0x0688, - // Entry C0 - FF - 0x0690, 0x0695, 0x0695, 0x069d, 0x06a6, 0x06a6, 0x06ab, 0x06b2, - 0x06c2, 0x06d1, 0x06d9, 0x06e0, 0x06e8, 0x06f1, 0x06fd, 0x0705, - 0x0705, 0x070d, 0x0718, 0x0722, 0x072a, 0x0734, 0x073c, 0x073c, - 0x0754, 0x075f, 0x075f, 0x0766, 0x0772, 0x0772, 0x078a, 0x078e, - 0x078e, 0x0793, 0x079b, 0x07a5, 0x07ac, 0x07b8, 0x07c4, 0x07cd, - 0x07d2, 0x07d7, 0x07ea, 0x07f0, 0x07f7, 0x0801, 0x0807, 0x080e, - 0x080e, 0x0818, 0x0821, 0x082d, 0x0836, 0x0856, 0x0861, 0x0877, - 0x088a, 0x0893, 0x089a, 0x08ab, 0x08b0, 0x08b0, 0x08b5, 0x08bc, - // Entry 100 - 13F - 0x08ca, 0x08d2, 0x08db, 0x08fd, + 0x026e, 0x0276, 0x0276, 0x0276, 0x027d, 0x0281, 0x0295, 0x029f, + 0x029f, 0x02a8, 0x02af, 0x02bd, 0x02c7, 0x02cf, 0x02dc, 0x02dc, + 0x02e1, 0x02ea, 0x02f3, 0x02fa, 0x02fe, 0x0308, 0x0319, 0x031f, + 0x031f, 0x032b, 0x032f, 0x033a, 0x0340, 0x0340, 0x0340, 0x0348, + 0x0353, 0x0358, 0x035f, 0x035f, 0x036a, 0x0372, 0x037c, 0x037c, + 0x0383, 0x03a1, 0x03a7, 0x03ad, 0x03b5, 0x03bd, 0x03bd, 0x03c4, + 0x03c9, 0x03cf, 0x03d6, 0x03e0, 0x03ea, 0x03f2, 0x03fa, 0x040f, + // Entry 80 - BF + 0x0420, 0x0434, 0x043a, 0x0448, 0x0455, 0x0459, 0x0460, 0x046b, + 0x0478, 0x0482, 0x048c, 0x0493, 0x049e, 0x04a9, 0x04b0, 0x04b7, + 0x04be, 0x04c5, 0x04cc, 0x04cc, 0x04cc, 0x04d6, 0x04e6, 0x04f1, + 0x04f6, 0x04fe, 0x0508, 0x0508, 0x0520, 0x052a, 0x0535, 0x053f, + 0x0545, 0x0550, 0x055a, 0x0561, 0x0568, 0x0570, 0x0579, 0x0582, + 0x058f, 0x0595, 0x05a3, 0x05ad, 0x05b8, 0x05c3, 0x05cb, 0x05d1, + 0x05d6, 0x05da, 0x05e6, 0x05ec, 0x05f2, 0x05f6, 0x0606, 0x0616, + 0x061e, 0x0627, 0x062e, 0x0647, 0x064f, 0x065a, 0x067b, 0x0684, + // Entry C0 - FF + 0x0689, 0x0691, 0x0696, 0x0696, 0x069e, 0x06a7, 0x06a7, 0x06ac, + 0x06b3, 0x06c3, 0x06d2, 0x06da, 0x06e1, 0x06e9, 0x06f2, 0x06fe, + 0x0706, 0x0706, 0x070e, 0x0719, 0x0723, 0x072b, 0x0735, 0x073d, + 0x073d, 0x0755, 0x0760, 0x0760, 0x0767, 0x0773, 0x0773, 0x078b, + 0x078f, 0x078f, 0x0794, 0x079c, 0x07a6, 0x07ad, 0x07b9, 0x07c5, + 0x07ce, 0x07d3, 0x07d8, 0x07eb, 0x07f1, 0x07f8, 0x0802, 0x0808, + 0x080f, 0x080f, 0x080f, 0x0819, 0x0822, 0x082e, 0x0837, 0x0857, + 0x0862, 0x0878, 0x088b, 0x0894, 0x089b, 0x08ac, 0x08b1, 0x08b1, + // Entry 100 - 13F + 0x08b6, 0x08bd, 0x08cb, 0x08d3, 0x08dc, 0x08fe, }, }, { // sq @@ -36775,10 +41515,270 @@ var regionHeaders = [220]header{ srRegionStr, srRegionIdx, }, + { // sr-Cyrl-BA + "БјелорусијаКонгоОбала Слоноваче (Кот д’Ивоар)Кабо ВердеЧешка РепубликаЊе" + + "мачкаСвети Китс и НевисСАР МакаоСвети Пјер и МикелонРеунионТимор-Ле" + + "сте (Источни Тимор)Мања удаљена острва САДСвети Винсент и Гренадини" + + "Британска Дјевичанска ОстрваАмеричка Дјевичанска Острва", + []uint16{ // 251 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0016, 0x0016, + 0x0016, 0x0016, 0x0016, 0x0020, 0x0020, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0069, 0x0069, + 0x0069, 0x0069, 0x0086, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + // Entry 40 - 7F + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, + 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x00b5, + // Entry 80 - BF + 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, + 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, + 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, + 0x00b5, 0x00b5, 0x00b5, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, + 0x00c6, 0x00c6, 0x00c6, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, + // Entry C0 - FF + 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, + 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x012a, 0x012a, + 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, + 0x012a, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0184, + 0x0184, 0x01ba, 0x01ee, + }, + }, + { // sr-Cyrl-ME + "БјелорусијаКонгоОбала Слоноваче (Кот д’Ивоар)Чешка РепубликаЊемачкаСвети" + + " Китс и НевисСвети Пјер и МикелонРеунионТимор-Лесте (Источни Тимор)М" + + "ања удаљена острва САДСвети Винсент и ГренадиниБританска Дјевичанск" + + "а ОстрваАмеричка Дјевичанска Острва", + []uint16{ // 251 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0016, 0x0016, + 0x0016, 0x0016, 0x0016, 0x0020, 0x0020, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, + 0x0056, 0x0056, 0x0073, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + // Entry 40 - 7F + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x00a2, + // Entry 80 - BF + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, + 0x00a2, 0x00a2, 0x00a2, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, + // Entry C0 - FF + 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x0106, 0x0106, + 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, + 0x0106, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0160, + 0x0160, 0x0196, 0x01ca, + }, + }, + { // sr-Cyrl-XK + "КонгоОбала Слоноваче (Кот д’Ивоар)Кабо ВердеЧешка РепубликаСАР ХонгконгС" + + "вети Китс и НевисСАР МакаоСвети Пјер и МикелонРеунионТимор-Лесте (И" + + "сточни Тимор)Мања удаљена острва САДСвети Винсент и Гренадини", + []uint16{ // 248 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0053, 0x0053, + 0x0053, 0x0053, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + // Entry 40 - 7F + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x00a8, + // Entry 80 - BF + 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, + 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, + 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, + 0x00a8, 0x00a8, 0x00a8, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, + 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, + 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, + 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, + 0x00b9, 0x00b9, 0x00b9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + // Entry C0 - FF + 0x00de, 0x00de, 0x00de, 0x00de, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, + 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x011d, 0x011d, + 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0177, + }, + }, { // sr-Latn srLatnRegionStr, srLatnRegionIdx, }, + { // sr-Latn-BA + "BjelorusijaKongoObala Slonovače (Kot d’Ivoar)Kabo VerdeČeška RepublikaNj" + + "emačkaSveti Kits i NevisSAR MakaoSveti Pjer i MikelonReunionTimor-Le" + + "ste (Istočni Timor)Manja udaljena ostrva SADSveti Vinsent i Grenadin" + + "iBritanska Djevičanska OstrvaAmerička Djevičanska Ostrva", + []uint16{ // 251 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, + 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0030, 0x0030, 0x0030, + 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x003a, 0x003a, + 0x003a, 0x003a, 0x004b, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + // Entry 40 - 7F + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0066, + // Entry 80 - BF + 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, + 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, + 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, + 0x0066, 0x0066, 0x0066, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, + 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, + 0x006f, 0x006f, 0x006f, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, + // Entry C0 - FF + 0x0083, 0x0083, 0x0083, 0x0083, 0x008a, 0x008a, 0x008a, 0x008a, + 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, + 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, + 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, + 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x00a6, 0x00a6, + 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, + 0x00a6, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00d8, + 0x00d8, 0x00f5, 0x0112, + }, + }, + { // sr-Latn-ME + "BjelorusijaKongoObala Slonovače (Kot d’Ivoar)Češka RepublikaNjemačkaSvet" + + "i Kits i NevisSveti Pjer i MikelonReunionTimor-Leste (Istočni Timor)" + + "Manja udaljena ostrva SADSveti Vinsent i GrenadiniBritanska Djevičan" + + "ska OstrvaAmerička Djevičanska Ostrva", + []uint16{ // 251 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, + 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0030, 0x0030, 0x0030, + 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, + 0x0030, 0x0030, 0x0041, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + // Entry 40 - 7F + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, + 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x005c, + // Entry 80 - BF + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, + 0x005c, 0x005c, 0x005c, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, + // Entry C0 - FF + 0x0070, 0x0070, 0x0070, 0x0070, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, + 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0093, 0x0093, + 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, + 0x0093, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00c5, + 0x00c5, 0x00e2, 0x00ff, + }, + }, + { // sr-Latn-XK + "KongoObala Slonovače (Kot d’Ivoar)Kabo VerdeČeška RepublikaSAR HongkongS" + + "veti Kits i NevisSAR MakaoSveti Pjer i MikelonReunionTimor-Leste (Is" + + "točni Timor)Manja udaljena ostrva SADSveti Vinsent i Grenadini", + []uint16{ // 248 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002f, 0x002f, + 0x002f, 0x002f, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + // Entry 40 - 7F + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x004c, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, + 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x005e, + // Entry 80 - BF + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, + 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, + 0x005e, 0x005e, 0x005e, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, + 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, + 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, + 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, + 0x0067, 0x0067, 0x0067, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, + // Entry C0 - FF + 0x007b, 0x007b, 0x007b, 0x007b, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, + 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x009e, 0x009e, + 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, + 0x009e, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00d0, + }, + }, { // sv svRegionStr, svRegionIdx, @@ -36789,42 +41789,94 @@ var regionHeaders = [220]header{ swRegionIdx, }, { // sw-CD - "AfuganistaniBeniniKongoKodivaaKuprosiUajemiLishenteniBukiniMyamaKisiwa c" + - "ha NorfokNijeriaTimori ya Mashariki", - []uint16{ // 230 elements + "AfuganistaniAzabajaniBeniniKodivaaKisiwa cha ChristmasSaiprasiDenmakiKro" + + "eshiaYordaniLebanoniLishenteniLasembagiLativiaMorokoMyamaMaldiviNije" + + "riNijeriaNorweNepaliOmaniPuetorikoKatariSudaniSao Tome na PrinsipeCh" + + "adiTimori ya MasharikiVietnamuAsia Mashariki", + []uint16{ // 277 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0017, 0x0017, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x000c, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, + 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0022, 0x0022, 0x0022, + 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, + 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0045, 0x0045, // Entry 40 - 7F - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, // Entry 80 - BF - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x003b, 0x003b, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0051, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, + 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x005c, 0x005c, + 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x006f, 0x0076, 0x0076, + 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, + 0x007c, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0081, 0x0081, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, + 0x0088, 0x008e, 0x008e, 0x0095, 0x0095, 0x0095, 0x009a, 0x00a0, + 0x00a0, 0x00a0, 0x00a0, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, + 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, + // Entry C0 - FF + 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, + 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00ba, 0x00ba, 0x00ba, 0x00ba, + 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, + 0x00ba, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, + 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00e6, 0x00e6, + 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, + 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, + 0x00e6, 0x00e6, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + // Entry 100 - 13F + 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, + 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00fc, + }, + }, + { // sw-KE + "AzabajaniIvorikostiKisiwa cha ChristmasSaiprasiGwadelupeYordaniLebanoniL" + + "ishtensteniLesothoLasembagiLativiaMaldiviNijerNijeriaNorweNepaliOman" + + "iPuetorikoKatariSurinameSao Tome na PrinsipeChadiVietnamu", + []uint16{ // 252 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, + 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0013, 0x0013, 0x0013, + 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, + 0x0027, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + // Entry 40 - 7F + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + // Entry 80 - BF + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, + 0x0053, 0x0053, 0x0053, 0x005a, 0x005a, 0x0063, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, + 0x0071, 0x0076, 0x0076, 0x007d, 0x007d, 0x007d, 0x0082, 0x0088, + 0x0088, 0x0088, 0x0088, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, + 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x0096, 0x0096, 0x0096, // Entry C0 - FF - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x006b, + 0x0096, 0x0096, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, + 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x00a4, + 0x00a4, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, + 0x00bd, 0x00bd, 0x00bd, 0x00c5, }, }, { // ta @@ -36867,7 +41919,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -36879,33 +41931,33 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // th @@ -36923,46 +41975,46 @@ var regionHeaders = [220]header{ "KokoKongo - KinisasaLipapilika ʻAfilika LotolotoKongo - PalasavilaSu" + "isilaniMatafonua ʻAivolīʻOtumotu KukiSiliKameluniSiainaKolomipiaMotu" + " KilipatoniKosita LikaKiupaMuiʻi VēteKulasaoMotu KilisimasiSaipalesi" + - "Lipapilika SekiSiamaneTieko KāsiaSiputiTenimaʻakeTominikaLipapilika " + - "TominikaʻAisiliaSiuta mo MelilaʻEkuetoaʻEsitōniaʻIsipiteSahala fakah" + - "ihifoʻElituliaSipeiniʻĪtiōpiaʻIulope fakatahatahaFinilaniFisiʻOtumot" + - "u FokulaniMikolonīsiaʻOtumotu FaloeFalanisēKaponiPilitāniaKelenatāSe" + - "ōsiaKuiana fakafalanisēKuenisīKanaSipalālitāKulinilaniKamipiaKiniKu" + - "atalupeʻEkueta KiniKalisiʻOtumotu Seōsia-tonga mo Saniuisi-tongaKuat" + - "amalaKuamuKini-PisauKuianaHongi Kongi SAR SiainaʻOtumotu Heati mo Ma" + - "kitonaliHonitulasiKuloisiaHaitiHungakaliaʻOtumotu KaneliʻInitonēsiaʻ" + - "AealaniʻIsileliMotu ManiʻInitiaPotu fonua moana ʻInitia fakapilitāni" + - "aʻIlaakiʻIlaaniʻAisilaniʻĪtaliSelusīSamaikaSoataneSiapaniKeniāKīkisi" + - "taniKamipōtiaKilipasiKomolosiSā Kitisi mo NevisiKōlea tokelauKōlea t" + - "ongaKueitiʻOtumotu KeimeniKasakitaniLauLepanoniSā LūsiaLikitenisitei" + - "niSīlangikāLaipeliaLesotoLituaniaLakisimipekiLativiaLīpiaMolokoMonak" + - "oMolotovaMonitenikaloSā Mātini (fakafalanisē)MatakasikaʻOtumotu Māso" + - "loMasetōniaMāliPemaMongokōliaMakau SAR SiainaʻOtumotu Maliana tokela" + - "uMātenikiMauliteniaMoʻungaselatiMalitaMaulitiusiMalativisiMalauiMeki" + - "sikouMalēsiaMosēmipikiNamipiaNiu KaletōniaNisiaMotu NōfolikiNaisilia" + - "NikalakuaHōlaniNoauēNepaliNauluNiuēNuʻusilaʻOmaniPanamāPelūPolinisia" + - " fakafalanisēPapuaniukiniFilipainiPākisitaniPolaniSā Piea mo Mikelon" + - "iʻOtumotu PitikeniPueto LikoPotu PalesitainePotukaliPalauPalakuaiKat" + - "āʻOsēnia mamaʻoLēunioniLomēniaSēpiaLūsiaLuanitāSaute ʻAlepeaʻOtumot" + - "u SolomoneʻOtumotu SeiseliSūteniSuēteniSingapoaSā HelenaSilōveniaSiv" + - "olopāti mo Sani MaieniSilōvakiaSiela LeoneSā MalinoSenekaloSōmaliaSu" + - "linameSūtani fakatongaSao Tomē mo PilinisipeʻEle SalavatoaSā Mātini " + - "(fakahōlani)SīliaSuasilaniTulisiteni ta KunuhaʻOtumotu Tuki mo Kaiko" + - "siSātiPotu fonua tonga fakafalanisēTokoTailaniTasikitaniTokelauTimoa" + - " hahakeTūkimenisitaniTunīsiaTongaToakeTilinitati mo TopakoTūvaluTaiu" + - "aniTenisāniaʻŪkalaʻineʻIukanitāʻOtumotu siʻi ʻo ʻAmelikaPuleʻanga fa" + - "katahataha ʻAmelikaʻUlukuaiʻUsipekitaniKolo VatikaniSā Viniseni mo K" + - "ulenatiniVenesuelaʻOtumotu Vilikini fakapilitāniaʻOtumotu Vilikini f" + - "akaʻamelikaVietinamiVanuatuʻUvea mo FutunaHaʻamoaKōsovoIemeniMaioteʻ" + - "Afilika tongaSemipiaSimipapueiPotu fonua taʻeʻiloa pe halaMāmaniʻAfi" + - "likaʻAmelika tokelauʻAmelika tongaʻOsēniaʻAfilika fakahihifoʻAmelika" + - " lotolotoʻAfilika fakahahakeʻAfilika fakatokelauʻAfilika lotolotoʻAf" + - "ilika fakatongaOngo ʻAmelikaʻAmelika fakatokelauKalipianeʻĒsia fakah" + - "ahakeʻĒsia fakatongaʻĒsia fakatongahahakeʻIulope fakatongaʻAositelēl" + - "ēsiaMelanīsiaPotu fonua MikolonīsiaPolinīsiaʻĒsiaʻĒsia lotolotoʻĒsi" + - "a fakahihifoʻIulopeʻIulope fakahahakeʻIulope fakatokelauʻIulope faka" + - "hihifoʻAmelika fakalatina", - []uint16{ // 290 elements + "SēkiaSiamaneTieko KāsiaSiputiTenimaʻakeTominikaLipapilika TominikaʻA" + + "isiliaSiuta mo MelilaʻEkuetoaʻEsitōniaʻIsipiteSahala fakahihifoʻElit" + + "uliaSipeiniʻĪtiōpiaʻIulope fakatahatahaFinilaniFisiʻOtumotu Fokulani" + + "MikolonīsiaʻOtumotu FaloeFalanisēKaponiPilitāniaKelenatāSeōsiaKuiana" + + " fakafalanisēKuenisīKanaSipalālitāKulinilaniKamipiaKiniKuatalupeʻEku" + + "eta KiniKalisiʻOtumotu Seōsia-tonga mo Saniuisi-tongaKuatamalaKuamuK" + + "ini-PisauKuianaHongi Kongi SAR SiainaʻOtumotu Heati mo MakitonaliHon" + + "itulasiKuloisiaHaitiHungakaliaʻOtumotu KaneliʻInitonēsiaʻAealaniʻIsi" + + "leliMotu ManiʻInitiaPotu fonua moana ʻInitia fakapilitāniaʻIlaakiʻIl" + + "aaniʻAisilaniʻĪtaliSelusīSamaikaSoataneSiapaniKeniāKīkisitaniKamipōt" + + "iaKilipasiKomolosiSā Kitisi mo NevisiKōlea tokelauKōlea tongaKueitiʻ" + + "Otumotu KeimeniKasakitaniLauLepanoniSā LūsiaLikitenisiteiniSīlangikā" + + "LaipeliaLesotoLituaniaLakisimipekiLativiaLīpiaMolokoMonakoMolotovaMo" + + "nitenikaloSā Mātini (fakafalanisē)MatakasikaʻOtumotu MāsoloMasetōnia" + + "MāliPemaMongokōliaMakau SAR SiainaʻOtumotu Maliana tokelauMātenikiMa" + + "uliteniaMoʻungaselatiMalitaMaulitiusiMalativisiMalauiMekisikouMalēsi" + + "aMosēmipikiNamipiaNiu KaletōniaNisiaMotu NōfolikiNaisiliaNikalakuaHō" + + "laniNoauēNepaliNauluNiuēNuʻusilaʻOmaniPanamāPelūPolinisia fakafalani" + + "sēPapuaniukiniFilipainiPākisitaniPolaniSā Piea mo MikeloniʻOtumotu P" + + "itikeniPuēto LikoPotu PalesitainePotukaliPalauPalakuaiKatāʻOsēnia ma" + + "maʻoLēunioniLomēniaSēpiaLūsiaLuanitāSaute ʻAlepeaʻOtumotu SolomoneʻO" + + "tumotu SeiseliSūteniSuēteniSingapoaSā HelenaSilōveniaSivolopāti mo S" + + "ani MaieniSilōvakiaSiela LeoneSā MalinoSenekaloSōmaliaSulinameSūtani" + + " fakatongaSao Tomē mo PilinisipeʻEle SalavatoaSā Mātini (fakahōlani)" + + "SīliaSuasilaniTulisitani ta KunuhaʻOtumotu Tuki mo KaikosiSātiPotu f" + + "onua tonga fakafalanisēTokoTailaniTasikitaniTokelauTimoa hahakeTūkim" + + "enisitaniTunīsiaTongaToakeTilinitati mo TopakoTūvaluTaiuaniTenisānia" + + "ʻŪkalaʻineʻIukanitāʻOtumotu siʻi ʻo ʻAmelikaPuleʻanga fakatahataha " + + "ʻAmelikaʻUlukuaiʻUsipekitaniKolo VatikaniSā Viniseni mo KulenatiniV" + + "enesuelaʻOtumotu Vilikini fakapilitāniaʻOtumotu Vilikini fakaʻamelik" + + "aVietinamiVanuatuʻUvea mo FutunaHaʻamoaKōsovoIemeniMaioteʻAfilika to" + + "ngaSemipiaSimipapueiPotu fonua taʻeʻiloa pe halaMāmaniʻAfilikaʻAmeli" + + "ka tokelauʻAmelika tongaʻOsēniaʻAfilika fakahihifoʻAmelika lotolotoʻ" + + "Afilika fakahahakeʻAfilika fakatokelauʻAfilika lotolotoʻAfilika faka" + + "tongaOngo ʻAmelikaʻAmelika fakatokelauKalipianeʻĒsia fakahahakeʻĒsia" + + " fakatongaʻĒsia fakatongahahakeʻIulope fakatongaʻAositelēlēsiaMelanī" + + "siaPotu fonua MikolonīsiaPolinīsiaʻĒsiaʻĒsia lotolotoʻĒsia fakahihif" + + "oʻIulopeʻIulope fakahahakeʻIulope fakatokelauʻIulope fakahihifoʻAmel" + + "ika fakalatina", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0019, 0x002e, 0x003e, 0x0052, 0x005a, 0x0064, 0x006d, 0x0077, 0x0083, 0x008e, 0x00a0, 0x00ab, 0x00b9, 0x00c0, @@ -36971,40 +42023,40 @@ var regionHeaders = [220]header{ 0x017c, 0x0182, 0x0189, 0x0194, 0x019e, 0x01a6, 0x01ac, 0x01b3, 0x01c1, 0x01d1, 0x01ee, 0x0200, 0x0209, 0x021c, 0x022a, 0x022e, 0x0236, 0x023c, 0x0245, 0x0254, 0x025f, 0x0264, 0x0270, 0x0277, - 0x0286, 0x028f, 0x029e, 0x02a5, 0x02b1, 0x02b7, 0x02c2, 0x02ca, - // Entry 40 - 7F - 0x02dd, 0x02e6, 0x02f5, 0x02fe, 0x0309, 0x0312, 0x0323, 0x032d, - 0x0334, 0x033f, 0x0354, 0x035c, 0x0360, 0x0372, 0x037e, 0x038d, - 0x0396, 0x039c, 0x03a6, 0x03af, 0x03b6, 0x03ca, 0x03d2, 0x03d6, - 0x03e2, 0x03ec, 0x03f3, 0x03f7, 0x0400, 0x040d, 0x0413, 0x043c, - 0x0445, 0x044a, 0x0454, 0x045a, 0x0470, 0x048d, 0x0497, 0x049f, - 0x04a4, 0x04ae, 0x04be, 0x04cb, 0x04d4, 0x04dd, 0x04e6, 0x04ee, - 0x0516, 0x051e, 0x0526, 0x0530, 0x0538, 0x053f, 0x0546, 0x054d, - 0x0554, 0x055a, 0x0565, 0x056f, 0x0577, 0x057f, 0x0593, 0x05a1, - // Entry 80 - BF - 0x05ad, 0x05b3, 0x05c4, 0x05ce, 0x05d1, 0x05d9, 0x05e3, 0x05f2, - 0x05fd, 0x0605, 0x060b, 0x0613, 0x061f, 0x0626, 0x062c, 0x0632, - 0x0638, 0x0640, 0x064c, 0x0667, 0x0671, 0x0682, 0x068c, 0x0691, - 0x0695, 0x06a0, 0x06b0, 0x06c9, 0x06d2, 0x06dc, 0x06ea, 0x06f0, - 0x06fa, 0x0704, 0x070a, 0x0713, 0x071b, 0x0726, 0x072d, 0x073b, - 0x0740, 0x074e, 0x0756, 0x075f, 0x0766, 0x076c, 0x0772, 0x0777, - 0x077c, 0x0785, 0x078c, 0x0793, 0x0798, 0x07af, 0x07bb, 0x07c4, - 0x07cf, 0x07d5, 0x07e9, 0x07fb, 0x0805, 0x0815, 0x081d, 0x0822, - // Entry C0 - FF - 0x082a, 0x082f, 0x0840, 0x0849, 0x0851, 0x0857, 0x085d, 0x0865, - 0x0873, 0x0885, 0x0896, 0x089d, 0x08a5, 0x08ad, 0x08b7, 0x08c1, - 0x08db, 0x08e5, 0x08f0, 0x08fa, 0x0902, 0x090a, 0x0912, 0x0923, - 0x093a, 0x0949, 0x0962, 0x0968, 0x0971, 0x0985, 0x099e, 0x09a3, - 0x09c1, 0x09c5, 0x09cc, 0x09d6, 0x09dd, 0x09e9, 0x09f8, 0x0a00, - 0x0a05, 0x0a0a, 0x0a1e, 0x0a25, 0x0a2c, 0x0a36, 0x0a43, 0x0a4e, - 0x0a6b, 0x0a8c, 0x0a95, 0x0aa2, 0x0aaf, 0x0ac9, 0x0ad2, 0x0af3, - 0x0b13, 0x0b1c, 0x0b23, 0x0b33, 0x0b3b, 0x0b42, 0x0b48, 0x0b4e, - // Entry 100 - 13F - 0x0b5d, 0x0b64, 0x0b6e, 0x0b8c, 0x0b93, 0x0b9c, 0x0bad, 0x0bbc, - 0x0bc5, 0x0bd9, 0x0beb, 0x0bff, 0x0c14, 0x0c26, 0x0c39, 0x0c47, - 0x0c5c, 0x0c65, 0x0c77, 0x0c88, 0x0c9f, 0x0cb1, 0x0cc2, 0x0ccc, - 0x0ce3, 0x0ced, 0x0cf4, 0x0d04, 0x0d16, 0x0d1e, 0x0d31, 0x0d45, - 0x0d58, 0x0d6c, + 0x0286, 0x028f, 0x0295, 0x029c, 0x02a8, 0x02ae, 0x02b9, 0x02c1, + // Entry 40 - 7F + 0x02d4, 0x02dd, 0x02ec, 0x02f5, 0x0300, 0x0309, 0x031a, 0x0324, + 0x032b, 0x0336, 0x034b, 0x034b, 0x0353, 0x0357, 0x0369, 0x0375, + 0x0384, 0x038d, 0x0393, 0x039d, 0x03a6, 0x03ad, 0x03c1, 0x03c9, + 0x03cd, 0x03d9, 0x03e3, 0x03ea, 0x03ee, 0x03f7, 0x0404, 0x040a, + 0x0433, 0x043c, 0x0441, 0x044b, 0x0451, 0x0467, 0x0484, 0x048e, + 0x0496, 0x049b, 0x04a5, 0x04b5, 0x04c2, 0x04cb, 0x04d4, 0x04dd, + 0x04e5, 0x050d, 0x0515, 0x051d, 0x0527, 0x052f, 0x0536, 0x053d, + 0x0544, 0x054b, 0x0551, 0x055c, 0x0566, 0x056e, 0x0576, 0x058a, + // Entry 80 - BF + 0x0598, 0x05a4, 0x05aa, 0x05bb, 0x05c5, 0x05c8, 0x05d0, 0x05da, + 0x05e9, 0x05f4, 0x05fc, 0x0602, 0x060a, 0x0616, 0x061d, 0x0623, + 0x0629, 0x062f, 0x0637, 0x0643, 0x065e, 0x0668, 0x0679, 0x0683, + 0x0688, 0x068c, 0x0697, 0x06a7, 0x06c0, 0x06c9, 0x06d3, 0x06e1, + 0x06e7, 0x06f1, 0x06fb, 0x0701, 0x070a, 0x0712, 0x071d, 0x0724, + 0x0732, 0x0737, 0x0745, 0x074d, 0x0756, 0x075d, 0x0763, 0x0769, + 0x076e, 0x0773, 0x077c, 0x0783, 0x078a, 0x078f, 0x07a6, 0x07b2, + 0x07bb, 0x07c6, 0x07cc, 0x07e0, 0x07f2, 0x07fd, 0x080d, 0x0815, + // Entry C0 - FF + 0x081a, 0x0822, 0x0827, 0x0838, 0x0841, 0x0849, 0x084f, 0x0855, + 0x085d, 0x086b, 0x087d, 0x088e, 0x0895, 0x089d, 0x08a5, 0x08af, + 0x08b9, 0x08d3, 0x08dd, 0x08e8, 0x08f2, 0x08fa, 0x0902, 0x090a, + 0x091b, 0x0932, 0x0941, 0x095a, 0x0960, 0x0969, 0x097d, 0x0996, + 0x099b, 0x09b9, 0x09bd, 0x09c4, 0x09ce, 0x09d5, 0x09e1, 0x09f0, + 0x09f8, 0x09fd, 0x0a02, 0x0a16, 0x0a1d, 0x0a24, 0x0a2e, 0x0a3b, + 0x0a46, 0x0a63, 0x0a63, 0x0a84, 0x0a8d, 0x0a9a, 0x0aa7, 0x0ac1, + 0x0aca, 0x0aeb, 0x0b0b, 0x0b14, 0x0b1b, 0x0b2b, 0x0b33, 0x0b3a, + // Entry 100 - 13F + 0x0b40, 0x0b46, 0x0b55, 0x0b5c, 0x0b66, 0x0b84, 0x0b8b, 0x0b94, + 0x0ba5, 0x0bb4, 0x0bbd, 0x0bd1, 0x0be3, 0x0bf7, 0x0c0c, 0x0c1e, + 0x0c31, 0x0c3f, 0x0c54, 0x0c5d, 0x0c6f, 0x0c80, 0x0c97, 0x0ca9, + 0x0cba, 0x0cc4, 0x0cdb, 0x0ce5, 0x0cec, 0x0cfc, 0x0d0e, 0x0d16, + 0x0d29, 0x0d3d, 0x0d50, 0x0d64, }, }, { // tr @@ -37043,7 +42095,7 @@ var regionHeaders = [220]header{ "aamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik " + "Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa " + "Afriki LabooZambiZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, @@ -37055,33 +42107,33 @@ var regionHeaders = [220]header{ 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e6, // Entry 40 - 7F 0x01f5, 0x01fd, 0x01fd, 0x0205, 0x020c, 0x0211, 0x0211, 0x0218, - 0x0220, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, 0x0249, - 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, 0x028b, - 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, 0x02c4, - 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, 0x02f2, - 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, 0x0320, - 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, 0x035f, - 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, 0x03af, - // Entry 80 - BF - 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, 0x03fe, - 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, 0x0438, - 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, 0x046c, - 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, 0x04b3, - 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, 0x04fc, - 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, 0x053c, - 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, 0x0588, - 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, 0x05e8, - // Entry C0 - FF - 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, 0x0618, - 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, 0x065c, - 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, 0x068e, - 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, 0x06dc, - 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, 0x071b, - 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, 0x075b, - 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, 0x07b8, 0x07ce, - 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, 0x080d, 0x0814, - // Entry 100 - 13F - 0x0826, 0x082b, 0x0833, + 0x0220, 0x0227, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, + 0x0249, 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, + 0x028b, 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, + 0x02c4, 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, + 0x02f2, 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, + 0x0320, 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, + 0x035f, 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, + // Entry 80 - BF + 0x03af, 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, + 0x03fe, 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, + 0x0438, 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, + 0x046c, 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, + 0x04b3, 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, + 0x04fc, 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, + 0x053c, 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, + 0x0588, 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, + // Entry C0 - FF + 0x05e8, 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, + 0x0618, 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, + 0x065c, 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, + 0x068e, 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, + 0x06dc, 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, + 0x071b, 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, + 0x075b, 0x075b, 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, + 0x07b8, 0x07ce, 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, + // Entry 100 - 13F + 0x080d, 0x0814, 0x0826, 0x082b, 0x0833, }, }, { // tzm @@ -37116,7 +42168,7 @@ var regionHeaders = [220]header{ "k iɣrem n VatikanSantevinsent d GrinadinVinzwillaTigzirin (Virgin) T" + "ibṛiṭaniyinTigzirin n Virjin n Iwunak YedduklenViṭnamVanwatuWalis d " + "FutunaSamwaYamanMayuṭTafrikt TunẓulZambyaZimbabwi", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0009, 0x0023, 0x002e, 0x003f, 0x0047, 0x004e, 0x0055, 0x005b, 0x005b, 0x0063, 0x0076, 0x007e, 0x0088, 0x008d, @@ -37128,130 +42180,128 @@ var regionHeaders = [220]header{ 0x01ce, 0x01d4, 0x01e2, 0x01e9, 0x01e9, 0x01f0, 0x01f7, 0x0201, // Entry 40 - 7F 0x0216, 0x021c, 0x021c, 0x0225, 0x022e, 0x0234, 0x0234, 0x023b, - 0x0241, 0x0248, 0x0248, 0x0252, 0x0256, 0x0269, 0x0273, 0x0273, - 0x027b, 0x0280, 0x0291, 0x0298, 0x029f, 0x02b0, 0x02b0, 0x02b5, - 0x02c0, 0x02cb, 0x02d1, 0x02d7, 0x02df, 0x02f3, 0x02f8, 0x02f8, - 0x0301, 0x0305, 0x0312, 0x0318, 0x0318, 0x0318, 0x0320, 0x0327, - 0x032c, 0x0335, 0x0335, 0x033e, 0x0347, 0x034e, 0x034e, 0x0352, - 0x0373, 0x0379, 0x037d, 0x0386, 0x038e, 0x038e, 0x0395, 0x039c, - 0x03a3, 0x03a8, 0x03b2, 0x03b9, 0x03c1, 0x03c6, 0x03d7, 0x03e4, - // Entry 80 - BF - 0x03f3, 0x03fa, 0x040b, 0x0415, 0x0419, 0x041f, 0x0429, 0x0436, - 0x043e, 0x0445, 0x044d, 0x0455, 0x045f, 0x046b, 0x0470, 0x047a, - 0x0480, 0x048a, 0x048a, 0x048a, 0x0495, 0x04a6, 0x04ae, 0x04b2, - 0x04b9, 0x04c2, 0x04c2, 0x04dc, 0x04e4, 0x04ed, 0x04f6, 0x04fd, - 0x0502, 0x0508, 0x050e, 0x0514, 0x051b, 0x0523, 0x052a, 0x053c, - 0x0542, 0x0551, 0x0558, 0x0561, 0x056a, 0x0571, 0x0577, 0x057c, - 0x0580, 0x0592, 0x0599, 0x059f, 0x05a3, 0x05b7, 0x05cc, 0x05d4, - 0x05dc, 0x05e3, 0x05f6, 0x05fd, 0x0606, 0x062d, 0x0636, 0x063a, - // Entry C0 - FF - 0x0642, 0x0649, 0x0649, 0x0652, 0x065b, 0x065b, 0x0660, 0x066a, - 0x067e, 0x0690, 0x0696, 0x069c, 0x06a3, 0x06ad, 0x06b7, 0x06bf, - 0x06bf, 0x06c7, 0x06cf, 0x06d8, 0x06e1, 0x06eb, 0x06f2, 0x06f2, - 0x0705, 0x070f, 0x070f, 0x0714, 0x0720, 0x0720, 0x073f, 0x0743, - 0x0743, 0x074c, 0x0758, 0x0765, 0x076a, 0x0778, 0x0784, 0x0789, - 0x0790, 0x0796, 0x07a9, 0x07b1, 0x07b9, 0x07c3, 0x07ca, 0x07d1, - 0x07d1, 0x07ea, 0x07f1, 0x07fb, 0x0811, 0x0828, 0x0831, 0x0853, - 0x0877, 0x087f, 0x0886, 0x0894, 0x0899, 0x0899, 0x089e, 0x08a5, - // Entry 100 - 13F - 0x08b5, 0x08bb, 0x08c3, + 0x0241, 0x0248, 0x0248, 0x0248, 0x0252, 0x0256, 0x0269, 0x0273, + 0x0273, 0x027b, 0x0280, 0x0291, 0x0298, 0x029f, 0x02b0, 0x02b0, + 0x02b5, 0x02c0, 0x02cb, 0x02d1, 0x02d7, 0x02df, 0x02f3, 0x02f8, + 0x02f8, 0x0301, 0x0305, 0x0312, 0x0318, 0x0318, 0x0318, 0x0320, + 0x0327, 0x032c, 0x0335, 0x0335, 0x033e, 0x0347, 0x034e, 0x034e, + 0x0352, 0x0373, 0x0379, 0x037d, 0x0386, 0x038e, 0x038e, 0x0395, + 0x039c, 0x03a3, 0x03a8, 0x03b2, 0x03b9, 0x03c1, 0x03c6, 0x03d7, + // Entry 80 - BF + 0x03e4, 0x03f3, 0x03fa, 0x040b, 0x0415, 0x0419, 0x041f, 0x0429, + 0x0436, 0x043e, 0x0445, 0x044d, 0x0455, 0x045f, 0x046b, 0x0470, + 0x047a, 0x0480, 0x048a, 0x048a, 0x048a, 0x0495, 0x04a6, 0x04ae, + 0x04b2, 0x04b9, 0x04c2, 0x04c2, 0x04dc, 0x04e4, 0x04ed, 0x04f6, + 0x04fd, 0x0502, 0x0508, 0x050e, 0x0514, 0x051b, 0x0523, 0x052a, + 0x053c, 0x0542, 0x0551, 0x0558, 0x0561, 0x056a, 0x0571, 0x0577, + 0x057c, 0x0580, 0x0592, 0x0599, 0x059f, 0x05a3, 0x05b7, 0x05cc, + 0x05d4, 0x05dc, 0x05e3, 0x05f6, 0x05fd, 0x0606, 0x062d, 0x0636, + // Entry C0 - FF + 0x063a, 0x0642, 0x0649, 0x0649, 0x0652, 0x065b, 0x065b, 0x0660, + 0x066a, 0x067e, 0x0690, 0x0696, 0x069c, 0x06a3, 0x06ad, 0x06b7, + 0x06bf, 0x06bf, 0x06c7, 0x06cf, 0x06d8, 0x06e1, 0x06eb, 0x06f2, + 0x06f2, 0x0705, 0x070f, 0x070f, 0x0714, 0x0720, 0x0720, 0x073f, + 0x0743, 0x0743, 0x074c, 0x0758, 0x0765, 0x076a, 0x0778, 0x0784, + 0x0789, 0x0790, 0x0796, 0x07a9, 0x07b1, 0x07b9, 0x07c3, 0x07ca, + 0x07d1, 0x07d1, 0x07d1, 0x07ea, 0x07f1, 0x07fb, 0x0811, 0x0828, + 0x0831, 0x0853, 0x0877, 0x087f, 0x0886, 0x0894, 0x0899, 0x0899, + // Entry 100 - 13F + 0x089e, 0x08a5, 0x08b5, 0x08bb, 0x08c3, }, }, { // ug - "ئاسسېنسىيون ئارىلىئاندوررائەرەب بىرلەشمە خەلىپىلىكىئافغانىستانئانتىگۋا ۋ" + - "ە باربۇدائانگۋىللائالبانىيەئەرمېنىيەئانگولائانتاركتىكائارگېنتىنائام" + - "ېرىكا تەۋەلىكىدىكى ساموئائاۋسترىيەئاۋسترالىيەئارۇبائالاند ئاراللىرى" + - "ئەزەربەيجانبوسنىيە-گېرتسېگوۋىناباربادوسباڭلادىشبېلگىيەبۇركىنا-فاسوب" + - "ۇلغارىيەبەھرەينبۇرۇندىبېنىنساينىت-بارتھېلەمي ئاراللىرىبېرمۇدابىرۇنې" + - "يبولىۋىيەكارىب دېڭىزى گوللاندىيەبىرازىلىيەباھامابۇتانبۇۋېت ئاراللىر" + - "ىبوتسۋانابېلارۇسىيەبېلىزكاناداكەئەلىڭ كوكۇس ئاراللىرىكونگو - كىنشاس" + - "ائوتتۇرا ئافرىقا جۇمھۇرىيىتىكونگو - بىراززاۋىلشىۋىتسارىيەكوتې دې ئى" + - "ۋوئىركۇك ئاراللىرىچىلىكامېرونجۇڭگوكولومبىيەكىلىپپېرتون ئاراللىرىكوس" + - "تارىكاكۇبايېشىل تۇمشۇقكۇراسوروژدېستۋو ئارىلىسىپرۇسچېخ جۇمھۇرىيىتىگې" + - "رمانىيەدېگو-گارشىياجىبۇتىدانىيەدومىنىكادومىنىكا جۇمھۇرىيىتىئالجىرىي" + - "ەسېيتا ۋە مېلىلائېكۋادورئېستونىيەمىسىرغەربىي ساخارائېرىترېيەئىسپانى" + - "يەئېفىيوپىيەياۋروپا ئىتتىپاقىفىنلاندىيەفىجىفالكلاند ئاراللىرىمىكرون" + - "ېزىيەفائېرو ئاراللىرىفىرانسىيەگابونئەنگلىيە پادىشاھلىقىگىرېناداگىرو" + - "زىيەفىرانسىيەگە قاراشلىق گىۋىياناگېرىنسىگاناجەبىلتارىقگىرېنلاندگامب" + - "ىيەگىۋىنېيەگىۋادېلۇپئېكۋاتور گىۋىنېيەسىگىرېتسىيەجەنۇبىي جورجىيە ۋە " + - "جەنۇبىي ساندىۋىچ ئاراللىرىگىۋاتېمالاگۇئامگىۋىنېيە-بىسسائۇگىۋىياناشي" + - "اڭگاڭ ئالاھىدە مەمۇرىي رايونى (جۇڭگو)خېرد ۋە ماك-دونالد ئارىلىھوندۇ" + - "راسكىرودىيەھايتىۋېنگىرىيەكانارى ئاراللىرىھىندونېزىيەئىرېلاندىيەئىسر" + - "ائىلىيەمېن ئارىلىھىندىستانئەنگلىيەنىڭ ھىندى ئوكياندىكى تەۋەلىكىئىرا" + - "قئىرانئىسلاندىيەئىتالىيەجېرسېييامايكائىيوردانىيەياپونىيەكېنىيەقىرغى" + - "زىستانكامبودژاكىرىباتىكوموروساينىت-كىرىستوفېر ۋە نېۋىسشىمالىي كورىي" + - "ەجەنۇبىي كورىيەكۇۋەيتكايمان ئاراللىرىقازاقىستانلائوسلىۋانساينىت-لۇس" + - "ىيەلىچتېنشتېين بەگلىكىسىرىلانكالىبېرىيەلېسوتولىتۋانىيەلىيۇكسېمبۇرگل" + - "اتۋىيەلىۋىيەماراكەشموناكومولدوۋامونتېنېگروساينىت-مارتېنماداغاسقارما" + - "رشال ئاراللىرىماكېدونىيەمالىبىرماموڭغۇلىيەئاۋمېن ئالاھىدە مەمۇرىي ر" + - "ايونى (جۇڭگو)شىمالىي مارىيانا ئاراللىرىمارتىنىكاماۋرىتانىيەمونتسېرر" + - "اتمالتاماۋرىتىئۇسمالدىۋېمالاۋىمېكسىكامالايشىياموزامبىكنامىبىيەيېڭى " + - "كالېدونىيەنېگىرنورفولك ئارىلىنىگېرىيەنىكاراگۇئاگوللاندىيەنورۋېگىيەن" + - "ېپالناۋرۇنىيۇئېيېڭى زېلاندىيەئومانپاناماپېرۇفىرانسىيەگە قاراشلىق پو" + - "لىنېزىيەپاپۇئا يېڭى گىۋىنېيەسىفىلىپپىنپاكىستانپولشاساينىت-پىئېر ۋە " + - "مىكېلون ئاراللىرىپىتكاير ئاراللىرىپۇئېرتو-رىكوپەلەستىن زېمىنىپورتۇگ" + - "الىيەپالاۋپاراگۋايقاتارئوكيانىيە ئەتراپىدىكى ئاراللاررېئونىيونرۇمىن" + - "ىيەسېربىيەرۇسىيەرىۋانداسەئۇدى ئەرەبىستانسولومون ئاراللىرىسېيشېلسۇدا" + - "نشىۋېتسىيەسىنگاپورساينىت ھېلېناسىلوۋېنىيەسىۋالبارد ۋە يان-مايېن ئار" + - "ىلىسىلوۋاكىيەسېررالېئونسان-مارىنوسېنېگالسومالىسۇرىنامجەنۇبىي سۇدانس" + - "ان تومې ۋە پرىنسىپېئەل سالۋادورسىنت مارتېنسۈرىيەسىۋېزىلاندترىستان د" + - "اكۇنھاتۇركس ۋە كايكوس ئاراللىرىچادفىرانسىيەگە قاراشلىق جەنۇبتىكى زې" + - "مىنلىرىتوگوتايلاندتاجىكىستانتوكېلاۋشەرقىي تىمورتۈركمەنىستانتۇنىستون" + - "گاتۈركىيەتىرىنىداد ۋە توباگوتۇۋالۇتەيۋەنتانزانىيەئۇكرائىنائۇگاندائا" + - "مېرىكا تەۋەلىكىدىكى سىرتقى كىچىك ئاراللارئامېرىكا قوشما شتاتلىرىئۇر" + - "ۇگۋايئۆزبېكىستانۋاتىكان شەھىرىساينىت-ۋىنسېنت ۋە گىرېنادىنېسۋېنېزۇئې" + - "لائەنگلىيەگە قاراشلىق ۋىرجىن ئارىلىئامېرىكا تەۋەلىكىدىكى ۋىرجىن تاق" + - "ىم ئاراللىرىۋىيېتنامۋانۇئاتۇۋالىس ۋە فۇتۇناساموئاكوسوۋويەمەنمايوتتې" + - "جەنۇبىي ئافرىقازامبىيەزىمبابۋېيوچۇن جايدۇنيائافرىقاشىمالىي ئامېرىكا" + - "جەنۇبىي ئامېرىكائوكيانىيەغەربىي ئافرىقائوتتۇرا ئامېرىكاشەرقىي ئافرى" + - "قاشىمالىي ئافرىقائوتتۇرا ئافرىقاجەنۇبىي ئافرىقا رايونىئامېرىكاشىمال" + - "ىي ئامېرىكا رايونىكارىب دېڭىزىشەرقىي ئاسىياجەنۇبىي ئاسىياشەرقىي جەن" + - "ۇبىي ئاسىياجەنۇبىي ياۋروپائاۋسترالئاسىيامېلانېسىيەمىكرونېزىيە رايون" + - "ىپولىنىزىيەئاسىيائوتتۇرا ئاسىياغەربىي ئاسىياياۋروپاشەرقىي ياۋروپاشى" + - "مالىي ياۋروپاغەربىي ياۋروپالاتىن ئامېرىكا", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x0023, 0x0033, 0x0063, 0x0079, 0x009d, 0x00af, 0x00c1, - 0x00d3, 0x00e1, 0x00f7, 0x010b, 0x0141, 0x0153, 0x0169, 0x0175, - 0x0194, 0x01aa, 0x01d1, 0x01e1, 0x01f1, 0x01ff, 0x0216, 0x0228, - 0x0236, 0x0244, 0x024e, 0x0282, 0x0290, 0x029e, 0x02ae, 0x02da, - 0x02ee, 0x02fa, 0x0304, 0x0321, 0x0331, 0x0345, 0x034f, 0x035b, - 0x0387, 0x03a2, 0x03d6, 0x03f7, 0x040d, 0x0429, 0x0442, 0x044a, - 0x0458, 0x0462, 0x0474, 0x049d, 0x04af, 0x04b7, 0x04ce, 0x04da, - 0x04f9, 0x0505, 0x0522, 0x0534, 0x054b, 0x0557, 0x0563, 0x0573, - // Entry 40 - 7F - 0x059a, 0x05ac, 0x05c8, 0x05d8, 0x05ea, 0x05f4, 0x060d, 0x061f, - 0x0631, 0x0645, 0x0666, 0x067a, 0x0682, 0x06a5, 0x06bb, 0x06da, - 0x06ec, 0x06f6, 0x071d, 0x072d, 0x073d, 0x0775, 0x0783, 0x078b, - 0x079f, 0x07b1, 0x07bf, 0x07cf, 0x07e1, 0x0806, 0x0818, 0x086d, - 0x0881, 0x088b, 0x08aa, 0x08ba, 0x0902, 0x0930, 0x0940, 0x0950, - 0x095a, 0x096c, 0x098b, 0x09a1, 0x09b7, 0x09cd, 0x09e0, 0x09f2, - 0x0a39, 0x0a43, 0x0a4d, 0x0a61, 0x0a71, 0x0a7d, 0x0a8b, 0x0aa1, - 0x0ab1, 0x0abd, 0x0ad3, 0x0ae3, 0x0af3, 0x0aff, 0x0b30, 0x0b4b, - // Entry 80 - BF - 0x0b66, 0x0b72, 0x0b91, 0x0ba5, 0x0baf, 0x0bb9, 0x0bd2, 0x0bf7, - 0x0c09, 0x0c19, 0x0c25, 0x0c37, 0x0c4f, 0x0c5d, 0x0c69, 0x0c77, - 0x0c83, 0x0c91, 0x0ca5, 0x0cbe, 0x0cd2, 0x0cf1, 0x0d05, 0x0d0d, - 0x0d17, 0x0d29, 0x0d6f, 0x0da1, 0x0db3, 0x0dc9, 0x0ddd, 0x0de7, - 0x0dfb, 0x0e09, 0x0e15, 0x0e23, 0x0e35, 0x0e45, 0x0e55, 0x0e72, - 0x0e7c, 0x0e97, 0x0ea7, 0x0ebb, 0x0ecf, 0x0ee1, 0x0eeb, 0x0ef5, - 0x0f01, 0x0f1c, 0x0f26, 0x0f32, 0x0f3a, 0x0f76, 0x0fa0, 0x0fb0, - 0x0fc0, 0x0fca, 0x1008, 0x1029, 0x1040, 0x105d, 0x1073, 0x107d, - // Entry C0 - FF - 0x108d, 0x1097, 0x10d1, 0x10e3, 0x10f3, 0x1101, 0x110d, 0x111b, - 0x113c, 0x115d, 0x1169, 0x1173, 0x1185, 0x1195, 0x11ae, 0x11c2, - 0x11f8, 0x120c, 0x1220, 0x1233, 0x1241, 0x124d, 0x125b, 0x1274, - 0x1299, 0x12b0, 0x12c5, 0x12d1, 0x12e5, 0x1302, 0x1331, 0x1337, - 0x1384, 0x138c, 0x139a, 0x13ae, 0x13bc, 0x13d3, 0x13eb, 0x13f5, - 0x13ff, 0x140d, 0x1431, 0x143d, 0x1449, 0x145b, 0x146d, 0x147b, - 0x14cd, 0x14f9, 0x1509, 0x151f, 0x153a, 0x1571, 0x1585, 0x15c4, - 0x1618, 0x1628, 0x1638, 0x1654, 0x1660, 0x166c, 0x1676, 0x1684, - // Entry 100 - 13F - 0x16a1, 0x16af, 0x16bf, 0x16d0, 0x16da, 0x16e8, 0x1707, 0x1726, - 0x1738, 0x1753, 0x1772, 0x178d, 0x17aa, 0x17c7, 0x17f1, 0x1801, - 0x182d, 0x1844, 0x185d, 0x1878, 0x18a0, 0x18bd, 0x18d9, 0x18ed, - 0x1910, 0x1924, 0x1930, 0x194b, 0x1964, 0x1972, 0x198d, 0x19aa, - 0x19c5, 0x19e0, + "ئاسسېنسىيون ئارىلىئاندوررائەرەب بىرلەشمە خەلىپىلىكىئافغانىستانئانتىگۇئا " + + "ۋە باربۇدائانگۋىللائالبانىيەئەرمېنىيەئانگولائانتاركتىكائارگېنتىنائا" + + "مېرىكا ساموئائاۋىستىرىيەئاۋسترالىيەئارۇبائالاند ئاراللىرىئەزەربەيجا" + + "نبوسىنىيە ۋە گېرتسېگوۋىناباربادوسبېنگالبېلگىيەبۇركىنا فاسوبۇلغارىيە" + + "بەھرەينبۇرۇندىبېنىنساينت بارتېلېمىبېرمۇدابىرۇنېيبولىۋىيەكارىب دېڭىز" + + "ى گوللاندىيەبىرازىلىيەباھامابۇتانبوۋېت ئارىلىبوتسۋانابېلارۇسىيەبېلى" + + "زكاناداكوكوس (كىلىڭ) ئاراللىرىكونگو - كىنشاسائوتتۇرا ئافرىقا جۇمھۇر" + + "ىيىتىكونگو - بىراززاۋىلشىۋېتسارىيەكوتې دې ئىۋوئىركۇك ئاراللىرىچىلىك" + + "امېرونجۇڭگوكولومبىيەكىلىپپېرتون ئاراللىرىكوستارىكاكۇبايېشىل تۇمشۇقك" + + "ۇراچاۋمىلاد ئارىلىسىپرۇسچېخ جۇمھۇرىيىتىگېرمانىيەدېگو-گارشىياجىبۇتىد" + + "انىيەدومىنىكادومىنىكا جۇمھۇرىيىتىئالجىرىيەسېيتا ۋە مېلىلائېكۋاتورئې" + + "ستونىيەمىسىرغەربىي ساخارائېرىترىيەئىسپانىيەئېفىيوپىيەياۋروپا ئىتتىپ" + + "اقىفىنلاندىيەفىجىفالكلاند ئاراللىرىمىكرونېزىيەفارو ئاراللىرىفىرانسى" + + "يەگابونبىرلەشمە پادىشاھلىقگىرېناداگىرۇزىيەفىرانسىيەگە قاراشلىق گىۋى" + + "ياناگۇرنسېيگاناجەبىلتارىقگىرېنلاندىيەگامبىيەگىۋىنىيەگىۋادېلۇپئېكۋات" + + "ور گىۋىنىيەسىگىرېتسىيەجەنۇبىي جورجىيە ۋە جەنۇبىي ساندۋىچ ئاراللىرىگ" + + "ىۋاتېمالاگۇئامگىۋىنىيە بىسسائۇگىۋىياناشياڭگاڭ ئالاھىدە مەمۇرىي رايو" + + "نى (جۇڭگو)ھېرد ئارىلى ۋە ماكدونالد ئاراللىرىھوندۇراسكىرودىيەھايتىۋې" + + "نگىرىيەكانارى ئاراللىرىھىندونېزىيەئىرېلاندىيەئىسرائىلىيەمان ئارىلىھ" + + "ىندىستانئەنگلىيەگە قاراشلىق ھىندى ئوكيان تېررىتورىيەسىئىراقئىرانئىس" + + "لاندىيەئىتالىيەجېرسېييامايكائىيوردانىيەياپونىيەكېنىيەقىرغىزىستانكام" + + "بودژاكىرىباتىكوموروساينت كىتىس ۋە نېۋىسچاۋشيەنكورېيەكۇۋەيتكايمان ئا" + + "راللىرىقازاقىستانلائوسلىۋانساينت لۇسىيەلىكتېنستېينسىرىلانكالىبېرىيە" + + "لېسوتولىتۋانىيەلىيۇكسېمبۇرگلاتۋىيەلىۋىيەماراكەشموناكومولدوۋاقارا تا" + + "غساينت مارتىنماداغاسقارمارشال ئاراللىرىماكېدونىيەمالىبىرماموڭغۇلىيە" + + "ئاۋمېن ئالاھىدە مەمۇرىي رايونىشىمالىي مارىيانا ئاراللىرىمارتىنىكاما" + + "ۋرىتانىيەمونتسېرراتمالتاماۋرىتىيۇسمالدىۋېمالاۋىمېكسىكامالايسىياموزا" + + "مبىكنامىبىيەيېڭى كالېدونىيەنىگېرنورفولك ئارىلىنىگېرىيەنىكاراگۇئاگول" + + "لاندىيەنورۋېگىيەنېپالناۋرۇنيۇئېيېڭى زېلاندىيەئومانپاناماپېرۇفىرانسى" + + "يەگە قاراشلىق پولىنېزىيەپاپۇئا يېڭى گىۋىنىيەسىفىلىپپىنپاكىستانپولشا" + + "ساينت پىيېر ۋە مىكېلون ئاراللىرىپىتكايرن ئاراللىرىپۇئېرتو رىكوپەلەس" + + "تىن زېمىنىپورتۇگالىيەپالائۇپاراگۋايقاتارئوكيانىيە ئەتراپىدىكى ئارال" + + "لاررېيۇنىيونرومىنىيەسېربىيەرۇسىيەرىۋانداسەئۇدىي ئەرەبىستانسولومون ئ" + + "اراللىرىسېيشېلسۇدانشىۋېتسىيەسىنگاپورساينىت ھېلېناسىلوۋېنىيەسىۋالبار" + + "د ۋە يان مايېنسىلوۋاكىيەسېررالېئونسان مارىنوسېنېگالسومالىسۇرىنامجەن" + + "ۇبىي سۇدانسان تومې ۋە پرىنسىپېسالۋادورسىنت مارتېنسۇرىيەسىۋېزىلاندتر" + + "ىستان داكۇنھاتۇركس ۋە كايكوس ئاراللىرىچادفىرانسىيەنىڭ جەنۇبىي زېمىن" + + "ىتوگوتايلاندتاجىكىستانتوكېلاۋشەرقىي تىمورتۈركمەنىستانتۇنىستونگاتۈرك" + + "ىيەتىرىنىداد ۋە توباگوتۇۋالۇتەيۋەنتانزانىيەئۇكرائىنائۇگاندائا ق ش ت" + + "اشقى ئاراللىرىئامېرىكا قوشما ئىشتاتلىرىئۇرۇگۋايئۆزبېكىستانۋاتىكانسا" + + "ينت ۋىنسېنت ۋە گىرېنادىنېسۋېنېسۇئېلائەنگلىيە ۋىرگىن ئاراللىرىئا ق ش" + + " ۋىرگىن ئاراللىرىۋىيېتنامۋانۇئاتۇۋاللىس ۋە فۇتۇناساموئاكوسوۋويەمەنما" + + "يوتىجەنۇبىي ئافرىقازامبىيەزىمبابۋېيوچۇن جايدۇنيائافرىقاشىمالىي ئامې" + + "رىكاجەنۇبىي ئامېرىكائوكيانىيەغەربىي ئافرىقائوتتۇرا ئامېرىكاشەرقىي ئ" + + "افرىقاشىمالىي ئافرىقائوتتۇرا ئافرىقاجەنۇبىي ئافرىقا رايونىئامېرىكاش" + + "ىمالىي ئامېرىكا رايونىكارىب دېڭىزىشەرقىي ئاسىياجەنۇبىي ئاسىياشەرقىي" + + " جەنۇبىي ئاسىياجەنۇبىي ياۋروپائاۋسترالئاسىيامېلانېسىيەمىكرونېزىيە را" + + "يونىپولىنىزىيەئاسىيائوتتۇرا ئاسىياغەربىي ئاسىياياۋروپاشەرقىي ياۋروپ" + + "اشىمالىي ياۋروپاغەربىي ياۋروپالاتىن ئامېرىكا", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0023, 0x0033, 0x0063, 0x0079, 0x009f, 0x00b1, 0x00c3, + 0x00d5, 0x00e3, 0x00f9, 0x010d, 0x012a, 0x0140, 0x0156, 0x0162, + 0x0181, 0x0197, 0x01c5, 0x01d5, 0x01e1, 0x01ef, 0x0206, 0x0218, + 0x0226, 0x0234, 0x023e, 0x025b, 0x0269, 0x0277, 0x0287, 0x02b3, + 0x02c7, 0x02d3, 0x02dd, 0x02f4, 0x0304, 0x0318, 0x0322, 0x032e, + 0x0358, 0x0373, 0x03a7, 0x03c8, 0x03de, 0x03fa, 0x0413, 0x041b, + 0x0429, 0x0433, 0x0445, 0x046e, 0x0480, 0x0488, 0x049f, 0x04ad, + 0x04c4, 0x04d0, 0x04ed, 0x04ff, 0x0516, 0x0522, 0x052e, 0x053e, + // Entry 40 - 7F + 0x0565, 0x0577, 0x0593, 0x05a3, 0x05b5, 0x05bf, 0x05d8, 0x05ea, + 0x05fc, 0x0610, 0x0631, 0x0631, 0x0645, 0x064d, 0x0670, 0x0686, + 0x06a1, 0x06b3, 0x06bd, 0x06e2, 0x06f2, 0x0702, 0x073a, 0x0748, + 0x0750, 0x0764, 0x077c, 0x078a, 0x079a, 0x07ac, 0x07d1, 0x07e3, + 0x0836, 0x084a, 0x0854, 0x0873, 0x0883, 0x08cb, 0x090b, 0x091b, + 0x092b, 0x0935, 0x0947, 0x0966, 0x097c, 0x0992, 0x09a8, 0x09bb, + 0x09cd, 0x0a25, 0x0a2f, 0x0a39, 0x0a4d, 0x0a5d, 0x0a69, 0x0a77, + 0x0a8d, 0x0a9d, 0x0aa9, 0x0abf, 0x0acf, 0x0adf, 0x0aeb, 0x0b10, + // Entry 80 - BF + 0x0b1e, 0x0b2a, 0x0b36, 0x0b55, 0x0b69, 0x0b73, 0x0b7d, 0x0b94, + 0x0baa, 0x0bbc, 0x0bcc, 0x0bd8, 0x0bea, 0x0c02, 0x0c10, 0x0c1c, + 0x0c2a, 0x0c36, 0x0c44, 0x0c53, 0x0c6a, 0x0c7e, 0x0c9d, 0x0cb1, + 0x0cb9, 0x0cc3, 0x0cd5, 0x0d0e, 0x0d40, 0x0d52, 0x0d68, 0x0d7c, + 0x0d86, 0x0d9a, 0x0da8, 0x0db4, 0x0dc2, 0x0dd4, 0x0de4, 0x0df4, + 0x0e11, 0x0e1b, 0x0e36, 0x0e46, 0x0e5a, 0x0e6e, 0x0e80, 0x0e8a, + 0x0e94, 0x0e9e, 0x0eb9, 0x0ec3, 0x0ecf, 0x0ed7, 0x0f13, 0x0f3d, + 0x0f4d, 0x0f5d, 0x0f67, 0x0fa3, 0x0fc6, 0x0fdd, 0x0ffa, 0x1010, + // Entry C0 - FF + 0x101c, 0x102c, 0x1036, 0x1070, 0x1082, 0x1092, 0x10a0, 0x10ac, + 0x10ba, 0x10dd, 0x10fe, 0x110a, 0x1114, 0x1126, 0x1136, 0x114f, + 0x1163, 0x118c, 0x11a0, 0x11b4, 0x11c7, 0x11d5, 0x11e1, 0x11ef, + 0x1208, 0x122d, 0x123d, 0x1252, 0x125e, 0x1272, 0x128f, 0x12be, + 0x12c4, 0x12f8, 0x1300, 0x130e, 0x1322, 0x1330, 0x1347, 0x135f, + 0x1369, 0x1373, 0x1381, 0x13a5, 0x13b1, 0x13bd, 0x13cf, 0x13e1, + 0x13ef, 0x1417, 0x1417, 0x1447, 0x1457, 0x146d, 0x147b, 0x14b0, + 0x14c4, 0x14f4, 0x151e, 0x152e, 0x153e, 0x155c, 0x1568, 0x1574, + // Entry 100 - 13F + 0x157e, 0x158a, 0x15a7, 0x15b5, 0x15c5, 0x15d6, 0x15e0, 0x15ee, + 0x160d, 0x162c, 0x163e, 0x1659, 0x1678, 0x1693, 0x16b0, 0x16cd, + 0x16f7, 0x1707, 0x1733, 0x174a, 0x1763, 0x177e, 0x17a6, 0x17c3, + 0x17df, 0x17f3, 0x1816, 0x182a, 0x1836, 0x1851, 0x186a, 0x1878, + 0x1893, 0x18b0, 0x18cb, 0x18e6, }, }, { // uk @@ -37263,48 +42313,48 @@ var regionHeaders = [220]header{ urRegionIdx, }, { // ur-IN - "جزیرہ اسینشنجزائر آلینڈجزیرہ بوویتجزائر (کیلنگ) کوکوسکوت داوواغجزائر ککج" + - "زیرہ کلپرٹنڈیگو گارشیاجزائر فاکلینڈجزائر فیروفرانسیسی گیاناجزائر ہر" + - "ڈ و مکڈونلڈجزائر کناریبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماری" + - "اناجزیرہ نارفوکجزائر پٹکیرنجزائر سلیمانترسٹان دا کونیاجزائر کیکس و " + - "ترکیہامریکی بیرونی جزائربرطانوی جزائر ورجنامریکی جزائر ورجن", - []uint16{ // 249 elements + "جزیرہ اسینشنجزائر آلینڈجزیرہ بوویتجزائر (کیلنگ) کوکوسجزائر ککجزیرہ کلپرٹ" + + "نڈیگو گارشیاجزائر فاکلینڈجزائر فیروفرانسیسی گیاناجزائر ہرڈ و مکڈونل" + + "ڈجزائر کناریبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماریاناجزیرہ ن" + + "ارفوکجزائر پٹکیرنجزائر سلیمانترسٹان دا کونیاجزائر کیکس و ترکیہامریک" + + "ی بیرونی جزائربرطانوی جزائر ورجنامریکی جزائر ورجن", + []uint16{ // 251 elements // Entry 0 - 3F 0x0000, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0076, 0x0085, 0x0085, - 0x0085, 0x0085, 0x0085, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - // Entry 40 - 7F - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ca, 0x00ca, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, - 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, - 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, - // Entry 80 - BF - 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, - 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, - 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, - 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, - 0x018b, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, - 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, - 0x01a2, 0x01a2, 0x01a2, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, - // Entry C0 - FF - 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, - 0x01b9, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01ec, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0253, - 0x0273, + 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0072, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, + 0x0089, 0x0089, 0x0089, 0x0089, 0x009e, 0x009e, 0x009e, 0x009e, + // Entry 40 - 7F + 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, + 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x00b7, 0x00b7, + 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00e5, 0x00e5, + 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, + 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x0108, 0x0108, + 0x0108, 0x0108, 0x0108, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, + 0x011d, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + // Entry 80 - BF + 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, + 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x0154, 0x0154, + 0x0154, 0x0154, 0x0154, 0x0154, 0x0178, 0x0178, 0x0178, 0x0178, + 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, + 0x0178, 0x0178, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, + 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, + 0x018f, 0x018f, 0x018f, 0x018f, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + // Entry C0 - FF + 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, + 0x01a6, 0x01a6, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, + 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, + 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01d9, 0x01fa, + 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, + 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, + 0x01fa, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, + 0x021e, 0x0240, 0x0260, }, }, { // uz @@ -37318,94 +42368,94 @@ var regionHeaders = [220]header{ }, }, { // uz-Cyrl - "Вознесение оролиАндорраБирлашган Араб АмирликлариАфғонистонАнтигуа ва Ба" + - "рбадосАнгилаАлбанияАрманистонАнголаАнтарктикаАргентинаАмерика Самоа" + - "сиАвстрияАвстралияАрубаАланд ороллариОзарбайжонБосния ва Герцеговин" + - "аБарбадосБангладешБельгияБуркина-ФасоБолгарияБаҳрайнБурундиБенинМуқ" + - "аддас ВарфаломейБермудаБрунейБоливияКариб НидерландиясиБразилияБага" + - "ма ороллариБутанБувет оролиБотсваннаБелорусияБелизКанадаКокос (Кили" + - "нг) ороллариКонго-КиншасаМарказий Африка РеспубликасиКонго Браззави" + - "льШвейцарияКот-д-ИвуарКук ороллариЧилиКамерунХитойКолумбияКлипперто" + - "н оролиКоста-РикаКубаКабо-ВердеКурасаоРождество оролиКипрЧехия Респ" + - "убликасиОлмонияДиего ГарсияДжибутиДанияДоминикаДоминикан Республика" + - "сиЖазоирСейта ва МелиллаЭквадорЭстонияМисрҒарбий Саҳрои КабирЭритре" + - "яИспанияЭфиопияЕвропа ИттифоқиФинляндияФижи ороллариФолькленд оролл" + - "ариМикронезияФарер ороллариФранцияГабонБирлашган ҚиролликГренадаГру" + - "зияФранцуз ГвианасиГернсиГанаГибралтарГренландияГамбияГвинеяГваделу" + - "пеЭкваториал ГвинеяГрецияЖанубий Джорджия ва Жанубий Сендвич оролла" + - "риГватемалаГуамГвинея-БисауГаянаГонконг Хитой ММҲГерд ороли ва МакД" + - "оналд ороллариГондурасХорватияГаитиВенгрияКанар ороллариИндонезияИр" + - "ландияИсроилМэн оролиҲиндистонБритания Ҳинд океани ҳудудиИроқЭронИс" + - "ландияИталияДжерсиЯмайкаИорданияЯпонияКенияҚирғизистонКамбоджаКириб" + - "атиКомор ороллариСент-Китс ва НевисШимолий КореяЖанубий КореяКувайт" + - "Кайман ороллариҚозоғистонЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиб" + - "ерияЛесотоЛитваЛюксембургЛатвияЛивияМарокашМонакоМолдоваЧерногорияС" + - "ент-МартинМадагаскарМаршал ороллариМакедонияМалиМьянма (Бирма)Муғул" + - "истонМакао Хитой ММҲШимолий Марианна ороллариМартиникаМавританияМон" + - "тсерратМальтаМаврикийМальдив ороллариМалавиМексикаМалайзияМозамбикН" + - "амибияЯнги КаледонияНигерНорфолк ороллариНигерияНикарагуаНидерланди" + - "яНорвегияНепалНауруНиуеЯнги ЗеландияУммонПанамаПеруФранцуз Полинези" + - "ясиПапуа Янги ГвинеяФилиппинПокистонПольшаСент-Пьер ва МикелонПитка" + - "рин ороллариПуэрто-РикоФаластин ҳудудиПортугалияПалауПарагвайҚатарЁ" + - "ндош ОкеанияРеюньонРуминияСербияРоссияРуандаСаудия АрабистониСоломо" + - "н ороллариСейшел ороллариСуданШвецияСингапурМуқаддас Елена ороллари" + - "СловенияСавльбард ва Жан МаенСловакияСьерра-ЛеонеСан-МариноСенегалС" + - "омалиСуринамЖанубий СуданСан-Томе ва ПринсипиЭль-СальвадорСинт-Маар" + - "тенСурияСвазилендТристан де КунаТуркс ва Кайкос ороллариЧадФранция " + - "жанубий худудлариТогоТайландТожикистонТокелауШарқий-ТиморТуркманист" + - "онТунисТонгаТуркияТринидад ва ТобагоТувалуТайванТанзанияУкраинаУган" + - "даАҚШ ёндош ороллариҚўшма ШтатларУругвайЎзбекистонВатиканСент-Винсе" + - "нт ва ГренадинВенесуэлаБритания Вирджиния ороллариАҚШ Вирджиния оро" + - "ллариВьетнамВануатуУэллис ва ФутунаСамоаКосовоЯманМайоттаЖанубий Аф" + - "рикаЗамбияЗимбабвеНомаълум минтақаДунёАфрикаШимолий АмерикаЖанубий " + - "АмерикаОкеанияҒарбий АфрикаМарказий АмерикаШарқий АфрикаШимолий Афр" + - "икаМарказий АфрикаЖануби-АфрикаАмерикаШимоли-АмерикаКариб ҳавзасиШа" + - "рқий ОсиёЖанубий ОсиёЖанубий-Шарқий ОсиёЖанубий ЕвропаАвстралазияМе" + - "ланезияМикронезия минтақасиПолинезияОсиёМарказий ОсиёҒарбий ОсиёЕвр" + - "опаШарқий ЕвропаШимолий ЕвропаҒарбий ЕвропаЛотин Америкаси", - []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x001f, 0x002d, 0x005f, 0x0073, 0x0097, 0x00a3, 0x00b1, - 0x00c5, 0x00d1, 0x00e5, 0x00f7, 0x0114, 0x0122, 0x0134, 0x013e, - 0x0159, 0x016d, 0x0195, 0x01a5, 0x01b7, 0x01c5, 0x01dc, 0x01ec, - 0x01fa, 0x0208, 0x0212, 0x0237, 0x0245, 0x0251, 0x025f, 0x0284, - 0x0294, 0x02b1, 0x02bb, 0x02d0, 0x02e2, 0x02f4, 0x02fe, 0x030a, - 0x0334, 0x034d, 0x0383, 0x03a2, 0x03b4, 0x03c8, 0x03df, 0x03e7, - 0x03f5, 0x03ff, 0x040f, 0x042e, 0x0441, 0x0449, 0x045c, 0x046a, - 0x0487, 0x048f, 0x04b2, 0x04c0, 0x04d7, 0x04e5, 0x04ef, 0x04ff, - // Entry 40 - 7F - 0x052a, 0x0536, 0x0554, 0x0562, 0x0570, 0x0578, 0x059c, 0x05aa, - 0x05b8, 0x05c6, 0x05e3, 0x05f5, 0x060e, 0x0631, 0x0645, 0x0660, - 0x066e, 0x0678, 0x069b, 0x06a9, 0x06b5, 0x06d4, 0x06e0, 0x06e8, - 0x06fa, 0x070e, 0x071a, 0x0726, 0x0738, 0x0759, 0x0765, 0x07b8, - 0x07ca, 0x07d2, 0x07e9, 0x07f3, 0x0813, 0x084f, 0x085f, 0x086f, - 0x0879, 0x0887, 0x08a2, 0x08b4, 0x08c4, 0x08d0, 0x08e1, 0x08f3, - 0x0926, 0x092e, 0x0936, 0x0946, 0x0952, 0x095e, 0x096a, 0x097a, - 0x0986, 0x0990, 0x09a6, 0x09b6, 0x09c6, 0x09e1, 0x0a02, 0x0a1b, - // Entry 80 - BF - 0x0a34, 0x0a40, 0x0a5d, 0x0a71, 0x0a79, 0x0a83, 0x0a96, 0x0aac, - 0x0abd, 0x0acb, 0x0ad7, 0x0ae1, 0x0af5, 0x0b01, 0x0b0b, 0x0b19, - 0x0b25, 0x0b33, 0x0b47, 0x0b5c, 0x0b70, 0x0b8d, 0x0b9f, 0x0ba7, - 0x0bc0, 0x0bd4, 0x0bf0, 0x0c20, 0x0c32, 0x0c46, 0x0c5a, 0x0c66, - 0x0c76, 0x0c95, 0x0ca1, 0x0caf, 0x0cbf, 0x0ccf, 0x0cdd, 0x0cf8, - 0x0d02, 0x0d21, 0x0d2f, 0x0d41, 0x0d57, 0x0d67, 0x0d71, 0x0d7b, - 0x0d83, 0x0d9c, 0x0da6, 0x0db2, 0x0dba, 0x0ddf, 0x0dff, 0x0e0f, - 0x0e1f, 0x0e2b, 0x0e50, 0x0e71, 0x0e86, 0x0ea3, 0x0eb7, 0x0ec1, - // Entry C0 - FF - 0x0ed1, 0x0edb, 0x0ef4, 0x0f02, 0x0f10, 0x0f1c, 0x0f28, 0x0f34, - 0x0f55, 0x0f74, 0x0f91, 0x0f9b, 0x0fa7, 0x0fb7, 0x0fe3, 0x0ff3, - 0x101a, 0x102a, 0x1041, 0x1054, 0x1062, 0x106e, 0x107c, 0x1095, - 0x10ba, 0x10d3, 0x10ea, 0x10f4, 0x1106, 0x1122, 0x114f, 0x1155, - 0x1185, 0x118d, 0x119b, 0x11af, 0x11bd, 0x11d4, 0x11ec, 0x11f6, - 0x1200, 0x120c, 0x122e, 0x123a, 0x1246, 0x1256, 0x1264, 0x1270, - 0x1292, 0x12ab, 0x12b9, 0x12cd, 0x12db, 0x1308, 0x131a, 0x134e, - 0x1378, 0x1386, 0x1394, 0x13b2, 0x13bc, 0x13c8, 0x13d0, 0x13de, - // Entry 100 - 13F - 0x13f9, 0x1405, 0x1415, 0x1434, 0x143c, 0x1448, 0x1465, 0x1482, - 0x1490, 0x14a9, 0x14c8, 0x14e1, 0x14fc, 0x1519, 0x1532, 0x1540, - 0x155b, 0x1574, 0x1589, 0x15a0, 0x15c4, 0x15df, 0x15f5, 0x1607, - 0x162e, 0x1640, 0x1648, 0x1661, 0x1676, 0x1682, 0x169b, 0x16b6, - 0x16cf, 0x16ec, + "Меърож оролиАндорраБирлашган Араб АмирликлариАфғонистонАнтигуа ва Барбуд" + + "аАнгиляАлбанияАрманистонАнголаАнтарктидаАргентинаАмерика СамоасиАвс" + + "трияАвстралияАрубаАланд ороллариОзарбайжонБосния ва ГерцеговинаБарб" + + "адосБангладешБельгияБуркина-ФасоБолгарияБаҳрайнБурундиБенинСен-Барт" + + "елемиБермудаБрунейБоливияБонейр, Синт-Эстатиус ва СабаБразилияБагам" + + "а ороллариБутанБуве оролиБотсваннаБелорусияБелизКанадаКокос (Килинг" + + ") ороллариКонго-КиншасаМарказий Африка РеспубликасиКонго БраззавильШ" + + "вейцарияКот-д’ИвуарКук ороллариЧилиКамерунХитойКолумбияКлиппертон о" + + "ролиКоста-РикаКубаКабо-ВердеКюрасаоРождество оролиКипрЧехияГермания" + + "Диего-ГарсияЖибутиДанияДоминикаДоминикан РеспубликасиЖазоирСэута ва" + + " МелиллаЭквадорЭстонияМисрҒарбий Саҳрои КабирЭритреяИспанияЭфиопияЕв" + + "ропа ИттифоқиФинляндияФижиФолкленд ороллариМикронезияФарер ороллари" + + "ФранцияГабонБуюк БританияГренадаГрузияФранцуз ГвианасиГернсиГанаГиб" + + "ралтарГренландияГамбияГвинеяГваделупеЭкваториал ГвинеяГрецияЖанубий" + + " Георгия ва Жанубий Сендвич ороллариГватемалаГуамГвинея-БисауГаянаГо" + + "нконг (Хитой ММҲ)Херд ва Макдоналд ороллариГондурасХорватияГаитиВен" + + "грияКанар ороллариИндонезияИрландияИсроилМэн оролиҲиндистонБритания" + + "нинг Ҳинд океанидаги ҳудудиИроқЭронИсландияИталияЖерсиЯмайкаИордани" + + "яЯпонияКенияҚирғизистонКамбоджаКирибатиКомор ороллариСент-Китс ва Н" + + "евисШимолий КореяЖанубий КореяҚувайтКайман ороллариҚозоғистонЛаосЛи" + + "ванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвия" + + "ЛивияМарокашМонакоМолдоваЧерногорияСент-МартинМадагаскарМаршал орол" + + "лариМакедонияМалиМьянма (Бирма)МонголияМакао (Хитой ММҲ)Шимолий Мар" + + "ианна ороллариМартиникаМавританияМонтсерратМальтаМаврикийМальдив ор" + + "оллариМалавиМексикаМалайзияМозамбикНамибияЯнги КаледонияНигерНорфол" + + "к ороллариНигерияНикарагуаНидерландияНорвегияНепалНауруНиуэЯнги Зел" + + "андияУммонПанамаПеруФранцуз ПолинезиясиПапуа - Янги ГвинеяФилиппинП" + + "окистонПольшаСент-Пьер ва МикелонПиткэрн ороллариПуэрто-РикоФаласти" + + "н ҳудудиПортугалияПалауПарагвайҚатарЁндош ОкеанияРеюнионРуминияСерб" + + "ияРоссияРуандаСаудия АрабистониСоломон ороллариСейшел ороллариСудан" + + "ШвецияСингапурМуқаддас Елена оролиСловенияСвалбард ва Ян-МайенСлова" + + "кияСьерра-ЛеонеСан-МариноСенегалСомалиСуринамЖанубий СуданСан-Томе " + + "ва ПринсипиСалвадорСинт-МартенСурияСвазилендТристан-да-КуняТуркс ва" + + " Кайкос ороллариЧадФранцуз жанубий худудлариТогоТаиландТожикистонТок" + + "елауТимор-ЛестеТуркманистонТунисТонгаТуркияТринидад ва ТобагоТувалу" + + "ТайванТанзанияУкраинаУгандаАҚШ ёндош ороллариАмерика Қўшма Штатлари" + + "УругвайЎзбекистонВатиканСент-Винсент ва ГренадинВенесуэлаБртания Ви" + + "ргин ороллариАҚШ Виргин ороллариВьетнамВануатуУоллис ва ФутунаСамоа" + + "КосовоЯманМайоттаЖанубий Африка РеспубликасиЗамбияЗимбабвеНомаълум " + + "минтақаДунёАфрикаШимолий АмерикаЖанубий АмерикаОкеанияҒарбий Африка" + + "Марказий АмерикаШарқий АфрикаШимолий АфрикаМарказий АфрикаЖануби-Аф" + + "рикаАмерикаШимоли-АмерикаКариб ҳавзасиШарқий ОсиёЖанубий ОсиёЖануби" + + "й-Шарқий ОсиёЖанубий ЕвропаАвстралазияМеланезияМикронезия минтақаси" + + "ПолинезияОсиёМарказий ОсиёҒарбий ОсиёЕвропаШарқий ЕвропаШимолий Евр" + + "опаҒарбий ЕвропаЛотин Америкаси", + []uint16{ // 292 elements + // Entry 0 - 3F + 0x0000, 0x0017, 0x0025, 0x0057, 0x006b, 0x008d, 0x0099, 0x00a7, + 0x00bb, 0x00c7, 0x00db, 0x00ed, 0x010a, 0x0118, 0x012a, 0x0134, + 0x014f, 0x0163, 0x018b, 0x019b, 0x01ad, 0x01bb, 0x01d2, 0x01e2, + 0x01f0, 0x01fe, 0x0208, 0x0221, 0x022f, 0x023b, 0x0249, 0x027e, + 0x028e, 0x02ab, 0x02b5, 0x02c8, 0x02da, 0x02ec, 0x02f6, 0x0302, + 0x032c, 0x0345, 0x037b, 0x039a, 0x03ac, 0x03c2, 0x03d9, 0x03e1, + 0x03ef, 0x03f9, 0x0409, 0x0428, 0x043b, 0x0443, 0x0456, 0x0464, + 0x0481, 0x0489, 0x0493, 0x04a3, 0x04ba, 0x04c6, 0x04d0, 0x04e0, + // Entry 40 - 7F + 0x050b, 0x0517, 0x0535, 0x0543, 0x0551, 0x0559, 0x057d, 0x058b, + 0x0599, 0x05a7, 0x05c4, 0x05c4, 0x05d6, 0x05de, 0x05ff, 0x0613, + 0x062e, 0x063c, 0x0646, 0x065f, 0x066d, 0x0679, 0x0698, 0x06a4, + 0x06ac, 0x06be, 0x06d2, 0x06de, 0x06ea, 0x06fc, 0x071d, 0x0729, + 0x077a, 0x078c, 0x0794, 0x07ab, 0x07b5, 0x07d7, 0x0808, 0x0818, + 0x0828, 0x0832, 0x0840, 0x085b, 0x086d, 0x087d, 0x0889, 0x089a, + 0x08ac, 0x08ef, 0x08f7, 0x08ff, 0x090f, 0x091b, 0x0925, 0x0931, + 0x0941, 0x094d, 0x0957, 0x096d, 0x097d, 0x098d, 0x09a8, 0x09c9, + // Entry 80 - BF + 0x09e2, 0x09fb, 0x0a07, 0x0a24, 0x0a38, 0x0a40, 0x0a4a, 0x0a5d, + 0x0a73, 0x0a84, 0x0a92, 0x0a9e, 0x0aa8, 0x0abc, 0x0ac8, 0x0ad2, + 0x0ae0, 0x0aec, 0x0afa, 0x0b0e, 0x0b23, 0x0b37, 0x0b54, 0x0b66, + 0x0b6e, 0x0b87, 0x0b97, 0x0bb5, 0x0be5, 0x0bf7, 0x0c0b, 0x0c1f, + 0x0c2b, 0x0c3b, 0x0c5a, 0x0c66, 0x0c74, 0x0c84, 0x0c94, 0x0ca2, + 0x0cbd, 0x0cc7, 0x0ce6, 0x0cf4, 0x0d06, 0x0d1c, 0x0d2c, 0x0d36, + 0x0d40, 0x0d48, 0x0d61, 0x0d6b, 0x0d77, 0x0d7f, 0x0da4, 0x0dc6, + 0x0dd6, 0x0de6, 0x0df2, 0x0e17, 0x0e36, 0x0e4b, 0x0e68, 0x0e7c, + // Entry C0 - FF + 0x0e86, 0x0e96, 0x0ea0, 0x0eb9, 0x0ec7, 0x0ed5, 0x0ee1, 0x0eed, + 0x0ef9, 0x0f1a, 0x0f39, 0x0f56, 0x0f60, 0x0f6c, 0x0f7c, 0x0fa2, + 0x0fb2, 0x0fd7, 0x0fe7, 0x0ffe, 0x1011, 0x101f, 0x102b, 0x1039, + 0x1052, 0x1077, 0x1087, 0x109c, 0x10a6, 0x10b8, 0x10d4, 0x1101, + 0x1107, 0x1137, 0x113f, 0x114d, 0x1161, 0x116f, 0x1184, 0x119c, + 0x11a6, 0x11b0, 0x11bc, 0x11de, 0x11ea, 0x11f6, 0x1206, 0x1214, + 0x1220, 0x1242, 0x1242, 0x126c, 0x127a, 0x128e, 0x129c, 0x12c9, + 0x12db, 0x1307, 0x132b, 0x1339, 0x1347, 0x1365, 0x136f, 0x137b, + // Entry 100 - 13F + 0x1383, 0x1391, 0x13c5, 0x13d1, 0x13e1, 0x1400, 0x1408, 0x1414, + 0x1431, 0x144e, 0x145c, 0x1475, 0x1494, 0x14ad, 0x14c8, 0x14e5, + 0x14fe, 0x150c, 0x1527, 0x1540, 0x1555, 0x156c, 0x1590, 0x15ab, + 0x15c1, 0x15d3, 0x15fa, 0x160c, 0x1614, 0x162d, 0x1642, 0x164e, + 0x1667, 0x1682, 0x169b, 0x16b8, }, }, { // vai @@ -37427,7 +42477,7 @@ var regionHeaders = [220]header{ " ꖨꕮꕊꕚꕀꕃꔻꕚꘋꕿꔞꖃꔎꔒ ꗃ ꔳꗞꖻꗋꖺꕃꕮꕇꔻꕚꘋꖤꕇꔻꕩꗋꕬꗋꖺꕃꖤꔸꔕꕜ ꗪ ꕿꔆꖑꕚꖣꖨꕚꔤꕎꘋꕚꘋꕤꕇꕰꖳꖴꔓꘋꖳꕭꕡꕶ" + "ꕱꖳꔓꗝꔀꖳꗩꕃꔻꕚꘋꔻꘋ ꔲꘋꔻꘋ ꗪ ꖶꔓꕯꔵꘋ ꖸꕙꔳꕪꘋ ꕸꖃꔀꔛꔟꔻ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣꕶꕱ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣꗲ" + "ꕇꖮꔃꕞꕙꖸꕎꖤꕎꔷꔻ ꗪ ꖢꖤꕯꕢꕹꖙꕉꔝꘈꘋꕮꗚꔎꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕸꖃꔀꕤꔭꕩꔽꕓꖜꔃ", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0009, 0x002c, 0x0041, 0x005e, 0x0067, 0x0076, 0x007f, 0x0088, 0x0088, 0x0097, 0x00a7, 0x00b3, 0x00c5, 0x00ce, @@ -37439,33 +42489,33 @@ var regionHeaders = [220]header{ 0x0295, 0x02a4, 0x02b4, 0x02bd, 0x02bd, 0x02c6, 0x02d2, 0x02de, // Entry 40 - 7F 0x02f7, 0x0306, 0x0306, 0x0312, 0x0321, 0x032a, 0x032a, 0x0336, - 0x033f, 0x034e, 0x034e, 0x035e, 0x0367, 0x0381, 0x0390, 0x0390, - 0x039c, 0x03a5, 0x03b1, 0x03bd, 0x03c9, 0x03dc, 0x03dc, 0x03e5, - 0x03f1, 0x0408, 0x0411, 0x041a, 0x0429, 0x0440, 0x0449, 0x0449, - 0x0458, 0x0461, 0x0474, 0x047d, 0x047d, 0x047d, 0x0486, 0x0492, - 0x049b, 0x04a7, 0x04a7, 0x04b6, 0x04c6, 0x04d8, 0x04d8, 0x04e1, - 0x050c, 0x0515, 0x051e, 0x0531, 0x053a, 0x053a, 0x0546, 0x0552, - 0x055b, 0x0561, 0x0570, 0x057c, 0x0588, 0x0594, 0x05b2, 0x05cc, - // Entry 80 - BF - 0x05ea, 0x05f3, 0x0609, 0x0618, 0x0621, 0x062d, 0x063d, 0x064f, - 0x065f, 0x066b, 0x0674, 0x0683, 0x0692, 0x069e, 0x06a7, 0x06b0, - 0x06b9, 0x06c5, 0x06c5, 0x06c5, 0x06d4, 0x06e7, 0x06f6, 0x06fc, - 0x0708, 0x0714, 0x0714, 0x073b, 0x0747, 0x0756, 0x0765, 0x076e, - 0x0777, 0x0783, 0x078f, 0x0798, 0x07a4, 0x07b0, 0x07bc, 0x07d5, - 0x07de, 0x07f1, 0x0800, 0x080f, 0x081f, 0x0828, 0x0831, 0x0837, - 0x0840, 0x0857, 0x0860, 0x0869, 0x0872, 0x088b, 0x08a8, 0x08b4, - 0x08c3, 0x08cc, 0x08ea, 0x08f6, 0x0906, 0x0940, 0x0956, 0x095c, - // Entry C0 - FF - 0x0968, 0x0971, 0x0971, 0x097a, 0x0986, 0x0986, 0x0992, 0x099b, - 0x09ae, 0x09ca, 0x09d3, 0x09dc, 0x09e8, 0x09f4, 0x0a04, 0x0a13, - 0x0a13, 0x0a22, 0x0a3c, 0x0a4c, 0x0a58, 0x0a64, 0x0a70, 0x0a70, - 0x0a96, 0x0aa9, 0x0aa9, 0x0ab2, 0x0ac5, 0x0ac5, 0x0aec, 0x0af2, - 0x0af2, 0x0af8, 0x0b08, 0x0b1a, 0x0b23, 0x0b37, 0x0b4f, 0x0b5b, - 0x0b61, 0x0b6a, 0x0b84, 0x0b8d, 0x0b99, 0x0ba8, 0x0bb4, 0x0bbd, - 0x0bbd, 0x0bc3, 0x0bcf, 0x0be1, 0x0be1, 0x0c0c, 0x0c22, 0x0c47, - 0x0c69, 0x0c78, 0x0c84, 0x0c9b, 0x0ca7, 0x0ca7, 0x0cb0, 0x0cb9, - // Entry 100 - 13F - 0x0ce4, 0x0ced, 0x0cf9, + 0x033f, 0x034e, 0x034e, 0x034e, 0x035e, 0x0367, 0x0381, 0x0390, + 0x0390, 0x039c, 0x03a5, 0x03b1, 0x03bd, 0x03c9, 0x03dc, 0x03dc, + 0x03e5, 0x03f1, 0x0408, 0x0411, 0x041a, 0x0429, 0x0440, 0x0449, + 0x0449, 0x0458, 0x0461, 0x0474, 0x047d, 0x047d, 0x047d, 0x0486, + 0x0492, 0x049b, 0x04a7, 0x04a7, 0x04b6, 0x04c6, 0x04d8, 0x04d8, + 0x04e1, 0x050c, 0x0515, 0x051e, 0x0531, 0x053a, 0x053a, 0x0546, + 0x0552, 0x055b, 0x0561, 0x0570, 0x057c, 0x0588, 0x0594, 0x05b2, + // Entry 80 - BF + 0x05cc, 0x05ea, 0x05f3, 0x0609, 0x0618, 0x0621, 0x062d, 0x063d, + 0x064f, 0x065f, 0x066b, 0x0674, 0x0683, 0x0692, 0x069e, 0x06a7, + 0x06b0, 0x06b9, 0x06c5, 0x06c5, 0x06c5, 0x06d4, 0x06e7, 0x06f6, + 0x06fc, 0x0708, 0x0714, 0x0714, 0x073b, 0x0747, 0x0756, 0x0765, + 0x076e, 0x0777, 0x0783, 0x078f, 0x0798, 0x07a4, 0x07b0, 0x07bc, + 0x07d5, 0x07de, 0x07f1, 0x0800, 0x080f, 0x081f, 0x0828, 0x0831, + 0x0837, 0x0840, 0x0857, 0x0860, 0x0869, 0x0872, 0x088b, 0x08a8, + 0x08b4, 0x08c3, 0x08cc, 0x08ea, 0x08f6, 0x0906, 0x0940, 0x0956, + // Entry C0 - FF + 0x095c, 0x0968, 0x0971, 0x0971, 0x097a, 0x0986, 0x0986, 0x0992, + 0x099b, 0x09ae, 0x09ca, 0x09d3, 0x09dc, 0x09e8, 0x09f4, 0x0a04, + 0x0a13, 0x0a13, 0x0a22, 0x0a3c, 0x0a4c, 0x0a58, 0x0a64, 0x0a70, + 0x0a70, 0x0a96, 0x0aa9, 0x0aa9, 0x0ab2, 0x0ac5, 0x0ac5, 0x0aec, + 0x0af2, 0x0af2, 0x0af8, 0x0b08, 0x0b1a, 0x0b23, 0x0b37, 0x0b4f, + 0x0b5b, 0x0b61, 0x0b6a, 0x0b84, 0x0b8d, 0x0b99, 0x0ba8, 0x0bb4, + 0x0bbd, 0x0bbd, 0x0bbd, 0x0bc3, 0x0bcf, 0x0be1, 0x0be1, 0x0c0c, + 0x0c22, 0x0c47, 0x0c69, 0x0c78, 0x0c84, 0x0c9b, 0x0ca7, 0x0ca7, + // Entry 100 - 13F + 0x0cb0, 0x0cb9, 0x0ce4, 0x0ced, 0x0cf9, }, }, { // vai-Latn @@ -37500,7 +42550,7 @@ var regionHeaders = [220]header{ "aŋVatikaŋ ƁoloeSiŋ ViŋsiVɛnɛzuwelaJengéesi Bhɛɛ Lɔ Musu TiŋŋɛPoo Bhɛ" + "ɛ lɔ Musu TiŋŋɛViyanamiVanuwátuWalísiSamowaYemɛniMavoteAfirika Kɔi " + "Leŋŋɛ LɔZambiyaZimbabhuwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0008, 0x001e, 0x002d, 0x0041, 0x0049, 0x0051, 0x0059, 0x0061, 0x0061, 0x006c, 0x0077, 0x0081, 0x008f, 0x0095, @@ -37512,33 +42562,33 @@ var regionHeaders = [220]header{ 0x01e6, 0x01ef, 0x01fb, 0x0202, 0x0202, 0x0209, 0x0211, 0x021c, // Entry 40 - 7F 0x022e, 0x0235, 0x0235, 0x0242, 0x024e, 0x0256, 0x0256, 0x025e, - 0x0266, 0x0271, 0x0271, 0x027a, 0x027f, 0x0295, 0x029f, 0x029f, - 0x02a6, 0x02ae, 0x02c1, 0x02ca, 0x02d3, 0x02e1, 0x02e1, 0x02e5, - 0x02ee, 0x02ff, 0x0306, 0x030a, 0x0314, 0x0327, 0x032f, 0x032f, - 0x033a, 0x0340, 0x034c, 0x0352, 0x0352, 0x0352, 0x035a, 0x0362, - 0x0368, 0x0372, 0x0372, 0x037d, 0x0388, 0x0396, 0x0396, 0x039d, - 0x03c1, 0x03c6, 0x03cb, 0x03d7, 0x03dd, 0x03dd, 0x03e4, 0x03ed, - 0x03f3, 0x03f9, 0x0403, 0x040e, 0x0417, 0x041f, 0x0436, 0x044a, - // Entry 80 - BF - 0x0462, 0x0468, 0x0478, 0x0482, 0x0488, 0x0490, 0x049b, 0x049b, - 0x04a6, 0x04ae, 0x04b5, 0x04c0, 0x04c8, 0x04d0, 0x04d7, 0x04de, - 0x04e5, 0x04ee, 0x04ee, 0x04ee, 0x04f8, 0x0506, 0x0511, 0x0515, - 0x051d, 0x0527, 0x0527, 0x0546, 0x054e, 0x055a, 0x0563, 0x0569, - 0x0572, 0x057a, 0x0580, 0x0588, 0x0590, 0x0599, 0x05a1, 0x05b4, - 0x05ba, 0x05c9, 0x05d3, 0x05dd, 0x05e7, 0x05ee, 0x05f2, 0x05f6, - 0x05fa, 0x0609, 0x060e, 0x0614, 0x0619, 0x062c, 0x063f, 0x0648, - 0x0652, 0x065a, 0x0676, 0x067f, 0x068a, 0x06b5, 0x06bd, 0x06c1, - // Entry C0 - FF - 0x06c9, 0x06cf, 0x06cf, 0x06d9, 0x06e2, 0x06e2, 0x06ea, 0x06f1, - 0x06f7, 0x070b, 0x0713, 0x071a, 0x0723, 0x072d, 0x0739, 0x0744, - 0x0744, 0x074e, 0x075b, 0x0767, 0x076f, 0x0777, 0x0780, 0x0780, - 0x0798, 0x07a7, 0x07a7, 0x07ae, 0x07bb, 0x07bb, 0x07db, 0x07e1, - 0x07e1, 0x07e5, 0x07ef, 0x07fb, 0x0801, 0x0816, 0x0825, 0x082d, - 0x0833, 0x083e, 0x0856, 0x085d, 0x0864, 0x086f, 0x0878, 0x087f, - 0x087f, 0x0882, 0x088b, 0x0899, 0x08a8, 0x08b3, 0x08bf, 0x08e1, - 0x08fd, 0x0905, 0x090e, 0x0915, 0x091b, 0x091b, 0x0922, 0x0928, - // Entry 100 - 13F - 0x0941, 0x0948, 0x0952, + 0x0266, 0x0271, 0x0271, 0x0271, 0x027a, 0x027f, 0x0295, 0x029f, + 0x029f, 0x02a6, 0x02ae, 0x02c1, 0x02ca, 0x02d3, 0x02e1, 0x02e1, + 0x02e5, 0x02ee, 0x02ff, 0x0306, 0x030a, 0x0314, 0x0327, 0x032f, + 0x032f, 0x033a, 0x0340, 0x034c, 0x0352, 0x0352, 0x0352, 0x035a, + 0x0362, 0x0368, 0x0372, 0x0372, 0x037d, 0x0388, 0x0396, 0x0396, + 0x039d, 0x03c1, 0x03c6, 0x03cb, 0x03d7, 0x03dd, 0x03dd, 0x03e4, + 0x03ed, 0x03f3, 0x03f9, 0x0403, 0x040e, 0x0417, 0x041f, 0x0436, + // Entry 80 - BF + 0x044a, 0x0462, 0x0468, 0x0478, 0x0482, 0x0488, 0x0490, 0x049b, + 0x049b, 0x04a6, 0x04ae, 0x04b5, 0x04c0, 0x04c8, 0x04d0, 0x04d7, + 0x04de, 0x04e5, 0x04ee, 0x04ee, 0x04ee, 0x04f8, 0x0506, 0x0511, + 0x0515, 0x051d, 0x0527, 0x0527, 0x0546, 0x054e, 0x055a, 0x0563, + 0x0569, 0x0572, 0x057a, 0x0580, 0x0588, 0x0590, 0x0599, 0x05a1, + 0x05b4, 0x05ba, 0x05c9, 0x05d3, 0x05dd, 0x05e7, 0x05ee, 0x05f2, + 0x05f6, 0x05fa, 0x0609, 0x060e, 0x0614, 0x0619, 0x062c, 0x063f, + 0x0648, 0x0652, 0x065a, 0x0676, 0x067f, 0x068a, 0x06b5, 0x06bd, + // Entry C0 - FF + 0x06c1, 0x06c9, 0x06cf, 0x06cf, 0x06d9, 0x06e2, 0x06e2, 0x06ea, + 0x06f1, 0x06f7, 0x070b, 0x0713, 0x071a, 0x0723, 0x072d, 0x0739, + 0x0744, 0x0744, 0x074e, 0x075b, 0x0767, 0x076f, 0x0777, 0x0780, + 0x0780, 0x0798, 0x07a7, 0x07a7, 0x07ae, 0x07bb, 0x07bb, 0x07db, + 0x07e1, 0x07e1, 0x07e5, 0x07ef, 0x07fb, 0x0801, 0x0816, 0x0825, + 0x082d, 0x0833, 0x083e, 0x0856, 0x085d, 0x0864, 0x086f, 0x0878, + 0x087f, 0x087f, 0x087f, 0x0882, 0x088b, 0x0899, 0x08a8, 0x08b3, + 0x08bf, 0x08e1, 0x08fd, 0x0905, 0x090e, 0x0915, 0x091b, 0x091b, + // Entry 100 - 13F + 0x0922, 0x0928, 0x0941, 0x0948, 0x0952, }, }, { // vi @@ -37577,7 +42627,7 @@ var regionHeaders = [220]header{ "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, @@ -37589,33 +42639,33 @@ var regionHeaders = [220]header{ 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, // Entry 40 - 7F 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, 0x0247, - 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, 0x0282, - 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, 0x02b6, - 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, 0x02e2, - 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, 0x030c, - 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, 0x0358, - 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, 0x03a8, - // Entry 80 - BF - 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, 0x03f8, - 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, 0x0431, - 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, 0x0463, - 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, 0x04b2, - 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, 0x04ed, - 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, 0x052c, - 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, 0x056b, - 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, 0x05df, - // Entry C0 - FF - 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, 0x0608, - 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, 0x0650, - 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, 0x0682, - 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, 0x06c7, - 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, 0x070e, - 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, 0x074e, - 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793, 0x07b2, - 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x0801, - // Entry 100 - 13F - 0x080e, 0x0814, 0x081c, + 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, + 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, + 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, + 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, + 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, + 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, + 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, + // Entry 80 - BF + 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, + 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, + 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, + 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, + 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, + 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, + 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, + 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, + // Entry C0 - FF + 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, + 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, + 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, + 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, + 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, + 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, + 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, + 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, + // Entry 100 - 13F + 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, }, }, { // wae @@ -37660,7 +42710,7 @@ var regionHeaders = [220]header{ "üdoštasieSüdeuropaAuštralie und NiwsélandMelanesieMikronesišes Inse" + "lgebietPolinesieAsieZentralasieWeštasieEuropaOšteuropaNordeuropaWešt" + "europaLatíamerika", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0011, 0x0018, 0x0032, 0x003d, 0x0050, 0x0058, 0x005f, 0x0066, 0x006c, 0x0075, 0x007f, 0x0090, 0x0099, 0x00a2, 0x00a7, @@ -37672,37 +42722,37 @@ var regionHeaders = [220]header{ 0x0233, 0x0238, 0x0240, 0x0249, 0x0255, 0x025d, 0x0266, 0x026e, // Entry 40 - 7F 0x0284, 0x028b, 0x029c, 0x02a3, 0x02ab, 0x02b1, 0x02bc, 0x02c3, - 0x02cb, 0x02d3, 0x02e3, 0x02eb, 0x02f1, 0x02ff, 0x0309, 0x0310, - 0x0319, 0x031e, 0x0325, 0x032c, 0x0333, 0x0345, 0x034d, 0x0351, - 0x035a, 0x0363, 0x0369, 0x036e, 0x0378, 0x0387, 0x0391, 0x03bc, - 0x03c5, 0x03c9, 0x03d5, 0x03db, 0x03f8, 0x0412, 0x041a, 0x0421, - 0x0426, 0x042c, 0x043c, 0x0445, 0x044b, 0x0451, 0x045c, 0x0461, - 0x0487, 0x048b, 0x048f, 0x0495, 0x049b, 0x04a1, 0x04a8, 0x04b0, - 0x04b5, 0x04ba, 0x04c4, 0x04cd, 0x04d5, 0x04db, 0x04ee, 0x04f7, - // Entry 80 - BF - 0x0500, 0x0506, 0x0512, 0x051c, 0x0520, 0x0527, 0x0530, 0x053c, - 0x0545, 0x054c, 0x0553, 0x0559, 0x0561, 0x0569, 0x056f, 0x0575, - 0x057b, 0x0581, 0x058b, 0x0595, 0x059f, 0x05ac, 0x05b5, 0x05b9, - 0x05be, 0x05c6, 0x05e0, 0x05f2, 0x05fc, 0x0606, 0x060f, 0x0614, - 0x061d, 0x0625, 0x062b, 0x0631, 0x0639, 0x0641, 0x0648, 0x0654, - 0x0659, 0x0665, 0x066c, 0x0675, 0x067b, 0x0683, 0x0688, 0x068d, - 0x0691, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06cc, 0x06d6, - 0x06df, 0x06e3, 0x06fa, 0x0702, 0x070d, 0x0717, 0x071f, 0x0724, - // Entry C0 - FF - 0x072c, 0x0731, 0x0740, 0x0748, 0x0750, 0x0756, 0x075e, 0x0764, - 0x0770, 0x0778, 0x0780, 0x0785, 0x078c, 0x0794, 0x079e, 0x07a6, - 0x07bc, 0x07c4, 0x07d0, 0x07da, 0x07e1, 0x07e8, 0x07f0, 0x07f0, - 0x0808, 0x0813, 0x0813, 0x0819, 0x0822, 0x0832, 0x0849, 0x084e, - 0x0874, 0x0878, 0x0880, 0x088c, 0x0893, 0x089c, 0x08a9, 0x08b0, - 0x08b5, 0x08bc, 0x08cf, 0x08d5, 0x08db, 0x08e3, 0x08ea, 0x08f0, - 0x0903, 0x090a, 0x0911, 0x091c, 0x0923, 0x0940, 0x0949, 0x0962, - 0x097f, 0x0986, 0x098d, 0x099e, 0x09a3, 0x09a3, 0x09a8, 0x09af, - // Entry 100 - 13F - 0x09b9, 0x09bf, 0x09c7, 0x09d7, 0x09dc, 0x09e2, 0x09ed, 0x09f8, - 0x09ff, 0x0a0a, 0x0a18, 0x0a22, 0x0a2c, 0x0a38, 0x0a48, 0x0a5e, - 0x0a70, 0x0a77, 0x0a7f, 0x0a87, 0x0a93, 0x0a9d, 0x0ab6, 0x0abf, - 0x0ad8, 0x0ae1, 0x0ae5, 0x0af0, 0x0af9, 0x0aff, 0x0b09, 0x0b13, - 0x0b1e, 0x0b2a, + 0x02cb, 0x02d3, 0x02e3, 0x02e3, 0x02eb, 0x02f1, 0x02ff, 0x0309, + 0x0310, 0x0319, 0x031e, 0x0325, 0x032c, 0x0333, 0x0345, 0x034d, + 0x0351, 0x035a, 0x0363, 0x0369, 0x036e, 0x0378, 0x0387, 0x0391, + 0x03bc, 0x03c5, 0x03c9, 0x03d5, 0x03db, 0x03f8, 0x0412, 0x041a, + 0x0421, 0x0426, 0x042c, 0x043c, 0x0445, 0x044b, 0x0451, 0x045c, + 0x0461, 0x0487, 0x048b, 0x048f, 0x0495, 0x049b, 0x04a1, 0x04a8, + 0x04b0, 0x04b5, 0x04ba, 0x04c4, 0x04cd, 0x04d5, 0x04db, 0x04ee, + // Entry 80 - BF + 0x04f7, 0x0500, 0x0506, 0x0512, 0x051c, 0x0520, 0x0527, 0x0530, + 0x053c, 0x0545, 0x054c, 0x0553, 0x0559, 0x0561, 0x0569, 0x056f, + 0x0575, 0x057b, 0x0581, 0x058b, 0x0595, 0x059f, 0x05ac, 0x05b5, + 0x05b9, 0x05be, 0x05c6, 0x05e0, 0x05f2, 0x05fc, 0x0606, 0x060f, + 0x0614, 0x061d, 0x0625, 0x062b, 0x0631, 0x0639, 0x0641, 0x0648, + 0x0654, 0x0659, 0x0665, 0x066c, 0x0675, 0x067b, 0x0683, 0x0688, + 0x068d, 0x0691, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06cc, + 0x06d6, 0x06df, 0x06e3, 0x06fa, 0x0702, 0x070d, 0x0717, 0x071f, + // Entry C0 - FF + 0x0724, 0x072c, 0x0731, 0x0740, 0x0748, 0x0750, 0x0756, 0x075e, + 0x0764, 0x0770, 0x0778, 0x0780, 0x0785, 0x078c, 0x0794, 0x079e, + 0x07a6, 0x07bc, 0x07c4, 0x07d0, 0x07da, 0x07e1, 0x07e8, 0x07f0, + 0x07f0, 0x0808, 0x0813, 0x0813, 0x0819, 0x0822, 0x0832, 0x0849, + 0x084e, 0x0874, 0x0878, 0x0880, 0x088c, 0x0893, 0x089c, 0x08a9, + 0x08b0, 0x08b5, 0x08bc, 0x08cf, 0x08d5, 0x08db, 0x08e3, 0x08ea, + 0x08f0, 0x0903, 0x0903, 0x090a, 0x0911, 0x091c, 0x0923, 0x0940, + 0x0949, 0x0962, 0x097f, 0x0986, 0x098d, 0x099e, 0x09a3, 0x09a3, + // Entry 100 - 13F + 0x09a8, 0x09af, 0x09b9, 0x09bf, 0x09c7, 0x09d7, 0x09dc, 0x09e2, + 0x09ed, 0x09f8, 0x09ff, 0x0a0a, 0x0a18, 0x0a22, 0x0a2c, 0x0a38, + 0x0a48, 0x0a5e, 0x0a70, 0x0a77, 0x0a7f, 0x0a87, 0x0a93, 0x0a9d, + 0x0ab6, 0x0abf, 0x0ad8, 0x0ae1, 0x0ae5, 0x0af0, 0x0af9, 0x0aff, + 0x0b09, 0x0b13, 0x0b1e, 0x0b2a, }, }, { // xog @@ -37740,7 +42790,7 @@ var regionHeaders = [220]header{ "enti Vinsenti ni GurendadiiniVenzweraEbizinga bya Virigini ebitwalib" + "wa BungerezaEbizinga bya Virigini eby’AmerikaVyetinaamuVanawuwatuWal" + "isi ni FutunaSamowaYemeniMayotteSawusafirikaZambyaZimbabwe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e, 0x0047, 0x004d, 0x004d, 0x0057, 0x0067, 0x0072, 0x007f, 0x0084, @@ -37752,33 +42802,33 @@ var regionHeaders = [220]header{ 0x01d3, 0x01db, 0x01ee, 0x01f5, 0x01f5, 0x01fc, 0x0205, 0x020d, // Entry 40 - 7F 0x0223, 0x022b, 0x022b, 0x0231, 0x023a, 0x0240, 0x0240, 0x0249, - 0x0251, 0x0258, 0x0258, 0x0261, 0x0265, 0x027e, 0x0289, 0x0289, - 0x0292, 0x0298, 0x02a1, 0x02a9, 0x02af, 0x02bf, 0x02bf, 0x02c3, - 0x02cd, 0x02d8, 0x02de, 0x02e2, 0x02eb, 0x02fd, 0x0306, 0x0306, - 0x030f, 0x0314, 0x031f, 0x0325, 0x0325, 0x0325, 0x032e, 0x0337, - 0x033d, 0x0344, 0x0344, 0x034e, 0x0356, 0x0360, 0x0360, 0x0367, - 0x0378, 0x037f, 0x0386, 0x0390, 0x0396, 0x0396, 0x039e, 0x03a6, - 0x03ac, 0x03b1, 0x03c0, 0x03c8, 0x03d0, 0x03e3, 0x03f9, 0x040d, - // Entry 80 - BF - 0x0425, 0x042b, 0x0441, 0x044e, 0x0454, 0x045c, 0x0468, 0x0477, - 0x0480, 0x0487, 0x048d, 0x0496, 0x04a2, 0x04a9, 0x04ae, 0x04b4, - 0x04ba, 0x04c2, 0x04c2, 0x04c2, 0x04cc, 0x04de, 0x04e8, 0x04ec, - 0x04f3, 0x04fc, 0x04fc, 0x051e, 0x0529, 0x0534, 0x0540, 0x0546, - 0x0551, 0x0566, 0x056c, 0x0574, 0x057b, 0x0585, 0x058d, 0x059c, - 0x05a0, 0x05b6, 0x05bf, 0x05c9, 0x05d0, 0x05d4, 0x05da, 0x05e0, - 0x05e6, 0x05f2, 0x05f8, 0x05fe, 0x0602, 0x0616, 0x0623, 0x0638, - 0x0643, 0x064a, 0x0662, 0x066b, 0x0673, 0x0687, 0x0690, 0x0696, - // Entry C0 - FF - 0x069f, 0x06a4, 0x06a4, 0x06ad, 0x06b5, 0x06b5, 0x06b9, 0x06bf, - 0x06ca, 0x06e0, 0x06e6, 0x06ed, 0x06f4, 0x06fd, 0x0709, 0x0712, - 0x0712, 0x071b, 0x0727, 0x0731, 0x073a, 0x0742, 0x074b, 0x074b, - 0x0760, 0x076b, 0x076b, 0x0771, 0x077b, 0x077b, 0x0799, 0x079e, - 0x079e, 0x07a2, 0x07ab, 0x07b8, 0x07c0, 0x07c6, 0x07d5, 0x07dc, - 0x07e1, 0x07e6, 0x07fa, 0x0800, 0x0808, 0x0808, 0x0812, 0x0819, - 0x0819, 0x0820, 0x0829, 0x0838, 0x0841, 0x085f, 0x0867, 0x0892, - 0x08b5, 0x08bf, 0x08c9, 0x08d9, 0x08df, 0x08df, 0x08e5, 0x08ec, - // Entry 100 - 13F - 0x08f8, 0x08fe, 0x0906, + 0x0251, 0x0258, 0x0258, 0x0258, 0x0261, 0x0265, 0x027e, 0x0289, + 0x0289, 0x0292, 0x0298, 0x02a1, 0x02a9, 0x02af, 0x02bf, 0x02bf, + 0x02c3, 0x02cd, 0x02d8, 0x02de, 0x02e2, 0x02eb, 0x02fd, 0x0306, + 0x0306, 0x030f, 0x0314, 0x031f, 0x0325, 0x0325, 0x0325, 0x032e, + 0x0337, 0x033d, 0x0344, 0x0344, 0x034e, 0x0356, 0x0360, 0x0360, + 0x0367, 0x0378, 0x037f, 0x0386, 0x0390, 0x0396, 0x0396, 0x039e, + 0x03a6, 0x03ac, 0x03b1, 0x03c0, 0x03c8, 0x03d0, 0x03e3, 0x03f9, + // Entry 80 - BF + 0x040d, 0x0425, 0x042b, 0x0441, 0x044e, 0x0454, 0x045c, 0x0468, + 0x0477, 0x0480, 0x0487, 0x048d, 0x0496, 0x04a2, 0x04a9, 0x04ae, + 0x04b4, 0x04ba, 0x04c2, 0x04c2, 0x04c2, 0x04cc, 0x04de, 0x04e8, + 0x04ec, 0x04f3, 0x04fc, 0x04fc, 0x051e, 0x0529, 0x0534, 0x0540, + 0x0546, 0x0551, 0x0566, 0x056c, 0x0574, 0x057b, 0x0585, 0x058d, + 0x059c, 0x05a0, 0x05b6, 0x05bf, 0x05c9, 0x05d0, 0x05d4, 0x05da, + 0x05e0, 0x05e6, 0x05f2, 0x05f8, 0x05fe, 0x0602, 0x0616, 0x0623, + 0x0638, 0x0643, 0x064a, 0x0662, 0x066b, 0x0673, 0x0687, 0x0690, + // Entry C0 - FF + 0x0696, 0x069f, 0x06a4, 0x06a4, 0x06ad, 0x06b5, 0x06b5, 0x06b9, + 0x06bf, 0x06ca, 0x06e0, 0x06e6, 0x06ed, 0x06f4, 0x06fd, 0x0709, + 0x0712, 0x0712, 0x071b, 0x0727, 0x0731, 0x073a, 0x0742, 0x074b, + 0x074b, 0x0760, 0x076b, 0x076b, 0x0771, 0x077b, 0x077b, 0x0799, + 0x079e, 0x079e, 0x07a2, 0x07ab, 0x07b8, 0x07c0, 0x07c6, 0x07d5, + 0x07dc, 0x07e1, 0x07e6, 0x07fa, 0x0800, 0x0808, 0x0808, 0x0812, + 0x0819, 0x0819, 0x0819, 0x0820, 0x0829, 0x0838, 0x0841, 0x085f, + 0x0867, 0x0892, 0x08b5, 0x08bf, 0x08c9, 0x08d9, 0x08df, 0x08df, + // Entry 100 - 13F + 0x08e5, 0x08ec, 0x08f8, 0x08fe, 0x0906, }, }, { // yav @@ -37811,7 +42861,7 @@ var regionHeaders = [220]header{ "kistáaŋfatikáaŋsɛ́ŋ fɛŋsáŋ elekelenatíinfenesuweláFilisíin ungilíspi" + "ndisúlɛ́ pi amálíkafiɛtnáamfanuatúwalíis na futúnasamowáyémɛnmayɔ́ɔt" + "afilí mbátɛ́saambíisimbapuwé", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0008, 0x001b, 0x0027, 0x003b, 0x0043, 0x004a, 0x0052, 0x005a, 0x005a, 0x0064, 0x0075, 0x007c, 0x0084, 0x008a, @@ -37823,33 +42873,33 @@ var regionHeaders = [220]header{ 0x01bd, 0x01c4, 0x01d6, 0x01dd, 0x01dd, 0x01e5, 0x01ee, 0x01f9, // Entry 40 - 7F 0x0212, 0x0219, 0x0219, 0x0223, 0x022a, 0x0231, 0x0231, 0x0238, - 0x023e, 0x0245, 0x0245, 0x024e, 0x0253, 0x025b, 0x0266, 0x0266, - 0x026e, 0x0277, 0x0281, 0x028a, 0x0292, 0x02a4, 0x02a4, 0x02a9, - 0x02b6, 0x02c2, 0x02c9, 0x02cf, 0x02d9, 0x02e8, 0x02f2, 0x02f2, - 0x02fc, 0x0303, 0x030f, 0x0316, 0x0316, 0x0316, 0x031f, 0x0329, - 0x032f, 0x0337, 0x0337, 0x0341, 0x0349, 0x0355, 0x0355, 0x035d, - 0x037b, 0x0380, 0x0386, 0x038e, 0x0394, 0x0394, 0x039d, 0x03a6, - 0x03b1, 0x03b7, 0x03c5, 0x03ce, 0x03d7, 0x03e2, 0x03fd, 0x040f, - // Entry 80 - BF - 0x041e, 0x0425, 0x0430, 0x043c, 0x0442, 0x0449, 0x045a, 0x046c, - 0x0478, 0x0480, 0x0487, 0x0490, 0x049b, 0x04a2, 0x04a8, 0x04af, - 0x04b6, 0x04be, 0x04be, 0x04be, 0x04ca, 0x04d6, 0x04df, 0x04e4, - 0x04ee, 0x04f6, 0x04f6, 0x050e, 0x0518, 0x0521, 0x052b, 0x0534, - 0x053a, 0x0543, 0x054a, 0x0553, 0x055a, 0x0563, 0x056a, 0x057c, - 0x0586, 0x0598, 0x05a0, 0x05a9, 0x05b5, 0x05c1, 0x05c8, 0x05cf, - 0x05d6, 0x05e7, 0x05ed, 0x05f4, 0x05f9, 0x060d, 0x0625, 0x062e, - 0x0638, 0x0644, 0x0660, 0x0673, 0x0680, 0x0696, 0x06a1, 0x06a8, - // Entry C0 - FF - 0x06b1, 0x06b8, 0x06b8, 0x06c5, 0x06cd, 0x06cd, 0x06d3, 0x06dc, - 0x06eb, 0x06f9, 0x0703, 0x070b, 0x0712, 0x071c, 0x0734, 0x073d, - 0x073d, 0x0746, 0x0756, 0x0761, 0x076a, 0x0771, 0x077a, 0x077a, - 0x0793, 0x07a0, 0x07a0, 0x07a0, 0x07ab, 0x07ab, 0x07bc, 0x07c1, - 0x07c1, 0x07c6, 0x07d0, 0x07dd, 0x07e4, 0x07fc, 0x080d, 0x0814, - 0x081d, 0x0825, 0x083c, 0x0843, 0x084c, 0x0855, 0x0860, 0x0867, - 0x0867, 0x0870, 0x0878, 0x0886, 0x0890, 0x08b1, 0x08bc, 0x08ce, - 0x08e8, 0x08f2, 0x08fa, 0x090c, 0x0913, 0x0913, 0x091a, 0x0924, - // Entry 100 - 13F - 0x0934, 0x093c, 0x0946, + 0x023e, 0x0245, 0x0245, 0x0245, 0x024e, 0x0253, 0x025b, 0x0266, + 0x0266, 0x026e, 0x0277, 0x0281, 0x028a, 0x0292, 0x02a4, 0x02a4, + 0x02a9, 0x02b6, 0x02c2, 0x02c9, 0x02cf, 0x02d9, 0x02e8, 0x02f2, + 0x02f2, 0x02fc, 0x0303, 0x030f, 0x0316, 0x0316, 0x0316, 0x031f, + 0x0329, 0x032f, 0x0337, 0x0337, 0x0341, 0x0349, 0x0355, 0x0355, + 0x035d, 0x037b, 0x0380, 0x0386, 0x038e, 0x0394, 0x0394, 0x039d, + 0x03a6, 0x03b1, 0x03b7, 0x03c5, 0x03ce, 0x03d7, 0x03e2, 0x03fd, + // Entry 80 - BF + 0x040f, 0x041e, 0x0425, 0x0430, 0x043c, 0x0442, 0x0449, 0x045a, + 0x046c, 0x0478, 0x0480, 0x0487, 0x0490, 0x049b, 0x04a2, 0x04a8, + 0x04af, 0x04b6, 0x04be, 0x04be, 0x04be, 0x04ca, 0x04d6, 0x04df, + 0x04e4, 0x04ee, 0x04f6, 0x04f6, 0x050e, 0x0518, 0x0521, 0x052b, + 0x0534, 0x053a, 0x0543, 0x054a, 0x0553, 0x055a, 0x0563, 0x056a, + 0x057c, 0x0586, 0x0598, 0x05a0, 0x05a9, 0x05b5, 0x05c1, 0x05c8, + 0x05cf, 0x05d6, 0x05e7, 0x05ed, 0x05f4, 0x05f9, 0x060d, 0x0625, + 0x062e, 0x0638, 0x0644, 0x0660, 0x0673, 0x0680, 0x0696, 0x06a1, + // Entry C0 - FF + 0x06a8, 0x06b1, 0x06b8, 0x06b8, 0x06c5, 0x06cd, 0x06cd, 0x06d3, + 0x06dc, 0x06eb, 0x06f9, 0x0703, 0x070b, 0x0712, 0x071c, 0x0734, + 0x073d, 0x073d, 0x0746, 0x0756, 0x0761, 0x076a, 0x0771, 0x077a, + 0x077a, 0x0793, 0x07a0, 0x07a0, 0x07a0, 0x07ab, 0x07ab, 0x07bc, + 0x07c1, 0x07c1, 0x07c6, 0x07d0, 0x07dd, 0x07e4, 0x07fc, 0x080d, + 0x0814, 0x081d, 0x0825, 0x083c, 0x0843, 0x084c, 0x0855, 0x0860, + 0x0867, 0x0867, 0x0867, 0x0870, 0x0878, 0x0886, 0x0890, 0x08b1, + 0x08bc, 0x08ce, 0x08e8, 0x08f2, 0x08fa, 0x090c, 0x0913, 0x0913, + // Entry 100 - 13F + 0x091a, 0x0924, 0x0934, 0x093c, 0x0946, }, }, { // yi @@ -37886,7 +42936,7 @@ var regionHeaders = [220]header{ "פונדיקע אַמעריקעקאַראַאיבעמזרח אַזיעדרום־אַזיעדרום־מזרח אַזיעדרום־א" + "ייראפּעפּאלינעזיעאַזיעצענטראַל־אַזיעמערב־אַזיעאייראפּעמזרח־אייראפּע" + "צפֿון־אייראפּעמערב־אייראפּעלאַטיין־אַמעריקע", - []uint16{ // 290 elements + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0000, 0x000e, 0x000e, 0x002c, 0x0054, 0x0054, 0x0066, 0x0076, 0x0084, 0x009c, 0x00b0, 0x00b0, 0x00be, 0x00d4, 0x00e2, @@ -37898,37 +42948,37 @@ var regionHeaders = [220]header{ 0x0348, 0x0348, 0x0354, 0x0368, 0x0368, 0x0378, 0x0388, 0x0398, // Entry 40 - 7F 0x03c5, 0x03c5, 0x03c5, 0x03d7, 0x03e7, 0x03f5, 0x03f5, 0x0403, - 0x0413, 0x0423, 0x0450, 0x0462, 0x0470, 0x0495, 0x04a9, 0x04c4, - 0x04da, 0x04e6, 0x0513, 0x0525, 0x0531, 0x055a, 0x0566, 0x0572, - 0x0588, 0x059a, 0x05a8, 0x05b0, 0x05c4, 0x05e5, 0x05f9, 0x05f9, - 0x0611, 0x061d, 0x0633, 0x0641, 0x0641, 0x0641, 0x0653, 0x0663, - 0x066f, 0x067d, 0x06a0, 0x06b4, 0x06c4, 0x06ce, 0x06ce, 0x06da, - 0x06da, 0x06da, 0x06e6, 0x06f6, 0x0706, 0x0714, 0x0728, 0x0728, - 0x0738, 0x0742, 0x0742, 0x0754, 0x0766, 0x0774, 0x0774, 0x0774, - // Entry 80 - BF - 0x0774, 0x0774, 0x0791, 0x0791, 0x079b, 0x07a5, 0x07a5, 0x07b9, - 0x07cf, 0x07dd, 0x07e9, 0x07f1, 0x0805, 0x0815, 0x081f, 0x082d, - 0x083b, 0x084b, 0x085f, 0x085f, 0x087b, 0x089a, 0x08ae, 0x08b8, - 0x08ca, 0x08da, 0x08da, 0x08da, 0x08ec, 0x0902, 0x0916, 0x0924, - 0x0934, 0x0946, 0x0958, 0x0966, 0x0978, 0x098a, 0x099a, 0x09b5, - 0x09c1, 0x09dc, 0x09ea, 0x0a00, 0x0a0e, 0x0a20, 0x0a2e, 0x0a2e, - 0x0a2e, 0x0a43, 0x0a43, 0x0a57, 0x0a61, 0x0a90, 0x0ab2, 0x0ac8, - 0x0ade, 0x0aea, 0x0aea, 0x0b09, 0x0b1f, 0x0b1f, 0x0b33, 0x0b33, - // Entry C0 - FF - 0x0b4b, 0x0b59, 0x0b59, 0x0b69, 0x0b77, 0x0b83, 0x0b93, 0x0ba3, - 0x0ba3, 0x0bc0, 0x0bcc, 0x0bd8, 0x0be4, 0x0bf8, 0x0c09, 0x0c1b, - 0x0c1b, 0x0c2f, 0x0c44, 0x0c5b, 0x0c6b, 0x0c7b, 0x0c8b, 0x0ca1, - 0x0cce, 0x0ce9, 0x0ce9, 0x0cf3, 0x0d0b, 0x0d0b, 0x0d0b, 0x0d15, - 0x0d15, 0x0d1d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d47, 0x0d55, - 0x0d61, 0x0d6d, 0x0d95, 0x0da7, 0x0da7, 0x0dbb, 0x0dcd, 0x0ddd, - 0x0ddd, 0x0e04, 0x0e16, 0x0e16, 0x0e35, 0x0e35, 0x0e49, 0x0e49, - 0x0e49, 0x0e5b, 0x0e6f, 0x0e6f, 0x0e7d, 0x0e8b, 0x0e93, 0x0e9f, - // Entry 100 - 13F - 0x0eb9, 0x0ec7, 0x0edb, 0x0f04, 0x0f0e, 0x0f1e, 0x0f38, 0x0f52, - 0x0f62, 0x0f62, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f94, - 0x0fb5, 0x0fc9, 0x0fdc, 0x0ff0, 0x100d, 0x1027, 0x1027, 0x1027, - 0x1027, 0x103b, 0x1045, 0x1061, 0x1075, 0x1085, 0x109f, 0x10bb, - 0x10d5, 0x10f5, + 0x0413, 0x0423, 0x0450, 0x0450, 0x0462, 0x0470, 0x0495, 0x04a9, + 0x04c4, 0x04da, 0x04e6, 0x0513, 0x0525, 0x0531, 0x055a, 0x0566, + 0x0572, 0x0588, 0x059a, 0x05a8, 0x05b0, 0x05c4, 0x05e5, 0x05f9, + 0x05f9, 0x0611, 0x061d, 0x0633, 0x0641, 0x0641, 0x0641, 0x0653, + 0x0663, 0x066f, 0x067d, 0x06a0, 0x06b4, 0x06c4, 0x06ce, 0x06ce, + 0x06da, 0x06da, 0x06da, 0x06e6, 0x06f6, 0x0706, 0x0714, 0x0728, + 0x0728, 0x0738, 0x0742, 0x0742, 0x0754, 0x0766, 0x0774, 0x0774, + // Entry 80 - BF + 0x0774, 0x0774, 0x0774, 0x0791, 0x0791, 0x079b, 0x07a5, 0x07a5, + 0x07b9, 0x07cf, 0x07dd, 0x07e9, 0x07f1, 0x0805, 0x0815, 0x081f, + 0x082d, 0x083b, 0x084b, 0x085f, 0x085f, 0x087b, 0x089a, 0x08ae, + 0x08b8, 0x08ca, 0x08da, 0x08da, 0x08da, 0x08ec, 0x0902, 0x0916, + 0x0924, 0x0934, 0x0946, 0x0958, 0x0966, 0x0978, 0x098a, 0x099a, + 0x09b5, 0x09c1, 0x09dc, 0x09ea, 0x0a00, 0x0a0e, 0x0a20, 0x0a2e, + 0x0a2e, 0x0a2e, 0x0a43, 0x0a43, 0x0a57, 0x0a61, 0x0a90, 0x0ab2, + 0x0ac8, 0x0ade, 0x0aea, 0x0aea, 0x0b09, 0x0b1f, 0x0b1f, 0x0b33, + // Entry C0 - FF + 0x0b33, 0x0b4b, 0x0b59, 0x0b59, 0x0b69, 0x0b77, 0x0b83, 0x0b93, + 0x0ba3, 0x0ba3, 0x0bc0, 0x0bcc, 0x0bd8, 0x0be4, 0x0bf8, 0x0c09, + 0x0c1b, 0x0c1b, 0x0c2f, 0x0c44, 0x0c5b, 0x0c6b, 0x0c7b, 0x0c8b, + 0x0ca1, 0x0cce, 0x0ce9, 0x0ce9, 0x0cf3, 0x0d0b, 0x0d0b, 0x0d0b, + 0x0d15, 0x0d15, 0x0d1d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d47, + 0x0d55, 0x0d61, 0x0d6d, 0x0d95, 0x0da7, 0x0da7, 0x0dbb, 0x0dcd, + 0x0ddd, 0x0ddd, 0x0ddd, 0x0e04, 0x0e16, 0x0e16, 0x0e35, 0x0e35, + 0x0e49, 0x0e49, 0x0e49, 0x0e5b, 0x0e6f, 0x0e6f, 0x0e7d, 0x0e8b, + // Entry 100 - 13F + 0x0e93, 0x0e9f, 0x0eb9, 0x0ec7, 0x0edb, 0x0f04, 0x0f0e, 0x0f1e, + 0x0f38, 0x0f52, 0x0f62, 0x0f62, 0x0f84, 0x0f84, 0x0f84, 0x0f84, + 0x0f84, 0x0f94, 0x0fb5, 0x0fc9, 0x0fdc, 0x0ff0, 0x100d, 0x1027, + 0x1027, 0x1027, 0x1027, 0x103b, 0x1045, 0x1061, 0x1075, 0x1085, + 0x109f, 0x10bb, 0x10d5, 0x10f5, }, }, { // yo @@ -37995,7 +43045,7 @@ var regionHeaders = [220]header{ "ílẹ́ède Etikun Fagini ti AmẹrikaOrílẹ́ède FẹtinamiOrílẹ́ède Faniatu" + "Orílẹ́ède Wali ati futunaOrílẹ́ède SamọOrílẹ́ède yemeniOrílẹ́ède May" + "oteOrílẹ́ède Ariwa AfirikaOrílẹ́ède ṣamibiaOrílẹ́ède ṣimibabe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x001a, 0x0042, 0x0063, 0x0091, 0x00ae, 0x00cd, 0x00e5, 0x00ff, 0x00ff, 0x0118, 0x0141, 0x015c, 0x0177, 0x018e, @@ -38007,33 +43057,33 @@ var regionHeaders = [220]header{ 0x0540, 0x0558, 0x0577, 0x058c, 0x058c, 0x05a9, 0x05c4, 0x05df, // Entry 40 - 7F 0x05fc, 0x061b, 0x061b, 0x0632, 0x0649, 0x0663, 0x0663, 0x0679, - 0x068e, 0x06a3, 0x06a3, 0x06b9, 0x06cc, 0x06eb, 0x0705, 0x0705, - 0x071b, 0x072f, 0x0748, 0x075d, 0x0773, 0x0791, 0x0791, 0x07a4, - 0x07bd, 0x07d5, 0x07ea, 0x07fd, 0x0814, 0x0830, 0x0846, 0x0846, - 0x085e, 0x0872, 0x088b, 0x08a0, 0x08a0, 0x08a0, 0x08b8, 0x08d4, - 0x08e8, 0x08fe, 0x08fe, 0x0916, 0x092c, 0x0944, 0x0944, 0x0958, - 0x0990, 0x09a4, 0x09b8, 0x09d1, 0x09e7, 0x09e7, 0x09fd, 0x0a14, - 0x0a29, 0x0a3d, 0x0a5a, 0x0a77, 0x0a8e, 0x0aa9, 0x0ac7, 0x0ae3, - // Entry 80 - BF - 0x0aff, 0x0b14, 0x0b35, 0x0b52, 0x0b66, 0x0b7d, 0x0b93, 0x0bb6, - 0x0bcf, 0x0be5, 0x0bfa, 0x0c11, 0x0c28, 0x0c3e, 0x0c53, 0x0c68, - 0x0c7d, 0x0c93, 0x0c93, 0x0c93, 0x0caa, 0x0cc9, 0x0ce1, 0x0cf4, - 0x0d0b, 0x0d21, 0x0d21, 0x0d44, 0x0d5d, 0x0d75, 0x0d8d, 0x0da2, - 0x0dba, 0x0dd1, 0x0de6, 0x0dfb, 0x0e11, 0x0e2c, 0x0e42, 0x0e60, - 0x0e77, 0x0e9b, 0x0eb7, 0x0ecf, 0x0ee7, 0x0f00, 0x0f13, 0x0f27, - 0x0f3a, 0x0f58, 0x0f6f, 0x0f84, 0x0f97, 0x0fb9, 0x0fd6, 0x0fed, - 0x1005, 0x101b, 0x1040, 0x1057, 0x1071, 0x109f, 0x10b6, 0x10ca, - // Entry C0 - FF - 0x10e1, 0x10f4, 0x10f4, 0x110b, 0x1122, 0x1122, 0x113a, 0x1150, - 0x116b, 0x1189, 0x11a6, 0x11bb, 0x11d1, 0x11e7, 0x11fe, 0x1216, - 0x1216, 0x122e, 0x1248, 0x1262, 0x127b, 0x1291, 0x12a8, 0x12a8, - 0x12cf, 0x12ed, 0x12ed, 0x1301, 0x131a, 0x131a, 0x1346, 0x135f, - 0x135f, 0x1372, 0x1389, 0x13a2, 0x13b8, 0x13dd, 0x13fd, 0x1415, - 0x1429, 0x1441, 0x1463, 0x1478, 0x148e, 0x14a7, 0x14bd, 0x14d2, - 0x14d2, 0x14f3, 0x150a, 0x152a, 0x1541, 0x1567, 0x1587, 0x15bd, - 0x15e6, 0x15ff, 0x1615, 0x1633, 0x1648, 0x1648, 0x165d, 0x1672, - // Entry 100 - 13F - 0x168e, 0x16a6, 0x16bf, + 0x068e, 0x06a3, 0x06a3, 0x06a3, 0x06b9, 0x06cc, 0x06eb, 0x0705, + 0x0705, 0x071b, 0x072f, 0x0748, 0x075d, 0x0773, 0x0791, 0x0791, + 0x07a4, 0x07bd, 0x07d5, 0x07ea, 0x07fd, 0x0814, 0x0830, 0x0846, + 0x0846, 0x085e, 0x0872, 0x088b, 0x08a0, 0x08a0, 0x08a0, 0x08b8, + 0x08d4, 0x08e8, 0x08fe, 0x08fe, 0x0916, 0x092c, 0x0944, 0x0944, + 0x0958, 0x0990, 0x09a4, 0x09b8, 0x09d1, 0x09e7, 0x09e7, 0x09fd, + 0x0a14, 0x0a29, 0x0a3d, 0x0a5a, 0x0a77, 0x0a8e, 0x0aa9, 0x0ac7, + // Entry 80 - BF + 0x0ae3, 0x0aff, 0x0b14, 0x0b35, 0x0b52, 0x0b66, 0x0b7d, 0x0b93, + 0x0bb6, 0x0bcf, 0x0be5, 0x0bfa, 0x0c11, 0x0c28, 0x0c3e, 0x0c53, + 0x0c68, 0x0c7d, 0x0c93, 0x0c93, 0x0c93, 0x0caa, 0x0cc9, 0x0ce1, + 0x0cf4, 0x0d0b, 0x0d21, 0x0d21, 0x0d44, 0x0d5d, 0x0d75, 0x0d8d, + 0x0da2, 0x0dba, 0x0dd1, 0x0de6, 0x0dfb, 0x0e11, 0x0e2c, 0x0e42, + 0x0e60, 0x0e77, 0x0e9b, 0x0eb7, 0x0ecf, 0x0ee7, 0x0f00, 0x0f13, + 0x0f27, 0x0f3a, 0x0f58, 0x0f6f, 0x0f84, 0x0f97, 0x0fb9, 0x0fd6, + 0x0fed, 0x1005, 0x101b, 0x1040, 0x1057, 0x1071, 0x109f, 0x10b6, + // Entry C0 - FF + 0x10ca, 0x10e1, 0x10f4, 0x10f4, 0x110b, 0x1122, 0x1122, 0x113a, + 0x1150, 0x116b, 0x1189, 0x11a6, 0x11bb, 0x11d1, 0x11e7, 0x11fe, + 0x1216, 0x1216, 0x122e, 0x1248, 0x1262, 0x127b, 0x1291, 0x12a8, + 0x12a8, 0x12cf, 0x12ed, 0x12ed, 0x1301, 0x131a, 0x131a, 0x1346, + 0x135f, 0x135f, 0x1372, 0x1389, 0x13a2, 0x13b8, 0x13dd, 0x13fd, + 0x1415, 0x1429, 0x1441, 0x1463, 0x1478, 0x148e, 0x14a7, 0x14bd, + 0x14d2, 0x14d2, 0x14d2, 0x14f3, 0x150a, 0x152a, 0x1541, 0x1567, + 0x1587, 0x15bd, 0x15e6, 0x15ff, 0x1615, 0x1633, 0x1648, 0x1648, + // Entry 100 - 13F + 0x165d, 0x1672, 0x168e, 0x16a6, 0x16bf, }, }, { // yo-BJ @@ -38101,7 +43151,7 @@ var regionHeaders = [220]header{ "tinamiOrílɛ́ède FaniatuOrílɛ́ède Wali ati futunaOrílɛ́ède SamɔOrílɛ́" + "ède yemeniOrílɛ́ède MayoteOrílɛ́ède Ariwa AfirikaOrílɛ́ède shamibia" + "Orílɛ́ède shimibabe", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0019, 0x003e, 0x005e, 0x008b, 0x00a7, 0x00c5, 0x00dc, 0x00f5, 0x00f5, 0x010d, 0x0135, 0x014f, 0x0169, 0x017f, @@ -38113,54 +43163,54 @@ var regionHeaders = [220]header{ 0x0502, 0x0519, 0x0534, 0x0548, 0x0548, 0x0563, 0x057c, 0x0596, // Entry 40 - 7F 0x05b2, 0x05d0, 0x05d0, 0x05e6, 0x05fc, 0x0615, 0x0615, 0x062a, - 0x063e, 0x0652, 0x0652, 0x0667, 0x0679, 0x0697, 0x06b0, 0x06b0, - 0x06c5, 0x06d8, 0x06f0, 0x0704, 0x0718, 0x0734, 0x0734, 0x0746, - 0x075e, 0x0775, 0x0789, 0x079b, 0x07b1, 0x07cc, 0x07e1, 0x07e1, - 0x07f8, 0x080b, 0x0823, 0x0837, 0x0837, 0x0837, 0x084e, 0x0869, - 0x087c, 0x0891, 0x0891, 0x08a8, 0x08bd, 0x08d3, 0x08d3, 0x08e6, - 0x091d, 0x0930, 0x0943, 0x095a, 0x096f, 0x096f, 0x0984, 0x0999, - 0x09ad, 0x09c0, 0x09db, 0x09f7, 0x0a0d, 0x0a27, 0x0a44, 0x0a5e, - // Entry 80 - BF - 0x0a78, 0x0a8c, 0x0aac, 0x0ac6, 0x0ad9, 0x0aef, 0x0b03, 0x0b22, - 0x0b3a, 0x0b4f, 0x0b63, 0x0b79, 0x0b8f, 0x0ba4, 0x0bb8, 0x0bcc, - 0x0be0, 0x0bf5, 0x0bf5, 0x0bf5, 0x0c0b, 0x0c28, 0x0c3f, 0x0c51, - 0x0c67, 0x0c7c, 0x0c7c, 0x0c9e, 0x0cb6, 0x0ccd, 0x0ce4, 0x0cf8, - 0x0d0f, 0x0d25, 0x0d39, 0x0d4d, 0x0d62, 0x0d7b, 0x0d90, 0x0dad, - 0x0dc3, 0x0de5, 0x0e00, 0x0e17, 0x0e2e, 0x0e44, 0x0e56, 0x0e69, - 0x0e7b, 0x0e97, 0x0eab, 0x0ebf, 0x0ed1, 0x0ef1, 0x0f0d, 0x0f23, - 0x0f3a, 0x0f4f, 0x0f71, 0x0f87, 0x0f9f, 0x0fca, 0x0fdf, 0x0ff2, - // Entry C0 - FF - 0x1008, 0x101a, 0x101a, 0x1030, 0x1046, 0x1046, 0x105b, 0x1070, - 0x108a, 0x10a7, 0x10c0, 0x10d4, 0x10e9, 0x10fe, 0x1113, 0x112a, - 0x112a, 0x1141, 0x115a, 0x1173, 0x1189, 0x119e, 0x11b4, 0x11b4, - 0x11d9, 0x11f4, 0x11f4, 0x1207, 0x121e, 0x121e, 0x1246, 0x125d, - 0x125d, 0x126f, 0x1285, 0x129d, 0x12b2, 0x12d5, 0x12f2, 0x1308, - 0x131b, 0x1330, 0x1351, 0x1365, 0x137a, 0x1391, 0x13a6, 0x13ba, - 0x13ba, 0x13d9, 0x13ef, 0x140c, 0x1422, 0x1446, 0x1461, 0x1496, - 0x14bd, 0x14d4, 0x14e9, 0x1506, 0x1519, 0x1519, 0x152d, 0x1541, - // Entry 100 - 13F - 0x155c, 0x1572, 0x1589, + 0x063e, 0x0652, 0x0652, 0x0652, 0x0667, 0x0679, 0x0697, 0x06b0, + 0x06b0, 0x06c5, 0x06d8, 0x06f0, 0x0704, 0x0718, 0x0734, 0x0734, + 0x0746, 0x075e, 0x0775, 0x0789, 0x079b, 0x07b1, 0x07cc, 0x07e1, + 0x07e1, 0x07f8, 0x080b, 0x0823, 0x0837, 0x0837, 0x0837, 0x084e, + 0x0869, 0x087c, 0x0891, 0x0891, 0x08a8, 0x08bd, 0x08d3, 0x08d3, + 0x08e6, 0x091d, 0x0930, 0x0943, 0x095a, 0x096f, 0x096f, 0x0984, + 0x0999, 0x09ad, 0x09c0, 0x09db, 0x09f7, 0x0a0d, 0x0a27, 0x0a44, + // Entry 80 - BF + 0x0a5e, 0x0a78, 0x0a8c, 0x0aac, 0x0ac6, 0x0ad9, 0x0aef, 0x0b03, + 0x0b22, 0x0b3a, 0x0b4f, 0x0b63, 0x0b79, 0x0b8f, 0x0ba4, 0x0bb8, + 0x0bcc, 0x0be0, 0x0bf5, 0x0bf5, 0x0bf5, 0x0c0b, 0x0c28, 0x0c3f, + 0x0c51, 0x0c67, 0x0c7c, 0x0c7c, 0x0c9e, 0x0cb6, 0x0ccd, 0x0ce4, + 0x0cf8, 0x0d0f, 0x0d25, 0x0d39, 0x0d4d, 0x0d62, 0x0d7b, 0x0d90, + 0x0dad, 0x0dc3, 0x0de5, 0x0e00, 0x0e17, 0x0e2e, 0x0e44, 0x0e56, + 0x0e69, 0x0e7b, 0x0e97, 0x0eab, 0x0ebf, 0x0ed1, 0x0ef1, 0x0f0d, + 0x0f23, 0x0f3a, 0x0f4f, 0x0f71, 0x0f87, 0x0f9f, 0x0fca, 0x0fdf, + // Entry C0 - FF + 0x0ff2, 0x1008, 0x101a, 0x101a, 0x1030, 0x1046, 0x1046, 0x105b, + 0x1070, 0x108a, 0x10a7, 0x10c0, 0x10d4, 0x10e9, 0x10fe, 0x1113, + 0x112a, 0x112a, 0x1141, 0x115a, 0x1173, 0x1189, 0x119e, 0x11b4, + 0x11b4, 0x11d9, 0x11f4, 0x11f4, 0x1207, 0x121e, 0x121e, 0x1246, + 0x125d, 0x125d, 0x126f, 0x1285, 0x129d, 0x12b2, 0x12d5, 0x12f2, + 0x1308, 0x131b, 0x1330, 0x1351, 0x1365, 0x137a, 0x1391, 0x13a6, + 0x13ba, 0x13ba, 0x13ba, 0x13d9, 0x13ef, 0x140c, 0x1422, 0x1446, + 0x1461, 0x1496, 0x14bd, 0x14d4, 0x14e9, 0x1506, 0x1519, 0x1519, + // Entry 100 - 13F + 0x152d, 0x1541, 0x155c, 0x1572, 0x1589, }, }, { // yue "阿森松島安道爾阿拉伯聯合大公國阿富汗安提瓜同巴布達安圭拉阿爾巴尼亞亞美尼亞安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞塞拜然波斯尼" + "亞同黑塞哥維那巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那白俄" + "羅斯貝里斯加拿大科科斯(基林)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓" + - "島哥斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克共和國德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多" + - "愛沙尼亞埃及西撒哈拉厄利垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根" + - "西島迦納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南佐治亞島同南桑威奇群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共和國香港特別行" + - "政區赫德島同麥克唐納群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加" + - "約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩聖基茨同尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立" + - "陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北" + - "馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加" + - "拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾同密克隆群島皮特肯群島波多" + - "黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡聖赫" + - "勒拿島斯洛維尼亞斯瓦爾巴特群島同揚馬延島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美同普林西比薩爾瓦多荷屬聖馬丁敘利亞史" + - "瓦濟蘭特里斯坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達同多巴哥吐瓦" + - "魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏拉圭烏茲別克梵蒂岡聖文森特同格林納丁斯委內瑞拉英屬維京群島美屬維京群島越南萬那杜瓦利" + - "斯同富圖納群島薩摩亞科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲南部美洲北美加勒比海東" + - "亞南亞東南亞南歐澳洲同紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲", - []uint16{ // 290 elements + "島哥斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼" + + "亞埃及西撒哈拉厄利垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根西島迦" + + "納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南佐治亞島同南桑威奇群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共和國香港特別行政區赫" + + "德島同麥克唐納群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日" + + "本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩聖基茨同尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧" + + "森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北馬里亞" + + "納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加拉瓜荷" + + "蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾同密克隆群島皮特肯群島波多黎各巴" + + "勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡聖赫勒拿島" + + "斯洛維尼亞斯瓦爾巴特群島同揚馬延島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美同普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭" + + "特里斯坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達同多巴哥吐瓦魯台灣" + + "坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏拉圭烏茲別克梵蒂岡聖文森特同格林納丁斯委內瑞拉英屬維京群島美屬維京群島越南萬那杜瓦利斯同富" + + "圖納群島薩摩亞科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲南部美洲北美加勒比海東亞南亞" + + "東南亞南歐澳洲同紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲", + []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00a8, 0x00b7, @@ -38169,40 +43219,40 @@ var regionHeaders = [220]header{ 0x0177, 0x0180, 0x0186, 0x018f, 0x0198, 0x01a4, 0x01ad, 0x01b6, 0x01d1, 0x01e6, 0x01f5, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, 0x0237, 0x024c, 0x0258, 0x0267, 0x0276, 0x027c, 0x0285, 0x028e, - 0x0297, 0x02a3, 0x02b2, 0x02b8, 0x02cd, 0x02d6, 0x02dc, 0x02e8, - // Entry 40 - 7F - 0x02fd, 0x030c, 0x0321, 0x032a, 0x0336, 0x033c, 0x0348, 0x0354, - 0x035d, 0x0369, 0x036f, 0x0375, 0x037b, 0x038a, 0x03a2, 0x03ae, - 0x03b4, 0x03ba, 0x03c0, 0x03cc, 0x03de, 0x03ed, 0x03f6, 0x03fc, - 0x0408, 0x0411, 0x041a, 0x0423, 0x042f, 0x043e, 0x0444, 0x0468, - 0x0474, 0x047a, 0x0489, 0x0492, 0x04bc, 0x04da, 0x04e6, 0x04f5, - 0x04fb, 0x0504, 0x0513, 0x0519, 0x0522, 0x052b, 0x0531, 0x0537, - 0x054c, 0x0555, 0x055b, 0x0561, 0x056a, 0x0573, 0x057c, 0x0582, - 0x0588, 0x058e, 0x059a, 0x05a3, 0x05af, 0x05b5, 0x05ca, 0x05d0, - // Entry 80 - BF - 0x05d6, 0x05df, 0x05eb, 0x05f4, 0x05fa, 0x0603, 0x060f, 0x061e, - 0x062a, 0x0636, 0x063f, 0x0648, 0x0651, 0x065d, 0x0666, 0x066f, - 0x0678, 0x0684, 0x0693, 0x06a2, 0x06b1, 0x06c0, 0x06c9, 0x06cf, - 0x06d5, 0x06db, 0x0705, 0x071a, 0x0729, 0x0738, 0x0741, 0x074a, - 0x0756, 0x0762, 0x076b, 0x0774, 0x0780, 0x078c, 0x0798, 0x07aa, - 0x07b0, 0x07bc, 0x07c8, 0x07d4, 0x07da, 0x07e0, 0x07e9, 0x07ef, - 0x07f8, 0x0801, 0x080d, 0x0816, 0x081c, 0x0831, 0x0846, 0x084f, - 0x085b, 0x0861, 0x087f, 0x088e, 0x089a, 0x08af, 0x08b8, 0x08be, - // Entry C0 - FF - 0x08c7, 0x08cd, 0x08e2, 0x08eb, 0x08f7, 0x0903, 0x090c, 0x0915, - 0x0927, 0x0936, 0x093f, 0x0945, 0x094b, 0x0954, 0x0963, 0x0972, - 0x0996, 0x09a2, 0x09ab, 0x09b7, 0x09c3, 0x09cf, 0x09d8, 0x09e1, - 0x09f9, 0x0a05, 0x0a14, 0x0a1d, 0x0a29, 0x0a47, 0x0a62, 0x0a68, - 0x0a7a, 0x0a80, 0x0a86, 0x0a8f, 0x0a9e, 0x0aa7, 0x0ab0, 0x0abc, - 0x0ac2, 0x0acb, 0x0ae0, 0x0ae9, 0x0aef, 0x0afb, 0x0b04, 0x0b0d, - 0x0b25, 0x0b2b, 0x0b34, 0x0b40, 0x0b49, 0x0b67, 0x0b73, 0x0b85, - 0x0b97, 0x0b9d, 0x0ba6, 0x0bc1, 0x0bca, 0x0bd3, 0x0bd9, 0x0be2, - // Entry 100 - 13F - 0x0be8, 0x0bf1, 0x0bfa, 0x0c06, 0x0c0c, 0x0c12, 0x0c1b, 0x0c24, - 0x0c2d, 0x0c33, 0x0c39, 0x0c3f, 0x0c45, 0x0c4b, 0x0c57, 0x0c5d, - 0x0c63, 0x0c6f, 0x0c75, 0x0c7b, 0x0c84, 0x0c8a, 0x0c9c, 0x0cab, - 0x0cbd, 0x0ccc, 0x0cd2, 0x0cd8, 0x0cde, 0x0ce4, 0x0cea, 0x0cf0, - 0x0cf6, 0x0d02, + 0x0297, 0x02a3, 0x02a9, 0x02af, 0x02c4, 0x02cd, 0x02d3, 0x02df, + // Entry 40 - 7F + 0x02f4, 0x0303, 0x0318, 0x0321, 0x032d, 0x0333, 0x033f, 0x034b, + 0x0354, 0x0360, 0x0366, 0x0366, 0x036c, 0x0372, 0x0381, 0x0399, + 0x03a5, 0x03ab, 0x03b1, 0x03b7, 0x03c3, 0x03d5, 0x03e4, 0x03ed, + 0x03f3, 0x03ff, 0x0408, 0x0411, 0x041a, 0x0426, 0x0435, 0x043b, + 0x045f, 0x046b, 0x0471, 0x0480, 0x0489, 0x04b3, 0x04d1, 0x04dd, + 0x04ec, 0x04f2, 0x04fb, 0x050a, 0x0510, 0x0519, 0x0522, 0x0528, + 0x052e, 0x0543, 0x054c, 0x0552, 0x0558, 0x0561, 0x056a, 0x0573, + 0x0579, 0x057f, 0x0585, 0x0591, 0x059a, 0x05a6, 0x05ac, 0x05c1, + // Entry 80 - BF + 0x05c7, 0x05cd, 0x05d6, 0x05e2, 0x05eb, 0x05f1, 0x05fa, 0x0606, + 0x0615, 0x0621, 0x062d, 0x0636, 0x063f, 0x0648, 0x0654, 0x065d, + 0x0666, 0x066f, 0x067b, 0x068a, 0x0699, 0x06a8, 0x06b7, 0x06c0, + 0x06c6, 0x06cc, 0x06d2, 0x06fc, 0x0711, 0x0720, 0x072f, 0x0738, + 0x0741, 0x074d, 0x0759, 0x0762, 0x076b, 0x0777, 0x0783, 0x078f, + 0x07a1, 0x07a7, 0x07b3, 0x07bf, 0x07cb, 0x07d1, 0x07d7, 0x07e0, + 0x07e6, 0x07ef, 0x07f8, 0x0804, 0x080d, 0x0813, 0x0828, 0x083d, + 0x0846, 0x0852, 0x0858, 0x0876, 0x0885, 0x0891, 0x08a6, 0x08af, + // Entry C0 - FF + 0x08b5, 0x08be, 0x08c4, 0x08d9, 0x08e2, 0x08ee, 0x08fa, 0x0903, + 0x090c, 0x091e, 0x092d, 0x0936, 0x093c, 0x0942, 0x094b, 0x095a, + 0x0969, 0x098d, 0x0999, 0x09a2, 0x09ae, 0x09ba, 0x09c6, 0x09cf, + 0x09d8, 0x09f0, 0x09fc, 0x0a0b, 0x0a14, 0x0a20, 0x0a3e, 0x0a59, + 0x0a5f, 0x0a71, 0x0a77, 0x0a7d, 0x0a86, 0x0a95, 0x0a9e, 0x0aa7, + 0x0ab3, 0x0ab9, 0x0ac2, 0x0ad7, 0x0ae0, 0x0ae6, 0x0af2, 0x0afb, + 0x0b04, 0x0b1c, 0x0b1c, 0x0b22, 0x0b2b, 0x0b37, 0x0b40, 0x0b5e, + 0x0b6a, 0x0b7c, 0x0b8e, 0x0b94, 0x0b9d, 0x0bb8, 0x0bc1, 0x0bca, + // Entry 100 - 13F + 0x0bd0, 0x0bd9, 0x0bdf, 0x0be8, 0x0bf1, 0x0bfd, 0x0c03, 0x0c09, + 0x0c12, 0x0c1b, 0x0c24, 0x0c2a, 0x0c30, 0x0c36, 0x0c3c, 0x0c42, + 0x0c4e, 0x0c54, 0x0c5a, 0x0c66, 0x0c6c, 0x0c72, 0x0c7b, 0x0c81, + 0x0c93, 0x0ca2, 0x0cb4, 0x0cc3, 0x0cc9, 0x0ccf, 0x0cd5, 0x0cdb, + 0x0ce1, 0x0ce7, 0x0ced, 0x0cf9, }, }, { // zgh @@ -38237,7 +43287,7 @@ var regionHeaders = [220]header{ "ⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ " + "ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼ" + "ⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ", - []uint16{ // 259 elements + []uint16{ // 261 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095, 0x00aa, 0x00bc, 0x00bc, 0x00d4, 0x0105, 0x0114, 0x012c, 0x013b, @@ -38249,33 +43299,33 @@ var regionHeaders = [220]header{ 0x049e, 0x04b0, 0x04e4, 0x04f9, 0x04f9, 0x050e, 0x0523, 0x0538, // Entry 40 - 7F 0x0572, 0x0581, 0x0581, 0x0596, 0x05ab, 0x05b7, 0x05b7, 0x05cf, - 0x05e1, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a, 0x066a, - 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705, 0x0711, - 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd, 0x07bd, - 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830, 0x0845, - 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae, 0x08bd, - 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c, 0x097e, - 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28, 0x0a4e, - // Entry 80 - BF - 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00, 0x0b1e, - 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4, 0x0bc6, - 0x0bd8, 0x0bf0, 0x0c0e, 0x0c0e, 0x0c2c, 0x0c5b, 0x0c76, 0x0c82, - 0x0c97, 0x0cac, 0x0cac, 0x0cf2, 0x0d0a, 0x0d25, 0x0d3d, 0x0d4c, - 0x0d5b, 0x0d6d, 0x0d7f, 0x0d91, 0x0da6, 0x0dbb, 0x0dd0, 0x0e04, - 0x0e16, 0x0e48, 0x0e5d, 0x0e78, 0x0e8d, 0x0e9f, 0x0eae, 0x0ebd, - 0x0ec9, 0x0ee7, 0x0ef6, 0x0f08, 0x0f14, 0x0f4e, 0x0f86, 0x0f9e, - 0x0fb6, 0x0fcb, 0x0ff7, 0x100f, 0x102b, 0x1062, 0x1074, 0x1083, - // Entry C0 - FF - 0x109b, 0x10aa, 0x10aa, 0x10c2, 0x10d7, 0x10e9, 0x10f8, 0x110a, - 0x1125, 0x1157, 0x1169, 0x117b, 0x118a, 0x11a2, 0x11ba, 0x11d2, - 0x11d2, 0x11ea, 0x1205, 0x1220, 0x1238, 0x124a, 0x125f, 0x1285, - 0x12b4, 0x12cc, 0x12cc, 0x12db, 0x12f9, 0x12f9, 0x1339, 0x1345, - 0x1345, 0x1351, 0x1366, 0x1387, 0x1399, 0x13bc, 0x13dd, 0x13e9, - 0x13f8, 0x140a, 0x1439, 0x144b, 0x145d, 0x1475, 0x148a, 0x149c, - 0x149c, 0x14db, 0x14f0, 0x150e, 0x1537, 0x156f, 0x1587, 0x15c9, - 0x161e, 0x1630, 0x1645, 0x166b, 0x167a, 0x167a, 0x1689, 0x1698, - // Entry 100 - 13F - 0x16c1, 0x16d3, 0x16eb, + 0x05e1, 0x05f6, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a, + 0x066a, 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705, + 0x0711, 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd, + 0x07bd, 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830, + 0x0845, 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae, + 0x08bd, 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c, + 0x097e, 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28, + // Entry 80 - BF + 0x0a4e, 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00, + 0x0b1e, 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4, + 0x0bc6, 0x0bd8, 0x0bf0, 0x0c0e, 0x0c0e, 0x0c2c, 0x0c5b, 0x0c76, + 0x0c82, 0x0c97, 0x0cac, 0x0cac, 0x0cf2, 0x0d0a, 0x0d25, 0x0d3d, + 0x0d4c, 0x0d5b, 0x0d6d, 0x0d7f, 0x0d91, 0x0da6, 0x0dbb, 0x0dd0, + 0x0e04, 0x0e16, 0x0e48, 0x0e5d, 0x0e78, 0x0e8d, 0x0e9f, 0x0eae, + 0x0ebd, 0x0ec9, 0x0ee7, 0x0ef6, 0x0f08, 0x0f14, 0x0f4e, 0x0f86, + 0x0f9e, 0x0fb6, 0x0fcb, 0x0ff7, 0x100f, 0x102b, 0x1062, 0x1074, + // Entry C0 - FF + 0x1083, 0x109b, 0x10aa, 0x10aa, 0x10c2, 0x10d7, 0x10e9, 0x10f8, + 0x110a, 0x1125, 0x1157, 0x1169, 0x117b, 0x118a, 0x11a2, 0x11ba, + 0x11d2, 0x11d2, 0x11ea, 0x1205, 0x1220, 0x1238, 0x124a, 0x125f, + 0x1285, 0x12b4, 0x12cc, 0x12cc, 0x12db, 0x12f9, 0x12f9, 0x1339, + 0x1345, 0x1345, 0x1351, 0x1366, 0x1387, 0x1399, 0x13bc, 0x13dd, + 0x13e9, 0x13f8, 0x140a, 0x1439, 0x144b, 0x145d, 0x1475, 0x148a, + 0x149c, 0x149c, 0x149c, 0x14db, 0x14f0, 0x150e, 0x1537, 0x156f, + 0x1587, 0x15c9, 0x161e, 0x1630, 0x1645, 0x166b, 0x167a, 0x167a, + // Entry 100 - 13F + 0x1689, 0x1698, 0x16c1, 0x16d3, 0x16eb, }, }, { // zh @@ -38287,55 +43337,55 @@ var regionHeaders = [220]header{ zhHantRegionIdx, }, { // zh-Hant-HK - "阿拉伯聯合酋長國安提瓜和巴布達阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那巴巴多斯布基納法索布隆迪貝寧聖巴泰勒米鮑威特島博茨瓦納伯利茲可可斯群島剛果 - " + - "金夏沙剛果 - 布拉薩科特迪瓦克里珀頓島哥斯達黎加佛得角塞浦路斯吉布提多米尼加共和國厄瓜多爾厄立特里亞埃塞俄比亞加蓬格林納達格魯吉亞" + - "加納岡比亞南佐治亞島與南桑威奇群島危地馬拉幾內亞比紹圭亞那洪都拉斯克羅地亞馬恩島英屬印度洋領土意大利肯雅科摩羅聖基茨和尼維斯老撾聖盧" + - "西亞列支敦士登利比里亞萊索托黑山馬里毛里塔尼亞蒙特塞拉特馬耳他毛里裘斯馬爾代夫馬拉維莫桑比克尼日爾尼日利亞瑙魯阿曼法屬波利尼西亞巴布" + - "亞新幾內亞皮特凱恩島卡塔爾盧旺達沙特阿拉伯所羅門群島塞舌爾斯洛文尼亞斯瓦爾巴特群島及揚馬延島塞拉利昂索馬里蘇里南聖多美和普林西比斯威" + - "士蘭特克斯和凱科斯群島乍得法屬南部地區多哥共和國湯加千里達和多巴哥圖瓦盧坦桑尼亞聖文森特和格林納丁斯英屬維爾京群島美屬維爾京群島瓦努" + - "阿圖也門贊比亞津巴布韋中美洲加勒比波利尼西亞", - []uint16{ // 282 elements + "阿拉伯聯合酋長國安提瓜和巴布達阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那巴巴多斯布基納法索布隆迪貝寧聖巴泰勒米鮑威特島博茨瓦納伯利茲可可斯群島科特迪瓦克" + + "里珀頓島哥斯達黎加佛得角塞浦路斯吉布提厄瓜多爾厄立特里亞埃塞俄比亞加蓬格林納達格魯吉亞加納岡比亞南佐治亞島與南桑威奇群島危地馬拉幾內" + + "亞比紹圭亞那洪都拉斯克羅地亞馬恩島意大利肯雅科摩羅聖基茨和尼維斯老撾聖盧西亞列支敦士登利比里亞萊索托黑山馬里毛里塔尼亞蒙特塞拉特馬耳" + + "他毛里裘斯馬爾代夫馬拉維莫桑比克尼日爾尼日利亞瑙魯阿曼法屬波利尼西亞巴布亞新幾內亞皮特凱恩島巴勒斯坦領土卡塔爾盧旺達沙地阿拉伯所羅門" + + "群島塞舌爾斯洛文尼亞斯瓦爾巴特群島及揚馬延島塞拉利昂索馬里蘇里南聖多美和普林西比敍利亞斯威士蘭特克斯和凱科斯群島乍得法屬南部領地多哥" + + "共和國湯加千里達和多巴哥圖瓦盧坦桑尼亞聖文森特和格林納丁斯英屬維爾京群島美屬維爾京群島瓦努阿圖也門贊比亞津巴布韋中美洲加勒比波利尼西" + + "亞", + []uint16{ // 284 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0036, 0x0036, 0x0042, 0x0060, 0x006c, 0x006c, 0x006c, 0x007b, 0x007b, 0x007b, 0x0084, 0x008a, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x00a5, 0x00b1, 0x00b1, 0x00ba, 0x00ba, - 0x00c9, 0x00db, 0x00db, 0x00ed, 0x00ed, 0x00f9, 0x00f9, 0x00f9, - 0x00f9, 0x00f9, 0x00f9, 0x0108, 0x0117, 0x0117, 0x0120, 0x0120, - 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x0135, 0x0135, 0x0135, - // Entry 40 - 7F - 0x014a, 0x014a, 0x014a, 0x0156, 0x0156, 0x0156, 0x0156, 0x0165, - 0x0165, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x017a, 0x017a, 0x0186, 0x0192, 0x0192, 0x0192, 0x0198, - 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01c5, - 0x01d1, 0x01d1, 0x01e0, 0x01e9, 0x01e9, 0x01e9, 0x01f5, 0x0201, - 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x020a, 0x020a, - 0x021f, 0x021f, 0x021f, 0x021f, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x022e, 0x022e, 0x022e, 0x022e, 0x0237, 0x024c, 0x024c, - // Entry 80 - BF - 0x024c, 0x024c, 0x024c, 0x024c, 0x0252, 0x0252, 0x025e, 0x026d, - 0x026d, 0x0279, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, - 0x0282, 0x0282, 0x0288, 0x0288, 0x0288, 0x0288, 0x0288, 0x028e, - 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x029d, 0x02ac, 0x02b5, - 0x02c1, 0x02cd, 0x02d6, 0x02d6, 0x02d6, 0x02e2, 0x02e2, 0x02e2, - 0x02eb, 0x02eb, 0x02f7, 0x02f7, 0x02f7, 0x02f7, 0x02f7, 0x02fd, - 0x02fd, 0x02fd, 0x0303, 0x0303, 0x0303, 0x0318, 0x032d, 0x032d, - 0x032d, 0x032d, 0x032d, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, - // Entry C0 - FF - 0x033c, 0x0345, 0x0345, 0x0345, 0x0345, 0x0345, 0x0345, 0x034e, - 0x035d, 0x036c, 0x0375, 0x0375, 0x0375, 0x0375, 0x0375, 0x0384, - 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03bd, 0x03c6, 0x03c6, - 0x03de, 0x03de, 0x03de, 0x03de, 0x03ea, 0x03ea, 0x0405, 0x040b, - 0x041d, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, - 0x0432, 0x0432, 0x0447, 0x0450, 0x0450, 0x045c, 0x045c, 0x045c, - 0x045c, 0x045c, 0x045c, 0x045c, 0x045c, 0x047a, 0x047a, 0x048f, - 0x04a4, 0x04a4, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b6, 0x04b6, - // Entry 100 - 13F - 0x04b6, 0x04bf, 0x04cb, 0x04cb, 0x04cb, 0x04cb, 0x04cb, 0x04cb, - 0x04cb, 0x04cb, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, - 0x04d4, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, - 0x04dd, 0x04ec, + 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00d5, 0x00d5, + 0x00d5, 0x00d5, 0x00d5, 0x00e4, 0x00f3, 0x00f3, 0x00fc, 0x00fc, + 0x00fc, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0111, 0x0111, + // Entry 40 - 7F + 0x0111, 0x0111, 0x0111, 0x011d, 0x011d, 0x011d, 0x011d, 0x012c, + 0x012c, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, + 0x013b, 0x013b, 0x0141, 0x0141, 0x014d, 0x0159, 0x0159, 0x0159, + 0x015f, 0x015f, 0x015f, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, + 0x018c, 0x0198, 0x0198, 0x01a7, 0x01b0, 0x01b0, 0x01b0, 0x01bc, + 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01d1, + 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01da, 0x01da, 0x01da, + 0x01da, 0x01da, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e9, 0x01fe, + // Entry 80 - BF + 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x0204, 0x0204, 0x0210, + 0x021f, 0x021f, 0x022b, 0x0234, 0x0234, 0x0234, 0x0234, 0x0234, + 0x0234, 0x0234, 0x0234, 0x023a, 0x023a, 0x023a, 0x023a, 0x023a, + 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x024f, 0x025e, + 0x0267, 0x0273, 0x027f, 0x0288, 0x0288, 0x0288, 0x0294, 0x0294, + 0x0294, 0x029d, 0x029d, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, + 0x02af, 0x02af, 0x02af, 0x02b5, 0x02b5, 0x02b5, 0x02ca, 0x02df, + 0x02df, 0x02df, 0x02df, 0x02df, 0x02ee, 0x02ee, 0x0300, 0x0300, + // Entry C0 - FF + 0x0300, 0x0300, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, + 0x0312, 0x0321, 0x0330, 0x0339, 0x0339, 0x0339, 0x0339, 0x0339, + 0x0348, 0x036c, 0x036c, 0x0378, 0x0378, 0x0378, 0x0381, 0x038a, + 0x038a, 0x03a2, 0x03a2, 0x03a2, 0x03ab, 0x03b7, 0x03b7, 0x03d2, + 0x03d8, 0x03ea, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, + 0x03f9, 0x03ff, 0x03ff, 0x0414, 0x041d, 0x041d, 0x0429, 0x0429, + 0x0429, 0x0429, 0x0429, 0x0429, 0x0429, 0x0429, 0x0429, 0x0447, + 0x0447, 0x045c, 0x0471, 0x0471, 0x047d, 0x047d, 0x047d, 0x047d, + // Entry 100 - 13F + 0x0483, 0x0483, 0x0483, 0x048c, 0x0498, 0x0498, 0x0498, 0x0498, + 0x0498, 0x0498, 0x0498, 0x0498, 0x04a1, 0x04a1, 0x04a1, 0x04a1, + 0x04a1, 0x04a1, 0x04a1, 0x04aa, 0x04aa, 0x04aa, 0x04aa, 0x04aa, + 0x04aa, 0x04aa, 0x04aa, 0x04b9, }, }, { // zu @@ -38344,7 +43394,7 @@ var regionHeaders = [220]header{ }, } -var afRegionStr string = "" + // Size: 3003 bytes +const afRegionStr string = "" + // Size: 3008 bytes "AscensioneilandAndorraVerenigde Arabiese EmirateAfganistanAntigua en Bar" + "budaAnguillaAlbaniëArmeniëAngolaAntarktikaArgentiniëAmerikaans-SamoaOost" + "enrykAustraliëArubaÅlandeilandeAzerbeidjanBosnië en HerzegowinaBarbadosB" + @@ -38353,41 +43403,41 @@ var afRegionStr string = "" + // Size: 3003 bytes "BotswanaBelarusBelizeKanadaKokos-eilandeDemokratiese Republiek van die K" + "ongoSentraal-Afrikaanse RepubliekKongo - BrazzavilleSwitserlandIvoorkusC" + "ookeilandeChiliKameroenSjinaColombiëClippertoneilandCosta RicaKubaKaap V" + - "erdeCuraçaoKerseilandSiprusTjeggiese RepubliekDuitslandDiego GarciaDjibo" + - "etiDenemarkeDominicaDominikaanse RepubliekAlgeriëCeuta en MelillaEcuador" + - "EstlandEgipteWes-SaharaEritreaSpanjeEthiopiëEuropese UnieFinlandFidjiFal" + - "klandeilandeMikronesiëFaroëreilandeFrankrykGaboenVerenigde KoninkrykGren" + - "adaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGroenlandGambiëGuineeGuadelo" + - "upeEkwatoriaal-GuineeGriekelandSuid-Georgië en die Suidelike Sandwicheil" + - "andeGuatemalaGuamGuinee-BissauGuyanaHongkong SAS SjinaHeard- en McDonald" + - "eilandeHondurasKroasiëHaïtiHongaryeKanariese EilandeIndonesiëIerlandIsra" + - "elEiland ManIndiëBrits-Indiese OseaangebiedIrakIranYslandItaliëJerseyJam" + - "aikaJordaniëJapanKeniaKirgisiëKambodjaKiribatiComoreSt. Kitts en NevisNo" + - "ord-KoreaSuid-KoreaKoeweitKaaimanseilandeKazakstanLaosLibanonSt. LuciaLi" + - "echtensteinSri LankaLiberiëLesothoLitaueLuxemburgLetlandLibiëMarokkoMona" + - "coMoldowaMontenegroSt. MartinMadagaskarMarshalleilandeMacedoniëMaliMianm" + - "ar (Birma)MongoliëMacau SAS SjinaNoord-Mariane-eilandeMartiniqueMauritan" + - "iëMontserratMaltaMauritiusMalediveMalawiMeksikoMaleisiëMosambiekNamibiëN" + - "ieu-KaledoniëNigerNorfolkeilandNigeriëNicaraguaNederlandNoorweëNepalNaur" + - "uNiueNieu-SeelandOmanPanamaPeruFrans-PolinesiëPapoea-Nieu-GuineeFilippyn" + - "ePakistanPoleSt. Pierre en MiquelonPitcairneilandePuerto RicoPalestynse " + - "gebiedePortugalPalauParaguayKatarOmliggende OseaniëRéunionRoemeniëSerwië" + - "RuslandRwandaSaoedi-ArabiëSalomonseilandeSeychelleSoedanSwedeSingapoerSi" + - "nt HelenaSloweniëSvalbard en Jan MayenSlowakyeSierra LeoneSan MarinoSene" + - "galSomaliëSurinameSuid-SoedanSão Tomé en PríncipeEl SalvadorSint Maarten" + - "SiriëSwazilandTristan da CunhaTurks- en CaicoseilandeTsjadFranse Suideli" + - "ke GebiedeTogoThailandTadjikistanTokelauOos-TimorTurkmeniëTunisiëTongaTu" + - "rkyeTrinidad en TobagoTuvaluTaiwanTanzaniëOekraïneUgandaVS klein omligge" + - "nde eilandeVerenigde State van AmerikaUruguayOesbekistanVatikaanstadSt. " + - "Vincent en die GrenadineVenezuelaBritse Maagde-eilandeAmerikaanse Maagde" + - "-eilandeViëtnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteSuid-Afrika" + - "ZambiëZimbabweOnbekende gebiedWêreldAfrikaNoord-AmerikaSuid-AmerikaOsean" + - "iëWes-AfrikaSentraal-AmerikaOos-AfrikaNoord-AfrikaMidde-AfrikaSuider-Afr" + - "ikaAmerikasNoordelike AmerikaKaribiesOos-AsiëSuid-AsiëSuidoos-AsiëSuid-E" + - "uropaAustralasiëMelanesiëMikronesiese streekPolinesiëAsiëSentraal-AsiëWe" + - "s-AsiëEuropaOos-EuropaNoord-EuropaWes-EuropaLatyns-Amerika" - -var afRegionIdx = []uint16{ // 290 elements + "erdeCuraçaoKerseilandSiprusTjeggiëDuitslandDiego GarciaDjiboetiDenemarke" + + "DominicaDominikaanse RepubliekAlgeriëCeuta en MelillaEcuadorEstlandEgipt" + + "eWes-SaharaEritreaSpanjeEthiopiëEuropese UnieFinlandFidjiFalklandeilande" + + "MikronesiëFaroëreilandeFrankrykGaboenVerenigde KoninkrykGrenadaGeorgiëFr" + + "ans-GuyanaGuernseyGhanaGibraltarGroenlandGambiëGuineeGuadeloupeEkwatoria" + + "al-GuineeGriekelandSuid-Georgië en die Suidelike SandwicheilandeGuatemal" + + "aGuamGuinee-BissauGuyanaHongkong SAS SjinaHeard- en McDonaldeilandeHondu" + + "rasKroasiëHaïtiHongaryeKanariese EilandeIndonesiëIerlandIsraelEiland Man" + + "IndiëBrits-Indiese OseaangebiedIrakIranYslandItaliëJerseyJamaikaJordanië" + + "JapanKeniaKirgisiëKambodjaKiribatiComoreSt. Kitts en NevisNoord-KoreaSui" + + "d-KoreaKoeweitKaaimanseilandeKazakstanLaosLibanonSt. LuciaLiechtensteinS" + + "ri LankaLiberiëLesothoLitaueLuxemburgLetlandLibiëMarokkoMonacoMoldowaMon" + + "tenegroSt. MartinMadagaskarMarshalleilandeMacedoniëMaliMianmar (Birma)Mo" + + "ngoliëMacau SAS SjinaNoord-Mariane-eilandeMartiniqueMauritaniëMontserrat" + + "MaltaMauritiusMalediveMalawiMeksikoMaleisiëMosambiekNamibiëNieu-Kaledoni" + + "ëNigerNorfolkeilandNigeriëNicaraguaNederlandNoorweëNepalNauruNiueNieu-S" + + "eelandOmanPanamaPeruFrans-PolinesiëPapoea-Nieu-GuineeFilippynePakistanPo" + + "leSt. Pierre en MiquelonPitcairneilandePuerto RicoPalestynse gebiedePort" + + "ugalPalauParaguayKatarOmliggende OseaniëRéunionRoemeniëSerwiëRuslandRwan" + + "daSaoedi-ArabiëSalomonseilandeSeychelleSoedanSwedeSingapoerSint HelenaSl" + + "oweniëSvalbard en Jan MayenSlowakyeSierra LeoneSan MarinoSenegalSomaliëS" + + "urinameSuid-SoedanSão Tomé en PríncipeEl SalvadorSint MaartenSiriëSwazil" + + "andTristan da CunhaTurks- en CaicoseilandeTsjadFranse Suidelike GebiedeT" + + "ogoThailandTadjikistanTokelauOos-TimorTurkmeniëTunisiëTongaTurkyeTrinida" + + "d en TobagoTuvaluTaiwanTanzaniëOekraïneUgandaVS klein omliggende eilande" + + "verenigde nasiesVerenigde State van AmerikaUruguayOesbekistanVatikaansta" + + "dSt. Vincent en die GrenadineVenezuelaBritse Maagde-eilandeAmerikaanse M" + + "aagde-eilandeViëtnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteSuid-A" + + "frikaZambiëZimbabweOnbekende gebiedWêreldAfrikaNoord-AmerikaSuid-Amerika" + + "OseaniëWes-AfrikaSentraal-AmerikaOos-AfrikaNoord-AfrikaMidde-AfrikaSuide" + + "r-AfrikaAmerikasNoordelike AmerikaKaribiesOos-AsiëSuid-AsiëSuidoos-AsiëS" + + "uid-EuropaAustralasiëMelanesiëMikronesiese streekPolinesiëAsiëSentraal-A" + + "siëWes-AsiëEuropaOos-EuropaNoord-EuropaWes-EuropaLatyns-Amerika" + +var afRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0016, 0x0030, 0x003a, 0x004c, 0x0054, 0x005c, 0x0064, 0x006a, 0x0074, 0x007f, 0x008f, 0x0098, 0x00a2, 0x00a7, @@ -38396,72 +43446,72 @@ var afRegionIdx = []uint16{ // 290 elements 0x0157, 0x015e, 0x0165, 0x0172, 0x017a, 0x0181, 0x0187, 0x018d, 0x019a, 0x01be, 0x01db, 0x01ee, 0x01f9, 0x0201, 0x020c, 0x0211, 0x0219, 0x021e, 0x0227, 0x0237, 0x0241, 0x0245, 0x024f, 0x0257, - 0x0261, 0x0267, 0x027a, 0x0283, 0x028f, 0x0297, 0x02a0, 0x02a8, + 0x0261, 0x0267, 0x026f, 0x0278, 0x0284, 0x028c, 0x0295, 0x029d, // Entry 40 - 7F - 0x02be, 0x02c6, 0x02d6, 0x02dd, 0x02e4, 0x02ea, 0x02f4, 0x02fb, - 0x0301, 0x030a, 0x0317, 0x031e, 0x0323, 0x0332, 0x033d, 0x034b, - 0x0353, 0x0359, 0x036c, 0x0373, 0x037b, 0x0387, 0x038f, 0x0394, - 0x039d, 0x03a6, 0x03ad, 0x03b3, 0x03bd, 0x03cf, 0x03d9, 0x0407, - 0x0410, 0x0414, 0x0421, 0x0427, 0x0439, 0x0452, 0x045a, 0x0462, - 0x0468, 0x0470, 0x0481, 0x048b, 0x0492, 0x0498, 0x04a2, 0x04a8, - 0x04c2, 0x04c6, 0x04ca, 0x04d0, 0x04d7, 0x04dd, 0x04e4, 0x04ed, - 0x04f2, 0x04f7, 0x0500, 0x0508, 0x0510, 0x0516, 0x0528, 0x0533, + 0x02b3, 0x02bb, 0x02cb, 0x02d2, 0x02d9, 0x02df, 0x02e9, 0x02f0, + 0x02f6, 0x02ff, 0x030c, 0x030c, 0x0313, 0x0318, 0x0327, 0x0332, + 0x0340, 0x0348, 0x034e, 0x0361, 0x0368, 0x0370, 0x037c, 0x0384, + 0x0389, 0x0392, 0x039b, 0x03a2, 0x03a8, 0x03b2, 0x03c4, 0x03ce, + 0x03fc, 0x0405, 0x0409, 0x0416, 0x041c, 0x042e, 0x0447, 0x044f, + 0x0457, 0x045d, 0x0465, 0x0476, 0x0480, 0x0487, 0x048d, 0x0497, + 0x049d, 0x04b7, 0x04bb, 0x04bf, 0x04c5, 0x04cc, 0x04d2, 0x04d9, + 0x04e2, 0x04e7, 0x04ec, 0x04f5, 0x04fd, 0x0505, 0x050b, 0x051d, // Entry 80 - BF - 0x053d, 0x0544, 0x0553, 0x055c, 0x0560, 0x0567, 0x0570, 0x057d, - 0x0586, 0x058e, 0x0595, 0x059b, 0x05a4, 0x05ab, 0x05b1, 0x05b8, - 0x05be, 0x05c5, 0x05cf, 0x05d9, 0x05e3, 0x05f2, 0x05fc, 0x0600, - 0x060f, 0x0618, 0x0627, 0x063c, 0x0646, 0x0651, 0x065b, 0x0660, - 0x0669, 0x0671, 0x0677, 0x067e, 0x0687, 0x0690, 0x0698, 0x06a7, - 0x06ac, 0x06b9, 0x06c1, 0x06ca, 0x06d3, 0x06db, 0x06e0, 0x06e5, - 0x06e9, 0x06f5, 0x06f9, 0x06ff, 0x0703, 0x0713, 0x0725, 0x072e, - 0x0736, 0x073a, 0x0750, 0x075f, 0x076a, 0x077c, 0x0784, 0x0789, + 0x0528, 0x0532, 0x0539, 0x0548, 0x0551, 0x0555, 0x055c, 0x0565, + 0x0572, 0x057b, 0x0583, 0x058a, 0x0590, 0x0599, 0x05a0, 0x05a6, + 0x05ad, 0x05b3, 0x05ba, 0x05c4, 0x05ce, 0x05d8, 0x05e7, 0x05f1, + 0x05f5, 0x0604, 0x060d, 0x061c, 0x0631, 0x063b, 0x0646, 0x0650, + 0x0655, 0x065e, 0x0666, 0x066c, 0x0673, 0x067c, 0x0685, 0x068d, + 0x069c, 0x06a1, 0x06ae, 0x06b6, 0x06bf, 0x06c8, 0x06d0, 0x06d5, + 0x06da, 0x06de, 0x06ea, 0x06ee, 0x06f4, 0x06f8, 0x0708, 0x071a, + 0x0723, 0x072b, 0x072f, 0x0745, 0x0754, 0x075f, 0x0771, 0x0779, // Entry C0 - FF - 0x0791, 0x0796, 0x07a9, 0x07b1, 0x07ba, 0x07c1, 0x07c8, 0x07ce, - 0x07dc, 0x07eb, 0x07f4, 0x07fa, 0x07ff, 0x0808, 0x0813, 0x081c, - 0x0831, 0x0839, 0x0845, 0x084f, 0x0856, 0x085e, 0x0866, 0x0871, - 0x0888, 0x0893, 0x089f, 0x08a5, 0x08ae, 0x08be, 0x08d5, 0x08da, - 0x08f2, 0x08f6, 0x08fe, 0x0909, 0x0910, 0x0919, 0x0923, 0x092b, - 0x0930, 0x0936, 0x0948, 0x094e, 0x0954, 0x095d, 0x0966, 0x096c, - 0x0987, 0x09a2, 0x09a9, 0x09b4, 0x09c0, 0x09dc, 0x09e5, 0x09fa, - 0x0a14, 0x0a1c, 0x0a23, 0x0a33, 0x0a38, 0x0a3e, 0x0a43, 0x0a4a, + 0x077e, 0x0786, 0x078b, 0x079e, 0x07a6, 0x07af, 0x07b6, 0x07bd, + 0x07c3, 0x07d1, 0x07e0, 0x07e9, 0x07ef, 0x07f4, 0x07fd, 0x0808, + 0x0811, 0x0826, 0x082e, 0x083a, 0x0844, 0x084b, 0x0853, 0x085b, + 0x0866, 0x087d, 0x0888, 0x0894, 0x089a, 0x08a3, 0x08b3, 0x08ca, + 0x08cf, 0x08e7, 0x08eb, 0x08f3, 0x08fe, 0x0905, 0x090e, 0x0918, + 0x0920, 0x0925, 0x092b, 0x093d, 0x0943, 0x0949, 0x0952, 0x095b, + 0x0961, 0x097c, 0x098c, 0x09a7, 0x09ae, 0x09b9, 0x09c5, 0x09e1, + 0x09ea, 0x09ff, 0x0a19, 0x0a21, 0x0a28, 0x0a38, 0x0a3d, 0x0a43, // Entry 100 - 13F - 0x0a55, 0x0a5c, 0x0a64, 0x0a74, 0x0a7b, 0x0a81, 0x0a8e, 0x0a9a, - 0x0aa2, 0x0aac, 0x0abc, 0x0ac6, 0x0ad2, 0x0ade, 0x0aeb, 0x0af3, - 0x0b05, 0x0b0d, 0x0b16, 0x0b20, 0x0b2d, 0x0b38, 0x0b44, 0x0b4e, - 0x0b61, 0x0b6b, 0x0b70, 0x0b7e, 0x0b87, 0x0b8d, 0x0b97, 0x0ba3, - 0x0bad, 0x0bbb, -} // Size: 604 bytes - -var amRegionStr string = "" + // Size: 5299 bytes - "አሴንሽን ደሴትአንዶራየተባበሩት አረብ ኤምሬትስአፍጋኒስታንአንቲጓ እና ባሩዳአንጉኢላአልባኒያአርሜኒያአንጐላአንታርክቲ" + + 0x0a48, 0x0a4f, 0x0a5a, 0x0a61, 0x0a69, 0x0a79, 0x0a80, 0x0a86, + 0x0a93, 0x0a9f, 0x0aa7, 0x0ab1, 0x0ac1, 0x0acb, 0x0ad7, 0x0ae3, + 0x0af0, 0x0af8, 0x0b0a, 0x0b12, 0x0b1b, 0x0b25, 0x0b32, 0x0b3d, + 0x0b49, 0x0b53, 0x0b66, 0x0b70, 0x0b75, 0x0b83, 0x0b8c, 0x0b92, + 0x0b9c, 0x0ba8, 0x0bb2, 0x0bc0, +} // Size: 608 bytes + +const amRegionStr string = "" + // Size: 5358 bytes + "አሴንሽን ደሴትአንዶራየተባበሩት ዓረብ ኤምሬትስአፍጋኒስታንአንቲጓ እና ባሩዳአንጉኢላአልባኒያአርሜኒያአንጐላአንታርክቲ" + "ካአርጀንቲናየአሜሪካ ሳሞአኦስትሪያአውስትራልያአሩባየአላንድ ደሴቶችአዘርባጃንቦስኒያ እና ሄርዞጎቪኒያባርቤዶስባንግ" + "ላዲሽቤልጄምቡርኪና ፋሶቡልጌሪያባህሬንብሩንዲቤኒንቅዱስ በርቴሎሜቤርሙዳብሩኒቦሊቪያየካሪቢያን ኔዘርላንድስብራዚልባሃ" + "ማስቡህታንቡቬት ደሴትቦትስዋናቤላሩስቤሊዘካናዳኮኮስ(ኬሊንግ) ደሴቶችኮንጎ-ኪንሻሳየመካከለኛው አፍሪካ ሪፐብሊክኮን" + "ጎ ብራዛቪልስዊዘርላንድኮት ዲቯርኩክ ደሴቶችቺሊካሜሩንቻይናኮሎምቢያክሊፐርቶን ደሴትኮስታ ሪካኩባኬፕ ቬርዴኩራሳዎየ" + - "ገና ደሴትሳይፕረስቼክ ሪፑብሊክጀርመንዲዬጎ ጋርሺያጂቡቲዴንማርክዶሚኒካዶሚኒክ ሪፑብሊክአልጄሪያሴኡታና ሜሊላኢኳዶር" + - "ኤስቶኒያግብጽምዕራባዊ ሳህራኤርትራስፔንኢትዮጵያየአውሮፓ ህብረትፊንላንድፊጂየፎክላንድ ደሴቶችሚክሮኔዢያየፋሮ ደሴቶ" + - "ችፈረንሳይጋቦንእንግሊዝግሬናዳጆርጂያየፈረንሳይ ጉዊአናጉርነሲጋናጂብራልተርግሪንላንድጋምቢያጊኒጉዋደሉፕኢኳቶሪያል ጊ" + - "ኒግሪክደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶችጉዋቲማላጉዋምጊኒ ቢሳኦጉያናሆንግ ኮንግ SAR ቻይናኽርድ ደሴቶ" + - "ችና ማክዶናልድ ደሴቶችሆንዱራስክሮኤሽያሀይቲሀንጋሪየካናሪ ደሴቶችኢንዶኔዢያአየርላንድእስራኤልአይል ኦፍ ማንህንድየ" + - "ብሪታኒያ ህንድ ውቂያኖስ ግዛትኢራቅኢራንአይስላንድጣሊያንጀርሲጃማይካጆርዳንጃፓንኬንያኪርጊስታንካምቦዲያኪሪባቲኮሞሮ" + - "ስቅዱስ ኪትስ እና ኔቪስሰሜን ኮሪያደቡብ ኮሪያክዌትካይማን ደሴቶችካዛኪስታንላኦስሊባኖስሴንት ሉቺያሊችተንስታይንሲ" + - "ሪላንካላይቤሪያሌሶቶሊቱዌኒያሉክሰምበርግላትቪያሊቢያሞሮኮሞናኮሞልዶቫሞንተኔግሮሴንት ማርቲንማዳጋስካርማርሻል አይላን" + - "ድመቄዶንያማሊማይናማር(በርማ)ሞንጎሊያማካኡ ልዩ የአስተዳደር ክልል ቻይናየሰሜናዊ ማሪያና ደሴቶችማርቲኒክሞሪቴኒያ" + - "ሞንትሴራትማልታሞሪሸስማልዲቭስማላዊሜክሲኮማሌዢያሞዛምቢክናሚቢያኒው ካሌዶኒያኒጀርኖርፎልክ ደሴትናይጄሪያኒካራጓኔዘር" + - "ላንድኖርዌይኔፓልናኡሩኒኡይኒው ዚላንድኦማንፓናማፔሩየፈረንሳይ ፖሊኔዢያፓፑዋ ኒው ጊኒፊሊፒንስፓኪስታንፖላንድቅዱስ " + - "ፒዬር እና ሚኩኤሎንፒትካኢርን አይስላንድፖርታ ሪኮየፍልስጤም ግዛትፖርቱጋልፓላውፓራጓይኳታርአውትላይንግ ኦሽንያሪዩ" + - "ኒየንሮሜኒያሰርብያራሽያሩዋንዳሳውድአረቢያሰሎሞን ደሴትሲሼልስሱዳንስዊድንሲንጋፖርሴንት ሄለናስሎቬኒያስቫልባርድ እና" + - " ጃን ማየንስሎቫኪያሴራሊዮንሳን ማሪኖሴኔጋልሱማሌሱሪናምደቡብ ሱዳንሳኦ ቶሜ እና ፕሪንሲፔኤል ሳልቫዶርሲንት ማርተንሲ" + - "ሪያሱዋዚላንድትሪስታን ዲ ኩንሃየቱርኮችና የካኢኮስ ደሴቶችቻድየፈረንሳይ ደቡባዊ ግዛቶችቶጐታይላንድታጃኪስታንቶክላ" + - "ውምስራቅ ሌስትቱርክሜኒስታንቱኒዚያቶንጋቱርክትሪናዳድ እና ቶቤጎቱቫሉታይዋንታንዛኒያዩክሬንዩጋንዳየዩ ኤስ ጠረፍ ላ" + - "ይ ያሉ ደሴቶችዩናይትድ ስቴትስኡራጓይኡዝቤኪስታንቫቲካን ከተማቅዱስ ቪንሴንት እና ግሬናዲንስቬንዙዌላየእንግሊዝ ቨ" + - "ርጂን ደሴቶችየአሜሪካ ቨርጂን ደሴቶችቬትናምቫኑአቱዋሊስ እና ፉቱና ደሴቶችሳሞአኮሶቮየመንሜይኦቴደቡብ አፍሪካዛምቢ" + - "ያዚምቧቤያልታወቀ ክልልዓለምአፍሪካሰሜን አሜሪካደቡብ አሜሪካኦሽኒአምስራቃዊ አፍሪካመካከለኛው አሜሪካምዕራባዊ አፍ" + - "ሪካሰሜናዊ አፍሪካመካከለኛው አፍሪካደቡባዊ አፍሪካአሜሪካሰሜናዊ አሜሪካካሪቢያንምዕራባዊ እሲያደቡባዊ እሲያምዕራባ" + - "ዊ ደቡብ እሲያደቡባዊ አውሮፓአውስትራሊያሜላኔዥያየማይክሮኔዥያን ክልልፖሊኔዥያእሲያመካከለኛው እሲያምስራቃዊ እሲያ" + - "አውሮፓምዕራባዊ አውሮፓሰሜናዊ አውሮፓምስራቃዊ አውሮፓላቲን አሜሪካ" - -var amRegionIdx = []uint16{ // 290 elements + "ገና ደሴትሳይፕረስቼቺያጀርመንዲዬጎ ጋርሺያጂቡቲዴንማርክዶሚኒካዶሚኒክ ሪፑብሊክአልጄሪያሴኡታና ሜሊላኢኳዶርኤስቶኒያ" + + "ግብጽምዕራባዊ ሳህራኤርትራስፔንኢትዮጵያየአውሮፓ ህብረትፊንላንድፊጂየፎክላንድ ደሴቶችሚክሮኔዢያየፋሮ ደሴቶችፈረንሳ" + + "ይጋቦንእንግሊዝግሬናዳጆርጂያየፈረንሳይ ጉዊአናጉርነሲጋናጂብራልተርግሪንላንድጋምቢያጊኒጉዋደሉፕኢኳቶሪያል ጊኒግሪክደ" + + "ቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶችጉዋቲማላጉዋምጊኒ ቢሳኦጉያናሆንግ ኮንግ ልዩ የአስተዳደር ክልል ቻይናኽ" + + "ርድ ደሴቶችና ማክዶናልድ ደሴቶችሆንዱራስክሮኤሽያሀይቲሀንጋሪየካናሪ ደሴቶችኢንዶኔዢያአየርላንድእስራኤልአይል ኦፍ " + + "ማንህንድየብሪታኒያ ህንድ ውቂያኖስ ግዛትኢራቅኢራንአይስላንድጣሊያንጀርሲጃማይካጆርዳንጃፓንኬንያኪርጊስታንካምቦዲያኪ" + + "ሪባቲኮሞሮስቅዱስ ኪትስ እና ኔቪስሰሜን ኮሪያደቡብ ኮሪያክዌትካይማን ደሴቶችካዛኪስታንላኦስሊባኖስሴንት ሉቺያሊችተ" + + "ንስታይንሲሪላንካላይቤሪያሌሶቶሊቱዌኒያሉክሰምበርግላትቪያሊቢያሞሮኮሞናኮሞልዶቫሞንተኔግሮሴንት ማርቲንማዳጋስካርማርሻ" + + "ል አይላንድመቄዶንያማሊማይናማር(በርማ)ሞንጎሊያማካኡ ልዩ የአስተዳደር ክልል ቻይናየሰሜናዊ ማሪያና ደሴቶችማርቲኒ" + + "ክሞሪቴኒያሞንትሴራትማልታሞሪሸስማልዲቭስማላዊሜክሲኮማሌዢያሞዛምቢክናሚቢያኒው ካሌዶኒያኒጀርኖርፎልክ ደሴትናይጄሪያኒ" + + "ካራጓኔዘርላንድኖርዌይኔፓልናኡሩኒኡይኒው ዚላንድኦማንፓናማፔሩየፈረንሳይ ፖሊኔዢያፓፑዋ ኒው ጊኒፊሊፒንስፓኪስታንፖላ" + + "ንድቅዱስ ፒዬር እና ሚኩኤሎንፒትካኢርን አይስላንድፖርታ ሪኮየፍልስጤም ግዛትፖርቱጋልፓላውፓራጓይኳታርአውትላይንግ " + + "ኦሽንያሪዩኒየንሮሜኒያሰርብያራሽያሩዋንዳሳውድአረቢያሰሎሞን ደሴትሲሼልስሱዳንስዊድንሲንጋፖርሴንት ሄለናስሎቬኒያስቫል" + + "ባርድ እና ጃን ማየንስሎቫኪያሴራሊዮንሳን ማሪኖሴኔጋልሱማሌሱሪናምደቡብ ሱዳንሳኦ ቶሜ እና ፕሪንሲፔኤል ሳልቫዶርሲ" + + "ንት ማርተንሲሪያሱዋዚላንድትሪስታን ዲ ኩንሃየቱርኮችና የካኢኮስ ደሴቶችቻድየፈረንሳይ ደቡባዊ ግዛቶችቶጐታይላንድታ" + + "ጃኪስታንቶክላውምስራቅ ሌስትቱርክሜኒስታንቱኒዚያቶንጋቱርክትሪናዳድ እና ቶቤጎቱቫሉታይዋንታንዛኒያዩክሬንዩጋንዳየዩ " + + "ኤስ ጠረፍ ላይ ያሉ ደሴቶችየተባበሩት መንግስታትዩናይትድ ስቴትስኡራጓይኡዝቤኪስታንቫቲካን ከተማቅዱስ ቪንሴንት እ" + + "ና ግሬናዲንስቬንዙዌላየእንግሊዝ ቨርጂን ደሴቶችየአሜሪካ ቨርጂን ደሴቶችቬትናምቫኑአቱዋሊስ እና ፉቱና ደሴቶችሳሞአ" + + "ኮሶቮየመንሜይኦቴደቡብ አፍሪካዛምቢያዚምቧቤያልታወቀ ክልልዓለምአፍሪካሰሜን አሜሪካደቡብ አሜሪካኦሽኒአምስራቃዊ አፍ" + + "ሪካመካከለኛው አሜሪካምዕራባዊ አፍሪካሰሜናዊ አፍሪካመካከለኛው አፍሪካደቡባዊ አፍሪካአሜሪካሰሜናዊ አሜሪካካሪቢያን" + + "ምዕራባዊ እሲያደቡባዊ እሲያምዕራባዊ ደቡብ እሲያደቡባዊ አውሮፓአውስትራሊያሜላኔዥያየማይክሮኔዥያን ክልልፖሊኔዥያእ" + + "ሲያመካከለኛው እሲያምስራቃዊ እሲያአውሮፓምዕራባዊ አውሮፓሰሜናዊ አውሮፓምስራቃዊ አውሮፓላቲን አሜሪካ" + +var amRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0019, 0x0025, 0x0051, 0x0066, 0x0083, 0x0092, 0x00a1, 0x00b0, 0x00bc, 0x00d1, 0x00e3, 0x00fc, 0x010b, 0x0120, 0x0129, @@ -38470,84 +43520,85 @@ var amRegionIdx = []uint16{ // 290 elements 0x025e, 0x026a, 0x0276, 0x0289, 0x0298, 0x02a4, 0x02ad, 0x02b6, 0x02da, 0x02f0, 0x0322, 0x033b, 0x0350, 0x0360, 0x0373, 0x0379, 0x0385, 0x038e, 0x039d, 0x03b9, 0x03c9, 0x03cf, 0x03df, 0x03eb, - 0x03fe, 0x040d, 0x0423, 0x042f, 0x0445, 0x044e, 0x045d, 0x0469, + 0x03fe, 0x040d, 0x0416, 0x0422, 0x0438, 0x0441, 0x0450, 0x045c, // Entry 40 - 7F - 0x0485, 0x0494, 0x04aa, 0x04b6, 0x04c5, 0x04ce, 0x04e7, 0x04f3, - 0x04fc, 0x050b, 0x0527, 0x0536, 0x053c, 0x055b, 0x056d, 0x0583, - 0x0592, 0x059b, 0x05aa, 0x05b6, 0x05c2, 0x05e1, 0x05ed, 0x05f3, - 0x0605, 0x0617, 0x0623, 0x0629, 0x0638, 0x0651, 0x065a, 0x06a1, - 0x06b0, 0x06b9, 0x06c9, 0x06d2, 0x06f3, 0x072c, 0x073b, 0x074a, - 0x0753, 0x075f, 0x0778, 0x078a, 0x079c, 0x07ab, 0x07c2, 0x07cb, - 0x0801, 0x080a, 0x0813, 0x0825, 0x0831, 0x083a, 0x0846, 0x0852, - 0x085b, 0x0864, 0x0876, 0x0885, 0x0891, 0x089d, 0x08c1, 0x08d4, + 0x0478, 0x0487, 0x049d, 0x04a9, 0x04b8, 0x04c1, 0x04da, 0x04e6, + 0x04ef, 0x04fe, 0x051a, 0x051a, 0x0529, 0x052f, 0x054e, 0x0560, + 0x0576, 0x0585, 0x058e, 0x059d, 0x05a9, 0x05b5, 0x05d4, 0x05e0, + 0x05e6, 0x05f8, 0x060a, 0x0616, 0x061c, 0x062b, 0x0644, 0x064d, + 0x0694, 0x06a3, 0x06ac, 0x06bc, 0x06c5, 0x0709, 0x0742, 0x0751, + 0x0760, 0x0769, 0x0775, 0x078e, 0x07a0, 0x07b2, 0x07c1, 0x07d8, + 0x07e1, 0x0817, 0x0820, 0x0829, 0x083b, 0x0847, 0x0850, 0x085c, + 0x0868, 0x0871, 0x087a, 0x088c, 0x089b, 0x08a7, 0x08b3, 0x08d7, // Entry 80 - BF - 0x08e7, 0x08f0, 0x0909, 0x091b, 0x0924, 0x0930, 0x0943, 0x095b, - 0x096a, 0x0979, 0x0982, 0x0991, 0x09a6, 0x09b2, 0x09bb, 0x09c4, - 0x09cd, 0x09d9, 0x09eb, 0x0a01, 0x0a13, 0x0a2f, 0x0a3e, 0x0a44, - 0x0a5e, 0x0a6d, 0x0aa7, 0x0ad0, 0x0adf, 0x0aee, 0x0b00, 0x0b09, - 0x0b15, 0x0b24, 0x0b2d, 0x0b39, 0x0b45, 0x0b54, 0x0b60, 0x0b76, - 0x0b7f, 0x0b98, 0x0ba7, 0x0bb3, 0x0bc5, 0x0bd1, 0x0bda, 0x0be3, - 0x0bec, 0x0bff, 0x0c08, 0x0c11, 0x0c17, 0x0c39, 0x0c50, 0x0c5f, - 0x0c6e, 0x0c7a, 0x0ca4, 0x0cc9, 0x0cd9, 0x0cf5, 0x0d04, 0x0d0d, + 0x08ea, 0x08fd, 0x0906, 0x091f, 0x0931, 0x093a, 0x0946, 0x0959, + 0x0971, 0x0980, 0x098f, 0x0998, 0x09a7, 0x09bc, 0x09c8, 0x09d1, + 0x09da, 0x09e3, 0x09ef, 0x0a01, 0x0a17, 0x0a29, 0x0a45, 0x0a54, + 0x0a5a, 0x0a74, 0x0a83, 0x0abd, 0x0ae6, 0x0af5, 0x0b04, 0x0b16, + 0x0b1f, 0x0b2b, 0x0b3a, 0x0b43, 0x0b4f, 0x0b5b, 0x0b6a, 0x0b76, + 0x0b8c, 0x0b95, 0x0bae, 0x0bbd, 0x0bc9, 0x0bdb, 0x0be7, 0x0bf0, + 0x0bf9, 0x0c02, 0x0c15, 0x0c1e, 0x0c27, 0x0c2d, 0x0c4f, 0x0c66, + 0x0c75, 0x0c84, 0x0c90, 0x0cba, 0x0cdf, 0x0cef, 0x0d0b, 0x0d1a, // Entry C0 - FF - 0x0d19, 0x0d22, 0x0d44, 0x0d53, 0x0d5f, 0x0d6b, 0x0d74, 0x0d80, - 0x0d95, 0x0dab, 0x0db7, 0x0dc0, 0x0dcc, 0x0ddb, 0x0dee, 0x0dfd, - 0x0e27, 0x0e36, 0x0e45, 0x0e55, 0x0e61, 0x0e6a, 0x0e76, 0x0e89, - 0x0ead, 0x0ec3, 0x0ed9, 0x0ee2, 0x0ef4, 0x0f11, 0x0f40, 0x0f46, - 0x0f72, 0x0f78, 0x0f87, 0x0f99, 0x0fa5, 0x0fbb, 0x0fd3, 0x0fdf, - 0x0fe8, 0x0ff1, 0x1011, 0x101a, 0x1026, 0x1035, 0x1041, 0x104d, - 0x107f, 0x109b, 0x10a7, 0x10bc, 0x10d2, 0x1105, 0x1114, 0x1140, - 0x1169, 0x1175, 0x1181, 0x11a8, 0x11b1, 0x11ba, 0x11c3, 0x11cf, + 0x0d23, 0x0d2f, 0x0d38, 0x0d5a, 0x0d69, 0x0d75, 0x0d81, 0x0d8a, + 0x0d96, 0x0dab, 0x0dc1, 0x0dcd, 0x0dd6, 0x0de2, 0x0df1, 0x0e04, + 0x0e13, 0x0e3d, 0x0e4c, 0x0e5b, 0x0e6b, 0x0e77, 0x0e80, 0x0e8c, + 0x0e9f, 0x0ec3, 0x0ed9, 0x0eef, 0x0ef8, 0x0f0a, 0x0f27, 0x0f56, + 0x0f5c, 0x0f88, 0x0f8e, 0x0f9d, 0x0faf, 0x0fbb, 0x0fd1, 0x0fe9, + 0x0ff5, 0x0ffe, 0x1007, 0x1027, 0x1030, 0x103c, 0x104b, 0x1057, + 0x1063, 0x1095, 0x10ba, 0x10d6, 0x10e2, 0x10f7, 0x110d, 0x1140, + 0x114f, 0x117b, 0x11a4, 0x11b0, 0x11bc, 0x11e3, 0x11ec, 0x11f5, // Entry 100 - 13F - 0x11e5, 0x11f1, 0x11fd, 0x1216, 0x121f, 0x122b, 0x1241, 0x1257, - 0x1263, 0x127f, 0x129e, 0x12ba, 0x12d3, 0x12f2, 0x130b, 0x1317, - 0x1330, 0x133f, 0x1358, 0x136e, 0x1391, 0x13aa, 0x13bf, 0x13ce, - 0x13f3, 0x1402, 0x140b, 0x1427, 0x1440, 0x144c, 0x1468, 0x1481, - 0x149d, 0x14b3, -} // Size: 604 bytes - -var arRegionStr string = "" + // Size: 5340 bytes + 0x11fe, 0x120a, 0x1220, 0x122c, 0x1238, 0x1251, 0x125a, 0x1266, + 0x127c, 0x1292, 0x129e, 0x12ba, 0x12d9, 0x12f5, 0x130e, 0x132d, + 0x1346, 0x1352, 0x136b, 0x137a, 0x1393, 0x13a9, 0x13cc, 0x13e5, + 0x13fa, 0x1409, 0x142e, 0x143d, 0x1446, 0x1462, 0x147b, 0x1487, + 0x14a3, 0x14bc, 0x14d8, 0x14ee, +} // Size: 608 bytes + +const arRegionStr string = "" + // Size: 5398 bytes "جزيرة أسينشيونأندوراالإمارات العربية المتحدةأفغانستانأنتيغوا وبربوداأنغو" + "يلاألبانياأرمينياأنغولاأنتاركتيكاالأرجنتينساموا الأمريكيةالنمساأستراليا" + - "أروباجزر آلاندأذربيجانالبوسنة والهرسكبربادوسبنجلاديشبلجيكابوركينا فاسوب" + + "أروباجزر آلاندأذربيجانالبوسنة والهرسكبربادوسبنغلاديشبلجيكابوركينا فاسوب" + "لغارياالبحرينبورونديبنينسان بارتليميبرمودابرونايبوليفياهولندا الكاريبية" + "البرازيلالبهامابوتانجزيرة بوفيهبتسوانابيلاروسبليزكنداجزر كوكوس (كيلينغ)" + "الكونغو - كينشاساجمهورية أفريقيا الوسطىالكونغو - برازافيلسويسراساحل الع" + "اججزر كوكتشيليالكاميرونالصينكولومبياجزيرة كليبيرتونكوستاريكاكوباالرأس ا" + - "لأخضركوراساوجزيرة الكريسماسقبرصجمهورية التشيكألمانيادييغو غارسياجيبوتيا" + - "لدانمركدومينيكاجمهورية الدومينيكالجزائرسيوتا وميليلاالإكوادورإستونيامصر" + - "الصحراء الغربيةإريترياإسبانياإثيوبياالاتحاد الأوروبيفنلندافيجيجزر فوكلا" + - "ندميكرونيزياجزر فاروفرنساالجابونالمملكة المتحدةغريناداجورجياغويانا الفر" + - "نسيةغيرنزيغاناجبل طارقغرينلاندغامبياغينياغوادلوبغينيا الإستوائيةاليونان" + - "جورجيا الجنوبية وجزر ساندويتش الجنوبيةغواتيمالاغوامغينيا بيساوغياناهونغ" + - " كونغ الصينيةجزيرة هيرد وجزر ماكدونالدهندوراسكرواتياهايتيهنغارياجزر الكن" + - "اريإندونيسياأيرلنداإسرائيلجزيرة مانالهندالإقليم البريطاني في المحيط اله" + - "نديالعراقإيرانأيسلنداإيطالياجيرسيجامايكاالأردناليابانكينياقرغيزستانكمبو" + - "دياكيريباتيجزر القمرسانت كيتس ونيفيسكوريا الشماليةكوريا الجنوبيةالكويتج" + - "زر الكايمنكازاخستانلاوسلبنانسانت لوسياليختنشتاينسريلانكاليبيرياليسوتولي" + - "توانيالوكسمبورغلاتفياليبياالمغربموناكومولدافياالجبل الأسودسانت مارتنمدغ" + - "شقرجزر المارشالمقدونياماليميانمار -بورمامنغوليامكاو الصينية (منطقة إدار" + - "ية خاصة)جزر ماريانا الشماليةمارتينيكموريتانيامونتسراتمالطاموريشيوسجزر ا" + - "لمالديفملاويالمكسيكماليزياموزمبيقناميبياكاليدونيا الجديدةالنيجرجزيرة نو" + - "رفوكنيجيريانيكاراغواهولنداالنرويجنيبالناورونيوينيوزيلنداعُمانبنمابيروبو" + - "لينيزيا الفرنسيةبابوا غينيا الجديدةالفلبينباكستانبولنداسانت بيير وميكول" + - "ونجزر بيتكيرنبورتوريكوالأراضي الفلسطينيةالبرتغالبالاوباراغوايقطرأوقيانو" + - "سيا النائيةروينيونرومانياصربياروسياروانداالمملكة العربية السعوديةجزر سل" + - "يمانسيشلالسودانالسويدسنغافورةسانت هيلناسلوفينياسفالبارد وجان مايانسلوفا" + + "لأخضركوراساوجزيرة الكريسماسقبرصالتشيكألمانيادييغو غارسياجيبوتيالدانمركد" + + "ومينيكاجمهورية الدومينيكانالجزائرسيوتا وميليلاالإكوادورإستونيامصرالصحرا" + + "ء الغربيةإريترياإسبانياإثيوبياالاتحاد الأوروبيفنلندافيجيجزر فوكلاندميكر" + + "ونيزياجزر فاروفرنساالغابونالمملكة المتحدةغريناداجورجياغويانا الفرنسيةغي" + + "رنزيغاناجبل طارقغرينلاندغامبياغينياغوادلوبغينيا الاستوائيةاليونانجورجيا" + + " الجنوبية وجزر ساندويتش الجنوبيةغواتيمالاغوامغينيا بيساوغياناهونغ كونغ ا" + + "لصينيةجزيرة هيرد وجزر ماكدونالدهندوراسكرواتياهايتيهنغارياجزر الكناريإند" + + "ونيسياأيرلنداإسرائيلجزيرة مانالهندالإقليم البريطاني في المحيط الهنديالع" + + "راقإيرانأيسلنداإيطالياجيرسيجامايكاالأردناليابانكينياقيرغيزستانكمبودياكي" + + "ريباتيجزر القمرسانت كيتس ونيفيسكوريا الشماليةكوريا الجنوبيةالكويتجزر كا" + + "يمانكازاخستانلاوسلبنانسانت لوسياليختنشتاينسريلانكاليبيرياليسوتوليتوانيا" + + "لوكسمبورغلاتفياليبياالمغربموناكومولدوفاالجبل الأسودسانت مارتنمدغشقرجزر " + + "مارشالمقدونياماليميانمار (بورما)منغوليامكاو الصينية (منطقة إدارية خاصة)" + + "جزر ماريانا الشماليةجزر المارتينيكموريتانيامونتسراتمالطاموريشيوسجزر الم" + + "الديفملاويالمكسيكماليزياموزمبيقناميبياكاليدونيا الجديدةالنيجرجزيرة نورف" + + "ولكنيجيريانيكاراغواهولنداالنرويجنيبالناورونيوينيوزيلنداعُمانبنمابيروبول" + + "ينيزيا الفرنسيةبابوا غينيا الجديدةالفلبينباكستانبولنداسانت بيير وميكولو" + + "نجزر بيتكيرنبورتوريكوالأراضي الفلسطينيةالبرتغالبالاوباراغوايقطرأوقيانوس" + + "يا النائيةروينيونرومانياصربياروسياروانداالمملكة العربية السعوديةجزر سلي" + + "مانسيشلالسودانالسويدسنغافورةسانت هيلانةسلوفينياسفالبارد وجان مايانسلوفا" + "كياسيراليونسان مارينوالسنغالالصومالسورينامجنوب السودانساو تومي وبرينسيب" + "يالسلفادورسينت مارتنسورياسوازيلاندتريستان دي كونهاجزر توركس وكايكوستشاد" + - "الأقاليم الجنوبية الفرنسيةتوغوتايلاندطاجيكستانتوكيلوتيمور الشرقيةتركمان" + - "ستانتونستونغاتركياترينيداد وتوباغوتوفالوتايوانتنزانياأوكرانياأوغنداجزر " + - "الولايات المتحدة النائيةالولايات المتحدةأورغوايأوزبكستانالفاتيكانسانت ف" + - "نسنت وغرنادينفنزويلاجزر فرجين البريطانيةجزر فرجين الأمريكيةفيتنامفانوات" + - "وجزر والس وفوتوناسامواكوسوفواليمنمايوتجنوب أفريقيازامبيازيمبابويمنطقة غ" + - "ير معروفةالعالمأفريقياأمريكا الشماليةأمريكا الجنوبيةأوقيانوسياغرب أفريق" + - "ياأمريكا الوسطىشرق أفريقياشمال أفريقياوسط أفريقياأفريقيا الجنوبيةالأمري" + - "كتانشمال أمريكاالكاريبيشرق آسياجنوب آسياجنوب شرق آسياجنوب أوروباأسترالا" + - "سياميلانيزياالجزر الميكرونيزيةبولينيزياآسياوسط آسياغرب آسياأوروباشرق أو" + - "روباشمال أوروباغرب أوروباأمريكا اللاتينية" - -var arRegionIdx = []uint16{ // 290 elements + "الأقاليم الجنوبية الفرنسيةتوغوتايلاندطاجيكستانتوكيلوتيمور- ليشتيتركمانس" + + "تانتونستونغاتركياترينيداد وتوباغوتوفالوتايوانتنزانياأوكرانياأوغنداجزر ا" + + "لولايات المتحدة النائيةالأمم المتحدةالولايات المتحدةأورغوايأوزبكستانالف" + + "اتيكانسانت فنسنت وجزر غرينادينفنزويلاجزر فيرجن البريطانيةجزر فيرجن التا" + + "بعة للولايات المتحدةفيتنامفانواتوجزر والس وفوتوناسامواكوسوفواليمنمايوتج" + + "نوب أفريقيازامبيازيمبابويمنطقة غير معروفةالعالمأفريقياأمريكا الشماليةأم" + + "ريكا الجنوبيةأوقيانوسياغرب أفريقياأمريكا الوسطىشرق أفريقياشمال أفريقياو" + + "سط أفريقياأفريقيا الجنوبيةالأمريكتانشمال أمريكاالكاريبيشرق آسياجنوب آسي" + + "اجنوب شرق آسياجنوب أوروباأسترالاسياميلانيزياالجزر الميكرونيزيةبولينيزيا" + + "آسياوسط آسياغرب آسياأوروباشرق أوروباشمال أوروباغرب أوروباأمريكا اللاتين" + + "ية" + +var arRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001b, 0x0027, 0x0055, 0x0067, 0x0084, 0x0092, 0x00a0, 0x00ae, 0x00ba, 0x00ce, 0x00e0, 0x00fd, 0x0109, 0x0119, 0x0123, @@ -38556,132 +43607,133 @@ var arRegionIdx = []uint16{ // 290 elements 0x0240, 0x024e, 0x0258, 0x026d, 0x027b, 0x0289, 0x0291, 0x0299, 0x02b9, 0x02d8, 0x0302, 0x0323, 0x032f, 0x0342, 0x034f, 0x0359, 0x036b, 0x0375, 0x0385, 0x03a2, 0x03b4, 0x03bc, 0x03d3, 0x03e1, - 0x03fe, 0x0406, 0x0421, 0x042f, 0x0446, 0x0452, 0x0462, 0x0472, + 0x03fe, 0x0406, 0x0412, 0x0420, 0x0437, 0x0443, 0x0453, 0x0463, // Entry 40 - 7F - 0x0493, 0x04a1, 0x04ba, 0x04cc, 0x04da, 0x04e0, 0x04fd, 0x050b, - 0x0519, 0x0527, 0x0546, 0x0552, 0x055a, 0x056f, 0x0583, 0x0592, - 0x059c, 0x05aa, 0x05c7, 0x05d5, 0x05e1, 0x05fe, 0x060a, 0x0612, - 0x0621, 0x0631, 0x063d, 0x0647, 0x0655, 0x0674, 0x0682, 0x06ca, - 0x06dc, 0x06e4, 0x06f9, 0x0703, 0x0723, 0x0752, 0x0760, 0x076e, - 0x0778, 0x0786, 0x079b, 0x07ad, 0x07bb, 0x07c9, 0x07da, 0x07e4, - 0x0824, 0x0830, 0x083a, 0x0848, 0x0856, 0x0860, 0x086e, 0x087a, - 0x0888, 0x0892, 0x08a4, 0x08b2, 0x08c2, 0x08d3, 0x08f1, 0x090c, + 0x0488, 0x0496, 0x04af, 0x04c1, 0x04cf, 0x04d5, 0x04f2, 0x0500, + 0x050e, 0x051c, 0x053b, 0x053b, 0x0547, 0x054f, 0x0564, 0x0578, + 0x0587, 0x0591, 0x059f, 0x05bc, 0x05ca, 0x05d6, 0x05f3, 0x05ff, + 0x0607, 0x0616, 0x0626, 0x0632, 0x063c, 0x064a, 0x0669, 0x0677, + 0x06bf, 0x06d1, 0x06d9, 0x06ee, 0x06f8, 0x0718, 0x0747, 0x0755, + 0x0763, 0x076d, 0x077b, 0x0790, 0x07a2, 0x07b0, 0x07be, 0x07cf, + 0x07d9, 0x0819, 0x0825, 0x082f, 0x083d, 0x084b, 0x0855, 0x0863, + 0x086f, 0x087d, 0x0887, 0x089b, 0x08a9, 0x08b9, 0x08ca, 0x08e8, // Entry 80 - BF - 0x0927, 0x0933, 0x0948, 0x095a, 0x0962, 0x096c, 0x097f, 0x0993, - 0x09a3, 0x09b1, 0x09bd, 0x09cd, 0x09df, 0x09eb, 0x09f5, 0x0a01, - 0x0a0d, 0x0a1d, 0x0a34, 0x0a47, 0x0a53, 0x0a6a, 0x0a78, 0x0a80, - 0x0a9a, 0x0aa8, 0x0ae2, 0x0b08, 0x0b18, 0x0b2a, 0x0b3a, 0x0b44, - 0x0b54, 0x0b6b, 0x0b75, 0x0b83, 0x0b91, 0x0b9f, 0x0bad, 0x0bce, - 0x0bda, 0x0bf1, 0x0bff, 0x0c11, 0x0c1d, 0x0c2b, 0x0c35, 0x0c3f, - 0x0c47, 0x0c59, 0x0c63, 0x0c6b, 0x0c73, 0x0c96, 0x0cba, 0x0cc8, - 0x0cd6, 0x0ce2, 0x0d04, 0x0d19, 0x0d2b, 0x0d4e, 0x0d5e, 0x0d68, + 0x0903, 0x091e, 0x092a, 0x093d, 0x094f, 0x0957, 0x0961, 0x0974, + 0x0988, 0x0998, 0x09a6, 0x09b2, 0x09c2, 0x09d4, 0x09e0, 0x09ea, + 0x09f6, 0x0a02, 0x0a10, 0x0a27, 0x0a3a, 0x0a46, 0x0a59, 0x0a67, + 0x0a6f, 0x0a8a, 0x0a98, 0x0ad2, 0x0af8, 0x0b13, 0x0b25, 0x0b35, + 0x0b3f, 0x0b4f, 0x0b66, 0x0b70, 0x0b7e, 0x0b8c, 0x0b9a, 0x0ba8, + 0x0bc9, 0x0bd5, 0x0bee, 0x0bfc, 0x0c0e, 0x0c1a, 0x0c28, 0x0c32, + 0x0c3c, 0x0c44, 0x0c56, 0x0c60, 0x0c68, 0x0c70, 0x0c93, 0x0cb7, + 0x0cc5, 0x0cd3, 0x0cdf, 0x0d01, 0x0d16, 0x0d28, 0x0d4b, 0x0d5b, // Entry C0 - FF - 0x0d78, 0x0d7e, 0x0da1, 0x0daf, 0x0dbd, 0x0dc7, 0x0dd1, 0x0ddd, - 0x0e0b, 0x0e1e, 0x0e26, 0x0e34, 0x0e40, 0x0e50, 0x0e63, 0x0e73, - 0x0e97, 0x0ea7, 0x0eb7, 0x0eca, 0x0ed8, 0x0ee6, 0x0ef4, 0x0f0b, - 0x0f2d, 0x0f3f, 0x0f52, 0x0f5c, 0x0f6e, 0x0f8c, 0x0fac, 0x0fb4, - 0x0fe6, 0x0fee, 0x0ffc, 0x100e, 0x101a, 0x1033, 0x1047, 0x104f, - 0x1059, 0x1063, 0x1082, 0x108e, 0x109a, 0x10a8, 0x10b8, 0x10c4, - 0x10f9, 0x1118, 0x1126, 0x1138, 0x114a, 0x116e, 0x117c, 0x11a2, - 0x11c6, 0x11d2, 0x11e0, 0x11fe, 0x1208, 0x1214, 0x121e, 0x1228, + 0x0d65, 0x0d75, 0x0d7b, 0x0d9e, 0x0dac, 0x0dba, 0x0dc4, 0x0dce, + 0x0dda, 0x0e08, 0x0e1b, 0x0e23, 0x0e31, 0x0e3d, 0x0e4d, 0x0e62, + 0x0e72, 0x0e96, 0x0ea6, 0x0eb6, 0x0ec9, 0x0ed7, 0x0ee5, 0x0ef3, + 0x0f0a, 0x0f2c, 0x0f3e, 0x0f51, 0x0f5b, 0x0f6d, 0x0f8b, 0x0fab, + 0x0fb3, 0x0fe5, 0x0fed, 0x0ffb, 0x100d, 0x1019, 0x102f, 0x1043, + 0x104b, 0x1055, 0x105f, 0x107e, 0x108a, 0x1096, 0x10a4, 0x10b4, + 0x10c0, 0x10f5, 0x110e, 0x112d, 0x113b, 0x114d, 0x115f, 0x118c, + 0x119a, 0x11c0, 0x1200, 0x120c, 0x121a, 0x1238, 0x1242, 0x124e, // Entry 100 - 13F - 0x123f, 0x124b, 0x125b, 0x1279, 0x1285, 0x1293, 0x12b0, 0x12cd, - 0x12e1, 0x12f6, 0x130f, 0x1324, 0x133b, 0x1350, 0x136f, 0x1383, - 0x1398, 0x13a8, 0x13b7, 0x13c8, 0x13e0, 0x13f5, 0x1409, 0x141b, - 0x143e, 0x1450, 0x1458, 0x1467, 0x1476, 0x1482, 0x1495, 0x14aa, - 0x14bd, 0x14dc, -} // Size: 604 bytes - -var azRegionStr string = "" + // Size: 3177 bytes - "Yüksəliş AdasıAndorraBirləşmiş Ərəb ƏmirlikləriƏfqanıstanAntiqua və Barb" + - "udaAngilaAlbaniyaErmənistanAnqolaAntarktikaArgentinaAmerika SamoasıAvstr" + - "iyaAvstraliyaArubaAland AdalarıAzərbaycanBosniya və HersoqovinaBarbadosB" + - "anqladeşBelçikaBurkina FasoBolqariyaBəhreynBurundiBeninSan BartolomeyBer" + - "mudaBruneyBoliviyaKarib NiderlandıBraziliyaBaham AdalarıButanBuve AdasıB" + - "otsvanaBelarusBelizKanadaKokos AdalarıKonqo - KinşasaMərkəzi Afrika Resp" + - "ublikasıKonqo - BrazzavilİsveçrəFil Dişi SahiliKuk AdalarıÇiliKamerunÇin" + - "KolumbiyaKlipperton AdasıKosta RikaKubaKape VerdeKurasaoMilad AdasıKiprÇ" + - "exiyaAlmaniyaDieqo QarsiyaCibutiDanimarkaDominikaDominikan RespublikasıƏ" + - "lcəzairSeuta və MelilyaEkvadorEstoniyaMisirQərbi SaharaEritreyaİspaniyaE" + - "fiopiyaAvropa BirliyiFinlandiyaFiciFolklend AdalarıMikroneziyaFarer Adal" + - "arıFransaQabonBirləşmiş KrallıqQrenadaGürcüstanFransız QviyanasıGernseyQ" + - "anaGibraltarQrenlandiyaQambiyaQvineyaQvadelupaEkvatorial QvineyaYunanıst" + - "anCənubi Corciya və Cənubi Sendviç AdalarıQvatemalaQuamQvineya-BisauQviy" + - "anaHonq Konq Xüsusi İnzibati Ərazi ÇinHerd və Mak Donald AdalarıHonduras" + - "XorvatiyaHaitiMacarıstanKanar AdalarıİndoneziyaİrlandiyaİsrailMen AdasıH" + - "indistanBritaniya Hind Okeanı ƏrazisiİraqİranİslandiyaİtaliyaCersiYamayk" + - "aİordaniyaYaponiyaKeniyaQırğızıstanKambocaKiribatiKomor AdalarıSan Kits " + - "və NevisŞimali KoreyaCənubi KoreyaKüveytKayman AdalarıQazaxıstanLaosLiva" + - "nSan LüsiyaLixtenşteynŞri LankaLiberiyaLesotoLitvaLüksemburqLatviyaLiviy" + - "aMərakeşMonakoMoldovaMonteneqroSan MartinMadaqaskarMarşal AdalarıMakedon" + - "iyaMaliMyanmaMonqoliyaMakao Xüsusi İnzibati Ərazi ÇinŞimali Mariana Adal" + - "arıMartinikMavritaniyaMonseratMaltaMavrikiMaldiv AdalarıMalaviMeksikaMal" + - "ayziyaMozambikNamibiyaYeni KaledoniyaNigerNorfolk AdasıNigeriyaNikaraqua" + - "NiderlandNorveçNepalNauruNiueYeni ZelandiyaOmanPanamaPeruFransız Polinez" + - "iyasıPapua Yeni QvineyaFilippinPakistanPolşaSan Pier və MikelonPitkern A" + - "dalarıPuerto RikoFələstin ƏraziləriPortuqalPalauParaqvayQatarUzaq Okeani" + - "yaReunionRumıniyaSerbiyaRusiyaRuandaSəudiyyə ƏrəbistanıSolomon AdalarıSe" + - "yşel AdalarıSudanİsveçSinqapurMüqəddəs YelenaSloveniyaSvalbard və Yan Ma" + - "yenSlovakiyaSiera LeonSan MarinoSeneqalSomaliSurinamCənubi SudanSao Tome" + - " və PrinsipSalvadorSint MaartenSuriyaSvazilendTristan da KunyaTurks və K" + - "aikos AdalarıÇadFransa Cənub ƏraziləriToqoTaylandTacikistanTokelauŞərqi " + - "TimorTürkmənistanTunisTonqaTürkiyaTrinidad və TobaqoTuvaluTayvanTanzaniy" + - "aUkraynaUqandaBirləşmiş Ştatlar Uzaq AdalarAmerika Birləşmiş ŞtatlarıUru" + - "qvayÖzbəkistanVatikanSan Vinsent və QrenadaVenesuelaBritaniya Vircin Ada" + - "larıABŞ Vircin AdalarıVyetnamVanuatuUolis və FutunaSamoaKosovoYəmənMayot" + - "Cənub AfrikaZambiyaZimbabveNaməlum RegionDünyaAfrikaŞimali AmerikaCənubi" + - " AmerikaOkeaniyaQərbi AfrikaMərkəzi AmerikaŞərqi AfrikaŞimali AfrikaMərk" + - "əzi AfrikaCənubi AfrikaAmerikalarŞimal AmerikasıKaribŞərqi AsiyaCənubi " + - "AsiyaCənub-Şərqi AsiyaCənubi AvropaAvstralaziyaMelaneziyaMikroneziya Reg" + - "ionuPolineziyaAsiyaMərkəzi AsiyaQərbi AsiyaAvropaŞərqi AvropaŞimali Avro" + - "paQərbi AvropaLatın Amerikası" - -var azRegionIdx = []uint16{ // 290 elements + 0x1258, 0x1262, 0x1279, 0x1285, 0x1295, 0x12b3, 0x12bf, 0x12cd, + 0x12ea, 0x1307, 0x131b, 0x1330, 0x1349, 0x135e, 0x1375, 0x138a, + 0x13a9, 0x13bd, 0x13d2, 0x13e2, 0x13f1, 0x1402, 0x141a, 0x142f, + 0x1443, 0x1455, 0x1478, 0x148a, 0x1492, 0x14a1, 0x14b0, 0x14bc, + 0x14cf, 0x14e4, 0x14f7, 0x1516, +} // Size: 608 bytes + +const azRegionStr string = "" + // Size: 3262 bytes + "Askenson adasıAndorraBirləşmiş Ərəb ƏmirlikləriƏfqanıstanAntiqua və Barb" + + "udaAngilyaAlbaniyaErmənistanAnqolaAntarktikaArgentinaAmerika SamoasıAvst" + + "riyaAvstraliyaArubaAland adalarıAzərbaycanBosniya və HerseqovinaBarbados" + + "BanqladeşBelçikaBurkina FasoBolqarıstanBəhreynBurundiBeninSent-Bartelemi" + + "Bermud adalarıBruneyBoliviyaKarib NiderlandıBraziliyaBaham adalarıButanB" + + "uve adasıBotsvanaBelarusBelizKanadaKokos (Kilinq) adalarıKonqo - Kinşasa" + + "Mərkəzi Afrika RespublikasıKonqo - BrazzavilİsveçrəKotd’ivuarKuk adaları" + + "ÇiliKamerunÇinKolumbiyaKlipperton adasıKosta RikaKubaKabo-VerdeKurasaoM" + + "ilad adasıKiprÇexiyaAlmaniyaDieqo QarsiyaCibutiDanimarkaDominikaDominika" + + "n RespublikasıƏlcəzairSeuta və MelilyaEkvadorEstoniyaMisirQərbi SaxaraEr" + + "itreyaİspaniyaEfiopiyaAvropa BirliyiFinlandiyaFiciFolklend adalarıMikron" + + "eziyaFarer adalarıFransaQabonBirləşmiş KrallıqQrenadaGürcüstanFransa Qvi" + + "anasıGernsiQanaCəbəllütariqQrenlandiyaQambiyaQvineyaQvadelupaEkvatorial " + + "QvineyaYunanıstanCənubi Corciya və Cənubi Sendviç adalarıQvatemalaQuamQv" + + "ineya-BisauQayanaHonq Konq Xüsusi İnzibati Ərazi ÇinHerd və Makdonald ad" + + "alarıHondurasXorvatiyaHaitiMacarıstanKanar adalarıİndoneziyaİrlandiyaİsr" + + "ailMen adasıHindistanBritaniyanın Hind Okeanı Ərazisiİraqİranİslandiyaİt" + + "aliyaCersiYamaykaİordaniyaYaponiyaKeniyaQırğızıstanKambocaKiribatiKomor " + + "adalarıSent-Kits və NevisŞimali KoreyaCənubi KoreyaKüveytKayman adalarıQ" + + "azaxıstanLaosLivanSent-LusiyaLixtenşteynŞri-LankaLiberiyaLesotoLitvaLüks" + + "emburqLatviyaLiviyaMərakeşMonakoMoldovaMonteneqroSent MartinMadaqaskarMa" + + "rşal adalarıMakedoniyaMaliMyanmaMonqolustanMakao Xüsusi İnzibati Ərazi Ç" + + "inŞimali Marian adalarıMartinikMavritaniyaMonseratMaltaMavrikiMaldiv ada" + + "larıMalaviMeksikaMalayziyaMozambikNamibiyaYeni KaledoniyaNigerNorfolk ad" + + "asıNigeriyaNikaraquaNiderlandNorveçNepalNauruNiueYeni ZelandiyaOmanPanam" + + "aPeruFransa PolineziyasıPapua-Yeni QvineyaFilippinPakistanPolşaMüqəddəs " + + "Pyer və MikelonPitkern adalarıPuerto RikoFələstin ƏraziləriPortuqaliyaPa" + + "lauParaqvayQətərUzaq OkeaniyaReyunyonRumıniyaSerbiyaRusiyaRuandaSəudiyyə" + + " ƏrəbistanıSolomon adalarıSeyşel adalarıSudanİsveçSinqapurMüqəddəs Yelen" + + "aSloveniyaSvalbard və Yan-MayenSlovakiyaSyerra-LeoneSan-MarinoSeneqalSom" + + "aliSurinamCənubi SudanSan-Tome və PrinsipiSalvadorSint-MartenSuriyaSvazi" + + "lendTristan da KunyaTörks və Kaykos adalarıÇadFransanın Cənub ƏraziləriT" + + "oqoTailandTacikistanTokelauŞərqi TimorTürkmənistanTunisTonqaTürkiyəTrini" + + "dad və TobaqoTuvaluTayvanTanzaniyaUkraynaUqandaABŞ-a bağlı kiçik adacıql" + + "arBirləşmiş Millətlər TəşkilatıAmerika Birləşmiş ŞtatlarıUruqvayÖzbəkist" + + "anVatikanSent-Vinsent və QrenadinlərVenesuelaBritaniyanın Virgin adaları" + + "ABŞ Virgin adalarıVyetnamVanuatuUollis və FutunaSamoaKosovoYəmənMayotCən" + + "ub AfrikaZambiyaZimbabveNaməlum RegionDünyaAfrikaŞimali AmerikaCənubi Am" + + "erikaOkeaniyaQərbi AfrikaMərkəzi AmerikaŞərqi AfrikaŞimali AfrikaMərkəzi" + + " AfrikaCənubi AfrikaAmerikaŞimal AmerikasıKaribŞərqi AsiyaCənubi AsiyaCə" + + "nub-Şərqi AsiyaCənubi AvropaAvstralaziyaMelaneziyaMikroneziya RegionuPol" + + "ineziyaAsiyaMərkəzi AsiyaQərbi AsiyaAvropaŞərqi AvropaŞimali AvropaQərbi" + + " AvropaLatın Amerikası" + +var azRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0012, 0x0019, 0x003a, 0x0046, 0x0059, 0x005f, 0x0067, - 0x0072, 0x0078, 0x0082, 0x008b, 0x009b, 0x00a3, 0x00ad, 0x00b2, - 0x00c0, 0x00cb, 0x00e2, 0x00ea, 0x00f4, 0x00fc, 0x0108, 0x0111, - 0x0119, 0x0120, 0x0125, 0x0133, 0x013a, 0x0140, 0x0148, 0x0159, - 0x0162, 0x0170, 0x0175, 0x0180, 0x0188, 0x018f, 0x0194, 0x019a, - 0x01a8, 0x01b8, 0x01d6, 0x01e7, 0x01f1, 0x0201, 0x020d, 0x0212, - 0x0219, 0x021d, 0x0226, 0x0237, 0x0241, 0x0245, 0x024f, 0x0256, - 0x0262, 0x0266, 0x026d, 0x0275, 0x0282, 0x0288, 0x0291, 0x0299, + 0x0000, 0x000f, 0x0016, 0x0037, 0x0043, 0x0056, 0x005d, 0x0065, + 0x0070, 0x0076, 0x0080, 0x0089, 0x0099, 0x00a1, 0x00ab, 0x00b0, + 0x00be, 0x00c9, 0x00e0, 0x00e8, 0x00f2, 0x00fa, 0x0106, 0x0112, + 0x011a, 0x0121, 0x0126, 0x0134, 0x0143, 0x0149, 0x0151, 0x0162, + 0x016b, 0x0179, 0x017e, 0x0189, 0x0191, 0x0198, 0x019d, 0x01a3, + 0x01ba, 0x01ca, 0x01e8, 0x01f9, 0x0203, 0x020f, 0x021b, 0x0220, + 0x0227, 0x022b, 0x0234, 0x0245, 0x024f, 0x0253, 0x025d, 0x0264, + 0x0270, 0x0274, 0x027b, 0x0283, 0x0290, 0x0296, 0x029f, 0x02a7, // Entry 40 - 7F - 0x02b0, 0x02ba, 0x02cb, 0x02d2, 0x02da, 0x02df, 0x02ec, 0x02f4, - 0x02fd, 0x0305, 0x0313, 0x031d, 0x0321, 0x0332, 0x033d, 0x034b, - 0x0351, 0x0356, 0x036b, 0x0372, 0x037d, 0x0390, 0x0397, 0x039b, - 0x03a4, 0x03af, 0x03b6, 0x03bd, 0x03c6, 0x03d8, 0x03e3, 0x0410, - 0x0419, 0x041d, 0x042a, 0x0431, 0x0458, 0x0474, 0x047c, 0x0485, - 0x048a, 0x0495, 0x04a3, 0x04ae, 0x04b8, 0x04bf, 0x04c9, 0x04d2, - 0x04f1, 0x04f6, 0x04fb, 0x0505, 0x050d, 0x0512, 0x0519, 0x0523, - 0x052b, 0x0531, 0x0540, 0x0547, 0x054f, 0x055d, 0x056f, 0x057d, + 0x02be, 0x02c8, 0x02d9, 0x02e0, 0x02e8, 0x02ed, 0x02fa, 0x0302, + 0x030b, 0x0313, 0x0321, 0x0321, 0x032b, 0x032f, 0x0340, 0x034b, + 0x0359, 0x035f, 0x0364, 0x0379, 0x0380, 0x038b, 0x039b, 0x03a1, + 0x03a5, 0x03b4, 0x03bf, 0x03c6, 0x03cd, 0x03d6, 0x03e8, 0x03f3, + 0x0420, 0x0429, 0x042d, 0x043a, 0x0440, 0x0467, 0x0482, 0x048a, + 0x0493, 0x0498, 0x04a3, 0x04b1, 0x04bc, 0x04c6, 0x04cd, 0x04d7, + 0x04e0, 0x0503, 0x0508, 0x050d, 0x0517, 0x051f, 0x0524, 0x052b, + 0x0535, 0x053d, 0x0543, 0x0552, 0x0559, 0x0561, 0x056f, 0x0582, // Entry 80 - BF - 0x058b, 0x0592, 0x05a1, 0x05ac, 0x05b0, 0x05b5, 0x05c0, 0x05cc, - 0x05d6, 0x05de, 0x05e4, 0x05e9, 0x05f4, 0x05fb, 0x0601, 0x060a, - 0x0610, 0x0617, 0x0621, 0x062b, 0x0635, 0x0645, 0x064f, 0x0653, - 0x0659, 0x0662, 0x0685, 0x069d, 0x06a5, 0x06b0, 0x06b8, 0x06bd, - 0x06c4, 0x06d3, 0x06d9, 0x06e0, 0x06e9, 0x06f1, 0x06f9, 0x0708, - 0x070d, 0x071b, 0x0723, 0x072c, 0x0735, 0x073c, 0x0741, 0x0746, - 0x074a, 0x0758, 0x075c, 0x0762, 0x0766, 0x077c, 0x078e, 0x0796, - 0x079e, 0x07a4, 0x07b8, 0x07c8, 0x07d3, 0x07e9, 0x07f1, 0x07f6, + 0x0590, 0x059e, 0x05a5, 0x05b4, 0x05bf, 0x05c3, 0x05c8, 0x05d3, + 0x05df, 0x05e9, 0x05f1, 0x05f7, 0x05fc, 0x0607, 0x060e, 0x0614, + 0x061d, 0x0623, 0x062a, 0x0634, 0x063f, 0x0649, 0x0659, 0x0663, + 0x0667, 0x066d, 0x0678, 0x069b, 0x06b2, 0x06ba, 0x06c5, 0x06cd, + 0x06d2, 0x06d9, 0x06e8, 0x06ee, 0x06f5, 0x06fe, 0x0706, 0x070e, + 0x071d, 0x0722, 0x0730, 0x0738, 0x0741, 0x074a, 0x0751, 0x0756, + 0x075b, 0x075f, 0x076d, 0x0771, 0x0777, 0x077b, 0x078f, 0x07a1, + 0x07a9, 0x07b1, 0x07b7, 0x07d3, 0x07e3, 0x07ee, 0x0804, 0x080f, // Entry C0 - FF - 0x07fe, 0x0803, 0x0810, 0x0817, 0x0820, 0x0827, 0x082d, 0x0833, - 0x084b, 0x085b, 0x086b, 0x0870, 0x0877, 0x087f, 0x0891, 0x089a, - 0x08b0, 0x08b9, 0x08c3, 0x08cd, 0x08d4, 0x08da, 0x08e1, 0x08ee, - 0x0902, 0x090a, 0x0916, 0x091c, 0x0925, 0x0935, 0x094e, 0x0952, - 0x096b, 0x096f, 0x0976, 0x0980, 0x0987, 0x0994, 0x09a2, 0x09a7, - 0x09ac, 0x09b4, 0x09c7, 0x09cd, 0x09d3, 0x09dc, 0x09e3, 0x09e9, - 0x0a0a, 0x0a29, 0x0a30, 0x0a3c, 0x0a43, 0x0a5a, 0x0a63, 0x0a7c, - 0x0a90, 0x0a97, 0x0a9e, 0x0aae, 0x0ab3, 0x0ab9, 0x0ac0, 0x0ac5, + 0x0814, 0x081c, 0x0823, 0x0830, 0x0838, 0x0841, 0x0848, 0x084e, + 0x0854, 0x086c, 0x087c, 0x088c, 0x0891, 0x0898, 0x08a0, 0x08b2, + 0x08bb, 0x08d1, 0x08da, 0x08e6, 0x08f0, 0x08f7, 0x08fd, 0x0904, + 0x0911, 0x0926, 0x092e, 0x0939, 0x093f, 0x0948, 0x0958, 0x0972, + 0x0976, 0x0993, 0x0997, 0x099e, 0x09a8, 0x09af, 0x09bc, 0x09ca, + 0x09cf, 0x09d4, 0x09dd, 0x09f0, 0x09f6, 0x09fc, 0x0a05, 0x0a0c, + 0x0a12, 0x0a32, 0x0a57, 0x0a76, 0x0a7d, 0x0a89, 0x0a90, 0x0aad, + 0x0ab6, 0x0ad3, 0x0ae7, 0x0aee, 0x0af5, 0x0b06, 0x0b0b, 0x0b11, // Entry 100 - 13F - 0x0ad2, 0x0ad9, 0x0ae1, 0x0af0, 0x0af6, 0x0afc, 0x0b0b, 0x0b1a, - 0x0b22, 0x0b2f, 0x0b40, 0x0b4e, 0x0b5c, 0x0b6c, 0x0b7a, 0x0b84, - 0x0b95, 0x0b9a, 0x0ba7, 0x0bb4, 0x0bc8, 0x0bd6, 0x0be2, 0x0bec, - 0x0bff, 0x0c09, 0x0c0e, 0x0c1d, 0x0c29, 0x0c2f, 0x0c3d, 0x0c4b, - 0x0c58, 0x0c69, -} // Size: 604 bytes - -var bgRegionStr string = "" + // Size: 5868 bytes + 0x0b18, 0x0b1d, 0x0b2a, 0x0b31, 0x0b39, 0x0b48, 0x0b4e, 0x0b54, + 0x0b63, 0x0b72, 0x0b7a, 0x0b87, 0x0b98, 0x0ba6, 0x0bb4, 0x0bc4, + 0x0bd2, 0x0bd9, 0x0bea, 0x0bef, 0x0bfc, 0x0c09, 0x0c1d, 0x0c2b, + 0x0c37, 0x0c41, 0x0c54, 0x0c5e, 0x0c63, 0x0c72, 0x0c7e, 0x0c84, + 0x0c92, 0x0ca0, 0x0cad, 0x0cbe, +} // Size: 608 bytes + +const bgRegionStr string = "" + // Size: 5910 bytes "остров ВъзнесениеАндораОбединени арабски емирстваАфганистанАнтигуа и Бар" + "будаАнгуилаАлбанияАрменияАнголаАнтарктикаАржентинаАмериканска СамоаАвст" + "рияАвстралияАрубаОландски островиАзербайджанБосна и ХерцеговинаБарбадос" + @@ -38690,43 +43742,43 @@ var bgRegionStr string = "" + // Size: 5868 bytes "в БувеБотсванаБеларусБелизКанадаКокосови острови (острови Кийлинг)Конго" + " (Киншаса)Централноафриканска републикаКонго (Бразавил)ШвейцарияКот д’Ив" + "оарострови КукЧилиКамерунКитайКолумбияостров КлипертонКоста РикаКубаКаб" + - "о ВердеКюрасаоостров РождествоКипърЧешка републикаГерманияДиего ГарсияД" + - "жибутиДанияДоминикаДоминиканска републикаАлжирСеута и МелияЕквадорЕстон" + - "ияЕгипетЗападна СахараЕритреяИспанияЕтиопияЕвропейски съюзФинландияФидж" + - "иФолклендски островиМикронезияФарьорски островиФранцияГабонОбединеното " + - "кралствоГренадаГрузияФренска ГвианаГърнзиГанаГибралтарГренландияГамбияГ" + - "винеяГваделупаЕкваториална ГвинеяГърцияЮжна Джорджия и Южни Сандвичеви " + - "островиГватемалаГуамГвинея-БисауГаянаХонконг, САР на Китайостров Хърд и" + - " острови МакдоналдХондурасХърватияХаитиУнгарияКанарски островиИндонезияИ" + - "рландияИзраелостров МанИндияБританска територия в Индийския океанИракИр" + - "анИсландияИталияДжърсиЯмайкаЙорданияЯпонияКенияКиргизстанКамбоджаКириба" + - "тиКоморски островиСейнт Китс и НевисСеверна КореяЮжна КореяКувейтКайман" + - "ови островиКазахстанЛаосЛиванСейнт ЛусияЛихтенщайнШри ЛанкаЛиберияЛесот" + - "оЛитваЛюксембургЛатвияЛибияМарокоМонакоМолдоваЧерна гораСен МартенМадаг" + - "аскарМаршалови островиМакедонияМалиМианмар (Бирма)МонголияМакао, САР на" + - " КитайСеверни Мариански островиМартиникаМавританияМонтсератМалтаМавриций" + - "МалдивиМалавиМексикоМалайзияМозамбикНамибияНова КаледонияНигеростров Но" + - "рфолкНигерияНикарагуаНидерландияНорвегияНепалНауруНиуеНова ЗеландияОман" + - "ПанамаПеруФренска ПолинезияПапуа-Нова ГвинеяФилипиниПакистанПолшаСен Пи" + - "ер и МикелонОстрови ПиткернПуерто РикоПалестински територииПортугалияПа" + - "лауПарагвайКатарОтдалечени острови на ОкеанияРеюнионРумънияСърбияРусияР" + - "уандаСаудитска АрабияСоломонови островиСейшелиСуданШвецияСингапурСвета " + - "ЕленаСловенияСвалбард и Ян МайенСловакияСиера ЛеонеСан МариноСенегалСом" + - "алияСуринамЮжен СуданСао Томе и ПринсипиСалвадорСинт МартенСирияСвазиле" + - "ндТристан да Куняострови Търкс и КайкосЧадФренски южни територииТогоТай" + - "ландТаджикистанТокелауИзточен ТиморТуркменистанТунисТонгаТурцияТринидад" + - " и ТобагоТувалуТайванТанзанияУкрайнаУгандаОтдалечени острови на САЩСъеди" + - "нени щатиУругвайУзбекистанВатиканСейнт Винсънт и ГренадиниВенецуелаБрит" + - "ански Вирджински островиАмерикански Вирджински островиВиетнамВануатуУол" + - "ис и ФутунаСамоаКосовоЙеменМайотЮжна АфрикаЗамбияЗимбабвенепознат регио" + - "нСвятАфрикаСеверноамерикански континентЮжна АмерикаОкеанияЗападна Афирк" + - "аЦентрална АмерикаИзточна АфрикаСеверна АфрикаЦентрална АфрикаЮжноафрик" + - "ански регионАмерикаСеверна АмерикаКарибски регионИзточна АзияЮжна АзияЮ" + - "гоизточна АзияЮжна ЕвропаАвстралазияМеланезияМикронезийски регионПолине" + - "зияАзияЦентрална АзияЗападна АзияЕвропаИзточна ЕвропаСеверна ЕвропаЗапа" + - "дна ЕвропаЛатинска Америка" - -var bgRegionIdx = []uint16{ // 290 elements + "о ВердеКюрасаоостров РождествоКипърЧехияГерманияДиего ГарсияДжибутиДани" + + "яДоминикаДоминиканска републикаАлжирСеута и МелияЕквадорЕстонияЕгипетЗа" + + "падна СахараЕритреяИспанияЕтиопияЕвропейски съюзФинландияФиджиФолклендс" + + "ки островиМикронезияФарьорски островиФранцияГабонОбединеното кралствоГр" + + "енадаГрузияФренска ГвианаГърнзиГанаГибралтарГренландияГамбияГвинеяГваде" + + "лупаЕкваториална ГвинеяГърцияЮжна Джорджия и Южни Сандвичеви островиГва" + + "темалаГуамГвинея-БисауГаянаХонконг, САР на Китайостров Хърд и острови М" + + "акдоналдХондурасХърватияХаитиУнгарияКанарски островиИндонезияИрландияИз" + + "раелостров МанИндияБританска територия в Индийския океанИракИранИсланди" + + "яИталияДжърсиЯмайкаЙорданияЯпонияКенияКиргизстанКамбоджаКирибатиКоморск" + + "и островиСейнт Китс и НевисСеверна КореяЮжна КореяКувейтКайманови остро" + + "виКазахстанЛаосЛиванСейнт ЛусияЛихтенщайнШри ЛанкаЛиберияЛесотоЛитваЛюк" + + "сембургЛатвияЛибияМарокоМонакоМолдоваЧерна гораСен МартенМадагаскарМарш" + + "алови островиМакедонияМалиМианмар (Бирма)МонголияМакао, САР на КитайСев" + + "ерни Мариански островиМартиникаМавританияМонтсератМалтаМаврицийМалдивиМ" + + "алавиМексикоМалайзияМозамбикНамибияНова КаледонияНигеростров НорфолкНиг" + + "ерияНикарагуаНидерландияНорвегияНепалНауруНиуеНова ЗеландияОманПанамаПе" + + "руФренска ПолинезияПапуа-Нова ГвинеяФилипиниПакистанПолшаСен Пиер и Мик" + + "елонОстрови ПиткернПуерто РикоПалестински територииПортугалияПалауПараг" + + "вайКатарОтдалечени острови на ОкеанияРеюнионРумънияСърбияРусияРуандаСау" + + "дитска АрабияСоломонови островиСейшелиСуданШвецияСингапурСвета ЕленаСло" + + "венияСвалбард и Ян МайенСловакияСиера ЛеонеСан МариноСенегалСомалияСури" + + "намЮжен СуданСао Томе и ПринсипиСалвадорСинт МартенСирияСвазилендТриста" + + "н да Куняострови Търкс и КайкосЧадФренски южни територииТогоТайландТадж" + + "икистанТокелауИзточен ТиморТуркменистанТунисТонгаТурцияТринидад и Тобаг" + + "оТувалуТайванТанзанияУкрайнаУгандаОтдалечени острови на САЩОрганизация " + + "на обединените нацииСъединени щатиУругвайУзбекистанВатиканСейнт Винсънт" + + " и ГренадиниВенецуелаБритански Вирджински островиАмерикански Вирджински " + + "островиВиетнамВануатуУолис и ФутунаСамоаКосовоЙеменМайотЮжна АфрикаЗамб" + + "ияЗимбабвенепознат регионСвятАфрикаСеверноамерикански континентЮжна Аме" + + "рикаОкеанияЗападна АфиркаЦентрална АмерикаИзточна АфрикаСеверна АфрикаЦ" + + "ентрална АфрикаЮжноафрикански регионАмерикаСеверна АмерикаКарибски реги" + + "онИзточна АзияЮжна АзияЮгоизточна АзияЮжна ЕвропаАвстралазияМеланезияМи" + + "кронезийски регионПолинезияАзияЦентрална АзияЗападна АзияЕвропаИзточна " + + "ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка" + +var bgRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0021, 0x002d, 0x005f, 0x0073, 0x0093, 0x00a1, 0x00af, 0x00bd, 0x00c9, 0x00dd, 0x00ef, 0x0110, 0x011e, 0x0130, 0x013a, @@ -38735,137 +43787,137 @@ var bgRegionIdx = []uint16{ // 290 elements 0x029b, 0x02a7, 0x02b1, 0x02c6, 0x02d6, 0x02e4, 0x02ee, 0x02fa, 0x0339, 0x0354, 0x038d, 0x03aa, 0x03bc, 0x03d2, 0x03e7, 0x03ef, 0x03fd, 0x0407, 0x0417, 0x0436, 0x0449, 0x0451, 0x0464, 0x0472, - 0x0491, 0x049b, 0x04b8, 0x04c8, 0x04df, 0x04ed, 0x04f7, 0x0507, + 0x0491, 0x049b, 0x04a5, 0x04b5, 0x04cc, 0x04da, 0x04e4, 0x04f4, // Entry 40 - 7F - 0x0532, 0x053c, 0x0554, 0x0562, 0x0570, 0x057c, 0x0597, 0x05a5, - 0x05b3, 0x05c1, 0x05de, 0x05f0, 0x05fa, 0x061f, 0x0633, 0x0654, - 0x0662, 0x066c, 0x0693, 0x06a1, 0x06ad, 0x06c8, 0x06d4, 0x06dc, - 0x06ee, 0x0702, 0x070e, 0x071a, 0x072c, 0x0751, 0x075d, 0x07a6, - 0x07b8, 0x07c0, 0x07d7, 0x07e1, 0x0807, 0x0841, 0x0851, 0x0861, - 0x086b, 0x0879, 0x0898, 0x08aa, 0x08ba, 0x08c6, 0x08d9, 0x08e3, - 0x0929, 0x0931, 0x0939, 0x0949, 0x0955, 0x0961, 0x096d, 0x097d, - 0x0989, 0x0993, 0x09a7, 0x09b7, 0x09c7, 0x09e6, 0x0a07, 0x0a20, + 0x051f, 0x0529, 0x0541, 0x054f, 0x055d, 0x0569, 0x0584, 0x0592, + 0x05a0, 0x05ae, 0x05cb, 0x05cb, 0x05dd, 0x05e7, 0x060c, 0x0620, + 0x0641, 0x064f, 0x0659, 0x0680, 0x068e, 0x069a, 0x06b5, 0x06c1, + 0x06c9, 0x06db, 0x06ef, 0x06fb, 0x0707, 0x0719, 0x073e, 0x074a, + 0x0793, 0x07a5, 0x07ad, 0x07c4, 0x07ce, 0x07f4, 0x082e, 0x083e, + 0x084e, 0x0858, 0x0866, 0x0885, 0x0897, 0x08a7, 0x08b3, 0x08c6, + 0x08d0, 0x0916, 0x091e, 0x0926, 0x0936, 0x0942, 0x094e, 0x095a, + 0x096a, 0x0976, 0x0980, 0x0994, 0x09a4, 0x09b4, 0x09d3, 0x09f4, // Entry 80 - BF - 0x0a33, 0x0a3f, 0x0a60, 0x0a72, 0x0a7a, 0x0a84, 0x0a99, 0x0aad, - 0x0abe, 0x0acc, 0x0ad8, 0x0ae2, 0x0af6, 0x0b02, 0x0b0c, 0x0b18, - 0x0b24, 0x0b32, 0x0b45, 0x0b58, 0x0b6c, 0x0b8d, 0x0b9f, 0x0ba7, - 0x0bc2, 0x0bd2, 0x0bf4, 0x0c24, 0x0c36, 0x0c4a, 0x0c5c, 0x0c66, - 0x0c76, 0x0c84, 0x0c90, 0x0c9e, 0x0cae, 0x0cbe, 0x0ccc, 0x0ce7, - 0x0cf1, 0x0d0c, 0x0d1a, 0x0d2c, 0x0d42, 0x0d52, 0x0d5c, 0x0d66, - 0x0d6e, 0x0d87, 0x0d8f, 0x0d9b, 0x0da3, 0x0dc4, 0x0de4, 0x0df4, - 0x0e04, 0x0e0e, 0x0e2f, 0x0e4c, 0x0e61, 0x0e8a, 0x0e9e, 0x0ea8, + 0x0a0d, 0x0a20, 0x0a2c, 0x0a4d, 0x0a5f, 0x0a67, 0x0a71, 0x0a86, + 0x0a9a, 0x0aab, 0x0ab9, 0x0ac5, 0x0acf, 0x0ae3, 0x0aef, 0x0af9, + 0x0b05, 0x0b11, 0x0b1f, 0x0b32, 0x0b45, 0x0b59, 0x0b7a, 0x0b8c, + 0x0b94, 0x0baf, 0x0bbf, 0x0be1, 0x0c11, 0x0c23, 0x0c37, 0x0c49, + 0x0c53, 0x0c63, 0x0c71, 0x0c7d, 0x0c8b, 0x0c9b, 0x0cab, 0x0cb9, + 0x0cd4, 0x0cde, 0x0cf9, 0x0d07, 0x0d19, 0x0d2f, 0x0d3f, 0x0d49, + 0x0d53, 0x0d5b, 0x0d74, 0x0d7c, 0x0d88, 0x0d90, 0x0db1, 0x0dd1, + 0x0de1, 0x0df1, 0x0dfb, 0x0e1c, 0x0e39, 0x0e4e, 0x0e77, 0x0e8b, // Entry C0 - FF - 0x0eb8, 0x0ec2, 0x0ef9, 0x0f07, 0x0f15, 0x0f21, 0x0f2b, 0x0f37, - 0x0f56, 0x0f79, 0x0f87, 0x0f91, 0x0f9d, 0x0fad, 0x0fc2, 0x0fd2, - 0x0ff5, 0x1005, 0x101a, 0x102d, 0x103b, 0x1049, 0x1057, 0x106a, - 0x108d, 0x109d, 0x10b2, 0x10bc, 0x10ce, 0x10ea, 0x1113, 0x1119, - 0x1143, 0x114b, 0x1159, 0x116f, 0x117d, 0x1196, 0x11ae, 0x11b8, - 0x11c2, 0x11ce, 0x11ee, 0x11fa, 0x1206, 0x1216, 0x1224, 0x1230, - 0x125f, 0x127a, 0x1288, 0x129c, 0x12aa, 0x12d9, 0x12eb, 0x1321, - 0x135b, 0x1369, 0x1377, 0x1391, 0x139b, 0x13a7, 0x13b1, 0x13bb, + 0x0e95, 0x0ea5, 0x0eaf, 0x0ee6, 0x0ef4, 0x0f02, 0x0f0e, 0x0f18, + 0x0f24, 0x0f43, 0x0f66, 0x0f74, 0x0f7e, 0x0f8a, 0x0f9a, 0x0faf, + 0x0fbf, 0x0fe2, 0x0ff2, 0x1007, 0x101a, 0x1028, 0x1036, 0x1044, + 0x1057, 0x107a, 0x108a, 0x109f, 0x10a9, 0x10bb, 0x10d7, 0x1100, + 0x1106, 0x1130, 0x1138, 0x1146, 0x115c, 0x116a, 0x1183, 0x119b, + 0x11a5, 0x11af, 0x11bb, 0x11db, 0x11e7, 0x11f3, 0x1203, 0x1211, + 0x121d, 0x124c, 0x1289, 0x12a4, 0x12b2, 0x12c6, 0x12d4, 0x1303, + 0x1315, 0x134b, 0x1385, 0x1393, 0x13a1, 0x13bb, 0x13c5, 0x13d1, // Entry 100 - 13F - 0x13d0, 0x13dc, 0x13ec, 0x1409, 0x1411, 0x141d, 0x1454, 0x146b, - 0x1479, 0x1494, 0x14b5, 0x14d0, 0x14eb, 0x150a, 0x1533, 0x1541, - 0x155e, 0x157b, 0x1592, 0x15a3, 0x15c0, 0x15d5, 0x15eb, 0x15fd, - 0x1624, 0x1636, 0x163e, 0x1659, 0x1670, 0x167c, 0x1697, 0x16b2, - 0x16cd, 0x16ec, -} // Size: 604 bytes - -var bnRegionStr string = "" + // Size: 9498 bytes - "অ্যাসসেনশন আইল্যান্ডএ্যান্ডোরাসংযুক্ত আরব আমিরাতআফগানিস্তানএন্টিগুয়া ও " + - "বারবুডাএ্যাঙ্গুইলাআলব্যানিয়াআর্মেনিয়াঅ্যাঙ্গোলাঅ্যান্টার্কটিকাআর্জেন" + - "্টিনাআমেরিকান সামোয়াঅস্ট্রিয়াঅস্ট্রেলিয়াআরুবাআলান্ড দ্বীপপুঞ্জআজারব" + - "াইজানবসনিয়া ও হার্জেগোভিনাবারবাদোসবাংলাদেশবেলজিয়ামবুরকিনা ফাসোবুলগের" + - "িয়াবাহরাইনবুরুন্ডিবেনিনসেন্ট বারথেলিমিবারমুডাব্রুনেইবোলিভিয়াক্যারিবি" + - "য়ান নেদারল্যান্ডসব্রাজিলবাহামা দ্বীপপুঞ্জভুটানবোভেট দ্বীপবতসোয়ানাবেল" + - "োরুশিয়াবেলিজকানাডাকোকোস (কিলিং)দ্বীপপুঞ্জকঙ্গো-কিনশাসামধ্য আফ্রিকার প" + - "্রজাতন্ত্রকঙ্গো - ব্রাজাভিলসুইজারল্যান্ডআইভরি কোস্টকুক দ্বীপপুঞ্জচিলিক" + - "্যামেরুনচীনকোলোম্বিয়াক্লিপারটন আইল্যান্ডকোস্টারিকাকিউবাকেপভার্দেকিউরা" + - "সাওক্রিসমাস দ্বীপসাইপ্রাসচেক প্রজাতন্ত্রজার্মানিদিয়েগো গার্সিয়াজিবুত" + - "িডেনমার্কডোমিনিকাডোমেনিকান প্রজাতন্ত্রআলজেরিয়াকুউটা এবং মেলিলাইকুয়েড" + - "রএস্তোনিয়ামিশরপশ্চিম সাহারাইরিত্রিয়াস্পেনইফিওপিয়াইউরোপীয় ইউনিয়নফি" + - "নল্যান্ডফিজিফকল্যান্ড দ্বীপপুঞ্জমাইক্রোনেশিয়াফ্যারও দ্বীপপুঞ্জফ্রান্স" + - "গ্যাবনযুক্তরাজ্যগ্রেনেডাজর্জিয়াফরাসী গায়ানাগ্রাঞ্জিঘানাজিব্রাল্টারগ্" + - "রীনল্যান্ডগাম্বিয়াগিনিগুয়াদেলৌপনিরক্ষীয় গিনিগ্রীসদক্ষিণ জর্জিয়া ও " + - "দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জগোয়াতেমালাগুয়ামগিনি-বিসাউগিয়ানাহংকং এসএ" + - "আর চীনাহার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জহণ্ডুরাসক্রোয়েশিয়াহাইত" + - "িহাঙ্গেরিক্যানারি দ্বীপপুঞ্জইন্দোনেশিয়াআয়ারল্যান্ডইজরায়েলআইল অফ ম্য" + - "ানভারতব্রিটিশ ভারত মহাসাগরীয় অঞ্চলইরাকইরানআইসল্যান্ডইতালীজার্সিজামাইক" + - "াজর্ডনজাপানকেনিয়াকির্গিজিয়াকম্বোডিয়াকিরিবাতিকমোরোসসেন্ট কিটস ও নেভি" + - "সউত্তর কোরিয়াদক্ষিণ কোরিয়াকুয়েতকেম্যান দ্বীপপুঞ্জকাজাখস্তানলাওসলেবা" + - "ননসেন্ট লুসিয়ালিচেনস্টেইনশ্রীলঙ্কালাইবেরিয়ালেসোথোলিথুয়ানিয়ালাক্সেম" + - "বার্গলাত্ভিয়ালিবিয়ামোরক্কোমোনাকোমোল্দাভিয়ামন্টিনিগ্রোসেন্ট মার্টিনম" + - "াদাগাস্কারমার্শাল দ্বীপপুঞ্জম্যাসাডোনিয়ামালিমায়ানমার (বার্মা)মঙ্গোলি" + - "য়াম্যাকাও এস এ আর চায়নাউত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জমার্টিনিকমর" + - "িতানিয়ামন্টসেরাটমাল্টামরিশাসমালদ্বীপমালাউইমেক্সিকোমালয়েশিয়ামোজাম্বি" + - "কনামিবিয়ানিউ ক্যালেডোনিয়ানাইজারনিরফোক দ্বীপনাইজেরিয়ানিকারাগুয়ানেদা" + - "রল্যান্ডসনরওয়েনেপালনাউরুনিউয়েনিউজিল্যান্ডওমানপানামাপিরুফরাসী পলিনেশি" + - "য়াপাপুয়া নিউ গিনিফিলিপাইনপাকিস্তানপোল্যান্ডসেন্ট পিয়ের ও মিকুয়েলনপ" + - "িটকেয়ার্ন দ্বীপপুঞ্জপুয়ের্তো রিকোফিলিস্তিন অঞ্চলসমূহপর্তুগালপালাউপ্য" + - "ারাগুয়েকাতারআউটলাইনিং ওসানিয়ারিইউনিয়নরুমানিয়াসার্বিয়ারাশিয়ারুয়া" + - "ন্ডাসৌদি আরবসলোমন দ্বীপপুঞ্জসিসিলিসুদানসুইডেনসিঙ্গাপুরসেন্ট হেলেনাস্লো" + - "ভানিয়াস্বালবার্ড ও জান মেয়েনশ্লোভাকিয়াসিয়েরালিওনসান মারিনোসেনেগালস" + - "োমালিয়াসুরিনামদক্ষিন সুদানসাওটোমা ও প্রিন্সিপিএল সালভেদরসিন্ট মার্টেন" + - "সিরিয়াসোয়াজিল্যান্ডট্রিস্টান ডা কুনহাতুর্কস ও কাইকোস দ্বীপপুঞ্জচাদফর" + - "াসী দক্ষিণাঞ্চলটোগোথাইল্যান্ডতাজিকস্থানটোকেলাউতিমুর-লেস্তেতুর্কমেনিস্ত" + - "ানতিউনিশিয়াটোঙ্গাতুরস্কত্রিনিনাদ ও টোব্যাগোটুভালুতাইওয়ানতাঞ্জানিয়াই" + - "উক্রেইনউগান্ডাযুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জমার্কিন যুক্তরাষ্ট" + - "্রউরুগুয়েউজবেকিস্তানভ্যাটিকান সিটিসেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনসভেন" + - "েজুয়েলাব্রিটিশ ভার্জিন দ্বীপপুঞ্জমার্কিন ভার্জিন দ্বীপপুঞ্জভিয়েতনামভ" + - "ানুয়াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্তেদক্ষিণ আফ্রিকাজাম্" + - "বিয়াজিম্বাবোয়েঅজানা স্থানপৃথিবীআফ্রিকাউত্তর আমেরিকাদক্ষিণ আমেরিকাওশি" + - "য়ানিয়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্তর আফ্রিকামধ্য আফ্রি" + - "কাদক্ষিন আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারাবিয়ানপূর্ব এশিয়াদ" + - "ক্ষিণ এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রালেশিয়াম্যালেনেশিয়া" + - "ম্যালেনিশা অঞ্চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এশিয়াইউরোপপূর্ব ইউর" + - "োপউত্তর ইউরোপপশ্চিম ইউরোপল্যাটিন আমেরিকা" - -var bnRegionIdx = []uint16{ // 290 elements + 0x13db, 0x13e5, 0x13fa, 0x1406, 0x1416, 0x1433, 0x143b, 0x1447, + 0x147e, 0x1495, 0x14a3, 0x14be, 0x14df, 0x14fa, 0x1515, 0x1534, + 0x155d, 0x156b, 0x1588, 0x15a5, 0x15bc, 0x15cd, 0x15ea, 0x15ff, + 0x1615, 0x1627, 0x164e, 0x1660, 0x1668, 0x1683, 0x169a, 0x16a6, + 0x16c1, 0x16dc, 0x16f7, 0x1716, +} // Size: 608 bytes + +const bnRegionStr string = "" + // Size: 9509 bytes + "অ্যাসসেনশন আইল্যান্ডআন্ডোরাসংযুক্ত আরব আমিরাতআফগানিস্তানএন্টিগুয়া ও বার" + + "বুডাএ্যাঙ্গুইলাআলবেনিয়াআর্মেনিয়াঅ্যাঙ্গোলাঅ্যান্টার্কটিকাআর্জেন্টিনা" + + "আমেরিকান সামোয়াঅস্ট্রিয়াঅস্ট্রেলিয়াআরুবাআলান্ড দ্বীপপুঞ্জআজারবাইজান" + + "বসনিয়া ও হার্জেগোভিনাবারবাদোসবাংলাদেশবেলজিয়ামবুরকিনা ফাসোবুলগেরিয়াব" + + "াহরাইনবুরুন্ডিবেনিনসেন্ট বারথেলিমিবারমুডাব্রুনেইবলিভিয়াক্যারিবিয়ান ন" + + "েদারল্যান্ডসব্রাজিলবাহামা দ্বীপপুঞ্জভুটানবোভেট দ্বীপবতসোয়ানাবেলারুশবে" + + "লিজকানাডাকোকোস (কিলিং) দ্বীপপুঞ্জকঙ্গো-কিনশাসামধ্য আফ্রিকার প্রজাতন্ত্" + + "রকঙ্গো - ব্রাজাভিলসুইজারল্যান্ডআইভরি কোস্টকুক দ্বীপপুঞ্জচিলিক্যামেরুনচ" + + "ীনকলম্বিয়াক্লিপারটন আইল্যান্ডকোস্টারিকাকিউবাকেপভার্দেকিউরাসাওক্রিসমাস" + + " দ্বীপসাইপ্রাসচেচিয়াজার্মানিদিয়েগো গার্সিয়াজিবুতিডেনমার্কডোমিনিকাডোমে" + + "নিকান প্রজাতন্ত্রআলজেরিয়াকুউটা এবং মেলিলাইকুয়েডরএস্তোনিয়ামিশরপশ্চিম" + + " সাহারাইরিত্রিয়াস্পেনইফিওপিয়াইউরোপীয় ইউনিয়নফিনল্যান্ডফিজিফকল্যান্ড দ" + + "্বীপপুঞ্জমাইক্রোনেশিয়াফ্যারও দ্বীপপুঞ্জফ্রান্সগ্যাবনযুক্তরাজ্যগ্রেনাড" + + "াজর্জিয়াফরাসী গায়ানাগ্রাঞ্জিঘানাজিব্রাল্টারগ্রীনল্যান্ডগাম্বিয়াগিনি" + + "গুয়াদেলৌপনিরক্ষীয় গিনিগ্রীসদক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপ" + + "পুঞ্জগুয়াতেমালাগুয়ামগিনি-বিসাউগিয়ানাহংকং এসএআর চীনাহার্ড দ্বীপ এবং " + + "ম্যাকডোনাল্ড দ্বীপপুঞ্জহণ্ডুরাসক্রোয়েশিয়াহাইতিহাঙ্গেরিক্যানারি দ্বীপ" + + "পুঞ্জইন্দোনেশিয়াআয়ারল্যান্ডইজরায়েলআইল অফ ম্যানভারতব্রিটিশ ভারত মহাস" + + "াগরীয় অঞ্চলইরাকইরানআইসল্যান্ডইতালিজার্সিজামাইকাজর্ডনজাপানকেনিয়াকিরগি" + + "জিস্তানকম্বোডিয়াকিরিবাতিকমোরোসসেন্ট কিটস ও নেভিসউত্তর কোরিয়াদক্ষিণ ক" + + "োরিয়াকুয়েতকেম্যান দ্বীপপুঞ্জকাজাখস্তানলাওসলেবাননসেন্ট লুসিয়ালিচেনস্" + + "টেইনশ্রীলঙ্কালাইবেরিয়ালেসোথোলিথুয়ানিয়ালাক্সেমবার্গলাত্ভিয়ালিবিয়াম" + + "োরক্কোমোনাকোমোল্দাভিয়ামন্টিনিগ্রোসেন্ট মার্টিনমাদাগাস্কারমার্শাল দ্বী" + + "পপুঞ্জম্যাসাডোনিয়ামালিমায়ানমার (বার্মা)মঙ্গোলিয়াম্যাকাও এসএআর চীনাউ" + + "ত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জমার্টিনিকমরিতানিয়ামন্টসেরাটমাল্টামরি" + + "শাসমালদ্বীপমালাউইমেক্সিকোমালয়েশিয়ামোজাম্বিকনামিবিয়ানিউ ক্যালেডোনিয়" + + "ানাইজারনিরফোক দ্বীপনাইজেরিয়ানিকারাগুয়ানেদারল্যান্ডসনরওয়েনেপালনাউরুন" + + "িউয়েনিউজিল্যান্ডওমানপানামাপেরুফরাসী পলিনেশিয়াপাপুয়া নিউ গিনিফিলিপাই" + + "নপাকিস্তানপোল্যান্ডসেন্ট পিয়ের ও মিকুয়েলনপিটকেয়ার্ন দ্বীপপুঞ্জপুয়ে" + + "র্তো রিকোফিলিস্তিন অঞ্চলসমূহপর্তুগালপালাউপ্যারাগুয়েকাতারআউটলাইনিং ওসা" + + "নিয়ারিইউনিয়নরোমানিয়াসার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসলোমন দ্বীপপুঞ" + + "্জসিসিলিসুদানসুইডেনসিঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াস্বালবার্ড ও জান মে" + + "য়েনস্লোভাকিয়াসিয়েরালিওনসান মারিনোসেনেগালসোমালিয়াসুরিনামদক্ষিণ সুদা" + + "নসাওটোমা ও প্রিন্সিপিএল সালভেদরসিন্ট মার্টেনসিরিয়াসোয়াজিল্যান্ডট্রিস" + + "্টান ডা কুনহাতুর্কস ও কাইকোস দ্বীপপুঞ্জচাদফরাসী দক্ষিণাঞ্চলটোগোথাইল্যা" + + "ন্ডতাজিকস্থানটোকেলাউতিমুর-লেস্তেতুর্কমেনিস্তানতিউনিসিয়াটোঙ্গাতুরস্কত্" + + "রিনিনাদ ও টোব্যাগোটুভালুতাইওয়ানতাঞ্জানিয়াইউক্রেনউগান্ডাযুক্তরাষ্ট্রে" + + "র পার্শ্ববর্তী দ্বীপপুঞ্জজাতিসংঘমার্কিন যুক্তরাষ্ট্রউরুগুয়েউজবেকিস্তা" + + "নভ্যাটিকান সিটিসেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনসভেনেজুয়েলাব্রিটিশ ভার্" + + "জিন দ্বীপপুঞ্জমার্কিন যুক্তরাষ্ট্রের ভার্জিন দ্বীপপুঞ্জভিয়েতনামভানুয়" + + "াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্তেদক্ষিণ আফ্রিকাজাম্বিয়া" + + "জিম্বাবোয়েঅজানা অঞ্চলপৃথিবীআফ্রিকাউত্তর আমেরিকাদক্ষিণ আমেরিকাওশিয়ানি" + + "য়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্তর আফ্রিকামধ্য আফ্রিকাদক্" + + "ষিন আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারাবিয়ানপূর্ব এশিয়াদক্ষিণ" + + " এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রালেশিয়াম্যালেনেশিয়ামাইক্রো" + + "নেশিয়া অঞ্চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এশিয়াইউরোপপূর্ব ইউরোপউ" + + "ত্তর ইউরোপপশ্চিম ইউরোপল্যাটিন আমেরিকা" + +var bnRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x003a, 0x0058, 0x008a, 0x00ab, 0x00e3, 0x0104, 0x0125, - 0x0143, 0x0161, 0x018e, 0x01af, 0x01dd, 0x01fb, 0x021f, 0x022e, - 0x025f, 0x027d, 0x02bb, 0x02d3, 0x02eb, 0x0306, 0x0328, 0x0346, - 0x035b, 0x0373, 0x0382, 0x03ad, 0x03c2, 0x03d7, 0x03f2, 0x043e, - 0x0453, 0x0484, 0x0493, 0x04b2, 0x04cd, 0x04ee, 0x04fd, 0x050f, - 0x054e, 0x0573, 0x05ba, 0x05e7, 0x060e, 0x062d, 0x0655, 0x0661, - 0x067c, 0x0685, 0x06a6, 0x06dd, 0x06fb, 0x070a, 0x0725, 0x073d, - 0x0765, 0x077d, 0x07a8, 0x07c0, 0x07f1, 0x0803, 0x081b, 0x0833, + 0x0000, 0x003a, 0x004f, 0x0081, 0x00a2, 0x00da, 0x00fb, 0x0116, + 0x0134, 0x0152, 0x017f, 0x01a0, 0x01ce, 0x01ec, 0x0210, 0x021f, + 0x0250, 0x026e, 0x02ac, 0x02c4, 0x02dc, 0x02f7, 0x0319, 0x0337, + 0x034c, 0x0364, 0x0373, 0x039e, 0x03b3, 0x03c8, 0x03e0, 0x042c, + 0x0441, 0x0472, 0x0481, 0x04a0, 0x04bb, 0x04d0, 0x04df, 0x04f1, + 0x0531, 0x0556, 0x059d, 0x05ca, 0x05f1, 0x0610, 0x0638, 0x0644, + 0x065f, 0x0668, 0x0683, 0x06ba, 0x06d8, 0x06e7, 0x0702, 0x071a, + 0x0742, 0x075a, 0x076f, 0x0787, 0x07b8, 0x07ca, 0x07e2, 0x07fa, // Entry 40 - 7F - 0x0870, 0x088b, 0x08b7, 0x08cf, 0x08ed, 0x08f9, 0x091e, 0x093c, - 0x094b, 0x0966, 0x0994, 0x09b2, 0x09be, 0x09f8, 0x0a22, 0x0a53, - 0x0a68, 0x0a7a, 0x0a98, 0x0ab0, 0x0ac8, 0x0aed, 0x0b05, 0x0b11, - 0x0b32, 0x0b56, 0x0b71, 0x0b7d, 0x0b9b, 0x0bc3, 0x0bd2, 0x0c52, - 0x0c73, 0x0c85, 0x0ca1, 0x0cb6, 0x0cdf, 0x0d4c, 0x0d64, 0x0d88, - 0x0d97, 0x0daf, 0x0de6, 0x0e0a, 0x0e2e, 0x0e46, 0x0e66, 0x0e72, - 0x0ec3, 0x0ecf, 0x0edb, 0x0ef9, 0x0f08, 0x0f1a, 0x0f2f, 0x0f3e, - 0x0f4d, 0x0f62, 0x0f83, 0x0fa1, 0x0fb9, 0x0fcb, 0x0ffb, 0x1020, + 0x0837, 0x0852, 0x087e, 0x0896, 0x08b4, 0x08c0, 0x08e5, 0x0903, + 0x0912, 0x092d, 0x095b, 0x095b, 0x0979, 0x0985, 0x09bf, 0x09e9, + 0x0a1a, 0x0a2f, 0x0a41, 0x0a5f, 0x0a77, 0x0a8f, 0x0ab4, 0x0acc, + 0x0ad8, 0x0af9, 0x0b1d, 0x0b38, 0x0b44, 0x0b62, 0x0b8a, 0x0b99, + 0x0c19, 0x0c3a, 0x0c4c, 0x0c68, 0x0c7d, 0x0ca6, 0x0d13, 0x0d2b, + 0x0d4f, 0x0d5e, 0x0d76, 0x0dad, 0x0dd1, 0x0df5, 0x0e0d, 0x0e2d, + 0x0e39, 0x0e8a, 0x0e96, 0x0ea2, 0x0ec0, 0x0ecf, 0x0ee1, 0x0ef6, + 0x0f05, 0x0f14, 0x0f29, 0x0f4d, 0x0f6b, 0x0f83, 0x0f95, 0x0fc5, // Entry 80 - BF - 0x1048, 0x105a, 0x108e, 0x10ac, 0x10b8, 0x10ca, 0x10ef, 0x1110, - 0x112b, 0x1149, 0x115b, 0x117f, 0x11a3, 0x11be, 0x11d3, 0x11e8, - 0x11fa, 0x121b, 0x123c, 0x1261, 0x1282, 0x12b6, 0x12dd, 0x12e9, - 0x1319, 0x1337, 0x1371, 0x13d3, 0x13ee, 0x140c, 0x1427, 0x1439, - 0x144b, 0x1463, 0x1475, 0x148d, 0x14ae, 0x14c9, 0x14e4, 0x1515, - 0x1527, 0x1549, 0x1567, 0x1588, 0x15af, 0x15c1, 0x15d0, 0x15df, - 0x15f1, 0x1615, 0x1621, 0x1633, 0x163f, 0x166d, 0x1699, 0x16b1, - 0x16cc, 0x16e7, 0x1729, 0x1769, 0x1791, 0x17c8, 0x17e0, 0x17ef, + 0x0fea, 0x1012, 0x1024, 0x1058, 0x1076, 0x1082, 0x1094, 0x10b9, + 0x10da, 0x10f5, 0x1113, 0x1125, 0x1149, 0x116d, 0x1188, 0x119d, + 0x11b2, 0x11c4, 0x11e5, 0x1206, 0x122b, 0x124c, 0x1280, 0x12a7, + 0x12b3, 0x12e3, 0x1301, 0x1333, 0x1395, 0x13b0, 0x13ce, 0x13e9, + 0x13fb, 0x140d, 0x1425, 0x1437, 0x144f, 0x1470, 0x148b, 0x14a6, + 0x14d7, 0x14e9, 0x150b, 0x1529, 0x154a, 0x1571, 0x1583, 0x1592, + 0x15a1, 0x15b3, 0x15d7, 0x15e3, 0x15f5, 0x1601, 0x162f, 0x165b, + 0x1673, 0x168e, 0x16a9, 0x16eb, 0x172b, 0x1753, 0x178a, 0x17a2, // Entry C0 - FF - 0x1810, 0x181f, 0x1853, 0x186e, 0x1889, 0x18a4, 0x18b9, 0x18d4, - 0x18ea, 0x1918, 0x192a, 0x1939, 0x194b, 0x1966, 0x1988, 0x19a9, - 0x19e8, 0x1a09, 0x1a2a, 0x1a46, 0x1a5b, 0x1a76, 0x1a8b, 0x1aad, - 0x1ae5, 0x1b01, 0x1b26, 0x1b3b, 0x1b65, 0x1b97, 0x1bdf, 0x1be8, - 0x1c19, 0x1c25, 0x1c43, 0x1c61, 0x1c76, 0x1c98, 0x1cc2, 0x1ce0, - 0x1cf2, 0x1d04, 0x1d3c, 0x1d4e, 0x1d66, 0x1d87, 0x1d9f, 0x1db4, - 0x1e22, 0x1e5c, 0x1e74, 0x1e95, 0x1ebd, 0x1f15, 0x1f36, 0x1f80, - 0x1fca, 0x1fe5, 0x2000, 0x202c, 0x2041, 0x2050, 0x2065, 0x2080, + 0x17b1, 0x17d2, 0x17e1, 0x1815, 0x1830, 0x184b, 0x1866, 0x187b, + 0x1896, 0x18ac, 0x18da, 0x18ec, 0x18fb, 0x190d, 0x1928, 0x194a, + 0x196b, 0x19aa, 0x19cb, 0x19ec, 0x1a08, 0x1a1d, 0x1a38, 0x1a4d, + 0x1a6f, 0x1aa7, 0x1ac3, 0x1ae8, 0x1afd, 0x1b27, 0x1b59, 0x1ba1, + 0x1baa, 0x1bdb, 0x1be7, 0x1c05, 0x1c23, 0x1c38, 0x1c5a, 0x1c84, + 0x1ca2, 0x1cb4, 0x1cc6, 0x1cfe, 0x1d10, 0x1d28, 0x1d49, 0x1d5e, + 0x1d73, 0x1de1, 0x1df6, 0x1e30, 0x1e48, 0x1e69, 0x1e91, 0x1ee9, + 0x1f0a, 0x1f54, 0x1fc9, 0x1fe4, 0x1fff, 0x202b, 0x2040, 0x204f, // Entry 100 - 13F - 0x20a8, 0x20c3, 0x20e4, 0x2103, 0x2115, 0x212a, 0x214f, 0x2177, - 0x2198, 0x21c0, 0x21e2, 0x2207, 0x222c, 0x224e, 0x2276, 0x228e, - 0x22cb, 0x22ef, 0x2311, 0x2336, 0x236b, 0x238d, 0x23b7, 0x23de, - 0x240c, 0x242a, 0x243c, 0x245b, 0x2480, 0x248f, 0x24ae, 0x24cd, - 0x24ef, 0x251a, -} // Size: 604 bytes - -var caRegionStr string = "" + // Size: 3150 bytes + 0x2064, 0x207f, 0x20a7, 0x20c2, 0x20e3, 0x2102, 0x2114, 0x2129, + 0x214e, 0x2176, 0x2197, 0x21bf, 0x21e1, 0x2206, 0x222b, 0x224d, + 0x2275, 0x228d, 0x22ca, 0x22ee, 0x2310, 0x2335, 0x236a, 0x238c, + 0x23b6, 0x23dd, 0x2417, 0x2435, 0x2447, 0x2466, 0x248b, 0x249a, + 0x24b9, 0x24d8, 0x24fa, 0x2525, +} // Size: 608 bytes + +const caRegionStr string = "" + // Size: 3167 bytes "Illa de l’AscensióAndorraEmirats Àrabs UnitsAfganistanAntigua i BarbudaA" + "nguillaAlbàniaArmèniaAngolaAntàrtidaArgentinaSamoa Nord-americanaÀustria" + "AustràliaArubaIlles ÅlandAzerbaidjanBòsnia i HercegovinaBarbadosBangla D" + @@ -38873,43 +43925,44 @@ var caRegionStr string = "" + // Size: 3150 bytes "sBruneiBolíviaCarib NeerlandèsBrasilBahamesBhutanBouvetBotswanaBelarúsBe" + "lizeCanadàIlles CocosCongo - KinshasaRepública CentreafricanaCongo - Bra" + "zzavilleSuïssaCosta d’IvoriIlles CookXileCamerunXinaColòmbiaIlla Clipper" + - "tonCosta RicaCubaCap VerdCuraçaoIlla ChristmasXipreRepública TxecaAleman" + - "yaDiego GarciaDjiboutiDinamarcaDominicaRepública DominicanaAlgèriaCeuta " + - "i MelillaEquadorEstòniaEgipteSàhara OccidentalEritreaEspanyaEtiòpiaUnió " + - "EuropeaFinlàndiaFijiIlles MalvinesMicronèsiaIlles FèroeFrançaGabonRegne " + - "UnitGrenadaGeòrgiaGuaiana FrancesaGuernseyGhanaGibraltarGrenlàndiaGàmbia" + - "GuineaGuadeloupeGuinea EquatorialGrèciaIlles Geòrgia del Sud i Sandwich " + - "del SudGuatemalaGuamGuinea BissauGuyanaHong Kong (RAE Xina)Illa Heard i " + - "Illes McDonaldHonduresCroàciaHaitíHongriaIlles CanàriesIndonèsiaIrlandaI" + - "sraelIlla de ManÍndiaTerritori Britànic de l’Oceà ÍndicIraqIranIslàndiaI" + - "tàliaJerseyJamaicaJordàniaJapóKenyaKirguizistanCambodjaKiribatiComoresSa" + - "int Christopher i NevisCorea del NordCorea del SudKuwaitIlles CaimanKaza" + - "khstanLaosLíbanSaint LuciaLiechtensteinSri LankaLibèriaLesothoLituàniaLu" + - "xemburgLetòniaLíbiaMarrocMònacoMoldàviaMontenegroSaint MartinMadagascarI" + - "lles MarshallMacedòniaMaliMyanmar (Birmània)MongòliaMacau (RAE Xina)Ille" + - "s Mariannes del NordMartinicaMauritàniaMontserratMaltaMauriciMaldivesMal" + - "awiMèxicMalàisiaMoçambicNamíbiaNova CaledòniaNígerNorfolkNigèriaNicaragu" + - "aPaïsos BaixosNoruegaNepalNauruNiueNova ZelandaOmanPanamàPerúPolinèsia F" + - "rancesaPapua Nova GuineaFilipinesPakistanPolòniaSaint-Pierre-et-Miquelon" + - "Illes PitcairnPuerto RicoPalestinaPortugalPalauParaguaiQatarTerritoris a" + - "llunyats d’OceaniaIlla de la ReunióRomaniaSèrbiaRússiaRuandaAràbia Saudi" + - "taIlles SalomóSeychellesSudanSuèciaSingapurSaint HelenaEslovèniaSvalbard" + - " i Jan MayenEslovàquiaSierra LeoneSan MarinoSenegalSomàliaSurinamSudan d" + - "el SudSão Tomé i PríncipeEl SalvadorSint MaartenSíriaSwazilàndiaTristão " + - "da CunhaIlles Turks i CaicosTxadTerritoris Francesos del SudTogoTailàndi" + - "aTadjikistanTokelauTimor OrientalTurkmenistanTunísiaTongaTurquiaTrinitat" + - " i TobagoTuvaluTaiwanTanzàniaUcraïnaUgandaIlles Perifèriques Menors dels" + - " EUAEstats UnitsUruguaiUzbekistanCiutat del VaticàSaint Vincent i les Gr" + - "enadinesVeneçuelaIlles Verges BritàniquesIlles Verges Nord-americanesVie" + - "tnamVanuatuWallis i FutunaSamoaKosovoIemenMayotteRepública de Sud-àfrica" + - "ZàmbiaZimbàbueRegió desconegudaMónÀfricaAmèrica del NordAmèrica del SudO" + - "ceaniaÀfrica occidentalAmèrica CentralÀfrica orientalÀfrica septentriona" + - "lÀfrica centralÀfrica meridionalAmèricaAmèrica septentrionalCaribÀsia or" + - "ientalÀsia meridionalÀsia sud-orientalEuropa meridionalAustralàsiaMelanè" + - "siaRegió de la MicronèsiaPolinèsiaÀsiaÀsia centralÀsia occidentalEuropaE" + - "uropa orientalEuropa septentrionalEuropa occidentalAmèrica Llatina" - -var caRegionIdx = []uint16{ // 290 elements + "tonCosta RicaCubaCap VerdCuraçaoIlla ChristmasXipreTxèquiaAlemanyaDiego " + + "GarciaDjiboutiDinamarcaDominicaRepública DominicanaAlgèriaCeuta i Melill" + + "aEquadorEstòniaEgipteSàhara OccidentalEritreaEspanyaEtiòpiaUnió EuropeaF" + + "inlàndiaFijiIlles MalvinesMicronèsiaIlles FèroeFrançaGabonRegne UnitGren" + + "adaGeòrgiaGuaiana FrancesaGuernseyGhanaGibraltarGrenlàndiaGàmbiaGuineaGu" + + "adeloupeGuinea EquatorialGrèciaIlles Geòrgia del Sud i Sandwich del SudG" + + "uatemalaGuamGuinea BissauGuyanaHong Kong (RAE Xina)Illa Heard i Illes Mc" + + "DonaldHonduresCroàciaHaitíHongriaIlles CanàriesIndonèsiaIrlandaIsraelIll" + + "a de ManÍndiaTerritori Britànic de l’Oceà ÍndicIraqIranIslàndiaItàliaJer" + + "seyJamaicaJordàniaJapóKenyaKirguizistanCambodjaKiribatiComoresSaint Chri" + + "stopher i NevisCorea del NordCorea del SudKuwaitIlles CaimanKazakhstanLa" + + "osLíbanSaint LuciaLiechtensteinSri LankaLibèriaLesothoLituàniaLuxemburgL" + + "etòniaLíbiaMarrocMònacoMoldàviaMontenegroSaint MartinMadagascarIlles Mar" + + "shallMacedòniaMaliMyanmar (Birmània)MongòliaMacau (RAE Xina)Illes Marian" + + "nes del NordMartinicaMauritàniaMontserratMaltaMauriciMaldivesMalawiMèxic" + + "MalàisiaMoçambicNamíbiaNova CaledòniaNígerNorfolkNigèriaNicaraguaPaïsos " + + "BaixosNoruegaNepalNauruNiueNova ZelandaOmanPanamàPerúPolinèsia FrancesaP" + + "apua Nova GuineaFilipinesPakistanPolòniaSaint-Pierre-et-MiquelonIlles Pi" + + "tcairnPuerto Ricoterritoris palestinsPortugalPalauParaguaiQatarTerritori" + + "s allunyats d’OceaniaIlla de la ReunióRomaniaSèrbiaRússiaRuandaAràbia Sa" + + "uditaIlles SalomóSeychellesSudanSuèciaSingapurSaint HelenaEslovèniaSvalb" + + "ard i Jan MayenEslovàquiaSierra LeoneSan MarinoSenegalSomàliaSurinamSuda" + + "n del SudSão Tomé i PríncipeEl SalvadorSint MaartenSíriaSwazilàndiaTrist" + + "ão da CunhaIlles Turks i CaicosTxadTerritoris Francesos del SudTogoTail" + + "àndiaTadjikistanTokelauTimor OrientalTurkmenistanTunísiaTongaTurquiaTri" + + "nitat i TobagoTuvaluTaiwanTanzàniaUcraïnaUgandaIlles Perifèriques Menors" + + " dels EUANacions UnidesEstats UnitsUruguaiUzbekistanCiutat del VaticàSai" + + "nt Vincent i les GrenadinesVeneçuelaIlles Verges BritàniquesIlles Verges" + + " Nord-americanesVietnamVanuatuWallis i FutunaSamoaKosovoIemenMayotteRepú" + + "blica de Sud-àfricaZàmbiaZimbàbueRegió desconegudaMónÀfricaAmèrica del N" + + "ordAmèrica del SudOceaniaÀfrica occidentalAmèrica CentralÀfrica oriental" + + "Àfrica septentrionalÀfrica centralÀfrica meridionalAmèricaAmèrica septe" + + "ntrionalCaribÀsia orientalÀsia meridionalÀsia sud-orientalEuropa meridio" + + "nalAustralàsiaMelanèsiaRegió de la MicronèsiaPolinèsiaÀsiaÀsia centralÀs" + + "ia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occidentalA" + + "mèrica Llatina" + +var caRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0015, 0x001c, 0x0030, 0x003a, 0x004b, 0x0053, 0x005b, 0x0063, 0x0069, 0x0073, 0x007c, 0x0090, 0x0098, 0x00a2, 0x00a7, @@ -38918,43 +43971,43 @@ var caRegionIdx = []uint16{ // 290 elements 0x0155, 0x015c, 0x0162, 0x0168, 0x0170, 0x0178, 0x017e, 0x0185, 0x0190, 0x01a0, 0x01b9, 0x01cc, 0x01d3, 0x01e2, 0x01ec, 0x01f0, 0x01f7, 0x01fb, 0x0204, 0x0213, 0x021d, 0x0221, 0x0229, 0x0231, - 0x023f, 0x0244, 0x0254, 0x025c, 0x0268, 0x0270, 0x0279, 0x0281, + 0x023f, 0x0244, 0x024c, 0x0254, 0x0260, 0x0268, 0x0271, 0x0279, // Entry 40 - 7F - 0x0296, 0x029e, 0x02ad, 0x02b4, 0x02bc, 0x02c2, 0x02d4, 0x02db, - 0x02e2, 0x02ea, 0x02f7, 0x0301, 0x0305, 0x0313, 0x031e, 0x032a, - 0x0331, 0x0336, 0x0340, 0x0347, 0x034f, 0x035f, 0x0367, 0x036c, - 0x0375, 0x0380, 0x0387, 0x038d, 0x0397, 0x03a8, 0x03af, 0x03d8, - 0x03e1, 0x03e5, 0x03f2, 0x03f8, 0x040c, 0x0427, 0x042f, 0x0437, - 0x043d, 0x0444, 0x0453, 0x045d, 0x0464, 0x046a, 0x0475, 0x047b, - 0x04a2, 0x04a6, 0x04aa, 0x04b3, 0x04ba, 0x04c0, 0x04c7, 0x04d0, - 0x04d5, 0x04da, 0x04e6, 0x04ee, 0x04f6, 0x04fd, 0x0516, 0x0524, + 0x028e, 0x0296, 0x02a5, 0x02ac, 0x02b4, 0x02ba, 0x02cc, 0x02d3, + 0x02da, 0x02e2, 0x02ef, 0x02ef, 0x02f9, 0x02fd, 0x030b, 0x0316, + 0x0322, 0x0329, 0x032e, 0x0338, 0x033f, 0x0347, 0x0357, 0x035f, + 0x0364, 0x036d, 0x0378, 0x037f, 0x0385, 0x038f, 0x03a0, 0x03a7, + 0x03d0, 0x03d9, 0x03dd, 0x03ea, 0x03f0, 0x0404, 0x041f, 0x0427, + 0x042f, 0x0435, 0x043c, 0x044b, 0x0455, 0x045c, 0x0462, 0x046d, + 0x0473, 0x049a, 0x049e, 0x04a2, 0x04ab, 0x04b2, 0x04b8, 0x04bf, + 0x04c8, 0x04cd, 0x04d2, 0x04de, 0x04e6, 0x04ee, 0x04f5, 0x050e, // Entry 80 - BF - 0x0531, 0x0537, 0x0543, 0x054d, 0x0551, 0x0557, 0x0562, 0x056f, - 0x0578, 0x0580, 0x0587, 0x0590, 0x0599, 0x05a1, 0x05a7, 0x05ad, - 0x05b4, 0x05bd, 0x05c7, 0x05d3, 0x05dd, 0x05eb, 0x05f5, 0x05f9, - 0x060c, 0x0615, 0x0625, 0x063d, 0x0646, 0x0651, 0x065b, 0x0660, - 0x0667, 0x066f, 0x0675, 0x067b, 0x0684, 0x068d, 0x0695, 0x06a4, - 0x06aa, 0x06b1, 0x06b9, 0x06c2, 0x06d0, 0x06d7, 0x06dc, 0x06e1, - 0x06e5, 0x06f1, 0x06f5, 0x06fc, 0x0701, 0x0714, 0x0725, 0x072e, - 0x0736, 0x073e, 0x0756, 0x0764, 0x076f, 0x0778, 0x0780, 0x0785, + 0x051c, 0x0529, 0x052f, 0x053b, 0x0545, 0x0549, 0x054f, 0x055a, + 0x0567, 0x0570, 0x0578, 0x057f, 0x0588, 0x0591, 0x0599, 0x059f, + 0x05a5, 0x05ac, 0x05b5, 0x05bf, 0x05cb, 0x05d5, 0x05e3, 0x05ed, + 0x05f1, 0x0604, 0x060d, 0x061d, 0x0635, 0x063e, 0x0649, 0x0653, + 0x0658, 0x065f, 0x0667, 0x066d, 0x0673, 0x067c, 0x0685, 0x068d, + 0x069c, 0x06a2, 0x06a9, 0x06b1, 0x06ba, 0x06c8, 0x06cf, 0x06d4, + 0x06d9, 0x06dd, 0x06e9, 0x06ed, 0x06f4, 0x06f9, 0x070c, 0x071d, + 0x0726, 0x072e, 0x0736, 0x074e, 0x075c, 0x0767, 0x077b, 0x0783, // Entry C0 - FF - 0x078d, 0x0792, 0x07b2, 0x07c4, 0x07cb, 0x07d2, 0x07d9, 0x07df, - 0x07ee, 0x07fb, 0x0805, 0x080a, 0x0811, 0x0819, 0x0825, 0x082f, - 0x0843, 0x084e, 0x085a, 0x0864, 0x086b, 0x0873, 0x087a, 0x0887, - 0x089d, 0x08a8, 0x08b4, 0x08ba, 0x08c6, 0x08d7, 0x08eb, 0x08ef, - 0x090b, 0x090f, 0x0919, 0x0924, 0x092b, 0x0939, 0x0945, 0x094d, - 0x0952, 0x0959, 0x096a, 0x0970, 0x0976, 0x097f, 0x0987, 0x098d, - 0x09b0, 0x09bc, 0x09c3, 0x09cd, 0x09df, 0x09fd, 0x0a07, 0x0a20, - 0x0a3c, 0x0a43, 0x0a4a, 0x0a59, 0x0a5e, 0x0a64, 0x0a69, 0x0a70, + 0x0788, 0x0790, 0x0795, 0x07b5, 0x07c7, 0x07ce, 0x07d5, 0x07dc, + 0x07e2, 0x07f1, 0x07fe, 0x0808, 0x080d, 0x0814, 0x081c, 0x0828, + 0x0832, 0x0846, 0x0851, 0x085d, 0x0867, 0x086e, 0x0876, 0x087d, + 0x088a, 0x08a0, 0x08ab, 0x08b7, 0x08bd, 0x08c9, 0x08da, 0x08ee, + 0x08f2, 0x090e, 0x0912, 0x091c, 0x0927, 0x092e, 0x093c, 0x0948, + 0x0950, 0x0955, 0x095c, 0x096d, 0x0973, 0x0979, 0x0982, 0x098a, + 0x0990, 0x09b3, 0x09c1, 0x09cd, 0x09d4, 0x09de, 0x09f0, 0x0a0e, + 0x0a18, 0x0a31, 0x0a4d, 0x0a54, 0x0a5b, 0x0a6a, 0x0a6f, 0x0a75, // Entry 100 - 13F - 0x0a89, 0x0a90, 0x0a99, 0x0aab, 0x0aaf, 0x0ab6, 0x0ac7, 0x0ad7, - 0x0ade, 0x0af0, 0x0b00, 0x0b10, 0x0b25, 0x0b34, 0x0b46, 0x0b4e, - 0x0b64, 0x0b69, 0x0b77, 0x0b87, 0x0b99, 0x0baa, 0x0bb6, 0x0bc0, - 0x0bd8, 0x0be2, 0x0be7, 0x0bf4, 0x0c04, 0x0c0a, 0x0c19, 0x0c2d, - 0x0c3e, 0x0c4e, -} // Size: 604 bytes - -var csRegionStr string = "" + // Size: 3211 bytes + 0x0a7a, 0x0a81, 0x0a9a, 0x0aa1, 0x0aaa, 0x0abc, 0x0ac0, 0x0ac7, + 0x0ad8, 0x0ae8, 0x0aef, 0x0b01, 0x0b11, 0x0b21, 0x0b36, 0x0b45, + 0x0b57, 0x0b5f, 0x0b75, 0x0b7a, 0x0b88, 0x0b98, 0x0baa, 0x0bbb, + 0x0bc7, 0x0bd1, 0x0be9, 0x0bf3, 0x0bf8, 0x0c05, 0x0c15, 0x0c1b, + 0x0c2a, 0x0c3e, 0x0c4f, 0x0c5f, +} // Size: 608 bytes + +const csRegionStr string = "" + // Size: 3208 bytes "AscensionAndorraSpojené arabské emirátyAfghánistánAntigua a BarbudaAngui" + "llaAlbánieArménieAngolaAntarktidaArgentinaAmerická SamoaRakouskoAustráli" + "eArubaÅlandyÁzerbájdžánBosna a HercegovinaBarbadosBangladéšBelgieBurkina" + @@ -38963,42 +44016,42 @@ var csRegionStr string = "" + // Size: 3211 bytes "zeKanadaKokosové ostrovyKongo – KinshasaStředoafrická republikaKongo – B" + "razzavilleŠvýcarskoPobřeží slonovinyCookovy ostrovyChileKamerunČínaKolum" + "bieClippertonův ostrovKostarikaKubaKapverdyCuraçaoVánoční ostrovKyprČesk" + - "á republikaNěmeckoDiego GarcíaDžibutskoDánskoDominikaDominikánská repub" + - "likaAlžírskoCeuta a MelillaEkvádorEstonskoEgyptZápadní SaharaEritreaŠpan" + - "ělskoEtiopieEvropská unieFinskoFidžiFalklandské ostrovyMikronésieFaersk" + - "é ostrovyFrancieGabonVelká BritánieGrenadaGruzieFrancouzská GuyanaGuern" + - "seyGhanaGibraltarGrónskoGambieGuineaGuadeloupeRovníková GuineaŘeckoJižní" + - " Georgie a Jižní Sandwichovy ostrovyGuatemalaGuamGuinea-BissauGuyanaHong" + - "kong – ZAO ČínyHeardův ostrov a McDonaldovy ostrovyHondurasChorvatskoHai" + - "tiMaďarskoKanárské ostrovyIndonésieIrskoIzraelOstrov ManIndieBritské ind" + - "ickooceánské územíIrákÍránIslandItálieJerseyJamajkaJordánskoJaponskoKeňa" + - "KyrgyzstánKambodžaKiribatiKomorySvatý Kryštof a NevisSeverní KoreaJižní " + - "KoreaKuvajtKajmanské ostrovyKazachstánLaosLibanonSvatá LucieLichtenštejn" + - "skoSrí LankaLibérieLesothoLitvaLucemburskoLotyšskoLibyeMarokoMonakoMolda" + - "vskoČerná HoraSvatý Martin (Francie)MadagaskarMarshallovy ostrovyMakedon" + - "ieMaliMyanmar (Barma)MongolskoMacao – ZAO ČínySeverní MarianyMartinikMau" + - "ritánieMontserratMaltaMauriciusMaledivyMalawiMexikoMalajsieMosambikNamib" + - "ieNová KaledonieNigerNorfolkNigérieNikaraguaNizozemskoNorskoNepálNauruNi" + - "ueNový ZélandOmánPanamaPeruFrancouzská PolynésiePapua-Nová GuineaFilipín" + - "yPákistánPolskoSaint-Pierre a MiquelonPitcairnovy ostrovyPortorikoPalest" + - "inská územíPortugalskoPalauParaguayKatarVnější OceánieRéunionRumunskoSrb" + - "skoRuskoRwandaSaúdská ArábieŠalamounovy ostrovySeychelySúdánŠvédskoSinga" + - "purSvatá HelenaSlovinskoŠpicberky a Jan MayenSlovenskoSierra LeoneSan Ma" + - "rinoSenegalSomálskoSurinamJižní SúdánSvatý Tomáš a Princův ostrovSalvado" + - "rSvatý Martin (Nizozemsko)SýrieSvazijskoTristan da CunhaTurks a CaicosČa" + - "dFrancouzská jižní územíTogoThajskoTádžikistánTokelauVýchodní TimorTurkm" + - "enistánTuniskoTongaTureckoTrinidad a TobagoTuvaluTchaj-wanTanzanieUkraji" + - "naUgandaMenší odlehlé ostrovy USASpojené státyUruguayUzbekistánVatikánSv" + - "atý Vincenc a GrenadinyVenezuelaBritské Panenské ostrovyAmerické Panensk" + - "é ostrovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMayotteJihoafrick" + - "á republikaZambieZimbabweNeznámá oblastSvětAfrikaSeverní AmerikaJižní A" + - "merikaOceánieZápadní AfrikaStřední AmerikaVýchodní AfrikaSeverní AfrikaS" + - "třední AfrikaJižní AfrikaAmerikaSeverní Amerika (oblast)KaribikVýchodní " + - "AsieJižní AsieJihovýchodní AsieJižní EvropaAustralasieMelanésieMikronési" + - "e (region)PolynésieAsieStřední AsieZápadní AsieEvropaVýchodní EvropaSeve" + - "rní EvropaZápadní EvropaLatinská Amerika" - -var csRegionIdx = []uint16{ // 290 elements + "oNěmeckoDiego GarcíaDžibutskoDánskoDominikaDominikánská republikaAlžírsk" + + "oCeuta a MelillaEkvádorEstonskoEgyptZápadní SaharaEritreaŠpanělskoEtiopi" + + "eEvropská unieFinskoFidžiFalklandské ostrovyMikronésieFaerské ostrovyFra" + + "ncieGabonSpojené královstvíGrenadaGruzieFrancouzská GuyanaGuernseyGhanaG" + + "ibraltarGrónskoGambieGuineaGuadeloupeRovníková GuineaŘeckoJižní Georgie " + + "a Jižní Sandwichovy ostrovyGuatemalaGuamGuinea-BissauGuyanaHongkong – ZA" + + "O ČínyHeardův ostrov a McDonaldovy ostrovyHondurasChorvatskoHaitiMaďarsk" + + "oKanárské ostrovyIndonésieIrskoIzraelOstrov ManIndieBritské indickooceán" + + "ské územíIrákÍránIslandItálieJerseyJamajkaJordánskoJaponskoKeňaKyrgyzstá" + + "nKambodžaKiribatiKomorySvatý Kryštof a NevisSeverní KoreaJižní KoreaKuva" + + "jtKajmanské ostrovyKazachstánLaosLibanonSvatá LucieLichtenštejnskoSrí La" + + "nkaLibérieLesothoLitvaLucemburskoLotyšskoLibyeMarokoMonakoMoldavskoČerná" + + " HoraSvatý Martin (Francie)MadagaskarMarshallovy ostrovyMakedonieMaliMya" + + "nmar (Barma)MongolskoMacao – ZAO ČínySeverní MarianyMartinikMauritánieMo" + + "ntserratMaltaMauriciusMaledivyMalawiMexikoMalajsieMosambikNamibieNová Ka" + + "ledonieNigerNorfolkNigérieNikaraguaNizozemskoNorskoNepálNauruNiueNový Zé" + + "landOmánPanamaPeruFrancouzská PolynésiePapua-Nová GuineaFilipínyPákistán" + + "PolskoSaint-Pierre a MiquelonPitcairnovy ostrovyPortorikoPalestinská úze" + + "míPortugalskoPalauParaguayKatarVnější OceánieRéunionRumunskoSrbskoRuskoR" + + "wandaSaúdská ArábieŠalamounovy ostrovySeychelySúdánŠvédskoSingapurSvatá " + + "HelenaSlovinskoŠpicberky a Jan MayenSlovenskoSierra LeoneSan MarinoSeneg" + + "alSomálskoSurinamJižní SúdánSvatý Tomáš a Princův ostrovSalvadorSvatý Ma" + + "rtin (Nizozemsko)SýrieSvazijskoTristan da CunhaTurks a CaicosČadFrancouz" + + "ská jižní územíTogoThajskoTádžikistánTokelauVýchodní TimorTurkmenistánTu" + + "niskoTongaTureckoTrinidad a TobagoTuvaluTchaj-wanTanzanieUkrajinaUgandaM" + + "enší odlehlé ostrovy USAOSNSpojené státyUruguayUzbekistánVatikánSvatý Vi" + + "ncenc a GrenadinyVenezuelaBritské Panenské ostrovyAmerické Panenské ostr" + + "ovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMayotteJihoafrická repub" + + "likaZambieZimbabweNeznámá oblastSvětAfrikaSeverní AmerikaJižní AmerikaOc" + + "eánieZápadní AfrikaStřední AmerikaVýchodní AfrikaSeverní AfrikaStřední A" + + "frikaJižní AfrikaAmerikaSeverní Amerika (oblast)KaribikVýchodní AsieJižn" + + "í AsieJihovýchodní AsieJižní EvropaAustralasieMelanésieMikronésie (regi" + + "on)PolynésieAsieStřední AsieZápadní AsieEvropaVýchodní EvropaSeverní Evr" + + "opaZápadní EvropaLatinská Amerika" + +var csRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002a, 0x0037, 0x0048, 0x0050, 0x0058, 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x0090, 0x009a, 0x009f, @@ -39007,131 +44060,131 @@ var csRegionIdx = []uint16{ // 290 elements 0x014d, 0x0153, 0x015b, 0x016b, 0x0173, 0x017d, 0x0183, 0x0189, 0x019a, 0x01ac, 0x01c5, 0x01da, 0x01e5, 0x01f9, 0x0208, 0x020d, 0x0214, 0x021a, 0x0222, 0x0236, 0x023f, 0x0243, 0x024b, 0x0253, - 0x0264, 0x0268, 0x0279, 0x0281, 0x028e, 0x0298, 0x029f, 0x02a7, + 0x0264, 0x0268, 0x026e, 0x0276, 0x0283, 0x028d, 0x0294, 0x029c, // Entry 40 - 7F - 0x02bf, 0x02c9, 0x02d8, 0x02e0, 0x02e8, 0x02ed, 0x02fd, 0x0304, - 0x030f, 0x0316, 0x0324, 0x032a, 0x0330, 0x0344, 0x034f, 0x035f, - 0x0366, 0x036b, 0x037b, 0x0382, 0x0388, 0x039b, 0x03a3, 0x03a8, - 0x03b1, 0x03b9, 0x03bf, 0x03c5, 0x03cf, 0x03e1, 0x03e7, 0x0414, - 0x041d, 0x0421, 0x042e, 0x0434, 0x044b, 0x0470, 0x0478, 0x0482, - 0x0487, 0x0490, 0x04a2, 0x04ac, 0x04b1, 0x04b7, 0x04c1, 0x04c6, - 0x04e8, 0x04ed, 0x04f3, 0x04f9, 0x0500, 0x0506, 0x050d, 0x0517, - 0x051f, 0x0524, 0x052f, 0x0538, 0x0540, 0x0546, 0x055d, 0x056b, + 0x02b4, 0x02be, 0x02cd, 0x02d5, 0x02dd, 0x02e2, 0x02f2, 0x02f9, + 0x0304, 0x030b, 0x0319, 0x0319, 0x031f, 0x0325, 0x0339, 0x0344, + 0x0354, 0x035b, 0x0360, 0x0375, 0x037c, 0x0382, 0x0395, 0x039d, + 0x03a2, 0x03ab, 0x03b3, 0x03b9, 0x03bf, 0x03c9, 0x03db, 0x03e1, + 0x040e, 0x0417, 0x041b, 0x0428, 0x042e, 0x0445, 0x046a, 0x0472, + 0x047c, 0x0481, 0x048a, 0x049c, 0x04a6, 0x04ab, 0x04b1, 0x04bb, + 0x04c0, 0x04e2, 0x04e7, 0x04ed, 0x04f3, 0x04fa, 0x0500, 0x0507, + 0x0511, 0x0519, 0x051e, 0x0529, 0x0532, 0x053a, 0x0540, 0x0557, // Entry 80 - BF - 0x0578, 0x057e, 0x0590, 0x059b, 0x059f, 0x05a6, 0x05b2, 0x05c2, - 0x05cc, 0x05d4, 0x05db, 0x05e0, 0x05eb, 0x05f4, 0x05f9, 0x05ff, - 0x0605, 0x060e, 0x061a, 0x0631, 0x063b, 0x064e, 0x0657, 0x065b, - 0x066a, 0x0673, 0x0687, 0x0697, 0x069f, 0x06aa, 0x06b4, 0x06b9, - 0x06c2, 0x06ca, 0x06d0, 0x06d6, 0x06de, 0x06e6, 0x06ed, 0x06fc, - 0x0701, 0x0708, 0x0710, 0x0719, 0x0723, 0x0729, 0x072f, 0x0734, - 0x0738, 0x0745, 0x074a, 0x0750, 0x0754, 0x076b, 0x077d, 0x0786, - 0x0790, 0x0796, 0x07ad, 0x07c0, 0x07c9, 0x07dd, 0x07e8, 0x07ed, + 0x0565, 0x0572, 0x0578, 0x058a, 0x0595, 0x0599, 0x05a0, 0x05ac, + 0x05bc, 0x05c6, 0x05ce, 0x05d5, 0x05da, 0x05e5, 0x05ee, 0x05f3, + 0x05f9, 0x05ff, 0x0608, 0x0614, 0x062b, 0x0635, 0x0648, 0x0651, + 0x0655, 0x0664, 0x066d, 0x0681, 0x0691, 0x0699, 0x06a4, 0x06ae, + 0x06b3, 0x06bc, 0x06c4, 0x06ca, 0x06d0, 0x06d8, 0x06e0, 0x06e7, + 0x06f6, 0x06fb, 0x0702, 0x070a, 0x0713, 0x071d, 0x0723, 0x0729, + 0x072e, 0x0732, 0x073f, 0x0744, 0x074a, 0x074e, 0x0765, 0x0777, + 0x0780, 0x078a, 0x0790, 0x07a7, 0x07ba, 0x07c3, 0x07d7, 0x07e2, // Entry C0 - FF - 0x07f5, 0x07fa, 0x080c, 0x0814, 0x081c, 0x0822, 0x0827, 0x082d, - 0x083e, 0x0852, 0x085a, 0x0861, 0x086a, 0x0872, 0x087f, 0x0888, - 0x089e, 0x08a7, 0x08b3, 0x08bd, 0x08c4, 0x08cd, 0x08d4, 0x08e3, - 0x0903, 0x090b, 0x0925, 0x092b, 0x0934, 0x0944, 0x0952, 0x0956, - 0x0972, 0x0976, 0x097d, 0x098b, 0x0992, 0x09a2, 0x09af, 0x09b6, - 0x09bb, 0x09c2, 0x09d3, 0x09d9, 0x09e2, 0x09ea, 0x09f2, 0x09f8, - 0x0a14, 0x0a23, 0x0a2a, 0x0a35, 0x0a3d, 0x0a57, 0x0a60, 0x0a7a, - 0x0a95, 0x0a9c, 0x0aa3, 0x0ab2, 0x0ab7, 0x0abd, 0x0ac2, 0x0ac9, + 0x07e7, 0x07ef, 0x07f4, 0x0806, 0x080e, 0x0816, 0x081c, 0x0821, + 0x0827, 0x0838, 0x084c, 0x0854, 0x085b, 0x0864, 0x086c, 0x0879, + 0x0882, 0x0898, 0x08a1, 0x08ad, 0x08b7, 0x08be, 0x08c7, 0x08ce, + 0x08dd, 0x08fd, 0x0905, 0x091f, 0x0925, 0x092e, 0x093e, 0x094c, + 0x0950, 0x096c, 0x0970, 0x0977, 0x0985, 0x098c, 0x099c, 0x09a9, + 0x09b0, 0x09b5, 0x09bc, 0x09cd, 0x09d3, 0x09dc, 0x09e4, 0x09ec, + 0x09f2, 0x0a0e, 0x0a11, 0x0a20, 0x0a27, 0x0a32, 0x0a3a, 0x0a54, + 0x0a5d, 0x0a77, 0x0a92, 0x0a99, 0x0aa0, 0x0aaf, 0x0ab4, 0x0aba, // Entry 100 - 13F - 0x0adf, 0x0ae5, 0x0aed, 0x0afd, 0x0b02, 0x0b08, 0x0b18, 0x0b27, - 0x0b2f, 0x0b3f, 0x0b50, 0x0b61, 0x0b70, 0x0b80, 0x0b8e, 0x0b95, - 0x0bae, 0x0bb5, 0x0bc4, 0x0bd0, 0x0be3, 0x0bf1, 0x0bfc, 0x0c06, - 0x0c1a, 0x0c24, 0x0c28, 0x0c36, 0x0c44, 0x0c4a, 0x0c5b, 0x0c6a, - 0x0c7a, 0x0c8b, -} // Size: 604 bytes - -var daRegionStr string = "" + // Size: 2932 bytes + 0x0abf, 0x0ac6, 0x0adc, 0x0ae2, 0x0aea, 0x0afa, 0x0aff, 0x0b05, + 0x0b15, 0x0b24, 0x0b2c, 0x0b3c, 0x0b4d, 0x0b5e, 0x0b6d, 0x0b7d, + 0x0b8b, 0x0b92, 0x0bab, 0x0bb2, 0x0bc1, 0x0bcd, 0x0be0, 0x0bee, + 0x0bf9, 0x0c03, 0x0c17, 0x0c21, 0x0c25, 0x0c33, 0x0c41, 0x0c47, + 0x0c58, 0x0c67, 0x0c77, 0x0c88, +} // Size: 608 bytes + +const daRegionStr string = "" + // Size: 2960 bytes "AscensionøenAndorraDe Forenede Arabiske EmiraterAfghanistanAntigua og Ba" + "rbudaAnguillaAlbanienArmenienAngolaAntarktisArgentinaAmerikansk SamoaØst" + "rigAustralienArubaÅlandAserbajdsjanBosnien-HercegovinaBarbadosBangladesh" + "BelgienBurkina FasoBulgarienBahrainBurundiBeninSaint BarthélemyBermudaBr" + - "uneiBoliviaDe Nederlandske AntillerBrasilienBahamasBhutanBouvetøenBotswa" + - "naHvideruslandBelizeCanadaCocosøerneCongo-KinshasaDen Centralafrikanske " + - "RepublikCongo-BrazzavilleSchweizElfenbenskystenCookøerneChileCamerounKin" + - "aColombiaClippertonøenCosta RicaCubaKap VerdeCuraçaoJuleøenCypernTjekkie" + - "tTysklandDiego GarciaDjiboutiDanmarkDominicaDen Dominikanske RepublikAlg" + - "erietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaEritreaSpanienEtiopi" + - "enDen Europæiske UnionFinlandFijiFalklandsøerneMikronesiens Forenede Sta" + - "terFærøerneFrankrigGabonStorbritannienGrenadaGeorgienFransk GuyanaGuerns" + - "eyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeÆkvatorialguineaGrækenland" + - "South Georgia og South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaH" + - "ongkong SARHeard Island og McDonald IslandsHondurasKroatienHaitiUngarnKa" + - "nariske øerIndonesienIrlandIsraelIsle of ManIndienDet britiske territori" + - "um i Det Indiske OceanIrakIranIslandItalienJerseyJamaicaJordanJapanKenya" + - "KirgisistanCambodjaKiribatiComorerneSaint Kitts og NevisNordkoreaSydkore" + - "aKuwaitCaymanøerneKasakhstanLaosLibanonSaint LuciaLiechtensteinSri Lanka" + - "LiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMonacoMoldovaMonteneg" + - "roSaint MartinMadagaskarMarshalløerneMakedonienMaliMyanmar (Burma)Mongol" + - "ietMacao SARNordmarianerneMartiniqueMauretanienMontserratMaltaMauritiusM" + - "aldiverneMalawiMexicoMalaysiaMozambiqueNamibiaNy KaledonienNigerNorfolk " + - "IslandNigeriaNicaraguaHollandNorgeNepalNauruNiueNew ZealandOmanPanamaPer" + - "uFransk PolynesienPapua Ny GuineaFilippinernePakistanPolenSaint Pierre o" + - "g MiquelonPitcairnPuerto RicoDe palæstinensiske områderPortugalPalauPara" + - "guayQatarYdre OceanienRéunionRumænienSerbienRuslandRwandaSaudi-ArabienSa" + - "lomonøerneSeychellerneSudanSverigeSingaporeSt. HelenaSlovenienSvalbard o" + - "g Jan MayenSlovakietSierra LeoneSan MarinoSenegalSomaliaSurinamSydsudanS" + - "ão Tomé og PríncipeEl SalvadorSint MaartenSyrienSwazilandTristan da Cun" + - "haTurks- og CaicosøerneTchadDe franske besiddelser i Det Sydlige Indiske" + - " OceanTogoThailandTadsjikistanTokelauTimor-LesteTurkmenistanTunesienTong" + - "aTyrkietTrinidad og TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikanske o" + - "versøiske øerUSAUruguayUsbekistanVatikanstatenSaint Vincent og Grenadine" + - "rneVenezuelaDe Britiske JomfruøerDe Amerikanske JomfruøerVietnamVanuatuW" + - "allis og FutunaSamoaKosovoYemenMayotteSydafrikaZambiaZimbabweUkendt områ" + - "deVerdenAfrikaNordamerikaSydamerikaOceanienVestafrikaMellemamerikaØstafr" + - "ikaNordafrikaCentralafrikaDet sydlige AfrikaAmerikaDet nordlige AmerikaC" + - "aribienØstasienSydasienSydøstasienSydeuropaAustralasienMelanesienMikrone" + - "sienPolynesienAsienCentralasienVestasienEuropaØsteuropaNordeuropaVesteur" + - "opaLatinamerika" - -var daRegionIdx = []uint16{ // 290 elements + "uneiBoliviaDe tidligere Nederlandske AntillerBrasilienBahamasBhutanBouve" + + "tøenBotswanaHvideruslandBelizeCanadaCocosøerneCongo-KinshasaDen Centrala" + + "frikanske RepublikCongo-BrazzavilleSchweizElfenbenskystenCookøerneChileC" + + "amerounKinaColombiaClippertonøenCosta RicaCubaKap VerdeCuraçaoJuleøenCyp" + + "ernTjekkietTysklandDiego GarciaDjiboutiDanmarkDominicaDen Dominikanske R" + + "epublikAlgerietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaEritreaSpa" + + "nienEtiopienDen Europæiske UnionFinlandFijiFalklandsøerneMikronesiens Fo" + + "renede StaterFærøerneFrankrigGabonStorbritannienGrenadaGeorgienFransk Gu" + + "yanaGuernseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeÆkvatorialguinea" + + "GrækenlandSouth Georgia og De Sydlige SandwichøerGuatemalaGuamGuinea-Bis" + + "sauGuyanaSAR HongkongHeard Island og McDonald IslandsHondurasKroatienHai" + + "tiUngarnKanariske øerIndonesienIrlandIsraelIsle of ManIndienDet britiske" + + " territorium i Det Indiske OceanIrakIranIslandItalienJerseyJamaicaJordan" + + "JapanKenyaKirgisistanCambodjaKiribatiComorerneSaint Kitts og NevisNordko" + + "reaSydkoreaKuwaitCaymanøerneKasakhstanLaosLibanonSaint LuciaLiechtenstei" + + "nSri LankaLiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMonacoMoldo" + + "vaMontenegroSaint MartinMadagaskarMarshalløerneMakedonienMaliMyanmar (Bu" + + "rma)MongolietSAR MacaoNordmarianerneMartiniqueMauretanienMontserratMalta" + + "MauritiusMaldiverneMalawiMexicoMalaysiaMozambiqueNamibiaNy KaledonienNig" + + "erNorfolk IslandNigeriaNicaraguaHollandNorgeNepalNauruNiueNew ZealandOma" + + "nPanamaPeruFransk PolynesienPapua Ny GuineaFilippinernePakistanPolenSain" + + "t Pierre og MiquelonPitcairnPuerto RicoDe palæstinensiske områderPortuga" + + "lPalauParaguayQatarYdre OceanienRéunionRumænienSerbienRuslandRwandaSaudi" + + "-ArabienSalomonøerneSeychellerneSudanSverigeSingaporeSt. HelenaSlovenien" + + "Svalbard og Jan MayenSlovakietSierra LeoneSan MarinoSenegalSomaliaSurina" + + "mSydsudanSão Tomé og PríncipeEl SalvadorSint MaartenSyrienSwazilandTrist" + + "an da CunhaTurks- og CaicosøerneTchadDe franske besiddelser i Det Sydlig" + + "e Indiske OceanTogoThailandTadsjikistanTokelauTimor-LesteTurkmenistanTun" + + "esienTongaTyrkietTrinidad og TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmer" + + "ikanske oversøiske øerForenede NationerUSAUruguayUsbekistanVatikanstaten" + + "Saint Vincent og GrenadinerneVenezuelaDe Britiske JomfruøerDe Amerikansk" + + "e JomfruøerVietnamVanuatuWallis og FutunaSamoaKosovoYemenMayotteSydafrik" + + "aZambiaZimbabweUkendt områdeVerdenAfrikaNordamerikaSydamerikaOceanienVes" + + "tafrikaMellemamerikaØstafrikaNordafrikaCentralafrikaDet sydlige AfrikaAm" + + "erikaDet nordlige AmerikaCaribienØstasienSydasienSydøstasienSydeuropaAus" + + "tralasienMelanesienMikronesienPolynesienAsienCentralasienVestasienEuropa" + + "ØsteuropaNordeuropaVesteuropaLatinamerika" + +var daRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000d, 0x0014, 0x0031, 0x003c, 0x004e, 0x0056, 0x005e, 0x0066, 0x006c, 0x0075, 0x007e, 0x008e, 0x0095, 0x009f, 0x00a4, 0x00aa, 0x00b6, 0x00c9, 0x00d1, 0x00db, 0x00e2, 0x00ee, 0x00f7, - 0x00fe, 0x0105, 0x010a, 0x011b, 0x0122, 0x0128, 0x012f, 0x0147, - 0x0150, 0x0157, 0x015d, 0x0167, 0x016f, 0x017b, 0x0181, 0x0187, - 0x0192, 0x01a0, 0x01be, 0x01cf, 0x01d6, 0x01e5, 0x01ef, 0x01f4, - 0x01fc, 0x0200, 0x0208, 0x0216, 0x0220, 0x0224, 0x022d, 0x0235, - 0x023d, 0x0243, 0x024b, 0x0253, 0x025f, 0x0267, 0x026e, 0x0276, + 0x00fe, 0x0105, 0x010a, 0x011b, 0x0122, 0x0128, 0x012f, 0x0151, + 0x015a, 0x0161, 0x0167, 0x0171, 0x0179, 0x0185, 0x018b, 0x0191, + 0x019c, 0x01aa, 0x01c8, 0x01d9, 0x01e0, 0x01ef, 0x01f9, 0x01fe, + 0x0206, 0x020a, 0x0212, 0x0220, 0x022a, 0x022e, 0x0237, 0x023f, + 0x0247, 0x024d, 0x0255, 0x025d, 0x0269, 0x0271, 0x0278, 0x0280, // Entry 40 - 7F - 0x028f, 0x0297, 0x02a7, 0x02ae, 0x02b5, 0x02bc, 0x02c6, 0x02cd, - 0x02d4, 0x02dc, 0x02f1, 0x02f8, 0x02fc, 0x030b, 0x0327, 0x0331, - 0x0339, 0x033e, 0x034c, 0x0353, 0x035b, 0x0368, 0x0370, 0x0375, - 0x037e, 0x0387, 0x038d, 0x0393, 0x039d, 0x03ae, 0x03b9, 0x03e0, - 0x03e9, 0x03ed, 0x03fa, 0x0400, 0x040c, 0x042c, 0x0434, 0x043c, - 0x0441, 0x0447, 0x0455, 0x045f, 0x0465, 0x046b, 0x0476, 0x047c, - 0x04a8, 0x04ac, 0x04b0, 0x04b6, 0x04bd, 0x04c3, 0x04ca, 0x04d0, - 0x04d5, 0x04da, 0x04e5, 0x04ed, 0x04f5, 0x04fe, 0x0512, 0x051b, + 0x0299, 0x02a1, 0x02b1, 0x02b8, 0x02bf, 0x02c6, 0x02d0, 0x02d7, + 0x02de, 0x02e6, 0x02fb, 0x02fb, 0x0302, 0x0306, 0x0315, 0x0331, + 0x033b, 0x0343, 0x0348, 0x0356, 0x035d, 0x0365, 0x0372, 0x037a, + 0x037f, 0x0388, 0x0391, 0x0397, 0x039d, 0x03a7, 0x03b8, 0x03c3, + 0x03eb, 0x03f4, 0x03f8, 0x0405, 0x040b, 0x0417, 0x0437, 0x043f, + 0x0447, 0x044c, 0x0452, 0x0460, 0x046a, 0x0470, 0x0476, 0x0481, + 0x0487, 0x04b3, 0x04b7, 0x04bb, 0x04c1, 0x04c8, 0x04ce, 0x04d5, + 0x04db, 0x04e0, 0x04e5, 0x04f0, 0x04f8, 0x0500, 0x0509, 0x051d, // Entry 80 - BF - 0x0523, 0x0529, 0x0535, 0x053f, 0x0543, 0x054a, 0x0555, 0x0562, - 0x056b, 0x0572, 0x0579, 0x0580, 0x058a, 0x0591, 0x0597, 0x059e, - 0x05a4, 0x05ab, 0x05b5, 0x05c1, 0x05cb, 0x05d9, 0x05e3, 0x05e7, - 0x05f6, 0x05ff, 0x0608, 0x0616, 0x0620, 0x062b, 0x0635, 0x063a, - 0x0643, 0x064d, 0x0653, 0x0659, 0x0661, 0x066b, 0x0672, 0x067f, - 0x0684, 0x0692, 0x0699, 0x06a2, 0x06a9, 0x06ae, 0x06b3, 0x06b8, - 0x06bc, 0x06c7, 0x06cb, 0x06d1, 0x06d5, 0x06e6, 0x06f5, 0x0701, - 0x0709, 0x070e, 0x0726, 0x072e, 0x0739, 0x0755, 0x075d, 0x0762, + 0x0526, 0x052e, 0x0534, 0x0540, 0x054a, 0x054e, 0x0555, 0x0560, + 0x056d, 0x0576, 0x057d, 0x0584, 0x058b, 0x0595, 0x059c, 0x05a2, + 0x05a9, 0x05af, 0x05b6, 0x05c0, 0x05cc, 0x05d6, 0x05e4, 0x05ee, + 0x05f2, 0x0601, 0x060a, 0x0613, 0x0621, 0x062b, 0x0636, 0x0640, + 0x0645, 0x064e, 0x0658, 0x065e, 0x0664, 0x066c, 0x0676, 0x067d, + 0x068a, 0x068f, 0x069d, 0x06a4, 0x06ad, 0x06b4, 0x06b9, 0x06be, + 0x06c3, 0x06c7, 0x06d2, 0x06d6, 0x06dc, 0x06e0, 0x06f1, 0x0700, + 0x070c, 0x0714, 0x0719, 0x0731, 0x0739, 0x0744, 0x0760, 0x0768, // Entry C0 - FF - 0x076a, 0x076f, 0x077c, 0x0784, 0x078d, 0x0794, 0x079b, 0x07a1, - 0x07ae, 0x07bb, 0x07c7, 0x07cc, 0x07d3, 0x07dc, 0x07e6, 0x07ef, - 0x0804, 0x080d, 0x0819, 0x0823, 0x082a, 0x0831, 0x0838, 0x0840, - 0x0857, 0x0862, 0x086e, 0x0874, 0x087d, 0x088d, 0x08a3, 0x08a8, - 0x08da, 0x08de, 0x08e6, 0x08f2, 0x08f9, 0x0904, 0x0910, 0x0918, - 0x091d, 0x0924, 0x0936, 0x093c, 0x0942, 0x094a, 0x0951, 0x0957, - 0x0973, 0x0976, 0x097d, 0x0987, 0x0994, 0x09b1, 0x09ba, 0x09d0, - 0x09e9, 0x09f0, 0x09f7, 0x0a07, 0x0a0c, 0x0a12, 0x0a17, 0x0a1e, + 0x076d, 0x0775, 0x077a, 0x0787, 0x078f, 0x0798, 0x079f, 0x07a6, + 0x07ac, 0x07b9, 0x07c6, 0x07d2, 0x07d7, 0x07de, 0x07e7, 0x07f1, + 0x07fa, 0x080f, 0x0818, 0x0824, 0x082e, 0x0835, 0x083c, 0x0843, + 0x084b, 0x0862, 0x086d, 0x0879, 0x087f, 0x0888, 0x0898, 0x08ae, + 0x08b3, 0x08e5, 0x08e9, 0x08f1, 0x08fd, 0x0904, 0x090f, 0x091b, + 0x0923, 0x0928, 0x092f, 0x0941, 0x0947, 0x094d, 0x0955, 0x095c, + 0x0962, 0x097e, 0x098f, 0x0992, 0x0999, 0x09a3, 0x09b0, 0x09cd, + 0x09d6, 0x09ec, 0x0a05, 0x0a0c, 0x0a13, 0x0a23, 0x0a28, 0x0a2e, // Entry 100 - 13F - 0x0a27, 0x0a2d, 0x0a35, 0x0a43, 0x0a49, 0x0a4f, 0x0a5a, 0x0a64, - 0x0a6c, 0x0a76, 0x0a83, 0x0a8d, 0x0a97, 0x0aa4, 0x0ab6, 0x0abd, - 0x0ad1, 0x0ad9, 0x0ae2, 0x0aea, 0x0af6, 0x0aff, 0x0b0b, 0x0b15, - 0x0b20, 0x0b2a, 0x0b2f, 0x0b3b, 0x0b44, 0x0b4a, 0x0b54, 0x0b5e, - 0x0b68, 0x0b74, -} // Size: 604 bytes - -var deRegionStr string = "" + // Size: 3082 bytes + 0x0a33, 0x0a3a, 0x0a43, 0x0a49, 0x0a51, 0x0a5f, 0x0a65, 0x0a6b, + 0x0a76, 0x0a80, 0x0a88, 0x0a92, 0x0a9f, 0x0aa9, 0x0ab3, 0x0ac0, + 0x0ad2, 0x0ad9, 0x0aed, 0x0af5, 0x0afe, 0x0b06, 0x0b12, 0x0b1b, + 0x0b27, 0x0b31, 0x0b3c, 0x0b46, 0x0b4b, 0x0b57, 0x0b60, 0x0b66, + 0x0b70, 0x0b7a, 0x0b84, 0x0b90, +} // Size: 608 bytes + +const deRegionStr string = "" + // Size: 3075 bytes "AscensionAndorraVereinigte Arabische EmirateAfghanistanAntigua und Barbu" + "daAnguillaAlbanienArmenienAngolaAntarktisArgentinienAmerikanisch-SamoaÖs" + "terreichAustralienArubaÅlandinselnAserbaidschanBosnien und HerzegowinaBa" + @@ -39139,44 +44192,44 @@ var deRegionStr string = "" + // Size: 3082 bytes "hélemyBermudaBrunei DarussalamBolivienBonaire, Sint Eustatius und SabaBr" + "asilienBahamasBhutanBouvetinselBotsuanaBelarusBelizeKanadaKokosinselnKon" + "go-KinshasaZentralafrikanische RepublikKongo-BrazzavilleSchweizCôte d’Iv" + - "oireCookinselnChileKamerunChinaKolumbienClipperton-InselCosta RicaKubaKa" + - "p VerdeCuraçaoWeihnachtsinselZypernTschechische RepublikDeutschlandDiego" + - " GarciaDschibutiDänemarkDominicaDominikanische RepublikAlgerienCeuta und" + - " MelillaEcuadorEstlandÄgyptenWestsaharaEritreaSpanienÄthiopienEuropäisch" + - "e UnionFinnlandFidschiFalklandinselnMikronesienFäröerFrankreichGabunVere" + - "inigtes KönigreichGrenadaGeorgienFranzösisch-GuayanaGuernseyGhanaGibralt" + - "arGrönlandGambiaGuineaGuadeloupeÄquatorialguineaGriechenlandSüdgeorgien " + - "und die Südlichen SandwichinselnGuatemalaGuamGuinea-BissauGuyanaSonderve" + - "rwaltungszone HongkongHeard und McDonaldinselnHondurasKroatienHaitiUngar" + - "nKanarische InselnIndonesienIrlandIsraelIsle of ManIndienBritisches Terr" + - "itorium im Indischen OzeanIrakIranIslandItalienJerseyJamaikaJordanienJap" + - "anKeniaKirgisistanKambodschaKiribatiKomorenSt. Kitts und NevisNordkoreaS" + - "üdkoreaKuwaitKaimaninselnKasachstanLaosLibanonSt. LuciaLiechtensteinSri" + - " LankaLiberiaLesothoLitauenLuxemburgLettlandLibyenMarokkoMonacoRepublik " + - "MoldauMontenegroSt. MartinMadagaskarMarshallinselnMazedonienMaliMyanmarM" + - "ongoleiSonderverwaltungsregion MacauNördliche MarianenMartiniqueMauretan" + - "ienMontserratMaltaMauritiusMaledivenMalawiMexikoMalaysiaMosambikNamibiaN" + - "eukaledonienNigerNorfolkinselNigeriaNicaraguaNiederlandeNorwegenNepalNau" + - "ruNiueNeuseelandOmanPanamaPeruFranzösisch-PolynesienPapua-NeuguineaPhili" + - "ppinenPakistanPolenSt. Pierre und MiquelonPitcairninselnPuerto RicoPaläs" + - "tinensische AutonomiegebietePortugalPalauParaguayKatarÄußeres OzeanienRé" + - "unionRumänienSerbienRusslandRuandaSaudi-ArabienSalomonenSeychellenSudanS" + - "chwedenSingapurSt. HelenaSlowenienSvalbard und Jan MayenSlowakeiSierra L" + - "eoneSan MarinoSenegalSomaliaSurinameSüdsudanSão Tomé und PríncipeEl Salv" + - "adorSint MaartenSyrienSwasilandTristan da CunhaTurks- und CaicosinselnTs" + - "chadFranzösische Süd- und AntarktisgebieteTogoThailandTadschikistanTokel" + - "auTimor-LesteTurkmenistanTunesienTongaTürkeiTrinidad und TobagoTuvaluTai" + - "wanTansaniaUkraineUgandaAmerikanische ÜberseeinselnVereinigte StaatenUru" + - "guayUsbekistanVatikanstadtSt. Vincent und die GrenadinenVenezuelaBritisc" + - "he JungferninselnAmerikanische JungferninselnVietnamVanuatuWallis und Fu" + - "tunaSamoaKosovoJemenMayotteSüdafrikaSambiaSimbabweUnbekannte RegionWeltA" + - "frikaNordamerikaSüdamerikaOzeanienWestafrikaMittelamerikaOstafrikaNordaf" + - "rikaZentralafrikaSüdliches AfrikaAmerikaNördliches AmerikaKaribikOstasie" + - "nSüdasienSüdostasienSüdeuropaAustralasienMelanesienMikronesisches Inselg" + - "ebietPolynesienAsienZentralasienWestasienEuropaOsteuropaNordeuropaWesteu" + - "ropaLateinamerika" - -var deRegionIdx = []uint16{ // 290 elements + "oireCookinselnChileKamerunChinaKolumbienClipperton-InselCosta RicaKubaCa" + + "bo VerdeCuraçaoWeihnachtsinselZypernTschechienDeutschlandDiego GarciaDsc" + + "hibutiDänemarkDominicaDominikanische RepublikAlgerienCeuta und MelillaEc" + + "uadorEstlandÄgyptenWestsaharaEritreaSpanienÄthiopienEuropäische UnionFin" + + "nlandFidschiFalklandinselnMikronesienFäröerFrankreichGabunVereinigtes Kö" + + "nigreichGrenadaGeorgienFranzösisch-GuayanaGuernseyGhanaGibraltarGrönland" + + "GambiaGuineaGuadeloupeÄquatorialguineaGriechenlandSüdgeorgien und die Sü" + + "dlichen SandwichinselnGuatemalaGuamGuinea-BissauGuyanaSonderverwaltungsz" + + "one HongkongHeard und McDonaldinselnHondurasKroatienHaitiUngarnKanarisch" + + "e InselnIndonesienIrlandIsraelIsle of ManIndienBritisches Territorium im" + + " Indischen OzeanIrakIranIslandItalienJerseyJamaikaJordanienJapanKeniaKir" + + "gisistanKambodschaKiribatiKomorenSt. Kitts und NevisNordkoreaSüdkoreaKuw" + + "aitKaimaninselnKasachstanLaosLibanonSt. LuciaLiechtensteinSri LankaLiber" + + "iaLesothoLitauenLuxemburgLettlandLibyenMarokkoMonacoRepublik MoldauMonte" + + "negroSt. MartinMadagaskarMarshallinselnMazedonienMaliMyanmarMongoleiSond" + + "erverwaltungsregion MacauNördliche MarianenMartiniqueMauretanienMontserr" + + "atMaltaMauritiusMaledivenMalawiMexikoMalaysiaMosambikNamibiaNeukaledonie" + + "nNigerNorfolkinselNigeriaNicaraguaNiederlandeNorwegenNepalNauruNiueNeuse" + + "elandOmanPanamaPeruFranzösisch-PolynesienPapua-NeuguineaPhilippinenPakis" + + "tanPolenSt. Pierre und MiquelonPitcairninselnPuerto RicoPalästinensische" + + " AutonomiegebietePortugalPalauParaguayKatarÄußeres OzeanienRéunionRumäni" + + "enSerbienRusslandRuandaSaudi-ArabienSalomonenSeychellenSudanSchwedenSing" + + "apurSt. HelenaSlowenienSpitzbergenSlowakeiSierra LeoneSan MarinoSenegalS" + + "omaliaSurinameSüdsudanSão Tomé und PríncipeEl SalvadorSint MaartenSyrien" + + "SwasilandTristan da CunhaTurks- und CaicosinselnTschadFranzösische Süd- " + + "und AntarktisgebieteTogoThailandTadschikistanTokelauOsttimorTurkmenistan" + + "TunesienTongaTürkeiTrinidad und TobagoTuvaluTaiwanTansaniaUkraineUgandaA" + + "merikanische ÜberseeinselnVereinte NationenVereinigte StaatenUruguayUsbe" + + "kistanVatikanstadtSt. Vincent und die GrenadinenVenezuelaBritische Jungf" + + "erninselnAmerikanische JungferninselnVietnamVanuatuWallis und FutunaSamo" + + "aKosovoJemenMayotteSüdafrikaSambiaSimbabweUnbekannte RegionWeltAfrikaNor" + + "damerikaSüdamerikaOzeanienWestafrikaMittelamerikaOstafrikaNordafrikaZent" + + "ralafrikaSüdliches AfrikaAmerikaNördliches AmerikaKaribikOstasienSüdasie" + + "nSüdostasienSüdeuropaAustralasienMelanesienMikronesisches InselgebietPol" + + "ynesienAsienZentralasienWestasienEuropaOsteuropaNordeuropaWesteuropaLate" + + "inamerika" + +var deRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x004a, 0x0052, 0x005a, 0x0062, 0x0068, 0x0071, 0x007c, 0x008e, 0x0099, 0x00a3, 0x00a8, @@ -39184,44 +44237,44 @@ var deRegionIdx = []uint16{ // 290 elements 0x010e, 0x0115, 0x011a, 0x0129, 0x0130, 0x0141, 0x0149, 0x0169, 0x0172, 0x0179, 0x017f, 0x018a, 0x0192, 0x0199, 0x019f, 0x01a5, 0x01b0, 0x01be, 0x01da, 0x01eb, 0x01f2, 0x0202, 0x020c, 0x0211, - 0x0218, 0x021d, 0x0226, 0x0236, 0x0240, 0x0244, 0x024d, 0x0255, - 0x0264, 0x026a, 0x027f, 0x028a, 0x0296, 0x029f, 0x02a8, 0x02b0, + 0x0218, 0x021d, 0x0226, 0x0236, 0x0240, 0x0244, 0x024e, 0x0256, + 0x0265, 0x026b, 0x0275, 0x0280, 0x028c, 0x0295, 0x029e, 0x02a6, // Entry 40 - 7F - 0x02c7, 0x02cf, 0x02e0, 0x02e7, 0x02ee, 0x02f6, 0x0300, 0x0307, - 0x030e, 0x0318, 0x032a, 0x0332, 0x0339, 0x0347, 0x0352, 0x035a, - 0x0364, 0x0369, 0x0380, 0x0387, 0x038f, 0x03a3, 0x03ab, 0x03b0, - 0x03b9, 0x03c2, 0x03c8, 0x03ce, 0x03d8, 0x03e9, 0x03f5, 0x0423, - 0x042c, 0x0430, 0x043d, 0x0443, 0x0461, 0x0479, 0x0481, 0x0489, - 0x048e, 0x0494, 0x04a5, 0x04af, 0x04b5, 0x04bb, 0x04c6, 0x04cc, - 0x04f5, 0x04f9, 0x04fd, 0x0503, 0x050a, 0x0510, 0x0517, 0x0520, - 0x0525, 0x052a, 0x0535, 0x053f, 0x0547, 0x054e, 0x0561, 0x056a, + 0x02bd, 0x02c5, 0x02d6, 0x02dd, 0x02e4, 0x02ec, 0x02f6, 0x02fd, + 0x0304, 0x030e, 0x0320, 0x0320, 0x0328, 0x032f, 0x033d, 0x0348, + 0x0350, 0x035a, 0x035f, 0x0376, 0x037d, 0x0385, 0x0399, 0x03a1, + 0x03a6, 0x03af, 0x03b8, 0x03be, 0x03c4, 0x03ce, 0x03df, 0x03eb, + 0x0419, 0x0422, 0x0426, 0x0433, 0x0439, 0x0457, 0x046f, 0x0477, + 0x047f, 0x0484, 0x048a, 0x049b, 0x04a5, 0x04ab, 0x04b1, 0x04bc, + 0x04c2, 0x04eb, 0x04ef, 0x04f3, 0x04f9, 0x0500, 0x0506, 0x050d, + 0x0516, 0x051b, 0x0520, 0x052b, 0x0535, 0x053d, 0x0544, 0x0557, // Entry 80 - BF - 0x0573, 0x0579, 0x0585, 0x058f, 0x0593, 0x059a, 0x05a3, 0x05b0, - 0x05b9, 0x05c0, 0x05c7, 0x05ce, 0x05d7, 0x05df, 0x05e5, 0x05ec, - 0x05f2, 0x0601, 0x060b, 0x0615, 0x061f, 0x062d, 0x0637, 0x063b, - 0x0642, 0x064a, 0x0667, 0x067a, 0x0684, 0x068f, 0x0699, 0x069e, - 0x06a7, 0x06b0, 0x06b6, 0x06bc, 0x06c4, 0x06cc, 0x06d3, 0x06e0, - 0x06e5, 0x06f1, 0x06f8, 0x0701, 0x070c, 0x0714, 0x0719, 0x071e, - 0x0722, 0x072c, 0x0730, 0x0736, 0x073a, 0x0751, 0x0760, 0x076b, - 0x0773, 0x0778, 0x078f, 0x079d, 0x07a8, 0x07ca, 0x07d2, 0x07d7, + 0x0560, 0x0569, 0x056f, 0x057b, 0x0585, 0x0589, 0x0590, 0x0599, + 0x05a6, 0x05af, 0x05b6, 0x05bd, 0x05c4, 0x05cd, 0x05d5, 0x05db, + 0x05e2, 0x05e8, 0x05f7, 0x0601, 0x060b, 0x0615, 0x0623, 0x062d, + 0x0631, 0x0638, 0x0640, 0x065d, 0x0670, 0x067a, 0x0685, 0x068f, + 0x0694, 0x069d, 0x06a6, 0x06ac, 0x06b2, 0x06ba, 0x06c2, 0x06c9, + 0x06d6, 0x06db, 0x06e7, 0x06ee, 0x06f7, 0x0702, 0x070a, 0x070f, + 0x0714, 0x0718, 0x0722, 0x0726, 0x072c, 0x0730, 0x0747, 0x0756, + 0x0761, 0x0769, 0x076e, 0x0785, 0x0793, 0x079e, 0x07c0, 0x07c8, // Entry C0 - FF - 0x07df, 0x07e4, 0x07f6, 0x07fe, 0x0807, 0x080e, 0x0816, 0x081c, - 0x0829, 0x0832, 0x083c, 0x0841, 0x0849, 0x0851, 0x085b, 0x0864, - 0x087a, 0x0882, 0x088e, 0x0898, 0x089f, 0x08a6, 0x08ae, 0x08b7, - 0x08cf, 0x08da, 0x08e6, 0x08ec, 0x08f5, 0x0905, 0x091c, 0x0922, - 0x094a, 0x094e, 0x0956, 0x0963, 0x096a, 0x0975, 0x0981, 0x0989, - 0x098e, 0x0995, 0x09a8, 0x09ae, 0x09b4, 0x09bc, 0x09c3, 0x09c9, - 0x09e5, 0x09f7, 0x09fe, 0x0a08, 0x0a14, 0x0a32, 0x0a3b, 0x0a53, - 0x0a6f, 0x0a76, 0x0a7d, 0x0a8e, 0x0a93, 0x0a99, 0x0a9e, 0x0aa5, + 0x07cd, 0x07d5, 0x07da, 0x07ec, 0x07f4, 0x07fd, 0x0804, 0x080c, + 0x0812, 0x081f, 0x0828, 0x0832, 0x0837, 0x083f, 0x0847, 0x0851, + 0x085a, 0x0865, 0x086d, 0x0879, 0x0883, 0x088a, 0x0891, 0x0899, + 0x08a2, 0x08ba, 0x08c5, 0x08d1, 0x08d7, 0x08e0, 0x08f0, 0x0907, + 0x090d, 0x0935, 0x0939, 0x0941, 0x094e, 0x0955, 0x095d, 0x0969, + 0x0971, 0x0976, 0x097d, 0x0990, 0x0996, 0x099c, 0x09a4, 0x09ab, + 0x09b1, 0x09cd, 0x09de, 0x09f0, 0x09f7, 0x0a01, 0x0a0d, 0x0a2b, + 0x0a34, 0x0a4c, 0x0a68, 0x0a6f, 0x0a76, 0x0a87, 0x0a8c, 0x0a92, // Entry 100 - 13F - 0x0aaf, 0x0ab5, 0x0abd, 0x0ace, 0x0ad2, 0x0ad8, 0x0ae3, 0x0aee, - 0x0af6, 0x0b00, 0x0b0d, 0x0b16, 0x0b20, 0x0b2d, 0x0b3e, 0x0b45, - 0x0b58, 0x0b5f, 0x0b67, 0x0b70, 0x0b7c, 0x0b86, 0x0b92, 0x0b9c, - 0x0bb6, 0x0bc0, 0x0bc5, 0x0bd1, 0x0bda, 0x0be0, 0x0be9, 0x0bf3, - 0x0bfd, 0x0c0a, -} // Size: 604 bytes - -var elRegionStr string = "" + // Size: 6223 bytes + 0x0a97, 0x0a9e, 0x0aa8, 0x0aae, 0x0ab6, 0x0ac7, 0x0acb, 0x0ad1, + 0x0adc, 0x0ae7, 0x0aef, 0x0af9, 0x0b06, 0x0b0f, 0x0b19, 0x0b26, + 0x0b37, 0x0b3e, 0x0b51, 0x0b58, 0x0b60, 0x0b69, 0x0b75, 0x0b7f, + 0x0b8b, 0x0b95, 0x0baf, 0x0bb9, 0x0bbe, 0x0bca, 0x0bd3, 0x0bd9, + 0x0be2, 0x0bec, 0x0bf6, 0x0c03, +} // Size: 608 bytes + +const elRegionStr string = "" + // Size: 6223 bytes "Νήσος ΑσενσιόνΑνδόραΗνωμένα Αραβικά ΕμιράταΑφγανιστάνΑντίγκουα και Μπαρμ" + "πούνταΑνγκουίλαΑλβανίαΑρμενίαΑνγκόλαΑνταρκτικήΑργεντινήΑμερικανική Σαμό" + "αΑυστρίαΑυστραλίαΑρούμπαΝήσοι ΌλαντΑζερμπαϊτζάνΒοσνία - ΕρζεγοβίνηΜπαρμ" + @@ -39231,44 +44284,44 @@ var elRegionStr string = "" + // Size: 6223 bytes "Κίλινγκ)Κονγκό - ΚινσάσαΚεντροαφρικανική ΔημοκρατίαΚονγκό - ΜπραζαβίλΕλ" + "βετίαΑκτή ΕλεφαντοστούΝήσοι ΚουκΧιλήΚαμερούνΚίναΚολομβίαΝήσος Κλίπερτον" + "Κόστα ΡίκαΚούβαΠράσινο ΑκρωτήριοΚουρασάοΝήσος των ΧριστουγέννωνΚύπροςΤσ" + - "εχική ΔημοκρατίαΓερμανίαΝτιέγκο ΓκαρσίαΤζιμπουτίΔανίαΝτομίνικαΔομινικαν" + - "ή ΔημοκρατίαΑλγερίαΘεούτα και ΜελίλαΕκουαδόρΕσθονίαΑίγυπτοςΔυτική Σαχάρ" + - "αΕρυθραίαΙσπανίαΑιθιοπίαΕυρωπαϊκή ΈνωσηΦινλανδίαΦίτζιΝήσοι ΦόκλαντΜικρο" + - "νησίαΝήσοι ΦερόεςΓαλλίαΓκαμπόνΗνωμένο ΒασίλειοΓρενάδαΓεωργίαΓαλλική Γου" + - "ιάναΓκέρνζιΓκάναΓιβραλτάρΓροιλανδίαΓκάμπιαΓουινέαΓουαδελούπηΙσημερινή Γ" + - "ουινέαΕλλάδαΝήσοι Νότια Γεωργία και Νότιες ΣάντουιτςΓουατεμάλαΓκουάμΓου" + - "ινέα ΜπισάουΓουιάναΧονγκ Κονγκ ΕΔΠ ΚίναςΝήσοι Χερντ και ΜακντόναλντΟνδο" + - "ύραΚροατίαΑϊτήΟυγγαρίαΚανάριοι ΝήσοιΙνδονησίαΙρλανδίαΙσραήλΝήσος ΜανΙνδ" + - "ίαΒρετανικά Εδάφη Ινδικού ΩκεανούΙράκΙράνΙσλανδίαΙταλίαΤζέρζιΤζαμάικαΙο" + - "ρδανίαΙαπωνίαΚένυαΚιργιστάνΚαμπότζηΚιριμπάτιΚομόρεςΆγιος Χριστόφορος κα" + - "ι ΝέβιςΒόρεια ΚορέαΝότια ΚορέαΚουβέιτΝήσοι ΚάιμανΚαζακστάνΛάοςΛίβανοςΑγ" + - "ία ΛουκίαΛιχτενστάινΣρι ΛάνκαΛιβερίαΛεσότοΛιθουανίαΛουξεμβούργοΛετονίαΛ" + - "ιβύηΜαρόκοΜονακόΜολδαβίαΜαυροβούνιοΆγιος Μαρτίνος (Γαλλικό τμήμα)Μαδαγα" + - "σκάρηΝήσοι ΜάρσαλΠρώην Γιουγκοσλαβική Δημοκρατία της ΜακεδονίαςΜάλιΜιαν" + - "μάρ/ΒιρμανίαΜογγολίαΜακάο ΕΔΠ ΚίναςΝήσοι Βόρειες ΜαριάνεςΜαρτινίκαΜαυρι" + - "τανίαΜονσεράτΜάλταΜαυρίκιοςΜαλδίβεςΜαλάουιΜεξικόΜαλαισίαΜοζαμβίκηΝαμίμπ" + - "ιαΝέα ΚαληδονίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικαράγουαΟλλανδίαΝορβηγίαΝεπ" + - "άλΝαουρούΝιούεΝέα ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική ΠολυνησίαΠαπούα Νέα Γ" + - "ουινέαΦιλιππίνεςΠακιστάνΠολωνίαΣεν Πιερ και ΜικελόνΝήσοι ΠίτκερνΠουέρτο" + - " ΡίκοΠαλαιστινιακά ΕδάφηΠορτογαλίαΠαλάουΠαραγουάηΚατάρΠεριφερειακή Ωκεαν" + - "ίαΡεϊνιόνΡουμανίαΣερβίαΡωσίαΡουάνταΣαουδική ΑραβίαΝήσοι ΣολομώντοςΣεϋχέ" + - "λλεςΣουδάνΣουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπαρντ και Γιαν Μαγιέν" + - "ΣλοβακίαΣιέρα ΛεόνεΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρινάμΝότιο ΣουδάνΣάο " + - "Τομέ και ΠρίνσιπεΕλ ΣαλβαδόρΆγιος Μαρτίνος (Ολλανδικό τμήμα)ΣυρίαΣουαζι" + - "λάνδηΤριστάν ντα ΚούνιαΝήσοι Τερκ και ΚάικοςΤσαντΓαλλικές περιοχές του " + - "νοτίου ημισφαιρίουΤόγκοΤαϊλάνδηΤατζικιστάνΤοκελάουΤιμόρ-ΛέστεΤουρκμενισ" + - "τάνΤυνησίαΤόνγκαΤουρκίαΤρινιντάντ και ΤομπάγκοΤουβαλούΤαϊβάνΤανζανίαΟυκ" + - "ρανίαΟυγκάνταΑπομακρυσμένες Νησίδες ΗΠΑΗνωμένες ΠολιτείεςΟυρουγουάηΟυζμ" + - "πεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζουέλαΒρετανικές Παρθ" + - "ένοι ΝήσοιΑμερικανικές Παρθένοι ΝήσοιΒιετνάμΒανουάτουΟυάλις και Φουτούν" + - "αΣαμόαΚόσοβοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουεΆγνωστη περιοχήΚόσμ" + - "οςΑφρικήΒόρεια ΑμερικήΝότια ΑμερικήΩκεανίαΔυτική ΑφρικήΚεντρική Αμερική" + - "Ανατολική ΑφρικήΒόρεια ΑφρικήΜέση ΑφρικήΝότιος ΑφρικήΑμερικήΒόρειος Αμε" + - "ρικήΚαραϊβικήΑνατολική ΑσίαΝότια ΑσίαΝοτιοανατολική ΑσίαΝότια ΕυρώπηΑυσ" + - "τραλασίαΜελανησίαΠεριοχή ΜικρονησίαςΠολυνησίαΑσίαΚεντρική ΑσίαΔυτική Ασ" + - "ίαΕυρώπηΑνατολική ΕυρώπηΒόρεια ΕυρώπηΔυτική ΕυρώπηΛατινική Αμερική" - -var elRegionIdx = []uint16{ // 290 elements + "εχίαΓερμανίαΝτιέγκο ΓκαρσίαΤζιμπουτίΔανίαΝτομίνικαΔομινικανή Δημοκρατία" + + "ΑλγερίαΘεούτα και ΜελίλαΕκουαδόρΕσθονίαΑίγυπτοςΔυτική ΣαχάραΕρυθραίαΙσπ" + + "ανίαΑιθιοπίαΕυρωπαϊκή ΈνωσηΦινλανδίαΦίτζιΝήσοι ΦόκλαντΜικρονησίαΝήσοι Φ" + + "ερόεςΓαλλίαΓκαμπόνΗνωμένο ΒασίλειοΓρενάδαΓεωργίαΓαλλική ΓουιάναΓκέρνζιΓ" + + "κάναΓιβραλτάρΓροιλανδίαΓκάμπιαΓουινέαΓουαδελούπηΙσημερινή ΓουινέαΕλλάδα" + + "Νήσοι Νότια Γεωργία και Νότιες ΣάντουιτςΓουατεμάλαΓκουάμΓουινέα Μπισάου" + + "ΓουιάναΧονγκ Κονγκ ΕΔΠ ΚίναςΝήσοι Χερντ και ΜακντόναλντΟνδούραΚροατίαΑϊ" + + "τήΟυγγαρίαΚανάριοι ΝήσοιΙνδονησίαΙρλανδίαΙσραήλΝήσος ΜανΙνδίαΒρετανικά " + + "Εδάφη Ινδικού ΩκεανούΙράκΙράνΙσλανδίαΙταλίαΤζέρζιΤζαμάικαΙορδανίαΙαπωνί" + + "αΚένυαΚιργιστάνΚαμπότζηΚιριμπάτιΚομόρεςΆγιος Χριστόφορος και ΝέβιςΒόρει" + + "α ΚορέαΝότια ΚορέαΚουβέιτΝήσοι ΚάιμανΚαζακστάνΛάοςΛίβανοςΑγία ΛουκίαΛιχ" + + "τενστάινΣρι ΛάνκαΛιβερίαΛεσότοΛιθουανίαΛουξεμβούργοΛετονίαΛιβύηΜαρόκοΜο" + + "νακόΜολδαβίαΜαυροβούνιοΆγιος Μαρτίνος (Γαλλικό τμήμα)ΜαδαγασκάρηΝήσοι Μ" + + "άρσαλΠρώην Γιουγκοσλαβική Δημοκρατία της ΜακεδονίαςΜάλιΜιανμάρ/Βιρμανία" + + "ΜογγολίαΜακάο ΕΔΠ ΚίναςΝήσοι Βόρειες ΜαριάνεςΜαρτινίκαΜαυριτανίαΜονσερά" + + "τΜάλταΜαυρίκιοςΜαλδίβεςΜαλάουιΜεξικόΜαλαισίαΜοζαμβίκηΝαμίμπιαΝέα Καληδο" + + "νίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικαράγουαΟλλανδίαΝορβηγίαΝεπάλΝαουρούΝιο" + + "ύεΝέα ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική ΠολυνησίαΠαπούα Νέα ΓουινέαΦιλιππ" + + "ίνεςΠακιστάνΠολωνίαΣεν Πιερ και ΜικελόνΝήσοι ΠίτκερνΠουέρτο ΡίκοΠαλαιστ" + + "ινιακά ΕδάφηΠορτογαλίαΠαλάουΠαραγουάηΚατάρΠεριφερειακή ΩκεανίαΡεϊνιόνΡο" + + "υμανίαΣερβίαΡωσίαΡουάνταΣαουδική ΑραβίαΝήσοι ΣολομώντοςΣεϋχέλλεςΣουδάνΣ" + + "ουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπαρντ και Γιαν ΜαγιένΣλοβακίαΣιέ" + + "ρα ΛεόνεΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρινάμΝότιο ΣουδάνΣάο Τομέ και Πρ" + + "ίνσιπεΕλ ΣαλβαδόρΆγιος Μαρτίνος (Ολλανδικό τμήμα)ΣυρίαΣουαζιλάνδηΤριστά" + + "ν ντα ΚούνιαΝήσοι Τερκ και ΚάικοςΤσαντΓαλλικές περιοχές του νοτίου ημισ" + + "φαιρίουΤόγκοΤαϊλάνδηΤατζικιστάνΤοκελάουΤιμόρ-ΛέστεΤουρκμενιστάνΤυνησίαΤ" + + "όνγκαΤουρκίαΤρινιντάντ και ΤομπάγκοΤουβαλούΤαϊβάνΤανζανίαΟυκρανίαΟυγκάν" + + "ταΑπομακρυσμένες Νησίδες ΗΠΑΗνωμένα ΈθνηΗνωμένες ΠολιτείεςΟυρουγουάηΟυζ" + + "μπεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζουέλαΒρετανικές Παρ" + + "θένοι ΝήσοιΑμερικανικές Παρθένοι ΝήσοιΒιετνάμΒανουάτουΟυάλις και Φουτού" + + "ναΣαμόαΚόσοβοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουεΆγνωστη περιοχήΚόσ" + + "μοςΑφρικήΒόρεια ΑμερικήΝότια ΑμερικήΩκεανίαΔυτική ΑφρικήΚεντρική Αμερικ" + + "ήΑνατολική ΑφρικήΒόρεια ΑφρικήΜέση ΑφρικήΝότιος ΑφρικήΑμερικήΒόρειος Αμ" + + "ερικήΚαραϊβικήΑνατολική ΑσίαΝότια ΑσίαΝοτιοανατολική ΑσίαΝότια ΕυρώπηΑυ" + + "στραλασίαΜελανησίαΠεριοχή ΜικρονησίαςΠολυνησίαΑσίαΚεντρική ΑσίαΔυτική Α" + + "σίαΕυρώπηΑνατολική ΕυρώπηΒόρεια ΕυρώπηΔυτική ΕυρώπηΛατινική Αμερική" + +var elRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001b, 0x0027, 0x0053, 0x0067, 0x0097, 0x00a9, 0x00b7, 0x00c5, 0x00d3, 0x00e7, 0x00f9, 0x011a, 0x0128, 0x013a, 0x0148, @@ -39277,43 +44330,43 @@ var elRegionIdx = []uint16{ // 290 elements 0x02b7, 0x02c7, 0x02d5, 0x02ec, 0x0300, 0x0314, 0x0320, 0x032e, 0x0354, 0x0371, 0x03a6, 0x03c7, 0x03d5, 0x03f6, 0x0409, 0x0411, 0x0421, 0x0429, 0x0439, 0x0456, 0x0469, 0x0473, 0x0494, 0x04a4, - 0x04d0, 0x04dc, 0x04ff, 0x050f, 0x052c, 0x053e, 0x0548, 0x055a, + 0x04d0, 0x04dc, 0x04e8, 0x04f8, 0x0515, 0x0527, 0x0531, 0x0543, // Entry 40 - 7F - 0x0583, 0x0591, 0x05b1, 0x05c1, 0x05cf, 0x05df, 0x05f8, 0x0608, - 0x0616, 0x0626, 0x0643, 0x0655, 0x065f, 0x0678, 0x068c, 0x06a3, - 0x06af, 0x06bd, 0x06dc, 0x06ea, 0x06f8, 0x0715, 0x0723, 0x072d, - 0x073f, 0x0753, 0x0761, 0x076f, 0x0785, 0x07a6, 0x07b2, 0x07fd, - 0x0811, 0x081d, 0x083a, 0x0848, 0x086f, 0x08a2, 0x08b0, 0x08be, - 0x08c6, 0x08d6, 0x08f1, 0x0903, 0x0913, 0x091f, 0x0930, 0x093a, - 0x0975, 0x097d, 0x0985, 0x0995, 0x09a1, 0x09ad, 0x09bd, 0x09cd, - 0x09db, 0x09e5, 0x09f7, 0x0a07, 0x0a19, 0x0a27, 0x0a5a, 0x0a71, + 0x056c, 0x057a, 0x059a, 0x05aa, 0x05b8, 0x05c8, 0x05e1, 0x05f1, + 0x05ff, 0x060f, 0x062c, 0x062c, 0x063e, 0x0648, 0x0661, 0x0675, + 0x068c, 0x0698, 0x06a6, 0x06c5, 0x06d3, 0x06e1, 0x06fe, 0x070c, + 0x0716, 0x0728, 0x073c, 0x074a, 0x0758, 0x076e, 0x078f, 0x079b, + 0x07e6, 0x07fa, 0x0806, 0x0823, 0x0831, 0x0858, 0x088b, 0x0899, + 0x08a7, 0x08af, 0x08bf, 0x08da, 0x08ec, 0x08fc, 0x0908, 0x0919, + 0x0923, 0x095e, 0x0966, 0x096e, 0x097e, 0x098a, 0x0996, 0x09a6, + 0x09b6, 0x09c4, 0x09ce, 0x09e0, 0x09f0, 0x0a02, 0x0a10, 0x0a43, // Entry 80 - BF - 0x0a86, 0x0a94, 0x0aab, 0x0abd, 0x0ac5, 0x0ad3, 0x0ae8, 0x0afe, - 0x0b0f, 0x0b1d, 0x0b29, 0x0b3b, 0x0b53, 0x0b61, 0x0b6b, 0x0b77, - 0x0b83, 0x0b93, 0x0ba9, 0x0be0, 0x0bf6, 0x0c0d, 0x0c65, 0x0c6d, - 0x0c8c, 0x0c9c, 0x0cb8, 0x0ce2, 0x0cf4, 0x0d08, 0x0d18, 0x0d22, - 0x0d34, 0x0d44, 0x0d52, 0x0d5e, 0x0d6e, 0x0d80, 0x0d90, 0x0da9, - 0x0db7, 0x0dd0, 0x0dde, 0x0df2, 0x0e02, 0x0e12, 0x0e1c, 0x0e2a, - 0x0e34, 0x0e4b, 0x0e53, 0x0e61, 0x0e6b, 0x0e8c, 0x0eae, 0x0ec2, - 0x0ed2, 0x0ee0, 0x0f05, 0x0f1e, 0x0f35, 0x0f5a, 0x0f6e, 0x0f7a, + 0x0a5a, 0x0a6f, 0x0a7d, 0x0a94, 0x0aa6, 0x0aae, 0x0abc, 0x0ad1, + 0x0ae7, 0x0af8, 0x0b06, 0x0b12, 0x0b24, 0x0b3c, 0x0b4a, 0x0b54, + 0x0b60, 0x0b6c, 0x0b7c, 0x0b92, 0x0bc9, 0x0bdf, 0x0bf6, 0x0c4e, + 0x0c56, 0x0c75, 0x0c85, 0x0ca1, 0x0ccb, 0x0cdd, 0x0cf1, 0x0d01, + 0x0d0b, 0x0d1d, 0x0d2d, 0x0d3b, 0x0d47, 0x0d57, 0x0d69, 0x0d79, + 0x0d92, 0x0da0, 0x0db9, 0x0dc7, 0x0ddb, 0x0deb, 0x0dfb, 0x0e05, + 0x0e13, 0x0e1d, 0x0e34, 0x0e3c, 0x0e4a, 0x0e54, 0x0e75, 0x0e97, + 0x0eab, 0x0ebb, 0x0ec9, 0x0eee, 0x0f07, 0x0f1e, 0x0f43, 0x0f57, // Entry C0 - FF - 0x0f8c, 0x0f96, 0x0fbd, 0x0fcb, 0x0fdb, 0x0fe7, 0x0ff1, 0x0fff, - 0x101c, 0x103b, 0x104d, 0x1059, 0x1067, 0x107b, 0x108e, 0x109e, - 0x10cf, 0x10df, 0x10f4, 0x110d, 0x111d, 0x112b, 0x113b, 0x1152, - 0x1179, 0x118e, 0x11c9, 0x11d3, 0x11e9, 0x120b, 0x1232, 0x123c, - 0x1288, 0x1292, 0x12a2, 0x12b8, 0x12c8, 0x12dd, 0x12f7, 0x1305, - 0x1311, 0x131f, 0x134b, 0x135b, 0x1367, 0x1377, 0x1387, 0x1397, - 0x13c9, 0x13ec, 0x1400, 0x1418, 0x1428, 0x1461, 0x1475, 0x14a5, - 0x14d9, 0x14e7, 0x14f9, 0x151d, 0x1527, 0x1533, 0x153f, 0x154b, + 0x0f63, 0x0f75, 0x0f7f, 0x0fa6, 0x0fb4, 0x0fc4, 0x0fd0, 0x0fda, + 0x0fe8, 0x1005, 0x1024, 0x1036, 0x1042, 0x1050, 0x1064, 0x1077, + 0x1087, 0x10b8, 0x10c8, 0x10dd, 0x10f6, 0x1106, 0x1114, 0x1124, + 0x113b, 0x1162, 0x1177, 0x11b2, 0x11bc, 0x11d2, 0x11f4, 0x121b, + 0x1225, 0x1271, 0x127b, 0x128b, 0x12a1, 0x12b1, 0x12c6, 0x12e0, + 0x12ee, 0x12fa, 0x1308, 0x1334, 0x1344, 0x1350, 0x1360, 0x1370, + 0x1380, 0x13b2, 0x13c9, 0x13ec, 0x1400, 0x1418, 0x1428, 0x1461, + 0x1475, 0x14a5, 0x14d9, 0x14e7, 0x14f9, 0x151d, 0x1527, 0x1533, // Entry 100 - 13F - 0x1562, 0x156e, 0x1582, 0x159f, 0x15ab, 0x15b7, 0x15d2, 0x15eb, - 0x15f9, 0x1612, 0x1631, 0x1650, 0x1669, 0x167e, 0x1697, 0x16a5, - 0x16c2, 0x16d4, 0x16ef, 0x1702, 0x1727, 0x173e, 0x1754, 0x1766, - 0x178b, 0x179d, 0x17a5, 0x17be, 0x17d3, 0x17df, 0x17fe, 0x1817, - 0x1830, 0x184f, -} // Size: 604 bytes - -var enRegionStr string = "" + // Size: 2920 bytes + 0x153f, 0x154b, 0x1562, 0x156e, 0x1582, 0x159f, 0x15ab, 0x15b7, + 0x15d2, 0x15eb, 0x15f9, 0x1612, 0x1631, 0x1650, 0x1669, 0x167e, + 0x1697, 0x16a5, 0x16c2, 0x16d4, 0x16ef, 0x1702, 0x1727, 0x173e, + 0x1754, 0x1766, 0x178b, 0x179d, 0x17a5, 0x17be, 0x17d3, 0x17df, + 0x17fe, 0x1817, 0x1830, 0x184f, +} // Size: 608 bytes + +const enRegionStr string = "" + // Size: 2935 bytes "Ascension IslandAndorraUnited Arab EmiratesAfghanistanAntigua & BarbudaA" + "nguillaAlbaniaArmeniaAngolaAntarcticaArgentinaAmerican SamoaAustriaAustr" + "aliaArubaÅland IslandsAzerbaijanBosnia & HerzegovinaBarbadosBangladeshBe" + @@ -39322,41 +44375,41 @@ var enRegionStr string = "" + // Size: 2920 bytes "usBelizeCanadaCocos (Keeling) IslandsCongo - KinshasaCentral African Rep" + "ublicCongo - BrazzavilleSwitzerlandCôte d’IvoireCook IslandsChileCameroo" + "nChinaColombiaClipperton IslandCosta RicaCubaCape VerdeCuraçaoChristmas " + - "IslandCyprusCzech RepublicGermanyDiego GarciaDjiboutiDenmarkDominicaDomi" + - "nican RepublicAlgeriaCeuta & MelillaEcuadorEstoniaEgyptWestern SaharaEri" + - "treaSpainEthiopiaEuropean UnionFinlandFijiFalkland IslandsMicronesiaFaro" + - "e IslandsFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGuernseyGha" + - "naGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceSouth G" + - "eorgia & South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaHong Kong" + - " SAR ChinaHeard & McDonald IslandsHondurasCroatiaHaitiHungaryCanary Isla" + - "ndsIndonesiaIrelandIsraelIsle of ManIndiaBritish Indian Ocean TerritoryI" + - "raqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrgyzstanCambodiaKiriba" + - "tiComorosSt. Kitts & NevisNorth KoreaSouth KoreaKuwaitCayman IslandsKaza" + - "khstanLaosLebanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaL" + - "uxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSt. MartinMadagascarMa" + - "rshall IslandsMacedoniaMaliMyanmar (Burma)MongoliaMacau SAR ChinaNorther" + - "n Mariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMal" + - "awiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerNorfolk IslandNigeri" + - "aNicaraguaNetherlandsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrench" + - " PolynesiaPapua New GuineaPhilippinesPakistanPolandSt. Pierre & Miquelon" + - "Pitcairn IslandsPuerto RicoPalestinian TerritoriesPortugalPalauParaguayQ" + - "atarOutlying OceaniaRéunionRomaniaSerbiaRussiaRwandaSaudi ArabiaSolomon " + - "IslandsSeychellesSudanSwedenSingaporeSt. HelenaSloveniaSvalbard & Jan Ma" + - "yenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSouth SudanSão To" + - "mé & PríncipeEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaTurks " + - "& Caicos IslandsChadFrench Southern TerritoriesTogoThailandTajikistanTok" + - "elauTimor-LesteTurkmenistanTunisiaTongaTurkeyTrinidad & TobagoTuvaluTaiw" + - "anTanzaniaUkraineUgandaU.S. Outlying IslandsUnited StatesUruguayUzbekist" + - "anVatican CitySt. Vincent & GrenadinesVenezuelaBritish Virgin IslandsU.S" + - ". Virgin IslandsVietnamVanuatuWallis & FutunaSamoaKosovoYemenMayotteSout" + - "h AfricaZambiaZimbabweUnknown RegionWorldAfricaNorth AmericaSouth Americ" + - "aOceaniaWestern AfricaCentral AmericaEastern AfricaNorthern AfricaMiddle" + - " AfricaSouthern AfricaAmericasNorthern AmericaCaribbeanEastern AsiaSouth" + - "ern AsiaSoutheast AsiaSouthern EuropeAustralasiaMelanesiaMicronesian Reg" + - "ionPolynesiaAsiaCentral AsiaWestern AsiaEuropeEastern EuropeNorthern Eur" + - "opeWestern EuropeLatin America" - -var enRegionIdx = []uint16{ // 290 elements + "IslandCyprusCzechiaGermanyDiego GarciaDjiboutiDenmarkDominicaDominican R" + + "epublicAlgeriaCeuta & MelillaEcuadorEstoniaEgyptWestern SaharaEritreaSpa" + + "inEthiopiaEuropean UnionEurozoneFinlandFijiFalkland IslandsMicronesiaFar" + + "oe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGuernseyGh" + + "anaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceSouth " + + "Georgia & South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaHong Kon" + + "g SAR ChinaHeard & McDonald IslandsHondurasCroatiaHaitiHungaryCanary Isl" + + "andsIndonesiaIrelandIsraelIsle of ManIndiaBritish Indian Ocean Territory" + + "IraqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrgyzstanCambodiaKirib" + + "atiComorosSt. Kitts & NevisNorth KoreaSouth KoreaKuwaitCayman IslandsKaz" + + "akhstanLaosLebanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLithuania" + + "LuxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSt. MartinMadagascarM" + + "arshall IslandsMacedoniaMaliMyanmar (Burma)MongoliaMacau SAR ChinaNorthe" + + "rn Mariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMa" + + "lawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerNorfolk IslandNiger" + + "iaNicaraguaNetherlandsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrenc" + + "h PolynesiaPapua New GuineaPhilippinesPakistanPolandSt. Pierre & Miquelo" + + "nPitcairn IslandsPuerto RicoPalestinian TerritoriesPortugalPalauParaguay" + + "QatarOutlying OceaniaRéunionRomaniaSerbiaRussiaRwandaSaudi ArabiaSolomon" + + " IslandsSeychellesSudanSwedenSingaporeSt. HelenaSloveniaSvalbard & Jan M" + + "ayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSouth SudanSão T" + + "omé & PríncipeEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaTurks" + + " & Caicos IslandsChadFrench Southern TerritoriesTogoThailandTajikistanTo" + + "kelauTimor-LesteTurkmenistanTunisiaTongaTurkeyTrinidad & TobagoTuvaluTai" + + "wanTanzaniaUkraineUgandaU.S. Outlying IslandsUnited NationsUnited States" + + "UruguayUzbekistanVatican CitySt. Vincent & GrenadinesVenezuelaBritish Vi" + + "rgin IslandsU.S. Virgin IslandsVietnamVanuatuWallis & FutunaSamoaKosovoY" + + "emenMayotteSouth AfricaZambiaZimbabweUnknown RegionWorldAfricaNorth Amer" + + "icaSouth AmericaOceaniaWestern AfricaCentral AmericaEastern AfricaNorthe" + + "rn AfricaMiddle AfricaSouthern AfricaAmericasNorthern AmericaCaribbeanEa" + + "stern AsiaSouthern AsiaSoutheast AsiaSouthern EuropeAustralasiaMelanesia" + + "Micronesian RegionPolynesiaAsiaCentral AsiaWestern AsiaEuropeEastern Eur" + + "opeNorthern EuropeWestern EuropeLatin America" + +var enRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0047, 0x004f, 0x0056, 0x005d, 0x0063, 0x006d, 0x0076, 0x0084, 0x008b, 0x0094, 0x0099, @@ -39365,232 +44418,267 @@ var enRegionIdx = []uint16{ // 290 elements 0x0143, 0x014a, 0x0150, 0x015d, 0x0165, 0x016c, 0x0172, 0x0178, 0x018f, 0x019f, 0x01b7, 0x01ca, 0x01d5, 0x01e5, 0x01f1, 0x01f6, 0x01fe, 0x0203, 0x020b, 0x021c, 0x0226, 0x022a, 0x0234, 0x023c, - 0x024c, 0x0252, 0x0260, 0x0267, 0x0273, 0x027b, 0x0282, 0x028a, + 0x024c, 0x0252, 0x0259, 0x0260, 0x026c, 0x0274, 0x027b, 0x0283, // Entry 40 - 7F - 0x029c, 0x02a3, 0x02b2, 0x02b9, 0x02c0, 0x02c5, 0x02d3, 0x02da, - 0x02df, 0x02e7, 0x02f5, 0x02fc, 0x0300, 0x0310, 0x031a, 0x0327, - 0x032d, 0x0332, 0x0340, 0x0347, 0x034e, 0x035b, 0x0363, 0x0368, - 0x0371, 0x037a, 0x0380, 0x0386, 0x0390, 0x03a1, 0x03a7, 0x03cd, - 0x03d6, 0x03da, 0x03e7, 0x03ed, 0x0400, 0x0418, 0x0420, 0x0427, - 0x042c, 0x0433, 0x0441, 0x044a, 0x0451, 0x0457, 0x0462, 0x0467, - 0x0485, 0x0489, 0x048d, 0x0494, 0x0499, 0x049f, 0x04a6, 0x04ac, - 0x04b1, 0x04b6, 0x04c0, 0x04c8, 0x04d0, 0x04d7, 0x04e8, 0x04f3, + 0x0295, 0x029c, 0x02ab, 0x02b2, 0x02b9, 0x02be, 0x02cc, 0x02d3, + 0x02d8, 0x02e0, 0x02ee, 0x02f6, 0x02fd, 0x0301, 0x0311, 0x031b, + 0x0328, 0x032e, 0x0333, 0x0341, 0x0348, 0x034f, 0x035c, 0x0364, + 0x0369, 0x0372, 0x037b, 0x0381, 0x0387, 0x0391, 0x03a2, 0x03a8, + 0x03ce, 0x03d7, 0x03db, 0x03e8, 0x03ee, 0x0401, 0x0419, 0x0421, + 0x0428, 0x042d, 0x0434, 0x0442, 0x044b, 0x0452, 0x0458, 0x0463, + 0x0468, 0x0486, 0x048a, 0x048e, 0x0495, 0x049a, 0x04a0, 0x04a7, + 0x04ad, 0x04b2, 0x04b7, 0x04c1, 0x04c9, 0x04d1, 0x04d8, 0x04e9, // Entry 80 - BF - 0x04fe, 0x0504, 0x0512, 0x051c, 0x0520, 0x0527, 0x0530, 0x053d, - 0x0546, 0x054d, 0x0554, 0x055d, 0x0567, 0x056d, 0x0572, 0x0579, - 0x057f, 0x0586, 0x0590, 0x059a, 0x05a4, 0x05b4, 0x05bd, 0x05c1, - 0x05d0, 0x05d8, 0x05e7, 0x05ff, 0x0609, 0x0613, 0x061d, 0x0622, - 0x062b, 0x0633, 0x0639, 0x063f, 0x0647, 0x0651, 0x0658, 0x0665, - 0x066a, 0x0678, 0x067f, 0x0688, 0x0693, 0x0699, 0x069e, 0x06a3, - 0x06a7, 0x06b2, 0x06b6, 0x06bc, 0x06c0, 0x06d0, 0x06e0, 0x06eb, - 0x06f3, 0x06f9, 0x070e, 0x071e, 0x0729, 0x0740, 0x0748, 0x074d, + 0x04f4, 0x04ff, 0x0505, 0x0513, 0x051d, 0x0521, 0x0528, 0x0531, + 0x053e, 0x0547, 0x054e, 0x0555, 0x055e, 0x0568, 0x056e, 0x0573, + 0x057a, 0x0580, 0x0587, 0x0591, 0x059b, 0x05a5, 0x05b5, 0x05be, + 0x05c2, 0x05d1, 0x05d9, 0x05e8, 0x0600, 0x060a, 0x0614, 0x061e, + 0x0623, 0x062c, 0x0634, 0x063a, 0x0640, 0x0648, 0x0652, 0x0659, + 0x0666, 0x066b, 0x0679, 0x0680, 0x0689, 0x0694, 0x069a, 0x069f, + 0x06a4, 0x06a8, 0x06b3, 0x06b7, 0x06bd, 0x06c1, 0x06d1, 0x06e1, + 0x06ec, 0x06f4, 0x06fa, 0x070f, 0x071f, 0x072a, 0x0741, 0x0749, // Entry C0 - FF - 0x0755, 0x075a, 0x076a, 0x0772, 0x0779, 0x077f, 0x0785, 0x078b, - 0x0797, 0x07a6, 0x07b0, 0x07b5, 0x07bb, 0x07c4, 0x07ce, 0x07d6, - 0x07ea, 0x07f2, 0x07fe, 0x0808, 0x080f, 0x0816, 0x081e, 0x0829, - 0x083f, 0x084a, 0x0856, 0x085b, 0x0864, 0x0874, 0x088a, 0x088e, - 0x08a9, 0x08ad, 0x08b5, 0x08bf, 0x08c6, 0x08d1, 0x08dd, 0x08e4, - 0x08e9, 0x08ef, 0x0900, 0x0906, 0x090c, 0x0914, 0x091b, 0x0921, - 0x0936, 0x0943, 0x094a, 0x0954, 0x0960, 0x0978, 0x0981, 0x0997, - 0x09aa, 0x09b1, 0x09b8, 0x09c7, 0x09cc, 0x09d2, 0x09d7, 0x09de, + 0x074e, 0x0756, 0x075b, 0x076b, 0x0773, 0x077a, 0x0780, 0x0786, + 0x078c, 0x0798, 0x07a7, 0x07b1, 0x07b6, 0x07bc, 0x07c5, 0x07cf, + 0x07d7, 0x07eb, 0x07f3, 0x07ff, 0x0809, 0x0810, 0x0817, 0x081f, + 0x082a, 0x0840, 0x084b, 0x0857, 0x085c, 0x0865, 0x0875, 0x088b, + 0x088f, 0x08aa, 0x08ae, 0x08b6, 0x08c0, 0x08c7, 0x08d2, 0x08de, + 0x08e5, 0x08ea, 0x08f0, 0x0901, 0x0907, 0x090d, 0x0915, 0x091c, + 0x0922, 0x0937, 0x0945, 0x0952, 0x0959, 0x0963, 0x096f, 0x0987, + 0x0990, 0x09a6, 0x09b9, 0x09c0, 0x09c7, 0x09d6, 0x09db, 0x09e1, // Entry 100 - 13F - 0x09ea, 0x09f0, 0x09f8, 0x0a06, 0x0a0b, 0x0a11, 0x0a1e, 0x0a2b, - 0x0a32, 0x0a40, 0x0a4f, 0x0a5d, 0x0a6c, 0x0a79, 0x0a88, 0x0a90, - 0x0aa0, 0x0aa9, 0x0ab5, 0x0ac2, 0x0ad0, 0x0adf, 0x0aea, 0x0af3, - 0x0b05, 0x0b0e, 0x0b12, 0x0b1e, 0x0b2a, 0x0b30, 0x0b3e, 0x0b4d, - 0x0b5b, 0x0b68, -} // Size: 604 bytes - -const enGBRegionStr string = "" - -var enGBRegionIdx = []uint16{ // 0 elements - -} // Size: 24 bytes - -var esRegionStr string = "" + // Size: 3107 bytes + 0x09e6, 0x09ed, 0x09f9, 0x09ff, 0x0a07, 0x0a15, 0x0a1a, 0x0a20, + 0x0a2d, 0x0a3a, 0x0a41, 0x0a4f, 0x0a5e, 0x0a6c, 0x0a7b, 0x0a88, + 0x0a97, 0x0a9f, 0x0aaf, 0x0ab8, 0x0ac4, 0x0ad1, 0x0adf, 0x0aee, + 0x0af9, 0x0b02, 0x0b14, 0x0b1d, 0x0b21, 0x0b2d, 0x0b39, 0x0b3f, + 0x0b4d, 0x0b5c, 0x0b6a, 0x0b77, +} // Size: 608 bytes + +const esRegionStr string = "" + // Size: 3097 bytes "Isla de la AscensiónAndorraEmiratos Árabes UnidosAfganistánAntigua y Bar" + "budaAnguilaAlbaniaArmeniaAngolaAntártidaArgentinaSamoa AmericanaAustriaA" + "ustraliaArubaIslas ÅlandAzerbaiyánBosnia-HerzegovinaBarbadosBangladésBél" + "gicaBurkina FasoBulgariaBaréinBurundiBenínSan BartoloméBermudasBrunéiBol" + "iviaCaribe neerlandésBrasilBahamasButánIsla BouvetBotsuanaBielorrusiaBel" + "iceCanadáIslas CocosRepública Democrática del CongoRepública Centroafric" + - "anaRepública del CongoSuizaCosta de MarfilIslas CookChileCamerúnChinaCol" + - "ombiaIsla ClippertonCosta RicaCubaCabo VerdeCurazaoIsla de NavidadChipre" + - "República ChecaAlemaniaDiego GarcíaYibutiDinamarcaDominicaRepública Domi" + - "nicanaArgeliaCeuta y MelillaEcuadorEstoniaEgiptoSáhara OccidentalEritrea" + - "EspañaEtiopíaUnión EuropeaFinlandiaFiyiIslas MalvinasMicronesiaIslas Fer" + - "oeFranciaGabónReino UnidoGranadaGeorgiaGuayana FrancesaGuerneseyGhanaGib" + - "raltarGroenlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaIslas Georg" + - "ia del Sur y Sandwich del SurGuatemalaGuamGuinea-BisáuGuyanaRAE de Hong " + - "Kong (China)Islas Heard y McDonaldHondurasCroaciaHaitíHungríaCanariasInd" + - "onesiaIrlandaIsraelIsla de ManIndiaTerritorio Británico del Océano Índic" + - "oIrakIránIslandiaItaliaJerseyJamaicaJordaniaJapónKeniaKirguistánCamboyaK" + - "iribatiComorasSan Cristóbal y NievesCorea del NorteCorea del SurKuwaitIs" + - "las CaimánKazajistánLaosLíbanoSanta LucíaLiechtensteinSri LankaLiberiaLe" + - "sotoLituaniaLuxemburgoLetoniaLibiaMarruecosMónacoMoldaviaMontenegroSan M" + - "artínMadagascarIslas MarshallMacedoniaMaliMyanmar (Birmania)MongoliaRAE " + - "de Macao (China)Islas Marianas del NorteMartinicaMauritaniaMontserratMal" + - "taMauricioMaldivasMalauiMéxicoMalasiaMozambiqueNamibiaNueva CaledoniaNíg" + - "erIsla NorfolkNigeriaNicaraguaPaíses BajosNoruegaNepalNauruNiueNueva Zel" + - "andaOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipinasPakistánP" + - "oloniaSan Pedro y MiquelónIslas PitcairnPuerto RicoTerritorios Palestino" + - "sPortugalPalaosParaguayCatarTerritorios alejados de OceaníaReuniónRumaní" + - "aSerbiaRusiaRuandaArabia SaudíIslas SalomónSeychellesSudánSueciaSingapur" + - "Santa ElenaEsloveniaSvalbard y Jan MayenEslovaquiaSierra LeonaSan Marino" + - "SenegalSomaliaSurinamSudán del SurSanto Tomé y PríncipeEl SalvadorSint M" + - "aartenSiriaSuazilandiaTristán da CunhaIslas Turcas y CaicosChadTerritori" + - "os Australes FrancesesTogoTailandiaTayikistánTokelauTimor OrientalTurkme" + - "nistánTúnezTongaTurquíaTrinidad y TobagoTuvaluTaiwánTanzaniaUcraniaUgand" + - "aIslas menores alejadas de EE. UU.Estados UnidosUruguayUzbekistánCiudad " + - "del VaticanoSan Vicente y las GranadinasVenezuelaIslas Vírgenes Británic" + - "asIslas Vírgenes de EE. UU.VietnamVanuatuWallis y FutunaSamoaKosovoYemen" + - "MayotteSudáfricaZambiaZimbabueRegión desconocidaMundoÁfricaAmérica del N" + - "orteSudaméricaOceaníaÁfrica occidentalCentroaméricaÁfrica orientalÁfrica" + - " septentrionalÁfrica centralÁfrica meridionalAméricaNorteaméricaCaribeAs" + - "ia orientalAsia meridionalSudeste asiáticoEuropa meridionalAustralasiaMe" + - "lanesiaRegión de MicronesiaPolinesiaAsiaAsia centralAsia occidentalEurop" + - "aEuropa orientalEuropa septentrionalEuropa occidentalLatinoamérica" - -var esRegionIdx = []uint16{ // 290 elements + "anaRepública del CongoSuizaCôte d’IvoireIslas CookChileCamerúnChinaColom" + + "biaIsla ClippertonCosta RicaCubaCabo VerdeCurazaoIsla de NavidadChipreCh" + + "equiaAlemaniaDiego GarcíaYibutiDinamarcaDominicaRepública DominicanaArge" + + "liaCeuta y MelillaEcuadorEstoniaEgiptoSáhara OccidentalEritreaEspañaEtio" + + "píaUnión EuropeaFinlandiaFiyiIslas MalvinasMicronesiaIslas FeroeFranciaG" + + "abónReino UnidoGranadaGeorgiaGuayana FrancesaGuerneseyGhanaGibraltarGroe" + + "nlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaIslas Georgia del Sur" + + " y Sandwich del SurGuatemalaGuamGuinea-BisáuGuyanaRAE de Hong Kong (Chin" + + "a)Islas Heard y McDonaldHondurasCroaciaHaitíHungríaCanariasIndonesiaIrla" + + "ndaIsraelIsla de ManIndiaTerritorio Británico del Océano ÍndicoIrakIránI" + + "slandiaItaliaJerseyJamaicaJordaniaJapónKeniaKirguistánCamboyaKiribatiCom" + + "orasSan Cristóbal y NievesCorea del NorteCorea del SurKuwaitIslas Caimán" + + "KazajistánLaosLíbanoSanta LucíaLiechtensteinSri LankaLiberiaLesotoLituan" + + "iaLuxemburgoLetoniaLibiaMarruecosMónacoMoldaviaMontenegroSan MartínMadag" + + "ascarIslas MarshallMacedoniaMaliMyanmar (Birmania)MongoliaRAE de Macao (" + + "China)Islas Marianas del NorteMartinicaMauritaniaMontserratMaltaMauricio" + + "MaldivasMalauiMéxicoMalasiaMozambiqueNamibiaNueva CaledoniaNígerIsla Nor" + + "folkNigeriaNicaraguaPaíses BajosNoruegaNepalNauruNiueNueva ZelandaOmánPa" + + "namáPerúPolinesia FrancesaPapúa Nueva GuineaFilipinasPakistánPoloniaSan " + + "Pedro y MiquelónIslas PitcairnPuerto RicoTerritorios PalestinosPortugalP" + + "alaosParaguayCatarTerritorios alejados de OceaníaReuniónRumaníaSerbiaRus" + + "iaRuandaArabia SaudíIslas SalomónSeychellesSudánSueciaSingapurSanta Elen" + + "aEsloveniaSvalbard y Jan MayenEslovaquiaSierra LeonaSan MarinoSenegalSom" + + "aliaSurinamSudán del SurSanto Tomé y PríncipeEl SalvadorSint MaartenSiri" + + "aSuazilandiaTristán de AcuñaIslas Turcas y CaicosChadTerritorios Austral" + + "es FrancesesTogoTailandiaTayikistánTokelauTimor-LesteTurkmenistánTúnezTo" + + "ngaTurquíaTrinidad y TobagoTuvaluTaiwánTanzaniaUcraniaUgandaIslas menore" + + "s alejadas de EE. UU.Estados UnidosUruguayUzbekistánCiudad del VaticanoS" + + "an Vicente y las GranadinasVenezuelaIslas Vírgenes BritánicasIslas Vírge" + + "nes de EE. UU.VietnamVanuatuWallis y FutunaSamoaKosovoYemenMayotteSudáfr" + + "icaZambiaZimbabueRegión desconocidaMundoÁfricaAmérica del NorteSudaméric" + + "aOceaníaÁfrica occidentalCentroaméricaÁfrica orientalÁfrica septentriona" + + "lÁfrica centralÁfrica meridionalAméricaNorteaméricaCaribeAsia orientalAs" + + "ia meridionalSudeste asiáticoEuropa meridionalAustralasiaMelanesiaRegión" + + " de MicronesiaPolinesiaAsiaAsia centralAsia occidentalEuropaEuropa orien" + + "talEuropa septentrionalEuropa occidentalLatinoamérica" + +var esRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0015, 0x001c, 0x0033, 0x003e, 0x004f, 0x0056, 0x005d, 0x0064, 0x006a, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c, 0x00a1, 0x00ad, 0x00b8, 0x00ca, 0x00d2, 0x00dc, 0x00e4, 0x00f0, 0x00f8, 0x00ff, 0x0106, 0x010c, 0x011a, 0x0122, 0x0129, 0x0130, 0x0142, 0x0148, 0x014f, 0x0155, 0x0160, 0x0168, 0x0173, 0x0179, 0x0180, - 0x018b, 0x01ac, 0x01c5, 0x01d9, 0x01de, 0x01ed, 0x01f7, 0x01fc, - 0x0204, 0x0209, 0x0211, 0x0220, 0x022a, 0x022e, 0x0238, 0x023f, - 0x024e, 0x0254, 0x0264, 0x026c, 0x0279, 0x027f, 0x0288, 0x0290, + 0x018b, 0x01ac, 0x01c5, 0x01d9, 0x01de, 0x01ee, 0x01f8, 0x01fd, + 0x0205, 0x020a, 0x0212, 0x0221, 0x022b, 0x022f, 0x0239, 0x0240, + 0x024f, 0x0255, 0x025c, 0x0264, 0x0271, 0x0277, 0x0280, 0x0288, // Entry 40 - 7F - 0x02a5, 0x02ac, 0x02bb, 0x02c2, 0x02c9, 0x02cf, 0x02e1, 0x02e8, - 0x02ef, 0x02f7, 0x0305, 0x030e, 0x0312, 0x0320, 0x032a, 0x0335, - 0x033c, 0x0342, 0x034d, 0x0354, 0x035b, 0x036b, 0x0374, 0x0379, - 0x0382, 0x038d, 0x0393, 0x0399, 0x03a2, 0x03b3, 0x03b9, 0x03e1, - 0x03ea, 0x03ee, 0x03fb, 0x0401, 0x0419, 0x042f, 0x0437, 0x043e, - 0x0444, 0x044c, 0x0454, 0x045d, 0x0464, 0x046a, 0x0475, 0x047a, - 0x04a3, 0x04a7, 0x04ac, 0x04b4, 0x04ba, 0x04c0, 0x04c7, 0x04cf, - 0x04d5, 0x04da, 0x04e5, 0x04ec, 0x04f4, 0x04fb, 0x0512, 0x0521, + 0x029d, 0x02a4, 0x02b3, 0x02ba, 0x02c1, 0x02c7, 0x02d9, 0x02e0, + 0x02e7, 0x02ef, 0x02fd, 0x02fd, 0x0306, 0x030a, 0x0318, 0x0322, + 0x032d, 0x0334, 0x033a, 0x0345, 0x034c, 0x0353, 0x0363, 0x036c, + 0x0371, 0x037a, 0x0385, 0x038b, 0x0391, 0x039a, 0x03ab, 0x03b1, + 0x03d9, 0x03e2, 0x03e6, 0x03f3, 0x03f9, 0x0411, 0x0427, 0x042f, + 0x0436, 0x043c, 0x0444, 0x044c, 0x0455, 0x045c, 0x0462, 0x046d, + 0x0472, 0x049b, 0x049f, 0x04a4, 0x04ac, 0x04b2, 0x04b8, 0x04bf, + 0x04c7, 0x04cd, 0x04d2, 0x04dd, 0x04e4, 0x04ec, 0x04f3, 0x050a, // Entry 80 - BF - 0x052e, 0x0534, 0x0541, 0x054c, 0x0550, 0x0557, 0x0563, 0x0570, - 0x0579, 0x0580, 0x0586, 0x058e, 0x0598, 0x059f, 0x05a4, 0x05ad, - 0x05b4, 0x05bc, 0x05c6, 0x05d1, 0x05db, 0x05e9, 0x05f2, 0x05f6, - 0x0608, 0x0610, 0x0624, 0x063c, 0x0645, 0x064f, 0x0659, 0x065e, - 0x0666, 0x066e, 0x0674, 0x067b, 0x0682, 0x068c, 0x0693, 0x06a2, - 0x06a8, 0x06b4, 0x06bb, 0x06c4, 0x06d1, 0x06d8, 0x06dd, 0x06e2, - 0x06e6, 0x06f3, 0x06f8, 0x06ff, 0x0704, 0x0716, 0x0729, 0x0732, - 0x073b, 0x0742, 0x0757, 0x0765, 0x0770, 0x0786, 0x078e, 0x0794, + 0x0519, 0x0526, 0x052c, 0x0539, 0x0544, 0x0548, 0x054f, 0x055b, + 0x0568, 0x0571, 0x0578, 0x057e, 0x0586, 0x0590, 0x0597, 0x059c, + 0x05a5, 0x05ac, 0x05b4, 0x05be, 0x05c9, 0x05d3, 0x05e1, 0x05ea, + 0x05ee, 0x0600, 0x0608, 0x061c, 0x0634, 0x063d, 0x0647, 0x0651, + 0x0656, 0x065e, 0x0666, 0x066c, 0x0673, 0x067a, 0x0684, 0x068b, + 0x069a, 0x06a0, 0x06ac, 0x06b3, 0x06bc, 0x06c9, 0x06d0, 0x06d5, + 0x06da, 0x06de, 0x06eb, 0x06f0, 0x06f7, 0x06fc, 0x070e, 0x0721, + 0x072a, 0x0733, 0x073a, 0x074f, 0x075d, 0x0768, 0x077e, 0x0786, // Entry C0 - FF - 0x079c, 0x07a1, 0x07c1, 0x07c9, 0x07d1, 0x07d7, 0x07dc, 0x07e2, - 0x07ef, 0x07fd, 0x0807, 0x080d, 0x0813, 0x081b, 0x0826, 0x082f, - 0x0843, 0x084d, 0x0859, 0x0863, 0x086a, 0x0871, 0x0878, 0x0886, - 0x089d, 0x08a8, 0x08b4, 0x08b9, 0x08c4, 0x08d5, 0x08ea, 0x08ee, - 0x090d, 0x0911, 0x091a, 0x0925, 0x092c, 0x093a, 0x0947, 0x094d, - 0x0952, 0x095a, 0x096b, 0x0971, 0x0978, 0x0980, 0x0987, 0x098d, - 0x09ae, 0x09bc, 0x09c3, 0x09ce, 0x09e1, 0x09fd, 0x0a06, 0x0a21, - 0x0a3b, 0x0a42, 0x0a49, 0x0a58, 0x0a5d, 0x0a63, 0x0a68, 0x0a6f, + 0x078c, 0x0794, 0x0799, 0x07b9, 0x07c1, 0x07c9, 0x07cf, 0x07d4, + 0x07da, 0x07e7, 0x07f5, 0x07ff, 0x0805, 0x080b, 0x0813, 0x081e, + 0x0827, 0x083b, 0x0845, 0x0851, 0x085b, 0x0862, 0x0869, 0x0870, + 0x087e, 0x0895, 0x08a0, 0x08ac, 0x08b1, 0x08bc, 0x08ce, 0x08e3, + 0x08e7, 0x0906, 0x090a, 0x0913, 0x091e, 0x0925, 0x0930, 0x093d, + 0x0943, 0x0948, 0x0950, 0x0961, 0x0967, 0x096e, 0x0976, 0x097d, + 0x0983, 0x09a4, 0x09a4, 0x09b2, 0x09b9, 0x09c4, 0x09d7, 0x09f3, + 0x09fc, 0x0a17, 0x0a31, 0x0a38, 0x0a3f, 0x0a4e, 0x0a53, 0x0a59, // Entry 100 - 13F - 0x0a79, 0x0a7f, 0x0a87, 0x0a9a, 0x0a9f, 0x0aa6, 0x0ab8, 0x0ac3, - 0x0acb, 0x0add, 0x0aeb, 0x0afb, 0x0b10, 0x0b1f, 0x0b31, 0x0b39, - 0x0b46, 0x0b4c, 0x0b59, 0x0b68, 0x0b79, 0x0b8a, 0x0b95, 0x0b9e, - 0x0bb3, 0x0bbc, 0x0bc0, 0x0bcc, 0x0bdb, 0x0be1, 0x0bf0, 0x0c04, - 0x0c15, 0x0c23, -} // Size: 604 bytes - -const es419RegionStr string = "" - -var es419RegionIdx = []uint16{ // 0 elements - -} // Size: 24 bytes + 0x0a5e, 0x0a65, 0x0a6f, 0x0a75, 0x0a7d, 0x0a90, 0x0a95, 0x0a9c, + 0x0aae, 0x0ab9, 0x0ac1, 0x0ad3, 0x0ae1, 0x0af1, 0x0b06, 0x0b15, + 0x0b27, 0x0b2f, 0x0b3c, 0x0b42, 0x0b4f, 0x0b5e, 0x0b6f, 0x0b80, + 0x0b8b, 0x0b94, 0x0ba9, 0x0bb2, 0x0bb6, 0x0bc2, 0x0bd1, 0x0bd7, + 0x0be6, 0x0bfa, 0x0c0b, 0x0c19, +} // Size: 608 bytes + +const es419RegionStr string = "" + // Size: 122 bytes + "Costa de MarfilIslas CanariasIslas UltramarinasTristán da CunhaTimor Ori" + + "entalIslas Ultramarinas de EE.UU.Asia sudoriental" + +var es419RegionIdx = []uint16{ // 279 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + // Entry 40 - 7F + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, + 0x000f, 0x000f, 0x000f, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + // Entry 80 - BF + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + // Entry C0 - FF + 0x001d, 0x001d, 0x001d, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, + 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0040, 0x0040, + 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x004e, 0x004e, + 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, + 0x004e, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + // Entry 100 - 13F + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, + 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x007a, +} // Size: 582 bytes -var etRegionStr string = "" + // Size: 2976 bytes +const etRegionStr string = "" + // Size: 3012 bytes "Ascensioni saarAndorraAraabia ÜhendemiraadidAfganistanAntigua ja Barbuda" + - "AnguillaAlbaaniaArmeeniaAngolaAntarktisArgentinaAmeerika SamoaAustriaAus" + - "traaliaArubaAhvenamaaAserbaidžaanBosnia ja HertsegoviinaBarbadosBanglade" + - "shBelgiaBurkina FasoBulgaariaBahreinBurundiBeninSaint BarthélemyBermudaB" + - "runeiBoliiviaHollandi Kariibi mere saaredBrasiiliaBahamaBhutanBouvet’ sa" + - "arBotswanaValgeveneBelizeKanadaKookossaaredKongo DVKesk-Aafrika Vabariik" + - "Kongo VabariikŠveitsCôte d’IvoireCooki saaredTšiiliKamerunHiinaColombiaC" + - "lippertoni saarCosta RicaKuubaRoheneemesaaredCuraçaoJõulusaarKüprosTšehh" + - "iSaksamaaDiego GarciaDjiboutiTaaniDominicaDominikaani VabariikAlžeeriaCe" + - "uta ja MelillaEcuadorEestiEgiptusLääne-SaharaEritreaHispaaniaEtioopiaEur" + - "oopa LiitSoomeFidžiFalklandi saaredMikroneesiaFääri saaredPrantsusmaaGab" + - "onSuurbritanniaGrenadaGruusiaPrantsuse GuajaanaGuernseyGhanaGibraltarGrö" + - "önimaaGambiaGuineaGuadeloupeEkvatoriaal-GuineaKreekaLõuna-Georgia ja Lõ" + - "una-Sandwichi saaredGuatemalaGuamGuinea-BissauGuyanaHongkongi erihaldusp" + - "iirkondHeardi ja McDonaldi saaredHondurasHorvaatiaHaitiUngariKanaari saa" + - "redIndoneesiaIirimaaIisraelMani saarIndiaBriti India ookeani alaIraakIra" + - "anIslandItaaliaJerseyJamaicaJordaaniaJaapanKeeniaKõrgõzstanKambodžaKirib" + - "atiKomooridSaint Kitts ja NevisPõhja-KoreaLõuna-KoreaKuveitKaimanisaared" + - "KasahstanLaosLiibanonSaint LuciaLiechtensteinSri LankaLibeeriaLesothoLee" + - "duLuksemburgLätiLiibüaMarokoMonacoMoldovaMontenegroSaint-MartinMadagaska" + - "rMarshalli SaaredMakedooniaMaliMyanmar (Birma)MongooliaMacau erihalduspi" + - "irkondPõhja-MariaanidMartiniqueMauritaaniaMontserratMaltaMauritiusMaldii" + - "vidMalawiMehhikoMalaisiaMosambiikNamiibiaUus-KaledooniaNigerNorfolkNigee" + - "riaNicaraguaHollandNorraNepalNauruNiueUus-MeremaaOmaanPanamaPeruuPrantsu" + - "se PolüneesiaPaapua Uus-GuineaFilipiinidPakistanPoolaSaint Pierre ja Miq" + - "uelonPitcairni saaredPuerto RicoPalestiina aladPortugalBelauParaguayKata" + - "rOkeaania hajasaaredRéunionRumeeniaSerbiaVenemaaRwandaSaudi AraabiaSaalo" + - "moni SaaredSeišellidSudaanRootsiSingapurSaint HelenaSloveeniaSvalbard ja" + - " Jan MayenSlovakkiaSierra LeoneSan MarinoSenegalSomaaliaSurinameLõuna-Su" + - "daanSão Tomé ja PríncipeEl SalvadorSint MaartenSüüriaSvaasimaaTristan da" + - " CunhaTurks ja CaicosTšaadPrantsuse LõunaaladTogoTaiTadžikistanTokelauId" + - "a-TimorTürkmenistanTuneesiaTongaTürgiTrinidad ja TobagoTuvaluTaiwanTansa" + - "aniaUkrainaUgandaÜhendriikide hajasaaredAmeerika ÜhendriigidUruguayUsbek" + - "istanVatikanSaint Vincent ja GrenadiinidVenezuelaBriti NeitsisaaredUSA N" + - "eitsisaaredVietnamVanuatuWallis ja FutunaSamoaKosovoJeemenMayotteLõuna-A" + - "afrika VabariikSambiaZimbabweTundmatu piirkondmaailmAafrikaPõhja-Ameerik" + - "aLõuna-AmeerikaOkeaaniaLääne-AafrikaKesk-AmeerikaIda-AafrikaPõhja-Aafrik" + - "aKesk-AafrikaLõuna-AafrikaAmeerikaAmeerika põhjaosaKariibi piirkondIda-A" + - "asiaLõuna-AasiaKagu-AasiaLõuna-EuroopaAustralaasiaMelaneesiaMikroneesia " + - "(piirkond)PolüneesiaAasiaKesk-AasiaLääne-AasiaEuroopaIda-EuroopaPõhja-Eu" + - "roopaLääne-EuroopaLadina-Ameerika" - -var etRegionIdx = []uint16{ // 290 elements + "AnguillaAlbaaniaArmeeniaAngolaAntarktikaArgentinaAmeerika SamoaAustriaAu" + + "straaliaArubaAhvenamaaAserbaidžaanBosnia ja HertsegoviinaBarbadosBanglad" + + "eshBelgiaBurkina FasoBulgaariaBahreinBurundiBeninSaint BarthélemyBermuda" + + "BruneiBoliiviaHollandi Kariibi mere saaredBrasiiliaBahamaBhutanBouvet’ s" + + "aarBotswanaValgeveneBelizeKanadaKookossaaredKongo DVKesk-Aafrika Vabarii" + + "kKongo VabariikŠveitsCôte d’IvoireCooki saaredTšiiliKamerunHiinaColombia" + + "Clippertoni saarCosta RicaKuubaRoheneemesaaredCuraçaoJõulusaarKüprosTšeh" + + "hiaSaksamaaDiego GarciaDjiboutiTaaniDominicaDominikaani VabariikAlžeeria" + + "Ceuta ja MelillaEcuadorEestiEgiptusLääne-SaharaEritreaHispaaniaEtioopiaE" + + "uroopa LiitSoomeFidžiFalklandi saaredMikroneesiaFääri saaredPrantsusmaaG" + + "abonSuurbritanniaGrenadaGruusiaPrantsuse GuajaanaGuernseyGhanaGibraltarG" + + "röönimaaGambiaGuineaGuadeloupeEkvatoriaal-GuineaKreekaLõuna-Georgia ja L" + + "õuna-Sandwichi saaredGuatemalaGuamGuinea-BissauGuyanaHongkongi erihaldu" + + "spiirkondHeardi ja McDonaldi saaredHondurasHorvaatiaHaitiUngariKanaari s" + + "aaredIndoneesiaIirimaaIisraelMani saarIndiaBriti India ookeani alaIraakI" + + "raanIslandItaaliaJerseyJamaicaJordaaniaJaapanKeeniaKõrgõzstanKambodžaKir" + + "ibatiKomooridSaint Kitts ja NevisPõhja-KoreaLõuna-KoreaKuveitKaimanisaar" + + "edKasahstanLaosLiibanonSaint LuciaLiechtensteinSri LankaLibeeriaLesothoL" + + "eeduLuksemburgLätiLiibüaMarokoMonacoMoldovaMontenegroSaint-MartinMadagas" + + "karMarshalli SaaredMakedooniaMaliMyanmar (Birma)MongooliaMacau erihaldus" + + "piirkondPõhja-MariaanidMartiniqueMauritaaniaMontserratMaltaMauritiusMald" + + "iividMalawiMehhikoMalaisiaMosambiikNamiibiaUus-KaledooniaNigerNorfolkNig" + + "eeriaNicaraguaHollandNorraNepalNauruNiueUus-MeremaaOmaanPanamaPeruuPrant" + + "suse PolüneesiaPaapua Uus-GuineaFilipiinidPakistanPoolaSaint Pierre ja M" + + "iquelonPitcairni saaredPuerto RicoPalestiina aladPortugalBelauParaguayKa" + + "tarOkeaania hajasaaredRéunionRumeeniaSerbiaVenemaaRwandaSaudi AraabiaSaa" + + "lomoni SaaredSeišellidSudaanRootsiSingapurSaint HelenaSloveeniaSvalbard " + + "ja Jan MayenSlovakkiaSierra LeoneSan MarinoSenegalSomaaliaSurinameLõuna-" + + "SudaanSão Tomé ja PríncipeEl SalvadorSint MaartenSüüriaSvaasimaaTristan " + + "da CunhaTurks ja CaicosTšaadPrantsuse LõunaaladTogoTaiTadžikistanTokelau" + + "Ida-TimorTürkmenistanTuneesiaTongaTürgiTrinidad ja TobagoTuvaluTaiwanTan" + + "saaniaUkrainaUgandaÜhendriikide hajasaaredÜhendatud Rahvaste Organisatsi" + + "oonAmeerika ÜhendriigidUruguayUsbekistanVatikanSaint Vincent ja Grenadii" + + "nidVenezuelaBriti NeitsisaaredUSA NeitsisaaredVietnamVanuatuWallis ja Fu" + + "tunaSamoaKosovoJeemenMayotteLõuna-Aafrika VabariikSambiaZimbabweTundmatu" + + " piirkondmaailmAafrikaPõhja-AmeerikaLõuna-AmeerikaOkeaaniaLääne-AafrikaK" + + "esk-AmeerikaIda-AafrikaPõhja-AafrikaKesk-AafrikaLõuna-AafrikaAmeerikaAme" + + "erika põhjaosaKariibi piirkondIda-AasiaLõuna-AasiaKagu-AasiaLõuna-Euroop" + + "aAustralaasiaMelaneesiaMikroneesia (piirkond)PolüneesiaAasiaKesk-AasiaLä" + + "äne-AasiaEuroopaIda-EuroopaPõhja-EuroopaLääne-EuroopaLadina-Ameerika" + +var etRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0016, 0x002d, 0x0037, 0x0049, 0x0051, 0x0059, - 0x0061, 0x0067, 0x0070, 0x0079, 0x0087, 0x008e, 0x0098, 0x009d, - 0x00a6, 0x00b3, 0x00ca, 0x00d2, 0x00dc, 0x00e2, 0x00ee, 0x00f7, - 0x00fe, 0x0105, 0x010a, 0x011b, 0x0122, 0x0128, 0x0130, 0x014c, - 0x0155, 0x015b, 0x0161, 0x016f, 0x0177, 0x0180, 0x0186, 0x018c, - 0x0198, 0x01a0, 0x01b5, 0x01c3, 0x01ca, 0x01da, 0x01e6, 0x01ed, - 0x01f4, 0x01f9, 0x0201, 0x0211, 0x021b, 0x0220, 0x022f, 0x0237, - 0x0241, 0x0248, 0x024f, 0x0257, 0x0263, 0x026b, 0x0270, 0x0278, + 0x0061, 0x0067, 0x0071, 0x007a, 0x0088, 0x008f, 0x0099, 0x009e, + 0x00a7, 0x00b4, 0x00cb, 0x00d3, 0x00dd, 0x00e3, 0x00ef, 0x00f8, + 0x00ff, 0x0106, 0x010b, 0x011c, 0x0123, 0x0129, 0x0131, 0x014d, + 0x0156, 0x015c, 0x0162, 0x0170, 0x0178, 0x0181, 0x0187, 0x018d, + 0x0199, 0x01a1, 0x01b6, 0x01c4, 0x01cb, 0x01db, 0x01e7, 0x01ee, + 0x01f5, 0x01fa, 0x0202, 0x0212, 0x021c, 0x0221, 0x0230, 0x0238, + 0x0242, 0x0249, 0x0251, 0x0259, 0x0265, 0x026d, 0x0272, 0x027a, // Entry 40 - 7F - 0x028c, 0x0295, 0x02a5, 0x02ac, 0x02b1, 0x02b8, 0x02c6, 0x02cd, - 0x02d6, 0x02de, 0x02ea, 0x02ef, 0x02f5, 0x0305, 0x0310, 0x031e, - 0x0329, 0x032e, 0x033b, 0x0342, 0x0349, 0x035b, 0x0363, 0x0368, - 0x0371, 0x037c, 0x0382, 0x0388, 0x0392, 0x03a4, 0x03aa, 0x03d3, - 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x040e, 0x0428, 0x0430, 0x0439, - 0x043e, 0x0444, 0x0452, 0x045c, 0x0463, 0x046a, 0x0473, 0x0478, - 0x048f, 0x0494, 0x0499, 0x049f, 0x04a6, 0x04ac, 0x04b3, 0x04bc, - 0x04c2, 0x04c8, 0x04d4, 0x04dd, 0x04e5, 0x04ed, 0x0501, 0x050d, + 0x028e, 0x0297, 0x02a7, 0x02ae, 0x02b3, 0x02ba, 0x02c8, 0x02cf, + 0x02d8, 0x02e0, 0x02ec, 0x02ec, 0x02f1, 0x02f7, 0x0307, 0x0312, + 0x0320, 0x032b, 0x0330, 0x033d, 0x0344, 0x034b, 0x035d, 0x0365, + 0x036a, 0x0373, 0x037e, 0x0384, 0x038a, 0x0394, 0x03a6, 0x03ac, + 0x03d5, 0x03de, 0x03e2, 0x03ef, 0x03f5, 0x0410, 0x042a, 0x0432, + 0x043b, 0x0440, 0x0446, 0x0454, 0x045e, 0x0465, 0x046c, 0x0475, + 0x047a, 0x0491, 0x0496, 0x049b, 0x04a1, 0x04a8, 0x04ae, 0x04b5, + 0x04be, 0x04c4, 0x04ca, 0x04d6, 0x04df, 0x04e7, 0x04ef, 0x0503, // Entry 80 - BF - 0x0519, 0x051f, 0x052c, 0x0535, 0x0539, 0x0541, 0x054c, 0x0559, - 0x0562, 0x056a, 0x0571, 0x0576, 0x0580, 0x0585, 0x058c, 0x0592, - 0x0598, 0x059f, 0x05a9, 0x05b5, 0x05bf, 0x05cf, 0x05d9, 0x05dd, - 0x05ec, 0x05f5, 0x060c, 0x061c, 0x0626, 0x0631, 0x063b, 0x0640, - 0x0649, 0x0652, 0x0658, 0x065f, 0x0667, 0x0670, 0x0678, 0x0686, - 0x068b, 0x0692, 0x069a, 0x06a3, 0x06aa, 0x06af, 0x06b4, 0x06b9, - 0x06bd, 0x06c8, 0x06cd, 0x06d3, 0x06d8, 0x06ed, 0x06fe, 0x0708, - 0x0710, 0x0715, 0x072d, 0x073d, 0x0748, 0x0757, 0x075f, 0x0764, + 0x050f, 0x051b, 0x0521, 0x052e, 0x0537, 0x053b, 0x0543, 0x054e, + 0x055b, 0x0564, 0x056c, 0x0573, 0x0578, 0x0582, 0x0587, 0x058e, + 0x0594, 0x059a, 0x05a1, 0x05ab, 0x05b7, 0x05c1, 0x05d1, 0x05db, + 0x05df, 0x05ee, 0x05f7, 0x060e, 0x061e, 0x0628, 0x0633, 0x063d, + 0x0642, 0x064b, 0x0654, 0x065a, 0x0661, 0x0669, 0x0672, 0x067a, + 0x0688, 0x068d, 0x0694, 0x069c, 0x06a5, 0x06ac, 0x06b1, 0x06b6, + 0x06bb, 0x06bf, 0x06ca, 0x06cf, 0x06d5, 0x06da, 0x06ef, 0x0700, + 0x070a, 0x0712, 0x0717, 0x072f, 0x073f, 0x074a, 0x0759, 0x0761, // Entry C0 - FF - 0x076c, 0x0771, 0x0784, 0x078c, 0x0794, 0x079a, 0x07a1, 0x07a7, - 0x07b4, 0x07c4, 0x07ce, 0x07d4, 0x07da, 0x07e2, 0x07ee, 0x07f7, - 0x080c, 0x0815, 0x0821, 0x082b, 0x0832, 0x083a, 0x0842, 0x084f, - 0x0866, 0x0871, 0x087d, 0x0885, 0x088e, 0x089e, 0x08ad, 0x08b3, - 0x08c7, 0x08cb, 0x08ce, 0x08da, 0x08e1, 0x08ea, 0x08f7, 0x08ff, - 0x0904, 0x090a, 0x091c, 0x0922, 0x0928, 0x0931, 0x0938, 0x093e, - 0x0956, 0x096b, 0x0972, 0x097c, 0x0983, 0x099f, 0x09a8, 0x09ba, - 0x09ca, 0x09d1, 0x09d8, 0x09e8, 0x09ed, 0x09f3, 0x09f9, 0x0a00, + 0x0766, 0x076e, 0x0773, 0x0786, 0x078e, 0x0796, 0x079c, 0x07a3, + 0x07a9, 0x07b6, 0x07c6, 0x07d0, 0x07d6, 0x07dc, 0x07e4, 0x07f0, + 0x07f9, 0x080e, 0x0817, 0x0823, 0x082d, 0x0834, 0x083c, 0x0844, + 0x0851, 0x0868, 0x0873, 0x087f, 0x0887, 0x0890, 0x08a0, 0x08af, + 0x08b5, 0x08c9, 0x08cd, 0x08d0, 0x08dc, 0x08e3, 0x08ec, 0x08f9, + 0x0901, 0x0906, 0x090c, 0x091e, 0x0924, 0x092a, 0x0933, 0x093a, + 0x0940, 0x0958, 0x097a, 0x098f, 0x0996, 0x09a0, 0x09a7, 0x09c3, + 0x09cc, 0x09de, 0x09ee, 0x09f5, 0x09fc, 0x0a0c, 0x0a11, 0x0a17, // Entry 100 - 13F - 0x0a17, 0x0a1d, 0x0a25, 0x0a36, 0x0a3c, 0x0a43, 0x0a52, 0x0a61, - 0x0a69, 0x0a78, 0x0a85, 0x0a90, 0x0a9e, 0x0aaa, 0x0ab8, 0x0ac0, - 0x0ad2, 0x0ae2, 0x0aeb, 0x0af7, 0x0b01, 0x0b0f, 0x0b1b, 0x0b25, - 0x0b3b, 0x0b46, 0x0b4b, 0x0b55, 0x0b62, 0x0b69, 0x0b74, 0x0b82, - 0x0b91, 0x0ba0, -} // Size: 604 bytes - -var faRegionStr string = "" + // Size: 4983 bytes + 0x0a1d, 0x0a24, 0x0a3b, 0x0a41, 0x0a49, 0x0a5a, 0x0a60, 0x0a67, + 0x0a76, 0x0a85, 0x0a8d, 0x0a9c, 0x0aa9, 0x0ab4, 0x0ac2, 0x0ace, + 0x0adc, 0x0ae4, 0x0af6, 0x0b06, 0x0b0f, 0x0b1b, 0x0b25, 0x0b33, + 0x0b3f, 0x0b49, 0x0b5f, 0x0b6a, 0x0b6f, 0x0b79, 0x0b86, 0x0b8d, + 0x0b98, 0x0ba6, 0x0bb5, 0x0bc4, +} // Size: 608 bytes + +const faRegionStr string = "" + // Size: 5004 bytes "جزایر آسنسیونآندوراامارات متحدهٔ عربیافغانستانآنتیگوا و باربوداآنگویلاآل" + "بانیارمنستانآنگولاجنوبگانآرژانتینساموآی امریکااتریشاسترالیاآروباجزایر آ" + "لاندجمهوری آذربایجانبوسنی و هرزگوینباربادوسبنگلادشبلژیکبورکینافاسوبلغار" + @@ -39602,7 +44690,7 @@ var faRegionStr string = "" + // Size: 4983 bytes "رسبته و ملیلهاکوادوراستونیمصرصحرای غربیاریترهاسپانیااتیوپیاتحادیهٔ اروپ" + "افنلاندفیجیجزایر فالکلندمیکرونزیجزایر فاروفرانسهگابنبریتانیاگرناداگرجست" + "انگویان فرانسهگرنزیغناجبل\u200cالطارقگرینلندگامبیاگینهگوادلوپگینهٔ استو" + - "ایییونانجورجیای جنوبی و جزایر ساندویچ جنوبیگواتمالاگوامگینهٔ بیسائوگویا" + + "ایییونانجزایر جورجیای جنوبی و ساندویچ جنوبیگواتمالاگوامگینهٔ بیسائوگویا" + "نهنگ\u200cکنگ، ناحیهٔ ویژهٔ حکومتی چینجزیرهٔ هرد و جزایر مک\u200cدونالد" + "هندوراسکرواسیهائیتیمجارستانجزایر قناریاندونزیایرلنداسرائیلجزیرهٔ منهندق" + "لمرو بریتانیا در اقیانوس هندعراقایرانایسلندایتالیاجرزیجامائیکااردنژاپنک" + @@ -39617,20 +44705,20 @@ var faRegionStr string = "" + // Size: 4983 bytes "ت\u200cکرنپورتوریکوسرزمین\u200cهای فلسطینیپرتغالپالائوپاراگوئهقطربخش" + "\u200cهای دورافتادهٔ اقیانوسیهرئونیونرومانیصربستانروسیهروانداعربستان سعو" + "دیجزایر سلیمانسیشلسودانسوئدسنگاپورسنت هلناسلوونیاسوالبارد و جان\u200cما" + - "یناسلواکیسیرالئونسان\u200cمارینوسنگالسومالیسورینامسودان جنوبیپرینسیپ و " + - "سائوتومهالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر تورکس و کا" + - "یکوسچادقلمروهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور-لستهترکمنست" + - "انتونستونگاترکیهترینیداد و توباگوتووالوتایوانتانزانیااوکرایناوگانداجزای" + - "ر دورافتادهٔ ایالات متحدهایالات متحدهاروگوئهازبکستانواتیکانسنت وینسنت و" + - " گرنادین\u200cهاونزوئلاجزایر ویرجین بریتانیاجزایر ویرجین ایالات متحدهویت" + - "ناموانواتووالیس و فوتوناساموآکوزوویمنمایوتافریقای جنوبیزامبیازیمبابوهنا" + - "حیهٔ نامشخصجهانافریقاامریکای شمالیامریکای جنوبیاقیانوسیهغرب افریقاامریک" + - "ای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقاامریکاشمال امریکاکار" + - "ائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیملانزیناحیهٔ میکرون" + - "زیپلی\u200cنزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشمال اروپاغرب اروپاا" + - "مریکای لاتین" - -var faRegionIdx = []uint16{ // 290 elements + "یناسلواکیسیرالئونسان\u200cمارینوسنگالسومالیسورینامسودان جنوبیسائوتومه و" + + " پرینسیپالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر تورکس و کای" + + "کوسچادقلمروهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور-لستهترکمنستا" + + "نتونستونگاترکیهترینیداد و توباگوتووالوتایوانتانزانیااوکرایناوگانداجزایر" + + " دورافتادهٔ ایالات متحدهسازمان ملل متحدایالات متحدهاروگوئهازبکستانواتیکا" + + "نسنت وینسنت و گرنادینونزوئلاجزایر ویرجین بریتانیاجزایر ویرجین ایالات مت" + + "حدهویتناموانواتووالیس و فوتوناساموآکوزوویمنمایوتافریقای جنوبیزامبیازیمب" + + "ابوهناحیهٔ نامشخصجهانافریقاامریکای شمالیامریکای جنوبیاقیانوسیهغرب افریق" + + "اامریکای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقاامریکاشمال امر" + + "یکاکارائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیملانزیناحیهٔ " + + "میکرونزیپلی\u200cنزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشمال اروپاغرب " + + "اروپاامریکای لاتین" + +var faRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0019, 0x0025, 0x0047, 0x0059, 0x0079, 0x0087, 0x0093, 0x00a3, 0x00af, 0x00bd, 0x00cd, 0x00e6, 0x00f0, 0x0100, 0x010a, @@ -39642,40 +44730,40 @@ var faRegionIdx = []uint16{ // 290 elements 0x03b2, 0x03ba, 0x03cb, 0x03d5, 0x03ef, 0x03fb, 0x0409, 0x0419, // Entry 40 - 7F 0x0436, 0x0444, 0x045a, 0x0468, 0x0474, 0x047a, 0x048d, 0x0499, - 0x04a7, 0x04b3, 0x04ce, 0x04da, 0x04e2, 0x04fb, 0x050b, 0x051e, - 0x052a, 0x0532, 0x0542, 0x054e, 0x055c, 0x0573, 0x057d, 0x0583, - 0x0598, 0x05a6, 0x05b2, 0x05ba, 0x05c8, 0x05e1, 0x05eb, 0x062c, - 0x063c, 0x0644, 0x065b, 0x0665, 0x06a2, 0x06d7, 0x06e5, 0x06f1, - 0x06fd, 0x070d, 0x0722, 0x0730, 0x073c, 0x074a, 0x075b, 0x0761, - 0x0797, 0x079f, 0x07a9, 0x07b5, 0x07c3, 0x07cb, 0x07db, 0x07e3, - 0x07eb, 0x07f3, 0x0805, 0x0811, 0x0821, 0x082d, 0x0848, 0x085b, + 0x04a7, 0x04b3, 0x04ce, 0x04ce, 0x04da, 0x04e2, 0x04fb, 0x050b, + 0x051e, 0x052a, 0x0532, 0x0542, 0x054e, 0x055c, 0x0573, 0x057d, + 0x0583, 0x0598, 0x05a6, 0x05b2, 0x05ba, 0x05c8, 0x05e1, 0x05eb, + 0x062c, 0x063c, 0x0644, 0x065b, 0x0665, 0x06a2, 0x06d7, 0x06e5, + 0x06f1, 0x06fd, 0x070d, 0x0722, 0x0730, 0x073c, 0x074a, 0x075b, + 0x0761, 0x0797, 0x079f, 0x07a9, 0x07b5, 0x07c3, 0x07cb, 0x07db, + 0x07e3, 0x07eb, 0x07f3, 0x0805, 0x0811, 0x0821, 0x082d, 0x0848, // Entry 80 - BF - 0x086e, 0x0876, 0x088b, 0x089b, 0x08a5, 0x08af, 0x08c0, 0x08d9, - 0x08ec, 0x08f8, 0x0902, 0x0910, 0x0924, 0x092e, 0x0936, 0x0940, - 0x094c, 0x095a, 0x096f, 0x0982, 0x0996, 0x09ad, 0x09bb, 0x09c3, - 0x09dc, 0x09ec, 0x0a26, 0x0a4c, 0x0a5c, 0x0a6c, 0x0a7f, 0x0a87, - 0x0a91, 0x0a9d, 0x0aa9, 0x0ab3, 0x0abd, 0x0acd, 0x0adb, 0x0af6, - 0x0afe, 0x0b19, 0x0b25, 0x0b39, 0x0b41, 0x0b49, 0x0b51, 0x0b5d, - 0x0b67, 0x0b77, 0x0b7f, 0x0b8b, 0x0b91, 0x0bad, 0x0bc7, 0x0bd5, - 0x0be3, 0x0bef, 0x0c08, 0x0c22, 0x0c34, 0x0c58, 0x0c64, 0x0c70, + 0x085b, 0x086e, 0x0876, 0x088b, 0x089b, 0x08a5, 0x08af, 0x08c0, + 0x08d9, 0x08ec, 0x08f8, 0x0902, 0x0910, 0x0924, 0x092e, 0x0936, + 0x0940, 0x094c, 0x095a, 0x096f, 0x0982, 0x0996, 0x09ad, 0x09bb, + 0x09c3, 0x09dc, 0x09ec, 0x0a26, 0x0a4c, 0x0a5c, 0x0a6c, 0x0a7f, + 0x0a87, 0x0a91, 0x0a9d, 0x0aa9, 0x0ab3, 0x0abd, 0x0acd, 0x0adb, + 0x0af6, 0x0afe, 0x0b19, 0x0b25, 0x0b39, 0x0b41, 0x0b49, 0x0b51, + 0x0b5d, 0x0b67, 0x0b77, 0x0b7f, 0x0b8b, 0x0b91, 0x0bad, 0x0bc7, + 0x0bd5, 0x0be3, 0x0bef, 0x0c08, 0x0c22, 0x0c34, 0x0c58, 0x0c64, // Entry C0 - FF - 0x0c80, 0x0c86, 0x0cbd, 0x0ccb, 0x0cd7, 0x0ce5, 0x0cef, 0x0cfb, - 0x0d14, 0x0d2b, 0x0d33, 0x0d3d, 0x0d45, 0x0d53, 0x0d60, 0x0d6e, - 0x0d95, 0x0da3, 0x0db3, 0x0dc8, 0x0dd2, 0x0dde, 0x0dec, 0x0e01, - 0x0e23, 0x0e37, 0x0e48, 0x0e52, 0x0e62, 0x0e7e, 0x0ea3, 0x0ea9, - 0x0ed1, 0x0ed9, 0x0ee5, 0x0ef7, 0x0f05, 0x0f18, 0x0f2a, 0x0f32, - 0x0f3c, 0x0f46, 0x0f66, 0x0f72, 0x0f7e, 0x0f8e, 0x0f9c, 0x0faa, - 0x0fe1, 0x0ff8, 0x1006, 0x1016, 0x1024, 0x1050, 0x105e, 0x1086, - 0x10b5, 0x10c1, 0x10cf, 0x10e9, 0x10f3, 0x10fd, 0x1103, 0x110d, + 0x0c70, 0x0c80, 0x0c86, 0x0cbd, 0x0ccb, 0x0cd7, 0x0ce5, 0x0cef, + 0x0cfb, 0x0d14, 0x0d2b, 0x0d33, 0x0d3d, 0x0d45, 0x0d53, 0x0d60, + 0x0d6e, 0x0d95, 0x0da3, 0x0db3, 0x0dc8, 0x0dd2, 0x0dde, 0x0dec, + 0x0e01, 0x0e23, 0x0e37, 0x0e48, 0x0e52, 0x0e62, 0x0e7e, 0x0ea3, + 0x0ea9, 0x0ed1, 0x0ed9, 0x0ee5, 0x0ef7, 0x0f05, 0x0f18, 0x0f2a, + 0x0f32, 0x0f3c, 0x0f46, 0x0f66, 0x0f72, 0x0f7e, 0x0f8e, 0x0f9c, + 0x0faa, 0x0fe1, 0x0ffd, 0x1014, 0x1022, 0x1032, 0x1040, 0x1065, + 0x1073, 0x109b, 0x10ca, 0x10d6, 0x10e4, 0x10fe, 0x1108, 0x1112, // Entry 100 - 13F - 0x1126, 0x1132, 0x1142, 0x115b, 0x1163, 0x116f, 0x1188, 0x11a1, - 0x11b3, 0x11c6, 0x11df, 0x11f2, 0x1207, 0x121c, 0x1231, 0x123d, - 0x1252, 0x1260, 0x126f, 0x1280, 0x1298, 0x12ab, 0x12bb, 0x12c7, - 0x12e4, 0x12f3, 0x12fb, 0x1310, 0x131f, 0x1329, 0x133a, 0x134d, - 0x135e, 0x1377, -} // Size: 604 bytes - -var fiRegionStr string = "" + // Size: 2996 bytes + 0x1118, 0x1122, 0x113b, 0x1147, 0x1157, 0x1170, 0x1178, 0x1184, + 0x119d, 0x11b6, 0x11c8, 0x11db, 0x11f4, 0x1207, 0x121c, 0x1231, + 0x1246, 0x1252, 0x1267, 0x1275, 0x1284, 0x1295, 0x12ad, 0x12c0, + 0x12d0, 0x12dc, 0x12f9, 0x1308, 0x1310, 0x1325, 0x1334, 0x133e, + 0x134f, 0x1362, 0x1373, 0x138c, +} // Size: 608 bytes + +const fiRegionStr string = "" + // Size: 3023 bytes "Ascension-saariAndorraArabiemiirikunnatAfganistanAntigua ja BarbudaAngui" + "llaAlbaniaArmeniaAngolaAntarktisArgentiinaAmerikan SamoaItävaltaAustrali" + "aArubaAhvenanmaaAzerbaidžanBosnia ja HertsegovinaBarbadosBangladeshBelgi" + @@ -39684,41 +44772,42 @@ var fiRegionStr string = "" + // Size: 2996 bytes "näjäBelizeKanadaKookossaaret (Keelingsaaret)Kongon demokraattinen tasava" + "ltaKeski-Afrikan tasavaltaKongon tasavaltaSveitsiNorsunluurannikkoCookin" + "saaretChileKamerunKiinaKolumbiaClippertoninsaariCosta RicaKuubaKap Verde" + - "CuraçaoJoulusaariKyprosTšekkiSaksaDiego GarciaDjiboutiTanskaDominicaDomi" + - "nikaaninen tasavaltaAlgeriaCeuta ja MelillaEcuadorViroEgyptiLänsi-Sahara" + - "EritreaEspanjaEtiopiaEuroopan unioniSuomiFidžiFalklandinsaaretMikronesia" + - "n liittovaltioFärsaaretRanskaGabonIso-BritanniaGrenadaGeorgiaRanskan Gua" + - "yanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGuadeloupePäiväntasaajan " + - "GuineaKreikkaEtelä-Georgia ja Eteläiset SandwichsaaretGuatemalaGuamGuine" + - "a-BissauGuyanaHongkong – Kiinan e.h.a.Heard ja McDonaldinsaaretHondurasK" + - "roatiaHaitiUnkariKanariansaaretIndonesiaIrlantiIsraelMansaariIntiaBritti" + - "läinen Intian valtameren alueIrakIranIslantiItaliaJerseyJamaikaJordaniaJ" + - "apaniKeniaKirgisiaKambodžaKiribatiKomoritSaint Kitts ja NevisPohjois-Kor" + - "eaEtelä-KoreaKuwaitCaymansaaretKazakstanLaosLibanonSaint LuciaLiechtenst" + - "einSri LankaLiberiaLesothoLiettuaLuxemburgLatviaLibyaMarokkoMonacoMoldov" + - "aMontenegroSaint-MartinMadagaskarMarshallinsaaretMakedoniaMaliMyanmar (B" + - "urma)MongoliaMacao – Kiinan e.h.a.Pohjois-MariaanitMartiniqueMauritaniaM" + - "ontserratMaltaMauritiusMalediivitMalawiMeksikoMalesiaMosambikNamibiaUusi" + - "-KaledoniaNigerNorfolkinsaariNigeriaNicaraguaAlankomaatNorjaNepalNauruNi" + - "ueUusi-SeelantiOmanPanamaPeruRanskan PolynesiaPapua-Uusi-GuineaFilippiin" + - "itPakistanPuolaSaint-Pierre ja MiquelonPitcairnPuerto RicoPalestiinalais" + - "alueetPortugaliPalauParaguayQatarulkomeriRéunionRomaniaSerbiaVenäjäRuand" + - "aSaudi-ArabiaSalomonsaaretSeychellitSudanRuotsiSingaporeSaint HelenaSlov" + - "eniaHuippuvuoret ja Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomali" + - "aSurinamEtelä-SudanSão Tomé ja PríncipeEl SalvadorSint MaartenSyyriaSwaz" + - "imaaTristan da CunhaTurks- ja CaicossaaretTšadRanskan eteläiset alueetTo" + - "goThaimaaTadžikistanTokelauItä-TimorTurkmenistanTunisiaTongaTurkkiTrinid" + - "ad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdysvaltain erillissaaretY" + - "hdysvallatUruguayUzbekistanVatikaaniSaint Vincent ja GrenadiinitVenezuel" + - "aBrittiläiset NeitsytsaaretYhdysvaltain NeitsytsaaretVietnamVanuatuWalli" + - "s ja FutunaSamoaKosovoJemenMayotteEtelä-AfrikkaSambiaZimbabwetuntematon " + - "aluemaailmaAfrikkaPohjois-AmerikkaEtelä-AmerikkaOseaniaLänsi-AfrikkaVäli" + - "-AmerikkaItä-AfrikkaPohjois-AfrikkaKeski-Afrikkaeteläinen AfrikkaAmerikk" + - "apohjoinen AmerikkaKaribiaItä-AasiaEtelä-AasiaKaakkois-AasiaEtelä-Euroop" + - "paAustralaasiaMelanesiaMikronesiaPolynesiaAasiaKeski-AasiaLänsi-AasiaEur" + - "ooppaItä-EurooppaPohjois-EurooppaLänsi-EurooppaLatinalainen Amerikka" - -var fiRegionIdx = []uint16{ // 290 elements + "CuraçaoJoulusaariKyprosTšekinmaaSaksaDiego GarciaDjiboutiTanskaDominicaD" + + "ominikaaninen tasavaltaAlgeriaCeuta ja MelillaEcuadorViroEgyptiLänsi-Sah" + + "araEritreaEspanjaEtiopiaEuroopan unioniSuomiFidžiFalklandinsaaretMikrone" + + "sian liittovaltioFärsaaretRanskaGabonIso-BritanniaGrenadaGeorgiaRanskan " + + "GuayanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGuadeloupePäiväntasaaj" + + "an GuineaKreikkaEtelä-Georgia ja Eteläiset SandwichsaaretGuatemalaGuamGu" + + "inea-BissauGuyanaHongkong – Kiinan e.h.a.Heard ja McDonaldinsaaretHondur" + + "asKroatiaHaitiUnkariKanariansaaretIndonesiaIrlantiIsraelMansaariIntiaBri" + + "ttiläinen Intian valtameren alueIrakIranIslantiItaliaJerseyJamaikaJordan" + + "iaJapaniKeniaKirgisiaKambodžaKiribatiKomoritSaint Kitts ja NevisPohjois-" + + "KoreaEtelä-KoreaKuwaitCaymansaaretKazakstanLaosLibanonSaint LuciaLiechte" + + "nsteinSri LankaLiberiaLesothoLiettuaLuxemburgLatviaLibyaMarokkoMonacoMol" + + "dovaMontenegroSaint-MartinMadagaskarMarshallinsaaretMakedoniaMaliMyanmar" + + " (Burma)MongoliaMacao – Kiinan e.h.a.Pohjois-MariaanitMartiniqueMauritan" + + "iaMontserratMaltaMauritiusMalediivitMalawiMeksikoMalesiaMosambikNamibiaU" + + "usi-KaledoniaNigerNorfolkinsaariNigeriaNicaraguaAlankomaatNorjaNepalNaur" + + "uNiueUusi-SeelantiOmanPanamaPeruRanskan PolynesiaPapua-Uusi-GuineaFilipp" + + "iinitPakistanPuolaSaint-Pierre ja MiquelonPitcairnPuerto RicoPalestiinal" + + "aisalueetPortugaliPalauParaguayQatarulkomeriRéunionRomaniaSerbiaVenäjäRu" + + "andaSaudi-ArabiaSalomonsaaretSeychellitSudanRuotsiSingaporeSaint HelenaS" + + "loveniaHuippuvuoret ja Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSom" + + "aliaSurinameEtelä-SudanSão Tomé ja PríncipeEl SalvadorSint MaartenSyyria" + + "SwazimaaTristan da CunhaTurks- ja CaicossaaretTšadRanskan eteläiset alue" + + "etTogoThaimaaTadžikistanTokelauItä-TimorTurkmenistanTunisiaTongaTurkkiTr" + + "inidad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdysvaltain erillissaa" + + "retYhdistyneet kansakunnatYhdysvallatUruguayUzbekistanVatikaaniSaint Vin" + + "cent ja GrenadiinitVenezuelaBrittiläiset NeitsytsaaretYhdysvaltain Neits" + + "ytsaaretVietnamVanuatuWallis ja FutunaSamoaKosovoJemenMayotteEtelä-Afrik" + + "kaSambiaZimbabwetuntematon aluemaailmaAfrikkaPohjois-AmerikkaEtelä-Ameri" + + "kkaOseaniaLänsi-AfrikkaVäli-AmerikkaItä-AfrikkaPohjois-AfrikkaKeski-Afri" + + "kkaeteläinen AfrikkaAmerikkapohjoinen AmerikkaKaribiaItä-AasiaEtelä-Aasi" + + "aKaakkois-AasiaEtelä-EurooppaAustralaasiaMelanesiaMikronesiaPolynesiaAas" + + "iaKeski-AasiaLänsi-AasiaEurooppaItä-EurooppaPohjois-EurooppaLänsi-Euroop" + + "paLatinalainen Amerikka" + +var fiRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0016, 0x0027, 0x0031, 0x0043, 0x004b, 0x0052, 0x0059, 0x005f, 0x0068, 0x0072, 0x0080, 0x0089, 0x0092, 0x0097, @@ -39727,43 +44816,43 @@ var fiRegionIdx = []uint16{ // 290 elements 0x0142, 0x0148, 0x014e, 0x015d, 0x0165, 0x0173, 0x0179, 0x017f, 0x019b, 0x01ba, 0x01d1, 0x01e1, 0x01e8, 0x01f9, 0x0205, 0x020a, 0x0211, 0x0216, 0x021e, 0x022f, 0x0239, 0x023e, 0x0247, 0x024f, - 0x0259, 0x025f, 0x0266, 0x026b, 0x0277, 0x027f, 0x0285, 0x028d, + 0x0259, 0x025f, 0x0269, 0x026e, 0x027a, 0x0282, 0x0288, 0x0290, // Entry 40 - 7F - 0x02a5, 0x02ac, 0x02bc, 0x02c3, 0x02c7, 0x02cd, 0x02da, 0x02e1, - 0x02e8, 0x02ef, 0x02fe, 0x0303, 0x0309, 0x0319, 0x0331, 0x033b, - 0x0341, 0x0346, 0x0353, 0x035a, 0x0361, 0x0370, 0x0378, 0x037d, - 0x0386, 0x0390, 0x0396, 0x039c, 0x03a6, 0x03bd, 0x03c4, 0x03ef, - 0x03f8, 0x03fc, 0x0409, 0x040f, 0x0429, 0x0442, 0x044a, 0x0451, - 0x0456, 0x045c, 0x046a, 0x0473, 0x047a, 0x0480, 0x0488, 0x048d, - 0x04b1, 0x04b5, 0x04b9, 0x04c0, 0x04c6, 0x04cc, 0x04d3, 0x04db, - 0x04e1, 0x04e6, 0x04ee, 0x04f7, 0x04ff, 0x0506, 0x051a, 0x0527, + 0x02a8, 0x02af, 0x02bf, 0x02c6, 0x02ca, 0x02d0, 0x02dd, 0x02e4, + 0x02eb, 0x02f2, 0x0301, 0x0301, 0x0306, 0x030c, 0x031c, 0x0334, + 0x033e, 0x0344, 0x0349, 0x0356, 0x035d, 0x0364, 0x0373, 0x037b, + 0x0380, 0x0389, 0x0393, 0x0399, 0x039f, 0x03a9, 0x03c0, 0x03c7, + 0x03f2, 0x03fb, 0x03ff, 0x040c, 0x0412, 0x042c, 0x0445, 0x044d, + 0x0454, 0x0459, 0x045f, 0x046d, 0x0476, 0x047d, 0x0483, 0x048b, + 0x0490, 0x04b4, 0x04b8, 0x04bc, 0x04c3, 0x04c9, 0x04cf, 0x04d6, + 0x04de, 0x04e4, 0x04e9, 0x04f1, 0x04fa, 0x0502, 0x0509, 0x051d, // Entry 80 - BF - 0x0533, 0x0539, 0x0545, 0x054e, 0x0552, 0x0559, 0x0564, 0x0571, - 0x057a, 0x0581, 0x0588, 0x058f, 0x0598, 0x059e, 0x05a3, 0x05aa, - 0x05b0, 0x05b7, 0x05c1, 0x05cd, 0x05d7, 0x05e7, 0x05f0, 0x05f4, - 0x0603, 0x060b, 0x0622, 0x0633, 0x063d, 0x0647, 0x0651, 0x0656, - 0x065f, 0x0669, 0x066f, 0x0676, 0x067d, 0x0685, 0x068c, 0x069a, - 0x069f, 0x06ad, 0x06b4, 0x06bd, 0x06c7, 0x06cc, 0x06d1, 0x06d6, - 0x06da, 0x06e7, 0x06eb, 0x06f1, 0x06f5, 0x0706, 0x0717, 0x0722, - 0x072a, 0x072f, 0x0747, 0x074f, 0x075a, 0x076e, 0x0777, 0x077c, + 0x052a, 0x0536, 0x053c, 0x0548, 0x0551, 0x0555, 0x055c, 0x0567, + 0x0574, 0x057d, 0x0584, 0x058b, 0x0592, 0x059b, 0x05a1, 0x05a6, + 0x05ad, 0x05b3, 0x05ba, 0x05c4, 0x05d0, 0x05da, 0x05ea, 0x05f3, + 0x05f7, 0x0606, 0x060e, 0x0625, 0x0636, 0x0640, 0x064a, 0x0654, + 0x0659, 0x0662, 0x066c, 0x0672, 0x0679, 0x0680, 0x0688, 0x068f, + 0x069d, 0x06a2, 0x06b0, 0x06b7, 0x06c0, 0x06ca, 0x06cf, 0x06d4, + 0x06d9, 0x06dd, 0x06ea, 0x06ee, 0x06f4, 0x06f8, 0x0709, 0x071a, + 0x0725, 0x072d, 0x0732, 0x074a, 0x0752, 0x075d, 0x0771, 0x077a, // Entry C0 - FF - 0x0784, 0x0789, 0x0791, 0x0799, 0x07a0, 0x07a6, 0x07ae, 0x07b4, - 0x07c0, 0x07cd, 0x07d7, 0x07dc, 0x07e2, 0x07eb, 0x07f7, 0x07ff, - 0x0818, 0x0820, 0x082c, 0x0836, 0x083d, 0x0844, 0x084b, 0x0857, - 0x086e, 0x0879, 0x0885, 0x088b, 0x0893, 0x08a3, 0x08b9, 0x08be, - 0x08d7, 0x08db, 0x08e2, 0x08ee, 0x08f5, 0x08ff, 0x090b, 0x0912, - 0x0917, 0x091d, 0x092f, 0x0935, 0x093b, 0x0943, 0x094a, 0x0950, - 0x096a, 0x0975, 0x097c, 0x0986, 0x098f, 0x09ab, 0x09b4, 0x09cf, - 0x09e9, 0x09f0, 0x09f7, 0x0a07, 0x0a0c, 0x0a12, 0x0a17, 0x0a1e, + 0x077f, 0x0787, 0x078c, 0x0794, 0x079c, 0x07a3, 0x07a9, 0x07b1, + 0x07b7, 0x07c3, 0x07d0, 0x07da, 0x07df, 0x07e5, 0x07ee, 0x07fa, + 0x0802, 0x081b, 0x0823, 0x082f, 0x0839, 0x0840, 0x0847, 0x084f, + 0x085b, 0x0872, 0x087d, 0x0889, 0x088f, 0x0897, 0x08a7, 0x08bd, + 0x08c2, 0x08db, 0x08df, 0x08e6, 0x08f2, 0x08f9, 0x0903, 0x090f, + 0x0916, 0x091b, 0x0921, 0x0933, 0x0939, 0x093f, 0x0947, 0x094e, + 0x0954, 0x096e, 0x0985, 0x0990, 0x0997, 0x09a1, 0x09aa, 0x09c6, + 0x09cf, 0x09ea, 0x0a04, 0x0a0b, 0x0a12, 0x0a22, 0x0a27, 0x0a2d, // Entry 100 - 13F - 0x0a2c, 0x0a32, 0x0a3a, 0x0a49, 0x0a50, 0x0a57, 0x0a67, 0x0a76, - 0x0a7d, 0x0a8b, 0x0a99, 0x0aa5, 0x0ab4, 0x0ac1, 0x0ad3, 0x0adb, - 0x0aed, 0x0af4, 0x0afe, 0x0b0a, 0x0b18, 0x0b27, 0x0b33, 0x0b3c, - 0x0b46, 0x0b4f, 0x0b54, 0x0b5f, 0x0b6b, 0x0b73, 0x0b80, 0x0b90, - 0x0b9f, 0x0bb4, -} // Size: 604 bytes - -var filRegionStr string = "" + // Size: 3018 bytes + 0x0a32, 0x0a39, 0x0a47, 0x0a4d, 0x0a55, 0x0a64, 0x0a6b, 0x0a72, + 0x0a82, 0x0a91, 0x0a98, 0x0aa6, 0x0ab4, 0x0ac0, 0x0acf, 0x0adc, + 0x0aee, 0x0af6, 0x0b08, 0x0b0f, 0x0b19, 0x0b25, 0x0b33, 0x0b42, + 0x0b4e, 0x0b57, 0x0b61, 0x0b6a, 0x0b6f, 0x0b7a, 0x0b86, 0x0b8e, + 0x0b9b, 0x0bab, 0x0bba, 0x0bcf, +} // Size: 608 bytes + +const filRegionStr string = "" + // Size: 3030 bytes "Acsencion islandAndorraUnited Arab EmiratesAfghanistanAntigua and Barbud" + "aAnguillaAlbaniaArmeniaAngolaAntarcticaArgentinaAmerican SamoaAustriaAus" + "traliaArubaÅland IslandsAzerbaijanBosnia and HerzegovinaBarbadosBanglade" + @@ -39772,42 +44861,42 @@ var filRegionStr string = "" + // Size: 3018 bytes "aBelarusBelizeCanadaCocos (Keeling) IslandsCongo - KinshasaCentral Afric" + "an RepublicCongo - BrazzavilleSwitzerlandCôte d’IvoireCook IslandsChileC" + "ameroonChinaColombiaClipperton IslandCosta RicaCubaCape VerdeCuraçaoChri" + - "stmas IslandCyprusCzech RepublicGermanyDiego GarciaDjiboutiDenmarkDomini" + - "caDominican RepublicAlgeriaCeuta and MelillaEcuadorEstoniaEgyptKanlurang" + - " SaharaEritreaSpainEthiopiaEuropean UnionFinlandFijiFalkland IslandsMicr" + - "onesiaFaroe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaG" + - "uernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGre" + - "eceSouth Georgia and the South Sandwich IslandsGuatemalaGuamGuinea-Bissa" + - "uGuyanaHong Kong SAR ChinaHeard Island and McDonald IslandsHondurasCroat" + - "iaHaitiHungaryCanary IslandIndonesiaIrelandIsraelIsle of ManIndiaBritish" + - " Indian Ocean TerritoryIraqIranIcelandItalyJerseyJamaicaJordanJapanKenya" + - "KyrgyzstanCambodiaKiribatiComorosSaint Kitts and NevisHilagang KoreaTimo" + - "g KoreaKuwaitCayman IslandsKazakhstanLaosLebanonSaint LuciaLiechtenstein" + - "Sri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldov" + - "aMontenegroSaint MartinMadagascarMarshall IslandsMacedoniaMaliMyanmar (B" + - "urma)MongoliaMacau SAR ChinaNorthern Mariana IslandsMartiniqueMauritania" + - "MontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew" + - " CaledoniaNigerNorfolk IslandNigeriaNicaraguaNetherlandsNorwayNepalNauru" + - "NiueNew ZealandOmanPanamaPeruFrench PolynesiaPapua New GuineaPilipinasPa" + - "kistanPolandSaint Pierre and MiquelonPitcairn IslandsPuerto RicoPalestin" + - "ian TerritoriesPortugalPalauParaguayQatarOutlying OceaniaRéunionRomaniaS" + - "erbiaRussiaRwandaSaudi ArabiaSolomon IslandsSeychellesSudanSwedenSingapo" + - "reSaint HelenaSloveniaSvalbard and Jan MayenSlovakiaSierra LeoneSan Mari" + - "noSenegalSomaliaSurinameTimog SudanSão Tomé and PríncipeEl SalvadorSint " + - "MaartenSyriaSwazilandTristan de CunhaTurks and Caicos IslandsChadFrench " + - "Southern TerritoriesTogoThailandTajikistanTokelauTimor-LesteTurkmenistan" + - "TunisiaTongaTurkeyTrinidad and TobagoTuvaluTaiwanTanzaniaUkraineUgandaU." + - "S. Outlying IslandsEstados UnidosUruguayUzbekistanVatican CitySaint Vinc" + - "ent and the GrenadinesVenezuelaBritish Virgin IslandsU.S. Virgin Islands" + - "VietnamVanuatuWallis and FutunaSamoaKosovoYemenMayotteSouth AfricaZambia" + - "ZimbabweHindi Kilalang RehiyonMundoAfricaHilagang AmerikaTimog AmerikaOc" + - "eaniaKanlurang AfricaGitnang AmerikaSilangang AfricaHilagang AfricaGitna" + - "ng AfricaKatimugang AfricaAmericasNorthern AmericaCarribbeanSilangang As" + - "yaKatimugang AsyaTimog-Silangang AsyaKatimugang EuropeAustralasiaMelanes" + - "iaRehiyon ng MicronesiaPolynesiaAsyaGitnang AsyaKanlurang AsyaEuropeSila" + - "ngang EuropeHilagang EuropeKanlurang EuropeLatin America" - -var filRegionIdx = []uint16{ // 290 elements + "stmas IslandCyprusCzechiaGermanyDiego GarciaDjiboutiDenmarkDominicaDomin" + + "ican RepublicAlgeriaCeuta and MelillaEcuadorEstoniaEgyptKanlurang Sahara" + + "EritreaSpainEthiopiaEuropean UnionFinlandFijiFalkland IslandsMicronesiaF" + + "aroe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGuernsey" + + "GhanaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceSout" + + "h Georgia and the South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyana" + + "Hong Kong SAR ChinaHeard Island and McDonald IslandsHondurasCroatiaHaiti" + + "HungaryCanary IslandsIndonesiaIrelandIsraelIsle of ManIndiaBritish India" + + "n Ocean TerritoryIraqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrgyz" + + "stanCambodiaKiribatiComorosSaint Kitts and NevisHilagang KoreaTimog Kore" + + "aKuwaitCayman IslandsKazakhstanLaosLebanonSaint LuciaLiechtensteinSri La" + + "nkaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldovaMonte" + + "negroSaint MartinMadagascarMarshall IslandsMacedoniaMaliMyanmar (Burma)M" + + "ongoliaMacau SAR ChinaNorthern Mariana IslandsMartiniqueMauritaniaMontse" + + "rratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew Caled" + + "oniaNigerNorfolk IslandNigeriaNicaraguaNetherlandsNorwayNepalNauruNiueNe" + + "w ZealandOmanPanamaPeruFrench PolynesiaPapua New GuineaPilipinasPakistan" + + "PolandSaint Pierre and MiquelonPitcairn IslandsPuerto RicoPalestinian Te" + + "rritoriesPortugalPalauParaguayQatarOutlying OceaniaRéunionRomaniaSerbiaR" + + "ussiaRwandaSaudi ArabiaSolomon IslandsSeychellesSudanSwedenSingaporeSain" + + "t HelenaSloveniaSvalbard and Jan MayenSlovakiaSierra LeoneSan MarinoSene" + + "galSomaliaSurinameTimog SudanSão Tomé and PríncipeEl SalvadorSint Maarte" + + "nSyriaSwazilandTristan de CunhaTurks and Caicos IslandsChadFrench Southe" + + "rn TerritoriesTogoThailandTajikistanTokelauTimor-LesteTurkmenistanTunisi" + + "aTongaTurkeyTrinidad and TobagoTuvaluTaiwanTanzaniaUkraineUgandaU.S. Out" + + "lying IslandsNagkakaisang BansaEstados UnidosUruguayUzbekistanVatican Ci" + + "tySaint Vincent and the GrenadinesVenezuelaBritish Virgin IslandsU.S. Vi" + + "rgin IslandsVietnamVanuatuWallis and FutunaSamoaKosovoYemenMayotteSouth " + + "AfricaZambiaZimbabweHindi Kilalang RehiyonMundoAfricaHilagang AmerikaTim" + + "og AmerikaOceaniaKanlurang AfricaGitnang AmerikaSilangang AfricaHilagang" + + " AfricaGitnang AfricaKatimugang AfricaAmericasNorthern AmericaCarribbean" + + "Silangang AsyaKatimugang AsyaTimog-Silangang AsyaKatimugang EuropeAustra" + + "lasiaMelanesiaRehiyon ng MicronesiaPolynesiaAsyaGitnang AsyaKanlurang As" + + "yaEuropeSilangang EuropeHilagang EuropeKanlurang EuropeLatin America" + +var filRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0049, 0x0051, 0x0058, 0x005f, 0x0065, 0x006f, 0x0078, 0x0086, 0x008d, 0x0096, 0x009b, @@ -39816,43 +44905,43 @@ var filRegionIdx = []uint16{ // 290 elements 0x0149, 0x0150, 0x0156, 0x0163, 0x016b, 0x0172, 0x0178, 0x017e, 0x0195, 0x01a5, 0x01bd, 0x01d0, 0x01db, 0x01eb, 0x01f7, 0x01fc, 0x0204, 0x0209, 0x0211, 0x0222, 0x022c, 0x0230, 0x023a, 0x0242, - 0x0252, 0x0258, 0x0266, 0x026d, 0x0279, 0x0281, 0x0288, 0x0290, + 0x0252, 0x0258, 0x025f, 0x0266, 0x0272, 0x027a, 0x0281, 0x0289, // Entry 40 - 7F - 0x02a2, 0x02a9, 0x02ba, 0x02c1, 0x02c8, 0x02cd, 0x02dd, 0x02e4, - 0x02e9, 0x02f1, 0x02ff, 0x0306, 0x030a, 0x031a, 0x0324, 0x0331, - 0x0337, 0x033c, 0x034a, 0x0351, 0x0358, 0x0365, 0x036d, 0x0372, - 0x037b, 0x0384, 0x038a, 0x0390, 0x039a, 0x03ab, 0x03b1, 0x03dd, - 0x03e6, 0x03ea, 0x03f7, 0x03fd, 0x0410, 0x0431, 0x0439, 0x0440, - 0x0445, 0x044c, 0x0459, 0x0462, 0x0469, 0x046f, 0x047a, 0x047f, - 0x049d, 0x04a1, 0x04a5, 0x04ac, 0x04b1, 0x04b7, 0x04be, 0x04c4, - 0x04c9, 0x04ce, 0x04d8, 0x04e0, 0x04e8, 0x04ef, 0x0504, 0x0512, + 0x029b, 0x02a2, 0x02b3, 0x02ba, 0x02c1, 0x02c6, 0x02d6, 0x02dd, + 0x02e2, 0x02ea, 0x02f8, 0x02f8, 0x02ff, 0x0303, 0x0313, 0x031d, + 0x032a, 0x0330, 0x0335, 0x0343, 0x034a, 0x0351, 0x035e, 0x0366, + 0x036b, 0x0374, 0x037d, 0x0383, 0x0389, 0x0393, 0x03a4, 0x03aa, + 0x03d6, 0x03df, 0x03e3, 0x03f0, 0x03f6, 0x0409, 0x042a, 0x0432, + 0x0439, 0x043e, 0x0445, 0x0453, 0x045c, 0x0463, 0x0469, 0x0474, + 0x0479, 0x0497, 0x049b, 0x049f, 0x04a6, 0x04ab, 0x04b1, 0x04b8, + 0x04be, 0x04c3, 0x04c8, 0x04d2, 0x04da, 0x04e2, 0x04e9, 0x04fe, // Entry 80 - BF - 0x051d, 0x0523, 0x0531, 0x053b, 0x053f, 0x0546, 0x0551, 0x055e, - 0x0567, 0x056e, 0x0575, 0x057e, 0x0588, 0x058e, 0x0593, 0x059a, - 0x05a0, 0x05a7, 0x05b1, 0x05bd, 0x05c7, 0x05d7, 0x05e0, 0x05e4, - 0x05f3, 0x05fb, 0x060a, 0x0622, 0x062c, 0x0636, 0x0640, 0x0645, - 0x064e, 0x0656, 0x065c, 0x0662, 0x066a, 0x0674, 0x067b, 0x0688, - 0x068d, 0x069b, 0x06a2, 0x06ab, 0x06b6, 0x06bc, 0x06c1, 0x06c6, - 0x06ca, 0x06d5, 0x06d9, 0x06df, 0x06e3, 0x06f3, 0x0703, 0x070c, - 0x0714, 0x071a, 0x0733, 0x0743, 0x074e, 0x0765, 0x076d, 0x0772, + 0x050c, 0x0517, 0x051d, 0x052b, 0x0535, 0x0539, 0x0540, 0x054b, + 0x0558, 0x0561, 0x0568, 0x056f, 0x0578, 0x0582, 0x0588, 0x058d, + 0x0594, 0x059a, 0x05a1, 0x05ab, 0x05b7, 0x05c1, 0x05d1, 0x05da, + 0x05de, 0x05ed, 0x05f5, 0x0604, 0x061c, 0x0626, 0x0630, 0x063a, + 0x063f, 0x0648, 0x0650, 0x0656, 0x065c, 0x0664, 0x066e, 0x0675, + 0x0682, 0x0687, 0x0695, 0x069c, 0x06a5, 0x06b0, 0x06b6, 0x06bb, + 0x06c0, 0x06c4, 0x06cf, 0x06d3, 0x06d9, 0x06dd, 0x06ed, 0x06fd, + 0x0706, 0x070e, 0x0714, 0x072d, 0x073d, 0x0748, 0x075f, 0x0767, // Entry C0 - FF - 0x077a, 0x077f, 0x078f, 0x0797, 0x079e, 0x07a4, 0x07aa, 0x07b0, - 0x07bc, 0x07cb, 0x07d5, 0x07da, 0x07e0, 0x07e9, 0x07f5, 0x07fd, - 0x0813, 0x081b, 0x0827, 0x0831, 0x0838, 0x083f, 0x0847, 0x0852, - 0x086a, 0x0875, 0x0881, 0x0886, 0x088f, 0x089f, 0x08b7, 0x08bb, - 0x08d6, 0x08da, 0x08e2, 0x08ec, 0x08f3, 0x08fe, 0x090a, 0x0911, - 0x0916, 0x091c, 0x092f, 0x0935, 0x093b, 0x0943, 0x094a, 0x0950, - 0x0965, 0x0973, 0x097a, 0x0984, 0x0990, 0x09b0, 0x09b9, 0x09cf, - 0x09e2, 0x09e9, 0x09f0, 0x0a01, 0x0a06, 0x0a0c, 0x0a11, 0x0a18, + 0x076c, 0x0774, 0x0779, 0x0789, 0x0791, 0x0798, 0x079e, 0x07a4, + 0x07aa, 0x07b6, 0x07c5, 0x07cf, 0x07d4, 0x07da, 0x07e3, 0x07ef, + 0x07f7, 0x080d, 0x0815, 0x0821, 0x082b, 0x0832, 0x0839, 0x0841, + 0x084c, 0x0864, 0x086f, 0x087b, 0x0880, 0x0889, 0x0899, 0x08b1, + 0x08b5, 0x08d0, 0x08d4, 0x08dc, 0x08e6, 0x08ed, 0x08f8, 0x0904, + 0x090b, 0x0910, 0x0916, 0x0929, 0x092f, 0x0935, 0x093d, 0x0944, + 0x094a, 0x095f, 0x0971, 0x097f, 0x0986, 0x0990, 0x099c, 0x09bc, + 0x09c5, 0x09db, 0x09ee, 0x09f5, 0x09fc, 0x0a0d, 0x0a12, 0x0a18, // Entry 100 - 13F - 0x0a24, 0x0a2a, 0x0a32, 0x0a48, 0x0a4d, 0x0a53, 0x0a63, 0x0a70, - 0x0a77, 0x0a87, 0x0a96, 0x0aa6, 0x0ab5, 0x0ac3, 0x0ad4, 0x0adc, - 0x0aec, 0x0af6, 0x0b04, 0x0b13, 0x0b27, 0x0b38, 0x0b43, 0x0b4c, - 0x0b61, 0x0b6a, 0x0b6e, 0x0b7a, 0x0b88, 0x0b8e, 0x0b9e, 0x0bad, - 0x0bbd, 0x0bca, -} // Size: 604 bytes - -var frRegionStr string = "" + // Size: 3307 bytes + 0x0a1d, 0x0a24, 0x0a30, 0x0a36, 0x0a3e, 0x0a54, 0x0a59, 0x0a5f, + 0x0a6f, 0x0a7c, 0x0a83, 0x0a93, 0x0aa2, 0x0ab2, 0x0ac1, 0x0acf, + 0x0ae0, 0x0ae8, 0x0af8, 0x0b02, 0x0b10, 0x0b1f, 0x0b33, 0x0b44, + 0x0b4f, 0x0b58, 0x0b6d, 0x0b76, 0x0b7a, 0x0b86, 0x0b94, 0x0b9a, + 0x0baa, 0x0bb9, 0x0bc9, 0x0bd6, +} // Size: 608 bytes + +const frRegionStr string = "" + // Size: 3309 bytes "Île de l’AscensionAndorreÉmirats arabes unisAfghanistanAntigua-et-Barbud" + "aAnguillaAlbanieArménieAngolaAntarctiqueArgentineSamoa américainesAutric" + "heAustralieArubaÎles ÅlandAzerbaïdjanBosnie-HerzégovineBarbadeBangladesh" + @@ -39860,34 +44949,34 @@ var frRegionStr string = "" + // Size: 3307 bytes "runéi DarussalamBoliviePays-Bas caribéensBrésilBahamasBhoutanÎle BouvetB" + "otswanaBiélorussieBelizeCanadaÎles CocosCongo-KinshasaRépublique centraf" + "ricaineCongo-BrazzavilleSuisseCôte d’IvoireÎles CookChiliCamerounChineCo" + - "lombieÎle ClippertonCosta RicaCubaCap-VertCuraçaoÎle ChristmasChypreRépu" + - "blique tchèqueAllemagneDiego GarciaDjiboutiDanemarkDominiqueRépublique d" + - "ominicaineAlgérieCeuta et MelillaÉquateurEstonieÉgypteSahara occidentalÉ" + - "rythréeEspagneÉthiopieUnion européenneFinlandeFidjiÎles MalouinesÉtats f" + - "édérés de MicronésieÎles FéroéFranceGabonRoyaume-UniGrenadeGéorgieGuyan" + - "e françaiseGuerneseyGhanaGibraltarGroenlandGambieGuinéeGuadeloupeGuinée " + - "équatorialeGrèceGéorgie du Sud et îles Sandwich du SudGuatemalaGuamGuin" + - "ée-BissauGuyanaR.A.S. chinoise de Hong KongÎles Heard et McDonaldHondur" + - "asCroatieHaïtiHongrieÎles CanariesIndonésieIrlandeIsraëlÎle de ManIndeTe" + - "rritoire britannique de l’océan IndienIrakIranIslandeItalieJerseyJamaïqu" + - "eJordanieJaponKenyaKirghizistanCambodgeKiribatiComoresSaint-Christophe-e" + - "t-NiévèsCorée du NordCorée du SudKoweïtÎles CaïmansKazakhstanLaosLibanSa" + - "inte-LucieLiechtensteinSri LankaLibériaLesothoLituanieLuxembourgLettonie" + - "LibyeMarocMonacoMoldavieMonténégroSaint-MartinMadagascarÎles MarshallMac" + - "édoineMaliMyanmar (Birmanie)MongolieR.A.S. chinoise de MacaoÎles Marian" + - "nes du NordMartiniqueMauritanieMontserratMalteMauriceMaldivesMalawiMexiq" + - "ueMalaisieMozambiqueNamibieNouvelle-CalédonieNigerÎle NorfolkNigériaNica" + - "raguaPays-BasNorvègeNépalNauruNiueNouvelle-ZélandeOmanPanamaPérouPolynés" + - "ie françaisePapouasie-Nouvelle-GuinéePhilippinesPakistanPologneSaint-Pie" + - "rre-et-MiquelonÎles PitcairnPorto RicoTerritoires palestiniensPortugalPa" + - "laosParaguayQatarrégions éloignées de l’OcéanieLa RéunionRoumanieSerbieR" + - "ussieRwandaArabie saouditeÎles SalomonSeychellesSoudanSuèdeSingapourSain" + - "te-HélèneSlovénieSvalbard et Jan MayenSlovaquieSierra LeoneSaint-MarinSé" + - "négalSomalieSurinameSoudan du SudSao Tomé-et-PrincipeEl SalvadorSaint-Ma" + - "rtin (partie néerlandaise)SyrieSwazilandTristan da CunhaÎles Turques-et-" + - "CaïquesTchadTerres australes françaisesTogoThaïlandeTadjikistanTokélaouT" + - "imor orientalTurkménistanTunisieTongaTurquieTrinité-et-TobagoTuvaluTaïwa" + - "nTanzanieUkraineOugandaÎles mineures éloignées des États-UnisÉtats-UnisU" + + "lombieÎle ClippertonCosta RicaCubaCap-VertCuraçaoÎle ChristmasChypreTché" + + "quieAllemagneDiego GarciaDjiboutiDanemarkDominiqueRépublique dominicaine" + + "AlgérieCeuta et MelillaÉquateurEstonieÉgypteSahara occidentalÉrythréeEsp" + + "agneÉthiopieUnion européenneFinlandeFidjiÎles MalouinesÉtats fédérés de " + + "MicronésieÎles FéroéFranceGabonRoyaume-UniGrenadeGéorgieGuyane française" + + "GuerneseyGhanaGibraltarGroenlandGambieGuinéeGuadeloupeGuinée équatoriale" + + "GrèceGéorgie du Sud et îles Sandwich du SudGuatemalaGuamGuinée-BissauGuy" + + "anaR.A.S. chinoise de Hong KongÎles Heard et McDonaldHondurasCroatieHaït" + + "iHongrieÎles CanariesIndonésieIrlandeIsraëlÎle de ManIndeTerritoire brit" + + "annique de l’océan IndienIrakIranIslandeItalieJerseyJamaïqueJordanieJapo" + + "nKenyaKirghizistanCambodgeKiribatiComoresSaint-Christophe-et-NiévèsCorée" + + " du NordCorée du SudKoweïtÎles CaïmansKazakhstanLaosLibanSainte-LucieLie" + + "chtensteinSri LankaLibériaLesothoLituanieLuxembourgLettonieLibyeMarocMon" + + "acoMoldavieMonténégroSaint-MartinMadagascarÎles MarshallMacédoineMaliMya" + + "nmar (Birmanie)MongolieR.A.S. chinoise de MacaoÎles Mariannes du NordMar" + + "tiniqueMauritanieMontserratMalteMauriceMaldivesMalawiMexiqueMalaisieMoza" + + "mbiqueNamibieNouvelle-CalédonieNigerÎle NorfolkNigériaNicaraguaPays-BasN" + + "orvègeNépalNauruNiueNouvelle-ZélandeOmanPanamaPérouPolynésie françaisePa" + + "pouasie-Nouvelle-GuinéePhilippinesPakistanPologneSaint-Pierre-et-Miquelo" + + "nÎles PitcairnPorto RicoTerritoires palestiniensPortugalPalaosParaguayQa" + + "tarrégions éloignées de l’OcéanieLa RéunionRoumanieSerbieRussieRwandaAra" + + "bie saouditeÎles SalomonSeychellesSoudanSuèdeSingapourSainte-HélèneSlové" + + "nieSvalbard et Jan MayenSlovaquieSierra LeoneSaint-MarinSénégalSomalieSu" + + "rinameSoudan du SudSao Tomé-et-PrincipeEl SalvadorSaint-Martin (partie n" + + "éerlandaise)SyrieSwazilandTristan da CunhaÎles Turques-et-CaïquesTchadT" + + "erres australes françaisesTogoThaïlandeTadjikistanTokélaouTimor oriental" + + "TurkménistanTunisieTongaTurquieTrinité-et-TobagoTuvaluTaïwanTanzanieUkra" + + "ineOugandaÎles mineures éloignées des États-UnisNations UniesÉtats-UnisU" + "ruguayOuzbékistanÉtat de la Cité du VaticanSaint-Vincent-et-les-Grenadin" + "esVenezuelaÎles Vierges britanniquesÎles Vierges des États-UnisVietnamVa" + "nuatuWallis-et-FutunaSamoaKosovoYémenMayotteAfrique du SudZambieZimbabwe" + @@ -39898,7 +44987,7 @@ var frRegionStr string = "" + // Size: 3307 bytes "anésierégion micronésiennePolynésieAsieAsie centraleAsie occidentaleEuro" + "peEurope de l’EstEurope septentrionaleEurope occidentaleAmérique latine" -var frRegionIdx = []uint16{ // 290 elements +var frRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0015, 0x001c, 0x0030, 0x003b, 0x004d, 0x0055, 0x005c, 0x0064, 0x006a, 0x0075, 0x007e, 0x0090, 0x0098, 0x00a1, 0x00a6, @@ -39907,91 +44996,97 @@ var frRegionIdx = []uint16{ // 290 elements 0x015f, 0x0166, 0x016d, 0x0178, 0x0180, 0x018c, 0x0192, 0x0198, 0x01a3, 0x01b1, 0x01cb, 0x01dc, 0x01e2, 0x01f2, 0x01fc, 0x0201, 0x0209, 0x020e, 0x0216, 0x0225, 0x022f, 0x0233, 0x023b, 0x0243, - 0x0251, 0x0257, 0x026b, 0x0274, 0x0280, 0x0288, 0x0290, 0x0299, + 0x0251, 0x0257, 0x0260, 0x0269, 0x0275, 0x027d, 0x0285, 0x028e, // Entry 40 - 7F - 0x02b0, 0x02b8, 0x02c8, 0x02d1, 0x02d8, 0x02df, 0x02f0, 0x02fa, - 0x0301, 0x030a, 0x031b, 0x0323, 0x0328, 0x0337, 0x0357, 0x0364, - 0x036a, 0x036f, 0x037a, 0x0381, 0x0389, 0x039a, 0x03a3, 0x03a8, - 0x03b1, 0x03ba, 0x03c0, 0x03c7, 0x03d1, 0x03e5, 0x03eb, 0x0413, - 0x041c, 0x0420, 0x042e, 0x0434, 0x0450, 0x0467, 0x046f, 0x0476, - 0x047c, 0x0483, 0x0491, 0x049b, 0x04a2, 0x04a9, 0x04b4, 0x04b8, - 0x04e3, 0x04e7, 0x04eb, 0x04f2, 0x04f8, 0x04fe, 0x0507, 0x050f, - 0x0514, 0x0519, 0x0525, 0x052d, 0x0535, 0x053c, 0x0558, 0x0566, + 0x02a5, 0x02ad, 0x02bd, 0x02c6, 0x02cd, 0x02d4, 0x02e5, 0x02ef, + 0x02f6, 0x02ff, 0x0310, 0x0310, 0x0318, 0x031d, 0x032c, 0x034c, + 0x0359, 0x035f, 0x0364, 0x036f, 0x0376, 0x037e, 0x038f, 0x0398, + 0x039d, 0x03a6, 0x03af, 0x03b5, 0x03bc, 0x03c6, 0x03da, 0x03e0, + 0x0408, 0x0411, 0x0415, 0x0423, 0x0429, 0x0445, 0x045c, 0x0464, + 0x046b, 0x0471, 0x0478, 0x0486, 0x0490, 0x0497, 0x049e, 0x04a9, + 0x04ad, 0x04d8, 0x04dc, 0x04e0, 0x04e7, 0x04ed, 0x04f3, 0x04fc, + 0x0504, 0x0509, 0x050e, 0x051a, 0x0522, 0x052a, 0x0531, 0x054d, // Entry 80 - BF - 0x0573, 0x057a, 0x0588, 0x0592, 0x0596, 0x059b, 0x05a7, 0x05b4, - 0x05bd, 0x05c5, 0x05cc, 0x05d4, 0x05de, 0x05e6, 0x05eb, 0x05f0, - 0x05f6, 0x05fe, 0x060a, 0x0616, 0x0620, 0x062e, 0x0638, 0x063c, - 0x064e, 0x0656, 0x066e, 0x0685, 0x068f, 0x0699, 0x06a3, 0x06a8, - 0x06af, 0x06b7, 0x06bd, 0x06c4, 0x06cc, 0x06d6, 0x06dd, 0x06f0, - 0x06f5, 0x0701, 0x0709, 0x0712, 0x071a, 0x0722, 0x0728, 0x072d, - 0x0731, 0x0742, 0x0746, 0x074c, 0x0752, 0x0767, 0x0781, 0x078c, - 0x0794, 0x079b, 0x07b3, 0x07c1, 0x07cb, 0x07e3, 0x07eb, 0x07f1, + 0x055b, 0x0568, 0x056f, 0x057d, 0x0587, 0x058b, 0x0590, 0x059c, + 0x05a9, 0x05b2, 0x05ba, 0x05c1, 0x05c9, 0x05d3, 0x05db, 0x05e0, + 0x05e5, 0x05eb, 0x05f3, 0x05ff, 0x060b, 0x0615, 0x0623, 0x062d, + 0x0631, 0x0643, 0x064b, 0x0663, 0x067a, 0x0684, 0x068e, 0x0698, + 0x069d, 0x06a4, 0x06ac, 0x06b2, 0x06b9, 0x06c1, 0x06cb, 0x06d2, + 0x06e5, 0x06ea, 0x06f6, 0x06fe, 0x0707, 0x070f, 0x0717, 0x071d, + 0x0722, 0x0726, 0x0737, 0x073b, 0x0741, 0x0747, 0x075c, 0x0776, + 0x0781, 0x0789, 0x0790, 0x07a8, 0x07b6, 0x07c0, 0x07d8, 0x07e0, // Entry C0 - FF - 0x07f9, 0x07fe, 0x0822, 0x082d, 0x0835, 0x083b, 0x0841, 0x0847, - 0x0856, 0x0863, 0x086d, 0x0873, 0x0879, 0x0882, 0x0891, 0x089a, - 0x08af, 0x08b8, 0x08c4, 0x08cf, 0x08d8, 0x08df, 0x08e7, 0x08f4, - 0x0909, 0x0914, 0x0937, 0x093c, 0x0945, 0x0955, 0x096e, 0x0973, - 0x098f, 0x0993, 0x099d, 0x09a8, 0x09b1, 0x09bf, 0x09cc, 0x09d3, - 0x09d8, 0x09df, 0x09f1, 0x09f7, 0x09fe, 0x0a06, 0x0a0d, 0x0a14, - 0x0a3e, 0x0a49, 0x0a50, 0x0a5c, 0x0a78, 0x0a97, 0x0aa0, 0x0aba, - 0x0ad7, 0x0ade, 0x0ae5, 0x0af5, 0x0afa, 0x0b00, 0x0b06, 0x0b0d, + 0x07e6, 0x07ee, 0x07f3, 0x0817, 0x0822, 0x082a, 0x0830, 0x0836, + 0x083c, 0x084b, 0x0858, 0x0862, 0x0868, 0x086e, 0x0877, 0x0886, + 0x088f, 0x08a4, 0x08ad, 0x08b9, 0x08c4, 0x08cd, 0x08d4, 0x08dc, + 0x08e9, 0x08fe, 0x0909, 0x092c, 0x0931, 0x093a, 0x094a, 0x0963, + 0x0968, 0x0984, 0x0988, 0x0992, 0x099d, 0x09a6, 0x09b4, 0x09c1, + 0x09c8, 0x09cd, 0x09d4, 0x09e6, 0x09ec, 0x09f3, 0x09fb, 0x0a02, + 0x0a09, 0x0a33, 0x0a40, 0x0a4b, 0x0a52, 0x0a5e, 0x0a7a, 0x0a99, + 0x0aa2, 0x0abc, 0x0ad9, 0x0ae0, 0x0ae7, 0x0af7, 0x0afc, 0x0b02, // Entry 100 - 13F - 0x0b1b, 0x0b21, 0x0b29, 0x0b3f, 0x0b44, 0x0b4b, 0x0b5c, 0x0b6c, - 0x0b74, 0x0b87, 0x0b99, 0x0baa, 0x0bc0, 0x0bd0, 0x0be0, 0x0bea, - 0x0c02, 0x0c0b, 0x0c19, 0x0c24, 0x0c33, 0x0c46, 0x0c51, 0x0c5c, - 0x0c72, 0x0c7c, 0x0c80, 0x0c8d, 0x0c9d, 0x0ca3, 0x0cb4, 0x0cc9, - 0x0cdb, 0x0ceb, -} // Size: 604 bytes - -var frCARegionStr string = "" + // Size: 145 bytes - "BélarusÎles Cocos (Keeling)MicronésieSaint-Martin (France)MyanmarSaint-M" + - "artin (Pays-Bas)TokelauSaint-Vincent-et-les GrenadinesEurope orientale" - -var frCARegionIdx = []uint16{ // 287 elements + 0x0b08, 0x0b0f, 0x0b1d, 0x0b23, 0x0b2b, 0x0b41, 0x0b46, 0x0b4d, + 0x0b5e, 0x0b6e, 0x0b76, 0x0b89, 0x0b9b, 0x0bac, 0x0bc2, 0x0bd2, + 0x0be2, 0x0bec, 0x0c04, 0x0c0d, 0x0c1b, 0x0c26, 0x0c35, 0x0c48, + 0x0c53, 0x0c5e, 0x0c74, 0x0c7e, 0x0c82, 0x0c8f, 0x0c9f, 0x0ca5, + 0x0cb6, 0x0ccb, 0x0cdd, 0x0ced, +} // Size: 608 bytes + +const frCARegionStr string = "" + // Size: 492 bytes + "île de l’Ascensionîles d’ÅlandBruneiîle BouvetBélarusîles Cocos (Keeling" + + ")îles Cookîle Christmasîles MalouinesMicronésieîles Féroéîles Heard et M" + + "cDonaldîles Canariesîle de ManSaint-Martin (France)MyanmarMariannes du N" + + "ordîle Norfolkîles PitcairnOcéanie lointainela RéunionSaint-Martin (Pays" + + "-Bas)TokelauTimor-Lesteîles mineures éloignées des États-UnisCité du Vat" + + "icanSaint-Vincent-et-les Grenadinesîles Vierges britanniquesîles Vierges" + + " américainesEurope orientale" + +var frCARegionIdx = []uint16{ // 289 elements // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, + 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002b, 0x002b, 0x002b, + 0x002b, 0x002b, 0x002b, 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, + 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x005d, 0x005d, + 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, // Entry 40 - 7F - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x007a, 0x0085, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, + 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x00a9, 0x00a9, + 0x00a9, 0x00a9, 0x00a9, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, // Entry 80 - BF - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, + 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00d7, 0x00d7, 0x00d7, 0x00d7, + 0x00d7, 0x00de, 0x00de, 0x00de, 0x00ef, 0x00ef, 0x00ef, 0x00ef, + 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, + 0x00ef, 0x00ef, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x00fb, + 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x0109, 0x0109, 0x0109, 0x0109, // Entry C0 - FF - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, + 0x0109, 0x0109, 0x0109, 0x011b, 0x0126, 0x0126, 0x0126, 0x0126, + 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, + 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, + 0x0126, 0x0126, 0x0126, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, + 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x0144, 0x014f, 0x014f, + 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, + 0x014f, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0189, 0x01a8, + 0x01a8, 0x01c2, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, // Entry 100 - 13F - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0091, -} // Size: 598 bytes + 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, + 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, + 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, + 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, + 0x01ec, +} // Size: 602 bytes -var guRegionStr string = "" + // Size: 8654 bytes +const guRegionStr string = "" + // Size: 8687 bytes "એસેન્શન આઇલેન્ડઍંડોરાયુનાઇટેડ આરબ અમીરાતઅફઘાનિસ્તાનએન્ટીગુઆ અને બર્મુડાઍ" + "ંગ્વિલાઅલ્બેનિયાઆર્મેનિયાઅંગોલાએન્ટાર્કટિકાઆર્જેન્ટીનાઅમેરીકન સમોઆઑસ્ટ" + "્રિયાઑસ્ટ્રેલિયાઅરુબાએલેંડ ટાપુઓઅઝરબૈજાનબોસ્નિયા અને હર્ઝેગોવિનાબાર્બા" + @@ -40000,43 +45095,43 @@ var guRegionStr string = "" + // Size: 8654 bytes "ેત આઇલેન્ડબોત્સ્વાનાબેલારુસબેલીઝકેનેડાકોકોઝ (કીલીંગ) આઇલેન્ડ્સકોંગો - " + "કિંશાસાસેન્ટ્રલ આફ્રિકન રીપબ્લિકકોંગો - બ્રાઝાવિલેસ્વિટ્ઝર્લૅન્ડકોટ ડી" + " આઇવરીકુક આઇલેન્ડ્સચિલીકૅમરૂનચીનકોલમ્બિયાક્લિપરટન આઇલેન્ડકોસ્ટા રિકાક્યુ" + - "બાકૅપ વર્ડેકુરાકાઓક્રિસમસ આઇલેન્ડસાયપ્રસચેક રીપબ્લિકજર્મનીડિએગો ગારસિઆ" + - "જીબૌટીડેનમાર્કડોમિનિકાડોમિનિકન રીપબ્લિકઅલ્જીરિયાસ્યુટા અને મેલિલાએક્વા" + - "ડોરએસ્ટોનિયાઇજિપ્તપશ્ચિમી સહારાએરિટ્રિયાસ્પેનઇથિઓપિયાયુરોપિયન સંઘફિનલે" + - "ન્ડફીજીફૉકલેન્ડ ટાપુઓમાઇક્રોનેશિયાફૅરો ટાપુઓફ્રાંસગેબનયુનાઇટેડ કિંગડમગ" + - "્રેનેડાજ્યોર્જીયાફ્રેંચ ગયાનાગ્વેર્નસેઘાનાજીબ્રાલ્ટરગ્રીનલેન્ડગેમ્બિયા" + - "ગિનીગ્વાડેલોપઇક્વેટોરિયલ ગિનીગ્રીસદક્ષિણ જ્યોર્જીયા અને દક્ષિણ સેન્ડવિ" + - "ચ આઇલેન્ડ્સગ્વાટેમાલાગ્વામગિની-બિસાઉગયાનાહોંગકોંગ SAR ચીનહર્ડ અને મેકડ" + - "ોનાલ્ડ આઇલેન્ડ્સહોન્ડુરસક્રોએશિયાહૈતિહંગેરીકૅનેરી ટાપુઓઇન્ડોનેશિયાઆયર્" + - "લેન્ડઇઝરાઇલઆઈલ ઓફ મૅનભારતબ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરીઇરાકઈરાનઆઇસલેન્ડઇટ" + - "ાલીજર્સીજમૈકાજોર્ડનજાપાનકેન્યાકિર્ગિઝ્સ્તાનકંબોડિયાકિરિબાટીકોમોરસસેન્ટ" + - " કિટ્સ અને નેવિસઉત્તર કોરિયાદક્ષિણ કોરિયાકુવૈતકેમેન ટાપુઓકઝાકિસ્તાનલાઓસલ" + - "ેબનોનસેન્ટ લુસિયાલૈચટેંસ્ટેઇનશ્રીલંકાલાઇબેરિયાલેસોથોલિથુઆનિયાલક્ઝમબર્ગ" + - "લાત્વિયાલિબિયામોરોક્કોમોનાકોમોલડોવામૉન્ટેંનેગ્રોસેન્ટ માર્ટિનમેડાગાસ્ક" + - "રમાર્શલ આઇલેન્ડ્સમેસેડોનિયામાલીમ્યાંમાર (બર્મા)મંગોલિયામકાઉ SAR ચીનઉત્" + - "તરીય મારિયાના આઇલેન્ડ્સમાર્ટીનીકમૌરિટાનિયામોંટસેરાતમાલ્ટામોરિશિયસમાલદિ" + - "વ્સમાલાવીમેક્સિકોમલેશિયામોઝામ્બિકનામિબિયાન્યુ સેલેડોનિયાનાઇજરનોરફૉક ટા" + - "પુનાઇજીરીયાનિકારાગુઆનેધરલેન્ડનૉર્વેનેપાળનૌરુનીયુન્યુઝીલેન્ડઓમાનપનામાપે" + - "રુફ્રેંચ પોલિનેશિયાપાપુઆ ન્યૂ ગિનીફિલીપાઇન્સપાકિસ્તાનપોલેંડસેન્ટ પિયર " + - "અને મીક્વેલનપીટકૈર્ન આઇલેન્ડ્સપ્યુઅર્ટો રિકોપેલેસ્ટિનિયન ટેરિટરીપોર્ટુ" + - "ગલપલાઉપેરાગ્વેકતારઆઉટલાઈન્ગ ઓશનિયારીયુનિયનરોમાનિયાસર્બિયારશિયારવાંડાસા" + - "ઉદી અરેબિયાસોલોમન આઇલેન્ડ્સસેશેલ્સસુદાનસ્વીડનસિંગાપુરસેન્ટ હેલેનાસ્લોવ" + - "ેનિયાસ્વાલબર્ડ અને જેન મેયનસ્લોવેકિયાસીએરા લેઓનસૅન મેરિનોસેનેગલસોમાલિય" + - "ાસુરીનામદક્ષિણ સુદાનસાઓ ટૉમ અને પ્રિંસિપેએલ સેલ્વાડોરસિંટ માર્ટેનસીરિય" + - "ાસ્વાઝિલેન્ડત્રિસ્તાન દા કુન્હાતુર્ક્સ અને કાઇકોસ ટાપુઓચાડફ્રેંચ સદર્ન" + - " ટેરિટરીઝટોગોથાઇલેંડતાજીકિસ્તાનટોકેલાઉતિમોર-લેસ્તેતુર્કમેનિસ્તાનટ્યુનિશિ" + + "બાકૅપ વર્ડેક્યુરાસાઓક્રિસમસ આઇલેન્ડસાયપ્રસચેકીયાજર્મનીડિએગો ગારસિઆજીબૌ" + + "ટીડેનમાર્કડોમિનિકાડોમિનિકન રીપબ્લિકઅલ્જીરિયાસ્યુટા અને મેલિલાએક્વાડોરએ" + + "સ્ટોનિયાઇજિપ્તપશ્ચિમી સહારાએરિટ્રિયાસ્પેનઇથિઓપિયાયુરોપિયન સંઘફિનલેન્ડફ" + + "ીજીફૉકલેન્ડ ટાપુઓમાઇક્રોનેશિયાફૅરો ટાપુઓફ્રાંસગેબનયુનાઇટેડ કિંગડમગ્રેન" + + "ેડાજ્યોર્જીયાફ્રેંચ ગયાનાગ્વેર્નસેઘાનાજીબ્રાલ્ટરગ્રીનલેન્ડગેમ્બિયાગિની" + + "ગ્વાડેલોપઇક્વેટોરિયલ ગિનીગ્રીસદક્ષિણ જ્યોર્જીયા અને દક્ષિણ સેન્ડવિચ આઇ" + + "લેન્ડ્સગ્વાટેમાલાગ્વામગિની-બિસાઉગયાનાહોંગકોંગ SAR ચીનહર્ડ અને મેકડોનાલ" + + "્ડ આઇલેન્ડ્સહોન્ડુરસક્રોએશિયાહૈતિહંગેરીકૅનેરી ટાપુઓઇન્ડોનેશિયાઆયર્લેન્" + + "ડઇઝરાઇલઆઈલ ઓફ મૅનભારતબ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરીઇરાકઈરાનઆઇસલેન્ડઇટાલીજ" + + "ર્સીજમૈકાજોર્ડનજાપાનકેન્યાકિર્ગિઝ્સ્તાનકંબોડિયાકિરિબાટીકોમોરસસેન્ટ કિટ" + + "્સ અને નેવિસઉત્તર કોરિયાદક્ષિણ કોરિયાકુવૈતકેમેન ટાપુઓકઝાકિસ્તાનલાઓસલેબ" + + "નોનસેન્ટ લુસિયાલૈચટેંસ્ટેઇનશ્રીલંકાલાઇબેરિયાલેસોથોલિથુઆનિયાલક્ઝમબર્ગલા" + + "ત્વિયાલિબિયામોરોક્કોમોનાકોમોલડોવામૉન્ટેંનેગ્રોસેન્ટ માર્ટિનમેડાગાસ્કરમ" + + "ાર્શલ આઇલેન્ડ્સમેસેડોનિયામાલીમ્યાંમાર (બર્મા)મંગોલિયામકાઉ SAR ચીનઉત્તર" + + "ીય મારિયાના આઇલેન્ડ્સમાર્ટીનીકમૌરિટાનિયામોંટસેરાતમાલ્ટામોરિશિયસમાલદિવ્" + + "સમાલાવીમેક્સિકોમલેશિયામોઝામ્બિકનામિબિયાન્યુ સેલેડોનિયાનાઇજરનોરફૉક ટાપુ" + + "નાઇજીરીયાનિકારાગુઆનેધરલેન્ડનૉર્વેનેપાળનૌરુનીયુન્યુઝીલેન્ડઓમાનપનામાપેરુ" + + "ફ્રેંચ પોલિનેશિયાપાપુઆ ન્યૂ ગિનીફિલીપાઇન્સપાકિસ્તાનપોલેંડસેન્ટ પિયર અન" + + "ે મીક્વેલનપીટકૈર્ન આઇલેન્ડ્સપ્યુઅર્ટો રિકોપેલેસ્ટિનિયન ટેરિટરીપોર્ટુગલ" + + "પલાઉપેરાગ્વેકતારઆઉટલાઈન્ગ ઓશનિયારીયુનિયનરોમાનિયાસર્બિયારશિયારવાંડાસાઉદ" + + "ી અરેબિયાસોલોમન આઇલેન્ડ્સસેશેલ્સસુદાનસ્વીડનસિંગાપુરસેન્ટ હેલેનાસ્લોવેન" + + "િયાસ્વાલબર્ડ અને જેન મેયનસ્લોવેકિયાસીએરા લેઓનસૅન મેરિનોસેનેગલસોમાલિયાસ" + + "ુરીનામદક્ષિણ સુદાનસાઓ ટૉમ અને પ્રિંસિપેએલ સેલ્વાડોરસિંટ માર્ટેનસીરિયાસ" + + "્વાઝિલેન્ડત્રિસ્તાન દા કુન્હાતુર્ક્સ અને કાઇકોસ ટાપુઓચાડફ્રેંચ સદર્ન ટ" + + "ેરિટરીઝટોગોથાઇલેંડતાજીકિસ્તાનટોકેલાઉતિમોર-લેસ્તેતુર્કમેનિસ્તાનટ્યુનિશિ" + "યાટોંગાતુર્કીટ્રિનીદાદ અને ટોબેગોતુવાલુતાઇવાનતાંઝાનિયાયુક્રેનયુગાંડાસં" + - "યુક્ત રાજ્ય આઉટલાઇંગ આયલેન્ડ્સસંયુકત રાજ્ય અમેરિકાઉરુગ્વેઉઝ્બેકિસ્તાનવ" + - "ેટિકન સિટીસેન્ટ વિન્સેટ અને ગ્રેનેડીન્સવેનેઝુએલાબ્રિટિશ વર્જિન ટાપુઓયુ" + - ".એસ. વર્જિન ટાપુઓવિયેતનામવાનુઆતુવેલીસ અને ફ્યુટુનાસમોઆકોસોવોયેમેનમેયોટદક" + - "્ષિણ આફ્રિકાઝામ્બિયાઝિમ્બાબ્વેઅજ્ઞાત પ્રદેશવિશ્વઆફ્રિકાઉત્તર અમેરિકાદક" + - "્ષિણ અમેરિકાઓશનિયાપશ્ચિમી આફ્રિકામધ્ય અમેરિકાપૂર્વીય આફ્રિકાઉત્તરીય આફ" + - "્રિકામધ્ય આફ્રિકાસધર્ન આફ્રિકાઅમેરિકાઉત્તરીય અમેરિકાકેરિબિયનપૂર્વીય એશ" + - "િયાસર્ધન એશિયાદક્ષિણપૂર્વ એશિયાસધર્ન યુરોપઓસ્ટ્રેલેશિયામેલાનેશિયામાઈક્" + - "રોનેશિયન ક્ષેત્રપોલિનેશિયાએશિયામધ્ય એશિયાપશ્ચિમી એશિયાયુરોપપૂર્વીય યુર" + - "ોપઉત્તરીય યુરોપપશ્ચિમ યુરોપલેટિન અમેરિકા" - -var guRegionIdx = []uint16{ // 290 elements + "યુક્ત રાજ્ય આઉટલાઇંગ આયલેન્ડ્સસંયુક્ત રાષ્ટ્રસંયુકત રાજ્ય અમેરિકાઉરુગ્" + + "વેઉઝ્બેકિસ્તાનવેટિકન સિટીસેન્ટ વિન્સેટ અને ગ્રેનેડીન્સવેનેઝુએલાબ્રિટિશ" + + " વર્જિન ટાપુઓયુ.એસ. વર્જિન ટાપુઓવિયેતનામવાનુઆતુવેલીસ અને ફ્યુટુનાસમોઆકોસ" + + "ોવોયેમેનમેયોટદક્ષિણ આફ્રિકાઝામ્બિયાઝિમ્બાબ્વેઅજ્ઞાત પ્રદેશવિશ્વઆફ્રિકા" + + "ઉત્તર અમેરિકાદક્ષિણ અમેરિકાઓશનિયાપશ્ચિમી આફ્રિકામધ્ય અમેરિકાપૂર્વીય આફ" + + "્રિકાઉત્તરીય આફ્રિકામધ્ય આફ્રિકાસધર્ન આફ્રિકાઅમેરિકાઉત્તરીય અમેરિકાકેર" + + "િબિયનપૂર્વીય એશિયાસર્ધન એશિયાદક્ષિણપૂર્વ એશિયાસધર્ન યુરોપઓસ્ટ્રેલેશિયા" + + "મેલાનેશિયામાઈક્રોનેશિયન ક્ષેત્રપોલિનેશિયાએશિયામધ્ય એશિયાપશ્ચિમી એશિયાય" + + "ુરોપપૂર્વીય યુરોપઉત્તરીય યુરોપપશ્ચિમ યુરોપલેટિન અમેરિકા" + +var guRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x002b, 0x003d, 0x0072, 0x0093, 0x00cb, 0x00e3, 0x00fe, 0x0119, 0x012b, 0x014f, 0x0170, 0x0192, 0x01ad, 0x01ce, 0x01dd, @@ -40044,128 +45139,128 @@ var guRegionIdx = []uint16{ // 290 elements 0x02fb, 0x0310, 0x031f, 0x034d, 0x0362, 0x0377, 0x038f, 0x03c9, 0x03de, 0x03f0, 0x03ff, 0x0424, 0x0442, 0x0457, 0x0466, 0x0478, 0x04b8, 0x04df, 0x0526, 0x0556, 0x0580, 0x05a0, 0x05c5, 0x05d1, - 0x05e3, 0x05ec, 0x0607, 0x0635, 0x0654, 0x0666, 0x067f, 0x0694, - 0x06bf, 0x06d4, 0x06f6, 0x0708, 0x072a, 0x073c, 0x0754, 0x076c, + 0x05e3, 0x05ec, 0x0607, 0x0635, 0x0654, 0x0666, 0x067f, 0x069a, + 0x06c5, 0x06da, 0x06ec, 0x06fe, 0x0720, 0x0732, 0x074a, 0x0762, // Entry 40 - 7F - 0x079d, 0x07b8, 0x07e7, 0x07ff, 0x081a, 0x082c, 0x0851, 0x086c, - 0x087b, 0x0893, 0x08b5, 0x08cd, 0x08d9, 0x0901, 0x0928, 0x0944, - 0x0956, 0x0962, 0x098d, 0x09a5, 0x09c3, 0x09e5, 0x0a00, 0x0a0c, - 0x0a2a, 0x0a48, 0x0a60, 0x0a6c, 0x0a87, 0x0ab5, 0x0ac4, 0x0b47, - 0x0b65, 0x0b74, 0x0b90, 0x0b9f, 0x0bc5, 0x0c16, 0x0c2e, 0x0c49, - 0x0c55, 0x0c67, 0x0c89, 0x0caa, 0x0cc5, 0x0cd7, 0x0cf1, 0x0cfd, - 0x0d48, 0x0d54, 0x0d60, 0x0d78, 0x0d87, 0x0d96, 0x0da5, 0x0db7, - 0x0dc6, 0x0dd8, 0x0dff, 0x0e17, 0x0e2f, 0x0e41, 0x0e7a, 0x0e9c, + 0x0793, 0x07ae, 0x07dd, 0x07f5, 0x0810, 0x0822, 0x0847, 0x0862, + 0x0871, 0x0889, 0x08ab, 0x08ab, 0x08c3, 0x08cf, 0x08f7, 0x091e, + 0x093a, 0x094c, 0x0958, 0x0983, 0x099b, 0x09b9, 0x09db, 0x09f6, + 0x0a02, 0x0a20, 0x0a3e, 0x0a56, 0x0a62, 0x0a7d, 0x0aab, 0x0aba, + 0x0b3d, 0x0b5b, 0x0b6a, 0x0b86, 0x0b95, 0x0bbb, 0x0c0c, 0x0c24, + 0x0c3f, 0x0c4b, 0x0c5d, 0x0c7f, 0x0ca0, 0x0cbb, 0x0ccd, 0x0ce7, + 0x0cf3, 0x0d3e, 0x0d4a, 0x0d56, 0x0d6e, 0x0d7d, 0x0d8c, 0x0d9b, + 0x0dad, 0x0dbc, 0x0dce, 0x0df5, 0x0e0d, 0x0e25, 0x0e37, 0x0e70, // Entry 80 - BF - 0x0ec1, 0x0ed0, 0x0eef, 0x0f0d, 0x0f19, 0x0f2b, 0x0f4d, 0x0f71, - 0x0f89, 0x0fa4, 0x0fb6, 0x0fd1, 0x0fec, 0x1004, 0x1016, 0x102e, - 0x1040, 0x1055, 0x107c, 0x10a1, 0x10bf, 0x10ed, 0x110b, 0x1117, - 0x1141, 0x1159, 0x1173, 0x11bd, 0x11d8, 0x11f6, 0x1211, 0x1223, - 0x123b, 0x1253, 0x1265, 0x127d, 0x1292, 0x12ad, 0x12c5, 0x12f0, - 0x12ff, 0x131e, 0x1339, 0x1354, 0x136f, 0x1381, 0x1390, 0x139c, - 0x13a8, 0x13c9, 0x13d5, 0x13e4, 0x13f0, 0x1421, 0x144a, 0x1468, - 0x1483, 0x1495, 0x14d4, 0x1508, 0x1530, 0x156a, 0x1582, 0x158e, + 0x0e92, 0x0eb7, 0x0ec6, 0x0ee5, 0x0f03, 0x0f0f, 0x0f21, 0x0f43, + 0x0f67, 0x0f7f, 0x0f9a, 0x0fac, 0x0fc7, 0x0fe2, 0x0ffa, 0x100c, + 0x1024, 0x1036, 0x104b, 0x1072, 0x1097, 0x10b5, 0x10e3, 0x1101, + 0x110d, 0x1137, 0x114f, 0x1169, 0x11b3, 0x11ce, 0x11ec, 0x1207, + 0x1219, 0x1231, 0x1249, 0x125b, 0x1273, 0x1288, 0x12a3, 0x12bb, + 0x12e6, 0x12f5, 0x1314, 0x132f, 0x134a, 0x1365, 0x1377, 0x1386, + 0x1392, 0x139e, 0x13bf, 0x13cb, 0x13da, 0x13e6, 0x1417, 0x1440, + 0x145e, 0x1479, 0x148b, 0x14ca, 0x14fe, 0x1526, 0x1560, 0x1578, // Entry C0 - FF - 0x15a6, 0x15b2, 0x15e0, 0x15f8, 0x1610, 0x1625, 0x1634, 0x1646, - 0x166b, 0x1699, 0x16ae, 0x16bd, 0x16cf, 0x16e7, 0x1709, 0x1727, - 0x1763, 0x1781, 0x179d, 0x17b9, 0x17cb, 0x17e3, 0x17f8, 0x181a, - 0x1853, 0x1875, 0x1897, 0x18a9, 0x18ca, 0x18ff, 0x1941, 0x194a, - 0x1985, 0x1991, 0x19a6, 0x19c7, 0x19dc, 0x19fe, 0x1a28, 0x1a46, - 0x1a55, 0x1a67, 0x1a9f, 0x1ab1, 0x1ac3, 0x1ade, 0x1af3, 0x1b08, - 0x1b62, 0x1b9a, 0x1baf, 0x1bd3, 0x1bf2, 0x1c43, 0x1c5e, 0x1c96, - 0x1cc7, 0x1cdf, 0x1cf4, 0x1d26, 0x1d32, 0x1d44, 0x1d53, 0x1d62, + 0x1584, 0x159c, 0x15a8, 0x15d6, 0x15ee, 0x1606, 0x161b, 0x162a, + 0x163c, 0x1661, 0x168f, 0x16a4, 0x16b3, 0x16c5, 0x16dd, 0x16ff, + 0x171d, 0x1759, 0x1777, 0x1793, 0x17af, 0x17c1, 0x17d9, 0x17ee, + 0x1810, 0x1849, 0x186b, 0x188d, 0x189f, 0x18c0, 0x18f5, 0x1937, + 0x1940, 0x197b, 0x1987, 0x199c, 0x19bd, 0x19d2, 0x19f4, 0x1a1e, + 0x1a3c, 0x1a4b, 0x1a5d, 0x1a95, 0x1aa7, 0x1ab9, 0x1ad4, 0x1ae9, + 0x1afe, 0x1b58, 0x1b83, 0x1bbb, 0x1bd0, 0x1bf4, 0x1c13, 0x1c64, + 0x1c7f, 0x1cb7, 0x1ce8, 0x1d00, 0x1d15, 0x1d47, 0x1d53, 0x1d65, // Entry 100 - 13F - 0x1d8a, 0x1da2, 0x1dc0, 0x1de5, 0x1df4, 0x1e09, 0x1e2e, 0x1e56, - 0x1e68, 0x1e93, 0x1eb5, 0x1ee0, 0x1f0b, 0x1f2d, 0x1f52, 0x1f67, - 0x1f92, 0x1faa, 0x1fcf, 0x1fee, 0x201f, 0x203e, 0x2065, 0x2083, - 0x20c0, 0x20de, 0x20ed, 0x2109, 0x212e, 0x213d, 0x2162, 0x2187, - 0x21a9, 0x21ce, -} // Size: 604 bytes - -var heRegionStr string = "" + // Size: 4992 bytes + 0x1d74, 0x1d83, 0x1dab, 0x1dc3, 0x1de1, 0x1e06, 0x1e15, 0x1e2a, + 0x1e4f, 0x1e77, 0x1e89, 0x1eb4, 0x1ed6, 0x1f01, 0x1f2c, 0x1f4e, + 0x1f73, 0x1f88, 0x1fb3, 0x1fcb, 0x1ff0, 0x200f, 0x2040, 0x205f, + 0x2086, 0x20a4, 0x20e1, 0x20ff, 0x210e, 0x212a, 0x214f, 0x215e, + 0x2183, 0x21a8, 0x21ca, 0x21ef, +} // Size: 608 bytes + +const heRegionStr string = "" + // Size: 5025 bytes "האי אסנשןאנדורהאיחוד האמירויות הערביותאפגניסטןאנטיגואה וברבודהאנגילהאלבנ" + "יהארמניהאנגולהאנטארקטיקהארגנטינהסמואה האמריקניתאוסטריהאוסטרליהארובהאיי " + "אולנדאזרבייג׳ןבוסניה והרצגובינהברבדוסבנגלדשבלגיהבורקינה פאסובולגריהבחרי" + "יןבורונדיבניןסנט ברתולומיאוברמודהברונייבוליביההאיים הקריביים ההולנדייםב" + - "רזילאיי בהאמהבהוטןאיי בובהבוטסוואנהבלארוסבליזקנדהאיי קוקוס (קילינג)קונג" + - "ו - קינשאסההרפובליקה של מרכז אפריקהקונגו - ברזאוילשווייץחוף השנהבאיי קו" + - "קצ׳ילהקמרוןסיןקולומביההאי קליפרטוןקוסטה ריקהקובהכף ורדהקוראסאואי חג המו" + - "לדקפריסיןצ׳כיהגרמניהדייגו גרסיהג׳יבוטידנמרקדומיניקההרפובליקה הדומיניקני" + - "תאלג׳יריהסאוטה ומלייהאקוודוראסטוניהמצריםסהרה המערביתאריתריאהספרדאתיופיה" + - "האיחוד האירופיפינלנדפיג׳יאיי פוקלנדמיקרונזיהאיי פארוצרפתגאבוןהממלכה המא" + - "וחדתגרנדהגאורגיהגיאנה הצרפתיתגרנסיגאנהגיברלטרגרינלנדגמביהגיניאהגוואדלופ" + - "גיניאה המשווניתיווןג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומייםגואטמלהגואםגי" + - "ניאה-ביסאוגיאנההונג קונג - מחוז מנהלי מיוחד של סיןהאי הרד ואיי מקדונלדה" + - "ונדורסקרואטיההאיטיהונגריההאיים הקנרייםאינדונזיהאירלנדישראלהאי מאןהודוהט" + - "ריטוריה הבריטית באוקיינוס ההודיעיראקאיראןאיסלנדאיטליהג׳רסיג׳מייקהירדןיפ" + - "ןקניהקירגיזסטןקמבודיהקיריבאטיקומורוסנט קיטס ונוויסקוריאה הצפוניתקוריאה " + - "הדרומיתכוויתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהליכטנשטייןסרי לנקהליבריהלס" + - "וטוליטאלוקסמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסן מרטןמדגסקראיי מרשלמ" + - "קדוניהמאלימיאנמאר (בורמה)\u200eמונגוליהמקאו - מחוז מנהלי מיוחד של סיןאי" + - "י מריאנה הצפונייםמרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיים המלדיבייםמלא" + - "ווימקסיקומלזיהמוזמביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקניגריהניקרגואההו" + - "לנדנורווגיהנפאלנאורוניווהניו זילנדעומאןפנמהפרופולינזיה הצרפתיתפפואה גינ" + - "יאה החדשהפיליפיניםפקיסטןפוליןסנט פייר ומיקלוןאיי פיטקרןפוארטו ריקוהשטחי" + - "ם הפלסטינייםפורטוגלפאלאופרגוואיקטאראוקיאניה חיצוניתראוניוןרומניהסרביהרו" + - "סיהרואנדהערב הסעודיתאיי שלמהאיי סיישלסודןשוודיהסינגפורסנט הלנהסלובניהסו" + - "ולבארד ויאן מאייןסלובקיהסיירה לאונהסן מרינוסנגלסומליהסורינםדרום סודןסאו" + - " טומה ופרינסיפהאל סלבדורסנט מארטןסוריהסווזילנדטריסטן דה קונהאיי טורקס וק" + - "איקוסצ׳אדטריטוריות דרומיות של צרפתטוגותאילנדטג׳יקיסטןטוקלאוטימור לסטהטו" + - "רקמניסטןתוניסיהטונגהטורקיהטרינידד וטובגוטובלוטייוואןטנזניהאוקראינהאוגנד" + - "האיים לחוף ארצות הבריתארצות הבריתאורוגוואיאוזבקיסטןהוותיקןסנט וינסנט וה" + - "גרנדיניםונצואלהאיי הבתולה הבריטייםאיי הבתולה של ארצות הבריתוייטנאםונואט" + - "ואיי ווליס ופוטונהסמואהקוסובותימןמאיוטדרום אפריקהזמביהזימבאבווהאזור לא " + - "ידועהעולםאפריקהצפון אמריקהדרום אמריקהאוקיאניהמערב אפריקהמרכז אמריקהמזרח" + - " אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפריקהאמריקהאמריקה הצפוניתהאיים ה" + - "קריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופהאוסטרלאסיהמלנזיהאזור " + - "מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח אירופהצפון אירופהמערב" + - " אירופהאמריקה הלטינית" - -var heRegionIdx = []uint16{ // 290 elements + "רזילאיי בהאמהבהוטןאיי בובהבוצוואנהבלארוסבליזקנדהאיי קוקוס (קילינג)קונגו" + + " - קינשאסההרפובליקה של מרכז אפריקהקונגו - ברזאוילשווייץחוף השנהבאיי קוקצ" + + "׳ילהקמרוןסיןקולומביההאי קליפרטוןקוסטה ריקהקובהכף ורדהקוראסאוהאי כריסטמס" + + "קפריסיןצ׳כיהגרמניהדייגו גרסיהג׳יבוטידנמרקדומיניקההרפובליקה הדומיניקניתא" + + "לג׳יריהסאוטה ומלייהאקוודוראסטוניהמצריםסהרה המערביתאריתריאהספרדאתיופיההא" + + "יחוד האירופיפינלנדפיג׳יאיי פוקלנדמיקרונזיהאיי פארוצרפתגבוןהממלכה המאוחד" + + "תגרנדהגאורגיהגיאנה הצרפתיתגרנסיגאנהגיברלטרגרינלנדגמביהגינאהגוואדלופגינא" + + "ה המשווניתיווןג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומייםגואטמלהגואםגינאה ב" + + "יסאוגיאנההונג קונג (מחוז מנהלי מיוחד של סין)איי הרד ומקדונלדהונדורסקרוא" + + "טיההאיטיהונגריההאיים הקנרייםאינדונזיהאירלנדישראלהאי מאןהודוהטריטוריה הב" + + "ריטית באוקיינוס ההודיעיראקאיראןאיסלנדאיטליהג׳רסיג׳מייקהירדןיפןקניהקירגי" + + "זסטןקמבודיהקיריבאטיקומורוסנט קיטס ונוויסקוריאה הצפוניתקוריאה הדרומיתכוו" + + "יתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהליכטנשטייןסרי לנקהליבריהלסוטוליטאלוק" + + "סמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסן מרטןמדגסקראיי מרשלמקדוניהמאלי" + + "מיאנמר (בורמה)מונגוליהמקאו (מחוז מנהלי מיוחד של סין)איי מריאנה הצפוניים" + + "מרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיים המלדיבייםמלאווימקסיקומלזיהמוז" + + "מביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקניגריהניקרגואההולנדנורווגיהנפאלנא" + + "ורוניווהניו זילנדעומאןפנמהפרופולינזיה הצרפתיתפפואה גינאה החדשההפיליפיני" + + "םפקיסטןפוליןסנט פייר ומיקלוןאיי פיטקרןפוארטו ריקוהשטחים הפלסטינייםפורטו" + + "גלפלאופרגוואיקטארטריטוריות באוקיאניהראוניוןרומניהסרביהרוסיהרואנדהערב הס" + + "עודיתאיי שלמהאיי סיישלסודןשוודיהסינגפורסנט הלנהסלובניהסוולבארד ויאן מאי" + + "יןסלובקיהסיירה לאונהסן מרינוסנגלסומליהסורינםדרום סודןסאו טומה ופרינסיפה" + + "אל סלבדורסנט מארטןסוריהסווזילנדטריסטן דה קונהאיי טורקס וקאיקוסצ׳אדהטריט" + + "וריות הדרומיות של צרפתטוגותאילנדטג׳יקיסטןטוקלאוטימור לסטהטורקמניסטןטוני" + + "סיהטונגהטורקיהטרינידד וטובגוטובאלוטייוואןטנזניהאוקראינהאוגנדההאיים המרו" + + "חקים הקטנים של ארה״בהאומות המאוחדותארצות הבריתאורוגוואיאוזבקיסטןהוותיקן" + + "סנט וינסנט והגרנדיניםונצואלהאיי הבתולה הבריטייםאיי הבתולה של ארצות הברי" + + "תוייטנאםונואטואיי ווליס ופוטונהסמואהקוסובותימןמאיוטדרום אפריקהזמביהזימב" + + "בואהאזור לא ידועהעולםאפריקהצפון אמריקהדרום אמריקהאוקיאניהמערב אפריקהמרכ" + + "ז אמריקהמזרח אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפריקהאמריקהאמריקה ה" + + "צפוניתהאיים הקריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופהאוסטרלאס" + + "יהמלנזיהאזור מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח אירופהצפ" + + "ון אירופהמערב אירופהאמריקה הלטינית" + +var heRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0011, 0x001d, 0x0049, 0x0059, 0x0078, 0x0084, 0x0090, 0x009c, 0x00a8, 0x00bc, 0x00cc, 0x00e9, 0x00f7, 0x0107, 0x0111, 0x0122, 0x0134, 0x0155, 0x0161, 0x016d, 0x0177, 0x018e, 0x019c, 0x01a8, 0x01b6, 0x01be, 0x01d9, 0x01e5, 0x01f1, 0x01ff, 0x022d, - 0x0237, 0x0248, 0x0252, 0x0261, 0x0273, 0x027f, 0x0287, 0x028f, - 0x02af, 0x02ca, 0x02f7, 0x0312, 0x031e, 0x032f, 0x033c, 0x0346, - 0x0350, 0x0356, 0x0366, 0x037d, 0x0390, 0x0398, 0x03a5, 0x03b3, - 0x03c7, 0x03d5, 0x03df, 0x03eb, 0x0400, 0x040e, 0x0418, 0x0428, + 0x0237, 0x0248, 0x0252, 0x0261, 0x0271, 0x027d, 0x0285, 0x028d, + 0x02ad, 0x02c8, 0x02f5, 0x0310, 0x031c, 0x032d, 0x033a, 0x0344, + 0x034e, 0x0354, 0x0364, 0x037b, 0x038e, 0x0396, 0x03a3, 0x03b1, + 0x03c6, 0x03d4, 0x03de, 0x03ea, 0x03ff, 0x040d, 0x0417, 0x0427, // Entry 40 - 7F - 0x0451, 0x0461, 0x0478, 0x0486, 0x0494, 0x049e, 0x04b5, 0x04c5, - 0x04cd, 0x04db, 0x04f6, 0x0502, 0x050c, 0x051f, 0x0531, 0x0540, - 0x0548, 0x0552, 0x056d, 0x0577, 0x0585, 0x059e, 0x05a8, 0x05b0, - 0x05be, 0x05cc, 0x05d6, 0x05e2, 0x05f2, 0x060f, 0x0617, 0x0661, - 0x066f, 0x0677, 0x068e, 0x0698, 0x06d6, 0x06fb, 0x0709, 0x0717, - 0x0721, 0x072f, 0x0748, 0x075a, 0x0766, 0x0770, 0x077d, 0x0785, - 0x07c4, 0x07ce, 0x07d8, 0x07e4, 0x07f0, 0x07fa, 0x0808, 0x0810, - 0x0816, 0x081e, 0x0830, 0x083e, 0x084e, 0x085a, 0x0876, 0x0891, + 0x0450, 0x0460, 0x0477, 0x0485, 0x0493, 0x049d, 0x04b4, 0x04c4, + 0x04cc, 0x04da, 0x04f5, 0x04f5, 0x0501, 0x050b, 0x051e, 0x0530, + 0x053f, 0x0547, 0x054f, 0x056a, 0x0574, 0x0582, 0x059b, 0x05a5, + 0x05ad, 0x05bb, 0x05c9, 0x05d3, 0x05dd, 0x05ed, 0x0608, 0x0610, + 0x065a, 0x0668, 0x0670, 0x0685, 0x068f, 0x06cd, 0x06eb, 0x06f9, + 0x0707, 0x0711, 0x071f, 0x0738, 0x074a, 0x0756, 0x0760, 0x076d, + 0x0775, 0x07b4, 0x07be, 0x07c8, 0x07d4, 0x07e0, 0x07ea, 0x07f8, + 0x0800, 0x0806, 0x080e, 0x0820, 0x082e, 0x083e, 0x084a, 0x0866, // Entry 80 - BF - 0x08ac, 0x08b6, 0x08c7, 0x08d3, 0x08db, 0x08e5, 0x08f6, 0x090a, - 0x0919, 0x0925, 0x092f, 0x0937, 0x0949, 0x0953, 0x0959, 0x0963, - 0x096d, 0x097b, 0x098b, 0x0998, 0x09a4, 0x09b3, 0x09c1, 0x09c9, - 0x09e7, 0x09f7, 0x0a2c, 0x0a50, 0x0a5e, 0x0a70, 0x0a7e, 0x0a86, - 0x0a98, 0x0ab5, 0x0ac1, 0x0acd, 0x0ad7, 0x0ae5, 0x0af1, 0x0b0a, - 0x0b14, 0x0b27, 0x0b33, 0x0b43, 0x0b4d, 0x0b5d, 0x0b65, 0x0b6f, - 0x0b79, 0x0b8a, 0x0b94, 0x0b9c, 0x0ba2, 0x0bc1, 0x0be3, 0x0bf5, - 0x0c01, 0x0c0b, 0x0c29, 0x0c3c, 0x0c51, 0x0c72, 0x0c80, 0x0c8a, + 0x0881, 0x089c, 0x08a6, 0x08b7, 0x08c3, 0x08cb, 0x08d5, 0x08e6, + 0x08fa, 0x0909, 0x0915, 0x091f, 0x0927, 0x0939, 0x0943, 0x0949, + 0x0953, 0x095d, 0x096b, 0x097b, 0x0988, 0x0994, 0x09a3, 0x09b1, + 0x09b9, 0x09d2, 0x09e2, 0x0a17, 0x0a3b, 0x0a49, 0x0a5b, 0x0a69, + 0x0a71, 0x0a83, 0x0aa0, 0x0aac, 0x0ab8, 0x0ac2, 0x0ad0, 0x0adc, + 0x0af5, 0x0aff, 0x0b12, 0x0b1e, 0x0b2e, 0x0b38, 0x0b48, 0x0b50, + 0x0b5a, 0x0b64, 0x0b75, 0x0b7f, 0x0b87, 0x0b8d, 0x0bac, 0x0bcc, + 0x0be0, 0x0bec, 0x0bf6, 0x0c14, 0x0c27, 0x0c3c, 0x0c5d, 0x0c6b, // Entry C0 - FF - 0x0c98, 0x0ca0, 0x0cbf, 0x0ccd, 0x0cd9, 0x0ce3, 0x0ced, 0x0cf9, - 0x0d0e, 0x0d1d, 0x0d2e, 0x0d36, 0x0d42, 0x0d50, 0x0d5f, 0x0d6d, - 0x0d91, 0x0d9f, 0x0db4, 0x0dc3, 0x0dcb, 0x0dd7, 0x0de3, 0x0df4, - 0x0e16, 0x0e27, 0x0e38, 0x0e42, 0x0e52, 0x0e6c, 0x0e8c, 0x0e94, - 0x0ec3, 0x0ecb, 0x0ed7, 0x0ee9, 0x0ef5, 0x0f08, 0x0f1c, 0x0f2a, - 0x0f34, 0x0f40, 0x0f5b, 0x0f65, 0x0f73, 0x0f7f, 0x0f8f, 0x0f9b, - 0x0fc2, 0x0fd7, 0x0fe9, 0x0ffb, 0x1009, 0x1031, 0x103f, 0x1063, - 0x1091, 0x109f, 0x10ab, 0x10cb, 0x10d5, 0x10e1, 0x10e9, 0x10f3, + 0x0c73, 0x0c81, 0x0c89, 0x0cae, 0x0cbc, 0x0cc8, 0x0cd2, 0x0cdc, + 0x0ce8, 0x0cfd, 0x0d0c, 0x0d1d, 0x0d25, 0x0d31, 0x0d3f, 0x0d4e, + 0x0d5c, 0x0d80, 0x0d8e, 0x0da3, 0x0db2, 0x0dba, 0x0dc6, 0x0dd2, + 0x0de3, 0x0e05, 0x0e16, 0x0e27, 0x0e31, 0x0e41, 0x0e5b, 0x0e7b, + 0x0e83, 0x0eb6, 0x0ebe, 0x0eca, 0x0edc, 0x0ee8, 0x0efb, 0x0f0f, + 0x0f1d, 0x0f27, 0x0f33, 0x0f4e, 0x0f5a, 0x0f68, 0x0f74, 0x0f84, + 0x0f90, 0x0fc8, 0x0fe5, 0x0ffa, 0x100c, 0x101e, 0x102c, 0x1054, + 0x1062, 0x1086, 0x10b4, 0x10c2, 0x10ce, 0x10ee, 0x10f8, 0x1104, // Entry 100 - 13F - 0x1108, 0x1112, 0x1124, 0x113a, 0x1144, 0x1150, 0x1165, 0x117a, - 0x118a, 0x119f, 0x11b4, 0x11c9, 0x11de, 0x11f3, 0x1211, 0x121d, - 0x1238, 0x1253, 0x1264, 0x1275, 0x1290, 0x12a5, 0x12b9, 0x12c5, - 0x12e0, 0x12f0, 0x12f8, 0x1309, 0x131a, 0x1326, 0x133b, 0x1350, - 0x1365, 0x1380, -} // Size: 604 bytes - -var hiRegionStr string = "" + // Size: 8717 bytes + 0x110c, 0x1116, 0x112b, 0x1135, 0x1145, 0x115b, 0x1165, 0x1171, + 0x1186, 0x119b, 0x11ab, 0x11c0, 0x11d5, 0x11ea, 0x11ff, 0x1214, + 0x1232, 0x123e, 0x1259, 0x1274, 0x1285, 0x1296, 0x12b1, 0x12c6, + 0x12da, 0x12e6, 0x1301, 0x1311, 0x1319, 0x132a, 0x133b, 0x1347, + 0x135c, 0x1371, 0x1386, 0x13a1, +} // Size: 608 bytes + +const hiRegionStr string = "" + // Size: 8753 bytes "असेंशन द्वीपएंडोरासंयुक्त अरब अमीरातअफ़गानिस्तानएंटिगुआ और बरबुडाएंग्विल" + "ाअल्बानियाआर्मेनियाअंगोलाअंटार्कटिकाअर्जेंटीनाअमेरिकी समोआऑस्ट्रियाऑस्" + "ट्रेलियाअरूबाएलैंड द्वीपसमूहअज़रबैजानबोस्निया और हर्ज़ेगोविनाबारबाडोसब" + @@ -40174,43 +45269,44 @@ var hiRegionStr string = "" + // Size: 8717 bytes "पबोत्स्वानाबेलारूसबेलीज़कनाडाकोकोस (कीलिंग) द्वीपसमूहकांगो - किंशासामध" + "्य अफ़्रीकी गणराज्यकांगो – ब्राज़ाविलस्विट्ज़रलैंडकोट डी आइवरकुक द्वीप" + "समूहचिलीकैमरूनचीनकोलंबियाक्लिपर्टन द्वीपकोस्टारिकाक्यूबाकेप वर्डक्यूरा" + - "साओक्रिसमस द्वीपसाइप्रसचेक गणराज्यजर्मनीडिएगो गार्सियाजिबूतीडेनमार्कडो" + - "मिनिकाडोमिनिकन गणराज्यअल्जीरियासेउटा और मेलिलाइक्वाडोरएस्टोनियामिस्रपश" + - "्चिमी सहाराइरिट्रियास्पेनइथियोपियायूरोपीय संघफ़िनलैंडफ़िजीफ़ॉकलैंड द्व" + - "ीपसमूहमाइक्रोनेशियाफ़ेरो द्वीपसमूहफ़्रांसगैबॉनयूनाइटेड किंगडमग्रेनाडाज" + - "ॉर्जियाफ़्रेंच गयानागर्नसीघानाजिब्राल्टरग्रीनलैंडगाम्बियागिनीग्वाडेलूप" + - "इक्वेटोरियल गिनीयूनानदक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीपसमूहग्वाटे" + - "मालागुआमगिनी-बिसाउगयानाहाँग काँग (चीन विशेष प्रशासनिक क्षेत्र)हर्ड द्व" + - "ीप और मैकडोनॉल्ड द्वीपसमूहहोंडूरासक्रोएशियाहैतीहंगरीकैनेरी द्वीपसमूहइं" + - "डोनेशियाआयरलैंडइसराइलआइल ऑफ़ मैनभारतब्रिटिश हिंद महासागरीय क्षेत्रइराक" + - "ईरानआइसलैंडइटलीजर्सीजमैकाजॉर्डनजापानकेन्याकिर्गिज़स्तानकंबोडियाकिरिबात" + - "ीकोमोरोससेंट किट्स और नेविसउत्तर कोरियादक्षिण कोरियाकुवैतकेमैन द्वीपसम" + - "ूहकज़ाखस्तानलाओसलेबनानसेंट लूसियालिचेंस्टीनश्रीलंकालाइबेरियालेसोथोलिथु" + - "आनियालग्ज़मबर्गलातवियालीबियामोरक्कोमोनाकोमॉल्डोवामोंटेनेग्रोसेंट मार्ट" + - "िनमेडागास्करमार्शल द्वीपसमूहमैसिडोनियामालीम्यांमार (बर्मा)मंगोलियामकाऊ" + - " (विशेष प्रशासनिक क्षेत्र चीन)उत्तरी मारियाना द्वीपसमूहमार्टीनिकमॉरिटानि" + - "यामोंटसेरातमाल्टामॉरिशसमालदीवमलावीमैक्सिकोमलेशियामोज़ांबिकनामीबियान्यू" + - " कैलेडोनियानाइजरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनीदरलैंडनॉर्वेनेपालनाउरुन" + - "ीयून्यूज़ीलैंडओमानपनामापेरूफ़्रेंच पोलिनेशियापापुआ न्यू गिनीफ़िलिपींसप" + - "ाकिस्तानपोलैंडसेंट पिएरे और मिक्वेलानपिटकैर्न द्वीपसमूहपोर्टो रिकोफ़िल" + - "िस्तीनी क्षेत्रपुर्तगालपलाऊपेराग्वेक़तरआउटलाइंग ओशिनियारियूनियनरोमानिय" + - "ासर्बियारूसरवांडासऊदी अरबसोलोमन द्वीपसमूहसेशेल्ससूडानस्वीडनसिंगापुरसें" + - "ट हेलेनास्लोवेनियास्वालबार्ड और जान मायेनस्लोवाकियासिएरा लियोनसैन मेरी" + - "नोसेनेगलसोमालियासूरीनामदक्षिण सूडानसाओ टोम और प्रिंसिपेअल सल्वाडोरसिंट" + - " मार्टिनसीरियास्वाज़ीलैंडत्रिस्टान डा कुनातुर्क और कैकोज़ द्वीपसमूहचाडफ़" + - "्रांसीसी दक्षिणी क्षेत्रटोगोथाईलैंडताजिकिस्तानतोकेलाउतिमोर-लेस्ततुर्कम" + - "ेनिस्तानट्यूनीशियाटोंगातुर्कीत्रिनिदाद और टोबैगोतुवालूताइवानतंज़ानियाय" + - "ूक्रेनयुगांडायू.एस. आउटलाइंग द्वीपसमूहसंयुक्त राज्यउरूग्वेउज़्बेकिस्ता" + - "नवेटिकन सिटीसेंट विंसेंट और ग्रेनाडाइंसवेनेज़ुएलाब्रिटिश वर्जिन द्वीपस" + - "मूहयू.एस. वर्जिन द्वीपसमूहवियतनामवनुआतूवालिस और फ़्यूचूनासमोआकोसोवोयमन" + - "मायोतेदक्षिण अफ़्रीकाज़ाम्बियाज़िम्बाब्वेअज्ञात क्षेत्रविश्वअफ़्रीकाउत" + - "्तर अमेरिकादक्षिण अमेरिकाओशिआनियापश्चिमी अफ़्रीकामध्य अमेरिकापूर्वी अफ" + - "़्रीकाउत्तरी अफ़्रीकामध्य अफ़्रीकादक्षिणी अफ़्रीकाअमेरिकाज़उत्तरी अमेर" + - "िकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-पूर्व एशियादक्षिणी यूरोपऑस्" + - "ट्रेलेशियामेलानेशियामाइक्रोनेशियाई क्षेत्रपोलीनेशियाएशियामध्य एशियापश्" + - "चिमी एशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यूरोपलैटिन अमेरिका" - -var hiRegionIdx = []uint16{ // 290 elements + "साओक्रिसमस द्वीपसाइप्रसचेकियाजर्मनीडिएगो गार्सियाजिबूतीडेनमार्कडोमिनिक" + + "ाडोमिनिकन गणराज्यअल्जीरियासेउटा और मेलिलाइक्वाडोरएस्टोनियामिस्रपश्चिमी" + + " सहाराइरिट्रियास्पेनइथियोपियायूरोपीय संघफ़िनलैंडफ़िजीफ़ॉकलैंड द्वीपसमूहम" + + "ाइक्रोनेशियाफ़ेरो द्वीपसमूहफ़्रांसगैबॉनयूनाइटेड किंगडमग्रेनाडाजॉर्जिया" + + "फ़्रेंच गयानागर्नसीघानाजिब्राल्टरग्रीनलैंडगाम्बियागिनीग्वाडेलूपइक्वेटो" + + "रियल गिनीयूनानदक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीपसमूहग्वाटेमालागुआ" + + "मगिनी-बिसाउगयानाहाँग काँग (चीन विशेष प्रशासनिक क्षेत्र)हर्ड द्वीप और म" + + "ैकडोनॉल्ड द्वीपसमूहहोंडूरासक्रोएशियाहैतीहंगरीकैनेरी द्वीपसमूहइंडोनेशिय" + + "ाआयरलैंडइज़राइलआइल ऑफ़ मैनभारतब्रिटिश हिंद महासागरीय क्षेत्रइराकईरानआइ" + + "सलैंडइटलीजर्सीजमैकाजॉर्डनजापानकेन्याकिर्गिज़स्तानकंबोडियाकिरिबातीकोमोर" + + "ोससेंट किट्स और नेविसउत्तर कोरियादक्षिण कोरियाकुवैतकेमैन द्वीपसमूहकज़ा" + + "खस्तानलाओसलेबनानसेंट लूसियालिचेंस्टीनश्रीलंकालाइबेरियालेसोथोलिथुआनियाल" + + "ग्ज़मबर्गलातवियालीबियामोरक्कोमोनाकोमॉल्डोवामोंटेनेग्रोसेंट मार्टिनमेडा" + + "गास्करमार्शल द्वीपसमूहमैसिडोनियामालीम्यांमार (बर्मा)मंगोलियामकाऊ (विशे" + + "ष प्रशासनिक क्षेत्र चीन)उत्तरी मारियाना द्वीपसमूहमार्टीनिकमॉरिटानियामो" + + "ंटसेरातमाल्टामॉरिशसमालदीवमलावीमैक्सिकोमलेशियामोज़ांबिकनामीबियान्यू कैल" + + "ेडोनियानाइजरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनीदरलैंडनॉर्वेनेपालनाउरुनीय" + + "ून्यूज़ीलैंडओमानपनामापेरूफ़्रेंच पोलिनेशियापापुआ न्यू गिनीफ़िलिपींसपाक" + + "िस्तानपोलैंडसेंट पिएरे और मिक्वेलानपिटकैर्न द्वीपसमूहपोर्टो रिकोफ़िलिस" + + "्तीनी क्षेत्रपुर्तगालपलाऊपेराग्वेक़तरआउटलाइंग ओशिनियारियूनियनरोमानियास" + + "र्बियारूसरवांडासऊदी अरबसोलोमन द्वीपसमूहसेशेल्ससूडानस्वीडनसिंगापुरसेंट " + + "हेलेनास्लोवेनियास्वालबार्ड और जान मायेनस्लोवाकियासिएरा लियोनसैन मेरीनो" + + "सेनेगलसोमालियासूरीनामदक्षिण सूडानसाओ टोम और प्रिंसिपेअल सल्वाडोरसिंट म" + + "ार्टिनसीरियास्वाज़ीलैंडत्रिस्टान डा कुनातुर्क और कैकोज़ द्वीपसमूहचाडफ़" + + "्रांसीसी दक्षिणी क्षेत्रटोगोथाईलैंडताज़िकिस्तानतोकेलाउतिमोर-लेस्ततुर्क" + + "मेनिस्तानट्यूनीशियाटोंगातुर्कीत्रिनिदाद और टोबैगोतुवालूताइवानतंज़ानिया" + + "यूक्रेनयुगांडायू.एस. आउटलाइंग द्वीपसमूहसंयुक्त राष्ट्रसंयुक्त राज्यउरू" + + "ग्वेउज़्बेकिस्तानवेटिकन सिटीसेंट विंसेंट और ग्रेनाडाइंसवेनेज़ुएलाब्रिट" + + "िश वर्जिन द्वीपसमूहयू.एस. वर्जिन द्वीपसमूहवियतनामवनुआतूवालिस और फ़्यूच" + + "ूनासमोआकोसोवोयमनमायोतेदक्षिण अफ़्रीकाज़ाम्बियाज़िम्बाब्वेअज्ञात क्षेत्" + + "रविश्वअफ़्रीकाउत्तर अमेरिकादक्षिण अमेरिकाओशिआनियापश्चिमी अफ़्रीकामध्य " + + "अमेरिकापूर्वी अफ़्रीकाउत्तरी अफ़्रीकामध्य अफ़्रीकादक्षिणी अफ़्रीकाअमेर" + + "िकाज़उत्तरी अमेरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-पूर्व एशिया" + + "दक्षिणी यूरोपऑस्ट्रेलेशियामेलानेशियामाइक्रोनेशियाई क्षेत्रपोलीनेशियाएश" + + "ियामध्य एशियापश्चिमी एशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यूरोपलै" + + "टिन अमेरिका" + +var hiRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0022, 0x0034, 0x0066, 0x008a, 0x00b9, 0x00d1, 0x00ec, 0x0107, 0x0119, 0x013a, 0x0158, 0x017a, 0x0195, 0x01b6, 0x01c5, @@ -40219,407 +45315,407 @@ var hiRegionIdx = []uint16{ // 290 elements 0x03c9, 0x03db, 0x03ea, 0x0409, 0x0427, 0x043c, 0x044e, 0x045d, 0x049d, 0x04c4, 0x04ff, 0x0531, 0x0558, 0x0575, 0x059a, 0x05a6, 0x05b8, 0x05c1, 0x05d9, 0x0604, 0x0622, 0x0634, 0x064a, 0x0665, - 0x068a, 0x069f, 0x06be, 0x06d0, 0x06f8, 0x070a, 0x0722, 0x073a, + 0x068a, 0x069f, 0x06b1, 0x06c3, 0x06eb, 0x06fd, 0x0715, 0x072d, // Entry 40 - 7F - 0x0768, 0x0783, 0x07ac, 0x07c4, 0x07df, 0x07ee, 0x0813, 0x082e, - 0x083d, 0x0858, 0x0877, 0x088f, 0x089e, 0x08d2, 0x08f9, 0x0924, - 0x0939, 0x0948, 0x0973, 0x098b, 0x09a3, 0x09c8, 0x09da, 0x09e6, - 0x0a04, 0x0a1f, 0x0a37, 0x0a43, 0x0a5e, 0x0a8c, 0x0a9b, 0x0b12, - 0x0b30, 0x0b3c, 0x0b58, 0x0b67, 0x0bce, 0x0c2c, 0x0c44, 0x0c5f, - 0x0c6b, 0x0c7a, 0x0ca8, 0x0cc6, 0x0cdb, 0x0ced, 0x0d0a, 0x0d16, - 0x0d6a, 0x0d76, 0x0d82, 0x0d97, 0x0da3, 0x0db2, 0x0dc1, 0x0dd3, - 0x0de2, 0x0df4, 0x0e1b, 0x0e33, 0x0e4b, 0x0e60, 0x0e93, 0x0eb5, + 0x075b, 0x0776, 0x079f, 0x07b7, 0x07d2, 0x07e1, 0x0806, 0x0821, + 0x0830, 0x084b, 0x086a, 0x086a, 0x0882, 0x0891, 0x08c5, 0x08ec, + 0x0917, 0x092c, 0x093b, 0x0966, 0x097e, 0x0996, 0x09bb, 0x09cd, + 0x09d9, 0x09f7, 0x0a12, 0x0a2a, 0x0a36, 0x0a51, 0x0a7f, 0x0a8e, + 0x0b05, 0x0b23, 0x0b2f, 0x0b4b, 0x0b5a, 0x0bc1, 0x0c1f, 0x0c37, + 0x0c52, 0x0c5e, 0x0c6d, 0x0c9b, 0x0cb9, 0x0cce, 0x0ce3, 0x0d00, + 0x0d0c, 0x0d60, 0x0d6c, 0x0d78, 0x0d8d, 0x0d99, 0x0da8, 0x0db7, + 0x0dc9, 0x0dd8, 0x0dea, 0x0e11, 0x0e29, 0x0e41, 0x0e56, 0x0e89, // Entry 80 - BF - 0x0eda, 0x0ee9, 0x0f14, 0x0f32, 0x0f3e, 0x0f50, 0x0f6f, 0x0f8d, - 0x0fa5, 0x0fc0, 0x0fd2, 0x0fed, 0x100b, 0x1020, 0x1032, 0x1047, - 0x1059, 0x1071, 0x1092, 0x10b4, 0x10d2, 0x1100, 0x111e, 0x112a, - 0x1154, 0x116c, 0x11c6, 0x120d, 0x1228, 0x1246, 0x1261, 0x1273, - 0x1285, 0x1297, 0x12a6, 0x12be, 0x12d3, 0x12ee, 0x1306, 0x1331, - 0x1340, 0x1365, 0x1380, 0x139b, 0x13b3, 0x13c5, 0x13d4, 0x13e3, - 0x13ef, 0x1410, 0x141c, 0x142b, 0x1437, 0x146b, 0x1494, 0x14af, - 0x14ca, 0x14dc, 0x151b, 0x154f, 0x156e, 0x15a5, 0x15bd, 0x15c9, + 0x0eab, 0x0ed0, 0x0edf, 0x0f0a, 0x0f28, 0x0f34, 0x0f46, 0x0f65, + 0x0f83, 0x0f9b, 0x0fb6, 0x0fc8, 0x0fe3, 0x1001, 0x1016, 0x1028, + 0x103d, 0x104f, 0x1067, 0x1088, 0x10aa, 0x10c8, 0x10f6, 0x1114, + 0x1120, 0x114a, 0x1162, 0x11bc, 0x1203, 0x121e, 0x123c, 0x1257, + 0x1269, 0x127b, 0x128d, 0x129c, 0x12b4, 0x12c9, 0x12e4, 0x12fc, + 0x1327, 0x1336, 0x135b, 0x1376, 0x1391, 0x13a9, 0x13bb, 0x13ca, + 0x13d9, 0x13e5, 0x1406, 0x1412, 0x1421, 0x142d, 0x1461, 0x148a, + 0x14a5, 0x14c0, 0x14d2, 0x1511, 0x1545, 0x1564, 0x159b, 0x15b3, // Entry C0 - FF - 0x15e1, 0x15ed, 0x161b, 0x1633, 0x164b, 0x1660, 0x1669, 0x167b, - 0x1691, 0x16bf, 0x16d4, 0x16e3, 0x16f5, 0x170d, 0x172c, 0x174a, - 0x1789, 0x17a7, 0x17c6, 0x17e2, 0x17f4, 0x180c, 0x1821, 0x1843, - 0x1879, 0x1898, 0x18ba, 0x18cc, 0x18ed, 0x191c, 0x1961, 0x196a, - 0x19b4, 0x19c0, 0x19d5, 0x19f6, 0x1a0b, 0x1a2a, 0x1a54, 0x1a72, - 0x1a81, 0x1a93, 0x1ac8, 0x1ada, 0x1aec, 0x1b07, 0x1b1c, 0x1b31, - 0x1b74, 0x1b99, 0x1bae, 0x1bd5, 0x1bf4, 0x1c3f, 0x1c5d, 0x1ca1, - 0x1cde, 0x1cf3, 0x1d05, 0x1d37, 0x1d43, 0x1d55, 0x1d5e, 0x1d70, + 0x15bf, 0x15d7, 0x15e3, 0x1611, 0x1629, 0x1641, 0x1656, 0x165f, + 0x1671, 0x1687, 0x16b5, 0x16ca, 0x16d9, 0x16eb, 0x1703, 0x1722, + 0x1740, 0x177f, 0x179d, 0x17bc, 0x17d8, 0x17ea, 0x1802, 0x1817, + 0x1839, 0x186f, 0x188e, 0x18b0, 0x18c2, 0x18e3, 0x1912, 0x1957, + 0x1960, 0x19aa, 0x19b6, 0x19cb, 0x19ef, 0x1a04, 0x1a23, 0x1a4d, + 0x1a6b, 0x1a7a, 0x1a8c, 0x1ac1, 0x1ad3, 0x1ae5, 0x1b00, 0x1b15, + 0x1b2a, 0x1b6d, 0x1b98, 0x1bbd, 0x1bd2, 0x1bf9, 0x1c18, 0x1c63, + 0x1c81, 0x1cc5, 0x1d02, 0x1d17, 0x1d29, 0x1d5b, 0x1d67, 0x1d79, // Entry 100 - 13F - 0x1d9b, 0x1db6, 0x1dd7, 0x1dff, 0x1e0e, 0x1e26, 0x1e4b, 0x1e73, - 0x1e8b, 0x1eb9, 0x1edb, 0x1f06, 0x1f31, 0x1f56, 0x1f84, 0x1f9f, - 0x1fc7, 0x1fdf, 0x2001, 0x2026, 0x2058, 0x207d, 0x20a4, 0x20c2, - 0x2102, 0x2120, 0x212f, 0x214b, 0x2170, 0x217f, 0x21a1, 0x21c3, - 0x21e8, 0x220d, -} // Size: 604 bytes - -var hrRegionStr string = "" + // Size: 3096 bytes - "Otok AscensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigua i Barbud" + + 0x1d82, 0x1d94, 0x1dbf, 0x1dda, 0x1dfb, 0x1e23, 0x1e32, 0x1e4a, + 0x1e6f, 0x1e97, 0x1eaf, 0x1edd, 0x1eff, 0x1f2a, 0x1f55, 0x1f7a, + 0x1fa8, 0x1fc3, 0x1feb, 0x2003, 0x2025, 0x204a, 0x207c, 0x20a1, + 0x20c8, 0x20e6, 0x2126, 0x2144, 0x2153, 0x216f, 0x2194, 0x21a3, + 0x21c5, 0x21e7, 0x220c, 0x2231, +} // Size: 608 bytes + +const hrRegionStr string = "" + // Size: 3132 bytes + "Otok AscensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barbud" + "aAngvilaAlbanijaArmenijaAngolaAntarktikaArgentinaAmerička SamoaAustrijaA" + - "ustralijaArubaOtoci AlandAzerbajdžanBosna i HercegovinaBarbadosBangladeš" + - "BelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti BartolomejBermudaBru" + - "nejBolivijaKaripski otoci NizozemskeBrazilBahamiButanOtok BouvetBocvanaB" + - "jelorusijaBelizeKanadaKokosovi (Keeling) OtociKongo - KinshasaSrednjoafr" + - "ička RepublikaKongo - BrazzavilleŠvicarskaObala BjelokostiCookovi OtociČ" + - "ileKamerunKinaKolumbijaOtok ClippertonKostarikaKubaZelenortska Republika" + - "CuraçaoBožićni OtokCiparČeška RepublikaNjemačkaDiego GarciaDžibutiDanska" + - "DominikaDominikanska RepublikaAlžirCeuta i MelillaEkvadorEstonijaEgipatZ" + - "apadna SaharaEritrejaŠpanjolskaEtiopijaEuropska unijaFinskaFidžiFalkland" + - "ski OtociMikronezijaFarski OtociFrancuskaGabonVelika BritanijaGrenadaGru" + - "zijaFrancuska GvajanaGuernseyGanaGibraltarGrenlandGambijaGvinejaGuadalup" + - "aEkvatorska GvinejaGrčkaJužna Georgija i Južni Sendvički OtociGvatemalaG" + - "uamGvineja BisauGvajanaHong Kong PUP KinaOtoci Heard i McDonaldHondurasH" + - "rvatskaHaitiMađarskaKanarski OtociIndonezijaIrskaIzraelOtok ManIndijaBri" + - "tanski Indijskooceanski TeritorijIrakIranIslandItalijaJerseyJamajkaJorda" + - "nJapanKenijaKirgistanKambodžaKiribatiKomoriSveti Kristofor i NevisSjever" + - "na KorejaJužna KorejaKuvajtKajmanski OtociKazahstanLaosLibanonSveta Luci" + - "jaLihtenštajnŠri LankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMo" + - "nakoMoldavijaCrna GoraSveti MartinMadagaskarMaršalovi OtociMakedonijaMal" + - "iMijanmar (Burma)MongolijaMakao PUP KinaSjeverni Marijanski OtociMartini" + - "queMauritanijaMontserratMaltaMauricijusMaldiviMalaviMeksikoMalezijaMozam" + - "bikNamibijaNova KaledonijaNigerOtok NorfolkNigerijaNikaragvaNizozemskaNo" + - "rveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska PolinezijaPapua N" + - "ova GvinejaFilipiniPakistanPoljskaSveti Petar i MikelonOtoci PitcairnPor" + - "torikoPalestinsko PodručjePortugalPalauParagvajKatarOstala oceanijaReuni" + - "onRumunjskaSrbijaRusijaRuandaSaudijska ArabijaSalomonski OtociSejšeliSud" + - "anŠvedskaSingapurSveta HelenaSlovenijaSvalbard i Jan MayenSlovačkaSijera" + - " LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSveti Toma i PrincipSal" + - "vadorSint MaartenSirijaSvaziTristan da CunhaOtoci Turks i CaicosČadFranc" + - "uske Južne i Antarktičke ZemljeTogoTajlandTadžikistanTokelauIstočni Timo" + - "rTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkraj" + - "inaUgandaMali udaljeni otoci SAD-aSjedinjene Američke DržaveUrugvajUzbek" + - "istanSveta StolicaSveti Vincent i GrenadiniVenezuelaBritanski Djevičansk" + - "i OtociAmerički Djevičanski OtociVijetnamVanuatuWallis i FutunaSamoaKoso" + - "voJemenMayotteJužnoafrička RepublikaZambijaZimbabvenepoznato područjeSvi" + - "jetAfrikaSjevernoamerički kontinentJužna AmerikaOceanijaZapadna AfrikaCe" + - "ntralna AmerikaIstočna AfrikaSjeverna AfrikaSredišnja AfrikaJužna Afrika" + - "AmerikeSjeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna AzijaJu" + - "žna EuropaAustralazijaMelanezijaMikronezijsko područjePolinezijaAzijaSr" + - "ednja AzijaZapadna AzijaEuropaIstočna EuropaSjeverna EuropaZapadna Europ" + - "aLatinska Amerika" - -var hrRegionIdx = []uint16{ // 290 elements + "ustralijaArubaÅlandski otociAzerbajdžanBosna i HercegovinaBarbadosBangla" + + "dešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSaint BarthélemyBermudi" + + "BrunejBolivijaKaripski otoci NizozemskeBrazilBahamiButanOtok BouvetBocva" + + "naBjelorusijaBelizeKanadaKokosovi (Keelingovi) otociKongo - KinshasaSred" + + "njoafrička RepublikaKongo - BrazzavilleŠvicarskaObala BjelokostiCookovi " + + "OtociČileKamerunKinaKolumbijaOtok ClippertonKostarikaKubaZelenortska Rep" + + "ublikaCuraçaoBožićni otokCiparČeškaNjemačkaDiego GarciaDžibutiDanskaDomi" + + "nikaDominikanska RepublikaAlžirCeuta i MelillaEkvadorEstonijaEgipatZapad" + + "na SaharaEritrejaŠpanjolskaEtiopijaEuropska unijaFinskaFidžiFalklandski " + + "otociMikronezijaFarski otociFrancuskaGabonUjedinjeno KraljevstvoGrenadaG" + + "ruzijaFrancuska GijanaGuernseyGanaGibraltarGrenlandGambijaGvinejaGuadalu" + + "peEkvatorska GvinejaGrčkaJužna Georgija i Južni Sendvički OtociGvatemala" + + "GuamGvineja BisauGvajanaPUP Hong Kong KinaOtoci Heard i McDonaldHonduras" + + "HrvatskaHaitiMađarskaKanarski otociIndonezijaIrskaIzraelOtok ManIndijaBr" + + "itanski Indijskooceanski teritorijIrakIranIslandItalijaJerseyJamajkaJord" + + "anJapanKenijaKirgistanKambodžaKiribatiKomoriSveti Kristofor i NevisSjeve" + + "rna KorejaJužna KorejaKuvajtKajmanski otociKazahstanLaosLibanonSveta Luc" + + "ijaLihtenštajnŠri LankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoM" + + "onakoMoldavijaCrna GoraSaint MartinMadagaskarMaršalovi OtociMakedonijaMa" + + "liMjanmar (Burma)MongolijaPUP Makao KinaSjevernomarijanski otociMartiniq" + + "ueMauretanijaMontserratMaltaMauricijusMaldiviMalaviMeksikoMalezijaMozamb" + + "ikNamibijaNova KaledonijaNigerOtok NorfolkNigerijaNikaragvaNizozemskaNor" + + "veškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska PolinezijaPapua No" + + "va GvinejaFilipiniPakistanPoljskaSaint-Pierre-et-MiquelonOtoci PitcairnP" + + "ortorikoPalestinsko PodručjePortugalPalauParagvajKatarVanjska područja O" + + "ceanijeRéunionRumunjskaSrbijaRusijaRuandaSaudijska ArabijaSalomonski Oto" + + "ciSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard i Jan MayenSl" + + "ovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSveti Toma " + + "i PrincipSalvadorSint MaartenSirijaSvaziTristan da CunhaOtoci Turks i Ca" + + "icosČadFrancuski južni i antarktički teritorijiTogoTajlandTadžikistanTok" + + "elauTimor-LesteTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvan" + + "TanzanijaUkrajinaUgandaMali udaljeni otoci SAD-aUjedinjeni narodiSjedinj" + + "ene Američke DržaveUrugvajUzbekistanVatikanski GradSveti Vincent i Grena" + + "diniVenezuelaBritanski Djevičanski otociAmerički Djevičanski otociVijetn" + + "amVanuatuWallis i FutunaSamoaKosovoJemenMayotteJužnoafrička RepublikaZam" + + "bijaZimbabvenepoznato područjeSvijetAfrikaSjevernoamerički kontinentJužn" + + "a AmerikaOceanijaZapadna AfrikaCentralna AmerikaIstočna AfrikaSjeverna A" + + "frikaSredišnja AfrikaJužna AfrikaAmerikeSjeverna AmerikaKaribiIstočna Az" + + "ijaJužna AzijaJugoistočna AzijaJužna EuropaAustralazijaMelanezijaMikrone" + + "zijsko područjePolinezijaAzijaSrednja AzijaZapadna AzijaEuropaIstočna Eu" + + "ropaSjeverna EuropaZapadna EuropaLatinska Amerika" + +var hrRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000e, 0x0014, 0x002e, 0x0038, 0x0049, 0x0050, 0x0058, 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x0090, 0x009a, 0x009f, - 0x00aa, 0x00b6, 0x00c9, 0x00d1, 0x00db, 0x00e2, 0x00ee, 0x00f6, - 0x00fd, 0x0104, 0x0109, 0x0119, 0x0120, 0x0126, 0x012e, 0x0147, - 0x014d, 0x0153, 0x0158, 0x0163, 0x016a, 0x0175, 0x017b, 0x0181, - 0x0199, 0x01a9, 0x01c2, 0x01d5, 0x01df, 0x01ef, 0x01fc, 0x0201, - 0x0208, 0x020c, 0x0215, 0x0224, 0x022d, 0x0231, 0x0246, 0x024e, - 0x025c, 0x0261, 0x0272, 0x027b, 0x0287, 0x028f, 0x0295, 0x029d, + 0x00ae, 0x00ba, 0x00cd, 0x00d5, 0x00df, 0x00e6, 0x00f2, 0x00fa, + 0x0101, 0x0108, 0x010d, 0x011e, 0x0125, 0x012b, 0x0133, 0x014c, + 0x0152, 0x0158, 0x015d, 0x0168, 0x016f, 0x017a, 0x0180, 0x0186, + 0x01a1, 0x01b1, 0x01ca, 0x01dd, 0x01e7, 0x01f7, 0x0204, 0x0209, + 0x0210, 0x0214, 0x021d, 0x022c, 0x0235, 0x0239, 0x024e, 0x0256, + 0x0264, 0x0269, 0x0270, 0x0279, 0x0285, 0x028d, 0x0293, 0x029b, // Entry 40 - 7F - 0x02b3, 0x02b9, 0x02c8, 0x02cf, 0x02d7, 0x02dd, 0x02eb, 0x02f3, - 0x02fe, 0x0306, 0x0314, 0x031a, 0x0320, 0x0331, 0x033c, 0x0348, - 0x0351, 0x0356, 0x0366, 0x036d, 0x0374, 0x0385, 0x038d, 0x0391, - 0x039a, 0x03a2, 0x03a9, 0x03b0, 0x03b9, 0x03cb, 0x03d1, 0x03fa, - 0x0403, 0x0407, 0x0414, 0x041b, 0x042d, 0x0443, 0x044b, 0x0453, - 0x0458, 0x0461, 0x046f, 0x0479, 0x047e, 0x0484, 0x048c, 0x0492, - 0x04b6, 0x04ba, 0x04be, 0x04c4, 0x04cb, 0x04d1, 0x04d8, 0x04de, - 0x04e3, 0x04e9, 0x04f2, 0x04fb, 0x0503, 0x0509, 0x0520, 0x052f, + 0x02b1, 0x02b7, 0x02c6, 0x02cd, 0x02d5, 0x02db, 0x02e9, 0x02f1, + 0x02fc, 0x0304, 0x0312, 0x0312, 0x0318, 0x031e, 0x032f, 0x033a, + 0x0346, 0x034f, 0x0354, 0x036a, 0x0371, 0x0378, 0x0388, 0x0390, + 0x0394, 0x039d, 0x03a5, 0x03ac, 0x03b3, 0x03bc, 0x03ce, 0x03d4, + 0x03fd, 0x0406, 0x040a, 0x0417, 0x041e, 0x0430, 0x0446, 0x044e, + 0x0456, 0x045b, 0x0464, 0x0472, 0x047c, 0x0481, 0x0487, 0x048f, + 0x0495, 0x04b9, 0x04bd, 0x04c1, 0x04c7, 0x04ce, 0x04d4, 0x04db, + 0x04e1, 0x04e6, 0x04ec, 0x04f5, 0x04fe, 0x0506, 0x050c, 0x0523, // Entry 80 - BF - 0x053c, 0x0542, 0x0551, 0x055a, 0x055e, 0x0565, 0x0571, 0x057d, - 0x0587, 0x058f, 0x0595, 0x059a, 0x05a4, 0x05ab, 0x05b1, 0x05b7, - 0x05bd, 0x05c6, 0x05cf, 0x05db, 0x05e5, 0x05f5, 0x05ff, 0x0603, - 0x0613, 0x061c, 0x062a, 0x0643, 0x064d, 0x0658, 0x0662, 0x0667, - 0x0671, 0x0678, 0x067e, 0x0685, 0x068d, 0x0695, 0x069d, 0x06ac, - 0x06b1, 0x06bd, 0x06c5, 0x06ce, 0x06d8, 0x06e1, 0x06e6, 0x06eb, - 0x06ef, 0x06fa, 0x06fe, 0x0704, 0x0708, 0x071c, 0x072e, 0x0736, - 0x073e, 0x0745, 0x075a, 0x0768, 0x0771, 0x0786, 0x078e, 0x0793, + 0x0532, 0x053f, 0x0545, 0x0554, 0x055d, 0x0561, 0x0568, 0x0574, + 0x0580, 0x058a, 0x0592, 0x0598, 0x059d, 0x05a7, 0x05ae, 0x05b4, + 0x05ba, 0x05c0, 0x05c9, 0x05d2, 0x05de, 0x05e8, 0x05f8, 0x0602, + 0x0606, 0x0615, 0x061e, 0x062c, 0x0644, 0x064e, 0x0659, 0x0663, + 0x0668, 0x0672, 0x0679, 0x067f, 0x0686, 0x068e, 0x0696, 0x069e, + 0x06ad, 0x06b2, 0x06be, 0x06c6, 0x06cf, 0x06d9, 0x06e2, 0x06e7, + 0x06ec, 0x06f0, 0x06fb, 0x06ff, 0x0705, 0x0709, 0x071d, 0x072f, + 0x0737, 0x073f, 0x0746, 0x075e, 0x076c, 0x0775, 0x078a, 0x0792, // Entry C0 - FF - 0x079b, 0x07a0, 0x07af, 0x07b6, 0x07bf, 0x07c5, 0x07cb, 0x07d1, - 0x07e2, 0x07f2, 0x07fa, 0x07ff, 0x0807, 0x080f, 0x081b, 0x0824, - 0x0838, 0x0841, 0x084d, 0x0857, 0x085e, 0x0866, 0x086d, 0x0879, - 0x088d, 0x0895, 0x08a1, 0x08a7, 0x08ac, 0x08bc, 0x08d0, 0x08d4, - 0x08fa, 0x08fe, 0x0905, 0x0911, 0x0918, 0x0926, 0x0932, 0x0937, - 0x093c, 0x0942, 0x0953, 0x0959, 0x095f, 0x0968, 0x0970, 0x0976, - 0x098f, 0x09ab, 0x09b2, 0x09bc, 0x09c9, 0x09e2, 0x09eb, 0x0a07, - 0x0a23, 0x0a2b, 0x0a32, 0x0a41, 0x0a46, 0x0a4c, 0x0a51, 0x0a58, + 0x0797, 0x079f, 0x07a4, 0x07be, 0x07c6, 0x07cf, 0x07d5, 0x07db, + 0x07e1, 0x07f2, 0x0802, 0x080a, 0x080f, 0x0817, 0x081f, 0x082b, + 0x0834, 0x0848, 0x0851, 0x085d, 0x0867, 0x086e, 0x0876, 0x087d, + 0x0889, 0x089d, 0x08a5, 0x08b1, 0x08b7, 0x08bc, 0x08cc, 0x08e0, + 0x08e4, 0x090e, 0x0912, 0x0919, 0x0925, 0x092c, 0x0937, 0x0943, + 0x0948, 0x094d, 0x0953, 0x0964, 0x096a, 0x0970, 0x0979, 0x0981, + 0x0987, 0x09a0, 0x09b1, 0x09cd, 0x09d4, 0x09de, 0x09ed, 0x0a06, + 0x0a0f, 0x0a2b, 0x0a47, 0x0a4f, 0x0a56, 0x0a65, 0x0a6a, 0x0a70, // Entry 100 - 13F - 0x0a70, 0x0a77, 0x0a7f, 0x0a92, 0x0a98, 0x0a9e, 0x0ab9, 0x0ac7, - 0x0acf, 0x0add, 0x0aee, 0x0afd, 0x0b0c, 0x0b1d, 0x0b2a, 0x0b31, - 0x0b41, 0x0b47, 0x0b55, 0x0b61, 0x0b73, 0x0b80, 0x0b8c, 0x0b96, - 0x0bad, 0x0bb7, 0x0bbc, 0x0bc9, 0x0bd6, 0x0bdc, 0x0beb, 0x0bfa, - 0x0c08, 0x0c18, -} // Size: 604 bytes - -var huRegionStr string = "" + // Size: 3337 bytes + 0x0a75, 0x0a7c, 0x0a94, 0x0a9b, 0x0aa3, 0x0ab6, 0x0abc, 0x0ac2, + 0x0add, 0x0aeb, 0x0af3, 0x0b01, 0x0b12, 0x0b21, 0x0b30, 0x0b41, + 0x0b4e, 0x0b55, 0x0b65, 0x0b6b, 0x0b79, 0x0b85, 0x0b97, 0x0ba4, + 0x0bb0, 0x0bba, 0x0bd1, 0x0bdb, 0x0be0, 0x0bed, 0x0bfa, 0x0c00, + 0x0c0f, 0x0c1e, 0x0c2c, 0x0c3c, +} // Size: 608 bytes + +const huRegionStr string = "" + // Size: 3325 bytes "Ascension-szigetAndorraEgyesült Arab EmírségekAfganisztánAntigua és Barb" + "udaAnguillaAlbániaÖrményországAngolaAntarktiszArgentínaAmerikai SzamoaAu" + "sztriaAusztráliaArubaÅland-szigetekAzerbajdzsánBosznia-HercegovinaBarbad" + "osBangladesBelgiumBurkina FasoBulgáriaBahreinBurundiBeninSaint-Barthélem" + "yBermudaBruneiBolíviaHolland Karib-térségBrazíliaBahama-szigetekBhutánBo" + - "uvet-szigetBotswanaFehéroroszországBelizeKanadaKókusz-szigetekKongó - Ki" + - "nshasaKözép-afrikai KöztársaságKongó - BrazzavilleSvájcElefántcsontpartC" + - "ook-szigetekChileKamerunKínaKolumbiaClipperton-szigetCosta RicaKubaZöld-" + - "foki KöztársaságCuraçaoKarácsony-szigetCiprusCsehországNémetországDiego " + - "GarciaDzsibutiDániaDominikaDominikai KöztársaságAlgériaCeuta és MelillaE" + - "cuadorÉsztországEgyiptomNyugat-SzaharaEritreaSpanyolországEtiópiaEurópai" + - " UnióFinnországFidzsiFalkland-szigetekMikronéziaFeröer-szigetekFranciaor" + - "szágGabonEgyesült KirályságGrenadaGrúziaFrancia GuyanaGuernseyGhánaGibra" + - "ltárGrönlandGambiaGuineaGuadeloupeEgyenlítői-GuineaGörögországDéli-Georg" + - "ia és Déli-Sandwich-szigetekGuatemalaGuamBissau-GuineaGuyanaHongkong SAR" + - " KínaHeard-sziget és McDonald-szigetekHondurasHorvátországHaitiMagyarors" + - "zágKanári-szigetekIndonéziaÍrországIzraelMan-szigetIndiaBrit Indiai-óceá" + - "ni TerületIrakIránIzlandOlaszországJerseyJamaicaJordániaJapánKenyaKirgiz" + - "isztánKambodzsaKiribatiComore-szigetekSaint Kitts és NevisÉszak-KoreaDél" + - "-KoreaKuvaitKajmán-szigetekKazahsztánLaoszLibanonSanta LuciaLiechtenstei" + - "nSrí LankaLibériaLesothoLitvániaLuxemburgLettországLíbiaMarokkóMonacoMol" + - "dovaMontenegróSaint MartinMadagaszkárMarshall-szigetekMacedóniaMaliMianm" + - "ar (Burma)MongóliaMakaó SAR KínaÉszaki Mariana-szigetekMartiniqueMauritá" + - "niaMontserratMáltaMauritiusMaldív-szigetekMalawiMexikóMalajziaMozambikNa" + - "míbiaÚj-KaledóniaNigerNorfolk-szigetNigériaNicaraguaHollandiaNorvégiaNep" + - "álNauruNiueÚj-ZélandOmánPanamaPeruFrancia PolinéziaPápua Új-GuineaFülöp" + - "-szigetekPakisztánLengyelországSaint Pierre és MiquelonPitcairn-szigetek" + - "Puerto RicoPalesztin TerületPortugáliaPalauParaguayKatarKülső-ÓceániaReu" + - "nionRomániaSzerbiaOroszországRuandaSzaúd-ArábiaSalamon-szigetekSeychelle" + - "-szigetekSzudánSvédországSzingapúrSzent IlonaSzlovéniaSpitzbergák és Jan" + - " Mayen-szigetekSzlovákiaSierra LeoneSan MarinoSzenegálSzomáliaSurinameDé" + - "l-SzudánSao Tomé és PríncipeSalvadorSint MaartenSzíriaSzváziföldTristan " + - "da CunhaTurks- és Caicos-szigetekCsádFrancia Déli TerületekTogoThaiföldT" + - "ádzsikisztánTokelauKelet-TimorTürkmenisztánTunéziaTongaTörökországTrini" + - "dad és TobagoTuvaluTajvanTanzániaUkrajnaUgandaAmerikai Csendes-óceáni Sz" + - "igetekEgyesült ÁllamokUruguayÜzbegisztánVatikánSaint Vincent és a Grenad" + - "ine-szigetekVenezuelaBrit Virgin-szigetekAmerikai Virgin-szigetekVietnam" + - "VanuatuWallis- és Futuna-szigetekSzamoaKoszovóJemenMayotteDél-afrikai Kö" + - "ztársaságZambiaZimbabweIsmeretlen körzetVilágAfrikaÉszak-AmerikaDél-Amer" + - "ikaÓceániaNyugat-AfrikaKözép-AmerikaKelet-AfrikaÉszak-AfrikaKözép-Afrika" + - "Afrika déli részeAmerikaAmerika északi részeKarib-térségKelet-ÁzsiaDél-Á" + - "zsiaDélkelet-ÁzsiaDél-EurópaAusztrálázsiaMelanéziaMikronéziai régióPolin" + - "éziaÁzsiaKözép-ÁzsiaNyugat-ÁzsiaEurópaKelet-EurópaÉszak-EurópaNyugat-Eu" + - "rópaLatin-Amerika" - -var huRegionIdx = []uint16{ // 290 elements + "uvet-szigetBotswanaBelaruszBelizeKanadaKókusz (Keeling)-szigetekKongó - " + + "KinshasaKözép-afrikai KöztársaságKongó - BrazzavilleSvájcElefántcsontpar" + + "tCook-szigetekChileKamerunKínaKolumbiaClipperton-szigetCosta RicaKubaZöl" + + "d-foki KöztársaságCuraçaoKarácsony-szigetCiprusCsehországNémetországDieg" + + "o GarciaDzsibutiDániaDominikaDominikai KöztársaságAlgériaCeuta és Melill" + + "aEcuadorÉsztországEgyiptomNyugat-SzaharaEritreaSpanyolországEtiópiaEuróp" + + "ai UnióFinnországFidzsiFalkland-szigetekMikronéziaFeröer-szigetekFrancia" + + "országGabonEgyesült KirályságGrenadaGrúziaFrancia GuyanaGuernseyGhánaGib" + + "raltárGrönlandGambiaGuineaGuadeloupeEgyenlítői-GuineaGörögországDéli-Geo" + + "rgia és Déli-Sandwich-szigetekGuatemalaGuamBissau-GuineaGuyanaHongkong K" + + "KTHeard-sziget és McDonald-szigetekHondurasHorvátországHaitiMagyarország" + + "Kanári-szigetekIndonéziaÍrországIzraelMan-szigetIndiaBrit Indiai-óceáni " + + "TerületIrakIránIzlandOlaszországJerseyJamaicaJordániaJapánKenyaKirgizisz" + + "tánKambodzsaKiribatiComore-szigetekSaint Kitts és NevisÉszak-KoreaDél-Ko" + + "reaKuvaitKajmán-szigetekKazahsztánLaoszLibanonSaint LuciaLiechtensteinSr" + + "í LankaLibériaLesothoLitvániaLuxemburgLettországLíbiaMarokkóMonacoMoldo" + + "vaMontenegróSaint MartinMadagaszkárMarshall-szigetekMacedóniaMaliMianmar" + + " (Burma)MongóliaMakaó KKTÉszaki Mariana-szigetekMartiniqueMauritániaMont" + + "serratMáltaMauritiusMaldív-szigetekMalawiMexikóMalajziaMozambikNamíbiaÚj" + + "-KaledóniaNigerNorfolk-szigetNigériaNicaraguaHollandiaNorvégiaNepálNauru" + + "NiueÚj-ZélandOmánPanamaPeruFrancia PolinéziaPápua Új-GuineaFülöp-szigete" + + "kPakisztánLengyelországSaint-Pierre és MiquelonPitcairn-szigetekPuerto R" + + "icoPalesztin TerületPortugáliaPalauParaguayKatarKülső-ÓceániaRéunionRomá" + + "niaSzerbiaOroszországRuandaSzaúd-ArábiaSalamon-szigetekSeychelle-szigete" + + "kSzudánSvédországSzingapúrSzent IlonaSzlovéniaSvalbard és Jan MayenSzlov" + + "ákiaSierra LeoneSan MarinoSzenegálSzomáliaSurinameDél-SzudánSao Tomé és" + + " PríncipeSalvadorSint MaartenSzíriaSzváziföldTristan da CunhaTurks- és C" + + "aicos-szigetekCsádFrancia Déli TerületekTogoThaiföldTádzsikisztánTokelau" + + "Kelet-TimorTürkmenisztánTunéziaTongaTörökországTrinidad és TobagoTuvaluT" + + "ajvanTanzániaUkrajnaUgandaAz Amerikai Egyesült Államok lakatlan külbirto" + + "kaiENSZEgyesült ÁllamokUruguayÜzbegisztánVatikánSaint Vincent és a Grena" + + "dine-szigetekVenezuelaBrit Virgin-szigetekAmerikai Virgin-szigetekVietna" + + "mVanuatuWallis és FutunaSzamoaKoszovóJemenMayotteDél-afrikai Köztársaság" + + "ZambiaZimbabweIsmeretlen körzetVilágAfrikaÉszak-AmerikaDél-AmerikaÓceáni" + + "aNyugat-AfrikaKözép-AmerikaKelet-AfrikaÉszak-AfrikaKözép-AfrikaAfrika dé" + + "li részeAmerikaAmerika északi részeKarib-térségKelet-ÁzsiaDél-ÁzsiaDélke" + + "let-ÁzsiaDél-EurópaAusztrálázsiaMelanéziaMikronéziai régióPolinéziaÁzsia" + + "Közép-ÁzsiaNyugat-ÁzsiaEurópaKelet-EurópaÉszak-EurópaNyugat-EurópaLatin-" + + "Amerika" + +var huRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0017, 0x0031, 0x003d, 0x0050, 0x0058, 0x0060, 0x006f, 0x0075, 0x007f, 0x0089, 0x0098, 0x00a0, 0x00ab, 0x00b0, 0x00bf, 0x00cc, 0x00df, 0x00e7, 0x00f0, 0x00f7, 0x0103, 0x010c, 0x0113, 0x011a, 0x011f, 0x0130, 0x0137, 0x013d, 0x0145, 0x015b, - 0x0164, 0x0173, 0x017a, 0x0187, 0x018f, 0x01a1, 0x01a7, 0x01ad, + 0x0164, 0x0173, 0x017a, 0x0187, 0x018f, 0x0197, 0x019d, 0x01a3, 0x01bd, 0x01ce, 0x01ec, 0x0200, 0x0206, 0x0217, 0x0224, 0x0229, 0x0230, 0x0235, 0x023d, 0x024e, 0x0258, 0x025c, 0x0275, 0x027d, 0x028e, 0x0294, 0x029f, 0x02ac, 0x02b8, 0x02c0, 0x02c6, 0x02ce, // Entry 40 - 7F 0x02e6, 0x02ee, 0x02ff, 0x0306, 0x0312, 0x031a, 0x0328, 0x032f, - 0x033d, 0x0345, 0x0353, 0x035e, 0x0364, 0x0375, 0x0380, 0x0390, - 0x039e, 0x03a3, 0x03b8, 0x03bf, 0x03c6, 0x03d4, 0x03dc, 0x03e2, - 0x03ec, 0x03f5, 0x03fb, 0x0401, 0x040b, 0x041e, 0x042c, 0x0455, - 0x045e, 0x0462, 0x046f, 0x0475, 0x0487, 0x04a9, 0x04b1, 0x04bf, - 0x04c4, 0x04d1, 0x04e1, 0x04eb, 0x04f5, 0x04fb, 0x0505, 0x050a, - 0x0527, 0x052b, 0x0530, 0x0536, 0x0542, 0x0548, 0x054f, 0x0558, - 0x055e, 0x0563, 0x0570, 0x0579, 0x0581, 0x0590, 0x05a5, 0x05b1, + 0x033d, 0x0345, 0x0353, 0x0353, 0x035e, 0x0364, 0x0375, 0x0380, + 0x0390, 0x039e, 0x03a3, 0x03b8, 0x03bf, 0x03c6, 0x03d4, 0x03dc, + 0x03e2, 0x03ec, 0x03f5, 0x03fb, 0x0401, 0x040b, 0x041e, 0x042c, + 0x0455, 0x045e, 0x0462, 0x046f, 0x0475, 0x0481, 0x04a3, 0x04ab, + 0x04b9, 0x04be, 0x04cb, 0x04db, 0x04e5, 0x04ef, 0x04f5, 0x04ff, + 0x0504, 0x0521, 0x0525, 0x052a, 0x0530, 0x053c, 0x0542, 0x0549, + 0x0552, 0x0558, 0x055d, 0x056a, 0x0573, 0x057b, 0x058a, 0x059f, // Entry 80 - BF - 0x05bb, 0x05c1, 0x05d1, 0x05dc, 0x05e1, 0x05e8, 0x05f3, 0x0600, - 0x060a, 0x0612, 0x0619, 0x0622, 0x062b, 0x0636, 0x063c, 0x0644, - 0x064a, 0x0651, 0x065c, 0x0668, 0x0674, 0x0685, 0x068f, 0x0693, - 0x06a2, 0x06ab, 0x06bb, 0x06d3, 0x06dd, 0x06e8, 0x06f2, 0x06f8, - 0x0701, 0x0711, 0x0717, 0x071e, 0x0726, 0x072e, 0x0736, 0x0744, - 0x0749, 0x0757, 0x075f, 0x0768, 0x0771, 0x077a, 0x0780, 0x0785, - 0x0789, 0x0794, 0x0799, 0x079f, 0x07a3, 0x07b5, 0x07c6, 0x07d6, - 0x07e0, 0x07ee, 0x0807, 0x0818, 0x0823, 0x0835, 0x0840, 0x0845, + 0x05ab, 0x05b5, 0x05bb, 0x05cb, 0x05d6, 0x05db, 0x05e2, 0x05ed, + 0x05fa, 0x0604, 0x060c, 0x0613, 0x061c, 0x0625, 0x0630, 0x0636, + 0x063e, 0x0644, 0x064b, 0x0656, 0x0662, 0x066e, 0x067f, 0x0689, + 0x068d, 0x069c, 0x06a5, 0x06af, 0x06c7, 0x06d1, 0x06dc, 0x06e6, + 0x06ec, 0x06f5, 0x0705, 0x070b, 0x0712, 0x071a, 0x0722, 0x072a, + 0x0738, 0x073d, 0x074b, 0x0753, 0x075c, 0x0765, 0x076e, 0x0774, + 0x0779, 0x077d, 0x0788, 0x078d, 0x0793, 0x0797, 0x07a9, 0x07ba, + 0x07ca, 0x07d4, 0x07e2, 0x07fb, 0x080c, 0x0817, 0x0829, 0x0834, // Entry C0 - FF - 0x084d, 0x0852, 0x0863, 0x086a, 0x0872, 0x0879, 0x0885, 0x088b, - 0x0899, 0x08a9, 0x08bb, 0x08c2, 0x08ce, 0x08d8, 0x08e3, 0x08ed, - 0x0910, 0x091a, 0x0926, 0x0930, 0x0939, 0x0942, 0x094a, 0x0956, - 0x096d, 0x0975, 0x0981, 0x0988, 0x0994, 0x09a4, 0x09be, 0x09c3, - 0x09db, 0x09df, 0x09e8, 0x09f7, 0x09fe, 0x0a09, 0x0a18, 0x0a20, - 0x0a25, 0x0a33, 0x0a46, 0x0a4c, 0x0a52, 0x0a5b, 0x0a62, 0x0a68, - 0x0a8a, 0x0a9c, 0x0aa3, 0x0ab0, 0x0ab8, 0x0ade, 0x0ae7, 0x0afb, - 0x0b13, 0x0b1a, 0x0b21, 0x0b3c, 0x0b42, 0x0b4a, 0x0b4f, 0x0b56, + 0x0839, 0x0841, 0x0846, 0x0857, 0x085f, 0x0867, 0x086e, 0x087a, + 0x0880, 0x088e, 0x089e, 0x08b0, 0x08b7, 0x08c3, 0x08cd, 0x08d8, + 0x08e2, 0x08f8, 0x0902, 0x090e, 0x0918, 0x0921, 0x092a, 0x0932, + 0x093e, 0x0955, 0x095d, 0x0969, 0x0970, 0x097c, 0x098c, 0x09a6, + 0x09ab, 0x09c3, 0x09c7, 0x09d0, 0x09df, 0x09e6, 0x09f1, 0x0a00, + 0x0a08, 0x0a0d, 0x0a1b, 0x0a2e, 0x0a34, 0x0a3a, 0x0a43, 0x0a4a, + 0x0a50, 0x0a84, 0x0a88, 0x0a9a, 0x0aa1, 0x0aae, 0x0ab6, 0x0adc, + 0x0ae5, 0x0af9, 0x0b11, 0x0b18, 0x0b1f, 0x0b30, 0x0b36, 0x0b3e, // Entry 100 - 13F - 0x0b71, 0x0b77, 0x0b7f, 0x0b91, 0x0b97, 0x0b9d, 0x0bab, 0x0bb7, - 0x0bc0, 0x0bcd, 0x0bdc, 0x0be8, 0x0bf5, 0x0c03, 0x0c16, 0x0c1d, - 0x0c33, 0x0c41, 0x0c4d, 0x0c58, 0x0c68, 0x0c74, 0x0c83, 0x0c8d, - 0x0ca1, 0x0cab, 0x0cb1, 0x0cbf, 0x0ccc, 0x0cd3, 0x0ce0, 0x0cee, - 0x0cfc, 0x0d09, -} // Size: 604 bytes - -var hyRegionStr string = "" + // Size: 6292 bytes + 0x0b43, 0x0b4a, 0x0b65, 0x0b6b, 0x0b73, 0x0b85, 0x0b8b, 0x0b91, + 0x0b9f, 0x0bab, 0x0bb4, 0x0bc1, 0x0bd0, 0x0bdc, 0x0be9, 0x0bf7, + 0x0c0a, 0x0c11, 0x0c27, 0x0c35, 0x0c41, 0x0c4c, 0x0c5c, 0x0c68, + 0x0c77, 0x0c81, 0x0c95, 0x0c9f, 0x0ca5, 0x0cb3, 0x0cc0, 0x0cc7, + 0x0cd4, 0x0ce2, 0x0cf0, 0x0cfd, +} // Size: 608 bytes + +const hyRegionStr string = "" + // Size: 6248 bytes "Համբարձման կղզիԱնդորրաԱրաբական Միացյալ ԷմիրություններԱֆղանստանԱնտիգուա և" + - " ԲարբուդաԱնգիլյաԱլբանիաՀայաստանԱնգոլաԱնտարկտիդաԱրգենտինաԱմերիկյան ՍամոաԱ" + - "վստրիաԱվստրալիաԱրուբաԱլանդյան կղզիներԱդրբեջանԲոսնիա և ՀերցեգովինաԲարբադ" + - "ոսԲանգլադեշԲելգիաԲուրկինա ՖասոԲուլղարիաԲահրեյնԲուրունդիԲենինՍուրբ Բարդո" + - "ւղիմեոսԲերմուդյան կղզիներԲրունեյԲոլիվիաԿարիբյան ՆիդեռլանդներԲրազիլիաԲահ" + - "ամներԲութանԲուվե կղզիԲոթսվանաԲելառուսԲելիզԿանադաԿոկոսյան (Քիլինգ) կղզին" + - "երԿոնգո - ԿինշասաԿենտրոնական Աֆրիկյան ՀանրապետությունԿոնգո - ԲրազավիլՇվ" + - "եյցարիաԿոտ Դ՛իվուարԿուկի կղզիներՉիլիԿամերունՉինաստանԿոլումբիաՔլիփերթոն " + - "կղզիԿոստա ՌիկաԿուբաԿաբո ՎերդեԿյուրասաոԾննդյան կղզիԿիպրոսՉեխիաԳերմանիաԴի" + - "եգո ԳարսիաՋիբուտիԴանիաԴոմինիկաԴոմինիկյան ՀանրապետությունԱլժիրՍեուտա և Մ" + - "ելիլյաԷկվադորԷստոնիաԵգիպտոսԱրևմտյան ՍահարաԷրիտրեաԻսպանիաԵթովպիաԵվրոպակա" + - "ն ՄիությունՖինլանդիաՖիջիՖոլքլենդյան կղզիներՄիկրոնեզիաՖարերյան կղզիներՖր" + - "անսիաԳաբոնՄեծ ԲրիտանիաԳրենադաՎրաստանՖրանսիական ԳվիանաԳերնսիԳանաՋիբրալթա" + - "րԳրենլանդիաԳամբիաԳվինեաԳվադելուպաՀասարակածային ԳվինեաՀունաստանՀարավային" + - " Ջորջիա և Հարավային Սենդվիչյան կղզիներԳվատեմալաԳուամԳվինեա-ԲիսաուԳայանաՀ" + - "ոնկոնգի ՀՎՇՀերդ կղզի և ՄակԴոնալդի կղզիներՀոնդուրասԽորվաթիաՀաիթիՀունգարի" + - "աԿանարյան կղզիներԻնդոնեզիաԻռլանդիաԻսրայելՄեն կղզիՀնդկաստանՀնդկական Օվկի" + - "անոսում Բրիտանական ՏարածքԻրաքԻրանԻսլանդիաԻտալիաՋերսիՃամայկաՀորդանանՃապո" + - "նիաՔենիաՂրղզստանԿամբոջաԿիրիբատիԿոմորյան կղզիներՍենթ Քիթս և ՆեվիսՀյուսիս" + - "ային ԿորեաՀարավային ԿորեաՔուվեյթԿայմանյան կղզիներՂազախստանԼաոսԼիբանանՍե" + - "նթ ԼուսիաԼիխտենշտեյնՇրի ԼանկաԼիբերիաԼեսոտոԼիտվաԼյուքսեմբուրգԼատվիաԼիբիա" + - "ՄարոկկոՄոնակոՄոլդովաՉեռնոգորիաՍեն ՄարտենՄադագասկարՄարշալյան կղզիներՄակե" + - "դոնիաՄալիՄյանմա (Բիրմա)ՄոնղոլիաՉինաստանի Մակաո ՀՎՇՀյուսիսային Մարիանյան" + - " կղզիներՄարտինիկաՄավրիտանիաՄոնտսերատՄալթաՄավրիկիոսՄալդիվներՄալավիՄեքսիկա" + - "ՄալայզիաՄոզամբիկՆամիբիաՆոր ԿալեդոնիաՆիգերՆորֆոլկ կղզիՆիգերիաՆիկարագուաՆ" + - "իդեռլանդներՆորվեգիաՆեպալՆաուրուՆիուեՆոր ԶելանդիաՕմանՊանամաՊերուՖրանսիակ" + - "ան ՊոլինեզիաՊապուա Նոր ԳվինեաՖիլիպիններՊակիստանԼեհաստանՍեն Պիեռ և Միքել" + - "ոնՊիտկեռն կղզիներՊուերտո ՌիկոՊաղեստինյան տարածքներՊորտուգալիաՊալաուՊարա" + - "գվայԿատարԱրտաքին ՕվկիանիաՌեյունիոնՌումինիաՍերբիաՌուսաստանՌուանդաՍաուդյա" + - "ն ԱրաբիաՍողոմոնյան կղզիներՍեյշելյան կղզիներՍուդանՇվեդիաՍինգապուրՍուրբ Հ" + - "եղինեի կղզիՍլովենիաՍվալբարդ և Յան ՄայենՍլովակիաՍիերա ԼեոնեՍան ՄարինոՍեն" + - "եգալՍոմալիՍուրինամՀարավային ՍուդանՍան Տոմե և ՓրինսիփիՍալվադորՍինտ Մարտե" + - "նՍիրիաՍվազիլենդՏրիստան դա ԿունյաԹըրքս և Կայկոս կղզիներՉադՖրանսիական Հար" + - "ավային ՏարածքներՏոգոԹաիլանդՏաջիկստանՏոկելաուԹիմոր-ԼեստեԹուրքմենստանԹուն" + - "իսՏոնգաԹուրքիաՏրինիդադ և ՏոբագոՏուվալուԹայվանԹանզանիաՈւկրաինաՈւգանդաԱրտ" + - "աքին կղզիներ (ԱՄՆ)Ամերիկայի Միացյալ ՆահանգներՈւրուգվայՈւզբեկստանՎատիկան" + - " քաղաք-պետությունՍենթ Վինսենթ և ԳրենադիններՎենեսուելաԲրիտանական Վիրջինյա" + - "ն կղզիներԱմերիկյան Վիրջինյան կղզիներՎիետնամՎանուատուՈւոլիս և ՖուտունաՍա" + + " ԲարբուդաԱնգուիլաԱլբանիաՀայաստանԱնգոլաԱնտարկտիդաԱրգենտինաԱմերիկյան Սամոա" + + "ԱվստրիաԱվստրալիաԱրուբաԱլանդյան կղզիներԱդրբեջանԲոսնիա և ՀերցեգովինաԲարբա" + + "դոսԲանգլադեշԲելգիաԲուրկինա ՖասոԲուլղարիաԲահրեյնԲուրունդիԲենինՍեն Բարտել" + + "միԲերմուդներԲրունեյԲոլիվիաԿարիբյան ՆիդեռլանդներԲրազիլիաԲահամաներԲութանԲ" + + "ուվե կղզիԲոթսվանաԲելառուսԲելիզԿանադաԿոկոսյան (Քիլինգ) կղզիներԿոնգո - Կի" + + "նշասաԿենտրոնական Աֆրիկյան ՀանրապետությունԿոնգո - ԲրազավիլՇվեյցարիաԿոտ դ" + + "’ԻվուարԿուկի կղզիներՉիլիԿամերունՉինաստանԿոլումբիաՔլիփերթոն կղզիԿոստա Ռ" + + "իկաԿուբաԿաբո ՎերդեԿյուրասաոՍուրբ Ծննդյան կղզիԿիպրոսՉեխիաԳերմանիաԴիեգո Գ" + + "արսիաՋիբութիԴանիաԴոմինիկաԴոմինիկյան ՀանրապետությունԱլժիրՍեուտա և Մելիլյ" + + "աԷկվադորԷստոնիաԵգիպտոսԱրևմտյան ՍահարաԷրիթրեաԻսպանիաԵթովպիաԵվրոպական Միո" + + "ւթյունՖինլանդիաՖիջիՖոլքլենդյան կղզիներՄիկրոնեզիաՖարերյան կղզիներՖրանսիա" + + "ԳաբոնՄիացյալ ԹագավորությունԳրենադաՎրաստանՖրանսիական ԳվիանաԳերնսիԳանաՋիբ" + + "րալթարԳրենլանդիաԳամբիաԳվինեաԳվադելուպաՀասարակածային ԳվինեաՀունաստանՀարա" + + "վային Ջորջիա և Հարավային Սենդվիչյան կղզիներԳվատեմալաԳուամԳվինեա-Բիսսաու" + + "ԳայանաՀոնկոնգի ՀՎՇՀերդ կղզի և ՄակԴոնալդի կղզիներՀոնդուրասԽորվաթիաՀայիթի" + + "ՀունգարիաԿանարյան կղզիներԻնդոնեզիաԻռլանդիաԻսրայելՄեն կղզիՀնդկաստանԲրիտա" + + "նական Տարածք Հնդկական ՕվկիանոսումԻրաքԻրանԻսլանդիաԻտալիաՋերսիՃամայկաՀորդ" + + "անանՃապոնիաՔենիաՂրղզստանԿամբոջաԿիրիբատիԿոմորյան կղզիներՍենտ Քիտս և Նևիս" + + "Հյուսիսային ԿորեաՀարավային ԿորեաՔուվեյթԿայմանյան կղզիներՂազախստանԼաոսԼի" + + "բանանՍենթ ԼյուսիաԼիխտենշտեյնՇրի ԼանկաԼիբերիաԼեսոտոԼիտվաԼյուքսեմբուրգԼատ" + + "վիաԼիբիաՄարոկկոՄոնակոՄոլդովաՉեռնոգորիաՍեն ՄարտենՄադագասկարՄարշալյան կղզ" + + "իներՄակեդոնիաՄալիՄյանմա (Բիրմա)ՄոնղոլիաՉինաստանի Մակաո ՀՎՇՀյուսիսային Մ" + + "արիանյան կղզիներՄարտինիկաՄավրիտանիաՄոնսեռատՄալթաՄավրիկիոսՄալդիվներՄալավ" + + "իՄեքսիկաՄալայզիաՄոզամբիկՆամիբիաՆոր ԿալեդոնիաՆիգերՆորֆոլկ կղզիՆիգերիաՆիկ" + + "արագուաՆիդեռլանդներՆորվեգիաՆեպալՆաուրուՆիուեՆոր ԶելանդիաՕմանՊանամաՊերու" + + "Ֆրանսիական ՊոլինեզիաՊապուա Նոր ԳվինեաՖիլիպիններՊակիստանԼեհաստանՍեն Պիեռ" + + " և ՄիքելոնՊիտկեռն կղզիներՊուերտո ՌիկոՊաղեստինյան տարածքներՊորտուգալիաՊալ" + + "աուՊարագվայԿատարԱրտաքին ՕվկիանիաՌեյունիոնՌումինիաՍերբիաՌուսաստանՌուանդա" + + "Սաուդյան ԱրաբիաՍողոմոնյան կղզիներՍեյշելներՍուդանՇվեդիաՍինգապուրՍուրբ Հե" + + "ղինեի կղզիՍլովենիաՍվալբարդ և Յան ՄայենՍլովակիաՍիեռա ԼեոնեՍան ՄարինոՍենե" + + "գալՍոմալիՍուրինամՀարավային ՍուդանՍան Տոմե և ՓրինսիպիՍալվադորՍինտ Մարտեն" + + "ՍիրիաՍվազիլենդՏրիստան դա ԿունյաԹըրքս և Կայկոս կղզիներՉադՖրանսիական Հարա" + + "վային ՏարածքներՏոգոԹայլանդՏաջիկստանՏոկելաուԹիմոր ԼեշտիԹուրքմենստանԹունի" + + "սՏոնգաԹուրքիաՏրինիդադ և ՏոբագոՏուվալուԹայվանՏանզանիաՈւկրաինաՈւգանդաԱրտա" + + "քին կղզիներ (ԱՄՆ)Միավորված ազգերի կազմակերպությունՄիացյալ ՆահանգներՈւրո" + + "ւգվայՈւզբեկստանՎատիկանՍենթ Վինսենթ և ԳրենադիններՎենեսուելաԲրիտանական Վի" + + "րջինյան կղզիներԱՄՆ Վիրջինյան կղզիներՎիետնամՎանուատուՈւոլիս և ՖուտունաՍա" + "մոաԿոսովոԵմենՄայոտՀարավաֆրիկյան ՀանրապետությունԶամբիաԶիմբաբվեԱնհայտ տար" + "ածաշրջանԱշխարհԱֆրիկաՀյուսիսային ԱմերիկաՀարավային ԱմերիկաՕվկիանիաԱրևմտյա" + "ն ԱֆրիկաԿենտրոնական ԱմերիկաԱրևելյան ԱֆրիկաՀյուսիսային ԱֆրիկաԿենտրոնական" + - " ԱֆրիկաՀարավային ԱֆրիկաԱմերիկաՀյուսիսային Ամերիկա - ԱՄՆ և ԿանադաԿարիբյան" + - " կղզիներԱրևելյան ԱսիաՀարավային ԱսիաՀարավ-Արևելյան ԱսիաՀարավային ԵվրոպաԱվ" + - "ստրալիա և Նոր ԶելանդիաՄելանեզիաՄիկրոնեզիայի տարածաշրջանՊոլինեզիաԱսիաԿեն" + - "տրոնական ԱսիաԱրևմտյան ԱսիաԵվրոպաԱրևելյան ԵվրոպաՀյուսիսային ԵվրոպաԱրևմտյ" + - "ան ԵվրոպաԼատինական Ամերիկա" + " ԱֆրիկաՀարավային ԱֆրիկաԱմերիկաՀյուսիսային Ամերիկա - ԱՄՆ և ԿանադաԿարիբներ" + + "Արևելյան ԱսիաՀարավային ԱսիաՀարավարևելյան ԱսիաՀարավային ԵվրոպաԱվստրալասի" + + "աՄելանեզիաՄիկրոնեզյան տարածաշրջանՊոլինեզիաԱսիաԿենտրոնական ԱսիաԱրևմտյան " + + "ԱսիաԵվրոպաԱրևելյան ԵվրոպաՀյուսիսային ԵվրոպաԱրևմտյան ԵվրոպաԼատինական Ամե" + + "րիկա" -var hyRegionIdx = []uint16{ // 290 elements +var hyRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x001d, 0x002b, 0x0067, 0x0079, 0x009d, 0x00ab, 0x00b9, - 0x00c9, 0x00d5, 0x00e9, 0x00fb, 0x0118, 0x0126, 0x0138, 0x0144, - 0x0163, 0x0173, 0x0199, 0x01a9, 0x01bb, 0x01c7, 0x01e0, 0x01f2, - 0x0200, 0x0212, 0x021c, 0x023f, 0x0262, 0x0270, 0x027e, 0x02a7, - 0x02b7, 0x02c7, 0x02d3, 0x02e6, 0x02f6, 0x0306, 0x0310, 0x031c, - 0x034a, 0x0365, 0x03ab, 0x03c8, 0x03da, 0x03f1, 0x040a, 0x0412, - 0x0422, 0x0432, 0x0444, 0x045f, 0x0472, 0x047c, 0x048f, 0x04a1, - 0x04b8, 0x04c4, 0x04ce, 0x04de, 0x04f5, 0x0503, 0x050d, 0x051d, + 0x0000, 0x001d, 0x002b, 0x0067, 0x0079, 0x009d, 0x00ad, 0x00bb, + 0x00cb, 0x00d7, 0x00eb, 0x00fd, 0x011a, 0x0128, 0x013a, 0x0146, + 0x0165, 0x0175, 0x019b, 0x01ab, 0x01bd, 0x01c9, 0x01e2, 0x01f4, + 0x0202, 0x0214, 0x021e, 0x0235, 0x0249, 0x0257, 0x0265, 0x028e, + 0x029e, 0x02b0, 0x02bc, 0x02cf, 0x02df, 0x02ef, 0x02f9, 0x0305, + 0x0333, 0x034e, 0x0394, 0x03b1, 0x03c3, 0x03db, 0x03f4, 0x03fc, + 0x040c, 0x041c, 0x042e, 0x0449, 0x045c, 0x0466, 0x0479, 0x048b, + 0x04ad, 0x04b9, 0x04c3, 0x04d3, 0x04ea, 0x04f8, 0x0502, 0x0512, // Entry 40 - 7F - 0x0550, 0x055a, 0x0578, 0x0586, 0x0594, 0x05a2, 0x05bf, 0x05cd, - 0x05db, 0x05e9, 0x060e, 0x0620, 0x0628, 0x064d, 0x0661, 0x0680, - 0x068e, 0x0698, 0x06af, 0x06bd, 0x06cb, 0x06ec, 0x06f8, 0x0700, - 0x0712, 0x0726, 0x0732, 0x073e, 0x0752, 0x0779, 0x078b, 0x07e4, - 0x07f6, 0x0800, 0x0819, 0x0825, 0x083c, 0x0874, 0x0886, 0x0896, - 0x08a0, 0x08b2, 0x08d1, 0x08e3, 0x08f3, 0x0901, 0x0910, 0x0922, - 0x096b, 0x0973, 0x097b, 0x098b, 0x0997, 0x09a1, 0x09af, 0x09bf, - 0x09cd, 0x09d7, 0x09e7, 0x09f5, 0x0a05, 0x0a24, 0x0a43, 0x0a64, + 0x0545, 0x054f, 0x056d, 0x057b, 0x0589, 0x0597, 0x05b4, 0x05c2, + 0x05d0, 0x05de, 0x0603, 0x0603, 0x0615, 0x061d, 0x0642, 0x0656, + 0x0675, 0x0683, 0x068d, 0x06b8, 0x06c6, 0x06d4, 0x06f5, 0x0701, + 0x0709, 0x071b, 0x072f, 0x073b, 0x0747, 0x075b, 0x0782, 0x0794, + 0x07ed, 0x07ff, 0x0809, 0x0824, 0x0830, 0x0847, 0x087f, 0x0891, + 0x08a1, 0x08ad, 0x08bf, 0x08de, 0x08f0, 0x0900, 0x090e, 0x091d, + 0x092f, 0x0978, 0x0980, 0x0988, 0x0998, 0x09a4, 0x09ae, 0x09bc, + 0x09cc, 0x09da, 0x09e4, 0x09f4, 0x0a02, 0x0a12, 0x0a31, 0x0a4e, // Entry 80 - BF - 0x0a81, 0x0a8f, 0x0ab0, 0x0ac2, 0x0aca, 0x0ad8, 0x0aed, 0x0b03, - 0x0b14, 0x0b22, 0x0b2e, 0x0b38, 0x0b52, 0x0b5e, 0x0b68, 0x0b76, - 0x0b82, 0x0b90, 0x0ba4, 0x0bb7, 0x0bcb, 0x0bec, 0x0bfe, 0x0c06, - 0x0c1f, 0x0c2f, 0x0c53, 0x0c8b, 0x0c9d, 0x0cb1, 0x0cc3, 0x0ccd, - 0x0cdf, 0x0cf1, 0x0cfd, 0x0d0b, 0x0d1b, 0x0d2b, 0x0d39, 0x0d52, - 0x0d5c, 0x0d73, 0x0d81, 0x0d95, 0x0dad, 0x0dbd, 0x0dc7, 0x0dd5, - 0x0ddf, 0x0df6, 0x0dfe, 0x0e0a, 0x0e14, 0x0e3b, 0x0e5b, 0x0e6f, - 0x0e7f, 0x0e8f, 0x0eb0, 0x0ecd, 0x0ee4, 0x0f0d, 0x0f23, 0x0f2f, + 0x0a6f, 0x0a8c, 0x0a9a, 0x0abb, 0x0acd, 0x0ad5, 0x0ae3, 0x0afa, + 0x0b10, 0x0b21, 0x0b2f, 0x0b3b, 0x0b45, 0x0b5f, 0x0b6b, 0x0b75, + 0x0b83, 0x0b8f, 0x0b9d, 0x0bb1, 0x0bc4, 0x0bd8, 0x0bf9, 0x0c0b, + 0x0c13, 0x0c2c, 0x0c3c, 0x0c60, 0x0c98, 0x0caa, 0x0cbe, 0x0cce, + 0x0cd8, 0x0cea, 0x0cfc, 0x0d08, 0x0d16, 0x0d26, 0x0d36, 0x0d44, + 0x0d5d, 0x0d67, 0x0d7e, 0x0d8c, 0x0da0, 0x0db8, 0x0dc8, 0x0dd2, + 0x0de0, 0x0dea, 0x0e01, 0x0e09, 0x0e15, 0x0e1f, 0x0e46, 0x0e66, + 0x0e7a, 0x0e8a, 0x0e9a, 0x0ebb, 0x0ed8, 0x0eef, 0x0f18, 0x0f2e, // Entry C0 - FF - 0x0f3f, 0x0f49, 0x0f68, 0x0f7a, 0x0f8a, 0x0f96, 0x0fa8, 0x0fb6, - 0x0fd3, 0x0ff6, 0x1017, 0x1023, 0x102f, 0x1041, 0x1063, 0x1073, - 0x1098, 0x10a8, 0x10bd, 0x10d0, 0x10de, 0x10ea, 0x10fa, 0x1119, - 0x113c, 0x114c, 0x1161, 0x116b, 0x117d, 0x119d, 0x11c6, 0x11cc, - 0x1206, 0x120e, 0x121c, 0x122e, 0x123e, 0x1253, 0x126b, 0x1277, - 0x1281, 0x128f, 0x12af, 0x12bf, 0x12cb, 0x12db, 0x12eb, 0x12f9, - 0x131f, 0x1353, 0x1365, 0x1379, 0x13a7, 0x13d8, 0x13ec, 0x1422, - 0x1456, 0x1464, 0x1476, 0x1496, 0x14a0, 0x14ac, 0x14b4, 0x14be, + 0x0f3a, 0x0f4a, 0x0f54, 0x0f73, 0x0f85, 0x0f95, 0x0fa1, 0x0fb3, + 0x0fc1, 0x0fde, 0x1001, 0x1013, 0x101f, 0x102b, 0x103d, 0x105f, + 0x106f, 0x1094, 0x10a4, 0x10b9, 0x10cc, 0x10da, 0x10e6, 0x10f6, + 0x1115, 0x1138, 0x1148, 0x115d, 0x1167, 0x1179, 0x1199, 0x11c2, + 0x11c8, 0x1202, 0x120a, 0x1218, 0x122a, 0x123a, 0x124f, 0x1267, + 0x1273, 0x127d, 0x128b, 0x12ab, 0x12bb, 0x12c7, 0x12d7, 0x12e7, + 0x12f5, 0x131b, 0x135b, 0x137c, 0x138e, 0x13a2, 0x13b0, 0x13e1, + 0x13f5, 0x142b, 0x1453, 0x1461, 0x1473, 0x1493, 0x149d, 0x14a9, // Entry 100 - 13F - 0x14f7, 0x1503, 0x1513, 0x1536, 0x1542, 0x154e, 0x1573, 0x1594, - 0x15a4, 0x15c1, 0x15e6, 0x1603, 0x1626, 0x1649, 0x1668, 0x1676, - 0x16b4, 0x16d3, 0x16ec, 0x1707, 0x172b, 0x174a, 0x1777, 0x1789, - 0x17b8, 0x17ca, 0x17d2, 0x17f1, 0x180a, 0x1816, 0x1833, 0x1856, - 0x1873, 0x1894, -} // Size: 604 bytes - -var idRegionStr string = "" + // Size: 3036 bytes + 0x14b1, 0x14bb, 0x14f4, 0x1500, 0x1510, 0x1533, 0x153f, 0x154b, + 0x1570, 0x1591, 0x15a1, 0x15be, 0x15e3, 0x1600, 0x1623, 0x1646, + 0x1665, 0x1673, 0x16b1, 0x16c1, 0x16da, 0x16f5, 0x1718, 0x1737, + 0x174d, 0x175f, 0x178c, 0x179e, 0x17a6, 0x17c5, 0x17de, 0x17ea, + 0x1807, 0x182a, 0x1847, 0x1868, +} // Size: 608 bytes + +const idRegionStr string = "" + // Size: 3068 bytes "Pulau AscensionAndorraUni Emirat ArabAfganistanAntigua dan BarbudaAnguil" + - "laAlbaniaArmeniaAngolaAntarktikaArgentinaSamoa AmerikaAustriaAustraliaAr" + - "ubaKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbadosBangladeshBelg" + - "iaBurkina FasoBulgariaBahrainBurundiBeninSaint BarthelemyBermudaBruneiBo" + - "liviaKaribia BelandaBrasilBahamaBhutanPulau BouvetBotswanaBelarusBelizeK" + - "anadaKepulauan CocosKongo - KinshasaRepublik Afrika TengahKongo - Brazza" + - "villeSwissCote d’IvoireKepulauan CookCileKamerunTiongkokKolombiaPulau Cl" + - "ippertonKosta RikaKubaTanjung VerdeCuraçaoPulau ChristmasSiprusRepublik " + + "laAlbaniaArmeniaAngolaAntartikaArgentinaSamoa AmerikaAustriaAustraliaAru" + + "baKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbadosBangladeshBelgi" + + "aBurkina FasoBulgariaBahrainBurundiBeninSaint BarthélemyBermudaBruneiBol" + + "iviaKaribia BelandaBrasilBahamaBhutanPulau BouvetBotswanaBelarusBelizeKa" + + "nadaKepulauan Cocos (Keeling)Kongo - KinshasaRepublik Afrika TengahKongo" + + " - BrazzavilleSwissCote d’IvoireKepulauan CookCileKamerunTiongkokKolombi" + + "aPulau ClippertonKosta RikaKubaTanjung VerdeCuraçaoPulau ChristmasSiprus" + "CheskaJermanDiego GarciaJibutiDenmarkDominikaRepublik DominikaAljazairCe" + "uta dan MelillaEkuadorEstoniaMesirSahara BaratEritreaSpanyolEtiopiaUni E" + "ropaFinlandiaFijiKepulauan MalvinasMikronesiaKepulauan FaroePrancisGabon" + - "InggrisGrenadaGeorgiaGuyana PrancisGuernseyGhanaGibraltarGrinlandiaGambi" + - "aGuineaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan & Kep. Sandwich " + - "SelatanGuatemalaGuamGuinea-BissauGuyanaHong Kong SAR TiongkokPulau Heard" + - " dan Kepulauan McDonaldHondurasKroasiaHaitiHungariaKepulauan CanaryIndon" + - "esiaIrlandiaIsraelPulau ManIndiaWilayah Inggris di Samudra HindiaIrakIra" + - "nIslandiaItaliaJerseyJamaikaYordaniaJepangKenyaKirgistanKambojaKiribatiK" + - "omoroSaint Kitts dan NevisKorea UtaraKorea SelatanKuwaitKepulauan Cayman" + - "KazakstanLaosLebanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitua" + - "niaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSaint MartinMadagas" + - "karKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMakau SAR Tiong" + - "kokKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaMauritiusMala" + - "dewaMalawiMeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerKepulauan Nor" + - "folkNigeriaNikaraguaBelandaNorwegiaNepalNauruNiueSelandia BaruOmanPanama" + - "PeruPolinesia PrancisPapua NuginiFilipinaPakistanPolandiaSaint Pierre da" + - "n MiquelonKepulauan PitcairnPuerto RikoWilayah PalestinaPortugalPalauPar" + - "aguayQatarOseania LuarRéunionRumaniaSerbiaRusiaRwandaArab SaudiKepulauan" + - " SolomonSeychellesSudanSwediaSingapuraSaint HelenaSloveniaKepulauan Sval" + - "bard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSu" + - "dan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuriahSwazilandTr" + - "istan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Selatan Prancis" + - "TogoThailandTajikistanTokelauTimor LesteTurkimenistanTunisiaTongaTurkiTr" + - "inidad dan TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan Terluar A.S." + - "Amerika SerikatUruguayUzbekistanVatikanSaint Vincent dan GrenadinesVenez" + - "uelaKepulauan Virgin InggrisKepulauan Virgin A.S.VietnamVanuatuKepulauan" + - " Wallis dan FutunaSamoaKosovoYamanMayotteAfrika SelatanZambiaZimbabweWil" + - "ayah Tidak DikenalDuniaAfrikaAmerika UtaraAmerika SelatanOseaniaAfrika B" + - "agian BaratAmerika TengahAfrika Bagian TimurAfrika Bagian UtaraAfrika Ba" + - "gian TengahAfrika Bagian SelatanAmerikaAmerika Bagian UtaraKepulauan Kar" + - "ibiaAsia Bagian TimurAsia Bagian SelatanAsia TenggaraEropa Bagian Selata" + - "nAustralasiaMelanesiaWilayah MikronesiaPolinesiaAsiaAsia TengahAsia Bagi" + - "an BaratEropaEropa Bagian TimurEropa Bagian UtaraEropa Bagian BaratAmeri" + - "ka Latin" - -var idRegionIdx = []uint16{ // 290 elements + "Inggris RayaGrenadaGeorgiaGuyana PrancisGuernseyGhanaGibraltarGrinlandia" + + "GambiaGuineaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan & Kep. Sand" + + "wich SelatanGuatemalaGuamGuinea-BissauGuyanaHong Kong SAR TiongkokPulau " + + "Heard dan Kepulauan McDonaldHondurasKroasiaHaitiHungariaKepulauan Canary" + + "IndonesiaIrlandiaIsraelPulau ManIndiaWilayah Inggris di Samudra HindiaIr" + + "akIranIslandiaItaliaJerseyJamaikaYordaniaJepangKenyaKirgistanKambojaKiri" + + "batiKomoroSaint Kitts dan NevisKorea UtaraKorea SelatanKuwaitKepulauan C" + + "aymanKazakstanLaosLebanonSaint LuciaLiechtensteinSri LankaLiberiaLesotho" + + "LituaniaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSaint MartinMa" + + "dagaskarKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMakau SAR " + + "TiongkokKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaMauritiu" + + "sMaladewaMalawiMeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerKepulaua" + + "n NorfolkNigeriaNikaraguaBelandaNorwegiaNepalNauruNiueSelandia BaruOmanP" + + "anamaPeruPolinesia PrancisPapua NuginiFilipinaPakistanPolandiaSaint Pier" + + "re dan MiquelonKepulauan PitcairnPuerto RikoWilayah PalestinaPortugalPal" + + "auParaguayQatarOseania LuarRéunionRumaniaSerbiaRusiaRwandaArab SaudiKepu" + + "lauan SolomonSeychellesSudanSwediaSingapuraSaint HelenaSloveniaKepulauan" + + " Svalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurin" + + "ameSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuriahSwazil" + + "andTristan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Selatan Pr" + + "ancisTogoThailandTajikistanTokelauTimor LesteTurkimenistanTunisiaTongaTu" + + "rkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan Terluar" + + " A.S.Perserikatan Bangsa-BangsaAmerika SerikatUruguayUzbekistanVatikanSa" + + "int Vincent dan GrenadinesVenezuelaKepulauan Virgin InggrisKepulauan Vir" + + "gin A.S.VietnamVanuatuKepulauan Wallis dan FutunaSamoaKosovoYamanMayotte" + + "Afrika SelatanZambiaZimbabweWilayah Tidak DikenalDuniaAfrikaAmerika Utar" + + "aAmerika SelatanOseaniaAfrika Bagian BaratAmerika TengahAfrika Bagian Ti" + + "murAfrika Bagian UtaraAfrika Bagian TengahAfrika Bagian SelatanAmerikaAm" + + "erika Bagian UtaraKepulauan KaribiaAsia Bagian TimurAsia Bagian SelatanA" + + "sia TenggaraEropa Bagian SelatanAustralasiaMelanesiaWilayah MikronesiaPo" + + "linesiaAsiaAsia TengahAsia Bagian BaratEropaEropa Bagian TimurEropa Bagi" + + "an UtaraEropa Bagian BaratAmerika Latin" + +var idRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0016, 0x0025, 0x002f, 0x0042, 0x004a, 0x0051, - 0x0058, 0x005e, 0x0068, 0x0071, 0x007e, 0x0085, 0x008e, 0x0093, - 0x00a2, 0x00ac, 0x00c2, 0x00ca, 0x00d4, 0x00da, 0x00e6, 0x00ee, - 0x00f5, 0x00fc, 0x0101, 0x0111, 0x0118, 0x011e, 0x0125, 0x0134, + 0x0058, 0x005e, 0x0067, 0x0070, 0x007d, 0x0084, 0x008d, 0x0092, + 0x00a1, 0x00ab, 0x00c1, 0x00c9, 0x00d3, 0x00d9, 0x00e5, 0x00ed, + 0x00f4, 0x00fb, 0x0100, 0x0111, 0x0118, 0x011e, 0x0125, 0x0134, 0x013a, 0x0140, 0x0146, 0x0152, 0x015a, 0x0161, 0x0167, 0x016d, - 0x017c, 0x018c, 0x01a2, 0x01b5, 0x01ba, 0x01c9, 0x01d7, 0x01db, - 0x01e2, 0x01ea, 0x01f2, 0x0202, 0x020c, 0x0210, 0x021d, 0x0225, - 0x0234, 0x023a, 0x0249, 0x024f, 0x025b, 0x0261, 0x0268, 0x0270, + 0x0186, 0x0196, 0x01ac, 0x01bf, 0x01c4, 0x01d3, 0x01e1, 0x01e5, + 0x01ec, 0x01f4, 0x01fc, 0x020c, 0x0216, 0x021a, 0x0227, 0x022f, + 0x023e, 0x0244, 0x024a, 0x0250, 0x025c, 0x0262, 0x0269, 0x0271, // Entry 40 - 7F - 0x0281, 0x0289, 0x029a, 0x02a1, 0x02a8, 0x02ad, 0x02b9, 0x02c0, - 0x02c7, 0x02ce, 0x02d7, 0x02e0, 0x02e4, 0x02f6, 0x0300, 0x030f, - 0x0316, 0x031b, 0x0322, 0x0329, 0x0330, 0x033e, 0x0346, 0x034b, - 0x0354, 0x035e, 0x0364, 0x036a, 0x0374, 0x0385, 0x038b, 0x03b2, - 0x03bb, 0x03bf, 0x03cc, 0x03d2, 0x03e8, 0x040a, 0x0412, 0x0419, - 0x041e, 0x0426, 0x0436, 0x043f, 0x0447, 0x044d, 0x0456, 0x045b, - 0x047c, 0x0480, 0x0484, 0x048c, 0x0492, 0x0498, 0x049f, 0x04a7, - 0x04ad, 0x04b2, 0x04bb, 0x04c2, 0x04ca, 0x04d0, 0x04e5, 0x04f0, + 0x0282, 0x028a, 0x029b, 0x02a2, 0x02a9, 0x02ae, 0x02ba, 0x02c1, + 0x02c8, 0x02cf, 0x02d8, 0x02d8, 0x02e1, 0x02e5, 0x02f7, 0x0301, + 0x0310, 0x0317, 0x031c, 0x0328, 0x032f, 0x0336, 0x0344, 0x034c, + 0x0351, 0x035a, 0x0364, 0x036a, 0x0370, 0x037a, 0x038b, 0x0391, + 0x03b8, 0x03c1, 0x03c5, 0x03d2, 0x03d8, 0x03ee, 0x0410, 0x0418, + 0x041f, 0x0424, 0x042c, 0x043c, 0x0445, 0x044d, 0x0453, 0x045c, + 0x0461, 0x0482, 0x0486, 0x048a, 0x0492, 0x0498, 0x049e, 0x04a5, + 0x04ad, 0x04b3, 0x04b8, 0x04c1, 0x04c8, 0x04d0, 0x04d6, 0x04eb, // Entry 80 - BF - 0x04fd, 0x0503, 0x0513, 0x051c, 0x0520, 0x0527, 0x0532, 0x053f, - 0x0548, 0x054f, 0x0556, 0x055e, 0x0568, 0x056e, 0x0573, 0x0579, - 0x057f, 0x0586, 0x0590, 0x059c, 0x05a6, 0x05b8, 0x05c1, 0x05c5, - 0x05d4, 0x05dc, 0x05ee, 0x0605, 0x060d, 0x0617, 0x0621, 0x0626, - 0x062f, 0x0637, 0x063d, 0x0644, 0x064c, 0x0654, 0x065b, 0x0669, - 0x066e, 0x067f, 0x0686, 0x068f, 0x0696, 0x069e, 0x06a3, 0x06a8, - 0x06ac, 0x06b9, 0x06bd, 0x06c3, 0x06c7, 0x06d8, 0x06e4, 0x06ec, - 0x06f4, 0x06fc, 0x0715, 0x0727, 0x0732, 0x0743, 0x074b, 0x0750, + 0x04f6, 0x0503, 0x0509, 0x0519, 0x0522, 0x0526, 0x052d, 0x0538, + 0x0545, 0x054e, 0x0555, 0x055c, 0x0564, 0x056e, 0x0574, 0x0579, + 0x057f, 0x0585, 0x058c, 0x0596, 0x05a2, 0x05ac, 0x05be, 0x05c7, + 0x05cb, 0x05da, 0x05e2, 0x05f4, 0x060b, 0x0613, 0x061d, 0x0627, + 0x062c, 0x0635, 0x063d, 0x0643, 0x064a, 0x0652, 0x065a, 0x0661, + 0x066f, 0x0674, 0x0685, 0x068c, 0x0695, 0x069c, 0x06a4, 0x06a9, + 0x06ae, 0x06b2, 0x06bf, 0x06c3, 0x06c9, 0x06cd, 0x06de, 0x06ea, + 0x06f2, 0x06fa, 0x0702, 0x071b, 0x072d, 0x0738, 0x0749, 0x0751, // Entry C0 - FF - 0x0758, 0x075d, 0x0769, 0x0771, 0x0778, 0x077e, 0x0783, 0x0789, - 0x0793, 0x07a4, 0x07ae, 0x07b3, 0x07b9, 0x07c2, 0x07ce, 0x07d6, - 0x07f6, 0x07fe, 0x080a, 0x0814, 0x081b, 0x0822, 0x082a, 0x0837, - 0x084c, 0x0857, 0x0863, 0x0869, 0x0872, 0x0882, 0x089c, 0x089f, - 0x08bc, 0x08c0, 0x08c8, 0x08d2, 0x08d9, 0x08e4, 0x08f1, 0x08f8, - 0x08fd, 0x0902, 0x0915, 0x091b, 0x0921, 0x0929, 0x0930, 0x0936, - 0x094c, 0x095b, 0x0962, 0x096c, 0x0973, 0x098f, 0x0998, 0x09b0, - 0x09c5, 0x09cc, 0x09d3, 0x09ee, 0x09f3, 0x09f9, 0x09fe, 0x0a05, + 0x0756, 0x075e, 0x0763, 0x076f, 0x0777, 0x077e, 0x0784, 0x0789, + 0x078f, 0x0799, 0x07aa, 0x07b4, 0x07b9, 0x07bf, 0x07c8, 0x07d4, + 0x07dc, 0x07fc, 0x0804, 0x0810, 0x081a, 0x0821, 0x0828, 0x0830, + 0x083d, 0x0852, 0x085d, 0x0869, 0x086f, 0x0878, 0x0888, 0x08a2, + 0x08a5, 0x08c2, 0x08c6, 0x08ce, 0x08d8, 0x08df, 0x08ea, 0x08f7, + 0x08fe, 0x0903, 0x0908, 0x091b, 0x0921, 0x0927, 0x092f, 0x0936, + 0x093c, 0x0952, 0x096c, 0x097b, 0x0982, 0x098c, 0x0993, 0x09af, + 0x09b8, 0x09d0, 0x09e5, 0x09ec, 0x09f3, 0x0a0e, 0x0a13, 0x0a19, // Entry 100 - 13F - 0x0a13, 0x0a19, 0x0a21, 0x0a36, 0x0a3b, 0x0a41, 0x0a4e, 0x0a5d, - 0x0a64, 0x0a77, 0x0a85, 0x0a98, 0x0aab, 0x0abf, 0x0ad4, 0x0adb, - 0x0aef, 0x0b00, 0x0b11, 0x0b24, 0x0b31, 0x0b45, 0x0b50, 0x0b59, - 0x0b6b, 0x0b74, 0x0b78, 0x0b83, 0x0b94, 0x0b99, 0x0bab, 0x0bbd, - 0x0bcf, 0x0bdc, -} // Size: 604 bytes - -var isRegionStr string = "" + // Size: 3306 bytes + 0x0a1e, 0x0a25, 0x0a33, 0x0a39, 0x0a41, 0x0a56, 0x0a5b, 0x0a61, + 0x0a6e, 0x0a7d, 0x0a84, 0x0a97, 0x0aa5, 0x0ab8, 0x0acb, 0x0adf, + 0x0af4, 0x0afb, 0x0b0f, 0x0b20, 0x0b31, 0x0b44, 0x0b51, 0x0b65, + 0x0b70, 0x0b79, 0x0b8b, 0x0b94, 0x0b98, 0x0ba3, 0x0bb4, 0x0bb9, + 0x0bcb, 0x0bdd, 0x0bef, 0x0bfc, +} // Size: 608 bytes + +const isRegionStr string = "" + // Size: 3329 bytes "Ascension-eyjaAndorraSameinuðu arabísku furstadæminAfganistanAntígva og " + "BarbúdaAngvillaAlbaníaArmeníaAngólaSuðurskautslandiðArgentínaBandaríska " + "SamóaAusturríkiÁstralíaArúbaÁlandseyjarAserbaídsjanBosnía og Hersegóvína" + @@ -40653,16 +45749,17 @@ var isRegionStr string = "" + // Size: 3306 bytes "inSýrlandSvasílandTristan da CunhaTurks- og CaicoseyjarTsjadFrönsku suðl" + "ægu landsvæðinTógóTaílandTadsjikistanTókeláTímor-LesteTúrkmenistanTúnis" + "TongaTyrklandTrínidad og TóbagóTúvalúTaívanTansaníaÚkraínaÚgandaSmáeyjar" + - " BandaríkjannaBandaríkinÚrúgvæÚsbekistanVatíkaniðSankti Vinsent og Grena" + - "díneyjarVenesúelaBresku JómfrúaeyjarBandarísku JómfrúaeyjarVíetnamVanúat" + - "úWallis- og FútúnaeyjarSamóaKósóvóJemenMayotteSuður-AfríkaSambíaSimbabv" + - "eÓþekkt svæðiHeimurinnAfríkaNorður-AmeríkaSuður-AmeríkaEyjaálfaVestur-Af" + - "ríkaMið-AmeríkaAustur-AfríkaNorður-AfríkaMið-AfríkaSuðurhluti AfríkuAmer" + - "íkaAmeríka norðan MexikóKaríbahafiðAustur-AsíaSuður-AsíaSuðaustur-AsíaS" + - "uður-EvrópaÁstralasíaMelanesíaMíkrónesíusvæðiðPólýnesíaAsíaMið-AsíaVestu" + - "r-AsíaEvrópaAustur-EvrópaNorður-EvrópaVestur-EvrópaRómanska Ameríka" - -var isRegionIdx = []uint16{ // 290 elements + " BandaríkjannaSameinuðu þjóðirnarBandaríkinÚrúgvæÚsbekistanVatíkaniðSank" + + "ti Vinsent og GrenadíneyjarVenesúelaBresku JómfrúaeyjarBandarísku Jómfrú" + + "aeyjarVíetnamVanúatúWallis- og FútúnaeyjarSamóaKósóvóJemenMayotteSuður-A" + + "fríkaSambíaSimbabveÓþekkt svæðiHeimurinnAfríkaNorður-AmeríkaSuður-Amerík" + + "aEyjaálfaVestur-AfríkaMið-AmeríkaAustur-AfríkaNorður-AfríkaMið-AfríkaSuð" + + "urhluti AfríkuAmeríkaAmeríka norðan MexikóKaríbahafiðAustur-AsíaSuður-As" + + "íaSuðaustur-AsíaSuður-EvrópaÁstralasíaMelanesíaMíkrónesíusvæðiðPólýnesí" + + "aAsíaMið-AsíaVestur-AsíaEvrópaAustur-EvrópaNorður-EvrópaVestur-EvrópaRóm" + + "anska Ameríka" + +var isRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000e, 0x0015, 0x0036, 0x0040, 0x0054, 0x005c, 0x0064, 0x006c, 0x0073, 0x0086, 0x0090, 0x00a2, 0x00ad, 0x00b7, 0x00bd, @@ -40674,84 +45771,84 @@ var isRegionIdx = []uint16{ // 290 elements 0x0299, 0x029f, 0x02a8, 0x02b3, 0x02bf, 0x02c9, 0x02d1, 0x02db, // Entry 40 - 7F 0x02f3, 0x02f9, 0x0309, 0x0310, 0x0318, 0x0322, 0x032f, 0x0337, - 0x033d, 0x0348, 0x0359, 0x0361, 0x036d, 0x037b, 0x0388, 0x0391, - 0x039a, 0x039f, 0x03a7, 0x03ae, 0x03b6, 0x03c6, 0x03ce, 0x03d2, - 0x03dc, 0x03e5, 0x03ec, 0x03f2, 0x0400, 0x0410, 0x0419, 0x0442, - 0x044b, 0x044f, 0x045c, 0x0464, 0x0486, 0x049d, 0x04a6, 0x04af, - 0x04b6, 0x04c2, 0x04ce, 0x04d9, 0x04e0, 0x04e7, 0x04eb, 0x04f2, - 0x050a, 0x050f, 0x0514, 0x051b, 0x0523, 0x0529, 0x0531, 0x053b, - 0x0540, 0x0546, 0x054f, 0x0559, 0x0563, 0x056e, 0x0583, 0x0591, + 0x033d, 0x0348, 0x0359, 0x0359, 0x0361, 0x036d, 0x037b, 0x0388, + 0x0391, 0x039a, 0x039f, 0x03a7, 0x03ae, 0x03b6, 0x03c6, 0x03ce, + 0x03d2, 0x03dc, 0x03e5, 0x03ec, 0x03f2, 0x0400, 0x0410, 0x0419, + 0x0442, 0x044b, 0x044f, 0x045c, 0x0464, 0x0486, 0x049d, 0x04a6, + 0x04af, 0x04b6, 0x04c2, 0x04ce, 0x04d9, 0x04e0, 0x04e7, 0x04eb, + 0x04f2, 0x050a, 0x050f, 0x0514, 0x051b, 0x0523, 0x0529, 0x0531, + 0x053b, 0x0540, 0x0546, 0x054f, 0x0559, 0x0563, 0x056e, 0x0583, // Entry 80 - BF - 0x059e, 0x05a5, 0x05b0, 0x05b9, 0x05bd, 0x05c5, 0x05d3, 0x05e0, - 0x05ea, 0x05f3, 0x05fb, 0x0603, 0x060d, 0x0615, 0x061c, 0x0624, - 0x062c, 0x0634, 0x0643, 0x064d, 0x0657, 0x0664, 0x066f, 0x0674, - 0x0684, 0x068e, 0x06ad, 0x06c2, 0x06cb, 0x06d6, 0x06e0, 0x06e5, - 0x06ef, 0x06fb, 0x0702, 0x070a, 0x0712, 0x071c, 0x0724, 0x0735, - 0x073b, 0x0746, 0x074f, 0x0759, 0x0760, 0x0767, 0x076c, 0x0772, - 0x0776, 0x0784, 0x0789, 0x078f, 0x0794, 0x07a8, 0x07bb, 0x07c7, - 0x07cf, 0x07d7, 0x07f0, 0x07fe, 0x080d, 0x0832, 0x083b, 0x0840, + 0x0591, 0x059e, 0x05a5, 0x05b0, 0x05b9, 0x05bd, 0x05c5, 0x05d3, + 0x05e0, 0x05ea, 0x05f3, 0x05fb, 0x0603, 0x060d, 0x0615, 0x061c, + 0x0624, 0x062c, 0x0634, 0x0643, 0x064d, 0x0657, 0x0664, 0x066f, + 0x0674, 0x0684, 0x068e, 0x06ad, 0x06c2, 0x06cb, 0x06d6, 0x06e0, + 0x06e5, 0x06ef, 0x06fb, 0x0702, 0x070a, 0x0712, 0x071c, 0x0724, + 0x0735, 0x073b, 0x0746, 0x074f, 0x0759, 0x0760, 0x0767, 0x076c, + 0x0772, 0x0776, 0x0784, 0x0789, 0x078f, 0x0794, 0x07a8, 0x07bb, + 0x07c7, 0x07cf, 0x07d7, 0x07f0, 0x07fe, 0x080d, 0x0832, 0x083b, // Entry C0 - FF - 0x0848, 0x084d, 0x085b, 0x0863, 0x086c, 0x0873, 0x087c, 0x0883, - 0x0890, 0x089e, 0x08ae, 0x08b4, 0x08bf, 0x08c8, 0x08d5, 0x08df, - 0x08f6, 0x0900, 0x090e, 0x091a, 0x0921, 0x092a, 0x0933, 0x0940, - 0x0957, 0x0962, 0x096f, 0x0977, 0x0981, 0x0991, 0x09a6, 0x09ab, - 0x09ca, 0x09d0, 0x09d8, 0x09e4, 0x09ec, 0x09f8, 0x0a05, 0x0a0b, - 0x0a10, 0x0a18, 0x0a2d, 0x0a35, 0x0a3c, 0x0a45, 0x0a4e, 0x0a55, - 0x0a6d, 0x0a78, 0x0a81, 0x0a8c, 0x0a97, 0x0ab7, 0x0ac1, 0x0ad6, - 0x0af0, 0x0af8, 0x0b01, 0x0b19, 0x0b1f, 0x0b28, 0x0b2d, 0x0b34, + 0x0840, 0x0848, 0x084d, 0x085b, 0x0863, 0x086c, 0x0873, 0x087c, + 0x0883, 0x0890, 0x089e, 0x08ae, 0x08b4, 0x08bf, 0x08c8, 0x08d5, + 0x08df, 0x08f6, 0x0900, 0x090e, 0x091a, 0x0921, 0x092a, 0x0933, + 0x0940, 0x0957, 0x0962, 0x096f, 0x0977, 0x0981, 0x0991, 0x09a6, + 0x09ab, 0x09ca, 0x09d0, 0x09d8, 0x09e4, 0x09ec, 0x09f8, 0x0a05, + 0x0a0b, 0x0a10, 0x0a18, 0x0a2d, 0x0a35, 0x0a3c, 0x0a45, 0x0a4e, + 0x0a55, 0x0a6d, 0x0a84, 0x0a8f, 0x0a98, 0x0aa3, 0x0aae, 0x0ace, + 0x0ad8, 0x0aed, 0x0b07, 0x0b0f, 0x0b18, 0x0b30, 0x0b36, 0x0b3f, // Entry 100 - 13F - 0x0b42, 0x0b49, 0x0b51, 0x0b61, 0x0b6a, 0x0b71, 0x0b81, 0x0b90, - 0x0b99, 0x0ba7, 0x0bb4, 0x0bc2, 0x0bd1, 0x0bdd, 0x0bf0, 0x0bf8, - 0x0c10, 0x0c1d, 0x0c29, 0x0c35, 0x0c45, 0x0c53, 0x0c5f, 0x0c69, - 0x0c7f, 0x0c8b, 0x0c90, 0x0c9a, 0x0ca6, 0x0cad, 0x0cbb, 0x0cca, - 0x0cd8, 0x0cea, -} // Size: 604 bytes - -var itRegionStr string = "" + // Size: 3033 bytes + 0x0b44, 0x0b4b, 0x0b59, 0x0b60, 0x0b68, 0x0b78, 0x0b81, 0x0b88, + 0x0b98, 0x0ba7, 0x0bb0, 0x0bbe, 0x0bcb, 0x0bd9, 0x0be8, 0x0bf4, + 0x0c07, 0x0c0f, 0x0c27, 0x0c34, 0x0c40, 0x0c4c, 0x0c5c, 0x0c6a, + 0x0c76, 0x0c80, 0x0c96, 0x0ca2, 0x0ca7, 0x0cb1, 0x0cbd, 0x0cc4, + 0x0cd2, 0x0ce1, 0x0cef, 0x0d01, +} // Size: 608 bytes + +const itRegionStr string = "" + // Size: 3030 bytes "Isola AscensioneAndorraEmirati Arabi UnitiAfghanistanAntigua e BarbudaAn" + "guillaAlbaniaArmeniaAngolaAntartideArgentinaSamoa americaneAustriaAustra" + "liaArubaIsole ÅlandAzerbaigianBosnia ed ErzegovinaBarbadosBangladeshBelg" + "ioBurkina FasoBulgariaBahreinBurundiBeninSaint-BarthélemyBermudaBruneiBo" + - "liviaCaraibi OlandesiBrasileBahamasBhutanIsola BouvetBotswanaBielorussia" + + "liviaCaraibi olandesiBrasileBahamasBhutanIsola BouvetBotswanaBielorussia" + "BelizeCanadaIsole Cocos (Keeling)Congo - KinshasaRepubblica Centrafrican" + "aCongo-BrazzavilleSvizzeraCosta d’AvorioIsole CookCileCamerunCinaColombi" + - "aIsola di ClippertonCosta RicaCubaCapo VerdeCuraçaoIsola ChristmasCiproR" + - "epubblica CecaGermaniaDiego GarciaGibutiDanimarcaDominicaRepubblica Domi" + - "nicanaAlgeriaCeuta e MelillaEcuadorEstoniaEgittoSahara occidentaleEritre" + - "aSpagnaEtiopiaUnione EuropeaFinlandiaFigiIsole FalklandMicronesiaIsole F" + - "ær ØerFranciaGabonRegno UnitoGrenadaGeorgiaGuyana franceseGuernseyGhana" + - "GibilterraGroenlandiaGambiaGuineaGuadalupaGuinea EquatorialeGreciaGeorgi" + - "a del Sud e isole Sandwich australiGuatemalaGuamGuinea-BissauGuyanaRAS d" + - "i Hong KongIsole Heard e McDonaldHondurasCroaziaHaitiUngheriaIsole Canar" + - "ieIndonesiaIrlandaIsraeleIsola di ManIndiaTerritorio britannico dell’Oce" + - "ano IndianoIraqIranIslandaItaliaJerseyGiamaicaGiordaniaGiapponeKenyaKirg" + - "hizistanCambogiaKiribatiComoreSaint Kitts e NevisCorea del NordCorea del" + - " SudKuwaitIsole CaymanKazakistanLaosLibanoSaint LuciaLiechtensteinSri La" + - "nkaLiberiaLesothoLituaniaLussemburgoLettoniaLibiaMaroccoMonacoMoldaviaMo" + - "ntenegroSaint MartinMadagascarIsole MarshallRepubblica di MacedoniaMaliM" + - "yanmar (Birmania)MongoliaRAS di MacaoIsole Marianne settentrionaliMartin" + - "icaMauritaniaMontserratMaltaMauritiusMaldiveMalawiMessicoMalaysiaMozambi" + - "coNamibiaNuova CaledoniaNigerIsola NorfolkNigeriaNicaraguaPaesi BassiNor" + - "vegiaNepalNauruNiueNuova ZelandaOmanPanamáPerùPolinesia francesePapua Nu" + - "ova GuineaFilippinePakistanPoloniaSaint Pierre e MiquelonIsole PitcairnP" + - "ortoricoTerritori palestinesiPortogalloPalauParaguayQatarOceania lontana" + - "RiunioneRomaniaSerbiaRussiaRuandaArabia SauditaIsole SalomoneSeychellesS" + - "udanSveziaSingaporeSant’ElenaSloveniaSvalbard e Jan MayenSlovacchiaSierr" + - "a LeoneSan MarinoSenegalSomaliaSurinameSud SudanSão Tomé e PríncipeEl Sa" + - "lvadorSint MaartenSiriaSwazilandTristan da CunhaIsole Turks e CaicosCiad" + - "Terre australi francesiTogoThailandiaTagikistanTokelauTimor LesteTurkmen" + - "istanTunisiaTongaTurchiaTrinidad e TobagoTuvaluTaiwanTanzaniaUcrainaUgan" + - "daAltre isole americane del PacificoStati UnitiUruguayUzbekistanCittà de" + - "l VaticanoSaint Vincent e GrenadinesVenezuelaIsole Vergini BritannicheIs" + - "ole Vergini AmericaneVietnamVanuatuWallis e FutunaSamoaKosovoYemenMayott" + - "eSudafricaZambiaZimbabweRegione sconosciutaMondoAfricaNord AmericaAmeric" + - "a del SudOceaniaAfrica occidentaleAmerica CentraleAfrica orientaleNordaf" + - "ricaAfrica centraleAfrica del SudAmericheAmerica del NordCaraibiAsia ori" + - "entaleAsia del SudSud-est asiaticoEuropa meridionaleAustralasiaMelanesia" + - "Regione MicronesianaPolinesiaAsiaAsia centraleAsia occidentaleEuropaEuro" + - "pa orientaleEuropa settentrionaleEuropa occidentaleAmerica Latina" - -var itRegionIdx = []uint16{ // 290 elements + "aIsola di ClippertonCosta RicaCubaCapo VerdeCuraçaoIsola ChristmasCiproC" + + "èchiaGermaniaDiego GarciaGibutiDanimarcaDominicaRepubblica DominicanaAl" + + "geriaCeuta e MelillaEcuadorEstoniaEgittoSahara occidentaleEritreaSpagnaE" + + "tiopiaUnione EuropeaFinlandiaFigiIsole FalklandMicronesiaIsole Fær ØerFr" + + "anciaGabonRegno UnitoGrenadaGeorgiaGuyana franceseGuernseyGhanaGibilterr" + + "aGroenlandiaGambiaGuineaGuadalupaGuinea EquatorialeGreciaGeorgia del Sud" + + " e Sandwich australiGuatemalaGuamGuinea-BissauGuyanaRAS di Hong KongIsol" + + "e Heard e McDonaldHondurasCroaziaHaitiUngheriaIsole CanarieIndonesiaIrla" + + "ndaIsraeleIsola di ManIndiaTerritorio britannico dell’Oceano IndianoIraq" + + "IranIslandaItaliaJerseyGiamaicaGiordaniaGiapponeKenyaKirghizistanCambogi" + + "aKiribatiComoreSaint Kitts e NevisCorea del NordCorea del SudKuwaitIsole" + + " CaymanKazakistanLaosLibanoSaint LuciaLiechtensteinSri LankaLiberiaLesot" + + "hoLituaniaLussemburgoLettoniaLibiaMaroccoMonacoMoldaviaMontenegroSaint M" + + "artinMadagascarIsole MarshallRepubblica di MacedoniaMaliMyanmar (Birmani" + + "a)MongoliaRAS di MacaoIsole Marianne settentrionaliMartinicaMauritaniaMo" + + "ntserratMaltaMauritiusMaldiveMalawiMessicoMalaysiaMozambicoNamibiaNuova " + + "CaledoniaNigerIsola NorfolkNigeriaNicaraguaPaesi BassiNorvegiaNepalNauru" + + "NiueNuova ZelandaOmanPanamáPerùPolinesia francesePapua Nuova GuineaFilip" + + "pinePakistanPoloniaSaint Pierre e MiquelonIsole PitcairnPortoricoTerrito" + + "ri palestinesiPortogalloPalauParaguayQatarOceania lontanaRiunioneRomania" + + "SerbiaRussiaRuandaArabia SauditaIsole SalomoneSeychellesSudanSveziaSinga" + + "poreSant’ElenaSloveniaSvalbard e Jan MayenSlovacchiaSierra LeoneSan Mari" + + "noSenegalSomaliaSurinameSud SudanSão Tomé e PríncipeEl SalvadorSint Maar" + + "tenSiriaSwazilandTristan da CunhaIsole Turks e CaicosCiadTerre australi " + + "francesiTogoThailandiaTagikistanTokelauTimor EstTurkmenistanTunisiaTonga" + + "TurchiaTrinidad e TobagoTuvaluTaiwanTanzaniaUcrainaUgandaAltre isole ame" + + "ricane del Pacificonazioni uniteStati UnitiUruguayUzbekistanCittà del Va" + + "ticanoSaint Vincent e GrenadinesVenezuelaIsole Vergini BritannicheIsole " + + "Vergini AmericaneVietnamVanuatuWallis e FutunaSamoaKosovoYemenMayotteSud" + + "africaZambiaZimbabweRegione sconosciutaMondoAfricaNord AmericaAmerica de" + + "l SudOceaniaAfrica occidentaleAmerica CentraleAfrica orientaleNordafrica" + + "Africa centraleAfrica del SudAmericheAmerica del NordCaraibiAsia orienta" + + "leAsia del SudSud-est asiaticoEuropa meridionaleAustralasiaMelanesiaRegi" + + "one micronesianaPolinesiaAsiaAsia centraleAsia occidentaleEuropaEuropa o" + + "rientaleEuropa settentrionaleEuropa occidentaleAmerica Latina" + +var itRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0017, 0x002a, 0x0035, 0x0046, 0x004e, 0x0055, 0x005c, 0x0062, 0x006b, 0x0074, 0x0083, 0x008a, 0x0093, 0x0098, @@ -40760,68 +45857,69 @@ var itRegionIdx = []uint16{ // 290 elements 0x013e, 0x0145, 0x014b, 0x0157, 0x015f, 0x016a, 0x0170, 0x0176, 0x018b, 0x019b, 0x01b3, 0x01c4, 0x01cc, 0x01dc, 0x01e6, 0x01ea, 0x01f1, 0x01f5, 0x01fd, 0x0210, 0x021a, 0x021e, 0x0228, 0x0230, - 0x023f, 0x0244, 0x0253, 0x025b, 0x0267, 0x026d, 0x0276, 0x027e, + 0x023f, 0x0244, 0x024b, 0x0253, 0x025f, 0x0265, 0x026e, 0x0276, // Entry 40 - 7F - 0x0293, 0x029a, 0x02a9, 0x02b0, 0x02b7, 0x02bd, 0x02cf, 0x02d6, - 0x02dc, 0x02e3, 0x02f1, 0x02fa, 0x02fe, 0x030c, 0x0316, 0x0325, - 0x032c, 0x0331, 0x033c, 0x0343, 0x034a, 0x0359, 0x0361, 0x0366, - 0x0370, 0x037b, 0x0381, 0x0387, 0x0390, 0x03a2, 0x03a8, 0x03d1, - 0x03da, 0x03de, 0x03eb, 0x03f1, 0x0401, 0x0417, 0x041f, 0x0426, - 0x042b, 0x0433, 0x0440, 0x0449, 0x0450, 0x0457, 0x0463, 0x0468, - 0x0493, 0x0497, 0x049b, 0x04a2, 0x04a8, 0x04ae, 0x04b6, 0x04bf, - 0x04c7, 0x04cc, 0x04d8, 0x04e0, 0x04e8, 0x04ee, 0x0501, 0x050f, + 0x028b, 0x0292, 0x02a1, 0x02a8, 0x02af, 0x02b5, 0x02c7, 0x02ce, + 0x02d4, 0x02db, 0x02e9, 0x02e9, 0x02f2, 0x02f6, 0x0304, 0x030e, + 0x031d, 0x0324, 0x0329, 0x0334, 0x033b, 0x0342, 0x0351, 0x0359, + 0x035e, 0x0368, 0x0373, 0x0379, 0x037f, 0x0388, 0x039a, 0x03a0, + 0x03c3, 0x03cc, 0x03d0, 0x03dd, 0x03e3, 0x03f3, 0x0409, 0x0411, + 0x0418, 0x041d, 0x0425, 0x0432, 0x043b, 0x0442, 0x0449, 0x0455, + 0x045a, 0x0485, 0x0489, 0x048d, 0x0494, 0x049a, 0x04a0, 0x04a8, + 0x04b1, 0x04b9, 0x04be, 0x04ca, 0x04d2, 0x04da, 0x04e0, 0x04f3, // Entry 80 - BF - 0x051c, 0x0522, 0x052e, 0x0538, 0x053c, 0x0542, 0x054d, 0x055a, - 0x0563, 0x056a, 0x0571, 0x0579, 0x0584, 0x058c, 0x0591, 0x0598, - 0x059e, 0x05a6, 0x05b0, 0x05bc, 0x05c6, 0x05d4, 0x05eb, 0x05ef, - 0x0601, 0x0609, 0x0615, 0x0632, 0x063b, 0x0645, 0x064f, 0x0654, - 0x065d, 0x0664, 0x066a, 0x0671, 0x0679, 0x0682, 0x0689, 0x0698, - 0x069d, 0x06aa, 0x06b1, 0x06ba, 0x06c5, 0x06cd, 0x06d2, 0x06d7, - 0x06db, 0x06e8, 0x06ec, 0x06f3, 0x06f8, 0x070a, 0x071c, 0x0725, - 0x072d, 0x0734, 0x074b, 0x0759, 0x0762, 0x0777, 0x0781, 0x0786, + 0x0501, 0x050e, 0x0514, 0x0520, 0x052a, 0x052e, 0x0534, 0x053f, + 0x054c, 0x0555, 0x055c, 0x0563, 0x056b, 0x0576, 0x057e, 0x0583, + 0x058a, 0x0590, 0x0598, 0x05a2, 0x05ae, 0x05b8, 0x05c6, 0x05dd, + 0x05e1, 0x05f3, 0x05fb, 0x0607, 0x0624, 0x062d, 0x0637, 0x0641, + 0x0646, 0x064f, 0x0656, 0x065c, 0x0663, 0x066b, 0x0674, 0x067b, + 0x068a, 0x068f, 0x069c, 0x06a3, 0x06ac, 0x06b7, 0x06bf, 0x06c4, + 0x06c9, 0x06cd, 0x06da, 0x06de, 0x06e5, 0x06ea, 0x06fc, 0x070e, + 0x0717, 0x071f, 0x0726, 0x073d, 0x074b, 0x0754, 0x0769, 0x0773, // Entry C0 - FF - 0x078e, 0x0793, 0x07a2, 0x07aa, 0x07b1, 0x07b7, 0x07bd, 0x07c3, - 0x07d1, 0x07df, 0x07e9, 0x07ee, 0x07f4, 0x07fd, 0x0809, 0x0811, - 0x0825, 0x082f, 0x083b, 0x0845, 0x084c, 0x0853, 0x085b, 0x0864, - 0x087a, 0x0885, 0x0891, 0x0896, 0x089f, 0x08af, 0x08c3, 0x08c7, - 0x08de, 0x08e2, 0x08ec, 0x08f6, 0x08fd, 0x0908, 0x0914, 0x091b, - 0x0920, 0x0927, 0x0938, 0x093e, 0x0944, 0x094c, 0x0953, 0x0959, - 0x097b, 0x0986, 0x098d, 0x0997, 0x09aa, 0x09c4, 0x09cd, 0x09e6, - 0x09fd, 0x0a04, 0x0a0b, 0x0a1a, 0x0a1f, 0x0a25, 0x0a2a, 0x0a31, + 0x0778, 0x0780, 0x0785, 0x0794, 0x079c, 0x07a3, 0x07a9, 0x07af, + 0x07b5, 0x07c3, 0x07d1, 0x07db, 0x07e0, 0x07e6, 0x07ef, 0x07fb, + 0x0803, 0x0817, 0x0821, 0x082d, 0x0837, 0x083e, 0x0845, 0x084d, + 0x0856, 0x086c, 0x0877, 0x0883, 0x0888, 0x0891, 0x08a1, 0x08b5, + 0x08b9, 0x08d0, 0x08d4, 0x08de, 0x08e8, 0x08ef, 0x08f8, 0x0904, + 0x090b, 0x0910, 0x0917, 0x0928, 0x092e, 0x0934, 0x093c, 0x0943, + 0x0949, 0x096b, 0x0978, 0x0983, 0x098a, 0x0994, 0x09a7, 0x09c1, + 0x09ca, 0x09e3, 0x09fa, 0x0a01, 0x0a08, 0x0a17, 0x0a1c, 0x0a22, // Entry 100 - 13F - 0x0a3a, 0x0a40, 0x0a48, 0x0a5b, 0x0a60, 0x0a66, 0x0a72, 0x0a81, - 0x0a88, 0x0a9a, 0x0aaa, 0x0aba, 0x0ac4, 0x0ad3, 0x0ae1, 0x0ae9, - 0x0af9, 0x0b00, 0x0b0e, 0x0b1a, 0x0b2a, 0x0b3c, 0x0b47, 0x0b50, - 0x0b64, 0x0b6d, 0x0b71, 0x0b7e, 0x0b8e, 0x0b94, 0x0ba4, 0x0bb9, - 0x0bcb, 0x0bd9, -} // Size: 604 bytes - -var jaRegionStr string = "" + // Size: 4809 bytes + 0x0a27, 0x0a2e, 0x0a37, 0x0a3d, 0x0a45, 0x0a58, 0x0a5d, 0x0a63, + 0x0a6f, 0x0a7e, 0x0a85, 0x0a97, 0x0aa7, 0x0ab7, 0x0ac1, 0x0ad0, + 0x0ade, 0x0ae6, 0x0af6, 0x0afd, 0x0b0b, 0x0b17, 0x0b27, 0x0b39, + 0x0b44, 0x0b4d, 0x0b61, 0x0b6a, 0x0b6e, 0x0b7b, 0x0b8b, 0x0b91, + 0x0ba1, 0x0bb6, 0x0bc8, 0x0bd6, +} // Size: 608 bytes + +const jaRegionStr string = "" + // Size: 4839 bytes "アセンション島アンドラアラブ首長国連邦アフガニスタンアンティグア・バーブーダアンギラアルバニアアルメニアアンゴラ南極アルゼンチン米領サモアオース" + "トリアオーストラリアアルバオーランド諸島アゼルバイジャンボスニア・ヘルツェゴビナバルバドスバングラデシュベルギーブルキナファソブルガリアバー" + "レーンブルンジベナンサン・バルテルミー島バミューダブルネイボリビアオランダ領カリブブラジルバハマブータンブーベ島ボツワナベラルーシベリーズカ" + "ナダココス(キーリング)諸島コンゴ民主共和国(キンシャサ)中央アフリカ共和国コンゴ共和国(ブラザビル)スイスコートジボワールクック諸島チリカ" + - "メルーン中国コロンビアクリッパートン島コスタリカキューバカーボベルデキュラソークリスマス島キプロスチェコ共和国ドイツディエゴガルシア島ジブチ" + - "デンマークドミニカ国ドミニカ共和国アルジェリアセウタ・メリリャエクアドルエストニアエジプト西サハラエリトリアスペインエチオピア欧州連合フィン" + - "ランドフィジーフォークランド諸島ミクロネシア連邦フェロー諸島フランスガボンイギリスグレナダジョージア仏領ギアナガーンジーガーナジブラルタルグ" + - "リーンランドガンビアギニアグアドループ赤道ギニアギリシャ南ジョージア島・南サンドイッチ諸島グアテマラグアムギニアビサウガイアナ中華人民共和国" + - "香港特別行政区ハード島・マクドナルド諸島ホンジュラスクロアチアハイチハンガリーカナリア諸島インドネシアアイルランドイスラエルマン島インド英領" + - "インド洋地域イラクイランアイスランドイタリアジャージージャマイカヨルダン日本ケニアキルギスカンボジアキリバスコモロセントクリストファー・ネイ" + - "ビス朝鮮民主主義人民共和国大韓民国クウェートケイマン諸島カザフスタンラオスレバノンセントルシアリヒテンシュタインスリランカリベリアレソトリト" + - "アニアルクセンブルグラトビアリビアモロッコモナコモルドバモンテネグロサン・マルタンマダガスカルマーシャル諸島マケドニアマリミャンマーモンゴル" + - "中華人民共和国マカオ特別行政区北マリアナ諸島マルティニークモーリタニアモントセラトマルタモーリシャスモルディブマラウイメキシコマレーシアモザ" + - "ンビークナミビアニューカレドニアニジェールノーフォーク島ナイジェリアニカラグアオランダノルウェーネパールナウルニウエ島ニュージーランドオマー" + - "ンパナマペルー仏領ポリネシアパプアニューギニアフィリピンパキスタンポーランドサンピエール島・ミクロン島ピトケアン諸島プエルトリコパレスチナポ" + + "メルーン中国コロンビアクリッパートン島コスタリカキューバカーボベルデキュラソークリスマス島キプロスチェコドイツディエゴガルシア島ジブチデンマ" + + "ークドミニカ国ドミニカ共和国アルジェリアセウタ・メリリャエクアドルエストニアエジプト西サハラエリトリアスペインエチオピア欧州連合フィンランド" + + "フィジーフォークランド諸島ミクロネシア連邦フェロー諸島フランスガボンイギリスグレナダジョージア仏領ギアナガーンジーガーナジブラルタルグリーン" + + "ランドガンビアギニアグアドループ赤道ギニアギリシャ南ジョージア島・南サンドイッチ諸島グアテマラグアムギニアビサウガイアナ中華人民共和国香港特" + + "別行政区ハード島・マクドナルド諸島ホンジュラスクロアチアハイチハンガリーカナリア諸島インドネシアアイルランドイスラエルマン島インド英領インド" + + "洋地域イラクイランアイスランドイタリアジャージージャマイカヨルダン日本ケニアキルギスカンボジアキリバスコモロセントクリストファー・ネーヴィス" + + "朝鮮民主主義人民共和国大韓民国クウェートケイマン諸島カザフスタンラオスレバノンセントルシアリヒテンシュタインスリランカリベリアレソトリトアニ" + + "アルクセンブルクラトビアリビアモロッコモナコモルドバモンテネグロサン・マルタンマダガスカルマーシャル諸島マケドニアマリミャンマーモンゴル中華" + + "人民共和国マカオ特別行政区北マリアナ諸島マルティニークモーリタニアモントセラトマルタモーリシャスモルディブマラウイメキシコマレーシアモザンビ" + + "ークナミビアニューカレドニアニジェールノーフォーク島ナイジェリアニカラグアオランダノルウェーネパールナウルニウエニュージーランドオマーンパナ" + + "マペルー仏領ポリネシアパプアニューギニアフィリピンパキスタンポーランドサンピエール島・ミクロン島ピトケアン諸島プエルトリコパレスチナ自治区ポ" + "ルトガルパラオパラグアイカタールオセアニア周辺地域レユニオン島ルーマニアセルビアロシアルワンダサウジアラビアソロモン諸島セーシェルスーダンス" + "ウェーデンシンガポールセントヘレナスロベニアスバールバル諸島・ヤンマイエン島スロバキアシエラレオネサンマリノセネガルソマリアスリナム南スーダ" + "ンサントメ・プリンシペエルサルバドルシント・マールテンシリアスワジランドトリスタン・ダ・クーニャタークス・カイコス諸島チャド仏領極南諸島トー" + - "ゴタイタジキスタントケラウ東ティモールトルクメニスタンチュニジアトンガトルコトリニダード・トバゴツバル台湾タンザニアウクライナウガンダ米領太" + - "平洋諸島アメリカ合衆国ウルグアイウズベキスタンバチカン市国セントビンセント・グレナディーン諸島ベネズエラ英領ヴァージン諸島米領ヴァージン諸島" + - "ベトナムバヌアツウォリス・フツナサモアコソボイエメンマヨット島南アフリカザンビアジンバブエ不明な地域世界アフリカ北アメリカ大陸南アメリカオセ" + - "アニア西アフリカ中央アメリカ東アフリカ北アフリカ中部アフリカ南部アフリカアメリカ大陸北アメリカカリブ東アジア南アジア東南アジア南ヨーロッパオ" + - "ーストララシアメラネシアミクロネシアポリネシアアジア中央アジア西アジアヨーロッパ東ヨーロッパ北ヨーロッパ西ヨーロッパラテンアメリカ" - -var jaRegionIdx = []uint16{ // 290 elements + "ゴタイタジキスタントケラウ東ティモールトルクメニスタンチュニジアトンガトルコトリニダード・トバゴツバル台湾タンザニアウクライナウガンダ合衆国" + + "領有小離島こくさいれんごうアメリカ合衆国ウルグアイウズベキスタンバチカン市国セントビンセント及びグレナディーン諸島ベネズエラ英領ヴァージン諸" + + "島米領ヴァージン諸島ベトナムバヌアツウォリス・フツナサモアコソボイエメンマヨット島南アフリカザンビアジンバブエ不明な地域世界アフリカ北アメリ" + + "カ大陸南アメリカオセアニア西アフリカ中央アメリカ東アフリカ北アフリカ中部アフリカ南部アフリカアメリカ大陸北アメリカカリブ東アジア南アジア東南" + + "アジア南ヨーロッパオーストララシアメラネシアミクロネシアポリネシアアジア中央アジア西アジアヨーロッパ東ヨーロッパ北ヨーロッパ西ヨーロッパラテ" + + "ンアメリカ" + +var jaRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0015, 0x0021, 0x0039, 0x004e, 0x0072, 0x007e, 0x008d, 0x009c, 0x00a8, 0x00ae, 0x00c0, 0x00cf, 0x00e1, 0x00f6, 0x00ff, @@ -40830,488 +45928,489 @@ var jaRegionIdx = []uint16{ // 290 elements 0x0231, 0x023a, 0x0246, 0x0252, 0x025e, 0x026d, 0x0279, 0x0282, 0x02a2, 0x02cb, 0x02e6, 0x0309, 0x0312, 0x032a, 0x0339, 0x033f, 0x034e, 0x0354, 0x0363, 0x037b, 0x038a, 0x0396, 0x03a8, 0x03b7, - 0x03c9, 0x03d5, 0x03e7, 0x03f0, 0x040b, 0x0414, 0x0423, 0x0432, + 0x03c9, 0x03d5, 0x03de, 0x03e7, 0x0402, 0x040b, 0x041a, 0x0429, // Entry 40 - 7F - 0x0447, 0x0459, 0x0471, 0x0480, 0x048f, 0x049b, 0x04a7, 0x04b6, - 0x04c2, 0x04d1, 0x04dd, 0x04ef, 0x04fb, 0x0516, 0x052e, 0x0540, - 0x054c, 0x0555, 0x0561, 0x056d, 0x057c, 0x058b, 0x059a, 0x05a3, - 0x05b5, 0x05ca, 0x05d6, 0x05df, 0x05f1, 0x0600, 0x060c, 0x063f, - 0x064e, 0x0657, 0x0669, 0x0675, 0x069f, 0x06c6, 0x06d8, 0x06e7, - 0x06f0, 0x06ff, 0x0711, 0x0723, 0x0735, 0x0744, 0x074d, 0x0756, - 0x076e, 0x0777, 0x0780, 0x0792, 0x079e, 0x07ad, 0x07bc, 0x07c8, - 0x07ce, 0x07d7, 0x07e3, 0x07f2, 0x07fe, 0x0807, 0x0834, 0x0855, + 0x043e, 0x0450, 0x0468, 0x0477, 0x0486, 0x0492, 0x049e, 0x04ad, + 0x04b9, 0x04c8, 0x04d4, 0x04d4, 0x04e6, 0x04f2, 0x050d, 0x0525, + 0x0537, 0x0543, 0x054c, 0x0558, 0x0564, 0x0573, 0x0582, 0x0591, + 0x059a, 0x05ac, 0x05c1, 0x05cd, 0x05d6, 0x05e8, 0x05f7, 0x0603, + 0x0636, 0x0645, 0x064e, 0x0660, 0x066c, 0x0696, 0x06bd, 0x06cf, + 0x06de, 0x06e7, 0x06f6, 0x0708, 0x071a, 0x072c, 0x073b, 0x0744, + 0x074d, 0x0765, 0x076e, 0x0777, 0x0789, 0x0795, 0x07a4, 0x07b3, + 0x07bf, 0x07c5, 0x07ce, 0x07da, 0x07e9, 0x07f5, 0x07fe, 0x082e, // Entry 80 - BF - 0x0861, 0x0870, 0x0882, 0x0894, 0x089d, 0x08a9, 0x08bb, 0x08d6, - 0x08e5, 0x08f1, 0x08fa, 0x0909, 0x091e, 0x092a, 0x0933, 0x093f, - 0x0948, 0x0954, 0x0966, 0x097b, 0x098d, 0x09a2, 0x09b1, 0x09b7, - 0x09c6, 0x09d2, 0x09ff, 0x0a14, 0x0a29, 0x0a3b, 0x0a4d, 0x0a56, - 0x0a68, 0x0a77, 0x0a83, 0x0a8f, 0x0a9e, 0x0ab0, 0x0abc, 0x0ad4, - 0x0ae3, 0x0af8, 0x0b0a, 0x0b19, 0x0b25, 0x0b34, 0x0b40, 0x0b49, - 0x0b55, 0x0b6d, 0x0b79, 0x0b82, 0x0b8b, 0x0ba0, 0x0bbb, 0x0bca, - 0x0bd9, 0x0be8, 0x0c0f, 0x0c24, 0x0c36, 0x0c45, 0x0c54, 0x0c5d, + 0x084f, 0x085b, 0x086a, 0x087c, 0x088e, 0x0897, 0x08a3, 0x08b5, + 0x08d0, 0x08df, 0x08eb, 0x08f4, 0x0903, 0x0918, 0x0924, 0x092d, + 0x0939, 0x0942, 0x094e, 0x0960, 0x0975, 0x0987, 0x099c, 0x09ab, + 0x09b1, 0x09c0, 0x09cc, 0x09f9, 0x0a0e, 0x0a23, 0x0a35, 0x0a47, + 0x0a50, 0x0a62, 0x0a71, 0x0a7d, 0x0a89, 0x0a98, 0x0aaa, 0x0ab6, + 0x0ace, 0x0add, 0x0af2, 0x0b04, 0x0b13, 0x0b1f, 0x0b2e, 0x0b3a, + 0x0b43, 0x0b4c, 0x0b64, 0x0b70, 0x0b79, 0x0b82, 0x0b97, 0x0bb2, + 0x0bc1, 0x0bd0, 0x0bdf, 0x0c06, 0x0c1b, 0x0c2d, 0x0c45, 0x0c54, // Entry C0 - FF - 0x0c6c, 0x0c78, 0x0c93, 0x0ca5, 0x0cb4, 0x0cc0, 0x0cc9, 0x0cd5, - 0x0cea, 0x0cfc, 0x0d0b, 0x0d17, 0x0d29, 0x0d3b, 0x0d4d, 0x0d5c, - 0x0d8c, 0x0d9b, 0x0dad, 0x0dbc, 0x0dc8, 0x0dd4, 0x0de0, 0x0def, - 0x0e0d, 0x0e22, 0x0e3d, 0x0e46, 0x0e58, 0x0e7c, 0x0e9d, 0x0ea6, - 0x0eb8, 0x0ec1, 0x0ec7, 0x0ed9, 0x0ee5, 0x0ef7, 0x0f0f, 0x0f1e, - 0x0f27, 0x0f30, 0x0f4e, 0x0f57, 0x0f5d, 0x0f6c, 0x0f7b, 0x0f87, - 0x0f9c, 0x0fb1, 0x0fc0, 0x0fd5, 0x0fe7, 0x101d, 0x102c, 0x1047, - 0x1062, 0x106e, 0x107a, 0x1092, 0x109b, 0x10a4, 0x10b0, 0x10bf, + 0x0c5d, 0x0c6c, 0x0c78, 0x0c93, 0x0ca5, 0x0cb4, 0x0cc0, 0x0cc9, + 0x0cd5, 0x0cea, 0x0cfc, 0x0d0b, 0x0d17, 0x0d29, 0x0d3b, 0x0d4d, + 0x0d5c, 0x0d8c, 0x0d9b, 0x0dad, 0x0dbc, 0x0dc8, 0x0dd4, 0x0de0, + 0x0def, 0x0e0d, 0x0e22, 0x0e3d, 0x0e46, 0x0e58, 0x0e7c, 0x0e9d, + 0x0ea6, 0x0eb8, 0x0ec1, 0x0ec7, 0x0ed9, 0x0ee5, 0x0ef7, 0x0f0f, + 0x0f1e, 0x0f27, 0x0f30, 0x0f4e, 0x0f57, 0x0f5d, 0x0f6c, 0x0f7b, + 0x0f87, 0x0f9f, 0x0fb7, 0x0fcc, 0x0fdb, 0x0ff0, 0x1002, 0x103b, + 0x104a, 0x1065, 0x1080, 0x108c, 0x1098, 0x10b0, 0x10b9, 0x10c2, // Entry 100 - 13F - 0x10ce, 0x10da, 0x10e9, 0x10f8, 0x10fe, 0x110a, 0x111f, 0x112e, - 0x113d, 0x114c, 0x115e, 0x116d, 0x117c, 0x118e, 0x11a0, 0x11b2, - 0x11c1, 0x11ca, 0x11d6, 0x11e2, 0x11f1, 0x1203, 0x121b, 0x122a, - 0x123c, 0x124b, 0x1254, 0x1263, 0x126f, 0x127e, 0x1290, 0x12a2, - 0x12b4, 0x12c9, -} // Size: 604 bytes - -var kaRegionStr string = "" + // Size: 9496 bytes + 0x10ce, 0x10dd, 0x10ec, 0x10f8, 0x1107, 0x1116, 0x111c, 0x1128, + 0x113d, 0x114c, 0x115b, 0x116a, 0x117c, 0x118b, 0x119a, 0x11ac, + 0x11be, 0x11d0, 0x11df, 0x11e8, 0x11f4, 0x1200, 0x120f, 0x1221, + 0x1239, 0x1248, 0x125a, 0x1269, 0x1272, 0x1281, 0x128d, 0x129c, + 0x12ae, 0x12c0, 0x12d2, 0x12e7, +} // Size: 608 bytes + +const kaRegionStr string = "" + // Size: 9436 bytes "ამაღლების კუნძულიანდორაარაბთა გაერთიანებული საამიროებიავღანეთიანტიგუა და" + - " ბარბუდაანგილიაალბანეთისომხეთიანგოლაანტარქტიკაარგენტინაამერიკის სამოაავს" + + " ბარბუდაანგვილაალბანეთისომხეთიანგოლაანტარქტიკაარგენტინაამერიკის სამოაავს" + "ტრიაავსტრალიაარუბაალანდის კუნძულებიაზერბაიჯანიბოსნია და ჰერცეგოვინაბარ" + "ბადოსიბანგლადეშიბელგიაბურკინა-ფასობულგარეთიბაჰრეინიბურუნდიბენინისენ-ბა" + - "რთელმიბერმუდიბრუნეიბოლივიაკარიბის ნიდერლანდებიბრაზილიაბაჰამის კუნძულებ" + - "იბჰუტანიბუვებოტსვანაბელარუსიბელიზიკანადაქოქოსის კუნძულებიკონგო - კინშა" + - "საცენტრალური აფრიკის რესპუბლიკაკონგო - ბრაზავილიშვეიცარიაკოტ-დივუარიკუ" + - "კის კუნძულებიჩილეკამერუნიჩინეთიკოლუმბიაკლიპერტონის კუნძულიკოსტა-რიკაკუ" + - "ბაკაბო-ვერდეკიურასაოშობის კუნძულიკვიპროსიჩეხეთის რესპუბლიკაგერმანიადიე" + - "გო-გარსიაჯიბუტიდანიადომინიკადომინიკელთა რესპუბლიკაალჟირისეუტა და მელილ" + - "აეკვადორიესტონეთიეგვიპტედასავლეთი საჰარაერიტრეაესპანეთიეთიოპიაევროკავშ" + - "ირიფინეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის კუნძულებისაფრანგეთი" + - "გაბონიდიდი ბრიტანეთიგრენადასაქართველოსაფრანგეთის გვიანაგერნსიგანაგიბრა" + - "ლტარიგრენლანდიაგამბიაგვინეაგვადელუპაეკვატორული გვინეასაბერძნეთისამხრეთ" + - "ი გეორგია და სამხრეთ სენდვიჩის კუნძულებიგვატემალაგუამიგვინეა-ბისაუგაია" + - "ნაჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთიჰერდი და მაკდონალ" + - "დის კუნძულებიჰონდურასიხორვატიაჰაიტიუნგრეთიკანარის კუნძულებიინდონეზიაირ" + - "ლანდიაისრაელიმენის კუნძულიინდოეთიბრიტ. ტერიტ. ინდ. ოკეანეშიერაყიირანიი" + - "სლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენიაყირგიზეთიკამბოჯაკირიბატიკ" + - "ომორის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთი კორეასამხრეთი კორეაქუვეი" + - "თიკაიმანის კუნძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხტენშტაინიშრი-ლანკა" + - "ლიბერიალესოთოლიტვალუქსემბურგილატვიალიბიამაროკომონაკომოლდოვამონტენეგროს" + - "ენ-მარტენიმადაგასკარიმარშალის კუნძულებიმაკედონიამალიმიანმარი (ბირმა)მო" + - "ნღოლეთიმაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინეთიჩრდილოეთ მარიან" + - "ას კუნძულებიმარტინიკამავრიტანიამონსერატიმალტამავრიკიმალდივის რესპუბლიკ" + - "ამალავიმექსიკამალაიზიამოზამბიკინამიბიაახალი კალედონიანიგერინორფოლკის კ" + - "უნძულინიგერიანიკარაგუანიდერლანდებინორვეგიანეპალინაურუნიუეახალი ზელანდი" + - "აომანიპანამაპერუსაფრანგეთის პოლინეზიაპაპუა-ახალი გვინეაფილიპინებიპაკის" + - "ტანიპოლონეთისენ-პიერი და მიკელონიპიტკერნის კუნძულებიპუერტო-რიკოპალესტი" + - "ნის ტერიტორიებიპორტუგალიაპალაუპარაგვაიკატარიშორეული ოკეანეთირეუნიონირუ" + - "მინეთისერბეთირუსეთირუანდასაუდის არაბეთისოლომონის კუნძულებისეიშელის კუნ" + - "ძულებისუდანიშვედეთისინგაპურიწმინდა ელენეს კუნძულისლოვენიაშპიცბერგენი დ" + - "ა იან-მაიენისლოვაკეთისიერა-ლეონესან-მარინოსენეგალისომალისურინამისამხრე" + - "თი სუდანისან-ტომე და პრინსიპისალვადორისინტ-მარტენისირიასვაზილენდიტრისტ" + - "ან-და-კუნიატერქსისა და კაიკოსის კუნძულებიჩადიფრანგული სამხრეთის ტერიტო" + - "რიებიტოგოტაილანდიტაჯიკეთიტოკელაუაღმოსავლეთი ტიმორითურქმენეთიტუნისიტონგ" + - "ათურქეთიტრინიდადი და ტობაგოტუვალუტაივანიტანზანიაუკრაინაუგანდააშშ-ის შო" + - "რეული კუნძულებიამერიკის შეერთებული შტატებიურუგვაიუზბეკეთიქალაქი ვატიკა" + - "ნისენტ-ვინსენტი და გრენადინებივენესუელაბრიტანეთის ვირჯინის კუნძულებიაშ" + - "შ-ის ვირჯინის კუნძულებივიეტნამივანუატუუოლისი და ფუტუნასამოაკოსოვოიემენ" + - "იმაიოტასამხრეთ აფრიკის რესპუბლიკაზამბიაზიმბაბვეუცნობი რეგიონიმსოფლიოაფ" + - "რიკაჩრდილოეთი ამერიკასამხრეთი ამერიკაოკეანეთიდასავლეთი აფრიკაცენტრალურ" + - "ი ამერიკააღმოსავლეთი აფრიკაჩრდილოეთი აფრიკაშუა აფრიკასამხრეთი აფრიკაამ" + - "ერიკებიამერიკის ჩრდილოეთიკარიბის ზღვააღმოსავლეთი აზიასამხრეთი აზიასამხ" + - "რეთ-აღმოსავლეთი აზიასამხრეთი ევროპაავსტრალაზიამელანეზიამიკრონეზიის რეგ" + - "იონიპოლინეზიააზიაცენტრალური აზიადასავლეთი აზიაევროპააღმოსავლეთი ევროპა" + - "ჩრდილოეთი ევროპადასავლეთი ევროპალათინური ამერიკა" - -var kaRegionIdx = []uint16{ // 290 elements + "რთელმიბერმუდაბრუნეიბოლივიაკარიბის ნიდერლანდებიბრაზილიაბაჰამის კუნძულებ" + + "იბუტანიბუვებოტსვანაბელარუსიბელიზიკანადაქოქოსის (კილინგის) კუნძულებიკონ" + + "გო - კინშასაცენტრალური აფრიკის რესპუბლიკაკონგო - ბრაზავილიშვეიცარიაკოტ" + + "-დივუარიკუკის კუნძულებიჩილეკამერუნიჩინეთიკოლუმბიაკლიპერტონის კუნძულიკოსტ" + + "ა-რიკაკუბაკაბო-ვერდეკიურასაოშობის კუნძულიკვიპროსიჩეხეთიგერმანიადიეგო-გ" + + "არსიაჯიბუტიდანიადომინიკადომინიკელთა რესპუბლიკაალჟირისეუტა და მელილაეკვ" + + "ადორიესტონეთიეგვიპტედასავლეთ საჰარაერიტრეაესპანეთიეთიოპიაევროკავშირიფი" + + "ნეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის კუნძულებისაფრანგეთიგაბონ" + + "იგაერთიანებული სამეფოგრენადასაქართველოსაფრანგეთის გვიანაგერნსიგანაგიბრ" + + "ალტარიგრენლანდიაგამბიაგვინეაგვადელუპაეკვატორული გვინეასაბერძნეთისამხრე" + + "თ ჯორჯია და სამხრეთ სენდვიჩის კუნძულებიგვატემალაგუამიგვინეა-ბისაუგაიან" + + "აჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთიჰერდი და მაკდონალდ" + + "ის კუნძულებიჰონდურასიხორვატიაჰაიტიუნგრეთიკანარის კუნძულებიინდონეზიაირლ" + + "ანდიაისრაელიმენის კუნძულიინდოეთიბრიტანეთის ტერიტორია ინდოეთის ოკეანეში" + + "ერაყიირანიისლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენიაყირგიზეთიკამბო" + + "ჯაკირიბატიკომორის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთ კორეასამხრეთ კ" + + "ორეაქუვეითიკაიმანის კუნძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხტენშტაინი" + + "შრი-ლანკალიბერიალესოთოლიტვალუქსემბურგილატვიალიბიამაროკომონაკომოლდოვამო" + + "ნტენეგროსენ-მარტენიმადაგასკარიმარშალის კუნძულებიმაკედონიამალიმიანმარი " + + "(ბირმა)მონღოლეთიმაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინეთიჩრდილოეთ" + + " მარიანას კუნძულებიმარტინიკამავრიტანიამონსერატიმალტამავრიკიმალდივებიმალა" + + "ვიმექსიკამალაიზიამოზამბიკინამიბიაახალი კალედონიანიგერინორფოლკის კუნძულ" + + "ინიგერიანიკარაგუანიდერლანდებინორვეგიანეპალინაურუნიუეახალი ზელანდიაომან" + + "იპანამაპერუსაფრანგეთის პოლინეზიაპაპუა-ახალი გვინეაფილიპინებიპაკისტანიპ" + + "ოლონეთისენ-პიერი და მიკელონიპიტკერნის კუნძულებიპუერტო-რიკოპალესტინის ტ" + + "ერიტორიებიპორტუგალიაპალაუპარაგვაიკატარიშორეული ოკეანეთირეუნიონირუმინეთ" + + "ისერბეთირუსეთირუანდასაუდის არაბეთისოლომონის კუნძულებისეიშელის კუნძულებ" + + "ისუდანიშვედეთისინგაპურიწმინდა ელენეს კუნძულისლოვენიაშპიცბერგენი და იან" + + "-მაიენისლოვაკეთისიერა-ლეონესან-მარინოსენეგალისომალისურინამისამხრეთ სუდან" + + "ისან-ტომე და პრინსიპისალვადორისინტ-მარტენისირიასვაზილენდიტრისტან-და-კუ" + + "ნიათერქს-ქაიქოსის კუნძულებიჩადიფრანგული სამხრეთის ტერიტორიებიტოგოტაილა" + + "ნდიტაჯიკეთიტოკელაუტიმორ-ლესტეთურქმენეთიტუნისიტონგათურქეთიტრინიდადი და " + + "ტობაგოტუვალუტაივანიტანზანიაუკრაინაუგანდააშშ-ის შორეული კუნძულებიგაეროა" + + "მერიკის შეერთებული შტატებიურუგვაიუზბეკეთიქალაქი ვატიკანისენტ-ვინსენტი " + + "და გრენადინებივენესუელაბრიტანეთის ვირჯინის კუნძულებიაშშ-ის ვირჯინის კუ" + + "ნძულებივიეტნამივანუატუუოლისი და ფუტუნასამოაკოსოვოიემენიმაიოტასამხრეთ ა" + + "ფრიკის რესპუბლიკაზამბიაზიმბაბვეუცნობი რეგიონიმსოფლიოაფრიკაჩრდილოეთ ამე" + + "რიკასამხრეთ ამერიკაოკეანეთიდასავლეთ აფრიკაცენტრალური ამერიკააღმოსავლეთ" + + " აფრიკაჩრდილოეთ აფრიკაშუა აფრიკასამხრეთ აფრიკაამერიკებიამერიკის ჩრდილოეთ" + + "იკარიბის ზღვააღმოსავლეთ აზიასამხრეთ აზიასამხრეთ-აღმოსავლეთ აზიასამხრეთ" + + " ევროპაავსტრალაზიამელანეზიამიკრონეზიის რეგიონიპოლინეზიააზიაცენტრალური აზ" + + "იადასავლეთ აზიაევროპააღმოსავლეთ ევროპაჩრდილოეთ ევროპადასავლეთ ევროპალა" + + "თინური ამერიკა" + +var kaRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0031, 0x0043, 0x009c, 0x00b4, 0x00e6, 0x00fb, 0x0113, 0x0128, 0x013a, 0x0158, 0x0173, 0x019b, 0x01b0, 0x01cb, 0x01da, 0x020b, 0x022c, 0x0267, 0x0282, 0x02a0, 0x02b2, 0x02d4, 0x02ef, 0x0307, 0x031c, 0x032e, 0x0350, 0x0365, 0x0377, 0x038c, 0x03c6, - 0x03de, 0x040f, 0x0424, 0x0430, 0x0448, 0x0460, 0x0472, 0x0484, - 0x04b5, 0x04dc, 0x052f, 0x055c, 0x0577, 0x0596, 0x05c1, 0x05cd, - 0x05e5, 0x05f7, 0x060f, 0x0646, 0x0662, 0x066e, 0x068a, 0x06a2, - 0x06c7, 0x06df, 0x0713, 0x072b, 0x074d, 0x075f, 0x076e, 0x0786, + 0x03de, 0x040f, 0x0421, 0x042d, 0x0445, 0x045d, 0x046f, 0x0481, + 0x04cd, 0x04f4, 0x0547, 0x0574, 0x058f, 0x05ae, 0x05d9, 0x05e5, + 0x05fd, 0x060f, 0x0627, 0x065e, 0x067a, 0x0686, 0x06a2, 0x06ba, + 0x06df, 0x06f7, 0x0709, 0x0721, 0x0743, 0x0755, 0x0764, 0x077c, // Entry 40 - 7F - 0x07c6, 0x07d8, 0x0801, 0x0819, 0x0831, 0x0846, 0x0874, 0x0889, - 0x08a1, 0x08b6, 0x08d7, 0x08e9, 0x08f5, 0x092f, 0x094d, 0x097e, - 0x099c, 0x09ae, 0x09d6, 0x09eb, 0x0a09, 0x0a3d, 0x0a4f, 0x0a5b, - 0x0a79, 0x0a97, 0x0aa9, 0x0abb, 0x0ad6, 0x0b07, 0x0b25, 0x0ba8, - 0x0bc3, 0x0bd2, 0x0bf4, 0x0c06, 0x0c97, 0x0ceb, 0x0d06, 0x0d1e, - 0x0d2d, 0x0d42, 0x0d73, 0x0d8e, 0x0da6, 0x0dbb, 0x0de0, 0x0df5, - 0x0e37, 0x0e46, 0x0e55, 0x0e6d, 0x0e7f, 0x0e8e, 0x0ea3, 0x0ebb, - 0x0ed0, 0x0edf, 0x0efa, 0x0f0f, 0x0f27, 0x0f58, 0x0f8e, 0x0fb9, + 0x07bc, 0x07ce, 0x07f7, 0x080f, 0x0827, 0x083c, 0x0867, 0x087c, + 0x0894, 0x08a9, 0x08ca, 0x08ca, 0x08dc, 0x08e8, 0x0922, 0x0940, + 0x0971, 0x098f, 0x09a1, 0x09db, 0x09f0, 0x0a0e, 0x0a42, 0x0a54, + 0x0a60, 0x0a7e, 0x0a9c, 0x0aae, 0x0ac0, 0x0adb, 0x0b0c, 0x0b2a, + 0x0ba7, 0x0bc2, 0x0bd1, 0x0bf3, 0x0c05, 0x0c96, 0x0cea, 0x0d05, + 0x0d1d, 0x0d2c, 0x0d41, 0x0d72, 0x0d8d, 0x0da5, 0x0dba, 0x0ddf, + 0x0df4, 0x0e60, 0x0e6f, 0x0e7e, 0x0e96, 0x0ea8, 0x0eb7, 0x0ecc, + 0x0ee4, 0x0ef9, 0x0f08, 0x0f23, 0x0f38, 0x0f50, 0x0f81, 0x0fb7, // Entry 80 - BF - 0x0fe1, 0x0ff6, 0x102a, 0x1042, 0x1051, 0x1063, 0x107f, 0x10a3, - 0x10bc, 0x10d1, 0x10e3, 0x10f2, 0x1113, 0x1125, 0x1134, 0x1146, - 0x1158, 0x116d, 0x118b, 0x11aa, 0x11cb, 0x11ff, 0x121a, 0x1226, - 0x1250, 0x126b, 0x12f3, 0x1340, 0x135b, 0x1379, 0x1394, 0x13a3, - 0x13b8, 0x13ef, 0x1401, 0x1416, 0x142e, 0x1449, 0x145e, 0x1489, - 0x149b, 0x14cc, 0x14e1, 0x14fc, 0x1520, 0x1538, 0x154a, 0x1559, - 0x1565, 0x158d, 0x159c, 0x15ae, 0x15ba, 0x15f7, 0x1629, 0x1647, - 0x1662, 0x167a, 0x16b3, 0x16ea, 0x1709, 0x1749, 0x1767, 0x1776, + 0x0fdf, 0x1004, 0x1019, 0x104d, 0x1065, 0x1074, 0x1086, 0x10a2, + 0x10c6, 0x10df, 0x10f4, 0x1106, 0x1115, 0x1136, 0x1148, 0x1157, + 0x1169, 0x117b, 0x1190, 0x11ae, 0x11cd, 0x11ee, 0x1222, 0x123d, + 0x1249, 0x1273, 0x128e, 0x1316, 0x1363, 0x137e, 0x139c, 0x13b7, + 0x13c6, 0x13db, 0x13f6, 0x1408, 0x141d, 0x1435, 0x1450, 0x1465, + 0x1490, 0x14a2, 0x14d3, 0x14e8, 0x1503, 0x1527, 0x153f, 0x1551, + 0x1560, 0x156c, 0x1594, 0x15a3, 0x15b5, 0x15c1, 0x15fe, 0x1630, + 0x164e, 0x1669, 0x1681, 0x16ba, 0x16f1, 0x1710, 0x1750, 0x176e, // Entry C0 - FF - 0x178e, 0x17a0, 0x17ce, 0x17e6, 0x17fe, 0x1813, 0x1825, 0x1837, - 0x185f, 0x1896, 0x18ca, 0x18dc, 0x18f1, 0x190c, 0x1947, 0x195f, - 0x19a4, 0x19bf, 0x19de, 0x19fa, 0x1a12, 0x1a24, 0x1a3c, 0x1a67, - 0x1a9d, 0x1ab8, 0x1ada, 0x1ae9, 0x1b07, 0x1b33, 0x1b87, 0x1b93, - 0x1be9, 0x1bf5, 0x1c0d, 0x1c25, 0x1c3a, 0x1c6e, 0x1c8c, 0x1c9e, - 0x1cad, 0x1cc2, 0x1cf7, 0x1d09, 0x1d1e, 0x1d36, 0x1d4b, 0x1d5d, - 0x1d9f, 0x1dec, 0x1e01, 0x1e19, 0x1e44, 0x1e92, 0x1ead, 0x1f00, - 0x1f45, 0x1f5d, 0x1f72, 0x1f9e, 0x1fad, 0x1fbf, 0x1fd1, 0x1fe3, + 0x177d, 0x1795, 0x17a7, 0x17d5, 0x17ed, 0x1805, 0x181a, 0x182c, + 0x183e, 0x1866, 0x189d, 0x18d1, 0x18e3, 0x18f8, 0x1913, 0x194e, + 0x1966, 0x19ab, 0x19c6, 0x19e5, 0x1a01, 0x1a19, 0x1a2b, 0x1a43, + 0x1a6b, 0x1aa1, 0x1abc, 0x1ade, 0x1aed, 0x1b0b, 0x1b37, 0x1b7b, + 0x1b87, 0x1bdd, 0x1be9, 0x1c01, 0x1c19, 0x1c2e, 0x1c4d, 0x1c6b, + 0x1c7d, 0x1c8c, 0x1ca1, 0x1cd6, 0x1ce8, 0x1cfd, 0x1d15, 0x1d2a, + 0x1d3c, 0x1d7e, 0x1d8d, 0x1dda, 0x1def, 0x1e07, 0x1e32, 0x1e80, + 0x1e9b, 0x1eee, 0x1f33, 0x1f4b, 0x1f60, 0x1f8c, 0x1f9b, 0x1fad, // Entry 100 - 13F - 0x202d, 0x203f, 0x2057, 0x207f, 0x2094, 0x20a6, 0x20d7, 0x2105, - 0x211d, 0x214b, 0x217f, 0x21b3, 0x21e1, 0x21fd, 0x2228, 0x2243, - 0x2277, 0x2299, 0x22c7, 0x22ec, 0x2330, 0x235b, 0x237c, 0x2397, - 0x23ce, 0x23e9, 0x23f5, 0x2420, 0x2448, 0x245a, 0x248e, 0x24bc, - 0x24ea, 0x2518, -} // Size: 604 bytes - -var kkRegionStr string = "" + // Size: 6084 bytes - "Әскенжін аралыАндорраБіріккен Араб ӘмірліктеріАуғанстанАнтигуа мен Барбу" + - "даАнгильяАлбанияАрменияАнголаАнтарктикаАргентинаАмерикандық СамоаАвстри" + + 0x1fbf, 0x1fd1, 0x201b, 0x202d, 0x2045, 0x206d, 0x2082, 0x2094, + 0x20c2, 0x20ed, 0x2105, 0x2130, 0x2164, 0x2195, 0x21c0, 0x21dc, + 0x2204, 0x221f, 0x2253, 0x2275, 0x22a0, 0x22c2, 0x2303, 0x232b, + 0x234c, 0x2367, 0x239e, 0x23b9, 0x23c5, 0x23f0, 0x2415, 0x2427, + 0x2458, 0x2483, 0x24ae, 0x24dc, +} // Size: 608 bytes + +const kkRegionStr string = "" + // Size: 6155 bytes + "Әскенжін аралыАндорраБіріккен Араб ӘмірліктеріАуғанстанАнтигуа және Барб" + + "удаАнгильяАлбанияАрменияАнголаАнтарктидаАргентинаАмерикалық СамоаАвстри" + "яАвстралияАрубаАланд аралдарыӘзірбайжанБосния және ГерцеговинаБарбадосБ" + "англадешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСен-БартелемиБерм" + "уд аралдарыБрунейБоливияКариб НидерландысыБразилияБагам аралдарыБутанБу" + "ве аралыБотсванаБеларусьБелизКанадаКокос (Килинг) аралдарыКонгоОрталық " + "Африка РеспубликасыКонго-Браззавиль РеспубликасыШвейцарияКот-д’ИвуарКук" + " аралдарыЧилиКамерунҚытайКолумбияКлиппертон аралыКоста-РикаКубаКабо-Верд" + - "еКюрасаоКристмас аралыКипрЧех РеспубликасыГерманияДиего-ГарсияДжибутиДа" + - "нияДоминикаДоминикан РеспубликасыАлжирСеута мен МелильяЭквадорЭстонияМы" + - "сырБатыс СахараЭритреяИспанияЭфиопияЕуропалық ОдақФинляндияФиджиФолклен" + - "д аралдарыМикронезияФарер аралдарыФранцияГабонБіріккен КорольдікГренада" + - "ГрузияФранцуз ГвианасыГернсиГанаГибралтарГренландияГамбияГвинеяГваделуп" + - "аЭкваторлық ГвинеяГрецияОңтүстік Георгия және Оңтүстік Сандвич аралдары" + - "ГватемалаГуамГвинея-БисауГайанаҚытай Халық Республикасының Гонг-Конг ар" + - "найы әкімшілік ауданыХерд аралы мен Макдональд аралдарыГондурасХорватия" + - "ГаитиВенгрияКанар аралдарыИндонезияИрландияИзраильМэн аралыҮндістанҮнді" + - " мұхитындағы Британ аймағыИракИранИсландияИталияДжерсиЯмайкаИорданияЖапо" + - "нияКенияҚырғызстанКамбоджаКирибатиКоморСент-Китс және НевисСолтүстік Ко" + - "реяОңтүстік КореяКувейтКайман аралдарыҚазақстанЛаосЛиванСент-ЛюсияЛихте" + - "нштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМороккоМонакоМолд" + - "оваЧерногорияСен-МартенМадагаскарМаршалл аралдарыМакедонияМалиМьянма (Б" + - "ирма)МоңғолияҚытай Халық Республикасының Макао арнайы әкімшілік ауданыС" + - "олтүстік Мариан аралдарыМартиникаМавританияМонтсерратМальтаМаврикийМаль" + - "див РеспубликасыМалавиМексикаМалайзияМозамбикНамибияЖаңа КаледонияНигер" + - "Норфолк аралыНигерияНикарагуаНидерландНорвегияНепалНауруНиуэЖаңа Зеланд" + - "ияОманПанамаПеруФранцуз ПолинезиясыПапуа — Жаңа ГвинеяФилиппинПәкістанП" + - "ольшаСен-Пьер және МикелонПиткэрн аралдарыПуэрто-РикоПалестина аймақтар" + - "ыПортугалияПалауПарагвайКатарАлыс ОкеанияРеюньонРумынияСербияРесейРуанд" + - "аСауд АрабиясыСоломон аралдарыСейшель аралдарыСуданШвецияСингапурӘулие " + - "Елена аралыСловенияШпицберген мен Ян-МайенСловакияСьерра-ЛеонеСан-Марин" + - "оСенегалСомалиСуринамОңтүстік СуданСан-Томе мен ПринсипиСальвадорСинт-М" + - "артенСирияСвазилендТристан-да-КуньяТеркс және Кайкос аралдарыЧадФранция" + - "ның оңтүстік аймақтарыТогоТайландТәжікстанТокелауТимор-ЛестеТүрікменста" + - "нТунисТонгаТүркияТринидад пен ТобагоТувалуТайваньТанзанияУкраинаУгандаА" + - "ҚШ-тың сыртқы кіші аралдарыАҚШУругвайӨзбекстанВатиканСент-Винсент және " + - "Гренадин аралдарыВенесуэлаБритандық Виргин аралдарыАҚШ-тың Виргин аралд" + - "арыВьетнамВануатуУоллис пен ФутунаСамоаКосовоЙеменМайоттаОңтүстік Африк" + - "а РеспубликасыЗамбияЗимбабвеБелгісіз аймақӘлемАфрикаСолтүстік АмерикаОң" + - "түстік АмерикаОкеанияБатыс АфрикаОрталық АмерикаШығыс АфрикаСолтүстік А" + - "фрикаОрталық АфрикаОңтүстік АфрикаСолтүстік және Оңтүстік АмерикаАмерик" + - "аның солтүстігіКарибШығыс АзияОңтүстік АзияОңтүстік-шығыс АзияОңтүстік " + - "ЕуропаАвстралазияМеланезияМикронезия аймағыПолинезияАзияОрталық АзияБат" + - "ыс АзияЕуропаШығыс ЕуропаСолтүстік ЕуропаБатыс ЕуропаЛатын Америкасы" - -var kkRegionIdx = []uint16{ // 290 elements + "еКюрасаоРождество аралыКипрЧехияГерманияДиего-ГарсияДжибутиДанияДоминик" + + "аДоминикан РеспубликасыАлжирСеута және МелильяЭквадорЭстонияМысырБатыс " + + "СахараЭритреяИспанияЭфиопияЕуропалық ОдақФинляндияФиджиФолкленд аралдар" + + "ыМикронезияФарер аралдарыФранцияГабонҰлыбританияГренадаГрузияФранцуз Гв" + + "ианасыГернсиГанаГибралтарГренландияГамбияГвинеяГваделупаЭкваторлық Гвин" + + "еяГрекияОңтүстік Георгия және Оңтүстік Сандвич аралдарыГватемалаГуамГви" + + "нея-БисауГайанаҚытай Халық Республикасының Гонконг арнайы әкімшілік ауд" + + "аныХерд аралы және Макдональд аралдарыГондурасХорватияГаитиВенгрияКанар" + + " аралдарыИндонезияИрландияИзраильМэн аралыҮндістанҮнді мұхитындағы Брита" + + "н аймағыИракИранИсландияИталияДжерсиЯмайкаИорданияЖапонияКенияҚырғызста" + + "нКамбоджаКирибатиКомор аралдарыСент-Китс және НевисСолтүстік КореяОңтүс" + + "тік КореяКувейтКайман аралдарыҚазақстанЛаосЛиванСент-ЛюсияЛихтенштейнШр" + + "и-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМолдоваЧерно" + + "горияСен-МартенМадагаскарМаршалл аралдарыМакедонияМалиМьянма (Бирма)Моң" + + "ғолияҚытай Халық Республикасының Макао арнайы әкімшілік ауданыСолтүстік" + + " Мариана аралдарыМартиникаМавританияМонтсерратМальтаМаврикийМальдив арал" + + "дарыМалавиМексикаМалайзияМозамбикНамибияЖаңа КаледонияНигерНорфолк арал" + + "ыНигерияНикарагуаНидерландНорвегияНепалНауруНиуэЖаңа ЗеландияОманПанама" + + "ПеруФранцуз ПолинезиясыПапуа — Жаңа ГвинеяФилиппинПәкістанПольшаСен-Пье" + + "р және МикелонПиткэрн аралдарыПуэрто-РикоПалестина аймақтарыПортугалияП" + + "алауПарагвайКатарАлыс ОкеанияРеюньонРумынияСербияРесейРуандаСауд Арабия" + + "сыСоломон аралдарыСейшель аралдарыСуданШвецияСингапурӘулие Елена аралыС" + + "ловенияШпицберген және Ян-МайенСловакияСьерра-ЛеонеСан-МариноСенегалСом" + + "алиСуринамОңтүстік СуданСан-Томе және ПринсипиСальвадорСинт-МартенСирия" + + "СвазилендТристан-да-КуньяТеркс және Кайкос аралдарыЧадФранцияның оңтүст" + + "ік аймақтарыТогоТайландТәжікстанТокелауТимор-ЛестеТүрікменстанТунисТонг" + + "аТүркияТринидад және ТобагоТувалуТайваньТанзанияУкраинаУгандаАҚШ-тың сы" + + "ртқы кіші аралдарыБіріккен Ұлттар ҰйымыАмерика Құрама ШтаттарыУругвайӨз" + + "бекстанВатиканСент-Винсент және Гренадин аралдарыВенесуэлаБритандық Вир" + + "гин аралдарыАҚШ-тың Виргин аралдарыВьетнамВануатуУоллис және ФутунаСамо" + + "аКосовоЙеменМайоттаОңтүстік Африка РеспубликасыЗамбияЗимбабвеБелгісіз а" + + "ймақӘлемАфрикаСолтүстік АмерикаОңтүстік АмерикаОкеанияБатыс АфрикаОртал" + + "ық АмерикаШығыс АфрикаСолтүстік АфрикаОрталық АфрикаОңтүстік АфрикаСолт" + + "үстік және Оңтүстік АмерикаСолтүстік Америка (аймақ)КарибШығыс АзияОңтү" + + "стік АзияОңтүстік-Шығыс АзияОңтүстік ЕуропаАвстралазияМеланезияМикронез" + + "ия аймағыПолинезияАзияОрталық АзияБатыс АзияЕуропаШығыс ЕуропаСолтүстік" + + " ЕуропаБатыс ЕуропаЛатын Америкасы" + +var kkRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x001b, 0x0029, 0x0059, 0x006b, 0x008f, 0x009d, 0x00ab, - 0x00b9, 0x00c5, 0x00d9, 0x00eb, 0x010c, 0x011a, 0x012c, 0x0136, + 0x0000, 0x001b, 0x0029, 0x0059, 0x006b, 0x0091, 0x009f, 0x00ad, + 0x00bb, 0x00c7, 0x00db, 0x00ed, 0x010c, 0x011a, 0x012c, 0x0136, 0x0151, 0x0165, 0x0191, 0x01a1, 0x01b3, 0x01c1, 0x01d8, 0x01e8, 0x01f6, 0x0204, 0x020e, 0x0227, 0x0244, 0x0250, 0x025e, 0x0281, 0x0291, 0x02ac, 0x02b6, 0x02c9, 0x02d9, 0x02e9, 0x02f3, 0x02ff, 0x0329, 0x0333, 0x0367, 0x039f, 0x03b1, 0x03c7, 0x03de, 0x03e6, 0x03f4, 0x03fe, 0x040e, 0x042d, 0x0440, 0x0448, 0x045b, 0x0469, - 0x0484, 0x048c, 0x04ab, 0x04bb, 0x04d2, 0x04e0, 0x04ea, 0x04fa, + 0x0486, 0x048e, 0x0498, 0x04a8, 0x04bf, 0x04cd, 0x04d7, 0x04e7, // Entry 40 - 7F - 0x0525, 0x052f, 0x054f, 0x055d, 0x056b, 0x0575, 0x058c, 0x059a, - 0x05a8, 0x05b6, 0x05d1, 0x05e3, 0x05ed, 0x060e, 0x0622, 0x063d, - 0x064b, 0x0655, 0x0678, 0x0686, 0x0692, 0x06b1, 0x06bd, 0x06c5, - 0x06d7, 0x06eb, 0x06f7, 0x0703, 0x0715, 0x0736, 0x0742, 0x079b, - 0x07ad, 0x07b5, 0x07cc, 0x07d8, 0x084b, 0x088b, 0x089b, 0x08ab, - 0x08b5, 0x08c3, 0x08de, 0x08f0, 0x0900, 0x090e, 0x091f, 0x092f, - 0x0968, 0x0970, 0x0978, 0x0988, 0x0994, 0x09a0, 0x09ac, 0x09bc, - 0x09ca, 0x09d4, 0x09e8, 0x09f8, 0x0a08, 0x0a12, 0x0a37, 0x0a54, + 0x0512, 0x051c, 0x053e, 0x054c, 0x055a, 0x0564, 0x057b, 0x0589, + 0x0597, 0x05a5, 0x05c0, 0x05c0, 0x05d2, 0x05dc, 0x05fd, 0x0611, + 0x062c, 0x063a, 0x0644, 0x065a, 0x0668, 0x0674, 0x0693, 0x069f, + 0x06a7, 0x06b9, 0x06cd, 0x06d9, 0x06e5, 0x06f7, 0x0718, 0x0724, + 0x077d, 0x078f, 0x0797, 0x07ae, 0x07ba, 0x082a, 0x086c, 0x087c, + 0x088c, 0x0896, 0x08a4, 0x08bf, 0x08d1, 0x08e1, 0x08ef, 0x0900, + 0x0910, 0x0949, 0x0951, 0x0959, 0x0969, 0x0975, 0x0981, 0x098d, + 0x099d, 0x09ab, 0x09b5, 0x09c9, 0x09d9, 0x09e9, 0x0a04, 0x0a29, // Entry 80 - BF - 0x0a6f, 0x0a7b, 0x0a98, 0x0aaa, 0x0ab2, 0x0abc, 0x0acf, 0x0ae5, - 0x0af6, 0x0b04, 0x0b10, 0x0b1a, 0x0b2e, 0x0b3a, 0x0b44, 0x0b52, - 0x0b5e, 0x0b6c, 0x0b80, 0x0b93, 0x0ba7, 0x0bc6, 0x0bd8, 0x0be0, - 0x0bf9, 0x0c09, 0x0c75, 0x0ca5, 0x0cb7, 0x0ccb, 0x0cdf, 0x0ceb, - 0x0cfb, 0x0d22, 0x0d2e, 0x0d3c, 0x0d4c, 0x0d5c, 0x0d6a, 0x0d85, - 0x0d8f, 0x0da8, 0x0db6, 0x0dc8, 0x0dda, 0x0dea, 0x0df4, 0x0dfe, - 0x0e06, 0x0e1f, 0x0e27, 0x0e33, 0x0e3b, 0x0e60, 0x0e84, 0x0e94, - 0x0ea4, 0x0eb0, 0x0ed7, 0x0ef6, 0x0f0b, 0x0f30, 0x0f44, 0x0f4e, + 0x0a46, 0x0a61, 0x0a6d, 0x0a8a, 0x0a9c, 0x0aa4, 0x0aae, 0x0ac1, + 0x0ad7, 0x0ae8, 0x0af6, 0x0b02, 0x0b0c, 0x0b20, 0x0b2c, 0x0b36, + 0x0b44, 0x0b50, 0x0b5e, 0x0b72, 0x0b85, 0x0b99, 0x0bb8, 0x0bca, + 0x0bd2, 0x0beb, 0x0bfb, 0x0c67, 0x0c99, 0x0cab, 0x0cbf, 0x0cd3, + 0x0cdf, 0x0cef, 0x0d0e, 0x0d1a, 0x0d28, 0x0d38, 0x0d48, 0x0d56, + 0x0d71, 0x0d7b, 0x0d94, 0x0da2, 0x0db4, 0x0dc6, 0x0dd6, 0x0de0, + 0x0dea, 0x0df2, 0x0e0b, 0x0e13, 0x0e1f, 0x0e27, 0x0e4c, 0x0e70, + 0x0e80, 0x0e90, 0x0e9c, 0x0ec3, 0x0ee2, 0x0ef7, 0x0f1c, 0x0f30, // Entry C0 - FF - 0x0f5e, 0x0f68, 0x0f7f, 0x0f8d, 0x0f9b, 0x0fa7, 0x0fb1, 0x0fbd, - 0x0fd6, 0x0ff5, 0x1014, 0x101e, 0x102a, 0x103a, 0x105a, 0x106a, - 0x1095, 0x10a5, 0x10bc, 0x10cf, 0x10dd, 0x10e9, 0x10f7, 0x1112, - 0x1139, 0x114b, 0x1160, 0x116a, 0x117c, 0x119a, 0x11cb, 0x11d1, - 0x1209, 0x1211, 0x121f, 0x1231, 0x123f, 0x1254, 0x126c, 0x1276, - 0x1280, 0x128c, 0x12b0, 0x12bc, 0x12ca, 0x12da, 0x12e8, 0x12f4, - 0x1328, 0x132e, 0x133c, 0x134e, 0x135c, 0x139e, 0x13b0, 0x13e0, - 0x140b, 0x1419, 0x1427, 0x1447, 0x1451, 0x145d, 0x1467, 0x1475, + 0x0f3a, 0x0f4a, 0x0f54, 0x0f6b, 0x0f79, 0x0f87, 0x0f93, 0x0f9d, + 0x0fa9, 0x0fc2, 0x0fe1, 0x1000, 0x100a, 0x1016, 0x1026, 0x1046, + 0x1056, 0x1083, 0x1093, 0x10aa, 0x10bd, 0x10cb, 0x10d7, 0x10e5, + 0x1100, 0x1129, 0x113b, 0x1150, 0x115a, 0x116c, 0x118a, 0x11bb, + 0x11c1, 0x11f9, 0x1201, 0x120f, 0x1221, 0x122f, 0x1244, 0x125c, + 0x1266, 0x1270, 0x127c, 0x12a2, 0x12ae, 0x12bc, 0x12cc, 0x12da, + 0x12e6, 0x131a, 0x1342, 0x136e, 0x137c, 0x138e, 0x139c, 0x13de, + 0x13f0, 0x1420, 0x144b, 0x1459, 0x1467, 0x1489, 0x1493, 0x149f, // Entry 100 - 13F - 0x14ab, 0x14b7, 0x14c7, 0x14e2, 0x14ea, 0x14f6, 0x1517, 0x1536, - 0x1544, 0x155b, 0x1578, 0x158f, 0x15ae, 0x15c9, 0x15e6, 0x1621, - 0x164a, 0x1654, 0x1667, 0x1680, 0x16a4, 0x16c1, 0x16d7, 0x16e9, - 0x170a, 0x171c, 0x1724, 0x173b, 0x174e, 0x175a, 0x1771, 0x1790, - 0x17a7, 0x17c4, -} // Size: 604 bytes - -var kmRegionStr string = "" + // Size: 9048 bytes - "កោះ\u200bអាសេនសិនអង់ដូរ៉ាអារ៉ាប់រួមអាហ្វហ្គានីស្ថានអង់ទីគ័រ និង\u200bបាប" + - "ុយដាអង់កូឡាអាល់បានីអារមេនីអង់ហ្គោឡាអង់តាក់ទិកអាហ្សង់ទីនសាម៉ូអាអាមេរិកអ" + - "ូទ្រីសអូស្ត្រាលីអារូបាកោះ\u200bអាឡាំងអាហ៊្សែរបែហ្សង់បូស្នី និងហឺហ្សីហ្" + - "គូវីណាបារបាដូសបង់ក្លាដេស្ហបែលហ្ស៉ិកប៊ូរគីណាហ្វាសូប៊ុលហ្គារីបារ៉ែនប៊ូរុ" + - "នឌីបេណាំងសង់ បាតេឡេម៉ីប៊ឺមុយដាប្រ៊ុយណេបូលីវីហុល្លង់ ការ៉ាប៊ីនប្រេស៊ីលប" + - "ាហាម៉ាប៊ូតានកោះ\u200bប៊ូវ៉េតបុតស្វាណាបេឡារុស្សបេលីហ្សកាណាដាកោះ\u200bកូ" + - "កូសកុងហ្គោ- គីនស្ហាសាសាធារណរដ្ឋអាហ្វ្រិកកណ្ដាលកុងហ្គោ - ប្រាហ្សាវីលស្វ" + + 0x14a9, 0x14b7, 0x14ed, 0x14f9, 0x1509, 0x1524, 0x152c, 0x1538, + 0x1559, 0x1578, 0x1586, 0x159d, 0x15ba, 0x15d1, 0x15f0, 0x160b, + 0x1628, 0x1663, 0x1691, 0x169b, 0x16ae, 0x16c7, 0x16eb, 0x1708, + 0x171e, 0x1730, 0x1751, 0x1763, 0x176b, 0x1782, 0x1795, 0x17a1, + 0x17b8, 0x17d7, 0x17ee, 0x180b, +} // Size: 608 bytes + +const kmRegionStr string = "" + // Size: 8993 bytes + "កោះ\u200bអាសេនសិនអង់ដូរ៉ាអារ៉ាប់រួមអាហ្វហ្គានីស្ថានអង់ទីហ្គា និង បាប៊ុយដ" + + "ាអង់ហ្គីឡាអាល់បានីអាមេនីអង់ហ្គោឡាអង់តាក់ទិកអាហ្សង់ទីនសាម័រ អាមេរិកាំងអ" + + "ូទ្រីសអូស្ត្រាលីអារូបាកោះ\u200bអាឡាំងអាស៊ែបៃហ្សង់បូស្នី និងហឺហ្សីហ្គូវ" + + "ីណាបាបាដុសបង់ក្លាដែសបែលហ្ស៊ិកបួគីណាហ្វាសូប៊ុលហ្គារីបារ៉ែនប៊ូរុនឌីបេណាំ" + + "ងសង់ បាតេឡេម៉ីប៊ឺមុយដាប្រ៊ុយណេបូលីវីហុល្លង់ ការ៉ាប៊ីនប្រេស៊ីលបាហាម៉ាប៊" + + "ូតានកោះ\u200bប៊ូវ៉េតបុតស្វាណាបេឡារុស្សបេលីហ្សកាណាដាកោះ\u200bកូកូស (គីល" + + "ីង)កុងហ្គោ- គីនស្ហាសាសាធារណរដ្ឋអាហ្វ្រិកកណ្ដាលកុងហ្គោ - ប្រាហ្សាវីលស្វ" + "ីសកូដឌីវ័រកោះ\u200bខូកស៊ីលីកាមេរូនចិនកូឡុំប៊ីកោះ\u200bឃ្លីភឺតុនកូស្តារ" + - "ីកាគុយបាកាបវែរកូរ៉ាកៅកោះ\u200bគ្រីស្មាសស៊ីពរ៍សាធារណរដ្ឋឆេកអាល្លឺម៉ង់ឌៀ" + - "ហ្គោហ្គាស៊ីហ្ស៊ីបូទីដាណឺម៉ាកដូមីនីកាសាធារណរដ្ឋដូមីនីកែនអាល់ហ្សេរីជឺតា " + - "និង\u200bម៉េលីឡាអេក្វាឌ័រអេស្តូនីអេហ្ស៊ីបសាហារ៉ាខាងលិចអេរីទ្រាអេស្ប៉ាញ" + - "អេត្យូពីសហភាព\u200bអឺរ៉ុបហ្វាំងឡង់ហ្វីជីកោះ\u200bហ្វក់ឡែនមីក្រូនេស៊ីកោ" + - "ះ\u200bហ្វារ៉ូបារាំងហ្គាបុងចក្រភព\u200bអង់គ្លេសហ្គ្រីណាដាហ្សកហ្ស៉ីហ្គៀ" + - "ណាបារាំងហ្គេនស៊ីហ្គាណាហ្គីប្រាលតាហ្គ្រោអង់ឡង់ហ្គាំប៊ីហ្គីណេហ្គោដឺឡុបហ្" + - "គីណេអេក្វាទ័រក្រិចកោះ\u200bហ្សកហ្ស៊ី\u200bខាង\u200bត្បូង និង\u200bសាន់" + - "វិច\u200bខាង\u200bត្បូងហ្គាតេម៉ាឡាហ្គាំហ្គីណេប៊ីសូហ្គីយ៉ាណាហុងកុងកោះ" + - "\u200bហឺដ និង\u200bម៉ាក់ដូណាល់ហុងឌួរ៉ាស់ក្រូអាតហៃទីហុងគ្រីកោះ\u200bកាណារ" + - "ីឥណ្ឌូណេស៊ីអៀរឡង់អ៊ីស្រាអែលអែលអុហ្វមែនឥណ្ឌាដែន\u200bមហា\u200bសមុទ្រ" + - "\u200bឥណ្ឌា ចក្រភព\u200bអង់គ្លេសអ៊ីរ៉ាក់អ៊ីរ៉ង់អ៊ីស្លង់អ៊ីតាលីជឺស៊ីចាម៉ៃ" + - "កាហ៊្សកដានីជប៉ុនកេនយ៉ាគៀរហ្គីស្តង់កម្ពុជាគិរិបាទីកុំម៉ូរ៉ូសសង់ឃីត និង" + - "\u200bណេវីសកូរ៉េ\u200bខាង\u200bជើងកូរ៉េ\u200bខាង\u200bត្បូងគុយវ៉ែតកោះ" + - "\u200bកៃម៉ង់កាហ្សាក់ស្តង់់ឡាវលីបង់សង់\u200bលូសៀលិចទេនស្តែនស្រីលង្កាលីបេរ" + - "ីយ៉ាលើសូតូលីទុយអានីលុចហ្សំបួរឡាតវីយ៉ាលីប៊ីម៉ារ៉ុកម៉ូណាកូសាធារណរដ្ឋម៉ុល" + - "ដាវីម៉ុងតេណេហ្គ្រោសង់\u200bម៉ាទីនម៉ាដាហ្កាស្ការកោះ\u200bម៉ាស់សលម៉ាសេដូ" + - "នាម៉ាលីមីយ៉ាន់ម៉ា (ភូមា)ម៉ុងហ្គោលីម៉ាកាវកោះ\u200bម៉ារីណា\u200bខាង" + - "\u200bជើងម៉ាទីនីកម៉ូរីតានីម៉ុង\u200bសេរ៉ង់ម៉ាល់តាម៉ូរីទុសម៉ាល់ឌីវម៉ាឡាវី" + - "ម៉ិចសិកម៉ាឡេស៊ីម៉ូហ្សាំប៊ិកណាមីប៊ីញូកាឡេដូនៀនីហ្សេរកោះ\u200bណ័រហ្វក់នី" + - "ហ្សេរីយ៉ានីការ៉ាហ្គ័រហុល្លង់ន័រវែសនេប៉ាល់ណូរូណៀនូវែលហ្សេឡង់អូម៉ង់ប៉ាណា" + - "ម៉ាប៉េរូប៉ូលី\u200bណេស៊ី\u200bបារាំងប៉ាពួញ៉ូហ្គីណេហ្វីលីពីនប៉ាគីស្ថានប" + - "៉ូឡូញសង់ព្យែរ និង\u200bមីគីឡុងកោះ\u200bភីតខារិនព័រតូរីកូដែន\u200bប៉ាលេ" + - "ស្ទីនព័រទុយហ្កាល់ផៅឡូប៉ារ៉ាហ្គាយកាតាតំបន់ជាយអូសេអានីរ៉េអ៊ុយ៉ុងរូម៉ានីស" + - "៊ែបរុស្ស៊ីរវ៉ាន់ដាអារ៉ាប៊ីសាអ៊ូឌីតកោះ\u200bស៊ូឡូម៉ុងសីសែលស៊ូដង់ស៊ុយអែដ" + - "សិង្ហបុរីសង់\u200bហេឡេណាស្លូវេនីស្វាប៊ឺត និង\u200bហ្យង់ម៉ាយេនស្លូវ៉ាគី" + - "សេរ៉ាឡេអូនសាន\u200bម៉ារីណូសេនេហ្កាល់សូម៉ាលីសូរីណាមស៊ូដង់\u200bខាង" + - "\u200bត្បូងសៅ\u200bតូមេ និង\u200bព្រីនស៊ីប៉េអែលសាល់វ៉ាឌ័រសីង\u200bម៉ាធីន" + - "ស៊ីរីស្វាហ្ស៊ីឡង់ទ្រីស្តង់\u200bដា\u200bចូនហាកោះ\u200bកៃកូស និងទូកឆាដដ" + - "ែន\u200bបារាំង\u200bខាង\u200bត្បូងតូហ្គោថៃតាជីគីស្តង់តូខេឡៅទីម័រទួគមេន" + - "ីស្តង់ទុយនេស៊ីតុងហ្គាទួរគីទ្រីនីដាត និង\u200bតូបាហ្គោទូវ៉ាលូតៃវ៉ាន់តង់" + - "ហ្សានីអ៊ុយក្រែនអ៊ូហ្កង់ដាកោះ\u200bអៅឡាយីង\u200bអាមេរិកសហរដ្ឋអាមេរិកអ៊ុ" + - "យរ៉ាហ្គាយអ៊ូហ្សបេគីស្តង់ទីក្រុងវ៉ាទីកង់សាំង\u200bវីនសេន និង\u200bឌឹ" + - "\u200bហ្គ្រីណាឌីនីសវេនេហ្ស៊ុយឡាកោះ\u200bវឺជិន\u200bចក្រភព\u200bអង់គ្លេសក" + - "ោះ\u200bវឺជីន\u200bអាមេរិកវៀតណាមវ៉ានូអាទូវ៉ាលីស និង\u200bហ្វូទូណាសា" + - "\u200bម៉ូអាកូសូវ៉ូយេមែនម៉ាយុតអាហ្វ្រិកខាងត្បូងហ្សាំប៊ីហ្ស៊ីមបាវ៉េតំបន់មិ" + - "នស្គាល់ពិភពលោកអាហ្វ្រិកអាមេរិក\u200bខាង\u200bជើងអាមេរិក\u200bខាង\u200b" + - "ត្បូងអូសេអានីអាហ្វ្រិក\u200bខាង\u200bលិចអាមេរិក\u200bកណ្ដាលអាហ្វ្រិកខា" + - "ងកើតអាហ្វ្រិក\u200bខាង\u200bជើងអាហ្វ្រិក\u200bកណ្តាលអាហ្វ្រិកភាគខាងត្ប" + - "ូងអាមេរិកអាមេរិក\u200bភាគ\u200bខាង\u200bជើងការ៉ាប៊ីនអាស៊ី\u200bខាង" + - "\u200bកើតអាស៊ី\u200bខាង\u200bត្បូងអាស៊ីអាគ្នេយ៍អឺរ៉ុប\u200bខាង\u200bត្បូ" + - "ងអូស្ត្រាឡាស៊ីមេឡាណេស៊ីតំបន់\u200bមីក្រូណេស៊ីប៉ូលីណេស៊ីអាស៊ីអាស៊ី" + - "\u200bកណ្ដាលអាស៊ី\u200bខាង\u200bលិចអឺរ៉ុបអឺរ៉ុប\u200bខាង\u200bកើតអឺរ៉ុប" + - "\u200bខាង\u200bជើងអឺរ៉ុប\u200bខាង\u200bលិចអាមេរិក\u200bឡាទីន" - -var kmRegionIdx = []uint16{ // 290 elements + "ីកាគុយបាកាបវែរកូរ៉ាកៅកោះ\u200bគ្រីស្មាសស៊ីបឆេគាអាល្លឺម៉ង់ឌៀហ្គោហ្គាស៊ី" + + "ជីប៊ូទីដាណឺម៉ាកដូមីនីកសាធារណរដ្ឋ\u200bដូមីនីកអាល់ហ្សេរីជឺតា និង\u200bម" + + "៉េលីឡាអេក្វាឌ័រអេស្តូនីអេហ្ស៊ីបសាហារ៉ាខាងលិចអេរីទ្រាអេស្ប៉ាញអេត្យូពីសហ" + + "ភាព\u200bអឺរ៉ុបហ្វាំងឡង់ហ្វីជីកោះ\u200bហ្វក់ឡែនមីក្រូណេស៊ីកោះ\u200bហ្វ" + + "ារ៉ូបារាំងហ្គាបុងចក្រភព\u200bអង់គ្លេសហ្គ្រីណាដាហ្សកហ្ស៊ីហ្គៀណាបារាំងហ្" + + "គេនស៊ីហ្គាណាហ្គីប្រាលតាហ្គ្រោអង់ឡង់ហ្គាំប៊ីហ្គីណេហ្គោដឺឡុបហ្គីណេអេក្វា" + + "ទ័រក្រិកកោះ\u200bហ្សកហ្ស៊ី\u200bខាង\u200bត្បូង និង សាន់វិច\u200bខាង" + + "\u200bត្បូងហ្គាតេម៉ាឡាហ្គាំហ្គីណេប៊ីសូហ្គីយ៉ាណាហុងកុងកោះ\u200bហឺដ និង" + + "\u200bម៉ាក់ដូណាល់ហុងឌូរ៉ាសក្រូអាតហៃទីហុងគ្រីកោះ\u200bកាណារីឥណ្ឌូណេស៊ីអៀរ" + + "ឡង់អ៊ីស្រាអែលអែលអុហ្វមែនឥណ្ឌាដែនដី\u200bអង់គ្លេស\u200bនៅ\u200bមហា" + + "\u200bសមុទ្រ\u200bឥណ្ឌាអ៊ីរ៉ាក់អ៊ីរ៉ង់អ៊ីស្លង់អ៊ីតាលីជឺស៊ីចាម៉ៃកាហ៊្សកដា" + + "នីជប៉ុនកេនយ៉ាកៀហ្ស៊ីស៊ីស្ថានកម្ពុជាគិរិបាទីកូម័រសង់ឃីត និង\u200bណេវីសក" + + "ូរ៉េ\u200bខាង\u200bជើងកូរ៉េ\u200bខាង\u200bត្បូងគុយវ៉ែតកោះ\u200bកៃម៉ង់ក" + + "ាហ្សាក់ស្ថានឡាវលីបង់សង់\u200bលូសៀលិចទេនស្តែនស្រីលង្កាលីបេរីយ៉ាឡេសូតូលី" + + "ទុយអានីលុចហ្សំបួរឡាតវីយ៉ាលីប៊ីម៉ារ៉ុកម៉ូណាកូម៉ុលដាវីម៉ុងតេណេហ្គ្រោសង់" + + "\u200bម៉ាទីនម៉ាដាហ្គាស្កាកោះ\u200bម៉ាស់សលម៉ាសេដូនាម៉ាលីមីយ៉ាន់ម៉ា (ភូមា)" + + "ម៉ុងហ្គោលីម៉ាកាវកោះ\u200bម៉ារីណា\u200bខាង\u200bជើងម៉ាទីនីកម៉ូរីតានីម៉ុ" + + "ង\u200bសេរ៉ង់ម៉ាល់តាម៉ូរីសម៉ាល់ឌីវម៉ាឡាវីម៉ិកស៊ិកម៉ាឡេស៊ីម៉ូហ្សាំប៊ិកណ" + + "ាមីប៊ីញូកាឡេដូនៀនីហ្សេរកោះ\u200bណ័រហ្វក់នីហ្សេរីយ៉ានីការ៉ាហ្គ័រហូឡង់ន័" + + "រវែសនេប៉ាល់ណូរូណៀនូវែលហ្សេឡង់អូម៉ង់ប៉ាណាម៉ាប៉េរូប៉ូលី\u200bណេស៊ី\u200b" + + "បារាំងប៉ាពួញ៉ូហ្គីណេហ្វីលីពីនប៉ាគីស្ថានប៉ូឡូញសង់ព្យែរ និង\u200bមីគីឡុង" + + "កោះ\u200bភីតកានព័រតូរីកូដែន\u200bប៉ាលេស្ទីនព័រទុយហ្គាល់ផៅឡូប៉ារ៉ាហ្គាយ" + + "កាតាតំបន់ជាយអូសេអានីរេអុយញ៉ុងរូម៉ានីស៊ែបរុស្ស៊ីរវ៉ាន់ដាអារ៉ាប៊ីសាអូឌីត" + + "កោះ\u200bសូឡូម៉ុងសីសែលស៊ូដង់ស៊ុយអែតសិង្ហបុរីសង់\u200bហេឡេណាស្លូវេនីស្វ" + + "ាលបាដ និង ហ្សង់ម៉ាយេនស្លូវ៉ាគីសេរ៉ាឡេអូនសាន\u200bម៉ារីណូសេណេហ្គាល់សូម៉" + + "ាលីសូរីណាមស៊ូដង់\u200bខាង\u200bត្បូងសៅតូម៉េ និង ប្រាំងស៊ីបអែលសាល់វ៉ាឌ័" + + "រសីង\u200bម៉ាធីនស៊ីរីស្វាហ្ស៊ីឡង់ទ្រីស្តង់\u200bដា\u200bចូនហាកោះ\u200b" + + "ទួគ និង កៃកូសឆាដដែនដី\u200bបារាំង\u200bនៅ\u200bភាគខាងត្បូងតូហ្គោថៃតាហ្" + + "ស៊ីគីស្ថានតូខេឡៅទីម័រតួកម៉េនីស្ថានទុយនេស៊ីតុងហ្គាទួរគីទ្រីនីដាត និង" + + "\u200bតូបាហ្គោទូវ៉ាលូតៃវ៉ាន់តង់ហ្សានីអ៊ុយក្រែនអ៊ូហ្គង់ដាកោះ\u200bអៅឡាយីង" + + "\u200bអាមេរិកអង្គការសហប្រជាជាតិសហរដ្ឋអាមេរិកអ៊ុយរ៉ាហ្គាយអ៊ូសបេគីស្ថានបុរ" + + "ី\u200bវ៉ាទីកង់សាំង\u200bវីនសេន និង\u200bឌឹ\u200bហ្គ្រីណាឌីនីសវេនេហ្ស៊" + + "ុយឡាកោះ\u200bវឺជិន\u200bចក្រភព\u200bអង់គ្លេសកោះ\u200bវឺជីន\u200bអាមេរិ" + + "កវៀតណាមវ៉ានូអាទូវ៉ាលីស និង\u200bហ្វូទូណាសាម័រកូសូវ៉ូយេមែនម៉ាយុតអាហ្វ្រ" + + "ិកខាងត្បូងហ្សាំប៊ីហ្ស៊ីមបាវ៉េតំបន់មិនស្គាល់ពិភពលោកអាហ្វ្រិកអាមេរិក" + + "\u200bខាង\u200bជើងអាមេរិក\u200bខាង\u200bត្បូងអូសេអានីអាហ្វ្រិក\u200bខាង" + + "\u200bលិចអាមេរិក\u200bកណ្ដាលអាហ្វ្រិកខាងកើតអាហ្វ្រិក\u200bខាង\u200bជើងអា" + + "ហ្វ្រិក\u200bកណ្តាលអាហ្វ្រិកភាគខាងត្បូងអាមេរិកអាមេរិក\u200bភាគ\u200bខា" + + "ង\u200bជើងការ៉ាប៊ីនអាស៊ី\u200bខាង\u200bកើតអាស៊ី\u200bខាង\u200bត្បូងអាស" + + "៊ីអាគ្នេយ៍អឺរ៉ុប\u200bខាង\u200bត្បូងអូស្ត្រាឡាស៊ីមេឡាណេស៊ីតំបន់\u200bម" + + "ីក្រូណេស៊ីប៉ូលីណេស៊ីអាស៊ីអាស៊ី\u200bកណ្ដាលអាស៊ី\u200bខាង\u200bលិចអឺរ៉ុ" + + "បអឺរ៉ុប\u200bខាង\u200bកើតអឺរ៉ុប\u200bខាង\u200bជើងអឺរ៉ុប\u200bខាង\u200b" + + "លិចអាមេរិក\u200bឡាទីន" + +var kmRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0024, 0x003c, 0x005a, 0x008a, 0x00c4, 0x00d9, 0x00f1, - 0x0106, 0x0121, 0x013f, 0x015d, 0x0187, 0x019c, 0x01ba, 0x01cc, - 0x01ea, 0x0217, 0x025d, 0x0275, 0x0299, 0x02b4, 0x02de, 0x02fc, - 0x030e, 0x0326, 0x0338, 0x035d, 0x0375, 0x038d, 0x039f, 0x03d0, - 0x03e8, 0x03fd, 0x040f, 0x0430, 0x044b, 0x0466, 0x047b, 0x048d, - 0x04a8, 0x04da, 0x0525, 0x055e, 0x056d, 0x0585, 0x059a, 0x05a9, - 0x05be, 0x05c7, 0x05df, 0x0606, 0x0624, 0x0633, 0x0645, 0x065a, - 0x0681, 0x0693, 0x06ba, 0x06d8, 0x06ff, 0x071a, 0x0732, 0x074a, + 0x0000, 0x0024, 0x003c, 0x005a, 0x008a, 0x00c8, 0x00e3, 0x00fb, + 0x010d, 0x0128, 0x0146, 0x0164, 0x0192, 0x01a7, 0x01c5, 0x01d7, + 0x01f5, 0x0219, 0x025f, 0x0274, 0x0292, 0x02ad, 0x02d1, 0x02ef, + 0x0301, 0x0319, 0x032b, 0x0350, 0x0368, 0x0380, 0x0392, 0x03c3, + 0x03db, 0x03f0, 0x0402, 0x0423, 0x043e, 0x0459, 0x046e, 0x0480, + 0x04ad, 0x04df, 0x052a, 0x0563, 0x0572, 0x058a, 0x059f, 0x05ae, + 0x05c3, 0x05cc, 0x05e4, 0x060b, 0x0629, 0x0638, 0x064a, 0x065f, + 0x0686, 0x0692, 0x069e, 0x06bc, 0x06e3, 0x06f8, 0x0710, 0x0725, // Entry 40 - 7F - 0x0783, 0x07a1, 0x07cf, 0x07ea, 0x0802, 0x081a, 0x0841, 0x0859, - 0x0871, 0x0889, 0x08ad, 0x08c8, 0x08da, 0x08fe, 0x091f, 0x0940, - 0x0952, 0x0967, 0x0994, 0x09b2, 0x09cd, 0x09f1, 0x0a09, 0x0a1b, - 0x0a3c, 0x0a60, 0x0a78, 0x0a8a, 0x0aa5, 0x0ad2, 0x0ae1, 0x0b66, - 0x0b87, 0x0b96, 0x0bb7, 0x0bd2, 0x0be4, 0x0c27, 0x0c45, 0x0c5a, - 0x0c66, 0x0c7b, 0x0c99, 0x0cb7, 0x0cc9, 0x0ce7, 0x0d08, 0x0d17, - 0x0d81, 0x0d99, 0x0dae, 0x0dc6, 0x0ddb, 0x0dea, 0x0dff, 0x0e1a, - 0x0e29, 0x0e3b, 0x0e5f, 0x0e74, 0x0e8c, 0x0eaa, 0x0ed8, 0x0eff, + 0x075b, 0x0779, 0x07a7, 0x07c2, 0x07da, 0x07f2, 0x0819, 0x0831, + 0x0849, 0x0861, 0x0885, 0x0885, 0x08a0, 0x08b2, 0x08d6, 0x08f7, + 0x0918, 0x092a, 0x093f, 0x096c, 0x098a, 0x09a5, 0x09c9, 0x09e1, + 0x09f3, 0x0a14, 0x0a38, 0x0a50, 0x0a62, 0x0a7d, 0x0aaa, 0x0ab9, + 0x0b3c, 0x0b5d, 0x0b6c, 0x0b8d, 0x0ba8, 0x0bba, 0x0bfd, 0x0c18, + 0x0c2d, 0x0c39, 0x0c4e, 0x0c6c, 0x0c8a, 0x0c9c, 0x0cba, 0x0cdb, + 0x0cea, 0x0d50, 0x0d68, 0x0d7d, 0x0d95, 0x0daa, 0x0db9, 0x0dce, + 0x0de9, 0x0df8, 0x0e0a, 0x0e37, 0x0e4c, 0x0e64, 0x0e73, 0x0ea1, // Entry 80 - BF - 0x0f2c, 0x0f41, 0x0f5f, 0x0f89, 0x0f92, 0x0fa1, 0x0fb9, 0x0fda, - 0x0ff5, 0x1010, 0x1022, 0x103d, 0x105b, 0x1073, 0x1082, 0x1097, - 0x10ac, 0x10e2, 0x110c, 0x112a, 0x1154, 0x1175, 0x1190, 0x119f, - 0x11cc, 0x11ea, 0x11fc, 0x1235, 0x124d, 0x1268, 0x1289, 0x129e, - 0x12b6, 0x12ce, 0x12e3, 0x12f8, 0x1310, 0x1334, 0x1349, 0x1367, - 0x137c, 0x13a0, 0x13c1, 0x13e5, 0x13fa, 0x140c, 0x1421, 0x142d, - 0x1433, 0x1457, 0x1469, 0x1481, 0x1490, 0x14c6, 0x14f0, 0x150b, - 0x1529, 0x153b, 0x1575, 0x1599, 0x15b4, 0x15de, 0x1602, 0x160e, + 0x0ec8, 0x0ef5, 0x0f0a, 0x0f28, 0x0f4f, 0x0f58, 0x0f67, 0x0f7f, + 0x0fa0, 0x0fbb, 0x0fd6, 0x0fe8, 0x1003, 0x1021, 0x1039, 0x1048, + 0x105d, 0x1072, 0x108a, 0x10b4, 0x10d2, 0x10f9, 0x111a, 0x1135, + 0x1144, 0x1171, 0x118f, 0x11a1, 0x11da, 0x11f2, 0x120d, 0x122e, + 0x1243, 0x1255, 0x126d, 0x1282, 0x129a, 0x12b2, 0x12d6, 0x12eb, + 0x1309, 0x131e, 0x1342, 0x1363, 0x1387, 0x1396, 0x13a8, 0x13bd, + 0x13c9, 0x13cf, 0x13f3, 0x1405, 0x141d, 0x142c, 0x1462, 0x148c, + 0x14a7, 0x14c5, 0x14d7, 0x1511, 0x152f, 0x154a, 0x1574, 0x1598, // Entry C0 - FF - 0x162f, 0x163b, 0x166b, 0x1689, 0x169e, 0x16aa, 0x16bf, 0x16d7, - 0x1707, 0x172e, 0x173d, 0x174f, 0x1764, 0x177f, 0x179d, 0x17b5, - 0x17fb, 0x1816, 0x1834, 0x1855, 0x1873, 0x1888, 0x189d, 0x18cd, - 0x1910, 0x1937, 0x1955, 0x1964, 0x1988, 0x19be, 0x19ec, 0x19f5, - 0x1a31, 0x1a43, 0x1a49, 0x1a6a, 0x1a7c, 0x1a8b, 0x1aaf, 0x1ac7, - 0x1adc, 0x1aeb, 0x1b2b, 0x1b40, 0x1b55, 0x1b70, 0x1b8b, 0x1ba9, - 0x1be2, 0x1c09, 0x1c2d, 0x1c5a, 0x1c87, 0x1ce5, 0x1d09, 0x1d54, - 0x1d87, 0x1d99, 0x1db4, 0x1deb, 0x1e03, 0x1e18, 0x1e27, 0x1e39, + 0x15a4, 0x15c5, 0x15d1, 0x1601, 0x161c, 0x1631, 0x163d, 0x1652, + 0x166a, 0x1697, 0x16bb, 0x16ca, 0x16dc, 0x16f1, 0x170c, 0x172a, + 0x1742, 0x1786, 0x17a1, 0x17bf, 0x17e0, 0x17fe, 0x1813, 0x1828, + 0x1858, 0x1896, 0x18bd, 0x18db, 0x18ea, 0x190e, 0x1944, 0x1973, + 0x197c, 0x19cd, 0x19df, 0x19e5, 0x1a0f, 0x1a21, 0x1a30, 0x1a57, + 0x1a6f, 0x1a84, 0x1a93, 0x1ad3, 0x1ae8, 0x1afd, 0x1b18, 0x1b33, + 0x1b51, 0x1b8a, 0x1bc0, 0x1be7, 0x1c0b, 0x1c32, 0x1c59, 0x1cb7, + 0x1cdb, 0x1d26, 0x1d59, 0x1d6b, 0x1d86, 0x1dbd, 0x1dcc, 0x1de1, // Entry 100 - 13F - 0x1e6c, 0x1e84, 0x1ea5, 0x1ecf, 0x1ee4, 0x1eff, 0x1f2c, 0x1f5f, - 0x1f77, 0x1faa, 0x1fd4, 0x2001, 0x2034, 0x2064, 0x20a0, 0x20b5, - 0x20ee, 0x2109, 0x2130, 0x215d, 0x2184, 0x21b4, 0x21db, 0x21f6, - 0x2229, 0x2247, 0x2256, 0x227a, 0x22a1, 0x22b3, 0x22dd, 0x2307, - 0x2331, 0x2358, -} // Size: 604 bytes - -var knRegionStr string = "" + // Size: 9388 bytes + 0x1df0, 0x1e02, 0x1e35, 0x1e4d, 0x1e6e, 0x1e98, 0x1ead, 0x1ec8, + 0x1ef5, 0x1f28, 0x1f40, 0x1f73, 0x1f9d, 0x1fca, 0x1ffd, 0x202d, + 0x2069, 0x207e, 0x20b7, 0x20d2, 0x20f9, 0x2126, 0x214d, 0x217d, + 0x21a4, 0x21bf, 0x21f2, 0x2210, 0x221f, 0x2243, 0x226a, 0x227c, + 0x22a6, 0x22d0, 0x22fa, 0x2321, +} // Size: 608 bytes + +const knRegionStr string = "" + // Size: 9399 bytes "ಅಸೆನ್ಶನ್ ದ್ವೀಪಅಂಡೋರಾಸಂಯುಕ್ತ ಅರಬ್ ಎಮಿರೇಟಸ್ಅಫಘಾನಿಸ್ಥಾನ್ಆಂಟಿಗುವಾ ಮತ್ತು ಬರ್ಬ" + - "ುಡಾಆಂಗುಯಿಲ್ಲಾಅಲ್ಬೇನಿಯಾಅರ್ಮೇನಿಯಾಅಂಗೋಲಾಅಂಟಾರ್ಟಿಕಾಅರ್ಜೆಂಟಿನಾಅಮೇರಿಕನ್ ಸಮೋವ" + + "ುಡಾಆಂಗ್ವಿಲ್ಲಾಅಲ್ಬೇನಿಯಾಅರ್ಮೇನಿಯಾಅಂಗೋಲಾಅಂಟಾರ್ಟಿಕಾಅರ್ಜೆಂಟಿನಾಅಮೇರಿಕನ್ ಸಮೋವ" + "ಾಆಸ್ಟ್ರಿಯಾಆಸ್ಟ್ರೇಲಿಯಅರುಬಾಆಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಅಜರ್ಬೈಜಾನ್ಬೋಸ್ನಿಯಾ ಮತ್ತು ಹರ್" + - "ಜೆಗೋವಿನಾಬಾರ್ಬಡೋಸ್ಬಾಂಗ್ಲಾದೇಶ್ಬೆಲ್ಜಿಯಮ್ಬುರ್ಕಿನಾ ಫಾಸೋಬಲ್ಗೇರಿಯಾಬಹರೈನ್ಬುರುಂ" + - "ಡಿಬೆನಿನ್ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿಬರ್ಮುಡಾಬ್ರೂನಿಬೊಲಿವಿಯಾಕೆರೀಬಿಯನ್ ನೆದರ್\u200cಲ್ಯಾ" + - "ಂಡ್ಸ್ಬ್ರೆಜಿಲ್ಬಹಾಮಾಸ್ಭೂತಾನ್ಬೋವೆಟ್ ದ್ವೀಪಬೋಟ್ಸ್\u200cವಾನಾಬೆಲಾರಸ್ಬೆಲಿಜ್ಕೆನ" + - "ಡಾಕೊಕೊಸ್ (ಕೀಲಿಂಗ್) ದ್ವೀಪಗಳುಕಾಂಗೋ - ಕಿನ್ಶಾಸಾಮಧ್ಯ ಆಫ್ರಿಕಾ ಗಣರಾಜ್ಯಕಾಂಗೋ -" + - " ಬ್ರಾಜಾವಿಲ್ಲೇಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್ಕೋತ್\u200c ದಿವಾರ್\u200dಕುಕ್ ದ್ವೀಪಗಳುಚಿಲಿಕ್ಯ" + - "ಾಮರೋನ್ಚೀನಾಕೊಲಂಬಿಯಾಕ್ಲಿಪ್ಪರ್\u200cಟಾನ್ ದ್ವೀಪಗಳುಕೊಸ್ಟಾ ರಿಕಾಕ್ಯೂಬಾಕೇಪ್ ವರ" + - "್ಡೆಕುರಾಕಾವ್ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪಸೈಪ್ರಸ್ಚೆಕ್ ರಿಪಬ್ಲಿಕ್ಜರ್ಮನಿಡೈಗೋ ಗಾರ್ಸಿಯಜಿಬೋಟ" + - "ಿಡೆನ್ಮಾರ್ಕ್ಡೊಮಿನಿಕಾಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್ಅಲ್ಗೇರಿಯಾಸೆಯುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾಈಕ್" + - "ವೆಡಾರ್ಎಸ್ಟೋನಿಯಾಈಜಿಪ್ಟ್ಪಶ್ಚಿಮ ಸಹಾರಾಏರಿಟ್ರಿಯಾಸ್ಪೇನ್ಇಥಿಯೋಪಿಯಾಯುರೋಪಿಯನ್ ಯೂ" + - "ನಿಯನ್ಫಿನ್\u200cಲ್ಯಾಂಡ್ಫಿಜಿಫಾಲ್ಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಮೈಕ್ರೋನೇಶಿಯಾಫರೋ " + - "ದ್ವೀಪಗಳುಫ್ರಾನ್ಸ್ಗೆಬೊನ್ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್ಗ್ರೆನೆಡಾಜಾರ್ಜಿಯಾಫ್ರೆಂಚ್ ಗಯಾನಾಗು" + - "ರ್ನ್\u200cಸೆಘಾನಾಗಿಬ್ರಾಲ್ಟರ್ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ಗ್ಯಾಂಬಿಯಾಗಿನಿಗುಡೆಲೋಪ್ಈಕ್" + - "ವೆಟೋರಿಯಲ್ ಗಿನಿಗ್ರೀಸ್ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ್ಯಾಂಡ್\u200dವಿಚ್ ದ್ವ" + - "ೀಪಗಳುಗ್ವಾಟೆಮಾಲಾಗುಯಾಮ್ಗಿನಿ-ಬಿಸ್ಸಾವ್ಗಯಾನಾಹಾಂಗ್ ಕಾಂಗ್ SAR ಚೈನಾಹರ್ಡ್ ದ್ವೀಪ" + - " ಮತ್ತು ಮ್ಯಾಕ್\u200dಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳುಹೊಂಡುರಾಸ್ಕ್ರೊಯೇಶಿಯಾಹೈಟಿಹಂಗಾರಿಕ್ಯಾನರಿ" + - " ದ್ವೀಪಗಳುಇಂಡೋನೇಶಿಯಾಐರ್ಲೆಂಡ್ಇಸ್ರೇಲ್ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ಭಾರತಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾ" + - "ಸಾಗರ ಪ್ರದೇಶಇರಾಕ್ಇರಾನ್ಐಸ್\u200cಲ್ಯಾಂಡ್ಇಟಲಿಜೆರ್ಸಿಜಮೈಕಾಜೋರ್ಡಾನ್ಜಪಾನ್ಕೀನ್ಯ" + - "ಾಕಿರ್ಗಿಸ್ಥಾನ್ಕಾಂಬೋಡಿಯಾಕಿರಿಬಾತಿಕೊಮೊರೊಸ್ಸೇಂಟ್ ಕಿಟ್ಸ್ ಮತ್ತು ನೆವಿಸ್ಉತ್ತರ ಕ" + - "ೋರಿಯಾದಕ್ಷಿಣ ಕೋರಿಯಾಕುವೈತ್ಕೇಮನ್ ದ್ವೀಪಗಳುಕಝಾಕಿಸ್ಥಾನ್ಲಾವೋಸ್ಲೆಬನಾನ್ಸೇಂಟ್ ಲೂ" + - "ಸಿಯಾಲಿಚೆನ್\u200cಸ್ಟೈನ್ಶ್ರೀಲಂಕಾಲಿಬೇರಿಯಾಲೆಸೊಥೋಲಿಥುವೇನಿಯಾಲಕ್ಸಂಬರ್ಗ್ಲಾಟ್ವಿ" + - "ಯಾಲಿಬಿಯಾಮೊರಾಕ್ಕೊಮೊನಾಕೊಮೊಲ್ಡೋವಾಮೊಂಟೆನೆಗ್ರೋಸೇಂಟ್ ಮಾರ್ಟಿನ್ಮಡಗಾಸ್ಕರ್ಮಾರ್ಷಲ" + - "್ ದ್ವೀಪಗಳುಮ್ಯಾಸಿಡೋನಿಯಾಮಾಲಿಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)ಮೊಂಗೋಲಿಯಾಮಖಾವ್ (SAR) ಚೈನಾಉತ್" + - "ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳುಮಾರ್ಟಿನಿಕ್ಮಾರಿಟೇನಿಯಾಮಾಂಟ್\u200cಸೆರೇಟ್ಮಾಲ್ಟಾಮಾರಿಶಿಯಸ" + - "್ಮಾಲ್ಡಿವ್ಸ್ಮಲಾವಿಮೆಕ್ಸಿಕೊಮಲೇಶಿಯಾಮೊಜಾಂಬಿಕ್ನಮೀಬಿಯಾನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾನೈಜರ್ನ" + - "ಾರ್ಫೋಕ್ ದ್ವೀಪನೈಜೀರಿಯಾನಿಕಾರಾಗುವಾನೆದರ್\u200cಲ್ಯಾಂಡ್ಸ್ನಾರ್ವೇನೇಪಾಳನೌರುನಿಯು" + - "ನ್ಯೂಜಿಲೆಂಡ್ಓಮನ್ಪನಾಮಾಪೆರುಫ್ರೆಂಚ್ ಪಾಲಿನೇಷ್ಯಾಪಪುವಾ ನ್ಯೂಗಿನಿಯಾಫಿಲಿಫೈನ್ಸ್ಪಾ" + - "ಕಿಸ್ತಾನಪೋಲ್ಯಾಂಡ್ಸೇಂಟ್ ಪಿಯರೆ ಮತ್ತು ಮಿಕೆಲನ್ಪಿಟ್\u200cಕೈರ್ನ್ ದ್ವೀಪಗಳುಪ್ಯೂ" + - "ರ್ಟೋ ರಿಕೊಪ್ಯಾಲೇಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶಪೋರ್ಚುಗಲ್ಪಲಾವುಪರಾಗ್ವೇಖತಾರ್ಔಟ್ ಲೈಯಿಂಗ್ ಓ" + - "ಷಿಯಾನಿಯಾರೀಯೂನಿಯನ್ರೊಮೇನಿಯಾಸೆರ್ಬಿಯಾರಷ್ಯಾರುವಾಂಡಾಸೌದಿ ಅರೇಬಿಯಾಸೊಲೊಮನ್ ದ್ವೀಪ" + - "ಗಳುಸೀಶೆಲ್ಲೆಸ್ಸೂಡಾನ್ಸ್ವೀಡನ್ಸಿಂಗಾಪುರ್ಸೇಂಟ್ ಹೆಲೆನಾಸ್ಲೋವೇನಿಯಾಸ್ವಾಲ್ಬಾರ್ಡ್ " + - "ಮತ್ತು ಜಾನ್ ಮೆಯನ್ಸ್ಲೋವೇಕಿಯಾಸಿಯೆರ್ರಾ ಲಿಯೋನ್ಸ್ಯಾನ್ ಮೆರಿನೋಸೆನೆಗಲ್ಸೊಮಾಲಿಯಾಸ" + - "ುರಿನಾಮದಕ್ಷಿಣ ಸೂಡಾನ್ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿಎಲ್ ಸಾಲ್ವೇಡಾರ್ಸಿಂಟ್ ಮಾರ್ಟ" + - "ೆನ್ಸಿರಿಯಾಸ್ವಾಜಿಲ್ಯಾಂಡ್ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾಟರ್ಕ್ಸ್ ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳು" + - "ಚಾದ್ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳುಟೋಗೋಥೈಲ್ಯಾಂಡ್ತಜಾಕಿಸ್ಥಾನ್ಟೊಕೆಲಾವ್ಪೂರ್ವ ತಿಮೋ" + - "ರ್ತುರ್ಕ್ಮೇನಿಸ್ಥಾನ್ಟುನಿಶಿಯಾಟೊಂಗಟರ್ಕಿಟ್ರಿನಿಡಾಡ್ ಮತ್ತು ಟೊಬಾಗೊಟುವಾಲುಥೈವಾನ್" + - "ತಾಂಜೇನಿಯಾಉಕ್ರೈನ್ಉಗಾಂಡಾಯುಎಸ್\u200c. ಔಟ್\u200cಲೇಯಿಂಗ್ ದ್ವೀಪಗಳುಅಮೇರಿಕಾ ಸಂ" + - "ಯುಕ್ತ ಸಂಸ್ಥಾನಉರುಗ್ವೇಉಜ್ಬೇಕಿಸ್ಥಾನ್ವ್ಯಾಟಿಕನ್ಸೇಂಟ್. ವಿನ್ಸೆಂಟ್ ಮತ್ತು ಗ್ರೆನ" + - "ೆಡೈನ್ಸ್ವೆನೆಜುವೆಲಾಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳುಯು.ಎಸ್. ವರ್ಜಿನ್ ದ್ವೀಪಗಳುವಿಯೇ" + - "ಟ್ನಾಮ್ವನೌಟುವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾಸಮೋವಾಕೊಸೊವೊಯೆಮನ್ಮಯೊಟ್ಟೆದಕ್ಷಿಣ ಆಫ್ರಿಕಾಝಾಂ" + - "ಬಿಯಾಜಿಂಬಾಬ್ವೆಅಜ್ಞಾತ ಪ್ರದೇಶಪ್ರಪಂಚಆಫ್ರಿಕಾಉತ್ತರ ಅಮೇರಿಕಾದಕ್ಷಿಣ ಅಮೇರಿಕಾಓಶಿಯ" + - "ೇನಿಯಾಪಶ್ಚಿಮ ಆಫ್ರಿಕಾಮಧ್ಯ ಅಮೇರಿಕಾಪೂರ್ವ ಆಫ್ರಿಕಾಉತ್ತರ ಆಫ್ರಿಕಾಮಧ್ಯ ಆಫ್ರಿಕಾಆ" + - "ಫ್ರಿಕಾದ ದಕ್ಷಿಣ ಭಾಗಅಮೆರಿಕಾಸ್ಅಮೇರಿಕಾದ ಉತ್ತರ ಭಾಗಕೆರೀಬಿಯನ್ಪೂರ್ವ ಏಷ್ಯಾದಕ್ಷಿ" + - "ಣ ಏಷ್ಯಾಆಗ್ನೇಯ ಏಷ್ಯಾದಕ್ಷಿಣ ಯೂರೋಪ್ಆಸ್ಟ್ರೇಲೇಷ್ಯಾಮೆಲನೇಷಿಯಾಮೈಕ್ರೋನೇಶಿಯನ್ ಪ್" + - "ರದೇಶಪಾಲಿನೇಷ್ಯಾಏಷ್ಯಾಮಧ್ಯ ಏಷ್ಯಾಪಶ್ಚಿಮ ಏಷ್ಯಾಯೂರೋಪ್ಪೂರ್ವ ಯೂರೋಪ್ಉತ್ತರ ಯೂರೋಪ" + - "್ಪಶ್ಚಿಮ ಯೂರೋಪ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕಾ" - -var knRegionIdx = []uint16{ // 290 elements + "ಜೆಗೋವಿನಾಬಾರ್ಬಡೋಸ್ಬಾಂಗ್ಲಾದೇಶ್ಬೆಲ್ಜಿಯಮ್ಬುರ್ಕಿನಾ ಫಾಸೋಬಲ್ಗೇರಿಯಾಬಹ್ರೇನ್ಬುರು" + + "ಂಡಿಬೆನಿನ್ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿಬರ್ಮುಡಾಬ್ರೂನಿಬೊಲಿವಿಯಾಕೆರೀಬಿಯನ್ ನೆದರ್\u200cಲ್ಯ" + + "ಾಂಡ್ಸ್ಬ್ರೆಜಿಲ್ಬಹಾಮಾಸ್ಭೂತಾನ್ಬೋವೆಟ್ ದ್ವೀಪಬೋಟ್ಸ್\u200cವಾನಾಬೆಲಾರಸ್ಬೆಲಿಜ್ಕೆ" + + "ನಡಾಕೊಕೊಸ್ (ಕೀಲಿಂಗ್) ದ್ವೀಪಗಳುಕಾಂಗೋ - ಕಿನ್ಶಾಸಾಮಧ್ಯ ಆಫ್ರಿಕಾ ಗಣರಾಜ್ಯಕಾಂಗೋ " + + "- ಬ್ರಾಜಾವಿಲ್ಲೇಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್ಕೋತ್\u200c ದಿವಾರ್\u200dಕುಕ್ ದ್ವೀಪಗಳುಚಿಲಿಕ್" + + "ಯಾಮರೋನ್ಚೀನಾಕೊಲಂಬಿಯಾಕ್ಲಿಪ್ಪರ್\u200cಟಾನ್ ದ್ವೀಪಗಳುಕೊಸ್ಟಾ ರಿಕಾಕ್ಯೂಬಾಕೇಪ್ ವ" + + "ರ್ಡೆಕುರಾಕಾವ್ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪಸೈಪ್ರಸ್ಝೆಕಿಯಾಜರ್ಮನಿಡೈಗೋ ಗಾರ್ಸಿಯಜಿಬೋಟಿಡೆನ್ಮಾ" + + "ರ್ಕ್ಡೊಮಿನಿಕಾಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್ಅಲ್ಗೇರಿಯಾಸೆಯುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾಈಕ್ವೆಡಾರ್ಎ" + + "ಸ್ಟೋನಿಯಾಈಜಿಪ್ಟ್ಪಶ್ಚಿಮ ಸಹಾರಾಏರಿಟ್ರಿಯಾಸ್ಪೇನ್ಇಥಿಯೋಪಿಯಾಯುರೋಪಿಯನ್ ಒಕ್ಕೂಟಫಿನ" + + "್\u200cಲ್ಯಾಂಡ್ಫಿಜಿಫಾಲ್ಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಮೈಕ್ರೋನೇಶಿಯಾಫರೋ ದ್ವೀಪಗಳು" + + "ಫ್ರಾನ್ಸ್ಗೆಬೊನ್ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್ಗ್ರೆನೆಡಾಜಾರ್ಜಿಯಾಫ್ರೆಂಚ್ ಗಯಾನಾಗುರ್ನ್" + + "\u200cಸೆಘಾನಾಗಿಬ್ರಾಲ್ಟರ್ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ಗ್ಯಾಂಬಿಯಾಗಿನಿಗುಡೆಲೋಪ್ಈಕ್ವೆಟೋರಿ" + + "ಯಲ್ ಗಿನಿಗ್ರೀಸ್ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ್ಯಾಂಡ್\u200dವಿಚ್ ದ್ವೀಪಗಳುಗ" + + "್ವಾಟೆಮಾಲಾಗುಯಾಮ್ಗಿನಿ-ಬಿಸ್ಸಾವ್ಗಯಾನಾಹಾಂಗ್ ಕಾಂಗ್ SAR ಚೈನಾಹರ್ಡ್ ಮತ್ತು ಮ್ಯಾಕ" + + "್\u200cಡೋನಾಲ್ಡ್ ದ್ವೀಪಗಳುಹೊಂಡುರಾಸ್ಕ್ರೊಯೇಶಿಯಾಹೈಟಿಹಂಗೇರಿಕ್ಯಾನರಿ ದ್ವೀಪಗಳುಇ" + + "ಂಡೋನೇಶಿಯಾಐರ್ಲೆಂಡ್ಇಸ್ರೇಲ್ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ಭಾರತಬ್ರಿಟೀಷ್ ಹಿಂದೂ ಮಹಾಸಾಗರದ ಪ್ರದ" + + "ೇಶಇರಾಕ್ಇರಾನ್ಐಸ್\u200cಲ್ಯಾಂಡ್ಇಟಲಿಜೆರ್ಸಿಜಮೈಕಾಜೋರ್ಡಾನ್ಜಪಾನ್ಕೀನ್ಯಾಕಿರ್ಗಿಸ್" + + "ಥಾನ್ಕಾಂಬೋಡಿಯಾಕಿರಿಬಾತಿಕೊಮೊರೊಸ್ಸೇಂಟ್ ಕಿಟ್ಸ್ ಮತ್ತು ನೆವಿಸ್ಉತ್ತರ ಕೋರಿಯಾದಕ್ಷ" + + "ಿಣ ಕೋರಿಯಾಕುವೈತ್ಕೇಮನ್ ದ್ವೀಪಗಳುಕಝಾಕಿಸ್ಥಾನ್ಲಾವೋಸ್ಲೆಬನಾನ್ಸೇಂಟ್ ಲೂಸಿಯಾಲಿಚೆನ" + + "್\u200cಸ್ಟೈನ್ಶ್ರೀಲಂಕಾಲಿಬೇರಿಯಾಲೆಸೊಥೋಲಿಥುವೇನಿಯಾಲಕ್ಸಂಬರ್ಗ್ಲಾಟ್ವಿಯಾಲಿಬಿಯಾಮ" + + "ೊರಾಕ್ಕೊಮೊನಾಕೊಮೊಲ್ಡೋವಾಮೊಂಟೆನೆಗ್ರೋಸೇಂಟ್ ಮಾರ್ಟಿನ್ಮಡಗಾಸ್ಕರ್ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳ" + + "ುಮ್ಯಾಸಿಡೋನಿಯಾಮಾಲಿಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)ಮೊಂಗೋಲಿಯಾಮಖಾವು (SAR) ಚೈನಾಉತ್ತರ ಮರಿಯಾನ" + + "ಾ ದ್ವೀಪಗಳುಮಾರ್ಟಿನಿಕ್ಮಾರಿಟೇನಿಯಾಮಾಂಟ್\u200cಸೆರೇಟ್ಮಾಲ್ಟಾಮಾರಿಷಸ್ಮಾಲ್ಡಿವ್ಸ್" + + "ಮಲಾವಿಮೆಕ್ಸಿಕೊಮಲೇಶಿಯಾಮೊಜಾಂಬಿಕ್ನಮೀಬಿಯಾನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾನೈಜರ್ನಾರ್ಫೋಕ್ ದ್ವ" + + "ೀಪನೈಜೀರಿಯಾನಿಕಾರಾಗುವಾನೆದರ್\u200cಲ್ಯಾಂಡ್ಸ್ನಾರ್ವೇನೇಪಾಳನೌರುನಿಯುನ್ಯೂಜಿಲೆಂಡ್" + + "ಓಮನ್ಪನಾಮಾಪೆರುಫ್ರೆಂಚ್ ಪಾಲಿನೇಷ್ಯಾಪಪುವಾ ನ್ಯೂಗಿನಿಯಾಫಿಲಿಫೈನ್ಸ್ಪಾಕಿಸ್ತಾನಪೋಲ್" + + "ಯಾಂಡ್ಸೇಂಟ್ ಪಿಯರೆ ಮತ್ತು ಮಿಕೆಲನ್ಪಿಟ್\u200cಕೈರ್ನ್ ದ್ವೀಪಗಳುಪ್ಯೂರ್ಟೋ ರಿಕೊಪ್" + + "ಯಾಲೇಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶಗಳುಪೋರ್ಚುಗಲ್ಪಲಾವುಪರಾಗ್ವೇಖತಾರ್ಔಟ್ ಲೈಯಿಂಗ್ ಓಷಿಯಾನಿಯಾ" + + "ರೀಯೂನಿಯನ್ರೊಮೇನಿಯಾಸೆರ್ಬಿಯಾರಷ್ಯಾರುವಾಂಡಾಸೌದಿ ಅರೇಬಿಯಾಸೊಲೊಮನ್ ದ್ವೀಪಗಳುಸೀಶೆಲ" + + "್ಲೆಸ್ಸೂಡಾನ್ಸ್ವೀಡನ್ಸಿಂಗಾಪುರ್ಸೇಂಟ್ ಹೆಲೆನಾಸ್ಲೋವೇನಿಯಾಸ್ವಾಲ್ಬಾರ್ಡ್ ಮತ್ತು ಜಾ" + + "ನ್ ಮೆಯನ್ಸ್ಲೋವಾಕಿಯಾಸಿಯೆರ್ರಾ ಲಿಯೋನ್ಸ್ಯಾನ್ ಮೆರಿನೋಸೆನೆಗಲ್ಸೊಮಾಲಿಯಾಸುರಿನಾಮದಕ" + + "್ಷಿಣ ಸೂಡಾನ್ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿಎಲ್ ಸಾಲ್ವೇಡಾರ್ಸಿಂಟ್ ಮಾರ್ಟೆನ್ಸಿರಿಯ" + + "ಾಸ್ವಾಜಿಲ್ಯಾಂಡ್ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾಟರ್ಕ್ಸ್ ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳುಚಾದ್ಫ್ರೆ" + + "ಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳುಟೋಗೋಥೈಲ್ಯಾಂಡ್ತಜಿಕಿಸ್ತಾನ್ಟೊಕೆಲಾವ್ಪೂರ್ವ ತಿಮೋರ್ತುರ್ಕಮ" + + "ೆನಿಸ್ತಾನ್ಟುನಿಶಿಯಾಟೊಂಗಟರ್ಕಿಟ್ರಿನಿಡಾಡ್ ಮತ್ತು ಟೊಬಾಗೊಟುವಾಲುಥೈವಾನ್ತಾಂಜೇನಿಯಾ" + + "ಉಕ್ರೈನ್ಉಗಾಂಡಾಯುಎಸ್\u200c. ಔಟ್\u200cಲೇಯಿಂಗ್ ದ್ವೀಪಗಳುಸಂಯುಕ್ತ ಸಂಸ್ಥಾನಗಳುಅ" + + "ಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನಉರುಗ್ವೇಉಜ್ಬೇಕಿಸ್ಥಾನ್ವ್ಯಾಟಿಕನ್ಸೇಂಟ್. ವಿನ್ಸೆಂಟ್ ಮತ" + + "್ತು ಗ್ರೆನೆಡೈನ್ಸ್ವೆನೆಜುವೆಲಾಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳುಯು.ಎಸ್. ವರ್ಜಿನ್ ದ್ವ" + + "ೀಪಗಳುವಿಯೇಟ್ನಾಮ್ವನೌಟುವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾಸಮೋವಾಕೊಸೊವೊಯೆಮನ್ಮಯೊಟ್ಟೆದಕ್ಷಿಣ ಆ" + + "ಫ್ರಿಕಾಝಾಂಬಿಯಾಜಿಂಬಾಬ್ವೆಅಜ್ಞಾತ ಪ್ರದೇಶಪ್ರಪಂಚಆಫ್ರಿಕಾಉತ್ತರ ಅಮೇರಿಕಾದಕ್ಷಿಣ ಅಮ" + + "ೇರಿಕಾಓಶಿಯೇನಿಯಾಪಶ್ಚಿಮ ಆಫ್ರಿಕಾಮಧ್ಯ ಅಮೇರಿಕಾಪೂರ್ವ ಆಫ್ರಿಕಾಉತ್ತರ ಆಫ್ರಿಕಾಮಧ್ಯ" + + " ಆಫ್ರಿಕಾಆಫ್ರಿಕಾದ ದಕ್ಷಿಣ ಭಾಗಅಮೆರಿಕಾಸ್ಅಮೇರಿಕಾದ ಉತ್ತರ ಭಾಗಕೆರೀಬಿಯನ್ಪೂರ್ವ ಏಷ್" + + "ಯಾದಕ್ಷಿಣ ಏಷ್ಯಾಆಗ್ನೇಯ ಏಷ್ಯಾದಕ್ಷಿಣ ಯೂರೋಪ್ಆಸ್ಟ್ರೇಲೇಷ್ಯಾಮೆಲನೇಷಿಯಾಮೈಕ್ರೋನೇಶ" + + "ಿಯನ್ ಪ್ರದೇಶಪಾಲಿನೇಷ್ಯಾಏಷ್ಯಾಮಧ್ಯ ಏಷ್ಯಾಪಶ್ಚಿಮ ಏಷ್ಯಾಯೂರೋಪ್ಪೂರ್ವ ಯೂರೋಪ್ಉತ್ತ" + + "ರ ಯೂರೋಪ್ಪಶ್ಚಿಮ ಯೂರೋಪ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕಾ" + +var knRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0028, 0x003a, 0x0075, 0x0099, 0x00d7, 0x00f5, 0x0110, 0x012b, 0x013d, 0x015b, 0x0179, 0x01a1, 0x01bc, 0x01da, 0x01e9, 0x021a, 0x0238, 0x0282, 0x029d, 0x02be, 0x02d9, 0x02fe, 0x0319, - 0x032b, 0x0340, 0x0352, 0x0380, 0x0395, 0x03a7, 0x03bf, 0x0408, - 0x0420, 0x0435, 0x0447, 0x0469, 0x048a, 0x049f, 0x04b1, 0x04c0, - 0x0503, 0x052d, 0x0565, 0x059b, 0x05cb, 0x05f0, 0x0615, 0x0621, - 0x063c, 0x0648, 0x0660, 0x06a3, 0x06c2, 0x06d4, 0x06f0, 0x0708, - 0x0733, 0x0748, 0x0770, 0x0782, 0x07a4, 0x07b6, 0x07d4, 0x07ec, + 0x032e, 0x0343, 0x0355, 0x0383, 0x0398, 0x03aa, 0x03c2, 0x040b, + 0x0423, 0x0438, 0x044a, 0x046c, 0x048d, 0x04a2, 0x04b4, 0x04c3, + 0x0506, 0x0530, 0x0568, 0x059e, 0x05ce, 0x05f3, 0x0618, 0x0624, + 0x063f, 0x064b, 0x0663, 0x06a6, 0x06c5, 0x06d7, 0x06f3, 0x070b, + 0x0736, 0x074b, 0x075d, 0x076f, 0x0791, 0x07a3, 0x07c1, 0x07d9, // Entry 40 - 7F - 0x0823, 0x083e, 0x0876, 0x0891, 0x08ac, 0x08c1, 0x08e3, 0x08fe, - 0x0910, 0x092b, 0x095c, 0x0980, 0x098c, 0x09cf, 0x09f3, 0x0a15, - 0x0a2d, 0x0a3f, 0x0a70, 0x0a88, 0x0aa0, 0x0ac5, 0x0ae0, 0x0aec, - 0x0b0d, 0x0b37, 0x0b52, 0x0b5e, 0x0b76, 0x0ba7, 0x0bb9, 0x0c45, - 0x0c63, 0x0c75, 0x0c9a, 0x0ca9, 0x0cd9, 0x0d4f, 0x0d6a, 0x0d88, - 0x0d94, 0x0da6, 0x0dd4, 0x0df2, 0x0e0a, 0x0e1f, 0x0e45, 0x0e51, - 0x0ea8, 0x0eb7, 0x0ec6, 0x0ee7, 0x0ef3, 0x0f05, 0x0f14, 0x0f2c, - 0x0f3b, 0x0f4d, 0x0f71, 0x0f8c, 0x0fa4, 0x0fbc, 0x1001, 0x1023, + 0x0810, 0x082b, 0x0863, 0x087e, 0x0899, 0x08ae, 0x08d0, 0x08eb, + 0x08fd, 0x0918, 0x0946, 0x0946, 0x096a, 0x0976, 0x09b9, 0x09dd, + 0x09ff, 0x0a17, 0x0a29, 0x0a5a, 0x0a72, 0x0a8a, 0x0aaf, 0x0aca, + 0x0ad6, 0x0af7, 0x0b21, 0x0b3c, 0x0b48, 0x0b60, 0x0b91, 0x0ba3, + 0x0c2f, 0x0c4d, 0x0c5f, 0x0c84, 0x0c93, 0x0cc3, 0x0d29, 0x0d44, + 0x0d62, 0x0d6e, 0x0d80, 0x0dae, 0x0dcc, 0x0de4, 0x0df9, 0x0e1f, + 0x0e2b, 0x0e7f, 0x0e8e, 0x0e9d, 0x0ebe, 0x0eca, 0x0edc, 0x0eeb, + 0x0f03, 0x0f12, 0x0f24, 0x0f48, 0x0f63, 0x0f7b, 0x0f93, 0x0fd8, // Entry 80 - BF - 0x1048, 0x105a, 0x1082, 0x10a3, 0x10b5, 0x10ca, 0x10ec, 0x1113, - 0x112b, 0x1143, 0x1155, 0x1173, 0x1191, 0x11a9, 0x11bb, 0x11d3, - 0x11e5, 0x11fd, 0x121e, 0x1246, 0x1261, 0x128f, 0x12b3, 0x12bf, - 0x12e9, 0x1304, 0x1326, 0x1364, 0x1382, 0x13a0, 0x13c4, 0x13d6, - 0x13f1, 0x140f, 0x141e, 0x1436, 0x144b, 0x1466, 0x147b, 0x14ac, - 0x14bb, 0x14e3, 0x14fb, 0x1519, 0x1546, 0x1558, 0x1567, 0x1573, - 0x157f, 0x15a0, 0x15ac, 0x15bb, 0x15c7, 0x15fb, 0x1629, 0x1647, - 0x1662, 0x167d, 0x16c2, 0x16fc, 0x1721, 0x1761, 0x177c, 0x178b, + 0x0ffa, 0x101f, 0x1031, 0x1059, 0x107a, 0x108c, 0x10a1, 0x10c3, + 0x10ea, 0x1102, 0x111a, 0x112c, 0x114a, 0x1168, 0x1180, 0x1192, + 0x11aa, 0x11bc, 0x11d4, 0x11f5, 0x121d, 0x1238, 0x1266, 0x128a, + 0x1296, 0x12c0, 0x12db, 0x12fd, 0x133b, 0x1359, 0x1377, 0x139b, + 0x13ad, 0x13c2, 0x13e0, 0x13ef, 0x1407, 0x141c, 0x1437, 0x144c, + 0x147d, 0x148c, 0x14b4, 0x14cc, 0x14ea, 0x1517, 0x1529, 0x1538, + 0x1544, 0x1550, 0x1571, 0x157d, 0x158c, 0x1598, 0x15cc, 0x15fa, + 0x1618, 0x1633, 0x164e, 0x1693, 0x16cd, 0x16f2, 0x173b, 0x1756, // Entry C0 - FF - 0x17a0, 0x17af, 0x17ea, 0x1805, 0x181d, 0x1835, 0x1844, 0x1859, - 0x187b, 0x18a9, 0x18c7, 0x18d9, 0x18ee, 0x1909, 0x192b, 0x1949, - 0x199a, 0x19b8, 0x19e3, 0x1a08, 0x1a1d, 0x1a35, 0x1a4a, 0x1a6f, - 0x1ab7, 0x1adf, 0x1b07, 0x1b19, 0x1b40, 0x1b75, 0x1bc6, 0x1bd2, - 0x1c16, 0x1c22, 0x1c3d, 0x1c5e, 0x1c76, 0x1c98, 0x1cc8, 0x1ce0, - 0x1cec, 0x1cfb, 0x1d3c, 0x1d4e, 0x1d60, 0x1d7b, 0x1d90, 0x1da2, - 0x1df0, 0x1e31, 0x1e46, 0x1e6d, 0x1e88, 0x1ee9, 0x1f07, 0x1f4e, - 0x1f8e, 0x1fac, 0x1fbb, 0x1ff0, 0x1fff, 0x2011, 0x2020, 0x2035, + 0x1765, 0x177a, 0x1789, 0x17c4, 0x17df, 0x17f7, 0x180f, 0x181e, + 0x1833, 0x1855, 0x1883, 0x18a1, 0x18b3, 0x18c8, 0x18e3, 0x1905, + 0x1923, 0x1974, 0x1992, 0x19bd, 0x19e2, 0x19f7, 0x1a0f, 0x1a24, + 0x1a49, 0x1a91, 0x1ab9, 0x1ae1, 0x1af3, 0x1b1a, 0x1b4f, 0x1ba0, + 0x1bac, 0x1bf0, 0x1bfc, 0x1c17, 0x1c38, 0x1c50, 0x1c72, 0x1c9f, + 0x1cb7, 0x1cc3, 0x1cd2, 0x1d13, 0x1d25, 0x1d37, 0x1d52, 0x1d67, + 0x1d79, 0x1dc7, 0x1dfb, 0x1e3c, 0x1e51, 0x1e78, 0x1e93, 0x1ef4, + 0x1f12, 0x1f59, 0x1f99, 0x1fb7, 0x1fc6, 0x1ffb, 0x200a, 0x201c, // Entry 100 - 13F - 0x205d, 0x2072, 0x208d, 0x20b2, 0x20c4, 0x20d9, 0x20fe, 0x2126, - 0x2141, 0x2169, 0x218b, 0x21b0, 0x21d5, 0x21f7, 0x222c, 0x2247, - 0x2279, 0x2294, 0x22b3, 0x22d5, 0x22f7, 0x231c, 0x2343, 0x235e, - 0x2398, 0x23b6, 0x23c5, 0x23e1, 0x2403, 0x2415, 0x2437, 0x2459, - 0x247e, 0x24ac, -} // Size: 604 bytes - -var koRegionStr string = "" + // Size: 3888 bytes + 0x202b, 0x2040, 0x2068, 0x207d, 0x2098, 0x20bd, 0x20cf, 0x20e4, + 0x2109, 0x2131, 0x214c, 0x2174, 0x2196, 0x21bb, 0x21e0, 0x2202, + 0x2237, 0x2252, 0x2284, 0x229f, 0x22be, 0x22e0, 0x2302, 0x2327, + 0x234e, 0x2369, 0x23a3, 0x23c1, 0x23d0, 0x23ec, 0x240e, 0x2420, + 0x2442, 0x2464, 0x2489, 0x24b7, +} // Size: 608 bytes + +const koRegionStr string = "" + // Size: 3880 bytes "어센션 섬안도라아랍에미리트아프가니스탄앤티가 바부다앵귈라알바니아아르메니아앙골라남극 대륙아르헨티나아메리칸 사모아오스트리아오스트레일리아" + "아루바올란드 제도아제르바이잔보스니아 헤르체고비나바베이도스방글라데시벨기에부르키나파소불가리아바레인부룬디베냉생바르텔레미버뮤다브루나이" + - "볼리비아네덜란드령 카리브브라질바하마부탄부베섬보츠와나벨라루스벨리즈캐나다코코스 제도콩고-킨샤사중앙 아프리카 공화국콩고스위스코트디부" + - "아르쿡 제도칠레카메룬중국콜롬비아클립퍼튼 섬코스타리카쿠바카보베르데퀴라소크리스마스섬키프로스체코독일디에고 가르시아지부티덴마크도미니카" + - "도미니카 공화국알제리세우타 및 멜리야에콰도르에스토니아이집트서사하라에리트리아스페인에티오피아유럽 연합핀란드피지포클랜드 제도미크로네" + - "시아페로 제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터그린란드감비아기니과들루프적도 기니그리스사우스조지아 사우스샌드" + - "위치 제도과테말라괌기니비사우가이아나홍콩(중국 특별행정구)허드 맥도널드 제도온두라스크로아티아아이티헝가리카나리아 제도인도네시아아일" + - "랜드이스라엘맨 섬인도영국령 인도양 식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보디아키리바시코모로세인트키" + - "츠 네비스조선민주주의인민공화국대한민국쿠웨이트케이맨 제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아레소토리투아니아" + - "룩셈부르크라트비아리비아모로코모나코몰도바몬테네그로생마르탱마다가스카르마셜 제도마케도니아말리미얀마몽골마카오(중국 특별행정구)북마리아" + - "나제도마르티니크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴칼레도니아니제르노퍽섬나이지리아니카라과네덜란드" + - "노르웨이네팔나우루니우에뉴질랜드오만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬푸에르토리코팔레" + - "스타인 지구포르투갈팔라우파라과이카타르오세아니아 외곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도세이셸수단스웨덴싱가포" + - "르세인트헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마리노세네갈소말리아수리남남수단상투메 프린시페엘살바도르신트마르턴시리" + - "아스와질란드트리스탄다쿠나터크스 케이커스 제도차드프랑스 남부 지방토고태국타지키스탄토켈라우동티모르투르크메니스탄튀니지통가터키트리니다" + - "드 토바고투발루대만탄자니아우크라이나우간다미국령 해외 제도미국우루과이우즈베키스탄바티칸 시국세인트빈센트그레나딘베네수엘라영국령 버진" + - "아일랜드미국령 버진아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요트남아프리카잠비아짐바브웨알려지지 않은 지역세계아프리카" + - "북아메리카남아메리카(남미)오세아니아서부 아프리카중앙 아메리카동부 아프리카북부 아프리카중부 아프리카남부 아프리카아메리카 대륙북부" + - " 아메리카카리브 제도동아시아남아시아동남아시아남유럽오스트랄라시아멜라네시아미크로네시아 지역폴리네시아아시아중앙 아시아서아시아유럽동유럽북" + + "볼리비아네덜란드령 카리브브라질바하마부탄부베섬보츠와나벨라루스벨리즈캐나다코코스 제도콩고-킨샤사중앙 아프리카 공화국콩고-브라자빌스위" + + "스코트디부아르쿡 제도칠레카메룬중국콜롬비아클립퍼튼 섬코스타리카쿠바카보베르데퀴라소크리스마스섬키프로스체코독일디에고 가르시아지부티덴마" + + "크도미니카도미니카 공화국알제리세우타 및 멜리야에콰도르에스토니아이집트서사하라에리트리아스페인에티오피아유럽 연합핀란드피지포클랜드 제" + + "도미크로네시아페로 제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터그린란드감비아기니과들루프적도 기니그리스사우스조지아 " + + "사우스샌드위치 제도과테말라괌기니비사우가이아나홍콩(중국 특별행정구)허드 맥도널드 제도온두라스크로아티아아이티헝가리카나리아 제도인도" + + "네시아아일랜드이스라엘맨 섬인도영국령 인도양 식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보디아키리바시코모" + + "로세인트키츠 네비스북한대한민국쿠웨이트케이맨 제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아레소토리투아니아룩셈부르" + + "크라트비아리비아모로코모나코몰도바몬테네그로생마르탱마다가스카르마셜 제도마케도니아말리미얀마몽골마카오(중국 특별행정구)북마리아나제도마" + + "르티니크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴칼레도니아니제르노퍽섬나이지리아니카라과네덜란드노르웨이" + + "네팔나우루니우에뉴질랜드오만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬푸에르토리코팔레스타인 " + + "지구포르투갈팔라우파라과이카타르오세아니아 외곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도세이셸수단스웨덴싱가포르세인트" + + "헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마리노세네갈소말리아수리남남수단상투메 프린시페엘살바도르신트마르턴시리아스와질" + + "란드트리스탄다쿠나터크스 케이커스 제도차드프랑스 남부 지방토고태국타지키스탄토켈라우동티모르투르크메니스탄튀니지통가터키트리니다드 토바" + + "고투발루대만탄자니아우크라이나우간다미국령 해외 제도유엔미국우루과이우즈베키스탄바티칸 시국세인트빈센트그레나딘베네수엘라영국령 버진아일" + + "랜드미국령 버진아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요트남아프리카잠비아짐바브웨알려지지 않은 지역세계아프리카북아" + + "메리카남아메리카(남미)오세아니아서부 아프리카중앙 아메리카동부 아프리카북부 아프리카중부 아프리카남부 아프리카아메리카 대륙북부 아" + + "메리카카리브 제도동아시아남아시아동남아시아남유럽오스트랄라시아멜라네시아미크로네시아 지역폴리네시아아시아중앙 아시아서아시아유럽동유럽북" + "유럽서유럽라틴 아메리카" -var koRegionIdx = []uint16{ // 290 elements +var koRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000d, 0x0016, 0x0028, 0x003a, 0x004d, 0x0056, 0x0062, 0x0071, 0x007a, 0x0087, 0x0096, 0x00ac, 0x00bb, 0x00d0, 0x00d9, 0x00e9, 0x00fb, 0x011a, 0x0129, 0x0138, 0x0141, 0x0153, 0x015f, 0x0168, 0x0171, 0x0177, 0x0189, 0x0192, 0x019e, 0x01aa, 0x01c3, 0x01cc, 0x01d5, 0x01db, 0x01e4, 0x01f0, 0x01fc, 0x0205, 0x020e, - 0x021e, 0x022e, 0x024b, 0x0251, 0x025a, 0x026c, 0x0276, 0x027c, - 0x0285, 0x028b, 0x0297, 0x02a7, 0x02b6, 0x02bc, 0x02cb, 0x02d4, - 0x02e6, 0x02f2, 0x02f8, 0x02fe, 0x0314, 0x031d, 0x0326, 0x0332, + 0x021e, 0x022e, 0x024b, 0x025e, 0x0267, 0x0279, 0x0283, 0x0289, + 0x0292, 0x0298, 0x02a4, 0x02b4, 0x02c3, 0x02c9, 0x02d8, 0x02e1, + 0x02f3, 0x02ff, 0x0305, 0x030b, 0x0321, 0x032a, 0x0333, 0x033f, // Entry 40 - 7F - 0x0348, 0x0351, 0x0368, 0x0374, 0x0383, 0x038c, 0x0398, 0x03a7, - 0x03b0, 0x03bf, 0x03cc, 0x03d5, 0x03db, 0x03ee, 0x0400, 0x040d, - 0x0416, 0x041c, 0x0422, 0x042e, 0x0437, 0x044d, 0x0453, 0x0459, - 0x0465, 0x0471, 0x047a, 0x0480, 0x048c, 0x0499, 0x04a2, 0x04d1, - 0x04dd, 0x04e0, 0x04ef, 0x04fb, 0x0519, 0x0533, 0x053f, 0x054e, - 0x0557, 0x0560, 0x0573, 0x0582, 0x058e, 0x059a, 0x05a1, 0x05a7, - 0x05c4, 0x05cd, 0x05d3, 0x05e2, 0x05ee, 0x05f4, 0x0600, 0x0609, - 0x060f, 0x0615, 0x0627, 0x0633, 0x063f, 0x0648, 0x0661, 0x0682, + 0x0355, 0x035e, 0x0375, 0x0381, 0x0390, 0x0399, 0x03a5, 0x03b4, + 0x03bd, 0x03cc, 0x03d9, 0x03d9, 0x03e2, 0x03e8, 0x03fb, 0x040d, + 0x041a, 0x0423, 0x0429, 0x042f, 0x043b, 0x0444, 0x045a, 0x0460, + 0x0466, 0x0472, 0x047e, 0x0487, 0x048d, 0x0499, 0x04a6, 0x04af, + 0x04de, 0x04ea, 0x04ed, 0x04fc, 0x0508, 0x0526, 0x0540, 0x054c, + 0x055b, 0x0564, 0x056d, 0x0580, 0x058f, 0x059b, 0x05a7, 0x05ae, + 0x05b4, 0x05d1, 0x05da, 0x05e0, 0x05ef, 0x05fb, 0x0601, 0x060d, + 0x0616, 0x061c, 0x0622, 0x0634, 0x0640, 0x064c, 0x0655, 0x066e, // Entry 80 - BF - 0x068e, 0x069a, 0x06aa, 0x06b9, 0x06c2, 0x06cb, 0x06dd, 0x06ef, - 0x06fb, 0x070a, 0x0713, 0x0722, 0x0731, 0x073d, 0x0746, 0x074f, - 0x0758, 0x0761, 0x0770, 0x077c, 0x078e, 0x079b, 0x07aa, 0x07b0, - 0x07b9, 0x07bf, 0x07e0, 0x07f5, 0x0804, 0x0810, 0x081f, 0x0825, - 0x0831, 0x083a, 0x0843, 0x084c, 0x085b, 0x0867, 0x0873, 0x0885, - 0x088e, 0x0897, 0x08a6, 0x08b2, 0x08be, 0x08ca, 0x08d0, 0x08d9, - 0x08e2, 0x08ee, 0x08f4, 0x08fd, 0x0903, 0x091f, 0x0931, 0x093a, - 0x0946, 0x094f, 0x0965, 0x0972, 0x0984, 0x099a, 0x09a6, 0x09af, + 0x0674, 0x0680, 0x068c, 0x069c, 0x06ab, 0x06b4, 0x06bd, 0x06cf, + 0x06e1, 0x06ed, 0x06fc, 0x0705, 0x0714, 0x0723, 0x072f, 0x0738, + 0x0741, 0x074a, 0x0753, 0x0762, 0x076e, 0x0780, 0x078d, 0x079c, + 0x07a2, 0x07ab, 0x07b1, 0x07d2, 0x07e7, 0x07f6, 0x0802, 0x0811, + 0x0817, 0x0823, 0x082c, 0x0835, 0x083e, 0x084d, 0x0859, 0x0865, + 0x0877, 0x0880, 0x0889, 0x0898, 0x08a4, 0x08b0, 0x08bc, 0x08c2, + 0x08cb, 0x08d4, 0x08e0, 0x08e6, 0x08ef, 0x08f5, 0x0911, 0x0923, + 0x092c, 0x0938, 0x0941, 0x0957, 0x0964, 0x0976, 0x098c, 0x0998, // Entry C0 - FF - 0x09bb, 0x09c4, 0x09da, 0x09e6, 0x09f2, 0x09fe, 0x0a07, 0x0a10, - 0x0a25, 0x0a35, 0x0a3e, 0x0a44, 0x0a4d, 0x0a59, 0x0a6b, 0x0a7a, - 0x0a99, 0x0aa8, 0x0ab7, 0x0ac3, 0x0acc, 0x0ad8, 0x0ae1, 0x0aea, - 0x0b00, 0x0b0f, 0x0b1e, 0x0b27, 0x0b36, 0x0b4b, 0x0b68, 0x0b6e, - 0x0b85, 0x0b8b, 0x0b91, 0x0ba0, 0x0bac, 0x0bb8, 0x0bcd, 0x0bd6, - 0x0bdc, 0x0be2, 0x0bfb, 0x0c04, 0x0c0a, 0x0c16, 0x0c25, 0x0c2e, - 0x0c45, 0x0c4b, 0x0c57, 0x0c69, 0x0c79, 0x0c97, 0x0ca6, 0x0cc2, - 0x0cde, 0x0ce7, 0x0cf3, 0x0d0d, 0x0d16, 0x0d1f, 0x0d25, 0x0d2e, + 0x09a1, 0x09ad, 0x09b6, 0x09cc, 0x09d8, 0x09e4, 0x09f0, 0x09f9, + 0x0a02, 0x0a17, 0x0a27, 0x0a30, 0x0a36, 0x0a3f, 0x0a4b, 0x0a5d, + 0x0a6c, 0x0a8b, 0x0a9a, 0x0aa9, 0x0ab5, 0x0abe, 0x0aca, 0x0ad3, + 0x0adc, 0x0af2, 0x0b01, 0x0b10, 0x0b19, 0x0b28, 0x0b3d, 0x0b5a, + 0x0b60, 0x0b77, 0x0b7d, 0x0b83, 0x0b92, 0x0b9e, 0x0baa, 0x0bbf, + 0x0bc8, 0x0bce, 0x0bd4, 0x0bed, 0x0bf6, 0x0bfc, 0x0c08, 0x0c17, + 0x0c20, 0x0c37, 0x0c3d, 0x0c43, 0x0c4f, 0x0c61, 0x0c71, 0x0c8f, + 0x0c9e, 0x0cba, 0x0cd6, 0x0cdf, 0x0ceb, 0x0d05, 0x0d0e, 0x0d17, // Entry 100 - 13F - 0x0d3d, 0x0d46, 0x0d52, 0x0d6c, 0x0d72, 0x0d7e, 0x0d8d, 0x0da4, - 0x0db3, 0x0dc6, 0x0dd9, 0x0dec, 0x0dff, 0x0e12, 0x0e25, 0x0e38, - 0x0e4b, 0x0e5b, 0x0e67, 0x0e73, 0x0e82, 0x0e8b, 0x0ea0, 0x0eaf, - 0x0ec8, 0x0ed7, 0x0ee0, 0x0ef0, 0x0efc, 0x0f02, 0x0f0b, 0x0f14, - 0x0f1d, 0x0f30, -} // Size: 604 bytes - -var kyRegionStr string = "" + // Size: 5805 bytes + 0x0d1d, 0x0d26, 0x0d35, 0x0d3e, 0x0d4a, 0x0d64, 0x0d6a, 0x0d76, + 0x0d85, 0x0d9c, 0x0dab, 0x0dbe, 0x0dd1, 0x0de4, 0x0df7, 0x0e0a, + 0x0e1d, 0x0e30, 0x0e43, 0x0e53, 0x0e5f, 0x0e6b, 0x0e7a, 0x0e83, + 0x0e98, 0x0ea7, 0x0ec0, 0x0ecf, 0x0ed8, 0x0ee8, 0x0ef4, 0x0efa, + 0x0f03, 0x0f0c, 0x0f15, 0x0f28, +} // Size: 608 bytes + +const kyRegionStr string = "" + // Size: 5809 bytes "Ассеншин аралыАндорраБириккен Араб ЭмираттарыАфганистанАнтигуа жана Барб" + "удаАнгуилаАлбанияАрменияАнголаАнтарктикаАргентинаАмерика СамоасыАвстрия" + "АвстралияАрубаАланд аралдарыАзербайжанБосния жана ГерцеговинаБарбадосБа" + @@ -41345,17 +46444,17 @@ var kyRegionStr string = "" + // Size: 5805 bytes "л СалвадорСинт МаартенСирияСвазилендТристан да КуньяТүркс жана Кайкос а" + "ралдарыЧадФранциянын Түштүктөгү аймактарыТогоТаиландТажикстанТокелауТим" + "ор-ЛестеТүркмөнстанТунисТонгаТүркияТринидад жана ТобагоТувалуТайваньТан" + - "занияУкраинаУгандаАКШнын сырткы аралдарыАмерика Кошмо ШтаттарыУругвайӨз" + - "бекстанВатиканСент-Винсент жана ГренадиналарВенесуэлаВиргин аралдары (Б" + - "ритания)Виргин аралдары (АКШ)ВьетнамВануатуУоллис жана ФутунаСамоаКосов" + - "оЙеменМайоттаТүштүк Африка РеспубликасыЗамбияЗимбабвеБелгисиз регионДүй" + - "нөАфрикаТүндүк АмерикаТүштүк АмерикаОкеанияБатыш АфрикаБорбордук Америк" + - "аЧыгыш АфрикаТүндүк АфрикаБорбордук АфрикаТүштүк АфрикаАмерикаТүндүк Ам" + - "ерика (регион)Кариб аралдарыЧыгыш АзияТүштүк АзияТүштүк-Чыгыш АзияТүштү" + - "к ЕвропаАвстралазияМеланезияМикронезия РегионуПолинезияАзияБорбор АзияБ" + - "атыш АзияЕвропаЧыгыш ЕвропаТүндүк ЕвропаБатыш ЕвропаЛатын Америкасы" - -var kyRegionIdx = []uint16{ // 290 elements + "занияУкраинаУгандаАКШнын сырткы аралдарыБУАмерика Кошмо ШтаттарыУругвай" + + "ӨзбекстанВатиканСент-Винсент жана ГренадиналарВенесуэлаВиргин аралдары " + + "(Британия)Виргин аралдары (АКШ)ВьетнамВануатуУоллис жана ФутунаСамоаКосо" + + "воЙеменМайоттаТүштүк Африка РеспубликасыЗамбияЗимбабвеБелгисиз чөлкөмДү" + + "йнөАфрикаТүндүк АмерикаТүштүк АмерикаОкеанияБатыш АфрикаБорбордук Амери" + + "каЧыгыш АфрикаТүндүк АфрикаБорбордук АфрикаТүштүк АфрикаАмерикаТүндүк А" + + "мерика (чөлкөм)Кариб аралдарыЧыгыш АзияТүштүк АзияТүштүк-Чыгыш АзияТүшт" + + "үк ЕвропаАвстралазияМеланезияМикронезия чөлкөмүПолинезияАзияБорбор Азия" + + "Батыш АзияЕвропаЧыгыш ЕвропаТүндүк ЕвропаБатыш ЕвропаЛатын Америкасы" + +var kyRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001b, 0x0029, 0x0057, 0x006b, 0x0091, 0x009f, 0x00ad, 0x00bb, 0x00c7, 0x00db, 0x00ed, 0x010a, 0x0118, 0x012a, 0x0134, @@ -41367,126 +46466,127 @@ var kyRegionIdx = []uint16{ // 290 elements 0x0480, 0x0488, 0x0492, 0x04a2, 0x04b9, 0x04c7, 0x04d1, 0x04e1, // Entry 40 - 7F 0x050a, 0x0514, 0x0536, 0x0544, 0x0552, 0x055e, 0x0575, 0x0583, - 0x0591, 0x059f, 0x05be, 0x05d0, 0x05da, 0x05fb, 0x060f, 0x062a, - 0x0638, 0x0642, 0x065b, 0x0669, 0x0675, 0x0692, 0x069e, 0x06a6, - 0x06b8, 0x06cc, 0x06d8, 0x06e4, 0x06f6, 0x071d, 0x0729, 0x0778, - 0x078a, 0x0792, 0x07a9, 0x07b5, 0x07d5, 0x080a, 0x081a, 0x082a, - 0x0834, 0x0842, 0x085d, 0x086f, 0x087f, 0x088d, 0x089e, 0x08a8, - 0x08ed, 0x08f5, 0x08fd, 0x090d, 0x0919, 0x0923, 0x092f, 0x093f, - 0x094b, 0x0955, 0x0969, 0x0979, 0x0989, 0x0997, 0x09bc, 0x09d3, + 0x0591, 0x059f, 0x05be, 0x05be, 0x05d0, 0x05da, 0x05fb, 0x060f, + 0x062a, 0x0638, 0x0642, 0x065b, 0x0669, 0x0675, 0x0692, 0x069e, + 0x06a6, 0x06b8, 0x06cc, 0x06d8, 0x06e4, 0x06f6, 0x071d, 0x0729, + 0x0778, 0x078a, 0x0792, 0x07a9, 0x07b5, 0x07d5, 0x080a, 0x081a, + 0x082a, 0x0834, 0x0842, 0x085d, 0x086f, 0x087f, 0x088d, 0x089e, + 0x08a8, 0x08ed, 0x08f5, 0x08fd, 0x090d, 0x0919, 0x0923, 0x092f, + 0x093f, 0x094b, 0x0955, 0x0969, 0x0979, 0x0989, 0x0997, 0x09bc, // Entry 80 - BF - 0x09ea, 0x09f6, 0x0a13, 0x0a25, 0x0a2d, 0x0a37, 0x0a4a, 0x0a60, - 0x0a71, 0x0a7f, 0x0a8b, 0x0a95, 0x0aa9, 0x0ab5, 0x0abf, 0x0acd, - 0x0ad9, 0x0ae7, 0x0afb, 0x0b10, 0x0b24, 0x0b43, 0x0b55, 0x0b5d, - 0x0b76, 0x0b86, 0x0ba2, 0x0bce, 0x0be0, 0x0bf4, 0x0c06, 0x0c12, - 0x0c22, 0x0c3f, 0x0c4b, 0x0c59, 0x0c69, 0x0c79, 0x0c87, 0x0ca2, - 0x0cac, 0x0cc5, 0x0cd3, 0x0ce5, 0x0cfd, 0x0d0d, 0x0d17, 0x0d21, - 0x0d29, 0x0d42, 0x0d4a, 0x0d56, 0x0d5e, 0x0d83, 0x0da3, 0x0db3, - 0x0dc3, 0x0dcf, 0x0df6, 0x0e15, 0x0e2a, 0x0e4f, 0x0e63, 0x0e6d, + 0x09d3, 0x09ea, 0x09f6, 0x0a13, 0x0a25, 0x0a2d, 0x0a37, 0x0a4a, + 0x0a60, 0x0a71, 0x0a7f, 0x0a8b, 0x0a95, 0x0aa9, 0x0ab5, 0x0abf, + 0x0acd, 0x0ad9, 0x0ae7, 0x0afb, 0x0b10, 0x0b24, 0x0b43, 0x0b55, + 0x0b5d, 0x0b76, 0x0b86, 0x0ba2, 0x0bce, 0x0be0, 0x0bf4, 0x0c06, + 0x0c12, 0x0c22, 0x0c3f, 0x0c4b, 0x0c59, 0x0c69, 0x0c79, 0x0c87, + 0x0ca2, 0x0cac, 0x0cc5, 0x0cd3, 0x0ce5, 0x0cfd, 0x0d0d, 0x0d17, + 0x0d21, 0x0d29, 0x0d42, 0x0d4a, 0x0d56, 0x0d5e, 0x0d83, 0x0da3, + 0x0db3, 0x0dc3, 0x0dcf, 0x0df6, 0x0e15, 0x0e2a, 0x0e4f, 0x0e63, // Entry C0 - FF - 0x0e7d, 0x0e87, 0x0ea2, 0x0eb0, 0x0ebe, 0x0eca, 0x0ed6, 0x0ee2, - 0x0efb, 0x0f1a, 0x0f2c, 0x0f36, 0x0f42, 0x0f52, 0x0f65, 0x0f75, - 0x0fa0, 0x0fb0, 0x0fc7, 0x0fda, 0x0fe8, 0x0ff4, 0x1004, 0x101b, - 0x1044, 0x1059, 0x1070, 0x107a, 0x108c, 0x10aa, 0x10db, 0x10e1, - 0x111d, 0x1125, 0x1133, 0x1145, 0x1153, 0x1168, 0x117e, 0x1188, - 0x1192, 0x119e, 0x11c4, 0x11d0, 0x11de, 0x11ee, 0x11fc, 0x1208, - 0x1232, 0x125c, 0x126a, 0x127c, 0x128a, 0x12c3, 0x12d5, 0x1305, - 0x132b, 0x1339, 0x1347, 0x1369, 0x1373, 0x137f, 0x1389, 0x1397, + 0x0e6d, 0x0e7d, 0x0e87, 0x0ea2, 0x0eb0, 0x0ebe, 0x0eca, 0x0ed6, + 0x0ee2, 0x0efb, 0x0f1a, 0x0f2c, 0x0f36, 0x0f42, 0x0f52, 0x0f65, + 0x0f75, 0x0fa0, 0x0fb0, 0x0fc7, 0x0fda, 0x0fe8, 0x0ff4, 0x1004, + 0x101b, 0x1044, 0x1059, 0x1070, 0x107a, 0x108c, 0x10aa, 0x10db, + 0x10e1, 0x111d, 0x1125, 0x1133, 0x1145, 0x1153, 0x1168, 0x117e, + 0x1188, 0x1192, 0x119e, 0x11c4, 0x11d0, 0x11de, 0x11ee, 0x11fc, + 0x1208, 0x1232, 0x1236, 0x1260, 0x126e, 0x1280, 0x128e, 0x12c7, + 0x12d9, 0x1309, 0x132f, 0x133d, 0x134b, 0x136d, 0x1377, 0x1383, // Entry 100 - 13F - 0x13c9, 0x13d5, 0x13e5, 0x1402, 0x140c, 0x1418, 0x1433, 0x144e, - 0x145c, 0x1473, 0x1494, 0x14ab, 0x14c4, 0x14e3, 0x14fc, 0x150a, - 0x1534, 0x154f, 0x1562, 0x1577, 0x1597, 0x15b0, 0x15c6, 0x15d8, - 0x15fb, 0x160d, 0x1615, 0x162a, 0x163d, 0x1649, 0x1660, 0x1679, - 0x1690, 0x16ad, -} // Size: 604 bytes - -var loRegionStr string = "" + // Size: 8043 bytes - "ເກາະອາເຊນຊັນອັນດໍຣາສະຫະລັດອາຣັບເອມິເຣດອາຟການິສຖານອາທິກົວ ບາບູດາແອນກຸຍລາແ" + - "ອວເບເນຍອາເມເນຍອັນໂກລາແອນຕາດຕິກາອາເຈນທິນາອາເມຣິກາ ຊາມົວໂອຕາລິກອອສເຕຣເລຍ" + - "ອໍຣູບາຫມູ່ເກາະໂອລັນອາເຊີໄບຈານບອດສະເນຍ ແລະ ແຮສໂກວີນາບາບາໂດສບັງກະລາເທດແບ" + - "ລຊິກເບີກິນາ ຟາໂຊບູລກາຣິບາເຣນບູຣຸນດິເບນິນເຊນ ບາເທເລມີເບີມິວດາບຣູໄນໂບລິເ" + - "ວຍຄາຣິບບຽນ ເນເທີແລນບະເລຊີນບາຮາມາສພູຖານເກາະບູເວດບອດສະວານາເບວບາຣຸສເບລີຊກ" + - "ານາດາຫມູ່ເກາະໂກໂກສຄອງໂກ - ຄິນຊາຊາສາທາລະນະລັດອາຟຣິກາກາງຄອງໂກ - ບຣາຊາວິວ" + - "ສະວິດເຊີແລນໂຄຕີ ວົວໝູ່ເກາະຄຸກຈີເລຄາເມຣູນຈີນໂຄລົມເບຍເກາະຄລິບເປີຕັນໂຄສຕາ" + - " ຣິກາກຸຍບາເຄບ ເວີດຄູຣາຊາວເກາະຄຣິສມາດໄຊປຣັສສາທາລະນະລັດເຊກເຢຍລະມັນດິເອໂກ ກ" + - "າເຊຍຈິບູຕິເດນມາກໂດມີນິຄາສາທາລະນະລັດ ໂດມິນິກັນອັລຈິເຣຍເຊວຕາ ແລະເມລິນລາເ" + - "ອກວາດໍເອສໂຕເນຍອີຢິບຊາຮາຣາຕາເວັນຕົກເອຣິເທຣຍສະເປນອີທິໂອເປຍສະຫະພາບຢູໂຣບຝຽ" + - "ກລັງຟິຈິຫມູ່ເກາະຟອກແລນໄມໂຄຣນີເຊຍຫມູ່ເກາະແຟໂຣຝຣັ່ງກາບອນສະຫະລາດຊະອະນາຈັກ" + - "ເກຣເນດາຈໍເຈຍເຟຣນຊ໌ ກຸຍອານາເກີນຊີການາຈິບບຣອນທາກຣີນແລນສາທາລະນະລັດແກມເບຍກ" + - "ິນີກົວດາລູບອີຄົວໂຕຣຽວ ກີນີກຣີຊໝູ່ເກາະຈໍເຈຍ & ເຊົາ ແຊນວິດກົວເທມາລາກວມກິ" + - "ນີ-ບິສເຊົາກາຍຢານາຮອງກົງ ເຂດປົກຄອງພິເສດ ຈີນໝູ່ເກາະເຮີດ & ແມັກໂດນອລຮອນດູ" + - "ຣັສໂຄຣເອເທຍໄຮຕິຮັງກາຣີໝູ່ເກາະຄານາຣີອິນໂດເນເຊຍໄອຣ໌ແລນອິສຣາເອວເອວ ອອບ ແມ" + - "ນອິນເດຍເຂດແດນບຣິທິສອິນດຽນໂອຊຽນອີຣັກອີຣ່ານໄອສແລນອິຕາລີເຈີຊີຈາໄມຄາຈໍແດນຍ" + - "ີ່ປຸ່ນເຄນຢາຄີກິສຖານກຳປູເຈຍຄິຣິບາທິໂຄໂມໂຣສເຊນ ຄິດ ແລະ ເນວິສເກົາຫລີເໜືອເ" + - "ກົາຫລີໃຕ້ກູເວດເຄແມນ ໄອແລນຄາຊັກສະຖານລາວເລບານອນເຊນ ລູເຊຍລິດເທນສະຕາຍສີລັງ" + - "ກາລິເບີເຣຍເລໂຊໂທລິທົວເນຍລຸກຊຳບົວລັດເວຍລິເບຍໂມຣັອກໂຄໂມນາໂຄໂມນໂດວາມອນເຕເ" + - "ນໂກຣເຊນ ມາທິນມາດາກາສກາຫມູ່ເກາະມາແຊວແມຊິໂດເນຍມາລິມຽນມາ (ເບີມາ)ມົງໂກລີມາ" + - "ເກົ້າ ເຂດປົກຄອງພິເສດ ຈີນຫມູ່ເກາະມາແຊວຕອນເຫນືອມາຕິນີກມົວຣິເທເນຍມອນເຊີຣາ" + - "ດມອນທາມົວຣິຊຽສມັນດິຟມາລາວີແມັກຊີໂກມາເລເຊຍໂມແຊມບິກນາມີເບຍນິວ ຄາເລໂດເນຍນ" + - "ິເຈີເກາະນໍໂຟກໄນຈີເຣຍນິກຄາຣາກົວເນເທີແລນນອກແວ໊ເນປານນາອູຣູນີອູເອນິວຊີແລນໂ" + - "ອມານພານາມາເປຣູເຟຣນຊ໌ ໂພລີນີເຊຍປາປົວນິວກີນີຟິລິບປິນປາກິສຖານໂປໂລຍເຊນ ປີແ" + - "ອ ມິເກວລອນໝູ່ເກາະພິດແຄນເພືອໂຕ ຣິໂກດິນແດນ ປາເລສຕິນຽນພອລທູໂກປາເລົາພາຣາກວ" + - "ຍກາຕາເຂດຫ່າງໄກໂອຊີເນຍເຣອູນິຍົງໂຣມານີເຊີເບຍຣັດເຊຍຣວັນດາຊາອຸດິ ອາຣາເບຍຫມ" + - "ູ່ເກາະໂຊໂລມອນເຊເຊວເລສຊູດານສະວີເດັນສິງກະໂປເຊນ ເຮເລນາສະໂລເວເນຍສະວາບາ ແລະ" + - " ແຢນ ມາເຢນສະໂລວາເກຍເຊຍຣາ ລີໂອນແຊນ ມາຣິໂນເຊນີໂກລໂຊມາລີຊູຣິນາມຊູດານໃຕ້ເຊົາ" + - "ທູເມ ແລະ ພຣິນຊິບເອວ ຊໍວາດໍຊິນ ມາເທັນຊີເຣຍສະວາຊິແລນທຣິສຕັນ ດາ ກັນຮາໝູ່ເ" + - "ກາະ ເທີກ ແລະ ໄຄໂຄສຊາດເຂດແດນທາງໃຕ້ຂອຝຮັ່ງໂຕໂກໄທທາຈິກິສຖານໂຕເກເລົາທິມໍ-ເ" + - "ລສເຕເທີກເມນິສຖານຕູນິເຊຍທອງກາເທີຄີທຣິນິແດດ ແລະ ໂທແບໂກຕູວາລູໄຕ້ຫວັນທານຊາ" + - "ເນຍຢູເຄຣນອູການດາໝູ່ເກາະຮອບນອກຂອງສະຫະລັດຯສະຫະລັດອູຣຸກວຍອຸສເບກິສຖານນະຄອນ" + - " ວາຕິກັນເຊນ ວິນເຊນ & ເກຣເນດິນເວເນຊູເອລາໝູ່ເກາະ ບຣິທິຊ ເວີຈິນໝູ່ເກາະ ຢູເອ" + - "ສ ເວີຈິນຫວຽດນາມວານົວຕູວາລິສ ແລະ ຟຸຕູນາຊາມົວໂຄໂຊໂວເຢເມນມາຢັອດອາຟະລິກາໃຕ" + - "້ແຊມເບຍຊິມບັບເວຂົງເຂດທີ່ບໍ່ຮູ້ຈັກໂລກອາຟຣິກາອາເມລິກາເໜືອອາເມລິກາໃຕ້ໂອຊີ" + - "ອານີອາຟຣິກາຕາເວັນຕົກອາເມລິກາກາງອາຟຣິກາຕາເວັນອອກອາຟຣິກາເໜືອອາຟຣິກາກາງອາ" + - "ຟຣິກາໃຕ້ອາເມຣິກາພາກເໜືອອາເມລີກາຄາຣິບບຽນອາຊີຕາເວັນອອກອາຊີໄຕ້ອາຊີຕາເວັນອ" + - "ອກສ່ຽງໄຕ້ຢູໂຣບໃຕ້ໂອດສະຕາລີເມລານີເຊຍເຂດໄມໂຄຣເນຊຽນໂພລີນີເຊຍອາຊີອາຊີກາງອາ" + - "ຊີຕາເວັນຕົກຢູໂຣບຢູໂຣບຕາເວັນອອກຢູໂຣບເໜືອຢູໂຣບຕາເວັນຕົກລາຕິນ ອາເມລິກາ" - -var loRegionIdx = []uint16{ // 290 elements + 0x138d, 0x139b, 0x13cd, 0x13d9, 0x13e9, 0x1406, 0x1410, 0x141c, + 0x1437, 0x1452, 0x1460, 0x1477, 0x1498, 0x14af, 0x14c8, 0x14e7, + 0x1500, 0x150e, 0x1538, 0x1553, 0x1566, 0x157b, 0x159b, 0x15b4, + 0x15ca, 0x15dc, 0x15ff, 0x1611, 0x1619, 0x162e, 0x1641, 0x164d, + 0x1664, 0x167d, 0x1694, 0x16b1, +} // Size: 608 bytes + +const loRegionStr string = "" + // Size: 8094 bytes + "ເກາະອາເຊນຊັນອັນດໍຣາສະຫະລັດອາຣັບເອມິເຣດອາຟການິດສະຖານແອນທິກົວ ແລະ ບາບູດາແອ" + + "ນກຸຍລາແອວເບເນຍອາເມເນຍແອງໂກລາແອນຕາດຕິກາອາເຈນທິນາອາເມຣິກາ ຊາມົວອອສເທຣຍອອ" + + "ສເຕຣເລຍອາຣູບາຫມູ່ເກາະໂອລັນອາເຊີໄບຈານບອດສະເນຍ ແລະ ແຮສໂກວີນາບາບາໂດສບັງກະ" + + "ລາເທດເບວຢຽມເບີກິນາ ຟາໂຊບັງກາເຣຍບາເຣນບູຣຸນດິເບນິນເຊນ ບາເທເລມີເບີມິວດາບຣ" + + "ູໄນໂບລິເວຍຄາຣິບບຽນ ເນເທີແລນບະເລຊີນບາຮາມາສພູຖານເກາະບູເວດບອດສະວານາເບວບາຣ" + + "ຸສເບລີຊແຄນາດາຫມູ່ເກາະໂກໂກສຄອງໂກ - ຄິນຊາຊາສາທາລະນະລັດອາຟຣິກາກາງຄອງໂກ - " + + "ບຣາຊາວິວສະວິດເຊີແລນໂຄຕີ ວົວໝູ່ເກາະຄຸກຈີເລຄາເມຣູນຈີນໂຄລົມເບຍເກາະຄລິບເປີ" + + "ຕັນໂຄສຕາ ຣິກາຄິວບາເຄບ ເວີດຄູຣາຊາວເກາະຄຣິສມາດໄຊປຣັສເຊັກເຊຍເຢຍລະມັນດິເອໂ" + + "ກ ກາເຊຍຈິບູຕິເດນມາກໂດມີນິຄາສາທາລະນະລັດ ໂດມິນິກັນອັລຈິເຣຍເຊວຕາ ແລະເມລິນ" + + "ລາເອກວາດໍເອສໂຕເນຍອີຢິບຊາຮາຣາຕາເວັນຕົກເອຣິເທຣຍສະເປນອີທິໂອເປຍສະຫະພາບຢູໂຣ" + + "ບຟິນແລນຟິຈິຫມູ່ເກາະຟອກແລນໄມໂຄຣນີເຊຍຫມູ່ເກາະແຟໂຣຝຣັ່ງກາບອນສະຫະລາດຊະອະນາ" + + "ຈັກເກຣເນດາຈໍເຈຍເຟຣນຊ໌ ກຸຍອານາເກີນຊີການາຈິບບຣອນທາກຣີນແລນສາທາລະນະລັດແກມເ" + + "ບຍກິນີກົວດາລູບເອຄົວໂທຣຽວ ກີນີກຣີຊໝູ່ເກາະຈໍເຈຍ & ເຊົາ ແຊນວິດກົວເທມາລາກວ" + + "າມກິນີ-ບິສເຊົາກາຍຢານາຮອງກົງ ເຂດປົກຄອງພິເສດ ຈີນໝູ່ເກາະເຮີດ & ແມັກໂດນອລຮ" + + "ອນດູຣັສໂຄຣເອເທຍໄຮຕິຮັງກາຣີໝູ່ເກາະຄານາຣີອິນໂດເນເຊຍໄອຣ໌ແລນອິສຣາເອວເອວ ອອ" + + "ບ ແມນອິນເດຍເຂດແດນອັງກິດໃນມະຫາສະມຸດອິນເດຍອີຣັກອີຣານໄອສແລນອິຕາລີເຈີຊີຈາໄ" + + "ມຄາຈໍແດນຍີ່ປຸ່ນເຄນຢາຄີກິສຖານກຳປູເຈຍຄິຣິບາທິໂຄໂມໂຣສເຊນ ຄິດ ແລະ ເນວິສເກົ" + + "າຫລີເໜືອເກົາຫລີໃຕ້ກູເວດໝູ່ເກາະ ເຄແມນຄາຊັກສະຖານລາວເລບານອນເຊນ ລູເຊຍລິດເທ" + + "ນສະຕາຍສີລັງກາລິເບີເຣຍເລໂຊໂທລິທົວເນຍລຸກຊຳບົວລັດເວຍລິເບຍໂມຣັອກໂຄໂມນາໂຄໂມ" + + "ນໂດວາມອນເຕເນໂກຣເຊນ ມາທິນມາດາກາສກາຫມູ່ເກາະມາແຊວແມຊິໂດເນຍມາລີມຽນມາ (ເບີມ" + + "າ)ມອງໂກເລຍມາເກົ້າ ເຂດປົກຄອງພິເສດ ຈີນຫມູ່ເກາະມາແຊວຕອນເຫນືອມາຕິນີກມົວຣິເ" + + "ທເນຍມອນເຊີຣາດມອນທາມົວຣິຊຽສມັນດິຟມາລາວີເມັກຊິໂກມາເລເຊຍໂມແຊມບິກນາມີເບຍນິ" + + "ວ ຄາເລໂດເນຍນິເຈີເກາະນໍໂຟກໄນຈີເຣຍນິກຄາຣາກົວເນເທີແລນນໍເວເນປານນາອູຣູນີອູເ" + + "ອນິວຊີແລນໂອມານພານາມາເປຣູເຟຣນຊ໌ ໂພລິນີເຊຍປາປົວນິວກີນີຟິລິບປິນປາກິດສະຖານ" + + "ໂປແລນເຊນ ປີແອ ມິເກວລອນໝູ່ເກາະພິດແຄນເພືອໂຕ ຣິໂກດິນແດນ ປາເລສຕິນຽນພອລທູໂກ" + + "ປາລາວພາຣາກວຍກາຕາເຂດຫ່າງໄກໂອຊີເນຍເຣອູນິຍົງໂຣແມເນຍເຊີເບຍຣັດເຊຍຣວັນດາຊາອຸ" + + "ດິ ອາຣາເບຍຫມູ່ເກາະໂຊໂລມອນເຊເຊວເລສຊູດານສະວີເດັນສິງກະໂປເຊນ ເຮເລນາສະໂລເວເ" + + "ນຍສະວາບາ ແລະ ແຢນ ມາເຢນສະໂລວາເກຍເຊຍຣາ ລີໂອນແຊນ ມາຣິໂນເຊນີໂກລໂຊມາລີຊູຣິນ" + + "າມຊູດານໃຕ້ເຊົາທູເມ ແລະ ພຣິນຊິບເອວ ຊໍວາດໍຊິນ ມາເທັນຊີເຣຍສະວາຊິແລນທຣິສຕັ" + + "ນ ດາ ກັນຮາໝູ່ເກາະ ເທີກ ແລະ ໄຄໂຄສຊາດເຂດແດນທາງໃຕ້ຂອຝຮັ່ງໂຕໂກໄທທາຈິກິດສະຖ" + + "ານໂຕເກເລົາທິມໍ-ເລສເຕເທີກເມນິສະຖານຕູນິເຊຍທອງກາເທີຄີທຣິນິແດດ ແລະ ໂທແບໂກຕ" + + "ູວາລູໄຕ້ຫວັນທານຊາເນຍຢູເຄຣນອູການດາໝູ່ເກາະຮອບນອກຂອງສະຫະລັດຯສະຫະປະຊາຊາດສະ" + + "ຫະລັດອູຣຸກວຍອຸສເບກິສະຖານນະຄອນ ວາຕິກັນເຊນ ວິນເຊນ ແລະ ເກຣເນດິນເວເນຊູເອລາ" + + "ໝູ່ເກາະ ບຣິທິຊ ເວີຈິນໝູ່ເກາະ ຢູເອສ ເວີຈິນຫວຽດນາມວານົວຕູວາລລິສ ແລະ ຟູຕູ" + + "ນາຊາມົວໂຄໂຊໂວເຢເມນມາຢັອດອາຟຣິກາໃຕ້ແຊມເບຍຊິມບັບເວຂົງເຂດທີ່ບໍ່ຮູ້ຈັກໂລກອ" + + "າຟຣິກາອາເມລິກາເໜືອອາເມລິກາໃຕ້ໂອຊີອານີອາຟຣິກາຕາເວັນຕົກອາເມລິກາກາງອາຟຣິກ" + + "າຕາເວັນອອກອາຟຣິກາເໜືອອາຟຣິກາກາງອາເມຣິກາພາກເໜືອອາເມລີກາຄາຣິບບຽນອາຊີຕາເວ" + + "ັນອອກອາຊີໄຕ້ອາຊີຕາເວັນອອກສ່ຽງໄຕ້ຢູໂຣບໃຕ້ໂອດສະຕາລີເມລານີເຊຍເຂດໄມໂຄຣເນຊຽ" + + "ນໂພລີນີເຊຍອາຊີອາຊີກາງອາຊີຕາເວັນຕົກຢູໂຣບຢູໂຣບຕາເວັນອອກຢູໂຣບເໜືອຢູໂຣບຕາເ" + + "ວັນຕົກລາຕິນ ອາເມລິກາ" + +var loRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0024, 0x0039, 0x0072, 0x0093, 0x00bb, 0x00d3, 0x00eb, - 0x0100, 0x0115, 0x0133, 0x014e, 0x0176, 0x018b, 0x01a6, 0x01b8, - 0x01df, 0x01fd, 0x023b, 0x0250, 0x026e, 0x0280, 0x02a2, 0x02b7, - 0x02c6, 0x02db, 0x02ea, 0x030c, 0x0324, 0x0333, 0x0348, 0x0379, - 0x038e, 0x03a3, 0x03b2, 0x03cd, 0x03e8, 0x0400, 0x040f, 0x0421, - 0x0448, 0x046f, 0x04ae, 0x04d8, 0x04f9, 0x050f, 0x052d, 0x0539, - 0x054e, 0x0557, 0x056f, 0x0599, 0x05b5, 0x05c4, 0x05da, 0x05ef, - 0x0610, 0x0622, 0x064c, 0x0664, 0x0686, 0x0698, 0x06aa, 0x06c2, + 0x0000, 0x0024, 0x0039, 0x0072, 0x0099, 0x00ce, 0x00e6, 0x00fe, + 0x0113, 0x0128, 0x0146, 0x0161, 0x0189, 0x019e, 0x01b9, 0x01cb, + 0x01f2, 0x0210, 0x024e, 0x0263, 0x0281, 0x0293, 0x02b5, 0x02cd, + 0x02dc, 0x02f1, 0x0300, 0x0322, 0x033a, 0x0349, 0x035e, 0x038f, + 0x03a4, 0x03b9, 0x03c8, 0x03e3, 0x03fe, 0x0416, 0x0425, 0x0437, + 0x045e, 0x0485, 0x04c4, 0x04ee, 0x050f, 0x0525, 0x0543, 0x054f, + 0x0564, 0x056d, 0x0585, 0x05af, 0x05cb, 0x05da, 0x05f0, 0x0605, + 0x0626, 0x0638, 0x064d, 0x0665, 0x0687, 0x0699, 0x06ab, 0x06c3, // Entry 40 - 7F - 0x06ff, 0x0717, 0x0745, 0x075a, 0x0772, 0x0781, 0x07ae, 0x07c6, - 0x07d5, 0x07f0, 0x0814, 0x0826, 0x0832, 0x085c, 0x087a, 0x089e, - 0x08ad, 0x08bc, 0x08ec, 0x0901, 0x0910, 0x0938, 0x094a, 0x0956, - 0x0971, 0x0986, 0x09b9, 0x09c5, 0x09dd, 0x0a08, 0x0a14, 0x0a5a, - 0x0a75, 0x0a7e, 0x0aa0, 0x0ab5, 0x0afc, 0x0b3b, 0x0b53, 0x0b6b, - 0x0b77, 0x0b8c, 0x0bb3, 0x0bd1, 0x0be6, 0x0bfe, 0x0c1b, 0x0c2d, - 0x0c72, 0x0c81, 0x0c93, 0x0ca5, 0x0cb7, 0x0cc6, 0x0cd8, 0x0ce7, - 0x0cfc, 0x0d0b, 0x0d23, 0x0d38, 0x0d50, 0x0d65, 0x0d92, 0x0db3, + 0x0700, 0x0718, 0x0746, 0x075b, 0x0773, 0x0782, 0x07af, 0x07c7, + 0x07d6, 0x07f1, 0x0815, 0x0815, 0x0827, 0x0833, 0x085d, 0x087b, + 0x089f, 0x08ae, 0x08bd, 0x08ed, 0x0902, 0x0911, 0x0939, 0x094b, + 0x0957, 0x0972, 0x0987, 0x09ba, 0x09c6, 0x09de, 0x0a09, 0x0a15, + 0x0a5b, 0x0a76, 0x0a82, 0x0aa4, 0x0ab9, 0x0b00, 0x0b3f, 0x0b57, + 0x0b6f, 0x0b7b, 0x0b90, 0x0bb7, 0x0bd5, 0x0bea, 0x0c02, 0x0c1f, + 0x0c31, 0x0c88, 0x0c97, 0x0ca6, 0x0cb8, 0x0cca, 0x0cd9, 0x0ceb, + 0x0cfa, 0x0d0f, 0x0d1e, 0x0d36, 0x0d4b, 0x0d63, 0x0d78, 0x0da5, // Entry 80 - BF - 0x0dd1, 0x0de0, 0x0dff, 0x0e1d, 0x0e26, 0x0e3b, 0x0e54, 0x0e75, - 0x0e8a, 0x0ea2, 0x0eb4, 0x0ecc, 0x0ee4, 0x0ef6, 0x0f05, 0x0f1d, - 0x0f2f, 0x0f44, 0x0f62, 0x0f7b, 0x0f96, 0x0fbd, 0x0fd8, 0x0fe4, - 0x1005, 0x101a, 0x1064, 0x10a3, 0x10b8, 0x10d6, 0x10f1, 0x1100, - 0x1118, 0x112a, 0x113c, 0x1154, 0x1169, 0x1181, 0x1196, 0x11bb, - 0x11ca, 0x11e5, 0x11fa, 0x1218, 0x1230, 0x1242, 0x1251, 0x1263, - 0x1275, 0x128d, 0x129c, 0x12ae, 0x12ba, 0x12e8, 0x130c, 0x1324, - 0x133c, 0x134b, 0x137a, 0x13a1, 0x13c0, 0x13f1, 0x1406, 0x1418, + 0x0dc6, 0x0de4, 0x0df3, 0x0e18, 0x0e36, 0x0e3f, 0x0e54, 0x0e6d, + 0x0e8e, 0x0ea3, 0x0ebb, 0x0ecd, 0x0ee5, 0x0efd, 0x0f0f, 0x0f1e, + 0x0f36, 0x0f48, 0x0f5d, 0x0f7b, 0x0f94, 0x0faf, 0x0fd6, 0x0ff1, + 0x0ffd, 0x101e, 0x1036, 0x1080, 0x10bf, 0x10d4, 0x10f2, 0x110d, + 0x111c, 0x1134, 0x1146, 0x1158, 0x1170, 0x1185, 0x119d, 0x11b2, + 0x11d7, 0x11e6, 0x1201, 0x1216, 0x1234, 0x124c, 0x1258, 0x1267, + 0x1279, 0x128b, 0x12a3, 0x12b2, 0x12c4, 0x12d0, 0x12fe, 0x1322, + 0x133a, 0x1358, 0x1367, 0x1396, 0x13bd, 0x13dc, 0x140d, 0x1422, // Entry C0 - FF - 0x142d, 0x1439, 0x1469, 0x1484, 0x1496, 0x14a8, 0x14ba, 0x14cc, - 0x14f4, 0x1521, 0x1539, 0x1548, 0x1560, 0x1575, 0x1591, 0x15ac, - 0x15e2, 0x15fd, 0x161c, 0x1638, 0x164d, 0x165f, 0x1674, 0x168c, - 0x16c4, 0x16e0, 0x16fc, 0x170b, 0x1726, 0x1752, 0x178e, 0x1797, - 0x17d0, 0x17dc, 0x17e2, 0x1800, 0x1818, 0x1834, 0x1858, 0x186d, - 0x187c, 0x188b, 0x18c0, 0x18d2, 0x18e7, 0x18ff, 0x1911, 0x1926, - 0x196e, 0x1983, 0x1998, 0x19b9, 0x19de, 0x1a15, 0x1a33, 0x1a6e, - 0x1aa6, 0x1abb, 0x1ad0, 0x1afc, 0x1b0b, 0x1b1d, 0x1b2c, 0x1b3e, + 0x1431, 0x1446, 0x1452, 0x1482, 0x149d, 0x14b2, 0x14c4, 0x14d6, + 0x14e8, 0x1510, 0x153d, 0x1555, 0x1564, 0x157c, 0x1591, 0x15ad, + 0x15c8, 0x15fe, 0x1619, 0x1638, 0x1654, 0x1669, 0x167b, 0x1690, + 0x16a8, 0x16e0, 0x16fc, 0x1718, 0x1727, 0x1742, 0x176e, 0x17aa, + 0x17b3, 0x17ec, 0x17f8, 0x17fe, 0x1822, 0x183a, 0x1856, 0x187d, + 0x1892, 0x18a1, 0x18b0, 0x18e5, 0x18f7, 0x190c, 0x1924, 0x1936, + 0x194b, 0x1993, 0x19b4, 0x19c9, 0x19de, 0x1a02, 0x1a27, 0x1a66, + 0x1a84, 0x1abf, 0x1af7, 0x1b0c, 0x1b21, 0x1b50, 0x1b5f, 0x1b71, // Entry 100 - 13F - 0x1b5f, 0x1b71, 0x1b89, 0x1bbf, 0x1bc8, 0x1bdd, 0x1c01, 0x1c22, - 0x1c3a, 0x1c6a, 0x1c8b, 0x1cbb, 0x1cdc, 0x1cfa, 0x1d18, 0x1d30, - 0x1d5d, 0x1d75, 0x1d9c, 0x1db1, 0x1ded, 0x1e05, 0x1e20, 0x1e3b, - 0x1e62, 0x1e7d, 0x1e89, 0x1e9e, 0x1ec5, 0x1ed4, 0x1efe, 0x1f19, - 0x1f43, 0x1f6b, -} // Size: 604 bytes - -var ltRegionStr string = "" + // Size: 3379 bytes + 0x1b80, 0x1b92, 0x1bb0, 0x1bc2, 0x1bda, 0x1c10, 0x1c19, 0x1c2e, + 0x1c52, 0x1c73, 0x1c8b, 0x1cbb, 0x1cdc, 0x1d0c, 0x1d2d, 0x1d4b, + 0x1d4b, 0x1d63, 0x1d90, 0x1da8, 0x1dcf, 0x1de4, 0x1e20, 0x1e38, + 0x1e53, 0x1e6e, 0x1e95, 0x1eb0, 0x1ebc, 0x1ed1, 0x1ef8, 0x1f07, + 0x1f31, 0x1f4c, 0x1f76, 0x1f9e, +} // Size: 608 bytes + +const ltRegionStr string = "" + // Size: 3399 bytes "Dangun Žengimo salaAndoraJungtiniai Arabų EmyrataiAfganistanasAntigva ir" + " BarbudaAngilijaAlbanijaArmėnijaAngolaAntarktidaArgentinaAmerikos SamoaA" + "ustrijaAustralijaArubaAlandų SalosAzerbaidžanasBosnija ir HercegovinaBar" + @@ -41498,43 +46598,43 @@ var ltRegionStr string = "" + // Size: 3379 bytes " RikaKubaŽaliasis KyšulysKiurasaoKalėdų SalaKiprasČekijaVokietijaDiego G" + "arsijaDžibutisDanijaDominikaDominikos RespublikaAlžyrasSeuta ir MelilaEk" + "vadorasEstijaEgiptasVakarų SacharaEritrėjaIspanijaEtiopijaEuropos Sąjung" + - "aSuomijaFidžisFolklando SalosMikronezijaFarerų SalosPrancūzijaGabonasDid" + - "žioji BritanijaGrenadaGruzijaPrancūzijos GvianaGernsisGanaGibraltarasGr" + - "enlandijaGambijaGvinėjaGvadelupaPusiaujo GvinėjaGraikijaPietų Džordžija " + - "ir Pietų Sandvičo salosGvatemalaGuamasBisau GvinėjaGajanaYpatingasis Adm" + - "inistracinis Kinijos Regionas HonkongasHerdo ir Makdonaldo SalosHondūras" + - "KroatijaHaitisVengrijaKanarų salosIndonezijaAirijaIzraelisMeno SalaIndij" + - "aIndijos Vandenyno Britų SritisIrakasIranasIslandijaItalijaDžersisJamaik" + - "aJordanijaJaponijaKenijaKirgizijaKambodžaKiribatisKomoraiSent Kitsas ir " + - "NevisŠiaurės KorėjaPietų KorėjaKuveitasKaimanų SalosKazachstanasLaosasLi" + - "banasŠventoji LiucijaLichtenšteinasŠri LankaLiberijaLesotasLietuvaLiukse" + - "mburgasLatvijaLibijaMarokasMonakasMoldovaJuodkalnijaSen MartenasMadagask" + - "arasMaršalo SalosMakedonijaMalisMianmaras (Birma)MongolijaYpatingasis Ad" + - "ministracinis Kinijos Regionas MakaoMarianos Šiaurinės SalosMartinikaMau" + - "ritanijaMontseratasMaltaMauricijusMaldyvaiMalavisMeksikaMalaizijaMozambi" + - "kasNamibijaNaujoji KaledonijaNigerisNorfolko salaNigerijaNikaragvaNyderl" + - "andaiNorvegijaNepalasNauruNiujėNaujoji ZelandijaOmanasPanamaPeruPrancūzų" + - " PolinezijaPapua Naujoji GvinėjaFilipinaiPakistanasLenkijaSen Pjeras ir " + - "MikelonasPitkernasPuerto RikasPalestinos teritorijaPortugalijaPalauParag" + - "vajusKatarasNuošali OkeanijaReunjonasRumunijaSerbijaRusijaRuandaSaudo Ar" + - "abijaSaliamono SalosSeišeliaiSudanasŠvedijaSingapūrasŠv. Elenos SalaSlov" + - "ėnijaSvalbardas ir Janas MajenasSlovakijaSiera LeonėSan MarinasSenegala" + - "sSomalisSurinamasPietų SudanasSan Tomė ir PrinsipėSalvadorasSint Martena" + - "sSirijaSvazilandasTristanas da KunjaTerkso ir Kaikoso SalosČadasPrancūzi" + - "jos Pietų sritysTogasTailandasTadžikijaTokelauRytų TimorasTurkmėnistanas" + - "TunisasTongaTurkijaTrinidadas ir TobagasTuvaluTaivanasTanzanijaUkrainaUg" + - "andaJungtinių Valstijų Mažosios Tolimosios SalosJungtinės ValstijosUrugv" + - "ajusUzbekistanasVatikano Miesto ValstybėŠventasis Vincentas ir Grenadina" + - "iVenesuelaDidžiosios Britanijos Mergelių SalosJungtinių Valstijų Mergeli" + - "ų SalosVietnamasVanuatuVolisas ir FutunaSamoaKosovasJemenasMajotasPietų" + - " AfrikaZambijaZimbabvėnežinoma sritispasaulisAfrikaŠiaurės AmerikaPietų " + - "AmerikaOkeanijaVakarų AfrikaCentrinė AmerikaRytų AfrikaŠiaurės AfrikaVid" + - "urio AfrikaPietinė AfrikaAmerikaŠiaurinė AmerikaKaribaiRytų AzijaPietų A" + - "zijaPietryčių AzijaPietų EuropaAustralazijaMelanezijaMikronezijos region" + - "asPolinezijaAzijaCentrinė AzijaVakarų AzijaEuropaRytų EuropaŠiaurės Euro" + - "paVakarų EuropaLotynų Amerika" - -var ltRegionIdx = []uint16{ // 290 elements + "aSuomijaFidžisFolklando SalosMikronezijaFarerų SalosPrancūzijaGabonasJun" + + "gtinė KaralystėGrenadaGruzijaPrancūzijos GvianaGernsisGanaGibraltarasGre" + + "nlandijaGambijaGvinėjaGvadelupaPusiaujo GvinėjaGraikijaPietų Džordžija i" + + "r Pietų Sandvičo salosGvatemalaGuamasBisau GvinėjaGajanaYpatingasis Admi" + + "nistracinis Kinijos Regionas HonkongasHerdo ir Makdonaldo SalosHondūrasK" + + "roatijaHaitisVengrijaKanarų salosIndonezijaAirijaIzraelisMeno SalaIndija" + + "Indijos Vandenyno Britų SritisIrakasIranasIslandijaItalijaDžersisJamaika" + + "JordanijaJaponijaKenijaKirgizijaKambodžaKiribatisKomoraiSent Kitsas ir N" + + "evisŠiaurės KorėjaPietų KorėjaKuveitasKaimanų SalosKazachstanasLaosasLib" + + "anasSent LusijaLichtenšteinasŠri LankaLiberijaLesotasLietuvaLiuksemburga" + + "sLatvijaLibijaMarokasMonakasMoldovaJuodkalnijaSen MartenasMadagaskarasMa" + + "ršalo SalosMakedonijaMalisMianmaras (Birma)MongolijaYpatingasis Administ" + + "racinis Kinijos Regionas MakaoMarianos Šiaurinės SalosMartinikaMauritani" + + "jaMontseratasMaltaMauricijusMaldyvaiMalavisMeksikaMalaizijaMozambikasNam" + + "ibijaNaujoji KaledonijaNigerisNorfolko salaNigerijaNikaragvaNyderlandaiN" + + "orvegijaNepalasNauruNiujėNaujoji ZelandijaOmanasPanamaPeruPrancūzijos Po" + + "linezijaPapua Naujoji GvinėjaFilipinaiPakistanasLenkijaSen Pjeras ir Mik" + + "elonasPitkerno salosPuerto RikasPalestinos teritorijaPortugalijaPalauPar" + + "agvajusKatarasNuošali OkeanijaReunjonasRumunijaSerbijaRusijaRuandaSaudo " + + "ArabijaSaliamono SalosSeišeliaiSudanasŠvedijaSingapūrasŠv. Elenos SalaSl" + + "ovėnijaSvalbardas ir Janas MajenasSlovakijaSiera LeonėSan MarinasSenegal" + + "asSomalisSurinamasPietų SudanasSan Tomė ir PrinsipėSalvadorasSint Marten" + + "asSirijaSvazilandasTristanas da KunjaTerkso ir Kaikoso SalosČadasPrancūz" + + "ijos Pietų sritysTogasTailandasTadžikijaTokelauRytų TimorasTurkmėnistana" + + "sTunisasTongaTurkijaTrinidadas ir TobagasTuvaluTaivanasTanzanijaUkrainaU" + + "gandaJungtinių Valstijų Mažosios Tolimosios SalosJungtinės TautosJungtin" + + "ės ValstijosUrugvajusUzbekistanasVatikano Miesto ValstybėŠventasis Vinc" + + "entas ir GrenadinaiVenesuelaDidžiosios Britanijos Mergelių SalosJungtini" + + "ų Valstijų Mergelių SalosVietnamasVanuatuVolisas ir FutūnaSamoaKosovasJ" + + "emenasMajotasPietų AfrikaZambijaZimbabvėnežinoma sritispasaulisAfrikaŠia" + + "urės AmerikaPietų AmerikaOkeanijaVakarų AfrikaCentrinė AmerikaRytų Afrik" + + "aŠiaurės AfrikaVidurio AfrikaPietinė AfrikaAmerikaŠiaurinė AmerikaKariba" + + "iRytų AzijaPietų AzijaPietryčių AzijaPietų EuropaAustralazijaMelanezijaM" + + "ikronezijos regionasPolinezijaAzijaCentrinė AzijaVakarų AzijaEuropaRytų " + + "EuropaŠiaurės EuropaVakarų EuropaLotynų Amerika" + +var ltRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0014, 0x001a, 0x0034, 0x0040, 0x0052, 0x005a, 0x0062, 0x006b, 0x0071, 0x007b, 0x0084, 0x0092, 0x009a, 0x00a4, 0x00a9, @@ -41546,176 +46646,177 @@ var ltRegionIdx = []uint16{ // 290 elements 0x0280, 0x0286, 0x028d, 0x0296, 0x02a3, 0x02ac, 0x02b2, 0x02ba, // Entry 40 - 7F 0x02ce, 0x02d6, 0x02e5, 0x02ee, 0x02f4, 0x02fb, 0x030a, 0x0313, - 0x031b, 0x0323, 0x0333, 0x033a, 0x0341, 0x0350, 0x035b, 0x0368, - 0x0373, 0x037a, 0x038d, 0x0394, 0x039b, 0x03ae, 0x03b5, 0x03b9, - 0x03c4, 0x03cf, 0x03d6, 0x03de, 0x03e7, 0x03f8, 0x0400, 0x042c, - 0x0435, 0x043b, 0x0449, 0x044f, 0x0485, 0x049e, 0x04a7, 0x04af, - 0x04b5, 0x04bd, 0x04ca, 0x04d4, 0x04da, 0x04e2, 0x04eb, 0x04f1, - 0x0510, 0x0516, 0x051c, 0x0525, 0x052c, 0x0534, 0x053b, 0x0544, - 0x054c, 0x0552, 0x055b, 0x0564, 0x056d, 0x0574, 0x0588, 0x0599, + 0x031b, 0x0323, 0x0333, 0x0333, 0x033a, 0x0341, 0x0350, 0x035b, + 0x0368, 0x0373, 0x037a, 0x038e, 0x0395, 0x039c, 0x03af, 0x03b6, + 0x03ba, 0x03c5, 0x03d0, 0x03d7, 0x03df, 0x03e8, 0x03f9, 0x0401, + 0x042d, 0x0436, 0x043c, 0x044a, 0x0450, 0x0486, 0x049f, 0x04a8, + 0x04b0, 0x04b6, 0x04be, 0x04cb, 0x04d5, 0x04db, 0x04e3, 0x04ec, + 0x04f2, 0x0511, 0x0517, 0x051d, 0x0526, 0x052d, 0x0535, 0x053c, + 0x0545, 0x054d, 0x0553, 0x055c, 0x0565, 0x056e, 0x0575, 0x0589, // Entry 80 - BF - 0x05a7, 0x05af, 0x05bd, 0x05c9, 0x05cf, 0x05d6, 0x05e7, 0x05f6, - 0x0600, 0x0608, 0x060f, 0x0616, 0x0623, 0x062a, 0x0630, 0x0637, - 0x063e, 0x0645, 0x0650, 0x065c, 0x0668, 0x0676, 0x0680, 0x0685, - 0x0696, 0x069f, 0x06d1, 0x06eb, 0x06f4, 0x06ff, 0x070a, 0x070f, - 0x0719, 0x0721, 0x0728, 0x072f, 0x0738, 0x0742, 0x074a, 0x075c, - 0x0763, 0x0770, 0x0778, 0x0781, 0x078c, 0x0795, 0x079c, 0x07a1, - 0x07a7, 0x07b8, 0x07be, 0x07c4, 0x07c8, 0x07dd, 0x07f3, 0x07fc, - 0x0806, 0x080d, 0x0824, 0x082d, 0x0839, 0x084e, 0x0859, 0x085e, + 0x059a, 0x05a8, 0x05b0, 0x05be, 0x05ca, 0x05d0, 0x05d7, 0x05e2, + 0x05f1, 0x05fb, 0x0603, 0x060a, 0x0611, 0x061e, 0x0625, 0x062b, + 0x0632, 0x0639, 0x0640, 0x064b, 0x0657, 0x0663, 0x0671, 0x067b, + 0x0680, 0x0691, 0x069a, 0x06cc, 0x06e6, 0x06ef, 0x06fa, 0x0705, + 0x070a, 0x0714, 0x071c, 0x0723, 0x072a, 0x0733, 0x073d, 0x0745, + 0x0757, 0x075e, 0x076b, 0x0773, 0x077c, 0x0787, 0x0790, 0x0797, + 0x079c, 0x07a2, 0x07b3, 0x07b9, 0x07bf, 0x07c3, 0x07da, 0x07f0, + 0x07f9, 0x0803, 0x080a, 0x0821, 0x082f, 0x083b, 0x0850, 0x085b, // Entry C0 - FF - 0x0868, 0x086f, 0x0880, 0x0889, 0x0891, 0x0898, 0x089e, 0x08a4, - 0x08b1, 0x08c0, 0x08ca, 0x08d1, 0x08d9, 0x08e4, 0x08f4, 0x08fe, - 0x0919, 0x0922, 0x092e, 0x0939, 0x0942, 0x0949, 0x0952, 0x0960, - 0x0976, 0x0980, 0x098d, 0x0993, 0x099e, 0x09b0, 0x09c7, 0x09cd, - 0x09e7, 0x09ec, 0x09f5, 0x09ff, 0x0a06, 0x0a13, 0x0a22, 0x0a29, - 0x0a2e, 0x0a35, 0x0a4a, 0x0a50, 0x0a58, 0x0a61, 0x0a68, 0x0a6e, - 0x0a9d, 0x0ab1, 0x0aba, 0x0ac6, 0x0adf, 0x0b01, 0x0b0a, 0x0b30, - 0x0b54, 0x0b5d, 0x0b64, 0x0b75, 0x0b7a, 0x0b81, 0x0b88, 0x0b8f, + 0x0860, 0x086a, 0x0871, 0x0882, 0x088b, 0x0893, 0x089a, 0x08a0, + 0x08a6, 0x08b3, 0x08c2, 0x08cc, 0x08d3, 0x08db, 0x08e6, 0x08f6, + 0x0900, 0x091b, 0x0924, 0x0930, 0x093b, 0x0944, 0x094b, 0x0954, + 0x0962, 0x0978, 0x0982, 0x098f, 0x0995, 0x09a0, 0x09b2, 0x09c9, + 0x09cf, 0x09e9, 0x09ee, 0x09f7, 0x0a01, 0x0a08, 0x0a15, 0x0a24, + 0x0a2b, 0x0a30, 0x0a37, 0x0a4c, 0x0a52, 0x0a5a, 0x0a63, 0x0a6a, + 0x0a70, 0x0a9f, 0x0ab0, 0x0ac4, 0x0acd, 0x0ad9, 0x0af2, 0x0b14, + 0x0b1d, 0x0b43, 0x0b67, 0x0b70, 0x0b77, 0x0b89, 0x0b8e, 0x0b95, // Entry 100 - 13F - 0x0b9c, 0x0ba3, 0x0bac, 0x0bbc, 0x0bc4, 0x0bca, 0x0bdb, 0x0be9, - 0x0bf1, 0x0bff, 0x0c10, 0x0c1c, 0x0c2c, 0x0c3a, 0x0c49, 0x0c50, - 0x0c62, 0x0c69, 0x0c74, 0x0c80, 0x0c91, 0x0c9e, 0x0caa, 0x0cb4, - 0x0cc9, 0x0cd3, 0x0cd8, 0x0ce7, 0x0cf4, 0x0cfa, 0x0d06, 0x0d16, - 0x0d24, 0x0d33, -} // Size: 604 bytes - -var lvRegionStr string = "" + // Size: 3272 bytes + 0x0b9c, 0x0ba3, 0x0bb0, 0x0bb7, 0x0bc0, 0x0bd0, 0x0bd8, 0x0bde, + 0x0bef, 0x0bfd, 0x0c05, 0x0c13, 0x0c24, 0x0c30, 0x0c40, 0x0c4e, + 0x0c5d, 0x0c64, 0x0c76, 0x0c7d, 0x0c88, 0x0c94, 0x0ca5, 0x0cb2, + 0x0cbe, 0x0cc8, 0x0cdd, 0x0ce7, 0x0cec, 0x0cfb, 0x0d08, 0x0d0e, + 0x0d1a, 0x0d2a, 0x0d38, 0x0d47, +} // Size: 608 bytes + +const lvRegionStr string = "" + // Size: 3330 bytes "Debesbraukšanas salaAndoraApvienotie Arābu EmirātiAfganistānaAntigva un " + - "BarbudaAngiljaAlbānijaArmēnijaAngolaAntarktikaArgentīnaAmerikāņu SamoaAu" + - "strijaAustrālijaArubaOlandes salasAzerbaidžānaBosnija un HercegovinaBarb" + - "adosaBangladešaBeļģijaBurkinafasoBulgārijaBahreinaBurundiBeninaSenbartel" + - "mīBermudu salasBrunejaBolīvijaNīderlandes Karību salasBrazīlijaBahamu sa" + - "lasButānaBuvē salaBotsvānaBaltkrievijaBelizaKanādaKokosu jeb Kīlinga sal" + - "asKongo-KinšasaCentrālāfrikas RepublikaKongo - BrazavilaŠveiceKotdivuāra" + - "Kuka salasČīleKamerūnaĶīnaKolumbijaKlipertona salaKostarikaKubaKaboverde" + - "KirasaoZiemsvētku salaKipraČehijaVācijaDjego Garsijas atolsDžibutijaDāni" + - "jaDominikaDominikānaAlžīrijaSeūta un MeliljaEkvadoraIgaunijaĒģipteRietum" + - "sahāraEritrejaSpānijaEtiopijaEiropas SavienībaSomijaFidžiFolklenda salas" + - "MikronēzijaFēru SalasFrancijaGabonaLielbritānijaGrenādaGruzijaFranču Gvi" + - "ānaGērnsijaGanaGibraltārsGrenlandeGambijaGvinejaGvadelupaEkvatoriālā Gv" + - "inejaGrieķijaDienviddžordžija un Dienvidsendviču salasGvatemalaGuamaGvin" + - "eja-BisavaGajānaĶīnas īpašās pārvaldes apgabals HonkongaHērda un Makdona" + - "lda salasHondurasaHorvātijaHaitiUngārijaKanāriju salasIndonēzijaĪrijaIzr" + - "aēlaMenaIndijaIndijas okeāna Britu teritorijaIrākaIrānaĪslandeItālijaDžē" + - "rsijaJamaikaJordānijaJapānaKenijaKirgizstānaKambodžaKiribatiKomoru salas" + - "Sentkitsa un NevisaZiemeļkorejaDienvidkorejaKuveitaKaimanu salasKazahstā" + - "naLaosaLibānaSentlūsijaLihtenšteinaŠrilankaLibērijaLesotoLietuvaLuksembu" + - "rgaLatvijaLībijaMarokaMonakoMoldovaMelnkalneSenmartēnaMadagaskaraMāršala" + - " salasMaķedonijaMaliMjanma (Birma)MongolijaĶīnas īpašās pārvaldes apgaba" + - "ls MakaoZiemeļu Marianas salasMartinikaMauritānijaMontserrataMaltaMaurīc" + - "ijaMaldīvijaMalāvijaMeksikaMalaizijaMozambikaNamībijaJaunkaledonijaNigēr" + - "aNorfolkas salaNigērijaNikaragvaNīderlandeNorvēģijaNepālaNauruNiueJaunzē" + - "landeOmānaPanamaPeruFranču PolinēzijaPapua-JaungvinejaFilipīnasPakistāna" + - "PolijaSenpjēra un MikelonaPitkērnaPuertorikoPalestīnaPortugālePalauParag" + - "vajaKataraOkeānijas attālās salasReinjonaRumānijaSerbijaKrievijaRuandaSa" + - "ūda ArābijaZālamana salasŠeišelu salasSudānaZviedrijaSingapūraSv.Helēna" + - "s salaSlovēnijaSvalbāra un Jana Majena salaSlovākijaSjerraleoneSanmarīno" + - "SenegālaSomālijaSurinamaDienvidsudānaSantome un PrinsipiSalvadoraSintmār" + - "tenaSīrijaSvazilendaTristana da Kuņas salasTērksas un Kaikosas salasČada" + - "Francijas Dienvidjūru ZemesTogoTaizemeTadžikistānaTokelauAustrumtimoraTu" + - "rkmenistānaTunisijaTongaTurcijaTrinidāda un TobāgoTuvaluTaivānaTanzānija" + - "UkrainaUgandaASV Aizjūras salasAmerikas Savienotās ValstisUrugvajaUzbeki" + - "stānaVatikānsSentvinsenta un GrenadīnasVenecuēlaBritu VirdžīnasASV Virdž" + - "īnasVjetnamaVanuatuVolisa un FutunaSamoaKosovaJemenaMajotaDienvidāfrika" + - "s RepublikaZambijaZimbabvenezināms reģionspasauleĀfrikaZiemeļamerikaDien" + - "vidamerikaOkeānijaRietumāfrikaCentrālamerikaAustrumāfrikaZiemeļāfrikaVid" + - "usāfrikaDienvidāfrikaAmerikaAmerikas ziemeļu daļaKarību jūras reģionsAus" + - "trumāzijaDienvidāzijaCentrālaustrumāzijaDienvideiropaAustrālāzijaMelanēz" + - "ijaMikronēzijas reģionsPolinēzijaĀzijaCentrālāzijaRietumāzijaEiropaAustr" + - "umeiropaZiemeļeiropaRietumeiropaLatīņamerika" - -var lvRegionIdx = []uint16{ // 290 elements + "BarbudaAngiljaAlbānijaArmēnijaAngolaAntarktikaArgentīnaASV SamoaAustrija" + + "AustrālijaArubaOlandes salasAzerbaidžānaBosnija un HercegovinaBarbadosaB" + + "angladešaBeļģijaBurkinafasoBulgārijaBahreinaBurundijaBeninaSenbartelmīBe" + + "rmudu salasBrunejaBolīvijaNīderlandes Karību salasBrazīlijaBahamu salasB" + + "utānaBuvē salaBotsvānaBaltkrievijaBelizaKanādaKokosu (Kīlinga) salasKong" + + "o (Kinšasa)Centrālāfrikas RepublikaKongo (Brazavila)ŠveiceKotdivuāraKuka" + + " salasČīleKamerūnaĶīnaKolumbijaKlipertona salaKostarikaKubaKaboverdeKira" + + "saoZiemsvētku salaKipraČehijaVācijaDjego Garsijas atolsDžibutijaDānijaDo" + + "minikaDominikānaAlžīrijaSeūta un MeliljaEkvadoraIgaunijaĒģipteRietumsahā" + + "raEritrejaSpānijaEtiopijaEiropas SavienībaSomijaFidžiFolklenda salasMikr" + + "onēzijaFēru salasFrancijaGabonaLielbritānijaGrenādaGruzijaFrancijas Gviā" + + "naGērnsijaGanaGibraltārsGrenlandeGambijaGvinejaGvadelupaEkvatoriālā Gvin" + + "ejaGrieķijaDienviddžordžija un Dienvidsendviču salasGvatemalaGuamaGvinej" + + "a-BisavaGajānaĶīnas īpašās pārvaldes apgabals HonkongaHērda sala un Makd" + + "onalda salasHondurasaHorvātijaHaitiUngārijaKanāriju salasIndonēzijaĪrija" + + "IzraēlaMenaIndijaIndijas okeāna Britu teritorijaIrākaIrānaIslandeItālija" + + "DžērsijaJamaikaJordānijaJapānaKenijaKirgizstānaKambodžaKiribatiKomoru sa" + + "lasSentkitsa un NevisaZiemeļkorejaDienvidkorejaKuveitaKaimanu salasKazah" + + "stānaLaosaLibānaSentlūsijaLihtenšteinaŠrilankaLibērijaLesotoLietuvaLukse" + + "mburgaLatvijaLībijaMarokaMonakoMoldovaMelnkalneSenmartēnaMadagaskaraMārš" + + "ala salasMaķedonijaMaliMjanma (Birma)MongolijaĶīnas īpašās pārvaldes apg" + + "abals MakaoZiemeļu Marianas salasMartinikaMauritānijaMontserrataMaltaMau" + + "rīcijaMaldīvijaMalāvijaMeksikaMalaizijaMozambikaNamībijaJaunkaledonijaNi" + + "gēraNorfolkas salaNigērijaNikaragvaNīderlandeNorvēģijaNepālaNauruNiueJau" + + "nzēlandeOmānaPanamaPeruFrancijas PolinēzijaPapua-JaungvinejaFilipīnasPak" + + "istānaPolijaSenpjēra un MikelonaPitkērnas salasPuertorikoPalestīnaPortug" + + "ālePalauParagvajaKataraOkeānijas attālās salasReinjonaRumānijaSerbijaKr" + + "ievijaRuandaSaūda ArābijaZālamana salasSeišelu salasSudānaZviedrijaSinga" + + "pūraSv.Helēnas salaSlovēnijaSvalbāra un Jana Majena salaSlovākijaSjerral" + + "eoneSanmarīnoSenegālaSomālijaSurinamaDienvidsudānaSantome un PrinsipiSal" + + "vadoraSintmārtenaSīrijaSvazilendaTristana da Kuņas salasTērksas un Kaiko" + + "sas salasČadaFrancijas Dienvidjūru teritorijaTogoTaizemeTadžikistānaToke" + + "lauAustrumtimoraTurkmenistānaTunisijaTongaTurcijaTrinidāda un TobāgoTuva" + + "luTaivānaTanzānijaUkrainaUgandaASV Mazās Aizjūras salasApvienoto Nāciju " + + "OrganizācijaAmerikas Savienotās ValstisUrugvajaUzbekistānaVatikānsSentvi" + + "nsenta un GrenadīnasVenecuēlaBritu VirdžīnasASV VirdžīnasVjetnamaVanuatu" + + "Volisa un Futunas salasSamoaKosovaJemenaMajotaDienvidāfrikas RepublikaZa" + + "mbijaZimbabvenezināms reģionspasauleĀfrikaZiemeļamerikaDienvidamerikaOke" + + "ānijaRietumāfrikaCentrālamerikaAustrumāfrikaZiemeļāfrikaVidusāfrikaDien" + + "vidāfrikaAmerikaAmerikas ziemeļu daļaKarību jūras reģionsAustrumāzijaDie" + + "nvidāzijaCentrālaustrumāzijaDienvideiropaAustrālāzijaMelanēzijaMikronēzi" + + "jas reģionsPolinēzijaĀzijaCentrālāzijaRietumāzijaEiropaAustrumeiropaZiem" + + "eļeiropaRietumeiropaLatīņamerika" + +var lvRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0015, 0x001b, 0x0035, 0x0041, 0x0053, 0x005a, 0x0063, - 0x006c, 0x0072, 0x007c, 0x0086, 0x0097, 0x009f, 0x00aa, 0x00af, - 0x00bc, 0x00ca, 0x00e0, 0x00e9, 0x00f4, 0x00fd, 0x0108, 0x0112, - 0x011a, 0x0121, 0x0127, 0x0133, 0x0140, 0x0147, 0x0150, 0x016a, - 0x0174, 0x0180, 0x0187, 0x0191, 0x019a, 0x01a6, 0x01ac, 0x01b3, - 0x01cc, 0x01da, 0x01f4, 0x0205, 0x020c, 0x0217, 0x0221, 0x0227, - 0x0230, 0x0236, 0x023f, 0x024e, 0x0257, 0x025b, 0x0264, 0x026b, - 0x027b, 0x0280, 0x0287, 0x028e, 0x02a2, 0x02ac, 0x02b3, 0x02bb, + 0x006c, 0x0072, 0x007c, 0x0086, 0x008f, 0x0097, 0x00a2, 0x00a7, + 0x00b4, 0x00c2, 0x00d8, 0x00e1, 0x00ec, 0x00f5, 0x0100, 0x010a, + 0x0112, 0x011b, 0x0121, 0x012d, 0x013a, 0x0141, 0x014a, 0x0164, + 0x016e, 0x017a, 0x0181, 0x018b, 0x0194, 0x01a0, 0x01a6, 0x01ad, + 0x01c4, 0x01d4, 0x01ee, 0x01ff, 0x0206, 0x0211, 0x021b, 0x0221, + 0x022a, 0x0230, 0x0239, 0x0248, 0x0251, 0x0255, 0x025e, 0x0265, + 0x0275, 0x027a, 0x0281, 0x0288, 0x029c, 0x02a6, 0x02ad, 0x02b5, // Entry 40 - 7F - 0x02c6, 0x02d0, 0x02e1, 0x02e9, 0x02f1, 0x02f9, 0x0306, 0x030e, - 0x0316, 0x031e, 0x0330, 0x0336, 0x033c, 0x034b, 0x0357, 0x0362, - 0x036a, 0x0370, 0x037e, 0x0386, 0x038d, 0x039c, 0x03a5, 0x03a9, - 0x03b4, 0x03bd, 0x03c4, 0x03cb, 0x03d4, 0x03e9, 0x03f2, 0x041e, - 0x0427, 0x042c, 0x043a, 0x0441, 0x046f, 0x0489, 0x0492, 0x049c, - 0x04a1, 0x04aa, 0x04b9, 0x04c4, 0x04ca, 0x04d2, 0x04d6, 0x04dc, - 0x04fc, 0x0502, 0x0508, 0x0510, 0x0518, 0x0522, 0x0529, 0x0533, - 0x053a, 0x0540, 0x054c, 0x0555, 0x055d, 0x0569, 0x057c, 0x0589, + 0x02c0, 0x02ca, 0x02db, 0x02e3, 0x02eb, 0x02f3, 0x0300, 0x0308, + 0x0310, 0x0318, 0x032a, 0x032a, 0x0330, 0x0336, 0x0345, 0x0351, + 0x035c, 0x0364, 0x036a, 0x0378, 0x0380, 0x0387, 0x0398, 0x03a1, + 0x03a5, 0x03b0, 0x03b9, 0x03c0, 0x03c7, 0x03d0, 0x03e5, 0x03ee, + 0x041a, 0x0423, 0x0428, 0x0436, 0x043d, 0x046b, 0x048a, 0x0493, + 0x049d, 0x04a2, 0x04ab, 0x04ba, 0x04c5, 0x04cb, 0x04d3, 0x04d7, + 0x04dd, 0x04fd, 0x0503, 0x0509, 0x0510, 0x0518, 0x0522, 0x0529, + 0x0533, 0x053a, 0x0540, 0x054c, 0x0555, 0x055d, 0x0569, 0x057c, // Entry 80 - BF - 0x0596, 0x059d, 0x05aa, 0x05b5, 0x05ba, 0x05c1, 0x05cc, 0x05d9, - 0x05e2, 0x05eb, 0x05f1, 0x05f8, 0x0603, 0x060a, 0x0611, 0x0617, - 0x061d, 0x0624, 0x062d, 0x0638, 0x0643, 0x0652, 0x065d, 0x0661, - 0x066f, 0x0678, 0x06a3, 0x06ba, 0x06c3, 0x06cf, 0x06da, 0x06df, - 0x06e9, 0x06f3, 0x06fc, 0x0703, 0x070c, 0x0715, 0x071e, 0x072c, - 0x0733, 0x0741, 0x074a, 0x0753, 0x075e, 0x0769, 0x0770, 0x0775, - 0x0779, 0x0785, 0x078b, 0x0791, 0x0795, 0x07a8, 0x07b9, 0x07c3, - 0x07cd, 0x07d3, 0x07e8, 0x07f1, 0x07fb, 0x0805, 0x080f, 0x0814, + 0x0589, 0x0596, 0x059d, 0x05aa, 0x05b5, 0x05ba, 0x05c1, 0x05cc, + 0x05d9, 0x05e2, 0x05eb, 0x05f1, 0x05f8, 0x0603, 0x060a, 0x0611, + 0x0617, 0x061d, 0x0624, 0x062d, 0x0638, 0x0643, 0x0652, 0x065d, + 0x0661, 0x066f, 0x0678, 0x06a3, 0x06ba, 0x06c3, 0x06cf, 0x06da, + 0x06df, 0x06e9, 0x06f3, 0x06fc, 0x0703, 0x070c, 0x0715, 0x071e, + 0x072c, 0x0733, 0x0741, 0x074a, 0x0753, 0x075e, 0x0769, 0x0770, + 0x0775, 0x0779, 0x0785, 0x078b, 0x0791, 0x0795, 0x07aa, 0x07bb, + 0x07c5, 0x07cf, 0x07d5, 0x07ea, 0x07fa, 0x0804, 0x080e, 0x0818, // Entry C0 - FF - 0x081d, 0x0823, 0x083d, 0x0845, 0x084e, 0x0855, 0x085d, 0x0863, - 0x0872, 0x0881, 0x0890, 0x0897, 0x08a0, 0x08aa, 0x08ba, 0x08c4, - 0x08e1, 0x08eb, 0x08f6, 0x0900, 0x0909, 0x0912, 0x091a, 0x0928, - 0x093b, 0x0944, 0x0950, 0x0957, 0x0961, 0x0979, 0x0993, 0x0998, - 0x09b4, 0x09b8, 0x09bf, 0x09cd, 0x09d4, 0x09e1, 0x09ef, 0x09f7, - 0x09fc, 0x0a03, 0x0a18, 0x0a1e, 0x0a26, 0x0a30, 0x0a37, 0x0a3d, - 0x0a50, 0x0a6c, 0x0a74, 0x0a80, 0x0a89, 0x0aa4, 0x0aae, 0x0abf, - 0x0ace, 0x0ad6, 0x0add, 0x0aed, 0x0af2, 0x0af8, 0x0afe, 0x0b04, + 0x081d, 0x0826, 0x082c, 0x0846, 0x084e, 0x0857, 0x085e, 0x0866, + 0x086c, 0x087b, 0x088a, 0x0898, 0x089f, 0x08a8, 0x08b2, 0x08c2, + 0x08cc, 0x08e9, 0x08f3, 0x08fe, 0x0908, 0x0911, 0x091a, 0x0922, + 0x0930, 0x0943, 0x094c, 0x0958, 0x095f, 0x0969, 0x0981, 0x099b, + 0x09a0, 0x09c1, 0x09c5, 0x09cc, 0x09da, 0x09e1, 0x09ee, 0x09fc, + 0x0a04, 0x0a09, 0x0a10, 0x0a25, 0x0a2b, 0x0a33, 0x0a3d, 0x0a44, + 0x0a4a, 0x0a64, 0x0a83, 0x0a9f, 0x0aa7, 0x0ab3, 0x0abc, 0x0ad7, + 0x0ae1, 0x0af2, 0x0b01, 0x0b09, 0x0b10, 0x0b27, 0x0b2c, 0x0b32, // Entry 100 - 13F - 0x0b1d, 0x0b24, 0x0b2c, 0x0b3e, 0x0b45, 0x0b4c, 0x0b5a, 0x0b68, - 0x0b71, 0x0b7e, 0x0b8d, 0x0b9b, 0x0ba9, 0x0bb5, 0x0bc3, 0x0bca, - 0x0be1, 0x0bf8, 0x0c05, 0x0c12, 0x0c27, 0x0c34, 0x0c42, 0x0c4d, - 0x0c63, 0x0c6e, 0x0c74, 0x0c82, 0x0c8e, 0x0c94, 0x0ca1, 0x0cae, - 0x0cba, 0x0cc8, -} // Size: 604 bytes - -var mkRegionStr string = "" + // Size: 6027 bytes + 0x0b38, 0x0b3e, 0x0b57, 0x0b5e, 0x0b66, 0x0b78, 0x0b7f, 0x0b86, + 0x0b94, 0x0ba2, 0x0bab, 0x0bb8, 0x0bc7, 0x0bd5, 0x0be3, 0x0bef, + 0x0bfd, 0x0c04, 0x0c1b, 0x0c32, 0x0c3f, 0x0c4c, 0x0c61, 0x0c6e, + 0x0c7c, 0x0c87, 0x0c9d, 0x0ca8, 0x0cae, 0x0cbc, 0x0cc8, 0x0cce, + 0x0cdb, 0x0ce8, 0x0cf4, 0x0d02, +} // Size: 608 bytes + +const mkRegionStr string = "" + // Size: 6026 bytes "Остров АсенсионАндораОбединети Арапски ЕмиратиАвганистанАнтигва и Барбуд" + "аАнгвилаАлбанијаЕрменијаАнголаАнтарктикАргентинаАмериканска СамоаАвстри" + - "јаАвстралијаАрубаОландски островиАзербејџанБосна и ХерцеговинаБарбадосБ" + + "јаАвстралијаАрубаОландски ОстровиАзербејџанБосна и ХерцеговинаБарбадосБ" + "англадешБелгијаБуркина ФасоБугаријаБахреинБурундиБенинСвети ВартоломејБ" + "ермудиБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОстров БувеБоцва" + "наБелорусијаБелизеКанадаКокосови (Килиншки) ОстровиКонго - КиншасаЦентр" + "алноафриканска РепубликаКонго - БразавилШвајцаријаБрегот на Слоновата К" + "оскаКукови ОстровиЧилеКамерунКинаКолумбијаОстров КлипертонКостарикаКуба" + - "Зелен ’РтКурасаоБожиќен ОстровКипарРепублика ЧешкаГерманијаДиего Гарсиј" + - "аЏибутиДанскаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕс" + - "тонијаЕгипетЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска унијаФинскаФи" + - "џиФолкландски ОстровиМикронезијаФарски ОстровиФранцијаГабонОбединето Кр" + - "алствоГренадаГрузијаФранцуска ГвајанаГернзиГанаГибралтарГренландГамбија" + - "ГвинејаГвадалупеЕкваторска ГвинејаГрцијаЈужна Џорџија и Јужни Сендвички" + - " ОстровиГватемалаГвамГвинеја-БисауГвајанаХонг Конг С.А.Р КинаОстров Херд" + - " и Острови МакдоналдХондурасХрватскаХаитиУнгаријаКанарски ОстровиИндонез" + - "ијаИрскаИзраелОстров МанИндијаБританска Индоокеанска ТериторијаИракИран" + - "ИсландИталијаЏерсиЈамајкаЈорданЈапонијаКенијаКиргистанКамбоџаКирибатиКо" + - "морски ОстровиСвети Кристофер и НевисСеверна КорејаЈужна КорејаКувајтКа" + - "јмански ОстровиКазахстанЛаосЛибанСвета ЛуцијаЛихтенштајнШри ЛанкаЛибери" + - "јаЛесотоЛитванијаЛуксембургЛатвијаЛибијаМарокоМонакоМолдавијаЦрна ГораС" + - "ент МартинМадагаскарМаршалски ОстровиМакедонијаМалиМјанмар (Бурма)Монго" + - "лијаМакао С.А.Р КинаСеверни Маријански ОстровиМартиникМавританијаМонсер" + - "атМалтаМаврициусМалдивиМалавиМексикоМалезијаМозамбикНамибијаНова Каледо" + - "нијаНигерНорфолшки ОстровНигеријаНикарагваХоландијаНорвешкаНепалНауруНи" + - "уеНов ЗеландОманПанамаПеруФранцуска ПолинезијаПапуа Нова ГвинејаФилипин" + - "иПакистанПолскаСент Пјер и МикеланПиткернски ОстровиПорторикоПалестинск" + - "и територииПортугалијаПалауПарагвајКатарЗависни земји во ОкеанијаРијуни" + - "онРоманијаСрбијаРусијаРуандаСаудиска АрабијаСоломонски ОстровиСејшелиСу" + - "данШведскаСингапурСвета ЕленаСловенијаСвалбард и Жан МејенСловачкаСиера" + - " ЛеонеСан МариноСенегалСомалијаСуринамЈужен СуданСао Томе и ПринсипеЕл С" + - "алвадорСвети МартинСиријаСвазилендТристан да КуњаОстрови Туркс и Кајкос" + - "ЧадФранцуски Јужни територииТогоТајландТаџикистанТокелауИсточен Тимор (" + - "Тимор Лесте)ТуркменистанТунисТонгаТурцијаТринидад и ТобагоТувалуТајванТ" + - "анзанијаУкраинаУгандаАмерикански територии во ПацификотСоединети Америк" + - "ански ДржавиУругвајУзбекистанВатиканСвети Винсент и ГренадинитеВенецуел" + - "аБритански Девствени ОстровиАмерикански Девствени ОстровиВиетнамВануату" + - "Валис и ФутунаСамоаКосовоЈеменМајотЈужноафриканска РепубликаЗамбијаЗимб" + - "абвеНепознат регионСветАфрикаСеверна АмерикаЈужна АмерикаОкеанијаЗападн" + - "а АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаСредна АфрикаЈужна" + - " АфрикаАмерикиСеверна континентална АмерикаКарибиИсточна АзијаЈужна Азиј" + - "аЈугоисточна АзијаЈужна ЕвропаАвстралазијаМеланезијаМикронезиски регион" + - "ПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна " + - "ЕвропаЗападна ЕвропаЛатинска Америка" - -var mkRegionIdx = []uint16{ // 290 elements + "Зелен ’РтКурасаоБожиќен ОстровКипарЧешкаГерманијаДиего ГарсијаЏибутиДан" + + "скаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстонијаЕгип" + + "етЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска унијаФинскаФиџиФолкланд" + + "ски ОстровиМикронезијаФарски ОстровиФранцијаГабонОбединето КралствоГрен" + + "адаГрузијаФранцуска ГвајанаГернзиГанаГибралтарГренландГамбијаГвинејаГва" + + "далупеЕкваторска ГвинејаГрцијаЈужна Џорџија и Јужни Сендвички ОстровиГв" + + "атемалаГуамГвинеја-БисауГвајанаХонг Конг С.А.Р КинаОстров Херд и Остров" + + "и МекдоналдХондурасХрватскаХаитиУнгаријаКанарски ОстровиИндонезијаИрска" + + "ИзраелОстров МанИндијаБританска Индоокеанска ТериторијаИракИранИсландИт" + + "алијаЏерсиЈамајкаЈорданЈапонијаКенијаКиргистанКамбоџаКирибатиКоморски О" + + "стровиСвети Кристофер и НевисСеверна КорејаЈужна КорејаКувајтКајмански " + + "ОстровиКазахстанЛаосЛибанСвета ЛуцијаЛихтенштајнШри ЛанкаЛиберијаЛесото" + + "ЛитванијаЛуксембургЛатвијаЛибијаМарокоМонакоМолдавијаЦрна ГораСент Март" + + "инМадагаскарМаршалски ОстровиМакедонијаМалиМјанмар (Бурма)МонголијаМака" + + "о САРСеверни Маријански ОстровиМартиникМавританијаМонсератМалтаМаврициу" + + "сМалдивиМалавиМексикоМалезијаМозамбикНамибијаНова КаледонијаНигерНорфол" + + "шки ОстровНигеријаНикарагваХоландијаНорвешкаНепалНауруНиујеНов ЗеландОм" + + "анПанамаПеруФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПолск" + + "аСент Пјер и МикеланПиткернски ОстровиПорторикоПалестински територииПор" + + "тугалијаПалауПарагвајКатарЗависни земји во ОкеанијаРеунионРоманијаСрбиј" + + "аРусијаРуандаСаудиска АрабијаСоломонски ОстровиСејшелиСуданШведскаСинга" + + "пурСвета ЕленаСловенијаСвалбард и Жан МејенСловачкаСиера ЛеонеСан Марин" + + "оСенегалСомалијаСуринамЈужен СуданСао Томе и ПринсипеЕл СалвадорСвети М" + + "артинСиријаСвазилендТристан да КуњаОстрови Туркс и КаикосЧадФранцуски Ј" + + "ужни ТериторииТогоТајландТаџикистанТокелауИсточен Тимор (Тимор Лесте)Ту" + + "ркменистанТунисТонгаТурцијаТринидад и ТобагоТувалуТајванТанзанијаУкраин" + + "аУгандаАмерикански територии во Пацификотобединети нацииСоединети Амери" + + "кански ДржавиУругвајУзбекистанВатиканСвети Винсент и ГренадинитеВенецуе" + + "лаБритански Девствени ОстровиАмерикански Девствени ОстровиВиетнамВануат" + + "уВалис и ФутунаСамоаКосовоЈеменМајотЈужноафриканска РепубликаЗамбијаЗим" + + "бабвеНепознат регионСветАфрикаСеверна АмерикаЈужна АмерикаОкеанијаЗапад" + + "на АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаСредна АфрикаЈужн" + + "а АфрикаАмерикиСеверна континентална АмерикаКарибиИсточна АзијаЈужна Аз" + + "ијаЈугоисточна АзијаЈужна ЕвропаАвстралазијаМеланезијаМикронезиски реги" + + "онПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверн" + + "а ЕвропаЗападна ЕвропаЛатинска Америка" + +var mkRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab, 0x00bb, 0x00c7, 0x00d9, 0x00eb, 0x010c, 0x011c, 0x0130, 0x013a, @@ -41724,225 +46825,225 @@ var mkRegionIdx = []uint16{ // 290 elements 0x0286, 0x0292, 0x029c, 0x02b1, 0x02bf, 0x02d3, 0x02df, 0x02eb, 0x031d, 0x0338, 0x0371, 0x038e, 0x03a2, 0x03d1, 0x03ec, 0x03f4, 0x0402, 0x040a, 0x041c, 0x043b, 0x044d, 0x0455, 0x0467, 0x0475, - 0x0490, 0x049a, 0x04b7, 0x04c9, 0x04e2, 0x04ee, 0x04fa, 0x050a, + 0x0490, 0x049a, 0x04a4, 0x04b6, 0x04cf, 0x04db, 0x04e7, 0x04f7, // Entry 40 - 7F - 0x0535, 0x053f, 0x0559, 0x0567, 0x0577, 0x0583, 0x059e, 0x05ae, - 0x05bc, 0x05cc, 0x05e7, 0x05f3, 0x05fb, 0x0620, 0x0636, 0x0651, - 0x0661, 0x066b, 0x068e, 0x069c, 0x06aa, 0x06cb, 0x06d7, 0x06df, - 0x06f1, 0x0701, 0x070f, 0x071d, 0x072f, 0x0752, 0x075e, 0x07a7, - 0x07b9, 0x07c1, 0x07da, 0x07e8, 0x080b, 0x0845, 0x0855, 0x0865, - 0x086f, 0x087f, 0x089e, 0x08b2, 0x08bc, 0x08c8, 0x08db, 0x08e7, - 0x0927, 0x092f, 0x0937, 0x0943, 0x0951, 0x095b, 0x0969, 0x0975, - 0x0985, 0x0991, 0x09a3, 0x09b1, 0x09c1, 0x09e0, 0x0a0b, 0x0a26, + 0x0522, 0x052c, 0x0546, 0x0554, 0x0564, 0x0570, 0x058b, 0x059b, + 0x05a9, 0x05b9, 0x05d4, 0x05d4, 0x05e0, 0x05e8, 0x060d, 0x0623, + 0x063e, 0x064e, 0x0658, 0x067b, 0x0689, 0x0697, 0x06b8, 0x06c4, + 0x06cc, 0x06de, 0x06ee, 0x06fc, 0x070a, 0x071c, 0x073f, 0x074b, + 0x0794, 0x07a6, 0x07ae, 0x07c7, 0x07d5, 0x07f8, 0x0832, 0x0842, + 0x0852, 0x085c, 0x086c, 0x088b, 0x089f, 0x08a9, 0x08b5, 0x08c8, + 0x08d4, 0x0914, 0x091c, 0x0924, 0x0930, 0x093e, 0x0948, 0x0956, + 0x0962, 0x0972, 0x097e, 0x0990, 0x099e, 0x09ae, 0x09cd, 0x09f8, // Entry 80 - BF - 0x0a3d, 0x0a49, 0x0a6a, 0x0a7c, 0x0a84, 0x0a8e, 0x0aa5, 0x0abb, - 0x0acc, 0x0adc, 0x0ae8, 0x0afa, 0x0b0e, 0x0b1c, 0x0b28, 0x0b34, - 0x0b40, 0x0b52, 0x0b63, 0x0b78, 0x0b8c, 0x0bad, 0x0bc1, 0x0bc9, - 0x0be4, 0x0bf6, 0x0c12, 0x0c44, 0x0c54, 0x0c6a, 0x0c7a, 0x0c84, - 0x0c96, 0x0ca4, 0x0cb0, 0x0cbe, 0x0cce, 0x0cde, 0x0cee, 0x0d0b, - 0x0d15, 0x0d34, 0x0d44, 0x0d56, 0x0d68, 0x0d78, 0x0d82, 0x0d8c, - 0x0d94, 0x0da7, 0x0daf, 0x0dbb, 0x0dc3, 0x0dea, 0x0e0c, 0x0e1c, - 0x0e2c, 0x0e38, 0x0e5b, 0x0e7e, 0x0e90, 0x0eb9, 0x0ecf, 0x0ed9, + 0x0a13, 0x0a2a, 0x0a36, 0x0a57, 0x0a69, 0x0a71, 0x0a7b, 0x0a92, + 0x0aa8, 0x0ab9, 0x0ac9, 0x0ad5, 0x0ae7, 0x0afb, 0x0b09, 0x0b15, + 0x0b21, 0x0b2d, 0x0b3f, 0x0b50, 0x0b65, 0x0b79, 0x0b9a, 0x0bae, + 0x0bb6, 0x0bd1, 0x0be3, 0x0bf4, 0x0c26, 0x0c36, 0x0c4c, 0x0c5c, + 0x0c66, 0x0c78, 0x0c86, 0x0c92, 0x0ca0, 0x0cb0, 0x0cc0, 0x0cd0, + 0x0ced, 0x0cf7, 0x0d16, 0x0d26, 0x0d38, 0x0d4a, 0x0d5a, 0x0d64, + 0x0d6e, 0x0d78, 0x0d8b, 0x0d93, 0x0d9f, 0x0da7, 0x0dce, 0x0df0, + 0x0e00, 0x0e10, 0x0e1c, 0x0e3f, 0x0e62, 0x0e74, 0x0e9d, 0x0eb3, // Entry C0 - FF - 0x0ee9, 0x0ef3, 0x0f22, 0x0f32, 0x0f42, 0x0f4e, 0x0f5a, 0x0f66, - 0x0f85, 0x0fa8, 0x0fb6, 0x0fc0, 0x0fce, 0x0fde, 0x0ff3, 0x1005, - 0x102a, 0x103a, 0x104f, 0x1062, 0x1070, 0x1080, 0x108e, 0x10a3, - 0x10c6, 0x10db, 0x10f2, 0x10fe, 0x1110, 0x112c, 0x1155, 0x115b, - 0x118b, 0x1193, 0x11a1, 0x11b5, 0x11c3, 0x11f4, 0x120c, 0x1216, - 0x1220, 0x122e, 0x124e, 0x125a, 0x1266, 0x1278, 0x1286, 0x1292, - 0x12d3, 0x1309, 0x1317, 0x132b, 0x1339, 0x136c, 0x137e, 0x13b2, - 0x13ea, 0x13f8, 0x1406, 0x1420, 0x142a, 0x1436, 0x1440, 0x144a, + 0x0ebd, 0x0ecd, 0x0ed7, 0x0f06, 0x0f14, 0x0f24, 0x0f30, 0x0f3c, + 0x0f48, 0x0f67, 0x0f8a, 0x0f98, 0x0fa2, 0x0fb0, 0x0fc0, 0x0fd5, + 0x0fe7, 0x100c, 0x101c, 0x1031, 0x1044, 0x1052, 0x1062, 0x1070, + 0x1085, 0x10a8, 0x10bd, 0x10d4, 0x10e0, 0x10f2, 0x110e, 0x1137, + 0x113d, 0x116d, 0x1175, 0x1183, 0x1197, 0x11a5, 0x11d6, 0x11ee, + 0x11f8, 0x1202, 0x1210, 0x1230, 0x123c, 0x1248, 0x125a, 0x1268, + 0x1274, 0x12b5, 0x12d2, 0x1308, 0x1316, 0x132a, 0x1338, 0x136b, + 0x137d, 0x13b1, 0x13e9, 0x13f7, 0x1405, 0x141f, 0x1429, 0x1435, // Entry 100 - 13F - 0x147b, 0x1489, 0x1499, 0x14b6, 0x14be, 0x14ca, 0x14e7, 0x1500, - 0x1510, 0x152b, 0x154c, 0x1567, 0x1582, 0x159b, 0x15b2, 0x15c0, - 0x15f8, 0x1604, 0x161d, 0x1632, 0x1653, 0x166a, 0x1682, 0x1696, - 0x16bb, 0x16cf, 0x16d9, 0x16f6, 0x170f, 0x171b, 0x1736, 0x1751, - 0x176c, 0x178b, -} // Size: 604 bytes - -var mlRegionStr string = "" + // Size: 9220 bytes + 0x143f, 0x1449, 0x147a, 0x1488, 0x1498, 0x14b5, 0x14bd, 0x14c9, + 0x14e6, 0x14ff, 0x150f, 0x152a, 0x154b, 0x1566, 0x1581, 0x159a, + 0x15b1, 0x15bf, 0x15f7, 0x1603, 0x161c, 0x1631, 0x1652, 0x1669, + 0x1681, 0x1695, 0x16ba, 0x16ce, 0x16d8, 0x16f5, 0x170e, 0x171a, + 0x1735, 0x1750, 0x176b, 0x178a, +} // Size: 608 bytes + +const mlRegionStr string = "" + // Size: 9151 bytes "അസൻഷൻ ദ്വീപ്അന്റോറയുണൈറ്റഡ് അറബ് എമിറൈറ്റ്\u200cസ്അഫ്\u200cഗാനിസ്ഥാൻആൻറി" + "ഗ്വയും ബർബുഡയുംആൻഗ്വില്ലഅൽബേനിയഅർമേനിയഅംഗോളഅൻറാർട്ടിക്കഅർജൻറീനഅമേരിക്ക" + "ൻ സമോവഓസ്ട്രിയഓസ്\u200cട്രേലിയഅറൂബഅലൻഡ് ദ്വീപുകൾഅസർബൈജാൻബോസ്നിയയും ഹെർ" + "സഗോവിനയുംബാർബഡോസ്ബംഗ്ലാദേശ്ബെൽജിയംബുർക്കിനാ ഫാസോബൾഗേറിയബഹ്റിൻബറുണ്ടിബെ" + - "നിൻസെന്റ് ബാർത്തലമിബർമുഡബ്രൂണൈബൊളീവിയബൊണെയ്ർ, സിന്റ് യുസ്റ്റേഷ്യസ്, സാ" + - "ബ എന്നിവബ്രസീൽബഹാമാസ്ഭൂട്ടാൻബൗവെട്ട് ദ്വീപ്ബോട്സ്വാനബെലറൂസ്ബെലീസ്കാനഡക" + - "ോക്കസ് (കീലിംഗ്) ദ്വീപുകൾകോംഗോ - കിൻഷാസസെൻട്രൽ ആഫ്രിക്കൻ റിപ്പബ്ലിക്കോ" + - "ംഗോ - ബ്രാസവില്ലിസ്വിറ്റ്സർലാൻഡ്കോട്ട് ഡി വാർകുക്ക് ദ്വീപുകൾചിലികാമറൂൺ" + - "ചൈനകൊളംബിയക്ലിപ്പെർട്ടൻ ദ്വീപ്കോസ്റ്ററിക്കക്യൂബകേപ്പ് വെർദെകുറാകാവോക്ര" + - "ിസ്മസ് ദ്വീപ്സൈപ്രസ്ചെക്ക് റിപ്പബ്ലിക്ജർമനിഡീഗോ ഗ്രാഷ്യദിജിബൗട്ടിഡെൻമാ" + - "ർക്ക്ഡൊമിനിക്കഡൊമിനിക്കൻ റിപ്പബ്ലിക്അൾജീരിയസെയൂത്ത ആൻഡ് മെലിയഇക്വഡോർഎസ" + - "്റ്റോണിയ\u200dഈജിപ്ത്പശ്ചിമ സഹാറഎറിത്രിയസ്\u200cപെയിൻഎത്യോപ്യയൂറോപ്യൻ " + - "യൂണിയൻഫിൻലാൻഡ്ഫിജിഫാക്ക്\u200cലാന്റ് ദ്വീപുകൾമൈക്രോനേഷ്യഫറോ ദ്വീപുകൾഫ്" + - "രാൻസ്ഗാബൺയുണൈറ്റഡ് കിംഗ്ഡംഗ്രനേഡജോർജ്ജിയഫ്രഞ്ച് ഗയാനഗേൺസിഘാനജിബ്രാൾട്ട" + - "ർഗ്രീൻലാൻറ്ഗാംബിയഗിനിയഗ്വാഡലൂപ്പ്ഇക്വറ്റോറിയൽ ഗിനിയഗ്രീസ്ദക്ഷിണ ജോർജ്ജ" + - "ിയയും ദക്ഷിണ സാൻഡ്\u200cവിച്ച് ദ്വീപുകളുംഗ്വാട്ടിമാലഗ്വാംഗിനിയ-ബിസൗഗയാ" + - "നഹോങ്കോങ്ങ് (SAR) ചൈനഹിയേർഡും മക്\u200cഡൊണാൾഡ് ദ്വീപുകളുംഹോണ്ടുറാസ്ക്ര" + - "ൊയേഷ്യഹെയ്തിഹംഗറികാനറി ദ്വീപുകൾഇന്തോനേഷ്യഅയർലാൻഡ്ഇസ്രായേൽഐൽ ഓഫ് മാൻഇന്" + - "ത്യബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശംഇറാഖ്ഇറാൻഐസ്\u200cലാന്റ്ഇറ്റലിജ" + - "േഴ്സിജമൈക്കജോർദ്ദാൻജപ്പാൻകെനിയകിർഗിസ്ഥാൻകംബോഡിയകിരിബാട്ടികോമൊറോസ്സെന്റ" + - "് കിറ്റ്\u200cസും നെവിസുംഉത്തരകൊറിയദക്ഷിണകൊറിയകുവൈറ്റ്കേമാൻ ദ്വീപുകൾകസ" + - "ാഖിസ്ഥാൻലാവോസ്ലെബനൻസെൻറ് ലൂസിയലിച്ചൺസ്റ്റൈൻശ്രീലങ്കലൈബീരിയലെസോതോലിത്വാ" + - "നിയലക്സംബർഗ്ലാറ്റ്വിയലിബിയമൊറോക്കൊമൊണാക്കോമൾഡോവമോണ്ടെനെഗ്രോസെൻറ് മാർട്" + - "ടിൻമഡഗാസ്കർമാർഷൽ\u200d\u200d ദ്വീപുകൾമാസിഡോണിയമാലിമ്യാൻമാർ (ബർമ്മ)മംഗോ" + - "ളിയമക്കാവു (SAR) ചൈനഉത്തര മറിയാനാ ദ്വീപുകൾമാർട്ടിനിക്ക്മൗറിറ്റാനിയമൊണ്" + - "ടെസരത്ത്മാൾട്ടമൗറീഷ്യസ്മാലിദ്വീപ്മലാവിമെക്സിക്കോമലേഷ്യമൊസാംബിക്ക്നമീബി" + - "യപുതിയ കാലിഡോണിയനൈജർനോർഫോക് ദ്വീപ്നൈജീരിയനിക്കരാഗ്വനെതർലാൻഡ്\u200cസ്നോ" + - "ർവെനേപ്പാൾനൗറുന്യൂയിന്യൂസിലാൻറ്ഒമാൻപനാമപെറുഫ്രഞ്ച് പോളിനേഷ്യപാപ്പുവ ന്" + - "യൂ ഗിനിയഫിലിപ്പൈൻസ്പാക്കിസ്ഥാൻപോളണ്ട്സെന്റ് പിയറിയും മിക്കലണുംപിറ്റ്" + - "\u200cകെയ്\u200cൻ ദ്വീപുകൾപ്യൂർട്ടോ റിക്കോപാലസ്\u200cതീൻ പ്രദേശങ്ങൾപോർച്" + - "ചുഗൽപലാവുപരാഗ്വേഖത്തർദ്വീപസമൂഹംറീയൂണിയൻറൊമാനിയസെർബിയറഷ്യറുവാണ്ടസൗദി അറ" + - "േബ്യസോളമൻ\u200d ദ്വീപുകൾസെയ്\u200cഷെൽസ്സുഡാൻസ്വീഡൻസിംഗപ്പുർസെൻറ് ഹെലീന" + - "സ്ലോവേനിയസ്വാൽബാഡും ജാൻ മായേനുംസ്ലോവാക്യസിയെറ ലിയോൺസാൻ മറിനോസെനഗൽസോമാല" + - "ിയസുരിനെയിംദക്ഷിണ സുഡാൻസാവോ ടോമും പ്രിൻസിപെയുംഎൽ സാൽവദോർസിന്റ് മാർട്ടെ" + - "ൻസിറിയസ്വാസിലാൻറ്ട്രസ്റ്റൻ ഡ കൂനടർക്ക്\u200cസും കെയ്\u200cക്കോ ദ്വീപുക" + - "ളുംഛാഡ്ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശംടോഗോതായ്\u200cലാൻഡ്താജിക്കിസ്ഥാൻടോക്കെല" + - "ൂതിമോർ-ലെസ്റ്റെതുർക്ക്മെനിസ്ഥാൻടുണീഷ്യടോംഗതുർക്കിട്രിനിഡാഡും ടുബാഗോയും" + - "ടുവാലുതായ്\u200cവാൻടാൻസാനിയഉക്രെയ്\u200cൻഉഗാണ്ടയു.എസ്. ദ്വീപസമൂഹങ്ങൾഅമ" + - "േരിക്കൻ ഐക്യനാടുകൾഉറുഗ്വേഉസ്\u200cബെക്കിസ്ഥാൻവത്തിക്കാൻസെന്റ് വിൻസെന്റ" + - "ും ഗ്രനെഡൈൻസുംവെനിസ്വേലബ്രിട്ടീഷ് വെർജിൻ ദ്വീപുകൾയു.എസ്. വെർജിൻ ദ്വീപു" + - "കൾവിയറ്റ്നാംവന്വാതുവാലിസ് ആന്റ് ഫ്യൂച്യുനസമോവകൊസോവൊയെമൻമയോട്ടിദക്ഷിണാഫ" + - "്രിക്കസാംബിയസിംബാബ്\u200cവേഅജ്ഞാത പ്രദേശംലോകംആഫ്രിക്കവടക്കേ അമേരിക്കതെ" + - "ക്കേ അമേരിക്കഓഷ്യാനിയപശ്ചിമ ആഫ്രിക്കമദ്ധ്യഅമേരിക്കകിഴക്കൻ ആഫ്രിക്കഉത്ത" + - "രാഫ്രിക്കമദ്ധ്യആഫ്രിക്കതെക്കേ ആഫ്രിക്കഅമേരിക്കകൾവടക്കൻ അമേരിക്കകരീബിയൻ" + - "കിഴക്കൻ ഏഷ്യതെക്കേ ഏഷ്യതെക്ക്-കിഴക്കൻ ഏഷ്യതെക്കേ യൂറോപ്പ്ഓസ്\u200cട്രേ" + - "ലിയയും ന്യൂസിലാൻഡുംമെലനേഷ്യമൈക്രോനേഷ്യൻ പ്രദേശംപോളിനേഷ്യഏഷ്യമദ്ധ്യേഷ്യ" + - "പശ്ചിമേഷ്യയൂറോപ്പ്കിഴക്കൻ യൂറോപ്പ്വടക്കേ യൂറോപ്പ്പശ്ചിമ യൂറോപ്പ്ലാറ്റി" + - "നമേരിക്ക" - -var mlRegionIdx = []uint16{ // 290 elements + "നിൻസെന്റ് ബാർത്തലമിബർമുഡബ്രൂണൈബൊളീവിയകരീബിയൻ നെതർലാൻഡ്സ്ബ്രസീൽബഹാമാസ്ഭ" + + "ൂട്ടാൻബൗവെട്ട് ദ്വീപ്ബോട്സ്വാനബെലറൂസ്ബെലീസ്കാനഡകോക്കസ് (കീലിംഗ്) ദ്വീപ" + + "ുകൾകോംഗോ - കിൻഷാസസെൻട്രൽ ആഫ്രിക്കൻ റിപ്പബ്ലിക്കോംഗോ - ബ്രാസവില്ലിസ്വിറ" + + "്റ്സർലാൻഡ്കോട്ട് ഡി വാർകുക്ക് ദ്വീപുകൾചിലികാമറൂൺചൈനകൊളംബിയക്ലിപ്പെർട്ട" + + "ൻ ദ്വീപ്കോസ്റ്ററിക്കക്യൂബകേപ്പ് വെർദെകുറാകാവോക്രിസ്മസ് ദ്വീപ്സൈപ്രസ്ചെ" + + "ക്കിയജർമനിഡീഗോ ഗ്രാഷ്യദിജിബൗട്ടിഡെൻമാർക്ക്ഡൊമിനിക്കഡൊമിനിക്കൻ റിപ്പബ്ല" + + "ിക്അൾജീരിയസെയൂത്ത ആൻഡ് മെലിയഇക്വഡോർഎസ്റ്റോണിയ\u200dഈജിപ്ത്പശ്ചിമ സഹാറഎ" + + "റിത്രിയസ്\u200cപെയിൻഎത്യോപ്യയൂറോപ്യൻ യൂണിയൻഫിൻലാൻഡ്ഫിജിഫാക്ക്\u200cലാന" + + "്റ് ദ്വീപുകൾമൈക്രോനേഷ്യഫറോ ദ്വീപുകൾഫ്രാൻസ്ഗാബൺയുണൈറ്റഡ് കിംഗ്ഡംഗ്രനേഡജ" + + "ോർജ്ജിയഫ്രഞ്ച് ഗയാനഗേൺസിഘാനജിബ്രാൾട്ടർഗ്രീൻലാൻറ്ഗാംബിയഗിനിയഗ്വാഡലൂപ്പ്" + + "ഇക്വറ്റോറിയൽ ഗിനിയഗ്രീസ്ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്\u200cവിച്ച് ദ്" + + "വീപുകളുംഗ്വാട്ടിമാലഗ്വാംഗിനിയ-ബിസൗഗയാനഹോങ്കോങ്ങ് (SAR) ചൈനഹിയേർഡും മക്" + + "\u200cഡൊണാൾഡ് ദ്വീപുകളുംഹോണ്ടുറാസ്ക്രൊയേഷ്യഹെയ്തിഹംഗറികാനറി ദ്വീപുകൾഇന്ത" + + "ോനേഷ്യഅയർലൻഡ്ഇസ്രായേൽഐൽ ഓഫ് മാൻഇന്ത്യബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദ" + + "േശംഇറാഖ്ഇറാൻഐസ്\u200cലാന്റ്ഇറ്റലിജേഴ്സിജമൈക്കജോർദ്ദാൻജപ്പാൻകെനിയകിർഗിസ" + + "്ഥാൻകംബോഡിയകിരിബാട്ടികോമൊറോസ്സെന്റ് കിറ്റ്\u200cസും നെവിസുംഉത്തരകൊറിയദ" + + "ക്ഷിണകൊറിയകുവൈറ്റ്കേമാൻ ദ്വീപുകൾകസാഖിസ്ഥാൻലാവോസ്ലെബനൻസെൻറ് ലൂസിയലിച്ചൺ" + + "സ്റ്റൈൻശ്രീലങ്കലൈബീരിയലെസോതോലിത്വാനിയലക്സംബർഗ്ലാറ്റ്വിയലിബിയമൊറോക്കൊമൊ" + + "ണാക്കോമൾഡോവമോണ്ടെനെഗ്രോസെൻറ് മാർട്ടിൻമഡഗാസ്കർമാർഷൽ\u200d\u200d ദ്വീപുക" + + "ൾമാസിഡോണിയമാലിമ്യാൻമാർ (ബർമ്മ)മംഗോളിയമക്കാവു (SAR) ചൈനഉത്തര മറിയാനാ ദ്" + + "വീപുകൾമാർട്ടിനിക്ക്മൗറിറ്റാനിയമൊണ്ടെസരത്ത്മാൾട്ടമൗറീഷ്യസ്മാലിദ്വീപ്മലാ" + + "വിമെക്സിക്കോമലേഷ്യമൊസാംബിക്ക്നമീബിയന്യൂ കാലിഡോണിയനൈജർനോർഫോക് ദ്വീപ്നൈജ" + + "ീരിയനിക്കരാഗ്വനെതർലാൻഡ്\u200cസ്നോർവെനേപ്പാൾനൗറുന്യൂയിന്യൂസിലാൻറ്ഒമാൻപന" + + "ാമപെറുഫ്രഞ്ച് പോളിനേഷ്യപാപ്പുവ ന്യൂ ഗിനിയഫിലിപ്പീൻസ്പാക്കിസ്ഥാൻപോളണ്ട്" + + "സെന്റ് പിയറിയും മിക്കലണുംപിറ്റ്\u200cകെയ്\u200cൻ ദ്വീപുകൾപ്യൂർട്ടോ റിക" + + "്കോപാലസ്\u200cതീൻ പ്രദേശങ്ങൾപോർച്ചുഗൽപലാവുപരാഗ്വേഖത്തർദ്വീപസമൂഹംറീയൂണി" + + "യൻറൊമാനിയസെർബിയറഷ്യറുവാണ്ടസൗദി അറേബ്യസോളമൻ\u200d ദ്വീപുകൾസീഷെൽസ്സുഡാൻസ" + + "്വീഡൻസിംഗപ്പുർസെൻറ് ഹെലീനസ്ലോവേനിയസ്വാൽബാഡും ജാൻ മായേനുംസ്ലോവാക്യസിയെറ" + + " ലിയോൺസാൻ മറിനോസെനഗൽസോമാലിയസുരിനാംദക്ഷിണ സുഡാൻസാവോ ടോമും പ്രിൻസിപെയുംഎൽ " + + "സാൽവദോർസിന്റ് മാർട്ടെൻസിറിയസ്വാസിലാൻറ്ട്രസ്റ്റൻ ഡ കൂനടർക്ക്\u200cസും ക" + + "െയ്\u200cക്കോ ദ്വീപുകളുംഛാഡ്ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശംടോഗോതായ്\u200cലാൻഡ" + + "്താജിക്കിസ്ഥാൻടോക്കെലൂതിമോർ-ലെസ്റ്റെതുർക്ക്മെനിസ്ഥാൻടുണീഷ്യടോംഗതുർക്കി" + + "ട്രിനിഡാഡും ടുബാഗോയുംടുവാലുതായ്\u200cവാൻടാൻസാനിയഉക്രെയ്\u200cൻഉഗാണ്ടയു" + + ".എസ്. ദ്വീപസമൂഹങ്ങൾഐക്യരാഷ്ട്രസഭഅമേരിക്കൻ ഐക്യനാടുകൾഉറുഗ്വേഉസ്\u200cബെക്" + + "കിസ്ഥാൻവത്തിക്കാൻസെന്റ് വിൻസെന്റും ഗ്രനെഡൈൻസുംവെനിസ്വേലബ്രിട്ടീഷ് വെർജ" + + "ിൻ ദ്വീപുകൾയു.എസ്. വെർജിൻ ദ്വീപുകൾവിയറ്റ്നാംവന്വാതുവാലിസ് ആന്റ് ഫ്യൂച്" + + "യുനസമോവകൊസോവൊയെമൻമയോട്ടിദക്ഷിണാഫ്രിക്കസാംബിയസിംബാബ്\u200cവേഅജ്ഞാത പ്രദ" + + "േശംലോകംആഫ്രിക്കവടക്കേ അമേരിക്കതെക്കേ അമേരിക്കഓഷ്യാനിയപശ്ചിമ ആഫ്രിക്കമദ" + + "്ധ്യഅമേരിക്കകിഴക്കൻ ആഫ്രിക്കഉത്തരാഫ്രിക്കമദ്ധ്യആഫ്രിക്കതെക്കേ ആഫ്രിക്ക" + + "അമേരിക്കകൾവടക്കൻ അമേരിക്കകരീബിയൻകിഴക്കൻ ഏഷ്യതെക്കേ ഏഷ്യതെക്ക്-കിഴക്കൻ " + + "ഏഷ്യതെക്കേ യൂറോപ്പ്ഓസ്\u200cട്രേലിയയും ന്യൂസിലാൻഡുംമെലനേഷ്യമൈക്രോനേഷ്യ" + + "ൻ പ്രദേശംപോളിനേഷ്യഏഷ്യമദ്ധ്യേഷ്യപശ്ചിമേഷ്യയൂറോപ്പ്കിഴക്കൻ യൂറോപ്പ്വടക്" + + "കേ യൂറോപ്പ്പശ്ചിമ യൂറോപ്പ്ലാറ്റിനമേരിക്ക" + +var mlRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0022, 0x0034, 0x0081, 0x00a8, 0x00df, 0x00fa, 0x010f, 0x0124, 0x0133, 0x0157, 0x016c, 0x0194, 0x01ac, 0x01cd, 0x01d9, 0x0201, 0x0219, 0x025c, 0x0274, 0x0292, 0x02a7, 0x02cf, 0x02e4, - 0x02f6, 0x030b, 0x031a, 0x0348, 0x0357, 0x0369, 0x037e, 0x03ed, - 0x03ff, 0x0414, 0x0429, 0x0454, 0x046f, 0x0484, 0x0496, 0x04a2, - 0x04e8, 0x050c, 0x055f, 0x0592, 0x05bf, 0x05e2, 0x060d, 0x0619, - 0x062b, 0x0634, 0x0649, 0x0683, 0x06a7, 0x06b6, 0x06d8, 0x06f0, - 0x071e, 0x0733, 0x0767, 0x0776, 0x0798, 0x07b6, 0x07d4, 0x07ef, + 0x02f6, 0x030b, 0x031a, 0x0348, 0x0357, 0x0369, 0x037e, 0x03b5, + 0x03c7, 0x03dc, 0x03f1, 0x041c, 0x0437, 0x044c, 0x045e, 0x046a, + 0x04b0, 0x04d4, 0x0527, 0x055a, 0x0587, 0x05aa, 0x05d5, 0x05e1, + 0x05f3, 0x05fc, 0x0611, 0x064b, 0x066f, 0x067e, 0x06a0, 0x06b8, + 0x06e6, 0x06fb, 0x0710, 0x071f, 0x0741, 0x075f, 0x077d, 0x0798, // Entry 40 - 7F - 0x082f, 0x0844, 0x0876, 0x088b, 0x08ac, 0x08c1, 0x08e0, 0x08f8, - 0x0910, 0x0928, 0x0953, 0x096b, 0x0977, 0x09b7, 0x09d8, 0x09fa, - 0x0a0f, 0x0a1b, 0x0a4c, 0x0a5e, 0x0a76, 0x0a98, 0x0aa7, 0x0ab0, - 0x0ad1, 0x0aef, 0x0b01, 0x0b10, 0x0b31, 0x0b65, 0x0b77, 0x0c02, - 0x0c23, 0x0c32, 0x0c4e, 0x0c5a, 0x0c88, 0x0ce1, 0x0cff, 0x0d1a, - 0x0d2c, 0x0d3b, 0x0d63, 0x0d81, 0x0d99, 0x0db1, 0x0dcb, 0x0ddd, - 0x0e43, 0x0e52, 0x0e5e, 0x0e7c, 0x0e8e, 0x0ea0, 0x0eb2, 0x0eca, - 0x0edc, 0x0eeb, 0x0f09, 0x0f1e, 0x0f3c, 0x0f54, 0x0f9b, 0x0fb9, + 0x07d8, 0x07ed, 0x081f, 0x0834, 0x0855, 0x086a, 0x0889, 0x08a1, + 0x08b9, 0x08d1, 0x08fc, 0x08fc, 0x0914, 0x0920, 0x0960, 0x0981, + 0x09a3, 0x09b8, 0x09c4, 0x09f5, 0x0a07, 0x0a1f, 0x0a41, 0x0a50, + 0x0a59, 0x0a7a, 0x0a98, 0x0aaa, 0x0ab9, 0x0ada, 0x0b0e, 0x0b20, + 0x0bab, 0x0bcc, 0x0bdb, 0x0bf7, 0x0c03, 0x0c31, 0x0c8a, 0x0ca8, + 0x0cc3, 0x0cd5, 0x0ce4, 0x0d0c, 0x0d2a, 0x0d3f, 0x0d57, 0x0d71, + 0x0d83, 0x0de9, 0x0df8, 0x0e04, 0x0e22, 0x0e34, 0x0e46, 0x0e58, + 0x0e70, 0x0e82, 0x0e91, 0x0eaf, 0x0ec4, 0x0ee2, 0x0efa, 0x0f41, // Entry 80 - BF - 0x0fda, 0x0ff2, 0x101a, 0x1038, 0x104a, 0x1059, 0x1078, 0x109f, - 0x10b7, 0x10cc, 0x10de, 0x10f9, 0x1114, 0x112f, 0x113e, 0x1156, - 0x116e, 0x117d, 0x11a1, 0x11c9, 0x11e1, 0x120f, 0x122a, 0x1236, - 0x1260, 0x1275, 0x129a, 0x12d8, 0x12ff, 0x1320, 0x1344, 0x1356, - 0x1371, 0x138f, 0x139e, 0x13bc, 0x13ce, 0x13ef, 0x1401, 0x142c, - 0x1438, 0x1460, 0x1475, 0x1493, 0x14b7, 0x14c6, 0x14db, 0x14e7, - 0x14f9, 0x151a, 0x1526, 0x1532, 0x153e, 0x156f, 0x15a1, 0x15c2, - 0x15e3, 0x15f8, 0x163f, 0x167f, 0x16ad, 0x16e7, 0x1702, 0x1711, + 0x0f5f, 0x0f80, 0x0f98, 0x0fc0, 0x0fde, 0x0ff0, 0x0fff, 0x101e, + 0x1045, 0x105d, 0x1072, 0x1084, 0x109f, 0x10ba, 0x10d5, 0x10e4, + 0x10fc, 0x1114, 0x1123, 0x1147, 0x116f, 0x1187, 0x11b5, 0x11d0, + 0x11dc, 0x1206, 0x121b, 0x1240, 0x127e, 0x12a5, 0x12c6, 0x12ea, + 0x12fc, 0x1317, 0x1335, 0x1344, 0x1362, 0x1374, 0x1395, 0x13a7, + 0x13cf, 0x13db, 0x1403, 0x1418, 0x1436, 0x145a, 0x1469, 0x147e, + 0x148a, 0x149c, 0x14bd, 0x14c9, 0x14d5, 0x14e1, 0x1512, 0x1544, + 0x1565, 0x1586, 0x159b, 0x15e2, 0x1622, 0x1650, 0x168a, 0x16a5, // Entry C0 - FF - 0x1726, 0x1735, 0x1753, 0x176b, 0x1780, 0x1792, 0x179e, 0x17b3, - 0x17d2, 0x17fd, 0x181b, 0x182a, 0x183c, 0x1857, 0x1876, 0x1891, - 0x18cf, 0x18ea, 0x1909, 0x1922, 0x1931, 0x1946, 0x1961, 0x1983, - 0x19c4, 0x19e0, 0x1a0b, 0x1a1a, 0x1a3b, 0x1a64, 0x1abd, 0x1ac9, - 0x1b0d, 0x1b19, 0x1b37, 0x1b5e, 0x1b76, 0x1b9e, 0x1bce, 0x1be3, - 0x1bef, 0x1c04, 0x1c41, 0x1c53, 0x1c6b, 0x1c83, 0x1c9e, 0x1cb0, - 0x1ce9, 0x1d23, 0x1d38, 0x1d65, 0x1d83, 0x1dd6, 0x1df1, 0x1e3b, - 0x1e78, 0x1e96, 0x1eab, 0x1ee9, 0x1ef5, 0x1f07, 0x1f13, 0x1f28, + 0x16b4, 0x16c9, 0x16d8, 0x16f6, 0x170e, 0x1723, 0x1735, 0x1741, + 0x1756, 0x1775, 0x17a0, 0x17b5, 0x17c4, 0x17d6, 0x17f1, 0x1810, + 0x182b, 0x1869, 0x1884, 0x18a3, 0x18bc, 0x18cb, 0x18e0, 0x18f5, + 0x1917, 0x1958, 0x1974, 0x199f, 0x19ae, 0x19cf, 0x19f8, 0x1a51, + 0x1a5d, 0x1aa1, 0x1aad, 0x1acb, 0x1af2, 0x1b0a, 0x1b32, 0x1b62, + 0x1b77, 0x1b83, 0x1b98, 0x1bd5, 0x1be7, 0x1bff, 0x1c17, 0x1c32, + 0x1c44, 0x1c7d, 0x1ca4, 0x1cde, 0x1cf3, 0x1d20, 0x1d3e, 0x1d91, + 0x1dac, 0x1df6, 0x1e33, 0x1e51, 0x1e66, 0x1ea4, 0x1eb0, 0x1ec2, // Entry 100 - 13F - 0x1f52, 0x1f64, 0x1f82, 0x1faa, 0x1fb6, 0x1fce, 0x1ff9, 0x2024, - 0x203c, 0x2067, 0x2091, 0x20bf, 0x20e6, 0x2110, 0x213b, 0x2159, - 0x2184, 0x2199, 0x21bb, 0x21da, 0x220f, 0x223a, 0x2289, 0x22a1, - 0x22db, 0x22f6, 0x2302, 0x2320, 0x233e, 0x2356, 0x2384, 0x23af, - 0x23da, 0x2404, -} // Size: 604 bytes - -var mnRegionStr string = "" + // Size: 5487 bytes - "Аскенсион АралАндорраАрабын Нэгдсэн ЭмиратАфганистанАнтигуа ба БарбудаАн" + - "гилаАлбаниАрменАнголАнтарктикАргентинАмерикийн СамоаАвстриАвстралиАруба" + - "Аландын АрлуудАзербайжанБосни ХерцеговинБарбадосБангладешБелгиБуркина ф" + - "асоБолгарБахрейнБурундиБенинСент БартельмиБермудБрунейБоливиКарибын Нид" + - "ерландБразилБагамБутанБуветын АрлуудБотсванаБеларусБелизКанадКокос (Кий" + - "линг) АрлуудКонго-КиншасаТөв Африкийн Бүгд Найрамдах УлсКонго Браззавил" + - "ьШвейцариКот д’ИвуарКүүкийн АрлуудЧилиКамерунХятадКолумбКлиппертон Арал" + - "Коста РикаКубаКапе ВердеКуракаоЗул Сарын АралКипрБүгд Найрамдах Чех Улс" + - "ГерманДиего ГарсиаДжибутиДаниДоминикБүгд Найрамдах ДоминиканАлжирСеута " + - "ба МелильяЭквадорЭстонЕгипетБаруун СахарЭритриИспаниЭтиопЕвропын Холбоо" + - "ФинландФижиФолькландын АрлуудМикронезиФароэ АрлуудФранцГабонИх БританиГ" + - "ренадаГүржФранцын ГайанаГернсиГанаГибралтарГренландГамбиГвинейГваделупЭ" + - "кваторын ГвинейГрекӨмнөд Жоржиа ба Өмнөд Сэндвичийн АрлуудГватемалГуамГ" + - "виней-БисауГайанаБНХАУ-ын Тусгай захиргааны бүс Хонг КонгХэрд болон Мак" + - "доналд АрлуудГондурасХорватГаитиУнгарКанарын арлуудИндонезиИрландИзраил" + - "ьМэн АралЭнэтхэгБританийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэрүүд" + - "ИракИранИсландИталиЖерсиЯмайкЙорданЯпонКениКыргызстанКамбожКирибатиКомо" + - "росСент-Киттс ба НевисХойд СолонгосӨмнөд СолонгосКувейтКайманы АрлуудКа" + - "захстанЛаосЛиванСент ЛюсиаЛихтенштейнШри ЛанкаЛибериЛесотоЛитваЛюксембу" + - "ргЛатвиЛивиМароккоМонакоМолдавМонтенегроСент-МартинМадагаскарМаршаллын " + - "АрлуудМакедонМалиМьянмар (Бурма)МонголБНХАУ-ын Тусгай захиргааны бүс Ма" + - "каоХойд Марианы АрлуудМартиникМавританиМонтсерратМальтаМавритусМальдивМ" + - "алавиМексикМалайзМозамбикНамибиШинэ КаледониНигерНорфолк АрлуудНигериНи" + - "карагуаНидерландНорвегиБалбаНауруНиуэШинэ ЗеландОманПанамПеруФранцын По" + - "линезПапуа Шинэ ГвинейФилиппинПакистанПольшСэнт Пьер ба МикелонПиткэрн " + - "АрлуудПуэрто РикоПалестины нутаг дэвсгэрүүдПортугалПалауПарагвайКатарНо" + - "мхон далайг тойрсон улс орнуудРеюньонРумынСербиОросРуандаСаудын АрабСол" + - "омоны АрлуудСейшелСуданШведСингапурСент ХеленаСловениСвалбард ба Ян Май" + - "енСловакСьерра-ЛеонеСан-МариноСенегалСомалиСуринамӨмнөд СуданСан-Томе б" + - "а ПринсипиЭль СальвадорСинт МартенСириСвазиландТристан да КуньяТурк ба " + - "Кайкосын АрлуудЧадФранцын өмнөд газар нутагТогоТайландТажикистанТокелау" + - "Тимор-ЛестеТуркменистанТунисТонгаТуркТринидад ба ТобагоТувалуТайванТанз" + - "аниУкрайнУгандаАНУ-ын тойрсон арлуудАмерикийн Нэгдсэн УлсУругвайУзбекис" + - "танВатикан хот улсСэнт Винсэнт ба ГренадинВенесуэлБританийн Виржиний Ар" + - "луудАНУ-ын Виржиний АрлуудВьетнамВануатуУоллис ба ФутунаСамоаКосовоЙеме" + - "нМайоттеӨмнөд Африк тивЗамбиЗимбабвеТодорхойгүйДэлхийАфрикХойд АмерикӨм" + - "нөд АмерикНомхон далайн орнуудБаруун АфрикТөв АмерикЗүүн АфрикХойд Афри" + - "кТөв АфрикӨмнөд АфрикАмерикХойд Америк тивКарибынЗүүн АзиӨмнөд АзиЗүүн " + - "Өмнөд АзиӨмнөд ЕвропАвстралиазиМеланезиМикронезийн бүсПолинезАзиТөв Ази" + - "Баруун АзиЕвропЗүүн ЕвропХойд ЕвропБаруун ЕвропЛатин Америк" - -var mnRegionIdx = []uint16{ // 290 elements + 0x1ece, 0x1ee3, 0x1f0d, 0x1f1f, 0x1f3d, 0x1f65, 0x1f71, 0x1f89, + 0x1fb4, 0x1fdf, 0x1ff7, 0x2022, 0x204c, 0x207a, 0x20a1, 0x20cb, + 0x20f6, 0x2114, 0x213f, 0x2154, 0x2176, 0x2195, 0x21ca, 0x21f5, + 0x2244, 0x225c, 0x2296, 0x22b1, 0x22bd, 0x22db, 0x22f9, 0x2311, + 0x233f, 0x236a, 0x2395, 0x23bf, +} // Size: 608 bytes + +const mnRegionStr string = "" + // Size: 5529 bytes + "Аскенсион аралАндорраАрабын Нэгдсэн ЭмиратАфганистанАнтигуа ба БарбудаАн" + + "гилаАлбаниАрмениАнголАнтарктикАргентинАмерикийн СамоаАвстриАвстралиАруб" + + "аАландын АрлуудАзербайжанБосни ГерцеговинБарбадосБангладешБелгиБуркина " + + "фасоБолгарБахрейнБурундиБенинСент БартельмиБермудБрунейБоливиКарибын Ни" + + "дерландБразилБагамБутанБуветын арлуудБотсванаБеларусьБелизКанадКокос (К" + + "ийлинг) арлуудКонго-КиншасаТөв Африкийн Бүгд Найрамдах УлсКонго Браззав" + + "ильШвейцариКот д’ИвуарКүүкийн арлуудЧилиКамерунХятадКолумбКлиппертон ар" + + "алКоста РикаКубаКапе ВердеКуракаоЗул сарын аралКипрЧехГерманДиего Гарси" + + "аДжибутиДаниДоминикБүгд Найрамдах Доминикан УлсАлжирСеута ба МелильяЭкв" + + "адорЭстониЕгипетБаруун СахарЭритриИспаниЭтиопЕвропын ХолбооФинландФижиФ" + + "олькландын АрлуудМикронезиФароэ АрлуудФранцГабонИх БританиГренадаГүржФр" + + "анцын ГайанаГернсиГанаГибралтарГренландГамбиГвинейГваделупЭкваторын Гви" + + "нейГрекӨмнөд Жоржиа ба Өмнөд Сэндвичийн АрлуудГватемалГуамГвиней-БисауГ" + + "айанаБНХАУ-ын Тусгай захиргааны бүс Хонг КонгХэрд болон Макдоналд арлуу" + + "дГондурасХорватГаитиУнгарКанарын арлуудИндонезиИрландИзраильМэн АралЭнэ" + + "тхэгБританийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэрүүдИракИранИсла" + + "ндИталиЖерсиЯмайкЙорданЯпонКениКыргызстанКамбожКирибатиКоморосСент-Китт" + + "с ба НевисХойд СолонгосӨмнөд СолонгосКувейтКайманы АрлуудКазахстанЛаосЛ" + + "иванСент ЛюсиаЛихтенштейнШри ЛанкаЛибериЛесотоЛитваЛюксембургЛатвиЛивиМ" + + "ароккоМонакоМолдавМонтенегроСент-МартинМадагаскарМаршаллын арлуудМакедо" + + "нМалиМьянмар (Бурма)МонголБНХАУ-ын Тусгай захиргааны бүс МакаоХойд Мари" + + "аны арлуудМартиникМавританиМонтсерратМальтаМавритусМальдивМалавиМексикМ" + + "алайзМозамбикНамибиШинэ КаледониНигерНорфолк арлуудНигериНикарагуаНидер" + + "ландНорвегиБалбаНауруНиуэШинэ ЗеландОманПанамПеруФранцын ПолинезПапуа Ш" + + "инэ ГвинейФилиппинПакистанПольшСэнт Пьер ба МикелонПиткэрн арлуудПуэрто" + + " РикоПалестины нутаг дэвсгэрүүдПортугальПалауПарагвайКатарНомхон далайг " + + "тойрсон улс орнуудРеюньонРумынСербиОросРуандаСаудын АрабСоломоны Арлууд" + + "СейшелСуданШведСингапурСент ХеленаСловениСвалбард ба Ян МайенСловакСьер" + + "ра-ЛеонеСан-МариноСенегалСомалиСуринамӨмнөд СуданСан-Томе ба ПринсипиЭл" + + "ь СальвадорСинт МартенСириСвазиландТристан да КуньяТурк ба Кайкосын Арл" + + "уудЧадФранцын өмнөд газар нутагТогоТайландТажикистанТокелауТимор-ЛестеТ" + + "уркменистанТунисТонгаТуркТринидад ТобагоТувалуТайваньТанзаниУкраинУганд" + + "аАНУ-ын тойрсон арлуудНэгдсэн Үндэстний БайгууллагаАмерикийн Нэгдсэн Ул" + + "сУругвайУзбекистанВатикан хот улсСэнт Винсэнт ба ГренадинВенесуэлБритан" + + "ийн Виржиний АрлуудАНУ-ын Виржиний АрлуудВьетнамВануатуУоллис ба Футуна" + + "СамоаКосовоЙеменМайоттеӨмнөд Африк тивЗамбиЗимбабвеТодорхойгүй бүсДэлхи" + + "йАфрикХойд АмерикӨмнөд АмерикНомхон далайн орнуудБаруун АфрикТөв Америк" + + "Зүүн АфрикХойд АфрикТөв АфрикӨмнөд АфрикАмерикХойд Америк тивКарибынЗүү" + + "н АзиӨмнөд АзиЗүүн өмнөд АзиӨмнөд ЕвропАвстралиазиМеланезиМикронезийн б" + + "үсПолинезиАзиТөв АзиБаруун АзиЕвропЗүүн ЕвропХойд ЕвропБаруун ЕвропЛати" + + "н Америк" + +var mnRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001b, 0x0029, 0x0051, 0x0065, 0x0087, 0x0093, 0x009f, - 0x00a9, 0x00b3, 0x00c5, 0x00d5, 0x00f2, 0x00fe, 0x010e, 0x0118, - 0x0133, 0x0147, 0x0166, 0x0176, 0x0188, 0x0192, 0x01a9, 0x01b5, - 0x01c3, 0x01d1, 0x01db, 0x01f6, 0x0202, 0x020e, 0x021a, 0x023b, - 0x0247, 0x0251, 0x025b, 0x0276, 0x0286, 0x0294, 0x029e, 0x02a8, - 0x02d0, 0x02e9, 0x0323, 0x0342, 0x0352, 0x0368, 0x0383, 0x038b, - 0x0399, 0x03a3, 0x03af, 0x03cc, 0x03df, 0x03e7, 0x03fa, 0x0408, - 0x0422, 0x042a, 0x0453, 0x045f, 0x0476, 0x0484, 0x048c, 0x049a, + 0x00ab, 0x00b5, 0x00c7, 0x00d7, 0x00f4, 0x0100, 0x0110, 0x011a, + 0x0135, 0x0149, 0x0168, 0x0178, 0x018a, 0x0194, 0x01ab, 0x01b7, + 0x01c5, 0x01d3, 0x01dd, 0x01f8, 0x0204, 0x0210, 0x021c, 0x023d, + 0x0249, 0x0253, 0x025d, 0x0278, 0x0288, 0x0298, 0x02a2, 0x02ac, + 0x02d4, 0x02ed, 0x0327, 0x0346, 0x0356, 0x036c, 0x0387, 0x038f, + 0x039d, 0x03a7, 0x03b3, 0x03d0, 0x03e3, 0x03eb, 0x03fe, 0x040c, + 0x0426, 0x042e, 0x0434, 0x0440, 0x0457, 0x0465, 0x046d, 0x047b, // Entry 40 - 7F - 0x04c8, 0x04d2, 0x04f0, 0x04fe, 0x0508, 0x0514, 0x052b, 0x0537, - 0x0543, 0x054d, 0x0568, 0x0576, 0x057e, 0x05a1, 0x05b3, 0x05ca, - 0x05d4, 0x05de, 0x05f1, 0x05ff, 0x0607, 0x0622, 0x062e, 0x0636, - 0x0648, 0x0658, 0x0662, 0x066e, 0x067e, 0x069d, 0x06a5, 0x06ee, - 0x06fe, 0x0706, 0x071d, 0x0729, 0x0773, 0x07a6, 0x07b6, 0x07c2, - 0x07cc, 0x07d6, 0x07f1, 0x0801, 0x080d, 0x081b, 0x082a, 0x0838, - 0x08a0, 0x08a8, 0x08b0, 0x08bc, 0x08c6, 0x08d0, 0x08da, 0x08e6, - 0x08ee, 0x08f6, 0x090a, 0x0916, 0x0926, 0x0934, 0x0957, 0x0970, + 0x04b0, 0x04ba, 0x04d8, 0x04e6, 0x04f2, 0x04fe, 0x0515, 0x0521, + 0x052d, 0x0537, 0x0552, 0x0552, 0x0560, 0x0568, 0x058b, 0x059d, + 0x05b4, 0x05be, 0x05c8, 0x05db, 0x05e9, 0x05f1, 0x060c, 0x0618, + 0x0620, 0x0632, 0x0642, 0x064c, 0x0658, 0x0668, 0x0687, 0x068f, + 0x06d8, 0x06e8, 0x06f0, 0x0707, 0x0713, 0x075d, 0x0790, 0x07a0, + 0x07ac, 0x07b6, 0x07c0, 0x07db, 0x07eb, 0x07f7, 0x0805, 0x0814, + 0x0822, 0x088a, 0x0892, 0x089a, 0x08a6, 0x08b0, 0x08ba, 0x08c4, + 0x08d0, 0x08d8, 0x08e0, 0x08f4, 0x0900, 0x0910, 0x091e, 0x0941, // Entry 80 - BF - 0x098b, 0x0997, 0x09b2, 0x09c4, 0x09cc, 0x09d6, 0x09e9, 0x09ff, - 0x0a10, 0x0a1c, 0x0a28, 0x0a32, 0x0a46, 0x0a50, 0x0a58, 0x0a66, - 0x0a72, 0x0a7e, 0x0a92, 0x0aa7, 0x0abb, 0x0ada, 0x0ae8, 0x0af0, - 0x0b0b, 0x0b17, 0x0b5a, 0x0b7e, 0x0b8e, 0x0ba0, 0x0bb4, 0x0bc0, - 0x0bd0, 0x0bde, 0x0bea, 0x0bf6, 0x0c02, 0x0c12, 0x0c1e, 0x0c37, - 0x0c41, 0x0c5c, 0x0c68, 0x0c7a, 0x0c8c, 0x0c9a, 0x0ca4, 0x0cae, - 0x0cb6, 0x0ccb, 0x0cd3, 0x0cdd, 0x0ce5, 0x0d02, 0x0d22, 0x0d32, - 0x0d42, 0x0d4c, 0x0d71, 0x0d8c, 0x0da1, 0x0dd3, 0x0de3, 0x0ded, + 0x095a, 0x0975, 0x0981, 0x099c, 0x09ae, 0x09b6, 0x09c0, 0x09d3, + 0x09e9, 0x09fa, 0x0a06, 0x0a12, 0x0a1c, 0x0a30, 0x0a3a, 0x0a42, + 0x0a50, 0x0a5c, 0x0a68, 0x0a7c, 0x0a91, 0x0aa5, 0x0ac4, 0x0ad2, + 0x0ada, 0x0af5, 0x0b01, 0x0b44, 0x0b68, 0x0b78, 0x0b8a, 0x0b9e, + 0x0baa, 0x0bba, 0x0bc8, 0x0bd4, 0x0be0, 0x0bec, 0x0bfc, 0x0c08, + 0x0c21, 0x0c2b, 0x0c46, 0x0c52, 0x0c64, 0x0c76, 0x0c84, 0x0c8e, + 0x0c98, 0x0ca0, 0x0cb5, 0x0cbd, 0x0cc7, 0x0ccf, 0x0cec, 0x0d0c, + 0x0d1c, 0x0d2c, 0x0d36, 0x0d5b, 0x0d76, 0x0d8b, 0x0dbd, 0x0dcf, // Entry C0 - FF - 0x0dfd, 0x0e07, 0x0e43, 0x0e51, 0x0e5b, 0x0e65, 0x0e6d, 0x0e79, - 0x0e8e, 0x0eab, 0x0eb7, 0x0ec1, 0x0ec9, 0x0ed9, 0x0eee, 0x0efc, - 0x0f21, 0x0f2d, 0x0f44, 0x0f57, 0x0f65, 0x0f71, 0x0f7f, 0x0f94, - 0x0fb9, 0x0fd2, 0x0fe7, 0x0fef, 0x1001, 0x101f, 0x104a, 0x1050, - 0x107f, 0x1087, 0x1095, 0x10a9, 0x10b7, 0x10cc, 0x10e4, 0x10ee, - 0x10f8, 0x1100, 0x1122, 0x112e, 0x113a, 0x1148, 0x1154, 0x1160, - 0x1187, 0x11af, 0x11bd, 0x11d1, 0x11ed, 0x121a, 0x122a, 0x125a, - 0x1283, 0x1291, 0x129f, 0x12bd, 0x12c7, 0x12d3, 0x12dd, 0x12eb, + 0x0dd9, 0x0de9, 0x0df3, 0x0e2f, 0x0e3d, 0x0e47, 0x0e51, 0x0e59, + 0x0e65, 0x0e7a, 0x0e97, 0x0ea3, 0x0ead, 0x0eb5, 0x0ec5, 0x0eda, + 0x0ee8, 0x0f0d, 0x0f19, 0x0f30, 0x0f43, 0x0f51, 0x0f5d, 0x0f6b, + 0x0f80, 0x0fa5, 0x0fbe, 0x0fd3, 0x0fdb, 0x0fed, 0x100b, 0x1036, + 0x103c, 0x106b, 0x1073, 0x1081, 0x1095, 0x10a3, 0x10b8, 0x10d0, + 0x10da, 0x10e4, 0x10ec, 0x1109, 0x1115, 0x1123, 0x1131, 0x113d, + 0x1149, 0x1170, 0x11a8, 0x11d0, 0x11de, 0x11f2, 0x120e, 0x123b, + 0x124b, 0x127b, 0x12a4, 0x12b2, 0x12c0, 0x12de, 0x12e8, 0x12f4, // Entry 100 - 13F - 0x1307, 0x1311, 0x1321, 0x1337, 0x1343, 0x134d, 0x1362, 0x1379, - 0x139f, 0x13b6, 0x13c9, 0x13dc, 0x13ef, 0x1400, 0x1415, 0x1421, - 0x143d, 0x144b, 0x145a, 0x146b, 0x1485, 0x149a, 0x14b0, 0x14c0, - 0x14dd, 0x14eb, 0x14f1, 0x14fe, 0x1511, 0x151b, 0x152e, 0x1541, - 0x1558, 0x156f, -} // Size: 604 bytes - -var mrRegionStr string = "" + // Size: 8435 bytes + 0x12fe, 0x130c, 0x1328, 0x1332, 0x1342, 0x135f, 0x136b, 0x1375, + 0x138a, 0x13a1, 0x13c7, 0x13de, 0x13f1, 0x1404, 0x1417, 0x1428, + 0x143d, 0x1449, 0x1465, 0x1473, 0x1482, 0x1493, 0x14ad, 0x14c2, + 0x14d8, 0x14e8, 0x1505, 0x1515, 0x151b, 0x1528, 0x153b, 0x1545, + 0x1558, 0x156b, 0x1582, 0x1599, +} // Size: 608 bytes + +const mrRegionStr string = "" + // Size: 8450 bytes "अ\u200dॅसेन्शियन बेटअँडोरासंयुक्त अरब अमीरातअफगाणिस्तानअँटिग्वा आणि बर्ब" + "ुडाअँग्विलाअल्बानियाअर्मेनियाअंगोलाअंटार्क्टिकाअर्जेंटिनाअमेरिकन सामोआ" + "ऑस्ट्रियाऑस्ट्रेलियाअरुबाअ\u200dॅलँड बेटेअझरबैजानबोस्निया अणि हर्जेगोव" + @@ -41951,42 +47052,42 @@ var mrRegionStr string = "" + // Size: 8435 bytes "ूतानबोउवेट बेटबोट्सवानाबेलारूसबलिझकॅनडाकोकोस (कीलिंग) बेटेकाँगो - किंश" + "ासाकेंद्रीय अफ्रिकी प्रजासत्ताककाँगो - ब्राझाविलेस्वित्झर्लंडआयव्हरी क" + "ोस्टकुक बेटेचिलीकॅमेरूनचीनकोलम्बियाक्लिपरटोन बेटकोस्टा रिकाक्यूबाकेप व" + - "्हर्डेक्युरासाओख्रिसमस बेटसायप्रसझेक प्रजासत्ताकजर्मनीदिएगो गार्सियाजि" + - "बौटीडेन्मार्कडोमिनिकाडोमिनिकन प्रजासत्ताकअल्जीरियास्यूटा आणि मेलिलाइक्" + - "वाडोरएस्टोनियाइजिप्तपश्चिम सहाराएरिट्रियास्पेनइथिओपियायुरोपीय संघफिनलं" + - "डफिजीफॉकलंड बेटेमायक्रोनेशियाफेरो बेटेफ्रान्सगॅबॉनयुनायटेड किंगडमग्रेन" + - "ेडाजॉर्जियाफ्रेंच गयानाग्वेर्नसेघानाजिब्राल्टरग्रीनलंडगाम्बियागिनीग्वा" + - "डेलोउपेइक्वेटोरियल गिनीग्रीसदक्षिण जॉर्जिया आणि दक्षिण सँडविच बेटेग्वा" + - "टेमालागुआमगिनी-बिसाउगयानाहाँगकाँग एसएआर चीनहर्ड आणि मॅक्डोनाल्ड बेटेहो" + - "ंडुरासक्रोएशियाहैतीहंगेरीकॅनरी बेटेइंडोनेशियाआयर्लंडइस्त्राइलइस्ले ऑफ " + - "मॅनभारतब्रिटिश हिंदी महासागर क्षेत्रइराकइराणआइसलँडइटलीजर्सीजमैकाजॉर्डन" + - "जपानकेनियाकिरगिझस्तानकंबोडियाकिरीबाटीकोमोरोजसेंट किट्स आणि नेव्हिसउत्त" + - "र कोरियादक्षिण कोरियाकुवेतकेमन बेटेकझाकस्तानलाओसलेबनॉनसेंट ल्यूसियालिक" + - "्टेनस्टाइनश्रीलंकालायबेरियालेसोथोलिथुआनियालक्झेंबर्गलात्वियालिबियामोरो" + - "क्कोमोनॅकोमोल्डोव्हामोंटेनेग्रोसेंट मार्टिनमादागास्करमार्शल बेटेमॅसेडो" + - "नियामालीम्यानमार (बर्मा)मंगोलियामकाओ एसएआर चीनउत्तरी मारियाना बेटेमार्" + - "टिनिकमॉरिटानियामॉन्ट्सेराटमाल्टामॉरिशसमालदीवमलावीमेक्सिकोमलेशियामोझाम्" + - "बिकनामिबियान्यू कॅलेडोनियानाइजरनॉरफॉक बेटनायजेरियानिकाराग्वानेदरलँडनॉर" + - "्वेनेपाळनाउरूनीयून्यूझीलंडओमानपनामापेरूफ्रेंच पॉलिनेशियापापुआ न्यू गिन" + - "ीफिलिपिन्सपाकिस्तानपोलंडसेंट पियरे आणि मिक्वेलोनपिटकैर्न बेटेप्युएर्तो" + - " रिकोपॅलेस्टिनियन प्रदेशपोर्तुगालपलाऊपराग्वेकतारआउटलाईंग ओशनियारियुनियनर" + - "ोमानियासर्बियारशियारवांडासौदी अरबसोलोमन बेटेसेशेल्ससुदानस्वीडनसिंगापूर" + - "सेंट हेलेनास्लोव्हेनियास्वालबर्ड आणि जान मायेनस्लोव्हाकियासिएरा लिओनसॅ" + - "न मरीनोसेनेगलसोमालियासुरिनामदक्षिण सुदानसाओ टोम आणि प्रिंसिपेअल साल्वा" + - "डोरसिंट मार्टेनसीरियास्वाझिलँडट्रिस्टन दा कुन्हाटर्क्स आणि कैकोस बेटेच" + - "ाडफ्रेंच दाक्षिणात्य प्रदेशटोगोथायलंडताजिकिस्तानतोकेलाउपूर्व तिमोरतुर्" + - "कमेनिस्तानट्यूनिशियाटोंगातुर्कीत्रिनिदाद आणि टोबॅगोटुवालुतैवानटांझानिय" + - "ायुक्रेनयुगांडायू.एस. आउटलाइंग बेटेयुनायटेड स्टेट्सउरुग्वेउझबेकिस्तानव" + - "्हॅटिकन सिटीसेंट व्हिन्सेंट आणि ग्रेनडाइन्सव्हेनेझुएलाब्रिटिश व्हर्जिन" + - " बेटेयू.एस. व्हर्जिन बेटेव्हिएतनामवानुआतुवालिस आणि फ्यूचूनासामोआकोसोव्हो" + - "येमेनमायोट्टेदक्षिण आफ्रिकाझाम्बियाझिम्बाब्वेअज्ञात प्रदेशविश्वआफ्रिका" + - "उत्तर अमेरिकादक्षिण अमेरिकाओशनियापश्चिम आफ्रिकामध्य अमेरिकापूर्व आफ्रि" + - "काउत्तर आफ्रिकामध्य आफ्रिकादक्षिणी आफ्रिकाअमेरिकाउत्तरी अमेरिकाकॅरीबिय" + - "नपूर्व आशियादक्षिण आशियादक्षिण पूर्व आशियादक्षिण युरोपऑस्\u200dट्रेलेश" + - "ियामेलानेशियामायक्रोनेशियन प्रदेशपॉलिनेशियाअशियामध्य आशियापश्चिम आशिया" + - "युरोपपूर्व युरोपउत्तर युरोपपश्चिम युरोपलॅटिन अमेरिका" - -var mrRegionIdx = []uint16{ // 290 elements + "्हर्डेक्युरासाओख्रिसमस बेटसायप्रसझेकियाजर्मनीदिएगो गार्सियाजिबौटीडेन्म" + + "ार्कडोमिनिकाडोमिनिकन प्रजासत्ताकअल्जीरियास्यूटा आणि मेलिलाइक्वाडोरएस्ट" + + "ोनियाइजिप्तपश्चिम सहाराएरिट्रियास्पेनइथिओपियायुरोपीय संघफिनलंडफिजीफॉकल" + + "ंड बेटेमायक्रोनेशियाफेरो बेटेफ्रान्सगॅबॉनयुनायटेड किंगडमग्रेनेडाजॉर्जि" + + "याफ्रेंच गयानाग्वेर्नसेघानाजिब्राल्टरग्रीनलंडगाम्बियागिनीग्वाडेलोउपेइक" + + "्वेटोरियल गिनीग्रीसदक्षिण जॉर्जिया आणि दक्षिण सँडविच बेटेग्वाटेमालागुआ" + + "मगिनी-बिसाउगयानाहाँगकाँग एसएआर चीनहर्ड आणि मॅक्डोनाल्ड बेटेहोंडुरासक्र" + + "ोएशियाहैतीहंगेरीकॅनरी बेटेइंडोनेशियाआयर्लंडइस्त्राइलआयल ऑफ मॅनभारतब्रि" + + "टिश हिंदी महासागर क्षेत्रइराकइराणआइसलँडइटलीजर्सीजमैकाजॉर्डनजपानकेनियाक" + + "िरगिझस्तानकंबोडियाकिरीबाटीकोमोरोजसेंट किट्स आणि नेव्हिसउत्तर कोरियादक्" + + "षिण कोरियाकुवेतकेमन बेटेकझाकस्तानलाओसलेबनॉनसेंट ल्यूसियालिक्टेनस्टाइनश" + + "्रीलंकालायबेरियालेसोथोलिथुआनियालक्झेंबर्गलात्वियालिबियामोरोक्कोमोनॅकोम" + + "ोल्डोव्हामोंटेनेग्रोसेंट मार्टिनमादागास्करमार्शल बेटेमॅसेडोनियामालीम्य" + + "ानमार (बर्मा)मंगोलियामकाओ एसएआर चीनउत्तरी मारियाना बेटेमार्टिनिकमॉरिटा" + + "नियामॉन्ट्सेराटमाल्टामॉरिशसमालदीवमलावीमेक्सिकोमलेशियामोझाम्बिकनामिबिया" + + "न्यू कॅलेडोनियानाइजरनॉरफॉक बेटनायजेरियानिकाराग्वानेदरलँडनॉर्वेनेपाळनाउ" + + "रूनीयून्यूझीलंडओमानपनामापेरूफ्रेंच पॉलिनेशियापापुआ न्यू गिनीफिलिपिन्सप" + + "ाकिस्तानपोलंडसेंट पियरे आणि मिक्वेलोनपिटकैर्न बेटेप्युएर्तो रिकोपॅलेस्" + + "टिनियन प्रदेशपोर्तुगालपलाऊपराग्वेकतारआउटलाईंग ओशनियारियुनियनरोमानियासर" + + "्बियारशियारवांडासौदी अरबसोलोमन बेटेसेशेल्ससुदानस्वीडनसिंगापूरसेंट हेले" + + "नास्लोव्हेनियास्वालबर्ड आणि जान मायेनस्लोव्हाकियासिएरा लिओनसॅन मरीनोसे" + + "नेगलसोमालियासुरिनामदक्षिण सुदानसाओ टोम आणि प्रिंसिपेअल साल्वाडोरसिंट म" + + "ार्टेनसीरियास्वाझिलँडट्रिस्टन दा कुन्हाटर्क्स आणि कैकोस बेटेचाडफ्रेंच " + + "दाक्षिणात्य प्रदेशटोगोथायलंडताजिकिस्तानतोकेलाउतिमोर-लेस्तेतुर्कमेनिस्त" + + "ानट्यूनिशियाटोंगातुर्कीत्रिनिदाद आणि टोबॅगोटुवालुतैवानटांझानियायुक्रेन" + + "युगांडायू.एस. आउटलाइंग बेटेसंयुक्त राष्ट्रयुनायटेड स्टेट्सउरुग्वेउझबेक" + + "िस्तानव्हॅटिकन सिटीसेंट व्हिन्सेंट आणि ग्रेनडाइन्सव्हेनेझुएलाब्रिटिश व" + + "्हर्जिन बेटेयू.एस. व्हर्जिन बेटेव्हिएतनामवानुआतुवालिस आणि फ्यूचूनासामो" + + "आकोसोव्होयेमेनमायोट्टेदक्षिण आफ्रिकाझाम्बियाझिम्बाब्वेअज्ञात प्रदेशविश" + + "्वआफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओशनियापश्चिम आफ्रिकामध्य अमेरिकापू" + + "र्व आफ्रिकाउत्तर आफ्रिकामध्य आफ्रिकादक्षिणी आफ्रिकाअमेरिकाउत्तरी अमेरि" + + "काकॅरीबियनपूर्व आशियादक्षिण आशियादक्षिण पूर्व आशियादक्षिण युरोपऑस्" + + "\u200dट्रेलेशियामेलानेशियामायक्रोनेशियन प्रदेशपॉलिनेशियाअशियामध्य आशियाप" + + "श्चिम आशियायुरोपपूर्व युरोपउत्तर युरोपपश्चिम युरोपलॅटिन अमेरिका" + +var mrRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x002b, 0x003d, 0x006f, 0x0090, 0x00c8, 0x00e0, 0x00fb, 0x0116, 0x0128, 0x014c, 0x016a, 0x018f, 0x01aa, 0x01cb, 0x01da, @@ -41995,43 +47096,43 @@ var mrRegionIdx = []uint16{ // 290 elements 0x03d5, 0x03e7, 0x03f6, 0x0412, 0x042d, 0x0442, 0x044e, 0x045d, 0x048e, 0x04b5, 0x0505, 0x0535, 0x0559, 0x057e, 0x0594, 0x05a0, 0x05b5, 0x05be, 0x05d9, 0x05fe, 0x061d, 0x062f, 0x064e, 0x0669, - 0x0688, 0x069d, 0x06c8, 0x06da, 0x0702, 0x0714, 0x072f, 0x0747, + 0x0688, 0x069d, 0x06af, 0x06c1, 0x06e9, 0x06fb, 0x0716, 0x072e, // Entry 40 - 7F - 0x0781, 0x079c, 0x07cb, 0x07e3, 0x07fe, 0x0810, 0x0832, 0x084d, - 0x085c, 0x0874, 0x0893, 0x08a5, 0x08b1, 0x08d0, 0x08f7, 0x0910, - 0x0925, 0x0934, 0x095f, 0x0977, 0x098f, 0x09b1, 0x09cc, 0x09d8, - 0x09f6, 0x0a0e, 0x0a26, 0x0a32, 0x0a53, 0x0a81, 0x0a90, 0x0af8, - 0x0b16, 0x0b22, 0x0b3e, 0x0b4d, 0x0b7f, 0x0bc4, 0x0bdc, 0x0bf7, - 0x0c03, 0x0c15, 0x0c31, 0x0c4f, 0x0c64, 0x0c7f, 0x0c9f, 0x0cab, - 0x0cfc, 0x0d08, 0x0d14, 0x0d26, 0x0d32, 0x0d41, 0x0d50, 0x0d62, - 0x0d6e, 0x0d80, 0x0da1, 0x0db9, 0x0dd1, 0x0de6, 0x0e22, 0x0e44, + 0x0768, 0x0783, 0x07b2, 0x07ca, 0x07e5, 0x07f7, 0x0819, 0x0834, + 0x0843, 0x085b, 0x087a, 0x087a, 0x088c, 0x0898, 0x08b7, 0x08de, + 0x08f7, 0x090c, 0x091b, 0x0946, 0x095e, 0x0976, 0x0998, 0x09b3, + 0x09bf, 0x09dd, 0x09f5, 0x0a0d, 0x0a19, 0x0a3a, 0x0a68, 0x0a77, + 0x0adf, 0x0afd, 0x0b09, 0x0b25, 0x0b34, 0x0b66, 0x0bab, 0x0bc3, + 0x0bde, 0x0bea, 0x0bfc, 0x0c18, 0x0c36, 0x0c4b, 0x0c66, 0x0c80, + 0x0c8c, 0x0cdd, 0x0ce9, 0x0cf5, 0x0d07, 0x0d13, 0x0d22, 0x0d31, + 0x0d43, 0x0d4f, 0x0d61, 0x0d82, 0x0d9a, 0x0db2, 0x0dc7, 0x0e03, // Entry 80 - BF - 0x0e69, 0x0e78, 0x0e91, 0x0eac, 0x0eb8, 0x0eca, 0x0eef, 0x0f16, - 0x0f2e, 0x0f49, 0x0f5b, 0x0f76, 0x0f94, 0x0fac, 0x0fbe, 0x0fd6, - 0x0fe8, 0x1006, 0x1027, 0x1049, 0x1067, 0x1086, 0x10a4, 0x10b0, - 0x10da, 0x10f2, 0x1118, 0x1150, 0x116b, 0x1189, 0x11aa, 0x11bc, - 0x11ce, 0x11e0, 0x11ef, 0x1207, 0x121c, 0x1237, 0x124f, 0x127a, - 0x1289, 0x12a5, 0x12c0, 0x12de, 0x12f3, 0x1305, 0x1314, 0x1323, - 0x132f, 0x134a, 0x1356, 0x1365, 0x1371, 0x13a2, 0x13cb, 0x13e6, - 0x1401, 0x1410, 0x1452, 0x1477, 0x149f, 0x14d6, 0x14f1, 0x14fd, + 0x0e25, 0x0e4a, 0x0e59, 0x0e72, 0x0e8d, 0x0e99, 0x0eab, 0x0ed0, + 0x0ef7, 0x0f0f, 0x0f2a, 0x0f3c, 0x0f57, 0x0f75, 0x0f8d, 0x0f9f, + 0x0fb7, 0x0fc9, 0x0fe7, 0x1008, 0x102a, 0x1048, 0x1067, 0x1085, + 0x1091, 0x10bb, 0x10d3, 0x10f9, 0x1131, 0x114c, 0x116a, 0x118b, + 0x119d, 0x11af, 0x11c1, 0x11d0, 0x11e8, 0x11fd, 0x1218, 0x1230, + 0x125b, 0x126a, 0x1286, 0x12a1, 0x12bf, 0x12d4, 0x12e6, 0x12f5, + 0x1304, 0x1310, 0x132b, 0x1337, 0x1346, 0x1352, 0x1383, 0x13ac, + 0x13c7, 0x13e2, 0x13f1, 0x1433, 0x1458, 0x1480, 0x14b7, 0x14d2, // Entry C0 - FF - 0x1512, 0x151e, 0x1549, 0x1561, 0x1579, 0x158e, 0x159d, 0x15af, - 0x15c5, 0x15e4, 0x15f9, 0x1608, 0x161a, 0x1632, 0x1651, 0x1675, - 0x16b4, 0x16d8, 0x16f4, 0x170d, 0x171f, 0x1737, 0x174c, 0x176e, - 0x17a7, 0x17c9, 0x17eb, 0x17fd, 0x1818, 0x184a, 0x1883, 0x188c, - 0x18d3, 0x18df, 0x18f1, 0x1912, 0x1927, 0x1946, 0x1970, 0x198e, - 0x199d, 0x19af, 0x19e7, 0x19f9, 0x1a08, 0x1a23, 0x1a38, 0x1a4d, - 0x1a81, 0x1aaf, 0x1ac4, 0x1ae5, 0x1b0a, 0x1b61, 0x1b82, 0x1bbd, - 0x1bf1, 0x1c0c, 0x1c21, 0x1c53, 0x1c62, 0x1c7a, 0x1c89, 0x1ca1, + 0x14de, 0x14f3, 0x14ff, 0x152a, 0x1542, 0x155a, 0x156f, 0x157e, + 0x1590, 0x15a6, 0x15c5, 0x15da, 0x15e9, 0x15fb, 0x1613, 0x1632, + 0x1656, 0x1695, 0x16b9, 0x16d5, 0x16ee, 0x1700, 0x1718, 0x172d, + 0x174f, 0x1788, 0x17aa, 0x17cc, 0x17de, 0x17f9, 0x182b, 0x1864, + 0x186d, 0x18b4, 0x18c0, 0x18d2, 0x18f3, 0x1908, 0x192a, 0x1954, + 0x1972, 0x1981, 0x1993, 0x19cb, 0x19dd, 0x19ec, 0x1a07, 0x1a1c, + 0x1a31, 0x1a65, 0x1a90, 0x1abe, 0x1ad3, 0x1af4, 0x1b19, 0x1b70, + 0x1b91, 0x1bcc, 0x1c00, 0x1c1b, 0x1c30, 0x1c62, 0x1c71, 0x1c89, // Entry 100 - 13F - 0x1cc9, 0x1ce1, 0x1cff, 0x1d24, 0x1d33, 0x1d48, 0x1d6d, 0x1d95, - 0x1da7, 0x1dcf, 0x1df1, 0x1e16, 0x1e3b, 0x1e5d, 0x1e88, 0x1e9d, - 0x1ec5, 0x1edd, 0x1efc, 0x1f1e, 0x1f50, 0x1f72, 0x1f9c, 0x1fba, - 0x1ff4, 0x2012, 0x2021, 0x203d, 0x205f, 0x206e, 0x208d, 0x20ac, - 0x20ce, 0x20f3, -} // Size: 604 bytes - -var msRegionStr string = "" + // Size: 2946 bytes + 0x1c98, 0x1cb0, 0x1cd8, 0x1cf0, 0x1d0e, 0x1d33, 0x1d42, 0x1d57, + 0x1d7c, 0x1da4, 0x1db6, 0x1dde, 0x1e00, 0x1e25, 0x1e4a, 0x1e6c, + 0x1e97, 0x1eac, 0x1ed4, 0x1eec, 0x1f0b, 0x1f2d, 0x1f5f, 0x1f81, + 0x1fab, 0x1fc9, 0x2003, 0x2021, 0x2030, 0x204c, 0x206e, 0x207d, + 0x209c, 0x20bb, 0x20dd, 0x2102, +} // Size: 608 bytes + +const msRegionStr string = "" + // Size: 2960 bytes "Pulau AscensionAndorraEmiriah Arab BersatuAfghanistanAntigua dan Barbuda" + "AnguillaAlbaniaArmeniaAngolaAntartikaArgentinaSamoa AmerikaAustriaAustra" + "liaArubaKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbadosBanglades" + @@ -42040,41 +47141,42 @@ var msRegionStr string = "" + // Size: 2946 bytes "usBelizeKanadaKepulauan Cocos (Keeling)Congo - KinshasaRepublik Afrika T" + "engahCongo - BrazzavilleSwitzerlandCote d’IvoireKepulauan CookChileCamer" + "oonChinaColombiaPulau ClippertonCosta RicaCubaCape VerdeCuracaoPulau Kri" + - "smasCyprusRepublik CzechJermanDiego GarciaDjiboutiDenmarkDominicaRepubli" + - "k DominicaAlgeriaCeuta dan MelillaEcuadorEstoniaMesirSahara BaratEritrea" + - "SepanyolEthiopiaKesatuan EropahFinlandFijiKepulauan FalklandMicronesiaKe" + - "pulauan FaroePerancisGabonUnited KingdomGrenadaGeorgiaGuiana PerancisGue" + - "rnseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeGuinea KhatulistiwaGre" + - "eceKepulauan Georgia Selatan & Sandwich SelatanGuatemalaGuamGuinea Bissa" + - "uGuyanaHong Kong SAR ChinaKepulauan Heard & McDonaldHondurasCroatiaHaiti" + - "HungaryKepulauan CanaryIndonesiaIrelandIsraelIsle of ManIndiaWilayah Lau" + - "tan Hindi BritishIraqIranIcelandItaliJerseyJamaicaJordanJepunKenyaKyrgyz" + - "stanKembojaKiribatiComorosSaint Kitts dan NevisKorea UtaraKorea SelatanK" + - "uwaitKepulauan CaymanKazakhstanLaosLubnanSaint LuciaLiechtensteinSri Lan" + - "kaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMaghribiMonacoMoldovaMonte" + - "negroSaint MartinMadagaskarKepulauan MarshallMacedoniaMaliMyanmar (Burma" + - ")MongoliaMacau SAR ChinaKepulauan Mariana UtaraMartiniqueMauritaniaMonts" + - "erratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew Cale" + - "doniaNigerPulau NorfolkNigeriaNicaraguaBelandaNorwayNepalNauruNiueNew Ze" + - "alandOmanPanamaPeruPolinesia PerancisPapua New GuineaFilipinaPakistanPol" + - "andSaint Pierre dan MiquelonKepulauan PitcairnPuerto RicoWilayah Palesti" + - "nPortugalPalauParaguayQatarOceania TerpencilReunionRomaniaSerbiaRusiaRwa" + - "ndaArab SaudiKepulauan SolomonSeychellesSudanSwedenSingapuraSaint Helena" + - "SloveniaSvalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomal" + - "iaSurinamSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSyriaS" + - "wazilandTristan da CunhaKepulauan Turks dan CaicosChadWilayah Selatan Pe" + - "rancisTogoThailandTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTu" + - "rkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkraineUgandaKepulauan Terpenc" + - "il A.S.Amerika SyarikatUruguayUzbekistanKota VaticanSaint Vincent dan Gr" + - "enadinesVenezuelaKepulauan Virgin BritishKepulauan Virgin A.S.VietnamVan" + - "uatuWallis dan FutunaSamoaKosovoYamanMayotteAfrika SelatanZambiaZimbabwe" + - "Wilayah Tidak DiketahuiDuniaAfrikaAmerika UtaraAmerika SelatanOceaniaAfr" + - "ika BaratAmerika TengahAfrika TimurAfrika UtaraAfrika TengahSelatan Afri" + - "kaAmerikaUtara AmerikaCaribbeanAsia TimurAsia SelatanAsia TenggaraEropah" + - " SelatanAustralasiaMelanesiaWilayah MikronesiaPolinesiaAsiaAsia TengahAs" + - "ia BaratEropahEropah TimurEropah UtaraEropah BaratAmerika Latin" - -var msRegionIdx = []uint16{ // 290 elements + "smasCyprusCzechiaJermanDiego GarciaDjiboutiDenmarkDominicaRepublik Domin" + + "icaAlgeriaCeuta dan MelillaEcuadorEstoniaMesirSahara BaratEritreaSepanyo" + + "lEthiopiaKesatuan EropahFinlandFijiKepulauan FalklandMicronesiaKepulauan" + + " FaroePerancisGabonUnited KingdomGrenadaGeorgiaGuiana PerancisGuernseyGh" + + "anaGibraltarGreenlandGambiaGuineaGuadeloupeGuinea KhatulistiwaGreeceKepu" + + "lauan Georgia Selatan & Sandwich SelatanGuatemalaGuamGuinea BissauGuyana" + + "Hong Kong SAR ChinaKepulauan Heard & McDonaldHondurasCroatiaHaitiHungary" + + "Kepulauan CanaryIndonesiaIrelandIsraelIsle of ManIndiaWilayah Lautan Hin" + + "di BritishIraqIranIcelandItaliJerseyJamaicaJordanJepunKenyaKyrgyzstanKem" + + "bojaKiribatiComorosSaint Kitts dan NevisKorea UtaraKorea SelatanKuwaitKe" + + "pulauan CaymanKazakhstanLaosLubnanSaint LuciaLiechtensteinSri LankaLiber" + + "iaLesothoLithuaniaLuxembourgLatviaLibyaMaghribiMonacoMoldovaMontenegroSa" + + "int MartinMadagaskarKepulauan MarshallMacedoniaMaliMyanmar (Burma)Mongol" + + "iaMacau SAR ChinaKepulauan Mariana UtaraMartiniqueMauritaniaMontserratMa" + + "ltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNi" + + "gerPulau NorfolkNigeriaNicaraguaBelandaNorwayNepalNauruNiueNew ZealandOm" + + "anPanamaPeruPolinesia PerancisPapua New GuineaFilipinaPakistanPolandSain" + + "t Pierre dan MiquelonKepulauan PitcairnPuerto RicoWilayah PalestinPortug" + + "alPalauParaguayQatarOceania TerpencilReunionRomaniaSerbiaRusiaRwandaArab" + + " SaudiKepulauan SolomonSeychellesSudanSwedenSingapuraSaint HelenaSloveni" + + "aSvalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurin" + + "amSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSyriaSwazilan" + + "dTristan da CunhaKepulauan Turks dan CaicosChadWilayah Selatan PerancisT" + + "ogoThailandTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTurkiTrin" + + "idad dan TobagoTuvaluTaiwanTanzaniaUkraineUgandaKepulauan Terpencil A.S." + + "Bangsa-bangsa BersatuAmerika SyarikatUruguayUzbekistanKota VaticanSaint " + + "Vincent dan GrenadinesVenezuelaKepulauan Virgin BritishKepulauan Virgin " + + "A.S.VietnamVanuatuWallis dan FutunaSamoaKosovoYamanMayotteAfrika Selatan" + + "ZambiaZimbabweWilayah Tidak DiketahuiDuniaAfrikaAmerika UtaraAmerika Sel" + + "atanOceaniaAfrika BaratAmerika TengahAfrika TimurAfrika UtaraAfrika Teng" + + "ahSelatan AfrikaAmerikaUtara AmerikaCaribbeanAsia TimurAsia SelatanAsia " + + "TenggaraEropah SelatanAustralasiaMelanesiaWilayah MikronesiaPolinesiaAsi" + + "aAsia TengahAsia BaratEropahEropah TimurEropah UtaraEropah BaratAmerika " + + "Latin" + +var msRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0016, 0x002a, 0x0035, 0x0048, 0x0050, 0x0057, 0x005e, 0x0064, 0x006d, 0x0076, 0x0083, 0x008a, 0x0093, 0x0098, @@ -42083,231 +47185,229 @@ var msRegionIdx = []uint16{ // 290 elements 0x0143, 0x014a, 0x0150, 0x015c, 0x0164, 0x016b, 0x0171, 0x0177, 0x0190, 0x01a0, 0x01b6, 0x01c9, 0x01d4, 0x01e3, 0x01f1, 0x01f6, 0x01fe, 0x0203, 0x020b, 0x021b, 0x0225, 0x0229, 0x0233, 0x023a, - 0x0247, 0x024d, 0x025b, 0x0261, 0x026d, 0x0275, 0x027c, 0x0284, + 0x0247, 0x024d, 0x0254, 0x025a, 0x0266, 0x026e, 0x0275, 0x027d, // Entry 40 - 7F - 0x0295, 0x029c, 0x02ad, 0x02b4, 0x02bb, 0x02c0, 0x02cc, 0x02d3, - 0x02db, 0x02e3, 0x02f2, 0x02f9, 0x02fd, 0x030f, 0x0319, 0x0328, - 0x0330, 0x0335, 0x0343, 0x034a, 0x0351, 0x0360, 0x0368, 0x036d, - 0x0376, 0x037f, 0x0385, 0x038b, 0x0395, 0x03a8, 0x03ae, 0x03da, - 0x03e3, 0x03e7, 0x03f4, 0x03fa, 0x040d, 0x0427, 0x042f, 0x0436, - 0x043b, 0x0442, 0x0452, 0x045b, 0x0462, 0x0468, 0x0473, 0x0478, - 0x0494, 0x0498, 0x049c, 0x04a3, 0x04a8, 0x04ae, 0x04b5, 0x04bb, - 0x04c0, 0x04c5, 0x04cf, 0x04d6, 0x04de, 0x04e5, 0x04fa, 0x0505, + 0x028e, 0x0295, 0x02a6, 0x02ad, 0x02b4, 0x02b9, 0x02c5, 0x02cc, + 0x02d4, 0x02dc, 0x02eb, 0x02eb, 0x02f2, 0x02f6, 0x0308, 0x0312, + 0x0321, 0x0329, 0x032e, 0x033c, 0x0343, 0x034a, 0x0359, 0x0361, + 0x0366, 0x036f, 0x0378, 0x037e, 0x0384, 0x038e, 0x03a1, 0x03a7, + 0x03d3, 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x0406, 0x0420, 0x0428, + 0x042f, 0x0434, 0x043b, 0x044b, 0x0454, 0x045b, 0x0461, 0x046c, + 0x0471, 0x048d, 0x0491, 0x0495, 0x049c, 0x04a1, 0x04a7, 0x04ae, + 0x04b4, 0x04b9, 0x04be, 0x04c8, 0x04cf, 0x04d7, 0x04de, 0x04f3, // Entry 80 - BF - 0x0512, 0x0518, 0x0528, 0x0532, 0x0536, 0x053c, 0x0547, 0x0554, - 0x055d, 0x0564, 0x056b, 0x0574, 0x057e, 0x0584, 0x0589, 0x0591, - 0x0597, 0x059e, 0x05a8, 0x05b4, 0x05be, 0x05d0, 0x05d9, 0x05dd, - 0x05ec, 0x05f4, 0x0603, 0x061a, 0x0624, 0x062e, 0x0638, 0x063d, - 0x0646, 0x064e, 0x0654, 0x065a, 0x0662, 0x066c, 0x0673, 0x0680, - 0x0685, 0x0692, 0x0699, 0x06a2, 0x06a9, 0x06af, 0x06b4, 0x06b9, - 0x06bd, 0x06c8, 0x06cc, 0x06d2, 0x06d6, 0x06e8, 0x06f8, 0x0700, - 0x0708, 0x070e, 0x0727, 0x0739, 0x0744, 0x0754, 0x075c, 0x0761, + 0x04fe, 0x050b, 0x0511, 0x0521, 0x052b, 0x052f, 0x0535, 0x0540, + 0x054d, 0x0556, 0x055d, 0x0564, 0x056d, 0x0577, 0x057d, 0x0582, + 0x058a, 0x0590, 0x0597, 0x05a1, 0x05ad, 0x05b7, 0x05c9, 0x05d2, + 0x05d6, 0x05e5, 0x05ed, 0x05fc, 0x0613, 0x061d, 0x0627, 0x0631, + 0x0636, 0x063f, 0x0647, 0x064d, 0x0653, 0x065b, 0x0665, 0x066c, + 0x0679, 0x067e, 0x068b, 0x0692, 0x069b, 0x06a2, 0x06a8, 0x06ad, + 0x06b2, 0x06b6, 0x06c1, 0x06c5, 0x06cb, 0x06cf, 0x06e1, 0x06f1, + 0x06f9, 0x0701, 0x0707, 0x0720, 0x0732, 0x073d, 0x074d, 0x0755, // Entry C0 - FF - 0x0769, 0x076e, 0x077f, 0x0786, 0x078d, 0x0793, 0x0798, 0x079e, - 0x07a8, 0x07b9, 0x07c3, 0x07c8, 0x07ce, 0x07d7, 0x07e3, 0x07eb, - 0x0801, 0x0809, 0x0815, 0x081f, 0x0826, 0x082d, 0x0834, 0x0841, - 0x0856, 0x0861, 0x086d, 0x0872, 0x087b, 0x088b, 0x08a5, 0x08a9, - 0x08c1, 0x08c5, 0x08cd, 0x08d7, 0x08de, 0x08e9, 0x08f5, 0x08fc, - 0x0901, 0x0906, 0x0919, 0x091f, 0x0925, 0x092d, 0x0934, 0x093a, - 0x0952, 0x0962, 0x0969, 0x0973, 0x097f, 0x099b, 0x09a4, 0x09bc, - 0x09d1, 0x09d8, 0x09df, 0x09f0, 0x09f5, 0x09fb, 0x0a00, 0x0a07, + 0x075a, 0x0762, 0x0767, 0x0778, 0x077f, 0x0786, 0x078c, 0x0791, + 0x0797, 0x07a1, 0x07b2, 0x07bc, 0x07c1, 0x07c7, 0x07d0, 0x07dc, + 0x07e4, 0x07fa, 0x0802, 0x080e, 0x0818, 0x081f, 0x0826, 0x082d, + 0x083a, 0x084f, 0x085a, 0x0866, 0x086b, 0x0874, 0x0884, 0x089e, + 0x08a2, 0x08ba, 0x08be, 0x08c6, 0x08d0, 0x08d7, 0x08e2, 0x08ee, + 0x08f5, 0x08fa, 0x08ff, 0x0912, 0x0918, 0x091e, 0x0926, 0x092d, + 0x0933, 0x094b, 0x0960, 0x0970, 0x0977, 0x0981, 0x098d, 0x09a9, + 0x09b2, 0x09ca, 0x09df, 0x09e6, 0x09ed, 0x09fe, 0x0a03, 0x0a09, // Entry 100 - 13F - 0x0a15, 0x0a1b, 0x0a23, 0x0a3a, 0x0a3f, 0x0a45, 0x0a52, 0x0a61, - 0x0a68, 0x0a74, 0x0a82, 0x0a8e, 0x0a9a, 0x0aa7, 0x0ab5, 0x0abc, - 0x0ac9, 0x0ad2, 0x0adc, 0x0ae8, 0x0af5, 0x0b03, 0x0b0e, 0x0b17, - 0x0b29, 0x0b32, 0x0b36, 0x0b41, 0x0b4b, 0x0b51, 0x0b5d, 0x0b69, - 0x0b75, 0x0b82, -} // Size: 604 bytes - -var myRegionStr string = "" + // Size: 10052 bytes - "အက်စ်စင်ရှီအွန်ကျွန်းအန်ဒိုရာယူအေအီးအာဖဂန်နစ္စတန်အန်တီဂုအာနှင့်ဘာဘုဒါအန်" + - "ဂွီလာအဲလ်ဘာနီအာအာမေနီးယားအင်ဂိုလာအန္တာတိကအာဂျင်တီးနားအမေရိကန် စမိုအဩစတ" + - "ြီးယားဩစတြေးလျအာရုဘာအာလန်ကျွန်းအဇာဘိုင်ဂျန်ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီ" + - "းနားဘာဘဒိုးစ်ဘင်္ဂလားဒေ့ရှ်ဘယ်လ်ဂျီယမ်ဘာကီနာ ဖာဆိုဘူဂေးရီးယားဘာရိန်းဘူ" + - "ရွန်ဒီဘီနင်စိန့်ဘာသီလီမိုင်ဘာမူဒါဘရူနိုင်းဘိုလီးဘီးယားကာရီဘီယံနယ်သာလန်" + - "ဘရာဇီးဘဟားမားဘူတန်ဘူဗက်ကျွန်းဘော့စ်ဝါနာဘီလာရုစ်ဘေလီဇ်ကနေဒါကိုကိုး ကျွန" + - "်းစုကွန်ဂို-ကင်ရှာစအလယ်ပိုင်း အာဖရိက ပြည်ထောင်စုကွန်ဂို-ဘရာဇာဗီလ်ဆွစ်ဇ" + - "လန်အိုင်ဗရီကိုစ့်ကွတ် ကျွန်းစုချီလီကင်မရွန်းတရုတ်ကိုလံဘီယာကလစ်ပါတန်ကျွ" + - "န်းကော့စ်တာရီကာကျူးဘားခေ့ပ်ဗာဒူခူရာကာအိုခရစ်စမတ် ကျွန်းဆိုက်ပရက်စ်ချက်" + - " ပြည်ထောင်စုဂျာမဏီဒီအေဂိုဂရာစီအာဂျီဘူတီဒိန်းမတ်ဒိုမီနီကာဒိုမီနီကန်အယ်လ်ဂ" + - "ျီးရီးယားဆယ်ဥတာနှင့်မယ်လီလ်လာအီကွေဒေါအက်စတိုးနီးယားအီဂျစ်အနောက်ပိုင်း " + - "ဆာဟာရအီရီတရီအာစပိန်အီသီယိုးပီးယားဥရောပသမဂ္ဂဖင်လန်ဖီဂျီဖောက်ကလန် ကျွန်း" + - "စုမိုင်ခရိုနီရှားဖာရိုး ကျွန်းစုများပြင်သစ်ဂါဘွန်ယူနိုက်တက်ကင်းဒမ်းဂရီ" + - "နာဒါဂျော်ဂျီယာပြင်သစ် ဂီယာနာဂွန်းဇီဂါနာဂျီဘရော်လ်တာဂရင်းလန်းဂန်ဘီရာဂီး" + - "နီဂူအာဒီလုပ်အီကွေတာ ဂီရာနာဂရိတောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် " + - "ကျွန်းစုများဂွာတီမာလာဂူအမ်ဂီရာနာ-ဘီစ်စာဥဂူရာနာတရုတ်၏ အထူးအုပ်ချုပ်ခွင့" + - "်ရ ဟောင်ကောင်ဟတ်ကျွန်းနှင့်မက်ဒေါနယ်ကျွန်းစုဟွန်ဒူးရပ်စ်ခရိုအေးရှားဟေတ" + - "ီဟန်ဂေရီကာနာရီကျွန်းစုအင်ဒိုနီးရှားအိုင်ယာလန်အစ္စရေးမန်ကျွန်းအိန္ဒိယဗြ" + - "ိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်အီရတ်အီရန်အိုက်စလန်အီတလီဂျာစီဂျမေကာဂျ" + - "ော်ဒန်ဂျပန်ကင်ညာခရူဂစ်စတန်ကမ္ဘောဒီးယားခီရီဘာတီကိုမိုရိုစ်စိန့်ကစ်နှင့်" + - "နီဗီစ်မြောက်ကိုရီးယားတောင်ကိုရီးယားကူဝိတ်ကေမန် ကျွန်းစုကာဇက်စတန်လာအိုလ" + - "က်ဘနွန်စိန့်လူစီအာလစ်ခ်ထင်စတိုင်သီရိလင်္ကာလိုင်ဘေးရီးယားလီဆိုသိုလစ်သူယ" + - "ေးနီးယားလူဇင်ဘတ်လတ်ဗီးယားလီဗရာမော်ရိုကိုမိုနာကိုမောလ်ဒိုဗာမွန်တီနိဂရို" + - "းစိန့်မာတင်မာဒါဂတ်စကာမာရှယ် ကျွန်းစုမာစီဒိုးနီးယားမာလီမြန်မာမွန်ဂိုးလီ" + - "းယားတရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ မကာအိုတောင်ပိုင်းမာရီအာနာကျွန်းစုမာတီနီ" + - "ကီမောရီတာနီအာမောင့်စဲရက်မောလ်တာမော်ရေရှားစ်မော်လ်ဒိုက်မာလာဝီမက္ကဆီကိုမ" + - "လေးရှားမိုဇန်ဘစ်နမ်မီးဘီးယားနယူး ကယ်လီဒိုနီးယားနိုင်ဂျာနောဖော့ခ်ကျွန်း" + - "နိုင်ဂျီးရီးယားနီကာရာဂွာနယ်သာလန်နော်ဝေနီပေါနာဥူရူနီဥူအေနယူးဇီလန်အိုမန်" + - "ပနားမားပီရူးပြင်သစ် ပေါ်လီနေးရှားပါပူရာနယူးဂီနီဖိလစ်ပိုင်ပါကစ္စတန်ပိုလ" + - "န်စိန့်ပီအဲရီနှင့်မီကွီလွန်ပစ်တ်ကိန်းကျွန်းစုပေါ်တူရီကိုပါလက်စတိုင်း ပ" + - "ိုင်နက်ပေါ်တူဂီပလောင်ပါရာဂွေးကာတာသမုဒ္ဒရာဒေသအပြင်ထွက်နေသောဒေသများရဲအူန" + - "ီရွန်ရိုမေးနီးယားဆားဘီးယားရုရှရဝန်ဒါဆော်ဒီအာရေးဗီးယားဆော်လမွန်ကျွန်းစု" + - "ဆေးရှလ်ဆူဒန်ဆွီဒင်စင်္ကာပူစိန့်ဟဲလီနာစလိုဗေးနီးယားစဗိုလ်ဘတ်နှင့်ဂျန်မေ" + - "ရန်စလိုဗေးကီးယားဆီအဲရာ လီအိုနီဆော့န်မာရီနိုဆီနီဂေါဆိုမာလီယာဆူရီနိမ်းမြ" + - "ောက်ဆူဒန်စိန့်တိုမီနှင့်ပရင်စီပ့်အယ်လ်ဆာဗေးဒိုးဆင့်မာအာတင်ဆီးရီးယားစွာ" + - "ဇီလန်ထရစ်တန်ဒါကွန်ဟာတခ်စ်နှင့်ကာအီကိုစ်ကျွန်းစုချဒ်ပြင်သစ် တောင်ပိုင်း" + - " ပိုင်နက်များတိုဂိုထိုင်းတာဂျီကစ္စတန်ထိုးခါလူအရှေ့တီမောတာခ်မီန့စ်တန်တူနီ" + - "းရှားတွန်ဂါတူရကီထရိုင်နီဒတ်နှင့်တိုဘာဂိုထူးဗလူထိုင်ဝမ်တန်ဇန်းနီးယားယူက" + - "ရိန်းယူဂန္ဓာယူနိုက်တက်စတိတ် အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများယူနိုက" + - "်တက်စတိတ်ဥရုဂွေးဥဘက်ကစ္စတန်ဗာတီကန်စီတီးစိန့်ဗင့်ဆင့်နှင့် သည်ဂရဲနာဒင်း" + - "စ်ဗင်နီဇွဲလားဗြိတိသျှ ဗာဂျင်း ကျွန်းစုယူအက်စ် ဗာဂျင်း ကျွန်းစုဗီယက်နမ်" + - "ဗာနုအာတူဝေါလစ်နှင့်ဖူထူးနားဆာမိုအာကိုဆိုဗိုယီမင်မေအိုတီတောင်အာဖရိကဇမ်ဘ" + - "ီယာဇင်ဘာဘွေမသိ သို့မဟုတ် မရှိ သော နေရာကမ္ဘာအာဖရိကမြောက် အမေရိကတောင် အမ" + - "ေရိကသမုဒ္ဒရာဒေသအနောက် အာဖရိကအလယ်ပိုင်း အမေရိကအရှေ့ပိုင်း အာဖရိကမြောက်ပ" + - "ိုင်း အာဖရိကအလယ်ပိုင်း အာဖရိကတောင်ပိုင်း အာဖရိကအမေရိကများမြောက်ပိုင်း " + - "အမေရိကကာရီဘီယံအရှေ့ပိုင်း အာရှတောင်ပိုင်း အာရှအရှေ့တောင်ပိုင်းအာရှတောင" + - "်ပိုင်း ဥရောပဩစတြေးလျနှင့် နယူးဇီလန်မီလာနီးရှားမိုင်ခရိုနီရှားနယ်ပိုလီ" + - "နီရှားအာရှအလယ် အာရှအနောက် အာရှဥရောပအရှေ့ပိုင်း ဥရောပမြောက်ပိုင်း ဥရောပ" + - "အနောက်ပိုင်း ဥရောပလက်တင်အမေရိက" - -var myRegionIdx = []uint16{ // 290 elements + 0x0a0e, 0x0a15, 0x0a23, 0x0a29, 0x0a31, 0x0a48, 0x0a4d, 0x0a53, + 0x0a60, 0x0a6f, 0x0a76, 0x0a82, 0x0a90, 0x0a9c, 0x0aa8, 0x0ab5, + 0x0ac3, 0x0aca, 0x0ad7, 0x0ae0, 0x0aea, 0x0af6, 0x0b03, 0x0b11, + 0x0b1c, 0x0b25, 0x0b37, 0x0b40, 0x0b44, 0x0b4f, 0x0b59, 0x0b5f, + 0x0b6b, 0x0b77, 0x0b83, 0x0b90, +} // Size: 608 bytes + +const myRegionStr string = "" + // Size: 9643 bytes + "တက်တော်မူကျွန်းအင်ဒိုရာယူအေအီးအာဖဂန်နစ္စတန်အင်တီဂွါနှင့် ဘာဘူဒါအန်ဂီလာအယ" + + "်လ်ဘေးနီးယားအာမေးနီးယားအင်ဂိုလာအန္တာတိကအာဂျင်တီးနားအမေရိကန် ဆမိုးအားဩစ" + + "တြီးယားဩစတြေးလျအာရူးဗားအာလန်ကျွန်းအဇာဘိုင်ဂျန်ဘော့စနီးယားနှင့် ဟာဇီဂို" + + "ဗီနားဘာဘေးဒိုးစ်ဘင်္ဂလားဒေ့ရှ်ဘယ်လ်ဂျီယမ်ဘာကီးနား ဖားဆိုဘူလ်ဂေးရီးယားဘ" + + "ာရိန်းဘူရွန်ဒီဘီနင်စိန့်ဘာသယ်လ်မီဘာမြူဒါဘရူနိုင်းဘိုလီးဗီးယားကာရစ်ဘီယံ" + + " နယ်သာလန်ဘရာဇီးဘဟားမားဘူတန်ဘူဗက်ကျွန်းဘော့ဆွာနာဘီလာရုဇ်ဘလိဇ်ကနေဒါကိုကိုး" + + "ကျွန်းကွန်ဂိုဗဟို အာဖရိက ပြည်ထောင်စုကွန်ဂို-ဘရာဇာဗီးလ်ဆွစ်ဇာလန်ကို့တ် " + + "ဒီဗွာကွတ် ကျွန်းစုချီလီကင်မရွန်းတရုတ်ကိုလံဘီယာကလစ်ပါတန်ကျွန်းကို့စ်တာရ" + + "ီကာကျူးဘားကိတ်ဗာဒီကျူရေးကိုးစ်ခရစ်စမတ် ကျွန်းဆိုက်ပရပ်စ်ချက်ကီယားဂျာမဏ" + + "ီဒီအဲဂိုဂါစီရာဂျီဘူတီဒိန်းမတ်ဒိုမီနီကာဒိုမီနီကန်အယ်လ်ဂျီးရီးယားဆယ်ဥတာန" + + "ှင့်မယ်လီလ်လာအီကွေဒေါအက်စတိုးနီးယားအီဂျစ်အနောက် ဆာဟာရအီရီထရီးယားစပိန်အ" + + "ီသီယိုးပီးယားဥရောပသမဂ္ဂဖင်လန်ဖီဂျီဖော့ကလန် ကျွန်းစုမိုင်ခရိုနီရှားဖာရိ" + + "ုး ကျွန်းစုများပြင်သစ်ဂါဘွန်ယူနိုက်တက်ကင်းဒမ်းဂရီနေဒါဂျော်ဂျီယာပြင်သစ်" + + " ဂိုင်ယာနာဂွန်းဇီဂါနာဂျီဘရော်လ်တာဂရင်းလန်းဂမ်ဘီရာဂီနီဂွါဒီလုအီကွေတာ ဂီနီ" + + "ဂရိတောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများဂွါတီမာလာဂူအမ်" + + "ဂီနီ-ဘီစောဂိုင်ယာနာဟောင်ကောင် (တရုတ်ပြည်)ဟတ်ကျွန်းနှင့်မက်ဒေါနယ်ကျွန်း" + + "စုဟွန်ဒူးရပ်စ်ခရိုအေးရှားဟေတီဟန်ဂေရီကနေရီ ကျွန်းစုအင်ဒိုနီးရှားအိုင်ယာ" + + "လန်အစ္စရေးမန်ကျွန်းအိန္ဒိယဗြိတိသျှပိုင် အိန္ဒိယသမုဒ္ဒရာကျွန်းများအီရတ်" + + "အီရန်အိုက်စလန်အီတလီဂျာစီဂျမေကာဂျော်ဒန်ဂျပန်ကင်ညာကာဂျစ္စတန်ကမ္ဘောဒီးယား" + + "ခီရီဘာတီကိုမိုရိုစ်စိန့်ကစ်နှင့်နီဗီစ်မြောက်ကိုရီးယားတောင်ကိုရီးယားကူဝ" + + "ိတ်ကေမန် ကျွန်းစုကာဇက်စတန်လာအိုလက်ဘနွန်စိန့်လူစီယာလစ်တန်စတိန်းသီရိလင်္" + + "ကာလိုက်ဘေးရီးယားလီဆိုသိုလစ်သူယေးနီးယားလူဇင်ဘတ်လတ်ဗီးယားလစ်ဗျားမော်ရိုက" + + "ိုမိုနာကိုမောလ်ဒိုဗာမွန်တီနိဂရိုးစိန့်မာတင်မဒါဂတ်စကားမာရှယ် ကျွန်းစုမက" + + "်စီဒိုးနီးယားမာလီမြန်မာမွန်ဂိုးလီးယားမကာအို (တရုတ်ပြည်)တောင်ပိုင်းမာရီ" + + "အာနာကျွန်းစုမာတီနိခ်မော်ရီတေးနီးယားမောင့်စဲရက်မောလ်တာမောရစ်ရှမော်လ်ဒို" + + "က်မာလာဝီမက္ကဆီကိုမလေးရှားမိုဇမ်ဘစ်နမီးဘီးယားနယူး ကယ်လီဒိုနီးယားနိုင်ဂျ" + + "ာနောဖုတ်ကျွန်းနိုင်ဂျီးရီးယားနီကာရာဂွါနယ်သာလန်နော်ဝေနီပေါနော်ရူးနီဥူအေ" + + "နယူးဇီလန်အိုမန်ပနားမားပီရူးပြင်သစ် ပေါ်လီနီးရှားပါပူအာ နယူးဂီနီဖိလစ်ပိ" + + "ုင်ပါကစ္စတန်ပိုလန်စိန့်ပီအဲရ်နှင့် မီကွီလွန်ပစ်တ်ကိန်းကျွန်းစုပေါ်တိုရ" + + "ီကိုပါလက်စတိုင်း ပိုင်နက်ပေါ်တူဂီပလာအိုပါရာဂွေးကာတာသမုဒ္ဒရာ အပြင်ဘက်ရှ" + + "ိ ကျွန်းနိုင်ငံများဟေညွန်ရိုမေးနီးယားဆားဘီးယားရုရှရဝန်ဒါဆော်ဒီအာရေးဘီး" + + "ယားဆော်လမွန်ကျွန်းစုဆေးရှဲဆူဒန်ဆွီဒင်စင်္ကာပူစိန့်ဟယ်လယ်နာစလိုဗေးနီးယာ" + + "းစဗိုလ်ဘတ်နှင့်ဂျန်မေရန်ဆလိုဗက်ကီးယားဆီယာရာ လီယွန်းဆန်မာရီနိုဆီနီဂေါဆိ" + + "ုမာလီယာဆူရာနမ်တောင် ဆူဒန်ဆောင်တူမေးနှင့် ပရင်စီပီအယ်လ်ဆာဗေးဒိုးစင့်မာတ" + + "င်ဆီးရီးယားဆွာဇီလန်ထရစ္စတန် ဒါ ကွန်ဟာတခ်စ်နှင့်ကာအီကိုစ်ကျွန်းစုချဒ်ပြ" + + "င်သစ် တောင်ပိုင်း ပိုင်နက်များတိုဂိုထိုင်းတာဂျီကစ္စတန်တိုကလောင်အရှေ့တီ" + + "မောတာ့ခ်မင်နစ္စတန်တူနီးရှားတွန်ဂါတူရကီထရီနီဒတ်နှင့် တိုဘက်ဂိုတူဗားလူထိ" + + "ုင်ဝမ်တန်ဇန်းနီးယားယူကရိန်းယူဂန်းဒါးယူနိုက်တက်စတိတ် ကျွန်းနိုင်ငံများက" + + "ုလသမဂ္ဂယူနိုက်တက်စတိတ်ဥရုဂွေးဉဇဘက်ကစ္စတန်ဗာတီကန်စီတီးစိန့်ဗင်းဆင့်နှင့" + + "် ဂရိနေဒိုင်ဗင်နီဇွဲလားဗြိတိသျှ ဗာဂျင်း ကျွန်းစုယူအက်စ် ဗာဂျင်း ကျွန်း" + + "စုဗီယက်နမ်ဗနွားတူဝေါလစ်နှင့် ဖူကျူးနားဆမိုးအားကိုဆိုဗိုယီမင်မာယိုတေးတေ" + + "ာင်အာဖရိကဇမ်ဘီယာဇင်ဘာဘွေမသိ (သို့) မရှိသော ဒေသကမ္ဘာအာဖရိကမြောက် အမေရိက" + + "တိုက်တောင် အမေရိကသမုဒ္ဒရာဒေသအနောက် အာဖရိကဗဟို အမေရိကအရှေ့ အာဖရိကမြောက်" + + " အာဖရိကအလယ် အာဖရိကအာဖရိက တောင်ပိုင်းအမေရိကန်မြောက် အမေရိကကာရစ်ဘီယံအရှေ့အ" + + "ာရှတောင်အာရှအရှေ့တောင်အာရှတောင်ဥရောပဩစတြေးလျနှင့် နယူးဇီလန်မီလာနီးရှား" + + "မိုက်ခရိုနီးရှား ဒေသပိုလီနီရှားအာရှအလယ်အာရှအနောက်အာရှဥရောပအရှေ့ ဥရောပမ" + + "ြောက် ဥရောပအနောက် ဥရောပလက်တင်အမေရိက" + +var myRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x003f, 0x0057, 0x006c, 0x0093, 0x00cf, 0x00e7, 0x0105, - 0x0123, 0x013b, 0x0153, 0x0177, 0x019f, 0x01ba, 0x01d2, 0x01e4, - 0x0205, 0x0229, 0x0282, 0x029d, 0x02c7, 0x02e8, 0x030a, 0x032b, - 0x0340, 0x0358, 0x0367, 0x0397, 0x03a9, 0x03c4, 0x03e8, 0x0418, - 0x042a, 0x043f, 0x044e, 0x046f, 0x048d, 0x04a5, 0x04b7, 0x04c6, - 0x04f4, 0x051f, 0x0572, 0x05a3, 0x05bb, 0x05e5, 0x060a, 0x0619, - 0x0634, 0x0643, 0x065e, 0x068b, 0x06af, 0x06c4, 0x06df, 0x06fa, - 0x0725, 0x0746, 0x0774, 0x0786, 0x07b0, 0x07c5, 0x07dd, 0x07f8, + 0x0000, 0x002d, 0x0045, 0x005a, 0x0081, 0x00bb, 0x00d0, 0x00fa, + 0x011b, 0x0133, 0x014b, 0x016f, 0x01a0, 0x01bb, 0x01d3, 0x01eb, + 0x020c, 0x0230, 0x0285, 0x02a6, 0x02d0, 0x02f1, 0x031c, 0x0343, + 0x0358, 0x0370, 0x037f, 0x03a9, 0x03be, 0x03d9, 0x03fd, 0x0431, + 0x0443, 0x0458, 0x0467, 0x0488, 0x04a3, 0x04bb, 0x04ca, 0x04d9, + 0x0500, 0x0515, 0x0556, 0x058a, 0x05a5, 0x05c7, 0x05ec, 0x05fb, + 0x0616, 0x0625, 0x0640, 0x066d, 0x0691, 0x06a6, 0x06be, 0x06e2, + 0x070d, 0x072e, 0x0749, 0x075b, 0x0782, 0x0797, 0x07af, 0x07ca, // Entry 40 - 7F - 0x0816, 0x0843, 0x087f, 0x0897, 0x08c1, 0x08d3, 0x0907, 0x0922, - 0x0931, 0x095b, 0x0979, 0x098b, 0x099a, 0x09ce, 0x09fb, 0x0a32, - 0x0a47, 0x0a59, 0x0a8f, 0x0aa4, 0x0ac2, 0x0aea, 0x0aff, 0x0b0b, - 0x0b2f, 0x0b4a, 0x0b5f, 0x0b6e, 0x0b8c, 0x0bb4, 0x0bbd, 0x0c52, - 0x0c6d, 0x0c7c, 0x0ca4, 0x0cb6, 0x0d21, 0x0d7e, 0x0da2, 0x0dc3, - 0x0dcf, 0x0de4, 0x0e0e, 0x0e35, 0x0e53, 0x0e68, 0x0e83, 0x0e98, - 0x0efb, 0x0f0a, 0x0f19, 0x0f34, 0x0f43, 0x0f52, 0x0f64, 0x0f7c, - 0x0f8b, 0x0f9a, 0x0fb8, 0x0fdc, 0x0ff4, 0x1015, 0x104e, 0x107b, + 0x07e8, 0x0815, 0x0851, 0x0869, 0x0893, 0x08a5, 0x08c7, 0x08e8, + 0x08f7, 0x0921, 0x093f, 0x093f, 0x0951, 0x0960, 0x0991, 0x09be, + 0x09f5, 0x0a0a, 0x0a1c, 0x0a52, 0x0a67, 0x0a85, 0x0ab6, 0x0acb, + 0x0ad7, 0x0afb, 0x0b16, 0x0b2b, 0x0b37, 0x0b4c, 0x0b6e, 0x0b77, + 0x0c0c, 0x0c27, 0x0c36, 0x0c52, 0x0c6d, 0x0ca9, 0x0d06, 0x0d2a, + 0x0d4b, 0x0d57, 0x0d6c, 0x0d94, 0x0dbb, 0x0dd9, 0x0dee, 0x0e09, + 0x0e1e, 0x0e91, 0x0ea0, 0x0eaf, 0x0eca, 0x0ed9, 0x0ee8, 0x0efa, + 0x0f12, 0x0f21, 0x0f30, 0x0f4e, 0x0f72, 0x0f8a, 0x0fab, 0x0fe4, // Entry 80 - BF - 0x10a5, 0x10b7, 0x10df, 0x10fa, 0x1109, 0x1121, 0x1142, 0x116c, - 0x118a, 0x11b4, 0x11cc, 0x11f6, 0x120e, 0x1229, 0x1238, 0x1256, - 0x126e, 0x128c, 0x12b3, 0x12d1, 0x12ef, 0x131a, 0x1344, 0x1350, - 0x1362, 0x138c, 0x13eb, 0x143c, 0x1454, 0x1475, 0x1496, 0x14ab, - 0x14cf, 0x14f0, 0x1502, 0x151d, 0x1535, 0x1550, 0x1574, 0x15ab, - 0x15c3, 0x15f0, 0x161d, 0x1638, 0x1650, 0x1662, 0x1671, 0x1683, - 0x1695, 0x16b0, 0x16c2, 0x16d7, 0x16e6, 0x1723, 0x174d, 0x176b, - 0x1786, 0x1798, 0x17e3, 0x1819, 0x183a, 0x1877, 0x188f, 0x18a1, + 0x1011, 0x103b, 0x104d, 0x1075, 0x1090, 0x109f, 0x10b7, 0x10d8, + 0x10fc, 0x111a, 0x1144, 0x115c, 0x1186, 0x119e, 0x11b9, 0x11ce, + 0x11ec, 0x1204, 0x1222, 0x1249, 0x1267, 0x1285, 0x12b0, 0x12dd, + 0x12e9, 0x12fb, 0x1325, 0x1355, 0x13a6, 0x13be, 0x13eb, 0x140c, + 0x1421, 0x1439, 0x145a, 0x146c, 0x1487, 0x149f, 0x14ba, 0x14d8, + 0x150f, 0x1527, 0x154e, 0x157b, 0x1596, 0x15ae, 0x15c0, 0x15cf, + 0x15e4, 0x15f6, 0x1611, 0x1623, 0x1638, 0x1647, 0x1684, 0x16af, + 0x16cd, 0x16e8, 0x16fa, 0x1746, 0x177c, 0x17a0, 0x17dd, 0x17f5, // Entry C0 - FF - 0x18b9, 0x18c5, 0x1925, 0x1943, 0x1967, 0x1982, 0x198e, 0x19a0, - 0x19d3, 0x1a06, 0x1a1b, 0x1a2a, 0x1a3c, 0x1a54, 0x1a75, 0x1a9c, - 0x1ae1, 0x1b08, 0x1b30, 0x1b57, 0x1b6c, 0x1b87, 0x1ba2, 0x1bc3, - 0x1c0b, 0x1c35, 0x1c56, 0x1c71, 0x1c89, 0x1cb6, 0x1d07, 0x1d13, - 0x1d6f, 0x1d81, 0x1d93, 0x1db7, 0x1dcf, 0x1ded, 0x1e14, 0x1e2f, - 0x1e41, 0x1e50, 0x1e98, 0x1eaa, 0x1ec2, 0x1ee9, 0x1f01, 0x1f16, - 0x1fac, 0x1fd9, 0x1fee, 0x200f, 0x2033, 0x2094, 0x20b5, 0x20fc, - 0x2140, 0x2158, 0x2170, 0x21a9, 0x21be, 0x21d9, 0x21e8, 0x21fd, + 0x1807, 0x181f, 0x182b, 0x1899, 0x18ab, 0x18cf, 0x18ea, 0x18f6, + 0x1908, 0x193b, 0x196e, 0x1980, 0x198f, 0x19a1, 0x19b9, 0x19e0, + 0x1a07, 0x1a4c, 0x1a73, 0x1a9b, 0x1ab9, 0x1ace, 0x1ae9, 0x1afe, + 0x1b1d, 0x1b63, 0x1b8d, 0x1ba8, 0x1bc3, 0x1bdb, 0x1c0d, 0x1c5e, + 0x1c6a, 0x1cc6, 0x1cd8, 0x1cea, 0x1d0e, 0x1d29, 0x1d47, 0x1d74, + 0x1d8f, 0x1da1, 0x1db0, 0x1df3, 0x1e08, 0x1e20, 0x1e47, 0x1e5f, + 0x1e7a, 0x1edb, 0x1ef3, 0x1f20, 0x1f35, 0x1f59, 0x1f7d, 0x1fd2, + 0x1ff3, 0x203a, 0x207e, 0x2096, 0x20ab, 0x20e8, 0x2100, 0x211b, // Entry 100 - 13F - 0x221e, 0x2233, 0x224b, 0x2294, 0x22a3, 0x22b5, 0x22da, 0x22fc, - 0x231d, 0x2342, 0x2373, 0x23a7, 0x23de, 0x240f, 0x2443, 0x2461, - 0x2498, 0x24b0, 0x24de, 0x250c, 0x2548, 0x2579, 0x25bc, 0x25dd, - 0x2613, 0x2634, 0x2640, 0x2659, 0x2678, 0x2687, 0x26b8, 0x26ec, - 0x2720, 0x2744, -} // Size: 604 bytes - -var neRegionStr string = "" + // Size: 9020 bytes + 0x212a, 0x2142, 0x2163, 0x2178, 0x2190, 0x21c8, 0x21d7, 0x21e9, + 0x221d, 0x223f, 0x2260, 0x2285, 0x22a4, 0x22c6, 0x22eb, 0x230a, + 0x233e, 0x2356, 0x237b, 0x2396, 0x23b1, 0x23cc, 0x23f6, 0x2414, + 0x2457, 0x2478, 0x24b2, 0x24d3, 0x24df, 0x24f7, 0x2515, 0x2524, + 0x2543, 0x2565, 0x2587, 0x25ab, +} // Size: 608 bytes + +const neRegionStr string = "" + // Size: 9054 bytes "एस्केन्सन टापुअन्डोर्रासंयुक्त अरब इमिराट्सअफगानिस्तानएन्टिगुआ र बारबुडा" + - "आङ्गुइलाअल्बानियाआर्मेनियाअङ्गोलाअन्टारतिकाअर्जेन्टिनाअमेरिकी समोआअष्ट" + + "आङ्गुइलाअल्बानियाआर्मेनियाअङ्गोलाअन्टारटिकाअर्जेन्टिनाअमेरिकी समोआअष्ट" + "्रियाअष्ट्रेलियाआरूबाअलान्ड टापुहरुअजरबैजानबोस्निया एण्ड हर्जगोभिनियाब" + "ार्बाडोसबङ्गलादेशबेल्जियमबर्किना फासोबुल्गेरियाबहराइनबुरूण्डीबेनिनसेन्" + "ट बार्थालेमीबर्मुडाब्रुनाइबोलिभियाक्यारिवियन नेदरल्याण्ड्सब्राजिलबहामा" + "सभुटानबुभेट टापुबोट्स्वानाबेलारूसबेलिजक्यानाडाकोकोस (किलिंग) टापुहरुको" + "ङ्गो-किन्शासाकेन्द्रीय अफ्रिकी गणतन्त्रकोङ्गो - ब्राज्जाभिल्लेस्विजरल्" + - "याण्डआइभरी कोस्टकुक टापुहरुचिलीक्यामरूनचीनकोलोम्बियाक्लिप्पेर्टन टापुक" + - "ोष्टारिकाक्युबाकेप भर्डेकुराकाओक्रिष्टमस टापुसाइप्रसचेक गणतन्त्रजर्मनी" + - "डियगो गार्सियाडिजिबुटीडेनमार्कडोमिनिकाडोमिनिकन गणतन्त्रअल्जेरियासिउटा " + - "र मेलिलाइक्वडेरइस्टोनियाइजिप्टपश्चिमी साहाराएरित्रियास्पेनइथियोपियायुर" + - "ोपियन युनियनफिन्ल्याण्डफिजीफकल्याण्ड टापुहरुमाइक्रोनेसियाफारोर टापुहरु" + - "फ्रान्सगावोनबेलायतग्रेनाडाजर्जियाफ्रान्सेली गायनागुएर्नसेघानाजिब्राल्ट" + - "ारग्रिनल्याण्डगाम्वियागिनीग्वाडेलुपभू-मध्यीय गिनीग्रिसदक्षिण जर्जिया र" + - " दक्षिण स्यान्डवीच टापुहरूग्वाटेमालागुवामगिनी-बिसाउगुयानाहङकङ चिनिया समा" + - "जवादी स्वायत्त क्षेत्रहर्ड टापु एण्ड म्याकडोनाल्ड टापुहरुहन्डुरासक्रोए" + - "शियाहैटीहङ्गेरीक्यानारी टापुहरूइन्डोनेशियाआयरल्याण्डइजरायलआइज्ले अफ् म" + - "्यानभारतबेलायती हिन्द महासागर क्षेत्रइराकइरानआइस्ल्याण्डइटालीजर्सीजमाइ" + - "काजोर्डनजापानकेन्याकिर्गिस्थानकम्बोडियाकिरिबाटीकोमोरोससेन्ट किट्स र ने" + - "भिसउत्तर कोरियादक्षिण कोरियाकुवेतकेयमान टापुकाजाकस्तानलाओसलेबननसेन्ट ल" + - "ुसियालिएखटेन्स्टाइनश्रीलङ्कालाइबेरियालेसोथोलिथुअनियालक्जेमबर्गलाट्भिया" + - "लिबियामोरोक्कोमोनाकोमाल्डोभामोन्टेनेग्रोसेन्ट मार्टिनमडागास्करमार्शल ट" + - "ापुहरुम्याकेडोनियामालीम्यान्मार (बर्मा)मङ्गोलियामकावो चिनिँया स्वशासित" + - " क्षेत्रउत्तरी मारिआना टापुमार्टिनिकमाउरिटानियामोन्टसेर्राटमाल्टामाउरिटस" + - "माल्दिभ्समालावीमेक्सिकोमलेसियामोजाम्बिकनामिबियानयाँ कालेडोनियानाइजरनोर" + - "फोल्क टापुनाइजेरियानिकारागुवानेदरल्याण्ड्सनर्वेनेपालनाउरूनियुइन्युजिल्" + - "याण्डओमनपनामापेरूफ्रान्सेली पोलिनेसियापपुआ न्यू गाइनियाफिलिपिन्सपाकिस्" + - "तानपोल्याण्डसेन्ट पिर्रे र मिक्केलोनपिटकाइर्न टापुहरुपुएर्टो रिकोप्याल" + - "ेस्टनी भू-भागहरुपोर्चुगलपलाउप्याराग्वेकतारबाह्य ओसनियारियुनियनरोमानिया" + - "सर्बियारूसरवाण्डासाउदी अरबसोलोमोन टापुहरुसेचेलेससुडानस्विडेनसिङ्गापुरस" + - "ेन्ट हेलेनास्लोभेनियासभाल्बार्ड र जान मायेनस्लोभाकियासिएर्रा लिओनसान् " + - "मारिनोसेनेगालसोमालियासुरिनेमदक्षिणी सुडानसाओ टोमे र प्रिन्सिपएल् साल्भ" + - "ाडोरसिन्ट मार्टेनसिरियास्वाजिल्याण्डट्रिस्टान डा कुन्हातुर्क र काइकोस " + - "टापुचाडफ्रान्सेली दक्षिणी क्षेत्रहरुटोगोथाइल्याण्डताजिकिस्तानतोकेलाउटि" + - "मोर-लेस्टेतुर्कमेनिस्तानट्युनिसियाटोंगाटर्कीत्रिनिडाड एण्ड टोबागोतुभाल" + - "ुताइवानतान्जानियायुक्रेनयुगाण्डासंयुक्त राज्य बाह्य टापुहरुसंयुक्त राज" + - "्यउरूग्वेउज्बेकिस्तानभेटिकन सिटीसेन्ट भिन्सेन्ट र ग्रेनाडिन्सभेनेजुएला" + - "बेलायती भर्जिन टापुहरुसंयुक्त राज्य भर्जिन टापुहरुभिएतनामभानुआतुवालिस " + - "र फुटुनासामोआकोसोवोयेमेनमायोट्टदक्षिण अफ्रिकाजाम्बियाजिम्बाबेअज्ञात क्" + - "षेत्रविश्वअफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओसनियापश्चिमी अफ्रिकाकेन्द" + - "्रीय अमेरिकापूर्वी अफ्रिकाउत्तरी अफ्रिकामध्य अफ्रिकादक्षिणी अफ्रिकाअमे" + - "रिकासउत्तरी अमेरिकाक्यारिबियनपूर्वी एशियादक्षिणी एशियादक्षिण पूर्वी एश" + - "ियादक्षिणी युरोपअष्ट्रालासियामेलानेसियामाइक्रोनेसियाली क्षेत्रपोलिनेशि" + - "याएशियाकेन्द्रीय एशियापश्चिमी एशियायुरोपपूर्वी युरोपउत्तरी युरोपपश्चिम" + - "ी युरोपल्याटिन अमेरिका" - -var neRegionIdx = []uint16{ // 290 elements + "याण्डआइभोरी कोस्टकुक टापुहरुचिलीक्यामरूनचीनकोलोम्बियाक्लिप्पेर्टन टापु" + + "कोष्टारिकाक्युबाकेप भर्डेकुराकाओक्रिष्टमस टापुसाइप्रसचेचियाजर्मनीडियगो" + + " गार्सियाडिजिबुटीडेनमार्कडोमिनिकाडोमिनिकन गणतन्त्रअल्जेरियासिउटा र मेलिल" + + "ाइक्वडेरइस्टोनियाइजिप्टपश्चिमी साहाराएरित्रियास्पेनइथियोपियायुरोपियन य" + + "ुनियनफिन्ल्याण्डफिजीफकल्याण्ड टापुहरुमाइक्रोनेसियाफारो टापुहरूफ्रान्सग" + + "ावोनबेलायतग्रेनाडाजर्जियाफ्रान्सेली गायनागुएर्नसेघानाजिब्राल्टारग्रिनल" + + "्याण्डगाम्वियागिनीग्वाडेलुपभू-मध्यीय गिनीग्रिसदक्षिण जर्जिया र दक्षिण " + + "स्यान्डवीच टापुहरूग्वाटेमालागुवामगिनी-बिसाउगुयानाहङकङ चिनिया समाजवादी " + + "स्वायत्त क्षेत्रहर्ड टापु र म्याकडोनाल्ड टापुहरुहन्डुरासक्रोएशियाहैटीह" + + "ङ्गेरीक्यानारी टापुहरूइन्डोनेशियाआयरल्याण्डइजरायलआइज्ले अफ् म्यानभारतब" + + "ेलायती हिन्द महासागर क्षेत्रइराकइरानआइस्ल्याण्डइटालीजर्सीजमाइकाजोर्डनज" + + "ापानकेन्याकिर्गिस्थानकम्बोडियाकिरिबाटीकोमोरोससेन्ट किट्स र नेभिसउत्तर " + + "कोरियादक्षिण कोरियाकुवेतकेयमान टापुकाजाकस्तानलाओसलेबननसेन्ट लुसियालिएख" + + "टेन्स्टाइनश्रीलङ्कालाइबेरियालेसोथोलिथुअनियालक्जेमबर्गलाट्भियालिबियामोर" + + "ोक्कोमोनाकोमाल्डोभामोन्टेनेग्रोसेन्ट मार्टिनमडागास्करमार्शल टापुहरुम्य" + + "ाकेडोनियामालीम्यान्मार (बर्मा)मङ्गोलियामकावो चिनिँया स्वशासित क्षेत्रउ" + + "त्तरी मारिआना टापुमार्टिनिकमाउरिटानियामोन्टसेर्राटमाल्टामाउरिटसमाल्दिभ" + + "्समालावीमेक्सिकोमलेसियामोजाम्बिकनामिबियानयाँ कालेडोनियानाइजरनोरफोल्क ट" + + "ापुनाइजेरियानिकारागुवानेदरल्याण्ड्सनर्वेनेपालनाउरूनियुइन्युजिल्याण्डओम" + + "नपनामापेरूफ्रान्सेली पोलिनेसियापपुआ न्यू गाइनियाफिलिपिन्सपाकिस्तानपोल्" + + "याण्डसेन्ट पिर्रे र मिक्केलोनपिटकाइर्न टापुहरुपुएर्टो रिकोप्यालेस्टनी " + + "भू-भागहरुपोर्चुगलपलाउप्याराग्वेकतारबाह्य ओसनियारियुनियनरोमानियासर्बिया" + + "रूसरवाण्डासाउदी अरबसोलोमोन टापुहरुसेचेलेससुडानस्विडेनसिङ्गापुरसेन्ट हे" + + "लेनास्लोभेनियासभाल्बार्ड र जान मायेनस्लोभाकियासिएर्रा लिओनसान् मारिनोस" + + "ेनेगालसोमालियासुरिनेमदक्षिणी सुडानसाओ टोमे र प्रिन्सिपएल् साल्भाडोरसिन" + + "्ट मार्टेनसिरियास्वाजिल्याण्डट्रिस्टान डा कुन्हातुर्क र काइकोस टापुचाड" + + "फ्रान्सेली दक्षिणी क्षेत्रहरुटोगोथाइल्याण्डताजिकिस्तानतोकेलाउटिमोर-लेस" + + "्टेतुर्कमेनिस्तानट्युनिसियाटोंगाटर्कीत्रिनिडाड एण्ड टोबागोतुभालुताइवान" + + "तान्जानियायुक्रेनयुगाण्डासंयुक्त राज्यका बाह्य टापुहरुसंयुक्त राष्ट्र " + + "संघसंयुक्त राज्यउरूग्वेउज्बेकिस्तानभेटिकन सिटीसेन्ट भिन्सेन्ट र ग्रेना" + + "डिन्सभेनेजुएलाबेलायती भर्जिन टापुहरुसंयुक्त राज्य भर्जिन टापुहरुभिएतना" + + "मभानुआतुवालिस र फुटुनासामोआकोसोवोयेमेनमायोट्टदक्षिण अफ्रिकाजाम्बियाजिम" + + "्बाबेअज्ञात क्षेत्रविश्वअफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओसनियापश्चिम" + + "ी अफ्रिकाकेन्द्रीय अमेरिकापूर्वी अफ्रिकाउत्तरी अफ्रिकामध्य अफ्रिकादक्ष" + + "िणी अफ्रिकाअमेरिकासउत्तरी अमेरिकाक्यारिबियनपूर्वी एशियादक्षिणी एशियादक" + + "्षिण पूर्वी एशियादक्षिणी युरोपअष्ट्रालासियामेलानेसियामाइक्रोनेसियाली क" + + "्षेत्रपोलिनेशियाएशियाकेन्द्रीय एशियापश्चिमी एशियायुरोपपूर्वी युरोपउत्त" + + "री युरोपपश्चिमी युरोपल्याटिन अमेरिका" + +var neRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0028, 0x0043, 0x007b, 0x009c, 0x00ce, 0x00e6, 0x0101, 0x011c, 0x0131, 0x014f, 0x0170, 0x0192, 0x01ad, 0x01ce, 0x01dd, 0x0205, 0x021d, 0x0267, 0x0282, 0x029d, 0x02b5, 0x02d7, 0x02f5, 0x0307, 0x031f, 0x032e, 0x035c, 0x0371, 0x0386, 0x039e, 0x03e4, 0x03f9, 0x040b, 0x041a, 0x0436, 0x0454, 0x0469, 0x0478, 0x0490, - 0x04ca, 0x04f5, 0x053f, 0x057e, 0x05a5, 0x05c4, 0x05e3, 0x05ef, - 0x0607, 0x0610, 0x062e, 0x065f, 0x067d, 0x068f, 0x06a8, 0x06bd, - 0x06e5, 0x06fa, 0x071c, 0x072e, 0x0756, 0x076e, 0x0786, 0x079e, + 0x04ca, 0x04f5, 0x053f, 0x057e, 0x05a5, 0x05c7, 0x05e6, 0x05f2, + 0x060a, 0x0613, 0x0631, 0x0662, 0x0680, 0x0692, 0x06ab, 0x06c0, + 0x06e8, 0x06fd, 0x070f, 0x0721, 0x0749, 0x0761, 0x0779, 0x0791, // Entry 40 - 7F - 0x07cf, 0x07ea, 0x0810, 0x0825, 0x0840, 0x0852, 0x087a, 0x0895, - 0x08a4, 0x08bf, 0x08ea, 0x090b, 0x0917, 0x0948, 0x096f, 0x0994, - 0x09a9, 0x09b8, 0x09ca, 0x09e2, 0x09f7, 0x0a25, 0x0a3d, 0x0a49, - 0x0a6a, 0x0a8e, 0x0aa6, 0x0ab2, 0x0acd, 0x0af3, 0x0b02, 0x0b76, - 0x0b94, 0x0ba3, 0x0bbf, 0x0bd1, 0x0c38, 0x0c99, 0x0cb1, 0x0ccc, - 0x0cd8, 0x0ced, 0x0d1b, 0x0d3c, 0x0d5a, 0x0d6c, 0x0d98, 0x0da4, - 0x0df5, 0x0e01, 0x0e0d, 0x0e2e, 0x0e3d, 0x0e4c, 0x0e5e, 0x0e70, - 0x0e7f, 0x0e91, 0x0eb2, 0x0ecd, 0x0ee5, 0x0efa, 0x0f2d, 0x0f4f, + 0x07c2, 0x07dd, 0x0803, 0x0818, 0x0833, 0x0845, 0x086d, 0x0888, + 0x0897, 0x08b2, 0x08dd, 0x08dd, 0x08fe, 0x090a, 0x093b, 0x0962, + 0x0984, 0x0999, 0x09a8, 0x09ba, 0x09d2, 0x09e7, 0x0a15, 0x0a2d, + 0x0a39, 0x0a5a, 0x0a7e, 0x0a96, 0x0aa2, 0x0abd, 0x0ae3, 0x0af2, + 0x0b66, 0x0b84, 0x0b93, 0x0baf, 0x0bc1, 0x0c28, 0x0c80, 0x0c98, + 0x0cb3, 0x0cbf, 0x0cd4, 0x0d02, 0x0d23, 0x0d41, 0x0d53, 0x0d7f, + 0x0d8b, 0x0ddc, 0x0de8, 0x0df4, 0x0e15, 0x0e24, 0x0e33, 0x0e45, + 0x0e57, 0x0e66, 0x0e78, 0x0e99, 0x0eb4, 0x0ecc, 0x0ee1, 0x0f14, // Entry 80 - BF - 0x0f74, 0x0f83, 0x0fa2, 0x0fc0, 0x0fcc, 0x0fdb, 0x0ffd, 0x1027, - 0x1042, 0x105d, 0x106f, 0x108a, 0x10a8, 0x10c0, 0x10d2, 0x10ea, - 0x10fc, 0x1114, 0x1138, 0x115d, 0x1178, 0x11a0, 0x11c4, 0x11d0, - 0x11fd, 0x1218, 0x126c, 0x12a1, 0x12bc, 0x12dd, 0x1301, 0x1313, - 0x1328, 0x1343, 0x1355, 0x136d, 0x1382, 0x139d, 0x13b5, 0x13e0, - 0x13ef, 0x1414, 0x142f, 0x144d, 0x1474, 0x1483, 0x1492, 0x14a1, - 0x14b0, 0x14d7, 0x14e0, 0x14ef, 0x14fb, 0x1538, 0x1567, 0x1582, - 0x159d, 0x15b8, 0x15fa, 0x162b, 0x164d, 0x1688, 0x16a0, 0x16ac, + 0x0f36, 0x0f5b, 0x0f6a, 0x0f89, 0x0fa7, 0x0fb3, 0x0fc2, 0x0fe4, + 0x100e, 0x1029, 0x1044, 0x1056, 0x1071, 0x108f, 0x10a7, 0x10b9, + 0x10d1, 0x10e3, 0x10fb, 0x111f, 0x1144, 0x115f, 0x1187, 0x11ab, + 0x11b7, 0x11e4, 0x11ff, 0x1253, 0x1288, 0x12a3, 0x12c4, 0x12e8, + 0x12fa, 0x130f, 0x132a, 0x133c, 0x1354, 0x1369, 0x1384, 0x139c, + 0x13c7, 0x13d6, 0x13fb, 0x1416, 0x1434, 0x145b, 0x146a, 0x1479, + 0x1488, 0x1497, 0x14be, 0x14c7, 0x14d6, 0x14e2, 0x151f, 0x154e, + 0x1569, 0x1584, 0x159f, 0x15e1, 0x1612, 0x1634, 0x166f, 0x1687, // Entry C0 - FF - 0x16ca, 0x16d6, 0x16f8, 0x1710, 0x1728, 0x173d, 0x1746, 0x175b, - 0x1774, 0x179f, 0x17b4, 0x17c3, 0x17d8, 0x17f3, 0x1815, 0x1833, - 0x186f, 0x188d, 0x18af, 0x18ce, 0x18e3, 0x18fb, 0x1910, 0x1935, - 0x196b, 0x1990, 0x19b5, 0x19c7, 0x19ee, 0x1a23, 0x1a56, 0x1a5f, - 0x1ab2, 0x1abe, 0x1adc, 0x1afd, 0x1b12, 0x1b34, 0x1b5e, 0x1b7c, - 0x1b8b, 0x1b9a, 0x1bd5, 0x1be7, 0x1bf9, 0x1c17, 0x1c2c, 0x1c44, - 0x1c8f, 0x1cb4, 0x1cc9, 0x1ced, 0x1d0c, 0x1d5d, 0x1d78, 0x1db6, - 0x1e04, 0x1e19, 0x1e2e, 0x1e54, 0x1e63, 0x1e75, 0x1e84, 0x1e99, + 0x1693, 0x16b1, 0x16bd, 0x16df, 0x16f7, 0x170f, 0x1724, 0x172d, + 0x1742, 0x175b, 0x1786, 0x179b, 0x17aa, 0x17bf, 0x17da, 0x17fc, + 0x181a, 0x1856, 0x1874, 0x1896, 0x18b5, 0x18ca, 0x18e2, 0x18f7, + 0x191c, 0x1952, 0x1977, 0x199c, 0x19ae, 0x19d5, 0x1a0a, 0x1a3d, + 0x1a46, 0x1a99, 0x1aa5, 0x1ac3, 0x1ae4, 0x1af9, 0x1b1b, 0x1b45, + 0x1b63, 0x1b72, 0x1b81, 0x1bbc, 0x1bce, 0x1be0, 0x1bfe, 0x1c13, + 0x1c2b, 0x1c7c, 0x1cb1, 0x1cd6, 0x1ceb, 0x1d0f, 0x1d2e, 0x1d7f, + 0x1d9a, 0x1dd8, 0x1e26, 0x1e3b, 0x1e50, 0x1e76, 0x1e85, 0x1e97, // Entry 100 - 13F - 0x1ec1, 0x1ed9, 0x1ef1, 0x1f19, 0x1f28, 0x1f3d, 0x1f62, 0x1f8a, - 0x1f9c, 0x1fc7, 0x1ff8, 0x2020, 0x2048, 0x206a, 0x2095, 0x20ad, - 0x20d5, 0x20f3, 0x2115, 0x213a, 0x216f, 0x2194, 0x21bb, 0x21d9, - 0x221c, 0x223a, 0x2249, 0x2274, 0x2299, 0x22a8, 0x22ca, 0x22ec, - 0x2311, 0x233c, -} // Size: 604 bytes - -var nlRegionStr string = "" + // Size: 3062 bytes + 0x1ea6, 0x1ebb, 0x1ee3, 0x1efb, 0x1f13, 0x1f3b, 0x1f4a, 0x1f5f, + 0x1f84, 0x1fac, 0x1fbe, 0x1fe9, 0x201a, 0x2042, 0x206a, 0x208c, + 0x20b7, 0x20cf, 0x20f7, 0x2115, 0x2137, 0x215c, 0x2191, 0x21b6, + 0x21dd, 0x21fb, 0x223e, 0x225c, 0x226b, 0x2296, 0x22bb, 0x22ca, + 0x22ec, 0x230e, 0x2333, 0x235e, +} // Size: 608 bytes + +const nlRegionStr string = "" + // Size: 3090 bytes "AscensionAndorraVerenigde Arabische EmiratenAfghanistanAntigua en Barbud" + "aAnguillaAlbaniëArmeniëAngolaAntarcticaArgentiniëAmerikaans-SamoaOostenr" + "ijkAustraliëArubaÅlandAzerbeidzjanBosnië en HerzegovinaBarbadosBanglades" + @@ -42316,42 +47416,43 @@ var nlRegionStr string = "" + // Size: 3062 bytes "BelarusBelizeCanadaCocoseilandenCongo-KinshasaCentraal-Afrikaanse Republ" + "iekCongo-BrazzavilleZwitserlandIvoorkustCookeilandenChiliKameroenChinaCo" + "lombiaClippertonCosta RicaCubaKaapverdiëCuraçaoChristmaseilandCyprusTsje" + - "chiëDuitslandDiego GarciaDjiboutiDenemarkenDominicaDominicaanse Republie" + - "kAlgerijeCeuta en MelillaEcuadorEstlandEgypteWestelijke SaharaEritreaSpa" + - "njeEthiopiëEuropese UnieFinlandFijiFalklandeilandenMicronesiaFaeröerFran" + - "krijkGabonVerenigd KoninkrijkGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibr" + - "altarGroenlandGambiaGuineeGuadeloupeEquatoriaal-GuineaGriekenlandZuid-Ge" + - "orgia en Zuidelijke SandwicheilandenGuatemalaGuamGuinee-BissauGuyanaHong" + - "kong SAR van ChinaHeard en McDonaldeilandenHondurasKroatiëHaïtiHongarije" + - "Canarische EilandenIndonesiëIerlandIsraëlIsle of ManIndiaBritse Gebieden" + - " in de Indische OceaanIrakIranIJslandItaliëJerseyJamaicaJordaniëJapanKen" + - "iaKirgiziëCambodjaKiribatiComorenSaint Kitts en NevisNoord-KoreaZuid-Kor" + - "eaKoeweitKaaimaneilandenKazachstanLaosLibanonSaint LuciaLiechtensteinSri" + - " LankaLiberiaLesothoLitouwenLuxemburgLetlandLibiëMarokkoMonacoMoldaviëMo" + - "ntenegroSaint-MartinMadagaskarMarshalleilandenMacedoniëMaliMyanmar (Birm" + - "a)MongoliëMacau SAR van ChinaNoordelijke MarianenMartiniqueMauritaniëMon" + - "tserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMozambiqueNamibiëNieuw-" + - "CaledoniëNigerNorfolkNigeriaNicaraguaNederlandNoorwegenNepalNauruNiueNie" + - "uw-ZeelandOmanPanamaPeruFrans-PolynesiëPapoea-Nieuw-GuineaFilipijnenPaki" + - "stanPolenSaint-Pierre en MiquelonPitcairneilandenPuerto RicoPalestijnse " + - "gebiedenPortugalPalauParaguayQataroverig OceaniëRéunionRoemeniëServiëRus" + - "landRwandaSaoedi-ArabiëSalomonseilandenSeychellenSoedanZwedenSingaporeSi" + - "nt-HelenaSloveniëSpitsbergen en Jan MayenSlowakijeSierra LeoneSan Marino" + - "SenegalSomaliëSurinameZuid-SoedanSao Tomé en PrincipeEl SalvadorSint-Maa" + - "rtenSyriëSwazilandTristan da CunhaTurks- en CaicoseilandenTsjaadFranse G" + - "ebieden in de zuidelijke Indische OceaanTogoThailandTadzjikistanTokelauO" + - "ost-TimorTurkmenistanTunesiëTongaTurkijeTrinidad en TobagoTuvaluTaiwanTa" + - "nzaniaOekraïneOegandaKleine afgelegen eilanden van de Verenigde StatenVe" + - "renigde StatenUruguayOezbekistanVaticaanstadSaint Vincent en de Grenadin" + - "esVenezuelaBritse MaagdeneilandenAmerikaanse MaagdeneilandenVietnamVanua" + - "tuWallis en FutunaSamoaKosovoJemenMayotteZuid-AfrikaZambiaZimbabweonbeke" + - "nd gebiedwereldAfrikaNoord-AmerikaZuid-AmerikaOceaniëWest-AfrikaMidden-A" + - "merikaOost-AfrikaNoord-AfrikaCentraal-AfrikaZuidelijk AfrikaAmerikaNoord" + - "elijk AmerikaCaribisch gebiedOost-AziëZuid-AziëZuidoost-AziëZuid-EuropaA" + - "ustralaziëMelanesiëMicronesische regioPolynesiëAziëCentraal-AziëWest-Azi" + - "ëEuropaOost-EuropaNoord-EuropaWest-EuropaLatijns-Amerika" - -var nlRegionIdx = []uint16{ // 290 elements + "chische RepubliekDuitslandDiego GarciaDjiboutiDenemarkenDominicaDominica" + + "anse RepubliekAlgerijeCeuta en MelillaEcuadorEstlandEgypteWestelijke Sah" + + "araEritreaSpanjeEthiopiëEuropese UnieFinlandFijiFalklandeilandenMicrones" + + "iaFaeröerFrankrijkGabonVerenigd KoninkrijkGrenadaGeorgiëFrans-GuyanaGuer" + + "nseyGhanaGibraltarGroenlandGambiaGuineeGuadeloupeEquatoriaal-GuineaGriek" + + "enlandZuid-Georgia en Zuidelijke SandwicheilandenGuatemalaGuamGuinee-Bis" + + "sauGuyanaHongkong SAR van ChinaHeard en McDonaldeilandenHondurasKroatiëH" + + "aïtiHongarijeCanarische EilandenIndonesiëIerlandIsraëlIsle of ManIndiaBr" + + "itse Gebieden in de Indische OceaanIrakIranIJslandItaliëJerseyJamaicaJor" + + "daniëJapanKeniaKirgiziëCambodjaKiribatiComorenSaint Kitts en NevisNoord-" + + "KoreaZuid-KoreaKoeweitKaaimaneilandenKazachstanLaosLibanonSaint LuciaLie" + + "chtensteinSri LankaLiberiaLesothoLitouwenLuxemburgLetlandLibiëMarokkoMon" + + "acoMoldaviëMontenegroSaint-MartinMadagaskarMarshalleilandenMacedoniëMali" + + "Myanmar (Birma)MongoliëMacau SAR van ChinaNoordelijke MarianenMartinique" + + "MauritaniëMontserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMozambique" + + "NamibiëNieuw-CaledoniëNigerNorfolkNigeriaNicaraguaNederlandNoorwegenNepa" + + "lNauruNiueNieuw-ZeelandOmanPanamaPeruFrans-PolynesiëPapoea-Nieuw-GuineaF" + + "ilipijnenPakistanPolenSaint-Pierre en MiquelonPitcairneilandenPuerto Ric" + + "oPalestijnse gebiedenPortugalPalauParaguayQataroverig OceaniëRéunionRoem" + + "eniëServiëRuslandRwandaSaoedi-ArabiëSalomonseilandenSeychellenSoedanZwed" + + "enSingaporeSint-HelenaSloveniëSpitsbergen en Jan MayenSlowakijeSierra Le" + + "oneSan MarinoSenegalSomaliëSurinameZuid-SoedanSao Tomé en PrincipeEl Sal" + + "vadorSint-MaartenSyriëSwazilandTristan da CunhaTurks- en CaicoseilandenT" + + "sjaadFranse Gebieden in de zuidelijke Indische OceaanTogoThailandTadzjik" + + "istanTokelauOost-TimorTurkmenistanTunesiëTongaTurkijeTrinidad en TobagoT" + + "uvaluTaiwanTanzaniaOekraïneOegandaKleine afgelegen eilanden van de Veren" + + "igde Statenverenigde natiesVerenigde StatenUruguayOezbekistanVaticaansta" + + "dSaint Vincent en de GrenadinesVenezuelaBritse MaagdeneilandenAmerikaans" + + "e MaagdeneilandenVietnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteZu" + + "id-AfrikaZambiaZimbabweonbekend gebiedwereldAfrikaNoord-AmerikaZuid-Amer" + + "ikaOceaniëWest-AfrikaMidden-AmerikaOost-AfrikaNoord-AfrikaCentraal-Afrik" + + "aZuidelijk AfrikaAmerikaNoordelijk AmerikaCaribisch gebiedOost-AziëZuid-" + + "AziëZuidoost-AziëZuid-EuropaAustralaziëMelanesiëMicronesische regioPolyn" + + "esiëAziëCentraal-AziëWest-AziëEuropaOost-EuropaNoord-EuropaWest-EuropaLa" + + "tijns-Amerika" + +var nlRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0059, 0x0061, 0x0067, 0x0071, 0x007c, 0x008c, 0x0096, 0x00a0, 0x00a5, @@ -42360,43 +47461,43 @@ var nlRegionIdx = []uint16{ // 290 elements 0x014f, 0x0159, 0x015f, 0x016b, 0x0173, 0x017a, 0x0180, 0x0186, 0x0193, 0x01a1, 0x01be, 0x01cf, 0x01da, 0x01e3, 0x01ef, 0x01f4, 0x01fc, 0x0201, 0x0209, 0x0213, 0x021d, 0x0221, 0x022c, 0x0234, - 0x0243, 0x0249, 0x0252, 0x025b, 0x0267, 0x026f, 0x0279, 0x0281, + 0x0243, 0x0249, 0x025e, 0x0267, 0x0273, 0x027b, 0x0285, 0x028d, // Entry 40 - 7F - 0x0297, 0x029f, 0x02af, 0x02b6, 0x02bd, 0x02c3, 0x02d4, 0x02db, - 0x02e1, 0x02ea, 0x02f7, 0x02fe, 0x0302, 0x0312, 0x031c, 0x0324, - 0x032d, 0x0332, 0x0345, 0x034c, 0x0354, 0x0360, 0x0368, 0x036d, - 0x0376, 0x037f, 0x0385, 0x038b, 0x0395, 0x03a7, 0x03b2, 0x03dd, - 0x03e6, 0x03ea, 0x03f7, 0x03fd, 0x0413, 0x042c, 0x0434, 0x043c, - 0x0442, 0x044b, 0x045e, 0x0468, 0x046f, 0x0476, 0x0481, 0x0486, - 0x04ab, 0x04af, 0x04b3, 0x04ba, 0x04c1, 0x04c7, 0x04ce, 0x04d7, - 0x04dc, 0x04e1, 0x04ea, 0x04f2, 0x04fa, 0x0501, 0x0515, 0x0520, + 0x02a3, 0x02ab, 0x02bb, 0x02c2, 0x02c9, 0x02cf, 0x02e0, 0x02e7, + 0x02ed, 0x02f6, 0x0303, 0x0303, 0x030a, 0x030e, 0x031e, 0x0328, + 0x0330, 0x0339, 0x033e, 0x0351, 0x0358, 0x0360, 0x036c, 0x0374, + 0x0379, 0x0382, 0x038b, 0x0391, 0x0397, 0x03a1, 0x03b3, 0x03be, + 0x03e9, 0x03f2, 0x03f6, 0x0403, 0x0409, 0x041f, 0x0438, 0x0440, + 0x0448, 0x044e, 0x0457, 0x046a, 0x0474, 0x047b, 0x0482, 0x048d, + 0x0492, 0x04b7, 0x04bb, 0x04bf, 0x04c6, 0x04cd, 0x04d3, 0x04da, + 0x04e3, 0x04e8, 0x04ed, 0x04f6, 0x04fe, 0x0506, 0x050d, 0x0521, // Entry 80 - BF - 0x052a, 0x0531, 0x0540, 0x054a, 0x054e, 0x0555, 0x0560, 0x056d, - 0x0576, 0x057d, 0x0584, 0x058c, 0x0595, 0x059c, 0x05a2, 0x05a9, - 0x05af, 0x05b8, 0x05c2, 0x05ce, 0x05d8, 0x05e8, 0x05f2, 0x05f6, - 0x0605, 0x060e, 0x0621, 0x0635, 0x063f, 0x064a, 0x0654, 0x0659, - 0x0662, 0x066a, 0x0670, 0x0676, 0x067f, 0x0689, 0x0691, 0x06a1, - 0x06a6, 0x06ad, 0x06b4, 0x06bd, 0x06c6, 0x06cf, 0x06d4, 0x06d9, - 0x06dd, 0x06ea, 0x06ee, 0x06f4, 0x06f8, 0x0708, 0x071b, 0x0725, - 0x072d, 0x0732, 0x074a, 0x075a, 0x0765, 0x0779, 0x0781, 0x0786, + 0x052c, 0x0536, 0x053d, 0x054c, 0x0556, 0x055a, 0x0561, 0x056c, + 0x0579, 0x0582, 0x0589, 0x0590, 0x0598, 0x05a1, 0x05a8, 0x05ae, + 0x05b5, 0x05bb, 0x05c4, 0x05ce, 0x05da, 0x05e4, 0x05f4, 0x05fe, + 0x0602, 0x0611, 0x061a, 0x062d, 0x0641, 0x064b, 0x0656, 0x0660, + 0x0665, 0x066e, 0x0676, 0x067c, 0x0682, 0x068b, 0x0695, 0x069d, + 0x06ad, 0x06b2, 0x06b9, 0x06c0, 0x06c9, 0x06d2, 0x06db, 0x06e0, + 0x06e5, 0x06e9, 0x06f6, 0x06fa, 0x0700, 0x0704, 0x0714, 0x0727, + 0x0731, 0x0739, 0x073e, 0x0756, 0x0766, 0x0771, 0x0785, 0x078d, // Entry C0 - FF - 0x078e, 0x0793, 0x07a2, 0x07aa, 0x07b3, 0x07ba, 0x07c1, 0x07c7, - 0x07d5, 0x07e5, 0x07ef, 0x07f5, 0x07fb, 0x0804, 0x080f, 0x0818, - 0x0830, 0x0839, 0x0845, 0x084f, 0x0856, 0x085e, 0x0866, 0x0871, - 0x0886, 0x0891, 0x089d, 0x08a3, 0x08ac, 0x08bc, 0x08d4, 0x08da, - 0x090a, 0x090e, 0x0916, 0x0922, 0x0929, 0x0933, 0x093f, 0x0947, - 0x094c, 0x0953, 0x0965, 0x096b, 0x0971, 0x0979, 0x0982, 0x0989, - 0x09ba, 0x09ca, 0x09d1, 0x09dc, 0x09e8, 0x0a06, 0x0a0f, 0x0a25, - 0x0a40, 0x0a47, 0x0a4e, 0x0a5e, 0x0a63, 0x0a69, 0x0a6e, 0x0a75, + 0x0792, 0x079a, 0x079f, 0x07ae, 0x07b6, 0x07bf, 0x07c6, 0x07cd, + 0x07d3, 0x07e1, 0x07f1, 0x07fb, 0x0801, 0x0807, 0x0810, 0x081b, + 0x0824, 0x083c, 0x0845, 0x0851, 0x085b, 0x0862, 0x086a, 0x0872, + 0x087d, 0x0892, 0x089d, 0x08a9, 0x08af, 0x08b8, 0x08c8, 0x08e0, + 0x08e6, 0x0916, 0x091a, 0x0922, 0x092e, 0x0935, 0x093f, 0x094b, + 0x0953, 0x0958, 0x095f, 0x0971, 0x0977, 0x097d, 0x0985, 0x098e, + 0x0995, 0x09c6, 0x09d6, 0x09e6, 0x09ed, 0x09f8, 0x0a04, 0x0a22, + 0x0a2b, 0x0a41, 0x0a5c, 0x0a63, 0x0a6a, 0x0a7a, 0x0a7f, 0x0a85, // Entry 100 - 13F - 0x0a80, 0x0a86, 0x0a8e, 0x0a9d, 0x0aa3, 0x0aa9, 0x0ab6, 0x0ac2, - 0x0aca, 0x0ad5, 0x0ae3, 0x0aee, 0x0afa, 0x0b09, 0x0b19, 0x0b20, - 0x0b32, 0x0b42, 0x0b4c, 0x0b56, 0x0b64, 0x0b6f, 0x0b7b, 0x0b85, - 0x0b98, 0x0ba2, 0x0ba7, 0x0bb5, 0x0bbf, 0x0bc5, 0x0bd0, 0x0bdc, - 0x0be7, 0x0bf6, -} // Size: 604 bytes - -var noRegionStr string = "" + // Size: 2812 bytes + 0x0a8a, 0x0a91, 0x0a9c, 0x0aa2, 0x0aaa, 0x0ab9, 0x0abf, 0x0ac5, + 0x0ad2, 0x0ade, 0x0ae6, 0x0af1, 0x0aff, 0x0b0a, 0x0b16, 0x0b25, + 0x0b35, 0x0b3c, 0x0b4e, 0x0b5e, 0x0b68, 0x0b72, 0x0b80, 0x0b8b, + 0x0b97, 0x0ba1, 0x0bb4, 0x0bbe, 0x0bc3, 0x0bd1, 0x0bdb, 0x0be1, + 0x0bec, 0x0bf8, 0x0c03, 0x0c12, +} // Size: 608 bytes + +const noRegionStr string = "" + // Size: 2814 bytes "AscensionAndorraDe forente arabiske emiraterAfghanistanAntigua og Barbud" + "aAnguillaAlbaniaArmeniaAngolaAntarktisArgentinaAmerikansk SamoaØsterrike" + "AustraliaArubaÅlandAserbajdsjanBosnia-HercegovinaBarbadosBangladeshBelgi" + @@ -42422,22 +47523,22 @@ var noRegionStr string = "" + // Size: 2812 bytes "yaNigeriaNicaraguaNederlandNorgeNepalNauruNiueNew ZealandOmanPanamaPeruF" + "ransk PolynesiaPapua Ny-GuineaFilippinenePakistanPolenSt. Pierre og Miqu" + "elonPitcairnPuerto RicoDet palestinske områdetPortugalPalauParaguayQatar" + - "ytre OseaniaRéunionRomaniaSerbiaRusslandRwandaSaudi-ArabiaSalomonøyeneSe" + + "Ytre OseaniaRéunionRomaniaSerbiaRusslandRwandaSaudi-ArabiaSalomonøyeneSe" + "ychelleneSudanSverigeSingaporeSt. HelenaSloveniaSvalbard og Jan MayenSlo" + "vakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSør-SudanSão Tomé og Prí" + "ncipeEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaTurks- og Caic" + "osøyeneTsjadDe franske sørterritorierTogoThailandTadsjikistanTokelauØst-" + "TimorTurkmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuvaluTaiwanTanzani" + - "aUkrainaUgandaUSAs ytre øyerUSAUruguayUsbekistanVatikanstatenSt. Vincent" + - " og GrenadineneVenezuelaDe britiske jomfruøyeneDe amerikanske jomfruøyen" + - "eVietnamVanuatuWallis og FutunaSamoaKosovoJemenMayotteSør-AfrikaZambiaZi" + - "mbabweukjent områdeverdenAfrikaNord-AmerikaSør-AmerikaOseaniaVest-Afrika" + - "Mellom-AmerikaØst-AfrikaNord-AfrikaSentral-AfrikaSørlige AfrikaAmerikaNo" + - "rdlige AmerikaKaribiaØst-AsiaSør-AsiaSørøst-AsiaSør-EuropaAustralasiaMel" + - "anesiaMikronesiaPolynesiaAsiaSentral-AsiaVest-AsiaEuropaØst-EuropaNord-E" + - "uropaVest-EuropaLatin-Amerika" - -var noRegionIdx = []uint16{ // 290 elements + "aUkrainaUgandaUSAs ytre øyerFNUSAUruguayUsbekistanVatikanstatenSt. Vince" + + "nt og GrenadineneVenezuelaDe britiske jomfruøyeneDe amerikanske jomfruøy" + + "eneVietnamVanuatuWallis og FutunaSamoaKosovoJemenMayotteSør-AfrikaZambia" + + "Zimbabweukjent områdeverdenAfrikaNord-AmerikaSør-AmerikaOseaniaVest-Afri" + + "kaMellom-AmerikaØst-AfrikaNord-AfrikaSentral-AfrikaSørlige AfrikaAmerika" + + "Nordlige AmerikaKaribiaØst-AsiaSør-AsiaSørøst-AsiaSør-EuropaAustralasiaM" + + "elanesiaMikronesiaPolynesiaAsiaSentral-AsiaVest-AsiaEuropaØst-EuropaNord" + + "-EuropaVest-EuropaLatin-Amerika" + +var noRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0058, 0x005f, 0x0065, 0x006e, 0x0077, 0x0087, 0x0091, 0x009a, 0x009f, @@ -42449,80 +47550,81 @@ var noRegionIdx = []uint16{ // 290 elements 0x0232, 0x0238, 0x0240, 0x0248, 0x0254, 0x025c, 0x0263, 0x026b, // Entry 40 - 7F 0x0285, 0x028c, 0x029c, 0x02a3, 0x02aa, 0x02af, 0x02ba, 0x02c1, - 0x02c7, 0x02ce, 0x02d0, 0x02d7, 0x02db, 0x02ea, 0x0301, 0x030b, - 0x0314, 0x0319, 0x0326, 0x032d, 0x0334, 0x0341, 0x0349, 0x034e, - 0x0357, 0x0360, 0x0366, 0x036c, 0x0376, 0x0387, 0x038d, 0x03b0, - 0x03b9, 0x03bd, 0x03ca, 0x03d0, 0x03e4, 0x03fc, 0x0404, 0x040b, - 0x0410, 0x0416, 0x0422, 0x042b, 0x0431, 0x0437, 0x043a, 0x043f, - 0x0464, 0x0468, 0x046c, 0x0472, 0x0478, 0x047e, 0x0485, 0x048b, - 0x0490, 0x0495, 0x04a0, 0x04a9, 0x04b1, 0x04b9, 0x04cd, 0x04d7, + 0x02c7, 0x02ce, 0x02d0, 0x02d0, 0x02d7, 0x02db, 0x02ea, 0x0301, + 0x030b, 0x0314, 0x0319, 0x0326, 0x032d, 0x0334, 0x0341, 0x0349, + 0x034e, 0x0357, 0x0360, 0x0366, 0x036c, 0x0376, 0x0387, 0x038d, + 0x03b0, 0x03b9, 0x03bd, 0x03ca, 0x03d0, 0x03e4, 0x03fc, 0x0404, + 0x040b, 0x0410, 0x0416, 0x0422, 0x042b, 0x0431, 0x0437, 0x043a, + 0x043f, 0x0464, 0x0468, 0x046c, 0x0472, 0x0478, 0x047e, 0x0485, + 0x048b, 0x0490, 0x0495, 0x04a0, 0x04a9, 0x04b1, 0x04b9, 0x04cd, // Entry 80 - BF - 0x04e1, 0x04e7, 0x04f3, 0x04fd, 0x0501, 0x0508, 0x0511, 0x051e, - 0x0527, 0x052e, 0x0535, 0x053c, 0x0545, 0x054b, 0x0550, 0x0557, - 0x055d, 0x0564, 0x056e, 0x057a, 0x0584, 0x0592, 0x059b, 0x059f, - 0x05ae, 0x05b6, 0x05c7, 0x05d5, 0x05df, 0x05e9, 0x05f3, 0x05f8, - 0x0601, 0x060a, 0x0610, 0x0616, 0x061e, 0x0626, 0x062d, 0x0639, - 0x063e, 0x0649, 0x0650, 0x0659, 0x0662, 0x0667, 0x066c, 0x0671, - 0x0675, 0x0680, 0x0684, 0x068a, 0x068e, 0x069e, 0x06ad, 0x06b8, - 0x06c0, 0x06c5, 0x06db, 0x06e3, 0x06ee, 0x0706, 0x070e, 0x0713, + 0x04d7, 0x04e1, 0x04e7, 0x04f3, 0x04fd, 0x0501, 0x0508, 0x0511, + 0x051e, 0x0527, 0x052e, 0x0535, 0x053c, 0x0545, 0x054b, 0x0550, + 0x0557, 0x055d, 0x0564, 0x056e, 0x057a, 0x0584, 0x0592, 0x059b, + 0x059f, 0x05ae, 0x05b6, 0x05c7, 0x05d5, 0x05df, 0x05e9, 0x05f3, + 0x05f8, 0x0601, 0x060a, 0x0610, 0x0616, 0x061e, 0x0626, 0x062d, + 0x0639, 0x063e, 0x0649, 0x0650, 0x0659, 0x0662, 0x0667, 0x066c, + 0x0671, 0x0675, 0x0680, 0x0684, 0x068a, 0x068e, 0x069e, 0x06ad, + 0x06b8, 0x06c0, 0x06c5, 0x06db, 0x06e3, 0x06ee, 0x0706, 0x070e, // Entry C0 - FF - 0x071b, 0x0720, 0x072c, 0x0734, 0x073b, 0x0741, 0x0749, 0x074f, - 0x075b, 0x0768, 0x0773, 0x0778, 0x077f, 0x0788, 0x0792, 0x079a, - 0x07af, 0x07b7, 0x07c3, 0x07cd, 0x07d4, 0x07db, 0x07e2, 0x07ec, - 0x0803, 0x080e, 0x081a, 0x081f, 0x0828, 0x0838, 0x084e, 0x0853, - 0x086d, 0x0871, 0x0879, 0x0885, 0x088c, 0x0896, 0x08a2, 0x08a9, - 0x08ae, 0x08b4, 0x08c6, 0x08cc, 0x08d2, 0x08da, 0x08e1, 0x08e7, - 0x08f6, 0x08f9, 0x0900, 0x090a, 0x0917, 0x0931, 0x093a, 0x0952, - 0x096d, 0x0974, 0x097b, 0x098b, 0x0990, 0x0996, 0x099b, 0x09a2, + 0x0713, 0x071b, 0x0720, 0x072c, 0x0734, 0x073b, 0x0741, 0x0749, + 0x074f, 0x075b, 0x0768, 0x0773, 0x0778, 0x077f, 0x0788, 0x0792, + 0x079a, 0x07af, 0x07b7, 0x07c3, 0x07cd, 0x07d4, 0x07db, 0x07e2, + 0x07ec, 0x0803, 0x080e, 0x081a, 0x081f, 0x0828, 0x0838, 0x084e, + 0x0853, 0x086d, 0x0871, 0x0879, 0x0885, 0x088c, 0x0896, 0x08a2, + 0x08a9, 0x08ae, 0x08b4, 0x08c6, 0x08cc, 0x08d2, 0x08da, 0x08e1, + 0x08e7, 0x08f6, 0x08f8, 0x08fb, 0x0902, 0x090c, 0x0919, 0x0933, + 0x093c, 0x0954, 0x096f, 0x0976, 0x097d, 0x098d, 0x0992, 0x0998, // Entry 100 - 13F - 0x09ad, 0x09b3, 0x09bb, 0x09c9, 0x09cf, 0x09d5, 0x09e1, 0x09ed, - 0x09f4, 0x09ff, 0x0a0d, 0x0a18, 0x0a23, 0x0a31, 0x0a40, 0x0a47, - 0x0a57, 0x0a5e, 0x0a67, 0x0a70, 0x0a7d, 0x0a88, 0x0a93, 0x0a9c, - 0x0aa6, 0x0aaf, 0x0ab3, 0x0abf, 0x0ac8, 0x0ace, 0x0ad9, 0x0ae4, - 0x0aef, 0x0afc, -} // Size: 604 bytes - -var paRegionStr string = "" + // Size: 7688 bytes + 0x099d, 0x09a4, 0x09af, 0x09b5, 0x09bd, 0x09cb, 0x09d1, 0x09d7, + 0x09e3, 0x09ef, 0x09f6, 0x0a01, 0x0a0f, 0x0a1a, 0x0a25, 0x0a33, + 0x0a42, 0x0a49, 0x0a59, 0x0a60, 0x0a69, 0x0a72, 0x0a7f, 0x0a8a, + 0x0a95, 0x0a9e, 0x0aa8, 0x0ab1, 0x0ab5, 0x0ac1, 0x0aca, 0x0ad0, + 0x0adb, 0x0ae6, 0x0af1, 0x0afe, +} // Size: 608 bytes + +const paRegionStr string = "" + // Size: 7700 bytes "ਅਸੈਂਸ਼ਨ ਟਾਪੂਅੰਡੋਰਾਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤਅਫ਼ਗਾਨਿਸਤਾਨਐਂਟੀਗੁਆ ਅਤੇ ਬਾਰਬੁਡਾਅੰਗੁਇਲਾ" + "ਅਲਬਾਨੀਆਅਰਮੀਨੀਆਅੰਗੋਲਾਅੰਟਾਰਕਟਿਕਾਅਰਜਨਟੀਨਾਅਮੈਰੀਕਨ ਸਮੋਆਆਸਟਰੀਆਆਸਟ੍ਰੇਲੀਆਅਰੂਬਾ" + "ਅਲੈਂਡ ਟਾਪੂਅਜ਼ਰਬਾਈਜਾਨਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾਬਾਰਬਾਡੋਸਬੰਗਲਾਦੇਸ਼ਬੈਲਜੀਅਮਬੁਰਕ" + "ੀਨਾ ਫ਼ਾਸੋਬੁਲਗਾਰੀਆਬਹਿਰੀਨਬੁਰੁੰਡੀਬੇਨਿਨਸੇਂਟ ਬਾਰਥੇਲੇਮੀਬਰਮੂਡਾਬਰੂਨੇਈਬੋਲੀਵੀਆਕੈ" + - "ਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡਬ੍ਰਾਜ਼ੀਲਬਹਾਮਾਸਭੂਟਾਨਬੌਵੇਟ ਟਾਪੂਬੋਟਸਵਾਨਾਬੇਲਾਰੂਸਬੇਲੀਜ਼ਕੈਨੇਡ" + + "ਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡਬ੍ਰਾਜ਼ੀਲਬਹਾਮਾਸਭੂਟਾਨਬੌਵੇਟ ਟਾਪੂਬੋਤਸਵਾਨਾਬੇਲਾਰੂਸਬੇਲੀਜ਼ਕੈਨੇਡ" + "ਾਕੋਕੋਸ (ਕੀਲਿੰਗ) ਟਾਪੂਕਾਂਗੋ - ਕਿੰਸ਼ਾਸਾਕੇਂਦਰੀ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜਕਾਂਗੋ - ਬ੍ਰਾਜ਼" + "ਾਵਿਲੇਸਵਿਟਜ਼ਰਲੈਂਡਕੋਟ ਡੀਵੋਆਰਕੁੱਕ ਟਾਪੂਚਿਲੀਕੈਮਰੂਨਚੀਨਕੋਲੰਬੀਆਕਲਿੱਪਰਟਨ ਟਾਪੂਕੋ" + - "ਸਟਾ ਰੀਕਾਕਿਊਬਾਕੇਪ ਵਰਡੇਕੁਰਾਕਾਓਕ੍ਰਿਸਮਿਸ ਟਾਪੂਸਾਇਪ੍ਰਸਚੈਕ ਗਣਰਾਜਜਰਮਨੀਡੀਇਗੋ ਗਾ" + - "ਰਸੀਆਜ਼ੀਬੂਤੀਡੈਨਮਾਰਕਡੋਮੀਨਿਕਾਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜਅਲਜੀਰੀਆਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾਇਕਵੇਡ" + - "ੋਰਇਸਟੋਨੀਆਮਿਸਰਪੱਛਮੀ ਸਹਾਰਾਇਰੀਟ੍ਰਿਆਸਪੇਨਇਥੋਪੀਆਯੂਰਪੀ ਯੂਨੀਅਨਫਿਨਲੈਂਡਫ਼ਿਜੀਫ਼ਾਕ" + - "ਲੈਂਡ ਟਾਪੂਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਫੈਰੋ ਟਾਪੂਫ਼ਰਾਂਸਗਬੋਨਯੂਨਾਈਟਡ ਕਿੰਗਡਮਗ੍ਰੇਨਾਡਾਜਾਰਜੀਆਫ" + - "਼ਰੈਂਚ ਗੁਆਨਾਗਰਨਜੀਘਾਨਾਜਿਬਰਾਲਟਰਗ੍ਰੀਨਲੈਂਡਗੈਂਬੀਆਗਿਨੀਗੁਆਡੇਲੋਪਭੂ-ਖੰਡੀ ਗਿਨੀਗ੍ਰ" + - "ੀਸਦੱਖਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂਗੁਆਟੇਮਾਲਾਗੁਆਮਗਿਨੀ-ਬਿਸਾਉਗੁਯਾਨਾਹਾਂਗ" + - " ਕਾਂਗ ਐਸਏਆਰ ਚੀਨਹਰਡ ਤੇ ਮੈਕਡੋਨਾਲਡ ਟਾਪੂਹੋਂਡੁਰਸਕਰੋਏਸ਼ੀਆਹੈਤੀਹੰਗਰੀਕੇਨਾਰੀ ਟਾਪੂਇ" + - "ੰਡੋਨੇਸ਼ੀਆਆਇਰਲੈਂਡਇਜ਼ਰਾਈਲਆਇਲ ਆਫ ਮੈਨਭਾਰਤਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਪ੍ਰਦੇਸ਼ਇਰਾਕ" + - "ਈਰਾਨਆਈਸਲੈਂਡਇਟਲੀਜਰਸੀਜਮਾਇਕਾਜਾਰਡਨਜਪਾਨਕੀਨੀਆਕਿਰਗਿਜ਼ਸਤਾਨਕੰਬੋਡੀਆਕਿਰਬਾਤੀਕੋਮੋਰੋ" + - "ਸਸੈਂਟ ਕਿਟਸ ਐਂਡ ਨੇਵਿਸਉੱਤਰੀ ਕੋਰੀਆਦੱਖਣੀ ਕੋਰੀਆਕੁਵੈਤਕੇਮੈਨ ਟਾਪੂਕਜ਼ਾਖਸਤਾਨਲਾਓਸ" + - "ਲੈਬਨਾਨਸੇਂਟ ਲੂਸੀਆਲਿਚੇਂਸਟਾਇਨਸ੍ਰੀ ਲੰਕਾਲਾਈਬੀਰੀਆਲੇਸੋਥੋਲਿਥੁਆਨੀਆਲਕਜ਼ਮਬਰਗਲਾਟਵੀ" + - "ਆਲੀਬੀਆਮੋਰੱਕੋਮੋਨਾਕੋਮੋਲਡੋਵਾਮੋਂਟੇਨੇਗਰੋਸੇਂਟ ਮਾਰਟਿਨਮੈਡਾਗਾਸਕਰਮਾਰਸ਼ਲ ਟਾਪੂਮੈਕਡ" + - "ੋਨੀਆਮਾਲੀਮਿਆਂਮਾਰ (ਬਰਮਾ)ਮੰਗੋਲੀਆਮਕਾਉ ਐਸਏਆਰ ਚੀਨਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂਮਾਰਟੀਨਿਕਮ" + - "ੋਰਿਟਾਨੀਆਮੋਂਟਸੇਰਾਤਮਾਲਟਾਮੌਰਿਸ਼ਸਮਾਲਦੀਵਮਲਾਵੀਮੈਕਸੀਕੋਮਲੇਸ਼ੀਆਮੋਜ਼ਾਮਬੀਕਨਾਮੀਬੀਆ" + - "ਨਿਊ ਕੈਲੇਡੋਨੀਆਨਾਈਜਰਨੋਰਫੌਕ ਟਾਪੂਨਾਈਜੀਰੀਆਨਿਕਾਰਾਗੁਆਨੀਦਰਲੈਂਡਨਾਰਵੇਨੇਪਾਲਨਾਉਰੂਨ" + - "ਿਯੂਨਿਊਜ਼ੀਲੈਂਡਓਮਾਨਪਨਾਮਾਪੇਰੂਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆਪਾਪੂਆ ਨਿਊ ਗਿਨੀਫਿਲੀਪੀਂਸਪਾਕਿਸਤ" + - "ਾਨਪੋਲੈਂਡਸੈਂਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨਪਿਟਕੇਰਨ ਟਾਪੂਪਿਊਰਟੋ ਰਿਕੋਫਿਲੀਸਤੀਨੀ ਖੇਤਰਪੁਰਤ" + - "ਗਾਲਪਲਾਉਪੈਰਾਗਵੇਕਤਰਆਊਟਲਾਇੰਗ ਓਸ਼ੀਨੀਆਰਿਯੂਨੀਅਨਰੋਮਾਨੀਆਸਰਬੀਆਰੂਸਰਵਾਂਡਾਸਾਊਦੀ ਅਰ" + - "ਬਸੋਲੋਮਨ ਟਾਪੂਸੇਸ਼ਲਸਸੂਡਾਨਸਵੀਡਨਸਿੰਗਾਪੁਰਸੇਂਟ ਹੇਲੇਨਾਸਲੋਵੇਨੀਆਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ" + - " ਮਾਯੇਨਸਲੋਵਾਕੀਆਸਿਏਰਾ ਲਿਓਨਸੈਨ ਮਰੀਨੋਸੇਨੇਗਲਸੋਮਾਲੀਆਸੂਰੀਨਾਮਦੱਖਣੀ ਸੂਡਾਨਸਾਓ ਟੋਮ " + - "ਅਤੇ ਪ੍ਰਿੰਸੀਪੇਅਲ ਸਲਵਾਡੋਰਸਿੰਟ ਮਾਰਟੀਨਸੀਰੀਆਸਵਾਜ਼ੀਲੈਂਡਟ੍ਰਿਸਟਾਨ ਦਾ ਕੁੰਹਾਟੁਰਕ" + - "ਸ ਅਤੇ ਕੈਕੋਸ ਟਾਪੂਚਾਡਫਰੈਂਚ ਦੱਖਣੀ ਪ੍ਰਦੇਸ਼ਟੋਗੋਥਾਈਲੈਂਡਤਾਜਿਕਿਸਤਾਨਟੋਕੇਲਾਉਤਿਮੋ" + - "ਰ-ਲੇਸਤੇਤੁਰਕਮੇਨਿਸਤਾਨਟਿਊਨੀਸ਼ੀਆਟੌਂਗਾਤੁਰਕੀਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋਟੁਵਾਲੂਤਾਇਵਾਨ" + - "ਤਨਜ਼ਾਨੀਆਯੂਕਰੇਨਯੂਗਾਂਡਾਯੂ.ਐਸ. ਦੂਰ-ਦੁਰਾਡੇ ਟਾਪੂਸੰਯੁਕਤ ਰਾਜਉਰੂਗਵੇਉਜ਼ਬੇਕਿਸਤਾਨ" + - "ਵੈਟੀਕਨ ਸਿਟੀਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸਵੇਨੇਜ਼ੂਏਲਾਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ ਟਾਪੂਯੂ " + - "ਐਸ ਵਰਜਿਨ ਟਾਪੂਵੀਅਤਨਾਮਵਾਨੂਆਟੂਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾਸਾਮੋਆਕੋਸੋਵੋਯਮਨਮਾਯੋਟੀਦੱਖਣੀ ਅ" + - "ਫਰੀਕਾਜ਼ਾਮਬੀਆਜ਼ਿੰਬਾਬਵੇਅਣਪਛਾਤਾ ਖੇਤਰਸੰਸਾਰਅਫ਼ਰੀਕਾਉੱਤਰ ਅਮਰੀਕਾਦੱਖਣੀ ਅਮਰੀਕਾਓਸ" + - "਼ੇਨੀਆਪੱਛਮੀ ਅਫ਼ਰੀਕਾਕੇਂਦਰੀ ਅਮਰੀਕਾਪੂਰਬੀ ਅਫ਼ਰੀਕਾਉੱਤਰੀ ਅਫ਼ਰੀਕਾਮੱਧ ਅਫ਼ਰੀਕਾਦੱ" + - "ਖਣੀ ਅਫ਼ਰੀਕਾਅਮਰੀਕਾਉੱਤਰੀ ਅਮਰੀਕਾਕੈਰੇਬੀਆਈਪੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਏਸ਼ੀਆਦੱਖਣ-ਪੂਰਬੀ " + - "ਏਸ਼ੀਆਦੱਖਣੀ ਯੂਰਪਆਸਟਰੇਲੇਸ਼ੀਆਮੇਲਾਨੇਸ਼ੀਆਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਈ ਖੇਤਰਪੋਲੀਨੇਸ਼ੀਆਏਸ਼ੀਆ" + - "ਕੇਂਦਰੀ ਏਸ਼ੀਆਪੱਛਮੀ ਏਸ਼ੀਆਯੂਰਪਪੂਰਬੀ ਯੂਰਪਉੱਤਰੀ ਯੂਰਪਪੱਛਮੀ ਯੂਰਪਲਾਤੀਨੀ ਅਮਰੀਕਾ" - -var paRegionIdx = []uint16{ // 290 elements + "ਸਟਾ ਰੀਕਾਕਿਊਬਾਕੇਪ ਵਰਡੇਕੁਰਾਕਾਓਕ੍ਰਿਸਮਿਸ ਟਾਪੂਸਾਇਪ੍ਰਸਚੈਕੀਆਜਰਮਨੀਡੀਇਗੋ ਗਾਰਸੀਆ" + + "ਜ਼ੀਬੂਤੀਡੈਨਮਾਰਕਡੋਮੀਨਿਕਾਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜਅਲਜੀਰੀਆਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾਇਕਵੇਡੋਰਇਸ" + + "ਟੋਨੀਆਮਿਸਰਪੱਛਮੀ ਸਹਾਰਾਇਰੀਟ੍ਰਿਆਸਪੇਨਇਥੋਪੀਆਯੂਰਪੀ ਸੰਘਫਿਨਲੈਂਡਫ਼ਿਜੀਫ਼ਾਕਲੈਂਡ ਟਾ" + + "ਪੂਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਫੈਰੋ ਟਾਪੂਫ਼ਰਾਂਸਗਬੋਨਯੂਨਾਈਟਡ ਕਿੰਗਡਮਗ੍ਰੇਨਾਡਾਜਾਰਜੀਆਫਰੈਂਚ ਗੁ" + + "ਇਆਨਾਗਰਨਜੀਘਾਨਾਜਿਬਰਾਲਟਰਗ੍ਰੀਨਲੈਂਡਗੈਂਬੀਆਗਿਨੀਗੁਆਡੇਲੋਪਭੂ-ਖੰਡੀ ਗਿਨੀਗ੍ਰੀਸਦੱਖਣੀ" + + " ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂਗੁਆਟੇਮਾਲਾਗੁਆਮਗਿਨੀ-ਬਿਸਾਉਗੁਯਾਨਾਹਾਂਗ ਕਾਂਗ ਐਸਏ" + + "ਆਰ ਚੀਨਹਰਡ ਤੇ ਮੈਕਡੋਨਾਲਡ ਟਾਪੂਹੋਂਡੁਰਸਕਰੋਏਸ਼ੀਆਹੈਤੀਹੰਗਰੀਕੇਨਾਰੀ ਟਾਪੂਇੰਡੋਨੇਸ਼" + + "ੀਆਆਇਰਲੈਂਡਇਜ਼ਰਾਈਲਆਇਲ ਆਫ ਮੈਨਭਾਰਤਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਖਿੱਤਾਇਰਾਕਈਰਾਨਆਈਸਲੈ" + + "ਂਡਇਟਲੀਜਰਸੀਜਮਾਇਕਾਜਾਰਡਨਜਪਾਨਕੀਨੀਆਕਿਰਗਿਜ਼ਸਤਾਨਕੰਬੋਡੀਆਕਿਰਬਾਤੀਕੋਮੋਰੋਸਸੇਂਟ ਕਿਟ" + + "ਸ ਐਂਡ ਨੇਵਿਸਉੱਤਰ ਕੋਰੀਆਦੱਖਣ ਕੋਰੀਆਕੁਵੈਤਕੇਮੈਨ ਟਾਪੂਕਜ਼ਾਖਸਤਾਨਲਾਓਸਲੈਬਨਾਨਸੇਂਟ " + + "ਲੂਸੀਆਲਿਚੇਂਸਟਾਇਨਸ੍ਰੀ ਲੰਕਾਲਾਈਬੀਰੀਆਲੇਸੋਥੋਲਿਥੁਆਨੀਆਲਕਜ਼ਮਬਰਗਲਾਤਵੀਆਲੀਬੀਆਮੋਰੱਕ" + + "ੋਮੋਨਾਕੋਮੋਲਡੋਵਾਮੋਂਟੇਨੇਗਰੋਸੇਂਟ ਮਾਰਟਿਨਮੈਡਾਗਾਸਕਰਮਾਰਸ਼ਲ ਟਾਪੂਮੈਕਡੋਨੀਆਮਾਲੀਮਿਆ" + + "ਂਮਾਰ (ਬਰਮਾ)ਮੰਗੋਲੀਆਮਕਾਉ ਐਸਏਆਰ ਚੀਨਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂਮਾਰਟੀਨਿਕਮੋਰਿਟਾਨੀਆਮੋਂ" + + "ਟਸੇਰਾਤਮਾਲਟਾਮੌਰਿਸ਼ਸਮਾਲਦੀਵਮਲਾਵੀਮੈਕਸੀਕੋਮਲੇਸ਼ੀਆਮੋਜ਼ਾਮਬੀਕਨਾਮੀਬੀਆਨਿਊ ਕੈਲੇਡੋਨ" + + "ੀਆਨਾਈਜਰਨੋਰਫੌਕ ਟਾਪੂਨਾਈਜੀਰੀਆਨਿਕਾਰਾਗੁਆਨੀਦਰਲੈਂਡਨਾਰਵੇਨੇਪਾਲਨਾਉਰੂਨਿਯੂਨਿਊਜ਼ੀਲੈ" + + "ਂਡਓਮਾਨਪਨਾਮਾਪੇਰੂਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆਪਾਪੂਆ ਨਿਊ ਗਿਨੀਫਿਲੀਪੀਨਜਪਾਕਿਸਤਾਨਪੋਲੈਂਡਸੇਂ" + + "ਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨਪਿਟਕੇਰਨ ਟਾਪੂਪਿਊਰਟੋ ਰਿਕੋਫਿਲੀਸਤੀਨੀ ਇਲਾਕਾਪੁਰਤਗਾਲਪਲਾਉਪੈਰ" + + "ਾਗਵੇਕਤਰਆਊਟਲਾਇੰਗ ਓਸ਼ੀਨੀਆਰਿਯੂਨੀਅਨਰੋਮਾਨੀਆਸਰਬੀਆਰੂਸਰਵਾਂਡਾਸਾਊਦੀ ਅਰਬਸੋਲੋਮਨ ਟਾ" + + "ਪੂਸੇਸ਼ਲਸਸੂਡਾਨਸਵੀਡਨਸਿੰਗਾਪੁਰਸੇਂਟ ਹੇਲੇਨਾਸਲੋਵੇਨੀਆਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ ਮਾਯੇਨਸਲੋਵ" + + "ਾਕੀਆਸਿਏਰਾ ਲਿਓਨਸੈਨ ਮਰੀਨੋਸੇਨੇਗਲਸੋਮਾਲੀਆਸੂਰੀਨਾਮਦੱਖਣ ਸੁਡਾਨਸਾਓ ਟੋਮ ਅਤੇ ਪ੍ਰਿੰ" + + "ਸੀਪੇਅਲ ਸਲਵਾਡੋਰਸਿੰਟ ਮਾਰਟੀਨਸੀਰੀਆਸਵਾਜ਼ੀਲੈਂਡਟ੍ਰਿਸਟਾਨ ਦਾ ਕੁੰਹਾਟੁਰਕਸ ਅਤੇ ਕੈਕ" + + "ੋਸ ਟਾਪੂਚਾਡਫਰੈਂਚ ਦੱਖਣੀ ਪ੍ਰਦੇਸ਼ਟੋਗੋਥਾਈਲੈਂਡਤਾਜਿਕਿਸਤਾਨਟੋਕੇਲਾਉਤਿਮੋਰ-ਲੇਸਤੇਤੁ" + + "ਰਕਮੇਨਿਸਤਾਨਟਿਊਨੀਸ਼ੀਆਟੌਂਗਾਤੁਰਕੀਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋਟੁਵਾਲੂਤਾਇਵਾਨਤਨਜ਼ਾਨੀਆਯ" + + "ੂਕਰੇਨਯੂਗਾਂਡਾਯੂ.ਐੱਸ. ਦੂਰ-ਦੁਰਾਡੇ ਟਾਪੂਸੰਯੁਕਤ ਰਾਸ਼ਟਰਸੰਯੁਕਤ ਰਾਜਉਰੂਗਵੇਉਜ਼ਬੇਕ" + + "ਿਸਤਾਨਵੈਟੀਕਨ ਸਿਟੀਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸਵੇਨੇਜ਼ੂਏਲਾਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ ਟਾ" + + "ਪੂਯੂ ਐੱਸ ਵਰਜਿਨ ਟਾਪੂਵੀਅਤਨਾਮਵਾਨੂਆਟੂਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾਸਾਮੋਆਕੋਸੋਵੋਯਮਨਮਾਯੋਟੀਦ" + + "ੱਖਣ ਅਫਰੀਕਾਜ਼ਾਮਬੀਆਜ਼ਿੰਬਾਬਵੇਅਣਪਛਾਤਾ ਇਲਾਕਾਸੰਸਾਰਅਫ਼ਰੀਕਾਉੱਤਰ ਅਮਰੀਕਾਦੱਖਣ ਅਮਰ" + + "ੀਕਾਓਸ਼ੇਨੀਆਪੱਛਮੀ ਅਫ਼ਰੀਕਾਕੇਂਦਰੀ ਅਮਰੀਕਾਪੂਰਬੀ ਅਫ਼ਰੀਕਾਉੱਤਰੀ ਅਫ਼ਰੀਕਾਮੱਧ ਅਫ਼ਰ" + + "ੀਕਾਦੱਖਣੀ ਅਫ਼ਰੀਕਾਅਮਰੀਕਾਉੱਤਰੀ ਅਮਰੀਕਾਕੈਰੇਬੀਆਈਪੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਏਸ਼ੀਆਦੱਖਣ-ਪ" + + "ੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਯੂਰਪਆਸਟਰੇਲੇਸ਼ੀਆਮੇਲਾਨੇਸ਼ੀਆਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਈ ਇਲਾਕਾਪੋਲੀਨੇਸ਼ੀ" + + "ਆਏਸ਼ੀਆਕੇਂਦਰੀ ਏਸ਼ੀਆਪੱਛਮੀ ਏਸ਼ੀਆਯੂਰਪਪੂਰਬੀ ਯੂਰਪਉੱਤਰੀ ਯੂਰਪਪੱਛਮੀ ਯੂਰਪਲਾਤੀਨੀ " + + "ਅਮਰੀਕਾ" + +var paRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0022, 0x0034, 0x0063, 0x0084, 0x00b9, 0x00ce, 0x00e3, 0x00f8, 0x010a, 0x0128, 0x0140, 0x0162, 0x0174, 0x018f, 0x019e, @@ -42531,133 +47633,134 @@ var paRegionIdx = []uint16{ // 290 elements 0x037b, 0x038d, 0x039c, 0x03b8, 0x03d0, 0x03e5, 0x03f7, 0x0409, 0x043a, 0x0464, 0x049c, 0x04cf, 0x04f0, 0x050c, 0x0525, 0x0531, 0x0543, 0x054c, 0x0561, 0x0586, 0x05a2, 0x05b1, 0x05c7, 0x05dc, - 0x0601, 0x0616, 0x062f, 0x063e, 0x0660, 0x0675, 0x068a, 0x06a2, + 0x0601, 0x0616, 0x0625, 0x0634, 0x0656, 0x066b, 0x0680, 0x0698, // Entry 40 - 7F - 0x06cd, 0x06e2, 0x0711, 0x0726, 0x073b, 0x0747, 0x0766, 0x077e, - 0x078a, 0x079c, 0x07be, 0x07d3, 0x07e2, 0x0807, 0x082e, 0x0847, - 0x0859, 0x0865, 0x088d, 0x08a5, 0x08b7, 0x08d9, 0x08e8, 0x08f4, - 0x090c, 0x0927, 0x0939, 0x0945, 0x095d, 0x097d, 0x098c, 0x09eb, - 0x0a06, 0x0a12, 0x0a2e, 0x0a40, 0x0a73, 0x0aac, 0x0ac1, 0x0ad9, - 0x0ae5, 0x0af4, 0x0b13, 0x0b31, 0x0b46, 0x0b5b, 0x0b75, 0x0b81, - 0x0bd2, 0x0bde, 0x0bea, 0x0bff, 0x0c0b, 0x0c17, 0x0c29, 0x0c38, - 0x0c44, 0x0c53, 0x0c74, 0x0c89, 0x0c9e, 0x0cb3, 0x0ce6, 0x0d05, + 0x06c3, 0x06d8, 0x0707, 0x071c, 0x0731, 0x073d, 0x075c, 0x0774, + 0x0780, 0x0792, 0x07ab, 0x07ab, 0x07c0, 0x07cf, 0x07f4, 0x081b, + 0x0834, 0x0846, 0x0852, 0x087a, 0x0892, 0x08a4, 0x08c6, 0x08d5, + 0x08e1, 0x08f9, 0x0914, 0x0926, 0x0932, 0x094a, 0x096a, 0x0979, + 0x09d8, 0x09f3, 0x09ff, 0x0a1b, 0x0a2d, 0x0a60, 0x0a99, 0x0aae, + 0x0ac6, 0x0ad2, 0x0ae1, 0x0b00, 0x0b1e, 0x0b33, 0x0b48, 0x0b62, + 0x0b6e, 0x0bb9, 0x0bc5, 0x0bd1, 0x0be6, 0x0bf2, 0x0bfe, 0x0c10, + 0x0c1f, 0x0c2b, 0x0c3a, 0x0c5b, 0x0c70, 0x0c85, 0x0c9a, 0x0ccd, // Entry 80 - BF - 0x0d24, 0x0d33, 0x0d4f, 0x0d6a, 0x0d76, 0x0d88, 0x0da4, 0x0dc2, - 0x0ddb, 0x0df3, 0x0e05, 0x0e1d, 0x0e35, 0x0e47, 0x0e56, 0x0e68, - 0x0e7a, 0x0e8f, 0x0ead, 0x0ecc, 0x0ee7, 0x0f06, 0x0f1e, 0x0f2a, - 0x0f4e, 0x0f63, 0x0f89, 0x0fbb, 0x0fd3, 0x0fee, 0x1009, 0x1018, - 0x102d, 0x103f, 0x104e, 0x1063, 0x1078, 0x1093, 0x10a8, 0x10cd, - 0x10dc, 0x10fb, 0x1113, 0x112e, 0x1146, 0x1155, 0x1164, 0x1173, - 0x117f, 0x119d, 0x11a9, 0x11b8, 0x11c4, 0x11f2, 0x1218, 0x1230, - 0x1248, 0x125a, 0x1293, 0x12b5, 0x12d4, 0x12fc, 0x1311, 0x131d, + 0x0ce9, 0x0d05, 0x0d14, 0x0d30, 0x0d4b, 0x0d57, 0x0d69, 0x0d85, + 0x0da3, 0x0dbc, 0x0dd4, 0x0de6, 0x0dfe, 0x0e16, 0x0e28, 0x0e37, + 0x0e49, 0x0e5b, 0x0e70, 0x0e8e, 0x0ead, 0x0ec8, 0x0ee7, 0x0eff, + 0x0f0b, 0x0f2f, 0x0f44, 0x0f6a, 0x0f9c, 0x0fb4, 0x0fcf, 0x0fea, + 0x0ff9, 0x100e, 0x1020, 0x102f, 0x1044, 0x1059, 0x1074, 0x1089, + 0x10ae, 0x10bd, 0x10dc, 0x10f4, 0x110f, 0x1127, 0x1136, 0x1145, + 0x1154, 0x1160, 0x117e, 0x118a, 0x1199, 0x11a5, 0x11d3, 0x11f9, + 0x1211, 0x1229, 0x123b, 0x1274, 0x1296, 0x12b5, 0x12e0, 0x12f5, // Entry C0 - FF - 0x1332, 0x133b, 0x1369, 0x1381, 0x1396, 0x13a5, 0x13ae, 0x13c0, - 0x13d9, 0x13f8, 0x140a, 0x1419, 0x1428, 0x1440, 0x145f, 0x1477, - 0x14b0, 0x14c8, 0x14e4, 0x14fd, 0x150f, 0x1524, 0x1539, 0x1558, - 0x1591, 0x15ad, 0x15cc, 0x15db, 0x15f9, 0x1628, 0x165e, 0x1667, - 0x169c, 0x16a8, 0x16bd, 0x16db, 0x16f0, 0x170f, 0x1733, 0x174e, - 0x175d, 0x176c, 0x17a4, 0x17b6, 0x17c8, 0x17e0, 0x17f2, 0x1807, - 0x183f, 0x185b, 0x186d, 0x188e, 0x18ad, 0x18f8, 0x1916, 0x194b, - 0x1975, 0x198a, 0x199f, 0x19cb, 0x19da, 0x19ec, 0x19f5, 0x1a07, + 0x1301, 0x1316, 0x131f, 0x134d, 0x1365, 0x137a, 0x1389, 0x1392, + 0x13a4, 0x13bd, 0x13dc, 0x13ee, 0x13fd, 0x140c, 0x1424, 0x1443, + 0x145b, 0x1494, 0x14ac, 0x14c8, 0x14e1, 0x14f3, 0x1508, 0x151d, + 0x1539, 0x1572, 0x158e, 0x15ad, 0x15bc, 0x15da, 0x1609, 0x163f, + 0x1648, 0x167d, 0x1689, 0x169e, 0x16bc, 0x16d1, 0x16f0, 0x1714, + 0x172f, 0x173e, 0x174d, 0x1785, 0x1797, 0x17a9, 0x17c1, 0x17d3, + 0x17e8, 0x1823, 0x1848, 0x1864, 0x1876, 0x1897, 0x18b6, 0x1901, + 0x191f, 0x1954, 0x1981, 0x1996, 0x19ab, 0x19d7, 0x19e6, 0x19f8, // Entry 100 - 13F - 0x1a29, 0x1a3e, 0x1a59, 0x1a7b, 0x1a8a, 0x1a9f, 0x1abe, 0x1ae0, - 0x1af5, 0x1b1a, 0x1b3f, 0x1b64, 0x1b89, 0x1ba8, 0x1bcd, 0x1bdf, - 0x1c01, 0x1c19, 0x1c38, 0x1c57, 0x1c83, 0x1c9f, 0x1cc0, 0x1cde, - 0x1d15, 0x1d33, 0x1d42, 0x1d64, 0x1d83, 0x1d8f, 0x1dab, 0x1dc7, - 0x1de3, 0x1e08, -} // Size: 604 bytes - -var plRegionStr string = "" + // Size: 3142 bytes + 0x1a01, 0x1a13, 0x1a32, 0x1a47, 0x1a62, 0x1a87, 0x1a96, 0x1aab, + 0x1aca, 0x1ae9, 0x1afe, 0x1b23, 0x1b48, 0x1b6d, 0x1b92, 0x1bb1, + 0x1bd6, 0x1be8, 0x1c0a, 0x1c22, 0x1c41, 0x1c60, 0x1c8c, 0x1ca8, + 0x1cc9, 0x1ce7, 0x1d21, 0x1d3f, 0x1d4e, 0x1d70, 0x1d8f, 0x1d9b, + 0x1db7, 0x1dd3, 0x1def, 0x1e14, +} // Size: 608 bytes + +const plRegionStr string = "" + // Size: 3165 bytes "Wyspa WniebowstąpieniaAndoraZjednoczone Emiraty ArabskieAfganistanAntigu" + "a i BarbudaAnguillaAlbaniaArmeniaAngolaAntarktykaArgentynaSamoa Amerykań" + "skieAustriaAustraliaArubaWyspy AlandzkieAzerbejdżanBośnia i HercegowinaB" + "arbadosBangladeszBelgiaBurkina FasoBułgariaBahrajnBurundiBeninSaint-Bart" + - "hélemyBermudyBrunei DarussalamBoliwiaNiderlandy KaraibskieBrazyliaBahamy" + - "BhutanWyspa BouvetaBotswanaBiałoruśBelizeKanadaWyspy KokosoweDemokratycz" + - "na Republika KongaRepublika ŚrodkowoafrykańskaKongoSzwajcariaCôte d’Ivoi" + - "reWyspy CookaChileKamerunChinyKolumbiaClippertonKostarykaKubaRepublika Z" + - "ielonego PrzylądkaCuraçaoWyspa Bożego NarodzeniaCyprCzechyNiemcyDiego Ga" + - "rciaDżibutiDaniaDominikaDominikanaAlgieriaCeuta i MelillaEkwadorEstoniaE" + - "giptSahara ZachodniaErytreaHiszpaniaEtiopiaUnia EuropejskaFinlandiaFidżi" + - "FalklandyMikronezjaWyspy OwczeFrancjaGabonWielka BrytaniaGrenadaGruzjaGu" + - "jana FrancuskaGuernseyGhanaGibraltarGrenlandiaGambiaGwineaGwadelupaGwine" + - "a RównikowaGrecjaGeorgia Południowa i Sandwich PołudniowyGwatemalaGuamGw" + - "inea BissauGujanaSRA Hongkong (Chiny)Wyspy Heard i McDonaldaHondurasChor" + - "wacjaHaitiWęgryWyspy KanaryjskieIndonezjaIrlandiaIzraelWyspa ManIndieBry" + - "tyjskie Terytorium Oceanu IndyjskiegoIrakIranIslandiaWłochyJerseyJamajka" + - "JordaniaJaponiaKeniaKirgistanKambodżaKiribatiKomorySaint Kitts i NevisKo" + - "rea PółnocnaKorea PołudniowaKuwejtKajmanyKazachstanLaosLibanSaint LuciaL" + - "iechtensteinSri LankaLiberiaLesothoLitwaLuksemburgŁotwaLibiaMarokoMonako" + - "MołdawiaCzarnogóraSaint-MartinMadagaskarWyspy MarshallaMacedoniaMaliMjan" + - "ma (Birma)MongoliaSRA Makau (Chiny)Mariany PółnocneMartynikaMauretaniaMo" + - "ntserratMaltaMauritiusMalediwyMalawiMeksykMalezjaMozambikNamibiaNowa Kal" + - "edoniaNigerNorfolkNigeriaNikaraguaHolandiaNorwegiaNepalNauruNiueNowa Zel" + - "andiaOmanPanamaPeruPolinezja FrancuskaPapua-Nowa GwineaFilipinyPakistanP" + - "olskaSaint-Pierre i MiquelonPitcairnPortorykoTerytoria PalestyńskiePortu" + - "galiaPalauParagwajKatarOceania inneReunionRumuniaSerbiaRosjaRwandaArabia" + - " SaudyjskaWyspy SalomonaSeszeleSudanSzwecjaSingapurWyspa Świętej HelenyS" + - "łoweniaSvalbard i Jan MayenSłowacjaSierra LeoneSan MarinoSenegalSomalia" + - "SurinamSudan PołudniowyWyspy Świętego Tomasza i KsiążęcaSalwadorSint Maa" + - "rtenSyriaSuaziTristan da CunhaTurks i CaicosCzadFrancuskie Terytoria Poł" + - "udniowe i AntarktyczneTogoTajlandiaTadżykistanTokelauTimor WschodniTurkm" + - "enistanTunezjaTongaTurcjaTrynidad i TobagoTuvaluTajwanTanzaniaUkrainaUga" + - "ndaDalekie Wyspy Mniejsze Stanów ZjednoczonychStany ZjednoczoneUrugwajUz" + - "bekistanWatykanSaint Vincent i GrenadynyWenezuelaBrytyjskie Wyspy Dziewi" + - "czeWyspy Dziewicze Stanów ZjednoczonychWietnamVanuatuWallis i FutunaSamo" + - "aKosowoJemenMajottaRepublika Południowej AfrykiZambiaZimbabweNieznany re" + - "gionświatAfrykaAmeryka PółnocnaAmeryka PołudniowaOceaniaAfryka Zachodnia" + - "Ameryka ŚrodkowaAfryka WschodniaAfryka PółnocnaAfryka ŚrodkowaAfryka Poł" + - "udniowaAmerykaAmeryka Północna (USA, Kanada)KaraibyAzja WschodniaAzja Po" + - "łudniowaAzja Południowo-WschodniaEuropa PołudniowaAustralazjaMelanezjaR" + - "egion MikronezjiPolinezjaAzjaAzja ŚrodkowaAzja ZachodniaEuropaEuropa Wsc" + - "hodniaEuropa PółnocnaEuropa ZachodniaAmeryka Łacińska" - -var plRegionIdx = []uint16{ // 290 elements + "hélemyBermudyBruneiBoliwiaNiderlandy KaraibskieBrazyliaBahamyBhutanWyspa" + + " BouvetaBotswanaBiałoruśBelizeKanadaWyspy KokosoweDemokratyczna Republik" + + "a KongaRepublika ŚrodkowoafrykańskaKongoSzwajcariaCôte d’IvoireWyspy Coo" + + "kaChileKamerunChinyKolumbiaClippertonKostarykaKubaRepublika Zielonego Pr" + + "zylądkaCuraçaoWyspa Bożego NarodzeniaCyprCzechyNiemcyDiego GarciaDżibuti" + + "DaniaDominikaDominikanaAlgieriaCeuta i MelillaEkwadorEstoniaEgiptSahara " + + "ZachodniaErytreaHiszpaniaEtiopiaUnia EuropejskaFinlandiaFidżiFalklandyMi" + + "kronezjaWyspy OwczeFrancjaGabonWielka BrytaniaGrenadaGruzjaGujana Francu" + + "skaGuernseyGhanaGibraltarGrenlandiaGambiaGwineaGwadelupaGwinea Równikowa" + + "GrecjaGeorgia Południowa i Sandwich PołudniowyGwatemalaGuamGwinea Bissau" + + "GujanaSRA Hongkong (Chiny)Wyspy Heard i McDonaldaHondurasChorwacjaHaitiW" + + "ęgryWyspy KanaryjskieIndonezjaIrlandiaIzraelWyspa ManIndieBrytyjskie Te" + + "rytorium Oceanu IndyjskiegoIrakIranIslandiaWłochyJerseyJamajkaJordaniaJa" + + "poniaKeniaKirgistanKambodżaKiribatiKomorySaint Kitts i NevisKorea Północ" + + "naKorea PołudniowaKuwejtKajmanyKazachstanLaosLibanSaint LuciaLiechtenste" + + "inSri LankaLiberiaLesothoLitwaLuksemburgŁotwaLibiaMarokoMonakoMołdawiaCz" + + "arnogóraSaint-MartinMadagaskarWyspy MarshallaMacedoniaMaliMjanma (Birma)" + + "MongoliaSRA Makau (Chiny)Mariany PółnocneMartynikaMauretaniaMontserratMa" + + "ltaMauritiusMalediwyMalawiMeksykMalezjaMozambikNamibiaNowa KaledoniaNige" + + "rNorfolkNigeriaNikaraguaHolandiaNorwegiaNepalNauruNiueNowa ZelandiaOmanP" + + "anamaPeruPolinezja FrancuskaPapua-Nowa GwineaFilipinyPakistanPolskaSaint" + + "-Pierre i MiquelonPitcairnPortorykoTerytoria PalestyńskiePortugaliaPalau" + + "ParagwajKatarOceania inneReunionRumuniaSerbiaRosjaRwandaArabia Saudyjska" + + "Wyspy SalomonaSeszeleSudanSzwecjaSingapurWyspa Świętej HelenySłoweniaSva" + + "lbard i Jan MayenSłowacjaSierra LeoneSan MarinoSenegalSomaliaSurinamSuda" + + "n PołudniowyWyspy Świętego Tomasza i KsiążęcaSalwadorSint MaartenSyriaSu" + + "aziTristan da CunhaTurks i CaicosCzadFrancuskie Terytoria Południowe i A" + + "ntarktyczneTogoTajlandiaTadżykistanTokelauTimor WschodniTurkmenistanTune" + + "zjaTongaTurcjaTrynidad i TobagoTuvaluTajwanTanzaniaUkrainaUgandaDalekie " + + "Wyspy Mniejsze Stanów ZjednoczonychOrganizacja Narodów ZjednoczonychStan" + + "y ZjednoczoneUrugwajUzbekistanWatykanSaint Vincent i GrenadynyWenezuelaB" + + "rytyjskie Wyspy DziewiczeWyspy Dziewicze Stanów ZjednoczonychWietnamVanu" + + "atuWallis i FutunaSamoaKosowoJemenMajottaRepublika Południowej AfrykiZam" + + "biaZimbabweNieznany regionświatAfrykaAmeryka PółnocnaAmeryka PołudniowaO" + + "ceaniaAfryka ZachodniaAmeryka ŚrodkowaAfryka WschodniaAfryka PółnocnaAfr" + + "yka ŚrodkowaAfryka PołudniowaAmerykaAmeryka Północna (USA, Kanada)Karaib" + + "yAzja WschodniaAzja PołudniowaAzja Południowo-WschodniaEuropa Południowa" + + "AustralazjaMelanezjaRegion MikronezjiPolinezjaAzjaAzja ŚrodkowaAzja Zach" + + "odniaEuropaEuropa WschodniaEuropa PółnocnaEuropa ZachodniaAmeryka Łacińs" + + "ka" + +var plRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0017, 0x001d, 0x0039, 0x0043, 0x0054, 0x005c, 0x0063, 0x006a, 0x0070, 0x007a, 0x0083, 0x0096, 0x009d, 0x00a6, 0x00ab, 0x00ba, 0x00c6, 0x00db, 0x00e3, 0x00ed, 0x00f3, 0x00ff, 0x0108, - 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0144, 0x014b, 0x0160, - 0x0168, 0x016e, 0x0174, 0x0181, 0x0189, 0x0193, 0x0199, 0x019f, - 0x01ad, 0x01ca, 0x01e8, 0x01ed, 0x01f7, 0x0207, 0x0212, 0x0217, - 0x021e, 0x0223, 0x022b, 0x0235, 0x023e, 0x0242, 0x0260, 0x0268, - 0x0280, 0x0284, 0x028a, 0x0290, 0x029c, 0x02a4, 0x02a9, 0x02b1, + 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0139, 0x0140, 0x0155, + 0x015d, 0x0163, 0x0169, 0x0176, 0x017e, 0x0188, 0x018e, 0x0194, + 0x01a2, 0x01bf, 0x01dd, 0x01e2, 0x01ec, 0x01fc, 0x0207, 0x020c, + 0x0213, 0x0218, 0x0220, 0x022a, 0x0233, 0x0237, 0x0255, 0x025d, + 0x0275, 0x0279, 0x027f, 0x0285, 0x0291, 0x0299, 0x029e, 0x02a6, // Entry 40 - 7F - 0x02bb, 0x02c3, 0x02d2, 0x02d9, 0x02e0, 0x02e5, 0x02f5, 0x02fc, - 0x0305, 0x030c, 0x031b, 0x0324, 0x032a, 0x0333, 0x033d, 0x0348, - 0x034f, 0x0354, 0x0363, 0x036a, 0x0370, 0x0380, 0x0388, 0x038d, - 0x0396, 0x03a0, 0x03a6, 0x03ac, 0x03b5, 0x03c6, 0x03cc, 0x03f6, - 0x03ff, 0x0403, 0x0410, 0x0416, 0x042a, 0x0441, 0x0449, 0x0452, - 0x0457, 0x045d, 0x046e, 0x0477, 0x047f, 0x0485, 0x048e, 0x0493, - 0x04bb, 0x04bf, 0x04c3, 0x04cb, 0x04d2, 0x04d8, 0x04df, 0x04e7, - 0x04ee, 0x04f3, 0x04fc, 0x0505, 0x050d, 0x0513, 0x0526, 0x0536, + 0x02b0, 0x02b8, 0x02c7, 0x02ce, 0x02d5, 0x02da, 0x02ea, 0x02f1, + 0x02fa, 0x0301, 0x0310, 0x0310, 0x0319, 0x031f, 0x0328, 0x0332, + 0x033d, 0x0344, 0x0349, 0x0358, 0x035f, 0x0365, 0x0375, 0x037d, + 0x0382, 0x038b, 0x0395, 0x039b, 0x03a1, 0x03aa, 0x03bb, 0x03c1, + 0x03eb, 0x03f4, 0x03f8, 0x0405, 0x040b, 0x041f, 0x0436, 0x043e, + 0x0447, 0x044c, 0x0452, 0x0463, 0x046c, 0x0474, 0x047a, 0x0483, + 0x0488, 0x04b0, 0x04b4, 0x04b8, 0x04c0, 0x04c7, 0x04cd, 0x04d4, + 0x04dc, 0x04e3, 0x04e8, 0x04f1, 0x04fa, 0x0502, 0x0508, 0x051b, // Entry 80 - BF - 0x0547, 0x054d, 0x0554, 0x055e, 0x0562, 0x0567, 0x0572, 0x057f, - 0x0588, 0x058f, 0x0596, 0x059b, 0x05a5, 0x05ab, 0x05b0, 0x05b6, - 0x05bc, 0x05c5, 0x05d0, 0x05dc, 0x05e6, 0x05f5, 0x05fe, 0x0602, - 0x0610, 0x0618, 0x0629, 0x063b, 0x0644, 0x064e, 0x0658, 0x065d, - 0x0666, 0x066e, 0x0674, 0x067a, 0x0681, 0x0689, 0x0690, 0x069e, - 0x06a3, 0x06aa, 0x06b1, 0x06ba, 0x06c2, 0x06ca, 0x06cf, 0x06d4, - 0x06d8, 0x06e5, 0x06e9, 0x06ef, 0x06f3, 0x0706, 0x0717, 0x071f, - 0x0727, 0x072d, 0x0744, 0x074c, 0x0755, 0x076c, 0x0776, 0x077b, + 0x052b, 0x053c, 0x0542, 0x0549, 0x0553, 0x0557, 0x055c, 0x0567, + 0x0574, 0x057d, 0x0584, 0x058b, 0x0590, 0x059a, 0x05a0, 0x05a5, + 0x05ab, 0x05b1, 0x05ba, 0x05c5, 0x05d1, 0x05db, 0x05ea, 0x05f3, + 0x05f7, 0x0605, 0x060d, 0x061e, 0x0630, 0x0639, 0x0643, 0x064d, + 0x0652, 0x065b, 0x0663, 0x0669, 0x066f, 0x0676, 0x067e, 0x0685, + 0x0693, 0x0698, 0x069f, 0x06a6, 0x06af, 0x06b7, 0x06bf, 0x06c4, + 0x06c9, 0x06cd, 0x06da, 0x06de, 0x06e4, 0x06e8, 0x06fb, 0x070c, + 0x0714, 0x071c, 0x0722, 0x0739, 0x0741, 0x074a, 0x0761, 0x076b, // Entry C0 - FF - 0x0783, 0x0788, 0x0794, 0x079b, 0x07a2, 0x07a8, 0x07ad, 0x07b3, - 0x07c3, 0x07d1, 0x07d8, 0x07dd, 0x07e4, 0x07ec, 0x0802, 0x080b, - 0x081f, 0x0828, 0x0834, 0x083e, 0x0845, 0x084c, 0x0853, 0x0864, - 0x088a, 0x0892, 0x089e, 0x08a3, 0x08a8, 0x08b8, 0x08c6, 0x08ca, - 0x08f9, 0x08fd, 0x0906, 0x0912, 0x0919, 0x0927, 0x0933, 0x093a, - 0x093f, 0x0945, 0x0956, 0x095c, 0x0962, 0x096a, 0x0971, 0x0977, - 0x09a3, 0x09b4, 0x09bb, 0x09c5, 0x09cc, 0x09e5, 0x09ee, 0x0a08, - 0x0a2d, 0x0a34, 0x0a3b, 0x0a4a, 0x0a4f, 0x0a55, 0x0a5a, 0x0a61, + 0x0770, 0x0778, 0x077d, 0x0789, 0x0790, 0x0797, 0x079d, 0x07a2, + 0x07a8, 0x07b8, 0x07c6, 0x07cd, 0x07d2, 0x07d9, 0x07e1, 0x07f7, + 0x0800, 0x0814, 0x081d, 0x0829, 0x0833, 0x083a, 0x0841, 0x0848, + 0x0859, 0x087f, 0x0887, 0x0893, 0x0898, 0x089d, 0x08ad, 0x08bb, + 0x08bf, 0x08ee, 0x08f2, 0x08fb, 0x0907, 0x090e, 0x091c, 0x0928, + 0x092f, 0x0934, 0x093a, 0x094b, 0x0951, 0x0957, 0x095f, 0x0966, + 0x096c, 0x0998, 0x09ba, 0x09cb, 0x09d2, 0x09dc, 0x09e3, 0x09fc, + 0x0a05, 0x0a1f, 0x0a44, 0x0a4b, 0x0a52, 0x0a61, 0x0a66, 0x0a6c, // Entry 100 - 13F - 0x0a7e, 0x0a84, 0x0a8c, 0x0a9b, 0x0aa1, 0x0aa7, 0x0ab9, 0x0acc, - 0x0ad3, 0x0ae3, 0x0af4, 0x0b04, 0x0b15, 0x0b25, 0x0b37, 0x0b3e, - 0x0b5e, 0x0b65, 0x0b73, 0x0b83, 0x0b9d, 0x0baf, 0x0bba, 0x0bc3, - 0x0bd4, 0x0bdd, 0x0be1, 0x0bef, 0x0bfd, 0x0c03, 0x0c13, 0x0c24, - 0x0c34, 0x0c46, -} // Size: 604 bytes - -var ptRegionStr string = "" + // Size: 3157 bytes + 0x0a71, 0x0a78, 0x0a95, 0x0a9b, 0x0aa3, 0x0ab2, 0x0ab8, 0x0abe, + 0x0ad0, 0x0ae3, 0x0aea, 0x0afa, 0x0b0b, 0x0b1b, 0x0b2c, 0x0b3c, + 0x0b4e, 0x0b55, 0x0b75, 0x0b7c, 0x0b8a, 0x0b9a, 0x0bb4, 0x0bc6, + 0x0bd1, 0x0bda, 0x0beb, 0x0bf4, 0x0bf8, 0x0c06, 0x0c14, 0x0c1a, + 0x0c2a, 0x0c3b, 0x0c4b, 0x0c5d, +} // Size: 608 bytes + +const ptRegionStr string = "" + // Size: 3174 bytes "Ilha de AscensãoAndorraEmirados Árabes UnidosAfeganistãoAntígua e Barbud" + "aAnguillaAlbâniaArmêniaAngolaAntártidaArgentinaSamoa AmericanaÁustriaAus" + "tráliaArubaIlhas ÅlandAzerbaijãoBósnia e HerzegovinaBarbadosBangladeshBé" + @@ -42666,42 +47769,42 @@ var ptRegionStr string = "" + // Size: 3157 bytes "lorrússiaBelizeCanadáIlhas Cocos (Keeling)Congo - KinshasaRepública Cent" + "ro-AfricanaCongo - BrazzavilleSuíçaCosta do MarfimIlhas CookChileRepúbli" + "ca dos CamarõesChinaColômbiaIlha de ClippertonCosta RicaCubaCabo VerdeCu" + - "raçaoIlha ChristmasChipreRepública TchecaAlemanhaDiego GarciaDjibutiDina" + - "marcaDominicaRepública DominicanaArgéliaCeuta e MelilhaEquadorEstôniaEgi" + - "toSaara OcidentalEritreiaEspanhaEtiópiaUnião EuropeiaFinlândiaFijiIlhas " + - "MalvinasMicronésiaIlhas FaroeFrançaGabãoReino UnidoGranadaGeórgiaGuiana " + - "FrancesaGuernseyGanaGibraltarGroenlândiaGâmbiaGuinéGuadalupeGuiné Equato" + - "rialGréciaIlhas Geórgia do Sul e Sandwich do SulGuatemalaGuamGuiné-Bissa" + - "uGuianaHong Kong, RAE da ChinaIlhas Heard e McDonaldHondurasCroáciaHaiti" + - "HungriaIlhas CanáriasIndonésiaIrlandaIsraelIlha de ManÍndiaTerritório Br" + - "itânico do Oceano ÍndicoIraqueIrãIslândiaItáliaJerseyJamaicaJordâniaJapã" + - "oQuêniaQuirguistãoCambojaQuiribatiComoresSão Cristóvão e NevisCoreia do " + - "NorteCoreia do SulKuwaitIlhas CaymanCazaquistãoLaosLíbanoSanta LúciaLiec" + - "htensteinSri LankaLibériaLesotoLituâniaLuxemburgoLetôniaLíbiaMarrocosMôn" + - "acoMoldáviaMontenegroSão MartinhoMadagascarIlhas MarshallMacedôniaMaliMi" + - "anmar (Birmânia)MongóliaMacau, RAE da ChinaIlhas Marianas do NorteMartin" + - "icaMauritâniaMontserratMaltaMaurícioMaldivasMalawiMéxicoMalásiaMoçambiqu" + - "eNamíbiaNova CaledôniaNígerIlha NorfolkNigériaNicaráguaHolandaNoruegaNep" + - "alNauruNiueNova ZelândiaOmãPanamáPeruPolinésia FrancesaPapua-Nova GuinéF" + - "ilipinasPaquistãoPolôniaSaint Pierre e MiquelonIlhas PitcairnPorto RicoT" + - "erritórios palestinosPortugalPalauParaguaiCatarOceania RemotaReuniãoRomê" + - "niaSérviaRússiaRuandaArábia SauditaIlhas SalomãoSeychellesSudãoSuéciaCin" + - "gapuraSanta HelenaEslovêniaSvalbard e Jan MayenEslováquiaSerra LeoaSan M" + - "arinoSenegalSomáliaSurinameSudão do SulSão Tomé e PríncipeEl SalvadorSin" + - "t MaartenSíriaSuazilândiaTristão da CunhaIlhas Turks e CaicosChadeTerrit" + - "órios Franceses do SulTogoTailândiaTajiquistãoTokelauTimor-LesteTurcome" + - "nistãoTunísiaTongaTurquiaTrinidad e TobagoTuvaluTaiwanTanzâniaUcrâniaUga" + - "ndaIlhas Menores Distantes dos EUAEstados UnidosUruguaiUzbequistãoCidade" + - " do VaticanoSão Vicente e GranadinasVenezuelaIlhas Virgens BritânicasIlh" + - "as Virgens dos EUAVietnãVanuatuWallis e FutunaSamoaKosovoIêmenMayotteÁfr" + - "ica do SulZâmbiaZimbábueRegião desconhecidaMundoÁfricaAmérica do NorteAm" + - "érica do SulOceaniaÁfrica OcidentalAmérica CentralÁfrica OrientalÁfrica" + - " do NorteÁfrica CentralÁfrica AustralAméricasAmérica SetentrionalCaribeÁ" + - "sia OrientalÁsia do SulSudeste AsiáticoEuropa do SulAustralásiaMelanésia" + - "Região da MicronésiaPolinésiaÁsiaÁsia CentralÁsia OcidentalEuropaEuropa " + - "OrientalEuropa SetentrionalEuropa OcidentalAmérica Latina" - -var ptRegionIdx = []uint16{ // 290 elements + "raçaoIlha ChristmasChipreTchéquiaAlemanhaDiego GarciaDjibutiDinamarcaDom" + + "inicaRepública DominicanaArgéliaCeuta e MelilhaEquadorEstôniaEgitoSaara " + + "OcidentalEritreiaEspanhaEtiópiaUnião EuropeiaFinlândiaFijiIlhas Malvinas" + + "MicronésiaIlhas FaroeFrançaGabãoReino UnidoGranadaGeórgiaGuiana Francesa" + + "GuernseyGanaGibraltarGroenlândiaGâmbiaGuinéGuadalupeGuiné EquatorialGréc" + + "iaIlhas Geórgia do Sul e Sandwich do SulGuatemalaGuamGuiné-BissauGuianaH" + + "ong Kong, RAE da ChinaIlhas Heard e McDonaldHondurasCroáciaHaitiHungriaI" + + "lhas CanáriasIndonésiaIrlandaIsraelIlha de ManÍndiaTerritório Britânico " + + "do Oceano ÍndicoIraqueIrãIslândiaItáliaJerseyJamaicaJordâniaJapãoQuêniaQ" + + "uirguistãoCambojaQuiribatiComoresSão Cristóvão e NevisCoreia do NorteCor" + + "eia do SulKuwaitIlhas CaymanCazaquistãoLaosLíbanoSanta LúciaLiechtenstei" + + "nSri LankaLibériaLesotoLituâniaLuxemburgoLetôniaLíbiaMarrocosMônacoMoldá" + + "viaMontenegroSão MartinhoMadagascarIlhas MarshallMacedôniaMaliMianmar (B" + + "irmânia)MongóliaMacau, RAE da ChinaIlhas Marianas do NorteMartinicaMauri" + + "tâniaMontserratMaltaMaurícioMaldivasMalawiMéxicoMalásiaMoçambiqueNamíbia" + + "Nova CaledôniaNígerIlha NorfolkNigériaNicaráguaHolandaNoruegaNepalNauruN" + + "iueNova ZelândiaOmãPanamáPeruPolinésia FrancesaPapua-Nova GuinéFilipinas" + + "PaquistãoPolôniaSaint Pierre e MiquelonIlhas PitcairnPorto RicoTerritóri" + + "os palestinosPortugalPalauParaguaiCatarOceania RemotaReuniãoRomêniaSérvi" + + "aRússiaRuandaArábia SauditaIlhas SalomãoSeichelesSudãoSuéciaCingapuraSan" + + "ta HelenaEslovêniaSvalbard e Jan MayenEslováquiaSerra LeoaSan MarinoSene" + + "galSomáliaSurinameSudão do SulSão Tomé e PríncipeEl SalvadorSint Maarten" + + "SíriaSuazilândiaTristão da CunhaIlhas Turks e CaicosChadeTerritórios Fra" + + "nceses do SulTogoTailândiaTajiquistãoTokelauTimor-LesteTurcomenistãoTuní" + + "siaTongaTurquiaTrinidad e TobagoTuvaluTaiwanTanzâniaUcrâniaUgandaIlhas M" + + "enores Distantes dos EUANações UnidasEstados UnidosUruguaiUzbequistãoCid" + + "ade do VaticanoSão Vicente e GranadinasVenezuelaIlhas Virgens Britânicas" + + "Ilhas Virgens dos EUAVietnãVanuatuWallis e FutunaSamoaKosovoIêmenMayotte" + + "África do SulZâmbiaZimbábueRegião desconhecidaMundoÁfricaAmérica do Nor" + + "teAmérica do SulOceaniaÁfrica OcidentalAmérica CentralÁfrica OrientalÁfr" + + "ica do NorteÁfrica CentralÁfrica MeridionalAméricasAmérica SetentrionalC" + + "aribeÁsia OrientalÁsia MeridionalSudeste AsiáticoEuropa MeridionalAustra" + + "lásiaMelanésiaRegião da MicronésiaPolinésiaÁsiaÁsia CentralÁsia Ocidenta" + + "lEuropaEuropa OrientalEuropa SetentrionalEuropa OcidentalAmérica Latina" + +var ptRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0011, 0x0018, 0x002f, 0x003b, 0x004d, 0x0055, 0x005d, 0x0065, 0x006b, 0x0075, 0x007e, 0x008d, 0x0095, 0x009f, 0x00a4, @@ -42710,55 +47813,55 @@ var ptRegionIdx = []uint16{ // 290 elements 0x0157, 0x015e, 0x0164, 0x016f, 0x0177, 0x0184, 0x018a, 0x0191, 0x01a6, 0x01b6, 0x01d0, 0x01e3, 0x01ea, 0x01f9, 0x0203, 0x0208, 0x0220, 0x0225, 0x022e, 0x0240, 0x024a, 0x024e, 0x0258, 0x0260, - 0x026e, 0x0274, 0x0285, 0x028d, 0x0299, 0x02a0, 0x02a9, 0x02b1, + 0x026e, 0x0274, 0x027d, 0x0285, 0x0291, 0x0298, 0x02a1, 0x02a9, // Entry 40 - 7F - 0x02c6, 0x02ce, 0x02dd, 0x02e4, 0x02ec, 0x02f1, 0x0300, 0x0308, - 0x030f, 0x0317, 0x0326, 0x0330, 0x0334, 0x0342, 0x034d, 0x0358, - 0x035f, 0x0365, 0x0370, 0x0377, 0x037f, 0x038e, 0x0396, 0x039a, - 0x03a3, 0x03af, 0x03b6, 0x03bc, 0x03c5, 0x03d6, 0x03dd, 0x0404, - 0x040d, 0x0411, 0x041e, 0x0424, 0x043b, 0x0451, 0x0459, 0x0461, - 0x0466, 0x046d, 0x047c, 0x0486, 0x048d, 0x0493, 0x049e, 0x04a4, - 0x04cc, 0x04d2, 0x04d6, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fc, - 0x0502, 0x0509, 0x0515, 0x051c, 0x0525, 0x052c, 0x0544, 0x0553, + 0x02be, 0x02c6, 0x02d5, 0x02dc, 0x02e4, 0x02e9, 0x02f8, 0x0300, + 0x0307, 0x030f, 0x031e, 0x031e, 0x0328, 0x032c, 0x033a, 0x0345, + 0x0350, 0x0357, 0x035d, 0x0368, 0x036f, 0x0377, 0x0386, 0x038e, + 0x0392, 0x039b, 0x03a7, 0x03ae, 0x03b4, 0x03bd, 0x03ce, 0x03d5, + 0x03fc, 0x0405, 0x0409, 0x0416, 0x041c, 0x0433, 0x0449, 0x0451, + 0x0459, 0x045e, 0x0465, 0x0474, 0x047e, 0x0485, 0x048b, 0x0496, + 0x049c, 0x04c4, 0x04ca, 0x04ce, 0x04d7, 0x04de, 0x04e4, 0x04eb, + 0x04f4, 0x04fa, 0x0501, 0x050d, 0x0514, 0x051d, 0x0524, 0x053c, // Entry 80 - BF - 0x0560, 0x0566, 0x0572, 0x057e, 0x0582, 0x0589, 0x0595, 0x05a2, - 0x05ab, 0x05b3, 0x05b9, 0x05c2, 0x05cc, 0x05d4, 0x05da, 0x05e2, - 0x05e9, 0x05f2, 0x05fc, 0x0609, 0x0613, 0x0621, 0x062b, 0x062f, - 0x0642, 0x064b, 0x065e, 0x0675, 0x067e, 0x0689, 0x0693, 0x0698, - 0x06a1, 0x06a9, 0x06af, 0x06b6, 0x06be, 0x06c9, 0x06d1, 0x06e0, - 0x06e6, 0x06f2, 0x06fa, 0x0704, 0x070b, 0x0712, 0x0717, 0x071c, - 0x0720, 0x072e, 0x0732, 0x0739, 0x073d, 0x0750, 0x0761, 0x076a, - 0x0774, 0x077c, 0x0793, 0x07a1, 0x07ab, 0x07c2, 0x07ca, 0x07cf, + 0x054b, 0x0558, 0x055e, 0x056a, 0x0576, 0x057a, 0x0581, 0x058d, + 0x059a, 0x05a3, 0x05ab, 0x05b1, 0x05ba, 0x05c4, 0x05cc, 0x05d2, + 0x05da, 0x05e1, 0x05ea, 0x05f4, 0x0601, 0x060b, 0x0619, 0x0623, + 0x0627, 0x063a, 0x0643, 0x0656, 0x066d, 0x0676, 0x0681, 0x068b, + 0x0690, 0x0699, 0x06a1, 0x06a7, 0x06ae, 0x06b6, 0x06c1, 0x06c9, + 0x06d8, 0x06de, 0x06ea, 0x06f2, 0x06fc, 0x0703, 0x070a, 0x070f, + 0x0714, 0x0718, 0x0726, 0x072a, 0x0731, 0x0735, 0x0748, 0x0759, + 0x0762, 0x076c, 0x0774, 0x078b, 0x0799, 0x07a3, 0x07ba, 0x07c2, // Entry C0 - FF - 0x07d7, 0x07dc, 0x07ea, 0x07f2, 0x07fa, 0x0801, 0x0808, 0x080e, - 0x081d, 0x082b, 0x0835, 0x083b, 0x0842, 0x084b, 0x0857, 0x0861, - 0x0875, 0x0880, 0x088a, 0x0894, 0x089b, 0x08a3, 0x08ab, 0x08b8, - 0x08ce, 0x08d9, 0x08e5, 0x08eb, 0x08f7, 0x0908, 0x091c, 0x0921, - 0x093e, 0x0942, 0x094c, 0x0958, 0x095f, 0x096a, 0x0978, 0x0980, - 0x0985, 0x098c, 0x099d, 0x09a3, 0x09a9, 0x09b2, 0x09ba, 0x09c0, - 0x09df, 0x09ed, 0x09f4, 0x0a00, 0x0a12, 0x0a2b, 0x0a34, 0x0a4d, - 0x0a62, 0x0a69, 0x0a70, 0x0a7f, 0x0a84, 0x0a8a, 0x0a90, 0x0a97, + 0x07c7, 0x07cf, 0x07d4, 0x07e2, 0x07ea, 0x07f2, 0x07f9, 0x0800, + 0x0806, 0x0815, 0x0823, 0x082c, 0x0832, 0x0839, 0x0842, 0x084e, + 0x0858, 0x086c, 0x0877, 0x0881, 0x088b, 0x0892, 0x089a, 0x08a2, + 0x08af, 0x08c5, 0x08d0, 0x08dc, 0x08e2, 0x08ee, 0x08ff, 0x0913, + 0x0918, 0x0935, 0x0939, 0x0943, 0x094f, 0x0956, 0x0961, 0x096f, + 0x0977, 0x097c, 0x0983, 0x0994, 0x099a, 0x09a0, 0x09a9, 0x09b1, + 0x09b7, 0x09d6, 0x09e5, 0x09f3, 0x09fa, 0x0a06, 0x0a18, 0x0a31, + 0x0a3a, 0x0a53, 0x0a68, 0x0a6f, 0x0a76, 0x0a85, 0x0a8a, 0x0a90, // Entry 100 - 13F - 0x0aa5, 0x0aac, 0x0ab5, 0x0ac9, 0x0ace, 0x0ad5, 0x0ae6, 0x0af5, - 0x0afc, 0x0b0d, 0x0b1d, 0x0b2d, 0x0b3d, 0x0b4c, 0x0b5b, 0x0b64, - 0x0b79, 0x0b7f, 0x0b8d, 0x0b99, 0x0baa, 0x0bb7, 0x0bc3, 0x0bcd, - 0x0be3, 0x0bed, 0x0bf2, 0x0bff, 0x0c0e, 0x0c14, 0x0c23, 0x0c36, - 0x0c46, 0x0c55, -} // Size: 604 bytes - -var ptPTRegionStr string = "" + // Size: 687 bytes + 0x0a96, 0x0a9d, 0x0aab, 0x0ab2, 0x0abb, 0x0acf, 0x0ad4, 0x0adb, + 0x0aec, 0x0afb, 0x0b02, 0x0b13, 0x0b23, 0x0b33, 0x0b43, 0x0b52, + 0x0b64, 0x0b6d, 0x0b82, 0x0b88, 0x0b96, 0x0ba6, 0x0bb7, 0x0bc8, + 0x0bd4, 0x0bde, 0x0bf4, 0x0bfe, 0x0c03, 0x0c10, 0x0c1f, 0x0c25, + 0x0c34, 0x0c47, 0x0c57, 0x0c66, +} // Size: 608 bytes + +const ptPTRegionStr string = "" + // Size: 718 bytes "AnguilaArméniaAlandaBangladecheBarémBenimBaamasIlhas dos Cocos (Keeling)" + "Congo-KinshasaCongo-BrazzavilleCamarõesCuraçauIlha do NatalRepública Che" + "caJibutiDomínicaEstóniaIlhas FalklandIlhas FaroéGronelândiaGuameIrãoQuén" + "iaSão Cristóvão e NevesIlhas CaimãoListenstaineSri LancaLetóniaMónacoMad" + "agáscarMacedóniaMonserrateMauríciaMaláuiNova CaledóniaPaíses BaixosPolón" + - "iaSão Pedro e MiquelãoTerritórios palestinianosOceânia InsularRoméniaSei" + - "chelesSingapuraEslovéniaSão MarinhoSalvadorIlhas Turcas e CaicosToquelau" + - "TurquemenistãoTrindade e TobagoIlhas Menores Afastadas dos EUAUsbequistã" + - "oVietnameIémenMaioteZimbabuéOceâniaNorte de ÁfricaCaraíbasEuropa do Nort" + - "e" + "iaSão Pedro e MiquelãoTerritórios palestinianosOceânia InsularRoméniaSin" + + "gapuraEslovéniaSão MarinhoSalvadorIlhas Turcas e CaicosToquelauTurquemen" + + "istãoTrindade e TobagoIlhas Menores Afastadas dos EUAUsbequistãoVietname" + + "IémenMaioteZimbabuéOceâniaNorte de ÁfricaÁfrica AustralCaraíbasÁsia do S" + + "ulEuropa do SulEuropa do Norte" -var ptPTRegionIdx = []uint16{ // 288 elements +var ptPTRegionIdx = []uint16{ // 290 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, @@ -42770,39 +47873,40 @@ var ptPTRegionIdx = []uint16{ // 288 elements 0x0087, 0x0087, 0x0097, 0x0097, 0x0097, 0x009d, 0x009d, 0x00a6, // Entry 40 - 7F 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bc, 0x00bc, 0x00c8, + 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bc, 0x00bc, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, - 0x00d4, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, + 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, + 0x00d4, 0x00d4, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00fd, 0x00fd, + 0x00d9, 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, + 0x00de, 0x00de, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00fd, // Entry 80 - BF - 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0116, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0127, 0x0127, 0x0127, - 0x012e, 0x012e, 0x012e, 0x012e, 0x0139, 0x0139, 0x0143, 0x0143, - 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x014d, 0x014d, - 0x0156, 0x0156, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x017a, 0x017a, 0x017a, 0x017a, + 0x00fd, 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, + 0x0116, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0127, 0x0127, + 0x0127, 0x012e, 0x012e, 0x012e, 0x012e, 0x0139, 0x0139, 0x0143, + 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x014d, + 0x014d, 0x0156, 0x0156, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, + 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, - 0x017a, 0x0182, 0x0198, 0x0198, 0x0198, 0x01b2, 0x01b2, 0x01b2, + 0x017a, 0x017a, 0x0182, 0x0198, 0x0198, 0x0198, 0x01b2, 0x01b2, // Entry C0 - FF - 0x01b2, 0x01b2, 0x01c2, 0x01c2, 0x01ca, 0x01ca, 0x01ca, 0x01ca, - 0x01ca, 0x01ca, 0x01d3, 0x01d3, 0x01d3, 0x01dc, 0x01dc, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01f2, 0x01f2, 0x01f2, 0x01f2, 0x01f2, - 0x01f2, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x020f, 0x020f, - 0x020f, 0x020f, 0x020f, 0x020f, 0x0217, 0x0217, 0x0226, 0x0226, - 0x0226, 0x0226, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, - 0x0256, 0x0256, 0x0256, 0x0262, 0x0262, 0x0262, 0x0262, 0x0262, - 0x0262, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0270, 0x0276, + 0x01b2, 0x01b2, 0x01b2, 0x01c2, 0x01c2, 0x01ca, 0x01ca, 0x01ca, + 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01d3, 0x01d3, + 0x01dd, 0x01dd, 0x01dd, 0x01dd, 0x01e9, 0x01e9, 0x01e9, 0x01e9, + 0x01e9, 0x01e9, 0x01f1, 0x01f1, 0x01f1, 0x01f1, 0x01f1, 0x0206, + 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x020e, 0x020e, 0x021d, + 0x021d, 0x021d, 0x021d, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, + 0x022e, 0x024d, 0x024d, 0x024d, 0x024d, 0x0259, 0x0259, 0x0259, + 0x0259, 0x0259, 0x0259, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, // Entry 100 - 13F - 0x0276, 0x0276, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f, - 0x0287, 0x0287, 0x0287, 0x0287, 0x0297, 0x0297, 0x0297, 0x0297, - 0x0297, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, - 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02af, -} // Size: 600 bytes + 0x0267, 0x026d, 0x026d, 0x026d, 0x0276, 0x0276, 0x0276, 0x0276, + 0x0276, 0x0276, 0x027e, 0x027e, 0x027e, 0x027e, 0x028e, 0x028e, + 0x029d, 0x029d, 0x029d, 0x02a6, 0x02a6, 0x02b2, 0x02b2, 0x02bf, + 0x02bf, 0x02bf, 0x02bf, 0x02bf, 0x02bf, 0x02bf, 0x02bf, 0x02bf, + 0x02bf, 0x02ce, +} // Size: 604 bytes -var roRegionStr string = "" + // Size: 3221 bytes +const roRegionStr string = "" + // Size: 3242 bytes "Insula AscensionAndorraEmiratele Arabe UniteAfganistanAntigua și Barbuda" + "AnguillaAlbaniaArmeniaAngolaAntarcticaArgentinaSamoa AmericanăAustriaAus" + "traliaArubaInsulele ÅlandAzerbaidjanBosnia și HerțegovinaBarbadosBanglad" + @@ -42811,44 +47915,45 @@ var roRegionStr string = "" + // Size: 3221 bytes "tBotswanaBelarusBelizeCanadaInsulele Cocos (Keeling)Congo - KinshasaRepu" + "blica CentrafricanăCongo - BrazzavilleElvețiaCôte d’IvoireInsulele CookC" + "hileCamerunChinaColumbiaInsula ClippertonCosta RicaCubaCapul VerdeCuraça" + - "oInsula ChristmasCipruRepublica CehăGermaniaDiego GarciaDjiboutiDanemarc" + - "aDominicaRepublica DominicanăAlgeriaCeuta și MelillaEcuadorEstoniaEgiptS" + - "ahara OccidentalăEritreeaSpaniaEtiopiaUniunea EuropeanăFinlandaFijiInsul" + - "ele FalklandMicroneziaInsulele FeroeFranțaGabonRegatul UnitGrenadaGeorgi" + - "aGuyana FrancezăGuernseyGhanaGibraltarGroenlandaGambiaGuineeaGuadelupaGu" + - "ineea EcuatorialăGreciaGeorgia de Sud și Insulele Sandwich de SudGuatema" + - "laGuamGuineea-BissauGuyanaR.A.S. Hong Kong a ChineiInsula Heard și Insul" + - "ele McDonaldHondurasCroațiaHaitiUngariaInsulele CanareIndoneziaIrlandaIs" + - "raelInsula ManIndiaTeritoriul Britanic din Oceanul IndianIrakIranIslanda" + - "ItaliaJerseyJamaicaIordaniaJaponiaKenyaKârgâzstanCambodgiaKiribatiComore" + - "Saint Kitts și NevisCoreea de NordCoreea de SudKuweitInsulele CaymanKaza" + - "hstanLaosLibanSfânta LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLu" + - "xemburgLetoniaLibiaMarocMonacoRepublica MoldovaMuntenegruSfântul MartinM" + - "adagascarInsulele MarshallMacedoniaMaliMyanmar (Birmania)MongoliaR.A.S. " + - "Macao a ChineiInsulele Mariane de NordMartinicaMauritaniaMontserratMalta" + - "MauritiusMaldiveMalawiMexicMalaysiaMozambicNamibiaNoua CaledonieNigerIns" + - "ula NorfolkNigeriaNicaraguaȚările de JosNorvegiaNepalNauruNiueNoua Zeela" + - "ndăOmanPanamaPeruPolinezia FrancezăPapua-Noua GuineeFilipinePakistanPolo" + - "niaSaint-Pierre și MiquelonInsulele PitcairnPuerto RicoTeritoriile Pales" + - "tinienePortugaliaPalauParaguayQatarOceania PerifericăRéunionRomâniaSerbi" + - "aRusiaRwandaArabia SaudităInsulele SolomonSeychellesSudanSuediaSingapore" + - "Sfânta ElenaSloveniaSvalbard și Jan MayenSlovaciaSierra LeoneSan MarinoS" + - "enegalSomaliaSurinameSudanul de SudSao Tome și PrincipeEl SalvadorSint-M" + - "aartenSiriaSwazilandTristan da CunhaInsulele Turks și CaicosCiadTeritori" + - "ile Australe și Antarctice FrancezeTogoThailandaTadjikistanTokelauTimoru" + - "l de EstTurkmenistanTunisiaTongaTurciaTrinidad și TobagoTuvaluTaiwanTanz" + - "aniaUcrainaUgandaInsulele Îndepărtate ale S.U.A.Statele Unite ale Americ" + - "iiUruguayUzbekistanStatul Cetății VaticanuluiSaint Vincent și Grenadinel" + - "eVenezuelaInsulele Virgine BritaniceInsulele Virgine S.U.A.VietnamVanuat" + - "uWallis și FutunaSamoaKosovoYemenMayotteAfrica de SudZambiaZimbabweRegiu" + - "ne necunoscutăLumeAfricaAmerica de NordAmerica de SudOceaniaAfrica Occid" + - "entalăAmerica CentralăAfrica OrientalăAfrica SeptentrionalăAfrica Centra" + - "lăAfrica MeridionalăAmericiAmerica SeptentrionalăCaraibeAsia OrientalăAs" + - "ia MeridionalăAsia de Sud-EstEuropa MeridionalăAustralasiaMelaneziaRegiu" + - "nea MicroneziaPolineziaAsiaAsia CentralăAsia OccidentalăEuropaEuropa Ori" + - "entalăEuropa SeptentrionalăEuropa OccidentalăAmerica Latină" - -var roRegionIdx = []uint16{ // 290 elements + "oInsula ChristmasCipruCehiaGermaniaDiego GarciaDjiboutiDanemarcaDominica" + + "Republica DominicanăAlgeriaCeuta și MelillaEcuadorEstoniaEgiptSahara Occ" + + "identalăEritreeaSpaniaEtiopiaUniunea EuropeanăFinlandaFijiInsulele Falkl" + + "andMicroneziaInsulele FeroeFranțaGabonRegatul UnitGrenadaGeorgiaGuyana F" + + "rancezăGuernseyGhanaGibraltarGroenlandaGambiaGuineeaGuadelupaGuineea Ecu" + + "atorialăGreciaGeorgia de Sud și Insulele Sandwich de SudGuatemalaGuamGui" + + "neea-BissauGuyanaR.A.S. Hong Kong a ChineiInsula Heard și Insulele McDon" + + "aldHondurasCroațiaHaitiUngariaInsulele CanareIndoneziaIrlandaIsraelInsul" + + "a ManIndiaTeritoriul Britanic din Oceanul IndianIrakIranIslandaItaliaJer" + + "seyJamaicaIordaniaJaponiaKenyaKârgâzstanCambodgiaKiribatiComoreSaint Kit" + + "ts și NevisCoreea de NordCoreea de SudKuweitInsulele CaymanKazahstanLaos" + + "LibanSfânta LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLuxemburgLe" + + "toniaLibiaMarocMonacoRepublica MoldovaMuntenegruSfântul MartinMadagascar" + + "Insulele MarshallRepublica MacedoniaMaliMyanmar (Birmania)MongoliaR.A.S." + + " Macao a ChineiInsulele Mariane de NordMartinicaMauritaniaMontserratMalt" + + "aMauritiusMaldiveMalawiMexicMalaysiaMozambicNamibiaNoua CaledonieNigerIn" + + "sula NorfolkNigeriaNicaraguaȚările de JosNorvegiaNepalNauruNiueNoua Zeel" + + "andăOmanPanamaPeruPolinezia FrancezăPapua-Noua GuineeFilipinePakistanPol" + + "oniaSaint-Pierre și MiquelonInsulele PitcairnPuerto RicoTeritoriile Pale" + + "stinienePortugaliaPalauParaguayQatarOceania PerifericăRéunionRomâniaSerb" + + "iaRusiaRwandaArabia SaudităInsulele SolomonSeychellesSudanSuediaSingapor" + + "eSfânta ElenaSloveniaSvalbard și Jan MayenSlovaciaSierra LeoneSan Marino" + + "SenegalSomaliaSurinameSudanul de SudSao Tomé și PríncipeEl SalvadorSint-" + + "MaartenSiriaSwazilandTristan da CunhaInsulele Turks și CaicosCiadTeritor" + + "iile Australe și Antarctice FrancezeTogoThailandaTadjikistanTokelauTimor" + + "ul de EstTurkmenistanTunisiaTongaTurciaTrinidad și TobagoTuvaluTaiwanTan" + + "zaniaUcrainaUgandaInsulele Îndepărtate ale S.U.A.Națiunile UniteStatele " + + "Unite ale AmericiiUruguayUzbekistanStatul Cetății VaticanuluiSaint Vince" + + "nt și GrenadineleVenezuelaInsulele Virgine BritaniceInsulele Virgine Ame" + + "ricaneVietnamVanuatuWallis și FutunaSamoaKosovoYemenMayotteAfrica de Sud" + + "ZambiaZimbabweRegiune necunoscutăLumeAfricaAmerica de NordAmerica de Sud" + + "OceaniaAfrica OccidentalăAmerica CentralăAfrica OrientalăAfrica Septentr" + + "ionalăAfrica CentralăAfrica MeridionalăAmericiAmerica SeptentrionalăCara" + + "ibeAsia OrientalăAsia MeridionalăAsia de Sud-EstEuropa MeridionalăAustra" + + "lasiaMelaneziaRegiunea MicroneziaPolineziaAsiaAsia CentralăAsia Occident" + + "alăEuropaEuropa OrientalăEuropa SeptentrionalăEuropa OccidentalăAmerica " + + "Latină" + +var roRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0017, 0x002c, 0x0036, 0x0049, 0x0051, 0x0058, 0x005f, 0x0065, 0x006f, 0x0078, 0x0088, 0x008f, 0x0098, 0x009d, @@ -42857,133 +47962,133 @@ var roRegionIdx = []uint16{ // 290 elements 0x0155, 0x015c, 0x0162, 0x016f, 0x0177, 0x017e, 0x0184, 0x018a, 0x01a2, 0x01b2, 0x01ca, 0x01dd, 0x01e5, 0x01f5, 0x0202, 0x0207, 0x020e, 0x0213, 0x021b, 0x022c, 0x0236, 0x023a, 0x0245, 0x024d, - 0x025d, 0x0262, 0x0271, 0x0279, 0x0285, 0x028d, 0x0296, 0x029e, + 0x025d, 0x0262, 0x0267, 0x026f, 0x027b, 0x0283, 0x028c, 0x0294, // Entry 40 - 7F - 0x02b3, 0x02ba, 0x02cb, 0x02d2, 0x02d9, 0x02de, 0x02f1, 0x02f9, - 0x02ff, 0x0306, 0x0318, 0x0320, 0x0324, 0x0335, 0x033f, 0x034d, - 0x0354, 0x0359, 0x0365, 0x036c, 0x0373, 0x0383, 0x038b, 0x0390, - 0x0399, 0x03a3, 0x03a9, 0x03b0, 0x03b9, 0x03cd, 0x03d3, 0x03fe, - 0x0407, 0x040b, 0x0419, 0x041f, 0x0438, 0x045a, 0x0462, 0x046a, - 0x046f, 0x0476, 0x0485, 0x048e, 0x0495, 0x049b, 0x04a5, 0x04aa, - 0x04d0, 0x04d4, 0x04d8, 0x04df, 0x04e5, 0x04eb, 0x04f2, 0x04fa, - 0x0501, 0x0506, 0x0512, 0x051b, 0x0523, 0x0529, 0x053e, 0x054c, + 0x02a9, 0x02b0, 0x02c1, 0x02c8, 0x02cf, 0x02d4, 0x02e7, 0x02ef, + 0x02f5, 0x02fc, 0x030e, 0x030e, 0x0316, 0x031a, 0x032b, 0x0335, + 0x0343, 0x034a, 0x034f, 0x035b, 0x0362, 0x0369, 0x0379, 0x0381, + 0x0386, 0x038f, 0x0399, 0x039f, 0x03a6, 0x03af, 0x03c3, 0x03c9, + 0x03f4, 0x03fd, 0x0401, 0x040f, 0x0415, 0x042e, 0x0450, 0x0458, + 0x0460, 0x0465, 0x046c, 0x047b, 0x0484, 0x048b, 0x0491, 0x049b, + 0x04a0, 0x04c6, 0x04ca, 0x04ce, 0x04d5, 0x04db, 0x04e1, 0x04e8, + 0x04f0, 0x04f7, 0x04fc, 0x0508, 0x0511, 0x0519, 0x051f, 0x0534, // Entry 80 - BF - 0x0559, 0x055f, 0x056e, 0x0577, 0x057b, 0x0580, 0x058d, 0x059a, - 0x05a3, 0x05aa, 0x05b1, 0x05b9, 0x05c2, 0x05c9, 0x05ce, 0x05d3, - 0x05d9, 0x05ea, 0x05f4, 0x0603, 0x060d, 0x061e, 0x0627, 0x062b, - 0x063d, 0x0645, 0x065a, 0x0672, 0x067b, 0x0685, 0x068f, 0x0694, - 0x069d, 0x06a4, 0x06aa, 0x06af, 0x06b7, 0x06bf, 0x06c6, 0x06d4, - 0x06d9, 0x06e7, 0x06ee, 0x06f7, 0x0706, 0x070e, 0x0713, 0x0718, - 0x071c, 0x072a, 0x072e, 0x0734, 0x0738, 0x074b, 0x075c, 0x0764, - 0x076c, 0x0773, 0x078c, 0x079d, 0x07a8, 0x07c0, 0x07ca, 0x07cf, + 0x0542, 0x054f, 0x0555, 0x0564, 0x056d, 0x0571, 0x0576, 0x0583, + 0x0590, 0x0599, 0x05a0, 0x05a7, 0x05af, 0x05b8, 0x05bf, 0x05c4, + 0x05c9, 0x05cf, 0x05e0, 0x05ea, 0x05f9, 0x0603, 0x0614, 0x0627, + 0x062b, 0x063d, 0x0645, 0x065a, 0x0672, 0x067b, 0x0685, 0x068f, + 0x0694, 0x069d, 0x06a4, 0x06aa, 0x06af, 0x06b7, 0x06bf, 0x06c6, + 0x06d4, 0x06d9, 0x06e7, 0x06ee, 0x06f7, 0x0706, 0x070e, 0x0713, + 0x0718, 0x071c, 0x072a, 0x072e, 0x0734, 0x0738, 0x074b, 0x075c, + 0x0764, 0x076c, 0x0773, 0x078c, 0x079d, 0x07a8, 0x07c0, 0x07ca, // Entry C0 - FF - 0x07d7, 0x07dc, 0x07ef, 0x07f7, 0x07ff, 0x0805, 0x080a, 0x0810, - 0x081f, 0x082f, 0x0839, 0x083e, 0x0844, 0x084d, 0x085a, 0x0862, - 0x0878, 0x0880, 0x088c, 0x0896, 0x089d, 0x08a4, 0x08ac, 0x08ba, - 0x08cf, 0x08da, 0x08e6, 0x08eb, 0x08f4, 0x0904, 0x091d, 0x0921, - 0x094d, 0x0951, 0x095a, 0x0965, 0x096c, 0x097a, 0x0986, 0x098d, - 0x0992, 0x0998, 0x09ab, 0x09b1, 0x09b7, 0x09bf, 0x09c6, 0x09cc, - 0x09ed, 0x0a07, 0x0a0e, 0x0a18, 0x0a34, 0x0a51, 0x0a5a, 0x0a74, - 0x0a8b, 0x0a92, 0x0a99, 0x0aaa, 0x0aaf, 0x0ab5, 0x0aba, 0x0ac1, + 0x07cf, 0x07d7, 0x07dc, 0x07ef, 0x07f7, 0x07ff, 0x0805, 0x080a, + 0x0810, 0x081f, 0x082f, 0x0839, 0x083e, 0x0844, 0x084d, 0x085a, + 0x0862, 0x0878, 0x0880, 0x088c, 0x0896, 0x089d, 0x08a4, 0x08ac, + 0x08ba, 0x08d1, 0x08dc, 0x08e8, 0x08ed, 0x08f6, 0x0906, 0x091f, + 0x0923, 0x094f, 0x0953, 0x095c, 0x0967, 0x096e, 0x097c, 0x0988, + 0x098f, 0x0994, 0x099a, 0x09ad, 0x09b3, 0x09b9, 0x09c1, 0x09c8, + 0x09ce, 0x09ef, 0x09ff, 0x0a19, 0x0a20, 0x0a2a, 0x0a46, 0x0a63, + 0x0a6c, 0x0a86, 0x0aa0, 0x0aa7, 0x0aae, 0x0abf, 0x0ac4, 0x0aca, // Entry 100 - 13F - 0x0ace, 0x0ad4, 0x0adc, 0x0af0, 0x0af4, 0x0afa, 0x0b09, 0x0b17, - 0x0b1e, 0x0b31, 0x0b42, 0x0b53, 0x0b69, 0x0b79, 0x0b8c, 0x0b93, - 0x0baa, 0x0bb1, 0x0bc0, 0x0bd1, 0x0be0, 0x0bf3, 0x0bfe, 0x0c07, - 0x0c1a, 0x0c23, 0x0c27, 0x0c35, 0x0c46, 0x0c4c, 0x0c5d, 0x0c73, - 0x0c86, 0x0c95, -} // Size: 604 bytes - -var ruRegionStr string = "" + // Size: 5817 bytes + 0x0acf, 0x0ad6, 0x0ae3, 0x0ae9, 0x0af1, 0x0b05, 0x0b09, 0x0b0f, + 0x0b1e, 0x0b2c, 0x0b33, 0x0b46, 0x0b57, 0x0b68, 0x0b7e, 0x0b8e, + 0x0ba1, 0x0ba8, 0x0bbf, 0x0bc6, 0x0bd5, 0x0be6, 0x0bf5, 0x0c08, + 0x0c13, 0x0c1c, 0x0c2f, 0x0c38, 0x0c3c, 0x0c4a, 0x0c5b, 0x0c61, + 0x0c72, 0x0c88, 0x0c9b, 0x0caa, +} // Size: 608 bytes + +const ruRegionStr string = "" + // Size: 5849 bytes "о-в ВознесенияАндорраОАЭАфганистанАнтигуа и БарбудаАнгильяАлбанияАрмения" + "АнголаАнтарктидаАргентинаАмериканское СамоаАвстрияАвстралияАрубаАландск" + "ие о-ваАзербайджанБосния и ГерцеговинаБарбадосБангладешБельгияБуркина-Ф" + - "асоБолгарияБахрейнБурундиБенинСен-БартельмиБермудские о-ваБруней-Дарусс" + - "аламБоливияБонэйр, Синт-Эстатиус и СабаБразилияБагамские о-ваБутано-в Б" + - "увеБотсванаБеларусьБелизКанадаКокосовые о-ваКонго - КиншасаЦАРКонго - Б" + - "раззавильШвейцарияКот-д’Ивуаро-ва КукаЧилиКамерунКитайКолумбияо-в Клипп" + - "ертонКоста-РикаКубаКабо-ВердеКюрасаоо-в РождестваКипрЧехияГерманияДиего" + - "-ГарсияДжибутиДанияДоминикаДоминиканская РеспубликаАлжирСеута и МелильяЭ" + - "квадорЭстонияЕгипетЗападная СахараЭритреяИспанияЭфиопияЕвропейский союз" + - "ФинляндияФиджиФолклендские о-ваФедеративные Штаты МикронезииФарерские о" + - "-ваФранцияГабонВеликобританияГренадаГрузияФранцузская ГвианаГернсиГанаГи" + - "бралтарГренландияГамбияГвинеяГваделупаЭкваториальная ГвинеяГрецияЮжная " + - "Георгия и Южные Сандвичевы о-ваГватемалаГуамГвинея-БисауГайанаГонконг (" + - "специальный административный район)о-ва Херд и МакдональдГондурасХорват" + - "ияГаитиВенгрияКанарские о-ваИндонезияИрландияИзраильо-в МэнИндияБританс" + - "кая территория в Индийском океанеИракИранИсландияИталияДжерсиЯмайкаИорд" + - "анияЯпонияКенияКиргизияКамбоджаКирибатиКоморские о-ваСент-Китс и НевисК" + - "НДРРеспублика КореяКувейтКаймановы о-ваКазахстанЛаосЛиванСент-ЛюсияЛихт" + - "енштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМол" + - "доваЧерногорияСен-МартенМадагаскарМаршалловы о-ваМакедонияМалиМьянма (Б" + - "ирма)МонголияМакао (специальный административный район)Северные Марианс" + - "кие о-ваМартиникаМавританияМонтсерратМальтаМаврикийМальдивыМалавиМексик" + - "аМалайзияМозамбикНамибияНовая КаледонияНигеро-в НорфолкНигерияНикарагуа" + - "НидерландыНорвегияНепалНауруНиуэНовая ЗеландияОманПанамаПеруФранцузская" + - " ПолинезияПапуа – Новая ГвинеяФилиппиныПакистанПольшаСен-Пьер и Микелоно" + - "строва ПиткэрнПуэрто-РикоПалестинские территорииПортугалияПалауПарагвай" + - "КатарВнешняя ОкеанияРеюньонРумынияСербияРоссияРуандаСаудовская АравияСо" + - "ломоновы о-ваСейшельские о-ваСуданШвецияСингапуро-в Св. ЕленыСловенияШп" + - "ицберген и Ян-МайенСловакияСьерра-ЛеонеСан-МариноСенегалСомалиСуринамЮж" + - "ный СуданСан-Томе и ПринсипиСальвадорСинт-МартенСирияСвазилендТристан-д" + - "а-Куньяо-ва Тёркс и КайкосЧадФранцузские Южные ТерриторииТогоТаиландТад" + - "жикистанТокелауВосточный ТиморТуркменистанТунисТонгаТурцияТринидад и То" + - "багоТувалуТайваньТанзанияУкраинаУгандаВнешние малые о-ва (США)Соединенн" + - "ые ШтатыУругвайУзбекистанВатиканСент-Винсент и ГренадиныВенесуэлаВиргин" + - "ские о-ва (Британские)Виргинские о-ва (США)ВьетнамВануатуУоллис и Футун" + - "аСамоаКосовоЙеменМайоттаЮАРЗамбияЗимбабвеНеизвестный регионМирАфрикаСев" + - "ерная АмерикаЮжная АмерикаОкеанияЗападная АфрикаЦентральная АмерикаВост" + - "очная АфрикаСеверная АфрикаЦентральная АфрикаЮжная АфрикаАмерикаСеверна" + - "я Америка – США и КанадаКарибыВосточная АзияЮжная АзияЮго-Восточная Ази" + - "яЮжная ЕвропаАвстралазияМеланезияМикронезияПолинезияАзияСредняя АзияБли" + - "жний и Средний ВостокЕвропаВосточная ЕвропаСеверная ЕвропаЗападная Евро" + - "паЛатинская Америка" - -var ruRegionIdx = []uint16{ // 290 elements + "асоБолгарияБахрейнБурундиБенинСен-БартелемиБермудыБруней-ДаруссаламБоли" + + "вияБонэйр, Синт-Эстатиус и СабаБразилияБагамыБутано-в БувеБотсванаБелар" + + "усьБелизКанадаКокосовые о-ваКонго - КиншасаЦАРКонго - БраззавильШвейцар" + + "ияКот-д’ИвуарОстрова КукаЧилиКамерунКитайКолумбияо-в КлиппертонКоста-Ри" + + "каКубаКабо-ВердеКюрасаоо-в РождестваКипрЧехияГерманияДиего-ГарсияДжибут" + + "иДанияДоминикаДоминиканская РеспубликаАлжирСеута и МелильяЭквадорЭстони" + + "яЕгипетЗападная СахараЭритреяИспанияЭфиопияЕвропейский союзФинляндияФид" + + "жиФолклендские о-ваФедеративные Штаты МикронезииФарерские о-ваФранцияГа" + + "бонВеликобританияГренадаГрузияФранцузская ГвианаГернсиГанаГибралтарГрен" + + "ландияГамбияГвинеяГваделупаЭкваториальная ГвинеяГрецияЮжная Георгия и Ю" + + "жные Сандвичевы о-ваГватемалаГуамГвинея-БисауГайанаГонконг (специальный" + + " административный район)о-ва Херд и МакдональдГондурасХорватияГаитиВенгр" + + "ияКанарские о-ваИндонезияИрландияИзраильо-в МэнИндияБританская территор" + + "ия в Индийском океанеИракИранИсландияИталияДжерсиЯмайкаИорданияЯпонияКе" + + "нияКиргизияКамбоджаКирибатиКоморыСент-Китс и НевисКНДРРеспублика КореяК" + + "увейтКаймановы о-ваКазахстанЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛибе" + + "рияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМолдоваЧерногорияСен-Ма" + + "ртенМадагаскарМаршалловы ОстроваМакедонияМалиМьянма (Бирма)МонголияМака" + + "о (специальный административный район)Северные Марианские о-ваМартиника" + + "МавританияМонтсерратМальтаМаврикийМальдивыМалавиМексикаМалайзияМозамбик" + + "НамибияНовая КаледонияНигеро-в НорфолкНигерияНикарагуаНидерландыНорвеги" + + "яНепалНауруНиуэНовая ЗеландияОманПанамаПеруФранцузская ПолинезияПапуа –" + + " Новая ГвинеяФилиппиныПакистанПольшаСен-Пьер и Микелонострова ПиткэрнПуэ" + + "рто-РикоПалестинские территорииПортугалияПалауПарагвайКатарВнешняя Океа" + + "нияРеюньонРумынияСербияРоссияРуандаСаудовская АравияСоломоновы ОстроваС" + + "ейшельские ОстроваСуданШвецияСингапуро-в Св. ЕленыСловенияШпицберген и " + + "Ян-МайенСловакияСьерра-ЛеонеСан-МариноСенегалСомалиСуринамЮжный СуданСа" + + "н-Томе и ПринсипиСальвадорСинт-МартенСирияСвазилендТристан-да-Куньяо-ва" + + " Тёркс и КайкосЧадФранцузские Южные территорииТогоТаиландТаджикистанТоке" + + "лауВосточный ТиморТуркменистанТунисТонгаТурцияТринидад и ТобагоТувалуТа" + + "йваньТанзанияУкраинаУгандаВнешние малые о-ва (США)Организация Объединен" + + "ных НацийСоединенные ШтатыУругвайУзбекистанВатиканСент-Винсент и Гренад" + + "иныВенесуэлаВиргинские о-ва (Британские)Виргинские о-ва (США)ВьетнамВан" + + "уатуУоллис и ФутунаСамоаКосовоЙеменМайоттаЮАРЗамбияЗимбабвеНеизвестный " + + "регионМирАфрикаСеверная АмерикаЮжная АмерикаОкеанияЗападная АфрикаЦентр" + + "альная АмерикаВосточная АфрикаСеверная АфрикаЦентральная АфрикаЮжная Аф" + + "рикаАмерикаСеверная Америка – США и КанадаКарибыВосточная АзияЮжная Ази" + + "яЮго-Восточная АзияЮжная ЕвропаАвстралазияМеланезияМикронезияПолинезияА" + + "зияЦентральная АзияЗападная АзияЕвропаВосточная ЕвропаСеверная ЕвропаЗа" + + "падная ЕвропаЛатинская Америка" + +var ruRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001a, 0x0028, 0x002e, 0x0042, 0x0062, 0x0070, 0x007e, 0x008c, 0x0098, 0x00ac, 0x00be, 0x00e1, 0x00ef, 0x0101, 0x010b, 0x0125, 0x013b, 0x0161, 0x0171, 0x0183, 0x0191, 0x01a8, 0x01b8, - 0x01c6, 0x01d4, 0x01de, 0x01f7, 0x0213, 0x0234, 0x0242, 0x0275, - 0x0285, 0x029f, 0x02a9, 0x02b7, 0x02c7, 0x02d7, 0x02e1, 0x02ed, - 0x0307, 0x0322, 0x0328, 0x0349, 0x035b, 0x0371, 0x0381, 0x0389, - 0x0397, 0x03a1, 0x03b1, 0x03cb, 0x03de, 0x03e6, 0x03f9, 0x0407, - 0x041f, 0x0427, 0x0431, 0x0441, 0x0458, 0x0466, 0x0470, 0x0480, + 0x01c6, 0x01d4, 0x01de, 0x01f7, 0x0205, 0x0226, 0x0234, 0x0267, + 0x0277, 0x0283, 0x028d, 0x029b, 0x02ab, 0x02bb, 0x02c5, 0x02d1, + 0x02eb, 0x0306, 0x030c, 0x032d, 0x033f, 0x0355, 0x036c, 0x0374, + 0x0382, 0x038c, 0x039c, 0x03b6, 0x03c9, 0x03d1, 0x03e4, 0x03f2, + 0x040a, 0x0412, 0x041c, 0x042c, 0x0443, 0x0451, 0x045b, 0x046b, // Entry 40 - 7F - 0x04af, 0x04b9, 0x04d5, 0x04e3, 0x04f1, 0x04fd, 0x051a, 0x0528, - 0x0536, 0x0544, 0x0563, 0x0575, 0x057f, 0x059f, 0x05d7, 0x05f1, - 0x05ff, 0x0609, 0x0625, 0x0633, 0x063f, 0x0662, 0x066e, 0x0676, - 0x0688, 0x069c, 0x06a8, 0x06b4, 0x06c6, 0x06ef, 0x06fb, 0x073f, - 0x0751, 0x0759, 0x0770, 0x077c, 0x07cf, 0x07f7, 0x0807, 0x0817, - 0x0821, 0x082f, 0x0849, 0x085b, 0x086b, 0x0879, 0x0885, 0x088f, - 0x08db, 0x08e3, 0x08eb, 0x08fb, 0x0907, 0x0913, 0x091f, 0x092f, - 0x093b, 0x0945, 0x0955, 0x0965, 0x0975, 0x098f, 0x09ae, 0x09b6, + 0x049a, 0x04a4, 0x04c0, 0x04ce, 0x04dc, 0x04e8, 0x0505, 0x0513, + 0x0521, 0x052f, 0x054e, 0x054e, 0x0560, 0x056a, 0x058a, 0x05c2, + 0x05dc, 0x05ea, 0x05f4, 0x0610, 0x061e, 0x062a, 0x064d, 0x0659, + 0x0661, 0x0673, 0x0687, 0x0693, 0x069f, 0x06b1, 0x06da, 0x06e6, + 0x072a, 0x073c, 0x0744, 0x075b, 0x0767, 0x07ba, 0x07e2, 0x07f2, + 0x0802, 0x080c, 0x081a, 0x0834, 0x0846, 0x0856, 0x0864, 0x0870, + 0x087a, 0x08c6, 0x08ce, 0x08d6, 0x08e6, 0x08f2, 0x08fe, 0x090a, + 0x091a, 0x0926, 0x0930, 0x0940, 0x0950, 0x0960, 0x096c, 0x098b, // Entry 80 - BF - 0x09d5, 0x09e1, 0x09fb, 0x0a0d, 0x0a15, 0x0a1f, 0x0a32, 0x0a48, - 0x0a59, 0x0a67, 0x0a73, 0x0a7d, 0x0a91, 0x0a9d, 0x0aa7, 0x0ab5, - 0x0ac1, 0x0acf, 0x0ae3, 0x0af6, 0x0b0a, 0x0b26, 0x0b38, 0x0b40, - 0x0b59, 0x0b69, 0x0bb8, 0x0be5, 0x0bf7, 0x0c0b, 0x0c1f, 0x0c2b, - 0x0c3b, 0x0c4b, 0x0c57, 0x0c65, 0x0c75, 0x0c85, 0x0c93, 0x0cb0, - 0x0cba, 0x0cce, 0x0cdc, 0x0cee, 0x0d02, 0x0d12, 0x0d1c, 0x0d26, - 0x0d2e, 0x0d49, 0x0d51, 0x0d5d, 0x0d65, 0x0d8e, 0x0db4, 0x0dc6, - 0x0dd6, 0x0de2, 0x0e03, 0x0e20, 0x0e35, 0x0e62, 0x0e76, 0x0e80, + 0x0993, 0x09b2, 0x09be, 0x09d8, 0x09ea, 0x09f2, 0x09fc, 0x0a0f, + 0x0a25, 0x0a36, 0x0a44, 0x0a50, 0x0a5a, 0x0a6e, 0x0a7a, 0x0a84, + 0x0a92, 0x0a9e, 0x0aac, 0x0ac0, 0x0ad3, 0x0ae7, 0x0b0a, 0x0b1c, + 0x0b24, 0x0b3d, 0x0b4d, 0x0b9c, 0x0bc9, 0x0bdb, 0x0bef, 0x0c03, + 0x0c0f, 0x0c1f, 0x0c2f, 0x0c3b, 0x0c49, 0x0c59, 0x0c69, 0x0c77, + 0x0c94, 0x0c9e, 0x0cb2, 0x0cc0, 0x0cd2, 0x0ce6, 0x0cf6, 0x0d00, + 0x0d0a, 0x0d12, 0x0d2d, 0x0d35, 0x0d41, 0x0d49, 0x0d72, 0x0d98, + 0x0daa, 0x0dba, 0x0dc6, 0x0de7, 0x0e04, 0x0e19, 0x0e46, 0x0e5a, // Entry C0 - FF - 0x0e90, 0x0e9a, 0x0eb7, 0x0ec5, 0x0ed3, 0x0edf, 0x0eeb, 0x0ef7, - 0x0f18, 0x0f34, 0x0f52, 0x0f5c, 0x0f68, 0x0f78, 0x0f8e, 0x0f9e, - 0x0fc5, 0x0fd5, 0x0fec, 0x0fff, 0x100d, 0x1019, 0x1027, 0x103c, - 0x105f, 0x1071, 0x1086, 0x1090, 0x10a2, 0x10c0, 0x10e2, 0x10e8, - 0x111e, 0x1126, 0x1134, 0x114a, 0x1158, 0x1175, 0x118d, 0x1197, - 0x11a1, 0x11ad, 0x11cd, 0x11d9, 0x11e7, 0x11f7, 0x1205, 0x1211, - 0x123b, 0x125c, 0x126a, 0x127e, 0x128c, 0x12b9, 0x12cb, 0x12fe, - 0x1323, 0x1331, 0x133f, 0x135b, 0x1365, 0x1371, 0x137b, 0x1389, + 0x0e64, 0x0e74, 0x0e7e, 0x0e9b, 0x0ea9, 0x0eb7, 0x0ec3, 0x0ecf, + 0x0edb, 0x0efc, 0x0f1f, 0x0f44, 0x0f4e, 0x0f5a, 0x0f6a, 0x0f80, + 0x0f90, 0x0fb7, 0x0fc7, 0x0fde, 0x0ff1, 0x0fff, 0x100b, 0x1019, + 0x102e, 0x1051, 0x1063, 0x1078, 0x1082, 0x1094, 0x10b2, 0x10d4, + 0x10da, 0x1110, 0x1118, 0x1126, 0x113c, 0x114a, 0x1167, 0x117f, + 0x1189, 0x1193, 0x119f, 0x11bf, 0x11cb, 0x11d9, 0x11e9, 0x11f7, + 0x1203, 0x122d, 0x1267, 0x1288, 0x1296, 0x12aa, 0x12b8, 0x12e5, + 0x12f7, 0x132a, 0x134f, 0x135d, 0x136b, 0x1387, 0x1391, 0x139d, // Entry 100 - 13F - 0x138f, 0x139b, 0x13ab, 0x13ce, 0x13d4, 0x13e0, 0x13ff, 0x1418, - 0x1426, 0x1443, 0x1468, 0x1487, 0x14a4, 0x14c7, 0x14de, 0x14ec, - 0x1526, 0x1532, 0x154d, 0x1560, 0x1582, 0x1599, 0x15af, 0x15c1, - 0x15d5, 0x15e7, 0x15ef, 0x1606, 0x1633, 0x163f, 0x165e, 0x167b, - 0x1698, 0x16b9, -} // Size: 604 bytes - -var siRegionStr string = "" + // Size: 9298 bytes + 0x13a7, 0x13b5, 0x13bb, 0x13c7, 0x13d7, 0x13fa, 0x1400, 0x140c, + 0x142b, 0x1444, 0x1452, 0x146f, 0x1494, 0x14b3, 0x14d0, 0x14f3, + 0x150a, 0x1518, 0x1552, 0x155e, 0x1579, 0x158c, 0x15ae, 0x15c5, + 0x15db, 0x15ed, 0x1601, 0x1613, 0x161b, 0x163a, 0x1653, 0x165f, + 0x167e, 0x169b, 0x16b8, 0x16d9, +} // Size: 608 bytes + +const siRegionStr string = "" + // Size: 9319 bytes "ඇසෙන්ෂන් දිවයිනඇන්ඩෝරාවඑක්සත් අරාබි එමිර් රාජ්\u200dයයඇෆ්ගනිස්ථානයඇන්ටිග" + "ුවා සහ බාබියුඩාවඇන්ගුයිලාවඇල්බේනියාවආර්මේනියාවඇන්ගෝලාවඇන්ටාක්ටිකාවආර්ජ" + "ෙන්ටිනාවඇමරිකානු සැමෝවාවඔස්ට්\u200dරියාවඕස්ට්\u200dරේලියාවඅරුබාවඕලන්ඩ්" + @@ -42993,48 +48098,48 @@ var siRegionStr string = "" + // Size: 9298 bytes "ානාබෙලරුස්බෙලීස්කැනඩාවකොකෝස් දූපත්කොංගො - කින්ශාසාමධ්\u200dයම අප්" + "\u200dරිකානු ජනරජයකොංගො - බ්\u200dරසාවිල්ස්විස්ටර්ලන්තයකෝට් දි අයිවරිකුක" + "් දූපත්චිලීකැමරූන්චීනයකොළොම්බියාවක්ලීපර්ටන් දූපතකොස්ටරිකාවකියුබාවකේප් " + - "වර්ඩ්කුරකාවෝක්\u200dරිස්මස් දූපතසයිප්\u200dරසයචෙක් ජනරජයජර්මනියදියාගෝ " + - "ගාර්සියාජිබුටිඩෙන්මාර්කයඩොමිනිකාවඩොමිනිකා ජනරජයඇල්ජීරියාවසෙයුටා සහ මෙල" + - "ිල්ලාඉක්වදෝරයඑස්තෝනියාවඊජිප්තුවබටහිර සහරාවඑරිත්\u200dරියාවස්පාඤ්ඤයඉතිය" + - "ෝපියාවයුරෝපා සංගමයෆින්ලන්තයෆීජීෆෝක්ලන්ත දූපත්මයික්\u200dරොනීසියාවෆැරෝ " + - "දූපත්ප්\u200dරංශයගැබොන්එක්සත් රාජධානියග්\u200dරැනඩාවජෝර්ජියාවප්\u200dර" + - "ංශ ගයනාවගර්න්සියඝානාවජිබ්\u200dරෝල්ටාවග්\u200dරීන්ලන්තයගැම්බියාවගිණියා" + - "වග්වෝඩලෝප්සමක ගිනියාවග්\u200dරීසියදකුණු ජෝර්ජියාව සහ දකුණු සැන්ඩ්විච් " + - "දූපත්ගෝතමාලාවගුවාම්ගිනි බිසව්ගයනාවහොංකොං චීන විශේෂ පරිපාලන කලාපයහර්ඩ් " + - "දූපත සහ මැක්ඩොනල්ඩ් දූපත්හොන්ඩුරාස්ක්\u200dරොඒෂියාවහයිටිහන්ගේරියාවකැනර" + - "ි සූපත්ඉන්දුනීසියාවඅයර්ලන්තයඊශ්\u200dරායලයඅයිල් ඔෆ් මෑන්ඉන්දියාවබ්" + - "\u200dරිතාන්\u200dය ඉන්දීය සාගර බල ප්\u200dරදේශයඉරාකයඉරානයඅයිස්ලන්තයඉතාල" + - "ියජර්සිජැමෙයිකාවජෝර්දානයජපානයකෙන්යාවකිර්ගිස්තානයකාම්බෝජයකිරිබතිකොමොරෝස" + - "්ශාන්ත කිට්ස් සහ නේවිස්උතුරු කොරියාවදකුණු කොරියාවකුවේටයකේමන් දූපත්කසකස" + - "්තානයලාඕසයලෙබනනයශාන්ත ලුසියාලික්ටන්ස්ටයින්ශ්\u200dරී ලංකාවලයිබීරියාවලෙ" + - "සතෝලිතුවේනියාවලක්ශම්බර්ග්ලැට්වියාවලිබියාවමොරොක්කෝවමොනැකෝවමොල්ඩෝවාවමොන්" + - "ටෙනීග්\u200dරෝශාන්ත මාර්ටින්මැඩගස්කරයමාෂල් දූපත්මැසිඩෝනියාවමාලිමියන්මා" + - "රය (බුරුමය)මොන්ගෝලියාවමකාවු චීන විශේෂ පරිපාලන කලාපයඋතුරු මරියානා දූපත්" + - "මර්ටිනික්මොරිටේනියාවමොන්සෙරාට්මෝල්ටාවමුරුසියමාල දිවයිනමලාවිමෙක්සිකෝවමැ" + - "ලේසියාවමොසැම්බික්නැමීබියාවනව කැලිඩෝනියාවනයිජර්නෝෆෝක් දූපතනයිජීරියාවනික" + - "රගුවාවනෙදර්ලන්තයනෝර්වේනේපාලයනාවුරුනියූනවසීලන්තයඕමානයපැනමාවපේරුප්\u200d" + - "රංශ පොලිනීසියාවපැපුවා නිව් ගිනියාවපිලිපීනයපාකිස්තානයපෝලන්තයශාන්ත පියරේ" + - " සහ මැකෝලන්පිට්කෙය්න් දූපත්පුවර්ටෝ රිකෝපලස්තීන රාජ්\u200dයයපෘතුගාලයපලාවු" + - "පැරගුවේකටාර්ඈත ඕෂනියාවරීයුනියන්රුමේනියාවසර්බියාවරුසියාවරුවන්ඩාවසෞදි අර" + - "ාබියසොලමන් දූපත්සීශෙල්ස්සූඩානයස්වීඩනයසිංගප්පූරුවශාන්ත හෙලේනාස්ලෝවේනියා" + - "වස්වෙල්බර්ඩ් සහ ජේන් මයේන්ස්ලෝවැකියාවසියරාලියෝන්සැන් මැරිනෝසෙනගාලයසෝමා" + - "ලියාවසුරිනාමයදකුණු සුඩානයසාඕ තෝම් සහ ප්\u200dරින්සිප්එල් සැල්වදෝරයශාන්" + - "ත මාර්ටෙන්සිරියාවස්වාසිලන්තයට්\u200dරිස්ටන් ද කුන්හාටර්ක්ස් සහ කයිකොස්" + - " දූපත්චැච්දකුණු ප්\u200dරංශ දූපත් සමූහයටොගෝතායිලන්තයටජිකිස්තානයටොකලාවුටි" + - "මෝර් - ලෙස්ත්ටර්ක්මෙනිස්ථානයටියුනීසියාවටොංගාතුර්කියට්\u200dරිනිඩෑඩ් සහ" + - " ටොබැගෝටුවාලූතායිවානයටැන්සානියාවයුක්රේනයඋගන්ඩාවඑක්සත් ජනපද ඈත දූපත්එක්සත" + - "් ජනපදයඋරුගුවේඋස්බෙකිස්ථානයවතිකානු නගරයශාන්ත වින්සන්ට් සහ ග්\u200dරෙනඩ" + - "ින්ස්වෙනිසියුලාවබ්\u200dරිතාන්\u200dය වර්ජින් දූපත්ඇමරිකානු වර්ජින් දූ" + - "පත්වියට්නාමයවනුවාටුවැලිස් සහ ෆුටුනාසැමෝවාකොසෝවෝයේමනයමයෝට්දකුණු අප්" + - "\u200dරිකාවසැම්බියාවසිම්බාබ්වේහඳුනා නොගත් කළාපයලෝකයඅප්\u200dරිකාවඋතුරු ඇ" + - "මෙරිකාවදකුණු ඇමෙරිකාවඕෂනියාවබටහිරදිග අප්\u200dරිකාවමධ්\u200dයම ඇමෙරිකා" + - "වපෙරදිග අප්\u200dරිකාවඋතුරුදිග අප්\u200dරිකාවමධ්\u200dයම අප්\u200dරිකා" + - "වදකුණුදිග අප්\u200dරිකාවඇමරිකාවඋතුරුදිග ඇමෙරිකාවකැරීබියන්නැගෙනහිර ආසිය" + - "ාවදකුණු ආසියාවඅග්නිදිග ආසියාවදකුණුදිග යුරෝපයඕස්ට්\u200dරලේෂියාවමෙලනීසි" + - "යාවමයික්\u200dරෝනීසියානු කළාපයපොලිනීසියාවආසියාවමධ්\u200dයම ආසියාවබටහිර" + - " ආසියාවයුරෝපයනැගෙනහිර යුරෝපයඋතුරු යුරෝපයබටහිර යුරෝපයලතින් ඇමෙරිකාව" - -var siRegionIdx = []uint16{ // 290 elements + "වර්ඩ්කුරකාවෝක්\u200dරිස්මස් දූපතසයිප්\u200dරසයචෙක්ජර්මනියදියාගෝ ගාර්සි" + + "යාජිබුටිඩෙන්මාර්කයඩොමිනිකාවඩොමිනිකා ජනරජයඇල්ජීරියාවසෙයුටා සහ මෙලිල්ලාඉ" + + "ක්වදෝරයඑස්තෝනියාවඊජිප්තුවබටහිර සහරාවඑරිත්\u200dරියාවස්පාඤ්ඤයඉතියෝපියාව" + + "යුරෝපා සංගමයෆින්ලන්තයෆීජීෆෝක්ලන්ත දූපත්මයික්\u200dරොනීසියාවෆැරෝ දූපත්ප" + + "්\u200dරංශයගැබොන්එක්සත් රාජධානියග්\u200dරැනඩාවජෝර්ජියාවප්\u200dරංශ ගයන" + + "ාවගර්න්සියඝානාවජිබ්\u200dරෝල්ටාවග්\u200dරීන්ලන්තයගැම්බියාවගිණියාවග්වෝඩ" + + "ලෝප්සමක ගිනියාවග්\u200dරීසියදකුණු ජෝර්ජියාව සහ දකුණු සැන්ඩ්විච් දූපත්ග" + + "ෝතමාලාවගුවාම්ගිනි බිසව්ගයනාවහොංකොං චීන විශේෂ පරිපාලන කලාපයහර්ඩ් දූපත ස" + + "හ මැක්ඩොනල්ඩ් දූපත්හොන්ඩුරාස්ක්\u200dරොඒෂියාවහයිටිහන්ගේරියාවකැනරි සූපත" + + "්ඉන්දුනීසියාවඅයර්ලන්තයඊශ්\u200dරායලයඅයිල් ඔෆ් මෑන්ඉන්දියාවබ්\u200dරිතා" + + "න්\u200dය ඉන්දීය සාගර බල ප්\u200dරදේශයඉරාකයඉරානයඅයිස්ලන්තයඉතාලියජර්සිජ" + + "ැමෙයිකාවජෝර්දානයජපානයකෙන්යාවකිර්ගිස්තානයකාම්බෝජයකිරිබතිකොමොරෝස්ශාන්ත ක" + + "ිට්ස් සහ නේවිස්උතුරු කොරියාවදකුණු කොරියාවකුවේටයකේමන් දූපත්කසකස්තානයලාඕ" + + "සයලෙබනනයශාන්ත ලුසියාලික්ටන්ස්ටයින්ශ්\u200dරී ලංකාවලයිබීරියාවලෙසතෝලිතුව" + + "ේනියාවලක්ශම්බර්ග්ලැට්වියාවලිබියාවමොරොක්කෝවමොනාකෝවමොල්ඩෝවාවමොන්ටෙනීග්" + + "\u200dරෝශාන්ත මාර්ටින්මැඩගස්කරයමාෂල් දූපත්මැසිඩෝනියාවමාලිමියන්මාරය (බුරු" + + "මය)මොන්ගෝලියාවමකාවු චීන විශේෂ පරිපාලන කලාපයඋතුරු මරියානා දූපත්මර්ටිනික" + + "්මොරිටේනියාවමොන්සෙරාට්මෝල්ටාවමුරුසියමාල දිවයිනමලාවිමෙක්සිකෝවමැලේසියාවම" + + "ොසැම්බික්නැමීබියාවනව කැලිඩෝනියාවනයිජර්නෝෆෝක් දූපතනයිජීරියාවනිකරගුවාවනෙ" + + "දර්ලන්තයනෝර්වේනේපාලයනාවුරුනියූනවසීලන්තයඕමානයපැනමාවපේරුප්\u200dරංශ පොලි" + + "නීසියාවපැපුවා නිව් ගිනියාවපිලිපීනයපාකිස්තානයපෝලන්තයශාන්ත පියරේ සහ මැකෝ" + + "ලන්පිට්කෙය්න් දූපත්පුවර්ටෝ රිකෝපලස්තීන රාජ්\u200dයයපෘතුගාලයපලාවුපැරගුව" + + "ේකටාර්ඈත ඕෂනියාවරීයුනියන්රුමේනියාවසර්බියාවරුසියාවරුවන්ඩාවසෞදි අරාබියසො" + + "ලමන් දූපත්සීශෙල්ස්සූඩානයස්වීඩනයසිංගප්පූරුවශාන්ත හෙලේනාස්ලෝවේනියාවස්වෙල" + + "්බර්ඩ් සහ ජේන් මයේන්ස්ලෝවැකියාවසියරාලියෝන්සැන් මැරිනෝසෙනගාලයසෝමාලියාවස" + + "ුරිනාමයදකුණු සුඩානයසාඕ තෝම් සහ ප්\u200dරින්සිප්එල් සැල්වදෝරයශාන්ත මාර්" + + "ටෙන්සිරියාවස්වාසිලන්තයට්\u200dරිස්ටන් ද කුන්හාටර්ක්ස් සහ කයිකොස් දූපත්" + + "චැච්දකුණු ප්\u200dරංශ දූපත් සමූහයටොගෝතායිලන්තයටජිකිස්තානයටොකලාවුටිමෝර්" + + " - ලෙස්ත්ටර්ක්මෙනිස්ථානයටියුනීසියාවටොංගාතුර්කියට්\u200dරිනිඩෑඩ් සහ ටොබැග" + + "ෝටුවාලූතායිවානයටැන්සානියාවයුක්රේනයඋගන්ඩාවඑක්සත් ජනපද ඈත දූපත්එක්සත් ජා" + + "තීන්එක්සත් ජනපදයඋරුගුවේඋස්බෙකිස්ථානයවතිකානු නගරයශාන්ත වින්සන්ට් සහ ග්" + + "\u200dරෙනඩින්ස්වෙනිසියුලාවබ්\u200dරිතාන්\u200dය වර්ජින් දූපත්ඇමරිකානු වර" + + "්ජින් දූපත්වියට්නාමයවනුවාටුවැලිස් සහ ෆුටුනාසැමෝවාකොසෝවෝයේමනයමයෝට්දකුණු" + + " අප්\u200dරිකාවසැම්බියාවසිම්බාබ්වේහඳුනා නොගත් කළාපයලෝකයඅප්\u200dරිකාවඋතු" + + "රු ඇමෙරිකාවදකුණු ඇමෙරිකාවඕෂනියාවබටහිරදිග අප්\u200dරිකාවමධ්\u200dයම ඇමෙ" + + "රිකාවපෙරදිග අප්\u200dරිකාවඋතුරුදිග අප්\u200dරිකාවමධ්\u200dයම අප්\u200d" + + "රිකාවදකුණුදිග අප්\u200dරිකාවඇමරිකාවඋතුරුදිග ඇමෙරිකාවකැරීබියන්නැගෙනහිර " + + "ආසියාවදකුණු ආසියාවඅග්නිදිග ආසියාවදකුණුදිග යුරෝපයඕස්ට්\u200dරලේෂියාවමෙල" + + "නීසියාවමයික්\u200dරෝනීසියානු කළාපයපොලිනීසියාවආසියාවමධ්\u200dයම ආසියාවබ" + + "ටහිර ආසියාවයුරෝපයනැගෙනහිර යුරෝපයඋතුරු යුරෝපයබටහිර යුරෝපයලතින් ඇමෙරිකාව" + +var siRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x002b, 0x0043, 0x008b, 0x00af, 0x00ed, 0x010b, 0x0129, 0x0147, 0x015f, 0x0183, 0x01a7, 0x01d5, 0x01f6, 0x021d, 0x022f, @@ -43043,132 +48148,132 @@ var siRegionIdx = []uint16{ // 290 elements 0x0448, 0x045a, 0x046c, 0x048b, 0x04a9, 0x04be, 0x04d0, 0x04e2, 0x0504, 0x052e, 0x056f, 0x059f, 0x05c9, 0x05ef, 0x060b, 0x0617, 0x062c, 0x0638, 0x0659, 0x0684, 0x06a2, 0x06b7, 0x06d3, 0x06e8, - 0x0713, 0x072e, 0x074a, 0x075f, 0x078a, 0x079c, 0x07ba, 0x07d5, + 0x0713, 0x072e, 0x073a, 0x074f, 0x077a, 0x078c, 0x07aa, 0x07c5, // Entry 40 - 7F - 0x07fd, 0x081b, 0x084d, 0x0865, 0x0883, 0x089b, 0x08ba, 0x08db, - 0x08f3, 0x0911, 0x0933, 0x094e, 0x095a, 0x0982, 0x09af, 0x09cb, - 0x09e0, 0x09f2, 0x0a1d, 0x0a38, 0x0a53, 0x0a75, 0x0a8d, 0x0a9c, - 0x0ac0, 0x0ae4, 0x0aff, 0x0b14, 0x0b2f, 0x0b4e, 0x0b66, 0x0bd7, - 0x0bef, 0x0c01, 0x0c1d, 0x0c2c, 0x0c7e, 0x0cd3, 0x0cf1, 0x0d12, - 0x0d21, 0x0d3f, 0x0d5e, 0x0d82, 0x0d9d, 0x0db8, 0x0dde, 0x0df6, - 0x0e57, 0x0e66, 0x0e75, 0x0e93, 0x0ea5, 0x0eb4, 0x0ecf, 0x0ee7, - 0x0ef6, 0x0f0b, 0x0f2f, 0x0f47, 0x0f5c, 0x0f74, 0x0fb0, 0x0fd5, + 0x07ed, 0x080b, 0x083d, 0x0855, 0x0873, 0x088b, 0x08aa, 0x08cb, + 0x08e3, 0x0901, 0x0923, 0x0923, 0x093e, 0x094a, 0x0972, 0x099f, + 0x09bb, 0x09d0, 0x09e2, 0x0a0d, 0x0a28, 0x0a43, 0x0a65, 0x0a7d, + 0x0a8c, 0x0ab0, 0x0ad4, 0x0aef, 0x0b04, 0x0b1f, 0x0b3e, 0x0b56, + 0x0bc7, 0x0bdf, 0x0bf1, 0x0c0d, 0x0c1c, 0x0c6e, 0x0cc3, 0x0ce1, + 0x0d02, 0x0d11, 0x0d2f, 0x0d4e, 0x0d72, 0x0d8d, 0x0da8, 0x0dce, + 0x0de6, 0x0e47, 0x0e56, 0x0e65, 0x0e83, 0x0e95, 0x0ea4, 0x0ebf, + 0x0ed7, 0x0ee6, 0x0efb, 0x0f1f, 0x0f37, 0x0f4c, 0x0f64, 0x0fa0, // Entry 80 - BF - 0x0ffa, 0x100c, 0x102b, 0x1046, 0x1055, 0x1067, 0x1089, 0x10b3, - 0x10d2, 0x10f0, 0x10ff, 0x1120, 0x1141, 0x115c, 0x1171, 0x118c, - 0x11a1, 0x11bc, 0x11e3, 0x120b, 0x1226, 0x1245, 0x1266, 0x1272, - 0x12a2, 0x12c3, 0x1312, 0x1347, 0x1362, 0x1383, 0x13a1, 0x13b6, - 0x13cb, 0x13e7, 0x13f6, 0x1411, 0x142c, 0x144a, 0x1465, 0x148d, - 0x149f, 0x14be, 0x14dc, 0x14f7, 0x1515, 0x1527, 0x1539, 0x154b, - 0x1557, 0x1572, 0x1581, 0x1593, 0x159f, 0x15d3, 0x1608, 0x1620, - 0x163e, 0x1653, 0x168f, 0x16bd, 0x16df, 0x170a, 0x1722, 0x1731, + 0x0fc5, 0x0fea, 0x0ffc, 0x101b, 0x1036, 0x1045, 0x1057, 0x1079, + 0x10a3, 0x10c2, 0x10e0, 0x10ef, 0x1110, 0x1131, 0x114c, 0x1161, + 0x117c, 0x1191, 0x11ac, 0x11d3, 0x11fb, 0x1216, 0x1235, 0x1256, + 0x1262, 0x1292, 0x12b3, 0x1302, 0x1337, 0x1352, 0x1373, 0x1391, + 0x13a6, 0x13bb, 0x13d7, 0x13e6, 0x1401, 0x141c, 0x143a, 0x1455, + 0x147d, 0x148f, 0x14ae, 0x14cc, 0x14e7, 0x1505, 0x1517, 0x1529, + 0x153b, 0x1547, 0x1562, 0x1571, 0x1583, 0x158f, 0x15c3, 0x15f8, + 0x1610, 0x162e, 0x1643, 0x167f, 0x16ad, 0x16cf, 0x16fa, 0x1712, // Entry C0 - FF - 0x1746, 0x1755, 0x1771, 0x178c, 0x17a7, 0x17bf, 0x17d4, 0x17ec, - 0x180b, 0x182d, 0x1845, 0x1857, 0x186c, 0x188d, 0x18af, 0x18d0, - 0x1915, 0x1936, 0x1957, 0x1976, 0x198b, 0x19a6, 0x19be, 0x19e0, - 0x1a1f, 0x1a44, 0x1a6c, 0x1a81, 0x1aa2, 0x1ad7, 0x1b19, 0x1b25, - 0x1b67, 0x1b73, 0x1b8e, 0x1baf, 0x1bc4, 0x1beb, 0x1c18, 0x1c39, - 0x1c48, 0x1c5d, 0x1c98, 0x1caa, 0x1cc2, 0x1ce3, 0x1cfb, 0x1d10, - 0x1d46, 0x1d68, 0x1d7d, 0x1da4, 0x1dc6, 0x1e1d, 0x1e3e, 0x1e85, - 0x1ec3, 0x1ede, 0x1ef3, 0x1f1f, 0x1f31, 0x1f43, 0x1f52, 0x1f61, + 0x1721, 0x1736, 0x1745, 0x1761, 0x177c, 0x1797, 0x17af, 0x17c4, + 0x17dc, 0x17fb, 0x181d, 0x1835, 0x1847, 0x185c, 0x187d, 0x189f, + 0x18c0, 0x1905, 0x1926, 0x1947, 0x1966, 0x197b, 0x1996, 0x19ae, + 0x19d0, 0x1a0f, 0x1a34, 0x1a5c, 0x1a71, 0x1a92, 0x1ac7, 0x1b09, + 0x1b15, 0x1b57, 0x1b63, 0x1b7e, 0x1b9f, 0x1bb4, 0x1bdb, 0x1c08, + 0x1c29, 0x1c38, 0x1c4d, 0x1c88, 0x1c9a, 0x1cb2, 0x1cd3, 0x1ceb, + 0x1d00, 0x1d36, 0x1d5b, 0x1d7d, 0x1d92, 0x1db9, 0x1ddb, 0x1e32, + 0x1e53, 0x1e9a, 0x1ed8, 0x1ef3, 0x1f08, 0x1f34, 0x1f46, 0x1f58, // Entry 100 - 13F - 0x1f8c, 0x1fa7, 0x1fc5, 0x1ff4, 0x2000, 0x201b, 0x2043, 0x206b, - 0x2080, 0x20b4, 0x20df, 0x210d, 0x2141, 0x216f, 0x21a3, 0x21b8, - 0x21e9, 0x2204, 0x222f, 0x2251, 0x227c, 0x22a7, 0x22d1, 0x22ef, - 0x232f, 0x2350, 0x2362, 0x2387, 0x23a9, 0x23bb, 0x23e6, 0x2408, - 0x242a, 0x2452, -} // Size: 604 bytes - -var skRegionStr string = "" + // Size: 3194 bytes - "AscensiónAndorraSpojené arabské emirátyAfganistanAntigua a BarbudaAnguil" + + 0x1f67, 0x1f76, 0x1fa1, 0x1fbc, 0x1fda, 0x2009, 0x2015, 0x2030, + 0x2058, 0x2080, 0x2095, 0x20c9, 0x20f4, 0x2122, 0x2156, 0x2184, + 0x21b8, 0x21cd, 0x21fe, 0x2219, 0x2244, 0x2266, 0x2291, 0x22bc, + 0x22e6, 0x2304, 0x2344, 0x2365, 0x2377, 0x239c, 0x23be, 0x23d0, + 0x23fb, 0x241d, 0x243f, 0x2467, +} // Size: 608 bytes + +const skRegionStr string = "" + // Size: 3216 bytes + "AscensionAndorraSpojené arabské emirátyAfganistanAntigua a BarbudaAnguil" + "laAlbánskoArménskoAngolaAntarktídaArgentínaAmerická SamoaRakúskoAustráli" + - "aArubaÅlandyAzerbajdžanBosna a HercegovinaBarbadosBangladéšBelgickoBurki" + + "aArubaAlandyAzerbajdžanBosna a HercegovinaBarbadosBangladéšBelgickoBurki" + "na FasoBulharskoBahrajnBurundiBeninSvätý BartolomejBermudyBrunejBolíviaK" + "aribské HolandskoBrazíliaBahamyBhutánBouvetov ostrovBotswanaBieloruskoBe" + - "lizeKanadaKokosové ostrovyKongo - KinshasaStredoafrická republikaKongo -" + - " BrazzavilleŠvajčiarskoPobrežie SlonovinyCookove ostrovyČileKamerunČínaK" + - "olumbiaClippertonKostarikaKubaKapverdyCuraçaoVianočný ostrovCyprusČeská " + - "republikaNemeckoDiego GarcíaDžibutskoDánskoDominikaDominikánska republik" + - "aAlžírskoCeuta a MelillaEkvádorEstónskoEgyptZápadná SaharaEritreaŠpaniel" + - "skoEtiópiaEurópska úniaFínskoFidžiFalklandyMikronéziaFaerské ostrovyFran" + - "cúzskoGabonSpojené kráľovstvoGrenadaGruzínskoFrancúzska GuayanaGuernseyG" + - "hanaGibraltárGrónskoGambiaGuineaGuadeloupeRovníková GuineaGréckoJužná Ge" + - "orgia a Južné Sandwichove ostrovyGuatemalaGuamGuinea-BissauGuayanaHongko" + - "ng – OAO ČínyHeardov ostrov a McDonaldove ostrovyHondurasChorvátskoHaiti" + - "MaďarskoKanárske ostrovyIndonéziaÍrskoIzraelOstrov ManIndiaBritské indic" + - "kooceánske územieIrakIránIslandTalianskoJerseyJamajkaJordánskoJaponskoKe" + - "ňaKirgizskoKambodžaKiribatiKomorySvätý Krištof a NevisSeverná KóreaJužn" + - "á KóreaKuvajtKajmanie ostrovyKazachstanLaosLibanonSvätá LuciaLichtenšta" + - "jnskoSrí LankaLibériaLesothoLitvaLuxemburskoLotyšskoLíbyaMarokoMonakoMol" + - "davskoČierna HoraSvätý MartinMadagaskarMarshallove ostrovyMacedónskoMali" + - "MjanmarskoMongolskoMacao – OAO ČínySeverné MariányMartinikMauritániaMont" + - "serratMaltaMauríciusMaldivyMalawiMexikoMalajziaMozambikNamíbiaNová Kaled" + - "óniaNigerNorfolkNigériaNikaraguaHolandskoNórskoNepálNauruNiueNový Zélan" + - "dOmánPanamaPeruFrancúzska PolynéziaPapua Nová GuineaFilipínyPakistanPoľs" + - "koSaint Pierre a MiquelonPitcairnove ostrovyPortorikoPalestínske územiaP" + - "ortugalskoPalauParaguajKatarostatné TichomorieRéunionRumunskoSrbskoRusko" + - "RwandaSaudská ArábiaŠalamúnove ostrovySeychelySudánŠvédskoSingapurSvätá " + - "HelenaSlovinskoSvalbard a Jan MayenSlovenskoSierra LeoneSan MarínoSenega" + - "lSomálskoSurinamJužný SudánSvätý Tomáš a Princov ostrovSalvádorSint Maar" + - "tenSýriaSvazijskoTristan da CunhaTurks a CaicosČadFrancúzske južné a ant" + - "arktické územiaTogoThajskoTadžikistanTokelauVýchodný TimorTurkménskoTuni" + - "skoTongaTureckoTrinidad a TobagoTuvaluTaiwanTanzániaUkrajinaUgandaMenšie" + - " odľahlé ostrovy USASpojené štátyUruguajUzbekistanVatikánSvätý Vincent a" + - " GrenadínyVenezuelaBritské Panenské ostrovyAmerické Panenské ostrovyViet" + - "namVanuatuWallis a FutunaSamoaKosovoJemenMayotteJužná AfrikaZambiaZimbab" + - "weneznámy regiónsvetAfrikaSeverná AmerikaJužná AmerikaOceániazápadná Afr" + - "ikaStredná Amerikavýchodná Afrikaseverná Afrikastredná Afrikajužné územi" + - "a AfrikyAmerikaseverné územia AmerikyKaribikvýchodná Áziajužná Áziajuhov" + - "ýchodná Áziajužná EurópaAustraláziaMelanéziaoblasť MikronéziePolynéziaÁ" + - "ziastredná Áziazápadná ÁziaEurópavýchodná Európaseverná Európazápadná Eu" + - "rópaLatinská Amerika" - -var skRegionIdx = []uint16{ // 290 elements + "lizeKanadaKokosové ostrovyKonžská demokratická republikaStredoafrická re" + + "publikaKonžská republikaŠvajčiarskoPobrežie SlonovinyCookove ostrovyČile" + + "KamerunČínaKolumbiaClippertonKostarikaKubaKapverdyCuraçaoVianočný ostrov" + + "CyprusČeskoNemeckoDiego GarciaDžibutskoDánskoDominikaDominikánska republ" + + "ikaAlžírskoCeuta a MelillaEkvádorEstónskoEgyptZápadná SaharaEritreaŠpani" + + "elskoEtiópiaEurópska úniaFínskoFidžiFalklandyMikronéziaFaerské ostrovyFr" + + "ancúzskoGabonSpojené kráľovstvoGrenadaGruzínskoFrancúzska GuayanaGuernse" + + "yGhanaGibraltárGrónskoGambiaGuineaGuadeloupeRovníková GuineaGréckoJužná " + + "Georgia a Južné Sandwichove ostrovyGuatemalaGuamGuinea-BissauGuayanaHong" + + "kong – OAO ČínyHeardov ostrov a Macdonaldove ostrovyHondurasChorvátskoHa" + + "itiMaďarskoKanárske ostrovyIndonéziaÍrskoIzraelOstrov ManIndiaBritské in" + + "dickooceánske územieIrakIránIslandTalianskoJerseyJamajkaJordánskoJaponsk" + + "oKeňaKirgizskoKambodžaKiribatiKomorySvätý Krištof a NevisSeverná KóreaJu" + + "žná KóreaKuvajtKajmanie ostrovyKazachstanLaosLibanonSvätá LuciaLichtenš" + + "tajnskoSrí LankaLibériaLesothoLitvaLuxemburskoLotyšskoLíbyaMarokoMonakoM" + + "oldavskoČierna HoraSvätý Martin (fr.)MadagaskarMarshallove ostrovyMacedó" + + "nskoMaliMjanmarskoMongolskoMacao – OAO ČínySeverné MariányMartinikMaurit" + + "ániaMontserratMaltaMauríciusMaldivyMalawiMexikoMalajziaMozambikNamíbiaN" + + "ová KaledóniaNigerNorfolkNigériaNikaraguaHolandskoNórskoNepálNauruNiueNo" + + "vý ZélandOmánPanamaPeruFrancúzska PolynéziaPapua Nová GuineaFilipínyPaki" + + "stanPoľskoSaint Pierre a MiquelonPitcairnove ostrovyPortorikoPalestínske" + + " územiaPortugalskoPalauParaguajKatarostatné TichomorieRéunionRumunskoSrb" + + "skoRuskoRwandaSaudská ArábiaŠalamúnove ostrovySeychelySudánŠvédskoSingap" + + "urSvätá HelenaSlovinskoSvalbard a Jan MayenSlovenskoSierra LeoneSan Marí" + + "noSenegalSomálskoSurinamJužný SudánSvätý Tomáš a Princov ostrovSalvádorS" + + "vätý Martin (hol.)SýriaSvazijskoTristan da CunhaTurks a CaicosČadFrancúz" + + "ske južné a antarktické územiaTogoThajskoTadžikistanTokelauVýchodný Timo" + + "rTurkménskoTuniskoTongaTureckoTrinidad a TobagoTuvaluTaiwanTanzániaUkraj" + + "inaUgandaMenšie odľahlé ostrovy USAOSNSpojené štátyUruguajUzbekistanVati" + + "kánSvätý Vincent a GrenadínyVenezuelaBritské Panenské ostrovyAmerické Pa" + + "nenské ostrovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMayotteJužná " + + "AfrikaZambiaZimbabweneznámy regiónsvetAfrikaSeverná AmerikaJužná Amerika" + + "Oceániazápadná AfrikaStredná Amerikavýchodná Afrikaseverná Afrikastredná" + + " Afrikajužné územia AfrikyAmerikaseverné územia AmerikyKaribikvýchodná Á" + + "ziajužná Áziajuhovýchodná Áziajužná EurópaAustraláziaMelanéziaoblasť Mik" + + "ronéziePolynéziaÁziastredná Áziazápadná ÁziaEurópavýchodná Európaseverná" + + " Európazápadná EurópaLatinská Amerika" + +var skRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x000a, 0x0011, 0x002b, 0x0035, 0x0046, 0x004e, 0x0057, - 0x0060, 0x0066, 0x0071, 0x007b, 0x008a, 0x0092, 0x009c, 0x00a1, - 0x00a8, 0x00b4, 0x00c7, 0x00cf, 0x00da, 0x00e2, 0x00ee, 0x00f7, - 0x00fe, 0x0105, 0x010a, 0x011c, 0x0123, 0x0129, 0x0131, 0x0144, - 0x014d, 0x0153, 0x015a, 0x0169, 0x0171, 0x017b, 0x0181, 0x0187, - 0x0198, 0x01a8, 0x01c0, 0x01d3, 0x01e0, 0x01f3, 0x0202, 0x0207, - 0x020e, 0x0214, 0x021c, 0x0226, 0x022f, 0x0233, 0x023b, 0x0243, - 0x0254, 0x025a, 0x026b, 0x0272, 0x027f, 0x0289, 0x0290, 0x0298, + 0x0000, 0x0009, 0x0010, 0x002a, 0x0034, 0x0045, 0x004d, 0x0056, + 0x005f, 0x0065, 0x0070, 0x007a, 0x0089, 0x0091, 0x009b, 0x00a0, + 0x00a6, 0x00b2, 0x00c5, 0x00cd, 0x00d8, 0x00e0, 0x00ec, 0x00f5, + 0x00fc, 0x0103, 0x0108, 0x011a, 0x0121, 0x0127, 0x012f, 0x0142, + 0x014b, 0x0151, 0x0158, 0x0167, 0x016f, 0x0179, 0x017f, 0x0185, + 0x0196, 0x01b7, 0x01cf, 0x01e2, 0x01ef, 0x0202, 0x0211, 0x0216, + 0x021d, 0x0223, 0x022b, 0x0235, 0x023e, 0x0242, 0x024a, 0x0252, + 0x0263, 0x0269, 0x026f, 0x0276, 0x0282, 0x028c, 0x0293, 0x029b, // Entry 40 - 7F - 0x02af, 0x02b9, 0x02c8, 0x02d0, 0x02d9, 0x02de, 0x02ee, 0x02f5, - 0x0300, 0x0308, 0x0317, 0x031e, 0x0324, 0x032d, 0x0338, 0x0348, - 0x0353, 0x0358, 0x036d, 0x0374, 0x037e, 0x0391, 0x0399, 0x039e, - 0x03a8, 0x03b0, 0x03b6, 0x03bc, 0x03c6, 0x03d8, 0x03df, 0x040c, - 0x0415, 0x0419, 0x0426, 0x042d, 0x0444, 0x0468, 0x0470, 0x047b, - 0x0480, 0x0489, 0x049a, 0x04a4, 0x04aa, 0x04b0, 0x04ba, 0x04bf, - 0x04e0, 0x04e4, 0x04e9, 0x04ef, 0x04f8, 0x04fe, 0x0505, 0x050f, - 0x0517, 0x051c, 0x0525, 0x052e, 0x0536, 0x053c, 0x0554, 0x0563, + 0x02b2, 0x02bc, 0x02cb, 0x02d3, 0x02dc, 0x02e1, 0x02f1, 0x02f8, + 0x0303, 0x030b, 0x031a, 0x031a, 0x0321, 0x0327, 0x0330, 0x033b, + 0x034b, 0x0356, 0x035b, 0x0370, 0x0377, 0x0381, 0x0394, 0x039c, + 0x03a1, 0x03ab, 0x03b3, 0x03b9, 0x03bf, 0x03c9, 0x03db, 0x03e2, + 0x040f, 0x0418, 0x041c, 0x0429, 0x0430, 0x0447, 0x046c, 0x0474, + 0x047f, 0x0484, 0x048d, 0x049e, 0x04a8, 0x04ae, 0x04b4, 0x04be, + 0x04c3, 0x04e4, 0x04e8, 0x04ed, 0x04f3, 0x04fc, 0x0502, 0x0509, + 0x0513, 0x051b, 0x0520, 0x0529, 0x0532, 0x053a, 0x0540, 0x0558, // Entry 80 - BF - 0x0571, 0x0577, 0x0587, 0x0591, 0x0595, 0x059c, 0x05a9, 0x05b9, - 0x05c3, 0x05cb, 0x05d2, 0x05d7, 0x05e2, 0x05eb, 0x05f1, 0x05f7, - 0x05fd, 0x0606, 0x0612, 0x0620, 0x062a, 0x063d, 0x0648, 0x064c, - 0x0656, 0x065f, 0x0673, 0x0684, 0x068c, 0x0697, 0x06a1, 0x06a6, - 0x06b0, 0x06b7, 0x06bd, 0x06c3, 0x06cb, 0x06d3, 0x06db, 0x06eb, - 0x06f0, 0x06f7, 0x06ff, 0x0708, 0x0711, 0x0718, 0x071e, 0x0723, - 0x0727, 0x0734, 0x0739, 0x073f, 0x0743, 0x0759, 0x076b, 0x0774, - 0x077c, 0x0783, 0x079a, 0x07ad, 0x07b6, 0x07ca, 0x07d5, 0x07da, + 0x0567, 0x0575, 0x057b, 0x058b, 0x0595, 0x0599, 0x05a0, 0x05ad, + 0x05bd, 0x05c7, 0x05cf, 0x05d6, 0x05db, 0x05e6, 0x05ef, 0x05f5, + 0x05fb, 0x0601, 0x060a, 0x0616, 0x062a, 0x0634, 0x0647, 0x0652, + 0x0656, 0x0660, 0x0669, 0x067d, 0x068e, 0x0696, 0x06a1, 0x06ab, + 0x06b0, 0x06ba, 0x06c1, 0x06c7, 0x06cd, 0x06d5, 0x06dd, 0x06e5, + 0x06f5, 0x06fa, 0x0701, 0x0709, 0x0712, 0x071b, 0x0722, 0x0728, + 0x072d, 0x0731, 0x073e, 0x0743, 0x0749, 0x074d, 0x0763, 0x0775, + 0x077e, 0x0786, 0x078d, 0x07a4, 0x07b7, 0x07c0, 0x07d4, 0x07df, // Entry C0 - FF - 0x07e2, 0x07e7, 0x07fa, 0x0802, 0x080a, 0x0810, 0x0815, 0x081b, - 0x082b, 0x083f, 0x0847, 0x084d, 0x0856, 0x085e, 0x086c, 0x0875, - 0x0889, 0x0892, 0x089e, 0x08a9, 0x08b0, 0x08b9, 0x08c0, 0x08ce, - 0x08ee, 0x08f7, 0x0903, 0x0909, 0x0912, 0x0922, 0x0930, 0x0934, - 0x095e, 0x0962, 0x0969, 0x0975, 0x097c, 0x098c, 0x0997, 0x099e, - 0x09a3, 0x09aa, 0x09bb, 0x09c1, 0x09c7, 0x09d0, 0x09d8, 0x09de, - 0x09fb, 0x0a0b, 0x0a12, 0x0a1c, 0x0a24, 0x0a40, 0x0a49, 0x0a63, - 0x0a7e, 0x0a85, 0x0a8c, 0x0a9b, 0x0aa0, 0x0aa6, 0x0aab, 0x0ab2, + 0x07e4, 0x07ec, 0x07f1, 0x0804, 0x080c, 0x0814, 0x081a, 0x081f, + 0x0825, 0x0835, 0x0849, 0x0851, 0x0857, 0x0860, 0x0868, 0x0876, + 0x087f, 0x0893, 0x089c, 0x08a8, 0x08b3, 0x08ba, 0x08c3, 0x08ca, + 0x08d8, 0x08f8, 0x0901, 0x0916, 0x091c, 0x0925, 0x0935, 0x0943, + 0x0947, 0x0971, 0x0975, 0x097c, 0x0988, 0x098f, 0x099f, 0x09aa, + 0x09b1, 0x09b6, 0x09bd, 0x09ce, 0x09d4, 0x09da, 0x09e3, 0x09eb, + 0x09f1, 0x0a0e, 0x0a11, 0x0a21, 0x0a28, 0x0a32, 0x0a3a, 0x0a56, + 0x0a5f, 0x0a79, 0x0a94, 0x0a9b, 0x0aa2, 0x0ab1, 0x0ab6, 0x0abc, // Entry 100 - 13F - 0x0ac0, 0x0ac6, 0x0ace, 0x0ade, 0x0ae2, 0x0ae8, 0x0af8, 0x0b07, - 0x0b0f, 0x0b1f, 0x0b2f, 0x0b40, 0x0b4f, 0x0b5e, 0x0b74, 0x0b7b, - 0x0b93, 0x0b9a, 0x0baa, 0x0bb7, 0x0bcb, 0x0bda, 0x0be6, 0x0bf0, - 0x0c03, 0x0c0d, 0x0c12, 0x0c20, 0x0c2f, 0x0c36, 0x0c48, 0x0c58, - 0x0c69, 0x0c7a, -} // Size: 604 bytes - -var slRegionStr string = "" + // Size: 3188 bytes + 0x0ac1, 0x0ac8, 0x0ad6, 0x0adc, 0x0ae4, 0x0af4, 0x0af8, 0x0afe, + 0x0b0e, 0x0b1d, 0x0b25, 0x0b35, 0x0b45, 0x0b56, 0x0b65, 0x0b74, + 0x0b8a, 0x0b91, 0x0ba9, 0x0bb0, 0x0bc0, 0x0bcd, 0x0be1, 0x0bf0, + 0x0bfc, 0x0c06, 0x0c19, 0x0c23, 0x0c28, 0x0c36, 0x0c45, 0x0c4c, + 0x0c5e, 0x0c6e, 0x0c7f, 0x0c90, +} // Size: 608 bytes + +const slRegionStr string = "" + // Size: 3201 bytes "Otok AscensionAndoraZdruženi arabski emiratiAfganistanAntigva in Barbuda" + "AngvilaAlbanijaArmenijaAngolaAntarktikaArgentinaAmeriška SamoaAvstrijaAv" + "stralijaArubaÅlandski otokiAzerbajdžanBosna in HercegovinaBarbadosBangla" + @@ -43184,37 +48289,37 @@ var slRegionStr string = "" + // Size: 3188 bytes "ncoska GvajanaGuernseyGanaGibraltarGrenlandijaGambijaGvinejaGvadalupeEkv" + "atorialna GvinejaGrčijaJužna Georgia in Južni Sandwichevi otokiGvatemala" + "GuamGvineja BissauGvajanaPosebno administrativno območje LR Kitajske Hon" + - "g KongHeardov otok in McDonaldovi otokiHondurasHrvaškaHaitiMadžarskaKana" + - "rski otokiIndonezijaIrskaIzraelOtok ManIndijaBritansko ozemlje v Indijsk" + - "em oceanuIrakIranIslandijaItalijaJerseyJamajkaJordanijaJaponskaKenijaKir" + - "gizistanKambodžaKiribatiKomoriSaint Kitts in NevisSeverna KorejaJužna Ko" + - "rejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint LuciaLihtenštajnŠrila" + - "nkaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMonakoMoldavijaČrna g" + - "oraSaint MartinMadagaskarMarshallovi otokiMakedonijaMaliMjanmar (Burma)M" + - "ongolijaPosebno administrativno območje LR Kitajske MacaoSeverni Marians" + - "ki otokiMartinikMavretanijaMontserratMaltaMauritiusMaldiviMalaviMehikaMa" + - "lezijaMozambikNamibijaNova KaledonijaNigerNorfolški otokNigerijaNikaragv" + - "aNizozemskaNorveškaNepalNauruNiueNova ZelandijaOmanPanamaPeruFrancoska P" + - "olinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSaint Pierre in Miquel" + - "onPitcairnPortorikoPalestinsko ozemljePortugalskaPalauParagvajKatarOstal" + - "a oceanijaReunionRomunijaSrbijaRusijaRuandaSaudova ArabijaSalomonovi oto" + - "kiSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard in Jan MayenS" + - "lovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao Tome i" + - "n PrincipeSalvadorSint MaartenSirijaSvaziTristan da CunhaOtočji Turks in" + - " CaicosČadFrancosko južno ozemljeTogoTajskaTadžikistanTokelauVzhodni Tim" + - "orTurkmenistanTunizijaTongaTurčijaTrinidad in TobagoTuvaluTajvanTanzanij" + - "aUkrajinaUgandaDruga ameriška ozemlja v Tihem oceanuZdružene države Amer" + - "ikeUrugvajUzbekistanVatikanSaint Vincent in GrenadineVenezuelaBritanski " + - "Deviški otokiAmeriški Deviški otokiVietnamVanuatuWallis in FutunaSamoaKo" + - "sovoJemenMayotteJužnoafriška republikaZambijaZimbabveNeznano ali nevelja" + - "vno območjeSvetAfrikaSeverna AmerikaJužna AmerikaOceanijaZahodna AfrikaS" + - "rednja AmerikaVzhodna AfrikaSeverna AfrikaSrednja AfrikaJužna AfrikaAmer" + - "ikesevernoameriška celinaKaribiVzhodna AzijaJužna AzijaJugovzhodna Azija" + - "Južna EvropaAvstralija in Nova ZelandijaMelanezijamikronezijska regijaPo" + - "linezijaAzijaOsrednja AzijaZahodna AzijaEvropaVzhodna EvropaSeverna Evro" + - "paZahodna EvropaLatinska Amerika" - -var slRegionIdx = []uint16{ // 290 elements + "gkongHeardov otok in McDonaldovi otokiHondurasHrvaškaHaitiMadžarskaKanar" + + "ski otokiIndonezijaIrskaIzraelOtok ManIndijaBritansko ozemlje v Indijske" + + "m oceanuIrakIranIslandijaItalijaJerseyJamajkaJordanijaJaponskaKenijaKirg" + + "izistanKambodžaKiribatiKomoriSaint Kitts in NevisSeverna KorejaJužna Kor" + + "ejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint LuciaLihtenštajnŠrilan" + + "kaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMonakoMoldavijaČrna go" + + "raSaint MartinMadagaskarMarshallovi otokiMakedonijaMaliMjanmar (Burma)Mo" + + "ngolijaPosebno administrativno območje LR Kitajske MacaoSeverni Mariansk" + + "i otokiMartinikMavretanijaMontserratMaltaMauritiusMaldiviMalaviMehikaMal" + + "ezijaMozambikNamibijaNova KaledonijaNigerNorfolški otokNigerijaNikaragva" + + "NizozemskaNorveškaNepalNauruNiueNova ZelandijaOmanPanamaPeruFrancoska Po" + + "linezijaPapua Nova GvinejaFilipiniPakistanPoljskaSaint Pierre in Miquelo" + + "nPitcairnPortorikoPalestinsko ozemljePortugalskaPalauParagvajKatarOstala" + + " oceanijaReunionRomunijaSrbijaRusijaRuandaSaudova ArabijaSalomonovi otok" + + "iSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard in Jan MayenSl" + + "ovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao Tome in" + + " PrincipeSalvadorSint MaartenSirijaSvaziTristan da CunhaOtoki Turks in C" + + "aicosČadFrancosko južno ozemljeTogoTajskaTadžikistanTokelauTimor-LesteTu" + + "rkmenistanTunizijaTongaTurčijaTrinidad in TobagoTuvaluTajvanTanzanijaUkr" + + "ajinaUgandaStranski zunanji otoki Združenih državZdruženi narodiZdružene" + + " države AmerikeUrugvajUzbekistanVatikanSaint Vincent in GrenadineVenezue" + + "laBritanski Deviški otokiAmeriški Deviški otokiVietnamVanuatuWallis in F" + + "utunaSamoaKosovoJemenMayotteJužnoafriška republikaZambijaZimbabveNeznano" + + " ali neveljavno območjeSvetAfrikaSeverna AmerikaJužna AmerikaOceanijaZah" + + "odna AfrikaSrednja AmerikaVzhodna AfrikaSeverna AfrikaSrednja AfrikaJužn" + + "a AfrikaAmerikesevernoameriška celinaKaribiVzhodna AzijaJužna AzijaJugov" + + "zhodna AzijaJužna EvropaAvstralija in Nova ZelandijaMelanezijamikronezij" + + "ska regijaPolinezijaAzijaOsrednja AzijaZahodna AzijaEvropaVzhodna Evropa" + + "Severna EvropaZahodna EvropaLatinska Amerika" + +var slRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000e, 0x0014, 0x002d, 0x0037, 0x0049, 0x0050, 0x0058, 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x0090, 0x009a, 0x009f, @@ -43226,310 +48331,310 @@ var slRegionIdx = []uint16{ // 290 elements 0x0264, 0x0269, 0x0270, 0x0278, 0x0284, 0x028c, 0x0292, 0x029a, // Entry 40 - 7F 0x02b0, 0x02b9, 0x02c9, 0x02d0, 0x02d8, 0x02dd, 0x02eb, 0x02f3, - 0x02fb, 0x0303, 0x0311, 0x0317, 0x031d, 0x032e, 0x0339, 0x0345, - 0x034d, 0x0352, 0x0366, 0x036d, 0x0374, 0x0385, 0x038d, 0x0391, - 0x039a, 0x03a5, 0x03ac, 0x03b3, 0x03bc, 0x03d0, 0x03d7, 0x0401, - 0x040a, 0x040e, 0x041c, 0x0423, 0x0459, 0x047a, 0x0482, 0x048a, - 0x048f, 0x0499, 0x04a7, 0x04b1, 0x04b6, 0x04bc, 0x04c4, 0x04ca, - 0x04ee, 0x04f2, 0x04f6, 0x04ff, 0x0506, 0x050c, 0x0513, 0x051c, - 0x0524, 0x052a, 0x0535, 0x053e, 0x0546, 0x054c, 0x0560, 0x056e, + 0x02fb, 0x0303, 0x0311, 0x0311, 0x0317, 0x031d, 0x032e, 0x0339, + 0x0345, 0x034d, 0x0352, 0x0366, 0x036d, 0x0374, 0x0385, 0x038d, + 0x0391, 0x039a, 0x03a5, 0x03ac, 0x03b3, 0x03bc, 0x03d0, 0x03d7, + 0x0401, 0x040a, 0x040e, 0x041c, 0x0423, 0x0458, 0x0479, 0x0481, + 0x0489, 0x048e, 0x0498, 0x04a6, 0x04b0, 0x04b5, 0x04bb, 0x04c3, + 0x04c9, 0x04ed, 0x04f1, 0x04f5, 0x04fe, 0x0505, 0x050b, 0x0512, + 0x051b, 0x0523, 0x0529, 0x0534, 0x053d, 0x0545, 0x054b, 0x055f, // Entry 80 - BF - 0x057b, 0x0581, 0x0590, 0x0599, 0x059d, 0x05a4, 0x05af, 0x05bb, - 0x05c4, 0x05cc, 0x05d2, 0x05d7, 0x05e1, 0x05e8, 0x05ee, 0x05f4, - 0x05fa, 0x0603, 0x060d, 0x0619, 0x0623, 0x0634, 0x063e, 0x0642, - 0x0651, 0x065a, 0x068c, 0x06a3, 0x06ab, 0x06b6, 0x06c0, 0x06c5, - 0x06ce, 0x06d5, 0x06db, 0x06e1, 0x06e9, 0x06f1, 0x06f9, 0x0708, - 0x070d, 0x071c, 0x0724, 0x072d, 0x0737, 0x0740, 0x0745, 0x074a, - 0x074e, 0x075c, 0x0760, 0x0766, 0x076a, 0x077e, 0x0790, 0x0798, - 0x07a0, 0x07a7, 0x07bf, 0x07c7, 0x07d0, 0x07e3, 0x07ee, 0x07f3, + 0x056d, 0x057a, 0x0580, 0x058f, 0x0598, 0x059c, 0x05a3, 0x05ae, + 0x05ba, 0x05c3, 0x05cb, 0x05d1, 0x05d6, 0x05e0, 0x05e7, 0x05ed, + 0x05f3, 0x05f9, 0x0602, 0x060c, 0x0618, 0x0622, 0x0633, 0x063d, + 0x0641, 0x0650, 0x0659, 0x068b, 0x06a2, 0x06aa, 0x06b5, 0x06bf, + 0x06c4, 0x06cd, 0x06d4, 0x06da, 0x06e0, 0x06e8, 0x06f0, 0x06f8, + 0x0707, 0x070c, 0x071b, 0x0723, 0x072c, 0x0736, 0x073f, 0x0744, + 0x0749, 0x074d, 0x075b, 0x075f, 0x0765, 0x0769, 0x077d, 0x078f, + 0x0797, 0x079f, 0x07a6, 0x07be, 0x07c6, 0x07cf, 0x07e2, 0x07ed, // Entry C0 - FF - 0x07fb, 0x0800, 0x080f, 0x0816, 0x081e, 0x0824, 0x082a, 0x0830, - 0x083f, 0x084f, 0x0857, 0x085c, 0x0864, 0x086c, 0x0878, 0x0881, - 0x0896, 0x089f, 0x08ab, 0x08b5, 0x08bc, 0x08c4, 0x08cb, 0x08d7, - 0x08eb, 0x08f3, 0x08ff, 0x0905, 0x090a, 0x091a, 0x0931, 0x0935, - 0x094d, 0x0951, 0x0957, 0x0963, 0x096a, 0x0977, 0x0983, 0x098b, - 0x0990, 0x0998, 0x09aa, 0x09b0, 0x09b6, 0x09bf, 0x09c7, 0x09cd, - 0x09f3, 0x0a0c, 0x0a13, 0x0a1d, 0x0a24, 0x0a3e, 0x0a47, 0x0a5f, - 0x0a77, 0x0a7e, 0x0a85, 0x0a95, 0x0a9a, 0x0aa0, 0x0aa5, 0x0aac, + 0x07f2, 0x07fa, 0x07ff, 0x080e, 0x0815, 0x081d, 0x0823, 0x0829, + 0x082f, 0x083e, 0x084e, 0x0856, 0x085b, 0x0863, 0x086b, 0x0877, + 0x0880, 0x0895, 0x089e, 0x08aa, 0x08b4, 0x08bb, 0x08c3, 0x08ca, + 0x08d6, 0x08ea, 0x08f2, 0x08fe, 0x0904, 0x0909, 0x0919, 0x092e, + 0x0932, 0x094a, 0x094e, 0x0954, 0x0960, 0x0967, 0x0972, 0x097e, + 0x0986, 0x098b, 0x0993, 0x09a5, 0x09ab, 0x09b1, 0x09ba, 0x09c2, + 0x09c8, 0x09f0, 0x0a00, 0x0a19, 0x0a20, 0x0a2a, 0x0a31, 0x0a4b, + 0x0a54, 0x0a6c, 0x0a84, 0x0a8b, 0x0a92, 0x0aa2, 0x0aa7, 0x0aad, // Entry 100 - 13F - 0x0ac4, 0x0acb, 0x0ad3, 0x0af2, 0x0af6, 0x0afc, 0x0b0b, 0x0b19, - 0x0b21, 0x0b2f, 0x0b3e, 0x0b4c, 0x0b5a, 0x0b68, 0x0b75, 0x0b7c, - 0x0b93, 0x0b99, 0x0ba6, 0x0bb2, 0x0bc3, 0x0bd0, 0x0bec, 0x0bf6, - 0x0c0a, 0x0c14, 0x0c19, 0x0c27, 0x0c34, 0x0c3a, 0x0c48, 0x0c56, - 0x0c64, 0x0c74, -} // Size: 604 bytes - -var sqRegionStr string = "" + // Size: 3130 bytes + 0x0ab2, 0x0ab9, 0x0ad1, 0x0ad8, 0x0ae0, 0x0aff, 0x0b03, 0x0b09, + 0x0b18, 0x0b26, 0x0b2e, 0x0b3c, 0x0b4b, 0x0b59, 0x0b67, 0x0b75, + 0x0b82, 0x0b89, 0x0ba0, 0x0ba6, 0x0bb3, 0x0bbf, 0x0bd0, 0x0bdd, + 0x0bf9, 0x0c03, 0x0c17, 0x0c21, 0x0c26, 0x0c34, 0x0c41, 0x0c47, + 0x0c55, 0x0c63, 0x0c71, 0x0c81, +} // Size: 608 bytes + +const sqRegionStr string = "" + // Size: 3064 bytes "Ishulli AsenshionAndorrëEmiratet e Bashkuara ArabeAfganistanAntigua e Ba" + "rbudaAnguilëShqipëriArmeniAngolëAntarktikëArgjentinëSamoa AmerikaneAustr" + "iAustraliArubëIshujt AlandëAzerbajxhanBosnjë-HercegovinëBarbadosBanglade" + - "shBelgjikëBurkina-FasoBullgariBahreinBurundBeninShën-BartolemeoBermudëBr" + - "unejBoliviKaraibet holandezeBrazilBahamasButanIshujt Bove’BotsuanëBjello" + - "rusiBelizëKanadaIshujt KokosëKongo-KinshasaRepublika Afrikano-QendroreKo" + - "ngo-BrazavilëZvicërBregu i FildishtëIshujt KukëKiliKamerunKinëKolumbiIsh" + - "ulli KlipërtonKosta-RikëKubëKepi i GjelbërKuraçaoIshulli i Krishtlindjes" + - "QiproRepublika ÇekeGjermaniDiego-GarsiaXhibutDanimarkëDominikëRepublika " + - "DominikaneAlgjeriTheuta e MelilaEkuadorEstoniEgjiptSaharaja PerëndimoreE" + - "ritreSpanjëEtiopiBashkimi EuropianFinlandëFixhiIshujt FolklandëMikronezi" + - "Ishujt FaroeFrancëGabonMbretëria e BashkuarGrenadëGjeorgjiGuajana France" + - "zeGuernsejGanëGjibraltarGrenlandëGambiGuineGuadalupeGuineja EkuatorialeG" + - "reqiXhorxha Jugore dhe Ishujt Senduiçë të JugutGuatemalëGuamGuine-BisauG" + - "uajanëRVAK i Hong KongutIshulli Hërd dhe Ishujt MekdonaldëHondurasKroaci" + - "HaitiHungariIshujt KanarieIndoneziIrlandëIzraelIshulli i ManitIndiTerrit" + - "ori Britanik i Oqeanit IndianIrakIranIslandëItaliXhersejXhamajkëJordaniJ" + - "aponiKeniaKirgistanKamboxhiaQiribatiKomoreShën-Kits dhe NevisKoreja e Ve" + - "riutKoreja e JugutKuvajtIshujt KajmanëKazakistanLaosLibanShën-LuçiaLihtë" + - "nshtajnSri-LankëLiberiLesotoLituaniLuksemburgLetoniLibiMarokMonakoMoldav" + - "iMali i ZiShën-MartinMadagaskarIshujt MarshallëMaqedoniMaliMianmar (Burm" + - "a)MongoliRVAK i MakaosIshujt e Marianës VerioreMartinikMauritaniMontsera" + - "tMaltëMauritiusMaldiveMalaviMeksikëMalajziMozambikNamibiKaledonia e ReNi" + - "gerIshulli NorfolkNigeriNikaraguaHolandëNorvegjiNepalNauruNiueZelanda e " + - "ReOmanPanamaPeruPolinezia FrancezePapua Guineja e ReFilipinePakistanPolo" + - "niShën-Peir dhe MikuelonIshujt PitkernëPorto-RikoTerritoret PalestinezeP" + - "ortugaliPalauParaguaiKatarOqeania e Largët (Lindja e Largët)ReunionRuman" + - "iSerbiRusiRuandëArabia SauditeIshujt SolomonëSishelSudanSuediSingaporShë" + - "n-HelenaSlloveniSvalbard e Zhan-MajenSllovakiSiera-LeoneSan-MarinoSenega" + - "liSomaliSurinamiSudani i JugutSao-Tome e PrinsipeEl SalvadorShën-Martin " + - "(Sint Maarten - pjesa e Mbretërisë së Holandës)SiriSuazilandëTristan-da-" + - "KunaIshujt Turke dhe KaikeÇadTerritoret Australiane FrancezeTogoTajlandë" + - "TaxhikistanTokelauTimori LindorTurkmenistanTuniziTongaTurqiTrinidad e To" + - "bagoTuvaluTajvanTanzaniUkrainëUgandëIshujt periferikë të SHBA-sëShtetet " + - "e Bashkuara të AmerikësUruguaiUzbekistanVatikanShën-Vinsent dhe Grenadin" + - "etVenezuelëIshujt e Virgjër BritanikëIshujt e Virgjër AmerikanëVietnamVa" + - "nuatuUollis e FutinaSamoaKosovëJemenMajotëAfrika e JugutZambiZimbabveI p" + - "anjohurBotaAfrikëAmerika e VeriutAmerika e JugutOqeaniAfrika Perëndimore" + - "Amerika QendroreAfrika LindoreAfrika VerioreAfrika e MesmeAfrika JugoreA" + - "merikëAmerika VerioreKaraibeAzia LindoreAzia JugoreAzia JuglindoreEuropa" + - " JugoreAustralaziaMelaneziaRajoni MikronezianPolineziaAziAzia QendroreAz" + - "ia PerëndimoreEuropëEuropa LindoreEuropa VerioreEuropa PerëndimoreAmerik" + - "a Latine" - -var sqRegionIdx = []uint16{ // 290 elements + "shBelgjikëBurkina-FasoBullgariBahrejnBurundiBeninShën BartolomeuBermudëB" + + "runeiBoliviKaraibet holandezeBrazilBahamasButanIshulli Bove’BotsvanëBjel" + + "lorusiBelizëKanadaIshujt KokosKongo-KinshasaRepubika e Afrikës QendroreK" + + "ongo-BrazavilëZvicërCôte d’IvoireIshujt KukKiliKamerunKinëKolumbiIshulli" + + " KlipërtonKosta-RikëKubëKepi i GjelbërKuraçaoIshulli i KrishtlindjesQipr" + + "oÇekiGjermaniDiego-GarsiaXhibutiDanimarkëDominikëRepublika DominikaneAlg" + + "jeriTheuta e MelilaEkuadorEstoniEgjiptSaharaja PerëndimoreEritreSpanjëEt" + + "iopiBashkimi EuropianFinlandëFixhiIshujt FalklandMikroneziIshujt FaroeFr" + + "ancëGabonMbretëria e BashkuarGrenadëGjeorgjiGuajana FrancezeGernsejGanëG" + + "jibraltarGrenlandëGambiaGuineGuadalupeGuineja EkuatorialeGreqiXhorxha Ju" + + "gore dhe Ishujt Senduiçë të JugutGuatemalëGuamGuine-BisauGuajanëRVAK i H" + + "ong KongutIshulli Hërd dhe Ishujt MekdonaldHondurasKroaciHaitiHungariIsh" + + "ujt KanarieIndoneziIrlandëIzraelIshulli i ManitIndiTerritori Britanik i " + + "Oqeanit IndianIrakIranIslandëItaliXhersejXhamajkëJordaniJaponiKeniaKirgi" + + "stanKamboxhiaKiribatiKomoreShën Kits dhe NevisKoreja e VeriutKoreja e Ju" + + "gutKuvajtIshujt KajmanKazakistanLaosLibanShën-LuçiaLihtenshtajnSri-Lankë" + + "LiberiLesotoLituaniLuksemburgLetoniLibiMarokMonakoMoldaviMal i ZiShën-Ma" + + "rtinMadagaskarIshujt MarshallMaqedoniMaliMianmar (Burma)MongoliRVAK i Ma" + + "kaosIshujt e Marianës VerioreMartinikëMauritaniMontseratMaltëMauritiusMa" + + "ldiveMalaviMeksikëMalajziMozambikNamibiKaledonia e ReNigerIshulli Norfol" + + "kNigeriNikaraguaHolandëNorvegjiNepalNauruNiueZelandë e ReOmanPanamaPeruP" + + "olinezia FrancezePapua Guineja e ReFilipinePakistanPoloniShën Pier dhe M" + + "ikelonIshujt PitkernPorto-RikoTerritoret PalestinezePortugaliPalauParagu" + + "aiKatarOqeania e Largët (Lindja e Largët)ReunionRumaniSerbiRusiRuandëAra" + + "bia SauditeIshujt SolomonSejshelleSudanSuediSingaporShën-HelenëSlloveniS" + + "valbard e Jan-MajenSllovakiSiera-LeoneSan-MarinoSenegalSomaliSurinamiSud" + + "ani i JugutSao-Tome e PrinsipeSalvadorSint MartenSiriSvazilandëTristan-d" + + "a-KunaIshujt Turks dhe KaikosÇadTerritoret Jugore FrancezeTogoTajlandëTa" + + "xhikistanTokelauTimor-LesteTurkmenistanTuniziTongaTurqiTrinidad e Tobago" + + "TuvaluTajvanTanzaniUkrainëUgandëIshujt periferikë të SHBA-sëkombet e bas" + + "hkuaraShtetet e Bashkuara të AmerikësUruguaiUzbekistanVatikanShën Vincen" + + "t dhe GrenadineVenezuelëIshujt e Virgjër BritanikëIshujt e Virgjër Ameri" + + "kanëVietnamVanuatuUollis e FutunaSamoaKosovëJemenMajotëAfrika e JugutZam" + + "biaZimbabveI panjohurBotaAfrikëAmerika e VeriutAmerika e JugutOqeaniAfri" + + "ka PerëndimoreAmerika QendroreAfrika LindoreAfrika VerioreAfrika e Mesme" + + "Afrika JugoreAmerikëAmerika VerioreKaraibeAzia LindoreAzia JugoreAzia Ju" + + "glindoreEuropa JugoreAustralaziaMelaneziaRajoni MikronezianPolineziaAziA" + + "zia QendroreAzia PerëndimoreEuropëEuropa LindoreEuropa VerioreEuropa Per" + + "ëndimoreAmerika Latine" + +var sqRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0011, 0x0019, 0x0033, 0x003d, 0x004e, 0x0056, 0x005f, 0x0065, 0x006c, 0x0077, 0x0082, 0x0091, 0x0097, 0x009f, 0x00a5, 0x00b3, 0x00be, 0x00d2, 0x00da, 0x00e4, 0x00ed, 0x00f9, 0x0101, - 0x0108, 0x010e, 0x0113, 0x0123, 0x012b, 0x0131, 0x0137, 0x0149, - 0x014f, 0x0156, 0x015b, 0x0169, 0x0172, 0x017c, 0x0183, 0x0189, - 0x0197, 0x01a5, 0x01c0, 0x01d0, 0x01d7, 0x01e9, 0x01f5, 0x01f9, - 0x0200, 0x0205, 0x020c, 0x021e, 0x0229, 0x022e, 0x023d, 0x0245, - 0x025c, 0x0261, 0x0270, 0x0278, 0x0284, 0x028a, 0x0294, 0x029d, + 0x0108, 0x010f, 0x0114, 0x0124, 0x012c, 0x0132, 0x0138, 0x014a, + 0x0150, 0x0157, 0x015c, 0x016b, 0x0174, 0x017e, 0x0185, 0x018b, + 0x0197, 0x01a5, 0x01c1, 0x01d1, 0x01d8, 0x01e8, 0x01f2, 0x01f6, + 0x01fd, 0x0202, 0x0209, 0x021b, 0x0226, 0x022b, 0x023a, 0x0242, + 0x0259, 0x025e, 0x0263, 0x026b, 0x0277, 0x027e, 0x0288, 0x0291, // Entry 40 - 7F - 0x02b1, 0x02b8, 0x02c7, 0x02ce, 0x02d4, 0x02da, 0x02ef, 0x02f5, - 0x02fc, 0x0302, 0x0313, 0x031c, 0x0321, 0x0332, 0x033b, 0x0347, - 0x034e, 0x0353, 0x0368, 0x0370, 0x0378, 0x0388, 0x0390, 0x0395, - 0x039f, 0x03a9, 0x03ae, 0x03b3, 0x03bc, 0x03cf, 0x03d4, 0x0402, - 0x040c, 0x0410, 0x041b, 0x0423, 0x0435, 0x0459, 0x0461, 0x0467, - 0x046c, 0x0473, 0x0481, 0x0489, 0x0491, 0x0497, 0x04a6, 0x04aa, - 0x04cd, 0x04d1, 0x04d5, 0x04dd, 0x04e2, 0x04e9, 0x04f2, 0x04f9, - 0x04ff, 0x0504, 0x050d, 0x0516, 0x051e, 0x0524, 0x0538, 0x0547, + 0x02a5, 0x02ac, 0x02bb, 0x02c2, 0x02c8, 0x02ce, 0x02e3, 0x02e9, + 0x02f0, 0x02f6, 0x0307, 0x0307, 0x0310, 0x0315, 0x0324, 0x032d, + 0x0339, 0x0340, 0x0345, 0x035a, 0x0362, 0x036a, 0x037a, 0x0381, + 0x0386, 0x0390, 0x039a, 0x03a0, 0x03a5, 0x03ae, 0x03c1, 0x03c6, + 0x03f4, 0x03fe, 0x0402, 0x040d, 0x0415, 0x0427, 0x0449, 0x0451, + 0x0457, 0x045c, 0x0463, 0x0471, 0x0479, 0x0481, 0x0487, 0x0496, + 0x049a, 0x04bd, 0x04c1, 0x04c5, 0x04cd, 0x04d2, 0x04d9, 0x04e2, + 0x04e9, 0x04ef, 0x04f4, 0x04fd, 0x0506, 0x050e, 0x0514, 0x0528, // Entry 80 - BF - 0x0555, 0x055b, 0x056a, 0x0574, 0x0578, 0x057d, 0x0589, 0x0596, - 0x05a0, 0x05a6, 0x05ac, 0x05b3, 0x05bd, 0x05c3, 0x05c7, 0x05cc, - 0x05d2, 0x05d9, 0x05e2, 0x05ee, 0x05f8, 0x0609, 0x0611, 0x0615, - 0x0624, 0x062b, 0x0638, 0x0652, 0x065a, 0x0663, 0x066c, 0x0672, - 0x067b, 0x0682, 0x0688, 0x0690, 0x0697, 0x069f, 0x06a5, 0x06b3, - 0x06b8, 0x06c7, 0x06cd, 0x06d6, 0x06de, 0x06e6, 0x06eb, 0x06f0, - 0x06f4, 0x0700, 0x0704, 0x070a, 0x070e, 0x0720, 0x0732, 0x073a, - 0x0742, 0x0748, 0x075f, 0x076f, 0x0779, 0x078f, 0x0798, 0x079d, + 0x0537, 0x0545, 0x054b, 0x0558, 0x0562, 0x0566, 0x056b, 0x0577, + 0x0583, 0x058d, 0x0593, 0x0599, 0x05a0, 0x05aa, 0x05b0, 0x05b4, + 0x05b9, 0x05bf, 0x05c6, 0x05ce, 0x05da, 0x05e4, 0x05f3, 0x05fb, + 0x05ff, 0x060e, 0x0615, 0x0622, 0x063c, 0x0646, 0x064f, 0x0658, + 0x065e, 0x0667, 0x066e, 0x0674, 0x067c, 0x0683, 0x068b, 0x0691, + 0x069f, 0x06a4, 0x06b3, 0x06b9, 0x06c2, 0x06ca, 0x06d2, 0x06d7, + 0x06dc, 0x06e0, 0x06ed, 0x06f1, 0x06f7, 0x06fb, 0x070d, 0x071f, + 0x0727, 0x072f, 0x0735, 0x074b, 0x0759, 0x0763, 0x0779, 0x0782, // Entry C0 - FF - 0x07a5, 0x07aa, 0x07ce, 0x07d5, 0x07db, 0x07e0, 0x07e4, 0x07eb, - 0x07f9, 0x0809, 0x080f, 0x0814, 0x0819, 0x0821, 0x082d, 0x0835, - 0x084a, 0x0852, 0x085d, 0x0867, 0x086f, 0x0875, 0x087d, 0x088b, - 0x089e, 0x08a9, 0x08e9, 0x08ed, 0x08f8, 0x0907, 0x091d, 0x0921, - 0x0940, 0x0944, 0x094d, 0x0958, 0x095f, 0x096c, 0x0978, 0x097e, - 0x0983, 0x0988, 0x0999, 0x099f, 0x09a5, 0x09ac, 0x09b4, 0x09bb, - 0x09da, 0x09fb, 0x0a02, 0x0a0c, 0x0a13, 0x0a2f, 0x0a39, 0x0a55, - 0x0a71, 0x0a78, 0x0a7f, 0x0a8e, 0x0a93, 0x0a9a, 0x0a9f, 0x0aa6, + 0x0787, 0x078f, 0x0794, 0x07b8, 0x07bf, 0x07c5, 0x07ca, 0x07ce, + 0x07d5, 0x07e3, 0x07f1, 0x07fa, 0x07ff, 0x0804, 0x080c, 0x0819, + 0x0821, 0x0835, 0x083d, 0x0848, 0x0852, 0x0859, 0x085f, 0x0867, + 0x0875, 0x0888, 0x0890, 0x089b, 0x089f, 0x08aa, 0x08b9, 0x08d0, + 0x08d4, 0x08ee, 0x08f2, 0x08fb, 0x0906, 0x090d, 0x0918, 0x0924, + 0x092a, 0x092f, 0x0934, 0x0945, 0x094b, 0x0951, 0x0958, 0x0960, + 0x0967, 0x0986, 0x0998, 0x09b9, 0x09c0, 0x09ca, 0x09d1, 0x09ec, + 0x09f6, 0x0a12, 0x0a2e, 0x0a35, 0x0a3c, 0x0a4b, 0x0a50, 0x0a57, // Entry 100 - 13F - 0x0ab4, 0x0ab9, 0x0ac1, 0x0acb, 0x0acf, 0x0ad6, 0x0ae6, 0x0af5, - 0x0afb, 0x0b0e, 0x0b1e, 0x0b2c, 0x0b3a, 0x0b48, 0x0b55, 0x0b5d, - 0x0b6c, 0x0b73, 0x0b7f, 0x0b8a, 0x0b99, 0x0ba6, 0x0bb1, 0x0bba, - 0x0bcc, 0x0bd5, 0x0bd8, 0x0be5, 0x0bf6, 0x0bfd, 0x0c0b, 0x0c19, - 0x0c2c, 0x0c3a, -} // Size: 604 bytes - -var srRegionStr string = "" + // Size: 5892 bytes + 0x0a5c, 0x0a63, 0x0a71, 0x0a77, 0x0a7f, 0x0a89, 0x0a8d, 0x0a94, + 0x0aa4, 0x0ab3, 0x0ab9, 0x0acc, 0x0adc, 0x0aea, 0x0af8, 0x0b06, + 0x0b13, 0x0b1b, 0x0b2a, 0x0b31, 0x0b3d, 0x0b48, 0x0b57, 0x0b64, + 0x0b6f, 0x0b78, 0x0b8a, 0x0b93, 0x0b96, 0x0ba3, 0x0bb4, 0x0bbb, + 0x0bc9, 0x0bd7, 0x0bea, 0x0bf8, +} // Size: 608 bytes + +const srRegionStr string = "" + // Size: 5976 bytes "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" + "аАнгвилаАлбанијаЈерменијаАнголаАнтарктикАргентинаАмеричка СамоаАустрија" + - "АустралијаАрубаОландска острваАзербејџанБосна и ХерцеговинаБарбадосБанг" + - "ладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвети БартоломејБерм" + - "удаБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОстрво БувеБоцванаБ" + - "елорусијаБелизеКанадаКокосова (Килингова) ОстрваКонго - КиншасаЦентралн" + - "оафричка РепубликаКонго - БразавилШвајцарскаОбала СлоновачеКукова Острв" + - "аЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаЗеленортска Острв" + - "аКурасаоБожићно острвоКипарЧешкаНемачкаДијего ГарсијаЏибутиДанскаДомини" + - "каДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстонијаЕгипатЗападна" + - " СахараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџиФокландска острваМ" + - "икронезијаФарска ОстрваФранцускаГабонВелика БританијаГренадаГрузијаФран" + - "цуска ГвајанаГурнсиГанаГибралтарГренландГамбијаГвинејаГваделупеЕкватори" + - "јална ГвинејаГрчкаЈужна Џорџија и Јужна Сендвич ОстрваГватемалаГуамГвин" + - "еја-БисаоГвајанаСАР Хонгконг (Кина)Острва Херд и МекдоналдХондурасХрват" + - "скаХаитиМађарскаКанарска острваИндонезијаИрскаИзраелОстрво МанИндијаБри" + - "танска територија у Индијском океануИракИранИсландИталијаЏерсиЈамајкаЈо" + - "рданЈапанКенијаКиргистанКамбоџаКирибатиКоморска ОстрваСент Китс и Невис" + - "Северна КорејаЈужна КорејаКувајтКајманска ОстрваКазахстанЛаосЛибанСвета" + - " ЛуцијаЛихтенштајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛетонијаЛиби" + - "јаМарокоМонакоМолдавијаЦрна ГораСент МартинМадагаскарМаршалска ОстрваМа" + - "кедонијаМалиМијанмар (Бурма)МонголијаСАР Макао (Кина)Северна Маријанска" + - " ОстрваМартиникМауританијаМонсератМалтаМаурицијусМалдивиМалавиМексикоМал" + - "езијаМозамбикНамибијаНова КаледонијаНигерОстрво НорфокНигеријаНикарагва" + - "ХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаПеруФранцуска Полин" + - "езијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен Пјер и МикелонПиткернП" + - "орторикоПалестинске територијеПортугалПалауПарагвајКатарОкеанија (удаље" + - "на острва)РеинионРумунијаСрбијаРусијаРуандаСаудијска АрабијаСоломонска " + - "ОстрваСејшелиСуданШведскаСингапурСвета ЈеленаСловенијаСвалбард и Јан Ма" + - "јенСловачкаСијера ЛеонеСан МариноСенегалСомалијаСуринамЈужни СуданСао Т" + - "оме и ПринципеСалвадорСвети МартинСиријаСвазилендТристан да КуњаОстрва " + - "Туркс и КаикосЧадФранцуске Јужне ТериторијеТогоТајландТаџикистанТокелау" + - "Источни ТиморТуркменистанТунисТонгаТурскаТринидад и ТобагоТувалуТајванТ" + - "анзанијаУкрајинаУгандаУдаљена острва САДСједињене Америчке ДржавеУругва" + - "јУзбекистанВатиканСент Винсент и ГренадиниВенецуелаБританска Девичанска" + - " ОстрваАмеричка Девичанска ОстрваВијетнамВануатуВалис и ФутунаСамоаКосов" + - "оЈеменМајотЈужноафричка РепубликаЗамбијаЗимбабвеНепознат регионсветАфри" + - "каСеверноамерички континентЈужна АмерикаОкеанијаЗападна АфрикаЦентрална" + - " АмерикаИсточна АфрикаСеверна АфрикаЦентрална АфрикаЈужна АфрикаСеверна " + - "и Јужна АмерикаСеверна АмерикаКарибиИсточна АзијаЈужна АзијаЈугоисточна" + - " АзијаЈужна ЕвропаАустралија и Нови ЗеландМеланезијаМикронезијски регион" + - "ПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна " + - "ЕвропаЗападна ЕвропаЛатинска Америка" - -var srRegionIdx = []uint16{ // 290 elements + "АустралијаАрубаОландска ОстрваАзербејџанБосна и ХерцеговинаБарбадосБанг" + + "ладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСен БартелемиБермуда" + + "БрунејБоливијаКарипска ХоландијаБразилБахамиБутанОстрво БувеБоцванаБело" + + "русијаБелизеКанадаКокосова (Килингова) ОстрваКонго - КиншасаЦентралноаф" + + "ричка РепубликаКонго - БразавилШвајцарскаОбала СлоновачеКукова ОстрваЧи" + + "леКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаЗеленортска ОстрваКу" + + "расаоБожићно ОстрвоКипарЧешкаНемачкаДијего ГарсијаЏибутиДанскаДоминикаД" + + "оминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстонијаЕгипатЗападна Са" + + "хараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџиФокландска ОстрваМик" + + "ронезијаФарска ОстрваФранцускаГабонУједињено КраљевствоГренадаГрузијаФр" + + "анцуска ГвајанаГернзиГанаГибралтарГренландГамбијаГвинејаГваделупЕкватор" + + "ијална ГвинејаГрчкаЈужна Џорџија и Јужна Сендвичка ОстрваГватемалаГуамГ" + + "винеја-БисаоГвајанаСАР Хонгконг (Кина)Острво Херд и Мекдоналдова острва" + + "ХондурасХрватскаХаитиМађарскаКанарска ОстрваИндонезијаИрскаИзраелОстрво" + + " МанИндијаБританска територија Индијског океанаИракИранИсландИталијаЏерз" + + "иЈамајкаЈорданЈапанКенијаКиргистанКамбоџаКирибатиКоморска ОстрваСент Ки" + + "тс и НевисСеверна КорејаЈужна КорејаКувајтКајманска ОстрваКазахстанЛаос" + + "ЛибанСвета ЛуцијаЛихтенштајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛ" + + "етонијаЛибијаМарокоМонакоМолдавијаЦрна ГораСвети Мартин (Француска)Мада" + + "гаскарМаршалска ОстрваМакедонијаМалиМијанмар (Бурма)МонголијаСАР Макао " + + "(Кина)Северна Маријанска ОстрваМартиникМауританијаМонсератМалтаМаурицију" + + "сМалдивиМалавиМексикоМалезијаМозамбикНамибијаНова КаледонијаНигерОстрво" + + " НорфокНигеријаНикарагваХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПа" + + "намаПеруФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен" + + " Пјер и МикелонПиткернПорторикоПалестинске територијеПортугалијаПалауПар" + + "агвајКатарОкеанија (удаљена острва)РеинионРумунијаСрбијаРусијаРуандаСау" + + "дијска АрабијаСоломонска ОстрваСејшелиСуданШведскаСингапурСвета ЈеленаС" + + "ловенијаСвалбард и Јан МајенСловачкаСијера ЛеонеСан МариноСенегалСомали" + + "јаСуринамЈужни СуданСао Томе и ПринципеСалвадорСвети Мартин (Холандија)" + + "СиријаСвазилендТристан да КуњаОстрва Туркс и КаикосЧадФранцуске Јужне Т" + + "ериторијеТогоТајландТаџикистанТокелауИсточни ТиморТуркменистанТунисТонг" + + "аТурскаТринидад и ТобагоТувалуТајванТанзанијаУкрајинаУгандаУдаљена остр" + + "ва САДУједињене нацијеСједињене ДржавеУругвајУзбекистанВатиканСент Винс" + + "ент и ГренадиниВенецуелаБританска Девичанска ОстрваАмеричка Девичанска " + + "ОстрваВијетнамВануатуВалис и ФутунаСамоаКосовоЈеменМајотЈужноафричка Ре" + + "публикаЗамбијаЗимбабвеНепознат регионсветАфрикаСеверноамерички континен" + + "тЈужна АмерикаОкеанијаЗападна АфрикаЦентрална АмерикаИсточна АфрикаСеве" + + "рна АфрикаЦентрална АфрикаЈужна АфрикаСеверна и Јужна АмерикаСеверна Ам" + + "ерикаКарибиИсточна АзијаЈужна АзијаЈугоисточна АзијаЈужна ЕвропаАустрал" + + "ија и Нови ЗеландМеланезијаМикронезијски регионПолинезијаАзијаЦентрална" + + " АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна ЕвропаЗападна ЕвропаЛатин" + + "ска Америка" + +var srRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab, 0x00bd, 0x00c9, 0x00db, 0x00ed, 0x0108, 0x0118, 0x012c, 0x0136, 0x0153, 0x0167, 0x018b, 0x019b, 0x01ad, 0x01bb, 0x01d2, 0x01e2, - 0x01f0, 0x01fe, 0x0208, 0x0227, 0x0235, 0x0241, 0x0251, 0x0274, - 0x0280, 0x028c, 0x0296, 0x02ab, 0x02b9, 0x02cd, 0x02d9, 0x02e5, - 0x0317, 0x0332, 0x0365, 0x0382, 0x0396, 0x03b3, 0x03cc, 0x03d4, - 0x03e2, 0x03ea, 0x03fc, 0x041b, 0x042d, 0x0435, 0x0458, 0x0466, - 0x0481, 0x048b, 0x0495, 0x04a3, 0x04be, 0x04ca, 0x04d6, 0x04e6, + 0x01f0, 0x01fe, 0x0208, 0x0221, 0x022f, 0x023b, 0x024b, 0x026e, + 0x027a, 0x0286, 0x0290, 0x02a5, 0x02b3, 0x02c7, 0x02d3, 0x02df, + 0x0311, 0x032c, 0x035f, 0x037c, 0x0390, 0x03ad, 0x03c6, 0x03ce, + 0x03dc, 0x03e4, 0x03f6, 0x0415, 0x0427, 0x042f, 0x0452, 0x0460, + 0x047b, 0x0485, 0x048f, 0x049d, 0x04b8, 0x04c4, 0x04d0, 0x04e0, // Entry 40 - 7F - 0x0511, 0x051b, 0x0535, 0x0543, 0x0553, 0x055f, 0x057a, 0x058a, - 0x0598, 0x05a8, 0x05c3, 0x05cf, 0x05d7, 0x05f8, 0x060e, 0x0627, - 0x0639, 0x0643, 0x0662, 0x0670, 0x067e, 0x069f, 0x06ab, 0x06b3, - 0x06c5, 0x06d5, 0x06e3, 0x06f1, 0x0703, 0x072c, 0x0736, 0x0779, - 0x078b, 0x0793, 0x07ac, 0x07ba, 0x07dc, 0x0807, 0x0817, 0x0827, - 0x0831, 0x0841, 0x085e, 0x0872, 0x087c, 0x0888, 0x089b, 0x08a7, - 0x08f1, 0x08f9, 0x0901, 0x090d, 0x091b, 0x0925, 0x0933, 0x093f, - 0x0949, 0x0955, 0x0967, 0x0975, 0x0985, 0x09a2, 0x09c1, 0x09dc, + 0x050b, 0x0515, 0x052f, 0x053d, 0x054d, 0x0559, 0x0574, 0x0584, + 0x0592, 0x05a2, 0x05bd, 0x05bd, 0x05c9, 0x05d1, 0x05f2, 0x0608, + 0x0621, 0x0633, 0x063d, 0x0664, 0x0672, 0x0680, 0x06a1, 0x06ad, + 0x06b5, 0x06c7, 0x06d7, 0x06e5, 0x06f3, 0x0703, 0x072c, 0x0736, + 0x077d, 0x078f, 0x0797, 0x07b0, 0x07be, 0x07e0, 0x081e, 0x082e, + 0x083e, 0x0848, 0x0858, 0x0875, 0x0889, 0x0893, 0x089f, 0x08b2, + 0x08be, 0x0905, 0x090d, 0x0915, 0x0921, 0x092f, 0x0939, 0x0947, + 0x0953, 0x095d, 0x0969, 0x097b, 0x0989, 0x0999, 0x09b6, 0x09d5, // Entry 80 - BF - 0x09f3, 0x09ff, 0x0a1e, 0x0a30, 0x0a38, 0x0a42, 0x0a59, 0x0a6f, - 0x0a80, 0x0a90, 0x0a9c, 0x0aae, 0x0ac2, 0x0ad2, 0x0ade, 0x0aea, - 0x0af6, 0x0b08, 0x0b19, 0x0b2e, 0x0b42, 0x0b61, 0x0b75, 0x0b7d, - 0x0b9a, 0x0bac, 0x0bc8, 0x0bf8, 0x0c08, 0x0c1e, 0x0c2e, 0x0c38, - 0x0c4c, 0x0c5a, 0x0c66, 0x0c74, 0x0c84, 0x0c94, 0x0ca4, 0x0cc1, - 0x0ccb, 0x0ce4, 0x0cf4, 0x0d06, 0x0d18, 0x0d28, 0x0d32, 0x0d3c, - 0x0d44, 0x0d59, 0x0d61, 0x0d6d, 0x0d75, 0x0d9c, 0x0dbe, 0x0dce, - 0x0dde, 0x0dea, 0x0e0b, 0x0e19, 0x0e2b, 0x0e56, 0x0e66, 0x0e70, + 0x09f0, 0x0a07, 0x0a13, 0x0a32, 0x0a44, 0x0a4c, 0x0a56, 0x0a6d, + 0x0a83, 0x0a94, 0x0aa4, 0x0ab0, 0x0ac2, 0x0ad6, 0x0ae6, 0x0af2, + 0x0afe, 0x0b0a, 0x0b1c, 0x0b2d, 0x0b59, 0x0b6d, 0x0b8c, 0x0ba0, + 0x0ba8, 0x0bc5, 0x0bd7, 0x0bf3, 0x0c23, 0x0c33, 0x0c49, 0x0c59, + 0x0c63, 0x0c77, 0x0c85, 0x0c91, 0x0c9f, 0x0caf, 0x0cbf, 0x0ccf, + 0x0cec, 0x0cf6, 0x0d0f, 0x0d1f, 0x0d31, 0x0d43, 0x0d53, 0x0d5d, + 0x0d67, 0x0d6f, 0x0d84, 0x0d8c, 0x0d98, 0x0da0, 0x0dc7, 0x0de9, + 0x0df9, 0x0e09, 0x0e15, 0x0e36, 0x0e44, 0x0e56, 0x0e81, 0x0e97, // Entry C0 - FF - 0x0e80, 0x0e8a, 0x0eb8, 0x0ec6, 0x0ed6, 0x0ee2, 0x0eee, 0x0efa, - 0x0f1b, 0x0f3c, 0x0f4a, 0x0f54, 0x0f62, 0x0f72, 0x0f89, 0x0f9b, - 0x0fc0, 0x0fd0, 0x0fe7, 0x0ffa, 0x1008, 0x1018, 0x1026, 0x103b, - 0x105e, 0x106e, 0x1085, 0x1091, 0x10a3, 0x10bf, 0x10e6, 0x10ec, - 0x111e, 0x1126, 0x1134, 0x1148, 0x1156, 0x116f, 0x1187, 0x1191, - 0x119b, 0x11a7, 0x11c7, 0x11d3, 0x11df, 0x11f1, 0x1201, 0x120d, - 0x122f, 0x125f, 0x126d, 0x1281, 0x128f, 0x12bc, 0x12ce, 0x1302, - 0x1334, 0x1344, 0x1352, 0x136c, 0x1376, 0x1382, 0x138c, 0x1396, + 0x0ea1, 0x0eb1, 0x0ebb, 0x0ee9, 0x0ef7, 0x0f07, 0x0f13, 0x0f1f, + 0x0f2b, 0x0f4c, 0x0f6d, 0x0f7b, 0x0f85, 0x0f93, 0x0fa3, 0x0fba, + 0x0fcc, 0x0ff1, 0x1001, 0x1018, 0x102b, 0x1039, 0x1049, 0x1057, + 0x106c, 0x108f, 0x109f, 0x10cb, 0x10d7, 0x10e9, 0x1105, 0x112c, + 0x1132, 0x1164, 0x116c, 0x117a, 0x118e, 0x119c, 0x11b5, 0x11cd, + 0x11d7, 0x11e1, 0x11ed, 0x120d, 0x1219, 0x1225, 0x1237, 0x1247, + 0x1253, 0x1275, 0x1294, 0x12b3, 0x12c1, 0x12d5, 0x12e3, 0x1310, + 0x1322, 0x1356, 0x1388, 0x1398, 0x13a6, 0x13c0, 0x13ca, 0x13d6, // Entry 100 - 13F - 0x13c1, 0x13cf, 0x13df, 0x13fc, 0x1404, 0x1410, 0x1441, 0x145a, - 0x146a, 0x1485, 0x14a6, 0x14c1, 0x14dc, 0x14fb, 0x1512, 0x153d, - 0x155a, 0x1566, 0x157f, 0x1594, 0x15b5, 0x15cc, 0x15f9, 0x160d, - 0x1634, 0x1648, 0x1652, 0x166f, 0x1688, 0x1694, 0x16af, 0x16ca, - 0x16e5, 0x1704, -} // Size: 604 bytes - -var srLatnRegionStr string = "" + // Size: 3096 bytes + 0x13e0, 0x13ea, 0x1415, 0x1423, 0x1433, 0x1450, 0x1458, 0x1464, + 0x1495, 0x14ae, 0x14be, 0x14d9, 0x14fa, 0x1515, 0x1530, 0x154f, + 0x1566, 0x1591, 0x15ae, 0x15ba, 0x15d3, 0x15e8, 0x1609, 0x1620, + 0x164d, 0x1661, 0x1688, 0x169c, 0x16a6, 0x16c3, 0x16dc, 0x16e8, + 0x1703, 0x171e, 0x1739, 0x1758, +} // Size: 608 bytes + +const srLatnRegionStr string = "" + // Size: 3143 bytes "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAvganistanAntigva i Barbu" + "daAngvilaAlbanijaJermenijaAngolaAntarktikArgentinaAmerička SamoaAustrija" + - "AustralijaArubaOlandska ostrvaAzerbejdžanBosna i HercegovinaBarbadosBang" + - "ladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti BartolomejBermu" + - "daBrunejBolivijaKaripska HolandijaBrazilBahamiButanOstrvo BuveBocvanaBel" + - "orusijaBelizeKanadaKokosova (Kilingova) OstrvaKongo - KinšasaCentralnoaf" + - "rička RepublikaKongo - BrazavilŠvajcarskaObala SlonovačeKukova OstrvaČil" + - "eKamerunKinaKolumbijaOstrvo KlipertonKostarikaKubaZelenortska OstrvaKura" + - "saoBožićno ostrvoKiparČeškaNemačkaDijego GarsijaDžibutiDanskaDominikaDom" + - "inikanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEgipatZapadna Saha" + - "raEritrejaŠpanijaEtiopijaEvropska UnijaFinskaFidžiFoklandska ostrvaMikro" + - "nezijaFarska OstrvaFrancuskaGabonVelika BritanijaGrenadaGruzijaFrancuska" + - " GvajanaGurnsiGanaGibraltarGrenlandGambijaGvinejaGvadelupeEkvatorijalna " + - "GvinejaGrčkaJužna Džordžija i Južna Sendvič OstrvaGvatemalaGuamGvineja-B" + - "isaoGvajanaSAR Hongkong (Kina)Ostrva Herd i MekdonaldHondurasHrvatskaHai" + - "tiMađarskaKanarska ostrvaIndonezijaIrskaIzraelOstrvo ManIndijaBritanska " + - "teritorija u Indijskom okeanuIrakIranIslandItalijaDžersiJamajkaJordanJap" + - "anKenijaKirgistanKambodžaKiribatiKomorska OstrvaSent Kits i NevisSeverna" + - " KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstanLaosLibanSveta LucijaL" + - "ihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLetonijaLibijaMaroko" + - "MonakoMoldavijaCrna GoraSent MartinMadagaskarMaršalska OstrvaMakedonijaM" + - "aliMijanmar (Burma)MongolijaSAR Makao (Kina)Severna Marijanska OstrvaMar" + - "tinikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeksikoMalezijaMozam" + - "bikNamibijaNova KaledonijaNigerOstrvo NorfokNigerijaNikaragvaHolandijaNo" + - "rveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska PolinezijaPapua N" + - "ova GvinejaFilipiniPakistanPoljskaSen Pjer i MikelonPitkernPortorikoPale" + - "stinske teritorijePortugalPalauParagvajKatarOkeanija (udaljena ostrva)Re" + - "inionRumunijaSrbijaRusijaRuandaSaudijska ArabijaSolomonska OstrvaSejšeli" + - "SudanŠvedskaSingapurSveta JelenaSlovenijaSvalbard i Jan MajenSlovačkaSij" + - "era LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao Tome i PrincipeS" + - "alvadorSveti MartinSirijaSvazilendTristan da KunjaOstrva Turks i KaikosČ" + - "adFrancuske Južne TeritorijeTogoTajlandTadžikistanTokelauIstočni TimorTu" + - "rkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkrajina" + - "UgandaUdaljena ostrva SADSjedinjene Američke DržaveUrugvajUzbekistanVati" + - "kanSent Vinsent i GrenadiniVenecuelaBritanska Devičanska OstrvaAmerička " + - "Devičanska OstrvaVijetnamVanuatuValis i FutunaSamoaKosovoJemenMajotJužno" + - "afrička RepublikaZambijaZimbabveNepoznat regionsvetAfrikaSevernoamerički" + - " kontinentJužna AmerikaOkeanijaZapadna AfrikaCentralna AmerikaIstočna Af" + - "rikaSeverna AfrikaCentralna AfrikaJužna AfrikaSeverna i Južna AmerikaSev" + - "erna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna AzijaJužna EvropaA" + - "ustralija i Novi ZelandMelanezijaMikronezijski regionPolinezijaAzijaCent" + - "ralna AzijaZapadna AzijaEvropaIstočna EvropaSeverna EvropaZapadna Evropa" + - "Latinska Amerika" - -var srLatnRegionIdx = []uint16{ // 290 elements + "AustralijaArubaOlandska OstrvaAzerbejdžanBosna i HercegovinaBarbadosBang" + + "ladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSen BartelemiBermudaB" + + "runejBolivijaKaripska HolandijaBrazilBahamiButanOstrvo BuveBocvanaBeloru" + + "sijaBelizeKanadaKokosova (Kilingova) OstrvaKongo - KinšasaCentralnoafrič" + + "ka RepublikaKongo - BrazavilŠvajcarskaObala SlonovačeKukova OstrvaČileKa" + + "merunKinaKolumbijaOstrvo KlipertonKostarikaKubaZelenortska OstrvaKurasao" + + "Božićno OstrvoKiparČeškaNemačkaDijego GarsijaDžibutiDanskaDominikaDomini" + + "kanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEgipatZapadna SaharaE" + + "ritrejaŠpanijaEtiopijaEvropska UnijaFinskaFidžiFoklandska OstrvaMikronez" + + "ijaFarska OstrvaFrancuskaGabonUjedinjeno KraljevstvoGrenadaGruzijaFrancu" + + "ska GvajanaGernziGanaGibraltarGrenlandGambijaGvinejaGvadelupEkvatorijaln" + + "a GvinejaGrčkaJužna Džordžija i Južna Sendvička OstrvaGvatemalaGuamGvine" + + "ja-BisaoGvajanaSAR Hongkong (Kina)Ostrvo Herd i Mekdonaldova ostrvaHondu" + + "rasHrvatskaHaitiMađarskaKanarska OstrvaIndonezijaIrskaIzraelOstrvo ManIn" + + "dijaBritanska teritorija Indijskog okeanaIrakIranIslandItalijaDžerziJama" + + "jkaJordanJapanKenijaKirgistanKambodžaKiribatiKomorska OstrvaSent Kits i " + + "NevisSeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstanLaosLibanS" + + "veta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLetonija" + + "LibijaMarokoMonakoMoldavijaCrna GoraSveti Martin (Francuska)MadagaskarMa" + + "ršalska OstrvaMakedonijaMaliMijanmar (Burma)MongolijaSAR Makao (Kina)Sev" + + "erna Marijanska OstrvaMartinikMauritanijaMonseratMaltaMauricijusMaldiviM" + + "alaviMeksikoMalezijaMozambikNamibijaNova KaledonijaNigerOstrvo NorfokNig" + + "erijaNikaragvaHolandijaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFr" + + "ancuska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSen Pjer i Mi" + + "kelonPitkernPortorikoPalestinske teritorijePortugalijaPalauParagvajKatar" + + "Okeanija (udaljena ostrva)ReinionRumunijaSrbijaRusijaRuandaSaudijska Ara" + + "bijaSolomonska OstrvaSejšeliSudanŠvedskaSingapurSveta JelenaSlovenijaSva" + + "lbard i Jan MajenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJuž" + + "ni SudanSao Tome i PrincipeSalvadorSveti Martin (Holandija)SirijaSvazile" + + "ndTristan da KunjaOstrva Turks i KaikosČadFrancuske Južne TeritorijeTogo" + + "TajlandTadžikistanTokelauIstočni TimorTurkmenistanTunisTongaTurskaTrinid" + + "ad i TobagoTuvaluTajvanTanzanijaUkrajinaUgandaUdaljena ostrva SADUjedinj" + + "ene nacijeSjedinjene DržaveUrugvajUzbekistanVatikanSent Vinsent i Grenad" + + "iniVenecuelaBritanska Devičanska OstrvaAmerička Devičanska OstrvaVijetna" + + "mVanuatuValis i FutunaSamoaKosovoJemenMajotJužnoafrička RepublikaZambija" + + "ZimbabveNepoznat regionsvetAfrikaSevernoamerički kontinentJužna AmerikaO" + + "keanijaZapadna AfrikaCentralna AmerikaIstočna AfrikaSeverna AfrikaCentra" + + "lna AfrikaJužna AfrikaSeverna i Južna AmerikaSeverna AmerikaKaribiIstočn" + + "a AzijaJužna AzijaJugoistočna AzijaJužna EvropaAustralija i Novi ZelandM" + + "elanezijaMikronezijski regionPolinezijaAzijaCentralna AzijaZapadna Azija" + + "EvropaIstočna EvropaSeverna EvropaZapadna EvropaLatinska Amerika" + +var srLatnRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059, 0x0062, 0x0068, 0x0071, 0x007a, 0x0089, 0x0091, 0x009b, 0x00a0, 0x00af, 0x00bb, 0x00ce, 0x00d6, 0x00e0, 0x00e7, 0x00f3, 0x00fb, - 0x0102, 0x0109, 0x010e, 0x011e, 0x0125, 0x012b, 0x0133, 0x0145, - 0x014b, 0x0151, 0x0156, 0x0161, 0x0168, 0x0172, 0x0178, 0x017e, - 0x0199, 0x01a9, 0x01c4, 0x01d4, 0x01df, 0x01ef, 0x01fc, 0x0201, - 0x0208, 0x020c, 0x0215, 0x0225, 0x022e, 0x0232, 0x0244, 0x024b, - 0x025b, 0x0260, 0x0267, 0x026f, 0x027d, 0x0285, 0x028b, 0x0293, + 0x0102, 0x0109, 0x010e, 0x011b, 0x0122, 0x0128, 0x0130, 0x0142, + 0x0148, 0x014e, 0x0153, 0x015e, 0x0165, 0x016f, 0x0175, 0x017b, + 0x0196, 0x01a6, 0x01c1, 0x01d1, 0x01dc, 0x01ec, 0x01f9, 0x01fe, + 0x0205, 0x0209, 0x0212, 0x0222, 0x022b, 0x022f, 0x0241, 0x0248, + 0x0258, 0x025d, 0x0264, 0x026c, 0x027a, 0x0282, 0x0288, 0x0290, // Entry 40 - 7F - 0x02a9, 0x02af, 0x02be, 0x02c5, 0x02cd, 0x02d3, 0x02e1, 0x02e9, - 0x02f1, 0x02f9, 0x0307, 0x030d, 0x0313, 0x0324, 0x032f, 0x033c, - 0x0345, 0x034a, 0x035a, 0x0361, 0x0368, 0x0379, 0x037f, 0x0383, - 0x038c, 0x0394, 0x039b, 0x03a2, 0x03ab, 0x03c0, 0x03c6, 0x03f1, - 0x03fa, 0x03fe, 0x040b, 0x0412, 0x0425, 0x043c, 0x0444, 0x044c, - 0x0451, 0x045a, 0x0469, 0x0473, 0x0478, 0x047e, 0x0488, 0x048e, - 0x04b5, 0x04b9, 0x04bd, 0x04c3, 0x04ca, 0x04d1, 0x04d8, 0x04de, - 0x04e3, 0x04e9, 0x04f2, 0x04fb, 0x0503, 0x0512, 0x0523, 0x0531, + 0x02a6, 0x02ac, 0x02bb, 0x02c2, 0x02ca, 0x02d0, 0x02de, 0x02e6, + 0x02ee, 0x02f6, 0x0304, 0x0304, 0x030a, 0x0310, 0x0321, 0x032c, + 0x0339, 0x0342, 0x0347, 0x035d, 0x0364, 0x036b, 0x037c, 0x0382, + 0x0386, 0x038f, 0x0397, 0x039e, 0x03a5, 0x03ad, 0x03c2, 0x03c8, + 0x03f5, 0x03fe, 0x0402, 0x040f, 0x0416, 0x0429, 0x044a, 0x0452, + 0x045a, 0x045f, 0x0468, 0x0477, 0x0481, 0x0486, 0x048c, 0x0496, + 0x049c, 0x04c1, 0x04c5, 0x04c9, 0x04cf, 0x04d6, 0x04dd, 0x04e4, + 0x04ea, 0x04ef, 0x04f5, 0x04fe, 0x0507, 0x050f, 0x051e, 0x052f, // Entry 80 - BF - 0x053e, 0x0544, 0x0554, 0x055d, 0x0561, 0x0566, 0x0572, 0x057e, - 0x0588, 0x0590, 0x0596, 0x059f, 0x05a9, 0x05b1, 0x05b7, 0x05bd, - 0x05c3, 0x05cc, 0x05d5, 0x05e0, 0x05ea, 0x05fb, 0x0605, 0x0609, - 0x0619, 0x0622, 0x0632, 0x064b, 0x0653, 0x065e, 0x0666, 0x066b, - 0x0675, 0x067c, 0x0682, 0x0689, 0x0691, 0x0699, 0x06a1, 0x06b0, - 0x06b5, 0x06c2, 0x06ca, 0x06d3, 0x06dc, 0x06e5, 0x06ea, 0x06ef, - 0x06f3, 0x06fe, 0x0702, 0x0708, 0x070c, 0x0720, 0x0732, 0x073a, - 0x0742, 0x0749, 0x075b, 0x0762, 0x076b, 0x0781, 0x0789, 0x078e, + 0x053d, 0x054a, 0x0550, 0x0560, 0x0569, 0x056d, 0x0572, 0x057e, + 0x058a, 0x0594, 0x059c, 0x05a2, 0x05ab, 0x05b5, 0x05bd, 0x05c3, + 0x05c9, 0x05cf, 0x05d8, 0x05e1, 0x05f9, 0x0603, 0x0614, 0x061e, + 0x0622, 0x0632, 0x063b, 0x064b, 0x0664, 0x066c, 0x0677, 0x067f, + 0x0684, 0x068e, 0x0695, 0x069b, 0x06a2, 0x06aa, 0x06b2, 0x06ba, + 0x06c9, 0x06ce, 0x06db, 0x06e3, 0x06ec, 0x06f5, 0x06fe, 0x0703, + 0x0708, 0x070c, 0x0717, 0x071b, 0x0721, 0x0725, 0x0739, 0x074b, + 0x0753, 0x075b, 0x0762, 0x0774, 0x077b, 0x0784, 0x079a, 0x07a5, // Entry C0 - FF - 0x0796, 0x079b, 0x07b5, 0x07bc, 0x07c4, 0x07ca, 0x07d0, 0x07d6, - 0x07e7, 0x07f8, 0x0800, 0x0805, 0x080d, 0x0815, 0x0821, 0x082a, - 0x083e, 0x0847, 0x0853, 0x085d, 0x0864, 0x086c, 0x0873, 0x087f, - 0x0892, 0x089a, 0x08a6, 0x08ac, 0x08b5, 0x08c5, 0x08da, 0x08de, - 0x08f9, 0x08fd, 0x0904, 0x0910, 0x0917, 0x0925, 0x0931, 0x0936, - 0x093b, 0x0941, 0x0952, 0x0958, 0x095e, 0x0967, 0x096f, 0x0975, - 0x0988, 0x09a4, 0x09ab, 0x09b5, 0x09bc, 0x09d4, 0x09dd, 0x09f9, - 0x0a15, 0x0a1d, 0x0a24, 0x0a32, 0x0a37, 0x0a3d, 0x0a42, 0x0a47, + 0x07aa, 0x07b2, 0x07b7, 0x07d1, 0x07d8, 0x07e0, 0x07e6, 0x07ec, + 0x07f2, 0x0803, 0x0814, 0x081c, 0x0821, 0x0829, 0x0831, 0x083d, + 0x0846, 0x085a, 0x0863, 0x086f, 0x0879, 0x0880, 0x0888, 0x088f, + 0x089b, 0x08ae, 0x08b6, 0x08ce, 0x08d4, 0x08dd, 0x08ed, 0x0902, + 0x0906, 0x0921, 0x0925, 0x092c, 0x0938, 0x093f, 0x094d, 0x0959, + 0x095e, 0x0963, 0x0969, 0x097a, 0x0980, 0x0986, 0x098f, 0x0997, + 0x099d, 0x09b0, 0x09c1, 0x09d3, 0x09da, 0x09e4, 0x09eb, 0x0a03, + 0x0a0c, 0x0a28, 0x0a44, 0x0a4c, 0x0a53, 0x0a61, 0x0a66, 0x0a6c, // Entry 100 - 13F - 0x0a5f, 0x0a66, 0x0a6e, 0x0a7d, 0x0a81, 0x0a87, 0x0aa1, 0x0aaf, - 0x0ab7, 0x0ac5, 0x0ad6, 0x0ae5, 0x0af3, 0x0b03, 0x0b10, 0x0b28, - 0x0b37, 0x0b3d, 0x0b4b, 0x0b57, 0x0b69, 0x0b76, 0x0b8e, 0x0b98, - 0x0bac, 0x0bb6, 0x0bbb, 0x0bca, 0x0bd7, 0x0bdd, 0x0bec, 0x0bfa, - 0x0c08, 0x0c18, -} // Size: 604 bytes - -var svRegionStr string = "" + // Size: 2900 bytes + 0x0a71, 0x0a76, 0x0a8e, 0x0a95, 0x0a9d, 0x0aac, 0x0ab0, 0x0ab6, + 0x0ad0, 0x0ade, 0x0ae6, 0x0af4, 0x0b05, 0x0b14, 0x0b22, 0x0b32, + 0x0b3f, 0x0b57, 0x0b66, 0x0b6c, 0x0b7a, 0x0b86, 0x0b98, 0x0ba5, + 0x0bbd, 0x0bc7, 0x0bdb, 0x0be5, 0x0bea, 0x0bf9, 0x0c06, 0x0c0c, + 0x0c1b, 0x0c29, 0x0c37, 0x0c47, +} // Size: 608 bytes + +const svRegionStr string = "" + // Size: 2921 bytes "AscensionAndorraFörenade ArabemiratenAfghanistanAntigua och BarbudaAngui" + "llaAlbanienArmenienAngolaAntarktisArgentinaAmerikanska SamoaÖsterrikeAus" + "tralienArubaÅlandAzerbajdzjanBosnien och HercegovinaBarbadosBangladeshBe" + @@ -43549,29 +48654,29 @@ var svRegionStr string = "" + // Size: 2900 bytes "JerseyJamaicaJordanienJapanKenyaKirgizistanKambodjaKiribatiKomorernaS:t " + "Kitts och NevisNordkoreaSydkoreaKuwaitCaymanöarnaKazakstanLaosLibanonS:t" + " LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLettlandLibyen" + - "MarockoMonacoMoldavienMontenegroS:t MartinMadagaskarMarshallöarnaMakedon" + - "ienMaliMyanmar (Burma)MongolietMacao, S.A.R. KinaNordmarianernaMartiniqu" + - "eMauretanienMontserratMaltaMauritiusMaldivernaMalawiMexikoMalaysiaMoçamb" + - "iqueNamibiaNya KaledonienNigerNorfolkönNigeriaNicaraguaNederländernaNorg" + - "eNepalNauruNiueNya ZeelandOmanPanamaPeruFranska PolynesienPapua Nya Guin" + - "eaFilippinernaPakistanPolenS:t Pierre och MiquelonPitcairnöarnaPuerto Ri" + - "coPalestinska territoriernaPortugalPalauParaguayQataryttre öar i Oceanie" + - "nRéunionRumänienSerbienRysslandRwandaSaudiarabienSalomonöarnaSeychellern" + - "aSudanSverigeSingaporeS:t HelenaSlovenienSvalbard och Jan MayenSlovakien" + - "Sierra LeoneSan MarinoSenegalSomaliaSurinamSydsudanSão Tomé och Príncipe" + - "El SalvadorSint MaartenSyrienSwazilandTristan da CunhaTurks- och Caicosö" + - "arnaTchadFranska sydterritoriernaTogoThailandTadzjikistanTokelauÖsttimor" + - "TurkmenistanTunisienTongaTurkietTrinidad och TobagoTuvaluTaiwanTanzaniaU" + - "krainaUgandaUSA:s yttre öarUSAUruguayUzbekistanVatikanstatenS:t Vincent " + - "och GrenadinernaVenezuelaBrittiska JungfruöarnaAmerikanska JungfruöarnaV" + - "ietnamVanuatuWallis- och FutunaöarnaSamoaKosovoJemenMayotteSydafrikaZamb" + - "iaZimbabweokänd regionvärldenAfrikaNordamerikaSydamerikaOceanienVästafri" + - "kaCentralamerikaÖstafrikaNordafrikaCentralafrikasödra AfrikaNord- och Sy" + - "damerikanorra AmerikaKaribienÖstasienSydasienSydostasienSydeuropaAustral" + - "asienMelanesienMikronesiska öarnaPolynesienAsienCentralasienVästasienEur" + - "opaÖsteuropaNordeuropaVästeuropaLatinamerika" - -var svRegionIdx = []uint16{ // 290 elements + "MarockoMonacoMoldavienMontenegroSaint-MartinMadagaskarMarshallöarnaMaked" + + "onienMaliMyanmar (Burma)MongolietMacao, S.A.R. KinaNordmarianernaMartini" + + "queMauretanienMontserratMaltaMauritiusMaldivernaMalawiMexikoMalaysiaMoça" + + "mbiqueNamibiaNya KaledonienNigerNorfolkönNigeriaNicaraguaNederländernaNo" + + "rgeNepalNauruNiueNya ZeelandOmanPanamaPeruFranska PolynesienPapua Nya Gu" + + "ineaFilippinernaPakistanPolenS:t Pierre och MiquelonPitcairnöarnaPuerto " + + "RicoPalestinska territoriernaPortugalPalauParaguayQataryttre öar i Ocean" + + "ienRéunionRumänienSerbienRysslandRwandaSaudiarabienSalomonöarnaSeychelle" + + "rnaSudanSverigeSingaporeS:t HelenaSlovenienSvalbard och Jan MayenSlovaki" + + "enSierra LeoneSan MarinoSenegalSomaliaSurinamSydsudanSão Tomé och Prínci" + + "peEl SalvadorSint MaartenSyrienSwazilandTristan da CunhaTurks- och Caico" + + "söarnaTchadFranska sydterritoriernaTogoThailandTadzjikistanTokelauÖsttim" + + "orTurkmenistanTunisienTongaTurkietTrinidad och TobagoTuvaluTaiwanTanzani" + + "aUkrainaUgandaUSA:s yttre öarFörenta NationernaUSAUruguayUzbekistanVatik" + + "anstatenS:t Vincent och GrenadinernaVenezuelaBrittiska JungfruöarnaAmeri" + + "kanska JungfruöarnaVietnamVanuatuWallis- och FutunaöarnaSamoaKosovoJemen" + + "MayotteSydafrikaZambiaZimbabweokänd regionvärldenAfrikaNordamerikaSydame" + + "rikaOceanienVästafrikaCentralamerikaÖstafrikaNordafrikaCentralafrikasödr" + + "a AfrikaNord- och Sydamerikanorra AmerikaKaribienÖstasienSydasienSydosta" + + "sienSydeuropaAustralasienMelanesienMikronesiska öarnaPolynesienAsienCent" + + "ralasienVästasienEuropaÖsteuropaNordeuropaVästeuropaLatinamerika" + +var svRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0010, 0x0026, 0x0031, 0x0044, 0x004c, 0x0054, 0x005c, 0x0062, 0x006b, 0x0074, 0x0085, 0x008f, 0x0099, 0x009e, @@ -43583,225 +48688,225 @@ var svRegionIdx = []uint16{ // 290 elements 0x0231, 0x0237, 0x023f, 0x0247, 0x0253, 0x025b, 0x0262, 0x026a, // Entry 40 - 7F 0x0281, 0x0289, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02ba, 0x02c1, - 0x02c8, 0x02d0, 0x02e2, 0x02e9, 0x02ed, 0x02fc, 0x0307, 0x0311, - 0x031a, 0x031f, 0x032d, 0x0334, 0x033c, 0x034a, 0x0352, 0x0357, - 0x0360, 0x0369, 0x036f, 0x0375, 0x037f, 0x038f, 0x0397, 0x03b8, - 0x03c1, 0x03c5, 0x03d2, 0x03d8, 0x03ed, 0x0408, 0x0410, 0x0418, - 0x041d, 0x0423, 0x0430, 0x043a, 0x0440, 0x0446, 0x0451, 0x0457, - 0x047e, 0x0482, 0x0486, 0x048c, 0x0493, 0x0499, 0x04a0, 0x04a9, - 0x04ae, 0x04b3, 0x04be, 0x04c6, 0x04ce, 0x04d7, 0x04ea, 0x04f3, + 0x02c8, 0x02d0, 0x02e2, 0x02e2, 0x02e9, 0x02ed, 0x02fc, 0x0307, + 0x0311, 0x031a, 0x031f, 0x032d, 0x0334, 0x033c, 0x034a, 0x0352, + 0x0357, 0x0360, 0x0369, 0x036f, 0x0375, 0x037f, 0x038f, 0x0397, + 0x03b8, 0x03c1, 0x03c5, 0x03d2, 0x03d8, 0x03ed, 0x0408, 0x0410, + 0x0418, 0x041d, 0x0423, 0x0430, 0x043a, 0x0440, 0x0446, 0x0451, + 0x0457, 0x047e, 0x0482, 0x0486, 0x048c, 0x0493, 0x0499, 0x04a0, + 0x04a9, 0x04ae, 0x04b3, 0x04be, 0x04c6, 0x04ce, 0x04d7, 0x04ea, // Entry 80 - BF - 0x04fb, 0x0501, 0x050d, 0x0516, 0x051a, 0x0521, 0x052a, 0x0537, - 0x0540, 0x0547, 0x054e, 0x0555, 0x055e, 0x0566, 0x056c, 0x0573, - 0x0579, 0x0582, 0x058c, 0x0596, 0x05a0, 0x05ae, 0x05b8, 0x05bc, - 0x05cb, 0x05d4, 0x05e6, 0x05f4, 0x05fe, 0x0609, 0x0613, 0x0618, - 0x0621, 0x062b, 0x0631, 0x0637, 0x063f, 0x064a, 0x0651, 0x065f, - 0x0664, 0x066e, 0x0675, 0x067e, 0x068c, 0x0691, 0x0696, 0x069b, - 0x069f, 0x06aa, 0x06ae, 0x06b4, 0x06b8, 0x06ca, 0x06da, 0x06e6, - 0x06ee, 0x06f3, 0x070a, 0x0718, 0x0723, 0x073c, 0x0744, 0x0749, + 0x04f3, 0x04fb, 0x0501, 0x050d, 0x0516, 0x051a, 0x0521, 0x052a, + 0x0537, 0x0540, 0x0547, 0x054e, 0x0555, 0x055e, 0x0566, 0x056c, + 0x0573, 0x0579, 0x0582, 0x058c, 0x0598, 0x05a2, 0x05b0, 0x05ba, + 0x05be, 0x05cd, 0x05d6, 0x05e8, 0x05f6, 0x0600, 0x060b, 0x0615, + 0x061a, 0x0623, 0x062d, 0x0633, 0x0639, 0x0641, 0x064c, 0x0653, + 0x0661, 0x0666, 0x0670, 0x0677, 0x0680, 0x068e, 0x0693, 0x0698, + 0x069d, 0x06a1, 0x06ac, 0x06b0, 0x06b6, 0x06ba, 0x06cc, 0x06dc, + 0x06e8, 0x06f0, 0x06f5, 0x070c, 0x071a, 0x0725, 0x073e, 0x0746, // Entry C0 - FF - 0x0751, 0x0756, 0x076b, 0x0773, 0x077c, 0x0783, 0x078b, 0x0791, - 0x079d, 0x07aa, 0x07b6, 0x07bb, 0x07c2, 0x07cb, 0x07d5, 0x07de, - 0x07f4, 0x07fd, 0x0809, 0x0813, 0x081a, 0x0821, 0x0828, 0x0830, - 0x0848, 0x0853, 0x085f, 0x0865, 0x086e, 0x087e, 0x0895, 0x089a, - 0x08b2, 0x08b6, 0x08be, 0x08ca, 0x08d1, 0x08da, 0x08e6, 0x08ee, - 0x08f3, 0x08fa, 0x090d, 0x0913, 0x0919, 0x0921, 0x0928, 0x092e, - 0x093e, 0x0941, 0x0948, 0x0952, 0x095f, 0x097b, 0x0984, 0x099b, - 0x09b4, 0x09bb, 0x09c2, 0x09da, 0x09df, 0x09e5, 0x09ea, 0x09f1, + 0x074b, 0x0753, 0x0758, 0x076d, 0x0775, 0x077e, 0x0785, 0x078d, + 0x0793, 0x079f, 0x07ac, 0x07b8, 0x07bd, 0x07c4, 0x07cd, 0x07d7, + 0x07e0, 0x07f6, 0x07ff, 0x080b, 0x0815, 0x081c, 0x0823, 0x082a, + 0x0832, 0x084a, 0x0855, 0x0861, 0x0867, 0x0870, 0x0880, 0x0897, + 0x089c, 0x08b4, 0x08b8, 0x08c0, 0x08cc, 0x08d3, 0x08dc, 0x08e8, + 0x08f0, 0x08f5, 0x08fc, 0x090f, 0x0915, 0x091b, 0x0923, 0x092a, + 0x0930, 0x0940, 0x0953, 0x0956, 0x095d, 0x0967, 0x0974, 0x0990, + 0x0999, 0x09b0, 0x09c9, 0x09d0, 0x09d7, 0x09ef, 0x09f4, 0x09fa, // Entry 100 - 13F - 0x09fa, 0x0a00, 0x0a08, 0x0a15, 0x0a1d, 0x0a23, 0x0a2e, 0x0a38, - 0x0a40, 0x0a4b, 0x0a59, 0x0a63, 0x0a6d, 0x0a7a, 0x0a87, 0x0a9b, - 0x0aa8, 0x0ab0, 0x0ab9, 0x0ac1, 0x0acc, 0x0ad5, 0x0ae1, 0x0aeb, - 0x0afe, 0x0b08, 0x0b0d, 0x0b19, 0x0b23, 0x0b29, 0x0b33, 0x0b3d, - 0x0b48, 0x0b54, -} // Size: 604 bytes - -var swRegionStr string = "" + // Size: 3104 bytes + 0x09ff, 0x0a06, 0x0a0f, 0x0a15, 0x0a1d, 0x0a2a, 0x0a32, 0x0a38, + 0x0a43, 0x0a4d, 0x0a55, 0x0a60, 0x0a6e, 0x0a78, 0x0a82, 0x0a8f, + 0x0a9c, 0x0ab0, 0x0abd, 0x0ac5, 0x0ace, 0x0ad6, 0x0ae1, 0x0aea, + 0x0af6, 0x0b00, 0x0b13, 0x0b1d, 0x0b22, 0x0b2e, 0x0b38, 0x0b3e, + 0x0b48, 0x0b52, 0x0b5d, 0x0b69, +} // Size: 608 bytes + +const swRegionStr string = "" + // Size: 3116 bytes "Kisiwa cha AscensionAndoraFalme za KiarabuAfghanistanAntigua na BarbudaA" + "nguillaAlbaniaArmeniaAngolaAntaktikaAjentinaSamoa ya MarekaniAustriaAust" + - "raliaArubaVisiwa vya AlandiAzabajaniBosnia na HezegovinaBabadosiBanglade" + - "shiUbelgijiBukinafasoBulgariaBahareniBurundiBeninSantabathelemiBermudaBr" + - "uneiBoliviaUholanzi ya KaribianiBraziliBahamaBhutanKisiwa cha BouvetBots" + - "wanaBelarusiBelizeKanadaVisiwa vya Cocos (Keeling)Jamhuri ya Kidemokrasi" + - "a ya KongoJamhuri ya Afrika ya KatiKongo - BrazzavilleUswisiCôte d’Ivoir" + - "eVisiwa vya CookChileKameruniChinaKolombiaKisiwa cha ClippertonKostarika" + - "KubaKepuvedeKurakaoKisiwa cha KrismasiCyprusJamhuri ya ChekiUjerumaniDie" + - "go GarciaJibutiDenmarkDominikaJamhuri ya DominikaAljeriaCeuta na Melilla" + - "EkwadoEstoniaMisriSahara MagharibiEritreaHispaniaUhabeshiUmoja wa UlayaU" + - "finiFijiVisiwa vya FalklandMikronesiaVisiwa vya FaroeUfaransaGabonUinger" + - "ezaGrenadaJojiaGwiyana ya UfaransaGuernseyGhanaJibraltaGrinlandiGambiaGi" + - "neGwadelupeGinekwetaUgirikiJojia Kusini na Visiwa vya Sandwich KusiniGwa" + - "temalaGwamGinebisauGuyanaHong Kong SAR ChinaKisiwa cha Heard na Visiwa v" + - "ya McDonaldHondurasiKorasiaHaitiHungariaVisiwa vya KanariIndonesiaAyalan" + - "diIsraeliIsle of ManIndiaEneo la Uingereza katika Bahari HindiIrakiIranA" + - "islandiItaliaJerseyJamaikaYordaniJapaniKenyaKirigizistaniKambodiaKiribat" + - "iKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiVisiwa vya K" + - "aymanKazakistaniLaosiLebanoniSantalusiaLiechtensteinSri LankaLiberiaLeso" + - "toLitwaniaLuxembourgLativiaLibyaMorokoMonakoMoldovaMontenegroSaint Marti" + - "nMadagaskaVisiwa vya MarshallMasedoniaMaliMyanmar (Burma)MongoliaMacau S" + - "AR ChinaVisiwa vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMal" + - "taMorisiMaldivesMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNigerKisi" + - "wa cha NorfolkNigeriaNikaragwaUholanziNorweNepalNauruNiueNyuzilandiOmani" + - "PanamaPeruPolinesia ya UfaransaPapua New GuineaUfilipinoPakistaniPolandi" + - "Santapierre na MiquelonVisiwa vya PitcairnPuerto RicoMaeneo ya Palestina" + - "UrenoPalauParagwaiQatarOceania ya NjeRiyunioniRomaniaSerbiaUrusiRwandaSa" + - "udiVisiwa vya SolomonShelisheliSudaniUswidiSingaporeSantahelenaSloveniaS" + - "valbard na Jan MayenSlovakiaSiera LeoniSan MarinoSenegaliSomaliaSurinamu" + - "Sudani KusiniSão Tomé na PríncipeElsavadoSint MaartenSyriaUswaziTristan " + - "da CunhaVisiwa vya Turki na KaikoChadMaeneo ya Kusini ya UfaransaTogoTai" + - "landiTajikistaniTokelauTimor-LesteTurukimenistaniTunisiaTongaUturukiTrin" + - "idad na TobagoTuvaluTaiwanTanzaniaUkrainiUgandaVisiwa Vidogo vya Nje vya" + - " MarekaniMarekaniUrugwaiUzibekistaniVatikaniSantavisenti na GrenadiniVen" + - "ezuelaVisiwa vya Virgin vya UingerezaVisiwa vya Virgin vya MarekaniVietn" + - "amVanuatuWalis na FutunaSamoaKosovoYemeniMayotteAfrika KusiniZambiaZimba" + - "bweEneo lisilojulikanaDuniaAfrikaAmerika KaskaziniAmerika KusiniOceaniaA" + - "frika ya MagharibiAmerika ya KatiAfrika ya MasharikiAfrika ya KaskaziniA" + - "frika ya KatiAfrika ya KusiniAmerikaAmerika ya KaskaziniKaribianiAsia Ma" + - "sharikiAsia ya KusiniAsia ya Kusini MasharikiUlaya ya KusiniAustralasiaM" + - "elanesiaEneo la MikronesiaPolynesiaAsiaAsia ya KatiAsia ya MagharibiUlay" + - "aUlaya ya MasharikiUlaya ya KaskaziniUlaya ya MagharibiAmerika ya Kilati" + - "ni" - -var swRegionIdx = []uint16{ // 290 elements + "raliaArubaVisiwa vya AlandiAzerbaijanBosnia na HezegovinaBabadosiBanglad" + + "eshiUbelgijiBukinafasoBulgariaBahareniBurundiBeninSantabathelemiBermudaB" + + "runeiBoliviaUholanzi ya KaribianiBraziliBahamaBhutanKisiwa cha BouvetBot" + + "swanaBelarusiBelizeKanadaVisiwa vya Cocos (Keeling)Jamhuri ya Kidemokras" + + "ia ya KongoJamhuri ya Afrika ya KatiKongo - BrazzavilleUswisiCôte d’Ivoi" + + "reVisiwa vya CookChileKameruniChinaKolombiaKisiwa cha ClippertonKostarik" + + "aKubaCape VerdeKurakaoKisiwa cha KrismasiCyprusChechiaUjerumaniDiego Gar" + + "ciaJibutiDenmarkDominikaJamhuri ya DominikaAljeriaCeuta na MelillaEkwado" + + "EstoniaMisriSahara MagharibiEritreaHispaniaEthiopiaUmoja wa UlayaUfiniFi" + + "jiVisiwa vya FalklandMikronesiaVisiwa vya FaroeUfaransaGabonUingerezaGre" + + "nadaJojiaGwiyana ya UfaransaGuernseyGhanaJibraltaGrinlandiGambiaGineGuad" + + "eloupeGinekwetaUgirikiJojia Kusini na Visiwa vya Sandwich KusiniGuatemal" + + "aGuamGinebisauGuyanaHong Kong SAR ChinaKisiwa cha Heard na Visiwa vya Mc" + + "DonaldHondurasiKorasiaHaitiHungariaVisiwa vya KanariIndonesiaAyalandiIsr" + + "aeliIsle of ManIndiaEneo la Uingereza katika Bahari HindiIrakiIranAislan" + + "diItaliaJerseyJamaikaJordanJapaniKenyaKirigizistaniKambodiaKiribatiKomor" + + "oSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitVisiwa vya KaymanKa" + + "zakistaniLaosiLebanonSantalusiaLiechtensteinSri LankaLiberiaLesotoLithua" + + "niaLuxembourgLatviaLibyaMoroccoMonakoMoldovaMontenegroSaint MartinMadaga" + + "skaVisiwa vya MarshallMacedoniaMaliMyanmar (Burma)MongoliaMacau SAR Chin" + + "aVisiwa vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMoris" + + "iMaldivesMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNigerKisiwa cha " + + "NorfolkNigeriaNikaragwaUholanziNorwayNepalNauruNiueNyuzilandiOmanPanamaP" + + "eruPolinesia ya UfaransaPapua New GuineaUfilipinoPakistaniPolandiSantapi" + + "erre na MiquelonVisiwa vya PitcairnPuerto RicoMaeneo ya PalestinaUrenoPa" + + "lauParagwaiQatarOceania ya NjeRiyunioniRomaniaSerbiaUrusiRwandaSaudiaVis" + + "iwa vya SolomonUshelisheliSudanUswidiSingaporeSantahelenaSloveniaSvalbar" + + "d na Jan MayenSlovakiaSiera LeoniSan MarinoSenegaliSomaliaSurinamuSudan " + + "KusiniSão Tomé na PríncipeElsavadoSint MaartenSyriaUswaziTristan da Cunh" + + "aVisiwa vya Turki na KaikoChadMaeneo ya Kusini ya UfaransaTogoTailandiTa" + + "jikistaniTokelauTimor-LesteTurukimenistaniTunisiaTongaUturukiTrinidad na" + + " TobagoTuvaluTaiwanTanzaniaUkraineUgandaVisiwa Vidogo vya Nje vya Mareka" + + "niUmoja wa MataifaMarekaniUrugwaiUzibekistaniVatikaniSantavisenti na Gre" + + "nadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa vya Virgin vya Mare" + + "kaniVietnamVanuatuWalis na FutunaSamoaKosovoYemeniMayotteAfrika KusiniZa" + + "mbiaZimbabweEneo lisilojulikanaDuniaAfrikaAmerika KaskaziniAmerika Kusin" + + "iOceaniaAfrika ya MagharibiAmerika ya KatiAfrika ya MasharikiAfrika ya K" + + "askaziniAfrika ya KatiAfrika ya KusiniAmerikaAmerika ya KaskaziniKaribia" + + "niAsia ya MasharikiAsia ya KusiniAsia ya Kusini MasharikiUlaya ya Kusini" + + "AustralasiaMelanesiaEneo la MikronesiaPolynesiaAsiaAsia ya KatiAsia ya M" + + "agharibiUlayaUlaya ya MasharikiUlaya ya KaskaziniUlaya ya MagharibiAmeri" + + "ka ya Kilatini" + +var swRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0014, 0x001a, 0x002a, 0x0035, 0x0047, 0x004f, 0x0056, 0x005d, 0x0063, 0x006c, 0x0074, 0x0085, 0x008c, 0x0095, 0x009a, - 0x00ab, 0x00b4, 0x00c8, 0x00d0, 0x00db, 0x00e3, 0x00ed, 0x00f5, - 0x00fd, 0x0104, 0x0109, 0x0117, 0x011e, 0x0124, 0x012b, 0x0140, - 0x0147, 0x014d, 0x0153, 0x0164, 0x016c, 0x0174, 0x017a, 0x0180, - 0x019a, 0x01ba, 0x01d3, 0x01e6, 0x01ec, 0x01fc, 0x020b, 0x0210, - 0x0218, 0x021d, 0x0225, 0x023a, 0x0243, 0x0247, 0x024f, 0x0256, - 0x0269, 0x026f, 0x027f, 0x0288, 0x0294, 0x029a, 0x02a1, 0x02a9, + 0x00ab, 0x00b5, 0x00c9, 0x00d1, 0x00dc, 0x00e4, 0x00ee, 0x00f6, + 0x00fe, 0x0105, 0x010a, 0x0118, 0x011f, 0x0125, 0x012c, 0x0141, + 0x0148, 0x014e, 0x0154, 0x0165, 0x016d, 0x0175, 0x017b, 0x0181, + 0x019b, 0x01bb, 0x01d4, 0x01e7, 0x01ed, 0x01fd, 0x020c, 0x0211, + 0x0219, 0x021e, 0x0226, 0x023b, 0x0244, 0x0248, 0x0252, 0x0259, + 0x026c, 0x0272, 0x0279, 0x0282, 0x028e, 0x0294, 0x029b, 0x02a3, // Entry 40 - 7F - 0x02bc, 0x02c3, 0x02d3, 0x02d9, 0x02e0, 0x02e5, 0x02f5, 0x02fc, - 0x0304, 0x030c, 0x031a, 0x031f, 0x0323, 0x0336, 0x0340, 0x0350, - 0x0358, 0x035d, 0x0366, 0x036d, 0x0372, 0x0385, 0x038d, 0x0392, - 0x039a, 0x03a3, 0x03a9, 0x03ad, 0x03b6, 0x03bf, 0x03c6, 0x03f0, - 0x03f9, 0x03fd, 0x0406, 0x040c, 0x041f, 0x0446, 0x044f, 0x0456, - 0x045b, 0x0463, 0x0474, 0x047d, 0x0485, 0x048c, 0x0497, 0x049c, - 0x04c1, 0x04c6, 0x04ca, 0x04d2, 0x04d8, 0x04de, 0x04e5, 0x04ec, - 0x04f2, 0x04f7, 0x0504, 0x050c, 0x0514, 0x051a, 0x052d, 0x053c, + 0x02b6, 0x02bd, 0x02cd, 0x02d3, 0x02da, 0x02df, 0x02ef, 0x02f6, + 0x02fe, 0x0306, 0x0314, 0x0314, 0x0319, 0x031d, 0x0330, 0x033a, + 0x034a, 0x0352, 0x0357, 0x0360, 0x0367, 0x036c, 0x037f, 0x0387, + 0x038c, 0x0394, 0x039d, 0x03a3, 0x03a7, 0x03b1, 0x03ba, 0x03c1, + 0x03eb, 0x03f4, 0x03f8, 0x0401, 0x0407, 0x041a, 0x0441, 0x044a, + 0x0451, 0x0456, 0x045e, 0x046f, 0x0478, 0x0480, 0x0487, 0x0492, + 0x0497, 0x04bc, 0x04c1, 0x04c5, 0x04cd, 0x04d3, 0x04d9, 0x04e0, + 0x04e6, 0x04ec, 0x04f1, 0x04fe, 0x0506, 0x050e, 0x0514, 0x0527, // Entry 80 - BF - 0x0548, 0x054f, 0x0560, 0x056b, 0x0570, 0x0578, 0x0582, 0x058f, - 0x0598, 0x059f, 0x05a5, 0x05ad, 0x05b7, 0x05be, 0x05c3, 0x05c9, - 0x05cf, 0x05d6, 0x05e0, 0x05ec, 0x05f5, 0x0608, 0x0611, 0x0615, - 0x0624, 0x062c, 0x063b, 0x065b, 0x0664, 0x066d, 0x0678, 0x067d, - 0x0683, 0x068b, 0x0691, 0x0698, 0x069f, 0x06a7, 0x06ae, 0x06ba, - 0x06bf, 0x06d1, 0x06d8, 0x06e1, 0x06e9, 0x06ee, 0x06f3, 0x06f8, - 0x06fc, 0x0706, 0x070b, 0x0711, 0x0715, 0x072a, 0x073a, 0x0743, - 0x074c, 0x0753, 0x076a, 0x077d, 0x0788, 0x079b, 0x07a0, 0x07a5, + 0x0536, 0x0542, 0x0548, 0x0559, 0x0564, 0x0569, 0x0570, 0x057a, + 0x0587, 0x0590, 0x0597, 0x059d, 0x05a6, 0x05b0, 0x05b6, 0x05bb, + 0x05c2, 0x05c8, 0x05cf, 0x05d9, 0x05e5, 0x05ee, 0x0601, 0x060a, + 0x060e, 0x061d, 0x0625, 0x0634, 0x0654, 0x065d, 0x0666, 0x0671, + 0x0676, 0x067c, 0x0684, 0x068a, 0x0691, 0x0698, 0x06a0, 0x06a7, + 0x06b3, 0x06b8, 0x06ca, 0x06d1, 0x06da, 0x06e2, 0x06e8, 0x06ed, + 0x06f2, 0x06f6, 0x0700, 0x0704, 0x070a, 0x070e, 0x0723, 0x0733, + 0x073c, 0x0745, 0x074c, 0x0763, 0x0776, 0x0781, 0x0794, 0x0799, // Entry C0 - FF - 0x07ad, 0x07b2, 0x07c0, 0x07c9, 0x07d0, 0x07d6, 0x07db, 0x07e1, - 0x07e6, 0x07f8, 0x0802, 0x0808, 0x080e, 0x0817, 0x0822, 0x082a, - 0x083f, 0x0847, 0x0852, 0x085c, 0x0864, 0x086b, 0x0873, 0x0880, - 0x0897, 0x089f, 0x08ab, 0x08b0, 0x08b6, 0x08c6, 0x08df, 0x08e3, - 0x08ff, 0x0903, 0x090b, 0x0916, 0x091d, 0x0928, 0x0937, 0x093e, - 0x0943, 0x094a, 0x095c, 0x0962, 0x0968, 0x0970, 0x0977, 0x097d, - 0x099f, 0x09a7, 0x09ae, 0x09ba, 0x09c2, 0x09db, 0x09e4, 0x0a03, - 0x0a21, 0x0a28, 0x0a2f, 0x0a3e, 0x0a43, 0x0a49, 0x0a4f, 0x0a56, + 0x079e, 0x07a6, 0x07ab, 0x07b9, 0x07c2, 0x07c9, 0x07cf, 0x07d4, + 0x07da, 0x07e0, 0x07f2, 0x07fd, 0x0802, 0x0808, 0x0811, 0x081c, + 0x0824, 0x0839, 0x0841, 0x084c, 0x0856, 0x085e, 0x0865, 0x086d, + 0x0879, 0x0890, 0x0898, 0x08a4, 0x08a9, 0x08af, 0x08bf, 0x08d8, + 0x08dc, 0x08f8, 0x08fc, 0x0904, 0x090f, 0x0916, 0x0921, 0x0930, + 0x0937, 0x093c, 0x0943, 0x0955, 0x095b, 0x0961, 0x0969, 0x0970, + 0x0976, 0x0998, 0x09a8, 0x09b0, 0x09b7, 0x09c3, 0x09cb, 0x09e4, + 0x09ed, 0x0a0c, 0x0a2a, 0x0a31, 0x0a38, 0x0a47, 0x0a4c, 0x0a52, // Entry 100 - 13F - 0x0a63, 0x0a69, 0x0a71, 0x0a84, 0x0a89, 0x0a8f, 0x0aa0, 0x0aae, - 0x0ab5, 0x0ac8, 0x0ad7, 0x0aea, 0x0afd, 0x0b0b, 0x0b1b, 0x0b22, - 0x0b36, 0x0b3f, 0x0b4d, 0x0b5b, 0x0b73, 0x0b82, 0x0b8d, 0x0b96, - 0x0ba8, 0x0bb1, 0x0bb5, 0x0bc1, 0x0bd2, 0x0bd7, 0x0be9, 0x0bfb, - 0x0c0d, 0x0c20, -} // Size: 604 bytes - -var taRegionStr string = "" + // Size: 9513 bytes + 0x0a58, 0x0a5f, 0x0a6c, 0x0a72, 0x0a7a, 0x0a8d, 0x0a92, 0x0a98, + 0x0aa9, 0x0ab7, 0x0abe, 0x0ad1, 0x0ae0, 0x0af3, 0x0b06, 0x0b14, + 0x0b24, 0x0b2b, 0x0b3f, 0x0b48, 0x0b59, 0x0b67, 0x0b7f, 0x0b8e, + 0x0b99, 0x0ba2, 0x0bb4, 0x0bbd, 0x0bc1, 0x0bcd, 0x0bde, 0x0be3, + 0x0bf5, 0x0c07, 0x0c19, 0x0c2c, +} // Size: 608 bytes + +const taRegionStr string = "" + // Size: 9545 bytes "அஷன்ஷியன் தீவுஅன்டோராஐக்கிய அரபு எமிரேட்ஸ்ஆப்கானிஸ்தான்ஆண்டிகுவா மற்றும்" + " பார்புடாஅங்குய்லாஅல்பேனியாஅர்மேனியாஅங்கோலாஅண்டார்டிகாஅர்ஜென்டினாஅமெரிக்" + "க சமோவாஆஸ்திரியாஆஸ்திரேலியாஅரூபாஆலந்து தீவுகள்அசர்பைஜான்போஸ்னியா & ஹெர" + "்ஸகோவினாபார்படோஸ்பங்களாதேஷ்பெல்ஜியம்புர்கினா ஃபாஸோபல்கேரியாபஹ்ரைன்புரு" + - "ண்டிபெனின்செயின்ட் பார்தேலெமிபெர்முடாபுரூனேய்பொலிவியாகரீபியன் நெதர்லாந" + - "்துபிரேசில்பஹாமாஸ்பூடான்பொவேட் தீவுகள்போட்ஸ்வானாபெலாரூஸ்பெலிஸ்கனடாகோகோ" + - "ஸ் (கீலிங்) தீவுகள்காங்கோ - கின்ஷாசாமத்திய ஆப்ரிக்கக் குடியரசுகாங்கோ -" + - " ப்ராஸாவில்லேஸ்விட்சர்லாந்துகோட் தி’வாயர்குக் தீவுகள்சிலிகேமரூன்சீனாகொலம" + - "்பியாகிலிப்பர்டன் தீவுகோஸ்டாரிகாகியூபாகேப் வெர்டேகுராகவ்கிறிஸ்துமஸ் தீ" + - "வுசைப்ரஸ்செக் குடியரசுஜெர்மனிடியகோ கார்ஷியாஜிபௌட்டிடென்மார்க்டொமினிகாட" + - "ொமினிகன் குடியரசுஅல்ஜீரியாசியூடா & மெலில்லாஈக்வடார்எஸ்டோனியாஎகிப்துமேற" + - "்கு சஹாராஎரிட்ரியாஸ்பெயின்எதியோப்பியாஐரோப்பிய யூனியன்பின்லாந்துஃபிஜிஃப" + - "ாக்லாந்து தீவுகள்மைக்ரோனேஷியாஃபாரோ தீவுகள்பிரான்ஸ்கேபான்ஐக்கிய பேரரசுக" + - "ிரனெடாஜார்ஜியாபிரெஞ்சு கயானாகெர்ன்சிகானாஜிப்ரால்டர்கிரீன்லாந்துகாம்பிய" + - "ாகினியாக்வாதேலோப்ஈக்வடோரியல் கினியாகிரீஸ்தென் ஜியார்ஜியா மற்றும் தென் " + - "சான்ட்விச் தீவுகள்கவுதமாலாகுவாம்கினியா-பிஸ்ஸாவ்கயானாஹாங்காங் எஸ்ஏஆர் ச" + - "ீனாஹேர்ட் மற்றும் மெக்டொனால்டு தீவுகள்ஹோண்டூராஸ்குரேஷியாஹைட்டிஹங்கேரிக" + - "ேனரி தீவுகள்இந்தோனேசியாஅயர்லாந்துஇஸ்ரேல்ஐல் ஆஃப் மேன்இந்தியாபிரிட்டிஷ்" + - " இந்தியப் பெருங்கடல் பிரதேசம்ஈராக்ஈரான்ஐஸ்லாந்துஇத்தாலிஜெர்சிஜமைகாஜோர்டா" + - "ன்ஜப்பான்கென்யாகிர்கிஸ்தான்கம்போடியாகிரிபடிகோமரோஸ்செயின்ட் கிட்ஸ் & நெ" + - "விஸ்வட கொரியாதென் கொரியாகுவைத்கெய்மென் தீவுகள்கஸகஸ்தான்லாவோஸ்லெபனான்செ" + - "யின்ட் லூசியாலிச்செண்ஸ்டெய்ன்இலங்கைலைபீரியாலெசோதோலிதுவேனியாலக்ஸ்சம்பர்" + - "க்லாட்வியாலிபியாமொராக்கோமொனாக்கோமால்டோவாமான்டேனெக்ரோசெயின்ட் மார்ட்டீன" + - "்மடகாஸ்கர்மார்ஷல் தீவுகள்மாசிடோனியாமாலிமியான்மார் (பர்மா)மங்கோலியாமகாவ" + - "் எஸ்ஏஆர் சீனாவடக்கு மரியானா தீவுகள்மார்டினிக்மௌரிடானியாமாண்ட்செராட்மா" + - "ல்டாமொரிசியஸ்மாலத்தீவுமலாவிமெக்சிகோமலேசியாமொசாம்பிக்நமீபியாநியூ கேலிடோ" + - "னியாநைஜர்நார்ஃபோக் தீவுகள்நைஜீரியாநிகரகுவாநெதர்லாந்துநார்வேநேபாளம்நௌரு" + - "நியூநியூசிலாந்துஓமன்பனாமாபெருபிரெஞ்சு பாலினேஷியாபப்புவா நியூ கினியாபில" + - "ிப்பைன்ஸ்பாகிஸ்தான்போலந்துசெயின்ட் பியர் & மிக்வேலான்பிட்கெய்ர்ன் தீவு" + - "கள்பியூர்டோ ரிகோபாலஸ்தீனிய பிரதேசங்கள்போர்ச்சுக்கல்பாலோபராகுவேகத்தார்வ" + - "ெளிப்புற ஓஷியானியாரீயூனியன்ருமேனியாசெர்பியாரஷ்யாருவான்டாசவூதி அரேபியாச" + - "ாலமன் தீவுகள்சீஷெல்ஸ்சூடான்ஸ்வீடன்சிங்கப்பூர்செயின்ட் ஹெலெனாஸ்லோவேனியா" + - "ஸ்வல்பார்டு & ஜான் மேயன்ஸ்லோவாகியாசியாரா லியோன்சான் மரினோசெனெகல்சோமாலி" + - "யாசுரினாம்தெற்கு சூடான்சாவ் தோம் & ப்ரின்சிபிஎல் சால்வடார்சின்ட் மார்ட" + - "ென்சிரியாஸ்வாஸிலாந்துடிரிஸ்டன் டா குன்ஹாடர்க்ஸ் & கைகோஸ் தீவுகள்சாட்பி" + - "ரெஞ்சு தெற்கு பிரதேசங்கள்டோகோதாய்லாந்துதாஜிகிஸ்தான்டோகேலோதைமூர்-லெஸ்தே" + - "துர்க்மெனிஸ்தான்டுனிசியாடோங்காதுருக்கிட்ரினிடாட் & டொபாகோதுவாலூதைவான்த" + - "ான்சானியாஉக்ரைன்உகாண்டாயூ.எஸ். வெளிப்புற தீவுகள்அமெரிக்காஉருகுவேஉஸ்பெக" + - "ிஸ்தான்வாடிகன் நகரம்செயின்ட் வின்சென்ட் & கிரெனடைன்ஸ்வெனிசுலாபிரிட்டீஷ" + - "் கன்னித் தீவுகள்யூ.எஸ். கன்னித் தீவுகள்வியட்நாம்வனுவாட்டுவாலிஸ் மற்று" + - "ம் ஃபுடுனாசமோவாகொசோவோஏமன்மயோட்தென் ஆப்பிரிக்காஜாம்பியாஜிம்பாப்வேஅறியப்" + - "படாத பிரதேசம்உலகம்ஆப்ரிக்காவட அமெரிக்காதென் அமெரிக்காஓஷியானியாமேற்கு ஆ" + - "ப்ரிக்காமத்திய அமெரிக்காகிழக்கு ஆப்ரிக்காவடக்கு ஆப்ரிக்காமத்திய ஆப்ரிக" + - "்காதெற்கு ஆப்ரிக்காஅமெரிக்காஸ்வடக்கு அமெரிக்காகரீபியன்கிழக்கு ஆசியாதெற" + - "்கு ஆசியாதென்கிழக்கு ஆசியாதெற்கு ஐரோப்பாஆஸ்திரலேசியாமெலனேஷியாமைக்ரோ நே" + - "ஷியா பிரதேசம்பாலினேஷியாஆசியாமத்திய ஆசியாமேற்கு ஆசியாஐரோப்பாகிழக்கு ஐரோ" + - "ப்பாவடக்கு ஐரோப்பாமேற்கு ஐரோப்பாலத்தீன் அமெரிக்கா" - -var taRegionIdx = []uint16{ // 290 elements + "ண்டிபெனின்செயின்ட் பார்தேலெமிபெர்முடாபுருனேபொலிவியாகரீபியன் நெதர்லாந்த" + + "ுபிரேசில்பஹாமாஸ்பூடான்பொவேட் தீவுகள்போட்ஸ்வானாபெலாரூஸ்பெலிஸ்கனடாகோகோஸ்" + + " (கீலிங்) தீவுகள்காங்கோ - கின்ஷாசாமத்திய ஆப்ரிக்கக் குடியரசுகாங்கோ - ப்ர" + + "ாஸாவில்லேஸ்விட்சர்லாந்துகோட் தி’வாயர்குக் தீவுகள்சிலிகேமரூன்சீனாகொலம்ப" + + "ியாகிலிப்பர்டன் தீவுகோஸ்டாரிகாகியூபாகேப் வெர்டேகுராகவ்கிறிஸ்துமஸ் தீவு" + + "சைப்ரஸ்செசியாஜெர்மனிடியகோ கார்ஷியாஜிபௌட்டிடென்மார்க்டொமினிகாடொமினிகன் " + + "குடியரசுஅல்ஜீரியாசியூடா & மெலில்லாஈக்வடார்எஸ்டோனியாஎகிப்துமேற்கு சஹாரா" + + "எரிட்ரியாஸ்பெயின்எத்தியோப்பியாஐரோப்பிய யூனியன்பின்லாந்துஃபிஜிஃபாக்லாந்" + + "து தீவுகள்மைக்ரோனேஷியாஃபாரோ தீவுகள்பிரான்ஸ்கேபான்யுனைடெட் கிங்டம்கிரனெ" + + "டாஜார்ஜியாபிரெஞ்சு கயானாகெர்ன்சிகானாஜிப்ரால்டர்கிரீன்லாந்துகாம்பியாகின" + + "ியாக்வாதேலோப்ஈக்வடோரியல் கினியாகிரீஸ்தெற்கு ஜார்ஜியா மற்றும் தெற்கு சா" + + "ண்ட்விச் தீவுகள்கவுதமாலாகுவாம்கினியா-பிஸ்ஸாவ்கயானாஹாங்காங் எஸ்ஏஆர் சீன" + + "ாஹேர்ட் மற்றும் மெக்டொனால்டு தீவுகள்ஹோண்டூராஸ்குரேஷியாஹைட்டிஹங்கேரிகேன" + + "ரி தீவுகள்இந்தோனேசியாஅயர்லாந்துஇஸ்ரேல்ஐல் ஆஃப் மேன்இந்தியாபிரிட்டிஷ் இ" + + "ந்தியப் பெருங்கடல் பிரதேசம்ஈராக்ஈரான்ஐஸ்லாந்துஇத்தாலிஜெர்சிஜமைகாஜோர்டா" + + "ன்ஜப்பான்கென்யாகிர்கிஸ்தான்கம்போடியாகிரிபாட்டிகோமரோஸ்செயின்ட் கிட்ஸ் &" + + " நெவிஸ்வட கொரியாதென் கொரியாகுவைத்கெய்மென் தீவுகள்கஸகஸ்தான்லாவோஸ்லெபனான்ச" + + "ெயின்ட் லூசியாலிச்செண்ஸ்டெய்ன்இலங்கைலைபீரியாலெசோதோலிதுவேனியாலக்ஸ்சம்பர" + + "்க்லாட்வியாலிபியாமொராக்கோமொனாக்கோமால்டோவாமான்டேனெக்ரோசெயின்ட் மார்ட்டீ" + + "ன்மடகாஸ்கர்மார்ஷல் தீவுகள்மாசிடோனியாமாலிமியான்மார் (பர்மா)மங்கோலியாமகா" + + "வ் எஸ்ஏஆர் சீனாவடக்கு மரியானா தீவுகள்மார்டினிக்மௌரிடானியாமாண்ட்செராட்ம" + + "ால்டாமொரிசியஸ்மாலத்தீவுமலாவிமெக்சிகோமலேசியாமொசாம்பிக்நமீபியாநியூ கேலிட" + + "ோனியாநைஜர்நார்ஃபோக் தீவுகள்நைஜீரியாநிகரகுவாநெதர்லாந்துநார்வேநேபாளம்நௌர" + + "ுநியூநியூசிலாந்துஓமன்பனாமாபெருபிரெஞ்சு பாலினேஷியாபப்புவா நியூ கினியாபி" + + "லிப்பைன்ஸ்பாகிஸ்தான்போலந்துசெயின்ட் பியர் & மிக்வேலான்பிட்கெய்ர்ன் தீவ" + + "ுகள்பியூர்டோ ரிகோபாலஸ்தீனிய பிரதேசங்கள்போர்ச்சுக்கல்பாலோபராகுவேகத்தார்" + + "வெளிப்புற ஓஷியானியாரீயூனியன்ருமேனியாசெர்பியாரஷ்யாருவாண்டாசவூதி அரேபியா" + + "சாலமன் தீவுகள்சீஷெல்ஸ்சூடான்ஸ்வீடன்சிங்கப்பூர்செயின்ட் ஹெலெனாஸ்லோவேனிய" + + "ாஸ்வல்பார்டு & ஜான் மேயன்ஸ்லோவாகியாசியாரா லியோன்சான் மரினோசெனெகல்சோமால" + + "ியாசுரினாம்தெற்கு சூடான்சாவ் தோம் & ப்ரின்சிபிஎல் சால்வடார்சின்ட் மார்" + + "டென்சிரியாஸ்வாஸிலாந்துடிரிஸ்டன் டா குன்ஹாடர்க்ஸ் & கைகோஸ் தீவுகள்சாட்ப" + + "ிரெஞ்சு தெற்கு பிரதேசங்கள்டோகோதாய்லாந்துதஜிகிஸ்தான்டோகேலோதைமூர்-லெஸ்தே" + + "துர்க்மெனிஸ்தான்டுனிசியாடோங்காதுருக்கிடிரினிடாட் & டொபாகோதுவாலூதைவான்த" + + "ான்சானியாஉக்ரைன்உகாண்டாயூ.எஸ். வெளிப்புறத் தீவுகள்ஐக்கிய நாடுகள்அமெரிக" + + "்காஉருகுவேஉஸ்பெகிஸ்தான்வாடிகன் நகரம்செயின்ட் வின்சென்ட் & கிரெனடைன்ஸ்வ" + + "ெனிசுலாபிரிட்டீஷ் கன்னித் தீவுகள்யூ.எஸ். கன்னித் தீவுகள்வியட்நாம்வனுவா" + + "ட்டுவாலிஸ் மற்றும் ஃபுடுனாசமோவாகொசோவோஏமன்மயோட்தென் ஆப்பிரிக்காஜாம்பியா" + + "ஜிம்பாப்வேஅறியப்படாத பிரதேசம்உலகம்ஆப்ரிக்காவட அமெரிக்காதென் அமெரிக்காஓ" + + "ஷியானியாமேற்கு ஆப்ரிக்காமத்திய அமெரிக்காகிழக்கு ஆப்ரிக்காவடக்கு ஆப்ரிக" + + "்காமத்திய ஆப்ரிக்காதெற்கு ஆப்ரிக்காஅமெரிக்காஸ்வடக்கு அமெரிக்காகரீபியன்" + + "கிழக்காசியாதெற்காசியாதென்கிழக்காசியாதெற்கு ஐரோப்பாஆஸ்திரலேசியாமெலனேஷிய" + + "ாமைக்ரோ நேஷியா பிரதேசம்பாலினேஷியாஆசியாமத்திய ஆசியாமேற்காசியாஐரோப்பாகிழ" + + "க்கு ஐரோப்பாவடக்கு ஐரோப்பாமேற்கு ஐரோப்பாலத்தீன் அமெரிக்கா" + +var taRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0028, 0x003d, 0x0078, 0x009f, 0x00e9, 0x0104, 0x011f, 0x013a, 0x014f, 0x0170, 0x0191, 0x01b9, 0x01d4, 0x01f5, 0x0204, 0x022c, 0x024a, 0x0286, 0x02a1, 0x02bf, 0x02da, 0x0302, 0x031d, - 0x0332, 0x034a, 0x035c, 0x0393, 0x03ab, 0x03c3, 0x03db, 0x0415, - 0x042d, 0x0442, 0x0454, 0x047c, 0x049a, 0x04b2, 0x04c4, 0x04d0, - 0x050d, 0x053a, 0x0584, 0x05bd, 0x05ea, 0x060f, 0x0631, 0x063d, - 0x0652, 0x065e, 0x0679, 0x06aa, 0x06c8, 0x06da, 0x06f9, 0x070e, - 0x073c, 0x0751, 0x0776, 0x078b, 0x07b3, 0x07cb, 0x07e9, 0x0801, + 0x0332, 0x034a, 0x035c, 0x0393, 0x03ab, 0x03bd, 0x03d5, 0x040f, + 0x0427, 0x043c, 0x044e, 0x0476, 0x0494, 0x04ac, 0x04be, 0x04ca, + 0x0507, 0x0534, 0x057e, 0x05b7, 0x05e4, 0x0609, 0x062b, 0x0637, + 0x064c, 0x0658, 0x0673, 0x06a4, 0x06c2, 0x06d4, 0x06f3, 0x0708, + 0x0736, 0x074b, 0x075d, 0x0772, 0x079a, 0x07b2, 0x07d0, 0x07e8, // Entry 40 - 7F - 0x0835, 0x0850, 0x087d, 0x0895, 0x08b0, 0x08c5, 0x08e7, 0x0902, - 0x091a, 0x093b, 0x0969, 0x0987, 0x0996, 0x09cd, 0x09f1, 0x0a16, - 0x0a2e, 0x0a40, 0x0a65, 0x0a7a, 0x0a92, 0x0aba, 0x0ad2, 0x0ade, - 0x0aff, 0x0b23, 0x0b3b, 0x0b4d, 0x0b6b, 0x0b9f, 0x0bb1, 0x0c34, - 0x0c4c, 0x0c5e, 0x0c89, 0x0c98, 0x0cd3, 0x0d36, 0x0d54, 0x0d6c, - 0x0d7e, 0x0d93, 0x0db8, 0x0dd9, 0x0df7, 0x0e0c, 0x0e2f, 0x0e44, - 0x0eb3, 0x0ec2, 0x0ed1, 0x0eec, 0x0f01, 0x0f13, 0x0f22, 0x0f3a, - 0x0f4f, 0x0f61, 0x0f85, 0x0fa0, 0x0fb5, 0x0fca, 0x100a, 0x1023, + 0x081c, 0x0837, 0x0864, 0x087c, 0x0897, 0x08ac, 0x08ce, 0x08e9, + 0x0901, 0x0928, 0x0956, 0x0956, 0x0974, 0x0983, 0x09ba, 0x09de, + 0x0a03, 0x0a1b, 0x0a2d, 0x0a5b, 0x0a70, 0x0a88, 0x0ab0, 0x0ac8, + 0x0ad4, 0x0af5, 0x0b19, 0x0b31, 0x0b43, 0x0b61, 0x0b95, 0x0ba7, + 0x0c30, 0x0c48, 0x0c5a, 0x0c85, 0x0c94, 0x0ccf, 0x0d32, 0x0d50, + 0x0d68, 0x0d7a, 0x0d8f, 0x0db4, 0x0dd5, 0x0df3, 0x0e08, 0x0e2b, + 0x0e40, 0x0eaf, 0x0ebe, 0x0ecd, 0x0ee8, 0x0efd, 0x0f0f, 0x0f1e, + 0x0f36, 0x0f4b, 0x0f5d, 0x0f81, 0x0f9c, 0x0fba, 0x0fcf, 0x100f, // Entry 80 - BF - 0x1042, 0x1054, 0x1082, 0x109d, 0x10af, 0x10c4, 0x10ef, 0x111f, - 0x1131, 0x1149, 0x115b, 0x1179, 0x11a0, 0x11b8, 0x11ca, 0x11e2, - 0x11fa, 0x1212, 0x1236, 0x126d, 0x1288, 0x12b3, 0x12d1, 0x12dd, - 0x130d, 0x1328, 0x135a, 0x1398, 0x13b6, 0x13d4, 0x13f8, 0x140a, - 0x1425, 0x1440, 0x144f, 0x1467, 0x147c, 0x149a, 0x14af, 0x14da, - 0x14e9, 0x151a, 0x1532, 0x154a, 0x156b, 0x157d, 0x1592, 0x159e, - 0x15aa, 0x15ce, 0x15da, 0x15e9, 0x15f5, 0x162c, 0x1661, 0x1685, - 0x16a3, 0x16b8, 0x1701, 0x173b, 0x1760, 0x17a0, 0x17c7, 0x17d3, + 0x1028, 0x1047, 0x1059, 0x1087, 0x10a2, 0x10b4, 0x10c9, 0x10f4, + 0x1124, 0x1136, 0x114e, 0x1160, 0x117e, 0x11a5, 0x11bd, 0x11cf, + 0x11e7, 0x11ff, 0x1217, 0x123b, 0x1272, 0x128d, 0x12b8, 0x12d6, + 0x12e2, 0x1312, 0x132d, 0x135f, 0x139d, 0x13bb, 0x13d9, 0x13fd, + 0x140f, 0x142a, 0x1445, 0x1454, 0x146c, 0x1481, 0x149f, 0x14b4, + 0x14df, 0x14ee, 0x151f, 0x1537, 0x154f, 0x1570, 0x1582, 0x1597, + 0x15a3, 0x15af, 0x15d3, 0x15df, 0x15ee, 0x15fa, 0x1631, 0x1666, + 0x168a, 0x16a8, 0x16bd, 0x1706, 0x1740, 0x1765, 0x17a5, 0x17cc, // Entry C0 - FF - 0x17e8, 0x17fd, 0x1834, 0x184f, 0x1867, 0x187f, 0x188e, 0x18a6, - 0x18cb, 0x18f3, 0x190b, 0x191d, 0x1932, 0x1953, 0x197e, 0x199c, - 0x19dc, 0x19fa, 0x1a1f, 0x1a3b, 0x1a50, 0x1a68, 0x1a80, 0x1aa5, - 0x1adf, 0x1b04, 0x1b2f, 0x1b41, 0x1b65, 0x1b9a, 0x1bda, 0x1be6, - 0x1c33, 0x1c3f, 0x1c5d, 0x1c81, 0x1c93, 0x1cb8, 0x1ce8, 0x1d00, - 0x1d12, 0x1d2a, 0x1d5d, 0x1d6f, 0x1d81, 0x1d9f, 0x1db4, 0x1dc9, - 0x1e0c, 0x1e27, 0x1e3c, 0x1e63, 0x1e88, 0x1ee3, 0x1efb, 0x1f45, - 0x1f82, 0x1f9d, 0x1fb8, 0x1ff6, 0x2005, 0x2017, 0x2023, 0x2032, + 0x17d8, 0x17ed, 0x1802, 0x1839, 0x1854, 0x186c, 0x1884, 0x1893, + 0x18ab, 0x18d0, 0x18f8, 0x1910, 0x1922, 0x1937, 0x1958, 0x1983, + 0x19a1, 0x19e1, 0x19ff, 0x1a24, 0x1a40, 0x1a55, 0x1a6d, 0x1a85, + 0x1aaa, 0x1ae4, 0x1b09, 0x1b34, 0x1b46, 0x1b6a, 0x1b9f, 0x1bdf, + 0x1beb, 0x1c38, 0x1c44, 0x1c62, 0x1c83, 0x1c95, 0x1cba, 0x1cea, + 0x1d02, 0x1d14, 0x1d2c, 0x1d5f, 0x1d71, 0x1d83, 0x1da1, 0x1db6, + 0x1dcb, 0x1e14, 0x1e3c, 0x1e57, 0x1e6c, 0x1e93, 0x1eb8, 0x1f13, + 0x1f2b, 0x1f75, 0x1fb2, 0x1fcd, 0x1fe8, 0x2026, 0x2035, 0x2047, // Entry 100 - 13F - 0x2060, 0x2078, 0x2096, 0x20cd, 0x20dc, 0x20f7, 0x2119, 0x2141, - 0x215c, 0x218a, 0x21b8, 0x21e9, 0x2217, 0x2245, 0x2273, 0x2294, - 0x22c2, 0x22da, 0x22ff, 0x2321, 0x2352, 0x237a, 0x239e, 0x23b9, - 0x23f7, 0x2415, 0x2424, 0x2446, 0x2468, 0x247d, 0x24a8, 0x24d0, - 0x24f8, 0x2529, -} // Size: 604 bytes - -var teRegionStr string = "" + // Size: 9310 bytes + 0x2053, 0x2062, 0x2090, 0x20a8, 0x20c6, 0x20fd, 0x210c, 0x2127, + 0x2149, 0x2171, 0x218c, 0x21ba, 0x21e8, 0x2219, 0x2247, 0x2275, + 0x22a3, 0x22c4, 0x22f2, 0x230a, 0x232b, 0x2349, 0x2376, 0x239e, + 0x23c2, 0x23dd, 0x241b, 0x2439, 0x2448, 0x246a, 0x2488, 0x249d, + 0x24c8, 0x24f0, 0x2518, 0x2549, +} // Size: 608 bytes + +const teRegionStr string = "" + // Size: 9307 bytes "ఎసెషన్ దీవిఅండొర్రాయునైటెడ్ అరబ్ ఎమిరేట్స్ఆఫ్ఘనిస్తాన్ఆంటిగ్వా మరియు బార" + "్బుడాఆంగవిల్లాఅల్బేనియాఆర్మేనియాఅంగోలాఅంటార్కటికాఅర్జెంటీనాఅమెరికన్ సమ" + "ోవాఆస్ట్రియాఆస్ట్రేలియాఅరుబాఆలేండ్ దీవులుఅజర్బైజాన్బోస్నియా మరియు హెర్" + @@ -43809,12 +48914,12 @@ var teRegionStr string = "" + // Size: 9310 bytes "ండిబెనిన్సెంట్ బర్తేలెమీబెర్ముడాబ్రూనైబొలీవియాకరీబియన్ నెదర్లాండ్స్బ్ర" + "ెజిల్బహామాస్భూటాన్బొవెట్ దీవిబోట్స్వానాబెలారస్బెలిజ్కెనడాకోకోస్ (కీలిం" + "గ్) దీవులుకాంగో- కిన్షాసాసెంట్రల్ ఆఫ్రికన్ రిపబ్లిక్కాంగో- బ్రాజావిల్ల" + - "ిస్విట్జర్లాండ్ఐవరీ కోస్ట్కుక్ దీవులుచిలీకామెరూన్చైనాకొలంబియాక్లిప్పర్" + - "టన్ దీవికోస్టా రికాక్యూబాకేప్ వెర్డేకురాకవోక్రిస్మస్ దీవిసైప్రస్చెక్ ర" + - "ిపబ్లిక్జర్మనీడియాగో గార్సియాజిబౌటిడెన్మార్క్డోమెనికడొమెనికన్ రిపబ్లిక" + - "్అల్జీరియాస్యూటా మరియు మెలిల్లాఈక్వడార్ఎస్టోనియాఈజిప్ట్పడమటి సహారాఎరిట" + - "్రియాస్పెయిన్ఇథియోపియాయురోపియన్ యునియన్ఫిన్లాండ్ఫిజీఫాక్\u200cల్యాండ్ " + - "దీవులుమైక్రోనేశియఫారో దీవులుఫ్రాన్స్\u200cగాబన్యునైటెడ్ కింగ్\u200cడమ్" + + "ిస్విట్జర్లాండ్కోటెడ్ ఐవోయిర్కుక్ దీవులుచిలీకామెరూన్చైనాకొలంబియాక్లిప్" + + "పర్టన్ దీవికోస్టా రికాక్యూబాకేప్ వెర్డేకురాకవోక్రిస్మస్ దీవిసైప్రస్చెక" + + "్\u200cచియజర్మనీడియాగో గార్సియాజిబౌటిడెన్మార్క్డొమెనికాడొమెనికన్ రిపబ్" + + "లిక్అల్జీరియాస్యూటా & మెలిల్లాఈక్వడార్ఎస్టోనియాఈజిప్ట్పడమటి సహారాఎరిట్" + + "రియాస్పెయిన్ఇథియోపియాయూరోపియన్ యూనియన్ఫిన్లాండ్ఫిజీఫాక్\u200cల్యాండ్ ద" + + "ీవులుమైక్రోనేషియాఫారో దీవులుఫ్రాన్స్\u200cగాబన్యునైటెడ్ కింగ్\u200cడమ్" + "గ్రెనెడాజార్జియాఫ్రెంచ్ గియానాగ్వేర్నసేఘనాజిబ్రాల్టార్గ్రీన్\u200cలాండ" + "్గాంబియాగినియాగ్వాడేలోప్ఈక్వటోరియల్ గినియాగ్రీస్దక్షిణ జార్జియా & దక్ష" + "ిణ శాండ్విచ్ దీవులుగ్వాటిమాలగ్వామ్గినియా-బిస్సావ్గయానాహాంకాంగ్ ఎస్ఏఆర్" + @@ -43824,257 +48929,256 @@ var teRegionStr string = "" + // Size: 9310 bytes "ిజిస్తాన్కంబోడియాకిరిబాటికొమొరోస్సెంట్ కిట్ట్స్ మరియు నెవిస్ఉత్తర కొరి" + "యాదక్షిణ కొరియాకువైట్కేమాన్ దీవులుకజకస్తాన్లావోస్లెబనాన్సెంట్ లూసియాలి" + "క్టెస్టేన్శ్రీలంకలైబీరియాలెసోతోలిథువేనియాలక్సంబర్గ్లాత్వియాలిబియామొరాక" + - "్కోమొనాకోమోల్డోవామోంటేనేగ్రోసెంట్ మార్టిన్మడగాస్కర్మార్షల్ దీవులుమేసిడ" + - "ోనియామాలిమయన్మార్ (బర్మా)మంగోలియామాకావ్ ఎస్ఏఆర్ చైనాఉత్తర మరియానా దీవు" + - "లుమార్టినిక్మౌరిటేనియామోంట్సేర్రాట్మాల్టామారిషస్మాల్దీవులుమాలావిమెక్సి" + - "కోమలేషియామొజాంబిక్నమీబియాక్రొత్త కాలెడోనియానైజర్నార్ఫాక్ దీవినైజీరియాన" + - "ికరాగువానెదర్లాండ్స్నార్వేనేపాల్నౌరునియున్యూజిలాండ్ఒమన్పనామాపెరూఫ్రెంచ" + - "్ పోలినిషియాపాపువా న్యు గినియాఫిలిప్పీన్స్పాకిస్తాన్పోలాండ్సెంట్ పియెర" + - "్ మరియు మికెలాన్పిట్\u200cకెయిర్న్ దీవులుఫ్యూర్టో రికోపాలస్తీనియన్ ప్ర" + - "ాంతాలుపోర్చుగల్పలావుపరాగ్వేకతర్ఒషీనియా బయటున్నవిరియూనియన్రోమానియాసెర్బ" + - "ియారష్యారువాండాసౌదీ అరేబియాసోలమన్ దీవులుసీషెల్స్సూడాన్స్వీడన్సింగపూర్స" + - "ెంట్ హెలినాస్లోవేనియాస్వాల్బార్డ్ మరియు యాన్ మాయేన్స్లోవేకియాసియెర్రా " + - "లియాన్సాన్ మారినోసెనెగల్సోమాలియాసురినామ్దక్షిణ సూడాన్సావోటోమ్ మరియు ప్" + - "రిన్సిపేఎల్ సాల్వడోర్సింట్ మార్టెన్సిరియాస్వాజిల్యాండ్ట్రిస్టన్ డ కన్హ" + - "ాతుర్క్ మరియు కాలికోస్ దీవులుచాద్ఫ్రెంచ్ దక్షిణ ప్రాంతాలుటోగోథాయిలాండ్" + - "తజికిస్తాన్టోకేలావ్టిమోర్-లెస్టెతుర్కమేనిస్తాన్ట్యునీషియాటోంగాటర్కీట్ర" + - "ినిడాడ్ మరియు టొబాగోటువాలుతైవాన్టాంజానియాఉక్రెయిన్ఉగాండాసంయుక్త రాజ్య " + - "అమెరికా బయట ఉన్న దీవులుఅమెరికా సంయుక్త రాష్ట్రాలుఉరుగువేఉజ్బెకిస్తాన్వ" + - "ాటికన్ నగరంసెంట్ విన్సెంట్ మరియు గ్రెనడీన్స్వెనుజువేలాబ్రిటిష్ వర్జిన్" + - " దీవులుయు.ఎస్. వర్జిన్ దీవులువియత్నాంవనాటువాలిస్ మరియు ఫ్యుత్యునాసమోవాకొ" + - "సోవోయెమెన్మాయొట్టిదక్షిణ ఆఫ్రికాజాంబియాజింబాబ్వేతెలియని ప్రాంతంప్రపంచం" + - "ఆఫ్రికాఉత్తర అమెరికాదక్షిణ అమెరికాఒషీనియపశ్చిమ ఆఫ్రికా భూభాగంమధ్యమ అమె" + - "రికాతూర్పు ఆఫ్రికాఉత్తర ఆఫ్రికామధ్యమ ఆఫ్రికాదక్షిణ ఆఫ్రికా భూభాగంఅమెరి" + - "కాలుఉత్తర అమెరికా భూభాగంకరిబ్బియన్తూర్పు ఆసియాదక్షిణ ఆసియానైరుతి ఆసియా" + - "దక్షిణ యూరోప్ఆస్ట్రేలేసియామెలనేశియమైక్రోనేశియ ప్రాంతంపాలినేషియాఆసియామధ" + - "్య ఆసియాపడమటి ఆసియాయూరోప్తూర్పు యూరోప్ఉత్తర యూరోప్పశ్చిమ యూరోప్లాటిన్ " + - "అమెరికా" - -var teRegionIdx = []uint16{ // 290 elements + "ోమొనాకోమోల్డోవామోంటేనేగ్రోసెంట్ మార్టిన్మడగాస్కర్మార్షల్ దీవులుమేసిడోన" + + "ియామాలిమయన్మార్ (బర్మా)మంగోలియామకావు ఎస్ఏఆర్ చైనాఉత్తర మరియానా దీవులుమ" + + "ార్టినిక్మౌరిటేనియామోంట్సేర్రాట్మాల్టామారిషస్మాల్దీవులుమాలావిమెక్సికోమ" + + "లేషియామొజాంబిక్నమీబియాక్రొత్త కాలెడోనియానైజర్నార్ఫోక్ దీవినైజీరియానికర" + + "ాగువానెదర్లాండ్స్నార్వేనేపాల్నౌరునియున్యూజిలాండ్ఒమన్పనామాపెరూఫ్రెంచ్ ప" + + "ోలినిషియాపాపువా న్యు గినియాఫిలిప్పీన్స్పాకిస్తాన్పోలాండ్సెంట్ పియెర్ మ" + + "రియు మికెలాన్పిట్\u200cకెయిర్న్ దీవులుఫ్యూర్టో రికోపాలస్తీనియన్ ప్రాంత" + + "ాలుపోర్చుగల్పలావుపరాగ్వేఖతర్ఒషీనియా బయటున్నవిరియూనియన్రోమానియాసెర్బియా" + + "రష్యారువాండాసౌదీ అరేబియాసోలమన్ దీవులుసీషెల్స్సూడాన్స్వీడన్సింగపూర్సెయి" + + "ంట్ హెలినాస్లోవేనియాస్వాల్బార్డ్ మరియు యాన్ మాయేన్స్లోవేకియాసియెర్రా ల" + + "ియాన్సాన్ మారినోసెనెగల్సోమాలియాసూరినామ్దక్షిణ సూడాన్సావోటోమ్ & ప్రిన్స" + + "ిపేఎల్ సాల్వడోర్సింట్ మార్టెన్సిరియాస్వాజిల్యాండ్ట్రిస్టన్ డ కన్హాతుర్" + + "క్ మరియు కాలికోస్ దీవులుచాద్ఫ్రెంచ్ దక్షిణ ప్రాంతాలుటోగోథాయిలాండ్తజికి" + + "స్తాన్టోకేలావ్టిమోర్-లెస్టెతుర్కమేనిస్తాన్ట్యునీషియాటోంగాటర్కీట్రినిడా" + + "డ్ మరియు టొబాగోటువాలుతైవాన్టాంజానియాఉక్రెయిన్ఉగాండాసంయుక్త రాజ్య అమెరి" + + "కా బయట ఉన్న దీవులుయునైటెడ్ నేషన్స్అమెరికా సంయుక్త రాష్ట్రాలుఊరుగ్వేఉజ్" + + "బెకిస్తాన్వాటికన్ నగరంసెంట్ విన్సెంట్ మరియు గ్రెనడీన్స్వెనుజులాబ్రిటిష" + + "్ వర్జిన్ దీవులుయు.ఎస్. వర్జిన్ దీవులువియత్నాంవనాటువాలిస్ & ఫ్యుత్యునా" + + "సమోవాకొసోవోయెమెన్మాయొట్టిదక్షిణ ఆఫ్రికాజాంబియాజింబాబ్వేతెలియని ప్రాంతం" + + "ప్రపంచంఆఫ్రికాఉత్తర అమెరికాదక్షిణ అమెరికాఓషినియాపశ్చిమ ఆఫ్రికా భూభాగంమ" + + "ధ్యమ అమెరికాతూర్పు ఆఫ్రికాఉత్తర ఆఫ్రికామధ్యమ ఆఫ్రికాదక్షిణ ఆఫ్రికా భూభ" + + "ాగంఅమెరికాస్ఉత్తర అమెరికా భూభాగంకరిబ్బియన్తూర్పు ఆసియాదక్షిణ ఆసియానైరు" + + "తి ఆసియాదక్షిణ యూరోప్ఆస్ట్రేలేసియామెలనేశియమైక్రోనేశియ ప్రాంతంపాలినేషియ" + + "ాఆసియామధ్య ఆసియాపడమటి ఆసియాయూరోప్తూర్పు యూరోప్ఉత్తర యూరోప్పశ్చిమ యూరోప" + + "్లాటిన్ అమెరికా" + +var teRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x001f, 0x0037, 0x0078, 0x009c, 0x00dd, 0x00f8, 0x0113, 0x012e, 0x0140, 0x0161, 0x017f, 0x01a7, 0x01c2, 0x01e3, 0x01f2, 0x0217, 0x0235, 0x0282, 0x029d, 0x02bb, 0x02d3, 0x02f8, 0x0313, 0x032e, 0x0343, 0x0355, 0x0380, 0x0398, 0x03aa, 0x03c2, 0x03ff, 0x0417, 0x042c, 0x043e, 0x045d, 0x047b, 0x0490, 0x04a2, 0x04b1, - 0x04ee, 0x0517, 0x0564, 0x0599, 0x05c3, 0x05e2, 0x0601, 0x060d, - 0x0625, 0x0631, 0x0649, 0x067a, 0x0699, 0x06ab, 0x06ca, 0x06df, - 0x0707, 0x071c, 0x0744, 0x0756, 0x0781, 0x0793, 0x07b1, 0x07c6, + 0x04ee, 0x0517, 0x0564, 0x0599, 0x05c3, 0x05eb, 0x060a, 0x0616, + 0x062e, 0x063a, 0x0652, 0x0683, 0x06a2, 0x06b4, 0x06d3, 0x06e8, + 0x0710, 0x0725, 0x073d, 0x074f, 0x077a, 0x078c, 0x07aa, 0x07c2, // Entry 40 - 7F - 0x07fd, 0x0818, 0x0853, 0x086b, 0x0886, 0x089b, 0x08ba, 0x08d5, - 0x08ed, 0x0908, 0x0939, 0x0954, 0x0960, 0x0997, 0x09b8, 0x09d7, - 0x09f2, 0x0a01, 0x0a35, 0x0a4d, 0x0a65, 0x0a8d, 0x0aa8, 0x0ab1, - 0x0ad5, 0x0af9, 0x0b0e, 0x0b20, 0x0b3e, 0x0b72, 0x0b84, 0x0bf3, - 0x0c0e, 0x0c20, 0x0c4b, 0x0c5a, 0x0c95, 0x0ce2, 0x0cfd, 0x0d1b, - 0x0d27, 0x0d39, 0x0d5b, 0x0d79, 0x0d91, 0x0dac, 0x0dcc, 0x0de5, - 0x0e3f, 0x0e4e, 0x0e5d, 0x0e75, 0x0e81, 0x0e93, 0x0ea2, 0x0eba, - 0x0ec9, 0x0edb, 0x0f05, 0x0f1d, 0x0f35, 0x0f4d, 0x0f98, 0x0fba, + 0x07f9, 0x0814, 0x0841, 0x0859, 0x0874, 0x0889, 0x08a8, 0x08c3, + 0x08db, 0x08f6, 0x0927, 0x0927, 0x0942, 0x094e, 0x0985, 0x09a9, + 0x09c8, 0x09e3, 0x09f2, 0x0a26, 0x0a3e, 0x0a56, 0x0a7e, 0x0a99, + 0x0aa2, 0x0ac6, 0x0aea, 0x0aff, 0x0b11, 0x0b2f, 0x0b63, 0x0b75, + 0x0be4, 0x0bff, 0x0c11, 0x0c3c, 0x0c4b, 0x0c86, 0x0cd3, 0x0cee, + 0x0d0c, 0x0d18, 0x0d2a, 0x0d4c, 0x0d6a, 0x0d82, 0x0d9d, 0x0dbd, + 0x0dd6, 0x0e30, 0x0e3f, 0x0e4e, 0x0e66, 0x0e72, 0x0e84, 0x0e93, + 0x0eab, 0x0eba, 0x0ecc, 0x0ef6, 0x0f0e, 0x0f26, 0x0f3e, 0x0f89, // Entry 80 - BF - 0x0fdf, 0x0ff1, 0x1016, 0x1031, 0x1043, 0x1058, 0x107a, 0x109e, - 0x10b3, 0x10cb, 0x10dd, 0x10fb, 0x1119, 0x1131, 0x1143, 0x115b, - 0x116d, 0x1185, 0x11a6, 0x11ce, 0x11e9, 0x1211, 0x122f, 0x123b, - 0x1265, 0x127d, 0x12b2, 0x12ea, 0x1308, 0x1326, 0x134d, 0x135f, - 0x1374, 0x1392, 0x13a4, 0x13bc, 0x13d1, 0x13ec, 0x1401, 0x1435, - 0x1444, 0x1469, 0x1481, 0x149c, 0x14c0, 0x14d2, 0x14e4, 0x14f0, - 0x14fc, 0x151d, 0x1529, 0x1538, 0x1544, 0x1578, 0x15aa, 0x15ce, - 0x15ec, 0x1601, 0x164c, 0x1686, 0x16ab, 0x16eb, 0x1706, 0x1715, + 0x0fab, 0x0fd0, 0x0fe2, 0x1007, 0x1022, 0x1034, 0x1049, 0x106b, + 0x108f, 0x10a4, 0x10bc, 0x10ce, 0x10ec, 0x110a, 0x1122, 0x1134, + 0x1146, 0x1158, 0x1170, 0x1191, 0x11b9, 0x11d4, 0x11fc, 0x121a, + 0x1226, 0x1250, 0x1268, 0x129a, 0x12d2, 0x12f0, 0x130e, 0x1335, + 0x1347, 0x135c, 0x137a, 0x138c, 0x13a4, 0x13b9, 0x13d4, 0x13e9, + 0x141d, 0x142c, 0x1451, 0x1469, 0x1484, 0x14a8, 0x14ba, 0x14cc, + 0x14d8, 0x14e4, 0x1505, 0x1511, 0x1520, 0x152c, 0x1560, 0x1592, + 0x15b6, 0x15d4, 0x15e9, 0x1634, 0x166e, 0x1693, 0x16d3, 0x16ee, // Entry C0 - FF - 0x172a, 0x1736, 0x1767, 0x1782, 0x179a, 0x17b2, 0x17c1, 0x17d6, - 0x17f8, 0x181d, 0x1835, 0x1847, 0x185c, 0x1874, 0x1896, 0x18b4, - 0x1908, 0x1926, 0x1951, 0x1970, 0x1985, 0x199d, 0x19b5, 0x19da, - 0x1a21, 0x1a46, 0x1a6e, 0x1a80, 0x1aa7, 0x1ad6, 0x1b24, 0x1b30, - 0x1b74, 0x1b80, 0x1b9b, 0x1bbc, 0x1bd4, 0x1bf9, 0x1c26, 0x1c44, - 0x1c53, 0x1c62, 0x1ca3, 0x1cb5, 0x1cc7, 0x1ce2, 0x1cfd, 0x1d0f, - 0x1d74, 0x1dbe, 0x1dd3, 0x1dfa, 0x1e1c, 0x1e79, 0x1e97, 0x1ed8, - 0x1f12, 0x1f2a, 0x1f39, 0x1f7a, 0x1f89, 0x1f9b, 0x1fad, 0x1fc5, + 0x16fd, 0x1712, 0x171e, 0x174f, 0x176a, 0x1782, 0x179a, 0x17a9, + 0x17be, 0x17e0, 0x1805, 0x181d, 0x182f, 0x1844, 0x185c, 0x1884, + 0x18a2, 0x18f6, 0x1914, 0x193f, 0x195e, 0x1973, 0x198b, 0x19a3, + 0x19c8, 0x1a01, 0x1a26, 0x1a4e, 0x1a60, 0x1a87, 0x1ab6, 0x1b04, + 0x1b10, 0x1b54, 0x1b60, 0x1b7b, 0x1b9c, 0x1bb4, 0x1bd9, 0x1c06, + 0x1c24, 0x1c33, 0x1c42, 0x1c83, 0x1c95, 0x1ca7, 0x1cc2, 0x1cdd, + 0x1cef, 0x1d54, 0x1d82, 0x1dcc, 0x1de1, 0x1e08, 0x1e2a, 0x1e87, + 0x1e9f, 0x1ee0, 0x1f1a, 0x1f32, 0x1f41, 0x1f74, 0x1f83, 0x1f95, // Entry 100 - 13F - 0x1fed, 0x2002, 0x201d, 0x2048, 0x205d, 0x2072, 0x2097, 0x20bf, - 0x20d1, 0x210c, 0x2131, 0x2159, 0x217e, 0x21a3, 0x21de, 0x21f9, - 0x2231, 0x224f, 0x2271, 0x2293, 0x22b5, 0x22da, 0x2301, 0x2319, - 0x2350, 0x236e, 0x237d, 0x2399, 0x23b8, 0x23ca, 0x23ef, 0x2411, - 0x2436, 0x245e, -} // Size: 604 bytes - -var thRegionStr string = "" + // Size: 9015 bytes + 0x1fa7, 0x1fbf, 0x1fe7, 0x1ffc, 0x2017, 0x2042, 0x2057, 0x206c, + 0x2091, 0x20b9, 0x20ce, 0x2109, 0x212e, 0x2156, 0x217b, 0x21a0, + 0x21db, 0x21f6, 0x222e, 0x224c, 0x226e, 0x2290, 0x22b2, 0x22d7, + 0x22fe, 0x2316, 0x234d, 0x236b, 0x237a, 0x2396, 0x23b5, 0x23c7, + 0x23ec, 0x240e, 0x2433, 0x245b, +} // Size: 608 bytes + +const thRegionStr string = "" + // Size: 9006 bytes "เกาะแอสเซนชันอันดอร์ราสหรัฐอาหรับเอมิเรตส์อัฟกานิสถานแอนติกาและบาร์บูดาแ" + "องกวิลลาแอลเบเนียอาร์เมเนียแองโกลาแอนตาร์กติกาอาร์เจนตินาอเมริกันซามัว" + "ออสเตรียออสเตรเลียอารูบาหมู่เกาะโอลันด์อาเซอร์ไบจานบอสเนียและเฮอร์เซโก" + "วีนาบาร์เบโดสบังกลาเทศเบลเยียมบูร์กินาฟาโซบัลแกเรียบาห์เรนบุรุนดีเบนิน" + "เซนต์บาร์เธเลมีเบอร์มิวดาบรูไนโบลิเวียเนเธอร์แลนด์แคริบเบียนบราซิลบาฮา" + "มาสภูฏานเกาะบูเวตบอตสวานาเบลารุสเบลีซแคนาดาหมู่เกาะโคโคส (คีลิง)คองโก-" + - "กินชาซาสาธารณรัฐแอฟริกากลางคองโก-บราซซาวิลสวิตเซอร์แลนด์ไอวอรี่โคสต์หม" + - "ู่เกาะคุกชิลีแคเมอรูนจีนโคลอมเบียเกาะคลิปเปอร์ตันคอสตาริกาคิวบาเคปเวิร" + - "์ดคูราเซาเกาะคริสต์มาสไซปรัสสาธารณรัฐเช็กเยอรมนีดิเอโกการ์เซียจิบูตีเด" + - "นมาร์กโดมินิกาสาธารณรัฐโดมินิกันแอลจีเรียซีโอตาและเมลิลลาเอกวาดอร์เอสโ" + - "ตเนียอียิปต์ซาฮาราตะวันตกเอริเทรียสเปนเอธิโอเปียสหภาพยุโรปฟินแลนด์ฟิจิ" + - "หมู่เกาะฟอล์กแลนด์ไมโครนีเซียหมู่เกาะแฟโรฝรั่งเศสกาบองสหราชอาณาจักรเกร" + - "เนดาจอร์เจียเฟรนช์เกียนาเกิร์นซีย์กานายิบรอลตาร์กรีนแลนด์แกมเบียกินีกว" + - "าเดอลูปอิเควทอเรียลกินีกรีซเกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิชกั" + - "วเตมาลากวมกินี-บิสเซากายอานาเขตปกครองพิเศษฮ่องกงแห่งสาธารณรัฐประชาชนจี" + - "นเกาะเฮิร์ดและหมู่เกาะแมกดอนัลด์ฮอนดูรัสโครเอเชียเฮติฮังการีหมู่เกาะคา" + - "นารีอินโดนีเซียไอร์แลนด์อิสราเอลเกาะแมนอินเดียบริติชอินเดียนโอเชียนเทร" + - "์ริทอรีอิรักอิหร่านไอซ์แลนด์อิตาลีเจอร์ซีย์จาเมกาจอร์แดนญี่ปุ่นเคนยาคี" + - "ร์กีซสถานกัมพูชาคิริบาสคอโมโรสเซนต์คิตส์และเนวิสเกาหลีเหนือเกาหลีใต้คู" + - "เวตหมู่เกาะเคย์แมนคาซัคสถานลาวเลบานอนเซนต์ลูเซียลิกเตนสไตน์ศรีลังกาไลบ" + - "ีเรียเลโซโทลิทัวเนียลักเซมเบิร์กลัตเวียลิเบียโมร็อกโกโมนาโกมอลโดวามอนเ" + - "ตเนโกรเซนต์มาตินมาดากัสการ์หมู่เกาะมาร์แชลล์มาซิโดเนียมาลีเมียนม่าร์ (" + - "พม่า)มองโกเลียเขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐประชาชนจีนหมู่เกาะนอร์เ" + - "ทิร์นมาเรียนามาร์ตินีกมอริเตเนียมอนต์เซอร์รัตมอลตามอริเชียสมัลดีฟส์มาล" + - "าวีเม็กซิโกมาเลเซียโมซัมบิกนามิเบียนิวแคลิโดเนียไนเจอร์เกาะนอร์ฟอล์กไน" + - "จีเรียนิการากัวเนเธอร์แลนด์นอร์เวย์เนปาลนาอูรูนีอูเอนิวซีแลนด์โอมานปาน" + - "ามาเปรูเฟรนช์โปลินีเซียปาปัวนิวกินีฟิลิปปินส์ปากีสถานโปแลนด์แซงปีแยร์แ" + - "ละมีเกอลงหมู่เกาะพิตแคร์นเปอร์โตริโกดินแดนปาเลสไตน์โปรตุเกสปาเลาปารากว" + - "ัยกาตาร์เอาต์ไลอิงโอเชียเนียเรอูนียงโรมาเนียเซอร์เบียรัสเซียรวันดาซาอุ" + - "ดีอาระเบียหมู่เกาะโซโลมอนเซเชลส์ซูดานสวีเดนสิงคโปร์เซนต์เฮเลนาสโลวีเนี" + - "ยสฟาลบาร์และยานไมเอนสโลวะเกียเซียร์ราลีโอนซานมารีโนเซเนกัลโซมาเลียซูริ" + - "นาเมซูดานใต้เซาตูเมและปรินซิปีเอลซัลวาดอร์เซนต์มาร์ตินซีเรียสวาซิแลนด์" + - "ทริสตัน เดอ คูนาหมู่เกาะเติกส์และหมู่เกาะเคคอสชาดเฟรนช์เซาเทิร์นเทร์ริ" + - "ทอรีส์โตโกไทยทาจิกิสถานโตเกเลาติมอร์-เลสเตเติร์กเมนิสถานตูนิเซียตองกาต" + - "ุรกีตรินิแดดและโตเบโกตูวาลูไต้หวันแทนซาเนียยูเครนยูกันดาหมู่เกาะรอบนอก" + - "ของสหรัฐอเมริกาสหรัฐอเมริกาอุรุกวัยอุซเบกิสถานนครวาติกันเซนต์วินเซนต์แ" + - "ละเกรนาดีนส์เวเนซุเอลาหมู่เกาะบริติชเวอร์จินหมู่เกาะยูเอสเวอร์จินเวียด" + - "นามวานูอาตูวาลลิสและฟุตูนาซามัวโคโซโวเยเมนมายอตแอฟริกาใต้แซมเบียซิมบับ" + - "เวภูมิภาคที่ไม่รู้จักโลกแอฟริกาอเมริกาเหนืออเมริกาใต้โอเชียเนียแอฟริกา" + - "ตะวันตกอเมริกากลางแอฟริกาตะวันออกแอฟริกาเหนือแอฟริกากลางแอฟริกาตอนใต้อ" + - "เมริกาอเมริกาตอนเหนือแคริบเบียนเอเชียตะวันออกเอเชียใต้เอเชียตะวันออกเฉ" + - "ียงใต้ยุโรปใต้ออสตราเลเซียเมลานีเซียเขตไมโครนีเซียโปลินีเซียเอเชียเอเช" + - "ียกลางเอเชียตะวันตกยุโรปยุโรปตะวันออกยุโรปเหนือยุโรปตะวันตกละตินอเมริก" + - "า" - -var thRegionIdx = []uint16{ // 290 elements + "กินชาซาสาธารณรัฐแอฟริกากลางคองโก-บราซซาวิลสวิตเซอร์แลนด์โกตดิวัวร์หมู่" + + "เกาะคุกชิลีแคเมอรูนจีนโคลอมเบียเกาะคลิปเปอร์ตันคอสตาริกาคิวบาเคปเวิร์ด" + + "คูราเซาเกาะคริสต์มาสไซปรัสเช็กเยอรมนีดิเอโกการ์เซียจิบูตีเดนมาร์กโดมิน" + + "ิกาสาธารณรัฐโดมินิกันแอลจีเรียเซวตาและเมลียาเอกวาดอร์เอสโตเนียอียิปต์ซ" + + "าฮาราตะวันตกเอริเทรียสเปนเอธิโอเปียสหภาพยุโรปฟินแลนด์ฟิจิหมู่เกาะฟอล์ก" + + "แลนด์ไมโครนีเซียหมู่เกาะแฟโรฝรั่งเศสกาบองสหราชอาณาจักรเกรเนดาจอร์เจียเ" + + "ฟรนช์เกียนาเกิร์นซีย์กานายิบรอลตาร์กรีนแลนด์แกมเบียกินีกวาเดอลูปอิเควท" + + "อเรียลกินีกรีซเกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิชกัวเตมาลากวมกิน" + + "ี-บิสเซากายอานาเขตปกครองพิเศษฮ่องกงแห่งสาธารณรัฐประชาชนจีนเกาะเฮิร์ดแล" + + "ะหมู่เกาะแมกดอนัลด์ฮอนดูรัสโครเอเชียเฮติฮังการีหมู่เกาะคานารีอินโดนีเซ" + + "ียไอร์แลนด์อิสราเอลเกาะแมนอินเดียบริติชอินเดียนโอเชียนเทร์ริทอรีอิรักอ" + + "ิหร่านไอซ์แลนด์อิตาลีเจอร์ซีย์จาเมกาจอร์แดนญี่ปุ่นเคนยาคีร์กีซสถานกัมพ" + + "ูชาคิริบาสคอโมโรสเซนต์คิตส์และเนวิสเกาหลีเหนือเกาหลีใต้คูเวตหมู่เกาะเค" + + "ย์แมนคาซัคสถานลาวเลบานอนเซนต์ลูเซียลิกเตนสไตน์ศรีลังกาไลบีเรียเลโซโทลิ" + + "ทัวเนียลักเซมเบิร์กลัตเวียลิเบียโมร็อกโกโมนาโกมอลโดวามอนเตเนโกรเซนต์มา" + + "ตินมาดากัสการ์หมู่เกาะมาร์แชลล์มาซิโดเนียมาลีเมียนมาร์ (พม่า)มองโกเลีย" + + "เขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐประชาชนจีนหมู่เกาะนอร์เทิร์นมาเรียนาม" + + "าร์ตินีกมอริเตเนียมอนต์เซอร์รัตมอลตามอริเชียสมัลดีฟส์มาลาวีเม็กซิโกมาเ" + + "ลเซียโมซัมบิกนามิเบียนิวแคลิโดเนียไนเจอร์เกาะนอร์ฟอล์กไนจีเรียนิการากั" + + "วเนเธอร์แลนด์นอร์เวย์เนปาลนาอูรูนีอูเอนิวซีแลนด์โอมานปานามาเปรูเฟรนช์โ" + + "ปลินีเซียปาปัวนิวกินีฟิลิปปินส์ปากีสถานโปแลนด์แซงปีแยร์และมีเกอลงหมู่เ" + + "กาะพิตแคร์นเปอร์โตริโกดินแดนปาเลสไตน์โปรตุเกสปาเลาปารากวัยกาตาร์เอาต์ไ" + + "ลอิงโอเชียเนียเรอูนียงโรมาเนียเซอร์เบียรัสเซียรวันดาซาอุดีอาระเบียหมู่" + + "เกาะโซโลมอนเซเชลส์ซูดานสวีเดนสิงคโปร์เซนต์เฮเลนาสโลวีเนียสฟาลบาร์และยา" + + "นไมเอนสโลวะเกียเซียร์ราลีโอนซานมารีโนเซเนกัลโซมาเลียซูรินาเมซูดานใต้เซ" + + "าตูเมและปรินซิปีเอลซัลวาดอร์เซนต์มาร์ตินซีเรียสวาซิแลนด์ทริสตัน เดอ คู" + + "นาหมู่เกาะเติกส์และหมู่เกาะเคคอสชาดเฟรนช์เซาเทิร์นเทร์ริทอรีส์โตโกไทยท" + + "าจิกิสถานโตเกเลาติมอร์-เลสเตเติร์กเมนิสถานตูนิเซียตองกาตุรกีตรินิแดดแล" + + "ะโตเบโกตูวาลูไต้หวันแทนซาเนียยูเครนยูกันดาหมู่เกาะรอบนอกของสหรัฐอเมริก" + + "าสหประชาชาติสหรัฐอเมริกาอุรุกวัยอุซเบกิสถานนครวาติกันเซนต์วินเซนต์และเ" + + "กรนาดีนส์เวเนซุเอลาหมู่เกาะบริติชเวอร์จินหมู่เกาะยูเอสเวอร์จินเวียดนาม" + + "วานูอาตูวาลลิสและฟุตูนาซามัวโคโซโวเยเมนมายอตแอฟริกาใต้แซมเบียซิมบับเวภ" + + "ูมิภาคที่ไม่รู้จักโลกแอฟริกาอเมริกาเหนืออเมริกาใต้โอเชียเนียแอฟริกาตะว" + + "ันตกอเมริกากลางแอฟริกาตะวันออกแอฟริกาเหนือแอฟริกากลางแอฟริกาตอนใต้อเมร" + + "ิกาอเมริกาตอนเหนือแคริบเบียนเอเชียตะวันออกเอเชียใต้เอเชียตะวันออกเฉียง" + + "ใต้ยุโรปใต้ออสตราเลเซียเมลานีเซียเขตไมโครนีเซียโปลินีเซียเอเชียเอเชียก" + + "ลางเอเชียตะวันตกยุโรปยุโรปตะวันออกยุโรปเหนือยุโรปตะวันตกละตินอเมริกา" + +var thRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0027, 0x0042, 0x007e, 0x009f, 0x00d5, 0x00f0, 0x010b, 0x0129, 0x013e, 0x0162, 0x0183, 0x01aa, 0x01c2, 0x01e0, 0x01f2, 0x021f, 0x0243, 0x0288, 0x02a3, 0x02be, 0x02d6, 0x02fa, 0x0315, 0x032a, 0x033f, 0x034e, 0x037b, 0x0399, 0x03a8, 0x03c0, 0x0402, 0x0414, 0x0429, 0x0438, 0x0453, 0x046b, 0x0480, 0x048f, 0x04a1, - 0x04da, 0x04ff, 0x053b, 0x0566, 0x0590, 0x05b4, 0x05d5, 0x05e1, - 0x05f9, 0x0602, 0x061d, 0x064d, 0x0668, 0x0677, 0x0692, 0x06a7, - 0x06ce, 0x06e0, 0x0707, 0x071c, 0x0746, 0x0758, 0x0770, 0x0788, + 0x04da, 0x04ff, 0x053b, 0x0566, 0x0590, 0x05ae, 0x05cf, 0x05db, + 0x05f3, 0x05fc, 0x0617, 0x0647, 0x0662, 0x0671, 0x068c, 0x06a1, + 0x06c8, 0x06da, 0x06e6, 0x06fb, 0x0725, 0x0737, 0x074f, 0x0767, // Entry 40 - 7F - 0x07be, 0x07d9, 0x0809, 0x0824, 0x083f, 0x0854, 0x087b, 0x0896, - 0x08a2, 0x08c0, 0x08de, 0x08f6, 0x0902, 0x0938, 0x0959, 0x097d, - 0x0995, 0x09a4, 0x09cb, 0x09e0, 0x09f8, 0x0a1c, 0x0a3a, 0x0a46, - 0x0a64, 0x0a7f, 0x0a94, 0x0aa0, 0x0abb, 0x0aeb, 0x0af7, 0x0b72, - 0x0b8d, 0x0b96, 0x0bb5, 0x0bca, 0x0c4b, 0x0ca8, 0x0cc0, 0x0cdb, - 0x0ce7, 0x0cfc, 0x0d26, 0x0d47, 0x0d62, 0x0d7a, 0x0d8f, 0x0da4, - 0x0e01, 0x0e10, 0x0e25, 0x0e40, 0x0e52, 0x0e6d, 0x0e7f, 0x0e94, - 0x0ea9, 0x0eb8, 0x0ed9, 0x0eee, 0x0f03, 0x0f18, 0x0f4e, 0x0f6f, + 0x079d, 0x07b8, 0x07e2, 0x07fd, 0x0818, 0x082d, 0x0854, 0x086f, + 0x087b, 0x0899, 0x08b7, 0x08b7, 0x08cf, 0x08db, 0x0911, 0x0932, + 0x0956, 0x096e, 0x097d, 0x09a4, 0x09b9, 0x09d1, 0x09f5, 0x0a13, + 0x0a1f, 0x0a3d, 0x0a58, 0x0a6d, 0x0a79, 0x0a94, 0x0ac4, 0x0ad0, + 0x0b4b, 0x0b66, 0x0b6f, 0x0b8e, 0x0ba3, 0x0c24, 0x0c81, 0x0c99, + 0x0cb4, 0x0cc0, 0x0cd5, 0x0cff, 0x0d20, 0x0d3b, 0x0d53, 0x0d68, + 0x0d7d, 0x0dda, 0x0de9, 0x0dfe, 0x0e19, 0x0e2b, 0x0e46, 0x0e58, + 0x0e6d, 0x0e82, 0x0e91, 0x0eb2, 0x0ec7, 0x0edc, 0x0ef1, 0x0f27, // Entry 80 - BF - 0x0f8a, 0x0f99, 0x0fc6, 0x0fe1, 0x0fea, 0x0fff, 0x1020, 0x1041, - 0x1059, 0x1071, 0x1083, 0x109e, 0x10c2, 0x10d7, 0x10e9, 0x1101, - 0x1113, 0x1128, 0x1146, 0x1164, 0x1185, 0x11b8, 0x11d6, 0x11e2, - 0x120f, 0x122a, 0x12ab, 0x12f9, 0x1314, 0x1332, 0x1359, 0x1368, - 0x1383, 0x139b, 0x13ad, 0x13c5, 0x13dd, 0x13f5, 0x140d, 0x1434, - 0x1449, 0x1470, 0x1488, 0x14a3, 0x14c7, 0x14df, 0x14ee, 0x1500, - 0x1512, 0x1530, 0x153f, 0x1551, 0x155d, 0x158d, 0x15b1, 0x15cf, - 0x15e7, 0x15fc, 0x1635, 0x1665, 0x1686, 0x16b3, 0x16cb, 0x16da, + 0x0f48, 0x0f63, 0x0f72, 0x0f9f, 0x0fba, 0x0fc3, 0x0fd8, 0x0ff9, + 0x101a, 0x1032, 0x104a, 0x105c, 0x1077, 0x109b, 0x10b0, 0x10c2, + 0x10da, 0x10ec, 0x1101, 0x111f, 0x113d, 0x115e, 0x1191, 0x11af, + 0x11bb, 0x11e5, 0x1200, 0x1281, 0x12cf, 0x12ea, 0x1308, 0x132f, + 0x133e, 0x1359, 0x1371, 0x1383, 0x139b, 0x13b3, 0x13cb, 0x13e3, + 0x140a, 0x141f, 0x1446, 0x145e, 0x1479, 0x149d, 0x14b5, 0x14c4, + 0x14d6, 0x14e8, 0x1506, 0x1515, 0x1527, 0x1533, 0x1563, 0x1587, + 0x15a5, 0x15bd, 0x15d2, 0x160b, 0x163b, 0x165c, 0x1689, 0x16a1, // Entry C0 - FF - 0x16f2, 0x1704, 0x1740, 0x1758, 0x1770, 0x178b, 0x17a0, 0x17b2, - 0x17dc, 0x1809, 0x181e, 0x182d, 0x183f, 0x1857, 0x1878, 0x1893, - 0x18cc, 0x18e7, 0x190e, 0x1929, 0x193e, 0x1956, 0x196e, 0x1986, - 0x19bc, 0x19e0, 0x1a04, 0x1a16, 0x1a34, 0x1a60, 0x1aba, 0x1ac3, - 0x1b14, 0x1b20, 0x1b29, 0x1b47, 0x1b5c, 0x1b7e, 0x1ba8, 0x1bc0, - 0x1bcf, 0x1bde, 0x1c11, 0x1c23, 0x1c38, 0x1c53, 0x1c65, 0x1c7a, - 0x1cd1, 0x1cf5, 0x1d0d, 0x1d2e, 0x1d4c, 0x1d9a, 0x1db8, 0x1dfa, - 0x1e39, 0x1e51, 0x1e69, 0x1e96, 0x1ea5, 0x1eb7, 0x1ec6, 0x1ed5, + 0x16b0, 0x16c8, 0x16da, 0x1716, 0x172e, 0x1746, 0x1761, 0x1776, + 0x1788, 0x17b2, 0x17df, 0x17f4, 0x1803, 0x1815, 0x182d, 0x184e, + 0x1869, 0x18a2, 0x18bd, 0x18e4, 0x18ff, 0x1914, 0x192c, 0x1944, + 0x195c, 0x1992, 0x19b6, 0x19da, 0x19ec, 0x1a0a, 0x1a36, 0x1a90, + 0x1a99, 0x1aea, 0x1af6, 0x1aff, 0x1b1d, 0x1b32, 0x1b54, 0x1b7e, + 0x1b96, 0x1ba5, 0x1bb4, 0x1be7, 0x1bf9, 0x1c0e, 0x1c29, 0x1c3b, + 0x1c50, 0x1ca7, 0x1cc8, 0x1cec, 0x1d04, 0x1d25, 0x1d43, 0x1d91, + 0x1daf, 0x1df1, 0x1e30, 0x1e48, 0x1e60, 0x1e8d, 0x1e9c, 0x1eae, // Entry 100 - 13F - 0x1ef3, 0x1f08, 0x1f20, 0x1f59, 0x1f62, 0x1f77, 0x1f9b, 0x1fb9, - 0x1fd7, 0x2001, 0x2022, 0x204f, 0x2073, 0x2094, 0x20bb, 0x20d0, - 0x20fd, 0x211b, 0x2145, 0x2160, 0x21a2, 0x21ba, 0x21de, 0x21fc, - 0x2226, 0x2244, 0x2256, 0x2274, 0x229b, 0x22aa, 0x22d1, 0x22ef, - 0x2313, 0x2337, -} // Size: 604 bytes - -var trRegionStr string = "" + // Size: 3017 bytes + 0x1ebd, 0x1ecc, 0x1eea, 0x1eff, 0x1f17, 0x1f50, 0x1f59, 0x1f6e, + 0x1f92, 0x1fb0, 0x1fce, 0x1ff8, 0x2019, 0x2046, 0x206a, 0x208b, + 0x20b2, 0x20c7, 0x20f4, 0x2112, 0x213c, 0x2157, 0x2199, 0x21b1, + 0x21d5, 0x21f3, 0x221d, 0x223b, 0x224d, 0x226b, 0x2292, 0x22a1, + 0x22c8, 0x22e6, 0x230a, 0x232e, +} // Size: 608 bytes + +const trRegionStr string = "" + // Size: 3033 bytes "Ascension AdasıAndorraBirleşik Arap EmirlikleriAfganistanAntigua ve Barb" + "udaAnguillaArnavutlukErmenistanAngolaAntarktikaArjantinAmerikan SamoasıA" + - "vusturyaAvustralyaArubaÅland AdalarıAzerbaycanBosna HersekBarbadosBangla" + + "vusturyaAvustralyaArubaÅland AdalarıAzerbaycanBosna-HersekBarbadosBangla" + "deşBelçikaBurkina FasoBulgaristanBahreynBurundiBeninSaint BarthelemyBerm" + "udaBruneiBolivyaKarayip HollandaBrezilyaBahamalarButanBouvet AdasıBotsva" + - "naBeyaz RusyaBelizeKanadaCocos (Keeling) AdalarıKongo - KinşasaOrta Afri" + - "ka CumhuriyetiKongo - BrazavilİsviçreFildişi SahiliCook AdalarıŞiliKamer" + - "unÇinKolombiyaClipperton AdasıKosta RikaKübaCape VerdeCuraçaoChristmas A" + - "dasıKıbrısÇek CumhuriyetiAlmanyaDiego GarciaCibutiDanimarkaDominikaDomin" + - "ik CumhuriyetiCezayirSepte ve MelillaEkvadorEstonyaMısırBatı SaharaEritr" + - "eİspanyaEtiyopyaAvrupa BirliğiFinlandiyaFijiFalkland AdalarıMikronezyaFa" + - "roe AdalarıFransaGabonBirleşik KrallıkGrenadaGürcistanFransız GuyanasıGu" + - "ernseyGanaCebelitarıkGrönlandGambiyaGineGuadalupeEkvator GinesiYunanista" + - "nGüney Georgia ve Güney Sandwich AdalarıGuatemalaGuamGine-BissauGuyanaÇi" + - "n Hong Kong ÖYBHeard Adası ve McDonald AdalarıHondurasHırvatistanHaitiMa" + - "caristanKanarya AdalarıEndonezyaİrlandaİsrailMan AdasıHindistanBritanya " + - "Hint Okyanusu TopraklarıIrakİranİzlandaİtalyaJerseyJamaikaÜrdünJaponyaKe" + - "nyaKırgızistanKamboçyaKiribatiKomorlarSaint Kitts ve NevisKuzey KoreGüne" + - "y KoreKuveytCayman AdalarıKazakistanLaosLübnanSaint LuciaLiechtensteinSr" + - "i LankaLiberyaLesotoLitvanyaLüksemburgLetonyaLibyaFasMonakoMoldovaKarada" + - "ğSaint MartinMadagaskarMarshall AdalarıMakedonyaMaliMyanmar (Burma)Moğo" + - "listanÇin Makao ÖYBKuzey Mariana AdalarıMartinikMoritanyaMontserratMalta" + - "MauritiusMaldivlerMalaviMeksikaMalezyaMozambikNamibyaYeni KaledonyaNijer" + - "Norfolk AdasıNijeryaNikaraguaHollandaNorveçNepalNauruNiueYeni ZelandaUmm" + - "anPanamaPeruFransız PolinezyasıPapua Yeni GineFilipinlerPakistanPolonyaS" + - "aint Pierre ve MiquelonPitcairn AdalarıPorto RikoFilistin BölgeleriPorte" + - "kizPalauParaguayKatarUzak OkyanusyaRéunionRomanyaSırbistanRusyaRuandaSuu" + - "di ArabistanSolomon AdalarıSeyşellerSudanİsveçSingapurSaint HelenaSloven" + - "yaSvalbard ve Jan Mayen AdalarıSlovakyaSierra LeoneSan MarinoSenegalSoma" + - "liSurinamGüney SudanSão Tomé ve PríncipeEl SalvadorSint MaartenSuriyeSva" + - "zilandTristan da CunhaTurks ve Caicos AdalarıÇadFransız Güney Toprakları" + - "TogoTaylandTacikistanTokelauTimor-LesteTürkmenistanTunusTongaTürkiyeTrin" + - "idad ve TobagoTuvaluTayvanTanzanyaUkraynaUgandaABD Uzak AdalarıABDUrugua" + - "yÖzbekistanVatikanSaint Vincent ve GrenadinlerVenezuelaBritanya Virjin A" + - "dalarıABD Virjin AdalarıVietnamVanuatuWallis ve Futuna AdalarıSamoaKosov" + - "aYemenMayotteGüney AfrikaZambiyaZimbabveBilinmeyen BölgeDünyaAfrikaKuzey" + - " AmerikaGüney AmerikaOkyanusyaBatı AfrikaOrta AmerikaDoğu AfrikaKuzey Af" + - "rikaOrta AfrikaAfrika’nın GüneyiAmerikaAmerika’nın KuzeyiKarayiplerDoğu " + - "AsyaGüney AsyaGüneydoğu AsyaGüney AvrupaAvustralasyaMelanezyaMikronezya " + - "BölgesiPolinezyaAsyaOrta AsyaBatı AsyaAvrupaDoğu AvrupaKuzey AvrupaBatı " + - "AvrupaLatin Amerika" - -var trRegionIdx = []uint16{ // 290 elements + "naBelarusBelizeKanadaCocos (Keeling) AdalarıKongo - KinşasaOrta Afrika C" + + "umhuriyetiKongo - BrazavilİsviçreFildişi SahiliCook AdalarıŞiliKamerunÇi" + + "nKolombiyaClipperton AdasıKosta RikaKübaCape VerdeCuraçaoChristmas Adası" + + "KıbrısÇekyaAlmanyaDiego GarciaCibutiDanimarkaDominikaDominik Cumhuriyeti" + + "CezayirSepte ve MelillaEkvadorEstonyaMısırBatı SahraEritreİspanyaEtiyopy" + + "aAvrupa BirliğiFinlandiyaFijiFalkland AdalarıMikronezyaFaroe AdalarıFran" + + "saGabonBirleşik KrallıkGrenadaGürcistanFransız GuyanasıGuernseyGanaCebel" + + "itarıkGrönlandGambiyaGineGuadalupeEkvator GinesiYunanistanGüney Georgia " + + "ve Güney Sandwich AdalarıGuatemalaGuamGine-BissauGuyanaÇin Hong Kong ÖİB" + + "Heard Adası ve McDonald AdalarıHondurasHırvatistanHaitiMacaristanKanarya" + + " AdalarıEndonezyaİrlandaİsrailMan AdasıHindistanBritanya Hint Okyanusu T" + + "opraklarıIrakİranİzlandaİtalyaJerseyJamaikaÜrdünJaponyaKenyaKırgızistanK" + + "amboçyaKiribatiKomorlarSaint Kitts ve NevisKuzey KoreGüney KoreKuveytCay" + + "man AdalarıKazakistanLaosLübnanSaint LuciaLiechtensteinSri LankaLiberyaL" + + "esothoLitvanyaLüksemburgLetonyaLibyaFasMonakoMoldovaKaradağSaint MartinM" + + "adagaskarMarshall AdalarıMakedonyaMaliMyanmar (Burma)MoğolistanÇin Makao" + + " ÖİBKuzey Mariana AdalarıMartinikMoritanyaMontserratMaltaMauritiusMaldiv" + + "lerMalaviMeksikaMalezyaMozambikNamibyaYeni KaledonyaNijerNorfolk AdasıNi" + + "jeryaNikaraguaHollandaNorveçNepalNauruNiueYeni ZelandaUmmanPanamaPeruFra" + + "nsız PolinezyasıPapua Yeni GineFilipinlerPakistanPolonyaSaint Pierre ve " + + "MiquelonPitcairn AdalarıPorto RikoFilistin BölgeleriPortekizPalauParagua" + + "yKatarUzak OkyanusyaRéunionRomanyaSırbistanRusyaRuandaSuudi ArabistanSol" + + "omon AdalarıSeyşellerSudanİsveçSingapurSaint HelenaSlovenyaSvalbard ve J" + + "an MayenSlovakyaSierra LeoneSan MarinoSenegalSomaliSurinamGüney SudanSão" + + " Tomé ve PríncipeEl SalvadorSint MaartenSuriyeSvazilandTristan da CunhaT" + + "urks ve Caicos AdalarıÇadFransız Güney TopraklarıTogoTaylandTacikistanTo" + + "kelauTimor-LesteTürkmenistanTunusTongaTürkiyeTrinidad ve TobagoTuvaluTay" + + "vanTanzanyaUkraynaUgandaABD Uzak AdalarıBirleşmiş MilletlerAmerika Birle" + + "şik DevletleriUruguayÖzbekistanVatikanSaint Vincent ve GrenadinlerVenez" + + "uelaBritanya Virjin AdalarıABD Virjin AdalarıVietnamVanuatuWallis ve Fut" + + "unaSamoaKosovaYemenMayotteGüney AfrikaZambiyaZimbabveBilinmeyen BölgeDün" + + "yaAfrikaKuzey AmerikaGüney AmerikaOkyanusyaBatı AfrikaOrta AmerikaDoğu A" + + "frikaKuzey AfrikaOrta AfrikaAfrika’nın GüneyiAmerikaAmerika’nın KuzeyiKa" + + "rayiplerDoğu AsyaGüney AsyaGüneydoğu AsyaGüney AvrupaAvustralasyaMelanez" + + "yaMikronezya BölgesiPolinezyaAsyaOrta AsyaBatı AsyaAvrupaDoğu AvrupaKuze" + + "y AvrupaBatı AvrupaLatin Amerika" + +var trRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0017, 0x0031, 0x003b, 0x004d, 0x0055, 0x005f, 0x0069, 0x006f, 0x0079, 0x0081, 0x0092, 0x009b, 0x00a5, 0x00aa, 0x00b9, 0x00c3, 0x00cf, 0x00d7, 0x00e1, 0x00e9, 0x00f5, 0x0100, 0x0107, 0x010e, 0x0113, 0x0123, 0x012a, 0x0130, 0x0137, 0x0147, - 0x014f, 0x0158, 0x015d, 0x016a, 0x0172, 0x017d, 0x0183, 0x0189, - 0x01a1, 0x01b1, 0x01c8, 0x01d8, 0x01e1, 0x01f0, 0x01fd, 0x0202, - 0x0209, 0x020d, 0x0216, 0x0227, 0x0231, 0x0236, 0x0240, 0x0248, - 0x0258, 0x0260, 0x0270, 0x0277, 0x0283, 0x0289, 0x0292, 0x029a, + 0x014f, 0x0158, 0x015d, 0x016a, 0x0172, 0x0179, 0x017f, 0x0185, + 0x019d, 0x01ad, 0x01c4, 0x01d4, 0x01dd, 0x01ec, 0x01f9, 0x01fe, + 0x0205, 0x0209, 0x0212, 0x0223, 0x022d, 0x0232, 0x023c, 0x0244, + 0x0254, 0x025c, 0x0262, 0x0269, 0x0275, 0x027b, 0x0284, 0x028c, // Entry 40 - 7F - 0x02ad, 0x02b4, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e5, 0x02eb, - 0x02f3, 0x02fb, 0x030a, 0x0314, 0x0318, 0x0329, 0x0333, 0x0341, - 0x0347, 0x034c, 0x035e, 0x0365, 0x036f, 0x0381, 0x0389, 0x038d, - 0x0399, 0x03a2, 0x03a9, 0x03ad, 0x03b6, 0x03c4, 0x03ce, 0x03f8, - 0x0401, 0x0405, 0x0410, 0x0416, 0x0429, 0x044a, 0x0452, 0x045e, - 0x0463, 0x046d, 0x047d, 0x0486, 0x048e, 0x0495, 0x049f, 0x04a8, - 0x04ca, 0x04ce, 0x04d3, 0x04db, 0x04e2, 0x04e8, 0x04ef, 0x04f6, - 0x04fd, 0x0502, 0x050f, 0x0518, 0x0520, 0x0528, 0x053c, 0x0546, + 0x029f, 0x02a6, 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d6, 0x02dc, + 0x02e4, 0x02ec, 0x02fb, 0x02fb, 0x0305, 0x0309, 0x031a, 0x0324, + 0x0332, 0x0338, 0x033d, 0x034f, 0x0356, 0x0360, 0x0372, 0x037a, + 0x037e, 0x038a, 0x0393, 0x039a, 0x039e, 0x03a7, 0x03b5, 0x03bf, + 0x03e9, 0x03f2, 0x03f6, 0x0401, 0x0407, 0x041b, 0x043c, 0x0444, + 0x0450, 0x0455, 0x045f, 0x046f, 0x0478, 0x0480, 0x0487, 0x0491, + 0x049a, 0x04bc, 0x04c0, 0x04c5, 0x04cd, 0x04d4, 0x04da, 0x04e1, + 0x04e8, 0x04ef, 0x04f4, 0x0501, 0x050a, 0x0512, 0x051a, 0x052e, // Entry 80 - BF - 0x0551, 0x0557, 0x0566, 0x0570, 0x0574, 0x057b, 0x0586, 0x0593, - 0x059c, 0x05a3, 0x05a9, 0x05b1, 0x05bc, 0x05c3, 0x05c8, 0x05cb, - 0x05d1, 0x05d8, 0x05e0, 0x05ec, 0x05f6, 0x0607, 0x0610, 0x0614, - 0x0623, 0x062e, 0x063d, 0x0653, 0x065b, 0x0664, 0x066e, 0x0673, - 0x067c, 0x0685, 0x068b, 0x0692, 0x0699, 0x06a1, 0x06a8, 0x06b6, - 0x06bb, 0x06c9, 0x06d0, 0x06d9, 0x06e1, 0x06e8, 0x06ed, 0x06f2, - 0x06f6, 0x0702, 0x0707, 0x070d, 0x0711, 0x0726, 0x0735, 0x073f, - 0x0747, 0x074e, 0x0766, 0x0777, 0x0781, 0x0794, 0x079c, 0x07a1, + 0x0538, 0x0543, 0x0549, 0x0558, 0x0562, 0x0566, 0x056d, 0x0578, + 0x0585, 0x058e, 0x0595, 0x059c, 0x05a4, 0x05af, 0x05b6, 0x05bb, + 0x05be, 0x05c4, 0x05cb, 0x05d3, 0x05df, 0x05e9, 0x05fa, 0x0603, + 0x0607, 0x0616, 0x0621, 0x0631, 0x0647, 0x064f, 0x0658, 0x0662, + 0x0667, 0x0670, 0x0679, 0x067f, 0x0686, 0x068d, 0x0695, 0x069c, + 0x06aa, 0x06af, 0x06bd, 0x06c4, 0x06cd, 0x06d5, 0x06dc, 0x06e1, + 0x06e6, 0x06ea, 0x06f6, 0x06fb, 0x0701, 0x0705, 0x071a, 0x0729, + 0x0733, 0x073b, 0x0742, 0x075a, 0x076b, 0x0775, 0x0788, 0x0790, // Entry C0 - FF - 0x07a9, 0x07ae, 0x07bc, 0x07c4, 0x07cb, 0x07d5, 0x07da, 0x07e0, - 0x07ef, 0x07ff, 0x0809, 0x080e, 0x0815, 0x081d, 0x0829, 0x0831, - 0x084f, 0x0857, 0x0863, 0x086d, 0x0874, 0x087a, 0x0881, 0x088d, - 0x08a4, 0x08af, 0x08bb, 0x08c1, 0x08ca, 0x08da, 0x08f2, 0x08f6, - 0x0911, 0x0915, 0x091c, 0x0926, 0x092d, 0x0938, 0x0945, 0x094a, - 0x094f, 0x0957, 0x0969, 0x096f, 0x0975, 0x097d, 0x0984, 0x098a, - 0x099b, 0x099e, 0x09a5, 0x09b0, 0x09b7, 0x09d3, 0x09dc, 0x09f4, - 0x0a07, 0x0a0e, 0x0a15, 0x0a2e, 0x0a33, 0x0a39, 0x0a3e, 0x0a45, + 0x0795, 0x079d, 0x07a2, 0x07b0, 0x07b8, 0x07bf, 0x07c9, 0x07ce, + 0x07d4, 0x07e3, 0x07f3, 0x07fd, 0x0802, 0x0809, 0x0811, 0x081d, + 0x0825, 0x083a, 0x0842, 0x084e, 0x0858, 0x085f, 0x0865, 0x086c, + 0x0878, 0x088f, 0x089a, 0x08a6, 0x08ac, 0x08b5, 0x08c5, 0x08dd, + 0x08e1, 0x08fc, 0x0900, 0x0907, 0x0911, 0x0918, 0x0923, 0x0930, + 0x0935, 0x093a, 0x0942, 0x0954, 0x095a, 0x0960, 0x0968, 0x096f, + 0x0975, 0x0986, 0x099b, 0x09b7, 0x09be, 0x09c9, 0x09d0, 0x09ec, + 0x09f5, 0x0a0d, 0x0a20, 0x0a27, 0x0a2e, 0x0a3e, 0x0a43, 0x0a49, // Entry 100 - 13F - 0x0a52, 0x0a59, 0x0a61, 0x0a72, 0x0a78, 0x0a7e, 0x0a8b, 0x0a99, - 0x0aa2, 0x0aae, 0x0aba, 0x0ac6, 0x0ad2, 0x0add, 0x0af2, 0x0af9, - 0x0b0e, 0x0b18, 0x0b22, 0x0b2d, 0x0b3d, 0x0b4a, 0x0b56, 0x0b5f, - 0x0b72, 0x0b7b, 0x0b7f, 0x0b88, 0x0b92, 0x0b98, 0x0ba4, 0x0bb0, - 0x0bbc, 0x0bc9, -} // Size: 604 bytes - -var ukRegionStr string = "" + // Size: 6084 bytes + 0x0a4e, 0x0a55, 0x0a62, 0x0a69, 0x0a71, 0x0a82, 0x0a88, 0x0a8e, + 0x0a9b, 0x0aa9, 0x0ab2, 0x0abe, 0x0aca, 0x0ad6, 0x0ae2, 0x0aed, + 0x0b02, 0x0b09, 0x0b1e, 0x0b28, 0x0b32, 0x0b3d, 0x0b4d, 0x0b5a, + 0x0b66, 0x0b6f, 0x0b82, 0x0b8b, 0x0b8f, 0x0b98, 0x0ba2, 0x0ba8, + 0x0bb4, 0x0bc0, 0x0bcc, 0x0bd9, +} // Size: 608 bytes + +const ukRegionStr string = "" + // Size: 6139 bytes "Острів ВознесінняАндорраОбʼєднані Арабські ЕміратиАфганістанАнтигуа і Ба" + "рбудаАнгільяАлбаніяВірменіяАнголаАнтарктикаАргентинаАмериканське СамоаА" + "встріяАвстраліяАрубаАландські островиАзербайджанБоснія і ГерцоговинаБар" + @@ -44083,10 +49187,10 @@ var ukRegionStr string = "" + // Size: 6084 bytes "яБагамські ОстровиБутанОстрів БувеБотсванаБілорусьБелізКанадаКокосові (" + "Кілінгові) островиКонго – КіншасаЦентральноафриканська РеспублікаКонго " + "– БраззавільШвейцаріяКот-д’ІвуарОстрови КукаЧиліКамерунКитайКолумбіяОс" + - "трів КліппертонКоста-РикаКубаКабо ВердеКюрасаоОстрів РіздваКіпрЧехіяНім" + + "трів КліппертонКоста-РикаКубаКабо-ВердеКюрасаоОстрів РіздваКіпрЧехіяНім" + "еччинаДієго-ГарсіяДжибутіДаніяДомінікаДомініканська РеспублікаАлжирСеут" + "а і МелільяЕквадорЕстоніяЄгипетЗахідна СахараЕритреяІспаніяЕфіопіяЄвроп" + - "ейський СоюзФінляндіяФіджіФолклендські островиМікронезіяФарерські остро" + + "ейський СоюзФінляндіяФіджіФолклендські островиМікронезіяФарерські Остро" + "виФранціяГабонВелика БританіяГренадаГрузіяФранцузька ГвіанаГернсіГанаГі" + "бралтарГренландіяГамбіяГвінеяГваделупаЕкваторіальна ГвінеяГреціяПівденн" + "а Джорджія та Південні Сандвічеві островиГватемалаГуамГвінея-БісауГаяна" + @@ -44097,30 +49201,31 @@ var ukRegionStr string = "" + // Size: 6084 bytes "сПівнічна КореяПівденна КореяКувейтКайманові островиКазахстанЛаосЛіванС" + "ент-ЛюсіяЛіхтенштейнШрі-ЛанкаЛіберіяЛесотоЛитваЛюксембургЛатвіяЛівіяМар" + "оккоМонакоМолдоваЧорногоріяСен-МартенМадагаскарМаршаллові ОстровиМакедо" + - "ніяМаліМʼянма (Бірма)МонголіяМакао, О.А.Р КитаюПівнічні Маріанські остр" + + "ніяМаліМʼянма (Бірма)МонголіяМакао, О.А.Р КитаюПівнічні Маріанські Остр" + "овиМартинікаМавританіяМонтсерратМальтаМаврикійМальдівиМалавіМексикаМала" + "йзіяМозамбікНамібіяНова КаледоніяНігерОстрів НорфолкНігеріяНікарагуаНід" + "ерландиНорвегіяНепалНауруНіуеНова ЗеландіяОманПанамаПеруФранцузька Полі" + "незіяПапуа Нова ГвінеяФіліппіниПакистанПольщаСен-Пʼєр і МікелонОстрови " + "ПіткернПуерто-РикоПалестинські територіїПортугаліяПалауПарагвайКатарВід" + "далені острови ОкеаніїРеюньйонРумуніяСербіяРосіяРуандаСаудівська Аравія" + - "Соломонові ОстровиСейшельські островиСуданШвеціяСінгапурОстрів Святої Є" + + "Соломонові ОстровиСейшельські ОстровиСуданШвеціяСінгапурОстрів Святої Є" + "лениСловеніяОстрови Свальбард і Ян-МаєнСловаччинаСьєрра-ЛеонеСан-Марино" + "СенегалСомаліСуринамПівденний СуданСан-Томе і ПрінсіпіСальвадорСінт-Мар" + "тенСиріяСвазілендТрістан-да-КуньяОстрови Теркс і КайкосЧадФранцузькі Пі" + "вденні ТериторіїТогоТаїландТаджикистанТокелауТимор-ЛештіТуркменістанТун" + "ісТонгаТуреччинаТринідад і ТобагоТувалуТайваньТанзаніяУкраїнаУгандаВідд" + - "алені острови СШАСШАУругвайУзбекистанВатиканСент-Вінсент і ГренадиниВен" + - "есуелаБританські Віргінські островиВіргінські острови, СШАВʼєтнамВануат" + - "уВолліс і ФутунаСамоаКосовоЄменМайоттаПівденно-Африканська РеспублікаЗа" + - "мбіяЗімбабвеНевідомий регіонСвітАфрикаПівнічна АмерикаПівденна АмерикаО" + - "кеаніяЗахідна АфрикаЦентральна АмерикаСхідна АфрикаПівнічна АфрикаЦентр" + - "альна АфрикаПівденна АфрикаАмерикаПівнічна Америка (регіон)Карибський б" + - "асейнСхідна АзіяПівденна АзіяПівденно-Східна АзіяПівденна ЄвропаАвстрал" + - "азіяМеланезіяМікронезійський регіонПолінезіяАзіяЦентральна АзіяЗахідна " + - "АзіяЄвропаСхідна ЄвропаПівнічна ЄвропаЗахідна ЄвропаЛатинська Америка" - -var ukRegionIdx = []uint16{ // 290 elements + "алені острови СШАОрганізація Об’єднаних НаційСШАУругвайУзбекистанВатика" + + "нСент-Вінсент і ГренадиниВенесуелаБританські Віргінські островиВіргінсь" + + "кі острови, СШАВʼєтнамВануатуВолліс і ФутунаСамоаКосовоЄменМайоттаПівде" + + "нно-Африканська РеспублікаЗамбіяЗімбабвеНевідомий регіонСвітАфрикаПівні" + + "чна АмерикаПівденна АмерикаОкеаніяЗахідна АфрикаЦентральна АмерикаСхідн" + + "а АфрикаПівнічна АфрикаЦентральна АфрикаПівденна АфрикаАмерикаПівнічна " + + "Америка (регіон)Карибський басейнСхідна АзіяПівденна АзіяПівденно-Східн" + + "а АзіяПівденна ЄвропаАвстралазіяМеланезіяМікронезійський регіонПолінезі" + + "яАзіяЦентральна АзіяЗахідна АзіяЄвропаСхідна ЄвропаПівнічна ЄвропаЗахід" + + "на ЄвропаЛатинська Америка" + +var ukRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0021, 0x002f, 0x0061, 0x0075, 0x0095, 0x00a3, 0x00b1, 0x00c1, 0x00cd, 0x00e1, 0x00f3, 0x0116, 0x0124, 0x0136, 0x0140, @@ -44132,321 +49237,322 @@ var ukRegionIdx = []uint16{ // 290 elements 0x04ca, 0x04d2, 0x04dc, 0x04ee, 0x0505, 0x0513, 0x051d, 0x052d, // Entry 40 - 7F 0x055c, 0x0566, 0x0582, 0x0590, 0x059e, 0x05aa, 0x05c5, 0x05d3, - 0x05e1, 0x05ef, 0x0610, 0x0622, 0x062c, 0x0653, 0x0667, 0x0688, - 0x0696, 0x06a0, 0x06bd, 0x06cb, 0x06d7, 0x06f8, 0x0704, 0x070c, - 0x071e, 0x0732, 0x073e, 0x074a, 0x075c, 0x0783, 0x078f, 0x07ea, - 0x07fc, 0x0804, 0x081b, 0x0825, 0x0849, 0x0879, 0x0889, 0x0899, - 0x08a3, 0x08b3, 0x08d4, 0x08e6, 0x08f6, 0x0904, 0x0917, 0x0921, - 0x096f, 0x0977, 0x097f, 0x098f, 0x099b, 0x09a7, 0x09b3, 0x09c3, - 0x09cf, 0x09d9, 0x09ed, 0x09fd, 0x0a0d, 0x0a2e, 0x0a4d, 0x0a68, + 0x05e1, 0x05ef, 0x0610, 0x0610, 0x0622, 0x062c, 0x0653, 0x0667, + 0x0688, 0x0696, 0x06a0, 0x06bd, 0x06cb, 0x06d7, 0x06f8, 0x0704, + 0x070c, 0x071e, 0x0732, 0x073e, 0x074a, 0x075c, 0x0783, 0x078f, + 0x07ea, 0x07fc, 0x0804, 0x081b, 0x0825, 0x0849, 0x0879, 0x0889, + 0x0899, 0x08a3, 0x08b3, 0x08d4, 0x08e6, 0x08f6, 0x0904, 0x0917, + 0x0921, 0x096f, 0x0977, 0x097f, 0x098f, 0x099b, 0x09a7, 0x09b3, + 0x09c3, 0x09cf, 0x09d9, 0x09ed, 0x09fd, 0x0a0d, 0x0a2e, 0x0a4d, // Entry 80 - BF - 0x0a83, 0x0a8f, 0x0ab0, 0x0ac2, 0x0aca, 0x0ad4, 0x0ae7, 0x0afd, - 0x0b0e, 0x0b1c, 0x0b28, 0x0b32, 0x0b46, 0x0b52, 0x0b5c, 0x0b6a, - 0x0b76, 0x0b84, 0x0b98, 0x0bab, 0x0bbf, 0x0be2, 0x0bf4, 0x0bfc, - 0x0c15, 0x0c25, 0x0c44, 0x0c78, 0x0c8a, 0x0c9e, 0x0cb2, 0x0cbe, - 0x0cce, 0x0cde, 0x0cea, 0x0cf8, 0x0d08, 0x0d18, 0x0d26, 0x0d41, - 0x0d4b, 0x0d66, 0x0d74, 0x0d86, 0x0d9a, 0x0daa, 0x0db4, 0x0dbe, - 0x0dc6, 0x0ddf, 0x0de7, 0x0df3, 0x0dfb, 0x0e22, 0x0e42, 0x0e54, - 0x0e64, 0x0e70, 0x0e91, 0x0eae, 0x0ec3, 0x0eee, 0x0f02, 0x0f0c, + 0x0a68, 0x0a83, 0x0a8f, 0x0ab0, 0x0ac2, 0x0aca, 0x0ad4, 0x0ae7, + 0x0afd, 0x0b0e, 0x0b1c, 0x0b28, 0x0b32, 0x0b46, 0x0b52, 0x0b5c, + 0x0b6a, 0x0b76, 0x0b84, 0x0b98, 0x0bab, 0x0bbf, 0x0be2, 0x0bf4, + 0x0bfc, 0x0c15, 0x0c25, 0x0c44, 0x0c78, 0x0c8a, 0x0c9e, 0x0cb2, + 0x0cbe, 0x0cce, 0x0cde, 0x0cea, 0x0cf8, 0x0d08, 0x0d18, 0x0d26, + 0x0d41, 0x0d4b, 0x0d66, 0x0d74, 0x0d86, 0x0d9a, 0x0daa, 0x0db4, + 0x0dbe, 0x0dc6, 0x0ddf, 0x0de7, 0x0df3, 0x0dfb, 0x0e22, 0x0e42, + 0x0e54, 0x0e64, 0x0e70, 0x0e91, 0x0eae, 0x0ec3, 0x0eee, 0x0f02, // Entry C0 - FF - 0x0f1c, 0x0f26, 0x0f56, 0x0f66, 0x0f74, 0x0f80, 0x0f8a, 0x0f96, - 0x0fb7, 0x0fda, 0x0fff, 0x1009, 0x1015, 0x1025, 0x1049, 0x1059, - 0x108b, 0x109f, 0x10b6, 0x10c9, 0x10d7, 0x10e3, 0x10f1, 0x110e, - 0x1131, 0x1143, 0x1158, 0x1162, 0x1174, 0x1192, 0x11bb, 0x11c1, - 0x11f9, 0x1201, 0x120f, 0x1225, 0x1233, 0x1248, 0x1260, 0x126a, - 0x1274, 0x1286, 0x12a6, 0x12b2, 0x12c0, 0x12d0, 0x12de, 0x12ea, - 0x1312, 0x1318, 0x1326, 0x133a, 0x1348, 0x1375, 0x1387, 0x13bf, - 0x13ea, 0x13f8, 0x1406, 0x1422, 0x142c, 0x1438, 0x1440, 0x144e, + 0x0f0c, 0x0f1c, 0x0f26, 0x0f56, 0x0f66, 0x0f74, 0x0f80, 0x0f8a, + 0x0f96, 0x0fb7, 0x0fda, 0x0fff, 0x1009, 0x1015, 0x1025, 0x1049, + 0x1059, 0x108b, 0x109f, 0x10b6, 0x10c9, 0x10d7, 0x10e3, 0x10f1, + 0x110e, 0x1131, 0x1143, 0x1158, 0x1162, 0x1174, 0x1192, 0x11bb, + 0x11c1, 0x11f9, 0x1201, 0x120f, 0x1225, 0x1233, 0x1248, 0x1260, + 0x126a, 0x1274, 0x1286, 0x12a6, 0x12b2, 0x12c0, 0x12d0, 0x12de, + 0x12ea, 0x1312, 0x1349, 0x134f, 0x135d, 0x1371, 0x137f, 0x13ac, + 0x13be, 0x13f6, 0x1421, 0x142f, 0x143d, 0x1459, 0x1463, 0x146f, // Entry 100 - 13F - 0x148a, 0x1496, 0x14a6, 0x14c5, 0x14cd, 0x14d9, 0x14f8, 0x1517, - 0x1525, 0x1540, 0x1563, 0x157c, 0x1599, 0x15ba, 0x15d7, 0x15e5, - 0x1613, 0x1634, 0x1649, 0x1662, 0x1688, 0x16a5, 0x16bb, 0x16cd, - 0x16f8, 0x170a, 0x1712, 0x172f, 0x1746, 0x1752, 0x176b, 0x1788, - 0x17a3, 0x17c4, -} // Size: 604 bytes - -var urRegionStr string = "" + // Size: 5126 bytes + 0x1477, 0x1485, 0x14c1, 0x14cd, 0x14dd, 0x14fc, 0x1504, 0x1510, + 0x152f, 0x154e, 0x155c, 0x1577, 0x159a, 0x15b3, 0x15d0, 0x15f1, + 0x160e, 0x161c, 0x164a, 0x166b, 0x1680, 0x1699, 0x16bf, 0x16dc, + 0x16f2, 0x1704, 0x172f, 0x1741, 0x1749, 0x1766, 0x177d, 0x1789, + 0x17a2, 0x17bf, 0x17da, 0x17fb, +} // Size: 608 bytes + +const urRegionStr string = "" + // Size: 5112 bytes "اسینشن آئلینڈانڈورامتحدہ عرب اماراتافغانستانانٹیگوا اور باربوداانگوئیلاا" + "لبانیہآرمینیاانگولاانٹارکٹیکاارجنٹیناامریکی ساموآآسٹریاآسٹریلیااروباآلی" + - "نڈ آئلینڈزآذربائجانبوسنیا اور ہرزیگووینابارباڈوسبنگلہ دیشبیلجیمبرکینا ف" + - "اسوبلغاریہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونئیبولیویاکریبیائی نیدرل" + - "ینڈزبرازیلبہاماسبھوٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائزکینیڈاکوکوس (کیل" + - "نگ) جزائرکانگو - کنشاساوسط افریقی جمہوریہکانگو - برازاویلےسوئٹزر لینڈکو" + - "ٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچینکولمبیاکلپرٹن آئلینڈکوسٹا ریکاکیوباکیپ" + - " ورڈیکیوراکاؤکرسمس آئلینڈقبرصچیک جمہوریہجرمنیڈائجو گارسیاجبوتیڈنمارکڈومن" + - "یکاڈومنیکن جمہوریہالجیریاسیئوٹا اور میلیلاایکواڈوراسٹونیامصرمغربی صحارا" + - "اریٹیریاہسپانیہایتھوپیایوروپی یونینفن لینڈفجیفاکلینڈ جزائرمائکرونیشیاجز" + - "ائر فاروفرانسگیبونسلطنت متحدہگریناڈاجارجیافرینچ گیاناگوئرنسیگھاناجبل ال" + - "طارقگرین لینڈگامبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی جارجیا اور جنوبی " + - "سینڈوچ جزائرگواٹے مالاگوآمگنی بساؤگیاناہانگ کانگ SAR چینہیئرڈ آئلینڈ او" + - "ر میکڈونالڈ آئلینڈزہونڈاروسکروشیاہیتیہنگریکینری آئلینڈزانڈونیشیاآئرلینڈ" + - "اسرائیلآئل آف مینبھارتبرطانوی ہندوستانی سمندری خطہعراقایرانآئس لینڈاٹلی" + - "جرسیجمائیکااردنجاپانکینیاکرغزستانکمبوڈیاکریباتیکوموروسسینٹ کٹس اور نیوی" + - "سشمالی کوریاجنوبی کوریاکویتکیمین آئلینڈزقزاخستانلاؤسلبنانسینٹ لوسیالیشٹ" + - "نسٹائنسری لنکالائبیریالیسوتھولتھوانیالگژمبرگلٹویالیبیامراقشموناکومالدوو" + - "امونٹے نیگروسینٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیمیانمار (برما)منگو" + - "لیامکاؤ SAR چینشمالی ماریانا آئلینڈزمارٹینکموریطانیہمونٹسیراٹمالٹاماریش" + - "سمالدیپملاویمیکسیکوملیشیاموزمبیقنامیبیانیو کلیڈونیانائجرنارفوک آئلینڈنا" + - "ئجیریانکاراگووانیدر لینڈزناروےنیپالنؤرونیئونیوزی ینڈعمانپنامہپیروفرانسی" + - "سی پولینیشیاپاپوآ نیو گنیفلپائنیپاکستانپولینڈسینٹ پیئر اور میکلیئونپٹکا" + - "ئرن جزائرپیورٹو ریکوفلسطینی خطےپرتگالپلاؤپیراگوئےقطربیرونی اوشیانیاری ی" + - "ونینرومانیاسربیاروسروانڈاسعودی عربسولومن آئلینڈزسشلیزسوڈانسویڈنسنگاپورس" + - "ینٹ ہیلیناسلووینیاسوالبرڈ اور جان ماینسلوواکیہسیئر لیونسان مارینوسینیگل" + - "صومالیہسورینامجنوبی سوڈانساؤ ٹوم اور پرنسپےال سلواڈورسنٹ مارٹنشامسوازی " + - "لینڈٹرسٹن ڈا کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنوبی خطےٹوگوتھائی " + - "لینڈتاجکستانٹوکیلاؤتیمور لیسٹترکمانستانتیونیسیاٹونگاترکیترینیداد اور ٹو" + - "باگوٹووالوتائیوانتنزانیہیوکرینیوگانڈاامریکہ سے باہر کے چھوٹے جزائزریاست" + - "ہائے متحدہیوروگوئےازبکستانواٹیکن سٹیسینٹ ونسنٹ اور گرینیڈائنزوینزوئیلاب" + - "رٹش ورجن آئلینڈزامریکی ورجن آئلینڈزویتناموینوآٹوویلیز اور فیوٹیوناساموآ" + - "کوسووویمنمایوٹجنوبی افریقہزامبیازمبابوےنامعلوم علاقہدنیاافریقہشمالی امر" + - "یکہجنوبی امریکہاوشیانیامغربی افریقہوسطی امریکہمشرقی افریقہشمالی افریقہو" + - "سطی افریقہجنوبی افریقہ کے علاقہامیریکازشمالی امریکہ کا علاقہکریبیائیمشر" + - "قی ایشیاجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآسٹریلیشیامالینیشیامائکرون" + - "یشیائی علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرقی یورپشمالی یورپ" + - "مغربی یورپلاطینی امریکہ" - -var urRegionIdx = []uint16{ // 290 elements + "نڈ آئلینڈزآذر بائیجانبوسنیا اور ہرزیگووینابارباڈوسبنگلہ دیشبیلجیمبرکینا" + + " فاسوبلغاریہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونائیبولیویاکریبیائی نید" + + "رلینڈزبرازیلبہاماسبھوٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائزکینیڈاکوکوس (ک" + + "یلنگ) جزائرکانگو - کنشاساوسط افریقی جمہوریہکانگو - برازاویلےسوئٹزر لینڈ" + + "کوٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچینکولمبیاکلپرٹن آئلینڈکوسٹا ریکاکیوباک" + + "یپ ورڈیکیوراکاؤجزیرہ کرسمسقبرصزکھیاجرمنیڈائجو گارسیاجبوتیڈنمارکڈومنیکاڈ" + + "ومنیکن جمہوریہالجیریاسیئوٹا اور میلیلاایکواڈوراسٹونیامصرمغربی صحارااریٹ" + + "یریاہسپانیہایتھوپیایوروپی یونینفن لینڈفجیفاکلینڈ جزائرمائکرونیشیاجزائر " + + "فاروفرانسگیبونسلطنت متحدہگریناڈاجارجیافرینچ گیاناگوئرنسیگھاناجبل الطارق" + + "گرین لینڈگیمبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی جارجیا اور جنوبی سینڈ" + + "وچ جزائرگواٹے مالاگوامگنی بساؤگیاناہانگ کانگ SAR چینہیرڈ جزیرہ و میکڈول" + + "ینڈ جزائرہونڈاروسکروشیاہیٹیہنگریکینری آئلینڈزانڈونیشیاآئرلینڈاسرائیلآئل" + + " آف مینبھارتبرطانوی بحر ہند کا علاقہعراقایرانآئس لینڈاٹلیجرسیجمائیکااردن" + + "جاپانکینیاکرغزستانکمبوڈیاکریباتیکوموروسسینٹ کٹس اور نیویسشمالی کوریاجنو" + + "بی کوریاکویتکیمین آئلینڈزقازقستانلاؤسلبنانسینٹ لوسیالیشٹنسٹائنسری لنکال" + + "ائبیریالیسوتھولیتھونیالکسمبرگلٹویالیبیامراکشموناکومالدووامونٹے نیگروسین" + + "ٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیمیانمار (برما)منگولیامکاؤ SAR چین" + + "شمالی ماریانا آئلینڈزمارٹینکموریطانیہمونٹسیراٹمالٹاماریشسمالدیپملاویمیک" + + "سیکوملائشیاموزمبیقنامیبیانیو کلیڈونیانائجرنارفوک آئلینڈنائجیریانکاراگوو" + + "انیدر لینڈزناروےنیپالنؤرونیئونیوزی لینڈعمانپانامہپیروفرانسیسی پولینیشیا" + + "پاپوآ نیو گنیفلپائنپاکستانپولینڈسینٹ پیئر اور میکلیئونپٹکائرن جزائرپیور" + + "ٹو ریکوفلسطینی خطےپرتگالپلاؤپیراگوئےقطربیرونی اوشیانیاری یونینرومانیہسر" + + "بیاروسروانڈاسعودی عربسولومن آئلینڈزسشلیزسوڈانسویڈنسنگاپورسینٹ ہیلیناسلو" + + "وینیاسوالبرڈ اور جان ماینسلوواکیہسیئر لیونسان مارینوسینیگلصومالیہسورینا" + + "مجنوبی سوڈانساؤ ٹوم اور پرنسپےال سلواڈورسنٹ مارٹنشامسوازی لینڈٹرسٹن ڈا " + + "کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنوبی خطےٹوگوتھائی لینڈتاجکستانٹ" + + "وکیلاؤتیمور لیسٹترکمانستانتونسٹونگاترکیترینیداد اور ٹوباگوٹووالوتائیوان" + + "تنزانیہیوکرینیوگنڈاامریکہ سے باہر کے چھوٹے جزائزاقوام متحدہریاستہائے مت" + + "حدہیوروگوئےازبکستانواٹیکن سٹیسینٹ ونسنٹ اور گرینیڈائنزوینزوئیلابرٹش ورج" + + "ن آئلینڈزامریکی ورجن آئلینڈزویتناموینوآٹوویلیز اور فیوٹیوناساموآکوسوووی" + + "منمایوٹجنوبی افریقہزامبیازمبابوےنامعلوم علاقہدنیاافریقہشمالی امریکہجنوب" + + "ی امریکہاوشیانیامغربی افریقہوسطی امریکہمشرقی افریقہشمالی افریقہوسطی افر" + + "یقہجنوبی افریقہ کے علاقہامیریکازشمالی امریکہ کا علاقہکریبیائیمشرقی ایشی" + + "اجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآسٹریلیشیامالینیشیامائکرونیشیائی " + + "علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرقی یورپشمالی یورپمغربی ی" + + "ورپلاطینی امریکہ" + +var urRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x0019, 0x0025, 0x0043, 0x0055, 0x0079, 0x0089, 0x0097, 0x00a5, 0x00b1, 0x00c5, 0x00d5, 0x00ec, 0x00f8, 0x0108, 0x0112, - 0x012b, 0x013d, 0x0165, 0x0175, 0x0186, 0x0192, 0x01a7, 0x01b5, - 0x01bf, 0x01cb, 0x01d3, 0x01ec, 0x01f8, 0x0204, 0x0212, 0x0235, - 0x0241, 0x024d, 0x0259, 0x0270, 0x0280, 0x028e, 0x029a, 0x02a6, - 0x02c8, 0x02e1, 0x0303, 0x0322, 0x0337, 0x034f, 0x0362, 0x0368, - 0x0374, 0x037a, 0x0388, 0x03a1, 0x03b4, 0x03be, 0x03cd, 0x03dd, - 0x03f4, 0x03fc, 0x0411, 0x041b, 0x0432, 0x043c, 0x0448, 0x0456, + 0x012b, 0x0140, 0x0168, 0x0178, 0x0189, 0x0195, 0x01aa, 0x01b8, + 0x01c2, 0x01ce, 0x01d6, 0x01ef, 0x01fb, 0x0209, 0x0217, 0x023a, + 0x0246, 0x0252, 0x025e, 0x0275, 0x0285, 0x0293, 0x029f, 0x02ab, + 0x02cd, 0x02e6, 0x0308, 0x0327, 0x033c, 0x0354, 0x0367, 0x036d, + 0x0379, 0x037f, 0x038d, 0x03a6, 0x03b9, 0x03c3, 0x03d2, 0x03e2, + 0x03f7, 0x03ff, 0x0409, 0x0413, 0x042a, 0x0434, 0x0440, 0x044e, // Entry 40 - 7F - 0x0473, 0x0481, 0x04a1, 0x04b1, 0x04bf, 0x04c5, 0x04da, 0x04ea, - 0x04f8, 0x0508, 0x051f, 0x052c, 0x0532, 0x054b, 0x0561, 0x0574, - 0x057e, 0x0588, 0x059d, 0x05ab, 0x05b7, 0x05cc, 0x05da, 0x05e4, - 0x05f7, 0x0608, 0x0614, 0x061a, 0x062a, 0x0643, 0x064d, 0x068e, - 0x06a1, 0x06a9, 0x06b8, 0x06c2, 0x06de, 0x071e, 0x072e, 0x073a, - 0x0742, 0x074c, 0x0765, 0x0777, 0x0785, 0x0793, 0x07a5, 0x07af, - 0x07e4, 0x07ec, 0x07f6, 0x0805, 0x080d, 0x0815, 0x0823, 0x082b, - 0x0835, 0x083f, 0x084f, 0x085d, 0x086b, 0x0879, 0x089a, 0x08af, + 0x046b, 0x0479, 0x0499, 0x04a9, 0x04b7, 0x04bd, 0x04d2, 0x04e2, + 0x04f0, 0x0500, 0x0517, 0x0517, 0x0524, 0x052a, 0x0543, 0x0559, + 0x056c, 0x0576, 0x0580, 0x0595, 0x05a3, 0x05af, 0x05c4, 0x05d2, + 0x05dc, 0x05ef, 0x0600, 0x060c, 0x0612, 0x0622, 0x063b, 0x0645, + 0x0686, 0x0699, 0x06a1, 0x06b0, 0x06ba, 0x06d6, 0x070a, 0x071a, + 0x0726, 0x072e, 0x0738, 0x0751, 0x0763, 0x0771, 0x077f, 0x0791, + 0x079b, 0x07c7, 0x07cf, 0x07d9, 0x07e8, 0x07f0, 0x07f8, 0x0806, + 0x080e, 0x0818, 0x0822, 0x0832, 0x0840, 0x084e, 0x085c, 0x087d, // Entry 80 - BF - 0x08c4, 0x08cc, 0x08e5, 0x08f5, 0x08fd, 0x0907, 0x091a, 0x092e, - 0x093d, 0x094d, 0x095b, 0x096b, 0x0979, 0x0983, 0x098d, 0x0997, - 0x09a3, 0x09b1, 0x09c6, 0x09d9, 0x09e7, 0x0a00, 0x0a0e, 0x0a16, - 0x0a2f, 0x0a3d, 0x0a50, 0x0a78, 0x0a86, 0x0a98, 0x0aaa, 0x0ab4, - 0x0ac0, 0x0acc, 0x0ad6, 0x0ae4, 0x0af0, 0x0afe, 0x0b0c, 0x0b23, - 0x0b2d, 0x0b46, 0x0b56, 0x0b68, 0x0b7b, 0x0b85, 0x0b8f, 0x0b97, - 0x0b9f, 0x0bb0, 0x0bb8, 0x0bc2, 0x0bca, 0x0bed, 0x0c05, 0x0c13, - 0x0c21, 0x0c2d, 0x0c56, 0x0c6f, 0x0c84, 0x0c99, 0x0ca5, 0x0cad, + 0x0892, 0x08a7, 0x08af, 0x08c8, 0x08d8, 0x08e0, 0x08ea, 0x08fd, + 0x0911, 0x0920, 0x0930, 0x093e, 0x094e, 0x095c, 0x0966, 0x0970, + 0x097a, 0x0986, 0x0994, 0x09a9, 0x09bc, 0x09ca, 0x09e3, 0x09f1, + 0x09f9, 0x0a12, 0x0a20, 0x0a33, 0x0a5b, 0x0a69, 0x0a7b, 0x0a8d, + 0x0a97, 0x0aa3, 0x0aaf, 0x0ab9, 0x0ac7, 0x0ad5, 0x0ae3, 0x0af1, + 0x0b08, 0x0b12, 0x0b2b, 0x0b3b, 0x0b4d, 0x0b60, 0x0b6a, 0x0b74, + 0x0b7c, 0x0b84, 0x0b97, 0x0b9f, 0x0bab, 0x0bb3, 0x0bd6, 0x0bee, + 0x0bfa, 0x0c08, 0x0c14, 0x0c3d, 0x0c56, 0x0c6b, 0x0c80, 0x0c8c, // Entry C0 - FF - 0x0cbd, 0x0cc3, 0x0ce0, 0x0cef, 0x0cfd, 0x0d07, 0x0d0d, 0x0d19, - 0x0d2a, 0x0d45, 0x0d4f, 0x0d59, 0x0d63, 0x0d71, 0x0d86, 0x0d96, - 0x0dbb, 0x0dcb, 0x0ddc, 0x0def, 0x0dfb, 0x0e09, 0x0e17, 0x0e2c, - 0x0e4d, 0x0e60, 0x0e71, 0x0e77, 0x0e8a, 0x0ea6, 0x0ecd, 0x0ed3, - 0x0ef5, 0x0efd, 0x0f10, 0x0f20, 0x0f2e, 0x0f41, 0x0f55, 0x0f65, - 0x0f6f, 0x0f77, 0x0f9b, 0x0fa7, 0x0fb5, 0x0fc3, 0x0fcf, 0x0fdd, - 0x1012, 0x102f, 0x103f, 0x104f, 0x1062, 0x1091, 0x10a3, 0x10c3, - 0x10e7, 0x10f3, 0x1101, 0x1123, 0x112d, 0x1139, 0x113f, 0x1149, + 0x0c94, 0x0ca4, 0x0caa, 0x0cc7, 0x0cd6, 0x0ce4, 0x0cee, 0x0cf4, + 0x0d00, 0x0d11, 0x0d2c, 0x0d36, 0x0d40, 0x0d4a, 0x0d58, 0x0d6d, + 0x0d7d, 0x0da2, 0x0db2, 0x0dc3, 0x0dd6, 0x0de2, 0x0df0, 0x0dfe, + 0x0e13, 0x0e34, 0x0e47, 0x0e58, 0x0e5e, 0x0e71, 0x0e8d, 0x0eb4, + 0x0eba, 0x0edc, 0x0ee4, 0x0ef7, 0x0f07, 0x0f15, 0x0f28, 0x0f3c, + 0x0f44, 0x0f4e, 0x0f56, 0x0f7a, 0x0f86, 0x0f94, 0x0fa2, 0x0fae, + 0x0fba, 0x0fef, 0x1004, 0x1021, 0x1031, 0x1041, 0x1054, 0x1083, + 0x1095, 0x10b5, 0x10d9, 0x10e5, 0x10f3, 0x1115, 0x111f, 0x112b, // Entry 100 - 13F - 0x1160, 0x116c, 0x117a, 0x1193, 0x119b, 0x11a7, 0x11be, 0x11d5, - 0x11e5, 0x11fc, 0x1211, 0x1228, 0x123f, 0x1254, 0x127b, 0x128b, - 0x12b2, 0x12c2, 0x12d7, 0x12ec, 0x130a, 0x131d, 0x1331, 0x1343, - 0x1368, 0x137a, 0x1384, 0x1397, 0x13ac, 0x13b4, 0x13c7, 0x13da, - 0x13ed, 0x1406, -} // Size: 604 bytes - -var uzRegionStr string = "" + // Size: 3194 bytes + 0x1131, 0x113b, 0x1152, 0x115e, 0x116c, 0x1185, 0x118d, 0x1199, + 0x11b0, 0x11c7, 0x11d7, 0x11ee, 0x1203, 0x121a, 0x1231, 0x1246, + 0x126d, 0x127d, 0x12a4, 0x12b4, 0x12c9, 0x12de, 0x12fc, 0x130f, + 0x1323, 0x1335, 0x135a, 0x136c, 0x1376, 0x1389, 0x139e, 0x13a6, + 0x13b9, 0x13cc, 0x13df, 0x13f8, +} // Size: 608 bytes + +const uzRegionStr string = "" + // Size: 3221 bytes "Me’roj oroliAndorraBirlashgan Arab AmirliklariAfgʻonistonAntigua va Barb" + - "adosAngilyaAlbaniyaArmanistonAngolaAntarktidaArgentinaAmerika SamoasiAvs" + - "triyaAvstraliyaArubaAland orollariOzarbayjonBosniya va GertsegovinaBarba" + - "dosBangladeshBelgiyaBurkina-FasoBolgariyaBahraynBurundiBeninSen-Bartelem" + - "iBermuda orollariBruneyBoliviyaBoneyr, Sint-Estatius va SabaBraziliyaBag" + - "ama orollariButanBuve oroliBotsvanaBelarusBelizKanadaKokos (Kiling) orol" + - "lariKongo – KinshasaMarkaziy Afrika RespublikasiKongo – BrazzavilShveyts" + - "ariyaKot-d’IvuarKuk orollariChiliKamerunXitoyKolumbiyaKlipperton oroliKo" + - "sta-RikaKubaKabo-VerdeKyurasaoRojdestvo oroliKiprChexiya RespublikasiGer" + - "maniyaDiyego-GarsiyaJibutiDaniyaDominikaDominikan RespublikasiJazoirSeut" + - "a va MelilyaEkvadorEstoniyaMisrG‘arbiy Sahroi KabirEritreyaIspaniyaEfiop" + - "iyaYevropa IttifoqiFinlandiyaFijiFolklend orollariMikroneziyaFarer oroll" + - "ariFransiyaGabonBirlashgan QirollikGrenadaGruziyaFransuz GvianasiGernsiG" + - "anaGibraltarGrenlandiyaGambiyaGvineyaGvadelupeEkvatorial GvineyaGretsiya" + - "Janubiy Georgiya va Janubiy Sendvich orollariGvatemalaGuamGvineya-BisauG" + - "ayanaGonkong (Xitoy MMH)Xerd va Makdonald orollariGondurasXorvatiyaGaiti" + - "VengriyaKanar orollariIndoneziyaIrlandiyaIsroilMen oroliHindistonBritani" + - "yaning Hind okeanidagi hududiIroqEronIslandiyaItaliyaJersiYamaykaIordani" + - "yaYaponiyaKeniyaQirgʻizistonKambodjaKiribatiKomor orollariSent-Kits va N" + - "evisShimoliy KoreyaJanubiy KoreyaQuvaytKayman orollariQozogʻistonLaosLiv" + - "anSent-LyusiyaLixtenshteynShri-LankaLiberiyaLesotoLitvaLyuksemburgLatviy" + - "aLiviyaMarokashMonakoMoldovaChernogoriyaSent-MartinMadagaskarMarshall or" + - "ollariMakedoniyaMaliMyanma (Birma)MongoliyaMakao (Xitoy MMH)Shimoliy Mar" + - "iana orollariMartinikaMavritaniyaMontserratMaltaMavrikiyMaldiv orollariM" + - "alaviMeksikaMalayziyaMozambikNamibiyaYangi KaledoniyaNigerNorfolk oroliN" + - "igeriyaNikaraguaNiderlandiyaNorvegiyaNepalNauruNiueYangi ZelandiyaUmmonP" + - "anamaPeruFransuz PolineziyasiPapua – Yangi GvineyaFilippinPokistonPolsha" + - "Sent-Pyer va MikelonPitkern orollariPuerto-RikoFalastin hududiPortugaliy" + - "aPalauParagvayQatarYondosh OkeaniyaReyunionRuminiyaSerbiyaRossiyaRuandaS" + - "audiya ArabistoniSolomon orollariSeyshel orollariSudanShvetsiyaSingapurM" + - "uqaddas Yelena oroliSloveniyaSvalbard va Yan-MayenSlovakiyaSyerra-LeoneS" + - "an-MarinoSenegalSomaliSurinamJanubiy SudanSan-Tome va PrinsipiSalvadorSi" + - "nt-MartenSuriyaSvazilendTristan-da-KunyaTurks va Kaykos orollariChadFran" + - "suz Janubiy hududlariTogoTailandTojikistonTokelauTimorTurkmanistonTunisT" + - "ongaTurkiyaTrinidad va TobagoTuvaluTayvanTanzaniyaUkrainaUgandaAQSH yond" + - "osh orollariQoʻshma ShtatlarUrugvayOʻzbekistonVatikanSent-Vinsent va Gre" + - "nadinVenesuelaBritaniya Virgin orollariAQSH Virgin orollariVyetnamVanuat" + - "uUollis va FutunaSamoaKosovoYamanMayottaJanubiy Afrika RespublikasiZambi" + - "yaZimbabveNoma’lum mintaqaDunyoAfrikaShimoliy AmerikaJanubiy AmerikaOkea" + - "niyaG‘arbiy AfrikaMarkaziy AmerikaSharqiy AfrikaShimoliy AfrikaMarkaziy " + - "AfrikaJanubiy AfrikaAmerikaShimoliy Amerika – AQSH va KanadaKarib havzas" + - "iSharqiy OsiyoJanubiy OsiyoJanubi-sharqiy OsiyoJanubiy YevropaAvstralazi" + - "yaMelaneziyaMikroneziya mintaqasiPolineziyaOsiyoMarkaziy OsiyoG‘arbiy Os" + - "iyoYevropaSharqiy YevropaShimoliy YevropaG‘arbiy YevropaLotin Amerikasi" - -var uzRegionIdx = []uint16{ // 290 elements + "udaAngilyaAlbaniyaArmanistonAngolaAntarktidaArgentinaAmerika SamoasiAvst" + + "riyaAvstraliyaArubaAland orollariOzarbayjonBosniya va GertsegovinaBarbad" + + "osBangladeshBelgiyaBurkina-FasoBolgariyaBahraynBurundiBeninSen-Bartelemi" + + "Bermuda orollariBruneyBoliviyaBoneyr, Sint-Estatius va SabaBraziliyaBaga" + + "ma orollariButanBuve oroliBotsvanaBelarusBelizKanadaKokos (Kiling) oroll" + + "ariKongo – KinshasaMarkaziy Afrika RespublikasiKongo – BrazzavilShveytsa" + + "riyaKot-d’IvuarKuk orollariChiliKamerunXitoyKolumbiyaKlipperton oroliKos" + + "ta-RikaKubaKabo-VerdeKyurasaoRojdestvo oroliKiprChexiyaGermaniyaDiyego-G" + + "arsiyaJibutiDaniyaDominikaDominikan RespublikasiJazoirSeuta va MelilyaEk" + + "vadorEstoniyaMisrG‘arbiy Sahroi KabirEritreyaIspaniyaEfiopiyaYevropa Itt" + + "ifoqiFinlandiyaFijiFolklend orollariMikroneziyaFarer orollariFransiyaGab" + + "onBuyuk BritaniyaGrenadaGruziyaFransuz GvianasiGernsiGanaGibraltarGrenla" + + "ndiyaGambiyaGvineyaGvadelupeEkvatorial GvineyaGretsiyaJanubiy Georgiya v" + + "a Janubiy Sendvich orollariGvatemalaGuamGvineya-BisauGayanaGonkong (Xito" + + "y MMH)Xerd va Makdonald orollariGondurasXorvatiyaGaitiVengriyaKanar orol" + + "lariIndoneziyaIrlandiyaIsroilMen oroliHindistonBritaniyaning Hind okeani" + + "dagi hududiIroqEronIslandiyaItaliyaJersiYamaykaIordaniyaYaponiyaKeniyaQi" + + "rgʻizistonKambodjaKiribatiKomor orollariSent-Kits va NevisShimoliy Korey" + + "aJanubiy KoreyaQuvaytKayman orollariQozogʻistonLaosLivanSent-LyusiyaLixt" + + "enshteynShri-LankaLiberiyaLesotoLitvaLyuksemburgLatviyaLiviyaMarokashMon" + + "akoMoldovaChernogoriyaSent-MartinMadagaskarMarshall orollariMakedoniyaMa" + + "liMyanma (Birma)MongoliyaMakao (Xitoy MMH)Shimoliy Mariana orollariMarti" + + "nikaMavritaniyaMontserratMaltaMavrikiyMaldiv orollariMalaviMeksikaMalayz" + + "iyaMozambikNamibiyaYangi KaledoniyaNigerNorfolk oroliNigeriyaNikaraguaNi" + + "derlandiyaNorvegiyaNepalNauruNiueYangi ZelandiyaUmmonPanamaPeruFransuz P" + + "olineziyasiPapua – Yangi GvineyaFilippinPokistonPolshaSen-Pyer va Mikelo" + + "nPitkern orollariPuerto-RikoFalastin hududiPortugaliyaPalauParagvayQatar" + + "Tashqi OkeaniyaReyunionRuminiyaSerbiyaRossiyaRuandaSaudiya ArabistoniSol" + + "omon orollariSeyshel orollariSudanShvetsiyaSingapurMuqaddas Yelena oroli" + + "SloveniyaSvalbard va Yan-MayenSlovakiyaSyerra-LeoneSan-MarinoSenegalSoma" + + "liSurinamJanubiy SudanSan-Tome va PrinsipiSalvadorSint-MartenSuriyaSvazi" + + "lendTristan-da-KunyaTurks va Kaykos orollariChadFransuz Janubiy hududlar" + + "iTogoTailandTojikistonTokelauTimor-LesteTurkmanistonTunisTongaTurkiyaTri" + + "nidad va TobagoTuvaluTayvanTanzaniyaUkrainaUgandaAQSH yondosh orollariBi" + + "rlashgan Millatlar TashkilotiAmerika Qo‘shma ShtatlariUrugvayOʻzbekiston" + + "VatikanSent-Vinsent va GrenadinVenesuelaBritaniya Virgin orollariAQSH Vi" + + "rgin orollariVyetnamVanuatuUollis va FutunaSamoaKosovoYamanMayottaJanubi" + + "y Afrika RespublikasiZambiyaZimbabveNoma’lum mintaqaDunyoAfrikaShimoliy " + + "AmerikaJanubiy AmerikaOkeaniyaG‘arbiy AfrikaMarkaziy AmerikaSharqiy Afri" + + "kaShimoliy AfrikaMarkaziy AfrikaJanubiy AfrikaAmerikaShimoliy Amerika – " + + "AQSH va KanadaKarib havzasiSharqiy OsiyoJanubiy OsiyoJanubi-sharqiy Osiy" + + "oJanubiy YevropaAvstralaziyaMelaneziyaMikroneziya mintaqasiPolineziyaOsi" + + "yoMarkaziy OsiyoG‘arbiy OsiyoYevropaSharqiy YevropaShimoliy YevropaG‘arb" + + "iy YevropaLotin Amerikasi" + +var uzRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x0030, 0x003c, 0x004f, 0x0056, 0x005e, - 0x0068, 0x006e, 0x0078, 0x0081, 0x0090, 0x0098, 0x00a2, 0x00a7, - 0x00b5, 0x00bf, 0x00d6, 0x00de, 0x00e8, 0x00ef, 0x00fb, 0x0104, - 0x010b, 0x0112, 0x0117, 0x0124, 0x0134, 0x013a, 0x0142, 0x015f, - 0x0168, 0x0177, 0x017c, 0x0186, 0x018e, 0x0195, 0x019a, 0x01a0, - 0x01b7, 0x01c9, 0x01e5, 0x01f8, 0x0204, 0x0211, 0x021d, 0x0222, - 0x0229, 0x022e, 0x0237, 0x0247, 0x0251, 0x0255, 0x025f, 0x0267, - 0x0276, 0x027a, 0x028e, 0x0297, 0x02a5, 0x02ab, 0x02b1, 0x02b9, + 0x0000, 0x000e, 0x0015, 0x0030, 0x003c, 0x004e, 0x0055, 0x005d, + 0x0067, 0x006d, 0x0077, 0x0080, 0x008f, 0x0097, 0x00a1, 0x00a6, + 0x00b4, 0x00be, 0x00d5, 0x00dd, 0x00e7, 0x00ee, 0x00fa, 0x0103, + 0x010a, 0x0111, 0x0116, 0x0123, 0x0133, 0x0139, 0x0141, 0x015e, + 0x0167, 0x0176, 0x017b, 0x0185, 0x018d, 0x0194, 0x0199, 0x019f, + 0x01b6, 0x01c8, 0x01e4, 0x01f7, 0x0203, 0x0210, 0x021c, 0x0221, + 0x0228, 0x022d, 0x0236, 0x0246, 0x0250, 0x0254, 0x025e, 0x0266, + 0x0275, 0x0279, 0x0280, 0x0289, 0x0297, 0x029d, 0x02a3, 0x02ab, // Entry 40 - 7F - 0x02cf, 0x02d5, 0x02e5, 0x02ec, 0x02f4, 0x02f8, 0x030e, 0x0316, - 0x031e, 0x0326, 0x0336, 0x0340, 0x0344, 0x0355, 0x0360, 0x036e, - 0x0376, 0x037b, 0x038e, 0x0395, 0x039c, 0x03ac, 0x03b2, 0x03b6, - 0x03bf, 0x03ca, 0x03d1, 0x03d8, 0x03e1, 0x03f3, 0x03fb, 0x0428, - 0x0431, 0x0435, 0x0442, 0x0448, 0x045b, 0x0475, 0x047d, 0x0486, - 0x048b, 0x0493, 0x04a1, 0x04ab, 0x04b4, 0x04ba, 0x04c3, 0x04cc, - 0x04f0, 0x04f4, 0x04f8, 0x0501, 0x0508, 0x050d, 0x0514, 0x051d, - 0x0525, 0x052b, 0x0538, 0x0540, 0x0548, 0x0556, 0x0568, 0x0577, + 0x02c1, 0x02c7, 0x02d7, 0x02de, 0x02e6, 0x02ea, 0x0300, 0x0308, + 0x0310, 0x0318, 0x0328, 0x0328, 0x0332, 0x0336, 0x0347, 0x0352, + 0x0360, 0x0368, 0x036d, 0x037c, 0x0383, 0x038a, 0x039a, 0x03a0, + 0x03a4, 0x03ad, 0x03b8, 0x03bf, 0x03c6, 0x03cf, 0x03e1, 0x03e9, + 0x0416, 0x041f, 0x0423, 0x0430, 0x0436, 0x0449, 0x0463, 0x046b, + 0x0474, 0x0479, 0x0481, 0x048f, 0x0499, 0x04a2, 0x04a8, 0x04b1, + 0x04ba, 0x04de, 0x04e2, 0x04e6, 0x04ef, 0x04f6, 0x04fb, 0x0502, + 0x050b, 0x0513, 0x0519, 0x0526, 0x052e, 0x0536, 0x0544, 0x0556, // Entry 80 - BF - 0x0585, 0x058b, 0x059a, 0x05a6, 0x05aa, 0x05af, 0x05bb, 0x05c7, - 0x05d1, 0x05d9, 0x05df, 0x05e4, 0x05ef, 0x05f6, 0x05fc, 0x0604, - 0x060a, 0x0611, 0x061d, 0x0628, 0x0632, 0x0643, 0x064d, 0x0651, - 0x065f, 0x0668, 0x0679, 0x0692, 0x069b, 0x06a6, 0x06b0, 0x06b5, - 0x06bd, 0x06cc, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f2, 0x0702, - 0x0707, 0x0714, 0x071c, 0x0725, 0x0731, 0x073a, 0x073f, 0x0744, - 0x0748, 0x0757, 0x075c, 0x0762, 0x0766, 0x077a, 0x0791, 0x0799, - 0x07a1, 0x07a7, 0x07bb, 0x07cb, 0x07d6, 0x07e5, 0x07f0, 0x07f5, + 0x0565, 0x0573, 0x0579, 0x0588, 0x0594, 0x0598, 0x059d, 0x05a9, + 0x05b5, 0x05bf, 0x05c7, 0x05cd, 0x05d2, 0x05dd, 0x05e4, 0x05ea, + 0x05f2, 0x05f8, 0x05ff, 0x060b, 0x0616, 0x0620, 0x0631, 0x063b, + 0x063f, 0x064d, 0x0656, 0x0667, 0x0680, 0x0689, 0x0694, 0x069e, + 0x06a3, 0x06ab, 0x06ba, 0x06c0, 0x06c7, 0x06d0, 0x06d8, 0x06e0, + 0x06f0, 0x06f5, 0x0702, 0x070a, 0x0713, 0x071f, 0x0728, 0x072d, + 0x0732, 0x0736, 0x0745, 0x074a, 0x0750, 0x0754, 0x0768, 0x077f, + 0x0787, 0x078f, 0x0795, 0x07a8, 0x07b8, 0x07c3, 0x07d2, 0x07dd, // Entry C0 - FF - 0x07fd, 0x0802, 0x0812, 0x081a, 0x0822, 0x0829, 0x0830, 0x0836, - 0x0848, 0x0858, 0x0868, 0x086d, 0x0876, 0x087e, 0x0893, 0x089c, - 0x08b1, 0x08ba, 0x08c6, 0x08d0, 0x08d7, 0x08dd, 0x08e4, 0x08f1, - 0x0905, 0x090d, 0x0918, 0x091e, 0x0927, 0x0937, 0x094f, 0x0953, - 0x096c, 0x0970, 0x0977, 0x0981, 0x0988, 0x098d, 0x0999, 0x099e, - 0x09a3, 0x09aa, 0x09bc, 0x09c2, 0x09c8, 0x09d1, 0x09d8, 0x09de, - 0x09f3, 0x0a04, 0x0a0b, 0x0a17, 0x0a1e, 0x0a36, 0x0a3f, 0x0a58, - 0x0a6c, 0x0a73, 0x0a7a, 0x0a8a, 0x0a8f, 0x0a95, 0x0a9a, 0x0aa1, + 0x07e2, 0x07ea, 0x07ef, 0x07fe, 0x0806, 0x080e, 0x0815, 0x081c, + 0x0822, 0x0834, 0x0844, 0x0854, 0x0859, 0x0862, 0x086a, 0x087f, + 0x0888, 0x089d, 0x08a6, 0x08b2, 0x08bc, 0x08c3, 0x08c9, 0x08d0, + 0x08dd, 0x08f1, 0x08f9, 0x0904, 0x090a, 0x0913, 0x0923, 0x093b, + 0x093f, 0x0958, 0x095c, 0x0963, 0x096d, 0x0974, 0x097f, 0x098b, + 0x0990, 0x0995, 0x099c, 0x09ae, 0x09b4, 0x09ba, 0x09c3, 0x09ca, + 0x09d0, 0x09e5, 0x0a04, 0x0a1f, 0x0a26, 0x0a32, 0x0a39, 0x0a51, + 0x0a5a, 0x0a73, 0x0a87, 0x0a8e, 0x0a95, 0x0aa5, 0x0aaa, 0x0ab0, // Entry 100 - 13F - 0x0abc, 0x0ac3, 0x0acb, 0x0add, 0x0ae2, 0x0ae8, 0x0af8, 0x0b07, - 0x0b0f, 0x0b1f, 0x0b2f, 0x0b3d, 0x0b4c, 0x0b5b, 0x0b69, 0x0b70, - 0x0b93, 0x0ba0, 0x0bad, 0x0bba, 0x0bce, 0x0bdd, 0x0be9, 0x0bf3, - 0x0c08, 0x0c12, 0x0c17, 0x0c25, 0x0c34, 0x0c3b, 0x0c4a, 0x0c5a, - 0x0c6b, 0x0c7a, -} // Size: 604 bytes - -var viRegionStr string = "" + // Size: 3213 bytes - "Đảo AscensionAndorraCác Tiểu V.quốc Ả Rập T.nhấtAfghanistanAntigua và Ba" + - "rbudaAnguillaAlbaniArmeniaAngolaNam CựcArgentinaĐảo Somoa thuộc MỹÁoÚcAr" + - "ubaQuần đảo ÅlandAzerbaijanBosnia và HerzegovinaBarbadosBangladeshBỉBurk" + - "ina FasoBungariBahrainBurundiBeninSt. BarthélemyBermudaBruneiBoliviaCa-r" + - "i-bê Hà LanBrazilBahamasBhutanĐảo BouvetBotswanaBelarusBelizeCanadaQuần " + - "đảo Cocos (Keeling)Congo - KinshasaCộng hòa Trung PhiCongo - Brazzavill" + - "eThụy SĩBờ Biển NgàQuần đảo CookChileCameroonTrung QuốcColombiaĐảo Clipp" + - "ertonCosta RicaCubaCape VerdeCuraçaoĐảo Giáng SinhSípCộng hòa SécĐứcDieg" + - "o GarciaDjiboutiĐan MạchDominicaCộng hòa DominicaAlgeriaCeuta và Melilla" + - "EcuadorEstoniaAi CậpTây SaharaEritreaTây Ban NhaEthiopiaLiên Minh Châu Â" + - "uPhần LanFijiQuần đảo FalklandMicronesiaQuần đảo FaroePhápGabonVương quố" + - "c AnhGrenadaGeorgiaGuiana thuộc PhápGuernseyGhanaGibraltarGreenlandGambi" + - "aGuineaGuadeloupeGuinea Xích ĐạoHy LạpQuần đảo Nam Georgia và Nam Sandwi" + - "chGuatemalaGuamGuinea-BissauGuyanaHồng Kông, Trung QuốcQuần đảo Heard và" + - " McDonaldHondurasCroatiaHaitiHungariQuần đảo CanaryIndonesiaAi-lenIsrael" + - "Đảo ManẤn ĐộThuộc địa Anh tại Ấn Độ DươngI-rắcIranIcelandÝJerseyJamaica" + - "JordanNhật BảnKenyaKyrgyzstanCampuchiaKiribatiComorosSt. Kitts và NevisT" + - "riều TiênHàn QuốcCô-oétQuần đảo CaymanKazakhstanLàoLi-băngSt. LuciaLiech" + - "tensteinSri LankaLiberiaLesothoLít-vaLuxembourgLatviaLi-biMa-rốcMonacoMo" + - "ldovaMontenegroSt. MartinMadagascarQuần đảo MarshallMacedoniaMaliMyanmar" + - " (Miến Điện)Mông CổMacao, Trung QuốcQuần đảo Bắc MarianaMartiniqueMaurit" + - "aniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibi" + - "aNew CaledoniaNigerĐảo NorfolkNigeriaNicaraguaHà LanNa UyNepalNauruNiueN" + - "ew ZealandOmanPanamaPeruPolynesia thuộc PhápPapua New GuineaPhilippinPak" + - "istanBa LanSaint Pierre và MiquelonQuần đảo PitcairnPuerto RicoLãnh thổ " + - "PalestineBồ Đào NhaPalauParaguayQatarVùng xa xôi thuộc Châu Đại DươngRéu" + - "nionRomaniaSerbiaNgaRwandaẢ Rập Xê-útQuần đảo SolomonSeychellesSudanThụy" + - " ĐiểnSingaporeSt. HelenaSloveniaSvalbard và Jan MayenSlovakiaSierra Leon" + - "eSan MarinoSenegalSomaliSurinameNam SudanSão Tomé và PríncipeEl Salvador" + - "Sint MaartenSyriaSwazilandTristan da CunhaQuần đảo Turk và CaicosChadLãn" + - "h thổ miền nam nước PhápTogoThái LanTajikistanTokelauĐông TimorTurkmenis" + - "tanTunisiaTongaThổ Nhĩ KỳTrinidad và TobagoTuvaluĐài LoanTanzaniaUkraina" + - "UgandaCác đảo nhỏ xa t.tâm thuộc MỹHoa KỳUruguayUzbekistanThành VaticanS" + - "t. Vincent và GrenadinesVenezuelaQuần đảo Virgin thuộc AnhQuần đảo Virgi" + - "n thuộc MỹViệt NamVanuatuWallis và FutunaSamoaKosovoYemenMayotteNam PhiZ" + - "ambiaZimbabweVùng không xác địnhThế giớiChâu PhiBắc MỹNam MỹChâu Đại Dươ" + - "ngTây PhiTrung MỹĐông PhiBắc PhiTrung PhiMiền Nam Châu PhiChâu MỹMiền Bắ" + - "c Châu MỹCa-ri-bêĐông ÁNam ÁĐông Nam ÁNam ÂuÚc và New ZealandMelanesiaVù" + - "ng MicronesianPolynesiaChâu ÁTrung ÁTây ÁChâu ÂuĐông ÂuBắc ÂuTây ÂuChâu " + - "Mỹ La-tinh" - -var viRegionIdx = []uint16{ // 290 elements + 0x0ab5, 0x0abc, 0x0ad7, 0x0ade, 0x0ae6, 0x0af8, 0x0afd, 0x0b03, + 0x0b13, 0x0b22, 0x0b2a, 0x0b3a, 0x0b4a, 0x0b58, 0x0b67, 0x0b76, + 0x0b84, 0x0b8b, 0x0bae, 0x0bbb, 0x0bc8, 0x0bd5, 0x0be9, 0x0bf8, + 0x0c04, 0x0c0e, 0x0c23, 0x0c2d, 0x0c32, 0x0c40, 0x0c4f, 0x0c56, + 0x0c65, 0x0c75, 0x0c86, 0x0c95, +} // Size: 608 bytes + +const viRegionStr string = "" + // Size: 3225 bytes + "Đảo AscensionAndorraCác Tiểu Vương quốc Ả Rập Thống nhấtAfghanistanAntig" + + "ua và BarbudaAnguillaAlbaniaArmeniaAngolaNam CựcArgentinaĐảo Somoa thuộc" + + " MỹÁoAustraliaArubaQuần đảo ÅlandAzerbaijanBosnia và HerzegovinaBarbados" + + "BangladeshBỉBurkina FasoBulgariaBahrainBurundiBeninSt. BarthélemyBermuda" + + "BruneiBoliviaCa-ri-bê Hà LanBrazilBahamasBhutanĐảo BouvetBotswanaBelarus" + + "BelizeCanadaQuần đảo Cocos (Keeling)Congo - KinshasaCộng hòa Trung PhiCo" + + "ngo - BrazzavilleThụy SĩCôte d’IvoireQuần đảo CookChileCameroonTrung Quố" + + "cColombiaĐảo ClippertonCosta RicaCubaCape VerdeCuraçaoĐảo Giáng SinhSípC" + + "zechiaĐứcDiego GarciaDjiboutiĐan MạchDominicaCộng hòa DominicaAlgeriaCeu" + + "ta và MelillaEcuadorEstoniaAi CậpTây SaharaEritreaTây Ban NhaEthiopiaLiê" + + "n Minh Châu ÂuPhần LanFijiQuần đảo FalklandMicronesiaQuần đảo FaroePhápG" + + "abonVương quốc AnhGrenadaGruziaGuiana thuộc PhápGuernseyGhanaGibraltarGr" + + "eenlandGambiaGuineaGuadeloupeGuinea Xích ĐạoHy LạpQuần đảo Nam Georgia v" + + "à Nam SandwichGuatemalaGuamGuinea-BissauGuyanaHồng Kông, Trung QuốcQuần" + + " đảo Heard và McDonaldHondurasCroatiaHaitiHungaryQuần đảo CanaryIndonesi" + + "aIrelandIsraelĐảo ManẤn ĐộLãnh thổ Anh tại Ấn Độ DươngIraqIranIcelandÝJe" + + "rseyJamaicaJordanNhật BảnKenyaKyrgyzstanCampuchiaKiribatiComorosSt. Kitt" + + "s và NevisTriều TiênHàn QuốcKuwaitQuần đảo CaymanKazakhstanLàoLi-băngSt." + + " LuciaLiechtensteinSri LankaLiberiaLesothoLitvaLuxembourgLatviaLibyaMa-r" + + "ốcMonacoMoldovaMontenegroSt. MartinMadagascarQuần đảo MarshallMacedoni" + + "aMaliMyanmar (Miến Điện)Mông CổMacao, Trung QuốcQuần đảo Bắc MarianaMart" + + "iniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMoza" + + "mbiqueNamibiaNew CaledoniaNigerĐảo NorfolkNigeriaNicaraguaHà LanNa UyNep" + + "alNauruNiueNew ZealandOmanPanamaPeruPolynesia thuộc PhápPapua New Guinea" + + "PhilippinesPakistanBa LanSaint Pierre và MiquelonQuần đảo PitcairnPuerto" + + " RicoLãnh thổ PalestineBồ Đào NhaPalauParaguayQatarVùng xa xôi thuộc Châ" + + "u Đại DươngRéunionRomaniaSerbiaNgaRwandaẢ Rập Xê-útQuần đảo SolomonSeych" + + "ellesSudanThụy ĐiểnSingaporeSt. HelenaSloveniaSvalbard và Jan MayenSlova" + + "kiaSierra LeoneSan MarinoSenegalSomaliaSurinameNam SudanSão Tomé và Prín" + + "cipeEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaQuần đảo Turk v" + + "à CaicosChadLãnh thổ phía Nam Thuộc PhápTogoThái LanTajikistanTokelauTi" + + "mor-LesteTurkmenistanTunisiaTongaThổ Nhĩ KỳTrinidad và TobagoTuvaluĐài L" + + "oanTanzaniaUkrainaUgandaCác đảo xa thuộc Hoa KỳLiên hiệp quốcHoa KỳUrugu" + + "ayUzbekistanThành VaticanSt. Vincent và GrenadinesVenezuelaQuần đảo Virg" + + "in thuộc AnhQuần đảo Virgin thuộc MỹViệt NamVanuatuWallis và FutunaSamoa" + + "KosovoYemenMayotteNam PhiZambiaZimbabweVùng không xác địnhThế giớiChâu P" + + "hiBắc MỹNam MỹChâu Đại DươngTây PhiTrung MỹĐông PhiBắc PhiTrung PhiMiền " + + "Nam Châu PhiChâu MỹMiền Bắc Châu MỹCa-ri-bêĐông ÁNam ÁĐông Nam ÁNam ÂuÚc" + + " và New ZealandMelanesiaVùng MicronesianPolynesiaChâu ÁTrung ÁTây ÁChâu " + + "ÂuĐông ÂuBắc ÂuTây ÂuChâu Mỹ La-tinh" + +var viRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x003e, 0x0049, 0x005c, 0x0064, 0x006a, - 0x0071, 0x0077, 0x0080, 0x0089, 0x00a2, 0x00a5, 0x00a8, 0x00ad, - 0x00c1, 0x00cb, 0x00e1, 0x00e9, 0x00f3, 0x00f7, 0x0103, 0x010a, - 0x0111, 0x0118, 0x011d, 0x012c, 0x0133, 0x0139, 0x0140, 0x0151, - 0x0157, 0x015e, 0x0164, 0x0171, 0x0179, 0x0180, 0x0186, 0x018c, - 0x01a9, 0x01b9, 0x01ce, 0x01e1, 0x01eb, 0x01fb, 0x020d, 0x0212, - 0x021a, 0x0226, 0x022e, 0x023f, 0x0249, 0x024d, 0x0257, 0x025f, - 0x0271, 0x0275, 0x0285, 0x028b, 0x0297, 0x029f, 0x02aa, 0x02b2, + 0x0000, 0x0010, 0x0017, 0x004a, 0x0055, 0x0068, 0x0070, 0x0077, + 0x007e, 0x0084, 0x008d, 0x0096, 0x00af, 0x00b2, 0x00bb, 0x00c0, + 0x00d4, 0x00de, 0x00f4, 0x00fc, 0x0106, 0x010a, 0x0116, 0x011e, + 0x0125, 0x012c, 0x0131, 0x0140, 0x0147, 0x014d, 0x0154, 0x0165, + 0x016b, 0x0172, 0x0178, 0x0185, 0x018d, 0x0194, 0x019a, 0x01a0, + 0x01bd, 0x01cd, 0x01e2, 0x01f5, 0x01ff, 0x020f, 0x0221, 0x0226, + 0x022e, 0x023a, 0x0242, 0x0253, 0x025d, 0x0261, 0x026b, 0x0273, + 0x0285, 0x0289, 0x0290, 0x0296, 0x02a2, 0x02aa, 0x02b5, 0x02bd, // Entry 40 - 7F - 0x02c6, 0x02cd, 0x02de, 0x02e5, 0x02ec, 0x02f4, 0x02ff, 0x0306, - 0x0312, 0x031a, 0x032e, 0x0338, 0x033c, 0x0352, 0x035c, 0x036f, - 0x0374, 0x0379, 0x038b, 0x0392, 0x0399, 0x03ad, 0x03b5, 0x03ba, - 0x03c3, 0x03cc, 0x03d2, 0x03d8, 0x03e2, 0x03f5, 0x03fd, 0x0427, - 0x0430, 0x0434, 0x0441, 0x0447, 0x0461, 0x0481, 0x0489, 0x0490, - 0x0495, 0x049c, 0x04b0, 0x04b9, 0x04bf, 0x04c5, 0x04cf, 0x04d9, - 0x0504, 0x050b, 0x050f, 0x0516, 0x0518, 0x051e, 0x0525, 0x052b, - 0x0537, 0x053c, 0x0546, 0x054f, 0x0557, 0x055e, 0x0571, 0x057e, + 0x02d1, 0x02d8, 0x02e9, 0x02f0, 0x02f7, 0x02ff, 0x030a, 0x0311, + 0x031d, 0x0325, 0x0339, 0x0339, 0x0343, 0x0347, 0x035d, 0x0367, + 0x037a, 0x037f, 0x0384, 0x0396, 0x039d, 0x03a3, 0x03b7, 0x03bf, + 0x03c4, 0x03cd, 0x03d6, 0x03dc, 0x03e2, 0x03ec, 0x03ff, 0x0407, + 0x0431, 0x043a, 0x043e, 0x044b, 0x0451, 0x046b, 0x048b, 0x0493, + 0x049a, 0x049f, 0x04a6, 0x04ba, 0x04c3, 0x04ca, 0x04d0, 0x04da, + 0x04e4, 0x050c, 0x0510, 0x0514, 0x051b, 0x051d, 0x0523, 0x052a, + 0x0530, 0x053c, 0x0541, 0x054b, 0x0554, 0x055c, 0x0563, 0x0576, // Entry 80 - BF - 0x0589, 0x0591, 0x05a5, 0x05af, 0x05b3, 0x05bb, 0x05c4, 0x05d1, - 0x05da, 0x05e1, 0x05e8, 0x05ef, 0x05f9, 0x05ff, 0x0604, 0x060c, - 0x0612, 0x0619, 0x0623, 0x062d, 0x0637, 0x064d, 0x0656, 0x065a, - 0x0672, 0x067c, 0x068f, 0x06aa, 0x06b4, 0x06be, 0x06c8, 0x06cd, - 0x06d6, 0x06de, 0x06e4, 0x06ea, 0x06f2, 0x06fc, 0x0703, 0x0710, - 0x0715, 0x0723, 0x072a, 0x0733, 0x073a, 0x073f, 0x0744, 0x0749, - 0x074d, 0x0758, 0x075c, 0x0762, 0x0766, 0x077d, 0x078d, 0x0796, - 0x079e, 0x07a4, 0x07bd, 0x07d3, 0x07de, 0x07f3, 0x0801, 0x0806, + 0x0583, 0x058e, 0x0594, 0x05a8, 0x05b2, 0x05b6, 0x05be, 0x05c7, + 0x05d4, 0x05dd, 0x05e4, 0x05eb, 0x05f0, 0x05fa, 0x0600, 0x0605, + 0x060d, 0x0613, 0x061a, 0x0624, 0x062e, 0x0638, 0x064e, 0x0657, + 0x065b, 0x0673, 0x067d, 0x0690, 0x06ab, 0x06b5, 0x06bf, 0x06c9, + 0x06ce, 0x06d7, 0x06df, 0x06e5, 0x06eb, 0x06f3, 0x06fd, 0x0704, + 0x0711, 0x0716, 0x0724, 0x072b, 0x0734, 0x073b, 0x0740, 0x0745, + 0x074a, 0x074e, 0x0759, 0x075d, 0x0763, 0x0767, 0x077e, 0x078e, + 0x0799, 0x07a1, 0x07a7, 0x07c0, 0x07d6, 0x07e1, 0x07f6, 0x0804, // Entry C0 - FF - 0x080e, 0x0813, 0x083d, 0x0845, 0x084c, 0x0852, 0x0855, 0x085b, - 0x086c, 0x0881, 0x088b, 0x0890, 0x089e, 0x08a7, 0x08b1, 0x08b9, - 0x08cf, 0x08d7, 0x08e3, 0x08ed, 0x08f4, 0x08fa, 0x0902, 0x090b, - 0x0923, 0x092e, 0x093a, 0x093f, 0x0948, 0x0958, 0x0975, 0x0979, - 0x099d, 0x09a1, 0x09aa, 0x09b4, 0x09bb, 0x09c7, 0x09d3, 0x09da, - 0x09df, 0x09ee, 0x0a01, 0x0a07, 0x0a11, 0x0a19, 0x0a20, 0x0a26, - 0x0a4e, 0x0a56, 0x0a5d, 0x0a67, 0x0a75, 0x0a8f, 0x0a98, 0x0ab8, - 0x0ad9, 0x0ae3, 0x0aea, 0x0afb, 0x0b00, 0x0b06, 0x0b0b, 0x0b12, + 0x0809, 0x0811, 0x0816, 0x0840, 0x0848, 0x084f, 0x0855, 0x0858, + 0x085e, 0x086f, 0x0884, 0x088e, 0x0893, 0x08a1, 0x08aa, 0x08b4, + 0x08bc, 0x08d2, 0x08da, 0x08e6, 0x08f0, 0x08f7, 0x08fe, 0x0906, + 0x090f, 0x0927, 0x0932, 0x093e, 0x0943, 0x094c, 0x095c, 0x0979, + 0x097d, 0x09a0, 0x09a4, 0x09ad, 0x09b7, 0x09be, 0x09c9, 0x09d5, + 0x09dc, 0x09e1, 0x09f0, 0x0a03, 0x0a09, 0x0a13, 0x0a1b, 0x0a22, + 0x0a28, 0x0a47, 0x0a5a, 0x0a62, 0x0a69, 0x0a73, 0x0a81, 0x0a9b, + 0x0aa4, 0x0ac4, 0x0ae5, 0x0aef, 0x0af6, 0x0b07, 0x0b0c, 0x0b12, // Entry 100 - 13F - 0x0b19, 0x0b1f, 0x0b27, 0x0b40, 0x0b4c, 0x0b55, 0x0b5f, 0x0b67, - 0x0b7b, 0x0b83, 0x0b8d, 0x0b97, 0x0ba0, 0x0ba9, 0x0bbd, 0x0bc7, - 0x0bde, 0x0be7, 0x0bf0, 0x0bf6, 0x0c03, 0x0c0a, 0x0c1d, 0x0c26, - 0x0c37, 0x0c40, 0x0c48, 0x0c50, 0x0c57, 0x0c60, 0x0c6a, 0x0c73, - 0x0c7b, 0x0c8d, -} // Size: 604 bytes - -var zhRegionStr string = "" + // Size: 3307 bytes + 0x0b17, 0x0b1e, 0x0b25, 0x0b2b, 0x0b33, 0x0b4c, 0x0b58, 0x0b61, + 0x0b6b, 0x0b73, 0x0b87, 0x0b8f, 0x0b99, 0x0ba3, 0x0bac, 0x0bb5, + 0x0bc9, 0x0bd3, 0x0bea, 0x0bf3, 0x0bfc, 0x0c02, 0x0c0f, 0x0c16, + 0x0c29, 0x0c32, 0x0c43, 0x0c4c, 0x0c54, 0x0c5c, 0x0c63, 0x0c6c, + 0x0c76, 0x0c7f, 0x0c87, 0x0c99, +} // Size: 608 bytes + +const zhRegionStr string = "" + // Size: 3310 bytes "阿森松岛安道尔阿拉伯联合酋长国阿富汗安提瓜和巴布达安圭拉阿尔巴尼亚亚美尼亚安哥拉南极洲阿根廷美属萨摩亚奥地利澳大利亚阿鲁巴奥兰群岛阿塞拜疆波斯尼" + - "亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷兰加勒比区巴西巴哈马不丹布维岛博茨瓦纳白俄" + + "亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷属加勒比区巴西巴哈马不丹布韦岛博茨瓦纳白俄" + "罗斯伯利兹加拿大科科斯(基林)群岛刚果(金)中非共和国刚果(布)瑞士科特迪瓦库克群岛智利喀麦隆中国哥伦比亚克利珀顿岛哥斯达黎加古巴佛得角库拉" + - "索圣诞岛塞浦路斯捷克共和国德国迪戈加西亚岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈拉厄立特里亚西班" + - "牙埃塞俄比亚欧盟芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国加蓬英国格林纳达格鲁吉亚法属圭亚那根西岛加纳直布罗陀格陵兰冈比亚几内亚瓜德罗普赤道" + - "几内亚希腊南乔治亚岛和南桑威齐群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政区赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙利加纳利群岛印度" + - "尼西亚爱尔兰以色列曼岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦柬埔寨基里巴斯科摩罗圣基茨和尼维斯朝鲜韩国" + - "科威特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦黑山法属圣马丁马达加" + - "斯加马绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西哥马来西亚莫桑比" + - "克纳米比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲律宾巴基斯坦波兰" + - "圣皮埃尔和密克隆群岛皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙特阿拉伯所罗门群" + - "岛塞舌尔苏丹瑞典新加坡圣赫勒拿斯洛文尼亚斯瓦尔巴特和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比萨尔瓦多荷属圣马" + - "丁叙利亚斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯群岛乍得法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土耳其特立尼达和多" + - "巴哥图瓦卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿美国乌拉圭乌兹别克斯坦梵蒂冈圣文森特和格林纳丁斯委内瑞拉英属维京群岛美属维京群岛越南瓦努阿" + - "图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西非中美洲东非北非中非南部非洲美洲美洲北部加勒比地" + - "区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲" - -var zhRegionIdx = []uint16{ // 290 elements + "索圣诞岛塞浦路斯捷克德国迪戈加西亚岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈拉厄立特里亚西班牙埃塞" + + "俄比亚欧盟芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国加蓬英国格林纳达格鲁吉亚法属圭亚那格恩西岛加纳直布罗陀格陵兰冈比亚几内亚瓜德罗普赤道几内" + + "亚希腊南乔治亚和南桑威奇群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政区赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙利加纳利群岛印度尼西亚" + + "爱尔兰以色列马恩岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦柬埔寨基里巴斯科摩罗圣基茨和尼维斯朝鲜韩国科威" + + "特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦黑山圣马丁岛马达加斯加马" + + "绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西哥马来西亚莫桑比克纳米" + + "比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲律宾巴基斯坦波兰圣皮埃" + + "尔和密克隆群岛皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙特阿拉伯所罗门群岛塞舌" + + "尔苏丹瑞典新加坡圣赫勒拿斯洛文尼亚斯瓦尔巴和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比萨尔瓦多荷属圣马丁叙利亚" + + "斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯群岛乍得法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土耳其特立尼达和多巴哥图瓦" + + "卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿联合国美国乌拉圭乌兹别克斯坦梵蒂冈圣文森特和格林纳丁斯委内瑞拉英属维尔京群岛美属维尔京群岛越南瓦努" + + "阿图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西非中美洲东非北非中非南部非洲美洲美洲北部加勒比" + + "地区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲" + +var zhRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00ae, 0x00b7, @@ -44455,61 +49561,61 @@ var zhRegionIdx = []uint16{ // 290 elements 0x0180, 0x0189, 0x018f, 0x0198, 0x01a4, 0x01b0, 0x01b9, 0x01c2, 0x01dd, 0x01ec, 0x01fb, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, 0x0237, 0x023d, 0x0249, 0x0258, 0x0267, 0x026d, 0x0276, 0x027f, - 0x0288, 0x0294, 0x02a3, 0x02a9, 0x02bb, 0x02c4, 0x02ca, 0x02d6, + 0x0288, 0x0294, 0x029a, 0x02a0, 0x02b2, 0x02bb, 0x02c1, 0x02cd, // Entry 40 - 7F - 0x02eb, 0x02fa, 0x030f, 0x031b, 0x0327, 0x032d, 0x0339, 0x0348, - 0x0351, 0x0360, 0x0366, 0x036c, 0x0372, 0x0381, 0x0393, 0x039f, - 0x03a5, 0x03ab, 0x03b1, 0x03bd, 0x03c9, 0x03d8, 0x03e1, 0x03e7, - 0x03f3, 0x03fc, 0x0405, 0x040e, 0x041a, 0x0429, 0x042f, 0x0453, - 0x045f, 0x0465, 0x0474, 0x047d, 0x0498, 0x04b6, 0x04c2, 0x04ce, - 0x04d4, 0x04dd, 0x04ec, 0x04fb, 0x0504, 0x050d, 0x0513, 0x0519, - 0x052e, 0x0537, 0x053d, 0x0543, 0x054c, 0x0555, 0x055e, 0x0564, - 0x056a, 0x0573, 0x0585, 0x058e, 0x059a, 0x05a3, 0x05b8, 0x05be, + 0x02e2, 0x02f1, 0x0306, 0x0312, 0x031e, 0x0324, 0x0330, 0x033f, + 0x0348, 0x0357, 0x035d, 0x035d, 0x0363, 0x0369, 0x0378, 0x038a, + 0x0396, 0x039c, 0x03a2, 0x03a8, 0x03b4, 0x03c0, 0x03cf, 0x03db, + 0x03e1, 0x03ed, 0x03f6, 0x03ff, 0x0408, 0x0414, 0x0423, 0x0429, + 0x044a, 0x0456, 0x045c, 0x046b, 0x0474, 0x048f, 0x04ad, 0x04b9, + 0x04c5, 0x04cb, 0x04d4, 0x04e3, 0x04f2, 0x04fb, 0x0504, 0x050d, + 0x0513, 0x0528, 0x0531, 0x0537, 0x053d, 0x0546, 0x054f, 0x0558, + 0x055e, 0x0564, 0x056d, 0x057f, 0x0588, 0x0594, 0x059d, 0x05b2, // Entry 80 - BF - 0x05c4, 0x05cd, 0x05d9, 0x05e8, 0x05ee, 0x05f7, 0x0603, 0x0612, - 0x061e, 0x062a, 0x0633, 0x063c, 0x0645, 0x0651, 0x065a, 0x0663, - 0x066c, 0x0678, 0x067e, 0x068d, 0x069c, 0x06ab, 0x06b4, 0x06ba, - 0x06c0, 0x06c6, 0x06e1, 0x06f6, 0x0702, 0x0711, 0x0720, 0x0729, - 0x0735, 0x0741, 0x074a, 0x0753, 0x075f, 0x076b, 0x0777, 0x0789, - 0x0792, 0x079e, 0x07aa, 0x07b6, 0x07bc, 0x07c2, 0x07cb, 0x07d1, - 0x07d7, 0x07e0, 0x07e6, 0x07ef, 0x07f5, 0x080a, 0x081f, 0x0828, - 0x0834, 0x083a, 0x0858, 0x086a, 0x0876, 0x0888, 0x0891, 0x0897, + 0x05b8, 0x05be, 0x05c7, 0x05d3, 0x05e2, 0x05e8, 0x05f1, 0x05fd, + 0x060c, 0x0618, 0x0624, 0x062d, 0x0636, 0x063f, 0x064b, 0x0654, + 0x065d, 0x0666, 0x0672, 0x0678, 0x0684, 0x0693, 0x06a2, 0x06ab, + 0x06b1, 0x06b7, 0x06bd, 0x06d8, 0x06ed, 0x06f9, 0x0708, 0x0717, + 0x0720, 0x072c, 0x0738, 0x0741, 0x074a, 0x0756, 0x0762, 0x076e, + 0x0780, 0x0789, 0x0795, 0x07a1, 0x07ad, 0x07b3, 0x07b9, 0x07c2, + 0x07c8, 0x07ce, 0x07d7, 0x07dd, 0x07e6, 0x07ec, 0x0801, 0x0816, + 0x081f, 0x082b, 0x0831, 0x084f, 0x0861, 0x086d, 0x087f, 0x0888, // Entry C0 - FF - 0x08a0, 0x08a9, 0x08be, 0x08c7, 0x08d3, 0x08df, 0x08e8, 0x08f1, - 0x0900, 0x090f, 0x0918, 0x091e, 0x0924, 0x092d, 0x0939, 0x0948, - 0x0963, 0x096f, 0x097b, 0x0987, 0x0993, 0x099c, 0x09a5, 0x09ae, - 0x09c6, 0x09d2, 0x09e1, 0x09ea, 0x09f6, 0x0a15, 0x0a30, 0x0a36, - 0x0a48, 0x0a4e, 0x0a54, 0x0a63, 0x0a6c, 0x0a75, 0x0a84, 0x0a8d, - 0x0a93, 0x0a9c, 0x0ab4, 0x0abd, 0x0ac3, 0x0acf, 0x0ad8, 0x0ae1, - 0x0af9, 0x0aff, 0x0b08, 0x0b1a, 0x0b23, 0x0b41, 0x0b4d, 0x0b5f, - 0x0b71, 0x0b77, 0x0b83, 0x0b98, 0x0ba1, 0x0baa, 0x0bb0, 0x0bb9, + 0x088e, 0x0897, 0x08a0, 0x08b5, 0x08be, 0x08ca, 0x08d6, 0x08df, + 0x08e8, 0x08f7, 0x0906, 0x090f, 0x0915, 0x091b, 0x0924, 0x0930, + 0x093f, 0x0957, 0x0963, 0x096f, 0x097b, 0x0987, 0x0990, 0x0999, + 0x09a2, 0x09ba, 0x09c6, 0x09d5, 0x09de, 0x09ea, 0x0a09, 0x0a24, + 0x0a2a, 0x0a3c, 0x0a42, 0x0a48, 0x0a57, 0x0a60, 0x0a69, 0x0a78, + 0x0a81, 0x0a87, 0x0a90, 0x0aa8, 0x0ab1, 0x0ab7, 0x0ac3, 0x0acc, + 0x0ad5, 0x0aed, 0x0af6, 0x0afc, 0x0b05, 0x0b17, 0x0b20, 0x0b3e, + 0x0b4a, 0x0b5f, 0x0b74, 0x0b7a, 0x0b86, 0x0b9b, 0x0ba4, 0x0bad, // Entry 100 - 13F - 0x0bbf, 0x0bc8, 0x0bd4, 0x0be0, 0x0be6, 0x0bec, 0x0bf5, 0x0bfe, - 0x0c07, 0x0c0d, 0x0c16, 0x0c1c, 0x0c22, 0x0c28, 0x0c34, 0x0c3a, - 0x0c46, 0x0c55, 0x0c5b, 0x0c61, 0x0c6a, 0x0c70, 0x0c7f, 0x0c8e, - 0x0ca6, 0x0cb5, 0x0cbb, 0x0cc1, 0x0cc7, 0x0ccd, 0x0cd3, 0x0cd9, - 0x0cdf, 0x0ceb, -} // Size: 604 bytes - -var zhHantRegionStr string = "" + // Size: 3315 bytes + 0x0bb3, 0x0bbc, 0x0bc2, 0x0bcb, 0x0bd7, 0x0be3, 0x0be9, 0x0bef, + 0x0bf8, 0x0c01, 0x0c0a, 0x0c10, 0x0c19, 0x0c1f, 0x0c25, 0x0c2b, + 0x0c37, 0x0c3d, 0x0c49, 0x0c58, 0x0c5e, 0x0c64, 0x0c6d, 0x0c73, + 0x0c82, 0x0c91, 0x0ca9, 0x0cb8, 0x0cbe, 0x0cc4, 0x0cca, 0x0cd0, + 0x0cd6, 0x0cdc, 0x0ce2, 0x0cee, +} // Size: 608 bytes + +const zhHantRegionStr string = "" + // Size: 3255 bytes "阿森松島安道爾阿拉伯聯合大公國阿富汗安地卡及巴布達安圭拉阿爾巴尼亞亞美尼亞安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞塞拜然波士尼" + "亞與赫塞哥維納巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那白俄羅斯貝里" + - "斯加拿大科科斯(基林)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓島哥斯大黎加古巴" + - "維德角庫拉索聖誕島賽普勒斯捷克共和國德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及西撒哈拉厄利" + - "垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根西島迦納直布羅陀格陵蘭甘比亞幾內" + - "亞瓜地洛普赤道幾內亞希臘南喬治亞與南三明治群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共和國香港特別行政區赫德島和麥克唐納群島宏都拉斯克羅埃西亞" + - "海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩聖克里斯多福" + - "及尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多瓦蒙特內哥" + - "羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫" + - "馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴" + - "布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾和密克隆群島皮特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄" + - "羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡聖赫勒拿島斯洛維尼亞冷岸及央麥恩群島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖" + - "多美普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西" + - "亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏拉圭烏茲別克梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京群島美屬維京" + - "群島越南萬那杜瓦利斯和富圖納群島薩摩亞科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲南部美洲北美" + - "加勒比海東亞南亞東南亞南歐澳洲與紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲" - -var zhHantRegionIdx = []uint16{ // 290 elements + "斯加拿大科科斯(基林)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中國哥倫比亞克里派頓島哥斯大黎加古巴維德角庫拉" + + "索聖誕島賽普勒斯捷克德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及西撒哈拉厄利垂亞西班牙衣索比" + + "亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞法屬圭亞那根息迦納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘" + + "南喬治亞與南三明治群島瓜地馬拉關島幾內亞比索蓋亞那中國香港特別行政區赫德島和麥克唐納群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色" + + "列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩聖克里斯多福及尼維斯北韓南韓科威特開曼群島哈薩" + + "克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬" + + "其頓馬利緬甸蒙古中國澳門特別行政區北馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多" + + "尼亞尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾和密克" + + "隆群島皮特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞" + + "典新加坡聖赫勒拿島斯洛維尼亞冷岸及央棉斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯" + + "坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭" + + "烏干達美國本土外小島嶼聯合國美國烏拉圭烏茲別克梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京群島美屬維京群島越南萬那杜瓦利斯群島和富圖那群島薩摩亞科" + + "索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲南部美洲北美加勒比海東亞南亞東南亞南歐澳洲與紐西蘭美" + + "拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲" + +var zhHantRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00a8, 0x00b7, @@ -44517,157 +49623,160 @@ var zhHantRegionIdx = []uint16{ // 290 elements 0x0129, 0x0132, 0x0138, 0x0144, 0x014d, 0x0153, 0x015f, 0x0171, 0x0177, 0x0180, 0x0186, 0x018f, 0x0198, 0x01a4, 0x01ad, 0x01b6, 0x01d1, 0x01e6, 0x01f5, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, - 0x0237, 0x024c, 0x0258, 0x0267, 0x0276, 0x027c, 0x0285, 0x028e, - 0x0297, 0x02a3, 0x02b2, 0x02b8, 0x02cd, 0x02d6, 0x02dc, 0x02e8, + 0x0237, 0x023d, 0x0249, 0x0258, 0x0267, 0x026d, 0x0276, 0x027f, + 0x0288, 0x0294, 0x029a, 0x02a0, 0x02b5, 0x02be, 0x02c4, 0x02d0, // Entry 40 - 7F - 0x02fd, 0x030c, 0x0321, 0x032a, 0x0336, 0x033c, 0x0348, 0x0354, - 0x035d, 0x0369, 0x036f, 0x0375, 0x037b, 0x038a, 0x03a2, 0x03ae, - 0x03b4, 0x03ba, 0x03c0, 0x03cc, 0x03de, 0x03ed, 0x03f6, 0x03fc, - 0x0408, 0x0411, 0x041a, 0x0423, 0x042f, 0x043e, 0x0444, 0x0465, - 0x0471, 0x0477, 0x0486, 0x048f, 0x04b9, 0x04d7, 0x04e3, 0x04f2, - 0x04f8, 0x0501, 0x0510, 0x0516, 0x051f, 0x0528, 0x052e, 0x0534, - 0x0549, 0x0552, 0x0558, 0x055e, 0x0567, 0x0570, 0x0579, 0x057f, - 0x0585, 0x058b, 0x0597, 0x05a0, 0x05ac, 0x05b2, 0x05d0, 0x05d6, + 0x02e5, 0x02f4, 0x0309, 0x0312, 0x031e, 0x0324, 0x0330, 0x033c, + 0x0345, 0x0351, 0x0357, 0x0357, 0x035d, 0x0363, 0x0372, 0x038a, + 0x0396, 0x039c, 0x03a2, 0x03a8, 0x03b4, 0x03bd, 0x03cc, 0x03d2, + 0x03d8, 0x03e4, 0x03ed, 0x03f6, 0x03ff, 0x040b, 0x041a, 0x0420, + 0x0441, 0x044d, 0x0453, 0x0462, 0x046b, 0x0486, 0x04a4, 0x04b0, + 0x04bf, 0x04c5, 0x04ce, 0x04dd, 0x04e3, 0x04ec, 0x04f5, 0x04fb, + 0x0501, 0x0516, 0x051f, 0x0525, 0x052b, 0x0534, 0x053d, 0x0546, + 0x054c, 0x0552, 0x0558, 0x0564, 0x056d, 0x0579, 0x057f, 0x059d, // Entry 80 - BF - 0x05dc, 0x05e5, 0x05f1, 0x05fa, 0x0600, 0x0609, 0x0615, 0x0624, - 0x0630, 0x063c, 0x0645, 0x064e, 0x0657, 0x0663, 0x066c, 0x0675, - 0x067e, 0x068a, 0x0699, 0x06a8, 0x06b7, 0x06c6, 0x06cf, 0x06d5, - 0x06db, 0x06e1, 0x070b, 0x0720, 0x072f, 0x073e, 0x0747, 0x0750, - 0x075c, 0x0768, 0x0771, 0x077a, 0x0786, 0x0792, 0x079e, 0x07b0, - 0x07b6, 0x07c2, 0x07ce, 0x07da, 0x07e0, 0x07e6, 0x07ef, 0x07f5, - 0x07fe, 0x0807, 0x0813, 0x081c, 0x0822, 0x0837, 0x084c, 0x0855, - 0x0861, 0x0867, 0x0885, 0x0894, 0x08a0, 0x08b5, 0x08be, 0x08c4, + 0x05a3, 0x05a9, 0x05b2, 0x05be, 0x05c7, 0x05cd, 0x05d6, 0x05e2, + 0x05f1, 0x05fd, 0x0609, 0x0612, 0x061b, 0x0624, 0x0630, 0x0639, + 0x0642, 0x064b, 0x0657, 0x0666, 0x0675, 0x0684, 0x0693, 0x069c, + 0x06a2, 0x06a8, 0x06ae, 0x06c9, 0x06de, 0x06ed, 0x06fc, 0x0705, + 0x070e, 0x071a, 0x0726, 0x072f, 0x0738, 0x0744, 0x0750, 0x075c, + 0x076e, 0x0774, 0x0780, 0x078c, 0x0798, 0x079e, 0x07a4, 0x07ad, + 0x07b3, 0x07bc, 0x07c5, 0x07d1, 0x07da, 0x07e0, 0x07f5, 0x080a, + 0x0813, 0x081f, 0x0825, 0x0843, 0x0852, 0x085e, 0x0873, 0x087c, // Entry C0 - FF - 0x08cd, 0x08d3, 0x08e8, 0x08f1, 0x08fd, 0x0909, 0x0912, 0x091b, - 0x092d, 0x093c, 0x0945, 0x094b, 0x0951, 0x095a, 0x0969, 0x0978, - 0x0990, 0x099c, 0x09a5, 0x09b1, 0x09bd, 0x09c9, 0x09d2, 0x09db, - 0x09f0, 0x09fc, 0x0a0b, 0x0a14, 0x0a20, 0x0a3e, 0x0a59, 0x0a5f, - 0x0a71, 0x0a77, 0x0a7d, 0x0a86, 0x0a95, 0x0a9e, 0x0aa7, 0x0ab3, - 0x0ab9, 0x0ac2, 0x0ad7, 0x0ae0, 0x0ae6, 0x0af2, 0x0afb, 0x0b04, - 0x0b1c, 0x0b22, 0x0b2b, 0x0b37, 0x0b40, 0x0b58, 0x0b64, 0x0b76, - 0x0b88, 0x0b8e, 0x0b97, 0x0bb2, 0x0bbb, 0x0bc4, 0x0bca, 0x0bd3, + 0x0882, 0x088b, 0x0891, 0x08a6, 0x08af, 0x08bb, 0x08c7, 0x08d0, + 0x08d9, 0x08eb, 0x08fa, 0x0903, 0x0909, 0x090f, 0x0918, 0x0927, + 0x0936, 0x0945, 0x0951, 0x095a, 0x0966, 0x0972, 0x097e, 0x0987, + 0x0990, 0x09a5, 0x09b1, 0x09c0, 0x09c9, 0x09d5, 0x09f3, 0x0a0e, + 0x0a14, 0x0a26, 0x0a2c, 0x0a32, 0x0a3b, 0x0a4a, 0x0a53, 0x0a5c, + 0x0a68, 0x0a6e, 0x0a77, 0x0a8c, 0x0a95, 0x0a9b, 0x0aa7, 0x0ab0, + 0x0ab9, 0x0ad1, 0x0ada, 0x0ae0, 0x0ae9, 0x0af5, 0x0afe, 0x0b16, + 0x0b22, 0x0b34, 0x0b46, 0x0b4c, 0x0b55, 0x0b76, 0x0b7f, 0x0b88, // Entry 100 - 13F - 0x0bd9, 0x0be2, 0x0beb, 0x0bf7, 0x0bfd, 0x0c03, 0x0c0c, 0x0c15, - 0x0c1e, 0x0c24, 0x0c2a, 0x0c30, 0x0c36, 0x0c3c, 0x0c48, 0x0c4e, - 0x0c54, 0x0c60, 0x0c66, 0x0c6c, 0x0c75, 0x0c7b, 0x0c8d, 0x0c9c, - 0x0cae, 0x0cbd, 0x0cc3, 0x0cc9, 0x0ccf, 0x0cd5, 0x0cdb, 0x0ce1, - 0x0ce7, 0x0cf3, -} // Size: 604 bytes - -var zuRegionStr string = "" + // Size: 3556 bytes + 0x0b8e, 0x0b97, 0x0b9d, 0x0ba6, 0x0baf, 0x0bbb, 0x0bc1, 0x0bc7, + 0x0bd0, 0x0bd9, 0x0be2, 0x0be8, 0x0bee, 0x0bf4, 0x0bfa, 0x0c00, + 0x0c0c, 0x0c12, 0x0c18, 0x0c24, 0x0c2a, 0x0c30, 0x0c39, 0x0c3f, + 0x0c51, 0x0c60, 0x0c72, 0x0c81, 0x0c87, 0x0c8d, 0x0c93, 0x0c99, + 0x0c9f, 0x0ca5, 0x0cab, 0x0cb7, +} // Size: 608 bytes + +const zuRegionStr string = "" + // Size: 3561 bytes "i-Ascension Islandi-Andorrai-United Arab Emiratesi-Afghanistani-Antigua " + - "and Barbudai-Anguillai-Albaniai-Armeniai-Angolai-Antarcticai-Argentinai-" + - "American Samoai-Austriai-Australiai-Arubai-Åland Islandsi-Azerbaijani-Bo" + - "snia ne-Herzegovinai-Barbadosi-Bangladeshi-Belgiumi-Burkina Fasoi-Bulgar" + - "iai-Bahraini-Burundii-Benini-Saint Barthélemyi-Bermudai-Bruneii-Boliviai" + - "-Caribbean Netherlandsi-Brazili-Bahamasi-Bhutani-Bouvet IslandiBotswanai" + - "-Belarusi-Belizei-Canadai-Cocos (Keeling) Islandsi-Congo - Kinshasai-Cen" + - "tral African Republici-Congo - Brazzavillei-Switzerlandi-Côte d’Ivoirei-" + - "Cook Islandsi-Chilei-Camerooni-Chinai-Colombiai-Clipperton Islandi-Costa" + - " Ricai-Cubai-Cape Verdei-Curaçaoi-Christmas Islandi-Cyprusi-Czech Republ" + - "ici-Germanyi-Diego Garciai-Djiboutii-Denmarki-Dominicai-Dominican Republ" + - "ici-Algeriai-Cueta ne-Melillai-Ecuadori-Estoniai-Egypti-Western Saharai-" + - "Eritreai-Spaini-Ethiopiai-European Unioni-Finlandi-Fijii-Falkland Island" + - "si-Micronesiai-Faroe Islandsi-Francei-Gaboni-United Kingdomi-Grenadai-Ge" + - "orgiai-French Guianai-Guernseyi-Ghanai-Gibraltari-Greenlandi-Gambiai-Gui" + - "neai-Guadeloupei-Equatorial Guineai-Greecei-South Georgia ne-South Sandw" + - "ich Islandsi-Guatemalai-Guami-Guinea-Bissaui-Guyanai-Hong Kong SAR China" + - "i-Heard Island ne-McDonald Islandsi-Hondurasi-Croatiai-Haitii-Hungaryi-C" + - "anary Islandsi-Indonesiai-Irelandkwa-Israeli-Isle of Mani-Indiai-British" + - " Indian Ocean Territoryi-Iraqi-Irani-Icelandi-Italyi-Jerseyi-Jamaicai-Jo" + - "rdani-Japani-Kenyai-Kyrgyzstani-Cambodiai-Kiribatii-Comorosi-Saint Kitts" + - " ne-Nevisi-North Koreai-South Koreai-Kuwaiti-Cayman Islandsi-Kazakhstani" + - "-Laosi-Lebanoni-Saint Luciai-Liechtensteini-Sri Lankai-LiberiaiLesothoi-" + - "Lithuaniai-Luxembourgi-Latviai-Libyai-Moroccoi-Monacoi-Moldovai-Monteneg" + - "roi-Saint Martini-Madagascari-Marshall Islandsi-MacedoniaiMalii-Myanmar " + - "(Burma)i-Mongoliai-Macau SAR Chinai-Northern Mariana Islandsi-Martinique" + - "i-Mauritaniai-Montserrati-Maltai-Mauritiusi-MaldivesiMalawii-Mexicoi-Mal" + - "aysiai-Mozambiquei-Namibiai-New Caledoniai-Nigeri-Norfolk Islandi-Nigeri" + - "ai-Nicaraguai-Netherlandsi-Norwayi-Nepali-Naurui-Niuei-New Zealandi-Oman" + - "i-Panamai-Perui-French Polynesiai-Papua New Guineai-Philippinesi-Pakista" + - "ni-Polandi-Saint Pierre kanye ne-Miqueloni-Pitcairn Islandsi-Puerto Rico" + - "i-Palestinian Territoriesi-Portugali-Palaui-Paraguayi-Qatari-Outlying Oc" + - "eaniai-Réunioni-Romaniai-Serbiai-Russiai-Rwandai-Saudi Arabiai-Solomon I" + - "slandsi-Seychellesi-Sudani-Swedeni-Singaporei-Saint Helenai-Sloveniai-Sv" + - "albard ne-Jan Mayeni-Slovakiai-Sierra Leonei-San Marinoi-Senegali-Somali" + - "ai-Surinamei-South Sudani-São Tomé kanye ne-Príncipei-El Salvadori-Sint " + - "Maarteni-Syriai-Swazilandi-Tristan da Cunhai-Turks and Caicos Islandsi-C" + - "hadi-French Southern Territoriesi-Togoi-Thailandi-Tajikistani-Tokelaui-T" + - "imor-Lestei-Turkmenistani-Tunisiai-Tongai-Turkeyi-Trinidad ne-Tobagoi-Tu" + - "valui-Taiwani-Tanzaniai-Ukrainei-Ugandai-U.S. Minor Outlying Islandsi-Un" + - "ited Statesi-Uruguayi-Uzbekistani-Vatican Cityi-Saint Vincent ne-Grenadi" + - "nesi-Venezuelai-British Virgin Islandsi-U.S. Virgin Islandsi-Vietnami-Va" + - "nuatui-Wallis ne-Futunai-Samoai-Kosovoi-Yemeni-Mayottei-South Africai-Za" + - "mbiaiZimbabweiSifunda esingaziwaumhlabai-Africai-North Americai-South Am" + - "ericai-Oceaniai-Western Africai-Central Americai-Eastern Africai-Norther" + - "n Africai-Middle Africai-Southern Africai-Americasi-Northern Americai-Ca" + - "ribbeani-Eastern Asiai-Southern Asiai-South-Eastern Asiai-Southern Europ" + - "ei-Australasiai-Melanesiai-Micronesian Regioni-Polynesiai-Asiai-Central " + - "Asiai-Western Asiai-Europei-Eastern Europei-Northern Europei-Western Eur" + - "opei-Latin America" - -var zuRegionIdx = []uint16{ // 290 elements + "ne-Barbudai-Anguillai-Albaniai-Armeniai-Angolai-Antarcticai-Argentinai-A" + + "merican Samoai-Austriai-Australiai-Arubai-Åland Islandsi-Azerbaijani-Bos" + + "nia ne-Herzegovinai-Barbadosi-Bangladeshi-Belgiumi-Burkina Fasoi-Bulgari" + + "ai-Bahraini-Burundii-Benini-Saint Barthélemyi-Bermudai-Bruneii-Boliviai-" + + "Caribbean Netherlandsi-Brazili-Bahamasi-Bhutani-Bouvet IslandiBotswanai-" + + "Belarusi-Belizei-Canadai-Cocos (Keeling) Islandsi-Congo - Kinshasai-Cent" + + "ral African Republici-Congo - Brazzavillei-Switzerlandi-Côte d’Ivoirei-C" + + "ook Islandsi-Chilei-Camerooni-Chinai-Colombiai-Clipperton Islandi-Costa " + + "Ricai-Cubai-Cape Verdei-Curaçaoi-Christmas Islandi-Cyprusi-Czechiai-Germ" + + "anyi-Diego Garciai-Djiboutii-Denmarki-Dominicai-Dominican Republici-Alge" + + "riai-Cueta ne-Melillai-Ecuadori-Estoniai-Egypti-Western Saharai-Eritreai" + + "-Spaini-Ethiopiai-European Unioni-Finlandi-Fijii-Falkland Islandsi-Micro" + + "nesiai-Faroe Islandsi-Francei-Gaboni-United Kingdomi-Grenadai-Georgiai-F" + + "rench Guianai-Guernseyi-Ghanai-Gibraltari-Greenlandi-Gambiai-Guineai-Gua" + + "deloupei-Equatorial Guineai-Greecei-South Georgia ne-South Sandwich Isla" + + "ndsi-Guatemalai-Guami-Guinea-Bissaui-Guyanai-Hong Kong SAR Chinai-Heard " + + "Island ne-McDonald Islandsi-Hondurasi-Croatiai-Haitii-Hungaryi-Canary Is" + + "landsi-Indonesiai-Irelandkwa-Israeli-Isle of Mani-Indiai-British Indian " + + "Ocean Territoryi-Iraqi-Irani-Icelandi-Italyi-Jerseyi-Jamaicai-Jordani-Ja" + + "pani-Kenyai-Kyrgyzstani-Cambodiai-Kiribatii-Comorosi-Saint Kitts ne-Nevi" + + "si-North Koreai-South Koreai-Kuwaiti-Cayman Islandsi-Kazakhstani-Laosi-L" + + "ebanoni-Saint Luciai-Liechtensteini-Sri Lankai-LiberiaiLesothoi-Lithuani" + + "ai-Luxembourgi-Latviai-Libyai-Moroccoi-Monacoi-Moldovai-Montenegroi-Sain" + + "t Martini-Madagascari-Marshall Islandsi-MacedoniaiMalii-Myanmar (Burma)i" + + "-Mongoliai-Macau SAR Chinai-Northern Mariana Islandsi-Martiniquei-Maurit" + + "aniai-Montserrati-Maltai-Mauritiusi-MaldivesiMalawii-Mexicoi-Malaysiai-M" + + "ozambiquei-Namibiai-New Caledoniai-Nigeri-Norfolk Islandi-Nigeriai-Nicar" + + "aguai-Netherlandsi-Norwayi-Nepali-Naurui-Niuei-New Zealandi-Omani-Panama" + + "i-Perui-French Polynesiai-Papua New Guineai-Philippinesi-Pakistani-Polan" + + "di-Saint Pierre kanye ne-Miqueloni-Pitcairn Islandsi-Puerto Ricoi-Palest" + + "inian Territoriesi-Portugali-Palaui-Paraguayi-Qatari-Outlying Oceaniai-R" + + "éunioni-Romaniai-Serbiai-Russiai-Rwandai-Saudi Arabiai-Solomon Islandsi" + + "-Seychellesi-Sudani-Swedeni-Singaporei-St. Helenai-Sloveniai-Svalbard ne" + + "-Jan Mayeni-Slovakiai-Sierra Leonei-San Marinoi-Senegali-Somaliai-Surina" + + "mei-South Sudani-São Tomé kanye ne-Príncipei-El Salvadori-Sint Maarteni-" + + "Syriai-Swazilandi-Tristan da Cunhai-Turks ne-Caicos Islandsi-Chadi-Frenc" + + "h Southern Territoriesi-Togoi-Thailandi-Tajikistani-Tokelaui-Timor-Leste" + + "i-Turkmenistani-Tunisiai-Tongai-Turkeyi-Trinidad ne-Tobagoi-Tuvalui-Taiw" + + "ani-Tanzaniai-Ukrainei-Ugandai-U.S. Minor Outlying IslandsI-United Natio" + + "nsi-United Statesi-Uruguayi-Uzbekistani-Vatican Cityi-Saint Vincent ne-G" + + "renadinesi-Venezuelai-British Virgin Islandsi-U.S. Virgin Islandsi-Vietn" + + "ami-Vanuatui-Wallis ne-Futunai-Samoai-Kosovoi-Yemeni-Mayottei-South Afri" + + "cai-ZambiaiZimbabweiSifunda esingaziwaumhlabai-Africai-North Americai-So" + + "uth Americai-Oceaniai-Western Africai-Central Americai-Eastern Africai-N" + + "orthern Africai-Middle Africai-Southern Africai-Americasi-Northern Ameri" + + "cai-Caribbeani-Eastern Asiai-Southern Asiai-South-Eastern Asiai-Southern" + + " Europei-Australasiai-Melanesiai-Micronesian Regioni-Polynesiai-Asiai-Ce" + + "ntral Asiai-Western Asiai-Europei-Eastern Europei-Northern Europei-Weste" + + "rn Europei-Latin America" + +var zuRegionIdx = []uint16{ // 292 elements // Entry 0 - 3F - 0x0000, 0x0012, 0x001b, 0x0031, 0x003e, 0x0053, 0x005d, 0x0066, - 0x006f, 0x0077, 0x0083, 0x008e, 0x009e, 0x00a7, 0x00b2, 0x00b9, - 0x00c9, 0x00d5, 0x00ec, 0x00f6, 0x0102, 0x010b, 0x0119, 0x0123, - 0x012c, 0x0135, 0x013c, 0x014f, 0x0158, 0x0160, 0x0169, 0x0180, - 0x0188, 0x0191, 0x0199, 0x01a8, 0x01b1, 0x01ba, 0x01c2, 0x01ca, - 0x01e3, 0x01f5, 0x020f, 0x0224, 0x0231, 0x0243, 0x0251, 0x0258, - 0x0262, 0x0269, 0x0273, 0x0286, 0x0292, 0x0298, 0x02a4, 0x02ae, - 0x02c0, 0x02c8, 0x02d8, 0x02e1, 0x02ef, 0x02f9, 0x0302, 0x030c, + 0x0000, 0x0012, 0x001b, 0x0031, 0x003e, 0x0052, 0x005c, 0x0065, + 0x006e, 0x0076, 0x0082, 0x008d, 0x009d, 0x00a6, 0x00b1, 0x00b8, + 0x00c8, 0x00d4, 0x00eb, 0x00f5, 0x0101, 0x010a, 0x0118, 0x0122, + 0x012b, 0x0134, 0x013b, 0x014e, 0x0157, 0x015f, 0x0168, 0x017f, + 0x0187, 0x0190, 0x0198, 0x01a7, 0x01b0, 0x01b9, 0x01c1, 0x01c9, + 0x01e2, 0x01f4, 0x020e, 0x0223, 0x0230, 0x0242, 0x0250, 0x0257, + 0x0261, 0x0268, 0x0272, 0x0285, 0x0291, 0x0297, 0x02a3, 0x02ad, + 0x02bf, 0x02c7, 0x02d0, 0x02d9, 0x02e7, 0x02f1, 0x02fa, 0x0304, // Entry 40 - 7F - 0x0320, 0x0329, 0x033b, 0x0344, 0x034d, 0x0354, 0x0364, 0x036d, - 0x0374, 0x037e, 0x038e, 0x0397, 0x039d, 0x03af, 0x03bb, 0x03ca, - 0x03d2, 0x03d9, 0x03e9, 0x03f2, 0x03fb, 0x040a, 0x0414, 0x041b, - 0x0426, 0x0431, 0x0439, 0x0441, 0x044d, 0x0460, 0x0468, 0x0491, - 0x049c, 0x04a2, 0x04b1, 0x04b9, 0x04ce, 0x04f0, 0x04fa, 0x0503, - 0x050a, 0x0513, 0x0523, 0x052e, 0x0537, 0x0541, 0x054e, 0x0555, - 0x0575, 0x057b, 0x0581, 0x058a, 0x0591, 0x0599, 0x05a2, 0x05aa, - 0x05b1, 0x05b8, 0x05c4, 0x05ce, 0x05d8, 0x05e1, 0x05f7, 0x0604, + 0x0318, 0x0321, 0x0333, 0x033c, 0x0345, 0x034c, 0x035c, 0x0365, + 0x036c, 0x0376, 0x0386, 0x0386, 0x038f, 0x0395, 0x03a7, 0x03b3, + 0x03c2, 0x03ca, 0x03d1, 0x03e1, 0x03ea, 0x03f3, 0x0402, 0x040c, + 0x0413, 0x041e, 0x0429, 0x0431, 0x0439, 0x0445, 0x0458, 0x0460, + 0x0489, 0x0494, 0x049a, 0x04a9, 0x04b1, 0x04c6, 0x04e8, 0x04f2, + 0x04fb, 0x0502, 0x050b, 0x051b, 0x0526, 0x052f, 0x0539, 0x0546, + 0x054d, 0x056d, 0x0573, 0x0579, 0x0582, 0x0589, 0x0591, 0x059a, + 0x05a2, 0x05a9, 0x05b0, 0x05bc, 0x05c6, 0x05d0, 0x05d9, 0x05ef, // Entry 80 - BF - 0x0611, 0x0619, 0x0629, 0x0635, 0x063b, 0x0644, 0x0651, 0x0660, - 0x066b, 0x0674, 0x067c, 0x0687, 0x0693, 0x069b, 0x06a2, 0x06ab, - 0x06b3, 0x06bc, 0x06c8, 0x06d6, 0x06e2, 0x06f4, 0x06ff, 0x0704, - 0x0715, 0x071f, 0x0730, 0x074a, 0x0756, 0x0762, 0x076e, 0x0775, - 0x0780, 0x078a, 0x0791, 0x0799, 0x07a3, 0x07af, 0x07b8, 0x07c7, - 0x07ce, 0x07de, 0x07e7, 0x07f2, 0x07ff, 0x0807, 0x080e, 0x0815, - 0x081b, 0x0828, 0x082e, 0x0836, 0x083c, 0x084e, 0x0860, 0x086d, - 0x0877, 0x087f, 0x089f, 0x08b1, 0x08be, 0x08d7, 0x08e1, 0x08e8, + 0x05fc, 0x0609, 0x0611, 0x0621, 0x062d, 0x0633, 0x063c, 0x0649, + 0x0658, 0x0663, 0x066c, 0x0674, 0x067f, 0x068b, 0x0693, 0x069a, + 0x06a3, 0x06ab, 0x06b4, 0x06c0, 0x06ce, 0x06da, 0x06ec, 0x06f7, + 0x06fc, 0x070d, 0x0717, 0x0728, 0x0742, 0x074e, 0x075a, 0x0766, + 0x076d, 0x0778, 0x0782, 0x0789, 0x0791, 0x079b, 0x07a7, 0x07b0, + 0x07bf, 0x07c6, 0x07d6, 0x07df, 0x07ea, 0x07f7, 0x07ff, 0x0806, + 0x080d, 0x0813, 0x0820, 0x0826, 0x082e, 0x0834, 0x0846, 0x0858, + 0x0865, 0x086f, 0x0877, 0x0897, 0x08a9, 0x08b6, 0x08cf, 0x08d9, // Entry C0 - FF - 0x08f2, 0x08f9, 0x090b, 0x0915, 0x091e, 0x0926, 0x092e, 0x0936, - 0x0944, 0x0955, 0x0961, 0x0968, 0x0970, 0x097b, 0x0989, 0x0993, - 0x09aa, 0x09b4, 0x09c2, 0x09ce, 0x09d7, 0x09e0, 0x09ea, 0x09f7, - 0x0a16, 0x0a23, 0x0a31, 0x0a38, 0x0a43, 0x0a55, 0x0a6f, 0x0a75, - 0x0a92, 0x0a98, 0x0aa2, 0x0aae, 0x0ab7, 0x0ac4, 0x0ad2, 0x0adb, - 0x0ae2, 0x0aea, 0x0afe, 0x0b06, 0x0b0e, 0x0b18, 0x0b21, 0x0b29, - 0x0b46, 0x0b55, 0x0b5e, 0x0b6a, 0x0b78, 0x0b95, 0x0ba0, 0x0bb8, - 0x0bcd, 0x0bd6, 0x0bdf, 0x0bf1, 0x0bf8, 0x0c00, 0x0c07, 0x0c10, + 0x08e0, 0x08ea, 0x08f1, 0x0903, 0x090d, 0x0916, 0x091e, 0x0926, + 0x092e, 0x093c, 0x094d, 0x0959, 0x0960, 0x0968, 0x0973, 0x097f, + 0x0989, 0x09a0, 0x09aa, 0x09b8, 0x09c4, 0x09cd, 0x09d6, 0x09e0, + 0x09ed, 0x0a0c, 0x0a19, 0x0a27, 0x0a2e, 0x0a39, 0x0a4b, 0x0a64, + 0x0a6a, 0x0a87, 0x0a8d, 0x0a97, 0x0aa3, 0x0aac, 0x0ab9, 0x0ac7, + 0x0ad0, 0x0ad7, 0x0adf, 0x0af3, 0x0afb, 0x0b03, 0x0b0d, 0x0b16, + 0x0b1e, 0x0b3b, 0x0b4b, 0x0b5a, 0x0b63, 0x0b6f, 0x0b7d, 0x0b9a, + 0x0ba5, 0x0bbd, 0x0bd2, 0x0bdb, 0x0be4, 0x0bf6, 0x0bfd, 0x0c05, // Entry 100 - 13F - 0x0c1e, 0x0c26, 0x0c2f, 0x0c42, 0x0c49, 0x0c51, 0x0c60, 0x0c6f, - 0x0c78, 0x0c88, 0x0c99, 0x0ca9, 0x0cba, 0x0cc9, 0x0cda, 0x0ce4, - 0x0cf6, 0x0d01, 0x0d0f, 0x0d1e, 0x0d32, 0x0d43, 0x0d50, 0x0d5b, - 0x0d6f, 0x0d7a, 0x0d80, 0x0d8e, 0x0d9c, 0x0da4, 0x0db4, 0x0dc5, - 0x0dd5, 0x0de4, -} // Size: 604 bytes - -// Total size for region: 808304 bytes (808 KB) - -const numSupported = 220 - -var supported string = "" + // Size: 843 bytes - "af|agq|ak|am|ar|ar-EG|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|bg|bm|bn|bo|b" + - "o-IN|br|brx|bs|bs-Cyrl|ca|ce|cgg|chr|ckb|cs|cy|da|dav|de|de-CH|dje|dsb|d" + - "ua|dyo|dz|ebu|ee|el|en|en-AU|en-GB|en-NZ|eo|es|es-419|es-CL|es-MX|et|eu|" + - "ewo|fa|fa-AF|ff|fi|fil|fo|fr|fr-CA|fr-CH|fur|fy|ga|gd|gl|gsw|gu|guz|gv|h" + - "a|haw|he|hi|hr|hsb|hu|hy|id|ig|ii|is|it|ja|jgo|jmc|ka|kab|kam|kde|kea|kh" + - "q|ki|kk|kkj|kl|kln|km|kn|ko|kok|ks|ksb|ksf|ksh|kw|ky|lag|lb|lg|lkt|ln|lo" + - "|lrc|lt|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|mr|ms|mt|mua|my|mz" + - "n|naq|nd|ne|nl|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|pa-Arab|pl|prg|ps|pt|pt" + - "-PT|qu|rm|rn|ro|rof|ru|rw|rwk|sah|saq|sbp|se|se-FI|seh|ses|sg|shi|shi-La" + - "tn|si|sk|sl|smn|sn|so|sq|sr|sr-Latn|sv|sv-FI|sw|sw-CD|ta|te|teo|th|ti|to" + - "|tr|twq|tzm|ug|uk|ur|ur-IN|uz|uz-Arab|uz-Cyrl|vai|vai-Latn|vi|vun|wae|xo" + - "g|yav|yi|yo|yo-BJ|yue|zgh|zh|zh-Hant|zh-Hant-HK|zu|" + 0x0c0c, 0x0c15, 0x0c23, 0x0c2b, 0x0c34, 0x0c47, 0x0c4e, 0x0c56, + 0x0c65, 0x0c74, 0x0c7d, 0x0c8d, 0x0c9e, 0x0cae, 0x0cbf, 0x0cce, + 0x0cdf, 0x0ce9, 0x0cfb, 0x0d06, 0x0d14, 0x0d23, 0x0d37, 0x0d48, + 0x0d55, 0x0d60, 0x0d74, 0x0d7f, 0x0d85, 0x0d93, 0x0da1, 0x0da9, + 0x0db9, 0x0dca, 0x0dda, 0x0de9, +} // Size: 608 bytes + +// Total size for region: 846671 bytes (846 KB) + +const numSupported = 252 + +const supported string = "" + // Size: 1065 bytes + "af|agq|ak|am|ar|ar-EG|ar-LY|ar-SA|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|b" + + "g|bm|bn|bn-IN|bo|bo-IN|br|brx|bs|bs-Cyrl|ca|ce|cgg|chr|ckb|cs|cy|da|dav|" + + "de|de-AT|de-CH|de-LU|dje|dsb|dua|dyo|dz|ebu|ee|el|en|en-AU|en-IN|en-NZ|e" + + "o|es|es-419|es-AR|es-BO|es-CL|es-CO|es-CR|es-DO|es-EC|es-GT|es-HN|es-MX|" + + "es-NI|es-PA|es-PE|es-PR|es-PY|es-SV|es-US|es-VE|et|eu|ewo|fa|fa-AF|ff|fi" + + "|fil|fo|fr|fr-BE|fr-CA|fr-CH|fur|fy|ga|gd|gl|gsw|gu|guz|gv|ha|haw|he|hi|" + + "hr|hsb|hu|hy|id|ig|ii|is|it|ja|jgo|jmc|ka|kab|kam|kde|kea|khq|ki|kk|kkj|" + + "kl|kln|km|kn|ko|ko-KP|kok|ks|ksb|ksf|ksh|kw|ky|lag|lb|lg|lkt|ln|lo|lrc|l" + + "t|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|mr|ms|mt|mua|my|mzn|naq|" + + "nd|ne|nl|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|pa-Arab|pl|prg|ps|pt|pt-PT|qu" + + "|rm|rn|ro|ro-MD|rof|ru|ru-UA|rw|rwk|sah|saq|sbp|se|se-FI|seh|ses|sg|shi|" + + "shi-Latn|si|sk|sl|smn|sn|so|sq|sr|sr-Cyrl-BA|sr-Cyrl-ME|sr-Cyrl-XK|sr-La" + + "tn|sr-Latn-BA|sr-Latn-ME|sr-Latn-XK|sv|sv-FI|sw|sw-CD|sw-KE|ta|te|teo|th" + + "|ti|to|tr|twq|tzm|ug|uk|ur|ur-IN|uz|uz-Arab|uz-Cyrl|vai|vai-Latn|vi|vun|" + + "wae|xog|yav|yi|yo|yo-BJ|yue|zgh|zh|zh-Hant|zh-Hant-HK|zu|" // Dictionary entries of frequent languages var ( @@ -44743,12 +49852,6 @@ var ( header{enScriptStr, enScriptIdx}, header{enRegionStr, enRegionIdx}, } - enGB = Dictionary{ // en-GB - &en, - header{enGBLangStr, enGBLangIdx}, - header{enGBScriptStr, enGBScriptIdx}, - header{enGBRegionStr, enGBRegionIdx}, - } es = Dictionary{ // es nil, header{esLangStr, esLangIdx}, @@ -45119,7 +50222,7 @@ var ( // Total size for 79 entries: 10112 bytes (10 KB) -// Number of keys: 219 +// Number of keys: 217 var ( selfIndex = tagIndex{ "afakamarasazbebgbmbnbobrbscacecscydadedzeeeleneoeseteufafffifofrfygagdgl" + @@ -45132,7 +50235,7 @@ var ( "avyuezgh", "", } - selfTagsLong = []string{ // 28 elements + selfTagsLong = []string{ // 26 elements "ar-001", "az-Cyrl", "bs-Cyrl", @@ -45148,9 +50251,7 @@ var ( "fa-AF", "fr-CA", "fr-CH", - "nl-BE", "pa-Arab", - "pt-BR", "pt-PT", "ro-MD", "shi-Latn", @@ -45166,19 +50267,19 @@ var ( var selfHeaders = [1]header{ { // mul - "AfrikaansAkanአማርኛالعربيةঅসমীয়াazərbaycan diliбеларускаябългарскиbamanak" + - "anবাংলাབོད་སྐད་brezhonegbosanskicatalàнохчийнčeštinaCymraegdanskDeut" + - "schརྫོང་ཁEʋegbeΕλληνικάEnglishesperantoespañoleestieuskaraفارسیPulaa" + - "rsuomiføroysktfrançaisWest-FryskGaeilgeGàidhliggalegoગુજરાતીGaelgHau" + - "saעבריתहिन्दीhrvatskimagyarհայերենIndonesiaIgboꆈꌠꉙíslenskaitaliano日本" + - "語ქართულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewekкыргы" + - "зчаLëtzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyм" + - "акедонскиമലയാളംмонголमराठीBahasa MelayuMaltiဗမာisiNdebeleनेपालीNede" + - "rlandsnynorsknorsk bokmålOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsRun" + - "asimirumantschIkirundiromânăрусскийKinyarwandadavvisámegiellaSängöසි" + - "ංහලslovenčinaslovenščinachiShonaSoomaalishqipсрпскиsvenskaKiswahil" + - "iதமிழ்తెలుగుไทยትግርኛlea fakatongaTürkçeئۇيغۇرچەукраїнськаاردوo‘zbekTi" + - "ếng ViệtייִדישÈdè Yorùbá中文isiZuluAghemKipareasturianuƁàsàaIchibemb" + + "AfrikaansAkanአማርኛالعربيةঅসমীয়াazərbaycanбеларускаябългарскиbamanakanবাং" + + "লাབོད་སྐད་brezhonegbosanskicatalàнохчийнčeštinaCymraegdanskDeutsch" + + "རྫོང་ཁEʋegbeΕλληνικάEnglishesperantoespañoleestieuskaraفارسیPulaar" + + "suomiføroysktfrançaisWest-FryskGaeilgeGàidhliggalegoગુજરાતીGaelgHaus" + + "aעבריתहिन्दीhrvatskimagyarհայերենIndonesiaIgboꆈꌠꉙíslenskaitaliano日本語" + + "ქართულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewekкыргыз" + + "чаLëtzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyма" + + "кедонскиമലയാളംмонголमराठीBahasa MelayuMaltiမြန်မာisiNdebeleनेपालीNe" + + "derlandsnynorsknorsk bokmålOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsR" + + "unasimirumantschIkirundiromânăрусскийKinyarwandadavvisámegiellaSängö" + + "සිංහලslovenčinaslovenščinachiShonaSoomaalishqipсрпскиsvenskaKiswah" + + "iliதமிழ்తెలుగుไทยትግርኛlea fakatongaTürkçeئۇيغۇرچەукраїнськаاردوo‘zbek" + + "Tiếng ViệtייִדישÈdè Yorùbá中文isiZuluAghemKipareasturianuƁàsàaIchibemb" + "aHibenaबड़ोRukigaᏣᎳᎩکوردیی ناوەندیKitaitaZarmaciinedolnoserbšćinaduá" + "lájoolaKĩembuewondoFilipinofurlanSchwiizertüütschEkegusiiʻŌlelo Hawa" + "iʻihornjoserbšćinaNdaꞌaKimachameTaqbaylitKikambaChimakondekabuverdia" + @@ -45187,49 +50288,49 @@ var selfHeaders = [1]header{ "زرونیKhoekhoegowabShwóŋò ngiembɔɔnThok NathRunyankoreprūsiskanKihor" + "omboKiruwaсаха тылаKisampurIshisangusenaKoyraboro senniⵜⴰⵛⵍⵃⵉⵜanarâš" + "kielâKitesoTasawaq senniTamaziɣt n laṭlaṣꕙꔤKyivunjoWalserOlusoganuas" + - "ue粵語ⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةазәрбајҹан дилибосанскиÖsterreich" + - "isches DeutschSchweizer HochdeutschAustralian EnglishCanadian Englis" + - "hBritish EnglishAmerican Englishespañol latinoamericanoespañol de Es" + - "pañaespañol de Méxicoدریfrançais canadienfrançais suisseVlaamsپنجابی" + - "português do Brasilportuguês europeumoldoveneascăTashelḥiytSrpskohrv" + - "atskiKiswahili ya KongoاوزبیکЎзбекVai简体中文繁體中文", - []uint16{ // 220 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x000d, 0x0019, 0x0027, 0x003c, 0x004c, 0x0060, - 0x0072, 0x007b, 0x008a, 0x00a2, 0x00ab, 0x00b3, 0x00ba, 0x00c8, - 0x00d1, 0x00d8, 0x00dd, 0x00e4, 0x00f6, 0x00fd, 0x010d, 0x0114, - 0x011d, 0x0125, 0x012a, 0x0131, 0x013b, 0x0141, 0x0146, 0x014f, - 0x0158, 0x0162, 0x0169, 0x0172, 0x0178, 0x018d, 0x0192, 0x0197, - 0x01a1, 0x01b3, 0x01bb, 0x01c1, 0x01cf, 0x01d8, 0x01dc, 0x01e5, - 0x01ee, 0x01f6, 0x01ff, 0x0214, 0x021a, 0x022d, 0x0238, 0x0247, - 0x0256, 0x025f, 0x0269, 0x0271, 0x0281, 0x0290, 0x0297, 0x029f, - // Entry 40 - 7F - 0x02a8, 0x02b1, 0x02b9, 0x02c2, 0x02ca, 0x02de, 0x02f0, 0x02fc, - 0x030b, 0x0318, 0x031d, 0x0326, 0x0330, 0x0342, 0x034c, 0x0353, - 0x0360, 0x0366, 0x0375, 0x037d, 0x038f, 0x0395, 0x039d, 0x03a7, - 0x03af, 0x03b8, 0x03c0, 0x03c8, 0x03d6, 0x03e1, 0x03f1, 0x03f8, - 0x0407, 0x0412, 0x041f, 0x0427, 0x042f, 0x0434, 0x0440, 0x0447, - 0x0450, 0x045f, 0x0471, 0x047a, 0x0486, 0x0493, 0x049b, 0x04ab, - 0x04bf, 0x04c7, 0x04cf, 0x04dd, 0x04e9, 0x04f7, 0x04fd, 0x0504, - 0x0509, 0x050f, 0x0518, 0x0520, 0x0529, 0x052f, 0x053b, 0x0541, - // Entry 80 - BF - 0x054a, 0x0565, 0x056c, 0x0576, 0x0586, 0x058d, 0x0592, 0x0599, - 0x059f, 0x05a7, 0x05ad, 0x05bf, 0x05c7, 0x05d8, 0x05e9, 0x05f0, - 0x05f9, 0x0602, 0x0609, 0x0613, 0x061f, 0x062a, 0x062f, 0x0637, - 0x0649, 0x0652, 0x0657, 0x065e, 0x0667, 0x0676, 0x068b, 0x0691, - 0x0698, 0x069b, 0x06a4, 0x06b2, 0x06b7, 0x06bd, 0x06c4, 0x06d2, - 0x06df, 0x06f4, 0x06fd, 0x0707, 0x0711, 0x071a, 0x0720, 0x0731, - 0x0739, 0x0742, 0x0746, 0x0755, 0x076a, 0x0778, 0x077e, 0x078b, - 0x07a1, 0x07a7, 0x07af, 0x07b5, 0x07bc, 0x07c2, 0x07c8, 0x07e0, - // Entry C0 - FF - 0x080c, 0x0829, 0x0839, 0x0852, 0x0867, 0x0879, 0x0889, 0x0898, - 0x08a8, 0x08c0, 0x08d3, 0x08e6, 0x08ec, 0x08fe, 0x090e, 0x0914, - 0x0920, 0x0934, 0x0946, 0x0954, 0x0960, 0x096e, 0x0980, 0x098c, - 0x0996, 0x0999, 0x09a5, 0x09b1, + "ue粵語ⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةазәрбајҹанбосанскиÖsterreichische" + + "s DeutschSchweizer HochdeutschAustralian EnglishCanadian EnglishBrit" + + "ish EnglishAmerican Englishespañol latinoamericanoespañol de Españae" + + "spañol de Méxicoدریfrançais canadienfrançais suisseپنجابیportuguês e" + + "uropeumoldoveneascăTashelḥiytsrpskohrvatskiKingwanaاوزبیکўзбекчаVai简" + + "体中文繁體中文", + []uint16{ // 218 elements + // Entry 0 - 3F + 0x0000, 0x0009, 0x000d, 0x0019, 0x0027, 0x003c, 0x0047, 0x005b, + 0x006d, 0x0076, 0x0085, 0x009d, 0x00a6, 0x00ae, 0x00b5, 0x00c3, + 0x00cc, 0x00d3, 0x00d8, 0x00df, 0x00f1, 0x00f8, 0x0108, 0x010f, + 0x0118, 0x0120, 0x0125, 0x012c, 0x0136, 0x013c, 0x0141, 0x014a, + 0x0153, 0x015d, 0x0164, 0x016d, 0x0173, 0x0188, 0x018d, 0x0192, + 0x019c, 0x01ae, 0x01b6, 0x01bc, 0x01ca, 0x01d3, 0x01d7, 0x01e0, + 0x01e9, 0x01f1, 0x01fa, 0x020f, 0x0215, 0x0228, 0x0233, 0x0242, + 0x0251, 0x025a, 0x0264, 0x026c, 0x027c, 0x028b, 0x0292, 0x029a, + // Entry 40 - 7F + 0x02a3, 0x02ac, 0x02b4, 0x02bd, 0x02c5, 0x02d9, 0x02eb, 0x02f7, + 0x0306, 0x0313, 0x0318, 0x032a, 0x0334, 0x0346, 0x0350, 0x0357, + 0x0364, 0x036a, 0x0379, 0x0381, 0x0393, 0x0399, 0x03a1, 0x03ab, + 0x03b3, 0x03bc, 0x03c4, 0x03cc, 0x03da, 0x03e5, 0x03f5, 0x03fc, + 0x040b, 0x0416, 0x0423, 0x042b, 0x0433, 0x0438, 0x0444, 0x044b, + 0x0454, 0x0463, 0x0475, 0x047e, 0x048a, 0x0497, 0x049f, 0x04af, + 0x04c3, 0x04cb, 0x04d3, 0x04e1, 0x04ed, 0x04fb, 0x0501, 0x0508, + 0x050d, 0x0513, 0x051c, 0x0524, 0x052d, 0x0533, 0x053f, 0x0545, + // Entry 80 - BF + 0x054e, 0x0569, 0x0570, 0x057a, 0x058a, 0x0591, 0x0596, 0x059d, + 0x05a3, 0x05ab, 0x05b1, 0x05c3, 0x05cb, 0x05dc, 0x05ed, 0x05f4, + 0x05fd, 0x0606, 0x060d, 0x0617, 0x0623, 0x062e, 0x0633, 0x063b, + 0x064d, 0x0656, 0x065b, 0x0662, 0x066b, 0x067a, 0x068f, 0x0695, + 0x069c, 0x069f, 0x06a8, 0x06b6, 0x06bb, 0x06c1, 0x06c8, 0x06d6, + 0x06e3, 0x06f8, 0x0701, 0x070b, 0x0715, 0x071e, 0x0724, 0x0735, + 0x073d, 0x0746, 0x074a, 0x0759, 0x076e, 0x077c, 0x0782, 0x078f, + 0x07a5, 0x07ab, 0x07b3, 0x07b9, 0x07c0, 0x07c6, 0x07cc, 0x07e4, + // Entry C0 - FF + 0x0810, 0x0824, 0x0834, 0x084d, 0x0862, 0x0874, 0x0884, 0x0893, + 0x08a3, 0x08bb, 0x08ce, 0x08e1, 0x08e7, 0x08f9, 0x0909, 0x0915, + 0x0927, 0x0935, 0x0941, 0x094f, 0x0957, 0x0963, 0x0971, 0x0974, + 0x0980, 0x098c, }, }, } -// Total size for self: 4123 bytes (4 KB) +// Total size for self: 4040 bytes (4 KB) -// Total table size 1960456 bytes (1914KiB); checksum: BF1D5E0D +// Total table size 2127659 bytes (2077KiB); checksum: E92D966F diff --git a/vendor/golang.org/x/text/language/gen.go b/vendor/golang.org/x/text/language/gen.go new file mode 100644 index 0000000000..153269bc10 --- /dev/null +++ b/vendor/golang.org/x/text/language/gen.go @@ -0,0 +1,1699 @@ +// 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) +} + +// TODO: region inclusion data will probably not be use used in future matchers. + +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 { + // Skip UN and EURO zone as they are flattening the containment + // relationship. + if g.Type == "EZ" || g.Type == "UN" { + continue + } + 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") + lang.updateLater("bh", "bih") + + // 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 canonicalized language tags. + lang.freeze() + for i, v := range lang.s { + // We can avoid these manual entries by using the IANA 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] = iso3166UserAssigned + } + } + 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< %d", len(m49map), 1<>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 ( + iso3166UserAssigned = 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 + distance uint8 + oneway bool +} + +type scriptIntelligibility struct { + wantLang, haveLang uint16 + wantScript, haveScript uint8 + distance uint8 + // Always oneway +} + +type regionIntelligibility struct { + lang uint16 // compact language id + script uint8 // 0 means any + group uint8 // 0 means any; if bit 7 is set it means inverse + distance uint8 + // Always twoway. +} + +// 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() { + lm := b.supp.LanguageMatching.LanguageMatches + cldr.MakeSlice(&lm).SelectAnyOf("type", "written_new") + + regionHierarchy := map[string][]string{} + for _, g := range b.supp.TerritoryContainment.Group { + regions := strings.Split(g.Contains, " ") + regionHierarchy[g.Type] = append(regionHierarchy[g.Type], regions...) + } + regionToGroups := make([]uint8, len(b.region.s)) + + idToIndex := map[string]uint8{} + for i, mv := range lm[0].MatchVariable { + if i > 6 { + log.Fatalf("Too many groups: %d", i) + } + idToIndex[mv.Id] = uint8(i + 1) + // TODO: also handle '-' + for _, r := range strings.Split(mv.Value, "+") { + todo := []string{r} + for k := 0; k < len(todo); k++ { + r := todo[k] + regionToGroups[b.region.index(r)] |= 1 << uint8(i) + todo = append(todo, regionHierarchy[r]...) + } + } + } + b.writeSlice("regionToGroups", regionToGroups) + + b.writeType(mutualIntelligibility{}) + b.writeType(scriptIntelligibility{}) + b.writeType(regionIntelligibility{}) + + matchLang := []mutualIntelligibility{{ + // TODO: remove once CLDR is fixed. + want: uint16(b.langIndex("sr")), + have: uint16(b.langIndex("hr")), + distance: uint8(5), + }, { + want: uint16(b.langIndex("sr")), + have: uint16(b.langIndex("bs")), + distance: uint8(5), + }} + matchScript := []scriptIntelligibility{} + matchRegion := []regionIntelligibility{} + // 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) { + log.Fatalf("not supported: desired=%q; supported=%q", desired, supported) + continue + } + distance, _ := strconv.ParseInt(m.Distance, 10, 8) + switch len(d) { + case 2: + if desired == supported && desired == "*_*" { + continue + } + // language-script pair. + matchScript = append(matchScript, scriptIntelligibility{ + wantLang: uint16(b.langIndex(d[0])), + haveLang: uint16(b.langIndex(s[0])), + wantScript: uint8(b.script.index(d[1])), + haveScript: uint8(b.script.index(s[1])), + distance: uint8(distance), + }) + if m.Oneway != "true" { + matchScript = append(matchScript, scriptIntelligibility{ + wantLang: uint16(b.langIndex(s[0])), + haveLang: uint16(b.langIndex(d[0])), + wantScript: uint8(b.script.index(s[1])), + haveScript: uint8(b.script.index(d[1])), + distance: uint8(distance), + }) + } + case 1: + if desired == supported && desired == "*" { + continue + } + if distance == 1 { + // 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 + } + // TODO: consider dropping oneway field and just doubling the entry. + matchLang = append(matchLang, mutualIntelligibility{ + want: uint16(b.langIndex(d[0])), + have: uint16(b.langIndex(s[0])), + distance: uint8(distance), + oneway: m.Oneway == "true", + }) + case 3: + if desired == supported && desired == "*_*_*" { + continue + } + if desired != supported { // (Weird but correct.) + log.Fatalf("not supported: desired=%q; supported=%q", desired, supported) + continue + } + ri := regionIntelligibility{ + lang: b.langIndex(d[0]), + distance: uint8(distance), + } + if d[1] != "*" { + ri.script = uint8(b.script.index(d[1])) + } + switch { + case d[2] == "*": + ri.group = 0x80 // not contained in anything + case strings.HasPrefix(d[2], "$!"): + ri.group = 0x80 + d[2] = "$" + d[2][len("$!"):] + fallthrough + case strings.HasPrefix(d[2], "$"): + ri.group |= idToIndex[d[2]] + } + matchRegion = append(matchRegion, ri) + default: + log.Fatalf("not supported: desired=%q; supported=%q", desired, supported) + } + } + sort.SliceStable(matchLang, func(i, j int) bool { + return matchLang[i].distance < matchLang[j].distance + }) + b.writeSlice("matchLang", matchLang) + + sort.SliceStable(matchScript, func(i, j int) bool { + return matchScript[i].distance < matchScript[j].distance + }) + b.writeSlice("matchScript", matchScript) + + sort.SliceStable(matchRegion, func(i, j int) bool { + return matchRegion[i].distance < matchRegion[j].distance + }) + b.writeSlice("matchRegion", matchRegion) +} + +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 { + // Skip UN and EURO zone as they are flattening the containment + // relationship. + if g.Type == "EZ" || g.Type == "UN" { + continue + } + 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 + } + } + 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< 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< %d", len(m49map), 1<>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< m.regGroupDist { + 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 { @@ -702,8 +765,22 @@ func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion beaten = true } - // Next we prefer smaller distances between regions, as defined by regionDist. - regDist := regionDist(have.maxRegion, maxRegion, tag.lang) + // TODO: remove the region distance rule. Region distance has been replaced + // by the region grouping rule. For now we leave it as it still seems to + // have a net positive effect when applied after the grouping rule. + // Possible solutions: + // - apply the primary locale rule first to effectively disable region + // region distance if groups are defined. + // - express the following errors in terms of grouping (if possible) + // - find another method of handling the following cases. + // maximization of legacy: find mo in + // "sr-Cyrl, sr-Latn, ro, ro-MD": have ro; want ro-MD (High) + // region distance French: find fr-US in + // "en, fr, fr-CA, fr-CH": have fr; want fr-CA (High) + + // Next we prefer smaller distances between regions, as defined by + // regionDist. + regDist := uint8(regionDistance(have.maxRegion, maxRegion)) if !beaten && m.regDist != regDist { if regDist > m.regDist { return @@ -721,6 +798,9 @@ func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion } // Finally we prefer tags which have a closer parent relationship. + // TODO: the parent relationship no longer seems necessary. It doesn't hurt + // to leave it in as the final tie-breaker, though, especially until the + // grouping data has further matured. parentDist := parentDistance(have.tag.region, tag) if !beaten && m.parentDist != parentDist { if parentDist > m.parentDist { @@ -737,6 +817,7 @@ func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion m.origLang = origLang m.origReg = origReg m.origScript = origScript + m.regGroupDist = regGroupDist m.regDist = regDist m.parentDist = parentDist } @@ -759,15 +840,27 @@ func parentDistance(haveRegion regionID, tag Tag) uint8 { 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 +// regionGroupDist computes the distance between two regions based on their +// CLDR grouping. +func regionGroupDist(a, b regionID, script scriptID, lang langID) uint8 { + aGroup := uint(regionToGroups[a]) << 1 + bGroup := uint(regionToGroups[b]) << 1 + for _, ri := range matchRegion { + if langID(ri.lang) == lang && (ri.script == 0 || scriptID(ri.script) == script) { + group := uint(1 << (ri.group &^ 0x80)) + if 0x80&ri.group == 0 { + if aGroup&bGroup&group != 0 { // Both regions are in the group. + return ri.distance + } + } else { + if (aGroup|bGroup)&group == 0 { // Both regions are not in the group. + return ri.distance + } + } } } - return uint8(regionDistance(a, b)) + const defaultDistance = 4 + return defaultDistance } // regionDistance computes the distance between two regions based on the diff --git a/vendor/golang.org/x/text/language/match_test.go b/vendor/golang.org/x/text/language/match_test.go index 57b16442d5..4fb56a0254 100644 --- a/vendor/golang.org/x/text/language/match_test.go +++ b/vendor/golang.org/x/text/language/match_test.go @@ -8,12 +8,109 @@ import ( "bytes" "flag" "fmt" + "os" + "path" "strings" "testing" + + "golang.org/x/text/internal/testtext" + "golang.org/x/text/internal/ucd" ) var verbose = flag.Bool("verbose", false, "set to true to print the internal tables of matchers") +func TestCLDRCompliance(t *testing.T) { + r, err := os.Open("testdata/localeMatcherTest.txt") + if err != nil { + t.Fatal(err) + } + ucd.Parse(r, func(p *ucd.Parser) { + name := strings.Replace(path.Join(p.String(0), p.String(1)), " ", "", -1) + if skip[name] { + return + } + t.Run(name, func(t *testing.T) { + supported := makeTagList(p.String(0)) + desired := makeTagList(p.String(1)) + gotCombined, index, _ := NewMatcher(supported).Match(desired...) + + gotMatch := supported[index] + wantMatch := Make(p.String(2)) + if gotMatch != wantMatch { + t.Fatalf("match: got %q; want %q", gotMatch, wantMatch) + } + wantCombined, err := Parse(p.String(3)) + if err == nil && gotCombined != wantCombined { + t.Errorf("combined: got %q; want %q", gotCombined, wantCombined) + } + }) + }) +} + +var skip = map[string]bool{ + // TODO: bugs + // und- is not expanded to the appropriate language. + "en-Hant-TW,und-TW/zh-Hant": true, // match: got "en-Hant-TW"; want "und-TW" + "en-Hant-TW,und-TW/zh": true, // match: got "en-Hant-TW"; want "und-TW" + // Honor the wildcard match. This may only be useful to select non-exact + // stuff. + "mul,af/nl": true, // match: got "af"; want "mul" + + // TODO: include other extensions. + // combined: got "en-GB-u-ca-buddhist-nu-arab"; want "en-GB-fonipa-t-m0-iso-i0-pinyin-u-ca-buddhist-nu-arab" + "und,en-GB-u-sd-gbsct/en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin": true, + + // Inconsistencies with Mark Davis' implementation where it is not clear + // which is better. + + // Go prefers exact matches over less exact preferred ones. + // Preferring desired ones might be better. + "en,de,fr,ja/de-CH,fr": true, // match: got "fr"; want "de" + "en-GB,en,de,fr,ja/de-CH,fr": true, // match: got "fr"; want "de" + "pt-PT,pt-BR,es,es-419/pt-US,pt-PT": true, // match: got "pt-PT"; want "pt-BR" + "pt-PT,pt,es,es-419/pt-US,pt-PT,pt": true, // match: got "pt-PT"; want "pt" + "en,sv/en-GB,sv": true, // match: got "sv"; want "en" + "en-NZ,en-IT/en-US": true, // match: got "en-IT"; want "en-NZ" + + // Inconsistencies in combined. I think the Go approach is more appropriate. + // We could use -u-rg- and -u-va- as alternative. + "und,fr/fr-BE-fonipa": true, // combined: got "fr"; want "fr-BE-fonipa" + "und,fr-CA/fr-BE-fonipa": true, // combined: got "fr-CA"; want "fr-BE-fonipa" + "und,fr-fonupa/fr-BE-fonipa": true, // combined: got "fr-fonupa"; want "fr-BE-fonipa" + "und,no/nn-BE-fonipa": true, // combined: got "no"; want "no-BE-fonipa" + "50,und,fr-CA-fonupa/fr-BE-fonipa": true, // combined: got "fr-CA-fonupa"; want "fr-BE-fonipa" + + // Spec says prefer primary locales. But what is the benefit? Shouldn't + // the developer just not specify the primary locale first in the list? + // TODO: consider adding a SortByPreferredLocale function to ensure tags + // are ordered such that the preferred locale rule is observed. + // TODO: most of these cases are solved by getting rid of the region + // distance tie-breaker rule (see comments there). + "und,es,es-MA,es-MX,es-419/es-EA": true, // match: got "es-MA"; want "es" + "und,es-MA,es,es-419,es-MX/es-EA": true, // match: got "es-MA"; want "es" + "und,en,en-GU,en-IN,en-GB/en-ZA": true, // match: got "en-IN"; want "en-GB" + "und,en,en-GU,en-IN,en-GB/en-VI": true, // match: got "en-GU"; want "en" + "und,en-GU,en,en-GB,en-IN/en-VI": true, // match: got "en-GU"; want "en" + + // Falling back to the default seems more appropriate than falling back + // on a language with the same script. + "50,und,fr-Cyrl-CA-fonupa/fr-BE-fonipa": true, + // match: got "und"; want "fr-Cyrl-CA-fonupa" + // combined: got "und"; want "fr-Cyrl-BE-fonipa" + + // Other interesting cases to test: + // - Should same language or same script have the preference if there is + // usually no understanding of the other script? + // - More specific region in desired may replace enclosing supported. +} + +func makeTagList(s string) (tags []Tag) { + for _, s := range strings.Split(s, ",") { + tags = append(tags, Make(strings.TrimSpace(s))) + } + return tags +} + func TestAddLikelySubtags(t *testing.T) { tests := []struct{ in, out string }{ {"aa", "aa-Latn-ET"}, @@ -162,6 +259,31 @@ func TestMinimize(t *testing.T) { } } +func TestRegionGroups(t *testing.T) { + testCases := []struct { + a, b string + distance uint8 + }{ + {"zh-TW", "zh-HK", 5}, + {"zh-MO", "zh-HK", 4}, + } + for _, tc := range testCases { + a := MustParse(tc.a) + aScript, _ := a.Script() + b := MustParse(tc.b) + bScript, _ := b.Script() + + if aScript != bScript { + t.Errorf("scripts differ: %q vs %q", aScript, bScript) + continue + } + d := regionGroupDist(a.region, b.region, aScript.scriptID, a.lang) + if d != tc.distance { + t.Errorf("got %q; want %q", d, tc.distance) + } + } +} + func TestRegionDistance(t *testing.T) { tests := []struct { a, b string @@ -186,11 +308,13 @@ func TestRegionDistance(t *testing.T) { {"ZZ", "QQ", 2}, } for i, tt := range tests { - ra, _ := getRegionID([]byte(tt.a)) - rb, _ := getRegionID([]byte(tt.b)) - if d := regionDistance(ra, rb); d != tt.d { - t.Errorf("%d: d(%s, %s) = %v; want %v", i, tt.a, tt.b, d, tt.d) - } + testtext.Run(t, tt.a+"/"+tt.b, func(t *testing.T) { + ra, _ := getRegionID([]byte(tt.a)) + rb, _ := getRegionID([]byte(tt.b)) + if d := regionDistance(ra, rb); d != tt.d { + t.Errorf("%d: d(%s, %s) = %v; want %v", i, tt.a, tt.b, d, tt.d) + } + }) } } @@ -246,29 +370,45 @@ func (t haveTag) String() string { return fmt.Sprintf("%v:%d:%v:%v-%v|%v", t.tag, t.index, t.conf, t.maxRegion, t.maxScript, t.altScript) } +func parseSupported(list string) (out []Tag) { + for _, s := range strings.Split(list, ",") { + out = append(out, mk(strings.TrimSpace(s))) + } + return out +} + // The test set for TestBestMatch is defined in data_test.go. func TestBestMatch(t *testing.T) { - parse := func(list string) (out []Tag) { - for _, s := range strings.Split(list, ",") { - out = append(out, mk(strings.TrimSpace(s))) - } - return out - } - for i, tt := range matchTests { - supported := parse(tt.supported) - m := newMatcher(supported) + for _, tt := range matchTests { + supported := parseSupported(tt.supported) + m := newMatcher(supported, nil) if *verbose { fmt.Printf("%s:\n%v\n", tt.comment, m) } for _, tm := range tt.test { - tag, _, conf := m.Match(parse(tm.desired)...) - if tag.String() != tm.match { - t.Errorf("%d:%s: find %s in %q: have %s; want %s (%v)\n", i, tt.comment, tm.desired, tt.supported, tag, tm.match, conf) - } + t.Run(path.Join(tt.comment, tt.supported, tm.desired), func(t *testing.T) { + tag, _, conf := m.Match(parseSupported(tm.desired)...) + if tag.String() != tm.match { + t.Errorf("find %s in %q: have %s; want %s (%v)", tm.desired, tt.supported, tag, tm.match, conf) + } + }) + } } } +func TestBestMatchAlloc(t *testing.T) { + m := NewMatcher(parseSupported("en sr nl")) + // Go allocates when creating a list of tags from a single tag! + list := []Tag{English} + avg := testtext.AllocsPerRun(1, func() { + m.Match(list...) + }) + if avg > 0 { + t.Errorf("got %f; want 0", avg) + } +} + var benchHave = []Tag{ mk("en"), mk("en-GB"), @@ -335,7 +475,7 @@ var benchWant = [][]Tag{ } func BenchmarkMatch(b *testing.B) { - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { for _, want := range benchWant { m.getBest(want...) @@ -345,7 +485,7 @@ func BenchmarkMatch(b *testing.B) { func BenchmarkMatchExact(b *testing.B) { want := mk("en") - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { m.getBest(want) } @@ -353,7 +493,7 @@ func BenchmarkMatchExact(b *testing.B) { func BenchmarkMatchAltLanguagePresent(b *testing.B) { want := mk("hr") - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { m.getBest(want) } @@ -361,7 +501,7 @@ func BenchmarkMatchAltLanguagePresent(b *testing.B) { func BenchmarkMatchAltLanguageNotPresent(b *testing.B) { want := mk("nn") - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { m.getBest(want) } @@ -369,7 +509,7 @@ func BenchmarkMatchAltLanguageNotPresent(b *testing.B) { func BenchmarkMatchAltScriptPresent(b *testing.B) { want := mk("zh-Hant-CN") - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { m.getBest(want) } @@ -377,7 +517,7 @@ func BenchmarkMatchAltScriptPresent(b *testing.B) { func BenchmarkMatchAltScriptNotPresent(b *testing.B) { want := mk("fr-Cyrl") - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { m.getBest(want) } @@ -385,7 +525,7 @@ func BenchmarkMatchAltScriptNotPresent(b *testing.B) { func BenchmarkMatchLimitedExact(b *testing.B) { want := []Tag{mk("he-NL"), mk("iw-NL")} - m := newMatcher(benchHave) + m := newMatcher(benchHave, nil) for i := 0; i < b.N; i++ { m.getBest(want...) } diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go index 5de0f856af..a108554a41 100644 --- a/vendor/golang.org/x/text/language/tables.go +++ b/vendor/golang.org/x/text/language/tables.go @@ -1,122 +1,122 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. 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 CLDRVersion = "31" const numLanguages = 8654 const numScripts = 230 -const numRegions = 354 +const numRegions = 356 type fromTo struct { from uint16 to uint16 } -const nonCanonicalUnd = 649 +const nonCanonicalUnd = 1199 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 + _af = 22 + _am = 39 + _ar = 58 + _az = 88 + _bg = 126 + _bn = 165 + _ca = 215 + _cs = 249 + _da = 256 + _de = 268 + _el = 309 + _en = 312 + _es = 317 + _et = 319 + _fa = 327 + _fi = 336 + _fil = 338 + _fr = 349 + _gu = 418 + _he = 442 + _hi = 444 + _hr = 463 + _hu = 467 + _hy = 469 + _id = 479 + _is = 502 + _it = 503 + _ja = 510 + _ka = 526 + _kk = 576 + _km = 584 + _kn = 591 + _ko = 594 + _ky = 648 + _lo = 694 + _lt = 702 + _lv = 709 + _mk = 765 + _ml = 770 + _mn = 777 + _mo = 782 + _mr = 793 + _ms = 797 + _mul = 804 + _my = 815 + _nb = 837 + _ne = 847 + _nl = 869 + _no = 877 + _pa = 923 + _pl = 945 + _pt = 958 + _ro = 986 + _ru = 992 + _sh = 1029 + _si = 1034 + _sk = 1040 + _sl = 1044 + _sq = 1071 + _sr = 1072 + _sv = 1090 + _sw = 1091 + _ta = 1102 + _te = 1119 + _th = 1129 + _tl = 1144 + _tn = 1150 + _tr = 1160 + _uk = 1196 + _ur = 1202 + _uz = 1210 + _vi = 1217 + _zh = 1319 + _zu = 1324 + _jbo = 513 + _ami = 1647 + _bnn = 2354 + _hak = 436 + _tlh = 14464 + _lb = 659 + _nv = 897 + _pwn = 12052 + _tao = 14185 + _tay = 14195 + _tsu = 14659 + _nn = 872 + _sfb = 13626 + _vgt = 15698 + _sgg = 13657 + _cmn = 3004 + _nan = 833 + _hsn = 465 ) -const langPrivateStart = 0x2d09 +const langPrivateStart = 0x2f6f -const langPrivateEnd = 0x2f10 +const langPrivateEnd = 0x3176 // 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. @@ -125,72 +125,133 @@ const langPrivateEnd = 0x2f10 // 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 lang tag.Index = "" + // Size: 5312 bytes + "---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abq\x00abr\x00abt\x00aby\x00a" + + "cd\x00ace\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey" + + "\x00affragc\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00a" + + "jg\x00akkaakk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00am" + + "p\x00anrganc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00" + + "ape\x00apr\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars" + + "\x00ary\x00arz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00a" + + "tj\x00auy\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx" + + "\x00ayymayb\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00" + + "bba\x00bbb\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bc" + + "m\x00bcn\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00" + + "bet\x00bew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn" + + "\x00bgx\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib" + + "\x00big\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn" + + "\x00bjo\x00bjr\x00bjt\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt" + + "\x00bmambmh\x00bmk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00" + + "bom\x00bon\x00bpy\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx" + + "\x00brz\x00bsosbsj\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00b" + + "uc\x00bud\x00bug\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr" + + "\x00bxh\x00bye\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf" + + "\x00bzh\x00bzw\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg" + + "\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00c" + + "kl\x00cko\x00cky\x00cla\x00cme\x00cooscop\x00cps\x00crrecrh\x00crj\x00cr" + + "k\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymdaandad" + + "\x00daf\x00dag\x00dah\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00ddn" + + "\x00deeuded\x00den\x00dga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia\x00d" + + "je\x00dnj\x00dob\x00doi\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm\x00dtp" + + "\x00dts\x00dty\x00dua\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00dyo\x00d" + + "yu\x00dzzodzg\x00ebu\x00eeweefi\x00egl\x00egy\x00eka\x00eky\x00elllema" + + "\x00emi\x00enngenn\x00enq\x00eopoeri\x00es\x00\x05esu\x00etstetr\x00ett" + + "\x00etu\x00etx\x00euusewo\x00ext\x00faasfaa\x00fab\x00fag\x00fai\x00fan" + + "\x00ffulffi\x00ffm\x00fiinfia\x00fil\x00fit\x00fjijflr\x00fmp\x00foaofod" + + "\x00fon\x00for\x00fpe\x00fqs\x00frrafrc\x00frp\x00frr\x00frs\x00fub\x00f" + + "ud\x00fue\x00fuf\x00fuh\x00fuq\x00fur\x00fuv\x00fuy\x00fvr\x00fyrygalega" + + "a\x00gaf\x00gag\x00gah\x00gaj\x00gam\x00gan\x00gaw\x00gay\x00gbf\x00gbm" + + "\x00gby\x00gbz\x00gcr\x00gdlagde\x00gdn\x00gdr\x00geb\x00gej\x00gel\x00g" + + "ez\x00gfk\x00ggn\x00ghs\x00gil\x00gim\x00gjk\x00gjn\x00gju\x00gkn\x00gkp" + + "\x00gllgglk\x00gmm\x00gmv\x00gnrngnd\x00gng\x00god\x00gof\x00goi\x00gom" + + "\x00gon\x00gor\x00gos\x00got\x00grb\x00grc\x00grt\x00grw\x00gsw\x00guujg" + + "ub\x00guc\x00gud\x00gur\x00guw\x00gux\x00guz\x00gvlvgvf\x00gvr\x00gvs" + + "\x00gwc\x00gwi\x00gwt\x00gyi\x00haauhag\x00hak\x00ham\x00haw\x00haz\x00h" + + "bb\x00hdy\x00heebhhy\x00hiinhia\x00hif\x00hig\x00hih\x00hil\x00hla\x00hl" + + "u\x00hmd\x00hmt\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00" + + "hot\x00hrrvhsb\x00hsn\x00htathuunhui\x00hyyehzerianaian\x00iar\x00iba" + + "\x00ibb\x00iby\x00ica\x00ich\x00idndidd\x00idi\x00idu\x00ieleife\x00igbo" + + "igb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw\x00ikx\x00ilo\x00imo\x00i" + + "nndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00\x03iwm\x00iws\x00izh\x00i" + + "zi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00jgk\x00jgo\x00ji\x00\x06jib" + + "\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac\x00kad\x00" + + "kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp\x00kbq\x00kbx\x00kby\x00kc" + + "g\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl\x00kdt\x00kea\x00ken\x00kez" + + "\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00kgp\x00kha\x00khb\x00khn\x00k" + + "hq\x00khs\x00kht\x00khw\x00khz\x00kiikkij\x00kiu\x00kiw\x00kjuakjd\x00kj" + + "g\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klalkln\x00klq\x00klt\x00klx\x00kmh" + + "mkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw\x00knanknf\x00knp\x00koorkoi\x00" + + "kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo\x00kpr\x00kpx\x00kqb\x00kq" + + "f\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00krl\x00krs\x00kru\x00ksasksb" + + "\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb\x00ktm\x00kto\x00kuurkub\x00k" + + "ud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00kus\x00kvomkvg\x00kvr\x00kvx" + + "\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm\x00kxp\x00kxw\x00kxz\x00ky" + + "irkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag\x00lah\x00laj\x00las\x00lbt" + + "zlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00led\x00lee\x00lem\x00lep\x00l" + + "eq\x00leu\x00lez\x00lguglgg\x00liimlia\x00lid\x00lif\x00lig\x00lih\x00li" + + "j\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln\x00lmn\x00lmo\x00lmp\x00lnin" + + "lns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor\x00los\x00loz\x00lrc\x00ltitl" + + "tg\x00luublua\x00luo\x00luy\x00luz\x00lvavlwl\x00lzh\x00lzz\x00mad\x00ma" + + "f\x00mag\x00mai\x00mak\x00man\x00mas\x00maw\x00maz\x00mbh\x00mbo\x00mbq" + + "\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr\x00mcu\x00mda\x00mde\x00mdf" + + "\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee\x00mek\x00men\x00mer\x00met" + + "\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq\x00mglgmgh\x00mgl\x00mgo\x00m" + + "gp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00min\x00mis\x00miw\x00mkkdmki" + + "\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00mls\x00mmo\x00mmu\x00mmx\x00m" + + "nonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00moe\x00moh\x00mos\x00mox\x00mp" + + "p\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00mrj\x00mro\x00mssamtltmtc" + + "\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00mus\x00mva\x00mvn\x00mvy" + + "\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk\x00mym\x00myv\x00myw\x00m" + + "yx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw\x00mzz\x00naaunac\x00naf" + + "\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00nbobnca\x00nce\x00ncf\x00n" + + "ch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb\x00new\x00nex\x00nfr\x00ng" + + "donga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00nif\x00nii\x00nij\x00nin\x00" + + "niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nlldnmg\x00nmz\x00nnnonnf\x00n" + + "nh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00nop\x00nou\x00nqo\x00nrblnr" + + "b\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr\x00nui\x00nup\x00nus\x00nuv" + + "\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym\x00nyn\x00nzi\x00occiogc\x00" + + "ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00opm\x00orrioro\x00oru\x00osss" + + "osa\x00ota\x00otk\x00ozm\x00paanpag\x00pal\x00pam\x00pap\x00pau\x00pbi" + + "\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo\x00pex\x00pfl\x00phl\x00phn" + + "\x00pilipil\x00pip\x00pka\x00pko\x00plolpla\x00pms\x00png\x00pnn\x00pnt" + + "\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psuspss\x00ptorptp\x00puu\x00pwa" + + "\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rcf\x00rej\x00rel\x00res\x00r" + + "gn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu" + + "\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00rro\x00rtm\x00ruusrue\x00" + + "rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf\x00sah\x00saq\x00sas\x00sa" + + "t\x00sav\x00saz\x00sba\x00sbe\x00sbp\x00scrdsck\x00scl\x00scn\x00sco\x00" + + "scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00ses\x00sgagsga\x00sgs" + + "\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn\x00shu\x00siinsid\x00sig" + + "\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks\x00sllvsld\x00sli\x00sll" + + "\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp\x00smq\x00sms\x00snnasnc" + + "\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq\x00sou\x00soy\x00spd\x00s" + + "pl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx\x00ssswssd\x00ssg\x00ssy" + + "\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00sur\x00sus\x00svweswwaswb" + + "\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00syl\x00syr\x00szl\x00taamt" + + "aj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf\x00tbg\x00tbo\x00tbw\x00tbz" + + "\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelted\x00tem\x00teo\x00tet\x00t" + + "fi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00thq\x00thr\x00tiirtif\x00tig" + + "\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr\x00tkt\x00tlgltlf\x00tlx" + + "\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00tog\x00toq\x00tpi\x00tpm" + + "\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssotsd\x00tsf\x00tsg\x00tsj" + + "\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts\x00ttt\x00tuh\x00tul\x00t" + + "um\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00twq\x00txg\x00tyahtya\x00ty" + + "v\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx" + + "\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00uvh\x00uvl\x00uzzbvag\x00vai" + + "\x00van\x00veenvec\x00vep\x00viievic\x00viv\x00vls\x00vmf\x00vmw\x00vool" + + "vot\x00vro\x00vun\x00vut\x00walnwae\x00waj\x00wal\x00wan\x00war\x00wbp" + + "\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg\x00wib\x00wiu\x00wiv\x00wja" + + "\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu\x00woolwob\x00wos\x00wrs\x00w" + + "sk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00xbi\x00xcr\x00xes\x00xhhoxla" + + "\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00xnr\x00xog\x00xon\x00xpr" + + "\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe\x00yam\x00yao\x00yap\x00yas" + + "\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb\x00yby\x00yer\x00ygr\x00ygw" + + "\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00yooryon\x00yrb\x00yre\x00yrl" + + "\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw\x00zahazag\x00zbl\x00zdj\x00z" + + "ea\x00zgh\x00zhhozia\x00zlm\x00zmi\x00zne\x00zuulzxx\x00zza\x00\xff\xff" + + "\xff\xff" -const langNoIndexOffset = 713 +const langNoIndexOffset = 1327 // 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 @@ -198,194 +259,194 @@ const langNoIndexOffset = 713 // 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, + 0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2, + 0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57, + 0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70, + 0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x62, + 0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77, + 0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2, + 0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xb8, 0x0a, 0x6a, + 0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 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, + 0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0, + 0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed, + 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35, + 0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff, + 0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5, + 0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3, + 0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce, + 0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf, // 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, + 0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x2f, 0xff, 0xff, + 0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7, + 0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba, + 0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff, + 0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff, + 0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5, 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c, - 0x08, 0x24, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, + 0x08, 0x20, 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, + 0x1b, 0x14, 0x08, 0xf2, 0x2b, 0xe7, 0x17, 0x56, + 0x45, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef, 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10, - 0xbc, 0x87, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35, + 0xbc, 0x85, 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, + 0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 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, + 0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64, + 0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00, + 0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3, 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, + 0x56, 0x89, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56, + 0x90, 0x69, 0x01, 0x2c, 0x96, 0x69, 0x20, 0xfb, // Entry 140 - 17F - 0xff, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x56, - 0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x16, + 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x16, + 0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x06, 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, + 0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35, + 0x24, 0x52, 0xf4, 0xd4, 0xbd, 0x62, 0xc9, 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, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98, + 0x21, 0x18, 0x81, 0x00, 0x00, 0x01, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0xb0, 0xfe, + 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea, 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 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, + 0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00, + 0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55, + 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40, + 0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xbe, 0xdf, 0xff, 0xfe, 0xbf, + 0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7e, 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, + 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27, + 0xcd, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, + 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xcf, 0xe0, 0xdf, + 0x03, 0x44, 0x08, 0x10, 0x01, 0x04, 0x01, 0xe3, + 0x92, 0x54, 0xdb, 0x28, 0xd1, 0x5f, 0xf6, 0x6d, + 0x79, 0xed, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01, + 0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f, + 0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54, // 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, + 0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00, + 0x20, 0x7b, 0x38, 0x02, 0x05, 0x84, 0x00, 0xf0, + 0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00, + 0x00, 0x00, 0x80, 0x10, 0x90, 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, + 0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00, + 0x11, 0x04, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff, + 0x7b, 0x7f, 0x60, 0x00, 0x05, 0x9b, 0xdd, 0x66, // 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, + 0xe2, 0xef, 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, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, + 0xe5, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, + 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04, + 0x84, 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, + 0x02, 0x50, 0x80, 0x11, 0x00, 0x91, 0x6c, 0xe2, + 0x50, 0x27, 0x1d, 0x11, 0x29, 0x06, 0x59, 0xe9, + 0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00, + 0x00, 0x00, 0x50, 0x44, 0x92, 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, + 0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01, + 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x00, 0x08, + 0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x89, 0x12, 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, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0, + 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x04, 0x10, 0xd0, 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, + 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80, 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, + 0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xe3, + 0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb, + 0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6, + 0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff, + 0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff, + 0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f, + 0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f, // 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, + 0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f, + 0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d, + 0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf, + 0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff, + 0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb, + 0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe, + 0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x3d, 0x1b, + 0x06, 0xe6, 0x72, 0x60, 0xd1, 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, + 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57, + 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7, + 0xf1, 0xf9, 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, + 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe, // 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, + 0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f, + 0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7, + 0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f, + 0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b, + 0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7, + 0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe, + 0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde, + 0xf7, 0xb9, 0xeb, 0x77, 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, + 0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d, + 0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd, + 0x7f, 0x4e, 0xbf, 0x8e, 0xae, 0xff, 0xee, 0xdf, + 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7, + 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce, + 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xbd, + 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff, + 0xe5, 0x5f, 0x6d, 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, + 0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xfd, 0x99, 0xfb, + 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20, + 0x14, 0x00, 0x55, 0x51, 0x82, 0x65, 0xf5, 0x41, 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, + 0x00, 0x51, 0x20, 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, + 0xfd, 0x47, 0x49, 0x06, 0x95, 0x06, 0x57, 0xed, + 0xfb, 0x4c, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40, + 0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83, + 0xb8, 0x4f, 0x10, 0x8c, 0x89, 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, + 0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d, 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, + 0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49, + 0x2d, 0x14, 0x27, 0x57, 0xed, 0xf1, 0x3f, 0xe7, + 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8, + 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe5, 0xf7, + 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 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, + 0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c, + 0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40, // Entry 540 - 57F 0x00, 0x00, 0x01, 0x43, 0x19, 0x00, 0x08, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -399,43 +460,43 @@ var langNoIndex = [2197]uint8{ 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, 0x00, 0x00, 0x00, 0xf0, 0xce, 0xfb, 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, + 0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x04, 0x16, 0x00, 0x00, 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, + 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0x3e, 0x02, + 0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02, 0x19, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d, - 0x31, 0x00, 0x00, 0x00, 0x01, 0x50, 0x02, 0x20, + 0x31, 0x00, 0x00, 0x00, 0x01, 0x10, 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, + 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f, + 0x1f, 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, + 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9, + 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1, + 0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7, + 0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd, + 0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x1f, + 0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe, + 0xbe, 0x5f, 0x46, 0x1b, 0xe9, 0x5f, 0x50, 0x18, + 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 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, + 0x75, 0xc4, 0x7d, 0x81, 0x82, 0xf1, 0x57, 0x6c, + 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde, + 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x1f, 0x00, 0x98, + 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff, + 0xb9, 0xda, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4, + 0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7, + 0x5f, 0xff, 0xff, 0x9e, 0xdb, 0xf6, 0xd7, 0xb9, + 0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3, // 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, + 0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37, + 0xce, 0x7f, 0x04, 0x1d, 0x53, 0x7f, 0xf8, 0xda, + 0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x69, 0xa0, + 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08, 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06, 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, @@ -443,64 +504,64 @@ var langNoIndex = [2197]uint8{ // 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, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x08, 0x41, + 0x04, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xaf, - 0x6f, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab, + 0x6d, 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, + 0x80, 0x86, 0xc2, 0x00, 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, 0x01, 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, + 0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e, + 0xa0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x44, + 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04, + 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a, + 0x01, 0x00, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55, + 0x97, 0x7c, 0x9f, 0x31, 0xcc, 0x68, 0xd1, 0x03, + 0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60, // Entry 780 - 7BF - 0x03, 0x68, 0x01, 0x10, 0x8b, 0x38, 0xaa, 0x01, - 0x00, 0x00, 0x30, 0x00, 0x24, 0x44, 0x00, 0x00, + 0x03, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01, + 0x00, 0x00, 0x20, 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, + 0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78, + 0x78, 0x15, 0x50, 0x00, 0xa4, 0x84, 0xa9, 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, + 0xff, 0xef, 0xff, 0x4b, 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, + 0xdd, 0xbf, 0x72, 0x19, 0xc7, 0x0c, 0xd5, 0x42, + 0x54, 0xdd, 0x77, 0x14, 0x00, 0x80, 0x40, 0x56, + 0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff, + 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d, 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, + 0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60, + 0xfe, 0x01, 0x02, 0x88, 0x0a, 0x40, 0x16, 0x01, + 0x01, 0x15, 0x2b, 0x3c, 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, + 0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf, + 0xbf, 0x03, 0x00, 0x00, 0x10, 0xd4, 0xa3, 0xd1, + 0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3, + 0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80, + 0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84, + 0x2e, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93, 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, + 0x84, 0x00, 0x23, 0xc0, 0x23, 0x24, 0x00, 0x00, + 0x00, 0xcb, 0xe4, 0x3a, 0x42, 0x88, 0x14, 0xf1, + 0xef, 0xff, 0x7f, 0x12, 0x01, 0x01, 0x84, 0x50, 0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40, 0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1, // Entry 880 - 8BF @@ -512,194 +573,196 @@ var langNoIndex = [2197]uint8{ // 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" +const 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, + 0x027f, 0x0405, 0x01f9, 0x03e3, 0x013d, 0x0206, } // 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: 644 bytes, 161 elements +var langAliasMap = [161]fromTo{ + 0: {from: 0x82, to: 0x88}, + 1: {from: 0x185, to: 0x1ac}, + 2: {from: 0x1f1, to: 0x1df}, + 3: {from: 0x1f9, to: 0x1ba}, + 4: {from: 0x206, to: 0x510}, + 5: {from: 0x20d, to: 0x20c}, + 6: {from: 0x30e, to: 0x3da}, + 7: {from: 0x345, to: 0x36d}, + 8: {from: 0x405, to: 0x430}, + 9: {from: 0x478, to: 0x152}, + 10: {from: 0x48e, to: 0x44f}, + 11: {from: 0x4a0, to: 0x21}, + 12: {from: 0x53b, to: 0x541}, + 13: {from: 0x58c, to: 0x12c}, + 14: {from: 0x62d, to: 0x1eae}, + 15: {from: 0x64e, to: 0x42f}, + 16: {from: 0x65f, to: 0x42f}, + 17: {from: 0x6ea, to: 0x3a}, + 18: {from: 0x6f5, to: 0x1d5}, + 19: {from: 0x73b, to: 0x219e}, + 20: {from: 0x7b0, to: 0x56}, + 21: {from: 0x7b6, to: 0x2998}, + 22: {from: 0x7c2, to: 0x58}, + 23: {from: 0x7e3, to: 0x144}, + 24: {from: 0x809, to: 0x5a}, + 25: {from: 0x812, to: 0x8d}, + 26: {from: 0x87b, to: 0x80d}, + 27: {from: 0x8c0, to: 0xee0}, + 28: {from: 0x9ec, to: 0x32f}, + 29: {from: 0xa33, to: 0x2c3}, + 30: {from: 0xa3a, to: 0xbf}, + 31: {from: 0xabb, to: 0x331f}, + 32: {from: 0xb35, to: 0x527}, + 33: {from: 0xb72, to: 0x2657}, + 34: {from: 0xb7b, to: 0xbc0}, + 35: {from: 0xb98, to: 0x44c}, + 36: {from: 0xbb9, to: 0x4226}, + 37: {from: 0xbbc, to: 0x527}, + 38: {from: 0xbfb, to: 0x2da4}, + 39: {from: 0xc2b, to: 0x317e}, + 40: {from: 0xcb6, to: 0xf2}, + 41: {from: 0xd05, to: 0xf9}, + 42: {from: 0xdc5, to: 0x119}, + 43: {from: 0xdd4, to: 0x32b}, + 44: {from: 0xdf5, to: 0xdf8}, + 45: {from: 0xdfb, to: 0x52e}, + 46: {from: 0xedc, to: 0x2057}, + 47: {from: 0xeeb, to: 0x2e97}, + 48: {from: 0xf36, to: 0x365}, + 49: {from: 0x10cd, to: 0x13f}, + 50: {from: 0x1101, to: 0x2ce}, + 51: {from: 0x119d, to: 0x1ea}, + 52: {from: 0x1276, to: 0x21}, + 53: {from: 0x1421, to: 0x15d}, + 54: {from: 0x146d, to: 0x14d}, + 55: {from: 0x151c, to: 0xd98}, + 56: {from: 0x1520, to: 0x38e}, + 57: {from: 0x152f, to: 0x19d}, + 58: {from: 0x157d, to: 0x20e}, + 59: {from: 0x1580, to: 0x10c}, + 60: {from: 0x15a0, to: 0x3cac}, + 61: {from: 0x1667, to: 0x199}, + 62: {from: 0x16c5, to: 0x135}, + 63: {from: 0x16fd, to: 0x29f5}, + 64: {from: 0x1715, to: 0x192}, + 65: {from: 0x1724, to: 0xf3c}, + 66: {from: 0x1777, to: 0x1521}, + 67: {from: 0x1806, to: 0x17b3}, + 68: {from: 0x1813, to: 0x18f0}, + 69: {from: 0x1887, to: 0x434}, + 70: {from: 0x1976, to: 0x1cfe}, + 71: {from: 0x1a71, to: 0x2bad}, + 72: {from: 0x1a87, to: 0x1f6}, + 73: {from: 0x1b57, to: 0x1f8}, + 74: {from: 0x1b83, to: 0x1512}, + 75: {from: 0x2035, to: 0x37ae}, + 76: {from: 0x203a, to: 0x20da}, + 77: {from: 0x2057, to: 0x309}, + 78: {from: 0x20e0, to: 0x272}, + 79: {from: 0x20eb, to: 0x261}, + 80: {from: 0x20ef, to: 0x22b}, + 81: {from: 0x20f6, to: 0x254}, + 82: {from: 0x210c, to: 0x21e8}, + 83: {from: 0x2132, to: 0x27b}, + 84: {from: 0x2196, to: 0x120}, + 85: {from: 0x21cb, to: 0x155e}, + 86: {from: 0x21e3, to: 0x502}, + 87: {from: 0x21f1, to: 0x49d}, + 88: {from: 0x222a, to: 0x120}, + 89: {from: 0x2234, to: 0x120}, + 90: {from: 0x225f, to: 0x927}, + 91: {from: 0x2313, to: 0x3223}, + 92: {from: 0x237f, to: 0x3362}, + 93: {from: 0x246f, to: 0x2c5}, + 94: {from: 0x24e1, to: 0x2fd}, + 95: {from: 0x24ed, to: 0x2f8}, + 96: {from: 0x24f7, to: 0x31d}, + 97: {from: 0x254d, to: 0xb58}, + 98: {from: 0x25a6, to: 0xe2}, + 99: {from: 0x263b, to: 0x2ce}, + 100: {from: 0x26c6, to: 0x26b1}, + 101: {from: 0x26f6, to: 0x3c6}, + 102: {from: 0x2724, to: 0x3cac}, + 103: {from: 0x2762, to: 0x26b1}, + 104: {from: 0x2786, to: 0x4355}, + 105: {from: 0x28ec, to: 0x2834}, + 106: {from: 0x2911, to: 0x34f}, + 107: {from: 0x2983, to: 0x2da4}, + 108: {from: 0x2b17, to: 0x38b}, + 109: {from: 0x2bf9, to: 0x393}, + 110: {from: 0x2c3c, to: 0x3cac}, + 111: {from: 0x2cf9, to: 0x3bc}, + 112: {from: 0x2d10, to: 0x594}, + 113: {from: 0x2d44, to: 0x147}, + 114: {from: 0x2d45, to: 0x147}, + 115: {from: 0x2dfc, to: 0x2ef}, + 116: {from: 0x2e05, to: 0x19c9}, + 117: {from: 0x2e17, to: 0x2d92}, + 118: {from: 0x2e1e, to: 0x290}, + 119: {from: 0x2e51, to: 0x7d}, + 120: {from: 0x2e62, to: 0x227f}, + 121: {from: 0x2e9d, to: 0x2e98}, + 122: {from: 0x2eec, to: 0x2ed4}, + 123: {from: 0x3190, to: 0x3c2}, + 124: {from: 0x3363, to: 0x338b}, + 125: {from: 0x3427, to: 0x3da}, + 126: {from: 0x34eb, to: 0x18cd}, + 127: {from: 0x35e3, to: 0x410}, + 128: {from: 0x3655, to: 0x244}, + 129: {from: 0x3673, to: 0x3f2}, + 130: {from: 0x36fa, to: 0x443}, + 131: {from: 0x37bd, to: 0x120}, + 132: {from: 0x3813, to: 0x38ef}, + 133: {from: 0x3828, to: 0x2c98}, + 134: {from: 0x382c, to: 0xa9}, + 135: {from: 0x382f, to: 0x3225}, + 136: {from: 0x3869, to: 0x39a3}, + 137: {from: 0x388f, to: 0x3fbd}, + 138: {from: 0x38a2, to: 0x39d4}, + 139: {from: 0x38b1, to: 0x1fa1}, + 140: {from: 0x38b2, to: 0x2e97}, + 141: {from: 0x3959, to: 0x47c}, + 142: {from: 0x3b4b, to: 0xd8e}, + 143: {from: 0x3b75, to: 0x136}, + 144: {from: 0x3c96, to: 0x4ba}, + 145: {from: 0x3fba, to: 0xff}, + 146: {from: 0x4205, to: 0xa8e}, + 147: {from: 0x42bb, to: 0x570}, + 148: {from: 0x42f6, to: 0x3f5d}, + 149: {from: 0x4375, to: 0x258}, + 150: {from: 0x43c8, to: 0x36c8}, + 151: {from: 0x43ca, to: 0x10e}, + 152: {from: 0x44ac, to: 0x331f}, + 153: {from: 0x44e0, to: 0x510}, + 154: {from: 0x45c7, to: 0x2406}, + 155: {from: 0x45da, to: 0x26d9}, + 156: {from: 0x460d, to: 0x48ab}, + 157: {from: 0x46ab, to: 0x469d}, + 158: {from: 0x473b, to: 0x4742}, + 159: {from: 0x4913, to: 0x31d}, + 160: {from: 0x49a4, to: 0x521}, } -// Size: 160 bytes, 160 elements -var langAliasTypes = [160]langAliasType{ +// Size: 161 bytes, 161 elements +var langAliasTypes = [161]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, + 1, 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, // 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, + 1, 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, // 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, + 1, 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 ( @@ -717,7 +780,7 @@ const ( // 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 +const script tag.Index = "" + // Size: 928 bytes "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgyd" + "EgyhEgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHanbHangHaniHanoHansHant" + @@ -735,110 +798,195 @@ var script tag.Index = "" + // Size: 928 bytes // 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{ +// Size: 1327 bytes, 1327 elements +var suppressScript = [1327]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, 0x1e, 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, 0x00, 0x27, 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, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 40 - 7F 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, 0x52, 0x00, 0x00, 0x00, 0x00, 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, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, // 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, + 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, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 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, // 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, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 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, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + // Entry 100 - 13F + 0x52, 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, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, + 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, + // Entry 140 - 17F + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x2e, 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, 0x20, 0x00, 0x00, 0x00, // 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, + 0x52, 0x00, 0x52, 0x52, 0x00, 0x08, 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, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, + 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x41, 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, 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, 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, + 0x1e, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, + 0x00, 0x00, 0x4b, 0x00, 0x20, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 280 - 2BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x4f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + // Entry 2C0 - 2FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 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, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + // Entry 300 - 33F + 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + // Entry 340 - 37F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x52, 0x00, 0x00, 0x00, 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, + // Entry 380 - 3BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2f, 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, 0x05, 0x00, 0x52, 0x00, + // Entry 3C0 - 3FF 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 400 - 43F + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 440 - 47F + 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xd5, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, + // Entry 480 - 4BF + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x52, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + // Entry 4C0 - 4FF 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, + 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, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 500 - 53F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, } const ( @@ -847,15 +995,15 @@ const ( _BR = 64 _CA = 72 _ES = 109 - _GB = 121 - _MD = 186 - _PT = 236 - _UK = 304 - _US = 306 - _ZZ = 354 - _XA = 320 - _XC = 322 - _XK = 330 + _GB = 122 + _MD = 187 + _PT = 237 + _UK = 305 + _US = 308 + _ZZ = 356 + _XA = 322 + _XC = 324 + _XK = 332 ) // isoRegionOffset needs to be added to the index of regionISO to obtain the regionID @@ -864,8 +1012,8 @@ const ( const isoRegionOffset = 31 // regionTypes defines the status of a region for various standards. -// Size: 355 bytes, 355 elements -var regionTypes = [355]uint8{ +// Size: 357 bytes, 357 elements +var regionTypes = [357]uint8{ // Entry 0 - 3F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -882,41 +1030,41 @@ var regionTypes = [355]uint8{ 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, + 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, + 0x04, 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, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x00, 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, 0x00, - // Entry C0 - FF 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry C0 - FF + 0x00, 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, + 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, // Entry 100 - 13F - 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x05, 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, 0x04, 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, - 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, + 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // Entry 140 - 17F + 0x00, 0x06, 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, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x04, 0x06, 0x06, 0x04, 0x06, 0x06, - 0x04, 0x06, 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. @@ -924,68 +1072,68 @@ var regionTypes = [355]uint8{ // - [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 +const regionISO tag.Index = "" + // Size: 1308 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" + "HYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03EZ FIINFJJIFKLKFMSMFORO" + + "FQ\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQNQGR" + + "RCGS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERLILSR" + + "IMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM\x00" + + "\x09KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSOLTTU" + + "LUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNPMQTQ" + + "MRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLDNOOR" + + "NPPLNQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM\x00" + + "\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSSQTTT" + + "QU\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLBSCYC" + + "SDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXMSYYR" + + "SZWZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTTTOTV" + + "UVTWWNTZZAUAKRUGGAUK UMMIUN USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVNNMVU" + + "UTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXNNNXO" + + "OOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUGZAAF" + + "ZMMBZRARZWWEZZZZ\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" +const 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, + 0x0056, 0x006f, 0x0087, 0x00a7, 0x00a9, 0x00ac, 0x00e9, 0x0104, + 0x0120, 0x015e, 0x00db, } // Size: 80 bytes, 20 elements var regionOldMap = [20]fromTo{ - 0: {from: 0x43, to: 0xc2}, - 1: {from: 0x57, to: 0xa5}, + 0: {from: 0x43, to: 0xc3}, + 1: {from: 0x57, to: 0xa6}, 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}, + 4: {from: 0x78, to: 0x77}, + 5: {from: 0x92, to: 0x36}, + 6: {from: 0xa2, to: 0x132}, + 7: {from: 0xc0, to: 0x132}, + 8: {from: 0xd6, to: 0x13e}, + 9: {from: 0xdb, to: 0x2a}, + 10: {from: 0xee, to: 0x132}, + 11: {from: 0xf1, to: 0xe1}, + 12: {from: 0xfb, to: 0x6f}, + 13: {from: 0x102, to: 0x163}, + 14: {from: 0x129, to: 0x125}, + 15: {from: 0x131, to: 0x7a}, + 16: {from: 0x139, to: 0x13d}, + 17: {from: 0x140, to: 0x132}, + 18: {from: 0x15c, to: 0x15d}, + 19: {from: 0x162, 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{ +// Size: 714 bytes, 357 elements +var m49 = [357]int16{ // Entry 0 - 3F 0, 1, 2, 3, 5, 9, 11, 13, 14, 15, 17, 18, 19, 21, 29, 30, @@ -1002,41 +1150,41 @@ var m49 = [355]int16{ 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, + 0, 246, 242, 238, 583, 234, 0, 250, + 249, 266, 826, 308, 268, 254, 831, 288, // 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, + 292, 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, // 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, + 581, 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, // 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, + 972, 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, 0, 840, 858, 860, 336, + 670, 704, 862, 92, 850, 704, 548, 876, // 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, + 581, 882, 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 @@ -1060,50 +1208,50 @@ var fromM49 = [332]uint16{ 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, + 0xac99, 0xb508, 0xb93b, 0xc03d, 0xc837, 0xd0c3, 0xd839, 0xe046, + 0xe8a5, 0xf051, 0xf848, 0x0859, 0x10ac, 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, + 0x20b2, 0x2219, 0x291f, 0x2c1a, 0x2e1b, 0x3050, 0x341c, 0x361d, + 0x3852, 0x3d2d, 0x445b, 0x4c49, 0x5453, 0x5ca7, 0x5f5e, 0x644c, + 0x684a, 0x704f, 0x7855, 0x7e8f, 0x8058, 0x885c, 0x965d, 0x983a, + 0xa062, 0xa863, 0xac64, 0xb468, 0xbd19, 0xc485, 0xcc6e, 0xce6e, + 0xd06c, 0xd269, 0xd475, 0xdc73, 0xde87, 0xe472, 0xec71, 0xf030, + 0xf278, 0xf477, 0xfc7d, 0x04e4, 0x0920, 0x0c61, 0x1479, 0x187c, + 0x1c82, 0x26ec, 0x285f, 0x2c5e, 0x305f, 0x407f, 0x4880, 0x50a6, + 0x5886, 0x6081, 0x687b, 0x7084, 0x7889, 0x8088, 0x8883, 0x908b, // 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, + 0x9890, 0x9c8d, 0xa137, 0xa88e, 0xb08c, 0xb891, 0xc09c, 0xc898, + 0xd094, 0xd89b, 0xe09a, 0xe895, 0xf096, 0xf89d, 0x004e, 0x089f, + 0x10a1, 0x1cad, 0x20a0, 0x28a3, 0x30a9, 0x34aa, 0x3cab, 0x42a4, + 0x44ae, 0x461e, 0x4caf, 0x54b4, 0x58b7, 0x5cb3, 0x64b8, 0x6cb1, + 0x70b5, 0x74b6, 0x7cc5, 0x84be, 0x8ccd, 0x94cf, 0x9ccc, 0xa4c2, + 0xacca, 0xb4c7, 0xbcc8, 0xc0cb, 0xc8ce, 0xd8ba, 0xe0c4, 0xe4bb, + 0xe6bc, 0xe8c9, 0xf0b9, 0xf8d0, 0x00e0, 0x08d1, 0x10dc, 0x18da, + 0x20d8, 0x2428, 0x265a, 0x2a2f, 0x2d1a, 0x2e3f, 0x30dd, 0x38d2, // 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, + 0x493e, 0x54df, 0x5cd7, 0x64d3, 0x6cd5, 0x74de, 0x7cd4, 0x84d9, + 0x88c6, 0x8b32, 0x8e74, 0x90bf, 0x92ef, 0x94e7, 0x9ee1, 0xace5, + 0xb0f0, 0xb8e3, 0xc0e6, 0xc8ea, 0xd0e8, 0xd8ed, 0xe08a, 0xe525, + 0xeceb, 0xf4f2, 0xfd01, 0x0503, 0x0705, 0x0d06, 0x183b, 0x1d0d, + 0x26a8, 0x2825, 0x2cb0, 0x2ebd, 0x34e9, 0x3d38, 0x4512, 0x4d17, + 0x5507, 0x5d13, 0x6104, 0x6509, 0x6d11, 0x7d0c, 0x7f10, 0x813d, + 0x830e, 0x8514, 0x8d60, 0x9963, 0xa15c, 0xa86d, 0xb116, 0xb30a, + 0xb86b, 0xc10a, 0xc915, 0xd10f, 0xd91c, 0xe10b, 0xe84d, 0xf11b, // 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, + 0xf523, 0xf922, 0x0121, 0x0924, 0x1128, 0x192b, 0x2022, 0x2927, + 0x312a, 0x3726, 0x391e, 0x3d2c, 0x4130, 0x492f, 0x4ec1, 0x5518, + 0x646a, 0x747a, 0x7e7e, 0x809e, 0x8297, 0x852e, 0x9134, 0xa53c, + 0xac36, 0xb535, 0xb936, 0xbd3a, 0xd93f, 0xe541, 0xed5d, 0xef5d, + 0xf656, 0xfd61, 0x7c1f, 0x7ef3, 0x80f4, 0x82f5, 0x84f6, 0x86f7, + 0x88f8, 0x8af9, 0x8cfa, 0x8e6f, 0x90fc, 0x92fd, 0x94fe, 0x96ff, + 0x9900, 0x9b42, 0x9d43, 0x9f44, 0xa145, 0xa346, 0xa547, 0xa748, + 0xa949, 0xab4a, 0xad4b, 0xaf4c, 0xb14d, 0xb34e, 0xb54f, 0xb750, // Entry 140 - 17F - 0xb94f, 0xbb50, 0xbd51, 0xbf52, 0xc153, 0xc354, 0xc555, 0xc756, - 0xc957, 0xcb58, 0xcd59, 0xcf62, + 0xb951, 0xbb52, 0xbd53, 0xbf54, 0xc155, 0xc356, 0xc557, 0xc758, + 0xc959, 0xcb5a, 0xcd5b, 0xcf64, } -// Size: 1444 bytes +// Size: 1463 bytes var variantIndex = map[string]uint8{ "1606nict": 0x0, "1694acad": 0x1, @@ -1132,8 +1280,9 @@ var variantIndex = map[string]uint8{ "ekavsk": 0x15, "emodeng": 0x16, "fonipa": 0x48, - "fonupa": 0x49, - "fonxsamp": 0x4a, + "fonnapa": 0x49, + "fonupa": 0x4a, + "fonxsamp": 0x4b, "hepburn": 0x17, "heploc": 0x46, "hognorsk": 0x18, @@ -1166,7 +1315,7 @@ var variantIndex = map[string]uint8{ "rumgr": 0x30, "scotland": 0x31, "scouse": 0x32, - "simple": 0x4b, + "simple": 0x4c, "solba": 0x44, "sotav": 0x33, "surmiran": 0x34, @@ -1198,145 +1347,145 @@ type likelyLangRegion struct { // 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}, + 1: {lang: 0x14d, region: 0x83}, + 3: {lang: 0x2a0, region: 0x105}, + 4: {lang: 0x1f, region: 0x98}, + 5: {lang: 0x3a, region: 0x6a}, + 7: {lang: 0x3b, region: 0x9b}, + 8: {lang: 0x1d5, region: 0x27}, + 9: {lang: 0x13, region: 0x9b}, + 10: {lang: 0x5b, region: 0x94}, + 11: {lang: 0x60, region: 0x51}, + 12: {lang: 0xb9, region: 0xb3}, + 13: {lang: 0x63, region: 0x94}, + 14: {lang: 0xa5, region: 0x34}, + 15: {lang: 0x3e7, region: 0x98}, + 17: {lang: 0x527, region: 0x12d}, + 18: {lang: 0x3af, region: 0x98}, + 19: {lang: 0x15d, region: 0x77}, + 20: {lang: 0xc2, region: 0x94}, + 21: {lang: 0x9d, region: 0xe6}, + 22: {lang: 0xdb, region: 0x34}, + 23: {lang: 0xf2, region: 0x48}, + 24: {lang: 0x4ee, region: 0x12a}, + 25: {lang: 0xe7, region: 0x13d}, + 26: {lang: 0xe5, region: 0x134}, + 28: {lang: 0xf0, region: 0x6a}, + 29: {lang: 0x19e, region: 0x5c}, + 30: {lang: 0x3e0, region: 0x105}, + 32: {lang: 0x1bc, region: 0x98}, + 34: {lang: 0x15d, region: 0x77}, + 37: {lang: 0x132, region: 0x6a}, + 38: {lang: 0x42f, region: 0x26}, + 39: {lang: 0x27, region: 0x6e}, + 41: {lang: 0x20e, region: 0x7c}, + 42: {lang: 0xfd, region: 0x37}, + 43: {lang: 0x19c, region: 0x12f}, + 44: {lang: 0x3e7, region: 0x98}, + 45: {lang: 0x135, region: 0x86}, + 46: {lang: 0x1a2, region: 0x98}, + 47: {lang: 0x39b, region: 0x98}, + 48: {lang: 0x527, region: 0x12d}, + 49: {lang: 0x252, region: 0xaa}, + 50: {lang: 0x527, region: 0x52}, + 51: {lang: 0x1c9, region: 0xe6}, + 52: {lang: 0x527, region: 0x52}, + 53: {lang: 0x527, region: 0x12d}, + 54: {lang: 0x2fb, region: 0x9a}, + 55: {lang: 0x1ba, region: 0x96}, + 56: {lang: 0x1fe, region: 0xa1}, + 57: {lang: 0x1c3, region: 0x12a}, + 58: {lang: 0x1c8, region: 0xae}, + 60: {lang: 0x1d3, region: 0x91}, + 62: {lang: 0x141, region: 0x9d}, + 63: {lang: 0x252, region: 0xaa}, + 64: {lang: 0x20c, region: 0x94}, + 65: {lang: 0x1fe, region: 0xa1}, + 67: {lang: 0x134, region: 0xc3}, + 68: {lang: 0x1fe, region: 0xa1}, + 69: {lang: 0x3b9, region: 0xe7}, + 70: {lang: 0x248, region: 0xa5}, + 71: {lang: 0x3f8, region: 0x98}, + 74: {lang: 0x24f, region: 0x98}, + 75: {lang: 0x252, region: 0xaa}, + 77: {lang: 0x88, region: 0x98}, + 78: {lang: 0x36e, region: 0x122}, + 79: {lang: 0x2b6, region: 0xae}, + 84: {lang: 0x29d, region: 0x98}, + 85: {lang: 0x2a6, region: 0x98}, + 86: {lang: 0x28d, region: 0x86}, + 87: {lang: 0x19e, region: 0x86}, + 88: {lang: 0x2aa, region: 0x52}, + 90: {lang: 0x4f2, region: 0x12a}, + 91: {lang: 0x4f3, region: 0x12a}, + 92: {lang: 0x1bc, region: 0x98}, + 93: {lang: 0x335, region: 0x9b}, + 94: {lang: 0x4f5, region: 0x52}, + 95: {lang: 0xa9, region: 0x52}, + 97: {lang: 0x2e6, region: 0x111}, + 98: {lang: 0x4f6, region: 0x10a}, + 99: {lang: 0x4f6, region: 0x10a}, + 100: {lang: 0x302, region: 0x98}, + 101: {lang: 0x319, region: 0x98}, + 102: {lang: 0x309, region: 0x52}, + 104: {lang: 0x31c, region: 0x34}, + 105: {lang: 0x30c, region: 0x98}, + 106: {lang: 0x412, region: 0xe7}, + 107: {lang: 0x32f, region: 0xc3}, + 108: {lang: 0x4f7, region: 0x107}, + 109: {lang: 0x3b, region: 0xa0}, + 110: {lang: 0x351, region: 0xda}, + 112: {lang: 0x2ce, region: 0x83}, + 114: {lang: 0x401, region: 0x95}, + 115: {lang: 0x3ec, region: 0x98}, + 116: {lang: 0x399, region: 0xc4}, + 117: {lang: 0x393, region: 0x98}, + 118: {lang: 0x397, region: 0x134}, + 119: {lang: 0x427, region: 0x114}, + 120: {lang: 0x3b, region: 0x11b}, + 121: {lang: 0xfc, region: 0xc3}, + 122: {lang: 0x27b, region: 0x105}, + 123: {lang: 0x2c7, region: 0x52}, + 124: {lang: 0x39d, region: 0x9b}, + 125: {lang: 0x39d, region: 0x52}, + 127: {lang: 0x3ab, region: 0xaf}, + 129: {lang: 0x1c4, region: 0x52}, + 130: {lang: 0x4fb, region: 0x9b}, + 181: {lang: 0x3c9, region: 0x94}, + 183: {lang: 0x370, region: 0x10b}, + 184: {lang: 0x41e, region: 0x96}, + 186: {lang: 0x4fd, region: 0x15d}, + 187: {lang: 0x3ee, region: 0x98}, + 188: {lang: 0x45, region: 0x134}, + 189: {lang: 0x138, region: 0x7a}, + 190: {lang: 0x3e7, region: 0x98}, + 191: {lang: 0x3e7, region: 0x98}, + 192: {lang: 0x3f8, region: 0x98}, + 193: {lang: 0x40a, region: 0xb2}, + 194: {lang: 0x431, region: 0x98}, + 195: {lang: 0x43c, region: 0x94}, + 196: {lang: 0x44b, region: 0x34}, + 197: {lang: 0x44c, region: 0x9a}, + 201: {lang: 0x458, region: 0xe6}, + 202: {lang: 0x119, region: 0x98}, + 203: {lang: 0x45c, region: 0x52}, + 204: {lang: 0x230, region: 0x52}, + 205: {lang: 0x44e, region: 0x98}, + 206: {lang: 0x4a3, region: 0x52}, + 207: {lang: 0x9f, region: 0x13d}, + 208: {lang: 0x45f, region: 0x98}, + 210: {lang: 0x526, region: 0xb9}, + 211: {lang: 0x152, region: 0xe6}, + 212: {lang: 0x127, region: 0xcc}, + 213: {lang: 0x469, region: 0x122}, + 214: {lang: 0xa9, region: 0x52}, + 215: {lang: 0x2cc, region: 0x98}, + 216: {lang: 0x4ab, region: 0x11b}, + 217: {lang: 0x4bc, region: 0xb3}, + 219: {lang: 0x1cc, region: 0x98}, + 221: {lang: 0x3a7, region: 0x9b}, + 222: {lang: 0x22, region: 0x9a}, + 223: {lang: 0x1e8, region: 0x52}, } type likelyScriptRegion struct { @@ -1349,807 +1498,1419 @@ type likelyScriptRegion struct { // 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}, +// Size: 5308 bytes, 1327 elements +var likelyLang = [1327]likelyScriptRegion{ + 0: {region: 0x134, script: 0x52, flags: 0x0}, + 1: {region: 0x6e, script: 0x52, flags: 0x0}, + 2: {region: 0x164, script: 0x52, flags: 0x0}, + 3: {region: 0x164, script: 0x52, flags: 0x0}, + 4: {region: 0x164, script: 0x52, flags: 0x0}, + 5: {region: 0x7c, script: 0x1e, flags: 0x0}, + 6: {region: 0x164, script: 0x52, flags: 0x0}, + 7: {region: 0x164, script: 0x1e, flags: 0x0}, + 8: {region: 0x7f, script: 0x52, flags: 0x0}, + 9: {region: 0x164, script: 0x52, flags: 0x0}, + 10: {region: 0x164, script: 0x52, flags: 0x0}, + 11: {region: 0x164, script: 0x52, flags: 0x0}, + 12: {region: 0x94, script: 0x52, flags: 0x0}, + 13: {region: 0x130, script: 0x52, flags: 0x0}, + 14: {region: 0x7f, script: 0x52, flags: 0x0}, + 15: {region: 0x164, script: 0x52, flags: 0x0}, + 16: {region: 0x164, script: 0x52, flags: 0x0}, + 17: {region: 0x105, script: 0x1e, flags: 0x0}, + 18: {region: 0x164, script: 0x52, flags: 0x0}, + 19: {region: 0x9b, script: 0x9, flags: 0x0}, + 20: {region: 0x127, script: 0x5, flags: 0x0}, + 21: {region: 0x164, script: 0x52, flags: 0x0}, + 22: {region: 0x160, script: 0x52, flags: 0x0}, + 23: {region: 0x164, script: 0x52, flags: 0x0}, + 24: {region: 0x164, script: 0x52, flags: 0x0}, + 25: {region: 0x164, script: 0x52, flags: 0x0}, + 26: {region: 0x164, script: 0x52, flags: 0x0}, + 27: {region: 0x164, script: 0x52, flags: 0x0}, + 28: {region: 0x51, script: 0x52, flags: 0x0}, + 29: {region: 0x164, script: 0x52, flags: 0x0}, + 30: {region: 0x164, script: 0x52, flags: 0x0}, + 31: {region: 0x98, script: 0x4, flags: 0x0}, + 32: {region: 0x164, script: 0x52, flags: 0x0}, + 33: {region: 0x7f, script: 0x52, flags: 0x0}, + 34: {region: 0x9a, script: 0xde, flags: 0x0}, + 35: {region: 0x164, script: 0x52, flags: 0x0}, + 36: {region: 0x164, script: 0x52, flags: 0x0}, + 37: {region: 0x14c, script: 0x52, flags: 0x0}, + 38: {region: 0x105, script: 0x1e, flags: 0x0}, + 39: {region: 0x6e, script: 0x27, flags: 0x0}, + 40: {region: 0x164, script: 0x52, flags: 0x0}, + 41: {region: 0x164, script: 0x52, flags: 0x0}, + 42: {region: 0xd5, script: 0x52, flags: 0x0}, + 43: {region: 0x164, script: 0x52, flags: 0x0}, + 45: {region: 0x164, script: 0x52, flags: 0x0}, + 46: {region: 0x164, script: 0x52, flags: 0x0}, + 47: {region: 0x164, script: 0x52, flags: 0x0}, + 48: {region: 0x164, script: 0x52, flags: 0x0}, + 49: {region: 0x164, script: 0x52, flags: 0x0}, + 50: {region: 0x164, script: 0x52, flags: 0x0}, + 51: {region: 0x94, script: 0x52, flags: 0x0}, + 52: {region: 0x164, script: 0x5, flags: 0x0}, + 53: {region: 0x121, script: 0x5, flags: 0x0}, + 54: {region: 0x164, script: 0x52, flags: 0x0}, + 55: {region: 0x164, script: 0x52, flags: 0x0}, + 56: {region: 0x164, script: 0x52, flags: 0x0}, + 57: {region: 0x164, script: 0x52, flags: 0x0}, + 58: {region: 0x6a, script: 0x5, flags: 0x0}, + 59: {region: 0x0, script: 0x3, flags: 0x1}, + 60: {region: 0x164, script: 0x52, flags: 0x0}, + 61: {region: 0x50, script: 0x52, flags: 0x0}, + 62: {region: 0x3e, script: 0x52, flags: 0x0}, + 63: {region: 0x66, script: 0x5, flags: 0x0}, + 65: {region: 0xb9, script: 0x5, flags: 0x0}, + 66: {region: 0x6a, script: 0x5, flags: 0x0}, + 67: {region: 0x98, script: 0xe, flags: 0x0}, + 68: {region: 0x12e, script: 0x52, flags: 0x0}, + 69: {region: 0x134, script: 0xbc, flags: 0x0}, + 70: {region: 0x164, script: 0x52, flags: 0x0}, + 71: {region: 0x164, script: 0x52, flags: 0x0}, + 72: {region: 0x6d, script: 0x52, flags: 0x0}, + 73: {region: 0x164, script: 0x52, flags: 0x0}, + 74: {region: 0x164, script: 0x52, flags: 0x0}, + 75: {region: 0x48, script: 0x52, flags: 0x0}, + 76: {region: 0x164, script: 0x52, flags: 0x0}, + 77: {region: 0x105, script: 0x1e, flags: 0x0}, + 78: {region: 0x164, script: 0x5, flags: 0x0}, + 79: {region: 0x164, script: 0x52, flags: 0x0}, + 80: {region: 0x164, script: 0x52, flags: 0x0}, + 81: {region: 0x164, script: 0x52, flags: 0x0}, + 82: {region: 0x98, script: 0x20, flags: 0x0}, + 83: {region: 0x164, script: 0x52, flags: 0x0}, + 84: {region: 0x164, script: 0x52, flags: 0x0}, + 85: {region: 0x164, script: 0x52, flags: 0x0}, + 86: {region: 0x3e, script: 0x52, flags: 0x0}, + 87: {region: 0x164, script: 0x52, flags: 0x0}, + 88: {region: 0x3, script: 0x5, flags: 0x1}, + 89: {region: 0x105, script: 0x1e, flags: 0x0}, + 90: {region: 0xe7, script: 0x5, flags: 0x0}, + 91: {region: 0x94, script: 0x52, flags: 0x0}, + 92: {region: 0xda, script: 0x20, flags: 0x0}, + 93: {region: 0x2d, script: 0x52, flags: 0x0}, + 94: {region: 0x51, script: 0x52, flags: 0x0}, + 95: {region: 0x164, script: 0x52, flags: 0x0}, + 96: {region: 0x51, script: 0xb, flags: 0x0}, + 97: {region: 0x164, script: 0x52, flags: 0x0}, + 98: {region: 0x164, script: 0x52, flags: 0x0}, + 99: {region: 0x94, script: 0x52, flags: 0x0}, + 100: {region: 0x164, script: 0x52, flags: 0x0}, + 101: {region: 0x51, script: 0x52, flags: 0x0}, + 102: {region: 0x164, script: 0x52, flags: 0x0}, + 103: {region: 0x164, script: 0x52, flags: 0x0}, + 104: {region: 0x164, script: 0x52, flags: 0x0}, + 105: {region: 0x164, script: 0x52, flags: 0x0}, + 106: {region: 0x4e, script: 0x52, flags: 0x0}, + 107: {region: 0x164, script: 0x52, flags: 0x0}, + 108: {region: 0x164, script: 0x52, flags: 0x0}, + 109: {region: 0x164, script: 0x52, flags: 0x0}, + 110: {region: 0x164, script: 0x27, flags: 0x0}, + 111: {region: 0x164, script: 0x52, flags: 0x0}, + 112: {region: 0x164, script: 0x52, flags: 0x0}, + 113: {region: 0x46, script: 0x1e, flags: 0x0}, + 114: {region: 0x164, script: 0x52, flags: 0x0}, + 115: {region: 0x164, script: 0x52, flags: 0x0}, + 116: {region: 0x10a, script: 0x5, flags: 0x0}, + 117: {region: 0x161, script: 0x52, flags: 0x0}, + 118: {region: 0x164, script: 0x52, flags: 0x0}, + 119: {region: 0x94, script: 0x52, flags: 0x0}, + 120: {region: 0x164, script: 0x52, flags: 0x0}, + 121: {region: 0x12e, script: 0x52, flags: 0x0}, + 122: {region: 0x51, script: 0x52, flags: 0x0}, + 123: {region: 0x98, script: 0xcd, flags: 0x0}, + 124: {region: 0xe7, script: 0x5, flags: 0x0}, + 125: {region: 0x98, script: 0x20, flags: 0x0}, + 126: {region: 0x37, script: 0x1e, flags: 0x0}, + 127: {region: 0x98, script: 0x20, flags: 0x0}, + 128: {region: 0xe7, script: 0x5, flags: 0x0}, + 129: {region: 0x12a, script: 0x2d, flags: 0x0}, + 131: {region: 0x98, script: 0x20, flags: 0x0}, + 132: {region: 0x164, script: 0x52, flags: 0x0}, + 133: {region: 0x98, script: 0x20, flags: 0x0}, + 134: {region: 0xe6, script: 0x52, flags: 0x0}, + 135: {region: 0x164, script: 0x52, flags: 0x0}, + 136: {region: 0x98, script: 0x20, flags: 0x0}, + 137: {region: 0x164, script: 0x52, flags: 0x0}, + 138: {region: 0x13e, script: 0x52, flags: 0x0}, + 139: {region: 0x164, script: 0x52, flags: 0x0}, + 140: {region: 0x164, script: 0x52, flags: 0x0}, + 141: {region: 0xe6, script: 0x52, flags: 0x0}, + 142: {region: 0x164, script: 0x52, flags: 0x0}, + 143: {region: 0xd5, script: 0x52, flags: 0x0}, + 144: {region: 0x164, script: 0x52, flags: 0x0}, + 145: {region: 0x164, script: 0x52, flags: 0x0}, + 146: {region: 0x164, script: 0x52, flags: 0x0}, + 147: {region: 0x164, script: 0x27, flags: 0x0}, + 148: {region: 0x98, script: 0x20, flags: 0x0}, + 149: {region: 0x94, script: 0x52, flags: 0x0}, + 150: {region: 0x164, script: 0x52, flags: 0x0}, + 151: {region: 0x164, script: 0x52, flags: 0x0}, + 152: {region: 0x113, script: 0x52, flags: 0x0}, + 153: {region: 0x164, script: 0x52, flags: 0x0}, + 154: {region: 0x164, script: 0x52, flags: 0x0}, + 155: {region: 0x51, script: 0x52, flags: 0x0}, + 156: {region: 0x164, script: 0x52, flags: 0x0}, + 157: {region: 0xe6, script: 0x52, flags: 0x0}, + 158: {region: 0x164, script: 0x52, flags: 0x0}, + 159: {region: 0x13d, script: 0xcf, flags: 0x0}, + 160: {region: 0xc2, script: 0x52, flags: 0x0}, + 161: {region: 0x164, script: 0x52, flags: 0x0}, + 162: {region: 0x164, script: 0x52, flags: 0x0}, + 163: {region: 0xc2, script: 0x52, flags: 0x0}, + 164: {region: 0x164, script: 0x52, flags: 0x0}, + 165: {region: 0x34, script: 0xe, flags: 0x0}, + 166: {region: 0x164, script: 0x52, flags: 0x0}, + 167: {region: 0x164, script: 0x52, flags: 0x0}, + 168: {region: 0x164, script: 0x52, flags: 0x0}, + 169: {region: 0x52, script: 0xd6, flags: 0x0}, + 170: {region: 0x164, script: 0x52, flags: 0x0}, + 171: {region: 0x164, script: 0x52, flags: 0x0}, + 172: {region: 0x164, script: 0x52, flags: 0x0}, + 173: {region: 0x98, script: 0xe, flags: 0x0}, + 174: {region: 0x164, script: 0x52, flags: 0x0}, + 175: {region: 0x9b, script: 0x5, flags: 0x0}, + 176: {region: 0x164, script: 0x52, flags: 0x0}, + 177: {region: 0x4e, script: 0x52, flags: 0x0}, + 178: {region: 0x77, script: 0x52, flags: 0x0}, + 179: {region: 0x98, script: 0x20, flags: 0x0}, + 180: {region: 0xe7, script: 0x5, flags: 0x0}, + 181: {region: 0x98, script: 0x20, flags: 0x0}, + 182: {region: 0x164, script: 0x52, flags: 0x0}, + 183: {region: 0x32, script: 0x52, flags: 0x0}, + 184: {region: 0x164, script: 0x52, flags: 0x0}, + 185: {region: 0xb3, script: 0xc, flags: 0x0}, + 186: {region: 0x51, script: 0x52, flags: 0x0}, + 187: {region: 0x164, script: 0x27, flags: 0x0}, + 188: {region: 0xe6, script: 0x52, flags: 0x0}, + 189: {region: 0x164, script: 0x52, flags: 0x0}, + 190: {region: 0xe7, script: 0x20, flags: 0x0}, + 191: {region: 0x105, script: 0x1e, flags: 0x0}, + 192: {region: 0x15e, script: 0x52, flags: 0x0}, + 193: {region: 0x164, script: 0x52, flags: 0x0}, + 194: {region: 0x94, script: 0x52, flags: 0x0}, + 195: {region: 0x164, script: 0x52, flags: 0x0}, + 196: {region: 0x51, script: 0x52, flags: 0x0}, + 197: {region: 0x164, script: 0x52, flags: 0x0}, + 198: {region: 0x164, script: 0x52, flags: 0x0}, + 199: {region: 0x164, script: 0x52, flags: 0x0}, + 200: {region: 0x85, script: 0x52, flags: 0x0}, + 201: {region: 0x164, script: 0x52, flags: 0x0}, + 202: {region: 0x164, script: 0x52, flags: 0x0}, + 203: {region: 0x164, script: 0x52, flags: 0x0}, + 204: {region: 0x164, script: 0x52, flags: 0x0}, + 205: {region: 0x6c, script: 0x27, flags: 0x0}, + 206: {region: 0x164, script: 0x52, flags: 0x0}, + 207: {region: 0x164, script: 0x52, flags: 0x0}, + 208: {region: 0x51, script: 0x52, flags: 0x0}, + 209: {region: 0x164, script: 0x52, flags: 0x0}, + 210: {region: 0x164, script: 0x52, flags: 0x0}, + 211: {region: 0xc2, script: 0x52, flags: 0x0}, + 212: {region: 0x164, script: 0x52, flags: 0x0}, + 213: {region: 0x164, script: 0x52, flags: 0x0}, + 214: {region: 0x164, script: 0x52, flags: 0x0}, + 215: {region: 0x6d, script: 0x52, flags: 0x0}, + 216: {region: 0x164, script: 0x52, flags: 0x0}, + 217: {region: 0x164, script: 0x52, flags: 0x0}, + 218: {region: 0xd5, script: 0x52, flags: 0x0}, + 219: {region: 0x34, script: 0x16, flags: 0x0}, + 220: {region: 0x105, script: 0x1e, flags: 0x0}, + 221: {region: 0xe6, script: 0x52, flags: 0x0}, + 222: {region: 0x164, script: 0x52, flags: 0x0}, + 223: {region: 0x130, script: 0x52, flags: 0x0}, + 224: {region: 0x89, script: 0x52, flags: 0x0}, + 225: {region: 0x74, script: 0x52, flags: 0x0}, + 226: {region: 0x105, script: 0x1e, flags: 0x0}, + 227: {region: 0x134, script: 0x52, flags: 0x0}, + 228: {region: 0x48, script: 0x52, flags: 0x0}, + 229: {region: 0x134, script: 0x1a, flags: 0x0}, + 230: {region: 0xa5, script: 0x5, flags: 0x0}, + 231: {region: 0x13d, script: 0x19, flags: 0x0}, + 232: {region: 0x164, script: 0x52, flags: 0x0}, + 233: {region: 0x9a, script: 0x5, flags: 0x0}, + 234: {region: 0x164, script: 0x52, flags: 0x0}, + 235: {region: 0x164, script: 0x52, flags: 0x0}, + 236: {region: 0x164, script: 0x52, flags: 0x0}, + 237: {region: 0x164, script: 0x52, flags: 0x0}, + 238: {region: 0x164, script: 0x52, flags: 0x0}, + 239: {region: 0x77, script: 0x52, flags: 0x0}, + 240: {region: 0x6a, script: 0x1c, flags: 0x0}, + 241: {region: 0xe6, script: 0x52, flags: 0x0}, + 242: {region: 0x48, script: 0x17, flags: 0x0}, + 243: {region: 0x12f, script: 0x1e, flags: 0x0}, + 244: {region: 0x48, script: 0x17, flags: 0x0}, + 245: {region: 0x48, script: 0x17, flags: 0x0}, + 246: {region: 0x48, script: 0x17, flags: 0x0}, + 247: {region: 0x48, script: 0x17, flags: 0x0}, + 248: {region: 0x109, script: 0x52, flags: 0x0}, + 249: {region: 0x5d, script: 0x52, flags: 0x0}, + 250: {region: 0xe8, script: 0x52, flags: 0x0}, + 251: {region: 0x48, script: 0x17, flags: 0x0}, + 252: {region: 0xc3, script: 0x79, flags: 0x0}, + 253: {region: 0x8, script: 0x2, flags: 0x1}, + 254: {region: 0x105, script: 0x1e, flags: 0x0}, + 255: {region: 0x7a, script: 0x52, flags: 0x0}, + 256: {region: 0x62, script: 0x52, flags: 0x0}, + 257: {region: 0x164, script: 0x52, flags: 0x0}, + 258: {region: 0x164, script: 0x52, flags: 0x0}, + 259: {region: 0x164, script: 0x52, flags: 0x0}, + 260: {region: 0x164, script: 0x52, flags: 0x0}, + 261: {region: 0x134, script: 0x52, flags: 0x0}, + 262: {region: 0x105, script: 0x1e, flags: 0x0}, + 263: {region: 0xa3, script: 0x52, flags: 0x0}, + 264: {region: 0x164, script: 0x52, flags: 0x0}, + 265: {region: 0x164, script: 0x52, flags: 0x0}, + 266: {region: 0x98, script: 0x5, flags: 0x0}, + 267: {region: 0x164, script: 0x52, flags: 0x0}, + 268: {region: 0x5f, script: 0x52, flags: 0x0}, + 269: {region: 0x164, script: 0x52, flags: 0x0}, + 270: {region: 0x48, script: 0x52, flags: 0x0}, + 271: {region: 0x164, script: 0x52, flags: 0x0}, + 272: {region: 0x164, script: 0x52, flags: 0x0}, + 273: {region: 0x164, script: 0x52, flags: 0x0}, + 274: {region: 0x164, script: 0x5, flags: 0x0}, + 275: {region: 0x48, script: 0x52, flags: 0x0}, + 276: {region: 0x164, script: 0x52, flags: 0x0}, + 277: {region: 0x164, script: 0x52, flags: 0x0}, + 278: {region: 0xd3, script: 0x52, flags: 0x0}, + 279: {region: 0x4e, script: 0x52, flags: 0x0}, + 280: {region: 0x164, script: 0x52, flags: 0x0}, + 281: {region: 0x98, script: 0x5, flags: 0x0}, + 282: {region: 0x164, script: 0x52, flags: 0x0}, + 283: {region: 0x164, script: 0x52, flags: 0x0}, + 284: {region: 0x164, script: 0x52, flags: 0x0}, + 285: {region: 0x164, script: 0x27, flags: 0x0}, + 286: {region: 0x5f, script: 0x52, flags: 0x0}, + 287: {region: 0xc2, script: 0x52, flags: 0x0}, + 288: {region: 0xcf, script: 0x52, flags: 0x0}, + 289: {region: 0x164, script: 0x52, flags: 0x0}, + 290: {region: 0xda, script: 0x20, flags: 0x0}, + 291: {region: 0x51, script: 0x52, flags: 0x0}, + 292: {region: 0x164, script: 0x52, flags: 0x0}, + 293: {region: 0x164, script: 0x52, flags: 0x0}, + 294: {region: 0x164, script: 0x52, flags: 0x0}, + 295: {region: 0xcc, script: 0xd4, flags: 0x0}, + 296: {region: 0x164, script: 0x52, flags: 0x0}, + 297: {region: 0x164, script: 0x52, flags: 0x0}, + 298: {region: 0x113, script: 0x52, flags: 0x0}, + 299: {region: 0x36, script: 0x52, flags: 0x0}, + 300: {region: 0x42, script: 0xd6, flags: 0x0}, + 301: {region: 0x164, script: 0x52, flags: 0x0}, + 302: {region: 0xa3, script: 0x52, flags: 0x0}, + 303: {region: 0x7f, script: 0x52, flags: 0x0}, + 304: {region: 0xd5, script: 0x52, flags: 0x0}, + 305: {region: 0x9d, script: 0x52, flags: 0x0}, + 306: {region: 0x6a, script: 0x25, flags: 0x0}, + 307: {region: 0x164, script: 0x52, flags: 0x0}, + 308: {region: 0xc3, script: 0x43, flags: 0x0}, + 309: {region: 0x86, script: 0x2d, flags: 0x0}, + 310: {region: 0x164, script: 0x52, flags: 0x0}, + 311: {region: 0x164, script: 0x52, flags: 0x0}, + 312: {region: 0xa, script: 0x2, flags: 0x1}, + 313: {region: 0x164, script: 0x52, flags: 0x0}, + 314: {region: 0x164, script: 0x52, flags: 0x0}, + 315: {region: 0x1, script: 0x52, flags: 0x0}, + 316: {region: 0x164, script: 0x52, flags: 0x0}, + 317: {region: 0x6d, script: 0x52, flags: 0x0}, + 318: {region: 0x134, script: 0x52, flags: 0x0}, + 319: {region: 0x69, script: 0x52, flags: 0x0}, + 320: {region: 0x164, script: 0x52, flags: 0x0}, + 321: {region: 0x9d, script: 0x3e, flags: 0x0}, + 322: {region: 0x164, script: 0x52, flags: 0x0}, + 323: {region: 0x164, script: 0x52, flags: 0x0}, + 324: {region: 0x6d, script: 0x52, flags: 0x0}, + 325: {region: 0x51, script: 0x52, flags: 0x0}, + 326: {region: 0x6d, script: 0x52, flags: 0x0}, + 327: {region: 0x9b, script: 0x5, flags: 0x0}, + 328: {region: 0x164, script: 0x52, flags: 0x0}, + 329: {region: 0x164, script: 0x52, flags: 0x0}, + 330: {region: 0x164, script: 0x52, flags: 0x0}, + 331: {region: 0x164, script: 0x52, flags: 0x0}, + 332: {region: 0x85, script: 0x52, flags: 0x0}, + 333: {region: 0xc, script: 0x2, flags: 0x1}, + 334: {region: 0x164, script: 0x52, flags: 0x0}, + 335: {region: 0xc2, script: 0x52, flags: 0x0}, + 336: {region: 0x71, script: 0x52, flags: 0x0}, + 337: {region: 0x10a, script: 0x5, flags: 0x0}, + 338: {region: 0xe6, script: 0x52, flags: 0x0}, + 339: {region: 0x10b, script: 0x52, flags: 0x0}, + 340: {region: 0x72, script: 0x52, flags: 0x0}, + 341: {region: 0x164, script: 0x52, flags: 0x0}, + 342: {region: 0x164, script: 0x52, flags: 0x0}, + 343: {region: 0x75, script: 0x52, flags: 0x0}, + 344: {region: 0x164, script: 0x52, flags: 0x0}, + 345: {region: 0x3a, script: 0x52, flags: 0x0}, + 346: {region: 0x164, script: 0x52, flags: 0x0}, + 347: {region: 0x164, script: 0x52, flags: 0x0}, + 348: {region: 0x164, script: 0x52, flags: 0x0}, + 349: {region: 0x77, script: 0x52, flags: 0x0}, + 350: {region: 0x134, script: 0x52, flags: 0x0}, + 351: {region: 0x77, script: 0x52, flags: 0x0}, + 352: {region: 0x5f, script: 0x52, flags: 0x0}, + 353: {region: 0x5f, script: 0x52, flags: 0x0}, + 354: {region: 0x51, script: 0x5, flags: 0x0}, + 355: {region: 0x13f, script: 0x52, flags: 0x0}, + 356: {region: 0x164, script: 0x52, flags: 0x0}, + 357: {region: 0x83, script: 0x52, flags: 0x0}, + 358: {region: 0x164, script: 0x52, flags: 0x0}, + 359: {region: 0xd3, script: 0x52, flags: 0x0}, + 360: {region: 0x9d, script: 0x52, flags: 0x0}, + 361: {region: 0xd5, script: 0x52, flags: 0x0}, + 362: {region: 0x164, script: 0x52, flags: 0x0}, + 363: {region: 0x10a, script: 0x52, flags: 0x0}, + 364: {region: 0xd8, script: 0x52, flags: 0x0}, + 365: {region: 0x95, script: 0x52, flags: 0x0}, + 366: {region: 0x7f, script: 0x52, flags: 0x0}, + 367: {region: 0x164, script: 0x52, flags: 0x0}, + 368: {region: 0xbb, script: 0x52, flags: 0x0}, + 369: {region: 0x164, script: 0x52, flags: 0x0}, + 370: {region: 0x164, script: 0x52, flags: 0x0}, + 371: {region: 0x164, script: 0x52, flags: 0x0}, + 372: {region: 0x52, script: 0x34, flags: 0x0}, + 373: {region: 0x164, script: 0x52, flags: 0x0}, + 374: {region: 0x94, script: 0x52, flags: 0x0}, + 375: {region: 0x164, script: 0x52, flags: 0x0}, + 376: {region: 0x98, script: 0x20, flags: 0x0}, + 377: {region: 0x164, script: 0x52, flags: 0x0}, + 378: {region: 0x9b, script: 0x5, flags: 0x0}, + 379: {region: 0x7d, script: 0x52, flags: 0x0}, + 380: {region: 0x7a, script: 0x52, flags: 0x0}, + 381: {region: 0x164, script: 0x52, flags: 0x0}, + 382: {region: 0x164, script: 0x52, flags: 0x0}, + 383: {region: 0x164, script: 0x52, flags: 0x0}, + 384: {region: 0x164, script: 0x52, flags: 0x0}, + 385: {region: 0x164, script: 0x52, flags: 0x0}, + 386: {region: 0x164, script: 0x52, flags: 0x0}, + 387: {region: 0x6e, script: 0x27, flags: 0x0}, + 388: {region: 0x164, script: 0x52, flags: 0x0}, + 389: {region: 0xda, script: 0x20, flags: 0x0}, + 390: {region: 0x164, script: 0x52, flags: 0x0}, + 391: {region: 0xa6, script: 0x52, flags: 0x0}, + 392: {region: 0x164, script: 0x52, flags: 0x0}, + 393: {region: 0xe7, script: 0x5, flags: 0x0}, + 394: {region: 0x164, script: 0x52, flags: 0x0}, + 395: {region: 0xe7, script: 0x5, flags: 0x0}, + 396: {region: 0x164, script: 0x52, flags: 0x0}, + 397: {region: 0x164, script: 0x52, flags: 0x0}, + 398: {region: 0x6d, script: 0x52, flags: 0x0}, + 399: {region: 0x9b, script: 0x5, flags: 0x0}, + 400: {region: 0x164, script: 0x52, flags: 0x0}, + 401: {region: 0x164, script: 0x27, flags: 0x0}, + 402: {region: 0xf0, script: 0x52, flags: 0x0}, + 403: {region: 0x164, script: 0x52, flags: 0x0}, + 404: {region: 0x164, script: 0x52, flags: 0x0}, + 405: {region: 0x164, script: 0x52, flags: 0x0}, + 406: {region: 0x164, script: 0x27, flags: 0x0}, + 407: {region: 0x164, script: 0x52, flags: 0x0}, + 408: {region: 0x98, script: 0x20, flags: 0x0}, + 409: {region: 0x98, script: 0xd0, flags: 0x0}, + 410: {region: 0x94, script: 0x52, flags: 0x0}, + 411: {region: 0xd8, script: 0x52, flags: 0x0}, + 412: {region: 0x12f, script: 0x2b, flags: 0x0}, + 413: {region: 0x164, script: 0x52, flags: 0x0}, + 414: {region: 0xe, script: 0x2, flags: 0x1}, + 415: {region: 0x98, script: 0xe, flags: 0x0}, + 416: {region: 0x164, script: 0x52, flags: 0x0}, + 417: {region: 0x4d, script: 0x52, flags: 0x0}, + 418: {region: 0x98, script: 0x2e, flags: 0x0}, + 419: {region: 0x40, script: 0x52, flags: 0x0}, + 420: {region: 0x53, script: 0x52, flags: 0x0}, + 421: {region: 0x164, script: 0x52, flags: 0x0}, + 422: {region: 0x7f, script: 0x52, flags: 0x0}, + 423: {region: 0x164, script: 0x52, flags: 0x0}, + 424: {region: 0x164, script: 0x52, flags: 0x0}, + 425: {region: 0xa3, script: 0x52, flags: 0x0}, + 426: {region: 0x97, script: 0x52, flags: 0x0}, + 427: {region: 0x164, script: 0x52, flags: 0x0}, + 428: {region: 0xda, script: 0x20, flags: 0x0}, + 429: {region: 0x164, script: 0x52, flags: 0x0}, + 430: {region: 0x164, script: 0x5, flags: 0x0}, + 431: {region: 0x48, script: 0x52, flags: 0x0}, + 432: {region: 0x164, script: 0x5, flags: 0x0}, + 433: {region: 0x164, script: 0x52, flags: 0x0}, + 434: {region: 0x10, script: 0x3, flags: 0x1}, + 435: {region: 0x164, script: 0x52, flags: 0x0}, + 436: {region: 0x52, script: 0x34, flags: 0x0}, + 437: {region: 0x164, script: 0x52, flags: 0x0}, + 438: {region: 0x134, script: 0x52, flags: 0x0}, + 439: {region: 0x23, script: 0x5, flags: 0x0}, + 440: {region: 0x164, script: 0x52, flags: 0x0}, + 441: {region: 0x164, script: 0x27, flags: 0x0}, + 442: {region: 0x96, script: 0x37, flags: 0x0}, + 443: {region: 0x164, script: 0x52, flags: 0x0}, + 444: {region: 0x98, script: 0x20, flags: 0x0}, + 445: {region: 0x164, script: 0x52, flags: 0x0}, + 446: {region: 0x72, script: 0x52, flags: 0x0}, + 447: {region: 0x164, script: 0x52, flags: 0x0}, + 448: {region: 0x164, script: 0x52, flags: 0x0}, + 449: {region: 0xe6, script: 0x52, flags: 0x0}, + 450: {region: 0x164, script: 0x52, flags: 0x0}, + 451: {region: 0x12a, script: 0x39, flags: 0x0}, + 452: {region: 0x52, script: 0x81, flags: 0x0}, + 453: {region: 0x164, script: 0x52, flags: 0x0}, + 454: {region: 0xe7, script: 0x5, flags: 0x0}, + 455: {region: 0x98, script: 0x20, flags: 0x0}, + 456: {region: 0xae, script: 0x3a, flags: 0x0}, + 457: {region: 0xe6, script: 0x52, flags: 0x0}, + 458: {region: 0xe7, script: 0x5, flags: 0x0}, + 459: {region: 0xe5, script: 0x52, flags: 0x0}, + 460: {region: 0x98, script: 0x20, flags: 0x0}, + 461: {region: 0x98, script: 0x20, flags: 0x0}, + 462: {region: 0x164, script: 0x52, flags: 0x0}, + 463: {region: 0x8f, script: 0x52, flags: 0x0}, + 464: {region: 0x5f, script: 0x52, flags: 0x0}, + 465: {region: 0x52, script: 0x34, flags: 0x0}, + 466: {region: 0x90, script: 0x52, flags: 0x0}, + 467: {region: 0x91, script: 0x52, flags: 0x0}, + 468: {region: 0x164, script: 0x52, flags: 0x0}, + 469: {region: 0x27, script: 0x8, flags: 0x0}, + 470: {region: 0xd1, script: 0x52, flags: 0x0}, + 471: {region: 0x77, script: 0x52, flags: 0x0}, + 472: {region: 0x164, script: 0x52, flags: 0x0}, + 473: {region: 0x164, script: 0x52, flags: 0x0}, + 474: {region: 0xcf, script: 0x52, flags: 0x0}, + 475: {region: 0xd5, script: 0x52, flags: 0x0}, + 476: {region: 0x164, script: 0x52, flags: 0x0}, + 477: {region: 0x164, script: 0x52, flags: 0x0}, + 478: {region: 0x164, script: 0x52, flags: 0x0}, + 479: {region: 0x94, script: 0x52, flags: 0x0}, + 480: {region: 0x164, script: 0x52, flags: 0x0}, + 481: {region: 0x164, script: 0x52, flags: 0x0}, + 482: {region: 0x164, script: 0x52, flags: 0x0}, + 484: {region: 0x121, script: 0x52, flags: 0x0}, + 485: {region: 0xd5, script: 0x52, flags: 0x0}, + 486: {region: 0x164, script: 0x52, flags: 0x0}, + 487: {region: 0x164, script: 0x52, flags: 0x0}, + 488: {region: 0x52, script: 0xdf, flags: 0x0}, + 489: {region: 0x164, script: 0x52, flags: 0x0}, + 490: {region: 0x134, script: 0x52, flags: 0x0}, + 491: {region: 0x164, script: 0x52, flags: 0x0}, + 492: {region: 0x48, script: 0x52, flags: 0x0}, + 493: {region: 0x164, script: 0x52, flags: 0x0}, + 494: {region: 0x164, script: 0x52, flags: 0x0}, + 495: {region: 0xe6, script: 0x52, flags: 0x0}, + 496: {region: 0x164, script: 0x52, flags: 0x0}, + 497: {region: 0x94, script: 0x52, flags: 0x0}, + 498: {region: 0x105, script: 0x1e, flags: 0x0}, + 500: {region: 0x164, script: 0x52, flags: 0x0}, + 501: {region: 0x164, script: 0x52, flags: 0x0}, + 502: {region: 0x9c, script: 0x52, flags: 0x0}, + 503: {region: 0x9d, script: 0x52, flags: 0x0}, + 504: {region: 0x48, script: 0x17, flags: 0x0}, + 505: {region: 0x96, script: 0x37, flags: 0x0}, + 506: {region: 0x164, script: 0x52, flags: 0x0}, + 507: {region: 0x164, script: 0x52, flags: 0x0}, + 508: {region: 0x105, script: 0x52, flags: 0x0}, + 509: {region: 0x164, script: 0x52, flags: 0x0}, + 510: {region: 0xa1, script: 0x41, flags: 0x0}, + 511: {region: 0x164, script: 0x52, flags: 0x0}, + 512: {region: 0x9f, script: 0x52, flags: 0x0}, + 514: {region: 0x164, script: 0x52, flags: 0x0}, + 515: {region: 0x164, script: 0x52, flags: 0x0}, + 516: {region: 0x164, script: 0x52, flags: 0x0}, + 517: {region: 0x51, script: 0x52, flags: 0x0}, + 518: {region: 0x12f, script: 0x37, flags: 0x0}, + 519: {region: 0x164, script: 0x52, flags: 0x0}, + 520: {region: 0x12e, script: 0x52, flags: 0x0}, + 521: {region: 0xda, script: 0x20, flags: 0x0}, + 522: {region: 0x164, script: 0x52, flags: 0x0}, + 523: {region: 0x62, script: 0x52, flags: 0x0}, + 524: {region: 0x94, script: 0x52, flags: 0x0}, + 525: {region: 0x94, script: 0x52, flags: 0x0}, + 526: {region: 0x7c, script: 0x29, flags: 0x0}, + 527: {region: 0x136, script: 0x1e, flags: 0x0}, + 528: {region: 0x66, script: 0x52, flags: 0x0}, + 529: {region: 0xc3, script: 0x52, flags: 0x0}, + 530: {region: 0x164, script: 0x52, flags: 0x0}, + 531: {region: 0x164, script: 0x52, flags: 0x0}, + 532: {region: 0xd5, script: 0x52, flags: 0x0}, + 533: {region: 0xa3, script: 0x52, flags: 0x0}, + 534: {region: 0xc2, script: 0x52, flags: 0x0}, + 535: {region: 0x105, script: 0x1e, flags: 0x0}, + 536: {region: 0x164, script: 0x52, flags: 0x0}, + 537: {region: 0x164, script: 0x52, flags: 0x0}, + 538: {region: 0x164, script: 0x52, flags: 0x0}, + 539: {region: 0x164, script: 0x52, flags: 0x0}, + 540: {region: 0xd3, script: 0x5, flags: 0x0}, + 541: {region: 0xd5, script: 0x52, flags: 0x0}, + 542: {region: 0x163, script: 0x52, flags: 0x0}, + 543: {region: 0x164, script: 0x52, flags: 0x0}, + 544: {region: 0x164, script: 0x52, flags: 0x0}, + 545: {region: 0x12e, script: 0x52, flags: 0x0}, + 546: {region: 0x121, script: 0x5, flags: 0x0}, + 547: {region: 0x164, script: 0x52, flags: 0x0}, + 548: {region: 0x122, script: 0xd5, flags: 0x0}, + 549: {region: 0x59, script: 0x52, flags: 0x0}, + 550: {region: 0x51, script: 0x52, flags: 0x0}, + 551: {region: 0x164, script: 0x52, flags: 0x0}, + 552: {region: 0x4e, script: 0x52, flags: 0x0}, + 553: {region: 0x98, script: 0x20, flags: 0x0}, + 554: {region: 0x98, script: 0x20, flags: 0x0}, + 555: {region: 0x4a, script: 0x52, flags: 0x0}, + 556: {region: 0x94, script: 0x52, flags: 0x0}, + 557: {region: 0x164, script: 0x52, flags: 0x0}, + 558: {region: 0x40, script: 0x52, flags: 0x0}, + 559: {region: 0x98, script: 0x52, flags: 0x0}, + 560: {region: 0x52, script: 0xcc, flags: 0x0}, + 561: {region: 0x98, script: 0x20, flags: 0x0}, + 562: {region: 0xc2, script: 0x52, flags: 0x0}, + 563: {region: 0x164, script: 0x52, flags: 0x0}, + 564: {region: 0x98, script: 0x6b, flags: 0x0}, + 565: {region: 0xe7, script: 0x5, flags: 0x0}, + 566: {region: 0x164, script: 0x52, flags: 0x0}, + 567: {region: 0xa3, script: 0x52, flags: 0x0}, + 568: {region: 0x164, script: 0x52, flags: 0x0}, + 569: {region: 0x12a, script: 0x52, flags: 0x0}, + 570: {region: 0x164, script: 0x52, flags: 0x0}, + 571: {region: 0xd1, script: 0x52, flags: 0x0}, + 572: {region: 0x164, script: 0x52, flags: 0x0}, + 573: {region: 0xae, script: 0x4f, flags: 0x0}, + 574: {region: 0x164, script: 0x52, flags: 0x0}, + 575: {region: 0x164, script: 0x52, flags: 0x0}, + 576: {region: 0x13, script: 0x6, flags: 0x1}, + 577: {region: 0x164, script: 0x52, flags: 0x0}, + 578: {region: 0x51, script: 0x52, flags: 0x0}, + 579: {region: 0x81, script: 0x52, flags: 0x0}, + 580: {region: 0xa3, script: 0x52, flags: 0x0}, + 581: {region: 0x164, script: 0x52, flags: 0x0}, + 582: {region: 0x164, script: 0x52, flags: 0x0}, + 583: {region: 0x164, script: 0x52, flags: 0x0}, + 584: {region: 0xa5, script: 0x46, flags: 0x0}, + 585: {region: 0x29, script: 0x52, flags: 0x0}, + 586: {region: 0x164, script: 0x52, flags: 0x0}, + 587: {region: 0x164, script: 0x52, flags: 0x0}, + 588: {region: 0x164, script: 0x52, flags: 0x0}, + 589: {region: 0x164, script: 0x52, flags: 0x0}, + 590: {region: 0x164, script: 0x52, flags: 0x0}, + 591: {region: 0x98, script: 0x4a, flags: 0x0}, + 592: {region: 0x113, script: 0x52, flags: 0x0}, + 593: {region: 0x164, script: 0x52, flags: 0x0}, + 594: {region: 0xaa, script: 0x4b, flags: 0x0}, + 595: {region: 0x105, script: 0x1e, flags: 0x0}, + 596: {region: 0x98, script: 0x20, flags: 0x0}, + 597: {region: 0x164, script: 0x52, flags: 0x0}, + 598: {region: 0x74, script: 0x52, flags: 0x0}, + 599: {region: 0x164, script: 0x52, flags: 0x0}, + 600: {region: 0xb3, script: 0x52, flags: 0x0}, + 601: {region: 0x164, script: 0x52, flags: 0x0}, + 602: {region: 0x164, script: 0x52, flags: 0x0}, + 603: {region: 0x164, script: 0x52, flags: 0x0}, + 604: {region: 0x164, script: 0x52, flags: 0x0}, + 605: {region: 0x164, script: 0x52, flags: 0x0}, + 606: {region: 0x164, script: 0x52, flags: 0x0}, + 607: {region: 0x164, script: 0x52, flags: 0x0}, + 608: {region: 0x164, script: 0x27, flags: 0x0}, + 610: {region: 0x105, script: 0x1e, flags: 0x0}, + 611: {region: 0x111, script: 0x52, flags: 0x0}, + 612: {region: 0xe6, script: 0x52, flags: 0x0}, + 613: {region: 0x105, script: 0x52, flags: 0x0}, + 614: {region: 0x164, script: 0x52, flags: 0x0}, + 615: {region: 0x98, script: 0x20, flags: 0x0}, + 616: {region: 0x98, script: 0x5, flags: 0x0}, + 617: {region: 0x12e, script: 0x52, flags: 0x0}, + 618: {region: 0x164, script: 0x52, flags: 0x0}, + 619: {region: 0x51, script: 0x52, flags: 0x0}, + 620: {region: 0x5f, script: 0x52, flags: 0x0}, + 621: {region: 0x164, script: 0x52, flags: 0x0}, + 622: {region: 0x164, script: 0x52, flags: 0x0}, + 623: {region: 0x164, script: 0x27, flags: 0x0}, + 624: {region: 0x164, script: 0x52, flags: 0x0}, + 625: {region: 0x164, script: 0x52, flags: 0x0}, + 626: {region: 0x19, script: 0x3, flags: 0x1}, + 627: {region: 0x164, script: 0x52, flags: 0x0}, + 628: {region: 0x164, script: 0x52, flags: 0x0}, + 629: {region: 0x164, script: 0x52, flags: 0x0}, + 630: {region: 0x164, script: 0x52, flags: 0x0}, + 631: {region: 0x105, script: 0x1e, flags: 0x0}, + 632: {region: 0x164, script: 0x52, flags: 0x0}, + 633: {region: 0x164, script: 0x52, flags: 0x0}, + 634: {region: 0x164, script: 0x52, flags: 0x0}, + 635: {region: 0x105, script: 0x1e, flags: 0x0}, + 636: {region: 0x164, script: 0x52, flags: 0x0}, + 637: {region: 0x94, script: 0x52, flags: 0x0}, + 638: {region: 0xe7, script: 0x5, flags: 0x0}, + 639: {region: 0x7a, script: 0x52, flags: 0x0}, + 640: {region: 0x164, script: 0x52, flags: 0x0}, + 641: {region: 0x164, script: 0x52, flags: 0x0}, + 642: {region: 0x164, script: 0x52, flags: 0x0}, + 643: {region: 0x164, script: 0x27, flags: 0x0}, + 644: {region: 0x122, script: 0xd5, flags: 0x0}, + 645: {region: 0xe7, script: 0x5, flags: 0x0}, + 646: {region: 0x164, script: 0x52, flags: 0x0}, + 647: {region: 0x164, script: 0x52, flags: 0x0}, + 648: {region: 0x1c, script: 0x5, flags: 0x1}, + 649: {region: 0x164, script: 0x52, flags: 0x0}, + 650: {region: 0x164, script: 0x52, flags: 0x0}, + 651: {region: 0x164, script: 0x52, flags: 0x0}, + 652: {region: 0x137, script: 0x52, flags: 0x0}, + 653: {region: 0x86, script: 0x56, flags: 0x0}, + 654: {region: 0x96, script: 0x37, flags: 0x0}, + 655: {region: 0x12e, script: 0x52, flags: 0x0}, + 656: {region: 0xe7, script: 0x5, flags: 0x0}, + 657: {region: 0x130, script: 0x52, flags: 0x0}, + 658: {region: 0x164, script: 0x52, flags: 0x0}, + 659: {region: 0xb6, script: 0x52, flags: 0x0}, + 660: {region: 0x105, script: 0x1e, flags: 0x0}, + 661: {region: 0x164, script: 0x52, flags: 0x0}, + 662: {region: 0x94, script: 0x52, flags: 0x0}, + 663: {region: 0x164, script: 0x52, flags: 0x0}, + 664: {region: 0x52, script: 0xd5, flags: 0x0}, + 665: {region: 0x164, script: 0x52, flags: 0x0}, + 666: {region: 0x164, script: 0x52, flags: 0x0}, + 667: {region: 0x164, script: 0x52, flags: 0x0}, + 668: {region: 0x164, script: 0x52, flags: 0x0}, + 669: {region: 0x98, script: 0x54, flags: 0x0}, + 670: {region: 0x164, script: 0x52, flags: 0x0}, + 671: {region: 0x164, script: 0x52, flags: 0x0}, + 672: {region: 0x105, script: 0x1e, flags: 0x0}, + 673: {region: 0x130, script: 0x52, flags: 0x0}, + 674: {region: 0x164, script: 0x52, flags: 0x0}, + 675: {region: 0xd8, script: 0x52, flags: 0x0}, + 676: {region: 0x164, script: 0x52, flags: 0x0}, + 677: {region: 0x164, script: 0x52, flags: 0x0}, + 678: {region: 0x21, script: 0x2, flags: 0x1}, + 679: {region: 0x164, script: 0x52, flags: 0x0}, + 680: {region: 0x164, script: 0x52, flags: 0x0}, + 681: {region: 0x9d, script: 0x52, flags: 0x0}, + 682: {region: 0x52, script: 0x58, flags: 0x0}, + 683: {region: 0x94, script: 0x52, flags: 0x0}, + 684: {region: 0x9b, script: 0x5, flags: 0x0}, + 685: {region: 0x134, script: 0x52, flags: 0x0}, + 686: {region: 0x164, script: 0x52, flags: 0x0}, + 687: {region: 0x164, script: 0x52, flags: 0x0}, + 688: {region: 0x98, script: 0xd0, flags: 0x0}, + 689: {region: 0x9d, script: 0x52, flags: 0x0}, + 690: {region: 0x164, script: 0x52, flags: 0x0}, + 691: {region: 0x4a, script: 0x52, flags: 0x0}, + 692: {region: 0x164, script: 0x52, flags: 0x0}, + 693: {region: 0x164, script: 0x52, flags: 0x0}, + 694: {region: 0xae, script: 0x4f, flags: 0x0}, + 695: {region: 0x164, script: 0x52, flags: 0x0}, + 696: {region: 0x164, script: 0x52, flags: 0x0}, + 697: {region: 0x4a, script: 0x52, flags: 0x0}, + 698: {region: 0x164, script: 0x52, flags: 0x0}, + 699: {region: 0x164, script: 0x52, flags: 0x0}, + 700: {region: 0x161, script: 0x52, flags: 0x0}, + 701: {region: 0x9b, script: 0x5, flags: 0x0}, + 702: {region: 0xb5, script: 0x52, flags: 0x0}, + 703: {region: 0xb7, script: 0x52, flags: 0x0}, + 704: {region: 0x4a, script: 0x52, flags: 0x0}, + 705: {region: 0x4a, script: 0x52, flags: 0x0}, + 706: {region: 0xa3, script: 0x52, flags: 0x0}, + 707: {region: 0xa3, script: 0x52, flags: 0x0}, + 708: {region: 0x9b, script: 0x5, flags: 0x0}, + 709: {region: 0xb7, script: 0x52, flags: 0x0}, + 710: {region: 0x122, script: 0xd5, flags: 0x0}, + 711: {region: 0x52, script: 0x34, flags: 0x0}, + 712: {region: 0x12a, script: 0x52, flags: 0x0}, + 713: {region: 0x94, script: 0x52, flags: 0x0}, + 714: {region: 0x51, script: 0x52, flags: 0x0}, + 715: {region: 0x98, script: 0x20, flags: 0x0}, + 716: {region: 0x98, script: 0x20, flags: 0x0}, + 717: {region: 0x94, script: 0x52, flags: 0x0}, + 718: {region: 0x23, script: 0x3, flags: 0x1}, + 719: {region: 0xa3, script: 0x52, flags: 0x0}, + 720: {region: 0x164, script: 0x52, flags: 0x0}, + 721: {region: 0xce, script: 0x52, flags: 0x0}, + 722: {region: 0x164, script: 0x52, flags: 0x0}, + 723: {region: 0x164, script: 0x52, flags: 0x0}, + 724: {region: 0x164, script: 0x52, flags: 0x0}, + 725: {region: 0x164, script: 0x52, flags: 0x0}, + 726: {region: 0x164, script: 0x52, flags: 0x0}, + 727: {region: 0x164, script: 0x52, flags: 0x0}, + 728: {region: 0x164, script: 0x52, flags: 0x0}, + 729: {region: 0x164, script: 0x52, flags: 0x0}, + 730: {region: 0x164, script: 0x52, flags: 0x0}, + 731: {region: 0x164, script: 0x52, flags: 0x0}, + 732: {region: 0x164, script: 0x52, flags: 0x0}, + 733: {region: 0x164, script: 0x5, flags: 0x0}, + 734: {region: 0x105, script: 0x1e, flags: 0x0}, + 735: {region: 0xe6, script: 0x52, flags: 0x0}, + 736: {region: 0x164, script: 0x52, flags: 0x0}, + 737: {region: 0x94, script: 0x52, flags: 0x0}, + 738: {region: 0x164, script: 0x27, flags: 0x0}, + 739: {region: 0x164, script: 0x52, flags: 0x0}, + 740: {region: 0x164, script: 0x52, flags: 0x0}, + 741: {region: 0x164, script: 0x52, flags: 0x0}, + 742: {region: 0x111, script: 0x52, flags: 0x0}, + 743: {region: 0xa3, script: 0x52, flags: 0x0}, + 744: {region: 0x164, script: 0x52, flags: 0x0}, + 745: {region: 0x164, script: 0x52, flags: 0x0}, + 746: {region: 0x122, script: 0x5, flags: 0x0}, + 747: {region: 0xcb, script: 0x52, flags: 0x0}, + 748: {region: 0x164, script: 0x52, flags: 0x0}, + 749: {region: 0x164, script: 0x52, flags: 0x0}, + 750: {region: 0x164, script: 0x52, flags: 0x0}, + 751: {region: 0xbe, script: 0x52, flags: 0x0}, + 752: {region: 0xd0, script: 0x52, flags: 0x0}, + 753: {region: 0x164, script: 0x52, flags: 0x0}, + 754: {region: 0x51, script: 0x52, flags: 0x0}, + 755: {region: 0xda, script: 0x20, flags: 0x0}, + 756: {region: 0x12e, script: 0x52, flags: 0x0}, + 757: {region: 0xbf, script: 0x52, flags: 0x0}, + 758: {region: 0x164, script: 0x52, flags: 0x0}, + 759: {region: 0x164, script: 0x52, flags: 0x0}, + 760: {region: 0xdf, script: 0x52, flags: 0x0}, + 761: {region: 0x164, script: 0x52, flags: 0x0}, + 762: {region: 0x94, script: 0x52, flags: 0x0}, + 763: {region: 0x9a, script: 0x36, flags: 0x0}, + 764: {region: 0x164, script: 0x52, flags: 0x0}, + 765: {region: 0xc1, script: 0x1e, flags: 0x0}, + 766: {region: 0x164, script: 0x5, flags: 0x0}, + 767: {region: 0x164, script: 0x52, flags: 0x0}, + 768: {region: 0x164, script: 0x52, flags: 0x0}, + 769: {region: 0x164, script: 0x52, flags: 0x0}, + 770: {region: 0x98, script: 0x64, flags: 0x0}, + 771: {region: 0x164, script: 0x52, flags: 0x0}, + 772: {region: 0x164, script: 0x52, flags: 0x0}, + 773: {region: 0x10a, script: 0x52, flags: 0x0}, + 774: {region: 0x164, script: 0x52, flags: 0x0}, + 775: {region: 0x164, script: 0x52, flags: 0x0}, + 776: {region: 0x164, script: 0x52, flags: 0x0}, + 777: {region: 0x26, script: 0x3, flags: 0x1}, + 778: {region: 0x164, script: 0x52, flags: 0x0}, + 779: {region: 0x164, script: 0x52, flags: 0x0}, + 780: {region: 0x98, script: 0xe, flags: 0x0}, + 781: {region: 0xc3, script: 0x6b, flags: 0x0}, + 783: {region: 0x164, script: 0x52, flags: 0x0}, + 784: {region: 0x48, script: 0x52, flags: 0x0}, + 785: {region: 0x48, script: 0x52, flags: 0x0}, + 786: {region: 0x36, script: 0x52, flags: 0x0}, + 787: {region: 0x164, script: 0x52, flags: 0x0}, + 788: {region: 0x164, script: 0x52, flags: 0x0}, + 789: {region: 0x164, script: 0x52, flags: 0x0}, + 790: {region: 0x164, script: 0x52, flags: 0x0}, + 791: {region: 0x164, script: 0x52, flags: 0x0}, + 792: {region: 0x164, script: 0x52, flags: 0x0}, + 793: {region: 0x98, script: 0x20, flags: 0x0}, + 794: {region: 0xda, script: 0x20, flags: 0x0}, + 795: {region: 0x105, script: 0x1e, flags: 0x0}, + 796: {region: 0x34, script: 0x68, flags: 0x0}, + 797: {region: 0x29, script: 0x3, flags: 0x1}, + 798: {region: 0xca, script: 0x52, flags: 0x0}, + 799: {region: 0x164, script: 0x52, flags: 0x0}, + 800: {region: 0x164, script: 0x52, flags: 0x0}, + 801: {region: 0x164, script: 0x52, flags: 0x0}, + 802: {region: 0x98, script: 0x20, flags: 0x0}, + 803: {region: 0x51, script: 0x52, flags: 0x0}, + 805: {region: 0x164, script: 0x52, flags: 0x0}, + 806: {region: 0x134, script: 0x52, flags: 0x0}, + 807: {region: 0x164, script: 0x52, flags: 0x0}, + 808: {region: 0x164, script: 0x52, flags: 0x0}, + 809: {region: 0xe7, script: 0x5, flags: 0x0}, + 810: {region: 0xc2, script: 0x52, flags: 0x0}, + 811: {region: 0x98, script: 0x20, flags: 0x0}, + 812: {region: 0x94, script: 0x52, flags: 0x0}, + 813: {region: 0x163, script: 0x52, flags: 0x0}, + 814: {region: 0x164, script: 0x52, flags: 0x0}, + 815: {region: 0xc3, script: 0x6b, flags: 0x0}, + 816: {region: 0x164, script: 0x52, flags: 0x0}, + 817: {region: 0x164, script: 0x27, flags: 0x0}, + 818: {region: 0x105, script: 0x1e, flags: 0x0}, + 819: {region: 0x164, script: 0x52, flags: 0x0}, + 820: {region: 0x130, script: 0x52, flags: 0x0}, + 821: {region: 0x9b, script: 0x5d, flags: 0x0}, + 822: {region: 0x164, script: 0x52, flags: 0x0}, + 823: {region: 0x164, script: 0x52, flags: 0x0}, + 824: {region: 0x9b, script: 0x5, flags: 0x0}, + 825: {region: 0x164, script: 0x52, flags: 0x0}, + 826: {region: 0x164, script: 0x52, flags: 0x0}, + 827: {region: 0x164, script: 0x52, flags: 0x0}, + 828: {region: 0xdc, script: 0x52, flags: 0x0}, + 829: {region: 0x164, script: 0x52, flags: 0x0}, + 830: {region: 0x164, script: 0x52, flags: 0x0}, + 832: {region: 0x164, script: 0x52, flags: 0x0}, + 833: {region: 0x52, script: 0x34, flags: 0x0}, + 834: {region: 0x9d, script: 0x52, flags: 0x0}, + 835: {region: 0xd1, script: 0x52, flags: 0x0}, + 836: {region: 0x164, script: 0x52, flags: 0x0}, + 837: {region: 0xd9, script: 0x52, flags: 0x0}, + 838: {region: 0x164, script: 0x52, flags: 0x0}, + 839: {region: 0x164, script: 0x52, flags: 0x0}, + 840: {region: 0x164, script: 0x52, flags: 0x0}, + 841: {region: 0xce, script: 0x52, flags: 0x0}, + 842: {region: 0x164, script: 0x52, flags: 0x0}, + 843: {region: 0x164, script: 0x52, flags: 0x0}, + 844: {region: 0x163, script: 0x52, flags: 0x0}, + 845: {region: 0xd0, script: 0x52, flags: 0x0}, + 846: {region: 0x5f, script: 0x52, flags: 0x0}, + 847: {region: 0xda, script: 0x20, flags: 0x0}, + 848: {region: 0x164, script: 0x52, flags: 0x0}, + 849: {region: 0xda, script: 0x20, flags: 0x0}, + 850: {region: 0x164, script: 0x52, flags: 0x0}, + 851: {region: 0x164, script: 0x52, flags: 0x0}, + 852: {region: 0xd1, script: 0x52, flags: 0x0}, + 853: {region: 0x164, script: 0x52, flags: 0x0}, + 854: {region: 0x164, script: 0x52, flags: 0x0}, + 855: {region: 0xd0, script: 0x52, flags: 0x0}, + 856: {region: 0x164, script: 0x52, flags: 0x0}, + 857: {region: 0xce, script: 0x52, flags: 0x0}, + 858: {region: 0xce, script: 0x52, flags: 0x0}, + 859: {region: 0x164, script: 0x52, flags: 0x0}, + 860: {region: 0x164, script: 0x52, flags: 0x0}, + 861: {region: 0x94, script: 0x52, flags: 0x0}, + 862: {region: 0x164, script: 0x52, flags: 0x0}, + 863: {region: 0xde, script: 0x52, flags: 0x0}, + 864: {region: 0x164, script: 0x52, flags: 0x0}, + 865: {region: 0x164, script: 0x52, flags: 0x0}, + 866: {region: 0x98, script: 0x52, flags: 0x0}, + 867: {region: 0x164, script: 0x52, flags: 0x0}, + 868: {region: 0x164, script: 0x52, flags: 0x0}, + 869: {region: 0xd8, script: 0x52, flags: 0x0}, + 870: {region: 0x51, script: 0x52, flags: 0x0}, + 871: {region: 0x164, script: 0x52, flags: 0x0}, + 872: {region: 0xd9, script: 0x52, flags: 0x0}, + 873: {region: 0x164, script: 0x52, flags: 0x0}, + 874: {region: 0x51, script: 0x52, flags: 0x0}, + 875: {region: 0x164, script: 0x52, flags: 0x0}, + 876: {region: 0x164, script: 0x52, flags: 0x0}, + 877: {region: 0xd9, script: 0x52, flags: 0x0}, + 878: {region: 0x122, script: 0x4e, flags: 0x0}, + 879: {region: 0x98, script: 0x20, flags: 0x0}, + 880: {region: 0x10b, script: 0xb7, flags: 0x0}, + 881: {region: 0x164, script: 0x52, flags: 0x0}, + 882: {region: 0x164, script: 0x52, flags: 0x0}, + 883: {region: 0x83, script: 0x70, flags: 0x0}, + 884: {region: 0x160, script: 0x52, flags: 0x0}, + 885: {region: 0x164, script: 0x52, flags: 0x0}, + 886: {region: 0x48, script: 0x17, flags: 0x0}, + 887: {region: 0x164, script: 0x52, flags: 0x0}, + 888: {region: 0x160, script: 0x52, flags: 0x0}, + 889: {region: 0x164, script: 0x52, flags: 0x0}, + 890: {region: 0x164, script: 0x52, flags: 0x0}, + 891: {region: 0x164, script: 0x52, flags: 0x0}, + 892: {region: 0x164, script: 0x52, flags: 0x0}, + 893: {region: 0x164, script: 0x52, flags: 0x0}, + 894: {region: 0x116, script: 0x52, flags: 0x0}, + 895: {region: 0x164, script: 0x52, flags: 0x0}, + 896: {region: 0x164, script: 0x52, flags: 0x0}, + 897: {region: 0x134, script: 0x52, flags: 0x0}, + 898: {region: 0x164, script: 0x52, flags: 0x0}, + 899: {region: 0x52, script: 0x52, flags: 0x0}, + 900: {region: 0x164, script: 0x52, flags: 0x0}, + 901: {region: 0xcd, script: 0x52, flags: 0x0}, + 902: {region: 0x12e, script: 0x52, flags: 0x0}, + 903: {region: 0x130, script: 0x52, flags: 0x0}, + 904: {region: 0x7f, script: 0x52, flags: 0x0}, + 905: {region: 0x77, script: 0x52, flags: 0x0}, + 906: {region: 0x164, script: 0x52, flags: 0x0}, + 908: {region: 0x164, script: 0x52, flags: 0x0}, + 909: {region: 0x164, script: 0x52, flags: 0x0}, + 910: {region: 0x6e, script: 0x52, flags: 0x0}, + 911: {region: 0x164, script: 0x52, flags: 0x0}, + 912: {region: 0x164, script: 0x52, flags: 0x0}, + 913: {region: 0x164, script: 0x52, flags: 0x0}, + 914: {region: 0x164, script: 0x52, flags: 0x0}, + 915: {region: 0x98, script: 0x75, flags: 0x0}, + 916: {region: 0x164, script: 0x52, flags: 0x0}, + 917: {region: 0x164, script: 0x5, flags: 0x0}, + 918: {region: 0x7c, script: 0x1e, flags: 0x0}, + 919: {region: 0x134, script: 0x76, flags: 0x0}, + 920: {region: 0x164, script: 0x5, flags: 0x0}, + 921: {region: 0xc4, script: 0x74, flags: 0x0}, + 922: {region: 0x164, script: 0x52, flags: 0x0}, + 923: {region: 0x2c, script: 0x3, flags: 0x1}, + 924: {region: 0xe6, script: 0x52, flags: 0x0}, + 925: {region: 0x2f, script: 0x2, flags: 0x1}, + 926: {region: 0xe6, script: 0x52, flags: 0x0}, + 927: {region: 0x2f, script: 0x52, flags: 0x0}, + 928: {region: 0xef, script: 0x52, flags: 0x0}, + 929: {region: 0x164, script: 0x52, flags: 0x0}, + 930: {region: 0x77, script: 0x52, flags: 0x0}, + 931: {region: 0xd5, script: 0x52, flags: 0x0}, + 932: {region: 0x134, script: 0x52, flags: 0x0}, + 933: {region: 0x48, script: 0x52, flags: 0x0}, + 934: {region: 0x164, script: 0x52, flags: 0x0}, + 935: {region: 0x9b, script: 0xdd, flags: 0x0}, + 936: {region: 0x164, script: 0x52, flags: 0x0}, + 937: {region: 0x5f, script: 0x52, flags: 0x0}, + 938: {region: 0x164, script: 0x5, flags: 0x0}, + 939: {region: 0xaf, script: 0x7f, flags: 0x0}, + 941: {region: 0x164, script: 0x52, flags: 0x0}, + 942: {region: 0x164, script: 0x52, flags: 0x0}, + 943: {region: 0x98, script: 0x12, flags: 0x0}, + 944: {region: 0xa3, script: 0x52, flags: 0x0}, + 945: {region: 0xe8, script: 0x52, flags: 0x0}, + 946: {region: 0x164, script: 0x52, flags: 0x0}, + 947: {region: 0x9d, script: 0x52, flags: 0x0}, + 948: {region: 0x164, script: 0x52, flags: 0x0}, + 949: {region: 0x164, script: 0x52, flags: 0x0}, + 950: {region: 0x86, script: 0x2d, flags: 0x0}, + 951: {region: 0x74, script: 0x52, flags: 0x0}, + 952: {region: 0x164, script: 0x52, flags: 0x0}, + 953: {region: 0xe7, script: 0x45, flags: 0x0}, + 954: {region: 0x9b, script: 0x5, flags: 0x0}, + 955: {region: 0x1, script: 0x52, flags: 0x0}, + 956: {region: 0x23, script: 0x5, flags: 0x0}, + 957: {region: 0x164, script: 0x52, flags: 0x0}, + 958: {region: 0x40, script: 0x52, flags: 0x0}, + 959: {region: 0x164, script: 0x52, flags: 0x0}, + 960: {region: 0x79, script: 0x52, flags: 0x0}, + 961: {region: 0x164, script: 0x52, flags: 0x0}, + 962: {region: 0xe3, script: 0x52, flags: 0x0}, + 963: {region: 0x88, script: 0x52, flags: 0x0}, + 964: {region: 0x68, script: 0x52, flags: 0x0}, + 965: {region: 0x164, script: 0x52, flags: 0x0}, + 966: {region: 0x98, script: 0x20, flags: 0x0}, + 967: {region: 0x164, script: 0x52, flags: 0x0}, + 968: {region: 0x101, script: 0x52, flags: 0x0}, + 969: {region: 0x94, script: 0x52, flags: 0x0}, + 970: {region: 0x164, script: 0x52, flags: 0x0}, + 971: {region: 0x164, script: 0x52, flags: 0x0}, + 972: {region: 0x9d, script: 0x52, flags: 0x0}, + 973: {region: 0x164, script: 0x5, flags: 0x0}, + 974: {region: 0x98, script: 0x52, flags: 0x0}, + 975: {region: 0x31, script: 0x2, flags: 0x1}, + 976: {region: 0xda, script: 0x20, flags: 0x0}, + 977: {region: 0x34, script: 0xe, flags: 0x0}, + 978: {region: 0x4d, script: 0x52, flags: 0x0}, + 979: {region: 0x71, script: 0x52, flags: 0x0}, + 980: {region: 0x4d, script: 0x52, flags: 0x0}, + 981: {region: 0x9b, script: 0x5, flags: 0x0}, + 982: {region: 0x10b, script: 0x52, flags: 0x0}, + 983: {region: 0x39, script: 0x52, flags: 0x0}, + 984: {region: 0x164, script: 0x52, flags: 0x0}, + 985: {region: 0xd0, script: 0x52, flags: 0x0}, + 986: {region: 0x103, script: 0x52, flags: 0x0}, + 987: {region: 0x94, script: 0x52, flags: 0x0}, + 988: {region: 0x12e, script: 0x52, flags: 0x0}, + 989: {region: 0x164, script: 0x52, flags: 0x0}, + 990: {region: 0x164, script: 0x52, flags: 0x0}, + 991: {region: 0x72, script: 0x52, flags: 0x0}, + 992: {region: 0x105, script: 0x1e, flags: 0x0}, + 993: {region: 0x12f, script: 0x1e, flags: 0x0}, + 994: {region: 0x108, script: 0x52, flags: 0x0}, + 995: {region: 0x106, script: 0x52, flags: 0x0}, + 996: {region: 0x12e, script: 0x52, flags: 0x0}, + 997: {region: 0x164, script: 0x52, flags: 0x0}, + 998: {region: 0xa1, script: 0x44, flags: 0x0}, + 999: {region: 0x98, script: 0x20, flags: 0x0}, + 1000: {region: 0x7f, script: 0x52, flags: 0x0}, + 1001: {region: 0x105, script: 0x1e, flags: 0x0}, + 1002: {region: 0xa3, script: 0x52, flags: 0x0}, + 1003: {region: 0x94, script: 0x52, flags: 0x0}, + 1004: {region: 0x98, script: 0x52, flags: 0x0}, + 1005: {region: 0x113, script: 0x52, flags: 0x0}, + 1006: {region: 0x98, script: 0xbb, flags: 0x0}, + 1007: {region: 0x164, script: 0x52, flags: 0x0}, + 1008: {region: 0x164, script: 0x52, flags: 0x0}, + 1009: {region: 0x12e, script: 0x52, flags: 0x0}, + 1010: {region: 0x9d, script: 0x52, flags: 0x0}, + 1011: {region: 0x98, script: 0x20, flags: 0x0}, + 1012: {region: 0x164, script: 0x5, flags: 0x0}, + 1013: {region: 0x9d, script: 0x52, flags: 0x0}, + 1014: {region: 0x7a, script: 0x52, flags: 0x0}, + 1015: {region: 0x48, script: 0x52, flags: 0x0}, + 1016: {region: 0x33, script: 0x4, flags: 0x1}, + 1017: {region: 0x9d, script: 0x52, flags: 0x0}, + 1018: {region: 0x9b, script: 0x5, flags: 0x0}, + 1019: {region: 0xd9, script: 0x52, flags: 0x0}, + 1020: {region: 0x4e, script: 0x52, flags: 0x0}, + 1021: {region: 0xd0, script: 0x52, flags: 0x0}, + 1022: {region: 0xce, script: 0x52, flags: 0x0}, + 1023: {region: 0xc2, script: 0x52, flags: 0x0}, + 1024: {region: 0x4b, script: 0x52, flags: 0x0}, + 1025: {region: 0x95, script: 0x72, flags: 0x0}, + 1026: {region: 0xb5, script: 0x52, flags: 0x0}, + 1027: {region: 0x164, script: 0x27, flags: 0x0}, + 1028: {region: 0x164, script: 0x52, flags: 0x0}, + 1030: {region: 0xb9, script: 0xd2, flags: 0x0}, + 1031: {region: 0x164, script: 0x52, flags: 0x0}, + 1032: {region: 0xc3, script: 0x6b, flags: 0x0}, + 1033: {region: 0x164, script: 0x5, flags: 0x0}, + 1034: {region: 0xb2, script: 0xc1, flags: 0x0}, + 1035: {region: 0x6e, script: 0x52, flags: 0x0}, + 1036: {region: 0x164, script: 0x52, flags: 0x0}, + 1037: {region: 0x164, script: 0x52, flags: 0x0}, + 1038: {region: 0x164, script: 0x52, flags: 0x0}, + 1039: {region: 0x164, script: 0x52, flags: 0x0}, + 1040: {region: 0x110, script: 0x52, flags: 0x0}, + 1041: {region: 0x164, script: 0x52, flags: 0x0}, + 1042: {region: 0xe7, script: 0x5, flags: 0x0}, + 1043: {region: 0x164, script: 0x52, flags: 0x0}, + 1044: {region: 0x10e, script: 0x52, flags: 0x0}, + 1045: {region: 0x164, script: 0x52, flags: 0x0}, + 1046: {region: 0xe8, script: 0x52, flags: 0x0}, + 1047: {region: 0x164, script: 0x52, flags: 0x0}, + 1048: {region: 0x94, script: 0x52, flags: 0x0}, + 1049: {region: 0x141, script: 0x52, flags: 0x0}, + 1050: {region: 0x10b, script: 0x52, flags: 0x0}, + 1052: {region: 0x10b, script: 0x52, flags: 0x0}, + 1053: {region: 0x71, script: 0x52, flags: 0x0}, + 1054: {region: 0x96, script: 0xb8, flags: 0x0}, + 1055: {region: 0x164, script: 0x52, flags: 0x0}, + 1056: {region: 0x71, script: 0x52, flags: 0x0}, + 1057: {region: 0x163, script: 0x52, flags: 0x0}, + 1058: {region: 0x164, script: 0x52, flags: 0x0}, + 1059: {region: 0xc2, script: 0x52, flags: 0x0}, + 1060: {region: 0x164, script: 0x52, flags: 0x0}, + 1061: {region: 0x164, script: 0x52, flags: 0x0}, + 1062: {region: 0x164, script: 0x52, flags: 0x0}, + 1063: {region: 0x114, script: 0x52, flags: 0x0}, + 1064: {region: 0x164, script: 0x52, flags: 0x0}, + 1065: {region: 0x164, script: 0x52, flags: 0x0}, + 1066: {region: 0x122, script: 0xd5, flags: 0x0}, + 1067: {region: 0x164, script: 0x52, flags: 0x0}, + 1068: {region: 0x164, script: 0x52, flags: 0x0}, + 1069: {region: 0x164, script: 0x52, flags: 0x0}, + 1070: {region: 0x164, script: 0x52, flags: 0x0}, + 1071: {region: 0x26, script: 0x52, flags: 0x0}, + 1072: {region: 0x37, script: 0x5, flags: 0x1}, + 1073: {region: 0x98, script: 0xc2, flags: 0x0}, + 1074: {region: 0x115, script: 0x52, flags: 0x0}, + 1075: {region: 0x113, script: 0x52, flags: 0x0}, + 1076: {region: 0x98, script: 0x20, flags: 0x0}, + 1077: {region: 0x160, script: 0x52, flags: 0x0}, + 1078: {region: 0x164, script: 0x52, flags: 0x0}, + 1079: {region: 0x164, script: 0x52, flags: 0x0}, + 1080: {region: 0x6c, script: 0x52, flags: 0x0}, + 1081: {region: 0x160, script: 0x52, flags: 0x0}, + 1082: {region: 0x164, script: 0x52, flags: 0x0}, + 1083: {region: 0x5f, script: 0x52, flags: 0x0}, + 1084: {region: 0x94, script: 0x52, flags: 0x0}, + 1085: {region: 0x164, script: 0x52, flags: 0x0}, + 1086: {region: 0x164, script: 0x52, flags: 0x0}, + 1087: {region: 0x12e, script: 0x52, flags: 0x0}, + 1088: {region: 0x164, script: 0x52, flags: 0x0}, + 1089: {region: 0x83, script: 0x52, flags: 0x0}, + 1090: {region: 0x10b, script: 0x52, flags: 0x0}, + 1091: {region: 0x12e, script: 0x52, flags: 0x0}, + 1092: {region: 0x15e, script: 0x5, flags: 0x0}, + 1093: {region: 0x4a, script: 0x52, flags: 0x0}, + 1094: {region: 0x5f, script: 0x52, flags: 0x0}, + 1095: {region: 0x164, script: 0x52, flags: 0x0}, + 1096: {region: 0x98, script: 0x20, flags: 0x0}, + 1097: {region: 0x94, script: 0x52, flags: 0x0}, + 1098: {region: 0x164, script: 0x52, flags: 0x0}, + 1099: {region: 0x34, script: 0xe, flags: 0x0}, + 1100: {region: 0x9a, script: 0xc5, flags: 0x0}, + 1101: {region: 0xe8, script: 0x52, flags: 0x0}, + 1102: {region: 0x98, script: 0xcd, flags: 0x0}, + 1103: {region: 0xda, script: 0x20, flags: 0x0}, + 1104: {region: 0x164, script: 0x52, flags: 0x0}, + 1105: {region: 0x164, script: 0x52, flags: 0x0}, + 1106: {region: 0x164, script: 0x52, flags: 0x0}, + 1107: {region: 0x164, script: 0x52, flags: 0x0}, + 1108: {region: 0x164, script: 0x52, flags: 0x0}, + 1109: {region: 0x164, script: 0x52, flags: 0x0}, + 1110: {region: 0x164, script: 0x52, flags: 0x0}, + 1111: {region: 0x164, script: 0x52, flags: 0x0}, + 1112: {region: 0xe6, script: 0x52, flags: 0x0}, + 1113: {region: 0x164, script: 0x52, flags: 0x0}, + 1114: {region: 0x164, script: 0x52, flags: 0x0}, + 1115: {region: 0x98, script: 0x4a, flags: 0x0}, + 1116: {region: 0x52, script: 0xcb, flags: 0x0}, + 1117: {region: 0xda, script: 0x20, flags: 0x0}, + 1118: {region: 0xda, script: 0x20, flags: 0x0}, + 1119: {region: 0x98, script: 0xd0, flags: 0x0}, + 1120: {region: 0x164, script: 0x52, flags: 0x0}, + 1121: {region: 0x111, script: 0x52, flags: 0x0}, + 1122: {region: 0x130, script: 0x52, flags: 0x0}, + 1123: {region: 0x125, script: 0x52, flags: 0x0}, + 1124: {region: 0x164, script: 0x52, flags: 0x0}, + 1125: {region: 0x3c, script: 0x3, flags: 0x1}, + 1126: {region: 0x164, script: 0x52, flags: 0x0}, + 1127: {region: 0x164, script: 0x52, flags: 0x0}, + 1128: {region: 0x164, script: 0x52, flags: 0x0}, + 1129: {region: 0x122, script: 0xd5, flags: 0x0}, + 1130: {region: 0xda, script: 0x20, flags: 0x0}, + 1131: {region: 0xda, script: 0x20, flags: 0x0}, + 1132: {region: 0xda, script: 0x20, flags: 0x0}, + 1133: {region: 0x6e, script: 0x27, flags: 0x0}, + 1134: {region: 0x164, script: 0x52, flags: 0x0}, + 1135: {region: 0x6c, script: 0x27, flags: 0x0}, + 1136: {region: 0x164, script: 0x52, flags: 0x0}, + 1137: {region: 0x164, script: 0x52, flags: 0x0}, + 1138: {region: 0x164, script: 0x52, flags: 0x0}, + 1139: {region: 0xd5, script: 0x52, flags: 0x0}, + 1140: {region: 0x126, script: 0x52, flags: 0x0}, + 1141: {region: 0x124, script: 0x52, flags: 0x0}, + 1142: {region: 0x31, script: 0x52, flags: 0x0}, + 1143: {region: 0xda, script: 0x20, flags: 0x0}, + 1144: {region: 0xe6, script: 0x52, flags: 0x0}, + 1145: {region: 0x164, script: 0x52, flags: 0x0}, + 1146: {region: 0x164, script: 0x52, flags: 0x0}, + 1147: {region: 0x31, script: 0x52, flags: 0x0}, + 1148: {region: 0xd3, script: 0x52, flags: 0x0}, + 1149: {region: 0x164, script: 0x52, flags: 0x0}, + 1150: {region: 0x160, script: 0x52, flags: 0x0}, + 1151: {region: 0x164, script: 0x52, flags: 0x0}, + 1152: {region: 0x128, script: 0x52, flags: 0x0}, + 1153: {region: 0x164, script: 0x52, flags: 0x0}, + 1154: {region: 0xcd, script: 0x52, flags: 0x0}, + 1155: {region: 0x164, script: 0x52, flags: 0x0}, + 1156: {region: 0xe5, script: 0x52, flags: 0x0}, + 1157: {region: 0x164, script: 0x52, flags: 0x0}, + 1158: {region: 0x164, script: 0x52, flags: 0x0}, + 1159: {region: 0x164, script: 0x52, flags: 0x0}, + 1160: {region: 0x12a, script: 0x52, flags: 0x0}, + 1161: {region: 0x12a, script: 0x52, flags: 0x0}, + 1162: {region: 0x12d, script: 0x52, flags: 0x0}, + 1163: {region: 0x164, script: 0x5, flags: 0x0}, + 1164: {region: 0x160, script: 0x52, flags: 0x0}, + 1165: {region: 0x86, script: 0x2d, flags: 0x0}, + 1166: {region: 0xda, script: 0x20, flags: 0x0}, + 1167: {region: 0xe6, script: 0x52, flags: 0x0}, + 1168: {region: 0x42, script: 0xd6, flags: 0x0}, + 1169: {region: 0x164, script: 0x52, flags: 0x0}, + 1170: {region: 0x105, script: 0x1e, flags: 0x0}, + 1171: {region: 0x164, script: 0x52, flags: 0x0}, + 1172: {region: 0x164, script: 0x52, flags: 0x0}, + 1173: {region: 0x130, script: 0x52, flags: 0x0}, + 1174: {region: 0x164, script: 0x52, flags: 0x0}, + 1175: {region: 0x122, script: 0xd5, flags: 0x0}, + 1176: {region: 0x31, script: 0x52, flags: 0x0}, + 1177: {region: 0x164, script: 0x52, flags: 0x0}, + 1178: {region: 0x164, script: 0x52, flags: 0x0}, + 1179: {region: 0xcd, script: 0x52, flags: 0x0}, + 1180: {region: 0x164, script: 0x52, flags: 0x0}, + 1181: {region: 0x164, script: 0x52, flags: 0x0}, + 1182: {region: 0x12c, script: 0x52, flags: 0x0}, + 1183: {region: 0x164, script: 0x52, flags: 0x0}, + 1185: {region: 0x164, script: 0x52, flags: 0x0}, + 1186: {region: 0xd3, script: 0x52, flags: 0x0}, + 1187: {region: 0x52, script: 0xce, flags: 0x0}, + 1188: {region: 0xe4, script: 0x52, flags: 0x0}, + 1189: {region: 0x164, script: 0x52, flags: 0x0}, + 1190: {region: 0x105, script: 0x1e, flags: 0x0}, + 1191: {region: 0xb9, script: 0x52, flags: 0x0}, + 1192: {region: 0x164, script: 0x52, flags: 0x0}, + 1193: {region: 0x105, script: 0x1e, flags: 0x0}, + 1194: {region: 0x3f, script: 0x4, flags: 0x1}, + 1195: {region: 0x11b, script: 0xd8, flags: 0x0}, + 1196: {region: 0x12f, script: 0x1e, flags: 0x0}, + 1197: {region: 0x74, script: 0x52, flags: 0x0}, + 1198: {region: 0x29, script: 0x52, flags: 0x0}, + 1200: {region: 0x43, script: 0x3, flags: 0x1}, + 1201: {region: 0x98, script: 0xe, flags: 0x0}, + 1202: {region: 0xe7, script: 0x5, flags: 0x0}, + 1203: {region: 0x164, script: 0x52, flags: 0x0}, + 1204: {region: 0x164, script: 0x52, flags: 0x0}, + 1205: {region: 0x164, script: 0x52, flags: 0x0}, + 1206: {region: 0x164, script: 0x52, flags: 0x0}, + 1207: {region: 0x164, script: 0x52, flags: 0x0}, + 1208: {region: 0x164, script: 0x52, flags: 0x0}, + 1209: {region: 0x164, script: 0x52, flags: 0x0}, + 1210: {region: 0x46, script: 0x4, flags: 0x1}, + 1211: {region: 0x164, script: 0x52, flags: 0x0}, + 1212: {region: 0xb3, script: 0xd9, flags: 0x0}, + 1213: {region: 0x164, script: 0x52, flags: 0x0}, + 1214: {region: 0x160, script: 0x52, flags: 0x0}, + 1215: {region: 0x9d, script: 0x52, flags: 0x0}, + 1216: {region: 0x105, script: 0x52, flags: 0x0}, + 1217: {region: 0x13d, script: 0x52, flags: 0x0}, + 1218: {region: 0x11a, script: 0x52, flags: 0x0}, + 1219: {region: 0x164, script: 0x52, flags: 0x0}, + 1220: {region: 0x35, script: 0x52, flags: 0x0}, + 1221: {region: 0x5f, script: 0x52, flags: 0x0}, + 1222: {region: 0xd0, script: 0x52, flags: 0x0}, + 1223: {region: 0x1, script: 0x52, flags: 0x0}, + 1224: {region: 0x105, script: 0x52, flags: 0x0}, + 1225: {region: 0x69, script: 0x52, flags: 0x0}, + 1226: {region: 0x12e, script: 0x52, flags: 0x0}, + 1227: {region: 0x164, script: 0x52, flags: 0x0}, + 1228: {region: 0x35, script: 0x52, flags: 0x0}, + 1229: {region: 0x4d, script: 0x52, flags: 0x0}, + 1230: {region: 0x164, script: 0x52, flags: 0x0}, + 1231: {region: 0x6e, script: 0x27, flags: 0x0}, + 1232: {region: 0x164, script: 0x52, flags: 0x0}, + 1233: {region: 0xe6, script: 0x52, flags: 0x0}, + 1234: {region: 0x2e, script: 0x52, flags: 0x0}, + 1235: {region: 0x98, script: 0xd0, flags: 0x0}, + 1236: {region: 0x98, script: 0x20, flags: 0x0}, + 1237: {region: 0x164, script: 0x52, flags: 0x0}, + 1238: {region: 0x164, script: 0x52, flags: 0x0}, + 1239: {region: 0x164, script: 0x52, flags: 0x0}, + 1240: {region: 0x164, script: 0x52, flags: 0x0}, + 1241: {region: 0x164, script: 0x52, flags: 0x0}, + 1242: {region: 0x164, script: 0x52, flags: 0x0}, + 1243: {region: 0x164, script: 0x52, flags: 0x0}, + 1244: {region: 0x164, script: 0x52, flags: 0x0}, + 1245: {region: 0x164, script: 0x52, flags: 0x0}, + 1246: {region: 0x13f, script: 0x52, flags: 0x0}, + 1247: {region: 0x164, script: 0x52, flags: 0x0}, + 1248: {region: 0x164, script: 0x52, flags: 0x0}, + 1249: {region: 0xa7, script: 0x5, flags: 0x0}, + 1250: {region: 0x164, script: 0x52, flags: 0x0}, + 1251: {region: 0x113, script: 0x52, flags: 0x0}, + 1252: {region: 0x164, script: 0x52, flags: 0x0}, + 1253: {region: 0x164, script: 0x52, flags: 0x0}, + 1254: {region: 0x164, script: 0x52, flags: 0x0}, + 1255: {region: 0x164, script: 0x52, flags: 0x0}, + 1256: {region: 0x98, script: 0x20, flags: 0x0}, + 1257: {region: 0x52, script: 0x34, flags: 0x0}, + 1258: {region: 0x164, script: 0x52, flags: 0x0}, + 1259: {region: 0x164, script: 0x52, flags: 0x0}, + 1260: {region: 0x40, script: 0x52, flags: 0x0}, + 1261: {region: 0x164, script: 0x52, flags: 0x0}, + 1262: {region: 0x12a, script: 0x18, flags: 0x0}, + 1263: {region: 0x164, script: 0x52, flags: 0x0}, + 1264: {region: 0x160, script: 0x52, flags: 0x0}, + 1265: {region: 0x164, script: 0x52, flags: 0x0}, + 1266: {region: 0x12a, script: 0x5a, flags: 0x0}, + 1267: {region: 0x12a, script: 0x5b, flags: 0x0}, + 1268: {region: 0x7c, script: 0x29, flags: 0x0}, + 1269: {region: 0x52, script: 0x5e, flags: 0x0}, + 1270: {region: 0x10a, script: 0x62, flags: 0x0}, + 1271: {region: 0x107, script: 0x6c, flags: 0x0}, + 1272: {region: 0x98, script: 0x20, flags: 0x0}, + 1273: {region: 0x130, script: 0x52, flags: 0x0}, + 1274: {region: 0x164, script: 0x52, flags: 0x0}, + 1275: {region: 0x9b, script: 0x82, flags: 0x0}, + 1276: {region: 0x164, script: 0x52, flags: 0x0}, + 1277: {region: 0x15d, script: 0xba, flags: 0x0}, + 1278: {region: 0x164, script: 0x52, flags: 0x0}, + 1279: {region: 0x164, script: 0x52, flags: 0x0}, + 1280: {region: 0xda, script: 0x20, flags: 0x0}, + 1281: {region: 0x164, script: 0x52, flags: 0x0}, + 1282: {region: 0x164, script: 0x52, flags: 0x0}, + 1283: {region: 0xd0, script: 0x52, flags: 0x0}, + 1284: {region: 0x74, script: 0x52, flags: 0x0}, + 1285: {region: 0x164, script: 0x52, flags: 0x0}, + 1286: {region: 0x164, script: 0x52, flags: 0x0}, + 1287: {region: 0x51, script: 0x52, flags: 0x0}, + 1288: {region: 0x164, script: 0x52, flags: 0x0}, + 1289: {region: 0x164, script: 0x52, flags: 0x0}, + 1290: {region: 0x164, script: 0x52, flags: 0x0}, + 1291: {region: 0x51, script: 0x52, flags: 0x0}, + 1292: {region: 0x164, script: 0x52, flags: 0x0}, + 1293: {region: 0x164, script: 0x52, flags: 0x0}, + 1294: {region: 0x164, script: 0x52, flags: 0x0}, + 1295: {region: 0x164, script: 0x52, flags: 0x0}, + 1296: {region: 0x1, script: 0x37, flags: 0x0}, + 1297: {region: 0x164, script: 0x52, flags: 0x0}, + 1298: {region: 0x164, script: 0x52, flags: 0x0}, + 1299: {region: 0x164, script: 0x52, flags: 0x0}, + 1300: {region: 0x164, script: 0x52, flags: 0x0}, + 1301: {region: 0x164, script: 0x52, flags: 0x0}, + 1302: {region: 0xd5, script: 0x52, flags: 0x0}, + 1303: {region: 0x164, script: 0x52, flags: 0x0}, + 1304: {region: 0x164, script: 0x52, flags: 0x0}, + 1305: {region: 0x164, script: 0x52, flags: 0x0}, + 1306: {region: 0x40, script: 0x52, flags: 0x0}, + 1307: {region: 0x164, script: 0x52, flags: 0x0}, + 1308: {region: 0xce, script: 0x52, flags: 0x0}, + 1309: {region: 0x4a, script: 0x3, flags: 0x1}, + 1310: {region: 0x164, script: 0x52, flags: 0x0}, + 1311: {region: 0x164, script: 0x52, flags: 0x0}, + 1312: {region: 0x164, script: 0x52, flags: 0x0}, + 1313: {region: 0x52, script: 0x52, flags: 0x0}, + 1314: {region: 0x10a, script: 0x52, flags: 0x0}, + 1316: {region: 0xa7, script: 0x5, flags: 0x0}, + 1317: {region: 0xd8, script: 0x52, flags: 0x0}, + 1318: {region: 0xb9, script: 0xd2, flags: 0x0}, + 1319: {region: 0x4d, script: 0x14, flags: 0x1}, + 1320: {region: 0x164, script: 0x52, flags: 0x0}, + 1321: {region: 0x121, script: 0x52, flags: 0x0}, + 1322: {region: 0xcf, script: 0x52, flags: 0x0}, + 1323: {region: 0x164, script: 0x52, flags: 0x0}, + 1324: {region: 0x160, script: 0x52, flags: 0x0}, + 1326: {region: 0x12a, 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}, +// Size: 388 bytes, 97 elements +var likelyLangList = [97]likelyScriptRegion{ + 0: {region: 0x9b, script: 0x7, flags: 0x0}, + 1: {region: 0xa0, script: 0x6d, flags: 0x2}, + 2: {region: 0x11b, 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}, + 4: {region: 0x9a, script: 0x5, flags: 0x4}, + 5: {region: 0x9b, script: 0x5, flags: 0x4}, + 6: {region: 0x105, script: 0x1e, flags: 0x4}, + 7: {region: 0x9b, script: 0x5, flags: 0x2}, + 8: {region: 0x105, script: 0x1e, flags: 0x0}, + 9: {region: 0x37, script: 0x2a, flags: 0x2}, + 10: {region: 0x134, script: 0x52, flags: 0x0}, + 11: {region: 0x7a, script: 0xbd, flags: 0x2}, + 12: {region: 0x113, script: 0x52, flags: 0x0}, + 13: {region: 0x83, script: 0x1, flags: 0x2}, + 14: {region: 0x5c, script: 0x1d, flags: 0x0}, + 15: {region: 0x86, script: 0x57, flags: 0x2}, + 16: {region: 0xd5, script: 0x52, flags: 0x0}, + 17: {region: 0x51, script: 0x5, flags: 0x4}, + 18: {region: 0x10a, script: 0x5, flags: 0x4}, + 19: {region: 0xad, script: 0x1e, flags: 0x0}, + 20: {region: 0x23, script: 0x5, flags: 0x4}, + 21: {region: 0x52, script: 0x5, flags: 0x4}, + 22: {region: 0x9b, script: 0x5, flags: 0x4}, + 23: {region: 0xc4, script: 0x5, flags: 0x4}, + 24: {region: 0x52, script: 0x5, flags: 0x2}, + 25: {region: 0x12a, script: 0x52, flags: 0x0}, + 26: {region: 0xaf, script: 0x5, flags: 0x4}, + 27: {region: 0x9a, script: 0x5, flags: 0x2}, + 28: {region: 0xa4, script: 0x1e, flags: 0x0}, + 29: {region: 0x52, script: 0x5, flags: 0x4}, + 30: {region: 0x12a, script: 0x52, flags: 0x4}, + 31: {region: 0x52, script: 0x5, flags: 0x2}, + 32: {region: 0x12a, script: 0x52, flags: 0x2}, + 33: {region: 0xda, script: 0x20, flags: 0x0}, + 34: {region: 0x98, script: 0x55, flags: 0x2}, + 35: {region: 0x82, script: 0x52, flags: 0x0}, + 36: {region: 0x83, script: 0x70, flags: 0x4}, + 37: {region: 0x83, script: 0x70, flags: 0x2}, + 38: {region: 0xc4, script: 0x1e, flags: 0x0}, + 39: {region: 0x52, script: 0x66, flags: 0x4}, + 40: {region: 0x52, script: 0x66, flags: 0x2}, + 41: {region: 0xcf, script: 0x52, flags: 0x0}, + 42: {region: 0x49, script: 0x5, flags: 0x4}, + 43: {region: 0x94, script: 0x5, flags: 0x4}, + 44: {region: 0x98, script: 0x2f, flags: 0x0}, + 45: {region: 0xe7, script: 0x5, flags: 0x4}, + 46: {region: 0xe7, script: 0x5, flags: 0x2}, + 47: {region: 0x9b, script: 0x7c, flags: 0x0}, + 48: {region: 0x52, script: 0x7d, flags: 0x2}, + 49: {region: 0xb9, script: 0xd2, flags: 0x0}, + 50: {region: 0xd8, script: 0x52, flags: 0x4}, + 51: {region: 0xe7, script: 0x5, flags: 0x0}, + 52: {region: 0x98, script: 0x20, flags: 0x2}, + 53: {region: 0x98, script: 0x47, flags: 0x2}, + 54: {region: 0x98, script: 0xc0, flags: 0x2}, + 55: {region: 0x104, script: 0x1e, flags: 0x0}, + 56: {region: 0xbc, script: 0x52, flags: 0x4}, + 57: {region: 0x103, script: 0x52, flags: 0x4}, + 58: {region: 0x105, script: 0x52, flags: 0x4}, + 59: {region: 0x12a, script: 0x52, flags: 0x4}, + 60: {region: 0x123, script: 0x1e, flags: 0x0}, + 61: {region: 0xe7, script: 0x5, flags: 0x4}, + 62: {region: 0xe7, script: 0x5, flags: 0x2}, + 63: {region: 0x52, script: 0x5, flags: 0x0}, + 64: {region: 0xad, script: 0x1e, flags: 0x4}, + 65: {region: 0xc4, script: 0x1e, flags: 0x4}, + 66: {region: 0xad, script: 0x1e, flags: 0x2}, + 67: {region: 0x98, script: 0xe, flags: 0x0}, + 68: {region: 0xda, script: 0x20, flags: 0x4}, + 69: {region: 0xda, script: 0x20, flags: 0x2}, + 70: {region: 0x136, script: 0x52, flags: 0x0}, + 71: {region: 0x23, script: 0x5, flags: 0x4}, + 72: {region: 0x52, script: 0x1e, flags: 0x4}, + 73: {region: 0x23, script: 0x5, flags: 0x2}, + 74: {region: 0x8c, script: 0x35, flags: 0x0}, + 75: {region: 0x52, script: 0x34, flags: 0x4}, + 76: {region: 0x52, script: 0x34, flags: 0x2}, + 77: {region: 0x52, script: 0x34, flags: 0x0}, + 78: {region: 0x2e, script: 0x35, flags: 0x4}, + 79: {region: 0x3d, script: 0x35, flags: 0x4}, + 80: {region: 0x7a, script: 0x35, flags: 0x4}, + 81: {region: 0x7d, script: 0x35, flags: 0x4}, + 82: {region: 0x8c, script: 0x35, flags: 0x4}, + 83: {region: 0x94, script: 0x35, flags: 0x4}, + 84: {region: 0xc5, script: 0x35, flags: 0x4}, + 85: {region: 0xcf, script: 0x35, flags: 0x4}, + 86: {region: 0xe1, script: 0x35, flags: 0x4}, + 87: {region: 0xe4, script: 0x35, flags: 0x4}, + 88: {region: 0xe6, script: 0x35, flags: 0x4}, + 89: {region: 0x115, script: 0x35, flags: 0x4}, + 90: {region: 0x122, script: 0x35, flags: 0x4}, + 91: {region: 0x12d, script: 0x35, flags: 0x4}, + 92: {region: 0x134, script: 0x35, flags: 0x4}, + 93: {region: 0x13d, script: 0x35, flags: 0x4}, + 94: {region: 0x12d, script: 0x11, flags: 0x2}, + 95: {region: 0x12d, script: 0x30, flags: 0x2}, + 96: {region: 0x12d, script: 0x35, flags: 0x2}, } type likelyLangScript struct { @@ -2163,307 +2924,308 @@ type likelyLangScript struct { // 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}, +// Size: 1428 bytes, 357 elements +var likelyRegion = [357]likelyLangScript{ + 33: {lang: 0xd7, script: 0x52, flags: 0x0}, + 34: {lang: 0x3a, 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}, + 41: {lang: 0x3be, 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}, + 43: {lang: 0x13d, script: 0x52, flags: 0x0}, + 44: {lang: 0x419, script: 0x52, flags: 0x0}, + 45: {lang: 0x10c, script: 0x52, flags: 0x0}, + 47: {lang: 0x365, script: 0x52, flags: 0x0}, + 48: {lang: 0x442, script: 0x52, flags: 0x0}, + 49: {lang: 0x58, 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}, + 52: {lang: 0xa5, script: 0xe, flags: 0x0}, + 53: {lang: 0x365, script: 0x52, flags: 0x0}, + 54: {lang: 0x15d, script: 0x52, flags: 0x0}, + 55: {lang: 0x7e, script: 0x1e, flags: 0x0}, + 56: {lang: 0x3a, script: 0x5, flags: 0x0}, + 57: {lang: 0x3d7, script: 0x52, flags: 0x0}, + 58: {lang: 0x15d, script: 0x52, flags: 0x0}, + 59: {lang: 0x15d, script: 0x52, flags: 0x0}, + 61: {lang: 0x31d, script: 0x52, flags: 0x0}, + 62: {lang: 0x13d, script: 0x52, flags: 0x0}, + 63: {lang: 0x39f, script: 0x52, flags: 0x0}, + 64: {lang: 0x3be, 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}, + 70: {lang: 0x71, script: 0x1e, flags: 0x0}, + 72: {lang: 0x510, script: 0x37, flags: 0x2}, + 73: {lang: 0x31d, script: 0x5, flags: 0x2}, + 74: {lang: 0x443, script: 0x52, flags: 0x0}, + 75: {lang: 0x15d, script: 0x52, flags: 0x0}, + 76: {lang: 0x15d, script: 0x52, flags: 0x0}, + 77: {lang: 0x10c, script: 0x52, flags: 0x0}, + 78: {lang: 0x15d, script: 0x52, flags: 0x0}, + 80: {lang: 0x13d, script: 0x52, flags: 0x0}, + 81: {lang: 0x15d, script: 0x52, flags: 0x0}, 82: {lang: 0xa, script: 0x5, flags: 0x1}, - 83: {lang: 0x9d, script: 0x52, flags: 0x0}, + 83: {lang: 0x13d, 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}, + 85: {lang: 0x13d, script: 0x52, flags: 0x0}, + 88: {lang: 0x13d, script: 0x52, flags: 0x0}, + 89: {lang: 0x3be, script: 0x52, flags: 0x0}, + 90: {lang: 0x39f, 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}, + 93: {lang: 0xf9, script: 0x52, flags: 0x0}, + 95: {lang: 0x10c, 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}, + 98: {lang: 0x100, script: 0x52, flags: 0x0}, + 100: {lang: 0x13d, 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}, + 103: {lang: 0x13d, script: 0x52, flags: 0x0}, + 104: {lang: 0x13d, script: 0x52, flags: 0x0}, + 105: {lang: 0x13f, script: 0x52, flags: 0x0}, + 106: {lang: 0x3a, script: 0x5, flags: 0x0}, + 107: {lang: 0x3a, script: 0x5, flags: 0x0}, + 108: {lang: 0x46d, script: 0x27, flags: 0x0}, + 109: {lang: 0x13d, 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}, + 112: {lang: 0x10c, script: 0x52, flags: 0x0}, + 113: {lang: 0x150, script: 0x52, flags: 0x0}, + 114: {lang: 0x1be, script: 0x20, flags: 0x2}, + 117: {lang: 0x157, script: 0x52, flags: 0x0}, + 119: {lang: 0x15d, script: 0x52, flags: 0x0}, + 121: {lang: 0x15d, script: 0x52, flags: 0x0}, + 122: {lang: 0x15, script: 0x2, flags: 0x1}, + 124: {lang: 0x17, script: 0x3, flags: 0x1}, + 125: {lang: 0x15d, script: 0x52, flags: 0x0}, + 127: {lang: 0x21, script: 0x52, flags: 0x0}, + 129: {lang: 0x243, script: 0x52, flags: 0x0}, + 131: {lang: 0x15d, script: 0x52, flags: 0x0}, + 132: {lang: 0x15d, script: 0x52, flags: 0x0}, + 133: {lang: 0x13d, script: 0x52, flags: 0x0}, + 134: {lang: 0x1a, script: 0x2, flags: 0x1}, + 135: {lang: 0x0, script: 0x52, flags: 0x0}, + 136: {lang: 0x13d, script: 0x52, flags: 0x0}, + 138: {lang: 0x3be, script: 0x52, flags: 0x0}, + 140: {lang: 0x527, script: 0x35, flags: 0x0}, + 141: {lang: 0x0, script: 0x52, flags: 0x0}, + 142: {lang: 0x13d, script: 0x52, flags: 0x0}, + 143: {lang: 0x1cf, script: 0x52, flags: 0x0}, + 144: {lang: 0x1d2, script: 0x52, flags: 0x0}, + 145: {lang: 0x1d3, script: 0x52, flags: 0x0}, + 147: {lang: 0x13d, script: 0x52, flags: 0x0}, + 148: {lang: 0x1c, script: 0x2, flags: 0x1}, + 150: {lang: 0x1ba, script: 0x37, flags: 0x0}, + 152: {lang: 0x1e, script: 0x3, flags: 0x1}, + 154: {lang: 0x3a, script: 0x5, flags: 0x0}, + 155: {lang: 0x21, script: 0x2, flags: 0x1}, + 156: {lang: 0x1f6, script: 0x52, flags: 0x0}, + 157: {lang: 0x1f7, script: 0x52, flags: 0x0}, + 160: {lang: 0x3a, script: 0x5, flags: 0x0}, + 161: {lang: 0x1fe, script: 0x41, flags: 0x0}, + 163: {lang: 0x443, script: 0x52, flags: 0x0}, + 164: {lang: 0x288, script: 0x1e, flags: 0x0}, + 165: {lang: 0x23, script: 0x3, flags: 0x1}, + 167: {lang: 0x26, script: 0x2, flags: 0x1}, + 169: {lang: 0x252, script: 0x4b, flags: 0x0}, + 170: {lang: 0x252, script: 0x4b, flags: 0x0}, + 171: {lang: 0x3a, script: 0x5, flags: 0x0}, + 173: {lang: 0x3e0, script: 0x1e, flags: 0x0}, + 174: {lang: 0x28, script: 0x2, flags: 0x1}, + 175: {lang: 0x3a, script: 0x5, flags: 0x0}, + 177: {lang: 0x10c, script: 0x52, flags: 0x0}, + 178: {lang: 0x40a, script: 0xc1, flags: 0x0}, + 180: {lang: 0x439, script: 0x52, flags: 0x0}, + 181: {lang: 0x2be, script: 0x52, flags: 0x0}, + 182: {lang: 0x15d, script: 0x52, flags: 0x0}, + 183: {lang: 0x2c5, script: 0x52, flags: 0x0}, + 184: {lang: 0x3a, script: 0x5, flags: 0x0}, + 185: {lang: 0x2a, script: 0x2, flags: 0x1}, + 186: {lang: 0x15d, script: 0x52, flags: 0x0}, + 187: {lang: 0x2c, script: 0x2, flags: 0x1}, + 188: {lang: 0x430, script: 0x52, flags: 0x0}, + 189: {lang: 0x15d, script: 0x52, flags: 0x0}, + 190: {lang: 0x2ef, script: 0x52, flags: 0x0}, + 193: {lang: 0x2e, script: 0x2, flags: 0x1}, + 194: {lang: 0xa0, script: 0x52, flags: 0x0}, + 195: {lang: 0x30, script: 0x2, flags: 0x1}, + 196: {lang: 0x32, script: 0x2, flags: 0x1}, + 197: {lang: 0x34, script: 0x2, flags: 0x1}, + 199: {lang: 0x15d, script: 0x52, flags: 0x0}, + 200: {lang: 0x36, script: 0x2, flags: 0x1}, + 202: {lang: 0x31e, script: 0x52, flags: 0x0}, + 203: {lang: 0x38, script: 0x3, flags: 0x1}, + 204: {lang: 0x127, script: 0xd4, flags: 0x0}, + 206: {lang: 0x13d, script: 0x52, flags: 0x0}, + 207: {lang: 0x31d, script: 0x52, flags: 0x0}, + 208: {lang: 0x3be, script: 0x52, flags: 0x0}, + 209: {lang: 0x16, script: 0x52, flags: 0x0}, + 210: {lang: 0x15d, script: 0x52, flags: 0x0}, + 211: {lang: 0x1b2, script: 0x52, flags: 0x0}, + 213: {lang: 0x1b2, script: 0x5, flags: 0x2}, + 215: {lang: 0x13d, script: 0x52, flags: 0x0}, + 216: {lang: 0x365, script: 0x52, flags: 0x0}, + 217: {lang: 0x345, script: 0x52, flags: 0x0}, + 218: {lang: 0x34f, script: 0x20, flags: 0x0}, + 224: {lang: 0x3a, script: 0x5, flags: 0x0}, + 225: {lang: 0x13d, script: 0x52, flags: 0x0}, + 227: {lang: 0x13d, script: 0x52, flags: 0x0}, + 228: {lang: 0x15d, script: 0x52, flags: 0x0}, + 229: {lang: 0x484, script: 0x52, flags: 0x0}, + 230: {lang: 0x152, script: 0x52, flags: 0x0}, + 231: {lang: 0x3b, script: 0x3, flags: 0x1}, + 232: {lang: 0x3b1, script: 0x52, flags: 0x0}, + 233: {lang: 0x15d, script: 0x52, flags: 0x0}, + 235: {lang: 0x13d, script: 0x52, flags: 0x0}, + 236: {lang: 0x3a, script: 0x5, flags: 0x0}, + 237: {lang: 0x3be, script: 0x52, flags: 0x0}, + 239: {lang: 0x3a0, script: 0x52, flags: 0x0}, + 240: {lang: 0x192, script: 0x52, flags: 0x0}, + 242: {lang: 0x3a, script: 0x5, flags: 0x0}, + 257: {lang: 0x15d, script: 0x52, flags: 0x0}, + 259: {lang: 0x3e, script: 0x2, flags: 0x1}, + 260: {lang: 0x430, script: 0x1e, flags: 0x0}, + 261: {lang: 0x40, script: 0x2, flags: 0x1}, + 262: {lang: 0x3e3, script: 0x52, flags: 0x0}, + 263: {lang: 0x3a, script: 0x5, flags: 0x0}, + 265: {lang: 0x15d, script: 0x52, flags: 0x0}, + 266: {lang: 0x3a, script: 0x5, flags: 0x0}, + 267: {lang: 0x42, script: 0x2, flags: 0x1}, + 270: {lang: 0x414, script: 0x52, flags: 0x0}, + 271: {lang: 0x345, script: 0x52, flags: 0x0}, + 272: {lang: 0x44, script: 0x2, flags: 0x1}, + 274: {lang: 0x1f7, script: 0x52, flags: 0x0}, + 275: {lang: 0x15d, script: 0x52, flags: 0x0}, + 276: {lang: 0x427, script: 0x52, flags: 0x0}, + 277: {lang: 0x365, script: 0x52, flags: 0x0}, + 279: {lang: 0x3be, script: 0x52, flags: 0x0}, + 281: {lang: 0x13d, script: 0x52, flags: 0x0}, + 283: {lang: 0x46, script: 0x2, flags: 0x1}, + 287: {lang: 0x15d, script: 0x52, flags: 0x0}, + 288: {lang: 0x15d, script: 0x52, flags: 0x0}, + 289: {lang: 0x48, script: 0x2, flags: 0x1}, + 290: {lang: 0x4a, script: 0x3, flags: 0x1}, + 291: {lang: 0x4d, script: 0x2, flags: 0x1}, + 292: {lang: 0x475, script: 0x52, flags: 0x0}, + 293: {lang: 0x3be, script: 0x52, flags: 0x0}, + 294: {lang: 0x474, script: 0x52, flags: 0x0}, + 295: {lang: 0x4f, script: 0x2, flags: 0x1}, + 296: {lang: 0x480, script: 0x52, flags: 0x0}, + 298: {lang: 0x51, script: 0x4, flags: 0x1}, + 300: {lang: 0x49e, script: 0x52, flags: 0x0}, + 301: {lang: 0x55, script: 0x2, flags: 0x1}, + 302: {lang: 0x443, script: 0x52, flags: 0x0}, + 303: {lang: 0x57, script: 0x3, flags: 0x1}, + 304: {lang: 0x443, script: 0x52, flags: 0x0}, + 308: {lang: 0x510, script: 0x37, flags: 0x2}, + 309: {lang: 0x13d, script: 0x52, flags: 0x0}, + 310: {lang: 0x4ba, script: 0x52, flags: 0x0}, + 311: {lang: 0x1f7, script: 0x52, flags: 0x0}, + 314: {lang: 0x13d, script: 0x52, flags: 0x0}, + 317: {lang: 0x4c1, script: 0x52, flags: 0x0}, + 318: {lang: 0x8a, script: 0x52, flags: 0x0}, + 319: {lang: 0x15d, script: 0x52, flags: 0x0}, + 321: {lang: 0x419, script: 0x52, flags: 0x0}, + 332: {lang: 0x5a, script: 0x2, flags: 0x1}, + 349: {lang: 0x3a, script: 0x5, flags: 0x0}, + 350: {lang: 0x5c, script: 0x2, flags: 0x1}, + 355: {lang: 0x421, 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}, + 0: {lang: 0x147, script: 0x5, flags: 0x0}, + 1: {lang: 0x474, script: 0x52, flags: 0x0}, + 2: {lang: 0x42f, script: 0x52, flags: 0x0}, + 3: {lang: 0x2fd, script: 0x1e, flags: 0x0}, + 4: {lang: 0x1d5, script: 0x8, flags: 0x0}, + 5: {lang: 0x272, script: 0x52, flags: 0x0}, + 6: {lang: 0xb7, script: 0x52, flags: 0x0}, + 7: {lang: 0x430, script: 0x1e, flags: 0x0}, + 8: {lang: 0x12c, script: 0xd6, flags: 0x0}, + 9: {lang: 0x34f, script: 0x20, flags: 0x0}, + 10: {lang: 0x527, script: 0x34, flags: 0x0}, + 11: {lang: 0x4aa, script: 0x5, flags: 0x0}, + 12: {lang: 0x51d, script: 0x35, flags: 0x0}, + 13: {lang: 0x521, script: 0x52, flags: 0x0}, + 14: {lang: 0x298, script: 0xd5, flags: 0x0}, + 15: {lang: 0x135, script: 0x2d, flags: 0x0}, + 16: {lang: 0x488, script: 0x52, flags: 0x0}, + 17: {lang: 0x3a, script: 0x5, flags: 0x0}, + 18: {lang: 0x15d, script: 0x52, flags: 0x0}, + 19: {lang: 0x27, script: 0x27, flags: 0x0}, + 20: {lang: 0x138, script: 0x52, flags: 0x0}, + 21: {lang: 0x268, script: 0x5, flags: 0x2}, + 22: {lang: 0x510, script: 0x37, flags: 0x2}, + 23: {lang: 0x20e, script: 0x29, flags: 0x0}, + 24: {lang: 0x5, script: 0x1e, flags: 0x0}, + 25: {lang: 0x272, script: 0x52, flags: 0x0}, + 26: {lang: 0x135, script: 0x2d, flags: 0x0}, + 27: {lang: 0x2fd, script: 0x1e, flags: 0x0}, + 28: {lang: 0x1df, script: 0x52, flags: 0x0}, + 29: {lang: 0x31d, script: 0x5, flags: 0x0}, + 30: {lang: 0x1bc, script: 0x20, flags: 0x0}, + 31: {lang: 0x4b2, script: 0x5, flags: 0x0}, + 32: {lang: 0x234, script: 0x6b, flags: 0x0}, + 33: {lang: 0x147, script: 0x5, flags: 0x0}, + 34: {lang: 0x474, script: 0x52, flags: 0x0}, + 35: {lang: 0x248, script: 0x46, flags: 0x0}, + 36: {lang: 0xe6, script: 0x5, flags: 0x0}, + 37: {lang: 0x224, script: 0xd5, flags: 0x0}, + 38: {lang: 0x3a, script: 0x5, flags: 0x0}, + 39: {lang: 0x15d, script: 0x52, flags: 0x0}, + 40: {lang: 0x2b6, script: 0x4f, flags: 0x0}, + 41: {lang: 0x224, script: 0xd5, flags: 0x0}, + 42: {lang: 0x3a, script: 0x5, flags: 0x0}, + 43: {lang: 0x15d, script: 0x52, flags: 0x0}, + 44: {lang: 0x3da, script: 0x52, flags: 0x0}, + 45: {lang: 0x4ac, script: 0x1e, flags: 0x0}, + 46: {lang: 0x2fd, script: 0x1e, flags: 0x0}, + 47: {lang: 0x42f, script: 0x52, flags: 0x0}, + 48: {lang: 0x32f, script: 0x6b, flags: 0x0}, + 49: {lang: 0x211, script: 0x52, flags: 0x0}, + 50: {lang: 0x309, script: 0x1e, flags: 0x0}, + 51: {lang: 0x240, script: 0x5, flags: 0x0}, + 52: {lang: 0x527, script: 0x35, flags: 0x0}, + 53: {lang: 0x3be, script: 0x52, flags: 0x0}, + 54: {lang: 0x3a, script: 0x5, flags: 0x0}, + 55: {lang: 0x15d, script: 0x52, flags: 0x0}, + 56: {lang: 0x2eb, script: 0x52, flags: 0x0}, + 57: {lang: 0x4b2, script: 0x5, flags: 0x0}, + 58: {lang: 0x88, script: 0x20, flags: 0x0}, + 59: {lang: 0x4b2, script: 0x5, flags: 0x0}, + 60: {lang: 0x4b2, script: 0x5, flags: 0x0}, + 61: {lang: 0xbe, script: 0x20, flags: 0x0}, + 62: {lang: 0x3da, script: 0x52, flags: 0x0}, + 63: {lang: 0x7e, script: 0x1e, flags: 0x0}, + 64: {lang: 0x3e0, script: 0x1e, flags: 0x0}, + 65: {lang: 0x265, script: 0x52, flags: 0x0}, + 66: {lang: 0x442, script: 0x52, flags: 0x0}, + 67: {lang: 0x510, script: 0x37, flags: 0x0}, + 68: {lang: 0x410, script: 0x52, flags: 0x0}, + 69: {lang: 0x4ac, script: 0x1e, flags: 0x0}, + 70: {lang: 0x3a, script: 0x5, flags: 0x0}, + 71: {lang: 0x15d, script: 0x52, flags: 0x0}, + 72: {lang: 0x15d, script: 0x52, flags: 0x0}, + 73: {lang: 0x35, script: 0x5, flags: 0x0}, + 74: {lang: 0x469, script: 0xd5, flags: 0x0}, + 75: {lang: 0x2ea, script: 0x5, flags: 0x0}, + 76: {lang: 0x30d, script: 0x6b, flags: 0x0}, + 77: {lang: 0x465, script: 0x1e, flags: 0x0}, + 78: {lang: 0x147, script: 0x5, flags: 0x0}, + 79: {lang: 0x3a, script: 0x5, flags: 0x0}, + 80: {lang: 0x15d, script: 0x52, flags: 0x0}, + 81: {lang: 0x488, script: 0x52, flags: 0x0}, + 82: {lang: 0x58, script: 0x5, flags: 0x0}, + 83: {lang: 0x217, script: 0x1e, flags: 0x0}, + 84: {lang: 0x81, script: 0x2d, flags: 0x0}, + 85: {lang: 0x527, script: 0x35, flags: 0x0}, + 86: {lang: 0x48a, script: 0x52, flags: 0x0}, + 87: {lang: 0x4ac, script: 0x1e, flags: 0x0}, + 88: {lang: 0x510, script: 0x37, flags: 0x0}, + 89: {lang: 0x3b1, script: 0x52, flags: 0x0}, + 90: {lang: 0x42f, script: 0x52, flags: 0x0}, + 91: {lang: 0x430, script: 0x1e, flags: 0x0}, + 92: {lang: 0x15d, script: 0x52, flags: 0x0}, + 93: {lang: 0x444, script: 0x5, flags: 0x0}, } type likelyTag struct { @@ -2474,186 +3236,287 @@ type likelyTag struct { // 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}, + 1: {lang: 0x138, region: 0xd5, script: 0x52}, + 2: {lang: 0x138, region: 0x134, script: 0x52}, + 3: {lang: 0x3be, region: 0x40, script: 0x52}, + 4: {lang: 0x138, region: 0x2e, script: 0x52}, + 5: {lang: 0x138, region: 0xd5, script: 0x52}, + 6: {lang: 0x13d, region: 0xce, script: 0x52}, + 7: {lang: 0x443, region: 0x12e, script: 0x52}, + 8: {lang: 0x3a, region: 0x6a, script: 0x5}, + 9: {lang: 0x443, region: 0x4a, script: 0x52}, + 10: {lang: 0x138, region: 0x160, script: 0x52}, + 11: {lang: 0x138, region: 0x134, script: 0x52}, + 12: {lang: 0x138, region: 0x134, script: 0x52}, + 13: {lang: 0x13d, region: 0x58, script: 0x52}, + 14: {lang: 0x527, region: 0x52, script: 0x34}, + 15: {lang: 0x1bc, region: 0x98, script: 0x20}, + 16: {lang: 0x1df, region: 0x94, script: 0x52}, + 17: {lang: 0x1f7, region: 0x9d, script: 0x52}, + 18: {lang: 0x138, region: 0x2e, script: 0x52}, + 19: {lang: 0x138, region: 0xe5, script: 0x52}, + 20: {lang: 0x138, region: 0x89, script: 0x52}, + 21: {lang: 0x419, region: 0x141, script: 0x52}, + 22: {lang: 0x527, region: 0x52, script: 0x34}, + 23: {lang: 0x4ba, region: 0x136, script: 0x52}, + 24: {lang: 0x3a, region: 0x107, script: 0x5}, + 25: {lang: 0x3e0, region: 0x105, script: 0x1e}, + 26: {lang: 0x3e0, region: 0x105, script: 0x1e}, + 27: {lang: 0x138, region: 0x7a, script: 0x52}, + 28: {lang: 0x10c, region: 0x5f, script: 0x52}, + 29: {lang: 0x13d, region: 0x1e, script: 0x52}, + 30: {lang: 0x138, region: 0x99, script: 0x52}, + 31: {lang: 0x138, region: 0x7a, script: 0x52}, +} + +// Size: 357 bytes, 357 elements +var regionToGroups = [357]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, + // Entry 40 - 7F + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, + // Entry 80 - BF + 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, + // Entry C0 - FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x04, + 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 100 - 13F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, 0x00, 0x00, + 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, 0x00, 0x00, + // Entry 140 - 17F + 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, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, } type mutualIntelligibility struct { - want uint16 - have uint16 - conf uint8 - oneway bool + want uint16 + have uint16 + distance uint8 + oneway bool } type scriptIntelligibility struct { - lang uint16 - want uint8 - have uint8 - conf uint8 + wantLang uint16 + haveLang uint16 + wantScript uint8 + haveScript uint8 + distance uint8 +} + +type regionIntelligibility struct { + lang uint16 + script uint8 + group uint8 + distance 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}, +// Size: 690 bytes, 115 elements +var matchLang = [115]mutualIntelligibility{ + 0: {want: 0x1cf, have: 0xb7, distance: 0x4, oneway: false}, + 1: {want: 0x405, have: 0xb7, distance: 0x4, oneway: false}, + 2: {want: 0x405, have: 0x1cf, distance: 0x4, oneway: false}, + 3: {want: 0x405, have: 0x430, distance: 0x4, oneway: false}, + 4: {want: 0x438, have: 0x1, distance: 0x4, oneway: false}, + 5: {want: 0x1a1, have: 0x10c, distance: 0x4, oneway: true}, + 6: {want: 0x293, have: 0x10c, distance: 0x4, oneway: true}, + 7: {want: 0x430, have: 0x1cf, distance: 0x5, oneway: false}, + 8: {want: 0x430, have: 0xb7, distance: 0x5, oneway: false}, + 9: {want: 0x100, have: 0x36d, distance: 0x8, oneway: false}, + 10: {want: 0x100, have: 0x345, distance: 0x8, oneway: false}, + 11: {want: 0x5, have: 0x3e0, distance: 0xa, oneway: true}, + 12: {want: 0xd, have: 0x138, distance: 0xa, oneway: true}, + 13: {want: 0x16, have: 0x365, distance: 0xa, oneway: true}, + 14: {want: 0x21, have: 0x138, distance: 0xa, oneway: true}, + 15: {want: 0x56, have: 0x13d, distance: 0xa, oneway: true}, + 16: {want: 0x58, have: 0x3e0, distance: 0xa, oneway: true}, + 17: {want: 0x71, have: 0x3e0, distance: 0xa, oneway: true}, + 18: {want: 0x75, have: 0x138, distance: 0xa, oneway: true}, + 19: {want: 0x82, have: 0x1bc, distance: 0xa, oneway: true}, + 20: {want: 0xa5, have: 0x138, distance: 0xa, oneway: true}, + 21: {want: 0xb2, have: 0x15d, distance: 0xa, oneway: true}, + 22: {want: 0xdd, have: 0x152, distance: 0xa, oneway: true}, + 23: {want: 0xe5, have: 0x138, distance: 0xa, oneway: true}, + 24: {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true}, + 25: {want: 0xef, have: 0x15d, distance: 0xa, oneway: true}, + 26: {want: 0xf8, have: 0x15d, distance: 0xa, oneway: true}, + 27: {want: 0xff, have: 0x138, distance: 0xa, oneway: true}, + 28: {want: 0x12f, have: 0x138, distance: 0xa, oneway: true}, + 29: {want: 0x13b, have: 0x138, distance: 0xa, oneway: true}, + 30: {want: 0x13f, have: 0x150, distance: 0xa, oneway: true}, + 31: {want: 0x144, have: 0x13d, distance: 0xa, oneway: true}, + 32: {want: 0x157, have: 0x100, distance: 0xa, oneway: true}, + 33: {want: 0x16c, have: 0x365, distance: 0xa, oneway: true}, + 34: {want: 0x16d, have: 0x138, distance: 0xa, oneway: true}, + 35: {want: 0x16e, have: 0x138, distance: 0xa, oneway: true}, + 36: {want: 0x17c, have: 0x138, distance: 0xa, oneway: true}, + 37: {want: 0x18e, have: 0x13d, distance: 0xa, oneway: true}, + 38: {want: 0x192, have: 0x13d, distance: 0xa, oneway: true}, + 39: {want: 0x1a2, have: 0x1bc, distance: 0xa, oneway: true}, + 40: {want: 0x1b2, have: 0x138, distance: 0xa, oneway: true}, + 41: {want: 0x1b6, have: 0x138, distance: 0xa, oneway: true}, + 42: {want: 0x1d2, have: 0x15d, distance: 0xa, oneway: true}, + 43: {want: 0x1d5, have: 0x3e0, distance: 0xa, oneway: true}, + 44: {want: 0x1d7, have: 0x138, distance: 0xa, oneway: true}, + 45: {want: 0x1e5, have: 0x138, distance: 0xa, oneway: true}, + 46: {want: 0x1f6, have: 0x138, distance: 0xa, oneway: true}, + 47: {want: 0x20c, have: 0x1df, distance: 0xa, oneway: true}, + 48: {want: 0x20e, have: 0x138, distance: 0xa, oneway: true}, + 49: {want: 0x22b, have: 0x15d, distance: 0xa, oneway: true}, + 50: {want: 0x240, have: 0x3e0, distance: 0xa, oneway: true}, + 51: {want: 0x248, have: 0x138, distance: 0xa, oneway: true}, + 52: {want: 0x24f, have: 0x138, distance: 0xa, oneway: true}, + 53: {want: 0x263, have: 0x138, distance: 0xa, oneway: true}, + 54: {want: 0x272, have: 0x488, distance: 0xa, oneway: true}, + 55: {want: 0x288, have: 0x3e0, distance: 0xa, oneway: true}, + 56: {want: 0x28c, have: 0x1f7, distance: 0xa, oneway: true}, + 57: {want: 0x2a1, have: 0x138, distance: 0xa, oneway: true}, + 58: {want: 0x2b3, have: 0x15d, distance: 0xa, oneway: true}, + 59: {want: 0x2b6, have: 0x138, distance: 0xa, oneway: true}, + 60: {want: 0x2bc, have: 0x138, distance: 0xa, oneway: true}, + 61: {want: 0x2c1, have: 0x15d, distance: 0xa, oneway: true}, + 62: {want: 0x2eb, have: 0x138, distance: 0xa, oneway: true}, + 63: {want: 0x2ef, have: 0x15d, distance: 0xa, oneway: true}, + 64: {want: 0x2f8, have: 0x138, distance: 0xa, oneway: true}, + 65: {want: 0x2fd, have: 0x7e, distance: 0xa, oneway: true}, + 66: {want: 0x302, have: 0x138, distance: 0xa, oneway: true}, + 67: {want: 0x309, have: 0x3e0, distance: 0xa, oneway: true}, + 68: {want: 0x319, have: 0x1bc, distance: 0xa, oneway: true}, + 69: {want: 0x31d, have: 0x1df, distance: 0xa, oneway: true}, + 70: {want: 0x31e, have: 0x138, distance: 0xa, oneway: true}, + 71: {want: 0x32f, have: 0x138, distance: 0xa, oneway: true}, + 72: {want: 0x34f, have: 0x138, distance: 0xa, oneway: true}, + 73: {want: 0x368, have: 0x345, distance: 0xa, oneway: false}, + 74: {want: 0x368, have: 0x36d, distance: 0xa, oneway: true}, + 75: {want: 0x378, have: 0x138, distance: 0xa, oneway: true}, + 76: {want: 0x385, have: 0x138, distance: 0xa, oneway: true}, + 77: {want: 0x387, have: 0x138, distance: 0xa, oneway: true}, + 78: {want: 0x389, have: 0x15d, distance: 0xa, oneway: true}, + 79: {want: 0x38e, have: 0x138, distance: 0xa, oneway: true}, + 80: {want: 0x393, have: 0x138, distance: 0xa, oneway: true}, + 81: {want: 0x39b, have: 0x138, distance: 0xa, oneway: true}, + 82: {want: 0x3a3, have: 0x138, distance: 0xa, oneway: true}, + 83: {want: 0x3bc, have: 0x138, distance: 0xa, oneway: true}, + 84: {want: 0x3c2, have: 0x13d, distance: 0xa, oneway: true}, + 85: {want: 0x3d2, have: 0x10c, distance: 0xa, oneway: true}, + 86: {want: 0x3d7, have: 0x138, distance: 0xa, oneway: true}, + 87: {want: 0x3e3, have: 0x15d, distance: 0xa, oneway: true}, + 88: {want: 0x3e7, have: 0x1bc, distance: 0xa, oneway: true}, + 89: {want: 0x3f8, have: 0x138, distance: 0xa, oneway: true}, + 90: {want: 0x40a, have: 0x138, distance: 0xa, oneway: true}, + 91: {want: 0x421, have: 0x138, distance: 0xa, oneway: true}, + 92: {want: 0x427, have: 0x138, distance: 0xa, oneway: true}, + 93: {want: 0x42f, have: 0x138, distance: 0xa, oneway: true}, + 94: {want: 0x439, have: 0x138, distance: 0xa, oneway: true}, + 95: {want: 0x43c, have: 0x1df, distance: 0xa, oneway: true}, + 96: {want: 0x443, have: 0x138, distance: 0xa, oneway: true}, + 97: {want: 0x44e, have: 0x138, distance: 0xa, oneway: true}, + 98: {want: 0x45f, have: 0x138, distance: 0xa, oneway: true}, + 99: {want: 0x465, have: 0x3e0, distance: 0xa, oneway: true}, + 100: {want: 0x46d, have: 0x138, distance: 0xa, oneway: true}, + 101: {want: 0x474, have: 0x3e0, distance: 0xa, oneway: true}, + 102: {want: 0x3880, have: 0x138, distance: 0xa, oneway: true}, + 103: {want: 0x47e, have: 0x138, distance: 0xa, oneway: true}, + 104: {want: 0x480, have: 0x138, distance: 0xa, oneway: true}, + 105: {want: 0x492, have: 0x3e0, distance: 0xa, oneway: true}, + 106: {want: 0x49b, have: 0x138, distance: 0xa, oneway: true}, + 107: {want: 0x4aa, have: 0x527, distance: 0xa, oneway: true}, + 108: {want: 0x4b2, have: 0x138, distance: 0xa, oneway: true}, + 109: {want: 0x4ba, have: 0x3e0, distance: 0xa, oneway: true}, + 110: {want: 0x4e3, have: 0x15d, distance: 0xa, oneway: true}, + 111: {want: 0x4f0, have: 0x138, distance: 0xa, oneway: true}, + 112: {want: 0x510, have: 0x138, distance: 0xa, oneway: true}, + 113: {want: 0x516, have: 0x138, distance: 0xa, oneway: true}, + 114: {want: 0x52c, have: 0x138, distance: 0xa, 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: 208 bytes, 26 elements +var matchScript = [26]scriptIntelligibility{ + 0: {wantLang: 0x430, haveLang: 0x430, wantScript: 0x52, haveScript: 0x1e, distance: 0x5}, + 1: {wantLang: 0x430, haveLang: 0x430, wantScript: 0x1e, haveScript: 0x52, distance: 0x5}, + 2: {wantLang: 0x58, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa}, + 3: {wantLang: 0xa5, haveLang: 0x138, wantScript: 0xe, haveScript: 0x52, distance: 0xa}, + 4: {wantLang: 0x1d5, haveLang: 0x3e0, wantScript: 0x8, haveScript: 0x1e, distance: 0xa}, + 5: {wantLang: 0x20e, haveLang: 0x138, wantScript: 0x29, haveScript: 0x52, distance: 0xa}, + 6: {wantLang: 0x248, haveLang: 0x138, wantScript: 0x46, haveScript: 0x52, distance: 0xa}, + 7: {wantLang: 0x24f, haveLang: 0x138, wantScript: 0x4a, haveScript: 0x52, distance: 0xa}, + 8: {wantLang: 0x2b6, haveLang: 0x138, wantScript: 0x4f, haveScript: 0x52, distance: 0xa}, + 9: {wantLang: 0x302, haveLang: 0x138, wantScript: 0x64, haveScript: 0x52, distance: 0xa}, + 10: {wantLang: 0x32f, haveLang: 0x138, wantScript: 0x6b, haveScript: 0x52, distance: 0xa}, + 11: {wantLang: 0x34f, haveLang: 0x138, wantScript: 0x20, haveScript: 0x52, distance: 0xa}, + 12: {wantLang: 0x393, haveLang: 0x138, wantScript: 0x75, haveScript: 0x52, distance: 0xa}, + 13: {wantLang: 0x39b, haveLang: 0x138, wantScript: 0x2f, haveScript: 0x52, distance: 0xa}, + 14: {wantLang: 0x3bc, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa}, + 15: {wantLang: 0x3f8, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa}, + 16: {wantLang: 0x40a, haveLang: 0x138, wantScript: 0xc1, haveScript: 0x52, distance: 0xa}, + 17: {wantLang: 0x44e, haveLang: 0x138, wantScript: 0xcd, haveScript: 0x52, distance: 0xa}, + 18: {wantLang: 0x45f, haveLang: 0x138, wantScript: 0xd0, haveScript: 0x52, distance: 0xa}, + 19: {wantLang: 0x46d, haveLang: 0x138, wantScript: 0x27, haveScript: 0x52, distance: 0xa}, + 20: {wantLang: 0x474, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa}, + 21: {wantLang: 0x4b2, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa}, + 22: {wantLang: 0x4ba, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa}, + 23: {wantLang: 0x510, haveLang: 0x138, wantScript: 0x37, haveScript: 0x52, distance: 0xa}, + 24: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x34, haveScript: 0x35, distance: 0xf}, + 25: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x35, haveScript: 0x34, distance: 0x13}, +} + +// Size: 90 bytes, 15 elements +var matchRegion = [15]regionIntelligibility{ + 0: {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4}, + 1: {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4}, + 2: {lang: 0x138, script: 0x0, group: 0x1, distance: 0x4}, + 3: {lang: 0x138, script: 0x0, group: 0x81, distance: 0x4}, + 4: {lang: 0x13d, script: 0x0, group: 0x3, distance: 0x4}, + 5: {lang: 0x13d, script: 0x0, group: 0x83, distance: 0x4}, + 6: {lang: 0x3be, script: 0x0, group: 0x3, distance: 0x4}, + 7: {lang: 0x3be, script: 0x0, group: 0x83, distance: 0x4}, + 8: {lang: 0x527, script: 0x35, group: 0x2, distance: 0x4}, + 9: {lang: 0x527, script: 0x35, group: 0x82, distance: 0x4}, + 10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5}, + 11: {lang: 0x138, script: 0x0, group: 0x80, distance: 0x5}, + 12: {lang: 0x13d, script: 0x0, group: 0x80, distance: 0x5}, + 13: {lang: 0x3be, script: 0x0, group: 0x80, distance: 0x5}, + 14: {lang: 0x527, script: 0x35, group: 0x80, distance: 0x5}, } // Size: 128 bytes, 32 elements @@ -2671,8 +3534,8 @@ var regionContainment = [32]uint32{ // 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{ +// Size: 357 bytes, 357 elements +var regionInclusion = [357]uint8{ // Entry 0 - 3F 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, @@ -2689,41 +3552,41 @@ var regionInclusion = [355]uint8{ 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, + 0x20, 0x37, 0x3a, 0x27, 0x3b, 0x2b, 0x20, 0x29, + 0x34, 0x26, 0x37, 0x25, 0x23, 0x27, 0x2b, 0x2c, // 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, + 0x22, 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, // 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, 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, // 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, + 0x20, 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, 0x20, 0x2f, 0x27, 0x3c, 0x22, + 0x25, 0x20, 0x27, 0x25, 0x25, 0x30, 0x3a, 0x28, // Entry 140 - 17F + 0x20, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x20, 0x20, 0x20, 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, + 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x2e, 0x22, + 0x31, 0x2e, 0x26, 0x2e, 0x20, } // regionInclusionBits is an array of bit vectors where every vector represents @@ -2779,13 +3642,13 @@ type parentRel struct { fromRegion []uint16 } -// Size: 412 bytes, 5 elements +// Size: 414 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}}, + 0: {lang: 0x138, 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, 0x72, 0x73, 0x74, 0x7a, 0x7b, 0x7e, 0x7f, 0x80, 0x82, 0x8b, 0x8c, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9e, 0x9f, 0xa3, 0xa6, 0xa8, 0xac, 0xb0, 0xb3, 0xb4, 0xbe, 0xc5, 0xc9, 0xca, 0xcb, 0xcd, 0xcf, 0xd1, 0xd4, 0xd5, 0xdc, 0xde, 0xdf, 0xe5, 0xe6, 0xe7, 0xea, 0xef, 0x106, 0x108, 0x109, 0x10a, 0x10c, 0x10d, 0x111, 0x116, 0x11a, 0x11c, 0x11e, 0x124, 0x128, 0x12b, 0x12c, 0x12e, 0x130, 0x138, 0x13b, 0x13e, 0x141, 0x160, 0x161, 0x163}}, + 1: {lang: 0x138, script: 0x0, maxScript: 0x52, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x71, 0xd8, 0x10b, 0x10e}}, + 2: {lang: 0x13d, script: 0x0, maxScript: 0x52, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x40, 0x47, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x88, 0x8e, 0xce, 0xd7, 0xe1, 0xe3, 0xeb, 0xf0, 0x119, 0x134, 0x135, 0x13a}}, + 3: {lang: 0x3be, script: 0x0, maxScript: 0x52, toRegion: 0xed, fromRegion: []uint16{0x29, 0x4d, 0x59, 0x85, 0x8a, 0xb6, 0xc5, 0xd0, 0x117, 0x125}}, + 4: {lang: 0x527, script: 0x35, maxScript: 0x35, toRegion: 0x8c, fromRegion: []uint16{0xc5}}, } -// Total table size 20315 bytes (19KiB); checksum: C16EF251 +// Total table size 26496 bytes (25KiB); checksum: 6E24B15A diff --git a/vendor/golang.org/x/text/language/testdata/localeMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/localeMatcherTest.txt new file mode 100644 index 0000000000..6568f2d3c0 --- /dev/null +++ b/vendor/golang.org/x/text/language/testdata/localeMatcherTest.txt @@ -0,0 +1,389 @@ +# TODO: this file has not yet been included in the main CLDR release. +# The intent is to verify this file against the Go implementation and then +# correct the cases and add merge in other interesting test cases. +# See TestCLDRCompliance in match_test.go, as well as the list of exceptions +# defined in the map skip below it, for the work in progress. + +# Data-driven test for the XLocaleMatcher. +# Format +# • Everything after "#" is a comment +# • Arguments are separated by ";". They are: + +# supported ; desired ; expected + +# • The supported may have the threshold distance reset as a first item, eg 50, en, fr +# A line starting with @debug will reach a statement in the test code where you can put a breakpoint for debugging +# The test code also supports reformatting this file, by setting the REFORMAT flag. + +################################################## +# testParentLocales + +# es-419, es-AR, and es-MX are in a cluster; es is in a different one + +es-419, es-ES ; es-AR ; es-419 +es-ES, es-419 ; es-AR ; es-419 + +es-419, es ; es-AR ; es-419 +es, es-419 ; es-AR ; es-419 + +es-MX, es ; es-AR ; es-MX +es, es-MX ; es-AR ; es-MX + +# en-GB, en-AU, and en-NZ are in a cluster; en in a different one + +en-GB, en-US ; en-AU ; en-GB +en-US, en-GB ; en-AU ; en-GB + +en-GB, en ; en-AU ; en-GB +en, en-GB ; en-AU ; en-GB + +en-NZ, en-US ; en-AU ; en-NZ +en-US, en-NZ ; en-AU ; en-NZ + +en-NZ, en ; en-AU ; en-NZ +en, en-NZ ; en-AU ; en-NZ + +# pt-AU and pt-PT in one cluster; pt-BR in another + +pt-PT, pt-BR ; pt-AO ; pt-PT +pt-BR, pt-PT ; pt-AO ; pt-PT + +pt-PT, pt ; pt-AO ; pt-PT +pt, pt-PT ; pt-AO ; pt-PT + +zh-MO, zh-TW ; zh-HK ; zh-MO +zh-TW, zh-MO ; zh-HK ; zh-MO + +zh-MO, zh-TW ; zh-HK ; zh-MO +zh-TW, zh-MO ; zh-HK ; zh-MO + +zh-MO, zh-CN ; zh-HK ; zh-MO +zh-CN, zh-MO ; zh-HK ; zh-MO + +zh-MO, zh ; zh-HK ; zh-MO +zh, zh-MO ; zh-HK ; zh-MO + +################################################## +# testChinese + +zh-CN, zh-TW, iw ; zh-Hant-TW ; zh-TW +zh-CN, zh-TW, iw ; zh-Hant ; zh-TW +zh-CN, zh-TW, iw ; zh-TW ; zh-TW +zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN +zh-CN, zh-TW, iw ; zh-CN ; zh-CN +zh-CN, zh-TW, iw ; zh ; zh-CN + +################################################## +# testenGB + +fr, en, en-GB, es-419, es-MX, es ; en-NZ ; en-GB +fr, en, en-GB, es-419, es-MX, es ; es-ES ; es +fr, en, en-GB, es-419, es-MX, es ; es-AR ; es-419 +fr, en, en-GB, es-419, es-MX, es ; es-MX ; es-MX + +################################################## +# testFallbacks + +91, en, hi ; sa ; hi + +################################################## +# testBasics + +fr, en-GB, en ; en-GB ; en-GB +fr, en-GB, en ; en ; en +fr, en-GB, en ; fr ; fr +fr, en-GB, en ; ja ; fr # return first if no match + +################################################## +# testFallback + +# check that script fallbacks are handled right + +zh-CN, zh-TW, iw ; zh-Hant ; zh-TW +zh-CN, zh-TW, iw ; zh ; zh-CN +zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN +zh-CN, zh-TW, iw ; zh-Hant-HK ; zh-TW +zh-CN, zh-TW, iw ; he-IT ; iw + +################################################## +# testSpecials + +# check that nearby languages are handled + +en, fil, ro, nn ; tl ; fil +en, fil, ro, nn ; mo ; ro +en, fil, ro, nn ; nb ; nn + +# make sure default works + +en, fil, ro, nn ; ja ; en + +################################################## +# testRegionalSpecials + +# verify that en-AU is closer to en-GB than to en (which is en-US) + +en, en-GB, es, es-419 ; es-MX ; es-419 +en, en-GB, es, es-419 ; en-AU ; en-GB +en, en-GB, es, es-419 ; es-ES ; es + +################################################## +# testHK + +# HK and MO are closer to each other for Hant than to TW + +zh, zh-TW, zh-MO ; zh-HK ; zh-MO +zh, zh-TW, zh-HK ; zh-MO ; zh-HK + +################################################## +# testMatch-exact + +# see localeDistance.txt + +################################################## +# testMatch-none + +# see localeDistance.txt + +################################################## +# testMatch-matchOnMazimized + +zh, zh-Hant ; und-TW ; zh-Hant # und-TW should be closer to zh-Hant than to zh +en-Hant-TW, und-TW ; zh-Hant ; und-TW # zh-Hant should be closer to und-TW than to en-Hant-TW +en-Hant-TW, und-TW ; zh ; und-TW # zh should be closer to und-TW than to en-Hant-TW + +################################################## +# testMatchGrandfatheredCode + +fr, i-klingon, en-Latn-US ; en-GB-oed ; en-Latn-US + +################################################## +# testGetBestMatchForList-exactMatch +fr, en-GB, ja, es-ES, es-MX ; ja, de ; ja + +################################################## +# testGetBestMatchForList-simpleVariantMatch +fr, en-GB, ja, es-ES, es-MX ; de, en-US ; en-GB # Intentionally avoiding a perfect-match or two candidates for variant matches. + +# Fallback. + +fr, en-GB, ja, es-ES, es-MX ; de, zh ; fr + +################################################## +# testGetBestMatchForList-matchOnMaximized +# Check that if the preference is maximized already, it works as well. + +en, ja ; ja-Jpan-JP, en-AU ; ja # Match for ja-Jpan-JP (maximized already) + +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. + +en, ja ; ja-JP, en-US ; ja # Match for ja-Jpan-JP (maximized already) + +# Check that if the preference is maximized already, it works as well. + +en, ja ; ja-Jpan-JP, en-US ; ja # Match for ja-Jpan-JP (maximized already) + +################################################## +# testGetBestMatchForList-noMatchOnMaximized +# Regression test for http://b/5714572 . +# de maximizes to de-DE. Pick the exact match for the secondary language instead. +en, de, fr, ja ; de-CH, fr ; de + +################################################## +# testBestMatchForTraditionalChinese + +# Scenario: An application that only supports Simplified Chinese (and some other languages), +# but does not support Traditional Chinese. zh-Hans-CN could be replaced with zh-CN, zh, or +# zh-Hans, it wouldn't make much of a difference. + +# The script distance (simplified vs. traditional Han) is considered small enough +# to be an acceptable match. The regional difference is considered almost insignificant. + +fr, zh-Hans-CN, en-US ; zh-TW ; zh-Hans-CN +fr, zh-Hans-CN, en-US ; zh-Hant ; zh-Hans-CN + +# For geo-political reasons, you might want to avoid a zh-Hant -> zh-Hans match. +# In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is requested, you can +# change your call to getBestMatch to include a 2nd language preference. +# "en" is a better match since its distance to "en-US" is closer than the distance +# from "zh-TW" to "zh-CN" (script distance). + +fr, zh-Hans-CN, en-US ; zh-TW, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hant-CN, en, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hans, en ; zh-Hans-CN + +################################################## +# testUndefined +# When the undefined language doesn't match anything in the list, +# getBestMatch returns the default, as usual. + +it, fr ; und ; it + +# When it *does* occur in the list, bestMatch returns it, as expected. +it, und ; und ; und + +# The unusual part: max("und") = "en-Latn-US", and since matching is based on maximized +# tags, the undefined language would normally match English. But that would produce the +# counterintuitive results that getBestMatch("und", XLocaleMatcher("it,en")) would be "en", and +# getBestMatch("en", XLocaleMatcher("it,und")) would be "und". + +# To avoid that, we change the matcher's definitions of max +# so that max("und")="und". That produces the following, more desirable +# results: + +it, en ; und ; it +it, und ; en ; it + +################################################## +# testGetBestMatch-regionDistance + +es-AR, es ; es-MX ; es-AR +fr, en, en-GB ; en-CA ; en-GB +de-AT, de-DE, de-CH ; de ; de-DE + +################################################## +# testAsymmetry + +mul, nl ; af ; nl # af => nl +mul, af ; nl ; mul # but nl !=> af + +################################################## +# testGetBestMatchForList-matchOnMaximized2 + +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. + +fr, en-GB, ja, es-ES, es-MX ; ja-JP, en-GB ; ja # Match for ja-JP, with likely region subtag + +# Check that if the preference is maximized already, it works as well. + +fr, en-GB, ja, es-ES, es-MX ; ja-Jpan-JP, en-GB ; ja # Match for ja-Jpan-JP (maximized already) + +################################################## +# testGetBestMatchForList-closeEnoughMatchOnMaximized + +en-GB, en, de, fr, ja ; de-CH, fr ; de +en-GB, en, de, fr, ja ; en-US, ar, nl, de, ja ; en + +################################################## +# testGetBestMatchForPortuguese + +# pt might be supported and not pt-PT + +# European user who prefers Spanish over Brazillian Portuguese as a fallback. + +pt-PT, pt-BR, es, es-419 ; pt-PT, es, pt ; pt-PT +pt-PT, pt, es, es-419 ; pt-PT, es, pt ; pt-PT # pt implicit + +# Brazillian user who prefers South American Spanish over European Portuguese as a fallback. +# The asymmetry between this case and above is because it's "pt-PT" that's missing between the +# matchers as "pt-BR" is a much more common language. + +pt-PT, pt-BR, es, es-419 ; pt, es-419, pt-PT ; pt-BR +pt-PT, pt-BR, es, es-419 ; pt-PT, es, pt ; pt-PT +pt-PT, pt, es, es-419 ; pt-PT, es, pt ; pt-PT +pt-PT, pt, es, es-419 ; pt, es-419, pt-PT ; pt + +pt-BR, es, es-419 ; pt, es-419, pt-PT ; pt-BR + +# Code that adds the user's country can get "pt-US" for a user's language. +# That should fall back to "pt-BR". + +pt-PT, pt-BR, es, es-419 ; pt-US, pt-PT ; pt-BR +pt-PT, pt, es, es-419 ; pt-US, pt-PT, pt ; pt # pt-BR implicit + +################################################## +# testVariantWithScriptMatch 1 and 2 + +fr, en, sv ; en-GB ; en +fr, en, sv ; en-GB ; en +en, sv ; en-GB, sv ; en + +################################################## +# testLongLists + +en, sv ; sv ; sv +af, am, ar, az, be, bg, bn, bs, ca, cs, cy, cy, da, de, el, en, en-GB, es, es-419, et, eu, fa, fi, fil, fr, ga, gl, gu, hi, hr, hu, hy, id, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, ne, nl, no, pa, pl, pt, pt-PT, ro, ru, si, sk, sl, sq, sr, sr-Latn, sv, sw, ta, te, th, tr, uk, ur, uz, vi, zh-CN, zh-TW, zu ; sv ; sv +af, af-NA, af-ZA, agq, agq-CM, ak, ak-GH, am, am-ET, ar, ar-001, ar-AE, ar-BH, ar-DJ, ar-DZ, ar-EG, ar-EH, ar-ER, ar-IL, ar-IQ, ar-JO, ar-KM, ar-KW, ar-LB, ar-LY, ar-MA, ar-MR, ar-OM, ar-PS, ar-QA, ar-SA, ar-SD, ar-SO, ar-SS, ar-SY, ar-TD, ar-TN, ar-YE, as, as-IN, asa, asa-TZ, ast, ast-ES, az, az-Cyrl, az-Cyrl-AZ, az-Latn, az-Latn-AZ, bas, bas-CM, be, be-BY, bem, bem-ZM, bez, bez-TZ, bg, bg-BG, bm, bm-ML, bn, bn-BD, bn-IN, bo, bo-CN, bo-IN, br, br-FR, brx, brx-IN, bs, bs-Cyrl, bs-Cyrl-BA, bs-Latn, bs-Latn-BA, ca, ca-AD, ca-ES, ca-ES-VALENCIA, ca-FR, ca-IT, ce, ce-RU, cgg, cgg-UG, chr, chr-US, ckb, ckb-IQ, ckb-IR, cs, cs-CZ, cu, cu-RU, cy, cy-GB, da, da-DK, da-GL, dav, dav-KE, de, de-AT, de-BE, de-CH, de-DE, de-LI, de-LU, dje, dje-NE, dsb, dsb-DE, dua, dua-CM, dyo, dyo-SN, dz, dz-BT, ebu, ebu-KE, ee, ee-GH, ee-TG, el, el-CY, el-GR, en, en-001, en-150, en-AG, en-AI, en-AS, en-AT, en-AU, en-BB, en-BE, en-BI, en-BM, en-BS, en-BW, en-BZ, en-CA, en-CC, en-CH, en-CK, en-CM, en-CX, en-CY, en-DE, en-DG, en-DK, en-DM, en-ER, en-FI, en-FJ, en-FK, en-FM, en-GB, en-GD, en-GG, en-GH, en-GI, en-GM, en-GU, en-GY, en-HK, en-IE, en-IL, en-IM, en-IN, en-IO, en-JE, en-JM, en-KE, en-KI, en-KN, en-KY, en-LC, en-LR, en-LS, en-MG, en-MH, en-MO, en-MP, en-MS, en-MT, en-MU, en-MW, en-MY, en-NA, en-NF, en-NG, en-NL, en-NR, en-NU, en-NZ, en-PG, en-PH, en-PK, en-PN, en-PR, en-PW, en-RW, en-SB, en-SC, en-SD, en-SE, en-SG, en-SH, en-SI, en-SL, en-SS, en-SX, en-SZ, en-TC, en-TK, en-TO, en-TT, en-TV, en-TZ, en-UG, en-UM, en-US, en-US-POSIX, en-VC, en-VG, en-VI, en-VU, en-WS, en-ZA, en-ZM, en-ZW, eo, eo-001, es, es-419, es-AR, es-BO, es-CL, es-CO, es-CR, es-CU, es-DO, es-EA, es-EC, es-ES, es-GQ, es-GT, es-HN, es-IC, es-MX, es-NI, es-PA, es-PE, es-PH, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et, et-EE, eu, eu-ES, ewo, ewo-CM, fa, fa-AF, fa-IR, ff, ff-CM, ff-GN, ff-MR, ff-SN, fi, fi-FI, fil, fil-PH, fo, fo-DK, fo-FO, fr, fr-BE, fr-BF, fr-BI, fr-BJ, fr-BL, fr-CA, fr-CD, fr-CF, fr-CG, fr-CH, fr-CI, fr-CM, fr-DJ, fr-DZ, fr-FR, fr-GA, fr-GF, fr-GN, fr-GP, fr-GQ, fr-HT, fr-KM, fr-LU, fr-MA, fr-MC, fr-MF, fr-MG, fr-ML, fr-MQ, fr-MR, fr-MU, fr-NC, fr-NE, fr-PF, fr-PM, fr-RE, fr-RW, fr-SC, fr-SN, fr-SY, fr-TD, fr-TG, fr-TN, fr-VU, fr-WF, fr-YT, fur, fur-IT, fy, fy-NL, ga, ga-IE, gd, gd-GB, gl, gl-ES, gsw, gsw-CH, gsw-FR, gsw-LI, gu, gu-IN, guz, guz-KE, gv, gv-IM, ha, ha-GH, ha-NE, ha-NG, haw, haw-US, he, he-IL, hi, hi-IN, hr, hr-BA, hr-HR, hsb, hsb-DE, hu, hu-HU, hy, hy-AM, id, id-ID, ig, ig-NG, ii, ii-CN, is, is-IS, it, it-CH, it-IT, it-SM, ja, ja-JP, jgo, jgo-CM, jmc, jmc-TZ, ka, ka-GE, kab, kab-DZ, kam, kam-KE, kde, kde-TZ, kea, kea-CV, khq, khq-ML, ki, ki-KE, kk, kk-KZ, kkj, kkj-CM, kl, kl-GL, kln, kln-KE, km, km-KH, kn, kn-IN, ko, ko-KP, ko-KR, kok, kok-IN, ks, ks-IN, ksb, ksb-TZ, ksf, ksf-CM, ksh, ksh-DE, kw, kw-GB, ky, ky-KG, lag, lag-TZ, lb, lb-LU, lg, lg-UG, lkt, lkt-US, ln, ln-AO, ln-CD, ln-CF, ln-CG, lo, lo-LA, lrc, lrc-IQ, lrc-IR, lt, lt-LT, lu, lu-CD, luo, luo-KE, luy, luy-KE, lv, lv-LV, mas, mas-KE, mas-TZ, mer, mer-KE, mfe, mfe-MU, mg, mg-MG, mgh, mgh-MZ, mgo, mgo-CM, mk, mk-MK, ml, ml-IN, mn, mn-MN, mr, mr-IN, ms, ms-BN, ms-MY, ms-SG, mt, mt-MT, mua, mua-CM, my, my-MM, mzn, mzn-IR, naq, naq-NA, nb, nb-NO, nb-SJ, nd, nd-ZW, ne, ne-IN, ne-NP, nl, nl-AW, nl-BE, nl-BQ, nl-CW, nl-NL, nl-SR, nl-SX, nmg, nmg-CM, nn, nn-NO, nnh, nnh-CM, nus, nus-SS, nyn, nyn-UG, om, om-ET, om-KE, or, or-IN, os, os-GE, os-RU, pa, pa-Arab, pa-Arab-PK, pa-Guru, pa-Guru-IN, pl, pl-PL, prg, prg-001, ps, ps-AF, pt, pt-AO, pt-BR, pt-CV, pt-GW, pt-MO, pt-MZ, pt-PT, pt-ST, pt-TL, qu, qu-BO, qu-EC, qu-PE, rm, rm-CH, rn, rn-BI, ro, ro-MD, ro-RO, rof, rof-TZ, root, ru, ru-BY, ru-KG, ru-KZ, ru-MD, ru-RU, ru-UA, rw, rw-RW, rwk, rwk-TZ, sah, sah-RU, saq, saq-KE, sbp, sbp-TZ, se, se-FI, se-NO, se-SE, seh, seh-MZ, ses, ses-ML, sg, sg-CF, shi, shi-Latn, shi-Latn-MA, shi-Tfng, shi-Tfng-MA, si, si-LK, sk, sk-SK, sl, sl-SI, smn, smn-FI, sn, sn-ZW, so, so-DJ, so-ET, so-KE, so-SO, sq, sq-AL, sq-MK, sq-XK, sr, sr-Cyrl, sr-Cyrl-BA, sr-Cyrl-ME, sr-Cyrl-RS, sr-Cyrl-XK, sr-Latn, sr-Latn-BA, sr-Latn-ME, sr-Latn-RS, sr-Latn-XK, sv, sv-AX, sv-FI, sv-SE, sw, sw-CD, sw-KE, sw-TZ, sw-UG, ta, ta-IN, ta-LK, ta-MY, ta-SG, te, te-IN, teo, teo-KE, teo-UG, th, th-TH, ti, ti-ER, ti-ET, tk, tk-TM, to, to-TO, tr, tr-CY, tr-TR, twq, twq-NE, tzm, tzm-MA, ug, ug-CN, uk, uk-UA, ur, ur-IN, ur-PK, uz, uz-Arab, uz-Arab-AF, uz-Cyrl, uz-Cyrl-UZ, uz-Latn, uz-Latn-UZ, vai, vai-Latn, vai-Latn-LR, vai-Vaii, vai-Vaii-LR, vi, vi-VN, vo, vo-001, vun, vun-TZ, wae, wae-CH, xog, xog-UG, yav, yav-CM, yi, yi-001, yo, yo-BJ, yo-NG, zgh, zgh-MA, zh, zh-Hans, zh-Hans-CN, zh-Hans-HK, zh-Hans-MO, zh-Hans-SG, zh-Hant, zh-Hant-HK, zh-Hant-MO, zh-Hant-TW, zu, zu-ZA ; sv ; sv + +################################################## +# test8288 + +it, en ; und ; it +it, en ; und, en ; en + +# examples from +# http://unicode.org/repos/cldr/tags/latest/common/bcp47/ +# http://unicode.org/repos/cldr/tags/latest/common/validity/variant.xml + +################################################## +# testUnHack + +en-NZ, en-IT ; en-US ; en-NZ + +################################################## +# testEmptySupported => null + ; en ; null + +################################################## +# testVariantsAndExtensions +################################################## +# tests the .combine() method + +und, fr ; fr-BE-fonipa ; fr ; fr-BE-fonipa +und, fr-CA ; fr-BE-fonipa ; fr-CA ; fr-BE-fonipa +und, fr-fonupa ; fr-BE-fonipa ; fr-fonupa ; fr-BE-fonipa +und, no ; nn-BE-fonipa ; no ; no-BE-fonipa +und, en-GB-u-sd-gbsct ; en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin ; en-GB-u-sd-gbsct ; en-GB-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin + +en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; fr-PSCRACK ; fr-PSCRACK +en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; fr ; fr-PSCRACK +en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; de-CH ; de-PSCRACK + +################################################## +# testClusters +# we favor es-419 over others in cluster. Clusters: es- {ES, MA, EA} {419, AR, MX} + +und, es, es-MA, es-MX, es-419 ; es-AR ; es-419 +und, es-MA, es, es-419, es-MX ; es-AR ; es-419 +und, es, es-MA, es-MX, es-419 ; es-EA ; es +und, es-MA, es, es-419, es-MX ; es-EA ; es + +# of course, fall back to within cluster + +und, es, es-MA, es-MX ; es-AR ; es-MX +und, es-MA, es, es-MX ; es-AR ; es-MX +und, es-MA, es-MX, es-419 ; es-EA ; es-MA +und, es-MA, es-419, es-MX ; es-EA ; es-MA + +# we favor es-GB over others in cluster. Clusters: en- {US, GU, VI} {GB, IN, ZA} + +und, en, en-GU, en-IN, en-GB ; en-ZA ; en-GB +und, en-GU, en, en-GB, en-IN ; en-ZA ; en-GB +und, en, en-GU, en-IN, en-GB ; en-VI ; en +und, en-GU, en, en-GB, en-IN ; en-VI ; en + +# of course, fall back to within cluster + +und, en, en-GU, en-IN ; en-ZA ; en-IN +und, en-GU, en, en-IN ; en-ZA ; en-IN +und, en-GU, en-IN, en-GB ; en-VI ; en-GU +und, en-GU, en-GB, en-IN ; en-VI ; en-GU + +################################################## +# testThreshold +@Threshold=60 + +50, und, fr-CA-fonupa ; fr-BE-fonipa ; fr-CA-fonupa ; fr-BE-fonipa +50, und, fr-Cyrl-CA-fonupa ; fr-BE-fonipa ; fr-Cyrl-CA-fonupa ; fr-Cyrl-BE-fonipa + +@Threshold=-1 # restore + +################################################## +# testScriptFirst +@DistanceOption=SCRIPT_FIRST +@debug + +ru, fr ; zh, pl ; fr +ru, fr ; zh-Cyrl, pl ; ru +hr, en-Cyrl; sr ; en-Cyrl +da, ru, hr; sr ; ru \ No newline at end of file diff --git a/vendor/golang.org/x/text/message/catalog.go b/vendor/golang.org/x/text/message/catalog.go index 41c31f4c65..2f65b4bbcc 100644 --- a/vendor/golang.org/x/text/message/catalog.go +++ b/vendor/golang.org/x/text/message/catalog.go @@ -8,106 +8,21 @@ package message // Documentation and method names will reflect this by using the exported name. import ( - "sync" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/format" "golang.org/x/text/language" + "golang.org/x/text/message/catalog" ) // DefaultCatalog is used by SetString. -var DefaultCatalog *Catalog = newCatalog() - -// SetString calls SetString on the default Catalog. -func SetString(tag language.Tag, key string, msg string) error { - return DefaultCatalog.SetString(tag, key, msg) -} - -// TODO: -// // SetSelect is a shorthand for DefaultCatalog.SetSelect. -// func SetSelect(tag language.Tag, key string, s ...format.Statement) error { -// return DefaultCatalog.SetSelect(tag, key, s...) -// } - -type msgMap map[string]format.Statement +var DefaultCatalog *catalog.Catalog = defaultCatalog -// A Catalog holds translations for messages for supported languages. -type Catalog struct { - index map[language.Tag]msgMap +var defaultCatalog = catalog.New() - mutex sync.Mutex // For locking all operations. -} - -// Printer creates a Printer that uses c. -func (c *Catalog) Printer(tag language.Tag) *Printer { - // TODO: pre-create indexes for tag lookup. - return &Printer{ - tag: tag, - cat: c, - } -} - -// NewCatalog returns a new Catalog. If a message is not present in a Catalog, -// the fallback Catalogs will be used in order as an alternative source. -func newCatalog(fallback ...*Catalog) *Catalog { - // TODO: implement fallback. - return &Catalog{ - index: map[language.Tag]msgMap{}, - } -} - -// Languages returns a slice of all languages for which the Catalog contains -// variants. -func (c *Catalog) Languages() []language.Tag { - c.mutex.Lock() - defer c.mutex.Unlock() - - tags := []language.Tag{} - for t, _ := range c.index { - tags = append(tags, t) - } - internal.SortTags(tags) - return tags -} - -// SetString sets the translation for the given language and key. -func (c *Catalog) SetString(tag language.Tag, key string, msg string) error { - return c.set(tag, key, format.String(msg)) -} - -func (c *Catalog) get(tag language.Tag, key string) (msg string, ok bool) { - c.mutex.Lock() - defer c.mutex.Unlock() - - for ; ; tag = tag.Parent() { - if msgs, ok := c.index[tag]; ok { - if statement, ok := msgs[key]; ok { - // TODO: use type switches when we implement selecting. - msg := string(statement.(format.String)) - return msg, true - } - } - if tag == language.Und { - break - } - } - return "", false +// SetString calls SetString on the initial default Catalog. +func SetString(tag language.Tag, key string, msg string) error { + return defaultCatalog.SetString(tag, key, msg) } -func (c *Catalog) set(tag language.Tag, key string, s ...format.Statement) error { - if len(s) != 1 { - // TODO: handle errors properly when we process statement sequences. - panic("statement sequence should be of length 1") - } - - c.mutex.Lock() - defer c.mutex.Unlock() - - m := c.index[tag] - if m == nil { - m = map[string]format.Statement{} - c.index[tag] = m - } - m[key] = s[0] - return nil +// Set calls Set on the initial default Catalog. +func Set(tag language.Tag, key string, msg ...catalog.Message) error { + return defaultCatalog.Set(tag, key, msg...) } diff --git a/vendor/golang.org/x/text/message/catalog/catalog.go b/vendor/golang.org/x/text/message/catalog/catalog.go new file mode 100644 index 0000000000..957444c107 --- /dev/null +++ b/vendor/golang.org/x/text/message/catalog/catalog.go @@ -0,0 +1,292 @@ +// Copyright 2017 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 catalog defines collections of translated format strings. +// +// This package mostly defines types for populating catalogs with messages. The +// catmsg package contains further definitions for creating custom message and +// dictionary types as well as packages that use Catalogs. +// +// Package catalog defines various interfaces: Dictionary, Loader, and Message. +// A Dictionary maintains a set of translations of format strings for a single +// language. The Loader interface defines a source of dictionaries. A +// translation of a format string is represented by a Message. +// +// +// Catalogs +// +// A Catalog defines a programmatic interface for setting message translations. +// It maintains a set of per-language dictionaries with translations for a set +// of keys. For message translation to function properly, a translation should +// be defined for each key for each supported language. A dictionary may be +// underspecified, though, if there is a parent language that already defines +// the key. For example, a Dictionary for "en-GB" could leave out entries that +// are identical to those in a dictionary for "en". +// +// +// Messages +// +// A Message is a format string which varies on the value of substitution +// variables. For instance, to indicate the number of results one could want "no +// results" if there are none, "1 result" if there is 1, and "%d results" for +// any other number. Catalog is agnostic to the kind of format strings that are +// used: for instance, messages can follow either the printf-style substitution +// from package fmt or use templates. +// +// A Message does not substitute arguments in the format string. This job is +// reserved for packages that render strings, such as message, that use Catalogs +// to selected string. This separation of concerns allows Catalog to be used to +// store any kind of formatting strings. +// +// +// Selecting messages based on linguistic features of substitution arguments +// +// Messages may vary based on any linguistic features of the argument values. +// The most common one is plural form, but others exist. +// +// Selection messages are provided in packages that provide support for a +// specific linguistic feature. The following snippet uses plural.Select: +// +// catalog.Set(language.English, "You are %d minute(s) late.", +// plural.Select(1, +// "one", "You are 1 minute late.", +// "other", "You are %d minutes late.")) +// +// In this example, a message is stored in the Catalog where one of two messages +// is selected based on the first argument, a number. The first message is +// selected if the argument is singular (identified by the selector "one") and +// the second message is selected in all other cases. The selectors are defined +// by the plural rules defined in CLDR. The selector "other" is special and will +// always match. Each language always defines one of the linguistic categories +// to be "other." For English, singular is "one" and plural is "other". +// +// Selects can be nested. This allows selecting sentences based on features of +// multiple arguments or multiple linguistic properties of a single argument. +// +// +// String interpolation +// +// There is often a lot of commonality between the possible variants of a +// message. For instance, in the example above the word "minute" varies based on +// the plural catogory of the argument, but the rest of the sentence is +// identical. Using interpolation the above message can be rewritten as: +// +// catalog.Set(language.English, "You are %d minute(s) late.", +// catalog.Var("minutes", +// plural.Select(1, "one", "minute", "other", "minutes")), +// catalog.String("You are %[1]d ${minutes} late.")) +// +// Var is defined to return the variable name if the message does not yield a +// match. This allows us to further simplify this snippet to +// +// catalog.Set(language.English, "You are %d minute(s) late.", +// catalog.Var("minutes", plural.Select(1, "one", "minute")), +// catalog.String("You are %d ${minutes} late.")) +// +// Overall this is still only a minor improvement, but things can get a lot more +// unwieldy if more than one linguistic feature is used to determine a message +// variant. Consider the following example: +// +// // argument 1: list of hosts, argument 2: list of guests +// catalog.Set(language.English, "%[1]v invite(s) %[2]v to their party.", +// catalog.Var("their", +// plural.Select(1, +// "one", gender.Select(1, "female", "her", "other", "his"))), +// catalog.Var("invites", plural.Select(1, "one", "invite")) +// catalog.String("%[1]v ${invites} %[2]v to ${their} party.")), +// +// Without variable substitution, this would have to be written as +// +// // argument 1: list of hosts, argument 2: list of guests +// catalog.Set(language.English, "%[1]v invite(s) %[2]v to their party.", +// plural.Select(1, +// "one", gender.Select(1, +// "female", "%[1]v invites %[2]v to her party." +// "other", "%[1]v invites %[2]v to his party."), +// "other", "%[1]v invites %[2]v to their party.") +// +// Not necessarily shorter, but using variables there is less duplication and +// the messages are more maintenance friendly. Moreover, languages may have up +// to six plural forms. This makes the use of variables more welcome. +// +// Different messages using the same inflections can reuse variables by moving +// them to macros. Using macros we can rewrite the message as: +// +// // argument 1: list of hosts, argument 2: list of guests +// catalog.SetString(language.English, "%[1]v invite(s) %[2]v to their party.", +// "%[1]v ${invites(1)} %[2]v to ${their(1)} party.") +// +// Where the following macros were defined separately. +// +// catalog.SetMacro(language.English, "invites", plural.Select(1, "one", "invite")) +// catalog.SetMacro(language.English, "their", plural.Select(1, +// "one", gender.Select(1, "female", "her", "other", "his"))), +// +// Placeholders use parentheses and the arguments to invoke a macro. +// +// +// Looking up messages +// +// Message lookup using Catalogs is typically only done by specialized packages +// and is not something the user should be concerned with. For instance, to +// express the tardiness of a user using the related message we defined earlier, +// the user may use the package message like so: +// +// p := message.NewPrinter(language.English) +// p.Printf("You are %d minute(s) late.", 5) +// +// Which would print: +// You are 5 minutes late. +// +// +// This package is UNDER CONSTRUCTION and its API may change. +package catalog // import "golang.org/x/text/message/catalog" + +// TODO: +// Some way to freeze a catalog. +// - Locking on each lockup turns out to be about 50% of the total running time +// for some of the benchmarks in the message package. +// Consider these: +// - Sequence type to support sequences in user-defined messages. +// - Garbage collection: Remove dictionaries that can no longer be reached +// as other dictionaries have been added that cover all possible keys. + +import ( + "errors" + "fmt" + + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/language" +) + +// A Catalog holds translations for messages for supported languages. +type Catalog struct { + options + + index store + macros store +} + +type options struct{} + +// An Option configures Catalog behavior. +type Option func(*options) + +// TODO: +// // Catalogs specifies one or more sources for a Catalog. +// // Lookups are in order. +// // This can be changed inserting a Catalog used for setting, which implements +// // Loader, used for setting in the chain. +// func Catalogs(d ...Loader) Option { +// return nil +// } +// +// func Delims(start, end string) Option {} +// +// func Dict(tag language.Tag, d ...Dictionary) Option + +// New returns a new Catalog. +func New(opts ...Option) *Catalog { + c := &Catalog{} + for _, o := range opts { + o(&c.options) + } + return c +} + +// Languages returns all languages for which the Catalog contains variants. +func (c *Catalog) Languages() []language.Tag { + return c.index.languages() +} + +// SetString is shorthand for Set(tag, key, String(msg)). +func (c *Catalog) SetString(tag language.Tag, key string, msg string) error { + return c.set(tag, key, &c.index, String(msg)) +} + +// Set sets the translation for the given language and key. +// +// When evaluation this message, the first Message in the sequence to msgs to +// evaluate to a string will be the message returned. +func (c *Catalog) Set(tag language.Tag, key string, msg ...Message) error { + return c.set(tag, key, &c.index, msg...) +} + +// SetMacro defines a Message that may be substituted in another message. +// The arguments to a macro Message are passed as arguments in the +// placeholder the form "${foo(arg1, arg2)}". +func (c *Catalog) SetMacro(tag language.Tag, name string, msg ...Message) error { + return c.set(tag, name, &c.macros, msg...) +} + +// ErrNotFound indicates there was no message for the given key. +var ErrNotFound = errors.New("catalog: message not found") + +// A Message holds a collection of translations for the same phrase that may +// vary based on the values of substitution arguments. +type Message interface { + catmsg.Message +} + +// String specifies a plain message string. It can be used as fallback if no +// other strings match or as a simple standalone message. +// +// It is an error to pass more than one String in a message sequence. +func String(name string) Message { + return catmsg.String(name) +} + +// Var sets a variable that may be substituted in formatting patterns using +// named substitution of the form "${name}". The name argument is used as a +// fallback if the statements do not produce a match. The statement sequence may +// not contain any Var calls. +// +// The name passed to a Var must be unique within message sequence. +func Var(name string, msg ...Message) Message { + return &catmsg.Var{Name: name, Message: firstInSequence(msg)} +} + +// firstInSequence is a message type that prints the first message in the +// sequence that resolves to a match for the given substitution arguments. +type firstInSequence []Message + +func (s firstInSequence) Compile(e *catmsg.Encoder) error { + e.EncodeMessageType(catmsg.First) + err := catmsg.ErrIncomplete + for i, m := range s { + if err == nil { + return fmt.Errorf("catalog: message argument %d is complete and blocks subsequent messages", i-1) + } + err = e.EncodeMessage(m) + } + return err +} + +// Context returns a Context for formatting messages. +// Only one Message may be formatted per context at any given time. +func (c *Catalog) Context(tag language.Tag, r catmsg.Renderer) *Context { + return &Context{ + cat: c, + tag: tag, + dec: catmsg.NewDecoder(tag, r, &dict{&c.macros, tag}), + } +} + +// A Context is used for evaluating Messages. +// Only one Message may be formatted per context at any given time. +type Context struct { + cat *Catalog + tag language.Tag + dec *catmsg.Decoder +} + +// Execute looks up and executes the message with the given key. +// It returns ErrNotFound if no message could be found in the index. +func (c *Context) Execute(key string) error { + data, ok := c.cat.index.lookup(c.tag, key) + if !ok { + return ErrNotFound + } + return c.dec.Execute(data) +} diff --git a/vendor/golang.org/x/text/message/catalog/catalog_test.go b/vendor/golang.org/x/text/message/catalog/catalog_test.go new file mode 100644 index 0000000000..97ab4d88ac --- /dev/null +++ b/vendor/golang.org/x/text/message/catalog/catalog_test.go @@ -0,0 +1,194 @@ +// Copyright 2017 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 catalog + +import ( + "bytes" + "fmt" + "reflect" + "testing" + + "golang.org/x/text/internal" + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/language" +) + +type entry struct { + tag, key string + msg interface{} +} + +var testCases = []struct { + desc string + cat []entry + lookup []entry +}{{ + desc: "empty catalog", + lookup: []entry{ + {"en", "key", ""}, + {"en", "", ""}, + {"nl", "", ""}, + }, +}, { + desc: "one entry", + cat: []entry{ + {"en", "hello", "Hello!"}, + }, + lookup: []entry{ + {"und", "hello", ""}, + {"nl", "hello", ""}, + {"en", "hello", "Hello!"}, + {"en-US", "hello", "Hello!"}, + {"en-GB", "hello", "Hello!"}, + {"en-oxendict", "hello", "Hello!"}, + {"en-oxendict-u-ms-metric", "hello", "Hello!"}, + }, +}, { + desc: "hierarchical languages", + cat: []entry{ + {"en", "hello", "Hello!"}, + {"en-GB", "hello", "Hellø!"}, + {"en-US", "hello", "Howdy!"}, + {"en", "greetings", "Greetings!"}, + }, + lookup: []entry{ + {"und", "hello", ""}, + {"nl", "hello", ""}, + {"en", "hello", "Hello!"}, + {"en-US", "hello", "Howdy!"}, + {"en-GB", "hello", "Hellø!"}, + {"en-oxendict", "hello", "Hello!"}, + {"en-US-oxendict-u-ms-metric", "hello", "Howdy!"}, + + {"und", "greetings", ""}, + {"nl", "greetings", ""}, + {"en", "greetings", "Greetings!"}, + {"en-US", "greetings", "Greetings!"}, + {"en-GB", "greetings", "Greetings!"}, + {"en-oxendict", "greetings", "Greetings!"}, + {"en-US-oxendict-u-ms-metric", "greetings", "Greetings!"}, + }, +}, { + desc: "variables", + cat: []entry{ + {"en", "hello %s", []Message{ + Var("person", String("Jane")), + String("Hello ${person}!"), + }}, + {"en", "hello error", []Message{ + Var("person", String("Jane")), + noMatchMessage{}, // trigger sequence path. + String("Hello ${person."), + }}, + {"en", "fallback to var value", []Message{ + Var("you", noMatchMessage{}, noMatchMessage{}), + String("Hello ${you}."), + }}, + {"en", "scopes", []Message{ + Var("person1", String("Mark")), + Var("person2", String("Jane")), + Var("couple", + Var("person1", String("Joe")), + String("${person1} and ${person2}")), + String("Hello ${couple}."), + }}, + {"en", "missing var", String("Hello ${missing}.")}, + }, + lookup: []entry{ + {"en", "hello %s", "Hello Jane!"}, + {"en", "hello error", "Hello $!(MISSINGBRACE)"}, + {"en", "fallback to var value", "Hello you."}, + {"en", "scopes", "Hello Joe and Jane."}, + {"en", "missing var", "Hello missing."}, + }, +}, { + desc: "macros", + cat: []entry{ + {"en", "macro1", String("Hello ${macro1(1)}.")}, + {"en", "macro2", String("Hello ${ macro1(2) }!")}, + {"en", "macroWS", String("Hello ${ macro1( 2 ) }!")}, + {"en", "missing", String("Hello ${ missing(1 }.")}, + {"en", "badnum", String("Hello ${ badnum(1b) }.")}, + {"en", "undefined", String("Hello ${ undefined(1) }.")}, + {"en", "macroU", String("Hello ${ macroU(2) }!")}, + }, + lookup: []entry{ + {"en", "macro1", "Hello Joe."}, + {"en", "macro2", "Hello Joe!"}, + {"en-US", "macroWS", "Hello Joe!"}, + {"en-NL", "missing", "Hello $!(MISSINGPAREN)."}, + {"en", "badnum", "Hello $!(BADNUM)."}, + {"en", "undefined", "Hello undefined."}, + {"en", "macroU", "Hello macroU!"}, + }}} + +func initCat(entries []entry) (*Catalog, []language.Tag) { + tags := []language.Tag{} + cat := New() + for _, e := range entries { + tag := language.MustParse(e.tag) + tags = append(tags, tag) + switch msg := e.msg.(type) { + case string: + cat.SetString(tag, e.key, msg) + case Message: + cat.Set(tag, e.key, msg) + case []Message: + cat.Set(tag, e.key, msg...) + } + } + return cat, internal.UniqueTags(tags) +} + +func TestCatalog(t *testing.T) { + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s", tc.desc), func(t *testing.T) { + cat, wantTags := initCat(tc.cat) + cat.SetMacro(language.English, "macro1", String("Joe")) + cat.SetMacro(language.Und, "macro2", String("${macro1(1)}")) + cat.SetMacro(language.English, "macroU", noMatchMessage{}) + + if got := cat.Languages(); !reflect.DeepEqual(got, wantTags) { + t.Errorf("%s:Languages: got %v; want %v", tc.desc, got, wantTags) + } + + for _, e := range tc.lookup { + t.Run(fmt.Sprintf("%s/%s", e.tag, e.key), func(t *testing.T) { + tag := language.MustParse(e.tag) + buf := testRenderer{} + ctx := cat.Context(tag, &buf) + want := e.msg.(string) + err := ctx.Execute(e.key) + gotFound := err != ErrNotFound + wantFound := want != "" + if gotFound != wantFound { + t.Fatalf("err: got %v (%v); want %v", gotFound, err, wantFound) + } + if got := buf.buf.String(); got != want { + t.Errorf("Lookup:\ngot %q\nwant %q", got, want) + } + }) + } + }) + } +} + +type testRenderer struct { + buf bytes.Buffer +} + +func (f *testRenderer) Arg(i int) interface{} { return nil } +func (f *testRenderer) Render(s string) { f.buf.WriteString(s) } + +var msgNoMatch = catmsg.Register("no match", func(d *catmsg.Decoder) bool { + return false // no match +}) + +type noMatchMessage struct{} + +func (noMatchMessage) Compile(e *catmsg.Encoder) error { + e.EncodeMessageType(msgNoMatch) + return catmsg.ErrIncomplete +} diff --git a/vendor/golang.org/x/text/message/catalog/dict.go b/vendor/golang.org/x/text/message/catalog/dict.go new file mode 100644 index 0000000000..1810fabc62 --- /dev/null +++ b/vendor/golang.org/x/text/message/catalog/dict.go @@ -0,0 +1,90 @@ +// Copyright 2017 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 catalog + +import ( + "sync" + + "golang.org/x/text/internal" + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/language" +) + +// TODO: +// Dictionary returns a Dictionary that returns the first Message, using the +// given language tag, that matches: +// 1. the last one registered by one of the Set methods +// 2. returned by one of the Loaders +// 3. repeat from 1. using the parent language +// This approach allows messages to be underspecified. +// func (c *Catalog) Dictionary(tag language.Tag) (Dictionary, error) { +// // TODO: verify dictionary exists. +// return &dict{&c.index, tag}, nil +// } + +type dict struct { + s *store + tag language.Tag // TODO: make compact tag. +} + +func (d *dict) Lookup(key string) (data string, ok bool) { + return d.s.lookup(d.tag, key) +} + +func (c *Catalog) set(tag language.Tag, key string, s *store, msg ...Message) error { + data, err := catmsg.Compile(tag, &dict{&c.macros, tag}, firstInSequence(msg)) + + s.mutex.Lock() + defer s.mutex.Unlock() + + m := s.index[tag] + if m == nil { + m = msgMap{} + if s.index == nil { + s.index = map[language.Tag]msgMap{} + } + s.index[tag] = m + } + + m[key] = data + return err +} + +type store struct { + mutex sync.RWMutex + index map[language.Tag]msgMap +} + +type msgMap map[string]string + +func (s *store) lookup(tag language.Tag, key string) (data string, ok bool) { + s.mutex.RLock() + defer s.mutex.RUnlock() + + for ; ; tag = tag.Parent() { + if msgs, ok := s.index[tag]; ok { + if msg, ok := msgs[key]; ok { + return msg, true + } + } + if tag == language.Und { + break + } + } + return "", false +} + +// Languages returns all languages for which the store contains variants. +func (s *store) languages() []language.Tag { + s.mutex.RLock() + defer s.mutex.RUnlock() + + tags := make([]language.Tag, 0, len(s.index)) + for t := range s.index { + tags = append(tags, t) + } + internal.SortTags(tags) + return tags +} diff --git a/vendor/golang.org/x/text/message/catalog_test.go b/vendor/golang.org/x/text/message/catalog_test.go deleted file mode 100644 index 3b693c9569..0000000000 --- a/vendor/golang.org/x/text/message/catalog_test.go +++ /dev/null @@ -1,98 +0,0 @@ -// 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 message - -import ( - "reflect" - "testing" - - "golang.org/x/text/internal" - "golang.org/x/text/language" -) - -type entry struct{ tag, key, msg string } - -var testCases = []struct { - desc string - cat []entry - lookup []entry -}{{ - desc: "empty catalog", - lookup: []entry{ - {"en", "key", ""}, - {"en", "", ""}, - {"nl", "", ""}, - }, -}, { - desc: "one entry", - cat: []entry{ - {"en", "hello", "Hello!"}, - }, - lookup: []entry{ - {"und", "hello", ""}, - {"nl", "hello", ""}, - {"en", "hello", "Hello!"}, - {"en-US", "hello", "Hello!"}, - {"en-GB", "hello", "Hello!"}, - {"en-oxendict", "hello", "Hello!"}, - {"en-oxendict-u-ms-metric", "hello", "Hello!"}, - }, -}, { - desc: "hierarchical languages", - cat: []entry{ - {"en", "hello", "Hello!"}, - {"en-GB", "hello", "Hellø!"}, - {"en-US", "hello", "Howdy!"}, - {"en", "greetings", "Greetings!"}, - }, - lookup: []entry{ - {"und", "hello", ""}, - {"nl", "hello", ""}, - {"en", "hello", "Hello!"}, - {"en-US", "hello", "Howdy!"}, - {"en-GB", "hello", "Hellø!"}, - {"en-oxendict", "hello", "Hello!"}, - {"en-US-oxendict-u-ms-metric", "hello", "Howdy!"}, - - {"und", "greetings", ""}, - {"nl", "greetings", ""}, - {"en", "greetings", "Greetings!"}, - {"en-US", "greetings", "Greetings!"}, - {"en-GB", "greetings", "Greetings!"}, - {"en-oxendict", "greetings", "Greetings!"}, - {"en-US-oxendict-u-ms-metric", "greetings", "Greetings!"}, - }, -}} - -func initCat(entries []entry) (*Catalog, []language.Tag) { - tags := []language.Tag{} - cat := newCatalog() - for _, e := range entries { - tag := language.MustParse(e.tag) - tags = append(tags, tag) - cat.SetString(tag, e.key, e.msg) - } - return cat, internal.UniqueTags(tags) -} - -func TestCatalog(t *testing.T) { - for _, tc := range testCases { - cat, wantTags := initCat(tc.cat) - - // languages - if got := cat.Languages(); !reflect.DeepEqual(got, wantTags) { - t.Errorf("%s:Languages: got %v; want %v", tc.desc, got, wantTags) - } - - // Lookup - for _, e := range tc.lookup { - tag := language.MustParse(e.tag) - msg, ok := cat.get(tag, e.key) - if okWant := e.msg != ""; ok != okWant || msg != e.msg { - t.Errorf("%s:Lookup(%s, %s) = %s, %v; want %s, %v", tc.desc, tag, e.key, msg, ok, e.msg, okWant) - } - } - } -} diff --git a/vendor/golang.org/x/text/message/fmt_test.go b/vendor/golang.org/x/text/message/fmt_test.go new file mode 100755 index 0000000000..0dbedcbcab --- /dev/null +++ b/vendor/golang.org/x/text/message/fmt_test.go @@ -0,0 +1,1891 @@ +// Copyright 2017 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 message + +import ( + "bytes" + "fmt" + "io" + "math" + "reflect" + "runtime" + "strings" + "testing" + "time" + + "golang.org/x/text/language" +) + +type ( + renamedBool bool + renamedInt int + renamedInt8 int8 + renamedInt16 int16 + renamedInt32 int32 + renamedInt64 int64 + renamedUint uint + renamedUint8 uint8 + renamedUint16 uint16 + renamedUint32 uint32 + renamedUint64 uint64 + renamedUintptr uintptr + renamedString string + renamedBytes []byte + renamedFloat32 float32 + renamedFloat64 float64 + renamedComplex64 complex64 + renamedComplex128 complex128 +) + +func TestFmtInterface(t *testing.T) { + p := NewPrinter(language.Und) + var i1 interface{} + i1 = "abc" + s := p.Sprintf("%s", i1) + if s != "abc" { + t.Errorf(`Sprintf("%%s", empty("abc")) = %q want %q`, s, "abc") + } +} + +var ( + NaN = math.NaN() + posInf = math.Inf(1) + negInf = math.Inf(-1) + + intVar = 0 + + array = [5]int{1, 2, 3, 4, 5} + iarray = [4]interface{}{1, "hello", 2.5, nil} + slice = array[:] + islice = iarray[:] +) + +type A struct { + i int + j uint + s string + x []int +} + +type I int + +func (i I) String() string { + p := NewPrinter(language.Und) + return p.Sprintf("<%d>", int(i)) +} + +type B struct { + I I + j int +} + +type C struct { + i int + B +} + +type F int + +func (f F) Format(s fmt.State, c rune) { + p := NewPrinter(language.Und) + p.Fprintf(s, "<%c=F(%d)>", c, int(f)) +} + +type G int + +func (g G) GoString() string { + p := NewPrinter(language.Und) + return p.Sprintf("GoString(%d)", int(g)) +} + +type S struct { + F F // a struct field that Formats + G G // a struct field that GoStrings +} + +type SI struct { + I interface{} +} + +// P is a type with a String method with pointer receiver for testing %p. +type P int + +var pValue P + +func (p *P) String() string { + return "String(p)" +} + +var barray = [5]renamedUint8{1, 2, 3, 4, 5} +var bslice = barray[:] + +type byteStringer byte + +func (byteStringer) String() string { + return "X" +} + +var byteStringerSlice = []byteStringer{'h', 'e', 'l', 'l', 'o'} + +type byteFormatter byte + +func (byteFormatter) Format(f fmt.State, _ rune) { + p := NewPrinter(language.Und) + p.Fprint(f, "X") +} + +var byteFormatterSlice = []byteFormatter{'h', 'e', 'l', 'l', 'o'} + +var fmtTests = []struct { + fmt string + val interface{} + out string +}{ + // The behavior of the following tests differs from that of the fmt package. + + // Unlike with the fmt package, it is okay to have extra arguments for + // strings without format parameters. This is because it is impossible to + // distinguish between reordered or ordered format strings in this case. + // (For reordered format strings it is okay to not use arguments.) + {"", nil, ""}, + {"", 2, ""}, + {"no args", "hello", "no args"}, + + {"%017091901790959340919092959340919017929593813360", 0, "%!(NOVERB)"}, + {"%184467440737095516170v", 0, "%!(NOVERB)"}, + // Extra argument errors should format without flags set. + {"%010.2", "12345", "%!(NOVERB)"}, + + // Some key other differences, asides from localized values: + // - NaN values should not use affixes; so no signs (CLDR requirement) + // - Infinity uses patterns, so signs may be different (CLDR requirement) + // - The # flag is used to disable localization. + + // All following tests are analogous to those of the fmt package, but with + // localized numbers when appropriate. + {"%d", 12345, "12,345"}, + {"%v", 12345, "12,345"}, + {"%t", true, "true"}, + + // basic string + {"%s", "abc", "abc"}, + {"%q", "abc", `"abc"`}, + {"%x", "abc", "616263"}, + {"%x", "\xff\xf0\x0f\xff", "fff00fff"}, + {"%X", "\xff\xf0\x0f\xff", "FFF00FFF"}, + {"%x", "", ""}, + {"% x", "", ""}, + {"%#x", "", ""}, + {"%# x", "", ""}, + {"%x", "xyz", "78797a"}, + {"%X", "xyz", "78797A"}, + {"% x", "xyz", "78 79 7a"}, + {"% X", "xyz", "78 79 7A"}, + {"%#x", "xyz", "0x78797a"}, + {"%#X", "xyz", "0X78797A"}, + {"%# x", "xyz", "0x78 0x79 0x7a"}, + {"%# X", "xyz", "0X78 0X79 0X7A"}, + + // basic bytes + {"%s", []byte("abc"), "abc"}, + {"%s", [3]byte{'a', 'b', 'c'}, "abc"}, + {"%s", &[3]byte{'a', 'b', 'c'}, "&abc"}, + {"%q", []byte("abc"), `"abc"`}, + {"%x", []byte("abc"), "616263"}, + {"%x", []byte("\xff\xf0\x0f\xff"), "fff00fff"}, + {"%X", []byte("\xff\xf0\x0f\xff"), "FFF00FFF"}, + {"%x", []byte(""), ""}, + {"% x", []byte(""), ""}, + {"%#x", []byte(""), ""}, + {"%# x", []byte(""), ""}, + {"%x", []byte("xyz"), "78797a"}, + {"%X", []byte("xyz"), "78797A"}, + {"% x", []byte("xyz"), "78 79 7a"}, + {"% X", []byte("xyz"), "78 79 7A"}, + {"%#x", []byte("xyz"), "0x78797a"}, + {"%#X", []byte("xyz"), "0X78797A"}, + {"%# x", []byte("xyz"), "0x78 0x79 0x7a"}, + {"%# X", []byte("xyz"), "0X78 0X79 0X7A"}, + + // escaped strings + {"%q", "", `""`}, + {"%#q", "", "``"}, + {"%q", "\"", `"\""`}, + {"%#q", "\"", "`\"`"}, + {"%q", "`", `"` + "`" + `"`}, + {"%#q", "`", `"` + "`" + `"`}, + {"%q", "\n", `"\n"`}, + {"%#q", "\n", `"\n"`}, + {"%q", `\n`, `"\\n"`}, + {"%#q", `\n`, "`\\n`"}, + {"%q", "abc", `"abc"`}, + {"%#q", "abc", "`abc`"}, + {"%q", "日本語", `"日本語"`}, + {"%+q", "日本語", `"\u65e5\u672c\u8a9e"`}, + {"%#q", "日本語", "`日本語`"}, + {"%#+q", "日本語", "`日本語`"}, + {"%q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, + {"%+q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, + {"%#q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, + {"%#+q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, + {"%q", "☺", `"☺"`}, + {"% q", "☺", `"☺"`}, // The space modifier should have no effect. + {"%+q", "☺", `"\u263a"`}, + {"%#q", "☺", "`☺`"}, + {"%#+q", "☺", "`☺`"}, + {"%10q", "⌘", ` "⌘"`}, + {"%+10q", "⌘", ` "\u2318"`}, + {"%-10q", "⌘", `"⌘" `}, + {"%+-10q", "⌘", `"\u2318" `}, + {"%010q", "⌘", `0000000"⌘"`}, + {"%+010q", "⌘", `00"\u2318"`}, + {"%-010q", "⌘", `"⌘" `}, // 0 has no effect when - is present. + {"%+-010q", "⌘", `"\u2318" `}, + {"%#8q", "\n", ` "\n"`}, + {"%#+8q", "\r", ` "\r"`}, + {"%#-8q", "\t", "` ` "}, + {"%#+-8q", "\b", `"\b" `}, + {"%q", "abc\xffdef", `"abc\xffdef"`}, + {"%+q", "abc\xffdef", `"abc\xffdef"`}, + {"%#q", "abc\xffdef", `"abc\xffdef"`}, + {"%#+q", "abc\xffdef", `"abc\xffdef"`}, + // Runes that are not printable. + {"%q", "\U0010ffff", `"\U0010ffff"`}, + {"%+q", "\U0010ffff", `"\U0010ffff"`}, + {"%#q", "\U0010ffff", "`􏿿`"}, + {"%#+q", "\U0010ffff", "`􏿿`"}, + // Runes that are not valid. + {"%q", string(0x110000), `"�"`}, + {"%+q", string(0x110000), `"\ufffd"`}, + {"%#q", string(0x110000), "`�`"}, + {"%#+q", string(0x110000), "`�`"}, + + // characters + {"%c", uint('x'), "x"}, + {"%c", 0xe4, "ä"}, + {"%c", 0x672c, "本"}, + {"%c", '日', "日"}, + {"%.0c", '⌘', "⌘"}, // Specifying precision should have no effect. + {"%3c", '⌘', " ⌘"}, + {"%-3c", '⌘', "⌘ "}, + // Runes that are not printable. + {"%c", '\U00000e00', "\u0e00"}, + {"%c", '\U0010ffff', "\U0010ffff"}, + // Runes that are not valid. + {"%c", -1, "�"}, + {"%c", 0xDC80, "�"}, + {"%c", rune(0x110000), "�"}, + {"%c", int64(0xFFFFFFFFF), "�"}, + {"%c", uint64(0xFFFFFFFFF), "�"}, + + // escaped characters + {"%q", uint(0), `'\x00'`}, + {"%+q", uint(0), `'\x00'`}, + {"%q", '"', `'"'`}, + {"%+q", '"', `'"'`}, + {"%q", '\'', `'\''`}, + {"%+q", '\'', `'\''`}, + {"%q", '`', "'`'"}, + {"%+q", '`', "'`'"}, + {"%q", 'x', `'x'`}, + {"%+q", 'x', `'x'`}, + {"%q", 'ÿ', `'ÿ'`}, + {"%+q", 'ÿ', `'\u00ff'`}, + {"%q", '\n', `'\n'`}, + {"%+q", '\n', `'\n'`}, + {"%q", '☺', `'☺'`}, + {"%+q", '☺', `'\u263a'`}, + {"% q", '☺', `'☺'`}, // The space modifier should have no effect. + {"%.0q", '☺', `'☺'`}, // Specifying precision should have no effect. + {"%10q", '⌘', ` '⌘'`}, + {"%+10q", '⌘', ` '\u2318'`}, + {"%-10q", '⌘', `'⌘' `}, + {"%+-10q", '⌘', `'\u2318' `}, + {"%010q", '⌘', `0000000'⌘'`}, + {"%+010q", '⌘', `00'\u2318'`}, + {"%-010q", '⌘', `'⌘' `}, // 0 has no effect when - is present. + {"%+-010q", '⌘', `'\u2318' `}, + // Runes that are not printable. + {"%q", '\U00000e00', `'\u0e00'`}, + {"%q", '\U0010ffff', `'\U0010ffff'`}, + // Runes that are not valid. + {"%q", int32(-1), "%!q(int32=-1)"}, + {"%q", 0xDC80, `'�'`}, + {"%q", rune(0x110000), "%!q(int32=1,114,112)"}, + {"%q", int64(0xFFFFFFFFF), "%!q(int64=68,719,476,735)"}, + {"%q", uint64(0xFFFFFFFFF), "%!q(uint64=68,719,476,735)"}, + + // width + {"%5s", "abc", " abc"}, + {"%2s", "\u263a", " ☺"}, + {"%-5s", "abc", "abc "}, + {"%-8q", "abc", `"abc" `}, + {"%05s", "abc", "00abc"}, + {"%08q", "abc", `000"abc"`}, + {"%5s", "abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"}, + {"%.5s", "abcdefghijklmnopqrstuvwxyz", "abcde"}, + {"%.0s", "日本語日本語", ""}, + {"%.5s", "日本語日本語", "日本語日本"}, + {"%.10s", "日本語日本語", "日本語日本語"}, + {"%.5s", []byte("日本語日本語"), "日本語日本"}, + {"%.5q", "abcdefghijklmnopqrstuvwxyz", `"abcde"`}, + {"%.5x", "abcdefghijklmnopqrstuvwxyz", "6162636465"}, + {"%.5q", []byte("abcdefghijklmnopqrstuvwxyz"), `"abcde"`}, + {"%.5x", []byte("abcdefghijklmnopqrstuvwxyz"), "6162636465"}, + {"%.3q", "日本語日本語", `"日本語"`}, + {"%.3q", []byte("日本語日本語"), `"日本語"`}, + {"%.1q", "日本語", `"日"`}, + {"%.1q", []byte("日本語"), `"日"`}, + {"%.1x", "日本語", "e6"}, + {"%.1X", []byte("日本語"), "E6"}, + {"%10.1q", "日本語日本語", ` "日"`}, + {"%10v", nil, " "}, + {"%-10v", nil, " "}, + + // integers + {"%d", uint(12345), "12,345"}, + {"%d", int(-12345), "-12,345"}, + {"%d", ^uint8(0), "255"}, + {"%d", ^uint16(0), "65,535"}, + {"%d", ^uint32(0), "4,294,967,295"}, + {"%d", ^uint64(0), "18,446,744,073,709,551,615"}, + {"%d", int8(-1 << 7), "-128"}, + {"%d", int16(-1 << 15), "-32,768"}, + {"%d", int32(-1 << 31), "-2,147,483,648"}, + {"%d", int64(-1 << 63), "-9,223,372,036,854,775,808"}, + {"%.d", 0, ""}, + {"%.0d", 0, ""}, + {"%6.0d", 0, " "}, + {"%06.0d", 0, " "}, + {"% d", 12345, " 12,345"}, + {"%+d", 12345, "+12,345"}, + {"%+d", -12345, "-12,345"}, + {"%b", 7, "111"}, + {"%b", -6, "-110"}, + {"%b", ^uint32(0), "11111111111111111111111111111111"}, + {"%b", ^uint64(0), "1111111111111111111111111111111111111111111111111111111111111111"}, + {"%b", int64(-1 << 63), zeroFill("-1", 63, "")}, + {"%o", 01234, "1234"}, + {"%#o", 01234, "01234"}, + {"%o", ^uint32(0), "37777777777"}, + {"%o", ^uint64(0), "1777777777777777777777"}, + {"%#X", 0, "0X0"}, + {"%x", 0x12abcdef, "12abcdef"}, + {"%X", 0x12abcdef, "12ABCDEF"}, + {"%x", ^uint32(0), "ffffffff"}, + {"%X", ^uint64(0), "FFFFFFFFFFFFFFFF"}, + {"%.20b", 7, "00000000000000000111"}, + {"%10d", 12345, " 12,345"}, + {"%10d", -12345, " -12,345"}, + {"%+10d", 12345, " +12,345"}, + {"%010d", 12345, "0,000,012,345"}, + {"%010d", -12345, "-0,000,012,345"}, + {"%20.8d", 1234, " 00,001,234"}, + {"%20.8d", -1234, " -00,001,234"}, + {"%020.8d", 1234, " 00,001,234"}, + {"%020.8d", -1234, " -00,001,234"}, + {"%-20.8d", 1234, "00,001,234 "}, + {"%-20.8d", -1234, "-00,001,234 "}, + {"%-#20.8x", 0x1234abc, "0x01234abc "}, + {"%-#20.8X", 0x1234abc, "0X01234ABC "}, + {"%-#20.8o", 01234, "00001234 "}, + + // Test correct f.intbuf overflow checks. + {"%068d", 1, "00," + strings.Repeat("000,", 21) + "001"}, + {"%068d", -1, "-00," + strings.Repeat("000,", 21) + "001"}, + {"%#.68x", 42, zeroFill("0x", 68, "2a")}, + {"%.68d", -42, "-00," + strings.Repeat("000,", 21) + "042"}, + {"%+.68d", 42, "+00," + strings.Repeat("000,", 21) + "042"}, + {"% .68d", 42, " 00," + strings.Repeat("000,", 21) + "042"}, + {"% +.68d", 42, "+00," + strings.Repeat("000,", 21) + "042"}, + + // unicode format + {"%U", 0, "U+0000"}, + {"%U", -1, "U+FFFFFFFFFFFFFFFF"}, + {"%U", '\n', `U+000A`}, + {"%#U", '\n', `U+000A`}, + {"%+U", 'x', `U+0078`}, // Plus flag should have no effect. + {"%# U", 'x', `U+0078 'x'`}, // Space flag should have no effect. + {"%#.2U", 'x', `U+0078 'x'`}, // Precisions below 4 should print 4 digits. + {"%U", '\u263a', `U+263A`}, + {"%#U", '\u263a', `U+263A '☺'`}, + {"%U", '\U0001D6C2', `U+1D6C2`}, + {"%#U", '\U0001D6C2', `U+1D6C2 '𝛂'`}, + {"%#14.6U", '⌘', " U+002318 '⌘'"}, + {"%#-14.6U", '⌘', "U+002318 '⌘' "}, + {"%#014.6U", '⌘', " U+002318 '⌘'"}, + {"%#-014.6U", '⌘', "U+002318 '⌘' "}, + {"%.68U", uint(42), zeroFill("U+", 68, "2A")}, + {"%#.68U", '日', zeroFill("U+", 68, "65E5") + " '日'"}, + + // floats + {"%+.3e", 0.0, "+0.000\u202f×\u202f10⁰⁰"}, + {"%+.3e", 1.0, "+1.000\u202f×\u202f10⁰⁰"}, + {"%+.3f", -1.0, "-1.000"}, + {"%+.3F", -1.0, "-1.000"}, + {"%+.3F", float32(-1.0), "-1.000"}, + {"%+07.2f", 1.0, "+001.00"}, + {"%+07.2f", -1.0, "-001.00"}, + {"%-07.2f", 1.0, "1.00 "}, + {"%-07.2f", -1.0, "-1.00 "}, + {"%+-07.2f", 1.0, "+1.00 "}, + {"%+-07.2f", -1.0, "-1.00 "}, + {"%-+07.2f", 1.0, "+1.00 "}, + {"%-+07.2f", -1.0, "-1.00 "}, + {"%+10.2f", +1.0, " +1.00"}, + {"%+10.2f", -1.0, " -1.00"}, + {"% .3E", -1.0, "-1.000\u202f×\u202f10⁰⁰"}, + {"% .3e", 1.0, " 1.000\u202f×\u202f10⁰⁰"}, + {"%+.3g", 0.0, "+0"}, + {"%+.3g", 1.0, "+1"}, + {"%+.3g", -1.0, "-1"}, + {"% .3g", -1.0, "-1"}, + {"% .3g", 1.0, " 1"}, + {"%b", float32(1.0), "8388608p-23"}, + {"%b", 1.0, "4503599627370496p-52"}, + // Test sharp flag used with floats. + {"%#g", 1e-323, "1.00000e-323"}, + {"%#g", -1.0, "-1.00000"}, + {"%#g", 1.1, "1.10000"}, + {"%#g", 123456.0, "123456."}, + {"%#g", 1234567.0, "1.234567e+06"}, + {"%#g", 1230000.0, "1.23000e+06"}, + {"%#g", 1000000.0, "1.00000e+06"}, + {"%#.0f", 1.0, "1."}, + {"%#.0e", 1.0, "1.e+00"}, + {"%#.0g", 1.0, "1."}, + {"%#.0g", 1100000.0, "1.e+06"}, + {"%#.4f", 1.0, "1.0000"}, + {"%#.4e", 1.0, "1.0000e+00"}, + {"%#.4g", 1.0, "1.000"}, + {"%#.4g", 100000.0, "1.000e+05"}, + {"%#.0f", 123.0, "123."}, + {"%#.0e", 123.0, "1.e+02"}, + {"%#.0g", 123.0, "1.e+02"}, + {"%#.4f", 123.0, "123.0000"}, + {"%#.4e", 123.0, "1.2300e+02"}, + {"%#.4g", 123.0, "123.0"}, + {"%#.4g", 123000.0, "1.230e+05"}, + {"%#9.4g", 1.0, " 1.000"}, + // The sharp flag has no effect for binary float format. + {"%#b", 1.0, "4503599627370496p-52"}, + // Precision has no effect for binary float format. + {"%.4b", float32(1.0), "8388608p-23"}, + {"%.4b", -1.0, "-4503599627370496p-52"}, + // Test correct f.intbuf boundary checks. + // TODO: the following cases won't work because of rounding errors. We can + // fix this if we expose the internals of strconv. + // {"%.68f", 1.0, zeroFill("1.", 68, "")}, // TODO(bug): rounding error + // {"%.68f", -1.0, zeroFill("-1.", 68, "")}, // TODO(bug): rounding error + // float infinites and NaNs + {"%f", posInf, "∞"}, + {"%.1f", negInf, "-∞"}, + {"% f", NaN, "NaN"}, + {"%20f", posInf, " ∞"}, + {"% 20F", posInf, " ∞"}, + {"% 20e", negInf, " -∞"}, + {"%+20E", negInf, " -∞"}, + {"% +20g", negInf, " -∞"}, + {"%+-20G", posInf, "+∞ "}, + {"%20e", NaN, " NaN"}, + {"% +20E", NaN, " NaN"}, + {"% -20g", NaN, "NaN "}, + {"%+-20G", NaN, "NaN "}, + // Zero padding does not apply to infinities and NaN. + {"%+020e", posInf, " +∞"}, + {"%-020f", negInf, "-∞ "}, + {"%-020E", NaN, "NaN "}, + + // complex values + {"%.f", 0i, "(0+0i)"}, + {"% .f", 0i, "( 0+0i)"}, + {"%+.f", 0i, "(+0+0i)"}, + {"% +.f", 0i, "(+0+0i)"}, + {"%+.3e", 0i, "(+0.000\u202f×\u202f10⁰⁰+0.000\u202f×\u202f10⁰⁰i)"}, + {"%+.3f", 0i, "(+0.000+0.000i)"}, + {"%+.3g", 0i, "(+0+0i)"}, + {"%+.3e", 1 + 2i, "(+1.000\u202f×\u202f10⁰⁰+2.000\u202f×\u202f10⁰⁰i)"}, + {"%+.3f", 1 + 2i, "(+1.000+2.000i)"}, + {"%+.3g", 1 + 2i, "(+1+2i)"}, + {"%.3e", 0i, "(0.000\u202f×\u202f10⁰⁰+0.000\u202f×\u202f10⁰⁰i)"}, + {"%.3f", 0i, "(0.000+0.000i)"}, + {"%.3F", 0i, "(0.000+0.000i)"}, + {"%.3F", complex64(0i), "(0.000+0.000i)"}, + {"%.3g", 0i, "(0+0i)"}, + {"%.3e", 1 + 2i, "(1.000\u202f×\u202f10⁰⁰+2.000\u202f×\u202f10⁰⁰i)"}, + {"%.3f", 1 + 2i, "(1.000+2.000i)"}, + {"%.3g", 1 + 2i, "(1+2i)"}, + {"%.3e", -1 - 2i, "(-1.000\u202f×\u202f10⁰⁰-2.000\u202f×\u202f10⁰⁰i)"}, + {"%.3f", -1 - 2i, "(-1.000-2.000i)"}, + {"%.3g", -1 - 2i, "(-1-2i)"}, + {"% .3E", -1 - 2i, "(-1.000\u202f×\u202f10⁰⁰-2.000\u202f×\u202f10⁰⁰i)"}, + {"%+.3g", 1 + 2i, "(+1+2i)"}, + {"%+.3g", complex64(1 + 2i), "(+1+2i)"}, + {"%#g", 1 + 2i, "(1.00000+2.00000i)"}, + {"%#g", 123456 + 789012i, "(123456.+789012.i)"}, + {"%#g", 1e-10i, "(0.00000+1.00000e-10i)"}, + {"%#g", -1e10 - 1.11e100i, "(-1.00000e+10-1.11000e+100i)"}, + {"%#.0f", 1.23 + 1.0i, "(1.+1.i)"}, + {"%#.0e", 1.23 + 1.0i, "(1.e+00+1.e+00i)"}, + {"%#.0g", 1.23 + 1.0i, "(1.+1.i)"}, + {"%#.0g", 0 + 100000i, "(0.+1.e+05i)"}, + {"%#.0g", 1230000 + 0i, "(1.e+06+0.i)"}, + {"%#.4f", 1 + 1.23i, "(1.0000+1.2300i)"}, + {"%#.4e", 123 + 1i, "(1.2300e+02+1.0000e+00i)"}, + {"%#.4g", 123 + 1.23i, "(123.0+1.230i)"}, + {"%#12.5g", 0 + 100000i, "( 0.0000 +1.0000e+05i)"}, + {"%#12.5g", 1230000 - 0i, "( 1.2300e+06 +0.0000i)"}, + {"%b", 1 + 2i, "(4503599627370496p-52+4503599627370496p-51i)"}, + {"%b", complex64(1 + 2i), "(8388608p-23+8388608p-22i)"}, + // The sharp flag has no effect for binary complex format. + {"%#b", 1 + 2i, "(4503599627370496p-52+4503599627370496p-51i)"}, + // Precision has no effect for binary complex format. + {"%.4b", 1 + 2i, "(4503599627370496p-52+4503599627370496p-51i)"}, + {"%.4b", complex64(1 + 2i), "(8388608p-23+8388608p-22i)"}, + // complex infinites and NaNs + {"%f", complex(posInf, posInf), "(∞+∞i)"}, + {"%f", complex(negInf, negInf), "(-∞-∞i)"}, + {"%f", complex(NaN, NaN), "(NaN+NaNi)"}, + {"%.1f", complex(posInf, posInf), "(∞+∞i)"}, + {"% f", complex(posInf, posInf), "( ∞+∞i)"}, + {"% f", complex(negInf, negInf), "(-∞-∞i)"}, + {"% f", complex(NaN, NaN), "(NaN+NaNi)"}, + {"%8e", complex(posInf, posInf), "( ∞ +∞i)"}, + {"% 8E", complex(posInf, posInf), "( ∞ +∞i)"}, + {"%+8f", complex(negInf, negInf), "( -∞ -∞i)"}, + {"% +8g", complex(negInf, negInf), "( -∞ -∞i)"}, // TODO(g) + {"% -8G", complex(NaN, NaN), "(NaN +NaN i)"}, + {"%+-8b", complex(NaN, NaN), "(+NaN +NaN i)"}, + // Zero padding does not apply to infinities and NaN. + {"%08f", complex(posInf, posInf), "( ∞ +∞i)"}, + {"%-08g", complex(negInf, negInf), "(-∞ -∞ i)"}, + {"%-08G", complex(NaN, NaN), "(NaN +NaN i)"}, + + // old test/fmt_test.go + {"%e", 1.0, "1.000000\u202f×\u202f10⁰⁰"}, + {"%e", 1234.5678e3, "1.234570\u202f×\u202f10⁰⁶"}, + {"%e", 1234.5678e-8, "1.234570\u202f×\u202f10⁻⁰⁵"}, + {"%e", -7.0, "-7.000000\u202f×\u202f10⁰⁰"}, + {"%e", -1e-9, "-1.000000\u202f×\u202f10⁻⁰⁹"}, + {"%f", 1234.5678e3, "1,234,567.800000"}, + {"%f", 1234.5678e-8, "0.000012"}, + {"%f", -7.0, "-7.000000"}, + {"%f", -1e-9, "-0.000000"}, + {"%g", 1234.5678e3, "1.2345678\u202f×\u202f10⁰⁶"}, + {"%g", float32(1234.5678e3), "1.2345678\u202f×\u202f10⁰⁶"}, + {"%g", 1234.5678e-8, "1.2345678\u202f×\u202f10⁻⁰⁵"}, + {"%g", -7.0, "-7"}, + {"%g", -1e-9, "-1\u202f×\u202f10⁻⁰⁹"}, + {"%g", float32(-1e-9), "-1\u202f×\u202f10⁻⁰⁹"}, + {"%E", 1.0, "1.000000\u202f×\u202f10⁰⁰"}, + {"%E", 1234.5678e3, "1.234570\u202f×\u202f10⁰⁶"}, + {"%E", 1234.5678e-8, "1.234570\u202f×\u202f10⁻⁰⁵"}, + {"%E", -7.0, "-7.000000\u202f×\u202f10⁰⁰"}, + {"%E", -1e-9, "-1.000000\u202f×\u202f10⁻⁰⁹"}, + {"%G", 1234.5678e3, "1.2345678\u202f×\u202f10⁰⁶"}, + {"%G", float32(1234.5678e3), "1.2345678\u202f×\u202f10⁰⁶"}, + {"%G", 1234.5678e-8, "1.2345678\u202f×\u202f10⁻⁰⁵"}, + {"%G", -7.0, "-7"}, + {"%G", -1e-9, "-1\u202f×\u202f10⁻⁰⁹"}, + {"%G", float32(-1e-9), "-1\u202f×\u202f10⁻⁰⁹"}, + {"%20.5s", "qwertyuiop", " qwert"}, + {"%.5s", "qwertyuiop", "qwert"}, + {"%-20.5s", "qwertyuiop", "qwert "}, + {"%20c", 'x', " x"}, + {"%-20c", 'x', "x "}, + {"%20.6e", 1.2345e3, " 1.234500\u202f×\u202f10⁰³"}, + {"%20.6e", 1.2345e-3, " 1.234500\u202f×\u202f10⁻⁰³"}, + {"%20e", 1.2345e3, " 1.234500\u202f×\u202f10⁰³"}, + {"%20e", 1.2345e-3, " 1.234500\u202f×\u202f10⁻⁰³"}, + {"%20.8e", 1.2345e3, " 1.23450000\u202f×\u202f10⁰³"}, + {"%20f", 1.23456789e3, " 1,234.567890"}, + {"%20f", 1.23456789e-3, " 0.001235"}, + {"%20f", 12345678901.23456789, "12,345,678,901.234568"}, + {"%-20f", 1.23456789e3, "1,234.567890 "}, + {"%20.8f", 1.23456789e3, " 1,234.56789000"}, + {"%20.8f", 1.23456789e-3, " 0.00123457"}, + {"%g", 1.23456789e3, "1,234.56789"}, + {"%g", 1.23456789e-3, "0.00123456789"}, + {"%g", 1.23456789e20, "1.23456789\u202f×\u202f10²⁰"}, + + // arrays + {"%v", array, "[1 2 3 4 5]"}, + {"%v", iarray, "[1 hello 2.5 ]"}, + {"%v", barray, "[1 2 3 4 5]"}, + {"%v", &array, "&[1 2 3 4 5]"}, + {"%v", &iarray, "&[1 hello 2.5 ]"}, + {"%v", &barray, "&[1 2 3 4 5]"}, + + // slices + {"%v", slice, "[1 2 3 4 5]"}, + {"%v", islice, "[1 hello 2.5 ]"}, + {"%v", bslice, "[1 2 3 4 5]"}, + {"%v", &slice, "&[1 2 3 4 5]"}, + {"%v", &islice, "&[1 hello 2.5 ]"}, + {"%v", &bslice, "&[1 2 3 4 5]"}, + + // byte arrays and slices with %b,%c,%d,%o,%U and %v + {"%b", [3]byte{65, 66, 67}, "[1000001 1000010 1000011]"}, + {"%c", [3]byte{65, 66, 67}, "[A B C]"}, + {"%d", [3]byte{65, 66, 67}, "[65 66 67]"}, + {"%o", [3]byte{65, 66, 67}, "[101 102 103]"}, + {"%U", [3]byte{65, 66, 67}, "[U+0041 U+0042 U+0043]"}, + {"%v", [3]byte{65, 66, 67}, "[65 66 67]"}, + {"%v", [1]byte{123}, "[123]"}, + {"%012v", []byte{}, "[]"}, + {"%#012v", []byte{}, "[]byte{}"}, + {"%6v", []byte{1, 11, 111}, "[ 1 11 111]"}, + {"%06v", []byte{1, 11, 111}, "[000001 000011 000111]"}, + {"%-6v", []byte{1, 11, 111}, "[1 11 111 ]"}, + {"%-06v", []byte{1, 11, 111}, "[1 11 111 ]"}, + {"%#v", []byte{1, 11, 111}, "[]byte{0x1, 0xb, 0x6f}"}, + {"%#6v", []byte{1, 11, 111}, "[]byte{ 0x1, 0xb, 0x6f}"}, + {"%#06v", []byte{1, 11, 111}, "[]byte{0x000001, 0x00000b, 0x00006f}"}, + {"%#-6v", []byte{1, 11, 111}, "[]byte{0x1 , 0xb , 0x6f }"}, + {"%#-06v", []byte{1, 11, 111}, "[]byte{0x1 , 0xb , 0x6f }"}, + // f.space should and f.plus should not have an effect with %v. + {"% v", []byte{1, 11, 111}, "[ 1 11 111]"}, + {"%+v", [3]byte{1, 11, 111}, "[1 11 111]"}, + {"%# -6v", []byte{1, 11, 111}, "[]byte{ 0x1 , 0xb , 0x6f }"}, + {"%#+-6v", [3]byte{1, 11, 111}, "[3]uint8{0x1 , 0xb , 0x6f }"}, + // f.space and f.plus should have an effect with %d. + {"% d", []byte{1, 11, 111}, "[ 1 11 111]"}, + {"%+d", [3]byte{1, 11, 111}, "[+1 +11 +111]"}, + {"%# -6d", []byte{1, 11, 111}, "[ 1 11 111 ]"}, + {"%#+-6d", [3]byte{1, 11, 111}, "[+1 +11 +111 ]"}, + + // floates with %v + {"%v", 1.2345678, "1.2345678"}, + {"%v", float32(1.2345678), "1.2345678"}, + + // complexes with %v + {"%v", 1 + 2i, "(1+2i)"}, + {"%v", complex64(1 + 2i), "(1+2i)"}, + + // structs + {"%v", A{1, 2, "a", []int{1, 2}}, `{1 2 a [1 2]}`}, + {"%+v", A{1, 2, "a", []int{1, 2}}, `{i:1 j:2 s:a x:[1 2]}`}, + + // +v on structs with Stringable items + {"%+v", B{1, 2}, `{I:<1> j:2}`}, + {"%+v", C{1, B{2, 3}}, `{i:1 B:{I:<2> j:3}}`}, + + // other formats on Stringable items + {"%s", I(23), `<23>`}, + {"%q", I(23), `"<23>"`}, + {"%x", I(23), `3c32333e`}, + {"%#x", I(23), `0x3c32333e`}, + {"%# x", I(23), `0x3c 0x32 0x33 0x3e`}, + // Stringer applies only to string formats. + {"%d", I(23), `23`}, + // Stringer applies to the extracted value. + {"%s", reflect.ValueOf(I(23)), `<23>`}, + + // go syntax + {"%#v", A{1, 2, "a", []int{1, 2}}, `message.A{i:1, j:0x2, s:"a", x:[]int{1, 2}}`}, + {"%#v", new(byte), "(*uint8)(0xPTR)"}, + {"%#v", TestFmtInterface, "(func(*testing.T))(0xPTR)"}, + {"%#v", make(chan int), "(chan int)(0xPTR)"}, + {"%#v", uint64(1<<64 - 1), "0xffffffffffffffff"}, + {"%#v", 1000000000, "1000000000"}, + {"%#v", map[string]int{"a": 1}, `map[string]int{"a":1}`}, + {"%#v", map[string]B{"a": {1, 2}}, `map[string]message.B{"a":message.B{I:1, j:2}}`}, + {"%#v", []string{"a", "b"}, `[]string{"a", "b"}`}, + {"%#v", SI{}, `message.SI{I:interface {}(nil)}`}, + {"%#v", []int(nil), `[]int(nil)`}, + {"%#v", []int{}, `[]int{}`}, + {"%#v", array, `[5]int{1, 2, 3, 4, 5}`}, + {"%#v", &array, `&[5]int{1, 2, 3, 4, 5}`}, + {"%#v", iarray, `[4]interface {}{1, "hello", 2.5, interface {}(nil)}`}, + {"%#v", &iarray, `&[4]interface {}{1, "hello", 2.5, interface {}(nil)}`}, + {"%#v", map[int]byte(nil), `map[int]uint8(nil)`}, + {"%#v", map[int]byte{}, `map[int]uint8{}`}, + {"%#v", "foo", `"foo"`}, + {"%#v", barray, `[5]message.renamedUint8{0x1, 0x2, 0x3, 0x4, 0x5}`}, + {"%#v", bslice, `[]message.renamedUint8{0x1, 0x2, 0x3, 0x4, 0x5}`}, + {"%#v", []int32(nil), "[]int32(nil)"}, + {"%#v", 1.2345678, "1.2345678"}, + {"%#v", float32(1.2345678), "1.2345678"}, + // Only print []byte and []uint8 as type []byte if they appear at the top level. + {"%#v", []byte(nil), "[]byte(nil)"}, + {"%#v", []uint8(nil), "[]byte(nil)"}, + {"%#v", []byte{}, "[]byte{}"}, + {"%#v", []uint8{}, "[]byte{}"}, + {"%#v", reflect.ValueOf([]byte{}), "[]uint8{}"}, + {"%#v", reflect.ValueOf([]uint8{}), "[]uint8{}"}, + {"%#v", &[]byte{}, "&[]uint8{}"}, + {"%#v", &[]byte{}, "&[]uint8{}"}, + {"%#v", [3]byte{}, "[3]uint8{0x0, 0x0, 0x0}"}, + {"%#v", [3]uint8{}, "[3]uint8{0x0, 0x0, 0x0}"}, + + // slices with other formats + {"%#x", []int{1, 2, 15}, `[0x1 0x2 0xf]`}, + {"%x", []int{1, 2, 15}, `[1 2 f]`}, + {"%d", []int{1, 2, 15}, `[1 2 15]`}, + {"%d", []byte{1, 2, 15}, `[1 2 15]`}, + {"%q", []string{"a", "b"}, `["a" "b"]`}, + {"% 02x", []byte{1}, "01"}, + {"% 02x", []byte{1, 2, 3}, "01 02 03"}, + + // Padding with byte slices. + {"%2x", []byte{}, " "}, + {"%#2x", []byte{}, " "}, + {"% 02x", []byte{}, "00"}, + {"%# 02x", []byte{}, "00"}, + {"%-2x", []byte{}, " "}, + {"%-02x", []byte{}, " "}, + {"%8x", []byte{0xab}, " ab"}, + {"% 8x", []byte{0xab}, " ab"}, + {"%#8x", []byte{0xab}, " 0xab"}, + {"%# 8x", []byte{0xab}, " 0xab"}, + {"%08x", []byte{0xab}, "000000ab"}, + {"% 08x", []byte{0xab}, "000000ab"}, + {"%#08x", []byte{0xab}, "00000xab"}, + {"%# 08x", []byte{0xab}, "00000xab"}, + {"%10x", []byte{0xab, 0xcd}, " abcd"}, + {"% 10x", []byte{0xab, 0xcd}, " ab cd"}, + {"%#10x", []byte{0xab, 0xcd}, " 0xabcd"}, + {"%# 10x", []byte{0xab, 0xcd}, " 0xab 0xcd"}, + {"%010x", []byte{0xab, 0xcd}, "000000abcd"}, + {"% 010x", []byte{0xab, 0xcd}, "00000ab cd"}, + {"%#010x", []byte{0xab, 0xcd}, "00000xabcd"}, + {"%# 010x", []byte{0xab, 0xcd}, "00xab 0xcd"}, + {"%-10X", []byte{0xab}, "AB "}, + {"% -010X", []byte{0xab}, "AB "}, + {"%#-10X", []byte{0xab, 0xcd}, "0XABCD "}, + {"%# -010X", []byte{0xab, 0xcd}, "0XAB 0XCD "}, + // Same for strings + {"%2x", "", " "}, + {"%#2x", "", " "}, + {"% 02x", "", "00"}, + {"%# 02x", "", "00"}, + {"%-2x", "", " "}, + {"%-02x", "", " "}, + {"%8x", "\xab", " ab"}, + {"% 8x", "\xab", " ab"}, + {"%#8x", "\xab", " 0xab"}, + {"%# 8x", "\xab", " 0xab"}, + {"%08x", "\xab", "000000ab"}, + {"% 08x", "\xab", "000000ab"}, + {"%#08x", "\xab", "00000xab"}, + {"%# 08x", "\xab", "00000xab"}, + {"%10x", "\xab\xcd", " abcd"}, + {"% 10x", "\xab\xcd", " ab cd"}, + {"%#10x", "\xab\xcd", " 0xabcd"}, + {"%# 10x", "\xab\xcd", " 0xab 0xcd"}, + {"%010x", "\xab\xcd", "000000abcd"}, + {"% 010x", "\xab\xcd", "00000ab cd"}, + {"%#010x", "\xab\xcd", "00000xabcd"}, + {"%# 010x", "\xab\xcd", "00xab 0xcd"}, + {"%-10X", "\xab", "AB "}, + {"% -010X", "\xab", "AB "}, + {"%#-10X", "\xab\xcd", "0XABCD "}, + {"%# -010X", "\xab\xcd", "0XAB 0XCD "}, + + // renamings + {"%v", renamedBool(true), "true"}, + {"%d", renamedBool(true), "%!d(message.renamedBool=true)"}, + {"%o", renamedInt(8), "10"}, + {"%d", renamedInt8(-9), "-9"}, + {"%v", renamedInt16(10), "10"}, + {"%v", renamedInt32(-11), "-11"}, + {"%X", renamedInt64(255), "FF"}, + {"%v", renamedUint(13), "13"}, + {"%o", renamedUint8(14), "16"}, + {"%X", renamedUint16(15), "F"}, + {"%d", renamedUint32(16), "16"}, + {"%X", renamedUint64(17), "11"}, + {"%o", renamedUintptr(18), "22"}, + {"%x", renamedString("thing"), "7468696e67"}, + {"%d", renamedBytes([]byte{1, 2, 15}), `[1 2 15]`}, + {"%q", renamedBytes([]byte("hello")), `"hello"`}, + {"%x", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "68656c6c6f"}, + {"%X", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "68656C6C6F"}, + {"%s", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "hello"}, + {"%q", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, `"hello"`}, + {"%v", renamedFloat32(22), "22"}, + {"%v", renamedFloat64(33), "33"}, + {"%v", renamedComplex64(3 + 4i), "(3+4i)"}, + {"%v", renamedComplex128(4 - 3i), "(4-3i)"}, + + // Formatter + {"%x", F(1), ""}, + {"%x", G(2), "2"}, + {"%+v", S{F(4), G(5)}, "{F: G:5}"}, + + // GoStringer + {"%#v", G(6), "GoString(6)"}, + {"%#v", S{F(7), G(8)}, "message.S{F:, G:GoString(8)}"}, + + // %T + {"%T", byte(0), "uint8"}, + {"%T", reflect.ValueOf(nil), "reflect.Value"}, + {"%T", (4 - 3i), "complex128"}, + {"%T", renamedComplex128(4 - 3i), "message.renamedComplex128"}, + {"%T", intVar, "int"}, + {"%6T", &intVar, " *int"}, + {"%10T", nil, " "}, + {"%-10T", nil, " "}, + + // %p with pointers + {"%p", (*int)(nil), "0x0"}, + {"%#p", (*int)(nil), "0"}, + {"%p", &intVar, "0xPTR"}, + {"%#p", &intVar, "PTR"}, + {"%p", &array, "0xPTR"}, + {"%p", &slice, "0xPTR"}, + {"%8.2p", (*int)(nil), " 0x00"}, + {"%-20.16p", &intVar, "0xPTR "}, + // %p on non-pointers + {"%p", make(chan int), "0xPTR"}, + {"%p", make(map[int]int), "0xPTR"}, + {"%p", func() {}, "0xPTR"}, + {"%p", 27, "%!p(int=27)"}, // not a pointer at all + {"%p", nil, "%!p()"}, // nil on its own has no type ... + {"%#p", nil, "%!p()"}, // ... and hence is not a pointer type. + // pointers with specified base + {"%b", &intVar, "PTR_b"}, + {"%d", &intVar, "PTR_d"}, + {"%o", &intVar, "PTR_o"}, + {"%x", &intVar, "PTR_x"}, + {"%X", &intVar, "PTR_X"}, + // %v on pointers + {"%v", nil, ""}, + {"%#v", nil, ""}, + {"%v", (*int)(nil), ""}, + {"%#v", (*int)(nil), "(*int)(nil)"}, + {"%v", &intVar, "0xPTR"}, + {"%#v", &intVar, "(*int)(0xPTR)"}, + {"%8.2v", (*int)(nil), " "}, + {"%-20.16v", &intVar, "0xPTR "}, + // string method on pointer + {"%s", &pValue, "String(p)"}, // String method... + {"%p", &pValue, "0xPTR"}, // ... is not called with %p. + + // %d on Stringer should give integer if possible + {"%s", time.Time{}.Month(), "January"}, + {"%d", time.Time{}.Month(), "1"}, + + // erroneous things + {"%s %", "hello", "hello %!(NOVERB)"}, + {"%s %.2", "hello", "hello %!(NOVERB)"}, + + // The "" show up because maps are printed by + // first obtaining a list of keys and then looking up + // each key. Since NaNs can be map keys but cannot + // be fetched directly, the lookup fails and returns a + // zero reflect.Value, which formats as . + // This test is just to check that it shows the two NaNs at all. + {"%v", map[float64]int{NaN: 1, NaN: 2}, "map[NaN: NaN:]"}, + + // Comparison of padding rules with C printf. + /* + C program: + #include + + char *format[] = { + "[%.2f]", + "[% .2f]", + "[%+.2f]", + "[%7.2f]", + "[% 7.2f]", + "[%+7.2f]", + "[% +7.2f]", + "[%07.2f]", + "[% 07.2f]", + "[%+07.2f]", + "[% +07.2f]" + }; + + int main(void) { + int i; + for(i = 0; i < 11; i++) { + printf("%s: ", format[i]); + printf(format[i], 1.0); + printf(" "); + printf(format[i], -1.0); + printf("\n"); + } + } + + Output: + [%.2f]: [1.00] [-1.00] + [% .2f]: [ 1.00] [-1.00] + [%+.2f]: [+1.00] [-1.00] + [%7.2f]: [ 1.00] [ -1.00] + [% 7.2f]: [ 1.00] [ -1.00] + [%+7.2f]: [ +1.00] [ -1.00] + [% +7.2f]: [ +1.00] [ -1.00] + [%07.2f]: [0001.00] [-001.00] + [% 07.2f]: [ 001.00] [-001.00] + [%+07.2f]: [+001.00] [-001.00] + [% +07.2f]: [+001.00] [-001.00] + + */ + {"%.2f", 1.0, "1.00"}, + {"%.2f", -1.0, "-1.00"}, + {"% .2f", 1.0, " 1.00"}, + {"% .2f", -1.0, "-1.00"}, + {"%+.2f", 1.0, "+1.00"}, + {"%+.2f", -1.0, "-1.00"}, + {"%7.2f", 1.0, " 1.00"}, + {"%7.2f", -1.0, " -1.00"}, + {"% 7.2f", 1.0, " 1.00"}, + {"% 7.2f", -1.0, " -1.00"}, + {"%+7.2f", 1.0, " +1.00"}, + {"%+7.2f", -1.0, " -1.00"}, + {"% +7.2f", 1.0, " +1.00"}, + {"% +7.2f", -1.0, " -1.00"}, + // Padding with 0's indicates minimum number of integer digits minus the + // period, if present, and minus the sign if it is fixed. + // TODO: consider making this number the number of significant digits. + {"%07.2f", 1.0, "0,001.00"}, + {"%07.2f", -1.0, "-0,001.00"}, + {"% 07.2f", 1.0, " 001.00"}, + {"% 07.2f", -1.0, "-001.00"}, + {"%+07.2f", 1.0, "+001.00"}, + {"%+07.2f", -1.0, "-001.00"}, + {"% +07.2f", 1.0, "+001.00"}, + {"% +07.2f", -1.0, "-001.00"}, + + // Complex numbers: exhaustively tested in TestComplexFormatting. + {"%7.2f", 1 + 2i, "( 1.00 +2.00i)"}, + {"%+07.2f", -1 - 2i, "(-001.00-002.00i)"}, + + // Use spaces instead of zero if padding to the right. + {"%0-5s", "abc", "abc "}, + {"%-05.1f", 1.0, "1.0 "}, + + // float and complex formatting should not change the padding width + // for other elements. See issue 14642. + {"%06v", []interface{}{+10.0, 10}, "[000,010 000,010]"}, + {"%06v", []interface{}{-10.0, 10}, "[-000,010 000,010]"}, + {"%06v", []interface{}{+10.0 + 10i, 10}, "[(000,010+00,010i) 000,010]"}, + {"%06v", []interface{}{-10.0 + 10i, 10}, "[(-000,010+00,010i) 000,010]"}, + + // integer formatting should not alter padding for other elements. + {"%03.6v", []interface{}{1, 2.0, "x"}, "[000,001 002 00x]"}, + {"%03.0v", []interface{}{0, 2.0, "x"}, "[ 002 000]"}, + + // Complex fmt used to leave the plus flag set for future entries in the array + // causing +2+0i and +3+0i instead of 2+0i and 3+0i. + {"%v", []complex64{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"}, + {"%v", []complex128{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"}, + + // Incomplete format specification caused crash. + {"%.", 3, "%!.(int=3)"}, + + // Padding for complex numbers. Has been bad, then fixed, then bad again. + {"%+10.2f", +104.66 + 440.51i, "( +104.66 +440.51i)"}, + {"%+10.2f", -104.66 + 440.51i, "( -104.66 +440.51i)"}, + {"%+10.2f", +104.66 - 440.51i, "( +104.66 -440.51i)"}, + {"%+10.2f", -104.66 - 440.51i, "( -104.66 -440.51i)"}, + {"%010.2f", +104.66 + 440.51i, "(0,000,104.66+000,440.51i)"}, + {"%+010.2f", +104.66 + 440.51i, "(+000,104.66+000,440.51i)"}, + {"%+010.2f", -104.66 + 440.51i, "(-000,104.66+000,440.51i)"}, + {"%+010.2f", +104.66 - 440.51i, "(+000,104.66-000,440.51i)"}, + {"%+010.2f", -104.66 - 440.51i, "(-000,104.66-000,440.51i)"}, + + // []T where type T is a byte with a Stringer method. + {"%v", byteStringerSlice, "[X X X X X]"}, + {"%s", byteStringerSlice, "hello"}, + {"%q", byteStringerSlice, "\"hello\""}, + {"%x", byteStringerSlice, "68656c6c6f"}, + {"%X", byteStringerSlice, "68656C6C6F"}, + {"%#v", byteStringerSlice, "[]message.byteStringer{0x68, 0x65, 0x6c, 0x6c, 0x6f}"}, + + // And the same for Formatter. + {"%v", byteFormatterSlice, "[X X X X X]"}, + {"%s", byteFormatterSlice, "hello"}, + {"%q", byteFormatterSlice, "\"hello\""}, + {"%x", byteFormatterSlice, "68656c6c6f"}, + {"%X", byteFormatterSlice, "68656C6C6F"}, + // This next case seems wrong, but the docs say the Formatter wins here. + {"%#v", byteFormatterSlice, "[]message.byteFormatter{X, X, X, X, X}"}, + + // reflect.Value handled specially in Go 1.5, making it possible to + // see inside non-exported fields (which cannot be accessed with Interface()). + // Issue 8965. + {"%v", reflect.ValueOf(A{}).Field(0).String(), ""}, // Equivalent to the old way. + {"%v", reflect.ValueOf(A{}).Field(0), "0"}, // Sees inside the field. + + // verbs apply to the extracted value too. + {"%s", reflect.ValueOf("hello"), "hello"}, + {"%q", reflect.ValueOf("hello"), `"hello"`}, + {"%#04x", reflect.ValueOf(256), "0x0100"}, + + // invalid reflect.Value doesn't crash. + {"%v", reflect.Value{}, ""}, + {"%v", &reflect.Value{}, ""}, + {"%v", SI{reflect.Value{}}, "{}"}, + + // Tests to check that not supported verbs generate an error string. + {"%☠", nil, "%!☠()"}, + {"%☠", interface{}(nil), "%!☠()"}, + {"%☠", int(0), "%!☠(int=0)"}, + {"%☠", uint(0), "%!☠(uint=0)"}, + {"%☠", []byte{0, 1}, "[%!☠(uint8=0) %!☠(uint8=1)]"}, + {"%☠", []uint8{0, 1}, "[%!☠(uint8=0) %!☠(uint8=1)]"}, + {"%☠", [1]byte{0}, "[%!☠(uint8=0)]"}, + {"%☠", [1]uint8{0}, "[%!☠(uint8=0)]"}, + {"%☠", "hello", "%!☠(string=hello)"}, + {"%☠", 1.2345678, "%!☠(float64=1.2345678)"}, + {"%☠", float32(1.2345678), "%!☠(float32=1.2345678)"}, + {"%☠", 1.2345678 + 1.2345678i, "%!☠(complex128=(1.2345678+1.2345678i))"}, + {"%☠", complex64(1.2345678 + 1.2345678i), "%!☠(complex64=(1.2345678+1.2345678i))"}, + {"%☠", &intVar, "%!☠(*int=0xPTR)"}, + {"%☠", make(chan int), "%!☠(chan int=0xPTR)"}, + {"%☠", func() {}, "%!☠(func()=0xPTR)"}, + {"%☠", reflect.ValueOf(renamedInt(0)), "%!☠(message.renamedInt=0)"}, + {"%☠", SI{renamedInt(0)}, "{%!☠(message.renamedInt=0)}"}, + {"%☠", &[]interface{}{I(1), G(2)}, "&[%!☠(message.I=1) %!☠(message.G=2)]"}, + {"%☠", SI{&[]interface{}{I(1), G(2)}}, "{%!☠(*[]interface {}=&[1 2])}"}, + {"%☠", reflect.Value{}, ""}, + {"%☠", map[float64]int{NaN: 1}, "map[%!☠(float64=NaN):%!☠()]"}, +} + +// zeroFill generates zero-filled strings of the specified width. The length +// of the suffix (but not the prefix) is compensated for in the width calculation. +func zeroFill(prefix string, width int, suffix string) string { + return prefix + strings.Repeat("0", width-len(suffix)) + suffix +} + +func TestSprintf(t *testing.T) { + p := NewPrinter(language.Und) + for _, tt := range fmtTests { + t.Run(fmt.Sprint(tt.fmt, "/", tt.val), func(t *testing.T) { + s := p.Sprintf(tt.fmt, tt.val) + i := strings.Index(tt.out, "PTR") + if i >= 0 && i < len(s) { + var pattern, chars string + switch { + case strings.HasPrefix(tt.out[i:], "PTR_b"): + pattern = "PTR_b" + chars = "01" + case strings.HasPrefix(tt.out[i:], "PTR_o"): + pattern = "PTR_o" + chars = "01234567" + case strings.HasPrefix(tt.out[i:], "PTR_d"): + pattern = "PTR_d" + chars = "0123456789" + case strings.HasPrefix(tt.out[i:], "PTR_x"): + pattern = "PTR_x" + chars = "0123456789abcdef" + case strings.HasPrefix(tt.out[i:], "PTR_X"): + pattern = "PTR_X" + chars = "0123456789ABCDEF" + default: + pattern = "PTR" + chars = "0123456789abcdefABCDEF" + } + p := s[:i] + pattern + for j := i; j < len(s); j++ { + if !strings.ContainsRune(chars, rune(s[j])) { + p += s[j:] + break + } + } + s = p + } + if s != tt.out { + if _, ok := tt.val.(string); ok { + // Don't requote the already-quoted strings. + // It's too confusing to read the errors. + t.Errorf("Sprintf(%q, %q) = <%s> want <%s>", tt.fmt, tt.val, s, tt.out) + } else { + t.Errorf("Sprintf(%q, %v) = %q want %q", tt.fmt, tt.val, s, tt.out) + } + } + }) + } +} + +var f float64 + +// TestComplexFormatting checks that a complex always formats to the same +// thing as if done by hand with two singleton prints. +func TestComplexFormatting(t *testing.T) { + var yesNo = []bool{true, false} + var values = []float64{1, 0, -1, posInf, negInf, NaN} + p := NewPrinter(language.Und) + for _, plus := range yesNo { + for _, zero := range yesNo { + for _, space := range yesNo { + for _, char := range "fFeEgG" { + realFmt := "%" + if zero { + realFmt += "0" + } + if space { + realFmt += " " + } + if plus { + realFmt += "+" + } + realFmt += "10.2" + realFmt += string(char) + // Imaginary part always has a sign, so force + and ignore space. + imagFmt := "%" + if zero { + imagFmt += "0" + } + imagFmt += "+" + imagFmt += "10.2" + imagFmt += string(char) + for _, realValue := range values { + for _, imagValue := range values { + one := p.Sprintf(realFmt, complex(realValue, imagValue)) + two := p.Sprintf("("+realFmt+imagFmt+"i)", realValue, imagValue) + if math.IsNaN(imagValue) { + p := len(two) - len("NaNi)") - 1 + if two[p] == ' ' { + two = two[:p] + "+" + two[p+1:] + } else { + two = two[:p+1] + "+" + two[p+1:] + } + } + if one != two { + t.Error(f, one, two) + } + } + } + } + } + } + } +} + +type SE []interface{} // slice of empty; notational compactness. + +var reorderTests = []struct { + format string + args SE + out string +}{ + {"%[1]d", SE{1}, "1"}, + {"%[2]d", SE{2, 1}, "1"}, + {"%[2]d %[1]d", SE{1, 2}, "2 1"}, + {"%[2]*[1]d", SE{2, 5}, " 2"}, + {"%6.2f", SE{12.0}, " 12.00"}, // Explicit version of next line. + {"%[3]*.[2]*[1]f", SE{12.0, 2, 6}, " 12.00"}, + {"%[1]*.[2]*[3]f", SE{6, 2, 12.0}, " 12.00"}, + {"%10f", SE{12.0}, " 12.000000"}, + {"%[1]*[3]f", SE{10, 99, 12.0}, " 12.000000"}, + {"%.6f", SE{12.0}, "12.000000"}, // Explicit version of next line. + {"%.[1]*[3]f", SE{6, 99, 12.0}, "12.000000"}, + {"%6.f", SE{12.0}, " 12"}, // // Explicit version of next line; empty precision means zero. + {"%[1]*.[3]f", SE{6, 3, 12.0}, " 12"}, + // An actual use! Print the same arguments twice. + {"%d %d %d %#[1]o %#o %#o", SE{11, 12, 13}, "11 12 13 013 014 015"}, + + // Erroneous cases. + {"%[d", SE{2, 1}, "%!d(BADINDEX)"}, + {"%]d", SE{2, 1}, "%!](int=2)d%!(EXTRA int=1)"}, + {"%[]d", SE{2, 1}, "%!d(BADINDEX)"}, + {"%[-3]d", SE{2, 1}, "%!d(BADINDEX)"}, + {"%[99]d", SE{2, 1}, "%!d(BADINDEX)"}, + {"%[3]", SE{2, 1}, "%!(NOVERB)"}, + {"%[1].2d", SE{5, 6}, "%!d(BADINDEX)"}, + {"%[1]2d", SE{2, 1}, "%!d(BADINDEX)"}, + {"%3.[2]d", SE{7}, "%!d(BADINDEX)"}, + {"%.[2]d", SE{7}, "%!d(BADINDEX)"}, + {"%d %d %d %#[1]o %#o %#o %#o", SE{11, 12, 13}, "11 12 13 013 014 015 %!o(MISSING)"}, + {"%[5]d %[2]d %d", SE{1, 2, 3}, "%!d(BADINDEX) 2 3"}, + {"%d %[3]d %d", SE{1, 2}, "1 %!d(BADINDEX) 2"}, // Erroneous index does not affect sequence. + {"%.[]", SE{}, "%!](BADINDEX)"}, // Issue 10675 + {"%.-3d", SE{42}, "%!-(int=42)3d"}, // TODO: Should this set return better error messages? + // The following messages are interpreted as if there is no substitution, + // in which case it is okay to have extra arguments. This is different + // semantics from the fmt package. + {"%2147483648d", SE{42}, "%!(NOVERB)"}, + {"%-2147483648d", SE{42}, "%!(NOVERB)"}, + {"%.2147483648d", SE{42}, "%!(NOVERB)"}, +} + +func TestReorder(t *testing.T) { + p := NewPrinter(language.Und) + for _, tc := range reorderTests { + t.Run(fmt.Sprint(tc.format, "/", tc.args), func(t *testing.T) { + s := p.Sprintf(tc.format, tc.args...) + if s != tc.out { + t.Errorf("Sprintf(%q, %v) = %q want %q", tc.format, tc.args, s, tc.out) + } + }) + } +} + +func BenchmarkSprintfPadding(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%16f", 1.0) + } + }) +} + +func BenchmarkSprintfEmpty(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("") + } + }) +} + +func BenchmarkSprintfString(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%s", "hello") + } + }) +} + +func BenchmarkSprintfTruncateString(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%.3s", "日本語日本語日本語") + } + }) +} + +func BenchmarkSprintfQuoteString(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%q", "日本語日本語日本語") + } + }) +} + +func BenchmarkSprintfInt(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%d", 5) + } + }) +} + +func BenchmarkSprintfIntInt(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%d %d", 5, 6) + } + }) +} + +func BenchmarkSprintfPrefixedInt(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("This is some meaningless prefix text that needs to be scanned %d", 6) + } + }) +} + +func BenchmarkSprintfFloat(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%g", 5.23184) + } + }) +} + +func BenchmarkSprintfComplex(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%f", 5.23184+5.23184i) + } + }) +} + +func BenchmarkSprintfBoolean(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%t", true) + } + }) +} + +func BenchmarkSprintfHexString(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("% #x", "0123456789abcdef") + } + }) +} + +func BenchmarkSprintfHexBytes(b *testing.B) { + data := []byte("0123456789abcdef") + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("% #x", data) + } + }) +} + +func BenchmarkSprintfBytes(b *testing.B) { + data := []byte("0123456789abcdef") + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%v", data) + } + }) +} + +func BenchmarkSprintfStringer(b *testing.B) { + stringer := I(12345) + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%v", stringer) + } + }) +} + +func BenchmarkSprintfStructure(b *testing.B) { + s := &[]interface{}{SI{12345}, map[int]string{0: "hello"}} + b.RunParallel(func(pb *testing.PB) { + p := NewPrinter(language.English) + for pb.Next() { + p.Sprintf("%#v", s) + } + }) +} + +func BenchmarkManyArgs(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + var buf bytes.Buffer + p := NewPrinter(language.English) + for pb.Next() { + buf.Reset() + p.Fprintf(&buf, "%2d/%2d/%2d %d:%d:%d %s %s\n", 3, 4, 5, 11, 12, 13, "hello", "world") + } + }) +} + +func BenchmarkFprintInt(b *testing.B) { + var buf bytes.Buffer + p := NewPrinter(language.English) + for i := 0; i < b.N; i++ { + buf.Reset() + p.Fprint(&buf, 123456) + } +} + +func BenchmarkFprintfBytes(b *testing.B) { + data := []byte(string("0123456789")) + var buf bytes.Buffer + p := NewPrinter(language.English) + for i := 0; i < b.N; i++ { + buf.Reset() + p.Fprintf(&buf, "%s", data) + } +} + +func BenchmarkFprintIntNoAlloc(b *testing.B) { + var x interface{} = 123456 + var buf bytes.Buffer + p := NewPrinter(language.English) + for i := 0; i < b.N; i++ { + buf.Reset() + p.Fprint(&buf, x) + } +} + +var mallocBuf bytes.Buffer +var mallocPointer *int // A pointer so we know the interface value won't allocate. + +var mallocTest = []struct { + count int + desc string + fn func(p *Printer) +}{ + {0, `Sprintf("")`, func(p *Printer) { p.Sprintf("") }}, + {1, `Sprintf("xxx")`, func(p *Printer) { p.Sprintf("xxx") }}, + {2, `Sprintf("%x")`, func(p *Printer) { p.Sprintf("%x", 7) }}, + {2, `Sprintf("%s")`, func(p *Printer) { p.Sprintf("%s", "hello") }}, + {3, `Sprintf("%x %x")`, func(p *Printer) { p.Sprintf("%x %x", 7, 112) }}, + {2, `Sprintf("%g")`, func(p *Printer) { p.Sprintf("%g", float32(3.14159)) }}, // TODO: Can this be 1? + {1, `Fprintf(buf, "%s")`, func(p *Printer) { mallocBuf.Reset(); p.Fprintf(&mallocBuf, "%s", "hello") }}, + // If the interface value doesn't need to allocate, amortized allocation overhead should be zero. + {0, `Fprintf(buf, "%x %x %x")`, func(p *Printer) { + mallocBuf.Reset() + p.Fprintf(&mallocBuf, "%x %x %x", mallocPointer, mallocPointer, mallocPointer) + }}, +} + +var _ bytes.Buffer + +func TestCountMallocs(t *testing.T) { + switch { + case testing.Short(): + t.Skip("skipping malloc count in short mode") + case runtime.GOMAXPROCS(0) > 1: + t.Skip("skipping; GOMAXPROCS>1") + // TODO: detect race detecter enabled. + // case race.Enabled: + // t.Skip("skipping malloc count under race detector") + } + p := NewPrinter(language.English) + for _, mt := range mallocTest { + mallocs := testing.AllocsPerRun(100, func() { mt.fn(p) }) + if got, max := mallocs, float64(mt.count); got > max { + t.Errorf("%s: got %v allocs, want <=%v", mt.desc, got, max) + } + } +} + +type flagPrinter struct{} + +func (flagPrinter) Format(f fmt.State, c rune) { + s := "%" + for i := 0; i < 128; i++ { + if f.Flag(i) { + s += string(i) + } + } + if w, ok := f.Width(); ok { + s += fmt.Sprintf("%d", w) + } + if p, ok := f.Precision(); ok { + s += fmt.Sprintf(".%d", p) + } + s += string(c) + io.WriteString(f, "["+s+"]") +} + +var flagtests = []struct { + in string + out string +}{ + {"%a", "[%a]"}, + {"%-a", "[%-a]"}, + {"%+a", "[%+a]"}, + {"%#a", "[%#a]"}, + {"% a", "[% a]"}, + {"%0a", "[%0a]"}, + {"%1.2a", "[%1.2a]"}, + {"%-1.2a", "[%-1.2a]"}, + {"%+1.2a", "[%+1.2a]"}, + {"%-+1.2a", "[%+-1.2a]"}, + {"%-+1.2abc", "[%+-1.2a]bc"}, + {"%-1.2abc", "[%-1.2a]bc"}, +} + +func TestFlagParser(t *testing.T) { + var flagprinter flagPrinter + for _, tt := range flagtests { + s := NewPrinter(language.Und).Sprintf(tt.in, &flagprinter) + if s != tt.out { + t.Errorf("Sprintf(%q, &flagprinter) => %q, want %q", tt.in, s, tt.out) + } + } +} + +func TestStructPrinter(t *testing.T) { + type T struct { + a string + b string + c int + } + var s T + s.a = "abc" + s.b = "def" + s.c = 123 + var tests = []struct { + fmt string + out string + }{ + {"%v", "{abc def 123}"}, + {"%+v", "{a:abc b:def c:123}"}, + {"%#v", `message.T{a:"abc", b:"def", c:123}`}, + } + p := NewPrinter(language.Und) + for _, tt := range tests { + out := p.Sprintf(tt.fmt, s) + if out != tt.out { + t.Errorf("Sprintf(%q, s) = %#q, want %#q", tt.fmt, out, tt.out) + } + // The same but with a pointer. + out = p.Sprintf(tt.fmt, &s) + if out != "&"+tt.out { + t.Errorf("Sprintf(%q, &s) = %#q, want %#q", tt.fmt, out, "&"+tt.out) + } + } +} + +func TestSlicePrinter(t *testing.T) { + p := NewPrinter(language.Und) + slice := []int{} + s := p.Sprint(slice) + if s != "[]" { + t.Errorf("empty slice printed as %q not %q", s, "[]") + } + slice = []int{1, 2, 3} + s = p.Sprint(slice) + if s != "[1 2 3]" { + t.Errorf("slice: got %q expected %q", s, "[1 2 3]") + } + s = p.Sprint(&slice) + if s != "&[1 2 3]" { + t.Errorf("&slice: got %q expected %q", s, "&[1 2 3]") + } +} + +// presentInMap checks map printing using substrings so we don't depend on the +// print order. +func presentInMap(s string, a []string, t *testing.T) { + for i := 0; i < len(a); i++ { + loc := strings.Index(s, a[i]) + if loc < 0 { + t.Errorf("map print: expected to find %q in %q", a[i], s) + } + // make sure the match ends here + loc += len(a[i]) + if loc >= len(s) || (s[loc] != ' ' && s[loc] != ']') { + t.Errorf("map print: %q not properly terminated in %q", a[i], s) + } + } +} + +func TestMapPrinter(t *testing.T) { + p := NewPrinter(language.Und) + m0 := make(map[int]string) + s := p.Sprint(m0) + if s != "map[]" { + t.Errorf("empty map printed as %q not %q", s, "map[]") + } + m1 := map[int]string{1: "one", 2: "two", 3: "three"} + a := []string{"1:one", "2:two", "3:three"} + presentInMap(p.Sprintf("%v", m1), a, t) + presentInMap(p.Sprint(m1), a, t) + // Pointer to map prints the same but with initial &. + if !strings.HasPrefix(p.Sprint(&m1), "&") { + t.Errorf("no initial & for address of map") + } + presentInMap(p.Sprintf("%v", &m1), a, t) + presentInMap(p.Sprint(&m1), a, t) +} + +func TestEmptyMap(t *testing.T) { + const emptyMapStr = "map[]" + var m map[string]int + p := NewPrinter(language.Und) + s := p.Sprint(m) + if s != emptyMapStr { + t.Errorf("nil map printed as %q not %q", s, emptyMapStr) + } + m = make(map[string]int) + s = p.Sprint(m) + if s != emptyMapStr { + t.Errorf("empty map printed as %q not %q", s, emptyMapStr) + } +} + +// TestBlank checks that Sprint (and hence Print, Fprint) puts spaces in the +// right places, that is, between arg pairs in which neither is a string. +func TestBlank(t *testing.T) { + p := NewPrinter(language.Und) + got := p.Sprint("<", 1, ">:", 1, 2, 3, "!") + expect := "<1>:1 2 3!" + if got != expect { + t.Errorf("got %q expected %q", got, expect) + } +} + +// TestBlankln checks that Sprintln (and hence Println, Fprintln) puts spaces in +// the right places, that is, between all arg pairs. +func TestBlankln(t *testing.T) { + p := NewPrinter(language.Und) + got := p.Sprintln("<", 1, ">:", 1, 2, 3, "!") + expect := "< 1 >: 1 2 3 !\n" + if got != expect { + t.Errorf("got %q expected %q", got, expect) + } +} + +// TestFormatterPrintln checks Formatter with Sprint, Sprintln, Sprintf. +func TestFormatterPrintln(t *testing.T) { + p := NewPrinter(language.Und) + f := F(1) + expect := "\n" + s := p.Sprint(f, "\n") + if s != expect { + t.Errorf("Sprint wrong with Formatter: expected %q got %q", expect, s) + } + s = p.Sprintln(f) + if s != expect { + t.Errorf("Sprintln wrong with Formatter: expected %q got %q", expect, s) + } + s = p.Sprintf("%v\n", f) + if s != expect { + t.Errorf("Sprintf wrong with Formatter: expected %q got %q", expect, s) + } +} + +func args(a ...interface{}) []interface{} { return a } + +var startests = []struct { + fmt string + in []interface{} + out string +}{ + {"%*d", args(4, 42), " 42"}, + {"%-*d", args(4, 42), "42 "}, + {"%*d", args(-4, 42), "42 "}, + {"%-*d", args(-4, 42), "42 "}, + {"%.*d", args(4, 42), "0,042"}, + {"%*.*d", args(8, 4, 42), " 0,042"}, + {"%0*d", args(4, 42), "0,042"}, + // Some non-int types for width. (Issue 10732). + {"%0*d", args(uint(4), 42), "0,042"}, + {"%0*d", args(uint64(4), 42), "0,042"}, + {"%0*d", args('\x04', 42), "0,042"}, + {"%0*d", args(uintptr(4), 42), "0,042"}, + + // erroneous + {"%*d", args(nil, 42), "%!(BADWIDTH)42"}, + {"%*d", args(int(1e7), 42), "%!(BADWIDTH)42"}, + {"%*d", args(int(-1e7), 42), "%!(BADWIDTH)42"}, + {"%.*d", args(nil, 42), "%!(BADPREC)42"}, + {"%.*d", args(-1, 42), "%!(BADPREC)42"}, + {"%.*d", args(int(1e7), 42), "%!(BADPREC)42"}, + {"%.*d", args(uint(1e7), 42), "%!(BADPREC)42"}, + {"%.*d", args(uint64(1<<63), 42), "%!(BADPREC)42"}, // Huge negative (-inf). + {"%.*d", args(uint64(1<<64-1), 42), "%!(BADPREC)42"}, // Small negative (-1). + {"%*d", args(5, "foo"), "%!d(string= foo)"}, + {"%*% %d", args(20, 5), "% 5"}, + {"%*", args(4), "%!(NOVERB)"}, +} + +func TestWidthAndPrecision(t *testing.T) { + p := NewPrinter(language.Und) + for i, tt := range startests { + t.Run(fmt.Sprint(tt.fmt, tt.in), func(t *testing.T) { + s := p.Sprintf(tt.fmt, tt.in...) + if s != tt.out { + t.Errorf("#%d: %q: got %q expected %q", i, tt.fmt, s, tt.out) + } + }) + } +} + +// PanicS is a type that panics in String. +type PanicS struct { + message interface{} +} + +// Value receiver. +func (p PanicS) String() string { + panic(p.message) +} + +// PanicGo is a type that panics in GoString. +type PanicGo struct { + message interface{} +} + +// Value receiver. +func (p PanicGo) GoString() string { + panic(p.message) +} + +// PanicF is a type that panics in Format. +type PanicF struct { + message interface{} +} + +// Value receiver. +func (p PanicF) Format(f fmt.State, c rune) { + panic(p.message) +} + +var panictests = []struct { + desc string + fmt string + in interface{} + out string +}{ + // String + {"String", "%s", (*PanicS)(nil), ""}, // nil pointer special case + {"String", "%s", PanicS{io.ErrUnexpectedEOF}, "%!s(PANIC=unexpected EOF)"}, + {"String", "%s", PanicS{3}, "%!s(PANIC=3)"}, + // GoString + {"GoString", "%#v", (*PanicGo)(nil), ""}, // nil pointer special case + {"GoString", "%#v", PanicGo{io.ErrUnexpectedEOF}, "%!v(PANIC=unexpected EOF)"}, + {"GoString", "%#v", PanicGo{3}, "%!v(PANIC=3)"}, + // Issue 18282. catchPanic should not clear fmtFlags permanently. + {"Issue 18282", "%#v", []interface{}{PanicGo{3}, PanicGo{3}}, "[]interface {}{%!v(PANIC=3), %!v(PANIC=3)}"}, + // Format + {"Format", "%s", (*PanicF)(nil), ""}, // nil pointer special case + {"Format", "%s", PanicF{io.ErrUnexpectedEOF}, "%!s(PANIC=unexpected EOF)"}, + {"Format", "%s", PanicF{3}, "%!s(PANIC=3)"}, +} + +func TestPanics(t *testing.T) { + p := NewPrinter(language.Und) + for i, tt := range panictests { + t.Run(fmt.Sprint(tt.desc, "/", tt.fmt, "/", tt.in), func(t *testing.T) { + s := p.Sprintf(tt.fmt, tt.in) + if s != tt.out { + t.Errorf("%d: %q: got %q expected %q", i, tt.fmt, s, tt.out) + } + }) + } +} + +// recurCount tests that erroneous String routine doesn't cause fatal recursion. +var recurCount = 0 + +type Recur struct { + i int + failed *bool +} + +func (r *Recur) String() string { + p := NewPrinter(language.Und) + if recurCount++; recurCount > 10 { + *r.failed = true + return "FAIL" + } + // This will call badVerb. Before the fix, that would cause us to recur into + // this routine to print %!p(value). Now we don't call the user's method + // during an error. + return p.Sprintf("recur@%p value: %d", r, r.i) +} + +func TestBadVerbRecursion(t *testing.T) { + p := NewPrinter(language.Und) + failed := false + r := &Recur{3, &failed} + p.Sprintf("recur@%p value: %d\n", &r, r.i) + if failed { + t.Error("fail with pointer") + } + failed = false + r = &Recur{4, &failed} + p.Sprintf("recur@%p, value: %d\n", r, r.i) + if failed { + t.Error("fail with value") + } +} + +func TestNilDoesNotBecomeTyped(t *testing.T) { + p := NewPrinter(language.Und) + type A struct{} + type B struct{} + var a *A = nil + var b B = B{} + got := p.Sprintf("%s %s %s %s %s", nil, a, nil, b, nil) // go vet should complain about this line. + const expect = "%!s() %!s(*message.A=) %!s() {} %!s()" + if got != expect { + t.Errorf("expected:\n\t%q\ngot:\n\t%q", expect, got) + } +} + +var formatterFlagTests = []struct { + in string + val interface{} + out string +}{ + // scalar values with the (unused by fmt) 'a' verb. + {"%a", flagPrinter{}, "[%a]"}, + {"%-a", flagPrinter{}, "[%-a]"}, + {"%+a", flagPrinter{}, "[%+a]"}, + {"%#a", flagPrinter{}, "[%#a]"}, + {"% a", flagPrinter{}, "[% a]"}, + {"%0a", flagPrinter{}, "[%0a]"}, + {"%1.2a", flagPrinter{}, "[%1.2a]"}, + {"%-1.2a", flagPrinter{}, "[%-1.2a]"}, + {"%+1.2a", flagPrinter{}, "[%+1.2a]"}, + {"%-+1.2a", flagPrinter{}, "[%+-1.2a]"}, + {"%-+1.2abc", flagPrinter{}, "[%+-1.2a]bc"}, + {"%-1.2abc", flagPrinter{}, "[%-1.2a]bc"}, + + // composite values with the 'a' verb + {"%a", [1]flagPrinter{}, "[[%a]]"}, + {"%-a", [1]flagPrinter{}, "[[%-a]]"}, + {"%+a", [1]flagPrinter{}, "[[%+a]]"}, + {"%#a", [1]flagPrinter{}, "[[%#a]]"}, + {"% a", [1]flagPrinter{}, "[[% a]]"}, + {"%0a", [1]flagPrinter{}, "[[%0a]]"}, + {"%1.2a", [1]flagPrinter{}, "[[%1.2a]]"}, + {"%-1.2a", [1]flagPrinter{}, "[[%-1.2a]]"}, + {"%+1.2a", [1]flagPrinter{}, "[[%+1.2a]]"}, + {"%-+1.2a", [1]flagPrinter{}, "[[%+-1.2a]]"}, + {"%-+1.2abc", [1]flagPrinter{}, "[[%+-1.2a]]bc"}, + {"%-1.2abc", [1]flagPrinter{}, "[[%-1.2a]]bc"}, + + // simple values with the 'v' verb + {"%v", flagPrinter{}, "[%v]"}, + {"%-v", flagPrinter{}, "[%-v]"}, + {"%+v", flagPrinter{}, "[%+v]"}, + {"%#v", flagPrinter{}, "[%#v]"}, + {"% v", flagPrinter{}, "[% v]"}, + {"%0v", flagPrinter{}, "[%0v]"}, + {"%1.2v", flagPrinter{}, "[%1.2v]"}, + {"%-1.2v", flagPrinter{}, "[%-1.2v]"}, + {"%+1.2v", flagPrinter{}, "[%+1.2v]"}, + {"%-+1.2v", flagPrinter{}, "[%+-1.2v]"}, + {"%-+1.2vbc", flagPrinter{}, "[%+-1.2v]bc"}, + {"%-1.2vbc", flagPrinter{}, "[%-1.2v]bc"}, + + // composite values with the 'v' verb. + {"%v", [1]flagPrinter{}, "[[%v]]"}, + {"%-v", [1]flagPrinter{}, "[[%-v]]"}, + {"%+v", [1]flagPrinter{}, "[[%+v]]"}, + {"%#v", [1]flagPrinter{}, "[1]message.flagPrinter{[%#v]}"}, + {"% v", [1]flagPrinter{}, "[[% v]]"}, + {"%0v", [1]flagPrinter{}, "[[%0v]]"}, + {"%1.2v", [1]flagPrinter{}, "[[%1.2v]]"}, + {"%-1.2v", [1]flagPrinter{}, "[[%-1.2v]]"}, + {"%+1.2v", [1]flagPrinter{}, "[[%+1.2v]]"}, + {"%-+1.2v", [1]flagPrinter{}, "[[%+-1.2v]]"}, + {"%-+1.2vbc", [1]flagPrinter{}, "[[%+-1.2v]]bc"}, + {"%-1.2vbc", [1]flagPrinter{}, "[[%-1.2v]]bc"}, +} + +func TestFormatterFlags(t *testing.T) { + p := NewPrinter(language.Und) + for _, tt := range formatterFlagTests { + s := p.Sprintf(tt.in, tt.val) + if s != tt.out { + t.Errorf("Sprintf(%q, %T) = %q, want %q", tt.in, tt.val, s, tt.out) + } + } +} + +func TestParsenum(t *testing.T) { + testCases := []struct { + s string + start, end int + num int + isnum bool + newi int + }{ + {"a123", 0, 4, 0, false, 0}, + {"1234", 1, 1, 0, false, 1}, + {"123a", 0, 4, 123, true, 3}, + {"12a3", 0, 4, 12, true, 2}, + {"1234", 0, 4, 1234, true, 4}, + {"1a234", 1, 3, 0, false, 1}, + } + for _, tt := range testCases { + num, isnum, newi := parsenum(tt.s, tt.start, tt.end) + if num != tt.num || isnum != tt.isnum || newi != tt.newi { + t.Errorf("parsenum(%q, %d, %d) = %d, %v, %d, want %d, %v, %d", tt.s, tt.start, tt.end, num, isnum, newi, tt.num, tt.isnum, tt.newi) + } + } +} diff --git a/vendor/golang.org/x/text/message/format.go b/vendor/golang.org/x/text/message/format.go new file mode 100644 index 0000000000..d3340d1945 --- /dev/null +++ b/vendor/golang.org/x/text/message/format.go @@ -0,0 +1,532 @@ +// Copyright 2017 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 message + +import ( + "bytes" + "strconv" + "unicode/utf8" +) + +const ( + ldigits = "0123456789abcdefx" + udigits = "0123456789ABCDEFX" +) + +const ( + signed = true + unsigned = false +) + +// flags placed in a separate struct for easy clearing. +type fmtFlags struct { + widPresent bool + precPresent bool + minus bool + plus bool + sharp bool + space bool + zero bool + + // For the formats %+v %#v, we set the plusV/sharpV flags + // and clear the plus/sharp flags since %+v and %#v are in effect + // different, flagless formats set at the top level. + plusV bool + sharpV bool +} + +// A formatInfo is the raw formatter used by Printf etc. +// It prints into a buffer that must be set up separately. +type formatInfo struct { + buf *bytes.Buffer + + fmtFlags + + wid int // width + prec int // precision + + // intbuf is large enough to store %b of an int64 with a sign and + // avoids padding at the end of the struct on 32 bit architectures. + intbuf [68]byte +} + +func (f *formatInfo) clearflags() { + f.fmtFlags = fmtFlags{} +} + +func (f *formatInfo) init(buf *bytes.Buffer) { + f.buf = buf + f.clearflags() +} + +// writePadding generates n bytes of padding. +func (f *formatInfo) writePadding(n int) { + if n <= 0 { // No padding bytes needed. + return + } + f.buf.Grow(n) + // Decide which byte the padding should be filled with. + padByte := byte(' ') + if f.zero { + padByte = byte('0') + } + // Fill padding with padByte. + for i := 0; i < n; i++ { + f.buf.WriteByte(padByte) // TODO: make more efficient. + } +} + +// pad appends b to f.buf, padded on left (!f.minus) or right (f.minus). +func (f *formatInfo) pad(b []byte) { + if !f.widPresent || f.wid == 0 { + f.buf.Write(b) + return + } + width := f.wid - utf8.RuneCount(b) + if !f.minus { + // left padding + f.writePadding(width) + f.buf.Write(b) + } else { + // right padding + f.buf.Write(b) + f.writePadding(width) + } +} + +// padString appends s to f.buf, padded on left (!f.minus) or right (f.minus). +func (f *formatInfo) padString(s string) { + if !f.widPresent || f.wid == 0 { + f.buf.WriteString(s) + return + } + width := f.wid - utf8.RuneCountInString(s) + if !f.minus { + // left padding + f.writePadding(width) + f.buf.WriteString(s) + } else { + // right padding + f.buf.WriteString(s) + f.writePadding(width) + } +} + +// fmt_boolean formats a boolean. +func (f *formatInfo) fmt_boolean(v bool) { + if v { + f.padString("true") + } else { + f.padString("false") + } +} + +// fmt_unicode formats a uint64 as "U+0078" or with f.sharp set as "U+0078 'x'". +func (f *formatInfo) fmt_unicode(u uint64) { + buf := f.intbuf[0:] + + // With default precision set the maximum needed buf length is 18 + // for formatting -1 with %#U ("U+FFFFFFFFFFFFFFFF") which fits + // into the already allocated intbuf with a capacity of 68 bytes. + prec := 4 + if f.precPresent && f.prec > 4 { + prec = f.prec + // Compute space needed for "U+" , number, " '", character, "'". + width := 2 + prec + 2 + utf8.UTFMax + 1 + if width > len(buf) { + buf = make([]byte, width) + } + } + + // Format into buf, ending at buf[i]. Formatting numbers is easier right-to-left. + i := len(buf) + + // For %#U we want to add a space and a quoted character at the end of the buffer. + if f.sharp && u <= utf8.MaxRune && strconv.IsPrint(rune(u)) { + i-- + buf[i] = '\'' + i -= utf8.RuneLen(rune(u)) + utf8.EncodeRune(buf[i:], rune(u)) + i-- + buf[i] = '\'' + i-- + buf[i] = ' ' + } + // Format the Unicode code point u as a hexadecimal number. + for u >= 16 { + i-- + buf[i] = udigits[u&0xF] + prec-- + u >>= 4 + } + i-- + buf[i] = udigits[u] + prec-- + // Add zeros in front of the number until requested precision is reached. + for prec > 0 { + i-- + buf[i] = '0' + prec-- + } + // Add a leading "U+". + i-- + buf[i] = '+' + i-- + buf[i] = 'U' + + oldZero := f.zero + f.zero = false + f.pad(buf[i:]) + f.zero = oldZero +} + +// fmt_integer formats signed and unsigned integers. +func (f *formatInfo) fmt_integer(u uint64, base int, isSigned bool, digits string) { + negative := isSigned && int64(u) < 0 + if negative { + u = -u + } + + buf := f.intbuf[0:] + // The already allocated f.intbuf with a capacity of 68 bytes + // is large enough for integer formatting when no precision or width is set. + if f.widPresent || f.precPresent { + // Account 3 extra bytes for possible addition of a sign and "0x". + width := 3 + f.wid + f.prec // wid and prec are always positive. + if width > len(buf) { + // We're going to need a bigger boat. + buf = make([]byte, width) + } + } + + // Two ways to ask for extra leading zero digits: %.3d or %03d. + // If both are specified the f.zero flag is ignored and + // padding with spaces is used instead. + prec := 0 + if f.precPresent { + prec = f.prec + // Precision of 0 and value of 0 means "print nothing" but padding. + if prec == 0 && u == 0 { + oldZero := f.zero + f.zero = false + f.writePadding(f.wid) + f.zero = oldZero + return + } + } else if f.zero && f.widPresent { + prec = f.wid + if negative || f.plus || f.space { + prec-- // leave room for sign + } + } + + // Because printing is easier right-to-left: format u into buf, ending at buf[i]. + // We could make things marginally faster by splitting the 32-bit case out + // into a separate block but it's not worth the duplication, so u has 64 bits. + i := len(buf) + // Use constants for the division and modulo for more efficient code. + // Switch cases ordered by popularity. + switch base { + case 10: + for u >= 10 { + i-- + next := u / 10 + buf[i] = byte('0' + u - next*10) + u = next + } + case 16: + for u >= 16 { + i-- + buf[i] = digits[u&0xF] + u >>= 4 + } + case 8: + for u >= 8 { + i-- + buf[i] = byte('0' + u&7) + u >>= 3 + } + case 2: + for u >= 2 { + i-- + buf[i] = byte('0' + u&1) + u >>= 1 + } + default: + panic("fmt: unknown base; can't happen") + } + i-- + buf[i] = digits[u] + for i > 0 && prec > len(buf)-i { + i-- + buf[i] = '0' + } + + // Various prefixes: 0x, -, etc. + if f.sharp { + switch base { + case 8: + if buf[i] != '0' { + i-- + buf[i] = '0' + } + case 16: + // Add a leading 0x or 0X. + i-- + buf[i] = digits[16] + i-- + buf[i] = '0' + } + } + + if negative { + i-- + buf[i] = '-' + } else if f.plus { + i-- + buf[i] = '+' + } else if f.space { + i-- + buf[i] = ' ' + } + + // Left padding with zeros has already been handled like precision earlier + // or the f.zero flag is ignored due to an explicitly set precision. + oldZero := f.zero + f.zero = false + f.pad(buf[i:]) + f.zero = oldZero +} + +// truncate truncates the string to the specified precision, if present. +func (f *formatInfo) truncate(s string) string { + if f.precPresent { + n := f.prec + for i := range s { + n-- + if n < 0 { + return s[:i] + } + } + } + return s +} + +// fmt_s formats a string. +func (f *formatInfo) fmt_s(s string) { + s = f.truncate(s) + f.padString(s) +} + +// fmt_sbx formats a string or byte slice as a hexadecimal encoding of its bytes. +func (f *formatInfo) fmt_sbx(s string, b []byte, digits string) { + length := len(b) + if b == nil { + // No byte slice present. Assume string s should be encoded. + length = len(s) + } + // Set length to not process more bytes than the precision demands. + if f.precPresent && f.prec < length { + length = f.prec + } + // Compute width of the encoding taking into account the f.sharp and f.space flag. + width := 2 * length + if width > 0 { + if f.space { + // Each element encoded by two hexadecimals will get a leading 0x or 0X. + if f.sharp { + width *= 2 + } + // Elements will be separated by a space. + width += length - 1 + } else if f.sharp { + // Only a leading 0x or 0X will be added for the whole string. + width += 2 + } + } else { // The byte slice or string that should be encoded is empty. + if f.widPresent { + f.writePadding(f.wid) + } + return + } + // Handle padding to the left. + if f.widPresent && f.wid > width && !f.minus { + f.writePadding(f.wid - width) + } + // Write the encoding directly into the output buffer. + buf := f.buf + if f.sharp { + // Add leading 0x or 0X. + buf.WriteByte('0') + buf.WriteByte(digits[16]) + } + var c byte + for i := 0; i < length; i++ { + if f.space && i > 0 { + // Separate elements with a space. + buf.WriteByte(' ') + if f.sharp { + // Add leading 0x or 0X for each element. + buf.WriteByte('0') + buf.WriteByte(digits[16]) + } + } + if b != nil { + c = b[i] // Take a byte from the input byte slice. + } else { + c = s[i] // Take a byte from the input string. + } + // Encode each byte as two hexadecimal digits. + buf.WriteByte(digits[c>>4]) + buf.WriteByte(digits[c&0xF]) + } + // Handle padding to the right. + if f.widPresent && f.wid > width && f.minus { + f.writePadding(f.wid - width) + } +} + +// fmt_sx formats a string as a hexadecimal encoding of its bytes. +func (f *formatInfo) fmt_sx(s, digits string) { + f.fmt_sbx(s, nil, digits) +} + +// fmt_bx formats a byte slice as a hexadecimal encoding of its bytes. +func (f *formatInfo) fmt_bx(b []byte, digits string) { + f.fmt_sbx("", b, digits) +} + +// fmt_q formats a string as a double-quoted, escaped Go string constant. +// If f.sharp is set a raw (backquoted) string may be returned instead +// if the string does not contain any control characters other than tab. +func (f *formatInfo) fmt_q(s string) { + s = f.truncate(s) + if f.sharp && strconv.CanBackquote(s) { + f.padString("`" + s + "`") + return + } + buf := f.intbuf[:0] + if f.plus { + f.pad(strconv.AppendQuoteToASCII(buf, s)) + } else { + f.pad(strconv.AppendQuote(buf, s)) + } +} + +// fmt_c formats an integer as a Unicode character. +// If the character is not valid Unicode, it will print '\ufffd'. +func (f *formatInfo) fmt_c(c uint64) { + r := rune(c) + if c > utf8.MaxRune { + r = utf8.RuneError + } + buf := f.intbuf[:0] + w := utf8.EncodeRune(buf[:utf8.UTFMax], r) + f.pad(buf[:w]) +} + +// fmt_qc formats an integer as a single-quoted, escaped Go character constant. +// If the character is not valid Unicode, it will print '\ufffd'. +func (f *formatInfo) fmt_qc(c uint64) { + r := rune(c) + if c > utf8.MaxRune { + r = utf8.RuneError + } + buf := f.intbuf[:0] + if f.plus { + f.pad(strconv.AppendQuoteRuneToASCII(buf, r)) + } else { + f.pad(strconv.AppendQuoteRune(buf, r)) + } +} + +// fmt_float formats a float64. It assumes that verb is a valid format specifier +// for strconv.AppendFloat and therefore fits into a byte. +func (f *formatInfo) fmt_float(v float64, size int, verb rune, prec int) { + // Explicit precision in format specifier overrules default precision. + if f.precPresent { + prec = f.prec + } + // Format number, reserving space for leading + sign if needed. + num := strconv.AppendFloat(f.intbuf[:1], v, byte(verb), prec, size) + if num[1] == '-' || num[1] == '+' { + num = num[1:] + } else { + num[0] = '+' + } + // f.space means to add a leading space instead of a "+" sign unless + // the sign is explicitly asked for by f.plus. + if f.space && num[0] == '+' && !f.plus { + num[0] = ' ' + } + // Special handling for infinities and NaN, + // which don't look like a number so shouldn't be padded with zeros. + if num[1] == 'I' || num[1] == 'N' { + oldZero := f.zero + f.zero = false + // Remove sign before NaN if not asked for. + if num[1] == 'N' && !f.space && !f.plus { + num = num[1:] + } + f.pad(num) + f.zero = oldZero + return + } + // The sharp flag forces printing a decimal point for non-binary formats + // and retains trailing zeros, which we may need to restore. + if f.sharp && verb != 'b' { + digits := 0 + switch verb { + case 'v', 'g', 'G': + digits = prec + // If no precision is set explicitly use a precision of 6. + if digits == -1 { + digits = 6 + } + } + + // Buffer pre-allocated with enough room for + // exponent notations of the form "e+123". + var tailBuf [5]byte + tail := tailBuf[:0] + + hasDecimalPoint := false + // Starting from i = 1 to skip sign at num[0]. + for i := 1; i < len(num); i++ { + switch num[i] { + case '.': + hasDecimalPoint = true + case 'e', 'E': + tail = append(tail, num[i:]...) + num = num[:i] + default: + digits-- + } + } + if !hasDecimalPoint { + num = append(num, '.') + } + for digits > 0 { + num = append(num, '0') + digits-- + } + num = append(num, tail...) + } + // We want a sign if asked for and if the sign is not positive. + if f.plus || num[0] != '+' { + // If we're zero padding to the left we want the sign before the leading zeros. + // Achieve this by writing the sign out and then padding the unsigned number. + if f.zero && f.widPresent && f.wid > len(num) { + f.buf.WriteByte(num[0]) + f.writePadding(f.wid - len(num)) + f.buf.Write(num[1:]) + return + } + f.pad(num) + return + } + // No sign to show and the number is positive; just print the unsigned number. + f.pad(num[1:]) +} diff --git a/vendor/golang.org/x/text/message/message.go b/vendor/golang.org/x/text/message/message.go index 32ff3ef900..92791236d2 100644 --- a/vendor/golang.org/x/text/message/message.go +++ b/vendor/golang.org/x/text/message/message.go @@ -5,95 +5,132 @@ // Package message implements formatted I/O for localized strings with functions // analogous to the fmt's print functions. // +// These are the important differences with fmt: +// - Output varies per locale. +// - The '#' flag is used to bypass localization. +// // NOTE: Under construction. See https://golang.org/design/12750-localization // and its corresponding proposal issue https://golang.org/issues/12750. package message // import "golang.org/x/text/message" import ( - "fmt" "io" - "strings" + "os" - "golang.org/x/text/internal/format" "golang.org/x/text/language" + "golang.org/x/text/message/catalog" ) +// TODO: allow more than one goroutine per printer. This will allow porting from +// fmt much less error prone. + // A Printer implements language-specific formatted I/O analogous to the fmt // package. Only one goroutine may use a Printer at the same time. type Printer struct { - tag language.Tag - - cat *Catalog + // Wrap the fields in a hidden type to hide some of the implemented methods. + printer printer // NOTE: limiting one goroutine per Printer allows for many optimizations // and simplifications. We can consider removing this restriction down the // road if it the benefits do not seem to outweigh the disadvantages. } +type options struct { + cat *catalog.Catalog + // TODO: + // - allow %s to print integers in written form (tables are likely too large + // to enable this by default). + // - list behavior + // +} + +// An Option defines an option of a Printer. +type Option func(o *options) + +// Catalog defines the catalog to be used. +func Catalog(c *catalog.Catalog) Option { + return func(o *options) { o.cat = c } +} + // NewPrinter returns a Printer that formats messages tailored to language t. -func NewPrinter(t language.Tag) *Printer { - return DefaultCatalog.Printer(t) +func NewPrinter(t language.Tag, opts ...Option) *Printer { + options := &options{ + cat: defaultCatalog, + } + for _, o := range opts { + o(options) + } + p := &Printer{printer{ + tag: t, + }} + p.printer.toDecimal.InitDecimal(t) + p.printer.toScientific.InitScientific(t) + p.printer.catContext = options.cat.Context(t, &p.printer) + return p } // Sprint is like fmt.Sprint, but using language-specific formatting. func (p *Printer) Sprint(a ...interface{}) string { - return fmt.Sprint(p.bindArgs(a)...) + p.printer.reset() + p.printer.doPrint(a) + return p.printer.String() } // Fprint is like fmt.Fprint, but using language-specific formatting. func (p *Printer) Fprint(w io.Writer, a ...interface{}) (n int, err error) { - return fmt.Fprint(w, p.bindArgs(a)...) + p.printer.reset() + p.printer.doPrint(a) + n64, err := io.Copy(w, &p.printer.Buffer) + return int(n64), err } // Print is like fmt.Print, but using language-specific formatting. func (p *Printer) Print(a ...interface{}) (n int, err error) { - return fmt.Print(p.bindArgs(a)...) + return p.Fprint(os.Stdout, a...) } // Sprintln is like fmt.Sprintln, but using language-specific formatting. func (p *Printer) Sprintln(a ...interface{}) string { - return fmt.Sprintln(p.bindArgs(a)...) + p.printer.reset() + p.printer.doPrintln(a) + return p.printer.String() } // Fprintln is like fmt.Fprintln, but using language-specific formatting. func (p *Printer) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { - return fmt.Fprintln(w, p.bindArgs(a)...) + p.printer.reset() + p.printer.doPrintln(a) + n64, err := io.Copy(w, &p.printer.Buffer) + return int(n64), err } // Println is like fmt.Println, but using language-specific formatting. func (p *Printer) Println(a ...interface{}) (n int, err error) { - return fmt.Println(p.bindArgs(a)...) + return p.Fprintln(os.Stdout, a...) } // Sprintf is like fmt.Sprintf, but using language-specific formatting. func (p *Printer) Sprintf(key Reference, a ...interface{}) string { - msg, hasSub := p.lookup(key) - if !hasSub { - return fmt.Sprintf(msg) // work around limitation of fmt - } - return fmt.Sprintf(msg, p.bindArgs(a)...) + lookupAndFormat(p, key, a) + return p.printer.String() } // Fprintf is like fmt.Fprintf, but using language-specific formatting. func (p *Printer) Fprintf(w io.Writer, key Reference, a ...interface{}) (n int, err error) { - msg, hasSub := p.lookup(key) - if !hasSub { - return fmt.Fprintf(w, msg) // work around limitation of fmt - } - return fmt.Fprintf(w, msg, p.bindArgs(a)...) + lookupAndFormat(p, key, a) + return w.Write(p.printer.Bytes()) } // Printf is like fmt.Printf, but using language-specific formatting. func (p *Printer) Printf(key Reference, a ...interface{}) (n int, err error) { - msg, hasSub := p.lookup(key) - if !hasSub { - return fmt.Printf(msg) // work around limitation of fmt - } - return fmt.Printf(msg, p.bindArgs(a)...) + lookupAndFormat(p, key, a) + return os.Stdout.Write(p.printer.Bytes()) } -func (p *Printer) lookup(r Reference) (msg string, hasSub bool) { - var id string +func lookupAndFormat(p *Printer, r Reference, a []interface{}) { + p.printer.reset() + p.printer.args = a + var id, msg string switch v := r.(type) { case string: id, msg = v, v @@ -102,33 +139,31 @@ func (p *Printer) lookup(r Reference) (msg string, hasSub bool) { default: panic("key argument is not a Reference") } - if s, ok := p.cat.get(p.tag, id); ok { - msg = s - } - // fmt does not allow all arguments to be dropped in a format string. It - // only allows arguments to be dropped if at least one of the substitutions - // uses the positional marker (e.g. %[1]s). This hack works around this. - // TODO: This is only an approximation of the parsing of substitution - // patterns. Make more precise once we know if we can get by with fmt's - // formatting, which may not be the case. - for i := 0; i < len(msg)-1; i++ { - if msg[i] == '%' { - for i++; i < len(msg); i++ { - if strings.IndexByte("[]#+- *01234567890.", msg[i]) < 0 { - break - } - } - if i < len(msg) && msg[i] != '%' { - hasSub = true - break - } + + if p.printer.catContext.Execute(id) == catalog.ErrNotFound { + if p.printer.catContext.Execute(msg) == catalog.ErrNotFound { + p.printer.Render(msg) + return } } - return msg, hasSub +} + +// Arg implements catmsg.Renderer. +func (p *printer) Arg(i int) interface{} { // TODO, also return "ok" bool + if uint(i) < uint(len(p.args)) { + return p.args[i] + } + return nil +} + +// Render implements catmsg.Renderer. +func (p *printer) Render(msg string) { + p.doPrintf(msg) } // A Reference is a string or a message reference. type Reference interface { + // TODO: also allow []string } // Key creates a message Reference for a message where the given id is used for @@ -140,46 +175,3 @@ func Key(id string, fallback string) Reference { type key struct { id, fallback string } - -// bindArgs wraps arguments with implementation of fmt.Formatter, if needed. -func (p *Printer) bindArgs(a []interface{}) []interface{} { - out := make([]interface{}, len(a)) - for i, x := range a { - switch v := x.(type) { - case fmt.Formatter: - // Wrap the value with a Formatter that augments the State with - // language-specific attributes. - out[i] = &value{v, p} - - // NOTE: as we use fmt.Formatter, we can't distinguish between - // regular and localized formatters, so we always need to wrap it. - - // TODO: handle - // - numbers - // - lists - // - time? - default: - out[i] = x - } - } - return out -} - -// state implements "golang.org/x/text/internal/format".State. -type state struct { - fmt.State - p *Printer -} - -func (s *state) Language() language.Tag { return s.p.tag } - -var _ format.State = &state{} - -type value struct { - x fmt.Formatter - p *Printer -} - -func (v *value) Format(s fmt.State, verb rune) { - v.x.Format(&state{s, v.p}, verb) -} diff --git a/vendor/golang.org/x/text/message/message_test.go b/vendor/golang.org/x/text/message/message_test.go index f7dba8d06d..091ed3bcbb 100644 --- a/vendor/golang.org/x/text/message/message_test.go +++ b/vendor/golang.org/x/text/message/message_test.go @@ -10,8 +10,10 @@ import ( "io" "testing" + "golang.org/x/text/internal" "golang.org/x/text/internal/format" "golang.org/x/text/language" + "golang.org/x/text/message/catalog" ) type formatFunc func(s fmt.State, v rune) @@ -48,13 +50,14 @@ func TestBinding(t *testing.T) { } } -func TestFormatSelection(t *testing.T) { +func TestLocalization(t *testing.T) { type test struct { tag string key Reference args []interface{} want string } + args := func(x ...interface{}) []interface{} { return x } empty := []interface{}{} joe := []interface{}{"Joe"} joeAndMary := []interface{}{"Joe", "Mary"} @@ -124,26 +127,55 @@ func TestFormatSelection(t *testing.T) { {"und", "hello %+%%s", joeAndMary, "hello %Joe%!(EXTRA string=Mary)"}, {"und", "hello %-42%%s ", joeAndMary, "hello %Joe %!(EXTRA string=Mary)"}, }, + }, { + desc: "number formatting", // work around limitation of fmt + cat: []entry{ + {"und", "files", "%d files left"}, + {"und", "meters", "%.2f meters"}, + {"de", "files", "%d Dateien übrig"}, + }, + test: []test{ + {"en", "meters", args(3000.2), "3,000.20 meters"}, + {"en-u-nu-gujr", "files", args(123456), "૧૨૩,૪૫૬ files left"}, + {"de", "files", args(1234), "1.234 Dateien übrig"}, + {"de-CH", "files", args(1234), "1’234 Dateien übrig"}, + {"de-CH-u-nu-mong", "files", args(1234), "᠑’᠒᠓᠔ Dateien übrig"}, + }, }} for _, tc := range testCases { cat, _ := initCat(tc.cat) for i, pt := range tc.test { - p := cat.Printer(language.MustParse(pt.tag)) + t.Run(fmt.Sprintf("%s:%d", tc.desc, i), func(t *testing.T) { + p := NewPrinter(language.MustParse(pt.tag), Catalog(cat)) - if got := p.Sprintf(pt.key, pt.args...); got != pt.want { - t.Errorf("%s:%d:Sprintf(%s, %v) = %s; want %s", - tc.desc, i, pt.key, pt.args, got, pt.want) - continue // Next error will likely be the same. - } + if got := p.Sprintf(pt.key, pt.args...); got != pt.want { + t.Errorf("Sprintf(%q, %v) = %s; want %s", + pt.key, pt.args, got, pt.want) + return // Next error will likely be the same. + } - w := &bytes.Buffer{} - p.Fprintf(w, pt.key, pt.args...) - if got := w.String(); got != pt.want { - t.Errorf("%s:%d:Fprintf(%s, %v) = %s; want %s", - tc.desc, i, pt.key, pt.args, got, pt.want) - } + w := &bytes.Buffer{} + p.Fprintf(w, pt.key, pt.args...) + if got := w.String(); got != pt.want { + t.Errorf("Fprintf(%q, %v) = %s; want %s", + pt.key, pt.args, got, pt.want) + } + }) } } } + +type entry struct{ tag, key, msg string } + +func initCat(entries []entry) (*catalog.Catalog, []language.Tag) { + tags := []language.Tag{} + cat := catalog.New() + for _, e := range entries { + tag := language.MustParse(e.tag) + tags = append(tags, tag) + cat.SetString(tag, e.key, e.msg) + } + return cat, internal.UniqueTags(tags) +} diff --git a/vendor/golang.org/x/text/message/print.go b/vendor/golang.org/x/text/message/print.go new file mode 100644 index 0000000000..8c8a23f150 --- /dev/null +++ b/vendor/golang.org/x/text/message/print.go @@ -0,0 +1,1185 @@ +// Copyright 2017 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 message + +import ( + "bytes" + "fmt" // TODO: consider copying interfaces from package fmt to avoid dependency. + "math" + "reflect" + "unicode/utf8" + + "golang.org/x/text/internal/number" + "golang.org/x/text/language" + "golang.org/x/text/message/catalog" +) + +// Strings for use with buffer.WriteString. +// This is less overhead than using buffer.Write with byte arrays. +const ( + commaSpaceString = ", " + nilAngleString = "" + nilParenString = "(nil)" + nilString = "nil" + mapString = "map[" + percentBangString = "%!" + missingString = "(MISSING)" + badIndexString = "(BADINDEX)" + panicString = "(PANIC=" + extraString = "%!(EXTRA " + badWidthString = "%!(BADWIDTH)" + badPrecString = "%!(BADPREC)" + noVerbString = "%!(NOVERB)" + + invReflectString = "" +) + +// printer is used to store a printer's state. +// It implements "golang.org/x/text/internal/format".State. +type printer struct { + // the context for looking up message translations + catContext *catalog.Context + // the language + tag language.Tag + + // buffer for accumulating output. + bytes.Buffer + + // retain arguments across calls. + args []interface{} + // retain current argument number across calls + argNum int + // arg holds the current item, as an interface{}. + arg interface{} + // value is used instead of arg for reflect values. + value reflect.Value + + // fmt is used to format basic items such as integers or strings. + fmt formatInfo + + // reordered records whether the format string used argument reordering. + reordered bool + // goodArgNum records whether the most recent reordering directive was valid. + goodArgNum bool + // panicking is set by catchPanic to avoid infinite panic, recover, panic, ... recursion. + panicking bool + // erroring is set when printing an error string to guard against calling handleMethods. + erroring bool + + toDecimal number.Formatter + toScientific number.Formatter +} + +func (p *printer) reset() { + p.Buffer.Reset() + p.argNum = 0 + p.reordered = false + p.panicking = false + p.erroring = false + p.fmt.init(&p.Buffer) +} + +// Language implements "golang.org/x/text/internal/format".State. +func (p *printer) Language() language.Tag { return p.tag } + +func (p *printer) Width() (wid int, ok bool) { return p.fmt.wid, p.fmt.widPresent } + +func (p *printer) Precision() (prec int, ok bool) { return p.fmt.prec, p.fmt.precPresent } + +func (p *printer) Flag(b int) bool { + switch b { + case '-': + return p.fmt.minus + case '+': + return p.fmt.plus || p.fmt.plusV + case '#': + return p.fmt.sharp || p.fmt.sharpV + case ' ': + return p.fmt.space + case '0': + return p.fmt.zero + } + return false +} + +// getField gets the i'th field of the struct value. +// If the field is itself is an interface, return a value for +// the thing inside the interface, not the interface itself. +func getField(v reflect.Value, i int) reflect.Value { + val := v.Field(i) + if val.Kind() == reflect.Interface && !val.IsNil() { + val = val.Elem() + } + return val +} + +// tooLarge reports whether the magnitude of the integer is +// too large to be used as a formatting width or precision. +func tooLarge(x int) bool { + const max int = 1e6 + return x > max || x < -max +} + +// parsenum converts ASCII to integer. num is 0 (and isnum is false) if no number present. +func parsenum(s string, start, end int) (num int, isnum bool, newi int) { + if start >= end { + return 0, false, end + } + for newi = start; newi < end && '0' <= s[newi] && s[newi] <= '9'; newi++ { + if tooLarge(num) { + return 0, false, end // Overflow; crazy long number most likely. + } + num = num*10 + int(s[newi]-'0') + isnum = true + } + return +} + +func (p *printer) unknownType(v reflect.Value) { + if !v.IsValid() { + p.WriteString(nilAngleString) + return + } + p.WriteByte('?') + p.WriteString(v.Type().String()) + p.WriteByte('?') +} + +func (p *printer) badVerb(verb rune) { + p.erroring = true + p.WriteString(percentBangString) + p.WriteRune(verb) + p.WriteByte('(') + switch { + case p.arg != nil: + p.WriteString(reflect.TypeOf(p.arg).String()) + p.WriteByte('=') + p.printArg(p.arg, 'v') + case p.value.IsValid(): + p.WriteString(p.value.Type().String()) + p.WriteByte('=') + p.printValue(p.value, 'v', 0) + default: + p.WriteString(nilAngleString) + } + p.WriteByte(')') + p.erroring = false +} + +func (p *printer) fmtBool(v bool, verb rune) { + switch verb { + case 't', 'v': + p.fmt.fmt_boolean(v) + default: + p.badVerb(verb) + } +} + +// fmt0x64 formats a uint64 in hexadecimal and prefixes it with 0x or +// not, as requested, by temporarily setting the sharp flag. +func (p *printer) fmt0x64(v uint64, leading0x bool) { + sharp := p.fmt.sharp + p.fmt.sharp = leading0x + p.fmt.fmt_integer(v, 16, unsigned, ldigits) + p.fmt.sharp = sharp +} + +// fmtInteger formats a signed or unsigned integer. +func (p *printer) fmtInteger(v uint64, isSigned bool, verb rune) { + switch verb { + case 'v': + if p.fmt.sharpV && !isSigned { + p.fmt0x64(v, true) + return + } + fallthrough + case 'd': + if p.fmt.sharp || p.fmt.sharpV { + p.fmt.fmt_integer(v, 10, isSigned, ldigits) + } else { + p.fmtDecimalInt(v, isSigned) + } + case 'b': + p.fmt.fmt_integer(v, 2, isSigned, ldigits) + case 'o': + p.fmt.fmt_integer(v, 8, isSigned, ldigits) + case 'x': + p.fmt.fmt_integer(v, 16, isSigned, ldigits) + case 'X': + p.fmt.fmt_integer(v, 16, isSigned, udigits) + case 'c': + p.fmt.fmt_c(v) + case 'q': + if v <= utf8.MaxRune { + p.fmt.fmt_qc(v) + } else { + p.badVerb(verb) + } + case 'U': + p.fmt.fmt_unicode(v) + default: + p.badVerb(verb) + } +} + +// fmtFloat formats a float. The default precision for each verb +// is specified as last argument in the call to fmt_float. +func (p *printer) fmtFloat(v float64, size int, verb rune) { + switch verb { + case 'b': + p.fmt.fmt_float(v, size, verb, -1) + case 'v': + verb = 'g' + fallthrough + case 'g', 'G': + if p.fmt.sharp || p.fmt.sharpV { + p.fmt.fmt_float(v, size, verb, -1) + } else { + p.fmtVariableFloat(v, size, -1) + } + case 'e', 'E': + if p.fmt.sharp || p.fmt.sharpV { + p.fmt.fmt_float(v, size, verb, 6) + } else { + p.fmtScientific(v, size, 6) + } + case 'f', 'F': + if p.fmt.sharp || p.fmt.sharpV { + p.fmt.fmt_float(v, size, verb, 6) + } else { + p.fmtDecimalFloat(v, size, 6) + } + default: + p.badVerb(verb) + } +} + +func (p *printer) setFlags(f *number.Formatter) { + f.Flags &^= number.ElideSign + if p.fmt.plus || p.fmt.space { + f.Flags |= number.AlwaysSign + if !p.fmt.plus { + f.Flags |= number.ElideSign + } + } else { + f.Flags &^= number.AlwaysSign + } +} + +func (p *printer) updatePadding(f *number.Formatter) { + f.Flags &^= number.PadMask + if p.fmt.minus { + f.Flags |= number.PadAfterSuffix + } else { + f.Flags |= number.PadBeforePrefix + } + f.PadRune = ' ' + f.FormatWidth = uint16(p.fmt.wid) +} + +func (p *printer) initDecimal(minFrac, maxFrac int) { + f := &p.toDecimal + f.MinIntegerDigits = 1 + f.MaxIntegerDigits = 0 + f.MinFractionDigits = uint8(minFrac) + f.MaxFractionDigits = uint8(maxFrac) + p.setFlags(f) + f.PadRune = 0 + if p.fmt.widPresent { + if p.fmt.zero { + wid := p.fmt.wid + // Use significant integers for this. + // TODO: this is not the same as width, but so be it. + if f.MinFractionDigits > 0 { + wid -= 1 + int(f.MinFractionDigits) + } + if p.fmt.plus || p.fmt.space { + wid-- + } + if wid > 0 && wid > int(f.MinIntegerDigits) { + f.MinIntegerDigits = uint8(wid) + } + } + p.updatePadding(f) + } +} + +func (p *printer) initScientific(minFrac, maxFrac int) { + f := &p.toScientific + f.MinFractionDigits = uint8(minFrac) + f.MaxFractionDigits = uint8(maxFrac) + f.MinExponentDigits = 2 + p.setFlags(f) + f.PadRune = 0 + if p.fmt.widPresent { + f.Flags &^= number.PadMask + if p.fmt.zero { + f.PadRune = f.Digit(0) + f.Flags |= number.PadAfterPrefix + } else { + f.PadRune = ' ' + f.Flags |= number.PadBeforePrefix + } + p.updatePadding(f) + } +} + +func (p *printer) fmtDecimalInt(v uint64, isSigned bool) { + var d number.Decimal + p.toDecimal.RoundingContext.Scale = 0 + d.ConvertInt(&p.toDecimal.RoundingContext, isSigned, v) + + f := &p.toDecimal + if p.fmt.precPresent { + p.setFlags(f) + f.MinIntegerDigits = uint8(p.fmt.prec) + f.MaxIntegerDigits = 0 + f.MinFractionDigits = 0 + f.MaxFractionDigits = 0 + if p.fmt.widPresent { + p.updatePadding(f) + } + } else { + p.initDecimal(0, 0) + } + + out := p.toDecimal.Format([]byte(nil), &d) + p.Buffer.Write(out) +} + +func (p *printer) fmtDecimalFloat(v float64, size, prec int) { + var d number.Decimal + if p.fmt.precPresent { + prec = p.fmt.prec + } + p.toDecimal.RoundingContext.Scale = int32(prec) + d.ConvertFloat(&p.toDecimal.RoundingContext, v, size) + + p.initDecimal(prec, prec) + + out := p.toDecimal.Format([]byte(nil), &d) + p.Buffer.Write(out) +} + +func (p *printer) fmtVariableFloat(v float64, size, prec int) { + if p.fmt.precPresent { + prec = p.fmt.prec + } + var d number.Decimal + p.toScientific.RoundingContext.Precision = int32(prec) + d.ConvertFloat(&p.toScientific.RoundingContext, v, size) + + // Copy logic of 'g' formatting from strconv. It is simplified a bit as + // we don't have to mind having prec > len(d.Digits). + shortest := prec < 0 + ePrec := prec + if shortest { + prec = len(d.Digits) + ePrec = 6 + } else if prec == 0 { + prec = 1 + ePrec = 1 + } + exp := int(d.Exp) - 1 + if exp < -4 || exp >= ePrec { + p.initScientific(0, prec) + + out := p.toScientific.Format([]byte(nil), &d) + p.Buffer.Write(out) + } else { + if prec > int(d.Exp) { + prec = len(d.Digits) + } + if prec -= int(d.Exp); prec < 0 { + prec = 0 + } + p.initDecimal(0, prec) + + out := p.toDecimal.Format([]byte(nil), &d) + p.Buffer.Write(out) + } +} + +func (p *printer) fmtScientific(v float64, size, prec int) { + var d number.Decimal + if p.fmt.precPresent { + prec = p.fmt.prec + } + p.toScientific.RoundingContext.Precision = int32(prec) + d.ConvertFloat(&p.toScientific.RoundingContext, v, size) + + p.initScientific(prec, prec) + + out := p.toScientific.Format([]byte(nil), &d) + p.Buffer.Write(out) + +} + +// fmtComplex formats a complex number v with +// r = real(v) and j = imag(v) as (r+ji) using +// fmtFloat for r and j formatting. +func (p *printer) fmtComplex(v complex128, size int, verb rune) { + // Make sure any unsupported verbs are found before the + // calls to fmtFloat to not generate an incorrect error string. + switch verb { + case 'v', 'b', 'g', 'G', 'f', 'F', 'e', 'E': + p.WriteByte('(') + p.fmtFloat(real(v), size/2, verb) + // Imaginary part always has a sign. + if math.IsNaN(imag(v)) { + // By CLDR's rules, NaNs do not use patterns or signs. As this code + // relies on AlwaysSign working for imaginary parts, we need to + // manually handle NaNs. + f := &p.toScientific + p.setFlags(f) + p.updatePadding(f) + p.setFlags(f) + nan := f.Symbol(number.SymNan) + extra := 0 + if w, ok := p.Width(); ok { + extra = w - utf8.RuneCountInString(nan) - 1 + } + if f.Flags&number.PadAfterNumber == 0 { + for ; extra > 0; extra-- { + p.WriteRune(f.PadRune) + } + } + p.WriteString(f.Symbol(number.SymPlusSign)) + p.WriteString(nan) + for ; extra > 0; extra-- { + p.WriteRune(f.PadRune) + } + p.WriteString("i)") + return + } + oldPlus := p.fmt.plus + p.fmt.plus = true + p.fmtFloat(imag(v), size/2, verb) + p.WriteString("i)") // TODO: use symbol? + p.fmt.plus = oldPlus + default: + p.badVerb(verb) + } +} + +func (p *printer) fmtString(v string, verb rune) { + switch verb { + case 'v': + if p.fmt.sharpV { + p.fmt.fmt_q(v) + } else { + p.fmt.fmt_s(v) + } + case 's': + p.fmt.fmt_s(v) + case 'x': + p.fmt.fmt_sx(v, ldigits) + case 'X': + p.fmt.fmt_sx(v, udigits) + case 'q': + p.fmt.fmt_q(v) + default: + p.badVerb(verb) + } +} + +func (p *printer) fmtBytes(v []byte, verb rune, typeString string) { + switch verb { + case 'v', 'd': + if p.fmt.sharpV { + p.WriteString(typeString) + if v == nil { + p.WriteString(nilParenString) + return + } + p.WriteByte('{') + for i, c := range v { + if i > 0 { + p.WriteString(commaSpaceString) + } + p.fmt0x64(uint64(c), true) + } + p.WriteByte('}') + } else { + p.WriteByte('[') + for i, c := range v { + if i > 0 { + p.WriteByte(' ') + } + p.fmt.fmt_integer(uint64(c), 10, unsigned, ldigits) + } + p.WriteByte(']') + } + case 's': + p.fmt.fmt_s(string(v)) + case 'x': + p.fmt.fmt_bx(v, ldigits) + case 'X': + p.fmt.fmt_bx(v, udigits) + case 'q': + p.fmt.fmt_q(string(v)) + default: + p.printValue(reflect.ValueOf(v), verb, 0) + } +} + +func (p *printer) fmtPointer(value reflect.Value, verb rune) { + var u uintptr + switch value.Kind() { + case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: + u = value.Pointer() + default: + p.badVerb(verb) + return + } + + switch verb { + case 'v': + if p.fmt.sharpV { + p.WriteByte('(') + p.WriteString(value.Type().String()) + p.WriteString(")(") + if u == 0 { + p.WriteString(nilString) + } else { + p.fmt0x64(uint64(u), true) + } + p.WriteByte(')') + } else { + if u == 0 { + p.fmt.padString(nilAngleString) + } else { + p.fmt0x64(uint64(u), !p.fmt.sharp) + } + } + case 'p': + p.fmt0x64(uint64(u), !p.fmt.sharp) + case 'b', 'o', 'd', 'x', 'X': + if verb == 'd' { + p.fmt.sharp = true // Print as standard go. TODO: does this make sense? + } + p.fmtInteger(uint64(u), unsigned, verb) + default: + p.badVerb(verb) + } +} + +func (p *printer) catchPanic(arg interface{}, verb rune) { + if err := recover(); err != nil { + // If it's a nil pointer, just say "". The likeliest causes are a + // Stringer that fails to guard against nil or a nil pointer for a + // value receiver, and in either case, "" is a nice result. + if v := reflect.ValueOf(arg); v.Kind() == reflect.Ptr && v.IsNil() { + p.WriteString(nilAngleString) + return + } + // Otherwise print a concise panic message. Most of the time the panic + // value will print itself nicely. + if p.panicking { + // Nested panics; the recursion in printArg cannot succeed. + panic(err) + } + + oldFlags := p.fmt.fmtFlags + // For this output we want default behavior. + p.fmt.clearflags() + + p.WriteString(percentBangString) + p.WriteRune(verb) + p.WriteString(panicString) + p.panicking = true + p.printArg(err, 'v') + p.panicking = false + p.WriteByte(')') + + p.fmt.fmtFlags = oldFlags + } +} + +func (p *printer) handleMethods(verb rune) (handled bool) { + if p.erroring { + return + } + // Is it a Formatter? + if formatter, ok := p.arg.(fmt.Formatter); ok { + handled = true + defer p.catchPanic(p.arg, verb) + formatter.Format(p, verb) + return + } + + // If we're doing Go syntax and the argument knows how to supply it, take care of it now. + if p.fmt.sharpV { + if stringer, ok := p.arg.(fmt.GoStringer); ok { + handled = true + defer p.catchPanic(p.arg, verb) + // Print the result of GoString unadorned. + p.fmt.fmt_s(stringer.GoString()) + return + } + } else { + // If a string is acceptable according to the format, see if + // the value satisfies one of the string-valued interfaces. + // Println etc. set verb to %v, which is "stringable". + switch verb { + case 'v', 's', 'x', 'X', 'q': + // Is it an error or Stringer? + // The duplication in the bodies is necessary: + // setting handled and deferring catchPanic + // must happen before calling the method. + switch v := p.arg.(type) { + case error: + handled = true + defer p.catchPanic(p.arg, verb) + p.fmtString(v.Error(), verb) + return + + case fmt.Stringer: + handled = true + defer p.catchPanic(p.arg, verb) + p.fmtString(v.String(), verb) + return + } + } + } + return false +} + +func (p *printer) printArg(arg interface{}, verb rune) { + p.arg = arg + p.value = reflect.Value{} + + if arg == nil { + switch verb { + case 'T', 'v': + p.fmt.padString(nilAngleString) + default: + p.badVerb(verb) + } + return + } + + // Special processing considerations. + // %T (the value's type) and %p (its address) are special; we always do them first. + switch verb { + case 'T': + p.fmt.fmt_s(reflect.TypeOf(arg).String()) + return + case 'p': + p.fmtPointer(reflect.ValueOf(arg), 'p') + return + } + + // Some types can be done without reflection. + switch f := arg.(type) { + case bool: + p.fmtBool(f, verb) + case float32: + p.fmtFloat(float64(f), 32, verb) + case float64: + p.fmtFloat(f, 64, verb) + case complex64: + p.fmtComplex(complex128(f), 64, verb) + case complex128: + p.fmtComplex(f, 128, verb) + case int: + p.fmtInteger(uint64(f), signed, verb) + case int8: + p.fmtInteger(uint64(f), signed, verb) + case int16: + p.fmtInteger(uint64(f), signed, verb) + case int32: + p.fmtInteger(uint64(f), signed, verb) + case int64: + p.fmtInteger(uint64(f), signed, verb) + case uint: + p.fmtInteger(uint64(f), unsigned, verb) + case uint8: + p.fmtInteger(uint64(f), unsigned, verb) + case uint16: + p.fmtInteger(uint64(f), unsigned, verb) + case uint32: + p.fmtInteger(uint64(f), unsigned, verb) + case uint64: + p.fmtInteger(f, unsigned, verb) + case uintptr: + p.fmtInteger(uint64(f), unsigned, verb) + case string: + p.fmtString(f, verb) + case []byte: + p.fmtBytes(f, verb, "[]byte") + case reflect.Value: + // Handle extractable values with special methods + // since printValue does not handle them at depth 0. + if f.IsValid() && f.CanInterface() { + p.arg = f.Interface() + if p.handleMethods(verb) { + return + } + } + p.printValue(f, verb, 0) + default: + // If the type is not simple, it might have methods. + if !p.handleMethods(verb) { + // Need to use reflection, since the type had no + // interface methods that could be used for formatting. + p.printValue(reflect.ValueOf(f), verb, 0) + } + } +} + +// printValue is similar to printArg but starts with a reflect value, not an interface{} value. +// It does not handle 'p' and 'T' verbs because these should have been already handled by printArg. +func (p *printer) printValue(value reflect.Value, verb rune, depth int) { + // Handle values with special methods if not already handled by printArg (depth == 0). + if depth > 0 && value.IsValid() && value.CanInterface() { + p.arg = value.Interface() + if p.handleMethods(verb) { + return + } + } + p.arg = nil + p.value = value + + switch f := value; value.Kind() { + case reflect.Invalid: + if depth == 0 { + p.WriteString(invReflectString) + } else { + switch verb { + case 'v': + p.WriteString(nilAngleString) + default: + p.badVerb(verb) + } + } + case reflect.Bool: + p.fmtBool(f.Bool(), verb) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + p.fmtInteger(uint64(f.Int()), signed, verb) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + p.fmtInteger(f.Uint(), unsigned, verb) + case reflect.Float32: + p.fmtFloat(f.Float(), 32, verb) + case reflect.Float64: + p.fmtFloat(f.Float(), 64, verb) + case reflect.Complex64: + p.fmtComplex(f.Complex(), 64, verb) + case reflect.Complex128: + p.fmtComplex(f.Complex(), 128, verb) + case reflect.String: + p.fmtString(f.String(), verb) + case reflect.Map: + if p.fmt.sharpV { + p.WriteString(f.Type().String()) + if f.IsNil() { + p.WriteString(nilParenString) + return + } + p.WriteByte('{') + } else { + p.WriteString(mapString) + } + keys := f.MapKeys() + for i, key := range keys { + if i > 0 { + if p.fmt.sharpV { + p.WriteString(commaSpaceString) + } else { + p.WriteByte(' ') + } + } + p.printValue(key, verb, depth+1) + p.WriteByte(':') + p.printValue(f.MapIndex(key), verb, depth+1) + } + if p.fmt.sharpV { + p.WriteByte('}') + } else { + p.WriteByte(']') + } + case reflect.Struct: + if p.fmt.sharpV { + p.WriteString(f.Type().String()) + } + p.WriteByte('{') + for i := 0; i < f.NumField(); i++ { + if i > 0 { + if p.fmt.sharpV { + p.WriteString(commaSpaceString) + } else { + p.WriteByte(' ') + } + } + if p.fmt.plusV || p.fmt.sharpV { + if name := f.Type().Field(i).Name; name != "" { + p.WriteString(name) + p.WriteByte(':') + } + } + p.printValue(getField(f, i), verb, depth+1) + } + p.WriteByte('}') + case reflect.Interface: + value := f.Elem() + if !value.IsValid() { + if p.fmt.sharpV { + p.WriteString(f.Type().String()) + p.WriteString(nilParenString) + } else { + p.WriteString(nilAngleString) + } + } else { + p.printValue(value, verb, depth+1) + } + case reflect.Array, reflect.Slice: + switch verb { + case 's', 'q', 'x', 'X': + // Handle byte and uint8 slices and arrays special for the above verbs. + t := f.Type() + if t.Elem().Kind() == reflect.Uint8 { + var bytes []byte + if f.Kind() == reflect.Slice { + bytes = f.Bytes() + } else if f.CanAddr() { + bytes = f.Slice(0, f.Len()).Bytes() + } else { + // We have an array, but we cannot Slice() a non-addressable array, + // so we build a slice by hand. This is a rare case but it would be nice + // if reflection could help a little more. + bytes = make([]byte, f.Len()) + for i := range bytes { + bytes[i] = byte(f.Index(i).Uint()) + } + } + p.fmtBytes(bytes, verb, t.String()) + return + } + } + if p.fmt.sharpV { + p.WriteString(f.Type().String()) + if f.Kind() == reflect.Slice && f.IsNil() { + p.WriteString(nilParenString) + return + } + p.WriteByte('{') + for i := 0; i < f.Len(); i++ { + if i > 0 { + p.WriteString(commaSpaceString) + } + p.printValue(f.Index(i), verb, depth+1) + } + p.WriteByte('}') + } else { + p.WriteByte('[') + for i := 0; i < f.Len(); i++ { + if i > 0 { + p.WriteByte(' ') + } + p.printValue(f.Index(i), verb, depth+1) + } + p.WriteByte(']') + } + case reflect.Ptr: + // pointer to array or slice or struct? ok at top level + // but not embedded (avoid loops) + if depth == 0 && f.Pointer() != 0 { + switch a := f.Elem(); a.Kind() { + case reflect.Array, reflect.Slice, reflect.Struct, reflect.Map: + p.WriteByte('&') + p.printValue(a, verb, depth+1) + return + } + } + fallthrough + case reflect.Chan, reflect.Func, reflect.UnsafePointer: + p.fmtPointer(f, verb) + default: + p.unknownType(f) + } +} + +// intFromArg gets the argNumth element of a. On return, isInt reports whether the argument has integer type. +func (p *printer) intFromArg() (num int, isInt bool) { + if p.argNum < len(p.args) { + arg := p.args[p.argNum] + num, isInt = arg.(int) // Almost always OK. + if !isInt { + // Work harder. + switch v := reflect.ValueOf(arg); v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + n := v.Int() + if int64(int(n)) == n { + num = int(n) + isInt = true + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + n := v.Uint() + if int64(n) >= 0 && uint64(int(n)) == n { + num = int(n) + isInt = true + } + default: + // Already 0, false. + } + } + p.argNum++ + if tooLarge(num) { + num = 0 + isInt = false + } + } + return +} + +// parseArgNumber returns the value of the bracketed number, minus 1 +// (explicit argument numbers are one-indexed but we want zero-indexed). +// The opening bracket is known to be present at format[0]. +// The returned values are the index, the number of bytes to consume +// up to the closing paren, if present, and whether the number parsed +// ok. The bytes to consume will be 1 if no closing paren is present. +func parseArgNumber(format string) (index int, wid int, ok bool) { + // There must be at least 3 bytes: [n]. + if len(format) < 3 { + return 0, 1, false + } + + // Find closing bracket. + for i := 1; i < len(format); i++ { + if format[i] == ']' { + width, ok, newi := parsenum(format, 1, i) + if !ok || newi != i { + return 0, i + 1, false + } + return width - 1, i + 1, true // arg numbers are one-indexed and skip paren. + } + } + return 0, 1, false +} + +// updateArgNumber returns the next argument to evaluate, which is either the value of the passed-in +// argNum or the value of the bracketed integer that begins format[i:]. It also returns +// the new value of i, that is, the index of the next byte of the format to process. +func (p *printer) updateArgNumber(format string, i int) (newi int, found bool) { + if len(format) <= i || format[i] != '[' { + return i, false + } + p.reordered = true + index, wid, ok := parseArgNumber(format[i:]) + if ok && 0 <= index && index < len(p.args) { + p.argNum = index + return i + wid, true + } + p.goodArgNum = false + return i + wid, ok +} + +func (p *printer) badArgNum(verb rune) { + p.WriteString(percentBangString) + p.WriteRune(verb) + p.WriteString(badIndexString) +} + +func (p *printer) missingArg(verb rune) { + p.WriteString(percentBangString) + p.WriteRune(verb) + p.WriteString(missingString) +} + +func (p *printer) doPrintf(format string) { + end := len(format) + afterIndex := false // previous item in format was an index like [3]. +formatLoop: + for i := 0; i < end; { + p.goodArgNum = true + lasti := i + for i < end && format[i] != '%' { + i++ + } + if i > lasti { + p.WriteString(format[lasti:i]) + } + if i >= end { + // done processing format string + break + } + + // Process one verb + i++ + + // Do we have flags? + p.fmt.clearflags() + simpleFormat: + for ; i < end; i++ { + c := format[i] + switch c { + case '#': + p.fmt.sharp = true + case '0': + p.fmt.zero = !p.fmt.minus // Only allow zero padding to the left. + case '+': + p.fmt.plus = true + case '-': + p.fmt.minus = true + p.fmt.zero = false // Do not pad with zeros to the right. + case ' ': + p.fmt.space = true + default: + // Fast path for common case of ascii lower case simple verbs + // without precision or width or argument indices. + if 'a' <= c && c <= 'z' && p.argNum < len(p.args) { + if c == 'v' { + // Go syntax + p.fmt.sharpV = p.fmt.sharp + p.fmt.sharp = false + // Struct-field syntax + p.fmt.plusV = p.fmt.plus + p.fmt.plus = false + } + p.printArg(p.Arg(p.argNum), rune(c)) + p.argNum++ + i++ + continue formatLoop + } + // Format is more complex than simple flags and a verb or is malformed. + break simpleFormat + } + } + + // Do we have an explicit argument index? + i, afterIndex = p.updateArgNumber(format, i) + + // Do we have width? + if i < end && format[i] == '*' { + i++ + p.fmt.wid, p.fmt.widPresent = p.intFromArg() + + if !p.fmt.widPresent { + p.WriteString(badWidthString) + } + + // We have a negative width, so take its value and ensure + // that the minus flag is set + if p.fmt.wid < 0 { + p.fmt.wid = -p.fmt.wid + p.fmt.minus = true + p.fmt.zero = false // Do not pad with zeros to the right. + } + afterIndex = false + } else { + p.fmt.wid, p.fmt.widPresent, i = parsenum(format, i, end) + if afterIndex && p.fmt.widPresent { // "%[3]2d" + p.goodArgNum = false + } + } + + // Do we have precision? + if i+1 < end && format[i] == '.' { + i++ + if afterIndex { // "%[3].2d" + p.goodArgNum = false + } + i, afterIndex = p.updateArgNumber(format, i) + if i < end && format[i] == '*' { + i++ + p.fmt.prec, p.fmt.precPresent = p.intFromArg() + // Negative precision arguments don't make sense + if p.fmt.prec < 0 { + p.fmt.prec = 0 + p.fmt.precPresent = false + } + if !p.fmt.precPresent { + p.WriteString(badPrecString) + } + afterIndex = false + } else { + p.fmt.prec, p.fmt.precPresent, i = parsenum(format, i, end) + if !p.fmt.precPresent { + p.fmt.prec = 0 + p.fmt.precPresent = true + } + } + } + + if !afterIndex { + i, afterIndex = p.updateArgNumber(format, i) + } + + if i >= end { + p.WriteString(noVerbString) + break + } + + verb, w := utf8.DecodeRuneInString(format[i:]) + i += w + + switch { + case verb == '%': // Percent does not absorb operands and ignores f.wid and f.prec. + p.WriteByte('%') + case !p.goodArgNum: + p.badArgNum(verb) + case p.argNum >= len(p.args): // No argument left over to print for the current verb. + p.missingArg(verb) + case verb == 'v': + // Go syntax + p.fmt.sharpV = p.fmt.sharp + p.fmt.sharp = false + // Struct-field syntax + p.fmt.plusV = p.fmt.plus + p.fmt.plus = false + fallthrough + default: + p.printArg(p.args[p.argNum], verb) + p.argNum++ + } + } + + // Check for extra arguments, but only if there was at least one ordered + // argument. Note that this behavior is necessarily different from fmt: + // different variants of messages may opt to drop some or all of the + // arguments. + if !p.reordered && p.argNum < len(p.args) && p.argNum != 0 { + p.fmt.clearflags() + p.WriteString(extraString) + for i, arg := range p.args[p.argNum:] { + if i > 0 { + p.WriteString(commaSpaceString) + } + if arg == nil { + p.WriteString(nilAngleString) + } else { + p.WriteString(reflect.TypeOf(arg).String()) + p.WriteByte('=') + p.printArg(arg, 'v') + } + } + p.WriteByte(')') + } +} + +func (p *printer) doPrint(a []interface{}) { + prevString := false + for argNum, arg := range a { + isString := arg != nil && reflect.TypeOf(arg).Kind() == reflect.String + // Add a space between two non-string arguments. + if argNum > 0 && !isString && !prevString { + p.WriteByte(' ') + } + p.printArg(arg, 'v') + prevString = isString + } +} + +// doPrintln is like doPrint but always adds a space between arguments +// and a newline after the last argument. +func (p *printer) doPrintln(a []interface{}) { + for argNum, arg := range a { + if argNum > 0 { + p.WriteByte(' ') + } + p.printArg(arg, 'v') + } + p.WriteByte('\n') +} diff --git a/vendor/golang.org/x/text/runes/cond.go b/vendor/golang.org/x/text/runes/cond.go index ae7a921585..df7aa02db6 100644 --- a/vendor/golang.org/x/text/runes/cond.go +++ b/vendor/golang.org/x/text/runes/cond.go @@ -41,20 +41,35 @@ func If(s Set, tIn, tNotIn transform.Transformer) Transformer { if tNotIn == nil { tNotIn = transform.Nop } + sIn, ok := tIn.(transform.SpanningTransformer) + if !ok { + sIn = dummySpan{tIn} + } + sNotIn, ok := tNotIn.(transform.SpanningTransformer) + if !ok { + sNotIn = dummySpan{tNotIn} + } + a := &cond{ - tIn: tIn, - tNotIn: tNotIn, + tIn: sIn, + tNotIn: sNotIn, f: s.Contains, } a.Reset() return Transformer{a} } +type dummySpan struct{ transform.Transformer } + +func (d dummySpan) Span(src []byte, atEOF bool) (n int, err error) { + return 0, transform.ErrEndOfSpan +} + type cond struct { - tIn, tNotIn transform.Transformer + tIn, tNotIn transform.SpanningTransformer f func(rune) bool - check func(rune) bool // current check to perform - t transform.Transformer // current transformer to use + check func(rune) bool // current check to perform + t transform.SpanningTransformer // current transformer to use } // Reset implements transform.Transformer. @@ -84,6 +99,51 @@ func (t *cond) isNot(r rune) bool { return false } +// This implementation of Span doesn't help all too much, but it needs to be +// there to satisfy this package's Transformer interface. +// TODO: there are certainly room for improvements, though. For example, if +// t.t == transform.Nop (which will a common occurrence) it will save a bundle +// to special-case that loop. +func (t *cond) Span(src []byte, atEOF bool) (n int, err error) { + p := 0 + for n < len(src) && err == nil { + // Don't process too much at a time as the Spanner that will be + // called on this block may terminate early. + const maxChunk = 4096 + max := len(src) + if v := n + maxChunk; v < max { + max = v + } + atEnd := false + size := 0 + current := t.t + for ; p < max; p += size { + r := rune(src[p]) + if r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[p:]); 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 + } + } + n2, err2 := current.Span(src[n:p], atEnd || (atEOF && p == len(src))) + n += n2 + if err2 != nil { + return n, err2 + } + // At this point either err != nil or t.check will pass for the rune at p. + p = n + size + } + return n, err +} + func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { p := 0 for nSrc < len(src) && err == nil { @@ -99,9 +159,10 @@ func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error 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 { + r := rune(src[p]) + if r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[p:]); size == 1 { if !atEOF && !utf8.FullRune(src[p:]) { err = transform.ErrShortSrc break diff --git a/vendor/golang.org/x/text/runes/cond_test.go b/vendor/golang.org/x/text/runes/cond_test.go index 6b65cc7df0..44cd36d0b1 100644 --- a/vendor/golang.org/x/text/runes/cond_test.go +++ b/vendor/golang.org/x/text/runes/cond_test.go @@ -19,8 +19,12 @@ var ( toLower = cases.Lower(language.Und) ) +type spanformer interface { + transform.SpanningTransformer +} + func TestPredicate(t *testing.T) { - testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer { + testConditional(t, func(rt *unicode.RangeTable, t, f spanformer) spanformer { return If(Predicate(func(r rune) bool { return unicode.Is(rt, r) }), t, f) @@ -28,18 +32,18 @@ func TestPredicate(t *testing.T) { } func TestIn(t *testing.T) { - testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer { + testConditional(t, func(rt *unicode.RangeTable, t, f spanformer) spanformer { return If(In(rt), t, f) }) } func TestNotIn(t *testing.T) { - testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer { + testConditional(t, func(rt *unicode.RangeTable, t, f spanformer) spanformer { return If(NotIn(rt), f, t) }) } -func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer) { +func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f spanformer) spanformer) { lower := f(unicode.Latin, toLower, toLower) for i, tt := range []transformTest{{ @@ -57,6 +61,7 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: "B", out: "b", outFull: "b", + errSpan: transform.ErrEndOfSpan, t: lower, }, { desc: "short dst", @@ -66,6 +71,7 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform out: "aa", outFull: "aaa", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: lower, }, { desc: "short dst writing error", @@ -75,6 +81,7 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform out: "a", outFull: "a\x80", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: lower, }, { desc: "short dst writing incomplete rune", @@ -112,6 +119,18 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform out: "a", outFull: "a\xc2", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, + t: lower, + }, { + desc: "short src no change", + szDst: 2, + atEOF: false, + in: "a\xc2", + out: "a", + outFull: "a\xc2", + err: transform.ErrShortSrc, + errSpan: transform.ErrShortSrc, + nSpan: 1, t: lower, }, { desc: "invalid input, atEOF", @@ -152,7 +171,17 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: "THIS IS α ΤΕΣΤ", out: "this is α ΤΕΣΤ", outFull: "this is α ΤΕΣΤ", + errSpan: transform.ErrEndOfSpan, t: f(unicode.Greek, nil, toLower), + }, { + desc: "nop in latin", + szDst: large, + atEOF: true, + in: "THIS IS α ΤΕΣΤ", + out: "THIS IS α τεστ", + outFull: "THIS IS α τεστ", + errSpan: transform.ErrEndOfSpan, + t: f(unicode.Latin, nil, toLower), }, { desc: "nop not in", szDst: large, @@ -160,6 +189,7 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: "THIS IS α ΤΕΣΤ", out: "this is α ΤΕΣΤ", outFull: "this is α ΤΕΣΤ", + errSpan: transform.ErrEndOfSpan, t: f(unicode.Latin, toLower, nil), }, { desc: "pass atEOF is true when at end", @@ -168,6 +198,7 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: "hello", out: "HELLO", outFull: "HELLO", + errSpan: transform.ErrEndOfSpan, t: f(unicode.Latin, upperAtEOF{}, nil), }, { desc: "pass atEOF is true when at end of segment", @@ -176,6 +207,7 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: "hello ", out: "HELLO ", outFull: "HELLO ", + errSpan: transform.ErrEndOfSpan, t: f(unicode.Latin, upperAtEOF{}, nil), }, { desc: "don't pass atEOF is true when atEOF is false", @@ -184,8 +216,25 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: "hello", out: "", outFull: "HELLO", - t: f(unicode.Latin, upperAtEOF{}, nil), err: transform.ErrShortSrc, + errSpan: transform.ErrShortSrc, + t: f(unicode.Latin, upperAtEOF{}, nil), + }, { + desc: "pass atEOF is true when at end, no change", + szDst: large, + atEOF: true, + in: "HELLO", + out: "HELLO", + outFull: "HELLO", + t: f(unicode.Latin, upperAtEOF{}, nil), + }, { + desc: "pass atEOF is true when at end of segment, no change", + szDst: large, + atEOF: true, + in: "HELLO ", + out: "HELLO ", + outFull: "HELLO ", + t: f(unicode.Latin, upperAtEOF{}, nil), }, { desc: "large input ASCII", szDst: 12000, @@ -193,8 +242,9 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: strings.Repeat("HELLO", 2000), out: strings.Repeat("hello", 2000), outFull: strings.Repeat("hello", 2000), - t: lower, + errSpan: transform.ErrEndOfSpan, err: nil, + t: lower, }, { desc: "large input non-ASCII", szDst: 12000, @@ -202,8 +252,8 @@ func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f transform in: strings.Repeat("\u3333", 2000), out: strings.Repeat("\u3333", 2000), outFull: strings.Repeat("\u3333", 2000), - t: lower, err: nil, + t: lower, }} { tt.check(t, i) } @@ -220,14 +270,13 @@ func (upperAtEOF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err er return toUpper.Transform(dst, src, atEOF) } -func BenchmarkConditional(b *testing.B) { - dst := make([]byte, len(input)) - src := []byte(input) - - r := If(In(unicode.Hangul), transform.Nop, transform.Nop) - b.ResetTimer() - - for i := 0; i < b.N; i++ { - r.Transform(dst, src, true) +func (upperAtEOF) Span(src []byte, atEOF bool) (n int, err error) { + if !atEOF { + return 0, transform.ErrShortSrc } + return toUpper.Span(src, atEOF) +} + +func BenchmarkConditional(b *testing.B) { + doBench(b, If(In(unicode.Hangul), transform.Nop, transform.Nop)) } diff --git a/vendor/golang.org/x/text/runes/runes.go b/vendor/golang.org/x/text/runes/runes.go index bb17f475b9..71933696f5 100644 --- a/vendor/golang.org/x/text/runes/runes.go +++ b/vendor/golang.org/x/text/runes/runes.go @@ -46,9 +46,19 @@ func Predicate(f func(rune) bool) Set { // Transformer implements the transform.Transformer interface. type Transformer struct { - transform.Transformer + t transform.SpanningTransformer } +func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return t.t.Transform(dst, src, atEOF) +} + +func (t Transformer) Span(b []byte, atEOF bool) (n int, err error) { + return t.t.Span(b, atEOF) +} + +func (t Transformer) Reset() { t.t.Reset() } + // 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. @@ -96,39 +106,57 @@ type remove func(r rune) bool func (remove) Reset() {} +// Span implements transform.Spanner. +func (t remove) Span(src []byte, atEOF bool) (n int, err error) { + for r, size := rune(0), 0; n < len(src); { + if r = rune(src[n]); r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[n:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[n:]) { + err = transform.ErrShortSrc + } else { + err = transform.ErrEndOfSpan + } + break + } + if t(r) { + err = transform.ErrEndOfSpan + break + } + n += size + } + return +} + // 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 + } else if r, size = utf8.DecodeRune(src[nSrc:]); 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 } - // 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 + 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 @@ -157,6 +185,28 @@ type mapper func(rune) rune func (mapper) Reset() {} +// Span implements transform.Spanner. +func (t mapper) Span(src []byte, atEOF bool) (n int, err error) { + for r, size := rune(0), 0; n < len(src); n += size { + if r = rune(src[n]); r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[n:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[n:]) { + err = transform.ErrShortSrc + } else { + err = transform.ErrEndOfSpan + } + break + } + if t(r) != r { + err = transform.ErrEndOfSpan + break + } + } + return n, err +} + // Transform implements transform.Transformer. func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { var replacement rune @@ -230,24 +280,51 @@ func ReplaceIllFormed() Transformer { type replaceIllFormed struct{ transform.NopResetter } +func (t replaceIllFormed) Span(src []byte, atEOF bool) (n int, err error) { + for n < len(src) { + // ASCII fast path. + if src[n] < utf8.RuneSelf { + n++ + continue + } + + r, size := utf8.DecodeRune(src[n:]) + + // Look for a valid non-ASCII rune. + if r != utf8.RuneError || size != 1 { + n += size + continue + } + + // Look for short source data. + if !atEOF && !utf8.FullRune(src[n:]) { + err = transform.ErrShortSrc + break + } + + // We have an invalid rune. + err = transform.ErrEndOfSpan + break + } + return n, err +} + 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 { + // ASCII fast path. + if r := src[nSrc]; r < utf8.RuneSelf { if nDst == len(dst) { err = transform.ErrShortDst break } - dst[nDst] = byte(r) + dst[nDst] = r nDst++ nSrc++ continue } // Look for a valid non-ASCII rune. - if r != utf8.RuneError || size != 1 { + if _, size := utf8.DecodeRune(src[nSrc:]); size != 1 { if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { err = transform.ErrShortDst break diff --git a/vendor/golang.org/x/text/runes/runes_test.go b/vendor/golang.org/x/text/runes/runes_test.go index 91d22a222f..23c5bc952a 100644 --- a/vendor/golang.org/x/text/runes/runes_test.go +++ b/vendor/golang.org/x/text/runes/runes_test.go @@ -22,8 +22,10 @@ type transformTest struct { out string // result string of first call to Transform outFull string // transform of entire input string err error + errSpan error + nSpan int - t transform.Transformer + t transform.SpanningTransformer } const large = 10240 @@ -50,6 +52,17 @@ func (tt *transformTest) check(t *testing.T, i int) { if got, want := string(out[:n+nDst]), tt.outFull; got != want { t.Errorf("%d:%s:outFull: got %q; want %q", i, tt.desc, got, want) } + + tt.t.Reset() + p := 0 + for ; p < len(tt.in) && p < len(tt.outFull) && tt.in[p] == tt.outFull[p]; p++ { + } + if tt.nSpan != 0 { + p = tt.nSpan + } + if n, err = tt.t.Span([]byte(tt.in), tt.atEOF); n != p || err != tt.errSpan { + t.Errorf("%d:%s:span: got %d, %v; want %d, %v", i, tt.desc, n, err, p, tt.errSpan) + } } func idem(r rune) rune { return r } @@ -90,6 +103,7 @@ func TestMap(t *testing.T) { out: "ç", outFull: "çççç", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "short dst ascii, no change", @@ -108,6 +122,7 @@ func TestMap(t *testing.T) { out: "ç", outFull: "ç\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "short dst writing incomplete rune", @@ -117,6 +132,7 @@ func TestMap(t *testing.T) { out: "ç", outFull: "ç\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "short dst, longer", @@ -144,6 +160,7 @@ func TestMap(t *testing.T) { out: "\ufffdHello", outFull: "\ufffdHello\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "short src", @@ -153,6 +170,7 @@ func TestMap(t *testing.T) { out: "ç", outFull: "ç\ufffd", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "invalid input, atEOF", @@ -161,6 +179,7 @@ func TestMap(t *testing.T) { in: "\x80", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "invalid input, !atEOF", @@ -169,14 +188,26 @@ func TestMap(t *testing.T) { in: "\x80", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, + t: rotate, + }, { + desc: "incomplete rune !atEOF", + szDst: large, + atEOF: false, + in: "\xc2", + out: "", + outFull: "\ufffd", + err: transform.ErrShortSrc, + errSpan: transform.ErrShortSrc, t: rotate, }, { desc: "invalid input, incomplete rune atEOF", szDst: large, atEOF: true, - in: "\xc0", + in: "\xc2", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "misc correct", @@ -185,6 +216,7 @@ func TestMap(t *testing.T) { in: "a\U00012345 ç!", out: "ça 中!", outFull: "ça 中!", + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "misc correct and invalid", @@ -193,6 +225,7 @@ func TestMap(t *testing.T) { in: "Hello\x80 w\x80orl\xc0d!\xc0", out: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "misc correct and invalid, short src", @@ -202,6 +235,7 @@ func TestMap(t *testing.T) { out: "Hello\ufffd w\ufffdorl\ufffdd!", outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, t: rotate, }, { desc: "misc correct and invalid, short src, replacing RuneError", @@ -210,6 +244,7 @@ func TestMap(t *testing.T) { in: "Hel\ufffdlo\x80 w\x80orl\xc0d!\xc2", out: "Hel?lo? w?orl?d!", outFull: "Hel?lo? w?orl?d!?", + errSpan: transform.ErrEndOfSpan, err: transform.ErrShortSrc, t: Map(func(r rune) rune { if r == utf8.RuneError { @@ -242,6 +277,7 @@ func TestRemove(t *testing.T) { in: "aaaa", out: "", outFull: "", + errSpan: transform.ErrEndOfSpan, t: remove, }, 2: { @@ -250,6 +286,7 @@ func TestRemove(t *testing.T) { in: "aaaa", out: "", outFull: "", + errSpan: transform.ErrEndOfSpan, t: remove, }, 3: { @@ -258,6 +295,7 @@ func TestRemove(t *testing.T) { in: "baaaa", out: "b", outFull: "b", + errSpan: transform.ErrEndOfSpan, t: remove, }, 4: { @@ -266,6 +304,7 @@ func TestRemove(t *testing.T) { in: "açaaa", out: "ç", outFull: "ç", + errSpan: transform.ErrEndOfSpan, t: remove, }, 5: { @@ -274,6 +313,7 @@ func TestRemove(t *testing.T) { in: "aaaç", out: "ç", outFull: "ç", + errSpan: transform.ErrEndOfSpan, t: remove, }, 6: { @@ -283,6 +323,7 @@ func TestRemove(t *testing.T) { out: "", outFull: "\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: remove, }, 7: { @@ -292,6 +333,7 @@ func TestRemove(t *testing.T) { out: "", outFull: "\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: remove, }, 8: { @@ -301,6 +343,7 @@ func TestRemove(t *testing.T) { out: "", outFull: "\ufffd", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, t: remove, }, 9: { @@ -309,6 +352,7 @@ func TestRemove(t *testing.T) { in: "\x80", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: remove, }, 10: { @@ -317,78 +361,104 @@ func TestRemove(t *testing.T) { in: "\x80", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: remove, }, 11: { szDst: large, atEOF: true, - in: "\xc0", + in: "\xc2", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: remove, }, 12: { + szDst: large, + atEOF: false, + in: "\xc2", + out: "", + outFull: "\ufffd", + err: transform.ErrShortSrc, + errSpan: transform.ErrShortSrc, + t: remove, + }, + 13: { szDst: large, atEOF: true, in: "Hello \U00012345world!", out: "Hll wrld!", outFull: "Hll wrld!", + errSpan: transform.ErrEndOfSpan, t: remove, }, - 13: { + 14: { szDst: large, atEOF: true, in: "Hello\x80 w\x80orl\xc0d!\xc0", out: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd", outFull: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd", + errSpan: transform.ErrEndOfSpan, t: remove, }, - 14: { + 15: { szDst: large, atEOF: false, in: "Hello\x80 w\x80orl\xc0d!\xc2", out: "Hll\ufffd w\ufffdrl\ufffdd!", outFull: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, t: remove, }, - 15: { + 16: { szDst: large, atEOF: false, in: "Hel\ufffdlo\x80 w\x80orl\xc0d!\xc2", out: "Hello world!", outFull: "Hello world!", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, t: Remove(Predicate(func(r rune) bool { return r == utf8.RuneError })), }, - 16: { + 17: { szDst: 4, atEOF: true, in: "Hellø", out: "Hll", outFull: "Hllø", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: remove, }, - 17: { + 18: { szDst: 4, atEOF: false, in: "Hellø", out: "Hll", outFull: "Hllø", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: remove, }, - 18: { + 19: { szDst: 8, atEOF: false, in: "\x80Hello\uFF24\x80", out: "\ufffdHll", outFull: "\ufffdHll\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: remove, }, - } { + 20: { + szDst: 8, + atEOF: false, + in: "Hllll", + out: "Hllll", + outFull: "Hllll", + t: remove, + }} { tt.check(t, i) } } @@ -421,15 +491,17 @@ func TestReplaceIllFormed(t *testing.T) { out: "a", outFull: "a\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: replace, }, 3: { szDst: 1, atEOF: true, - in: "a\xc0", + in: "a\xc2", out: "a", outFull: "a\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, t: replace, }, 4: { @@ -438,6 +510,7 @@ func TestReplaceIllFormed(t *testing.T) { in: "\x80", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: replace, }, 5: { @@ -446,6 +519,7 @@ func TestReplaceIllFormed(t *testing.T) { in: "\x80", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: replace, }, 6: { @@ -454,6 +528,7 @@ func TestReplaceIllFormed(t *testing.T) { in: "\xc2", out: "\ufffd", outFull: "\ufffd", + errSpan: transform.ErrEndOfSpan, t: replace, }, 7: { @@ -463,6 +538,7 @@ func TestReplaceIllFormed(t *testing.T) { out: "", outFull: "\ufffd", err: transform.ErrShortSrc, + errSpan: transform.ErrShortSrc, t: replace, }, 8: { @@ -479,6 +555,7 @@ func TestReplaceIllFormed(t *testing.T) { in: "Hello\x80 w\x80orl\xc2d!\xc2", out: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", + errSpan: transform.ErrEndOfSpan, t: replace, }, 10: { @@ -488,6 +565,7 @@ func TestReplaceIllFormed(t *testing.T) { out: "Hello\ufffd w\ufffdorl\ufffdd!", outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", err: transform.ErrShortSrc, + errSpan: transform.ErrEndOfSpan, t: replace, }, 16: { @@ -497,6 +575,16 @@ func TestReplaceIllFormed(t *testing.T) { out: "\ufffdHello", outFull: "\ufffdHello\ufffd", err: transform.ErrShortDst, + errSpan: transform.ErrEndOfSpan, + t: replace, + }, + 17: { + szDst: 10, + atEOF: false, + in: "\ufffdHello\ufffd", + out: "\ufffdHello", + outFull: "\ufffdHello\ufffd", + err: transform.ErrShortDst, t: replace, }, } { @@ -530,52 +618,45 @@ func TestReplaceIllFormedAlloc(t *testing.T) { } } -func BenchmarkRemove(b *testing.B) { - dst := make([]byte, len(input)) - src := []byte(input) - - r := Remove(Predicate(func(r rune) bool { return r == 'e' })) - b.ResetTimer() +func doBench(b *testing.B, t Transformer) { + for _, bc := range []struct{ name, data string }{ + {"ascii", testtext.ASCII}, + {"3byte", testtext.ThreeByteUTF8}, + } { + dst := make([]byte, 2*len(bc.data)) + src := []byte(bc.data) - for i := 0; i < b.N; i++ { - r.Transform(dst, src, true) + testtext.Bench(b, bc.name+"/transform", func(b *testing.B) { + b.SetBytes(int64(len(src))) + for i := 0; i < b.N; i++ { + t.Transform(dst, src, true) + } + }) + src = t.Bytes(src) + t.Reset() + testtext.Bench(b, bc.name+"/span", func(b *testing.B) { + b.SetBytes(int64(len(src))) + for i := 0; i < b.N; i++ { + t.Span(src, true) + } + }) } } -func BenchmarkMapAll(b *testing.B) { - dst := make([]byte, 2*len(input)) - src := []byte(input) - - r := Map(func(r rune) rune { return 'a' }) - b.ResetTimer() +func BenchmarkRemove(b *testing.B) { + doBench(b, Remove(Predicate(func(r rune) bool { return r == 'e' }))) +} - for i := 0; i < b.N; i++ { - r.Transform(dst, src, true) - } +func BenchmarkMapAll(b *testing.B) { + doBench(b, Map(func(r rune) rune { return 'a' })) } func BenchmarkMapNone(b *testing.B) { - dst := make([]byte, 2*len(input)) - src := []byte(input) - - r := Map(func(r rune) rune { return r }) - b.ResetTimer() - - for i := 0; i < b.N; i++ { - r.Transform(dst, src, true) - } + doBench(b, Map(func(r rune) rune { return r })) } func BenchmarkReplaceIllFormed(b *testing.B) { - dst := make([]byte, 2*len(input)) - src := []byte(input) - - t := ReplaceIllFormed() - b.ResetTimer() - - for i := 0; i < b.N; i++ { - t.Transform(dst, src, true) - } + doBench(b, ReplaceIllFormed()) } var ( diff --git a/vendor/golang.org/x/text/search/index.go b/vendor/golang.org/x/text/search/index.go index 64820ad904..35de8f5fbb 100644 --- a/vendor/golang.org/x/text/search/index.go +++ b/vendor/golang.org/x/text/search/index.go @@ -7,41 +7,29 @@ package search +import "golang.org/x/text/internal/colltab" + +const blockSize = 64 + +func getTable(t tableIndex) *colltab.Table { + return &colltab.Table{ + Index: colltab.Trie{ + Index0: mainLookup[:][blockSize*t.lookupOffset:], + Values0: mainValues[:][blockSize*t.valuesOffset:], + Index: mainLookup[:], + Values: mainValues[:], + }, + ExpandElem: mainExpandElem[:], + ContractTries: colltab.ContractTrieSet(mainCTEntries[:]), + ContractElem: mainContractElem[:], + MaxContractLen: 18, + VariableTop: varTop, + } +} + // tableIndex holds information for constructing a table // for a certain locale based on the main table. type tableIndex struct { lookupOffset uint32 valuesOffset uint32 } - -func (t tableIndex) TrieIndex() []uint16 { - return mainLookup[:] -} - -func (t tableIndex) TrieValues() []uint32 { - return mainValues[:] -} - -func (t tableIndex) FirstBlockOffsets() (lookup, value uint16) { - return uint16(t.lookupOffset), uint16(t.valuesOffset) -} - -func (t tableIndex) ExpandElems() []uint32 { - return mainExpandElem[:] -} - -func (t tableIndex) ContractTries() []struct{ l, h, n, i uint8 } { - return mainCTEntries[:] -} - -func (t tableIndex) ContractElems() []uint32 { - return mainContractElem[:] -} - -func (t tableIndex) MaxContractLen() int { - return 18 // TODO: generate -} - -func (t tableIndex) VariableTop() uint32 { - return varTop -} diff --git a/vendor/golang.org/x/text/search/pattern.go b/vendor/golang.org/x/text/search/pattern.go index 439d1d7f7a..2497cfd2f1 100644 --- a/vendor/golang.org/x/text/search/pattern.go +++ b/vendor/golang.org/x/text/search/pattern.go @@ -5,8 +5,7 @@ package search import ( - "golang.org/x/text/collate/colltab" - newcolltab "golang.org/x/text/internal/colltab" + "golang.org/x/text/internal/colltab" ) // TODO: handle variable primary weights? @@ -44,7 +43,7 @@ func isIgnorable(m *Matcher, e colltab.Elem) bool { // TODO: Use a Boyer-Moore-like algorithm (probably Sunday) for searching. -func (p *Pattern) forwardSearch(it *newcolltab.Iter) (start, end int) { +func (p *Pattern) forwardSearch(it *colltab.Iter) (start, end int) { for start := 0; it.Next(); it.Reset(start) { nextStart := it.End() if end := p.searchOnce(it); end != -1 { @@ -55,7 +54,7 @@ func (p *Pattern) forwardSearch(it *newcolltab.Iter) (start, end int) { return -1, -1 } -func (p *Pattern) anchoredForwardSearch(it *newcolltab.Iter) (start, end int) { +func (p *Pattern) anchoredForwardSearch(it *colltab.Iter) (start, end int) { if it.Next() { if end := p.searchOnce(it); end != -1 { return 0, end @@ -90,7 +89,7 @@ func tertiary(e colltab.Elem) int { // to be filled with collation elements of the first segment, where n is the // number of source bytes consumed for this segment. It will return the end // position of the match or -1. -func (p *Pattern) searchOnce(it *newcolltab.Iter) (end int) { +func (p *Pattern) searchOnce(it *colltab.Iter) (end int) { var pLevel [4]int m := p.m diff --git a/vendor/golang.org/x/text/search/search.go b/vendor/golang.org/x/text/search/search.go index 0ad153478e..894b6c6c2b 100644 --- a/vendor/golang.org/x/text/search/search.go +++ b/vendor/golang.org/x/text/search/search.go @@ -18,8 +18,7 @@ package search // import "golang.org/x/text/search" import ( "strings" - "golang.org/x/text/collate/colltab" - newcolltab "golang.org/x/text/internal/colltab" + "golang.org/x/text/internal/colltab" "golang.org/x/text/language" ) @@ -76,7 +75,7 @@ func init() { // New returns a new Matcher for the given language and options. func New(t language.Tag, opts ...Option) *Matcher { m := &Matcher{ - w: colltab.Init(locales[newcolltab.MatchLang(t, tags)]), + w: getTable(locales[colltab.MatchLang(t, tags)]), } for _, f := range opts { f(m) @@ -136,7 +135,7 @@ func (m *Matcher) EqualString(a, b string) bool { // Compile compiles and returns a pattern that can be used for faster searching. func (m *Matcher) Compile(b []byte) *Pattern { p := &Pattern{m: m} - iter := newcolltab.Iter{Weighter: m.w} + iter := colltab.Iter{Weighter: m.w} for iter.SetInput(b); iter.Next(); { } p.ce = iter.Elems @@ -148,7 +147,7 @@ func (m *Matcher) Compile(b []byte) *Pattern { // searching. func (m *Matcher) CompileString(s string) *Pattern { p := &Pattern{m: m} - iter := newcolltab.Iter{Weighter: m.w} + iter := colltab.Iter{Weighter: m.w} for iter.SetInputString(s); iter.Next(); { } p.ce = iter.Elems @@ -174,7 +173,7 @@ func (p *Pattern) Index(b []byte, opts ...IndexOption) (start, end int) { // and small enough to not cause too much overhead initializing. var buf [8]colltab.Elem - it := &newcolltab.Iter{ + it := &colltab.Iter{ Weighter: p.m.w, Elems: buf[:0], } @@ -204,7 +203,7 @@ func (p *Pattern) IndexString(s string, opts ...IndexOption) (start, end int) { // and small enough to not cause too much overhead initializing. var buf [8]colltab.Elem - it := &newcolltab.Iter{ + it := &colltab.Iter{ Weighter: p.m.w, Elems: buf[:0], } diff --git a/vendor/golang.org/x/text/search/tables.go b/vendor/golang.org/x/text/search/tables.go index 3573b687cf..72d27b5d4d 100644 --- a/vendor/golang.org/x/text/search/tables.go +++ b/vendor/golang.org/x/text/search/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package search @@ -12194,7 +12194,7 @@ var mainLookup = [4864]uint16{ } // mainCTEntries: 248 entries, 992 bytes -var mainCTEntries = [248]struct{ l, h, n, i uint8 }{ +var mainCTEntries = [248]struct{ L, H, N, I uint8 }{ {0xCE, 0x1, 1, 255}, {0xC2, 0x0, 1, 255}, {0xB7, 0xB7, 0, 1}, diff --git a/vendor/golang.org/x/text/secure/bidirule/bench_test.go b/vendor/golang.org/x/text/secure/bidirule/bench_test.go new file mode 100644 index 0000000000..2db922bfdc --- /dev/null +++ b/vendor/golang.org/x/text/secure/bidirule/bench_test.go @@ -0,0 +1,54 @@ +// 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 + +import ( + "testing" + + "golang.org/x/text/internal/testtext" +) + +var benchData = []struct{ name, data string }{ + {"ascii", "Scheveningen"}, + {"arabic", "دبي"}, + {"hangul", "다음과"}, +} + +func doBench(b *testing.B, fn func(b *testing.B, data string)) { + for _, d := range benchData { + testtext.Bench(b, d.name, func(b *testing.B) { fn(b, d.data) }) + } +} + +func BenchmarkSpan(b *testing.B) { + r := New() + doBench(b, func(b *testing.B, str string) { + b.SetBytes(int64(len(str))) + data := []byte(str) + for i := 0; i < b.N; i++ { + r.Reset() + r.Span(data, true) + } + }) +} + +func BenchmarkDirectionASCII(b *testing.B) { + doBench(b, func(b *testing.B, str string) { + b.SetBytes(int64(len(str))) + data := []byte(str) + for i := 0; i < b.N; i++ { + Direction(data) + } + }) +} + +func BenchmarkDirectionStringASCII(b *testing.B) { + doBench(b, func(b *testing.B, str string) { + b.SetBytes(int64(len(str))) + for i := 0; i < b.N; i++ { + DirectionString(str) + } + }) +} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule.go b/vendor/golang.org/x/text/secure/bidirule/bidirule.go index 277257fd79..a7161bdd9b 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule.go @@ -123,34 +123,64 @@ var transitions = [...][2]ruleTransition{ // vice versa. const exclusiveRTL = uint16(1< U+00E5 - {"A\u030A", "å", nil}, // A + ring - {"\u00C5", "å", nil}, // A with ring - {"\u00E7", "ç", nil}, // c cedille - {"\u0063\u0327", "ç", nil}, // c + cedille + {"\u16EE", "", errDisallowedRune}, // Nl RUNIC ARLAUG SYMBOL + {"\u0488", "", errDisallowedRune}, // Me COMBINING CYRILLIC HUNDRED THOUSANDS SIGN + {"\u212B", "\u00e5", nil}, // Angstrom sign, NFC -> U+00E5 + {"A\u030A", "å", nil}, // A + ring + {"\u00C5", "å", nil}, // A with ring + {"\u00E7", "ç", nil}, // c cedille + {"\u0063\u0327", "ç", nil}, // c + cedille {"\u0158", "ř", nil}, {"\u0052\u030C", "ř", nil}, {"\u1E61", "\u1E61", nil}, // LATIN SMALL LETTER S WITH DOT ABOVE - // U+1e9B: case folded. - {"ẛ", "\u1E61", nil}, // LATIN SMALL LETTER LONG S WITH DOT ABOVE // Confusable characters ARE allowed and should NOT be mapped. {"\u0410", "\u0430", nil}, // CYRILLIC CAPITAL LETTER A @@ -248,6 +254,17 @@ var testCases = []struct { }}, } +func doTests(t *testing.T, fn func(t *testing.T, p *Profile, tc testCase)) { + for _, g := range enforceTestCases { + for i, tc := range g.cases { + name := fmt.Sprintf("%s:%d:%+q", g.name, i, tc.input) + testtext.Run(t, name, func(t *testing.T) { + fn(t, g.p, tc) + }) + } + } +} + func TestString(t *testing.T) { doTests(t, func(t *testing.T, p *Profile, tc testCase) { if e, err := p.String(tc.input); tc.err != err || e != tc.output { @@ -278,3 +295,99 @@ func TestAppend(t *testing.T) { } }) } + +func TestStringMallocs(t *testing.T) { + if n := testtext.AllocsPerRun(100, func() { UsernameCaseMapped.String("helloworld") }); n > 0 { + // TODO: reduce this to 0. + t.Skipf("got %f allocs, want 0", n) + } +} + +func TestAppendMallocs(t *testing.T) { + str := []byte("helloworld") + out := make([]byte, 0, len(str)) + if n := testtext.AllocsPerRun(100, func() { UsernameCaseMapped.Append(out, str) }); n > 0 { + t.Errorf("got %f allocs, want 0", n) + } +} + +func TestTransformMallocs(t *testing.T) { + str := []byte("helloworld") + out := make([]byte, 0, len(str)) + tr := UsernameCaseMapped.NewTransformer() + if n := testtext.AllocsPerRun(100, func() { + tr.Reset() + tr.Transform(out, str, true) + }); n > 0 { + t.Errorf("got %f allocs, want 0", n) + } +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +// TestTransformerShortBuffers tests that the precis.Transformer implements the +// spirit, not just the letter (the method signatures), of the +// transform.Transformer interface. +// +// In particular, it tests that, if one or both of the dst or src buffers are +// short, so that multiple Transform calls are required to complete the overall +// transformation, the end result is identical to one Transform call with +// sufficiently long buffers. +func TestTransformerShortBuffers(t *testing.T) { + srcUnit := []byte("a\u0300cce\u0301nts") // NFD normalization form. + wantUnit := []byte("àccénts") // NFC normalization form. + src := bytes.Repeat(srcUnit, 16) + want := bytes.Repeat(wantUnit, 16) + const long = 4096 + dst := make([]byte, long) + + // 5, 7, 9, 11, 13, 16 and 17 are all pair-wise co-prime, which means that + // slicing the dst and src buffers into 5, 7, 13 and 17 byte chunks will + // fall at different places inside the repeated srcUnit's and wantUnit's. + if len(srcUnit) != 11 || len(wantUnit) != 9 || len(src) > long || len(want) > long { + t.Fatal("inconsistent lengths") + } + + tr := NewFreeform().NewTransformer() + for _, deltaD := range []int{5, 7, 13, 17, long} { + loop: + for _, deltaS := range []int{5, 7, 13, 17, long} { + tr.Reset() + d0 := 0 + s0 := 0 + for { + d1 := min(len(dst), d0+deltaD) + s1 := min(len(src), s0+deltaS) + nDst, nSrc, err := tr.Transform(dst[d0:d1:d1], src[s0:s1:s1], s1 == len(src)) + d0 += nDst + s0 += nSrc + if err == nil { + break + } + if err == transform.ErrShortDst || err == transform.ErrShortSrc { + continue + } + t.Errorf("deltaD=%d, deltaS=%d: %v", deltaD, deltaS, err) + continue loop + } + if s0 != len(src) { + t.Errorf("deltaD=%d, deltaS=%d: s0: got %d, want %d", deltaD, deltaS, s0, len(src)) + continue + } + if d0 != len(want) { + t.Errorf("deltaD=%d, deltaS=%d: d0: got %d, want %d", deltaD, deltaS, d0, len(want)) + continue + } + got := dst[:d0] + if !bytes.Equal(got, want) { + t.Errorf("deltaD=%d, deltaS=%d:\ngot %q\nwant %q", deltaD, deltaS, got, want) + continue + } + } + } +} diff --git a/vendor/golang.org/x/text/secure/precis/go1_6_test.go b/vendor/golang.org/x/text/secure/precis/go1_6_test.go deleted file mode 100644 index 663617dda5..0000000000 --- a/vendor/golang.org/x/text/secure/precis/go1_6_test.go +++ /dev/null @@ -1,24 +0,0 @@ -// 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 precis - -import ( - "fmt" - "testing" -) - -// doTests runs all tests without using t.Run. As a result, context may be -// missing, but at least all tests are run. -func doTests(t *testing.T, fn func(t *testing.T, p *Profile, tc testCase)) { - for _, g := range testCases { - for i, tc := range g.cases { - name := fmt.Sprintf("%s:%d:%+q", g.name, i, tc.input) - t.Log("Testing ", name) - fn(t, g.p, tc) - } - } -} diff --git a/vendor/golang.org/x/text/secure/precis/go1_7_test.go b/vendor/golang.org/x/text/secure/precis/go1_7_test.go deleted file mode 100644 index 05779f386a..0000000000 --- a/vendor/golang.org/x/text/secure/precis/go1_7_test.go +++ /dev/null @@ -1,23 +0,0 @@ -// 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 precis - -import ( - "fmt" - "testing" -) - -func doTests(t *testing.T, fn func(t *testing.T, p *Profile, tc testCase)) { - for _, g := range testCases { - for i, tc := range g.cases { - name := fmt.Sprintf("%s:%d:%+q", g.name, i, tc.input) - t.Run(name, func(t *testing.T) { - fn(t, g.p, tc) - }) - } - } -} diff --git a/vendor/golang.org/x/text/secure/precis/options.go b/vendor/golang.org/x/text/secure/precis/options.go index ec63783ef7..488f0b1f7b 100644 --- a/vendor/golang.org/x/text/secure/precis/options.go +++ b/vendor/golang.org/x/text/secure/precis/options.go @@ -6,10 +6,10 @@ package precis import ( "golang.org/x/text/cases" + "golang.org/x/text/language" "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. @@ -20,11 +20,12 @@ type options struct { foldWidth bool // Enforcement options - cases transform.Transformer + asciiLower bool + cases transform.SpanningTransformer disallow runes.Set - norm norm.Form - additional []func() transform.Transformer - width *width.Transformer + norm transform.SpanningTransformer + additional []func() transform.SpanningTransformer + width transform.SpanningTransformer disallowEmpty bool bidiRule bool @@ -36,6 +37,11 @@ func getOpts(o ...Option) (res options) { for _, f := range o { f(&res) } + // Using a SpanningTransformer, instead of norm.Form prevents an allocation + // down the road. + if res.norm == nil { + res.norm = norm.NFC + } return } @@ -74,11 +80,36 @@ var ( } ) +// TODO: move this logic to package transform + +type spanWrap struct{ transform.Transformer } + +func (s spanWrap) Span(src []byte, atEOF bool) (n int, err error) { + return 0, transform.ErrEndOfSpan +} + +// TODO: allow different types? For instance: +// func() transform.Transformer +// func() transform.SpanningTransformer +// func([]byte) bool // validation only +// +// Also, would be great if we could detect if a transformer is reentrant. + // 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 + for _, f := range t { + sf := func() transform.SpanningTransformer { + return f().(transform.SpanningTransformer) + } + if _, ok := f().(transform.SpanningTransformer); !ok { + sf = func() transform.SpanningTransformer { + return spanWrap{f()} + } + } + o.additional = append(o.additional, sf) + } } } @@ -93,10 +124,26 @@ func Norm(f norm.Form) Option { // provided to determine the type of case folding used. func FoldCase(opts ...cases.Option) Option { return func(o *options) { + o.asciiLower = true o.cases = cases.Fold(opts...) } } +// The LowerCase option defines a Profile's case mapping rule. Options can be +// provided to determine the type of case folding used. +func LowerCase(opts ...cases.Option) Option { + return func(o *options) { + o.asciiLower = true + if len(opts) == 0 { + o.cases = cases.Lower(language.Und, cases.HandleFinalSigma(false)) + return + } + + opts = append([]cases.Option{cases.HandleFinalSigma(false)}, opts...) + o.cases = cases.Lower(language.Und, 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 { diff --git a/vendor/golang.org/x/text/secure/precis/profile.go b/vendor/golang.org/x/text/secure/precis/profile.go index fd5c422fbc..bf1025338b 100644 --- a/vendor/golang.org/x/text/secure/precis/profile.go +++ b/vendor/golang.org/x/text/secure/precis/profile.go @@ -5,9 +5,12 @@ package precis import ( + "bytes" "errors" "unicode/utf8" + "golang.org/x/text/cases" + "golang.org/x/text/language" "golang.org/x/text/runes" "golang.org/x/text/secure/bidirule" "golang.org/x/text/transform" @@ -90,32 +93,80 @@ type buffers struct { 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. +func (b *buffers) apply(t transform.SpanningTransformer) (err error) { + n, err := t.Span(b.src, true) + if err != transform.ErrEndOfSpan { + return err + } x := b.next & 1 - b.src, _, err = transform.Append(t, b.buf[x][:0], b.src) + if b.buf[x] == nil { + b.buf[x] = make([]byte, 0, 8+len(b.src)+len(b.src)>>2) + } + span := append(b.buf[x][:0], b.src[:n]...) + b.src, _, err = transform.Append(t, span, b.src[n:]) b.buf[x] = b.src b.next++ return err } -func (b *buffers) enforce(p *Profile, src []byte) (str []byte, err error) { +// Pre-allocate transformers when possible. In some cases this avoids allocation. +var ( + foldWidthT transform.SpanningTransformer = width.Fold + lowerCaseT transform.SpanningTransformer = cases.Lower(language.Und, cases.HandleFinalSigma(false)) +) + +// TODO: make this a method on profile. + +func (b *buffers) enforce(p *Profile, src []byte, comparing bool) (str []byte, err error) { b.src = src + ascii := true + for _, c := range src { + if c >= utf8.RuneSelf { + ascii = false + break + } + } + // ASCII fast path. + if ascii { + for _, f := range p.options.additional { + if err = b.apply(f()); err != nil { + return nil, err + } + } + switch { + case p.options.asciiLower || (comparing && p.options.ignorecase): + for i, c := range b.src { + if 'A' <= c && c <= 'Z' { + b.src[i] = c ^ 1<<5 + } + } + case p.options.cases != nil: + b.apply(p.options.cases) + } + c := checker{p: p} + if _, err := c.span(b.src, true); err != nil { + return nil, err + } + if p.disallow != nil { + for _, c := range b.src { + if p.disallow.Contains(rune(c)) { + return nil, errDisallowedRune + } + } + } + if p.options.disallowEmpty && len(b.src) == 0 { + return nil, errEmptyString + } + return b.src, nil + } + // 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 - } + if p.options.foldWidth || (p.options.ignorecase && comparing) { + b.apply(foldWidthT) } for _, f := range p.options.additional { if err = b.apply(f()); err != nil { @@ -123,24 +174,14 @@ func (b *buffers) enforce(p *Profile, src []byte) (str []byte, err error) { } } if p.options.cases != nil { - if err = b.apply(p.options.cases); err != nil { - return nil, err - } + b.apply(p.options.cases) } - 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 comparing && p.options.ignorecase { + b.apply(lowerCaseT) } - if p.options.bidiRule { - if err := b.apply(bidirule.New()); err != nil { - return nil, err - } + b.apply(p.norm) + if p.options.bidiRule && !bidirule.Valid(b.src) { + return nil, bidirule.ErrInvalid } c := checker{p: p} if _, err := c.span(b.src, true); err != nil { @@ -155,9 +196,6 @@ func (b *buffers) enforce(p *Profile, src []byte) (str []byte, err error) { i += size } } - - // TODO: Add the disallow empty rule with a dummy transformer? - if p.options.disallowEmpty && len(b.src) == 0 { return nil, errEmptyString } @@ -168,19 +206,16 @@ func (b *buffers) enforce(p *Profile, src []byte) (str []byte, err error) { // 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) + b, err := buf.enforce(p, src, false) 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) { +func processBytes(p *Profile, b []byte, key bool) ([]byte, error) { var buf buffers - buf.init(8 + len(b) + len(b)>>2) - b, err := buf.enforce(p, b) + b, err := buf.enforce(p, b, key) if err != nil { return nil, err } @@ -192,39 +227,62 @@ func (p *Profile) Bytes(b []byte) ([]byte, error) { return b, nil } -// String returns a string with the result of applying the profile to s. -func (p *Profile) String(s string) (string, error) { +// Bytes returns a new byte slice with the result of applying the profile to b. +func (p *Profile) Bytes(b []byte) ([]byte, error) { + return processBytes(p, b, false) +} + +// AppendCompareKey appends the result of applying p to src (including any +// optional rules to make strings comparable or useful in a map key such as +// applying lowercasing) writing the result to dst. It returns an error if the +// input string is invalid. +func (p *Profile) AppendCompareKey(dst, src []byte) ([]byte, error) { + var buf buffers + b, err := buf.enforce(p, src, true) + if err != nil { + return nil, err + } + return append(dst, b...), nil +} + +func processString(p *Profile, s string, key bool) (string, error) { var buf buffers - buf.init(8 + len(s) + len(s)>>2) - b, err := buf.enforce(p, []byte(s)) + b, err := buf.enforce(p, []byte(s), key) if err != nil { return "", err } return string(b), nil } +// String returns a string with the result of applying the profile to s. +func (p *Profile) String(s string) (string, error) { + return processString(p, s, false) +} + +// CompareKey returns a string that can be used for comparison, hashing, or +// collation. +func (p *Profile) CompareKey(s string) (string, error) { + return processString(p, s, true) +} + // 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) + var buf buffers + + akey, err := buf.enforce(p, []byte(a), true) if err != nil { return false } - b, err = p.String(b) + + buf = buffers{} + bkey, err := buf.enforce(p, []byte(b), true) 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 + return bytes.Compare(akey, bkey) == 0 } // Allowed returns a runes.Set containing every rune that is a member of the @@ -264,33 +322,35 @@ func (c *checker) span(src []byte, atEOF bool) (n int, err error) { } return n, errDisallowedRune } + doLookAhead := false if property(e) < c.p.class.validFrom { if d.rule == nil { return n, errDisallowedRune } - doLookAhead, err := d.rule(c.beforeBits) + 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 + if c.termBits != 0 { + // We are currently in an unterminated lookahead. + if c.beforeBits&c.termBits != 0 { + c.termBits = 0 + c.acceptBits = 0 + } else if c.beforeBits&c.acceptBits == 0 { + // Invalid continuation of the unterminated lookahead sequence. + return n, errContext + } + } + if doLookAhead { + if c.termBits != 0 { + // A previous lookahead run has not been terminated yet. + return n, errContext + } + c.termBits = d.term + c.acceptBits = d.accept } n += sz } @@ -300,18 +360,6 @@ func (c *checker) span(src []byte, atEOF bool) (n int, err error) { 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) { diff --git a/vendor/golang.org/x/text/secure/precis/profile_test.go b/vendor/golang.org/x/text/secure/precis/profile_test.go new file mode 100644 index 0000000000..916fc8b6d7 --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/profile_test.go @@ -0,0 +1,149 @@ +// 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 ( + "fmt" + "math/rand" + "testing" + "unicode" + + "golang.org/x/text/internal/testtext" + "golang.org/x/text/transform" +) + +// copyOrbit is a Transformer for the sole purpose of testing the apply method, +// testing that apply will always call Span for the prefix of the input that +// remains identical and then call Transform for the remainder. It will produce +// inconsistent output for other usage patterns. +// Provided that copyOrbit is used this way, the first t bytes of the output +// will be identical to the input and the remaining output will be the result +// of calling caseOrbit on the remaining input bytes. +type copyOrbit int + +func (t copyOrbit) Reset() {} +func (t copyOrbit) Span(src []byte, atEOF bool) (n int, err error) { + if int(t) == len(src) { + return int(t), nil + } + return int(t), transform.ErrEndOfSpan +} + +// Transform implements transform.Transformer specifically for testing the apply method. +// See documentation of copyOrbit before using this method. +func (t copyOrbit) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + n := copy(dst, src) + for i, c := range dst[:n] { + dst[i] = orbitCase(c) + } + return n, n, nil +} + +func orbitCase(c byte) byte { + if unicode.IsLower(rune(c)) { + return byte(unicode.ToUpper(rune(c))) + } else { + return byte(unicode.ToLower(rune(c))) + } +} + +func TestBuffers(t *testing.T) { + want := "Those who cannot remember the past are condemned to compute it." + + spans := rand.Perm(len(want) + 1) + + // Compute the result of applying copyOrbit(span) transforms in reverse. + input := []byte(want) + for i := len(spans) - 1; i >= 0; i-- { + for j := spans[i]; j < len(input); j++ { + input[j] = orbitCase(input[j]) + } + } + + // Apply the copyOrbit(span) transforms. + b := buffers{src: input} + for _, n := range spans { + b.apply(copyOrbit(n)) + if n%11 == 0 { + b.apply(transform.Nop) + } + } + if got := string(b.src); got != want { + t.Errorf("got %q; want %q", got, want) + } +} + +type compareTestCase struct { + a string + b string + result bool +} + +var compareTestCases = []struct { + name string + p *Profile + cases []compareTestCase +}{ + {"Nickname", Nickname, []compareTestCase{ + {"a", "b", false}, + {" Swan of Avon ", "swan of avon", true}, + {"Foo", "foo", true}, + {"foo", "foo", true}, + {"Foo Bar", "foo bar", true}, + {"foo bar", "foo bar", true}, + {"\u03A3", "\u03C3", true}, + {"\u03A3", "\u03C2", false}, + {"\u03C3", "\u03C2", false}, + {"Richard \u2163", "richard iv", true}, + {"Å", "å", true}, + {"ff", "ff", true}, // because of NFKC + {"ß", "sS", false}, + + // After applying the Nickname profile, \u00a8 becomes \u0020\u0308, + // however because the nickname profile is not idempotent, applying it again + // to \u0020\u0308 results in \u0308. This behavior is "correct", even if it + // is unexpected. + {"\u00a8", "\u0020\u0308", false}, + {"\u0020\u0308", "\u0308", true}, + }}, +} + +func doCompareTests(t *testing.T, fn func(t *testing.T, p *Profile, tc compareTestCase)) { + for _, g := range compareTestCases { + for i, tc := range g.cases { + name := fmt.Sprintf("%s:%d:%+q", g.name, i, tc.a) + testtext.Run(t, name, func(t *testing.T) { + fn(t, g.p, tc) + }) + } + } +} + +func TestCompare(t *testing.T) { + doCompareTests(t, func(t *testing.T, p *Profile, tc compareTestCase) { + if result := p.Compare(tc.a, tc.b); result != tc.result { + t.Errorf("got %v; want %v", result, tc.result) + } + }) +} + +func TestCompareString(t *testing.T) { + doCompareTests(t, func(t *testing.T, p *Profile, tc compareTestCase) { + a, err := p.CompareKey(tc.a) + if err != nil { + t.Errorf("Unexpected error when creating key: %v", err) + return + } + b, err := p.CompareKey(tc.b) + if err != nil { + t.Errorf("Unexpected error when creating key: %v", err) + return + } + + if result := (a == b); result != tc.result { + t.Errorf("got %v; want %v", result, tc.result) + } + }) +} diff --git a/vendor/golang.org/x/text/secure/precis/profiles.go b/vendor/golang.org/x/text/secure/precis/profiles.go index ad50ae857d..86010025c9 100644 --- a/vendor/golang.org/x/text/secure/precis/profiles.go +++ b/vendor/golang.org/x/text/secure/precis/profiles.go @@ -13,44 +13,66 @@ import ( ) 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. + // Implements the Nickname profile specified in RFC 7700. + // The nickname profile is not idempotent and may need to be applied multiple + // times before being used for comparisons. + Nickname *Profile = nickname + + // Implements the UsernameCaseMapped profile specified in RFC 7613. + UsernameCaseMapped *Profile = usernameCaseMap + + // Implements the UsernameCasePreserved profile specified in RFC 7613. + UsernameCasePreserved *Profile = usernameNoCaseMap + + // Implements the OpaqueString profile defined in RFC 7613 for passwords and other secure labels. + OpaqueString *Profile = opaquestring ) -// 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, - ) + nickname = &Profile{ + options: getOpts( + AdditionalMapping(func() transform.Transformer { + return &nickAdditionalMapping{} + }), + IgnoreCase, + Norm(norm.NFKC), + DisallowEmpty, + ), + class: freeform, + } + usernameCaseMap = &Profile{ + options: getOpts( + FoldWidth, + LowerCase(), + Norm(norm.NFC), + BidiRule, + ), + class: identifier, + } + usernameNoCaseMap = &Profile{ + options: getOpts( + FoldWidth, + Norm(norm.NFC), + BidiRule, + ), + class: identifier, + } + opaquestring = &Profile{ + options: getOpts( + AdditionalMapping(func() transform.Transformer { + return mapSpaces + }), + Norm(norm.NFC), + DisallowEmpty, + ), + class: freeform, + } ) + +// mapSpaces is a shared value of a runes.Map transformer. +var mapSpaces transform.Transformer = runes.Map(func(r rune) rune { + if unicode.Is(unicode.Zs, r) { + return ' ' + } + return r +}) diff --git a/vendor/golang.org/x/text/secure/precis/tables.go b/vendor/golang.org/x/text/secure/precis/tables.go index a9b500deb0..2f550c1efa 100644 --- a/vendor/golang.org/x/text/secure/precis/tables.go +++ b/vendor/golang.org/x/text/secure/precis/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package precis diff --git a/vendor/golang.org/x/text/secure/precis/tables_test.go b/vendor/golang.org/x/text/secure/precis/tables_test.go index b4f152c070..67f5b40c67 100644 --- a/vendor/golang.org/x/text/secure/precis/tables_test.go +++ b/vendor/golang.org/x/text/secure/precis/tables_test.go @@ -31,7 +31,7 @@ var exceptions = runes.Predicate(func(r rune) bool { } }) -// Ensure that ceratain properties were generated correctly. +// Ensure that certain properties were generated correctly. func TestTable(t *testing.T) { tests := []tableTest{ tableTest{ diff --git a/vendor/golang.org/x/text/secure/precis/trieval.go b/vendor/golang.org/x/text/secure/precis/trieval.go index fed7d75952..4833f9622a 100644 --- a/vendor/golang.org/x/text/secure/precis/trieval.go +++ b/vendor/golang.org/x/text/secure/precis/trieval.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package precis diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go index 0c2f730ea0..fe47b9b35f 100644 --- a/vendor/golang.org/x/text/transform/transform.go +++ b/vendor/golang.org/x/text/transform/transform.go @@ -24,6 +24,10 @@ var ( // complete the transformation. ErrShortSrc = errors.New("transform: short source buffer") + // ErrEndOfSpan means that the input and output (the transformed input) + // are not identical. + ErrEndOfSpan = errors.New("transform: input and output are not identical") + // 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") @@ -60,6 +64,41 @@ type Transformer interface { Reset() } +// SpanningTransformer extends the Transformer interface with a Span method +// that determines how much of the input already conforms to the Transformer. +type SpanningTransformer interface { + Transformer + + // Span returns a position in src such that transforming src[:n] results in + // identical output src[:n] for these bytes. It does not necessarily return + // the largest such n. The atEOF argument tells whether src represents the + // last bytes of the input. + // + // Callers should always account for the n bytes consumed before + // considering the error err. + // + // A nil error means that all input bytes are known to be identical to the + // output produced by the Transformer. A nil error can be be returned + // regardless of whether atEOF is true. If err is nil, then then n must + // equal len(src); the converse is not necessarily true. + // + // ErrEndOfSpan means that the Transformer output may differ from the + // input after n bytes. Note that n may be len(src), meaning that the output + // would contain additional bytes after otherwise identical output. + // ErrShortSrc means that src had insufficient data to determine whether the + // remaining bytes would change. Other than the error conditions listed + // here, implementations are free to report other errors that arise. + // + // Calling Span can modify the Transformer state as a side effect. In + // effect, it does the transformation just as calling Transform would, only + // without copying to a destination buffer and only up to a point it can + // determine the input and output bytes are the same. This is obviously more + // limited than calling Transform, but can be more efficient in terms of + // copying and allocating buffers. Calls to Span and Transform may be + // interleaved. + Span(src []byte, atEOF bool) (n int, err error) +} + // NopResetter can be embedded by implementations of Transformer to add a nop // Reset method. type NopResetter struct{} @@ -278,6 +317,10 @@ func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { return n, n, err } +func (nop) Span(src []byte, atEOF bool) (n int, err error) { + return len(src), nil +} + type discard struct{ NopResetter } func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { @@ -289,8 +332,8 @@ var ( // by consuming all bytes and writing nothing. Discard Transformer = discard{} - // Nop is a Transformer that copies src to dst. - Nop Transformer = nop{} + // Nop is a SpanningTransformer that copies src to dst. + Nop SpanningTransformer = nop{} ) // chain is a sequence of links. A chain with N Transformers has N+1 links and @@ -358,6 +401,8 @@ func (c *chain) Reset() { } } +// TODO: make chain use Span (is going to be fun to implement!) + // 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. @@ -448,8 +493,7 @@ func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err erro 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. +// Deprecated: use runes.Remove instead. func RemoveFunc(f func(r rune) bool) Transformer { return removeF(f) } diff --git a/vendor/golang.org/x/text/unicode/bidi/bracket.go b/vendor/golang.org/x/text/unicode/bidi/bracket.go index e88119d1b1..601e259203 100644 --- a/vendor/golang.org/x/text/unicode/bidi/bracket.go +++ b/vendor/golang.org/x/text/unicode/bidi/bracket.go @@ -84,7 +84,7 @@ func resolvePairedBrackets(s *isolatingRunSequence) { dirEmbed = R } p.locateBrackets(s.p.pairTypes, s.p.pairValues) - p.resolveBrackets(dirEmbed) + p.resolveBrackets(dirEmbed, s.p.initialTypes) } type bracketPairer struct { @@ -125,6 +125,8 @@ func (p *bracketPairer) matchOpener(pairValues []rune, opener, closer int) bool return pairValues[p.indexes[opener]] == pairValues[p.indexes[closer]] } +const maxPairingDepth = 63 + // locateBrackets locates matching bracket pairs according to BD16. // // This implementation uses a linked list instead of a stack, because, while @@ -136,11 +138,17 @@ func (p *bracketPairer) locateBrackets(pairTypes []bracketType, pairValues []run for i, index := range p.indexes { // look at the bracket type for each character - switch pairTypes[index] { - case bpNone: + if pairTypes[index] == bpNone || p.codesIsolatedRun[i] != ON { // continue scanning - + continue + } + switch pairTypes[index] { case bpOpen: + // check if maximum pairing depth reached + if p.openers.Len() == maxPairingDepth { + p.openers.Init() + return + } // remember opener location, most recent first p.openers.PushFront(i) @@ -270,7 +278,7 @@ func (p *bracketPairer) classBeforePair(loc bracketPair) Class { } // assignBracketType implements rule N0 for a single bracket pair. -func (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class) { +func (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class, initialTypes []Class) { // rule "N0, a", inspect contents of pair dirPair := p.classifyPairContent(loc, dirEmbed) @@ -295,13 +303,33 @@ func (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class) { // direction // set the bracket types to the type found + p.setBracketsToType(loc, dirPair, initialTypes) +} + +func (p *bracketPairer) setBracketsToType(loc bracketPair, dirPair Class, initialTypes []Class) { p.codesIsolatedRun[loc.opener] = dirPair p.codesIsolatedRun[loc.closer] = dirPair + + for i := loc.opener + 1; i < loc.closer; i++ { + index := p.indexes[i] + if initialTypes[index] != NSM { + break + } + p.codesIsolatedRun[i] = dirPair + } + + for i := loc.closer + 1; i < len(p.indexes); i++ { + index := p.indexes[i] + if initialTypes[index] != NSM { + break + } + p.codesIsolatedRun[i] = dirPair + } } // resolveBrackets implements rule N0 for a list of pairs. -func (p *bracketPairer) resolveBrackets(dirEmbed Class) { +func (p *bracketPairer) resolveBrackets(dirEmbed Class, initialTypes []Class) { for _, loc := range p.pairPositions { - p.assignBracketType(loc, dirEmbed) + p.assignBracketType(loc, dirEmbed, initialTypes) } } diff --git a/vendor/golang.org/x/text/unicode/bidi/core.go b/vendor/golang.org/x/text/unicode/bidi/core.go index 381f30ad0a..d4c1399f0d 100644 --- a/vendor/golang.org/x/text/unicode/bidi/core.go +++ b/vendor/golang.org/x/text/unicode/bidi/core.go @@ -309,6 +309,9 @@ func (p *paragraph) determineExplicitEmbeddingLevels() { } if isIsolate { p.resultLevels[i] = stack.lastEmbeddingLevel() + if stack.lastDirectionalOverrideStatus() != ON { + p.resultTypes[i] = stack.lastDirectionalOverrideStatus() + } } var newLevel level @@ -723,7 +726,7 @@ loop: continue loop } } - log.Panicf("invalid bidi code %s present in assertOnly at position %d", t, s.indexes[i]) + log.Panicf("invalid bidi code %v present in assertOnly at position %d", t, s.indexes[i]) } } diff --git a/vendor/golang.org/x/text/unicode/bidi/core_test.go b/vendor/golang.org/x/text/unicode/bidi/core_test.go index d0dfbd88b1..f28d386c8d 100644 --- a/vendor/golang.org/x/text/unicode/bidi/core_test.go +++ b/vendor/golang.org/x/text/unicode/bidi/core_test.go @@ -58,7 +58,7 @@ func TestBidiCore(t *testing.T) { par := newParagraph(types, pairTypes, pairValues, lev) if *testLevels { - levels := par.resultLevels + levels := par.getLevels([]int{len(types)}) for i, s := range wantLevels { if s == "x" { continue @@ -150,7 +150,7 @@ func TestBidiCharacters(t *testing.T) { } if *testLevels { - gotLevels := getLevelStrings(types, par.resultLevels) + gotLevels := getLevelStrings(types, par.getLevels([]int{len(types)})) if got, want := fmt.Sprint(gotLevels), fmt.Sprint(wantLevels); got != want { t.Errorf("%04X %q:%d: got %v; want %v\nval: %x\npair: %v", runes, string(runes), parLevel, got, want, pairValues, pairTypes) } diff --git a/vendor/golang.org/x/text/unicode/bidi/ranges_test.go b/vendor/golang.org/x/text/unicode/bidi/ranges_test.go index a1b313e987..bfaecd502d 100644 --- a/vendor/golang.org/x/text/unicode/bidi/ranges_test.go +++ b/vendor/golang.org/x/text/unicode/bidi/ranges_test.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables.go b/vendor/golang.org/x/text/unicode/bidi/tables.go index 2d4dde07c5..7212d5add1 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/trieval.go b/vendor/golang.org/x/text/unicode/bidi/trieval.go index bebd855efd..4c459c4b72 100644 --- a/vendor/golang.org/x/text/unicode/bidi/trieval.go +++ b/vendor/golang.org/x/text/unicode/bidi/trieval.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package bidi diff --git a/vendor/golang.org/x/text/unicode/cldr/base.go b/vendor/golang.org/x/text/unicode/cldr/base.go index 21821791ec..2382f4d6da 100644 --- a/vendor/golang.org/x/text/unicode/cldr/base.go +++ b/vendor/golang.org/x/text/unicode/cldr/base.go @@ -2,16 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package cldr provides a parser for LDML and related XML formats. -// This package is inteded to be used by the table generation tools -// for the various internationalization-related packages. -// As the XML types are generated from the CLDR DTD, and as the CLDR standard -// is periodically amended, this package may change considerably over time. -// This mostly means that data may appear and disappear between versions. -// That is, old code should keep compiling for newer versions, but data -// may have moved or changed. -// CLDR version 22 is the first version supported by this package. -// Older versions may not work. package cldr import ( diff --git a/vendor/golang.org/x/text/unicode/cldr/cldr.go b/vendor/golang.org/x/text/unicode/cldr/cldr.go index ea3fe139ef..2197f8ac26 100644 --- a/vendor/golang.org/x/text/unicode/cldr/cldr.go +++ b/vendor/golang.org/x/text/unicode/cldr/cldr.go @@ -5,7 +5,7 @@ //go:generate go run makexml.go -output xml.go // Package cldr provides a parser for LDML and related XML formats. -// This package is inteded to be used by the table generation tools +// This package is intended to be used by the table generation tools // for the various internationalization-related packages. // As the XML types are generated from the CLDR DTD, and as the CLDR standard // is periodically amended, this package may change considerably over time. diff --git a/vendor/golang.org/x/text/unicode/cldr/examples_test.go b/vendor/golang.org/x/text/unicode/cldr/examples_test.go index a65e86e6c8..1a69b00738 100644 --- a/vendor/golang.org/x/text/unicode/cldr/examples_test.go +++ b/vendor/golang.org/x/text/unicode/cldr/examples_test.go @@ -7,7 +7,7 @@ import ( ) func ExampleSlice() { - var dr *cldr.CLDR // assume this is initalized + var dr *cldr.CLDR // assume this is initialized x, _ := dr.LDML("en") cs := x.Collations.Collation diff --git a/vendor/golang.org/x/text/unicode/cldr/resolve_test.go b/vendor/golang.org/x/text/unicode/cldr/resolve_test.go index 7b19cef871..3d8edaec85 100644 --- a/vendor/golang.org/x/text/unicode/cldr/resolve_test.go +++ b/vendor/golang.org/x/text/unicode/cldr/resolve_test.go @@ -39,7 +39,7 @@ type fieldTest struct { var testStruct = fieldTest{ Common: Common{ - name: "mapping", // exclude "type" as distinguising attribute + name: "mapping", // exclude "type" as distinguishing attribute Type: "foo", Alt: "foo", }, diff --git a/vendor/golang.org/x/text/unicode/cldr/slice_test.go b/vendor/golang.org/x/text/unicode/cldr/slice_test.go index f354329e25..3d487d3bd1 100644 --- a/vendor/golang.org/x/text/unicode/cldr/slice_test.go +++ b/vendor/golang.org/x/text/unicode/cldr/slice_test.go @@ -158,7 +158,7 @@ func TestSelectOnePerGroup(t *testing.T) { s := MakeSlice(&sl) s.SelectOnePerGroup(tt.attr, tt.values) if len(sl) != len(tt.refs) { - t.Errorf("%d: found result lenght %d; want %d", i, len(sl), len(tt.refs)) + t.Errorf("%d: found result length %d; want %d", i, len(sl), len(tt.refs)) continue } for j, e := range sl { diff --git a/vendor/golang.org/x/text/unicode/cldr/xml.go b/vendor/golang.org/x/text/unicode/cldr/xml.go index 0a6e515c9e..ce3203827e 100644 --- a/vendor/golang.org/x/text/unicode/cldr/xml.go +++ b/vendor/golang.org/x/text/unicode/cldr/xml.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package cldr @@ -126,6 +126,7 @@ type SupplementalData struct { Population string `xml:"population,attr"` LanguagePopulation []*struct { Common + LiteracyPercent string `xml:"literacyPercent,attr"` WritingPercent string `xml:"writingPercent,attr"` PopulationPercent string `xml:"populationPercent,attr"` OfficialStatus string `xml:"officialStatus,attr"` @@ -185,6 +186,11 @@ type SupplementalData struct { Day string `xml:"day,attr"` Territories string `xml:"territories,attr"` } `xml:"weekendEnd"` + WeekOfPreference []*struct { + Common + Locales string `xml:"locales,attr"` + Ordering string `xml:"ordering,attr"` + } `xml:"weekOfPreference"` } `xml:"weekData"` TimeData *struct { Common @@ -512,12 +518,22 @@ type SupplementalData struct { Common LanguageMatches []*struct { Common + ParadigmLocales []*struct { + Common + Locales string `xml:"locales,attr"` + } `xml:"paradigmLocales"` + MatchVariable []*struct { + Common + Id string `xml:"id,attr"` + Value string `xml:"value,attr"` + } `xml:"matchVariable"` LanguageMatch []*struct { Common Desired string `xml:"desired,attr"` - Oneway string `xml:"oneway,attr"` - Percent string `xml:"percent,attr"` Supported string `xml:"supported,attr"` + Percent string `xml:"percent,attr"` + Distance string `xml:"distance,attr"` + Oneway string `xml:"oneway,attr"` } `xml:"languageMatch"` } `xml:"languageMatches"` } `xml:"languageMatching"` @@ -690,6 +706,15 @@ type LDML struct { Common Registry string `xml:"registry,attr"` } `xml:"mapping"` + ParseLenients []*struct { + Common + Scope string `xml:"scope,attr"` + Level string `xml:"level,attr"` + ParseLenient []*struct { + Common + Sample string `xml:"sample,attr"` + } `xml:"parseLenient"` + } `xml:"parseLenients"` } `xml:"characters"` Delimiters *struct { Common @@ -731,6 +756,7 @@ type LDML struct { Count string `xml:"count,attr"` } `xml:"relativeTimePattern"` } `xml:"relativeTime"` + RelativePeriod []*Common `xml:"relativePeriod"` } `xml:"field"` } `xml:"fields"` TimeZoneNames *TimeZoneNames `xml:"timeZoneNames"` @@ -801,6 +827,14 @@ type LDML struct { Noexpr []*Common `xml:"noexpr"` } `xml:"messages"` } `xml:"posix"` + CharacterLabels *struct { + Common + CharacterLabelPattern []*struct { + Common + Count string `xml:"count,attr"` + } `xml:"characterLabelPattern"` + CharacterLabel []*Common `xml:"characterLabel"` + } `xml:"characterLabels"` Segmentations *struct { Common Segmentation []*struct { @@ -1096,7 +1130,8 @@ type Calendar struct { Common DateFormatItem []*struct { Common - Id string `xml:"id,attr"` + Id string `xml:"id,attr"` + Count string `xml:"count,attr"` } `xml:"dateFormatItem"` } `xml:"availableFormats"` AppendItems []*struct { @@ -1135,6 +1170,7 @@ type Calendar struct { Count string `xml:"count,attr"` } `xml:"relativeTimePattern"` } `xml:"relativeTime"` + RelativePeriod []*Common `xml:"relativePeriod"` } `xml:"field"` } `xml:"fields"` } @@ -1434,7 +1470,18 @@ type Numbers struct { Count string `xml:"count,attr"` } `xml:"pattern"` } `xml:"miscPatterns"` + MinimalPairs []*struct { + Common + PluralMinimalPairs []*struct { + Common + Count string `xml:"count,attr"` + } `xml:"pluralMinimalPairs"` + OrdinalMinimalPairs []*struct { + Common + Ordinal string `xml:"ordinal,attr"` + } `xml:"ordinalMinimalPairs"` + } `xml:"minimalPairs"` } // Version is the version of CLDR from which the XML definitions are generated. -const Version = "29" +const Version = "31" diff --git a/vendor/golang.org/x/text/unicode/norm/composition.go b/vendor/golang.org/x/text/unicode/norm/composition.go index d17b278adc..bab4c5de02 100644 --- a/vendor/golang.org/x/text/unicode/norm/composition.go +++ b/vendor/golang.org/x/text/unicode/norm/composition.go @@ -33,17 +33,9 @@ const ( // 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. +// first inserts the first rune of a segment. It is a faster version of next if +// it is known p represents the first rune in a segment. func (ss *streamSafe) first(p Properties) { - if *ss != 0 { - panic("!= 0") - } *ss = streamSafe(p.nTrailingNonStarters()) } @@ -66,7 +58,7 @@ func (ss *streamSafe) next(p Properties) ssState { // be a non-starter. Note that it always hold that if nLead > 0 then // nLead == nTrail. if n == 0 { - *ss = 0 + *ss = streamSafe(p.nTrailingNonStarters()) return ssStarter } return ssSuccess @@ -142,7 +134,6 @@ func (rb *reorderBuffer) setFlusher(out []byte, f func(*reorderBuffer) bool) { func (rb *reorderBuffer) reset() { rb.nrune = 0 rb.nbyte = 0 - rb.ss = 0 } func (rb *reorderBuffer) doFlush() bool { @@ -257,6 +248,9 @@ func (rb *reorderBuffer) insertUnsafe(src input, i int, info Properties) { // It flushes the buffer on each new segment start. func (rb *reorderBuffer) insertDecomposed(dcomp []byte) insertErr { rb.tmpBytes.setBytes(dcomp) + // As the streamSafe accounting already handles the counting for modifiers, + // we don't have to call next. However, we do need to keep the accounting + // intact when flushing the buffer. for i := 0; i < len(dcomp); { info := rb.f.info(rb.tmpBytes, i) if info.BoundaryBefore() && rb.nrune > 0 && !rb.doFlush() { diff --git a/vendor/golang.org/x/text/unicode/norm/example_test.go b/vendor/golang.org/x/text/unicode/norm/example_test.go index f2bec5b2f9..8f3b15653c 100644 --- a/vendor/golang.org/x/text/unicode/norm/example_test.go +++ b/vendor/golang.org/x/text/unicode/norm/example_test.go @@ -10,7 +10,7 @@ import ( "golang.org/x/text/unicode/norm" ) -func ExampleNextBoundary() { +func ExampleForm_NextBoundary() { s := norm.NFD.String("Mêlée") for i := 0; i < len(s); { diff --git a/vendor/golang.org/x/text/unicode/norm/forminfo.go b/vendor/golang.org/x/text/unicode/norm/forminfo.go index 15a67c653a..e67e7655c5 100644 --- a/vendor/golang.org/x/text/unicode/norm/forminfo.go +++ b/vendor/golang.org/x/text/unicode/norm/forminfo.go @@ -10,7 +10,7 @@ package norm // 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) +// 15: 1 (inverse of NFD_QC 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 @@ -56,28 +56,31 @@ type formInfo struct { 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 - } - } -} +var formTable = []*formInfo{{ + form: NFC, + composing: true, + compatibility: false, + info: lookupInfoNFC, + nextMain: nextComposed, +}, { + form: NFD, + composing: false, + compatibility: false, + info: lookupInfoNFC, + nextMain: nextDecomposed, +}, { + form: NFKC, + composing: true, + compatibility: true, + info: lookupInfoNFKC, + nextMain: nextComposed, +}, { + form: NFKD, + composing: false, + compatibility: true, + info: lookupInfoNFKC, + nextMain: nextDecomposed, +}} // 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 diff --git a/vendor/golang.org/x/text/unicode/norm/input.go b/vendor/golang.org/x/text/unicode/norm/input.go index 045d4ccce2..479e35bc25 100644 --- a/vendor/golang.org/x/text/unicode/norm/input.go +++ b/vendor/golang.org/x/text/unicode/norm/input.go @@ -90,16 +90,20 @@ func (in *input) charinfoNFKC(p int) (uint16, int) { } func (in *input) hangul(p int) (r rune) { + var size int if in.bytes == nil { if !isHangulString(in.str[p:]) { return 0 } - r, _ = utf8.DecodeRuneInString(in.str[p:]) + r, size = utf8.DecodeRuneInString(in.str[p:]) } else { if !isHangul(in.bytes[p:]) { return 0 } - r, _ = utf8.DecodeRune(in.bytes[p:]) + r, size = utf8.DecodeRune(in.bytes[p:]) + } + if size != hangulUTF8Size { + return 0 } return r } diff --git a/vendor/golang.org/x/text/unicode/norm/iter.go b/vendor/golang.org/x/text/unicode/norm/iter.go index 0a42a72de8..ce17f96c2e 100644 --- a/vendor/golang.org/x/text/unicode/norm/iter.go +++ b/vendor/golang.org/x/text/unicode/norm/iter.go @@ -41,6 +41,7 @@ func (i *Iter) Init(f Form, src []byte) { i.next = i.rb.f.nextMain i.asciiF = nextASCIIBytes i.info = i.rb.f.info(i.rb.src, i.p) + i.rb.ss.first(i.info) } // InitString initializes i to iterate over src after normalizing it to Form f. @@ -56,11 +57,12 @@ func (i *Iter) InitString(f Form, src string) { i.next = i.rb.f.nextMain i.asciiF = nextASCIIString i.info = i.rb.f.info(i.rb.src, i.p) + i.rb.ss.first(i.info) } // 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. +// start of a segment. func (i *Iter) Seek(offset int64, whence int) (int64, error) { var abs int64 switch whence { @@ -84,6 +86,7 @@ func (i *Iter) Seek(offset int64, whence int) (int64, error) { i.multiSeg = nil i.next = i.rb.f.nextMain i.info = i.rb.f.info(i.rb.src, i.p) + i.rb.ss.first(i.info) return abs, nil } @@ -161,6 +164,7 @@ func nextHangul(i *Iter) []byte { if next >= i.rb.nsrc { i.setDone() } else if i.rb.src.hangul(next) == 0 { + i.rb.ss.next(i.info) i.info = i.rb.f.info(i.rb.src, i.p) i.next = i.rb.f.nextMain return i.next(i) @@ -204,12 +208,10 @@ func nextMultiNorm(i *Iter) []byte { 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) } @@ -222,9 +224,9 @@ func nextMultiNorm(i *Iter) []byte { 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 { + i.rb.ss = 0 p := i.p i.p++ // ASCII or illegal byte. Either way, advance by 1. if i.p >= i.rb.nsrc { @@ -243,6 +245,8 @@ func nextDecomposed(i *Iter) (next []byte) { p := outp + len(d) if outp > 0 { i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p) + // TODO: this condition should not be possible, but we leave it + // in for defensive purposes. if p > len(i.buf) { return i.buf[:outp] } @@ -266,7 +270,7 @@ func nextDecomposed(i *Iter) (next []byte) { } else { i.info = i.rb.f.info(i.rb.src, i.p) } - switch ss.next(i.info) { + switch i.rb.ss.next(i.info) { case ssOverflow: i.next = nextCGJDecompose fallthrough @@ -309,7 +313,7 @@ func nextDecomposed(i *Iter) (next []byte) { } prevCC := i.info.tccc i.info = i.rb.f.info(i.rb.src, i.p) - if v := ss.next(i.info); v == ssStarter { + if v := i.rb.ss.next(i.info); v == ssStarter { break } else if v == ssOverflow { i.next = nextCGJDecompose @@ -335,10 +339,6 @@ doNorm: 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() @@ -348,6 +348,10 @@ func doNormDecomposed(i *Iter) []byte { if i.info.ccc == 0 { break } + if s := i.rb.ss.next(i.info); s == ssOverflow { + i.next = nextCGJDecompose + break + } } // new segment or too many combining characters: exit normalization return i.buf[:i.rb.flushCopy(i.buf[:])] @@ -357,6 +361,7 @@ func nextCGJDecompose(i *Iter) []byte { i.rb.ss = 0 i.rb.insertCGJ() i.next = nextDecomposed + i.rb.ss.first(i.info) buf := doNormDecomposed(i) return buf } @@ -365,7 +370,6 @@ func nextCGJDecompose(i *Iter) []byte { func nextComposed(i *Iter) []byte { outp, startp := 0, i.p var prevCC uint8 - ss := mkStreamSafe(i.info) for { if !i.info.isYesC() { goto doNorm @@ -385,11 +389,12 @@ func nextComposed(i *Iter) []byte { i.setDone() break } else if i.rb.src._byte(i.p) < utf8.RuneSelf { + i.rb.ss = 0 i.next = i.asciiF break } i.info = i.rb.f.info(i.rb.src, i.p) - if v := ss.next(i.info); v == ssStarter { + if v := i.rb.ss.next(i.info); v == ssStarter { break } else if v == ssOverflow { i.next = nextCGJCompose @@ -401,8 +406,10 @@ func nextComposed(i *Iter) []byte { } return i.returnSlice(startp, i.p) doNorm: + // reset to start position i.p = startp i.info = i.rb.f.info(i.rb.src, i.p) + i.rb.ss.first(i.info) if i.info.multiSegment() { d := i.info.Decomposition() info := i.rb.f.info(input{bytes: d}, 0) diff --git a/vendor/golang.org/x/text/unicode/norm/iter_test.go b/vendor/golang.org/x/text/unicode/norm/iter_test.go index e2aa6f2515..d95aa304d4 100644 --- a/vendor/golang.org/x/text/unicode/norm/iter_test.go +++ b/vendor/golang.org/x/text/unicode/norm/iter_test.go @@ -60,7 +60,7 @@ var segmentTestsK = []SegmentTest{ {"\ufdfa" + grave(30), []string{"\u0635", "\u0644", "\u0649", " ", "\u0627", "\u0644", "\u0644", "\u0647", " ", "\u0639", "\u0644", "\u064a", "\u0647", " ", "\u0648", "\u0633", "\u0644", "\u0645" + grave(30), ""}}, {"\uFDFA" + grave(64), []string{"\u0635", "\u0644", "\u0649", " ", "\u0627", "\u0644", "\u0644", "\u0647", " ", "\u0639", "\u0644", "\u064a", "\u0647", " ", "\u0648", "\u0633", "\u0644", "\u0645" + grave(30), cgj + grave(30), cgj + grave(4), ""}}, - // Hangul and Jamo are grouped togeter. + // Hangul and Jamo are grouped together. {"\uAC00", []string{"\u1100\u1161", ""}}, {"\uAC01", []string{"\u1100\u1161\u11A8", ""}}, {"\u1100\u1161", []string{"\u1100\u1161", ""}}, diff --git a/vendor/golang.org/x/text/unicode/norm/maketables.go b/vendor/golang.org/x/text/unicode/norm/maketables.go index 07bdff6bdc..8d418160ca 100644 --- a/vendor/golang.org/x/text/unicode/norm/maketables.go +++ b/vendor/golang.org/x/text/unicode/norm/maketables.go @@ -35,12 +35,9 @@ func main() { computeNonStarterCounts() verifyComputed() printChars() - if *test { - testDerived() - printTestdata() - } else { - makeTables() - } + testDerived() + printTestdata() + makeTables() } var ( @@ -602,6 +599,7 @@ func printCharInfoTables(w io.Writer) int { } index := normalDecomp nTrail := chars[r].nTrailingNonStarters + nLead := chars[r].nLeadingNonStarters if tccc > 0 || lccc > 0 || nTrail > 0 { tccc <<= 2 tccc |= nTrail @@ -612,7 +610,7 @@ func printCharInfoTables(w io.Writer) int { index = firstCCC } } - if lccc > 0 { + if lccc > 0 || nLead > 0 { s += string([]byte{lccc}) if index == firstCCC { log.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r) diff --git a/vendor/golang.org/x/text/unicode/norm/normalize.go b/vendor/golang.org/x/text/unicode/norm/normalize.go index eb5596f86a..e28ac641ac 100644 --- a/vendor/golang.org/x/text/unicode/norm/normalize.go +++ b/vendor/golang.org/x/text/unicode/norm/normalize.go @@ -2,13 +2,18 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// Note: the file data_test.go that is generated should not be checked in. //go:generate go run maketables.go triegen.go -//go:generate go run maketables.go triegen.go -test +//go:generate go test -tags test // Package norm contains types and functions for normalizing Unicode strings. package norm // import "golang.org/x/text/unicode/norm" -import "unicode/utf8" +import ( + "unicode/utf8" + + "golang.org/x/text/transform" +) // A Form denotes a canonical representation of Unicode code points. // The Unicode-defined normalization and equivalence forms are: @@ -263,6 +268,34 @@ func (f Form) QuickSpan(b []byte) int { return n } +// Span implements transform.SpanningTransformer. It 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) Span(b []byte, atEOF bool) (n int, err error) { + n, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), atEOF) + if n < len(b) { + if !ok { + err = transform.ErrEndOfSpan + } else { + err = transform.ErrShortSrc + } + } + return n, err +} + +// SpanString returns a boundary n such that s[0:n] == f(s[0:n]). +// It is not guaranteed to return the largest such n. +func (f Form) SpanString(s string, atEOF bool) (n int, err error) { + n, ok := formTable[f].quickSpan(inputString(s), 0, len(s), atEOF) + if n < len(s) { + if !ok { + err = transform.ErrEndOfSpan + } else { + err = transform.ErrShortSrc + } + } + return n, err +} + // 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 @@ -291,7 +324,6 @@ func (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) // 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 @@ -321,7 +353,7 @@ func (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) return lastSegStart, false } -// QuickSpanString returns a boundary n such that b[0:n] == f(s[0:n]). +// QuickSpanString returns a boundary n such that s[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) @@ -408,6 +440,8 @@ func (f Form) nextBoundary(src input, nsrc int, atEOF bool) int { } return -1 } + // TODO: Using streamSafe to determine the boundary isn't the same as + // using BoundaryBefore. Determine which should be used. if s := ss.next(info); s != ssSuccess { return i } @@ -472,15 +506,14 @@ func decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int { 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() + if s := rb.ss.next(info); s == ssStarter { + // TODO: this could be removed if we don't support merging. + if rb.nrune > 0 { goto end } - } else { - rb.ss.first(info) + } else if s == ssOverflow { + rb.insertCGJ() + goto end } if err := rb.insertFlush(rb.src, sp, info); err != iSuccess { return int(err) diff --git a/vendor/golang.org/x/text/unicode/norm/normalize_test.go b/vendor/golang.org/x/text/unicode/norm/normalize_test.go index 6e92abbed5..4f837372ca 100644 --- a/vendor/golang.org/x/text/unicode/norm/normalize_test.go +++ b/vendor/golang.org/x/text/unicode/norm/normalize_test.go @@ -13,6 +13,9 @@ import ( "strings" "testing" "unicode/utf8" + + "golang.org/x/text/internal/testtext" + "golang.org/x/text/transform" ) var ( @@ -368,94 +371,122 @@ func TestLastBoundary(t *testing.T) { runPosTests(t, "TestLastBoundary", NFC, lastBoundaryF, lastBoundaryTests) } -var quickSpanTests = []PositionTest{ - {"", 0, ""}, +type spanTest struct { + input string + atEOF bool + n int + err error +} + +var quickSpanTests = []spanTest{ + {"", true, 0, nil}, // starters - {"a", 1, ""}, - {"abc", 3, ""}, - {"\u043Eb", 3, ""}, + {"a", true, 1, nil}, + {"abc", true, 3, nil}, + {"\u043Eb", true, 3, nil}, // incomplete last rune. - {"\xCC", 1, ""}, - {"a\xCC", 2, ""}, + {"\xCC", true, 1, nil}, + {"\xCC", false, 0, transform.ErrShortSrc}, + {"a\xCC", true, 2, nil}, + {"a\xCC", false, 0, transform.ErrShortSrc}, // TODO: could be 1 for NFD // incorrectly ordered combining characters - {"\u0300\u0316", 0, ""}, - {"\u0300\u0316cd", 0, ""}, + {"\u0300\u0316", true, 0, transform.ErrEndOfSpan}, + {"\u0300\u0316", false, 0, transform.ErrEndOfSpan}, + {"\u0300\u0316cd", true, 0, transform.ErrEndOfSpan}, + {"\u0300\u0316cd", false, 0, transform.ErrEndOfSpan}, // have a maximum number of combining characters. - {rep(0x035D, 30) + "\u035B", 0, ""}, - {"a" + rep(0x035D, 30) + "\u035B", 0, ""}, - {"Ɵ" + rep(0x035D, 30) + "\u035B", 0, ""}, - {"aa" + rep(0x035D, 30) + "\u035B", 1, ""}, - {rep(0x035D, 30) + cgj + "\u035B", 64, ""}, - {"a" + rep(0x035D, 30) + cgj + "\u035B", 65, ""}, - {"Ɵ" + rep(0x035D, 30) + cgj + "\u035B", 66, ""}, - {"aa" + rep(0x035D, 30) + cgj + "\u035B", 66, ""}, + {rep(0x035D, 30) + "\u035B", true, 0, transform.ErrEndOfSpan}, + {"a" + rep(0x035D, 30) + "\u035B", true, 0, transform.ErrEndOfSpan}, + {"Ɵ" + rep(0x035D, 30) + "\u035B", true, 0, transform.ErrEndOfSpan}, + {"aa" + rep(0x035D, 30) + "\u035B", true, 1, transform.ErrEndOfSpan}, + {rep(0x035D, 30) + cgj + "\u035B", true, 64, nil}, + {"a" + rep(0x035D, 30) + cgj + "\u035B", true, 65, nil}, + {"Ɵ" + rep(0x035D, 30) + cgj + "\u035B", true, 66, nil}, + {"aa" + rep(0x035D, 30) + cgj + "\u035B", true, 66, nil}, + + {"a" + rep(0x035D, 30) + cgj + "\u035B", false, 61, transform.ErrShortSrc}, + {"Ɵ" + rep(0x035D, 30) + cgj + "\u035B", false, 62, transform.ErrShortSrc}, + {"aa" + rep(0x035D, 30) + cgj + "\u035B", false, 62, transform.ErrShortSrc}, } -var quickSpanNFDTests = []PositionTest{ +var quickSpanNFDTests = []spanTest{ // needs decomposing - {"\u00C0", 0, ""}, - {"abc\u00C0", 3, ""}, + {"\u00C0", true, 0, transform.ErrEndOfSpan}, + {"abc\u00C0", true, 3, transform.ErrEndOfSpan}, // correctly ordered combining characters - {"\u0300", 2, ""}, - {"ab\u0300", 4, ""}, - {"ab\u0300cd", 6, ""}, - {"\u0300cd", 4, ""}, - {"\u0316\u0300", 4, ""}, - {"ab\u0316\u0300", 6, ""}, - {"ab\u0316\u0300cd", 8, ""}, - {"ab\u0316\u0300\u00C0", 6, ""}, - {"\u0316\u0300cd", 6, ""}, - {"\u043E\u0308b", 5, ""}, + {"\u0300", true, 2, nil}, + {"ab\u0300", true, 4, nil}, + {"ab\u0300cd", true, 6, nil}, + {"\u0300cd", true, 4, nil}, + {"\u0316\u0300", true, 4, nil}, + {"ab\u0316\u0300", true, 6, nil}, + {"ab\u0316\u0300cd", true, 8, nil}, + {"ab\u0316\u0300\u00C0", true, 6, transform.ErrEndOfSpan}, + {"\u0316\u0300cd", true, 6, nil}, + {"\u043E\u0308b", true, 5, nil}, // incorrectly ordered combining characters - {"ab\u0300\u0316", 1, ""}, // TODO: we could skip 'b' as well. - {"ab\u0300\u0316cd", 1, ""}, + {"ab\u0300\u0316", true, 1, transform.ErrEndOfSpan}, // TODO: we could skip 'b' as well. + {"ab\u0300\u0316cd", true, 1, transform.ErrEndOfSpan}, // Hangul - {"같은", 0, ""}, + {"같은", true, 0, transform.ErrEndOfSpan}, } -var quickSpanNFCTests = []PositionTest{ +var quickSpanNFCTests = []spanTest{ // okay composed - {"\u00C0", 2, ""}, - {"abc\u00C0", 5, ""}, + {"\u00C0", true, 2, nil}, + {"abc\u00C0", true, 5, nil}, // correctly ordered combining characters - {"ab\u0300", 1, ""}, - {"ab\u0300cd", 1, ""}, - {"ab\u0316\u0300", 1, ""}, - {"ab\u0316\u0300cd", 1, ""}, - {"\u00C0\u035D", 4, ""}, + // TODO: b may combine with modifiers, which is why this fails. We could + // make a more precise test that that actually checks whether last + // characters combines. Probably not worth it. + {"ab\u0300", true, 1, transform.ErrEndOfSpan}, + {"ab\u0300cd", true, 1, transform.ErrEndOfSpan}, + {"ab\u0316\u0300", true, 1, transform.ErrEndOfSpan}, + {"ab\u0316\u0300cd", true, 1, transform.ErrEndOfSpan}, + {"\u00C0\u035D", true, 4, nil}, // we do not special case leading combining characters - {"\u0300cd", 0, ""}, - {"\u0300", 0, ""}, - {"\u0316\u0300", 0, ""}, - {"\u0316\u0300cd", 0, ""}, + {"\u0300cd", true, 0, transform.ErrEndOfSpan}, + {"\u0300", true, 0, transform.ErrEndOfSpan}, + {"\u0316\u0300", true, 0, transform.ErrEndOfSpan}, + {"\u0316\u0300cd", true, 0, transform.ErrEndOfSpan}, // incorrectly ordered combining characters - {"ab\u0300\u0316", 1, ""}, - {"ab\u0300\u0316cd", 1, ""}, + {"ab\u0300\u0316", true, 1, transform.ErrEndOfSpan}, + {"ab\u0300\u0316cd", true, 1, transform.ErrEndOfSpan}, // Hangul - {"같은", 6, ""}, + {"같은", true, 6, nil}, + {"같은", false, 3, transform.ErrShortSrc}, // We return the start of the violating segment in case of overflow. - {grave(30) + "\uff9e", 0, ""}, - {grave(30), 0, ""}, -} - -func doQuickSpan(rb *reorderBuffer, s string) (int, []byte) { - return rb.f.form.QuickSpan([]byte(s)), nil + {grave(30) + "\uff9e", true, 0, transform.ErrEndOfSpan}, + {grave(30), true, 0, transform.ErrEndOfSpan}, } -func doQuickSpanString(rb *reorderBuffer, s string) (int, []byte) { - return rb.f.form.QuickSpanString(s), nil +func runSpanTests(t *testing.T, name string, f Form, testCases []spanTest) { + for i, tc := range testCases { + s := fmt.Sprintf("Bytes/%s/%d=%+q/atEOF=%v", name, i, pc(tc.input), tc.atEOF) + ok := testtext.Run(t, s, func(t *testing.T) { + n, err := f.Span([]byte(tc.input), tc.atEOF) + if n != tc.n || err != tc.err { + t.Errorf("\n got %d, %v;\nwant %d, %v", n, err, tc.n, tc.err) + } + }) + if !ok { + continue // Don't do the String variant if the Bytes variant failed. + } + s = fmt.Sprintf("String/%s/%d=%+q/atEOF=%v", name, i, pc(tc.input), tc.atEOF) + testtext.Run(t, s, func(t *testing.T) { + n, err := f.SpanString(tc.input, tc.atEOF) + if n != tc.n || err != tc.err { + t.Errorf("\n got %d, %v;\nwant %d, %v", n, err, tc.n, tc.err) + } + }) + } } -func TestQuickSpan(t *testing.T) { - runPosTests(t, "TestQuickSpanNFD1", NFD, doQuickSpan, quickSpanTests) - runPosTests(t, "TestQuickSpanNFD2", NFD, doQuickSpan, quickSpanNFDTests) - runPosTests(t, "TestQuickSpanNFC1", NFC, doQuickSpan, quickSpanTests) - runPosTests(t, "TestQuickSpanNFC2", NFC, doQuickSpan, quickSpanNFCTests) - - runPosTests(t, "TestQuickSpanStringNFD1", NFD, doQuickSpanString, quickSpanTests) - runPosTests(t, "TestQuickSpanStringNFD2", NFD, doQuickSpanString, quickSpanNFDTests) - runPosTests(t, "TestQuickSpanStringNFC1", NFC, doQuickSpanString, quickSpanTests) - runPosTests(t, "TestQuickSpanStringNFC2", NFC, doQuickSpanString, quickSpanNFCTests) +func TestSpan(t *testing.T) { + runSpanTests(t, "NFD", NFD, quickSpanTests) + runSpanTests(t, "NFD", NFD, quickSpanNFDTests) + runSpanTests(t, "NFC", NFC, quickSpanTests) + runSpanTests(t, "NFC", NFC, quickSpanNFCTests) } var isNormalTests = []PositionTest{ @@ -567,35 +598,42 @@ func runNormTests(t *testing.T, name string, fn appendFunc) { func runAppendTests(t *testing.T, name string, f Form, fn appendFunc, tests []AppendTest) { for i, test := range tests { - if *testn >= 0 && i != *testn { - continue - } - out := []byte(test.left) - have := string(fn(f, out, test.right)) - if len(have) != len(test.out) { - t.Errorf("%s.%s:%d: length is %d; want %d (%+q vs %+q)", fstr[f], name, i, len(have), len(test.out), pc(have), pc(test.out)) - } - if have != test.out { - k, pf := pidx(have, test.out) - t.Errorf("%s.%s:%d: \nwas %s%+q; \nwant %s%+q", fstr[f], name, i, pf, pc(have[k:]), pf, pc(test.out[k:])) - } - - // Bootstrap by normalizing input. Ensures that the various variants - // behave the same. - for g := NFC; g <= NFKD; g++ { - if f == g { - continue + t.Run(fmt.Sprintf("%s/%d", fstr[f], i), func(t *testing.T) { + id := pc(test.left + test.right) + if *testn >= 0 && i != *testn { + return } - want := g.String(test.left + test.right) - have := string(fn(g, g.AppendString(nil, test.left), test.right)) - if len(have) != len(want) { - t.Errorf("%s(%s.%s):%d: length is %d; want %d (%+q vs %+q)", fstr[g], fstr[f], name, i, len(have), len(want), pc(have), pc(want)) - } - if have != want { - k, pf := pidx(have, want) - t.Errorf("%s(%s.%s):%d: \nwas %s%+q; \nwant %s%+q", fstr[g], fstr[f], name, i, pf, pc(have[k:]), pf, pc(want[k:])) + t.Run("fn", func(t *testing.T) { + out := []byte(test.left) + have := string(fn(f, out, test.right)) + if len(have) != len(test.out) { + t.Errorf("%+q: length is %d; want %d (%+q vs %+q)", id, len(have), len(test.out), pc(have), pc(test.out)) + } + if have != test.out { + k, pf := pidx(have, test.out) + t.Errorf("%+q:\nwas %s%+q; \nwant %s%+q", id, pf, pc(have[k:]), pf, pc(test.out[k:])) + } + }) + + // Bootstrap by normalizing input. Ensures that the various variants + // behave the same. + for g := NFC; g <= NFKD; g++ { + if f == g { + continue + } + t.Run(fstr[g], func(t *testing.T) { + want := g.String(test.left + test.right) + have := string(fn(g, g.AppendString(nil, test.left), test.right)) + if len(have) != len(want) { + t.Errorf("%+q: length is %d; want %d (%+q vs %+q)", id, len(have), len(want), pc(have), pc(want)) + } + if have != want { + k, pf := pidx(have, want) + t.Errorf("%+q:\nwas %s%+q; \nwant %s%+q", id, pf, pc(have[k:]), pf, pc(want[k:])) + } + }) } - } + }) } } @@ -661,6 +699,24 @@ var appendTestsNFC = []AppendTest{ "\u0d4a" + strings.Repeat("\u0d3e", 30), "\u0d4a" + strings.Repeat("\u0d3e", 29) + cgj + "\u0d3e", }, + + { // https://golang.org/issues/20079 + "", + "\xeb\u0344", + "\xeb\u0308\u0301", + }, + + { // https://golang.org/issues/20079 + "", + "\uac00" + strings.Repeat("\u0300", 30), + "\uac00" + strings.Repeat("\u0300", 29) + "\u034f\u0300", + }, + + { // https://golang.org/issues/20079 + "", + "\xeb" + strings.Repeat("\u0300", 31), + "\xeb" + strings.Repeat("\u0300", 30) + "\u034f\u0300", + }, } var appendTestsNFD = []AppendTest{ @@ -737,6 +793,16 @@ var appendTestsNFKC = []AppendTest{ // - Many non-starter decompositions in a row causing overflow. {"", rep(0x340, 31), rep(0x300, 30) + cgj + "\u0300"}, {"", rep(0xFF9E, 31), rep(0x3099, 30) + cgj + "\u3099"}, + + {"", "\u0644\u0625" + rep(0x300, 31), "\u0644\u0625" + rep(0x300, 29) + cgj + "\u0300\u0300"}, + {"", "\ufef9" + rep(0x300, 31), "\u0644\u0625" + rep(0x300, 29) + cgj + rep(0x0300, 2)}, + {"", "\ufef9" + rep(0x300, 31), "\u0644\u0625" + rep(0x300, 29) + cgj + rep(0x0300, 2)}, + + // U+0F81 TIBETAN VOWEL SIGN REVERSED II splits into two modifiers. + {"", "\u0f7f" + rep(0xf71, 29) + "\u0f81", "\u0f7f" + rep(0xf71, 29) + cgj + "\u0f71\u0f80"}, + {"", "\u0f7f" + rep(0xf71, 28) + "\u0f81", "\u0f7f" + rep(0xf71, 29) + "\u0f80"}, + {"", "\u0f7f" + rep(0xf81, 16), "\u0f7f" + rep(0xf71, 15) + rep(0xf80, 15) + cgj + "\u0f71\u0f80"}, + // weird UTF-8 {"\u00E0\xE1", "\x86", "\u00E0\xE1\x86"}, {"a\u0300\u11B7", "\u0300", "\u00E0\u11B7\u0300"}, @@ -749,6 +815,7 @@ var appendTestsNFKC = []AppendTest{ {"", strings.Repeat("a\u0316\u0300", 6), strings.Repeat("\u00E0\u0316", 6)}, // large input. + {"", strings.Repeat("a\u0300\u0316", 31), strings.Repeat("\u00E0\u0316", 31)}, {"", strings.Repeat("a\u0300\u0316", 4000), strings.Repeat("\u00E0\u0316", 4000)}, {"", strings.Repeat("\x80\x80", 4000), strings.Repeat("\x80\x80", 4000)}, {"", "\u0041\u0307\u0304", "\u01E0"}, @@ -817,6 +884,12 @@ var appendTestsNFKD = []AppendTest{ "\u0300\u0320a" + grave(34) + "\u0320", "\u0320\u0300a" + grave(30) + cgj + "\u0320" + grave(4), }, + { + // U+0F81 TIBETAN VOWEL SIGN REVERSED II splits into two modifiers. + "", + "a\u0f7f" + rep(0xf71, 29) + "\u0f81", + "a\u0f7f" + rep(0xf71, 29) + cgj + "\u0f71\u0f80", + }, } func TestAppend(t *testing.T) { @@ -847,6 +920,25 @@ func TestString(t *testing.T) { }) } +func TestLinking(t *testing.T) { + const prog = ` + package main + import "fmt" + import "golang.org/x/text/unicode/norm" + func main() { fmt.Println(norm.%s) } + ` + baseline, errB := testtext.CodeSize(fmt.Sprintf(prog, "MaxSegmentSize")) + withTables, errT := testtext.CodeSize(fmt.Sprintf(prog, `NFC.String("")`)) + if errB != nil || errT != nil { + t.Skipf("code size failed: %v and %v", errB, errT) + } + // Tables are at least 50K + if d := withTables - baseline; d < 50*1024 { + t.Errorf("tables appear not to be dropped: %d - %d = %d", + withTables, baseline, d) + } +} + func appendBench(f Form, in []byte) func() { buf := make([]byte, 0, 4*len(in)) return func() { diff --git a/vendor/golang.org/x/text/unicode/norm/readwriter.go b/vendor/golang.org/x/text/unicode/norm/readwriter.go index 4fa0e04b21..d926ee903e 100644 --- a/vendor/golang.org/x/text/unicode/norm/readwriter.go +++ b/vendor/golang.org/x/text/unicode/norm/readwriter.go @@ -112,7 +112,6 @@ func (r *normReader) Read(p []byte) (int, error) { } } } - panic("should not reach here") } // Reader returns a new reader that implements Read diff --git a/vendor/golang.org/x/text/unicode/norm/tables.go b/vendor/golang.org/x/text/unicode/norm/tables.go index a56697b571..bf9ff8038c 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables.go +++ b/vendor/golang.org/x/text/unicode/norm/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package norm @@ -27,14 +27,14 @@ const ( firstMulti = 0x186D firstCCC = 0x2C9E endMulti = 0x2F60 - firstLeadingCCC = 0x4A44 - firstCCCZeroExcept = 0x4A5A - firstStarterWithNLead = 0x4A81 - lastDecomp = 0x4A83 + firstLeadingCCC = 0x49AE + firstCCCZeroExcept = 0x4A78 + firstStarterWithNLead = 0x4A9F + lastDecomp = 0x4AA1 maxDecomp = 0x8000 ) -// decomps: 19075 bytes +// decomps: 19105 bytes var decomps = [...]byte{ // Bytes 0 - 3f 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41, @@ -2443,283 +2443,287 @@ var decomps = [...]byte{ 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, + 0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82, + 0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D, + 0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE, + 0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9, // 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, + 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, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, + 0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE, + 0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC, // 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, + 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, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7, // 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, + 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, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7, + 0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41, // 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, + 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, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7, + 0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 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, + 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, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9, + 0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65, + 0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9, // 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, + 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, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB, + 0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88, + 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC, // 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, + 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, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94, + 0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9, + 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, // 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, + 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, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC, + 0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6, + 0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6, // 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, + 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, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1, // 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, + 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, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF, + 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96, + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97, // 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, + 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, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2, + 0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2, + 0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3, // 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, + 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, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, + 0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2, + 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49, // 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, + 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, 0xAE, 0xAE, 0x4C, 0xF0, + 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, - 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, - // Bytes 46c0 - 46ff + 0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 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, + // Bytes 4640 - 467f + 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, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, - 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, + 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, + // Bytes 4680 - 46bf + 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, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9, + 0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC, + 0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83, + // Bytes 46c0 - 46ff + 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, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8, + 0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53, + 0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9, // 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, + 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, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC, + 0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83, + 0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82, // 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, + 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, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F, + 0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD, + 0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 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, + 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, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE, + 0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC, // 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, + 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, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE, // 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, + 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, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE, + 0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, + 0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9, // 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, + 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, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9, + 0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF, + 0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 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, + 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, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 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, + 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, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, // 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, + 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, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, // 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, + 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, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF, // 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, + 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, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC, + 0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32, + 0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85, // 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, + 0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43, // 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, + 0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01, // 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, + 0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43, + 0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86, + 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01, + 0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43, + 0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86, + 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01, + 0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32, + 0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3, // Bytes 4a80 - 4abf - 0x26, 0x00, 0x01, + 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, 0x26, 0x00, + 0x01, } // lookup returns the trie value for the first UTF-8 encoding in s and @@ -2892,7 +2896,7 @@ func (t *nfcTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// nfcTrie. Total size: 10332 bytes (10.09 KiB). Checksum: ad355b768fddb1b6. +// nfcTrie. Total size: 10332 bytes (10.09 KiB). Checksum: 51cc525b297fc970. type nfcTrie struct{} func newNfcTrie(i int) *nfcTrie { @@ -2928,22 +2932,22 @@ var nfcValues = [2944]uint16{ 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, + 0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c, + 0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb, + 0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104, + 0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd, + 0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235, + 0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285, + 0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3, + 0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750, + 0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f, + 0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3, + 0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569, // Block 0x4, offset 0x100 - 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x4723, 0x103: 0x47b4, 0x104: 0x2f9c, 0x105: 0x32a8, + 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 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, + 0x112: 0x46b0, 0x113: 0x4741, 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, @@ -2954,12 +2958,12 @@ var nfcValues = [2944]uint16{ // 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, + 0x14c: 0x46d3, 0x14d: 0x4764, 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, + 0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d, + 0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba, + 0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796, + 0x16a: 0x470a, 0x16b: 0x479b, 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, @@ -2971,7 +2975,7 @@ var nfcValues = [2944]uint16{ 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, + 0x1aa: 0x46ec, 0x1ab: 0x477d, 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, @@ -2982,8 +2986,8 @@ var nfcValues = [2944]uint16{ 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, + 0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b, + 0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769, 0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f, // Block 0x8, offset 0x200 0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132, @@ -2998,7 +3002,7 @@ var nfcValues = [2944]uint16{ 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, + 0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 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, @@ -3017,7 +3021,7 @@ var nfcValues = [2944]uint16{ 0x299: 0xa000, 0x29f: 0xa000, 0x2a1: 0xa000, 0x2a5: 0xa000, 0x2a9: 0xa000, - 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x4894, 0x2ad: 0x3697, 0x2ae: 0x48be, 0x2af: 0x36a9, + 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9, 0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000, 0x2b7: 0xa000, 0x2b9: 0xa000, 0x2bf: 0xa000, @@ -3078,15 +3082,15 @@ var nfcValues = [2944]uint16{ 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, + 0x436: 0x46c4, 0x437: 0x4755, 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, + 0x458: 0x315e, 0x459: 0x346f, 0x45a: 0x46f1, 0x45b: 0x4782, 0x45c: 0x3997, 0x45d: 0x3b26, + 0x45e: 0x3177, 0x45f: 0x3488, 0x460: 0x3181, 0x461: 0x3492, 0x462: 0x4700, 0x463: 0x4791, 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, @@ -3098,16 +3102,16 @@ var nfcValues = [2944]uint16{ 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, + 0x4a0: 0x46a1, 0x4a1: 0x4732, 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, + 0x4b6: 0x38c5, 0x4b7: 0x3a54, 0x4b8: 0x46b5, 0x4b9: 0x4746, 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, + 0x4cc: 0x46e7, 0x4cd: 0x4778, 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, @@ -3116,29 +3120,29 @@ var nfcValues = [2944]uint16{ 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, + 0x500: 0x4804, 0x501: 0x480a, 0x502: 0x491e, 0x503: 0x4936, 0x504: 0x4926, 0x505: 0x493e, + 0x506: 0x492e, 0x507: 0x4946, 0x508: 0x47aa, 0x509: 0x47b0, 0x50a: 0x488e, 0x50b: 0x48a6, + 0x50c: 0x4896, 0x50d: 0x48ae, 0x50e: 0x489e, 0x50f: 0x48b6, 0x510: 0x4816, 0x511: 0x481c, 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, + 0x518: 0x47b6, 0x519: 0x47bc, 0x51a: 0x3ce8, 0x51b: 0x3cf8, 0x51c: 0x3cf0, 0x51d: 0x3d00, + 0x520: 0x482e, 0x521: 0x4834, 0x522: 0x494e, 0x523: 0x4966, + 0x524: 0x4956, 0x525: 0x496e, 0x526: 0x495e, 0x527: 0x4976, 0x528: 0x47c2, 0x529: 0x47c8, + 0x52a: 0x48be, 0x52b: 0x48d6, 0x52c: 0x48c6, 0x52d: 0x48de, 0x52e: 0x48ce, 0x52f: 0x48e6, + 0x530: 0x4846, 0x531: 0x484c, 0x532: 0x3e18, 0x533: 0x3e30, 0x534: 0x3e20, 0x535: 0x3e38, + 0x536: 0x3e28, 0x537: 0x3e40, 0x538: 0x47ce, 0x539: 0x47d4, 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, + 0x540: 0x4852, 0x541: 0x4858, 0x542: 0x3e48, 0x543: 0x3e58, 0x544: 0x3e50, 0x545: 0x3e60, + 0x548: 0x47da, 0x549: 0x47e0, 0x54a: 0x3d48, 0x54b: 0x3d58, + 0x54c: 0x3d50, 0x54d: 0x3d60, 0x550: 0x4864, 0x551: 0x486a, 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, + 0x559: 0x47e6, 0x55b: 0x3d68, 0x55d: 0x3d70, + 0x55f: 0x3d78, 0x560: 0x487c, 0x561: 0x4882, 0x562: 0x497e, 0x563: 0x4996, + 0x564: 0x4986, 0x565: 0x499e, 0x566: 0x498e, 0x567: 0x49a6, 0x568: 0x47ec, 0x569: 0x47f2, + 0x56a: 0x48ee, 0x56b: 0x4906, 0x56c: 0x48f6, 0x56d: 0x490e, 0x56e: 0x48fe, 0x56f: 0x4916, + 0x570: 0x47f8, 0x571: 0x431e, 0x572: 0x3691, 0x573: 0x4324, 0x574: 0x4822, 0x575: 0x432a, + 0x576: 0x36a3, 0x577: 0x4330, 0x578: 0x36c1, 0x579: 0x4336, 0x57a: 0x36d9, 0x57b: 0x433c, + 0x57c: 0x4870, 0x57d: 0x4342, // 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, @@ -3149,19 +3153,19 @@ var nfcValues = [2944]uint16{ 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, + 0x5b6: 0x4810, 0x5b7: 0x3db0, 0x5b8: 0x35f5, 0x5b9: 0x35ef, 0x5ba: 0x35e3, 0x5bb: 0x42ee, 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, + 0x5c6: 0x483a, 0x5c7: 0x3df8, 0x5c8: 0x3601, 0x5c9: 0x42f4, 0x5ca: 0x360d, 0x5cb: 0x42fa, 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, + 0x5d2: 0x3e00, 0x5d3: 0x44e4, 0x5d6: 0x36bb, 0x5d7: 0x3e10, + 0x5d8: 0x3631, 0x5d9: 0x362b, 0x5da: 0x361f, 0x5db: 0x4300, 0x5dd: 0x3ba4, + 0x5de: 0x3bab, 0x5df: 0x3bb2, 0x5e0: 0x36eb, 0x5e1: 0x36e5, 0x5e2: 0x3e68, 0x5e3: 0x44ec, 0x5e4: 0x36cd, 0x5e5: 0x36d3, 0x5e6: 0x36f1, 0x5e7: 0x3e78, 0x5e8: 0x3661, 0x5e9: 0x365b, - 0x5ea: 0x364f, 0x5eb: 0x43a2, 0x5ec: 0x3649, 0x5ed: 0x359b, 0x5ee: 0x437e, 0x5ef: 0x0081, + 0x5ea: 0x364f, 0x5eb: 0x430c, 0x5ec: 0x3649, 0x5ed: 0x359b, 0x5ee: 0x42e8, 0x5ef: 0x0081, 0x5f2: 0x3eb0, 0x5f3: 0x36f7, 0x5f4: 0x3eb8, - 0x5f6: 0x491e, 0x5f7: 0x3ed0, 0x5f8: 0x363d, 0x5f9: 0x439c, 0x5fa: 0x366d, 0x5fb: 0x43ae, + 0x5f6: 0x4888, 0x5f7: 0x3ed0, 0x5f8: 0x363d, 0x5f9: 0x4306, 0x5fa: 0x366d, 0x5fb: 0x4318, 0x5fc: 0x3679, 0x5fd: 0x4256, 0x5fe: 0xa100, // Block 0x18, offset 0x600 0x601: 0x3c06, 0x603: 0xa000, 0x604: 0x3c0d, 0x605: 0xa000, @@ -3519,8 +3523,8 @@ var nfcSparseValues = [688]valueRange{ {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: 0x46e2, lo: 0xa0, hi: 0xa1}, + {value: 0x4714, lo: 0xaf, hi: 0xb0}, {value: 0xa000, lo: 0xb7, hi: 0xb7}, // Block 0x2, offset 0x9 {value: 0x0000, lo: 0x01}, @@ -3533,11 +3537,11 @@ var nfcSparseValues = [688]valueRange{ {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: 0x4840, lo: 0x8a, hi: 0x8a}, + {value: 0x485e, lo: 0x8b, hi: 0x8b}, {value: 0x36c7, lo: 0x8c, hi: 0x8c}, {value: 0x36df, lo: 0x8d, hi: 0x8d}, - {value: 0x490c, lo: 0x8e, hi: 0x8e}, + {value: 0x4876, lo: 0x8e, hi: 0x8e}, {value: 0xa000, lo: 0x92, hi: 0x92}, {value: 0x36fd, lo: 0x93, hi: 0x94}, // Block 0x5, offset 0x18 @@ -3665,7 +3669,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0x812d, lo: 0x92, hi: 0x92}, {value: 0x8132, lo: 0x93, hi: 0x93}, {value: 0x8132, lo: 0x94, hi: 0x94}, - {value: 0x45b2, lo: 0x98, hi: 0x9f}, + {value: 0x451c, lo: 0x98, hi: 0x9f}, // Block 0x12, offset 0x89 {value: 0x0000, lo: 0x02}, {value: 0x8102, lo: 0xbc, hi: 0xbc}, @@ -3676,18 +3680,18 @@ var nfcSparseValues = [688]valueRange{ {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}, + {value: 0x455c, lo: 0x9c, hi: 0x9d}, + {value: 0x456c, 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: 0x4594, lo: 0xb3, hi: 0xb3}, + {value: 0x459c, 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}, + {value: 0x4574, lo: 0x99, hi: 0x9b}, + {value: 0x458c, lo: 0x9e, hi: 0x9e}, // Block 0x16, offset 0x9b {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0xbc, hi: 0xbc}, @@ -3702,8 +3706,8 @@ var nfcSparseValues = [688]valueRange{ {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}, + {value: 0x45a4, lo: 0x9c, hi: 0x9c}, + {value: 0x45ac, lo: 0x9d, hi: 0x9d}, // Block 0x19, offset 0xa8 {value: 0x0000, lo: 0x03}, {value: 0xa000, lo: 0x92, hi: 0x92}, @@ -3787,18 +3791,18 @@ var nfcSparseValues = [688]valueRange{ {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: 0x4a84, lo: 0xb3, hi: 0xb3}, {value: 0x8128, lo: 0xb4, hi: 0xb4}, - {value: 0x4a6f, lo: 0xb5, hi: 0xb5}, - {value: 0x464a, lo: 0xb6, hi: 0xb6}, + {value: 0x4a8d, lo: 0xb5, hi: 0xb5}, + {value: 0x45b4, lo: 0xb6, hi: 0xb6}, {value: 0x8200, lo: 0xb7, hi: 0xb7}, - {value: 0x4652, lo: 0xb8, hi: 0xb8}, + {value: 0x45bc, 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: 0x4a96, lo: 0x81, hi: 0x81}, {value: 0x8132, lo: 0x82, hi: 0x83}, {value: 0x8104, lo: 0x84, hi: 0x84}, {value: 0x8132, lo: 0x86, hi: 0x87}, @@ -3975,7 +3979,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0x048b, lo: 0xa9, hi: 0xaa}, // Block 0x45, offset 0x189 {value: 0x0000, lo: 0x01}, - {value: 0x4573, lo: 0x9c, hi: 0x9c}, + {value: 0x44dd, lo: 0x9c, hi: 0x9c}, // Block 0x46, offset 0x18b {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xaf, hi: 0xb1}, @@ -3994,12 +3998,12 @@ var nfcSparseValues = [688]valueRange{ {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}, + {value: 0x4a9f, lo: 0xb3, hi: 0xb3}, + {value: 0x4a9f, lo: 0xb5, hi: 0xb6}, + {value: 0x4a9f, lo: 0xba, hi: 0xbf}, // Block 0x4b, offset 0x19b {value: 0x0000, lo: 0x01}, - {value: 0x4a81, lo: 0x8f, hi: 0xa3}, + {value: 0x4a9f, lo: 0x8f, hi: 0xa3}, // Block 0x4c, offset 0x19d {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0xae, hi: 0xbe}, @@ -4119,29 +4123,29 @@ var nfcSparseValues = [688]valueRange{ {value: 0xc600, lo: 0x89, hi: 0xa3}, // Block 0x63, offset 0x1fb {value: 0x0006, lo: 0x0d}, - {value: 0x4426, lo: 0x9d, hi: 0x9d}, + {value: 0x4390, 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}, + {value: 0x4402, lo: 0x9f, hi: 0x9f}, + {value: 0x43f0, lo: 0xaa, hi: 0xab}, + {value: 0x44f4, lo: 0xac, hi: 0xac}, + {value: 0x44fc, lo: 0xad, hi: 0xad}, + {value: 0x4348, lo: 0xae, hi: 0xb1}, + {value: 0x4366, lo: 0xb2, hi: 0xb4}, + {value: 0x437e, lo: 0xb5, hi: 0xb6}, + {value: 0x438a, lo: 0xb8, hi: 0xb8}, + {value: 0x4396, lo: 0xb9, hi: 0xbb}, + {value: 0x43ae, lo: 0xbc, hi: 0xbc}, + {value: 0x43b4, 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}, + {value: 0x43ba, lo: 0x80, hi: 0x81}, + {value: 0x43c6, lo: 0x83, hi: 0x84}, + {value: 0x43d8, lo: 0x86, hi: 0x89}, + {value: 0x43fc, lo: 0x8a, hi: 0x8a}, + {value: 0x4378, lo: 0x8b, hi: 0x8b}, + {value: 0x4360, lo: 0x8c, hi: 0x8c}, + {value: 0x43a8, lo: 0x8d, hi: 0x8d}, + {value: 0x43d2, lo: 0x8e, hi: 0x8e}, // Block 0x65, offset 0x212 {value: 0x0000, lo: 0x02}, {value: 0x8100, lo: 0xa4, hi: 0xa5}, @@ -4179,16 +4183,16 @@ var nfcSparseValues = [688]valueRange{ {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}, + {value: 0x4a9f, lo: 0x9e, hi: 0x9f}, + {value: 0x4a9f, lo: 0xa3, hi: 0xa3}, + {value: 0x4a9f, lo: 0xa5, hi: 0xa6}, + {value: 0x4a9f, 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: 0x4a9f, lo: 0x82, hi: 0x87}, + {value: 0x4a9f, lo: 0x8a, hi: 0x8f}, + {value: 0x4a9f, lo: 0x92, hi: 0x97}, + {value: 0x4a9f, lo: 0x9a, hi: 0x9c}, {value: 0x8100, lo: 0xa3, hi: 0xa3}, // Block 0x70, offset 0x237 {value: 0x0000, lo: 0x01}, @@ -4295,13 +4299,13 @@ var nfcSparseValues = [688]valueRange{ {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: 0x45cc, lo: 0x9e, hi: 0x9e}, + {value: 0x45d6, lo: 0x9f, hi: 0x9f}, + {value: 0x460a, lo: 0xa0, hi: 0xa0}, + {value: 0x4618, lo: 0xa1, hi: 0xa1}, + {value: 0x4626, lo: 0xa2, hi: 0xa2}, + {value: 0x4634, lo: 0xa3, hi: 0xa3}, + {value: 0x4642, lo: 0xa4, hi: 0xa4}, {value: 0x812b, lo: 0xa5, hi: 0xa6}, {value: 0x8101, lo: 0xa7, hi: 0xa9}, {value: 0x8130, lo: 0xad, hi: 0xad}, @@ -4313,14 +4317,14 @@ var nfcSparseValues = [688]valueRange{ {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}, + {value: 0x45e0, lo: 0xbb, hi: 0xbb}, + {value: 0x45ea, lo: 0xbc, hi: 0xbc}, + {value: 0x4650, lo: 0xbd, hi: 0xbd}, + {value: 0x466c, lo: 0xbe, hi: 0xbe}, + {value: 0x465e, lo: 0xbf, hi: 0xbf}, // Block 0x88, offset 0x29f {value: 0x0000, lo: 0x01}, - {value: 0x4710, lo: 0x80, hi: 0x80}, + {value: 0x467a, lo: 0x80, hi: 0x80}, // Block 0x89, offset 0x2a1 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x82, hi: 0x84}, @@ -4513,7 +4517,7 @@ func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// nfkcTrie. Total size: 16994 bytes (16.60 KiB). Checksum: 146925fc21092b17. +// nfkcTrie. Total size: 16994 bytes (16.60 KiB). Checksum: c3ed54ee046f3c46. type nfkcTrie struct{} func newNfkcTrie(i int) *nfkcTrie { @@ -4549,22 +4553,22 @@ var nfkcValues = [5888]uint16{ 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, + 0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c, + 0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb, + 0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104, + 0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd, + 0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235, + 0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285, + 0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3, + 0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750, + 0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f, + 0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3, + 0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569, // Block 0x4, offset 0x100 - 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x4723, 0x103: 0x47b4, 0x104: 0x2f9c, 0x105: 0x32a8, + 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 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, + 0x112: 0x46b0, 0x113: 0x4741, 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, @@ -4575,12 +4579,12 @@ var nfkcValues = [5888]uint16{ // 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, + 0x14c: 0x46d3, 0x14d: 0x4764, 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, + 0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d, + 0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba, + 0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796, + 0x16a: 0x470a, 0x16b: 0x479b, 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, @@ -4592,7 +4596,7 @@ var nfkcValues = [5888]uint16{ 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, + 0x1aa: 0x46ec, 0x1ab: 0x477d, 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, @@ -4603,8 +4607,8 @@ var nfkcValues = [5888]uint16{ 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, + 0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b, + 0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769, 0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f, // Block 0x8, offset 0x200 0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132, @@ -4619,7 +4623,7 @@ var nfkcValues = [5888]uint16{ 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, + 0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 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, @@ -4631,22 +4635,22 @@ var nfkcValues = [5888]uint16{ 0x27a: 0x42a5, 0x27e: 0x0037, // Block 0xa, offset 0x280 - 0x284: 0x425a, 0x285: 0x4511, + 0x284: 0x425a, 0x285: 0x447b, 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, + 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 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, + 0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e, + 0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0, + 0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8, 0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7, 0x2f9: 0x01a6, // Block 0xc, offset 0x300 @@ -4726,15 +4730,15 @@ var nfkcValues = [5888]uint16{ 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, + 0x4f6: 0x46c4, 0x4f7: 0x4755, 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, + 0x518: 0x315e, 0x519: 0x346f, 0x51a: 0x46f1, 0x51b: 0x4782, 0x51c: 0x3997, 0x51d: 0x3b26, + 0x51e: 0x3177, 0x51f: 0x3488, 0x520: 0x3181, 0x521: 0x3492, 0x522: 0x4700, 0x523: 0x4791, 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, @@ -4746,16 +4750,16 @@ var nfkcValues = [5888]uint16{ 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, + 0x560: 0x46a1, 0x561: 0x4732, 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, + 0x576: 0x38c5, 0x577: 0x3a54, 0x578: 0x46b5, 0x579: 0x4746, 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, + 0x58c: 0x46e7, 0x58d: 0x4778, 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, @@ -4764,29 +4768,29 @@ var nfkcValues = [5888]uint16{ 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, + 0x5c0: 0x4804, 0x5c1: 0x480a, 0x5c2: 0x491e, 0x5c3: 0x4936, 0x5c4: 0x4926, 0x5c5: 0x493e, + 0x5c6: 0x492e, 0x5c7: 0x4946, 0x5c8: 0x47aa, 0x5c9: 0x47b0, 0x5ca: 0x488e, 0x5cb: 0x48a6, + 0x5cc: 0x4896, 0x5cd: 0x48ae, 0x5ce: 0x489e, 0x5cf: 0x48b6, 0x5d0: 0x4816, 0x5d1: 0x481c, 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, + 0x5d8: 0x47b6, 0x5d9: 0x47bc, 0x5da: 0x3ce8, 0x5db: 0x3cf8, 0x5dc: 0x3cf0, 0x5dd: 0x3d00, + 0x5e0: 0x482e, 0x5e1: 0x4834, 0x5e2: 0x494e, 0x5e3: 0x4966, + 0x5e4: 0x4956, 0x5e5: 0x496e, 0x5e6: 0x495e, 0x5e7: 0x4976, 0x5e8: 0x47c2, 0x5e9: 0x47c8, + 0x5ea: 0x48be, 0x5eb: 0x48d6, 0x5ec: 0x48c6, 0x5ed: 0x48de, 0x5ee: 0x48ce, 0x5ef: 0x48e6, + 0x5f0: 0x4846, 0x5f1: 0x484c, 0x5f2: 0x3e18, 0x5f3: 0x3e30, 0x5f4: 0x3e20, 0x5f5: 0x3e38, + 0x5f6: 0x3e28, 0x5f7: 0x3e40, 0x5f8: 0x47ce, 0x5f9: 0x47d4, 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, + 0x600: 0x4852, 0x601: 0x4858, 0x602: 0x3e48, 0x603: 0x3e58, 0x604: 0x3e50, 0x605: 0x3e60, + 0x608: 0x47da, 0x609: 0x47e0, 0x60a: 0x3d48, 0x60b: 0x3d58, + 0x60c: 0x3d50, 0x60d: 0x3d60, 0x610: 0x4864, 0x611: 0x486a, 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, + 0x619: 0x47e6, 0x61b: 0x3d68, 0x61d: 0x3d70, + 0x61f: 0x3d78, 0x620: 0x487c, 0x621: 0x4882, 0x622: 0x497e, 0x623: 0x4996, + 0x624: 0x4986, 0x625: 0x499e, 0x626: 0x498e, 0x627: 0x49a6, 0x628: 0x47ec, 0x629: 0x47f2, + 0x62a: 0x48ee, 0x62b: 0x4906, 0x62c: 0x48f6, 0x62d: 0x490e, 0x62e: 0x48fe, 0x62f: 0x4916, + 0x630: 0x47f8, 0x631: 0x431e, 0x632: 0x3691, 0x633: 0x4324, 0x634: 0x4822, 0x635: 0x432a, + 0x636: 0x36a3, 0x637: 0x4330, 0x638: 0x36c1, 0x639: 0x4336, 0x63a: 0x36d9, 0x63b: 0x433c, + 0x63c: 0x4870, 0x63d: 0x4342, // 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, @@ -4797,19 +4801,19 @@ var nfkcValues = [5888]uint16{ 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, + 0x676: 0x4810, 0x677: 0x3db0, 0x678: 0x35f5, 0x679: 0x35ef, 0x67a: 0x35e3, 0x67b: 0x42ee, 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, + 0x680: 0x42a0, 0x681: 0x4482, 0x682: 0x3dd8, 0x683: 0x369d, 0x684: 0x3de0, + 0x686: 0x483a, 0x687: 0x3df8, 0x688: 0x3601, 0x689: 0x42f4, 0x68a: 0x360d, 0x68b: 0x42fa, + 0x68c: 0x3619, 0x68d: 0x4489, 0x68e: 0x4490, 0x68f: 0x4497, 0x690: 0x36b5, 0x691: 0x36af, + 0x692: 0x3e00, 0x693: 0x44e4, 0x696: 0x36bb, 0x697: 0x3e10, + 0x698: 0x3631, 0x699: 0x362b, 0x69a: 0x361f, 0x69b: 0x4300, 0x69d: 0x449e, + 0x69e: 0x44a5, 0x69f: 0x44ac, 0x6a0: 0x36eb, 0x6a1: 0x36e5, 0x6a2: 0x3e68, 0x6a3: 0x44ec, 0x6a4: 0x36cd, 0x6a5: 0x36d3, 0x6a6: 0x36f1, 0x6a7: 0x3e78, 0x6a8: 0x3661, 0x6a9: 0x365b, - 0x6aa: 0x364f, 0x6ab: 0x43a2, 0x6ac: 0x3649, 0x6ad: 0x450a, 0x6ae: 0x4511, 0x6af: 0x0081, + 0x6aa: 0x364f, 0x6ab: 0x430c, 0x6ac: 0x3649, 0x6ad: 0x4474, 0x6ae: 0x447b, 0x6af: 0x0081, 0x6b2: 0x3eb0, 0x6b3: 0x36f7, 0x6b4: 0x3eb8, - 0x6b6: 0x491e, 0x6b7: 0x3ed0, 0x6b8: 0x363d, 0x6b9: 0x439c, 0x6ba: 0x366d, 0x6bb: 0x43ae, + 0x6b6: 0x4888, 0x6b7: 0x3ed0, 0x6b8: 0x363d, 0x6b9: 0x4306, 0x6ba: 0x366d, 0x6bb: 0x4318, 0x6bc: 0x3679, 0x6bd: 0x425a, 0x6be: 0x428c, // Block 0x1b, offset 0x6c0 0x6c0: 0x1bd8, 0x6c1: 0x1bdc, 0x6c2: 0x0047, 0x6c3: 0x1c54, 0x6c5: 0x1be8, @@ -4922,7 +4926,7 @@ var nfkcValues = [5888]uint16{ 0x93c: 0x3fc0, 0x93d: 0x3fc8, // Block 0x25, offset 0x940 0x954: 0x3f00, - 0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x4372, 0x95c: 0x4378, 0x95d: 0xa000, + 0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x42dc, 0x95c: 0x42e2, 0x95d: 0xa000, 0x95e: 0x3fd0, 0x95f: 0x26b4, 0x966: 0xa000, 0x96b: 0xa000, 0x96c: 0x3fe0, 0x96d: 0xa000, 0x96e: 0x3fe8, 0x96f: 0xa000, @@ -4942,10 +4946,10 @@ var nfkcValues = [5888]uint16{ // 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, + 0x9cc: 0x0353, 0x9cd: 0x0357, 0x9ce: 0x035b, 0x9cf: 0x49bd, 0x9d0: 0x49c3, 0x9d1: 0x49c9, + 0x9d2: 0x49cf, 0x9d3: 0x49d5, 0x9d4: 0x49db, 0x9d5: 0x49e1, 0x9d6: 0x49e7, 0x9d7: 0x49ed, + 0x9d8: 0x49f3, 0x9d9: 0x49f9, 0x9da: 0x49ff, 0x9db: 0x4a05, 0x9dc: 0x4a0b, 0x9dd: 0x4a11, + 0x9de: 0x4a17, 0x9df: 0x4a1d, 0x9e0: 0x4a23, 0x9e1: 0x4a29, 0x9e2: 0x4a2f, 0x9e3: 0x4a35, 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, @@ -5148,17 +5152,17 @@ var nfkcValues = [5888]uint16{ 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, + 0xe5d: 0x4390, + 0xe5e: 0x8115, 0xe5f: 0x4402, 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, + 0xe6a: 0x43f0, 0xe6b: 0x43f6, 0xe6c: 0x44f4, 0xe6d: 0x44fc, 0xe6e: 0x4348, 0xe6f: 0x434e, + 0xe70: 0x4354, 0xe71: 0x435a, 0xe72: 0x4366, 0xe73: 0x436c, 0xe74: 0x4372, 0xe75: 0x437e, + 0xe76: 0x4384, 0xe78: 0x438a, 0xe79: 0x4396, 0xe7a: 0x439c, 0xe7b: 0x43a2, + 0xe7c: 0x43ae, 0xe7e: 0x43b4, // 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, + 0xe80: 0x43ba, 0xe81: 0x43c0, 0xe83: 0x43c6, 0xe84: 0x43cc, + 0xe86: 0x43d8, 0xe87: 0x43de, 0xe88: 0x43e4, 0xe89: 0x43ea, 0xe8a: 0x43fc, 0xe8b: 0x4378, + 0xe8c: 0x4360, 0xe8d: 0x43a8, 0xe8e: 0x43d2, 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, @@ -5174,9 +5178,9 @@ var nfkcValues = [5888]uint16{ 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, + 0xee4: 0x446e, 0xee5: 0x446e, 0xee6: 0x02ed, 0xee7: 0x02ed, 0xee8: 0x02ed, 0xee9: 0x02ed, 0xeea: 0x02ea, 0xeeb: 0x02ea, 0xeec: 0x02ea, 0xeed: 0x02ea, 0xeee: 0x0308, 0xeef: 0x0308, - 0xef0: 0x44fe, 0xef1: 0x44fe, + 0xef0: 0x4468, 0xef1: 0x4468, // 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, @@ -5203,8 +5207,8 @@ var nfkcValues = [5888]uint16{ 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, + 0xf98: 0x2031, 0xf99: 0x2040, 0xf9a: 0x2045, 0xf9b: 0x4420, 0xf9c: 0x4426, 0xf9d: 0x445c, + 0xf9e: 0x44b3, 0xf9f: 0x44ba, 0xfa0: 0x44c1, 0xfa1: 0x44c8, 0xfa2: 0x44cf, 0xfa3: 0x44d6, 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, @@ -5213,7 +5217,7 @@ var nfkcValues = [5888]uint16{ // 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, + 0xfcc: 0x1fe6, 0xfcd: 0x1feb, 0xfce: 0x1ff5, 0xfcf: 0x1ffa, 0xfd0: 0x445c, 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, @@ -5227,11 +5231,11 @@ var nfkcValues = [5888]uint16{ 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, + 0x1018: 0x2004, 0x1019: 0x4450, 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, + 0x1030: 0x2031, 0x1031: 0x203b, 0x1032: 0x4504, 0x1033: 0x450c, 0x1034: 0x4514, 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 @@ -5245,7 +5249,7 @@ var nfkcValues = [5888]uint16{ 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, + 0x107c: 0x4408, 0x107d: 0x4408, // Block 0x42, offset 0x1080 0x1090: 0x2311, 0x1091: 0x2326, 0x1092: 0x2326, 0x1093: 0x232d, 0x1094: 0x2334, 0x1095: 0x2349, 0x1096: 0x2350, 0x1097: 0x2357, @@ -5293,13 +5297,13 @@ var nfkcValues = [5888]uint16{ 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, + 0x11b0: 0x42aa, 0x11b1: 0x442c, 0x11b2: 0x42af, 0x11b4: 0x42b4, + 0x11b6: 0x42b9, 0x11b7: 0x4432, 0x11b8: 0x42be, 0x11b9: 0x4438, 0x11ba: 0x42c3, 0x11bb: 0x443e, + 0x11bc: 0x42c8, 0x11bd: 0x4444, 0x11be: 0x42cd, 0x11bf: 0x444a, // 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, + 0x11c0: 0x0236, 0x11c1: 0x440e, 0x11c2: 0x440e, 0x11c3: 0x4414, 0x11c4: 0x4414, 0x11c5: 0x4456, + 0x11c6: 0x4456, 0x11c7: 0x441a, 0x11c8: 0x441a, 0x11c9: 0x4462, 0x11ca: 0x4462, 0x11cb: 0x4462, + 0x11cc: 0x4462, 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, @@ -5338,18 +5342,18 @@ var nfkcValues = [5888]uint16{ 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, + 0x129e: 0x4a78, 0x129f: 0x4a7e, 0x12a0: 0x03c3, 0x12a1: 0x0313, 0x12a2: 0x0317, 0x12a3: 0x4a3b, + 0x12a4: 0x031b, 0x12a5: 0x4a41, 0x12a6: 0x4a47, 0x12a7: 0x031f, 0x12a8: 0x0323, 0x12a9: 0x0327, + 0x12aa: 0x4a4d, 0x12ab: 0x4a53, 0x12ac: 0x4a59, 0x12ad: 0x4a5f, 0x12ae: 0x4a65, 0x12af: 0x4a6b, 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, + 0x12c2: 0x49bd, 0x12c3: 0x49c3, 0x12c4: 0x49c9, 0x12c5: 0x49cf, + 0x12c6: 0x49d5, 0x12c7: 0x49db, 0x12ca: 0x49e1, 0x12cb: 0x49e7, + 0x12cc: 0x49ed, 0x12cd: 0x49f3, 0x12ce: 0x49f9, 0x12cf: 0x49ff, + 0x12d2: 0x4a05, 0x12d3: 0x4a0b, 0x12d4: 0x4a11, 0x12d5: 0x4a17, 0x12d6: 0x4a1d, 0x12d7: 0x4a23, + 0x12da: 0x4a29, 0x12db: 0x4a2f, 0x12dc: 0x4a35, 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, @@ -5426,7 +5430,7 @@ var nfkcValues = [5888]uint16{ // 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, + 0x1492: 0x08d3, 0x1493: 0x45c4, 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, @@ -5665,8 +5669,8 @@ var nfkcSparseValues = [875]valueRange{ {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: 0x46e2, lo: 0xa0, hi: 0xa1}, + {value: 0x4714, lo: 0xaf, hi: 0xb0}, {value: 0xa000, lo: 0xb7, hi: 0xb7}, // Block 0x2, offset 0x12 {value: 0x0003, lo: 0x08}, @@ -5814,7 +5818,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x812d, lo: 0x92, hi: 0x92}, {value: 0x8132, lo: 0x93, hi: 0x93}, {value: 0x8132, lo: 0x94, hi: 0x94}, - {value: 0x45b2, lo: 0x98, hi: 0x9f}, + {value: 0x451c, lo: 0x98, hi: 0x9f}, // Block 0x11, offset 0x96 {value: 0x0000, lo: 0x02}, {value: 0x8102, lo: 0xbc, hi: 0xbc}, @@ -5825,18 +5829,18 @@ var nfkcSparseValues = [875]valueRange{ {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}, + {value: 0x455c, lo: 0x9c, hi: 0x9d}, + {value: 0x456c, 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: 0x4594, lo: 0xb3, hi: 0xb3}, + {value: 0x459c, 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}, + {value: 0x4574, lo: 0x99, hi: 0x9b}, + {value: 0x458c, lo: 0x9e, hi: 0x9e}, // Block 0x15, offset 0xa8 {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0xbc, hi: 0xbc}, @@ -5851,8 +5855,8 @@ var nfkcSparseValues = [875]valueRange{ {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}, + {value: 0x45a4, lo: 0x9c, hi: 0x9c}, + {value: 0x45ac, lo: 0x9d, hi: 0x9d}, // Block 0x18, offset 0xb5 {value: 0x0000, lo: 0x03}, {value: 0xa000, lo: 0x92, hi: 0x92}, @@ -5941,18 +5945,18 @@ var nfkcSparseValues = [875]valueRange{ {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: 0x4a84, 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: 0x4a8d, lo: 0xb5, hi: 0xb5}, + {value: 0x45b4, lo: 0xb6, hi: 0xb6}, + {value: 0x45f4, lo: 0xb7, hi: 0xb7}, + {value: 0x45bc, lo: 0xb8, hi: 0xb8}, + {value: 0x45ff, 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: 0x4a96, lo: 0x81, hi: 0x81}, {value: 0x8132, lo: 0x82, hi: 0x83}, {value: 0x8104, lo: 0x84, hi: 0x84}, {value: 0x8132, lo: 0x86, hi: 0x87}, @@ -6199,7 +6203,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x192d, lo: 0xb5, hi: 0xb6}, // Block 0x4a, offset 0x1db {value: 0x0000, lo: 0x01}, - {value: 0x4573, lo: 0x9c, hi: 0x9c}, + {value: 0x44dd, lo: 0x9c, hi: 0x9c}, // Block 0x4b, offset 0x1dd {value: 0x0000, lo: 0x02}, {value: 0x0095, lo: 0xbc, hi: 0xbc}, @@ -6245,16 +6249,16 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x04b3, lo: 0xb6, hi: 0xb6}, {value: 0x0887, lo: 0xb8, hi: 0xba}, // Block 0x53, offset 0x201 - {value: 0x0005, lo: 0x09}, + {value: 0x0006, lo: 0x09}, {value: 0x0313, lo: 0xb1, hi: 0xb1}, {value: 0x0317, lo: 0xb2, hi: 0xb2}, - {value: 0x4345, lo: 0xb3, hi: 0xb3}, + {value: 0x4a3b, lo: 0xb3, hi: 0xb3}, {value: 0x031b, lo: 0xb4, hi: 0xb4}, - {value: 0x434a, lo: 0xb5, hi: 0xb6}, + {value: 0x4a41, 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}, + {value: 0x4a4d, lo: 0xba, hi: 0xbf}, // Block 0x54, offset 0x20b {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0xaf, hi: 0xaf}, @@ -6479,13 +6483,13 @@ var nfkcSparseValues = [875]valueRange{ {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: 0x45cc, lo: 0x9e, hi: 0x9e}, + {value: 0x45d6, lo: 0x9f, hi: 0x9f}, + {value: 0x460a, lo: 0xa0, hi: 0xa0}, + {value: 0x4618, lo: 0xa1, hi: 0xa1}, + {value: 0x4626, lo: 0xa2, hi: 0xa2}, + {value: 0x4634, lo: 0xa3, hi: 0xa3}, + {value: 0x4642, lo: 0xa4, hi: 0xa4}, {value: 0x812b, lo: 0xa5, hi: 0xa6}, {value: 0x8101, lo: 0xa7, hi: 0xa9}, {value: 0x8130, lo: 0xad, hi: 0xad}, @@ -6497,14 +6501,14 @@ var nfkcSparseValues = [875]valueRange{ {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}, + {value: 0x45e0, lo: 0xbb, hi: 0xbb}, + {value: 0x45ea, lo: 0xbc, hi: 0xbc}, + {value: 0x4650, lo: 0xbd, hi: 0xbd}, + {value: 0x466c, lo: 0xbe, hi: 0xbe}, + {value: 0x465e, lo: 0xbf, hi: 0xbf}, // Block 0x85, offset 0x2d1 {value: 0x0000, lo: 0x01}, - {value: 0x4710, lo: 0x80, hi: 0x80}, + {value: 0x467a, lo: 0x80, hi: 0x80}, // Block 0x86, offset 0x2d3 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x82, hi: 0x84}, @@ -7624,4 +7628,4 @@ var recompMap = map[uint32]rune{ 0x15B915AF: 0x115BB, } -// Total size of tables: 53KB (53976 bytes) +// Total size of tables: 53KB (54006 bytes) diff --git a/vendor/golang.org/x/text/unicode/norm/transform_test.go b/vendor/golang.org/x/text/unicode/norm/transform_test.go index 987d680ed1..d596ff3d89 100644 --- a/vendor/golang.org/x/text/unicode/norm/transform_test.go +++ b/vendor/golang.org/x/text/unicode/norm/transform_test.go @@ -41,7 +41,7 @@ func TestTransform(t *testing.T) { {NFC, "qx", "", true, 1, transform.ErrShortDst}, {NFC, "a\u0300abc", "\u00e0a", true, 4, transform.ErrShortDst}, - // We cannot write a segment if succesive runes could still change the result. + // We cannot write a segment if successive runes could still change the result. {NFD, "ö", "", false, 3, transform.ErrShortSrc}, {NFC, "a\u0300", "", false, 4, transform.ErrShortSrc}, {NFD, "a\u0300", "", false, 4, transform.ErrShortSrc}, @@ -68,7 +68,7 @@ func TestTransform(t *testing.T) { t.Errorf("%d: was %+q (%v); want %+q (%v)", i, out, err, tt.out, tt.err) } if want := tt.f.String(tt.in)[:nDst]; want != out { - t.Errorf("%d: incorect normalization: was %+q; want %+q", i, out, want) + t.Errorf("%d: incorrect normalization: was %+q; want %+q", i, out, want) } } } diff --git a/vendor/golang.org/x/text/unicode/rangetable/tables.go b/vendor/golang.org/x/text/unicode/rangetable/tables.go index 25c4dfb7e0..61c989b4c8 100644 --- a/vendor/golang.org/x/text/unicode/rangetable/tables.go +++ b/vendor/golang.org/x/text/unicode/rangetable/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package rangetable diff --git a/vendor/golang.org/x/text/unicode/runenames/bits.go b/vendor/golang.org/x/text/unicode/runenames/bits.go new file mode 100644 index 0000000000..48cc2c05c6 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/runenames/bits.go @@ -0,0 +1,59 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package runenames + +// This file contains code common to gen.go and the package code. + +// The mapping from rune to string (i.e. offset and length in the data string) +// is encoded as a two level table. The first level maps from contiguous rune +// ranges [runeOffset, runeOffset+runeLength) to entries. Entries are either +// direct (for repeated names such as "") or indirect (for runs +// of unique names such as "SPACE", "EXCLAMATION MARK", "QUOTATION MARK", ...). +// +// Each first level table element is 64 bits. The runeOffset (21 bits) and +// runeLength (16 bits) take the 37 high bits. The entry takes the 27 low bits, +// with directness encoded in the least significant bit. +// +// A direct entry encodes a dataOffset (18 bits) and dataLength (8 bits) in the +// data string. 18 bits is too short to encode the entire data string's length, +// but the data string's contents are arranged so that all of the few direct +// entries' offsets come before all of the many indirect entries' offsets. +// +// An indirect entry encodes a dataBase (10 bits) and a table1Offset (16 bits). +// The table1Offset is the start of a range in the second level table. The +// length of that range is the same as the runeLength. +// +// Each second level table element is 16 bits, an index into data, relative to +// a bias equal to (dataBase << dataBaseUnit). That (bias + index) is the +// (dataOffset + dataLength) in the data string. The dataOffset is implied by +// the previous table element (with the same implicit bias). + +const ( + bitsRuneOffset = 21 + bitsRuneLength = 16 + bitsDataOffset = 18 + bitsDataLength = 8 + bitsDirect = 1 + + bitsDataBase = 10 + bitsTable1Offset = 16 + + shiftRuneOffset = 0 + bitsDirect + bitsDataLength + bitsDataOffset + bitsRuneLength + shiftRuneLength = 0 + bitsDirect + bitsDataLength + bitsDataOffset + shiftDataOffset = 0 + bitsDirect + bitsDataLength + shiftDataLength = 0 + bitsDirect + shiftDirect = 0 + + shiftDataBase = 0 + bitsDirect + bitsTable1Offset + shiftTable1Offset = 0 + bitsDirect + + maskRuneLength = 1<" + // 0000001f "" + // 00000020 "SPACE" + // 00000021 "EXCLAMATION MARK" + // 00000041 "LATIN CAPITAL LETTER A" + // 0000007e "TILDE" + // 0000007f "" + // 00000080 "" + // 000000e0 "LATIN SMALL LETTER A WITH GRAVE" + // 0000037f "GREEK CAPITAL LETTER YOT" + // 00000380 "" + // 00000381 "" + // 00000382 "" + // 00000383 "" + // 00000384 "GREEK TONOS" + // 00000385 "GREEK DIALYTIKA TONOS" + // 00000386 "GREEK CAPITAL LETTER ALPHA WITH TONOS" + // 000007c0 "NKO DIGIT ZERO" + // 00002603 "SNOWMAN" + // 000033ff "SQUARE GAL" + // 00003400 "" + // 00003401 "" + // 00003402 "" + // 00004dc0 "HEXAGRAM FOR THE CREATIVE HEAVEN" + // 00009fd5 "" + // 00009fd6 "" + // 00009fff "" + // 0000a000 "YI SYLLABLE IT" + // 0000dc00 "" + // 0000f800 "" + // 0000fffc "OBJECT REPLACEMENT CHARACTER" + // 0000fffd "REPLACEMENT CHARACTER" + // 0000fffe "" + // 0000ffff "" + // 00010000 "LINEAR B SYLLABLE B008 A" + // 0001f574 "MAN IN BUSINESS SUIT LEVITATING" + // 0002fa1d "CJK COMPATIBILITY IDEOGRAPH-2FA1D" + // 0002fa1e "" + // 000e0100 "VARIATION SELECTOR-17" + // 000e01ef "VARIATION SELECTOR-256" + // 000e01f0 "" + // 00100000 "" + // 0010fffd "" + // 0010fffe "" + // 0010ffff "" +} diff --git a/vendor/golang.org/x/text/unicode/runenames/gen.go b/vendor/golang.org/x/text/unicode/runenames/gen.go new file mode 100644 index 0000000000..7e373a54c7 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/runenames/gen.go @@ -0,0 +1,195 @@ +// 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 ignore + +package main + +import ( + "log" + "strings" + "unicode" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/ucd" +) + +// snippet is a slice of data; data is the concatenation of all of the names. +type snippet struct { + offset int + length int + s string +} + +func makeTable0EntryDirect(rOffset, rLength, dOffset, dLength int) uint64 { + if rOffset >= 1<= 1<= 1<= 1<= 1<= 1<= 1<= 1<= 0 { + s = s[:i] + ">" + } + } + names[r] = s + counts[s]++ + }) + return names, counts +} + +func appendRepeatNames(names []string, counts map[string]int) { + alreadySeen := map[string]snippet{} + for r, s := range names { + if s == "" || counts[s] == 1 { + continue + } + if s[0] != '<' { + log.Fatalf("Repeated name %q does not start with a '<'", s) + } + + if z, ok := alreadySeen[s]; ok { + snippets[r] = z + continue + } + + z := snippet{ + offset: len(data), + length: len(s), + s: s, + } + data = append(data, s...) + snippets[r] = z + alreadySeen[s] = z + } +} + +func appendUniqueNames(names []string, counts map[string]int) { + for r, s := range names { + if s == "" || counts[s] != 1 { + continue + } + if s[0] == '<' { + log.Fatalf("Unique name %q starts with a '<'", s) + } + + z := snippet{ + offset: len(data), + length: len(s), + s: s, + } + data = append(data, s...) + snippets[r] = z + } +} + +func makeTables() (table0 []uint64, table1 []uint16) { + for i := 0; i < len(snippets); { + zi := snippets[i] + if zi == (snippet{}) { + i++ + continue + } + + // Look for repeat names. If we have one, we only need a table0 entry. + j := i + 1 + for ; j < len(snippets) && zi == snippets[j]; j++ { + } + if j > i+1 { + table0 = append(table0, makeTable0EntryDirect(i, j-i, zi.offset, zi.length)) + i = j + continue + } + + // Otherwise, we have a run of unique names. We need one table0 entry + // and two or more table1 entries. + base := zi.offset &^ (1<>dataBaseUnit, t1Offset)) + i = j + } + return table0, table1 +} diff --git a/vendor/golang.org/x/text/unicode/runenames/gen_bits.go b/vendor/golang.org/x/text/unicode/runenames/gen_bits.go new file mode 100644 index 0000000000..e80fada560 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/runenames/gen_bits.go @@ -0,0 +1,63 @@ +// 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 ignore + +package main + +// This file contains code common to gen.go and the package code. + +// The mapping from rune to string (i.e. offset and length in the data string) +// is encoded as a two level table. The first level maps from contiguous rune +// ranges [runeOffset, runeOffset+runeLength) to entries. Entries are either +// direct (for repeated names such as "") or indirect (for runs +// of unique names such as "SPACE", "EXCLAMATION MARK", "QUOTATION MARK", ...). +// +// Each first level table element is 64 bits. The runeOffset (21 bits) and +// runeLength (16 bits) take the 37 high bits. The entry takes the 27 low bits, +// with directness encoded in the least significant bit. +// +// A direct entry encodes a dataOffset (18 bits) and dataLength (8 bits) in the +// data string. 18 bits is too short to encode the entire data string's length, +// but the data string's contents are arranged so that all of the few direct +// entries' offsets come before all of the many indirect entries' offsets. +// +// An indirect entry encodes a dataBase (10 bits) and a table1Offset (16 bits). +// The table1Offset is the start of a range in the second level table. The +// length of that range is the same as the runeLength. +// +// Each second level table element is 16 bits, an index into data, relative to +// a bias equal to (dataBase << dataBaseUnit). That (bias + index) is the +// (dataOffset + dataLength) in the data string. The dataOffset is implied by +// the previous table element (with the same implicit bias). + +const ( + bitsRuneOffset = 21 + bitsRuneLength = 16 + bitsDataOffset = 18 + bitsDataLength = 8 + bitsDirect = 1 + + bitsDataBase = 10 + bitsTable1Offset = 16 + + shiftRuneOffset = 0 + bitsDirect + bitsDataLength + bitsDataOffset + bitsRuneLength + shiftRuneLength = 0 + bitsDirect + bitsDataLength + bitsDataOffset + shiftDataOffset = 0 + bitsDirect + bitsDataLength + shiftDataLength = 0 + bitsDirect + shiftDirect = 0 + + shiftDataBase = 0 + bitsDirect + bitsTable1Offset + shiftTable1Offset = 0 + bitsDirect + + maskRuneLength = 1<> shiftRuneOffset) + return r < rOffset + }) + if i == 0 { + return "" + } + + e := table0[i-1] + rOffset := rune(e >> shiftRuneOffset) + rLength := rune(e>>shiftRuneLength) & maskRuneLength + if r >= rOffset+rLength { + return "" + } + + if (e>>shiftDirect)&maskDirect != 0 { + o := int(e>>shiftDataOffset) & maskDataOffset + n := int(e>>shiftDataLength) & maskDataLength + return data[o : o+n] + } + + base := uint32(e>>shiftDataBase) & maskDataBase + base <<= dataBaseUnit + j := rune(e>>shiftTable1Offset) & maskTable1Offset + j += r - rOffset + d0 := base + uint32(table1[j-1]) // dataOffset + d1 := base + uint32(table1[j-0]) // dataOffset + dataLength + return data[d0:d1] +} diff --git a/vendor/golang.org/x/text/unicode/runenames/runenames_test.go b/vendor/golang.org/x/text/unicode/runenames/runenames_test.go new file mode 100644 index 0000000000..6a2d2b6074 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/runenames/runenames_test.go @@ -0,0 +1,46 @@ +// 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 runenames + +import ( + "strings" + "testing" + "unicode" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/testtext" + "golang.org/x/text/internal/ucd" +) + +func TestName(t *testing.T) { + testtext.SkipIfNotLong(t) + + wants := make([]string, 1+unicode.MaxRune) + ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { + r, s := p.Rune(0), p.String(ucd.Name) + if s == "" { + return + } + if s[0] == '<' { + const first = ", First>" + if i := strings.Index(s, first); i >= 0 { + s = s[:i] + ">" + } + } + wants[r] = s + }) + + nErrors := 0 + for r, want := range wants { + got := Name(rune(r)) + if got != want { + t.Errorf("r=%#08x: got %q, want %q", r, got, want) + nErrors++ + if nErrors == 100 { + t.Fatal("too many errors") + } + } + } +} diff --git a/vendor/golang.org/x/text/unicode/runenames/tables.go b/vendor/golang.org/x/text/unicode/runenames/tables.go new file mode 100644 index 0000000000..99c4926d45 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/runenames/tables.go @@ -0,0 +1,15514 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package runenames + +var table0 = []uint64{ // 647 elements + // Entry 0 - 1F + 0x0000000100000013, 0x00010002f8000002, 0x0003f80108000013, 0x00050016c00200c2, + 0x001bd000302e0674, 0x001c2000382e0682, 0x001c600008300692, 0x001c7000a0300696, + 0x001d180c683006c0, 0x00298801304809dc, 0x002ac800384a0a2a, 0x002b0801384a0a3a, + 0x002c4800104c0a8a, 0x002c6800184c0a90, 0x002c8801b84e0a98, 0x002e8000d8500b08, + 0x002f800028500b40, 0x00300000e8500b4c, 0x0030f00780520b88, 0x00387801e05e0d6a, + 0x003a680328600de4, 0x003e0001d8680eb0, 0x00400001706a0f28, 0x00418000786c0f86, + 0x00420000e06c0fa6, 0x0042f000086e0fe0, 0x00450000a86e0fe4, 0x0045b000406e1010, + 0x0046a00580701022, 0x004c280040781184, 0x004c780010781196, 0x004c9800b078119c, + // Entry 20 - 3F + 0x004d5000387811ca, 0x004d9000087811da, 0x004db000207a11de, 0x004de000487a11e8, + 0x004e3800107a11fc, 0x004e5800207a1202, 0x004eb800087a120c, 0x004ee000107a1210, + 0x004ef800287a1216, 0x004f3000b07a1222, 0x00500800187c1250, 0x00502800307c1258, + 0x00507800107c1266, 0x00509800b07c126c, 0x00515000387c129a, 0x00519000107c12aa, + 0x0051a800107c12b0, 0x0051c000107c12b6, 0x0051e000087c12bc, 0x0051f000287c12c0, + 0x00523800107e12cc, 0x00525800187e12d2, 0x00528800087e12da, 0x0052c800207e12de, + 0x0052f000087e12e8, 0x00533000807e12ec, 0x00540800187e130e, 0x00542800487e1316, + 0x00547800187e132a, 0x00549800b07e1332, 0x0055500038801360, 0x0055900010801370, + // Entry 40 - 5F + 0x0055a80028801376, 0x0055e00050801382, 0x0056380018801398, 0x00565800188013a0, + 0x00568000088013a8, 0x00570000208013ac, 0x00573000608013b6, 0x0057c800088213d0, + 0x00580800188213d4, 0x00582800408213dc, 0x00587800108213ee, 0x00589800b08213f4, + 0x0059500038821422, 0x0059900010821432, 0x0059a80028821438, 0x0059e00048821444, + 0x005a380010841458, 0x005a58001884145e, 0x005ab00010841466, 0x005ae0001084146c, + 0x005af80028841472, 0x005b30009084147e, 0x005c1000108414a4, 0x005c2800308414aa, + 0x005c7000188414b8, 0x005c9000208414c0, 0x005cc800108414ca, 0x005ce000088614d0, + 0x005cf000108614d4, 0x005d1800108614da, 0x005d4000188614e0, 0x005d7000608614e8, + // Entry 60 - 7F + 0x005df00028861502, 0x005e30001886150e, 0x005e500020861516, 0x005e800008861520, + 0x005eb80008861524, 0x005f3000a8861528, 0x0060000020861554, 0x006028004088155e, + 0x0060700018881570, 0x00609000b8881578, 0x00615000808815a8, 0x0061e800408815ca, + 0x00623000188815dc, 0x00625000208a15e4, 0x0062a800108a15ee, 0x0062c000188a15f4, + 0x00630000208a15fc, 0x00633000508a1606, 0x0063c000608a161c, 0x00642800408a1636, + 0x00647000188c1648, 0x00649000b88c1650, 0x00655000508c1680, 0x0065a800288c1696, + 0x0065e000488c16a2, 0x00663000188c16b6, 0x00665000208e16be, 0x0066a800108e16c8, + 0x0066f000088e16ce, 0x00670000208e16d2, 0x00673000508e16dc, 0x00678800108e16f2, + // Entry 80 - 9F + 0x00680800188e16f8, 0x00682800408e1700, 0x00687000188e1712, 0x00689001488e171a, + 0x0069e8004090176e, 0x006a300018901780, 0x006a500030901788, 0x006aa00080901796, + 0x006b3000d09217b8, 0x006c1000109417ee, 0x006c2800909417f4, 0x006cd000c094181a, + 0x006d98004896184c, 0x006de80008961860, 0x006e000038961864, 0x006e500008961874, + 0x006e780030961878, 0x006eb00008961886, 0x006ec0004096188a, 0x006f30005098189c, + 0x006f9000189818b2, 0x00700801d09818ba, 0x0071f800e89a1930, 0x00740800109c196c, + 0x00742000089c1972, 0x00743800109c1976, 0x00745000089c197c, 0x00746800089c1980, + 0x0074a000209c1984, 0x0074c800389c198e, 0x00750800189c199e, 0x00752800089c19a6, + // Entry A0 - BF + 0x00753800089c19aa, 0x00755000109c19ae, 0x00756800689c19b4, 0x0075d800189e19d0, + 0x00760000289e19d8, 0x00763000089e19e4, 0x00764000309e19e8, 0x00768000509e19f6, + 0x0076e000209e1a0c, 0x00780002409e1a16, 0x007a480120a21aa8, 0x007b880138a21af2, + 0x007cc80120a41b42, 0x007df00078a61b8c, 0x007e700068a81bac, 0x0080000630a81bc8, + 0x0086380008b21d56, 0x0086680008b21d5a, 0x0086800bc8b21d5e, 0x0092500020c42052, + 0x0092800038c4205c, 0x0092c00008c4206c, 0x0092d00020c42070, 0x0093000148c4207a, + 0x0094500020c620ce, 0x0094800108c620d8, 0x0095900020c8211c, 0x0095c00038c82126, + 0x0096000008c82136, 0x0096100020c8213a, 0x0096400078c82144, 0x0096c001c8ca2164, + // Entry C0 - DF + 0x0098900020cc21d8, 0x0098c00218cc21e2, 0x009ae80100ce226a, 0x009c0000d0d022ac, + 0x009d0002b0d022e2, 0x009fc00030d42390, 0x00a00014e8d4239e, 0x00b50002c8f828da, + 0x00b8000068fc298e, 0x00b8700038fc29aa, 0x00b90000b8fc29ba, 0x00ba0000a0fc29ea, + 0x00bb000068fe2a14, 0x00bb700018fe2a30, 0x00bb900010fe2a38, 0x00bc0002f0fe2a3e, + 0x00bf000051022afc, 0x00bf800051022b12, 0x00c0000079022b28, 0x00c0800051042b48, + 0x00c10002c1042b5e, 0x00c4000159082c10, 0x00c58002310a2c68, 0x00c80000f90e2cf6, + 0x00c90000610e2d36, 0x00c9800061102d50, 0x00ca000009102d6a, 0x00ca200151102d6e, + 0x00cb800029102dc4, 0x00cc000161122dd0, 0x00cd8000d1142e2a, 0x00ce800059142e60, + // Entry E0 - FF + 0x00cef001f1162e78, 0x00d0f00209182ef6, 0x00d30000e91a2f7a, 0x00d3f800591c2fb6, + 0x00d48000511c2fce, 0x00d50000711c2fe4, 0x00d58000791e3002, 0x00d80002611e3022, + 0x00da8001692230bc, 0x00dc0003a1243118, 0x00dfe001e12a3202, 0x00e1d800792c327c, + 0x00e26801e12c329c, 0x00e60000412e3316, 0x00e6800139303328, 0x00e7c00011323378, + 0x00e80007b132337e, 0x00efd808d940356c, 0x00f8c000315637a4, 0x00f90001315837b2, + 0x00fa4000315a3800, 0x00fa8000415c380e, 0x00fac800095c3820, 0x00fad800095c3824, + 0x00fae800095c3828, 0x00faf800f95c382c, 0x00fc0001a95e386c, 0x00fdb000796638d8, + 0x00fe3000716638f8, 0x00feb00031683916, 0x00fee80099683924, 0x00ff90001968394c, + // Entry 100 - 11F + 0x00ffb000496a3954, 0x01000003296a3968, 0x01033000616e3a34, 0x0103a000d96e3a4e, + 0x01048000696e3a86, 0x01050000f9703aa2, 0x0106800109703ae2, 0x0108000461723b26, + 0x010c801379783c40, 0x0120000139944120, 0x0122000059964170, 0x01230038a1964188, + 0x015bb00101fa4fb2, 0x015cc00111fc4ff4, 0x015de80061fe503a, 0x015e500042005054, + 0x015f600022005066, 0x016000017a005070, 0x016180017a0250d0, 0x01630004a2065130, + 0x0167c8016a0e525a, 0x016938000a1052b6, 0x016968000a1052ba, 0x01698001c21052be, + 0x016b780012145330, 0x016bf800c2145336, 0x016d00003a145368, 0x016d40003a145378, + 0x016d80003a145388, 0x016dc0003a165398, 0x016e00003a1653a8, 0x016e40003a1653b8, + // Entry 120 - 13F + 0x016e80003a1653c8, 0x016ec0003a1653d8, 0x016f00032a1653e8, 0x01740000d21c54b4, + 0x0174d802ca1c54ea, 0x01780006b220559e, 0x017f80006228574c, 0x01800002022a5766, + 0x01820802b22e57e8, 0x0184c8033a305896, 0x018828014a345966, 0x01898802f23659ba, + 0x018c80015a3a5a78, 0x018e0001223c5ad0, 0x018f80017a3c5b1a, 0x01910006fa405b7a, + 0x01980008024a5d3a, 0x01a000cdb0001237, 0x026e000202545f3c, 0x0270028eb000481f, + 0x050000246a565fbe, 0x05248001ba7a68da, 0x0526800ae27c694a, 0x05320005c2866c04, + 0x053800057a8e6d76, 0x053d8000429a6ed6, 0x053fb801aa9a6ee8, 0x05418000529e6f54, + 0x05420001c29e6f6a, 0x0544000232a06fdc, 0x0546700062a4706a, 0x05470000f2a47084, + // Entry 140 - 15F + 0x05480002a2a670c2, 0x054af800f2a8716c, 0x054c000272aa71aa, 0x054e78005aae7248, + 0x054ef0010aae7260, 0x05500001bab072a4, 0x0552000072b27314, 0x0552800052b27332, + 0x0552e0033ab27348, 0x0556d800e2b67418, 0x0558080032b87452, 0x0558480032b87460, + 0x0558880032b8746e, 0x055900003ab8747c, 0x055940003aba748c, 0x05598001b2ba749c, + 0x055b8003f2be750a, 0x055f800052c47608, 0x0560015d20006623, 0x06bd8000bac4761e, + 0x06be58018ac4764e, 0x06c0001c00008841, 0x06dc00040000c839, 0x06e000200001001f, + 0x070000c800011e1b, 0x07c8000b72c876b2, 0x07d3800352de7990, 0x07d800003ae67a66, + 0x07d898002ae67a76, 0x07d8e800d2e67a82, 0x07d9c0002ae87ab8, 0x07d9f0000ae87ac4, + // Entry 160 - 17F + 0x07da000012e87ac8, 0x07da180012e87ace, 0x07da3003e2e87ad4, 0x07de980b6af07bce, + 0x07ea800203107eaa, 0x07ec9001b3167f2c, 0x07ef8000731c7f9a, 0x07f00000d31c7fb8, + 0x07f100019b1e7fee, 0x07f2a0009b228056, 0x07f340002322807e, 0x07f380002b228088, + 0x07f3b0043b228094, 0x07f7f8000b2c81a4, 0x07f80805f32c81a8, 0x07fe100033368326, + 0x07fe500033368334, 0x07fe900033368342, 0x07fed0001b368350, 0x07ff00003b388358, + 0x07ff40003b388368, 0x07ffc8002b388378, 0x0800000063388384, 0x08006800d338839e, + 0x080140009b3a83d4, 0x0801e000133a83fc, 0x0801f8007b3a8402, 0x08028000733c8422, + 0x08040003db3c8440, 0x080800001b428538, 0x080838016b428540, 0x0809b802c344859c, + // Entry 180 - 19F + 0x080c8000634a864e, 0x080d00000b4a8668, 0x080e8001734a866c, 0x08140000eb4c86ca, + 0x081500018b4e8706, 0x08170000e350876a, 0x08180001235087a4, 0x08198000db5287ee, + 0x081a80015b528826, 0x081c0000f354887e, 0x081cf8012b5688bc, 0x081e400073588908, + 0x08200004f3588926, 0x08250000535e8a64, 0x0825800123608a7a, 0x0826c00123608ac4, + 0x0828000143628b0e, 0x08298001a3648b60, 0x082b78000b668bca, 0x08300009bb668bce, + 0x083a0000b3728e3e, 0x083b000043728e6c, 0x0840000033748e7e, 0x084040000b748e8c, + 0x0840500163748e90, 0x0841b80013768eea, 0x0841e0000b768ef0, 0x0841f800bb768ef4, + 0x0842b80243768f24, 0x084538004b7a8fb6, 0x084700009b7a8fca, 0x0847a000137a8ff2, + // Entry 1A0 - 1BF + 0x0847d8010b7a8ff8, 0x0848f800db7c903c, 0x0849f8000b7e9074, 0x084c0001c37e9078, + 0x084de000a38090ea, 0x084e900193829114, 0x085028001386917a, 0x0850600043869180, + 0x0850a8001b869192, 0x0850c800db86919a, 0x0851c0001b8691d2, 0x0851f8004b8891da, + 0x085280004b8891ee, 0x0853000203889202, 0x085600013b8c9284, 0x08575800638e92d4, + 0x08580001b38e92ee, 0x0859c800eb90935c, 0x085ac000db929398, 0x085bc000d39493d0, + 0x085cc80023969406, 0x085d48003b969410, 0x086000024b969420, 0x086400019b9a94b4, + 0x086600019b9e951c, 0x0867d00033a09584, 0x08730000fba09592, 0x0880000273a295d2, + 0x08829000f3a49670, 0x0883f8021ba696ae, 0x08868000cba89736, 0x0887800053a8976a, + // Entry 1C0 - 1DF + 0x08880001abaa9780, 0x0889b00073ac97ec, 0x088a80013bac980a, 0x088c000273ae985a, + 0x088e800083b098f8, 0x088f0800a3b0991a, 0x0890000093b29944, 0x0890980163b2996a, + 0x089400003bb499c4, 0x089440000bb499d4, 0x0894500023b499d8, 0x089478007bb499e2, + 0x0894f8005bb49a02, 0x08958001dbb69a1a, 0x0897800053b89a92, 0x0898000023b89aa8, + 0x0898280043b89ab2, 0x0898780013b89ac4, 0x08989800b3b89aca, 0x089950003bba9af8, + 0x0899900013ba9b08, 0x0899a8002bba9b0e, 0x0899e0004bba9b1a, 0x089a380013ba9b2e, + 0x089a58001bba9b34, 0x089a80000bba9b3c, 0x089ab8000bba9b40, 0x089ae8003bba9b44, + 0x089b30003bba9b54, 0x089b80002bbc9b64, 0x08a00002d3bc9b70, 0x08a2d8000bbe9c26, + // Entry 1E0 - 1FF + 0x08a2e8000bbe9c2a, 0x08a4000243be9c2e, 0x08a6800053c09cc0, 0x08ac0001b3c29cd6, + 0x08adc00133c49d44, 0x08b000022bc69d92, 0x08b2800053c89e1e, 0x08b300006bc89e34, + 0x08b40001c3c89e50, 0x08b6000053ca9ec2, 0x08b80000d3cc9ed8, 0x08b8e8007bcc9f0e, + 0x08b9800083cc9f2e, 0x08c500029bcc9f50, 0x08c7f8000bd29ff8, 0x08d60001cbd29ffc, + 0x08e000004bd4a070, 0x08e050016bd4a084, 0x08e1c00073d6a0e0, 0x08e28000ebd6a0fe, + 0x08e3800103d8a13a, 0x08e49000b3daa17c, 0x08e5480073daa1aa, 0x0900001cd3dca1c8, + 0x092000037c0ca8fe, 0x092380002c14a9de, 0x092400062414a9ea, 0x098000217c20ab74, + 0x0a2000123c52b3d4, 0x0b400011cc70b864, 0x0b520000fc8cbcd8, 0x0b530000548ebd18, + // Entry 200 - 21F + 0x0b537000148ebd2e, 0x0b568000f48ebd34, 0x0b578000348ebd72, 0x0b580002348ebd80, + 0x0b5a80005492be0e, 0x0b5ad8003c92be24, 0x0b5b1800ac94be34, 0x0b5be8009c94be60, + 0x0b7800022c96be88, 0x0b7a80017c98bf14, 0x0b7c78008c9abf74, 0x0b7f00000c9abf98, + 0x0b8000bf68013825, 0x0c4000179c9abf9c, 0x0d80000014b8c584, 0x0de000035cb8c58a, + 0x0de380006cbcc662, 0x0de400004cbcc67e, 0x0de4800054bec692, 0x0de4e00044bec6a8, + 0x0e800007b4bec6ba, 0x0e8800013cd2c8a8, 0x0e89480604d4c8f8, 0x0e90000234e0ca7a, + 0x0e980002bce4cb08, 0x0e9b000094e8cbb8, 0x0ea00002ace8cbde, 0x0ea2b0023ceecc8a, + 0x0ea4f00014f2cd1a, 0x0ea510000cf2cd20, 0x0ea5280014f2cd24, 0x0ea5480024f2cd2a, + // Entry 220 - 23F + 0x0ea5700064f2cd34, 0x0ea5d8000cf2cd4e, 0x0ea5e8003cf2cd52, 0x0ea628020cf4cd62, + 0x0ea8380024f8cde6, 0x0ea8680044f8cdf0, 0x0ea8b0003cf8ce02, 0x0ea8f000e4f8ce12, + 0x0ea9d80024face4c, 0x0eaa00002cface56, 0x0eaa30000cface62, 0x0eaa50003cface66, + 0x0eaa900aa4face76, 0x0eb540092512d120, 0x0ebe7015f528d36a, 0x0ed4d8002d60d8e8, + 0x0ed508007d60d8f4, 0x0f0000003d62d914, 0x0f0040008d62d924, 0x0f00d8003d64d948, + 0x0f0118001564d958, 0x0f0130002d64d95e, 0x0f4000062d64d96a, 0x0f4638008570daf6, + 0x0f4800025d70db18, 0x0f4a80005574dbb0, 0x0f4af0001574dbc6, 0x0f7000002574dbcc, + 0x0f702800dd74dbd6, 0x0f7108001576dc0e, 0x0f7120000d76dc14, 0x0f7138000d76dc18, + // Entry 240 - 25F + 0x0f7148005576dc1c, 0x0f71a0002576dc32, 0x0f71c8000d78dc3c, 0x0f71d8000d78dc40, + 0x0f7210000d78dc44, 0x0f7238000d78dc48, 0x0f7248000d78dc4c, 0x0f7258000d78dc50, + 0x0f7268001d78dc54, 0x0f7288001578dc5c, 0x0f72a0000d78dc62, 0x0f72b8000d78dc66, + 0x0f72c8000d78dc6a, 0x0f72d8000d78dc6e, 0x0f72e8000d78dc72, 0x0f72f8000d78dc76, + 0x0f7308001578dc7a, 0x0f7320000d78dc80, 0x0f7338002578dc84, 0x0f7360003d78dc8e, + 0x0f73a000257adc9e, 0x0f73c800257adca8, 0x0f73f0000d7adcb2, 0x0f740000557adcb6, + 0x0f7458008d7adccc, 0x0f7508001d7cdcf0, 0x0f7528002d7cdcf8, 0x0f7558008d7cdd04, + 0x0f778000157edd28, 0x0f800001657edd2e, 0x0f8180032580dd88, 0x0f8500007d84de52, + // Entry 260 - 27F + 0x0f8588007d86de72, 0x0f8608007d86de92, 0x0f8688012d88deb2, 0x0f8800006d88defe, + 0x0f888000fd8adf1a, 0x0f898001e58cdf5a, 0x0f8b8001ed90dfd4, 0x0f8f3000ed92e050, + 0x0f9080016594e08c, 0x0f9200004d98e0e6, 0x0f9280001598e0fa, 0x0f98001e9d98e100, + 0x0fb700006db8e8a8, 0x0fb780003db8e8c4, 0x0fb80003a5b8e8d4, 0x0fbc0002adbee9be, + 0x0fc0000065c4ea6a, 0x0fc08001c5c4ea84, 0x0fc2800055c8eaf6, 0x0fc3000145caeb0c, + 0x0fc48000f5cceb5e, 0x0fc880007dceeb9c, 0x0fc9000045ceebbc, 0x0fc980000dd0ebce, + 0x0fc9980065d0ebd2, 0x0fca000065d0ebec, 0x0fca80007dd0ec06, 0x0fcc000095d0ec26, + 0x0fce00000dd0ec4c, 0x10000536b8015c37, 0x15380081a8019237, 0x15ba0006f001c837, + // Entry 280 - 29F + 0x15c100b41001fe37, 0x17c00010f5d0ec50, 0x700008000df4f08e, 0x7001000305f4f092, + 0x7008000785f8f154, 0x780007fff002342d, 0x800007fff002602d, +} // Size: 5200 bytes + +var table1 = []uint16{ // 31130 elements + // Entry 0 - 3F + 0x0146, 0x014b, 0x015b, 0x0169, 0x0174, 0x017f, 0x018b, 0x0194, + 0x019e, 0x01ae, 0x01bf, 0x01c7, 0x01d0, 0x01d5, 0x01e1, 0x01ea, + 0x01f1, 0x01fb, 0x0204, 0x020d, 0x0218, 0x0222, 0x022c, 0x0235, + 0x0240, 0x024b, 0x0255, 0x025a, 0x0263, 0x0271, 0x027c, 0x028d, + 0x029a, 0x02a7, 0x02bd, 0x02d3, 0x02e9, 0x02ff, 0x0315, 0x032b, + 0x0341, 0x0357, 0x036d, 0x0383, 0x0399, 0x03af, 0x03c5, 0x03db, + 0x03f1, 0x0407, 0x041d, 0x0433, 0x0449, 0x045f, 0x0475, 0x048b, + 0x04a1, 0x04b7, 0x04cd, 0x04e3, 0x04f6, 0x0505, 0x0519, 0x052a, + // Entry 40 - 7F + 0x0532, 0x053e, 0x0552, 0x0566, 0x057a, 0x058e, 0x05a2, 0x05b6, + 0x05ca, 0x05de, 0x05f2, 0x0606, 0x061a, 0x062e, 0x0642, 0x0656, + 0x066a, 0x067e, 0x0692, 0x06a6, 0x06ba, 0x06ce, 0x06e2, 0x06f6, + 0x070a, 0x071e, 0x0732, 0x0746, 0x0758, 0x0765, 0x0778, 0x077d, + 0x037d, 0x038b, 0x03a4, 0x03ad, 0x03b7, 0x03c4, 0x03cc, 0x03d6, + 0x03e2, 0x03eb, 0x03f9, 0x0413, 0x043c, 0x0444, 0x044f, 0x045e, + 0x0464, 0x046f, 0x047e, 0x048d, 0x049e, 0x04aa, 0x04b4, 0x04c0, + 0x04ca, 0x04d1, 0x04e0, 0x04fb, 0x0525, 0x0540, 0x0558, 0x0576, + // Entry 80 - BF + 0x058c, 0x05ad, 0x05ce, 0x05f4, 0x0615, 0x063a, 0x0660, 0x0677, + 0x069a, 0x06bb, 0x06dc, 0x0702, 0x0727, 0x0748, 0x0769, 0x078f, + 0x07b4, 0x07cc, 0x07ed, 0x080e, 0x082f, 0x0855, 0x0876, 0x089b, + 0x08ae, 0x08d0, 0x08f1, 0x0912, 0x0938, 0x095d, 0x097e, 0x0998, + 0x09b2, 0x09d1, 0x09f0, 0x0a14, 0x0a33, 0x0a56, 0x0a7a, 0x0a8f, + 0x0ab0, 0x0acf, 0x0aee, 0x0b12, 0x0b35, 0x0b54, 0x0b73, 0x0b97, + 0x0bba, 0x0bd0, 0x0bef, 0x0c0e, 0x0c2d, 0x0c51, 0x0c70, 0x0c93, + 0x0ca0, 0x0cc0, 0x0cdf, 0x0cfe, 0x0d22, 0x0d45, 0x0d64, 0x0d7c, + // Entry C0 - FF + 0x0d9f, 0x0dc1, 0x0de1, 0x0e02, 0x0e21, 0x0e43, 0x0e63, 0x0e84, + 0x0ea3, 0x0ec9, 0x0eed, 0x0f12, 0x0f35, 0x0f56, 0x0f75, 0x0f96, + 0x0fb5, 0x0fd7, 0x0ff7, 0x1019, 0x1039, 0x105a, 0x1079, 0x109e, + 0x10c1, 0x10e3, 0x1103, 0x1124, 0x1143, 0x1169, 0x118d, 0x11ae, + 0x11cd, 0x11f2, 0x1215, 0x1238, 0x1259, 0x127f, 0x12a3, 0x12c5, + 0x12e5, 0x1306, 0x1325, 0x1347, 0x1367, 0x1388, 0x13a7, 0x13c9, + 0x13e9, 0x140e, 0x142a, 0x1443, 0x145a, 0x1480, 0x14a4, 0x14c7, + 0x14e8, 0x14fe, 0x151f, 0x153e, 0x1561, 0x1582, 0x15a3, 0x15c2, + // Entry 100 - 13F + 0x15e8, 0x160c, 0x162e, 0x164e, 0x166f, 0x168e, 0x16b1, 0x16d2, + 0x16f3, 0x1712, 0x173d, 0x1755, 0x176b, 0x178d, 0x17ad, 0x17ce, + 0x17ed, 0x1815, 0x183b, 0x1854, 0x186b, 0x188c, 0x18ab, 0x18ce, + 0x18ef, 0x1910, 0x192f, 0x1950, 0x196f, 0x1995, 0x19b9, 0x19dc, + 0x19fd, 0x1a1e, 0x1a3d, 0x1a60, 0x1a81, 0x1aa2, 0x1ac1, 0x1ae3, + 0x1b03, 0x1b24, 0x1b43, 0x1b65, 0x1b85, 0x1ba6, 0x1bc5, 0x1beb, + 0x1c0f, 0x1c37, 0x1c5d, 0x1c7f, 0x1c9f, 0x1cc5, 0x1ce9, 0x1d0f, + 0x1d33, 0x1d58, 0x1d79, 0x1d98, 0x1dbd, 0x1de0, 0x1e01, 0x1e20, + // Entry 140 - 17F + 0x1e39, 0x1e59, 0x1e79, 0x1e9b, 0x1ebb, 0x1ed8, 0x1ef3, 0x1f0e, + 0x1f2e, 0x1f4c, 0x1f6a, 0x1f8a, 0x1fac, 0x1fcc, 0x1feb, 0x200a, + 0x2024, 0x203f, 0x205f, 0x207d, 0x209d, 0x20b7, 0x20cc, 0x20e5, + 0x2107, 0x2127, 0x2145, 0x2162, 0x2187, 0x21a4, 0x21c9, 0x21f1, + 0x2219, 0x2239, 0x2257, 0x226e, 0x2283, 0x22a3, 0x22c1, 0x22d0, + 0x22ed, 0x2308, 0x2320, 0x233e, 0x2364, 0x2384, 0x23a2, 0x23cc, + 0x23ec, 0x240a, 0x2426, 0x2446, 0x2466, 0x2484, 0x24a6, 0x24c6, + 0x24de, 0x24ff, 0x251e, 0x253e, 0x255a, 0x2578, 0x2594, 0x25c2, + // Entry 180 - 1BF + 0x25d3, 0x25ec, 0x2606, 0x2621, 0x263d, 0x265f, 0x2694, 0x26b4, + 0x26cb, 0x26f5, 0x270a, 0x2721, 0x274b, 0x2760, 0x2781, 0x27a0, + 0x27c1, 0x27e0, 0x2801, 0x2820, 0x2841, 0x2860, 0x2890, 0x28be, + 0x28ed, 0x291a, 0x2949, 0x2976, 0x29a5, 0x29d2, 0x29ed, 0x2a1d, + 0x2a4b, 0x2a7b, 0x2aa9, 0x2acc, 0x2aed, 0x2b0f, 0x2b2f, 0x2b50, + 0x2b6f, 0x2b90, 0x2baf, 0x2bd1, 0x2bf1, 0x2c1e, 0x2c49, 0x2c6c, + 0x2c8d, 0x2cac, 0x2cc3, 0x2ced, 0x2d02, 0x2d23, 0x2d42, 0x2d5c, + 0x2d75, 0x2d96, 0x2db5, 0x2de5, 0x2e13, 0x2e35, 0x2e55, 0x2e81, + // Entry 1C0 - 1FF + 0x2eab, 0x2ed3, 0x2ef9, 0x2f23, 0x2f4b, 0x2f73, 0x2f99, 0x2fc3, + 0x2feb, 0x3013, 0x3039, 0x3063, 0x308b, 0x30b3, 0x30d9, 0x3103, + 0x312b, 0x3153, 0x3179, 0x31a3, 0x31cb, 0x31f3, 0x3219, 0x3243, + 0x326b, 0x3292, 0x32b7, 0x32de, 0x3303, 0x331c, 0x3333, 0x3354, + 0x3373, 0x339d, 0x33bb, 0x33d2, 0x33e7, 0x3407, 0x3425, 0x344a, + 0x346d, 0x3490, 0x34b1, 0x34e1, 0x350f, 0x353b, 0x3565, 0x358a, + 0x35ad, 0x35dd, 0x360b, 0x362d, 0x364d, 0x366b, 0x3689, 0x36a7, + 0x36c3, 0x36e0, 0x36fd, 0x371f, 0x3741, 0x3761, 0x3780, 0x37ab, + // Entry 200 - 23F + 0x37cf, 0x37f3, 0x3814, 0x3833, 0x3855, 0x386f, 0x388c, 0x38ae, + 0x38ce, 0x38f0, 0x3910, 0x393b, 0x395e, 0x3980, 0x39a0, 0x39c2, + 0x39e2, 0x39fd, 0x3a15, 0x3a34, 0x3a52, 0x3a6b, 0x3a89, 0x3aa7, + 0x3ac5, 0x3ae2, 0x3afa, 0x3b1c, 0x3b35, 0x3b57, 0x3b83, 0x3bac, + 0x3bd4, 0x3bf2, 0x3c0d, 0x3c29, 0x3c41, 0x3c5d, 0x3c78, 0x3c96, + 0x3cb7, 0x3cd7, 0x3cee, 0x3d0a, 0x3d30, 0x3d4e, 0x3d76, 0x3d8d, + 0x3da8, 0x3dd1, 0x3def, 0x3e12, 0x3e3a, 0x3e56, 0x3e71, 0x3e8e, + 0x3ead, 0x3ec3, 0x3ede, 0x3f07, 0x3f2c, 0x3f4e, 0x3f6c, 0x3f8e, + // Entry 240 - 27F + 0x3fb9, 0x3fd5, 0x3ffa, 0x4018, 0x402e, 0x405f, 0x4084, 0x40a4, + 0x40bf, 0x40e7, 0x40ff, 0x4119, 0x4137, 0x4152, 0x416d, 0x4188, + 0x41a4, 0x41cc, 0x41ea, 0x4200, 0x4220, 0x4239, 0x4261, 0x4283, + 0x429b, 0x42b6, 0x42d2, 0x42f2, 0x4318, 0x4334, 0x435a, 0x4375, + 0x4391, 0x43af, 0x43d4, 0x4402, 0x441f, 0x443e, 0x4465, 0x4482, + 0x44a1, 0x44c8, 0x44e7, 0x4504, 0x4521, 0x4541, 0x4561, 0x458a, + 0x45bc, 0x45d3, 0x45f4, 0x460b, 0x4622, 0x4640, 0x4668, 0x4690, + 0x46a7, 0x46be, 0x46d3, 0x46ef, 0x470b, 0x4725, 0x4743, 0x4762, + // Entry 280 - 2BF + 0x4780, 0x479c, 0x47c1, 0x47df, 0x47fe, 0x481a, 0x4838, 0x4859, + 0x485e, 0x487b, 0x4891, 0x48ad, 0x48c9, 0x48ea, 0x4904, 0x4924, + 0x4944, 0x4964, 0x4989, 0x49b0, 0x49d6, 0x49ed, 0x4a06, 0x4a1f, + 0x4a39, 0x4a3e, 0x4a47, 0x4a51, 0x4a57, 0x4a62, 0x4a75, 0x4a90, + 0x4aac, 0x4ac7, 0x4ade, 0x4af5, 0x4b0c, 0x4b37, 0x4b5a, 0x4b77, + 0x4b93, 0x4baf, 0x4bd1, 0x4bf8, 0x4c20, 0x4c37, 0x4c52, 0x4c73, + 0x4c95, 0x4cb5, 0x4cd7, 0x4cfa, 0x4d12, 0x4d35, 0x4d5f, 0x4d89, + 0x4da2, 0x4dbe, 0x4ddd, 0x4dfa, 0x4e18, 0x4e34, 0x4e49, 0x4e63, + // Entry 2C0 - 2FF + 0x4e81, 0x4e97, 0x4ead, 0x4ec8, 0x4ed7, 0x4ee7, 0x4ef9, 0x4f08, + 0x4f1b, 0x4f2e, 0x4f42, 0x4f56, 0x4f73, 0x4f82, 0x4f9f, 0x4fc3, + 0x4fe0, 0x4ff5, 0x500d, 0x5029, 0x503e, 0x505c, 0x5077, 0x5093, + 0x50af, 0x50c8, 0x50e2, 0x50fc, 0x510a, 0x5128, 0x513f, 0x5158, + 0x5171, 0x518b, 0x51ab, 0x51c9, 0x51dc, 0x51f5, 0x5209, 0x521e, + 0x522f, 0x523f, 0x525c, 0x5272, 0x5296, 0x52ab, 0x52cc, 0x52e1, + 0x52ff, 0x5314, 0x532a, 0x533c, 0x5355, 0x536c, 0x538a, 0x53a7, + 0x53c6, 0x53e4, 0x5403, 0x5422, 0x5438, 0x544f, 0x5460, 0x5478, + // Entry 300 - 33F + 0x5491, 0x54aa, 0x54c3, 0x54de, 0x54f5, 0x5514, 0x5531, 0x5547, + 0x5562, 0x5586, 0x55a0, 0x55b9, 0x55d3, 0x55f2, 0x5612, 0x562f, + 0x5648, 0x5667, 0x5685, 0x5696, 0x56a7, 0x56c5, 0x56e4, 0x5714, + 0x5733, 0x574c, 0x5764, 0x577f, 0x5795, 0x57b1, 0x57c7, 0x57de, + 0x57fb, 0x5811, 0x5830, 0x5857, 0x5875, 0x5893, 0x58b1, 0x58cf, + 0x58ed, 0x590b, 0x5929, 0x5947, 0x5965, 0x5983, 0x59a1, 0x59bf, + 0x59dd, 0x59f6, 0x5a0d, 0x5a2f, 0x5a4f, 0x5a61, 0x5a79, 0x5aa0, + 0x5ac5, 0x02c5, 0x02d8, 0x0300, 0x0326, 0x0355, 0x0368, 0x0380, + // Entry 340 - 37F + 0x0380, 0x038b, 0x03a0, 0x03c5, 0x03d5, 0x03fc, 0x041f, 0x0443, + 0x0043, 0x006a, 0x006a, 0x0091, 0x00b6, 0x00e6, 0x0100, 0x0119, + 0x0133, 0x014d, 0x0169, 0x0182, 0x019a, 0x01b4, 0x01cd, 0x01e7, + 0x0201, 0x0218, 0x022f, 0x0246, 0x0262, 0x0279, 0x0291, 0x0291, + 0x02ab, 0x02c3, 0x02df, 0x02f7, 0x030f, 0x0327, 0x0341, 0x0369, + 0x0394, 0x03b7, 0x03dc, 0x03fd, 0x041f, 0x0452, 0x046a, 0x0481, + 0x0499, 0x04b1, 0x04cb, 0x04e2, 0x04f8, 0x0510, 0x0527, 0x053f, + 0x0557, 0x056c, 0x0581, 0x0596, 0x05b0, 0x05c5, 0x05db, 0x05f9, + // Entry 380 - 3BF + 0x0611, 0x0627, 0x0641, 0x0657, 0x066d, 0x0683, 0x069b, 0x06c1, + 0x06ea, 0x070f, 0x0734, 0x0757, 0x076f, 0x0780, 0x0792, 0x07b0, + 0x07d8, 0x0804, 0x0814, 0x0823, 0x0833, 0x084d, 0x086d, 0x0880, + 0x0899, 0x08ad, 0x08c7, 0x08d9, 0x08f1, 0x0903, 0x091b, 0x0935, + 0x094d, 0x0966, 0x097d, 0x0997, 0x09af, 0x09c9, 0x09e1, 0x09fd, + 0x0a17, 0x0a32, 0x0a4b, 0x0a64, 0x0a7b, 0x0a8d, 0x0a9d, 0x0ab6, + 0x0ac6, 0x0ae0, 0x0afb, 0x0b1f, 0x0b37, 0x0b4d, 0x0b6e, 0x0b86, + 0x0b9c, 0x0bb8, 0x0be2, 0x0c0a, 0x0c3b, 0x0c60, 0x0c7a, 0x0c95, + // Entry 3C0 - 3FF + 0x0cb0, 0x0cd4, 0x0cef, 0x0d1f, 0x0d39, 0x0d53, 0x0d6e, 0x0d89, + 0x0da5, 0x0dc0, 0x0de4, 0x0e03, 0x0e1f, 0x0e38, 0x0e52, 0x0e6c, + 0x0e87, 0x0ea1, 0x0ebb, 0x0ed6, 0x0ef0, 0x0f09, 0x0f28, 0x0f42, + 0x0f5c, 0x0f76, 0x0f90, 0x0fa9, 0x0fc3, 0x0fdd, 0x0ff7, 0x1011, + 0x102a, 0x1044, 0x105e, 0x1079, 0x1094, 0x10af, 0x10cc, 0x10ed, + 0x1109, 0x112a, 0x1143, 0x115d, 0x1177, 0x118e, 0x11a6, 0x11be, + 0x11d7, 0x11ef, 0x1207, 0x1220, 0x1238, 0x124f, 0x126c, 0x1284, + 0x129c, 0x12b4, 0x12cc, 0x12e3, 0x12fb, 0x1313, 0x132b, 0x1343, + // Entry 400 - 43F + 0x135a, 0x1372, 0x138a, 0x13a3, 0x13bc, 0x13d5, 0x13f0, 0x140f, + 0x1429, 0x1448, 0x145f, 0x1477, 0x148f, 0x14b2, 0x14ca, 0x14e3, + 0x14fc, 0x151e, 0x1537, 0x1565, 0x157d, 0x1595, 0x15ae, 0x15c7, + 0x15e1, 0x15fa, 0x161c, 0x1639, 0x1653, 0x1670, 0x168b, 0x16a6, + 0x16bf, 0x16e1, 0x1701, 0x1723, 0x1743, 0x176e, 0x1797, 0x17b6, + 0x17d3, 0x17fb, 0x1821, 0x183c, 0x1855, 0x1870, 0x1889, 0x18a5, + 0x18bf, 0x18de, 0x18fb, 0x1933, 0x1969, 0x1983, 0x199b, 0x19be, + 0x19df, 0x1a07, 0x1a2d, 0x1a47, 0x1a5f, 0x1a7c, 0x1a97, 0x1aae, + // Entry 440 - 47F + 0x1ac6, 0x1ae7, 0x1b08, 0x1b29, 0x1b44, 0x1b6d, 0x1b8d, 0x1bb6, + 0x1bdd, 0x1c02, 0x1c25, 0x1c49, 0x1c6b, 0x1c92, 0x1cb7, 0x1cde, + 0x1d03, 0x1d2f, 0x1d59, 0x1d83, 0x1dab, 0x1dd4, 0x1dfb, 0x1e24, + 0x1e4b, 0x1e7a, 0x1ea7, 0x1ecd, 0x1ef1, 0x1f13, 0x1f33, 0x1f5c, + 0x1f83, 0x1fa3, 0x1fc1, 0x1fec, 0x2015, 0x2039, 0x205b, 0x2084, + 0x20ab, 0x20d4, 0x20fb, 0x211d, 0x213d, 0x216b, 0x2197, 0x21c0, + 0x21e7, 0x2207, 0x2225, 0x224f, 0x2277, 0x22a7, 0x22d5, 0x22f1, + 0x230b, 0x2330, 0x2353, 0x2387, 0x23b9, 0x23d1, 0x23f7, 0x241b, + // Entry 480 - 4BF + 0x243f, 0x2461, 0x2485, 0x24a7, 0x24cb, 0x24ed, 0x2511, 0x2533, + 0x2559, 0x257d, 0x25a1, 0x25c3, 0x25e1, 0x2605, 0x2627, 0x264f, + 0x2675, 0x2693, 0x26af, 0x26d4, 0x26f7, 0x2714, 0x272f, 0x275b, + 0x2785, 0x27af, 0x27d7, 0x2800, 0x2827, 0x284c, 0x286f, 0x2894, + 0x28b7, 0x28df, 0x2905, 0x292d, 0x2953, 0x2973, 0x2991, 0x29c0, + 0x29ed, 0x2a15, 0x2a3b, 0x2a60, 0x2a83, 0x2aab, 0x2ad1, 0x2afc, + 0x2b25, 0x2b4f, 0x2b77, 0x2ba1, 0x2bc9, 0x2bf4, 0x2c1d, 0x2c4d, + 0x2c7b, 0x2c9f, 0x2cc1, 0x2ce7, 0x2d0b, 0x2d2a, 0x2d47, 0x2d67, + // Entry 4C0 - 4FF + 0x2d85, 0x2da5, 0x2dc3, 0x2de4, 0x2e03, 0x2e23, 0x2e41, 0x2e61, + 0x2e7f, 0x2e9f, 0x2ebd, 0x2edd, 0x2efb, 0x2f1e, 0x2f3f, 0x2f63, + 0x2f85, 0x2fa0, 0x2fb9, 0x2fd4, 0x2fed, 0x3008, 0x3021, 0x303b, + 0x3053, 0x306d, 0x3085, 0x30a5, 0x30c3, 0x30ee, 0x3117, 0x3142, + 0x316b, 0x3194, 0x31bb, 0x31e6, 0x320f, 0x3238, 0x325f, 0x327c, + 0x3297, 0x32b3, 0x32cd, 0x32f6, 0x331d, 0x031d, 0x0338, 0x0353, + 0x036e, 0x0388, 0x03a3, 0x03bd, 0x03d7, 0x03f1, 0x040b, 0x0426, + 0x0441, 0x045d, 0x0478, 0x0492, 0x04ad, 0x04c7, 0x04e1, 0x04fd, + // Entry 500 - 53F + 0x0519, 0x0534, 0x054e, 0x0569, 0x0584, 0x059e, 0x05b9, 0x05d4, + 0x05f0, 0x060a, 0x0625, 0x0640, 0x065c, 0x0677, 0x0691, 0x06ad, + 0x06c9, 0x06e4, 0x06fe, 0x0719, 0x0319, 0x0340, 0x0353, 0x0369, + 0x0382, 0x0390, 0x03a6, 0x03c0, 0x03c0, 0x03d9, 0x03f2, 0x040b, + 0x0423, 0x043c, 0x0454, 0x046c, 0x0484, 0x049c, 0x04b5, 0x04ce, + 0x04e8, 0x0501, 0x0519, 0x0532, 0x054a, 0x0562, 0x057c, 0x0596, + 0x05af, 0x05c7, 0x05e0, 0x05f9, 0x0611, 0x062a, 0x0643, 0x065d, + 0x0675, 0x068e, 0x06a7, 0x06c1, 0x06da, 0x06f2, 0x070c, 0x0726, + // Entry 540 - 57F + 0x073f, 0x0757, 0x0770, 0x0790, 0x0390, 0x03a2, 0x03b1, 0x03b1, + 0x03d4, 0x03f6, 0x0408, 0x0008, 0x001d, 0x0030, 0x0048, 0x0061, + 0x007a, 0x008e, 0x00a1, 0x00b4, 0x00c8, 0x00db, 0x00ee, 0x0102, + 0x011d, 0x0134, 0x014d, 0x0169, 0x017c, 0x0196, 0x01a9, 0x01bf, + 0x01d3, 0x01ee, 0x0201, 0x0214, 0x0230, 0x024c, 0x025d, 0x026f, + 0x0281, 0x0294, 0x02ad, 0x02bf, 0x02d7, 0x02ef, 0x0308, 0x031a, + 0x032c, 0x033e, 0x0350, 0x0363, 0x0375, 0x0395, 0x03a8, 0x03c4, + 0x03d6, 0x03ee, 0x03ff, 0x0417, 0x042c, 0x0440, 0x045c, 0x0471, + // Entry 580 - 5BF + 0x0486, 0x04a4, 0x04bd, 0x00bd, 0x00cf, 0x00e0, 0x00f3, 0x0106, + 0x0116, 0x0127, 0x013a, 0x014b, 0x015c, 0x016d, 0x0184, 0x0195, + 0x01a8, 0x01bf, 0x01d0, 0x01e7, 0x01f8, 0x020c, 0x021e, 0x0234, + 0x0244, 0x025d, 0x0270, 0x0281, 0x0293, 0x02a5, 0x02b6, 0x02b6, + 0x02d8, 0x02f7, 0x0319, 0x0332, 0x034e, 0x034e, 0x0360, 0x0371, + 0x0387, 0x0398, 0x03aa, 0x03c2, 0x03d8, 0x03f0, 0x03fa, 0x0415, + 0x0437, 0x0443, 0x044f, 0x0464, 0x047c, 0x048d, 0x04b5, 0x04d0, + 0x04ee, 0x050b, 0x0520, 0x0535, 0x0566, 0x057c, 0x058e, 0x05a0, + // Entry 5C0 - 5FF + 0x05b2, 0x05c2, 0x05d4, 0x01d4, 0x01f6, 0x020a, 0x0224, 0x0237, + 0x025a, 0x027d, 0x029f, 0x02c2, 0x02e4, 0x02f6, 0x0307, 0x0320, + 0x0331, 0x0343, 0x0355, 0x0366, 0x0378, 0x0389, 0x039b, 0x03ac, + 0x03be, 0x03d0, 0x03e3, 0x03f4, 0x0405, 0x0416, 0x0427, 0x0438, + 0x044b, 0x0472, 0x049b, 0x04c2, 0x04ed, 0x051a, 0x0528, 0x0539, + 0x054a, 0x055b, 0x056c, 0x057e, 0x0590, 0x05a1, 0x05b2, 0x05cc, + 0x05dd, 0x05ec, 0x05fb, 0x060a, 0x0616, 0x0622, 0x062e, 0x063b, + 0x0647, 0x065a, 0x066c, 0x067e, 0x0693, 0x06a8, 0x06bf, 0x06ce, + // Entry 600 - 63F + 0x06ed, 0x0715, 0x0730, 0x0745, 0x075f, 0x0776, 0x078d, 0x07a3, + 0x07b9, 0x07d1, 0x07e8, 0x07ff, 0x0815, 0x082d, 0x0845, 0x085c, + 0x086f, 0x0887, 0x08a1, 0x08b9, 0x08d2, 0x08eb, 0x0909, 0x0921, + 0x0949, 0x0971, 0x0989, 0x09a6, 0x09c2, 0x09e2, 0x09fe, 0x0a10, + 0x0a24, 0x0a36, 0x0a51, 0x0a82, 0x0a93, 0x0aa6, 0x0ab9, 0x0adb, + 0x0b09, 0x0b1b, 0x0b2d, 0x0b54, 0x0b67, 0x0b7c, 0x0b8e, 0x0ba9, + 0x0bc9, 0x0bf7, 0x0c0a, 0x0c1e, 0x0c2f, 0x0c60, 0x0c86, 0x0c98, + 0x0cb6, 0x0cd1, 0x0cf1, 0x0d15, 0x0d43, 0x0d68, 0x0d79, 0x0d9f, + // Entry 640 - 67F + 0x0dce, 0x0df6, 0x0e33, 0x0e58, 0x0e7f, 0x0ea6, 0x0ecd, 0x0ee6, + 0x0f0c, 0x0f2c, 0x0f3d, 0x0f64, 0x0f77, 0x0f97, 0x0fbe, 0x0fd1, + 0x0fe8, 0x1003, 0x1023, 0x1033, 0x105a, 0x106b, 0x1086, 0x1099, + 0x10be, 0x10d0, 0x10f7, 0x1115, 0x1135, 0x115c, 0x1183, 0x11a4, + 0x11bd, 0x11d0, 0x11ec, 0x1214, 0x1231, 0x1253, 0x1273, 0x1289, + 0x12b0, 0x12ce, 0x12e9, 0x1301, 0x1311, 0x1320, 0x1330, 0x1348, + 0x136d, 0x137d, 0x1394, 0x13af, 0x13cd, 0x13ed, 0x13fc, 0x1423, + 0x143b, 0x1464, 0x1474, 0x1484, 0x14bd, 0x14f6, 0x1519, 0x1533, + // Entry 680 - 6BF + 0x1549, 0x1565, 0x157b, 0x158d, 0x15a8, 0x15c6, 0x15f0, 0x1616, + 0x163a, 0x164f, 0x1666, 0x1676, 0x1686, 0x169b, 0x16b1, 0x16c7, + 0x16e3, 0x1700, 0x172b, 0x1740, 0x1761, 0x1782, 0x17a2, 0x17c1, + 0x17e0, 0x1801, 0x1821, 0x1841, 0x1860, 0x1881, 0x18a2, 0x18c2, + 0x18e4, 0x1904, 0x1926, 0x1942, 0x1965, 0x1986, 0x199d, 0x19b9, + 0x19d3, 0x19eb, 0x1a01, 0x1a18, 0x1a30, 0x1a49, 0x1a6d, 0x1a90, + 0x1aa2, 0x1ab8, 0x1ad1, 0x1aeb, 0x02eb, 0x0303, 0x0316, 0x0335, + 0x0347, 0x035a, 0x0376, 0x038a, 0x03ab, 0x03bb, 0x03cc, 0x03de, + // Entry 6C0 - 6FF + 0x03f0, 0x0402, 0x041d, 0x042f, 0x0444, 0x0456, 0x046a, 0x047b, + 0x048c, 0x04a1, 0x04bc, 0x04cb, 0x04db, 0x04f4, 0x0507, 0x0519, + 0x052b, 0x053d, 0x054e, 0x0569, 0x0585, 0x05a2, 0x05b5, 0x05c8, + 0x05dc, 0x05ef, 0x0602, 0x0616, 0x0628, 0x063a, 0x0658, 0x0673, + 0x0685, 0x0697, 0x06b0, 0x06c2, 0x06d4, 0x06e0, 0x06f3, 0x0703, + 0x0712, 0x0730, 0x074e, 0x0765, 0x077c, 0x0795, 0x07ae, 0x07ba, + 0x07c8, 0x03c8, 0x03e3, 0x03fe, 0x0416, 0x044a, 0x047f, 0x04b7, + 0x0502, 0x0535, 0x0562, 0x0580, 0x05a5, 0x05dd, 0x061b, 0x0648, + // Entry 700 - 73F + 0x0665, 0x068c, 0x06b1, 0x06eb, 0x071b, 0x0740, 0x0778, 0x079a, + 0x07c3, 0x07fd, 0x081e, 0x083f, 0x0865, 0x0886, 0x08a5, 0x08bf, + 0x08ef, 0x0911, 0x0942, 0x0976, 0x09b1, 0x09ed, 0x0a28, 0x0a5c, + 0x0a99, 0x0ad8, 0x0b1a, 0x0b5e, 0x0ba1, 0x0bdd, 0x0c1b, 0x0c5e, + 0x0ca3, 0x0ce0, 0x0d1e, 0x0d40, 0x0d65, 0x0d76, 0x0d8d, 0x0da0, + 0x0db1, 0x0dc2, 0x0dd9, 0x0dec, 0x0dff, 0x0e12, 0x0e25, 0x0e38, + 0x0e4c, 0x0e5e, 0x0e71, 0x0e84, 0x0e9b, 0x0eae, 0x0ec4, 0x0eda, + 0x0ef0, 0x0f01, 0x0f17, 0x0f2d, 0x0f44, 0x0f56, 0x0f68, 0x0f7a, + // Entry 740 - 77F + 0x0f8e, 0x0f9f, 0x0fb3, 0x0fc7, 0x0fdb, 0x0feb, 0x0ffb, 0x100d, + 0x1021, 0x1034, 0x1047, 0x1055, 0x1065, 0x1073, 0x1083, 0x1091, + 0x10a1, 0x10af, 0x10bf, 0x10cd, 0x10dd, 0x10e9, 0x10fa, 0x00fa, + 0x0108, 0x0115, 0x0122, 0x0131, 0x013f, 0x014d, 0x015a, 0x0169, + 0x0178, 0x0186, 0x0192, 0x019f, 0x01ab, 0x01b7, 0x01c3, 0x01d0, + 0x01dc, 0x01f1, 0x01fd, 0x020a, 0x0217, 0x0224, 0x0231, 0x023f, + 0x024c, 0x0259, 0x0267, 0x0274, 0x0282, 0x028f, 0x029c, 0x02a9, + 0x02bd, 0x02ca, 0x02d8, 0x02e5, 0x02f2, 0x02ff, 0x030c, 0x0321, + // Entry 780 - 7BF + 0x0333, 0x0346, 0x0358, 0x0375, 0x0391, 0x03b0, 0x03d2, 0x03ee, + 0x0409, 0x0427, 0x0446, 0x0464, 0x047c, 0x0493, 0x04a7, 0x04bc, + 0x04c5, 0x04d9, 0x04e7, 0x00e7, 0x00fc, 0x0110, 0x0126, 0x013c, + 0x014f, 0x0163, 0x0177, 0x018a, 0x019e, 0x01b2, 0x01c7, 0x01dd, + 0x01f1, 0x0205, 0x021d, 0x0230, 0x0243, 0x025b, 0x026f, 0x0284, + 0x0299, 0x02ae, 0x02bf, 0x02d5, 0x02ed, 0x0302, 0x032a, 0x0347, + 0x0362, 0x0378, 0x0398, 0x03b4, 0x03cb, 0x03ea, 0x0405, 0x041b, + 0x043c, 0x0458, 0x0473, 0x0489, 0x04a4, 0x04bf, 0x04d5, 0x04eb, + // Entry 7C0 - 7FF + 0x0505, 0x051b, 0x011b, 0x0138, 0x0154, 0x016f, 0x0188, 0x01a4, + 0x01c4, 0x01df, 0x0202, 0x021d, 0x0238, 0x0252, 0x026c, 0x0289, + 0x02ab, 0x02c7, 0x02c7, 0x02db, 0x02ec, 0x02fd, 0x030e, 0x031f, + 0x0335, 0x0346, 0x0357, 0x0369, 0x037c, 0x038d, 0x039e, 0x03af, + 0x03c0, 0x03d1, 0x03e2, 0x03f3, 0x0405, 0x0416, 0x0427, 0x0439, + 0x044a, 0x0461, 0x0473, 0x0485, 0x049d, 0x04b6, 0x04cd, 0x00cd, + 0x00e0, 0x00e0, 0x0104, 0x0126, 0x014c, 0x0171, 0x01a6, 0x01c6, + 0x01e7, 0x020f, 0x0244, 0x0277, 0x0292, 0x02b3, 0x02cd, 0x02e3, + // Entry 800 - 83F + 0x030a, 0x0331, 0x0357, 0x0371, 0x0399, 0x03c0, 0x03e0, 0x03e0, + 0x0407, 0x042e, 0x0454, 0x047b, 0x04b5, 0x04ce, 0x04e7, 0x0501, + 0x0101, 0x011e, 0x0133, 0x0148, 0x015d, 0x017e, 0x019e, 0x01c1, + 0x01e0, 0x01fe, 0x021a, 0x0234, 0x0250, 0x0271, 0x028d, 0x02a8, + 0x02c1, 0x02d3, 0x02e5, 0x02f7, 0x030c, 0x0321, 0x0336, 0x034f, + 0x0369, 0x037f, 0x0398, 0x03b2, 0x03c8, 0x03dc, 0x03f0, 0x0404, + 0x0419, 0x042f, 0x044a, 0x0465, 0x0480, 0x049c, 0x04b7, 0x04d3, + 0x04f6, 0x0522, 0x0547, 0x055c, 0x057c, 0x05a0, 0x05bb, 0x05d3, + // Entry 840 - 87F + 0x05ea, 0x0603, 0x0616, 0x062a, 0x063d, 0x0651, 0x0664, 0x0678, + 0x0693, 0x06ae, 0x06c8, 0x06e1, 0x06f4, 0x0708, 0x0722, 0x073b, + 0x074e, 0x0762, 0x0776, 0x078b, 0x079f, 0x07b4, 0x07c9, 0x07dd, + 0x07f2, 0x0806, 0x081b, 0x0830, 0x0845, 0x085b, 0x0870, 0x0886, + 0x089b, 0x08af, 0x08c4, 0x08d8, 0x08ed, 0x0901, 0x0917, 0x092b, + 0x0940, 0x0954, 0x0969, 0x097d, 0x0991, 0x09a5, 0x09ba, 0x09ce, + 0x09e3, 0x09f9, 0x0a0d, 0x0a22, 0x0a37, 0x0a4b, 0x0a5f, 0x0a77, + 0x0a90, 0x0aa5, 0x0abd, 0x0ad5, 0x0aec, 0x0b04, 0x0b1b, 0x0b33, + // Entry 880 - 8BF + 0x0b52, 0x0b72, 0x0b90, 0x0bad, 0x0bc4, 0x0bdc, 0x0bfa, 0x0c17, + 0x0c2e, 0x0c46, 0x0c5c, 0x0c81, 0x0c99, 0x0ca6, 0x0cc3, 0x0ce2, + 0x0cf9, 0x0d10, 0x0d33, 0x0d4b, 0x0d64, 0x0d78, 0x0d8e, 0x0da4, + 0x0db8, 0x0dcf, 0x0de4, 0x0df8, 0x0e0d, 0x0e29, 0x0e45, 0x0e64, + 0x0e84, 0x0e94, 0x0eab, 0x0ec0, 0x0ed4, 0x0ee8, 0x0efe, 0x0f13, + 0x0f28, 0x0f3c, 0x0f52, 0x0f68, 0x0f7d, 0x0f99, 0x0fb9, 0x0fd3, + 0x0fe7, 0x0ffc, 0x1010, 0x1024, 0x1039, 0x1056, 0x106b, 0x1085, + 0x109a, 0x10af, 0x10cd, 0x10e3, 0x10f8, 0x1104, 0x111c, 0x1131, + // Entry 8C0 - 8FF + 0x1145, 0x0145, 0x0155, 0x0166, 0x0176, 0x0187, 0x0197, 0x01a8, + 0x01c0, 0x01d8, 0x01d8, 0x01e8, 0x01f9, 0x01f9, 0x0209, 0x021a, + 0x022b, 0x023d, 0x024e, 0x0260, 0x0272, 0x0283, 0x0295, 0x02a6, + 0x02b8, 0x02ca, 0x02dc, 0x02ef, 0x0301, 0x0314, 0x0326, 0x0337, + 0x0349, 0x035a, 0x036c, 0x037d, 0x037d, 0x038e, 0x03a0, 0x03b1, + 0x03c3, 0x03d4, 0x03e5, 0x03f6, 0x03f6, 0x0407, 0x0007, 0x0019, + 0x002b, 0x003c, 0x004d, 0x004d, 0x005f, 0x0074, 0x0089, 0x009d, + 0x00b2, 0x00c6, 0x00db, 0x00f7, 0x0114, 0x0114, 0x0128, 0x013d, + // Entry 900 - 93F + 0x013d, 0x0151, 0x0166, 0x0179, 0x0191, 0x0191, 0x01a7, 0x01a7, + 0x01b9, 0x01cb, 0x01cb, 0x01dd, 0x01f6, 0x020f, 0x022b, 0x0248, + 0x0248, 0x025a, 0x026b, 0x027c, 0x028f, 0x02a1, 0x02b3, 0x02c4, + 0x02d7, 0x02ea, 0x02fc, 0x0322, 0x0347, 0x0359, 0x036b, 0x0389, + 0x03a7, 0x03c7, 0x03e6, 0x041e, 0x0442, 0x0450, 0x0462, 0x0062, + 0x007a, 0x008d, 0x00a2, 0x00a2, 0x00b3, 0x00c5, 0x00d6, 0x00e8, + 0x00f9, 0x010b, 0x010b, 0x011d, 0x012f, 0x012f, 0x0141, 0x0153, + 0x0165, 0x0178, 0x018a, 0x019d, 0x01b0, 0x01c2, 0x01d5, 0x01e7, + // Entry 940 - 97F + 0x01fa, 0x020d, 0x0220, 0x0234, 0x0247, 0x025b, 0x026e, 0x0280, + 0x0293, 0x02a5, 0x02b8, 0x02ca, 0x02ca, 0x02dc, 0x02ef, 0x0301, + 0x0314, 0x0326, 0x0338, 0x034a, 0x034a, 0x035c, 0x036f, 0x036f, + 0x0381, 0x0394, 0x0394, 0x03a6, 0x03b8, 0x03b8, 0x03cb, 0x03cb, + 0x03e1, 0x03f6, 0x040c, 0x0421, 0x0437, 0x0037, 0x004d, 0x0063, + 0x0063, 0x0079, 0x008f, 0x00a3, 0x00a3, 0x00b6, 0x00b6, 0x00ca, + 0x00de, 0x00f0, 0x0103, 0x0103, 0x0115, 0x0115, 0x0128, 0x013a, + 0x014c, 0x0160, 0x0173, 0x0186, 0x0198, 0x01ac, 0x01c0, 0x01d3, + // Entry 980 - 9BF + 0x01e1, 0x01ef, 0x01fb, 0x0207, 0x0218, 0x022c, 0x022c, 0x0245, + 0x025b, 0x0270, 0x0270, 0x0281, 0x0293, 0x02a4, 0x02b6, 0x02c7, + 0x02d9, 0x02f2, 0x030b, 0x0322, 0x0322, 0x0333, 0x0345, 0x035c, + 0x035c, 0x036d, 0x037f, 0x0391, 0x03a4, 0x03b6, 0x03c9, 0x03dc, + 0x03ee, 0x0401, 0x0413, 0x0426, 0x0439, 0x044c, 0x0460, 0x0473, + 0x0487, 0x049a, 0x04ac, 0x04bf, 0x04d1, 0x04e4, 0x04f6, 0x00f6, + 0x0108, 0x011b, 0x012d, 0x0140, 0x0152, 0x0164, 0x0176, 0x0176, + 0x0188, 0x019b, 0x019b, 0x01ad, 0x01c0, 0x01d3, 0x01e5, 0x01f7, + // Entry 9C0 - 9FF + 0x01f7, 0x020a, 0x0220, 0x0236, 0x024b, 0x0261, 0x0276, 0x028c, + 0x02a9, 0x02c7, 0x02e3, 0x02e3, 0x02f8, 0x030e, 0x032a, 0x032a, + 0x033f, 0x0355, 0x0369, 0x0369, 0x0374, 0x0374, 0x038e, 0x03a8, + 0x03c5, 0x03e3, 0x03e3, 0x03f6, 0x0408, 0x041a, 0x042e, 0x0441, + 0x0454, 0x0466, 0x047a, 0x048e, 0x04a1, 0x04bb, 0x04ce, 0x00ce, + 0x00e1, 0x00e1, 0x00f7, 0x010a, 0x011c, 0x011c, 0x012a, 0x0139, + 0x0147, 0x0156, 0x0164, 0x0173, 0x0189, 0x019f, 0x019f, 0x01ad, + 0x01bc, 0x01bc, 0x01ca, 0x01d9, 0x01e8, 0x01f8, 0x0207, 0x0217, + // Entry A00 - A3F + 0x0227, 0x0236, 0x0246, 0x0255, 0x0265, 0x0275, 0x0285, 0x0296, + 0x02a6, 0x02b7, 0x02c7, 0x02d6, 0x02e6, 0x02f5, 0x0305, 0x0314, + 0x0314, 0x0323, 0x0333, 0x0342, 0x0352, 0x0361, 0x0370, 0x037f, + 0x037f, 0x038e, 0x039e, 0x039e, 0x03ad, 0x03bd, 0x03cd, 0x03dc, + 0x03eb, 0x03eb, 0x03fb, 0x040e, 0x0421, 0x0433, 0x0446, 0x0458, + 0x046b, 0x0485, 0x04a0, 0x00a0, 0x00b2, 0x00c5, 0x00c5, 0x00d7, + 0x00ea, 0x00fb, 0x00fb, 0x010f, 0x0123, 0x0123, 0x0133, 0x0143, + 0x0143, 0x0153, 0x016a, 0x0181, 0x019b, 0x01b6, 0x01b6, 0x01c6, + // Entry A40 - A7F + 0x01d5, 0x01e4, 0x01f5, 0x0205, 0x0215, 0x0224, 0x0235, 0x0246, + 0x0256, 0x0262, 0x0271, 0x028b, 0x02a2, 0x02bf, 0x02db, 0x02f4, + 0x0313, 0x0313, 0x0326, 0x0338, 0x0338, 0x0346, 0x0355, 0x0363, + 0x0372, 0x0380, 0x038f, 0x038f, 0x039d, 0x03ac, 0x03bb, 0x03bb, + 0x03c9, 0x03d8, 0x03e7, 0x03f6, 0x03f6, 0x0406, 0x0415, 0x0015, + 0x0024, 0x0024, 0x0034, 0x0044, 0x0044, 0x0054, 0x0063, 0x0063, + 0x0072, 0x0083, 0x0092, 0x0092, 0x00a1, 0x00b0, 0x00bf, 0x00cf, + 0x00de, 0x00ee, 0x00ff, 0x010e, 0x011e, 0x012e, 0x013d, 0x014c, + // Entry A80 - ABF + 0x014c, 0x015f, 0x0171, 0x0184, 0x0196, 0x01a9, 0x01a9, 0x01bb, + 0x01ce, 0x01e1, 0x01e1, 0x01f3, 0x0206, 0x0219, 0x022a, 0x022a, + 0x0232, 0x0232, 0x0246, 0x0246, 0x0256, 0x0265, 0x0274, 0x0285, + 0x0295, 0x02a5, 0x02b4, 0x02c5, 0x02d6, 0x02e6, 0x02f6, 0x030e, + 0x0327, 0x0335, 0x0345, 0x0354, 0x0364, 0x0375, 0x0388, 0x0398, + 0x03a9, 0x03a9, 0x03d0, 0x03e7, 0x03fb, 0x040e, 0x000e, 0x001d, + 0x002d, 0x003c, 0x004c, 0x005b, 0x006b, 0x0082, 0x0099, 0x0099, + 0x00a8, 0x00b8, 0x00c8, 0x00c8, 0x00d7, 0x00e7, 0x00f7, 0x0107, + // Entry AC0 - AFF + 0x0118, 0x0128, 0x0139, 0x014a, 0x015a, 0x016b, 0x017b, 0x018c, + 0x019d, 0x01ae, 0x01c0, 0x01d1, 0x01e3, 0x01f4, 0x0204, 0x0215, + 0x0225, 0x0236, 0x0246, 0x0246, 0x0256, 0x0267, 0x0277, 0x0288, + 0x0298, 0x02a8, 0x02b8, 0x02c9, 0x02d9, 0x02ea, 0x02fc, 0x030c, + 0x031d, 0x032e, 0x033e, 0x034e, 0x034e, 0x0362, 0x0376, 0x0389, + 0x039d, 0x03b0, 0x03c4, 0x03df, 0x03fb, 0x03fb, 0x040e, 0x0422, + 0x0436, 0x0036, 0x0049, 0x005d, 0x0071, 0x0083, 0x0083, 0x0095, + 0x00aa, 0x00aa, 0x00bb, 0x00cc, 0x00de, 0x00de, 0x00f6, 0x010e, + // Entry B00 - B3F + 0x0129, 0x0145, 0x0145, 0x0156, 0x0166, 0x0176, 0x0188, 0x0199, + 0x01aa, 0x01ba, 0x01cc, 0x01de, 0x01ef, 0x01ef, 0x0220, 0x0250, + 0x0280, 0x02b2, 0x02e3, 0x0314, 0x0347, 0x0358, 0x0378, 0x0390, + 0x03a5, 0x03b9, 0x03b9, 0x03c9, 0x03da, 0x03ea, 0x03fb, 0x040b, + 0x041c, 0x0434, 0x044c, 0x004c, 0x005c, 0x006d, 0x007e, 0x007e, + 0x008e, 0x009f, 0x00b0, 0x00c1, 0x00d3, 0x00e4, 0x00f6, 0x0108, + 0x0119, 0x012b, 0x013c, 0x014e, 0x0160, 0x0172, 0x0185, 0x0197, + 0x01aa, 0x01bc, 0x01cd, 0x01df, 0x01f0, 0x0202, 0x0213, 0x0213, + // Entry B40 - B7F + 0x0224, 0x0236, 0x0247, 0x0259, 0x026a, 0x027b, 0x028c, 0x029e, + 0x02af, 0x02c1, 0x02c1, 0x02d2, 0x02e4, 0x02f6, 0x0307, 0x0318, + 0x0318, 0x032a, 0x033f, 0x0354, 0x0368, 0x037d, 0x0391, 0x03a6, + 0x03c2, 0x03df, 0x03df, 0x03f3, 0x0408, 0x041d, 0x001d, 0x0031, + 0x0046, 0x005b, 0x006e, 0x006e, 0x0081, 0x0097, 0x0097, 0x00a8, + 0x00a8, 0x00c1, 0x00da, 0x00f6, 0x0113, 0x0113, 0x0125, 0x0136, + 0x0147, 0x015a, 0x016c, 0x017e, 0x018f, 0x01a2, 0x01b5, 0x01c7, + 0x01c7, 0x01df, 0x01f7, 0x01f7, 0x0211, 0x0228, 0x023e, 0x023e, + // Entry B80 - BBF + 0x0250, 0x0263, 0x0275, 0x0288, 0x029a, 0x02ad, 0x02c7, 0x02e1, + 0x02e1, 0x02f3, 0x0306, 0x0319, 0x0319, 0x032b, 0x033e, 0x0351, + 0x0364, 0x0378, 0x038b, 0x039f, 0x03b3, 0x03c6, 0x03da, 0x03ed, + 0x0401, 0x0415, 0x0429, 0x043e, 0x0452, 0x0467, 0x047b, 0x048e, + 0x04a2, 0x04b5, 0x04c9, 0x04dc, 0x04f1, 0x0504, 0x0518, 0x052b, + 0x053f, 0x0552, 0x0565, 0x0578, 0x058c, 0x059f, 0x05b3, 0x05c8, + 0x05db, 0x05ef, 0x0603, 0x0616, 0x0629, 0x063e, 0x023e, 0x0255, + 0x026c, 0x0282, 0x0299, 0x02af, 0x02c6, 0x02e4, 0x0303, 0x0303, + // Entry BC0 - BFF + 0x0319, 0x0330, 0x0347, 0x0347, 0x035d, 0x0374, 0x038b, 0x03a0, + 0x03b9, 0x03cc, 0x03cc, 0x03e5, 0x03fe, 0x0419, 0x0431, 0x0460, + 0x047f, 0x04a2, 0x04c2, 0x04de, 0x0501, 0x051d, 0x0538, 0x0553, + 0x056e, 0x058c, 0x05ab, 0x01ab, 0x01bf, 0x01d2, 0x01e5, 0x01fa, + 0x020e, 0x0222, 0x0235, 0x024a, 0x025f, 0x0273, 0x0287, 0x02a3, + 0x02c0, 0x02de, 0x02f9, 0x031a, 0x033a, 0x0357, 0x037a, 0x038d, + 0x03a7, 0x03c0, 0x03da, 0x03f3, 0x040d, 0x0426, 0x0026, 0x003d, + 0x0053, 0x0053, 0x0068, 0x007e, 0x0094, 0x00ab, 0x00c0, 0x00d6, + // Entry C00 - C3F + 0x00eb, 0x0101, 0x0118, 0x0130, 0x0147, 0x015f, 0x0174, 0x018a, + 0x01a0, 0x01b5, 0x01cb, 0x01e1, 0x01e1, 0x0202, 0x0224, 0x0245, + 0x0267, 0x0288, 0x02a6, 0x02c7, 0x02e9, 0x030a, 0x032c, 0x034d, + 0x0378, 0x0396, 0x03b8, 0x03db, 0x03fd, 0x0420, 0x0440, 0x045f, + 0x0480, 0x04a2, 0x04c3, 0x04e5, 0x0503, 0x0103, 0x0121, 0x0142, + 0x0164, 0x0185, 0x01a7, 0x01bd, 0x01d8, 0x01ee, 0x0204, 0x0204, + 0x0222, 0x0222, 0x0238, 0x0256, 0x0276, 0x0294, 0x02aa, 0x02ca, + 0x02e0, 0x02e0, 0x02f6, 0x02f6, 0x0313, 0x0336, 0x0358, 0x0379, + // Entry C40 - C7F + 0x0399, 0x03bb, 0x03bb, 0x03dc, 0x03dc, 0x03fb, 0x0415, 0x0434, + 0x0451, 0x047a, 0x04a8, 0x04d2, 0x04f0, 0x00f0, 0x0107, 0x011d, + 0x0133, 0x014b, 0x0162, 0x0179, 0x018f, 0x01a7, 0x01bf, 0x01d6, + 0x01d6, 0x01fa, 0x021d, 0x023b, 0x023b, 0x0250, 0x0267, 0x027f, + 0x0297, 0x02ae, 0x02c8, 0x02de, 0x02f5, 0x030d, 0x0325, 0x0339, + 0x0350, 0x0366, 0x037d, 0x0394, 0x03ab, 0x03c8, 0x03e2, 0x03f7, + 0x040c, 0x0421, 0x0439, 0x0452, 0x046a, 0x047e, 0x0496, 0x04ab, + 0x04c3, 0x04d7, 0x04ee, 0x0503, 0x051d, 0x0531, 0x0546, 0x055b, + // Entry C80 - CBF + 0x056c, 0x0582, 0x0593, 0x05a9, 0x05bf, 0x05d5, 0x05ea, 0x05ff, + 0x0616, 0x062a, 0x0642, 0x065a, 0x066f, 0x068a, 0x06a0, 0x06b6, + 0x06cb, 0x06e1, 0x06f7, 0x070e, 0x0723, 0x0739, 0x074f, 0x034f, + 0x0368, 0x037d, 0x0393, 0x03a8, 0x03c6, 0x03e5, 0x03ff, 0x0416, + 0x042e, 0x0443, 0x0459, 0x046f, 0x048a, 0x04a4, 0x04bb, 0x04d2, + 0x04e8, 0x04f7, 0x0505, 0x0513, 0x0523, 0x0532, 0x0541, 0x054f, + 0x055f, 0x056f, 0x057e, 0x0597, 0x05ac, 0x01ac, 0x01b9, 0x01cc, + 0x01cc, 0x01de, 0x01de, 0x01ec, 0x01f9, 0x01f9, 0x020a, 0x020a, + // Entry CC0 - CFF + 0x0218, 0x0218, 0x0225, 0x0232, 0x0245, 0x0257, 0x0257, 0x0264, + 0x0271, 0x027e, 0x0291, 0x02a2, 0x02b4, 0x02c6, 0x02c6, 0x02d3, + 0x02e0, 0x02f2, 0x02f2, 0x0304, 0x0304, 0x0311, 0x0311, 0x0323, + 0x0335, 0x0335, 0x0341, 0x0352, 0x035e, 0x036e, 0x0384, 0x0395, + 0x03a6, 0x03b6, 0x03c7, 0x03d7, 0x03e8, 0x03f8, 0x0409, 0x0009, + 0x001f, 0x0034, 0x004a, 0x004a, 0x005a, 0x006b, 0x007b, 0x008c, + 0x009d, 0x009d, 0x00a6, 0x00a6, 0x00b5, 0x00c5, 0x00d4, 0x00e7, + 0x00fc, 0x0109, 0x0109, 0x0117, 0x0124, 0x0131, 0x0140, 0x014e, + // Entry D00 - D3F + 0x015c, 0x0169, 0x0178, 0x0187, 0x0195, 0x0195, 0x019e, 0x01a7, + 0x01b9, 0x01cc, 0x01cc, 0x01df, 0x0204, 0x022e, 0x0259, 0x027d, + 0x02a1, 0x02c8, 0x02ea, 0x0301, 0x031b, 0x0339, 0x0359, 0x037b, + 0x038c, 0x03a2, 0x03b9, 0x03d5, 0x03f6, 0x0411, 0x043b, 0x0452, + 0x0472, 0x0492, 0x04c1, 0x04e4, 0x050a, 0x0525, 0x0541, 0x055c, + 0x0576, 0x0591, 0x05b0, 0x05c2, 0x05d3, 0x05e4, 0x05f7, 0x0609, + 0x061b, 0x062c, 0x063f, 0x0652, 0x0664, 0x067a, 0x0690, 0x06a8, + 0x06bf, 0x06d6, 0x06ec, 0x0704, 0x071c, 0x0733, 0x074a, 0x0762, + // Entry D40 - D7F + 0x0781, 0x07ac, 0x07ce, 0x07e2, 0x07f8, 0x0813, 0x082e, 0x0849, + 0x0864, 0x087a, 0x0890, 0x08a1, 0x08b3, 0x08c4, 0x08d6, 0x08e8, + 0x08f9, 0x090b, 0x091c, 0x011c, 0x012e, 0x0140, 0x0153, 0x0165, + 0x0178, 0x018a, 0x019b, 0x01ad, 0x01be, 0x01d0, 0x01e1, 0x01f2, + 0x0204, 0x0215, 0x0227, 0x0238, 0x024a, 0x025d, 0x026f, 0x0282, + 0x0293, 0x02a5, 0x02b6, 0x02c7, 0x02d8, 0x02e9, 0x02fa, 0x030c, + 0x031e, 0x032f, 0x0340, 0x0350, 0x0363, 0x037f, 0x0391, 0x03a3, + 0x03a3, 0x03b8, 0x03cc, 0x03e1, 0x03f5, 0x040a, 0x0426, 0x0443, + // Entry D80 - DBF + 0x045f, 0x047c, 0x0490, 0x04a5, 0x04b9, 0x04ce, 0x04e9, 0x04ff, + 0x051c, 0x053a, 0x0555, 0x056a, 0x057e, 0x0591, 0x05a7, 0x05be, + 0x05d6, 0x05eb, 0x0607, 0x0623, 0x0641, 0x0663, 0x0682, 0x06aa, + 0x06c5, 0x06e1, 0x06fc, 0x0718, 0x0734, 0x074f, 0x076b, 0x0786, + 0x0386, 0x03a2, 0x03be, 0x03db, 0x03f7, 0x0414, 0x0430, 0x044b, + 0x0467, 0x0482, 0x049e, 0x04b9, 0x04d4, 0x04f0, 0x050b, 0x0527, + 0x0542, 0x055e, 0x057b, 0x0597, 0x05b4, 0x05cf, 0x05eb, 0x0606, + 0x0621, 0x063c, 0x0657, 0x0672, 0x068e, 0x06aa, 0x06c5, 0x06e0, + // Entry DC0 - DFF + 0x06fa, 0x0717, 0x073d, 0x0763, 0x0789, 0x0389, 0x039a, 0x03b8, + 0x03dc, 0x0400, 0x0423, 0x0447, 0x045d, 0x0473, 0x048c, 0x04ac, + 0x04c2, 0x04d7, 0x04f8, 0x0519, 0x053a, 0x013a, 0x0159, 0x0173, + 0x0197, 0x01ba, 0x01d1, 0x0201, 0x0231, 0x0249, 0x0260, 0x0282, + 0x02a3, 0x02c3, 0x02e4, 0x02e4, 0x02f5, 0x0307, 0x0318, 0x032a, + 0x033c, 0x034d, 0x035f, 0x0370, 0x0382, 0x0394, 0x03a7, 0x03b9, + 0x03cc, 0x03de, 0x03f1, 0x0403, 0x0414, 0x0426, 0x0437, 0x0449, + 0x045a, 0x046b, 0x047d, 0x048e, 0x04a0, 0x04b1, 0x04c2, 0x04d3, + // Entry E00 - E3F + 0x04e4, 0x04f5, 0x0506, 0x0517, 0x0529, 0x0539, 0x054e, 0x055e, + 0x056f, 0x057f, 0x0590, 0x05a0, 0x05b4, 0x05c4, 0x05d5, 0x05ef, + 0x0604, 0x0618, 0x062d, 0x0641, 0x0656, 0x066a, 0x067f, 0x0698, + 0x06b0, 0x06ca, 0x06df, 0x06f5, 0x0709, 0x071c, 0x072d, 0x074d, + 0x076d, 0x078d, 0x07ad, 0x07c4, 0x07d6, 0x07e7, 0x07f8, 0x080b, + 0x081d, 0x082f, 0x0840, 0x0853, 0x0866, 0x0878, 0x0893, 0x08a7, + 0x08be, 0x08d6, 0x08f3, 0x090a, 0x091c, 0x092e, 0x0946, 0x095f, + 0x0977, 0x0990, 0x09ac, 0x09c9, 0x09e5, 0x0a02, 0x0a18, 0x0a2e, + // Entry E40 - E7F + 0x0a44, 0x0a5a, 0x0a7e, 0x0aa2, 0x0ac6, 0x0ae3, 0x0b03, 0x0b25, + 0x0b48, 0x0b6c, 0x0b90, 0x0bb7, 0x0bde, 0x0c03, 0x0c28, 0x0c4d, + 0x0c72, 0x0c97, 0x0cbb, 0x0cdf, 0x0d04, 0x0d23, 0x0d3e, 0x0d58, + 0x0d73, 0x0d89, 0x0da0, 0x0db6, 0x0dcc, 0x0de2, 0x0df9, 0x0e0f, + 0x0e25, 0x0e3c, 0x0e52, 0x0e68, 0x0e7f, 0x0e95, 0x0eba, 0x0ed4, + 0x0eed, 0x0f0c, 0x0f2b, 0x0f43, 0x0f5b, 0x0f73, 0x0f8b, 0x0fab, + 0x0fcb, 0x0ff2, 0x1011, 0x1032, 0x1049, 0x105f, 0x1075, 0x108d, + 0x10a4, 0x10bb, 0x10d1, 0x10e9, 0x1101, 0x1118, 0x1132, 0x114c, + // Entry E80 - EBF + 0x1166, 0x1181, 0x1198, 0x11b7, 0x11d1, 0x11ec, 0x1207, 0x1222, + 0x123c, 0x1257, 0x1272, 0x128d, 0x12a7, 0x12c2, 0x12dd, 0x12f8, + 0x1313, 0x132d, 0x1348, 0x1364, 0x137f, 0x139a, 0x13b5, 0x13cf, + 0x13eb, 0x1407, 0x1423, 0x143e, 0x145a, 0x1476, 0x1491, 0x14ac, + 0x14c7, 0x14e3, 0x14fe, 0x151a, 0x1535, 0x154f, 0x156a, 0x1584, + 0x159f, 0x15ba, 0x01ba, 0x01d4, 0x01d4, 0x01ef, 0x01ef, 0x0201, + 0x0214, 0x0227, 0x023a, 0x024c, 0x025f, 0x0272, 0x0285, 0x0297, + 0x02aa, 0x02bd, 0x02d0, 0x02e3, 0x02f5, 0x0308, 0x031c, 0x032f, + // Entry EC0 - EFF + 0x0342, 0x0355, 0x0367, 0x037b, 0x038f, 0x03a3, 0x03b6, 0x03ca, + 0x03de, 0x03f1, 0x0404, 0x0417, 0x042b, 0x043e, 0x0452, 0x0465, + 0x0477, 0x048a, 0x049c, 0x04af, 0x04c2, 0x04d4, 0x04e6, 0x04fb, + 0x0515, 0x0528, 0x0544, 0x0560, 0x0573, 0x058c, 0x05a7, 0x05bd, + 0x05d8, 0x05ed, 0x0603, 0x061e, 0x0633, 0x0648, 0x065d, 0x0677, + 0x068b, 0x06a4, 0x06b9, 0x06ce, 0x06e8, 0x06ff, 0x0716, 0x072d, + 0x0744, 0x0759, 0x0775, 0x078f, 0x07ab, 0x07c6, 0x07e3, 0x07fe, + 0x0818, 0x0833, 0x0850, 0x086b, 0x0888, 0x08a4, 0x08bf, 0x08db, + // Entry F00 - F3F + 0x08f5, 0x0916, 0x0937, 0x0957, 0x0976, 0x0996, 0x09b1, 0x09ce, + 0x09eb, 0x0a08, 0x0a25, 0x0a47, 0x0a62, 0x0a7c, 0x0a97, 0x0ab1, + 0x0acb, 0x0ae5, 0x0b06, 0x0b24, 0x0b3e, 0x0b58, 0x0b74, 0x0b90, + 0x0bac, 0x0bc8, 0x0be2, 0x0bfe, 0x0c1f, 0x0c3e, 0x0c62, 0x0c79, + 0x0c95, 0x0cb1, 0x0ccc, 0x0ce7, 0x0d01, 0x0d1e, 0x0d38, 0x0d53, + 0x0d70, 0x0d8d, 0x0daa, 0x0dc2, 0x0ddd, 0x0dfa, 0x0e1c, 0x0e3c, + 0x0e61, 0x0e80, 0x0e9d, 0x0ebc, 0x0ede, 0x0efb, 0x0f1a, 0x0f34, + 0x0f4f, 0x0f6c, 0x0f86, 0x0fa1, 0x0fbc, 0x0fd8, 0x0fee, 0x1005, + // Entry F40 - F7F + 0x1017, 0x102a, 0x103d, 0x1051, 0x1064, 0x1076, 0x108a, 0x109d, + 0x10af, 0x10c2, 0x10d6, 0x10e9, 0x10fc, 0x110e, 0x1122, 0x1135, + 0x1148, 0x115b, 0x116e, 0x1181, 0x1193, 0x11a7, 0x11bb, 0x11d0, + 0x11e6, 0x11fb, 0x1210, 0x1226, 0x123c, 0x1252, 0x1267, 0x127b, + 0x1290, 0x12a4, 0x12b8, 0x12ce, 0x12e5, 0x12fc, 0x1311, 0x1326, + 0x133a, 0x134f, 0x1367, 0x137c, 0x1390, 0x13a5, 0x13bb, 0x13d0, + 0x13e7, 0x13fd, 0x1412, 0x1427, 0x143c, 0x1452, 0x1467, 0x147b, + 0x1490, 0x14a4, 0x14b8, 0x14cd, 0x14e5, 0x14fb, 0x1514, 0x152c, + // Entry F80 - FBF + 0x1544, 0x155f, 0x1574, 0x1589, 0x15a0, 0x15b5, 0x15cb, 0x15e2, + 0x15fe, 0x161a, 0x1630, 0x164c, 0x1668, 0x167f, 0x1695, 0x16b2, + 0x16ce, 0x16ea, 0x1705, 0x1723, 0x1741, 0x175d, 0x1773, 0x1789, + 0x17a4, 0x17b9, 0x17d3, 0x17e9, 0x17ff, 0x1817, 0x182f, 0x1847, + 0x185f, 0x1875, 0x1892, 0x18b5, 0x18d2, 0x18ef, 0x190a, 0x1928, + 0x1946, 0x1964, 0x1981, 0x19a3, 0x19bf, 0x19dc, 0x19ff, 0x1a1a, + 0x1a3d, 0x1a5e, 0x1a7f, 0x1aa1, 0x1ac5, 0x1ae5, 0x1b03, 0x1b21, + 0x1b43, 0x1b60, 0x1b7c, 0x1b98, 0x1bb3, 0x1bd3, 0x1bf1, 0x1c0f, + // Entry FC0 - FFF + 0x1c2b, 0x1c49, 0x1c65, 0x1c83, 0x1c9f, 0x1cbd, 0x1cd9, 0x1cf5, + 0x1d10, 0x1d2b, 0x1d43, 0x1d60, 0x1d82, 0x1d9d, 0x1dbb, 0x1dd4, + 0x1df2, 0x1e13, 0x1e31, 0x1e51, 0x1e6d, 0x1e89, 0x1ea5, 0x1ec1, + 0x1edd, 0x1efa, 0x1f17, 0x1f36, 0x1f55, 0x1f72, 0x1f8d, 0x1fa1, + 0x1fb5, 0x1fc9, 0x1fde, 0x1ff3, 0x2007, 0x201b, 0x2030, 0x2044, + 0x2058, 0x206c, 0x2081, 0x2096, 0x20aa, 0x20be, 0x20d3, 0x20e8, + 0x20fd, 0x2112, 0x2128, 0x213e, 0x2153, 0x2168, 0x217e, 0x2192, + 0x21a6, 0x21ba, 0x21cf, 0x21e4, 0x21f8, 0x220c, 0x2221, 0x2236, + // Entry 1000 - 103F + 0x224b, 0x2260, 0x2276, 0x228c, 0x22a1, 0x22b6, 0x22cc, 0x22e0, + 0x22f4, 0x2308, 0x231d, 0x2332, 0x2346, 0x235a, 0x236f, 0x2383, + 0x2397, 0x23ab, 0x23c0, 0x23d5, 0x23e9, 0x23fd, 0x2412, 0x2427, + 0x243c, 0x2451, 0x2467, 0x247d, 0x2492, 0x24a7, 0x24bd, 0x24d1, + 0x24e5, 0x24f9, 0x250e, 0x2523, 0x2537, 0x254b, 0x2560, 0x2575, + 0x0175, 0x018a, 0x01a0, 0x01b6, 0x01cb, 0x01cb, 0x01e0, 0x01f5, + 0x020a, 0x0220, 0x0236, 0x024b, 0x0260, 0x0260, 0x0276, 0x0276, + 0x028c, 0x02a3, 0x02ba, 0x02d0, 0x02d0, 0x02e4, 0x02f8, 0x030c, + // Entry 1040 - 107F + 0x0321, 0x0336, 0x034a, 0x035e, 0x0373, 0x0387, 0x039b, 0x03af, + 0x03c4, 0x03d9, 0x03ed, 0x0401, 0x0416, 0x042a, 0x043e, 0x0452, + 0x0467, 0x047c, 0x0490, 0x04a4, 0x04b9, 0x04cd, 0x04e1, 0x04f5, + 0x050a, 0x051f, 0x0533, 0x0547, 0x055c, 0x0570, 0x0584, 0x0598, + 0x05ad, 0x05c2, 0x05d6, 0x05ea, 0x05ff, 0x0614, 0x0214, 0x0229, + 0x023f, 0x0255, 0x026a, 0x026a, 0x027e, 0x0292, 0x02a6, 0x02bb, + 0x02d0, 0x02e4, 0x02f8, 0x030d, 0x0322, 0x0337, 0x034c, 0x0362, + 0x0378, 0x038d, 0x03a2, 0x03b8, 0x03d3, 0x03ee, 0x0409, 0x0425, + // Entry 1080 - 10BF + 0x0441, 0x045c, 0x0477, 0x0493, 0x04a7, 0x04bb, 0x04cf, 0x04e4, + 0x04f9, 0x050d, 0x0521, 0x0536, 0x054b, 0x014b, 0x0160, 0x0176, + 0x018c, 0x01a1, 0x01a1, 0x01b6, 0x01cb, 0x01e0, 0x01f6, 0x020c, + 0x0221, 0x0236, 0x0236, 0x024c, 0x024c, 0x0262, 0x0279, 0x0290, + 0x02a6, 0x02a6, 0x02ba, 0x02ce, 0x02e2, 0x02f7, 0x030c, 0x0320, + 0x0334, 0x0349, 0x0367, 0x0385, 0x03a3, 0x03c2, 0x03e1, 0x03ff, + 0x041d, 0x001d, 0x0031, 0x0045, 0x0059, 0x006e, 0x0083, 0x0097, + 0x00ab, 0x00c0, 0x00d5, 0x00ea, 0x00ff, 0x0115, 0x012b, 0x0140, + // Entry 10C0 - 10FF + 0x0155, 0x016b, 0x017f, 0x0193, 0x01a7, 0x01bc, 0x01d1, 0x01e5, + 0x01f9, 0x020e, 0x0222, 0x0236, 0x024a, 0x025f, 0x0274, 0x0288, + 0x029c, 0x02b1, 0x02c6, 0x02db, 0x02f0, 0x0306, 0x031c, 0x0331, + 0x0346, 0x035c, 0x0370, 0x0384, 0x0398, 0x03ad, 0x03c2, 0x03d6, + 0x03ea, 0x03ff, 0x0413, 0x0427, 0x043b, 0x0450, 0x0465, 0x0479, + 0x048d, 0x04a2, 0x04b7, 0x00b7, 0x00cc, 0x00e2, 0x00f8, 0x010d, + 0x010d, 0x0122, 0x0137, 0x014c, 0x0162, 0x0178, 0x018d, 0x01a2, + 0x01b9, 0x01ce, 0x01e3, 0x01f8, 0x020e, 0x0224, 0x0239, 0x024e, + // Entry 1100 - 113F + 0x0264, 0x0279, 0x028e, 0x02a3, 0x02b9, 0x02cf, 0x02e4, 0x02f9, + 0x030f, 0x0324, 0x0339, 0x034e, 0x0364, 0x037a, 0x038f, 0x03a4, + 0x03ba, 0x03cf, 0x03e4, 0x03f9, 0x040f, 0x0425, 0x043a, 0x044f, + 0x0465, 0x047a, 0x048f, 0x04a4, 0x04ba, 0x04d0, 0x04e5, 0x04fa, + 0x0510, 0x0524, 0x0538, 0x054c, 0x0561, 0x0576, 0x058a, 0x059e, + 0x05b3, 0x05c7, 0x05db, 0x05ef, 0x0604, 0x0619, 0x062d, 0x0641, + 0x0656, 0x066b, 0x0680, 0x0695, 0x0295, 0x02c8, 0x02ec, 0x030e, + 0x0323, 0x0335, 0x0347, 0x0355, 0x0367, 0x0375, 0x038b, 0x03a1, + // Entry 1140 - 117F + 0x03bd, 0x03cf, 0x03e1, 0x03f5, 0x0408, 0x041b, 0x042d, 0x0441, + 0x0455, 0x0468, 0x047b, 0x0491, 0x04a7, 0x04bc, 0x04d1, 0x04e6, + 0x04fd, 0x0513, 0x0529, 0x0540, 0x055c, 0x015c, 0x017b, 0x0190, + 0x01a6, 0x01bb, 0x01da, 0x01ef, 0x0205, 0x021a, 0x0239, 0x024e, + 0x0264, 0x0279, 0x0298, 0x02ad, 0x02c3, 0x02d8, 0x02f1, 0x030a, + 0x0324, 0x0344, 0x035d, 0x0376, 0x0390, 0x03a9, 0x03c8, 0x03e0, + 0x03e0, 0x03f1, 0x0402, 0x0413, 0x0424, 0x0435, 0x0446, 0x0458, + 0x046a, 0x047c, 0x048e, 0x04a0, 0x04b2, 0x04c4, 0x04d6, 0x04e8, + // Entry 1180 - 11BF + 0x04fa, 0x050c, 0x051e, 0x0530, 0x0542, 0x0554, 0x0566, 0x0578, + 0x058a, 0x059c, 0x05ae, 0x05c0, 0x05d2, 0x05e4, 0x05f6, 0x0608, + 0x061b, 0x062e, 0x0640, 0x0652, 0x0664, 0x0676, 0x0688, 0x069b, + 0x06ae, 0x06c1, 0x06d4, 0x06e7, 0x06fa, 0x070c, 0x071d, 0x072f, + 0x0741, 0x0753, 0x0765, 0x0777, 0x0789, 0x079b, 0x07ad, 0x07bf, + 0x07d1, 0x07e3, 0x07f5, 0x0807, 0x0819, 0x082c, 0x083f, 0x0852, + 0x0865, 0x0878, 0x088b, 0x089e, 0x08b1, 0x08c4, 0x08d7, 0x08ea, + 0x08fd, 0x0910, 0x0922, 0x0934, 0x0946, 0x0958, 0x096a, 0x097c, + // Entry 11C0 - 11FF + 0x098e, 0x09a0, 0x09b2, 0x09c4, 0x09d6, 0x09e8, 0x09fa, 0x01fa, + 0x0212, 0x022a, 0x0242, 0x025a, 0x0272, 0x028a, 0x028a, 0x02a3, + 0x02b7, 0x02cd, 0x02e1, 0x02f6, 0x030a, 0x031f, 0x033b, 0x0358, + 0x0374, 0x0388, 0x039d, 0x03b2, 0x03d1, 0x03e6, 0x0405, 0x041b, + 0x043b, 0x0450, 0x046f, 0x0485, 0x04a5, 0x04c3, 0x04d8, 0x04f7, + 0x050d, 0x052d, 0x054b, 0x0560, 0x057b, 0x059a, 0x05b8, 0x05d6, + 0x05ff, 0x0625, 0x064d, 0x066a, 0x068f, 0x06c5, 0x06e8, 0x0718, + 0x0735, 0x0757, 0x076c, 0x0781, 0x0796, 0x07ab, 0x07c0, 0x07d7, + // Entry 1200 - 123F + 0x07ec, 0x0802, 0x0817, 0x082d, 0x084a, 0x0868, 0x0885, 0x089a, + 0x08b0, 0x08c6, 0x08e6, 0x08fc, 0x091c, 0x0933, 0x0954, 0x096a, + 0x098a, 0x09a1, 0x09c2, 0x09d8, 0x09f8, 0x0a0f, 0x0a30, 0x0a4e, + 0x0a62, 0x0a80, 0x0a9c, 0x0ab1, 0x0ac8, 0x0add, 0x0af3, 0x0b08, + 0x0b1e, 0x0b3b, 0x0b59, 0x0b76, 0x0b8b, 0x0ba1, 0x0bb7, 0x0bd7, + 0x0bed, 0x0c0d, 0x0c24, 0x0c45, 0x0c5b, 0x0c7b, 0x0c92, 0x0cb3, + 0x0cc9, 0x0ce9, 0x0d00, 0x0d21, 0x0d40, 0x0d54, 0x0d6a, 0x0d80, + 0x0d96, 0x0dac, 0x0dc1, 0x0dd8, 0x0ded, 0x0e03, 0x0e18, 0x0e2e, + // Entry 1240 - 127F + 0x0e4b, 0x0e60, 0x0e76, 0x0e8c, 0x0eac, 0x0ec2, 0x0ee2, 0x0ef9, + 0x0f1a, 0x0f30, 0x0f50, 0x0f67, 0x0f88, 0x0f9e, 0x0fbe, 0x0fd5, + 0x0ff6, 0x1015, 0x1029, 0x103e, 0x1061, 0x1084, 0x10a7, 0x10ca, + 0x10df, 0x10f6, 0x110b, 0x1121, 0x1136, 0x114c, 0x1169, 0x117e, + 0x1194, 0x11aa, 0x11ca, 0x11e0, 0x1200, 0x1217, 0x1238, 0x124e, + 0x126e, 0x1285, 0x12a6, 0x12bc, 0x12dc, 0x12f3, 0x1314, 0x1333, + 0x1347, 0x1363, 0x1378, 0x138f, 0x13a4, 0x13ba, 0x13cf, 0x13e5, + 0x1402, 0x1417, 0x142d, 0x1443, 0x1463, 0x1479, 0x1499, 0x14b0, + // Entry 1280 - 12BF + 0x14d1, 0x14e7, 0x1507, 0x151e, 0x153f, 0x1555, 0x1575, 0x158c, + 0x15ad, 0x15cc, 0x15e0, 0x15fe, 0x1613, 0x1632, 0x164d, 0x1662, + 0x1679, 0x168e, 0x16a4, 0x16b9, 0x16cf, 0x16ec, 0x1701, 0x1717, + 0x172d, 0x174d, 0x1763, 0x1783, 0x179a, 0x17bb, 0x17da, 0x17ee, + 0x180b, 0x1820, 0x1835, 0x184c, 0x1861, 0x1877, 0x188c, 0x18a2, + 0x18bf, 0x18d4, 0x18ea, 0x1900, 0x1920, 0x1936, 0x1956, 0x196d, + 0x198e, 0x19a4, 0x19c4, 0x19db, 0x19fc, 0x1a12, 0x1a32, 0x1a49, + 0x1a6a, 0x1a7e, 0x1a9c, 0x1ab7, 0x1acc, 0x1ae3, 0x1af8, 0x1b0e, + // Entry 12C0 - 12FF + 0x1b23, 0x1b39, 0x1b56, 0x1b6b, 0x1b81, 0x1b97, 0x1bb7, 0x1bcd, + 0x1bed, 0x1c04, 0x1c25, 0x1c3b, 0x1c5b, 0x1c72, 0x1c93, 0x1ca9, + 0x1cc9, 0x1ce0, 0x1d01, 0x1d20, 0x1d34, 0x1d53, 0x1d68, 0x1d86, + 0x1da6, 0x1dc4, 0x1de2, 0x1e01, 0x1e20, 0x1e3f, 0x1e5e, 0x1e74, + 0x1e8a, 0x1ea1, 0x1eb7, 0x1ece, 0x1ee4, 0x1efb, 0x1f12, 0x1f33, + 0x1f4a, 0x1f6b, 0x1f83, 0x1fa5, 0x1fbc, 0x1fdd, 0x1ff5, 0x2017, + 0x202e, 0x204f, 0x2067, 0x2089, 0x209e, 0x20b3, 0x20ca, 0x20df, + 0x20f5, 0x210a, 0x2120, 0x213d, 0x2152, 0x2168, 0x217e, 0x219e, + // Entry 1300 - 133F + 0x21b4, 0x21d4, 0x21eb, 0x220c, 0x2222, 0x2242, 0x2259, 0x227a, + 0x2290, 0x22b0, 0x22c7, 0x22e8, 0x2307, 0x231b, 0x233a, 0x2358, + 0x2374, 0x2389, 0x23a5, 0x23c4, 0x23db, 0x23f0, 0x2406, 0x241b, + 0x2431, 0x2450, 0x2465, 0x247b, 0x249a, 0x24b1, 0x24d2, 0x24e6, + 0x2504, 0x251f, 0x2534, 0x254b, 0x2560, 0x2576, 0x258b, 0x25a1, + 0x25b6, 0x25cc, 0x25e3, 0x2604, 0x2618, 0x262e, 0x264b, 0x2661, + 0x267e, 0x2695, 0x26b3, 0x26c9, 0x26e0, 0x26f6, 0x270d, 0x2725, + 0x2747, 0x275c, 0x2773, 0x278a, 0x27a1, 0x27b8, 0x27ce, 0x27e4, + // Entry 1340 - 137F + 0x27fa, 0x2810, 0x2826, 0x2843, 0x2860, 0x287e, 0x289b, 0x28b9, + 0x28d6, 0x28f4, 0x2910, 0x292c, 0x2941, 0x2958, 0x296d, 0x2983, + 0x2998, 0x29ae, 0x29c3, 0x29d9, 0x29ed, 0x2a04, 0x2a1b, 0x2a32, + 0x2a49, 0x2a68, 0x2a87, 0x2aa6, 0x2ac5, 0x2add, 0x2af3, 0x2b0a, + 0x2b20, 0x2b37, 0x2b4d, 0x2b64, 0x2b79, 0x2b8f, 0x2bac, 0x2bc9, + 0x2be6, 0x2c03, 0x2c24, 0x2c45, 0x2c66, 0x2c87, 0x2ca7, 0x2cbd, + 0x2cd4, 0x2cea, 0x2d01, 0x2d17, 0x2d2e, 0x2d43, 0x2d61, 0x2d7f, + 0x2d9e, 0x2dbc, 0x2ddb, 0x2df9, 0x2e18, 0x2e35, 0x2e51, 0x2e6f, + // Entry 1380 - 13BF + 0x2e8d, 0x2eab, 0x2ec9, 0x2ee8, 0x2f07, 0x2f26, 0x2f45, 0x2f64, + 0x2f83, 0x2fa2, 0x2fc1, 0x2fe0, 0x2fff, 0x301e, 0x303d, 0x3059, + 0x3075, 0x3091, 0x30ad, 0x30cb, 0x30e9, 0x3107, 0x3126, 0x3144, + 0x3162, 0x317f, 0x319c, 0x31b9, 0x31d7, 0x31f4, 0x3211, 0x322e, + 0x324b, 0x3268, 0x3286, 0x32a3, 0x32c0, 0x32de, 0x32fc, 0x331a, + 0x3339, 0x3357, 0x3375, 0x3393, 0x33b1, 0x33cf, 0x33ee, 0x340c, + 0x342a, 0x3448, 0x3466, 0x3484, 0x34a3, 0x34c1, 0x34df, 0x34fc, + 0x3519, 0x3536, 0x3554, 0x3571, 0x358e, 0x35aa, 0x35c7, 0x35e4, + // Entry 13C0 - 13FF + 0x3601, 0x361f, 0x363c, 0x3659, 0x3677, 0x3695, 0x36b3, 0x36d2, + 0x36f0, 0x370e, 0x372c, 0x374a, 0x3768, 0x3787, 0x37a5, 0x37c3, + 0x37e0, 0x37fd, 0x381a, 0x3837, 0x3855, 0x3872, 0x388f, 0x38ac, + 0x38c9, 0x38e6, 0x3904, 0x3921, 0x393e, 0x395b, 0x3978, 0x3995, + 0x39b3, 0x39d0, 0x39ed, 0x3a0a, 0x3a26, 0x3a43, 0x3a60, 0x3a7e, + 0x3a9b, 0x3ab7, 0x3ad4, 0x3af2, 0x3b10, 0x3b2e, 0x3b4d, 0x3b6b, + 0x3b89, 0x3ba6, 0x3bc3, 0x3be0, 0x3bfe, 0x3c1b, 0x3c38, 0x3c56, + 0x3c74, 0x3c92, 0x3cb1, 0x3ccf, 0x3ced, 0x3d0b, 0x3d29, 0x3d47, + // Entry 1400 - 143F + 0x3d66, 0x3d84, 0x3da2, 0x3dc1, 0x3de0, 0x3dff, 0x3e1f, 0x3e3e, + 0x3e5d, 0x3e7b, 0x3e99, 0x3eb7, 0x3ed6, 0x3ef4, 0x3f12, 0x3f2f, + 0x3f4c, 0x3f69, 0x3f87, 0x3fa4, 0x3fc1, 0x3fdd, 0x4001, 0x401f, + 0x403d, 0x405b, 0x407a, 0x4098, 0x40b6, 0x40d3, 0x40f0, 0x410d, + 0x412b, 0x4148, 0x4165, 0x4183, 0x41a1, 0x41bf, 0x41de, 0x41fc, + 0x421a, 0x4237, 0x4255, 0x4273, 0x4291, 0x42b0, 0x42ce, 0x42ec, + 0x430a, 0x4328, 0x4346, 0x4365, 0x4383, 0x43a1, 0x43c0, 0x43df, + 0x43fe, 0x441e, 0x443d, 0x445c, 0x4477, 0x4493, 0x44a9, 0x44c0, + // Entry 1440 - 147F + 0x44d7, 0x44ef, 0x4506, 0x451e, 0x4535, 0x454d, 0x4570, 0x4592, + 0x45b5, 0x45d7, 0x45fa, 0x461c, 0x463f, 0x4665, 0x4683, 0x4693, + 0x46a5, 0x46b6, 0x46c8, 0x46d9, 0x46ea, 0x46fb, 0x470c, 0x471e, + 0x472f, 0x4741, 0x4752, 0x4763, 0x4777, 0x478a, 0x479b, 0x47ac, + 0x47bc, 0x47cb, 0x47df, 0x47f3, 0x4807, 0x4816, 0x482b, 0x483c, + 0x4854, 0x4866, 0x4878, 0x4893, 0x0093, 0x00ae, 0x00bc, 0x00d2, + 0x00e1, 0x00ef, 0x00fd, 0x011e, 0x012e, 0x0142, 0x0153, 0x0164, + 0x0175, 0x0193, 0x01b0, 0x01be, 0x01cd, 0x01dc, 0x01f9, 0x020b, + // Entry 1480 - 14BF + 0x021b, 0x022e, 0x023c, 0x024c, 0x0264, 0x0274, 0x028d, 0x02a2, + 0x02b6, 0x02d7, 0x02f7, 0x0315, 0x0333, 0x0348, 0x0362, 0x0370, + 0x0384, 0x0394, 0x03b2, 0x03ce, 0x03e3, 0x03ff, 0x0417, 0x042c, + 0x0450, 0x046d, 0x047b, 0x0489, 0x04a5, 0x04c2, 0x04d0, 0x04f5, + 0x0516, 0x052b, 0x053e, 0x0555, 0x056e, 0x058d, 0x05ab, 0x05ca, + 0x05df, 0x05f2, 0x0602, 0x061b, 0x0637, 0x0647, 0x0657, 0x066b, + 0x067c, 0x068e, 0x069f, 0x06ba, 0x06d4, 0x06ed, 0x06fb, 0x0709, + 0x0721, 0x073b, 0x0752, 0x0765, 0x077a, 0x078f, 0x079d, 0x07ac, + // Entry 14C0 - 14FF + 0x07bb, 0x07d8, 0x07f5, 0x0812, 0x082f, 0x084e, 0x004e, 0x005e, + 0x006e, 0x007e, 0x008f, 0x00a0, 0x00b2, 0x00c3, 0x00d4, 0x00e5, + 0x00f6, 0x0107, 0x0118, 0x0129, 0x0129, 0x013a, 0x014b, 0x015c, + 0x016d, 0x0181, 0x0195, 0x01a8, 0x01a8, 0x01b8, 0x01c8, 0x01d8, + 0x01e9, 0x01fa, 0x020c, 0x021d, 0x022e, 0x023f, 0x0250, 0x0261, + 0x0272, 0x0283, 0x0294, 0x02a5, 0x02b6, 0x02c7, 0x02d8, 0x02ec, + 0x0300, 0x0315, 0x0332, 0x034f, 0x034f, 0x035d, 0x036b, 0x0379, + 0x0388, 0x0397, 0x03a7, 0x03b6, 0x03c5, 0x03d4, 0x03e3, 0x03f2, + // Entry 1500 - 153F + 0x0401, 0x0410, 0x041f, 0x042e, 0x043d, 0x044c, 0x045b, 0x046d, + 0x047f, 0x007f, 0x0090, 0x00a1, 0x00b2, 0x00c4, 0x00d6, 0x00e9, + 0x00fb, 0x010d, 0x011f, 0x0131, 0x0143, 0x0155, 0x0167, 0x0167, + 0x0179, 0x018b, 0x019d, 0x019d, 0x01b2, 0x01c7, 0x01c7, 0x01d6, + 0x01e6, 0x01f5, 0x0205, 0x0215, 0x0224, 0x0234, 0x0243, 0x0253, + 0x0263, 0x0272, 0x0283, 0x0292, 0x02a3, 0x02b3, 0x02c2, 0x02d2, + 0x02e1, 0x02f1, 0x0300, 0x030f, 0x031f, 0x032e, 0x033e, 0x034d, + 0x035c, 0x036b, 0x037a, 0x0389, 0x0399, 0x03a9, 0x03b8, 0x03c7, + // Entry 1540 - 157F + 0x03d6, 0x03e5, 0x0400, 0x041b, 0x0435, 0x0450, 0x046a, 0x0485, + 0x04a0, 0x04bc, 0x04d6, 0x04f1, 0x050b, 0x0526, 0x0540, 0x055b, + 0x057f, 0x05a3, 0x05be, 0x05d5, 0x05ec, 0x05ff, 0x0611, 0x0624, + 0x0636, 0x0649, 0x065b, 0x066e, 0x0681, 0x0694, 0x06a7, 0x06ba, + 0x06cc, 0x06df, 0x06f2, 0x0705, 0x0718, 0x072a, 0x073c, 0x0754, + 0x076a, 0x077c, 0x078d, 0x079d, 0x07b3, 0x07c5, 0x07d5, 0x07ed, + 0x07fe, 0x080e, 0x0823, 0x0832, 0x0847, 0x0861, 0x0873, 0x0884, + 0x089a, 0x08ac, 0x08c6, 0x08de, 0x08f1, 0x00f1, 0x0101, 0x0110, + // Entry 1580 - 15BF + 0x011f, 0x0130, 0x0140, 0x0150, 0x015f, 0x0170, 0x0181, 0x0191, + 0x0191, 0x01ab, 0x01c6, 0x01e0, 0x01fa, 0x0215, 0x0230, 0x0250, + 0x026f, 0x028e, 0x02ae, 0x02ae, 0x02bd, 0x02cf, 0x02de, 0x02f1, + 0x0300, 0x0313, 0x032d, 0x0354, 0x036a, 0x0384, 0x0394, 0x03b9, + 0x03de, 0x0405, 0x041e, 0x001e, 0x0032, 0x0045, 0x0058, 0x006d, + 0x0081, 0x0095, 0x00a8, 0x00bd, 0x00d2, 0x00e6, 0x00e6, 0x00f8, + 0x010a, 0x011c, 0x012e, 0x0140, 0x0153, 0x0166, 0x0179, 0x018c, + 0x01a0, 0x01b3, 0x01c6, 0x01d9, 0x01ec, 0x01ff, 0x0212, 0x0225, + // Entry 15C0 - 15FF + 0x0239, 0x024c, 0x025f, 0x0273, 0x0286, 0x0299, 0x02ac, 0x02bf, + 0x02d2, 0x02e5, 0x02f9, 0x030d, 0x0320, 0x0334, 0x0348, 0x035c, + 0x0370, 0x0384, 0x03a9, 0x03c0, 0x03d7, 0x03ee, 0x0405, 0x041d, + 0x0435, 0x044e, 0x0466, 0x047e, 0x0496, 0x04ae, 0x04c6, 0x04de, + 0x04f6, 0x050f, 0x0527, 0x0540, 0x0558, 0x0570, 0x0588, 0x05a1, + 0x05ba, 0x05d3, 0x05ec, 0x0605, 0x061c, 0x0633, 0x064b, 0x0663, + 0x067a, 0x0693, 0x06ab, 0x06c3, 0x06db, 0x06f3, 0x070c, 0x0724, + 0x073c, 0x0754, 0x076c, 0x0785, 0x079e, 0x07b7, 0x07cf, 0x07e8, + // Entry 1600 - 163F + 0x0801, 0x081a, 0x0833, 0x084d, 0x0867, 0x0881, 0x089c, 0x009c, + 0x00c2, 0x00e7, 0x0107, 0x0128, 0x0152, 0x0172, 0x0198, 0x01b3, + 0x01ce, 0x01ea, 0x0207, 0x0223, 0x0240, 0x025e, 0x027b, 0x0298, + 0x02b4, 0x02d0, 0x02ec, 0x0309, 0x0326, 0x0343, 0x035f, 0x037b, + 0x039c, 0x03be, 0x03e2, 0x0406, 0x0429, 0x044d, 0x0471, 0x0496, + 0x04b9, 0x04dd, 0x0501, 0x0525, 0x0549, 0x056c, 0x058c, 0x05ad, + 0x05d1, 0x05f2, 0x0616, 0x0216, 0x022b, 0x0240, 0x0256, 0x026c, + 0x0282, 0x0298, 0x02af, 0x02c5, 0x02db, 0x02f2, 0x0308, 0x031e, + // Entry 1640 - 167F + 0x0334, 0x034a, 0x0360, 0x0376, 0x038d, 0x03a4, 0x03bc, 0x03d2, + 0x03e8, 0x03fe, 0x0414, 0x0432, 0x0449, 0x0468, 0x047e, 0x049c, + 0x04b3, 0x04d2, 0x04e9, 0x04ff, 0x0516, 0x052c, 0x0543, 0x0559, + 0x0575, 0x0591, 0x05ad, 0x05c9, 0x05e5, 0x0601, 0x061d, 0x063a, + 0x0656, 0x0672, 0x0695, 0x06b8, 0x06d5, 0x06f5, 0x0715, 0x072c, + 0x0743, 0x075b, 0x0773, 0x078b, 0x07a3, 0x07bb, 0x07d9, 0x07f7, + 0x0814, 0x0832, 0x0855, 0x0873, 0x0891, 0x08ae, 0x08cc, 0x08ec, + 0x090c, 0x092f, 0x012f, 0x0149, 0x0158, 0x0168, 0x0177, 0x0187, + // Entry 1680 - 16BF + 0x0197, 0x01a6, 0x01b6, 0x01c5, 0x01d5, 0x01e5, 0x01f4, 0x0204, + 0x0213, 0x0223, 0x0232, 0x0241, 0x0251, 0x0260, 0x0270, 0x027f, + 0x028e, 0x029d, 0x02ac, 0x02bb, 0x02cb, 0x02db, 0x02ea, 0x02f9, + 0x030a, 0x031a, 0x031a, 0x032c, 0x033e, 0x0350, 0x0363, 0x0376, + 0x0389, 0x039c, 0x03ae, 0x03c0, 0x03d9, 0x03f2, 0x040b, 0x000b, + 0x0020, 0x0036, 0x0051, 0x0066, 0x007b, 0x0090, 0x00a5, 0x00ba, + 0x00cf, 0x00e3, 0x00f7, 0x0106, 0x0106, 0x0114, 0x0114, 0x012a, + 0x013d, 0x014d, 0x015c, 0x016b, 0x017c, 0x018c, 0x019c, 0x01ab, + // Entry 16C0 - 16FF + 0x01bc, 0x01cd, 0x01dd, 0x01ed, 0x01fd, 0x020e, 0x021f, 0x022f, + 0x023f, 0x024f, 0x0260, 0x0270, 0x0280, 0x0291, 0x02a1, 0x02b1, + 0x02c1, 0x02d1, 0x02e1, 0x02f2, 0x0304, 0x0314, 0x0323, 0x0332, + 0x0342, 0x0352, 0x0361, 0x0371, 0x0380, 0x0390, 0x039f, 0x03b0, + 0x03c0, 0x03c0, 0x03d4, 0x03e8, 0x03fc, 0x0410, 0x0424, 0x0024, + 0x003e, 0x0057, 0x0071, 0x008b, 0x00a6, 0x00bf, 0x00d8, 0x00f2, + 0x010d, 0x0127, 0x0141, 0x015b, 0x0174, 0x018d, 0x01a7, 0x01c2, + 0x01dc, 0x01f5, 0x020f, 0x0228, 0x0242, 0x025d, 0x0277, 0x0290, + // Entry 1700 - 173F + 0x02aa, 0x02c3, 0x02dd, 0x02f7, 0x0311, 0x032a, 0x0343, 0x035c, + 0x0376, 0x0390, 0x03aa, 0x03c3, 0x03dc, 0x03f5, 0x0410, 0x042b, + 0x0445, 0x045f, 0x047a, 0x0494, 0x0094, 0x00ba, 0x00d3, 0x00ec, + 0x0104, 0x011d, 0x0135, 0x014e, 0x0166, 0x017f, 0x0198, 0x01b1, + 0x01cb, 0x01e4, 0x01fd, 0x0217, 0x0231, 0x024a, 0x0264, 0x027f, + 0x0299, 0x02b3, 0x02cd, 0x02e7, 0x0301, 0x0318, 0x032f, 0x032f, + 0x0345, 0x035a, 0x036f, 0x0386, 0x039c, 0x03b2, 0x03c7, 0x03de, + 0x03f5, 0x040b, 0x0425, 0x0025, 0x0039, 0x004e, 0x0065, 0x007b, + // Entry 1740 - 177F + 0x0090, 0x00a5, 0x00bb, 0x00d1, 0x00ec, 0x0106, 0x0120, 0x013b, + 0x0150, 0x016a, 0x0183, 0x019c, 0x01b6, 0x01d0, 0x01e6, 0x01fb, + 0x020f, 0x0223, 0x0238, 0x024d, 0x0267, 0x0280, 0x0299, 0x02b3, + 0x02c7, 0x02e0, 0x02f8, 0x0310, 0x0329, 0x0342, 0x0354, 0x0366, + 0x0379, 0x038d, 0x039f, 0x03b1, 0x03c3, 0x03d6, 0x03e8, 0x03fa, + 0x040c, 0x041f, 0x0431, 0x0443, 0x0456, 0x046a, 0x047c, 0x048e, + 0x04a0, 0x04b2, 0x04c4, 0x04d5, 0x04e7, 0x04fc, 0x0511, 0x0526, + 0x053b, 0x0551, 0x0151, 0x0161, 0x0178, 0x018f, 0x01a7, 0x01bf, + // Entry 1780 - 17BF + 0x01d5, 0x01ec, 0x0203, 0x0216, 0x022d, 0x0245, 0x025b, 0x0271, + 0x0288, 0x029b, 0x02af, 0x02c9, 0x02db, 0x02f4, 0x0308, 0x031f, + 0x0337, 0x034d, 0x0364, 0x0376, 0x0388, 0x039f, 0x03b7, 0x03ce, + 0x03e4, 0x03fa, 0x0411, 0x0423, 0x0439, 0x0450, 0x0462, 0x0475, + 0x0487, 0x049a, 0x04ac, 0x04c4, 0x04dc, 0x04f3, 0x050a, 0x051d, + 0x052e, 0x0544, 0x0555, 0x0567, 0x0578, 0x058a, 0x059c, 0x05ae, + 0x05c1, 0x05d9, 0x05fa, 0x061b, 0x063e, 0x0658, 0x0679, 0x0697, + 0x06c3, 0x06dd, 0x06f7, 0x0711, 0x0311, 0x0324, 0x0339, 0x0354, + // Entry 17C0 - 17FF + 0x036a, 0x0385, 0x039a, 0x03b0, 0x03c6, 0x03dd, 0x03f2, 0x0408, + 0x041d, 0x0439, 0x044f, 0x0464, 0x047a, 0x0490, 0x04a6, 0x04c1, + 0x04dd, 0x04f3, 0x0507, 0x051b, 0x0535, 0x054f, 0x0569, 0x057e, + 0x0593, 0x05b0, 0x01b0, 0x01d4, 0x01ec, 0x0203, 0x021a, 0x0233, + 0x024b, 0x0263, 0x027a, 0x0293, 0x02ac, 0x02c4, 0x02c4, 0x02dc, + 0x02f3, 0x030a, 0x0323, 0x033b, 0x0353, 0x036a, 0x0383, 0x039c, + 0x03b4, 0x03b4, 0x03c7, 0x03de, 0x03f1, 0x0403, 0x0414, 0x0428, + 0x044b, 0x0462, 0x0474, 0x0489, 0x049e, 0x04b6, 0x04c8, 0x04db, + // Entry 1800 - 183F + 0x00db, 0x00fe, 0x0116, 0x0128, 0x0141, 0x0155, 0x0168, 0x0183, + 0x019c, 0x01bc, 0x01e7, 0x0213, 0x022e, 0x0250, 0x026b, 0x0288, + 0x0288, 0x029f, 0x02b7, 0x02ca, 0x02de, 0x02f1, 0x0306, 0x0322, + 0x0337, 0x0353, 0x0368, 0x0384, 0x039b, 0x03b9, 0x03d1, 0x03f0, + 0x0405, 0x041b, 0x0430, 0x044c, 0x045e, 0x047a, 0x048c, 0x04a3, + 0x04b6, 0x04c8, 0x04df, 0x04f1, 0x0508, 0x051b, 0x0533, 0x0555, + 0x0577, 0x0599, 0x05b2, 0x05c4, 0x05db, 0x05ed, 0x0604, 0x0616, + 0x0628, 0x0640, 0x0652, 0x066c, 0x067e, 0x0690, 0x06a2, 0x06b4, + // Entry 1840 - 187F + 0x06c6, 0x06dd, 0x06f4, 0x0706, 0x0718, 0x072d, 0x0747, 0x075e, + 0x077a, 0x0792, 0x07af, 0x07ca, 0x07ec, 0x0808, 0x082b, 0x0845, + 0x0864, 0x0885, 0x08ab, 0x08c4, 0x08e4, 0x08f6, 0x090f, 0x0929, + 0x0943, 0x095b, 0x0973, 0x098c, 0x09a8, 0x01a8, 0x01bb, 0x01cd, + 0x01df, 0x01f3, 0x0206, 0x0219, 0x022b, 0x023f, 0x0253, 0x0266, + 0x0274, 0x0283, 0x0291, 0x02a9, 0x02bc, 0x02d2, 0x02e3, 0x02ff, + 0x031b, 0x0337, 0x0353, 0x0376, 0x0392, 0x03af, 0x03cc, 0x03e9, + 0x040a, 0x0431, 0x0458, 0x0480, 0x04a8, 0x04d1, 0x0506, 0x053b, + // Entry 1880 - 18BF + 0x0562, 0x0588, 0x05b3, 0x05de, 0x060b, 0x0638, 0x0663, 0x068e, + 0x06bb, 0x06e8, 0x0713, 0x0313, 0x032a, 0x0342, 0x035a, 0x036c, + 0x037e, 0x0390, 0x03a3, 0x03b5, 0x03c7, 0x03da, 0x03ed, 0x0400, + 0x0413, 0x0427, 0x043a, 0x044d, 0x0460, 0x0474, 0x0487, 0x049a, + 0x04ad, 0x04c0, 0x04d3, 0x04e6, 0x04f9, 0x050c, 0x051f, 0x0532, + 0x0545, 0x0558, 0x056b, 0x057e, 0x0591, 0x05b3, 0x05d4, 0x05f4, + 0x0611, 0x062d, 0x064c, 0x0669, 0x0685, 0x06a4, 0x06ba, 0x06cf, + 0x06f3, 0x0717, 0x072b, 0x073f, 0x0753, 0x0766, 0x0779, 0x078e, + // Entry 18C0 - 18FF + 0x07a2, 0x07b6, 0x07c9, 0x07de, 0x07f3, 0x0807, 0x0819, 0x082d, + 0x0841, 0x0855, 0x086d, 0x0885, 0x0893, 0x08ac, 0x08bb, 0x08d5, + 0x08ef, 0x08fe, 0x0912, 0x0921, 0x093b, 0x094a, 0x0964, 0x0973, + 0x098d, 0x09a3, 0x09b2, 0x09cc, 0x09db, 0x09ea, 0x09f9, 0x0a13, + 0x0a22, 0x0a3c, 0x0a54, 0x0a6c, 0x0a7b, 0x0a95, 0x0aaf, 0x0abe, + 0x0ad8, 0x0ae8, 0x0af7, 0x0b11, 0x0b21, 0x0b30, 0x0b40, 0x0b50, + 0x0b5e, 0x0b6c, 0x0b7c, 0x0b8e, 0x0ba7, 0x0bba, 0x0bcc, 0x0be3, + 0x0bf5, 0x0c0c, 0x0c1e, 0x0c42, 0x0c59, 0x0c6f, 0x0c7d, 0x0c8d, + // Entry 1900 - 193F + 0x008d, 0x00a8, 0x00c5, 0x00dd, 0x00f8, 0x0108, 0x0119, 0x012a, + 0x013a, 0x014b, 0x015c, 0x016c, 0x017d, 0x018d, 0x019e, 0x01ae, + 0x01bf, 0x01cf, 0x01df, 0x01ef, 0x0200, 0x0211, 0x0221, 0x0232, + 0x0242, 0x0253, 0x0263, 0x0274, 0x0285, 0x0297, 0x02a8, 0x02b8, + 0x02c8, 0x02d8, 0x02e8, 0x02f9, 0x0309, 0x0319, 0x032a, 0x033a, + 0x0349, 0x0363, 0x037d, 0x0391, 0x03a4, 0x03b7, 0x03cb, 0x03de, + 0x03f2, 0x0405, 0x041c, 0x0433, 0x044a, 0x0461, 0x0478, 0x048f, + 0x04a6, 0x04c3, 0x04dd, 0x04ec, 0x04fd, 0x00fd, 0x0116, 0x013b, + // Entry 1940 - 197F + 0x0154, 0x0174, 0x018d, 0x019e, 0x01ae, 0x01be, 0x01d0, 0x01e1, + 0x01f2, 0x0202, 0x0214, 0x0226, 0x0237, 0x0237, 0x0248, 0x025a, + 0x026b, 0x027e, 0x0290, 0x02a2, 0x02b6, 0x02c9, 0x02dc, 0x02ee, + 0x0302, 0x0316, 0x0329, 0x033b, 0x034d, 0x035f, 0x0372, 0x0384, + 0x0397, 0x03aa, 0x03bd, 0x03d0, 0x03e3, 0x03f5, 0x0407, 0x0419, + 0x042c, 0x043e, 0x0450, 0x0462, 0x0474, 0x0487, 0x0499, 0x04ab, + 0x04bd, 0x04d0, 0x04e2, 0x04f5, 0x0507, 0x051a, 0x052c, 0x053e, + 0x0550, 0x0563, 0x057c, 0x0598, 0x05a6, 0x05b7, 0x05c4, 0x05df, + // Entry 1980 - 19BF + 0x0601, 0x0621, 0x0645, 0x0663, 0x0680, 0x069d, 0x06c2, 0x06e6, + 0x0704, 0x0726, 0x0326, 0x0347, 0x036b, 0x038e, 0x03af, 0x03d6, + 0x03fc, 0x0422, 0x0448, 0x0048, 0x005b, 0x006b, 0x007d, 0x0091, + 0x00b6, 0x00ea, 0x0113, 0x0144, 0x015b, 0x0196, 0x01af, 0x01c8, + 0x01e3, 0x01f7, 0x0210, 0x022b, 0x025b, 0x0286, 0x02a0, 0x02b9, + 0x02db, 0x02f6, 0x031a, 0x033d, 0x0362, 0x0382, 0x03a2, 0x03c1, + 0x03ea, 0x03fb, 0x041c, 0x0434, 0x0453, 0x0475, 0x048c, 0x04ab, + 0x04c2, 0x04d8, 0x04ee, 0x00ee, 0x0103, 0x011f, 0x011f, 0x013b, + // Entry 19C0 - 19FF + 0x0158, 0x0174, 0x0197, 0x01b3, 0x01cf, 0x01ed, 0x0209, 0x0229, + 0x0244, 0x0260, 0x027c, 0x02a4, 0x02c0, 0x02e5, 0x0301, 0x0322, + 0x033f, 0x0361, 0x038a, 0x03a6, 0x03c3, 0x03e0, 0x0400, 0x041c, + 0x0441, 0x0464, 0x0480, 0x049c, 0x04b9, 0x04e2, 0x0506, 0x0522, + 0x053e, 0x055a, 0x0578, 0x059d, 0x05ad, 0x05cd, 0x05ed, 0x060a, + 0x0628, 0x0646, 0x0666, 0x067f, 0x0699, 0x06b2, 0x06d2, 0x06eb, + 0x0704, 0x0726, 0x073f, 0x0758, 0x0771, 0x078a, 0x07a3, 0x07bc, + 0x07d5, 0x07ee, 0x0810, 0x0829, 0x0843, 0x085c, 0x0875, 0x088e, + // Entry 1A00 - 1A3F + 0x08a7, 0x08c0, 0x08d7, 0x08f5, 0x0910, 0x092f, 0x0946, 0x095d, + 0x0974, 0x098f, 0x09ab, 0x09ce, 0x09e5, 0x0a03, 0x0a1a, 0x0a31, + 0x0a4a, 0x0a61, 0x0a7d, 0x0a9d, 0x0ac0, 0x0ad7, 0x0aee, 0x0b05, + 0x0b25, 0x0b43, 0x0b5a, 0x0b73, 0x0b8d, 0x0bae, 0x0bc9, 0x0be8, + 0x0c01, 0x0c1f, 0x0c3d, 0x0c5b, 0x0c79, 0x0c9a, 0x0cbc, 0x0cdc, + 0x0cfc, 0x0d1c, 0x0d31, 0x0d57, 0x0d7d, 0x0da3, 0x0dc9, 0x0def, + 0x0e15, 0x0e3b, 0x0e6e, 0x0e94, 0x0eba, 0x0ee0, 0x0efb, 0x0f16, + 0x0f32, 0x0f5a, 0x0f82, 0x0fa5, 0x0fc5, 0x0fed, 0x1013, 0x1039, + // Entry 1A40 - 1A7F + 0x105f, 0x1085, 0x10ab, 0x10d1, 0x10f7, 0x111d, 0x1143, 0x1169, + 0x118f, 0x11b5, 0x11dd, 0x1203, 0x1229, 0x124f, 0x1277, 0x12a3, + 0x12ca, 0x12f2, 0x131f, 0x1355, 0x1381, 0x13a9, 0x13d6, 0x1400, + 0x1428, 0x1452, 0x1474, 0x148b, 0x14ac, 0x14c5, 0x14ea, 0x1501, + 0x152c, 0x154a, 0x1568, 0x158b, 0x15a5, 0x15c4, 0x15ef, 0x1618, + 0x1643, 0x166c, 0x168b, 0x16ac, 0x16d8, 0x16fe, 0x1729, 0x1748, + 0x1766, 0x177f, 0x17a0, 0x17b9, 0x17e2, 0x17fd, 0x181a, 0x1839, + 0x185a, 0x1878, 0x188f, 0x18ba, 0x18db, 0x18f4, 0x190f, 0x192c, + // Entry 1A80 - 1ABF + 0x1949, 0x195e, 0x1977, 0x198d, 0x19a3, 0x19b9, 0x19cf, 0x19ea, + 0x1a05, 0x1a29, 0x1a3f, 0x1a55, 0x1a76, 0x1a8c, 0x1aa2, 0x1ab4, + 0x1ac6, 0x1ad8, 0x1b0b, 0x1b2a, 0x1b49, 0x1b68, 0x1b8e, 0x1bb4, + 0x1bd4, 0x1bf2, 0x1c18, 0x1c36, 0x1c54, 0x1c7a, 0x1ca0, 0x1cbe, + 0x1ce4, 0x1d0a, 0x1d30, 0x1d4e, 0x1d71, 0x1d8f, 0x1db1, 0x1dcf, + 0x1df0, 0x1e12, 0x1e30, 0x1e67, 0x1ea6, 0x1ec4, 0x1ee4, 0x1f23, + 0x1f41, 0x1f6e, 0x1f9b, 0x1fc8, 0x1fdf, 0x03df, 0x03f6, 0x041b, + 0x043a, 0x0458, 0x048a, 0x04b0, 0x04d4, 0x04f9, 0x051c, 0x0541, + // Entry 1AC0 - 1AFF + 0x0564, 0x058a, 0x05ae, 0x05db, 0x0606, 0x062b, 0x064e, 0x0673, + 0x0696, 0x06bc, 0x06e0, 0x0703, 0x0724, 0x0750, 0x077a, 0x07a6, + 0x07d0, 0x07fc, 0x0826, 0x0852, 0x087c, 0x08a3, 0x08c8, 0x08f5, + 0x0920, 0x0945, 0x0968, 0x098a, 0x09aa, 0x09cf, 0x09f2, 0x0a17, + 0x0a3a, 0x0a5f, 0x0a82, 0x0aa5, 0x0ac6, 0x0aed, 0x0b12, 0x0b39, + 0x0b5e, 0x0b8d, 0x0bba, 0x0bdb, 0x0bfa, 0x0c1f, 0x0c42, 0x0c68, + 0x0c8c, 0x0cb1, 0x0cd4, 0x0d04, 0x0d32, 0x0d58, 0x0d7c, 0x0da8, + 0x0dd2, 0x0df3, 0x0e12, 0x0e37, 0x0e5a, 0x0e7f, 0x0ea2, 0x0ec7, + // Entry 1B00 - 1B3F + 0x0eea, 0x0f0f, 0x0f32, 0x0f58, 0x0f7c, 0x0fa8, 0x0fd2, 0x0ffd, + 0x1026, 0x1055, 0x1082, 0x10ae, 0x10d8, 0x1104, 0x112e, 0x114f, + 0x116e, 0x1193, 0x11b6, 0x11db, 0x11fe, 0x1223, 0x1246, 0x1276, + 0x12a4, 0x12ca, 0x12ee, 0x1313, 0x1336, 0x135b, 0x137e, 0x13ad, + 0x13da, 0x1409, 0x1436, 0x1469, 0x149a, 0x14bf, 0x14e2, 0x1507, + 0x152a, 0x1550, 0x1574, 0x15a0, 0x15ca, 0x15f5, 0x161e, 0x1645, + 0x166a, 0x1696, 0x16c0, 0x16eb, 0x1714, 0x1744, 0x1772, 0x1793, + 0x17b2, 0x17d7, 0x17fa, 0x181b, 0x183a, 0x185b, 0x187a, 0x189f, + // Entry 1B40 - 1B7F + 0x18c2, 0x18e7, 0x190a, 0x192f, 0x1952, 0x1977, 0x199a, 0x19bf, + 0x19e2, 0x1a07, 0x1a2a, 0x1a50, 0x1a74, 0x1a99, 0x1abc, 0x1ae2, + 0x1b06, 0x1b2a, 0x1b4d, 0x1b71, 0x1b95, 0x1bbe, 0x1be6, 0x1c14, + 0x1c3e, 0x1c5a, 0x1c72, 0x1c97, 0x1cba, 0x1ce0, 0x1d04, 0x1d34, + 0x1d62, 0x1d92, 0x1dc0, 0x1df5, 0x1e28, 0x1e58, 0x1e86, 0x1eba, + 0x1eec, 0x1f17, 0x1f40, 0x1f6b, 0x1f94, 0x1fc4, 0x1ff2, 0x201d, + 0x2046, 0x2075, 0x20a2, 0x20c7, 0x20ea, 0x2110, 0x2134, 0x2155, + 0x2174, 0x21a4, 0x21d2, 0x2202, 0x2230, 0x2265, 0x2298, 0x22c8, + // Entry 1B80 - 1BBF + 0x22f6, 0x232a, 0x235c, 0x2382, 0x23a6, 0x23cb, 0x23ee, 0x2413, + 0x2436, 0x245c, 0x2480, 0x24b0, 0x24de, 0x250e, 0x253c, 0x2571, + 0x25a4, 0x25d4, 0x2602, 0x2636, 0x2668, 0x2692, 0x26ba, 0x26e4, + 0x270c, 0x273b, 0x2768, 0x2792, 0x27ba, 0x27e8, 0x2814, 0x2839, + 0x285c, 0x2882, 0x28a6, 0x28d0, 0x28f8, 0x2922, 0x294a, 0x2979, + 0x29a6, 0x29d0, 0x29f8, 0x2a26, 0x2a52, 0x2a73, 0x2a92, 0x2ab7, + 0x2ada, 0x2b00, 0x2b24, 0x2b45, 0x2b64, 0x2b88, 0x2baa, 0x2bcd, + 0x2bee, 0x2c0e, 0x2c2c, 0x2c4f, 0x2c72, 0x2c9f, 0x2ccc, 0x2cf8, + // Entry 1BC0 - 1BFF + 0x2d24, 0x2d57, 0x2d8a, 0x2daf, 0x2dd4, 0x2e03, 0x2e32, 0x2e60, + 0x2e8e, 0x2ec3, 0x2ef8, 0x2f1d, 0x2f42, 0x2f71, 0x2fa0, 0x2fce, + 0x2ffc, 0x03fc, 0x0423, 0x044a, 0x047b, 0x04ac, 0x04dc, 0x050c, + 0x010c, 0x012d, 0x014e, 0x0179, 0x01a4, 0x01ce, 0x01f8, 0x0229, + 0x025a, 0x027d, 0x02a0, 0x02cd, 0x02fa, 0x0326, 0x0352, 0x0385, + 0x03b8, 0x03da, 0x03fc, 0x0428, 0x0454, 0x047f, 0x04aa, 0x04dc, + 0x050e, 0x0532, 0x0556, 0x0584, 0x05b2, 0x05df, 0x060c, 0x0640, + 0x0674, 0x0699, 0x06be, 0x06ed, 0x071c, 0x074a, 0x0778, 0x0378, + // Entry 1C00 - 1C3F + 0x039f, 0x03c6, 0x03f7, 0x0428, 0x0458, 0x0488, 0x0088, 0x00ad, + 0x00d2, 0x0101, 0x0130, 0x015e, 0x018c, 0x01c1, 0x01f6, 0x01f6, + 0x021d, 0x021d, 0x024e, 0x024e, 0x027e, 0x027e, 0x02b5, 0x02d8, + 0x02fb, 0x0328, 0x0355, 0x0381, 0x03ad, 0x03e0, 0x0413, 0x0438, + 0x045d, 0x048c, 0x04bb, 0x04e9, 0x0517, 0x054c, 0x0581, 0x05a4, + 0x05c6, 0x05eb, 0x060f, 0x0630, 0x0650, 0x0672, 0x0693, 0x06b8, + 0x06dc, 0x0701, 0x0725, 0x0748, 0x076a, 0x036a, 0x039f, 0x03d4, + 0x0413, 0x0452, 0x0490, 0x04ce, 0x0513, 0x0558, 0x0590, 0x05c8, + // Entry 1C40 - 1C7F + 0x060a, 0x064c, 0x068d, 0x06ce, 0x0716, 0x075e, 0x0791, 0x07c4, + 0x0801, 0x083e, 0x087a, 0x08b6, 0x08f9, 0x093c, 0x0972, 0x09a8, + 0x09e8, 0x0a28, 0x0a67, 0x0aa6, 0x0aec, 0x0b32, 0x0b67, 0x0b9c, + 0x0bdb, 0x0c1a, 0x0c58, 0x0c96, 0x0cdb, 0x0d20, 0x0d58, 0x0d90, + 0x0dd2, 0x0e14, 0x0e55, 0x0e96, 0x0ede, 0x0f26, 0x0f4a, 0x0f6e, + 0x0fa3, 0x0fce, 0x1002, 0x0002, 0x002b, 0x0066, 0x008c, 0x00b2, + 0x00d7, 0x00fb, 0x0129, 0x0136, 0x014a, 0x0155, 0x0166, 0x0185, + 0x01b8, 0x01e1, 0x0213, 0x0213, 0x023a, 0x0273, 0x029a, 0x02c0, + // Entry 1C80 - 1CBF + 0x02e3, 0x0305, 0x0331, 0x0346, 0x035a, 0x0375, 0x0398, 0x03bb, + 0x03eb, 0x041a, 0x001a, 0x0042, 0x0078, 0x009d, 0x00c2, 0x00e6, + 0x0109, 0x0109, 0x011e, 0x0132, 0x014d, 0x0173, 0x0199, 0x01cc, + 0x01fe, 0x021f, 0x0240, 0x026b, 0x02a4, 0x02cc, 0x02f4, 0x031b, + 0x0341, 0x0364, 0x037d, 0x0395, 0x03a0, 0x03a0, 0x03d5, 0x0400, + 0x0434, 0x0034, 0x005d, 0x0098, 0x00bf, 0x00e5, 0x010a, 0x012e, + 0x015c, 0x0166, 0x0171, 0x0171, 0x0178, 0x017f, 0x0187, 0x018f, + 0x01a1, 0x01b2, 0x01c2, 0x01ce, 0x01df, 0x01e9, 0x01f3, 0x0203, + // Entry 1CC0 - 1CFF + 0x0218, 0x0229, 0x023b, 0x024d, 0x0253, 0x0266, 0x0271, 0x0278, + 0x027f, 0x028d, 0x02a1, 0x02b0, 0x02ca, 0x02e5, 0x0300, 0x0325, + 0x033f, 0x035a, 0x0375, 0x039a, 0x03a0, 0x03ad, 0x03b3, 0x03c4, + 0x03d2, 0x03e0, 0x03f3, 0x0404, 0x0412, 0x0425, 0x043c, 0x0453, + 0x046d, 0x0483, 0x0499, 0x04ae, 0x04bc, 0x04d1, 0x04d6, 0x04e2, + 0x04ee, 0x04fc, 0x0511, 0x0526, 0x052b, 0x0554, 0x057e, 0x058c, + 0x05a3, 0x05ae, 0x05b6, 0x05be, 0x05cb, 0x05e0, 0x05e8, 0x05f5, + 0x0603, 0x0621, 0x0640, 0x0654, 0x066d, 0x0686, 0x0696, 0x06ab, + // Entry 1D00 - 1D3F + 0x06c1, 0x06d8, 0x06e4, 0x06f6, 0x06fe, 0x071e, 0x0733, 0x073d, + 0x074e, 0x0765, 0x077a, 0x0789, 0x079d, 0x07b1, 0x07c4, 0x07d1, + 0x07dd, 0x07e5, 0x07f7, 0x0810, 0x081b, 0x082f, 0x083e, 0x0851, + 0x085f, 0x005f, 0x0074, 0x0089, 0x009d, 0x00b4, 0x00ce, 0x00e9, + 0x0104, 0x0120, 0x0135, 0x0149, 0x0159, 0x0179, 0x0179, 0x0189, + 0x0199, 0x01a8, 0x01b9, 0x01ca, 0x01da, 0x01ef, 0x0200, 0x0217, + 0x0233, 0x0250, 0x0270, 0x027e, 0x028b, 0x0298, 0x02a7, 0x02b5, + 0x02c3, 0x02d0, 0x02df, 0x02ee, 0x02fc, 0x030f, 0x031e, 0x0333, + // Entry 1D40 - 1D7F + 0x034d, 0x0368, 0x0368, 0x0386, 0x03a4, 0x03c2, 0x03e0, 0x0402, + 0x0420, 0x043e, 0x045c, 0x047a, 0x0498, 0x04b6, 0x04d4, 0x04f2, + 0x00f2, 0x0104, 0x010e, 0x011b, 0x012c, 0x0135, 0x013e, 0x0148, + 0x0153, 0x015d, 0x0165, 0x0174, 0x017d, 0x0186, 0x018e, 0x0199, + 0x01a5, 0x01b6, 0x01bf, 0x01cb, 0x01d7, 0x01e3, 0x01ec, 0x01ff, + 0x020c, 0x0216, 0x0227, 0x0238, 0x0248, 0x0252, 0x025c, 0x0265, + 0x0265, 0x0281, 0x029e, 0x02c2, 0x02e7, 0x030a, 0x0329, 0x0343, + 0x035e, 0x0374, 0x0394, 0x03b8, 0x03d2, 0x03eb, 0x0405, 0x041f, + // Entry 1D80 - 1DBF + 0x043a, 0x045e, 0x047e, 0x0498, 0x04b2, 0x04de, 0x04ff, 0x0527, + 0x053f, 0x0558, 0x0573, 0x0594, 0x05b9, 0x05e9, 0x0618, 0x0632, + 0x064d, 0x0665, 0x0265, 0x026f, 0x0287, 0x029e, 0x02ac, 0x02be, + 0x02c5, 0x02cd, 0x02db, 0x02e2, 0x02f3, 0x0301, 0x0311, 0x0327, + 0x033e, 0x034d, 0x0368, 0x0378, 0x038e, 0x039e, 0x03ac, 0x03ba, + 0x03d1, 0x03dc, 0x03f5, 0x0405, 0x041c, 0x0433, 0x0443, 0x0459, + 0x0470, 0x0481, 0x0489, 0x0495, 0x04a3, 0x04b2, 0x04ba, 0x04d1, + 0x04db, 0x04e3, 0x04f4, 0x050a, 0x0528, 0x0533, 0x0540, 0x0550, + // Entry 1DC0 - 1DFF + 0x0566, 0x0576, 0x0584, 0x0594, 0x05a4, 0x05b4, 0x05c4, 0x05d2, + 0x05dd, 0x05e7, 0x05f3, 0x05ff, 0x0611, 0x0622, 0x0630, 0x0646, + 0x065f, 0x067a, 0x0692, 0x06af, 0x06ca, 0x06e5, 0x0702, 0x071d, + 0x073b, 0x0757, 0x0773, 0x078f, 0x07ab, 0x07b8, 0x07c8, 0x07d0, + 0x07dc, 0x07ea, 0x0805, 0x0820, 0x0839, 0x0852, 0x086b, 0x0885, + 0x089e, 0x08b8, 0x08d4, 0x08ef, 0x0908, 0x0923, 0x093d, 0x095a, + 0x0976, 0x0993, 0x09a9, 0x09ba, 0x09cb, 0x09de, 0x09f0, 0x0a02, + 0x0a13, 0x0a26, 0x0a39, 0x0a4b, 0x0a5c, 0x0a70, 0x0a84, 0x0a97, + // Entry 1E00 - 1E3F + 0x0ab0, 0x0aca, 0x0ae4, 0x0afb, 0x0b12, 0x0b2b, 0x0b43, 0x0b5b, + 0x0b72, 0x0b8b, 0x0ba4, 0x0bbc, 0x0bd3, 0x0bed, 0x0c07, 0x0c20, + 0x0c3f, 0x0c5f, 0x0c7f, 0x0c9d, 0x0cb8, 0x0cd2, 0x0cf4, 0x0d11, + 0x0d2c, 0x0d4a, 0x0d66, 0x0d88, 0x0da3, 0x0db3, 0x0dc5, 0x01c5, + 0x01d4, 0x01e1, 0x01f1, 0x0200, 0x0210, 0x021d, 0x022d, 0x023d, + 0x024d, 0x025d, 0x0278, 0x0294, 0x02a8, 0x02bd, 0x02d7, 0x02ef, + 0x030a, 0x0324, 0x033d, 0x0357, 0x036f, 0x0385, 0x039e, 0x03b6, + 0x03cd, 0x03e6, 0x0400, 0x0419, 0x0433, 0x0448, 0x0464, 0x047a, + // Entry 1E40 - 1E7F + 0x049a, 0x04bb, 0x04dd, 0x0500, 0x0526, 0x054b, 0x056d, 0x058b, + 0x05a7, 0x05da, 0x05f9, 0x0614, 0x0637, 0x065c, 0x0680, 0x06a3, + 0x06c7, 0x06ed, 0x0713, 0x0738, 0x075d, 0x0787, 0x07ac, 0x07c3, + 0x07d8, 0x07f0, 0x0807, 0x0830, 0x0859, 0x087b, 0x089e, 0x08c1, + 0x08d7, 0x08eb, 0x0902, 0x0918, 0x092f, 0x0943, 0x095a, 0x0971, + 0x0988, 0x099f, 0x09b5, 0x09cc, 0x09e4, 0x09fd, 0x0a1d, 0x0a3f, + 0x0a55, 0x0a69, 0x0a80, 0x0a96, 0x0aac, 0x0ac3, 0x0ad8, 0x0aeb, + 0x0b01, 0x0b16, 0x0b32, 0x0b51, 0x0b84, 0x0bb5, 0x0bcf, 0x0bf5, + // Entry 1E80 - 1EBF + 0x0c15, 0x0c2f, 0x0c49, 0x0c5c, 0x0c79, 0x0ca3, 0x0cba, 0x0cde, + 0x0d03, 0x0d28, 0x0d53, 0x0d7f, 0x0dab, 0x0dc6, 0x0de2, 0x0dfe, + 0x0e05, 0x0e0f, 0x0e23, 0x0e2f, 0x0e43, 0x0e4c, 0x0e55, 0x0e5a, + 0x0e64, 0x0e75, 0x0e85, 0x0e97, 0x0eb1, 0x0ec9, 0x0ed5, 0x0ee2, + 0x0ef1, 0x0f00, 0x0f0a, 0x0f1c, 0x0f24, 0x0f32, 0x0f3b, 0x0f4c, + 0x0f59, 0x0f68, 0x0f73, 0x0f7c, 0x0f87, 0x0f96, 0x0f9e, 0x0fa9, + 0x0fae, 0x0fbc, 0x0fcb, 0x0fd2, 0x0fe1, 0x0fec, 0x0ffb, 0x1006, + 0x1010, 0x101c, 0x1021, 0x1029, 0x1038, 0x1047, 0x1057, 0x1067, + // Entry 1EC0 - 1EFF + 0x1076, 0x1088, 0x10a2, 0x10c0, 0x10c9, 0x10d0, 0x10d5, 0x10df, + 0x10e8, 0x10ee, 0x1102, 0x110c, 0x111a, 0x1128, 0x1137, 0x1140, + 0x114e, 0x1157, 0x1162, 0x1179, 0x1194, 0x11aa, 0x11d1, 0x11fc, + 0x120b, 0x121e, 0x1236, 0x1242, 0x124e, 0x125b, 0x1276, 0x1288, + 0x129c, 0x12b2, 0x12d8, 0x12fa, 0x1306, 0x1312, 0x1322, 0x132f, + 0x133d, 0x1346, 0x1354, 0x135f, 0x136d, 0x1383, 0x138e, 0x13a1, + 0x13ad, 0x13b9, 0x13c9, 0x13df, 0x13f4, 0x140c, 0x1423, 0x143d, + 0x1457, 0x1474, 0x1482, 0x1493, 0x149a, 0x14ab, 0x14b8, 0x14c8, + // Entry 1F00 - 1F3F + 0x14e6, 0x1507, 0x1521, 0x153e, 0x1561, 0x1587, 0x15a0, 0x15b9, + 0x15db, 0x15fd, 0x1605, 0x160d, 0x1621, 0x1635, 0x164e, 0x1667, + 0x1677, 0x1687, 0x1690, 0x169b, 0x16aa, 0x16bb, 0x16d0, 0x16e7, + 0x1707, 0x1729, 0x1744, 0x1761, 0x1769, 0x1780, 0x178e, 0x179d, + 0x17af, 0x17ca, 0x17e8, 0x17f2, 0x17fc, 0x1808, 0x1815, 0x1822, + 0x1838, 0x184c, 0x1861, 0x187a, 0x1888, 0x1894, 0x18a0, 0x18ad, + 0x18ba, 0x18ce, 0x18d8, 0x18e1, 0x18ea, 0x18f1, 0x18fa, 0x1900, + 0x1904, 0x190a, 0x192d, 0x1957, 0x1965, 0x196d, 0x197b, 0x19ad, + // Entry 1F40 - 1F7F + 0x19c4, 0x19db, 0x19ed, 0x1a08, 0x1a26, 0x1a4d, 0x1a58, 0x1a60, + 0x1a68, 0x1a82, 0x1a8d, 0x1a90, 0x1a94, 0x1a97, 0x1aab, 0x1ab9, + 0x1aca, 0x1ada, 0x1aec, 0x1af7, 0x1b07, 0x1b13, 0x1b20, 0x1b2e, + 0x1b34, 0x1b59, 0x1b7f, 0x1b96, 0x1bae, 0x1bc3, 0x1bd3, 0x1be4, + 0x1bf1, 0x1c00, 0x1c13, 0x1c1f, 0x1c28, 0x1c3d, 0x1c4f, 0x1c64, + 0x1c77, 0x1c8d, 0x1caf, 0x1cd1, 0x1ce6, 0x1cfe, 0x1d12, 0x1d26, + 0x1d3f, 0x1d58, 0x1d77, 0x1d99, 0x1db8, 0x1dda, 0x1df9, 0x1e1b, + 0x1e39, 0x1e57, 0x1e6d, 0x1e90, 0x1eb2, 0x1ede, 0x1eef, 0x1f0a, + // Entry 1F80 - 1FBF + 0x1f24, 0x1f40, 0x1f66, 0x1f9e, 0x1fdc, 0x1ff5, 0x200c, 0x2029, + 0x2041, 0x2067, 0x208b, 0x20c1, 0x20fd, 0x2112, 0x212d, 0x2146, + 0x2153, 0x2161, 0x2166, 0x2172, 0x2180, 0x218a, 0x2195, 0x219e, + 0x21aa, 0x21b7, 0x21c1, 0x21cc, 0x21dd, 0x21ed, 0x21fb, 0x2208, + 0x2219, 0x2227, 0x222a, 0x2231, 0x2237, 0x2249, 0x225b, 0x226a, + 0x2280, 0x228f, 0x2294, 0x229d, 0x22ac, 0x22bc, 0x22ce, 0x22e1, + 0x22f2, 0x2306, 0x230b, 0x2310, 0x2338, 0x2342, 0x2354, 0x2368, + 0x2370, 0x238b, 0x23a7, 0x23b8, 0x23c4, 0x23d0, 0x23e2, 0x23ea, + // Entry 1FC0 - 1FFF + 0x23f6, 0x2406, 0x2413, 0x2418, 0x2423, 0x242e, 0x244a, 0x246b, + 0x248b, 0x24ac, 0x24ce, 0x24ec, 0x250d, 0x252f, 0x254f, 0x256e, + 0x2591, 0x25b1, 0x25d5, 0x25f9, 0x2620, 0x2644, 0x2669, 0x2693, + 0x26be, 0x26e4, 0x270c, 0x272d, 0x2752, 0x2772, 0x2795, 0x27b7, + 0x27df, 0x2804, 0x2823, 0x2846, 0x2864, 0x2885, 0x28a9, 0x28d3, + 0x28f7, 0x291b, 0x2941, 0x2963, 0x2988, 0x29a9, 0x29c9, 0x29ea, + 0x2a0a, 0x2a31, 0x2a54, 0x2a78, 0x2a9b, 0x2ac1, 0x2ae6, 0x2b0b, + 0x2b30, 0x2b5c, 0x2b7b, 0x2b9a, 0x2bb5, 0x2bd6, 0x2bfe, 0x2c22, + // Entry 2000 - 203F + 0x2c45, 0x2c6b, 0x2c8f, 0x2ca9, 0x2cc2, 0x2cdd, 0x2d01, 0x2d27, + 0x2d4a, 0x2d6e, 0x2d89, 0x2d97, 0x2dbe, 0x2dd1, 0x2ddc, 0x2df9, + 0x2e09, 0x2e24, 0x2e42, 0x2e51, 0x2e63, 0x2e89, 0x2e95, 0x2eab, + 0x2eb6, 0x2ed7, 0x2eec, 0x2f0e, 0x2f19, 0x2f2a, 0x2f3b, 0x2f5c, + 0x2f7d, 0x2f9c, 0x2fb9, 0x2fd7, 0x2fef, 0x3009, 0x3025, 0x3032, + 0x303b, 0x304e, 0x3061, 0x307c, 0x3096, 0x30b1, 0x30cd, 0x30e8, + 0x3104, 0x3124, 0x3141, 0x3161, 0x3182, 0x31a0, 0x31c1, 0x31de, + 0x31fd, 0x321a, 0x3231, 0x324f, 0x326f, 0x328d, 0x329f, 0x32b8, + // Entry 2040 - 207F + 0x32e7, 0x3316, 0x3323, 0x3333, 0x3345, 0x335a, 0x3387, 0x339c, + 0x33b2, 0x33c9, 0x33df, 0x33f5, 0x340b, 0x3421, 0x344e, 0x347e, + 0x34a9, 0x34df, 0x3513, 0x3540, 0x3578, 0x35ae, 0x35d6, 0x360a, + 0x363c, 0x3666, 0x368e, 0x36ba, 0x36e9, 0x36f4, 0x3701, 0x370d, + 0x3724, 0x3732, 0x374a, 0x3762, 0x377f, 0x379c, 0x37b6, 0x37c6, + 0x37d8, 0x37ea, 0x37f6, 0x37fa, 0x3809, 0x381b, 0x382c, 0x3840, + 0x385a, 0x3877, 0x3886, 0x389e, 0x38aa, 0x38b2, 0x38bc, 0x38d3, + 0x38ea, 0x390e, 0x3931, 0x3952, 0x3975, 0x39ab, 0x39e0, 0x3a16, + // Entry 2080 - 20BF + 0x3a21, 0x3a2a, 0x3a35, 0x3a50, 0x3a73, 0x3a97, 0x3ab8, 0x3adb, + 0x3aee, 0x3b03, 0x3b1a, 0x3b26, 0x3b39, 0x3b48, 0x3b5a, 0x035a, + 0x0369, 0x0384, 0x039c, 0x03b2, 0x03d0, 0x03e2, 0x03f8, 0x0407, + 0x041b, 0x043b, 0x044f, 0x046d, 0x0481, 0x049b, 0x04af, 0x04c2, + 0x04dd, 0x04fa, 0x0517, 0x0536, 0x0554, 0x0573, 0x058e, 0x05b2, + 0x05c3, 0x05db, 0x05f0, 0x0601, 0x061a, 0x0634, 0x064f, 0x0668, + 0x0678, 0x0689, 0x0695, 0x069d, 0x06af, 0x06c9, 0x06e7, 0x02e7, + 0x02ef, 0x02f8, 0x0300, 0x0311, 0x0320, 0x032b, 0x0349, 0x035c, + // Entry 20C0 - 20FF + 0x0364, 0x037f, 0x0393, 0x0393, 0x03a4, 0x03b5, 0x03c8, 0x03da, + 0x03ec, 0x03fd, 0x0410, 0x0423, 0x0435, 0x0447, 0x045c, 0x0471, + 0x0488, 0x049f, 0x04b5, 0x04cb, 0x04e3, 0x04fa, 0x0511, 0x0526, + 0x053d, 0x0554, 0x056d, 0x0585, 0x059d, 0x05b4, 0x05cd, 0x05e6, + 0x05fe, 0x0616, 0x0631, 0x064c, 0x0669, 0x0686, 0x06a2, 0x06be, + 0x06dc, 0x06f9, 0x0716, 0x0731, 0x0744, 0x0757, 0x076c, 0x0780, + 0x0794, 0x07a7, 0x07bc, 0x07d1, 0x07e5, 0x07f9, 0x0810, 0x0827, + 0x0840, 0x0859, 0x0871, 0x0889, 0x08a3, 0x08bc, 0x08d5, 0x08ec, + // Entry 2100 - 213F + 0x090e, 0x0930, 0x0952, 0x0974, 0x0996, 0x09b8, 0x09da, 0x09fc, + 0x0a1e, 0x0a40, 0x0a62, 0x0a84, 0x0aa6, 0x0ac8, 0x0aea, 0x0b0c, + 0x0b2e, 0x0b50, 0x0b72, 0x0b94, 0x0bb6, 0x0bd8, 0x0bfa, 0x0c1c, + 0x0c3e, 0x0c60, 0x0c7e, 0x0c9c, 0x0cba, 0x0cd8, 0x0cf6, 0x0d14, + 0x0d32, 0x0d50, 0x0d6e, 0x0d8c, 0x0daa, 0x0dc8, 0x0de6, 0x0e04, + 0x0e22, 0x0e40, 0x0e5e, 0x0e7c, 0x0e9a, 0x0eb8, 0x0ed6, 0x0ef4, + 0x0f12, 0x0f30, 0x0f4e, 0x0f6c, 0x0f88, 0x0fa4, 0x0fc0, 0x0fdc, + 0x0ff8, 0x1014, 0x1030, 0x104c, 0x1068, 0x1084, 0x10a0, 0x10bc, + // Entry 2140 - 217F + 0x10d8, 0x10f4, 0x1110, 0x112c, 0x1148, 0x1164, 0x1180, 0x119c, + 0x11b8, 0x11d4, 0x11f0, 0x120c, 0x1228, 0x1244, 0x1256, 0x1274, + 0x1292, 0x12b2, 0x12d2, 0x12f1, 0x1310, 0x1331, 0x1351, 0x1371, + 0x138f, 0x13a7, 0x13bf, 0x13d9, 0x13f2, 0x140b, 0x1423, 0x143d, + 0x1457, 0x1470, 0x1489, 0x14a4, 0x14c1, 0x14de, 0x14f9, 0x1514, + 0x153d, 0x1566, 0x158d, 0x15b4, 0x15e0, 0x160c, 0x1636, 0x1660, + 0x1681, 0x16a8, 0x16cf, 0x16f0, 0x1710, 0x1736, 0x175c, 0x177c, + 0x179b, 0x17c0, 0x17e5, 0x1804, 0x1822, 0x1846, 0x186a, 0x1888, + // Entry 2180 - 21BF + 0x18ad, 0x18d8, 0x1902, 0x192c, 0x1957, 0x1981, 0x19ab, 0x19d0, + 0x19f4, 0x1a1e, 0x1a47, 0x1a70, 0x1a9a, 0x1ac3, 0x1aec, 0x1b10, + 0x1b36, 0x1b62, 0x1b8e, 0x1bba, 0x1be6, 0x1c12, 0x1c3e, 0x1c64, + 0x1c88, 0x1cb2, 0x1cdc, 0x1d06, 0x1d30, 0x1d5a, 0x1d84, 0x1da8, + 0x1dd2, 0x1e02, 0x1e32, 0x1e62, 0x1e91, 0x1ec0, 0x1ef0, 0x1f1f, + 0x1f4e, 0x1f7d, 0x1fac, 0x1fdb, 0x200a, 0x203a, 0x206a, 0x2094, + 0x20bd, 0x20e6, 0x210d, 0x2134, 0x2152, 0x216e, 0x2197, 0x21c0, + 0x21e2, 0x220a, 0x2232, 0x2253, 0x227a, 0x22a1, 0x22c1, 0x22e7, + // Entry 21C0 - 21FF + 0x230d, 0x232c, 0x2359, 0x2386, 0x23ac, 0x23d8, 0x2404, 0x2429, + 0x2457, 0x2485, 0x24ac, 0x24d8, 0x2504, 0x2529, 0x255b, 0x258d, + 0x25b8, 0x25dd, 0x2601, 0x2623, 0x2646, 0x267b, 0x26b0, 0x26d1, + 0x26e8, 0x26fd, 0x2715, 0x272c, 0x2743, 0x2758, 0x2770, 0x2787, + 0x27ae, 0x27d2, 0x27f9, 0x281d, 0x282d, 0x2843, 0x285a, 0x2873, + 0x2883, 0x289b, 0x28b5, 0x28ce, 0x28d8, 0x28f0, 0x2909, 0x2920, + 0x292f, 0x2947, 0x295d, 0x2972, 0x2982, 0x298d, 0x2999, 0x29a3, + 0x29b9, 0x29cf, 0x29e2, 0x29f6, 0x2a09, 0x2a3b, 0x2a5e, 0x2a90, + // Entry 2200 - 223F + 0x2ac3, 0x2ad7, 0x2afa, 0x2b2d, 0x2b39, 0x2b45, 0x2b66, 0x2b90, + 0x2bab, 0x2bc4, 0x2bea, 0x2c14, 0x2c3e, 0x2c62, 0x2c74, 0x2c86, + 0x2c95, 0x2ca4, 0x2cbc, 0x2cd4, 0x2ce7, 0x2cfa, 0x2d14, 0x2d2e, + 0x2d4e, 0x2d6e, 0x2d8b, 0x2da8, 0x2dcb, 0x2dee, 0x2e0a, 0x2e26, + 0x2e42, 0x2e5e, 0x2e80, 0x2ea2, 0x2ebe, 0x2eda, 0x2efc, 0x2f1e, + 0x2f39, 0x2f54, 0x2f61, 0x2f6e, 0x2f9a, 0x2fa1, 0x2fa8, 0x2fb4, + 0x2fc1, 0x2fda, 0x2fe2, 0x2fee, 0x3009, 0x3025, 0x3041, 0x305d, + 0x3083, 0x30b0, 0x30c6, 0x30dd, 0x30eb, 0x30ff, 0x311e, 0x313d, + // Entry 2240 - 227F + 0x315d, 0x317e, 0x319f, 0x31bf, 0x31d0, 0x31e1, 0x31fb, 0x3214, + 0x322d, 0x3247, 0x3253, 0x326e, 0x328a, 0x32b4, 0x32df, 0x3308, + 0x332b, 0x3354, 0x337e, 0x338a, 0x33af, 0x33d4, 0x33fa, 0x3420, + 0x3445, 0x346a, 0x3490, 0x34b6, 0x34c9, 0x34dd, 0x34f0, 0x3503, + 0x3516, 0x352f, 0x3548, 0x355c, 0x356f, 0x3574, 0x357c, 0x3583, + 0x3588, 0x3592, 0x359c, 0x35a5, 0x35b1, 0x35b4, 0x35c2, 0x35d1, + 0x35dc, 0x35e6, 0x35f5, 0x3604, 0x360e, 0x3623, 0x3634, 0x363b, + 0x3653, 0x365f, 0x3670, 0x3681, 0x3689, 0x36ad, 0x36c6, 0x36e0, + // Entry 2280 - 22BF + 0x36f9, 0x3710, 0x372a, 0x3743, 0x3757, 0x3763, 0x3773, 0x3781, + 0x3789, 0x378d, 0x379b, 0x37a2, 0x37b3, 0x37c5, 0x37d6, 0x37e2, + 0x37ec, 0x37fd, 0x3809, 0x3811, 0x3823, 0x3833, 0x3843, 0x3856, + 0x3866, 0x3877, 0x388b, 0x389c, 0x38ab, 0x38be, 0x38d0, 0x38e2, + 0x38f5, 0x3907, 0x3918, 0x391f, 0x392a, 0x392f, 0x3938, 0x393f, + 0x3945, 0x394b, 0x3952, 0x3957, 0x395c, 0x3962, 0x3968, 0x396e, + 0x3971, 0x3976, 0x397b, 0x3983, 0x398e, 0x3997, 0x399f, 0x39a5, + 0x39b5, 0x39c6, 0x39d6, 0x39e8, 0x39fa, 0x3a0a, 0x3a1a, 0x3a2b, + // Entry 22C0 - 22FF + 0x3a3b, 0x3a4d, 0x3a5f, 0x3a6f, 0x3a7f, 0x3a8f, 0x3aa1, 0x3ab0, + 0x3ac0, 0x3ad0, 0x3ae2, 0x3af1, 0x3afc, 0x3b08, 0x3b13, 0x3b26, + 0x3b3c, 0x3b4b, 0x3b5d, 0x3b6d, 0x3b7e, 0x3b8f, 0x3ba9, 0x3bcd, + 0x3bf1, 0x3c15, 0x3c39, 0x3c5d, 0x3c81, 0x3ca5, 0x3ccb, 0x3ceb, + 0x3d00, 0x3d1f, 0x3d33, 0x3d44, 0x3d4e, 0x3d58, 0x3d62, 0x3d6c, + 0x3d76, 0x3d80, 0x3d9b, 0x3db5, 0x3dd6, 0x3df6, 0x3e07, 0x3e17, + 0x3e2e, 0x3e43, 0x3e59, 0x3e6f, 0x3e79, 0x3e83, 0x3e92, 0x3e98, + 0x3ea6, 0x3eba, 0x3ec0, 0x3ec7, 0x3ecd, 0x3ed1, 0x3ee0, 0x3eeb, + // Entry 2300 - 233F + 0x3ef7, 0x3f0a, 0x3f26, 0x3f41, 0x3f4d, 0x3f5e, 0x3f71, 0x3f82, + 0x3fa2, 0x3fb6, 0x3fcb, 0x3ff4, 0x4012, 0x4032, 0x4045, 0x4058, + 0x4071, 0x4080, 0x408e, 0x40aa, 0x40b0, 0x40bb, 0x40c1, 0x40c6, + 0x40cc, 0x40d0, 0x40d5, 0x40db, 0x40ec, 0x40f3, 0x40fe, 0x4106, + 0x4114, 0x411f, 0x4127, 0x4132, 0x4144, 0x4157, 0x4169, 0x417c, + 0x4190, 0x41a0, 0x41a4, 0x41b1, 0x41c7, 0x41df, 0x41f7, 0x420e, + 0x421c, 0x4228, 0x4231, 0x4235, 0x4240, 0x4257, 0x426d, 0x4273, + 0x427b, 0x429d, 0x42bb, 0x42d9, 0x42ee, 0x4303, 0x4312, 0x4334, + // Entry 2340 - 237F + 0x4345, 0x4354, 0x4384, 0x438f, 0x43a6, 0x43bd, 0x43db, 0x4406, + 0x440f, 0x4430, 0x4450, 0x4462, 0x4477, 0x4484, 0x448a, 0x4490, + 0x449d, 0x44ad, 0x44be, 0x44d7, 0x44df, 0x44f1, 0x44f9, 0x4505, + 0x450a, 0x4512, 0x4525, 0x452a, 0x4533, 0x4543, 0x4547, 0x455b, + 0x4575, 0x457e, 0x4591, 0x45bf, 0x45d4, 0x45e8, 0x45f6, 0x460a, + 0x4618, 0x462e, 0x4645, 0x464f, 0x4657, 0x465f, 0x466a, 0x4675, + 0x4681, 0x468d, 0x469f, 0x46a5, 0x46b7, 0x46c0, 0x46c9, 0x46d3, + 0x46e3, 0x46f3, 0x4709, 0x4711, 0x471f, 0x4733, 0x4744, 0x4755, + // Entry 2380 - 23BF + 0x476c, 0x4777, 0x4791, 0x47a5, 0x47b2, 0x47bf, 0x47dc, 0x47f8, + 0x481a, 0x4833, 0x484a, 0x4861, 0x4869, 0x4883, 0x4895, 0x48ab, + 0x48c2, 0x48d5, 0x48ee, 0x48fb, 0x490e, 0x491c, 0x4930, 0x4945, + 0x495d, 0x4978, 0x498e, 0x49b2, 0x49dc, 0x49f5, 0x4a0d, 0x4a25, + 0x4a49, 0x4a67, 0x4a8c, 0x4a9a, 0x4aa8, 0x4ace, 0x4af4, 0x4b1b, + 0x4b24, 0x4b3e, 0x4b55, 0x4b5c, 0x4b69, 0x4b80, 0x4ba8, 0x4bd6, + 0x4be0, 0x4bf5, 0x4c10, 0x4c36, 0x4c5c, 0x4c7d, 0x4c9e, 0x4cba, + 0x4cd6, 0x4cf5, 0x4d10, 0x4d2d, 0x4d3f, 0x4d52, 0x4d64, 0x4d95, + // Entry 23C0 - 23FF + 0x4dbf, 0x4df0, 0x4e1a, 0x4e48, 0x4e76, 0x4e99, 0x4eb8, 0x4edd, + 0x4eee, 0x4f0e, 0x4f1a, 0x4f35, 0x4f55, 0x4f76, 0x4fa0, 0x4fcb, + 0x4ff6, 0x5022, 0x5053, 0x5085, 0x50af, 0x50da, 0x5104, 0x512f, + 0x5151, 0x5174, 0x5196, 0x51b8, 0x51dc, 0x51ff, 0x5222, 0x5244, + 0x5268, 0x528c, 0x52af, 0x52d2, 0x52f6, 0x531a, 0x5340, 0x5365, + 0x538a, 0x53ae, 0x53d4, 0x53fa, 0x541f, 0x5444, 0x5471, 0x549e, + 0x54cd, 0x54fb, 0x5529, 0x5556, 0x5585, 0x55b4, 0x55e2, 0x5610, + 0x5632, 0x5641, 0x5651, 0x5664, 0x567a, 0x5690, 0x56a6, 0x56c5, + // Entry 2400 - 243F + 0x56e8, 0x5708, 0x572e, 0x5755, 0x5782, 0x5798, 0x57c0, 0x57eb, + 0x5805, 0x5836, 0x5865, 0x5881, 0x58ad, 0x58d0, 0x58f2, 0x591d, + 0x5949, 0x597a, 0x59ab, 0x59de, 0x59e8, 0x5a1b, 0x5a3f, 0x5a5f, + 0x5a7f, 0x5a9f, 0x5abf, 0x5ae5, 0x5b0b, 0x5b31, 0x5b51, 0x5b78, + 0x5b95, 0x5bb8, 0x5bd6, 0x5be7, 0x5bfe, 0x5c2c, 0x5c39, 0x5c44, + 0x5c51, 0x5c6c, 0x5c88, 0x5c9a, 0x5cba, 0x5cd4, 0x5cf7, 0x5d13, + 0x5d20, 0x5d3d, 0x5d50, 0x5d62, 0x5d80, 0x5d8c, 0x5da6, 0x5dc1, + 0x5ddb, 0x5dea, 0x5dfa, 0x5e09, 0x5e16, 0x5e25, 0x5e44, 0x5e57, + // Entry 2440 - 247F + 0x5e64, 0x5e73, 0x5e81, 0x5e9a, 0x5ebc, 0x5ed7, 0x5f06, 0x5f36, + 0x5f56, 0x5f77, 0x5f9d, 0x5fc4, 0x5fe3, 0x6003, 0x6029, 0x6050, + 0x607e, 0x60ad, 0x60d4, 0x60fc, 0x6113, 0x612c, 0x614d, 0x616a, + 0x6187, 0x619b, 0x61b0, 0x61c5, 0x61e0, 0x61fc, 0x6218, 0x6235, + 0x6253, 0x6277, 0x629c, 0x62ba, 0x62cf, 0x62e5, 0x62fb, 0x6312, + 0x6328, 0x633f, 0x6356, 0x636e, 0x6384, 0x639b, 0x63b2, 0x63ca, + 0x63e1, 0x63f9, 0x6411, 0x642a, 0x6440, 0x6457, 0x646e, 0x6486, + 0x649d, 0x64b5, 0x64cd, 0x64e6, 0x64fd, 0x6515, 0x652d, 0x6546, + // Entry 2480 - 24BF + 0x655e, 0x6577, 0x6590, 0x65aa, 0x65c0, 0x65d7, 0x65ee, 0x6606, + 0x661d, 0x6635, 0x664d, 0x6666, 0x667d, 0x6695, 0x66ad, 0x66c6, + 0x66de, 0x66f7, 0x6710, 0x672a, 0x6741, 0x6759, 0x6771, 0x678a, + 0x67a2, 0x67bb, 0x67d4, 0x67ee, 0x6806, 0x681f, 0x6838, 0x6852, + 0x686b, 0x6885, 0x689f, 0x68ba, 0x68d0, 0x68e7, 0x68fe, 0x6916, + 0x692d, 0x6945, 0x695d, 0x6976, 0x698d, 0x69a5, 0x69bd, 0x69d6, + 0x69ee, 0x6a07, 0x6a20, 0x6a3a, 0x6a51, 0x6a69, 0x6a81, 0x6a9a, + 0x6ab2, 0x6acb, 0x6ae4, 0x6afe, 0x6b16, 0x6b2f, 0x6b48, 0x6b62, + // Entry 24C0 - 24FF + 0x6b7b, 0x6b95, 0x6baf, 0x6bca, 0x6be1, 0x6bf9, 0x6c11, 0x6c2a, + 0x6c42, 0x6c5b, 0x6c74, 0x6c8e, 0x6ca6, 0x6cbf, 0x6cd8, 0x6cf2, + 0x6d0b, 0x6d25, 0x6d3f, 0x6d5a, 0x6d72, 0x6d8b, 0x6da4, 0x6dbe, + 0x6dd7, 0x6df1, 0x6e0b, 0x6e26, 0x6e3f, 0x6e59, 0x6e73, 0x6e8e, + 0x6ea8, 0x6ec3, 0x6ede, 0x6efa, 0x6f10, 0x6f27, 0x6f3e, 0x6f56, + 0x6f6d, 0x6f85, 0x6f9d, 0x6fb6, 0x6fcd, 0x6fe5, 0x6ffd, 0x7016, + 0x702e, 0x7047, 0x7060, 0x707a, 0x7091, 0x70a9, 0x70c1, 0x70da, + 0x70f2, 0x710b, 0x7124, 0x713e, 0x7156, 0x716f, 0x7188, 0x71a2, + // Entry 2500 - 253F + 0x71bb, 0x71d5, 0x71ef, 0x720a, 0x7221, 0x7239, 0x7251, 0x726a, + 0x7282, 0x729b, 0x72b4, 0x72ce, 0x72e6, 0x72ff, 0x7318, 0x7332, + 0x734b, 0x7365, 0x737f, 0x739a, 0x73b2, 0x73cb, 0x73e4, 0x73fe, + 0x7417, 0x7431, 0x744b, 0x7466, 0x747f, 0x7499, 0x74b3, 0x74ce, + 0x74e8, 0x7503, 0x751e, 0x753a, 0x7551, 0x7569, 0x7581, 0x759a, + 0x75b2, 0x75cb, 0x75e4, 0x75fe, 0x7616, 0x762f, 0x7648, 0x7662, + 0x767b, 0x7695, 0x76af, 0x76ca, 0x76e2, 0x76fb, 0x7714, 0x772e, + 0x7747, 0x7761, 0x777b, 0x7796, 0x77af, 0x77c9, 0x77e3, 0x77fe, + // Entry 2540 - 257F + 0x7818, 0x7833, 0x784e, 0x786a, 0x7882, 0x789b, 0x78b4, 0x78ce, + 0x78e7, 0x7901, 0x791b, 0x7936, 0x794f, 0x7969, 0x7983, 0x799e, + 0x79b8, 0x79d3, 0x79ee, 0x7a0a, 0x7a23, 0x7a3d, 0x7a57, 0x7a72, + 0x7a8c, 0x7aa7, 0x7ac2, 0x7ade, 0x7af8, 0x7b13, 0x7b2e, 0x7b4a, + 0x7b65, 0x7b81, 0x7b9d, 0x7bba, 0x7bea, 0x7c21, 0x7c4c, 0x7c78, + 0x7ca4, 0x7cc8, 0x7ce7, 0x7d07, 0x7d2d, 0x7d51, 0x7d65, 0x7d7b, + 0x7d96, 0x7db2, 0x7dcd, 0x7de9, 0x7e10, 0x7e31, 0x7e45, 0x7e5b, + 0x7e8a, 0x7ec0, 0x7ee5, 0x7f1f, 0x7f60, 0x7f74, 0x7f89, 0x7fa4, + // Entry 2580 - 25BF + 0x7fc0, 0x7fe0, 0x8001, 0x802a, 0x8054, 0x8073, 0x8092, 0x80ac, + 0x80c6, 0x80e0, 0x80fa, 0x811f, 0x8144, 0x8169, 0x818e, 0x81b7, + 0x81e0, 0x820a, 0x8234, 0x825e, 0x8287, 0x82b1, 0x82db, 0x82fd, + 0x832b, 0x835b, 0x838a, 0x83ba, 0x83d8, 0x83f9, 0x8414, 0x8432, + 0x8454, 0x8479, 0x84a1, 0x84cc, 0x84ed, 0x850a, 0x8536, 0x8562, + 0x858e, 0x85ae, 0x85cd, 0x85e7, 0x860c, 0x8636, 0x865a, 0x867e, + 0x86a2, 0x86c6, 0x86e8, 0x870d, 0x8733, 0x8756, 0x877b, 0x87a1, + 0x87c7, 0x87ef, 0x8816, 0x883e, 0x8863, 0x888a, 0x88b1, 0x88d9, + // Entry 25C0 - 25FF + 0x8901, 0x892b, 0x8954, 0x897e, 0x89a5, 0x89ce, 0x8a13, 0x8a58, + 0x8a9f, 0x8ae8, 0x8b2c, 0x8b74, 0x8bb8, 0x8c00, 0x8c2e, 0x8c5e, + 0x8c8d, 0x8cbe, 0x8d05, 0x8d4c, 0x8d70, 0x8d92, 0x8db7, 0x8ddb, + 0x8e00, 0x8e26, 0x8e45, 0x8e66, 0x8e89, 0x8ea6, 0x8ec4, 0x8ee2, + 0x8ef0, 0x8eff, 0x8f0b, 0x8f19, 0x8f36, 0x8f45, 0x8f5a, 0x8f72, + 0x8f8b, 0x8fa1, 0x8fb8, 0x8fd5, 0x8ff3, 0x9012, 0x9032, 0x9053, + 0x9075, 0x90a0, 0x90cf, 0x90fd, 0x9129, 0x9144, 0x9160, 0x917a, + 0x9198, 0x91bc, 0x91de, 0x91ff, 0x9221, 0x922d, 0x9241, 0x925c, + // Entry 2600 - 263F + 0x927b, 0x9298, 0x92ab, 0x92b6, 0x92d2, 0x92ec, 0x92f8, 0x9306, + 0x9319, 0x9335, 0x934d, 0x9367, 0x93a9, 0x93ea, 0x942e, 0x9471, + 0x94b3, 0x94f4, 0x9538, 0x957b, 0x958d, 0x95a3, 0x95c4, 0x95e4, + 0x9603, 0x961d, 0x9631, 0x9641, 0x9658, 0x966d, 0x96b2, 0x96cc, + 0x96f7, 0x970e, 0x9722, 0x9730, 0x9741, 0x9755, 0x977a, 0x97a9, + 0x97c6, 0x97e4, 0x97f4, 0x9808, 0x9816, 0x9828, 0x983f, 0x9855, + 0x9862, 0x9880, 0x98a2, 0x98c3, 0x98e5, 0x9900, 0x991c, 0x9928, + 0x9942, 0x995d, 0x996c, 0x997b, 0x998c, 0x999e, 0x99b6, 0x99cf, + // Entry 2640 - 267F + 0x99e2, 0x99f3, 0x9a15, 0x9a2a, 0x9a47, 0x9a53, 0x9a62, 0x9a82, + 0x9ab3, 0x9ad4, 0x9ae0, 0x9aed, 0x9b18, 0x9b44, 0x9b61, 0x9b6e, + 0x9b8a, 0x9ba6, 0x9bbf, 0x9bd8, 0x9bf2, 0x9c0c, 0x9c25, 0x9c3e, + 0x9c4a, 0x9c62, 0x9c76, 0x9c9c, 0x9ca7, 0x9cba, 0x9cc5, 0x9cd0, + 0x9cf2, 0x9d15, 0x9d19, 0x9d1d, 0x9d37, 0x9d52, 0x9d6e, 0x9d8b, + 0x9da9, 0x9dcb, 0x9de6, 0x9dfe, 0x9e15, 0x9e29, 0x9e37, 0x9e4e, + 0x9e69, 0x9e7d, 0x9e98, 0x9eb3, 0x9ec7, 0x9ee0, 0x9f12, 0x9f45, + 0x9f6c, 0x9f8c, 0x9fa8, 0x9fcf, 0x9fe7, 0xa001, 0xa014, 0xa029, + // Entry 2680 - 26BF + 0xa03f, 0xa043, 0xa05f, 0xa07c, 0xa094, 0xa0b0, 0xa0d1, 0xa0f7, + 0xa111, 0xa129, 0xa143, 0xa15f, 0xa17c, 0xa197, 0xa1b0, 0xa1cc, + 0xa1e7, 0xa204, 0xa222, 0xa239, 0xa25b, 0xa27c, 0xa2a1, 0xa2ae, + 0xa2d5, 0xa2fd, 0xa32f, 0xa353, 0xa368, 0xa37d, 0xa393, 0xa3b2, + 0xa3c2, 0xa3dc, 0xa3fd, 0xa416, 0xa42b, 0xa440, 0xa452, 0xa46b, + 0xa488, 0xa49d, 0xa4b5, 0xa4cd, 0xa4ef, 0xa511, 0xa533, 0xa563, + 0xa57b, 0xa59a, 0xa5b4, 0xa5c7, 0xa5f1, 0xa60b, 0xa624, 0xa636, + 0xa647, 0xa663, 0xa67e, 0xa68e, 0xa69f, 0xa6c1, 0xa6dd, 0xa6f8, + // Entry 26C0 - 26FF + 0xa718, 0xa737, 0xa756, 0xa76f, 0xa78f, 0xa7a6, 0xa7c4, 0xa7e3, + 0xa804, 0xa824, 0xa83e, 0xa856, 0xa887, 0xa8b8, 0xa8d5, 0xa8f4, + 0xa909, 0xa921, 0xa935, 0xa95b, 0xa97a, 0xa995, 0xa9b0, 0xa9d0, + 0xa9e2, 0xa9fe, 0xaa1c, 0xaa4e, 0xaa6d, 0xaa89, 0xaaa8, 0xaaca, + 0xaaef, 0xab0c, 0xab2c, 0xab59, 0xab89, 0xabb5, 0xabe4, 0xac16, + 0xac4a, 0xac62, 0xac7d, 0xaca3, 0xaccc, 0xace9, 0xad09, 0xad3d, + 0xad71, 0xad91, 0xadb4, 0xadde, 0xae08, 0xae3c, 0xae70, 0xaeb4, + 0xaef8, 0xaf15, 0xaf35, 0xaf62, 0xaf92, 0xafb3, 0xafd7, 0xb000, + // Entry 2700 - 273F + 0xb02c, 0xb040, 0xb057, 0xb080, 0xb0ac, 0xb0c3, 0xb0dd, 0xb102, + 0xb124, 0xb141, 0xb15a, 0xb176, 0xb1a3, 0xb1d3, 0xb1df, 0xb1ea, + 0xb202, 0xb219, 0xb235, 0xb25b, 0xb281, 0xb2a8, 0xb2cf, 0xb2e9, + 0xb303, 0xb31e, 0xb339, 0xb357, 0xb375, 0xb397, 0xb3b9, 0xb3c8, + 0xb3d7, 0xb3e6, 0xb3f7, 0xb412, 0xb42f, 0xb454, 0xb47b, 0xb49f, + 0xb4c5, 0xb4e0, 0xb4fd, 0xb51b, 0xb53b, 0xb55a, 0xb57b, 0xb597, + 0xb5b5, 0xb5d2, 0xb5f0, 0xb5fd, 0xb60c, 0xb625, 0xb640, 0xb655, + 0xb66a, 0xb67d, 0xb694, 0xb6aa, 0xb6d8, 0xb6f4, 0xb70a, 0xb722, + // Entry 2740 - 277F + 0xb729, 0xb733, 0xb742, 0xb751, 0xb75e, 0xb772, 0xb795, 0xb7b7, + 0xb7d9, 0xb802, 0xb82f, 0xb84b, 0xb866, 0xb889, 0xb899, 0xb8a7, + 0xb8bd, 0xb8dc, 0xb908, 0xb927, 0xb946, 0xb961, 0xb980, 0xb99c, + 0xb9bf, 0xb9e9, 0xb9fe, 0xba15, 0xba2f, 0xba58, 0xba84, 0xbaa2, + 0xbac4, 0xbadb, 0xbaed, 0xbb05, 0xbb1b, 0xbb31, 0xbb47, 0xbb5d, + 0xbb73, 0xbb88, 0xbb9b, 0xbbb0, 0xbbc6, 0xbbdc, 0xbbf2, 0xbc08, + 0xbc1e, 0xbc31, 0xbc54, 0xbc75, 0xbc97, 0xbcb7, 0xbcd1, 0xbcee, + 0xbd19, 0xbd43, 0xbd5f, 0xbd7c, 0xbd97, 0xbdb5, 0xbdc2, 0xbdd4, + // Entry 2780 - 27BF + 0xbde6, 0xbdfd, 0xbe14, 0xbe22, 0xbe30, 0xbe3d, 0xbe4a, 0xbe62, + 0xbe74, 0xbe88, 0xbe9c, 0xbeb0, 0xbec4, 0xbed7, 0xbeea, 0xbefd, + 0xbf15, 0xbf2d, 0xbf43, 0xbf59, 0xbf75, 0xbf8b, 0xbfa7, 0xbfc4, + 0xbff3, 0xc029, 0xc04c, 0xc072, 0xc092, 0xc0c0, 0xc0f5, 0xc119, + 0xc152, 0xc192, 0xc1ab, 0xc1cc, 0xc1ed, 0xc219, 0xc246, 0xc26b, + 0xc28c, 0xc2a5, 0xc2bf, 0xc2ec, 0xc31a, 0xc33e, 0xc363, 0xc38f, + 0xc3bc, 0xc3e2, 0xc3fb, 0xc418, 0xc429, 0xc439, 0xc449, 0xc466, + 0xc483, 0xc495, 0xc4b0, 0xc4cf, 0xc4db, 0xc4f0, 0xc514, 0xc53c, + // Entry 27C0 - 27FF + 0xc564, 0xc590, 0xc5bd, 0xc5f0, 0xc60f, 0xc62c, 0xc64c, 0xc66b, + 0xc68b, 0xc6a8, 0xc6c8, 0xc6e8, 0xc708, 0xc728, 0xc74e, 0xc772, + 0xc799, 0xc7bf, 0xc7ea, 0xc819, 0xc83f, 0xc863, 0xc88a, 0xc8b0, + 0x00b0, 0x00d7, 0x00fe, 0x0125, 0x014c, 0x0189, 0x01c4, 0x0202, + 0x023f, 0x0251, 0x0261, 0x02a6, 0x02f0, 0x0335, 0x037f, 0x03a6, + 0x03cb, 0x03f3, 0x041a, 0x043d, 0x045e, 0x0482, 0x04a5, 0x04d7, + 0x050a, 0x053b, 0x056b, 0x0576, 0x0582, 0x058e, 0x059b, 0x05c4, + 0x05da, 0x01da, 0x020d, 0x0240, 0x0274, 0x02a8, 0x02cd, 0x02f0, + // Entry 2800 - 283F + 0x0316, 0x033b, 0x0372, 0x03aa, 0x03df, 0x0415, 0x044a, 0x0480, + 0x04b7, 0x04ef, 0x0519, 0x0544, 0x056c, 0x0595, 0x05bd, 0x05e6, + 0x0610, 0x063b, 0x0651, 0x0668, 0x067c, 0x0691, 0x06a5, 0x06ba, + 0x06d0, 0x06e7, 0x0717, 0x0736, 0x0336, 0x034d, 0x0356, 0x0364, + 0x0378, 0x038d, 0x03a2, 0x03ba, 0x03c7, 0x03f0, 0x041b, 0x0446, + 0x0472, 0x0072, 0x0087, 0x009f, 0x00bc, 0x00e1, 0x00f8, 0x0117, + 0x0130, 0x0140, 0x0140, 0x0173, 0x01a4, 0x01d8, 0x020b, 0x020b, + 0x0228, 0x0246, 0x0264, 0x0285, 0x02a4, 0x02c3, 0x02e4, 0x0303, + // Entry 2840 - 287F + 0x0323, 0x0341, 0x0367, 0x0382, 0x03a2, 0x03c0, 0x03e1, 0x0402, + 0x0421, 0x043e, 0x045e, 0x047d, 0x049c, 0x04bc, 0x04d9, 0x04f8, + 0x0516, 0x0533, 0x054f, 0x056d, 0x058a, 0x05aa, 0x05c7, 0x05e5, + 0x0603, 0x0621, 0x0645, 0x0661, 0x0684, 0x06b1, 0x06cd, 0x06f8, + 0x0719, 0x0742, 0x0760, 0x0781, 0x07a2, 0x07c8, 0x07f2, 0x03f2, + 0x040d, 0x0429, 0x0445, 0x0464, 0x0481, 0x049e, 0x04bd, 0x04da, + 0x04f8, 0x0514, 0x0538, 0x0551, 0x056f, 0x058b, 0x05aa, 0x05c9, + 0x05e6, 0x0601, 0x061f, 0x063c, 0x0659, 0x0677, 0x0692, 0x06af, + // Entry 2880 - 28BF + 0x06cb, 0x06e6, 0x0700, 0x071c, 0x0737, 0x0755, 0x0770, 0x078c, + 0x07a8, 0x07c4, 0x07e6, 0x0800, 0x0821, 0x084c, 0x0866, 0x088f, + 0x08ae, 0x08d5, 0x08f1, 0x0910, 0x092f, 0x0953, 0x097b, 0x017b, + 0x01a1, 0x01c5, 0x01ed, 0x020f, 0x022f, 0x024f, 0x0278, 0x029d, + 0x02c0, 0x02e5, 0x0308, 0x032d, 0x0350, 0x036a, 0x038a, 0x03a7, + 0x03c8, 0x03ec, 0x040c, 0x042a, 0x0448, 0x0463, 0x047c, 0x049b, + 0x04ba, 0x04df, 0x0508, 0x052b, 0x0549, 0x0562, 0x0588, 0x05ae, + 0x05c8, 0x05e0, 0x05fa, 0x0612, 0x062d, 0x0646, 0x0661, 0x067a, + // Entry 28C0 - 28FF + 0x0693, 0x06aa, 0x06c3, 0x06da, 0x06f4, 0x070c, 0x0726, 0x073e, + 0x075a, 0x0774, 0x078f, 0x07a8, 0x07c2, 0x07da, 0x07f5, 0x080e, + 0x0826, 0x083c, 0x0854, 0x086a, 0x0883, 0x089a, 0x08b1, 0x08c6, + 0x08de, 0x08f4, 0x090c, 0x0922, 0x093c, 0x0954, 0x096d, 0x0984, + 0x099c, 0x09b2, 0x09ca, 0x09e0, 0x09f9, 0x0a10, 0x0a29, 0x0a40, + 0x0a59, 0x0a70, 0x0a94, 0x0ab6, 0x0ada, 0x0afc, 0x0b23, 0x0b48, + 0x0b6c, 0x0b8e, 0x0bb0, 0x0bd0, 0x0bf6, 0x0c1a, 0x0c3e, 0x0c60, + 0x0c7b, 0x0c94, 0x0cb6, 0x0cd6, 0x0cfb, 0x0d1e, 0x0d42, 0x0d64, + // Entry 2900 - 293F + 0x0d87, 0x0da8, 0x0dcc, 0x0dee, 0x0e13, 0x0e36, 0x0e59, 0x0e7a, + 0x0e9b, 0x0eba, 0x0ede, 0x0f00, 0x0f24, 0x0f46, 0x0f6d, 0x0f92, + 0x0fb6, 0x0fd8, 0x0ffe, 0x1022, 0x1048, 0x106c, 0x1090, 0x10b2, + 0x10d6, 0x10f8, 0x111c, 0x113e, 0x114f, 0x1162, 0x1175, 0x118a, + 0x119e, 0x11b2, 0x11ca, 0x11f2, 0x1218, 0x1242, 0x126a, 0x1283, + 0x12a2, 0x12c1, 0x12e4, 0x1305, 0x0305, 0x0320, 0x0346, 0x036e, + 0x038d, 0x03a5, 0x03b5, 0x03d1, 0x03e9, 0x0402, 0x041b, 0x0434, + 0x044c, 0x0465, 0x047e, 0x0497, 0x04af, 0x04c8, 0x04e1, 0x04fa, + // Entry 2940 - 297F + 0x0513, 0x052b, 0x0544, 0x055e, 0x0577, 0x0590, 0x05a9, 0x05c1, + 0x05db, 0x05f5, 0x060f, 0x0628, 0x0642, 0x065c, 0x0675, 0x068e, + 0x06a7, 0x06c1, 0x06da, 0x06f4, 0x070d, 0x0725, 0x073e, 0x0756, + 0x076f, 0x0788, 0x0388, 0x03a0, 0x03a0, 0x03b9, 0x03b9, 0x03cb, + 0x03de, 0x03f2, 0x0405, 0x041a, 0x043c, 0x044f, 0x0462, 0x0476, + 0x048a, 0x049f, 0x04b2, 0x04c5, 0x04d8, 0x04f2, 0x0507, 0x051a, + 0x053c, 0x0556, 0x056a, 0x057d, 0x0591, 0x05ac, 0x05bf, 0x05d9, + 0x05eb, 0x05ff, 0x061b, 0x0636, 0x0649, 0x065c, 0x066f, 0x068a, + // Entry 2980 - 29BF + 0x06a5, 0x06b8, 0x06ca, 0x06dd, 0x06f1, 0x0705, 0x0720, 0x0739, + 0x074c, 0x0760, 0x0774, 0x0787, 0x079b, 0x07af, 0x07c3, 0x07d6, + 0x07e9, 0x07fc, 0x080f, 0x082d, 0x0841, 0x0853, 0x0865, 0x0065, + 0x0090, 0x00a7, 0x00a7, 0x00c0, 0x00d5, 0x00ea, 0x00ff, 0x0114, + 0x012a, 0x013f, 0x0154, 0x0169, 0x017e, 0x0194, 0x01b0, 0x01c5, + 0x01da, 0x01f0, 0x0205, 0x021b, 0x0231, 0x0247, 0x025c, 0x0272, + 0x0288, 0x029f, 0x02b5, 0x02b5, 0x02ca, 0x02df, 0x02f4, 0x030a, + 0x0320, 0x0335, 0x034a, 0x034a, 0x035f, 0x0374, 0x0389, 0x039f, + // Entry 29C0 - 29FF + 0x03b5, 0x03ca, 0x03df, 0x03df, 0x03f4, 0x0409, 0x041e, 0x0434, + 0x044a, 0x045f, 0x0474, 0x0074, 0x008a, 0x00a0, 0x00b6, 0x00cd, + 0x00e4, 0x00fa, 0x0110, 0x0110, 0x0125, 0x013a, 0x014f, 0x0165, + 0x017b, 0x0190, 0x01a5, 0x01a5, 0x01ba, 0x01cf, 0x01e4, 0x01fa, + 0x0210, 0x0225, 0x023a, 0x023a, 0x024f, 0x0264, 0x0279, 0x028f, + 0x02a5, 0x02ba, 0x02cf, 0x02cf, 0x02e4, 0x02f9, 0x030e, 0x0324, + 0x033a, 0x034f, 0x0364, 0x0364, 0x0380, 0x039c, 0x03b9, 0x03d5, + 0x03f2, 0x040e, 0x042a, 0x0446, 0x0462, 0x047e, 0x0499, 0x04b5, + // Entry 2A00 - 2A3F + 0x04d1, 0x04ed, 0x0509, 0x0525, 0x0542, 0x055f, 0x057c, 0x059b, + 0x05b9, 0x05d8, 0x05f3, 0x060f, 0x062e, 0x0654, 0x0671, 0x068d, + 0x06b1, 0x06d5, 0x06f6, 0x0720, 0x073f, 0x0765, 0x077e, 0x0798, + 0x07b8, 0x07d9, 0x07f4, 0x0816, 0x0831, 0x084b, 0x0866, 0x0873, + 0x088f, 0x08ac, 0x08bd, 0x08c8, 0x08da, 0x08f5, 0x0901, 0x090e, + 0x091e, 0x092c, 0x0947, 0x095c, 0x0970, 0x097b, 0x0990, 0x09a5, + 0x09c0, 0x09dc, 0x09f0, 0x0a04, 0x0a20, 0x0a3d, 0x0a52, 0x0a68, + 0x0a80, 0x0a99, 0x0ab0, 0x0ac8, 0x0adf, 0x0af7, 0x0b18, 0x0b39, + // Entry 2A40 - 2A7F + 0x0b55, 0x0b62, 0x0b78, 0x0b86, 0x0b90, 0x0ba9, 0x0bb5, 0x0bbf, + 0x0bcb, 0x0bdb, 0x0bf1, 0x0c08, 0x0c15, 0x0c2a, 0x0c35, 0x0c42, + 0x0c58, 0x0c69, 0x0c7d, 0x0c86, 0x0c93, 0x0ca1, 0x0cc5, 0x0cda, + 0x0cf0, 0x00f0, 0x0102, 0x0113, 0x0129, 0x013f, 0x0157, 0x0169, + 0x0178, 0x0189, 0x019e, 0x01b3, 0x01c9, 0x01d9, 0x01ee, 0x0203, + 0x0217, 0x022b, 0x0241, 0x0256, 0x0267, 0x0279, 0x028e, 0x02a3, + 0x02b8, 0x02cd, 0x02dd, 0x02ec, 0x02ec, 0x02fd, 0x030c, 0x031c, + 0x032d, 0x033f, 0x0353, 0x0368, 0x037d, 0x038d, 0x03a0, 0x03b3, + // Entry 2A80 - 2ABF + 0x03d9, 0x03e8, 0x03f7, 0x0407, 0x0420, 0x042f, 0x0445, 0x045b, + 0x046d, 0x047d, 0x049a, 0x04ad, 0x04c0, 0x04d5, 0x04e9, 0x04f9, + 0x050a, 0x0519, 0x0528, 0x0537, 0x054c, 0x0561, 0x0571, 0x0583, + 0x0598, 0x05ad, 0x05c4, 0x05d5, 0x05e8, 0x05fc, 0x0610, 0x062c, + 0x0647, 0x0657, 0x0676, 0x0694, 0x06a4, 0x06c1, 0x06dc, 0x06f0, + 0x0704, 0x0714, 0x0731, 0x0745, 0x0759, 0x0776, 0x0793, 0x07a8, + 0x07bd, 0x07cd, 0x07dd, 0x0804, 0x0821, 0x083e, 0x085a, 0x086d, + 0x0880, 0x0895, 0x08b1, 0x08c1, 0x08df, 0x08ef, 0x0900, 0x091d, + // Entry 2AC0 - 2AFF + 0x093a, 0x0957, 0x0973, 0x0990, 0x09ad, 0x09ca, 0x09e7, 0x0a05, + 0x0a23, 0x0a42, 0x0a61, 0x0a73, 0x0a92, 0x0ab1, 0x02b1, 0x02c3, + 0x02d6, 0x02e8, 0x02fc, 0x0311, 0x0324, 0x0336, 0x0348, 0x035a, + 0x036d, 0x0381, 0x0395, 0x03ac, 0x03c0, 0x03d2, 0x03e6, 0x03fd, + 0x0411, 0x0425, 0x0438, 0x044c, 0x0469, 0x0488, 0x049a, 0x04b3, + 0x04c6, 0x04da, 0x04f0, 0x0504, 0x0518, 0x0530, 0x0544, 0x055a, + 0x056b, 0x0583, 0x0599, 0x05ab, 0x05bf, 0x05d3, 0x05e6, 0x05f9, + 0x060d, 0x0620, 0x0635, 0x064a, 0x0661, 0x0675, 0x0688, 0x069e, + // Entry 2B00 - 2B3F + 0x06b3, 0x06c5, 0x06e0, 0x06fb, 0x0715, 0x072d, 0x0741, 0x0753, + 0x0767, 0x077d, 0x0790, 0x07a4, 0x07ba, 0x07cd, 0x07e0, 0x07f5, + 0x0807, 0x081c, 0x0831, 0x0843, 0x0858, 0x086a, 0x087c, 0x088e, + 0x08a1, 0x08b4, 0x08c7, 0x08da, 0x08ee, 0x0903, 0x0918, 0x092e, + 0x0940, 0x0953, 0x0967, 0x097b, 0x098e, 0x09a1, 0x09b6, 0x09cd, + 0x09eb, 0x09ff, 0x0a12, 0x0a24, 0x0a36, 0x0a4d, 0x0a60, 0x0a74, + 0x0a87, 0x0a9b, 0x0aae, 0x0ac0, 0x0ad4, 0x0af0, 0x0b07, 0x0b21, + 0x0b35, 0x0b48, 0x0b5b, 0x0b6d, 0x0b81, 0x0b95, 0x0ba9, 0x0bbe, + // Entry 2B40 - 2B7F + 0x0bd2, 0x0be6, 0x0bf9, 0x0c0d, 0x0c22, 0x0c35, 0x0c48, 0x0c5a, + 0x0c6c, 0x0c80, 0x0c96, 0x0ca8, 0x0cba, 0x0ccd, 0x0cdf, 0x0cf3, + 0x0d06, 0x0d1d, 0x0d30, 0x0d45, 0x0d5a, 0x0d6f, 0x0d84, 0x0d97, + 0x0dae, 0x0dc2, 0x0dd6, 0x0dea, 0x0dff, 0x0e13, 0x0e30, 0x0e46, + 0x0e59, 0x0e6b, 0x0e7e, 0x0e93, 0x0ea8, 0x0ebb, 0x0ecd, 0x0ee2, + 0x0ef6, 0x0f08, 0x0f1a, 0x0f2d, 0x0f40, 0x0f53, 0x0f68, 0x0f7e, + 0x0f91, 0x0fa4, 0x0fb7, 0x0fd1, 0x0fe7, 0x0ffa, 0x100d, 0x1020, + 0x1034, 0x1048, 0x1068, 0x107b, 0x108e, 0x10a2, 0x10b5, 0x10cb, + // Entry 2B80 - 2BBF + 0x10e8, 0x10fb, 0x110f, 0x1122, 0x1135, 0x1147, 0x1159, 0x116c, + 0x1183, 0x1197, 0x11aa, 0x11bd, 0x11d0, 0x11e4, 0x1203, 0x121a, + 0x122e, 0x1241, 0x1254, 0x1267, 0x127a, 0x128e, 0x12a1, 0x12b6, + 0x12cb, 0x12df, 0x12f8, 0x130b, 0x1320, 0x1333, 0x1345, 0x1358, + 0x136b, 0x137f, 0x1394, 0x13a9, 0x13bd, 0x03bd, 0x03ec, 0x041c, + 0x0456, 0x0491, 0x04c0, 0x04f5, 0x052a, 0x055e, 0x0598, 0x05d3, + 0x060d, 0x0637, 0x0237, 0x0248, 0x0259, 0x026e, 0x0278, 0x029b, + 0x02b5, 0x02cd, 0x02e4, 0x02f6, 0x0309, 0x0322, 0x033c, 0x034f, + // Entry 2BC0 - 2BFF + 0x0363, 0x037c, 0x0396, 0x03b3, 0x03d1, 0x03dc, 0x03e5, 0x0400, + 0x041c, 0x0439, 0x0457, 0x0478, 0x049a, 0x04b3, 0x04cd, 0x04d6, + 0x04fa, 0x0515, 0x0534, 0x0544, 0x0558, 0x056c, 0x0582, 0x0597, + 0x05ac, 0x05c0, 0x05d6, 0x05ec, 0x0601, 0x061c, 0x0638, 0x0657, + 0x0675, 0x0690, 0x06ab, 0x06b4, 0x06cd, 0x06f8, 0x071c, 0x0752, + 0x0776, 0x0789, 0x07b9, 0x07cd, 0x07e4, 0x07fb, 0x081e, 0x0827, + 0x083c, 0x085b, 0x0876, 0x0076, 0x008d, 0x009e, 0x00b5, 0x00c6, + 0x00dd, 0x00ee, 0x0105, 0x0116, 0x012d, 0x013e, 0x0150, 0x0162, + // Entry 2C00 - 2C3F + 0x0174, 0x0186, 0x0198, 0x01aa, 0x01bc, 0x01ce, 0x01e0, 0x01f2, + 0x0204, 0x0216, 0x0228, 0x023a, 0x024c, 0x025e, 0x0270, 0x0282, + 0x0294, 0x02a6, 0x02b8, 0x02ca, 0x02dc, 0x02ee, 0x0306, 0x0318, + 0x032a, 0x033c, 0x034e, 0x0360, 0x0372, 0x0384, 0x0396, 0x03a8, + 0x03ba, 0x03cc, 0x03de, 0x03f0, 0x0402, 0x0414, 0x0426, 0x0438, + 0x044a, 0x045c, 0x046e, 0x0480, 0x0492, 0x04a4, 0x04b6, 0x04c8, + 0x04da, 0x04ec, 0x04fe, 0x0510, 0x0522, 0x0534, 0x054c, 0x055e, + 0x0576, 0x0588, 0x05a0, 0x05b2, 0x05c4, 0x05d6, 0x05e8, 0x05fa, + // Entry 2C40 - 2C7F + 0x060c, 0x0624, 0x0636, 0x0648, 0x065a, 0x066c, 0x067d, 0x068f, + 0x06a7, 0x06bf, 0x02bf, 0x02ec, 0x031e, 0x0341, 0x0369, 0x0380, + 0x039e, 0x03b3, 0x03d2, 0x03e9, 0x03fa, 0x0411, 0x0422, 0x0439, + 0x044a, 0x0461, 0x0472, 0x0489, 0x049a, 0x04ac, 0x04be, 0x04d0, + 0x04e2, 0x04f4, 0x0506, 0x0518, 0x052a, 0x053c, 0x054e, 0x0560, + 0x0572, 0x0584, 0x0596, 0x05a8, 0x05ba, 0x05cc, 0x05de, 0x05f0, + 0x0602, 0x0614, 0x0626, 0x0638, 0x064a, 0x0662, 0x0674, 0x0686, + 0x0698, 0x06aa, 0x06bc, 0x06ce, 0x06e0, 0x06f2, 0x0704, 0x0716, + // Entry 2C80 - 2CBF + 0x0728, 0x073a, 0x074c, 0x075e, 0x0770, 0x0782, 0x0794, 0x07a6, + 0x07b8, 0x07ca, 0x07dc, 0x07ee, 0x0800, 0x0812, 0x0824, 0x0836, + 0x0848, 0x085a, 0x086c, 0x087e, 0x0890, 0x08a8, 0x08ba, 0x08d2, + 0x08e4, 0x08fc, 0x090e, 0x0920, 0x0932, 0x0944, 0x0956, 0x0968, + 0x0980, 0x0992, 0x09a4, 0x09b6, 0x09c8, 0x09d9, 0x09eb, 0x0a03, + 0x0a1b, 0x0a2d, 0x0a3f, 0x0a51, 0x0a63, 0x0a76, 0x0a9c, 0x0ab3, + 0x0ad1, 0x0ae6, 0x02e6, 0x02f7, 0x0308, 0x0319, 0x032a, 0x033b, + 0x034c, 0x035d, 0x036e, 0x037f, 0x0390, 0x03a1, 0x03b2, 0x03c3, + // Entry 2CC0 - 2CFF + 0x03d4, 0x03e6, 0x03f8, 0x040a, 0x041b, 0x042c, 0x043d, 0x044e, + 0x045f, 0x0470, 0x0481, 0x0493, 0x04a5, 0x04b7, 0x04c9, 0x04db, + 0x04ed, 0x04ff, 0x0512, 0x0525, 0x0537, 0x0548, 0x0559, 0x056b, + 0x057c, 0x058e, 0x05a0, 0x05b2, 0x01b2, 0x01c6, 0x01df, 0x01f8, + 0x020b, 0x0224, 0x023d, 0x0251, 0x026a, 0x027d, 0x0297, 0x02b0, + 0x02c9, 0x02e1, 0x02fc, 0x0317, 0x0330, 0x0343, 0x0356, 0x036e, + 0x0386, 0x0398, 0x03af, 0x03c2, 0x03d5, 0x03ed, 0x0402, 0x0417, + 0x042c, 0x0441, 0x0454, 0x0463, 0x0473, 0x0483, 0x0494, 0x04a4, + // Entry 2D00 - 2D3F + 0x04b3, 0x04c4, 0x04d4, 0x04e3, 0x04f3, 0x0504, 0x0514, 0x0524, + 0x0533, 0x0544, 0x0554, 0x0564, 0x0574, 0x0584, 0x0594, 0x05a3, + 0x05b0, 0x05c8, 0x05e2, 0x05fa, 0x0615, 0x0634, 0x064e, 0x066c, + 0x0687, 0x06a6, 0x06bf, 0x06d7, 0x06f2, 0x070d, 0x0727, 0x0741, + 0x0760, 0x077f, 0x0798, 0x07b3, 0x07ce, 0x07ee, 0x0807, 0x081f, + 0x0838, 0x0850, 0x0868, 0x087d, 0x0895, 0x08ab, 0x08c6, 0x08e4, + 0x0901, 0x0919, 0x0932, 0x0945, 0x0959, 0x096b, 0x097f, 0x0992, + 0x09a4, 0x09b7, 0x09cb, 0x01cb, 0x01ee, 0x0211, 0x0230, 0x024f, + // Entry 2D40 - 2D7F + 0x0270, 0x0290, 0x02af, 0x02d1, 0x02f3, 0x0314, 0x0336, 0x0357, + 0x0379, 0x039b, 0x03bc, 0x03db, 0x03ed, 0x03ff, 0x0411, 0x0423, + 0x0435, 0x0448, 0x045a, 0x046d, 0x047f, 0x0492, 0x04a5, 0x04b8, + 0x04ca, 0x04dd, 0x04f1, 0x0505, 0x0517, 0x0529, 0x053c, 0x0550, + 0x0567, 0x057e, 0x0595, 0x05ac, 0x05be, 0x05d0, 0x05e2, 0x01e2, + 0x01ee, 0x01fb, 0x0208, 0x0216, 0x0223, 0x0231, 0x023f, 0x024c, + 0x025b, 0x026a, 0x0278, 0x0287, 0x0296, 0x02a4, 0x02b3, 0x02bf, + 0x02cb, 0x02d7, 0x02e3, 0x02f0, 0x02fc, 0x0309, 0x0316, 0x0323, + // Entry 2D80 - 2DBF + 0x0331, 0x033e, 0x034b, 0x0358, 0x0365, 0x0372, 0x0380, 0x038e, + 0x039d, 0x03ad, 0x03ba, 0x03c6, 0x03c6, 0x03de, 0x03f6, 0x040e, + 0x0426, 0x043e, 0x0456, 0x046e, 0x0486, 0x049e, 0x04b6, 0x04ce, + 0x04e6, 0x04fe, 0x0516, 0x052e, 0x0546, 0x0561, 0x057b, 0x0596, + 0x05b0, 0x05ca, 0x05e4, 0x05fd, 0x0617, 0x0631, 0x064d, 0x0669, + 0x0685, 0x06a1, 0x06bb, 0x06d8, 0x06f4, 0x0711, 0x072d, 0x0749, + 0x0765, 0x0780, 0x079c, 0x07b8, 0x07d6, 0x07f4, 0x0812, 0x0830, + 0x084c, 0x0868, 0x088c, 0x08af, 0x00af, 0x00ca, 0x00e5, 0x0102, + // Entry 2DC0 - 2DFF + 0x011e, 0x013a, 0x0155, 0x0172, 0x018f, 0x01ab, 0x01c6, 0x01e2, + 0x01fe, 0x021b, 0x0237, 0x0254, 0x0271, 0x028c, 0x02a9, 0x02c5, + 0x02e4, 0x0300, 0x031f, 0x0340, 0x0366, 0x0383, 0x03a4, 0x03c0, + 0x03dd, 0x03fe, 0x0420, 0x0440, 0x0460, 0x0480, 0x049c, 0x04b8, + 0x04d5, 0x04ef, 0x050d, 0x0525, 0x053b, 0x055d, 0x0582, 0x05a7, + 0x05cb, 0x05ef, 0x0613, 0x0639, 0x065e, 0x066e, 0x0687, 0x06a0, + 0x06bb, 0x06d5, 0x06ef, 0x0708, 0x0723, 0x073e, 0x0758, 0x076d, + 0x0786, 0x079f, 0x07ba, 0x07d4, 0x07ee, 0x0803, 0x0817, 0x082c, + // Entry 2E00 - 2E3F + 0x0840, 0x0854, 0x0868, 0x087b, 0x088f, 0x08a3, 0x08b9, 0x08cf, + 0x08e5, 0x08fb, 0x090f, 0x0926, 0x093c, 0x0953, 0x0969, 0x097f, + 0x0995, 0x09aa, 0x09c0, 0x09d6, 0x09ee, 0x0a06, 0x0a1e, 0x0a36, + 0x0a4c, 0x0a6b, 0x0a89, 0x0a9f, 0x0ab5, 0x0aca, 0x0adf, 0x0af6, + 0x0b0c, 0x0b22, 0x0b37, 0x0b4e, 0x0b65, 0x0b7b, 0x0b90, 0x0ba6, + 0x0bbc, 0x0bd3, 0x0be9, 0x0c00, 0x0c17, 0x0c2c, 0x0c43, 0x0c59, + 0x0c72, 0x0c88, 0x0ca1, 0x0cbc, 0x0cdc, 0x0cf3, 0x0d0b, 0x0d21, + 0x0d39, 0x0d53, 0x0d6e, 0x0d85, 0x0da0, 0x0db6, 0x0dcc, 0x0de2, + // Entry 2E40 - 2E7F + 0x0dfb, 0x0e11, 0x0e29, 0x0e3e, 0x0e54, 0x0e6b, 0x0e85, 0x0e9f, + 0x0eb6, 0x0ed1, 0x0eed, 0x0f07, 0x0f21, 0x0f38, 0x0f51, 0x0f6c, + 0x0f87, 0x0fa1, 0x0fb5, 0x0fcd, 0x0fe5, 0x0fff, 0x1018, 0x1031, + 0x1049, 0x1063, 0x107d, 0x1096, 0x10aa, 0x10d2, 0x10fb, 0x1121, + 0x1147, 0x116b, 0x1190, 0x11b5, 0x11dc, 0x1206, 0x122e, 0x1257, + 0x1280, 0x1289, 0x1293, 0x129c, 0x12b2, 0x12c4, 0x12d6, 0x12e8, + 0x12fa, 0x130c, 0x131f, 0x1332, 0x1345, 0x1358, 0x136b, 0x137e, + 0x1391, 0x13a4, 0x13b7, 0x13ca, 0x13dd, 0x13f0, 0x1403, 0x1416, + // Entry 2E80 - 2EBF + 0x1429, 0x143c, 0x144f, 0x1462, 0x1475, 0x1488, 0x149b, 0x14ae, + 0x14c1, 0x14d4, 0x14e7, 0x14fa, 0x150d, 0x1520, 0x1533, 0x1546, + 0x1559, 0x156c, 0x157f, 0x1592, 0x15a5, 0x15b8, 0x15cb, 0x15de, + 0x15f1, 0x1604, 0x1617, 0x162a, 0x022a, 0x0237, 0x0244, 0x0250, + 0x025b, 0x0268, 0x0273, 0x027d, 0x028c, 0x0298, 0x02a3, 0x02ae, + 0x02ba, 0x02c8, 0x02d6, 0x02e2, 0x02ee, 0x02f9, 0x0305, 0x0312, + 0x0320, 0x032b, 0x033c, 0x034e, 0x035e, 0x036b, 0x037b, 0x038b, + 0x0399, 0x03a5, 0x03b2, 0x03be, 0x03cc, 0x03db, 0x03e9, 0x03f5, + // Entry 2EC0 - 2EFF + 0x0401, 0x040d, 0x0418, 0x0423, 0x042d, 0x0438, 0x0444, 0x0450, + 0x045f, 0x046b, 0x0479, 0x0489, 0x0496, 0x04a1, 0x04ac, 0x04bb, + 0x04c8, 0x04d7, 0x04e3, 0x04f3, 0x04fe, 0x050b, 0x0518, 0x0524, + 0x0530, 0x053c, 0x0549, 0x0556, 0x0560, 0x056c, 0x0578, 0x0583, + 0x0591, 0x059d, 0x05a9, 0x05b6, 0x05c4, 0x05d2, 0x05dd, 0x05ed, + 0x05f8, 0x0606, 0x0614, 0x0620, 0x062c, 0x0637, 0x0645, 0x0650, + 0x065c, 0x066a, 0x0675, 0x0684, 0x0690, 0x06ba, 0x06e3, 0x070c, + 0x0737, 0x0761, 0x078b, 0x07b4, 0x07df, 0x080a, 0x0834, 0x085d, + // Entry 2F00 - 2F3F + 0x0889, 0x08b5, 0x08e3, 0x0911, 0x093e, 0x096b, 0x099a, 0x09c8, + 0x09f6, 0x0a22, 0x0a52, 0x0a82, 0x0ab4, 0x0ae5, 0x0aef, 0x0af8, + 0x0b01, 0x0b0b, 0x0b14, 0x0b1d, 0x0b26, 0x0b37, 0x0b46, 0x0b4f, + 0x0b65, 0x0b7b, 0x0b92, 0x0ba7, 0x0bb9, 0x0bc7, 0x0bd0, 0x0bdb, + 0x0be4, 0x0bed, 0x0bf6, 0x0bff, 0x0c08, 0x0c12, 0x0c1d, 0x0c26, + 0x0c2f, 0x0c3a, 0x0c45, 0x0c4e, 0x0c57, 0x0c60, 0x0c6a, 0x0c74, + 0x0c7e, 0x0c88, 0x0c93, 0x0c9c, 0x0ca5, 0x0cae, 0x0cb7, 0x0cc0, + 0x0ccb, 0x0cd4, 0x0cdd, 0x0ce6, 0x0cf7, 0x0d08, 0x0d18, 0x0d29, + // Entry 2F40 - 2F7F + 0x0d38, 0x0d47, 0x0d55, 0x0d64, 0x0d73, 0x0d8a, 0x0d93, 0x0d9d, + 0x0da7, 0x0db1, 0x0dbb, 0x0dcc, 0x0de5, 0x0dee, 0x0df7, 0x0e02, + 0x0e0b, 0x0e14, 0x0e1d, 0x0e28, 0x0e31, 0x0e3a, 0x0e48, 0x0e51, + 0x0e5a, 0x0e65, 0x0e6e, 0x0e77, 0x0e85, 0x0e91, 0x0e9d, 0x0ea6, + 0x0eaf, 0x0eb8, 0x0ec1, 0x0ed1, 0x0eda, 0x0ee3, 0x0eec, 0x0ef5, + 0x0efe, 0x0f07, 0x0f10, 0x0f21, 0x0f2a, 0x0f33, 0x0f3c, 0x0f46, + 0x0f4f, 0x0f5e, 0x0f68, 0x0f72, 0x0f7b, 0x0f84, 0x0f8e, 0x0f97, + 0x0fa0, 0x0fa9, 0x0fb2, 0x0fc1, 0x0fd0, 0x0ff8, 0x1020, 0x104a, + // Entry 2F80 - 2FBF + 0x1073, 0x109c, 0x10c4, 0x10ee, 0x1118, 0x1141, 0x1169, 0x1194, + 0x11bf, 0x11ec, 0x1219, 0x1245, 0x1271, 0x129f, 0x12cc, 0x12f9, + 0x1324, 0x1353, 0x1382, 0x13b3, 0x13e3, 0x1413, 0x1442, 0x1473, + 0x14a4, 0x14d4, 0x14ff, 0x152e, 0x1538, 0x0138, 0x0158, 0x0178, + 0x01a0, 0x01bb, 0x01cf, 0x01e4, 0x01f9, 0x0216, 0x022f, 0x0244, + 0x0256, 0x026d, 0x0284, 0x02a1, 0x02b5, 0x02cc, 0x02e2, 0x0302, + 0x0317, 0x0331, 0x034c, 0x035e, 0x037a, 0x038d, 0x03a3, 0x03bc, + 0x03d6, 0x03f6, 0x0414, 0x0432, 0x0448, 0x045d, 0x0471, 0x0489, + // Entry 2FC0 - 2FFF + 0x049e, 0x04c1, 0x04d8, 0x04ef, 0x0507, 0x051f, 0x0534, 0x0549, + 0x0562, 0x057d, 0x059c, 0x05b7, 0x05ce, 0x05e3, 0x05fa, 0x0613, + 0x0634, 0x065b, 0x0673, 0x0693, 0x06a9, 0x06c2, 0x06de, 0x06fa, + 0x0711, 0x0728, 0x0740, 0x0760, 0x077d, 0x079b, 0x039b, 0x03a9, + 0x03b7, 0x03c4, 0x03d2, 0x03e1, 0x03f0, 0x03fe, 0x040d, 0x041b, + 0x0429, 0x0436, 0x0444, 0x0453, 0x0461, 0x0470, 0x047e, 0x048c, + 0x0499, 0x04a7, 0x04b5, 0x04c2, 0x04d0, 0x04df, 0x04ee, 0x04fc, + 0x050b, 0x051b, 0x052b, 0x053a, 0x054a, 0x0559, 0x0568, 0x0576, + // Entry 3000 - 303F + 0x0585, 0x0595, 0x05a4, 0x05b4, 0x05c3, 0x05d2, 0x05e0, 0x05ef, + 0x05fe, 0x060c, 0x061b, 0x062a, 0x0639, 0x0647, 0x0656, 0x0666, + 0x0675, 0x0684, 0x0693, 0x06a1, 0x06b0, 0x06c0, 0x06cf, 0x06de, + 0x06ed, 0x06fb, 0x070a, 0x071a, 0x0729, 0x0739, 0x0748, 0x0757, + 0x0765, 0x0774, 0x0784, 0x0793, 0x07a3, 0x07b2, 0x07c1, 0x07cf, + 0x07de, 0x07ed, 0x07fc, 0x080a, 0x0819, 0x0829, 0x0838, 0x0847, + 0x0856, 0x0864, 0x0873, 0x0883, 0x0892, 0x08a2, 0x08b2, 0x08c1, + 0x08d1, 0x08e2, 0x08f3, 0x0903, 0x0914, 0x0924, 0x0934, 0x0943, + // Entry 3040 - 307F + 0x0953, 0x0964, 0x0974, 0x0985, 0x0995, 0x09a5, 0x09b4, 0x09c4, + 0x09d4, 0x09e3, 0x09f3, 0x0a03, 0x0a13, 0x0a22, 0x0a32, 0x0a43, + 0x0a53, 0x0a63, 0x0a73, 0x0a82, 0x0a92, 0x0aa2, 0x0ab2, 0x0ac1, + 0x0ad1, 0x0ae2, 0x0af2, 0x0b03, 0x0b13, 0x0b23, 0x0b32, 0x0b42, + 0x0b52, 0x0b62, 0x0b71, 0x0b81, 0x0b91, 0x0ba1, 0x0bb0, 0x0bc0, + 0x0bd1, 0x0be1, 0x0bf1, 0x0c01, 0x0c10, 0x0c20, 0x0c31, 0x0c41, + 0x0c51, 0x0c61, 0x0c70, 0x0c80, 0x0c91, 0x0ca1, 0x0cb2, 0x0cc2, + 0x0cd2, 0x0ce1, 0x0cf1, 0x0d02, 0x0d12, 0x0d23, 0x0d33, 0x0d43, + // Entry 3080 - 30BF + 0x0d52, 0x0d62, 0x0d72, 0x0d82, 0x0d91, 0x0da1, 0x0db2, 0x0dc2, + 0x0dd2, 0x0de1, 0x0df1, 0x0e02, 0x0e12, 0x0e21, 0x0e30, 0x0e3e, + 0x0e4d, 0x0e5d, 0x0e6c, 0x0e7c, 0x0e8b, 0x0e9a, 0x0ea8, 0x0eb7, + 0x0ec7, 0x0ed7, 0x0ee6, 0x0ef6, 0x0f05, 0x0f14, 0x0f22, 0x0f31, + 0x0f40, 0x0f4e, 0x0f5d, 0x0f6c, 0x0f7a, 0x0f89, 0x0f99, 0x0fa8, + 0x0fb7, 0x0fc6, 0x0fd4, 0x0fe3, 0x0ff2, 0x1001, 0x100f, 0x101e, + 0x102d, 0x103c, 0x104a, 0x1059, 0x1068, 0x1076, 0x1085, 0x1094, + 0x10a3, 0x10b1, 0x10c0, 0x10d0, 0x10df, 0x10ee, 0x10fd, 0x110b, + // Entry 30C0 - 30FF + 0x111a, 0x1129, 0x1138, 0x1146, 0x1155, 0x1165, 0x1175, 0x1184, + 0x1194, 0x11a3, 0x11b2, 0x11c0, 0x11cf, 0x11de, 0x11ed, 0x11fb, + 0x120a, 0x1219, 0x1228, 0x1237, 0x1246, 0x1254, 0x1263, 0x1273, + 0x1282, 0x1291, 0x12a0, 0x12ae, 0x12bd, 0x12cd, 0x12dc, 0x12eb, + 0x12fa, 0x1308, 0x1317, 0x1327, 0x1336, 0x1346, 0x1355, 0x1364, + 0x1372, 0x1381, 0x1391, 0x13a0, 0x13af, 0x13be, 0x13cc, 0x13db, + 0x13ea, 0x13f8, 0x1407, 0x1416, 0x1425, 0x1433, 0x1442, 0x1452, + 0x1461, 0x1470, 0x147f, 0x148d, 0x149c, 0x14ac, 0x14bb, 0x14cb, + // Entry 3100 - 313F + 0x14da, 0x14e9, 0x14f7, 0x1506, 0x1516, 0x1526, 0x1535, 0x1545, + 0x1554, 0x1563, 0x1571, 0x1580, 0x158f, 0x159d, 0x15ac, 0x15bb, + 0x15ca, 0x15d8, 0x15e7, 0x15f7, 0x1606, 0x1616, 0x1626, 0x1635, + 0x1645, 0x1656, 0x1666, 0x1677, 0x1687, 0x1697, 0x16a6, 0x16b6, + 0x16c7, 0x16d7, 0x16e8, 0x16f8, 0x1708, 0x1717, 0x1727, 0x1737, + 0x1746, 0x1756, 0x1766, 0x1776, 0x1785, 0x1795, 0x17a6, 0x17b6, + 0x17c6, 0x17d6, 0x17e5, 0x17f5, 0x1806, 0x1816, 0x1826, 0x1836, + 0x1845, 0x1855, 0x1865, 0x1875, 0x1884, 0x1894, 0x18a4, 0x18b3, + // Entry 3140 - 317F + 0x18c3, 0x18d3, 0x18e3, 0x18f2, 0x1902, 0x1913, 0x1923, 0x1933, + 0x1943, 0x1952, 0x1962, 0x1973, 0x1984, 0x1994, 0x19a5, 0x19b5, + 0x19c5, 0x19d4, 0x19e4, 0x19f5, 0x1a05, 0x1a15, 0x1a25, 0x1a35, + 0x1a45, 0x1a54, 0x1a64, 0x1a74, 0x1a83, 0x1a92, 0x1aa0, 0x1aaf, + 0x1abf, 0x1ace, 0x1ade, 0x1aed, 0x1afb, 0x1b0a, 0x1b1a, 0x1b29, + 0x1b39, 0x1b48, 0x1b57, 0x1b65, 0x1b74, 0x1b83, 0x1b91, 0x1ba0, + 0x1baf, 0x1bbe, 0x1bcc, 0x1bdb, 0x1beb, 0x1bfa, 0x1c0a, 0x1c1a, + 0x1c29, 0x1c39, 0x1c4a, 0x1c5a, 0x1c6b, 0x1c7b, 0x1c8b, 0x1c9a, + // Entry 3180 - 31BF + 0x1caa, 0x1cbb, 0x1ccb, 0x1cdc, 0x1cec, 0x1cfb, 0x1d0b, 0x1d1b, + 0x1d2a, 0x1d3a, 0x1d4a, 0x1d5a, 0x1d69, 0x1d79, 0x1d8a, 0x1d9a, + 0x1daa, 0x1dba, 0x1dc9, 0x1dd9, 0x1dea, 0x1dfa, 0x1e09, 0x1e18, + 0x1e26, 0x1e35, 0x1e45, 0x1e55, 0x1e64, 0x1e74, 0x1e83, 0x1e92, + 0x1ea0, 0x1eaf, 0x1ebf, 0x1ecf, 0x1ede, 0x1eee, 0x1efd, 0x1f0c, + 0x1f1a, 0x1f29, 0x1f38, 0x1f46, 0x1f55, 0x1f64, 0x1f73, 0x1f81, + 0x1f90, 0x1fa0, 0x1faf, 0x1fbe, 0x1fcd, 0x1fdb, 0x1fea, 0x1ffa, + 0x2009, 0x2018, 0x2027, 0x2035, 0x2044, 0x2054, 0x2064, 0x2073, + // Entry 31C0 - 31FF + 0x2083, 0x2092, 0x20a1, 0x20af, 0x20be, 0x20ce, 0x20de, 0x20ed, + 0x20fd, 0x210c, 0x211b, 0x2129, 0x2138, 0x2147, 0x2156, 0x2164, + 0x2173, 0x2182, 0x2191, 0x219f, 0x21ae, 0x21be, 0x21cd, 0x21dc, + 0x21eb, 0x21f9, 0x2208, 0x2218, 0x2227, 0x2237, 0x2246, 0x2255, + 0x2263, 0x2272, 0x2282, 0x2291, 0x22a1, 0x22b0, 0x22bf, 0x22cd, + 0x22dc, 0x22eb, 0x22fa, 0x2308, 0x2317, 0x2326, 0x2335, 0x2343, + 0x2352, 0x2362, 0x2371, 0x2381, 0x2391, 0x23a0, 0x23b1, 0x23c1, + 0x23d2, 0x23e2, 0x23f2, 0x2401, 0x2411, 0x2422, 0x2433, 0x2443, + // Entry 3200 - 323F + 0x2454, 0x2464, 0x2474, 0x2483, 0x2493, 0x24a3, 0x24b3, 0x24c2, + 0x24d2, 0x24e2, 0x24f2, 0x2501, 0x2511, 0x2522, 0x2532, 0x2543, + 0x2553, 0x2563, 0x2573, 0x2582, 0x2592, 0x25a3, 0x25b3, 0x25c4, + 0x25d4, 0x25e4, 0x25f3, 0x2603, 0x2613, 0x2622, 0x2632, 0x2642, + 0x2652, 0x2661, 0x2671, 0x2682, 0x2692, 0x26a2, 0x26b2, 0x26c1, + 0x26d1, 0x26e2, 0x26f3, 0x2703, 0x2714, 0x2724, 0x2734, 0x2743, + 0x2753, 0x2764, 0x2775, 0x2785, 0x2796, 0x27a6, 0x27b6, 0x27c5, + 0x27d5, 0x27e5, 0x27f4, 0x2804, 0x2815, 0x2825, 0x2836, 0x2846, + // Entry 3240 - 327F + 0x2856, 0x2865, 0x2875, 0x2886, 0x2897, 0x28a7, 0x28b7, 0x28c7, + 0x28d6, 0x28e6, 0x28f6, 0x2905, 0x2915, 0x2924, 0x2934, 0x2943, + 0x2952, 0x2961, 0x296f, 0x297e, 0x298e, 0x299e, 0x29ad, 0x29bd, + 0x29cc, 0x29db, 0x29e9, 0x29f8, 0x2a07, 0x2a15, 0x2a24, 0x2a33, + 0x2a42, 0x2a50, 0x2a5f, 0x2a6f, 0x2a7e, 0x2a8e, 0x2a9d, 0x2aab, + 0x2aba, 0x2ac9, 0x2ad7, 0x2ae6, 0x2af5, 0x2b04, 0x2b12, 0x2b21, + 0x2b31, 0x2b40, 0x2b50, 0x2b5f, 0x2b6e, 0x2b7c, 0x2b8b, 0x2b9b, + 0x2baa, 0x2bba, 0x2bc9, 0x2bd8, 0x2be6, 0x2bf5, 0x2c04, 0x2c12, + // Entry 3280 - 32BF + 0x2c21, 0x2c30, 0x2c3f, 0x2c4d, 0x2c5c, 0x2c6c, 0x2c7b, 0x2c8a, + 0x2c99, 0x2ca7, 0x2cb6, 0x2cc6, 0x2cd5, 0x2ce4, 0x2cf3, 0x2d01, + 0x2d10, 0x2d20, 0x2d30, 0x2d3f, 0x2d4f, 0x2d5e, 0x2d6d, 0x2d7b, + 0x2d8a, 0x2d9a, 0x2da9, 0x2db9, 0x2dc8, 0x2dd7, 0x2de5, 0x2df4, + 0x2e03, 0x2e11, 0x2e20, 0x2e2f, 0x2e3e, 0x2e4c, 0x2e5b, 0x2e6b, + 0x2e7a, 0x2e89, 0x2e98, 0x2ea6, 0x2eb5, 0x2ec5, 0x2ed4, 0x2ee4, + 0x2ef4, 0x2f03, 0x2f13, 0x2f24, 0x2f35, 0x2f45, 0x2f56, 0x2f66, + 0x2f76, 0x2f85, 0x2f95, 0x2fa5, 0x2fb4, 0x2fc4, 0x2fd4, 0x2fe3, + // Entry 32C0 - 32FF + 0x2ff3, 0x3003, 0x3012, 0x3022, 0x3033, 0x3043, 0x3053, 0x3063, + 0x3072, 0x3082, 0x3093, 0x30a3, 0x30b3, 0x30c3, 0x30d2, 0x30e2, + 0x30f3, 0x3103, 0x3114, 0x3124, 0x3134, 0x3143, 0x3153, 0x3164, + 0x3174, 0x3184, 0x3194, 0x31a4, 0x31b3, 0x31c3, 0x31d2, 0x31e2, + 0x31f3, 0x3203, 0x3213, 0x3223, 0x3232, 0x3242, 0x3253, 0x3263, + 0x3272, 0x3281, 0x328f, 0x329e, 0x32ae, 0x32bd, 0x32cd, 0x32dc, + 0x32eb, 0x32f9, 0x3308, 0x3318, 0x3327, 0x3337, 0x3346, 0x3355, + 0x3363, 0x3372, 0x3381, 0x338f, 0x339e, 0x33ad, 0x33bc, 0x33ca, + // Entry 3300 - 333F + 0x33d9, 0x33e9, 0x33f8, 0x3407, 0x3416, 0x3424, 0x3433, 0x3443, + 0x3452, 0x3462, 0x3472, 0x3481, 0x3491, 0x34a2, 0x34b2, 0x34c3, + 0x34d3, 0x34e3, 0x34f2, 0x3502, 0x3512, 0x3522, 0x3531, 0x3541, + 0x3551, 0x3560, 0x3570, 0x3580, 0x3590, 0x359f, 0x35af, 0x35bf, + 0x35cf, 0x35de, 0x35ee, 0x35ff, 0x360f, 0x361f, 0x362f, 0x363e, + 0x364e, 0x365f, 0x366f, 0x3680, 0x3690, 0x36a0, 0x36af, 0x36bf, + 0x36cf, 0x36df, 0x36ee, 0x36fe, 0x370e, 0x371e, 0x372d, 0x373d, + 0x374e, 0x375e, 0x376e, 0x377e, 0x378d, 0x379d, 0x37ae, 0x37be, + // Entry 3340 - 337F + 0x37ce, 0x37de, 0x37ed, 0x37fd, 0x380e, 0x381f, 0x382f, 0x3840, + 0x3850, 0x3860, 0x386f, 0x387f, 0x388f, 0x389f, 0x38ae, 0x38be, + 0x38ce, 0x38dd, 0x38ed, 0x38fe, 0x390e, 0x391e, 0x392e, 0x393d, + 0x394d, 0x395e, 0x396e, 0x397e, 0x398d, 0x399e, 0x39ae, 0x39be, + 0x39ce, 0x39dd, 0x39ed, 0x39fd, 0x3a0d, 0x3a1c, 0x3a2c, 0x3a3c, + 0x3a4c, 0x3a5b, 0x3a6b, 0x3a7c, 0x3a8c, 0x3a9c, 0x3aac, 0x3abb, + 0x3acb, 0x3adc, 0x3aec, 0x3afc, 0x3b0c, 0x3b1b, 0x3b2b, 0x3b3b, + 0x3b4a, 0x3b5a, 0x3b6a, 0x3b7a, 0x3b89, 0x3b99, 0x3ba9, 0x3bb9, + // Entry 3380 - 33BF + 0x3bc8, 0x3bd8, 0x3be9, 0x3bf9, 0x3c09, 0x3c19, 0x3c28, 0x3c38, + 0x3c49, 0x3c59, 0x3c69, 0x3c79, 0x3c88, 0x3c98, 0x3ca9, 0x3cb9, + 0x3cca, 0x3cda, 0x3cea, 0x3cf9, 0x3d09, 0x3d19, 0x3d29, 0x3d38, + 0x3d48, 0x3d58, 0x3d68, 0x3d77, 0x3d87, 0x3d98, 0x3da8, 0x3db8, + 0x3dc8, 0x3dd7, 0x3de7, 0x3df8, 0x3e08, 0x3e17, 0x3e26, 0x3e34, + 0x3e43, 0x3e53, 0x3e62, 0x3e72, 0x3e81, 0x3e90, 0x3e9e, 0x3ead, + 0x3ebc, 0x3eca, 0x3ed9, 0x3ee8, 0x3ef7, 0x3f05, 0x3f14, 0x3f24, + 0x3f33, 0x3f42, 0x3f51, 0x3f5f, 0x3f6e, 0x3f7e, 0x3f8d, 0x3f9c, + // Entry 33C0 - 33FF + 0x3fab, 0x3fb9, 0x3fc8, 0x3fd8, 0x3fe8, 0x3ff7, 0x4007, 0x4017, + 0x4027, 0x4036, 0x4046, 0x4055, 0x4064, 0x4072, 0x4081, 0x4090, + 0x409f, 0x40ad, 0x40bc, 0x40cc, 0x40db, 0x40ea, 0x40f9, 0x4107, + 0x4116, 0x4126, 0x4135, 0x4144, 0x4153, 0x4161, 0x4170, 0x4180, + 0x4190, 0x419f, 0x41af, 0x41bf, 0x41cf, 0x41de, 0x41ee, 0x41fd, + 0x420c, 0x421a, 0x4229, 0x4238, 0x4247, 0x4255, 0x4264, 0x4274, + 0x4283, 0x4292, 0x42a1, 0x42af, 0x42be, 0x42ce, 0x42dd, 0x42ed, + 0x42fd, 0x430c, 0x431c, 0x432d, 0x433e, 0x434e, 0x435f, 0x4370, + // Entry 3400 - 343F + 0x4380, 0x4391, 0x43a1, 0x43b1, 0x43c0, 0x43d0, 0x43e0, 0x43f0, + 0x43ff, 0x440f, 0x4420, 0x4430, 0x4440, 0x4450, 0x445f, 0x446f, + 0x447f, 0x448f, 0x449e, 0x44ae, 0x44bf, 0x44d0, 0x44e0, 0x44f1, + 0x4502, 0x4512, 0x4522, 0x4532, 0x4541, 0x4551, 0x4561, 0x4570, + 0x4580, 0x4591, 0x45a1, 0x45b1, 0x45c1, 0x45d0, 0x45e0, 0x45f1, + 0x4601, 0x4611, 0x4621, 0x4630, 0x4640, 0x4651, 0x4662, 0x4672, + 0x4683, 0x4694, 0x46a4, 0x46b5, 0x46c5, 0x46d5, 0x46e4, 0x46f4, + 0x4704, 0x4714, 0x4723, 0x4733, 0x4742, 0x4751, 0x475f, 0x476e, + // Entry 3440 - 347F + 0x477e, 0x478e, 0x479d, 0x47ad, 0x47bd, 0x47cc, 0x47db, 0x47ea, + 0x47f8, 0x4807, 0x4816, 0x4825, 0x4833, 0x4842, 0x4852, 0x4861, + 0x4870, 0x487f, 0x488d, 0x489c, 0x48ac, 0x48bc, 0x48cb, 0x48db, + 0x48eb, 0x48fb, 0x490a, 0x491a, 0x4929, 0x4938, 0x4946, 0x4955, + 0x4964, 0x4973, 0x4981, 0x4990, 0x49a0, 0x49af, 0x49be, 0x49cd, + 0x49db, 0x49ea, 0x49fa, 0x4a09, 0x0209, 0x0217, 0x0224, 0x0232, + 0x0241, 0x024f, 0x025d, 0x026c, 0x027a, 0x0287, 0x0296, 0x02a4, + 0x02b3, 0x02c1, 0x02ce, 0x02dc, 0x02eb, 0x02f9, 0x0306, 0x0314, + // Entry 3480 - 34BF + 0x0322, 0x0331, 0x033f, 0x034e, 0x035d, 0x036a, 0x0377, 0x0386, + 0x0394, 0x03a2, 0x03b0, 0x03be, 0x03cc, 0x03da, 0x03e8, 0x03f5, + 0x0402, 0x0411, 0x041f, 0x042d, 0x043c, 0x0449, 0x0456, 0x0465, + 0x0473, 0x0480, 0x048f, 0x049d, 0x04ac, 0x04bb, 0x04c9, 0x04d8, + 0x04e6, 0x04f6, 0x0505, 0x0512, 0x0112, 0x0120, 0x012e, 0x013d, + 0x014b, 0x0159, 0x0168, 0x0176, 0x0184, 0x0193, 0x01a1, 0x01af, + 0x01be, 0x01cd, 0x01dc, 0x01ec, 0x01fa, 0x0208, 0x0216, 0x0224, + 0x0233, 0x0241, 0x0250, 0x025e, 0x026c, 0x027b, 0x0289, 0x0297, + // Entry 34C0 - 34FF + 0x02a6, 0x02b4, 0x02c3, 0x02d0, 0x02de, 0x02eb, 0x02f9, 0x0306, + 0x0313, 0x0320, 0x032e, 0x033c, 0x034a, 0x0361, 0x0377, 0x038f, + 0x03a6, 0x03bd, 0x03d5, 0x03eb, 0x0405, 0x0414, 0x0424, 0x0434, + 0x0444, 0x0455, 0x0465, 0x0476, 0x0486, 0x0497, 0x04a8, 0x04ba, + 0x04cb, 0x04db, 0x04eb, 0x04fb, 0x050c, 0x051d, 0x052f, 0x053f, + 0x054f, 0x055f, 0x0570, 0x0580, 0x0591, 0x05a1, 0x05b2, 0x05c2, + 0x05d2, 0x05e3, 0x05f3, 0x0603, 0x0615, 0x0625, 0x0635, 0x0645, + 0x0656, 0x0664, 0x0673, 0x0682, 0x0692, 0x06a1, 0x06b1, 0x06c0, + // Entry 3500 - 353F + 0x06d0, 0x06df, 0x06ef, 0x06ff, 0x0710, 0x0720, 0x072f, 0x073e, + 0x074d, 0x075d, 0x076d, 0x077e, 0x078d, 0x079c, 0x07ab, 0x07bb, + 0x07ca, 0x07da, 0x07e9, 0x07f9, 0x0808, 0x0817, 0x0827, 0x0836, + 0x0845, 0x0856, 0x0865, 0x0874, 0x0883, 0x0893, 0x08a1, 0x08b0, + 0x08c1, 0x08d0, 0x08e0, 0x08ef, 0x08ff, 0x090e, 0x091e, 0x092d, + 0x093d, 0x094d, 0x095e, 0x096f, 0x097f, 0x098e, 0x099d, 0x09ac, + 0x09bc, 0x09cc, 0x09dd, 0x09ec, 0x09fb, 0x0a0a, 0x0a1a, 0x0a29, + 0x0a39, 0x0a48, 0x0a58, 0x0a67, 0x0a76, 0x0a86, 0x0a95, 0x0aa4, + // Entry 3540 - 357F + 0x0ab4, 0x0ac5, 0x0ad4, 0x0ae3, 0x0af2, 0x0b02, 0x0b11, 0x0b21, + 0x0b31, 0x0b41, 0x0b52, 0x0b62, 0x0b73, 0x0b83, 0x0b94, 0x0ba5, + 0x0bb7, 0x0bc8, 0x0bd8, 0x0be8, 0x0bf8, 0x0c09, 0x0c1a, 0x0c2c, + 0x0c3c, 0x0c4c, 0x0c5c, 0x0c6d, 0x0c7d, 0x0c8e, 0x0c9e, 0x0caf, + 0x0cbf, 0x0ccf, 0x0ce0, 0x0cf0, 0x0d00, 0x0d12, 0x0d22, 0x0d32, + 0x0d42, 0x0d53, 0x0d61, 0x0d70, 0x0d7f, 0x0d8f, 0x0d9e, 0x0dae, + 0x0dbd, 0x0dcd, 0x0ddc, 0x0dec, 0x0dfc, 0x0e0d, 0x0e1d, 0x0e2c, + 0x0e3b, 0x0e4a, 0x0e5a, 0x0e6a, 0x0e7b, 0x0e8a, 0x0e99, 0x0ea8, + // Entry 3580 - 35BF + 0x0eb8, 0x0ec7, 0x0ed7, 0x0ee6, 0x0ef6, 0x0f05, 0x0f14, 0x0f24, + 0x0f33, 0x0f42, 0x0f53, 0x0f62, 0x0f71, 0x0f80, 0x0f90, 0x0f9e, + 0x0fad, 0x0fbe, 0x0fcd, 0x0fdd, 0x0fec, 0x0ffc, 0x100b, 0x101b, + 0x102a, 0x103a, 0x104a, 0x105b, 0x106b, 0x107c, 0x108b, 0x109a, + 0x10a9, 0x10b9, 0x10c9, 0x10da, 0x10e9, 0x10f8, 0x1107, 0x1117, + 0x1126, 0x1136, 0x1145, 0x1155, 0x1164, 0x1173, 0x1183, 0x1192, + 0x11a1, 0x11b2, 0x11c1, 0x11d0, 0x11df, 0x11ef, 0x11fd, 0x120c, + 0x121d, 0x122c, 0x123c, 0x124b, 0x125b, 0x126a, 0x127a, 0x1289, + // Entry 35C0 - 35FF + 0x1299, 0x12a9, 0x12ba, 0x12cb, 0x12db, 0x12ec, 0x12fb, 0x130a, + 0x1319, 0x1329, 0x1339, 0x134a, 0x1359, 0x1368, 0x1377, 0x1387, + 0x1396, 0x13a6, 0x13b5, 0x13c5, 0x13d4, 0x13e3, 0x13f3, 0x1402, + 0x1411, 0x1422, 0x1434, 0x1443, 0x1453, 0x1462, 0x1471, 0x1481, + 0x1490, 0x14a7, 0x14b0, 0x14bd, 0x14ce, 0x14e3, 0x14f8, 0x150e, + 0x151e, 0x152e, 0x153d, 0x154b, 0x155a, 0x1568, 0x1576, 0x1585, + 0x1595, 0x15a4, 0x15b3, 0x15c2, 0x15d1, 0x15df, 0x15ec, 0x15f9, + 0x1608, 0x1616, 0x1624, 0x1631, 0x1640, 0x164f, 0x165d, 0x1672, + // Entry 3600 - 363F + 0x1687, 0x0287, 0x02a5, 0x02c1, 0x02de, 0x02f9, 0x031d, 0x033f, + 0x035b, 0x0375, 0x0392, 0x03ad, 0x03d1, 0x03f3, 0x0416, 0x0437, + 0x045a, 0x047b, 0x04a5, 0x04cd, 0x04f1, 0x0513, 0x0536, 0x0557, + 0x0579, 0x0599, 0x05c2, 0x05e9, 0x060c, 0x062d, 0x065f, 0x068f, + 0x06a9, 0x06c1, 0x06e5, 0x0707, 0x0726, 0x0743, 0x0762, 0x077f, + 0x079e, 0x07bb, 0x07de, 0x07ff, 0x0822, 0x0843, 0x086d, 0x0895, + 0x08b2, 0x08ca, 0x08ee, 0x0916, 0x093f, 0x0950, 0x0976, 0x0991, + 0x09ad, 0x09c8, 0x09eb, 0x0a09, 0x0a2c, 0x0a4b, 0x0a64, 0x0a7e, + // Entry 3640 - 367F + 0x0a8d, 0x0a9d, 0x0ab8, 0x0ad1, 0x0aed, 0x0b07, 0x0b23, 0x0b3d, + 0x0b59, 0x0b73, 0x0b8f, 0x0ba9, 0x0bd4, 0x0bfd, 0x0c18, 0x0c31, + 0x0c4d, 0x0c67, 0x0c83, 0x0c9d, 0x0cb9, 0x0cd3, 0x0cee, 0x0d07, + 0x0d23, 0x0d3d, 0x0d5d, 0x0d7b, 0x0d9c, 0x0dbb, 0x0ddd, 0x0dff, + 0x0e1b, 0x0e3f, 0x0e4d, 0x0e5c, 0x0e6a, 0x0e79, 0x0e88, 0x0e98, + 0x0ea8, 0x0eb6, 0x0ec6, 0x0ed4, 0x0ee3, 0x0ef2, 0x0f02, 0x0f13, + 0x0f25, 0x0f37, 0x0f47, 0x0f58, 0x0f6a, 0x0f78, 0x0f88, 0x0f97, + 0x0fa8, 0x0fb7, 0x0fc9, 0x0fda, 0x0feb, 0x0ffb, 0x100c, 0x101b, + // Entry 3680 - 36BF + 0x102d, 0x103d, 0x104d, 0x105d, 0x106c, 0x107d, 0x108e, 0x109f, + 0x10b0, 0x10c1, 0x10d1, 0x10e1, 0x10f1, 0x1101, 0x1110, 0x111f, + 0x112e, 0x113d, 0x114e, 0x115e, 0x116e, 0x1182, 0x1193, 0x11a3, + 0x11b3, 0x11c4, 0x11d3, 0x11e3, 0x11f2, 0x1201, 0x1210, 0x121f, + 0x122f, 0x123e, 0x124f, 0x125f, 0x126f, 0x127e, 0x128d, 0x129c, + 0x12ab, 0x12bc, 0x12cc, 0x12dc, 0x12ec, 0x12fd, 0x130f, 0x1322, + 0x1334, 0x1347, 0x1363, 0x1381, 0x138e, 0x139d, 0x13a8, 0x13b3, + 0x13c2, 0x13d5, 0x03d5, 0x03fa, 0x0420, 0x0446, 0x046d, 0x0490, + // Entry 36C0 - 36FF + 0x04b4, 0x04d7, 0x04fb, 0x0525, 0x0549, 0x056c, 0x058f, 0x05b8, + 0x05ec, 0x061a, 0x0647, 0x0674, 0x06a7, 0x06d4, 0x06fb, 0x0721, + 0x0747, 0x0773, 0x0793, 0x07ac, 0x07ce, 0x07f6, 0x0815, 0x0836, + 0x085d, 0x088d, 0x08ba, 0x08de, 0x0901, 0x0928, 0x094d, 0x0973, + 0x0997, 0x09b0, 0x09c7, 0x09de, 0x09f3, 0x0a10, 0x0a2b, 0x0a49, + 0x0a65, 0x0a8e, 0x0ab5, 0x0ad1, 0x0aed, 0x0b04, 0x0b19, 0x0b30, + 0x0b45, 0x0b5c, 0x0b71, 0x0b88, 0x0b9d, 0x0bc8, 0x0bf1, 0x0c08, + 0x0c1d, 0x0c45, 0x0c6b, 0x0c8d, 0x0cad, 0x0cd8, 0x0d01, 0x0d37, + // Entry 3700 - 373F + 0x0d6b, 0x0d88, 0x0da3, 0x0dca, 0x0def, 0x0e1e, 0x0e4b, 0x0e6b, + 0x0e89, 0x0ea0, 0x0eb5, 0x0ee9, 0x0f1b, 0x0f3f, 0x0f61, 0x0f8a, + 0x0fb1, 0x0fe5, 0x1017, 0x1042, 0x106b, 0x1089, 0x10a5, 0x10c5, + 0x10e3, 0x110e, 0x1137, 0x114e, 0x1163, 0x1184, 0x11a3, 0x11c9, + 0x11ed, 0x1225, 0x125b, 0x1274, 0x128b, 0x12a2, 0x12b7, 0x12ce, + 0x12e3, 0x12fb, 0x1311, 0x1323, 0x1339, 0x134f, 0x1365, 0x137b, + 0x1391, 0x13af, 0x13c5, 0x13da, 0x13f8, 0x1414, 0x1432, 0x144e, + 0x146c, 0x1491, 0x14b4, 0x14d1, 0x14ec, 0x150a, 0x1526, 0x1544, + // Entry 3740 - 377F + 0x1560, 0x157e, 0x159a, 0x15bf, 0x15d4, 0x15f5, 0x1612, 0x162d, + 0x164a, 0x167b, 0x1697, 0x16bc, 0x16df, 0x16fe, 0x171b, 0x1741, + 0x1767, 0x178b, 0x17ad, 0x17cf, 0x17ef, 0x180e, 0x182b, 0x184a, + 0x1867, 0x1886, 0x18a3, 0x18cd, 0x18f5, 0x191f, 0x1947, 0x1971, + 0x1999, 0x19c3, 0x19eb, 0x1a15, 0x1a3d, 0x1a5d, 0x1a81, 0x1a9e, + 0x1abe, 0x1ae2, 0x02e2, 0x02ff, 0x031c, 0x0344, 0x035c, 0x0375, + 0x038c, 0x03a6, 0x03be, 0x03be, 0x03e0, 0x0405, 0x0426, 0x0449, + 0x046b, 0x048d, 0x04af, 0x04ce, 0x04ef, 0x0504, 0x0519, 0x0533, + // Entry 3780 - 37BF + 0x0548, 0x055d, 0x0572, 0x058b, 0x05a1, 0x05b8, 0x05ce, 0x05e5, + 0x05ff, 0x0615, 0x062c, 0x0642, 0x0659, 0x0670, 0x0688, 0x069f, + 0x06b7, 0x06cd, 0x06e4, 0x06fa, 0x0711, 0x0727, 0x073d, 0x0754, + 0x076a, 0x0781, 0x0797, 0x07ad, 0x07c3, 0x07da, 0x07f0, 0x0806, + 0x081f, 0x0838, 0x0851, 0x086a, 0x0884, 0x089e, 0x08b8, 0x08d2, + 0x08ec, 0x00ec, 0x010c, 0x0129, 0x014c, 0x016e, 0x018d, 0x01b2, + 0x01ca, 0x01e6, 0x01fc, 0x0215, 0x0215, 0x0227, 0x023a, 0x024c, + 0x025f, 0x0271, 0x0284, 0x0296, 0x02a9, 0x02bb, 0x02ce, 0x02e0, + // Entry 37C0 - 37FF + 0x02f2, 0x0304, 0x0317, 0x0329, 0x033b, 0x034e, 0x0362, 0x0375, + 0x0387, 0x039a, 0x03ac, 0x03c3, 0x03d5, 0x03e7, 0x03f9, 0x040c, + 0x041e, 0x0430, 0x0441, 0x0452, 0x0463, 0x0474, 0x0485, 0x0497, + 0x04a9, 0x04bb, 0x04ce, 0x04e0, 0x04fc, 0x0518, 0x052b, 0x053f, + 0x0552, 0x0565, 0x0581, 0x059e, 0x05b7, 0x05d3, 0x05ef, 0x060c, + 0x0627, 0x0640, 0x0659, 0x066b, 0x0684, 0x0284, 0x029c, 0x02b3, + 0x02c6, 0x02da, 0x02ed, 0x0301, 0x0314, 0x0328, 0x0343, 0x035f, + 0x037a, 0x0396, 0x03a9, 0x03bd, 0x03d1, 0x03e4, 0x03f8, 0x040c, + // Entry 3800 - 383F + 0x0420, 0x0435, 0x0449, 0x045e, 0x0473, 0x0487, 0x049c, 0x04b0, + 0x04c5, 0x04da, 0x04ef, 0x0505, 0x051a, 0x0530, 0x0545, 0x0559, + 0x056e, 0x0582, 0x0597, 0x05ab, 0x05bf, 0x05d4, 0x05e8, 0x05fd, + 0x0611, 0x0625, 0x0639, 0x064d, 0x0661, 0x0676, 0x068b, 0x069f, + 0x06b3, 0x06c8, 0x06e7, 0x06ff, 0x0716, 0x072e, 0x0745, 0x075d, + 0x077c, 0x079c, 0x07bb, 0x07db, 0x07f2, 0x080a, 0x0822, 0x0839, + 0x0851, 0x0869, 0x087f, 0x089a, 0x009a, 0x00aa, 0x00c1, 0x00d6, + 0x00ea, 0x00fe, 0x0114, 0x0129, 0x013e, 0x0152, 0x0168, 0x017e, + // Entry 3840 - 387F + 0x0193, 0x0193, 0x01b2, 0x01d0, 0x01ee, 0x020e, 0x022d, 0x024c, + 0x026a, 0x028a, 0x02aa, 0x02c9, 0x02e6, 0x0303, 0x0321, 0x033f, + 0x035d, 0x037b, 0x0399, 0x03bb, 0x03de, 0x0400, 0x0429, 0x0448, + 0x0469, 0x048d, 0x04a5, 0x04ba, 0x04ca, 0x04df, 0x04f6, 0x0508, + 0x0108, 0x011b, 0x012d, 0x013f, 0x0153, 0x0166, 0x0179, 0x018b, + 0x019f, 0x01b3, 0x01c6, 0x01d8, 0x01eb, 0x01fd, 0x0210, 0x0222, + 0x0235, 0x0247, 0x025a, 0x026c, 0x027f, 0x0291, 0x02a3, 0x02b6, + 0x02c8, 0x02da, 0x02ec, 0x02fe, 0x0310, 0x0322, 0x0334, 0x0347, + // Entry 3880 - 38BF + 0x0359, 0x036b, 0x037d, 0x038e, 0x03a0, 0x03b1, 0x03c3, 0x03d4, + 0x03e4, 0x03f4, 0x0405, 0x0415, 0x0429, 0x043c, 0x0456, 0x0467, + 0x0479, 0x0489, 0x0499, 0x04aa, 0x04ba, 0x04ca, 0x04da, 0x04ea, + 0x04fa, 0x050a, 0x051a, 0x052a, 0x053b, 0x054b, 0x055b, 0x056b, + 0x057b, 0x058b, 0x059b, 0x05ac, 0x05be, 0x05cf, 0x05e1, 0x05f0, + 0x0603, 0x0616, 0x0629, 0x063d, 0x0650, 0x0664, 0x0678, 0x068c, + 0x06a4, 0x06bb, 0x06d2, 0x06e9, 0x06f6, 0x02f6, 0x0309, 0x0325, + 0x0341, 0x035c, 0x0378, 0x0394, 0x03b5, 0x03d1, 0x03f2, 0x040d, + // Entry 38C0 - 38FF + 0x0428, 0x0448, 0x046b, 0x0485, 0x04a0, 0x04bd, 0x04d9, 0x04f5, + 0x050f, 0x0531, 0x054e, 0x0569, 0x0588, 0x05a3, 0x05be, 0x05de, + 0x05fa, 0x0617, 0x0631, 0x0651, 0x0251, 0x0268, 0x027b, 0x028e, + 0x02a3, 0x02b4, 0x02ca, 0x02db, 0x02ed, 0x02fe, 0x0316, 0x032f, + 0x0350, 0x0361, 0x0373, 0x0384, 0x0396, 0x03ae, 0x03c6, 0x03d8, + 0x03f0, 0x0403, 0x0415, 0x042d, 0x043f, 0x0458, 0x0474, 0x0487, + 0x049a, 0x04b7, 0x04ca, 0x04e7, 0x04ff, 0x0511, 0x0529, 0x053b, + 0x0557, 0x0569, 0x057b, 0x0593, 0x05a5, 0x05bd, 0x05cf, 0x05e1, + // Entry 3900 - 393F + 0x05f3, 0x060b, 0x061d, 0x062f, 0x0647, 0x0663, 0x0675, 0x0687, + 0x069f, 0x06b9, 0x06d3, 0x06eb, 0x0709, 0x0721, 0x0740, 0x075a, + 0x0778, 0x0791, 0x07ae, 0x07cd, 0x07ea, 0x07fa, 0x0811, 0x0829, + 0x083c, 0x084f, 0x0862, 0x0875, 0x088a, 0x089e, 0x08b2, 0x08c4, + 0x08db, 0x08f0, 0x090c, 0x010c, 0x0120, 0x0133, 0x0145, 0x0157, + 0x016b, 0x017e, 0x0191, 0x01a3, 0x01b7, 0x01cb, 0x01de, 0x01de, + 0x01f9, 0x0210, 0x0227, 0x023e, 0x0255, 0x026c, 0x0283, 0x0298, + 0x02c2, 0x02de, 0x02f9, 0x0314, 0x0330, 0x034b, 0x0367, 0x0383, + // Entry 3940 - 397F + 0x03a0, 0x03bc, 0x03d8, 0x03f3, 0x040e, 0x042b, 0x0447, 0x0463, + 0x047e, 0x049b, 0x04b8, 0x04d4, 0x04f0, 0x050b, 0x0527, 0x0542, + 0x055e, 0x015e, 0x016b, 0x0178, 0x0185, 0x0192, 0x01a0, 0x01ad, + 0x01bb, 0x01ca, 0x01d8, 0x01e7, 0x01f7, 0x0206, 0x0215, 0x0225, + 0x0233, 0x0242, 0x0252, 0x0261, 0x0271, 0x027f, 0x028e, 0x029c, + 0x02ab, 0x02ba, 0x02c8, 0x02d7, 0x02e5, 0x02f4, 0x0303, 0x0311, + 0x0320, 0x032f, 0x033d, 0x034c, 0x035a, 0x0368, 0x0376, 0x0384, + 0x0393, 0x03a1, 0x03af, 0x03c1, 0x03d2, 0x03e4, 0x03f6, 0x0407, + // Entry 3980 - 39BF + 0x0419, 0x042a, 0x043c, 0x044e, 0x0460, 0x0476, 0x048c, 0x04a2, + 0x04b8, 0x00b8, 0x00cb, 0x00de, 0x00f2, 0x010e, 0x0122, 0x0135, + 0x0148, 0x015b, 0x016e, 0x0181, 0x0194, 0x01a8, 0x01c3, 0x01de, + 0x01de, 0x01ed, 0x01fb, 0x0209, 0x0219, 0x0228, 0x0237, 0x0245, + 0x0255, 0x0265, 0x0274, 0x0274, 0x028b, 0x02a1, 0x02be, 0x02db, + 0x02f3, 0x030b, 0x0324, 0x033c, 0x0355, 0x036e, 0x0387, 0x03a1, + 0x03ba, 0x03d4, 0x03ed, 0x0405, 0x041d, 0x0435, 0x044e, 0x0466, + 0x0492, 0x04aa, 0x04c2, 0x04da, 0x04f5, 0x050f, 0x0529, 0x0549, + // Entry 39C0 - 39FF + 0x0561, 0x0579, 0x0590, 0x05ab, 0x05c8, 0x05e5, 0x0604, 0x0623, + 0x0639, 0x0650, 0x0667, 0x067f, 0x0697, 0x06b0, 0x06c6, 0x06dd, + 0x06f4, 0x070c, 0x0722, 0x0739, 0x0750, 0x0768, 0x077e, 0x0795, + 0x07ac, 0x07c4, 0x07da, 0x07f1, 0x0807, 0x081e, 0x0835, 0x084d, + 0x0863, 0x087a, 0x0890, 0x08a7, 0x08bd, 0x08d4, 0x08eb, 0x0903, + 0x0919, 0x0930, 0x0946, 0x095d, 0x0973, 0x098a, 0x09a0, 0x09b7, + 0x09cd, 0x09e4, 0x09fa, 0x0a11, 0x0a27, 0x0a3e, 0x0a53, 0x0a69, + 0x0a7a, 0x0a8b, 0x0a9b, 0x0aac, 0x0abc, 0x0acc, 0x0adc, 0x0aed, + // Entry 3A00 - 3A3F + 0x0afe, 0x0b10, 0x0b21, 0x0b33, 0x0b44, 0x0b55, 0x0b66, 0x0b7a, + 0x0b91, 0x0ba6, 0x0bbc, 0x03bc, 0x03cf, 0x03e4, 0x03f7, 0x040d, + 0x0424, 0x0439, 0x044e, 0x0465, 0x047c, 0x0493, 0x04ab, 0x04c2, + 0x04da, 0x04f1, 0x0508, 0x051f, 0x0539, 0x0553, 0x056e, 0x0588, + 0x05a3, 0x05b8, 0x05d1, 0x05e2, 0x0607, 0x0628, 0x0647, 0x065a, + 0x025a, 0x0270, 0x0286, 0x029d, 0x02b4, 0x02ca, 0x02e0, 0x02e0, + 0x02f6, 0x030c, 0x0323, 0x033a, 0x0350, 0x0366, 0x0366, 0x037b, + 0x0390, 0x03a6, 0x03bc, 0x03d1, 0x03e6, 0x03e6, 0x03fd, 0x0414, + // Entry 3A40 - 3A7F + 0x042b, 0x0443, 0x045b, 0x0472, 0x0489, 0x0089, 0x009e, 0x00b3, + 0x00c8, 0x00de, 0x00f4, 0x0109, 0x011e, 0x011e, 0x013d, 0x0160, + 0x0180, 0x019b, 0x01bd, 0x01d7, 0x0204, 0x022d, 0x025a, 0x027f, + 0x02a5, 0x02cb, 0x02f3, 0x0313, 0x033f, 0x0364, 0x0382, 0x03aa, + 0x03dd, 0x03ff, 0x042d, 0x0449, 0x0474, 0x0497, 0x04b2, 0x04d8, + 0x0505, 0x0520, 0x0545, 0x0564, 0x058d, 0x05ba, 0x05cf, 0x05eb, + 0x060e, 0x0624, 0x064e, 0x0678, 0x06a0, 0x06c7, 0x0701, 0x0733, + 0x075c, 0x077e, 0x0798, 0x07c4, 0x07ed, 0x0813, 0x082f, 0x084c, + // Entry 3A80 - 3ABF + 0x0866, 0x087b, 0x089c, 0x08bc, 0x00bc, 0x00d3, 0x00ea, 0x0101, + 0x0118, 0x012f, 0x0146, 0x015e, 0x0176, 0x018e, 0x01a6, 0x01be, + 0x01d6, 0x01ee, 0x0206, 0x021e, 0x0236, 0x024e, 0x0266, 0x027e, + 0x0296, 0x02ae, 0x02c6, 0x02de, 0x02f6, 0x030e, 0x0326, 0x033e, + 0x0356, 0x036e, 0x0386, 0x039e, 0x03b7, 0x03d0, 0x03e8, 0x0400, + 0x0418, 0x0430, 0x0448, 0x0461, 0x047a, 0x0493, 0x04ac, 0x04c5, + 0x04de, 0x04f6, 0x050d, 0x0525, 0x053d, 0x0555, 0x056d, 0x0585, + 0x059d, 0x05b5, 0x05cd, 0x05e5, 0x05fd, 0x0615, 0x062d, 0x0645, + // Entry 3AC0 - 3AFF + 0x065d, 0x0676, 0x068f, 0x06a8, 0x06c1, 0x06da, 0x06f3, 0x070c, + 0x0725, 0x073e, 0x0757, 0x0770, 0x0789, 0x07a2, 0x07ba, 0x07d2, + 0x07ea, 0x0802, 0x081a, 0x0832, 0x084a, 0x0861, 0x0878, 0x088f, + 0x08a6, 0x08bc, 0x08d2, 0x08ea, 0x0901, 0x0919, 0x0931, 0x0949, + 0x0960, 0x0978, 0x098f, 0x09a5, 0x09ba, 0x09d2, 0x09eb, 0x0a02, + 0x0a1a, 0x0a31, 0x0a47, 0x0a5e, 0x0a75, 0x0a8d, 0x0aa5, 0x0abd, + 0x0adb, 0x0af9, 0x0b17, 0x0b34, 0x0b51, 0x0b6f, 0x0b8e, 0x0baa, + 0x0bc6, 0x0be2, 0x0bfe, 0x0c1b, 0x0c39, 0x0c55, 0x0c74, 0x0c90, + // Entry 3B00 - 3B3F + 0x0ca5, 0x0cba, 0x0cd0, 0x00d0, 0x00e7, 0x00fd, 0x0113, 0x012b, + 0x0142, 0x0159, 0x016f, 0x0187, 0x019f, 0x01b6, 0x01b6, 0x01cc, + 0x01e2, 0x01f7, 0x020d, 0x0223, 0x0239, 0x024f, 0x0265, 0x027a, + 0x028f, 0x02a5, 0x02ba, 0x02cf, 0x02e6, 0x02fc, 0x0312, 0x0327, + 0x033d, 0x0352, 0x0367, 0x037b, 0x0393, 0x03ab, 0x03ab, 0x03c7, + 0x03e5, 0x0401, 0x0423, 0x0440, 0x045c, 0x047f, 0x049c, 0x04bb, + 0x04da, 0x04fc, 0x051f, 0x0542, 0x0564, 0x0587, 0x05ab, 0x05ca, + 0x05f2, 0x0610, 0x062c, 0x064d, 0x0668, 0x0689, 0x06a5, 0x06c2, + // Entry 3B40 - 3B7F + 0x06e6, 0x0702, 0x071d, 0x073f, 0x075b, 0x0779, 0x0794, 0x07b7, + 0x07d8, 0x07f9, 0x0816, 0x0831, 0x084e, 0x086b, 0x0886, 0x08a4, + 0x08ca, 0x08e9, 0x0908, 0x0924, 0x0945, 0x0960, 0x097d, 0x099d, + 0x019d, 0x01bd, 0x01dd, 0x01fd, 0x021d, 0x023d, 0x025d, 0x027d, + 0x029d, 0x02bd, 0x02dd, 0x02fd, 0x031d, 0x033d, 0x035d, 0x037d, + 0x039d, 0x03bd, 0x03dd, 0x03fd, 0x041d, 0x043d, 0x045d, 0x047d, + 0x049d, 0x04bd, 0x04dd, 0x04fd, 0x051d, 0x053d, 0x055d, 0x057d, + 0x059d, 0x05bd, 0x05dd, 0x05fd, 0x061d, 0x063d, 0x065d, 0x067d, + // Entry 3B80 - 3BBF + 0x069d, 0x06bd, 0x06dd, 0x06fd, 0x071d, 0x073d, 0x075d, 0x077d, + 0x079d, 0x07bd, 0x07dd, 0x07fd, 0x081d, 0x083d, 0x085d, 0x087d, + 0x089d, 0x08bd, 0x08dd, 0x08fd, 0x091d, 0x093d, 0x095d, 0x097d, + 0x099d, 0x09bd, 0x09dd, 0x09fd, 0x0a1d, 0x0a3d, 0x0a5d, 0x0a7d, + 0x0a9d, 0x0abd, 0x0add, 0x0afd, 0x0b1d, 0x0b3d, 0x0b5d, 0x0b7d, + 0x0b9d, 0x0bbd, 0x0bdd, 0x0bfd, 0x0c1d, 0x0c3d, 0x0c5d, 0x0c7d, + 0x0c9d, 0x0cbd, 0x0cdd, 0x0cfd, 0x0d1d, 0x0d3d, 0x0d5d, 0x0d7d, + 0x0d9d, 0x0dbd, 0x0ddd, 0x0dfd, 0x0e1d, 0x0e3d, 0x0e5d, 0x0e7d, + // Entry 3BC0 - 3BFF + 0x0e9d, 0x0ebd, 0x0edd, 0x0efd, 0x0f1d, 0x0f3d, 0x0f5d, 0x0f7d, + 0x0f9d, 0x0fbd, 0x0fdd, 0x0ffd, 0x101d, 0x103d, 0x105d, 0x107d, + 0x109d, 0x10bd, 0x10dd, 0x10fd, 0x111d, 0x113d, 0x115d, 0x117d, + 0x119d, 0x11bd, 0x11dd, 0x11fd, 0x121d, 0x123d, 0x125d, 0x127d, + 0x129d, 0x12bd, 0x12dd, 0x12fd, 0x131d, 0x133d, 0x135d, 0x137d, + 0x139d, 0x13bd, 0x13dd, 0x13fd, 0x141d, 0x143d, 0x145d, 0x147d, + 0x149d, 0x14bd, 0x14dd, 0x14fd, 0x151d, 0x153d, 0x155d, 0x157d, + 0x159d, 0x15bd, 0x15dd, 0x15fd, 0x161d, 0x163d, 0x165d, 0x167d, + // Entry 3C00 - 3C3F + 0x169d, 0x16bd, 0x16dd, 0x16fd, 0x171d, 0x173d, 0x175d, 0x177d, + 0x179d, 0x17bd, 0x17dd, 0x17fd, 0x181d, 0x183d, 0x185d, 0x187d, + 0x189d, 0x18bd, 0x18dd, 0x18fd, 0x191d, 0x193d, 0x195d, 0x197d, + 0x199d, 0x19bd, 0x19dd, 0x19fd, 0x1a1d, 0x1a3d, 0x1a5d, 0x1a7d, + 0x1a9d, 0x1abd, 0x1add, 0x1afd, 0x1b1d, 0x1b3d, 0x1b5d, 0x1b7d, + 0x1b9d, 0x1bbd, 0x1bdd, 0x1bfd, 0x1c1d, 0x1c3d, 0x1c5d, 0x1c7d, + 0x1c9d, 0x1cbd, 0x1cdd, 0x1cfd, 0x1d1d, 0x1d3d, 0x1d5d, 0x1d7d, + 0x1d9d, 0x1dbd, 0x1ddd, 0x1dfd, 0x1e1d, 0x1e3d, 0x1e5d, 0x1e7d, + // Entry 3C40 - 3C7F + 0x1e9d, 0x1ebd, 0x1edd, 0x1efd, 0x1f1d, 0x1f3d, 0x1f5d, 0x1f7d, + 0x1f9d, 0x1fbd, 0x1fdd, 0x1ffd, 0x201d, 0x203d, 0x205d, 0x207d, + 0x209d, 0x20bd, 0x20dd, 0x20fd, 0x211d, 0x213d, 0x215d, 0x217d, + 0x219d, 0x21bd, 0x21dd, 0x21fd, 0x221d, 0x223d, 0x225d, 0x227d, + 0x229d, 0x22bd, 0x22dd, 0x22fd, 0x231d, 0x233d, 0x235d, 0x237d, + 0x239d, 0x23bd, 0x23dd, 0x23fd, 0x241d, 0x243d, 0x245d, 0x247d, + 0x249d, 0x24bd, 0x24dd, 0x24fd, 0x251d, 0x253d, 0x255d, 0x257d, + 0x259d, 0x25bd, 0x25dd, 0x25fd, 0x261d, 0x263d, 0x265d, 0x267d, + // Entry 3C80 - 3CBF + 0x269d, 0x26bd, 0x26dd, 0x26fd, 0x271d, 0x273d, 0x275d, 0x277d, + 0x279d, 0x27bd, 0x27dd, 0x27fd, 0x281d, 0x283d, 0x285d, 0x287d, + 0x289d, 0x28bd, 0x28dd, 0x28fd, 0x291d, 0x293d, 0x295d, 0x297d, + 0x299d, 0x29bd, 0x29dd, 0x29fd, 0x2a1d, 0x2a3d, 0x2a5d, 0x2a7d, + 0x2a9d, 0x2abd, 0x2add, 0x2afd, 0x2b1d, 0x2b3d, 0x2b5d, 0x2b7d, + 0x2b9d, 0x2bbd, 0x2bdd, 0x2bfd, 0x2c1d, 0x2c3d, 0x2c5d, 0x2c7d, + 0x2c9d, 0x2cbd, 0x2cdd, 0x2cfd, 0x2d1d, 0x2d3d, 0x2d5d, 0x2d7d, + 0x2d9d, 0x2dbd, 0x2ddd, 0x2dfd, 0x2e1d, 0x2e3d, 0x2e5d, 0x2e7d, + // Entry 3CC0 - 3CFF + 0x2e9d, 0x2ebd, 0x2edd, 0x2efd, 0x2f1d, 0x2f3d, 0x2f5d, 0x035d, + 0x037d, 0x039d, 0x03bd, 0x03dd, 0x03fd, 0x041d, 0x043d, 0x045d, + 0x047d, 0x049d, 0x04bd, 0x04dd, 0x04fd, 0x051d, 0x053d, 0x055d, + 0x057d, 0x059d, 0x05bd, 0x05dd, 0x05fd, 0x061d, 0x063d, 0x065d, + 0x067d, 0x069d, 0x06bd, 0x06dd, 0x06fd, 0x071d, 0x073d, 0x075d, + 0x077d, 0x079d, 0x07bd, 0x07dd, 0x07fd, 0x081d, 0x083d, 0x085d, + 0x087d, 0x089d, 0x08bd, 0x08dd, 0x08fd, 0x091d, 0x093d, 0x095d, + 0x097d, 0x099d, 0x09bd, 0x09dd, 0x09fd, 0x0a1d, 0x0a3d, 0x0a5d, + // Entry 3D00 - 3D3F + 0x0a7d, 0x0a9d, 0x0abd, 0x0add, 0x0afd, 0x0b1d, 0x0b3d, 0x0b5d, + 0x0b7d, 0x0b9d, 0x0bbd, 0x0bdd, 0x0bfd, 0x0c1d, 0x0c3d, 0x0c5d, + 0x0c7d, 0x0c9d, 0x0cbd, 0x0cdd, 0x0cfd, 0x0d1d, 0x0d3d, 0x0d5d, + 0x0d7d, 0x0d9d, 0x0dbd, 0x0ddd, 0x0dfd, 0x0e1d, 0x0e3d, 0x0e5d, + 0x0e7d, 0x0e9d, 0x0ebd, 0x0edd, 0x0efd, 0x0f1d, 0x0f3d, 0x0f5d, + 0x0f7d, 0x0f9d, 0x0fbd, 0x0fdd, 0x0ffd, 0x101d, 0x103d, 0x105d, + 0x107d, 0x109d, 0x009d, 0x00b4, 0x00cb, 0x00e2, 0x00fa, 0x0112, + 0x012f, 0x0146, 0x0146, 0x0165, 0x0184, 0x01a3, 0x01c2, 0x01e1, + // Entry 3D40 - 3D7F + 0x01e1, 0x01fd, 0x021e, 0x0243, 0x0261, 0x0278, 0x0290, 0x02a5, + 0x02bb, 0x02d3, 0x02ef, 0x0306, 0x031c, 0x033f, 0x035f, 0x037e, + 0x03a9, 0x03d3, 0x03f0, 0x040e, 0x042b, 0x0448, 0x0467, 0x0486, + 0x04a1, 0x04be, 0x04dd, 0x00dd, 0x00fa, 0x0117, 0x013a, 0x0157, + 0x0176, 0x0176, 0x0193, 0x0193, 0x01b0, 0x01d0, 0x01d0, 0x01f2, + 0x020e, 0x020e, 0x022d, 0x024a, 0x0268, 0x0286, 0x02a3, 0x02bf, + 0x02da, 0x02f5, 0x030f, 0x0329, 0x034f, 0x0372, 0x0392, 0x03af, + 0x03ce, 0x03ec, 0x040b, 0x0427, 0x0445, 0x0462, 0x0483, 0x04a1, + // Entry 3D80 - 3DBF + 0x04c1, 0x04e0, 0x0502, 0x0521, 0x0542, 0x0562, 0x0583, 0x05a1, + 0x05c1, 0x05e0, 0x0600, 0x061d, 0x063c, 0x065a, 0x0679, 0x0695, + 0x06b3, 0x06d0, 0x06f1, 0x070f, 0x072f, 0x074e, 0x076e, 0x078b, + 0x07aa, 0x07c8, 0x07e8, 0x0805, 0x0824, 0x0842, 0x0863, 0x0881, + 0x08a1, 0x08c0, 0x08e3, 0x0903, 0x0925, 0x0946, 0x0968, 0x0987, + 0x09a8, 0x09c6, 0x09e5, 0x0a01, 0x0a21, 0x0a3e, 0x0a5d, 0x0a79, + 0x0a99, 0x0ab6, 0x0ad7, 0x0af5, 0x0b15, 0x0b34, 0x0b53, 0x0b6f, + 0x0b8d, 0x0baa, 0x0bca, 0x0be7, 0x0c06, 0x0c24, 0x0c45, 0x0c63, + // Entry 3DC0 - 3DFF + 0x0c83, 0x0ca2, 0x0cc9, 0x0ced, 0x0d0e, 0x0d2c, 0x0d4c, 0x0d6b, + 0x0d99, 0x0dc4, 0x0de8, 0x0e09, 0x0e2c, 0x0e4e, 0x0e79, 0x0ea1, + 0x0ecb, 0x0ef4, 0x0f1a, 0x0f3d, 0x0f74, 0x0fa8, 0x0fbf, 0x0fd6, + 0x0ff2, 0x100e, 0x102c, 0x104a, 0x107b, 0x10ac, 0x10c9, 0x10e6, + 0x110d, 0x1134, 0x115b, 0x116d, 0x118a, 0x11a7, 0x01a7, 0x01c5, + 0x01e0, 0x01fd, 0x0219, 0x0236, 0x0250, 0x026e, 0x0289, 0x02a7, + 0x02c2, 0x02f0, 0x030e, 0x0329, 0x034f, 0x0372, 0x0398, 0x03bb, + 0x03d8, 0x03f2, 0x040e, 0x0429, 0x0466, 0x04a2, 0x04de, 0x0517, + // Entry 3E00 - 3E3F + 0x0551, 0x0588, 0x05c3, 0x05fb, 0x0634, 0x066a, 0x06a4, 0x06db, + 0x0715, 0x074c, 0x0785, 0x07bb, 0x07f3, 0x0846, 0x0896, 0x08e8, + 0x090d, 0x092f, 0x0953, 0x0976, 0x09b2, 0x09ed, 0x0a29, 0x0a6d, + 0x0aa8, 0x0ad3, 0x0afd, 0x0b28, 0x0b53, 0x0b86, 0x0bb0, 0x0bdb, + 0x0c05, 0x0c30, 0x0c5b, 0x0c8e, 0x0cb8, 0x0ce4, 0x0d10, 0x0d44, + 0x0d6f, 0x0d9a, 0x0dc6, 0x0df1, 0x0e1c, 0x0e48, 0x0e73, 0x0e9f, + 0x0ecb, 0x0ef6, 0x0f22, 0x0f4e, 0x0f78, 0x0fa3, 0x0fce, 0x0ff8, + 0x1023, 0x104e, 0x1078, 0x10a3, 0x10ce, 0x10f9, 0x1124, 0x1151, + // Entry 3E40 - 3E7F + 0x117e, 0x11a9, 0x11d3, 0x11fe, 0x1229, 0x125c, 0x1286, 0x12b0, + 0x12db, 0x130e, 0x1338, 0x1363, 0x138e, 0x13b8, 0x13e3, 0x140d, + 0x1438, 0x146b, 0x1495, 0x14c0, 0x14ea, 0x1515, 0x1540, 0x1573, + 0x159d, 0x15c9, 0x15f4, 0x1620, 0x164c, 0x1680, 0x16ab, 0x16d7, + 0x1702, 0x172e, 0x175a, 0x178e, 0x17b9, 0x17e4, 0x180f, 0x1842, + 0x186c, 0x1897, 0x18c1, 0x18ec, 0x1917, 0x194a, 0x1974, 0x19ac, + 0x19e3, 0x1a23, 0x1a55, 0x1a87, 0x1ab6, 0x1ae5, 0x1b14, 0x1b4e, + 0x1b86, 0x1bbf, 0x1bf8, 0x1c31, 0x1c72, 0x1caa, 0x1cd1, 0x1cf9, + // Entry 3E80 - 3EBF + 0x1d21, 0x1d49, 0x1d79, 0x1da0, 0x1dc7, 0x1def, 0x1e17, 0x1e3f, + 0x1e6f, 0x1e96, 0x1ebe, 0x1ee7, 0x1f10, 0x1f39, 0x1f6a, 0x1f92, + 0x1fc2, 0x1fe9, 0x2019, 0x2040, 0x2068, 0x208f, 0x20b7, 0x20e7, + 0x210e, 0x2136, 0x2166, 0x218d, 0x21b6, 0x21df, 0x2207, 0x2230, + 0x2259, 0x2282, 0x22b3, 0x22db, 0x2318, 0x233f, 0x2367, 0x238f, + 0x23b7, 0x23e7, 0x240e, 0x2449, 0x2483, 0x24be, 0x24f9, 0x2533, + 0x255d, 0x2586, 0x25b0, 0x25da, 0x2603, 0x262d, 0x2656, 0x2680, + 0x26aa, 0x26d3, 0x26fe, 0x2728, 0x2753, 0x277d, 0x27a7, 0x27d2, + // Entry 3EC0 - 3EFF + 0x27fd, 0x2828, 0x2852, 0x287d, 0x28a8, 0x28d1, 0x28fb, 0x2925, + 0x294f, 0x2978, 0x29a2, 0x29cc, 0x29f5, 0x2a1f, 0x2a49, 0x2a73, + 0x2a9f, 0x2acb, 0x2af5, 0x2b1e, 0x2b48, 0x2b72, 0x2b9b, 0x2bc5, + 0x2bef, 0x2c18, 0x2c42, 0x2c6b, 0x2c95, 0x2cbf, 0x2ce8, 0x2d12, + 0x2d3c, 0x2d65, 0x2d90, 0x2dba, 0x2de5, 0x2e10, 0x2e3b, 0x2e65, + 0x2e90, 0x2ebb, 0x2ee5, 0x2f0f, 0x2f39, 0x2f6f, 0x2f99, 0x2fc2, + 0x2fec, 0x3016, 0x303f, 0x3079, 0x30b2, 0x30db, 0x3103, 0x312c, + 0x3154, 0x317e, 0x31a7, 0x31d1, 0x31fa, 0x3225, 0x324f, 0x3277, + // Entry 3F00 - 3F3F + 0x32a0, 0x32c9, 0x32f3, 0x331c, 0x3345, 0x336d, 0x339a, 0x33c7, + 0x33f4, 0x3427, 0x3451, 0x3484, 0x34ae, 0x34e3, 0x350f, 0x3543, + 0x356e, 0x35a3, 0x35cf, 0x3602, 0x362c, 0x3660, 0x368b, 0x36bf, + 0x36ea, 0x371d, 0x3747, 0x377a, 0x37a4, 0x37d1, 0x37fd, 0x382a, + 0x3857, 0x3883, 0x38ae, 0x38d8, 0x3902, 0x3932, 0x3959, 0x3989, + 0x39b0, 0x39e2, 0x3a0b, 0x3a3c, 0x3a64, 0x3a96, 0x3abf, 0x3aef, + 0x3b16, 0x3b47, 0x3b6f, 0x3ba0, 0x3bc8, 0x3bf8, 0x3c1f, 0x3c4f, + 0x3c76, 0x3ca0, 0x3cc9, 0x3cf3, 0x3d1d, 0x3d46, 0x3d6e, 0x3d95, + // Entry 3F40 - 3F7F + 0x3dbc, 0x3de8, 0x3e13, 0x3e3f, 0x3e6b, 0x3e95, 0x3ec0, 0x3eea, + 0x3f14, 0x3f3d, 0x3f67, 0x3f92, 0x3fbc, 0x3fe7, 0x4010, 0x4039, + 0x4066, 0x4096, 0x40ad, 0x40c5, 0x00c5, 0x00f9, 0x012a, 0x015d, + 0x0190, 0x01c4, 0x01f8, 0x022b, 0x025f, 0x0291, 0x02c5, 0x02f6, + 0x0330, 0x0364, 0x0398, 0x03d3, 0x0405, 0x0439, 0x046e, 0x04a1, + 0x04d6, 0x0506, 0x0538, 0x056a, 0x059d, 0x05d2, 0x0605, 0x0639, + 0x066f, 0x06a3, 0x06d9, 0x0712, 0x0744, 0x0778, 0x07a9, 0x07dc, + 0x0810, 0x0841, 0x0873, 0x08a5, 0x08d9, 0x0913, 0x0947, 0x097a, + // Entry 3F80 - 3FBF + 0x09b6, 0x09e8, 0x0a1c, 0x0a4d, 0x0a7f, 0x0ab0, 0x0ae0, 0x0b19, + 0x0b4d, 0x0b7f, 0x0bb1, 0x0be5, 0x0c16, 0x0c49, 0x0c7d, 0x0cb1, + 0x0ce2, 0x0d16, 0x0d4b, 0x0d80, 0x0db5, 0x01b5, 0x01ea, 0x021e, + 0x0252, 0x0286, 0x02c0, 0x02f3, 0x0328, 0x0363, 0x0395, 0x03d0, + 0x0402, 0x0436, 0x0467, 0x0498, 0x04d2, 0x0503, 0x053d, 0x056e, + 0x05a8, 0x05da, 0x0614, 0x064f, 0x068a, 0x06ba, 0x06ec, 0x071c, + 0x074d, 0x077e, 0x07ae, 0x07df, 0x0810, 0x0842, 0x0873, 0x08a4, + 0x08d7, 0x090a, 0x093b, 0x096c, 0x09a0, 0x09d2, 0x0a06, 0x0a38, + // Entry 3FC0 - 3FFF + 0x0a6a, 0x0a9c, 0x0acd, 0x0afe, 0x0b30, 0x0b61, 0x0b91, 0x0bc5, + 0x0bf9, 0x0c2d, 0x0c5f, 0x0c91, 0x0091, 0x00ce, 0x010a, 0x012d, + 0x0150, 0x0176, 0x0199, 0x01bd, 0x01e1, 0x0207, 0x022a, 0x0255, + 0x0274, 0x027d, 0x02aa, 0x02aa, 0x02be, 0x02d2, 0x02e6, 0x02fa, + 0x030e, 0x0322, 0x0336, 0x034a, 0x035e, 0x0373, 0x0388, 0x039d, + 0x03b2, 0x03c7, 0x03dc, 0x03f1, 0x0415, 0x0445, 0x0479, 0x049d, + 0x04c5, 0x04f4, 0x0520, 0x055c, 0x0599, 0x05cb, 0x01cb, 0x01e7, + 0x0204, 0x0224, 0x0245, 0x025f, 0x027a, 0x0295, 0x02b7, 0x02da, + // Entry 4000 - 403F + 0x02f9, 0x0319, 0x0339, 0x035a, 0x037b, 0x039d, 0x03c0, 0x03ed, + 0x0413, 0x0439, 0x0460, 0x048c, 0x04bb, 0x04eb, 0x051c, 0x054e, + 0x0588, 0x05c3, 0x05ff, 0x063c, 0x0674, 0x06ad, 0x06de, 0x0710, + 0x0742, 0x0775, 0x07ad, 0x07e6, 0x07f0, 0x0800, 0x0832, 0x0865, + 0x0874, 0x0887, 0x0894, 0x08a8, 0x08b7, 0x08ca, 0x08d7, 0x08e2, + 0x08f9, 0x0908, 0x0108, 0x0117, 0x0122, 0x0135, 0x014b, 0x0158, + 0x016e, 0x0185, 0x019d, 0x01b6, 0x01d7, 0x01f9, 0x020a, 0x0219, + 0x0227, 0x0236, 0x0248, 0x025c, 0x0273, 0x0284, 0x0284, 0x0299, + // Entry 4040 - 407F + 0x02aa, 0x02bc, 0x02cf, 0x02cf, 0x02ec, 0x030e, 0x032b, 0x033f, + 0x035c, 0x035c, 0x0376, 0x038e, 0x03a8, 0x03c0, 0x03da, 0x03f2, + 0x040d, 0x0426, 0x0440, 0x0458, 0x0479, 0x04aa, 0x04d8, 0x0509, + 0x0537, 0x0567, 0x0594, 0x05c5, 0x05f3, 0x0623, 0x0650, 0x067f, + 0x06ad, 0x06cd, 0x06ea, 0x0709, 0x0725, 0x0743, 0x0760, 0x0787, + 0x07ab, 0x07ca, 0x07e6, 0x0804, 0x0821, 0x0841, 0x085e, 0x087d, + 0x089b, 0x08bb, 0x08d8, 0x08f7, 0x0915, 0x0934, 0x0950, 0x096e, + 0x098b, 0x09ab, 0x09c8, 0x09e7, 0x0a05, 0x0a24, 0x0a40, 0x0a60, + // Entry 4080 - 40BF + 0x0a7d, 0x0a9c, 0x0ab8, 0x0ad8, 0x0af5, 0x0b15, 0x0b32, 0x0b51, + 0x0b6f, 0x0b90, 0x0bae, 0x0bce, 0x0bed, 0x0c0c, 0x0c28, 0x0c46, + 0x0c63, 0x0c82, 0x0c9e, 0x0cbc, 0x0cd9, 0x0cf8, 0x0d14, 0x0d32, + 0x0d4f, 0x0d6e, 0x0d8a, 0x0da8, 0x0dc5, 0x0de4, 0x0e00, 0x0e1e, + 0x0e3b, 0x0e5c, 0x0e7a, 0x0e9a, 0x0eb9, 0x0ed8, 0x0ef4, 0x0f12, + 0x0f2f, 0x0f4e, 0x0f6a, 0x0f88, 0x0fa5, 0x0fc4, 0x0fe0, 0x0ffe, + 0x101b, 0x103a, 0x1056, 0x1074, 0x1091, 0x10b1, 0x10ce, 0x10ed, + 0x110b, 0x112b, 0x1148, 0x1167, 0x1185, 0x11a4, 0x11c0, 0x11de, + // Entry 40C0 - 40FF + 0x11fb, 0x121a, 0x1236, 0x125e, 0x1283, 0x12a2, 0x12be, 0x12dc, + 0x12f9, 0x1335, 0x136e, 0x13aa, 0x13e3, 0x141f, 0x1458, 0x1483, + 0x14ab, 0x00ab, 0x00c4, 0x00c4, 0x00de, 0x00f6, 0x010b, 0x0120, + 0x0136, 0x0149, 0x015d, 0x0177, 0x0192, 0x01a4, 0x01b7, 0x01c6, + 0x01dc, 0x01ef, 0x0200, 0x0214, 0x0227, 0x023a, 0x024f, 0x0263, + 0x0277, 0x028a, 0x029f, 0x02b4, 0x02c8, 0x02d7, 0x02ea, 0x0302, + 0x0317, 0x0332, 0x0349, 0x0360, 0x0380, 0x03a0, 0x03c0, 0x03e0, + 0x0400, 0x0420, 0x0440, 0x0460, 0x0480, 0x04a0, 0x04c0, 0x04e0, + // Entry 4100 - 413F + 0x0500, 0x0520, 0x0540, 0x0560, 0x0580, 0x05a0, 0x05c0, 0x05e0, + 0x0600, 0x0620, 0x0640, 0x0660, 0x0680, 0x06a0, 0x06bd, 0x06d6, + 0x06f4, 0x070f, 0x0721, 0x0737, 0x0755, 0x0773, 0x0791, 0x07af, + 0x07cd, 0x07eb, 0x0809, 0x0827, 0x0845, 0x0863, 0x0881, 0x089f, + 0x08bd, 0x08db, 0x08f9, 0x0917, 0x0935, 0x0953, 0x0971, 0x098f, + 0x09ad, 0x09cb, 0x09e9, 0x0a07, 0x0a25, 0x0a43, 0x0a5f, 0x0a76, + 0x0a93, 0x0aa2, 0x0ac2, 0x0ae3, 0x0b02, 0x0b1f, 0x0b3d, 0x0b58, + 0x0b75, 0x0b91, 0x0bb2, 0x0bd3, 0x0bf4, 0x0c15, 0x0c36, 0x0c58, + // Entry 4140 - 417F + 0x0c7a, 0x0c9c, 0x0cbe, 0x0cee, 0x0d09, 0x0d24, 0x0d3f, 0x0d5a, + 0x0d75, 0x0d91, 0x0dad, 0x0dc9, 0x0de5, 0x0e01, 0x0e1d, 0x0e39, + 0x0e55, 0x0e71, 0x0e8d, 0x0ea9, 0x0ec5, 0x0ee1, 0x0efd, 0x0f19, + 0x0f35, 0x0f51, 0x0f6d, 0x0f89, 0x0fa5, 0x0fc1, 0x0fdd, 0x0ff9, + 0x1015, 0x1031, 0x104d, 0x1069, 0x1085, 0x10a1, 0x10bd, 0x10d9, + 0x10f5, 0x1111, 0x112d, 0x1149, 0x1165, 0x1181, 0x119d, 0x11b9, + 0x11d4, 0x11f8, 0x1221, 0x1238, 0x1256, 0x1279, 0x129c, 0x12b9, + 0x12dc, 0x12ff, 0x131d, 0x1340, 0x135d, 0x1381, 0x13a4, 0x13c7, + // Entry 4180 - 41BF + 0x13e9, 0x140e, 0x1433, 0x1456, 0x1473, 0x1490, 0x14b2, 0x14d4, + 0x14f0, 0x1511, 0x152e, 0x154b, 0x156d, 0x158c, 0x15ab, 0x15ca, + 0x15e9, 0x1606, 0x0206, 0x021f, 0x0239, 0x0253, 0x026e, 0x0288, + 0x02a1, 0x02a1, 0x02bc, 0x02d6, 0x02ef, 0x0309, 0x0324, 0x033e, + 0x033e, 0x0358, 0x0371, 0x038c, 0x03a6, 0x03c0, 0x03da, 0x03da, + 0x03f4, 0x040e, 0x0427, 0x0027, 0x003a, 0x004e, 0x0060, 0x0070, + 0x0084, 0x0096, 0x00a8, 0x00a8, 0x00c6, 0x00df, 0x00f6, 0x0110, + 0x0129, 0x013f, 0x0155, 0x0155, 0x0172, 0x0192, 0x01b3, 0x01cf, + // Entry 41C0 - 41FF + 0x01e4, 0x01e4, 0x01fc, 0x0214, 0x022c, 0x0244, 0x025c, 0x0275, + 0x028e, 0x02a7, 0x02c0, 0x02d9, 0x02f2, 0x030b, 0x030b, 0x0324, + 0x033d, 0x0356, 0x036f, 0x0388, 0x03a1, 0x03ba, 0x03d3, 0x03ec, + 0x0405, 0x041e, 0x0437, 0x0450, 0x0469, 0x0482, 0x049b, 0x04b4, + 0x04cd, 0x04e6, 0x04ff, 0x0518, 0x0531, 0x054a, 0x0563, 0x057c, + 0x0595, 0x0195, 0x01ae, 0x01c7, 0x01e0, 0x01f9, 0x0212, 0x022b, + 0x0244, 0x025d, 0x0276, 0x028f, 0x02a8, 0x02c1, 0x02da, 0x02f3, + 0x030c, 0x0325, 0x033e, 0x0357, 0x0370, 0x0370, 0x0389, 0x03a2, + // Entry 4200 - 423F + 0x03a2, 0x03bb, 0x03d4, 0x03ed, 0x0406, 0x0420, 0x043a, 0x0454, + 0x046e, 0x0488, 0x04a2, 0x04bc, 0x04d6, 0x04f0, 0x050a, 0x0524, + 0x0124, 0x0138, 0x014c, 0x0160, 0x0174, 0x0188, 0x019c, 0x01b0, + 0x01c4, 0x01d8, 0x01ec, 0x0200, 0x0214, 0x0228, 0x023c, 0x023c, + 0x0256, 0x0272, 0x028d, 0x02a9, 0x02c5, 0x02e5, 0x0300, 0x031b, + 0x033b, 0x035a, 0x0375, 0x0391, 0x03ac, 0x03c8, 0x03e4, 0x0401, + 0x041d, 0x0439, 0x0457, 0x0472, 0x048f, 0x04a9, 0x04c4, 0x04da, + 0x04f6, 0x0511, 0x052e, 0x0549, 0x055f, 0x057a, 0x0590, 0x05a6, + // Entry 4240 - 427F + 0x05c1, 0x05d7, 0x05ed, 0x0603, 0x061f, 0x0635, 0x064b, 0x0667, + 0x067d, 0x0693, 0x06b1, 0x06ce, 0x06e4, 0x06fa, 0x0710, 0x0726, + 0x073c, 0x0752, 0x0768, 0x077e, 0x0794, 0x07b0, 0x07c6, 0x07e1, + 0x07f7, 0x080d, 0x0823, 0x0839, 0x084f, 0x0865, 0x087b, 0x0891, + 0x08a7, 0x08bd, 0x08d3, 0x08f0, 0x0910, 0x092e, 0x094a, 0x0966, + 0x097c, 0x0998, 0x09ae, 0x09c4, 0x09ea, 0x0a08, 0x0a2c, 0x0a48, + 0x0a5e, 0x0a74, 0x0a90, 0x0aa6, 0x0abc, 0x0ad2, 0x0ae8, 0x0afe, + 0x0b19, 0x0b2f, 0x0b45, 0x0b5b, 0x0b71, 0x0b87, 0x0ba4, 0x0bc1, + // Entry 4280 - 42BF + 0x0bde, 0x0bfb, 0x0c18, 0x0c35, 0x0c52, 0x0c6f, 0x0c8c, 0x0ca9, + 0x0cc6, 0x0ce3, 0x0d00, 0x0d1d, 0x0d3a, 0x0d57, 0x0d74, 0x0d91, + 0x0dae, 0x0dcb, 0x0de8, 0x0e05, 0x0e22, 0x0e3f, 0x0e5c, 0x0e79, + 0x0e96, 0x0eb3, 0x0ed0, 0x02d0, 0x02ea, 0x0303, 0x0314, 0x0314, + 0x0325, 0x0336, 0x0349, 0x035b, 0x036d, 0x037e, 0x0391, 0x03a4, + 0x03b6, 0x03c7, 0x03db, 0x03ef, 0x0402, 0x0415, 0x0428, 0x043d, + 0x0451, 0x0465, 0x047e, 0x0497, 0x04b2, 0x04cc, 0x04e6, 0x04ff, + 0x051a, 0x0535, 0x054f, 0x0569, 0x0583, 0x059f, 0x05ba, 0x05d5, + // Entry 42C0 - 42FF + 0x05ef, 0x060b, 0x0627, 0x0642, 0x065c, 0x0679, 0x0696, 0x06b2, + 0x06ce, 0x06ea, 0x0708, 0x0725, 0x0742, 0x0342, 0x0359, 0x0374, + 0x0390, 0x03ab, 0x03c7, 0x03e7, 0x040a, 0x0427, 0x0443, 0x0465, + 0x0484, 0x04a6, 0x04c1, 0x04dd, 0x0500, 0x0524, 0x0549, 0x056c, + 0x058e, 0x05b2, 0x05dc, 0x0607, 0x0632, 0x065e, 0x0681, 0x06a3, + 0x06c7, 0x06f1, 0x071c, 0x0747, 0x0772, 0x079f, 0x07be, 0x07e3, + 0x0800, 0x081f, 0x083e, 0x085b, 0x0881, 0x08a9, 0x08c9, 0x08e8, + 0x0916, 0x0935, 0x0953, 0x0970, 0x0990, 0x09b1, 0x09e1, 0x0a02, + // Entry 4300 - 433F + 0x0a21, 0x0a46, 0x0a6d, 0x0a95, 0x0abd, 0x0ae3, 0x0b0a, 0x0b2e, + 0x0b54, 0x0b7b, 0x0b9d, 0x0bc1, 0x0bd4, 0x0bf6, 0x0c0b, 0x0c24, + 0x0c33, 0x0c44, 0x0c56, 0x0c65, 0x0c79, 0x0c8f, 0x0ca4, 0x0cb9, + 0x0ccc, 0x0ce3, 0x0cf3, 0x0d04, 0x0d15, 0x0d26, 0x0d37, 0x0d48, + 0x0d60, 0x0d6f, 0x0d85, 0x0d98, 0x0dac, 0x0db8, 0x01b8, 0x01ca, + 0x01da, 0x01ed, 0x01ff, 0x0219, 0x022b, 0x023e, 0x0252, 0x0267, + 0x027b, 0x0288, 0x029c, 0x029c, 0x02b0, 0x02b0, 0x02cd, 0x02eb, + 0x030b, 0x0325, 0x033d, 0x0355, 0x036e, 0x0389, 0x03a1, 0x03b9, + // Entry 4340 - 437F + 0x03cf, 0x03e8, 0x03ff, 0x041a, 0x0434, 0x044a, 0x0460, 0x047c, + 0x049e, 0x04b7, 0x04ce, 0x04e6, 0x04ff, 0x0519, 0x0530, 0x0547, + 0x055e, 0x057a, 0x0590, 0x05a6, 0x05be, 0x05d5, 0x05ed, 0x0603, + 0x0620, 0x0637, 0x0651, 0x066b, 0x0682, 0x069c, 0x06b4, 0x06cd, + 0x06e8, 0x0704, 0x0720, 0x074b, 0x034b, 0x035a, 0x0369, 0x0378, + 0x0388, 0x0397, 0x03a6, 0x03b5, 0x03c4, 0x03d3, 0x03e3, 0x03f2, + 0x0401, 0x0410, 0x041f, 0x042e, 0x043d, 0x044d, 0x045d, 0x046c, + 0x047b, 0x048b, 0x049a, 0x04a9, 0x04b8, 0x04c8, 0x04d8, 0x04e8, + // Entry 4380 - 43BF + 0x04f7, 0x0506, 0x0106, 0x0115, 0x0125, 0x0134, 0x0143, 0x0154, + 0x0163, 0x0173, 0x0183, 0x0192, 0x01a1, 0x01b0, 0x01bf, 0x01cf, + 0x01de, 0x01ee, 0x01ff, 0x020e, 0x0220, 0x022f, 0x023f, 0x024e, + 0x025d, 0x026e, 0x027d, 0x028d, 0x029c, 0x02ab, 0x02bd, 0x02cc, + 0x02dc, 0x02ec, 0x02fc, 0x030b, 0x031b, 0x032b, 0x033c, 0x034c, + 0x035c, 0x036e, 0x037e, 0x0390, 0x03a0, 0x03b0, 0x03c1, 0x03d2, + 0x03e3, 0x03f4, 0x0404, 0x0416, 0x0016, 0x0031, 0x0047, 0x005d, + 0x0075, 0x008c, 0x00a3, 0x00b9, 0x00d1, 0x00e9, 0x0100, 0x0117, + // Entry 43C0 - 43FF + 0x0131, 0x014b, 0x0164, 0x017d, 0x0196, 0x01b1, 0x01cb, 0x01e5, + 0x0204, 0x0223, 0x0244, 0x0264, 0x0284, 0x02a3, 0x02c4, 0x02e5, + 0x0305, 0x0305, 0x0318, 0x032c, 0x0340, 0x0354, 0x0367, 0x037b, + 0x038f, 0x03a3, 0x03b8, 0x03cb, 0x03df, 0x03f3, 0x0407, 0x041b, + 0x0430, 0x0443, 0x0457, 0x046c, 0x0480, 0x0494, 0x04a8, 0x04bc, + 0x04cf, 0x04e4, 0x04f9, 0x050e, 0x0522, 0x0537, 0x054c, 0x0560, + 0x0574, 0x0589, 0x059f, 0x05b6, 0x05cc, 0x05e4, 0x01e4, 0x01f6, + 0x020b, 0x021d, 0x022f, 0x0243, 0x0259, 0x026b, 0x027d, 0x0291, + // Entry 4400 - 443F + 0x02a2, 0x02b5, 0x02c8, 0x02db, 0x02ef, 0x0300, 0x0312, 0x0328, + 0x033c, 0x034f, 0x0362, 0x0375, 0x0388, 0x039b, 0x03ae, 0x03c1, + 0x03d4, 0x03ee, 0x03ee, 0x0402, 0x0417, 0x042c, 0x0441, 0x0454, + 0x046a, 0x0481, 0x0497, 0x04ae, 0x04c1, 0x04d7, 0x04ec, 0x0503, + 0x051a, 0x0530, 0x0546, 0x055b, 0x0570, 0x0585, 0x0598, 0x05af, + 0x05c6, 0x05df, 0x05f4, 0x060a, 0x061d, 0x0631, 0x0645, 0x0659, + 0x066f, 0x0684, 0x0699, 0x06af, 0x06c4, 0x06d8, 0x06ec, 0x0700, + 0x0714, 0x0732, 0x0751, 0x0771, 0x0792, 0x07b1, 0x03b1, 0x03c5, + // Entry 4440 - 447F + 0x03d9, 0x03ee, 0x0401, 0x0416, 0x0428, 0x043a, 0x044e, 0x0462, + 0x0475, 0x0488, 0x049b, 0x04af, 0x04c4, 0x04d7, 0x04eb, 0x04fe, + 0x0510, 0x0525, 0x0538, 0x054a, 0x055e, 0x0572, 0x0587, 0x059d, + 0x05b2, 0x05c4, 0x05d5, 0x05e6, 0x05f9, 0x01f9, 0x020e, 0x0220, + 0x0232, 0x0244, 0x0257, 0x026a, 0x027d, 0x0290, 0x02a3, 0x02b6, + 0x02c9, 0x02dc, 0x02ef, 0x0302, 0x0315, 0x0328, 0x033b, 0x034f, + 0x0362, 0x0375, 0x0388, 0x039b, 0x03ae, 0x03c1, 0x03d4, 0x03e7, + 0x03fa, 0x040d, 0x0420, 0x0433, 0x0446, 0x0459, 0x046c, 0x047f, + // Entry 4480 - 44BF + 0x0493, 0x04a7, 0x04ba, 0x00ba, 0x00d5, 0x00f2, 0x010f, 0x012c, + 0x0146, 0x0162, 0x0177, 0x018f, 0x01a7, 0x01bd, 0x01d3, 0x01e9, + 0x0202, 0x021c, 0x021c, 0x0239, 0x0256, 0x0273, 0x0291, 0x02ae, + 0x02cc, 0x02ea, 0x0308, 0x0326, 0x0345, 0x0363, 0x0382, 0x039b, + 0x03b4, 0x03cd, 0x03e7, 0x03ff, 0x0419, 0x0433, 0x044d, 0x0467, + 0x0482, 0x049c, 0x04b6, 0x04d0, 0x04e9, 0x0503, 0x051d, 0x0538, + 0x0551, 0x056b, 0x0585, 0x05a0, 0x05b9, 0x05d2, 0x05eb, 0x0604, + 0x061e, 0x0637, 0x0650, 0x066b, 0x0686, 0x06a1, 0x06bd, 0x06d8, + // Entry 44C0 - 44FF + 0x06f4, 0x0710, 0x072c, 0x0748, 0x0765, 0x0781, 0x079e, 0x07b5, + 0x07cc, 0x07e3, 0x07fb, 0x0811, 0x0829, 0x0841, 0x0859, 0x0871, + 0x088a, 0x08a2, 0x08ba, 0x08d2, 0x08e9, 0x0901, 0x0919, 0x0932, + 0x0949, 0x0961, 0x0979, 0x0992, 0x09a9, 0x09c0, 0x09d7, 0x09ee, + 0x0a06, 0x0a1d, 0x0a34, 0x0a47, 0x0a59, 0x0a6c, 0x0a7e, 0x0a92, + 0x0aa3, 0x0ab6, 0x0acb, 0x0add, 0x0af0, 0x0b02, 0x0b15, 0x0b27, + 0x0b39, 0x0b4c, 0x0b5e, 0x0b74, 0x0b88, 0x0b9a, 0x0bae, 0x0bc1, + 0x0bd4, 0x0be5, 0x0bf7, 0x0c09, 0x0c1b, 0x0c2c, 0x0c3f, 0x0c51, + // Entry 4500 - 453F + 0x0c62, 0x0c75, 0x0c87, 0x0c99, 0x0cab, 0x0cbd, 0x0cce, 0x0ce0, + 0x0cf3, 0x0d05, 0x0d17, 0x0d29, 0x0d3a, 0x0d4c, 0x0d5e, 0x0d72, + 0x0d84, 0x0d96, 0x0da8, 0x0dbb, 0x0dcc, 0x0ddd, 0x0dee, 0x0dff, + 0x0e11, 0x0e24, 0x0e35, 0x0e46, 0x0e5a, 0x0e6c, 0x0e7f, 0x0e90, + 0x0ea1, 0x0eb4, 0x0ec7, 0x0eda, 0x0eed, 0x0f00, 0x0f12, 0x0f23, + 0x0f34, 0x0f44, 0x0f54, 0x0f64, 0x0f74, 0x0f84, 0x0f95, 0x0fa6, + 0x0fb7, 0x03b7, 0x03c9, 0x03da, 0x03eb, 0x03fe, 0x0410, 0x0422, + 0x0433, 0x0446, 0x0459, 0x046b, 0x006b, 0x0081, 0x0098, 0x00b0, + // Entry 4540 - 457F + 0x00c7, 0x00df, 0x00f7, 0x0111, 0x0127, 0x013f, 0x0156, 0x016e, + 0x0184, 0x019b, 0x01b4, 0x01cc, 0x01e3, 0x01fa, 0x0211, 0x0227, + 0x023f, 0x0256, 0x026f, 0x0286, 0x029e, 0x02b5, 0x02ce, 0x02e6, + 0x0300, 0x0319, 0x0331, 0x0347, 0x035e, 0x0376, 0x038e, 0x03a5, + 0x03bd, 0x03bd, 0x03d1, 0x03e6, 0x03fc, 0x0411, 0x0427, 0x043d, + 0x0455, 0x0469, 0x047f, 0x0494, 0x04aa, 0x04be, 0x04d3, 0x04ea, + 0x0500, 0x0515, 0x052a, 0x053f, 0x0553, 0x0569, 0x057e, 0x0595, + 0x05aa, 0x05c0, 0x05d5, 0x05ec, 0x0602, 0x061a, 0x0631, 0x0647, + // Entry 4580 - 45BF + 0x065b, 0x0670, 0x0686, 0x069c, 0x06b1, 0x06c7, 0x02c7, 0x02d7, + 0x02e8, 0x02f9, 0x030b, 0x031c, 0x032e, 0x0340, 0x0351, 0x0361, + 0x0372, 0x0383, 0x0395, 0x03a6, 0x03b6, 0x03c7, 0x03d8, 0x03e9, + 0x03fb, 0x040c, 0x041d, 0x042e, 0x0440, 0x0450, 0x0461, 0x0472, + 0x0483, 0x0495, 0x04a6, 0x04b8, 0x04c9, 0x04db, 0x04eb, 0x04fc, + 0x050d, 0x051d, 0x052e, 0x0540, 0x0552, 0x0567, 0x0579, 0x0179, + 0x0196, 0x01b3, 0x01d0, 0x01ed, 0x0209, 0x0227, 0x0244, 0x0262, + 0x027f, 0x029c, 0x02ba, 0x02d7, 0x02f4, 0x0311, 0x032e, 0x034c, + // Entry 45C0 - 45FF + 0x036a, 0x0388, 0x03a5, 0x03c3, 0x03e0, 0x03fe, 0x041c, 0x0439, + 0x0456, 0x0474, 0x0491, 0x04af, 0x04cc, 0x04e9, 0x0507, 0x0526, + 0x0544, 0x0562, 0x057e, 0x059c, 0x05b9, 0x05d7, 0x05f5, 0x0612, + 0x0631, 0x064e, 0x066c, 0x068a, 0x06a8, 0x06c6, 0x06e3, 0x0701, + 0x071f, 0x073d, 0x075b, 0x0778, 0x0378, 0x0398, 0x0398, 0x03ab, + 0x03be, 0x03d1, 0x03e4, 0x03f7, 0x040a, 0x041d, 0x0430, 0x0443, + 0x0456, 0x0469, 0x047c, 0x048f, 0x04a2, 0x04b5, 0x04c8, 0x04dc, + 0x04f0, 0x0503, 0x0517, 0x052b, 0x053e, 0x0552, 0x0565, 0x0578, + // Entry 4600 - 463F + 0x058b, 0x059e, 0x05b1, 0x05c4, 0x05d7, 0x05ea, 0x05fd, 0x0610, + 0x0623, 0x0636, 0x0649, 0x065c, 0x066f, 0x0682, 0x0695, 0x06a8, + 0x06bb, 0x06ce, 0x06e1, 0x06f4, 0x0707, 0x071a, 0x072d, 0x0740, + 0x0753, 0x0766, 0x0779, 0x078c, 0x079f, 0x07b2, 0x07c5, 0x07d8, + 0x07eb, 0x07fe, 0x0811, 0x0824, 0x0837, 0x084a, 0x085d, 0x0870, + 0x0883, 0x0896, 0x08a9, 0x08bc, 0x08cf, 0x08e2, 0x08f8, 0x090b, + 0x091e, 0x0931, 0x0944, 0x0957, 0x096b, 0x097f, 0x0992, 0x09a5, + 0x09b8, 0x09cb, 0x09de, 0x09f1, 0x0a03, 0x0a15, 0x0a27, 0x0a39, + // Entry 4640 - 467F + 0x0a4b, 0x0a5d, 0x0a6f, 0x0a81, 0x0a94, 0x0aa7, 0x0aba, 0x0acc, + 0x0ade, 0x0af0, 0x0b03, 0x0b16, 0x0b29, 0x0b3b, 0x0b4d, 0x0b5f, + 0x0b71, 0x0b83, 0x0b95, 0x0ba7, 0x0bb9, 0x0bcb, 0x0bdd, 0x0bef, + 0x0c01, 0x0c13, 0x0c25, 0x0c37, 0x0c49, 0x0c5b, 0x0c6d, 0x0c7f, + 0x0c91, 0x0ca3, 0x0cb5, 0x0cc7, 0x0cd9, 0x0ceb, 0x0cfd, 0x0d0f, + 0x0d21, 0x0d33, 0x0d45, 0x0d57, 0x0d69, 0x0d7b, 0x0d8d, 0x0d9f, + 0x0db1, 0x0dc3, 0x0dd5, 0x0de7, 0x0df9, 0x0e0b, 0x0e1d, 0x0e2f, + 0x0e41, 0x0e53, 0x0e65, 0x0e77, 0x0e89, 0x0e9b, 0x0ead, 0x0ebf, + // Entry 4680 - 46BF + 0x0ed1, 0x0ee3, 0x0ef5, 0x0f07, 0x0f19, 0x0f2b, 0x0f3d, 0x0f53, + 0x0f69, 0x0f7f, 0x0f95, 0x0fab, 0x0fc1, 0x0fd7, 0x0fed, 0x1003, + 0x1019, 0x102f, 0x1045, 0x105b, 0x1071, 0x1087, 0x109d, 0x10b3, + 0x10c9, 0x10df, 0x10f1, 0x1103, 0x1115, 0x1127, 0x1139, 0x114b, + 0x115d, 0x116f, 0x1181, 0x1193, 0x11a5, 0x11b7, 0x11c9, 0x11db, + 0x11ed, 0x11ff, 0x1211, 0x1223, 0x1235, 0x1247, 0x1259, 0x126b, + 0x127d, 0x128f, 0x12a1, 0x12b3, 0x12c5, 0x12d7, 0x12e9, 0x12fb, + 0x130d, 0x131f, 0x1331, 0x1343, 0x1355, 0x1367, 0x1379, 0x138b, + // Entry 46C0 - 46FF + 0x139d, 0x13af, 0x13c1, 0x13d3, 0x13e5, 0x13f7, 0x1409, 0x141b, + 0x142d, 0x143f, 0x1451, 0x1463, 0x1475, 0x1487, 0x1499, 0x14ab, + 0x14bd, 0x14cf, 0x14e1, 0x14f3, 0x1505, 0x1517, 0x1529, 0x153b, + 0x154d, 0x155f, 0x1571, 0x1583, 0x1595, 0x15a7, 0x15b9, 0x15cb, + 0x15dd, 0x15ef, 0x1601, 0x1613, 0x1625, 0x1637, 0x1649, 0x165b, + 0x166d, 0x167f, 0x1691, 0x16a3, 0x16b5, 0x16c7, 0x16d9, 0x16eb, + 0x16fd, 0x170f, 0x1721, 0x1733, 0x1745, 0x1757, 0x1769, 0x177b, + 0x178d, 0x179f, 0x17b1, 0x17c3, 0x17d5, 0x17e7, 0x17f9, 0x180b, + // Entry 4700 - 473F + 0x181d, 0x182f, 0x1841, 0x1853, 0x1865, 0x1877, 0x1889, 0x189b, + 0x18ad, 0x18bf, 0x18d1, 0x18e3, 0x18f5, 0x1907, 0x1919, 0x192b, + 0x193d, 0x194f, 0x1961, 0x1973, 0x1985, 0x1997, 0x19a9, 0x19bb, + 0x19cd, 0x19df, 0x19f1, 0x1a03, 0x1a15, 0x1a27, 0x0227, 0x023b, + 0x024f, 0x0263, 0x0277, 0x028b, 0x029f, 0x02b3, 0x02c7, 0x02db, + 0x02f2, 0x0309, 0x0320, 0x0337, 0x034b, 0x035f, 0x0373, 0x038b, + 0x03a1, 0x03b6, 0x03cb, 0x03e2, 0x03f7, 0x03f7, 0x0409, 0x041b, + 0x042d, 0x043f, 0x0451, 0x0463, 0x0475, 0x0487, 0x0087, 0x0099, + // Entry 4740 - 477F + 0x00ab, 0x00bd, 0x00cf, 0x00e1, 0x00f4, 0x00f4, 0x0107, 0x0107, + 0x011a, 0x012d, 0x0140, 0x0153, 0x0166, 0x0179, 0x018c, 0x019f, + 0x01b2, 0x01c5, 0x01d8, 0x01eb, 0x01fe, 0x0211, 0x0224, 0x0237, + 0x024a, 0x025d, 0x0270, 0x0283, 0x0296, 0x02a9, 0x02bc, 0x02cf, + 0x02e2, 0x02f5, 0x0308, 0x031b, 0x032e, 0x0341, 0x0354, 0x0367, + 0x037a, 0x038d, 0x03a0, 0x03b3, 0x03c6, 0x03d9, 0x03ec, 0x03ff, + 0x0412, 0x0425, 0x0438, 0x044b, 0x004b, 0x005e, 0x0071, 0x0071, + 0x0084, 0x0084, 0x0097, 0x00b4, 0x00d0, 0x00ed, 0x010b, 0x0125, + // Entry 4780 - 47BF + 0x0140, 0x015d, 0x0179, 0x0195, 0x01b1, 0x01cd, 0x01eb, 0x0206, + 0x0221, 0x023f, 0x025b, 0x0275, 0x0292, 0x02ae, 0x02ca, 0x02e6, + 0x0301, 0x0301, 0x031e, 0x0339, 0x0354, 0x0371, 0x038c, 0x03aa, + 0x03cd, 0x03f1, 0x0415, 0x042b, 0x0440, 0x0456, 0x046d, 0x0480, + 0x0494, 0x04aa, 0x04bf, 0x04d4, 0x04e9, 0x04fe, 0x0515, 0x0529, + 0x0543, 0x0557, 0x056e, 0x0583, 0x0596, 0x05ac, 0x05c1, 0x05d6, + 0x05eb, 0x05ff, 0x061e, 0x063e, 0x0652, 0x0666, 0x067c, 0x0691, + 0x06a6, 0x06ba, 0x06d1, 0x06ed, 0x0703, 0x071e, 0x0733, 0x0749, + // Entry 47C0 - 47FF + 0x0760, 0x0779, 0x078c, 0x07a0, 0x07b6, 0x07cb, 0x07e0, 0x07fb, + 0x0810, 0x082b, 0x0840, 0x085d, 0x0874, 0x088e, 0x08a2, 0x08bc, + 0x08d0, 0x08e7, 0x08fc, 0x090f, 0x0925, 0x093a, 0x094f, 0x096a, + 0x097f, 0x0993, 0x0193, 0x01a7, 0x01bb, 0x01d1, 0x01e6, 0x0205, + 0x021a, 0x022e, 0x0245, 0x0261, 0x0261, 0x0274, 0x0286, 0x0299, + 0x02b2, 0x02c2, 0x02d3, 0x02e5, 0x02f7, 0x0309, 0x031b, 0x032d, + 0x0341, 0x0352, 0x0363, 0x0377, 0x0388, 0x0398, 0x03ab, 0x03bd, + 0x03bd, 0x03cf, 0x03e0, 0x03e0, 0x03f1, 0x0403, 0x0414, 0x0428, + // Entry 4800 - 483F + 0x0441, 0x0456, 0x046b, 0x0481, 0x0497, 0x04ab, 0x04c0, 0x04d5, + 0x04ea, 0x04ff, 0x0514, 0x0529, 0x053f, 0x0554, 0x0569, 0x057f, + 0x0594, 0x05a8, 0x05be, 0x05d3, 0x05e9, 0x05ff, 0x0614, 0x0629, + 0x063e, 0x0656, 0x0673, 0x0688, 0x069f, 0x029f, 0x02b8, 0x02c7, + 0x02d6, 0x02e5, 0x02f4, 0x0303, 0x0312, 0x0321, 0x0330, 0x033f, + 0x034e, 0x035d, 0x036c, 0x037b, 0x038a, 0x039a, 0x03a9, 0x03b8, + 0x03c7, 0x03d6, 0x03e5, 0x03f5, 0x0405, 0x0415, 0x0425, 0x0435, + 0x0444, 0x0044, 0x005a, 0x005a, 0x0078, 0x0096, 0x00b4, 0x00d2, + // Entry 4840 - 487F + 0x00f1, 0x0110, 0x012f, 0x0150, 0x016f, 0x018e, 0x01ad, 0x01ce, + 0x01ed, 0x020e, 0x022d, 0x024e, 0x026d, 0x028d, 0x02ad, 0x02cc, + 0x02ed, 0x030c, 0x032b, 0x034a, 0x0369, 0x038a, 0x03a9, 0x03ca, + 0x03e9, 0x0408, 0x0429, 0x044c, 0x0465, 0x047e, 0x0497, 0x04b0, + 0x04ca, 0x04e4, 0x04fe, 0x0518, 0x0532, 0x054c, 0x0566, 0x0580, + 0x059a, 0x05b5, 0x05d0, 0x05ea, 0x060c, 0x0626, 0x0640, 0x065a, + 0x0674, 0x068e, 0x06a8, 0x06c2, 0x02c2, 0x02eb, 0x030d, 0x032a, + 0x0347, 0x0362, 0x037d, 0x039a, 0x03b6, 0x03d2, 0x03ed, 0x040a, + // Entry 4880 - 48BF + 0x0427, 0x0443, 0x045e, 0x047c, 0x049a, 0x04b7, 0x04d4, 0x04f1, + 0x0510, 0x0110, 0x0133, 0x0156, 0x017b, 0x019f, 0x01c3, 0x01e6, + 0x020b, 0x0230, 0x0254, 0x0278, 0x029c, 0x02c2, 0x02e7, 0x030c, + 0x0330, 0x0356, 0x037c, 0x03a1, 0x03c5, 0x03ec, 0x0413, 0x0439, + 0x045f, 0x0485, 0x04ad, 0x04d4, 0x04fb, 0x0527, 0x0553, 0x0581, + 0x05ae, 0x05db, 0x0607, 0x0635, 0x0663, 0x0690, 0x06b5, 0x06db, + 0x0703, 0x072a, 0x0751, 0x0777, 0x079f, 0x07c7, 0x07ee, 0x0814, + 0x0827, 0x083e, 0x0855, 0x0874, 0x0074, 0x008b, 0x00a2, 0x00a2, + // Entry 48C0 - 48FF + 0x00be, 0x00df, 0x00f7, 0x010e, 0x0122, 0x0137, 0x014b, 0x0160, + 0x0160, 0x0174, 0x0189, 0x019d, 0x019d, 0x01b2, 0x01c7, 0x01dd, + 0x01f2, 0x0208, 0x021d, 0x0231, 0x0246, 0x025a, 0x026f, 0x0283, + 0x0297, 0x02ac, 0x02c0, 0x02d5, 0x02e9, 0x02fd, 0x0311, 0x0325, + 0x0339, 0x034e, 0x0363, 0x0377, 0x038b, 0x039f, 0x03b4, 0x03cb, + 0x03cb, 0x03e4, 0x03f9, 0x0412, 0x0012, 0x0023, 0x0037, 0x004b, + 0x0061, 0x0076, 0x008b, 0x00a3, 0x00c0, 0x00de, 0x00de, 0x00f8, + 0x011b, 0x0138, 0x015b, 0x017a, 0x0196, 0x01b2, 0x01d5, 0x01f1, + // Entry 4900 - 493F + 0x01f1, 0x020c, 0x022b, 0x0248, 0x0264, 0x0281, 0x029d, 0x02ba, + 0x02d7, 0x02f4, 0x0310, 0x032c, 0x0349, 0x0365, 0x0383, 0x03a1, + 0x03c0, 0x03db, 0x03f8, 0x0414, 0x0433, 0x0451, 0x0470, 0x048e, + 0x04ab, 0x04c8, 0x04e8, 0x0505, 0x0522, 0x0540, 0x055c, 0x057a, + 0x059d, 0x05b9, 0x05d5, 0x05f1, 0x060e, 0x062a, 0x0646, 0x0663, + 0x067f, 0x069b, 0x06b7, 0x06d4, 0x06f0, 0x070d, 0x072a, 0x0746, + 0x0763, 0x077f, 0x079c, 0x07b8, 0x07d4, 0x07f1, 0x080d, 0x082b, + 0x0847, 0x0864, 0x0881, 0x089d, 0x08ba, 0x08d6, 0x08f2, 0x090e, + // Entry 4940 - 497F + 0x092d, 0x012d, 0x0144, 0x015a, 0x0171, 0x0188, 0x01a0, 0x01b8, + 0x01cc, 0x01e1, 0x01f3, 0x020a, 0x0222, 0x0239, 0x0251, 0x0267, + 0x027d, 0x0293, 0x02a9, 0x02bf, 0x02d6, 0x02ee, 0x0307, 0x0320, + 0x0335, 0x034a, 0x0362, 0x0378, 0x038f, 0x03a3, 0x03b7, 0x03ce, + 0x03e4, 0x03fa, 0x0411, 0x0427, 0x043d, 0x0454, 0x0469, 0x048b, + 0x04ad, 0x00ad, 0x00c2, 0x00d8, 0x00ed, 0x0105, 0x0122, 0x013d, + 0x015b, 0x0187, 0x01ac, 0x01c6, 0x01e5, 0x0207, 0x0207, 0x0217, + 0x0228, 0x0239, 0x024b, 0x025c, 0x026e, 0x027f, 0x0291, 0x02a1, + // Entry 4980 - 49BF + 0x02b2, 0x02c2, 0x02d3, 0x02e3, 0x02f4, 0x0304, 0x0315, 0x0326, + 0x0337, 0x0349, 0x035b, 0x036c, 0x037e, 0x0390, 0x03a1, 0x03b2, + 0x03c3, 0x03d5, 0x03e6, 0x03f8, 0x040a, 0x041b, 0x042c, 0x043d, + 0x044f, 0x0461, 0x0474, 0x0487, 0x0498, 0x04aa, 0x04bc, 0x04cd, + 0x04df, 0x04f1, 0x0502, 0x0513, 0x0524, 0x0535, 0x0546, 0x0557, + 0x0569, 0x057b, 0x058e, 0x05a1, 0x05b2, 0x01b2, 0x01cb, 0x01f1, + 0x0218, 0x023f, 0x0266, 0x028f, 0x02b8, 0x02db, 0x02fd, 0x0320, + 0x0344, 0x0364, 0x0385, 0x03a8, 0x03ca, 0x03ec, 0x040e, 0x0430, + // Entry 49C0 - 49FF + 0x0454, 0x0475, 0x0496, 0x04ba, 0x04dc, 0x04fc, 0x051f, 0x0541, + 0x0563, 0x0585, 0x05a6, 0x01a6, 0x01c7, 0x01e8, 0x020b, 0x022d, + 0x024e, 0x0272, 0x029b, 0x02c5, 0x02e7, 0x0308, 0x032a, 0x034d, + 0x036c, 0x0396, 0x03b8, 0x03d9, 0x03fa, 0x041b, 0x043c, 0x045f, + 0x0484, 0x04a4, 0x04c7, 0x04e6, 0x0508, 0x0529, 0x0549, 0x0149, + 0x0169, 0x0189, 0x01ab, 0x01cc, 0x01ec, 0x020f, 0x0237, 0x0260, + 0x027c, 0x0297, 0x02b3, 0x02d0, 0x02e9, 0x030d, 0x0329, 0x0344, + 0x035f, 0x037a, 0x0397, 0x03b6, 0x03d0, 0x03ed, 0x0406, 0x0422, + // Entry 4A00 - 4A3F + 0x043d, 0x0457, 0x0057, 0x0073, 0x0096, 0x00ba, 0x00dc, 0x00dc, + 0x00f6, 0x0110, 0x012c, 0x0147, 0x0161, 0x017e, 0x01a0, 0x01a0, + 0x01ba, 0x01d5, 0x01f1, 0x020b, 0x0226, 0x0241, 0x025b, 0x0276, + 0x0292, 0x02ad, 0x02c9, 0x02e5, 0x0302, 0x031d, 0x0339, 0x0355, + 0x0372, 0x038d, 0x03a9, 0x03c5, 0x03e0, 0x03fc, 0x0417, 0x0433, + 0x044f, 0x046c, 0x0488, 0x04a5, 0x04c1, 0x04de, 0x04f9, 0x0515, + 0x0531, 0x054d, 0x0568, 0x0583, 0x059f, 0x05bc, 0x05d8, 0x05f5, + 0x0611, 0x062e, 0x064a, 0x0667, 0x0684, 0x06a0, 0x06be, 0x06d9, + // Entry 4A40 - 4A7F + 0x06f4, 0x070f, 0x072a, 0x0746, 0x0761, 0x077d, 0x0798, 0x07b4, + 0x07cf, 0x07eb, 0x0806, 0x0822, 0x083e, 0x0859, 0x0875, 0x0891, + 0x08ae, 0x08ca, 0x08e7, 0x0902, 0x091e, 0x093a, 0x0957, 0x0972, + 0x098f, 0x018f, 0x01ad, 0x01cc, 0x01eb, 0x020b, 0x022a, 0x024a, + 0x026a, 0x0289, 0x02a9, 0x02c7, 0x02eb, 0x030a, 0x0329, 0x0348, + 0x0368, 0x0387, 0x03a5, 0x03c4, 0x03e3, 0x0402, 0x0421, 0x0441, + 0x0460, 0x0480, 0x049f, 0x04be, 0x04de, 0x04fc, 0x051b, 0x0545, + 0x056e, 0x058e, 0x05ad, 0x05cd, 0x05ec, 0x0611, 0x0630, 0x0650, + // Entry 4A80 - 4ABF + 0x066f, 0x068f, 0x06af, 0x06cf, 0x06ed, 0x070c, 0x0736, 0x075f, + 0x077e, 0x079d, 0x07bd, 0x07e9, 0x0808, 0x0008, 0x0024, 0x0041, + 0x005e, 0x007c, 0x0099, 0x00b7, 0x00d5, 0x00f2, 0x0110, 0x012c, + 0x014e, 0x016b, 0x0188, 0x01a5, 0x01c3, 0x01e0, 0x01fc, 0x0219, + 0x0236, 0x0253, 0x0270, 0x028e, 0x02ab, 0x02c9, 0x02e6, 0x0303, + 0x0321, 0x033d, 0x035a, 0x0382, 0x03a9, 0x03c7, 0x03e4, 0x0402, + 0x041f, 0x0442, 0x045f, 0x047d, 0x049a, 0x04b8, 0x04d6, 0x04f4, + 0x0510, 0x052d, 0x0555, 0x057c, 0x0599, 0x05b6, 0x05d4, 0x05fe, + // Entry 4AC0 - 4AFF + 0x061b, 0x021b, 0x0233, 0x024c, 0x0264, 0x027e, 0x029e, 0x02bf, + 0x02bf, 0x02cd, 0x02db, 0x02eb, 0x02fa, 0x0309, 0x0317, 0x0327, + 0x0337, 0x0346, 0x0355, 0x0367, 0x0379, 0x038a, 0x039b, 0x03ac, + 0x03bf, 0x03d1, 0x03e3, 0x03fa, 0x0411, 0x042a, 0x0442, 0x045a, + 0x0471, 0x048a, 0x04a3, 0x04bb, 0x04d1, 0x04ea, 0x0501, 0x0519, + 0x0119, 0x0130, 0x0144, 0x0157, 0x016e, 0x0185, 0x0194, 0x01a4, + 0x01b3, 0x01c3, 0x01d2, 0x01e2, 0x01f9, 0x0211, 0x0228, 0x0240, + 0x024f, 0x025f, 0x026e, 0x027e, 0x028e, 0x029f, 0x02af, 0x02c0, + // Entry 4B00 - 4B3F + 0x02d1, 0x02e1, 0x02f2, 0x0302, 0x0313, 0x0324, 0x0335, 0x0347, + 0x0358, 0x036a, 0x037b, 0x038b, 0x039c, 0x03ac, 0x03bd, 0x03cd, + 0x03dd, 0x03ee, 0x03fe, 0x040f, 0x041f, 0x042f, 0x043f, 0x044f, + 0x045f, 0x0470, 0x0481, 0x0491, 0x04a1, 0x04b2, 0x04ce, 0x04e9, + 0x0505, 0x0519, 0x0539, 0x054c, 0x0560, 0x0573, 0x0587, 0x05a2, + 0x05be, 0x05d9, 0x05f5, 0x0608, 0x061c, 0x062f, 0x0643, 0x0650, + 0x065c, 0x066f, 0x0685, 0x06a2, 0x06b9, 0x06d8, 0x06f0, 0x02f0, + 0x0301, 0x0312, 0x0325, 0x0337, 0x0349, 0x035a, 0x036d, 0x0380, + // Entry 4B40 - 4B7F + 0x0392, 0x03a3, 0x03b7, 0x03cb, 0x03de, 0x03f1, 0x0404, 0x0419, + 0x042d, 0x0441, 0x045a, 0x0474, 0x0485, 0x0495, 0x04a5, 0x04b7, + 0x04c8, 0x04d9, 0x04e9, 0x04fb, 0x050d, 0x051e, 0x011e, 0x0132, + 0x0149, 0x015d, 0x0170, 0x017f, 0x018f, 0x019e, 0x01ae, 0x01bd, + 0x01cd, 0x01dc, 0x01ec, 0x01fb, 0x020b, 0x021b, 0x022c, 0x023c, + 0x024d, 0x025e, 0x026e, 0x027f, 0x028f, 0x02a0, 0x02b1, 0x02c2, + 0x02d4, 0x02e5, 0x02f8, 0x030a, 0x031b, 0x032c, 0x033c, 0x034d, + 0x035d, 0x036e, 0x037e, 0x038e, 0x039f, 0x03af, 0x03c0, 0x03d0, + // Entry 4B80 - 4BBF + 0x03e0, 0x03f0, 0x0400, 0x0410, 0x0421, 0x0432, 0x0442, 0x0452, + 0x0466, 0x0479, 0x048d, 0x04a0, 0x04b4, 0x04c7, 0x04db, 0x04ee, + 0x0502, 0x0514, 0x0525, 0x053d, 0x0554, 0x0566, 0x0579, 0x0593, + 0x059f, 0x05b2, 0x01b2, 0x01c9, 0x01e0, 0x01f7, 0x020e, 0x0225, + 0x023c, 0x0253, 0x026b, 0x0282, 0x0299, 0x02b0, 0x02c7, 0x02de, + 0x02f5, 0x030c, 0x0323, 0x033a, 0x0352, 0x0368, 0x037f, 0x0395, + 0x03ab, 0x03c1, 0x03d7, 0x03ee, 0x03ee, 0x0405, 0x041b, 0x0431, + 0x0449, 0x0460, 0x0477, 0x048d, 0x04a5, 0x04bd, 0x04d4, 0x00d4, + // Entry 4BC0 - 4BFF + 0x00eb, 0x00ff, 0x0112, 0x0122, 0x0131, 0x0140, 0x014f, 0x0160, + 0x0172, 0x0183, 0x0195, 0x01a7, 0x01b8, 0x01ca, 0x01db, 0x01ed, + 0x01ff, 0x0211, 0x0224, 0x0236, 0x0249, 0x025b, 0x026c, 0x027e, + 0x028f, 0x02a1, 0x02b2, 0x02c3, 0x02d5, 0x02e6, 0x02f8, 0x0309, + 0x031b, 0x032c, 0x033d, 0x034e, 0x035f, 0x0370, 0x0381, 0x0394, + 0x03a7, 0x03bb, 0x03ce, 0x03e2, 0x03f5, 0x0409, 0x041c, 0x0430, + 0x0444, 0x0451, 0x045f, 0x046c, 0x047a, 0x007a, 0x008b, 0x009b, + 0x00ab, 0x00bd, 0x00ce, 0x00df, 0x00ef, 0x0101, 0x0113, 0x0124, + // Entry 4C00 - 4C3F + 0x0137, 0x0143, 0x0156, 0x016a, 0x016a, 0x017b, 0x018c, 0x019d, + 0x01ae, 0x01bf, 0x01d1, 0x01e4, 0x01f6, 0x0209, 0x021b, 0x022e, + 0x0240, 0x0253, 0x0266, 0x0279, 0x028d, 0x02a0, 0x02b4, 0x02c7, + 0x02d9, 0x02ec, 0x02fe, 0x0311, 0x0323, 0x0335, 0x0348, 0x035a, + 0x036d, 0x037f, 0x0391, 0x03a3, 0x03b5, 0x03c7, 0x03d9, 0x03ec, + 0x03ff, 0x0419, 0x042e, 0x0444, 0x0044, 0x005c, 0x0071, 0x0085, + 0x0095, 0x00a6, 0x00b6, 0x00c7, 0x00d7, 0x00e8, 0x0100, 0x0119, + 0x0131, 0x014a, 0x015a, 0x016b, 0x017b, 0x018c, 0x019d, 0x01af, + // Entry 4C40 - 4C7F + 0x01c0, 0x01d2, 0x01e4, 0x01f5, 0x0207, 0x0218, 0x022a, 0x023c, + 0x024e, 0x0261, 0x0273, 0x0286, 0x0298, 0x02a9, 0x02bb, 0x02cc, + 0x02de, 0x02ef, 0x0300, 0x0312, 0x0323, 0x0335, 0x0346, 0x0357, + 0x0368, 0x0379, 0x038b, 0x039c, 0x03ae, 0x03c0, 0x03d1, 0x03e2, + 0x03f7, 0x040b, 0x0420, 0x0434, 0x0449, 0x0465, 0x0482, 0x049e, + 0x04bb, 0x04cf, 0x04e4, 0x04f8, 0x050d, 0x0520, 0x0535, 0x054d, + 0x0565, 0x056f, 0x057c, 0x0590, 0x05a9, 0x05ba, 0x05cd, 0x05df, + 0x05fa, 0x0618, 0x062a, 0x022a, 0x023c, 0x024d, 0x025e, 0x0271, + // Entry 4C80 - 4CBF + 0x0283, 0x0295, 0x02a6, 0x02b9, 0x02cc, 0x02de, 0x02ea, 0x02fe, + 0x0310, 0x0329, 0x033f, 0x0355, 0x0355, 0x036e, 0x0387, 0x03a2, + 0x03bc, 0x03d6, 0x03ef, 0x040a, 0x0425, 0x043f, 0x0459, 0x0476, + 0x0493, 0x04af, 0x04cb, 0x04e7, 0x0505, 0x0522, 0x053f, 0x0561, + 0x0584, 0x0184, 0x0193, 0x01a3, 0x01b2, 0x01c1, 0x01d0, 0x01e0, + 0x01ef, 0x01ff, 0x020f, 0x0220, 0x0230, 0x0241, 0x0252, 0x0263, + 0x0273, 0x0284, 0x0294, 0x02a5, 0x02a5, 0x02b6, 0x02c7, 0x02d9, + 0x02ea, 0x02fc, 0x030d, 0x031d, 0x032e, 0x033e, 0x0350, 0x0361, + // Entry 4CC0 - 4CFF + 0x0371, 0x0381, 0x0392, 0x03a2, 0x03b3, 0x03c4, 0x03d4, 0x03e4, + 0x03f4, 0x0404, 0x0414, 0x0424, 0x0434, 0x0445, 0x0459, 0x046c, + 0x0480, 0x0493, 0x04a6, 0x04ba, 0x04cd, 0x04e1, 0x04f5, 0x0507, + 0x0518, 0x052a, 0x0536, 0x0549, 0x055e, 0x0571, 0x058b, 0x05a3, + 0x05b4, 0x01b4, 0x01c4, 0x01d4, 0x01e4, 0x01f4, 0x0205, 0x0217, + 0x0228, 0x0228, 0x023a, 0x023a, 0x024b, 0x025d, 0x026e, 0x0280, + 0x0280, 0x0292, 0x02a4, 0x02b7, 0x02c9, 0x02dc, 0x02ef, 0x0301, + 0x0312, 0x0324, 0x0335, 0x0347, 0x0358, 0x0369, 0x037b, 0x038c, + // Entry 4D00 - 4D3F + 0x038c, 0x039e, 0x03af, 0x03c0, 0x03d1, 0x03e2, 0x03f3, 0x0404, + 0x0415, 0x0427, 0x0439, 0x044d, 0x004d, 0x005f, 0x0072, 0x0084, + 0x0097, 0x00a9, 0x00bc, 0x00ce, 0x00e1, 0x00f3, 0x0106, 0x0119, + 0x012d, 0x0140, 0x0154, 0x0168, 0x017c, 0x018f, 0x01a3, 0x01b6, + 0x01ca, 0x01de, 0x01f2, 0x0206, 0x021b, 0x022f, 0x0244, 0x0258, + 0x026d, 0x0281, 0x0294, 0x02a8, 0x02bb, 0x02cf, 0x02e2, 0x02f5, + 0x0309, 0x031c, 0x0330, 0x0344, 0x0357, 0x036a, 0x037d, 0x0390, + 0x03a3, 0x03b7, 0x03ca, 0x03dd, 0x03f4, 0x040b, 0x0421, 0x0438, + // Entry 4D40 - 4D7F + 0x044e, 0x0465, 0x047b, 0x0492, 0x04a8, 0x04bf, 0x04d3, 0x04e8, + 0x00e8, 0x00fc, 0x010f, 0x0122, 0x0137, 0x014b, 0x015f, 0x0172, + 0x0187, 0x019c, 0x01b0, 0x01b0, 0x01d5, 0x01ed, 0x0202, 0x0216, + 0x0216, 0x0226, 0x0237, 0x0247, 0x0258, 0x0268, 0x0279, 0x0291, + 0x02a9, 0x02a9, 0x02ba, 0x02cb, 0x02cb, 0x02dc, 0x02ed, 0x02fe, + 0x0310, 0x0321, 0x0333, 0x0345, 0x0356, 0x0368, 0x0379, 0x038b, + 0x039d, 0x03af, 0x03c2, 0x03d4, 0x03e7, 0x03f9, 0x040a, 0x041c, + 0x042d, 0x043f, 0x0450, 0x0050, 0x0061, 0x0073, 0x0084, 0x0096, + // Entry 4D80 - 4DBF + 0x00a7, 0x00b8, 0x00c9, 0x00c9, 0x00da, 0x00ec, 0x00ec, 0x00fd, + 0x010f, 0x0121, 0x0132, 0x0143, 0x0143, 0x0155, 0x016a, 0x017f, + 0x0193, 0x01a8, 0x01bc, 0x01d1, 0x01ed, 0x020a, 0x020a, 0x021f, + 0x0234, 0x0234, 0x0249, 0x025e, 0x0271, 0x0271, 0x027b, 0x027b, + 0x0291, 0x0291, 0x02a3, 0x02c0, 0x02e4, 0x02fd, 0x0316, 0x0332, + 0x034f, 0x034f, 0x036b, 0x0386, 0x03a1, 0x03be, 0x03da, 0x03f6, + 0x0411, 0x0011, 0x002b, 0x0046, 0x0061, 0x007c, 0x0097, 0x0097, + 0x00a4, 0x00b2, 0x00bf, 0x00cd, 0x00da, 0x00e8, 0x00fd, 0x0113, + // Entry 4DC0 - 4DFF + 0x0128, 0x013e, 0x014b, 0x0159, 0x0166, 0x0174, 0x0182, 0x0191, + 0x019f, 0x01ae, 0x01bd, 0x01cd, 0x01db, 0x01ea, 0x01f8, 0x0207, + 0x0216, 0x0226, 0x0235, 0x0245, 0x0254, 0x0264, 0x0273, 0x0281, + 0x0290, 0x029e, 0x02ad, 0x02bb, 0x02ca, 0x02d8, 0x02e7, 0x02f5, + 0x0304, 0x0312, 0x0321, 0x032f, 0x033d, 0x034c, 0x035a, 0x0369, + 0x0377, 0x0386, 0x0395, 0x03a3, 0x03b1, 0x03c3, 0x03d4, 0x03e6, + 0x03f7, 0x0409, 0x0422, 0x043c, 0x0455, 0x046f, 0x0480, 0x0492, + 0x04a3, 0x04b5, 0x04c5, 0x04da, 0x04ec, 0x04fd, 0x050c, 0x051e, + // Entry 4E00 - 4E3F + 0x0536, 0x053d, 0x0548, 0x0552, 0x0563, 0x056d, 0x057c, 0x0592, + 0x05a1, 0x05af, 0x05bd, 0x05cd, 0x05dc, 0x05eb, 0x05f9, 0x0609, + 0x0619, 0x0628, 0x0228, 0x023d, 0x023d, 0x0250, 0x0250, 0x025c, + 0x026c, 0x027d, 0x028d, 0x029e, 0x02ae, 0x02bf, 0x02d7, 0x02f0, + 0x0308, 0x0321, 0x0331, 0x0342, 0x0352, 0x0363, 0x0374, 0x0386, + 0x0397, 0x03a9, 0x03bb, 0x03cc, 0x03de, 0x03ef, 0x0401, 0x0413, + 0x0425, 0x0438, 0x044a, 0x045d, 0x046f, 0x0480, 0x0492, 0x04a3, + 0x04b5, 0x04c6, 0x04d7, 0x04e9, 0x04fa, 0x050c, 0x051d, 0x052e, + // Entry 4E40 - 4E7F + 0x053f, 0x0550, 0x0561, 0x0573, 0x0585, 0x0596, 0x05a7, 0x05bc, + 0x05d0, 0x05e5, 0x05f9, 0x060e, 0x062a, 0x0647, 0x0663, 0x0680, + 0x0694, 0x06ae, 0x06c3, 0x06d7, 0x06f1, 0x0706, 0x071e, 0x0733, + 0x0747, 0x075a, 0x076c, 0x0781, 0x078e, 0x07a7, 0x07b1, 0x03b1, + 0x03c3, 0x03d4, 0x03e5, 0x03f8, 0x040a, 0x041c, 0x042d, 0x0440, + 0x0453, 0x0465, 0x0065, 0x0075, 0x0086, 0x0096, 0x00a7, 0x00b7, + 0x00c8, 0x00e0, 0x00f9, 0x0111, 0x012a, 0x013a, 0x014b, 0x015b, + 0x016c, 0x017d, 0x018f, 0x01a0, 0x01b2, 0x01c4, 0x01d5, 0x01e7, + // Entry 4E80 - 4EBF + 0x01f8, 0x020a, 0x021c, 0x022e, 0x0241, 0x0253, 0x0266, 0x0278, + 0x0289, 0x029b, 0x02ac, 0x02be, 0x02cf, 0x02e0, 0x02f2, 0x0303, + 0x0315, 0x0326, 0x0337, 0x0348, 0x0359, 0x036a, 0x037c, 0x038e, + 0x039f, 0x03b0, 0x03c5, 0x03d9, 0x03ee, 0x0402, 0x0417, 0x0433, + 0x0450, 0x0050, 0x0064, 0x0079, 0x008d, 0x00a2, 0x00ba, 0x00cf, + 0x00e3, 0x00f6, 0x0108, 0x011c, 0x0129, 0x013d, 0x0152, 0x0167, + 0x0180, 0x0199, 0x01b2, 0x01ca, 0x0202, 0x0238, 0x026b, 0x02a5, + 0x02df, 0x02ff, 0x0329, 0x0353, 0x037d, 0x03aa, 0x03d6, 0x0400, + // Entry 4EC0 - 4EFF + 0x0434, 0x0469, 0x0490, 0x04b5, 0x04db, 0x04f5, 0x0513, 0x0532, + 0x0132, 0x013f, 0x014d, 0x015a, 0x0168, 0x0175, 0x0183, 0x0198, + 0x01ae, 0x01c3, 0x01d9, 0x01e6, 0x01f4, 0x0201, 0x020f, 0x021d, + 0x022c, 0x023a, 0x0249, 0x0258, 0x0266, 0x0275, 0x0283, 0x0292, + 0x02a1, 0x02b0, 0x02c0, 0x02cf, 0x02df, 0x02ee, 0x02fc, 0x030b, + 0x0319, 0x0328, 0x0336, 0x0344, 0x0353, 0x0361, 0x0370, 0x037e, + 0x038c, 0x039a, 0x03a8, 0x03b6, 0x03c5, 0x03d4, 0x03e2, 0x03f0, + 0x03ff, 0x0411, 0x0422, 0x0434, 0x0445, 0x0457, 0x0470, 0x048a, + // Entry 4F00 - 4F3F + 0x04a3, 0x04bd, 0x04ce, 0x04e0, 0x04f1, 0x0503, 0x0515, 0x0526, + 0x0536, 0x054b, 0x0555, 0x0566, 0x057c, 0x058a, 0x018a, 0x0199, + 0x01a7, 0x01b5, 0x01c5, 0x01d4, 0x01e3, 0x01f1, 0x0201, 0x0211, + 0x0220, 0x0220, 0x023d, 0x0254, 0x0278, 0x029c, 0x02c0, 0x02e5, + 0x0311, 0x0329, 0x0356, 0x036b, 0x038e, 0x03b8, 0x03e9, 0x03e9, + 0x03f7, 0x0406, 0x0414, 0x0423, 0x0431, 0x0440, 0x044e, 0x045d, + 0x046b, 0x047a, 0x0489, 0x0499, 0x04a8, 0x04b8, 0x04c8, 0x04d7, + 0x04e7, 0x04f6, 0x0506, 0x0516, 0x0526, 0x0537, 0x0547, 0x0558, + // Entry 4F40 - 4F7F + 0x0568, 0x0577, 0x0587, 0x0596, 0x05a6, 0x05b5, 0x05c4, 0x05d4, + 0x05e3, 0x05f3, 0x0602, 0x0611, 0x0620, 0x062f, 0x063e, 0x064e, + 0x065d, 0x066c, 0x067c, 0x068f, 0x06a1, 0x06b4, 0x06c6, 0x06d9, + 0x06eb, 0x06fe, 0x0710, 0x0723, 0x0735, 0x0748, 0x0759, 0x0769, + 0x0369, 0x0379, 0x0388, 0x0397, 0x03a8, 0x03b8, 0x03c8, 0x03d7, + 0x03e8, 0x03f9, 0x0409, 0x0009, 0x0017, 0x0026, 0x0035, 0x0043, + 0x0051, 0x0069, 0x0077, 0x0086, 0x0094, 0x00a2, 0x00b0, 0x00bf, + 0x00ce, 0x00dc, 0x00ea, 0x00f8, 0x0107, 0x0115, 0x0122, 0x0130, + // Entry 4F80 - 4FBF + 0x013f, 0x014d, 0x0165, 0x0174, 0x0183, 0x0192, 0x0192, 0x01af, + 0x01cc, 0x01f2, 0x0203, 0x0215, 0x0226, 0x0238, 0x0249, 0x025b, + 0x026c, 0x027e, 0x028f, 0x02a1, 0x02b3, 0x02c3, 0x02c3, 0x02d2, + 0x02e0, 0x02ee, 0x02fe, 0x030d, 0x031c, 0x032a, 0x033a, 0x034a, + 0x0359, 0x0368, 0x037a, 0x0391, 0x03a2, 0x03b1, 0x03bf, 0x03bf, + 0x03de, 0x03fa, 0x0417, 0x0434, 0x0451, 0x046e, 0x048b, 0x04a8, + 0x04c4, 0x04e0, 0x04fe, 0x051b, 0x0538, 0x0556, 0x0574, 0x0591, + 0x05af, 0x05cd, 0x05eb, 0x060a, 0x0627, 0x0644, 0x0661, 0x067e, + // Entry 4FC0 - 4FFF + 0x069b, 0x06ba, 0x06d9, 0x06f8, 0x0716, 0x0735, 0x0753, 0x0772, + 0x078f, 0x07a9, 0x07c4, 0x07df, 0x07fa, 0x0815, 0x0830, 0x084b, + 0x0865, 0x087f, 0x089b, 0x08b6, 0x08d1, 0x08ed, 0x0909, 0x0924, + 0x0940, 0x095c, 0x0978, 0x0995, 0x09b0, 0x09cb, 0x09e6, 0x0a01, + 0x0a1c, 0x0a39, 0x0a56, 0x0a73, 0x0a8f, 0x0aac, 0x0ac8, 0x0ae5, + 0x0afb, 0x0b10, 0x0b25, 0x0b3c, 0x0b52, 0x0b68, 0x0b7d, 0x0b94, + 0x0bab, 0x0bc1, 0x0bd7, 0x0bf0, 0x0c09, 0x0c21, 0x0c39, 0x0c51, + 0x0c6b, 0x0c84, 0x0c9d, 0x009d, 0x00ab, 0x00ab, 0x00c0, 0x00d5, + // Entry 5000 - 503F + 0x00ea, 0x00ff, 0x0114, 0x0129, 0x013e, 0x0154, 0x0169, 0x017e, + 0x0194, 0x01a9, 0x01be, 0x01d3, 0x01e8, 0x01fe, 0x0213, 0x0229, + 0x023e, 0x0253, 0x0269, 0x027d, 0x0291, 0x02a5, 0x02b9, 0x02cd, + 0x02e2, 0x02f7, 0x0311, 0x032b, 0x0345, 0x035f, 0x0379, 0x0393, + 0x03ad, 0x03c8, 0x03e2, 0x03fe, 0x0415, 0x0434, 0x0456, 0x0473, + 0x0498, 0x04b4, 0x04cb, 0x04ed, 0x050a, 0x0524, 0x0544, 0x0569, + 0x0589, 0x05aa, 0x05c6, 0x05de, 0x0605, 0x0627, 0x0645, 0x0245, + 0x0257, 0x026a, 0x027c, 0x028f, 0x02a1, 0x02b4, 0x02ce, 0x02e9, + // Entry 5040 - 507F + 0x0303, 0x0303, 0x0315, 0x0328, 0x033a, 0x034d, 0x0360, 0x0374, + 0x0387, 0x039b, 0x03af, 0x03c2, 0x03d6, 0x03e9, 0x03fd, 0x0411, + 0x0425, 0x043a, 0x044e, 0x0463, 0x0477, 0x048a, 0x049e, 0x04b1, + 0x04c5, 0x04d8, 0x04eb, 0x04ff, 0x0512, 0x0526, 0x0539, 0x054c, + 0x055f, 0x0572, 0x0585, 0x0599, 0x05ad, 0x05c0, 0x05d3, 0x05ea, + 0x0600, 0x0617, 0x062d, 0x0644, 0x0662, 0x0681, 0x069f, 0x029f, + 0x02b5, 0x02cc, 0x02e2, 0x02f9, 0x0313, 0x032a, 0x0340, 0x0355, + 0x036c, 0x037b, 0x0391, 0x03a9, 0x03bf, 0x03d5, 0x03d5, 0x03e9, + // Entry 5080 - 50BF + 0x03fc, 0x040f, 0x0424, 0x0438, 0x044c, 0x045f, 0x0474, 0x0489, + 0x049d, 0x04b1, 0x04c5, 0x04db, 0x04f0, 0x0505, 0x0519, 0x052f, + 0x0545, 0x055a, 0x056e, 0x0585, 0x059c, 0x05b2, 0x05c8, 0x05de, + 0x05f6, 0x060d, 0x0624, 0x0640, 0x0240, 0x0251, 0x0262, 0x0273, + 0x0285, 0x0296, 0x02a8, 0x02b9, 0x02cb, 0x02dc, 0x02ee, 0x02ff, + 0x0311, 0x0322, 0x0333, 0x0344, 0x0356, 0x0367, 0x0378, 0x038a, + 0x039d, 0x03af, 0x03c0, 0x03d2, 0x03e3, 0x03f4, 0x0405, 0x0416, + 0x0427, 0x0439, 0x044a, 0x045b, 0x046b, 0x006b, 0x0086, 0x00a2, + // Entry 50C0 - 50FF + 0x00bd, 0x00d9, 0x00f4, 0x0110, 0x012b, 0x0147, 0x0162, 0x017e, + 0x0199, 0x01b4, 0x01cf, 0x01eb, 0x0206, 0x0221, 0x023d, 0x025a, + 0x0276, 0x0291, 0x02ad, 0x02c8, 0x02c8, 0x02e3, 0x02fe, 0x0319, + 0x0335, 0x0350, 0x036b, 0x0385, 0x039a, 0x03ae, 0x03c2, 0x03d6, + 0x03ea, 0x03ff, 0x0417, 0x0017, 0x0027, 0x003f, 0x0059, 0x0079, + 0x0092, 0x00ac, 0x00cd, 0x00e8, 0x0102, 0x0113, 0x0124, 0x0140, + 0x0161, 0x017c, 0x019d, 0x01b7, 0x01d7, 0x01f3, 0x0210, 0x022d, + 0x0254, 0x026a, 0x027c, 0x029a, 0x02bc, 0x02df, 0x02fc, 0x0319, + // Entry 5100 - 513F + 0x032a, 0x033b, 0x0358, 0x037f, 0x0390, 0x03aa, 0x03c6, 0x03e2, + 0x03fc, 0x0418, 0x0432, 0x044d, 0x0468, 0x047b, 0x048f, 0x04a2, + 0x04bf, 0x04d0, 0x04e9, 0x0506, 0x0537, 0x055a, 0x056e, 0x0581, + 0x0594, 0x05b1, 0x05c5, 0x05d9, 0x05eb, 0x0607, 0x0623, 0x0660, + 0x0684, 0x06c7, 0x06da, 0x06ef, 0x0700, 0x0712, 0x0725, 0x073a, + 0x074c, 0x0767, 0x077b, 0x078d, 0x07a1, 0x07b2, 0x07cb, 0x07e6, + 0x0806, 0x0817, 0x0833, 0x084f, 0x086c, 0x0880, 0x089f, 0x08b1, + 0x08c4, 0x08d5, 0x08e7, 0x0912, 0x0936, 0x095b, 0x097d, 0x099f, + // Entry 5140 - 517F + 0x09cb, 0x09ed, 0x0a11, 0x0a34, 0x0a56, 0x0a78, 0x0aa2, 0x0ac5, + 0x0ae7, 0x0b09, 0x0b36, 0x0b59, 0x0b7b, 0x0ba7, 0x0bc9, 0x0bed, + 0x0c19, 0x0c3c, 0x0c4e, 0x0c60, 0x0c74, 0x0c88, 0x0c99, 0x0cab, + 0x0cbd, 0x0cd9, 0x0cec, 0x0cfe, 0x0d23, 0x0d36, 0x0d47, 0x0d60, + 0x0d76, 0x0d8f, 0x0da1, 0x0dbe, 0x0dd1, 0x0de3, 0x0df7, 0x0e09, + 0x0e1b, 0x0e2e, 0x0e46, 0x0e63, 0x0e76, 0x0e89, 0x0e99, 0x0eb3, + 0x0ed7, 0x0ee8, 0x0f11, 0x0f2c, 0x0f46, 0x0f61, 0x0f7c, 0x0f95, + 0x0fa8, 0x0fbb, 0x0fcc, 0x0fdd, 0x0ff9, 0x101a, 0x1034, 0x1051, + // Entry 5180 - 51BF + 0x106e, 0x1087, 0x109a, 0x10ae, 0x10c1, 0x10d4, 0x10ef, 0x1113, + 0x1141, 0x115d, 0x117a, 0x119d, 0x11c5, 0x11e1, 0x1202, 0x1224, + 0x1244, 0x126c, 0x1289, 0x12a5, 0x12cc, 0x12e8, 0x1304, 0x1320, + 0x133c, 0x134d, 0x1363, 0x1375, 0x139f, 0x13c1, 0x13e4, 0x140e, + 0x1429, 0x1445, 0x146b, 0x1487, 0x14ab, 0x14c7, 0x14eb, 0x1506, + 0x1521, 0x1547, 0x1563, 0x157e, 0x15a1, 0x15bc, 0x15e7, 0x1609, + 0x1625, 0x1640, 0x165c, 0x167f, 0x16a4, 0x16d1, 0x16ed, 0x1711, + 0x1734, 0x1751, 0x1772, 0x179f, 0x17bb, 0x17da, 0x17f6, 0x181b, + // Entry 51C0 - 51FF + 0x183f, 0x185a, 0x187d, 0x1898, 0x18b4, 0x18d9, 0x18f4, 0x1910, + 0x192c, 0x1948, 0x196d, 0x198a, 0x19a6, 0x19c3, 0x19dd, 0x19f8, + 0x1a1b, 0x1a36, 0x1a49, 0x1a6a, 0x1a7c, 0x1aa4, 0x1ab6, 0x1ae2, + 0x1af6, 0x1b08, 0x1b1a, 0x1b2d, 0x1b45, 0x1b62, 0x1b83, 0x1b95, + 0x1ba8, 0x1bbd, 0x1bd3, 0x1bf3, 0x1c04, 0x1c1d, 0x1c36, 0x1c53, + 0x1c65, 0x1c80, 0x1c9f, 0x1cb3, 0x1cc6, 0x1cde, 0x1cf1, 0x1d15, + 0x1d38, 0x1d55, 0x1d7a, 0x1d96, 0x1daa, 0x1dbd, 0x1dde, 0x1dfb, + 0x1e19, 0x1e31, 0x1e42, 0x1e5f, 0x1e71, 0x1e8d, 0x1eb8, 0x1ed4, + // Entry 5200 - 523F + 0x1efa, 0x1f11, 0x1f23, 0x1f46, 0x1f62, 0x1f83, 0x1f95, 0x1fa7, + 0x1fc3, 0x1fd5, 0x1fe8, 0x1ffc, 0x2011, 0x2022, 0x2038, 0x204e, + 0x2060, 0x2071, 0x208c, 0x20a8, 0x20c3, 0x20df, 0x20fa, 0x2115, + 0x2130, 0x214b, 0x2164, 0x2175, 0x2188, 0x21a4, 0x21c1, 0x21e1, + 0x21ff, 0x221b, 0x222e, 0x223e, 0x2250, 0x2261, 0x2274, 0x2295, + 0x22ba, 0x22cb, 0x22dd, 0x22f3, 0x2308, 0x233d, 0x2354, 0x2365, + 0x2386, 0x2398, 0x23a9, 0x23c5, 0x23e2, 0x23ff, 0x2418, 0x242b, + 0x243c, 0x244d, 0x245f, 0x2470, 0x2489, 0x24a3, 0x24c6, 0x24e2, + // Entry 5240 - 527F + 0x24fd, 0x251a, 0x2535, 0x254f, 0x256c, 0x2588, 0x25a2, 0x25bd, + 0x25de, 0x25f9, 0x2625, 0x263f, 0x265b, 0x2680, 0x26aa, 0x26c4, + 0x26e0, 0x26fb, 0x2715, 0x2730, 0x274a, 0x2765, 0x277f, 0x2799, + 0x27b3, 0x27d5, 0x27f7, 0x2819, 0x2833, 0x2858, 0x2872, 0x288d, + 0x28a7, 0x28c1, 0x28db, 0x28f6, 0x2911, 0x292c, 0x2948, 0x2963, + 0x297e, 0x299b, 0x29b6, 0x29cf, 0x29e9, 0x2a03, 0x2a28, 0x2a43, + 0x2a5d, 0x2a6f, 0x2a8e, 0x2aa0, 0x2ab3, 0x2ac6, 0x2ad9, 0x2aec, + 0x2b09, 0x2b1b, 0x2b3c, 0x2b4e, 0x2b6a, 0x2b89, 0x2b9c, 0x2baf, + // Entry 5280 - 52BF + 0x2bc4, 0x2bfa, 0x2c3c, 0x2c50, 0x2c61, 0x2c7c, 0x2c95, 0x2caf, + 0x2cc1, 0x2cd3, 0x2ce7, 0x2cfa, 0x2d0f, 0x2d30, 0x2d41, 0x2d7b, + 0x2d8d, 0x2d9f, 0x2dbe, 0x2dd0, 0x2de2, 0x2df9, 0x2e0b, 0x2e1d, + 0x2e3c, 0x2e51, 0x2e66, 0x2e77, 0x2e8b, 0x2ea7, 0x2ed3, 0x2ef8, + 0x2f1d, 0x2f3a, 0x2f57, 0x2f7f, 0x2f9d, 0x2fba, 0x2fd8, 0x2ff5, + 0x3012, 0x3030, 0x304e, 0x3075, 0x3092, 0x30b0, 0x30d7, 0x30fa, + 0x3117, 0x313c, 0x3161, 0x317e, 0x319c, 0x31ba, 0x31d8, 0x3205, + 0x3225, 0x3244, 0x3261, 0x327f, 0x329c, 0x32c1, 0x32e0, 0x32fd, + // Entry 52C0 - 52FF + 0x3324, 0x3359, 0x3388, 0x33a7, 0x33d0, 0x33ee, 0x340c, 0x342b, + 0x345f, 0x347b, 0x349e, 0x34c8, 0x34ee, 0x350b, 0x3529, 0x3545, + 0x3559, 0x3577, 0x359e, 0x35b7, 0x35e4, 0x35f9, 0x360b, 0x3627, + 0x3639, 0x3655, 0x3679, 0x368a, 0x369c, 0x36b1, 0x36c4, 0x36d5, + 0x36f0, 0x3702, 0x371d, 0x3739, 0x3756, 0x3778, 0x379a, 0x37bf, + 0x37da, 0x37f7, 0x3814, 0x383a, 0x3855, 0x3879, 0x3897, 0x38ba, + 0x38d5, 0x38f0, 0x3914, 0x3939, 0x3956, 0x396d, 0x398c, 0x39ab, + 0x39c5, 0x39df, 0x39f1, 0x3a05, 0x3a24, 0x3a47, 0x3a63, 0x3a75, + // Entry 5300 - 533F + 0x3a87, 0x3a99, 0x3ab4, 0x3adc, 0x3aed, 0x3b09, 0x3b1f, 0x3b31, + 0x3b43, 0x3b55, 0x3b68, 0x3b7c, 0x3b8d, 0x3b9f, 0x3bb0, 0x3bc2, + 0x3bd3, 0x3bec, 0x3bfe, 0x3c15, 0x3c2a, 0x3c3f, 0x3c52, 0x3c6d, + 0x3c8a, 0x3ca6, 0x3cc3, 0x3cf0, 0x3d11, 0x3d25, 0x3d41, 0x3d65, + 0x3d82, 0x3d9b, 0x3dac, 0x3dbe, 0x3dd1, 0x3ded, 0x3e0f, 0x3e30, + 0x3e44, 0x3e5e, 0x3e70, 0x3e83, 0x3e94, 0x3ead, 0x3ec7, 0x3ee0, + 0x3ef1, 0x3f0a, 0x3f1c, 0x3f2e, 0x3f50, 0x3f7b, 0x3f90, 0x3fae, + 0x3fcd, 0x3ff5, 0x4014, 0x4041, 0x405f, 0x407e, 0x409d, 0x40c6, + // Entry 5340 - 537F + 0x40ee, 0x411f, 0x4146, 0x4165, 0x4179, 0x418a, 0x419d, 0x41af, + 0x41d1, 0x41f4, 0x4216, 0x4251, 0x4273, 0x428a, 0x42a5, 0x42c4, + 0x42f4, 0x4308, 0x432d, 0x434e, 0x4370, 0x4392, 0x43b9, 0x43dc, + 0x43fd, 0x441e, 0x4442, 0x4463, 0x4487, 0x44ad, 0x44be, 0x44d0, + 0x44e2, 0x44f4, 0x4508, 0x4519, 0x4532, 0x454c, 0x4566, 0x4580, + 0x4599, 0x45b2, 0x45cc, 0x45e5, 0x45ff, 0x461c, 0x4630, 0x464e, + 0x466b, 0x4688, 0x46ab, 0x46bc, 0x46ce, 0x46df, 0x46f0, 0x4701, + 0x471b, 0x472d, 0x4747, 0x4762, 0x477e, 0x4799, 0x47b5, 0x47d1, + // Entry 5380 - 53BF + 0x47ed, 0x4808, 0x4824, 0x4840, 0x485d, 0x4879, 0x4894, 0x48af, + 0x48ca, 0x48e5, 0x4901, 0x491c, 0x4933, 0x4945, 0x4968, 0x497d, + 0x498f, 0x49a1, 0x49b4, 0x49cf, 0x49ec, 0x4a0a, 0x4a26, 0x4a44, + 0x4a61, 0x4a7c, 0x4a9e, 0x4ab1, 0x4ac5, 0x4ad9, 0x4aeb, 0x4b00, + 0x4b35, 0x4b6a, 0x4b7e, 0x4b91, 0x4ba5, 0x4bba, 0x4bd1, 0x4be4, + 0x4bff, 0x4c1b, 0x4c2e, 0x4c49, 0x4c66, 0x4c85, 0x4ca2, 0x4cbf, + 0x4cdc, 0x4cfe, 0x4d1e, 0x4d3b, 0x4d58, 0x4d75, 0x4d8a, 0x4d9d, + 0x4db5, 0x4ddf, 0x4df3, 0x4e05, 0x4e29, 0x4e3c, 0x4e51, 0x4e62, + // Entry 53C0 - 53FF + 0x4e78, 0x4e8a, 0x4e9d, 0x4ebf, 0x4ed2, 0x4ee6, 0x4ef7, 0x4f10, + 0x4f22, 0x4f35, 0x4f49, 0x4f5b, 0x4f70, 0x4f82, 0x4f95, 0x4fa6, + 0x4fc0, 0x4fda, 0x4ff4, 0x500a, 0x501c, 0x5051, 0x506b, 0x507d, + 0x5098, 0x50b4, 0x50d0, 0x50ec, 0x5109, 0x5124, 0x5137, 0x5149, + 0x515a, 0x5170, 0x5181, 0x5197, 0x51a9, 0x51bb, 0x51d8, 0x51f3, + 0x5228, 0x5239, 0x524c, 0x525e, 0x5270, 0x5282, 0x52a8, 0x52b8, + 0x52cc, 0x52e0, 0x530f, 0x5333, 0x5365, 0x5376, 0x5387, 0x5398, + 0x53b0, 0x53cb, 0x53e5, 0x540c, 0x5438, 0x544e, 0x5467, 0x548a, + // Entry 5400 - 543F + 0x549d, 0x54ae, 0x54cb, 0x54ed, 0x5509, 0x5522, 0x5536, 0x5549, + 0x5569, 0x5585, 0x5596, 0x55ac, 0x55bd, 0x55da, 0x55f3, 0x5605, + 0x5627, 0x5649, 0x5664, 0x567f, 0x569b, 0x56b6, 0x56da, 0x56fd, + 0x570f, 0x5721, 0x5734, 0x5746, 0x5760, 0x577f, 0x579b, 0x57b7, + 0x57d2, 0x57ee, 0x5810, 0x582c, 0x5847, 0x5862, 0x587e, 0x5899, + 0x58b5, 0x58d0, 0x58ec, 0x5908, 0x5923, 0x593f, 0x595c, 0x5977, + 0x599a, 0x59b5, 0x59d3, 0x59e7, 0x5a03, 0x5a15, 0x5a2f, 0x5a4a, + 0x5a66, 0x5a83, 0x5a96, 0x5aa9, 0x5abe, 0x5ad2, 0x5ae4, 0x5b03, + // Entry 5440 - 547F + 0x5b15, 0x5b26, 0x5b3c, 0x5b5f, 0x5b71, 0x5b84, 0x5b96, 0x5ba7, + 0x5bc0, 0x5bd2, 0x5be4, 0x5c00, 0x5c12, 0x5c25, 0x5c36, 0x5c48, + 0x5c62, 0x5c76, 0x5c88, 0x5ca2, 0x5cbd, 0x5cd7, 0x5cf4, 0x5d20, + 0x5d33, 0x5d4f, 0x5d6b, 0x5d88, 0x5da5, 0x5dd0, 0x5ded, 0x5e00, + 0x5e12, 0x5e25, 0x5e42, 0x5e5e, 0x5e7a, 0x5e95, 0x5eba, 0x5ed5, + 0x5eef, 0x5f0b, 0x5f25, 0x5f40, 0x5f5d, 0x5f81, 0x5fa7, 0x5fc3, + 0x5fd6, 0x5ff3, 0x6005, 0x6017, 0x602a, 0x6049, 0x6067, 0x6091, + 0x60ae, 0x60c1, 0x60e2, 0x60f4, 0x610e, 0x6120, 0x0120, 0x013e, + // Entry 5480 - 54BF + 0x015e, 0x017d, 0x019c, 0x01ba, 0x01da, 0x01fa, 0x0219, 0x023a, + 0x025a, 0x027a, 0x0299, 0x02ba, 0x02db, 0x02fb, 0x0318, 0x0335, + 0x0351, 0x036f, 0x038d, 0x03aa, 0x03ca, 0x03ea, 0x040c, 0x042d, + 0x044e, 0x046e, 0x0490, 0x04b2, 0x04d3, 0x04f3, 0x0513, 0x0535, + 0x0556, 0x0577, 0x0597, 0x05b9, 0x05e8, 0x0609, 0x062a, 0x064a, + 0x066c, 0x068e, 0x06af, 0x06cf, 0x06ef, 0x0711, 0x0740, 0x0761, + 0x0782, 0x07b2, 0x07e1, 0x0800, 0x081f, 0x0840, 0x086e, 0x088e, + 0x08ae, 0x08dd, 0x090c, 0x093a, 0x0969, 0x0999, 0x09c9, 0x09f5, + // Entry 54C0 - 54FF + 0x0a24, 0x0a54, 0x0a84, 0x0ab2, 0x0ae1, 0x0b10, 0x0b40, 0x0b70, + 0x0ba1, 0x0bc4, 0x0be9, 0x0c0d, 0x0c31, 0x0c54, 0x0c73, 0x0c92, + 0x0cb3, 0x0cd3, 0x0d00, 0x0d20, 0x0d4d, 0x0d6d, 0x0d8d, 0x0dad, + 0x0dcd, 0x0df2, 0x0e18, 0x0e3f, 0x0e6e, 0x0e9e, 0x0ec3, 0x0ee9, + 0x0f16, 0x0f45, 0x0f6b, 0x0f8e, 0x0fb6, 0x0fdf, 0x1003, 0x1027, + 0x1051, 0x107b, 0x10a4, 0x10cf, 0x10fa, 0x1124, 0x0124, 0x0158, + 0x0181, 0x01aa, 0x01d6, 0x0203, 0x0203, 0x0223, 0x023f, 0x025b, + 0x027d, 0x029c, 0x02ba, 0x02d8, 0x02fb, 0x0317, 0x0333, 0x034f, + // Entry 5500 - 553F + 0x036d, 0x0389, 0x03a7, 0x03c3, 0x03e7, 0x0403, 0x041f, 0x043d, + 0x0458, 0x0473, 0x0495, 0x04b2, 0x04cd, 0x04e8, 0x0509, 0x0528, + 0x0544, 0x0563, 0x058e, 0x05ae, 0x05ca, 0x05f0, 0x0616, 0x0633, + 0x064f, 0x066a, 0x0685, 0x06a0, 0x06bc, 0x06dc, 0x06f7, 0x0712, + 0x0728, 0x0749, 0x076e, 0x0792, 0x07bc, 0x07e0, 0x0805, 0x0829, + 0x084e, 0x0872, 0x088e, 0x08ad, 0x08ce, 0x08f9, 0x0922, 0x093f, + 0x095a, 0x097e, 0x09a2, 0x09c4, 0x09ef, 0x0a0b, 0x0a31, 0x0a4d, + 0x0a6a, 0x0a85, 0x0aa8, 0x0acb, 0x0ae8, 0x0b05, 0x0b2f, 0x0b4d, + // Entry 5540 - 557F + 0x0b79, 0x0b9a, 0x0bc1, 0x0bdc, 0x0c09, 0x0c23, 0x0c3d, 0x0c5a, + 0x0c74, 0x0c99, 0x0caf, 0x0cc5, 0x0cdb, 0x0cf1, 0x0d07, 0x0d1d, + 0x0d33, 0x0d5b, 0x0d71, 0x0d94, 0x0daa, 0x0dc0, 0x0dd6, 0x0dec, + 0x0e02, 0x0e18, 0x0e2e, 0x0e44, 0x0e5a, 0x0e70, 0x0e86, 0x0e9c, + 0x0eb2, 0x0ec8, 0x0ede, 0x0ef4, 0x0f0a, 0x0f20, 0x0f36, 0x0f55, + 0x0f75, 0x0f9e, 0x0fd0, 0x0ff7, 0x100d, 0x1023, 0x1039, 0x104f, + 0x1065, 0x107b, 0x1091, 0x10a7, 0x10bd, 0x10d3, 0x10e9, 0x1109, + 0x1129, 0x1154, 0x1174, 0x1193, 0x11b3, 0x11d2, 0x11f1, 0x1210, + // Entry 5580 - 55BF + 0x1232, 0x1248, 0x125e, 0x127e, 0x129d, 0x12bd, 0x12e2, 0x1301, + 0x1333, 0x135d, 0x137c, 0x139e, 0x13b4, 0x13ca, 0x13eb, 0x1408, + 0x1424, 0x1440, 0x146e, 0x148b, 0x14a5, 0x14cb, 0x14f2, 0x1516, + 0x1536, 0x1555, 0x1573, 0x1594, 0x15b7, 0x15d7, 0x15ff, 0x161c, + 0x1640, 0x1661, 0x1681, 0x169c, 0x16c0, 0x16dd, 0x16f5, 0x1710, + 0x172c, 0x1748, 0x1763, 0x1788, 0x17ac, 0x17c8, 0x17e4, 0x1806, + 0x1829, 0x1844, 0x185f, 0x187d, 0x189d, 0x18b9, 0x18cb, 0x18ed, + 0x1915, 0x0115, 0x012d, 0x0145, 0x015d, 0x0175, 0x018d, 0x01a6, + // Entry 55C0 - 55FF + 0x01be, 0x01d7, 0x01f0, 0x0208, 0x0220, 0x0238, 0x0250, 0x0268, + 0x0280, 0x0298, 0x02b0, 0x02c9, 0x02e1, 0x02f9, 0x0311, 0x032a, + 0x0342, 0x035a, 0x0372, 0x038a, 0x03a2, 0x03ba, 0x03d2, 0x03ea, + 0x0402, 0x041a, 0x0432, 0x044a, 0x0462, 0x047a, 0x0492, 0x04ab, + 0x04c3, 0x04db, 0x04f3, 0x050b, 0x0523, 0x053b, 0x0553, 0x056b, + 0x0584, 0x059c, 0x05b4, 0x05cd, 0x05e5, 0x05fe, 0x0616, 0x062e, + 0x0647, 0x065f, 0x0677, 0x068f, 0x06a7, 0x06bf, 0x06d7, 0x06ef, + 0x0707, 0x071f, 0x0737, 0x074f, 0x0767, 0x077f, 0x0797, 0x07af, + // Entry 5600 - 563F + 0x07c7, 0x07df, 0x07f7, 0x080f, 0x0827, 0x083f, 0x0857, 0x086f, + 0x0887, 0x089f, 0x08b7, 0x08cf, 0x08e7, 0x08ff, 0x0917, 0x0930, + 0x0948, 0x0960, 0x0978, 0x0990, 0x09a8, 0x09c0, 0x09d9, 0x09f2, + 0x0a0b, 0x0a23, 0x0a3b, 0x0a53, 0x0a6b, 0x0a83, 0x0a9b, 0x0ab3, + 0x0acb, 0x0ae4, 0x0afc, 0x0b14, 0x0b2c, 0x0b44, 0x0b5c, 0x0b74, + 0x0b8c, 0x0ba4, 0x0bbc, 0x0bd4, 0x0bec, 0x0c04, 0x0c1c, 0x0c34, + 0x0c4c, 0x0c64, 0x0c7c, 0x0c94, 0x0cac, 0x0cc4, 0x0cdc, 0x0cf4, + 0x0d0d, 0x0d25, 0x0d3d, 0x0d55, 0x0d6d, 0x0d85, 0x0d9d, 0x0db5, + // Entry 5640 - 567F + 0x0dcd, 0x0de5, 0x0dfd, 0x0e15, 0x0e2d, 0x0e45, 0x0e5d, 0x0e75, + 0x0e8d, 0x0ea5, 0x0ebd, 0x0ed5, 0x0eee, 0x0f06, 0x0f1e, 0x0f36, + 0x0f4e, 0x0f67, 0x0f7f, 0x0f97, 0x0faf, 0x0fc8, 0x0fe0, 0x0ff8, + 0x1010, 0x1028, 0x1040, 0x1058, 0x1070, 0x1088, 0x10a0, 0x10b8, + 0x10d0, 0x10e8, 0x1101, 0x1119, 0x1131, 0x114a, 0x1162, 0x117a, + 0x1193, 0x11ac, 0x11c5, 0x11de, 0x11f7, 0x1210, 0x1229, 0x1242, + 0x125b, 0x1273, 0x128b, 0x12a4, 0x12bc, 0x12d4, 0x12ed, 0x1305, + 0x131d, 0x1335, 0x134d, 0x1365, 0x137d, 0x1395, 0x13ad, 0x13c5, + // Entry 5680 - 56BF + 0x13dd, 0x13f5, 0x140d, 0x1425, 0x143e, 0x1457, 0x1470, 0x1489, + 0x14a2, 0x14bb, 0x14d4, 0x14ed, 0x1505, 0x151d, 0x1535, 0x154d, + 0x1565, 0x157d, 0x1595, 0x15ad, 0x15c6, 0x15de, 0x15f7, 0x160f, + 0x1627, 0x163f, 0x1657, 0x166f, 0x1687, 0x169f, 0x16b8, 0x16d0, + 0x16e9, 0x1701, 0x1719, 0x1731, 0x174a, 0x1762, 0x177a, 0x1792, + 0x17aa, 0x17c2, 0x17da, 0x17f2, 0x180a, 0x1823, 0x183b, 0x1853, + 0x186b, 0x1883, 0x189b, 0x18b3, 0x18cc, 0x18e4, 0x18fc, 0x1914, + 0x192c, 0x1945, 0x195d, 0x1975, 0x198d, 0x19a5, 0x19bd, 0x19d5, + // Entry 56C0 - 56FF + 0x19ed, 0x1a05, 0x1a1d, 0x1a35, 0x1a4d, 0x1a65, 0x1a7e, 0x1a96, + 0x1aae, 0x1ac6, 0x1ade, 0x1af6, 0x1b0e, 0x1b26, 0x1b3e, 0x1b57, + 0x1b6f, 0x1b87, 0x1b9f, 0x1bb7, 0x1bcf, 0x1be7, 0x1bff, 0x1c17, + 0x1c2f, 0x1c47, 0x1c60, 0x1c78, 0x1c90, 0x1ca8, 0x1cc0, 0x1cd8, + 0x1cf0, 0x1d09, 0x1d21, 0x1d3a, 0x1d52, 0x1d6a, 0x1d82, 0x1d9a, + 0x1db2, 0x1dca, 0x1de2, 0x1dfb, 0x1e13, 0x1e2c, 0x1e44, 0x1e5d, + 0x1e75, 0x1e8d, 0x1ea5, 0x1ebd, 0x1ed6, 0x1eef, 0x1f08, 0x1f20, + 0x1f38, 0x1f50, 0x1f68, 0x1f80, 0x1f98, 0x1fb0, 0x1fc8, 0x1fe1, + // Entry 5700 - 573F + 0x1ff9, 0x2012, 0x202b, 0x2043, 0x205b, 0x2073, 0x208b, 0x20a4, + 0x20bc, 0x20d4, 0x20ec, 0x2104, 0x211c, 0x2134, 0x214c, 0x2164, + 0x217c, 0x2195, 0x21ad, 0x21c5, 0x21dd, 0x21f5, 0x220d, 0x2225, + 0x223e, 0x2256, 0x226e, 0x2286, 0x229e, 0x22b6, 0x22ce, 0x22e6, + 0x22fe, 0x2316, 0x232e, 0x2347, 0x235f, 0x2378, 0x2390, 0x23a8, + 0x23c0, 0x23d8, 0x23f0, 0x2408, 0x2421, 0x2439, 0x2451, 0x246a, + 0x2482, 0x249a, 0x24b2, 0x24ca, 0x24e2, 0x24fa, 0x2512, 0x252a, + 0x2542, 0x255a, 0x2572, 0x258a, 0x25a2, 0x25ba, 0x25d2, 0x25eb, + // Entry 5740 - 577F + 0x2603, 0x261b, 0x2633, 0x264b, 0x2663, 0x267b, 0x2693, 0x26ac, + 0x26c4, 0x26dc, 0x26f4, 0x270c, 0x2725, 0x273d, 0x2756, 0x276e, + 0x2787, 0x279f, 0x27b7, 0x27cf, 0x27e7, 0x27ff, 0x2817, 0x282f, + 0x2847, 0x285f, 0x2877, 0x288f, 0x28a7, 0x28bf, 0x28d7, 0x28f0, + 0x2908, 0x2920, 0x2938, 0x2950, 0x2969, 0x2981, 0x2999, 0x29b1, + 0x29ca, 0x29e3, 0x29fb, 0x2a13, 0x2a2c, 0x2a44, 0x2a5c, 0x2a74, + 0x2a8c, 0x2aa4, 0x2abc, 0x2ad4, 0x2aed, 0x2b05, 0x2b1d, 0x2b36, + 0x2b4f, 0x2b68, 0x2b81, 0x2b9a, 0x2bb3, 0x2bcc, 0x2be5, 0x2bfd, + // Entry 5780 - 57BF + 0x2c15, 0x2c2d, 0x2c46, 0x2c5e, 0x2c77, 0x2c8f, 0x2ca8, 0x2cc0, + 0x2cd8, 0x2cf0, 0x2d08, 0x2d20, 0x2d39, 0x2d51, 0x2d69, 0x2d82, + 0x2d9a, 0x2db2, 0x2dca, 0x2de2, 0x2dfb, 0x2e13, 0x2e2b, 0x2e43, + 0x2e5c, 0x2e74, 0x2e8c, 0x2ea5, 0x2ebe, 0x2ed6, 0x2eee, 0x2f06, + 0x2f1e, 0x2f36, 0x2f4e, 0x2f66, 0x2f7f, 0x2f97, 0x2faf, 0x2fc7, + 0x2fdf, 0x2ff7, 0x300f, 0x3027, 0x303f, 0x3057, 0x306f, 0x3087, + 0x309f, 0x30b7, 0x30cf, 0x30e7, 0x30ff, 0x3117, 0x312f, 0x3147, + 0x315f, 0x3177, 0x318f, 0x31a8, 0x31c1, 0x31d9, 0x31f1, 0x3209, + // Entry 57C0 - 57FF + 0x3221, 0x3239, 0x3251, 0x3269, 0x3282, 0x329a, 0x32b2, 0x32ca, + 0x32e2, 0x32fa, 0x3312, 0x332a, 0x3342, 0x335b, 0x3373, 0x338c, + 0x33a4, 0x33bd, 0x33d5, 0x33ed, 0x3406, 0x341e, 0x3436, 0x344e, + 0x3466, 0x347e, 0x3497, 0x34b0, 0x34c9, 0x34e2, 0x34fb, 0x3515, + 0x352e, 0x3547, 0x3560, 0x3579, 0x3592, 0x35ab, 0x35c4, 0x35dd, + 0x35f6, 0x360f, 0x3628, 0x3641, 0x365b, 0x3674, 0x368d, 0x36a6, + 0x36bf, 0x36d8, 0x36f1, 0x370a, 0x3723, 0x373c, 0x3755, 0x376e, + 0x3787, 0x37a0, 0x37ba, 0x37d3, 0x37ed, 0x3806, 0x381f, 0x3838, + // Entry 5800 - 583F + 0x3851, 0x386a, 0x3883, 0x389c, 0x38b6, 0x38cf, 0x38e8, 0x3901, + 0x391a, 0x3934, 0x394c, 0x3965, 0x397d, 0x3995, 0x39ad, 0x39c5, + 0x39de, 0x39f6, 0x3a0f, 0x3a28, 0x3a41, 0x3a5a, 0x3a73, 0x3a8c, + 0x3aa4, 0x3abc, 0x3ad4, 0x3aec, 0x3b05, 0x3b1e, 0x3b37, 0x3b4f, + 0x3b67, 0x3b7f, 0x3b97, 0x3baf, 0x3bc7, 0x3bdf, 0x3bf7, 0x3c0f, + 0x3c28, 0x3c40, 0x3c59, 0x3c71, 0x3c89, 0x3ca1, 0x3cb9, 0x3cd2, + 0x3cea, 0x3d03, 0x3d1b, 0x3d33, 0x3d4b, 0x3d63, 0x3d7c, 0x3d94, + 0x3dad, 0x3dc5, 0x3ddd, 0x3df5, 0x3e0e, 0x3e26, 0x3e3e, 0x3e56, + // Entry 5840 - 587F + 0x3e6f, 0x3e88, 0x3ea1, 0x3eba, 0x3ed2, 0x3eea, 0x3f02, 0x3f1a, + 0x3f32, 0x3f4a, 0x3f62, 0x3f7a, 0x3f92, 0x3faa, 0x3fc2, 0x3fda, + 0x3ff2, 0x400a, 0x4023, 0x403c, 0x4054, 0x406c, 0x4085, 0x409d, + 0x40b5, 0x40ce, 0x40e6, 0x40fe, 0x4116, 0x412e, 0x4146, 0x415e, + 0x4176, 0x418e, 0x41a6, 0x41be, 0x41d6, 0x41ee, 0x4206, 0x421e, + 0x4236, 0x424e, 0x4266, 0x427f, 0x4297, 0x42b0, 0x42c9, 0x42e1, + 0x42f9, 0x4311, 0x4329, 0x4341, 0x4359, 0x4371, 0x438a, 0x43a2, + 0x43ba, 0x43d2, 0x43ea, 0x4402, 0x441a, 0x4433, 0x444b, 0x4463, + // Entry 5880 - 58BF + 0x447b, 0x4493, 0x44ab, 0x44c3, 0x44db, 0x44f3, 0x450b, 0x4523, + 0x453b, 0x4553, 0x456b, 0x4583, 0x459b, 0x45b4, 0x45cc, 0x45e4, + 0x45fc, 0x4614, 0x462d, 0x4645, 0x465d, 0x4675, 0x468d, 0x46a5, + 0x46bd, 0x46d5, 0x46ed, 0x4706, 0x471f, 0x4737, 0x474f, 0x4767, + 0x4780, 0x4798, 0x47b0, 0x47c8, 0x47e0, 0x47f8, 0x4810, 0x4828, + 0x4840, 0x4858, 0x4871, 0x488a, 0x48a2, 0x48ba, 0x48d2, 0x48ea, + 0x4902, 0x491a, 0x4932, 0x494a, 0x4962, 0x497b, 0x4993, 0x49ab, + 0x49c3, 0x49db, 0x49f3, 0x4a0b, 0x4a23, 0x4a3b, 0x4a53, 0x4a6b, + // Entry 58C0 - 58FF + 0x4a83, 0x4a9b, 0x4ab3, 0x4acb, 0x4ae4, 0x4afc, 0x4b14, 0x4b2c, + 0x4b44, 0x4b5d, 0x4b75, 0x4b8e, 0x4ba6, 0x4bbf, 0x4bd7, 0x4bef, + 0x4c08, 0x4c20, 0x4c38, 0x4c50, 0x4c68, 0x4c80, 0x4c99, 0x4cb1, + 0x4cc9, 0x4ce1, 0x4cf9, 0x4d11, 0x4d29, 0x4d41, 0x4d59, 0x4d71, + 0x4d89, 0x4da1, 0x4db9, 0x4dd1, 0x4de9, 0x4e01, 0x4e19, 0x4e32, + 0x4e4a, 0x4e63, 0x4e7b, 0x4e93, 0x4eab, 0x4ec3, 0x4edb, 0x4ef3, + 0x4f0b, 0x4f23, 0x4f3b, 0x4f54, 0x4f6d, 0x4f85, 0x4f9d, 0x4fb5, + 0x4fcd, 0x4fe5, 0x4ffd, 0x5015, 0x502d, 0x5045, 0x505d, 0x5075, + // Entry 5900 - 593F + 0x508d, 0x50a5, 0x50bd, 0x50d5, 0x50ed, 0x5105, 0x511e, 0x5136, + 0x514e, 0x5166, 0x517e, 0x5196, 0x51ae, 0x51c7, 0x51df, 0x51f7, + 0x520f, 0x5228, 0x5240, 0x5258, 0x5270, 0x5288, 0x52a0, 0x52b8, + 0x52d0, 0x52e8, 0x5300, 0x5318, 0x5330, 0x5349, 0x5362, 0x537b, + 0x5394, 0x53ad, 0x53c6, 0x53df, 0x53f8, 0x5411, 0x5429, 0x5442, + 0x545a, 0x5472, 0x548a, 0x54a2, 0x54ba, 0x54d3, 0x54ec, 0x5504, + 0x551c, 0x5534, 0x554c, 0x5565, 0x557e, 0x5597, 0x55af, 0x55c8, + 0x55e1, 0x55f9, 0x5611, 0x5629, 0x5641, 0x5659, 0x5671, 0x5689, + // Entry 5940 - 597F + 0x56a1, 0x56ba, 0x56d3, 0x56ec, 0x5705, 0x571e, 0x5737, 0x5750, + 0x5769, 0x5782, 0x579b, 0x57b4, 0x57cd, 0x57e5, 0x57fd, 0x5815, + 0x582e, 0x5846, 0x585e, 0x5876, 0x588e, 0x58a6, 0x58bf, 0x58d7, + 0x58f0, 0x5908, 0x5921, 0x5939, 0x5952, 0x596a, 0x5982, 0x599b, + 0x59b3, 0x59cb, 0x59e3, 0x59fb, 0x5a14, 0x5a2c, 0x5a44, 0x5a5c, + 0x5a75, 0x5a8d, 0x5aa5, 0x5abd, 0x5ad6, 0x5aee, 0x5b06, 0x5b1e, + 0x5b36, 0x5b4e, 0x5b66, 0x5b7f, 0x5b97, 0x5bb0, 0x5bc8, 0x5be0, + 0x5bf8, 0x5c10, 0x5c29, 0x5c41, 0x5c59, 0x5c71, 0x5c8a, 0x5ca2, + // Entry 5980 - 59BF + 0x5cbb, 0x5cd3, 0x5ceb, 0x5d03, 0x5d1b, 0x5d33, 0x5d4b, 0x5d64, + 0x5d7c, 0x5d94, 0x5dac, 0x5dc4, 0x5ddc, 0x5df5, 0x5e0e, 0x5e26, + 0x5e3e, 0x5e57, 0x5e6f, 0x5e87, 0x5ea0, 0x5eb8, 0x5ed1, 0x5ee9, + 0x5f01, 0x5f19, 0x5f31, 0x5f49, 0x5f61, 0x5f79, 0x5f91, 0x5fa9, + 0x5fc2, 0x5fdb, 0x5ff4, 0x600d, 0x6025, 0x603e, 0x6057, 0x606f, + 0x6088, 0x60a0, 0x60b9, 0x60d1, 0x60e9, 0x6101, 0x6119, 0x6131, + 0x6149, 0x6161, 0x6179, 0x6191, 0x61a9, 0x61c2, 0x61db, 0x61f4, + 0x620d, 0x6226, 0x623f, 0x6258, 0x6271, 0x628a, 0x62a2, 0x62bb, + // Entry 59C0 - 59FF + 0x62d4, 0x62ed, 0x6306, 0x631f, 0x6338, 0x6351, 0x636a, 0x6383, + 0x639c, 0x63b5, 0x63ce, 0x63e7, 0x6400, 0x6419, 0x6433, 0x644d, + 0x6466, 0x647f, 0x6498, 0x64b1, 0x64ca, 0x64e3, 0x64fc, 0x6515, + 0x652e, 0x6547, 0x6560, 0x6579, 0x6592, 0x65ab, 0x65c4, 0x65dd, + 0x65f6, 0x660f, 0x6628, 0x6641, 0x665a, 0x6673, 0x668c, 0x66a5, + 0x66be, 0x02be, 0x02d7, 0x02f0, 0x0309, 0x0322, 0x033b, 0x0354, + 0x036d, 0x0386, 0x039f, 0x03b8, 0x03d2, 0x03eb, 0x0404, 0x041d, + 0x0436, 0x044f, 0x0468, 0x0481, 0x049a, 0x04b3, 0x04cc, 0x04e5, + // Entry 5A00 - 5A3F + 0x04fe, 0x0517, 0x0530, 0x0549, 0x0562, 0x057c, 0x0595, 0x05ae, + 0x05c7, 0x05e0, 0x05f9, 0x0612, 0x062b, 0x0644, 0x065d, 0x0676, + 0x068f, 0x06a8, 0x06c1, 0x06db, 0x06f4, 0x070d, 0x0727, 0x0740, + 0x0759, 0x0772, 0x078b, 0x07a5, 0x07be, 0x07d8, 0x07f2, 0x080b, + 0x0824, 0x083d, 0x0856, 0x086f, 0x0888, 0x08a1, 0x08ba, 0x08d3, + 0x08ec, 0x0905, 0x091e, 0x0937, 0x0950, 0x0969, 0x0982, 0x099b, + 0x09b4, 0x09cd, 0x09e6, 0x0a00, 0x0a1a, 0x0a34, 0x0a4d, 0x0a66, + 0x0a7f, 0x0a98, 0x0ab1, 0x0aca, 0x0ae3, 0x0afc, 0x0b15, 0x0b2e, + // Entry 5A40 - 5A7F + 0x0b47, 0x0b60, 0x0b79, 0x0b92, 0x0bab, 0x0bc4, 0x0bdd, 0x0bf6, + 0x0c0f, 0x0c28, 0x0c41, 0x0c5a, 0x0c73, 0x0c8c, 0x0ca5, 0x0cbe, + 0x0cd7, 0x0cf0, 0x0d09, 0x0d22, 0x0d3b, 0x0d55, 0x0d6e, 0x0d88, + 0x0da1, 0x0dba, 0x0dd4, 0x0ded, 0x0e07, 0x0e20, 0x0e3a, 0x0e53, + 0x0e6c, 0x0e86, 0x0ea0, 0x0eba, 0x0ed3, 0x0eed, 0x0f07, 0x0f20, + 0x0f39, 0x0f53, 0x0f6d, 0x0f87, 0x0fa0, 0x0fb9, 0x0fd2, 0x0fec, + 0x1006, 0x101f, 0x1038, 0x1051, 0x106a, 0x1083, 0x109d, 0x10b6, + 0x10cf, 0x10e8, 0x1101, 0x111a, 0x1133, 0x114c, 0x1165, 0x117e, + // Entry 5A80 - 5ABF + 0x1197, 0x11b1, 0x11ca, 0x11e3, 0x11fc, 0x1215, 0x122e, 0x1247, + 0x1260, 0x1279, 0x1292, 0x12ab, 0x12c5, 0x12de, 0x12f7, 0x1310, + 0x1329, 0x1342, 0x135b, 0x1374, 0x138d, 0x13a6, 0x13bf, 0x13d8, + 0x13f1, 0x140a, 0x1423, 0x143c, 0x1455, 0x146e, 0x1487, 0x14a0, + 0x14b9, 0x14d2, 0x14eb, 0x1504, 0x151d, 0x1536, 0x154f, 0x1568, + 0x1581, 0x159a, 0x15b3, 0x15cc, 0x15e5, 0x15fe, 0x1617, 0x1630, + 0x1649, 0x1662, 0x167b, 0x1694, 0x16ad, 0x16c6, 0x16df, 0x16f8, + 0x1711, 0x172a, 0x1743, 0x175c, 0x1775, 0x178e, 0x17a7, 0x17c0, + // Entry 5AC0 - 5AFF + 0x17d9, 0x17f2, 0x180b, 0x1824, 0x183d, 0x1856, 0x186f, 0x1888, + 0x18a1, 0x18ba, 0x18d3, 0x18ec, 0x1905, 0x191e, 0x1937, 0x1950, + 0x196a, 0x1984, 0x199d, 0x19b6, 0x19cf, 0x19e8, 0x1a01, 0x1a1b, + 0x1a34, 0x1a4d, 0x1a67, 0x1a80, 0x1a99, 0x1ab2, 0x1acb, 0x1ae4, + 0x1afd, 0x1b17, 0x1b30, 0x1b4a, 0x1b63, 0x1b7c, 0x1b95, 0x1bae, + 0x1bc7, 0x1be0, 0x1bf9, 0x1c12, 0x1c2b, 0x1c44, 0x1c5d, 0x1c77, + 0x1c90, 0x1ca9, 0x1cc2, 0x1cdb, 0x1cf4, 0x1d0d, 0x1d26, 0x1d3f, + 0x1d58, 0x1d71, 0x1d8a, 0x1da3, 0x1dbc, 0x1dd5, 0x1dee, 0x1e07, + // Entry 5B00 - 5B3F + 0x1e20, 0x1e39, 0x1e52, 0x1e6b, 0x1e84, 0x1e9d, 0x1eb6, 0x1ecf, + 0x1ee8, 0x1f01, 0x1f1a, 0x1f33, 0x1f4c, 0x1f65, 0x1f7e, 0x1f97, + 0x1fb0, 0x1fc9, 0x1fe2, 0x1ffb, 0x2014, 0x202d, 0x2046, 0x205f, + 0x2079, 0x2092, 0x20ab, 0x20c4, 0x20dd, 0x20f6, 0x210f, 0x2128, + 0x2141, 0x215a, 0x2173, 0x218c, 0x21a5, 0x21be, 0x21d7, 0x21f0, + 0x2209, 0x2222, 0x223b, 0x2254, 0x226d, 0x2286, 0x229f, 0x22b9, + 0x22d2, 0x22eb, 0x2304, 0x231d, 0x2336, 0x2350, 0x2369, 0x2382, + 0x239b, 0x23b4, 0x23cd, 0x23e7, 0x2400, 0x2419, 0x2432, 0x244b, + // Entry 5B40 - 5B7F + 0x2464, 0x247d, 0x2496, 0x24af, 0x24c8, 0x24e1, 0x24fb, 0x2514, + 0x252d, 0x2546, 0x255f, 0x2578, 0x2591, 0x25aa, 0x25c3, 0x25dc, + 0x25f5, 0x260e, 0x2627, 0x2640, 0x2659, 0x2672, 0x268b, 0x26a4, + 0x26bd, 0x26d6, 0x26ef, 0x2709, 0x2722, 0x273b, 0x2755, 0x276f, + 0x2789, 0x27a2, 0x27bb, 0x27d4, 0x27ed, 0x2807, 0x2821, 0x283b, + 0x2854, 0x286d, 0x2886, 0x289f, 0x28b8, 0x28d1, 0x28ea, 0x2903, + 0x291c, 0x2935, 0x294e, 0x2967, 0x2980, 0x2999, 0x29b2, 0x29cb, + 0x29e4, 0x29fd, 0x2a16, 0x2a2f, 0x2a48, 0x2a61, 0x2a7a, 0x2a94, + // Entry 5B80 - 5BBF + 0x2aad, 0x2ac6, 0x2adf, 0x2af8, 0x2b11, 0x2b2b, 0x2b44, 0x2b5d, + 0x2b76, 0x2b8f, 0x2ba9, 0x2bc2, 0x2bdb, 0x2bf4, 0x2c0e, 0x2c27, + 0x2c40, 0x2c59, 0x2c72, 0x2c8b, 0x2ca4, 0x2cbd, 0x2cd6, 0x2cef, + 0x2d08, 0x2d22, 0x2d3b, 0x2d5d, 0x2d77, 0x2d90, 0x2da9, 0x2dc2, + 0x2ddc, 0x2df5, 0x2e0e, 0x2e27, 0x2e40, 0x2e59, 0x2e72, 0x2e91, + 0x2eaa, 0x2ec3, 0x2edc, 0x2ef5, 0x2f0e, 0x2f27, 0x2f40, 0x2f59, + 0x2f72, 0x2f8b, 0x2fa4, 0x2fbd, 0x2fd6, 0x2fef, 0x3008, 0x3021, + 0x304e, 0x307a, 0x3093, 0x30ac, 0x30c5, 0x30de, 0x30f7, 0x3110, + // Entry 5BC0 - 5BFF + 0x3129, 0x3142, 0x315b, 0x3174, 0x318d, 0x31a6, 0x31bf, 0x31d8, + 0x31f1, 0x320a, 0x3223, 0x323c, 0x3255, 0x326e, 0x3287, 0x32a0, + 0x32b9, 0x32d2, 0x32eb, 0x3304, 0x331d, 0x3336, 0x334f, 0x3368, + 0x3381, 0x339a, 0x33b3, 0x33cc, 0x33e5, 0x33fe, 0x3417, 0x3430, + 0x3449, 0x3462, 0x347c, 0x3495, 0x34ae, 0x34c7, 0x34e0, 0x34f9, + 0x3512, 0x352b, 0x3545, 0x355e, 0x3577, 0x3590, 0x35a9, 0x35c2, + 0x35db, 0x35f4, 0x360d, 0x3626, 0x363f, 0x3658, 0x3671, 0x368a, + 0x36a3, 0x36bc, 0x36d5, 0x36ee, 0x3707, 0x3720, 0x3739, 0x3752, + // Entry 5C00 - 5C3F + 0x376b, 0x3784, 0x379d, 0x37b6, 0x37cf, 0x37e8, 0x3801, 0x381a, + 0x3833, 0x384c, 0x3865, 0x387e, 0x3897, 0x38b0, 0x38c9, 0x38e2, + 0x38fb, 0x3914, 0x392d, 0x3946, 0x395f, 0x3978, 0x3991, 0x39aa, + 0x39c3, 0x39dc, 0x39f5, 0x3a0e, 0x3a27, 0x3a40, 0x3a59, 0x3a72, + 0x3a8b, 0x3aa4, 0x3abd, 0x3ad6, 0x3aef, 0x3b08, 0x3b21, 0x3b3a, + 0x3b53, 0x3b6c, 0x3b85, 0x3b9e, 0x3bb7, 0x3bd0, 0x3be9, 0x3c02, + 0x3c1b, 0x001b, 0x003a, 0x0058, 0x0081, 0x00a7, 0x00c4, 0x00e3, + 0x0101, 0x011e, 0x0140, 0x016b, 0x0193, 0x01b2, 0x01d0, 0x01eb, + // Entry 5C40 - 5C7F + 0x0208, 0x0224, 0x0243, 0x025f, 0x027b, 0x029a, 0x02b5, 0x02cd, + 0x02ec, 0x0306, 0x0322, 0x0340, 0x035c, 0x0377, 0x0395, 0x03b1, + 0x03d2, 0x03f0, 0x040e, 0x042f, 0x044d, 0x0466, 0x0481, 0x04a2, + 0x04be, 0x04d7, 0x04f7, 0x0518, 0x0530, 0x054d, 0x0566, 0x057e, + 0x0598, 0x05b2, 0x05cd, 0x05eb, 0x0606, 0x061e, 0x063f, 0x0658, + 0x0674, 0x068d, 0x06a8, 0x06c1, 0x06d9, 0x06f2, 0x070a, 0x0728, + 0x0743, 0x075c, 0x077f, 0x07a3, 0x07be, 0x07da, 0x07f6, 0x0810, + 0x082a, 0x0843, 0x085e, 0x0877, 0x0892, 0x08aa, 0x08c3, 0x08de, + // Entry 5C80 - 5CBF + 0x08f7, 0x090f, 0x0927, 0x0940, 0x0958, 0x096f, 0x0987, 0x099f, + 0x09b8, 0x09d3, 0x09f4, 0x0a0d, 0x0a28, 0x0a46, 0x0a65, 0x0a7f, + 0x0a9a, 0x0ab6, 0x0ace, 0x0ae9, 0x0b0b, 0x0b2e, 0x0b4f, 0x0b6c, + 0x0b8c, 0x0ba4, 0x0bc1, 0x0bdf, 0x0bfd, 0x0c1d, 0x0c3e, 0x0c5c, + 0x0c77, 0x0c94, 0x0cb0, 0x0ccb, 0x0ce5, 0x0cfe, 0x0d1f, 0x0d3d, + 0x0d57, 0x0d73, 0x0d8c, 0x0da5, 0x0dc0, 0x0de1, 0x0dfc, 0x0e14, + 0x0e2f, 0x0e4c, 0x0e68, 0x0e84, 0x0ea4, 0x0ebd, 0x0ed7, 0x0eef, + 0x0f0a, 0x0f2a, 0x0f47, 0x0f5f, 0x0f7a, 0x0f93, 0x0faa, 0x0fc2, + // Entry 5CC0 - 5CFF + 0x0fdb, 0x0ffc, 0x1014, 0x102c, 0x1049, 0x1063, 0x1081, 0x109b, + 0x10b6, 0x10d3, 0x10ed, 0x1113, 0x1130, 0x114a, 0x1166, 0x1181, + 0x11a7, 0x11c6, 0x11df, 0x11fa, 0x1218, 0x1232, 0x124b, 0x1267, + 0x1280, 0x1299, 0x12b4, 0x12cc, 0x12e5, 0x12ff, 0x131b, 0x1335, + 0x1352, 0x136c, 0x138d, 0x13a6, 0x13c3, 0x13e2, 0x13fb, 0x1416, + 0x142e, 0x144b, 0x1467, 0x1484, 0x14a0, 0x14ba, 0x14d2, 0x14ec, + 0x1504, 0x151e, 0x1537, 0x1554, 0x156f, 0x1586, 0x15a0, 0x15b8, + 0x15d4, 0x15f3, 0x160e, 0x1626, 0x163f, 0x1659, 0x1674, 0x168b, + // Entry 5D00 - 5D3F + 0x16a3, 0x16bc, 0x16d5, 0x16ed, 0x1709, 0x1722, 0x173b, 0x175c, + 0x1775, 0x178e, 0x17ab, 0x17c3, 0x17dc, 0x17f6, 0x1811, 0x1829, + 0x1844, 0x185f, 0x187b, 0x1895, 0x18ae, 0x18ce, 0x18e8, 0x1902, + 0x191b, 0x1934, 0x194d, 0x1969, 0x1989, 0x19a2, 0x19ba, 0x19d2, + 0x19ea, 0x1a02, 0x1a1a, 0x1a33, 0x1a4b, 0x1a63, 0x1a7c, 0x1a96, + 0x1aaf, 0x1ac9, 0x1ae3, 0x1b00, 0x1b19, 0x1b33, 0x1b4d, 0x1b66, + 0x1b80, 0x1b9f, 0x1bb8, 0x1bd3, 0x1bec, 0x1c04, 0x1c1c, 0x1c38, + 0x1c51, 0x1c69, 0x1c83, 0x1c9d, 0x1cb9, 0x1cd2, 0x1ced, 0x1d05, + // Entry 5D40 - 5D7F + 0x1d21, 0x1d41, 0x1d5d, 0x1d74, 0x1d8d, 0x1da8, 0x1dc6, 0x1ddf, + 0x1dfb, 0x1e16, 0x1e2f, 0x1e48, 0x1e63, 0x1e7c, 0x1e97, 0x1eaf, + 0x1ec7, 0x1ee2, 0x1efb, 0x1f15, 0x1f2e, 0x1f49, 0x1f61, 0x1f7b, + 0x1f94, 0x1fad, 0x1fc7, 0x1fe4, 0x1fff, 0x201a, 0x2033, 0x204b, + 0x2066, 0x207f, 0x2097, 0x20b2, 0x20cc, 0x20e8, 0x2101, 0x2119, + 0x2132, 0x214b, 0x2165, 0x217e, 0x2196, 0x21b1, 0x21cc, 0x21e5, + 0x21fe, 0x2216, 0x222f, 0x2248, 0x2264, 0x227e, 0x2297, 0x22b2, + 0x22cc, 0x22e6, 0x2301, 0x2318, 0x2334, 0x234c, 0x2364, 0x237c, + // Entry 5D80 - 5DBF + 0x2394, 0x23ae, 0x23c8, 0x23de, 0x23f6, 0x240d, 0x2426, 0x2440, + 0x2459, 0x2470, 0x2488, 0x24a1, 0x24b9, 0x24d0, 0x24e9, 0x2501, + 0x251a, 0x2532, 0x254f, 0x2566, 0x257f, 0x259e, 0x25b6, 0x25ce, + 0x25e7, 0x2600, 0x261a, 0x2632, 0x264a, 0x2663, 0x267b, 0x2693, + 0x26ab, 0x26c6, 0x26df, 0x26f8, 0x2710, 0x2729, 0x2743, 0x275b, + 0x2773, 0x2790, 0x27a9, 0x27c1, 0x27da, 0x27f2, 0x280d, 0x2826, + 0x283f, 0x285a, 0x2873, 0x288d, 0x28a8, 0x28c2, 0x28db, 0x28f3, + 0x290f, 0x2928, 0x2942, 0x295f, 0x297b, 0x2993, 0x29ac, 0x29c8, + // Entry 5DC0 - 5DFF + 0x29e1, 0x2a00, 0x2a18, 0x2a30, 0x2a52, 0x2a76, 0x2a8f, 0x2aa9, + 0x2ac2, 0x2adc, 0x2af3, 0x2b0d, 0x2b27, 0x2b41, 0x2b5c, 0x2b76, + 0x2b8f, 0x2ba8, 0x2bbf, 0x2bd8, 0x2bf4, 0x2c11, 0x2c2d, 0x2c47, + 0x2c60, 0x2c79, 0x2c92, 0x2cab, 0x2cc3, 0x2cdc, 0x2cf4, 0x2d14, + 0x2d2c, 0x2d46, 0x2d60, 0x2d7a, 0x2d93, 0x2dae, 0x2dc6, 0x2de0, + 0x2dfa, 0x2e12, 0x2e2a, 0x2e46, 0x2e5f, 0x2e76, 0x2e8f, 0x2ea8, + 0x2ec1, 0x2edd, 0x2efd, 0x2f16, 0x2f2f, 0x2f48, 0x2f61, 0x2f79, + 0x2f92, 0x2fad, 0x2fc6, 0x2fde, 0x2ff7, 0x3011, 0x3029, 0x3042, + // Entry 5E00 - 5E3F + 0x305b, 0x3076, 0x3090, 0x30ae, 0x30ca, 0x30e2, 0x30fb, 0x3111, + 0x3129, 0x313f, 0x3155, 0x316d, 0x318b, 0x31a3, 0x31bb, 0x31dd, + 0x31f6, 0x320f, 0x3229, 0x3243, 0x3264, 0x3282, 0x329a, 0x32b2, + 0x32cb, 0x32e4, 0x3303, 0x331b, 0x3333, 0x334b, 0x3363, 0x337a, + 0x3391, 0x33aa, 0x33c2, 0x33dd, 0x33f5, 0x340d, 0x3426, 0x3444, + 0x345b, 0x3472, 0x348a, 0x34a1, 0x34b9, 0x34d0, 0x34e8, 0x3500, + 0x3517, 0x352f, 0x3547, 0x355f, 0x3578, 0x358f, 0x35a5, 0x35bc, + 0x35d3, 0x35eb, 0x3603, 0x361b, 0x3632, 0x364a, 0x3663, 0x367d, + // Entry 5E40 - 5E7F + 0x3695, 0x36ae, 0x36c8, 0x36de, 0x36f6, 0x370f, 0x3726, 0x373f, + 0x3758, 0x3770, 0x3789, 0x37a0, 0x37ba, 0x37d2, 0x37ea, 0x3801, + 0x381a, 0x3833, 0x384c, 0x3864, 0x387c, 0x3893, 0x38aa, 0x38c3, + 0x38db, 0x38f7, 0x3910, 0x3928, 0x3941, 0x3959, 0x3970, 0x3987, + 0x399f, 0x39b6, 0x39cf, 0x39e7, 0x39fe, 0x3a15, 0x3a2e, 0x3a46, + 0x3a5e, 0x3a78, 0x3a91, 0x0291, 0x029e, 0x02ac, 0x02b9, 0x02c7, + 0x02d4, 0x02e1, 0x02ed, 0x02fb, 0x030a, 0x0318, 0x0326, 0x0334, + 0x0344, 0x0351, 0x0360, 0x036e, 0x037b, 0x0388, 0x0394, 0x03a1, + // Entry 5E80 - 5EBF + 0x03af, 0x03be, 0x03cb, 0x03d8, 0x03e4, 0x03f1, 0x03ff, 0x040c, + 0x041a, 0x0427, 0x0435, 0x0035, 0x0043, 0x0050, 0x005d, 0x006c, + 0x007a, 0x0088, 0x0095, 0x00a4, 0x00b3, 0x00c1, 0x00c1, 0x00ca, + 0x00da, 0x00da, 0x00ef, 0x0102, 0x0115, 0x0128, 0x013c, 0x0150, + 0x0164, 0x0179, 0x018e, 0x01a1, 0x01b6, 0x01c9, 0x01dc, 0x01f0, + 0x0203, 0x0216, 0x022a, 0x023d, 0x0250, 0x0263, 0x0278, 0x028b, + 0x02a1, 0x02b3, 0x02c5, 0x02d8, 0x02ea, 0x02fd, 0x030f, 0x0321, + 0x0321, 0x033e, 0x035a, 0x0376, 0x0396, 0x03b7, 0x03ca, 0x03ca, + // Entry 5EC0 - 5EFF + 0x03e1, 0x03f8, 0x040e, 0x0424, 0x043b, 0x0452, 0x0468, 0x047e, + 0x0494, 0x04aa, 0x04c1, 0x04d8, 0x04ef, 0x0506, 0x051d, 0x0534, + 0x054b, 0x0562, 0x0578, 0x058e, 0x05a5, 0x05bc, 0x05d2, 0x05e8, + 0x05fe, 0x0614, 0x062b, 0x0642, 0x065c, 0x0678, 0x0692, 0x06ac, + 0x06c7, 0x06e1, 0x06fc, 0x0717, 0x0731, 0x074c, 0x0766, 0x0781, + 0x079d, 0x07b8, 0x07d4, 0x07f0, 0x080a, 0x0823, 0x083d, 0x0857, + 0x0870, 0x0888, 0x08a1, 0x08bb, 0x08d5, 0x08ee, 0x0908, 0x0922, + 0x0942, 0x095d, 0x0978, 0x0992, 0x09af, 0x09ca, 0x09e5, 0x0a01, + // Entry 5F00 - 5F3F + 0x0a1b, 0x0a36, 0x0a50, 0x0a68, 0x0a7e, 0x0a9c, 0x029c, 0x02b3, + 0x02c9, 0x02df, 0x02f7, 0x030e, 0x0325, 0x033b, 0x0353, 0x036b, + 0x0382, 0x0382, 0x039a, 0x03b6, 0x03d7, 0x03f3, 0x0417, 0x0437, + 0x0454, 0x0054, 0x006d, 0x0083, 0x0098, 0x00b9, 0x00d3, 0x00e9, + 0x00ff, 0x0115, 0x012b, 0x013f, 0x015c, 0x0178, 0x018d, 0x01a2, + 0x01b7, 0x01df, 0x0200, 0x021a, 0x0239, 0x0257, 0x0275, 0x0275, + 0x0292, 0x02ad, 0x02c7, 0x02e2, 0x02fe, 0x0318, 0x0333, 0x034e, + 0x0369, 0x0384, 0x039f, 0x03ba, 0x03d4, 0x03ee, 0x0408, 0x0422, + // Entry 5F40 - 5F7F + 0x043d, 0x0457, 0x0471, 0x0071, 0x007f, 0x008d, 0x009e, 0x00ad, + 0x00bb, 0x00ca, 0x00e0, 0x00ee, 0x00fc, 0x010b, 0x0119, 0x0127, + 0x0139, 0x014a, 0x0159, 0x0168, 0x0176, 0x0185, 0x0197, 0x01ad, + 0x01bc, 0x01cc, 0x01da, 0x01e9, 0x01f8, 0x0208, 0x0218, 0x0228, + 0x0239, 0x024a, 0x0258, 0x0266, 0x0277, 0x0285, 0x0294, 0x02a3, + 0x02b3, 0x02ca, 0x02d8, 0x02e6, 0x02f5, 0x0305, 0x0315, 0x0325, + 0x0334, 0x0344, 0x0354, 0x0364, 0x0377, 0x038a, 0x03a3, 0x03b2, + 0x03c1, 0x03d0, 0x03e0, 0x03ef, 0x03fe, 0x0410, 0x041e, 0x042c, + // Entry 5F80 - 5FBF + 0x043b, 0x044a, 0x045a, 0x0471, 0x0481, 0x0492, 0x04a0, 0x04ae, + 0x04bd, 0x00bd, 0x00d5, 0x00e9, 0x0103, 0x0120, 0x0131, 0x0143, + 0x0156, 0x0168, 0x017b, 0x018c, 0x019e, 0x01b0, 0x01c1, 0x01d2, + 0x01e4, 0x01f7, 0x020a, 0x021b, 0x022d, 0x0240, 0x0254, 0x0266, + 0x0278, 0x028a, 0x029c, 0x02af, 0x02c0, 0x02d2, 0x02e5, 0x02f9, + 0x030b, 0x031e, 0x0331, 0x0342, 0x0354, 0x0366, 0x0379, 0x038c, + 0x03a7, 0x03b9, 0x03d3, 0x03e5, 0x03f7, 0x0409, 0x041b, 0x042c, + 0x043e, 0x003e, 0x004d, 0x0060, 0x006f, 0x007e, 0x0090, 0x00a2, + // Entry 5FC0 - 5FFF + 0x00b4, 0x00c6, 0x00d8, 0x00ea, 0x00fc, 0x0117, 0x0132, 0x014d, + 0x0168, 0x0183, 0x019e, 0x019e, 0x01b3, 0x01b3, 0x01c7, 0x01db, + 0x01ef, 0x0203, 0x0217, 0x022b, 0x023f, 0x0253, 0x0267, 0x027b, + 0x028f, 0x02a3, 0x02b7, 0x02cb, 0x02df, 0x02f3, 0x0307, 0x031b, + 0x032f, 0x0343, 0x0357, 0x036b, 0x037f, 0x0393, 0x03a7, 0x03bb, + 0x03cf, 0x03e3, 0x03f7, 0x040b, 0x041f, 0x0433, 0x0447, 0x045b, + 0x046f, 0x0483, 0x0497, 0x04ab, 0x04bf, 0x04d3, 0x04e7, 0x04fb, + 0x050f, 0x0523, 0x0537, 0x054b, 0x055f, 0x0573, 0x0587, 0x059b, + // Entry 6000 - 603F + 0x05af, 0x05c3, 0x05d7, 0x05eb, 0x05ff, 0x0613, 0x0627, 0x063b, + 0x064f, 0x0663, 0x0677, 0x068b, 0x069f, 0x06b3, 0x06c7, 0x06db, + 0x06ef, 0x0703, 0x0717, 0x072b, 0x073f, 0x0753, 0x0767, 0x077b, + 0x078f, 0x07a3, 0x07b7, 0x07cb, 0x07df, 0x07f3, 0x0807, 0x081b, + 0x082f, 0x0843, 0x0857, 0x086b, 0x087f, 0x0893, 0x08a7, 0x08bb, + 0x08cf, 0x08e3, 0x08f7, 0x090b, 0x091f, 0x0933, 0x0947, 0x095b, + 0x096f, 0x0983, 0x0997, 0x09ab, 0x09bf, 0x09d3, 0x09e7, 0x09fb, + 0x0a0f, 0x0a23, 0x0a37, 0x0a4b, 0x0a5f, 0x0a73, 0x0a87, 0x0a9b, + // Entry 6040 - 607F + 0x0aaf, 0x0ac3, 0x0ad7, 0x0aeb, 0x0aff, 0x0b13, 0x0b27, 0x0b3b, + 0x0b4f, 0x0b63, 0x0b77, 0x0b8b, 0x0b9f, 0x0bb3, 0x0bc7, 0x0bdb, + 0x0bef, 0x0c03, 0x0c17, 0x0c2b, 0x0c3f, 0x0c53, 0x0c67, 0x0c7b, + 0x0c8f, 0x0ca3, 0x0cb7, 0x0ccb, 0x0cdf, 0x0cf3, 0x0d07, 0x0d1b, + 0x0d2f, 0x0d43, 0x0d57, 0x0d6b, 0x0d7f, 0x0d93, 0x0da7, 0x0dbb, + 0x0dcf, 0x0de3, 0x0df7, 0x0e0b, 0x0e1f, 0x0e33, 0x0e47, 0x0e5b, + 0x0e6f, 0x0e83, 0x0e97, 0x0eab, 0x0ebf, 0x0ed3, 0x0ee7, 0x0efb, + 0x0f0f, 0x0f23, 0x0f37, 0x0f4b, 0x0f5f, 0x0f73, 0x0f87, 0x0f9b, + // Entry 6080 - 60BF + 0x0faf, 0x0fc3, 0x0fd7, 0x0feb, 0x0fff, 0x1013, 0x1027, 0x103b, + 0x104f, 0x1063, 0x1077, 0x108b, 0x109f, 0x10b3, 0x10c7, 0x10db, + 0x10ef, 0x1103, 0x1117, 0x112b, 0x113f, 0x1153, 0x1167, 0x117b, + 0x118f, 0x11a3, 0x11b7, 0x11cb, 0x11df, 0x11f3, 0x1207, 0x121b, + 0x122f, 0x1243, 0x1257, 0x126b, 0x127f, 0x1293, 0x12a7, 0x12bb, + 0x12cf, 0x12e3, 0x12f7, 0x130b, 0x131f, 0x1333, 0x1347, 0x135b, + 0x136f, 0x1383, 0x1397, 0x13ab, 0x13bf, 0x13d3, 0x13e7, 0x13fb, + 0x140f, 0x1423, 0x1437, 0x144b, 0x145f, 0x1473, 0x1487, 0x149b, + // Entry 60C0 - 60FF + 0x14af, 0x14c3, 0x14d7, 0x14eb, 0x14ff, 0x1513, 0x1527, 0x153b, + 0x154f, 0x1563, 0x1577, 0x158b, 0x159f, 0x15b3, 0x15c7, 0x15db, + 0x15ef, 0x1603, 0x1617, 0x162b, 0x163f, 0x1653, 0x1667, 0x167b, + 0x168f, 0x16a3, 0x16b7, 0x16cb, 0x16df, 0x16f3, 0x1707, 0x171b, + 0x172f, 0x1743, 0x1757, 0x176b, 0x177f, 0x1793, 0x17a7, 0x17bb, + 0x17cf, 0x17e3, 0x17f7, 0x180b, 0x181f, 0x1833, 0x1847, 0x185b, + 0x186f, 0x1883, 0x1897, 0x18ab, 0x18bf, 0x18d3, 0x18e7, 0x18fb, + 0x190f, 0x1923, 0x1937, 0x194b, 0x195f, 0x1973, 0x1987, 0x199b, + // Entry 6100 - 613F + 0x19af, 0x19c3, 0x19d7, 0x19eb, 0x19ff, 0x1a13, 0x1a27, 0x1a3b, + 0x1a4f, 0x1a63, 0x1a77, 0x1a8b, 0x1a9f, 0x1ab3, 0x1ac7, 0x1adb, + 0x1aef, 0x1b03, 0x1b17, 0x1b2b, 0x1b3f, 0x1b53, 0x1b67, 0x1b7b, + 0x1b8f, 0x1ba3, 0x1bb7, 0x1bcb, 0x1bdf, 0x1bf3, 0x1c07, 0x1c1b, + 0x1c2f, 0x1c43, 0x1c57, 0x1c6b, 0x1c7f, 0x1c93, 0x1ca7, 0x1cbb, + 0x1ccf, 0x1ce3, 0x1cf7, 0x1d0b, 0x1d1f, 0x1d33, 0x1d47, 0x1d5b, + 0x1d6f, 0x1d83, 0x1d97, 0x1dab, 0x1dbf, 0x1dd3, 0x1de7, 0x1dfb, + 0x1e0f, 0x1e23, 0x1e37, 0x1e4b, 0x1e5f, 0x1e73, 0x1e87, 0x1e9b, + // Entry 6140 - 617F + 0x1eaf, 0x1ec3, 0x1ed7, 0x1eeb, 0x1eff, 0x1f13, 0x1f27, 0x1f3b, + 0x1f4f, 0x1f63, 0x1f77, 0x1f8b, 0x1f9f, 0x1fb3, 0x1fc7, 0x1fdb, + 0x1fef, 0x2003, 0x2017, 0x202b, 0x203f, 0x2053, 0x2067, 0x207b, + 0x208f, 0x20a3, 0x20b7, 0x20cb, 0x20df, 0x20f3, 0x2107, 0x211b, + 0x212f, 0x2143, 0x2157, 0x216b, 0x217f, 0x2193, 0x21a7, 0x21bb, + 0x21cf, 0x21e3, 0x21f7, 0x220b, 0x221f, 0x2233, 0x2247, 0x225b, + 0x226f, 0x2283, 0x2297, 0x22ab, 0x22bf, 0x22d3, 0x22e7, 0x22fb, + 0x230f, 0x2323, 0x2337, 0x234b, 0x235f, 0x2373, 0x2387, 0x239b, + // Entry 6180 - 61BF + 0x23af, 0x23c3, 0x23d7, 0x23eb, 0x23ff, 0x2413, 0x2427, 0x243b, + 0x244f, 0x2463, 0x2477, 0x248b, 0x249f, 0x24b3, 0x24c7, 0x24db, + 0x24ef, 0x2503, 0x2517, 0x252b, 0x253f, 0x2553, 0x2567, 0x257b, + 0x258f, 0x25a3, 0x25b7, 0x25cb, 0x25df, 0x25f3, 0x2607, 0x261b, + 0x262f, 0x2643, 0x2657, 0x266b, 0x267f, 0x2693, 0x26a7, 0x26bb, + 0x26cf, 0x26e3, 0x26f7, 0x270b, 0x271f, 0x2733, 0x2747, 0x275b, + 0x276f, 0x2783, 0x2797, 0x27ab, 0x27bf, 0x27d3, 0x27e7, 0x27fb, + 0x280f, 0x2823, 0x2837, 0x284b, 0x285f, 0x2873, 0x2887, 0x289b, + // Entry 61C0 - 61FF + 0x28af, 0x28c3, 0x28d7, 0x28eb, 0x28ff, 0x2913, 0x2927, 0x293b, + 0x294f, 0x2963, 0x2977, 0x298b, 0x299f, 0x29b3, 0x29c7, 0x29db, + 0x29ef, 0x2a03, 0x2a17, 0x2a2b, 0x2a3f, 0x2a53, 0x2a67, 0x2a7b, + 0x2a8f, 0x2aa3, 0x2ab7, 0x2acb, 0x2adf, 0x2af3, 0x2b07, 0x2b1b, + 0x2b2f, 0x2b43, 0x2b57, 0x2b6b, 0x2b7f, 0x2b93, 0x2ba7, 0x2bbb, + 0x2bcf, 0x2be3, 0x2bf7, 0x2c0b, 0x2c1f, 0x2c33, 0x2c47, 0x2c5b, + 0x2c6f, 0x2c83, 0x2c97, 0x2cab, 0x2cbf, 0x2cd3, 0x2ce7, 0x2cfb, + 0x2d0f, 0x2d23, 0x2d37, 0x2d4b, 0x2d5f, 0x2d73, 0x2d87, 0x2d9b, + // Entry 6200 - 623F + 0x2daf, 0x2dc3, 0x2dd7, 0x2deb, 0x2dff, 0x2e13, 0x2e27, 0x2e3b, + 0x2e4f, 0x2e63, 0x2e77, 0x2e8b, 0x2e9f, 0x2eb3, 0x2ec7, 0x2edb, + 0x2eef, 0x2f03, 0x2f17, 0x2f2b, 0x2f3f, 0x2f53, 0x2f67, 0x2f7b, + 0x2f8f, 0x2fa3, 0x2fb7, 0x2fcb, 0x2fdf, 0x2ff3, 0x3007, 0x301b, + 0x302f, 0x3043, 0x3057, 0x306b, 0x307f, 0x3093, 0x30a7, 0x30bb, + 0x30cf, 0x30e3, 0x30f7, 0x310b, 0x311f, 0x3133, 0x3147, 0x315b, + 0x316f, 0x3183, 0x3197, 0x31ab, 0x31bf, 0x31d3, 0x31e7, 0x31fb, + 0x320f, 0x3223, 0x3237, 0x324b, 0x325f, 0x3273, 0x3287, 0x329b, + // Entry 6240 - 627F + 0x32af, 0x32c3, 0x32d7, 0x32eb, 0x32ff, 0x3313, 0x3327, 0x333b, + 0x334f, 0x3363, 0x3377, 0x338b, 0x339f, 0x33b3, 0x33c7, 0x33db, + 0x33ef, 0x3403, 0x3417, 0x342b, 0x343f, 0x3453, 0x3467, 0x347b, + 0x348f, 0x34a3, 0x34b7, 0x34cb, 0x34df, 0x34f3, 0x3507, 0x351b, + 0x352f, 0x3543, 0x3557, 0x356b, 0x357f, 0x3593, 0x35a7, 0x35bb, + 0x35cf, 0x35e3, 0x35f7, 0x360b, 0x361f, 0x3633, 0x3647, 0x365b, + 0x366f, 0x3683, 0x3697, 0x36ab, 0x36bf, 0x36d3, 0x36e7, 0x36fb, + 0x370f, 0x3723, 0x3737, 0x374b, 0x375f, 0x3773, 0x3787, 0x379b, + // Entry 6280 - 62BF + 0x37af, 0x37c3, 0x37d7, 0x37eb, 0x37ff, 0x3813, 0x3827, 0x383b, + 0x384f, 0x3863, 0x3877, 0x388b, 0x389f, 0x38b3, 0x38c7, 0x38db, + 0x38ef, 0x3903, 0x3917, 0x392b, 0x393f, 0x3953, 0x3967, 0x397b, + 0x398f, 0x39a3, 0x39b7, 0x39cb, 0x39df, 0x39f3, 0x3a07, 0x3a1b, + 0x3a2f, 0x3a43, 0x3a57, 0x3a6b, 0x3a7f, 0x3a93, 0x3aa7, 0x3abb, + 0x3acf, 0x3ae3, 0x3af7, 0x3b0b, 0x3b1f, 0x3b33, 0x3b47, 0x3b5b, + 0x3b6f, 0x3b83, 0x3b97, 0x3bab, 0x3bbf, 0x3bd3, 0x3be7, 0x3bfb, + 0x3c0f, 0x3c23, 0x3c37, 0x3c4b, 0x3c5f, 0x3c73, 0x3c87, 0x3c9b, + // Entry 62C0 - 62FF + 0x3caf, 0x00af, 0x00c8, 0x00e2, 0x00e2, 0x00f3, 0x0104, 0x0115, + 0x0126, 0x0137, 0x0148, 0x0159, 0x016a, 0x017b, 0x018c, 0x019d, + 0x01ae, 0x01c1, 0x01d4, 0x01e7, 0x01fa, 0x020d, 0x021f, 0x0237, + 0x0249, 0x025b, 0x0272, 0x0284, 0x0296, 0x02a8, 0x02b9, 0x02ca, + 0x02db, 0x02ec, 0x02ff, 0x0312, 0x0325, 0x0338, 0x0352, 0x036c, + 0x0386, 0x03b2, 0x03cc, 0x03ec, 0x03ff, 0x0412, 0x0425, 0x0438, + 0x044d, 0x0462, 0x0477, 0x048c, 0x04a8, 0x04bb, 0x04d0, 0x04e3, + 0x04f8, 0x050b, 0x0520, 0x0533, 0x0548, 0x0559, 0x056b, 0x057e, + // Entry 6300 - 633F + 0x0591, 0x05a4, 0x05b9, 0x05ce, 0x05e1, 0x05f6, 0x0607, 0x061f, + 0x0631, 0x0642, 0x0655, 0x0666, 0x0677, 0x0689, 0x06a0, 0x06b2, + 0x06c4, 0x06dc, 0x06f6, 0x070e, 0x0724, 0x0736, 0x0747, 0x0759, + 0x076b, 0x077e, 0x0794, 0x07ae, 0x07c0, 0x07d7, 0x07ea, 0x07fc, + 0x080e, 0x0820, 0x0832, 0x0844, 0x0857, 0x086a, 0x0881, 0x0898, + 0x08af, 0x08c6, 0x08df, 0x08f8, 0x0910, 0x0928, 0x0940, 0x0959, + 0x0159, 0x017e, 0x01a2, 0x01c8, 0x01ea, 0x020c, 0x022f, 0x024d, + 0x0279, 0x0298, 0x02b4, 0x02d2, 0x02f0, 0x0314, 0x0314, 0x032d, + // Entry 6340 - 637F + 0x034c, 0x0365, 0x0383, 0x039a, 0x03b4, 0x03cc, 0x03e4, 0x0400, + 0x0000, 0x0018, 0x0036, 0x004e, 0x006b, 0x0081, 0x009a, 0x00b1, + 0x00c8, 0x00e3, 0x00fb, 0x00fb, 0x0115, 0x0133, 0x0147, 0x016d, + 0x018c, 0x01af, 0x01c9, 0x01e1, 0x01e1, 0x01ff, 0x021e, 0x0242, + 0x026c, 0x0290, 0x02bb, 0x02e0, 0x0301, 0x0323, 0x0347, 0x0369, + 0x0391, 0x03b2, 0x03dc, 0x0404, 0x0423, 0x0445, 0x0468, 0x0491, + 0x04b1, 0x04cf, 0x04f7, 0x051f, 0x053e, 0x055f, 0x057d, 0x05a3, + 0x05cc, 0x05f7, 0x0618, 0x0639, 0x0662, 0x068a, 0x06b3, 0x06dd, + // Entry 6380 - 63BF + 0x06fe, 0x071d, 0x073b, 0x0763, 0x0783, 0x07a8, 0x07c7, 0x07f0, + 0x081d, 0x0848, 0x0866, 0x0884, 0x08a0, 0x08bd, 0x08dd, 0x08ff, + 0x0925, 0x094d, 0x096f, 0x0999, 0x09c1, 0x09e2, 0x0a04, 0x0a25, + 0x0a4f, 0x0a6f, 0x0a9c, 0x0ac9, 0x0ae9, 0x0b06, 0x0b26, 0x0b4c, + 0x0b72, 0x0b97, 0x0bbc, 0x0bdd, 0x0c00, 0x0c22, 0x0c42, 0x0c63, + 0x0c8b, 0x0cb3, 0x0cd8, 0x0d02, 0x0d2a, 0x0d49, 0x0d70, 0x0da1, + 0x0dc1, 0x0de9, 0x0e09, 0x0e29, 0x0e4d, 0x0e70, 0x0e93, 0x0eb9, + 0x0ed8, 0x0efb, 0x0f1b, 0x0f43, 0x0f6b, 0x0f96, 0x0fb6, 0x0fde, + // Entry 63C0 - 63FF + 0x1003, 0x1026, 0x104a, 0x1068, 0x108d, 0x10ae, 0x10d1, 0x10f6, + 0x111f, 0x1147, 0x116e, 0x1199, 0x11c5, 0x11ec, 0x1214, 0x123b, + 0x1261, 0x128e, 0x12b4, 0x12dc, 0x1304, 0x1329, 0x1352, 0x1374, + 0x1396, 0x13b8, 0x13d9, 0x13f9, 0x141c, 0x1443, 0x146c, 0x1491, + 0x14b5, 0x14da, 0x14f7, 0x1515, 0x1534, 0x1555, 0x1575, 0x15a1, + 0x15cc, 0x15f9, 0x1629, 0x1658, 0x167f, 0x16b5, 0x16e8, 0x1709, + 0x1746, 0x1782, 0x17b7, 0x17d9, 0x17f7, 0x181a, 0x183a, 0x1862, + 0x1889, 0x18ac, 0x18d1, 0x18f4, 0x1918, 0x1940, 0x1969, 0x1997, + // Entry 6400 - 643F + 0x19ca, 0x19fa, 0x1a2f, 0x1a5d, 0x1a88, 0x1ab8, 0x1af0, 0x1b1f, + 0x1b4e, 0x1b7e, 0x1bb2, 0x1be0, 0x1c0d, 0x1c38, 0x1c65, 0x1c97, + 0x1ccf, 0x1cfb, 0x1d28, 0x1d57, 0x1d78, 0x1d9b, 0x1dd2, 0x1dfe, + 0x1e2c, 0x1e56, 0x1e82, 0x1eb5, 0x1ee1, 0x1f0d, 0x1f3e, 0x1f6e, + 0x1fa5, 0x1fde, 0x2012, 0x2047, 0x206d, 0x2091, 0x20b6, 0x20db, + 0x2111, 0x2145, 0x2170, 0x219b, 0x21c8, 0x21f9, 0x2235, 0x226a, + 0x22a2, 0x22d3, 0x230f, 0x2344, 0x237c, 0x23a2, 0x23c8, 0x23f4, + 0x2421, 0x2448, 0x2471, 0x249a, 0x24cb, 0x24fd, 0x2531, 0x2559, + // Entry 6440 - 647F + 0x2589, 0x25ba, 0x25ed, 0x2611, 0x2636, 0x2655, 0x2678, 0x269c, + 0x26bf, 0x26e2, 0x2705, 0x2728, 0x274b, 0x2776, 0x279f, 0x27ca, + 0x27f3, 0x2817, 0x283f, 0x003f, 0x005c, 0x0079, 0x0095, 0x00b9, + 0x00d6, 0x00f2, 0x0111, 0x0131, 0x014b, 0x0163, 0x0179, 0x018d, + 0x01a0, 0x01c0, 0x01e0, 0x0200, 0x0216, 0x0232, 0x024c, 0x0262, + 0x0276, 0x028c, 0x02a9, 0x02c6, 0x02e5, 0x0303, 0x0321, 0x033e, + 0x0361, 0x0385, 0x039a, 0x03bb, 0x03dd, 0x03f2, 0x0407, 0x0428, + 0x044a, 0x0464, 0x047e, 0x007e, 0x00a2, 0x00bd, 0x00d7, 0x00ed, + // Entry 6480 - 64BF + 0x0105, 0x011e, 0x0139, 0x0150, 0x0169, 0x018a, 0x01aa, 0x01c4, + 0x01db, 0x01f5, 0x0210, 0x0230, 0x0251, 0x026a, 0x0283, 0x029b, + 0x02b6, 0x02d0, 0x02ed, 0x030e, 0x032e, 0x035b, 0x0374, 0x0390, + 0x03b0, 0x03d4, 0x03f8, 0x0421, 0x044a, 0x0475, 0x04a0, 0x04cc, + 0x04f8, 0x0523, 0x054e, 0x057d, 0x05ac, 0x05ce, 0x05f0, 0x0621, + 0x0652, 0x0675, 0x0691, 0x06ae, 0x06ca, 0x06ef, 0x0714, 0x0728, + 0x0741, 0x0759, 0x0774, 0x078e, 0x07ab, 0x07cc, 0x07ec, 0x0819, + 0x0836, 0x0860, 0x0882, 0x08a4, 0x08c6, 0x08e7, 0x0908, 0x0929, + // Entry 64C0 - 64FF + 0x0952, 0x0971, 0x0990, 0x09af, 0x09ce, 0x09ed, 0x0a06, 0x0a1d, + 0x0a35, 0x0a4b, 0x0a64, 0x0a7b, 0x0a96, 0x0aaf, 0x0ace, 0x0aef, + 0x0b0e, 0x0b34, 0x0b54, 0x0b7d, 0x0ba5, 0x0bc3, 0x0bdf, 0x0bfd, + 0x0c1a, 0x0c36, 0x0c53, 0x0c71, 0x0c8e, 0x0cb4, 0x0cda, 0x0cf4, + 0x0d09, 0x0d19, 0x0d2d, 0x0d41, 0x0d55, 0x0d6d, 0x0d87, 0x0da6, + 0x0dc8, 0x0dd9, 0x0dec, 0x0e08, 0x0e21, 0x0e37, 0x0e57, 0x0e77, + 0x0e97, 0x0eb7, 0x0ed7, 0x0ef7, 0x0f17, 0x0f37, 0x0f57, 0x0f78, + 0x0f99, 0x0fb3, 0x0fcd, 0x0fe9, 0x1004, 0x1025, 0x1044, 0x1065, + // Entry 6500 - 653F + 0x108c, 0x10a5, 0x10c1, 0x10df, 0x10fa, 0x1117, 0x1136, 0x1149, + 0x1160, 0x1175, 0x1189, 0x119e, 0x11bd, 0x11dc, 0x11f1, 0x120c, + 0x122b, 0x124a, 0x1263, 0x127c, 0x129e, 0x12c2, 0x12dc, 0x12fa, + 0x1314, 0x1332, 0x1369, 0x13a2, 0x13e6, 0x141f, 0x145a, 0x14a2, + 0x14ea, 0x1532, 0x1546, 0x1565, 0x1584, 0x159b, 0x15af, 0x15c5, + 0x15da, 0x15f2, 0x1609, 0x1620, 0x1638, 0x1657, 0x1676, 0x1697, + 0x16b4, 0x16d0, 0x16f2, 0x1712, 0x1737, 0x1757, 0x1776, 0x17a2, + 0x17cc, 0x17f7, 0x1820, 0x183f, 0x003f, 0x005c, 0x0079, 0x0096, + // Entry 6540 - 657F + 0x00b3, 0x00d0, 0x00ed, 0x010a, 0x0127, 0x0144, 0x0162, 0x0180, + 0x019e, 0x01bc, 0x01da, 0x01f8, 0x0216, 0x0234, 0x0252, 0x0270, + 0x028e, 0x02ac, 0x02ca, 0x02e8, 0x0306, 0x0324, 0x0342, 0x0360, + 0x037e, 0x039c, 0x03c0, 0x03e4, 0x0408, 0x042c, 0x0450, 0x0474, + 0x0499, 0x04be, 0x04e3, 0x0508, 0x052d, 0x0552, 0x0577, 0x059c, + 0x05c1, 0x05e6, 0x060b, 0x0630, 0x0655, 0x067a, 0x069f, 0x06c4, + 0x06e9, 0x070e, 0x0733, 0x0758, 0x077d, 0x07a2, 0x07c7, 0x07ec, + 0x0811, 0x0836, 0x085b, 0x0880, 0x08a5, 0x08ca, 0x08ef, 0x090e, + // Entry 6580 - 65BF + 0x092f, 0x0950, 0x0964, 0x0164, 0x0176, 0x018f, 0x01a5, 0x01be, + 0x01d6, 0x01e6, 0x01fa, 0x0213, 0x0226, 0x023b, 0x0256, 0x026f, + 0x0283, 0x029b, 0x02b6, 0x02df, 0x02f7, 0x0311, 0x0327, 0x0340, + 0x0353, 0x0368, 0x0382, 0x0397, 0x03ae, 0x03c3, 0x03d8, 0x03f0, + 0x0402, 0x0413, 0x042b, 0x0442, 0x0456, 0x046a, 0x0484, 0x04a1, + 0x04b6, 0x04ca, 0x04e1, 0x04f6, 0x050d, 0x0523, 0x0537, 0x054d, + 0x0564, 0x057e, 0x0594, 0x05af, 0x05c7, 0x05da, 0x05f1, 0x060a, + 0x061f, 0x0633, 0x0647, 0x0668, 0x067f, 0x0694, 0x06aa, 0x06bd, + // Entry 65C0 - 65FF + 0x06d7, 0x06f1, 0x070a, 0x0724, 0x0739, 0x0753, 0x076e, 0x0781, + 0x0794, 0x07a9, 0x07bc, 0x07d3, 0x07ea, 0x07ff, 0x0817, 0x082e, + 0x0844, 0x085a, 0x0872, 0x0887, 0x089c, 0x08b5, 0x08cd, 0x08e7, + 0x0901, 0x0918, 0x092f, 0x012f, 0x014a, 0x0165, 0x0182, 0x019e, + 0x01ba, 0x01d5, 0x01f2, 0x020f, 0x022b, 0x0246, 0x0261, 0x027e, + 0x029a, 0x02b6, 0x02d1, 0x02ee, 0x030b, 0x0327, 0x0327, 0x0342, + 0x035d, 0x0378, 0x0393, 0x03ae, 0x03c9, 0x03e4, 0x03ff, 0x041a, + 0x0435, 0x0450, 0x046b, 0x0486, 0x04a1, 0x04bc, 0x04d7, 0x04f2, + // Entry 6600 - 663F + 0x050d, 0x0528, 0x0543, 0x055e, 0x0579, 0x0594, 0x05af, 0x05ca, + 0x05e5, 0x05fe, 0x0617, 0x0630, 0x0649, 0x0662, 0x067b, 0x0694, + 0x06ad, 0x06c6, 0x06df, 0x06f8, 0x0711, 0x072a, 0x0743, 0x075c, + 0x0775, 0x078e, 0x07a7, 0x07c0, 0x07d9, 0x07f2, 0x080b, 0x0824, + 0x083d, 0x0856, 0x086f, 0x088c, 0x08a9, 0x08c6, 0x08e3, 0x0900, + 0x091d, 0x093a, 0x0957, 0x0974, 0x0991, 0x09ae, 0x09cb, 0x09e8, + 0x0a05, 0x0a22, 0x0a3f, 0x0a5c, 0x0a79, 0x0a96, 0x0ab3, 0x0ad0, + 0x0aed, 0x0b0a, 0x0b27, 0x0b44, 0x0b61, 0x0b7c, 0x0b97, 0x0bb2, + // Entry 6640 - 667F + 0x0bcd, 0x0be8, 0x0c03, 0x0c1e, 0x001e, 0x0039, 0x0054, 0x006f, + 0x008a, 0x00a5, 0x00c0, 0x00db, 0x00f6, 0x0111, 0x012c, 0x0147, + 0x0162, 0x017d, 0x0198, 0x01b3, 0x01ce, 0x01e9, 0x0204, 0x0226, + 0x0248, 0x026a, 0x028c, 0x02ae, 0x02d0, 0x02f2, 0x0314, 0x0336, + 0x0358, 0x037a, 0x039c, 0x03be, 0x03e0, 0x0402, 0x0424, 0x0446, + 0x0468, 0x048a, 0x04ac, 0x04ce, 0x04f0, 0x0512, 0x0534, 0x0556, + 0x0578, 0x0598, 0x05b8, 0x05d8, 0x05f8, 0x0618, 0x0638, 0x0658, + 0x0678, 0x0698, 0x06b8, 0x06d8, 0x06f8, 0x0718, 0x0738, 0x0758, + // Entry 6680 - 66BF + 0x0778, 0x0798, 0x07b8, 0x07d8, 0x07f8, 0x0818, 0x0838, 0x0858, + 0x0878, 0x0898, 0x08b8, 0x08d5, 0x00d5, 0x00f2, 0x010f, 0x010f, + 0x012c, 0x012c, 0x0149, 0x0166, 0x0166, 0x0183, 0x01a0, 0x01bd, + 0x01da, 0x01da, 0x01f7, 0x0214, 0x0231, 0x024e, 0x026b, 0x0288, + 0x02a5, 0x02c2, 0x02dd, 0x02f8, 0x0313, 0x032e, 0x032e, 0x0349, + 0x0349, 0x0364, 0x037f, 0x039a, 0x03b5, 0x03d0, 0x03eb, 0x0406, + 0x0006, 0x0021, 0x003c, 0x0057, 0x0072, 0x008d, 0x00a8, 0x00c3, + 0x00de, 0x00f9, 0x0114, 0x012f, 0x0151, 0x0173, 0x0195, 0x01b7, + // Entry 66C0 - 66FF + 0x01d9, 0x01fb, 0x021d, 0x023f, 0x0261, 0x0283, 0x02a5, 0x02c7, + 0x02e9, 0x030b, 0x032d, 0x034f, 0x0371, 0x0393, 0x03b5, 0x03d7, + 0x03f9, 0x041b, 0x043d, 0x045f, 0x0481, 0x04a3, 0x04c3, 0x04e3, + 0x0503, 0x0523, 0x0543, 0x0563, 0x0583, 0x05a3, 0x05c3, 0x05e3, + 0x0603, 0x0623, 0x0643, 0x0663, 0x0683, 0x06a3, 0x06c3, 0x06e3, + 0x0703, 0x0723, 0x0743, 0x0763, 0x0783, 0x07a3, 0x07c3, 0x07e3, + 0x0801, 0x081f, 0x001f, 0x003d, 0x005b, 0x0079, 0x0097, 0x0097, + 0x00b5, 0x00d3, 0x00f1, 0x010f, 0x012d, 0x014b, 0x0169, 0x0187, + // Entry 6700 - 673F + 0x0187, 0x01a5, 0x01c3, 0x01e1, 0x01ff, 0x021d, 0x023b, 0x0259, + 0x0259, 0x0275, 0x0291, 0x02ad, 0x02c9, 0x02e5, 0x0301, 0x031d, + 0x0339, 0x0355, 0x0371, 0x038d, 0x03a9, 0x03c5, 0x03e1, 0x03fd, + 0x0419, 0x0435, 0x0451, 0x046d, 0x0489, 0x04a5, 0x04c1, 0x04dd, + 0x04f9, 0x0515, 0x0531, 0x0555, 0x0579, 0x0179, 0x019d, 0x01c1, + 0x01e5, 0x0209, 0x0209, 0x022d, 0x0251, 0x0275, 0x0299, 0x02bd, + 0x02bd, 0x02e1, 0x02e1, 0x0305, 0x0329, 0x034d, 0x0371, 0x0395, + 0x03b9, 0x03dd, 0x03dd, 0x03ff, 0x0421, 0x0443, 0x0465, 0x0487, + // Entry 6740 - 677F + 0x04a9, 0x04cb, 0x04ed, 0x050f, 0x0531, 0x0553, 0x0575, 0x0597, + 0x05b9, 0x05db, 0x05fd, 0x061f, 0x0641, 0x0663, 0x0685, 0x06a7, + 0x06c9, 0x06eb, 0x070d, 0x072f, 0x0751, 0x0774, 0x0797, 0x07ba, + 0x07dd, 0x0800, 0x0823, 0x0846, 0x0869, 0x088c, 0x08af, 0x08d2, + 0x08f5, 0x0918, 0x093b, 0x095e, 0x0981, 0x09a4, 0x09c7, 0x09ea, + 0x0a0d, 0x0a30, 0x0a53, 0x0a76, 0x0a99, 0x0abc, 0x0adf, 0x0b00, + 0x0b21, 0x0b42, 0x0b63, 0x0b84, 0x0ba5, 0x0bc6, 0x0be7, 0x0c08, + 0x0c29, 0x0c4a, 0x0c6b, 0x0c8c, 0x0cad, 0x0cce, 0x0cef, 0x0d10, + // Entry 6780 - 67BF + 0x0d31, 0x0d52, 0x0d73, 0x0d94, 0x0db5, 0x0dd6, 0x0df7, 0x0e18, + 0x0e39, 0x0e5a, 0x0e7b, 0x0e9c, 0x0ebd, 0x0ede, 0x0eff, 0x0f20, + 0x0f41, 0x0f62, 0x0f83, 0x0fa4, 0x0fc5, 0x0fe6, 0x1007, 0x1028, + 0x1049, 0x106a, 0x108b, 0x10ac, 0x10cd, 0x10ee, 0x110f, 0x1130, + 0x1151, 0x1172, 0x1193, 0x11b2, 0x11d1, 0x11f0, 0x120f, 0x122e, + 0x124d, 0x126c, 0x128b, 0x12aa, 0x12c9, 0x12e8, 0x1307, 0x1326, + 0x1345, 0x1364, 0x1383, 0x13a2, 0x13c1, 0x13e0, 0x13ff, 0x141e, + 0x143d, 0x145c, 0x147b, 0x149a, 0x14b9, 0x14df, 0x1505, 0x152b, + // Entry 67C0 - 67FF + 0x1551, 0x1577, 0x159d, 0x15c3, 0x15e9, 0x160f, 0x1635, 0x165b, + 0x1681, 0x16a7, 0x16cd, 0x16f3, 0x1719, 0x173f, 0x1765, 0x178b, + 0x17b1, 0x17d7, 0x17fd, 0x1823, 0x1849, 0x186f, 0x1895, 0x18b9, + 0x18dd, 0x1901, 0x1925, 0x1949, 0x196d, 0x1991, 0x19b5, 0x19d9, + 0x19fd, 0x1a21, 0x1a45, 0x1a69, 0x1a8d, 0x1ab1, 0x1ad5, 0x1af9, + 0x1b1d, 0x1b41, 0x1b65, 0x1b89, 0x1bad, 0x1bd1, 0x1bf5, 0x1c19, + 0x1c3d, 0x1c65, 0x1c8d, 0x1cb5, 0x1cdd, 0x1d05, 0x1d2d, 0x1d55, + 0x1d7d, 0x1da5, 0x1dcd, 0x1df5, 0x1e1d, 0x1e45, 0x1e6d, 0x1e95, + // Entry 6800 - 683F + 0x1ebd, 0x1ee5, 0x1f0d, 0x1f35, 0x1f5d, 0x1f85, 0x1fad, 0x1fd5, + 0x1ffd, 0x2025, 0x204d, 0x2073, 0x2099, 0x20bf, 0x20e5, 0x210b, + 0x2131, 0x2157, 0x217d, 0x21a3, 0x21c9, 0x21ef, 0x2215, 0x223b, + 0x2261, 0x2287, 0x22ad, 0x22d3, 0x22f9, 0x231f, 0x2345, 0x236b, + 0x2391, 0x23b7, 0x23dd, 0x2403, 0x2429, 0x2456, 0x2483, 0x24b0, + 0x24dd, 0x250a, 0x2537, 0x2564, 0x2591, 0x25be, 0x25eb, 0x2618, + 0x2645, 0x2672, 0x269f, 0x26cc, 0x26f9, 0x2726, 0x2753, 0x2780, + 0x27ad, 0x27da, 0x2807, 0x2834, 0x2861, 0x288e, 0x28bb, 0x28e6, + // Entry 6840 - 687F + 0x2911, 0x293c, 0x2967, 0x2992, 0x29bd, 0x29e8, 0x2a13, 0x2a3e, + 0x2a69, 0x2a94, 0x2abf, 0x2aea, 0x2b15, 0x2b40, 0x2b6b, 0x2b96, + 0x2bc1, 0x2bec, 0x2c17, 0x2c42, 0x2c6d, 0x2c98, 0x2cc3, 0x2cee, + 0x2d19, 0x2d39, 0x2d59, 0x2d79, 0x2d99, 0x2db9, 0x2dd9, 0x2df9, + 0x2e19, 0x2e39, 0x2e59, 0x2e79, 0x2e99, 0x2eb9, 0x2ed9, 0x2ef9, + 0x2f19, 0x2f39, 0x2f59, 0x2f79, 0x2f99, 0x2fb9, 0x2fd9, 0x2ff9, + 0x3019, 0x3039, 0x3059, 0x3077, 0x3095, 0x30b3, 0x30d1, 0x30ef, + 0x310d, 0x312b, 0x3149, 0x3167, 0x3185, 0x31a3, 0x31c1, 0x31df, + // Entry 6880 - 68BF + 0x31fd, 0x321b, 0x3239, 0x3257, 0x3275, 0x3293, 0x32b1, 0x32cf, + 0x32ed, 0x330b, 0x3329, 0x3347, 0x3365, 0x3388, 0x33ab, 0x03ab, + 0x03ca, 0x03e8, 0x0407, 0x0426, 0x0447, 0x0465, 0x0482, 0x04a1, + 0x04bf, 0x04de, 0x04fd, 0x0519, 0x0535, 0x0551, 0x0572, 0x058e, + 0x05ab, 0x05d1, 0x05f0, 0x060d, 0x062e, 0x064b, 0x0668, 0x0685, + 0x06a4, 0x06bb, 0x06d8, 0x06f4, 0x0711, 0x072e, 0x074d, 0x0769, + 0x0784, 0x07a1, 0x07bd, 0x07da, 0x07f7, 0x0811, 0x082b, 0x0845, + 0x0864, 0x087e, 0x0899, 0x08bc, 0x08d9, 0x08f4, 0x0913, 0x092e, + // Entry 68C0 - 68FF + 0x0949, 0x0964, 0x0981, 0x09a7, 0x09c7, 0x09e5, 0x0a03, 0x0a1f, + 0x0a3b, 0x0a56, 0x0a77, 0x0a97, 0x0ab8, 0x0ad9, 0x0afc, 0x0b1c, + 0x0b3b, 0x0b5c, 0x0b7c, 0x0b9d, 0x0bbe, 0x0bdc, 0x0bfa, 0x0c18, + 0x0c3b, 0x0c59, 0x0c78, 0x0ca0, 0x0cc1, 0x0ce0, 0x0d03, 0x0d22, + 0x0d41, 0x0d60, 0x0d81, 0x0d9a, 0x0db9, 0x0dd7, 0x0df6, 0x0e15, + 0x0e36, 0x0e54, 0x0e71, 0x0e90, 0x0eae, 0x0ecd, 0x0eec, 0x0f08, + 0x0f24, 0x0f40, 0x0f61, 0x0f7d, 0x0f9a, 0x0fbf, 0x0fde, 0x0ffb, + 0x101c, 0x1039, 0x1056, 0x1073, 0x1092, 0x10ba, 0x10dc, 0x10fc, + // Entry 6900 - 693F + 0x111c, 0x113a, 0x1158, 0x1175, 0x119b, 0x11c0, 0x11e6, 0x120c, + 0x1234, 0x1259, 0x127d, 0x12a3, 0x12c8, 0x12ee, 0x1314, 0x1337, + 0x135a, 0x137d, 0x13a5, 0x13c8, 0x13ec, 0x1419, 0x143f, 0x1463, + 0x148b, 0x14af, 0x14d3, 0x14f7, 0x151d, 0x153b, 0x155f, 0x1582, + 0x15a6, 0x15ca, 0x15f0, 0x1613, 0x1635, 0x1659, 0x167c, 0x16a0, + 0x16c4, 0x16e5, 0x1706, 0x1727, 0x174d, 0x176e, 0x1790, 0x17ba, + 0x17de, 0x1800, 0x1826, 0x1848, 0x186a, 0x188c, 0x18b0, 0x18dd, + 0x1904, 0x1929, 0x194e, 0x1971, 0x1994, 0x19b6, 0x19e0, 0x1a09, + // Entry 6940 - 697F + 0x1a33, 0x1a5d, 0x1a89, 0x1ab2, 0x1ada, 0x1b04, 0x1b2d, 0x1b57, + 0x1b81, 0x1ba8, 0x1bcf, 0x1bf6, 0x1c22, 0x1c49, 0x1c71, 0x1ca2, + 0x1ccc, 0x1cf4, 0x1d20, 0x1d48, 0x1d70, 0x1d98, 0x1dc2, 0x1de4, + 0x1e0c, 0x1e33, 0x1e5b, 0x1e83, 0x1ead, 0x1ed4, 0x1efa, 0x1f22, + 0x1f49, 0x1f71, 0x1f99, 0x1fbe, 0x1fe3, 0x2008, 0x2032, 0x2057, + 0x207d, 0x20ab, 0x20d3, 0x20f9, 0x2123, 0x2149, 0x216f, 0x2195, + 0x21bd, 0x21ee, 0x2219, 0x2242, 0x226b, 0x2292, 0x22b9, 0x22df, + 0x2310, 0x2340, 0x2371, 0x23a2, 0x23d5, 0x2405, 0x2434, 0x2465, + // Entry 6980 - 69BF + 0x2495, 0x24c6, 0x24f7, 0x2525, 0x2553, 0x2581, 0x25b4, 0x25e2, + 0x2611, 0x2649, 0x267a, 0x26a9, 0x26dc, 0x270b, 0x273a, 0x2769, + 0x279a, 0x27c3, 0x27f2, 0x2820, 0x284f, 0x287e, 0x28af, 0x28dd, + 0x290a, 0x2939, 0x2967, 0x2996, 0x29c5, 0x29f1, 0x2a1d, 0x2a49, + 0x2a7a, 0x2aa6, 0x2ad3, 0x2b08, 0x2b37, 0x2b64, 0x2b95, 0x2bc2, + 0x2bef, 0x2c1c, 0x2c4b, 0x2c83, 0x2cb5, 0x2ce5, 0x2d15, 0x2d43, + 0x2d71, 0x2d9e, 0x2dbf, 0x2dde, 0x01de, 0x01fa, 0x0215, 0x0230, + 0x024d, 0x0269, 0x0285, 0x02a0, 0x02bd, 0x02da, 0x02f6, 0x031b, + // Entry 69C0 - 69FF + 0x033f, 0x0363, 0x0389, 0x03ae, 0x03d3, 0x03f7, 0x041d, 0x0443, + 0x0468, 0x048a, 0x04ab, 0x04cc, 0x04ef, 0x0511, 0x0533, 0x0554, + 0x0577, 0x059a, 0x05bc, 0x05e3, 0x0609, 0x062f, 0x0657, 0x067e, + 0x06a5, 0x06cb, 0x06f3, 0x071b, 0x0742, 0x0763, 0x0783, 0x07a3, + 0x07c5, 0x07e6, 0x0807, 0x0827, 0x0849, 0x086b, 0x088c, 0x08a7, + 0x08c4, 0x08de, 0x08f9, 0x0915, 0x0931, 0x0951, 0x0973, 0x099f, + 0x09c9, 0x09eb, 0x0a0d, 0x0a33, 0x0a56, 0x0a78, 0x0a9c, 0x0ac3, + 0x0af5, 0x0b1e, 0x0b4a, 0x0b76, 0x0ba2, 0x0bd9, 0x0c11, 0x0c44, + // Entry 6A00 - 6A3F + 0x0c77, 0x0ca1, 0x0ccd, 0x0cf9, 0x0d25, 0x0d4d, 0x0d77, 0x0dad, + 0x0de3, 0x0e10, 0x0e4b, 0x0e82, 0x0ebe, 0x0ef5, 0x0f2f, 0x0f5e, + 0x0f8e, 0x0fbd, 0x0fec, 0x1025, 0x105c, 0x109d, 0x10d9, 0x110b, + 0x113d, 0x117b, 0x11b0, 0x11ea, 0x122b, 0x125d, 0x128f, 0x12c2, + 0x12f9, 0x132f, 0x1364, 0x1397, 0x13d0, 0x1403, 0x1432, 0x1468, + 0x14a3, 0x14d5, 0x150b, 0x152d, 0x1554, 0x157d, 0x15a9, 0x15db, + 0x1607, 0x1638, 0x1665, 0x168e, 0x16bc, 0x16ef, 0x1727, 0x1755, + 0x1788, 0x17bf, 0x17e7, 0x1814, 0x1843, 0x186c, 0x189c, 0x18d7, + // Entry 6A40 - 6A7F + 0x1910, 0x1925, 0x194f, 0x1969, 0x1989, 0x19ae, 0x19ce, 0x19f1, + 0x1a1d, 0x1a3f, 0x1a6c, 0x1a9e, 0x1ac0, 0x1ad5, 0x1af5, 0x1b13, + 0x1b36, 0x1b54, 0x1b69, 0x1b82, 0x1b96, 0x1bba, 0x1bd9, 0x1bfb, + 0x1c18, 0x1c3f, 0x1c61, 0x1c7f, 0x1c98, 0x1caf, 0x1cc4, 0x1ce4, + 0x1d02, 0x1d25, 0x1d40, 0x1d69, 0x1d7f, 0x1d9b, 0x1dc1, 0x1de2, + 0x1e06, 0x1e25, 0x1e55, 0x1e85, 0x1e9b, 0x1ec2, 0x1eeb, 0x1f13, + 0x1f3b, 0x1f58, 0x1f84, 0x1fb5, 0x1fe7, 0x2008, 0x2039, 0x2068, + 0x2098, 0x20b7, 0x20e2, 0x2103, 0x2122, 0x2142, 0x216d, 0x218e, + // Entry 6A80 - 6ABF + 0x21b8, 0x21da, 0x21fd, 0x2225, 0x224e, 0x2287, 0x22bc, 0x22de, + 0x2302, 0x2325, 0x2348, 0x2371, 0x239c, 0x23c6, 0x23e1, 0x240b, + 0x243a, 0x246b, 0x248a, 0x24c2, 0x24fb, 0x2518, 0x2541, 0x2562, + 0x2585, 0x25a6, 0x25c8, 0x25e9, 0x2614, 0x2645, 0x2665, 0x2685, + 0x26a5, 0x26cc, 0x26f5, 0x2723, 0x274e, 0x2778, 0x27a5, 0x27cb, + 0x27f3, 0x281f, 0x2847, 0x2868, 0x2885, 0x28a4, 0x28c5, 0x28f0, + 0x291a, 0x293c, 0x2965, 0x2988, 0x29b0, 0x29da, 0x2a09, 0x2a30, + 0x2a59, 0x2a86, 0x2ab2, 0x2adb, 0x2b0a, 0x2b3c, 0x2b73, 0x2ba9, + // Entry 6AC0 - 6AFF + 0x2bde, 0x2c10, 0x2c33, 0x2c59, 0x2c80, 0x2cb5, 0x2ceb, 0x2d1c, + 0x2d4d, 0x2d7d, 0x2daf, 0x2de7, 0x2e1b, 0x2e41, 0x2e6b, 0x2e9f, + 0x2ed3, 0x2f06, 0x2f2e, 0x2f4e, 0x2f73, 0x2f9a, 0x2fc2, 0x2fe4, + 0x300c, 0x3032, 0x3057, 0x3079, 0x3094, 0x30b4, 0x30dd, 0x3107, + 0x312c, 0x314f, 0x317f, 0x31ae, 0x31dd, 0x320a, 0x3236, 0x3265, + 0x3293, 0x32c8, 0x32dd, 0x32f7, 0x330f, 0x3329, 0x3342, 0x335a, + 0x3374, 0x338d, 0x33a6, 0x33c1, 0x33db, 0x33f3, 0x340d, 0x3426, + 0x343c, 0x3454, 0x346b, 0x3486, 0x34a1, 0x34c1, 0x34e1, 0x3503, + // Entry 6B00 - 6B3F + 0x3525, 0x3543, 0x3561, 0x357f, 0x359f, 0x35bf, 0x35db, 0x3600, + 0x3628, 0x3650, 0x3678, 0x36a2, 0x36d6, 0x370a, 0x373a, 0x3767, + 0x3795, 0x37c9, 0x37fe, 0x3832, 0x3868, 0x3898, 0x38c6, 0x38f6, + 0x3927, 0x3963, 0x3987, 0x39be, 0x39ee, 0x3a1f, 0x3a5b, 0x3a84, + 0x3aae, 0x3ad7, 0x3b02, 0x3b2e, 0x3b59, 0x3b87, 0x3bb1, 0x3bdc, + 0x3c06, 0x3c2e, 0x3c57, 0x3c7f, 0x3caa, 0x3cd6, 0x3d01, 0x3d2b, + 0x3d56, 0x3d80, 0x3db6, 0x3dec, 0x3e27, 0x3e5e, 0x3e95, 0x3ed1, + 0x3ef5, 0x3f23, 0x3f51, 0x3f7f, 0x3fa7, 0x3fd0, 0x3ff8, 0x4022, + // Entry 6B40 - 6B7F + 0x404d, 0x4079, 0x40a4, 0x40d1, 0x4101, 0x4132, 0x4162, 0x4194, + 0x41c7, 0x41fb, 0x422e, 0x4263, 0x4298, 0x42ce, 0x4303, 0x433a, + 0x436b, 0x439a, 0x43cb, 0x43fd, 0x443a, 0x445f, 0x4497, 0x44c8, + 0x4503, 0x4540, 0x4564, 0x4590, 0x45bd, 0x45e9, 0x460e, 0x4637, + 0x4661, 0x468a, 0x46b6, 0x46e3, 0x470f, 0x473a, 0x4766, 0x4791, + 0x47c9, 0x4801, 0x483e, 0x4875, 0x48ac, 0x48e8, 0x490d, 0x493f, + 0x4972, 0x49a4, 0x49d8, 0x4a0e, 0x4a45, 0x4a7b, 0x4ab3, 0x4af2, + 0x4b32, 0x4b5b, 0x4b85, 0x4bae, 0x4bd7, 0x4c01, 0x4c2a, 0x4c5a, + // Entry 6B80 - 6BBF + 0x4c90, 0x4cc7, 0x4cfd, 0x4d33, 0x4d6a, 0x4da0, 0x4dd2, 0x4e03, + 0x4e35, 0x4e5a, 0x4e7f, 0x4ea7, 0x4ecd, 0x4f04, 0x4f3a, 0x4f70, + 0x4fa6, 0x4fde, 0x5016, 0x5053, 0x5085, 0x50b6, 0x50e7, 0x5118, + 0x514b, 0x517e, 0x51b6, 0x51ed, 0x5225, 0x525c, 0x5297, 0x52d2, + 0x5313, 0x5354, 0x5395, 0x53d6, 0x5417, 0x5458, 0x5499, 0x54da, + 0x5514, 0x554e, 0x5584, 0x55ba, 0x55f5, 0x562e, 0x5667, 0x56a6, + 0x56e5, 0x572b, 0x5771, 0x57b0, 0x57ef, 0x582e, 0x586d, 0x58a5, + 0x58dd, 0x5911, 0x5945, 0x597e, 0x59a9, 0x59d5, 0x5a00, 0x5a2d, + // Entry 6BC0 - 6BFF + 0x5a5b, 0x5a85, 0x5aaf, 0x5ad9, 0x5b03, 0x5b2d, 0x5b53, 0x5b79, + 0x5ba4, 0x5bd4, 0x5c0a, 0x5c41, 0x5c77, 0x5cae, 0x5cf2, 0x5d37, + 0x5d7b, 0x5dbf, 0x5e04, 0x5e48, 0x5e80, 0x5eb8, 0x5ef8, 0x5f38, + 0x5f6c, 0x5fa0, 0x5fe2, 0x6024, 0x6047, 0x606a, 0x6082, 0x609a, + 0x60b3, 0x60ce, 0x60ee, 0x611a, 0x613e, 0x6159, 0x6169, 0x617d, + 0x61a9, 0x61d1, 0x61fe, 0x6227, 0x6251, 0x6271, 0x62a9, 0x62dc, + 0x6317, 0x6337, 0x635c, 0x637e, 0x63a6, 0x63ce, 0x63f4, 0x641a, + 0x6436, 0x6452, 0x646f, 0x6484, 0x649d, 0x64b4, 0x64d0, 0x64ee, + // Entry 6C00 - 6C3F + 0x6508, 0x6522, 0x653e, 0x6560, 0x6574, 0x658c, 0x65a6, 0x65c6, + 0x65ec, 0x6619, 0x664b, 0x6672, 0x66a0, 0x66d3, 0x66f7, 0x671c, + 0x6742, 0x675b, 0x6775, 0x678e, 0x67ab, 0x67ca, 0x67e6, 0x67f6, + 0x680e, 0x6826, 0x683f, 0x6857, 0x6872, 0x688c, 0x68b0, 0x68d4, + 0x68ed, 0x6906, 0x6926, 0x6946, 0x6966, 0x697d, 0x699d, 0x69b9, + 0x69d0, 0x69f0, 0x6a0c, 0x6a29, 0x6a47, 0x6a66, 0x6a81, 0x6aa5, + 0x6ac5, 0x6ae5, 0x6b0e, 0x6b33, 0x6b49, 0x6b67, 0x6b86, 0x6b9d, + 0x6bbc, 0x6bda, 0x6bfb, 0x6c1b, 0x6c3b, 0x6c54, 0x6c75, 0x6c96, + // Entry 6C40 - 6C7F + 0x6cb9, 0x6cd8, 0x6cfb, 0x6d27, 0x6d4e, 0x6d74, 0x6d9a, 0x6dc0, + 0x6dd1, 0x6deb, 0x6e06, 0x6e2a, 0x6e43, 0x6e65, 0x6e80, 0x6ea2, + 0x6ec5, 0x6ed5, 0x6ee5, 0x6efb, 0x6f19, 0x6f3b, 0x6f62, 0x6f8a, + 0x6fb1, 0x6fdd, 0x7004, 0x7029, 0x7057, 0x7073, 0x708c, 0x70a5, + 0x70be, 0x70d7, 0x70f0, 0x7109, 0x7122, 0x7134, 0x7158, 0x717d, + 0x7198, 0x71b2, 0x71cc, 0x71ea, 0x7204, 0x7225, 0x7236, 0x724b, + 0x7260, 0x7271, 0x7288, 0x0288, 0x02a3, 0x02be, 0x02d9, 0x02f4, + 0x030f, 0x030f, 0x032e, 0x034d, 0x036c, 0x038b, 0x03aa, 0x03c9, + // Entry 6C80 - 6CBF + 0x03e8, 0x0407, 0x0427, 0x0447, 0x0467, 0x0487, 0x04a7, 0x04c7, + 0x04e7, 0x00e7, 0x0106, 0x0126, 0x0146, 0x0169, 0x018a, 0x01ab, + 0x01ce, 0x01ce, 0x01f0, 0x0210, 0x0238, 0x0255, 0x0277, 0x0297, + 0x02ba, 0x02dd, 0x02fe, 0x031d, 0x033f, 0x0360, 0x0381, 0x03a3, + 0x03c2, 0x03e3, 0x0403, 0x0003, 0x0023, 0x0042, 0x0064, 0x0083, + 0x00a3, 0x00c3, 0x00e3, 0x00e3, 0x0101, 0x0126, 0x0126, 0x0144, + 0x0171, 0x0194, 0x01bf, 0x01df, 0x01df, 0x01fd, 0x021b, 0x0239, + 0x0258, 0x0276, 0x0295, 0x02b3, 0x02d2, 0x02f0, 0x030e, 0x032c, + // Entry 6CC0 - 6CFF + 0x034b, 0x0369, 0x0388, 0x03a6, 0x03c5, 0x03e4, 0x0403, 0x0422, + 0x0441, 0x0460, 0x047f, 0x049e, 0x04bd, 0x04dc, 0x04fc, 0x051c, + 0x053a, 0x0558, 0x0576, 0x0595, 0x05b3, 0x05d2, 0x05f0, 0x060d, + 0x062a, 0x0647, 0x0665, 0x0682, 0x06a0, 0x06bd, 0x06db, 0x06f9, + 0x0717, 0x0735, 0x0753, 0x0771, 0x078f, 0x07ad, 0x07cc, 0x07ea, + 0x0809, 0x0827, 0x0846, 0x0864, 0x0882, 0x08a0, 0x08bf, 0x08dd, + 0x08fc, 0x091a, 0x093d, 0x095b, 0x0979, 0x0997, 0x09b6, 0x09d5, + 0x09f3, 0x0a11, 0x0a2f, 0x0a4d, 0x0a6c, 0x0a8a, 0x0aa9, 0x0ac7, + // Entry 6D00 - 6D3F + 0x0ae5, 0x0b03, 0x0b21, 0x0b40, 0x0b5e, 0x0b7d, 0x0b9b, 0x0bbe, + 0x0bdc, 0x0bfa, 0x0c18, 0x0c37, 0x0c55, 0x0c74, 0x0c92, 0x0cb0, + 0x0cce, 0x0cec, 0x0d0b, 0x0d29, 0x0d48, 0x0d66, 0x0d85, 0x0da4, + 0x0dc3, 0x0de2, 0x0e01, 0x0e20, 0x0e3f, 0x0e5d, 0x0e7b, 0x0e99, + 0x0eb8, 0x0ed6, 0x0ef5, 0x0f13, 0x0f33, 0x0f53, 0x0f72, 0x0f91, + 0x0fb0, 0x0fcf, 0x0fee, 0x100e, 0x102e, 0x104e, 0x106e, 0x108f, + 0x10af, 0x10d0, 0x10f0, 0x1111, 0x1132, 0x1157, 0x117d, 0x11a2, + 0x11c0, 0x11de, 0x11fc, 0x121b, 0x123b, 0x125b, 0x127b, 0x129b, + // Entry 6D40 - 6D7F + 0x12bc, 0x12da, 0x12f8, 0x1316, 0x1335, 0x1353, 0x1372, 0x1390, + 0x13af, 0x13ce, 0x13ed, 0x140d, 0x142d, 0x144c, 0x146c, 0x148b, + 0x14ab, 0x14cf, 0x14f4, 0x1518, 0x1537, 0x1556, 0x1575, 0x1595, + 0x15b4, 0x15d4, 0x15f3, 0x1612, 0x1631, 0x1650, 0x1670, 0x168f, + 0x16af, 0x16ce, 0x16ec, 0x170b, 0x172a, 0x1749, 0x1769, 0x1788, + 0x17a8, 0x17c7, 0x17e6, 0x1805, 0x1825, 0x1845, 0x1863, 0x1881, + 0x189f, 0x18be, 0x18dc, 0x18fb, 0x1919, 0x1939, 0x1959, 0x1979, + 0x1999, 0x19b9, 0x01b9, 0x01d0, 0x01e7, 0x0200, 0x0218, 0x0230, + // Entry 6D80 - 6DBF + 0x0247, 0x0260, 0x0279, 0x0291, 0x02b5, 0x02d8, 0x02ff, 0x0327, + 0x0353, 0x0383, 0x03aa, 0x03aa, 0x03c3, 0x03dd, 0x03f6, 0x040f, + 0x0426, 0x0445, 0x045c, 0x0474, 0x048b, 0x04a1, 0x04b8, 0x04ce, + 0x04e4, 0x04fc, 0x0514, 0x052c, 0x0544, 0x055c, 0x0573, 0x0589, + 0x05a2, 0x05ba, 0x05d1, 0x05ea, 0x0601, 0x0619, 0x0630, 0x0648, + 0x065f, 0x0677, 0x068f, 0x06a7, 0x06bf, 0x06d7, 0x06ee, 0x0706, + 0x071d, 0x0734, 0x0749, 0x0766, 0x077b, 0x0791, 0x07a6, 0x07ba, + 0x07cf, 0x07e3, 0x07f7, 0x080d, 0x0823, 0x0839, 0x084f, 0x0865, + // Entry 6DC0 - 6DFF + 0x087a, 0x088e, 0x08a5, 0x08bb, 0x08d0, 0x08e7, 0x08fc, 0x0912, + 0x0927, 0x093d, 0x0952, 0x0968, 0x097e, 0x0994, 0x09aa, 0x09c0, + 0x09d5, 0x09eb, 0x0a00, 0x0a0b, 0x0a23, 0x0a44, 0x0a4f, 0x024f, + 0x025f, 0x026e, 0x027d, 0x028e, 0x029e, 0x02ae, 0x02bd, 0x02ce, + 0x02df, 0x02ef, 0x02ef, 0x030d, 0x0328, 0x0328, 0x0340, 0x0357, + 0x036f, 0x0386, 0x0386, 0x039d, 0x03b5, 0x03cc, 0x03e3, 0x03fa, + 0x0411, 0x0428, 0x0440, 0x0458, 0x0470, 0x0487, 0x049e, 0x04b5, + 0x04cc, 0x04e3, 0x04fc, 0x0513, 0x052b, 0x0543, 0x055b, 0x0572, + // Entry 6E00 - 6E3F + 0x0589, 0x05a2, 0x05c1, 0x05e1, 0x0600, 0x061f, 0x021f, 0x023e, + 0x025e, 0x025e, 0x027d, 0x027d, 0x029c, 0x029c, 0x02bb, 0x02da, + 0x02f9, 0x0319, 0x0339, 0x0359, 0x0378, 0x0397, 0x03b6, 0x03d5, + 0x03d5, 0x03f6, 0x0415, 0x0435, 0x0455, 0x0055, 0x0074, 0x0074, + 0x0095, 0x0095, 0x00b4, 0x00b4, 0x00d2, 0x00d2, 0x00f0, 0x00f0, + 0x010e, 0x010e, 0x012d, 0x014c, 0x016a, 0x016a, 0x0188, 0x01a6, + 0x01a6, 0x01c6, 0x01c6, 0x01e5, 0x01e5, 0x0203, 0x0203, 0x0223, + 0x0223, 0x024a, 0x024a, 0x0270, 0x0270, 0x0291, 0x02b3, 0x02b3, + // Entry 6E40 - 6E7F + 0x02d4, 0x02d4, 0x02f5, 0x0316, 0x0337, 0x0358, 0x0358, 0x037a, + 0x039c, 0x03be, 0x03df, 0x0400, 0x0421, 0x0442, 0x0042, 0x0065, + 0x0086, 0x00a8, 0x00ca, 0x00ca, 0x00eb, 0x010c, 0x012f, 0x0158, + 0x0158, 0x0181, 0x0181, 0x01a0, 0x01be, 0x01dd, 0x01fb, 0x0219, + 0x0237, 0x0256, 0x0274, 0x0292, 0x02b0, 0x02b0, 0x02ce, 0x02ed, + 0x030c, 0x032b, 0x0349, 0x0367, 0x0385, 0x03a3, 0x03c1, 0x03e1, + 0x03ff, 0x041e, 0x043d, 0x045c, 0x047a, 0x0498, 0x04b8, 0x00b8, + 0x00dd, 0x0103, 0x0128, 0x0128, 0x014d, 0x0173, 0x0198, 0x01bd, + // Entry 6E80 - 6EBF + 0x01e2, 0x01e2, 0x0207, 0x022d, 0x0253, 0x0279, 0x029e, 0x02c3, + 0x02e8, 0x030d, 0x0332, 0x0359, 0x037e, 0x03a4, 0x03ca, 0x03f0, + 0x0415, 0x043a, 0x0461, 0x0061, 0x0098, 0x00c1, 0x00c1, 0x00d7, + 0x00ee, 0x0104, 0x011b, 0x0132, 0x014b, 0x0164, 0x0182, 0x01a0, + 0x01c0, 0x01df, 0x01fe, 0x021c, 0x023c, 0x025c, 0x027b, 0x0296, + 0x02b1, 0x02ce, 0x02ea, 0x0306, 0x0321, 0x033e, 0x035b, 0x0377, + 0x0392, 0x03ad, 0x03ca, 0x03e6, 0x0402, 0x041d, 0x043a, 0x0457, + 0x0473, 0x0484, 0x0497, 0x04aa, 0x04c4, 0x04d7, 0x04ea, 0x04fd, + // Entry 6EC0 - 6EFF + 0x0510, 0x0522, 0x0533, 0x0133, 0x014e, 0x016a, 0x0186, 0x01a2, + 0x01be, 0x01da, 0x01f6, 0x0212, 0x022e, 0x024a, 0x0266, 0x0282, + 0x029e, 0x02ba, 0x02d6, 0x02f2, 0x030e, 0x032a, 0x0346, 0x0362, + 0x037e, 0x039a, 0x03b6, 0x03d2, 0x03ee, 0x040a, 0x0426, 0x0442, + 0x045e, 0x047a, 0x0496, 0x04b2, 0x04ce, 0x04ea, 0x0506, 0x0522, + 0x053e, 0x055a, 0x0576, 0x0592, 0x05ae, 0x05ca, 0x05e6, 0x0602, + 0x061e, 0x063a, 0x0656, 0x0672, 0x068e, 0x06aa, 0x06c3, 0x06dd, + 0x06f7, 0x0711, 0x072b, 0x0745, 0x075f, 0x0779, 0x0793, 0x07ad, + // Entry 6F00 - 6F3F + 0x07c7, 0x07e1, 0x07fb, 0x0815, 0x082f, 0x0849, 0x0863, 0x087d, + 0x0897, 0x08b1, 0x08cb, 0x08e5, 0x08ff, 0x0919, 0x0933, 0x094d, + 0x0967, 0x0981, 0x099b, 0x09b5, 0x09cf, 0x09e9, 0x0a03, 0x0a1d, + 0x0a37, 0x0a51, 0x0a6b, 0x0a85, 0x0a9f, 0x0ab9, 0x0ad3, 0x0aed, + 0x0b07, 0x0b21, 0x0b3b, 0x0b55, 0x0b6f, 0x0b89, 0x0ba3, 0x0bbd, + 0x03bd, 0x03ce, 0x03e8, 0x0402, 0x041e, 0x0439, 0x0454, 0x046e, + 0x048a, 0x04a6, 0x04c1, 0x04db, 0x04f6, 0x0513, 0x052f, 0x054a, + 0x014a, 0x0164, 0x017e, 0x019a, 0x01b5, 0x01d0, 0x01ea, 0x0206, + // Entry 6F40 - 6F7F + 0x0222, 0x023d, 0x0257, 0x0272, 0x028f, 0x02ab, 0x02c6, 0x02dc, + 0x02dc, 0x02f8, 0x0314, 0x0332, 0x034f, 0x036c, 0x0388, 0x03a6, + 0x03c4, 0x03e1, 0x03fd, 0x041a, 0x0439, 0x0457, 0x0474, 0x048c, + 0x008c, 0x00a5, 0x00be, 0x00d9, 0x00f3, 0x010d, 0x0126, 0x0141, + 0x015c, 0x0176, 0x018f, 0x01a9, 0x01c5, 0x01e0, 0x01fa, 0x0212, + 0x0223, 0x0237, 0x024b, 0x025f, 0x0273, 0x0287, 0x029b, 0x02af, + 0x02c3, 0x02d7, 0x02ec, 0x0301, 0x0316, 0x032b, 0x0340, 0x0355, + 0x036a, 0x037f, 0x0394, 0x03a9, 0x03be, 0x03d3, 0x03d3, 0x03e7, + // Entry 6F80 - 6FBF + 0x03f7, 0x0406, 0x0415, 0x0426, 0x0436, 0x0446, 0x0455, 0x0466, + 0x0477, 0x0487, 0x04ac, 0x04da, 0x00da, 0x00fe, 0x0122, 0x0146, + 0x016a, 0x018e, 0x01b2, 0x01d6, 0x01fa, 0x021e, 0x0242, 0x0266, + 0x028a, 0x02ae, 0x02d2, 0x02f6, 0x031a, 0x033e, 0x0362, 0x0386, + 0x03aa, 0x03ce, 0x03f2, 0x0416, 0x043a, 0x045e, 0x0482, 0x04b1, + 0x04d6, 0x04fb, 0x0505, 0x050f, 0x010f, 0x012d, 0x014b, 0x0169, + 0x0187, 0x01a5, 0x01c3, 0x01e1, 0x01ff, 0x021d, 0x023b, 0x0259, + 0x0277, 0x0295, 0x02b3, 0x02d1, 0x02ef, 0x030d, 0x032b, 0x0349, + // Entry 6FC0 - 6FFF + 0x0367, 0x0385, 0x03a3, 0x03c1, 0x03df, 0x03fd, 0x041b, 0x0425, + 0x042f, 0x0439, 0x0443, 0x044e, 0x0458, 0x047f, 0x04a6, 0x04cd, + 0x04f4, 0x051b, 0x0542, 0x0569, 0x0590, 0x05b7, 0x05de, 0x0605, + 0x062c, 0x0653, 0x067a, 0x06a1, 0x06c8, 0x06ef, 0x0716, 0x073d, + 0x0764, 0x078b, 0x07b2, 0x07d9, 0x0800, 0x0827, 0x084e, 0x085c, + 0x086a, 0x006a, 0x0091, 0x00b8, 0x00df, 0x0106, 0x012d, 0x0154, + 0x017b, 0x01a2, 0x01c9, 0x01f0, 0x0217, 0x023e, 0x0265, 0x028c, + 0x02b3, 0x02da, 0x0301, 0x0328, 0x034f, 0x0376, 0x039d, 0x03c4, + // Entry 7000 - 703F + 0x03eb, 0x0412, 0x0439, 0x0460, 0x048f, 0x04a2, 0x04b5, 0x04c8, + 0x04db, 0x04ee, 0x04f7, 0x0501, 0x050d, 0x0519, 0x0523, 0x052e, + 0x0538, 0x0542, 0x054d, 0x056d, 0x0577, 0x0586, 0x059b, 0x05a8, + 0x05b6, 0x05c5, 0x05db, 0x05f2, 0x060e, 0x061d, 0x0639, 0x0655, + 0x065f, 0x066a, 0x0678, 0x0688, 0x0693, 0x069e, 0x06a9, 0x02a9, + 0x02cb, 0x02ed, 0x030f, 0x0331, 0x0353, 0x0375, 0x0397, 0x03b9, + 0x03db, 0x03fd, 0x041f, 0x0441, 0x0463, 0x0485, 0x04a7, 0x04c9, + 0x04eb, 0x050d, 0x052f, 0x0551, 0x0573, 0x0595, 0x05b7, 0x05d9, + // Entry 7040 - 707F + 0x05fb, 0x061d, 0x0631, 0x0646, 0x0659, 0x0259, 0x027b, 0x029d, + 0x02bf, 0x02d2, 0x02f4, 0x0316, 0x0338, 0x035a, 0x037c, 0x039e, + 0x03c0, 0x03e2, 0x0404, 0x0426, 0x0448, 0x046a, 0x048c, 0x04ae, + 0x04d0, 0x04f2, 0x0514, 0x0536, 0x0558, 0x057a, 0x059c, 0x05be, + 0x05e0, 0x0602, 0x0624, 0x0646, 0x0668, 0x068a, 0x06ac, 0x06ce, + 0x06f0, 0x0712, 0x0734, 0x0756, 0x0778, 0x079a, 0x07bc, 0x07de, + 0x0800, 0x0822, 0x0022, 0x0055, 0x0088, 0x00bb, 0x00ee, 0x0121, + 0x0154, 0x0187, 0x01ba, 0x01ed, 0x01ed, 0x0208, 0x0220, 0x0220, + // Entry 7080 - 70BF + 0x0227, 0x022c, 0x023b, 0x024b, 0x0261, 0x0268, 0x0279, 0x028e, + 0x0295, 0x02a4, 0x02ae, 0x02b5, 0x02be, 0x02d7, 0x02eb, 0x0305, + 0x0319, 0x0328, 0x0343, 0x035c, 0x0376, 0x0386, 0x03a0, 0x03b8, + 0x03d3, 0x03e0, 0x03f2, 0x040e, 0x0429, 0x043c, 0x0449, 0x0455, + 0x0462, 0x046d, 0x047a, 0x0483, 0x049d, 0x04b3, 0x04d3, 0x04e2, + 0x04f1, 0x0505, 0x0517, 0x051a, 0x052b, 0x0532, 0x0536, 0x053d, + 0x0545, 0x054d, 0x055b, 0x0569, 0x0572, 0x0578, 0x0582, 0x0587, + 0x0595, 0x0599, 0x05a1, 0x05aa, 0x05b1, 0x05bd, 0x05c8, 0x05cc, + // Entry 70C0 - 70FF + 0x05dc, 0x05e6, 0x05f1, 0x0608, 0x0610, 0x0616, 0x061f, 0x0625, + 0x062a, 0x0634, 0x063d, 0x0642, 0x0648, 0x0651, 0x065a, 0x0665, + 0x0669, 0x066e, 0x0676, 0x0680, 0x0689, 0x0697, 0x06a3, 0x06ae, + 0x06ba, 0x06c3, 0x06ce, 0x06dc, 0x06e9, 0x06f2, 0x06f7, 0x0703, + 0x0717, 0x071c, 0x0720, 0x0725, 0x0731, 0x074c, 0x075a, 0x0764, + 0x076d, 0x0775, 0x077b, 0x0788, 0x078d, 0x0795, 0x079c, 0x07a5, + 0x07ae, 0x07b7, 0x07c2, 0x07c9, 0x07d7, 0x07ec, 0x07ff, 0x0809, + 0x0817, 0x0825, 0x082d, 0x083f, 0x084a, 0x0863, 0x087b, 0x0882, + // Entry 7100 - 713F + 0x0888, 0x0897, 0x08a4, 0x08b2, 0x08c0, 0x08d0, 0x08d9, 0x08ea, + 0x08f1, 0x08fd, 0x090a, 0x0917, 0x0924, 0x0933, 0x0941, 0x094e, + 0x0958, 0x096d, 0x097b, 0x0989, 0x09a3, 0x09b5, 0x09c3, 0x09d2, + 0x09ed, 0x09fe, 0x0a0a, 0x0a17, 0x0a35, 0x0a54, 0x0a5f, 0x0a70, + 0x0a7e, 0x0a8a, 0x0a98, 0x0aad, 0x0ab7, 0x0ac3, 0x0ac9, 0x0ad2, + 0x0ae0, 0x0ae7, 0x0af2, 0x0af8, 0x0b05, 0x0b14, 0x0b1e, 0x0b28, + 0x0b34, 0x0b3d, 0x0b45, 0x0b4c, 0x0b60, 0x0b6c, 0x0b82, 0x0b8b, + 0x0b91, 0x0ba1, 0x0ba8, 0x0bae, 0x0bbb, 0x0bd2, 0x0be9, 0x0bf9, + // Entry 7140 - 717F + 0x0c0c, 0x0c1a, 0x0c25, 0x0c2b, 0x0c31, 0x0c3d, 0x0c43, 0x0c4f, + 0x0c60, 0x0c6e, 0x0c75, 0x0c82, 0x0c88, 0x0c99, 0x0ca3, 0x0cb7, + 0x0cc1, 0x0cdc, 0x0cf5, 0x0d11, 0x0d25, 0x0d2c, 0x0d3f, 0x0d54, + 0x0d63, 0x0d6c, 0x0d83, 0x0d95, 0x0d9b, 0x0da8, 0x0db5, 0x0dbc, + 0x0dca, 0x0ddb, 0x0dea, 0x0dfe, 0x0e12, 0x0e1a, 0x0e1e, 0x0e36, + 0x0e3b, 0x0e45, 0x0e56, 0x0e5c, 0x0e6c, 0x0e73, 0x0e82, 0x0e91, + 0x0ea0, 0x0ead, 0x0eba, 0x0ecb, 0x0edc, 0x0ee3, 0x0ef0, 0x0ef5, + 0x0f16, 0x0f23, 0x0f2a, 0x0f4d, 0x0f6e, 0x0f8f, 0x0fb0, 0x0fd1, + // Entry 7180 - 71BF + 0x0fd4, 0x0fd9, 0x0fdb, 0x0fe8, 0x0feb, 0x0ff0, 0x0ff7, 0x0ffd, + 0x1000, 0x1006, 0x100f, 0x1014, 0x1019, 0x101e, 0x1023, 0x1026, + 0x102a, 0x102f, 0x1035, 0x103c, 0x1043, 0x1046, 0x1049, 0x104d, + 0x1055, 0x105c, 0x1068, 0x106b, 0x106e, 0x1076, 0x1081, 0x1085, + 0x1092, 0x109a, 0x10a0, 0x10ae, 0x10b8, 0x10cf, 0x10d3, 0x10da, + 0x10df, 0x10e5, 0x10f4, 0x1102, 0x1109, 0x1113, 0x111b, 0x1125, + 0x1130, 0x1138, 0x1143, 0x1151, 0x115b, 0x1166, 0x116e, 0x1176, + 0x117f, 0x118b, 0x1194, 0x119d, 0x11a7, 0x11af, 0x11b9, 0x11c1, + // Entry 71C0 - 71FF + 0x11c5, 0x11c8, 0x11cb, 0x11cf, 0x11d4, 0x11da, 0x11fa, 0x121c, + 0x123e, 0x1261, 0x1271, 0x1281, 0x128d, 0x129b, 0x12ab, 0x12be, + 0x12cd, 0x12d2, 0x12dc, 0x12e6, 0x12ed, 0x12f4, 0x12f9, 0x12fe, + 0x1304, 0x130a, 0x1318, 0x131d, 0x1324, 0x1329, 0x1332, 0x133f, + 0x134f, 0x135c, 0x1368, 0x1372, 0x1384, 0x1397, 0x139a, 0x139e, + 0x13a1, 0x13a6, 0x13ac, 0x13c7, 0x13dc, 0x13f3, 0x1401, 0x1416, + 0x1425, 0x143b, 0x144e, 0x145d, 0x1466, 0x1471, 0x1475, 0x1488, + 0x1490, 0x149d, 0x14ac, 0x14b1, 0x14bb, 0x14d1, 0x14de, 0x14e1, + // Entry 7200 - 723F + 0x14e6, 0x14fd, 0x1506, 0x150c, 0x1514, 0x151f, 0x152b, 0x1532, + 0x153d, 0x1544, 0x1548, 0x1551, 0x155c, 0x1560, 0x1569, 0x156d, + 0x1574, 0x1585, 0x158c, 0x1599, 0x15a5, 0x15af, 0x15be, 0x15cb, + 0x15db, 0x15e5, 0x15f0, 0x15fc, 0x1608, 0x1619, 0x1629, 0x1639, + 0x1658, 0x166b, 0x1677, 0x167b, 0x168a, 0x169a, 0x16b0, 0x16b7, + 0x16c2, 0x16cd, 0x16da, 0x16e6, 0x16f4, 0x1703, 0x170f, 0x1724, + 0x172d, 0x173e, 0x174f, 0x175a, 0x1770, 0x1789, 0x17a0, 0x17b8, + 0x17c8, 0x17ed, 0x17f1, 0x1802, 0x180b, 0x1813, 0x181e, 0x182a, + // Entry 7240 - 727F + 0x182d, 0x1838, 0x1848, 0x1856, 0x1864, 0x186c, 0x187d, 0x1887, + 0x189f, 0x18b9, 0x18c2, 0x18cb, 0x18d2, 0x18df, 0x18e8, 0x18f6, + 0x1906, 0x1913, 0x1919, 0x1921, 0x193f, 0x194a, 0x1953, 0x195d, + 0x1966, 0x1971, 0x1976, 0x1980, 0x1986, 0x198a, 0x199c, 0x19a1, + 0x19ac, 0x19bd, 0x19d7, 0x19e9, 0x19f4, 0x19fe, 0x1a05, 0x1a12, + 0x1a23, 0x1a46, 0x1a66, 0x1a85, 0x1aa2, 0x1ac0, 0x1ac7, 0x1ad2, + 0x1adb, 0x1ae7, 0x1b11, 0x1b1f, 0x1b2f, 0x1b3f, 0x1b50, 0x1b56, + 0x1b67, 0x1b73, 0x1b7d, 0x1b82, 0x1b8f, 0x1b9d, 0x1bac, 0x1bb8, + // Entry 7280 - 72BF + 0x1bd1, 0x1c06, 0x1c54, 0x1c86, 0x1cbc, 0x1cd1, 0x1ce7, 0x1d07, + 0x1d0e, 0x1d29, 0x1d47, 0x1d4e, 0x1d5b, 0x1d79, 0x1d98, 0x1da9, + 0x1dbd, 0x1dc0, 0x1dc4, 0x1dcd, 0x1dd1, 0x1dee, 0x1df6, 0x1e01, + 0x1e0d, 0x1e2c, 0x1e4a, 0x1e7e, 0x1e9e, 0x1eba, 0x1ed6, 0x1ee0, + 0x1f06, 0x1f2a, 0x1f42, 0x1f5a, 0x1f78, 0x1f7c, 0x1f8a, 0x1f90, + 0x1f96, 0x1fa2, 0x1fa7, 0x1fad, 0x1fb7, 0x1fc0, 0x1fcc, 0x1fec, + 0x2008, 0x2016, 0x2029, 0x203c, 0x204c, 0x205d, 0x2071, 0x2083, + 0x2097, 0x20a9, 0x20c1, 0x20db, 0x20f9, 0x2119, 0x213a, 0x215b, + // Entry 72C0 - 72FF + 0x216f, 0x2192, 0x219e, 0x21c5, 0x21ed, 0x2205, 0x2216, 0x2227, + 0x2233, 0x223c, 0x2249, 0x224e, 0x2254, 0x225d, 0x2277, 0x2286, + 0x229b, 0x22b0, 0x22c7, 0x22dd, 0x22f3, 0x2308, 0x231f, 0x2336, + 0x234c, 0x2361, 0x2379, 0x2391, 0x23a6, 0x23bb, 0x23d2, 0x23e8, + 0x23fe, 0x2413, 0x242a, 0x2441, 0x2457, 0x246c, 0x2484, 0x249c, + 0x24a9, 0x24ca, 0x24ee, 0x24f6, 0x250f, 0x251b, 0x251f, 0x2525, + 0x2536, 0x2550, 0x2559, 0x255d, 0x257c, 0x2589, 0x2598, 0x259e, + 0x25a8, 0x25b0, 0x25bb, 0x25d7, 0x25f3, 0x2610, 0x2629, 0x2642, + // Entry 7300 - 733F + 0x265b, 0x2671, 0x2681, 0x2691, 0x26a8, 0x26b7, 0x26d0, 0x26e1, + 0x26ee, 0x26ff, 0x2717, 0x272e, 0x2743, 0x2754, 0x2765, 0x2778, + 0x2798, 0x27c1, 0x27d8, 0x27f1, 0x2806, 0x282f, 0x2864, 0x2887, + 0x28a9, 0x28cc, 0x28ee, 0x2911, 0x2933, 0x2956, 0x2976, 0x2998, + 0x29b8, 0x29da, 0x29fa, 0x2a1c, 0x2a27, 0x2a37, 0x2a49, 0x2a62, + 0x2a69, 0x2a7a, 0x2a96, 0x2ab2, 0x2ac8, 0x2ad6, 0x2ae4, 0x2af4, + 0x2b04, 0x2b16, 0x2b1f, 0x2b34, 0x2b3d, 0x2b43, 0x2b4f, 0x2b57, + 0x2b68, 0x2b7a, 0x2b98, 0x2bad, 0x2bbf, 0x2bcf, 0x2bde, 0x2bea, + // Entry 7340 - 737F + 0x2bf0, 0x2bfb, 0x2c0e, 0x2c1b, 0x2c27, 0x2c31, 0x2c40, 0x2c4e, + 0x2c52, 0x2c5b, 0x2c63, 0x2c71, 0x2c7b, 0x2c86, 0x2c8e, 0x2c92, + 0x2c97, 0x2ca2, 0x2cb1, 0x2cc4, 0x2cd2, 0x2cda, 0x2ce2, 0x2ce9, + 0x2d13, 0x2d21, 0x2d3a, 0x2d53, 0x2d5e, 0x2d65, 0x2d78, 0x2d8e, + 0x2d99, 0x2da5, 0x2da9, 0x2dc4, 0x2dd4, 0x2de4, 0x2df3, 0x2e03, + 0x2e15, 0x2e28, 0x2e3a, 0x2e4e, 0x2e61, 0x2e75, 0x2e86, 0x2e98, + 0x2ea3, 0x2eb8, 0x2ec6, 0x2edc, 0x2eeb, 0x2f03, 0x2f17, 0x2f34, + 0x2f44, 0x2f5e, 0x2f67, 0x2f71, 0x2f7c, 0x2f8d, 0x2fa0, 0x2fa5, + // Entry 7380 - 73BF + 0x2fb2, 0x2fd1, 0x2fe7, 0x3003, 0x3030, 0x305b, 0x308f, 0x30a5, + 0x30bc, 0x30c8, 0x30e6, 0x3103, 0x3110, 0x3133, 0x314f, 0x315c, + 0x3168, 0x317b, 0x3188, 0x319c, 0x31a8, 0x31b5, 0x31c4, 0x31d0, + 0x31e4, 0x3202, 0x321f, 0x3239, 0x3263, 0x3295, 0x32a6, 0x32b2, + 0x32bc, 0x32c8, 0x32d3, 0x32e3, 0x32fc, 0x331a, 0x3337, 0x3345, + 0x3351, 0x335b, 0x3366, 0x3370, 0x337e, 0x3390, 0x33a4, 0x33af, + 0x33d2, 0x33e8, 0x33f7, 0x3403, 0x3410, 0x341a, 0x342c, 0x3442, + 0x3465, 0x347f, 0x349f, 0x34c6, 0x34dd, 0x34fe, 0x350e, 0x351d, + // Entry 73C0 - 73FF + 0x352b, 0x3541, 0x3556, 0x3566, 0x357c, 0x3595, 0x35a9, 0x35bd, + 0x35cf, 0x35e2, 0x35f6, 0x3613, 0x363b, 0x364a, 0x3662, 0x367a, + 0x3692, 0x36aa, 0x36c2, 0x36da, 0x36f9, 0x3718, 0x3737, 0x3756, + 0x3773, 0x3790, 0x37ad, 0x37ca, 0x37ed, 0x3810, 0x3833, 0x3856, + 0x386d, 0x3884, 0x389b, 0x38b2, 0x38cf, 0x38ec, 0x3909, 0x3926, + 0x3942, 0x396e, 0x3989, 0x39b4, 0x39c4, 0x39d2, 0x39e3, 0x39f3, + 0x3a0e, 0x3a2f, 0x3a48, 0x3a67, 0x3a7f, 0x3a97, 0x3ad3, 0x3b08, + 0x3b41, 0x3b5b, 0x3b7a, 0x3b9f, 0x3bb1, 0x3bcb, 0x3bd8, 0x3bed, + // Entry 7400 - 743F + 0x3bf3, 0x3bfd, 0x3c0d, 0x3c18, 0x3c28, 0x3c49, 0x3c4e, 0x3c53, + 0x3c5d, 0x3c64, 0x3c68, 0x3c70, 0x3c73, 0x3c7f, 0x3c89, 0x3c91, + 0x3c98, 0x3ca1, 0x3cac, 0x3cb6, 0x3cc9, 0x3ccd, 0x3cda, 0x3ce4, + 0x3cf7, 0x3d0b, 0x3d19, 0x3d2a, 0x3d31, 0x3d39, 0x3d49, 0x3d5b, + 0x3d6c, 0x3d7a, 0x3d7e, 0x3d85, 0x3d8e, 0x3da6, 0x3dbc, 0x3dcd, + 0x3de8, 0x3dff, 0x3e03, 0x3e10, 0x3e1e, 0x3e2f, 0x3e4d, 0x3e61, + 0x3e75, 0x3e8d, 0x3e94, 0x3e9f, 0x3ea8, 0x3eba, 0x3ec4, 0x3ed2, + 0x3ee3, 0x3eee, 0x3efb, 0x3f03, 0x3f0e, 0x3f14, 0x3f20, 0x3f26, + // Entry 7440 - 747F + 0x3f2a, 0x3f31, 0x3f41, 0x3f48, 0x3f55, 0x3f61, 0x3f7e, 0x3f8d, + 0x3fa7, 0x3fb2, 0x3fbe, 0x3fcc, 0x3fe2, 0x3fef, 0x3ffb, 0x3ffe, + 0x400e, 0x401c, 0x402c, 0x002c, 0x003d, 0x0043, 0x004b, 0x0053, + 0x0060, 0x006a, 0x0087, 0x009b, 0x00b5, 0x00c3, 0x00de, 0x00f0, + 0x0101, 0x0101, 0x010a, 0x011e, 0x012f, 0x013d, 0x0144, 0x0151, + 0x0156, 0x0156, 0x0178, 0x0191, 0x01ab, 0x01c6, 0x01e1, 0x0201, + 0x0221, 0x0243, 0x0263, 0x0285, 0x02a2, 0x02c1, 0x02e0, 0x02fc, + 0x0325, 0x0347, 0x036e, 0x0397, 0x03c0, 0x03de, 0x03f8, 0x0413, + // Entry 7480 - 74BF + 0x0430, 0x044f, 0x046e, 0x048f, 0x04a9, 0x04c5, 0x04e3, 0x0503, + 0x0527, 0x054c, 0x056c, 0x0591, 0x05ba, 0x05e0, 0x0608, 0x0630, + 0x0660, 0x0691, 0x06b0, 0x06cd, 0x06eb, 0x070d, 0x0738, 0x075e, + 0x0791, 0x07ba, 0x07e3, 0x080e, 0x082b, 0x084a, 0x0869, 0x0888, + 0x08a4, 0x08c2, 0x08e1, 0x0903, 0x0920, 0x093d, 0x095c, 0x097d, + 0x099e, 0x09ba, 0x09d8, 0x09f8, 0x0a13, 0x0a30, 0x0a4d, 0x0a67, + 0x0a80, 0x0a9c, 0x0aba, 0x0ad3, 0x0aec, 0x0b08, 0x0b22, 0x0b3d, + 0x0b60, 0x0b85, 0x0ba3, 0x0bc0, 0x0be5, 0x0c04, 0x0c1e, 0x0c39, + // Entry 74C0 - 74FF + 0x0c59, 0x0c74, 0x0c93, 0x0cae, 0x0cd2, 0x0cef, 0x0d1a, 0x0d47, + 0x0d68, 0x0d89, 0x0da6, 0x0dc4, 0x0de4, 0x0e00, 0x0e22, 0x0e40, + 0x0e60, 0x0e80, 0x0ea0, 0x0ec0, 0x0edd, 0x0eff, 0x0f24, 0x0f40, + 0x0f5a, 0x0f75, 0x0f94, 0x0faf, 0x0fce, 0x0fee, 0x03ee, 0x041a, + 0x0444, 0x0471, 0x049d, 0x04b8, 0x04d0, 0x04e1, 0x04f3, 0x050a, + 0x0526, 0x0550, 0x055c, 0x056d, 0x0588, 0x059a, 0x05ad, 0x05be, + 0x05d0, 0x05e7, 0x0603, 0x0632, 0x065d, 0x066a, 0x067c, 0x0694, + 0x06ae, 0x06df, 0x070c, 0x071a, 0x072c, 0x0744, 0x075e, 0x078a, + // Entry 7500 - 753F + 0x079a, 0x07ab, 0x07bd, 0x07cd, 0x07e2, 0x07f8, 0x0813, 0x081f, + 0x082c, 0x083a, 0x0846, 0x0853, 0x0865, 0x087c, 0x0896, 0x08b1, + 0x08ca, 0x08e4, 0x0903, 0x0927, 0x0940, 0x095a, 0x0972, 0x098b, + 0x09a9, 0x09cc, 0x09e7, 0x0a03, 0x0a1d, 0x0a38, 0x0a58, 0x0a76, + 0x0a95, 0x0aad, 0x0acf, 0x0aec, 0x0b0a, 0x0b21, 0x0b42, 0x0b6a, + 0x0b87, 0x0ba4, 0x0bc1, 0x0bdd, 0x0bf6, 0x0c15, 0x0c33, 0x0c56, + 0x0c77, 0x0c96, 0x0cb5, 0x0cd7, 0x00d7, 0x0104, 0x012f, 0x015d, + 0x018a, 0x01b8, 0x01e4, 0x0213, 0x0241, 0x026e, 0x0299, 0x02c7, + // Entry 7540 - 757F + 0x02f4, 0x02f4, 0x0324, 0x0352, 0x0383, 0x03b3, 0x03dd, 0x0405, + 0x0430, 0x045a, 0x048a, 0x04b8, 0x04e9, 0x0519, 0x054f, 0x0583, + 0x05ba, 0x05f0, 0x0621, 0x0650, 0x0682, 0x06b3, 0x06e4, 0x0713, + 0x0745, 0x0776, 0x07a5, 0x07d2, 0x0802, 0x0831, 0x0861, 0x088f, + 0x08c0, 0x08f0, 0x0925, 0x0958, 0x098e, 0x09c3, 0x09de, 0x09f7, + 0x0a13, 0x0a2e, 0x0a45, 0x0a5a, 0x0a72, 0x0a89, 0x0aa3, 0x0abb, + 0x0ad6, 0x0af0, 0x0b10, 0x0b2e, 0x0b4f, 0x0b6f, 0x0b84, 0x0b97, + 0x0bad, 0x0bc2, 0x03c2, 0x03dc, 0x03f4, 0x040f, 0x0429, 0x0444, + // Entry 7580 - 75BF + 0x045f, 0x047a, 0x0495, 0x04b0, 0x04c8, 0x00c8, 0x00ee, 0x0112, + 0x0139, 0x015f, 0x0186, 0x01ad, 0x01d4, 0x01fb, 0x021b, 0x0239, + 0x025a, 0x027a, 0x029b, 0x02bc, 0x02dd, 0x02fe, 0x0325, 0x034a, + 0x0372, 0x0399, 0x03c1, 0x03e9, 0x0411, 0x0439, 0x045f, 0x0483, + 0x04aa, 0x04d0, 0x04f7, 0x051e, 0x0545, 0x056c, 0x0597, 0x05c0, + 0x05ec, 0x0617, 0x0643, 0x066f, 0x069b, 0x06c7, 0x02c7, 0x02e3, + 0x02fd, 0x031a, 0x0336, 0x0365, 0x0392, 0x03c2, 0x03f1, 0x0412, + 0x0431, 0x0453, 0x0474, 0x048f, 0x04b1, 0x04d1, 0x04f2, 0x0515, + // Entry 75C0 - 75FF + 0x0539, 0x0559, 0x057a, 0x059b, 0x05be, 0x05e0, 0x0602, 0x062c, + 0x0657, 0x0682, 0x06ae, 0x06c9, 0x06eb, 0x02eb, 0x02fc, 0x030c, + 0x0321, 0x032a, 0x0337, 0x034d, 0x0357, 0x0363, 0x0374, 0x0380, + 0x0393, 0x03a3, 0x03b4, 0x03bd, 0x03e7, 0x03e7, 0x03fb, 0x0405, + 0x0413, 0x0430, 0x043d, 0x0447, 0x0450, 0x045d, 0x005d, 0x006b, + 0x006b, 0x0071, 0x0077, 0x0084, 0x0094, 0x0099, 0x00af, 0x00b7, + 0x00bd, 0x00ce, 0x00d7, 0x00e1, 0x00e9, 0x00e9, 0x00f6, 0x010a, + 0x011a, 0x0127, 0x012c, 0x0134, 0x0139, 0x014a, 0x015c, 0x016d, + // Entry 7600 - 763F + 0x0179, 0x018d, 0x018d, 0x0196, 0x019d, 0x01a5, 0x01aa, 0x01b0, + 0x01b6, 0x01c4, 0x01cf, 0x01e2, 0x01f3, 0x01f6, 0x0203, 0x020a, + 0x0213, 0x021b, 0x021b, 0x021f, 0x0228, 0x0230, 0x0236, 0x0242, + 0x0247, 0x024b, 0x024e, 0x0253, 0x0256, 0x025e, 0x0267, 0x026b, + 0x0272, 0x0278, 0x0282, 0x0288, 0x028d, 0x028d, 0x0299, 0x0299, + 0x02ba, 0x02db, 0x02fc, 0x031d, 0x033e, 0x035f, 0x0380, 0x03a1, + 0x03c2, 0x03e3, 0x0404, 0x0425, 0x0446, 0x0467, 0x0488, 0x04a9, + 0x04ca, 0x04eb, 0x050c, 0x052d, 0x054e, 0x056f, 0x0590, 0x05b1, + // Entry 7640 - 767F + 0x05d2, 0x05f3, 0x0614, 0x0635, 0x0656, 0x0677, 0x0698, 0x06b9, + 0x06da, 0x06fb, 0x071c, 0x073d, 0x075e, 0x077f, 0x07a0, 0x07c1, + 0x07e2, 0x0803, 0x0824, 0x0845, 0x0866, 0x0887, 0x08a8, 0x08c9, + 0x08ea, 0x090b, 0x092c, 0x094d, 0x096e, 0x098f, 0x09b0, 0x09d1, + 0x09f2, 0x0a13, 0x0a34, 0x0a55, 0x0a76, 0x0a97, 0x0ab8, 0x0ad9, + 0x0afa, 0x0b1b, 0x0b3c, 0x0b5d, 0x0b7e, 0x0b9f, 0x0bc0, 0x0be1, + 0x0c02, 0x0c23, 0x0c44, 0x0c65, 0x0c86, 0x0ca7, 0x0cc8, 0x0ce9, + 0x0d0a, 0x0d2b, 0x0d4c, 0x0d6d, 0x0d8e, 0x0daf, 0x0dd0, 0x0df1, + // Entry 7680 - 76BF + 0x0e12, 0x0e33, 0x0e54, 0x0e75, 0x0e96, 0x0eb7, 0x0ed8, 0x0ef9, + 0x0f1a, 0x0f3b, 0x0f5c, 0x0f7d, 0x0f9e, 0x0fbf, 0x0fe0, 0x1001, + 0x1022, 0x1043, 0x1064, 0x1085, 0x10a6, 0x10c7, 0x10e8, 0x1109, + 0x112a, 0x114b, 0x116c, 0x118d, 0x11ae, 0x11cf, 0x11f0, 0x1211, + 0x1232, 0x1253, 0x1274, 0x1295, 0x12b6, 0x12d7, 0x12f8, 0x1319, + 0x133a, 0x135b, 0x137c, 0x139d, 0x13be, 0x13df, 0x1400, 0x1421, + 0x1442, 0x1463, 0x1484, 0x14a5, 0x14c6, 0x14e7, 0x1508, 0x1529, + 0x154a, 0x156b, 0x158c, 0x15ad, 0x15ce, 0x15ef, 0x1610, 0x1631, + // Entry 76C0 - 76FF + 0x1652, 0x1673, 0x1694, 0x16b5, 0x16d6, 0x16f7, 0x1718, 0x1739, + 0x175a, 0x177b, 0x179c, 0x17bd, 0x17de, 0x17ff, 0x1820, 0x1841, + 0x1862, 0x1883, 0x18a4, 0x18c5, 0x18e6, 0x1907, 0x1928, 0x1949, + 0x196a, 0x198b, 0x19ac, 0x19cd, 0x19ee, 0x1a0f, 0x1a30, 0x1a51, + 0x1a72, 0x1a93, 0x1ab4, 0x1ad5, 0x1af6, 0x1b17, 0x1b38, 0x1b59, + 0x1b7a, 0x1b9b, 0x1bbc, 0x1bdd, 0x1bfe, 0x1c1f, 0x1c40, 0x1c61, + 0x1c82, 0x1ca3, 0x1cc4, 0x1ce5, 0x1d06, 0x1d27, 0x1d48, 0x1d69, + 0x1d8a, 0x1dab, 0x1dcc, 0x1ded, 0x1e0e, 0x1e2f, 0x1e50, 0x1e71, + // Entry 7700 - 773F + 0x1e92, 0x1eb3, 0x1ed4, 0x1ef5, 0x1f16, 0x1f37, 0x1f58, 0x1f79, + 0x1f9a, 0x1fbb, 0x1fdc, 0x1ffd, 0x201e, 0x203f, 0x2060, 0x2081, + 0x20a2, 0x20c3, 0x20e4, 0x2105, 0x2126, 0x2147, 0x2168, 0x2189, + 0x21aa, 0x21cb, 0x21ec, 0x220d, 0x222e, 0x224f, 0x2270, 0x2291, + 0x22b2, 0x22d3, 0x22f4, 0x2315, 0x2336, 0x2357, 0x2378, 0x2399, + 0x23ba, 0x23db, 0x23fc, 0x241d, 0x243e, 0x245f, 0x2480, 0x24a1, + 0x24c2, 0x24e3, 0x2504, 0x2525, 0x2546, 0x2567, 0x2588, 0x25a9, + 0x25ca, 0x25eb, 0x260c, 0x262d, 0x264e, 0x266f, 0x2690, 0x26b1, + // Entry 7740 - 777F + 0x26d2, 0x26f3, 0x2714, 0x2735, 0x2756, 0x2777, 0x2798, 0x27b9, + 0x27da, 0x27fb, 0x281c, 0x283d, 0x285e, 0x287f, 0x28a0, 0x28c1, + 0x28e2, 0x2903, 0x2924, 0x2945, 0x2966, 0x2987, 0x29a8, 0x29c9, + 0x29ea, 0x2a0b, 0x2a2c, 0x2a4d, 0x2a6e, 0x2a8f, 0x2ab0, 0x2ad1, + 0x2af2, 0x2b13, 0x2b34, 0x2b55, 0x2b76, 0x2b97, 0x2bb8, 0x2bd9, + 0x2bfa, 0x2c1b, 0x2c3c, 0x2c5d, 0x2c7e, 0x2c9f, 0x2cc0, 0x2ce1, + 0x2d02, 0x2d23, 0x2d44, 0x2d65, 0x2d86, 0x2da7, 0x2dc8, 0x2de9, + 0x2e0a, 0x2e2b, 0x2e4c, 0x2e6d, 0x2e8e, 0x2eaf, 0x2ed0, 0x2ef1, + // Entry 7780 - 77BF + 0x2f12, 0x2f33, 0x2f54, 0x2f75, 0x2f96, 0x2fb7, 0x2fd8, 0x2ff9, + 0x301a, 0x303b, 0x305c, 0x307d, 0x309e, 0x30bf, 0x30e0, 0x3101, + 0x3122, 0x3143, 0x3164, 0x3185, 0x31a6, 0x31c7, 0x31e8, 0x3209, + 0x322a, 0x324b, 0x326c, 0x328d, 0x32ae, 0x32cf, 0x32f0, 0x3311, + 0x3332, 0x3353, 0x3374, 0x3395, 0x33b6, 0x33d7, 0x33f8, 0x3419, + 0x343a, 0x345b, 0x347c, 0x349d, 0x34be, 0x34df, 0x3500, 0x3521, + 0x3542, 0x3563, 0x3584, 0x35a5, 0x35c6, 0x35e7, 0x3608, 0x3629, + 0x364a, 0x366b, 0x368c, 0x36ad, 0x36ce, 0x36ef, 0x3710, 0x3731, + // Entry 77C0 - 77FF + 0x3752, 0x3773, 0x3794, 0x37b5, 0x37d6, 0x37f7, 0x3818, 0x3839, + 0x385a, 0x387b, 0x389c, 0x38bd, 0x38de, 0x38ff, 0x3920, 0x3941, + 0x3962, 0x3983, 0x39a4, 0x39c5, 0x39e6, 0x3a07, 0x3a28, 0x3a49, + 0x3a6a, 0x3a8b, 0x3aac, 0x3acd, 0x3aee, 0x3b0f, 0x3b30, 0x3b51, + 0x3b72, 0x3b93, 0x3bb4, 0x3bd5, 0x3bf6, 0x3c17, 0x3c38, 0x3c59, + 0x3c7a, 0x3c9b, 0x3cbc, 0x3cdd, 0x3cfe, 0x3d1f, 0x3d40, 0x3d61, + 0x3d82, 0x3da3, 0x3dc4, 0x3de5, 0x3e06, 0x3e27, 0x3e48, 0x3e69, + 0x3e8a, 0x3eab, 0x3ecc, 0x3eed, 0x3f0e, 0x3f2f, 0x3f50, 0x3f71, + // Entry 7800 - 783F + 0x3f92, 0x3fb3, 0x3fd4, 0x3ff5, 0x4016, 0x4037, 0x4058, 0x4079, + 0x409a, 0x40bb, 0x40dc, 0x40fd, 0x411e, 0x413f, 0x4160, 0x4181, + 0x41a2, 0x41c3, 0x41e4, 0x4205, 0x4226, 0x4247, 0x4268, 0x4289, + 0x42aa, 0x42cb, 0x42ec, 0x430d, 0x432e, 0x434f, 0x4370, 0x4391, + 0x43b2, 0x43d3, 0x43f4, 0x4415, 0x4436, 0x4457, 0x4478, 0x4499, + 0x44ba, 0x44db, 0x44fc, 0x451d, 0x453e, 0x455f, 0x4580, 0x45a1, + 0x45c2, 0x45e3, 0x4604, 0x4625, 0x4646, 0x4667, 0x4688, 0x46a9, + 0x46ca, 0x46eb, 0x470c, 0x472d, 0x474e, 0x476f, 0x4790, 0x47b1, + // Entry 7840 - 787F + 0x47d2, 0x47f3, 0x4814, 0x4835, 0x4856, 0x4877, 0x0077, 0x0083, + 0x0083, 0x008c, 0x00a0, 0x00b2, 0x00c1, 0x00d0, 0x00e0, 0x00ed, + 0x00fb, 0x010f, 0x0124, 0x0130, 0x013d, 0x0146, 0x0156, 0x0163, + 0x016e, 0x017c, 0x0189, 0x0196, 0x01a5, 0x01b3, 0x01c1, 0x01ce, + 0x01dd, 0x01ec, 0x01fa, 0x0203, 0x0210, 0x0222, 0x0231, 0x0246, + 0x0257, 0x0268, 0x0282, 0x029c, 0x02b6, 0x02d0, 0x02ea, 0x0304, + 0x031e, 0x0338, 0x0352, 0x036c, 0x0386, 0x03a0, 0x03ba, 0x03d4, + 0x03ee, 0x0408, 0x0422, 0x043c, 0x0456, 0x0470, 0x048a, 0x04a4, + // Entry 7880 - 78BF + 0x04be, 0x04d8, 0x04f2, 0x050c, 0x0523, 0x0536, 0x054e, 0x0563, + 0x056f, 0x057f, 0x0597, 0x05af, 0x05c7, 0x05df, 0x05f7, 0x060f, + 0x0627, 0x063f, 0x0657, 0x066f, 0x0687, 0x069f, 0x06b7, 0x06cf, + 0x06e7, 0x06ff, 0x0717, 0x072f, 0x0747, 0x075f, 0x0777, 0x078f, + 0x07a7, 0x07bf, 0x07d7, 0x07ef, 0x0805, 0x0816, 0x082d, 0x0836, + 0x0840, 0x0040, 0x0055, 0x006a, 0x007f, 0x0094, 0x00a9, 0x00be, + 0x00d3, 0x00e8, 0x00fd, 0x0112, 0x0127, 0x013c, 0x0151, 0x0166, + 0x017b, 0x0190, 0x01a5, 0x01ba, 0x01cf, 0x01e4, 0x01f9, 0x020e, + // Entry 78C0 - 78FF + 0x0223, 0x0238, 0x024d, 0x0262, 0x0277, 0x028c, 0x02a1, 0x02b6, + 0x02cb, 0x02e0, 0x02f5, 0x030a, 0x031f, 0x0334, 0x0349, 0x035e, + 0x0373, 0x0388, 0x039d, 0x03b2, 0x03c7, 0x03dc, 0x03f1, 0x0406, + 0x041b, 0x0430, 0x0445, 0x045a, 0x046f, 0x0484, 0x0499, 0x04ae, + 0x04c3, 0x04d8, 0x04ed, 0x0502, 0x0517, 0x052c, 0x0541, 0x0556, + 0x056b, 0x0580, 0x0595, 0x05aa, 0x05bf, 0x05d4, 0x05e9, 0x05fe, + 0x0613, 0x0628, 0x063d, 0x0652, 0x0667, 0x067c, 0x0691, 0x06a6, + 0x06bb, 0x06d0, 0x06e5, 0x06fa, 0x070f, 0x0725, 0x073b, 0x0751, + // Entry 7900 - 793F + 0x0767, 0x077d, 0x0793, 0x07a9, 0x07bf, 0x07d5, 0x07eb, 0x0801, + 0x0817, 0x082d, 0x0843, 0x0859, 0x086f, 0x0885, 0x089b, 0x08b1, + 0x08c7, 0x08dd, 0x08f3, 0x0909, 0x091f, 0x0935, 0x094b, 0x0961, + 0x0977, 0x098d, 0x09a3, 0x09b9, 0x09cf, 0x09e5, 0x09fb, 0x0a11, + 0x0a27, 0x0a3d, 0x0a53, 0x0a69, 0x0a7f, 0x0a95, 0x0aab, 0x0ac1, + 0x0ad7, 0x0aed, 0x0b03, 0x0b19, 0x0b2f, 0x0b45, 0x0b5b, 0x0b71, + 0x0b87, 0x0b9d, 0x0bb3, 0x0bc9, 0x0bdf, 0x0bf5, 0x0c0b, 0x0c21, + 0x0c37, 0x0c4d, 0x0c63, 0x0c79, 0x0c8f, 0x0ca5, 0x0cbb, 0x0cd1, + // Entry 7940 - 797F + 0x0ce7, 0x0cfd, 0x0d13, 0x0d29, 0x0d3f, 0x0d55, 0x0d6b, 0x0d81, + 0x0d97, 0x0dad, 0x0dc3, 0x0dd9, 0x0def, 0x0e05, 0x0e1b, 0x0e31, + 0x0e47, 0x0e5d, 0x0e73, 0x0e89, 0x0e9f, 0x0eb5, 0x0ecb, 0x0ee1, + 0x0ef7, 0x0f0d, 0x0f23, 0x0f39, 0x0f4f, 0x0f65, 0x0f7b, 0x0f91, + 0x0fa7, 0x0fbd, 0x0fd3, 0x0fe9, 0x0fff, 0x1015, 0x102b, 0x1041, + 0x1057, 0x106d, 0x1083, 0x1099, 0x10af, 0x10c5, 0x10db, 0x10f1, + 0x1107, 0x111d, 0x1133, 0x1149, 0x115f, 0x1175, 0x118b, 0x11a1, + 0x11b7, 0x11cd, 0x11e3, 0x11f9, 0x120f, 0x1225, 0x123b, 0x1251, + // Entry 7980 - 79BF + 0x1267, 0x127d, 0x1293, 0x12a9, 0x12bf, 0x12d5, 0x12eb, 0x1301, + 0x1317, 0x132d, 0x1343, 0x1359, 0x136f, 0x1385, 0x139b, 0x13b1, + 0x13c7, 0x13dd, 0x13f3, 0x1409, 0x141f, 0x1435, 0x144b, 0x1461, + 0x1477, 0x148d, +} // Size: 62284 bytes + +const data string = ("" + // Size: 787597 bytes; the redundant, explicit parens are for https://golang.org/issue/18078 + "<" + + "Private Use>SPACEEXCLAMATION MARKQUOTATION MAR" + + "KNUMBER SIGNDOLLAR SIGNPERCENT SIGNAMPERSANDAPOSTROPHELEFT PARENTHESISRI" + + "GHT PARENTHESISASTERISKPLUS SIGNCOMMAHYPHEN-MINUSFULL STOPSOLIDUSDIGIT Z" + + "ERODIGIT ONEDIGIT TWODIGIT THREEDIGIT FOURDIGIT FIVEDIGIT SIXDIGIT SEVEN" + + "DIGIT EIGHTDIGIT NINECOLONSEMICOLONLESS-THAN SIGNEQUALS SIGNGREATER-THAN" + + " SIGNQUESTION MARKCOMMERCIAL ATLATIN CAPITAL LETTER ALATIN CAPITAL LETTE" + + "R BLATIN CAPITAL LETTER CLATIN CAPITAL LETTER DLATIN CAPITAL LETTER ELAT" + + "IN CAPITAL LETTER FLATIN CAPITAL LETTER GLATIN CAPITAL LETTER HLATIN CAP" + + "ITAL LETTER ILATIN CAPITAL LETTER JLATIN CAPITAL LETTER KLATIN CAPITAL L" + + "ETTER LLATIN CAPITAL LETTER MLATIN CAPITAL LETTER NLATIN CAPITAL LETTER " + + "OLATIN CAPITAL LETTER PLATIN CAPITAL LETTER QLATIN CAPITAL LETTER RLATIN" + + " CAPITAL LETTER SLATIN CAPITAL LETTER TLATIN CAPITAL LETTER ULATIN CAPIT" + + "AL LETTER VLATIN CAPITAL LETTER WLATIN CAPITAL LETTER XLATIN CAPITAL LET" + + "TER YLATIN CAPITAL LETTER ZLEFT SQUARE BRACKETREVERSE SOLIDUSRIGHT SQUAR" + + "E BRACKETCIRCUMFLEX ACCENTLOW LINEGRAVE ACCENTLATIN SMALL LETTER ALATIN " + + "SMALL LETTER BLATIN SMALL LETTER CLATIN SMALL LETTER DLATIN SMALL LETTER" + + " ELATIN SMALL LETTER FLATIN SMALL LETTER GLATIN SMALL LETTER HLATIN SMAL" + + "L LETTER ILATIN SMALL LETTER JLATIN SMALL LETTER KLATIN SMALL LETTER LLA" + + "TIN SMALL LETTER MLATIN SMALL LETTER NLATIN SMALL LETTER OLATIN SMALL LE" + + "TTER PLATIN SMALL LETTER QLATIN SMALL LETTER RLATIN SMALL LETTER SLATIN " + + "SMALL LETTER TLATIN SMALL LETTER ULATIN SMALL LETTER VLATIN SMALL LETTER" + + " WLATIN SMALL LETTER XLATIN SMALL LETTER YLATIN SMALL LETTER ZLEFT CURLY" + + " BRACKETVERTICAL LINERIGHT CURLY BRACKETTILDENO-BREAK SPACEINVERTED EXCL" + + "AMATION MARKCENT SIGNPOUND SIGNCURRENCY SIGNYEN SIGNBROKEN BARSECTION SI" + + "GNDIAERESISCOPYRIGHT SIGNFEMININE ORDINAL INDICATORLEFT-POINTING DOUBLE " + + "ANGLE QUOTATION MARKNOT SIGNSOFT HYPHENREGISTERED SIGNMACRONDEGREE SIGNP" + + "LUS-MINUS SIGNSUPERSCRIPT TWOSUPERSCRIPT THREEACUTE ACCENTMICRO SIGNPILC" + + "ROW SIGNMIDDLE DOTCEDILLASUPERSCRIPT ONEMASCULINE ORDINAL INDICATORRIGHT" + + "-POINTING DOUBLE ANGLE QUOTATION MARKVULGAR FRACTION ONE QUARTERVULGAR F" + + "RACTION ONE HALFVULGAR FRACTION THREE QUARTERSINVERTED QUESTION MARKLATI" + + "N CAPITAL LETTER A WITH GRAVELATIN CAPITAL LETTER A WITH ACUTELATIN CAPI" + + "TAL LETTER A WITH CIRCUMFLEXLATIN CAPITAL LETTER A WITH TILDELATIN CAPIT" + + "AL LETTER A WITH DIAERESISLATIN CAPITAL LETTER A WITH RING ABOVELATIN CA" + + "PITAL LETTER AELATIN CAPITAL LETTER C WITH CEDILLALATIN CAPITAL LETTER E" + + " WITH GRAVELATIN CAPITAL LETTER E WITH ACUTELATIN CAPITAL LETTER E WITH " + + "CIRCUMFLEXLATIN CAPITAL LETTER E WITH DIAERESISLATIN CAPITAL LETTER I WI" + + "TH GRAVELATIN CAPITAL LETTER I WITH ACUTELATIN CAPITAL LETTER I WITH CIR" + + "CUMFLEXLATIN CAPITAL LETTER I WITH DIAERESISLATIN CAPITAL LETTER ETHLATI" + + "N CAPITAL LETTER N WITH TILDELATIN CAPITAL LETTER O WITH GRAVELATIN CAPI" + + "TAL LETTER O WITH ACUTELATIN CAPITAL LETTER O WITH CIRCUMFLEXLATIN CAPIT" + + "AL LETTER O WITH TILDELATIN CAPITAL LETTER O WITH DIAERESISMULTIPLICATIO" + + "N SIGNLATIN CAPITAL LETTER O WITH STROKELATIN CAPITAL LETTER U WITH GRAV" + + "ELATIN CAPITAL LETTER U WITH ACUTELATIN CAPITAL LETTER U WITH CIRCUMFLEX" + + "LATIN CAPITAL LETTER U WITH DIAERESISLATIN CAPITAL LETTER Y WITH ACUTELA" + + "TIN CAPITAL LETTER THORNLATIN SMALL LETTER SHARP SLATIN SMALL LETTER A W" + + "ITH GRAVELATIN SMALL LETTER A WITH ACUTELATIN SMALL LETTER A WITH CIRCUM" + + "FLEXLATIN SMALL LETTER A WITH TILDELATIN SMALL LETTER A WITH DIAERESISLA" + + "TIN SMALL LETTER A WITH RING ABOVELATIN SMALL LETTER AELATIN SMALL LETTE" + + "R C WITH CEDILLALATIN SMALL LETTER E WITH GRAVELATIN SMALL LETTER E WITH" + + " ACUTELATIN SMALL LETTER E WITH CIRCUMFLEXLATIN SMALL LETTER E WITH DIAE" + + "RESISLATIN SMALL LETTER I WITH GRAVELATIN SMALL LETTER I WITH ACUTELATIN" + + " SMALL LETTER I WITH CIRCUMFLEXLATIN SMALL LETTER I WITH DIAERESISLATIN " + + "SMALL LETTER ETHLATIN SMALL LETTER N WITH TILDELATIN SMALL LETTER O WITH" + + " GRAVELATIN SMALL LETTER O WITH ACUTELATIN SMALL LETTER O WITH CIRCUMFLE" + + "XLATIN SMALL LETTER O WITH TILDELATIN SMALL LETTER O WITH DIAERESISDIVIS" + + "ION SIGNLATIN SMALL LETTER O WITH STROKELATIN SMALL LETTER U WITH GRAVEL" + + "ATIN SMALL LETTER U WITH ACUTELATIN SMALL LETTER U WITH CIRCUMFLEXLATIN " + + "SMALL LETTER U WITH DIAERESISLATIN SMALL LETTER Y WITH ACUTELATIN SMALL " + + "LETTER THORNLATIN SMALL LETTER Y WITH DIAERESISLATIN CAPITAL LETTER A WI") + ("" + + "TH MACRONLATIN SMALL LETTER A WITH MACRONLATIN CAPITAL LETTER A WITH BRE" + + "VELATIN SMALL LETTER A WITH BREVELATIN CAPITAL LETTER A WITH OGONEKLATIN" + + " SMALL LETTER A WITH OGONEKLATIN CAPITAL LETTER C WITH ACUTELATIN SMALL " + + "LETTER C WITH ACUTELATIN CAPITAL LETTER C WITH CIRCUMFLEXLATIN SMALL LET" + + "TER C WITH CIRCUMFLEXLATIN CAPITAL LETTER C WITH DOT ABOVELATIN SMALL LE" + + "TTER C WITH DOT ABOVELATIN CAPITAL LETTER C WITH CARONLATIN SMALL LETTER" + + " C WITH CARONLATIN CAPITAL LETTER D WITH CARONLATIN SMALL LETTER D WITH " + + "CARONLATIN CAPITAL LETTER D WITH STROKELATIN SMALL LETTER D WITH STROKEL" + + "ATIN CAPITAL LETTER E WITH MACRONLATIN SMALL LETTER E WITH MACRONLATIN C" + + "APITAL LETTER E WITH BREVELATIN SMALL LETTER E WITH BREVELATIN CAPITAL L" + + "ETTER E WITH DOT ABOVELATIN SMALL LETTER E WITH DOT ABOVELATIN CAPITAL L" + + "ETTER E WITH OGONEKLATIN SMALL LETTER E WITH OGONEKLATIN CAPITAL LETTER " + + "E WITH CARONLATIN SMALL LETTER E WITH CARONLATIN CAPITAL LETTER G WITH C" + + "IRCUMFLEXLATIN SMALL LETTER G WITH CIRCUMFLEXLATIN CAPITAL LETTER G WITH" + + " BREVELATIN SMALL LETTER G WITH BREVELATIN CAPITAL LETTER G WITH DOT ABO" + + "VELATIN SMALL LETTER G WITH DOT ABOVELATIN CAPITAL LETTER G WITH CEDILLA" + + "LATIN SMALL LETTER G WITH CEDILLALATIN CAPITAL LETTER H WITH CIRCUMFLEXL" + + "ATIN SMALL LETTER H WITH CIRCUMFLEXLATIN CAPITAL LETTER H WITH STROKELAT" + + "IN SMALL LETTER H WITH STROKELATIN CAPITAL LETTER I WITH TILDELATIN SMAL" + + "L LETTER I WITH TILDELATIN CAPITAL LETTER I WITH MACRONLATIN SMALL LETTE" + + "R I WITH MACRONLATIN CAPITAL LETTER I WITH BREVELATIN SMALL LETTER I WIT" + + "H BREVELATIN CAPITAL LETTER I WITH OGONEKLATIN SMALL LETTER I WITH OGONE" + + "KLATIN CAPITAL LETTER I WITH DOT ABOVELATIN SMALL LETTER DOTLESS ILATIN " + + "CAPITAL LIGATURE IJLATIN SMALL LIGATURE IJLATIN CAPITAL LETTER J WITH CI" + + "RCUMFLEXLATIN SMALL LETTER J WITH CIRCUMFLEXLATIN CAPITAL LETTER K WITH " + + "CEDILLALATIN SMALL LETTER K WITH CEDILLALATIN SMALL LETTER KRALATIN CAPI" + + "TAL LETTER L WITH ACUTELATIN SMALL LETTER L WITH ACUTELATIN CAPITAL LETT" + + "ER L WITH CEDILLALATIN SMALL LETTER L WITH CEDILLALATIN CAPITAL LETTER L" + + " WITH CARONLATIN SMALL LETTER L WITH CARONLATIN CAPITAL LETTER L WITH MI" + + "DDLE DOTLATIN SMALL LETTER L WITH MIDDLE DOTLATIN CAPITAL LETTER L WITH " + + "STROKELATIN SMALL LETTER L WITH STROKELATIN CAPITAL LETTER N WITH ACUTEL" + + "ATIN SMALL LETTER N WITH ACUTELATIN CAPITAL LETTER N WITH CEDILLALATIN S" + + "MALL LETTER N WITH CEDILLALATIN CAPITAL LETTER N WITH CARONLATIN SMALL L" + + "ETTER N WITH CARONLATIN SMALL LETTER N PRECEDED BY APOSTROPHELATIN CAPIT" + + "AL LETTER ENGLATIN SMALL LETTER ENGLATIN CAPITAL LETTER O WITH MACRONLAT" + + "IN SMALL LETTER O WITH MACRONLATIN CAPITAL LETTER O WITH BREVELATIN SMAL" + + "L LETTER O WITH BREVELATIN CAPITAL LETTER O WITH DOUBLE ACUTELATIN SMALL" + + " LETTER O WITH DOUBLE ACUTELATIN CAPITAL LIGATURE OELATIN SMALL LIGATURE" + + " OELATIN CAPITAL LETTER R WITH ACUTELATIN SMALL LETTER R WITH ACUTELATIN" + + " CAPITAL LETTER R WITH CEDILLALATIN SMALL LETTER R WITH CEDILLALATIN CAP" + + "ITAL LETTER R WITH CARONLATIN SMALL LETTER R WITH CARONLATIN CAPITAL LET" + + "TER S WITH ACUTELATIN SMALL LETTER S WITH ACUTELATIN CAPITAL LETTER S WI" + + "TH CIRCUMFLEXLATIN SMALL LETTER S WITH CIRCUMFLEXLATIN CAPITAL LETTER S " + + "WITH CEDILLALATIN SMALL LETTER S WITH CEDILLALATIN CAPITAL LETTER S WITH" + + " CARONLATIN SMALL LETTER S WITH CARONLATIN CAPITAL LETTER T WITH CEDILLA" + + "LATIN SMALL LETTER T WITH CEDILLALATIN CAPITAL LETTER T WITH CARONLATIN " + + "SMALL LETTER T WITH CARONLATIN CAPITAL LETTER T WITH STROKELATIN SMALL L" + + "ETTER T WITH STROKELATIN CAPITAL LETTER U WITH TILDELATIN SMALL LETTER U" + + " WITH TILDELATIN CAPITAL LETTER U WITH MACRONLATIN SMALL LETTER U WITH M" + + "ACRONLATIN CAPITAL LETTER U WITH BREVELATIN SMALL LETTER U WITH BREVELAT" + + "IN CAPITAL LETTER U WITH RING ABOVELATIN SMALL LETTER U WITH RING ABOVEL" + + "ATIN CAPITAL LETTER U WITH DOUBLE ACUTELATIN SMALL LETTER U WITH DOUBLE " + + "ACUTELATIN CAPITAL LETTER U WITH OGONEKLATIN SMALL LETTER U WITH OGONEKL" + + "ATIN CAPITAL LETTER W WITH CIRCUMFLEXLATIN SMALL LETTER W WITH CIRCUMFLE" + + "XLATIN CAPITAL LETTER Y WITH CIRCUMFLEXLATIN SMALL LETTER Y WITH CIRCUMF" + + "LEXLATIN CAPITAL LETTER Y WITH DIAERESISLATIN CAPITAL LETTER Z WITH ACUT" + + "ELATIN SMALL LETTER Z WITH ACUTELATIN CAPITAL LETTER Z WITH DOT ABOVELAT" + + "IN SMALL LETTER Z WITH DOT ABOVELATIN CAPITAL LETTER Z WITH CARONLATIN S" + + "MALL LETTER Z WITH CARONLATIN SMALL LETTER LONG SLATIN SMALL LETTER B WI" + + "TH STROKELATIN CAPITAL LETTER B WITH HOOKLATIN CAPITAL LETTER B WITH TOP" + + "BARLATIN SMALL LETTER B WITH TOPBARLATIN CAPITAL LETTER TONE SIXLATIN SM" + + "ALL LETTER TONE SIXLATIN CAPITAL LETTER OPEN OLATIN CAPITAL LETTER C WIT" + + "H HOOKLATIN SMALL LETTER C WITH HOOKLATIN CAPITAL LETTER AFRICAN DLATIN " + + "CAPITAL LETTER D WITH HOOKLATIN CAPITAL LETTER D WITH TOPBARLATIN SMALL ") + ("" + + "LETTER D WITH TOPBARLATIN SMALL LETTER TURNED DELTALATIN CAPITAL LETTER " + + "REVERSED ELATIN CAPITAL LETTER SCHWALATIN CAPITAL LETTER OPEN ELATIN CAP" + + "ITAL LETTER F WITH HOOKLATIN SMALL LETTER F WITH HOOKLATIN CAPITAL LETTE" + + "R G WITH HOOKLATIN CAPITAL LETTER GAMMALATIN SMALL LETTER HVLATIN CAPITA" + + "L LETTER IOTALATIN CAPITAL LETTER I WITH STROKELATIN CAPITAL LETTER K WI" + + "TH HOOKLATIN SMALL LETTER K WITH HOOKLATIN SMALL LETTER L WITH BARLATIN " + + "SMALL LETTER LAMBDA WITH STROKELATIN CAPITAL LETTER TURNED MLATIN CAPITA" + + "L LETTER N WITH LEFT HOOKLATIN SMALL LETTER N WITH LONG RIGHT LEGLATIN C" + + "APITAL LETTER O WITH MIDDLE TILDELATIN CAPITAL LETTER O WITH HORNLATIN S" + + "MALL LETTER O WITH HORNLATIN CAPITAL LETTER OILATIN SMALL LETTER OILATIN" + + " CAPITAL LETTER P WITH HOOKLATIN SMALL LETTER P WITH HOOKLATIN LETTER YR" + + "LATIN CAPITAL LETTER TONE TWOLATIN SMALL LETTER TONE TWOLATIN CAPITAL LE" + + "TTER ESHLATIN LETTER REVERSED ESH LOOPLATIN SMALL LETTER T WITH PALATAL " + + "HOOKLATIN CAPITAL LETTER T WITH HOOKLATIN SMALL LETTER T WITH HOOKLATIN " + + "CAPITAL LETTER T WITH RETROFLEX HOOKLATIN CAPITAL LETTER U WITH HORNLATI" + + "N SMALL LETTER U WITH HORNLATIN CAPITAL LETTER UPSILONLATIN CAPITAL LETT" + + "ER V WITH HOOKLATIN CAPITAL LETTER Y WITH HOOKLATIN SMALL LETTER Y WITH " + + "HOOKLATIN CAPITAL LETTER Z WITH STROKELATIN SMALL LETTER Z WITH STROKELA" + + "TIN CAPITAL LETTER EZHLATIN CAPITAL LETTER EZH REVERSEDLATIN SMALL LETTE" + + "R EZH REVERSEDLATIN SMALL LETTER EZH WITH TAILLATIN LETTER TWO WITH STRO" + + "KELATIN CAPITAL LETTER TONE FIVELATIN SMALL LETTER TONE FIVELATIN LETTER" + + " INVERTED GLOTTAL STOP WITH STROKELATIN LETTER WYNNLATIN LETTER DENTAL C" + + "LICKLATIN LETTER LATERAL CLICKLATIN LETTER ALVEOLAR CLICKLATIN LETTER RE" + + "TROFLEX CLICKLATIN CAPITAL LETTER DZ WITH CARONLATIN CAPITAL LETTER D WI" + + "TH SMALL LETTER Z WITH CARONLATIN SMALL LETTER DZ WITH CARONLATIN CAPITA" + + "L LETTER LJLATIN CAPITAL LETTER L WITH SMALL LETTER JLATIN SMALL LETTER " + + "LJLATIN CAPITAL LETTER NJLATIN CAPITAL LETTER N WITH SMALL LETTER JLATIN" + + " SMALL LETTER NJLATIN CAPITAL LETTER A WITH CARONLATIN SMALL LETTER A WI" + + "TH CARONLATIN CAPITAL LETTER I WITH CARONLATIN SMALL LETTER I WITH CARON" + + "LATIN CAPITAL LETTER O WITH CARONLATIN SMALL LETTER O WITH CARONLATIN CA" + + "PITAL LETTER U WITH CARONLATIN SMALL LETTER U WITH CARONLATIN CAPITAL LE" + + "TTER U WITH DIAERESIS AND MACRONLATIN SMALL LETTER U WITH DIAERESIS AND " + + "MACRONLATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTELATIN SMALL LETTER " + + "U WITH DIAERESIS AND ACUTELATIN CAPITAL LETTER U WITH DIAERESIS AND CARO" + + "NLATIN SMALL LETTER U WITH DIAERESIS AND CARONLATIN CAPITAL LETTER U WIT" + + "H DIAERESIS AND GRAVELATIN SMALL LETTER U WITH DIAERESIS AND GRAVELATIN " + + "SMALL LETTER TURNED ELATIN CAPITAL LETTER A WITH DIAERESIS AND MACRONLAT" + + "IN SMALL LETTER A WITH DIAERESIS AND MACRONLATIN CAPITAL LETTER A WITH D" + + "OT ABOVE AND MACRONLATIN SMALL LETTER A WITH DOT ABOVE AND MACRONLATIN C" + + "APITAL LETTER AE WITH MACRONLATIN SMALL LETTER AE WITH MACRONLATIN CAPIT" + + "AL LETTER G WITH STROKELATIN SMALL LETTER G WITH STROKELATIN CAPITAL LET" + + "TER G WITH CARONLATIN SMALL LETTER G WITH CARONLATIN CAPITAL LETTER K WI" + + "TH CARONLATIN SMALL LETTER K WITH CARONLATIN CAPITAL LETTER O WITH OGONE" + + "KLATIN SMALL LETTER O WITH OGONEKLATIN CAPITAL LETTER O WITH OGONEK AND " + + "MACRONLATIN SMALL LETTER O WITH OGONEK AND MACRONLATIN CAPITAL LETTER EZ" + + "H WITH CARONLATIN SMALL LETTER EZH WITH CARONLATIN SMALL LETTER J WITH C" + + "ARONLATIN CAPITAL LETTER DZLATIN CAPITAL LETTER D WITH SMALL LETTER ZLAT" + + "IN SMALL LETTER DZLATIN CAPITAL LETTER G WITH ACUTELATIN SMALL LETTER G " + + "WITH ACUTELATIN CAPITAL LETTER HWAIRLATIN CAPITAL LETTER WYNNLATIN CAPIT" + + "AL LETTER N WITH GRAVELATIN SMALL LETTER N WITH GRAVELATIN CAPITAL LETTE" + + "R A WITH RING ABOVE AND ACUTELATIN SMALL LETTER A WITH RING ABOVE AND AC" + + "UTELATIN CAPITAL LETTER AE WITH ACUTELATIN SMALL LETTER AE WITH ACUTELAT" + + "IN CAPITAL LETTER O WITH STROKE AND ACUTELATIN SMALL LETTER O WITH STROK" + + "E AND ACUTELATIN CAPITAL LETTER A WITH DOUBLE GRAVELATIN SMALL LETTER A " + + "WITH DOUBLE GRAVELATIN CAPITAL LETTER A WITH INVERTED BREVELATIN SMALL L" + + "ETTER A WITH INVERTED BREVELATIN CAPITAL LETTER E WITH DOUBLE GRAVELATIN" + + " SMALL LETTER E WITH DOUBLE GRAVELATIN CAPITAL LETTER E WITH INVERTED BR" + + "EVELATIN SMALL LETTER E WITH INVERTED BREVELATIN CAPITAL LETTER I WITH D" + + "OUBLE GRAVELATIN SMALL LETTER I WITH DOUBLE GRAVELATIN CAPITAL LETTER I " + + "WITH INVERTED BREVELATIN SMALL LETTER I WITH INVERTED BREVELATIN CAPITAL" + + " LETTER O WITH DOUBLE GRAVELATIN SMALL LETTER O WITH DOUBLE GRAVELATIN C" + + "APITAL LETTER O WITH INVERTED BREVELATIN SMALL LETTER O WITH INVERTED BR" + + "EVELATIN CAPITAL LETTER R WITH DOUBLE GRAVELATIN SMALL LETTER R WITH DOU" + + "BLE GRAVELATIN CAPITAL LETTER R WITH INVERTED BREVELATIN SMALL LETTER R ") + ("" + + "WITH INVERTED BREVELATIN CAPITAL LETTER U WITH DOUBLE GRAVELATIN SMALL L" + + "ETTER U WITH DOUBLE GRAVELATIN CAPITAL LETTER U WITH INVERTED BREVELATIN" + + " SMALL LETTER U WITH INVERTED BREVELATIN CAPITAL LETTER S WITH COMMA BEL" + + "OWLATIN SMALL LETTER S WITH COMMA BELOWLATIN CAPITAL LETTER T WITH COMMA" + + " BELOWLATIN SMALL LETTER T WITH COMMA BELOWLATIN CAPITAL LETTER YOGHLATI" + + "N SMALL LETTER YOGHLATIN CAPITAL LETTER H WITH CARONLATIN SMALL LETTER H" + + " WITH CARONLATIN CAPITAL LETTER N WITH LONG RIGHT LEGLATIN SMALL LETTER " + + "D WITH CURLLATIN CAPITAL LETTER OULATIN SMALL LETTER OULATIN CAPITAL LET" + + "TER Z WITH HOOKLATIN SMALL LETTER Z WITH HOOKLATIN CAPITAL LETTER A WITH" + + " DOT ABOVELATIN SMALL LETTER A WITH DOT ABOVELATIN CAPITAL LETTER E WITH" + + " CEDILLALATIN SMALL LETTER E WITH CEDILLALATIN CAPITAL LETTER O WITH DIA" + + "ERESIS AND MACRONLATIN SMALL LETTER O WITH DIAERESIS AND MACRONLATIN CAP" + + "ITAL LETTER O WITH TILDE AND MACRONLATIN SMALL LETTER O WITH TILDE AND M" + + "ACRONLATIN CAPITAL LETTER O WITH DOT ABOVELATIN SMALL LETTER O WITH DOT " + + "ABOVELATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRONLATIN SMALL LETTER " + + "O WITH DOT ABOVE AND MACRONLATIN CAPITAL LETTER Y WITH MACRONLATIN SMALL" + + " LETTER Y WITH MACRONLATIN SMALL LETTER L WITH CURLLATIN SMALL LETTER N " + + "WITH CURLLATIN SMALL LETTER T WITH CURLLATIN SMALL LETTER DOTLESS JLATIN" + + " SMALL LETTER DB DIGRAPHLATIN SMALL LETTER QP DIGRAPHLATIN CAPITAL LETTE" + + "R A WITH STROKELATIN CAPITAL LETTER C WITH STROKELATIN SMALL LETTER C WI" + + "TH STROKELATIN CAPITAL LETTER L WITH BARLATIN CAPITAL LETTER T WITH DIAG" + + "ONAL STROKELATIN SMALL LETTER S WITH SWASH TAILLATIN SMALL LETTER Z WITH" + + " SWASH TAILLATIN CAPITAL LETTER GLOTTAL STOPLATIN SMALL LETTER GLOTTAL S" + + "TOPLATIN CAPITAL LETTER B WITH STROKELATIN CAPITAL LETTER U BARLATIN CAP" + + "ITAL LETTER TURNED VLATIN CAPITAL LETTER E WITH STROKELATIN SMALL LETTER" + + " E WITH STROKELATIN CAPITAL LETTER J WITH STROKELATIN SMALL LETTER J WIT" + + "H STROKELATIN CAPITAL LETTER SMALL Q WITH HOOK TAILLATIN SMALL LETTER Q " + + "WITH HOOK TAILLATIN CAPITAL LETTER R WITH STROKELATIN SMALL LETTER R WIT" + + "H STROKELATIN CAPITAL LETTER Y WITH STROKELATIN SMALL LETTER Y WITH STRO" + + "KELATIN SMALL LETTER TURNED ALATIN SMALL LETTER ALPHALATIN SMALL LETTER " + + "TURNED ALPHALATIN SMALL LETTER B WITH HOOKLATIN SMALL LETTER OPEN OLATIN" + + " SMALL LETTER C WITH CURLLATIN SMALL LETTER D WITH TAILLATIN SMALL LETTE" + + "R D WITH HOOKLATIN SMALL LETTER REVERSED ELATIN SMALL LETTER SCHWALATIN " + + "SMALL LETTER SCHWA WITH HOOKLATIN SMALL LETTER OPEN ELATIN SMALL LETTER " + + "REVERSED OPEN ELATIN SMALL LETTER REVERSED OPEN E WITH HOOKLATIN SMALL L" + + "ETTER CLOSED REVERSED OPEN ELATIN SMALL LETTER DOTLESS J WITH STROKELATI" + + "N SMALL LETTER G WITH HOOKLATIN SMALL LETTER SCRIPT GLATIN LETTER SMALL " + + "CAPITAL GLATIN SMALL LETTER GAMMALATIN SMALL LETTER RAMS HORNLATIN SMALL" + + " LETTER TURNED HLATIN SMALL LETTER H WITH HOOKLATIN SMALL LETTER HENG WI" + + "TH HOOKLATIN SMALL LETTER I WITH STROKELATIN SMALL LETTER IOTALATIN LETT" + + "ER SMALL CAPITAL ILATIN SMALL LETTER L WITH MIDDLE TILDELATIN SMALL LETT" + + "ER L WITH BELTLATIN SMALL LETTER L WITH RETROFLEX HOOKLATIN SMALL LETTER" + + " LEZHLATIN SMALL LETTER TURNED MLATIN SMALL LETTER TURNED M WITH LONG LE" + + "GLATIN SMALL LETTER M WITH HOOKLATIN SMALL LETTER N WITH LEFT HOOKLATIN " + + "SMALL LETTER N WITH RETROFLEX HOOKLATIN LETTER SMALL CAPITAL NLATIN SMAL" + + "L LETTER BARRED OLATIN LETTER SMALL CAPITAL OELATIN SMALL LETTER CLOSED " + + "OMEGALATIN SMALL LETTER PHILATIN SMALL LETTER TURNED RLATIN SMALL LETTER" + + " TURNED R WITH LONG LEGLATIN SMALL LETTER TURNED R WITH HOOKLATIN SMALL " + + "LETTER R WITH LONG LEGLATIN SMALL LETTER R WITH TAILLATIN SMALL LETTER R" + + " WITH FISHHOOKLATIN SMALL LETTER REVERSED R WITH FISHHOOKLATIN LETTER SM" + + "ALL CAPITAL RLATIN LETTER SMALL CAPITAL INVERTED RLATIN SMALL LETTER S W" + + "ITH HOOKLATIN SMALL LETTER ESHLATIN SMALL LETTER DOTLESS J WITH STROKE A" + + "ND HOOKLATIN SMALL LETTER SQUAT REVERSED ESHLATIN SMALL LETTER ESH WITH " + + "CURLLATIN SMALL LETTER TURNED TLATIN SMALL LETTER T WITH RETROFLEX HOOKL" + + "ATIN SMALL LETTER U BARLATIN SMALL LETTER UPSILONLATIN SMALL LETTER V WI" + + "TH HOOKLATIN SMALL LETTER TURNED VLATIN SMALL LETTER TURNED WLATIN SMALL" + + " LETTER TURNED YLATIN LETTER SMALL CAPITAL YLATIN SMALL LETTER Z WITH RE" + + "TROFLEX HOOKLATIN SMALL LETTER Z WITH CURLLATIN SMALL LETTER EZHLATIN SM" + + "ALL LETTER EZH WITH CURLLATIN LETTER GLOTTAL STOPLATIN LETTER PHARYNGEAL" + + " VOICED FRICATIVELATIN LETTER INVERTED GLOTTAL STOPLATIN LETTER STRETCHE" + + "D CLATIN LETTER BILABIAL CLICKLATIN LETTER SMALL CAPITAL BLATIN SMALL LE" + + "TTER CLOSED OPEN ELATIN LETTER SMALL CAPITAL G WITH HOOKLATIN LETTER SMA" + + "LL CAPITAL HLATIN SMALL LETTER J WITH CROSSED-TAILLATIN SMALL LETTER TUR" + + "NED KLATIN LETTER SMALL CAPITAL LLATIN SMALL LETTER Q WITH HOOKLATIN LET") + ("" + + "TER GLOTTAL STOP WITH STROKELATIN LETTER REVERSED GLOTTAL STOP WITH STRO" + + "KELATIN SMALL LETTER DZ DIGRAPHLATIN SMALL LETTER DEZH DIGRAPHLATIN SMAL" + + "L LETTER DZ DIGRAPH WITH CURLLATIN SMALL LETTER TS DIGRAPHLATIN SMALL LE" + + "TTER TESH DIGRAPHLATIN SMALL LETTER TC DIGRAPH WITH CURLLATIN SMALL LETT" + + "ER FENG DIGRAPHLATIN SMALL LETTER LS DIGRAPHLATIN SMALL LETTER LZ DIGRAP" + + "HLATIN LETTER BILABIAL PERCUSSIVELATIN LETTER BIDENTAL PERCUSSIVELATIN S" + + "MALL LETTER TURNED H WITH FISHHOOKLATIN SMALL LETTER TURNED H WITH FISHH" + + "OOK AND TAILMODIFIER LETTER SMALL HMODIFIER LETTER SMALL H WITH HOOKMODI" + + "FIER LETTER SMALL JMODIFIER LETTER SMALL RMODIFIER LETTER SMALL TURNED R" + + "MODIFIER LETTER SMALL TURNED R WITH HOOKMODIFIER LETTER SMALL CAPITAL IN" + + "VERTED RMODIFIER LETTER SMALL WMODIFIER LETTER SMALL YMODIFIER LETTER PR" + + "IMEMODIFIER LETTER DOUBLE PRIMEMODIFIER LETTER TURNED COMMAMODIFIER LETT" + + "ER APOSTROPHEMODIFIER LETTER REVERSED COMMAMODIFIER LETTER RIGHT HALF RI" + + "NGMODIFIER LETTER LEFT HALF RINGMODIFIER LETTER GLOTTAL STOPMODIFIER LET" + + "TER REVERSED GLOTTAL STOPMODIFIER LETTER LEFT ARROWHEADMODIFIER LETTER R" + + "IGHT ARROWHEADMODIFIER LETTER UP ARROWHEADMODIFIER LETTER DOWN ARROWHEAD" + + "MODIFIER LETTER CIRCUMFLEX ACCENTCARONMODIFIER LETTER VERTICAL LINEMODIF" + + "IER LETTER MACRONMODIFIER LETTER ACUTE ACCENTMODIFIER LETTER GRAVE ACCEN" + + "TMODIFIER LETTER LOW VERTICAL LINEMODIFIER LETTER LOW MACRONMODIFIER LET" + + "TER LOW GRAVE ACCENTMODIFIER LETTER LOW ACUTE ACCENTMODIFIER LETTER TRIA" + + "NGULAR COLONMODIFIER LETTER HALF TRIANGULAR COLONMODIFIER LETTER CENTRED" + + " RIGHT HALF RINGMODIFIER LETTER CENTRED LEFT HALF RINGMODIFIER LETTER UP" + + " TACKMODIFIER LETTER DOWN TACKMODIFIER LETTER PLUS SIGNMODIFIER LETTER M" + + "INUS SIGNBREVEDOT ABOVERING ABOVEOGONEKSMALL TILDEDOUBLE ACUTE ACCENTMOD" + + "IFIER LETTER RHOTIC HOOKMODIFIER LETTER CROSS ACCENTMODIFIER LETTER SMAL" + + "L GAMMAMODIFIER LETTER SMALL LMODIFIER LETTER SMALL SMODIFIER LETTER SMA" + + "LL XMODIFIER LETTER SMALL REVERSED GLOTTAL STOPMODIFIER LETTER EXTRA-HIG" + + "H TONE BARMODIFIER LETTER HIGH TONE BARMODIFIER LETTER MID TONE BARMODIF" + + "IER LETTER LOW TONE BARMODIFIER LETTER EXTRA-LOW TONE BARMODIFIER LETTER" + + " YIN DEPARTING TONE MARKMODIFIER LETTER YANG DEPARTING TONE MARKMODIFIER" + + " LETTER VOICINGMODIFIER LETTER UNASPIRATEDMODIFIER LETTER DOUBLE APOSTRO" + + "PHEMODIFIER LETTER LOW DOWN ARROWHEADMODIFIER LETTER LOW UP ARROWHEADMOD" + + "IFIER LETTER LOW LEFT ARROWHEADMODIFIER LETTER LOW RIGHT ARROWHEADMODIFI" + + "ER LETTER LOW RINGMODIFIER LETTER MIDDLE GRAVE ACCENTMODIFIER LETTER MID" + + "DLE DOUBLE GRAVE ACCENTMODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENTMODIFIE" + + "R LETTER LOW TILDEMODIFIER LETTER RAISED COLONMODIFIER LETTER BEGIN HIGH" + + " TONEMODIFIER LETTER END HIGH TONEMODIFIER LETTER BEGIN LOW TONEMODIFIER" + + " LETTER END LOW TONEMODIFIER LETTER SHELFMODIFIER LETTER OPEN SHELFMODIF" + + "IER LETTER LOW LEFT ARROWCOMBINING GRAVE ACCENTCOMBINING ACUTE ACCENTCOM" + + "BINING CIRCUMFLEX ACCENTCOMBINING TILDECOMBINING MACRONCOMBINING OVERLIN" + + "ECOMBINING BREVECOMBINING DOT ABOVECOMBINING DIAERESISCOMBINING HOOK ABO" + + "VECOMBINING RING ABOVECOMBINING DOUBLE ACUTE ACCENTCOMBINING CARONCOMBIN" + + "ING VERTICAL LINE ABOVECOMBINING DOUBLE VERTICAL LINE ABOVECOMBINING DOU" + + "BLE GRAVE ACCENTCOMBINING CANDRABINDUCOMBINING INVERTED BREVECOMBINING T" + + "URNED COMMA ABOVECOMBINING COMMA ABOVECOMBINING REVERSED COMMA ABOVECOMB" + + "INING COMMA ABOVE RIGHTCOMBINING GRAVE ACCENT BELOWCOMBINING ACUTE ACCEN" + + "T BELOWCOMBINING LEFT TACK BELOWCOMBINING RIGHT TACK BELOWCOMBINING LEFT" + + " ANGLE ABOVECOMBINING HORNCOMBINING LEFT HALF RING BELOWCOMBINING UP TAC" + + "K BELOWCOMBINING DOWN TACK BELOWCOMBINING PLUS SIGN BELOWCOMBINING MINUS" + + " SIGN BELOWCOMBINING PALATALIZED HOOK BELOWCOMBINING RETROFLEX HOOK BELO" + + "WCOMBINING DOT BELOWCOMBINING DIAERESIS BELOWCOMBINING RING BELOWCOMBINI" + + "NG COMMA BELOWCOMBINING CEDILLACOMBINING OGONEKCOMBINING VERTICAL LINE B" + + "ELOWCOMBINING BRIDGE BELOWCOMBINING INVERTED DOUBLE ARCH BELOWCOMBINING " + + "CARON BELOWCOMBINING CIRCUMFLEX ACCENT BELOWCOMBINING BREVE BELOWCOMBINI" + + "NG INVERTED BREVE BELOWCOMBINING TILDE BELOWCOMBINING MACRON BELOWCOMBIN" + + "ING LOW LINECOMBINING DOUBLE LOW LINECOMBINING TILDE OVERLAYCOMBINING SH" + + "ORT STROKE OVERLAYCOMBINING LONG STROKE OVERLAYCOMBINING SHORT SOLIDUS O" + + "VERLAYCOMBINING LONG SOLIDUS OVERLAYCOMBINING RIGHT HALF RING BELOWCOMBI" + + "NING INVERTED BRIDGE BELOWCOMBINING SQUARE BELOWCOMBINING SEAGULL BELOWC" + + "OMBINING X ABOVECOMBINING VERTICAL TILDECOMBINING DOUBLE OVERLINECOMBINI" + + "NG GRAVE TONE MARKCOMBINING ACUTE TONE MARKCOMBINING GREEK PERISPOMENICO" + + "MBINING GREEK KORONISCOMBINING GREEK DIALYTIKA TONOSCOMBINING GREEK YPOG" + + "EGRAMMENICOMBINING BRIDGE ABOVECOMBINING EQUALS SIGN BELOWCOMBINING DOUB" + + "LE VERTICAL LINE BELOWCOMBINING LEFT ANGLE BELOWCOMBINING NOT TILDE ABOV") + ("" + + "ECOMBINING HOMOTHETIC ABOVECOMBINING ALMOST EQUAL TO ABOVECOMBINING LEFT" + + " RIGHT ARROW BELOWCOMBINING UPWARDS ARROW BELOWCOMBINING GRAPHEME JOINER" + + "COMBINING RIGHT ARROWHEAD ABOVECOMBINING LEFT HALF RING ABOVECOMBINING F" + + "ERMATACOMBINING X BELOWCOMBINING LEFT ARROWHEAD BELOWCOMBINING RIGHT ARR" + + "OWHEAD BELOWCOMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOWCOMBINING RI" + + "GHT HALF RING ABOVECOMBINING DOT ABOVE RIGHTCOMBINING ASTERISK BELOWCOMB" + + "INING DOUBLE RING BELOWCOMBINING ZIGZAG ABOVECOMBINING DOUBLE BREVE BELO" + + "WCOMBINING DOUBLE BREVECOMBINING DOUBLE MACRONCOMBINING DOUBLE MACRON BE" + + "LOWCOMBINING DOUBLE TILDECOMBINING DOUBLE INVERTED BREVECOMBINING DOUBLE" + + " RIGHTWARDS ARROW BELOWCOMBINING LATIN SMALL LETTER ACOMBINING LATIN SMA" + + "LL LETTER ECOMBINING LATIN SMALL LETTER ICOMBINING LATIN SMALL LETTER OC" + + "OMBINING LATIN SMALL LETTER UCOMBINING LATIN SMALL LETTER CCOMBINING LAT" + + "IN SMALL LETTER DCOMBINING LATIN SMALL LETTER HCOMBINING LATIN SMALL LET" + + "TER MCOMBINING LATIN SMALL LETTER RCOMBINING LATIN SMALL LETTER TCOMBINI" + + "NG LATIN SMALL LETTER VCOMBINING LATIN SMALL LETTER XGREEK CAPITAL LETTE" + + "R HETAGREEK SMALL LETTER HETAGREEK CAPITAL LETTER ARCHAIC SAMPIGREEK SMA" + + "LL LETTER ARCHAIC SAMPIGREEK NUMERAL SIGNGREEK LOWER NUMERAL SIGNGREEK C" + + "APITAL LETTER PAMPHYLIAN DIGAMMAGREEK SMALL LETTER PAMPHYLIAN DIGAMMAGRE" + + "EK YPOGEGRAMMENIGREEK SMALL REVERSED LUNATE SIGMA SYMBOLGREEK SMALL DOTT" + + "ED LUNATE SIGMA SYMBOLGREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOLGRE" + + "EK QUESTION MARKGREEK CAPITAL LETTER YOTGREEK TONOSGREEK DIALYTIKA TONOS" + + "GREEK CAPITAL LETTER ALPHA WITH TONOSGREEK ANO TELEIAGREEK CAPITAL LETTE" + + "R EPSILON WITH TONOSGREEK CAPITAL LETTER ETA WITH TONOSGREEK CAPITAL LET" + + "TER IOTA WITH TONOSGREEK CAPITAL LETTER OMICRON WITH TONOSGREEK CAPITAL " + + "LETTER UPSILON WITH TONOSGREEK CAPITAL LETTER OMEGA WITH TONOSGREEK SMAL" + + "L LETTER IOTA WITH DIALYTIKA AND TONOSGREEK CAPITAL LETTER ALPHAGREEK CA" + + "PITAL LETTER BETAGREEK CAPITAL LETTER GAMMAGREEK CAPITAL LETTER DELTAGRE" + + "EK CAPITAL LETTER EPSILONGREEK CAPITAL LETTER ZETAGREEK CAPITAL LETTER E" + + "TAGREEK CAPITAL LETTER THETAGREEK CAPITAL LETTER IOTAGREEK CAPITAL LETTE" + + "R KAPPAGREEK CAPITAL LETTER LAMDAGREEK CAPITAL LETTER MUGREEK CAPITAL LE" + + "TTER NUGREEK CAPITAL LETTER XIGREEK CAPITAL LETTER OMICRONGREEK CAPITAL " + + "LETTER PIGREEK CAPITAL LETTER RHOGREEK CAPITAL LETTER SIGMAGREEK CAPITAL" + + " LETTER TAUGREEK CAPITAL LETTER UPSILONGREEK CAPITAL LETTER PHIGREEK CAP" + + "ITAL LETTER CHIGREEK CAPITAL LETTER PSIGREEK CAPITAL LETTER OMEGAGREEK C" + + "APITAL LETTER IOTA WITH DIALYTIKAGREEK CAPITAL LETTER UPSILON WITH DIALY" + + "TIKAGREEK SMALL LETTER ALPHA WITH TONOSGREEK SMALL LETTER EPSILON WITH T" + + "ONOSGREEK SMALL LETTER ETA WITH TONOSGREEK SMALL LETTER IOTA WITH TONOSG" + + "REEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOSGREEK SMALL LETTER ALP" + + "HAGREEK SMALL LETTER BETAGREEK SMALL LETTER GAMMAGREEK SMALL LETTER DELT" + + "AGREEK SMALL LETTER EPSILONGREEK SMALL LETTER ZETAGREEK SMALL LETTER ETA" + + "GREEK SMALL LETTER THETAGREEK SMALL LETTER IOTAGREEK SMALL LETTER KAPPAG" + + "REEK SMALL LETTER LAMDAGREEK SMALL LETTER MUGREEK SMALL LETTER NUGREEK S" + + "MALL LETTER XIGREEK SMALL LETTER OMICRONGREEK SMALL LETTER PIGREEK SMALL" + + " LETTER RHOGREEK SMALL LETTER FINAL SIGMAGREEK SMALL LETTER SIGMAGREEK S" + + "MALL LETTER TAUGREEK SMALL LETTER UPSILONGREEK SMALL LETTER PHIGREEK SMA" + + "LL LETTER CHIGREEK SMALL LETTER PSIGREEK SMALL LETTER OMEGAGREEK SMALL L" + + "ETTER IOTA WITH DIALYTIKAGREEK SMALL LETTER UPSILON WITH DIALYTIKAGREEK " + + "SMALL LETTER OMICRON WITH TONOSGREEK SMALL LETTER UPSILON WITH TONOSGREE" + + "K SMALL LETTER OMEGA WITH TONOSGREEK CAPITAL KAI SYMBOLGREEK BETA SYMBOL" + + "GREEK THETA SYMBOLGREEK UPSILON WITH HOOK SYMBOLGREEK UPSILON WITH ACUTE" + + " AND HOOK SYMBOLGREEK UPSILON WITH DIAERESIS AND HOOK SYMBOLGREEK PHI SY" + + "MBOLGREEK PI SYMBOLGREEK KAI SYMBOLGREEK LETTER ARCHAIC KOPPAGREEK SMALL" + + " LETTER ARCHAIC KOPPAGREEK LETTER STIGMAGREEK SMALL LETTER STIGMAGREEK L" + + "ETTER DIGAMMAGREEK SMALL LETTER DIGAMMAGREEK LETTER KOPPAGREEK SMALL LET" + + "TER KOPPAGREEK LETTER SAMPIGREEK SMALL LETTER SAMPICOPTIC CAPITAL LETTER" + + " SHEICOPTIC SMALL LETTER SHEICOPTIC CAPITAL LETTER FEICOPTIC SMALL LETTE" + + "R FEICOPTIC CAPITAL LETTER KHEICOPTIC SMALL LETTER KHEICOPTIC CAPITAL LE" + + "TTER HORICOPTIC SMALL LETTER HORICOPTIC CAPITAL LETTER GANGIACOPTIC SMAL" + + "L LETTER GANGIACOPTIC CAPITAL LETTER SHIMACOPTIC SMALL LETTER SHIMACOPTI" + + "C CAPITAL LETTER DEICOPTIC SMALL LETTER DEIGREEK KAPPA SYMBOLGREEK RHO S" + + "YMBOLGREEK LUNATE SIGMA SYMBOLGREEK LETTER YOTGREEK CAPITAL THETA SYMBOL" + + "GREEK LUNATE EPSILON SYMBOLGREEK REVERSED LUNATE EPSILON SYMBOLGREEK CAP" + + "ITAL LETTER SHOGREEK SMALL LETTER SHOGREEK CAPITAL LUNATE SIGMA SYMBOLGR" + + "EEK CAPITAL LETTER SANGREEK SMALL LETTER SANGREEK RHO WITH STROKE SYMBOL") + ("" + + "GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOLGREEK CAPITAL DOTTED LUNATE SI" + + "GMA SYMBOLGREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOLCYRILLIC CAPI" + + "TAL LETTER IE WITH GRAVECYRILLIC CAPITAL LETTER IOCYRILLIC CAPITAL LETTE" + + "R DJECYRILLIC CAPITAL LETTER GJECYRILLIC CAPITAL LETTER UKRAINIAN IECYRI" + + "LLIC CAPITAL LETTER DZECYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN IC" + + "YRILLIC CAPITAL LETTER YICYRILLIC CAPITAL LETTER JECYRILLIC CAPITAL LETT" + + "ER LJECYRILLIC CAPITAL LETTER NJECYRILLIC CAPITAL LETTER TSHECYRILLIC CA" + + "PITAL LETTER KJECYRILLIC CAPITAL LETTER I WITH GRAVECYRILLIC CAPITAL LET" + + "TER SHORT UCYRILLIC CAPITAL LETTER DZHECYRILLIC CAPITAL LETTER ACYRILLIC" + + " CAPITAL LETTER BECYRILLIC CAPITAL LETTER VECYRILLIC CAPITAL LETTER GHEC" + + "YRILLIC CAPITAL LETTER DECYRILLIC CAPITAL LETTER IECYRILLIC CAPITAL LETT" + + "ER ZHECYRILLIC CAPITAL LETTER ZECYRILLIC CAPITAL LETTER ICYRILLIC CAPITA" + + "L LETTER SHORT ICYRILLIC CAPITAL LETTER KACYRILLIC CAPITAL LETTER ELCYRI" + + "LLIC CAPITAL LETTER EMCYRILLIC CAPITAL LETTER ENCYRILLIC CAPITAL LETTER " + + "OCYRILLIC CAPITAL LETTER PECYRILLIC CAPITAL LETTER ERCYRILLIC CAPITAL LE" + + "TTER ESCYRILLIC CAPITAL LETTER TECYRILLIC CAPITAL LETTER UCYRILLIC CAPIT" + + "AL LETTER EFCYRILLIC CAPITAL LETTER HACYRILLIC CAPITAL LETTER TSECYRILLI" + + "C CAPITAL LETTER CHECYRILLIC CAPITAL LETTER SHACYRILLIC CAPITAL LETTER S" + + "HCHACYRILLIC CAPITAL LETTER HARD SIGNCYRILLIC CAPITAL LETTER YERUCYRILLI" + + "C CAPITAL LETTER SOFT SIGNCYRILLIC CAPITAL LETTER ECYRILLIC CAPITAL LETT" + + "ER YUCYRILLIC CAPITAL LETTER YACYRILLIC SMALL LETTER ACYRILLIC SMALL LET" + + "TER BECYRILLIC SMALL LETTER VECYRILLIC SMALL LETTER GHECYRILLIC SMALL LE" + + "TTER DECYRILLIC SMALL LETTER IECYRILLIC SMALL LETTER ZHECYRILLIC SMALL L" + + "ETTER ZECYRILLIC SMALL LETTER ICYRILLIC SMALL LETTER SHORT ICYRILLIC SMA" + + "LL LETTER KACYRILLIC SMALL LETTER ELCYRILLIC SMALL LETTER EMCYRILLIC SMA" + + "LL LETTER ENCYRILLIC SMALL LETTER OCYRILLIC SMALL LETTER PECYRILLIC SMAL" + + "L LETTER ERCYRILLIC SMALL LETTER ESCYRILLIC SMALL LETTER TECYRILLIC SMAL" + + "L LETTER UCYRILLIC SMALL LETTER EFCYRILLIC SMALL LETTER HACYRILLIC SMALL" + + " LETTER TSECYRILLIC SMALL LETTER CHECYRILLIC SMALL LETTER SHACYRILLIC SM" + + "ALL LETTER SHCHACYRILLIC SMALL LETTER HARD SIGNCYRILLIC SMALL LETTER YER" + + "UCYRILLIC SMALL LETTER SOFT SIGNCYRILLIC SMALL LETTER ECYRILLIC SMALL LE" + + "TTER YUCYRILLIC SMALL LETTER YACYRILLIC SMALL LETTER IE WITH GRAVECYRILL" + + "IC SMALL LETTER IOCYRILLIC SMALL LETTER DJECYRILLIC SMALL LETTER GJECYRI" + + "LLIC SMALL LETTER UKRAINIAN IECYRILLIC SMALL LETTER DZECYRILLIC SMALL LE" + + "TTER BYELORUSSIAN-UKRAINIAN ICYRILLIC SMALL LETTER YICYRILLIC SMALL LETT" + + "ER JECYRILLIC SMALL LETTER LJECYRILLIC SMALL LETTER NJECYRILLIC SMALL LE" + + "TTER TSHECYRILLIC SMALL LETTER KJECYRILLIC SMALL LETTER I WITH GRAVECYRI" + + "LLIC SMALL LETTER SHORT UCYRILLIC SMALL LETTER DZHECYRILLIC CAPITAL LETT" + + "ER OMEGACYRILLIC SMALL LETTER OMEGACYRILLIC CAPITAL LETTER YATCYRILLIC S" + + "MALL LETTER YATCYRILLIC CAPITAL LETTER IOTIFIED ECYRILLIC SMALL LETTER I" + + "OTIFIED ECYRILLIC CAPITAL LETTER LITTLE YUSCYRILLIC SMALL LETTER LITTLE " + + "YUSCYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUSCYRILLIC SMALL LETTER IOTI" + + "FIED LITTLE YUSCYRILLIC CAPITAL LETTER BIG YUSCYRILLIC SMALL LETTER BIG " + + "YUSCYRILLIC CAPITAL LETTER IOTIFIED BIG YUSCYRILLIC SMALL LETTER IOTIFIE" + + "D BIG YUSCYRILLIC CAPITAL LETTER KSICYRILLIC SMALL LETTER KSICYRILLIC CA" + + "PITAL LETTER PSICYRILLIC SMALL LETTER PSICYRILLIC CAPITAL LETTER FITACYR" + + "ILLIC SMALL LETTER FITACYRILLIC CAPITAL LETTER IZHITSACYRILLIC SMALL LET" + + "TER IZHITSACYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENTCYRIL" + + "LIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENTCYRILLIC CAPITAL LETTER" + + " UKCYRILLIC SMALL LETTER UKCYRILLIC CAPITAL LETTER ROUND OMEGACYRILLIC S" + + "MALL LETTER ROUND OMEGACYRILLIC CAPITAL LETTER OMEGA WITH TITLOCYRILLIC " + + "SMALL LETTER OMEGA WITH TITLOCYRILLIC CAPITAL LETTER OTCYRILLIC SMALL LE" + + "TTER OTCYRILLIC CAPITAL LETTER KOPPACYRILLIC SMALL LETTER KOPPACYRILLIC " + + "THOUSANDS SIGNCOMBINING CYRILLIC TITLOCOMBINING CYRILLIC PALATALIZATIONC" + + "OMBINING CYRILLIC DASIA PNEUMATACOMBINING CYRILLIC PSILI PNEUMATACOMBINI" + + "NG CYRILLIC POKRYTIECOMBINING CYRILLIC HUNDRED THOUSANDS SIGNCOMBINING C" + + "YRILLIC MILLIONS SIGNCYRILLIC CAPITAL LETTER SHORT I WITH TAILCYRILLIC S" + + "MALL LETTER SHORT I WITH TAILCYRILLIC CAPITAL LETTER SEMISOFT SIGNCYRILL" + + "IC SMALL LETTER SEMISOFT SIGNCYRILLIC CAPITAL LETTER ER WITH TICKCYRILLI" + + "C SMALL LETTER ER WITH TICKCYRILLIC CAPITAL LETTER GHE WITH UPTURNCYRILL" + + "IC SMALL LETTER GHE WITH UPTURNCYRILLIC CAPITAL LETTER GHE WITH STROKECY" + + "RILLIC SMALL LETTER GHE WITH STROKECYRILLIC CAPITAL LETTER GHE WITH MIDD" + + "LE HOOKCYRILLIC SMALL LETTER GHE WITH MIDDLE HOOKCYRILLIC CAPITAL LETTER" + + " ZHE WITH DESCENDERCYRILLIC SMALL LETTER ZHE WITH DESCENDERCYRILLIC CAPI") + ("" + + "TAL LETTER ZE WITH DESCENDERCYRILLIC SMALL LETTER ZE WITH DESCENDERCYRIL" + + "LIC CAPITAL LETTER KA WITH DESCENDERCYRILLIC SMALL LETTER KA WITH DESCEN" + + "DERCYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKECYRILLIC SMALL LETTER " + + "KA WITH VERTICAL STROKECYRILLIC CAPITAL LETTER KA WITH STROKECYRILLIC SM" + + "ALL LETTER KA WITH STROKECYRILLIC CAPITAL LETTER BASHKIR KACYRILLIC SMAL" + + "L LETTER BASHKIR KACYRILLIC CAPITAL LETTER EN WITH DESCENDERCYRILLIC SMA" + + "LL LETTER EN WITH DESCENDERCYRILLIC CAPITAL LIGATURE EN GHECYRILLIC SMAL" + + "L LIGATURE EN GHECYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOKCYRILLIC SMA" + + "LL LETTER PE WITH MIDDLE HOOKCYRILLIC CAPITAL LETTER ABKHASIAN HACYRILLI" + + "C SMALL LETTER ABKHASIAN HACYRILLIC CAPITAL LETTER ES WITH DESCENDERCYRI" + + "LLIC SMALL LETTER ES WITH DESCENDERCYRILLIC CAPITAL LETTER TE WITH DESCE" + + "NDERCYRILLIC SMALL LETTER TE WITH DESCENDERCYRILLIC CAPITAL LETTER STRAI" + + "GHT UCYRILLIC SMALL LETTER STRAIGHT UCYRILLIC CAPITAL LETTER STRAIGHT U " + + "WITH STROKECYRILLIC SMALL LETTER STRAIGHT U WITH STROKECYRILLIC CAPITAL " + + "LETTER HA WITH DESCENDERCYRILLIC SMALL LETTER HA WITH DESCENDERCYRILLIC " + + "CAPITAL LIGATURE TE TSECYRILLIC SMALL LIGATURE TE TSECYRILLIC CAPITAL LE" + + "TTER CHE WITH DESCENDERCYRILLIC SMALL LETTER CHE WITH DESCENDERCYRILLIC " + + "CAPITAL LETTER CHE WITH VERTICAL STROKECYRILLIC SMALL LETTER CHE WITH VE" + + "RTICAL STROKECYRILLIC CAPITAL LETTER SHHACYRILLIC SMALL LETTER SHHACYRIL" + + "LIC CAPITAL LETTER ABKHASIAN CHECYRILLIC SMALL LETTER ABKHASIAN CHECYRIL" + + "LIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDERCYRILLIC SMALL LETTER ABK" + + "HASIAN CHE WITH DESCENDERCYRILLIC LETTER PALOCHKACYRILLIC CAPITAL LETTER" + + " ZHE WITH BREVECYRILLIC SMALL LETTER ZHE WITH BREVECYRILLIC CAPITAL LETT" + + "ER KA WITH HOOKCYRILLIC SMALL LETTER KA WITH HOOKCYRILLIC CAPITAL LETTER" + + " EL WITH TAILCYRILLIC SMALL LETTER EL WITH TAILCYRILLIC CAPITAL LETTER E" + + "N WITH HOOKCYRILLIC SMALL LETTER EN WITH HOOKCYRILLIC CAPITAL LETTER EN " + + "WITH TAILCYRILLIC SMALL LETTER EN WITH TAILCYRILLIC CAPITAL LETTER KHAKA" + + "SSIAN CHECYRILLIC SMALL LETTER KHAKASSIAN CHECYRILLIC CAPITAL LETTER EM " + + "WITH TAILCYRILLIC SMALL LETTER EM WITH TAILCYRILLIC SMALL LETTER PALOCHK" + + "ACYRILLIC CAPITAL LETTER A WITH BREVECYRILLIC SMALL LETTER A WITH BREVEC" + + "YRILLIC CAPITAL LETTER A WITH DIAERESISCYRILLIC SMALL LETTER A WITH DIAE" + + "RESISCYRILLIC CAPITAL LIGATURE A IECYRILLIC SMALL LIGATURE A IECYRILLIC " + + "CAPITAL LETTER IE WITH BREVECYRILLIC SMALL LETTER IE WITH BREVECYRILLIC " + + "CAPITAL LETTER SCHWACYRILLIC SMALL LETTER SCHWACYRILLIC CAPITAL LETTER S" + + "CHWA WITH DIAERESISCYRILLIC SMALL LETTER SCHWA WITH DIAERESISCYRILLIC CA" + + "PITAL LETTER ZHE WITH DIAERESISCYRILLIC SMALL LETTER ZHE WITH DIAERESISC" + + "YRILLIC CAPITAL LETTER ZE WITH DIAERESISCYRILLIC SMALL LETTER ZE WITH DI" + + "AERESISCYRILLIC CAPITAL LETTER ABKHASIAN DZECYRILLIC SMALL LETTER ABKHAS" + + "IAN DZECYRILLIC CAPITAL LETTER I WITH MACRONCYRILLIC SMALL LETTER I WITH" + + " MACRONCYRILLIC CAPITAL LETTER I WITH DIAERESISCYRILLIC SMALL LETTER I W" + + "ITH DIAERESISCYRILLIC CAPITAL LETTER O WITH DIAERESISCYRILLIC SMALL LETT" + + "ER O WITH DIAERESISCYRILLIC CAPITAL LETTER BARRED OCYRILLIC SMALL LETTER" + + " BARRED OCYRILLIC CAPITAL LETTER BARRED O WITH DIAERESISCYRILLIC SMALL L" + + "ETTER BARRED O WITH DIAERESISCYRILLIC CAPITAL LETTER E WITH DIAERESISCYR" + + "ILLIC SMALL LETTER E WITH DIAERESISCYRILLIC CAPITAL LETTER U WITH MACRON" + + "CYRILLIC SMALL LETTER U WITH MACRONCYRILLIC CAPITAL LETTER U WITH DIAERE" + + "SISCYRILLIC SMALL LETTER U WITH DIAERESISCYRILLIC CAPITAL LETTER U WITH " + + "DOUBLE ACUTECYRILLIC SMALL LETTER U WITH DOUBLE ACUTECYRILLIC CAPITAL LE" + + "TTER CHE WITH DIAERESISCYRILLIC SMALL LETTER CHE WITH DIAERESISCYRILLIC " + + "CAPITAL LETTER GHE WITH DESCENDERCYRILLIC SMALL LETTER GHE WITH DESCENDE" + + "RCYRILLIC CAPITAL LETTER YERU WITH DIAERESISCYRILLIC SMALL LETTER YERU W" + + "ITH DIAERESISCYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOKCYRILLIC SM" + + "ALL LETTER GHE WITH STROKE AND HOOKCYRILLIC CAPITAL LETTER HA WITH HOOKC" + + "YRILLIC SMALL LETTER HA WITH HOOKCYRILLIC CAPITAL LETTER HA WITH STROKEC" + + "YRILLIC SMALL LETTER HA WITH STROKECYRILLIC CAPITAL LETTER KOMI DECYRILL" + + "IC SMALL LETTER KOMI DECYRILLIC CAPITAL LETTER KOMI DJECYRILLIC SMALL LE" + + "TTER KOMI DJECYRILLIC CAPITAL LETTER KOMI ZJECYRILLIC SMALL LETTER KOMI " + + "ZJECYRILLIC CAPITAL LETTER KOMI DZJECYRILLIC SMALL LETTER KOMI DZJECYRIL" + + "LIC CAPITAL LETTER KOMI LJECYRILLIC SMALL LETTER KOMI LJECYRILLIC CAPITA" + + "L LETTER KOMI NJECYRILLIC SMALL LETTER KOMI NJECYRILLIC CAPITAL LETTER K" + + "OMI SJECYRILLIC SMALL LETTER KOMI SJECYRILLIC CAPITAL LETTER KOMI TJECYR" + + "ILLIC SMALL LETTER KOMI TJECYRILLIC CAPITAL LETTER REVERSED ZECYRILLIC S" + + "MALL LETTER REVERSED ZECYRILLIC CAPITAL LETTER EL WITH HOOKCYRILLIC SMAL" + + "L LETTER EL WITH HOOKCYRILLIC CAPITAL LETTER LHACYRILLIC SMALL LETTER LH") + ("" + + "ACYRILLIC CAPITAL LETTER RHACYRILLIC SMALL LETTER RHACYRILLIC CAPITAL LE" + + "TTER YAECYRILLIC SMALL LETTER YAECYRILLIC CAPITAL LETTER QACYRILLIC SMAL" + + "L LETTER QACYRILLIC CAPITAL LETTER WECYRILLIC SMALL LETTER WECYRILLIC CA" + + "PITAL LETTER ALEUT KACYRILLIC SMALL LETTER ALEUT KACYRILLIC CAPITAL LETT" + + "ER EL WITH MIDDLE HOOKCYRILLIC SMALL LETTER EL WITH MIDDLE HOOKCYRILLIC " + + "CAPITAL LETTER EN WITH MIDDLE HOOKCYRILLIC SMALL LETTER EN WITH MIDDLE H" + + "OOKCYRILLIC CAPITAL LETTER PE WITH DESCENDERCYRILLIC SMALL LETTER PE WIT" + + "H DESCENDERCYRILLIC CAPITAL LETTER SHHA WITH DESCENDERCYRILLIC SMALL LET" + + "TER SHHA WITH DESCENDERCYRILLIC CAPITAL LETTER EN WITH LEFT HOOKCYRILLIC" + + " SMALL LETTER EN WITH LEFT HOOKCYRILLIC CAPITAL LETTER DZZHECYRILLIC SMA" + + "LL LETTER DZZHECYRILLIC CAPITAL LETTER DCHECYRILLIC SMALL LETTER DCHECYR" + + "ILLIC CAPITAL LETTER EL WITH DESCENDERCYRILLIC SMALL LETTER EL WITH DESC" + + "ENDERARMENIAN CAPITAL LETTER AYBARMENIAN CAPITAL LETTER BENARMENIAN CAPI" + + "TAL LETTER GIMARMENIAN CAPITAL LETTER DAARMENIAN CAPITAL LETTER ECHARMEN" + + "IAN CAPITAL LETTER ZAARMENIAN CAPITAL LETTER EHARMENIAN CAPITAL LETTER E" + + "TARMENIAN CAPITAL LETTER TOARMENIAN CAPITAL LETTER ZHEARMENIAN CAPITAL L" + + "ETTER INIARMENIAN CAPITAL LETTER LIWNARMENIAN CAPITAL LETTER XEHARMENIAN" + + " CAPITAL LETTER CAARMENIAN CAPITAL LETTER KENARMENIAN CAPITAL LETTER HOA" + + "RMENIAN CAPITAL LETTER JAARMENIAN CAPITAL LETTER GHADARMENIAN CAPITAL LE" + + "TTER CHEHARMENIAN CAPITAL LETTER MENARMENIAN CAPITAL LETTER YIARMENIAN C" + + "APITAL LETTER NOWARMENIAN CAPITAL LETTER SHAARMENIAN CAPITAL LETTER VOAR" + + "MENIAN CAPITAL LETTER CHAARMENIAN CAPITAL LETTER PEHARMENIAN CAPITAL LET" + + "TER JHEHARMENIAN CAPITAL LETTER RAARMENIAN CAPITAL LETTER SEHARMENIAN CA" + + "PITAL LETTER VEWARMENIAN CAPITAL LETTER TIWNARMENIAN CAPITAL LETTER REHA" + + "RMENIAN CAPITAL LETTER COARMENIAN CAPITAL LETTER YIWNARMENIAN CAPITAL LE" + + "TTER PIWRARMENIAN CAPITAL LETTER KEHARMENIAN CAPITAL LETTER OHARMENIAN C" + + "APITAL LETTER FEHARMENIAN MODIFIER LETTER LEFT HALF RINGARMENIAN APOSTRO" + + "PHEARMENIAN EMPHASIS MARKARMENIAN EXCLAMATION MARKARMENIAN COMMAARMENIAN" + + " QUESTION MARKARMENIAN ABBREVIATION MARKARMENIAN SMALL LETTER AYBARMENIA" + + "N SMALL LETTER BENARMENIAN SMALL LETTER GIMARMENIAN SMALL LETTER DAARMEN" + + "IAN SMALL LETTER ECHARMENIAN SMALL LETTER ZAARMENIAN SMALL LETTER EHARME" + + "NIAN SMALL LETTER ETARMENIAN SMALL LETTER TOARMENIAN SMALL LETTER ZHEARM" + + "ENIAN SMALL LETTER INIARMENIAN SMALL LETTER LIWNARMENIAN SMALL LETTER XE" + + "HARMENIAN SMALL LETTER CAARMENIAN SMALL LETTER KENARMENIAN SMALL LETTER " + + "HOARMENIAN SMALL LETTER JAARMENIAN SMALL LETTER GHADARMENIAN SMALL LETTE" + + "R CHEHARMENIAN SMALL LETTER MENARMENIAN SMALL LETTER YIARMENIAN SMALL LE" + + "TTER NOWARMENIAN SMALL LETTER SHAARMENIAN SMALL LETTER VOARMENIAN SMALL " + + "LETTER CHAARMENIAN SMALL LETTER PEHARMENIAN SMALL LETTER JHEHARMENIAN SM" + + "ALL LETTER RAARMENIAN SMALL LETTER SEHARMENIAN SMALL LETTER VEWARMENIAN " + + "SMALL LETTER TIWNARMENIAN SMALL LETTER REHARMENIAN SMALL LETTER COARMENI" + + "AN SMALL LETTER YIWNARMENIAN SMALL LETTER PIWRARMENIAN SMALL LETTER KEHA" + + "RMENIAN SMALL LETTER OHARMENIAN SMALL LETTER FEHARMENIAN SMALL LIGATURE " + + "ECH YIWNARMENIAN FULL STOPARMENIAN HYPHENRIGHT-FACING ARMENIAN ETERNITY " + + "SIGNLEFT-FACING ARMENIAN ETERNITY SIGNARMENIAN DRAM SIGNHEBREW ACCENT ET" + + "NAHTAHEBREW ACCENT SEGOLHEBREW ACCENT SHALSHELETHEBREW ACCENT ZAQEF QATA" + + "NHEBREW ACCENT ZAQEF GADOLHEBREW ACCENT TIPEHAHEBREW ACCENT REVIAHEBREW " + + "ACCENT ZARQAHEBREW ACCENT PASHTAHEBREW ACCENT YETIVHEBREW ACCENT TEVIRHE" + + "BREW ACCENT GERESHHEBREW ACCENT GERESH MUQDAMHEBREW ACCENT GERSHAYIMHEBR" + + "EW ACCENT QARNEY PARAHEBREW ACCENT TELISHA GEDOLAHEBREW ACCENT PAZERHEBR" + + "EW ACCENT ATNAH HAFUKHHEBREW ACCENT MUNAHHEBREW ACCENT MAHAPAKHHEBREW AC" + + "CENT MERKHAHEBREW ACCENT MERKHA KEFULAHEBREW ACCENT DARGAHEBREW ACCENT Q" + + "ADMAHEBREW ACCENT TELISHA QETANAHEBREW ACCENT YERAH BEN YOMOHEBREW ACCEN" + + "T OLEHEBREW ACCENT ILUYHEBREW ACCENT DEHIHEBREW ACCENT ZINORHEBREW MARK " + + "MASORA CIRCLEHEBREW POINT SHEVAHEBREW POINT HATAF SEGOLHEBREW POINT HATA" + + "F PATAHHEBREW POINT HATAF QAMATSHEBREW POINT HIRIQHEBREW POINT TSEREHEBR" + + "EW POINT SEGOLHEBREW POINT PATAHHEBREW POINT QAMATSHEBREW POINT HOLAMHEB" + + "REW POINT HOLAM HASER FOR VAVHEBREW POINT QUBUTSHEBREW POINT DAGESH OR M" + + "APIQHEBREW POINT METEGHEBREW PUNCTUATION MAQAFHEBREW POINT RAFEHEBREW PU" + + "NCTUATION PASEQHEBREW POINT SHIN DOTHEBREW POINT SIN DOTHEBREW PUNCTUATI" + + "ON SOF PASUQHEBREW MARK UPPER DOTHEBREW MARK LOWER DOTHEBREW PUNCTUATION" + + " NUN HAFUKHAHEBREW POINT QAMATS QATANHEBREW LETTER ALEFHEBREW LETTER BET" + + "HEBREW LETTER GIMELHEBREW LETTER DALETHEBREW LETTER HEHEBREW LETTER VAVH" + + "EBREW LETTER ZAYINHEBREW LETTER HETHEBREW LETTER TETHEBREW LETTER YODHEB" + + "REW LETTER FINAL KAFHEBREW LETTER KAFHEBREW LETTER LAMEDHEBREW LETTER FI") + ("" + + "NAL MEMHEBREW LETTER MEMHEBREW LETTER FINAL NUNHEBREW LETTER NUNHEBREW L" + + "ETTER SAMEKHHEBREW LETTER AYINHEBREW LETTER FINAL PEHEBREW LETTER PEHEBR" + + "EW LETTER FINAL TSADIHEBREW LETTER TSADIHEBREW LETTER QOFHEBREW LETTER R" + + "ESHHEBREW LETTER SHINHEBREW LETTER TAVHEBREW LIGATURE YIDDISH DOUBLE VAV" + + "HEBREW LIGATURE YIDDISH VAV YODHEBREW LIGATURE YIDDISH DOUBLE YODHEBREW " + + "PUNCTUATION GERESHHEBREW PUNCTUATION GERSHAYIMARABIC NUMBER SIGNARABIC S" + + "IGN SANAHARABIC FOOTNOTE MARKERARABIC SIGN SAFHAARABIC SIGN SAMVATARABIC" + + " NUMBER MARK ABOVEARABIC-INDIC CUBE ROOTARABIC-INDIC FOURTH ROOTARABIC R" + + "AYARABIC-INDIC PER MILLE SIGNARABIC-INDIC PER TEN THOUSAND SIGNAFGHANI S" + + "IGNARABIC COMMAARABIC DATE SEPARATORARABIC POETIC VERSE SIGNARABIC SIGN " + + "MISRAARABIC SIGN SALLALLAHOU ALAYHE WASSALLAMARABIC SIGN ALAYHE ASSALLAM" + + "ARABIC SIGN RAHMATULLAH ALAYHEARABIC SIGN RADI ALLAHOU ANHUARABIC SIGN T" + + "AKHALLUSARABIC SMALL HIGH TAHARABIC SMALL HIGH LIGATURE ALEF WITH LAM WI" + + "TH YEHARABIC SMALL HIGH ZAINARABIC SMALL FATHAARABIC SMALL DAMMAARABIC S" + + "MALL KASRAARABIC SEMICOLONARABIC LETTER MARKARABIC TRIPLE DOT PUNCTUATIO" + + "N MARKARABIC QUESTION MARKARABIC LETTER KASHMIRI YEHARABIC LETTER HAMZAA" + + "RABIC LETTER ALEF WITH MADDA ABOVEARABIC LETTER ALEF WITH HAMZA ABOVEARA" + + "BIC LETTER WAW WITH HAMZA ABOVEARABIC LETTER ALEF WITH HAMZA BELOWARABIC" + + " LETTER YEH WITH HAMZA ABOVEARABIC LETTER ALEFARABIC LETTER BEHARABIC LE" + + "TTER TEH MARBUTAARABIC LETTER TEHARABIC LETTER THEHARABIC LETTER JEEMARA" + + "BIC LETTER HAHARABIC LETTER KHAHARABIC LETTER DALARABIC LETTER THALARABI" + + "C LETTER REHARABIC LETTER ZAINARABIC LETTER SEENARABIC LETTER SHEENARABI" + + "C LETTER SADARABIC LETTER DADARABIC LETTER TAHARABIC LETTER ZAHARABIC LE" + + "TTER AINARABIC LETTER GHAINARABIC LETTER KEHEH WITH TWO DOTS ABOVEARABIC" + + " LETTER KEHEH WITH THREE DOTS BELOWARABIC LETTER FARSI YEH WITH INVERTED" + + " VARABIC LETTER FARSI YEH WITH TWO DOTS ABOVEARABIC LETTER FARSI YEH WIT" + + "H THREE DOTS ABOVEARABIC TATWEELARABIC LETTER FEHARABIC LETTER QAFARABIC" + + " LETTER KAFARABIC LETTER LAMARABIC LETTER MEEMARABIC LETTER NOONARABIC L" + + "ETTER HEHARABIC LETTER WAWARABIC LETTER ALEF MAKSURAARABIC LETTER YEHARA" + + "BIC FATHATANARABIC DAMMATANARABIC KASRATANARABIC FATHAARABIC DAMMAARABIC" + + " KASRAARABIC SHADDAARABIC SUKUNARABIC MADDAH ABOVEARABIC HAMZA ABOVEARAB" + + "IC HAMZA BELOWARABIC SUBSCRIPT ALEFARABIC INVERTED DAMMAARABIC MARK NOON" + + " GHUNNAARABIC ZWARAKAYARABIC VOWEL SIGN SMALL V ABOVEARABIC VOWEL SIGN I" + + "NVERTED SMALL V ABOVEARABIC VOWEL SIGN DOT BELOWARABIC REVERSED DAMMAARA" + + "BIC FATHA WITH TWO DOTSARABIC WAVY HAMZA BELOWARABIC-INDIC DIGIT ZEROARA" + + "BIC-INDIC DIGIT ONEARABIC-INDIC DIGIT TWOARABIC-INDIC DIGIT THREEARABIC-" + + "INDIC DIGIT FOURARABIC-INDIC DIGIT FIVEARABIC-INDIC DIGIT SIXARABIC-INDI" + + "C DIGIT SEVENARABIC-INDIC DIGIT EIGHTARABIC-INDIC DIGIT NINEARABIC PERCE" + + "NT SIGNARABIC DECIMAL SEPARATORARABIC THOUSANDS SEPARATORARABIC FIVE POI" + + "NTED STARARABIC LETTER DOTLESS BEHARABIC LETTER DOTLESS QAFARABIC LETTER" + + " SUPERSCRIPT ALEFARABIC LETTER ALEF WASLAARABIC LETTER ALEF WITH WAVY HA" + + "MZA ABOVEARABIC LETTER ALEF WITH WAVY HAMZA BELOWARABIC LETTER HIGH HAMZ" + + "AARABIC LETTER HIGH HAMZA ALEFARABIC LETTER HIGH HAMZA WAWARABIC LETTER " + + "U WITH HAMZA ABOVEARABIC LETTER HIGH HAMZA YEHARABIC LETTER TTEHARABIC L" + + "ETTER TTEHEHARABIC LETTER BEEHARABIC LETTER TEH WITH RINGARABIC LETTER T" + + "EH WITH THREE DOTS ABOVE DOWNWARDSARABIC LETTER PEHARABIC LETTER TEHEHAR" + + "ABIC LETTER BEHEHARABIC LETTER HAH WITH HAMZA ABOVEARABIC LETTER HAH WIT" + + "H TWO DOTS VERTICAL ABOVEARABIC LETTER NYEHARABIC LETTER DYEHARABIC LETT" + + "ER HAH WITH THREE DOTS ABOVEARABIC LETTER TCHEHARABIC LETTER TCHEHEHARAB" + + "IC LETTER DDALARABIC LETTER DAL WITH RINGARABIC LETTER DAL WITH DOT BELO" + + "WARABIC LETTER DAL WITH DOT BELOW AND SMALL TAHARABIC LETTER DAHALARABIC" + + " LETTER DDAHALARABIC LETTER DULARABIC LETTER DAL WITH THREE DOTS ABOVE D" + + "OWNWARDSARABIC LETTER DAL WITH FOUR DOTS ABOVEARABIC LETTER RREHARABIC L" + + "ETTER REH WITH SMALL VARABIC LETTER REH WITH RINGARABIC LETTER REH WITH " + + "DOT BELOWARABIC LETTER REH WITH SMALL V BELOWARABIC LETTER REH WITH DOT " + + "BELOW AND DOT ABOVEARABIC LETTER REH WITH TWO DOTS ABOVEARABIC LETTER JE" + + "HARABIC LETTER REH WITH FOUR DOTS ABOVEARABIC LETTER SEEN WITH DOT BELOW" + + " AND DOT ABOVEARABIC LETTER SEEN WITH THREE DOTS BELOWARABIC LETTER SEEN" + + " WITH THREE DOTS BELOW AND THREE DOTS ABOVEARABIC LETTER SAD WITH TWO DO" + + "TS BELOWARABIC LETTER SAD WITH THREE DOTS ABOVEARABIC LETTER TAH WITH TH" + + "REE DOTS ABOVEARABIC LETTER AIN WITH THREE DOTS ABOVEARABIC LETTER DOTLE" + + "SS FEHARABIC LETTER FEH WITH DOT MOVED BELOWARABIC LETTER FEH WITH DOT B" + + "ELOWARABIC LETTER VEHARABIC LETTER FEH WITH THREE DOTS BELOWARABIC LETTE" + + "R PEHEHARABIC LETTER QAF WITH DOT ABOVEARABIC LETTER QAF WITH THREE DOTS") + ("" + + " ABOVEARABIC LETTER KEHEHARABIC LETTER SWASH KAFARABIC LETTER KAF WITH R" + + "INGARABIC LETTER KAF WITH DOT ABOVEARABIC LETTER NGARABIC LETTER KAF WIT" + + "H THREE DOTS BELOWARABIC LETTER GAFARABIC LETTER GAF WITH RINGARABIC LET" + + "TER NGOEHARABIC LETTER GAF WITH TWO DOTS BELOWARABIC LETTER GUEHARABIC L" + + "ETTER GAF WITH THREE DOTS ABOVEARABIC LETTER LAM WITH SMALL VARABIC LETT" + + "ER LAM WITH DOT ABOVEARABIC LETTER LAM WITH THREE DOTS ABOVEARABIC LETTE" + + "R LAM WITH THREE DOTS BELOWARABIC LETTER NOON WITH DOT BELOWARABIC LETTE" + + "R NOON GHUNNAARABIC LETTER RNOONARABIC LETTER NOON WITH RINGARABIC LETTE" + + "R NOON WITH THREE DOTS ABOVEARABIC LETTER HEH DOACHASHMEEARABIC LETTER T" + + "CHEH WITH DOT ABOVEARABIC LETTER HEH WITH YEH ABOVEARABIC LETTER HEH GOA" + + "LARABIC LETTER HEH GOAL WITH HAMZA ABOVEARABIC LETTER TEH MARBUTA GOALAR" + + "ABIC LETTER WAW WITH RINGARABIC LETTER KIRGHIZ OEARABIC LETTER OEARABIC " + + "LETTER UARABIC LETTER YUARABIC LETTER KIRGHIZ YUARABIC LETTER WAW WITH T" + + "WO DOTS ABOVEARABIC LETTER VEARABIC LETTER FARSI YEHARABIC LETTER YEH WI" + + "TH TAILARABIC LETTER YEH WITH SMALL VARABIC LETTER WAW WITH DOT ABOVEARA" + + "BIC LETTER EARABIC LETTER YEH WITH THREE DOTS BELOWARABIC LETTER YEH BAR" + + "REEARABIC LETTER YEH BARREE WITH HAMZA ABOVEARABIC FULL STOPARABIC LETTE" + + "R AEARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURAARABIC SMAL" + + "L HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURAARABIC SMALL HIGH MEEM INI" + + "TIAL FORMARABIC SMALL HIGH LAM ALEFARABIC SMALL HIGH JEEMARABIC SMALL HI" + + "GH THREE DOTSARABIC SMALL HIGH SEENARABIC END OF AYAHARABIC START OF RUB" + + " EL HIZBARABIC SMALL HIGH ROUNDED ZEROARABIC SMALL HIGH UPRIGHT RECTANGU" + + "LAR ZEROARABIC SMALL HIGH DOTLESS HEAD OF KHAHARABIC SMALL HIGH MEEM ISO" + + "LATED FORMARABIC SMALL LOW SEENARABIC SMALL HIGH MADDAARABIC SMALL WAWAR" + + "ABIC SMALL YEHARABIC SMALL HIGH YEHARABIC SMALL HIGH NOONARABIC PLACE OF" + + " SAJDAHARABIC EMPTY CENTRE LOW STOPARABIC EMPTY CENTRE HIGH STOPARABIC R" + + "OUNDED HIGH STOP WITH FILLED CENTREARABIC SMALL LOW MEEMARABIC LETTER DA" + + "L WITH INVERTED VARABIC LETTER REH WITH INVERTED VEXTENDED ARABIC-INDIC " + + "DIGIT ZEROEXTENDED ARABIC-INDIC DIGIT ONEEXTENDED ARABIC-INDIC DIGIT TWO" + + "EXTENDED ARABIC-INDIC DIGIT THREEEXTENDED ARABIC-INDIC DIGIT FOUREXTENDE" + + "D ARABIC-INDIC DIGIT FIVEEXTENDED ARABIC-INDIC DIGIT SIXEXTENDED ARABIC-" + + "INDIC DIGIT SEVENEXTENDED ARABIC-INDIC DIGIT EIGHTEXTENDED ARABIC-INDIC " + + "DIGIT NINEARABIC LETTER SHEEN WITH DOT BELOWARABIC LETTER DAD WITH DOT B" + + "ELOWARABIC LETTER GHAIN WITH DOT BELOWARABIC SIGN SINDHI AMPERSANDARABIC" + + " SIGN SINDHI POSTPOSITION MENARABIC LETTER HEH WITH INVERTED VSYRIAC END" + + " OF PARAGRAPHSYRIAC SUPRALINEAR FULL STOPSYRIAC SUBLINEAR FULL STOPSYRIA" + + "C SUPRALINEAR COLONSYRIAC SUBLINEAR COLONSYRIAC HORIZONTAL COLONSYRIAC C" + + "OLON SKEWED LEFTSYRIAC COLON SKEWED RIGHTSYRIAC SUPRALINEAR COLON SKEWED" + + " LEFTSYRIAC SUBLINEAR COLON SKEWED RIGHTSYRIAC CONTRACTIONSYRIAC HARKLEA" + + "N OBELUSSYRIAC HARKLEAN METOBELUSSYRIAC HARKLEAN ASTERISCUSSYRIAC ABBREV" + + "IATION MARKSYRIAC LETTER ALAPHSYRIAC LETTER SUPERSCRIPT ALAPHSYRIAC LETT" + + "ER BETHSYRIAC LETTER GAMALSYRIAC LETTER GAMAL GARSHUNISYRIAC LETTER DALA" + + "THSYRIAC LETTER DOTLESS DALATH RISHSYRIAC LETTER HESYRIAC LETTER WAWSYRI" + + "AC LETTER ZAINSYRIAC LETTER HETHSYRIAC LETTER TETHSYRIAC LETTER TETH GAR" + + "SHUNISYRIAC LETTER YUDHSYRIAC LETTER YUDH HESYRIAC LETTER KAPHSYRIAC LET" + + "TER LAMADHSYRIAC LETTER MIMSYRIAC LETTER NUNSYRIAC LETTER SEMKATHSYRIAC " + + "LETTER FINAL SEMKATHSYRIAC LETTER ESYRIAC LETTER PESYRIAC LETTER REVERSE" + + "D PESYRIAC LETTER SADHESYRIAC LETTER QAPHSYRIAC LETTER RISHSYRIAC LETTER" + + " SHINSYRIAC LETTER TAWSYRIAC LETTER PERSIAN BHETHSYRIAC LETTER PERSIAN G" + + "HAMALSYRIAC LETTER PERSIAN DHALATHSYRIAC PTHAHA ABOVESYRIAC PTHAHA BELOW" + + "SYRIAC PTHAHA DOTTEDSYRIAC ZQAPHA ABOVESYRIAC ZQAPHA BELOWSYRIAC ZQAPHA " + + "DOTTEDSYRIAC RBASA ABOVESYRIAC RBASA BELOWSYRIAC DOTTED ZLAMA HORIZONTAL" + + "SYRIAC DOTTED ZLAMA ANGULARSYRIAC HBASA ABOVESYRIAC HBASA BELOWSYRIAC HB" + + "ASA-ESASA DOTTEDSYRIAC ESASA ABOVESYRIAC ESASA BELOWSYRIAC RWAHASYRIAC F" + + "EMININE DOTSYRIAC QUSHSHAYASYRIAC RUKKAKHASYRIAC TWO VERTICAL DOTS ABOVE" + + "SYRIAC TWO VERTICAL DOTS BELOWSYRIAC THREE DOTS ABOVESYRIAC THREE DOTS B" + + "ELOWSYRIAC OBLIQUE LINE ABOVESYRIAC OBLIQUE LINE BELOWSYRIAC MUSICSYRIAC" + + " BARREKHSYRIAC LETTER SOGDIAN ZHAINSYRIAC LETTER SOGDIAN KHAPHSYRIAC LET" + + "TER SOGDIAN FEARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOWARABIC" + + " LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVEARABIC LETTER BEH WITH TH" + + "REE DOTS POINTING UPWARDS BELOWARABIC LETTER BEH WITH THREE DOTS POINTIN" + + "G UPWARDS BELOW AND TWO DOTS ABOVEARABIC LETTER BEH WITH TWO DOTS BELOW " + + "AND DOT ABOVEARABIC LETTER BEH WITH INVERTED SMALL V BELOWARABIC LETTER " + + "BEH WITH SMALL VARABIC LETTER HAH WITH TWO DOTS ABOVEARABIC LETTER HAH W") + ("" + + "ITH THREE DOTS POINTING UPWARDS BELOWARABIC LETTER DAL WITH TWO DOTS VER" + + "TICALLY BELOW AND SMALL TAHARABIC LETTER DAL WITH INVERTED SMALL V BELOW" + + "ARABIC LETTER REH WITH STROKEARABIC LETTER SEEN WITH FOUR DOTS ABOVEARAB" + + "IC LETTER AIN WITH TWO DOTS ABOVEARABIC LETTER AIN WITH THREE DOTS POINT" + + "ING DOWNWARDS ABOVEARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVEARABI" + + "C LETTER FEH WITH TWO DOTS BELOWARABIC LETTER FEH WITH THREE DOTS POINTI" + + "NG UPWARDS BELOWARABIC LETTER KEHEH WITH DOT ABOVEARABIC LETTER KEHEH WI" + + "TH THREE DOTS ABOVEARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS " + + "BELOWARABIC LETTER MEEM WITH DOT ABOVEARABIC LETTER MEEM WITH DOT BELOWA" + + "RABIC LETTER NOON WITH TWO DOTS BELOWARABIC LETTER NOON WITH SMALL TAHAR" + + "ABIC LETTER NOON WITH SMALL VARABIC LETTER LAM WITH BARARABIC LETTER REH" + + " WITH TWO DOTS VERTICALLY ABOVEARABIC LETTER REH WITH HAMZA ABOVEARABIC " + + "LETTER SEEN WITH TWO DOTS VERTICALLY ABOVEARABIC LETTER HAH WITH SMALL A" + + "RABIC LETTER TAH BELOWARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND" + + " TWO DOTSARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTSARA" + + "BIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTSARABIC LETTER HA" + + "H WITH SMALL ARABIC LETTER TAH ABOVEARABIC LETTER ALEF WITH EXTENDED ARA" + + "BIC-INDIC DIGIT TWO ABOVEARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC D" + + "IGIT THREE ABOVEARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT" + + " TWO ABOVEARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE" + + " ABOVEARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELO" + + "WARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVEARABIC LETT" + + "ER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVEARABIC LETTER YEH BAR" + + "REE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVEARABIC LETTER YEH BARREE W" + + "ITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVEARABIC LETTER HAH WITH EXTEND" + + "ED ARABIC-INDIC DIGIT FOUR BELOWARABIC LETTER SEEN WITH EXTENDED ARABIC-" + + "INDIC DIGIT FOUR ABOVEARABIC LETTER SEEN WITH INVERTED VARABIC LETTER KA" + + "F WITH TWO DOTS ABOVETHAANA LETTER HAATHAANA LETTER SHAVIYANITHAANA LETT" + + "ER NOONUTHAANA LETTER RAATHAANA LETTER BAATHAANA LETTER LHAVIYANITHAANA " + + "LETTER KAAFUTHAANA LETTER ALIFUTHAANA LETTER VAAVUTHAANA LETTER MEEMUTHA" + + "ANA LETTER FAAFUTHAANA LETTER DHAALUTHAANA LETTER THAATHAANA LETTER LAAM" + + "UTHAANA LETTER GAAFUTHAANA LETTER GNAVIYANITHAANA LETTER SEENUTHAANA LET" + + "TER DAVIYANITHAANA LETTER ZAVIYANITHAANA LETTER TAVIYANITHAANA LETTER YA" + + "ATHAANA LETTER PAVIYANITHAANA LETTER JAVIYANITHAANA LETTER CHAVIYANITHAA" + + "NA LETTER TTAATHAANA LETTER HHAATHAANA LETTER KHAATHAANA LETTER THAALUTH" + + "AANA LETTER ZAATHAANA LETTER SHEENUTHAANA LETTER SAADHUTHAANA LETTER DAA" + + "DHUTHAANA LETTER TOTHAANA LETTER ZOTHAANA LETTER AINUTHAANA LETTER GHAIN" + + "UTHAANA LETTER QAAFUTHAANA LETTER WAAVUTHAANA ABAFILITHAANA AABAAFILITHA" + + "ANA IBIFILITHAANA EEBEEFILITHAANA UBUFILITHAANA OOBOOFILITHAANA EBEFILIT" + + "HAANA EYBEYFILITHAANA OBOFILITHAANA OABOAFILITHAANA SUKUNTHAANA LETTER N" + + "AANKO DIGIT ZERONKO DIGIT ONENKO DIGIT TWONKO DIGIT THREENKO DIGIT FOURN" + + "KO DIGIT FIVENKO DIGIT SIXNKO DIGIT SEVENNKO DIGIT EIGHTNKO DIGIT NINENK" + + "O LETTER ANKO LETTER EENKO LETTER INKO LETTER ENKO LETTER UNKO LETTER OO" + + "NKO LETTER ONKO LETTER DAGBASINNANKO LETTER NNKO LETTER BANKO LETTER PAN" + + "KO LETTER TANKO LETTER JANKO LETTER CHANKO LETTER DANKO LETTER RANKO LET" + + "TER RRANKO LETTER SANKO LETTER GBANKO LETTER FANKO LETTER KANKO LETTER L" + + "ANKO LETTER NA WOLOSONKO LETTER MANKO LETTER NYANKO LETTER NANKO LETTER " + + "HANKO LETTER WANKO LETTER YANKO LETTER NYA WOLOSONKO LETTER JONA JANKO L" + + "ETTER JONA CHANKO LETTER JONA RANKO COMBINING SHORT HIGH TONENKO COMBINI" + + "NG SHORT LOW TONENKO COMBINING SHORT RISING TONENKO COMBINING LONG DESCE" + + "NDING TONENKO COMBINING LONG HIGH TONENKO COMBINING LONG LOW TONENKO COM" + + "BINING LONG RISING TONENKO COMBINING NASALIZATION MARKNKO COMBINING DOUB" + + "LE DOT ABOVENKO HIGH TONE APOSTROPHENKO LOW TONE APOSTROPHENKO SYMBOL OO" + + " DENNENNKO SYMBOL GBAKURUNENNKO COMMANKO EXCLAMATION MARKNKO LAJANYALANS" + + "AMARITAN LETTER ALAFSAMARITAN LETTER BITSAMARITAN LETTER GAMANSAMARITAN " + + "LETTER DALATSAMARITAN LETTER IYSAMARITAN LETTER BAASAMARITAN LETTER ZENS" + + "AMARITAN LETTER ITSAMARITAN LETTER TITSAMARITAN LETTER YUTSAMARITAN LETT" + + "ER KAAFSAMARITAN LETTER LABATSAMARITAN LETTER MIMSAMARITAN LETTER NUNSAM" + + "ARITAN LETTER SINGAATSAMARITAN LETTER INSAMARITAN LETTER FISAMARITAN LET" + + "TER TSAADIYSAMARITAN LETTER QUFSAMARITAN LETTER RISHSAMARITAN LETTER SHA" + + "NSAMARITAN LETTER TAAFSAMARITAN MARK INSAMARITAN MARK IN-ALAFSAMARITAN M" + + "ARK OCCLUSIONSAMARITAN MARK DAGESHSAMARITAN MODIFIER LETTER EPENTHETIC Y" + + "UTSAMARITAN MARK EPENTHETIC YUTSAMARITAN VOWEL SIGN LONG ESAMARITAN VOWE" + + "L SIGN ESAMARITAN VOWEL SIGN OVERLONG AASAMARITAN VOWEL SIGN LONG AASAMA") + ("" + + "RITAN VOWEL SIGN AASAMARITAN VOWEL SIGN OVERLONG ASAMARITAN VOWEL SIGN L" + + "ONG ASAMARITAN VOWEL SIGN ASAMARITAN MODIFIER LETTER SHORT ASAMARITAN VO" + + "WEL SIGN SHORT ASAMARITAN VOWEL SIGN LONG USAMARITAN VOWEL SIGN USAMARIT" + + "AN MODIFIER LETTER ISAMARITAN VOWEL SIGN LONG ISAMARITAN VOWEL SIGN ISAM" + + "ARITAN VOWEL SIGN OSAMARITAN VOWEL SIGN SUKUNSAMARITAN MARK NEQUDAASAMAR" + + "ITAN PUNCTUATION NEQUDAASAMARITAN PUNCTUATION AFSAAQSAMARITAN PUNCTUATIO" + + "N ANGEDSAMARITAN PUNCTUATION BAUSAMARITAN PUNCTUATION ATMAAUSAMARITAN PU" + + "NCTUATION SHIYYAALAASAMARITAN ABBREVIATION MARKSAMARITAN PUNCTUATION MEL" + + "ODIC QITSASAMARITAN PUNCTUATION ZIQAASAMARITAN PUNCTUATION QITSASAMARITA" + + "N PUNCTUATION ZAEFSAMARITAN PUNCTUATION TURUSAMARITAN PUNCTUATION ARKAAN" + + "USAMARITAN PUNCTUATION SOF MASHFAATSAMARITAN PUNCTUATION ANNAAUMANDAIC L" + + "ETTER HALQAMANDAIC LETTER ABMANDAIC LETTER AGMANDAIC LETTER ADMANDAIC LE" + + "TTER AHMANDAIC LETTER USHENNAMANDAIC LETTER AZMANDAIC LETTER ITMANDAIC L" + + "ETTER ATTMANDAIC LETTER AKSAMANDAIC LETTER AKMANDAIC LETTER ALMANDAIC LE" + + "TTER AMMANDAIC LETTER ANMANDAIC LETTER ASMANDAIC LETTER INMANDAIC LETTER" + + " APMANDAIC LETTER ASZMANDAIC LETTER AQMANDAIC LETTER ARMANDAIC LETTER AS" + + "HMANDAIC LETTER ATMANDAIC LETTER DUSHENNAMANDAIC LETTER KADMANDAIC LETTE" + + "R AINMANDAIC AFFRICATION MARKMANDAIC VOCALIZATION MARKMANDAIC GEMINATION" + + " MARKMANDAIC PUNCTUATIONARABIC LETTER BEH WITH SMALL V BELOWARABIC LETTE" + + "R BEH WITH HAMZA ABOVEARABIC LETTER JEEM WITH TWO DOTS ABOVEARABIC LETTE" + + "R TAH WITH TWO DOTS ABOVEARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS" + + " ABOVEARABIC LETTER QAF WITH DOT BELOWARABIC LETTER LAM WITH DOUBLE BARA" + + "RABIC LETTER MEEM WITH THREE DOTS ABOVEARABIC LETTER YEH WITH TWO DOTS B" + + "ELOW AND HAMZA ABOVEARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVEA" + + "RABIC LETTER REH WITH LOOPARABIC LETTER WAW WITH DOT WITHINARABIC LETTER" + + " ROHINGYA YEHARABIC LETTER LOW ALEFARABIC LETTER DAL WITH THREE DOTS BEL" + + "OWARABIC LETTER SAD WITH THREE DOTS BELOWARABIC LETTER GAF WITH INVERTED" + + " STROKEARABIC LETTER STRAIGHT WAWARABIC LETTER ZAIN WITH INVERTED V ABOV" + + "EARABIC LETTER AIN WITH THREE DOTS BELOWARABIC LETTER KAF WITH DOT BELOW" + + "ARABIC LETTER BEH WITH SMALL MEEM ABOVEARABIC LETTER PEH WITH SMALL MEEM" + + " ABOVEARABIC LETTER TEH WITH SMALL TEH ABOVEARABIC LETTER REH WITH SMALL" + + " NOON ABOVEARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVEARA" + + "BIC LETTER AFRICAN FEHARABIC LETTER AFRICAN QAFARABIC LETTER AFRICAN NOO" + + "NARABIC SMALL HIGH WORD AR-RUBARABIC SMALL HIGH SADARABIC SMALL HIGH AIN" + + "ARABIC SMALL HIGH QAFARABIC SMALL HIGH NOON WITH KASRAARABIC SMALL LOW N" + + "OON WITH KASRAARABIC SMALL HIGH WORD ATH-THALATHAARABIC SMALL HIGH WORD " + + "AS-SAJDAARABIC SMALL HIGH WORD AN-NISFARABIC SMALL HIGH WORD SAKTAARABIC" + + " SMALL HIGH WORD QIFARABIC SMALL HIGH WORD WAQFAARABIC SMALL HIGH FOOTNO" + + "TE MARKERARABIC SMALL HIGH SIGN SAFHAARABIC DISPUTED END OF AYAHARABIC T" + + "URNED DAMMA BELOWARABIC CURLY FATHAARABIC CURLY DAMMAARABIC CURLY KASRAA" + + "RABIC CURLY FATHATANARABIC CURLY DAMMATANARABIC CURLY KASRATANARABIC TON" + + "E ONE DOT ABOVEARABIC TONE TWO DOTS ABOVEARABIC TONE LOOP ABOVEARABIC TO" + + "NE ONE DOT BELOWARABIC TONE TWO DOTS BELOWARABIC TONE LOOP BELOWARABIC O" + + "PEN FATHATANARABIC OPEN DAMMATANARABIC OPEN KASRATANARABIC SMALL HIGH WA" + + "WARABIC FATHA WITH RINGARABIC FATHA WITH DOT ABOVEARABIC KASRA WITH DOT " + + "BELOWARABIC LEFT ARROWHEAD ABOVEARABIC RIGHT ARROWHEAD ABOVEARABIC LEFT " + + "ARROWHEAD BELOWARABIC RIGHT ARROWHEAD BELOWARABIC DOUBLE RIGHT ARROWHEAD" + + " ABOVEARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOTARABIC RIGHT ARROWHEAD" + + " ABOVE WITH DOTARABIC DAMMA WITH DOTARABIC MARK SIDEWAYS NOON GHUNNADEVA" + + "NAGARI SIGN INVERTED CANDRABINDUDEVANAGARI SIGN CANDRABINDUDEVANAGARI SI" + + "GN ANUSVARADEVANAGARI SIGN VISARGADEVANAGARI LETTER SHORT ADEVANAGARI LE" + + "TTER ADEVANAGARI LETTER AADEVANAGARI LETTER IDEVANAGARI LETTER IIDEVANAG" + + "ARI LETTER UDEVANAGARI LETTER UUDEVANAGARI LETTER VOCALIC RDEVANAGARI LE" + + "TTER VOCALIC LDEVANAGARI LETTER CANDRA EDEVANAGARI LETTER SHORT EDEVANAG" + + "ARI LETTER EDEVANAGARI LETTER AIDEVANAGARI LETTER CANDRA ODEVANAGARI LET" + + "TER SHORT ODEVANAGARI LETTER ODEVANAGARI LETTER AUDEVANAGARI LETTER KADE" + + "VANAGARI LETTER KHADEVANAGARI LETTER GADEVANAGARI LETTER GHADEVANAGARI L" + + "ETTER NGADEVANAGARI LETTER CADEVANAGARI LETTER CHADEVANAGARI LETTER JADE" + + "VANAGARI LETTER JHADEVANAGARI LETTER NYADEVANAGARI LETTER TTADEVANAGARI " + + "LETTER TTHADEVANAGARI LETTER DDADEVANAGARI LETTER DDHADEVANAGARI LETTER " + + "NNADEVANAGARI LETTER TADEVANAGARI LETTER THADEVANAGARI LETTER DADEVANAGA" + + "RI LETTER DHADEVANAGARI LETTER NADEVANAGARI LETTER NNNADEVANAGARI LETTER" + + " PADEVANAGARI LETTER PHADEVANAGARI LETTER BADEVANAGARI LETTER BHADEVANAG" + + "ARI LETTER MADEVANAGARI LETTER YADEVANAGARI LETTER RADEVANAGARI LETTER R") + ("" + + "RADEVANAGARI LETTER LADEVANAGARI LETTER LLADEVANAGARI LETTER LLLADEVANAG" + + "ARI LETTER VADEVANAGARI LETTER SHADEVANAGARI LETTER SSADEVANAGARI LETTER" + + " SADEVANAGARI LETTER HADEVANAGARI VOWEL SIGN OEDEVANAGARI VOWEL SIGN OOE" + + "DEVANAGARI SIGN NUKTADEVANAGARI SIGN AVAGRAHADEVANAGARI VOWEL SIGN AADEV" + + "ANAGARI VOWEL SIGN IDEVANAGARI VOWEL SIGN IIDEVANAGARI VOWEL SIGN UDEVAN" + + "AGARI VOWEL SIGN UUDEVANAGARI VOWEL SIGN VOCALIC RDEVANAGARI VOWEL SIGN " + + "VOCALIC RRDEVANAGARI VOWEL SIGN CANDRA EDEVANAGARI VOWEL SIGN SHORT EDEV" + + "ANAGARI VOWEL SIGN EDEVANAGARI VOWEL SIGN AIDEVANAGARI VOWEL SIGN CANDRA" + + " ODEVANAGARI VOWEL SIGN SHORT ODEVANAGARI VOWEL SIGN ODEVANAGARI VOWEL S" + + "IGN AUDEVANAGARI SIGN VIRAMADEVANAGARI VOWEL SIGN PRISHTHAMATRA EDEVANAG" + + "ARI VOWEL SIGN AWDEVANAGARI OMDEVANAGARI STRESS SIGN UDATTADEVANAGARI ST" + + "RESS SIGN ANUDATTADEVANAGARI GRAVE ACCENTDEVANAGARI ACUTE ACCENTDEVANAGA" + + "RI VOWEL SIGN CANDRA LONG EDEVANAGARI VOWEL SIGN UEDEVANAGARI VOWEL SIGN" + + " UUEDEVANAGARI LETTER QADEVANAGARI LETTER KHHADEVANAGARI LETTER GHHADEVA" + + "NAGARI LETTER ZADEVANAGARI LETTER DDDHADEVANAGARI LETTER RHADEVANAGARI L" + + "ETTER FADEVANAGARI LETTER YYADEVANAGARI LETTER VOCALIC RRDEVANAGARI LETT" + + "ER VOCALIC LLDEVANAGARI VOWEL SIGN VOCALIC LDEVANAGARI VOWEL SIGN VOCALI" + + "C LLDEVANAGARI DANDADEVANAGARI DOUBLE DANDADEVANAGARI DIGIT ZERODEVANAGA" + + "RI DIGIT ONEDEVANAGARI DIGIT TWODEVANAGARI DIGIT THREEDEVANAGARI DIGIT F" + + "OURDEVANAGARI DIGIT FIVEDEVANAGARI DIGIT SIXDEVANAGARI DIGIT SEVENDEVANA" + + "GARI DIGIT EIGHTDEVANAGARI DIGIT NINEDEVANAGARI ABBREVIATION SIGNDEVANAG" + + "ARI SIGN HIGH SPACING DOTDEVANAGARI LETTER CANDRA ADEVANAGARI LETTER OED" + + "EVANAGARI LETTER OOEDEVANAGARI LETTER AWDEVANAGARI LETTER UEDEVANAGARI L" + + "ETTER UUEDEVANAGARI LETTER MARWARI DDADEVANAGARI LETTER ZHADEVANAGARI LE" + + "TTER HEAVY YADEVANAGARI LETTER GGADEVANAGARI LETTER JJADEVANAGARI LETTER" + + " GLOTTAL STOPDEVANAGARI LETTER DDDADEVANAGARI LETTER BBABENGALI ANJIBENG" + + "ALI SIGN CANDRABINDUBENGALI SIGN ANUSVARABENGALI SIGN VISARGABENGALI LET" + + "TER ABENGALI LETTER AABENGALI LETTER IBENGALI LETTER IIBENGALI LETTER UB" + + "ENGALI LETTER UUBENGALI LETTER VOCALIC RBENGALI LETTER VOCALIC LBENGALI " + + "LETTER EBENGALI LETTER AIBENGALI LETTER OBENGALI LETTER AUBENGALI LETTER" + + " KABENGALI LETTER KHABENGALI LETTER GABENGALI LETTER GHABENGALI LETTER N" + + "GABENGALI LETTER CABENGALI LETTER CHABENGALI LETTER JABENGALI LETTER JHA" + + "BENGALI LETTER NYABENGALI LETTER TTABENGALI LETTER TTHABENGALI LETTER DD" + + "ABENGALI LETTER DDHABENGALI LETTER NNABENGALI LETTER TABENGALI LETTER TH" + + "ABENGALI LETTER DABENGALI LETTER DHABENGALI LETTER NABENGALI LETTER PABE" + + "NGALI LETTER PHABENGALI LETTER BABENGALI LETTER BHABENGALI LETTER MABENG" + + "ALI LETTER YABENGALI LETTER RABENGALI LETTER LABENGALI LETTER SHABENGALI" + + " LETTER SSABENGALI LETTER SABENGALI LETTER HABENGALI SIGN NUKTABENGALI S" + + "IGN AVAGRAHABENGALI VOWEL SIGN AABENGALI VOWEL SIGN IBENGALI VOWEL SIGN " + + "IIBENGALI VOWEL SIGN UBENGALI VOWEL SIGN UUBENGALI VOWEL SIGN VOCALIC RB" + + "ENGALI VOWEL SIGN VOCALIC RRBENGALI VOWEL SIGN EBENGALI VOWEL SIGN AIBEN" + + "GALI VOWEL SIGN OBENGALI VOWEL SIGN AUBENGALI SIGN VIRAMABENGALI LETTER " + + "KHANDA TABENGALI AU LENGTH MARKBENGALI LETTER RRABENGALI LETTER RHABENGA" + + "LI LETTER YYABENGALI LETTER VOCALIC RRBENGALI LETTER VOCALIC LLBENGALI V" + + "OWEL SIGN VOCALIC LBENGALI VOWEL SIGN VOCALIC LLBENGALI DIGIT ZEROBENGAL" + + "I DIGIT ONEBENGALI DIGIT TWOBENGALI DIGIT THREEBENGALI DIGIT FOURBENGALI" + + " DIGIT FIVEBENGALI DIGIT SIXBENGALI DIGIT SEVENBENGALI DIGIT EIGHTBENGAL" + + "I DIGIT NINEBENGALI LETTER RA WITH MIDDLE DIAGONALBENGALI LETTER RA WITH" + + " LOWER DIAGONALBENGALI RUPEE MARKBENGALI RUPEE SIGNBENGALI CURRENCY NUME" + + "RATOR ONEBENGALI CURRENCY NUMERATOR TWOBENGALI CURRENCY NUMERATOR THREEB" + + "ENGALI CURRENCY NUMERATOR FOURBENGALI CURRENCY NUMERATOR ONE LESS THAN T" + + "HE DENOMINATORBENGALI CURRENCY DENOMINATOR SIXTEENBENGALI ISSHARBENGALI " + + "GANDA MARKGURMUKHI SIGN ADAK BINDIGURMUKHI SIGN BINDIGURMUKHI SIGN VISAR" + + "GAGURMUKHI LETTER AGURMUKHI LETTER AAGURMUKHI LETTER IGURMUKHI LETTER II" + + "GURMUKHI LETTER UGURMUKHI LETTER UUGURMUKHI LETTER EEGURMUKHI LETTER AIG" + + "URMUKHI LETTER OOGURMUKHI LETTER AUGURMUKHI LETTER KAGURMUKHI LETTER KHA" + + "GURMUKHI LETTER GAGURMUKHI LETTER GHAGURMUKHI LETTER NGAGURMUKHI LETTER " + + "CAGURMUKHI LETTER CHAGURMUKHI LETTER JAGURMUKHI LETTER JHAGURMUKHI LETTE" + + "R NYAGURMUKHI LETTER TTAGURMUKHI LETTER TTHAGURMUKHI LETTER DDAGURMUKHI " + + "LETTER DDHAGURMUKHI LETTER NNAGURMUKHI LETTER TAGURMUKHI LETTER THAGURMU" + + "KHI LETTER DAGURMUKHI LETTER DHAGURMUKHI LETTER NAGURMUKHI LETTER PAGURM" + + "UKHI LETTER PHAGURMUKHI LETTER BAGURMUKHI LETTER BHAGURMUKHI LETTER MAGU" + + "RMUKHI LETTER YAGURMUKHI LETTER RAGURMUKHI LETTER LAGURMUKHI LETTER LLAG" + + "URMUKHI LETTER VAGURMUKHI LETTER SHAGURMUKHI LETTER SAGURMUKHI LETTER HA") + ("" + + "GURMUKHI SIGN NUKTAGURMUKHI VOWEL SIGN AAGURMUKHI VOWEL SIGN IGURMUKHI V" + + "OWEL SIGN IIGURMUKHI VOWEL SIGN UGURMUKHI VOWEL SIGN UUGURMUKHI VOWEL SI" + + "GN EEGURMUKHI VOWEL SIGN AIGURMUKHI VOWEL SIGN OOGURMUKHI VOWEL SIGN AUG" + + "URMUKHI SIGN VIRAMAGURMUKHI SIGN UDAATGURMUKHI LETTER KHHAGURMUKHI LETTE" + + "R GHHAGURMUKHI LETTER ZAGURMUKHI LETTER RRAGURMUKHI LETTER FAGURMUKHI DI" + + "GIT ZEROGURMUKHI DIGIT ONEGURMUKHI DIGIT TWOGURMUKHI DIGIT THREEGURMUKHI" + + " DIGIT FOURGURMUKHI DIGIT FIVEGURMUKHI DIGIT SIXGURMUKHI DIGIT SEVENGURM" + + "UKHI DIGIT EIGHTGURMUKHI DIGIT NINEGURMUKHI TIPPIGURMUKHI ADDAKGURMUKHI " + + "IRIGURMUKHI URAGURMUKHI EK ONKARGURMUKHI SIGN YAKASHGUJARATI SIGN CANDRA" + + "BINDUGUJARATI SIGN ANUSVARAGUJARATI SIGN VISARGAGUJARATI LETTER AGUJARAT" + + "I LETTER AAGUJARATI LETTER IGUJARATI LETTER IIGUJARATI LETTER UGUJARATI " + + "LETTER UUGUJARATI LETTER VOCALIC RGUJARATI LETTER VOCALIC LGUJARATI VOWE" + + "L CANDRA EGUJARATI LETTER EGUJARATI LETTER AIGUJARATI VOWEL CANDRA OGUJA" + + "RATI LETTER OGUJARATI LETTER AUGUJARATI LETTER KAGUJARATI LETTER KHAGUJA" + + "RATI LETTER GAGUJARATI LETTER GHAGUJARATI LETTER NGAGUJARATI LETTER CAGU" + + "JARATI LETTER CHAGUJARATI LETTER JAGUJARATI LETTER JHAGUJARATI LETTER NY" + + "AGUJARATI LETTER TTAGUJARATI LETTER TTHAGUJARATI LETTER DDAGUJARATI LETT" + + "ER DDHAGUJARATI LETTER NNAGUJARATI LETTER TAGUJARATI LETTER THAGUJARATI " + + "LETTER DAGUJARATI LETTER DHAGUJARATI LETTER NAGUJARATI LETTER PAGUJARATI" + + " LETTER PHAGUJARATI LETTER BAGUJARATI LETTER BHAGUJARATI LETTER MAGUJARA" + + "TI LETTER YAGUJARATI LETTER RAGUJARATI LETTER LAGUJARATI LETTER LLAGUJAR" + + "ATI LETTER VAGUJARATI LETTER SHAGUJARATI LETTER SSAGUJARATI LETTER SAGUJ" + + "ARATI LETTER HAGUJARATI SIGN NUKTAGUJARATI SIGN AVAGRAHAGUJARATI VOWEL S" + + "IGN AAGUJARATI VOWEL SIGN IGUJARATI VOWEL SIGN IIGUJARATI VOWEL SIGN UGU" + + "JARATI VOWEL SIGN UUGUJARATI VOWEL SIGN VOCALIC RGUJARATI VOWEL SIGN VOC" + + "ALIC RRGUJARATI VOWEL SIGN CANDRA EGUJARATI VOWEL SIGN EGUJARATI VOWEL S" + + "IGN AIGUJARATI VOWEL SIGN CANDRA OGUJARATI VOWEL SIGN OGUJARATI VOWEL SI" + + "GN AUGUJARATI SIGN VIRAMAGUJARATI OMGUJARATI LETTER VOCALIC RRGUJARATI L" + + "ETTER VOCALIC LLGUJARATI VOWEL SIGN VOCALIC LGUJARATI VOWEL SIGN VOCALIC" + + " LLGUJARATI DIGIT ZEROGUJARATI DIGIT ONEGUJARATI DIGIT TWOGUJARATI DIGIT" + + " THREEGUJARATI DIGIT FOURGUJARATI DIGIT FIVEGUJARATI DIGIT SIXGUJARATI D" + + "IGIT SEVENGUJARATI DIGIT EIGHTGUJARATI DIGIT NINEGUJARATI ABBREVIATION S" + + "IGNGUJARATI RUPEE SIGNGUJARATI LETTER ZHAORIYA SIGN CANDRABINDUORIYA SIG" + + "N ANUSVARAORIYA SIGN VISARGAORIYA LETTER AORIYA LETTER AAORIYA LETTER IO" + + "RIYA LETTER IIORIYA LETTER UORIYA LETTER UUORIYA LETTER VOCALIC RORIYA L" + + "ETTER VOCALIC LORIYA LETTER EORIYA LETTER AIORIYA LETTER OORIYA LETTER A" + + "UORIYA LETTER KAORIYA LETTER KHAORIYA LETTER GAORIYA LETTER GHAORIYA LET" + + "TER NGAORIYA LETTER CAORIYA LETTER CHAORIYA LETTER JAORIYA LETTER JHAORI" + + "YA LETTER NYAORIYA LETTER TTAORIYA LETTER TTHAORIYA LETTER DDAORIYA LETT" + + "ER DDHAORIYA LETTER NNAORIYA LETTER TAORIYA LETTER THAORIYA LETTER DAORI" + + "YA LETTER DHAORIYA LETTER NAORIYA LETTER PAORIYA LETTER PHAORIYA LETTER " + + "BAORIYA LETTER BHAORIYA LETTER MAORIYA LETTER YAORIYA LETTER RAORIYA LET" + + "TER LAORIYA LETTER LLAORIYA LETTER VAORIYA LETTER SHAORIYA LETTER SSAORI" + + "YA LETTER SAORIYA LETTER HAORIYA SIGN NUKTAORIYA SIGN AVAGRAHAORIYA VOWE" + + "L SIGN AAORIYA VOWEL SIGN IORIYA VOWEL SIGN IIORIYA VOWEL SIGN UORIYA VO" + + "WEL SIGN UUORIYA VOWEL SIGN VOCALIC RORIYA VOWEL SIGN VOCALIC RRORIYA VO" + + "WEL SIGN EORIYA VOWEL SIGN AIORIYA VOWEL SIGN OORIYA VOWEL SIGN AUORIYA " + + "SIGN VIRAMAORIYA AI LENGTH MARKORIYA AU LENGTH MARKORIYA LETTER RRAORIYA" + + " LETTER RHAORIYA LETTER YYAORIYA LETTER VOCALIC RRORIYA LETTER VOCALIC L" + + "LORIYA VOWEL SIGN VOCALIC LORIYA VOWEL SIGN VOCALIC LLORIYA DIGIT ZEROOR" + + "IYA DIGIT ONEORIYA DIGIT TWOORIYA DIGIT THREEORIYA DIGIT FOURORIYA DIGIT" + + " FIVEORIYA DIGIT SIXORIYA DIGIT SEVENORIYA DIGIT EIGHTORIYA DIGIT NINEOR" + + "IYA ISSHARORIYA LETTER WAORIYA FRACTION ONE QUARTERORIYA FRACTION ONE HA" + + "LFORIYA FRACTION THREE QUARTERSORIYA FRACTION ONE SIXTEENTHORIYA FRACTIO" + + "N ONE EIGHTHORIYA FRACTION THREE SIXTEENTHSTAMIL SIGN ANUSVARATAMIL SIGN" + + " VISARGATAMIL LETTER ATAMIL LETTER AATAMIL LETTER ITAMIL LETTER IITAMIL " + + "LETTER UTAMIL LETTER UUTAMIL LETTER ETAMIL LETTER EETAMIL LETTER AITAMIL" + + " LETTER OTAMIL LETTER OOTAMIL LETTER AUTAMIL LETTER KATAMIL LETTER NGATA" + + "MIL LETTER CATAMIL LETTER JATAMIL LETTER NYATAMIL LETTER TTATAMIL LETTER" + + " NNATAMIL LETTER TATAMIL LETTER NATAMIL LETTER NNNATAMIL LETTER PATAMIL " + + "LETTER MATAMIL LETTER YATAMIL LETTER RATAMIL LETTER RRATAMIL LETTER LATA" + + "MIL LETTER LLATAMIL LETTER LLLATAMIL LETTER VATAMIL LETTER SHATAMIL LETT" + + "ER SSATAMIL LETTER SATAMIL LETTER HATAMIL VOWEL SIGN AATAMIL VOWEL SIGN " + + "ITAMIL VOWEL SIGN IITAMIL VOWEL SIGN UTAMIL VOWEL SIGN UUTAMIL VOWEL SIG") + ("" + + "N ETAMIL VOWEL SIGN EETAMIL VOWEL SIGN AITAMIL VOWEL SIGN OTAMIL VOWEL S" + + "IGN OOTAMIL VOWEL SIGN AUTAMIL SIGN VIRAMATAMIL OMTAMIL AU LENGTH MARKTA" + + "MIL DIGIT ZEROTAMIL DIGIT ONETAMIL DIGIT TWOTAMIL DIGIT THREETAMIL DIGIT" + + " FOURTAMIL DIGIT FIVETAMIL DIGIT SIXTAMIL DIGIT SEVENTAMIL DIGIT EIGHTTA" + + "MIL DIGIT NINETAMIL NUMBER TENTAMIL NUMBER ONE HUNDREDTAMIL NUMBER ONE T" + + "HOUSANDTAMIL DAY SIGNTAMIL MONTH SIGNTAMIL YEAR SIGNTAMIL DEBIT SIGNTAMI" + + "L CREDIT SIGNTAMIL AS ABOVE SIGNTAMIL RUPEE SIGNTAMIL NUMBER SIGNTELUGU " + + "SIGN COMBINING CANDRABINDU ABOVETELUGU SIGN CANDRABINDUTELUGU SIGN ANUSV" + + "ARATELUGU SIGN VISARGATELUGU LETTER ATELUGU LETTER AATELUGU LETTER ITELU" + + "GU LETTER IITELUGU LETTER UTELUGU LETTER UUTELUGU LETTER VOCALIC RTELUGU" + + " LETTER VOCALIC LTELUGU LETTER ETELUGU LETTER EETELUGU LETTER AITELUGU L" + + "ETTER OTELUGU LETTER OOTELUGU LETTER AUTELUGU LETTER KATELUGU LETTER KHA" + + "TELUGU LETTER GATELUGU LETTER GHATELUGU LETTER NGATELUGU LETTER CATELUGU" + + " LETTER CHATELUGU LETTER JATELUGU LETTER JHATELUGU LETTER NYATELUGU LETT" + + "ER TTATELUGU LETTER TTHATELUGU LETTER DDATELUGU LETTER DDHATELUGU LETTER" + + " NNATELUGU LETTER TATELUGU LETTER THATELUGU LETTER DATELUGU LETTER DHATE" + + "LUGU LETTER NATELUGU LETTER PATELUGU LETTER PHATELUGU LETTER BATELUGU LE" + + "TTER BHATELUGU LETTER MATELUGU LETTER YATELUGU LETTER RATELUGU LETTER RR" + + "ATELUGU LETTER LATELUGU LETTER LLATELUGU LETTER LLLATELUGU LETTER VATELU" + + "GU LETTER SHATELUGU LETTER SSATELUGU LETTER SATELUGU LETTER HATELUGU SIG" + + "N AVAGRAHATELUGU VOWEL SIGN AATELUGU VOWEL SIGN ITELUGU VOWEL SIGN IITEL" + + "UGU VOWEL SIGN UTELUGU VOWEL SIGN UUTELUGU VOWEL SIGN VOCALIC RTELUGU VO" + + "WEL SIGN VOCALIC RRTELUGU VOWEL SIGN ETELUGU VOWEL SIGN EETELUGU VOWEL S" + + "IGN AITELUGU VOWEL SIGN OTELUGU VOWEL SIGN OOTELUGU VOWEL SIGN AUTELUGU " + + "SIGN VIRAMATELUGU LENGTH MARKTELUGU AI LENGTH MARKTELUGU LETTER TSATELUG" + + "U LETTER DZATELUGU LETTER RRRATELUGU LETTER VOCALIC RRTELUGU LETTER VOCA" + + "LIC LLTELUGU VOWEL SIGN VOCALIC LTELUGU VOWEL SIGN VOCALIC LLTELUGU DIGI" + + "T ZEROTELUGU DIGIT ONETELUGU DIGIT TWOTELUGU DIGIT THREETELUGU DIGIT FOU" + + "RTELUGU DIGIT FIVETELUGU DIGIT SIXTELUGU DIGIT SEVENTELUGU DIGIT EIGHTTE" + + "LUGU DIGIT NINETELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOURTELUGU F" + + "RACTION DIGIT ONE FOR ODD POWERS OF FOURTELUGU FRACTION DIGIT TWO FOR OD" + + "D POWERS OF FOURTELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOURTELUGU" + + " FRACTION DIGIT ONE FOR EVEN POWERS OF FOURTELUGU FRACTION DIGIT TWO FOR" + + " EVEN POWERS OF FOURTELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOURT" + + "ELUGU SIGN TUUMUKANNADA SIGN SPACING CANDRABINDUKANNADA SIGN CANDRABINDU" + + "KANNADA SIGN ANUSVARAKANNADA SIGN VISARGAKANNADA LETTER AKANNADA LETTER " + + "AAKANNADA LETTER IKANNADA LETTER IIKANNADA LETTER UKANNADA LETTER UUKANN" + + "ADA LETTER VOCALIC RKANNADA LETTER VOCALIC LKANNADA LETTER EKANNADA LETT" + + "ER EEKANNADA LETTER AIKANNADA LETTER OKANNADA LETTER OOKANNADA LETTER AU" + + "KANNADA LETTER KAKANNADA LETTER KHAKANNADA LETTER GAKANNADA LETTER GHAKA" + + "NNADA LETTER NGAKANNADA LETTER CAKANNADA LETTER CHAKANNADA LETTER JAKANN" + + "ADA LETTER JHAKANNADA LETTER NYAKANNADA LETTER TTAKANNADA LETTER TTHAKAN" + + "NADA LETTER DDAKANNADA LETTER DDHAKANNADA LETTER NNAKANNADA LETTER TAKAN" + + "NADA LETTER THAKANNADA LETTER DAKANNADA LETTER DHAKANNADA LETTER NAKANNA" + + "DA LETTER PAKANNADA LETTER PHAKANNADA LETTER BAKANNADA LETTER BHAKANNADA" + + " LETTER MAKANNADA LETTER YAKANNADA LETTER RAKANNADA LETTER RRAKANNADA LE" + + "TTER LAKANNADA LETTER LLAKANNADA LETTER VAKANNADA LETTER SHAKANNADA LETT" + + "ER SSAKANNADA LETTER SAKANNADA LETTER HAKANNADA SIGN NUKTAKANNADA SIGN A" + + "VAGRAHAKANNADA VOWEL SIGN AAKANNADA VOWEL SIGN IKANNADA VOWEL SIGN IIKAN" + + "NADA VOWEL SIGN UKANNADA VOWEL SIGN UUKANNADA VOWEL SIGN VOCALIC RKANNAD" + + "A VOWEL SIGN VOCALIC RRKANNADA VOWEL SIGN EKANNADA VOWEL SIGN EEKANNADA " + + "VOWEL SIGN AIKANNADA VOWEL SIGN OKANNADA VOWEL SIGN OOKANNADA VOWEL SIGN" + + " AUKANNADA SIGN VIRAMAKANNADA LENGTH MARKKANNADA AI LENGTH MARKKANNADA L" + + "ETTER FAKANNADA LETTER VOCALIC RRKANNADA LETTER VOCALIC LLKANNADA VOWEL " + + "SIGN VOCALIC LKANNADA VOWEL SIGN VOCALIC LLKANNADA DIGIT ZEROKANNADA DIG" + + "IT ONEKANNADA DIGIT TWOKANNADA DIGIT THREEKANNADA DIGIT FOURKANNADA DIGI" + + "T FIVEKANNADA DIGIT SIXKANNADA DIGIT SEVENKANNADA DIGIT EIGHTKANNADA DIG" + + "IT NINEKANNADA SIGN JIHVAMULIYAKANNADA SIGN UPADHMANIYAMALAYALAM SIGN CA" + + "NDRABINDUMALAYALAM SIGN ANUSVARAMALAYALAM SIGN VISARGAMALAYALAM LETTER A" + + "MALAYALAM LETTER AAMALAYALAM LETTER IMALAYALAM LETTER IIMALAYALAM LETTER" + + " UMALAYALAM LETTER UUMALAYALAM LETTER VOCALIC RMALAYALAM LETTER VOCALIC " + + "LMALAYALAM LETTER EMALAYALAM LETTER EEMALAYALAM LETTER AIMALAYALAM LETTE" + + "R OMALAYALAM LETTER OOMALAYALAM LETTER AUMALAYALAM LETTER KAMALAYALAM LE" + + "TTER KHAMALAYALAM LETTER GAMALAYALAM LETTER GHAMALAYALAM LETTER NGAMALAY") + ("" + + "ALAM LETTER CAMALAYALAM LETTER CHAMALAYALAM LETTER JAMALAYALAM LETTER JH" + + "AMALAYALAM LETTER NYAMALAYALAM LETTER TTAMALAYALAM LETTER TTHAMALAYALAM " + + "LETTER DDAMALAYALAM LETTER DDHAMALAYALAM LETTER NNAMALAYALAM LETTER TAMA" + + "LAYALAM LETTER THAMALAYALAM LETTER DAMALAYALAM LETTER DHAMALAYALAM LETTE" + + "R NAMALAYALAM LETTER NNNAMALAYALAM LETTER PAMALAYALAM LETTER PHAMALAYALA" + + "M LETTER BAMALAYALAM LETTER BHAMALAYALAM LETTER MAMALAYALAM LETTER YAMAL" + + "AYALAM LETTER RAMALAYALAM LETTER RRAMALAYALAM LETTER LAMALAYALAM LETTER " + + "LLAMALAYALAM LETTER LLLAMALAYALAM LETTER VAMALAYALAM LETTER SHAMALAYALAM" + + " LETTER SSAMALAYALAM LETTER SAMALAYALAM LETTER HAMALAYALAM LETTER TTTAMA" + + "LAYALAM SIGN AVAGRAHAMALAYALAM VOWEL SIGN AAMALAYALAM VOWEL SIGN IMALAYA" + + "LAM VOWEL SIGN IIMALAYALAM VOWEL SIGN UMALAYALAM VOWEL SIGN UUMALAYALAM " + + "VOWEL SIGN VOCALIC RMALAYALAM VOWEL SIGN VOCALIC RRMALAYALAM VOWEL SIGN " + + "EMALAYALAM VOWEL SIGN EEMALAYALAM VOWEL SIGN AIMALAYALAM VOWEL SIGN OMAL" + + "AYALAM VOWEL SIGN OOMALAYALAM VOWEL SIGN AUMALAYALAM SIGN VIRAMAMALAYALA" + + "M LETTER DOT REPHMALAYALAM SIGN PARAMALAYALAM LETTER CHILLU MMALAYALAM L" + + "ETTER CHILLU YMALAYALAM LETTER CHILLU LLLMALAYALAM AU LENGTH MARKMALAYAL" + + "AM FRACTION ONE ONE-HUNDRED-AND-SIXTIETHMALAYALAM FRACTION ONE FORTIETHM" + + "ALAYALAM FRACTION THREE EIGHTIETHSMALAYALAM FRACTION ONE TWENTIETHMALAYA" + + "LAM FRACTION ONE TENTHMALAYALAM FRACTION THREE TWENTIETHSMALAYALAM FRACT" + + "ION ONE FIFTHMALAYALAM LETTER ARCHAIC IIMALAYALAM LETTER VOCALIC RRMALAY" + + "ALAM LETTER VOCALIC LLMALAYALAM VOWEL SIGN VOCALIC LMALAYALAM VOWEL SIGN" + + " VOCALIC LLMALAYALAM DIGIT ZEROMALAYALAM DIGIT ONEMALAYALAM DIGIT TWOMAL" + + "AYALAM DIGIT THREEMALAYALAM DIGIT FOURMALAYALAM DIGIT FIVEMALAYALAM DIGI" + + "T SIXMALAYALAM DIGIT SEVENMALAYALAM DIGIT EIGHTMALAYALAM DIGIT NINEMALAY" + + "ALAM NUMBER TENMALAYALAM NUMBER ONE HUNDREDMALAYALAM NUMBER ONE THOUSAND" + + "MALAYALAM FRACTION ONE QUARTERMALAYALAM FRACTION ONE HALFMALAYALAM FRACT" + + "ION THREE QUARTERSMALAYALAM FRACTION ONE SIXTEENTHMALAYALAM FRACTION ONE" + + " EIGHTHMALAYALAM FRACTION THREE SIXTEENTHSMALAYALAM DATE MARKMALAYALAM L" + + "ETTER CHILLU NNMALAYALAM LETTER CHILLU NMALAYALAM LETTER CHILLU RRMALAYA" + + "LAM LETTER CHILLU LMALAYALAM LETTER CHILLU LLMALAYALAM LETTER CHILLU KSI" + + "NHALA SIGN ANUSVARAYASINHALA SIGN VISARGAYASINHALA LETTER AYANNASINHALA " + + "LETTER AAYANNASINHALA LETTER AEYANNASINHALA LETTER AEEYANNASINHALA LETTE" + + "R IYANNASINHALA LETTER IIYANNASINHALA LETTER UYANNASINHALA LETTER UUYANN" + + "ASINHALA LETTER IRUYANNASINHALA LETTER IRUUYANNASINHALA LETTER ILUYANNAS" + + "INHALA LETTER ILUUYANNASINHALA LETTER EYANNASINHALA LETTER EEYANNASINHAL" + + "A LETTER AIYANNASINHALA LETTER OYANNASINHALA LETTER OOYANNASINHALA LETTE" + + "R AUYANNASINHALA LETTER ALPAPRAANA KAYANNASINHALA LETTER MAHAAPRAANA KAY" + + "ANNASINHALA LETTER ALPAPRAANA GAYANNASINHALA LETTER MAHAAPRAANA GAYANNAS" + + "INHALA LETTER KANTAJA NAASIKYAYASINHALA LETTER SANYAKA GAYANNASINHALA LE" + + "TTER ALPAPRAANA CAYANNASINHALA LETTER MAHAAPRAANA CAYANNASINHALA LETTER " + + "ALPAPRAANA JAYANNASINHALA LETTER MAHAAPRAANA JAYANNASINHALA LETTER TAALU" + + "JA NAASIKYAYASINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYASINHALA LETTER S" + + "ANYAKA JAYANNASINHALA LETTER ALPAPRAANA TTAYANNASINHALA LETTER MAHAAPRAA" + + "NA TTAYANNASINHALA LETTER ALPAPRAANA DDAYANNASINHALA LETTER MAHAAPRAANA " + + "DDAYANNASINHALA LETTER MUURDHAJA NAYANNASINHALA LETTER SANYAKA DDAYANNAS" + + "INHALA LETTER ALPAPRAANA TAYANNASINHALA LETTER MAHAAPRAANA TAYANNASINHAL" + + "A LETTER ALPAPRAANA DAYANNASINHALA LETTER MAHAAPRAANA DAYANNASINHALA LET" + + "TER DANTAJA NAYANNASINHALA LETTER SANYAKA DAYANNASINHALA LETTER ALPAPRAA" + + "NA PAYANNASINHALA LETTER MAHAAPRAANA PAYANNASINHALA LETTER ALPAPRAANA BA" + + "YANNASINHALA LETTER MAHAAPRAANA BAYANNASINHALA LETTER MAYANNASINHALA LET" + + "TER AMBA BAYANNASINHALA LETTER YAYANNASINHALA LETTER RAYANNASINHALA LETT" + + "ER DANTAJA LAYANNASINHALA LETTER VAYANNASINHALA LETTER TAALUJA SAYANNASI" + + "NHALA LETTER MUURDHAJA SAYANNASINHALA LETTER DANTAJA SAYANNASINHALA LETT" + + "ER HAYANNASINHALA LETTER MUURDHAJA LAYANNASINHALA LETTER FAYANNASINHALA " + + "SIGN AL-LAKUNASINHALA VOWEL SIGN AELA-PILLASINHALA VOWEL SIGN KETTI AEDA" + + "-PILLASINHALA VOWEL SIGN DIGA AEDA-PILLASINHALA VOWEL SIGN KETTI IS-PILL" + + "ASINHALA VOWEL SIGN DIGA IS-PILLASINHALA VOWEL SIGN KETTI PAA-PILLASINHA" + + "LA VOWEL SIGN DIGA PAA-PILLASINHALA VOWEL SIGN GAETTA-PILLASINHALA VOWEL" + + " SIGN KOMBUVASINHALA VOWEL SIGN DIGA KOMBUVASINHALA VOWEL SIGN KOMBU DEK" + + "ASINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLASINHALA VOWEL SIGN KOMBUVA HAA" + + " DIGA AELA-PILLASINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTASINHALA VOWEL " + + "SIGN GAYANUKITTASINHALA LITH DIGIT ZEROSINHALA LITH DIGIT ONESINHALA LIT" + + "H DIGIT TWOSINHALA LITH DIGIT THREESINHALA LITH DIGIT FOURSINHALA LITH D" + + "IGIT FIVESINHALA LITH DIGIT SIXSINHALA LITH DIGIT SEVENSINHALA LITH DIGI") + ("" + + "T EIGHTSINHALA LITH DIGIT NINESINHALA VOWEL SIGN DIGA GAETTA-PILLASINHAL" + + "A VOWEL SIGN DIGA GAYANUKITTASINHALA PUNCTUATION KUNDDALIYATHAI CHARACTE" + + "R KO KAITHAI CHARACTER KHO KHAITHAI CHARACTER KHO KHUATTHAI CHARACTER KH" + + "O KHWAITHAI CHARACTER KHO KHONTHAI CHARACTER KHO RAKHANGTHAI CHARACTER N" + + "GO NGUTHAI CHARACTER CHO CHANTHAI CHARACTER CHO CHINGTHAI CHARACTER CHO " + + "CHANGTHAI CHARACTER SO SOTHAI CHARACTER CHO CHOETHAI CHARACTER YO YINGTH" + + "AI CHARACTER DO CHADATHAI CHARACTER TO PATAKTHAI CHARACTER THO THANTHAI " + + "CHARACTER THO NANGMONTHOTHAI CHARACTER THO PHUTHAOTHAI CHARACTER NO NENT" + + "HAI CHARACTER DO DEKTHAI CHARACTER TO TAOTHAI CHARACTER THO THUNGTHAI CH" + + "ARACTER THO THAHANTHAI CHARACTER THO THONGTHAI CHARACTER NO NUTHAI CHARA" + + "CTER BO BAIMAITHAI CHARACTER PO PLATHAI CHARACTER PHO PHUNGTHAI CHARACTE" + + "R FO FATHAI CHARACTER PHO PHANTHAI CHARACTER FO FANTHAI CHARACTER PHO SA" + + "MPHAOTHAI CHARACTER MO MATHAI CHARACTER YO YAKTHAI CHARACTER RO RUATHAI " + + "CHARACTER RUTHAI CHARACTER LO LINGTHAI CHARACTER LUTHAI CHARACTER WO WAE" + + "NTHAI CHARACTER SO SALATHAI CHARACTER SO RUSITHAI CHARACTER SO SUATHAI C" + + "HARACTER HO HIPTHAI CHARACTER LO CHULATHAI CHARACTER O ANGTHAI CHARACTER" + + " HO NOKHUKTHAI CHARACTER PAIYANNOITHAI CHARACTER SARA ATHAI CHARACTER MA" + + "I HAN-AKATTHAI CHARACTER SARA AATHAI CHARACTER SARA AMTHAI CHARACTER SAR" + + "A ITHAI CHARACTER SARA IITHAI CHARACTER SARA UETHAI CHARACTER SARA UEETH" + + "AI CHARACTER SARA UTHAI CHARACTER SARA UUTHAI CHARACTER PHINTHUTHAI CURR" + + "ENCY SYMBOL BAHTTHAI CHARACTER SARA ETHAI CHARACTER SARA AETHAI CHARACTE" + + "R SARA OTHAI CHARACTER SARA AI MAIMUANTHAI CHARACTER SARA AI MAIMALAITHA" + + "I CHARACTER LAKKHANGYAOTHAI CHARACTER MAIYAMOKTHAI CHARACTER MAITAIKHUTH" + + "AI CHARACTER MAI EKTHAI CHARACTER MAI THOTHAI CHARACTER MAI TRITHAI CHAR" + + "ACTER MAI CHATTAWATHAI CHARACTER THANTHAKHATTHAI CHARACTER NIKHAHITTHAI " + + "CHARACTER YAMAKKANTHAI CHARACTER FONGMANTHAI DIGIT ZEROTHAI DIGIT ONETHA" + + "I DIGIT TWOTHAI DIGIT THREETHAI DIGIT FOURTHAI DIGIT FIVETHAI DIGIT SIXT" + + "HAI DIGIT SEVENTHAI DIGIT EIGHTTHAI DIGIT NINETHAI CHARACTER ANGKHANKHUT" + + "HAI CHARACTER KHOMUTLAO LETTER KOLAO LETTER KHO SUNGLAO LETTER KHO TAMLA" + + "O LETTER NGOLAO LETTER COLAO LETTER SO TAMLAO LETTER NYOLAO LETTER DOLAO" + + " LETTER TOLAO LETTER THO SUNGLAO LETTER THO TAMLAO LETTER NOLAO LETTER B" + + "OLAO LETTER POLAO LETTER PHO SUNGLAO LETTER FO TAMLAO LETTER PHO TAMLAO " + + "LETTER FO SUNGLAO LETTER MOLAO LETTER YOLAO LETTER LO LINGLAO LETTER LO " + + "LOOTLAO LETTER WOLAO LETTER SO SUNGLAO LETTER HO SUNGLAO LETTER OLAO LET" + + "TER HO TAMLAO ELLIPSISLAO VOWEL SIGN ALAO VOWEL SIGN MAI KANLAO VOWEL SI" + + "GN AALAO VOWEL SIGN AMLAO VOWEL SIGN ILAO VOWEL SIGN IILAO VOWEL SIGN YL" + + "AO VOWEL SIGN YYLAO VOWEL SIGN ULAO VOWEL SIGN UULAO VOWEL SIGN MAI KONL" + + "AO SEMIVOWEL SIGN LOLAO SEMIVOWEL SIGN NYOLAO VOWEL SIGN ELAO VOWEL SIGN" + + " EILAO VOWEL SIGN OLAO VOWEL SIGN AYLAO VOWEL SIGN AILAO KO LALAO TONE M" + + "AI EKLAO TONE MAI THOLAO TONE MAI TILAO TONE MAI CATAWALAO CANCELLATION " + + "MARKLAO NIGGAHITALAO DIGIT ZEROLAO DIGIT ONELAO DIGIT TWOLAO DIGIT THREE" + + "LAO DIGIT FOURLAO DIGIT FIVELAO DIGIT SIXLAO DIGIT SEVENLAO DIGIT EIGHTL" + + "AO DIGIT NINELAO HO NOLAO HO MOLAO LETTER KHMU GOLAO LETTER KHMU NYOTIBE" + + "TAN SYLLABLE OMTIBETAN MARK GTER YIG MGO TRUNCATED ATIBETAN MARK GTER YI" + + "G MGO -UM RNAM BCAD MATIBETAN MARK GTER YIG MGO -UM GTER TSHEG MATIBETAN" + + " MARK INITIAL YIG MGO MDUN MATIBETAN MARK CLOSING YIG MGO SGAB MATIBETAN" + + " MARK CARET YIG MGO PHUR SHAD MATIBETAN MARK YIG MGO TSHEG SHAD MATIBETA" + + "N MARK SBRUL SHADTIBETAN MARK BSKUR YIG MGOTIBETAN MARK BKA- SHOG YIG MG" + + "OTIBETAN MARK INTERSYLLABIC TSHEGTIBETAN MARK DELIMITER TSHEG BSTARTIBET" + + "AN MARK SHADTIBETAN MARK NYIS SHADTIBETAN MARK TSHEG SHADTIBETAN MARK NY" + + "IS TSHEG SHADTIBETAN MARK RIN CHEN SPUNGS SHADTIBETAN MARK RGYA GRAM SHA" + + "DTIBETAN MARK CARET -DZUD RTAGS ME LONG CANTIBETAN MARK GTER TSHEGTIBETA" + + "N LOGOTYPE SIGN CHAD RTAGSTIBETAN LOGOTYPE SIGN LHAG RTAGSTIBETAN ASTROL" + + "OGICAL SIGN SGRA GCAN -CHAR RTAGSTIBETAN ASTROLOGICAL SIGN -KHYUD PATIBE" + + "TAN ASTROLOGICAL SIGN SDONG TSHUGSTIBETAN SIGN RDEL DKAR GCIGTIBETAN SIG" + + "N RDEL DKAR GNYISTIBETAN SIGN RDEL DKAR GSUMTIBETAN SIGN RDEL NAG GCIGTI" + + "BETAN SIGN RDEL NAG GNYISTIBETAN SIGN RDEL DKAR RDEL NAGTIBETAN DIGIT ZE" + + "ROTIBETAN DIGIT ONETIBETAN DIGIT TWOTIBETAN DIGIT THREETIBETAN DIGIT FOU" + + "RTIBETAN DIGIT FIVETIBETAN DIGIT SIXTIBETAN DIGIT SEVENTIBETAN DIGIT EIG" + + "HTTIBETAN DIGIT NINETIBETAN DIGIT HALF ONETIBETAN DIGIT HALF TWOTIBETAN " + + "DIGIT HALF THREETIBETAN DIGIT HALF FOURTIBETAN DIGIT HALF FIVETIBETAN DI" + + "GIT HALF SIXTIBETAN DIGIT HALF SEVENTIBETAN DIGIT HALF EIGHTTIBETAN DIGI" + + "T HALF NINETIBETAN DIGIT HALF ZEROTIBETAN MARK BSDUS RTAGSTIBETAN MARK N" + + "GAS BZUNG NYI ZLATIBETAN MARK CARET -DZUD RTAGS BZHI MIG CANTIBETAN MARK") + ("" + + " NGAS BZUNG SGOR RTAGSTIBETAN MARK CHE MGOTIBETAN MARK TSA -PHRUTIBETAN " + + "MARK GUG RTAGS GYONTIBETAN MARK GUG RTAGS GYASTIBETAN MARK ANG KHANG GYO" + + "NTIBETAN MARK ANG KHANG GYASTIBETAN SIGN YAR TSHESTIBETAN SIGN MAR TSHES" + + "TIBETAN LETTER KATIBETAN LETTER KHATIBETAN LETTER GATIBETAN LETTER GHATI" + + "BETAN LETTER NGATIBETAN LETTER CATIBETAN LETTER CHATIBETAN LETTER JATIBE" + + "TAN LETTER NYATIBETAN LETTER TTATIBETAN LETTER TTHATIBETAN LETTER DDATIB" + + "ETAN LETTER DDHATIBETAN LETTER NNATIBETAN LETTER TATIBETAN LETTER THATIB" + + "ETAN LETTER DATIBETAN LETTER DHATIBETAN LETTER NATIBETAN LETTER PATIBETA" + + "N LETTER PHATIBETAN LETTER BATIBETAN LETTER BHATIBETAN LETTER MATIBETAN " + + "LETTER TSATIBETAN LETTER TSHATIBETAN LETTER DZATIBETAN LETTER DZHATIBETA" + + "N LETTER WATIBETAN LETTER ZHATIBETAN LETTER ZATIBETAN LETTER -ATIBETAN L" + + "ETTER YATIBETAN LETTER RATIBETAN LETTER LATIBETAN LETTER SHATIBETAN LETT" + + "ER SSATIBETAN LETTER SATIBETAN LETTER HATIBETAN LETTER ATIBETAN LETTER K" + + "SSATIBETAN LETTER FIXED-FORM RATIBETAN LETTER KKATIBETAN LETTER RRATIBET" + + "AN VOWEL SIGN AATIBETAN VOWEL SIGN ITIBETAN VOWEL SIGN IITIBETAN VOWEL S" + + "IGN UTIBETAN VOWEL SIGN UUTIBETAN VOWEL SIGN VOCALIC RTIBETAN VOWEL SIGN" + + " VOCALIC RRTIBETAN VOWEL SIGN VOCALIC LTIBETAN VOWEL SIGN VOCALIC LLTIBE" + + "TAN VOWEL SIGN ETIBETAN VOWEL SIGN EETIBETAN VOWEL SIGN OTIBETAN VOWEL S" + + "IGN OOTIBETAN SIGN RJES SU NGA ROTIBETAN SIGN RNAM BCADTIBETAN VOWEL SIG" + + "N REVERSED ITIBETAN VOWEL SIGN REVERSED IITIBETAN SIGN NYI ZLA NAA DATIB" + + "ETAN SIGN SNA LDANTIBETAN MARK HALANTATIBETAN MARK PALUTATIBETAN SIGN LC" + + "I RTAGSTIBETAN SIGN YANG RTAGSTIBETAN SIGN LCE TSA CANTIBETAN SIGN MCHU " + + "CANTIBETAN SIGN GRU CAN RGYINGSTIBETAN SIGN GRU MED RGYINGSTIBETAN SIGN " + + "INVERTED MCHU CANTIBETAN SUBJOINED SIGN LCE TSA CANTIBETAN SUBJOINED SIG" + + "N MCHU CANTIBETAN SUBJOINED SIGN INVERTED MCHU CANTIBETAN SUBJOINED LETT" + + "ER KATIBETAN SUBJOINED LETTER KHATIBETAN SUBJOINED LETTER GATIBETAN SUBJ" + + "OINED LETTER GHATIBETAN SUBJOINED LETTER NGATIBETAN SUBJOINED LETTER CAT" + + "IBETAN SUBJOINED LETTER CHATIBETAN SUBJOINED LETTER JATIBETAN SUBJOINED " + + "LETTER NYATIBETAN SUBJOINED LETTER TTATIBETAN SUBJOINED LETTER TTHATIBET" + + "AN SUBJOINED LETTER DDATIBETAN SUBJOINED LETTER DDHATIBETAN SUBJOINED LE" + + "TTER NNATIBETAN SUBJOINED LETTER TATIBETAN SUBJOINED LETTER THATIBETAN S" + + "UBJOINED LETTER DATIBETAN SUBJOINED LETTER DHATIBETAN SUBJOINED LETTER N" + + "ATIBETAN SUBJOINED LETTER PATIBETAN SUBJOINED LETTER PHATIBETAN SUBJOINE" + + "D LETTER BATIBETAN SUBJOINED LETTER BHATIBETAN SUBJOINED LETTER MATIBETA" + + "N SUBJOINED LETTER TSATIBETAN SUBJOINED LETTER TSHATIBETAN SUBJOINED LET" + + "TER DZATIBETAN SUBJOINED LETTER DZHATIBETAN SUBJOINED LETTER WATIBETAN S" + + "UBJOINED LETTER ZHATIBETAN SUBJOINED LETTER ZATIBETAN SUBJOINED LETTER -" + + "ATIBETAN SUBJOINED LETTER YATIBETAN SUBJOINED LETTER RATIBETAN SUBJOINED" + + " LETTER LATIBETAN SUBJOINED LETTER SHATIBETAN SUBJOINED LETTER SSATIBETA" + + "N SUBJOINED LETTER SATIBETAN SUBJOINED LETTER HATIBETAN SUBJOINED LETTER" + + " ATIBETAN SUBJOINED LETTER KSSATIBETAN SUBJOINED LETTER FIXED-FORM WATIB" + + "ETAN SUBJOINED LETTER FIXED-FORM YATIBETAN SUBJOINED LETTER FIXED-FORM R" + + "ATIBETAN KU RU KHATIBETAN KU RU KHA BZHI MIG CANTIBETAN CANTILLATION SIG" + + "N HEAVY BEATTIBETAN CANTILLATION SIGN LIGHT BEATTIBETAN CANTILLATION SIG" + + "N CANG TE-UTIBETAN CANTILLATION SIGN SBUB -CHALTIBETAN SYMBOL DRIL BUTIB" + + "ETAN SYMBOL RDO RJETIBETAN SYMBOL PADMA GDANTIBETAN SYMBOL RDO RJE RGYA " + + "GRAMTIBETAN SYMBOL PHUR PATIBETAN SYMBOL NOR BUTIBETAN SYMBOL NOR BU NYI" + + "S -KHYILTIBETAN SYMBOL NOR BU GSUM -KHYILTIBETAN SYMBOL NOR BU BZHI -KHY" + + "ILTIBETAN SIGN RDEL NAG RDEL DKARTIBETAN SIGN RDEL NAG GSUMTIBETAN MARK " + + "BSKA- SHOG GI MGO RGYANTIBETAN MARK MNYAM YIG GI MGO RGYANTIBETAN MARK N" + + "YIS TSHEGTIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MATIBETAN MARK CL" + + "OSING BRDA RNYING YIG MGO SGAB MARIGHT-FACING SVASTI SIGNLEFT-FACING SVA" + + "STI SIGNRIGHT-FACING SVASTI SIGN WITH DOTSLEFT-FACING SVASTI SIGN WITH D" + + "OTSTIBETAN MARK LEADING MCHAN RTAGSTIBETAN MARK TRAILING MCHAN RTAGSMYAN" + + "MAR LETTER KAMYANMAR LETTER KHAMYANMAR LETTER GAMYANMAR LETTER GHAMYANMA" + + "R LETTER NGAMYANMAR LETTER CAMYANMAR LETTER CHAMYANMAR LETTER JAMYANMAR " + + "LETTER JHAMYANMAR LETTER NYAMYANMAR LETTER NNYAMYANMAR LETTER TTAMYANMAR" + + " LETTER TTHAMYANMAR LETTER DDAMYANMAR LETTER DDHAMYANMAR LETTER NNAMYANM" + + "AR LETTER TAMYANMAR LETTER THAMYANMAR LETTER DAMYANMAR LETTER DHAMYANMAR" + + " LETTER NAMYANMAR LETTER PAMYANMAR LETTER PHAMYANMAR LETTER BAMYANMAR LE" + + "TTER BHAMYANMAR LETTER MAMYANMAR LETTER YAMYANMAR LETTER RAMYANMAR LETTE" + + "R LAMYANMAR LETTER WAMYANMAR LETTER SAMYANMAR LETTER HAMYANMAR LETTER LL" + + "AMYANMAR LETTER AMYANMAR LETTER SHAN AMYANMAR LETTER IMYANMAR LETTER IIM" + + "YANMAR LETTER UMYANMAR LETTER UUMYANMAR LETTER EMYANMAR LETTER MON EMYAN") + ("" + + "MAR LETTER OMYANMAR LETTER AUMYANMAR VOWEL SIGN TALL AAMYANMAR VOWEL SIG" + + "N AAMYANMAR VOWEL SIGN IMYANMAR VOWEL SIGN IIMYANMAR VOWEL SIGN UMYANMAR" + + " VOWEL SIGN UUMYANMAR VOWEL SIGN EMYANMAR VOWEL SIGN AIMYANMAR VOWEL SIG" + + "N MON IIMYANMAR VOWEL SIGN MON OMYANMAR VOWEL SIGN E ABOVEMYANMAR SIGN A" + + "NUSVARAMYANMAR SIGN DOT BELOWMYANMAR SIGN VISARGAMYANMAR SIGN VIRAMAMYAN" + + "MAR SIGN ASATMYANMAR CONSONANT SIGN MEDIAL YAMYANMAR CONSONANT SIGN MEDI" + + "AL RAMYANMAR CONSONANT SIGN MEDIAL WAMYANMAR CONSONANT SIGN MEDIAL HAMYA" + + "NMAR LETTER GREAT SAMYANMAR DIGIT ZEROMYANMAR DIGIT ONEMYANMAR DIGIT TWO" + + "MYANMAR DIGIT THREEMYANMAR DIGIT FOURMYANMAR DIGIT FIVEMYANMAR DIGIT SIX" + + "MYANMAR DIGIT SEVENMYANMAR DIGIT EIGHTMYANMAR DIGIT NINEMYANMAR SIGN LIT" + + "TLE SECTIONMYANMAR SIGN SECTIONMYANMAR SYMBOL LOCATIVEMYANMAR SYMBOL COM" + + "PLETEDMYANMAR SYMBOL AFOREMENTIONEDMYANMAR SYMBOL GENITIVEMYANMAR LETTER" + + " SHAMYANMAR LETTER SSAMYANMAR LETTER VOCALIC RMYANMAR LETTER VOCALIC RRM" + + "YANMAR LETTER VOCALIC LMYANMAR LETTER VOCALIC LLMYANMAR VOWEL SIGN VOCAL" + + "IC RMYANMAR VOWEL SIGN VOCALIC RRMYANMAR VOWEL SIGN VOCALIC LMYANMAR VOW" + + "EL SIGN VOCALIC LLMYANMAR LETTER MON NGAMYANMAR LETTER MON JHAMYANMAR LE" + + "TTER MON BBAMYANMAR LETTER MON BBEMYANMAR CONSONANT SIGN MON MEDIAL NAMY" + + "ANMAR CONSONANT SIGN MON MEDIAL MAMYANMAR CONSONANT SIGN MON MEDIAL LAMY" + + "ANMAR LETTER SGAW KAREN SHAMYANMAR VOWEL SIGN SGAW KAREN EUMYANMAR TONE " + + "MARK SGAW KAREN HATHIMYANMAR TONE MARK SGAW KAREN KE PHOMYANMAR LETTER W" + + "ESTERN PWO KAREN THAMYANMAR LETTER WESTERN PWO KAREN PWAMYANMAR VOWEL SI" + + "GN WESTERN PWO KAREN EUMYANMAR VOWEL SIGN WESTERN PWO KAREN UEMYANMAR SI" + + "GN WESTERN PWO KAREN TONE-1MYANMAR SIGN WESTERN PWO KAREN TONE-2MYANMAR " + + "SIGN WESTERN PWO KAREN TONE-3MYANMAR SIGN WESTERN PWO KAREN TONE-4MYANMA" + + "R SIGN WESTERN PWO KAREN TONE-5MYANMAR LETTER EASTERN PWO KAREN NNAMYANM" + + "AR LETTER EASTERN PWO KAREN YWAMYANMAR LETTER EASTERN PWO KAREN GHWAMYAN" + + "MAR VOWEL SIGN GEBA KAREN IMYANMAR VOWEL SIGN KAYAH OEMYANMAR VOWEL SIGN" + + " KAYAH UMYANMAR VOWEL SIGN KAYAH EEMYANMAR LETTER SHAN KAMYANMAR LETTER " + + "SHAN KHAMYANMAR LETTER SHAN GAMYANMAR LETTER SHAN CAMYANMAR LETTER SHAN " + + "ZAMYANMAR LETTER SHAN NYAMYANMAR LETTER SHAN DAMYANMAR LETTER SHAN NAMYA" + + "NMAR LETTER SHAN PHAMYANMAR LETTER SHAN FAMYANMAR LETTER SHAN BAMYANMAR " + + "LETTER SHAN THAMYANMAR LETTER SHAN HAMYANMAR CONSONANT SIGN SHAN MEDIAL " + + "WAMYANMAR VOWEL SIGN SHAN AAMYANMAR VOWEL SIGN SHAN EMYANMAR VOWEL SIGN " + + "SHAN E ABOVEMYANMAR VOWEL SIGN SHAN FINAL YMYANMAR SIGN SHAN TONE-2MYANM" + + "AR SIGN SHAN TONE-3MYANMAR SIGN SHAN TONE-5MYANMAR SIGN SHAN TONE-6MYANM" + + "AR SIGN SHAN COUNCIL TONE-2MYANMAR SIGN SHAN COUNCIL TONE-3MYANMAR SIGN " + + "SHAN COUNCIL EMPHATIC TONEMYANMAR LETTER RUMAI PALAUNG FAMYANMAR SIGN RU" + + "MAI PALAUNG TONE-5MYANMAR SHAN DIGIT ZEROMYANMAR SHAN DIGIT ONEMYANMAR S" + + "HAN DIGIT TWOMYANMAR SHAN DIGIT THREEMYANMAR SHAN DIGIT FOURMYANMAR SHAN" + + " DIGIT FIVEMYANMAR SHAN DIGIT SIXMYANMAR SHAN DIGIT SEVENMYANMAR SHAN DI" + + "GIT EIGHTMYANMAR SHAN DIGIT NINEMYANMAR SIGN KHAMTI TONE-1MYANMAR SIGN K" + + "HAMTI TONE-3MYANMAR VOWEL SIGN AITON AMYANMAR VOWEL SIGN AITON AIMYANMAR" + + " SYMBOL SHAN ONEMYANMAR SYMBOL SHAN EXCLAMATIONGEORGIAN CAPITAL LETTER A" + + "NGEORGIAN CAPITAL LETTER BANGEORGIAN CAPITAL LETTER GANGEORGIAN CAPITAL " + + "LETTER DONGEORGIAN CAPITAL LETTER ENGEORGIAN CAPITAL LETTER VINGEORGIAN " + + "CAPITAL LETTER ZENGEORGIAN CAPITAL LETTER TANGEORGIAN CAPITAL LETTER ING" + + "EORGIAN CAPITAL LETTER KANGEORGIAN CAPITAL LETTER LASGEORGIAN CAPITAL LE" + + "TTER MANGEORGIAN CAPITAL LETTER NARGEORGIAN CAPITAL LETTER ONGEORGIAN CA" + + "PITAL LETTER PARGEORGIAN CAPITAL LETTER ZHARGEORGIAN CAPITAL LETTER RAEG" + + "EORGIAN CAPITAL LETTER SANGEORGIAN CAPITAL LETTER TARGEORGIAN CAPITAL LE" + + "TTER UNGEORGIAN CAPITAL LETTER PHARGEORGIAN CAPITAL LETTER KHARGEORGIAN " + + "CAPITAL LETTER GHANGEORGIAN CAPITAL LETTER QARGEORGIAN CAPITAL LETTER SH" + + "INGEORGIAN CAPITAL LETTER CHINGEORGIAN CAPITAL LETTER CANGEORGIAN CAPITA" + + "L LETTER JILGEORGIAN CAPITAL LETTER CILGEORGIAN CAPITAL LETTER CHARGEORG" + + "IAN CAPITAL LETTER XANGEORGIAN CAPITAL LETTER JHANGEORGIAN CAPITAL LETTE" + + "R HAEGEORGIAN CAPITAL LETTER HEGEORGIAN CAPITAL LETTER HIEGEORGIAN CAPIT" + + "AL LETTER WEGEORGIAN CAPITAL LETTER HARGEORGIAN CAPITAL LETTER HOEGEORGI" + + "AN CAPITAL LETTER YNGEORGIAN CAPITAL LETTER AENGEORGIAN LETTER ANGEORGIA" + + "N LETTER BANGEORGIAN LETTER GANGEORGIAN LETTER DONGEORGIAN LETTER ENGEOR" + + "GIAN LETTER VINGEORGIAN LETTER ZENGEORGIAN LETTER TANGEORGIAN LETTER ING" + + "EORGIAN LETTER KANGEORGIAN LETTER LASGEORGIAN LETTER MANGEORGIAN LETTER " + + "NARGEORGIAN LETTER ONGEORGIAN LETTER PARGEORGIAN LETTER ZHARGEORGIAN LET" + + "TER RAEGEORGIAN LETTER SANGEORGIAN LETTER TARGEORGIAN LETTER UNGEORGIAN " + + "LETTER PHARGEORGIAN LETTER KHARGEORGIAN LETTER GHANGEORGIAN LETTER QARGE") + ("" + + "ORGIAN LETTER SHINGEORGIAN LETTER CHINGEORGIAN LETTER CANGEORGIAN LETTER" + + " JILGEORGIAN LETTER CILGEORGIAN LETTER CHARGEORGIAN LETTER XANGEORGIAN L" + + "ETTER JHANGEORGIAN LETTER HAEGEORGIAN LETTER HEGEORGIAN LETTER HIEGEORGI" + + "AN LETTER WEGEORGIAN LETTER HARGEORGIAN LETTER HOEGEORGIAN LETTER FIGEOR" + + "GIAN LETTER YNGEORGIAN LETTER ELIFIGEORGIAN LETTER TURNED GANGEORGIAN LE" + + "TTER AINGEORGIAN PARAGRAPH SEPARATORMODIFIER LETTER GEORGIAN NARGEORGIAN" + + " LETTER AENGEORGIAN LETTER HARD SIGNGEORGIAN LETTER LABIAL SIGNHANGUL CH" + + "OSEONG KIYEOKHANGUL CHOSEONG SSANGKIYEOKHANGUL CHOSEONG NIEUNHANGUL CHOS" + + "EONG TIKEUTHANGUL CHOSEONG SSANGTIKEUTHANGUL CHOSEONG RIEULHANGUL CHOSEO" + + "NG MIEUMHANGUL CHOSEONG PIEUPHANGUL CHOSEONG SSANGPIEUPHANGUL CHOSEONG S" + + "IOSHANGUL CHOSEONG SSANGSIOSHANGUL CHOSEONG IEUNGHANGUL CHOSEONG CIEUCHA" + + "NGUL CHOSEONG SSANGCIEUCHANGUL CHOSEONG CHIEUCHHANGUL CHOSEONG KHIEUKHHA" + + "NGUL CHOSEONG THIEUTHHANGUL CHOSEONG PHIEUPHHANGUL CHOSEONG HIEUHHANGUL " + + "CHOSEONG NIEUN-KIYEOKHANGUL CHOSEONG SSANGNIEUNHANGUL CHOSEONG NIEUN-TIK" + + "EUTHANGUL CHOSEONG NIEUN-PIEUPHANGUL CHOSEONG TIKEUT-KIYEOKHANGUL CHOSEO" + + "NG RIEUL-NIEUNHANGUL CHOSEONG SSANGRIEULHANGUL CHOSEONG RIEUL-HIEUHHANGU" + + "L CHOSEONG KAPYEOUNRIEULHANGUL CHOSEONG MIEUM-PIEUPHANGUL CHOSEONG KAPYE" + + "OUNMIEUMHANGUL CHOSEONG PIEUP-KIYEOKHANGUL CHOSEONG PIEUP-NIEUNHANGUL CH" + + "OSEONG PIEUP-TIKEUTHANGUL CHOSEONG PIEUP-SIOSHANGUL CHOSEONG PIEUP-SIOS-" + + "KIYEOKHANGUL CHOSEONG PIEUP-SIOS-TIKEUTHANGUL CHOSEONG PIEUP-SIOS-PIEUPH" + + "ANGUL CHOSEONG PIEUP-SSANGSIOSHANGUL CHOSEONG PIEUP-SIOS-CIEUCHANGUL CHO" + + "SEONG PIEUP-CIEUCHANGUL CHOSEONG PIEUP-CHIEUCHHANGUL CHOSEONG PIEUP-THIE" + + "UTHHANGUL CHOSEONG PIEUP-PHIEUPHHANGUL CHOSEONG KAPYEOUNPIEUPHANGUL CHOS" + + "EONG KAPYEOUNSSANGPIEUPHANGUL CHOSEONG SIOS-KIYEOKHANGUL CHOSEONG SIOS-N" + + "IEUNHANGUL CHOSEONG SIOS-TIKEUTHANGUL CHOSEONG SIOS-RIEULHANGUL CHOSEONG" + + " SIOS-MIEUMHANGUL CHOSEONG SIOS-PIEUPHANGUL CHOSEONG SIOS-PIEUP-KIYEOKHA" + + "NGUL CHOSEONG SIOS-SSANGSIOSHANGUL CHOSEONG SIOS-IEUNGHANGUL CHOSEONG SI" + + "OS-CIEUCHANGUL CHOSEONG SIOS-CHIEUCHHANGUL CHOSEONG SIOS-KHIEUKHHANGUL C" + + "HOSEONG SIOS-THIEUTHHANGUL CHOSEONG SIOS-PHIEUPHHANGUL CHOSEONG SIOS-HIE" + + "UHHANGUL CHOSEONG CHITUEUMSIOSHANGUL CHOSEONG CHITUEUMSSANGSIOSHANGUL CH" + + "OSEONG CEONGCHIEUMSIOSHANGUL CHOSEONG CEONGCHIEUMSSANGSIOSHANGUL CHOSEON" + + "G PANSIOSHANGUL CHOSEONG IEUNG-KIYEOKHANGUL CHOSEONG IEUNG-TIKEUTHANGUL " + + "CHOSEONG IEUNG-MIEUMHANGUL CHOSEONG IEUNG-PIEUPHANGUL CHOSEONG IEUNG-SIO" + + "SHANGUL CHOSEONG IEUNG-PANSIOSHANGUL CHOSEONG SSANGIEUNGHANGUL CHOSEONG " + + "IEUNG-CIEUCHANGUL CHOSEONG IEUNG-CHIEUCHHANGUL CHOSEONG IEUNG-THIEUTHHAN" + + "GUL CHOSEONG IEUNG-PHIEUPHHANGUL CHOSEONG YESIEUNGHANGUL CHOSEONG CIEUC-" + + "IEUNGHANGUL CHOSEONG CHITUEUMCIEUCHANGUL CHOSEONG CHITUEUMSSANGCIEUCHANG" + + "UL CHOSEONG CEONGCHIEUMCIEUCHANGUL CHOSEONG CEONGCHIEUMSSANGCIEUCHANGUL " + + "CHOSEONG CHIEUCH-KHIEUKHHANGUL CHOSEONG CHIEUCH-HIEUHHANGUL CHOSEONG CHI" + + "TUEUMCHIEUCHHANGUL CHOSEONG CEONGCHIEUMCHIEUCHHANGUL CHOSEONG PHIEUPH-PI" + + "EUPHANGUL CHOSEONG KAPYEOUNPHIEUPHHANGUL CHOSEONG SSANGHIEUHHANGUL CHOSE" + + "ONG YEORINHIEUHHANGUL CHOSEONG KIYEOK-TIKEUTHANGUL CHOSEONG NIEUN-SIOSHA" + + "NGUL CHOSEONG NIEUN-CIEUCHANGUL CHOSEONG NIEUN-HIEUHHANGUL CHOSEONG TIKE" + + "UT-RIEULHANGUL CHOSEONG FILLERHANGUL JUNGSEONG FILLERHANGUL JUNGSEONG AH" + + "ANGUL JUNGSEONG AEHANGUL JUNGSEONG YAHANGUL JUNGSEONG YAEHANGUL JUNGSEON" + + "G EOHANGUL JUNGSEONG EHANGUL JUNGSEONG YEOHANGUL JUNGSEONG YEHANGUL JUNG" + + "SEONG OHANGUL JUNGSEONG WAHANGUL JUNGSEONG WAEHANGUL JUNGSEONG OEHANGUL " + + "JUNGSEONG YOHANGUL JUNGSEONG UHANGUL JUNGSEONG WEOHANGUL JUNGSEONG WEHAN" + + "GUL JUNGSEONG WIHANGUL JUNGSEONG YUHANGUL JUNGSEONG EUHANGUL JUNGSEONG Y" + + "IHANGUL JUNGSEONG IHANGUL JUNGSEONG A-OHANGUL JUNGSEONG A-UHANGUL JUNGSE" + + "ONG YA-OHANGUL JUNGSEONG YA-YOHANGUL JUNGSEONG EO-OHANGUL JUNGSEONG EO-U" + + "HANGUL JUNGSEONG EO-EUHANGUL JUNGSEONG YEO-OHANGUL JUNGSEONG YEO-UHANGUL" + + " JUNGSEONG O-EOHANGUL JUNGSEONG O-EHANGUL JUNGSEONG O-YEHANGUL JUNGSEONG" + + " O-OHANGUL JUNGSEONG O-UHANGUL JUNGSEONG YO-YAHANGUL JUNGSEONG YO-YAEHAN" + + "GUL JUNGSEONG YO-YEOHANGUL JUNGSEONG YO-OHANGUL JUNGSEONG YO-IHANGUL JUN" + + "GSEONG U-AHANGUL JUNGSEONG U-AEHANGUL JUNGSEONG U-EO-EUHANGUL JUNGSEONG " + + "U-YEHANGUL JUNGSEONG U-UHANGUL JUNGSEONG YU-AHANGUL JUNGSEONG YU-EOHANGU" + + "L JUNGSEONG YU-EHANGUL JUNGSEONG YU-YEOHANGUL JUNGSEONG YU-YEHANGUL JUNG" + + "SEONG YU-UHANGUL JUNGSEONG YU-IHANGUL JUNGSEONG EU-UHANGUL JUNGSEONG EU-" + + "EUHANGUL JUNGSEONG YI-UHANGUL JUNGSEONG I-AHANGUL JUNGSEONG I-YAHANGUL J" + + "UNGSEONG I-OHANGUL JUNGSEONG I-UHANGUL JUNGSEONG I-EUHANGUL JUNGSEONG I-" + + "ARAEAHANGUL JUNGSEONG ARAEAHANGUL JUNGSEONG ARAEA-EOHANGUL JUNGSEONG ARA" + + "EA-UHANGUL JUNGSEONG ARAEA-IHANGUL JUNGSEONG SSANGARAEAHANGUL JUNGSEONG " + + "A-EUHANGUL JUNGSEONG YA-UHANGUL JUNGSEONG YEO-YAHANGUL JUNGSEONG O-YAHAN") + ("" + + "GUL JUNGSEONG O-YAEHANGUL JONGSEONG KIYEOKHANGUL JONGSEONG SSANGKIYEOKHA" + + "NGUL JONGSEONG KIYEOK-SIOSHANGUL JONGSEONG NIEUNHANGUL JONGSEONG NIEUN-C" + + "IEUCHANGUL JONGSEONG NIEUN-HIEUHHANGUL JONGSEONG TIKEUTHANGUL JONGSEONG " + + "RIEULHANGUL JONGSEONG RIEUL-KIYEOKHANGUL JONGSEONG RIEUL-MIEUMHANGUL JON" + + "GSEONG RIEUL-PIEUPHANGUL JONGSEONG RIEUL-SIOSHANGUL JONGSEONG RIEUL-THIE" + + "UTHHANGUL JONGSEONG RIEUL-PHIEUPHHANGUL JONGSEONG RIEUL-HIEUHHANGUL JONG" + + "SEONG MIEUMHANGUL JONGSEONG PIEUPHANGUL JONGSEONG PIEUP-SIOSHANGUL JONGS" + + "EONG SIOSHANGUL JONGSEONG SSANGSIOSHANGUL JONGSEONG IEUNGHANGUL JONGSEON" + + "G CIEUCHANGUL JONGSEONG CHIEUCHHANGUL JONGSEONG KHIEUKHHANGUL JONGSEONG " + + "THIEUTHHANGUL JONGSEONG PHIEUPHHANGUL JONGSEONG HIEUHHANGUL JONGSEONG KI" + + "YEOK-RIEULHANGUL JONGSEONG KIYEOK-SIOS-KIYEOKHANGUL JONGSEONG NIEUN-KIYE" + + "OKHANGUL JONGSEONG NIEUN-TIKEUTHANGUL JONGSEONG NIEUN-SIOSHANGUL JONGSEO" + + "NG NIEUN-PANSIOSHANGUL JONGSEONG NIEUN-THIEUTHHANGUL JONGSEONG TIKEUT-KI" + + "YEOKHANGUL JONGSEONG TIKEUT-RIEULHANGUL JONGSEONG RIEUL-KIYEOK-SIOSHANGU" + + "L JONGSEONG RIEUL-NIEUNHANGUL JONGSEONG RIEUL-TIKEUTHANGUL JONGSEONG RIE" + + "UL-TIKEUT-HIEUHHANGUL JONGSEONG SSANGRIEULHANGUL JONGSEONG RIEUL-MIEUM-K" + + "IYEOKHANGUL JONGSEONG RIEUL-MIEUM-SIOSHANGUL JONGSEONG RIEUL-PIEUP-SIOSH" + + "ANGUL JONGSEONG RIEUL-PIEUP-HIEUHHANGUL JONGSEONG RIEUL-KAPYEOUNPIEUPHAN" + + "GUL JONGSEONG RIEUL-SSANGSIOSHANGUL JONGSEONG RIEUL-PANSIOSHANGUL JONGSE" + + "ONG RIEUL-KHIEUKHHANGUL JONGSEONG RIEUL-YEORINHIEUHHANGUL JONGSEONG MIEU" + + "M-KIYEOKHANGUL JONGSEONG MIEUM-RIEULHANGUL JONGSEONG MIEUM-PIEUPHANGUL J" + + "ONGSEONG MIEUM-SIOSHANGUL JONGSEONG MIEUM-SSANGSIOSHANGUL JONGSEONG MIEU" + + "M-PANSIOSHANGUL JONGSEONG MIEUM-CHIEUCHHANGUL JONGSEONG MIEUM-HIEUHHANGU" + + "L JONGSEONG KAPYEOUNMIEUMHANGUL JONGSEONG PIEUP-RIEULHANGUL JONGSEONG PI" + + "EUP-PHIEUPHHANGUL JONGSEONG PIEUP-HIEUHHANGUL JONGSEONG KAPYEOUNPIEUPHAN" + + "GUL JONGSEONG SIOS-KIYEOKHANGUL JONGSEONG SIOS-TIKEUTHANGUL JONGSEONG SI" + + "OS-RIEULHANGUL JONGSEONG SIOS-PIEUPHANGUL JONGSEONG PANSIOSHANGUL JONGSE" + + "ONG IEUNG-KIYEOKHANGUL JONGSEONG IEUNG-SSANGKIYEOKHANGUL JONGSEONG SSANG" + + "IEUNGHANGUL JONGSEONG IEUNG-KHIEUKHHANGUL JONGSEONG YESIEUNGHANGUL JONGS" + + "EONG YESIEUNG-SIOSHANGUL JONGSEONG YESIEUNG-PANSIOSHANGUL JONGSEONG PHIE" + + "UPH-PIEUPHANGUL JONGSEONG KAPYEOUNPHIEUPHHANGUL JONGSEONG HIEUH-NIEUNHAN" + + "GUL JONGSEONG HIEUH-RIEULHANGUL JONGSEONG HIEUH-MIEUMHANGUL JONGSEONG HI" + + "EUH-PIEUPHANGUL JONGSEONG YEORINHIEUHHANGUL JONGSEONG KIYEOK-NIEUNHANGUL" + + " JONGSEONG KIYEOK-PIEUPHANGUL JONGSEONG KIYEOK-CHIEUCHHANGUL JONGSEONG K" + + "IYEOK-KHIEUKHHANGUL JONGSEONG KIYEOK-HIEUHHANGUL JONGSEONG SSANGNIEUNETH" + + "IOPIC SYLLABLE HAETHIOPIC SYLLABLE HUETHIOPIC SYLLABLE HIETHIOPIC SYLLAB" + + "LE HAAETHIOPIC SYLLABLE HEEETHIOPIC SYLLABLE HEETHIOPIC SYLLABLE HOETHIO" + + "PIC SYLLABLE HOAETHIOPIC SYLLABLE LAETHIOPIC SYLLABLE LUETHIOPIC SYLLABL" + + "E LIETHIOPIC SYLLABLE LAAETHIOPIC SYLLABLE LEEETHIOPIC SYLLABLE LEETHIOP" + + "IC SYLLABLE LOETHIOPIC SYLLABLE LWAETHIOPIC SYLLABLE HHAETHIOPIC SYLLABL" + + "E HHUETHIOPIC SYLLABLE HHIETHIOPIC SYLLABLE HHAAETHIOPIC SYLLABLE HHEEET" + + "HIOPIC SYLLABLE HHEETHIOPIC SYLLABLE HHOETHIOPIC SYLLABLE HHWAETHIOPIC S" + + "YLLABLE MAETHIOPIC SYLLABLE MUETHIOPIC SYLLABLE MIETHIOPIC SYLLABLE MAAE" + + "THIOPIC SYLLABLE MEEETHIOPIC SYLLABLE MEETHIOPIC SYLLABLE MOETHIOPIC SYL" + + "LABLE MWAETHIOPIC SYLLABLE SZAETHIOPIC SYLLABLE SZUETHIOPIC SYLLABLE SZI" + + "ETHIOPIC SYLLABLE SZAAETHIOPIC SYLLABLE SZEEETHIOPIC SYLLABLE SZEETHIOPI" + + "C SYLLABLE SZOETHIOPIC SYLLABLE SZWAETHIOPIC SYLLABLE RAETHIOPIC SYLLABL" + + "E RUETHIOPIC SYLLABLE RIETHIOPIC SYLLABLE RAAETHIOPIC SYLLABLE REEETHIOP" + + "IC SYLLABLE REETHIOPIC SYLLABLE ROETHIOPIC SYLLABLE RWAETHIOPIC SYLLABLE" + + " SAETHIOPIC SYLLABLE SUETHIOPIC SYLLABLE SIETHIOPIC SYLLABLE SAAETHIOPIC" + + " SYLLABLE SEEETHIOPIC SYLLABLE SEETHIOPIC SYLLABLE SOETHIOPIC SYLLABLE S" + + "WAETHIOPIC SYLLABLE SHAETHIOPIC SYLLABLE SHUETHIOPIC SYLLABLE SHIETHIOPI" + + "C SYLLABLE SHAAETHIOPIC SYLLABLE SHEEETHIOPIC SYLLABLE SHEETHIOPIC SYLLA" + + "BLE SHOETHIOPIC SYLLABLE SHWAETHIOPIC SYLLABLE QAETHIOPIC SYLLABLE QUETH" + + "IOPIC SYLLABLE QIETHIOPIC SYLLABLE QAAETHIOPIC SYLLABLE QEEETHIOPIC SYLL" + + "ABLE QEETHIOPIC SYLLABLE QOETHIOPIC SYLLABLE QOAETHIOPIC SYLLABLE QWAETH" + + "IOPIC SYLLABLE QWIETHIOPIC SYLLABLE QWAAETHIOPIC SYLLABLE QWEEETHIOPIC S" + + "YLLABLE QWEETHIOPIC SYLLABLE QHAETHIOPIC SYLLABLE QHUETHIOPIC SYLLABLE Q" + + "HIETHIOPIC SYLLABLE QHAAETHIOPIC SYLLABLE QHEEETHIOPIC SYLLABLE QHEETHIO" + + "PIC SYLLABLE QHOETHIOPIC SYLLABLE QHWAETHIOPIC SYLLABLE QHWIETHIOPIC SYL" + + "LABLE QHWAAETHIOPIC SYLLABLE QHWEEETHIOPIC SYLLABLE QHWEETHIOPIC SYLLABL" + + "E BAETHIOPIC SYLLABLE BUETHIOPIC SYLLABLE BIETHIOPIC SYLLABLE BAAETHIOPI" + + "C SYLLABLE BEEETHIOPIC SYLLABLE BEETHIOPIC SYLLABLE BOETHIOPIC SYLLABLE " + + "BWAETHIOPIC SYLLABLE VAETHIOPIC SYLLABLE VUETHIOPIC SYLLABLE VIETHIOPIC ") + ("" + + "SYLLABLE VAAETHIOPIC SYLLABLE VEEETHIOPIC SYLLABLE VEETHIOPIC SYLLABLE V" + + "OETHIOPIC SYLLABLE VWAETHIOPIC SYLLABLE TAETHIOPIC SYLLABLE TUETHIOPIC S" + + "YLLABLE TIETHIOPIC SYLLABLE TAAETHIOPIC SYLLABLE TEEETHIOPIC SYLLABLE TE" + + "ETHIOPIC SYLLABLE TOETHIOPIC SYLLABLE TWAETHIOPIC SYLLABLE CAETHIOPIC SY" + + "LLABLE CUETHIOPIC SYLLABLE CIETHIOPIC SYLLABLE CAAETHIOPIC SYLLABLE CEEE" + + "THIOPIC SYLLABLE CEETHIOPIC SYLLABLE COETHIOPIC SYLLABLE CWAETHIOPIC SYL" + + "LABLE XAETHIOPIC SYLLABLE XUETHIOPIC SYLLABLE XIETHIOPIC SYLLABLE XAAETH" + + "IOPIC SYLLABLE XEEETHIOPIC SYLLABLE XEETHIOPIC SYLLABLE XOETHIOPIC SYLLA" + + "BLE XOAETHIOPIC SYLLABLE XWAETHIOPIC SYLLABLE XWIETHIOPIC SYLLABLE XWAAE" + + "THIOPIC SYLLABLE XWEEETHIOPIC SYLLABLE XWEETHIOPIC SYLLABLE NAETHIOPIC S" + + "YLLABLE NUETHIOPIC SYLLABLE NIETHIOPIC SYLLABLE NAAETHIOPIC SYLLABLE NEE" + + "ETHIOPIC SYLLABLE NEETHIOPIC SYLLABLE NOETHIOPIC SYLLABLE NWAETHIOPIC SY" + + "LLABLE NYAETHIOPIC SYLLABLE NYUETHIOPIC SYLLABLE NYIETHIOPIC SYLLABLE NY" + + "AAETHIOPIC SYLLABLE NYEEETHIOPIC SYLLABLE NYEETHIOPIC SYLLABLE NYOETHIOP" + + "IC SYLLABLE NYWAETHIOPIC SYLLABLE GLOTTAL AETHIOPIC SYLLABLE GLOTTAL UET" + + "HIOPIC SYLLABLE GLOTTAL IETHIOPIC SYLLABLE GLOTTAL AAETHIOPIC SYLLABLE G" + + "LOTTAL EEETHIOPIC SYLLABLE GLOTTAL EETHIOPIC SYLLABLE GLOTTAL OETHIOPIC " + + "SYLLABLE GLOTTAL WAETHIOPIC SYLLABLE KAETHIOPIC SYLLABLE KUETHIOPIC SYLL" + + "ABLE KIETHIOPIC SYLLABLE KAAETHIOPIC SYLLABLE KEEETHIOPIC SYLLABLE KEETH" + + "IOPIC SYLLABLE KOETHIOPIC SYLLABLE KOAETHIOPIC SYLLABLE KWAETHIOPIC SYLL" + + "ABLE KWIETHIOPIC SYLLABLE KWAAETHIOPIC SYLLABLE KWEEETHIOPIC SYLLABLE KW" + + "EETHIOPIC SYLLABLE KXAETHIOPIC SYLLABLE KXUETHIOPIC SYLLABLE KXIETHIOPIC" + + " SYLLABLE KXAAETHIOPIC SYLLABLE KXEEETHIOPIC SYLLABLE KXEETHIOPIC SYLLAB" + + "LE KXOETHIOPIC SYLLABLE KXWAETHIOPIC SYLLABLE KXWIETHIOPIC SYLLABLE KXWA" + + "AETHIOPIC SYLLABLE KXWEEETHIOPIC SYLLABLE KXWEETHIOPIC SYLLABLE WAETHIOP" + + "IC SYLLABLE WUETHIOPIC SYLLABLE WIETHIOPIC SYLLABLE WAAETHIOPIC SYLLABLE" + + " WEEETHIOPIC SYLLABLE WEETHIOPIC SYLLABLE WOETHIOPIC SYLLABLE WOAETHIOPI" + + "C SYLLABLE PHARYNGEAL AETHIOPIC SYLLABLE PHARYNGEAL UETHIOPIC SYLLABLE P" + + "HARYNGEAL IETHIOPIC SYLLABLE PHARYNGEAL AAETHIOPIC SYLLABLE PHARYNGEAL E" + + "EETHIOPIC SYLLABLE PHARYNGEAL EETHIOPIC SYLLABLE PHARYNGEAL OETHIOPIC SY" + + "LLABLE ZAETHIOPIC SYLLABLE ZUETHIOPIC SYLLABLE ZIETHIOPIC SYLLABLE ZAAET" + + "HIOPIC SYLLABLE ZEEETHIOPIC SYLLABLE ZEETHIOPIC SYLLABLE ZOETHIOPIC SYLL" + + "ABLE ZWAETHIOPIC SYLLABLE ZHAETHIOPIC SYLLABLE ZHUETHIOPIC SYLLABLE ZHIE" + + "THIOPIC SYLLABLE ZHAAETHIOPIC SYLLABLE ZHEEETHIOPIC SYLLABLE ZHEETHIOPIC" + + " SYLLABLE ZHOETHIOPIC SYLLABLE ZHWAETHIOPIC SYLLABLE YAETHIOPIC SYLLABLE" + + " YUETHIOPIC SYLLABLE YIETHIOPIC SYLLABLE YAAETHIOPIC SYLLABLE YEEETHIOPI" + + "C SYLLABLE YEETHIOPIC SYLLABLE YOETHIOPIC SYLLABLE YOAETHIOPIC SYLLABLE " + + "DAETHIOPIC SYLLABLE DUETHIOPIC SYLLABLE DIETHIOPIC SYLLABLE DAAETHIOPIC " + + "SYLLABLE DEEETHIOPIC SYLLABLE DEETHIOPIC SYLLABLE DOETHIOPIC SYLLABLE DW" + + "AETHIOPIC SYLLABLE DDAETHIOPIC SYLLABLE DDUETHIOPIC SYLLABLE DDIETHIOPIC" + + " SYLLABLE DDAAETHIOPIC SYLLABLE DDEEETHIOPIC SYLLABLE DDEETHIOPIC SYLLAB" + + "LE DDOETHIOPIC SYLLABLE DDWAETHIOPIC SYLLABLE JAETHIOPIC SYLLABLE JUETHI" + + "OPIC SYLLABLE JIETHIOPIC SYLLABLE JAAETHIOPIC SYLLABLE JEEETHIOPIC SYLLA" + + "BLE JEETHIOPIC SYLLABLE JOETHIOPIC SYLLABLE JWAETHIOPIC SYLLABLE GAETHIO" + + "PIC SYLLABLE GUETHIOPIC SYLLABLE GIETHIOPIC SYLLABLE GAAETHIOPIC SYLLABL" + + "E GEEETHIOPIC SYLLABLE GEETHIOPIC SYLLABLE GOETHIOPIC SYLLABLE GOAETHIOP" + + "IC SYLLABLE GWAETHIOPIC SYLLABLE GWIETHIOPIC SYLLABLE GWAAETHIOPIC SYLLA" + + "BLE GWEEETHIOPIC SYLLABLE GWEETHIOPIC SYLLABLE GGAETHIOPIC SYLLABLE GGUE" + + "THIOPIC SYLLABLE GGIETHIOPIC SYLLABLE GGAAETHIOPIC SYLLABLE GGEEETHIOPIC" + + " SYLLABLE GGEETHIOPIC SYLLABLE GGOETHIOPIC SYLLABLE GGWAAETHIOPIC SYLLAB" + + "LE THAETHIOPIC SYLLABLE THUETHIOPIC SYLLABLE THIETHIOPIC SYLLABLE THAAET" + + "HIOPIC SYLLABLE THEEETHIOPIC SYLLABLE THEETHIOPIC SYLLABLE THOETHIOPIC S" + + "YLLABLE THWAETHIOPIC SYLLABLE CHAETHIOPIC SYLLABLE CHUETHIOPIC SYLLABLE " + + "CHIETHIOPIC SYLLABLE CHAAETHIOPIC SYLLABLE CHEEETHIOPIC SYLLABLE CHEETHI" + + "OPIC SYLLABLE CHOETHIOPIC SYLLABLE CHWAETHIOPIC SYLLABLE PHAETHIOPIC SYL" + + "LABLE PHUETHIOPIC SYLLABLE PHIETHIOPIC SYLLABLE PHAAETHIOPIC SYLLABLE PH" + + "EEETHIOPIC SYLLABLE PHEETHIOPIC SYLLABLE PHOETHIOPIC SYLLABLE PHWAETHIOP" + + "IC SYLLABLE TSAETHIOPIC SYLLABLE TSUETHIOPIC SYLLABLE TSIETHIOPIC SYLLAB" + + "LE TSAAETHIOPIC SYLLABLE TSEEETHIOPIC SYLLABLE TSEETHIOPIC SYLLABLE TSOE" + + "THIOPIC SYLLABLE TSWAETHIOPIC SYLLABLE TZAETHIOPIC SYLLABLE TZUETHIOPIC " + + "SYLLABLE TZIETHIOPIC SYLLABLE TZAAETHIOPIC SYLLABLE TZEEETHIOPIC SYLLABL" + + "E TZEETHIOPIC SYLLABLE TZOETHIOPIC SYLLABLE TZOAETHIOPIC SYLLABLE FAETHI" + + "OPIC SYLLABLE FUETHIOPIC SYLLABLE FIETHIOPIC SYLLABLE FAAETHIOPIC SYLLAB" + + "LE FEEETHIOPIC SYLLABLE FEETHIOPIC SYLLABLE FOETHIOPIC SYLLABLE FWAETHIO") + ("" + + "PIC SYLLABLE PAETHIOPIC SYLLABLE PUETHIOPIC SYLLABLE PIETHIOPIC SYLLABLE" + + " PAAETHIOPIC SYLLABLE PEEETHIOPIC SYLLABLE PEETHIOPIC SYLLABLE POETHIOPI" + + "C SYLLABLE PWAETHIOPIC SYLLABLE RYAETHIOPIC SYLLABLE MYAETHIOPIC SYLLABL" + + "E FYAETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARKETHIOPIC COMBINI" + + "NG VOWEL LENGTH MARKETHIOPIC COMBINING GEMINATION MARKETHIOPIC SECTION M" + + "ARKETHIOPIC WORDSPACEETHIOPIC FULL STOPETHIOPIC COMMAETHIOPIC SEMICOLONE" + + "THIOPIC COLONETHIOPIC PREFACE COLONETHIOPIC QUESTION MARKETHIOPIC PARAGR" + + "APH SEPARATORETHIOPIC DIGIT ONEETHIOPIC DIGIT TWOETHIOPIC DIGIT THREEETH" + + "IOPIC DIGIT FOURETHIOPIC DIGIT FIVEETHIOPIC DIGIT SIXETHIOPIC DIGIT SEVE" + + "NETHIOPIC DIGIT EIGHTETHIOPIC DIGIT NINEETHIOPIC NUMBER TENETHIOPIC NUMB" + + "ER TWENTYETHIOPIC NUMBER THIRTYETHIOPIC NUMBER FORTYETHIOPIC NUMBER FIFT" + + "YETHIOPIC NUMBER SIXTYETHIOPIC NUMBER SEVENTYETHIOPIC NUMBER EIGHTYETHIO" + + "PIC NUMBER NINETYETHIOPIC NUMBER HUNDREDETHIOPIC NUMBER TEN THOUSANDETHI" + + "OPIC SYLLABLE SEBATBEIT MWAETHIOPIC SYLLABLE MWIETHIOPIC SYLLABLE MWEEET" + + "HIOPIC SYLLABLE MWEETHIOPIC SYLLABLE SEBATBEIT BWAETHIOPIC SYLLABLE BWIE" + + "THIOPIC SYLLABLE BWEEETHIOPIC SYLLABLE BWEETHIOPIC SYLLABLE SEBATBEIT FW" + + "AETHIOPIC SYLLABLE FWIETHIOPIC SYLLABLE FWEEETHIOPIC SYLLABLE FWEETHIOPI" + + "C SYLLABLE SEBATBEIT PWAETHIOPIC SYLLABLE PWIETHIOPIC SYLLABLE PWEEETHIO" + + "PIC SYLLABLE PWEETHIOPIC TONAL MARK YIZETETHIOPIC TONAL MARK DERETETHIOP" + + "IC TONAL MARK RIKRIKETHIOPIC TONAL MARK SHORT RIKRIKETHIOPIC TONAL MARK " + + "DIFATETHIOPIC TONAL MARK KENATETHIOPIC TONAL MARK CHIRETETHIOPIC TONAL M" + + "ARK HIDETETHIOPIC TONAL MARK DERET-HIDETETHIOPIC TONAL MARK KURTCHEROKEE" + + " LETTER ACHEROKEE LETTER ECHEROKEE LETTER ICHEROKEE LETTER OCHEROKEE LET" + + "TER UCHEROKEE LETTER VCHEROKEE LETTER GACHEROKEE LETTER KACHEROKEE LETTE" + + "R GECHEROKEE LETTER GICHEROKEE LETTER GOCHEROKEE LETTER GUCHEROKEE LETTE" + + "R GVCHEROKEE LETTER HACHEROKEE LETTER HECHEROKEE LETTER HICHEROKEE LETTE" + + "R HOCHEROKEE LETTER HUCHEROKEE LETTER HVCHEROKEE LETTER LACHEROKEE LETTE" + + "R LECHEROKEE LETTER LICHEROKEE LETTER LOCHEROKEE LETTER LUCHEROKEE LETTE" + + "R LVCHEROKEE LETTER MACHEROKEE LETTER MECHEROKEE LETTER MICHEROKEE LETTE" + + "R MOCHEROKEE LETTER MUCHEROKEE LETTER NACHEROKEE LETTER HNACHEROKEE LETT" + + "ER NAHCHEROKEE LETTER NECHEROKEE LETTER NICHEROKEE LETTER NOCHEROKEE LET" + + "TER NUCHEROKEE LETTER NVCHEROKEE LETTER QUACHEROKEE LETTER QUECHEROKEE L" + + "ETTER QUICHEROKEE LETTER QUOCHEROKEE LETTER QUUCHEROKEE LETTER QUVCHEROK" + + "EE LETTER SACHEROKEE LETTER SCHEROKEE LETTER SECHEROKEE LETTER SICHEROKE" + + "E LETTER SOCHEROKEE LETTER SUCHEROKEE LETTER SVCHEROKEE LETTER DACHEROKE" + + "E LETTER TACHEROKEE LETTER DECHEROKEE LETTER TECHEROKEE LETTER DICHEROKE" + + "E LETTER TICHEROKEE LETTER DOCHEROKEE LETTER DUCHEROKEE LETTER DVCHEROKE" + + "E LETTER DLACHEROKEE LETTER TLACHEROKEE LETTER TLECHEROKEE LETTER TLICHE" + + "ROKEE LETTER TLOCHEROKEE LETTER TLUCHEROKEE LETTER TLVCHEROKEE LETTER TS" + + "ACHEROKEE LETTER TSECHEROKEE LETTER TSICHEROKEE LETTER TSOCHEROKEE LETTE" + + "R TSUCHEROKEE LETTER TSVCHEROKEE LETTER WACHEROKEE LETTER WECHEROKEE LET" + + "TER WICHEROKEE LETTER WOCHEROKEE LETTER WUCHEROKEE LETTER WVCHEROKEE LET" + + "TER YACHEROKEE LETTER YECHEROKEE LETTER YICHEROKEE LETTER YOCHEROKEE LET" + + "TER YUCHEROKEE LETTER YVCHEROKEE LETTER MVCHEROKEE SMALL LETTER YECHEROK" + + "EE SMALL LETTER YICHEROKEE SMALL LETTER YOCHEROKEE SMALL LETTER YUCHEROK" + + "EE SMALL LETTER YVCHEROKEE SMALL LETTER MVCANADIAN SYLLABICS HYPHENCANAD" + + "IAN SYLLABICS ECANADIAN SYLLABICS AAICANADIAN SYLLABICS ICANADIAN SYLLAB" + + "ICS IICANADIAN SYLLABICS OCANADIAN SYLLABICS OOCANADIAN SYLLABICS Y-CREE" + + " OOCANADIAN SYLLABICS CARRIER EECANADIAN SYLLABICS CARRIER ICANADIAN SYL" + + "LABICS ACANADIAN SYLLABICS AACANADIAN SYLLABICS WECANADIAN SYLLABICS WES" + + "T-CREE WECANADIAN SYLLABICS WICANADIAN SYLLABICS WEST-CREE WICANADIAN SY" + + "LLABICS WIICANADIAN SYLLABICS WEST-CREE WIICANADIAN SYLLABICS WOCANADIAN" + + " SYLLABICS WEST-CREE WOCANADIAN SYLLABICS WOOCANADIAN SYLLABICS WEST-CRE" + + "E WOOCANADIAN SYLLABICS NASKAPI WOOCANADIAN SYLLABICS WACANADIAN SYLLABI" + + "CS WEST-CREE WACANADIAN SYLLABICS WAACANADIAN SYLLABICS WEST-CREE WAACAN" + + "ADIAN SYLLABICS NASKAPI WAACANADIAN SYLLABICS AICANADIAN SYLLABICS Y-CRE" + + "E WCANADIAN SYLLABICS GLOTTAL STOPCANADIAN SYLLABICS FINAL ACUTECANADIAN" + + " SYLLABICS FINAL GRAVECANADIAN SYLLABICS FINAL BOTTOM HALF RINGCANADIAN " + + "SYLLABICS FINAL TOP HALF RINGCANADIAN SYLLABICS FINAL RIGHT HALF RINGCAN" + + "ADIAN SYLLABICS FINAL RINGCANADIAN SYLLABICS FINAL DOUBLE ACUTECANADIAN " + + "SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKESCANADIAN SYLLABICS FINAL MI" + + "DDLE DOTCANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKECANADIAN SYLLABI" + + "CS FINAL PLUSCANADIAN SYLLABICS FINAL DOWN TACKCANADIAN SYLLABICS ENCANA" + + "DIAN SYLLABICS INCANADIAN SYLLABICS ONCANADIAN SYLLABICS ANCANADIAN SYLL") + ("" + + "ABICS PECANADIAN SYLLABICS PAAICANADIAN SYLLABICS PICANADIAN SYLLABICS P" + + "IICANADIAN SYLLABICS POCANADIAN SYLLABICS POOCANADIAN SYLLABICS Y-CREE P" + + "OOCANADIAN SYLLABICS CARRIER HEECANADIAN SYLLABICS CARRIER HICANADIAN SY" + + "LLABICS PACANADIAN SYLLABICS PAACANADIAN SYLLABICS PWECANADIAN SYLLABICS" + + " WEST-CREE PWECANADIAN SYLLABICS PWICANADIAN SYLLABICS WEST-CREE PWICANA" + + "DIAN SYLLABICS PWIICANADIAN SYLLABICS WEST-CREE PWIICANADIAN SYLLABICS P" + + "WOCANADIAN SYLLABICS WEST-CREE PWOCANADIAN SYLLABICS PWOOCANADIAN SYLLAB" + + "ICS WEST-CREE PWOOCANADIAN SYLLABICS PWACANADIAN SYLLABICS WEST-CREE PWA" + + "CANADIAN SYLLABICS PWAACANADIAN SYLLABICS WEST-CREE PWAACANADIAN SYLLABI" + + "CS Y-CREE PWAACANADIAN SYLLABICS PCANADIAN SYLLABICS WEST-CREE PCANADIAN" + + " SYLLABICS CARRIER HCANADIAN SYLLABICS TECANADIAN SYLLABICS TAAICANADIAN" + + " SYLLABICS TICANADIAN SYLLABICS TIICANADIAN SYLLABICS TOCANADIAN SYLLABI" + + "CS TOOCANADIAN SYLLABICS Y-CREE TOOCANADIAN SYLLABICS CARRIER DEECANADIA" + + "N SYLLABICS CARRIER DICANADIAN SYLLABICS TACANADIAN SYLLABICS TAACANADIA" + + "N SYLLABICS TWECANADIAN SYLLABICS WEST-CREE TWECANADIAN SYLLABICS TWICAN" + + "ADIAN SYLLABICS WEST-CREE TWICANADIAN SYLLABICS TWIICANADIAN SYLLABICS W" + + "EST-CREE TWIICANADIAN SYLLABICS TWOCANADIAN SYLLABICS WEST-CREE TWOCANAD" + + "IAN SYLLABICS TWOOCANADIAN SYLLABICS WEST-CREE TWOOCANADIAN SYLLABICS TW" + + "ACANADIAN SYLLABICS WEST-CREE TWACANADIAN SYLLABICS TWAACANADIAN SYLLABI" + + "CS WEST-CREE TWAACANADIAN SYLLABICS NASKAPI TWAACANADIAN SYLLABICS TCANA" + + "DIAN SYLLABICS TTECANADIAN SYLLABICS TTICANADIAN SYLLABICS TTOCANADIAN S" + + "YLLABICS TTACANADIAN SYLLABICS KECANADIAN SYLLABICS KAAICANADIAN SYLLABI" + + "CS KICANADIAN SYLLABICS KIICANADIAN SYLLABICS KOCANADIAN SYLLABICS KOOCA" + + "NADIAN SYLLABICS Y-CREE KOOCANADIAN SYLLABICS KACANADIAN SYLLABICS KAACA" + + "NADIAN SYLLABICS KWECANADIAN SYLLABICS WEST-CREE KWECANADIAN SYLLABICS K" + + "WICANADIAN SYLLABICS WEST-CREE KWICANADIAN SYLLABICS KWIICANADIAN SYLLAB" + + "ICS WEST-CREE KWIICANADIAN SYLLABICS KWOCANADIAN SYLLABICS WEST-CREE KWO" + + "CANADIAN SYLLABICS KWOOCANADIAN SYLLABICS WEST-CREE KWOOCANADIAN SYLLABI" + + "CS KWACANADIAN SYLLABICS WEST-CREE KWACANADIAN SYLLABICS KWAACANADIAN SY" + + "LLABICS WEST-CREE KWAACANADIAN SYLLABICS NASKAPI KWAACANADIAN SYLLABICS " + + "KCANADIAN SYLLABICS KWCANADIAN SYLLABICS SOUTH-SLAVEY KEHCANADIAN SYLLAB" + + "ICS SOUTH-SLAVEY KIHCANADIAN SYLLABICS SOUTH-SLAVEY KOHCANADIAN SYLLABIC" + + "S SOUTH-SLAVEY KAHCANADIAN SYLLABICS CECANADIAN SYLLABICS CAAICANADIAN S" + + "YLLABICS CICANADIAN SYLLABICS CIICANADIAN SYLLABICS COCANADIAN SYLLABICS" + + " COOCANADIAN SYLLABICS Y-CREE COOCANADIAN SYLLABICS CACANADIAN SYLLABICS" + + " CAACANADIAN SYLLABICS CWECANADIAN SYLLABICS WEST-CREE CWECANADIAN SYLLA" + + "BICS CWICANADIAN SYLLABICS WEST-CREE CWICANADIAN SYLLABICS CWIICANADIAN " + + "SYLLABICS WEST-CREE CWIICANADIAN SYLLABICS CWOCANADIAN SYLLABICS WEST-CR" + + "EE CWOCANADIAN SYLLABICS CWOOCANADIAN SYLLABICS WEST-CREE CWOOCANADIAN S" + + "YLLABICS CWACANADIAN SYLLABICS WEST-CREE CWACANADIAN SYLLABICS CWAACANAD" + + "IAN SYLLABICS WEST-CREE CWAACANADIAN SYLLABICS NASKAPI CWAACANADIAN SYLL" + + "ABICS CCANADIAN SYLLABICS SAYISI THCANADIAN SYLLABICS MECANADIAN SYLLABI" + + "CS MAAICANADIAN SYLLABICS MICANADIAN SYLLABICS MIICANADIAN SYLLABICS MOC" + + "ANADIAN SYLLABICS MOOCANADIAN SYLLABICS Y-CREE MOOCANADIAN SYLLABICS MAC" + + "ANADIAN SYLLABICS MAACANADIAN SYLLABICS MWECANADIAN SYLLABICS WEST-CREE " + + "MWECANADIAN SYLLABICS MWICANADIAN SYLLABICS WEST-CREE MWICANADIAN SYLLAB" + + "ICS MWIICANADIAN SYLLABICS WEST-CREE MWIICANADIAN SYLLABICS MWOCANADIAN " + + "SYLLABICS WEST-CREE MWOCANADIAN SYLLABICS MWOOCANADIAN SYLLABICS WEST-CR" + + "EE MWOOCANADIAN SYLLABICS MWACANADIAN SYLLABICS WEST-CREE MWACANADIAN SY" + + "LLABICS MWAACANADIAN SYLLABICS WEST-CREE MWAACANADIAN SYLLABICS NASKAPI " + + "MWAACANADIAN SYLLABICS MCANADIAN SYLLABICS WEST-CREE MCANADIAN SYLLABICS" + + " MHCANADIAN SYLLABICS ATHAPASCAN MCANADIAN SYLLABICS SAYISI MCANADIAN SY" + + "LLABICS NECANADIAN SYLLABICS NAAICANADIAN SYLLABICS NICANADIAN SYLLABICS" + + " NIICANADIAN SYLLABICS NOCANADIAN SYLLABICS NOOCANADIAN SYLLABICS Y-CREE" + + " NOOCANADIAN SYLLABICS NACANADIAN SYLLABICS NAACANADIAN SYLLABICS NWECAN" + + "ADIAN SYLLABICS WEST-CREE NWECANADIAN SYLLABICS NWACANADIAN SYLLABICS WE" + + "ST-CREE NWACANADIAN SYLLABICS NWAACANADIAN SYLLABICS WEST-CREE NWAACANAD" + + "IAN SYLLABICS NASKAPI NWAACANADIAN SYLLABICS NCANADIAN SYLLABICS CARRIER" + + " NGCANADIAN SYLLABICS NHCANADIAN SYLLABICS LECANADIAN SYLLABICS LAAICANA" + + "DIAN SYLLABICS LICANADIAN SYLLABICS LIICANADIAN SYLLABICS LOCANADIAN SYL" + + "LABICS LOOCANADIAN SYLLABICS Y-CREE LOOCANADIAN SYLLABICS LACANADIAN SYL" + + "LABICS LAACANADIAN SYLLABICS LWECANADIAN SYLLABICS WEST-CREE LWECANADIAN" + + " SYLLABICS LWICANADIAN SYLLABICS WEST-CREE LWICANADIAN SYLLABICS LWIICAN" + + "ADIAN SYLLABICS WEST-CREE LWIICANADIAN SYLLABICS LWOCANADIAN SYLLABICS W") + ("" + + "EST-CREE LWOCANADIAN SYLLABICS LWOOCANADIAN SYLLABICS WEST-CREE LWOOCANA" + + "DIAN SYLLABICS LWACANADIAN SYLLABICS WEST-CREE LWACANADIAN SYLLABICS LWA" + + "ACANADIAN SYLLABICS WEST-CREE LWAACANADIAN SYLLABICS LCANADIAN SYLLABICS" + + " WEST-CREE LCANADIAN SYLLABICS MEDIAL LCANADIAN SYLLABICS SECANADIAN SYL" + + "LABICS SAAICANADIAN SYLLABICS SICANADIAN SYLLABICS SIICANADIAN SYLLABICS" + + " SOCANADIAN SYLLABICS SOOCANADIAN SYLLABICS Y-CREE SOOCANADIAN SYLLABICS" + + " SACANADIAN SYLLABICS SAACANADIAN SYLLABICS SWECANADIAN SYLLABICS WEST-C" + + "REE SWECANADIAN SYLLABICS SWICANADIAN SYLLABICS WEST-CREE SWICANADIAN SY" + + "LLABICS SWIICANADIAN SYLLABICS WEST-CREE SWIICANADIAN SYLLABICS SWOCANAD" + + "IAN SYLLABICS WEST-CREE SWOCANADIAN SYLLABICS SWOOCANADIAN SYLLABICS WES" + + "T-CREE SWOOCANADIAN SYLLABICS SWACANADIAN SYLLABICS WEST-CREE SWACANADIA" + + "N SYLLABICS SWAACANADIAN SYLLABICS WEST-CREE SWAACANADIAN SYLLABICS NASK" + + "API SWAACANADIAN SYLLABICS SCANADIAN SYLLABICS ATHAPASCAN SCANADIAN SYLL" + + "ABICS SWCANADIAN SYLLABICS BLACKFOOT SCANADIAN SYLLABICS MOOSE-CREE SKCA" + + "NADIAN SYLLABICS NASKAPI SKWCANADIAN SYLLABICS NASKAPI S-WCANADIAN SYLLA" + + "BICS NASKAPI SPWACANADIAN SYLLABICS NASKAPI STWACANADIAN SYLLABICS NASKA" + + "PI SKWACANADIAN SYLLABICS NASKAPI SCWACANADIAN SYLLABICS SHECANADIAN SYL" + + "LABICS SHICANADIAN SYLLABICS SHIICANADIAN SYLLABICS SHOCANADIAN SYLLABIC" + + "S SHOOCANADIAN SYLLABICS SHACANADIAN SYLLABICS SHAACANADIAN SYLLABICS SH" + + "WECANADIAN SYLLABICS WEST-CREE SHWECANADIAN SYLLABICS SHWICANADIAN SYLLA" + + "BICS WEST-CREE SHWICANADIAN SYLLABICS SHWIICANADIAN SYLLABICS WEST-CREE " + + "SHWIICANADIAN SYLLABICS SHWOCANADIAN SYLLABICS WEST-CREE SHWOCANADIAN SY" + + "LLABICS SHWOOCANADIAN SYLLABICS WEST-CREE SHWOOCANADIAN SYLLABICS SHWACA" + + "NADIAN SYLLABICS WEST-CREE SHWACANADIAN SYLLABICS SHWAACANADIAN SYLLABIC" + + "S WEST-CREE SHWAACANADIAN SYLLABICS SHCANADIAN SYLLABICS YECANADIAN SYLL" + + "ABICS YAAICANADIAN SYLLABICS YICANADIAN SYLLABICS YIICANADIAN SYLLABICS " + + "YOCANADIAN SYLLABICS YOOCANADIAN SYLLABICS Y-CREE YOOCANADIAN SYLLABICS " + + "YACANADIAN SYLLABICS YAACANADIAN SYLLABICS YWECANADIAN SYLLABICS WEST-CR" + + "EE YWECANADIAN SYLLABICS YWICANADIAN SYLLABICS WEST-CREE YWICANADIAN SYL" + + "LABICS YWIICANADIAN SYLLABICS WEST-CREE YWIICANADIAN SYLLABICS YWOCANADI" + + "AN SYLLABICS WEST-CREE YWOCANADIAN SYLLABICS YWOOCANADIAN SYLLABICS WEST" + + "-CREE YWOOCANADIAN SYLLABICS YWACANADIAN SYLLABICS WEST-CREE YWACANADIAN" + + " SYLLABICS YWAACANADIAN SYLLABICS WEST-CREE YWAACANADIAN SYLLABICS NASKA" + + "PI YWAACANADIAN SYLLABICS YCANADIAN SYLLABICS BIBLE-CREE YCANADIAN SYLLA" + + "BICS WEST-CREE YCANADIAN SYLLABICS SAYISI YICANADIAN SYLLABICS RECANADIA" + + "N SYLLABICS R-CREE RECANADIAN SYLLABICS WEST-CREE LECANADIAN SYLLABICS R" + + "AAICANADIAN SYLLABICS RICANADIAN SYLLABICS RIICANADIAN SYLLABICS ROCANAD" + + "IAN SYLLABICS ROOCANADIAN SYLLABICS WEST-CREE LOCANADIAN SYLLABICS RACAN" + + "ADIAN SYLLABICS RAACANADIAN SYLLABICS WEST-CREE LACANADIAN SYLLABICS RWA" + + "ACANADIAN SYLLABICS WEST-CREE RWAACANADIAN SYLLABICS RCANADIAN SYLLABICS" + + " WEST-CREE RCANADIAN SYLLABICS MEDIAL RCANADIAN SYLLABICS FECANADIAN SYL" + + "LABICS FAAICANADIAN SYLLABICS FICANADIAN SYLLABICS FIICANADIAN SYLLABICS" + + " FOCANADIAN SYLLABICS FOOCANADIAN SYLLABICS FACANADIAN SYLLABICS FAACANA" + + "DIAN SYLLABICS FWAACANADIAN SYLLABICS WEST-CREE FWAACANADIAN SYLLABICS F" + + "CANADIAN SYLLABICS THECANADIAN SYLLABICS N-CREE THECANADIAN SYLLABICS TH" + + "ICANADIAN SYLLABICS N-CREE THICANADIAN SYLLABICS THIICANADIAN SYLLABICS " + + "N-CREE THIICANADIAN SYLLABICS THOCANADIAN SYLLABICS THOOCANADIAN SYLLABI" + + "CS THACANADIAN SYLLABICS THAACANADIAN SYLLABICS THWAACANADIAN SYLLABICS " + + "WEST-CREE THWAACANADIAN SYLLABICS THCANADIAN SYLLABICS TTHECANADIAN SYLL" + + "ABICS TTHICANADIAN SYLLABICS TTHOCANADIAN SYLLABICS TTHACANADIAN SYLLABI" + + "CS TTHCANADIAN SYLLABICS TYECANADIAN SYLLABICS TYICANADIAN SYLLABICS TYO" + + "CANADIAN SYLLABICS TYACANADIAN SYLLABICS NUNAVIK HECANADIAN SYLLABICS NU" + + "NAVIK HICANADIAN SYLLABICS NUNAVIK HIICANADIAN SYLLABICS NUNAVIK HOCANAD" + + "IAN SYLLABICS NUNAVIK HOOCANADIAN SYLLABICS NUNAVIK HACANADIAN SYLLABICS" + + " NUNAVIK HAACANADIAN SYLLABICS NUNAVIK HCANADIAN SYLLABICS NUNAVUT HCANA" + + "DIAN SYLLABICS HKCANADIAN SYLLABICS QAAICANADIAN SYLLABICS QICANADIAN SY" + + "LLABICS QIICANADIAN SYLLABICS QOCANADIAN SYLLABICS QOOCANADIAN SYLLABICS" + + " QACANADIAN SYLLABICS QAACANADIAN SYLLABICS QCANADIAN SYLLABICS TLHECANA" + + "DIAN SYLLABICS TLHICANADIAN SYLLABICS TLHOCANADIAN SYLLABICS TLHACANADIA" + + "N SYLLABICS WEST-CREE RECANADIAN SYLLABICS WEST-CREE RICANADIAN SYLLABIC" + + "S WEST-CREE ROCANADIAN SYLLABICS WEST-CREE RACANADIAN SYLLABICS NGAAICAN" + + "ADIAN SYLLABICS NGICANADIAN SYLLABICS NGIICANADIAN SYLLABICS NGOCANADIAN" + + " SYLLABICS NGOOCANADIAN SYLLABICS NGACANADIAN SYLLABICS NGAACANADIAN SYL" + + "LABICS NGCANADIAN SYLLABICS NNGCANADIAN SYLLABICS SAYISI SHECANADIAN SYL") + ("" + + "LABICS SAYISI SHICANADIAN SYLLABICS SAYISI SHOCANADIAN SYLLABICS SAYISI " + + "SHACANADIAN SYLLABICS WOODS-CREE THECANADIAN SYLLABICS WOODS-CREE THICAN" + + "ADIAN SYLLABICS WOODS-CREE THOCANADIAN SYLLABICS WOODS-CREE THACANADIAN " + + "SYLLABICS WOODS-CREE THCANADIAN SYLLABICS LHICANADIAN SYLLABICS LHIICANA" + + "DIAN SYLLABICS LHOCANADIAN SYLLABICS LHOOCANADIAN SYLLABICS LHACANADIAN " + + "SYLLABICS LHAACANADIAN SYLLABICS LHCANADIAN SYLLABICS TH-CREE THECANADIA" + + "N SYLLABICS TH-CREE THICANADIAN SYLLABICS TH-CREE THIICANADIAN SYLLABICS" + + " TH-CREE THOCANADIAN SYLLABICS TH-CREE THOOCANADIAN SYLLABICS TH-CREE TH" + + "ACANADIAN SYLLABICS TH-CREE THAACANADIAN SYLLABICS TH-CREE THCANADIAN SY" + + "LLABICS AIVILIK BCANADIAN SYLLABICS BLACKFOOT ECANADIAN SYLLABICS BLACKF" + + "OOT ICANADIAN SYLLABICS BLACKFOOT OCANADIAN SYLLABICS BLACKFOOT ACANADIA" + + "N SYLLABICS BLACKFOOT WECANADIAN SYLLABICS BLACKFOOT WICANADIAN SYLLABIC" + + "S BLACKFOOT WOCANADIAN SYLLABICS BLACKFOOT WACANADIAN SYLLABICS BLACKFOO" + + "T NECANADIAN SYLLABICS BLACKFOOT NICANADIAN SYLLABICS BLACKFOOT NOCANADI" + + "AN SYLLABICS BLACKFOOT NACANADIAN SYLLABICS BLACKFOOT KECANADIAN SYLLABI" + + "CS BLACKFOOT KICANADIAN SYLLABICS BLACKFOOT KOCANADIAN SYLLABICS BLACKFO" + + "OT KACANADIAN SYLLABICS SAYISI HECANADIAN SYLLABICS SAYISI HICANADIAN SY" + + "LLABICS SAYISI HOCANADIAN SYLLABICS SAYISI HACANADIAN SYLLABICS CARRIER " + + "GHUCANADIAN SYLLABICS CARRIER GHOCANADIAN SYLLABICS CARRIER GHECANADIAN " + + "SYLLABICS CARRIER GHEECANADIAN SYLLABICS CARRIER GHICANADIAN SYLLABICS C" + + "ARRIER GHACANADIAN SYLLABICS CARRIER RUCANADIAN SYLLABICS CARRIER ROCANA" + + "DIAN SYLLABICS CARRIER RECANADIAN SYLLABICS CARRIER REECANADIAN SYLLABIC" + + "S CARRIER RICANADIAN SYLLABICS CARRIER RACANADIAN SYLLABICS CARRIER WUCA" + + "NADIAN SYLLABICS CARRIER WOCANADIAN SYLLABICS CARRIER WECANADIAN SYLLABI" + + "CS CARRIER WEECANADIAN SYLLABICS CARRIER WICANADIAN SYLLABICS CARRIER WA" + + "CANADIAN SYLLABICS CARRIER HWUCANADIAN SYLLABICS CARRIER HWOCANADIAN SYL" + + "LABICS CARRIER HWECANADIAN SYLLABICS CARRIER HWEECANADIAN SYLLABICS CARR" + + "IER HWICANADIAN SYLLABICS CARRIER HWACANADIAN SYLLABICS CARRIER THUCANAD" + + "IAN SYLLABICS CARRIER THOCANADIAN SYLLABICS CARRIER THECANADIAN SYLLABIC" + + "S CARRIER THEECANADIAN SYLLABICS CARRIER THICANADIAN SYLLABICS CARRIER T" + + "HACANADIAN SYLLABICS CARRIER TTUCANADIAN SYLLABICS CARRIER TTOCANADIAN S" + + "YLLABICS CARRIER TTECANADIAN SYLLABICS CARRIER TTEECANADIAN SYLLABICS CA" + + "RRIER TTICANADIAN SYLLABICS CARRIER TTACANADIAN SYLLABICS CARRIER PUCANA" + + "DIAN SYLLABICS CARRIER POCANADIAN SYLLABICS CARRIER PECANADIAN SYLLABICS" + + " CARRIER PEECANADIAN SYLLABICS CARRIER PICANADIAN SYLLABICS CARRIER PACA" + + "NADIAN SYLLABICS CARRIER PCANADIAN SYLLABICS CARRIER GUCANADIAN SYLLABIC" + + "S CARRIER GOCANADIAN SYLLABICS CARRIER GECANADIAN SYLLABICS CARRIER GEEC" + + "ANADIAN SYLLABICS CARRIER GICANADIAN SYLLABICS CARRIER GACANADIAN SYLLAB" + + "ICS CARRIER KHUCANADIAN SYLLABICS CARRIER KHOCANADIAN SYLLABICS CARRIER " + + "KHECANADIAN SYLLABICS CARRIER KHEECANADIAN SYLLABICS CARRIER KHICANADIAN" + + " SYLLABICS CARRIER KHACANADIAN SYLLABICS CARRIER KKUCANADIAN SYLLABICS C" + + "ARRIER KKOCANADIAN SYLLABICS CARRIER KKECANADIAN SYLLABICS CARRIER KKEEC" + + "ANADIAN SYLLABICS CARRIER KKICANADIAN SYLLABICS CARRIER KKACANADIAN SYLL" + + "ABICS CARRIER KKCANADIAN SYLLABICS CARRIER NUCANADIAN SYLLABICS CARRIER " + + "NOCANADIAN SYLLABICS CARRIER NECANADIAN SYLLABICS CARRIER NEECANADIAN SY" + + "LLABICS CARRIER NICANADIAN SYLLABICS CARRIER NACANADIAN SYLLABICS CARRIE" + + "R MUCANADIAN SYLLABICS CARRIER MOCANADIAN SYLLABICS CARRIER MECANADIAN S" + + "YLLABICS CARRIER MEECANADIAN SYLLABICS CARRIER MICANADIAN SYLLABICS CARR" + + "IER MACANADIAN SYLLABICS CARRIER YUCANADIAN SYLLABICS CARRIER YOCANADIAN" + + " SYLLABICS CARRIER YECANADIAN SYLLABICS CARRIER YEECANADIAN SYLLABICS CA" + + "RRIER YICANADIAN SYLLABICS CARRIER YACANADIAN SYLLABICS CARRIER JUCANADI" + + "AN SYLLABICS SAYISI JUCANADIAN SYLLABICS CARRIER JOCANADIAN SYLLABICS CA" + + "RRIER JECANADIAN SYLLABICS CARRIER JEECANADIAN SYLLABICS CARRIER JICANAD" + + "IAN SYLLABICS SAYISI JICANADIAN SYLLABICS CARRIER JACANADIAN SYLLABICS C" + + "ARRIER JJUCANADIAN SYLLABICS CARRIER JJOCANADIAN SYLLABICS CARRIER JJECA" + + "NADIAN SYLLABICS CARRIER JJEECANADIAN SYLLABICS CARRIER JJICANADIAN SYLL" + + "ABICS CARRIER JJACANADIAN SYLLABICS CARRIER LUCANADIAN SYLLABICS CARRIER" + + " LOCANADIAN SYLLABICS CARRIER LECANADIAN SYLLABICS CARRIER LEECANADIAN S" + + "YLLABICS CARRIER LICANADIAN SYLLABICS CARRIER LACANADIAN SYLLABICS CARRI" + + "ER DLUCANADIAN SYLLABICS CARRIER DLOCANADIAN SYLLABICS CARRIER DLECANADI" + + "AN SYLLABICS CARRIER DLEECANADIAN SYLLABICS CARRIER DLICANADIAN SYLLABIC" + + "S CARRIER DLACANADIAN SYLLABICS CARRIER LHUCANADIAN SYLLABICS CARRIER LH" + + "OCANADIAN SYLLABICS CARRIER LHECANADIAN SYLLABICS CARRIER LHEECANADIAN S" + + "YLLABICS CARRIER LHICANADIAN SYLLABICS CARRIER LHACANADIAN SYLLABICS CAR") + ("" + + "RIER TLHUCANADIAN SYLLABICS CARRIER TLHOCANADIAN SYLLABICS CARRIER TLHEC" + + "ANADIAN SYLLABICS CARRIER TLHEECANADIAN SYLLABICS CARRIER TLHICANADIAN S" + + "YLLABICS CARRIER TLHACANADIAN SYLLABICS CARRIER TLUCANADIAN SYLLABICS CA" + + "RRIER TLOCANADIAN SYLLABICS CARRIER TLECANADIAN SYLLABICS CARRIER TLEECA" + + "NADIAN SYLLABICS CARRIER TLICANADIAN SYLLABICS CARRIER TLACANADIAN SYLLA" + + "BICS CARRIER ZUCANADIAN SYLLABICS CARRIER ZOCANADIAN SYLLABICS CARRIER Z" + + "ECANADIAN SYLLABICS CARRIER ZEECANADIAN SYLLABICS CARRIER ZICANADIAN SYL" + + "LABICS CARRIER ZACANADIAN SYLLABICS CARRIER ZCANADIAN SYLLABICS CARRIER " + + "INITIAL ZCANADIAN SYLLABICS CARRIER DZUCANADIAN SYLLABICS CARRIER DZOCAN" + + "ADIAN SYLLABICS CARRIER DZECANADIAN SYLLABICS CARRIER DZEECANADIAN SYLLA" + + "BICS CARRIER DZICANADIAN SYLLABICS CARRIER DZACANADIAN SYLLABICS CARRIER" + + " SUCANADIAN SYLLABICS CARRIER SOCANADIAN SYLLABICS CARRIER SECANADIAN SY" + + "LLABICS CARRIER SEECANADIAN SYLLABICS CARRIER SICANADIAN SYLLABICS CARRI" + + "ER SACANADIAN SYLLABICS CARRIER SHUCANADIAN SYLLABICS CARRIER SHOCANADIA" + + "N SYLLABICS CARRIER SHECANADIAN SYLLABICS CARRIER SHEECANADIAN SYLLABICS" + + " CARRIER SHICANADIAN SYLLABICS CARRIER SHACANADIAN SYLLABICS CARRIER SHC" + + "ANADIAN SYLLABICS CARRIER TSUCANADIAN SYLLABICS CARRIER TSOCANADIAN SYLL" + + "ABICS CARRIER TSECANADIAN SYLLABICS CARRIER TSEECANADIAN SYLLABICS CARRI" + + "ER TSICANADIAN SYLLABICS CARRIER TSACANADIAN SYLLABICS CARRIER CHUCANADI" + + "AN SYLLABICS CARRIER CHOCANADIAN SYLLABICS CARRIER CHECANADIAN SYLLABICS" + + " CARRIER CHEECANADIAN SYLLABICS CARRIER CHICANADIAN SYLLABICS CARRIER CH" + + "ACANADIAN SYLLABICS CARRIER TTSUCANADIAN SYLLABICS CARRIER TTSOCANADIAN " + + "SYLLABICS CARRIER TTSECANADIAN SYLLABICS CARRIER TTSEECANADIAN SYLLABICS" + + " CARRIER TTSICANADIAN SYLLABICS CARRIER TTSACANADIAN SYLLABICS CHI SIGNC" + + "ANADIAN SYLLABICS FULL STOPCANADIAN SYLLABICS QAICANADIAN SYLLABICS NGAI" + + "CANADIAN SYLLABICS NNGICANADIAN SYLLABICS NNGIICANADIAN SYLLABICS NNGOCA" + + "NADIAN SYLLABICS NNGOOCANADIAN SYLLABICS NNGACANADIAN SYLLABICS NNGAACAN" + + "ADIAN SYLLABICS WOODS-CREE THWEECANADIAN SYLLABICS WOODS-CREE THWICANADI" + + "AN SYLLABICS WOODS-CREE THWIICANADIAN SYLLABICS WOODS-CREE THWOCANADIAN " + + "SYLLABICS WOODS-CREE THWOOCANADIAN SYLLABICS WOODS-CREE THWACANADIAN SYL" + + "LABICS WOODS-CREE THWAACANADIAN SYLLABICS WOODS-CREE FINAL THCANADIAN SY" + + "LLABICS BLACKFOOT WOGHAM SPACE MARKOGHAM LETTER BEITHOGHAM LETTER LUISOG" + + "HAM LETTER FEARNOGHAM LETTER SAILOGHAM LETTER NIONOGHAM LETTER UATHOGHAM" + + " LETTER DAIROGHAM LETTER TINNEOGHAM LETTER COLLOGHAM LETTER CEIRTOGHAM L" + + "ETTER MUINOGHAM LETTER GORTOGHAM LETTER NGEADALOGHAM LETTER STRAIFOGHAM " + + "LETTER RUISOGHAM LETTER AILMOGHAM LETTER ONNOGHAM LETTER UROGHAM LETTER " + + "EADHADHOGHAM LETTER IODHADHOGHAM LETTER EABHADHOGHAM LETTER OROGHAM LETT" + + "ER UILLEANNOGHAM LETTER IFINOGHAM LETTER EAMHANCHOLLOGHAM LETTER PEITHOG" + + "HAM FEATHER MARKOGHAM REVERSED FEATHER MARKRUNIC LETTER FEHU FEOH FE FRU" + + "NIC LETTER VRUNIC LETTER URUZ UR URUNIC LETTER YRRUNIC LETTER YRUNIC LET" + + "TER WRUNIC LETTER THURISAZ THURS THORNRUNIC LETTER ETHRUNIC LETTER ANSUZ" + + " ARUNIC LETTER OS ORUNIC LETTER AC ARUNIC LETTER AESCRUNIC LETTER LONG-B" + + "RANCH-OSS ORUNIC LETTER SHORT-TWIG-OSS ORUNIC LETTER ORUNIC LETTER OERUN" + + "IC LETTER ONRUNIC LETTER RAIDO RAD REID RRUNIC LETTER KAUNARUNIC LETTER " + + "CENRUNIC LETTER KAUN KRUNIC LETTER GRUNIC LETTER ENGRUNIC LETTER GEBO GY" + + "FU GRUNIC LETTER GARRUNIC LETTER WUNJO WYNN WRUNIC LETTER HAGLAZ HRUNIC " + + "LETTER HAEGL HRUNIC LETTER LONG-BRANCH-HAGALL HRUNIC LETTER SHORT-TWIG-H" + + "AGALL HRUNIC LETTER NAUDIZ NYD NAUD NRUNIC LETTER SHORT-TWIG-NAUD NRUNIC" + + " LETTER DOTTED-NRUNIC LETTER ISAZ IS ISS IRUNIC LETTER ERUNIC LETTER JER" + + "AN JRUNIC LETTER GERRUNIC LETTER LONG-BRANCH-AR AERUNIC LETTER SHORT-TWI" + + "G-AR ARUNIC LETTER IWAZ EOHRUNIC LETTER PERTHO PEORTH PRUNIC LETTER ALGI" + + "Z EOLHXRUNIC LETTER SOWILO SRUNIC LETTER SIGEL LONG-BRANCH-SOL SRUNIC LE" + + "TTER SHORT-TWIG-SOL SRUNIC LETTER CRUNIC LETTER ZRUNIC LETTER TIWAZ TIR " + + "TYR TRUNIC LETTER SHORT-TWIG-TYR TRUNIC LETTER DRUNIC LETTER BERKANAN BE" + + "ORC BJARKAN BRUNIC LETTER SHORT-TWIG-BJARKAN BRUNIC LETTER DOTTED-PRUNIC" + + " LETTER OPEN-PRUNIC LETTER EHWAZ EH ERUNIC LETTER MANNAZ MAN MRUNIC LETT" + + "ER LONG-BRANCH-MADR MRUNIC LETTER SHORT-TWIG-MADR MRUNIC LETTER LAUKAZ L" + + "AGU LOGR LRUNIC LETTER DOTTED-LRUNIC LETTER INGWAZRUNIC LETTER INGRUNIC " + + "LETTER DAGAZ DAEG DRUNIC LETTER OTHALAN ETHEL ORUNIC LETTER EARRUNIC LET" + + "TER IORRUNIC LETTER CWEORTHRUNIC LETTER CALCRUNIC LETTER CEALCRUNIC LETT" + + "ER STANRUNIC LETTER LONG-BRANCH-YRRUNIC LETTER SHORT-TWIG-YRRUNIC LETTER" + + " ICELANDIC-YRRUNIC LETTER QRUNIC LETTER XRUNIC SINGLE PUNCTUATIONRUNIC M" + + "ULTIPLE PUNCTUATIONRUNIC CROSS PUNCTUATIONRUNIC ARLAUG SYMBOLRUNIC TVIMA" + + "DUR SYMBOLRUNIC BELGTHOR SYMBOLRUNIC LETTER KRUNIC LETTER SHRUNIC LETTER") + ("" + + " OORUNIC LETTER FRANKS CASKET OSRUNIC LETTER FRANKS CASKET ISRUNIC LETTE" + + "R FRANKS CASKET EHRUNIC LETTER FRANKS CASKET ACRUNIC LETTER FRANKS CASKE" + + "T AESCTAGALOG LETTER ATAGALOG LETTER ITAGALOG LETTER UTAGALOG LETTER KAT" + + "AGALOG LETTER GATAGALOG LETTER NGATAGALOG LETTER TATAGALOG LETTER DATAGA" + + "LOG LETTER NATAGALOG LETTER PATAGALOG LETTER BATAGALOG LETTER MATAGALOG " + + "LETTER YATAGALOG LETTER LATAGALOG LETTER WATAGALOG LETTER SATAGALOG LETT" + + "ER HATAGALOG VOWEL SIGN ITAGALOG VOWEL SIGN UTAGALOG SIGN VIRAMAHANUNOO " + + "LETTER AHANUNOO LETTER IHANUNOO LETTER UHANUNOO LETTER KAHANUNOO LETTER " + + "GAHANUNOO LETTER NGAHANUNOO LETTER TAHANUNOO LETTER DAHANUNOO LETTER NAH" + + "ANUNOO LETTER PAHANUNOO LETTER BAHANUNOO LETTER MAHANUNOO LETTER YAHANUN" + + "OO LETTER RAHANUNOO LETTER LAHANUNOO LETTER WAHANUNOO LETTER SAHANUNOO L" + + "ETTER HAHANUNOO VOWEL SIGN IHANUNOO VOWEL SIGN UHANUNOO SIGN PAMUDPODPHI" + + "LIPPINE SINGLE PUNCTUATIONPHILIPPINE DOUBLE PUNCTUATIONBUHID LETTER ABUH" + + "ID LETTER IBUHID LETTER UBUHID LETTER KABUHID LETTER GABUHID LETTER NGAB" + + "UHID LETTER TABUHID LETTER DABUHID LETTER NABUHID LETTER PABUHID LETTER " + + "BABUHID LETTER MABUHID LETTER YABUHID LETTER RABUHID LETTER LABUHID LETT" + + "ER WABUHID LETTER SABUHID LETTER HABUHID VOWEL SIGN IBUHID VOWEL SIGN UT" + + "AGBANWA LETTER ATAGBANWA LETTER ITAGBANWA LETTER UTAGBANWA LETTER KATAGB" + + "ANWA LETTER GATAGBANWA LETTER NGATAGBANWA LETTER TATAGBANWA LETTER DATAG" + + "BANWA LETTER NATAGBANWA LETTER PATAGBANWA LETTER BATAGBANWA LETTER MATAG" + + "BANWA LETTER YATAGBANWA LETTER LATAGBANWA LETTER WATAGBANWA LETTER SATAG" + + "BANWA VOWEL SIGN ITAGBANWA VOWEL SIGN UKHMER LETTER KAKHMER LETTER KHAKH" + + "MER LETTER KOKHMER LETTER KHOKHMER LETTER NGOKHMER LETTER CAKHMER LETTER" + + " CHAKHMER LETTER COKHMER LETTER CHOKHMER LETTER NYOKHMER LETTER DAKHMER " + + "LETTER TTHAKHMER LETTER DOKHMER LETTER TTHOKHMER LETTER NNOKHMER LETTER " + + "TAKHMER LETTER THAKHMER LETTER TOKHMER LETTER THOKHMER LETTER NOKHMER LE" + + "TTER BAKHMER LETTER PHAKHMER LETTER POKHMER LETTER PHOKHMER LETTER MOKHM" + + "ER LETTER YOKHMER LETTER ROKHMER LETTER LOKHMER LETTER VOKHMER LETTER SH" + + "AKHMER LETTER SSOKHMER LETTER SAKHMER LETTER HAKHMER LETTER LAKHMER LETT" + + "ER QAKHMER INDEPENDENT VOWEL QAQKHMER INDEPENDENT VOWEL QAAKHMER INDEPEN" + + "DENT VOWEL QIKHMER INDEPENDENT VOWEL QIIKHMER INDEPENDENT VOWEL QUKHMER " + + "INDEPENDENT VOWEL QUKKHMER INDEPENDENT VOWEL QUUKHMER INDEPENDENT VOWEL " + + "QUUVKHMER INDEPENDENT VOWEL RYKHMER INDEPENDENT VOWEL RYYKHMER INDEPENDE" + + "NT VOWEL LYKHMER INDEPENDENT VOWEL LYYKHMER INDEPENDENT VOWEL QEKHMER IN" + + "DEPENDENT VOWEL QAIKHMER INDEPENDENT VOWEL QOO TYPE ONEKHMER INDEPENDENT" + + " VOWEL QOO TYPE TWOKHMER INDEPENDENT VOWEL QAUKHMER VOWEL INHERENT AQKHM" + + "ER VOWEL INHERENT AAKHMER VOWEL SIGN AAKHMER VOWEL SIGN IKHMER VOWEL SIG" + + "N IIKHMER VOWEL SIGN YKHMER VOWEL SIGN YYKHMER VOWEL SIGN UKHMER VOWEL S" + + "IGN UUKHMER VOWEL SIGN UAKHMER VOWEL SIGN OEKHMER VOWEL SIGN YAKHMER VOW" + + "EL SIGN IEKHMER VOWEL SIGN EKHMER VOWEL SIGN AEKHMER VOWEL SIGN AIKHMER " + + "VOWEL SIGN OOKHMER VOWEL SIGN AUKHMER SIGN NIKAHITKHMER SIGN REAHMUKKHME" + + "R SIGN YUUKALEAPINTUKHMER SIGN MUUSIKATOANKHMER SIGN TRIISAPKHMER SIGN B" + + "ANTOCKHMER SIGN ROBATKHMER SIGN TOANDAKHIATKHMER SIGN KAKABATKHMER SIGN " + + "AHSDAKHMER SIGN SAMYOK SANNYAKHMER SIGN VIRIAMKHMER SIGN COENGKHMER SIGN" + + " BATHAMASATKHMER SIGN KHANKHMER SIGN BARIYOOSANKHMER SIGN CAMNUC PII KUU" + + "HKHMER SIGN LEK TOOKHMER SIGN BEYYALKHMER SIGN PHNAEK MUANKHMER SIGN KOO" + + "MUUTKHMER CURRENCY SYMBOL RIELKHMER SIGN AVAKRAHASANYAKHMER SIGN ATTHACA" + + "NKHMER DIGIT ZEROKHMER DIGIT ONEKHMER DIGIT TWOKHMER DIGIT THREEKHMER DI" + + "GIT FOURKHMER DIGIT FIVEKHMER DIGIT SIXKHMER DIGIT SEVENKHMER DIGIT EIGH" + + "TKHMER DIGIT NINEKHMER SYMBOL LEK ATTAK SONKHMER SYMBOL LEK ATTAK MUOYKH" + + "MER SYMBOL LEK ATTAK PIIKHMER SYMBOL LEK ATTAK BEIKHMER SYMBOL LEK ATTAK" + + " BUONKHMER SYMBOL LEK ATTAK PRAMKHMER SYMBOL LEK ATTAK PRAM-MUOYKHMER SY" + + "MBOL LEK ATTAK PRAM-PIIKHMER SYMBOL LEK ATTAK PRAM-BEIKHMER SYMBOL LEK A" + + "TTAK PRAM-BUONMONGOLIAN BIRGAMONGOLIAN ELLIPSISMONGOLIAN COMMAMONGOLIAN " + + "FULL STOPMONGOLIAN COLONMONGOLIAN FOUR DOTSMONGOLIAN TODO SOFT HYPHENMON" + + "GOLIAN SIBE SYLLABLE BOUNDARY MARKERMONGOLIAN MANCHU COMMAMONGOLIAN MANC" + + "HU FULL STOPMONGOLIAN NIRUGUMONGOLIAN FREE VARIATION SELECTOR ONEMONGOLI" + + "AN FREE VARIATION SELECTOR TWOMONGOLIAN FREE VARIATION SELECTOR THREEMON" + + "GOLIAN VOWEL SEPARATORMONGOLIAN DIGIT ZEROMONGOLIAN DIGIT ONEMONGOLIAN D" + + "IGIT TWOMONGOLIAN DIGIT THREEMONGOLIAN DIGIT FOURMONGOLIAN DIGIT FIVEMON" + + "GOLIAN DIGIT SIXMONGOLIAN DIGIT SEVENMONGOLIAN DIGIT EIGHTMONGOLIAN DIGI" + + "T NINEMONGOLIAN LETTER AMONGOLIAN LETTER EMONGOLIAN LETTER IMONGOLIAN LE" + + "TTER OMONGOLIAN LETTER UMONGOLIAN LETTER OEMONGOLIAN LETTER UEMONGOLIAN " + + "LETTER EEMONGOLIAN LETTER NAMONGOLIAN LETTER ANGMONGOLIAN LETTER BAMONGO") + ("" + + "LIAN LETTER PAMONGOLIAN LETTER QAMONGOLIAN LETTER GAMONGOLIAN LETTER MAM" + + "ONGOLIAN LETTER LAMONGOLIAN LETTER SAMONGOLIAN LETTER SHAMONGOLIAN LETTE" + + "R TAMONGOLIAN LETTER DAMONGOLIAN LETTER CHAMONGOLIAN LETTER JAMONGOLIAN " + + "LETTER YAMONGOLIAN LETTER RAMONGOLIAN LETTER WAMONGOLIAN LETTER FAMONGOL" + + "IAN LETTER KAMONGOLIAN LETTER KHAMONGOLIAN LETTER TSAMONGOLIAN LETTER ZA" + + "MONGOLIAN LETTER HAAMONGOLIAN LETTER ZRAMONGOLIAN LETTER LHAMONGOLIAN LE" + + "TTER ZHIMONGOLIAN LETTER CHIMONGOLIAN LETTER TODO LONG VOWEL SIGNMONGOLI" + + "AN LETTER TODO EMONGOLIAN LETTER TODO IMONGOLIAN LETTER TODO OMONGOLIAN " + + "LETTER TODO UMONGOLIAN LETTER TODO OEMONGOLIAN LETTER TODO UEMONGOLIAN L" + + "ETTER TODO ANGMONGOLIAN LETTER TODO BAMONGOLIAN LETTER TODO PAMONGOLIAN " + + "LETTER TODO QAMONGOLIAN LETTER TODO GAMONGOLIAN LETTER TODO MAMONGOLIAN " + + "LETTER TODO TAMONGOLIAN LETTER TODO DAMONGOLIAN LETTER TODO CHAMONGOLIAN" + + " LETTER TODO JAMONGOLIAN LETTER TODO TSAMONGOLIAN LETTER TODO YAMONGOLIA" + + "N LETTER TODO WAMONGOLIAN LETTER TODO KAMONGOLIAN LETTER TODO GAAMONGOLI" + + "AN LETTER TODO HAAMONGOLIAN LETTER TODO JIAMONGOLIAN LETTER TODO NIAMONG" + + "OLIAN LETTER TODO DZAMONGOLIAN LETTER SIBE EMONGOLIAN LETTER SIBE IMONGO" + + "LIAN LETTER SIBE IYMONGOLIAN LETTER SIBE UEMONGOLIAN LETTER SIBE UMONGOL" + + "IAN LETTER SIBE ANGMONGOLIAN LETTER SIBE KAMONGOLIAN LETTER SIBE GAMONGO" + + "LIAN LETTER SIBE HAMONGOLIAN LETTER SIBE PAMONGOLIAN LETTER SIBE SHAMONG" + + "OLIAN LETTER SIBE TAMONGOLIAN LETTER SIBE DAMONGOLIAN LETTER SIBE JAMONG" + + "OLIAN LETTER SIBE FAMONGOLIAN LETTER SIBE GAAMONGOLIAN LETTER SIBE HAAMO" + + "NGOLIAN LETTER SIBE TSAMONGOLIAN LETTER SIBE ZAMONGOLIAN LETTER SIBE RAA" + + "MONGOLIAN LETTER SIBE CHAMONGOLIAN LETTER SIBE ZHAMONGOLIAN LETTER MANCH" + + "U IMONGOLIAN LETTER MANCHU KAMONGOLIAN LETTER MANCHU RAMONGOLIAN LETTER " + + "MANCHU FAMONGOLIAN LETTER MANCHU ZHAMONGOLIAN LETTER ALI GALI ANUSVARA O" + + "NEMONGOLIAN LETTER ALI GALI VISARGA ONEMONGOLIAN LETTER ALI GALI DAMARUM" + + "ONGOLIAN LETTER ALI GALI UBADAMAMONGOLIAN LETTER ALI GALI INVERTED UBADA" + + "MAMONGOLIAN LETTER ALI GALI BALUDAMONGOLIAN LETTER ALI GALI THREE BALUDA" + + "MONGOLIAN LETTER ALI GALI AMONGOLIAN LETTER ALI GALI IMONGOLIAN LETTER A" + + "LI GALI KAMONGOLIAN LETTER ALI GALI NGAMONGOLIAN LETTER ALI GALI CAMONGO" + + "LIAN LETTER ALI GALI TTAMONGOLIAN LETTER ALI GALI TTHAMONGOLIAN LETTER A" + + "LI GALI DDAMONGOLIAN LETTER ALI GALI NNAMONGOLIAN LETTER ALI GALI TAMONG" + + "OLIAN LETTER ALI GALI DAMONGOLIAN LETTER ALI GALI PAMONGOLIAN LETTER ALI" + + " GALI PHAMONGOLIAN LETTER ALI GALI SSAMONGOLIAN LETTER ALI GALI ZHAMONGO" + + "LIAN LETTER ALI GALI ZAMONGOLIAN LETTER ALI GALI AHMONGOLIAN LETTER TODO" + + " ALI GALI TAMONGOLIAN LETTER TODO ALI GALI ZHAMONGOLIAN LETTER MANCHU AL" + + "I GALI GHAMONGOLIAN LETTER MANCHU ALI GALI NGAMONGOLIAN LETTER MANCHU AL" + + "I GALI CAMONGOLIAN LETTER MANCHU ALI GALI JHAMONGOLIAN LETTER MANCHU ALI" + + " GALI TTAMONGOLIAN LETTER MANCHU ALI GALI DDHAMONGOLIAN LETTER MANCHU AL" + + "I GALI TAMONGOLIAN LETTER MANCHU ALI GALI DHAMONGOLIAN LETTER MANCHU ALI" + + " GALI SSAMONGOLIAN LETTER MANCHU ALI GALI CYAMONGOLIAN LETTER MANCHU ALI" + + " GALI ZHAMONGOLIAN LETTER MANCHU ALI GALI ZAMONGOLIAN LETTER ALI GALI HA" + + "LF UMONGOLIAN LETTER ALI GALI HALF YAMONGOLIAN LETTER MANCHU ALI GALI BH" + + "AMONGOLIAN LETTER ALI GALI DAGALGAMONGOLIAN LETTER MANCHU ALI GALI LHACA" + + "NADIAN SYLLABICS OYCANADIAN SYLLABICS AYCANADIAN SYLLABICS AAYCANADIAN S" + + "YLLABICS WAYCANADIAN SYLLABICS POYCANADIAN SYLLABICS PAYCANADIAN SYLLABI" + + "CS PWOYCANADIAN SYLLABICS TAYCANADIAN SYLLABICS KAYCANADIAN SYLLABICS KW" + + "AYCANADIAN SYLLABICS MAYCANADIAN SYLLABICS NOYCANADIAN SYLLABICS NAYCANA" + + "DIAN SYLLABICS LAYCANADIAN SYLLABICS SOYCANADIAN SYLLABICS SAYCANADIAN S" + + "YLLABICS SHOYCANADIAN SYLLABICS SHAYCANADIAN SYLLABICS SHWOYCANADIAN SYL" + + "LABICS YOYCANADIAN SYLLABICS YAYCANADIAN SYLLABICS RAYCANADIAN SYLLABICS" + + " NWICANADIAN SYLLABICS OJIBWAY NWICANADIAN SYLLABICS NWIICANADIAN SYLLAB" + + "ICS OJIBWAY NWIICANADIAN SYLLABICS NWOCANADIAN SYLLABICS OJIBWAY NWOCANA" + + "DIAN SYLLABICS NWOOCANADIAN SYLLABICS OJIBWAY NWOOCANADIAN SYLLABICS RWE" + + "ECANADIAN SYLLABICS RWICANADIAN SYLLABICS RWIICANADIAN SYLLABICS RWOCANA" + + "DIAN SYLLABICS RWOOCANADIAN SYLLABICS RWACANADIAN SYLLABICS OJIBWAY PCAN" + + "ADIAN SYLLABICS OJIBWAY TCANADIAN SYLLABICS OJIBWAY KCANADIAN SYLLABICS " + + "OJIBWAY CCANADIAN SYLLABICS OJIBWAY MCANADIAN SYLLABICS OJIBWAY NCANADIA" + + "N SYLLABICS OJIBWAY SCANADIAN SYLLABICS OJIBWAY SHCANADIAN SYLLABICS EAS" + + "TERN WCANADIAN SYLLABICS WESTERN WCANADIAN SYLLABICS FINAL SMALL RINGCAN" + + "ADIAN SYLLABICS FINAL RAISED DOTCANADIAN SYLLABICS R-CREE RWECANADIAN SY" + + "LLABICS WEST-CREE LOOCANADIAN SYLLABICS WEST-CREE LAACANADIAN SYLLABICS " + + "THWECANADIAN SYLLABICS THWACANADIAN SYLLABICS TTHWECANADIAN SYLLABICS TT" + + "HOOCANADIAN SYLLABICS TTHAACANADIAN SYLLABICS TLHWECANADIAN SYLLABICS TL") + ("" + + "HOOCANADIAN SYLLABICS SAYISI SHWECANADIAN SYLLABICS SAYISI SHOOCANADIAN " + + "SYLLABICS SAYISI HOOCANADIAN SYLLABICS CARRIER GWUCANADIAN SYLLABICS CAR" + + "RIER DENE GEECANADIAN SYLLABICS CARRIER GAACANADIAN SYLLABICS CARRIER GW" + + "ACANADIAN SYLLABICS SAYISI JUUCANADIAN SYLLABICS CARRIER JWACANADIAN SYL" + + "LABICS BEAVER DENE LCANADIAN SYLLABICS BEAVER DENE RCANADIAN SYLLABICS C" + + "ARRIER DENTAL SLIMBU VOWEL-CARRIER LETTERLIMBU LETTER KALIMBU LETTER KHA" + + "LIMBU LETTER GALIMBU LETTER GHALIMBU LETTER NGALIMBU LETTER CALIMBU LETT" + + "ER CHALIMBU LETTER JALIMBU LETTER JHALIMBU LETTER YANLIMBU LETTER TALIMB" + + "U LETTER THALIMBU LETTER DALIMBU LETTER DHALIMBU LETTER NALIMBU LETTER P" + + "ALIMBU LETTER PHALIMBU LETTER BALIMBU LETTER BHALIMBU LETTER MALIMBU LET" + + "TER YALIMBU LETTER RALIMBU LETTER LALIMBU LETTER WALIMBU LETTER SHALIMBU" + + " LETTER SSALIMBU LETTER SALIMBU LETTER HALIMBU LETTER GYANLIMBU LETTER T" + + "RALIMBU VOWEL SIGN ALIMBU VOWEL SIGN ILIMBU VOWEL SIGN ULIMBU VOWEL SIGN" + + " EELIMBU VOWEL SIGN AILIMBU VOWEL SIGN OOLIMBU VOWEL SIGN AULIMBU VOWEL " + + "SIGN ELIMBU VOWEL SIGN OLIMBU SUBJOINED LETTER YALIMBU SUBJOINED LETTER " + + "RALIMBU SUBJOINED LETTER WALIMBU SMALL LETTER KALIMBU SMALL LETTER NGALI" + + "MBU SMALL LETTER ANUSVARALIMBU SMALL LETTER TALIMBU SMALL LETTER NALIMBU" + + " SMALL LETTER PALIMBU SMALL LETTER MALIMBU SMALL LETTER RALIMBU SMALL LE" + + "TTER LALIMBU SIGN MUKPHRENGLIMBU SIGN KEMPHRENGLIMBU SIGN SA-ILIMBU SIGN" + + " LOOLIMBU EXCLAMATION MARKLIMBU QUESTION MARKLIMBU DIGIT ZEROLIMBU DIGIT" + + " ONELIMBU DIGIT TWOLIMBU DIGIT THREELIMBU DIGIT FOURLIMBU DIGIT FIVELIMB" + + "U DIGIT SIXLIMBU DIGIT SEVENLIMBU DIGIT EIGHTLIMBU DIGIT NINETAI LE LETT" + + "ER KATAI LE LETTER XATAI LE LETTER NGATAI LE LETTER TSATAI LE LETTER SAT" + + "AI LE LETTER YATAI LE LETTER TATAI LE LETTER THATAI LE LETTER LATAI LE L" + + "ETTER PATAI LE LETTER PHATAI LE LETTER MATAI LE LETTER FATAI LE LETTER V" + + "ATAI LE LETTER HATAI LE LETTER QATAI LE LETTER KHATAI LE LETTER TSHATAI " + + "LE LETTER NATAI LE LETTER ATAI LE LETTER ITAI LE LETTER EETAI LE LETTER " + + "EHTAI LE LETTER UTAI LE LETTER OOTAI LE LETTER OTAI LE LETTER UETAI LE L" + + "ETTER ETAI LE LETTER AUETAI LE LETTER AITAI LE LETTER TONE-2TAI LE LETTE" + + "R TONE-3TAI LE LETTER TONE-4TAI LE LETTER TONE-5TAI LE LETTER TONE-6NEW " + + "TAI LUE LETTER HIGH QANEW TAI LUE LETTER LOW QANEW TAI LUE LETTER HIGH K" + + "ANEW TAI LUE LETTER HIGH XANEW TAI LUE LETTER HIGH NGANEW TAI LUE LETTER" + + " LOW KANEW TAI LUE LETTER LOW XANEW TAI LUE LETTER LOW NGANEW TAI LUE LE" + + "TTER HIGH TSANEW TAI LUE LETTER HIGH SANEW TAI LUE LETTER HIGH YANEW TAI" + + " LUE LETTER LOW TSANEW TAI LUE LETTER LOW SANEW TAI LUE LETTER LOW YANEW" + + " TAI LUE LETTER HIGH TANEW TAI LUE LETTER HIGH THANEW TAI LUE LETTER HIG" + + "H NANEW TAI LUE LETTER LOW TANEW TAI LUE LETTER LOW THANEW TAI LUE LETTE" + + "R LOW NANEW TAI LUE LETTER HIGH PANEW TAI LUE LETTER HIGH PHANEW TAI LUE" + + " LETTER HIGH MANEW TAI LUE LETTER LOW PANEW TAI LUE LETTER LOW PHANEW TA" + + "I LUE LETTER LOW MANEW TAI LUE LETTER HIGH FANEW TAI LUE LETTER HIGH VAN" + + "EW TAI LUE LETTER HIGH LANEW TAI LUE LETTER LOW FANEW TAI LUE LETTER LOW" + + " VANEW TAI LUE LETTER LOW LANEW TAI LUE LETTER HIGH HANEW TAI LUE LETTER" + + " HIGH DANEW TAI LUE LETTER HIGH BANEW TAI LUE LETTER LOW HANEW TAI LUE L" + + "ETTER LOW DANEW TAI LUE LETTER LOW BANEW TAI LUE LETTER HIGH KVANEW TAI " + + "LUE LETTER HIGH XVANEW TAI LUE LETTER LOW KVANEW TAI LUE LETTER LOW XVAN" + + "EW TAI LUE LETTER HIGH SUANEW TAI LUE LETTER LOW SUANEW TAI LUE VOWEL SI" + + "GN VOWEL SHORTENERNEW TAI LUE VOWEL SIGN AANEW TAI LUE VOWEL SIGN IINEW " + + "TAI LUE VOWEL SIGN UNEW TAI LUE VOWEL SIGN UUNEW TAI LUE VOWEL SIGN ENEW" + + " TAI LUE VOWEL SIGN AENEW TAI LUE VOWEL SIGN ONEW TAI LUE VOWEL SIGN OAN" + + "EW TAI LUE VOWEL SIGN UENEW TAI LUE VOWEL SIGN AYNEW TAI LUE VOWEL SIGN " + + "AAYNEW TAI LUE VOWEL SIGN UYNEW TAI LUE VOWEL SIGN OYNEW TAI LUE VOWEL S" + + "IGN OAYNEW TAI LUE VOWEL SIGN UEYNEW TAI LUE VOWEL SIGN IYNEW TAI LUE LE" + + "TTER FINAL VNEW TAI LUE LETTER FINAL NGNEW TAI LUE LETTER FINAL NNEW TAI" + + " LUE LETTER FINAL MNEW TAI LUE LETTER FINAL KNEW TAI LUE LETTER FINAL DN" + + "EW TAI LUE LETTER FINAL BNEW TAI LUE TONE MARK-1NEW TAI LUE TONE MARK-2N" + + "EW TAI LUE DIGIT ZERONEW TAI LUE DIGIT ONENEW TAI LUE DIGIT TWONEW TAI L" + + "UE DIGIT THREENEW TAI LUE DIGIT FOURNEW TAI LUE DIGIT FIVENEW TAI LUE DI" + + "GIT SIXNEW TAI LUE DIGIT SEVENNEW TAI LUE DIGIT EIGHTNEW TAI LUE DIGIT N" + + "INENEW TAI LUE THAM DIGIT ONENEW TAI LUE SIGN LAENEW TAI LUE SIGN LAEVKH" + + "MER SYMBOL PATHAMASATKHMER SYMBOL MUOY KOETKHMER SYMBOL PII KOETKHMER SY" + + "MBOL BEI KOETKHMER SYMBOL BUON KOETKHMER SYMBOL PRAM KOETKHMER SYMBOL PR" + + "AM-MUOY KOETKHMER SYMBOL PRAM-PII KOETKHMER SYMBOL PRAM-BEI KOETKHMER SY" + + "MBOL PRAM-BUON KOETKHMER SYMBOL DAP KOETKHMER SYMBOL DAP-MUOY KOETKHMER " + + "SYMBOL DAP-PII KOETKHMER SYMBOL DAP-BEI KOETKHMER SYMBOL DAP-BUON KOETKH") + ("" + + "MER SYMBOL DAP-PRAM KOETKHMER SYMBOL TUTEYASATKHMER SYMBOL MUOY ROCKHMER" + + " SYMBOL PII ROCKHMER SYMBOL BEI ROCKHMER SYMBOL BUON ROCKHMER SYMBOL PRA" + + "M ROCKHMER SYMBOL PRAM-MUOY ROCKHMER SYMBOL PRAM-PII ROCKHMER SYMBOL PRA" + + "M-BEI ROCKHMER SYMBOL PRAM-BUON ROCKHMER SYMBOL DAP ROCKHMER SYMBOL DAP-" + + "MUOY ROCKHMER SYMBOL DAP-PII ROCKHMER SYMBOL DAP-BEI ROCKHMER SYMBOL DAP" + + "-BUON ROCKHMER SYMBOL DAP-PRAM ROCBUGINESE LETTER KABUGINESE LETTER GABU" + + "GINESE LETTER NGABUGINESE LETTER NGKABUGINESE LETTER PABUGINESE LETTER B" + + "ABUGINESE LETTER MABUGINESE LETTER MPABUGINESE LETTER TABUGINESE LETTER " + + "DABUGINESE LETTER NABUGINESE LETTER NRABUGINESE LETTER CABUGINESE LETTER" + + " JABUGINESE LETTER NYABUGINESE LETTER NYCABUGINESE LETTER YABUGINESE LET" + + "TER RABUGINESE LETTER LABUGINESE LETTER VABUGINESE LETTER SABUGINESE LET" + + "TER ABUGINESE LETTER HABUGINESE VOWEL SIGN IBUGINESE VOWEL SIGN UBUGINES" + + "E VOWEL SIGN EBUGINESE VOWEL SIGN OBUGINESE VOWEL SIGN AEBUGINESE PALLAW" + + "ABUGINESE END OF SECTIONTAI THAM LETTER HIGH KATAI THAM LETTER HIGH KHAT" + + "AI THAM LETTER HIGH KXATAI THAM LETTER LOW KATAI THAM LETTER LOW KXATAI " + + "THAM LETTER LOW KHATAI THAM LETTER NGATAI THAM LETTER HIGH CATAI THAM LE" + + "TTER HIGH CHATAI THAM LETTER LOW CATAI THAM LETTER LOW SATAI THAM LETTER" + + " LOW CHATAI THAM LETTER NYATAI THAM LETTER RATATAI THAM LETTER HIGH RATH" + + "ATAI THAM LETTER DATAI THAM LETTER LOW RATHATAI THAM LETTER RANATAI THAM" + + " LETTER HIGH TATAI THAM LETTER HIGH THATAI THAM LETTER LOW TATAI THAM LE" + + "TTER LOW THATAI THAM LETTER NATAI THAM LETTER BATAI THAM LETTER HIGH PAT" + + "AI THAM LETTER HIGH PHATAI THAM LETTER HIGH FATAI THAM LETTER LOW PATAI " + + "THAM LETTER LOW FATAI THAM LETTER LOW PHATAI THAM LETTER MATAI THAM LETT" + + "ER LOW YATAI THAM LETTER HIGH YATAI THAM LETTER RATAI THAM LETTER RUETAI" + + " THAM LETTER LATAI THAM LETTER LUETAI THAM LETTER WATAI THAM LETTER HIGH" + + " SHATAI THAM LETTER HIGH SSATAI THAM LETTER HIGH SATAI THAM LETTER HIGH " + + "HATAI THAM LETTER LLATAI THAM LETTER ATAI THAM LETTER LOW HATAI THAM LET" + + "TER ITAI THAM LETTER IITAI THAM LETTER UTAI THAM LETTER UUTAI THAM LETTE" + + "R EETAI THAM LETTER OOTAI THAM LETTER LAETAI THAM LETTER GREAT SATAI THA" + + "M CONSONANT SIGN MEDIAL RATAI THAM CONSONANT SIGN MEDIAL LATAI THAM CONS" + + "ONANT SIGN LA TANG LAITAI THAM SIGN MAI KANG LAITAI THAM CONSONANT SIGN " + + "FINAL NGATAI THAM CONSONANT SIGN LOW PATAI THAM CONSONANT SIGN HIGH RATH" + + "A OR LOW PATAI THAM CONSONANT SIGN MATAI THAM CONSONANT SIGN BATAI THAM " + + "CONSONANT SIGN SATAI THAM SIGN SAKOTTAI THAM VOWEL SIGN ATAI THAM VOWEL " + + "SIGN MAI SATTAI THAM VOWEL SIGN AATAI THAM VOWEL SIGN TALL AATAI THAM VO" + + "WEL SIGN ITAI THAM VOWEL SIGN IITAI THAM VOWEL SIGN UETAI THAM VOWEL SIG" + + "N UUETAI THAM VOWEL SIGN UTAI THAM VOWEL SIGN UUTAI THAM VOWEL SIGN OTAI" + + " THAM VOWEL SIGN OA BELOWTAI THAM VOWEL SIGN OYTAI THAM VOWEL SIGN ETAI " + + "THAM VOWEL SIGN AETAI THAM VOWEL SIGN OOTAI THAM VOWEL SIGN AITAI THAM V" + + "OWEL SIGN THAM AITAI THAM VOWEL SIGN OA ABOVETAI THAM SIGN MAI KANGTAI T" + + "HAM SIGN TONE-1TAI THAM SIGN TONE-2TAI THAM SIGN KHUEN TONE-3TAI THAM SI" + + "GN KHUEN TONE-4TAI THAM SIGN KHUEN TONE-5TAI THAM SIGN RA HAAMTAI THAM S" + + "IGN MAI SAMTAI THAM SIGN KHUEN-LUE KARANTAI THAM COMBINING CRYPTOGRAMMIC" + + " DOTTAI THAM HORA DIGIT ZEROTAI THAM HORA DIGIT ONETAI THAM HORA DIGIT T" + + "WOTAI THAM HORA DIGIT THREETAI THAM HORA DIGIT FOURTAI THAM HORA DIGIT F" + + "IVETAI THAM HORA DIGIT SIXTAI THAM HORA DIGIT SEVENTAI THAM HORA DIGIT E" + + "IGHTTAI THAM HORA DIGIT NINETAI THAM THAM DIGIT ZEROTAI THAM THAM DIGIT " + + "ONETAI THAM THAM DIGIT TWOTAI THAM THAM DIGIT THREETAI THAM THAM DIGIT F" + + "OURTAI THAM THAM DIGIT FIVETAI THAM THAM DIGIT SIXTAI THAM THAM DIGIT SE" + + "VENTAI THAM THAM DIGIT EIGHTTAI THAM THAM DIGIT NINETAI THAM SIGN WIANGT" + + "AI THAM SIGN WIANGWAAKTAI THAM SIGN SAWANTAI THAM SIGN KEOWTAI THAM SIGN" + + " HOYTAI THAM SIGN DOKMAITAI THAM SIGN REVERSED ROTATED RANATAI THAM SIGN" + + " MAI YAMOKTAI THAM SIGN KAANTAI THAM SIGN KAANKUUTAI THAM SIGN SATKAANTA" + + "I THAM SIGN SATKAANKUUTAI THAM SIGN HANGTAI THAM SIGN CAANGCOMBINING DOU" + + "BLED CIRCUMFLEX ACCENTCOMBINING DIAERESIS-RINGCOMBINING INFINITYCOMBININ" + + "G DOWNWARDS ARROWCOMBINING TRIPLE DOTCOMBINING X-X BELOWCOMBINING WIGGLY" + + " LINE BELOWCOMBINING OPEN MARK BELOWCOMBINING DOUBLE OPEN MARK BELOWCOMB" + + "INING LIGHT CENTRALIZATION STROKE BELOWCOMBINING STRONG CENTRALIZATION S" + + "TROKE BELOWCOMBINING PARENTHESES ABOVECOMBINING DOUBLE PARENTHESES ABOVE" + + "COMBINING PARENTHESES BELOWCOMBINING PARENTHESES OVERLAYBALINESE SIGN UL" + + "U RICEMBALINESE SIGN ULU CANDRABALINESE SIGN CECEKBALINESE SIGN SURANGBA" + + "LINESE SIGN BISAHBALINESE LETTER AKARABALINESE LETTER AKARA TEDUNGBALINE" + + "SE LETTER IKARABALINESE LETTER IKARA TEDUNGBALINESE LETTER UKARABALINESE" + + " LETTER UKARA TEDUNGBALINESE LETTER RA REPABALINESE LETTER RA REPA TEDUN") + ("" + + "GBALINESE LETTER LA LENGABALINESE LETTER LA LENGA TEDUNGBALINESE LETTER " + + "EKARABALINESE LETTER AIKARABALINESE LETTER OKARABALINESE LETTER OKARA TE" + + "DUNGBALINESE LETTER KABALINESE LETTER KA MAHAPRANABALINESE LETTER GABALI" + + "NESE LETTER GA GORABALINESE LETTER NGABALINESE LETTER CABALINESE LETTER " + + "CA LACABALINESE LETTER JABALINESE LETTER JA JERABALINESE LETTER NYABALIN" + + "ESE LETTER TA LATIKBALINESE LETTER TA MURDA MAHAPRANABALINESE LETTER DA " + + "MURDA ALPAPRANABALINESE LETTER DA MURDA MAHAPRANABALINESE LETTER NA RAMB" + + "ATBALINESE LETTER TABALINESE LETTER TA TAWABALINESE LETTER DABALINESE LE" + + "TTER DA MADUBALINESE LETTER NABALINESE LETTER PABALINESE LETTER PA KAPAL" + + "BALINESE LETTER BABALINESE LETTER BA KEMBANGBALINESE LETTER MABALINESE L" + + "ETTER YABALINESE LETTER RABALINESE LETTER LABALINESE LETTER WABALINESE L" + + "ETTER SA SAGABALINESE LETTER SA SAPABALINESE LETTER SABALINESE LETTER HA" + + "BALINESE SIGN REREKANBALINESE VOWEL SIGN TEDUNGBALINESE VOWEL SIGN ULUBA" + + "LINESE VOWEL SIGN ULU SARIBALINESE VOWEL SIGN SUKUBALINESE VOWEL SIGN SU" + + "KU ILUTBALINESE VOWEL SIGN RA REPABALINESE VOWEL SIGN RA REPA TEDUNGBALI" + + "NESE VOWEL SIGN LA LENGABALINESE VOWEL SIGN LA LENGA TEDUNGBALINESE VOWE" + + "L SIGN TALINGBALINESE VOWEL SIGN TALING REPABALINESE VOWEL SIGN TALING T" + + "EDUNGBALINESE VOWEL SIGN TALING REPA TEDUNGBALINESE VOWEL SIGN PEPETBALI" + + "NESE VOWEL SIGN PEPET TEDUNGBALINESE ADEG ADEGBALINESE LETTER KAF SASAKB" + + "ALINESE LETTER KHOT SASAKBALINESE LETTER TZIR SASAKBALINESE LETTER EF SA" + + "SAKBALINESE LETTER VE SASAKBALINESE LETTER ZAL SASAKBALINESE LETTER ASYU" + + "RA SASAKBALINESE DIGIT ZEROBALINESE DIGIT ONEBALINESE DIGIT TWOBALINESE " + + "DIGIT THREEBALINESE DIGIT FOURBALINESE DIGIT FIVEBALINESE DIGIT SIXBALIN" + + "ESE DIGIT SEVENBALINESE DIGIT EIGHTBALINESE DIGIT NINEBALINESE PANTIBALI" + + "NESE PAMADABALINESE WINDUBALINESE CARIK PAMUNGKAHBALINESE CARIK SIKIBALI" + + "NESE CARIK PARERENBALINESE PAMENENGBALINESE MUSICAL SYMBOL DONGBALINESE " + + "MUSICAL SYMBOL DENGBALINESE MUSICAL SYMBOL DUNGBALINESE MUSICAL SYMBOL D" + + "ANGBALINESE MUSICAL SYMBOL DANG SURANGBALINESE MUSICAL SYMBOL DINGBALINE" + + "SE MUSICAL SYMBOL DAENGBALINESE MUSICAL SYMBOL DEUNGBALINESE MUSICAL SYM" + + "BOL DAINGBALINESE MUSICAL SYMBOL DANG GEDEBALINESE MUSICAL SYMBOL COMBIN" + + "ING TEGEHBALINESE MUSICAL SYMBOL COMBINING ENDEPBALINESE MUSICAL SYMBOL " + + "COMBINING KEMPULBALINESE MUSICAL SYMBOL COMBINING KEMPLIBALINESE MUSICAL" + + " SYMBOL COMBINING JEGOGANBALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH J" + + "EGOGANBALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGANBALINESE MUSI" + + "CAL SYMBOL COMBINING BENDEBALINESE MUSICAL SYMBOL COMBINING GONGBALINESE" + + " MUSICAL SYMBOL RIGHT-HAND OPEN DUGBALINESE MUSICAL SYMBOL RIGHT-HAND OP" + + "EN DAGBALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUKBALINESE MUSICAL SYMB" + + "OL RIGHT-HAND CLOSED TAKBALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANGBALIN" + + "ESE MUSICAL SYMBOL LEFT-HAND OPEN PUNGBALINESE MUSICAL SYMBOL LEFT-HAND " + + "CLOSED PLAKBALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUKBALINESE MUSICAL" + + " SYMBOL LEFT-HAND OPEN PINGSUNDANESE SIGN PANYECEKSUNDANESE SIGN PANGLAY" + + "ARSUNDANESE SIGN PANGWISADSUNDANESE LETTER ASUNDANESE LETTER ISUNDANESE " + + "LETTER USUNDANESE LETTER AESUNDANESE LETTER OSUNDANESE LETTER ESUNDANESE" + + " LETTER EUSUNDANESE LETTER KASUNDANESE LETTER QASUNDANESE LETTER GASUNDA" + + "NESE LETTER NGASUNDANESE LETTER CASUNDANESE LETTER JASUNDANESE LETTER ZA" + + "SUNDANESE LETTER NYASUNDANESE LETTER TASUNDANESE LETTER DASUNDANESE LETT" + + "ER NASUNDANESE LETTER PASUNDANESE LETTER FASUNDANESE LETTER VASUNDANESE " + + "LETTER BASUNDANESE LETTER MASUNDANESE LETTER YASUNDANESE LETTER RASUNDAN" + + "ESE LETTER LASUNDANESE LETTER WASUNDANESE LETTER SASUNDANESE LETTER XASU" + + "NDANESE LETTER HASUNDANESE CONSONANT SIGN PAMINGKALSUNDANESE CONSONANT S" + + "IGN PANYAKRASUNDANESE CONSONANT SIGN PANYIKUSUNDANESE VOWEL SIGN PANGHUL" + + "USUNDANESE VOWEL SIGN PANYUKUSUNDANESE VOWEL SIGN PANAELAENGSUNDANESE VO" + + "WEL SIGN PANOLONGSUNDANESE VOWEL SIGN PAMEPETSUNDANESE VOWEL SIGN PANEUL" + + "EUNGSUNDANESE SIGN PAMAAEHSUNDANESE SIGN VIRAMASUNDANESE CONSONANT SIGN " + + "PASANGAN MASUNDANESE CONSONANT SIGN PASANGAN WASUNDANESE LETTER KHASUNDA" + + "NESE LETTER SYASUNDANESE DIGIT ZEROSUNDANESE DIGIT ONESUNDANESE DIGIT TW" + + "OSUNDANESE DIGIT THREESUNDANESE DIGIT FOURSUNDANESE DIGIT FIVESUNDANESE " + + "DIGIT SIXSUNDANESE DIGIT SEVENSUNDANESE DIGIT EIGHTSUNDANESE DIGIT NINES" + + "UNDANESE AVAGRAHASUNDANESE LETTER REUSUNDANESE LETTER LEUSUNDANESE LETTE" + + "R BHASUNDANESE LETTER FINAL KSUNDANESE LETTER FINAL MBATAK LETTER ABATAK" + + " LETTER SIMALUNGUN ABATAK LETTER HABATAK LETTER SIMALUNGUN HABATAK LETTE" + + "R MANDAILING HABATAK LETTER BABATAK LETTER KARO BABATAK LETTER PABATAK L" + + "ETTER SIMALUNGUN PABATAK LETTER NABATAK LETTER MANDAILING NABATAK LETTER" + + " WABATAK LETTER SIMALUNGUN WABATAK LETTER PAKPAK WABATAK LETTER GABATAK ") + ("" + + "LETTER SIMALUNGUN GABATAK LETTER JABATAK LETTER DABATAK LETTER RABATAK L" + + "ETTER SIMALUNGUN RABATAK LETTER MABATAK LETTER SIMALUNGUN MABATAK LETTER" + + " SOUTHERN TABATAK LETTER NORTHERN TABATAK LETTER SABATAK LETTER SIMALUNG" + + "UN SABATAK LETTER MANDAILING SABATAK LETTER YABATAK LETTER SIMALUNGUN YA" + + "BATAK LETTER NGABATAK LETTER LABATAK LETTER SIMALUNGUN LABATAK LETTER NY" + + "ABATAK LETTER CABATAK LETTER NDABATAK LETTER MBABATAK LETTER IBATAK LETT" + + "ER UBATAK SIGN TOMPIBATAK VOWEL SIGN EBATAK VOWEL SIGN PAKPAK EBATAK VOW" + + "EL SIGN EEBATAK VOWEL SIGN IBATAK VOWEL SIGN KARO IBATAK VOWEL SIGN OBAT" + + "AK VOWEL SIGN KARO OBATAK VOWEL SIGN UBATAK VOWEL SIGN U FOR SIMALUNGUN " + + "SABATAK CONSONANT SIGN NGBATAK CONSONANT SIGN HBATAK PANGOLATBATAK PANON" + + "GONANBATAK SYMBOL BINDU NA METEKBATAK SYMBOL BINDU PINARBORASBATAK SYMBO" + + "L BINDU JUDULBATAK SYMBOL BINDU PANGOLATLEPCHA LETTER KALEPCHA LETTER KL" + + "ALEPCHA LETTER KHALEPCHA LETTER GALEPCHA LETTER GLALEPCHA LETTER NGALEPC" + + "HA LETTER CALEPCHA LETTER CHALEPCHA LETTER JALEPCHA LETTER NYALEPCHA LET" + + "TER TALEPCHA LETTER THALEPCHA LETTER DALEPCHA LETTER NALEPCHA LETTER PAL" + + "EPCHA LETTER PLALEPCHA LETTER PHALEPCHA LETTER FALEPCHA LETTER FLALEPCHA" + + " LETTER BALEPCHA LETTER BLALEPCHA LETTER MALEPCHA LETTER MLALEPCHA LETTE" + + "R TSALEPCHA LETTER TSHALEPCHA LETTER DZALEPCHA LETTER YALEPCHA LETTER RA" + + "LEPCHA LETTER LALEPCHA LETTER HALEPCHA LETTER HLALEPCHA LETTER VALEPCHA " + + "LETTER SALEPCHA LETTER SHALEPCHA LETTER WALEPCHA LETTER ALEPCHA SUBJOINE" + + "D LETTER YALEPCHA SUBJOINED LETTER RALEPCHA VOWEL SIGN AALEPCHA VOWEL SI" + + "GN ILEPCHA VOWEL SIGN OLEPCHA VOWEL SIGN OOLEPCHA VOWEL SIGN ULEPCHA VOW" + + "EL SIGN UULEPCHA VOWEL SIGN ELEPCHA CONSONANT SIGN KLEPCHA CONSONANT SIG" + + "N MLEPCHA CONSONANT SIGN LLEPCHA CONSONANT SIGN NLEPCHA CONSONANT SIGN P" + + "LEPCHA CONSONANT SIGN RLEPCHA CONSONANT SIGN TLEPCHA CONSONANT SIGN NYIN" + + "-DOLEPCHA CONSONANT SIGN KANGLEPCHA SIGN RANLEPCHA SIGN NUKTALEPCHA PUNC" + + "TUATION TA-ROLLEPCHA PUNCTUATION NYET THYOOM TA-ROLLEPCHA PUNCTUATION CE" + + "R-WALEPCHA PUNCTUATION TSHOOK CER-WALEPCHA PUNCTUATION TSHOOKLEPCHA DIGI" + + "T ZEROLEPCHA DIGIT ONELEPCHA DIGIT TWOLEPCHA DIGIT THREELEPCHA DIGIT FOU" + + "RLEPCHA DIGIT FIVELEPCHA DIGIT SIXLEPCHA DIGIT SEVENLEPCHA DIGIT EIGHTLE" + + "PCHA DIGIT NINELEPCHA LETTER TTALEPCHA LETTER TTHALEPCHA LETTER DDAOL CH" + + "IKI DIGIT ZEROOL CHIKI DIGIT ONEOL CHIKI DIGIT TWOOL CHIKI DIGIT THREEOL" + + " CHIKI DIGIT FOUROL CHIKI DIGIT FIVEOL CHIKI DIGIT SIXOL CHIKI DIGIT SEV" + + "ENOL CHIKI DIGIT EIGHTOL CHIKI DIGIT NINEOL CHIKI LETTER LAOL CHIKI LETT" + + "ER ATOL CHIKI LETTER AGOL CHIKI LETTER ANGOL CHIKI LETTER ALOL CHIKI LET" + + "TER LAAOL CHIKI LETTER AAKOL CHIKI LETTER AAJOL CHIKI LETTER AAMOL CHIKI" + + " LETTER AAWOL CHIKI LETTER LIOL CHIKI LETTER ISOL CHIKI LETTER IHOL CHIK" + + "I LETTER INYOL CHIKI LETTER IROL CHIKI LETTER LUOL CHIKI LETTER UCOL CHI" + + "KI LETTER UDOL CHIKI LETTER UNNOL CHIKI LETTER UYOL CHIKI LETTER LEOL CH" + + "IKI LETTER EPOL CHIKI LETTER EDDOL CHIKI LETTER ENOL CHIKI LETTER ERROL " + + "CHIKI LETTER LOOL CHIKI LETTER OTTOL CHIKI LETTER OBOL CHIKI LETTER OVOL" + + " CHIKI LETTER OHOL CHIKI MU TTUDDAGOL CHIKI GAAHLAA TTUDDAAGOL CHIKI MU-" + + "GAAHLAA TTUDDAAGOL CHIKI RELAAOL CHIKI PHAARKAAOL CHIKI AHADOL CHIKI PUN" + + "CTUATION MUCAADOL CHIKI PUNCTUATION DOUBLE MUCAADCYRILLIC SMALL LETTER R" + + "OUNDED VECYRILLIC SMALL LETTER LONG-LEGGED DECYRILLIC SMALL LETTER NARRO" + + "W OCYRILLIC SMALL LETTER WIDE ESCYRILLIC SMALL LETTER TALL TECYRILLIC SM" + + "ALL LETTER THREE-LEGGED TECYRILLIC SMALL LETTER TALL HARD SIGNCYRILLIC S" + + "MALL LETTER TALL YATCYRILLIC SMALL LETTER UNBLENDED UKSUNDANESE PUNCTUAT" + + "ION BINDU SURYASUNDANESE PUNCTUATION BINDU PANGLONGSUNDANESE PUNCTUATION" + + " BINDU PURNAMASUNDANESE PUNCTUATION BINDU CAKRASUNDANESE PUNCTUATION BIN" + + "DU LEU SATANGASUNDANESE PUNCTUATION BINDU KA SATANGASUNDANESE PUNCTUATIO" + + "N BINDU DA SATANGASUNDANESE PUNCTUATION BINDU BA SATANGAVEDIC TONE KARSH" + + "ANAVEDIC TONE SHARAVEDIC TONE PRENKHAVEDIC SIGN NIHSHVASAVEDIC SIGN YAJU" + + "RVEDIC MIDLINE SVARITAVEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARI" + + "TAVEDIC TONE YAJURVEDIC INDEPENDENT SVARITAVEDIC TONE YAJURVEDIC KATHAKA" + + " INDEPENDENT SVARITAVEDIC TONE CANDRA BELOWVEDIC TONE YAJURVEDIC KATHAKA" + + " INDEPENDENT SVARITA SCHROEDERVEDIC TONE DOUBLE SVARITAVEDIC TONE TRIPLE" + + " SVARITAVEDIC TONE KATHAKA ANUDATTAVEDIC TONE DOT BELOWVEDIC TONE TWO DO" + + "TS BELOWVEDIC TONE THREE DOTS BELOWVEDIC TONE RIGVEDIC KASHMIRI INDEPEND" + + "ENT SVARITAVEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITAVEDIC SIGN VISARGA" + + " SVARITAVEDIC SIGN VISARGA UDATTAVEDIC SIGN REVERSED VISARGA UDATTAVEDIC" + + " SIGN VISARGA ANUDATTAVEDIC SIGN REVERSED VISARGA ANUDATTAVEDIC SIGN VIS" + + "ARGA UDATTA WITH TAILVEDIC SIGN VISARGA ANUDATTA WITH TAILVEDIC SIGN ANU" + + "SVARA ANTARGOMUKHAVEDIC SIGN ANUSVARA BAHIRGOMUKHAVEDIC SIGN ANUSVARA VA") + ("" + + "MAGOMUKHAVEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAILVEDIC SIGN TIRYAKVEDIC" + + " SIGN HEXIFORM LONG ANUSVARAVEDIC SIGN LONG ANUSVARAVEDIC SIGN RTHANG LO" + + "NG ANUSVARAVEDIC SIGN ANUSVARA UBHAYATO MUKHAVEDIC SIGN ARDHAVISARGAVEDI" + + "C SIGN ROTATED ARDHAVISARGAVEDIC TONE CANDRA ABOVEVEDIC SIGN JIHVAMULIYA" + + "VEDIC SIGN UPADHMANIYAVEDIC TONE RING ABOVEVEDIC TONE DOUBLE RING ABOVEL" + + "ATIN LETTER SMALL CAPITAL ALATIN LETTER SMALL CAPITAL AELATIN SMALL LETT" + + "ER TURNED AELATIN LETTER SMALL CAPITAL BARRED BLATIN LETTER SMALL CAPITA" + + "L CLATIN LETTER SMALL CAPITAL DLATIN LETTER SMALL CAPITAL ETHLATIN LETTE" + + "R SMALL CAPITAL ELATIN SMALL LETTER TURNED OPEN ELATIN SMALL LETTER TURN" + + "ED ILATIN LETTER SMALL CAPITAL JLATIN LETTER SMALL CAPITAL KLATIN LETTER" + + " SMALL CAPITAL L WITH STROKELATIN LETTER SMALL CAPITAL MLATIN LETTER SMA" + + "LL CAPITAL REVERSED NLATIN LETTER SMALL CAPITAL OLATIN LETTER SMALL CAPI" + + "TAL OPEN OLATIN SMALL LETTER SIDEWAYS OLATIN SMALL LETTER SIDEWAYS OPEN " + + "OLATIN SMALL LETTER SIDEWAYS O WITH STROKELATIN SMALL LETTER TURNED OELA" + + "TIN LETTER SMALL CAPITAL OULATIN SMALL LETTER TOP HALF OLATIN SMALL LETT" + + "ER BOTTOM HALF OLATIN LETTER SMALL CAPITAL PLATIN LETTER SMALL CAPITAL R" + + "EVERSED RLATIN LETTER SMALL CAPITAL TURNED RLATIN LETTER SMALL CAPITAL T" + + "LATIN LETTER SMALL CAPITAL ULATIN SMALL LETTER SIDEWAYS ULATIN SMALL LET" + + "TER SIDEWAYS DIAERESIZED ULATIN SMALL LETTER SIDEWAYS TURNED MLATIN LETT" + + "ER SMALL CAPITAL VLATIN LETTER SMALL CAPITAL WLATIN LETTER SMALL CAPITAL" + + " ZLATIN LETTER SMALL CAPITAL EZHLATIN LETTER VOICED LARYNGEAL SPIRANTLAT" + + "IN LETTER AINGREEK LETTER SMALL CAPITAL GAMMAGREEK LETTER SMALL CAPITAL " + + "LAMDAGREEK LETTER SMALL CAPITAL PIGREEK LETTER SMALL CAPITAL RHOGREEK LE" + + "TTER SMALL CAPITAL PSICYRILLIC LETTER SMALL CAPITAL ELMODIFIER LETTER CA" + + "PITAL AMODIFIER LETTER CAPITAL AEMODIFIER LETTER CAPITAL BMODIFIER LETTE" + + "R CAPITAL BARRED BMODIFIER LETTER CAPITAL DMODIFIER LETTER CAPITAL EMODI" + + "FIER LETTER CAPITAL REVERSED EMODIFIER LETTER CAPITAL GMODIFIER LETTER C" + + "APITAL HMODIFIER LETTER CAPITAL IMODIFIER LETTER CAPITAL JMODIFIER LETTE" + + "R CAPITAL KMODIFIER LETTER CAPITAL LMODIFIER LETTER CAPITAL MMODIFIER LE" + + "TTER CAPITAL NMODIFIER LETTER CAPITAL REVERSED NMODIFIER LETTER CAPITAL " + + "OMODIFIER LETTER CAPITAL OUMODIFIER LETTER CAPITAL PMODIFIER LETTER CAPI" + + "TAL RMODIFIER LETTER CAPITAL TMODIFIER LETTER CAPITAL UMODIFIER LETTER C" + + "APITAL WMODIFIER LETTER SMALL AMODIFIER LETTER SMALL TURNED AMODIFIER LE" + + "TTER SMALL ALPHAMODIFIER LETTER SMALL TURNED AEMODIFIER LETTER SMALL BMO" + + "DIFIER LETTER SMALL DMODIFIER LETTER SMALL EMODIFIER LETTER SMALL SCHWAM" + + "ODIFIER LETTER SMALL OPEN EMODIFIER LETTER SMALL TURNED OPEN EMODIFIER L" + + "ETTER SMALL GMODIFIER LETTER SMALL TURNED IMODIFIER LETTER SMALL KMODIFI" + + "ER LETTER SMALL MMODIFIER LETTER SMALL ENGMODIFIER LETTER SMALL OMODIFIE" + + "R LETTER SMALL OPEN OMODIFIER LETTER SMALL TOP HALF OMODIFIER LETTER SMA" + + "LL BOTTOM HALF OMODIFIER LETTER SMALL PMODIFIER LETTER SMALL TMODIFIER L" + + "ETTER SMALL UMODIFIER LETTER SMALL SIDEWAYS UMODIFIER LETTER SMALL TURNE" + + "D MMODIFIER LETTER SMALL VMODIFIER LETTER SMALL AINMODIFIER LETTER SMALL" + + " BETAMODIFIER LETTER SMALL GREEK GAMMAMODIFIER LETTER SMALL DELTAMODIFIE" + + "R LETTER SMALL GREEK PHIMODIFIER LETTER SMALL CHILATIN SUBSCRIPT SMALL L" + + "ETTER ILATIN SUBSCRIPT SMALL LETTER RLATIN SUBSCRIPT SMALL LETTER ULATIN" + + " SUBSCRIPT SMALL LETTER VGREEK SUBSCRIPT SMALL LETTER BETAGREEK SUBSCRIP" + + "T SMALL LETTER GAMMAGREEK SUBSCRIPT SMALL LETTER RHOGREEK SUBSCRIPT SMAL" + + "L LETTER PHIGREEK SUBSCRIPT SMALL LETTER CHILATIN SMALL LETTER UELATIN S" + + "MALL LETTER B WITH MIDDLE TILDELATIN SMALL LETTER D WITH MIDDLE TILDELAT" + + "IN SMALL LETTER F WITH MIDDLE TILDELATIN SMALL LETTER M WITH MIDDLE TILD" + + "ELATIN SMALL LETTER N WITH MIDDLE TILDELATIN SMALL LETTER P WITH MIDDLE " + + "TILDELATIN SMALL LETTER R WITH MIDDLE TILDELATIN SMALL LETTER R WITH FIS" + + "HHOOK AND MIDDLE TILDELATIN SMALL LETTER S WITH MIDDLE TILDELATIN SMALL " + + "LETTER T WITH MIDDLE TILDELATIN SMALL LETTER Z WITH MIDDLE TILDELATIN SM" + + "ALL LETTER TURNED GMODIFIER LETTER CYRILLIC ENLATIN SMALL LETTER INSULAR" + + " GLATIN SMALL LETTER TH WITH STRIKETHROUGHLATIN SMALL CAPITAL LETTER I W" + + "ITH STROKELATIN SMALL LETTER IOTA WITH STROKELATIN SMALL LETTER P WITH S" + + "TROKELATIN SMALL CAPITAL LETTER U WITH STROKELATIN SMALL LETTER UPSILON " + + "WITH STROKELATIN SMALL LETTER B WITH PALATAL HOOKLATIN SMALL LETTER D WI" + + "TH PALATAL HOOKLATIN SMALL LETTER F WITH PALATAL HOOKLATIN SMALL LETTER " + + "G WITH PALATAL HOOKLATIN SMALL LETTER K WITH PALATAL HOOKLATIN SMALL LET" + + "TER L WITH PALATAL HOOKLATIN SMALL LETTER M WITH PALATAL HOOKLATIN SMALL" + + " LETTER N WITH PALATAL HOOKLATIN SMALL LETTER P WITH PALATAL HOOKLATIN S" + + "MALL LETTER R WITH PALATAL HOOKLATIN SMALL LETTER S WITH PALATAL HOOKLAT") + ("" + + "IN SMALL LETTER ESH WITH PALATAL HOOKLATIN SMALL LETTER V WITH PALATAL H" + + "OOKLATIN SMALL LETTER X WITH PALATAL HOOKLATIN SMALL LETTER Z WITH PALAT" + + "AL HOOKLATIN SMALL LETTER A WITH RETROFLEX HOOKLATIN SMALL LETTER ALPHA " + + "WITH RETROFLEX HOOKLATIN SMALL LETTER D WITH HOOK AND TAILLATIN SMALL LE" + + "TTER E WITH RETROFLEX HOOKLATIN SMALL LETTER OPEN E WITH RETROFLEX HOOKL" + + "ATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOKLATIN SMALL LETTER " + + "SCHWA WITH RETROFLEX HOOKLATIN SMALL LETTER I WITH RETROFLEX HOOKLATIN S" + + "MALL LETTER OPEN O WITH RETROFLEX HOOKLATIN SMALL LETTER ESH WITH RETROF" + + "LEX HOOKLATIN SMALL LETTER U WITH RETROFLEX HOOKLATIN SMALL LETTER EZH W" + + "ITH RETROFLEX HOOKMODIFIER LETTER SMALL TURNED ALPHAMODIFIER LETTER SMAL" + + "L CMODIFIER LETTER SMALL C WITH CURLMODIFIER LETTER SMALL ETHMODIFIER LE" + + "TTER SMALL REVERSED OPEN EMODIFIER LETTER SMALL FMODIFIER LETTER SMALL D" + + "OTLESS J WITH STROKEMODIFIER LETTER SMALL SCRIPT GMODIFIER LETTER SMALL " + + "TURNED HMODIFIER LETTER SMALL I WITH STROKEMODIFIER LETTER SMALL IOTAMOD" + + "IFIER LETTER SMALL CAPITAL IMODIFIER LETTER SMALL CAPITAL I WITH STROKEM" + + "ODIFIER LETTER SMALL J WITH CROSSED-TAILMODIFIER LETTER SMALL L WITH RET" + + "ROFLEX HOOKMODIFIER LETTER SMALL L WITH PALATAL HOOKMODIFIER LETTER SMAL" + + "L CAPITAL LMODIFIER LETTER SMALL M WITH HOOKMODIFIER LETTER SMALL TURNED" + + " M WITH LONG LEGMODIFIER LETTER SMALL N WITH LEFT HOOKMODIFIER LETTER SM" + + "ALL N WITH RETROFLEX HOOKMODIFIER LETTER SMALL CAPITAL NMODIFIER LETTER " + + "SMALL BARRED OMODIFIER LETTER SMALL PHIMODIFIER LETTER SMALL S WITH HOOK" + + "MODIFIER LETTER SMALL ESHMODIFIER LETTER SMALL T WITH PALATAL HOOKMODIFI" + + "ER LETTER SMALL U BARMODIFIER LETTER SMALL UPSILONMODIFIER LETTER SMALL " + + "CAPITAL UMODIFIER LETTER SMALL V WITH HOOKMODIFIER LETTER SMALL TURNED V" + + "MODIFIER LETTER SMALL ZMODIFIER LETTER SMALL Z WITH RETROFLEX HOOKMODIFI" + + "ER LETTER SMALL Z WITH CURLMODIFIER LETTER SMALL EZHMODIFIER LETTER SMAL" + + "L THETACOMBINING DOTTED GRAVE ACCENTCOMBINING DOTTED ACUTE ACCENTCOMBINI" + + "NG SNAKE BELOWCOMBINING SUSPENSION MARKCOMBINING MACRON-ACUTECOMBINING G" + + "RAVE-MACRONCOMBINING MACRON-GRAVECOMBINING ACUTE-MACRONCOMBINING GRAVE-A" + + "CUTE-GRAVECOMBINING ACUTE-GRAVE-ACUTECOMBINING LATIN SMALL LETTER R BELO" + + "WCOMBINING BREVE-MACRONCOMBINING MACRON-BREVECOMBINING DOUBLE CIRCUMFLEX" + + " ABOVECOMBINING OGONEK ABOVECOMBINING ZIGZAG BELOWCOMBINING IS BELOWCOMB" + + "INING UR ABOVECOMBINING US ABOVECOMBINING LATIN SMALL LETTER FLATTENED O" + + "PEN A ABOVECOMBINING LATIN SMALL LETTER AECOMBINING LATIN SMALL LETTER A" + + "OCOMBINING LATIN SMALL LETTER AVCOMBINING LATIN SMALL LETTER C CEDILLACO" + + "MBINING LATIN SMALL LETTER INSULAR DCOMBINING LATIN SMALL LETTER ETHCOMB" + + "INING LATIN SMALL LETTER GCOMBINING LATIN LETTER SMALL CAPITAL GCOMBININ" + + "G LATIN SMALL LETTER KCOMBINING LATIN SMALL LETTER LCOMBINING LATIN LETT" + + "ER SMALL CAPITAL LCOMBINING LATIN LETTER SMALL CAPITAL MCOMBINING LATIN " + + "SMALL LETTER NCOMBINING LATIN LETTER SMALL CAPITAL NCOMBINING LATIN LETT" + + "ER SMALL CAPITAL RCOMBINING LATIN SMALL LETTER R ROTUNDACOMBINING LATIN " + + "SMALL LETTER SCOMBINING LATIN SMALL LETTER LONG SCOMBINING LATIN SMALL L" + + "ETTER ZCOMBINING LATIN SMALL LETTER ALPHACOMBINING LATIN SMALL LETTER BC" + + "OMBINING LATIN SMALL LETTER BETACOMBINING LATIN SMALL LETTER SCHWACOMBIN" + + "ING LATIN SMALL LETTER FCOMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDL" + + "E TILDECOMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKECO" + + "MBINING LATIN SMALL LETTER PCOMBINING LATIN SMALL LETTER ESHCOMBINING LA" + + "TIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKECOMBINING LATIN SMALL" + + " LETTER WCOMBINING LATIN SMALL LETTER A WITH DIAERESISCOMBINING LATIN SM" + + "ALL LETTER O WITH DIAERESISCOMBINING LATIN SMALL LETTER U WITH DIAERESIS" + + "COMBINING UP TACK ABOVECOMBINING DELETION MARKCOMBINING DOUBLE INVERTED " + + "BREVE BELOWCOMBINING ALMOST EQUAL TO BELOWCOMBINING LEFT ARROWHEAD ABOVE" + + "COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOWLATIN CAPITAL LETTER A" + + " WITH RING BELOWLATIN SMALL LETTER A WITH RING BELOWLATIN CAPITAL LETTER" + + " B WITH DOT ABOVELATIN SMALL LETTER B WITH DOT ABOVELATIN CAPITAL LETTER" + + " B WITH DOT BELOWLATIN SMALL LETTER B WITH DOT BELOWLATIN CAPITAL LETTER" + + " B WITH LINE BELOWLATIN SMALL LETTER B WITH LINE BELOWLATIN CAPITAL LETT" + + "ER C WITH CEDILLA AND ACUTELATIN SMALL LETTER C WITH CEDILLA AND ACUTELA" + + "TIN CAPITAL LETTER D WITH DOT ABOVELATIN SMALL LETTER D WITH DOT ABOVELA" + + "TIN CAPITAL LETTER D WITH DOT BELOWLATIN SMALL LETTER D WITH DOT BELOWLA" + + "TIN CAPITAL LETTER D WITH LINE BELOWLATIN SMALL LETTER D WITH LINE BELOW" + + "LATIN CAPITAL LETTER D WITH CEDILLALATIN SMALL LETTER D WITH CEDILLALATI" + + "N CAPITAL LETTER D WITH CIRCUMFLEX BELOWLATIN SMALL LETTER D WITH CIRCUM" + + "FLEX BELOWLATIN CAPITAL LETTER E WITH MACRON AND GRAVELATIN SMALL LETTER") + ("" + + " E WITH MACRON AND GRAVELATIN CAPITAL LETTER E WITH MACRON AND ACUTELATI" + + "N SMALL LETTER E WITH MACRON AND ACUTELATIN CAPITAL LETTER E WITH CIRCUM" + + "FLEX BELOWLATIN SMALL LETTER E WITH CIRCUMFLEX BELOWLATIN CAPITAL LETTER" + + " E WITH TILDE BELOWLATIN SMALL LETTER E WITH TILDE BELOWLATIN CAPITAL LE" + + "TTER E WITH CEDILLA AND BREVELATIN SMALL LETTER E WITH CEDILLA AND BREVE" + + "LATIN CAPITAL LETTER F WITH DOT ABOVELATIN SMALL LETTER F WITH DOT ABOVE" + + "LATIN CAPITAL LETTER G WITH MACRONLATIN SMALL LETTER G WITH MACRONLATIN " + + "CAPITAL LETTER H WITH DOT ABOVELATIN SMALL LETTER H WITH DOT ABOVELATIN " + + "CAPITAL LETTER H WITH DOT BELOWLATIN SMALL LETTER H WITH DOT BELOWLATIN " + + "CAPITAL LETTER H WITH DIAERESISLATIN SMALL LETTER H WITH DIAERESISLATIN " + + "CAPITAL LETTER H WITH CEDILLALATIN SMALL LETTER H WITH CEDILLALATIN CAPI" + + "TAL LETTER H WITH BREVE BELOWLATIN SMALL LETTER H WITH BREVE BELOWLATIN " + + "CAPITAL LETTER I WITH TILDE BELOWLATIN SMALL LETTER I WITH TILDE BELOWLA" + + "TIN CAPITAL LETTER I WITH DIAERESIS AND ACUTELATIN SMALL LETTER I WITH D" + + "IAERESIS AND ACUTELATIN CAPITAL LETTER K WITH ACUTELATIN SMALL LETTER K " + + "WITH ACUTELATIN CAPITAL LETTER K WITH DOT BELOWLATIN SMALL LETTER K WITH" + + " DOT BELOWLATIN CAPITAL LETTER K WITH LINE BELOWLATIN SMALL LETTER K WIT" + + "H LINE BELOWLATIN CAPITAL LETTER L WITH DOT BELOWLATIN SMALL LETTER L WI" + + "TH DOT BELOWLATIN CAPITAL LETTER L WITH DOT BELOW AND MACRONLATIN SMALL " + + "LETTER L WITH DOT BELOW AND MACRONLATIN CAPITAL LETTER L WITH LINE BELOW" + + "LATIN SMALL LETTER L WITH LINE BELOWLATIN CAPITAL LETTER L WITH CIRCUMFL" + + "EX BELOWLATIN SMALL LETTER L WITH CIRCUMFLEX BELOWLATIN CAPITAL LETTER M" + + " WITH ACUTELATIN SMALL LETTER M WITH ACUTELATIN CAPITAL LETTER M WITH DO" + + "T ABOVELATIN SMALL LETTER M WITH DOT ABOVELATIN CAPITAL LETTER M WITH DO" + + "T BELOWLATIN SMALL LETTER M WITH DOT BELOWLATIN CAPITAL LETTER N WITH DO" + + "T ABOVELATIN SMALL LETTER N WITH DOT ABOVELATIN CAPITAL LETTER N WITH DO" + + "T BELOWLATIN SMALL LETTER N WITH DOT BELOWLATIN CAPITAL LETTER N WITH LI" + + "NE BELOWLATIN SMALL LETTER N WITH LINE BELOWLATIN CAPITAL LETTER N WITH " + + "CIRCUMFLEX BELOWLATIN SMALL LETTER N WITH CIRCUMFLEX BELOWLATIN CAPITAL " + + "LETTER O WITH TILDE AND ACUTELATIN SMALL LETTER O WITH TILDE AND ACUTELA" + + "TIN CAPITAL LETTER O WITH TILDE AND DIAERESISLATIN SMALL LETTER O WITH T" + + "ILDE AND DIAERESISLATIN CAPITAL LETTER O WITH MACRON AND GRAVELATIN SMAL" + + "L LETTER O WITH MACRON AND GRAVELATIN CAPITAL LETTER O WITH MACRON AND A" + + "CUTELATIN SMALL LETTER O WITH MACRON AND ACUTELATIN CAPITAL LETTER P WIT" + + "H ACUTELATIN SMALL LETTER P WITH ACUTELATIN CAPITAL LETTER P WITH DOT AB" + + "OVELATIN SMALL LETTER P WITH DOT ABOVELATIN CAPITAL LETTER R WITH DOT AB" + + "OVELATIN SMALL LETTER R WITH DOT ABOVELATIN CAPITAL LETTER R WITH DOT BE" + + "LOWLATIN SMALL LETTER R WITH DOT BELOWLATIN CAPITAL LETTER R WITH DOT BE" + + "LOW AND MACRONLATIN SMALL LETTER R WITH DOT BELOW AND MACRONLATIN CAPITA" + + "L LETTER R WITH LINE BELOWLATIN SMALL LETTER R WITH LINE BELOWLATIN CAPI" + + "TAL LETTER S WITH DOT ABOVELATIN SMALL LETTER S WITH DOT ABOVELATIN CAPI" + + "TAL LETTER S WITH DOT BELOWLATIN SMALL LETTER S WITH DOT BELOWLATIN CAPI" + + "TAL LETTER S WITH ACUTE AND DOT ABOVELATIN SMALL LETTER S WITH ACUTE AND" + + " DOT ABOVELATIN CAPITAL LETTER S WITH CARON AND DOT ABOVELATIN SMALL LET" + + "TER S WITH CARON AND DOT ABOVELATIN CAPITAL LETTER S WITH DOT BELOW AND " + + "DOT ABOVELATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVELATIN CAPITAL " + + "LETTER T WITH DOT ABOVELATIN SMALL LETTER T WITH DOT ABOVELATIN CAPITAL " + + "LETTER T WITH DOT BELOWLATIN SMALL LETTER T WITH DOT BELOWLATIN CAPITAL " + + "LETTER T WITH LINE BELOWLATIN SMALL LETTER T WITH LINE BELOWLATIN CAPITA" + + "L LETTER T WITH CIRCUMFLEX BELOWLATIN SMALL LETTER T WITH CIRCUMFLEX BEL" + + "OWLATIN CAPITAL LETTER U WITH DIAERESIS BELOWLATIN SMALL LETTER U WITH D" + + "IAERESIS BELOWLATIN CAPITAL LETTER U WITH TILDE BELOWLATIN SMALL LETTER " + + "U WITH TILDE BELOWLATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOWLATIN SMAL" + + "L LETTER U WITH CIRCUMFLEX BELOWLATIN CAPITAL LETTER U WITH TILDE AND AC" + + "UTELATIN SMALL LETTER U WITH TILDE AND ACUTELATIN CAPITAL LETTER U WITH " + + "MACRON AND DIAERESISLATIN SMALL LETTER U WITH MACRON AND DIAERESISLATIN " + + "CAPITAL LETTER V WITH TILDELATIN SMALL LETTER V WITH TILDELATIN CAPITAL " + + "LETTER V WITH DOT BELOWLATIN SMALL LETTER V WITH DOT BELOWLATIN CAPITAL " + + "LETTER W WITH GRAVELATIN SMALL LETTER W WITH GRAVELATIN CAPITAL LETTER W" + + " WITH ACUTELATIN SMALL LETTER W WITH ACUTELATIN CAPITAL LETTER W WITH DI" + + "AERESISLATIN SMALL LETTER W WITH DIAERESISLATIN CAPITAL LETTER W WITH DO" + + "T ABOVELATIN SMALL LETTER W WITH DOT ABOVELATIN CAPITAL LETTER W WITH DO" + + "T BELOWLATIN SMALL LETTER W WITH DOT BELOWLATIN CAPITAL LETTER X WITH DO" + + "T ABOVELATIN SMALL LETTER X WITH DOT ABOVELATIN CAPITAL LETTER X WITH DI") + ("" + + "AERESISLATIN SMALL LETTER X WITH DIAERESISLATIN CAPITAL LETTER Y WITH DO" + + "T ABOVELATIN SMALL LETTER Y WITH DOT ABOVELATIN CAPITAL LETTER Z WITH CI" + + "RCUMFLEXLATIN SMALL LETTER Z WITH CIRCUMFLEXLATIN CAPITAL LETTER Z WITH " + + "DOT BELOWLATIN SMALL LETTER Z WITH DOT BELOWLATIN CAPITAL LETTER Z WITH " + + "LINE BELOWLATIN SMALL LETTER Z WITH LINE BELOWLATIN SMALL LETTER H WITH " + + "LINE BELOWLATIN SMALL LETTER T WITH DIAERESISLATIN SMALL LETTER W WITH R" + + "ING ABOVELATIN SMALL LETTER Y WITH RING ABOVELATIN SMALL LETTER A WITH R" + + "IGHT HALF RINGLATIN SMALL LETTER LONG S WITH DOT ABOVELATIN SMALL LETTER" + + " LONG S WITH DIAGONAL STROKELATIN SMALL LETTER LONG S WITH HIGH STROKELA" + + "TIN CAPITAL LETTER SHARP SLATIN SMALL LETTER DELTALATIN CAPITAL LETTER A" + + " WITH DOT BELOWLATIN SMALL LETTER A WITH DOT BELOWLATIN CAPITAL LETTER A" + + " WITH HOOK ABOVELATIN SMALL LETTER A WITH HOOK ABOVELATIN CAPITAL LETTER" + + " A WITH CIRCUMFLEX AND ACUTELATIN SMALL LETTER A WITH CIRCUMFLEX AND ACU" + + "TELATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVELATIN SMALL LETTER A W" + + "ITH CIRCUMFLEX AND GRAVELATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK " + + "ABOVELATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVELATIN CAPITAL LE" + + "TTER A WITH CIRCUMFLEX AND TILDELATIN SMALL LETTER A WITH CIRCUMFLEX AND" + + " TILDELATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOWLATIN SMALL LE" + + "TTER A WITH CIRCUMFLEX AND DOT BELOWLATIN CAPITAL LETTER A WITH BREVE AN" + + "D ACUTELATIN SMALL LETTER A WITH BREVE AND ACUTELATIN CAPITAL LETTER A W" + + "ITH BREVE AND GRAVELATIN SMALL LETTER A WITH BREVE AND GRAVELATIN CAPITA" + + "L LETTER A WITH BREVE AND HOOK ABOVELATIN SMALL LETTER A WITH BREVE AND " + + "HOOK ABOVELATIN CAPITAL LETTER A WITH BREVE AND TILDELATIN SMALL LETTER " + + "A WITH BREVE AND TILDELATIN CAPITAL LETTER A WITH BREVE AND DOT BELOWLAT" + + "IN SMALL LETTER A WITH BREVE AND DOT BELOWLATIN CAPITAL LETTER E WITH DO" + + "T BELOWLATIN SMALL LETTER E WITH DOT BELOWLATIN CAPITAL LETTER E WITH HO" + + "OK ABOVELATIN SMALL LETTER E WITH HOOK ABOVELATIN CAPITAL LETTER E WITH " + + "TILDELATIN SMALL LETTER E WITH TILDELATIN CAPITAL LETTER E WITH CIRCUMFL" + + "EX AND ACUTELATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTELATIN CAPITAL " + + "LETTER E WITH CIRCUMFLEX AND GRAVELATIN SMALL LETTER E WITH CIRCUMFLEX A" + + "ND GRAVELATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVELATIN SMALL" + + " LETTER E WITH CIRCUMFLEX AND HOOK ABOVELATIN CAPITAL LETTER E WITH CIRC" + + "UMFLEX AND TILDELATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDELATIN CAPI" + + "TAL LETTER E WITH CIRCUMFLEX AND DOT BELOWLATIN SMALL LETTER E WITH CIRC" + + "UMFLEX AND DOT BELOWLATIN CAPITAL LETTER I WITH HOOK ABOVELATIN SMALL LE" + + "TTER I WITH HOOK ABOVELATIN CAPITAL LETTER I WITH DOT BELOWLATIN SMALL L" + + "ETTER I WITH DOT BELOWLATIN CAPITAL LETTER O WITH DOT BELOWLATIN SMALL L" + + "ETTER O WITH DOT BELOWLATIN CAPITAL LETTER O WITH HOOK ABOVELATIN SMALL " + + "LETTER O WITH HOOK ABOVELATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE" + + "LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTELATIN CAPITAL LETTER O WIT" + + "H CIRCUMFLEX AND GRAVELATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVELATI" + + "N CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVELATIN SMALL LETTER O WI" + + "TH CIRCUMFLEX AND HOOK ABOVELATIN CAPITAL LETTER O WITH CIRCUMFLEX AND T" + + "ILDELATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDELATIN CAPITAL LETTER O" + + " WITH CIRCUMFLEX AND DOT BELOWLATIN SMALL LETTER O WITH CIRCUMFLEX AND D" + + "OT BELOWLATIN CAPITAL LETTER O WITH HORN AND ACUTELATIN SMALL LETTER O W" + + "ITH HORN AND ACUTELATIN CAPITAL LETTER O WITH HORN AND GRAVELATIN SMALL " + + "LETTER O WITH HORN AND GRAVELATIN CAPITAL LETTER O WITH HORN AND HOOK AB" + + "OVELATIN SMALL LETTER O WITH HORN AND HOOK ABOVELATIN CAPITAL LETTER O W" + + "ITH HORN AND TILDELATIN SMALL LETTER O WITH HORN AND TILDELATIN CAPITAL " + + "LETTER O WITH HORN AND DOT BELOWLATIN SMALL LETTER O WITH HORN AND DOT B" + + "ELOWLATIN CAPITAL LETTER U WITH DOT BELOWLATIN SMALL LETTER U WITH DOT B" + + "ELOWLATIN CAPITAL LETTER U WITH HOOK ABOVELATIN SMALL LETTER U WITH HOOK" + + " ABOVELATIN CAPITAL LETTER U WITH HORN AND ACUTELATIN SMALL LETTER U WIT" + + "H HORN AND ACUTELATIN CAPITAL LETTER U WITH HORN AND GRAVELATIN SMALL LE" + + "TTER U WITH HORN AND GRAVELATIN CAPITAL LETTER U WITH HORN AND HOOK ABOV" + + "ELATIN SMALL LETTER U WITH HORN AND HOOK ABOVELATIN CAPITAL LETTER U WIT" + + "H HORN AND TILDELATIN SMALL LETTER U WITH HORN AND TILDELATIN CAPITAL LE" + + "TTER U WITH HORN AND DOT BELOWLATIN SMALL LETTER U WITH HORN AND DOT BEL" + + "OWLATIN CAPITAL LETTER Y WITH GRAVELATIN SMALL LETTER Y WITH GRAVELATIN " + + "CAPITAL LETTER Y WITH DOT BELOWLATIN SMALL LETTER Y WITH DOT BELOWLATIN " + + "CAPITAL LETTER Y WITH HOOK ABOVELATIN SMALL LETTER Y WITH HOOK ABOVELATI" + + "N CAPITAL LETTER Y WITH TILDELATIN SMALL LETTER Y WITH TILDELATIN CAPITA" + + "L LETTER MIDDLE-WELSH LLLATIN SMALL LETTER MIDDLE-WELSH LLLATIN CAPITAL ") + ("" + + "LETTER MIDDLE-WELSH VLATIN SMALL LETTER MIDDLE-WELSH VLATIN CAPITAL LETT" + + "ER Y WITH LOOPLATIN SMALL LETTER Y WITH LOOPGREEK SMALL LETTER ALPHA WIT" + + "H PSILIGREEK SMALL LETTER ALPHA WITH DASIAGREEK SMALL LETTER ALPHA WITH " + + "PSILI AND VARIAGREEK SMALL LETTER ALPHA WITH DASIA AND VARIAGREEK SMALL " + + "LETTER ALPHA WITH PSILI AND OXIAGREEK SMALL LETTER ALPHA WITH DASIA AND " + + "OXIAGREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENIGREEK SMALL LETTE" + + "R ALPHA WITH DASIA AND PERISPOMENIGREEK CAPITAL LETTER ALPHA WITH PSILIG" + + "REEK CAPITAL LETTER ALPHA WITH DASIAGREEK CAPITAL LETTER ALPHA WITH PSIL" + + "I AND VARIAGREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIAGREEK CAPITAL " + + "LETTER ALPHA WITH PSILI AND OXIAGREEK CAPITAL LETTER ALPHA WITH DASIA AN" + + "D OXIAGREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENIGREEK CAPITAL" + + " LETTER ALPHA WITH DASIA AND PERISPOMENIGREEK SMALL LETTER EPSILON WITH " + + "PSILIGREEK SMALL LETTER EPSILON WITH DASIAGREEK SMALL LETTER EPSILON WIT" + + "H PSILI AND VARIAGREEK SMALL LETTER EPSILON WITH DASIA AND VARIAGREEK SM" + + "ALL LETTER EPSILON WITH PSILI AND OXIAGREEK SMALL LETTER EPSILON WITH DA" + + "SIA AND OXIAGREEK CAPITAL LETTER EPSILON WITH PSILIGREEK CAPITAL LETTER " + + "EPSILON WITH DASIAGREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIAGREEK" + + " CAPITAL LETTER EPSILON WITH DASIA AND VARIAGREEK CAPITAL LETTER EPSILON" + + " WITH PSILI AND OXIAGREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIAGREE" + + "K SMALL LETTER ETA WITH PSILIGREEK SMALL LETTER ETA WITH DASIAGREEK SMAL" + + "L LETTER ETA WITH PSILI AND VARIAGREEK SMALL LETTER ETA WITH DASIA AND V" + + "ARIAGREEK SMALL LETTER ETA WITH PSILI AND OXIAGREEK SMALL LETTER ETA WIT" + + "H DASIA AND OXIAGREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENIGREEK S" + + "MALL LETTER ETA WITH DASIA AND PERISPOMENIGREEK CAPITAL LETTER ETA WITH " + + "PSILIGREEK CAPITAL LETTER ETA WITH DASIAGREEK CAPITAL LETTER ETA WITH PS" + + "ILI AND VARIAGREEK CAPITAL LETTER ETA WITH DASIA AND VARIAGREEK CAPITAL " + + "LETTER ETA WITH PSILI AND OXIAGREEK CAPITAL LETTER ETA WITH DASIA AND OX" + + "IAGREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENIGREEK CAPITAL LETTE" + + "R ETA WITH DASIA AND PERISPOMENIGREEK SMALL LETTER IOTA WITH PSILIGREEK " + + "SMALL LETTER IOTA WITH DASIAGREEK SMALL LETTER IOTA WITH PSILI AND VARIA" + + "GREEK SMALL LETTER IOTA WITH DASIA AND VARIAGREEK SMALL LETTER IOTA WITH" + + " PSILI AND OXIAGREEK SMALL LETTER IOTA WITH DASIA AND OXIAGREEK SMALL LE" + + "TTER IOTA WITH PSILI AND PERISPOMENIGREEK SMALL LETTER IOTA WITH DASIA A" + + "ND PERISPOMENIGREEK CAPITAL LETTER IOTA WITH PSILIGREEK CAPITAL LETTER I" + + "OTA WITH DASIAGREEK CAPITAL LETTER IOTA WITH PSILI AND VARIAGREEK CAPITA" + + "L LETTER IOTA WITH DASIA AND VARIAGREEK CAPITAL LETTER IOTA WITH PSILI A" + + "ND OXIAGREEK CAPITAL LETTER IOTA WITH DASIA AND OXIAGREEK CAPITAL LETTER" + + " IOTA WITH PSILI AND PERISPOMENIGREEK CAPITAL LETTER IOTA WITH DASIA AND" + + " PERISPOMENIGREEK SMALL LETTER OMICRON WITH PSILIGREEK SMALL LETTER OMIC" + + "RON WITH DASIAGREEK SMALL LETTER OMICRON WITH PSILI AND VARIAGREEK SMALL" + + " LETTER OMICRON WITH DASIA AND VARIAGREEK SMALL LETTER OMICRON WITH PSIL" + + "I AND OXIAGREEK SMALL LETTER OMICRON WITH DASIA AND OXIAGREEK CAPITAL LE" + + "TTER OMICRON WITH PSILIGREEK CAPITAL LETTER OMICRON WITH DASIAGREEK CAPI" + + "TAL LETTER OMICRON WITH PSILI AND VARIAGREEK CAPITAL LETTER OMICRON WITH" + + " DASIA AND VARIAGREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIAGREEK CA" + + "PITAL LETTER OMICRON WITH DASIA AND OXIAGREEK SMALL LETTER UPSILON WITH " + + "PSILIGREEK SMALL LETTER UPSILON WITH DASIAGREEK SMALL LETTER UPSILON WIT" + + "H PSILI AND VARIAGREEK SMALL LETTER UPSILON WITH DASIA AND VARIAGREEK SM" + + "ALL LETTER UPSILON WITH PSILI AND OXIAGREEK SMALL LETTER UPSILON WITH DA" + + "SIA AND OXIAGREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENIGREEK S" + + "MALL LETTER UPSILON WITH DASIA AND PERISPOMENIGREEK CAPITAL LETTER UPSIL" + + "ON WITH DASIAGREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIAGREEK CAPI" + + "TAL LETTER UPSILON WITH DASIA AND OXIAGREEK CAPITAL LETTER UPSILON WITH " + + "DASIA AND PERISPOMENIGREEK SMALL LETTER OMEGA WITH PSILIGREEK SMALL LETT" + + "ER OMEGA WITH DASIAGREEK SMALL LETTER OMEGA WITH PSILI AND VARIAGREEK SM" + + "ALL LETTER OMEGA WITH DASIA AND VARIAGREEK SMALL LETTER OMEGA WITH PSILI" + + " AND OXIAGREEK SMALL LETTER OMEGA WITH DASIA AND OXIAGREEK SMALL LETTER " + + "OMEGA WITH PSILI AND PERISPOMENIGREEK SMALL LETTER OMEGA WITH DASIA AND " + + "PERISPOMENIGREEK CAPITAL LETTER OMEGA WITH PSILIGREEK CAPITAL LETTER OME" + + "GA WITH DASIAGREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIAGREEK CAPITA" + + "L LETTER OMEGA WITH DASIA AND VARIAGREEK CAPITAL LETTER OMEGA WITH PSILI" + + " AND OXIAGREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIAGREEK CAPITAL LET" + + "TER OMEGA WITH PSILI AND PERISPOMENIGREEK CAPITAL LETTER OMEGA WITH DASI" + + "A AND PERISPOMENIGREEK SMALL LETTER ALPHA WITH VARIAGREEK SMALL LETTER A") + ("" + + "LPHA WITH OXIAGREEK SMALL LETTER EPSILON WITH VARIAGREEK SMALL LETTER EP" + + "SILON WITH OXIAGREEK SMALL LETTER ETA WITH VARIAGREEK SMALL LETTER ETA W" + + "ITH OXIAGREEK SMALL LETTER IOTA WITH VARIAGREEK SMALL LETTER IOTA WITH O" + + "XIAGREEK SMALL LETTER OMICRON WITH VARIAGREEK SMALL LETTER OMICRON WITH " + + "OXIAGREEK SMALL LETTER UPSILON WITH VARIAGREEK SMALL LETTER UPSILON WITH" + + " OXIAGREEK SMALL LETTER OMEGA WITH VARIAGREEK SMALL LETTER OMEGA WITH OX" + + "IAGREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENIGREEK SMALL LETTE" + + "R ALPHA WITH DASIA AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH PSILI " + + "AND VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH DASIA AND VARIA" + + " AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGE" + + "GRAMMENIGREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENIGR" + + "EEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENIGREEK" + + " SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENIGREEK CA" + + "PITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALP" + + "HA WITH DASIA AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH PSILI AN" + + "D VARIA AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH DASIA AND VARI" + + "A AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND P" + + "ROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGR" + + "AMMENIGREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGR" + + "AMMENIGREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGR" + + "AMMENIGREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENIGREEK SMALL LET" + + "TER ETA WITH DASIA AND YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH PSILI AN" + + "D VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH DASIA AND VARIA AND" + + " YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMME" + + "NIGREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENIGREEK SMAL" + + "L LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENIGREEK SMALL LET" + + "TER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER" + + " ETA WITH PSILI AND PROSGEGRAMMENIGREEK CAPITAL LETTER ETA WITH DASIA AN" + + "D PROSGEGRAMMENIGREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGE" + + "GRAMMENIGREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI" + + "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENIGREEK CAP" + + "ITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENIGREEK CAPITAL LETT" + + "ER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENIGREEK CAPITAL LETTER" + + " ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENIGREEK SMALL LETTER OME" + + "GA WITH PSILI AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WITH DASIA AND Y" + + "POGEGRAMMENIGREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMM" + + "ENIGREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENIGREEK " + + "SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENIGREEK SMALL LETT" + + "ER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA W" + + "ITH PSILI AND PERISPOMENI AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WITH" + + " DASIA AND PERISPOMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER OMEGA WITH " + + "PSILI AND PROSGEGRAMMENIGREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGE" + + "GRAMMENIGREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMME" + + "NIGREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENIGREE" + + "K CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENIGREEK CAPIT" + + "AL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENIGREEK CAPITAL LETT" + + "ER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENIGREEK CAPITAL LETT" + + "ER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENIGREEK SMALL LETTER" + + " ALPHA WITH VRACHYGREEK SMALL LETTER ALPHA WITH MACRONGREEK SMALL LETTER" + + " ALPHA WITH VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH YPOGEGR" + + "AMMENIGREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENIGREEK SMALL LE" + + "TTER ALPHA WITH PERISPOMENIGREEK SMALL LETTER ALPHA WITH PERISPOMENI AND" + + " YPOGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH VRACHYGREEK CAPITAL LETTER" + + " ALPHA WITH MACRONGREEK CAPITAL LETTER ALPHA WITH VARIAGREEK CAPITAL LET" + + "TER ALPHA WITH OXIAGREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENIGREEK K" + + "ORONISGREEK PROSGEGRAMMENIGREEK PSILIGREEK PERISPOMENIGREEK DIALYTIKA AN" + + "D PERISPOMENIGREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENIGREEK SM" + + "ALL LETTER ETA WITH YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH OXIA AND YP" + + "OGEGRAMMENIGREEK SMALL LETTER ETA WITH PERISPOMENIGREEK SMALL LETTER ETA" + + " WITH PERISPOMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER EPSILON WITH VAR" + + "IAGREEK CAPITAL LETTER EPSILON WITH OXIAGREEK CAPITAL LETTER ETA WITH VA" + + "RIAGREEK CAPITAL LETTER ETA WITH OXIAGREEK CAPITAL LETTER ETA WITH PROSG" + + "EGRAMMENIGREEK PSILI AND VARIAGREEK PSILI AND OXIAGREEK PSILI AND PERISP" + + "OMENIGREEK SMALL LETTER IOTA WITH VRACHYGREEK SMALL LETTER IOTA WITH MAC") + ("" + + "RONGREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIAGREEK SMALL LETTER IO" + + "TA WITH DIALYTIKA AND OXIAGREEK SMALL LETTER IOTA WITH PERISPOMENIGREEK " + + "SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENIGREEK CAPITAL LETTER IOT" + + "A WITH VRACHYGREEK CAPITAL LETTER IOTA WITH MACRONGREEK CAPITAL LETTER I" + + "OTA WITH VARIAGREEK CAPITAL LETTER IOTA WITH OXIAGREEK DASIA AND VARIAGR" + + "EEK DASIA AND OXIAGREEK DASIA AND PERISPOMENIGREEK SMALL LETTER UPSILON " + + "WITH VRACHYGREEK SMALL LETTER UPSILON WITH MACRONGREEK SMALL LETTER UPSI" + + "LON WITH DIALYTIKA AND VARIAGREEK SMALL LETTER UPSILON WITH DIALYTIKA AN" + + "D OXIAGREEK SMALL LETTER RHO WITH PSILIGREEK SMALL LETTER RHO WITH DASIA" + + "GREEK SMALL LETTER UPSILON WITH PERISPOMENIGREEK SMALL LETTER UPSILON WI" + + "TH DIALYTIKA AND PERISPOMENIGREEK CAPITAL LETTER UPSILON WITH VRACHYGREE" + + "K CAPITAL LETTER UPSILON WITH MACRONGREEK CAPITAL LETTER UPSILON WITH VA" + + "RIAGREEK CAPITAL LETTER UPSILON WITH OXIAGREEK CAPITAL LETTER RHO WITH D" + + "ASIAGREEK DIALYTIKA AND VARIAGREEK DIALYTIKA AND OXIAGREEK VARIAGREEK SM" + + "ALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WI" + + "TH YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENIGREE" + + "K SMALL LETTER OMEGA WITH PERISPOMENIGREEK SMALL LETTER OMEGA WITH PERIS" + + "POMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER OMICRON WITH VARIAGREEK CAP" + + "ITAL LETTER OMICRON WITH OXIAGREEK CAPITAL LETTER OMEGA WITH VARIAGREEK " + + "CAPITAL LETTER OMEGA WITH OXIAGREEK CAPITAL LETTER OMEGA WITH PROSGEGRAM" + + "MENIGREEK OXIAGREEK DASIAEN QUADEM QUADEN SPACEEM SPACETHREE-PER-EM SPAC" + + "EFOUR-PER-EM SPACESIX-PER-EM SPACEFIGURE SPACEPUNCTUATION SPACETHIN SPAC" + + "EHAIR SPACEZERO WIDTH SPACEZERO WIDTH NON-JOINERZERO WIDTH JOINERLEFT-TO" + + "-RIGHT MARKRIGHT-TO-LEFT MARKHYPHENNON-BREAKING HYPHENFIGURE DASHEN DASH" + + "EM DASHHORIZONTAL BARDOUBLE VERTICAL LINEDOUBLE LOW LINELEFT SINGLE QUOT" + + "ATION MARKRIGHT SINGLE QUOTATION MARKSINGLE LOW-9 QUOTATION MARKSINGLE H" + + "IGH-REVERSED-9 QUOTATION MARKLEFT DOUBLE QUOTATION MARKRIGHT DOUBLE QUOT" + + "ATION MARKDOUBLE LOW-9 QUOTATION MARKDOUBLE HIGH-REVERSED-9 QUOTATION MA" + + "RKDAGGERDOUBLE DAGGERBULLETTRIANGULAR BULLETONE DOT LEADERTWO DOT LEADER" + + "HORIZONTAL ELLIPSISHYPHENATION POINTLINE SEPARATORPARAGRAPH SEPARATORLEF" + + "T-TO-RIGHT EMBEDDINGRIGHT-TO-LEFT EMBEDDINGPOP DIRECTIONAL FORMATTINGLEF" + + "T-TO-RIGHT OVERRIDERIGHT-TO-LEFT OVERRIDENARROW NO-BREAK SPACEPER MILLE " + + "SIGNPER TEN THOUSAND SIGNPRIMEDOUBLE PRIMETRIPLE PRIMEREVERSED PRIMEREVE" + + "RSED DOUBLE PRIMEREVERSED TRIPLE PRIMECARETSINGLE LEFT-POINTING ANGLE QU" + + "OTATION MARKSINGLE RIGHT-POINTING ANGLE QUOTATION MARKREFERENCE MARKDOUB" + + "LE EXCLAMATION MARKINTERROBANGOVERLINEUNDERTIECHARACTER TIECARET INSERTI" + + "ON POINTASTERISMHYPHEN BULLETFRACTION SLASHLEFT SQUARE BRACKET WITH QUIL" + + "LRIGHT SQUARE BRACKET WITH QUILLDOUBLE QUESTION MARKQUESTION EXCLAMATION" + + " MARKEXCLAMATION QUESTION MARKTIRONIAN SIGN ETREVERSED PILCROW SIGNBLACK" + + " LEFTWARDS BULLETBLACK RIGHTWARDS BULLETLOW ASTERISKREVERSED SEMICOLONCL" + + "OSE UPTWO ASTERISKS ALIGNED VERTICALLYCOMMERCIAL MINUS SIGNSWUNG DASHINV" + + "ERTED UNDERTIEFLOWER PUNCTUATION MARKTHREE DOT PUNCTUATIONQUADRUPLE PRIM" + + "EFOUR DOT PUNCTUATIONFIVE DOT PUNCTUATIONTWO DOT PUNCTUATIONFOUR DOT MAR" + + "KDOTTED CROSSTRICOLONVERTICAL FOUR DOTSMEDIUM MATHEMATICAL SPACEWORD JOI" + + "NERFUNCTION APPLICATIONINVISIBLE TIMESINVISIBLE SEPARATORINVISIBLE PLUSL" + + "EFT-TO-RIGHT ISOLATERIGHT-TO-LEFT ISOLATEFIRST STRONG ISOLATEPOP DIRECTI" + + "ONAL ISOLATEINHIBIT SYMMETRIC SWAPPINGACTIVATE SYMMETRIC SWAPPINGINHIBIT" + + " ARABIC FORM SHAPINGACTIVATE ARABIC FORM SHAPINGNATIONAL DIGIT SHAPESNOM" + + "INAL DIGIT SHAPESSUPERSCRIPT ZEROSUPERSCRIPT LATIN SMALL LETTER ISUPERSC" + + "RIPT FOURSUPERSCRIPT FIVESUPERSCRIPT SIXSUPERSCRIPT SEVENSUPERSCRIPT EIG" + + "HTSUPERSCRIPT NINESUPERSCRIPT PLUS SIGNSUPERSCRIPT MINUSSUPERSCRIPT EQUA" + + "LS SIGNSUPERSCRIPT LEFT PARENTHESISSUPERSCRIPT RIGHT PARENTHESISSUPERSCR" + + "IPT LATIN SMALL LETTER NSUBSCRIPT ZEROSUBSCRIPT ONESUBSCRIPT TWOSUBSCRIP" + + "T THREESUBSCRIPT FOURSUBSCRIPT FIVESUBSCRIPT SIXSUBSCRIPT SEVENSUBSCRIPT" + + " EIGHTSUBSCRIPT NINESUBSCRIPT PLUS SIGNSUBSCRIPT MINUSSUBSCRIPT EQUALS S" + + "IGNSUBSCRIPT LEFT PARENTHESISSUBSCRIPT RIGHT PARENTHESISLATIN SUBSCRIPT " + + "SMALL LETTER ALATIN SUBSCRIPT SMALL LETTER ELATIN SUBSCRIPT SMALL LETTER" + + " OLATIN SUBSCRIPT SMALL LETTER XLATIN SUBSCRIPT SMALL LETTER SCHWALATIN " + + "SUBSCRIPT SMALL LETTER HLATIN SUBSCRIPT SMALL LETTER KLATIN SUBSCRIPT SM" + + "ALL LETTER LLATIN SUBSCRIPT SMALL LETTER MLATIN SUBSCRIPT SMALL LETTER N" + + "LATIN SUBSCRIPT SMALL LETTER PLATIN SUBSCRIPT SMALL LETTER SLATIN SUBSCR" + + "IPT SMALL LETTER TEURO-CURRENCY SIGNCOLON SIGNCRUZEIRO SIGNFRENCH FRANC " + + "SIGNLIRA SIGNMILL SIGNNAIRA SIGNPESETA SIGNRUPEE SIGNWON SIGNNEW SHEQEL " + + "SIGNDONG SIGNEURO SIGNKIP SIGNTUGRIK SIGNDRACHMA SIGNGERMAN PENNY SIGNPE") + ("" + + "SO SIGNGUARANI SIGNAUSTRAL SIGNHRYVNIA SIGNCEDI SIGNLIVRE TOURNOIS SIGNS" + + "PESMILO SIGNTENGE SIGNINDIAN RUPEE SIGNTURKISH LIRA SIGNNORDIC MARK SIGN" + + "MANAT SIGNRUBLE SIGNLARI SIGNCOMBINING LEFT HARPOON ABOVECOMBINING RIGHT" + + " HARPOON ABOVECOMBINING LONG VERTICAL LINE OVERLAYCOMBINING SHORT VERTIC" + + "AL LINE OVERLAYCOMBINING ANTICLOCKWISE ARROW ABOVECOMBINING CLOCKWISE AR" + + "ROW ABOVECOMBINING LEFT ARROW ABOVECOMBINING RIGHT ARROW ABOVECOMBINING " + + "RING OVERLAYCOMBINING CLOCKWISE RING OVERLAYCOMBINING ANTICLOCKWISE RING" + + " OVERLAYCOMBINING THREE DOTS ABOVECOMBINING FOUR DOTS ABOVECOMBINING ENC" + + "LOSING CIRCLECOMBINING ENCLOSING SQUARECOMBINING ENCLOSING DIAMONDCOMBIN" + + "ING ENCLOSING CIRCLE BACKSLASHCOMBINING LEFT RIGHT ARROW ABOVECOMBINING " + + "ENCLOSING SCREENCOMBINING ENCLOSING KEYCAPCOMBINING ENCLOSING UPWARD POI" + + "NTING TRIANGLECOMBINING REVERSE SOLIDUS OVERLAYCOMBINING DOUBLE VERTICAL" + + " STROKE OVERLAYCOMBINING ANNUITY SYMBOLCOMBINING TRIPLE UNDERDOTCOMBININ" + + "G WIDE BRIDGE ABOVECOMBINING LEFTWARDS ARROW OVERLAYCOMBINING LONG DOUBL" + + "E SOLIDUS OVERLAYCOMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDSCOMBINI" + + "NG LEFTWARDS HARPOON WITH BARB DOWNWARDSCOMBINING LEFT ARROW BELOWCOMBIN" + + "ING RIGHT ARROW BELOWCOMBINING ASTERISK ABOVEACCOUNT OFADDRESSED TO THE " + + "SUBJECTDOUBLE-STRUCK CAPITAL CDEGREE CELSIUSCENTRE LINE SYMBOLCARE OFCAD" + + "A UNAEULER CONSTANTSCRUPLEDEGREE FAHRENHEITSCRIPT SMALL GSCRIPT CAPITAL " + + "HBLACK-LETTER CAPITAL HDOUBLE-STRUCK CAPITAL HPLANCK CONSTANTPLANCK CONS" + + "TANT OVER TWO PISCRIPT CAPITAL IBLACK-LETTER CAPITAL ISCRIPT CAPITAL LSC" + + "RIPT SMALL LL B BAR SYMBOLDOUBLE-STRUCK CAPITAL NNUMERO SIGNSOUND RECORD" + + "ING COPYRIGHTSCRIPT CAPITAL PDOUBLE-STRUCK CAPITAL PDOUBLE-STRUCK CAPITA" + + "L QSCRIPT CAPITAL RBLACK-LETTER CAPITAL RDOUBLE-STRUCK CAPITAL RPRESCRIP" + + "TION TAKERESPONSESERVICE MARKTELEPHONE SIGNTRADE MARK SIGNVERSICLEDOUBLE" + + "-STRUCK CAPITAL ZOUNCE SIGNOHM SIGNINVERTED OHM SIGNBLACK-LETTER CAPITAL" + + " ZTURNED GREEK SMALL LETTER IOTAKELVIN SIGNANGSTROM SIGNSCRIPT CAPITAL B" + + "BLACK-LETTER CAPITAL CESTIMATED SYMBOLSCRIPT SMALL ESCRIPT CAPITAL ESCRI" + + "PT CAPITAL FTURNED CAPITAL FSCRIPT CAPITAL MSCRIPT SMALL OALEF SYMBOLBET" + + " SYMBOLGIMEL SYMBOLDALET SYMBOLINFORMATION SOURCEROTATED CAPITAL QFACSIM" + + "ILE SIGNDOUBLE-STRUCK SMALL PIDOUBLE-STRUCK SMALL GAMMADOUBLE-STRUCK CAP" + + "ITAL GAMMADOUBLE-STRUCK CAPITAL PIDOUBLE-STRUCK N-ARY SUMMATIONTURNED SA" + + "NS-SERIF CAPITAL GTURNED SANS-SERIF CAPITAL LREVERSED SANS-SERIF CAPITAL" + + " LTURNED SANS-SERIF CAPITAL YDOUBLE-STRUCK ITALIC CAPITAL DDOUBLE-STRUCK" + + " ITALIC SMALL DDOUBLE-STRUCK ITALIC SMALL EDOUBLE-STRUCK ITALIC SMALL ID" + + "OUBLE-STRUCK ITALIC SMALL JPROPERTY LINETURNED AMPERSANDPER SIGNAKTIESEL" + + "SKABTURNED SMALL FSYMBOL FOR SAMARITAN SOURCEVULGAR FRACTION ONE SEVENTH" + + "VULGAR FRACTION ONE NINTHVULGAR FRACTION ONE TENTHVULGAR FRACTION ONE TH" + + "IRDVULGAR FRACTION TWO THIRDSVULGAR FRACTION ONE FIFTHVULGAR FRACTION TW" + + "O FIFTHSVULGAR FRACTION THREE FIFTHSVULGAR FRACTION FOUR FIFTHSVULGAR FR" + + "ACTION ONE SIXTHVULGAR FRACTION FIVE SIXTHSVULGAR FRACTION ONE EIGHTHVUL" + + "GAR FRACTION THREE EIGHTHSVULGAR FRACTION FIVE EIGHTHSVULGAR FRACTION SE" + + "VEN EIGHTHSFRACTION NUMERATOR ONEROMAN NUMERAL ONEROMAN NUMERAL TWOROMAN" + + " NUMERAL THREEROMAN NUMERAL FOURROMAN NUMERAL FIVEROMAN NUMERAL SIXROMAN" + + " NUMERAL SEVENROMAN NUMERAL EIGHTROMAN NUMERAL NINEROMAN NUMERAL TENROMA" + + "N NUMERAL ELEVENROMAN NUMERAL TWELVEROMAN NUMERAL FIFTYROMAN NUMERAL ONE" + + " HUNDREDROMAN NUMERAL FIVE HUNDREDROMAN NUMERAL ONE THOUSANDSMALL ROMAN " + + "NUMERAL ONESMALL ROMAN NUMERAL TWOSMALL ROMAN NUMERAL THREESMALL ROMAN N" + + "UMERAL FOURSMALL ROMAN NUMERAL FIVESMALL ROMAN NUMERAL SIXSMALL ROMAN NU" + + "MERAL SEVENSMALL ROMAN NUMERAL EIGHTSMALL ROMAN NUMERAL NINESMALL ROMAN " + + "NUMERAL TENSMALL ROMAN NUMERAL ELEVENSMALL ROMAN NUMERAL TWELVESMALL ROM" + + "AN NUMERAL FIFTYSMALL ROMAN NUMERAL ONE HUNDREDSMALL ROMAN NUMERAL FIVE " + + "HUNDREDSMALL ROMAN NUMERAL ONE THOUSANDROMAN NUMERAL ONE THOUSAND C DROM" + + "AN NUMERAL FIVE THOUSANDROMAN NUMERAL TEN THOUSANDROMAN NUMERAL REVERSED" + + " ONE HUNDREDLATIN SMALL LETTER REVERSED CROMAN NUMERAL SIX LATE FORMROMA" + + "N NUMERAL FIFTY EARLY FORMROMAN NUMERAL FIFTY THOUSANDROMAN NUMERAL ONE " + + "HUNDRED THOUSANDVULGAR FRACTION ZERO THIRDSTURNED DIGIT TWOTURNED DIGIT " + + "THREELEFTWARDS ARROWUPWARDS ARROWRIGHTWARDS ARROWDOWNWARDS ARROWLEFT RIG" + + "HT ARROWUP DOWN ARROWNORTH WEST ARROWNORTH EAST ARROWSOUTH EAST ARROWSOU" + + "TH WEST ARROWLEFTWARDS ARROW WITH STROKERIGHTWARDS ARROW WITH STROKELEFT" + + "WARDS WAVE ARROWRIGHTWARDS WAVE ARROWLEFTWARDS TWO HEADED ARROWUPWARDS T" + + "WO HEADED ARROWRIGHTWARDS TWO HEADED ARROWDOWNWARDS TWO HEADED ARROWLEFT" + + "WARDS ARROW WITH TAILRIGHTWARDS ARROW WITH TAILLEFTWARDS ARROW FROM BARU" + + "PWARDS ARROW FROM BARRIGHTWARDS ARROW FROM BARDOWNWARDS ARROW FROM BARUP") + ("" + + " DOWN ARROW WITH BASELEFTWARDS ARROW WITH HOOKRIGHTWARDS ARROW WITH HOOK" + + "LEFTWARDS ARROW WITH LOOPRIGHTWARDS ARROW WITH LOOPLEFT RIGHT WAVE ARROW" + + "LEFT RIGHT ARROW WITH STROKEDOWNWARDS ZIGZAG ARROWUPWARDS ARROW WITH TIP" + + " LEFTWARDSUPWARDS ARROW WITH TIP RIGHTWARDSDOWNWARDS ARROW WITH TIP LEFT" + + "WARDSDOWNWARDS ARROW WITH TIP RIGHTWARDSRIGHTWARDS ARROW WITH CORNER DOW" + + "NWARDSDOWNWARDS ARROW WITH CORNER LEFTWARDSANTICLOCKWISE TOP SEMICIRCLE " + + "ARROWCLOCKWISE TOP SEMICIRCLE ARROWNORTH WEST ARROW TO LONG BARLEFTWARDS" + + " ARROW TO BAR OVER RIGHTWARDS ARROW TO BARANTICLOCKWISE OPEN CIRCLE ARRO" + + "WCLOCKWISE OPEN CIRCLE ARROWLEFTWARDS HARPOON WITH BARB UPWARDSLEFTWARDS" + + " HARPOON WITH BARB DOWNWARDSUPWARDS HARPOON WITH BARB RIGHTWARDSUPWARDS " + + "HARPOON WITH BARB LEFTWARDSRIGHTWARDS HARPOON WITH BARB UPWARDSRIGHTWARD" + + "S HARPOON WITH BARB DOWNWARDSDOWNWARDS HARPOON WITH BARB RIGHTWARDSDOWNW" + + "ARDS HARPOON WITH BARB LEFTWARDSRIGHTWARDS ARROW OVER LEFTWARDS ARROWUPW" + + "ARDS ARROW LEFTWARDS OF DOWNWARDS ARROWLEFTWARDS ARROW OVER RIGHTWARDS A" + + "RROWLEFTWARDS PAIRED ARROWSUPWARDS PAIRED ARROWSRIGHTWARDS PAIRED ARROWS" + + "DOWNWARDS PAIRED ARROWSLEFTWARDS HARPOON OVER RIGHTWARDS HARPOONRIGHTWAR" + + "DS HARPOON OVER LEFTWARDS HARPOONLEFTWARDS DOUBLE ARROW WITH STROKELEFT " + + "RIGHT DOUBLE ARROW WITH STROKERIGHTWARDS DOUBLE ARROW WITH STROKELEFTWAR" + + "DS DOUBLE ARROWUPWARDS DOUBLE ARROWRIGHTWARDS DOUBLE ARROWDOWNWARDS DOUB" + + "LE ARROWLEFT RIGHT DOUBLE ARROWUP DOWN DOUBLE ARROWNORTH WEST DOUBLE ARR" + + "OWNORTH EAST DOUBLE ARROWSOUTH EAST DOUBLE ARROWSOUTH WEST DOUBLE ARROWL" + + "EFTWARDS TRIPLE ARROWRIGHTWARDS TRIPLE ARROWLEFTWARDS SQUIGGLE ARROWRIGH" + + "TWARDS SQUIGGLE ARROWUPWARDS ARROW WITH DOUBLE STROKEDOWNWARDS ARROW WIT" + + "H DOUBLE STROKELEFTWARDS DASHED ARROWUPWARDS DASHED ARROWRIGHTWARDS DASH" + + "ED ARROWDOWNWARDS DASHED ARROWLEFTWARDS ARROW TO BARRIGHTWARDS ARROW TO " + + "BARLEFTWARDS WHITE ARROWUPWARDS WHITE ARROWRIGHTWARDS WHITE ARROWDOWNWAR" + + "DS WHITE ARROWUPWARDS WHITE ARROW FROM BARUPWARDS WHITE ARROW ON PEDESTA" + + "LUPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BARUPWARDS WHITE ARROW " + + "ON PEDESTAL WITH VERTICAL BARUPWARDS WHITE DOUBLE ARROWUPWARDS WHITE DOU" + + "BLE ARROW ON PEDESTALRIGHTWARDS WHITE ARROW FROM WALLNORTH WEST ARROW TO" + + " CORNERSOUTH EAST ARROW TO CORNERUP DOWN WHITE ARROWRIGHT ARROW WITH SMA" + + "LL CIRCLEDOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROWTHREE RIGHTWARDS ARRO" + + "WSLEFTWARDS ARROW WITH VERTICAL STROKERIGHTWARDS ARROW WITH VERTICAL STR" + + "OKELEFT RIGHT ARROW WITH VERTICAL STROKELEFTWARDS ARROW WITH DOUBLE VERT" + + "ICAL STROKERIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKELEFT RIGHT ARROW " + + "WITH DOUBLE VERTICAL STROKELEFTWARDS OPEN-HEADED ARROWRIGHTWARDS OPEN-HE" + + "ADED ARROWLEFT RIGHT OPEN-HEADED ARROWFOR ALLCOMPLEMENTPARTIAL DIFFERENT" + + "IALTHERE EXISTSTHERE DOES NOT EXISTEMPTY SETINCREMENTNABLAELEMENT OFNOT " + + "AN ELEMENT OFSMALL ELEMENT OFCONTAINS AS MEMBERDOES NOT CONTAIN AS MEMBE" + + "RSMALL CONTAINS AS MEMBEREND OF PROOFN-ARY PRODUCTN-ARY COPRODUCTN-ARY S" + + "UMMATIONMINUS SIGNMINUS-OR-PLUS SIGNDOT PLUSDIVISION SLASHSET MINUSASTER" + + "ISK OPERATORRING OPERATORBULLET OPERATORSQUARE ROOTCUBE ROOTFOURTH ROOTP" + + "ROPORTIONAL TOINFINITYRIGHT ANGLEANGLEMEASURED ANGLESPHERICAL ANGLEDIVID" + + "ESDOES NOT DIVIDEPARALLEL TONOT PARALLEL TOLOGICAL ANDLOGICAL ORINTERSEC" + + "TIONUNIONINTEGRALDOUBLE INTEGRALTRIPLE INTEGRALCONTOUR INTEGRALSURFACE I" + + "NTEGRALVOLUME INTEGRALCLOCKWISE INTEGRALCLOCKWISE CONTOUR INTEGRALANTICL" + + "OCKWISE CONTOUR INTEGRALTHEREFOREBECAUSERATIOPROPORTIONDOT MINUSEXCESSGE" + + "OMETRIC PROPORTIONHOMOTHETICTILDE OPERATORREVERSED TILDEINVERTED LAZY SS" + + "INE WAVEWREATH PRODUCTNOT TILDEMINUS TILDEASYMPTOTICALLY EQUAL TONOT ASY" + + "MPTOTICALLY EQUAL TOAPPROXIMATELY EQUAL TOAPPROXIMATELY BUT NOT ACTUALLY" + + " EQUAL TONEITHER APPROXIMATELY NOR ACTUALLY EQUAL TOALMOST EQUAL TONOT A" + + "LMOST EQUAL TOALMOST EQUAL OR EQUAL TOTRIPLE TILDEALL EQUAL TOEQUIVALENT" + + " TOGEOMETRICALLY EQUIVALENT TODIFFERENCE BETWEENAPPROACHES THE LIMITGEOM" + + "ETRICALLY EQUAL TOAPPROXIMATELY EQUAL TO OR THE IMAGE OFIMAGE OF OR APPR" + + "OXIMATELY EQUAL TOCOLON EQUALSEQUALS COLONRING IN EQUAL TORING EQUAL TOC" + + "ORRESPONDS TOESTIMATESEQUIANGULAR TOSTAR EQUALSDELTA EQUAL TOEQUAL TO BY" + + " DEFINITIONMEASURED BYQUESTIONED EQUAL TONOT EQUAL TOIDENTICAL TONOT IDE" + + "NTICAL TOSTRICTLY EQUIVALENT TOLESS-THAN OR EQUAL TOGREATER-THAN OR EQUA" + + "L TOLESS-THAN OVER EQUAL TOGREATER-THAN OVER EQUAL TOLESS-THAN BUT NOT E" + + "QUAL TOGREATER-THAN BUT NOT EQUAL TOMUCH LESS-THANMUCH GREATER-THANBETWE" + + "ENNOT EQUIVALENT TONOT LESS-THANNOT GREATER-THANNEITHER LESS-THAN NOR EQ" + + "UAL TONEITHER GREATER-THAN NOR EQUAL TOLESS-THAN OR EQUIVALENT TOGREATER" + + "-THAN OR EQUIVALENT TONEITHER LESS-THAN NOR EQUIVALENT TONEITHER GREATER" + + "-THAN NOR EQUIVALENT TOLESS-THAN OR GREATER-THANGREATER-THAN OR LESS-THA") + ("" + + "NNEITHER LESS-THAN NOR GREATER-THANNEITHER GREATER-THAN NOR LESS-THANPRE" + + "CEDESSUCCEEDSPRECEDES OR EQUAL TOSUCCEEDS OR EQUAL TOPRECEDES OR EQUIVAL" + + "ENT TOSUCCEEDS OR EQUIVALENT TODOES NOT PRECEDEDOES NOT SUCCEEDSUBSET OF" + + "SUPERSET OFNOT A SUBSET OFNOT A SUPERSET OFSUBSET OF OR EQUAL TOSUPERSET" + + " OF OR EQUAL TONEITHER A SUBSET OF NOR EQUAL TONEITHER A SUPERSET OF NOR" + + " EQUAL TOSUBSET OF WITH NOT EQUAL TOSUPERSET OF WITH NOT EQUAL TOMULTISE" + + "TMULTISET MULTIPLICATIONMULTISET UNIONSQUARE IMAGE OFSQUARE ORIGINAL OFS" + + "QUARE IMAGE OF OR EQUAL TOSQUARE ORIGINAL OF OR EQUAL TOSQUARE CAPSQUARE" + + " CUPCIRCLED PLUSCIRCLED MINUSCIRCLED TIMESCIRCLED DIVISION SLASHCIRCLED " + + "DOT OPERATORCIRCLED RING OPERATORCIRCLED ASTERISK OPERATORCIRCLED EQUALS" + + "CIRCLED DASHSQUARED PLUSSQUARED MINUSSQUARED TIMESSQUARED DOT OPERATORRI" + + "GHT TACKLEFT TACKDOWN TACKUP TACKASSERTIONMODELSTRUEFORCESTRIPLE VERTICA" + + "L BAR RIGHT TURNSTILEDOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILEDOES NOT " + + "PROVENOT TRUEDOES NOT FORCENEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURN" + + "STILEPRECEDES UNDER RELATIONSUCCEEDS UNDER RELATIONNORMAL SUBGROUP OFCON" + + "TAINS AS NORMAL SUBGROUPNORMAL SUBGROUP OF OR EQUAL TOCONTAINS AS NORMAL" + + " SUBGROUP OR EQUAL TOORIGINAL OFIMAGE OFMULTIMAPHERMITIAN CONJUGATE MATR" + + "IXINTERCALATEXORNANDNORRIGHT ANGLE WITH ARCRIGHT TRIANGLEN-ARY LOGICAL A" + + "NDN-ARY LOGICAL ORN-ARY INTERSECTIONN-ARY UNIONDIAMOND OPERATORDOT OPERA" + + "TORSTAR OPERATORDIVISION TIMESBOWTIELEFT NORMAL FACTOR SEMIDIRECT PRODUC" + + "TRIGHT NORMAL FACTOR SEMIDIRECT PRODUCTLEFT SEMIDIRECT PRODUCTRIGHT SEMI" + + "DIRECT PRODUCTREVERSED TILDE EQUALSCURLY LOGICAL ORCURLY LOGICAL ANDDOUB" + + "LE SUBSETDOUBLE SUPERSETDOUBLE INTERSECTIONDOUBLE UNIONPITCHFORKEQUAL AN" + + "D PARALLEL TOLESS-THAN WITH DOTGREATER-THAN WITH DOTVERY MUCH LESS-THANV" + + "ERY MUCH GREATER-THANLESS-THAN EQUAL TO OR GREATER-THANGREATER-THAN EQUA" + + "L TO OR LESS-THANEQUAL TO OR LESS-THANEQUAL TO OR GREATER-THANEQUAL TO O" + + "R PRECEDESEQUAL TO OR SUCCEEDSDOES NOT PRECEDE OR EQUALDOES NOT SUCCEED " + + "OR EQUALNOT SQUARE IMAGE OF OR EQUAL TONOT SQUARE ORIGINAL OF OR EQUAL T" + + "OSQUARE IMAGE OF OR NOT EQUAL TOSQUARE ORIGINAL OF OR NOT EQUAL TOLESS-T" + + "HAN BUT NOT EQUIVALENT TOGREATER-THAN BUT NOT EQUIVALENT TOPRECEDES BUT " + + "NOT EQUIVALENT TOSUCCEEDS BUT NOT EQUIVALENT TONOT NORMAL SUBGROUP OFDOE" + + "S NOT CONTAIN AS NORMAL SUBGROUPNOT NORMAL SUBGROUP OF OR EQUAL TODOES N" + + "OT CONTAIN AS NORMAL SUBGROUP OR EQUALVERTICAL ELLIPSISMIDLINE HORIZONTA" + + "L ELLIPSISUP RIGHT DIAGONAL ELLIPSISDOWN RIGHT DIAGONAL ELLIPSISELEMENT " + + "OF WITH LONG HORIZONTAL STROKEELEMENT OF WITH VERTICAL BAR AT END OF HOR" + + "IZONTAL STROKESMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL ST" + + "ROKEELEMENT OF WITH DOT ABOVEELEMENT OF WITH OVERBARSMALL ELEMENT OF WIT" + + "H OVERBARELEMENT OF WITH UNDERBARELEMENT OF WITH TWO HORIZONTAL STROKESC" + + "ONTAINS WITH LONG HORIZONTAL STROKECONTAINS WITH VERTICAL BAR AT END OF " + + "HORIZONTAL STROKESMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL S" + + "TROKECONTAINS WITH OVERBARSMALL CONTAINS WITH OVERBARZ NOTATION BAG MEMB" + + "ERSHIPDIAMETER SIGNELECTRIC ARROWHOUSEUP ARROWHEADDOWN ARROWHEADPROJECTI" + + "VEPERSPECTIVEWAVY LINELEFT CEILINGRIGHT CEILINGLEFT FLOORRIGHT FLOORBOTT" + + "OM RIGHT CROPBOTTOM LEFT CROPTOP RIGHT CROPTOP LEFT CROPREVERSED NOT SIG" + + "NSQUARE LOZENGEARCSEGMENTSECTORTELEPHONE RECORDERPOSITION INDICATORVIEWD" + + "ATA SQUAREPLACE OF INTEREST SIGNTURNED NOT SIGNWATCHHOURGLASSTOP LEFT CO" + + "RNERTOP RIGHT CORNERBOTTOM LEFT CORNERBOTTOM RIGHT CORNERTOP HALF INTEGR" + + "ALBOTTOM HALF INTEGRALFROWNSMILEUP ARROWHEAD BETWEEN TWO HORIZONTAL BARS" + + "OPTION KEYERASE TO THE RIGHTX IN A RECTANGLE BOXKEYBOARDLEFT-POINTING AN" + + "GLE BRACKETRIGHT-POINTING ANGLE BRACKETERASE TO THE LEFTBENZENE RINGCYLI" + + "NDRICITYALL AROUND-PROFILESYMMETRYTOTAL RUNOUTDIMENSION ORIGINCONICAL TA" + + "PERSLOPECOUNTERBORECOUNTERSINKAPL FUNCTIONAL SYMBOL I-BEAMAPL FUNCTIONAL" + + " SYMBOL SQUISH QUADAPL FUNCTIONAL SYMBOL QUAD EQUALAPL FUNCTIONAL SYMBOL" + + " QUAD DIVIDEAPL FUNCTIONAL SYMBOL QUAD DIAMONDAPL FUNCTIONAL SYMBOL QUAD" + + " JOTAPL FUNCTIONAL SYMBOL QUAD CIRCLEAPL FUNCTIONAL SYMBOL CIRCLE STILEA" + + "PL FUNCTIONAL SYMBOL CIRCLE JOTAPL FUNCTIONAL SYMBOL SLASH BARAPL FUNCTI" + + "ONAL SYMBOL BACKSLASH BARAPL FUNCTIONAL SYMBOL QUAD SLASHAPL FUNCTIONAL " + + "SYMBOL QUAD BACKSLASHAPL FUNCTIONAL SYMBOL QUAD LESS-THANAPL FUNCTIONAL " + + "SYMBOL QUAD GREATER-THANAPL FUNCTIONAL SYMBOL LEFTWARDS VANEAPL FUNCTION" + + "AL SYMBOL RIGHTWARDS VANEAPL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROWAPL F" + + "UNCTIONAL SYMBOL QUAD RIGHTWARDS ARROWAPL FUNCTIONAL SYMBOL CIRCLE BACKS" + + "LASHAPL FUNCTIONAL SYMBOL DOWN TACK UNDERBARAPL FUNCTIONAL SYMBOL DELTA " + + "STILEAPL FUNCTIONAL SYMBOL QUAD DOWN CARETAPL FUNCTIONAL SYMBOL QUAD DEL" + + "TAAPL FUNCTIONAL SYMBOL DOWN TACK JOTAPL FUNCTIONAL SYMBOL UPWARDS VANEA") + ("" + + "PL FUNCTIONAL SYMBOL QUAD UPWARDS ARROWAPL FUNCTIONAL SYMBOL UP TACK OVE" + + "RBARAPL FUNCTIONAL SYMBOL DEL STILEAPL FUNCTIONAL SYMBOL QUAD UP CARETAP" + + "L FUNCTIONAL SYMBOL QUAD DELAPL FUNCTIONAL SYMBOL UP TACK JOTAPL FUNCTIO" + + "NAL SYMBOL DOWNWARDS VANEAPL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROWAPL F" + + "UNCTIONAL SYMBOL QUOTE UNDERBARAPL FUNCTIONAL SYMBOL DELTA UNDERBARAPL F" + + "UNCTIONAL SYMBOL DIAMOND UNDERBARAPL FUNCTIONAL SYMBOL JOT UNDERBARAPL F" + + "UNCTIONAL SYMBOL CIRCLE UNDERBARAPL FUNCTIONAL SYMBOL UP SHOE JOTAPL FUN" + + "CTIONAL SYMBOL QUOTE QUADAPL FUNCTIONAL SYMBOL CIRCLE STARAPL FUNCTIONAL" + + " SYMBOL QUAD COLONAPL FUNCTIONAL SYMBOL UP TACK DIAERESISAPL FUNCTIONAL " + + "SYMBOL DEL DIAERESISAPL FUNCTIONAL SYMBOL STAR DIAERESISAPL FUNCTIONAL S" + + "YMBOL JOT DIAERESISAPL FUNCTIONAL SYMBOL CIRCLE DIAERESISAPL FUNCTIONAL " + + "SYMBOL DOWN SHOE STILEAPL FUNCTIONAL SYMBOL LEFT SHOE STILEAPL FUNCTIONA" + + "L SYMBOL TILDE DIAERESISAPL FUNCTIONAL SYMBOL GREATER-THAN DIAERESISAPL " + + "FUNCTIONAL SYMBOL COMMA BARAPL FUNCTIONAL SYMBOL DEL TILDEAPL FUNCTIONAL" + + " SYMBOL ZILDEAPL FUNCTIONAL SYMBOL STILE TILDEAPL FUNCTIONAL SYMBOL SEMI" + + "COLON UNDERBARAPL FUNCTIONAL SYMBOL QUAD NOT EQUALAPL FUNCTIONAL SYMBOL " + + "QUAD QUESTIONAPL FUNCTIONAL SYMBOL DOWN CARET TILDEAPL FUNCTIONAL SYMBOL" + + " UP CARET TILDEAPL FUNCTIONAL SYMBOL IOTAAPL FUNCTIONAL SYMBOL RHOAPL FU" + + "NCTIONAL SYMBOL OMEGAAPL FUNCTIONAL SYMBOL ALPHA UNDERBARAPL FUNCTIONAL " + + "SYMBOL EPSILON UNDERBARAPL FUNCTIONAL SYMBOL IOTA UNDERBARAPL FUNCTIONAL" + + " SYMBOL OMEGA UNDERBARAPL FUNCTIONAL SYMBOL ALPHANOT CHECK MARKRIGHT ANG" + + "LE WITH DOWNWARDS ZIGZAG ARROWSHOULDERED OPEN BOXBELL SYMBOLVERTICAL LIN" + + "E WITH MIDDLE DOTINSERTION SYMBOLCONTINUOUS UNDERLINE SYMBOLDISCONTINUOU" + + "S UNDERLINE SYMBOLEMPHASIS SYMBOLCOMPOSITION SYMBOLWHITE SQUARE WITH CEN" + + "TRE VERTICAL LINEENTER SYMBOLALTERNATIVE KEY SYMBOLHELM SYMBOLCIRCLED HO" + + "RIZONTAL BAR WITH NOTCHCIRCLED TRIANGLE DOWNBROKEN CIRCLE WITH NORTHWEST" + + " ARROWUNDO SYMBOLMONOSTABLE SYMBOLHYSTERESIS SYMBOLOPEN-CIRCUIT-OUTPUT H" + + "-TYPE SYMBOLOPEN-CIRCUIT-OUTPUT L-TYPE SYMBOLPASSIVE-PULL-DOWN-OUTPUT SY" + + "MBOLPASSIVE-PULL-UP-OUTPUT SYMBOLDIRECT CURRENT SYMBOL FORM TWOSOFTWARE-" + + "FUNCTION SYMBOLAPL FUNCTIONAL SYMBOL QUADDECIMAL SEPARATOR KEY SYMBOLPRE" + + "VIOUS PAGENEXT PAGEPRINT SCREEN SYMBOLCLEAR SCREEN SYMBOLLEFT PARENTHESI" + + "S UPPER HOOKLEFT PARENTHESIS EXTENSIONLEFT PARENTHESIS LOWER HOOKRIGHT P" + + "ARENTHESIS UPPER HOOKRIGHT PARENTHESIS EXTENSIONRIGHT PARENTHESIS LOWER " + + "HOOKLEFT SQUARE BRACKET UPPER CORNERLEFT SQUARE BRACKET EXTENSIONLEFT SQ" + + "UARE BRACKET LOWER CORNERRIGHT SQUARE BRACKET UPPER CORNERRIGHT SQUARE B" + + "RACKET EXTENSIONRIGHT SQUARE BRACKET LOWER CORNERLEFT CURLY BRACKET UPPE" + + "R HOOKLEFT CURLY BRACKET MIDDLE PIECELEFT CURLY BRACKET LOWER HOOKCURLY " + + "BRACKET EXTENSIONRIGHT CURLY BRACKET UPPER HOOKRIGHT CURLY BRACKET MIDDL" + + "E PIECERIGHT CURLY BRACKET LOWER HOOKINTEGRAL EXTENSIONHORIZONTAL LINE E" + + "XTENSIONUPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTIONUPPER RIGHT OR LO" + + "WER LEFT CURLY BRACKET SECTIONSUMMATION TOPSUMMATION BOTTOMTOP SQUARE BR" + + "ACKETBOTTOM SQUARE BRACKETBOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKETR" + + "ADICAL SYMBOL BOTTOMLEFT VERTICAL BOX LINERIGHT VERTICAL BOX LINEHORIZON" + + "TAL SCAN LINE-1HORIZONTAL SCAN LINE-3HORIZONTAL SCAN LINE-7HORIZONTAL SC" + + "AN LINE-9DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHTDENTISTRY SYMBOL L" + + "IGHT VERTICAL AND BOTTOM RIGHTDENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCL" + + "EDENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLEDENTISTRY SYMBOL " + + "LIGHT UP AND HORIZONTAL WITH CIRCLEDENTISTRY SYMBOL LIGHT VERTICAL WITH " + + "TRIANGLEDENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLEDENTISTR" + + "Y SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLEDENTISTRY SYMBOL LIGHT VER" + + "TICAL AND WAVEDENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVEDENTIS" + + "TRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVEDENTISTRY SYMBOL LIGHT DOWN " + + "AND HORIZONTALDENTISTRY SYMBOL LIGHT UP AND HORIZONTALDENTISTRY SYMBOL L" + + "IGHT VERTICAL AND TOP LEFTDENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEF" + + "TSQUARE FOOTRETURN SYMBOLEJECT SYMBOLVERTICAL LINE EXTENSIONMETRICAL BRE" + + "VEMETRICAL LONG OVER SHORTMETRICAL SHORT OVER LONGMETRICAL LONG OVER TWO" + + " SHORTSMETRICAL TWO SHORTS OVER LONGMETRICAL TWO SHORTS JOINEDMETRICAL T" + + "RISEMEMETRICAL TETRASEMEMETRICAL PENTASEMEEARTH GROUNDFUSETOP PARENTHESI" + + "SBOTTOM PARENTHESISTOP CURLY BRACKETBOTTOM CURLY BRACKETTOP TORTOISE SHE" + + "LL BRACKETBOTTOM TORTOISE SHELL BRACKETWHITE TRAPEZIUMBENZENE RING WITH " + + "CIRCLESTRAIGHTNESSFLATNESSAC CURRENTELECTRICAL INTERSECTIONDECIMAL EXPON" + + "ENT SYMBOLBLACK RIGHT-POINTING DOUBLE TRIANGLEBLACK LEFT-POINTING DOUBLE" + + " TRIANGLEBLACK UP-POINTING DOUBLE TRIANGLEBLACK DOWN-POINTING DOUBLE TRI" + + "ANGLEBLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BARBLACK LEFT-PO") + ("" + + "INTING DOUBLE TRIANGLE WITH VERTICAL BARBLACK RIGHT-POINTING TRIANGLE WI" + + "TH DOUBLE VERTICAL BARALARM CLOCKSTOPWATCHTIMER CLOCKHOURGLASS WITH FLOW" + + "ING SANDBLACK MEDIUM LEFT-POINTING TRIANGLEBLACK MEDIUM RIGHT-POINTING T" + + "RIANGLEBLACK MEDIUM UP-POINTING TRIANGLEBLACK MEDIUM DOWN-POINTING TRIAN" + + "GLEDOUBLE VERTICAL BARBLACK SQUARE FOR STOPBLACK CIRCLE FOR RECORDPOWER " + + "SYMBOLPOWER ON-OFF SYMBOLPOWER ON SYMBOLPOWER SLEEP SYMBOLSYMBOL FOR NUL" + + "LSYMBOL FOR START OF HEADINGSYMBOL FOR START OF TEXTSYMBOL FOR END OF TE" + + "XTSYMBOL FOR END OF TRANSMISSIONSYMBOL FOR ENQUIRYSYMBOL FOR ACKNOWLEDGE" + + "SYMBOL FOR BELLSYMBOL FOR BACKSPACESYMBOL FOR HORIZONTAL TABULATIONSYMBO" + + "L FOR LINE FEEDSYMBOL FOR VERTICAL TABULATIONSYMBOL FOR FORM FEEDSYMBOL " + + "FOR CARRIAGE RETURNSYMBOL FOR SHIFT OUTSYMBOL FOR SHIFT INSYMBOL FOR DAT" + + "A LINK ESCAPESYMBOL FOR DEVICE CONTROL ONESYMBOL FOR DEVICE CONTROL TWOS" + + "YMBOL FOR DEVICE CONTROL THREESYMBOL FOR DEVICE CONTROL FOURSYMBOL FOR N" + + "EGATIVE ACKNOWLEDGESYMBOL FOR SYNCHRONOUS IDLESYMBOL FOR END OF TRANSMIS" + + "SION BLOCKSYMBOL FOR CANCELSYMBOL FOR END OF MEDIUMSYMBOL FOR SUBSTITUTE" + + "SYMBOL FOR ESCAPESYMBOL FOR FILE SEPARATORSYMBOL FOR GROUP SEPARATORSYMB" + + "OL FOR RECORD SEPARATORSYMBOL FOR UNIT SEPARATORSYMBOL FOR SPACESYMBOL F" + + "OR DELETEBLANK SYMBOLOPEN BOXSYMBOL FOR NEWLINESYMBOL FOR DELETE FORM TW" + + "OSYMBOL FOR SUBSTITUTE FORM TWOOCR HOOKOCR CHAIROCR FORKOCR INVERTED FOR" + + "KOCR BELT BUCKLEOCR BOW TIEOCR BRANCH BANK IDENTIFICATIONOCR AMOUNT OF C" + + "HECKOCR DASHOCR CUSTOMER ACCOUNT NUMBEROCR DOUBLE BACKSLASHCIRCLED DIGIT" + + " ONECIRCLED DIGIT TWOCIRCLED DIGIT THREECIRCLED DIGIT FOURCIRCLED DIGIT " + + "FIVECIRCLED DIGIT SIXCIRCLED DIGIT SEVENCIRCLED DIGIT EIGHTCIRCLED DIGIT" + + " NINECIRCLED NUMBER TENCIRCLED NUMBER ELEVENCIRCLED NUMBER TWELVECIRCLED" + + " NUMBER THIRTEENCIRCLED NUMBER FOURTEENCIRCLED NUMBER FIFTEENCIRCLED NUM" + + "BER SIXTEENCIRCLED NUMBER SEVENTEENCIRCLED NUMBER EIGHTEENCIRCLED NUMBER" + + " NINETEENCIRCLED NUMBER TWENTYPARENTHESIZED DIGIT ONEPARENTHESIZED DIGIT" + + " TWOPARENTHESIZED DIGIT THREEPARENTHESIZED DIGIT FOURPARENTHESIZED DIGIT" + + " FIVEPARENTHESIZED DIGIT SIXPARENTHESIZED DIGIT SEVENPARENTHESIZED DIGIT" + + " EIGHTPARENTHESIZED DIGIT NINEPARENTHESIZED NUMBER TENPARENTHESIZED NUMB" + + "ER ELEVENPARENTHESIZED NUMBER TWELVEPARENTHESIZED NUMBER THIRTEENPARENTH" + + "ESIZED NUMBER FOURTEENPARENTHESIZED NUMBER FIFTEENPARENTHESIZED NUMBER S" + + "IXTEENPARENTHESIZED NUMBER SEVENTEENPARENTHESIZED NUMBER EIGHTEENPARENTH" + + "ESIZED NUMBER NINETEENPARENTHESIZED NUMBER TWENTYDIGIT ONE FULL STOPDIGI" + + "T TWO FULL STOPDIGIT THREE FULL STOPDIGIT FOUR FULL STOPDIGIT FIVE FULL " + + "STOPDIGIT SIX FULL STOPDIGIT SEVEN FULL STOPDIGIT EIGHT FULL STOPDIGIT N" + + "INE FULL STOPNUMBER TEN FULL STOPNUMBER ELEVEN FULL STOPNUMBER TWELVE FU" + + "LL STOPNUMBER THIRTEEN FULL STOPNUMBER FOURTEEN FULL STOPNUMBER FIFTEEN " + + "FULL STOPNUMBER SIXTEEN FULL STOPNUMBER SEVENTEEN FULL STOPNUMBER EIGHTE" + + "EN FULL STOPNUMBER NINETEEN FULL STOPNUMBER TWENTY FULL STOPPARENTHESIZE" + + "D LATIN SMALL LETTER APARENTHESIZED LATIN SMALL LETTER BPARENTHESIZED LA" + + "TIN SMALL LETTER CPARENTHESIZED LATIN SMALL LETTER DPARENTHESIZED LATIN " + + "SMALL LETTER EPARENTHESIZED LATIN SMALL LETTER FPARENTHESIZED LATIN SMAL" + + "L LETTER GPARENTHESIZED LATIN SMALL LETTER HPARENTHESIZED LATIN SMALL LE" + + "TTER IPARENTHESIZED LATIN SMALL LETTER JPARENTHESIZED LATIN SMALL LETTER" + + " KPARENTHESIZED LATIN SMALL LETTER LPARENTHESIZED LATIN SMALL LETTER MPA" + + "RENTHESIZED LATIN SMALL LETTER NPARENTHESIZED LATIN SMALL LETTER OPARENT" + + "HESIZED LATIN SMALL LETTER PPARENTHESIZED LATIN SMALL LETTER QPARENTHESI" + + "ZED LATIN SMALL LETTER RPARENTHESIZED LATIN SMALL LETTER SPARENTHESIZED " + + "LATIN SMALL LETTER TPARENTHESIZED LATIN SMALL LETTER UPARENTHESIZED LATI" + + "N SMALL LETTER VPARENTHESIZED LATIN SMALL LETTER WPARENTHESIZED LATIN SM" + + "ALL LETTER XPARENTHESIZED LATIN SMALL LETTER YPARENTHESIZED LATIN SMALL " + + "LETTER ZCIRCLED LATIN CAPITAL LETTER ACIRCLED LATIN CAPITAL LETTER BCIRC" + + "LED LATIN CAPITAL LETTER CCIRCLED LATIN CAPITAL LETTER DCIRCLED LATIN CA" + + "PITAL LETTER ECIRCLED LATIN CAPITAL LETTER FCIRCLED LATIN CAPITAL LETTER" + + " GCIRCLED LATIN CAPITAL LETTER HCIRCLED LATIN CAPITAL LETTER ICIRCLED LA" + + "TIN CAPITAL LETTER JCIRCLED LATIN CAPITAL LETTER KCIRCLED LATIN CAPITAL " + + "LETTER LCIRCLED LATIN CAPITAL LETTER MCIRCLED LATIN CAPITAL LETTER NCIRC" + + "LED LATIN CAPITAL LETTER OCIRCLED LATIN CAPITAL LETTER PCIRCLED LATIN CA" + + "PITAL LETTER QCIRCLED LATIN CAPITAL LETTER RCIRCLED LATIN CAPITAL LETTER" + + " SCIRCLED LATIN CAPITAL LETTER TCIRCLED LATIN CAPITAL LETTER UCIRCLED LA" + + "TIN CAPITAL LETTER VCIRCLED LATIN CAPITAL LETTER WCIRCLED LATIN CAPITAL " + + "LETTER XCIRCLED LATIN CAPITAL LETTER YCIRCLED LATIN CAPITAL LETTER ZCIRC" + + "LED LATIN SMALL LETTER ACIRCLED LATIN SMALL LETTER BCIRCLED LATIN SMALL ") + ("" + + "LETTER CCIRCLED LATIN SMALL LETTER DCIRCLED LATIN SMALL LETTER ECIRCLED " + + "LATIN SMALL LETTER FCIRCLED LATIN SMALL LETTER GCIRCLED LATIN SMALL LETT" + + "ER HCIRCLED LATIN SMALL LETTER ICIRCLED LATIN SMALL LETTER JCIRCLED LATI" + + "N SMALL LETTER KCIRCLED LATIN SMALL LETTER LCIRCLED LATIN SMALL LETTER M" + + "CIRCLED LATIN SMALL LETTER NCIRCLED LATIN SMALL LETTER OCIRCLED LATIN SM" + + "ALL LETTER PCIRCLED LATIN SMALL LETTER QCIRCLED LATIN SMALL LETTER RCIRC" + + "LED LATIN SMALL LETTER SCIRCLED LATIN SMALL LETTER TCIRCLED LATIN SMALL " + + "LETTER UCIRCLED LATIN SMALL LETTER VCIRCLED LATIN SMALL LETTER WCIRCLED " + + "LATIN SMALL LETTER XCIRCLED LATIN SMALL LETTER YCIRCLED LATIN SMALL LETT" + + "ER ZCIRCLED DIGIT ZERONEGATIVE CIRCLED NUMBER ELEVENNEGATIVE CIRCLED NUM" + + "BER TWELVENEGATIVE CIRCLED NUMBER THIRTEENNEGATIVE CIRCLED NUMBER FOURTE" + + "ENNEGATIVE CIRCLED NUMBER FIFTEENNEGATIVE CIRCLED NUMBER SIXTEENNEGATIVE" + + " CIRCLED NUMBER SEVENTEENNEGATIVE CIRCLED NUMBER EIGHTEENNEGATIVE CIRCLE" + + "D NUMBER NINETEENNEGATIVE CIRCLED NUMBER TWENTYDOUBLE CIRCLED DIGIT ONED" + + "OUBLE CIRCLED DIGIT TWODOUBLE CIRCLED DIGIT THREEDOUBLE CIRCLED DIGIT FO" + + "URDOUBLE CIRCLED DIGIT FIVEDOUBLE CIRCLED DIGIT SIXDOUBLE CIRCLED DIGIT " + + "SEVENDOUBLE CIRCLED DIGIT EIGHTDOUBLE CIRCLED DIGIT NINEDOUBLE CIRCLED N" + + "UMBER TENNEGATIVE CIRCLED DIGIT ZEROBOX DRAWINGS LIGHT HORIZONTALBOX DRA" + + "WINGS HEAVY HORIZONTALBOX DRAWINGS LIGHT VERTICALBOX DRAWINGS HEAVY VERT" + + "ICALBOX DRAWINGS LIGHT TRIPLE DASH HORIZONTALBOX DRAWINGS HEAVY TRIPLE D" + + "ASH HORIZONTALBOX DRAWINGS LIGHT TRIPLE DASH VERTICALBOX DRAWINGS HEAVY " + + "TRIPLE DASH VERTICALBOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTALBOX DRAW" + + "INGS HEAVY QUADRUPLE DASH HORIZONTALBOX DRAWINGS LIGHT QUADRUPLE DASH VE" + + "RTICALBOX DRAWINGS HEAVY QUADRUPLE DASH VERTICALBOX DRAWINGS LIGHT DOWN " + + "AND RIGHTBOX DRAWINGS DOWN LIGHT AND RIGHT HEAVYBOX DRAWINGS DOWN HEAVY " + + "AND RIGHT LIGHTBOX DRAWINGS HEAVY DOWN AND RIGHTBOX DRAWINGS LIGHT DOWN " + + "AND LEFTBOX DRAWINGS DOWN LIGHT AND LEFT HEAVYBOX DRAWINGS DOWN HEAVY AN" + + "D LEFT LIGHTBOX DRAWINGS HEAVY DOWN AND LEFTBOX DRAWINGS LIGHT UP AND RI" + + "GHTBOX DRAWINGS UP LIGHT AND RIGHT HEAVYBOX DRAWINGS UP HEAVY AND RIGHT " + + "LIGHTBOX DRAWINGS HEAVY UP AND RIGHTBOX DRAWINGS LIGHT UP AND LEFTBOX DR" + + "AWINGS UP LIGHT AND LEFT HEAVYBOX DRAWINGS UP HEAVY AND LEFT LIGHTBOX DR" + + "AWINGS HEAVY UP AND LEFTBOX DRAWINGS LIGHT VERTICAL AND RIGHTBOX DRAWING" + + "S VERTICAL LIGHT AND RIGHT HEAVYBOX DRAWINGS UP HEAVY AND RIGHT DOWN LIG" + + "HTBOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHTBOX DRAWINGS VERTICAL HEAVY " + + "AND RIGHT LIGHTBOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVYBOX DRAWINGS UP" + + " LIGHT AND RIGHT DOWN HEAVYBOX DRAWINGS HEAVY VERTICAL AND RIGHTBOX DRAW" + + "INGS LIGHT VERTICAL AND LEFTBOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVYBO" + + "X DRAWINGS UP HEAVY AND LEFT DOWN LIGHTBOX DRAWINGS DOWN HEAVY AND LEFT " + + "UP LIGHTBOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHTBOX DRAWINGS DOWN LIGH" + + "T AND LEFT UP HEAVYBOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVYBOX DRAWINGS" + + " HEAVY VERTICAL AND LEFTBOX DRAWINGS LIGHT DOWN AND HORIZONTALBOX DRAWIN" + + "GS LEFT HEAVY AND RIGHT DOWN LIGHTBOX DRAWINGS RIGHT HEAVY AND LEFT DOWN" + + " LIGHTBOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVYBOX DRAWINGS DOWN HEAV" + + "Y AND HORIZONTAL LIGHTBOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVYBOX DR" + + "AWINGS LEFT LIGHT AND RIGHT DOWN HEAVYBOX DRAWINGS HEAVY DOWN AND HORIZO" + + "NTALBOX DRAWINGS LIGHT UP AND HORIZONTALBOX DRAWINGS LEFT HEAVY AND RIGH" + + "T UP LIGHTBOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHTBOX DRAWINGS UP LIGH" + + "T AND HORIZONTAL HEAVYBOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHTBOX DRAW" + + "INGS RIGHT LIGHT AND LEFT UP HEAVYBOX DRAWINGS LEFT LIGHT AND RIGHT UP H" + + "EAVYBOX DRAWINGS HEAVY UP AND HORIZONTALBOX DRAWINGS LIGHT VERTICAL AND " + + "HORIZONTALBOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHTBOX DRAWINGS R" + + "IGHT HEAVY AND LEFT VERTICAL LIGHTBOX DRAWINGS VERTICAL LIGHT AND HORIZO" + + "NTAL HEAVYBOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHTBOX DRAWINGS DO" + + "WN HEAVY AND UP HORIZONTAL LIGHTBOX DRAWINGS VERTICAL HEAVY AND HORIZONT" + + "AL LIGHTBOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHTBOX DRAWINGS RIGH" + + "T UP HEAVY AND LEFT DOWN LIGHTBOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP " + + "LIGHTBOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHTBOX DRAWINGS DOWN LI" + + "GHT AND UP HORIZONTAL HEAVYBOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEA" + + "VYBOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVYBOX DRAWINGS LEFT LIGH" + + "T AND RIGHT VERTICAL HEAVYBOX DRAWINGS HEAVY VERTICAL AND HORIZONTALBOX " + + "DRAWINGS LIGHT DOUBLE DASH HORIZONTALBOX DRAWINGS HEAVY DOUBLE DASH HORI" + + "ZONTALBOX DRAWINGS LIGHT DOUBLE DASH VERTICALBOX DRAWINGS HEAVY DOUBLE D" + + "ASH VERTICALBOX DRAWINGS DOUBLE HORIZONTALBOX DRAWINGS DOUBLE VERTICALBO" + + "X DRAWINGS DOWN SINGLE AND RIGHT DOUBLEBOX DRAWINGS DOWN DOUBLE AND RIGH") + ("" + + "T SINGLEBOX DRAWINGS DOUBLE DOWN AND RIGHTBOX DRAWINGS DOWN SINGLE AND L" + + "EFT DOUBLEBOX DRAWINGS DOWN DOUBLE AND LEFT SINGLEBOX DRAWINGS DOUBLE DO" + + "WN AND LEFTBOX DRAWINGS UP SINGLE AND RIGHT DOUBLEBOX DRAWINGS UP DOUBLE" + + " AND RIGHT SINGLEBOX DRAWINGS DOUBLE UP AND RIGHTBOX DRAWINGS UP SINGLE " + + "AND LEFT DOUBLEBOX DRAWINGS UP DOUBLE AND LEFT SINGLEBOX DRAWINGS DOUBLE" + + " UP AND LEFTBOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLEBOX DRAWINGS VE" + + "RTICAL DOUBLE AND RIGHT SINGLEBOX DRAWINGS DOUBLE VERTICAL AND RIGHTBOX " + + "DRAWINGS VERTICAL SINGLE AND LEFT DOUBLEBOX DRAWINGS VERTICAL DOUBLE AND" + + " LEFT SINGLEBOX DRAWINGS DOUBLE VERTICAL AND LEFTBOX DRAWINGS DOWN SINGL" + + "E AND HORIZONTAL DOUBLEBOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLEBOX" + + " DRAWINGS DOUBLE DOWN AND HORIZONTALBOX DRAWINGS UP SINGLE AND HORIZONTA" + + "L DOUBLEBOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLEBOX DRAWINGS DOUBLE " + + "UP AND HORIZONTALBOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLEBOX D" + + "RAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLEBOX DRAWINGS DOUBLE VERTICA" + + "L AND HORIZONTALBOX DRAWINGS LIGHT ARC DOWN AND RIGHTBOX DRAWINGS LIGHT " + + "ARC DOWN AND LEFTBOX DRAWINGS LIGHT ARC UP AND LEFTBOX DRAWINGS LIGHT AR" + + "C UP AND RIGHTBOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFTBOX D" + + "RAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHTBOX DRAWINGS LIGHT DIAGO" + + "NAL CROSSBOX DRAWINGS LIGHT LEFTBOX DRAWINGS LIGHT UPBOX DRAWINGS LIGHT " + + "RIGHTBOX DRAWINGS LIGHT DOWNBOX DRAWINGS HEAVY LEFTBOX DRAWINGS HEAVY UP" + + "BOX DRAWINGS HEAVY RIGHTBOX DRAWINGS HEAVY DOWNBOX DRAWINGS LIGHT LEFT A" + + "ND HEAVY RIGHTBOX DRAWINGS LIGHT UP AND HEAVY DOWNBOX DRAWINGS HEAVY LEF" + + "T AND LIGHT RIGHTBOX DRAWINGS HEAVY UP AND LIGHT DOWNUPPER HALF BLOCKLOW" + + "ER ONE EIGHTH BLOCKLOWER ONE QUARTER BLOCKLOWER THREE EIGHTHS BLOCKLOWER" + + " HALF BLOCKLOWER FIVE EIGHTHS BLOCKLOWER THREE QUARTERS BLOCKLOWER SEVEN" + + " EIGHTHS BLOCKFULL BLOCKLEFT SEVEN EIGHTHS BLOCKLEFT THREE QUARTERS BLOC" + + "KLEFT FIVE EIGHTHS BLOCKLEFT HALF BLOCKLEFT THREE EIGHTHS BLOCKLEFT ONE " + + "QUARTER BLOCKLEFT ONE EIGHTH BLOCKRIGHT HALF BLOCKLIGHT SHADEMEDIUM SHAD" + + "EDARK SHADEUPPER ONE EIGHTH BLOCKRIGHT ONE EIGHTH BLOCKQUADRANT LOWER LE" + + "FTQUADRANT LOWER RIGHTQUADRANT UPPER LEFTQUADRANT UPPER LEFT AND LOWER L" + + "EFT AND LOWER RIGHTQUADRANT UPPER LEFT AND LOWER RIGHTQUADRANT UPPER LEF" + + "T AND UPPER RIGHT AND LOWER LEFTQUADRANT UPPER LEFT AND UPPER RIGHT AND " + + "LOWER RIGHTQUADRANT UPPER RIGHTQUADRANT UPPER RIGHT AND LOWER LEFTQUADRA" + + "NT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHTBLACK SQUAREWHITE SQUAREWHI" + + "TE SQUARE WITH ROUNDED CORNERSWHITE SQUARE CONTAINING BLACK SMALL SQUARE" + + "SQUARE WITH HORIZONTAL FILLSQUARE WITH VERTICAL FILLSQUARE WITH ORTHOGON" + + "AL CROSSHATCH FILLSQUARE WITH UPPER LEFT TO LOWER RIGHT FILLSQUARE WITH " + + "UPPER RIGHT TO LOWER LEFT FILLSQUARE WITH DIAGONAL CROSSHATCH FILLBLACK " + + "SMALL SQUAREWHITE SMALL SQUAREBLACK RECTANGLEWHITE RECTANGLEBLACK VERTIC" + + "AL RECTANGLEWHITE VERTICAL RECTANGLEBLACK PARALLELOGRAMWHITE PARALLELOGR" + + "AMBLACK UP-POINTING TRIANGLEWHITE UP-POINTING TRIANGLEBLACK UP-POINTING " + + "SMALL TRIANGLEWHITE UP-POINTING SMALL TRIANGLEBLACK RIGHT-POINTING TRIAN" + + "GLEWHITE RIGHT-POINTING TRIANGLEBLACK RIGHT-POINTING SMALL TRIANGLEWHITE" + + " RIGHT-POINTING SMALL TRIANGLEBLACK RIGHT-POINTING POINTERWHITE RIGHT-PO" + + "INTING POINTERBLACK DOWN-POINTING TRIANGLEWHITE DOWN-POINTING TRIANGLEBL" + + "ACK DOWN-POINTING SMALL TRIANGLEWHITE DOWN-POINTING SMALL TRIANGLEBLACK " + + "LEFT-POINTING TRIANGLEWHITE LEFT-POINTING TRIANGLEBLACK LEFT-POINTING SM" + + "ALL TRIANGLEWHITE LEFT-POINTING SMALL TRIANGLEBLACK LEFT-POINTING POINTE" + + "RWHITE LEFT-POINTING POINTERBLACK DIAMONDWHITE DIAMONDWHITE DIAMOND CONT" + + "AINING BLACK SMALL DIAMONDFISHEYELOZENGEWHITE CIRCLEDOTTED CIRCLECIRCLE " + + "WITH VERTICAL FILLBULLSEYEBLACK CIRCLECIRCLE WITH LEFT HALF BLACKCIRCLE " + + "WITH RIGHT HALF BLACKCIRCLE WITH LOWER HALF BLACKCIRCLE WITH UPPER HALF " + + "BLACKCIRCLE WITH UPPER RIGHT QUADRANT BLACKCIRCLE WITH ALL BUT UPPER LEF" + + "T QUADRANT BLACKLEFT HALF BLACK CIRCLERIGHT HALF BLACK CIRCLEINVERSE BUL" + + "LETINVERSE WHITE CIRCLEUPPER HALF INVERSE WHITE CIRCLELOWER HALF INVERSE" + + " WHITE CIRCLEUPPER LEFT QUADRANT CIRCULAR ARCUPPER RIGHT QUADRANT CIRCUL" + + "AR ARCLOWER RIGHT QUADRANT CIRCULAR ARCLOWER LEFT QUADRANT CIRCULAR ARCU" + + "PPER HALF CIRCLELOWER HALF CIRCLEBLACK LOWER RIGHT TRIANGLEBLACK LOWER L" + + "EFT TRIANGLEBLACK UPPER LEFT TRIANGLEBLACK UPPER RIGHT TRIANGLEWHITE BUL" + + "LETSQUARE WITH LEFT HALF BLACKSQUARE WITH RIGHT HALF BLACKSQUARE WITH UP" + + "PER LEFT DIAGONAL HALF BLACKSQUARE WITH LOWER RIGHT DIAGONAL HALF BLACKW" + + "HITE SQUARE WITH VERTICAL BISECTING LINEWHITE UP-POINTING TRIANGLE WITH " + + "DOTUP-POINTING TRIANGLE WITH LEFT HALF BLACKUP-POINTING TRIANGLE WITH RI" + + "GHT HALF BLACKLARGE CIRCLEWHITE SQUARE WITH UPPER LEFT QUADRANTWHITE SQU") + ("" + + "ARE WITH LOWER LEFT QUADRANTWHITE SQUARE WITH LOWER RIGHT QUADRANTWHITE " + + "SQUARE WITH UPPER RIGHT QUADRANTWHITE CIRCLE WITH UPPER LEFT QUADRANTWHI" + + "TE CIRCLE WITH LOWER LEFT QUADRANTWHITE CIRCLE WITH LOWER RIGHT QUADRANT" + + "WHITE CIRCLE WITH UPPER RIGHT QUADRANTUPPER LEFT TRIANGLEUPPER RIGHT TRI" + + "ANGLELOWER LEFT TRIANGLEWHITE MEDIUM SQUAREBLACK MEDIUM SQUAREWHITE MEDI" + + "UM SMALL SQUAREBLACK MEDIUM SMALL SQUARELOWER RIGHT TRIANGLEBLACK SUN WI" + + "TH RAYSCLOUDUMBRELLASNOWMANCOMETBLACK STARWHITE STARLIGHTNINGTHUNDERSTOR" + + "MSUNASCENDING NODEDESCENDING NODECONJUNCTIONOPPOSITIONBLACK TELEPHONEWHI" + + "TE TELEPHONEBALLOT BOXBALLOT BOX WITH CHECKBALLOT BOX WITH XSALTIREUMBRE" + + "LLA WITH RAIN DROPSHOT BEVERAGEWHITE SHOGI PIECEBLACK SHOGI PIECESHAMROC" + + "KREVERSED ROTATED FLORAL HEART BULLETBLACK LEFT POINTING INDEXBLACK RIGH" + + "T POINTING INDEXWHITE LEFT POINTING INDEXWHITE UP POINTING INDEXWHITE RI" + + "GHT POINTING INDEXWHITE DOWN POINTING INDEXSKULL AND CROSSBONESCAUTION S" + + "IGNRADIOACTIVE SIGNBIOHAZARD SIGNCADUCEUSANKHORTHODOX CROSSCHI RHOCROSS " + + "OF LORRAINECROSS OF JERUSALEMSTAR AND CRESCENTFARSI SYMBOLADI SHAKTIHAMM" + + "ER AND SICKLEPEACE SYMBOLYIN YANGTRIGRAM FOR HEAVENTRIGRAM FOR LAKETRIGR" + + "AM FOR FIRETRIGRAM FOR THUNDERTRIGRAM FOR WINDTRIGRAM FOR WATERTRIGRAM F" + + "OR MOUNTAINTRIGRAM FOR EARTHWHEEL OF DHARMAWHITE FROWNING FACEWHITE SMIL" + + "ING FACEBLACK SMILING FACEWHITE SUN WITH RAYSFIRST QUARTER MOONLAST QUAR" + + "TER MOONMERCURYFEMALE SIGNEARTHMALE SIGNJUPITERSATURNURANUSNEPTUNEPLUTOA" + + "RIESTAURUSGEMINICANCERLEOVIRGOLIBRASCORPIUSSAGITTARIUSCAPRICORNAQUARIUSP" + + "ISCESWHITE CHESS KINGWHITE CHESS QUEENWHITE CHESS ROOKWHITE CHESS BISHOP" + + "WHITE CHESS KNIGHTWHITE CHESS PAWNBLACK CHESS KINGBLACK CHESS QUEENBLACK" + + " CHESS ROOKBLACK CHESS BISHOPBLACK CHESS KNIGHTBLACK CHESS PAWNBLACK SPA" + + "DE SUITWHITE HEART SUITWHITE DIAMOND SUITBLACK CLUB SUITWHITE SPADE SUIT" + + "BLACK HEART SUITBLACK DIAMOND SUITWHITE CLUB SUITHOT SPRINGSQUARTER NOTE" + + "EIGHTH NOTEBEAMED EIGHTH NOTESBEAMED SIXTEENTH NOTESMUSIC FLAT SIGNMUSIC" + + " NATURAL SIGNMUSIC SHARP SIGNWEST SYRIAC CROSSEAST SYRIAC CROSSUNIVERSAL" + + " RECYCLING SYMBOLRECYCLING SYMBOL FOR TYPE-1 PLASTICSRECYCLING SYMBOL FO" + + "R TYPE-2 PLASTICSRECYCLING SYMBOL FOR TYPE-3 PLASTICSRECYCLING SYMBOL FO" + + "R TYPE-4 PLASTICSRECYCLING SYMBOL FOR TYPE-5 PLASTICSRECYCLING SYMBOL FO" + + "R TYPE-6 PLASTICSRECYCLING SYMBOL FOR TYPE-7 PLASTICSRECYCLING SYMBOL FO" + + "R GENERIC MATERIALSBLACK UNIVERSAL RECYCLING SYMBOLRECYCLED PAPER SYMBOL" + + "PARTIALLY-RECYCLED PAPER SYMBOLPERMANENT PAPER SIGNWHEELCHAIR SYMBOLDIE " + + "FACE-1DIE FACE-2DIE FACE-3DIE FACE-4DIE FACE-5DIE FACE-6WHITE CIRCLE WIT" + + "H DOT RIGHTWHITE CIRCLE WITH TWO DOTSBLACK CIRCLE WITH WHITE DOT RIGHTBL" + + "ACK CIRCLE WITH TWO WHITE DOTSMONOGRAM FOR YANGMONOGRAM FOR YINDIGRAM FO" + + "R GREATER YANGDIGRAM FOR LESSER YINDIGRAM FOR LESSER YANGDIGRAM FOR GREA" + + "TER YINWHITE FLAGBLACK FLAGHAMMER AND PICKANCHORCROSSED SWORDSSTAFF OF A" + + "ESCULAPIUSSCALESALEMBICFLOWERGEARSTAFF OF HERMESATOM SYMBOLFLEUR-DE-LISO" + + "UTLINED WHITE STARTHREE LINES CONVERGING RIGHTTHREE LINES CONVERGING LEF" + + "TWARNING SIGNHIGH VOLTAGE SIGNDOUBLED FEMALE SIGNDOUBLED MALE SIGNINTERL" + + "OCKED FEMALE AND MALE SIGNMALE AND FEMALE SIGNMALE WITH STROKE SIGNMALE " + + "WITH STROKE AND MALE AND FEMALE SIGNVERTICAL MALE WITH STROKE SIGNHORIZO" + + "NTAL MALE WITH STROKE SIGNMEDIUM WHITE CIRCLEMEDIUM BLACK CIRCLEMEDIUM S" + + "MALL WHITE CIRCLEMARRIAGE SYMBOLDIVORCE SYMBOLUNMARRIED PARTNERSHIP SYMB" + + "OLCOFFINFUNERAL URNNEUTERCERESPALLASJUNOVESTACHIRONBLACK MOON LILITHSEXT" + + "ILESEMISEXTILEQUINCUNXSESQUIQUADRATESOCCER BALLBASEBALLSQUARED KEYWHITE " + + "DRAUGHTS MANWHITE DRAUGHTS KINGBLACK DRAUGHTS MANBLACK DRAUGHTS KINGSNOW" + + "MAN WITHOUT SNOWSUN BEHIND CLOUDRAINBLACK SNOWMANTHUNDER CLOUD AND RAINT" + + "URNED WHITE SHOGI PIECETURNED BLACK SHOGI PIECEWHITE DIAMOND IN SQUARECR" + + "OSSING LANESDISABLED CAROPHIUCHUSPICKCAR SLIDINGHELMET WITH WHITE CROSSC" + + "IRCLED CROSSING LANESCHAINSNO ENTRYALTERNATE ONE-WAY LEFT WAY TRAFFICBLA" + + "CK TWO-WAY LEFT WAY TRAFFICWHITE TWO-WAY LEFT WAY TRAFFICBLACK LEFT LANE" + + " MERGEWHITE LEFT LANE MERGEDRIVE SLOW SIGNHEAVY WHITE DOWN-POINTING TRIA" + + "NGLELEFT CLOSED ENTRYSQUARED SALTIREFALLING DIAGONAL IN WHITE CIRCLE IN " + + "BLACK SQUAREBLACK TRUCKRESTRICTED LEFT ENTRY-1RESTRICTED LEFT ENTRY-2AST" + + "RONOMICAL SYMBOL FOR URANUSHEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVEPE" + + "NTAGRAMRIGHT-HANDED INTERLACED PENTAGRAMLEFT-HANDED INTERLACED PENTAGRAM" + + "INVERTED PENTAGRAMBLACK CROSS ON SHIELDSHINTO SHRINECHURCHCASTLEHISTORIC" + + " SITEGEAR WITHOUT HUBGEAR WITH HANDLESMAP SYMBOL FOR LIGHTHOUSEMOUNTAINU" + + "MBRELLA ON GROUNDFOUNTAINFLAG IN HOLEFERRYSAILBOATSQUARE FOUR CORNERSSKI" + + "ERICE SKATEPERSON WITH BALLTENTJAPANESE BANK SYMBOLHEADSTONE GRAVEYARD S" + + "YMBOLFUEL PUMPCUP ON BLACK SQUAREWHITE FLAG WITH HORIZONTAL MIDDLE BLACK") + ("" + + " STRIPEBLACK SAFETY SCISSORSUPPER BLADE SCISSORSBLACK SCISSORSLOWER BLAD" + + "E SCISSORSWHITE SCISSORSWHITE HEAVY CHECK MARKTELEPHONE LOCATION SIGNTAP" + + "E DRIVEAIRPLANEENVELOPERAISED FISTRAISED HANDVICTORY HANDWRITING HANDLOW" + + "ER RIGHT PENCILPENCILUPPER RIGHT PENCILWHITE NIBBLACK NIBCHECK MARKHEAVY" + + " CHECK MARKMULTIPLICATION XHEAVY MULTIPLICATION XBALLOT XHEAVY BALLOT XO" + + "UTLINED GREEK CROSSHEAVY GREEK CROSSOPEN CENTRE CROSSHEAVY OPEN CENTRE C" + + "ROSSLATIN CROSSSHADOWED WHITE LATIN CROSSOUTLINED LATIN CROSSMALTESE CRO" + + "SSSTAR OF DAVIDFOUR TEARDROP-SPOKED ASTERISKFOUR BALLOON-SPOKED ASTERISK" + + "HEAVY FOUR BALLOON-SPOKED ASTERISKFOUR CLUB-SPOKED ASTERISKBLACK FOUR PO" + + "INTED STARWHITE FOUR POINTED STARSPARKLESSTRESS OUTLINED WHITE STARCIRCL" + + "ED WHITE STAROPEN CENTRE BLACK STARBLACK CENTRE WHITE STAROUTLINED BLACK" + + " STARHEAVY OUTLINED BLACK STARPINWHEEL STARSHADOWED WHITE STARHEAVY ASTE" + + "RISKOPEN CENTRE ASTERISKEIGHT SPOKED ASTERISKEIGHT POINTED BLACK STAREIG" + + "HT POINTED PINWHEEL STARSIX POINTED BLACK STAREIGHT POINTED RECTILINEAR " + + "BLACK STARHEAVY EIGHT POINTED RECTILINEAR BLACK STARTWELVE POINTED BLACK" + + " STARSIXTEEN POINTED ASTERISKTEARDROP-SPOKED ASTERISKOPEN CENTRE TEARDRO" + + "P-SPOKED ASTERISKHEAVY TEARDROP-SPOKED ASTERISKSIX PETALLED BLACK AND WH" + + "ITE FLORETTEBLACK FLORETTEWHITE FLORETTEEIGHT PETALLED OUTLINED BLACK FL" + + "ORETTECIRCLED OPEN CENTRE EIGHT POINTED STARHEAVY TEARDROP-SPOKED PINWHE" + + "EL ASTERISKSNOWFLAKETIGHT TRIFOLIATE SNOWFLAKEHEAVY CHEVRON SNOWFLAKESPA" + + "RKLEHEAVY SPARKLEBALLOON-SPOKED ASTERISKEIGHT TEARDROP-SPOKED PROPELLER " + + "ASTERISKHEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISKCROSS MARKSHADOWED" + + " WHITE CIRCLENEGATIVE SQUARED CROSS MARKLOWER RIGHT DROP-SHADOWED WHITE " + + "SQUAREUPPER RIGHT DROP-SHADOWED WHITE SQUARELOWER RIGHT SHADOWED WHITE S" + + "QUAREUPPER RIGHT SHADOWED WHITE SQUAREBLACK QUESTION MARK ORNAMENTWHITE " + + "QUESTION MARK ORNAMENTWHITE EXCLAMATION MARK ORNAMENTBLACK DIAMOND MINUS" + + " WHITE XHEAVY EXCLAMATION MARK SYMBOLLIGHT VERTICAL BARMEDIUM VERTICAL B" + + "ARHEAVY VERTICAL BARHEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENTHEA" + + "VY SINGLE COMMA QUOTATION MARK ORNAMENTHEAVY DOUBLE TURNED COMMA QUOTATI" + + "ON MARK ORNAMENTHEAVY DOUBLE COMMA QUOTATION MARK ORNAMENTHEAVY LOW SING" + + "LE COMMA QUOTATION MARK ORNAMENTHEAVY LOW DOUBLE COMMA QUOTATION MARK OR" + + "NAMENTCURVED STEM PARAGRAPH SIGN ORNAMENTHEAVY EXCLAMATION MARK ORNAMENT" + + "HEAVY HEART EXCLAMATION MARK ORNAMENTHEAVY BLACK HEARTROTATED HEAVY BLAC" + + "K HEART BULLETFLORAL HEARTROTATED FLORAL HEART BULLETMEDIUM LEFT PARENTH" + + "ESIS ORNAMENTMEDIUM RIGHT PARENTHESIS ORNAMENTMEDIUM FLATTENED LEFT PARE" + + "NTHESIS ORNAMENTMEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENTMEDIUM LEFT-P" + + "OINTING ANGLE BRACKET ORNAMENTMEDIUM RIGHT-POINTING ANGLE BRACKET ORNAME" + + "NTHEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENTHEAVY RIGHT-POINTING " + + "ANGLE QUOTATION MARK ORNAMENTHEAVY LEFT-POINTING ANGLE BRACKET ORNAMENTH" + + "EAVY RIGHT-POINTING ANGLE BRACKET ORNAMENTLIGHT LEFT TORTOISE SHELL BRAC" + + "KET ORNAMENTLIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENTMEDIUM LEFT CURLY" + + " BRACKET ORNAMENTMEDIUM RIGHT CURLY BRACKET ORNAMENTDINGBAT NEGATIVE CIR" + + "CLED DIGIT ONEDINGBAT NEGATIVE CIRCLED DIGIT TWODINGBAT NEGATIVE CIRCLED" + + " DIGIT THREEDINGBAT NEGATIVE CIRCLED DIGIT FOURDINGBAT NEGATIVE CIRCLED " + + "DIGIT FIVEDINGBAT NEGATIVE CIRCLED DIGIT SIXDINGBAT NEGATIVE CIRCLED DIG" + + "IT SEVENDINGBAT NEGATIVE CIRCLED DIGIT EIGHTDINGBAT NEGATIVE CIRCLED DIG" + + "IT NINEDINGBAT NEGATIVE CIRCLED NUMBER TENDINGBAT CIRCLED SANS-SERIF DIG" + + "IT ONEDINGBAT CIRCLED SANS-SERIF DIGIT TWODINGBAT CIRCLED SANS-SERIF DIG" + + "IT THREEDINGBAT CIRCLED SANS-SERIF DIGIT FOURDINGBAT CIRCLED SANS-SERIF " + + "DIGIT FIVEDINGBAT CIRCLED SANS-SERIF DIGIT SIXDINGBAT CIRCLED SANS-SERIF" + + " DIGIT SEVENDINGBAT CIRCLED SANS-SERIF DIGIT EIGHTDINGBAT CIRCLED SANS-S" + + "ERIF DIGIT NINEDINGBAT CIRCLED SANS-SERIF NUMBER TENDINGBAT NEGATIVE CIR" + + "CLED SANS-SERIF DIGIT ONEDINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWODI" + + "NGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREEDINGBAT NEGATIVE CIRCLED SA" + + "NS-SERIF DIGIT FOURDINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVEDINGBAT" + + " NEGATIVE CIRCLED SANS-SERIF DIGIT SIXDINGBAT NEGATIVE CIRCLED SANS-SERI" + + "F DIGIT SEVENDINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHTDINGBAT NEGA" + + "TIVE CIRCLED SANS-SERIF DIGIT NINEDINGBAT NEGATIVE CIRCLED SANS-SERIF NU" + + "MBER TENHEAVY WIDE-HEADED RIGHTWARDS ARROWHEAVY PLUS SIGNHEAVY MINUS SIG" + + "NHEAVY DIVISION SIGNHEAVY SOUTH EAST ARROWHEAVY RIGHTWARDS ARROWHEAVY NO" + + "RTH EAST ARROWDRAFTING POINT RIGHTWARDS ARROWHEAVY ROUND-TIPPED RIGHTWAR" + + "DS ARROWTRIANGLE-HEADED RIGHTWARDS ARROWHEAVY TRIANGLE-HEADED RIGHTWARDS" + + " ARROWDASHED TRIANGLE-HEADED RIGHTWARDS ARROWHEAVY DASHED TRIANGLE-HEADE" + + "D RIGHTWARDS ARROWBLACK RIGHTWARDS ARROWTHREE-D TOP-LIGHTED RIGHTWARDS A") + ("" + + "RROWHEADTHREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEADBLACK RIGHTWARDS ARRO" + + "WHEADHEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROWHEAVY BLACK CURVED" + + " UPWARDS AND RIGHTWARDS ARROWSQUAT BLACK RIGHTWARDS ARROWHEAVY CONCAVE-P" + + "OINTED BLACK RIGHTWARDS ARROWRIGHT-SHADED WHITE RIGHTWARDS ARROWLEFT-SHA" + + "DED WHITE RIGHTWARDS ARROWBACK-TILTED SHADOWED WHITE RIGHTWARDS ARROWFRO" + + "NT-TILTED SHADOWED WHITE RIGHTWARDS ARROWHEAVY LOWER RIGHT-SHADOWED WHIT" + + "E RIGHTWARDS ARROWHEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROWNOTCH" + + "ED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROWCURLY LOOPNOTCHED UPPER RI" + + "GHT-SHADOWED WHITE RIGHTWARDS ARROWCIRCLED HEAVY WHITE RIGHTWARDS ARROWW" + + "HITE-FEATHERED RIGHTWARDS ARROWBLACK-FEATHERED SOUTH EAST ARROWBLACK-FEA" + + "THERED RIGHTWARDS ARROWBLACK-FEATHERED NORTH EAST ARROWHEAVY BLACK-FEATH" + + "ERED SOUTH EAST ARROWHEAVY BLACK-FEATHERED RIGHTWARDS ARROWHEAVY BLACK-F" + + "EATHERED NORTH EAST ARROWTEARDROP-BARBED RIGHTWARDS ARROWHEAVY TEARDROP-" + + "SHANKED RIGHTWARDS ARROWWEDGE-TAILED RIGHTWARDS ARROWHEAVY WEDGE-TAILED " + + "RIGHTWARDS ARROWOPEN-OUTLINED RIGHTWARDS ARROWDOUBLE CURLY LOOPTHREE DIM" + + "ENSIONAL ANGLEWHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLEPERPENDICULA" + + "ROPEN SUBSETOPEN SUPERSETLEFT S-SHAPED BAG DELIMITERRIGHT S-SHAPED BAG D" + + "ELIMITEROR WITH DOT INSIDEREVERSE SOLIDUS PRECEDING SUBSETSUPERSET PRECE" + + "DING SOLIDUSVERTICAL BAR WITH HORIZONTAL STROKEMATHEMATICAL RISING DIAGO" + + "NALLONG DIVISIONMATHEMATICAL FALLING DIAGONALSQUARED LOGICAL ANDSQUARED " + + "LOGICAL ORWHITE DIAMOND WITH CENTRED DOTAND WITH DOTELEMENT OF OPENING U" + + "PWARDSLOWER RIGHT CORNER WITH DOTUPPER LEFT CORNER WITH DOTLEFT OUTER JO" + + "INRIGHT OUTER JOINFULL OUTER JOINLARGE UP TACKLARGE DOWN TACKLEFT AND RI" + + "GHT DOUBLE TURNSTILELEFT AND RIGHT TACKLEFT MULTIMAPLONG RIGHT TACKLONG " + + "LEFT TACKUP TACK WITH CIRCLE ABOVELOZENGE DIVIDED BY HORIZONTAL RULEWHIT" + + "E CONCAVE-SIDED DIAMONDWHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICKWH" + + "ITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICKWHITE SQUARE WITH LEFTWARD" + + "S TICKWHITE SQUARE WITH RIGHTWARDS TICKMATHEMATICAL LEFT WHITE SQUARE BR" + + "ACKETMATHEMATICAL RIGHT WHITE SQUARE BRACKETMATHEMATICAL LEFT ANGLE BRAC" + + "KETMATHEMATICAL RIGHT ANGLE BRACKETMATHEMATICAL LEFT DOUBLE ANGLE BRACKE" + + "TMATHEMATICAL RIGHT DOUBLE ANGLE BRACKETMATHEMATICAL LEFT WHITE TORTOISE" + + " SHELL BRACKETMATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKETMATHEMATICA" + + "L LEFT FLATTENED PARENTHESISMATHEMATICAL RIGHT FLATTENED PARENTHESISUPWA" + + "RDS QUADRUPLE ARROWDOWNWARDS QUADRUPLE ARROWANTICLOCKWISE GAPPED CIRCLE " + + "ARROWCLOCKWISE GAPPED CIRCLE ARROWRIGHT ARROW WITH CIRCLED PLUSLONG LEFT" + + "WARDS ARROWLONG RIGHTWARDS ARROWLONG LEFT RIGHT ARROWLONG LEFTWARDS DOUB" + + "LE ARROWLONG RIGHTWARDS DOUBLE ARROWLONG LEFT RIGHT DOUBLE ARROWLONG LEF" + + "TWARDS ARROW FROM BARLONG RIGHTWARDS ARROW FROM BARLONG LEFTWARDS DOUBLE" + + " ARROW FROM BARLONG RIGHTWARDS DOUBLE ARROW FROM BARLONG RIGHTWARDS SQUI" + + "GGLE ARROWBRAILLE PATTERN BLANKBRAILLE PATTERN DOTS-1BRAILLE PATTERN DOT" + + "S-2BRAILLE PATTERN DOTS-12BRAILLE PATTERN DOTS-3BRAILLE PATTERN DOTS-13B" + + "RAILLE PATTERN DOTS-23BRAILLE PATTERN DOTS-123BRAILLE PATTERN DOTS-4BRAI" + + "LLE PATTERN DOTS-14BRAILLE PATTERN DOTS-24BRAILLE PATTERN DOTS-124BRAILL" + + "E PATTERN DOTS-34BRAILLE PATTERN DOTS-134BRAILLE PATTERN DOTS-234BRAILLE" + + " PATTERN DOTS-1234BRAILLE PATTERN DOTS-5BRAILLE PATTERN DOTS-15BRAILLE P" + + "ATTERN DOTS-25BRAILLE PATTERN DOTS-125BRAILLE PATTERN DOTS-35BRAILLE PAT" + + "TERN DOTS-135BRAILLE PATTERN DOTS-235BRAILLE PATTERN DOTS-1235BRAILLE PA" + + "TTERN DOTS-45BRAILLE PATTERN DOTS-145BRAILLE PATTERN DOTS-245BRAILLE PAT" + + "TERN DOTS-1245BRAILLE PATTERN DOTS-345BRAILLE PATTERN DOTS-1345BRAILLE P" + + "ATTERN DOTS-2345BRAILLE PATTERN DOTS-12345BRAILLE PATTERN DOTS-6BRAILLE " + + "PATTERN DOTS-16BRAILLE PATTERN DOTS-26BRAILLE PATTERN DOTS-126BRAILLE PA" + + "TTERN DOTS-36BRAILLE PATTERN DOTS-136BRAILLE PATTERN DOTS-236BRAILLE PAT" + + "TERN DOTS-1236BRAILLE PATTERN DOTS-46BRAILLE PATTERN DOTS-146BRAILLE PAT" + + "TERN DOTS-246BRAILLE PATTERN DOTS-1246BRAILLE PATTERN DOTS-346BRAILLE PA" + + "TTERN DOTS-1346BRAILLE PATTERN DOTS-2346BRAILLE PATTERN DOTS-12346BRAILL" + + "E PATTERN DOTS-56BRAILLE PATTERN DOTS-156BRAILLE PATTERN DOTS-256BRAILLE" + + " PATTERN DOTS-1256BRAILLE PATTERN DOTS-356BRAILLE PATTERN DOTS-1356BRAIL" + + "LE PATTERN DOTS-2356BRAILLE PATTERN DOTS-12356BRAILLE PATTERN DOTS-456BR" + + "AILLE PATTERN DOTS-1456BRAILLE PATTERN DOTS-2456BRAILLE PATTERN DOTS-124" + + "56BRAILLE PATTERN DOTS-3456BRAILLE PATTERN DOTS-13456BRAILLE PATTERN DOT" + + "S-23456BRAILLE PATTERN DOTS-123456BRAILLE PATTERN DOTS-7BRAILLE PATTERN " + + "DOTS-17BRAILLE PATTERN DOTS-27BRAILLE PATTERN DOTS-127BRAILLE PATTERN DO" + + "TS-37BRAILLE PATTERN DOTS-137BRAILLE PATTERN DOTS-237BRAILLE PATTERN DOT" + + "S-1237BRAILLE PATTERN DOTS-47BRAILLE PATTERN DOTS-147BRAILLE PATTERN DOT") + ("" + + "S-247BRAILLE PATTERN DOTS-1247BRAILLE PATTERN DOTS-347BRAILLE PATTERN DO" + + "TS-1347BRAILLE PATTERN DOTS-2347BRAILLE PATTERN DOTS-12347BRAILLE PATTER" + + "N DOTS-57BRAILLE PATTERN DOTS-157BRAILLE PATTERN DOTS-257BRAILLE PATTERN" + + " DOTS-1257BRAILLE PATTERN DOTS-357BRAILLE PATTERN DOTS-1357BRAILLE PATTE" + + "RN DOTS-2357BRAILLE PATTERN DOTS-12357BRAILLE PATTERN DOTS-457BRAILLE PA" + + "TTERN DOTS-1457BRAILLE PATTERN DOTS-2457BRAILLE PATTERN DOTS-12457BRAILL" + + "E PATTERN DOTS-3457BRAILLE PATTERN DOTS-13457BRAILLE PATTERN DOTS-23457B" + + "RAILLE PATTERN DOTS-123457BRAILLE PATTERN DOTS-67BRAILLE PATTERN DOTS-16" + + "7BRAILLE PATTERN DOTS-267BRAILLE PATTERN DOTS-1267BRAILLE PATTERN DOTS-3" + + "67BRAILLE PATTERN DOTS-1367BRAILLE PATTERN DOTS-2367BRAILLE PATTERN DOTS" + + "-12367BRAILLE PATTERN DOTS-467BRAILLE PATTERN DOTS-1467BRAILLE PATTERN D" + + "OTS-2467BRAILLE PATTERN DOTS-12467BRAILLE PATTERN DOTS-3467BRAILLE PATTE" + + "RN DOTS-13467BRAILLE PATTERN DOTS-23467BRAILLE PATTERN DOTS-123467BRAILL" + + "E PATTERN DOTS-567BRAILLE PATTERN DOTS-1567BRAILLE PATTERN DOTS-2567BRAI" + + "LLE PATTERN DOTS-12567BRAILLE PATTERN DOTS-3567BRAILLE PATTERN DOTS-1356" + + "7BRAILLE PATTERN DOTS-23567BRAILLE PATTERN DOTS-123567BRAILLE PATTERN DO" + + "TS-4567BRAILLE PATTERN DOTS-14567BRAILLE PATTERN DOTS-24567BRAILLE PATTE" + + "RN DOTS-124567BRAILLE PATTERN DOTS-34567BRAILLE PATTERN DOTS-134567BRAIL" + + "LE PATTERN DOTS-234567BRAILLE PATTERN DOTS-1234567BRAILLE PATTERN DOTS-8" + + "BRAILLE PATTERN DOTS-18BRAILLE PATTERN DOTS-28BRAILLE PATTERN DOTS-128BR" + + "AILLE PATTERN DOTS-38BRAILLE PATTERN DOTS-138BRAILLE PATTERN DOTS-238BRA" + + "ILLE PATTERN DOTS-1238BRAILLE PATTERN DOTS-48BRAILLE PATTERN DOTS-148BRA" + + "ILLE PATTERN DOTS-248BRAILLE PATTERN DOTS-1248BRAILLE PATTERN DOTS-348BR" + + "AILLE PATTERN DOTS-1348BRAILLE PATTERN DOTS-2348BRAILLE PATTERN DOTS-123" + + "48BRAILLE PATTERN DOTS-58BRAILLE PATTERN DOTS-158BRAILLE PATTERN DOTS-25" + + "8BRAILLE PATTERN DOTS-1258BRAILLE PATTERN DOTS-358BRAILLE PATTERN DOTS-1" + + "358BRAILLE PATTERN DOTS-2358BRAILLE PATTERN DOTS-12358BRAILLE PATTERN DO" + + "TS-458BRAILLE PATTERN DOTS-1458BRAILLE PATTERN DOTS-2458BRAILLE PATTERN " + + "DOTS-12458BRAILLE PATTERN DOTS-3458BRAILLE PATTERN DOTS-13458BRAILLE PAT" + + "TERN DOTS-23458BRAILLE PATTERN DOTS-123458BRAILLE PATTERN DOTS-68BRAILLE" + + " PATTERN DOTS-168BRAILLE PATTERN DOTS-268BRAILLE PATTERN DOTS-1268BRAILL" + + "E PATTERN DOTS-368BRAILLE PATTERN DOTS-1368BRAILLE PATTERN DOTS-2368BRAI" + + "LLE PATTERN DOTS-12368BRAILLE PATTERN DOTS-468BRAILLE PATTERN DOTS-1468B" + + "RAILLE PATTERN DOTS-2468BRAILLE PATTERN DOTS-12468BRAILLE PATTERN DOTS-3" + + "468BRAILLE PATTERN DOTS-13468BRAILLE PATTERN DOTS-23468BRAILLE PATTERN D" + + "OTS-123468BRAILLE PATTERN DOTS-568BRAILLE PATTERN DOTS-1568BRAILLE PATTE" + + "RN DOTS-2568BRAILLE PATTERN DOTS-12568BRAILLE PATTERN DOTS-3568BRAILLE P" + + "ATTERN DOTS-13568BRAILLE PATTERN DOTS-23568BRAILLE PATTERN DOTS-123568BR" + + "AILLE PATTERN DOTS-4568BRAILLE PATTERN DOTS-14568BRAILLE PATTERN DOTS-24" + + "568BRAILLE PATTERN DOTS-124568BRAILLE PATTERN DOTS-34568BRAILLE PATTERN " + + "DOTS-134568BRAILLE PATTERN DOTS-234568BRAILLE PATTERN DOTS-1234568BRAILL" + + "E PATTERN DOTS-78BRAILLE PATTERN DOTS-178BRAILLE PATTERN DOTS-278BRAILLE" + + " PATTERN DOTS-1278BRAILLE PATTERN DOTS-378BRAILLE PATTERN DOTS-1378BRAIL" + + "LE PATTERN DOTS-2378BRAILLE PATTERN DOTS-12378BRAILLE PATTERN DOTS-478BR" + + "AILLE PATTERN DOTS-1478BRAILLE PATTERN DOTS-2478BRAILLE PATTERN DOTS-124" + + "78BRAILLE PATTERN DOTS-3478BRAILLE PATTERN DOTS-13478BRAILLE PATTERN DOT" + + "S-23478BRAILLE PATTERN DOTS-123478BRAILLE PATTERN DOTS-578BRAILLE PATTER" + + "N DOTS-1578BRAILLE PATTERN DOTS-2578BRAILLE PATTERN DOTS-12578BRAILLE PA" + + "TTERN DOTS-3578BRAILLE PATTERN DOTS-13578BRAILLE PATTERN DOTS-23578BRAIL" + + "LE PATTERN DOTS-123578BRAILLE PATTERN DOTS-4578BRAILLE PATTERN DOTS-1457" + + "8BRAILLE PATTERN DOTS-24578BRAILLE PATTERN DOTS-124578BRAILLE PATTERN DO" + + "TS-34578BRAILLE PATTERN DOTS-134578BRAILLE PATTERN DOTS-234578BRAILLE PA" + + "TTERN DOTS-1234578BRAILLE PATTERN DOTS-678BRAILLE PATTERN DOTS-1678BRAIL" + + "LE PATTERN DOTS-2678BRAILLE PATTERN DOTS-12678BRAILLE PATTERN DOTS-3678B" + + "RAILLE PATTERN DOTS-13678BRAILLE PATTERN DOTS-23678BRAILLE PATTERN DOTS-" + + "123678BRAILLE PATTERN DOTS-4678BRAILLE PATTERN DOTS-14678BRAILLE PATTERN" + + " DOTS-24678BRAILLE PATTERN DOTS-124678BRAILLE PATTERN DOTS-34678BRAILLE " + + "PATTERN DOTS-134678BRAILLE PATTERN DOTS-234678BRAILLE PATTERN DOTS-12346" + + "78BRAILLE PATTERN DOTS-5678BRAILLE PATTERN DOTS-15678BRAILLE PATTERN DOT" + + "S-25678BRAILLE PATTERN DOTS-125678BRAILLE PATTERN DOTS-35678BRAILLE PATT" + + "ERN DOTS-135678BRAILLE PATTERN DOTS-235678BRAILLE PATTERN DOTS-1235678BR" + + "AILLE PATTERN DOTS-45678BRAILLE PATTERN DOTS-145678BRAILLE PATTERN DOTS-" + + "245678BRAILLE PATTERN DOTS-1245678BRAILLE PATTERN DOTS-345678BRAILLE PAT" + + "TERN DOTS-1345678BRAILLE PATTERN DOTS-2345678BRAILLE PATTERN DOTS-123456") + ("" + + "78RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKERIGHTWARDS TWO-HEADED " + + "ARROW WITH DOUBLE VERTICAL STROKELEFTWARDS DOUBLE ARROW WITH VERTICAL ST" + + "ROKERIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKELEFT RIGHT DOUBLE ARROW " + + "WITH VERTICAL STROKERIGHTWARDS TWO-HEADED ARROW FROM BARLEFTWARDS DOUBLE" + + " ARROW FROM BARRIGHTWARDS DOUBLE ARROW FROM BARDOWNWARDS ARROW WITH HORI" + + "ZONTAL STROKEUPWARDS ARROW WITH HORIZONTAL STROKEUPWARDS TRIPLE ARROWDOW" + + "NWARDS TRIPLE ARROWLEFTWARDS DOUBLE DASH ARROWRIGHTWARDS DOUBLE DASH ARR" + + "OWLEFTWARDS TRIPLE DASH ARROWRIGHTWARDS TRIPLE DASH ARROWRIGHTWARDS TWO-" + + "HEADED TRIPLE DASH ARROWRIGHTWARDS ARROW WITH DOTTED STEMUPWARDS ARROW T" + + "O BARDOWNWARDS ARROW TO BARRIGHTWARDS ARROW WITH TAIL WITH VERTICAL STRO" + + "KERIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKERIGHTWARDS TWO-H" + + "EADED ARROW WITH TAILRIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL" + + " STROKERIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE" + + "LEFTWARDS ARROW-TAILRIGHTWARDS ARROW-TAILLEFTWARDS DOUBLE ARROW-TAILRIGH" + + "TWARDS DOUBLE ARROW-TAILLEFTWARDS ARROW TO BLACK DIAMONDRIGHTWARDS ARROW" + + " TO BLACK DIAMONDLEFTWARDS ARROW FROM BAR TO BLACK DIAMONDRIGHTWARDS ARR" + + "OW FROM BAR TO BLACK DIAMONDNORTH WEST AND SOUTH EAST ARROWNORTH EAST AN" + + "D SOUTH WEST ARROWNORTH WEST ARROW WITH HOOKNORTH EAST ARROW WITH HOOKSO" + + "UTH EAST ARROW WITH HOOKSOUTH WEST ARROW WITH HOOKNORTH WEST ARROW AND N" + + "ORTH EAST ARROWNORTH EAST ARROW AND SOUTH EAST ARROWSOUTH EAST ARROW AND" + + " SOUTH WEST ARROWSOUTH WEST ARROW AND NORTH WEST ARROWRISING DIAGONAL CR" + + "OSSING FALLING DIAGONALFALLING DIAGONAL CROSSING RISING DIAGONALSOUTH EA" + + "ST ARROW CROSSING NORTH EAST ARROWNORTH EAST ARROW CROSSING SOUTH EAST A" + + "RROWFALLING DIAGONAL CROSSING NORTH EAST ARROWRISING DIAGONAL CROSSING S" + + "OUTH EAST ARROWNORTH EAST ARROW CROSSING NORTH WEST ARROWNORTH WEST ARRO" + + "W CROSSING NORTH EAST ARROWWAVE ARROW POINTING DIRECTLY RIGHTARROW POINT" + + "ING RIGHTWARDS THEN CURVING UPWARDSARROW POINTING RIGHTWARDS THEN CURVIN" + + "G DOWNWARDSARROW POINTING DOWNWARDS THEN CURVING LEFTWARDSARROW POINTING" + + " DOWNWARDS THEN CURVING RIGHTWARDSRIGHT-SIDE ARC CLOCKWISE ARROWLEFT-SID" + + "E ARC ANTICLOCKWISE ARROWTOP ARC ANTICLOCKWISE ARROWBOTTOM ARC ANTICLOCK" + + "WISE ARROWTOP ARC CLOCKWISE ARROW WITH MINUSTOP ARC ANTICLOCKWISE ARROW " + + "WITH PLUSLOWER RIGHT SEMICIRCULAR CLOCKWISE ARROWLOWER LEFT SEMICIRCULAR" + + " ANTICLOCKWISE ARROWANTICLOCKWISE CLOSED CIRCLE ARROWCLOCKWISE CLOSED CI" + + "RCLE ARROWRIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROWLEFTWARDS ARROW AB" + + "OVE SHORT RIGHTWARDS ARROWSHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROWRI" + + "GHTWARDS ARROW WITH PLUS BELOWLEFTWARDS ARROW WITH PLUS BELOWRIGHTWARDS " + + "ARROW THROUGH XLEFT RIGHT ARROW THROUGH SMALL CIRCLEUPWARDS TWO-HEADED A" + + "RROW FROM SMALL CIRCLELEFT BARB UP RIGHT BARB DOWN HARPOONLEFT BARB DOWN" + + " RIGHT BARB UP HARPOONUP BARB RIGHT DOWN BARB LEFT HARPOONUP BARB LEFT D" + + "OWN BARB RIGHT HARPOONLEFT BARB UP RIGHT BARB UP HARPOONUP BARB RIGHT DO" + + "WN BARB RIGHT HARPOONLEFT BARB DOWN RIGHT BARB DOWN HARPOONUP BARB LEFT " + + "DOWN BARB LEFT HARPOONLEFTWARDS HARPOON WITH BARB UP TO BARRIGHTWARDS HA" + + "RPOON WITH BARB UP TO BARUPWARDS HARPOON WITH BARB RIGHT TO BARDOWNWARDS" + + " HARPOON WITH BARB RIGHT TO BARLEFTWARDS HARPOON WITH BARB DOWN TO BARRI" + + "GHTWARDS HARPOON WITH BARB DOWN TO BARUPWARDS HARPOON WITH BARB LEFT TO " + + "BARDOWNWARDS HARPOON WITH BARB LEFT TO BARLEFTWARDS HARPOON WITH BARB UP" + + " FROM BARRIGHTWARDS HARPOON WITH BARB UP FROM BARUPWARDS HARPOON WITH BA" + + "RB RIGHT FROM BARDOWNWARDS HARPOON WITH BARB RIGHT FROM BARLEFTWARDS HAR" + + "POON WITH BARB DOWN FROM BARRIGHTWARDS HARPOON WITH BARB DOWN FROM BARUP" + + "WARDS HARPOON WITH BARB LEFT FROM BARDOWNWARDS HARPOON WITH BARB LEFT FR" + + "OM BARLEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB D" + + "OWNUPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT" + + "RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWND" + + "OWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT" + + "LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UPLEFT" + + "WARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWNRIGH" + + "TWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UPRIGHTWAR" + + "DS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWNLEFTWARD" + + "S HARPOON WITH BARB UP ABOVE LONG DASHLEFTWARDS HARPOON WITH BARB DOWN B" + + "ELOW LONG DASHRIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASHRIGHTWARDS " + + "HARPOON WITH BARB DOWN BELOW LONG DASHUPWARDS HARPOON WITH BARB LEFT BES" + + "IDE DOWNWARDS HARPOON WITH BARB RIGHTDOWNWARDS HARPOON WITH BARB LEFT BE" + + "SIDE UPWARDS HARPOON WITH BARB RIGHTRIGHT DOUBLE ARROW WITH ROUNDED HEAD" + + "EQUALS SIGN ABOVE RIGHTWARDS ARROWTILDE OPERATOR ABOVE RIGHTWARDS ARROWL") + ("" + + "EFTWARDS ARROW ABOVE TILDE OPERATORRIGHTWARDS ARROW ABOVE TILDE OPERATOR" + + "RIGHTWARDS ARROW ABOVE ALMOST EQUAL TOLESS-THAN ABOVE LEFTWARDS ARROWLEF" + + "TWARDS ARROW THROUGH LESS-THANGREATER-THAN ABOVE RIGHTWARDS ARROWSUBSET " + + "ABOVE RIGHTWARDS ARROWLEFTWARDS ARROW THROUGH SUBSETSUPERSET ABOVE LEFTW" + + "ARDS ARROWLEFT FISH TAILRIGHT FISH TAILUP FISH TAILDOWN FISH TAILTRIPLE " + + "VERTICAL BAR DELIMITERZ NOTATION SPOTZ NOTATION TYPE COLONLEFT WHITE CUR" + + "LY BRACKETRIGHT WHITE CURLY BRACKETLEFT WHITE PARENTHESISRIGHT WHITE PAR" + + "ENTHESISZ NOTATION LEFT IMAGE BRACKETZ NOTATION RIGHT IMAGE BRACKETZ NOT" + + "ATION LEFT BINDING BRACKETZ NOTATION RIGHT BINDING BRACKETLEFT SQUARE BR" + + "ACKET WITH UNDERBARRIGHT SQUARE BRACKET WITH UNDERBARLEFT SQUARE BRACKET" + + " WITH TICK IN TOP CORNERRIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNERL" + + "EFT SQUARE BRACKET WITH TICK IN BOTTOM CORNERRIGHT SQUARE BRACKET WITH T" + + "ICK IN TOP CORNERLEFT ANGLE BRACKET WITH DOTRIGHT ANGLE BRACKET WITH DOT" + + "LEFT ARC LESS-THAN BRACKETRIGHT ARC GREATER-THAN BRACKETDOUBLE LEFT ARC " + + "GREATER-THAN BRACKETDOUBLE RIGHT ARC LESS-THAN BRACKETLEFT BLACK TORTOIS" + + "E SHELL BRACKETRIGHT BLACK TORTOISE SHELL BRACKETDOTTED FENCEVERTICAL ZI" + + "GZAG LINEMEASURED ANGLE OPENING LEFTRIGHT ANGLE VARIANT WITH SQUAREMEASU" + + "RED RIGHT ANGLE WITH DOTANGLE WITH S INSIDEACUTE ANGLESPHERICAL ANGLE OP" + + "ENING LEFTSPHERICAL ANGLE OPENING UPTURNED ANGLEREVERSED ANGLEANGLE WITH" + + " UNDERBARREVERSED ANGLE WITH UNDERBAROBLIQUE ANGLE OPENING UPOBLIQUE ANG" + + "LE OPENING DOWNMEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP " + + "AND RIGHTMEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LE" + + "FTMEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHTME" + + "ASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFTMEASURE" + + "D ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UPMEASURED ANGL" + + "E WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UPMEASURED ANGLE WITH " + + "OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWNMEASURED ANGLE WITH OPEN" + + " ARM ENDING IN ARROW POINTING LEFT AND DOWNREVERSED EMPTY SETEMPTY SET W" + + "ITH OVERBAREMPTY SET WITH SMALL CIRCLE ABOVEEMPTY SET WITH RIGHT ARROW A" + + "BOVEEMPTY SET WITH LEFT ARROW ABOVECIRCLE WITH HORIZONTAL BARCIRCLED VER" + + "TICAL BARCIRCLED PARALLELCIRCLED REVERSE SOLIDUSCIRCLED PERPENDICULARCIR" + + "CLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BARCIRCLE" + + " WITH SUPERIMPOSED XCIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGNUP ARROW " + + "THROUGH CIRCLECIRCLED WHITE BULLETCIRCLED BULLETCIRCLED LESS-THANCIRCLED" + + " GREATER-THANCIRCLE WITH SMALL CIRCLE TO THE RIGHTCIRCLE WITH TWO HORIZO" + + "NTAL STROKES TO THE RIGHTSQUARED RISING DIAGONAL SLASHSQUARED FALLING DI" + + "AGONAL SLASHSQUARED ASTERISKSQUARED SMALL CIRCLESQUARED SQUARETWO JOINED" + + " SQUARESTRIANGLE WITH DOT ABOVETRIANGLE WITH UNDERBARS IN TRIANGLETRIANG" + + "LE WITH SERIFS AT BOTTOMRIGHT TRIANGLE ABOVE LEFT TRIANGLELEFT TRIANGLE " + + "BESIDE VERTICAL BARVERTICAL BAR BESIDE RIGHT TRIANGLEBOWTIE WITH LEFT HA" + + "LF BLACKBOWTIE WITH RIGHT HALF BLACKBLACK BOWTIETIMES WITH LEFT HALF BLA" + + "CKTIMES WITH RIGHT HALF BLACKWHITE HOURGLASSBLACK HOURGLASSLEFT WIGGLY F" + + "ENCERIGHT WIGGLY FENCELEFT DOUBLE WIGGLY FENCERIGHT DOUBLE WIGGLY FENCEI" + + "NCOMPLETE INFINITYTIE OVER INFINITYINFINITY NEGATED WITH VERTICAL BARDOU" + + "BLE-ENDED MULTIMAPSQUARE WITH CONTOURED OUTLINEINCREASES ASSHUFFLE PRODU" + + "CTEQUALS SIGN AND SLANTED PARALLELEQUALS SIGN AND SLANTED PARALLEL WITH " + + "TILDE ABOVEIDENTICAL TO AND SLANTED PARALLELGLEICH STARKTHERMODYNAMICDOW" + + "N-POINTING TRIANGLE WITH LEFT HALF BLACKDOWN-POINTING TRIANGLE WITH RIGH" + + "T HALF BLACKBLACK DIAMOND WITH DOWN ARROWBLACK LOZENGEWHITE CIRCLE WITH " + + "DOWN ARROWBLACK CIRCLE WITH DOWN ARROWERROR-BARRED WHITE SQUAREERROR-BAR" + + "RED BLACK SQUAREERROR-BARRED WHITE DIAMONDERROR-BARRED BLACK DIAMONDERRO" + + "R-BARRED WHITE CIRCLEERROR-BARRED BLACK CIRCLERULE-DELAYEDREVERSE SOLIDU" + + "S OPERATORSOLIDUS WITH OVERBARREVERSE SOLIDUS WITH HORIZONTAL STROKEBIG " + + "SOLIDUSBIG REVERSE SOLIDUSDOUBLE PLUSTRIPLE PLUSLEFT-POINTING CURVED ANG" + + "LE BRACKETRIGHT-POINTING CURVED ANGLE BRACKETTINYMINYN-ARY CIRCLED DOT O" + + "PERATORN-ARY CIRCLED PLUS OPERATORN-ARY CIRCLED TIMES OPERATORN-ARY UNIO" + + "N OPERATOR WITH DOTN-ARY UNION OPERATOR WITH PLUSN-ARY SQUARE INTERSECTI" + + "ON OPERATORN-ARY SQUARE UNION OPERATORTWO LOGICAL AND OPERATORTWO LOGICA" + + "L OR OPERATORN-ARY TIMES OPERATORMODULO TWO SUMSUMMATION WITH INTEGRALQU" + + "ADRUPLE INTEGRAL OPERATORFINITE PART INTEGRALINTEGRAL WITH DOUBLE STROKE" + + "INTEGRAL AVERAGE WITH SLASHCIRCULATION FUNCTIONANTICLOCKWISE INTEGRATION" + + "LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLELINE INTEGRATION WITH " + + "SEMICIRCULAR PATH AROUND POLELINE INTEGRATION NOT INCLUDING THE POLEINTE" + + "GRAL AROUND A POINT OPERATORQUATERNION INTEGRAL OPERATORINTEGRAL WITH LE") + ("" + + "FTWARDS ARROW WITH HOOKINTEGRAL WITH TIMES SIGNINTEGRAL WITH INTERSECTIO" + + "NINTEGRAL WITH UNIONINTEGRAL WITH OVERBARINTEGRAL WITH UNDERBARJOINLARGE" + + " LEFT TRIANGLE OPERATORZ NOTATION SCHEMA COMPOSITIONZ NOTATION SCHEMA PI" + + "PINGZ NOTATION SCHEMA PROJECTIONPLUS SIGN WITH SMALL CIRCLE ABOVEPLUS SI" + + "GN WITH CIRCUMFLEX ACCENT ABOVEPLUS SIGN WITH TILDE ABOVEPLUS SIGN WITH " + + "DOT BELOWPLUS SIGN WITH TILDE BELOWPLUS SIGN WITH SUBSCRIPT TWOPLUS SIGN" + + " WITH BLACK TRIANGLEMINUS SIGN WITH COMMA ABOVEMINUS SIGN WITH DOT BELOW" + + "MINUS SIGN WITH FALLING DOTSMINUS SIGN WITH RISING DOTSPLUS SIGN IN LEFT" + + " HALF CIRCLEPLUS SIGN IN RIGHT HALF CIRCLEVECTOR OR CROSS PRODUCTMULTIPL" + + "ICATION SIGN WITH DOT ABOVEMULTIPLICATION SIGN WITH UNDERBARSEMIDIRECT P" + + "RODUCT WITH BOTTOM CLOSEDSMASH PRODUCTMULTIPLICATION SIGN IN LEFT HALF C" + + "IRCLEMULTIPLICATION SIGN IN RIGHT HALF CIRCLECIRCLED MULTIPLICATION SIGN" + + " WITH CIRCUMFLEX ACCENTMULTIPLICATION SIGN IN DOUBLE CIRCLECIRCLED DIVIS" + + "ION SIGNPLUS SIGN IN TRIANGLEMINUS SIGN IN TRIANGLEMULTIPLICATION SIGN I" + + "N TRIANGLEINTERIOR PRODUCTRIGHTHAND INTERIOR PRODUCTZ NOTATION RELATIONA" + + "L COMPOSITIONAMALGAMATION OR COPRODUCTINTERSECTION WITH DOTUNION WITH MI" + + "NUS SIGNUNION WITH OVERBARINTERSECTION WITH OVERBARINTERSECTION WITH LOG" + + "ICAL ANDUNION WITH LOGICAL ORUNION ABOVE INTERSECTIONINTERSECTION ABOVE " + + "UNIONUNION ABOVE BAR ABOVE INTERSECTIONINTERSECTION ABOVE BAR ABOVE UNIO" + + "NUNION BESIDE AND JOINED WITH UNIONINTERSECTION BESIDE AND JOINED WITH I" + + "NTERSECTIONCLOSED UNION WITH SERIFSCLOSED INTERSECTION WITH SERIFSDOUBLE" + + " SQUARE INTERSECTIONDOUBLE SQUARE UNIONCLOSED UNION WITH SERIFS AND SMAS" + + "H PRODUCTLOGICAL AND WITH DOT ABOVELOGICAL OR WITH DOT ABOVEDOUBLE LOGIC" + + "AL ANDDOUBLE LOGICAL ORTWO INTERSECTING LOGICAL ANDTWO INTERSECTING LOGI" + + "CAL ORSLOPING LARGE ORSLOPING LARGE ANDLOGICAL OR OVERLAPPING LOGICAL AN" + + "DLOGICAL AND WITH MIDDLE STEMLOGICAL OR WITH MIDDLE STEMLOGICAL AND WITH" + + " HORIZONTAL DASHLOGICAL OR WITH HORIZONTAL DASHLOGICAL AND WITH DOUBLE O" + + "VERBARLOGICAL AND WITH UNDERBARLOGICAL AND WITH DOUBLE UNDERBARSMALL VEE" + + " WITH UNDERBARLOGICAL OR WITH DOUBLE OVERBARLOGICAL OR WITH DOUBLE UNDER" + + "BARZ NOTATION DOMAIN ANTIRESTRICTIONZ NOTATION RANGE ANTIRESTRICTIONEQUA" + + "LS SIGN WITH DOT BELOWIDENTICAL WITH DOT ABOVETRIPLE HORIZONTAL BAR WITH" + + " DOUBLE VERTICAL STROKETRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE" + + "TILDE OPERATOR WITH DOT ABOVETILDE OPERATOR WITH RISING DOTSSIMILAR MINU" + + "S SIMILARCONGRUENT WITH DOT ABOVEEQUALS WITH ASTERISKALMOST EQUAL TO WIT" + + "H CIRCUMFLEX ACCENTAPPROXIMATELY EQUAL OR EQUAL TOEQUALS SIGN ABOVE PLUS" + + " SIGNPLUS SIGN ABOVE EQUALS SIGNEQUALS SIGN ABOVE TILDE OPERATORDOUBLE C" + + "OLON EQUALTWO CONSECUTIVE EQUALS SIGNSTHREE CONSECUTIVE EQUALS SIGNSEQUA" + + "LS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOWEQUIVALENT WITH FOUR DOTS " + + "ABOVELESS-THAN WITH CIRCLE INSIDEGREATER-THAN WITH CIRCLE INSIDELESS-THA" + + "N WITH QUESTION MARK ABOVEGREATER-THAN WITH QUESTION MARK ABOVELESS-THAN" + + " OR SLANTED EQUAL TOGREATER-THAN OR SLANTED EQUAL TOLESS-THAN OR SLANTED" + + " EQUAL TO WITH DOT INSIDEGREATER-THAN OR SLANTED EQUAL TO WITH DOT INSID" + + "ELESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVEGREATER-THAN OR SLANTED EQU" + + "AL TO WITH DOT ABOVELESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHTGR" + + "EATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFTLESS-THAN OR APPROXIMA" + + "TEGREATER-THAN OR APPROXIMATELESS-THAN AND SINGLE-LINE NOT EQUAL TOGREAT" + + "ER-THAN AND SINGLE-LINE NOT EQUAL TOLESS-THAN AND NOT APPROXIMATEGREATER" + + "-THAN AND NOT APPROXIMATELESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER" + + "-THANGREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THANLESS-THAN ABOVE" + + " SIMILAR OR EQUALGREATER-THAN ABOVE SIMILAR OR EQUALLESS-THAN ABOVE SIMI" + + "LAR ABOVE GREATER-THANGREATER-THAN ABOVE SIMILAR ABOVE LESS-THANLESS-THA" + + "N ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUALGREATER-THAN ABOVE LESS-THAN" + + " ABOVE DOUBLE-LINE EQUALLESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN" + + " ABOVE SLANTED EQUALGREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABO" + + "VE SLANTED EQUALSLANTED EQUAL TO OR LESS-THANSLANTED EQUAL TO OR GREATER" + + "-THANSLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDESLANTED EQUAL TO OR GR" + + "EATER-THAN WITH DOT INSIDEDOUBLE-LINE EQUAL TO OR LESS-THANDOUBLE-LINE E" + + "QUAL TO OR GREATER-THANDOUBLE-LINE SLANTED EQUAL TO OR LESS-THANDOUBLE-L" + + "INE SLANTED EQUAL TO OR GREATER-THANSIMILAR OR LESS-THANSIMILAR OR GREAT" + + "ER-THANSIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGNSIMILAR ABOVE GREATER-TH" + + "AN ABOVE EQUALS SIGNDOUBLE NESTED LESS-THANDOUBLE NESTED GREATER-THANDOU" + + "BLE NESTED LESS-THAN WITH UNDERBARGREATER-THAN OVERLAPPING LESS-THANGREA" + + "TER-THAN BESIDE LESS-THANLESS-THAN CLOSED BY CURVEGREATER-THAN CLOSED BY" + + " CURVELESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUALGREATER-THAN CLOSED B") + ("" + + "Y CURVE ABOVE SLANTED EQUALSMALLER THANLARGER THANSMALLER THAN OR EQUAL " + + "TOLARGER THAN OR EQUAL TOEQUALS SIGN WITH BUMPY ABOVEPRECEDES ABOVE SING" + + "LE-LINE EQUALS SIGNSUCCEEDS ABOVE SINGLE-LINE EQUALS SIGNPRECEDES ABOVE " + + "SINGLE-LINE NOT EQUAL TOSUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TOPRECEDES " + + "ABOVE EQUALS SIGNSUCCEEDS ABOVE EQUALS SIGNPRECEDES ABOVE NOT EQUAL TOSU" + + "CCEEDS ABOVE NOT EQUAL TOPRECEDES ABOVE ALMOST EQUAL TOSUCCEEDS ABOVE AL" + + "MOST EQUAL TOPRECEDES ABOVE NOT ALMOST EQUAL TOSUCCEEDS ABOVE NOT ALMOST" + + " EQUAL TODOUBLE PRECEDESDOUBLE SUCCEEDSSUBSET WITH DOTSUPERSET WITH DOTS" + + "UBSET WITH PLUS SIGN BELOWSUPERSET WITH PLUS SIGN BELOWSUBSET WITH MULTI" + + "PLICATION SIGN BELOWSUPERSET WITH MULTIPLICATION SIGN BELOWSUBSET OF OR " + + "EQUAL TO WITH DOT ABOVESUPERSET OF OR EQUAL TO WITH DOT ABOVESUBSET OF A" + + "BOVE EQUALS SIGNSUPERSET OF ABOVE EQUALS SIGNSUBSET OF ABOVE TILDE OPERA" + + "TORSUPERSET OF ABOVE TILDE OPERATORSUBSET OF ABOVE ALMOST EQUAL TOSUPERS" + + "ET OF ABOVE ALMOST EQUAL TOSUBSET OF ABOVE NOT EQUAL TOSUPERSET OF ABOVE" + + " NOT EQUAL TOSQUARE LEFT OPEN BOX OPERATORSQUARE RIGHT OPEN BOX OPERATOR" + + "CLOSED SUBSETCLOSED SUPERSETCLOSED SUBSET OR EQUAL TOCLOSED SUPERSET OR " + + "EQUAL TOSUBSET ABOVE SUPERSETSUPERSET ABOVE SUBSETSUBSET ABOVE SUBSETSUP" + + "ERSET ABOVE SUPERSETSUPERSET BESIDE SUBSETSUPERSET BESIDE AND JOINED BY " + + "DASH WITH SUBSETELEMENT OF OPENING DOWNWARDSPITCHFORK WITH TEE TOPTRANSV" + + "ERSAL INTERSECTIONFORKINGNONFORKINGSHORT LEFT TACKSHORT DOWN TACKSHORT U" + + "P TACKPERPENDICULAR WITH SVERTICAL BAR TRIPLE RIGHT TURNSTILEDOUBLE VERT" + + "ICAL BAR LEFT TURNSTILEVERTICAL BAR DOUBLE LEFT TURNSTILEDOUBLE VERTICAL" + + " BAR DOUBLE LEFT TURNSTILELONG DASH FROM LEFT MEMBER OF DOUBLE VERTICALS" + + "HORT DOWN TACK WITH OVERBARSHORT UP TACK WITH UNDERBARSHORT UP TACK ABOV" + + "E SHORT DOWN TACKDOUBLE DOWN TACKDOUBLE UP TACKDOUBLE STROKE NOT SIGNREV" + + "ERSED DOUBLE STROKE NOT SIGNDOES NOT DIVIDE WITH REVERSED NEGATION SLASH" + + "VERTICAL LINE WITH CIRCLE ABOVEVERTICAL LINE WITH CIRCLE BELOWDOWN TACK " + + "WITH CIRCLE BELOWPARALLEL WITH HORIZONTAL STROKEPARALLEL WITH TILDE OPER" + + "ATORTRIPLE VERTICAL BAR BINARY RELATIONTRIPLE VERTICAL BAR WITH HORIZONT" + + "AL STROKETRIPLE COLON OPERATORTRIPLE NESTED LESS-THANTRIPLE NESTED GREAT" + + "ER-THANDOUBLE-LINE SLANTED LESS-THAN OR EQUAL TODOUBLE-LINE SLANTED GREA" + + "TER-THAN OR EQUAL TOTRIPLE SOLIDUS BINARY RELATIONLARGE TRIPLE VERTICAL " + + "BAR OPERATORDOUBLE SOLIDUS OPERATORWHITE VERTICAL BARN-ARY WHITE VERTICA" + + "L BARNORTH EAST WHITE ARROWNORTH WEST WHITE ARROWSOUTH EAST WHITE ARROWS" + + "OUTH WEST WHITE ARROWLEFT RIGHT WHITE ARROWLEFTWARDS BLACK ARROWUPWARDS " + + "BLACK ARROWDOWNWARDS BLACK ARROWNORTH EAST BLACK ARROWNORTH WEST BLACK A" + + "RROWSOUTH EAST BLACK ARROWSOUTH WEST BLACK ARROWLEFT RIGHT BLACK ARROWUP" + + " DOWN BLACK ARROWRIGHTWARDS ARROW WITH TIP DOWNWARDSRIGHTWARDS ARROW WIT" + + "H TIP UPWARDSLEFTWARDS ARROW WITH TIP DOWNWARDSLEFTWARDS ARROW WITH TIP " + + "UPWARDSSQUARE WITH TOP HALF BLACKSQUARE WITH BOTTOM HALF BLACKSQUARE WIT" + + "H UPPER RIGHT DIAGONAL HALF BLACKSQUARE WITH LOWER LEFT DIAGONAL HALF BL" + + "ACKDIAMOND WITH LEFT HALF BLACKDIAMOND WITH RIGHT HALF BLACKDIAMOND WITH" + + " TOP HALF BLACKDIAMOND WITH BOTTOM HALF BLACKDOTTED SQUAREBLACK LARGE SQ" + + "UAREWHITE LARGE SQUAREBLACK VERY SMALL SQUAREWHITE VERY SMALL SQUAREBLAC" + + "K PENTAGONWHITE PENTAGONWHITE HEXAGONBLACK HEXAGONHORIZONTAL BLACK HEXAG" + + "ONBLACK LARGE CIRCLEBLACK MEDIUM DIAMONDWHITE MEDIUM DIAMONDBLACK MEDIUM" + + " LOZENGEWHITE MEDIUM LOZENGEBLACK SMALL DIAMONDBLACK SMALL LOZENGEWHITE " + + "SMALL LOZENGEBLACK HORIZONTAL ELLIPSEWHITE HORIZONTAL ELLIPSEBLACK VERTI" + + "CAL ELLIPSEWHITE VERTICAL ELLIPSELEFT ARROW WITH SMALL CIRCLETHREE LEFTW" + + "ARDS ARROWSLEFT ARROW WITH CIRCLED PLUSLONG LEFTWARDS SQUIGGLE ARROWLEFT" + + "WARDS TWO-HEADED ARROW WITH VERTICAL STROKELEFTWARDS TWO-HEADED ARROW WI" + + "TH DOUBLE VERTICAL STROKELEFTWARDS TWO-HEADED ARROW FROM BARLEFTWARDS TW" + + "O-HEADED TRIPLE DASH ARROWLEFTWARDS ARROW WITH DOTTED STEMLEFTWARDS ARRO" + + "W WITH TAIL WITH VERTICAL STROKELEFTWARDS ARROW WITH TAIL WITH DOUBLE VE" + + "RTICAL STROKELEFTWARDS TWO-HEADED ARROW WITH TAILLEFTWARDS TWO-HEADED AR" + + "ROW WITH TAIL WITH VERTICAL STROKELEFTWARDS TWO-HEADED ARROW WITH TAIL W" + + "ITH DOUBLE VERTICAL STROKELEFTWARDS ARROW THROUGH XWAVE ARROW POINTING D" + + "IRECTLY LEFTEQUALS SIGN ABOVE LEFTWARDS ARROWREVERSE TILDE OPERATOR ABOV" + + "E LEFTWARDS ARROWLEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TORIGHTWARDS" + + " ARROW THROUGH GREATER-THANRIGHTWARDS ARROW THROUGH SUPERSETLEFTWARDS QU" + + "ADRUPLE ARROWRIGHTWARDS QUADRUPLE ARROWREVERSE TILDE OPERATOR ABOVE RIGH" + + "TWARDS ARROWRIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TOTILDE OPERATOR" + + " ABOVE LEFTWARDS ARROWLEFTWARDS ARROW ABOVE ALMOST EQUAL TOLEFTWARDS ARR" + + "OW ABOVE REVERSE TILDE OPERATORRIGHTWARDS ARROW ABOVE REVERSE TILDE OPER") + ("" + + "ATORDOWNWARDS TRIANGLE-HEADED ZIGZAG ARROWSHORT SLANTED NORTH ARROWSHORT" + + " BACKSLANTED SOUTH ARROWWHITE MEDIUM STARBLACK SMALL STARWHITE SMALL STA" + + "RBLACK RIGHT-POINTING PENTAGONWHITE RIGHT-POINTING PENTAGONHEAVY LARGE C" + + "IRCLEHEAVY OVAL WITH OVAL INSIDEHEAVY CIRCLE WITH CIRCLE INSIDEHEAVY CIR" + + "CLEHEAVY CIRCLED SALTIRESLANTED NORTH ARROW WITH HOOKED HEADBACKSLANTED " + + "SOUTH ARROW WITH HOOKED TAILSLANTED NORTH ARROW WITH HORIZONTAL TAILBACK" + + "SLANTED SOUTH ARROW WITH HORIZONTAL TAILBENT ARROW POINTING DOWNWARDS TH" + + "EN NORTH EASTSHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EASTLEFTWARD" + + "S TRIANGLE-HEADED ARROWUPWARDS TRIANGLE-HEADED ARROWRIGHTWARDS TRIANGLE-" + + "HEADED ARROWDOWNWARDS TRIANGLE-HEADED ARROWLEFT RIGHT TRIANGLE-HEADED AR" + + "ROWUP DOWN TRIANGLE-HEADED ARROWNORTH WEST TRIANGLE-HEADED ARROWNORTH EA" + + "ST TRIANGLE-HEADED ARROWSOUTH EAST TRIANGLE-HEADED ARROWSOUTH WEST TRIAN" + + "GLE-HEADED ARROWLEFTWARDS TRIANGLE-HEADED DASHED ARROWUPWARDS TRIANGLE-H" + + "EADED DASHED ARROWRIGHTWARDS TRIANGLE-HEADED DASHED ARROWDOWNWARDS TRIAN" + + "GLE-HEADED DASHED ARROWCLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROWANTICL" + + "OCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROWLEFTWARDS TRIANGLE-HEADED ARROW" + + " TO BARUPWARDS TRIANGLE-HEADED ARROW TO BARRIGHTWARDS TRIANGLE-HEADED AR" + + "ROW TO BARDOWNWARDS TRIANGLE-HEADED ARROW TO BARNORTH WEST TRIANGLE-HEAD" + + "ED ARROW TO BARNORTH EAST TRIANGLE-HEADED ARROW TO BARSOUTH EAST TRIANGL" + + "E-HEADED ARROW TO BARSOUTH WEST TRIANGLE-HEADED ARROW TO BARLEFTWARDS TR" + + "IANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKEUPWARDS TRIANGLE-HEADED" + + " ARROW WITH DOUBLE HORIZONTAL STROKERIGHTWARDS TRIANGLE-HEADED ARROW WIT" + + "H DOUBLE HORIZONTAL STROKEDOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HO" + + "RIZONTAL STROKEHORIZONTAL TAB KEYVERTICAL TAB KEYLEFTWARDS TRIANGLE-HEAD" + + "ED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROWUPWARDS TRIANGLE-HEADED AR" + + "ROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROWRIGHTWARDS TRIANGLE-HEAD" + + "ED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROWDOWNWARDS TRIANGLE-HEADED A" + + "RROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROWLEFTWARDS TRIANGLE-HEADED" + + " PAIRED ARROWSUPWARDS TRIANGLE-HEADED PAIRED ARROWSRIGHTWARDS TRIANGLE-H" + + "EADED PAIRED ARROWSDOWNWARDS TRIANGLE-HEADED PAIRED ARROWSLEFTWARDS BLAC" + + "K CIRCLED WHITE ARROWUPWARDS BLACK CIRCLED WHITE ARROWRIGHTWARDS BLACK C" + + "IRCLED WHITE ARROWDOWNWARDS BLACK CIRCLED WHITE ARROWANTICLOCKWISE TRIAN" + + "GLE-HEADED RIGHT U-SHAPED ARROWANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SH" + + "APED ARROWANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROWANTICLOCKWISE" + + " TRIANGLE-HEADED TOP U-SHAPED ARROWRETURN LEFTRETURN RIGHTNEWLINE LEFTNE" + + "WLINE RIGHTFOUR CORNER ARROWS CIRCLING ANTICLOCKWISERIGHTWARDS BLACK ARR" + + "OWTHREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEADTHREE-D RIGHT-LIGHT" + + "ED UPWARDS EQUILATERAL ARROWHEADTHREE-D TOP-LIGHTED RIGHTWARDS EQUILATER" + + "AL ARROWHEADTHREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEADBLACK LE" + + "FTWARDS EQUILATERAL ARROWHEADBLACK UPWARDS EQUILATERAL ARROWHEADBLACK RI" + + "GHTWARDS EQUILATERAL ARROWHEADBLACK DOWNWARDS EQUILATERAL ARROWHEADDOWNW" + + "ARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDSDOWNWARDS TRIANGLE-HEA" + + "DED ARROW WITH LONG TIP RIGHTWARDSUPWARDS TRIANGLE-HEADED ARROW WITH LON" + + "G TIP LEFTWARDSUPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDSLEF" + + "TWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDSRIGHTWARDS TRIANGLE-HE" + + "ADED ARROW WITH LONG TIP UPWARDSLEFTWARDS TRIANGLE-HEADED ARROW WITH LON" + + "G TIP DOWNWARDSRIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDSB" + + "LACK CURVED DOWNWARDS AND LEFTWARDS ARROWBLACK CURVED DOWNWARDS AND RIGH" + + "TWARDS ARROWBLACK CURVED UPWARDS AND LEFTWARDS ARROWBLACK CURVED UPWARDS" + + " AND RIGHTWARDS ARROWBLACK CURVED LEFTWARDS AND UPWARDS ARROWBLACK CURVE" + + "D RIGHTWARDS AND UPWARDS ARROWBLACK CURVED LEFTWARDS AND DOWNWARDS ARROW" + + "BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROWRIBBON ARROW DOWN LEFTRIBBON " + + "ARROW DOWN RIGHTRIBBON ARROW UP LEFTRIBBON ARROW UP RIGHTRIBBON ARROW LE" + + "FT UPRIBBON ARROW RIGHT UPRIBBON ARROW LEFT DOWNRIBBON ARROW RIGHT DOWNU" + + "PWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BARUP ARROWHEAD IN A RECTANG" + + "LE BOXBALLOT BOX WITH LIGHT XCIRCLED XCIRCLED BOLD XBLACK SQUARE CENTRED" + + "BLACK DIAMOND CENTREDTURNED BLACK PENTAGONHORIZONTAL BLACK OCTAGONBLACK " + + "OCTAGONBLACK MEDIUM UP-POINTING TRIANGLE CENTREDBLACK MEDIUM DOWN-POINTI" + + "NG TRIANGLE CENTREDBLACK MEDIUM LEFT-POINTING TRIANGLE CENTREDBLACK MEDI" + + "UM RIGHT-POINTING TRIANGLE CENTREDTOP HALF BLACK CIRCLEBOTTOM HALF BLACK" + + " CIRCLELIGHT FOUR POINTED BLACK CUSPROTATED LIGHT FOUR POINTED BLACK CUS" + + "PWHITE FOUR POINTED CUSPROTATED WHITE FOUR POINTED CUSPSQUARE POSITION I" + + "NDICATORUNCERTAINTY SIGNLEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHE" + + "ADSUPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADSRIGHTWARDS TWO-HEADE") + ("" + + "D ARROW WITH TRIANGLE ARROWHEADSDOWNWARDS TWO-HEADED ARROW WITH TRIANGLE" + + " ARROWHEADSGLAGOLITIC CAPITAL LETTER AZUGLAGOLITIC CAPITAL LETTER BUKYGL" + + "AGOLITIC CAPITAL LETTER VEDEGLAGOLITIC CAPITAL LETTER GLAGOLIGLAGOLITIC " + + "CAPITAL LETTER DOBROGLAGOLITIC CAPITAL LETTER YESTUGLAGOLITIC CAPITAL LE" + + "TTER ZHIVETEGLAGOLITIC CAPITAL LETTER DZELOGLAGOLITIC CAPITAL LETTER ZEM" + + "LJAGLAGOLITIC CAPITAL LETTER IZHEGLAGOLITIC CAPITAL LETTER INITIAL IZHEG" + + "LAGOLITIC CAPITAL LETTER IGLAGOLITIC CAPITAL LETTER DJERVIGLAGOLITIC CAP" + + "ITAL LETTER KAKOGLAGOLITIC CAPITAL LETTER LJUDIJEGLAGOLITIC CAPITAL LETT" + + "ER MYSLITEGLAGOLITIC CAPITAL LETTER NASHIGLAGOLITIC CAPITAL LETTER ONUGL" + + "AGOLITIC CAPITAL LETTER POKOJIGLAGOLITIC CAPITAL LETTER RITSIGLAGOLITIC " + + "CAPITAL LETTER SLOVOGLAGOLITIC CAPITAL LETTER TVRIDOGLAGOLITIC CAPITAL L" + + "ETTER UKUGLAGOLITIC CAPITAL LETTER FRITUGLAGOLITIC CAPITAL LETTER HERUGL" + + "AGOLITIC CAPITAL LETTER OTUGLAGOLITIC CAPITAL LETTER PEGLAGOLITIC CAPITA" + + "L LETTER SHTAGLAGOLITIC CAPITAL LETTER TSIGLAGOLITIC CAPITAL LETTER CHRI" + + "VIGLAGOLITIC CAPITAL LETTER SHAGLAGOLITIC CAPITAL LETTER YERUGLAGOLITIC " + + "CAPITAL LETTER YERIGLAGOLITIC CAPITAL LETTER YATIGLAGOLITIC CAPITAL LETT" + + "ER SPIDERY HAGLAGOLITIC CAPITAL LETTER YUGLAGOLITIC CAPITAL LETTER SMALL" + + " YUSGLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAILGLAGOLITIC CAPITAL LETT" + + "ER YOGLAGOLITIC CAPITAL LETTER IOTATED SMALL YUSGLAGOLITIC CAPITAL LETTE" + + "R BIG YUSGLAGOLITIC CAPITAL LETTER IOTATED BIG YUSGLAGOLITIC CAPITAL LET" + + "TER FITAGLAGOLITIC CAPITAL LETTER IZHITSAGLAGOLITIC CAPITAL LETTER SHTAP" + + "ICGLAGOLITIC CAPITAL LETTER TROKUTASTI AGLAGOLITIC CAPITAL LETTER LATINA" + + "TE MYSLITEGLAGOLITIC SMALL LETTER AZUGLAGOLITIC SMALL LETTER BUKYGLAGOLI" + + "TIC SMALL LETTER VEDEGLAGOLITIC SMALL LETTER GLAGOLIGLAGOLITIC SMALL LET" + + "TER DOBROGLAGOLITIC SMALL LETTER YESTUGLAGOLITIC SMALL LETTER ZHIVETEGLA" + + "GOLITIC SMALL LETTER DZELOGLAGOLITIC SMALL LETTER ZEMLJAGLAGOLITIC SMALL" + + " LETTER IZHEGLAGOLITIC SMALL LETTER INITIAL IZHEGLAGOLITIC SMALL LETTER " + + "IGLAGOLITIC SMALL LETTER DJERVIGLAGOLITIC SMALL LETTER KAKOGLAGOLITIC SM" + + "ALL LETTER LJUDIJEGLAGOLITIC SMALL LETTER MYSLITEGLAGOLITIC SMALL LETTER" + + " NASHIGLAGOLITIC SMALL LETTER ONUGLAGOLITIC SMALL LETTER POKOJIGLAGOLITI" + + "C SMALL LETTER RITSIGLAGOLITIC SMALL LETTER SLOVOGLAGOLITIC SMALL LETTER" + + " TVRIDOGLAGOLITIC SMALL LETTER UKUGLAGOLITIC SMALL LETTER FRITUGLAGOLITI" + + "C SMALL LETTER HERUGLAGOLITIC SMALL LETTER OTUGLAGOLITIC SMALL LETTER PE" + + "GLAGOLITIC SMALL LETTER SHTAGLAGOLITIC SMALL LETTER TSIGLAGOLITIC SMALL " + + "LETTER CHRIVIGLAGOLITIC SMALL LETTER SHAGLAGOLITIC SMALL LETTER YERUGLAG" + + "OLITIC SMALL LETTER YERIGLAGOLITIC SMALL LETTER YATIGLAGOLITIC SMALL LET" + + "TER SPIDERY HAGLAGOLITIC SMALL LETTER YUGLAGOLITIC SMALL LETTER SMALL YU" + + "SGLAGOLITIC SMALL LETTER SMALL YUS WITH TAILGLAGOLITIC SMALL LETTER YOGL" + + "AGOLITIC SMALL LETTER IOTATED SMALL YUSGLAGOLITIC SMALL LETTER BIG YUSGL" + + "AGOLITIC SMALL LETTER IOTATED BIG YUSGLAGOLITIC SMALL LETTER FITAGLAGOLI" + + "TIC SMALL LETTER IZHITSAGLAGOLITIC SMALL LETTER SHTAPICGLAGOLITIC SMALL " + + "LETTER TROKUTASTI AGLAGOLITIC SMALL LETTER LATINATE MYSLITELATIN CAPITAL" + + " LETTER L WITH DOUBLE BARLATIN SMALL LETTER L WITH DOUBLE BARLATIN CAPIT" + + "AL LETTER L WITH MIDDLE TILDELATIN CAPITAL LETTER P WITH STROKELATIN CAP" + + "ITAL LETTER R WITH TAILLATIN SMALL LETTER A WITH STROKELATIN SMALL LETTE" + + "R T WITH DIAGONAL STROKELATIN CAPITAL LETTER H WITH DESCENDERLATIN SMALL" + + " LETTER H WITH DESCENDERLATIN CAPITAL LETTER K WITH DESCENDERLATIN SMALL" + + " LETTER K WITH DESCENDERLATIN CAPITAL LETTER Z WITH DESCENDERLATIN SMALL" + + " LETTER Z WITH DESCENDERLATIN CAPITAL LETTER ALPHALATIN CAPITAL LETTER M" + + " WITH HOOKLATIN CAPITAL LETTER TURNED ALATIN CAPITAL LETTER TURNED ALPHA" + + "LATIN SMALL LETTER V WITH RIGHT HOOKLATIN CAPITAL LETTER W WITH HOOKLATI" + + "N SMALL LETTER W WITH HOOKLATIN SMALL LETTER V WITH CURLLATIN CAPITAL LE" + + "TTER HALF HLATIN SMALL LETTER HALF HLATIN SMALL LETTER TAILLESS PHILATIN" + + " SMALL LETTER E WITH NOTCHLATIN SMALL LETTER TURNED R WITH TAILLATIN SMA" + + "LL LETTER O WITH LOW RING INSIDELATIN LETTER SMALL CAPITAL TURNED ELATIN" + + " SUBSCRIPT SMALL LETTER JMODIFIER LETTER CAPITAL VLATIN CAPITAL LETTER S" + + " WITH SWASH TAILLATIN CAPITAL LETTER Z WITH SWASH TAILCOPTIC CAPITAL LET" + + "TER ALFACOPTIC SMALL LETTER ALFACOPTIC CAPITAL LETTER VIDACOPTIC SMALL L" + + "ETTER VIDACOPTIC CAPITAL LETTER GAMMACOPTIC SMALL LETTER GAMMACOPTIC CAP" + + "ITAL LETTER DALDACOPTIC SMALL LETTER DALDACOPTIC CAPITAL LETTER EIECOPTI" + + "C SMALL LETTER EIECOPTIC CAPITAL LETTER SOUCOPTIC SMALL LETTER SOUCOPTIC" + + " CAPITAL LETTER ZATACOPTIC SMALL LETTER ZATACOPTIC CAPITAL LETTER HATECO" + + "PTIC SMALL LETTER HATECOPTIC CAPITAL LETTER THETHECOPTIC SMALL LETTER TH" + + "ETHECOPTIC CAPITAL LETTER IAUDACOPTIC SMALL LETTER IAUDACOPTIC CAPITAL L") + ("" + + "ETTER KAPACOPTIC SMALL LETTER KAPACOPTIC CAPITAL LETTER LAULACOPTIC SMAL" + + "L LETTER LAULACOPTIC CAPITAL LETTER MICOPTIC SMALL LETTER MICOPTIC CAPIT" + + "AL LETTER NICOPTIC SMALL LETTER NICOPTIC CAPITAL LETTER KSICOPTIC SMALL " + + "LETTER KSICOPTIC CAPITAL LETTER OCOPTIC SMALL LETTER OCOPTIC CAPITAL LET" + + "TER PICOPTIC SMALL LETTER PICOPTIC CAPITAL LETTER ROCOPTIC SMALL LETTER " + + "ROCOPTIC CAPITAL LETTER SIMACOPTIC SMALL LETTER SIMACOPTIC CAPITAL LETTE" + + "R TAUCOPTIC SMALL LETTER TAUCOPTIC CAPITAL LETTER UACOPTIC SMALL LETTER " + + "UACOPTIC CAPITAL LETTER FICOPTIC SMALL LETTER FICOPTIC CAPITAL LETTER KH" + + "ICOPTIC SMALL LETTER KHICOPTIC CAPITAL LETTER PSICOPTIC SMALL LETTER PSI" + + "COPTIC CAPITAL LETTER OOUCOPTIC SMALL LETTER OOUCOPTIC CAPITAL LETTER DI" + + "ALECT-P ALEFCOPTIC SMALL LETTER DIALECT-P ALEFCOPTIC CAPITAL LETTER OLD " + + "COPTIC AINCOPTIC SMALL LETTER OLD COPTIC AINCOPTIC CAPITAL LETTER CRYPTO" + + "GRAMMIC EIECOPTIC SMALL LETTER CRYPTOGRAMMIC EIECOPTIC CAPITAL LETTER DI" + + "ALECT-P KAPACOPTIC SMALL LETTER DIALECT-P KAPACOPTIC CAPITAL LETTER DIAL" + + "ECT-P NICOPTIC SMALL LETTER DIALECT-P NICOPTIC CAPITAL LETTER CRYPTOGRAM" + + "MIC NICOPTIC SMALL LETTER CRYPTOGRAMMIC NICOPTIC CAPITAL LETTER OLD COPT" + + "IC OOUCOPTIC SMALL LETTER OLD COPTIC OOUCOPTIC CAPITAL LETTER SAMPICOPTI" + + "C SMALL LETTER SAMPICOPTIC CAPITAL LETTER CROSSED SHEICOPTIC SMALL LETTE" + + "R CROSSED SHEICOPTIC CAPITAL LETTER OLD COPTIC SHEICOPTIC SMALL LETTER O" + + "LD COPTIC SHEICOPTIC CAPITAL LETTER OLD COPTIC ESHCOPTIC SMALL LETTER OL" + + "D COPTIC ESHCOPTIC CAPITAL LETTER AKHMIMIC KHEICOPTIC SMALL LETTER AKHMI" + + "MIC KHEICOPTIC CAPITAL LETTER DIALECT-P HORICOPTIC SMALL LETTER DIALECT-" + + "P HORICOPTIC CAPITAL LETTER OLD COPTIC HORICOPTIC SMALL LETTER OLD COPTI" + + "C HORICOPTIC CAPITAL LETTER OLD COPTIC HACOPTIC SMALL LETTER OLD COPTIC " + + "HACOPTIC CAPITAL LETTER L-SHAPED HACOPTIC SMALL LETTER L-SHAPED HACOPTIC" + + " CAPITAL LETTER OLD COPTIC HEICOPTIC SMALL LETTER OLD COPTIC HEICOPTIC C" + + "APITAL LETTER OLD COPTIC HATCOPTIC SMALL LETTER OLD COPTIC HATCOPTIC CAP" + + "ITAL LETTER OLD COPTIC GANGIACOPTIC SMALL LETTER OLD COPTIC GANGIACOPTIC" + + " CAPITAL LETTER OLD COPTIC DJACOPTIC SMALL LETTER OLD COPTIC DJACOPTIC C" + + "APITAL LETTER OLD COPTIC SHIMACOPTIC SMALL LETTER OLD COPTIC SHIMACOPTIC" + + " CAPITAL LETTER OLD NUBIAN SHIMACOPTIC SMALL LETTER OLD NUBIAN SHIMACOPT" + + "IC CAPITAL LETTER OLD NUBIAN NGICOPTIC SMALL LETTER OLD NUBIAN NGICOPTIC" + + " CAPITAL LETTER OLD NUBIAN NYICOPTIC SMALL LETTER OLD NUBIAN NYICOPTIC C" + + "APITAL LETTER OLD NUBIAN WAUCOPTIC SMALL LETTER OLD NUBIAN WAUCOPTIC SYM" + + "BOL KAICOPTIC SYMBOL MI ROCOPTIC SYMBOL PI ROCOPTIC SYMBOL STAUROSCOPTIC" + + " SYMBOL TAU ROCOPTIC SYMBOL KHI ROCOPTIC SYMBOL SHIMA SIMACOPTIC CAPITAL" + + " LETTER CRYPTOGRAMMIC SHEICOPTIC SMALL LETTER CRYPTOGRAMMIC SHEICOPTIC C" + + "APITAL LETTER CRYPTOGRAMMIC GANGIACOPTIC SMALL LETTER CRYPTOGRAMMIC GANG" + + "IACOPTIC COMBINING NI ABOVECOPTIC COMBINING SPIRITUS ASPERCOPTIC COMBINI" + + "NG SPIRITUS LENISCOPTIC CAPITAL LETTER BOHAIRIC KHEICOPTIC SMALL LETTER " + + "BOHAIRIC KHEICOPTIC OLD NUBIAN FULL STOPCOPTIC OLD NUBIAN DIRECT QUESTIO" + + "N MARKCOPTIC OLD NUBIAN INDIRECT QUESTION MARKCOPTIC OLD NUBIAN VERSE DI" + + "VIDERCOPTIC FRACTION ONE HALFCOPTIC FULL STOPCOPTIC MORPHOLOGICAL DIVIDE" + + "RGEORGIAN SMALL LETTER ANGEORGIAN SMALL LETTER BANGEORGIAN SMALL LETTER " + + "GANGEORGIAN SMALL LETTER DONGEORGIAN SMALL LETTER ENGEORGIAN SMALL LETTE" + + "R VINGEORGIAN SMALL LETTER ZENGEORGIAN SMALL LETTER TANGEORGIAN SMALL LE" + + "TTER INGEORGIAN SMALL LETTER KANGEORGIAN SMALL LETTER LASGEORGIAN SMALL " + + "LETTER MANGEORGIAN SMALL LETTER NARGEORGIAN SMALL LETTER ONGEORGIAN SMAL" + + "L LETTER PARGEORGIAN SMALL LETTER ZHARGEORGIAN SMALL LETTER RAEGEORGIAN " + + "SMALL LETTER SANGEORGIAN SMALL LETTER TARGEORGIAN SMALL LETTER UNGEORGIA" + + "N SMALL LETTER PHARGEORGIAN SMALL LETTER KHARGEORGIAN SMALL LETTER GHANG" + + "EORGIAN SMALL LETTER QARGEORGIAN SMALL LETTER SHINGEORGIAN SMALL LETTER " + + "CHINGEORGIAN SMALL LETTER CANGEORGIAN SMALL LETTER JILGEORGIAN SMALL LET" + + "TER CILGEORGIAN SMALL LETTER CHARGEORGIAN SMALL LETTER XANGEORGIAN SMALL" + + " LETTER JHANGEORGIAN SMALL LETTER HAEGEORGIAN SMALL LETTER HEGEORGIAN SM" + + "ALL LETTER HIEGEORGIAN SMALL LETTER WEGEORGIAN SMALL LETTER HARGEORGIAN " + + "SMALL LETTER HOEGEORGIAN SMALL LETTER YNGEORGIAN SMALL LETTER AENTIFINAG" + + "H LETTER YATIFINAGH LETTER YABTIFINAGH LETTER YABHTIFINAGH LETTER YAGTIF" + + "INAGH LETTER YAGHHTIFINAGH LETTER BERBER ACADEMY YAJTIFINAGH LETTER YAJT" + + "IFINAGH LETTER YADTIFINAGH LETTER YADHTIFINAGH LETTER YADDTIFINAGH LETTE" + + "R YADDHTIFINAGH LETTER YEYTIFINAGH LETTER YAFTIFINAGH LETTER YAKTIFINAGH" + + " LETTER TUAREG YAKTIFINAGH LETTER YAKHHTIFINAGH LETTER YAHTIFINAGH LETTE" + + "R BERBER ACADEMY YAHTIFINAGH LETTER TUAREG YAHTIFINAGH LETTER YAHHTIFINA" + + "GH LETTER YAATIFINAGH LETTER YAKHTIFINAGH LETTER TUAREG YAKHTIFINAGH LET") + ("" + + "TER YAQTIFINAGH LETTER TUAREG YAQTIFINAGH LETTER YITIFINAGH LETTER YAZHT" + + "IFINAGH LETTER AHAGGAR YAZHTIFINAGH LETTER TUAREG YAZHTIFINAGH LETTER YA" + + "LTIFINAGH LETTER YAMTIFINAGH LETTER YANTIFINAGH LETTER TUAREG YAGNTIFINA" + + "GH LETTER TUAREG YANGTIFINAGH LETTER YAPTIFINAGH LETTER YUTIFINAGH LETTE" + + "R YARTIFINAGH LETTER YARRTIFINAGH LETTER YAGHTIFINAGH LETTER TUAREG YAGH" + + "TIFINAGH LETTER AYER YAGHTIFINAGH LETTER YASTIFINAGH LETTER YASSTIFINAGH" + + " LETTER YASHTIFINAGH LETTER YATTIFINAGH LETTER YATHTIFINAGH LETTER YACHT" + + "IFINAGH LETTER YATTTIFINAGH LETTER YAVTIFINAGH LETTER YAWTIFINAGH LETTER" + + " YAYTIFINAGH LETTER YAZTIFINAGH LETTER TAWELLEMET YAZTIFINAGH LETTER YAZ" + + "ZTIFINAGH LETTER YETIFINAGH LETTER YOTIFINAGH MODIFIER LETTER LABIALIZAT" + + "ION MARKTIFINAGH SEPARATOR MARKTIFINAGH CONSONANT JOINERETHIOPIC SYLLABL" + + "E LOAETHIOPIC SYLLABLE MOAETHIOPIC SYLLABLE ROAETHIOPIC SYLLABLE SOAETHI" + + "OPIC SYLLABLE SHOAETHIOPIC SYLLABLE BOAETHIOPIC SYLLABLE TOAETHIOPIC SYL" + + "LABLE COAETHIOPIC SYLLABLE NOAETHIOPIC SYLLABLE NYOAETHIOPIC SYLLABLE GL" + + "OTTAL OAETHIOPIC SYLLABLE ZOAETHIOPIC SYLLABLE DOAETHIOPIC SYLLABLE DDOA" + + "ETHIOPIC SYLLABLE JOAETHIOPIC SYLLABLE THOAETHIOPIC SYLLABLE CHOAETHIOPI" + + "C SYLLABLE PHOAETHIOPIC SYLLABLE POAETHIOPIC SYLLABLE GGWAETHIOPIC SYLLA" + + "BLE GGWIETHIOPIC SYLLABLE GGWEEETHIOPIC SYLLABLE GGWEETHIOPIC SYLLABLE S" + + "SAETHIOPIC SYLLABLE SSUETHIOPIC SYLLABLE SSIETHIOPIC SYLLABLE SSAAETHIOP" + + "IC SYLLABLE SSEEETHIOPIC SYLLABLE SSEETHIOPIC SYLLABLE SSOETHIOPIC SYLLA" + + "BLE CCAETHIOPIC SYLLABLE CCUETHIOPIC SYLLABLE CCIETHIOPIC SYLLABLE CCAAE" + + "THIOPIC SYLLABLE CCEEETHIOPIC SYLLABLE CCEETHIOPIC SYLLABLE CCOETHIOPIC " + + "SYLLABLE ZZAETHIOPIC SYLLABLE ZZUETHIOPIC SYLLABLE ZZIETHIOPIC SYLLABLE " + + "ZZAAETHIOPIC SYLLABLE ZZEEETHIOPIC SYLLABLE ZZEETHIOPIC SYLLABLE ZZOETHI" + + "OPIC SYLLABLE CCHAETHIOPIC SYLLABLE CCHUETHIOPIC SYLLABLE CCHIETHIOPIC S" + + "YLLABLE CCHAAETHIOPIC SYLLABLE CCHEEETHIOPIC SYLLABLE CCHEETHIOPIC SYLLA" + + "BLE CCHOETHIOPIC SYLLABLE QYAETHIOPIC SYLLABLE QYUETHIOPIC SYLLABLE QYIE" + + "THIOPIC SYLLABLE QYAAETHIOPIC SYLLABLE QYEEETHIOPIC SYLLABLE QYEETHIOPIC" + + " SYLLABLE QYOETHIOPIC SYLLABLE KYAETHIOPIC SYLLABLE KYUETHIOPIC SYLLABLE" + + " KYIETHIOPIC SYLLABLE KYAAETHIOPIC SYLLABLE KYEEETHIOPIC SYLLABLE KYEETH" + + "IOPIC SYLLABLE KYOETHIOPIC SYLLABLE XYAETHIOPIC SYLLABLE XYUETHIOPIC SYL" + + "LABLE XYIETHIOPIC SYLLABLE XYAAETHIOPIC SYLLABLE XYEEETHIOPIC SYLLABLE X" + + "YEETHIOPIC SYLLABLE XYOETHIOPIC SYLLABLE GYAETHIOPIC SYLLABLE GYUETHIOPI" + + "C SYLLABLE GYIETHIOPIC SYLLABLE GYAAETHIOPIC SYLLABLE GYEEETHIOPIC SYLLA" + + "BLE GYEETHIOPIC SYLLABLE GYOCOMBINING CYRILLIC LETTER BECOMBINING CYRILL" + + "IC LETTER VECOMBINING CYRILLIC LETTER GHECOMBINING CYRILLIC LETTER DECOM" + + "BINING CYRILLIC LETTER ZHECOMBINING CYRILLIC LETTER ZECOMBINING CYRILLIC" + + " LETTER KACOMBINING CYRILLIC LETTER ELCOMBINING CYRILLIC LETTER EMCOMBIN" + + "ING CYRILLIC LETTER ENCOMBINING CYRILLIC LETTER OCOMBINING CYRILLIC LETT" + + "ER PECOMBINING CYRILLIC LETTER ERCOMBINING CYRILLIC LETTER ESCOMBINING C" + + "YRILLIC LETTER TECOMBINING CYRILLIC LETTER HACOMBINING CYRILLIC LETTER T" + + "SECOMBINING CYRILLIC LETTER CHECOMBINING CYRILLIC LETTER SHACOMBINING CY" + + "RILLIC LETTER SHCHACOMBINING CYRILLIC LETTER FITACOMBINING CYRILLIC LETT" + + "ER ES-TECOMBINING CYRILLIC LETTER ACOMBINING CYRILLIC LETTER IECOMBINING" + + " CYRILLIC LETTER DJERVCOMBINING CYRILLIC LETTER MONOGRAPH UKCOMBINING CY" + + "RILLIC LETTER YATCOMBINING CYRILLIC LETTER YUCOMBINING CYRILLIC LETTER I" + + "OTIFIED ACOMBINING CYRILLIC LETTER LITTLE YUSCOMBINING CYRILLIC LETTER B" + + "IG YUSCOMBINING CYRILLIC LETTER IOTIFIED BIG YUSRIGHT ANGLE SUBSTITUTION" + + " MARKERRIGHT ANGLE DOTTED SUBSTITUTION MARKERLEFT SUBSTITUTION BRACKETRI" + + "GHT SUBSTITUTION BRACKETLEFT DOTTED SUBSTITUTION BRACKETRIGHT DOTTED SUB" + + "STITUTION BRACKETRAISED INTERPOLATION MARKERRAISED DOTTED INTERPOLATION " + + "MARKERDOTTED TRANSPOSITION MARKERLEFT TRANSPOSITION BRACKETRIGHT TRANSPO" + + "SITION BRACKETRAISED SQUARELEFT RAISED OMISSION BRACKETRIGHT RAISED OMIS" + + "SION BRACKETEDITORIAL CORONISPARAGRAPHOSFORKED PARAGRAPHOSREVERSED FORKE" + + "D PARAGRAPHOSHYPODIASTOLEDOTTED OBELOSDOWNWARDS ANCORAUPWARDS ANCORADOTT" + + "ED RIGHT-POINTING ANGLEDOUBLE OBLIQUE HYPHENINVERTED INTERROBANGPALM BRA" + + "NCHHYPHEN WITH DIAERESISTILDE WITH RING ABOVELEFT LOW PARAPHRASE BRACKET" + + "RIGHT LOW PARAPHRASE BRACKETTILDE WITH DOT ABOVETILDE WITH DOT BELOWLEFT" + + " VERTICAL BAR WITH QUILLRIGHT VERTICAL BAR WITH QUILLTOP LEFT HALF BRACK" + + "ETTOP RIGHT HALF BRACKETBOTTOM LEFT HALF BRACKETBOTTOM RIGHT HALF BRACKE" + + "TLEFT SIDEWAYS U BRACKETRIGHT SIDEWAYS U BRACKETLEFT DOUBLE PARENTHESISR" + + "IGHT DOUBLE PARENTHESISTWO DOTS OVER ONE DOT PUNCTUATIONONE DOT OVER TWO" + + " DOTS PUNCTUATIONSQUARED FOUR DOT PUNCTUATIONFIVE DOT MARKREVERSED QUEST" + + "ION MARKVERTICAL TILDERING POINTWORD SEPARATOR MIDDLE DOTTURNED COMMARAI") + ("" + + "SED DOTRAISED COMMATURNED SEMICOLONDAGGER WITH LEFT GUARDDAGGER WITH RIG" + + "HT GUARDTURNED DAGGERTOP HALF SECTION SIGNTWO-EM DASHTHREE-EM DASHSTENOG" + + "RAPHIC FULL STOPVERTICAL SIX DOTSWIGGLY VERTICAL LINECAPITULUMDOUBLE HYP" + + "HENREVERSED COMMADOUBLE LOW-REVERSED-9 QUOTATION MARKDASH WITH LEFT UPTU" + + "RNDOUBLE SUSPENSION MARKCJK RADICAL REPEATCJK RADICAL CLIFFCJK RADICAL S" + + "ECOND ONECJK RADICAL SECOND TWOCJK RADICAL SECOND THREECJK RADICAL PERSO" + + "NCJK RADICAL BOXCJK RADICAL TABLECJK RADICAL KNIFE ONECJK RADICAL KNIFE " + + "TWOCJK RADICAL DIVINATIONCJK RADICAL SEALCJK RADICAL SMALL ONECJK RADICA" + + "L SMALL TWOCJK RADICAL LAME ONECJK RADICAL LAME TWOCJK RADICAL LAME THRE" + + "ECJK RADICAL LAME FOURCJK RADICAL SNAKECJK RADICAL THREADCJK RADICAL SNO" + + "UT ONECJK RADICAL SNOUT TWOCJK RADICAL HEART ONECJK RADICAL HEART TWOCJK" + + " RADICAL HANDCJK RADICAL RAPCJK RADICAL CHOKECJK RADICAL SUNCJK RADICAL " + + "MOONCJK RADICAL DEATHCJK RADICAL MOTHERCJK RADICAL CIVILIANCJK RADICAL W" + + "ATER ONECJK RADICAL WATER TWOCJK RADICAL FIRECJK RADICAL PAW ONECJK RADI" + + "CAL PAW TWOCJK RADICAL SIMPLIFIED HALF TREE TRUNKCJK RADICAL COWCJK RADI" + + "CAL DOGCJK RADICAL JADECJK RADICAL BOLT OF CLOTHCJK RADICAL EYECJK RADIC" + + "AL SPIRIT ONECJK RADICAL SPIRIT TWOCJK RADICAL BAMBOOCJK RADICAL SILKCJK" + + " RADICAL C-SIMPLIFIED SILKCJK RADICAL NET ONECJK RADICAL NET TWOCJK RADI" + + "CAL NET THREECJK RADICAL NET FOURCJK RADICAL MESHCJK RADICAL SHEEPCJK RA" + + "DICAL RAMCJK RADICAL EWECJK RADICAL OLDCJK RADICAL BRUSH ONECJK RADICAL " + + "BRUSH TWOCJK RADICAL MEATCJK RADICAL MORTARCJK RADICAL GRASS ONECJK RADI" + + "CAL GRASS TWOCJK RADICAL GRASS THREECJK RADICAL TIGERCJK RADICAL CLOTHES" + + "CJK RADICAL WEST ONECJK RADICAL WEST TWOCJK RADICAL C-SIMPLIFIED SEECJK " + + "RADICAL SIMPLIFIED HORNCJK RADICAL HORNCJK RADICAL C-SIMPLIFIED SPEECHCJ" + + "K RADICAL C-SIMPLIFIED SHELLCJK RADICAL FOOTCJK RADICAL C-SIMPLIFIED CAR" + + "TCJK RADICAL SIMPLIFIED WALKCJK RADICAL WALK ONECJK RADICAL WALK TWOCJK " + + "RADICAL CITYCJK RADICAL C-SIMPLIFIED GOLDCJK RADICAL LONG ONECJK RADICAL" + + " LONG TWOCJK RADICAL C-SIMPLIFIED LONGCJK RADICAL C-SIMPLIFIED GATECJK R" + + "ADICAL MOUND ONECJK RADICAL MOUND TWOCJK RADICAL RAINCJK RADICAL BLUECJK" + + " RADICAL C-SIMPLIFIED TANNED LEATHERCJK RADICAL C-SIMPLIFIED LEAFCJK RAD" + + "ICAL C-SIMPLIFIED WINDCJK RADICAL C-SIMPLIFIED FLYCJK RADICAL EAT ONECJK" + + " RADICAL EAT TWOCJK RADICAL EAT THREECJK RADICAL C-SIMPLIFIED EATCJK RAD" + + "ICAL HEADCJK RADICAL C-SIMPLIFIED HORSECJK RADICAL BONECJK RADICAL GHOST" + + "CJK RADICAL C-SIMPLIFIED FISHCJK RADICAL C-SIMPLIFIED BIRDCJK RADICAL C-" + + "SIMPLIFIED SALTCJK RADICAL SIMPLIFIED WHEATCJK RADICAL SIMPLIFIED YELLOW" + + "CJK RADICAL C-SIMPLIFIED FROGCJK RADICAL J-SIMPLIFIED EVENCJK RADICAL C-" + + "SIMPLIFIED EVENCJK RADICAL J-SIMPLIFIED TOOTHCJK RADICAL C-SIMPLIFIED TO" + + "OTHCJK RADICAL J-SIMPLIFIED DRAGONCJK RADICAL C-SIMPLIFIED DRAGONCJK RAD" + + "ICAL TURTLECJK RADICAL J-SIMPLIFIED TURTLECJK RADICAL C-SIMPLIFIED TURTL" + + "EKANGXI RADICAL ONEKANGXI RADICAL LINEKANGXI RADICAL DOTKANGXI RADICAL S" + + "LASHKANGXI RADICAL SECONDKANGXI RADICAL HOOKKANGXI RADICAL TWOKANGXI RAD" + + "ICAL LIDKANGXI RADICAL MANKANGXI RADICAL LEGSKANGXI RADICAL ENTERKANGXI " + + "RADICAL EIGHTKANGXI RADICAL DOWN BOXKANGXI RADICAL COVERKANGXI RADICAL I" + + "CEKANGXI RADICAL TABLEKANGXI RADICAL OPEN BOXKANGXI RADICAL KNIFEKANGXI " + + "RADICAL POWERKANGXI RADICAL WRAPKANGXI RADICAL SPOONKANGXI RADICAL RIGHT" + + " OPEN BOXKANGXI RADICAL HIDING ENCLOSUREKANGXI RADICAL TENKANGXI RADICAL" + + " DIVINATIONKANGXI RADICAL SEALKANGXI RADICAL CLIFFKANGXI RADICAL PRIVATE" + + "KANGXI RADICAL AGAINKANGXI RADICAL MOUTHKANGXI RADICAL ENCLOSUREKANGXI R" + + "ADICAL EARTHKANGXI RADICAL SCHOLARKANGXI RADICAL GOKANGXI RADICAL GO SLO" + + "WLYKANGXI RADICAL EVENINGKANGXI RADICAL BIGKANGXI RADICAL WOMANKANGXI RA" + + "DICAL CHILDKANGXI RADICAL ROOFKANGXI RADICAL INCHKANGXI RADICAL SMALLKAN" + + "GXI RADICAL LAMEKANGXI RADICAL CORPSEKANGXI RADICAL SPROUTKANGXI RADICAL" + + " MOUNTAINKANGXI RADICAL RIVERKANGXI RADICAL WORKKANGXI RADICAL ONESELFKA" + + "NGXI RADICAL TURBANKANGXI RADICAL DRYKANGXI RADICAL SHORT THREADKANGXI R" + + "ADICAL DOTTED CLIFFKANGXI RADICAL LONG STRIDEKANGXI RADICAL TWO HANDSKAN" + + "GXI RADICAL SHOOTKANGXI RADICAL BOWKANGXI RADICAL SNOUTKANGXI RADICAL BR" + + "ISTLEKANGXI RADICAL STEPKANGXI RADICAL HEARTKANGXI RADICAL HALBERDKANGXI" + + " RADICAL DOORKANGXI RADICAL HANDKANGXI RADICAL BRANCHKANGXI RADICAL RAPK" + + "ANGXI RADICAL SCRIPTKANGXI RADICAL DIPPERKANGXI RADICAL AXEKANGXI RADICA" + + "L SQUAREKANGXI RADICAL NOTKANGXI RADICAL SUNKANGXI RADICAL SAYKANGXI RAD" + + "ICAL MOONKANGXI RADICAL TREEKANGXI RADICAL LACKKANGXI RADICAL STOPKANGXI" + + " RADICAL DEATHKANGXI RADICAL WEAPONKANGXI RADICAL DO NOTKANGXI RADICAL C" + + "OMPAREKANGXI RADICAL FURKANGXI RADICAL CLANKANGXI RADICAL STEAMKANGXI RA" + + "DICAL WATERKANGXI RADICAL FIREKANGXI RADICAL CLAWKANGXI RADICAL FATHERKA") + ("" + + "NGXI RADICAL DOUBLE XKANGXI RADICAL HALF TREE TRUNKKANGXI RADICAL SLICEK" + + "ANGXI RADICAL FANGKANGXI RADICAL COWKANGXI RADICAL DOGKANGXI RADICAL PRO" + + "FOUNDKANGXI RADICAL JADEKANGXI RADICAL MELONKANGXI RADICAL TILEKANGXI RA" + + "DICAL SWEETKANGXI RADICAL LIFEKANGXI RADICAL USEKANGXI RADICAL FIELDKANG" + + "XI RADICAL BOLT OF CLOTHKANGXI RADICAL SICKNESSKANGXI RADICAL DOTTED TEN" + + "TKANGXI RADICAL WHITEKANGXI RADICAL SKINKANGXI RADICAL DISHKANGXI RADICA" + + "L EYEKANGXI RADICAL SPEARKANGXI RADICAL ARROWKANGXI RADICAL STONEKANGXI " + + "RADICAL SPIRITKANGXI RADICAL TRACKKANGXI RADICAL GRAINKANGXI RADICAL CAV" + + "EKANGXI RADICAL STANDKANGXI RADICAL BAMBOOKANGXI RADICAL RICEKANGXI RADI" + + "CAL SILKKANGXI RADICAL JARKANGXI RADICAL NETKANGXI RADICAL SHEEPKANGXI R" + + "ADICAL FEATHERKANGXI RADICAL OLDKANGXI RADICAL ANDKANGXI RADICAL PLOWKAN" + + "GXI RADICAL EARKANGXI RADICAL BRUSHKANGXI RADICAL MEATKANGXI RADICAL MIN" + + "ISTERKANGXI RADICAL SELFKANGXI RADICAL ARRIVEKANGXI RADICAL MORTARKANGXI" + + " RADICAL TONGUEKANGXI RADICAL OPPOSEKANGXI RADICAL BOATKANGXI RADICAL ST" + + "OPPINGKANGXI RADICAL COLORKANGXI RADICAL GRASSKANGXI RADICAL TIGERKANGXI" + + " RADICAL INSECTKANGXI RADICAL BLOODKANGXI RADICAL WALK ENCLOSUREKANGXI R" + + "ADICAL CLOTHESKANGXI RADICAL WESTKANGXI RADICAL SEEKANGXI RADICAL HORNKA" + + "NGXI RADICAL SPEECHKANGXI RADICAL VALLEYKANGXI RADICAL BEANKANGXI RADICA" + + "L PIGKANGXI RADICAL BADGERKANGXI RADICAL SHELLKANGXI RADICAL REDKANGXI R" + + "ADICAL RUNKANGXI RADICAL FOOTKANGXI RADICAL BODYKANGXI RADICAL CARTKANGX" + + "I RADICAL BITTERKANGXI RADICAL MORNINGKANGXI RADICAL WALKKANGXI RADICAL " + + "CITYKANGXI RADICAL WINEKANGXI RADICAL DISTINGUISHKANGXI RADICAL VILLAGEK" + + "ANGXI RADICAL GOLDKANGXI RADICAL LONGKANGXI RADICAL GATEKANGXI RADICAL M" + + "OUNDKANGXI RADICAL SLAVEKANGXI RADICAL SHORT TAILED BIRDKANGXI RADICAL R" + + "AINKANGXI RADICAL BLUEKANGXI RADICAL WRONGKANGXI RADICAL FACEKANGXI RADI" + + "CAL LEATHERKANGXI RADICAL TANNED LEATHERKANGXI RADICAL LEEKKANGXI RADICA" + + "L SOUNDKANGXI RADICAL LEAFKANGXI RADICAL WINDKANGXI RADICAL FLYKANGXI RA" + + "DICAL EATKANGXI RADICAL HEADKANGXI RADICAL FRAGRANTKANGXI RADICAL HORSEK" + + "ANGXI RADICAL BONEKANGXI RADICAL TALLKANGXI RADICAL HAIRKANGXI RADICAL F" + + "IGHTKANGXI RADICAL SACRIFICIAL WINEKANGXI RADICAL CAULDRONKANGXI RADICAL" + + " GHOSTKANGXI RADICAL FISHKANGXI RADICAL BIRDKANGXI RADICAL SALTKANGXI RA" + + "DICAL DEERKANGXI RADICAL WHEATKANGXI RADICAL HEMPKANGXI RADICAL YELLOWKA" + + "NGXI RADICAL MILLETKANGXI RADICAL BLACKKANGXI RADICAL EMBROIDERYKANGXI R" + + "ADICAL FROGKANGXI RADICAL TRIPODKANGXI RADICAL DRUMKANGXI RADICAL RATKAN" + + "GXI RADICAL NOSEKANGXI RADICAL EVENKANGXI RADICAL TOOTHKANGXI RADICAL DR" + + "AGONKANGXI RADICAL TURTLEKANGXI RADICAL FLUTEIDEOGRAPHIC DESCRIPTION CHA" + + "RACTER LEFT TO RIGHTIDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOWIDEO" + + "GRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHTIDEOGRAPHIC DESCRI" + + "PTION CHARACTER ABOVE TO MIDDLE AND BELOWIDEOGRAPHIC DESCRIPTION CHARACT" + + "ER FULL SURROUNDIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVEIDE" + + "OGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOWIDEOGRAPHIC DESCRIPTIO" + + "N CHARACTER SURROUND FROM LEFTIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND" + + " FROM UPPER LEFTIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RI" + + "GHTIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFTIDEOGRAPHIC" + + " DESCRIPTION CHARACTER OVERLAIDIDEOGRAPHIC SPACEIDEOGRAPHIC COMMAIDEOGRA" + + "PHIC FULL STOPDITTO MARKJAPANESE INDUSTRIAL STANDARD SYMBOLIDEOGRAPHIC I" + + "TERATION MARKIDEOGRAPHIC CLOSING MARKIDEOGRAPHIC NUMBER ZEROLEFT ANGLE B" + + "RACKETRIGHT ANGLE BRACKETLEFT DOUBLE ANGLE BRACKETRIGHT DOUBLE ANGLE BRA" + + "CKETLEFT CORNER BRACKETRIGHT CORNER BRACKETLEFT WHITE CORNER BRACKETRIGH" + + "T WHITE CORNER BRACKETLEFT BLACK LENTICULAR BRACKETRIGHT BLACK LENTICULA" + + "R BRACKETPOSTAL MARKGETA MARKLEFT TORTOISE SHELL BRACKETRIGHT TORTOISE S" + + "HELL BRACKETLEFT WHITE LENTICULAR BRACKETRIGHT WHITE LENTICULAR BRACKETL" + + "EFT WHITE TORTOISE SHELL BRACKETRIGHT WHITE TORTOISE SHELL BRACKETLEFT W" + + "HITE SQUARE BRACKETRIGHT WHITE SQUARE BRACKETWAVE DASHREVERSED DOUBLE PR" + + "IME QUOTATION MARKDOUBLE PRIME QUOTATION MARKLOW DOUBLE PRIME QUOTATION " + + "MARKPOSTAL MARK FACEHANGZHOU NUMERAL ONEHANGZHOU NUMERAL TWOHANGZHOU NUM" + + "ERAL THREEHANGZHOU NUMERAL FOURHANGZHOU NUMERAL FIVEHANGZHOU NUMERAL SIX" + + "HANGZHOU NUMERAL SEVENHANGZHOU NUMERAL EIGHTHANGZHOU NUMERAL NINEIDEOGRA" + + "PHIC LEVEL TONE MARKIDEOGRAPHIC RISING TONE MARKIDEOGRAPHIC DEPARTING TO" + + "NE MARKIDEOGRAPHIC ENTERING TONE MARKHANGUL SINGLE DOT TONE MARKHANGUL D" + + "OUBLE DOT TONE MARKWAVY DASHVERTICAL KANA REPEAT MARKVERTICAL KANA REPEA" + + "T WITH VOICED SOUND MARKVERTICAL KANA REPEAT MARK UPPER HALFVERTICAL KAN" + + "A REPEAT WITH VOICED SOUND MARK UPPER HALFVERTICAL KANA REPEAT MARK LOWE" + + "R HALFCIRCLED POSTAL MARKIDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBO") + ("" + + "LHANGZHOU NUMERAL TENHANGZHOU NUMERAL TWENTYHANGZHOU NUMERAL THIRTYVERTI" + + "CAL IDEOGRAPHIC ITERATION MARKMASU MARKPART ALTERNATION MARKIDEOGRAPHIC " + + "VARIATION INDICATORIDEOGRAPHIC HALF FILL SPACEHIRAGANA LETTER SMALL AHIR" + + "AGANA LETTER AHIRAGANA LETTER SMALL IHIRAGANA LETTER IHIRAGANA LETTER SM" + + "ALL UHIRAGANA LETTER UHIRAGANA LETTER SMALL EHIRAGANA LETTER EHIRAGANA L" + + "ETTER SMALL OHIRAGANA LETTER OHIRAGANA LETTER KAHIRAGANA LETTER GAHIRAGA" + + "NA LETTER KIHIRAGANA LETTER GIHIRAGANA LETTER KUHIRAGANA LETTER GUHIRAGA" + + "NA LETTER KEHIRAGANA LETTER GEHIRAGANA LETTER KOHIRAGANA LETTER GOHIRAGA" + + "NA LETTER SAHIRAGANA LETTER ZAHIRAGANA LETTER SIHIRAGANA LETTER ZIHIRAGA" + + "NA LETTER SUHIRAGANA LETTER ZUHIRAGANA LETTER SEHIRAGANA LETTER ZEHIRAGA" + + "NA LETTER SOHIRAGANA LETTER ZOHIRAGANA LETTER TAHIRAGANA LETTER DAHIRAGA" + + "NA LETTER TIHIRAGANA LETTER DIHIRAGANA LETTER SMALL TUHIRAGANA LETTER TU" + + "HIRAGANA LETTER DUHIRAGANA LETTER TEHIRAGANA LETTER DEHIRAGANA LETTER TO" + + "HIRAGANA LETTER DOHIRAGANA LETTER NAHIRAGANA LETTER NIHIRAGANA LETTER NU" + + "HIRAGANA LETTER NEHIRAGANA LETTER NOHIRAGANA LETTER HAHIRAGANA LETTER BA" + + "HIRAGANA LETTER PAHIRAGANA LETTER HIHIRAGANA LETTER BIHIRAGANA LETTER PI" + + "HIRAGANA LETTER HUHIRAGANA LETTER BUHIRAGANA LETTER PUHIRAGANA LETTER HE" + + "HIRAGANA LETTER BEHIRAGANA LETTER PEHIRAGANA LETTER HOHIRAGANA LETTER BO" + + "HIRAGANA LETTER POHIRAGANA LETTER MAHIRAGANA LETTER MIHIRAGANA LETTER MU" + + "HIRAGANA LETTER MEHIRAGANA LETTER MOHIRAGANA LETTER SMALL YAHIRAGANA LET" + + "TER YAHIRAGANA LETTER SMALL YUHIRAGANA LETTER YUHIRAGANA LETTER SMALL YO" + + "HIRAGANA LETTER YOHIRAGANA LETTER RAHIRAGANA LETTER RIHIRAGANA LETTER RU" + + "HIRAGANA LETTER REHIRAGANA LETTER ROHIRAGANA LETTER SMALL WAHIRAGANA LET" + + "TER WAHIRAGANA LETTER WIHIRAGANA LETTER WEHIRAGANA LETTER WOHIRAGANA LET" + + "TER NHIRAGANA LETTER VUHIRAGANA LETTER SMALL KAHIRAGANA LETTER SMALL KEC" + + "OMBINING KATAKANA-HIRAGANA VOICED SOUND MARKCOMBINING KATAKANA-HIRAGANA " + + "SEMI-VOICED SOUND MARKKATAKANA-HIRAGANA VOICED SOUND MARKKATAKANA-HIRAGA" + + "NA SEMI-VOICED SOUND MARKHIRAGANA ITERATION MARKHIRAGANA VOICED ITERATIO" + + "N MARKHIRAGANA DIGRAPH YORIKATAKANA-HIRAGANA DOUBLE HYPHENKATAKANA LETTE" + + "R SMALL AKATAKANA LETTER AKATAKANA LETTER SMALL IKATAKANA LETTER IKATAKA" + + "NA LETTER SMALL UKATAKANA LETTER UKATAKANA LETTER SMALL EKATAKANA LETTER" + + " EKATAKANA LETTER SMALL OKATAKANA LETTER OKATAKANA LETTER KAKATAKANA LET" + + "TER GAKATAKANA LETTER KIKATAKANA LETTER GIKATAKANA LETTER KUKATAKANA LET" + + "TER GUKATAKANA LETTER KEKATAKANA LETTER GEKATAKANA LETTER KOKATAKANA LET" + + "TER GOKATAKANA LETTER SAKATAKANA LETTER ZAKATAKANA LETTER SIKATAKANA LET" + + "TER ZIKATAKANA LETTER SUKATAKANA LETTER ZUKATAKANA LETTER SEKATAKANA LET" + + "TER ZEKATAKANA LETTER SOKATAKANA LETTER ZOKATAKANA LETTER TAKATAKANA LET" + + "TER DAKATAKANA LETTER TIKATAKANA LETTER DIKATAKANA LETTER SMALL TUKATAKA" + + "NA LETTER TUKATAKANA LETTER DUKATAKANA LETTER TEKATAKANA LETTER DEKATAKA" + + "NA LETTER TOKATAKANA LETTER DOKATAKANA LETTER NAKATAKANA LETTER NIKATAKA" + + "NA LETTER NUKATAKANA LETTER NEKATAKANA LETTER NOKATAKANA LETTER HAKATAKA" + + "NA LETTER BAKATAKANA LETTER PAKATAKANA LETTER HIKATAKANA LETTER BIKATAKA" + + "NA LETTER PIKATAKANA LETTER HUKATAKANA LETTER BUKATAKANA LETTER PUKATAKA" + + "NA LETTER HEKATAKANA LETTER BEKATAKANA LETTER PEKATAKANA LETTER HOKATAKA" + + "NA LETTER BOKATAKANA LETTER POKATAKANA LETTER MAKATAKANA LETTER MIKATAKA" + + "NA LETTER MUKATAKANA LETTER MEKATAKANA LETTER MOKATAKANA LETTER SMALL YA" + + "KATAKANA LETTER YAKATAKANA LETTER SMALL YUKATAKANA LETTER YUKATAKANA LET" + + "TER SMALL YOKATAKANA LETTER YOKATAKANA LETTER RAKATAKANA LETTER RIKATAKA" + + "NA LETTER RUKATAKANA LETTER REKATAKANA LETTER ROKATAKANA LETTER SMALL WA" + + "KATAKANA LETTER WAKATAKANA LETTER WIKATAKANA LETTER WEKATAKANA LETTER WO" + + "KATAKANA LETTER NKATAKANA LETTER VUKATAKANA LETTER SMALL KAKATAKANA LETT" + + "ER SMALL KEKATAKANA LETTER VAKATAKANA LETTER VIKATAKANA LETTER VEKATAKAN" + + "A LETTER VOKATAKANA MIDDLE DOTKATAKANA-HIRAGANA PROLONGED SOUND MARKKATA" + + "KANA ITERATION MARKKATAKANA VOICED ITERATION MARKKATAKANA DIGRAPH KOTOBO" + + "POMOFO LETTER BBOPOMOFO LETTER PBOPOMOFO LETTER MBOPOMOFO LETTER FBOPOMO" + + "FO LETTER DBOPOMOFO LETTER TBOPOMOFO LETTER NBOPOMOFO LETTER LBOPOMOFO L" + + "ETTER GBOPOMOFO LETTER KBOPOMOFO LETTER HBOPOMOFO LETTER JBOPOMOFO LETTE" + + "R QBOPOMOFO LETTER XBOPOMOFO LETTER ZHBOPOMOFO LETTER CHBOPOMOFO LETTER " + + "SHBOPOMOFO LETTER RBOPOMOFO LETTER ZBOPOMOFO LETTER CBOPOMOFO LETTER SBO" + + "POMOFO LETTER ABOPOMOFO LETTER OBOPOMOFO LETTER EBOPOMOFO LETTER EHBOPOM" + + "OFO LETTER AIBOPOMOFO LETTER EIBOPOMOFO LETTER AUBOPOMOFO LETTER OUBOPOM" + + "OFO LETTER ANBOPOMOFO LETTER ENBOPOMOFO LETTER ANGBOPOMOFO LETTER ENGBOP" + + "OMOFO LETTER ERBOPOMOFO LETTER IBOPOMOFO LETTER UBOPOMOFO LETTER IUBOPOM" + + "OFO LETTER VBOPOMOFO LETTER NGBOPOMOFO LETTER GNBOPOMOFO LETTER IHHANGUL") + ("" + + " LETTER KIYEOKHANGUL LETTER SSANGKIYEOKHANGUL LETTER KIYEOK-SIOSHANGUL L" + + "ETTER NIEUNHANGUL LETTER NIEUN-CIEUCHANGUL LETTER NIEUN-HIEUHHANGUL LETT" + + "ER TIKEUTHANGUL LETTER SSANGTIKEUTHANGUL LETTER RIEULHANGUL LETTER RIEUL" + + "-KIYEOKHANGUL LETTER RIEUL-MIEUMHANGUL LETTER RIEUL-PIEUPHANGUL LETTER R" + + "IEUL-SIOSHANGUL LETTER RIEUL-THIEUTHHANGUL LETTER RIEUL-PHIEUPHHANGUL LE" + + "TTER RIEUL-HIEUHHANGUL LETTER MIEUMHANGUL LETTER PIEUPHANGUL LETTER SSAN" + + "GPIEUPHANGUL LETTER PIEUP-SIOSHANGUL LETTER SIOSHANGUL LETTER SSANGSIOSH" + + "ANGUL LETTER IEUNGHANGUL LETTER CIEUCHANGUL LETTER SSANGCIEUCHANGUL LETT" + + "ER CHIEUCHHANGUL LETTER KHIEUKHHANGUL LETTER THIEUTHHANGUL LETTER PHIEUP" + + "HHANGUL LETTER HIEUHHANGUL LETTER AHANGUL LETTER AEHANGUL LETTER YAHANGU" + + "L LETTER YAEHANGUL LETTER EOHANGUL LETTER EHANGUL LETTER YEOHANGUL LETTE" + + "R YEHANGUL LETTER OHANGUL LETTER WAHANGUL LETTER WAEHANGUL LETTER OEHANG" + + "UL LETTER YOHANGUL LETTER UHANGUL LETTER WEOHANGUL LETTER WEHANGUL LETTE" + + "R WIHANGUL LETTER YUHANGUL LETTER EUHANGUL LETTER YIHANGUL LETTER IHANGU" + + "L FILLERHANGUL LETTER SSANGNIEUNHANGUL LETTER NIEUN-TIKEUTHANGUL LETTER " + + "NIEUN-SIOSHANGUL LETTER NIEUN-PANSIOSHANGUL LETTER RIEUL-KIYEOK-SIOSHANG" + + "UL LETTER RIEUL-TIKEUTHANGUL LETTER RIEUL-PIEUP-SIOSHANGUL LETTER RIEUL-" + + "PANSIOSHANGUL LETTER RIEUL-YEORINHIEUHHANGUL LETTER MIEUM-PIEUPHANGUL LE" + + "TTER MIEUM-SIOSHANGUL LETTER MIEUM-PANSIOSHANGUL LETTER KAPYEOUNMIEUMHAN" + + "GUL LETTER PIEUP-KIYEOKHANGUL LETTER PIEUP-TIKEUTHANGUL LETTER PIEUP-SIO" + + "S-KIYEOKHANGUL LETTER PIEUP-SIOS-TIKEUTHANGUL LETTER PIEUP-CIEUCHANGUL L" + + "ETTER PIEUP-THIEUTHHANGUL LETTER KAPYEOUNPIEUPHANGUL LETTER KAPYEOUNSSAN" + + "GPIEUPHANGUL LETTER SIOS-KIYEOKHANGUL LETTER SIOS-NIEUNHANGUL LETTER SIO" + + "S-TIKEUTHANGUL LETTER SIOS-PIEUPHANGUL LETTER SIOS-CIEUCHANGUL LETTER PA" + + "NSIOSHANGUL LETTER SSANGIEUNGHANGUL LETTER YESIEUNGHANGUL LETTER YESIEUN" + + "G-SIOSHANGUL LETTER YESIEUNG-PANSIOSHANGUL LETTER KAPYEOUNPHIEUPHHANGUL " + + "LETTER SSANGHIEUHHANGUL LETTER YEORINHIEUHHANGUL LETTER YO-YAHANGUL LETT" + + "ER YO-YAEHANGUL LETTER YO-IHANGUL LETTER YU-YEOHANGUL LETTER YU-YEHANGUL" + + " LETTER YU-IHANGUL LETTER ARAEAHANGUL LETTER ARAEAEIDEOGRAPHIC ANNOTATIO" + + "N LINKING MARKIDEOGRAPHIC ANNOTATION REVERSE MARKIDEOGRAPHIC ANNOTATION " + + "ONE MARKIDEOGRAPHIC ANNOTATION TWO MARKIDEOGRAPHIC ANNOTATION THREE MARK" + + "IDEOGRAPHIC ANNOTATION FOUR MARKIDEOGRAPHIC ANNOTATION TOP MARKIDEOGRAPH" + + "IC ANNOTATION MIDDLE MARKIDEOGRAPHIC ANNOTATION BOTTOM MARKIDEOGRAPHIC A" + + "NNOTATION FIRST MARKIDEOGRAPHIC ANNOTATION SECOND MARKIDEOGRAPHIC ANNOTA" + + "TION THIRD MARKIDEOGRAPHIC ANNOTATION FOURTH MARKIDEOGRAPHIC ANNOTATION " + + "HEAVEN MARKIDEOGRAPHIC ANNOTATION EARTH MARKIDEOGRAPHIC ANNOTATION MAN M" + + "ARKBOPOMOFO LETTER BUBOPOMOFO LETTER ZIBOPOMOFO LETTER JIBOPOMOFO LETTER" + + " GUBOPOMOFO LETTER EEBOPOMOFO LETTER ENNBOPOMOFO LETTER OOBOPOMOFO LETTE" + + "R ONNBOPOMOFO LETTER IRBOPOMOFO LETTER ANNBOPOMOFO LETTER INNBOPOMOFO LE" + + "TTER UNNBOPOMOFO LETTER IMBOPOMOFO LETTER NGGBOPOMOFO LETTER AINNBOPOMOF" + + "O LETTER AUNNBOPOMOFO LETTER AMBOPOMOFO LETTER OMBOPOMOFO LETTER ONGBOPO" + + "MOFO LETTER INNNBOPOMOFO FINAL LETTER PBOPOMOFO FINAL LETTER TBOPOMOFO F" + + "INAL LETTER KBOPOMOFO FINAL LETTER HBOPOMOFO LETTER GHBOPOMOFO LETTER LH" + + "BOPOMOFO LETTER ZYCJK STROKE TCJK STROKE WGCJK STROKE XGCJK STROKE BXGCJ" + + "K STROKE SWCJK STROKE HZZCJK STROKE HZGCJK STROKE HPCJK STROKE HZWGCJK S" + + "TROKE SZWGCJK STROKE HZTCJK STROKE HZZPCJK STROKE HPWGCJK STROKE HZWCJK " + + "STROKE HZZZCJK STROKE NCJK STROKE HCJK STROKE SCJK STROKE PCJK STROKE SP" + + "CJK STROKE DCJK STROKE HZCJK STROKE HGCJK STROKE SZCJK STROKE SWZCJK STR" + + "OKE STCJK STROKE SGCJK STROKE PDCJK STROKE PZCJK STROKE TNCJK STROKE SZZ" + + "CJK STROKE SWGCJK STROKE HXWGCJK STROKE HZZZGCJK STROKE PGCJK STROKE QKA" + + "TAKANA LETTER SMALL KUKATAKANA LETTER SMALL SIKATAKANA LETTER SMALL SUKA" + + "TAKANA LETTER SMALL TOKATAKANA LETTER SMALL NUKATAKANA LETTER SMALL HAKA" + + "TAKANA LETTER SMALL HIKATAKANA LETTER SMALL HUKATAKANA LETTER SMALL HEKA" + + "TAKANA LETTER SMALL HOKATAKANA LETTER SMALL MUKATAKANA LETTER SMALL RAKA" + + "TAKANA LETTER SMALL RIKATAKANA LETTER SMALL RUKATAKANA LETTER SMALL REKA" + + "TAKANA LETTER SMALL ROPARENTHESIZED HANGUL KIYEOKPARENTHESIZED HANGUL NI" + + "EUNPARENTHESIZED HANGUL TIKEUTPARENTHESIZED HANGUL RIEULPARENTHESIZED HA" + + "NGUL MIEUMPARENTHESIZED HANGUL PIEUPPARENTHESIZED HANGUL SIOSPARENTHESIZ" + + "ED HANGUL IEUNGPARENTHESIZED HANGUL CIEUCPARENTHESIZED HANGUL CHIEUCHPAR" + + "ENTHESIZED HANGUL KHIEUKHPARENTHESIZED HANGUL THIEUTHPARENTHESIZED HANGU" + + "L PHIEUPHPARENTHESIZED HANGUL HIEUHPARENTHESIZED HANGUL KIYEOK APARENTHE" + + "SIZED HANGUL NIEUN APARENTHESIZED HANGUL TIKEUT APARENTHESIZED HANGUL RI" + + "EUL APARENTHESIZED HANGUL MIEUM APARENTHESIZED HANGUL PIEUP APARENTHESIZ" + + "ED HANGUL SIOS APARENTHESIZED HANGUL IEUNG APARENTHESIZED HANGUL CIEUC A") + ("" + + "PARENTHESIZED HANGUL CHIEUCH APARENTHESIZED HANGUL KHIEUKH APARENTHESIZE" + + "D HANGUL THIEUTH APARENTHESIZED HANGUL PHIEUPH APARENTHESIZED HANGUL HIE" + + "UH APARENTHESIZED HANGUL CIEUC UPARENTHESIZED KOREAN CHARACTER OJEONPARE" + + "NTHESIZED KOREAN CHARACTER O HUPARENTHESIZED IDEOGRAPH ONEPARENTHESIZED " + + "IDEOGRAPH TWOPARENTHESIZED IDEOGRAPH THREEPARENTHESIZED IDEOGRAPH FOURPA" + + "RENTHESIZED IDEOGRAPH FIVEPARENTHESIZED IDEOGRAPH SIXPARENTHESIZED IDEOG" + + "RAPH SEVENPARENTHESIZED IDEOGRAPH EIGHTPARENTHESIZED IDEOGRAPH NINEPAREN" + + "THESIZED IDEOGRAPH TENPARENTHESIZED IDEOGRAPH MOONPARENTHESIZED IDEOGRAP" + + "H FIREPARENTHESIZED IDEOGRAPH WATERPARENTHESIZED IDEOGRAPH WOODPARENTHES" + + "IZED IDEOGRAPH METALPARENTHESIZED IDEOGRAPH EARTHPARENTHESIZED IDEOGRAPH" + + " SUNPARENTHESIZED IDEOGRAPH STOCKPARENTHESIZED IDEOGRAPH HAVEPARENTHESIZ" + + "ED IDEOGRAPH SOCIETYPARENTHESIZED IDEOGRAPH NAMEPARENTHESIZED IDEOGRAPH " + + "SPECIALPARENTHESIZED IDEOGRAPH FINANCIALPARENTHESIZED IDEOGRAPH CONGRATU" + + "LATIONPARENTHESIZED IDEOGRAPH LABORPARENTHESIZED IDEOGRAPH REPRESENTPARE" + + "NTHESIZED IDEOGRAPH CALLPARENTHESIZED IDEOGRAPH STUDYPARENTHESIZED IDEOG" + + "RAPH SUPERVISEPARENTHESIZED IDEOGRAPH ENTERPRISEPARENTHESIZED IDEOGRAPH " + + "RESOURCEPARENTHESIZED IDEOGRAPH ALLIANCEPARENTHESIZED IDEOGRAPH FESTIVAL" + + "PARENTHESIZED IDEOGRAPH RESTPARENTHESIZED IDEOGRAPH SELFPARENTHESIZED ID" + + "EOGRAPH REACHCIRCLED IDEOGRAPH QUESTIONCIRCLED IDEOGRAPH KINDERGARTENCIR" + + "CLED IDEOGRAPH SCHOOLCIRCLED IDEOGRAPH KOTOCIRCLED NUMBER TEN ON BLACK S" + + "QUARECIRCLED NUMBER TWENTY ON BLACK SQUARECIRCLED NUMBER THIRTY ON BLACK" + + " SQUARECIRCLED NUMBER FORTY ON BLACK SQUARECIRCLED NUMBER FIFTY ON BLACK" + + " SQUARECIRCLED NUMBER SIXTY ON BLACK SQUARECIRCLED NUMBER SEVENTY ON BLA" + + "CK SQUARECIRCLED NUMBER EIGHTY ON BLACK SQUAREPARTNERSHIP SIGNCIRCLED NU" + + "MBER TWENTY ONECIRCLED NUMBER TWENTY TWOCIRCLED NUMBER TWENTY THREECIRCL" + + "ED NUMBER TWENTY FOURCIRCLED NUMBER TWENTY FIVECIRCLED NUMBER TWENTY SIX" + + "CIRCLED NUMBER TWENTY SEVENCIRCLED NUMBER TWENTY EIGHTCIRCLED NUMBER TWE" + + "NTY NINECIRCLED NUMBER THIRTYCIRCLED NUMBER THIRTY ONECIRCLED NUMBER THI" + + "RTY TWOCIRCLED NUMBER THIRTY THREECIRCLED NUMBER THIRTY FOURCIRCLED NUMB" + + "ER THIRTY FIVECIRCLED HANGUL KIYEOKCIRCLED HANGUL NIEUNCIRCLED HANGUL TI" + + "KEUTCIRCLED HANGUL RIEULCIRCLED HANGUL MIEUMCIRCLED HANGUL PIEUPCIRCLED " + + "HANGUL SIOSCIRCLED HANGUL IEUNGCIRCLED HANGUL CIEUCCIRCLED HANGUL CHIEUC" + + "HCIRCLED HANGUL KHIEUKHCIRCLED HANGUL THIEUTHCIRCLED HANGUL PHIEUPHCIRCL" + + "ED HANGUL HIEUHCIRCLED HANGUL KIYEOK ACIRCLED HANGUL NIEUN ACIRCLED HANG" + + "UL TIKEUT ACIRCLED HANGUL RIEUL ACIRCLED HANGUL MIEUM ACIRCLED HANGUL PI" + + "EUP ACIRCLED HANGUL SIOS ACIRCLED HANGUL IEUNG ACIRCLED HANGUL CIEUC ACI" + + "RCLED HANGUL CHIEUCH ACIRCLED HANGUL KHIEUKH ACIRCLED HANGUL THIEUTH ACI" + + "RCLED HANGUL PHIEUPH ACIRCLED HANGUL HIEUH ACIRCLED KOREAN CHARACTER CHA" + + "MKOCIRCLED KOREAN CHARACTER JUEUICIRCLED HANGUL IEUNG UKOREAN STANDARD S" + + "YMBOLCIRCLED IDEOGRAPH ONECIRCLED IDEOGRAPH TWOCIRCLED IDEOGRAPH THREECI" + + "RCLED IDEOGRAPH FOURCIRCLED IDEOGRAPH FIVECIRCLED IDEOGRAPH SIXCIRCLED I" + + "DEOGRAPH SEVENCIRCLED IDEOGRAPH EIGHTCIRCLED IDEOGRAPH NINECIRCLED IDEOG" + + "RAPH TENCIRCLED IDEOGRAPH MOONCIRCLED IDEOGRAPH FIRECIRCLED IDEOGRAPH WA" + + "TERCIRCLED IDEOGRAPH WOODCIRCLED IDEOGRAPH METALCIRCLED IDEOGRAPH EARTHC" + + "IRCLED IDEOGRAPH SUNCIRCLED IDEOGRAPH STOCKCIRCLED IDEOGRAPH HAVECIRCLED" + + " IDEOGRAPH SOCIETYCIRCLED IDEOGRAPH NAMECIRCLED IDEOGRAPH SPECIALCIRCLED" + + " IDEOGRAPH FINANCIALCIRCLED IDEOGRAPH CONGRATULATIONCIRCLED IDEOGRAPH LA" + + "BORCIRCLED IDEOGRAPH SECRETCIRCLED IDEOGRAPH MALECIRCLED IDEOGRAPH FEMAL" + + "ECIRCLED IDEOGRAPH SUITABLECIRCLED IDEOGRAPH EXCELLENTCIRCLED IDEOGRAPH " + + "PRINTCIRCLED IDEOGRAPH ATTENTIONCIRCLED IDEOGRAPH ITEMCIRCLED IDEOGRAPH " + + "RESTCIRCLED IDEOGRAPH COPYCIRCLED IDEOGRAPH CORRECTCIRCLED IDEOGRAPH HIG" + + "HCIRCLED IDEOGRAPH CENTRECIRCLED IDEOGRAPH LOWCIRCLED IDEOGRAPH LEFTCIRC" + + "LED IDEOGRAPH RIGHTCIRCLED IDEOGRAPH MEDICINECIRCLED IDEOGRAPH RELIGIONC" + + "IRCLED IDEOGRAPH STUDYCIRCLED IDEOGRAPH SUPERVISECIRCLED IDEOGRAPH ENTER" + + "PRISECIRCLED IDEOGRAPH RESOURCECIRCLED IDEOGRAPH ALLIANCECIRCLED IDEOGRA" + + "PH NIGHTCIRCLED NUMBER THIRTY SIXCIRCLED NUMBER THIRTY SEVENCIRCLED NUMB" + + "ER THIRTY EIGHTCIRCLED NUMBER THIRTY NINECIRCLED NUMBER FORTYCIRCLED NUM" + + "BER FORTY ONECIRCLED NUMBER FORTY TWOCIRCLED NUMBER FORTY THREECIRCLED N" + + "UMBER FORTY FOURCIRCLED NUMBER FORTY FIVECIRCLED NUMBER FORTY SIXCIRCLED" + + " NUMBER FORTY SEVENCIRCLED NUMBER FORTY EIGHTCIRCLED NUMBER FORTY NINECI" + + "RCLED NUMBER FIFTYIDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARYIDEOGRAPHIC TE" + + "LEGRAPH SYMBOL FOR FEBRUARYIDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCHIDEOGRA" + + "PHIC TELEGRAPH SYMBOL FOR APRILIDEOGRAPHIC TELEGRAPH SYMBOL FOR MAYIDEOG" + + "RAPHIC TELEGRAPH SYMBOL FOR JUNEIDEOGRAPHIC TELEGRAPH SYMBOL FOR JULYIDE") + ("" + + "OGRAPHIC TELEGRAPH SYMBOL FOR AUGUSTIDEOGRAPHIC TELEGRAPH SYMBOL FOR SEP" + + "TEMBERIDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBERIDEOGRAPHIC TELEGRAPH SYMB" + + "OL FOR NOVEMBERIDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBERSQUARE HGSQUARE " + + "ERGSQUARE EVLIMITED LIABILITY SIGNCIRCLED KATAKANA ACIRCLED KATAKANA ICI" + + "RCLED KATAKANA UCIRCLED KATAKANA ECIRCLED KATAKANA OCIRCLED KATAKANA KAC" + + "IRCLED KATAKANA KICIRCLED KATAKANA KUCIRCLED KATAKANA KECIRCLED KATAKANA" + + " KOCIRCLED KATAKANA SACIRCLED KATAKANA SICIRCLED KATAKANA SUCIRCLED KATA" + + "KANA SECIRCLED KATAKANA SOCIRCLED KATAKANA TACIRCLED KATAKANA TICIRCLED " + + "KATAKANA TUCIRCLED KATAKANA TECIRCLED KATAKANA TOCIRCLED KATAKANA NACIRC" + + "LED KATAKANA NICIRCLED KATAKANA NUCIRCLED KATAKANA NECIRCLED KATAKANA NO" + + "CIRCLED KATAKANA HACIRCLED KATAKANA HICIRCLED KATAKANA HUCIRCLED KATAKAN" + + "A HECIRCLED KATAKANA HOCIRCLED KATAKANA MACIRCLED KATAKANA MICIRCLED KAT" + + "AKANA MUCIRCLED KATAKANA MECIRCLED KATAKANA MOCIRCLED KATAKANA YACIRCLED" + + " KATAKANA YUCIRCLED KATAKANA YOCIRCLED KATAKANA RACIRCLED KATAKANA RICIR" + + "CLED KATAKANA RUCIRCLED KATAKANA RECIRCLED KATAKANA ROCIRCLED KATAKANA W" + + "ACIRCLED KATAKANA WICIRCLED KATAKANA WECIRCLED KATAKANA WOSQUARE APAATOS" + + "QUARE ARUHUASQUARE ANPEASQUARE AARUSQUARE ININGUSQUARE INTISQUARE UONSQU" + + "ARE ESUKUUDOSQUARE EEKAASQUARE ONSUSQUARE OOMUSQUARE KAIRISQUARE KARATTO" + + "SQUARE KARORIISQUARE GARONSQUARE GANMASQUARE GIGASQUARE GINIISQUARE KYUR" + + "IISQUARE GIRUDAASQUARE KIROSQUARE KIROGURAMUSQUARE KIROMEETORUSQUARE KIR" + + "OWATTOSQUARE GURAMUSQUARE GURAMUTONSQUARE KURUZEIROSQUARE KUROONESQUARE " + + "KEESUSQUARE KORUNASQUARE KOOPOSQUARE SAIKURUSQUARE SANTIIMUSQUARE SIRING" + + "USQUARE SENTISQUARE SENTOSQUARE DAASUSQUARE DESISQUARE DORUSQUARE TONSQU" + + "ARE NANOSQUARE NOTTOSQUARE HAITUSQUARE PAASENTOSQUARE PAATUSQUARE BAARER" + + "USQUARE PIASUTORUSQUARE PIKURUSQUARE PIKOSQUARE BIRUSQUARE HUARADDOSQUAR" + + "E HUIITOSQUARE BUSSYERUSQUARE HURANSQUARE HEKUTAARUSQUARE PESOSQUARE PEN" + + "IHISQUARE HERUTUSQUARE PENSUSQUARE PEEZISQUARE BEETASQUARE POINTOSQUARE " + + "BORUTOSQUARE HONSQUARE PONDOSQUARE HOORUSQUARE HOONSQUARE MAIKUROSQUARE " + + "MAIRUSQUARE MAHHASQUARE MARUKUSQUARE MANSYONSQUARE MIKURONSQUARE MIRISQU" + + "ARE MIRIBAARUSQUARE MEGASQUARE MEGATONSQUARE MEETORUSQUARE YAADOSQUARE Y" + + "AARUSQUARE YUANSQUARE RITTORUSQUARE RIRASQUARE RUPIISQUARE RUUBURUSQUARE" + + " REMUSQUARE RENTOGENSQUARE WATTOIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZE" + + "ROIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONEIDEOGRAPHIC TELEGRAPH SYMBOL " + + "FOR HOUR TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREEIDEOGRAPHIC TELEG" + + "RAPH SYMBOL FOR HOUR FOURIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVEIDEOG" + + "RAPHIC TELEGRAPH SYMBOL FOR HOUR SIXIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOU" + + "R SEVENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTIDEOGRAPHIC TELEGRAPH " + + "SYMBOL FOR HOUR NINEIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TENIDEOGRAPHIC" + + " TELEGRAPH SYMBOL FOR HOUR ELEVENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR T" + + "WELVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEENIDEOGRAPHIC TELEGRAPH" + + " SYMBOL FOR HOUR FOURTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEENID" + + "EOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEENIDEOGRAPHIC TELEGRAPH SYMBOL " + + "FOR HOUR SEVENTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEENIDEOGRAP" + + "HIC TELEGRAPH SYMBOL FOR HOUR NINETEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR H" + + "OUR TWENTYIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONEIDEOGRAPHIC TE" + + "LEGRAPH SYMBOL FOR HOUR TWENTY-TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR " + + "TWENTY-THREEIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOURSQUARE HPAS" + + "QUARE DASQUARE AUSQUARE BARSQUARE OVSQUARE PCSQUARE DMSQUARE DM SQUAREDS" + + "QUARE DM CUBEDSQUARE IUSQUARE ERA NAME HEISEISQUARE ERA NAME SYOUWASQUAR" + + "E ERA NAME TAISYOUSQUARE ERA NAME MEIZISQUARE CORPORATIONSQUARE PA AMPSS" + + "QUARE NASQUARE MU ASQUARE MASQUARE KASQUARE KBSQUARE MBSQUARE GBSQUARE C" + + "ALSQUARE KCALSQUARE PFSQUARE NFSQUARE MU FSQUARE MU GSQUARE MGSQUARE KGS" + + "QUARE HZSQUARE KHZSQUARE MHZSQUARE GHZSQUARE THZSQUARE MU LSQUARE MLSQUA" + + "RE DLSQUARE KLSQUARE FMSQUARE NMSQUARE MU MSQUARE MMSQUARE CMSQUARE KMSQ" + + "UARE MM SQUAREDSQUARE CM SQUAREDSQUARE M SQUAREDSQUARE KM SQUAREDSQUARE " + + "MM CUBEDSQUARE CM CUBEDSQUARE M CUBEDSQUARE KM CUBEDSQUARE M OVER SSQUAR" + + "E M OVER S SQUAREDSQUARE PASQUARE KPASQUARE MPASQUARE GPASQUARE RADSQUAR" + + "E RAD OVER SSQUARE RAD OVER S SQUAREDSQUARE PSSQUARE NSSQUARE MU SSQUARE" + + " MSSQUARE PVSQUARE NVSQUARE MU VSQUARE MVSQUARE KVSQUARE MV MEGASQUARE P" + + "WSQUARE NWSQUARE MU WSQUARE MWSQUARE KWSQUARE MW MEGASQUARE K OHMSQUARE " + + "M OHMSQUARE AMSQUARE BQSQUARE CCSQUARE CDSQUARE C OVER KGSQUARE COSQUARE" + + " DBSQUARE GYSQUARE HASQUARE HPSQUARE INSQUARE KKSQUARE KM CAPITALSQUARE " + + "KTSQUARE LMSQUARE LNSQUARE LOGSQUARE LXSQUARE MB SMALLSQUARE MILSQUARE M" + + "OLSQUARE PHSQUARE PMSQUARE PPMSQUARE PRSQUARE SRSQUARE SVSQUARE WBSQUARE") + ("" + + " V OVER MSQUARE A OVER MIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONEIDEOGRAP" + + "HIC TELEGRAPH SYMBOL FOR DAY TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THR" + + "EEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURIDEOGRAPHIC TELEGRAPH SYMBOL " + + "FOR DAY FIVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXIDEOGRAPHIC TELEGRAP" + + "H SYMBOL FOR DAY SEVENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTIDEOGRAP" + + "HIC TELEGRAPH SYMBOL FOR DAY NINEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TE" + + "NIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVENIDEOGRAPHIC TELEGRAPH SYMBOL" + + " FOR DAY TWELVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEENIDEOGRAPHIC " + + "TELEGRAPH SYMBOL FOR DAY FOURTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FI" + + "FTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEENIDEOGRAPHIC TELEGRAPH S" + + "YMBOL FOR DAY SEVENTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEENIDEO" + + "GRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEENIDEOGRAPHIC TELEGRAPH SYMBOL FO" + + "R DAY TWENTYIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONEIDEOGRAPHIC T" + + "ELEGRAPH SYMBOL FOR DAY TWENTY-TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY T" + + "WENTY-THREEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOURIDEOGRAPHIC T" + + "ELEGRAPH SYMBOL FOR DAY TWENTY-FIVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY " + + "TWENTY-SIXIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVENIDEOGRAPHIC T" + + "ELEGRAPH SYMBOL FOR DAY TWENTY-EIGHTIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY" + + " TWENTY-NINEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTYIDEOGRAPHIC TELEG" + + "RAPH SYMBOL FOR DAY THIRTY-ONESQUARE GALHEXAGRAM FOR THE CREATIVE HEAVEN" + + "HEXAGRAM FOR THE RECEPTIVE EARTHHEXAGRAM FOR DIFFICULTY AT THE BEGINNING" + + "HEXAGRAM FOR YOUTHFUL FOLLYHEXAGRAM FOR WAITINGHEXAGRAM FOR CONFLICTHEXA" + + "GRAM FOR THE ARMYHEXAGRAM FOR HOLDING TOGETHERHEXAGRAM FOR SMALL TAMINGH" + + "EXAGRAM FOR TREADINGHEXAGRAM FOR PEACEHEXAGRAM FOR STANDSTILLHEXAGRAM FO" + + "R FELLOWSHIPHEXAGRAM FOR GREAT POSSESSIONHEXAGRAM FOR MODESTYHEXAGRAM FO" + + "R ENTHUSIASMHEXAGRAM FOR FOLLOWINGHEXAGRAM FOR WORK ON THE DECAYEDHEXAGR" + + "AM FOR APPROACHHEXAGRAM FOR CONTEMPLATIONHEXAGRAM FOR BITING THROUGHHEXA" + + "GRAM FOR GRACEHEXAGRAM FOR SPLITTING APARTHEXAGRAM FOR RETURNHEXAGRAM FO" + + "R INNOCENCEHEXAGRAM FOR GREAT TAMINGHEXAGRAM FOR MOUTH CORNERSHEXAGRAM F" + + "OR GREAT PREPONDERANCEHEXAGRAM FOR THE ABYSMAL WATERHEXAGRAM FOR THE CLI" + + "NGING FIREHEXAGRAM FOR INFLUENCEHEXAGRAM FOR DURATIONHEXAGRAM FOR RETREA" + + "THEXAGRAM FOR GREAT POWERHEXAGRAM FOR PROGRESSHEXAGRAM FOR DARKENING OF " + + "THE LIGHTHEXAGRAM FOR THE FAMILYHEXAGRAM FOR OPPOSITIONHEXAGRAM FOR OBST" + + "RUCTIONHEXAGRAM FOR DELIVERANCEHEXAGRAM FOR DECREASEHEXAGRAM FOR INCREAS" + + "EHEXAGRAM FOR BREAKTHROUGHHEXAGRAM FOR COMING TO MEETHEXAGRAM FOR GATHER" + + "ING TOGETHERHEXAGRAM FOR PUSHING UPWARDHEXAGRAM FOR OPPRESSIONHEXAGRAM F" + + "OR THE WELLHEXAGRAM FOR REVOLUTIONHEXAGRAM FOR THE CAULDRONHEXAGRAM FOR " + + "THE AROUSING THUNDERHEXAGRAM FOR THE KEEPING STILL MOUNTAINHEXAGRAM FOR " + + "DEVELOPMENTHEXAGRAM FOR THE MARRYING MAIDENHEXAGRAM FOR ABUNDANCEHEXAGRA" + + "M FOR THE WANDERERHEXAGRAM FOR THE GENTLE WINDHEXAGRAM FOR THE JOYOUS LA" + + "KEHEXAGRAM FOR DISPERSIONHEXAGRAM FOR LIMITATIONHEXAGRAM FOR INNER TRUTH" + + "HEXAGRAM FOR SMALL PREPONDERANCEHEXAGRAM FOR AFTER COMPLETIONHEXAGRAM FO" + + "R BEFORE COMPLETIONYI SYLLABLE ITYI SYLLABLE IXYI SYLLABLE IYI SYLLABLE " + + "IPYI SYLLABLE IETYI SYLLABLE IEXYI SYLLABLE IEYI SYLLABLE IEPYI SYLLABLE" + + " ATYI SYLLABLE AXYI SYLLABLE AYI SYLLABLE APYI SYLLABLE UOXYI SYLLABLE U" + + "OYI SYLLABLE UOPYI SYLLABLE OTYI SYLLABLE OXYI SYLLABLE OYI SYLLABLE OPY" + + "I SYLLABLE EXYI SYLLABLE EYI SYLLABLE WUYI SYLLABLE BITYI SYLLABLE BIXYI" + + " SYLLABLE BIYI SYLLABLE BIPYI SYLLABLE BIETYI SYLLABLE BIEXYI SYLLABLE B" + + "IEYI SYLLABLE BIEPYI SYLLABLE BATYI SYLLABLE BAXYI SYLLABLE BAYI SYLLABL" + + "E BAPYI SYLLABLE BUOXYI SYLLABLE BUOYI SYLLABLE BUOPYI SYLLABLE BOTYI SY" + + "LLABLE BOXYI SYLLABLE BOYI SYLLABLE BOPYI SYLLABLE BEXYI SYLLABLE BEYI S" + + "YLLABLE BEPYI SYLLABLE BUTYI SYLLABLE BUXYI SYLLABLE BUYI SYLLABLE BUPYI" + + " SYLLABLE BURXYI SYLLABLE BURYI SYLLABLE BYTYI SYLLABLE BYXYI SYLLABLE B" + + "YYI SYLLABLE BYPYI SYLLABLE BYRXYI SYLLABLE BYRYI SYLLABLE PITYI SYLLABL" + + "E PIXYI SYLLABLE PIYI SYLLABLE PIPYI SYLLABLE PIEXYI SYLLABLE PIEYI SYLL" + + "ABLE PIEPYI SYLLABLE PATYI SYLLABLE PAXYI SYLLABLE PAYI SYLLABLE PAPYI S" + + "YLLABLE PUOXYI SYLLABLE PUOYI SYLLABLE PUOPYI SYLLABLE POTYI SYLLABLE PO" + + "XYI SYLLABLE POYI SYLLABLE POPYI SYLLABLE PUTYI SYLLABLE PUXYI SYLLABLE " + + "PUYI SYLLABLE PUPYI SYLLABLE PURXYI SYLLABLE PURYI SYLLABLE PYTYI SYLLAB" + + "LE PYXYI SYLLABLE PYYI SYLLABLE PYPYI SYLLABLE PYRXYI SYLLABLE PYRYI SYL" + + "LABLE BBITYI SYLLABLE BBIXYI SYLLABLE BBIYI SYLLABLE BBIPYI SYLLABLE BBI" + + "ETYI SYLLABLE BBIEXYI SYLLABLE BBIEYI SYLLABLE BBIEPYI SYLLABLE BBATYI S" + + "YLLABLE BBAXYI SYLLABLE BBAYI SYLLABLE BBAPYI SYLLABLE BBUOXYI SYLLABLE " + + "BBUOYI SYLLABLE BBUOPYI SYLLABLE BBOTYI SYLLABLE BBOXYI SYLLABLE BBOYI S") + ("" + + "YLLABLE BBOPYI SYLLABLE BBEXYI SYLLABLE BBEYI SYLLABLE BBEPYI SYLLABLE B" + + "BUTYI SYLLABLE BBUXYI SYLLABLE BBUYI SYLLABLE BBUPYI SYLLABLE BBURXYI SY" + + "LLABLE BBURYI SYLLABLE BBYTYI SYLLABLE BBYXYI SYLLABLE BBYYI SYLLABLE BB" + + "YPYI SYLLABLE NBITYI SYLLABLE NBIXYI SYLLABLE NBIYI SYLLABLE NBIPYI SYLL" + + "ABLE NBIEXYI SYLLABLE NBIEYI SYLLABLE NBIEPYI SYLLABLE NBATYI SYLLABLE N" + + "BAXYI SYLLABLE NBAYI SYLLABLE NBAPYI SYLLABLE NBOTYI SYLLABLE NBOXYI SYL" + + "LABLE NBOYI SYLLABLE NBOPYI SYLLABLE NBUTYI SYLLABLE NBUXYI SYLLABLE NBU" + + "YI SYLLABLE NBUPYI SYLLABLE NBURXYI SYLLABLE NBURYI SYLLABLE NBYTYI SYLL" + + "ABLE NBYXYI SYLLABLE NBYYI SYLLABLE NBYPYI SYLLABLE NBYRXYI SYLLABLE NBY" + + "RYI SYLLABLE HMITYI SYLLABLE HMIXYI SYLLABLE HMIYI SYLLABLE HMIPYI SYLLA" + + "BLE HMIEXYI SYLLABLE HMIEYI SYLLABLE HMIEPYI SYLLABLE HMATYI SYLLABLE HM" + + "AXYI SYLLABLE HMAYI SYLLABLE HMAPYI SYLLABLE HMUOXYI SYLLABLE HMUOYI SYL" + + "LABLE HMUOPYI SYLLABLE HMOTYI SYLLABLE HMOXYI SYLLABLE HMOYI SYLLABLE HM" + + "OPYI SYLLABLE HMUTYI SYLLABLE HMUXYI SYLLABLE HMUYI SYLLABLE HMUPYI SYLL" + + "ABLE HMURXYI SYLLABLE HMURYI SYLLABLE HMYXYI SYLLABLE HMYYI SYLLABLE HMY" + + "PYI SYLLABLE HMYRXYI SYLLABLE HMYRYI SYLLABLE MITYI SYLLABLE MIXYI SYLLA" + + "BLE MIYI SYLLABLE MIPYI SYLLABLE MIEXYI SYLLABLE MIEYI SYLLABLE MIEPYI S" + + "YLLABLE MATYI SYLLABLE MAXYI SYLLABLE MAYI SYLLABLE MAPYI SYLLABLE MUOTY" + + "I SYLLABLE MUOXYI SYLLABLE MUOYI SYLLABLE MUOPYI SYLLABLE MOTYI SYLLABLE" + + " MOXYI SYLLABLE MOYI SYLLABLE MOPYI SYLLABLE MEXYI SYLLABLE MEYI SYLLABL" + + "E MUTYI SYLLABLE MUXYI SYLLABLE MUYI SYLLABLE MUPYI SYLLABLE MURXYI SYLL" + + "ABLE MURYI SYLLABLE MYTYI SYLLABLE MYXYI SYLLABLE MYYI SYLLABLE MYPYI SY" + + "LLABLE FITYI SYLLABLE FIXYI SYLLABLE FIYI SYLLABLE FIPYI SYLLABLE FATYI " + + "SYLLABLE FAXYI SYLLABLE FAYI SYLLABLE FAPYI SYLLABLE FOXYI SYLLABLE FOYI" + + " SYLLABLE FOPYI SYLLABLE FUTYI SYLLABLE FUXYI SYLLABLE FUYI SYLLABLE FUP" + + "YI SYLLABLE FURXYI SYLLABLE FURYI SYLLABLE FYTYI SYLLABLE FYXYI SYLLABLE" + + " FYYI SYLLABLE FYPYI SYLLABLE VITYI SYLLABLE VIXYI SYLLABLE VIYI SYLLABL" + + "E VIPYI SYLLABLE VIETYI SYLLABLE VIEXYI SYLLABLE VIEYI SYLLABLE VIEPYI S" + + "YLLABLE VATYI SYLLABLE VAXYI SYLLABLE VAYI SYLLABLE VAPYI SYLLABLE VOTYI" + + " SYLLABLE VOXYI SYLLABLE VOYI SYLLABLE VOPYI SYLLABLE VEXYI SYLLABLE VEP" + + "YI SYLLABLE VUTYI SYLLABLE VUXYI SYLLABLE VUYI SYLLABLE VUPYI SYLLABLE V" + + "URXYI SYLLABLE VURYI SYLLABLE VYTYI SYLLABLE VYXYI SYLLABLE VYYI SYLLABL" + + "E VYPYI SYLLABLE VYRXYI SYLLABLE VYRYI SYLLABLE DITYI SYLLABLE DIXYI SYL" + + "LABLE DIYI SYLLABLE DIPYI SYLLABLE DIEXYI SYLLABLE DIEYI SYLLABLE DIEPYI" + + " SYLLABLE DATYI SYLLABLE DAXYI SYLLABLE DAYI SYLLABLE DAPYI SYLLABLE DUO" + + "XYI SYLLABLE DUOYI SYLLABLE DOTYI SYLLABLE DOXYI SYLLABLE DOYI SYLLABLE " + + "DOPYI SYLLABLE DEXYI SYLLABLE DEYI SYLLABLE DEPYI SYLLABLE DUTYI SYLLABL" + + "E DUXYI SYLLABLE DUYI SYLLABLE DUPYI SYLLABLE DURXYI SYLLABLE DURYI SYLL" + + "ABLE TITYI SYLLABLE TIXYI SYLLABLE TIYI SYLLABLE TIPYI SYLLABLE TIEXYI S" + + "YLLABLE TIEYI SYLLABLE TIEPYI SYLLABLE TATYI SYLLABLE TAXYI SYLLABLE TAY" + + "I SYLLABLE TAPYI SYLLABLE TUOTYI SYLLABLE TUOXYI SYLLABLE TUOYI SYLLABLE" + + " TUOPYI SYLLABLE TOTYI SYLLABLE TOXYI SYLLABLE TOYI SYLLABLE TOPYI SYLLA" + + "BLE TEXYI SYLLABLE TEYI SYLLABLE TEPYI SYLLABLE TUTYI SYLLABLE TUXYI SYL" + + "LABLE TUYI SYLLABLE TUPYI SYLLABLE TURXYI SYLLABLE TURYI SYLLABLE DDITYI" + + " SYLLABLE DDIXYI SYLLABLE DDIYI SYLLABLE DDIPYI SYLLABLE DDIEXYI SYLLABL" + + "E DDIEYI SYLLABLE DDIEPYI SYLLABLE DDATYI SYLLABLE DDAXYI SYLLABLE DDAYI" + + " SYLLABLE DDAPYI SYLLABLE DDUOXYI SYLLABLE DDUOYI SYLLABLE DDUOPYI SYLLA" + + "BLE DDOTYI SYLLABLE DDOXYI SYLLABLE DDOYI SYLLABLE DDOPYI SYLLABLE DDEXY" + + "I SYLLABLE DDEYI SYLLABLE DDEPYI SYLLABLE DDUTYI SYLLABLE DDUXYI SYLLABL" + + "E DDUYI SYLLABLE DDUPYI SYLLABLE DDURXYI SYLLABLE DDURYI SYLLABLE NDITYI" + + " SYLLABLE NDIXYI SYLLABLE NDIYI SYLLABLE NDIPYI SYLLABLE NDIEXYI SYLLABL" + + "E NDIEYI SYLLABLE NDATYI SYLLABLE NDAXYI SYLLABLE NDAYI SYLLABLE NDAPYI " + + "SYLLABLE NDOTYI SYLLABLE NDOXYI SYLLABLE NDOYI SYLLABLE NDOPYI SYLLABLE " + + "NDEXYI SYLLABLE NDEYI SYLLABLE NDEPYI SYLLABLE NDUTYI SYLLABLE NDUXYI SY" + + "LLABLE NDUYI SYLLABLE NDUPYI SYLLABLE NDURXYI SYLLABLE NDURYI SYLLABLE H" + + "NITYI SYLLABLE HNIXYI SYLLABLE HNIYI SYLLABLE HNIPYI SYLLABLE HNIETYI SY" + + "LLABLE HNIEXYI SYLLABLE HNIEYI SYLLABLE HNIEPYI SYLLABLE HNATYI SYLLABLE" + + " HNAXYI SYLLABLE HNAYI SYLLABLE HNAPYI SYLLABLE HNUOXYI SYLLABLE HNUOYI " + + "SYLLABLE HNOTYI SYLLABLE HNOXYI SYLLABLE HNOPYI SYLLABLE HNEXYI SYLLABLE" + + " HNEYI SYLLABLE HNEPYI SYLLABLE HNUTYI SYLLABLE NITYI SYLLABLE NIXYI SYL" + + "LABLE NIYI SYLLABLE NIPYI SYLLABLE NIEXYI SYLLABLE NIEYI SYLLABLE NIEPYI" + + " SYLLABLE NAXYI SYLLABLE NAYI SYLLABLE NAPYI SYLLABLE NUOXYI SYLLABLE NU" + + "OYI SYLLABLE NUOPYI SYLLABLE NOTYI SYLLABLE NOXYI SYLLABLE NOYI SYLLABLE" + + " NOPYI SYLLABLE NEXYI SYLLABLE NEYI SYLLABLE NEPYI SYLLABLE NUTYI SYLLAB") + ("" + + "LE NUXYI SYLLABLE NUYI SYLLABLE NUPYI SYLLABLE NURXYI SYLLABLE NURYI SYL" + + "LABLE HLITYI SYLLABLE HLIXYI SYLLABLE HLIYI SYLLABLE HLIPYI SYLLABLE HLI" + + "EXYI SYLLABLE HLIEYI SYLLABLE HLIEPYI SYLLABLE HLATYI SYLLABLE HLAXYI SY" + + "LLABLE HLAYI SYLLABLE HLAPYI SYLLABLE HLUOXYI SYLLABLE HLUOYI SYLLABLE H" + + "LUOPYI SYLLABLE HLOXYI SYLLABLE HLOYI SYLLABLE HLOPYI SYLLABLE HLEXYI SY" + + "LLABLE HLEYI SYLLABLE HLEPYI SYLLABLE HLUTYI SYLLABLE HLUXYI SYLLABLE HL" + + "UYI SYLLABLE HLUPYI SYLLABLE HLURXYI SYLLABLE HLURYI SYLLABLE HLYTYI SYL" + + "LABLE HLYXYI SYLLABLE HLYYI SYLLABLE HLYPYI SYLLABLE HLYRXYI SYLLABLE HL" + + "YRYI SYLLABLE LITYI SYLLABLE LIXYI SYLLABLE LIYI SYLLABLE LIPYI SYLLABLE" + + " LIETYI SYLLABLE LIEXYI SYLLABLE LIEYI SYLLABLE LIEPYI SYLLABLE LATYI SY" + + "LLABLE LAXYI SYLLABLE LAYI SYLLABLE LAPYI SYLLABLE LUOTYI SYLLABLE LUOXY" + + "I SYLLABLE LUOYI SYLLABLE LUOPYI SYLLABLE LOTYI SYLLABLE LOXYI SYLLABLE " + + "LOYI SYLLABLE LOPYI SYLLABLE LEXYI SYLLABLE LEYI SYLLABLE LEPYI SYLLABLE" + + " LUTYI SYLLABLE LUXYI SYLLABLE LUYI SYLLABLE LUPYI SYLLABLE LURXYI SYLLA" + + "BLE LURYI SYLLABLE LYTYI SYLLABLE LYXYI SYLLABLE LYYI SYLLABLE LYPYI SYL" + + "LABLE LYRXYI SYLLABLE LYRYI SYLLABLE GITYI SYLLABLE GIXYI SYLLABLE GIYI " + + "SYLLABLE GIPYI SYLLABLE GIETYI SYLLABLE GIEXYI SYLLABLE GIEYI SYLLABLE G" + + "IEPYI SYLLABLE GATYI SYLLABLE GAXYI SYLLABLE GAYI SYLLABLE GAPYI SYLLABL" + + "E GUOTYI SYLLABLE GUOXYI SYLLABLE GUOYI SYLLABLE GUOPYI SYLLABLE GOTYI S" + + "YLLABLE GOXYI SYLLABLE GOYI SYLLABLE GOPYI SYLLABLE GETYI SYLLABLE GEXYI" + + " SYLLABLE GEYI SYLLABLE GEPYI SYLLABLE GUTYI SYLLABLE GUXYI SYLLABLE GUY" + + "I SYLLABLE GUPYI SYLLABLE GURXYI SYLLABLE GURYI SYLLABLE KITYI SYLLABLE " + + "KIXYI SYLLABLE KIYI SYLLABLE KIPYI SYLLABLE KIEXYI SYLLABLE KIEYI SYLLAB" + + "LE KIEPYI SYLLABLE KATYI SYLLABLE KAXYI SYLLABLE KAYI SYLLABLE KAPYI SYL" + + "LABLE KUOXYI SYLLABLE KUOYI SYLLABLE KUOPYI SYLLABLE KOTYI SYLLABLE KOXY" + + "I SYLLABLE KOYI SYLLABLE KOPYI SYLLABLE KETYI SYLLABLE KEXYI SYLLABLE KE" + + "YI SYLLABLE KEPYI SYLLABLE KUTYI SYLLABLE KUXYI SYLLABLE KUYI SYLLABLE K" + + "UPYI SYLLABLE KURXYI SYLLABLE KURYI SYLLABLE GGITYI SYLLABLE GGIXYI SYLL" + + "ABLE GGIYI SYLLABLE GGIEXYI SYLLABLE GGIEYI SYLLABLE GGIEPYI SYLLABLE GG" + + "ATYI SYLLABLE GGAXYI SYLLABLE GGAYI SYLLABLE GGAPYI SYLLABLE GGUOTYI SYL" + + "LABLE GGUOXYI SYLLABLE GGUOYI SYLLABLE GGUOPYI SYLLABLE GGOTYI SYLLABLE " + + "GGOXYI SYLLABLE GGOYI SYLLABLE GGOPYI SYLLABLE GGETYI SYLLABLE GGEXYI SY" + + "LLABLE GGEYI SYLLABLE GGEPYI SYLLABLE GGUTYI SYLLABLE GGUXYI SYLLABLE GG" + + "UYI SYLLABLE GGUPYI SYLLABLE GGURXYI SYLLABLE GGURYI SYLLABLE MGIEXYI SY" + + "LLABLE MGIEYI SYLLABLE MGATYI SYLLABLE MGAXYI SYLLABLE MGAYI SYLLABLE MG" + + "APYI SYLLABLE MGUOXYI SYLLABLE MGUOYI SYLLABLE MGUOPYI SYLLABLE MGOTYI S" + + "YLLABLE MGOXYI SYLLABLE MGOYI SYLLABLE MGOPYI SYLLABLE MGEXYI SYLLABLE M" + + "GEYI SYLLABLE MGEPYI SYLLABLE MGUTYI SYLLABLE MGUXYI SYLLABLE MGUYI SYLL" + + "ABLE MGUPYI SYLLABLE MGURXYI SYLLABLE MGURYI SYLLABLE HXITYI SYLLABLE HX" + + "IXYI SYLLABLE HXIYI SYLLABLE HXIPYI SYLLABLE HXIETYI SYLLABLE HXIEXYI SY" + + "LLABLE HXIEYI SYLLABLE HXIEPYI SYLLABLE HXATYI SYLLABLE HXAXYI SYLLABLE " + + "HXAYI SYLLABLE HXAPYI SYLLABLE HXUOTYI SYLLABLE HXUOXYI SYLLABLE HXUOYI " + + "SYLLABLE HXUOPYI SYLLABLE HXOTYI SYLLABLE HXOXYI SYLLABLE HXOYI SYLLABLE" + + " HXOPYI SYLLABLE HXEXYI SYLLABLE HXEYI SYLLABLE HXEPYI SYLLABLE NGIEXYI " + + "SYLLABLE NGIEYI SYLLABLE NGIEPYI SYLLABLE NGATYI SYLLABLE NGAXYI SYLLABL" + + "E NGAYI SYLLABLE NGAPYI SYLLABLE NGUOTYI SYLLABLE NGUOXYI SYLLABLE NGUOY" + + "I SYLLABLE NGOTYI SYLLABLE NGOXYI SYLLABLE NGOYI SYLLABLE NGOPYI SYLLABL" + + "E NGEXYI SYLLABLE NGEYI SYLLABLE NGEPYI SYLLABLE HITYI SYLLABLE HIEXYI S" + + "YLLABLE HIEYI SYLLABLE HATYI SYLLABLE HAXYI SYLLABLE HAYI SYLLABLE HAPYI" + + " SYLLABLE HUOTYI SYLLABLE HUOXYI SYLLABLE HUOYI SYLLABLE HUOPYI SYLLABLE" + + " HOTYI SYLLABLE HOXYI SYLLABLE HOYI SYLLABLE HOPYI SYLLABLE HEXYI SYLLAB" + + "LE HEYI SYLLABLE HEPYI SYLLABLE WATYI SYLLABLE WAXYI SYLLABLE WAYI SYLLA" + + "BLE WAPYI SYLLABLE WUOXYI SYLLABLE WUOYI SYLLABLE WUOPYI SYLLABLE WOXYI " + + "SYLLABLE WOYI SYLLABLE WOPYI SYLLABLE WEXYI SYLLABLE WEYI SYLLABLE WEPYI" + + " SYLLABLE ZITYI SYLLABLE ZIXYI SYLLABLE ZIYI SYLLABLE ZIPYI SYLLABLE ZIE" + + "XYI SYLLABLE ZIEYI SYLLABLE ZIEPYI SYLLABLE ZATYI SYLLABLE ZAXYI SYLLABL" + + "E ZAYI SYLLABLE ZAPYI SYLLABLE ZUOXYI SYLLABLE ZUOYI SYLLABLE ZUOPYI SYL" + + "LABLE ZOTYI SYLLABLE ZOXYI SYLLABLE ZOYI SYLLABLE ZOPYI SYLLABLE ZEXYI S" + + "YLLABLE ZEYI SYLLABLE ZEPYI SYLLABLE ZUTYI SYLLABLE ZUXYI SYLLABLE ZUYI " + + "SYLLABLE ZUPYI SYLLABLE ZURXYI SYLLABLE ZURYI SYLLABLE ZYTYI SYLLABLE ZY" + + "XYI SYLLABLE ZYYI SYLLABLE ZYPYI SYLLABLE ZYRXYI SYLLABLE ZYRYI SYLLABLE" + + " CITYI SYLLABLE CIXYI SYLLABLE CIYI SYLLABLE CIPYI SYLLABLE CIETYI SYLLA" + + "BLE CIEXYI SYLLABLE CIEYI SYLLABLE CIEPYI SYLLABLE CATYI SYLLABLE CAXYI " + + "SYLLABLE CAYI SYLLABLE CAPYI SYLLABLE CUOXYI SYLLABLE CUOYI SYLLABLE CUO") + ("" + + "PYI SYLLABLE COTYI SYLLABLE COXYI SYLLABLE COYI SYLLABLE COPYI SYLLABLE " + + "CEXYI SYLLABLE CEYI SYLLABLE CEPYI SYLLABLE CUTYI SYLLABLE CUXYI SYLLABL" + + "E CUYI SYLLABLE CUPYI SYLLABLE CURXYI SYLLABLE CURYI SYLLABLE CYTYI SYLL" + + "ABLE CYXYI SYLLABLE CYYI SYLLABLE CYPYI SYLLABLE CYRXYI SYLLABLE CYRYI S" + + "YLLABLE ZZITYI SYLLABLE ZZIXYI SYLLABLE ZZIYI SYLLABLE ZZIPYI SYLLABLE Z" + + "ZIETYI SYLLABLE ZZIEXYI SYLLABLE ZZIEYI SYLLABLE ZZIEPYI SYLLABLE ZZATYI" + + " SYLLABLE ZZAXYI SYLLABLE ZZAYI SYLLABLE ZZAPYI SYLLABLE ZZOXYI SYLLABLE" + + " ZZOYI SYLLABLE ZZOPYI SYLLABLE ZZEXYI SYLLABLE ZZEYI SYLLABLE ZZEPYI SY" + + "LLABLE ZZUXYI SYLLABLE ZZUYI SYLLABLE ZZUPYI SYLLABLE ZZURXYI SYLLABLE Z" + + "ZURYI SYLLABLE ZZYTYI SYLLABLE ZZYXYI SYLLABLE ZZYYI SYLLABLE ZZYPYI SYL" + + "LABLE ZZYRXYI SYLLABLE ZZYRYI SYLLABLE NZITYI SYLLABLE NZIXYI SYLLABLE N" + + "ZIYI SYLLABLE NZIPYI SYLLABLE NZIEXYI SYLLABLE NZIEYI SYLLABLE NZIEPYI S" + + "YLLABLE NZATYI SYLLABLE NZAXYI SYLLABLE NZAYI SYLLABLE NZAPYI SYLLABLE N" + + "ZUOXYI SYLLABLE NZUOYI SYLLABLE NZOXYI SYLLABLE NZOPYI SYLLABLE NZEXYI S" + + "YLLABLE NZEYI SYLLABLE NZUXYI SYLLABLE NZUYI SYLLABLE NZUPYI SYLLABLE NZ" + + "URXYI SYLLABLE NZURYI SYLLABLE NZYTYI SYLLABLE NZYXYI SYLLABLE NZYYI SYL" + + "LABLE NZYPYI SYLLABLE NZYRXYI SYLLABLE NZYRYI SYLLABLE SITYI SYLLABLE SI" + + "XYI SYLLABLE SIYI SYLLABLE SIPYI SYLLABLE SIEXYI SYLLABLE SIEYI SYLLABLE" + + " SIEPYI SYLLABLE SATYI SYLLABLE SAXYI SYLLABLE SAYI SYLLABLE SAPYI SYLLA" + + "BLE SUOXYI SYLLABLE SUOYI SYLLABLE SUOPYI SYLLABLE SOTYI SYLLABLE SOXYI " + + "SYLLABLE SOYI SYLLABLE SOPYI SYLLABLE SEXYI SYLLABLE SEYI SYLLABLE SEPYI" + + " SYLLABLE SUTYI SYLLABLE SUXYI SYLLABLE SUYI SYLLABLE SUPYI SYLLABLE SUR" + + "XYI SYLLABLE SURYI SYLLABLE SYTYI SYLLABLE SYXYI SYLLABLE SYYI SYLLABLE " + + "SYPYI SYLLABLE SYRXYI SYLLABLE SYRYI SYLLABLE SSITYI SYLLABLE SSIXYI SYL" + + "LABLE SSIYI SYLLABLE SSIPYI SYLLABLE SSIEXYI SYLLABLE SSIEYI SYLLABLE SS" + + "IEPYI SYLLABLE SSATYI SYLLABLE SSAXYI SYLLABLE SSAYI SYLLABLE SSAPYI SYL" + + "LABLE SSOTYI SYLLABLE SSOXYI SYLLABLE SSOYI SYLLABLE SSOPYI SYLLABLE SSE" + + "XYI SYLLABLE SSEYI SYLLABLE SSEPYI SYLLABLE SSUTYI SYLLABLE SSUXYI SYLLA" + + "BLE SSUYI SYLLABLE SSUPYI SYLLABLE SSYTYI SYLLABLE SSYXYI SYLLABLE SSYYI" + + " SYLLABLE SSYPYI SYLLABLE SSYRXYI SYLLABLE SSYRYI SYLLABLE ZHATYI SYLLAB" + + "LE ZHAXYI SYLLABLE ZHAYI SYLLABLE ZHAPYI SYLLABLE ZHUOXYI SYLLABLE ZHUOY" + + "I SYLLABLE ZHUOPYI SYLLABLE ZHOTYI SYLLABLE ZHOXYI SYLLABLE ZHOYI SYLLAB" + + "LE ZHOPYI SYLLABLE ZHETYI SYLLABLE ZHEXYI SYLLABLE ZHEYI SYLLABLE ZHEPYI" + + " SYLLABLE ZHUTYI SYLLABLE ZHUXYI SYLLABLE ZHUYI SYLLABLE ZHUPYI SYLLABLE" + + " ZHURXYI SYLLABLE ZHURYI SYLLABLE ZHYTYI SYLLABLE ZHYXYI SYLLABLE ZHYYI " + + "SYLLABLE ZHYPYI SYLLABLE ZHYRXYI SYLLABLE ZHYRYI SYLLABLE CHATYI SYLLABL" + + "E CHAXYI SYLLABLE CHAYI SYLLABLE CHAPYI SYLLABLE CHUOTYI SYLLABLE CHUOXY" + + "I SYLLABLE CHUOYI SYLLABLE CHUOPYI SYLLABLE CHOTYI SYLLABLE CHOXYI SYLLA" + + "BLE CHOYI SYLLABLE CHOPYI SYLLABLE CHETYI SYLLABLE CHEXYI SYLLABLE CHEYI" + + " SYLLABLE CHEPYI SYLLABLE CHUXYI SYLLABLE CHUYI SYLLABLE CHUPYI SYLLABLE" + + " CHURXYI SYLLABLE CHURYI SYLLABLE CHYTYI SYLLABLE CHYXYI SYLLABLE CHYYI " + + "SYLLABLE CHYPYI SYLLABLE CHYRXYI SYLLABLE CHYRYI SYLLABLE RRAXYI SYLLABL" + + "E RRAYI SYLLABLE RRUOXYI SYLLABLE RRUOYI SYLLABLE RROTYI SYLLABLE RROXYI" + + " SYLLABLE RROYI SYLLABLE RROPYI SYLLABLE RRETYI SYLLABLE RREXYI SYLLABLE" + + " RREYI SYLLABLE RREPYI SYLLABLE RRUTYI SYLLABLE RRUXYI SYLLABLE RRUYI SY" + + "LLABLE RRUPYI SYLLABLE RRURXYI SYLLABLE RRURYI SYLLABLE RRYTYI SYLLABLE " + + "RRYXYI SYLLABLE RRYYI SYLLABLE RRYPYI SYLLABLE RRYRXYI SYLLABLE RRYRYI S" + + "YLLABLE NRATYI SYLLABLE NRAXYI SYLLABLE NRAYI SYLLABLE NRAPYI SYLLABLE N" + + "ROXYI SYLLABLE NROYI SYLLABLE NROPYI SYLLABLE NRETYI SYLLABLE NREXYI SYL" + + "LABLE NREYI SYLLABLE NREPYI SYLLABLE NRUTYI SYLLABLE NRUXYI SYLLABLE NRU" + + "YI SYLLABLE NRUPYI SYLLABLE NRURXYI SYLLABLE NRURYI SYLLABLE NRYTYI SYLL" + + "ABLE NRYXYI SYLLABLE NRYYI SYLLABLE NRYPYI SYLLABLE NRYRXYI SYLLABLE NRY" + + "RYI SYLLABLE SHATYI SYLLABLE SHAXYI SYLLABLE SHAYI SYLLABLE SHAPYI SYLLA" + + "BLE SHUOXYI SYLLABLE SHUOYI SYLLABLE SHUOPYI SYLLABLE SHOTYI SYLLABLE SH" + + "OXYI SYLLABLE SHOYI SYLLABLE SHOPYI SYLLABLE SHETYI SYLLABLE SHEXYI SYLL" + + "ABLE SHEYI SYLLABLE SHEPYI SYLLABLE SHUTYI SYLLABLE SHUXYI SYLLABLE SHUY" + + "I SYLLABLE SHUPYI SYLLABLE SHURXYI SYLLABLE SHURYI SYLLABLE SHYTYI SYLLA" + + "BLE SHYXYI SYLLABLE SHYYI SYLLABLE SHYPYI SYLLABLE SHYRXYI SYLLABLE SHYR" + + "YI SYLLABLE RATYI SYLLABLE RAXYI SYLLABLE RAYI SYLLABLE RAPYI SYLLABLE R" + + "UOXYI SYLLABLE RUOYI SYLLABLE RUOPYI SYLLABLE ROTYI SYLLABLE ROXYI SYLLA" + + "BLE ROYI SYLLABLE ROPYI SYLLABLE REXYI SYLLABLE REYI SYLLABLE REPYI SYLL" + + "ABLE RUTYI SYLLABLE RUXYI SYLLABLE RUYI SYLLABLE RUPYI SYLLABLE RURXYI S" + + "YLLABLE RURYI SYLLABLE RYTYI SYLLABLE RYXYI SYLLABLE RYYI SYLLABLE RYPYI" + + " SYLLABLE RYRXYI SYLLABLE RYRYI SYLLABLE JITYI SYLLABLE JIXYI SYLLABLE J") + ("" + + "IYI SYLLABLE JIPYI SYLLABLE JIETYI SYLLABLE JIEXYI SYLLABLE JIEYI SYLLAB" + + "LE JIEPYI SYLLABLE JUOTYI SYLLABLE JUOXYI SYLLABLE JUOYI SYLLABLE JUOPYI" + + " SYLLABLE JOTYI SYLLABLE JOXYI SYLLABLE JOYI SYLLABLE JOPYI SYLLABLE JUT" + + "YI SYLLABLE JUXYI SYLLABLE JUYI SYLLABLE JUPYI SYLLABLE JURXYI SYLLABLE " + + "JURYI SYLLABLE JYTYI SYLLABLE JYXYI SYLLABLE JYYI SYLLABLE JYPYI SYLLABL" + + "E JYRXYI SYLLABLE JYRYI SYLLABLE QITYI SYLLABLE QIXYI SYLLABLE QIYI SYLL" + + "ABLE QIPYI SYLLABLE QIETYI SYLLABLE QIEXYI SYLLABLE QIEYI SYLLABLE QIEPY" + + "I SYLLABLE QUOTYI SYLLABLE QUOXYI SYLLABLE QUOYI SYLLABLE QUOPYI SYLLABL" + + "E QOTYI SYLLABLE QOXYI SYLLABLE QOYI SYLLABLE QOPYI SYLLABLE QUTYI SYLLA" + + "BLE QUXYI SYLLABLE QUYI SYLLABLE QUPYI SYLLABLE QURXYI SYLLABLE QURYI SY" + + "LLABLE QYTYI SYLLABLE QYXYI SYLLABLE QYYI SYLLABLE QYPYI SYLLABLE QYRXYI" + + " SYLLABLE QYRYI SYLLABLE JJITYI SYLLABLE JJIXYI SYLLABLE JJIYI SYLLABLE " + + "JJIPYI SYLLABLE JJIETYI SYLLABLE JJIEXYI SYLLABLE JJIEYI SYLLABLE JJIEPY" + + "I SYLLABLE JJUOXYI SYLLABLE JJUOYI SYLLABLE JJUOPYI SYLLABLE JJOTYI SYLL" + + "ABLE JJOXYI SYLLABLE JJOYI SYLLABLE JJOPYI SYLLABLE JJUTYI SYLLABLE JJUX" + + "YI SYLLABLE JJUYI SYLLABLE JJUPYI SYLLABLE JJURXYI SYLLABLE JJURYI SYLLA" + + "BLE JJYTYI SYLLABLE JJYXYI SYLLABLE JJYYI SYLLABLE JJYPYI SYLLABLE NJITY" + + "I SYLLABLE NJIXYI SYLLABLE NJIYI SYLLABLE NJIPYI SYLLABLE NJIETYI SYLLAB" + + "LE NJIEXYI SYLLABLE NJIEYI SYLLABLE NJIEPYI SYLLABLE NJUOXYI SYLLABLE NJ" + + "UOYI SYLLABLE NJOTYI SYLLABLE NJOXYI SYLLABLE NJOYI SYLLABLE NJOPYI SYLL" + + "ABLE NJUXYI SYLLABLE NJUYI SYLLABLE NJUPYI SYLLABLE NJURXYI SYLLABLE NJU" + + "RYI SYLLABLE NJYTYI SYLLABLE NJYXYI SYLLABLE NJYYI SYLLABLE NJYPYI SYLLA" + + "BLE NJYRXYI SYLLABLE NJYRYI SYLLABLE NYITYI SYLLABLE NYIXYI SYLLABLE NYI" + + "YI SYLLABLE NYIPYI SYLLABLE NYIETYI SYLLABLE NYIEXYI SYLLABLE NYIEYI SYL" + + "LABLE NYIEPYI SYLLABLE NYUOXYI SYLLABLE NYUOYI SYLLABLE NYUOPYI SYLLABLE" + + " NYOTYI SYLLABLE NYOXYI SYLLABLE NYOYI SYLLABLE NYOPYI SYLLABLE NYUTYI S" + + "YLLABLE NYUXYI SYLLABLE NYUYI SYLLABLE NYUPYI SYLLABLE XITYI SYLLABLE XI" + + "XYI SYLLABLE XIYI SYLLABLE XIPYI SYLLABLE XIETYI SYLLABLE XIEXYI SYLLABL" + + "E XIEYI SYLLABLE XIEPYI SYLLABLE XUOXYI SYLLABLE XUOYI SYLLABLE XOTYI SY" + + "LLABLE XOXYI SYLLABLE XOYI SYLLABLE XOPYI SYLLABLE XYTYI SYLLABLE XYXYI " + + "SYLLABLE XYYI SYLLABLE XYPYI SYLLABLE XYRXYI SYLLABLE XYRYI SYLLABLE YIT" + + "YI SYLLABLE YIXYI SYLLABLE YIYI SYLLABLE YIPYI SYLLABLE YIETYI SYLLABLE " + + "YIEXYI SYLLABLE YIEYI SYLLABLE YIEPYI SYLLABLE YUOTYI SYLLABLE YUOXYI SY" + + "LLABLE YUOYI SYLLABLE YUOPYI SYLLABLE YOTYI SYLLABLE YOXYI SYLLABLE YOYI" + + " SYLLABLE YOPYI SYLLABLE YUTYI SYLLABLE YUXYI SYLLABLE YUYI SYLLABLE YUP" + + "YI SYLLABLE YURXYI SYLLABLE YURYI SYLLABLE YYTYI SYLLABLE YYXYI SYLLABLE" + + " YYYI SYLLABLE YYPYI SYLLABLE YYRXYI SYLLABLE YYRYI RADICAL QOTYI RADICA" + + "L LIYI RADICAL KITYI RADICAL NYIPYI RADICAL CYPYI RADICAL SSIYI RADICAL " + + "GGOPYI RADICAL GEPYI RADICAL MIYI RADICAL HXITYI RADICAL LYRYI RADICAL B" + + "BUTYI RADICAL MOPYI RADICAL YOYI RADICAL PUTYI RADICAL HXUOYI RADICAL TA" + + "TYI RADICAL GAYI RADICAL ZUPYI RADICAL CYTYI RADICAL DDURYI RADICAL BURY" + + "I RADICAL GGUOYI RADICAL NYOPYI RADICAL TUYI RADICAL OPYI RADICAL JJUTYI" + + " RADICAL ZOTYI RADICAL PYTYI RADICAL HMOYI RADICAL YITYI RADICAL VURYI R" + + "ADICAL SHYYI RADICAL VEPYI RADICAL ZAYI RADICAL JOYI RADICAL NZUPYI RADI" + + "CAL JJYYI RADICAL GOTYI RADICAL JJIEYI RADICAL WOYI RADICAL DUYI RADICAL" + + " SHURYI RADICAL LIEYI RADICAL CYYI RADICAL CUOPYI RADICAL CIPYI RADICAL " + + "HXOPYI RADICAL SHATYI RADICAL ZURYI RADICAL SHOPYI RADICAL CHEYI RADICAL" + + " ZZIETYI RADICAL NBIEYI RADICAL KELISU LETTER BALISU LETTER PALISU LETTE" + + "R PHALISU LETTER DALISU LETTER TALISU LETTER THALISU LETTER GALISU LETTE" + + "R KALISU LETTER KHALISU LETTER JALISU LETTER CALISU LETTER CHALISU LETTE" + + "R DZALISU LETTER TSALISU LETTER TSHALISU LETTER MALISU LETTER NALISU LET" + + "TER LALISU LETTER SALISU LETTER ZHALISU LETTER ZALISU LETTER NGALISU LET" + + "TER HALISU LETTER XALISU LETTER HHALISU LETTER FALISU LETTER WALISU LETT" + + "ER SHALISU LETTER YALISU LETTER GHALISU LETTER ALISU LETTER AELISU LETTE" + + "R ELISU LETTER EULISU LETTER ILISU LETTER OLISU LETTER ULISU LETTER UELI" + + "SU LETTER UHLISU LETTER OELISU LETTER TONE MYA TILISU LETTER TONE NA POL" + + "ISU LETTER TONE MYA CYALISU LETTER TONE MYA BOLISU LETTER TONE MYA NALIS" + + "U LETTER TONE MYA JEULISU PUNCTUATION COMMALISU PUNCTUATION FULL STOPVAI" + + " SYLLABLE EEVAI SYLLABLE EENVAI SYLLABLE HEEVAI SYLLABLE WEEVAI SYLLABLE" + + " WEENVAI SYLLABLE PEEVAI SYLLABLE BHEEVAI SYLLABLE BEEVAI SYLLABLE MBEEV" + + "AI SYLLABLE KPEEVAI SYLLABLE MGBEEVAI SYLLABLE GBEEVAI SYLLABLE FEEVAI S" + + "YLLABLE VEEVAI SYLLABLE TEEVAI SYLLABLE THEEVAI SYLLABLE DHEEVAI SYLLABL" + + "E DHHEEVAI SYLLABLE LEEVAI SYLLABLE REEVAI SYLLABLE DEEVAI SYLLABLE NDEE" + + "VAI SYLLABLE SEEVAI SYLLABLE SHEEVAI SYLLABLE ZEEVAI SYLLABLE ZHEEVAI SY") + ("" + + "LLABLE CEEVAI SYLLABLE JEEVAI SYLLABLE NJEEVAI SYLLABLE YEEVAI SYLLABLE " + + "KEEVAI SYLLABLE NGGEEVAI SYLLABLE GEEVAI SYLLABLE MEEVAI SYLLABLE NEEVAI" + + " SYLLABLE NYEEVAI SYLLABLE IVAI SYLLABLE INVAI SYLLABLE HIVAI SYLLABLE H" + + "INVAI SYLLABLE WIVAI SYLLABLE WINVAI SYLLABLE PIVAI SYLLABLE BHIVAI SYLL" + + "ABLE BIVAI SYLLABLE MBIVAI SYLLABLE KPIVAI SYLLABLE MGBIVAI SYLLABLE GBI" + + "VAI SYLLABLE FIVAI SYLLABLE VIVAI SYLLABLE TIVAI SYLLABLE THIVAI SYLLABL" + + "E DHIVAI SYLLABLE DHHIVAI SYLLABLE LIVAI SYLLABLE RIVAI SYLLABLE DIVAI S" + + "YLLABLE NDIVAI SYLLABLE SIVAI SYLLABLE SHIVAI SYLLABLE ZIVAI SYLLABLE ZH" + + "IVAI SYLLABLE CIVAI SYLLABLE JIVAI SYLLABLE NJIVAI SYLLABLE YIVAI SYLLAB" + + "LE KIVAI SYLLABLE NGGIVAI SYLLABLE GIVAI SYLLABLE MIVAI SYLLABLE NIVAI S" + + "YLLABLE NYIVAI SYLLABLE AVAI SYLLABLE ANVAI SYLLABLE NGANVAI SYLLABLE HA" + + "VAI SYLLABLE HANVAI SYLLABLE WAVAI SYLLABLE WANVAI SYLLABLE PAVAI SYLLAB" + + "LE BHAVAI SYLLABLE BAVAI SYLLABLE MBAVAI SYLLABLE KPAVAI SYLLABLE KPANVA" + + "I SYLLABLE MGBAVAI SYLLABLE GBAVAI SYLLABLE FAVAI SYLLABLE VAVAI SYLLABL" + + "E TAVAI SYLLABLE THAVAI SYLLABLE DHAVAI SYLLABLE DHHAVAI SYLLABLE LAVAI " + + "SYLLABLE RAVAI SYLLABLE DAVAI SYLLABLE NDAVAI SYLLABLE SAVAI SYLLABLE SH" + + "AVAI SYLLABLE ZAVAI SYLLABLE ZHAVAI SYLLABLE CAVAI SYLLABLE JAVAI SYLLAB" + + "LE NJAVAI SYLLABLE YAVAI SYLLABLE KAVAI SYLLABLE KANVAI SYLLABLE NGGAVAI" + + " SYLLABLE GAVAI SYLLABLE MAVAI SYLLABLE NAVAI SYLLABLE NYAVAI SYLLABLE O" + + "OVAI SYLLABLE OONVAI SYLLABLE HOOVAI SYLLABLE WOOVAI SYLLABLE WOONVAI SY" + + "LLABLE POOVAI SYLLABLE BHOOVAI SYLLABLE BOOVAI SYLLABLE MBOOVAI SYLLABLE" + + " KPOOVAI SYLLABLE MGBOOVAI SYLLABLE GBOOVAI SYLLABLE FOOVAI SYLLABLE VOO" + + "VAI SYLLABLE TOOVAI SYLLABLE THOOVAI SYLLABLE DHOOVAI SYLLABLE DHHOOVAI " + + "SYLLABLE LOOVAI SYLLABLE ROOVAI SYLLABLE DOOVAI SYLLABLE NDOOVAI SYLLABL" + + "E SOOVAI SYLLABLE SHOOVAI SYLLABLE ZOOVAI SYLLABLE ZHOOVAI SYLLABLE COOV" + + "AI SYLLABLE JOOVAI SYLLABLE NJOOVAI SYLLABLE YOOVAI SYLLABLE KOOVAI SYLL" + + "ABLE NGGOOVAI SYLLABLE GOOVAI SYLLABLE MOOVAI SYLLABLE NOOVAI SYLLABLE N" + + "YOOVAI SYLLABLE UVAI SYLLABLE UNVAI SYLLABLE HUVAI SYLLABLE HUNVAI SYLLA" + + "BLE WUVAI SYLLABLE WUNVAI SYLLABLE PUVAI SYLLABLE BHUVAI SYLLABLE BUVAI " + + "SYLLABLE MBUVAI SYLLABLE KPUVAI SYLLABLE MGBUVAI SYLLABLE GBUVAI SYLLABL" + + "E FUVAI SYLLABLE VUVAI SYLLABLE TUVAI SYLLABLE THUVAI SYLLABLE DHUVAI SY" + + "LLABLE DHHUVAI SYLLABLE LUVAI SYLLABLE RUVAI SYLLABLE DUVAI SYLLABLE NDU" + + "VAI SYLLABLE SUVAI SYLLABLE SHUVAI SYLLABLE ZUVAI SYLLABLE ZHUVAI SYLLAB" + + "LE CUVAI SYLLABLE JUVAI SYLLABLE NJUVAI SYLLABLE YUVAI SYLLABLE KUVAI SY" + + "LLABLE NGGUVAI SYLLABLE GUVAI SYLLABLE MUVAI SYLLABLE NUVAI SYLLABLE NYU" + + "VAI SYLLABLE OVAI SYLLABLE ONVAI SYLLABLE NGONVAI SYLLABLE HOVAI SYLLABL" + + "E HONVAI SYLLABLE WOVAI SYLLABLE WONVAI SYLLABLE POVAI SYLLABLE BHOVAI S" + + "YLLABLE BOVAI SYLLABLE MBOVAI SYLLABLE KPOVAI SYLLABLE MGBOVAI SYLLABLE " + + "GBOVAI SYLLABLE GBONVAI SYLLABLE FOVAI SYLLABLE VOVAI SYLLABLE TOVAI SYL" + + "LABLE THOVAI SYLLABLE DHOVAI SYLLABLE DHHOVAI SYLLABLE LOVAI SYLLABLE RO" + + "VAI SYLLABLE DOVAI SYLLABLE NDOVAI SYLLABLE SOVAI SYLLABLE SHOVAI SYLLAB" + + "LE ZOVAI SYLLABLE ZHOVAI SYLLABLE COVAI SYLLABLE JOVAI SYLLABLE NJOVAI S" + + "YLLABLE YOVAI SYLLABLE KOVAI SYLLABLE NGGOVAI SYLLABLE GOVAI SYLLABLE MO" + + "VAI SYLLABLE NOVAI SYLLABLE NYOVAI SYLLABLE EVAI SYLLABLE ENVAI SYLLABLE" + + " NGENVAI SYLLABLE HEVAI SYLLABLE HENVAI SYLLABLE WEVAI SYLLABLE WENVAI S" + + "YLLABLE PEVAI SYLLABLE BHEVAI SYLLABLE BEVAI SYLLABLE MBEVAI SYLLABLE KP" + + "EVAI SYLLABLE KPENVAI SYLLABLE MGBEVAI SYLLABLE GBEVAI SYLLABLE GBENVAI " + + "SYLLABLE FEVAI SYLLABLE VEVAI SYLLABLE TEVAI SYLLABLE THEVAI SYLLABLE DH" + + "EVAI SYLLABLE DHHEVAI SYLLABLE LEVAI SYLLABLE REVAI SYLLABLE DEVAI SYLLA" + + "BLE NDEVAI SYLLABLE SEVAI SYLLABLE SHEVAI SYLLABLE ZEVAI SYLLABLE ZHEVAI" + + " SYLLABLE CEVAI SYLLABLE JEVAI SYLLABLE NJEVAI SYLLABLE YEVAI SYLLABLE K" + + "EVAI SYLLABLE NGGEVAI SYLLABLE NGGENVAI SYLLABLE GEVAI SYLLABLE GENVAI S" + + "YLLABLE MEVAI SYLLABLE NEVAI SYLLABLE NYEVAI SYLLABLE NGVAI SYLLABLE LEN" + + "GTHENERVAI COMMAVAI FULL STOPVAI QUESTION MARKVAI SYLLABLE NDOLE FAVAI S" + + "YLLABLE NDOLE KAVAI SYLLABLE NDOLE SOOVAI SYMBOL FEENGVAI SYMBOL KEENGVA" + + "I SYMBOL TINGVAI SYMBOL NIIVAI SYMBOL BANGVAI SYMBOL FAAVAI SYMBOL TAAVA" + + "I SYMBOL DANGVAI SYMBOL DOONGVAI SYMBOL KUNGVAI SYMBOL TONGVAI SYMBOL DO" + + "-OVAI SYMBOL JONGVAI DIGIT ZEROVAI DIGIT ONEVAI DIGIT TWOVAI DIGIT THREE" + + "VAI DIGIT FOURVAI DIGIT FIVEVAI DIGIT SIXVAI DIGIT SEVENVAI DIGIT EIGHTV" + + "AI DIGIT NINEVAI SYLLABLE NDOLE MAVAI SYLLABLE NDOLE DOCYRILLIC CAPITAL " + + "LETTER ZEMLYACYRILLIC SMALL LETTER ZEMLYACYRILLIC CAPITAL LETTER DZELOCY" + + "RILLIC SMALL LETTER DZELOCYRILLIC CAPITAL LETTER REVERSED DZECYRILLIC SM" + + "ALL LETTER REVERSED DZECYRILLIC CAPITAL LETTER IOTACYRILLIC SMALL LETTER" + + " IOTACYRILLIC CAPITAL LETTER DJERVCYRILLIC SMALL LETTER DJERVCYRILLIC CA") + ("" + + "PITAL LETTER MONOGRAPH UKCYRILLIC SMALL LETTER MONOGRAPH UKCYRILLIC CAPI" + + "TAL LETTER BROAD OMEGACYRILLIC SMALL LETTER BROAD OMEGACYRILLIC CAPITAL " + + "LETTER NEUTRAL YERCYRILLIC SMALL LETTER NEUTRAL YERCYRILLIC CAPITAL LETT" + + "ER YERU WITH BACK YERCYRILLIC SMALL LETTER YERU WITH BACK YERCYRILLIC CA" + + "PITAL LETTER IOTIFIED YATCYRILLIC SMALL LETTER IOTIFIED YATCYRILLIC CAPI" + + "TAL LETTER REVERSED YUCYRILLIC SMALL LETTER REVERSED YUCYRILLIC CAPITAL " + + "LETTER IOTIFIED ACYRILLIC SMALL LETTER IOTIFIED ACYRILLIC CAPITAL LETTER" + + " CLOSED LITTLE YUSCYRILLIC SMALL LETTER CLOSED LITTLE YUSCYRILLIC CAPITA" + + "L LETTER BLENDED YUSCYRILLIC SMALL LETTER BLENDED YUSCYRILLIC CAPITAL LE" + + "TTER IOTIFIED CLOSED LITTLE YUSCYRILLIC SMALL LETTER IOTIFIED CLOSED LIT" + + "TLE YUSCYRILLIC CAPITAL LETTER YNCYRILLIC SMALL LETTER YNCYRILLIC CAPITA" + + "L LETTER REVERSED TSECYRILLIC SMALL LETTER REVERSED TSECYRILLIC CAPITAL " + + "LETTER SOFT DECYRILLIC SMALL LETTER SOFT DECYRILLIC CAPITAL LETTER SOFT " + + "ELCYRILLIC SMALL LETTER SOFT ELCYRILLIC CAPITAL LETTER SOFT EMCYRILLIC S" + + "MALL LETTER SOFT EMCYRILLIC CAPITAL LETTER MONOCULAR OCYRILLIC SMALL LET" + + "TER MONOCULAR OCYRILLIC CAPITAL LETTER BINOCULAR OCYRILLIC SMALL LETTER " + + "BINOCULAR OCYRILLIC CAPITAL LETTER DOUBLE MONOCULAR OCYRILLIC SMALL LETT" + + "ER DOUBLE MONOCULAR OCYRILLIC LETTER MULTIOCULAR OCOMBINING CYRILLIC VZM" + + "ETCOMBINING CYRILLIC TEN MILLIONS SIGNCOMBINING CYRILLIC HUNDRED MILLION" + + "S SIGNCOMBINING CYRILLIC THOUSAND MILLIONS SIGNSLAVONIC ASTERISKCOMBININ" + + "G CYRILLIC LETTER UKRAINIAN IECOMBINING CYRILLIC LETTER ICOMBINING CYRIL" + + "LIC LETTER YICOMBINING CYRILLIC LETTER UCOMBINING CYRILLIC LETTER HARD S" + + "IGNCOMBINING CYRILLIC LETTER YERUCOMBINING CYRILLIC LETTER SOFT SIGNCOMB" + + "INING CYRILLIC LETTER OMEGACOMBINING CYRILLIC KAVYKACOMBINING CYRILLIC P" + + "AYEROKCYRILLIC KAVYKACYRILLIC PAYEROKCYRILLIC CAPITAL LETTER DWECYRILLIC" + + " SMALL LETTER DWECYRILLIC CAPITAL LETTER DZWECYRILLIC SMALL LETTER DZWEC" + + "YRILLIC CAPITAL LETTER ZHWECYRILLIC SMALL LETTER ZHWECYRILLIC CAPITAL LE" + + "TTER CCHECYRILLIC SMALL LETTER CCHECYRILLIC CAPITAL LETTER DZZECYRILLIC " + + "SMALL LETTER DZZECYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOKCYRILLIC SMA" + + "LL LETTER TE WITH MIDDLE HOOKCYRILLIC CAPITAL LETTER TWECYRILLIC SMALL L" + + "ETTER TWECYRILLIC CAPITAL LETTER TSWECYRILLIC SMALL LETTER TSWECYRILLIC " + + "CAPITAL LETTER TSSECYRILLIC SMALL LETTER TSSECYRILLIC CAPITAL LETTER TCH" + + "ECYRILLIC SMALL LETTER TCHECYRILLIC CAPITAL LETTER HWECYRILLIC SMALL LET" + + "TER HWECYRILLIC CAPITAL LETTER SHWECYRILLIC SMALL LETTER SHWECYRILLIC CA" + + "PITAL LETTER DOUBLE OCYRILLIC SMALL LETTER DOUBLE OCYRILLIC CAPITAL LETT" + + "ER CROSSED OCYRILLIC SMALL LETTER CROSSED OMODIFIER LETTER CYRILLIC HARD" + + " SIGNMODIFIER LETTER CYRILLIC SOFT SIGNCOMBINING CYRILLIC LETTER EFCOMBI" + + "NING CYRILLIC LETTER IOTIFIED EBAMUM LETTER ABAMUM LETTER KABAMUM LETTER" + + " UBAMUM LETTER KUBAMUM LETTER EEBAMUM LETTER REEBAMUM LETTER TAEBAMUM LE" + + "TTER OBAMUM LETTER NYIBAMUM LETTER IBAMUM LETTER LABAMUM LETTER PABAMUM " + + "LETTER RIIBAMUM LETTER RIEEBAMUM LETTER LEEEEBAMUM LETTER MEEEEBAMUM LET" + + "TER TAABAMUM LETTER NDAABAMUM LETTER NJAEMBAMUM LETTER MBAMUM LETTER SUU" + + "BAMUM LETTER MUBAMUM LETTER SHIIBAMUM LETTER SIBAMUM LETTER SHEUXBAMUM L" + + "ETTER SEUXBAMUM LETTER KYEEBAMUM LETTER KETBAMUM LETTER NUAEBAMUM LETTER" + + " NUBAMUM LETTER NJUAEBAMUM LETTER YOQBAMUM LETTER SHUBAMUM LETTER YUQBAM" + + "UM LETTER YABAMUM LETTER NSHABAMUM LETTER KEUXBAMUM LETTER PEUXBAMUM LET" + + "TER NJEEBAMUM LETTER NTEEBAMUM LETTER PUEBAMUM LETTER WUEBAMUM LETTER PE" + + "EBAMUM LETTER FEEBAMUM LETTER RUBAMUM LETTER LUBAMUM LETTER MIBAMUM LETT" + + "ER NIBAMUM LETTER REUXBAMUM LETTER RAEBAMUM LETTER KENBAMUM LETTER NGKWA" + + "ENBAMUM LETTER NGGABAMUM LETTER NGABAMUM LETTER SHOBAMUM LETTER PUAEBAMU" + + "M LETTER FUBAMUM LETTER FOMBAMUM LETTER WABAMUM LETTER NABAMUM LETTER LI" + + "BAMUM LETTER PIBAMUM LETTER LOQBAMUM LETTER KOBAMUM LETTER MBENBAMUM LET" + + "TER RENBAMUM LETTER MENBAMUM LETTER MABAMUM LETTER TIBAMUM LETTER KIBAMU" + + "M LETTER MOBAMUM LETTER MBAABAMUM LETTER TETBAMUM LETTER KPABAMUM LETTER" + + " TENBAMUM LETTER NTUUBAMUM LETTER SAMBABAMUM LETTER FAAMAEBAMUM LETTER K" + + "OVUUBAMUM LETTER KOGHOMBAMUM COMBINING MARK KOQNDONBAMUM COMBINING MARK " + + "TUKWENTISBAMUM NJAEMLIBAMUM FULL STOPBAMUM COLONBAMUM COMMABAMUM SEMICOL" + + "ONBAMUM QUESTION MARKMODIFIER LETTER CHINESE TONE YIN PINGMODIFIER LETTE" + + "R CHINESE TONE YANG PINGMODIFIER LETTER CHINESE TONE YIN SHANGMODIFIER L" + + "ETTER CHINESE TONE YANG SHANGMODIFIER LETTER CHINESE TONE YIN QUMODIFIER" + + " LETTER CHINESE TONE YANG QUMODIFIER LETTER CHINESE TONE YIN RUMODIFIER " + + "LETTER CHINESE TONE YANG RUMODIFIER LETTER EXTRA-HIGH DOTTED TONE BARMOD" + + "IFIER LETTER HIGH DOTTED TONE BARMODIFIER LETTER MID DOTTED TONE BARMODI" + + "FIER LETTER LOW DOTTED TONE BARMODIFIER LETTER EXTRA-LOW DOTTED TONE BAR") + ("" + + "MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BARMODIFIER LETTER HIGH" + + " DOTTED LEFT-STEM TONE BARMODIFIER LETTER MID DOTTED LEFT-STEM TONE BARM" + + "ODIFIER LETTER LOW DOTTED LEFT-STEM TONE BARMODIFIER LETTER EXTRA-LOW DO" + + "TTED LEFT-STEM TONE BARMODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BARMODI" + + "FIER LETTER HIGH LEFT-STEM TONE BARMODIFIER LETTER MID LEFT-STEM TONE BA" + + "RMODIFIER LETTER LOW LEFT-STEM TONE BARMODIFIER LETTER EXTRA-LOW LEFT-ST" + + "EM TONE BARMODIFIER LETTER DOT VERTICAL BARMODIFIER LETTER DOT SLASHMODI" + + "FIER LETTER DOT HORIZONTAL BARMODIFIER LETTER LOWER RIGHT CORNER ANGLEMO" + + "DIFIER LETTER RAISED UP ARROWMODIFIER LETTER RAISED DOWN ARROWMODIFIER L" + + "ETTER RAISED EXCLAMATION MARKMODIFIER LETTER RAISED INVERTED EXCLAMATION" + + " MARKMODIFIER LETTER LOW INVERTED EXCLAMATION MARKMODIFIER LETTER STRESS" + + " AND HIGH TONEMODIFIER LETTER STRESS AND LOW TONELATIN CAPITAL LETTER EG" + + "YPTOLOGICAL ALEFLATIN SMALL LETTER EGYPTOLOGICAL ALEFLATIN CAPITAL LETTE" + + "R EGYPTOLOGICAL AINLATIN SMALL LETTER EGYPTOLOGICAL AINLATIN CAPITAL LET" + + "TER HENGLATIN SMALL LETTER HENGLATIN CAPITAL LETTER TZLATIN SMALL LETTER" + + " TZLATIN CAPITAL LETTER TRESILLOLATIN SMALL LETTER TRESILLOLATIN CAPITAL" + + " LETTER CUATRILLOLATIN SMALL LETTER CUATRILLOLATIN CAPITAL LETTER CUATRI" + + "LLO WITH COMMALATIN SMALL LETTER CUATRILLO WITH COMMALATIN LETTER SMALL " + + "CAPITAL FLATIN LETTER SMALL CAPITAL SLATIN CAPITAL LETTER AALATIN SMALL " + + "LETTER AALATIN CAPITAL LETTER AOLATIN SMALL LETTER AOLATIN CAPITAL LETTE" + + "R AULATIN SMALL LETTER AULATIN CAPITAL LETTER AVLATIN SMALL LETTER AVLAT" + + "IN CAPITAL LETTER AV WITH HORIZONTAL BARLATIN SMALL LETTER AV WITH HORIZ" + + "ONTAL BARLATIN CAPITAL LETTER AYLATIN SMALL LETTER AYLATIN CAPITAL LETTE" + + "R REVERSED C WITH DOTLATIN SMALL LETTER REVERSED C WITH DOTLATIN CAPITAL" + + " LETTER K WITH STROKELATIN SMALL LETTER K WITH STROKELATIN CAPITAL LETTE" + + "R K WITH DIAGONAL STROKELATIN SMALL LETTER K WITH DIAGONAL STROKELATIN C" + + "APITAL LETTER K WITH STROKE AND DIAGONAL STROKELATIN SMALL LETTER K WITH" + + " STROKE AND DIAGONAL STROKELATIN CAPITAL LETTER BROKEN LLATIN SMALL LETT" + + "ER BROKEN LLATIN CAPITAL LETTER L WITH HIGH STROKELATIN SMALL LETTER L W" + + "ITH HIGH STROKELATIN CAPITAL LETTER O WITH LONG STROKE OVERLAYLATIN SMAL" + + "L LETTER O WITH LONG STROKE OVERLAYLATIN CAPITAL LETTER O WITH LOOPLATIN" + + " SMALL LETTER O WITH LOOPLATIN CAPITAL LETTER OOLATIN SMALL LETTER OOLAT" + + "IN CAPITAL LETTER P WITH STROKE THROUGH DESCENDERLATIN SMALL LETTER P WI" + + "TH STROKE THROUGH DESCENDERLATIN CAPITAL LETTER P WITH FLOURISHLATIN SMA" + + "LL LETTER P WITH FLOURISHLATIN CAPITAL LETTER P WITH SQUIRREL TAILLATIN " + + "SMALL LETTER P WITH SQUIRREL TAILLATIN CAPITAL LETTER Q WITH STROKE THRO" + + "UGH DESCENDERLATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDERLATIN CAP" + + "ITAL LETTER Q WITH DIAGONAL STROKELATIN SMALL LETTER Q WITH DIAGONAL STR" + + "OKELATIN CAPITAL LETTER R ROTUNDALATIN SMALL LETTER R ROTUNDALATIN CAPIT" + + "AL LETTER RUM ROTUNDALATIN SMALL LETTER RUM ROTUNDALATIN CAPITAL LETTER " + + "V WITH DIAGONAL STROKELATIN SMALL LETTER V WITH DIAGONAL STROKELATIN CAP" + + "ITAL LETTER VYLATIN SMALL LETTER VYLATIN CAPITAL LETTER VISIGOTHIC ZLATI" + + "N SMALL LETTER VISIGOTHIC ZLATIN CAPITAL LETTER THORN WITH STROKELATIN S" + + "MALL LETTER THORN WITH STROKELATIN CAPITAL LETTER THORN WITH STROKE THRO" + + "UGH DESCENDERLATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDERLATIN" + + " CAPITAL LETTER VENDLATIN SMALL LETTER VENDLATIN CAPITAL LETTER ETLATIN " + + "SMALL LETTER ETLATIN CAPITAL LETTER ISLATIN SMALL LETTER ISLATIN CAPITAL" + + " LETTER CONLATIN SMALL LETTER CONMODIFIER LETTER USLATIN SMALL LETTER DU" + + "MLATIN SMALL LETTER LUMLATIN SMALL LETTER MUMLATIN SMALL LETTER NUMLATIN" + + " SMALL LETTER RUMLATIN LETTER SMALL CAPITAL RUMLATIN SMALL LETTER TUMLAT" + + "IN SMALL LETTER UMLATIN CAPITAL LETTER INSULAR DLATIN SMALL LETTER INSUL" + + "AR DLATIN CAPITAL LETTER INSULAR FLATIN SMALL LETTER INSULAR FLATIN CAPI" + + "TAL LETTER INSULAR GLATIN CAPITAL LETTER TURNED INSULAR GLATIN SMALL LET" + + "TER TURNED INSULAR GLATIN CAPITAL LETTER TURNED LLATIN SMALL LETTER TURN" + + "ED LLATIN CAPITAL LETTER INSULAR RLATIN SMALL LETTER INSULAR RLATIN CAPI" + + "TAL LETTER INSULAR SLATIN SMALL LETTER INSULAR SLATIN CAPITAL LETTER INS" + + "ULAR TLATIN SMALL LETTER INSULAR TMODIFIER LETTER LOW CIRCUMFLEX ACCENTM" + + "ODIFIER LETTER COLONMODIFIER LETTER SHORT EQUALS SIGNLATIN CAPITAL LETTE" + + "R SALTILLOLATIN SMALL LETTER SALTILLOLATIN CAPITAL LETTER TURNED HLATIN " + + "SMALL LETTER L WITH RETROFLEX HOOK AND BELTLATIN LETTER SINOLOGICAL DOTL" + + "ATIN CAPITAL LETTER N WITH DESCENDERLATIN SMALL LETTER N WITH DESCENDERL" + + "ATIN CAPITAL LETTER C WITH BARLATIN SMALL LETTER C WITH BARLATIN SMALL L" + + "ETTER C WITH PALATAL HOOKLATIN SMALL LETTER H WITH PALATAL HOOKLATIN CAP" + + "ITAL LETTER B WITH FLOURISHLATIN SMALL LETTER B WITH FLOURISHLATIN CAPIT") + ("" + + "AL LETTER F WITH STROKELATIN SMALL LETTER F WITH STROKELATIN CAPITAL LET" + + "TER VOLAPUK AELATIN SMALL LETTER VOLAPUK AELATIN CAPITAL LETTER VOLAPUK " + + "OELATIN SMALL LETTER VOLAPUK OELATIN CAPITAL LETTER VOLAPUK UELATIN SMAL" + + "L LETTER VOLAPUK UELATIN CAPITAL LETTER G WITH OBLIQUE STROKELATIN SMALL" + + " LETTER G WITH OBLIQUE STROKELATIN CAPITAL LETTER K WITH OBLIQUE STROKEL" + + "ATIN SMALL LETTER K WITH OBLIQUE STROKELATIN CAPITAL LETTER N WITH OBLIQ" + + "UE STROKELATIN SMALL LETTER N WITH OBLIQUE STROKELATIN CAPITAL LETTER R " + + "WITH OBLIQUE STROKELATIN SMALL LETTER R WITH OBLIQUE STROKELATIN CAPITAL" + + " LETTER S WITH OBLIQUE STROKELATIN SMALL LETTER S WITH OBLIQUE STROKELAT" + + "IN CAPITAL LETTER H WITH HOOKLATIN CAPITAL LETTER REVERSED OPEN ELATIN C" + + "APITAL LETTER SCRIPT GLATIN CAPITAL LETTER L WITH BELTLATIN CAPITAL LETT" + + "ER SMALL CAPITAL ILATIN CAPITAL LETTER TURNED KLATIN CAPITAL LETTER TURN" + + "ED TLATIN CAPITAL LETTER J WITH CROSSED-TAILLATIN CAPITAL LETTER CHILATI" + + "N CAPITAL LETTER BETALATIN SMALL LETTER BETALATIN CAPITAL LETTER OMEGALA" + + "TIN SMALL LETTER OMEGALATIN EPIGRAPHIC LETTER SIDEWAYS IMODIFIER LETTER " + + "CAPITAL H WITH STROKEMODIFIER LETTER SMALL LIGATURE OELATIN LETTER SMALL" + + " CAPITAL TURNED MLATIN EPIGRAPHIC LETTER REVERSED FLATIN EPIGRAPHIC LETT" + + "ER REVERSED PLATIN EPIGRAPHIC LETTER INVERTED MLATIN EPIGRAPHIC LETTER I" + + " LONGALATIN EPIGRAPHIC LETTER ARCHAIC MSYLOTI NAGRI LETTER ASYLOTI NAGRI" + + " LETTER ISYLOTI NAGRI SIGN DVISVARASYLOTI NAGRI LETTER USYLOTI NAGRI LET" + + "TER ESYLOTI NAGRI LETTER OSYLOTI NAGRI SIGN HASANTASYLOTI NAGRI LETTER K" + + "OSYLOTI NAGRI LETTER KHOSYLOTI NAGRI LETTER GOSYLOTI NAGRI LETTER GHOSYL" + + "OTI NAGRI SIGN ANUSVARASYLOTI NAGRI LETTER COSYLOTI NAGRI LETTER CHOSYLO" + + "TI NAGRI LETTER JOSYLOTI NAGRI LETTER JHOSYLOTI NAGRI LETTER TTOSYLOTI N" + + "AGRI LETTER TTHOSYLOTI NAGRI LETTER DDOSYLOTI NAGRI LETTER DDHOSYLOTI NA" + + "GRI LETTER TOSYLOTI NAGRI LETTER THOSYLOTI NAGRI LETTER DOSYLOTI NAGRI L" + + "ETTER DHOSYLOTI NAGRI LETTER NOSYLOTI NAGRI LETTER POSYLOTI NAGRI LETTER" + + " PHOSYLOTI NAGRI LETTER BOSYLOTI NAGRI LETTER BHOSYLOTI NAGRI LETTER MOS" + + "YLOTI NAGRI LETTER ROSYLOTI NAGRI LETTER LOSYLOTI NAGRI LETTER RROSYLOTI" + + " NAGRI LETTER SOSYLOTI NAGRI LETTER HOSYLOTI NAGRI VOWEL SIGN ASYLOTI NA" + + "GRI VOWEL SIGN ISYLOTI NAGRI VOWEL SIGN USYLOTI NAGRI VOWEL SIGN ESYLOTI" + + " NAGRI VOWEL SIGN OOSYLOTI NAGRI POETRY MARK-1SYLOTI NAGRI POETRY MARK-2" + + "SYLOTI NAGRI POETRY MARK-3SYLOTI NAGRI POETRY MARK-4NORTH INDIC FRACTION" + + " ONE QUARTERNORTH INDIC FRACTION ONE HALFNORTH INDIC FRACTION THREE QUAR" + + "TERSNORTH INDIC FRACTION ONE SIXTEENTHNORTH INDIC FRACTION ONE EIGHTHNOR" + + "TH INDIC FRACTION THREE SIXTEENTHSNORTH INDIC QUARTER MARKNORTH INDIC PL" + + "ACEHOLDER MARKNORTH INDIC RUPEE MARKNORTH INDIC QUANTITY MARKPHAGS-PA LE" + + "TTER KAPHAGS-PA LETTER KHAPHAGS-PA LETTER GAPHAGS-PA LETTER NGAPHAGS-PA " + + "LETTER CAPHAGS-PA LETTER CHAPHAGS-PA LETTER JAPHAGS-PA LETTER NYAPHAGS-P" + + "A LETTER TAPHAGS-PA LETTER THAPHAGS-PA LETTER DAPHAGS-PA LETTER NAPHAGS-" + + "PA LETTER PAPHAGS-PA LETTER PHAPHAGS-PA LETTER BAPHAGS-PA LETTER MAPHAGS" + + "-PA LETTER TSAPHAGS-PA LETTER TSHAPHAGS-PA LETTER DZAPHAGS-PA LETTER WAP" + + "HAGS-PA LETTER ZHAPHAGS-PA LETTER ZAPHAGS-PA LETTER SMALL APHAGS-PA LETT" + + "ER YAPHAGS-PA LETTER RAPHAGS-PA LETTER LAPHAGS-PA LETTER SHAPHAGS-PA LET" + + "TER SAPHAGS-PA LETTER HAPHAGS-PA LETTER APHAGS-PA LETTER IPHAGS-PA LETTE" + + "R UPHAGS-PA LETTER EPHAGS-PA LETTER OPHAGS-PA LETTER QAPHAGS-PA LETTER X" + + "APHAGS-PA LETTER FAPHAGS-PA LETTER GGAPHAGS-PA LETTER EEPHAGS-PA SUBJOIN" + + "ED LETTER WAPHAGS-PA SUBJOINED LETTER YAPHAGS-PA LETTER TTAPHAGS-PA LETT" + + "ER TTHAPHAGS-PA LETTER DDAPHAGS-PA LETTER NNAPHAGS-PA LETTER ALTERNATE Y" + + "APHAGS-PA LETTER VOICELESS SHAPHAGS-PA LETTER VOICED HAPHAGS-PA LETTER A" + + "SPIRATED FAPHAGS-PA SUBJOINED LETTER RAPHAGS-PA SUPERFIXED LETTER RAPHAG" + + "S-PA LETTER CANDRABINDUPHAGS-PA SINGLE HEAD MARKPHAGS-PA DOUBLE HEAD MAR" + + "KPHAGS-PA MARK SHADPHAGS-PA MARK DOUBLE SHADSAURASHTRA SIGN ANUSVARASAUR" + + "ASHTRA SIGN VISARGASAURASHTRA LETTER ASAURASHTRA LETTER AASAURASHTRA LET" + + "TER ISAURASHTRA LETTER IISAURASHTRA LETTER USAURASHTRA LETTER UUSAURASHT" + + "RA LETTER VOCALIC RSAURASHTRA LETTER VOCALIC RRSAURASHTRA LETTER VOCALIC" + + " LSAURASHTRA LETTER VOCALIC LLSAURASHTRA LETTER ESAURASHTRA LETTER EESAU" + + "RASHTRA LETTER AISAURASHTRA LETTER OSAURASHTRA LETTER OOSAURASHTRA LETTE" + + "R AUSAURASHTRA LETTER KASAURASHTRA LETTER KHASAURASHTRA LETTER GASAURASH" + + "TRA LETTER GHASAURASHTRA LETTER NGASAURASHTRA LETTER CASAURASHTRA LETTER" + + " CHASAURASHTRA LETTER JASAURASHTRA LETTER JHASAURASHTRA LETTER NYASAURAS" + + "HTRA LETTER TTASAURASHTRA LETTER TTHASAURASHTRA LETTER DDASAURASHTRA LET" + + "TER DDHASAURASHTRA LETTER NNASAURASHTRA LETTER TASAURASHTRA LETTER THASA" + + "URASHTRA LETTER DASAURASHTRA LETTER DHASAURASHTRA LETTER NASAURASHTRA LE") + ("" + + "TTER PASAURASHTRA LETTER PHASAURASHTRA LETTER BASAURASHTRA LETTER BHASAU" + + "RASHTRA LETTER MASAURASHTRA LETTER YASAURASHTRA LETTER RASAURASHTRA LETT" + + "ER LASAURASHTRA LETTER VASAURASHTRA LETTER SHASAURASHTRA LETTER SSASAURA" + + "SHTRA LETTER SASAURASHTRA LETTER HASAURASHTRA LETTER LLASAURASHTRA CONSO" + + "NANT SIGN HAARUSAURASHTRA VOWEL SIGN AASAURASHTRA VOWEL SIGN ISAURASHTRA" + + " VOWEL SIGN IISAURASHTRA VOWEL SIGN USAURASHTRA VOWEL SIGN UUSAURASHTRA " + + "VOWEL SIGN VOCALIC RSAURASHTRA VOWEL SIGN VOCALIC RRSAURASHTRA VOWEL SIG" + + "N VOCALIC LSAURASHTRA VOWEL SIGN VOCALIC LLSAURASHTRA VOWEL SIGN ESAURAS" + + "HTRA VOWEL SIGN EESAURASHTRA VOWEL SIGN AISAURASHTRA VOWEL SIGN OSAURASH" + + "TRA VOWEL SIGN OOSAURASHTRA VOWEL SIGN AUSAURASHTRA SIGN VIRAMASAURASHTR" + + "A SIGN CANDRABINDUSAURASHTRA DANDASAURASHTRA DOUBLE DANDASAURASHTRA DIGI" + + "T ZEROSAURASHTRA DIGIT ONESAURASHTRA DIGIT TWOSAURASHTRA DIGIT THREESAUR" + + "ASHTRA DIGIT FOURSAURASHTRA DIGIT FIVESAURASHTRA DIGIT SIXSAURASHTRA DIG" + + "IT SEVENSAURASHTRA DIGIT EIGHTSAURASHTRA DIGIT NINECOMBINING DEVANAGARI " + + "DIGIT ZEROCOMBINING DEVANAGARI DIGIT ONECOMBINING DEVANAGARI DIGIT TWOCO" + + "MBINING DEVANAGARI DIGIT THREECOMBINING DEVANAGARI DIGIT FOURCOMBINING D" + + "EVANAGARI DIGIT FIVECOMBINING DEVANAGARI DIGIT SIXCOMBINING DEVANAGARI D" + + "IGIT SEVENCOMBINING DEVANAGARI DIGIT EIGHTCOMBINING DEVANAGARI DIGIT NIN" + + "ECOMBINING DEVANAGARI LETTER ACOMBINING DEVANAGARI LETTER UCOMBINING DEV" + + "ANAGARI LETTER KACOMBINING DEVANAGARI LETTER NACOMBINING DEVANAGARI LETT" + + "ER PACOMBINING DEVANAGARI LETTER RACOMBINING DEVANAGARI LETTER VICOMBINI" + + "NG DEVANAGARI SIGN AVAGRAHADEVANAGARI SIGN SPACING CANDRABINDUDEVANAGARI" + + " SIGN CANDRABINDU VIRAMADEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMADEVANAG" + + "ARI SIGN CANDRABINDU TWODEVANAGARI SIGN CANDRABINDU THREEDEVANAGARI SIGN" + + " CANDRABINDU AVAGRAHADEVANAGARI SIGN PUSHPIKADEVANAGARI GAP FILLERDEVANA" + + "GARI CARETDEVANAGARI HEADSTROKEDEVANAGARI SIGN SIDDHAMDEVANAGARI JAIN OM" + + "KAYAH LI DIGIT ZEROKAYAH LI DIGIT ONEKAYAH LI DIGIT TWOKAYAH LI DIGIT TH" + + "REEKAYAH LI DIGIT FOURKAYAH LI DIGIT FIVEKAYAH LI DIGIT SIXKAYAH LI DIGI" + + "T SEVENKAYAH LI DIGIT EIGHTKAYAH LI DIGIT NINEKAYAH LI LETTER KAKAYAH LI" + + " LETTER KHAKAYAH LI LETTER GAKAYAH LI LETTER NGAKAYAH LI LETTER SAKAYAH " + + "LI LETTER SHAKAYAH LI LETTER ZAKAYAH LI LETTER NYAKAYAH LI LETTER TAKAYA" + + "H LI LETTER HTAKAYAH LI LETTER NAKAYAH LI LETTER PAKAYAH LI LETTER PHAKA" + + "YAH LI LETTER MAKAYAH LI LETTER DAKAYAH LI LETTER BAKAYAH LI LETTER RAKA" + + "YAH LI LETTER YAKAYAH LI LETTER LAKAYAH LI LETTER WAKAYAH LI LETTER THAK" + + "AYAH LI LETTER HAKAYAH LI LETTER VAKAYAH LI LETTER CAKAYAH LI LETTER AKA" + + "YAH LI LETTER OEKAYAH LI LETTER IKAYAH LI LETTER OOKAYAH LI VOWEL UEKAYA" + + "H LI VOWEL EKAYAH LI VOWEL UKAYAH LI VOWEL EEKAYAH LI VOWEL OKAYAH LI TO" + + "NE PLOPHUKAYAH LI TONE CALYAKAYAH LI TONE CALYA PLOPHUKAYAH LI SIGN CWIK" + + "AYAH LI SIGN SHYAREJANG LETTER KAREJANG LETTER GAREJANG LETTER NGAREJANG" + + " LETTER TAREJANG LETTER DAREJANG LETTER NAREJANG LETTER PAREJANG LETTER " + + "BAREJANG LETTER MAREJANG LETTER CAREJANG LETTER JAREJANG LETTER NYAREJAN" + + "G LETTER SAREJANG LETTER RAREJANG LETTER LAREJANG LETTER YAREJANG LETTER" + + " WAREJANG LETTER HAREJANG LETTER MBAREJANG LETTER NGGAREJANG LETTER NDAR" + + "EJANG LETTER NYJAREJANG LETTER AREJANG VOWEL SIGN IREJANG VOWEL SIGN URE" + + "JANG VOWEL SIGN EREJANG VOWEL SIGN AIREJANG VOWEL SIGN OREJANG VOWEL SIG" + + "N AUREJANG VOWEL SIGN EUREJANG VOWEL SIGN EAREJANG CONSONANT SIGN NGREJA" + + "NG CONSONANT SIGN NREJANG CONSONANT SIGN RREJANG CONSONANT SIGN HREJANG " + + "VIRAMAREJANG SECTION MARKHANGUL CHOSEONG TIKEUT-MIEUMHANGUL CHOSEONG TIK" + + "EUT-PIEUPHANGUL CHOSEONG TIKEUT-SIOSHANGUL CHOSEONG TIKEUT-CIEUCHANGUL C" + + "HOSEONG RIEUL-KIYEOKHANGUL CHOSEONG RIEUL-SSANGKIYEOKHANGUL CHOSEONG RIE" + + "UL-TIKEUTHANGUL CHOSEONG RIEUL-SSANGTIKEUTHANGUL CHOSEONG RIEUL-MIEUMHAN" + + "GUL CHOSEONG RIEUL-PIEUPHANGUL CHOSEONG RIEUL-SSANGPIEUPHANGUL CHOSEONG " + + "RIEUL-KAPYEOUNPIEUPHANGUL CHOSEONG RIEUL-SIOSHANGUL CHOSEONG RIEUL-CIEUC" + + "HANGUL CHOSEONG RIEUL-KHIEUKHHANGUL CHOSEONG MIEUM-KIYEOKHANGUL CHOSEONG" + + " MIEUM-TIKEUTHANGUL CHOSEONG MIEUM-SIOSHANGUL CHOSEONG PIEUP-SIOS-THIEUT" + + "HHANGUL CHOSEONG PIEUP-KHIEUKHHANGUL CHOSEONG PIEUP-HIEUHHANGUL CHOSEONG" + + " SSANGSIOS-PIEUPHANGUL CHOSEONG IEUNG-RIEULHANGUL CHOSEONG IEUNG-HIEUHHA" + + "NGUL CHOSEONG SSANGCIEUC-HIEUHHANGUL CHOSEONG SSANGTHIEUTHHANGUL CHOSEON" + + "G PHIEUPH-HIEUHHANGUL CHOSEONG HIEUH-SIOSHANGUL CHOSEONG SSANGYEORINHIEU" + + "HJAVANESE SIGN PANYANGGAJAVANESE SIGN CECAKJAVANESE SIGN LAYARJAVANESE S" + + "IGN WIGNYANJAVANESE LETTER AJAVANESE LETTER I KAWIJAVANESE LETTER IJAVAN" + + "ESE LETTER IIJAVANESE LETTER UJAVANESE LETTER PA CEREKJAVANESE LETTER NG" + + "A LELETJAVANESE LETTER NGA LELET RASWADIJAVANESE LETTER EJAVANESE LETTER" + + " AIJAVANESE LETTER OJAVANESE LETTER KAJAVANESE LETTER KA SASAKJAVANESE L") + ("" + + "ETTER KA MURDAJAVANESE LETTER GAJAVANESE LETTER GA MURDAJAVANESE LETTER " + + "NGAJAVANESE LETTER CAJAVANESE LETTER CA MURDAJAVANESE LETTER JAJAVANESE " + + "LETTER NYA MURDAJAVANESE LETTER JA MAHAPRANAJAVANESE LETTER NYAJAVANESE " + + "LETTER TTAJAVANESE LETTER TTA MAHAPRANAJAVANESE LETTER DDAJAVANESE LETTE" + + "R DDA MAHAPRANAJAVANESE LETTER NA MURDAJAVANESE LETTER TAJAVANESE LETTER" + + " TA MURDAJAVANESE LETTER DAJAVANESE LETTER DA MAHAPRANAJAVANESE LETTER N" + + "AJAVANESE LETTER PAJAVANESE LETTER PA MURDAJAVANESE LETTER BAJAVANESE LE" + + "TTER BA MURDAJAVANESE LETTER MAJAVANESE LETTER YAJAVANESE LETTER RAJAVAN" + + "ESE LETTER RA AGUNGJAVANESE LETTER LAJAVANESE LETTER WAJAVANESE LETTER S" + + "A MURDAJAVANESE LETTER SA MAHAPRANAJAVANESE LETTER SAJAVANESE LETTER HAJ" + + "AVANESE SIGN CECAK TELUJAVANESE VOWEL SIGN TARUNGJAVANESE VOWEL SIGN TOL" + + "ONGJAVANESE VOWEL SIGN WULUJAVANESE VOWEL SIGN WULU MELIKJAVANESE VOWEL " + + "SIGN SUKUJAVANESE VOWEL SIGN SUKU MENDUTJAVANESE VOWEL SIGN TALINGJAVANE" + + "SE VOWEL SIGN DIRGA MUREJAVANESE VOWEL SIGN PEPETJAVANESE CONSONANT SIGN" + + " KERETJAVANESE CONSONANT SIGN PENGKALJAVANESE CONSONANT SIGN CAKRAJAVANE" + + "SE PANGKONJAVANESE LEFT RERENGGANJAVANESE RIGHT RERENGGANJAVANESE PADA A" + + "NDAPJAVANESE PADA MADYAJAVANESE PADA LUHURJAVANESE PADA WINDUJAVANESE PA" + + "DA PANGKATJAVANESE PADA LINGSAJAVANESE PADA LUNGSIJAVANESE PADA ADEGJAVA" + + "NESE PADA ADEG ADEGJAVANESE PADA PISELEHJAVANESE TURNED PADA PISELEHJAVA" + + "NESE PANGRANGKEPJAVANESE DIGIT ZEROJAVANESE DIGIT ONEJAVANESE DIGIT TWOJ" + + "AVANESE DIGIT THREEJAVANESE DIGIT FOURJAVANESE DIGIT FIVEJAVANESE DIGIT " + + "SIXJAVANESE DIGIT SEVENJAVANESE DIGIT EIGHTJAVANESE DIGIT NINEJAVANESE P" + + "ADA TIRTA TUMETESJAVANESE PADA ISEN-ISENMYANMAR LETTER SHAN GHAMYANMAR L" + + "ETTER SHAN CHAMYANMAR LETTER SHAN JHAMYANMAR LETTER SHAN NNAMYANMAR LETT" + + "ER SHAN BHAMYANMAR SIGN SHAN SAWMYANMAR MODIFIER LETTER SHAN REDUPLICATI" + + "ONMYANMAR LETTER TAI LAING NYAMYANMAR LETTER TAI LAING FAMYANMAR LETTER " + + "TAI LAING GAMYANMAR LETTER TAI LAING GHAMYANMAR LETTER TAI LAING JAMYANM" + + "AR LETTER TAI LAING JHAMYANMAR LETTER TAI LAING DDAMYANMAR LETTER TAI LA" + + "ING DDHAMYANMAR LETTER TAI LAING NNAMYANMAR TAI LAING DIGIT ZEROMYANMAR " + + "TAI LAING DIGIT ONEMYANMAR TAI LAING DIGIT TWOMYANMAR TAI LAING DIGIT TH" + + "REEMYANMAR TAI LAING DIGIT FOURMYANMAR TAI LAING DIGIT FIVEMYANMAR TAI L" + + "AING DIGIT SIXMYANMAR TAI LAING DIGIT SEVENMYANMAR TAI LAING DIGIT EIGHT" + + "MYANMAR TAI LAING DIGIT NINEMYANMAR LETTER TAI LAING LLAMYANMAR LETTER T" + + "AI LAING DAMYANMAR LETTER TAI LAING DHAMYANMAR LETTER TAI LAING BAMYANMA" + + "R LETTER TAI LAING BHACHAM LETTER ACHAM LETTER ICHAM LETTER UCHAM LETTER" + + " ECHAM LETTER AICHAM LETTER OCHAM LETTER KACHAM LETTER KHACHAM LETTER GA" + + "CHAM LETTER GHACHAM LETTER NGUECHAM LETTER NGACHAM LETTER CHACHAM LETTER" + + " CHHACHAM LETTER JACHAM LETTER JHACHAM LETTER NHUECHAM LETTER NHACHAM LE" + + "TTER NHJACHAM LETTER TACHAM LETTER THACHAM LETTER DACHAM LETTER DHACHAM " + + "LETTER NUECHAM LETTER NACHAM LETTER DDACHAM LETTER PACHAM LETTER PPACHAM" + + " LETTER PHACHAM LETTER BACHAM LETTER BHACHAM LETTER MUECHAM LETTER MACHA" + + "M LETTER BBACHAM LETTER YACHAM LETTER RACHAM LETTER LACHAM LETTER VACHAM" + + " LETTER SSACHAM LETTER SACHAM LETTER HACHAM VOWEL SIGN AACHAM VOWEL SIGN" + + " ICHAM VOWEL SIGN IICHAM VOWEL SIGN EICHAM VOWEL SIGN UCHAM VOWEL SIGN O" + + "ECHAM VOWEL SIGN OCHAM VOWEL SIGN AICHAM VOWEL SIGN AUCHAM VOWEL SIGN UE" + + "CHAM CONSONANT SIGN YACHAM CONSONANT SIGN RACHAM CONSONANT SIGN LACHAM C" + + "ONSONANT SIGN WACHAM LETTER FINAL KCHAM LETTER FINAL GCHAM LETTER FINAL " + + "NGCHAM CONSONANT SIGN FINAL NGCHAM LETTER FINAL CHCHAM LETTER FINAL TCHA" + + "M LETTER FINAL NCHAM LETTER FINAL PCHAM LETTER FINAL YCHAM LETTER FINAL " + + "RCHAM LETTER FINAL LCHAM LETTER FINAL SSCHAM CONSONANT SIGN FINAL MCHAM " + + "CONSONANT SIGN FINAL HCHAM DIGIT ZEROCHAM DIGIT ONECHAM DIGIT TWOCHAM DI" + + "GIT THREECHAM DIGIT FOURCHAM DIGIT FIVECHAM DIGIT SIXCHAM DIGIT SEVENCHA" + + "M DIGIT EIGHTCHAM DIGIT NINECHAM PUNCTUATION SPIRALCHAM PUNCTUATION DAND" + + "ACHAM PUNCTUATION DOUBLE DANDACHAM PUNCTUATION TRIPLE DANDAMYANMAR LETTE" + + "R KHAMTI GAMYANMAR LETTER KHAMTI CAMYANMAR LETTER KHAMTI CHAMYANMAR LETT" + + "ER KHAMTI JAMYANMAR LETTER KHAMTI JHAMYANMAR LETTER KHAMTI NYAMYANMAR LE" + + "TTER KHAMTI TTAMYANMAR LETTER KHAMTI TTHAMYANMAR LETTER KHAMTI DDAMYANMA" + + "R LETTER KHAMTI DDHAMYANMAR LETTER KHAMTI DHAMYANMAR LETTER KHAMTI NAMYA" + + "NMAR LETTER KHAMTI SAMYANMAR LETTER KHAMTI HAMYANMAR LETTER KHAMTI HHAMY" + + "ANMAR LETTER KHAMTI FAMYANMAR MODIFIER LETTER KHAMTI REDUPLICATIONMYANMA" + + "R LETTER KHAMTI XAMYANMAR LETTER KHAMTI ZAMYANMAR LETTER KHAMTI RAMYANMA" + + "R LOGOGRAM KHAMTI OAYMYANMAR LOGOGRAM KHAMTI QNMYANMAR LOGOGRAM KHAMTI H" + + "MMYANMAR SYMBOL AITON EXCLAMATIONMYANMAR SYMBOL AITON ONEMYANMAR SYMBOL " + + "AITON TWOMYANMAR LETTER AITON RAMYANMAR SIGN PAO KAREN TONEMYANMAR SIGN ") + ("" + + "TAI LAING TONE-2MYANMAR SIGN TAI LAING TONE-5MYANMAR LETTER SHWE PALAUNG" + + " CHAMYANMAR LETTER SHWE PALAUNG SHATAI VIET LETTER LOW KOTAI VIET LETTER" + + " HIGH KOTAI VIET LETTER LOW KHOTAI VIET LETTER HIGH KHOTAI VIET LETTER L" + + "OW KHHOTAI VIET LETTER HIGH KHHOTAI VIET LETTER LOW GOTAI VIET LETTER HI" + + "GH GOTAI VIET LETTER LOW NGOTAI VIET LETTER HIGH NGOTAI VIET LETTER LOW " + + "COTAI VIET LETTER HIGH COTAI VIET LETTER LOW CHOTAI VIET LETTER HIGH CHO" + + "TAI VIET LETTER LOW SOTAI VIET LETTER HIGH SOTAI VIET LETTER LOW NYOTAI " + + "VIET LETTER HIGH NYOTAI VIET LETTER LOW DOTAI VIET LETTER HIGH DOTAI VIE" + + "T LETTER LOW TOTAI VIET LETTER HIGH TOTAI VIET LETTER LOW THOTAI VIET LE" + + "TTER HIGH THOTAI VIET LETTER LOW NOTAI VIET LETTER HIGH NOTAI VIET LETTE" + + "R LOW BOTAI VIET LETTER HIGH BOTAI VIET LETTER LOW POTAI VIET LETTER HIG" + + "H POTAI VIET LETTER LOW PHOTAI VIET LETTER HIGH PHOTAI VIET LETTER LOW F" + + "OTAI VIET LETTER HIGH FOTAI VIET LETTER LOW MOTAI VIET LETTER HIGH MOTAI" + + " VIET LETTER LOW YOTAI VIET LETTER HIGH YOTAI VIET LETTER LOW ROTAI VIET" + + " LETTER HIGH ROTAI VIET LETTER LOW LOTAI VIET LETTER HIGH LOTAI VIET LET" + + "TER LOW VOTAI VIET LETTER HIGH VOTAI VIET LETTER LOW HOTAI VIET LETTER H" + + "IGH HOTAI VIET LETTER LOW OTAI VIET LETTER HIGH OTAI VIET MAI KANGTAI VI" + + "ET VOWEL AATAI VIET VOWEL ITAI VIET VOWEL UETAI VIET VOWEL UTAI VIET VOW" + + "EL ETAI VIET VOWEL OTAI VIET MAI KHITTAI VIET VOWEL IATAI VIET VOWEL UEA" + + "TAI VIET VOWEL UATAI VIET VOWEL AUETAI VIET VOWEL AYTAI VIET VOWEL ANTAI" + + " VIET VOWEL AMTAI VIET TONE MAI EKTAI VIET TONE MAI NUENGTAI VIET TONE M" + + "AI THOTAI VIET TONE MAI SONGTAI VIET SYMBOL KONTAI VIET SYMBOL NUENGTAI " + + "VIET SYMBOL SAMTAI VIET SYMBOL HO HOITAI VIET SYMBOL KOI KOIMEETEI MAYEK" + + " LETTER EMEETEI MAYEK LETTER OMEETEI MAYEK LETTER CHAMEETEI MAYEK LETTER" + + " NYAMEETEI MAYEK LETTER TTAMEETEI MAYEK LETTER TTHAMEETEI MAYEK LETTER D" + + "DAMEETEI MAYEK LETTER DDHAMEETEI MAYEK LETTER NNAMEETEI MAYEK LETTER SHA" + + "MEETEI MAYEK LETTER SSAMEETEI MAYEK VOWEL SIGN IIMEETEI MAYEK VOWEL SIGN" + + " UUMEETEI MAYEK VOWEL SIGN AAIMEETEI MAYEK VOWEL SIGN AUMEETEI MAYEK VOW" + + "EL SIGN AAUMEETEI MAYEK CHEIKHANMEETEI MAYEK AHANG KHUDAMMEETEI MAYEK AN" + + "JIMEETEI MAYEK SYLLABLE REPETITION MARKMEETEI MAYEK WORD REPETITION MARK" + + "MEETEI MAYEK VOWEL SIGN VISARGAMEETEI MAYEK VIRAMAETHIOPIC SYLLABLE TTHU" + + "ETHIOPIC SYLLABLE TTHIETHIOPIC SYLLABLE TTHAAETHIOPIC SYLLABLE TTHEEETHI" + + "OPIC SYLLABLE TTHEETHIOPIC SYLLABLE TTHOETHIOPIC SYLLABLE DDHUETHIOPIC S" + + "YLLABLE DDHIETHIOPIC SYLLABLE DDHAAETHIOPIC SYLLABLE DDHEEETHIOPIC SYLLA" + + "BLE DDHEETHIOPIC SYLLABLE DDHOETHIOPIC SYLLABLE DZUETHIOPIC SYLLABLE DZI" + + "ETHIOPIC SYLLABLE DZAAETHIOPIC SYLLABLE DZEEETHIOPIC SYLLABLE DZEETHIOPI" + + "C SYLLABLE DZOETHIOPIC SYLLABLE CCHHAETHIOPIC SYLLABLE CCHHUETHIOPIC SYL" + + "LABLE CCHHIETHIOPIC SYLLABLE CCHHAAETHIOPIC SYLLABLE CCHHEEETHIOPIC SYLL" + + "ABLE CCHHEETHIOPIC SYLLABLE CCHHOETHIOPIC SYLLABLE BBAETHIOPIC SYLLABLE " + + "BBUETHIOPIC SYLLABLE BBIETHIOPIC SYLLABLE BBAAETHIOPIC SYLLABLE BBEEETHI" + + "OPIC SYLLABLE BBEETHIOPIC SYLLABLE BBOLATIN SMALL LETTER BARRED ALPHALAT" + + "IN SMALL LETTER A REVERSED-SCHWALATIN SMALL LETTER BLACKLETTER ELATIN SM" + + "ALL LETTER BARRED ELATIN SMALL LETTER E WITH FLOURISHLATIN SMALL LETTER " + + "LENIS FLATIN SMALL LETTER SCRIPT G WITH CROSSED-TAILLATIN SMALL LETTER L" + + " WITH INVERTED LAZY SLATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDELATIN " + + "SMALL LETTER L WITH MIDDLE RINGLATIN SMALL LETTER M WITH CROSSED-TAILLAT" + + "IN SMALL LETTER N WITH CROSSED-TAILLATIN SMALL LETTER ENG WITH CROSSED-T" + + "AILLATIN SMALL LETTER BLACKLETTER OLATIN SMALL LETTER BLACKLETTER O WITH" + + " STROKELATIN SMALL LETTER OPEN O WITH STROKELATIN SMALL LETTER INVERTED " + + "OELATIN SMALL LETTER TURNED OE WITH STROKELATIN SMALL LETTER TURNED OE W" + + "ITH HORIZONTAL STROKELATIN SMALL LETTER TURNED O OPEN-OLATIN SMALL LETTE" + + "R TURNED O OPEN-O WITH STROKELATIN SMALL LETTER STIRRUP RLATIN LETTER SM" + + "ALL CAPITAL R WITH RIGHT LEGLATIN SMALL LETTER R WITHOUT HANDLELATIN SMA" + + "LL LETTER DOUBLE RLATIN SMALL LETTER R WITH CROSSED-TAILLATIN SMALL LETT" + + "ER DOUBLE R WITH CROSSED-TAILLATIN SMALL LETTER SCRIPT RLATIN SMALL LETT" + + "ER SCRIPT R WITH RINGLATIN SMALL LETTER BASELINE ESHLATIN SMALL LETTER U" + + " WITH SHORT RIGHT LEGLATIN SMALL LETTER U BAR WITH SHORT RIGHT LEGLATIN " + + "SMALL LETTER UILATIN SMALL LETTER TURNED UILATIN SMALL LETTER U WITH LEF" + + "T HOOKLATIN SMALL LETTER CHILATIN SMALL LETTER CHI WITH LOW RIGHT RINGLA" + + "TIN SMALL LETTER CHI WITH LOW LEFT SERIFLATIN SMALL LETTER X WITH LOW RI" + + "GHT RINGLATIN SMALL LETTER X WITH LONG LEFT LEGLATIN SMALL LETTER X WITH" + + " LONG LEFT LEG AND LOW RIGHT RINGLATIN SMALL LETTER X WITH LONG LEFT LEG" + + " WITH SERIFLATIN SMALL LETTER Y WITH SHORT RIGHT LEGMODIFIER BREVE WITH " + + "INVERTED BREVEMODIFIER LETTER SMALL HENGMODIFIER LETTER SMALL L WITH INV") + ("" + + "ERTED LAZY SMODIFIER LETTER SMALL L WITH MIDDLE TILDEMODIFIER LETTER SMA" + + "LL U WITH LEFT HOOKLATIN SMALL LETTER SAKHA YATLATIN SMALL LETTER IOTIFI" + + "ED ELATIN SMALL LETTER OPEN OELATIN SMALL LETTER UOLATIN SMALL LETTER IN" + + "VERTED ALPHAGREEK LETTER SMALL CAPITAL OMEGACHEROKEE SMALL LETTER ACHERO" + + "KEE SMALL LETTER ECHEROKEE SMALL LETTER ICHEROKEE SMALL LETTER OCHEROKEE" + + " SMALL LETTER UCHEROKEE SMALL LETTER VCHEROKEE SMALL LETTER GACHEROKEE S" + + "MALL LETTER KACHEROKEE SMALL LETTER GECHEROKEE SMALL LETTER GICHEROKEE S" + + "MALL LETTER GOCHEROKEE SMALL LETTER GUCHEROKEE SMALL LETTER GVCHEROKEE S" + + "MALL LETTER HACHEROKEE SMALL LETTER HECHEROKEE SMALL LETTER HICHEROKEE S" + + "MALL LETTER HOCHEROKEE SMALL LETTER HUCHEROKEE SMALL LETTER HVCHEROKEE S" + + "MALL LETTER LACHEROKEE SMALL LETTER LECHEROKEE SMALL LETTER LICHEROKEE S" + + "MALL LETTER LOCHEROKEE SMALL LETTER LUCHEROKEE SMALL LETTER LVCHEROKEE S" + + "MALL LETTER MACHEROKEE SMALL LETTER MECHEROKEE SMALL LETTER MICHEROKEE S" + + "MALL LETTER MOCHEROKEE SMALL LETTER MUCHEROKEE SMALL LETTER NACHEROKEE S" + + "MALL LETTER HNACHEROKEE SMALL LETTER NAHCHEROKEE SMALL LETTER NECHEROKEE" + + " SMALL LETTER NICHEROKEE SMALL LETTER NOCHEROKEE SMALL LETTER NUCHEROKEE" + + " SMALL LETTER NVCHEROKEE SMALL LETTER QUACHEROKEE SMALL LETTER QUECHEROK" + + "EE SMALL LETTER QUICHEROKEE SMALL LETTER QUOCHEROKEE SMALL LETTER QUUCHE" + + "ROKEE SMALL LETTER QUVCHEROKEE SMALL LETTER SACHEROKEE SMALL LETTER SCHE" + + "ROKEE SMALL LETTER SECHEROKEE SMALL LETTER SICHEROKEE SMALL LETTER SOCHE" + + "ROKEE SMALL LETTER SUCHEROKEE SMALL LETTER SVCHEROKEE SMALL LETTER DACHE" + + "ROKEE SMALL LETTER TACHEROKEE SMALL LETTER DECHEROKEE SMALL LETTER TECHE" + + "ROKEE SMALL LETTER DICHEROKEE SMALL LETTER TICHEROKEE SMALL LETTER DOCHE" + + "ROKEE SMALL LETTER DUCHEROKEE SMALL LETTER DVCHEROKEE SMALL LETTER DLACH" + + "EROKEE SMALL LETTER TLACHEROKEE SMALL LETTER TLECHEROKEE SMALL LETTER TL" + + "ICHEROKEE SMALL LETTER TLOCHEROKEE SMALL LETTER TLUCHEROKEE SMALL LETTER" + + " TLVCHEROKEE SMALL LETTER TSACHEROKEE SMALL LETTER TSECHEROKEE SMALL LET" + + "TER TSICHEROKEE SMALL LETTER TSOCHEROKEE SMALL LETTER TSUCHEROKEE SMALL " + + "LETTER TSVCHEROKEE SMALL LETTER WACHEROKEE SMALL LETTER WECHEROKEE SMALL" + + " LETTER WICHEROKEE SMALL LETTER WOCHEROKEE SMALL LETTER WUCHEROKEE SMALL" + + " LETTER WVCHEROKEE SMALL LETTER YAMEETEI MAYEK LETTER KOKMEETEI MAYEK LE" + + "TTER SAMMEETEI MAYEK LETTER LAIMEETEI MAYEK LETTER MITMEETEI MAYEK LETTE" + + "R PAMEETEI MAYEK LETTER NAMEETEI MAYEK LETTER CHILMEETEI MAYEK LETTER TI" + + "LMEETEI MAYEK LETTER KHOUMEETEI MAYEK LETTER NGOUMEETEI MAYEK LETTER THO" + + "UMEETEI MAYEK LETTER WAIMEETEI MAYEK LETTER YANGMEETEI MAYEK LETTER HUKM" + + "EETEI MAYEK LETTER UNMEETEI MAYEK LETTER IMEETEI MAYEK LETTER PHAMMEETEI" + + " MAYEK LETTER ATIYAMEETEI MAYEK LETTER GOKMEETEI MAYEK LETTER JHAMMEETEI" + + " MAYEK LETTER RAIMEETEI MAYEK LETTER BAMEETEI MAYEK LETTER JILMEETEI MAY" + + "EK LETTER DILMEETEI MAYEK LETTER GHOUMEETEI MAYEK LETTER DHOUMEETEI MAYE" + + "K LETTER BHAMMEETEI MAYEK LETTER KOK LONSUMMEETEI MAYEK LETTER LAI LONSU" + + "MMEETEI MAYEK LETTER MIT LONSUMMEETEI MAYEK LETTER PA LONSUMMEETEI MAYEK" + + " LETTER NA LONSUMMEETEI MAYEK LETTER TIL LONSUMMEETEI MAYEK LETTER NGOU " + + "LONSUMMEETEI MAYEK LETTER I LONSUMMEETEI MAYEK VOWEL SIGN ONAPMEETEI MAY" + + "EK VOWEL SIGN INAPMEETEI MAYEK VOWEL SIGN ANAPMEETEI MAYEK VOWEL SIGN YE" + + "NAPMEETEI MAYEK VOWEL SIGN SOUNAPMEETEI MAYEK VOWEL SIGN UNAPMEETEI MAYE" + + "K VOWEL SIGN CHEINAPMEETEI MAYEK VOWEL SIGN NUNGMEETEI MAYEK CHEIKHEIMEE" + + "TEI MAYEK LUM IYEKMEETEI MAYEK APUN IYEKMEETEI MAYEK DIGIT ZEROMEETEI MA" + + "YEK DIGIT ONEMEETEI MAYEK DIGIT TWOMEETEI MAYEK DIGIT THREEMEETEI MAYEK " + + "DIGIT FOURMEETEI MAYEK DIGIT FIVEMEETEI MAYEK DIGIT SIXMEETEI MAYEK DIGI" + + "T SEVENMEETEI MAYEK DIGIT EIGHTMEETEI MAYEK DIGIT NINEHANGUL JUNGSEONG O" + + "-YEOHANGUL JUNGSEONG O-O-IHANGUL JUNGSEONG YO-AHANGUL JUNGSEONG YO-AEHAN" + + "GUL JUNGSEONG YO-EOHANGUL JUNGSEONG U-YEOHANGUL JUNGSEONG U-I-IHANGUL JU" + + "NGSEONG YU-AEHANGUL JUNGSEONG YU-OHANGUL JUNGSEONG EU-AHANGUL JUNGSEONG " + + "EU-EOHANGUL JUNGSEONG EU-EHANGUL JUNGSEONG EU-OHANGUL JUNGSEONG I-YA-OHA" + + "NGUL JUNGSEONG I-YAEHANGUL JUNGSEONG I-YEOHANGUL JUNGSEONG I-YEHANGUL JU" + + "NGSEONG I-O-IHANGUL JUNGSEONG I-YOHANGUL JUNGSEONG I-YUHANGUL JUNGSEONG " + + "I-IHANGUL JUNGSEONG ARAEA-AHANGUL JUNGSEONG ARAEA-EHANGUL JONGSEONG NIEU" + + "N-RIEULHANGUL JONGSEONG NIEUN-CHIEUCHHANGUL JONGSEONG SSANGTIKEUTHANGUL " + + "JONGSEONG SSANGTIKEUT-PIEUPHANGUL JONGSEONG TIKEUT-PIEUPHANGUL JONGSEONG" + + " TIKEUT-SIOSHANGUL JONGSEONG TIKEUT-SIOS-KIYEOKHANGUL JONGSEONG TIKEUT-C" + + "IEUCHANGUL JONGSEONG TIKEUT-CHIEUCHHANGUL JONGSEONG TIKEUT-THIEUTHHANGUL" + + " JONGSEONG RIEUL-SSANGKIYEOKHANGUL JONGSEONG RIEUL-KIYEOK-HIEUHHANGUL JO" + + "NGSEONG SSANGRIEUL-KHIEUKHHANGUL JONGSEONG RIEUL-MIEUM-HIEUHHANGUL JONGS" + + "EONG RIEUL-PIEUP-TIKEUTHANGUL JONGSEONG RIEUL-PIEUP-PHIEUPHHANGUL JONGSE") + ("" + + "ONG RIEUL-YESIEUNGHANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUHHANGUL JONGSEO" + + "NG KAPYEOUNRIEULHANGUL JONGSEONG MIEUM-NIEUNHANGUL JONGSEONG MIEUM-SSANG" + + "NIEUNHANGUL JONGSEONG SSANGMIEUMHANGUL JONGSEONG MIEUM-PIEUP-SIOSHANGUL " + + "JONGSEONG MIEUM-CIEUCHANGUL JONGSEONG PIEUP-TIKEUTHANGUL JONGSEONG PIEUP" + + "-RIEUL-PHIEUPHHANGUL JONGSEONG PIEUP-MIEUMHANGUL JONGSEONG SSANGPIEUPHAN" + + "GUL JONGSEONG PIEUP-SIOS-TIKEUTHANGUL JONGSEONG PIEUP-CIEUCHANGUL JONGSE" + + "ONG PIEUP-CHIEUCHHANGUL JONGSEONG SIOS-MIEUMHANGUL JONGSEONG SIOS-KAPYEO" + + "UNPIEUPHANGUL JONGSEONG SSANGSIOS-KIYEOKHANGUL JONGSEONG SSANGSIOS-TIKEU" + + "THANGUL JONGSEONG SIOS-PANSIOSHANGUL JONGSEONG SIOS-CIEUCHANGUL JONGSEON" + + "G SIOS-CHIEUCHHANGUL JONGSEONG SIOS-THIEUTHHANGUL JONGSEONG SIOS-HIEUHHA" + + "NGUL JONGSEONG PANSIOS-PIEUPHANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUPHANGUL" + + " JONGSEONG YESIEUNG-MIEUMHANGUL JONGSEONG YESIEUNG-HIEUHHANGUL JONGSEONG" + + " CIEUC-PIEUPHANGUL JONGSEONG CIEUC-SSANGPIEUPHANGUL JONGSEONG SSANGCIEUC" + + "HANGUL JONGSEONG PHIEUPH-SIOSHANGUL JONGSEONG PHIEUPH-THIEUTHCJK COMPATI" + + "BILITY IDEOGRAPH-F900CJK COMPATIBILITY IDEOGRAPH-F901CJK COMPATIBILITY I" + + "DEOGRAPH-F902CJK COMPATIBILITY IDEOGRAPH-F903CJK COMPATIBILITY IDEOGRAPH" + + "-F904CJK COMPATIBILITY IDEOGRAPH-F905CJK COMPATIBILITY IDEOGRAPH-F906CJK" + + " COMPATIBILITY IDEOGRAPH-F907CJK COMPATIBILITY IDEOGRAPH-F908CJK COMPATI" + + "BILITY IDEOGRAPH-F909CJK COMPATIBILITY IDEOGRAPH-F90ACJK COMPATIBILITY I" + + "DEOGRAPH-F90BCJK COMPATIBILITY IDEOGRAPH-F90CCJK COMPATIBILITY IDEOGRAPH" + + "-F90DCJK COMPATIBILITY IDEOGRAPH-F90ECJK COMPATIBILITY IDEOGRAPH-F90FCJK" + + " COMPATIBILITY IDEOGRAPH-F910CJK COMPATIBILITY IDEOGRAPH-F911CJK COMPATI" + + "BILITY IDEOGRAPH-F912CJK COMPATIBILITY IDEOGRAPH-F913CJK COMPATIBILITY I" + + "DEOGRAPH-F914CJK COMPATIBILITY IDEOGRAPH-F915CJK COMPATIBILITY IDEOGRAPH" + + "-F916CJK COMPATIBILITY IDEOGRAPH-F917CJK COMPATIBILITY IDEOGRAPH-F918CJK" + + " COMPATIBILITY IDEOGRAPH-F919CJK COMPATIBILITY IDEOGRAPH-F91ACJK COMPATI" + + "BILITY IDEOGRAPH-F91BCJK COMPATIBILITY IDEOGRAPH-F91CCJK COMPATIBILITY I" + + "DEOGRAPH-F91DCJK COMPATIBILITY IDEOGRAPH-F91ECJK COMPATIBILITY IDEOGRAPH" + + "-F91FCJK COMPATIBILITY IDEOGRAPH-F920CJK COMPATIBILITY IDEOGRAPH-F921CJK" + + " COMPATIBILITY IDEOGRAPH-F922CJK COMPATIBILITY IDEOGRAPH-F923CJK COMPATI" + + "BILITY IDEOGRAPH-F924CJK COMPATIBILITY IDEOGRAPH-F925CJK COMPATIBILITY I" + + "DEOGRAPH-F926CJK COMPATIBILITY IDEOGRAPH-F927CJK COMPATIBILITY IDEOGRAPH" + + "-F928CJK COMPATIBILITY IDEOGRAPH-F929CJK COMPATIBILITY IDEOGRAPH-F92ACJK" + + " COMPATIBILITY IDEOGRAPH-F92BCJK COMPATIBILITY IDEOGRAPH-F92CCJK COMPATI" + + "BILITY IDEOGRAPH-F92DCJK COMPATIBILITY IDEOGRAPH-F92ECJK COMPATIBILITY I" + + "DEOGRAPH-F92FCJK COMPATIBILITY IDEOGRAPH-F930CJK COMPATIBILITY IDEOGRAPH" + + "-F931CJK COMPATIBILITY IDEOGRAPH-F932CJK COMPATIBILITY IDEOGRAPH-F933CJK" + + " COMPATIBILITY IDEOGRAPH-F934CJK COMPATIBILITY IDEOGRAPH-F935CJK COMPATI" + + "BILITY IDEOGRAPH-F936CJK COMPATIBILITY IDEOGRAPH-F937CJK COMPATIBILITY I" + + "DEOGRAPH-F938CJK COMPATIBILITY IDEOGRAPH-F939CJK COMPATIBILITY IDEOGRAPH" + + "-F93ACJK COMPATIBILITY IDEOGRAPH-F93BCJK COMPATIBILITY IDEOGRAPH-F93CCJK" + + " COMPATIBILITY IDEOGRAPH-F93DCJK COMPATIBILITY IDEOGRAPH-F93ECJK COMPATI" + + "BILITY IDEOGRAPH-F93FCJK COMPATIBILITY IDEOGRAPH-F940CJK COMPATIBILITY I" + + "DEOGRAPH-F941CJK COMPATIBILITY IDEOGRAPH-F942CJK COMPATIBILITY IDEOGRAPH" + + "-F943CJK COMPATIBILITY IDEOGRAPH-F944CJK COMPATIBILITY IDEOGRAPH-F945CJK" + + " COMPATIBILITY IDEOGRAPH-F946CJK COMPATIBILITY IDEOGRAPH-F947CJK COMPATI" + + "BILITY IDEOGRAPH-F948CJK COMPATIBILITY IDEOGRAPH-F949CJK COMPATIBILITY I" + + "DEOGRAPH-F94ACJK COMPATIBILITY IDEOGRAPH-F94BCJK COMPATIBILITY IDEOGRAPH" + + "-F94CCJK COMPATIBILITY IDEOGRAPH-F94DCJK COMPATIBILITY IDEOGRAPH-F94ECJK" + + " COMPATIBILITY IDEOGRAPH-F94FCJK COMPATIBILITY IDEOGRAPH-F950CJK COMPATI" + + "BILITY IDEOGRAPH-F951CJK COMPATIBILITY IDEOGRAPH-F952CJK COMPATIBILITY I" + + "DEOGRAPH-F953CJK COMPATIBILITY IDEOGRAPH-F954CJK COMPATIBILITY IDEOGRAPH" + + "-F955CJK COMPATIBILITY IDEOGRAPH-F956CJK COMPATIBILITY IDEOGRAPH-F957CJK" + + " COMPATIBILITY IDEOGRAPH-F958CJK COMPATIBILITY IDEOGRAPH-F959CJK COMPATI" + + "BILITY IDEOGRAPH-F95ACJK COMPATIBILITY IDEOGRAPH-F95BCJK COMPATIBILITY I" + + "DEOGRAPH-F95CCJK COMPATIBILITY IDEOGRAPH-F95DCJK COMPATIBILITY IDEOGRAPH" + + "-F95ECJK COMPATIBILITY IDEOGRAPH-F95FCJK COMPATIBILITY IDEOGRAPH-F960CJK" + + " COMPATIBILITY IDEOGRAPH-F961CJK COMPATIBILITY IDEOGRAPH-F962CJK COMPATI" + + "BILITY IDEOGRAPH-F963CJK COMPATIBILITY IDEOGRAPH-F964CJK COMPATIBILITY I" + + "DEOGRAPH-F965CJK COMPATIBILITY IDEOGRAPH-F966CJK COMPATIBILITY IDEOGRAPH" + + "-F967CJK COMPATIBILITY IDEOGRAPH-F968CJK COMPATIBILITY IDEOGRAPH-F969CJK" + + " COMPATIBILITY IDEOGRAPH-F96ACJK COMPATIBILITY IDEOGRAPH-F96BCJK COMPATI" + + "BILITY IDEOGRAPH-F96CCJK COMPATIBILITY IDEOGRAPH-F96DCJK COMPATIBILITY I" + + "DEOGRAPH-F96ECJK COMPATIBILITY IDEOGRAPH-F96FCJK COMPATIBILITY IDEOGRAPH") + ("" + + "-F970CJK COMPATIBILITY IDEOGRAPH-F971CJK COMPATIBILITY IDEOGRAPH-F972CJK" + + " COMPATIBILITY IDEOGRAPH-F973CJK COMPATIBILITY IDEOGRAPH-F974CJK COMPATI" + + "BILITY IDEOGRAPH-F975CJK COMPATIBILITY IDEOGRAPH-F976CJK COMPATIBILITY I" + + "DEOGRAPH-F977CJK COMPATIBILITY IDEOGRAPH-F978CJK COMPATIBILITY IDEOGRAPH" + + "-F979CJK COMPATIBILITY IDEOGRAPH-F97ACJK COMPATIBILITY IDEOGRAPH-F97BCJK" + + " COMPATIBILITY IDEOGRAPH-F97CCJK COMPATIBILITY IDEOGRAPH-F97DCJK COMPATI" + + "BILITY IDEOGRAPH-F97ECJK COMPATIBILITY IDEOGRAPH-F97FCJK COMPATIBILITY I" + + "DEOGRAPH-F980CJK COMPATIBILITY IDEOGRAPH-F981CJK COMPATIBILITY IDEOGRAPH" + + "-F982CJK COMPATIBILITY IDEOGRAPH-F983CJK COMPATIBILITY IDEOGRAPH-F984CJK" + + " COMPATIBILITY IDEOGRAPH-F985CJK COMPATIBILITY IDEOGRAPH-F986CJK COMPATI" + + "BILITY IDEOGRAPH-F987CJK COMPATIBILITY IDEOGRAPH-F988CJK COMPATIBILITY I" + + "DEOGRAPH-F989CJK COMPATIBILITY IDEOGRAPH-F98ACJK COMPATIBILITY IDEOGRAPH" + + "-F98BCJK COMPATIBILITY IDEOGRAPH-F98CCJK COMPATIBILITY IDEOGRAPH-F98DCJK" + + " COMPATIBILITY IDEOGRAPH-F98ECJK COMPATIBILITY IDEOGRAPH-F98FCJK COMPATI" + + "BILITY IDEOGRAPH-F990CJK COMPATIBILITY IDEOGRAPH-F991CJK COMPATIBILITY I" + + "DEOGRAPH-F992CJK COMPATIBILITY IDEOGRAPH-F993CJK COMPATIBILITY IDEOGRAPH" + + "-F994CJK COMPATIBILITY IDEOGRAPH-F995CJK COMPATIBILITY IDEOGRAPH-F996CJK" + + " COMPATIBILITY IDEOGRAPH-F997CJK COMPATIBILITY IDEOGRAPH-F998CJK COMPATI" + + "BILITY IDEOGRAPH-F999CJK COMPATIBILITY IDEOGRAPH-F99ACJK COMPATIBILITY I" + + "DEOGRAPH-F99BCJK COMPATIBILITY IDEOGRAPH-F99CCJK COMPATIBILITY IDEOGRAPH" + + "-F99DCJK COMPATIBILITY IDEOGRAPH-F99ECJK COMPATIBILITY IDEOGRAPH-F99FCJK" + + " COMPATIBILITY IDEOGRAPH-F9A0CJK COMPATIBILITY IDEOGRAPH-F9A1CJK COMPATI" + + "BILITY IDEOGRAPH-F9A2CJK COMPATIBILITY IDEOGRAPH-F9A3CJK COMPATIBILITY I" + + "DEOGRAPH-F9A4CJK COMPATIBILITY IDEOGRAPH-F9A5CJK COMPATIBILITY IDEOGRAPH" + + "-F9A6CJK COMPATIBILITY IDEOGRAPH-F9A7CJK COMPATIBILITY IDEOGRAPH-F9A8CJK" + + " COMPATIBILITY IDEOGRAPH-F9A9CJK COMPATIBILITY IDEOGRAPH-F9AACJK COMPATI" + + "BILITY IDEOGRAPH-F9ABCJK COMPATIBILITY IDEOGRAPH-F9ACCJK COMPATIBILITY I" + + "DEOGRAPH-F9ADCJK COMPATIBILITY IDEOGRAPH-F9AECJK COMPATIBILITY IDEOGRAPH" + + "-F9AFCJK COMPATIBILITY IDEOGRAPH-F9B0CJK COMPATIBILITY IDEOGRAPH-F9B1CJK" + + " COMPATIBILITY IDEOGRAPH-F9B2CJK COMPATIBILITY IDEOGRAPH-F9B3CJK COMPATI" + + "BILITY IDEOGRAPH-F9B4CJK COMPATIBILITY IDEOGRAPH-F9B5CJK COMPATIBILITY I" + + "DEOGRAPH-F9B6CJK COMPATIBILITY IDEOGRAPH-F9B7CJK COMPATIBILITY IDEOGRAPH" + + "-F9B8CJK COMPATIBILITY IDEOGRAPH-F9B9CJK COMPATIBILITY IDEOGRAPH-F9BACJK" + + " COMPATIBILITY IDEOGRAPH-F9BBCJK COMPATIBILITY IDEOGRAPH-F9BCCJK COMPATI" + + "BILITY IDEOGRAPH-F9BDCJK COMPATIBILITY IDEOGRAPH-F9BECJK COMPATIBILITY I" + + "DEOGRAPH-F9BFCJK COMPATIBILITY IDEOGRAPH-F9C0CJK COMPATIBILITY IDEOGRAPH" + + "-F9C1CJK COMPATIBILITY IDEOGRAPH-F9C2CJK COMPATIBILITY IDEOGRAPH-F9C3CJK" + + " COMPATIBILITY IDEOGRAPH-F9C4CJK COMPATIBILITY IDEOGRAPH-F9C5CJK COMPATI" + + "BILITY IDEOGRAPH-F9C6CJK COMPATIBILITY IDEOGRAPH-F9C7CJK COMPATIBILITY I" + + "DEOGRAPH-F9C8CJK COMPATIBILITY IDEOGRAPH-F9C9CJK COMPATIBILITY IDEOGRAPH" + + "-F9CACJK COMPATIBILITY IDEOGRAPH-F9CBCJK COMPATIBILITY IDEOGRAPH-F9CCCJK" + + " COMPATIBILITY IDEOGRAPH-F9CDCJK COMPATIBILITY IDEOGRAPH-F9CECJK COMPATI" + + "BILITY IDEOGRAPH-F9CFCJK COMPATIBILITY IDEOGRAPH-F9D0CJK COMPATIBILITY I" + + "DEOGRAPH-F9D1CJK COMPATIBILITY IDEOGRAPH-F9D2CJK COMPATIBILITY IDEOGRAPH" + + "-F9D3CJK COMPATIBILITY IDEOGRAPH-F9D4CJK COMPATIBILITY IDEOGRAPH-F9D5CJK" + + " COMPATIBILITY IDEOGRAPH-F9D6CJK COMPATIBILITY IDEOGRAPH-F9D7CJK COMPATI" + + "BILITY IDEOGRAPH-F9D8CJK COMPATIBILITY IDEOGRAPH-F9D9CJK COMPATIBILITY I" + + "DEOGRAPH-F9DACJK COMPATIBILITY IDEOGRAPH-F9DBCJK COMPATIBILITY IDEOGRAPH" + + "-F9DCCJK COMPATIBILITY IDEOGRAPH-F9DDCJK COMPATIBILITY IDEOGRAPH-F9DECJK" + + " COMPATIBILITY IDEOGRAPH-F9DFCJK COMPATIBILITY IDEOGRAPH-F9E0CJK COMPATI" + + "BILITY IDEOGRAPH-F9E1CJK COMPATIBILITY IDEOGRAPH-F9E2CJK COMPATIBILITY I" + + "DEOGRAPH-F9E3CJK COMPATIBILITY IDEOGRAPH-F9E4CJK COMPATIBILITY IDEOGRAPH" + + "-F9E5CJK COMPATIBILITY IDEOGRAPH-F9E6CJK COMPATIBILITY IDEOGRAPH-F9E7CJK" + + " COMPATIBILITY IDEOGRAPH-F9E8CJK COMPATIBILITY IDEOGRAPH-F9E9CJK COMPATI" + + "BILITY IDEOGRAPH-F9EACJK COMPATIBILITY IDEOGRAPH-F9EBCJK COMPATIBILITY I" + + "DEOGRAPH-F9ECCJK COMPATIBILITY IDEOGRAPH-F9EDCJK COMPATIBILITY IDEOGRAPH" + + "-F9EECJK COMPATIBILITY IDEOGRAPH-F9EFCJK COMPATIBILITY IDEOGRAPH-F9F0CJK" + + " COMPATIBILITY IDEOGRAPH-F9F1CJK COMPATIBILITY IDEOGRAPH-F9F2CJK COMPATI" + + "BILITY IDEOGRAPH-F9F3CJK COMPATIBILITY IDEOGRAPH-F9F4CJK COMPATIBILITY I" + + "DEOGRAPH-F9F5CJK COMPATIBILITY IDEOGRAPH-F9F6CJK COMPATIBILITY IDEOGRAPH" + + "-F9F7CJK COMPATIBILITY IDEOGRAPH-F9F8CJK COMPATIBILITY IDEOGRAPH-F9F9CJK" + + " COMPATIBILITY IDEOGRAPH-F9FACJK COMPATIBILITY IDEOGRAPH-F9FBCJK COMPATI" + + "BILITY IDEOGRAPH-F9FCCJK COMPATIBILITY IDEOGRAPH-F9FDCJK COMPATIBILITY I" + + "DEOGRAPH-F9FECJK COMPATIBILITY IDEOGRAPH-F9FFCJK COMPATIBILITY IDEOGRAPH") + ("" + + "-FA00CJK COMPATIBILITY IDEOGRAPH-FA01CJK COMPATIBILITY IDEOGRAPH-FA02CJK" + + " COMPATIBILITY IDEOGRAPH-FA03CJK COMPATIBILITY IDEOGRAPH-FA04CJK COMPATI" + + "BILITY IDEOGRAPH-FA05CJK COMPATIBILITY IDEOGRAPH-FA06CJK COMPATIBILITY I" + + "DEOGRAPH-FA07CJK COMPATIBILITY IDEOGRAPH-FA08CJK COMPATIBILITY IDEOGRAPH" + + "-FA09CJK COMPATIBILITY IDEOGRAPH-FA0ACJK COMPATIBILITY IDEOGRAPH-FA0BCJK" + + " COMPATIBILITY IDEOGRAPH-FA0CCJK COMPATIBILITY IDEOGRAPH-FA0DCJK COMPATI" + + "BILITY IDEOGRAPH-FA0ECJK COMPATIBILITY IDEOGRAPH-FA0FCJK COMPATIBILITY I" + + "DEOGRAPH-FA10CJK COMPATIBILITY IDEOGRAPH-FA11CJK COMPATIBILITY IDEOGRAPH" + + "-FA12CJK COMPATIBILITY IDEOGRAPH-FA13CJK COMPATIBILITY IDEOGRAPH-FA14CJK" + + " COMPATIBILITY IDEOGRAPH-FA15CJK COMPATIBILITY IDEOGRAPH-FA16CJK COMPATI" + + "BILITY IDEOGRAPH-FA17CJK COMPATIBILITY IDEOGRAPH-FA18CJK COMPATIBILITY I" + + "DEOGRAPH-FA19CJK COMPATIBILITY IDEOGRAPH-FA1ACJK COMPATIBILITY IDEOGRAPH" + + "-FA1BCJK COMPATIBILITY IDEOGRAPH-FA1CCJK COMPATIBILITY IDEOGRAPH-FA1DCJK" + + " COMPATIBILITY IDEOGRAPH-FA1ECJK COMPATIBILITY IDEOGRAPH-FA1FCJK COMPATI" + + "BILITY IDEOGRAPH-FA20CJK COMPATIBILITY IDEOGRAPH-FA21CJK COMPATIBILITY I" + + "DEOGRAPH-FA22CJK COMPATIBILITY IDEOGRAPH-FA23CJK COMPATIBILITY IDEOGRAPH" + + "-FA24CJK COMPATIBILITY IDEOGRAPH-FA25CJK COMPATIBILITY IDEOGRAPH-FA26CJK" + + " COMPATIBILITY IDEOGRAPH-FA27CJK COMPATIBILITY IDEOGRAPH-FA28CJK COMPATI" + + "BILITY IDEOGRAPH-FA29CJK COMPATIBILITY IDEOGRAPH-FA2ACJK COMPATIBILITY I" + + "DEOGRAPH-FA2BCJK COMPATIBILITY IDEOGRAPH-FA2CCJK COMPATIBILITY IDEOGRAPH" + + "-FA2DCJK COMPATIBILITY IDEOGRAPH-FA2ECJK COMPATIBILITY IDEOGRAPH-FA2FCJK" + + " COMPATIBILITY IDEOGRAPH-FA30CJK COMPATIBILITY IDEOGRAPH-FA31CJK COMPATI" + + "BILITY IDEOGRAPH-FA32CJK COMPATIBILITY IDEOGRAPH-FA33CJK COMPATIBILITY I" + + "DEOGRAPH-FA34CJK COMPATIBILITY IDEOGRAPH-FA35CJK COMPATIBILITY IDEOGRAPH" + + "-FA36CJK COMPATIBILITY IDEOGRAPH-FA37CJK COMPATIBILITY IDEOGRAPH-FA38CJK" + + " COMPATIBILITY IDEOGRAPH-FA39CJK COMPATIBILITY IDEOGRAPH-FA3ACJK COMPATI" + + "BILITY IDEOGRAPH-FA3BCJK COMPATIBILITY IDEOGRAPH-FA3CCJK COMPATIBILITY I" + + "DEOGRAPH-FA3DCJK COMPATIBILITY IDEOGRAPH-FA3ECJK COMPATIBILITY IDEOGRAPH" + + "-FA3FCJK COMPATIBILITY IDEOGRAPH-FA40CJK COMPATIBILITY IDEOGRAPH-FA41CJK" + + " COMPATIBILITY IDEOGRAPH-FA42CJK COMPATIBILITY IDEOGRAPH-FA43CJK COMPATI" + + "BILITY IDEOGRAPH-FA44CJK COMPATIBILITY IDEOGRAPH-FA45CJK COMPATIBILITY I" + + "DEOGRAPH-FA46CJK COMPATIBILITY IDEOGRAPH-FA47CJK COMPATIBILITY IDEOGRAPH" + + "-FA48CJK COMPATIBILITY IDEOGRAPH-FA49CJK COMPATIBILITY IDEOGRAPH-FA4ACJK" + + " COMPATIBILITY IDEOGRAPH-FA4BCJK COMPATIBILITY IDEOGRAPH-FA4CCJK COMPATI" + + "BILITY IDEOGRAPH-FA4DCJK COMPATIBILITY IDEOGRAPH-FA4ECJK COMPATIBILITY I" + + "DEOGRAPH-FA4FCJK COMPATIBILITY IDEOGRAPH-FA50CJK COMPATIBILITY IDEOGRAPH" + + "-FA51CJK COMPATIBILITY IDEOGRAPH-FA52CJK COMPATIBILITY IDEOGRAPH-FA53CJK" + + " COMPATIBILITY IDEOGRAPH-FA54CJK COMPATIBILITY IDEOGRAPH-FA55CJK COMPATI" + + "BILITY IDEOGRAPH-FA56CJK COMPATIBILITY IDEOGRAPH-FA57CJK COMPATIBILITY I" + + "DEOGRAPH-FA58CJK COMPATIBILITY IDEOGRAPH-FA59CJK COMPATIBILITY IDEOGRAPH" + + "-FA5ACJK COMPATIBILITY IDEOGRAPH-FA5BCJK COMPATIBILITY IDEOGRAPH-FA5CCJK" + + " COMPATIBILITY IDEOGRAPH-FA5DCJK COMPATIBILITY IDEOGRAPH-FA5ECJK COMPATI" + + "BILITY IDEOGRAPH-FA5FCJK COMPATIBILITY IDEOGRAPH-FA60CJK COMPATIBILITY I" + + "DEOGRAPH-FA61CJK COMPATIBILITY IDEOGRAPH-FA62CJK COMPATIBILITY IDEOGRAPH" + + "-FA63CJK COMPATIBILITY IDEOGRAPH-FA64CJK COMPATIBILITY IDEOGRAPH-FA65CJK" + + " COMPATIBILITY IDEOGRAPH-FA66CJK COMPATIBILITY IDEOGRAPH-FA67CJK COMPATI" + + "BILITY IDEOGRAPH-FA68CJK COMPATIBILITY IDEOGRAPH-FA69CJK COMPATIBILITY I" + + "DEOGRAPH-FA6ACJK COMPATIBILITY IDEOGRAPH-FA6BCJK COMPATIBILITY IDEOGRAPH" + + "-FA6CCJK COMPATIBILITY IDEOGRAPH-FA6DCJK COMPATIBILITY IDEOGRAPH-FA70CJK" + + " COMPATIBILITY IDEOGRAPH-FA71CJK COMPATIBILITY IDEOGRAPH-FA72CJK COMPATI" + + "BILITY IDEOGRAPH-FA73CJK COMPATIBILITY IDEOGRAPH-FA74CJK COMPATIBILITY I" + + "DEOGRAPH-FA75CJK COMPATIBILITY IDEOGRAPH-FA76CJK COMPATIBILITY IDEOGRAPH" + + "-FA77CJK COMPATIBILITY IDEOGRAPH-FA78CJK COMPATIBILITY IDEOGRAPH-FA79CJK" + + " COMPATIBILITY IDEOGRAPH-FA7ACJK COMPATIBILITY IDEOGRAPH-FA7BCJK COMPATI" + + "BILITY IDEOGRAPH-FA7CCJK COMPATIBILITY IDEOGRAPH-FA7DCJK COMPATIBILITY I" + + "DEOGRAPH-FA7ECJK COMPATIBILITY IDEOGRAPH-FA7FCJK COMPATIBILITY IDEOGRAPH" + + "-FA80CJK COMPATIBILITY IDEOGRAPH-FA81CJK COMPATIBILITY IDEOGRAPH-FA82CJK" + + " COMPATIBILITY IDEOGRAPH-FA83CJK COMPATIBILITY IDEOGRAPH-FA84CJK COMPATI" + + "BILITY IDEOGRAPH-FA85CJK COMPATIBILITY IDEOGRAPH-FA86CJK COMPATIBILITY I" + + "DEOGRAPH-FA87CJK COMPATIBILITY IDEOGRAPH-FA88CJK COMPATIBILITY IDEOGRAPH" + + "-FA89CJK COMPATIBILITY IDEOGRAPH-FA8ACJK COMPATIBILITY IDEOGRAPH-FA8BCJK" + + " COMPATIBILITY IDEOGRAPH-FA8CCJK COMPATIBILITY IDEOGRAPH-FA8DCJK COMPATI" + + "BILITY IDEOGRAPH-FA8ECJK COMPATIBILITY IDEOGRAPH-FA8FCJK COMPATIBILITY I" + + "DEOGRAPH-FA90CJK COMPATIBILITY IDEOGRAPH-FA91CJK COMPATIBILITY IDEOGRAPH") + ("" + + "-FA92CJK COMPATIBILITY IDEOGRAPH-FA93CJK COMPATIBILITY IDEOGRAPH-FA94CJK" + + " COMPATIBILITY IDEOGRAPH-FA95CJK COMPATIBILITY IDEOGRAPH-FA96CJK COMPATI" + + "BILITY IDEOGRAPH-FA97CJK COMPATIBILITY IDEOGRAPH-FA98CJK COMPATIBILITY I" + + "DEOGRAPH-FA99CJK COMPATIBILITY IDEOGRAPH-FA9ACJK COMPATIBILITY IDEOGRAPH" + + "-FA9BCJK COMPATIBILITY IDEOGRAPH-FA9CCJK COMPATIBILITY IDEOGRAPH-FA9DCJK" + + " COMPATIBILITY IDEOGRAPH-FA9ECJK COMPATIBILITY IDEOGRAPH-FA9FCJK COMPATI" + + "BILITY IDEOGRAPH-FAA0CJK COMPATIBILITY IDEOGRAPH-FAA1CJK COMPATIBILITY I" + + "DEOGRAPH-FAA2CJK COMPATIBILITY IDEOGRAPH-FAA3CJK COMPATIBILITY IDEOGRAPH" + + "-FAA4CJK COMPATIBILITY IDEOGRAPH-FAA5CJK COMPATIBILITY IDEOGRAPH-FAA6CJK" + + " COMPATIBILITY IDEOGRAPH-FAA7CJK COMPATIBILITY IDEOGRAPH-FAA8CJK COMPATI" + + "BILITY IDEOGRAPH-FAA9CJK COMPATIBILITY IDEOGRAPH-FAAACJK COMPATIBILITY I" + + "DEOGRAPH-FAABCJK COMPATIBILITY IDEOGRAPH-FAACCJK COMPATIBILITY IDEOGRAPH" + + "-FAADCJK COMPATIBILITY IDEOGRAPH-FAAECJK COMPATIBILITY IDEOGRAPH-FAAFCJK" + + " COMPATIBILITY IDEOGRAPH-FAB0CJK COMPATIBILITY IDEOGRAPH-FAB1CJK COMPATI" + + "BILITY IDEOGRAPH-FAB2CJK COMPATIBILITY IDEOGRAPH-FAB3CJK COMPATIBILITY I" + + "DEOGRAPH-FAB4CJK COMPATIBILITY IDEOGRAPH-FAB5CJK COMPATIBILITY IDEOGRAPH" + + "-FAB6CJK COMPATIBILITY IDEOGRAPH-FAB7CJK COMPATIBILITY IDEOGRAPH-FAB8CJK" + + " COMPATIBILITY IDEOGRAPH-FAB9CJK COMPATIBILITY IDEOGRAPH-FABACJK COMPATI" + + "BILITY IDEOGRAPH-FABBCJK COMPATIBILITY IDEOGRAPH-FABCCJK COMPATIBILITY I" + + "DEOGRAPH-FABDCJK COMPATIBILITY IDEOGRAPH-FABECJK COMPATIBILITY IDEOGRAPH" + + "-FABFCJK COMPATIBILITY IDEOGRAPH-FAC0CJK COMPATIBILITY IDEOGRAPH-FAC1CJK" + + " COMPATIBILITY IDEOGRAPH-FAC2CJK COMPATIBILITY IDEOGRAPH-FAC3CJK COMPATI" + + "BILITY IDEOGRAPH-FAC4CJK COMPATIBILITY IDEOGRAPH-FAC5CJK COMPATIBILITY I" + + "DEOGRAPH-FAC6CJK COMPATIBILITY IDEOGRAPH-FAC7CJK COMPATIBILITY IDEOGRAPH" + + "-FAC8CJK COMPATIBILITY IDEOGRAPH-FAC9CJK COMPATIBILITY IDEOGRAPH-FACACJK" + + " COMPATIBILITY IDEOGRAPH-FACBCJK COMPATIBILITY IDEOGRAPH-FACCCJK COMPATI" + + "BILITY IDEOGRAPH-FACDCJK COMPATIBILITY IDEOGRAPH-FACECJK COMPATIBILITY I" + + "DEOGRAPH-FACFCJK COMPATIBILITY IDEOGRAPH-FAD0CJK COMPATIBILITY IDEOGRAPH" + + "-FAD1CJK COMPATIBILITY IDEOGRAPH-FAD2CJK COMPATIBILITY IDEOGRAPH-FAD3CJK" + + " COMPATIBILITY IDEOGRAPH-FAD4CJK COMPATIBILITY IDEOGRAPH-FAD5CJK COMPATI" + + "BILITY IDEOGRAPH-FAD6CJK COMPATIBILITY IDEOGRAPH-FAD7CJK COMPATIBILITY I" + + "DEOGRAPH-FAD8CJK COMPATIBILITY IDEOGRAPH-FAD9LATIN SMALL LIGATURE FFLATI" + + "N SMALL LIGATURE FILATIN SMALL LIGATURE FLLATIN SMALL LIGATURE FFILATIN " + + "SMALL LIGATURE FFLLATIN SMALL LIGATURE LONG S TLATIN SMALL LIGATURE STAR" + + "MENIAN SMALL LIGATURE MEN NOWARMENIAN SMALL LIGATURE MEN ECHARMENIAN SMA" + + "LL LIGATURE MEN INIARMENIAN SMALL LIGATURE VEW NOWARMENIAN SMALL LIGATUR" + + "E MEN XEHHEBREW LETTER YOD WITH HIRIQHEBREW POINT JUDEO-SPANISH VARIKAHE" + + "BREW LIGATURE YIDDISH YOD YOD PATAHHEBREW LETTER ALTERNATIVE AYINHEBREW " + + "LETTER WIDE ALEFHEBREW LETTER WIDE DALETHEBREW LETTER WIDE HEHEBREW LETT" + + "ER WIDE KAFHEBREW LETTER WIDE LAMEDHEBREW LETTER WIDE FINAL MEMHEBREW LE" + + "TTER WIDE RESHHEBREW LETTER WIDE TAVHEBREW LETTER ALTERNATIVE PLUS SIGNH" + + "EBREW LETTER SHIN WITH SHIN DOTHEBREW LETTER SHIN WITH SIN DOTHEBREW LET" + + "TER SHIN WITH DAGESH AND SHIN DOTHEBREW LETTER SHIN WITH DAGESH AND SIN " + + "DOTHEBREW LETTER ALEF WITH PATAHHEBREW LETTER ALEF WITH QAMATSHEBREW LET" + + "TER ALEF WITH MAPIQHEBREW LETTER BET WITH DAGESHHEBREW LETTER GIMEL WITH" + + " DAGESHHEBREW LETTER DALET WITH DAGESHHEBREW LETTER HE WITH MAPIQHEBREW " + + "LETTER VAV WITH DAGESHHEBREW LETTER ZAYIN WITH DAGESHHEBREW LETTER TET W" + + "ITH DAGESHHEBREW LETTER YOD WITH DAGESHHEBREW LETTER FINAL KAF WITH DAGE" + + "SHHEBREW LETTER KAF WITH DAGESHHEBREW LETTER LAMED WITH DAGESHHEBREW LET" + + "TER MEM WITH DAGESHHEBREW LETTER NUN WITH DAGESHHEBREW LETTER SAMEKH WIT" + + "H DAGESHHEBREW LETTER FINAL PE WITH DAGESHHEBREW LETTER PE WITH DAGESHHE" + + "BREW LETTER TSADI WITH DAGESHHEBREW LETTER QOF WITH DAGESHHEBREW LETTER " + + "RESH WITH DAGESHHEBREW LETTER SHIN WITH DAGESHHEBREW LETTER TAV WITH DAG" + + "ESHHEBREW LETTER VAV WITH HOLAMHEBREW LETTER BET WITH RAFEHEBREW LETTER " + + "KAF WITH RAFEHEBREW LETTER PE WITH RAFEHEBREW LIGATURE ALEF LAMEDARABIC " + + "LETTER ALEF WASLA ISOLATED FORMARABIC LETTER ALEF WASLA FINAL FORMARABIC" + + " LETTER BEEH ISOLATED FORMARABIC LETTER BEEH FINAL FORMARABIC LETTER BEE" + + "H INITIAL FORMARABIC LETTER BEEH MEDIAL FORMARABIC LETTER PEH ISOLATED F" + + "ORMARABIC LETTER PEH FINAL FORMARABIC LETTER PEH INITIAL FORMARABIC LETT" + + "ER PEH MEDIAL FORMARABIC LETTER BEHEH ISOLATED FORMARABIC LETTER BEHEH F" + + "INAL FORMARABIC LETTER BEHEH INITIAL FORMARABIC LETTER BEHEH MEDIAL FORM" + + "ARABIC LETTER TTEHEH ISOLATED FORMARABIC LETTER TTEHEH FINAL FORMARABIC " + + "LETTER TTEHEH INITIAL FORMARABIC LETTER TTEHEH MEDIAL FORMARABIC LETTER " + + "TEHEH ISOLATED FORMARABIC LETTER TEHEH FINAL FORMARABIC LETTER TEHEH INI") + ("" + + "TIAL FORMARABIC LETTER TEHEH MEDIAL FORMARABIC LETTER TTEH ISOLATED FORM" + + "ARABIC LETTER TTEH FINAL FORMARABIC LETTER TTEH INITIAL FORMARABIC LETTE" + + "R TTEH MEDIAL FORMARABIC LETTER VEH ISOLATED FORMARABIC LETTER VEH FINAL" + + " FORMARABIC LETTER VEH INITIAL FORMARABIC LETTER VEH MEDIAL FORMARABIC L" + + "ETTER PEHEH ISOLATED FORMARABIC LETTER PEHEH FINAL FORMARABIC LETTER PEH" + + "EH INITIAL FORMARABIC LETTER PEHEH MEDIAL FORMARABIC LETTER DYEH ISOLATE" + + "D FORMARABIC LETTER DYEH FINAL FORMARABIC LETTER DYEH INITIAL FORMARABIC" + + " LETTER DYEH MEDIAL FORMARABIC LETTER NYEH ISOLATED FORMARABIC LETTER NY" + + "EH FINAL FORMARABIC LETTER NYEH INITIAL FORMARABIC LETTER NYEH MEDIAL FO" + + "RMARABIC LETTER TCHEH ISOLATED FORMARABIC LETTER TCHEH FINAL FORMARABIC " + + "LETTER TCHEH INITIAL FORMARABIC LETTER TCHEH MEDIAL FORMARABIC LETTER TC" + + "HEHEH ISOLATED FORMARABIC LETTER TCHEHEH FINAL FORMARABIC LETTER TCHEHEH" + + " INITIAL FORMARABIC LETTER TCHEHEH MEDIAL FORMARABIC LETTER DDAHAL ISOLA" + + "TED FORMARABIC LETTER DDAHAL FINAL FORMARABIC LETTER DAHAL ISOLATED FORM" + + "ARABIC LETTER DAHAL FINAL FORMARABIC LETTER DUL ISOLATED FORMARABIC LETT" + + "ER DUL FINAL FORMARABIC LETTER DDAL ISOLATED FORMARABIC LETTER DDAL FINA" + + "L FORMARABIC LETTER JEH ISOLATED FORMARABIC LETTER JEH FINAL FORMARABIC " + + "LETTER RREH ISOLATED FORMARABIC LETTER RREH FINAL FORMARABIC LETTER KEHE" + + "H ISOLATED FORMARABIC LETTER KEHEH FINAL FORMARABIC LETTER KEHEH INITIAL" + + " FORMARABIC LETTER KEHEH MEDIAL FORMARABIC LETTER GAF ISOLATED FORMARABI" + + "C LETTER GAF FINAL FORMARABIC LETTER GAF INITIAL FORMARABIC LETTER GAF M" + + "EDIAL FORMARABIC LETTER GUEH ISOLATED FORMARABIC LETTER GUEH FINAL FORMA" + + "RABIC LETTER GUEH INITIAL FORMARABIC LETTER GUEH MEDIAL FORMARABIC LETTE" + + "R NGOEH ISOLATED FORMARABIC LETTER NGOEH FINAL FORMARABIC LETTER NGOEH I" + + "NITIAL FORMARABIC LETTER NGOEH MEDIAL FORMARABIC LETTER NOON GHUNNA ISOL" + + "ATED FORMARABIC LETTER NOON GHUNNA FINAL FORMARABIC LETTER RNOON ISOLATE" + + "D FORMARABIC LETTER RNOON FINAL FORMARABIC LETTER RNOON INITIAL FORMARAB" + + "IC LETTER RNOON MEDIAL FORMARABIC LETTER HEH WITH YEH ABOVE ISOLATED FOR" + + "MARABIC LETTER HEH WITH YEH ABOVE FINAL FORMARABIC LETTER HEH GOAL ISOLA" + + "TED FORMARABIC LETTER HEH GOAL FINAL FORMARABIC LETTER HEH GOAL INITIAL " + + "FORMARABIC LETTER HEH GOAL MEDIAL FORMARABIC LETTER HEH DOACHASHMEE ISOL" + + "ATED FORMARABIC LETTER HEH DOACHASHMEE FINAL FORMARABIC LETTER HEH DOACH" + + "ASHMEE INITIAL FORMARABIC LETTER HEH DOACHASHMEE MEDIAL FORMARABIC LETTE" + + "R YEH BARREE ISOLATED FORMARABIC LETTER YEH BARREE FINAL FORMARABIC LETT" + + "ER YEH BARREE WITH HAMZA ABOVE ISOLATED FORMARABIC LETTER YEH BARREE WIT" + + "H HAMZA ABOVE FINAL FORMARABIC SYMBOL DOT ABOVEARABIC SYMBOL DOT BELOWAR" + + "ABIC SYMBOL TWO DOTS ABOVEARABIC SYMBOL TWO DOTS BELOWARABIC SYMBOL THRE" + + "E DOTS ABOVEARABIC SYMBOL THREE DOTS BELOWARABIC SYMBOL THREE DOTS POINT" + + "ING DOWNWARDS ABOVEARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOWARAB" + + "IC SYMBOL FOUR DOTS ABOVEARABIC SYMBOL FOUR DOTS BELOWARABIC SYMBOL DOUB" + + "LE VERTICAL BAR BELOWARABIC SYMBOL TWO DOTS VERTICALLY ABOVEARABIC SYMBO" + + "L TWO DOTS VERTICALLY BELOWARABIC SYMBOL RINGARABIC SYMBOL SMALL TAH ABO" + + "VEARABIC SYMBOL SMALL TAH BELOWARABIC LETTER NG ISOLATED FORMARABIC LETT" + + "ER NG FINAL FORMARABIC LETTER NG INITIAL FORMARABIC LETTER NG MEDIAL FOR" + + "MARABIC LETTER U ISOLATED FORMARABIC LETTER U FINAL FORMARABIC LETTER OE" + + " ISOLATED FORMARABIC LETTER OE FINAL FORMARABIC LETTER YU ISOLATED FORMA" + + "RABIC LETTER YU FINAL FORMARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM" + + "ARABIC LETTER VE ISOLATED FORMARABIC LETTER VE FINAL FORMARABIC LETTER K" + + "IRGHIZ OE ISOLATED FORMARABIC LETTER KIRGHIZ OE FINAL FORMARABIC LETTER " + + "KIRGHIZ YU ISOLATED FORMARABIC LETTER KIRGHIZ YU FINAL FORMARABIC LETTER" + + " E ISOLATED FORMARABIC LETTER E FINAL FORMARABIC LETTER E INITIAL FORMAR" + + "ABIC LETTER E MEDIAL FORMARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSUR" + + "A INITIAL FORMARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FO" + + "RMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORMARABIC LIG" + + "ATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORMARABIC LIGATURE YEH WITH " + + "HAMZA ABOVE WITH AE ISOLATED FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WI" + + "TH AE FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED F" + + "ORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORMARABIC LIGATU" + + "RE YEH WITH HAMZA ABOVE WITH U ISOLATED FORMARABIC LIGATURE YEH WITH HAM" + + "ZA ABOVE WITH U FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE I" + + "SOLATED FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORMARABI" + + "C LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORMARABIC LIGATURE YEH" + + " WITH HAMZA ABOVE WITH YU FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE" + + " WITH E ISOLATED FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL F") + ("" + + "ORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORMARABIC LIGATU" + + "RE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORMAR" + + "ABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINA" + + "L FORMARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKS" + + "URA INITIAL FORMARABIC LETTER FARSI YEH ISOLATED FORMARABIC LETTER FARSI" + + " YEH FINAL FORMARABIC LETTER FARSI YEH INITIAL FORMARABIC LETTER FARSI Y" + + "EH MEDIAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FO" + + "RMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORMARABIC LIGA" + + "TURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORMARABIC LIGATURE YEH WIT" + + "H HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE YEH WITH HA" + + "MZA ABOVE WITH YEH ISOLATED FORMARABIC LIGATURE BEH WITH JEEM ISOLATED F" + + "ORMARABIC LIGATURE BEH WITH HAH ISOLATED FORMARABIC LIGATURE BEH WITH KH" + + "AH ISOLATED FORMARABIC LIGATURE BEH WITH MEEM ISOLATED FORMARABIC LIGATU" + + "RE BEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE BEH WITH YEH ISOLA" + + "TED FORMARABIC LIGATURE TEH WITH JEEM ISOLATED FORMARABIC LIGATURE TEH W" + + "ITH HAH ISOLATED FORMARABIC LIGATURE TEH WITH KHAH ISOLATED FORMARABIC L" + + "IGATURE TEH WITH MEEM ISOLATED FORMARABIC LIGATURE TEH WITH ALEF MAKSURA" + + " ISOLATED FORMARABIC LIGATURE TEH WITH YEH ISOLATED FORMARABIC LIGATURE " + + "THEH WITH JEEM ISOLATED FORMARABIC LIGATURE THEH WITH MEEM ISOLATED FORM" + + "ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE THEH" + + " WITH YEH ISOLATED FORMARABIC LIGATURE JEEM WITH HAH ISOLATED FORMARABIC" + + " LIGATURE JEEM WITH MEEM ISOLATED FORMARABIC LIGATURE HAH WITH JEEM ISOL" + + "ATED FORMARABIC LIGATURE HAH WITH MEEM ISOLATED FORMARABIC LIGATURE KHAH" + + " WITH JEEM ISOLATED FORMARABIC LIGATURE KHAH WITH HAH ISOLATED FORMARABI" + + "C LIGATURE KHAH WITH MEEM ISOLATED FORMARABIC LIGATURE SEEN WITH JEEM IS" + + "OLATED FORMARABIC LIGATURE SEEN WITH HAH ISOLATED FORMARABIC LIGATURE SE" + + "EN WITH KHAH ISOLATED FORMARABIC LIGATURE SEEN WITH MEEM ISOLATED FORMAR" + + "ABIC LIGATURE SAD WITH HAH ISOLATED FORMARABIC LIGATURE SAD WITH MEEM IS" + + "OLATED FORMARABIC LIGATURE DAD WITH JEEM ISOLATED FORMARABIC LIGATURE DA" + + "D WITH HAH ISOLATED FORMARABIC LIGATURE DAD WITH KHAH ISOLATED FORMARABI" + + "C LIGATURE DAD WITH MEEM ISOLATED FORMARABIC LIGATURE TAH WITH HAH ISOLA" + + "TED FORMARABIC LIGATURE TAH WITH MEEM ISOLATED FORMARABIC LIGATURE ZAH W" + + "ITH MEEM ISOLATED FORMARABIC LIGATURE AIN WITH JEEM ISOLATED FORMARABIC " + + "LIGATURE AIN WITH MEEM ISOLATED FORMARABIC LIGATURE GHAIN WITH JEEM ISOL" + + "ATED FORMARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORMARABIC LIGATURE FE" + + "H WITH JEEM ISOLATED FORMARABIC LIGATURE FEH WITH HAH ISOLATED FORMARABI" + + "C LIGATURE FEH WITH KHAH ISOLATED FORMARABIC LIGATURE FEH WITH MEEM ISOL" + + "ATED FORMARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGAT" + + "URE FEH WITH YEH ISOLATED FORMARABIC LIGATURE QAF WITH HAH ISOLATED FORM" + + "ARABIC LIGATURE QAF WITH MEEM ISOLATED FORMARABIC LIGATURE QAF WITH ALEF" + + " MAKSURA ISOLATED FORMARABIC LIGATURE QAF WITH YEH ISOLATED FORMARABIC L" + + "IGATURE KAF WITH ALEF ISOLATED FORMARABIC LIGATURE KAF WITH JEEM ISOLATE" + + "D FORMARABIC LIGATURE KAF WITH HAH ISOLATED FORMARABIC LIGATURE KAF WITH" + + " KHAH ISOLATED FORMARABIC LIGATURE KAF WITH LAM ISOLATED FORMARABIC LIGA" + + "TURE KAF WITH MEEM ISOLATED FORMARABIC LIGATURE KAF WITH ALEF MAKSURA IS" + + "OLATED FORMARABIC LIGATURE KAF WITH YEH ISOLATED FORMARABIC LIGATURE LAM" + + " WITH JEEM ISOLATED FORMARABIC LIGATURE LAM WITH HAH ISOLATED FORMARABIC" + + " LIGATURE LAM WITH KHAH ISOLATED FORMARABIC LIGATURE LAM WITH MEEM ISOLA" + + "TED FORMARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATU" + + "RE LAM WITH YEH ISOLATED FORMARABIC LIGATURE MEEM WITH JEEM ISOLATED FOR" + + "MARABIC LIGATURE MEEM WITH HAH ISOLATED FORMARABIC LIGATURE MEEM WITH KH" + + "AH ISOLATED FORMARABIC LIGATURE MEEM WITH MEEM ISOLATED FORMARABIC LIGAT" + + "URE MEEM WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE MEEM WITH YEH IS" + + "OLATED FORMARABIC LIGATURE NOON WITH JEEM ISOLATED FORMARABIC LIGATURE N" + + "OON WITH HAH ISOLATED FORMARABIC LIGATURE NOON WITH KHAH ISOLATED FORMAR" + + "ABIC LIGATURE NOON WITH MEEM ISOLATED FORMARABIC LIGATURE NOON WITH ALEF" + + " MAKSURA ISOLATED FORMARABIC LIGATURE NOON WITH YEH ISOLATED FORMARABIC " + + "LIGATURE HEH WITH JEEM ISOLATED FORMARABIC LIGATURE HEH WITH MEEM ISOLAT" + + "ED FORMARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATUR" + + "E HEH WITH YEH ISOLATED FORMARABIC LIGATURE YEH WITH JEEM ISOLATED FORMA" + + "RABIC LIGATURE YEH WITH HAH ISOLATED FORMARABIC LIGATURE YEH WITH KHAH I" + + "SOLATED FORMARABIC LIGATURE YEH WITH MEEM ISOLATED FORMARABIC LIGATURE Y" + + "EH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE YEH WITH YEH ISOLATED " + + "FORMARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGAT") + ("" + + "URE REH WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGATURE ALEF MAKSURA " + + "WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGATURE SHADDA WITH DAMMATAN " + + "ISOLATED FORMARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORMARABIC LI" + + "GATURE SHADDA WITH FATHA ISOLATED FORMARABIC LIGATURE SHADDA WITH DAMMA " + + "ISOLATED FORMARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORMARABIC LIGAT" + + "URE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGATURE YEH WITH H" + + "AMZA ABOVE WITH REH FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH " + + "ZAIN FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM" + + "ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORMARABIC LIGATURE" + + " YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE YEH WI" + + "TH HAMZA ABOVE WITH YEH FINAL FORMARABIC LIGATURE BEH WITH REH FINAL FOR" + + "MARABIC LIGATURE BEH WITH ZAIN FINAL FORMARABIC LIGATURE BEH WITH MEEM F" + + "INAL FORMARABIC LIGATURE BEH WITH NOON FINAL FORMARABIC LIGATURE BEH WIT" + + "H ALEF MAKSURA FINAL FORMARABIC LIGATURE BEH WITH YEH FINAL FORMARABIC L" + + "IGATURE TEH WITH REH FINAL FORMARABIC LIGATURE TEH WITH ZAIN FINAL FORMA" + + "RABIC LIGATURE TEH WITH MEEM FINAL FORMARABIC LIGATURE TEH WITH NOON FIN" + + "AL FORMARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE T" + + "EH WITH YEH FINAL FORMARABIC LIGATURE THEH WITH REH FINAL FORMARABIC LIG" + + "ATURE THEH WITH ZAIN FINAL FORMARABIC LIGATURE THEH WITH MEEM FINAL FORM" + + "ARABIC LIGATURE THEH WITH NOON FINAL FORMARABIC LIGATURE THEH WITH ALEF " + + "MAKSURA FINAL FORMARABIC LIGATURE THEH WITH YEH FINAL FORMARABIC LIGATUR" + + "E FEH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE FEH WITH YEH FINAL FOR" + + "MARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE QAF WIT" + + "H YEH FINAL FORMARABIC LIGATURE KAF WITH ALEF FINAL FORMARABIC LIGATURE " + + "KAF WITH LAM FINAL FORMARABIC LIGATURE KAF WITH MEEM FINAL FORMARABIC LI" + + "GATURE KAF WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE KAF WITH YEH FINA" + + "L FORMARABIC LIGATURE LAM WITH MEEM FINAL FORMARABIC LIGATURE LAM WITH A" + + "LEF MAKSURA FINAL FORMARABIC LIGATURE LAM WITH YEH FINAL FORMARABIC LIGA" + + "TURE MEEM WITH ALEF FINAL FORMARABIC LIGATURE MEEM WITH MEEM FINAL FORMA" + + "RABIC LIGATURE NOON WITH REH FINAL FORMARABIC LIGATURE NOON WITH ZAIN FI" + + "NAL FORMARABIC LIGATURE NOON WITH MEEM FINAL FORMARABIC LIGATURE NOON WI" + + "TH NOON FINAL FORMARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORMARABI" + + "C LIGATURE NOON WITH YEH FINAL FORMARABIC LIGATURE ALEF MAKSURA WITH SUP" + + "ERSCRIPT ALEF FINAL FORMARABIC LIGATURE YEH WITH REH FINAL FORMARABIC LI" + + "GATURE YEH WITH ZAIN FINAL FORMARABIC LIGATURE YEH WITH MEEM FINAL FORMA" + + "RABIC LIGATURE YEH WITH NOON FINAL FORMARABIC LIGATURE YEH WITH ALEF MAK" + + "SURA FINAL FORMARABIC LIGATURE YEH WITH YEH FINAL FORMARABIC LIGATURE YE" + + "H WITH HAMZA ABOVE WITH JEEM INITIAL FORMARABIC LIGATURE YEH WITH HAMZA " + + "ABOVE WITH HAH INITIAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHA" + + "H INITIAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FOR" + + "MARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORMARABIC LIGATU" + + "RE BEH WITH JEEM INITIAL FORMARABIC LIGATURE BEH WITH HAH INITIAL FORMAR" + + "ABIC LIGATURE BEH WITH KHAH INITIAL FORMARABIC LIGATURE BEH WITH MEEM IN" + + "ITIAL FORMARABIC LIGATURE BEH WITH HEH INITIAL FORMARABIC LIGATURE TEH W" + + "ITH JEEM INITIAL FORMARABIC LIGATURE TEH WITH HAH INITIAL FORMARABIC LIG" + + "ATURE TEH WITH KHAH INITIAL FORMARABIC LIGATURE TEH WITH MEEM INITIAL FO" + + "RMARABIC LIGATURE TEH WITH HEH INITIAL FORMARABIC LIGATURE THEH WITH MEE" + + "M INITIAL FORMARABIC LIGATURE JEEM WITH HAH INITIAL FORMARABIC LIGATURE " + + "JEEM WITH MEEM INITIAL FORMARABIC LIGATURE HAH WITH JEEM INITIAL FORMARA" + + "BIC LIGATURE HAH WITH MEEM INITIAL FORMARABIC LIGATURE KHAH WITH JEEM IN" + + "ITIAL FORMARABIC LIGATURE KHAH WITH MEEM INITIAL FORMARABIC LIGATURE SEE" + + "N WITH JEEM INITIAL FORMARABIC LIGATURE SEEN WITH HAH INITIAL FORMARABIC" + + " LIGATURE SEEN WITH KHAH INITIAL FORMARABIC LIGATURE SEEN WITH MEEM INIT" + + "IAL FORMARABIC LIGATURE SAD WITH HAH INITIAL FORMARABIC LIGATURE SAD WIT" + + "H KHAH INITIAL FORMARABIC LIGATURE SAD WITH MEEM INITIAL FORMARABIC LIGA" + + "TURE DAD WITH JEEM INITIAL FORMARABIC LIGATURE DAD WITH HAH INITIAL FORM" + + "ARABIC LIGATURE DAD WITH KHAH INITIAL FORMARABIC LIGATURE DAD WITH MEEM " + + "INITIAL FORMARABIC LIGATURE TAH WITH HAH INITIAL FORMARABIC LIGATURE ZAH" + + " WITH MEEM INITIAL FORMARABIC LIGATURE AIN WITH JEEM INITIAL FORMARABIC " + + "LIGATURE AIN WITH MEEM INITIAL FORMARABIC LIGATURE GHAIN WITH JEEM INITI" + + "AL FORMARABIC LIGATURE GHAIN WITH MEEM INITIAL FORMARABIC LIGATURE FEH W" + + "ITH JEEM INITIAL FORMARABIC LIGATURE FEH WITH HAH INITIAL FORMARABIC LIG" + + "ATURE FEH WITH KHAH INITIAL FORMARABIC LIGATURE FEH WITH MEEM INITIAL FO" + + "RMARABIC LIGATURE QAF WITH HAH INITIAL FORMARABIC LIGATURE QAF WITH MEEM") + ("" + + " INITIAL FORMARABIC LIGATURE KAF WITH JEEM INITIAL FORMARABIC LIGATURE K" + + "AF WITH HAH INITIAL FORMARABIC LIGATURE KAF WITH KHAH INITIAL FORMARABIC" + + " LIGATURE KAF WITH LAM INITIAL FORMARABIC LIGATURE KAF WITH MEEM INITIAL" + + " FORMARABIC LIGATURE LAM WITH JEEM INITIAL FORMARABIC LIGATURE LAM WITH " + + "HAH INITIAL FORMARABIC LIGATURE LAM WITH KHAH INITIAL FORMARABIC LIGATUR" + + "E LAM WITH MEEM INITIAL FORMARABIC LIGATURE LAM WITH HEH INITIAL FORMARA" + + "BIC LIGATURE MEEM WITH JEEM INITIAL FORMARABIC LIGATURE MEEM WITH HAH IN" + + "ITIAL FORMARABIC LIGATURE MEEM WITH KHAH INITIAL FORMARABIC LIGATURE MEE" + + "M WITH MEEM INITIAL FORMARABIC LIGATURE NOON WITH JEEM INITIAL FORMARABI" + + "C LIGATURE NOON WITH HAH INITIAL FORMARABIC LIGATURE NOON WITH KHAH INIT" + + "IAL FORMARABIC LIGATURE NOON WITH MEEM INITIAL FORMARABIC LIGATURE NOON " + + "WITH HEH INITIAL FORMARABIC LIGATURE HEH WITH JEEM INITIAL FORMARABIC LI" + + "GATURE HEH WITH MEEM INITIAL FORMARABIC LIGATURE HEH WITH SUPERSCRIPT AL" + + "EF INITIAL FORMARABIC LIGATURE YEH WITH JEEM INITIAL FORMARABIC LIGATURE" + + " YEH WITH HAH INITIAL FORMARABIC LIGATURE YEH WITH KHAH INITIAL FORMARAB" + + "IC LIGATURE YEH WITH MEEM INITIAL FORMARABIC LIGATURE YEH WITH HEH INITI" + + "AL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORMARABIC " + + "LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORMARABIC LIGATURE BEH WI" + + "TH MEEM MEDIAL FORMARABIC LIGATURE BEH WITH HEH MEDIAL FORMARABIC LIGATU" + + "RE TEH WITH MEEM MEDIAL FORMARABIC LIGATURE TEH WITH HEH MEDIAL FORMARAB" + + "IC LIGATURE THEH WITH MEEM MEDIAL FORMARABIC LIGATURE THEH WITH HEH MEDI" + + "AL FORMARABIC LIGATURE SEEN WITH MEEM MEDIAL FORMARABIC LIGATURE SEEN WI" + + "TH HEH MEDIAL FORMARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORMARABIC LIGA" + + "TURE SHEEN WITH HEH MEDIAL FORMARABIC LIGATURE KAF WITH LAM MEDIAL FORMA" + + "RABIC LIGATURE KAF WITH MEEM MEDIAL FORMARABIC LIGATURE LAM WITH MEEM ME" + + "DIAL FORMARABIC LIGATURE NOON WITH MEEM MEDIAL FORMARABIC LIGATURE NOON " + + "WITH HEH MEDIAL FORMARABIC LIGATURE YEH WITH MEEM MEDIAL FORMARABIC LIGA" + + "TURE YEH WITH HEH MEDIAL FORMARABIC LIGATURE SHADDA WITH FATHA MEDIAL FO" + + "RMARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORMARABIC LIGATURE SHADDA WI" + + "TH KASRA MEDIAL FORMARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORMA" + + "RABIC LIGATURE TAH WITH YEH ISOLATED FORMARABIC LIGATURE AIN WITH ALEF M" + + "AKSURA ISOLATED FORMARABIC LIGATURE AIN WITH YEH ISOLATED FORMARABIC LIG" + + "ATURE GHAIN WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE GHAIN WITH YE" + + "H ISOLATED FORMARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORMARABI" + + "C LIGATURE SEEN WITH YEH ISOLATED FORMARABIC LIGATURE SHEEN WITH ALEF MA" + + "KSURA ISOLATED FORMARABIC LIGATURE SHEEN WITH YEH ISOLATED FORMARABIC LI" + + "GATURE HAH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE HAH WITH YEH I" + + "SOLATED FORMARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORMARABIC L" + + "IGATURE JEEM WITH YEH ISOLATED FORMARABIC LIGATURE KHAH WITH ALEF MAKSUR" + + "A ISOLATED FORMARABIC LIGATURE KHAH WITH YEH ISOLATED FORMARABIC LIGATUR" + + "E SAD WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE SAD WITH YEH ISOLAT" + + "ED FORMARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATUR" + + "E DAD WITH YEH ISOLATED FORMARABIC LIGATURE SHEEN WITH JEEM ISOLATED FOR" + + "MARABIC LIGATURE SHEEN WITH HAH ISOLATED FORMARABIC LIGATURE SHEEN WITH " + + "KHAH ISOLATED FORMARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORMARABIC LI" + + "GATURE SHEEN WITH REH ISOLATED FORMARABIC LIGATURE SEEN WITH REH ISOLATE" + + "D FORMARABIC LIGATURE SAD WITH REH ISOLATED FORMARABIC LIGATURE DAD WITH" + + " REH ISOLATED FORMARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORMARABIC" + + " LIGATURE TAH WITH YEH FINAL FORMARABIC LIGATURE AIN WITH ALEF MAKSURA F" + + "INAL FORMARABIC LIGATURE AIN WITH YEH FINAL FORMARABIC LIGATURE GHAIN WI" + + "TH ALEF MAKSURA FINAL FORMARABIC LIGATURE GHAIN WITH YEH FINAL FORMARABI" + + "C LIGATURE SEEN WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE SEEN WITH YE" + + "H FINAL FORMARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORMARABIC LIG" + + "ATURE SHEEN WITH YEH FINAL FORMARABIC LIGATURE HAH WITH ALEF MAKSURA FIN" + + "AL FORMARABIC LIGATURE HAH WITH YEH FINAL FORMARABIC LIGATURE JEEM WITH " + + "ALEF MAKSURA FINAL FORMARABIC LIGATURE JEEM WITH YEH FINAL FORMARABIC LI" + + "GATURE KHAH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE KHAH WITH YEH FI" + + "NAL FORMARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE " + + "SAD WITH YEH FINAL FORMARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORMA" + + "RABIC LIGATURE DAD WITH YEH FINAL FORMARABIC LIGATURE SHEEN WITH JEEM FI" + + "NAL FORMARABIC LIGATURE SHEEN WITH HAH FINAL FORMARABIC LIGATURE SHEEN W" + + "ITH KHAH FINAL FORMARABIC LIGATURE SHEEN WITH MEEM FINAL FORMARABIC LIGA" + + "TURE SHEEN WITH REH FINAL FORMARABIC LIGATURE SEEN WITH REH FINAL FORMAR" + + "ABIC LIGATURE SAD WITH REH FINAL FORMARABIC LIGATURE DAD WITH REH FINAL ") + ("" + + "FORMARABIC LIGATURE SHEEN WITH JEEM INITIAL FORMARABIC LIGATURE SHEEN WI" + + "TH HAH INITIAL FORMARABIC LIGATURE SHEEN WITH KHAH INITIAL FORMARABIC LI" + + "GATURE SHEEN WITH MEEM INITIAL FORMARABIC LIGATURE SEEN WITH HEH INITIAL" + + " FORMARABIC LIGATURE SHEEN WITH HEH INITIAL FORMARABIC LIGATURE TAH WITH" + + " MEEM INITIAL FORMARABIC LIGATURE SEEN WITH JEEM MEDIAL FORMARABIC LIGAT" + + "URE SEEN WITH HAH MEDIAL FORMARABIC LIGATURE SEEN WITH KHAH MEDIAL FORMA" + + "RABIC LIGATURE SHEEN WITH JEEM MEDIAL FORMARABIC LIGATURE SHEEN WITH HAH" + + " MEDIAL FORMARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORMARABIC LIGATURE T" + + "AH WITH MEEM MEDIAL FORMARABIC LIGATURE ZAH WITH MEEM MEDIAL FORMARABIC " + + "LIGATURE ALEF WITH FATHATAN FINAL FORMARABIC LIGATURE ALEF WITH FATHATAN" + + " ISOLATED FORMORNATE LEFT PARENTHESISORNATE RIGHT PARENTHESISARABIC LIGA" + + "TURE TEH WITH JEEM WITH MEEM INITIAL FORMARABIC LIGATURE TEH WITH HAH WI" + + "TH JEEM FINAL FORMARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORMARA" + + "BIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORMARABIC LIGATURE TEH WITH" + + " KHAH WITH MEEM INITIAL FORMARABIC LIGATURE TEH WITH MEEM WITH JEEM INIT" + + "IAL FORMARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORMARABIC LIGATU" + + "RE TEH WITH MEEM WITH KHAH INITIAL FORMARABIC LIGATURE JEEM WITH MEEM WI" + + "TH HAH FINAL FORMARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORMARA" + + "BIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE HAH WITH M" + + "EEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE SEEN WITH HAH WITH JEEM " + + "INITIAL FORMARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORMARABIC L" + + "IGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE SEEN " + + "WITH MEEM WITH HAH FINAL FORMARABIC LIGATURE SEEN WITH MEEM WITH HAH INI" + + "TIAL FORMARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORMARABIC LIG" + + "ATURE SEEN WITH MEEM WITH MEEM FINAL FORMARABIC LIGATURE SEEN WITH MEEM " + + "WITH MEEM INITIAL FORMARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORMAR" + + "ABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORMARABIC LIGATURE SAD WITH" + + " MEEM WITH MEEM FINAL FORMARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL" + + " FORMARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORMARABIC LIGATUR" + + "E SHEEN WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE SHEEN WITH MEEM WIT" + + "H KHAH FINAL FORMARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORMA" + + "RABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORMARABIC LIGATURE SHEEN" + + " WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE DAD WITH HAH WITH ALEF " + + "MAKSURA FINAL FORMARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORMARAB" + + "IC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORMARABIC LIGATURE TAH WITH" + + " MEEM WITH HAH FINAL FORMARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL " + + "FORMARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE " + + "TAH WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE AIN WITH JEEM WITH MEEM" + + " FINAL FORMARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORMARABIC LIGA" + + "TURE AIN WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE AIN WITH MEEM W" + + "ITH ALEF MAKSURA FINAL FORMARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FIN" + + "AL FORMARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORMARABIC LIGATUR" + + "E GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE FEH WITH K" + + "HAH WITH MEEM FINAL FORMARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL " + + "FORMARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORMARABIC LIGATURE QAF" + + " WITH MEEM WITH MEEM FINAL FORMARABIC LIGATURE LAM WITH HAH WITH MEEM FI" + + "NAL FORMARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORMARABIC LIGATURE " + + "LAM WITH HAH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE LAM WITH JEEM W" + + "ITH JEEM INITIAL FORMARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORMA" + + "RABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORMARABIC LIGATURE LAM WIT" + + "H KHAH WITH MEEM INITIAL FORMARABIC LIGATURE LAM WITH MEEM WITH HAH FINA" + + "L FORMARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORMARABIC LIGATURE" + + " MEEM WITH HAH WITH JEEM INITIAL FORMARABIC LIGATURE MEEM WITH HAH WITH " + + "MEEM INITIAL FORMARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORMARABIC" + + " LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORMARABIC LIGATURE MEEM WITH " + + "JEEM WITH MEEM INITIAL FORMARABIC LIGATURE MEEM WITH KHAH WITH JEEM INIT" + + "IAL FORMARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORMARABIC LIGA" + + "TURE MEEM WITH JEEM WITH KHAH INITIAL FORMARABIC LIGATURE HEH WITH MEEM " + + "WITH JEEM INITIAL FORMARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FO" + + "RMARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORMARABIC LIGATURE NO" + + "ON WITH HAH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE NOON WITH JEEM W" + + "ITH MEEM FINAL FORMARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM" + + "ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATU" + + "RE NOON WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE NOON WITH MEEM WITH") + ("" + + " ALEF MAKSURA FINAL FORMARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FO" + + "RMARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE BE" + + "H WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE TEH WITH JEEM WITH YEH FI" + + "NAL FORMARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORMARABIC" + + " LIGATURE TEH WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE TEH WITH KHAH" + + " WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE TEH WITH MEEM WITH YEH FINA" + + "L FORMARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORMARABIC L" + + "IGATURE JEEM WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE JEEM WITH HAH " + + "WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAK" + + "SURA FINAL FORMARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FO" + + "RMARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORMARABIC LIGATURE SHEEN " + + "WITH HAH WITH YEH FINAL FORMARABIC LIGATURE DAD WITH HAH WITH YEH FINAL " + + "FORMARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE LAM" + + " WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE YEH WITH HAH WITH YEH FINA" + + "L FORMARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE Y" + + "EH WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE MEEM WITH MEEM WITH YEH " + + "FINAL FORMARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORMARABIC LIGATU" + + "RE NOON WITH HAH WITH YEH FINAL FORMARABIC LIGATURE QAF WITH MEEM WITH H" + + "AH INITIAL FORMARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORMARABIC" + + " LIGATURE AIN WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE KAF WITH MEEM" + + " WITH YEH FINAL FORMARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM" + + "ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE LAM WI" + + "TH JEEM WITH MEEM INITIAL FORMARABIC LIGATURE KAF WITH MEEM WITH MEEM FI" + + "NAL FORMARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORMARABIC LIGATUR" + + "E NOON WITH JEEM WITH HAH FINAL FORMARABIC LIGATURE JEEM WITH HAH WITH Y" + + "EH FINAL FORMARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORMARABIC LIG" + + "ATURE MEEM WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE FEH WITH MEEM WI" + + "TH YEH FINAL FORMARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORMARABIC " + + "LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE AIN WITH JE" + + "EM WITH MEEM INITIAL FORMARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL" + + " FORMARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE N" + + "OON WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE SALLA USED AS KORANIC S" + + "TOP SIGN ISOLATED FORMARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISO" + + "LATED FORMARABIC LIGATURE ALLAH ISOLATED FORMARABIC LIGATURE AKBAR ISOLA" + + "TED FORMARABIC LIGATURE MOHAMMAD ISOLATED FORMARABIC LIGATURE SALAM ISOL" + + "ATED FORMARABIC LIGATURE RASOUL ISOLATED FORMARABIC LIGATURE ALAYHE ISOL" + + "ATED FORMARABIC LIGATURE WASALLAM ISOLATED FORMARABIC LIGATURE SALLA ISO" + + "LATED FORMARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAMARABIC LIGATURE JAL" + + "LAJALALOUHOURIAL SIGNARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEMVARIAT" + + "ION SELECTOR-1VARIATION SELECTOR-2VARIATION SELECTOR-3VARIATION SELECTOR" + + "-4VARIATION SELECTOR-5VARIATION SELECTOR-6VARIATION SELECTOR-7VARIATION " + + "SELECTOR-8VARIATION SELECTOR-9VARIATION SELECTOR-10VARIATION SELECTOR-11" + + "VARIATION SELECTOR-12VARIATION SELECTOR-13VARIATION SELECTOR-14VARIATION" + + " SELECTOR-15VARIATION SELECTOR-16PRESENTATION FORM FOR VERTICAL COMMAPRE" + + "SENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMAPRESENTATION FORM FOR VERTI" + + "CAL IDEOGRAPHIC FULL STOPPRESENTATION FORM FOR VERTICAL COLONPRESENTATIO" + + "N FORM FOR VERTICAL SEMICOLONPRESENTATION FORM FOR VERTICAL EXCLAMATION " + + "MARKPRESENTATION FORM FOR VERTICAL QUESTION MARKPRESENTATION FORM FOR VE" + + "RTICAL LEFT WHITE LENTICULAR BRACKETPRESENTATION FORM FOR VERTICAL RIGHT" + + " WHITE LENTICULAR BRAKCETPRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIP" + + "SISCOMBINING LIGATURE LEFT HALFCOMBINING LIGATURE RIGHT HALFCOMBINING DO" + + "UBLE TILDE LEFT HALFCOMBINING DOUBLE TILDE RIGHT HALFCOMBINING MACRON LE" + + "FT HALFCOMBINING MACRON RIGHT HALFCOMBINING CONJOINING MACRONCOMBINING L" + + "IGATURE LEFT HALF BELOWCOMBINING LIGATURE RIGHT HALF BELOWCOMBINING TILD" + + "E LEFT HALF BELOWCOMBINING TILDE RIGHT HALF BELOWCOMBINING MACRON LEFT H" + + "ALF BELOWCOMBINING MACRON RIGHT HALF BELOWCOMBINING CONJOINING MACRON BE" + + "LOWCOMBINING CYRILLIC TITLO LEFT HALFCOMBINING CYRILLIC TITLO RIGHT HALF" + + "PRESENTATION FORM FOR VERTICAL TWO DOT LEADERPRESENTATION FORM FOR VERTI" + + "CAL EM DASHPRESENTATION FORM FOR VERTICAL EN DASHPRESENTATION FORM FOR V" + + "ERTICAL LOW LINEPRESENTATION FORM FOR VERTICAL WAVY LOW LINEPRESENTATION" + + " FORM FOR VERTICAL LEFT PARENTHESISPRESENTATION FORM FOR VERTICAL RIGHT " + + "PARENTHESISPRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKETPRESENTATION" + + " FORM FOR VERTICAL RIGHT CURLY BRACKETPRESENTATION FORM FOR VERTICAL LEF" + + "T TORTOISE SHELL BRACKETPRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SH") + ("" + + "ELL BRACKETPRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKETP" + + "RESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKETPRESENTATION" + + " FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKETPRESENTATION FORM FOR VERTIC" + + "AL RIGHT DOUBLE ANGLE BRACKETPRESENTATION FORM FOR VERTICAL LEFT ANGLE B" + + "RACKETPRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKETPRESENTATION FOR" + + "M FOR VERTICAL LEFT CORNER BRACKETPRESENTATION FORM FOR VERTICAL RIGHT C" + + "ORNER BRACKETPRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKETPRE" + + "SENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKETSESAME DOTWHITE SE" + + "SAME DOTPRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKETPRESENTATION F" + + "ORM FOR VERTICAL RIGHT SQUARE BRACKETDASHED OVERLINECENTRELINE OVERLINEW" + + "AVY OVERLINEDOUBLE WAVY OVERLINEDASHED LOW LINECENTRELINE LOW LINEWAVY L" + + "OW LINESMALL COMMASMALL IDEOGRAPHIC COMMASMALL FULL STOPSMALL SEMICOLONS" + + "MALL COLONSMALL QUESTION MARKSMALL EXCLAMATION MARKSMALL EM DASHSMALL LE" + + "FT PARENTHESISSMALL RIGHT PARENTHESISSMALL LEFT CURLY BRACKETSMALL RIGHT" + + " CURLY BRACKETSMALL LEFT TORTOISE SHELL BRACKETSMALL RIGHT TORTOISE SHEL" + + "L BRACKETSMALL NUMBER SIGNSMALL AMPERSANDSMALL ASTERISKSMALL PLUS SIGNSM" + + "ALL HYPHEN-MINUSSMALL LESS-THAN SIGNSMALL GREATER-THAN SIGNSMALL EQUALS " + + "SIGNSMALL REVERSE SOLIDUSSMALL DOLLAR SIGNSMALL PERCENT SIGNSMALL COMMER" + + "CIAL ATARABIC FATHATAN ISOLATED FORMARABIC TATWEEL WITH FATHATAN ABOVEAR" + + "ABIC DAMMATAN ISOLATED FORMARABIC TAIL FRAGMENTARABIC KASRATAN ISOLATED " + + "FORMARABIC FATHA ISOLATED FORMARABIC FATHA MEDIAL FORMARABIC DAMMA ISOLA" + + "TED FORMARABIC DAMMA MEDIAL FORMARABIC KASRA ISOLATED FORMARABIC KASRA M" + + "EDIAL FORMARABIC SHADDA ISOLATED FORMARABIC SHADDA MEDIAL FORMARABIC SUK" + + "UN ISOLATED FORMARABIC SUKUN MEDIAL FORMARABIC LETTER HAMZA ISOLATED FOR" + + "MARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORMARABIC LETTER ALEF WIT" + + "H MADDA ABOVE FINAL FORMARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FOR" + + "MARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORMARABIC LETTER WAW WITH HA" + + "MZA ABOVE ISOLATED FORMARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORMARAB" + + "IC LETTER ALEF WITH HAMZA BELOW ISOLATED FORMARABIC LETTER ALEF WITH HAM" + + "ZA BELOW FINAL FORMARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORMARABI" + + "C LETTER YEH WITH HAMZA ABOVE FINAL FORMARABIC LETTER YEH WITH HAMZA ABO" + + "VE INITIAL FORMARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORMARABIC LETT" + + "ER ALEF ISOLATED FORMARABIC LETTER ALEF FINAL FORMARABIC LETTER BEH ISOL" + + "ATED FORMARABIC LETTER BEH FINAL FORMARABIC LETTER BEH INITIAL FORMARABI" + + "C LETTER BEH MEDIAL FORMARABIC LETTER TEH MARBUTA ISOLATED FORMARABIC LE" + + "TTER TEH MARBUTA FINAL FORMARABIC LETTER TEH ISOLATED FORMARABIC LETTER " + + "TEH FINAL FORMARABIC LETTER TEH INITIAL FORMARABIC LETTER TEH MEDIAL FOR" + + "MARABIC LETTER THEH ISOLATED FORMARABIC LETTER THEH FINAL FORMARABIC LET" + + "TER THEH INITIAL FORMARABIC LETTER THEH MEDIAL FORMARABIC LETTER JEEM IS" + + "OLATED FORMARABIC LETTER JEEM FINAL FORMARABIC LETTER JEEM INITIAL FORMA" + + "RABIC LETTER JEEM MEDIAL FORMARABIC LETTER HAH ISOLATED FORMARABIC LETTE" + + "R HAH FINAL FORMARABIC LETTER HAH INITIAL FORMARABIC LETTER HAH MEDIAL F" + + "ORMARABIC LETTER KHAH ISOLATED FORMARABIC LETTER KHAH FINAL FORMARABIC L" + + "ETTER KHAH INITIAL FORMARABIC LETTER KHAH MEDIAL FORMARABIC LETTER DAL I" + + "SOLATED FORMARABIC LETTER DAL FINAL FORMARABIC LETTER THAL ISOLATED FORM" + + "ARABIC LETTER THAL FINAL FORMARABIC LETTER REH ISOLATED FORMARABIC LETTE" + + "R REH FINAL FORMARABIC LETTER ZAIN ISOLATED FORMARABIC LETTER ZAIN FINAL" + + " FORMARABIC LETTER SEEN ISOLATED FORMARABIC LETTER SEEN FINAL FORMARABIC" + + " LETTER SEEN INITIAL FORMARABIC LETTER SEEN MEDIAL FORMARABIC LETTER SHE" + + "EN ISOLATED FORMARABIC LETTER SHEEN FINAL FORMARABIC LETTER SHEEN INITIA" + + "L FORMARABIC LETTER SHEEN MEDIAL FORMARABIC LETTER SAD ISOLATED FORMARAB" + + "IC LETTER SAD FINAL FORMARABIC LETTER SAD INITIAL FORMARABIC LETTER SAD " + + "MEDIAL FORMARABIC LETTER DAD ISOLATED FORMARABIC LETTER DAD FINAL FORMAR" + + "ABIC LETTER DAD INITIAL FORMARABIC LETTER DAD MEDIAL FORMARABIC LETTER T" + + "AH ISOLATED FORMARABIC LETTER TAH FINAL FORMARABIC LETTER TAH INITIAL FO" + + "RMARABIC LETTER TAH MEDIAL FORMARABIC LETTER ZAH ISOLATED FORMARABIC LET" + + "TER ZAH FINAL FORMARABIC LETTER ZAH INITIAL FORMARABIC LETTER ZAH MEDIAL" + + " FORMARABIC LETTER AIN ISOLATED FORMARABIC LETTER AIN FINAL FORMARABIC L" + + "ETTER AIN INITIAL FORMARABIC LETTER AIN MEDIAL FORMARABIC LETTER GHAIN I" + + "SOLATED FORMARABIC LETTER GHAIN FINAL FORMARABIC LETTER GHAIN INITIAL FO" + + "RMARABIC LETTER GHAIN MEDIAL FORMARABIC LETTER FEH ISOLATED FORMARABIC L" + + "ETTER FEH FINAL FORMARABIC LETTER FEH INITIAL FORMARABIC LETTER FEH MEDI" + + "AL FORMARABIC LETTER QAF ISOLATED FORMARABIC LETTER QAF FINAL FORMARABIC" + + " LETTER QAF INITIAL FORMARABIC LETTER QAF MEDIAL FORMARABIC LETTER KAF I") + ("" + + "SOLATED FORMARABIC LETTER KAF FINAL FORMARABIC LETTER KAF INITIAL FORMAR" + + "ABIC LETTER KAF MEDIAL FORMARABIC LETTER LAM ISOLATED FORMARABIC LETTER " + + "LAM FINAL FORMARABIC LETTER LAM INITIAL FORMARABIC LETTER LAM MEDIAL FOR" + + "MARABIC LETTER MEEM ISOLATED FORMARABIC LETTER MEEM FINAL FORMARABIC LET" + + "TER MEEM INITIAL FORMARABIC LETTER MEEM MEDIAL FORMARABIC LETTER NOON IS" + + "OLATED FORMARABIC LETTER NOON FINAL FORMARABIC LETTER NOON INITIAL FORMA" + + "RABIC LETTER NOON MEDIAL FORMARABIC LETTER HEH ISOLATED FORMARABIC LETTE" + + "R HEH FINAL FORMARABIC LETTER HEH INITIAL FORMARABIC LETTER HEH MEDIAL F" + + "ORMARABIC LETTER WAW ISOLATED FORMARABIC LETTER WAW FINAL FORMARABIC LET" + + "TER ALEF MAKSURA ISOLATED FORMARABIC LETTER ALEF MAKSURA FINAL FORMARABI" + + "C LETTER YEH ISOLATED FORMARABIC LETTER YEH FINAL FORMARABIC LETTER YEH " + + "INITIAL FORMARABIC LETTER YEH MEDIAL FORMARABIC LIGATURE LAM WITH ALEF W" + + "ITH MADDA ABOVE ISOLATED FORMARABIC LIGATURE LAM WITH ALEF WITH MADDA AB" + + "OVE FINAL FORMARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FO" + + "RMARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORMARABIC LIGATU" + + "RE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORMARABIC LIGATURE LAM WITH " + + "ALEF WITH HAMZA BELOW FINAL FORMARABIC LIGATURE LAM WITH ALEF ISOLATED F" + + "ORMARABIC LIGATURE LAM WITH ALEF FINAL FORMZERO WIDTH NO-BREAK SPACEFULL" + + "WIDTH EXCLAMATION MARKFULLWIDTH QUOTATION MARKFULLWIDTH NUMBER SIGNFULLW" + + "IDTH DOLLAR SIGNFULLWIDTH PERCENT SIGNFULLWIDTH AMPERSANDFULLWIDTH APOST" + + "ROPHEFULLWIDTH LEFT PARENTHESISFULLWIDTH RIGHT PARENTHESISFULLWIDTH ASTE" + + "RISKFULLWIDTH PLUS SIGNFULLWIDTH COMMAFULLWIDTH HYPHEN-MINUSFULLWIDTH FU" + + "LL STOPFULLWIDTH SOLIDUSFULLWIDTH DIGIT ZEROFULLWIDTH DIGIT ONEFULLWIDTH" + + " DIGIT TWOFULLWIDTH DIGIT THREEFULLWIDTH DIGIT FOURFULLWIDTH DIGIT FIVEF" + + "ULLWIDTH DIGIT SIXFULLWIDTH DIGIT SEVENFULLWIDTH DIGIT EIGHTFULLWIDTH DI" + + "GIT NINEFULLWIDTH COLONFULLWIDTH SEMICOLONFULLWIDTH LESS-THAN SIGNFULLWI" + + "DTH EQUALS SIGNFULLWIDTH GREATER-THAN SIGNFULLWIDTH QUESTION MARKFULLWID" + + "TH COMMERCIAL ATFULLWIDTH LATIN CAPITAL LETTER AFULLWIDTH LATIN CAPITAL " + + "LETTER BFULLWIDTH LATIN CAPITAL LETTER CFULLWIDTH LATIN CAPITAL LETTER D" + + "FULLWIDTH LATIN CAPITAL LETTER EFULLWIDTH LATIN CAPITAL LETTER FFULLWIDT" + + "H LATIN CAPITAL LETTER GFULLWIDTH LATIN CAPITAL LETTER HFULLWIDTH LATIN " + + "CAPITAL LETTER IFULLWIDTH LATIN CAPITAL LETTER JFULLWIDTH LATIN CAPITAL " + + "LETTER KFULLWIDTH LATIN CAPITAL LETTER LFULLWIDTH LATIN CAPITAL LETTER M" + + "FULLWIDTH LATIN CAPITAL LETTER NFULLWIDTH LATIN CAPITAL LETTER OFULLWIDT" + + "H LATIN CAPITAL LETTER PFULLWIDTH LATIN CAPITAL LETTER QFULLWIDTH LATIN " + + "CAPITAL LETTER RFULLWIDTH LATIN CAPITAL LETTER SFULLWIDTH LATIN CAPITAL " + + "LETTER TFULLWIDTH LATIN CAPITAL LETTER UFULLWIDTH LATIN CAPITAL LETTER V" + + "FULLWIDTH LATIN CAPITAL LETTER WFULLWIDTH LATIN CAPITAL LETTER XFULLWIDT" + + "H LATIN CAPITAL LETTER YFULLWIDTH LATIN CAPITAL LETTER ZFULLWIDTH LEFT S" + + "QUARE BRACKETFULLWIDTH REVERSE SOLIDUSFULLWIDTH RIGHT SQUARE BRACKETFULL" + + "WIDTH CIRCUMFLEX ACCENTFULLWIDTH LOW LINEFULLWIDTH GRAVE ACCENTFULLWIDTH" + + " LATIN SMALL LETTER AFULLWIDTH LATIN SMALL LETTER BFULLWIDTH LATIN SMALL" + + " LETTER CFULLWIDTH LATIN SMALL LETTER DFULLWIDTH LATIN SMALL LETTER EFUL" + + "LWIDTH LATIN SMALL LETTER FFULLWIDTH LATIN SMALL LETTER GFULLWIDTH LATIN" + + " SMALL LETTER HFULLWIDTH LATIN SMALL LETTER IFULLWIDTH LATIN SMALL LETTE" + + "R JFULLWIDTH LATIN SMALL LETTER KFULLWIDTH LATIN SMALL LETTER LFULLWIDTH" + + " LATIN SMALL LETTER MFULLWIDTH LATIN SMALL LETTER NFULLWIDTH LATIN SMALL" + + " LETTER OFULLWIDTH LATIN SMALL LETTER PFULLWIDTH LATIN SMALL LETTER QFUL" + + "LWIDTH LATIN SMALL LETTER RFULLWIDTH LATIN SMALL LETTER SFULLWIDTH LATIN" + + " SMALL LETTER TFULLWIDTH LATIN SMALL LETTER UFULLWIDTH LATIN SMALL LETTE" + + "R VFULLWIDTH LATIN SMALL LETTER WFULLWIDTH LATIN SMALL LETTER XFULLWIDTH" + + " LATIN SMALL LETTER YFULLWIDTH LATIN SMALL LETTER ZFULLWIDTH LEFT CURLY " + + "BRACKETFULLWIDTH VERTICAL LINEFULLWIDTH RIGHT CURLY BRACKETFULLWIDTH TIL" + + "DEFULLWIDTH LEFT WHITE PARENTHESISFULLWIDTH RIGHT WHITE PARENTHESISHALFW" + + "IDTH IDEOGRAPHIC FULL STOPHALFWIDTH LEFT CORNER BRACKETHALFWIDTH RIGHT C" + + "ORNER BRACKETHALFWIDTH IDEOGRAPHIC COMMAHALFWIDTH KATAKANA MIDDLE DOTHAL" + + "FWIDTH KATAKANA LETTER WOHALFWIDTH KATAKANA LETTER SMALL AHALFWIDTH KATA" + + "KANA LETTER SMALL IHALFWIDTH KATAKANA LETTER SMALL UHALFWIDTH KATAKANA L" + + "ETTER SMALL EHALFWIDTH KATAKANA LETTER SMALL OHALFWIDTH KATAKANA LETTER " + + "SMALL YAHALFWIDTH KATAKANA LETTER SMALL YUHALFWIDTH KATAKANA LETTER SMAL" + + "L YOHALFWIDTH KATAKANA LETTER SMALL TUHALFWIDTH KATAKANA-HIRAGANA PROLON" + + "GED SOUND MARKHALFWIDTH KATAKANA LETTER AHALFWIDTH KATAKANA LETTER IHALF" + + "WIDTH KATAKANA LETTER UHALFWIDTH KATAKANA LETTER EHALFWIDTH KATAKANA LET" + + "TER OHALFWIDTH KATAKANA LETTER KAHALFWIDTH KATAKANA LETTER KIHALFWIDTH K") + ("" + + "ATAKANA LETTER KUHALFWIDTH KATAKANA LETTER KEHALFWIDTH KATAKANA LETTER K" + + "OHALFWIDTH KATAKANA LETTER SAHALFWIDTH KATAKANA LETTER SIHALFWIDTH KATAK" + + "ANA LETTER SUHALFWIDTH KATAKANA LETTER SEHALFWIDTH KATAKANA LETTER SOHAL" + + "FWIDTH KATAKANA LETTER TAHALFWIDTH KATAKANA LETTER TIHALFWIDTH KATAKANA " + + "LETTER TUHALFWIDTH KATAKANA LETTER TEHALFWIDTH KATAKANA LETTER TOHALFWID" + + "TH KATAKANA LETTER NAHALFWIDTH KATAKANA LETTER NIHALFWIDTH KATAKANA LETT" + + "ER NUHALFWIDTH KATAKANA LETTER NEHALFWIDTH KATAKANA LETTER NOHALFWIDTH K" + + "ATAKANA LETTER HAHALFWIDTH KATAKANA LETTER HIHALFWIDTH KATAKANA LETTER H" + + "UHALFWIDTH KATAKANA LETTER HEHALFWIDTH KATAKANA LETTER HOHALFWIDTH KATAK" + + "ANA LETTER MAHALFWIDTH KATAKANA LETTER MIHALFWIDTH KATAKANA LETTER MUHAL" + + "FWIDTH KATAKANA LETTER MEHALFWIDTH KATAKANA LETTER MOHALFWIDTH KATAKANA " + + "LETTER YAHALFWIDTH KATAKANA LETTER YUHALFWIDTH KATAKANA LETTER YOHALFWID" + + "TH KATAKANA LETTER RAHALFWIDTH KATAKANA LETTER RIHALFWIDTH KATAKANA LETT" + + "ER RUHALFWIDTH KATAKANA LETTER REHALFWIDTH KATAKANA LETTER ROHALFWIDTH K" + + "ATAKANA LETTER WAHALFWIDTH KATAKANA LETTER NHALFWIDTH KATAKANA VOICED SO" + + "UND MARKHALFWIDTH KATAKANA SEMI-VOICED SOUND MARKHALFWIDTH HANGUL FILLER" + + "HALFWIDTH HANGUL LETTER KIYEOKHALFWIDTH HANGUL LETTER SSANGKIYEOKHALFWID" + + "TH HANGUL LETTER KIYEOK-SIOSHALFWIDTH HANGUL LETTER NIEUNHALFWIDTH HANGU" + + "L LETTER NIEUN-CIEUCHALFWIDTH HANGUL LETTER NIEUN-HIEUHHALFWIDTH HANGUL " + + "LETTER TIKEUTHALFWIDTH HANGUL LETTER SSANGTIKEUTHALFWIDTH HANGUL LETTER " + + "RIEULHALFWIDTH HANGUL LETTER RIEUL-KIYEOKHALFWIDTH HANGUL LETTER RIEUL-M" + + "IEUMHALFWIDTH HANGUL LETTER RIEUL-PIEUPHALFWIDTH HANGUL LETTER RIEUL-SIO" + + "SHALFWIDTH HANGUL LETTER RIEUL-THIEUTHHALFWIDTH HANGUL LETTER RIEUL-PHIE" + + "UPHHALFWIDTH HANGUL LETTER RIEUL-HIEUHHALFWIDTH HANGUL LETTER MIEUMHALFW" + + "IDTH HANGUL LETTER PIEUPHALFWIDTH HANGUL LETTER SSANGPIEUPHALFWIDTH HANG" + + "UL LETTER PIEUP-SIOSHALFWIDTH HANGUL LETTER SIOSHALFWIDTH HANGUL LETTER " + + "SSANGSIOSHALFWIDTH HANGUL LETTER IEUNGHALFWIDTH HANGUL LETTER CIEUCHALFW" + + "IDTH HANGUL LETTER SSANGCIEUCHALFWIDTH HANGUL LETTER CHIEUCHHALFWIDTH HA" + + "NGUL LETTER KHIEUKHHALFWIDTH HANGUL LETTER THIEUTHHALFWIDTH HANGUL LETTE" + + "R PHIEUPHHALFWIDTH HANGUL LETTER HIEUHHALFWIDTH HANGUL LETTER AHALFWIDTH" + + " HANGUL LETTER AEHALFWIDTH HANGUL LETTER YAHALFWIDTH HANGUL LETTER YAEHA" + + "LFWIDTH HANGUL LETTER EOHALFWIDTH HANGUL LETTER EHALFWIDTH HANGUL LETTER" + + " YEOHALFWIDTH HANGUL LETTER YEHALFWIDTH HANGUL LETTER OHALFWIDTH HANGUL " + + "LETTER WAHALFWIDTH HANGUL LETTER WAEHALFWIDTH HANGUL LETTER OEHALFWIDTH " + + "HANGUL LETTER YOHALFWIDTH HANGUL LETTER UHALFWIDTH HANGUL LETTER WEOHALF" + + "WIDTH HANGUL LETTER WEHALFWIDTH HANGUL LETTER WIHALFWIDTH HANGUL LETTER " + + "YUHALFWIDTH HANGUL LETTER EUHALFWIDTH HANGUL LETTER YIHALFWIDTH HANGUL L" + + "ETTER IFULLWIDTH CENT SIGNFULLWIDTH POUND SIGNFULLWIDTH NOT SIGNFULLWIDT" + + "H MACRONFULLWIDTH BROKEN BARFULLWIDTH YEN SIGNFULLWIDTH WON SIGNHALFWIDT" + + "H FORMS LIGHT VERTICALHALFWIDTH LEFTWARDS ARROWHALFWIDTH UPWARDS ARROWHA" + + "LFWIDTH RIGHTWARDS ARROWHALFWIDTH DOWNWARDS ARROWHALFWIDTH BLACK SQUAREH" + + "ALFWIDTH WHITE CIRCLEINTERLINEAR ANNOTATION ANCHORINTERLINEAR ANNOTATION" + + " SEPARATORINTERLINEAR ANNOTATION TERMINATOROBJECT REPLACEMENT CHARACTERR" + + "EPLACEMENT CHARACTERLINEAR B SYLLABLE B008 ALINEAR B SYLLABLE B038 ELINE" + + "AR B SYLLABLE B028 ILINEAR B SYLLABLE B061 OLINEAR B SYLLABLE B010 ULINE" + + "AR B SYLLABLE B001 DALINEAR B SYLLABLE B045 DELINEAR B SYLLABLE B007 DIL" + + "INEAR B SYLLABLE B014 DOLINEAR B SYLLABLE B051 DULINEAR B SYLLABLE B057 " + + "JALINEAR B SYLLABLE B046 JELINEAR B SYLLABLE B036 JOLINEAR B SYLLABLE B0" + + "65 JULINEAR B SYLLABLE B077 KALINEAR B SYLLABLE B044 KELINEAR B SYLLABLE" + + " B067 KILINEAR B SYLLABLE B070 KOLINEAR B SYLLABLE B081 KULINEAR B SYLLA" + + "BLE B080 MALINEAR B SYLLABLE B013 MELINEAR B SYLLABLE B073 MILINEAR B SY" + + "LLABLE B015 MOLINEAR B SYLLABLE B023 MULINEAR B SYLLABLE B006 NALINEAR B" + + " SYLLABLE B024 NELINEAR B SYLLABLE B030 NILINEAR B SYLLABLE B052 NOLINEA" + + "R B SYLLABLE B055 NULINEAR B SYLLABLE B003 PALINEAR B SYLLABLE B072 PELI" + + "NEAR B SYLLABLE B039 PILINEAR B SYLLABLE B011 POLINEAR B SYLLABLE B050 P" + + "ULINEAR B SYLLABLE B016 QALINEAR B SYLLABLE B078 QELINEAR B SYLLABLE B02" + + "1 QILINEAR B SYLLABLE B032 QOLINEAR B SYLLABLE B060 RALINEAR B SYLLABLE " + + "B027 RELINEAR B SYLLABLE B053 RILINEAR B SYLLABLE B002 ROLINEAR B SYLLAB" + + "LE B026 RULINEAR B SYLLABLE B031 SALINEAR B SYLLABLE B009 SELINEAR B SYL" + + "LABLE B041 SILINEAR B SYLLABLE B012 SOLINEAR B SYLLABLE B058 SULINEAR B " + + "SYLLABLE B059 TALINEAR B SYLLABLE B004 TELINEAR B SYLLABLE B037 TILINEAR" + + " B SYLLABLE B005 TOLINEAR B SYLLABLE B069 TULINEAR B SYLLABLE B054 WALIN" + + "EAR B SYLLABLE B075 WELINEAR B SYLLABLE B040 WILINEAR B SYLLABLE B042 WO" + + "LINEAR B SYLLABLE B017 ZALINEAR B SYLLABLE B074 ZELINEAR B SYLLABLE B020") + ("" + + " ZOLINEAR B SYLLABLE B025 A2LINEAR B SYLLABLE B043 A3LINEAR B SYLLABLE B" + + "085 AULINEAR B SYLLABLE B071 DWELINEAR B SYLLABLE B090 DWOLINEAR B SYLLA" + + "BLE B048 NWALINEAR B SYLLABLE B029 PU2LINEAR B SYLLABLE B062 PTELINEAR B" + + " SYLLABLE B076 RA2LINEAR B SYLLABLE B033 RA3LINEAR B SYLLABLE B068 RO2LI" + + "NEAR B SYLLABLE B066 TA2LINEAR B SYLLABLE B087 TWELINEAR B SYLLABLE B091" + + " TWOLINEAR B SYMBOL B018LINEAR B SYMBOL B019LINEAR B SYMBOL B022LINEAR B" + + " SYMBOL B034LINEAR B SYMBOL B047LINEAR B SYMBOL B049LINEAR B SYMBOL B056" + + "LINEAR B SYMBOL B063LINEAR B SYMBOL B064LINEAR B SYMBOL B079LINEAR B SYM" + + "BOL B082LINEAR B SYMBOL B083LINEAR B SYMBOL B086LINEAR B SYMBOL B089LINE" + + "AR B IDEOGRAM B100 MANLINEAR B IDEOGRAM B102 WOMANLINEAR B IDEOGRAM B104" + + " DEERLINEAR B IDEOGRAM B105 EQUIDLINEAR B IDEOGRAM B105F MARELINEAR B ID" + + "EOGRAM B105M STALLIONLINEAR B IDEOGRAM B106F EWELINEAR B IDEOGRAM B106M " + + "RAMLINEAR B IDEOGRAM B107F SHE-GOATLINEAR B IDEOGRAM B107M HE-GOATLINEAR" + + " B IDEOGRAM B108F SOWLINEAR B IDEOGRAM B108M BOARLINEAR B IDEOGRAM B109F" + + " COWLINEAR B IDEOGRAM B109M BULLLINEAR B IDEOGRAM B120 WHEATLINEAR B IDE" + + "OGRAM B121 BARLEYLINEAR B IDEOGRAM B122 OLIVELINEAR B IDEOGRAM B123 SPIC" + + "ELINEAR B IDEOGRAM B125 CYPERUSLINEAR B MONOGRAM B127 KAPOLINEAR B MONOG" + + "RAM B128 KANAKOLINEAR B IDEOGRAM B130 OILLINEAR B IDEOGRAM B131 WINELINE" + + "AR B IDEOGRAM B132LINEAR B MONOGRAM B133 AREPALINEAR B MONOGRAM B135 MER" + + "ILINEAR B IDEOGRAM B140 BRONZELINEAR B IDEOGRAM B141 GOLDLINEAR B IDEOGR" + + "AM B142LINEAR B IDEOGRAM B145 WOOLLINEAR B IDEOGRAM B146LINEAR B IDEOGRA" + + "M B150LINEAR B IDEOGRAM B151 HORNLINEAR B IDEOGRAM B152LINEAR B IDEOGRAM" + + " B153LINEAR B IDEOGRAM B154LINEAR B MONOGRAM B156 TURO2LINEAR B IDEOGRAM" + + " B157LINEAR B IDEOGRAM B158LINEAR B IDEOGRAM B159 CLOTHLINEAR B IDEOGRAM" + + " B160LINEAR B IDEOGRAM B161LINEAR B IDEOGRAM B162 GARMENTLINEAR B IDEOGR" + + "AM B163 ARMOURLINEAR B IDEOGRAM B164LINEAR B IDEOGRAM B165LINEAR B IDEOG" + + "RAM B166LINEAR B IDEOGRAM B167LINEAR B IDEOGRAM B168LINEAR B IDEOGRAM B1" + + "69LINEAR B IDEOGRAM B170LINEAR B IDEOGRAM B171LINEAR B IDEOGRAM B172LINE" + + "AR B IDEOGRAM B173 MONTHLINEAR B IDEOGRAM B174LINEAR B IDEOGRAM B176 TRE" + + "ELINEAR B IDEOGRAM B177LINEAR B IDEOGRAM B178LINEAR B IDEOGRAM B179LINEA" + + "R B IDEOGRAM B180LINEAR B IDEOGRAM B181LINEAR B IDEOGRAM B182LINEAR B ID" + + "EOGRAM B183LINEAR B IDEOGRAM B184LINEAR B IDEOGRAM B185LINEAR B IDEOGRAM" + + " B189LINEAR B IDEOGRAM B190LINEAR B IDEOGRAM B191 HELMETLINEAR B IDEOGRA" + + "M B220 FOOTSTOOLLINEAR B IDEOGRAM B225 BATHTUBLINEAR B IDEOGRAM B230 SPE" + + "ARLINEAR B IDEOGRAM B231 ARROWLINEAR B IDEOGRAM B232LINEAR B IDEOGRAM B2" + + "33 SWORDLINEAR B IDEOGRAM B234LINEAR B IDEOGRAM B236LINEAR B IDEOGRAM B2" + + "40 WHEELED CHARIOTLINEAR B IDEOGRAM B241 CHARIOTLINEAR B IDEOGRAM B242 C" + + "HARIOT FRAMELINEAR B IDEOGRAM B243 WHEELLINEAR B IDEOGRAM B245LINEAR B I" + + "DEOGRAM B246LINEAR B MONOGRAM B247 DIPTELINEAR B IDEOGRAM B248LINEAR B I" + + "DEOGRAM B249LINEAR B IDEOGRAM B251LINEAR B IDEOGRAM B252LINEAR B IDEOGRA" + + "M B253LINEAR B IDEOGRAM B254 DARTLINEAR B IDEOGRAM B255LINEAR B IDEOGRAM" + + " B256LINEAR B IDEOGRAM B257LINEAR B IDEOGRAM B258LINEAR B IDEOGRAM B259L" + + "INEAR B IDEOGRAM VESSEL B155LINEAR B IDEOGRAM VESSEL B200LINEAR B IDEOGR" + + "AM VESSEL B201LINEAR B IDEOGRAM VESSEL B202LINEAR B IDEOGRAM VESSEL B203" + + "LINEAR B IDEOGRAM VESSEL B204LINEAR B IDEOGRAM VESSEL B205LINEAR B IDEOG" + + "RAM VESSEL B206LINEAR B IDEOGRAM VESSEL B207LINEAR B IDEOGRAM VESSEL B20" + + "8LINEAR B IDEOGRAM VESSEL B209LINEAR B IDEOGRAM VESSEL B210LINEAR B IDEO" + + "GRAM VESSEL B211LINEAR B IDEOGRAM VESSEL B212LINEAR B IDEOGRAM VESSEL B2" + + "13LINEAR B IDEOGRAM VESSEL B214LINEAR B IDEOGRAM VESSEL B215LINEAR B IDE" + + "OGRAM VESSEL B216LINEAR B IDEOGRAM VESSEL B217LINEAR B IDEOGRAM VESSEL B" + + "218LINEAR B IDEOGRAM VESSEL B219LINEAR B IDEOGRAM VESSEL B221LINEAR B ID" + + "EOGRAM VESSEL B222LINEAR B IDEOGRAM VESSEL B226LINEAR B IDEOGRAM VESSEL " + + "B227LINEAR B IDEOGRAM VESSEL B228LINEAR B IDEOGRAM VESSEL B229LINEAR B I" + + "DEOGRAM VESSEL B250LINEAR B IDEOGRAM VESSEL B305AEGEAN WORD SEPARATOR LI" + + "NEAEGEAN WORD SEPARATOR DOTAEGEAN CHECK MARKAEGEAN NUMBER ONEAEGEAN NUMB" + + "ER TWOAEGEAN NUMBER THREEAEGEAN NUMBER FOURAEGEAN NUMBER FIVEAEGEAN NUMB" + + "ER SIXAEGEAN NUMBER SEVENAEGEAN NUMBER EIGHTAEGEAN NUMBER NINEAEGEAN NUM" + + "BER TENAEGEAN NUMBER TWENTYAEGEAN NUMBER THIRTYAEGEAN NUMBER FORTYAEGEAN" + + " NUMBER FIFTYAEGEAN NUMBER SIXTYAEGEAN NUMBER SEVENTYAEGEAN NUMBER EIGHT" + + "YAEGEAN NUMBER NINETYAEGEAN NUMBER ONE HUNDREDAEGEAN NUMBER TWO HUNDREDA" + + "EGEAN NUMBER THREE HUNDREDAEGEAN NUMBER FOUR HUNDREDAEGEAN NUMBER FIVE H" + + "UNDREDAEGEAN NUMBER SIX HUNDREDAEGEAN NUMBER SEVEN HUNDREDAEGEAN NUMBER " + + "EIGHT HUNDREDAEGEAN NUMBER NINE HUNDREDAEGEAN NUMBER ONE THOUSANDAEGEAN " + + "NUMBER TWO THOUSANDAEGEAN NUMBER THREE THOUSANDAEGEAN NUMBER FOUR THOUSA") + ("" + + "NDAEGEAN NUMBER FIVE THOUSANDAEGEAN NUMBER SIX THOUSANDAEGEAN NUMBER SEV" + + "EN THOUSANDAEGEAN NUMBER EIGHT THOUSANDAEGEAN NUMBER NINE THOUSANDAEGEAN" + + " NUMBER TEN THOUSANDAEGEAN NUMBER TWENTY THOUSANDAEGEAN NUMBER THIRTY TH" + + "OUSANDAEGEAN NUMBER FORTY THOUSANDAEGEAN NUMBER FIFTY THOUSANDAEGEAN NUM" + + "BER SIXTY THOUSANDAEGEAN NUMBER SEVENTY THOUSANDAEGEAN NUMBER EIGHTY THO" + + "USANDAEGEAN NUMBER NINETY THOUSANDAEGEAN WEIGHT BASE UNITAEGEAN WEIGHT F" + + "IRST SUBUNITAEGEAN WEIGHT SECOND SUBUNITAEGEAN WEIGHT THIRD SUBUNITAEGEA" + + "N WEIGHT FOURTH SUBUNITAEGEAN DRY MEASURE FIRST SUBUNITAEGEAN LIQUID MEA" + + "SURE FIRST SUBUNITAEGEAN MEASURE SECOND SUBUNITAEGEAN MEASURE THIRD SUBU" + + "NITGREEK ACROPHONIC ATTIC ONE QUARTERGREEK ACROPHONIC ATTIC ONE HALFGREE" + + "K ACROPHONIC ATTIC ONE DRACHMAGREEK ACROPHONIC ATTIC FIVEGREEK ACROPHONI" + + "C ATTIC FIFTYGREEK ACROPHONIC ATTIC FIVE HUNDREDGREEK ACROPHONIC ATTIC F" + + "IVE THOUSANDGREEK ACROPHONIC ATTIC FIFTY THOUSANDGREEK ACROPHONIC ATTIC " + + "FIVE TALENTSGREEK ACROPHONIC ATTIC TEN TALENTSGREEK ACROPHONIC ATTIC FIF" + + "TY TALENTSGREEK ACROPHONIC ATTIC ONE HUNDRED TALENTSGREEK ACROPHONIC ATT" + + "IC FIVE HUNDRED TALENTSGREEK ACROPHONIC ATTIC ONE THOUSAND TALENTSGREEK " + + "ACROPHONIC ATTIC FIVE THOUSAND TALENTSGREEK ACROPHONIC ATTIC FIVE STATER" + + "SGREEK ACROPHONIC ATTIC TEN STATERSGREEK ACROPHONIC ATTIC FIFTY STATERSG" + + "REEK ACROPHONIC ATTIC ONE HUNDRED STATERSGREEK ACROPHONIC ATTIC FIVE HUN" + + "DRED STATERSGREEK ACROPHONIC ATTIC ONE THOUSAND STATERSGREEK ACROPHONIC " + + "ATTIC TEN THOUSAND STATERSGREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERSG" + + "REEK ACROPHONIC ATTIC TEN MNASGREEK ACROPHONIC HERAEUM ONE PLETHRONGREEK" + + " ACROPHONIC THESPIAN ONEGREEK ACROPHONIC HERMIONIAN ONEGREEK ACROPHONIC " + + "EPIDAUREAN TWOGREEK ACROPHONIC THESPIAN TWOGREEK ACROPHONIC CYRENAIC TWO" + + " DRACHMASGREEK ACROPHONIC EPIDAUREAN TWO DRACHMASGREEK ACROPHONIC TROEZE" + + "NIAN FIVEGREEK ACROPHONIC TROEZENIAN TENGREEK ACROPHONIC TROEZENIAN TEN " + + "ALTERNATE FORMGREEK ACROPHONIC HERMIONIAN TENGREEK ACROPHONIC MESSENIAN " + + "TENGREEK ACROPHONIC THESPIAN TENGREEK ACROPHONIC THESPIAN THIRTYGREEK AC" + + "ROPHONIC TROEZENIAN FIFTYGREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FOR" + + "MGREEK ACROPHONIC HERMIONIAN FIFTYGREEK ACROPHONIC THESPIAN FIFTYGREEK A" + + "CROPHONIC THESPIAN ONE HUNDREDGREEK ACROPHONIC THESPIAN THREE HUNDREDGRE" + + "EK ACROPHONIC EPIDAUREAN FIVE HUNDREDGREEK ACROPHONIC TROEZENIAN FIVE HU" + + "NDREDGREEK ACROPHONIC THESPIAN FIVE HUNDREDGREEK ACROPHONIC CARYSTIAN FI" + + "VE HUNDREDGREEK ACROPHONIC NAXIAN FIVE HUNDREDGREEK ACROPHONIC THESPIAN " + + "ONE THOUSANDGREEK ACROPHONIC THESPIAN FIVE THOUSANDGREEK ACROPHONIC DELP" + + "HIC FIVE MNASGREEK ACROPHONIC STRATIAN FIFTY MNASGREEK ONE HALF SIGNGREE" + + "K ONE HALF SIGN ALTERNATE FORMGREEK TWO THIRDS SIGNGREEK THREE QUARTERS " + + "SIGNGREEK YEAR SIGNGREEK TALENT SIGNGREEK DRACHMA SIGNGREEK OBOL SIGNGRE" + + "EK TWO OBOLS SIGNGREEK THREE OBOLS SIGNGREEK FOUR OBOLS SIGNGREEK FIVE O" + + "BOLS SIGNGREEK METRETES SIGNGREEK KYATHOS BASE SIGNGREEK LITRA SIGNGREEK" + + " OUNKIA SIGNGREEK XESTES SIGNGREEK ARTABE SIGNGREEK AROURA SIGNGREEK GRA" + + "MMA SIGNGREEK TRYBLION BASE SIGNGREEK ZERO SIGNGREEK ONE QUARTER SIGNGRE" + + "EK SINUSOID SIGNGREEK INDICTION SIGNNOMISMA SIGNROMAN SEXTANS SIGNROMAN " + + "UNCIA SIGNROMAN SEMUNCIA SIGNROMAN SEXTULA SIGNROMAN DIMIDIA SEXTULA SIG" + + "NROMAN SILIQUA SIGNROMAN DENARIUS SIGNROMAN QUINARIUS SIGNROMAN SESTERTI" + + "US SIGNROMAN DUPONDIUS SIGNROMAN AS SIGNROMAN CENTURIAL SIGNGREEK SYMBOL" + + " TAU RHOPHAISTOS DISC SIGN PEDESTRIANPHAISTOS DISC SIGN PLUMED HEADPHAIS" + + "TOS DISC SIGN TATTOOED HEADPHAISTOS DISC SIGN CAPTIVEPHAISTOS DISC SIGN " + + "CHILDPHAISTOS DISC SIGN WOMANPHAISTOS DISC SIGN HELMETPHAISTOS DISC SIGN" + + " GAUNTLETPHAISTOS DISC SIGN TIARAPHAISTOS DISC SIGN ARROWPHAISTOS DISC S" + + "IGN BOWPHAISTOS DISC SIGN SHIELDPHAISTOS DISC SIGN CLUBPHAISTOS DISC SIG" + + "N MANACLESPHAISTOS DISC SIGN MATTOCKPHAISTOS DISC SIGN SAWPHAISTOS DISC " + + "SIGN LIDPHAISTOS DISC SIGN BOOMERANGPHAISTOS DISC SIGN CARPENTRY PLANEPH" + + "AISTOS DISC SIGN DOLIUMPHAISTOS DISC SIGN COMBPHAISTOS DISC SIGN SLINGPH" + + "AISTOS DISC SIGN COLUMNPHAISTOS DISC SIGN BEEHIVEPHAISTOS DISC SIGN SHIP" + + "PHAISTOS DISC SIGN HORNPHAISTOS DISC SIGN HIDEPHAISTOS DISC SIGN BULLS L" + + "EGPHAISTOS DISC SIGN CATPHAISTOS DISC SIGN RAMPHAISTOS DISC SIGN EAGLEPH" + + "AISTOS DISC SIGN DOVEPHAISTOS DISC SIGN TUNNYPHAISTOS DISC SIGN BEEPHAIS" + + "TOS DISC SIGN PLANE TREEPHAISTOS DISC SIGN VINEPHAISTOS DISC SIGN PAPYRU" + + "SPHAISTOS DISC SIGN ROSETTEPHAISTOS DISC SIGN LILYPHAISTOS DISC SIGN OX " + + "BACKPHAISTOS DISC SIGN FLUTEPHAISTOS DISC SIGN GRATERPHAISTOS DISC SIGN " + + "STRAINERPHAISTOS DISC SIGN SMALL AXEPHAISTOS DISC SIGN WAVY BANDPHAISTOS" + + " DISC SIGN COMBINING OBLIQUE STROKELYCIAN LETTER ALYCIAN LETTER ELYCIAN " + + "LETTER BLYCIAN LETTER BHLYCIAN LETTER GLYCIAN LETTER DLYCIAN LETTER ILYC") + ("" + + "IAN LETTER WLYCIAN LETTER ZLYCIAN LETTER THLYCIAN LETTER JLYCIAN LETTER " + + "KLYCIAN LETTER QLYCIAN LETTER LLYCIAN LETTER MLYCIAN LETTER NLYCIAN LETT" + + "ER MMLYCIAN LETTER NNLYCIAN LETTER ULYCIAN LETTER PLYCIAN LETTER KKLYCIA" + + "N LETTER RLYCIAN LETTER SLYCIAN LETTER TLYCIAN LETTER TTLYCIAN LETTER AN" + + "LYCIAN LETTER ENLYCIAN LETTER HLYCIAN LETTER XCARIAN LETTER ACARIAN LETT" + + "ER P2CARIAN LETTER DCARIAN LETTER LCARIAN LETTER UUUCARIAN LETTER RCARIA" + + "N LETTER LDCARIAN LETTER A2CARIAN LETTER QCARIAN LETTER BCARIAN LETTER M" + + "CARIAN LETTER OCARIAN LETTER D2CARIAN LETTER TCARIAN LETTER SHCARIAN LET" + + "TER SH2CARIAN LETTER SCARIAN LETTER C-18CARIAN LETTER UCARIAN LETTER NNC" + + "ARIAN LETTER XCARIAN LETTER NCARIAN LETTER TT2CARIAN LETTER PCARIAN LETT" + + "ER SSCARIAN LETTER ICARIAN LETTER ECARIAN LETTER UUUUCARIAN LETTER KCARI" + + "AN LETTER K2CARIAN LETTER NDCARIAN LETTER UUCARIAN LETTER GCARIAN LETTER" + + " G2CARIAN LETTER STCARIAN LETTER ST2CARIAN LETTER NGCARIAN LETTER IICARI" + + "AN LETTER C-39CARIAN LETTER TTCARIAN LETTER UUU2CARIAN LETTER RRCARIAN L" + + "ETTER MBCARIAN LETTER MB2CARIAN LETTER MB3CARIAN LETTER MB4CARIAN LETTER" + + " LD2CARIAN LETTER E2CARIAN LETTER UUU3COPTIC EPACT THOUSANDS MARKCOPTIC " + + "EPACT DIGIT ONECOPTIC EPACT DIGIT TWOCOPTIC EPACT DIGIT THREECOPTIC EPAC" + + "T DIGIT FOURCOPTIC EPACT DIGIT FIVECOPTIC EPACT DIGIT SIXCOPTIC EPACT DI" + + "GIT SEVENCOPTIC EPACT DIGIT EIGHTCOPTIC EPACT DIGIT NINECOPTIC EPACT NUM" + + "BER TENCOPTIC EPACT NUMBER TWENTYCOPTIC EPACT NUMBER THIRTYCOPTIC EPACT " + + "NUMBER FORTYCOPTIC EPACT NUMBER FIFTYCOPTIC EPACT NUMBER SIXTYCOPTIC EPA" + + "CT NUMBER SEVENTYCOPTIC EPACT NUMBER EIGHTYCOPTIC EPACT NUMBER NINETYCOP" + + "TIC EPACT NUMBER ONE HUNDREDCOPTIC EPACT NUMBER TWO HUNDREDCOPTIC EPACT " + + "NUMBER THREE HUNDREDCOPTIC EPACT NUMBER FOUR HUNDREDCOPTIC EPACT NUMBER " + + "FIVE HUNDREDCOPTIC EPACT NUMBER SIX HUNDREDCOPTIC EPACT NUMBER SEVEN HUN" + + "DREDCOPTIC EPACT NUMBER EIGHT HUNDREDCOPTIC EPACT NUMBER NINE HUNDREDOLD" + + " ITALIC LETTER AOLD ITALIC LETTER BEOLD ITALIC LETTER KEOLD ITALIC LETTE" + + "R DEOLD ITALIC LETTER EOLD ITALIC LETTER VEOLD ITALIC LETTER ZEOLD ITALI" + + "C LETTER HEOLD ITALIC LETTER THEOLD ITALIC LETTER IOLD ITALIC LETTER KAO" + + "LD ITALIC LETTER ELOLD ITALIC LETTER EMOLD ITALIC LETTER ENOLD ITALIC LE" + + "TTER ESHOLD ITALIC LETTER OOLD ITALIC LETTER PEOLD ITALIC LETTER SHEOLD " + + "ITALIC LETTER KUOLD ITALIC LETTER EROLD ITALIC LETTER ESOLD ITALIC LETTE" + + "R TEOLD ITALIC LETTER UOLD ITALIC LETTER EKSOLD ITALIC LETTER PHEOLD ITA" + + "LIC LETTER KHEOLD ITALIC LETTER EFOLD ITALIC LETTER ERSOLD ITALIC LETTER" + + " CHEOLD ITALIC LETTER IIOLD ITALIC LETTER UUOLD ITALIC LETTER ESSOLD ITA" + + "LIC NUMERAL ONEOLD ITALIC NUMERAL FIVEOLD ITALIC NUMERAL TENOLD ITALIC N" + + "UMERAL FIFTYGOTHIC LETTER AHSAGOTHIC LETTER BAIRKANGOTHIC LETTER GIBAGOT" + + "HIC LETTER DAGSGOTHIC LETTER AIHVUSGOTHIC LETTER QAIRTHRAGOTHIC LETTER I" + + "UJAGOTHIC LETTER HAGLGOTHIC LETTER THIUTHGOTHIC LETTER EISGOTHIC LETTER " + + "KUSMAGOTHIC LETTER LAGUSGOTHIC LETTER MANNAGOTHIC LETTER NAUTHSGOTHIC LE" + + "TTER JERGOTHIC LETTER URUSGOTHIC LETTER PAIRTHRAGOTHIC LETTER NINETYGOTH" + + "IC LETTER RAIDAGOTHIC LETTER SAUILGOTHIC LETTER TEIWSGOTHIC LETTER WINJA" + + "GOTHIC LETTER FAIHUGOTHIC LETTER IGGWSGOTHIC LETTER HWAIRGOTHIC LETTER O" + + "THALGOTHIC LETTER NINE HUNDREDOLD PERMIC LETTER ANOLD PERMIC LETTER BURO" + + "LD PERMIC LETTER GAIOLD PERMIC LETTER DOIOLD PERMIC LETTER EOLD PERMIC L" + + "ETTER ZHOIOLD PERMIC LETTER DZHOIOLD PERMIC LETTER ZATAOLD PERMIC LETTER" + + " DZITAOLD PERMIC LETTER IOLD PERMIC LETTER KOKEOLD PERMIC LETTER LEIOLD " + + "PERMIC LETTER MENOEOLD PERMIC LETTER NENOEOLD PERMIC LETTER VOOIOLD PERM" + + "IC LETTER PEEIOLD PERMIC LETTER REIOLD PERMIC LETTER SIIOLD PERMIC LETTE" + + "R TAIOLD PERMIC LETTER UOLD PERMIC LETTER CHERYOLD PERMIC LETTER SHOOIOL" + + "D PERMIC LETTER SHCHOOIOLD PERMIC LETTER YRYOLD PERMIC LETTER YERUOLD PE" + + "RMIC LETTER OOLD PERMIC LETTER OOOLD PERMIC LETTER EFOLD PERMIC LETTER H" + + "AOLD PERMIC LETTER TSIUOLD PERMIC LETTER VEROLD PERMIC LETTER YEROLD PER" + + "MIC LETTER YERIOLD PERMIC LETTER YATOLD PERMIC LETTER IEOLD PERMIC LETTE" + + "R YUOLD PERMIC LETTER YAOLD PERMIC LETTER IACOMBINING OLD PERMIC LETTER " + + "ANCOMBINING OLD PERMIC LETTER DOICOMBINING OLD PERMIC LETTER ZATACOMBINI" + + "NG OLD PERMIC LETTER NENOECOMBINING OLD PERMIC LETTER SIIUGARITIC LETTER" + + " ALPAUGARITIC LETTER BETAUGARITIC LETTER GAMLAUGARITIC LETTER KHAUGARITI" + + "C LETTER DELTAUGARITIC LETTER HOUGARITIC LETTER WOUGARITIC LETTER ZETAUG" + + "ARITIC LETTER HOTAUGARITIC LETTER TETUGARITIC LETTER YODUGARITIC LETTER " + + "KAFUGARITIC LETTER SHINUGARITIC LETTER LAMDAUGARITIC LETTER MEMUGARITIC " + + "LETTER DHALUGARITIC LETTER NUNUGARITIC LETTER ZUUGARITIC LETTER SAMKAUGA" + + "RITIC LETTER AINUGARITIC LETTER PUUGARITIC LETTER SADEUGARITIC LETTER QO" + + "PAUGARITIC LETTER RASHAUGARITIC LETTER THANNAUGARITIC LETTER GHAINUGARIT") + ("" + + "IC LETTER TOUGARITIC LETTER IUGARITIC LETTER UUGARITIC LETTER SSUUGARITI" + + "C WORD DIVIDEROLD PERSIAN SIGN AOLD PERSIAN SIGN IOLD PERSIAN SIGN UOLD " + + "PERSIAN SIGN KAOLD PERSIAN SIGN KUOLD PERSIAN SIGN GAOLD PERSIAN SIGN GU" + + "OLD PERSIAN SIGN XAOLD PERSIAN SIGN CAOLD PERSIAN SIGN JAOLD PERSIAN SIG" + + "N JIOLD PERSIAN SIGN TAOLD PERSIAN SIGN TUOLD PERSIAN SIGN DAOLD PERSIAN" + + " SIGN DIOLD PERSIAN SIGN DUOLD PERSIAN SIGN THAOLD PERSIAN SIGN PAOLD PE" + + "RSIAN SIGN BAOLD PERSIAN SIGN FAOLD PERSIAN SIGN NAOLD PERSIAN SIGN NUOL" + + "D PERSIAN SIGN MAOLD PERSIAN SIGN MIOLD PERSIAN SIGN MUOLD PERSIAN SIGN " + + "YAOLD PERSIAN SIGN VAOLD PERSIAN SIGN VIOLD PERSIAN SIGN RAOLD PERSIAN S" + + "IGN RUOLD PERSIAN SIGN LAOLD PERSIAN SIGN SAOLD PERSIAN SIGN ZAOLD PERSI" + + "AN SIGN SHAOLD PERSIAN SIGN SSAOLD PERSIAN SIGN HAOLD PERSIAN SIGN AURAM" + + "AZDAAOLD PERSIAN SIGN AURAMAZDAA-2OLD PERSIAN SIGN AURAMAZDAAHAOLD PERSI" + + "AN SIGN XSHAAYATHIYAOLD PERSIAN SIGN DAHYAAUSHOLD PERSIAN SIGN DAHYAAUSH" + + "-2OLD PERSIAN SIGN BAGAOLD PERSIAN SIGN BUUMISHOLD PERSIAN WORD DIVIDERO" + + "LD PERSIAN NUMBER ONEOLD PERSIAN NUMBER TWOOLD PERSIAN NUMBER TENOLD PER" + + "SIAN NUMBER TWENTYOLD PERSIAN NUMBER HUNDREDDESERET CAPITAL LETTER LONG " + + "IDESERET CAPITAL LETTER LONG EDESERET CAPITAL LETTER LONG ADESERET CAPIT" + + "AL LETTER LONG AHDESERET CAPITAL LETTER LONG ODESERET CAPITAL LETTER LON" + + "G OODESERET CAPITAL LETTER SHORT IDESERET CAPITAL LETTER SHORT EDESERET " + + "CAPITAL LETTER SHORT ADESERET CAPITAL LETTER SHORT AHDESERET CAPITAL LET" + + "TER SHORT ODESERET CAPITAL LETTER SHORT OODESERET CAPITAL LETTER AYDESER" + + "ET CAPITAL LETTER OWDESERET CAPITAL LETTER WUDESERET CAPITAL LETTER YEED" + + "ESERET CAPITAL LETTER HDESERET CAPITAL LETTER PEEDESERET CAPITAL LETTER " + + "BEEDESERET CAPITAL LETTER TEEDESERET CAPITAL LETTER DEEDESERET CAPITAL L" + + "ETTER CHEEDESERET CAPITAL LETTER JEEDESERET CAPITAL LETTER KAYDESERET CA" + + "PITAL LETTER GAYDESERET CAPITAL LETTER EFDESERET CAPITAL LETTER VEEDESER" + + "ET CAPITAL LETTER ETHDESERET CAPITAL LETTER THEEDESERET CAPITAL LETTER E" + + "SDESERET CAPITAL LETTER ZEEDESERET CAPITAL LETTER ESHDESERET CAPITAL LET" + + "TER ZHEEDESERET CAPITAL LETTER ERDESERET CAPITAL LETTER ELDESERET CAPITA" + + "L LETTER EMDESERET CAPITAL LETTER ENDESERET CAPITAL LETTER ENGDESERET CA" + + "PITAL LETTER OIDESERET CAPITAL LETTER EWDESERET SMALL LETTER LONG IDESER" + + "ET SMALL LETTER LONG EDESERET SMALL LETTER LONG ADESERET SMALL LETTER LO" + + "NG AHDESERET SMALL LETTER LONG ODESERET SMALL LETTER LONG OODESERET SMAL" + + "L LETTER SHORT IDESERET SMALL LETTER SHORT EDESERET SMALL LETTER SHORT A" + + "DESERET SMALL LETTER SHORT AHDESERET SMALL LETTER SHORT ODESERET SMALL L" + + "ETTER SHORT OODESERET SMALL LETTER AYDESERET SMALL LETTER OWDESERET SMAL" + + "L LETTER WUDESERET SMALL LETTER YEEDESERET SMALL LETTER HDESERET SMALL L" + + "ETTER PEEDESERET SMALL LETTER BEEDESERET SMALL LETTER TEEDESERET SMALL L" + + "ETTER DEEDESERET SMALL LETTER CHEEDESERET SMALL LETTER JEEDESERET SMALL " + + "LETTER KAYDESERET SMALL LETTER GAYDESERET SMALL LETTER EFDESERET SMALL L" + + "ETTER VEEDESERET SMALL LETTER ETHDESERET SMALL LETTER THEEDESERET SMALL " + + "LETTER ESDESERET SMALL LETTER ZEEDESERET SMALL LETTER ESHDESERET SMALL L" + + "ETTER ZHEEDESERET SMALL LETTER ERDESERET SMALL LETTER ELDESERET SMALL LE" + + "TTER EMDESERET SMALL LETTER ENDESERET SMALL LETTER ENGDESERET SMALL LETT" + + "ER OIDESERET SMALL LETTER EWSHAVIAN LETTER PEEPSHAVIAN LETTER TOTSHAVIAN" + + " LETTER KICKSHAVIAN LETTER FEESHAVIAN LETTER THIGHSHAVIAN LETTER SOSHAVI" + + "AN LETTER SURESHAVIAN LETTER CHURCHSHAVIAN LETTER YEASHAVIAN LETTER HUNG" + + "SHAVIAN LETTER BIBSHAVIAN LETTER DEADSHAVIAN LETTER GAGSHAVIAN LETTER VO" + + "WSHAVIAN LETTER THEYSHAVIAN LETTER ZOOSHAVIAN LETTER MEASURESHAVIAN LETT" + + "ER JUDGESHAVIAN LETTER WOESHAVIAN LETTER HA-HASHAVIAN LETTER LOLLSHAVIAN" + + " LETTER MIMESHAVIAN LETTER IFSHAVIAN LETTER EGGSHAVIAN LETTER ASHSHAVIAN" + + " LETTER ADOSHAVIAN LETTER ONSHAVIAN LETTER WOOLSHAVIAN LETTER OUTSHAVIAN" + + " LETTER AHSHAVIAN LETTER ROARSHAVIAN LETTER NUNSHAVIAN LETTER EATSHAVIAN" + + " LETTER AGESHAVIAN LETTER ICESHAVIAN LETTER UPSHAVIAN LETTER OAKSHAVIAN " + + "LETTER OOZESHAVIAN LETTER OILSHAVIAN LETTER AWESHAVIAN LETTER ARESHAVIAN" + + " LETTER ORSHAVIAN LETTER AIRSHAVIAN LETTER ERRSHAVIAN LETTER ARRAYSHAVIA" + + "N LETTER EARSHAVIAN LETTER IANSHAVIAN LETTER YEWOSMANYA LETTER ALEFOSMAN" + + "YA LETTER BAOSMANYA LETTER TAOSMANYA LETTER JAOSMANYA LETTER XAOSMANYA L" + + "ETTER KHAOSMANYA LETTER DEELOSMANYA LETTER RAOSMANYA LETTER SAOSMANYA LE" + + "TTER SHIINOSMANYA LETTER DHAOSMANYA LETTER CAYNOSMANYA LETTER GAOSMANYA " + + "LETTER FAOSMANYA LETTER QAAFOSMANYA LETTER KAAFOSMANYA LETTER LAANOSMANY" + + "A LETTER MIINOSMANYA LETTER NUUNOSMANYA LETTER WAWOSMANYA LETTER HAOSMAN" + + "YA LETTER YAOSMANYA LETTER AOSMANYA LETTER EOSMANYA LETTER IOSMANYA LETT" + + "ER OOSMANYA LETTER UOSMANYA LETTER AAOSMANYA LETTER EEOSMANYA LETTER OOO") + ("" + + "SMANYA DIGIT ZEROOSMANYA DIGIT ONEOSMANYA DIGIT TWOOSMANYA DIGIT THREEOS" + + "MANYA DIGIT FOUROSMANYA DIGIT FIVEOSMANYA DIGIT SIXOSMANYA DIGIT SEVENOS" + + "MANYA DIGIT EIGHTOSMANYA DIGIT NINEOSAGE CAPITAL LETTER AOSAGE CAPITAL L" + + "ETTER AIOSAGE CAPITAL LETTER AINOSAGE CAPITAL LETTER AHOSAGE CAPITAL LET" + + "TER BRAOSAGE CAPITAL LETTER CHAOSAGE CAPITAL LETTER EHCHAOSAGE CAPITAL L" + + "ETTER EOSAGE CAPITAL LETTER EINOSAGE CAPITAL LETTER HAOSAGE CAPITAL LETT" + + "ER HYAOSAGE CAPITAL LETTER IOSAGE CAPITAL LETTER KAOSAGE CAPITAL LETTER " + + "EHKAOSAGE CAPITAL LETTER KYAOSAGE CAPITAL LETTER LAOSAGE CAPITAL LETTER " + + "MAOSAGE CAPITAL LETTER NAOSAGE CAPITAL LETTER OOSAGE CAPITAL LETTER OINO" + + "SAGE CAPITAL LETTER PAOSAGE CAPITAL LETTER EHPAOSAGE CAPITAL LETTER SAOS" + + "AGE CAPITAL LETTER SHAOSAGE CAPITAL LETTER TAOSAGE CAPITAL LETTER EHTAOS" + + "AGE CAPITAL LETTER TSAOSAGE CAPITAL LETTER EHTSAOSAGE CAPITAL LETTER TSH" + + "AOSAGE CAPITAL LETTER DHAOSAGE CAPITAL LETTER UOSAGE CAPITAL LETTER WAOS" + + "AGE CAPITAL LETTER KHAOSAGE CAPITAL LETTER GHAOSAGE CAPITAL LETTER ZAOSA" + + "GE CAPITAL LETTER ZHAOSAGE SMALL LETTER AOSAGE SMALL LETTER AIOSAGE SMAL" + + "L LETTER AINOSAGE SMALL LETTER AHOSAGE SMALL LETTER BRAOSAGE SMALL LETTE" + + "R CHAOSAGE SMALL LETTER EHCHAOSAGE SMALL LETTER EOSAGE SMALL LETTER EINO" + + "SAGE SMALL LETTER HAOSAGE SMALL LETTER HYAOSAGE SMALL LETTER IOSAGE SMAL" + + "L LETTER KAOSAGE SMALL LETTER EHKAOSAGE SMALL LETTER KYAOSAGE SMALL LETT" + + "ER LAOSAGE SMALL LETTER MAOSAGE SMALL LETTER NAOSAGE SMALL LETTER OOSAGE" + + " SMALL LETTER OINOSAGE SMALL LETTER PAOSAGE SMALL LETTER EHPAOSAGE SMALL" + + " LETTER SAOSAGE SMALL LETTER SHAOSAGE SMALL LETTER TAOSAGE SMALL LETTER " + + "EHTAOSAGE SMALL LETTER TSAOSAGE SMALL LETTER EHTSAOSAGE SMALL LETTER TSH" + + "AOSAGE SMALL LETTER DHAOSAGE SMALL LETTER UOSAGE SMALL LETTER WAOSAGE SM" + + "ALL LETTER KHAOSAGE SMALL LETTER GHAOSAGE SMALL LETTER ZAOSAGE SMALL LET" + + "TER ZHAELBASAN LETTER AELBASAN LETTER BEELBASAN LETTER CEELBASAN LETTER " + + "CHEELBASAN LETTER DEELBASAN LETTER NDEELBASAN LETTER DHEELBASAN LETTER E" + + "IELBASAN LETTER EELBASAN LETTER FEELBASAN LETTER GEELBASAN LETTER GJEELB" + + "ASAN LETTER HEELBASAN LETTER IELBASAN LETTER JEELBASAN LETTER KEELBASAN " + + "LETTER LEELBASAN LETTER LLEELBASAN LETTER MEELBASAN LETTER NEELBASAN LET" + + "TER NAELBASAN LETTER NJEELBASAN LETTER OELBASAN LETTER PEELBASAN LETTER " + + "QEELBASAN LETTER REELBASAN LETTER RREELBASAN LETTER SEELBASAN LETTER SHE" + + "ELBASAN LETTER TEELBASAN LETTER THEELBASAN LETTER UELBASAN LETTER VEELBA" + + "SAN LETTER XEELBASAN LETTER YELBASAN LETTER ZEELBASAN LETTER ZHEELBASAN " + + "LETTER GHEELBASAN LETTER GHAMMAELBASAN LETTER KHECAUCASIAN ALBANIAN LETT" + + "ER ALTCAUCASIAN ALBANIAN LETTER BETCAUCASIAN ALBANIAN LETTER GIMCAUCASIA" + + "N ALBANIAN LETTER DATCAUCASIAN ALBANIAN LETTER EBCAUCASIAN ALBANIAN LETT" + + "ER ZARLCAUCASIAN ALBANIAN LETTER EYNCAUCASIAN ALBANIAN LETTER ZHILCAUCAS" + + "IAN ALBANIAN LETTER TASCAUCASIAN ALBANIAN LETTER CHACAUCASIAN ALBANIAN L" + + "ETTER YOWDCAUCASIAN ALBANIAN LETTER ZHACAUCASIAN ALBANIAN LETTER IRBCAUC" + + "ASIAN ALBANIAN LETTER SHACAUCASIAN ALBANIAN LETTER LANCAUCASIAN ALBANIAN" + + " LETTER INYACAUCASIAN ALBANIAN LETTER XEYNCAUCASIAN ALBANIAN LETTER DYAN" + + "CAUCASIAN ALBANIAN LETTER CARCAUCASIAN ALBANIAN LETTER JHOXCAUCASIAN ALB" + + "ANIAN LETTER KARCAUCASIAN ALBANIAN LETTER LYITCAUCASIAN ALBANIAN LETTER " + + "HEYTCAUCASIAN ALBANIAN LETTER QAYCAUCASIAN ALBANIAN LETTER AORCAUCASIAN " + + "ALBANIAN LETTER CHOYCAUCASIAN ALBANIAN LETTER CHICAUCASIAN ALBANIAN LETT" + + "ER CYAYCAUCASIAN ALBANIAN LETTER MAQCAUCASIAN ALBANIAN LETTER QARCAUCASI" + + "AN ALBANIAN LETTER NOWCCAUCASIAN ALBANIAN LETTER DZYAYCAUCASIAN ALBANIAN" + + " LETTER SHAKCAUCASIAN ALBANIAN LETTER JAYNCAUCASIAN ALBANIAN LETTER ONCA" + + "UCASIAN ALBANIAN LETTER TYAYCAUCASIAN ALBANIAN LETTER FAMCAUCASIAN ALBAN" + + "IAN LETTER DZAYCAUCASIAN ALBANIAN LETTER CHATCAUCASIAN ALBANIAN LETTER P" + + "ENCAUCASIAN ALBANIAN LETTER GHEYSCAUCASIAN ALBANIAN LETTER RATCAUCASIAN " + + "ALBANIAN LETTER SEYKCAUCASIAN ALBANIAN LETTER VEYZCAUCASIAN ALBANIAN LET" + + "TER TIWRCAUCASIAN ALBANIAN LETTER SHOYCAUCASIAN ALBANIAN LETTER IWNCAUCA" + + "SIAN ALBANIAN LETTER CYAWCAUCASIAN ALBANIAN LETTER CAYNCAUCASIAN ALBANIA" + + "N LETTER YAYDCAUCASIAN ALBANIAN LETTER PIWRCAUCASIAN ALBANIAN LETTER KIW" + + "CAUCASIAN ALBANIAN CITATION MARKLINEAR A SIGN AB001LINEAR A SIGN AB002LI" + + "NEAR A SIGN AB003LINEAR A SIGN AB004LINEAR A SIGN AB005LINEAR A SIGN AB0" + + "06LINEAR A SIGN AB007LINEAR A SIGN AB008LINEAR A SIGN AB009LINEAR A SIGN" + + " AB010LINEAR A SIGN AB011LINEAR A SIGN AB013LINEAR A SIGN AB016LINEAR A " + + "SIGN AB017LINEAR A SIGN AB020LINEAR A SIGN AB021LINEAR A SIGN AB021FLINE" + + "AR A SIGN AB021MLINEAR A SIGN AB022LINEAR A SIGN AB022FLINEAR A SIGN AB0" + + "22MLINEAR A SIGN AB023LINEAR A SIGN AB023MLINEAR A SIGN AB024LINEAR A SI" + + "GN AB026LINEAR A SIGN AB027LINEAR A SIGN AB028LINEAR A SIGN A028BLINEAR ") + ("" + + "A SIGN AB029LINEAR A SIGN AB030LINEAR A SIGN AB031LINEAR A SIGN AB034LIN" + + "EAR A SIGN AB037LINEAR A SIGN AB038LINEAR A SIGN AB039LINEAR A SIGN AB04" + + "0LINEAR A SIGN AB041LINEAR A SIGN AB044LINEAR A SIGN AB045LINEAR A SIGN " + + "AB046LINEAR A SIGN AB047LINEAR A SIGN AB048LINEAR A SIGN AB049LINEAR A S" + + "IGN AB050LINEAR A SIGN AB051LINEAR A SIGN AB053LINEAR A SIGN AB054LINEAR" + + " A SIGN AB055LINEAR A SIGN AB056LINEAR A SIGN AB057LINEAR A SIGN AB058LI" + + "NEAR A SIGN AB059LINEAR A SIGN AB060LINEAR A SIGN AB061LINEAR A SIGN AB0" + + "65LINEAR A SIGN AB066LINEAR A SIGN AB067LINEAR A SIGN AB069LINEAR A SIGN" + + " AB070LINEAR A SIGN AB073LINEAR A SIGN AB074LINEAR A SIGN AB076LINEAR A " + + "SIGN AB077LINEAR A SIGN AB078LINEAR A SIGN AB079LINEAR A SIGN AB080LINEA" + + "R A SIGN AB081LINEAR A SIGN AB082LINEAR A SIGN AB085LINEAR A SIGN AB086L" + + "INEAR A SIGN AB087LINEAR A SIGN A100-102LINEAR A SIGN AB118LINEAR A SIGN" + + " AB120LINEAR A SIGN A120BLINEAR A SIGN AB122LINEAR A SIGN AB123LINEAR A " + + "SIGN AB131ALINEAR A SIGN AB131BLINEAR A SIGN A131CLINEAR A SIGN AB164LIN" + + "EAR A SIGN AB171LINEAR A SIGN AB180LINEAR A SIGN AB188LINEAR A SIGN AB19" + + "1LINEAR A SIGN A301LINEAR A SIGN A302LINEAR A SIGN A303LINEAR A SIGN A30" + + "4LINEAR A SIGN A305LINEAR A SIGN A306LINEAR A SIGN A307LINEAR A SIGN A30" + + "8LINEAR A SIGN A309ALINEAR A SIGN A309BLINEAR A SIGN A309CLINEAR A SIGN " + + "A310LINEAR A SIGN A311LINEAR A SIGN A312LINEAR A SIGN A313ALINEAR A SIGN" + + " A313BLINEAR A SIGN A313CLINEAR A SIGN A314LINEAR A SIGN A315LINEAR A SI" + + "GN A316LINEAR A SIGN A317LINEAR A SIGN A318LINEAR A SIGN A319LINEAR A SI" + + "GN A320LINEAR A SIGN A321LINEAR A SIGN A322LINEAR A SIGN A323LINEAR A SI" + + "GN A324LINEAR A SIGN A325LINEAR A SIGN A326LINEAR A SIGN A327LINEAR A SI" + + "GN A328LINEAR A SIGN A329LINEAR A SIGN A330LINEAR A SIGN A331LINEAR A SI" + + "GN A332LINEAR A SIGN A333LINEAR A SIGN A334LINEAR A SIGN A335LINEAR A SI" + + "GN A336LINEAR A SIGN A337LINEAR A SIGN A338LINEAR A SIGN A339LINEAR A SI" + + "GN A340LINEAR A SIGN A341LINEAR A SIGN A342LINEAR A SIGN A343LINEAR A SI" + + "GN A344LINEAR A SIGN A345LINEAR A SIGN A346LINEAR A SIGN A347LINEAR A SI" + + "GN A348LINEAR A SIGN A349LINEAR A SIGN A350LINEAR A SIGN A351LINEAR A SI" + + "GN A352LINEAR A SIGN A353LINEAR A SIGN A354LINEAR A SIGN A355LINEAR A SI" + + "GN A356LINEAR A SIGN A357LINEAR A SIGN A358LINEAR A SIGN A359LINEAR A SI" + + "GN A360LINEAR A SIGN A361LINEAR A SIGN A362LINEAR A SIGN A363LINEAR A SI" + + "GN A364LINEAR A SIGN A365LINEAR A SIGN A366LINEAR A SIGN A367LINEAR A SI" + + "GN A368LINEAR A SIGN A369LINEAR A SIGN A370LINEAR A SIGN A371LINEAR A SI" + + "GN A400-VASLINEAR A SIGN A401-VASLINEAR A SIGN A402-VASLINEAR A SIGN A40" + + "3-VASLINEAR A SIGN A404-VASLINEAR A SIGN A405-VASLINEAR A SIGN A406-VASL" + + "INEAR A SIGN A407-VASLINEAR A SIGN A408-VASLINEAR A SIGN A409-VASLINEAR " + + "A SIGN A410-VASLINEAR A SIGN A411-VASLINEAR A SIGN A412-VASLINEAR A SIGN" + + " A413-VASLINEAR A SIGN A414-VASLINEAR A SIGN A415-VASLINEAR A SIGN A416-" + + "VASLINEAR A SIGN A417-VASLINEAR A SIGN A418-VASLINEAR A SIGN A501LINEAR " + + "A SIGN A502LINEAR A SIGN A503LINEAR A SIGN A504LINEAR A SIGN A505LINEAR " + + "A SIGN A506LINEAR A SIGN A508LINEAR A SIGN A509LINEAR A SIGN A510LINEAR " + + "A SIGN A511LINEAR A SIGN A512LINEAR A SIGN A513LINEAR A SIGN A515LINEAR " + + "A SIGN A516LINEAR A SIGN A520LINEAR A SIGN A521LINEAR A SIGN A523LINEAR " + + "A SIGN A524LINEAR A SIGN A525LINEAR A SIGN A526LINEAR A SIGN A527LINEAR " + + "A SIGN A528LINEAR A SIGN A529LINEAR A SIGN A530LINEAR A SIGN A531LINEAR " + + "A SIGN A532LINEAR A SIGN A534LINEAR A SIGN A535LINEAR A SIGN A536LINEAR " + + "A SIGN A537LINEAR A SIGN A538LINEAR A SIGN A539LINEAR A SIGN A540LINEAR " + + "A SIGN A541LINEAR A SIGN A542LINEAR A SIGN A545LINEAR A SIGN A547LINEAR " + + "A SIGN A548LINEAR A SIGN A549LINEAR A SIGN A550LINEAR A SIGN A551LINEAR " + + "A SIGN A552LINEAR A SIGN A553LINEAR A SIGN A554LINEAR A SIGN A555LINEAR " + + "A SIGN A556LINEAR A SIGN A557LINEAR A SIGN A559LINEAR A SIGN A563LINEAR " + + "A SIGN A564LINEAR A SIGN A565LINEAR A SIGN A566LINEAR A SIGN A568LINEAR " + + "A SIGN A569LINEAR A SIGN A570LINEAR A SIGN A571LINEAR A SIGN A572LINEAR " + + "A SIGN A573LINEAR A SIGN A574LINEAR A SIGN A575LINEAR A SIGN A576LINEAR " + + "A SIGN A577LINEAR A SIGN A578LINEAR A SIGN A579LINEAR A SIGN A580LINEAR " + + "A SIGN A581LINEAR A SIGN A582LINEAR A SIGN A583LINEAR A SIGN A584LINEAR " + + "A SIGN A585LINEAR A SIGN A586LINEAR A SIGN A587LINEAR A SIGN A588LINEAR " + + "A SIGN A589LINEAR A SIGN A591LINEAR A SIGN A592LINEAR A SIGN A594LINEAR " + + "A SIGN A595LINEAR A SIGN A596LINEAR A SIGN A598LINEAR A SIGN A600LINEAR " + + "A SIGN A601LINEAR A SIGN A602LINEAR A SIGN A603LINEAR A SIGN A604LINEAR " + + "A SIGN A606LINEAR A SIGN A608LINEAR A SIGN A609LINEAR A SIGN A610LINEAR " + + "A SIGN A611LINEAR A SIGN A612LINEAR A SIGN A613LINEAR A SIGN A614LINEAR " + + "A SIGN A615LINEAR A SIGN A616LINEAR A SIGN A617LINEAR A SIGN A618LINEAR ") + ("" + + "A SIGN A619LINEAR A SIGN A620LINEAR A SIGN A621LINEAR A SIGN A622LINEAR " + + "A SIGN A623LINEAR A SIGN A624LINEAR A SIGN A626LINEAR A SIGN A627LINEAR " + + "A SIGN A628LINEAR A SIGN A629LINEAR A SIGN A634LINEAR A SIGN A637LINEAR " + + "A SIGN A638LINEAR A SIGN A640LINEAR A SIGN A642LINEAR A SIGN A643LINEAR " + + "A SIGN A644LINEAR A SIGN A645LINEAR A SIGN A646LINEAR A SIGN A648LINEAR " + + "A SIGN A649LINEAR A SIGN A651LINEAR A SIGN A652LINEAR A SIGN A653LINEAR " + + "A SIGN A654LINEAR A SIGN A655LINEAR A SIGN A656LINEAR A SIGN A657LINEAR " + + "A SIGN A658LINEAR A SIGN A659LINEAR A SIGN A660LINEAR A SIGN A661LINEAR " + + "A SIGN A662LINEAR A SIGN A663LINEAR A SIGN A664LINEAR A SIGN A701 ALINEA" + + "R A SIGN A702 BLINEAR A SIGN A703 DLINEAR A SIGN A704 ELINEAR A SIGN A70" + + "5 FLINEAR A SIGN A706 HLINEAR A SIGN A707 JLINEAR A SIGN A708 KLINEAR A " + + "SIGN A709 LLINEAR A SIGN A709-2 L2LINEAR A SIGN A709-3 L3LINEAR A SIGN A" + + "709-4 L4LINEAR A SIGN A709-6 L6LINEAR A SIGN A710 WLINEAR A SIGN A711 XL" + + "INEAR A SIGN A712 YLINEAR A SIGN A713 OMEGALINEAR A SIGN A714 ABBLINEAR " + + "A SIGN A715 BBLINEAR A SIGN A717 DDLINEAR A SIGN A726 EYYYLINEAR A SIGN " + + "A732 JELINEAR A SIGN A800LINEAR A SIGN A801LINEAR A SIGN A802LINEAR A SI" + + "GN A803LINEAR A SIGN A804LINEAR A SIGN A805LINEAR A SIGN A806LINEAR A SI" + + "GN A807CYPRIOT SYLLABLE ACYPRIOT SYLLABLE ECYPRIOT SYLLABLE ICYPRIOT SYL" + + "LABLE OCYPRIOT SYLLABLE UCYPRIOT SYLLABLE JACYPRIOT SYLLABLE JOCYPRIOT S" + + "YLLABLE KACYPRIOT SYLLABLE KECYPRIOT SYLLABLE KICYPRIOT SYLLABLE KOCYPRI" + + "OT SYLLABLE KUCYPRIOT SYLLABLE LACYPRIOT SYLLABLE LECYPRIOT SYLLABLE LIC" + + "YPRIOT SYLLABLE LOCYPRIOT SYLLABLE LUCYPRIOT SYLLABLE MACYPRIOT SYLLABLE" + + " MECYPRIOT SYLLABLE MICYPRIOT SYLLABLE MOCYPRIOT SYLLABLE MUCYPRIOT SYLL" + + "ABLE NACYPRIOT SYLLABLE NECYPRIOT SYLLABLE NICYPRIOT SYLLABLE NOCYPRIOT " + + "SYLLABLE NUCYPRIOT SYLLABLE PACYPRIOT SYLLABLE PECYPRIOT SYLLABLE PICYPR" + + "IOT SYLLABLE POCYPRIOT SYLLABLE PUCYPRIOT SYLLABLE RACYPRIOT SYLLABLE RE" + + "CYPRIOT SYLLABLE RICYPRIOT SYLLABLE ROCYPRIOT SYLLABLE RUCYPRIOT SYLLABL" + + "E SACYPRIOT SYLLABLE SECYPRIOT SYLLABLE SICYPRIOT SYLLABLE SOCYPRIOT SYL" + + "LABLE SUCYPRIOT SYLLABLE TACYPRIOT SYLLABLE TECYPRIOT SYLLABLE TICYPRIOT" + + " SYLLABLE TOCYPRIOT SYLLABLE TUCYPRIOT SYLLABLE WACYPRIOT SYLLABLE WECYP" + + "RIOT SYLLABLE WICYPRIOT SYLLABLE WOCYPRIOT SYLLABLE XACYPRIOT SYLLABLE X" + + "ECYPRIOT SYLLABLE ZACYPRIOT SYLLABLE ZOIMPERIAL ARAMAIC LETTER ALEPHIMPE" + + "RIAL ARAMAIC LETTER BETHIMPERIAL ARAMAIC LETTER GIMELIMPERIAL ARAMAIC LE" + + "TTER DALETHIMPERIAL ARAMAIC LETTER HEIMPERIAL ARAMAIC LETTER WAWIMPERIAL" + + " ARAMAIC LETTER ZAYINIMPERIAL ARAMAIC LETTER HETHIMPERIAL ARAMAIC LETTER" + + " TETHIMPERIAL ARAMAIC LETTER YODHIMPERIAL ARAMAIC LETTER KAPHIMPERIAL AR" + + "AMAIC LETTER LAMEDHIMPERIAL ARAMAIC LETTER MEMIMPERIAL ARAMAIC LETTER NU" + + "NIMPERIAL ARAMAIC LETTER SAMEKHIMPERIAL ARAMAIC LETTER AYINIMPERIAL ARAM" + + "AIC LETTER PEIMPERIAL ARAMAIC LETTER SADHEIMPERIAL ARAMAIC LETTER QOPHIM" + + "PERIAL ARAMAIC LETTER RESHIMPERIAL ARAMAIC LETTER SHINIMPERIAL ARAMAIC L" + + "ETTER TAWIMPERIAL ARAMAIC SECTION SIGNIMPERIAL ARAMAIC NUMBER ONEIMPERIA" + + "L ARAMAIC NUMBER TWOIMPERIAL ARAMAIC NUMBER THREEIMPERIAL ARAMAIC NUMBER" + + " TENIMPERIAL ARAMAIC NUMBER TWENTYIMPERIAL ARAMAIC NUMBER ONE HUNDREDIMP" + + "ERIAL ARAMAIC NUMBER ONE THOUSANDIMPERIAL ARAMAIC NUMBER TEN THOUSANDPAL" + + "MYRENE LETTER ALEPHPALMYRENE LETTER BETHPALMYRENE LETTER GIMELPALMYRENE " + + "LETTER DALETHPALMYRENE LETTER HEPALMYRENE LETTER WAWPALMYRENE LETTER ZAY" + + "INPALMYRENE LETTER HETHPALMYRENE LETTER TETHPALMYRENE LETTER YODHPALMYRE" + + "NE LETTER KAPHPALMYRENE LETTER LAMEDHPALMYRENE LETTER MEMPALMYRENE LETTE" + + "R FINAL NUNPALMYRENE LETTER NUNPALMYRENE LETTER SAMEKHPALMYRENE LETTER A" + + "YINPALMYRENE LETTER PEPALMYRENE LETTER SADHEPALMYRENE LETTER QOPHPALMYRE" + + "NE LETTER RESHPALMYRENE LETTER SHINPALMYRENE LETTER TAWPALMYRENE LEFT-PO" + + "INTING FLEURONPALMYRENE RIGHT-POINTING FLEURONPALMYRENE NUMBER ONEPALMYR" + + "ENE NUMBER TWOPALMYRENE NUMBER THREEPALMYRENE NUMBER FOURPALMYRENE NUMBE" + + "R FIVEPALMYRENE NUMBER TENPALMYRENE NUMBER TWENTYNABATAEAN LETTER FINAL " + + "ALEPHNABATAEAN LETTER ALEPHNABATAEAN LETTER FINAL BETHNABATAEAN LETTER B" + + "ETHNABATAEAN LETTER GIMELNABATAEAN LETTER DALETHNABATAEAN LETTER FINAL H" + + "ENABATAEAN LETTER HENABATAEAN LETTER WAWNABATAEAN LETTER ZAYINNABATAEAN " + + "LETTER HETHNABATAEAN LETTER TETHNABATAEAN LETTER FINAL YODHNABATAEAN LET" + + "TER YODHNABATAEAN LETTER FINAL KAPHNABATAEAN LETTER KAPHNABATAEAN LETTER" + + " FINAL LAMEDHNABATAEAN LETTER LAMEDHNABATAEAN LETTER FINAL MEMNABATAEAN " + + "LETTER MEMNABATAEAN LETTER FINAL NUNNABATAEAN LETTER NUNNABATAEAN LETTER" + + " SAMEKHNABATAEAN LETTER AYINNABATAEAN LETTER PENABATAEAN LETTER SADHENAB" + + "ATAEAN LETTER QOPHNABATAEAN LETTER RESHNABATAEAN LETTER FINAL SHINNABATA" + + "EAN LETTER SHINNABATAEAN LETTER TAWNABATAEAN NUMBER ONENABATAEAN NUMBER ") + ("" + + "TWONABATAEAN NUMBER THREENABATAEAN NUMBER FOURNABATAEAN CRUCIFORM NUMBER" + + " FOURNABATAEAN NUMBER FIVENABATAEAN NUMBER TENNABATAEAN NUMBER TWENTYNAB" + + "ATAEAN NUMBER ONE HUNDREDHATRAN LETTER ALEPHHATRAN LETTER BETHHATRAN LET" + + "TER GIMELHATRAN LETTER DALETH-RESHHATRAN LETTER HEHATRAN LETTER WAWHATRA" + + "N LETTER ZAYNHATRAN LETTER HETHHATRAN LETTER TETHHATRAN LETTER YODHHATRA" + + "N LETTER KAPHHATRAN LETTER LAMEDHHATRAN LETTER MEMHATRAN LETTER NUNHATRA" + + "N LETTER SAMEKHHATRAN LETTER AYNHATRAN LETTER PEHATRAN LETTER SADHEHATRA" + + "N LETTER QOPHHATRAN LETTER SHINHATRAN LETTER TAWHATRAN NUMBER ONEHATRAN " + + "NUMBER FIVEHATRAN NUMBER TENHATRAN NUMBER TWENTYHATRAN NUMBER ONE HUNDRE" + + "DPHOENICIAN LETTER ALFPHOENICIAN LETTER BETPHOENICIAN LETTER GAMLPHOENIC" + + "IAN LETTER DELTPHOENICIAN LETTER HEPHOENICIAN LETTER WAUPHOENICIAN LETTE" + + "R ZAIPHOENICIAN LETTER HETPHOENICIAN LETTER TETPHOENICIAN LETTER YODPHOE" + + "NICIAN LETTER KAFPHOENICIAN LETTER LAMDPHOENICIAN LETTER MEMPHOENICIAN L" + + "ETTER NUNPHOENICIAN LETTER SEMKPHOENICIAN LETTER AINPHOENICIAN LETTER PE" + + "PHOENICIAN LETTER SADEPHOENICIAN LETTER QOFPHOENICIAN LETTER ROSHPHOENIC" + + "IAN LETTER SHINPHOENICIAN LETTER TAUPHOENICIAN NUMBER ONEPHOENICIAN NUMB" + + "ER TENPHOENICIAN NUMBER TWENTYPHOENICIAN NUMBER ONE HUNDREDPHOENICIAN NU" + + "MBER TWOPHOENICIAN NUMBER THREEPHOENICIAN WORD SEPARATORLYDIAN LETTER AL" + + "YDIAN LETTER BLYDIAN LETTER GLYDIAN LETTER DLYDIAN LETTER ELYDIAN LETTER" + + " VLYDIAN LETTER ILYDIAN LETTER YLYDIAN LETTER KLYDIAN LETTER LLYDIAN LET" + + "TER MLYDIAN LETTER NLYDIAN LETTER OLYDIAN LETTER RLYDIAN LETTER SSLYDIAN" + + " LETTER TLYDIAN LETTER ULYDIAN LETTER FLYDIAN LETTER QLYDIAN LETTER SLYD" + + "IAN LETTER TTLYDIAN LETTER ANLYDIAN LETTER ENLYDIAN LETTER LYLYDIAN LETT" + + "ER NNLYDIAN LETTER CLYDIAN TRIANGULAR MARKMEROITIC HIEROGLYPHIC LETTER A" + + "MEROITIC HIEROGLYPHIC LETTER EMEROITIC HIEROGLYPHIC LETTER IMEROITIC HIE" + + "ROGLYPHIC LETTER OMEROITIC HIEROGLYPHIC LETTER YAMEROITIC HIEROGLYPHIC L" + + "ETTER WAMEROITIC HIEROGLYPHIC LETTER BAMEROITIC HIEROGLYPHIC LETTER BA-2" + + "MEROITIC HIEROGLYPHIC LETTER PAMEROITIC HIEROGLYPHIC LETTER MAMEROITIC H" + + "IEROGLYPHIC LETTER NAMEROITIC HIEROGLYPHIC LETTER NA-2MEROITIC HIEROGLYP" + + "HIC LETTER NEMEROITIC HIEROGLYPHIC LETTER NE-2MEROITIC HIEROGLYPHIC LETT" + + "ER RAMEROITIC HIEROGLYPHIC LETTER RA-2MEROITIC HIEROGLYPHIC LETTER LAMER" + + "OITIC HIEROGLYPHIC LETTER KHAMEROITIC HIEROGLYPHIC LETTER HHAMEROITIC HI" + + "EROGLYPHIC LETTER SAMEROITIC HIEROGLYPHIC LETTER SA-2MEROITIC HIEROGLYPH" + + "IC LETTER SEMEROITIC HIEROGLYPHIC LETTER KAMEROITIC HIEROGLYPHIC LETTER " + + "QAMEROITIC HIEROGLYPHIC LETTER TAMEROITIC HIEROGLYPHIC LETTER TA-2MEROIT" + + "IC HIEROGLYPHIC LETTER TEMEROITIC HIEROGLYPHIC LETTER TE-2MEROITIC HIERO" + + "GLYPHIC LETTER TOMEROITIC HIEROGLYPHIC LETTER DAMEROITIC HIEROGLYPHIC SY" + + "MBOL VIDJMEROITIC HIEROGLYPHIC SYMBOL VIDJ-2MEROITIC CURSIVE LETTER AMER" + + "OITIC CURSIVE LETTER EMEROITIC CURSIVE LETTER IMEROITIC CURSIVE LETTER O" + + "MEROITIC CURSIVE LETTER YAMEROITIC CURSIVE LETTER WAMEROITIC CURSIVE LET" + + "TER BAMEROITIC CURSIVE LETTER PAMEROITIC CURSIVE LETTER MAMEROITIC CURSI" + + "VE LETTER NAMEROITIC CURSIVE LETTER NEMEROITIC CURSIVE LETTER RAMEROITIC" + + " CURSIVE LETTER LAMEROITIC CURSIVE LETTER KHAMEROITIC CURSIVE LETTER HHA" + + "MEROITIC CURSIVE LETTER SAMEROITIC CURSIVE LETTER ARCHAIC SAMEROITIC CUR" + + "SIVE LETTER SEMEROITIC CURSIVE LETTER KAMEROITIC CURSIVE LETTER QAMEROIT" + + "IC CURSIVE LETTER TAMEROITIC CURSIVE LETTER TEMEROITIC CURSIVE LETTER TO" + + "MEROITIC CURSIVE LETTER DAMEROITIC CURSIVE FRACTION ELEVEN TWELFTHSMEROI" + + "TIC CURSIVE FRACTION ONE HALFMEROITIC CURSIVE LOGOGRAM RMTMEROITIC CURSI" + + "VE LOGOGRAM IMNMEROITIC CURSIVE NUMBER ONEMEROITIC CURSIVE NUMBER TWOMER" + + "OITIC CURSIVE NUMBER THREEMEROITIC CURSIVE NUMBER FOURMEROITIC CURSIVE N" + + "UMBER FIVEMEROITIC CURSIVE NUMBER SIXMEROITIC CURSIVE NUMBER SEVENMEROIT" + + "IC CURSIVE NUMBER EIGHTMEROITIC CURSIVE NUMBER NINEMEROITIC CURSIVE NUMB" + + "ER TENMEROITIC CURSIVE NUMBER TWENTYMEROITIC CURSIVE NUMBER THIRTYMEROIT" + + "IC CURSIVE NUMBER FORTYMEROITIC CURSIVE NUMBER FIFTYMEROITIC CURSIVE NUM" + + "BER SIXTYMEROITIC CURSIVE NUMBER SEVENTYMEROITIC CURSIVE NUMBER ONE HUND" + + "REDMEROITIC CURSIVE NUMBER TWO HUNDREDMEROITIC CURSIVE NUMBER THREE HUND" + + "REDMEROITIC CURSIVE NUMBER FOUR HUNDREDMEROITIC CURSIVE NUMBER FIVE HUND" + + "REDMEROITIC CURSIVE NUMBER SIX HUNDREDMEROITIC CURSIVE NUMBER SEVEN HUND" + + "REDMEROITIC CURSIVE NUMBER EIGHT HUNDREDMEROITIC CURSIVE NUMBER NINE HUN" + + "DREDMEROITIC CURSIVE NUMBER ONE THOUSANDMEROITIC CURSIVE NUMBER TWO THOU" + + "SANDMEROITIC CURSIVE NUMBER THREE THOUSANDMEROITIC CURSIVE NUMBER FOUR T" + + "HOUSANDMEROITIC CURSIVE NUMBER FIVE THOUSANDMEROITIC CURSIVE NUMBER SIX " + + "THOUSANDMEROITIC CURSIVE NUMBER SEVEN THOUSANDMEROITIC CURSIVE NUMBER EI" + + "GHT THOUSANDMEROITIC CURSIVE NUMBER NINE THOUSANDMEROITIC CURSIVE NUMBER") + ("" + + " TEN THOUSANDMEROITIC CURSIVE NUMBER TWENTY THOUSANDMEROITIC CURSIVE NUM" + + "BER THIRTY THOUSANDMEROITIC CURSIVE NUMBER FORTY THOUSANDMEROITIC CURSIV" + + "E NUMBER FIFTY THOUSANDMEROITIC CURSIVE NUMBER SIXTY THOUSANDMEROITIC CU" + + "RSIVE NUMBER SEVENTY THOUSANDMEROITIC CURSIVE NUMBER EIGHTY THOUSANDMERO" + + "ITIC CURSIVE NUMBER NINETY THOUSANDMEROITIC CURSIVE NUMBER ONE HUNDRED T" + + "HOUSANDMEROITIC CURSIVE NUMBER TWO HUNDRED THOUSANDMEROITIC CURSIVE NUMB" + + "ER THREE HUNDRED THOUSANDMEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSANDME" + + "ROITIC CURSIVE NUMBER FIVE HUNDRED THOUSANDMEROITIC CURSIVE NUMBER SIX H" + + "UNDRED THOUSANDMEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSANDMEROITIC CU" + + "RSIVE NUMBER EIGHT HUNDRED THOUSANDMEROITIC CURSIVE NUMBER NINE HUNDRED " + + "THOUSANDMEROITIC CURSIVE FRACTION ONE TWELFTHMEROITIC CURSIVE FRACTION T" + + "WO TWELFTHSMEROITIC CURSIVE FRACTION THREE TWELFTHSMEROITIC CURSIVE FRAC" + + "TION FOUR TWELFTHSMEROITIC CURSIVE FRACTION FIVE TWELFTHSMEROITIC CURSIV" + + "E FRACTION SIX TWELFTHSMEROITIC CURSIVE FRACTION SEVEN TWELFTHSMEROITIC " + + "CURSIVE FRACTION EIGHT TWELFTHSMEROITIC CURSIVE FRACTION NINE TWELFTHSME" + + "ROITIC CURSIVE FRACTION TEN TWELFTHSKHAROSHTHI LETTER AKHAROSHTHI VOWEL " + + "SIGN IKHAROSHTHI VOWEL SIGN UKHAROSHTHI VOWEL SIGN VOCALIC RKHAROSHTHI V" + + "OWEL SIGN EKHAROSHTHI VOWEL SIGN OKHAROSHTHI VOWEL LENGTH MARKKHAROSHTHI" + + " SIGN DOUBLE RING BELOWKHAROSHTHI SIGN ANUSVARAKHAROSHTHI SIGN VISARGAKH" + + "AROSHTHI LETTER KAKHAROSHTHI LETTER KHAKHAROSHTHI LETTER GAKHAROSHTHI LE" + + "TTER GHAKHAROSHTHI LETTER CAKHAROSHTHI LETTER CHAKHAROSHTHI LETTER JAKHA" + + "ROSHTHI LETTER NYAKHAROSHTHI LETTER TTAKHAROSHTHI LETTER TTHAKHAROSHTHI " + + "LETTER DDAKHAROSHTHI LETTER DDHAKHAROSHTHI LETTER NNAKHAROSHTHI LETTER T" + + "AKHAROSHTHI LETTER THAKHAROSHTHI LETTER DAKHAROSHTHI LETTER DHAKHAROSHTH" + + "I LETTER NAKHAROSHTHI LETTER PAKHAROSHTHI LETTER PHAKHAROSHTHI LETTER BA" + + "KHAROSHTHI LETTER BHAKHAROSHTHI LETTER MAKHAROSHTHI LETTER YAKHAROSHTHI " + + "LETTER RAKHAROSHTHI LETTER LAKHAROSHTHI LETTER VAKHAROSHTHI LETTER SHAKH" + + "AROSHTHI LETTER SSAKHAROSHTHI LETTER SAKHAROSHTHI LETTER ZAKHAROSHTHI LE" + + "TTER HAKHAROSHTHI LETTER KKAKHAROSHTHI LETTER TTTHAKHAROSHTHI SIGN BAR A" + + "BOVEKHAROSHTHI SIGN CAUDAKHAROSHTHI SIGN DOT BELOWKHAROSHTHI VIRAMAKHARO" + + "SHTHI DIGIT ONEKHAROSHTHI DIGIT TWOKHAROSHTHI DIGIT THREEKHAROSHTHI DIGI" + + "T FOURKHAROSHTHI NUMBER TENKHAROSHTHI NUMBER TWENTYKHAROSHTHI NUMBER ONE" + + " HUNDREDKHAROSHTHI NUMBER ONE THOUSANDKHAROSHTHI PUNCTUATION DOTKHAROSHT" + + "HI PUNCTUATION SMALL CIRCLEKHAROSHTHI PUNCTUATION CIRCLEKHAROSHTHI PUNCT" + + "UATION CRESCENT BARKHAROSHTHI PUNCTUATION MANGALAMKHAROSHTHI PUNCTUATION" + + " LOTUSKHAROSHTHI PUNCTUATION DANDAKHAROSHTHI PUNCTUATION DOUBLE DANDAKHA" + + "ROSHTHI PUNCTUATION LINESOLD SOUTH ARABIAN LETTER HEOLD SOUTH ARABIAN LE" + + "TTER LAMEDHOLD SOUTH ARABIAN LETTER HETHOLD SOUTH ARABIAN LETTER MEMOLD " + + "SOUTH ARABIAN LETTER QOPHOLD SOUTH ARABIAN LETTER WAWOLD SOUTH ARABIAN L" + + "ETTER SHINOLD SOUTH ARABIAN LETTER RESHOLD SOUTH ARABIAN LETTER BETHOLD " + + "SOUTH ARABIAN LETTER TAWOLD SOUTH ARABIAN LETTER SATOLD SOUTH ARABIAN LE" + + "TTER KAPHOLD SOUTH ARABIAN LETTER NUNOLD SOUTH ARABIAN LETTER KHETHOLD S" + + "OUTH ARABIAN LETTER SADHEOLD SOUTH ARABIAN LETTER SAMEKHOLD SOUTH ARABIA" + + "N LETTER FEOLD SOUTH ARABIAN LETTER ALEFOLD SOUTH ARABIAN LETTER AYNOLD " + + "SOUTH ARABIAN LETTER DHADHEOLD SOUTH ARABIAN LETTER GIMELOLD SOUTH ARABI" + + "AN LETTER DALETHOLD SOUTH ARABIAN LETTER GHAYNOLD SOUTH ARABIAN LETTER T" + + "ETHOLD SOUTH ARABIAN LETTER ZAYNOLD SOUTH ARABIAN LETTER DHALETHOLD SOUT" + + "H ARABIAN LETTER YODHOLD SOUTH ARABIAN LETTER THAWOLD SOUTH ARABIAN LETT" + + "ER THETHOLD SOUTH ARABIAN NUMBER ONEOLD SOUTH ARABIAN NUMBER FIFTYOLD SO" + + "UTH ARABIAN NUMERIC INDICATOROLD NORTH ARABIAN LETTER HEHOLD NORTH ARABI" + + "AN LETTER LAMOLD NORTH ARABIAN LETTER HAHOLD NORTH ARABIAN LETTER MEEMOL" + + "D NORTH ARABIAN LETTER QAFOLD NORTH ARABIAN LETTER WAWOLD NORTH ARABIAN " + + "LETTER ES-2OLD NORTH ARABIAN LETTER REHOLD NORTH ARABIAN LETTER BEHOLD N" + + "ORTH ARABIAN LETTER TEHOLD NORTH ARABIAN LETTER ES-1OLD NORTH ARABIAN LE" + + "TTER KAFOLD NORTH ARABIAN LETTER NOONOLD NORTH ARABIAN LETTER KHAHOLD NO" + + "RTH ARABIAN LETTER SADOLD NORTH ARABIAN LETTER ES-3OLD NORTH ARABIAN LET" + + "TER FEHOLD NORTH ARABIAN LETTER ALEFOLD NORTH ARABIAN LETTER AINOLD NORT" + + "H ARABIAN LETTER DADOLD NORTH ARABIAN LETTER GEEMOLD NORTH ARABIAN LETTE" + + "R DALOLD NORTH ARABIAN LETTER GHAINOLD NORTH ARABIAN LETTER TAHOLD NORTH" + + " ARABIAN LETTER ZAINOLD NORTH ARABIAN LETTER THALOLD NORTH ARABIAN LETTE" + + "R YEHOLD NORTH ARABIAN LETTER THEHOLD NORTH ARABIAN LETTER ZAHOLD NORTH " + + "ARABIAN NUMBER ONEOLD NORTH ARABIAN NUMBER TENOLD NORTH ARABIAN NUMBER T" + + "WENTYMANICHAEAN LETTER ALEPHMANICHAEAN LETTER BETHMANICHAEAN LETTER BHET" + + "HMANICHAEAN LETTER GIMELMANICHAEAN LETTER GHIMELMANICHAEAN LETTER DALETH") + ("" + + "MANICHAEAN LETTER HEMANICHAEAN LETTER WAWMANICHAEAN SIGN UDMANICHAEAN LE" + + "TTER ZAYINMANICHAEAN LETTER ZHAYINMANICHAEAN LETTER JAYINMANICHAEAN LETT" + + "ER JHAYINMANICHAEAN LETTER HETHMANICHAEAN LETTER TETHMANICHAEAN LETTER Y" + + "ODHMANICHAEAN LETTER KAPHMANICHAEAN LETTER XAPHMANICHAEAN LETTER KHAPHMA" + + "NICHAEAN LETTER LAMEDHMANICHAEAN LETTER DHAMEDHMANICHAEAN LETTER THAMEDH" + + "MANICHAEAN LETTER MEMMANICHAEAN LETTER NUNMANICHAEAN LETTER SAMEKHMANICH" + + "AEAN LETTER AYINMANICHAEAN LETTER AAYINMANICHAEAN LETTER PEMANICHAEAN LE" + + "TTER FEMANICHAEAN LETTER SADHEMANICHAEAN LETTER QOPHMANICHAEAN LETTER XO" + + "PHMANICHAEAN LETTER QHOPHMANICHAEAN LETTER RESHMANICHAEAN LETTER SHINMAN" + + "ICHAEAN LETTER SSHINMANICHAEAN LETTER TAWMANICHAEAN ABBREVIATION MARK AB" + + "OVEMANICHAEAN ABBREVIATION MARK BELOWMANICHAEAN NUMBER ONEMANICHAEAN NUM" + + "BER FIVEMANICHAEAN NUMBER TENMANICHAEAN NUMBER TWENTYMANICHAEAN NUMBER O" + + "NE HUNDREDMANICHAEAN PUNCTUATION STARMANICHAEAN PUNCTUATION FLEURONMANIC" + + "HAEAN PUNCTUATION DOUBLE DOT WITHIN DOTMANICHAEAN PUNCTUATION DOT WITHIN" + + " DOTMANICHAEAN PUNCTUATION DOTMANICHAEAN PUNCTUATION TWO DOTSMANICHAEAN " + + "PUNCTUATION LINE FILLERAVESTAN LETTER AAVESTAN LETTER AAAVESTAN LETTER A" + + "OAVESTAN LETTER AAOAVESTAN LETTER ANAVESTAN LETTER AANAVESTAN LETTER AEA" + + "VESTAN LETTER AEEAVESTAN LETTER EAVESTAN LETTER EEAVESTAN LETTER OAVESTA" + + "N LETTER OOAVESTAN LETTER IAVESTAN LETTER IIAVESTAN LETTER UAVESTAN LETT" + + "ER UUAVESTAN LETTER KEAVESTAN LETTER XEAVESTAN LETTER XYEAVESTAN LETTER " + + "XVEAVESTAN LETTER GEAVESTAN LETTER GGEAVESTAN LETTER GHEAVESTAN LETTER C" + + "EAVESTAN LETTER JEAVESTAN LETTER TEAVESTAN LETTER THEAVESTAN LETTER DEAV" + + "ESTAN LETTER DHEAVESTAN LETTER TTEAVESTAN LETTER PEAVESTAN LETTER FEAVES" + + "TAN LETTER BEAVESTAN LETTER BHEAVESTAN LETTER NGEAVESTAN LETTER NGYEAVES" + + "TAN LETTER NGVEAVESTAN LETTER NEAVESTAN LETTER NYEAVESTAN LETTER NNEAVES" + + "TAN LETTER MEAVESTAN LETTER HMEAVESTAN LETTER YYEAVESTAN LETTER YEAVESTA" + + "N LETTER VEAVESTAN LETTER REAVESTAN LETTER LEAVESTAN LETTER SEAVESTAN LE" + + "TTER ZEAVESTAN LETTER SHEAVESTAN LETTER ZHEAVESTAN LETTER SHYEAVESTAN LE" + + "TTER SSHEAVESTAN LETTER HEAVESTAN ABBREVIATION MARKTINY TWO DOTS OVER ON" + + "E DOT PUNCTUATIONSMALL TWO DOTS OVER ONE DOT PUNCTUATIONLARGE TWO DOTS O" + + "VER ONE DOT PUNCTUATIONLARGE ONE DOT OVER TWO DOTS PUNCTUATIONLARGE TWO " + + "RINGS OVER ONE RING PUNCTUATIONLARGE ONE RING OVER TWO RINGS PUNCTUATION" + + "INSCRIPTIONAL PARTHIAN LETTER ALEPHINSCRIPTIONAL PARTHIAN LETTER BETHINS" + + "CRIPTIONAL PARTHIAN LETTER GIMELINSCRIPTIONAL PARTHIAN LETTER DALETHINSC" + + "RIPTIONAL PARTHIAN LETTER HEINSCRIPTIONAL PARTHIAN LETTER WAWINSCRIPTION" + + "AL PARTHIAN LETTER ZAYININSCRIPTIONAL PARTHIAN LETTER HETHINSCRIPTIONAL " + + "PARTHIAN LETTER TETHINSCRIPTIONAL PARTHIAN LETTER YODHINSCRIPTIONAL PART" + + "HIAN LETTER KAPHINSCRIPTIONAL PARTHIAN LETTER LAMEDHINSCRIPTIONAL PARTHI" + + "AN LETTER MEMINSCRIPTIONAL PARTHIAN LETTER NUNINSCRIPTIONAL PARTHIAN LET" + + "TER SAMEKHINSCRIPTIONAL PARTHIAN LETTER AYININSCRIPTIONAL PARTHIAN LETTE" + + "R PEINSCRIPTIONAL PARTHIAN LETTER SADHEINSCRIPTIONAL PARTHIAN LETTER QOP" + + "HINSCRIPTIONAL PARTHIAN LETTER RESHINSCRIPTIONAL PARTHIAN LETTER SHININS" + + "CRIPTIONAL PARTHIAN LETTER TAWINSCRIPTIONAL PARTHIAN NUMBER ONEINSCRIPTI" + + "ONAL PARTHIAN NUMBER TWOINSCRIPTIONAL PARTHIAN NUMBER THREEINSCRIPTIONAL" + + " PARTHIAN NUMBER FOURINSCRIPTIONAL PARTHIAN NUMBER TENINSCRIPTIONAL PART" + + "HIAN NUMBER TWENTYINSCRIPTIONAL PARTHIAN NUMBER ONE HUNDREDINSCRIPTIONAL" + + " PARTHIAN NUMBER ONE THOUSANDINSCRIPTIONAL PAHLAVI LETTER ALEPHINSCRIPTI" + + "ONAL PAHLAVI LETTER BETHINSCRIPTIONAL PAHLAVI LETTER GIMELINSCRIPTIONAL " + + "PAHLAVI LETTER DALETHINSCRIPTIONAL PAHLAVI LETTER HEINSCRIPTIONAL PAHLAV" + + "I LETTER WAW-AYIN-RESHINSCRIPTIONAL PAHLAVI LETTER ZAYININSCRIPTIONAL PA" + + "HLAVI LETTER HETHINSCRIPTIONAL PAHLAVI LETTER TETHINSCRIPTIONAL PAHLAVI " + + "LETTER YODHINSCRIPTIONAL PAHLAVI LETTER KAPHINSCRIPTIONAL PAHLAVI LETTER" + + " LAMEDHINSCRIPTIONAL PAHLAVI LETTER MEM-QOPHINSCRIPTIONAL PAHLAVI LETTER" + + " NUNINSCRIPTIONAL PAHLAVI LETTER SAMEKHINSCRIPTIONAL PAHLAVI LETTER PEIN" + + "SCRIPTIONAL PAHLAVI LETTER SADHEINSCRIPTIONAL PAHLAVI LETTER SHININSCRIP" + + "TIONAL PAHLAVI LETTER TAWINSCRIPTIONAL PAHLAVI NUMBER ONEINSCRIPTIONAL P" + + "AHLAVI NUMBER TWOINSCRIPTIONAL PAHLAVI NUMBER THREEINSCRIPTIONAL PAHLAVI" + + " NUMBER FOURINSCRIPTIONAL PAHLAVI NUMBER TENINSCRIPTIONAL PAHLAVI NUMBER" + + " TWENTYINSCRIPTIONAL PAHLAVI NUMBER ONE HUNDREDINSCRIPTIONAL PAHLAVI NUM" + + "BER ONE THOUSANDPSALTER PAHLAVI LETTER ALEPHPSALTER PAHLAVI LETTER BETHP" + + "SALTER PAHLAVI LETTER GIMELPSALTER PAHLAVI LETTER DALETHPSALTER PAHLAVI " + + "LETTER HEPSALTER PAHLAVI LETTER WAW-AYIN-RESHPSALTER PAHLAVI LETTER ZAYI" + + "NPSALTER PAHLAVI LETTER HETHPSALTER PAHLAVI LETTER YODHPSALTER PAHLAVI L" + + "ETTER KAPHPSALTER PAHLAVI LETTER LAMEDHPSALTER PAHLAVI LETTER MEM-QOPHPS") + ("" + + "ALTER PAHLAVI LETTER NUNPSALTER PAHLAVI LETTER SAMEKHPSALTER PAHLAVI LET" + + "TER PEPSALTER PAHLAVI LETTER SADHEPSALTER PAHLAVI LETTER SHINPSALTER PAH" + + "LAVI LETTER TAWPSALTER PAHLAVI SECTION MARKPSALTER PAHLAVI TURNED SECTIO" + + "N MARKPSALTER PAHLAVI FOUR DOTS WITH CROSSPSALTER PAHLAVI FOUR DOTS WITH" + + " DOTPSALTER PAHLAVI NUMBER ONEPSALTER PAHLAVI NUMBER TWOPSALTER PAHLAVI " + + "NUMBER THREEPSALTER PAHLAVI NUMBER FOURPSALTER PAHLAVI NUMBER TENPSALTER" + + " PAHLAVI NUMBER TWENTYPSALTER PAHLAVI NUMBER ONE HUNDREDOLD TURKIC LETTE" + + "R ORKHON AOLD TURKIC LETTER YENISEI AOLD TURKIC LETTER YENISEI AEOLD TUR" + + "KIC LETTER ORKHON IOLD TURKIC LETTER YENISEI IOLD TURKIC LETTER YENISEI " + + "EOLD TURKIC LETTER ORKHON OOLD TURKIC LETTER ORKHON OEOLD TURKIC LETTER " + + "YENISEI OEOLD TURKIC LETTER ORKHON ABOLD TURKIC LETTER YENISEI ABOLD TUR" + + "KIC LETTER ORKHON AEBOLD TURKIC LETTER YENISEI AEBOLD TURKIC LETTER ORKH" + + "ON AGOLD TURKIC LETTER YENISEI AGOLD TURKIC LETTER ORKHON AEGOLD TURKIC " + + "LETTER YENISEI AEGOLD TURKIC LETTER ORKHON ADOLD TURKIC LETTER YENISEI A" + + "DOLD TURKIC LETTER ORKHON AEDOLD TURKIC LETTER ORKHON EZOLD TURKIC LETTE" + + "R YENISEI EZOLD TURKIC LETTER ORKHON AYOLD TURKIC LETTER YENISEI AYOLD T" + + "URKIC LETTER ORKHON AEYOLD TURKIC LETTER YENISEI AEYOLD TURKIC LETTER OR" + + "KHON AEKOLD TURKIC LETTER YENISEI AEKOLD TURKIC LETTER ORKHON OEKOLD TUR" + + "KIC LETTER YENISEI OEKOLD TURKIC LETTER ORKHON ALOLD TURKIC LETTER YENIS" + + "EI ALOLD TURKIC LETTER ORKHON AELOLD TURKIC LETTER ORKHON ELTOLD TURKIC " + + "LETTER ORKHON EMOLD TURKIC LETTER ORKHON ANOLD TURKIC LETTER ORKHON AENO" + + "LD TURKIC LETTER YENISEI AENOLD TURKIC LETTER ORKHON ENTOLD TURKIC LETTE" + + "R YENISEI ENTOLD TURKIC LETTER ORKHON ENCOLD TURKIC LETTER YENISEI ENCOL" + + "D TURKIC LETTER ORKHON ENYOLD TURKIC LETTER YENISEI ENYOLD TURKIC LETTER" + + " YENISEI ANGOLD TURKIC LETTER ORKHON ENGOLD TURKIC LETTER YENISEI AENGOL" + + "D TURKIC LETTER ORKHON EPOLD TURKIC LETTER ORKHON OPOLD TURKIC LETTER OR" + + "KHON ICOLD TURKIC LETTER ORKHON ECOLD TURKIC LETTER YENISEI ECOLD TURKIC" + + " LETTER ORKHON AQOLD TURKIC LETTER YENISEI AQOLD TURKIC LETTER ORKHON IQ" + + "OLD TURKIC LETTER YENISEI IQOLD TURKIC LETTER ORKHON OQOLD TURKIC LETTER" + + " YENISEI OQOLD TURKIC LETTER ORKHON AROLD TURKIC LETTER YENISEI AROLD TU" + + "RKIC LETTER ORKHON AEROLD TURKIC LETTER ORKHON ASOLD TURKIC LETTER ORKHO" + + "N AESOLD TURKIC LETTER ORKHON ASHOLD TURKIC LETTER YENISEI ASHOLD TURKIC" + + " LETTER ORKHON ESHOLD TURKIC LETTER YENISEI ESHOLD TURKIC LETTER ORKHON " + + "ATOLD TURKIC LETTER YENISEI ATOLD TURKIC LETTER ORKHON AETOLD TURKIC LET" + + "TER YENISEI AETOLD TURKIC LETTER ORKHON OTOLD TURKIC LETTER ORKHON BASHO" + + "LD HUNGARIAN CAPITAL LETTER AOLD HUNGARIAN CAPITAL LETTER AAOLD HUNGARIA" + + "N CAPITAL LETTER EBOLD HUNGARIAN CAPITAL LETTER AMBOLD HUNGARIAN CAPITAL" + + " LETTER ECOLD HUNGARIAN CAPITAL LETTER ENCOLD HUNGARIAN CAPITAL LETTER E" + + "CSOLD HUNGARIAN CAPITAL LETTER EDOLD HUNGARIAN CAPITAL LETTER ANDOLD HUN" + + "GARIAN CAPITAL LETTER EOLD HUNGARIAN CAPITAL LETTER CLOSE EOLD HUNGARIAN" + + " CAPITAL LETTER EEOLD HUNGARIAN CAPITAL LETTER EFOLD HUNGARIAN CAPITAL L" + + "ETTER EGOLD HUNGARIAN CAPITAL LETTER EGYOLD HUNGARIAN CAPITAL LETTER EHO" + + "LD HUNGARIAN CAPITAL LETTER IOLD HUNGARIAN CAPITAL LETTER IIOLD HUNGARIA" + + "N CAPITAL LETTER EJOLD HUNGARIAN CAPITAL LETTER EKOLD HUNGARIAN CAPITAL " + + "LETTER AKOLD HUNGARIAN CAPITAL LETTER UNKOLD HUNGARIAN CAPITAL LETTER EL" + + "OLD HUNGARIAN CAPITAL LETTER ELYOLD HUNGARIAN CAPITAL LETTER EMOLD HUNGA" + + "RIAN CAPITAL LETTER ENOLD HUNGARIAN CAPITAL LETTER ENYOLD HUNGARIAN CAPI" + + "TAL LETTER OOLD HUNGARIAN CAPITAL LETTER OOOLD HUNGARIAN CAPITAL LETTER " + + "NIKOLSBURG OEOLD HUNGARIAN CAPITAL LETTER RUDIMENTA OEOLD HUNGARIAN CAPI" + + "TAL LETTER OEEOLD HUNGARIAN CAPITAL LETTER EPOLD HUNGARIAN CAPITAL LETTE" + + "R EMPOLD HUNGARIAN CAPITAL LETTER EROLD HUNGARIAN CAPITAL LETTER SHORT E" + + "ROLD HUNGARIAN CAPITAL LETTER ESOLD HUNGARIAN CAPITAL LETTER ESZOLD HUNG" + + "ARIAN CAPITAL LETTER ETOLD HUNGARIAN CAPITAL LETTER ENTOLD HUNGARIAN CAP" + + "ITAL LETTER ETYOLD HUNGARIAN CAPITAL LETTER ECHOLD HUNGARIAN CAPITAL LET" + + "TER UOLD HUNGARIAN CAPITAL LETTER UUOLD HUNGARIAN CAPITAL LETTER NIKOLSB" + + "URG UEOLD HUNGARIAN CAPITAL LETTER RUDIMENTA UEOLD HUNGARIAN CAPITAL LET" + + "TER EVOLD HUNGARIAN CAPITAL LETTER EZOLD HUNGARIAN CAPITAL LETTER EZSOLD" + + " HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGNOLD HUNGARIAN CAPITAL LETTER US" + + "OLD HUNGARIAN SMALL LETTER AOLD HUNGARIAN SMALL LETTER AAOLD HUNGARIAN S" + + "MALL LETTER EBOLD HUNGARIAN SMALL LETTER AMBOLD HUNGARIAN SMALL LETTER E" + + "COLD HUNGARIAN SMALL LETTER ENCOLD HUNGARIAN SMALL LETTER ECSOLD HUNGARI" + + "AN SMALL LETTER EDOLD HUNGARIAN SMALL LETTER ANDOLD HUNGARIAN SMALL LETT" + + "ER EOLD HUNGARIAN SMALL LETTER CLOSE EOLD HUNGARIAN SMALL LETTER EEOLD H" + + "UNGARIAN SMALL LETTER EFOLD HUNGARIAN SMALL LETTER EGOLD HUNGARIAN SMALL") + ("" + + " LETTER EGYOLD HUNGARIAN SMALL LETTER EHOLD HUNGARIAN SMALL LETTER IOLD " + + "HUNGARIAN SMALL LETTER IIOLD HUNGARIAN SMALL LETTER EJOLD HUNGARIAN SMAL" + + "L LETTER EKOLD HUNGARIAN SMALL LETTER AKOLD HUNGARIAN SMALL LETTER UNKOL" + + "D HUNGARIAN SMALL LETTER ELOLD HUNGARIAN SMALL LETTER ELYOLD HUNGARIAN S" + + "MALL LETTER EMOLD HUNGARIAN SMALL LETTER ENOLD HUNGARIAN SMALL LETTER EN" + + "YOLD HUNGARIAN SMALL LETTER OOLD HUNGARIAN SMALL LETTER OOOLD HUNGARIAN " + + "SMALL LETTER NIKOLSBURG OEOLD HUNGARIAN SMALL LETTER RUDIMENTA OEOLD HUN" + + "GARIAN SMALL LETTER OEEOLD HUNGARIAN SMALL LETTER EPOLD HUNGARIAN SMALL " + + "LETTER EMPOLD HUNGARIAN SMALL LETTER EROLD HUNGARIAN SMALL LETTER SHORT " + + "EROLD HUNGARIAN SMALL LETTER ESOLD HUNGARIAN SMALL LETTER ESZOLD HUNGARI" + + "AN SMALL LETTER ETOLD HUNGARIAN SMALL LETTER ENTOLD HUNGARIAN SMALL LETT" + + "ER ETYOLD HUNGARIAN SMALL LETTER ECHOLD HUNGARIAN SMALL LETTER UOLD HUNG" + + "ARIAN SMALL LETTER UUOLD HUNGARIAN SMALL LETTER NIKOLSBURG UEOLD HUNGARI" + + "AN SMALL LETTER RUDIMENTA UEOLD HUNGARIAN SMALL LETTER EVOLD HUNGARIAN S" + + "MALL LETTER EZOLD HUNGARIAN SMALL LETTER EZSOLD HUNGARIAN SMALL LETTER E" + + "NT-SHAPED SIGNOLD HUNGARIAN SMALL LETTER USOLD HUNGARIAN NUMBER ONEOLD H" + + "UNGARIAN NUMBER FIVEOLD HUNGARIAN NUMBER TENOLD HUNGARIAN NUMBER FIFTYOL" + + "D HUNGARIAN NUMBER ONE HUNDREDOLD HUNGARIAN NUMBER ONE THOUSANDRUMI DIGI" + + "T ONERUMI DIGIT TWORUMI DIGIT THREERUMI DIGIT FOURRUMI DIGIT FIVERUMI DI" + + "GIT SIXRUMI DIGIT SEVENRUMI DIGIT EIGHTRUMI DIGIT NINERUMI NUMBER TENRUM" + + "I NUMBER TWENTYRUMI NUMBER THIRTYRUMI NUMBER FORTYRUMI NUMBER FIFTYRUMI " + + "NUMBER SIXTYRUMI NUMBER SEVENTYRUMI NUMBER EIGHTYRUMI NUMBER NINETYRUMI " + + "NUMBER ONE HUNDREDRUMI NUMBER TWO HUNDREDRUMI NUMBER THREE HUNDREDRUMI N" + + "UMBER FOUR HUNDREDRUMI NUMBER FIVE HUNDREDRUMI NUMBER SIX HUNDREDRUMI NU" + + "MBER SEVEN HUNDREDRUMI NUMBER EIGHT HUNDREDRUMI NUMBER NINE HUNDREDRUMI " + + "FRACTION ONE HALFRUMI FRACTION ONE QUARTERRUMI FRACTION ONE THIRDRUMI FR" + + "ACTION TWO THIRDSBRAHMI SIGN CANDRABINDUBRAHMI SIGN ANUSVARABRAHMI SIGN " + + "VISARGABRAHMI SIGN JIHVAMULIYABRAHMI SIGN UPADHMANIYABRAHMI LETTER ABRAH" + + "MI LETTER AABRAHMI LETTER IBRAHMI LETTER IIBRAHMI LETTER UBRAHMI LETTER " + + "UUBRAHMI LETTER VOCALIC RBRAHMI LETTER VOCALIC RRBRAHMI LETTER VOCALIC L" + + "BRAHMI LETTER VOCALIC LLBRAHMI LETTER EBRAHMI LETTER AIBRAHMI LETTER OBR" + + "AHMI LETTER AUBRAHMI LETTER KABRAHMI LETTER KHABRAHMI LETTER GABRAHMI LE" + + "TTER GHABRAHMI LETTER NGABRAHMI LETTER CABRAHMI LETTER CHABRAHMI LETTER " + + "JABRAHMI LETTER JHABRAHMI LETTER NYABRAHMI LETTER TTABRAHMI LETTER TTHAB" + + "RAHMI LETTER DDABRAHMI LETTER DDHABRAHMI LETTER NNABRAHMI LETTER TABRAHM" + + "I LETTER THABRAHMI LETTER DABRAHMI LETTER DHABRAHMI LETTER NABRAHMI LETT" + + "ER PABRAHMI LETTER PHABRAHMI LETTER BABRAHMI LETTER BHABRAHMI LETTER MAB" + + "RAHMI LETTER YABRAHMI LETTER RABRAHMI LETTER LABRAHMI LETTER VABRAHMI LE" + + "TTER SHABRAHMI LETTER SSABRAHMI LETTER SABRAHMI LETTER HABRAHMI LETTER L" + + "LABRAHMI LETTER OLD TAMIL LLLABRAHMI LETTER OLD TAMIL RRABRAHMI LETTER O" + + "LD TAMIL NNNABRAHMI VOWEL SIGN AABRAHMI VOWEL SIGN BHATTIPROLU AABRAHMI " + + "VOWEL SIGN IBRAHMI VOWEL SIGN IIBRAHMI VOWEL SIGN UBRAHMI VOWEL SIGN UUB" + + "RAHMI VOWEL SIGN VOCALIC RBRAHMI VOWEL SIGN VOCALIC RRBRAHMI VOWEL SIGN " + + "VOCALIC LBRAHMI VOWEL SIGN VOCALIC LLBRAHMI VOWEL SIGN EBRAHMI VOWEL SIG" + + "N AIBRAHMI VOWEL SIGN OBRAHMI VOWEL SIGN AUBRAHMI VIRAMABRAHMI DANDABRAH" + + "MI DOUBLE DANDABRAHMI PUNCTUATION DOTBRAHMI PUNCTUATION DOUBLE DOTBRAHMI" + + " PUNCTUATION LINEBRAHMI PUNCTUATION CRESCENT BARBRAHMI PUNCTUATION LOTUS" + + "BRAHMI NUMBER ONEBRAHMI NUMBER TWOBRAHMI NUMBER THREEBRAHMI NUMBER FOURB" + + "RAHMI NUMBER FIVEBRAHMI NUMBER SIXBRAHMI NUMBER SEVENBRAHMI NUMBER EIGHT" + + "BRAHMI NUMBER NINEBRAHMI NUMBER TENBRAHMI NUMBER TWENTYBRAHMI NUMBER THI" + + "RTYBRAHMI NUMBER FORTYBRAHMI NUMBER FIFTYBRAHMI NUMBER SIXTYBRAHMI NUMBE" + + "R SEVENTYBRAHMI NUMBER EIGHTYBRAHMI NUMBER NINETYBRAHMI NUMBER ONE HUNDR" + + "EDBRAHMI NUMBER ONE THOUSANDBRAHMI DIGIT ZEROBRAHMI DIGIT ONEBRAHMI DIGI" + + "T TWOBRAHMI DIGIT THREEBRAHMI DIGIT FOURBRAHMI DIGIT FIVEBRAHMI DIGIT SI" + + "XBRAHMI DIGIT SEVENBRAHMI DIGIT EIGHTBRAHMI DIGIT NINEBRAHMI NUMBER JOIN" + + "ERKAITHI SIGN CANDRABINDUKAITHI SIGN ANUSVARAKAITHI SIGN VISARGAKAITHI L" + + "ETTER AKAITHI LETTER AAKAITHI LETTER IKAITHI LETTER IIKAITHI LETTER UKAI" + + "THI LETTER UUKAITHI LETTER EKAITHI LETTER AIKAITHI LETTER OKAITHI LETTER" + + " AUKAITHI LETTER KAKAITHI LETTER KHAKAITHI LETTER GAKAITHI LETTER GHAKAI" + + "THI LETTER NGAKAITHI LETTER CAKAITHI LETTER CHAKAITHI LETTER JAKAITHI LE" + + "TTER JHAKAITHI LETTER NYAKAITHI LETTER TTAKAITHI LETTER TTHAKAITHI LETTE" + + "R DDAKAITHI LETTER DDDHAKAITHI LETTER DDHAKAITHI LETTER RHAKAITHI LETTER" + + " NNAKAITHI LETTER TAKAITHI LETTER THAKAITHI LETTER DAKAITHI LETTER DHAKA" + + "ITHI LETTER NAKAITHI LETTER PAKAITHI LETTER PHAKAITHI LETTER BAKAITHI LE") + ("" + + "TTER BHAKAITHI LETTER MAKAITHI LETTER YAKAITHI LETTER RAKAITHI LETTER LA" + + "KAITHI LETTER VAKAITHI LETTER SHAKAITHI LETTER SSAKAITHI LETTER SAKAITHI" + + " LETTER HAKAITHI VOWEL SIGN AAKAITHI VOWEL SIGN IKAITHI VOWEL SIGN IIKAI" + + "THI VOWEL SIGN UKAITHI VOWEL SIGN UUKAITHI VOWEL SIGN EKAITHI VOWEL SIGN" + + " AIKAITHI VOWEL SIGN OKAITHI VOWEL SIGN AUKAITHI SIGN VIRAMAKAITHI SIGN " + + "NUKTAKAITHI ABBREVIATION SIGNKAITHI ENUMERATION SIGNKAITHI NUMBER SIGNKA" + + "ITHI SECTION MARKKAITHI DOUBLE SECTION MARKKAITHI DANDAKAITHI DOUBLE DAN" + + "DASORA SOMPENG LETTER SAHSORA SOMPENG LETTER TAHSORA SOMPENG LETTER BAHS" + + "ORA SOMPENG LETTER CAHSORA SOMPENG LETTER DAHSORA SOMPENG LETTER GAHSORA" + + " SOMPENG LETTER MAHSORA SOMPENG LETTER NGAHSORA SOMPENG LETTER LAHSORA S" + + "OMPENG LETTER NAHSORA SOMPENG LETTER VAHSORA SOMPENG LETTER PAHSORA SOMP" + + "ENG LETTER YAHSORA SOMPENG LETTER RAHSORA SOMPENG LETTER HAHSORA SOMPENG" + + " LETTER KAHSORA SOMPENG LETTER JAHSORA SOMPENG LETTER NYAHSORA SOMPENG L" + + "ETTER AHSORA SOMPENG LETTER EEHSORA SOMPENG LETTER IHSORA SOMPENG LETTER" + + " UHSORA SOMPENG LETTER OHSORA SOMPENG LETTER EHSORA SOMPENG LETTER MAESO" + + "RA SOMPENG DIGIT ZEROSORA SOMPENG DIGIT ONESORA SOMPENG DIGIT TWOSORA SO" + + "MPENG DIGIT THREESORA SOMPENG DIGIT FOURSORA SOMPENG DIGIT FIVESORA SOMP" + + "ENG DIGIT SIXSORA SOMPENG DIGIT SEVENSORA SOMPENG DIGIT EIGHTSORA SOMPEN" + + "G DIGIT NINECHAKMA SIGN CANDRABINDUCHAKMA SIGN ANUSVARACHAKMA SIGN VISAR" + + "GACHAKMA LETTER AACHAKMA LETTER ICHAKMA LETTER UCHAKMA LETTER ECHAKMA LE" + + "TTER KAACHAKMA LETTER KHAACHAKMA LETTER GAACHAKMA LETTER GHAACHAKMA LETT" + + "ER NGAACHAKMA LETTER CAACHAKMA LETTER CHAACHAKMA LETTER JAACHAKMA LETTER" + + " JHAACHAKMA LETTER NYAACHAKMA LETTER TTAACHAKMA LETTER TTHAACHAKMA LETTE" + + "R DDAACHAKMA LETTER DDHAACHAKMA LETTER NNAACHAKMA LETTER TAACHAKMA LETTE" + + "R THAACHAKMA LETTER DAACHAKMA LETTER DHAACHAKMA LETTER NAACHAKMA LETTER " + + "PAACHAKMA LETTER PHAACHAKMA LETTER BAACHAKMA LETTER BHAACHAKMA LETTER MA" + + "ACHAKMA LETTER YYAACHAKMA LETTER YAACHAKMA LETTER RAACHAKMA LETTER LAACH" + + "AKMA LETTER WAACHAKMA LETTER SAACHAKMA LETTER HAACHAKMA VOWEL SIGN ACHAK" + + "MA VOWEL SIGN ICHAKMA VOWEL SIGN IICHAKMA VOWEL SIGN UCHAKMA VOWEL SIGN " + + "UUCHAKMA VOWEL SIGN ECHAKMA VOWEL SIGN AICHAKMA VOWEL SIGN OCHAKMA VOWEL" + + " SIGN AUCHAKMA VOWEL SIGN OICHAKMA O MARKCHAKMA AU MARKCHAKMA VIRAMACHAK" + + "MA MAAYYAACHAKMA DIGIT ZEROCHAKMA DIGIT ONECHAKMA DIGIT TWOCHAKMA DIGIT " + + "THREECHAKMA DIGIT FOURCHAKMA DIGIT FIVECHAKMA DIGIT SIXCHAKMA DIGIT SEVE" + + "NCHAKMA DIGIT EIGHTCHAKMA DIGIT NINECHAKMA SECTION MARKCHAKMA DANDACHAKM" + + "A DOUBLE DANDACHAKMA QUESTION MARKMAHAJANI LETTER AMAHAJANI LETTER IMAHA" + + "JANI LETTER UMAHAJANI LETTER EMAHAJANI LETTER OMAHAJANI LETTER KAMAHAJAN" + + "I LETTER KHAMAHAJANI LETTER GAMAHAJANI LETTER GHAMAHAJANI LETTER CAMAHAJ" + + "ANI LETTER CHAMAHAJANI LETTER JAMAHAJANI LETTER JHAMAHAJANI LETTER NYAMA" + + "HAJANI LETTER TTAMAHAJANI LETTER TTHAMAHAJANI LETTER DDAMAHAJANI LETTER " + + "DDHAMAHAJANI LETTER NNAMAHAJANI LETTER TAMAHAJANI LETTER THAMAHAJANI LET" + + "TER DAMAHAJANI LETTER DHAMAHAJANI LETTER NAMAHAJANI LETTER PAMAHAJANI LE" + + "TTER PHAMAHAJANI LETTER BAMAHAJANI LETTER BHAMAHAJANI LETTER MAMAHAJANI " + + "LETTER RAMAHAJANI LETTER LAMAHAJANI LETTER VAMAHAJANI LETTER SAMAHAJANI " + + "LETTER HAMAHAJANI LETTER RRAMAHAJANI SIGN NUKTAMAHAJANI ABBREVIATION SIG" + + "NMAHAJANI SECTION MARKMAHAJANI LIGATURE SHRISHARADA SIGN CANDRABINDUSHAR" + + "ADA SIGN ANUSVARASHARADA SIGN VISARGASHARADA LETTER ASHARADA LETTER AASH" + + "ARADA LETTER ISHARADA LETTER IISHARADA LETTER USHARADA LETTER UUSHARADA " + + "LETTER VOCALIC RSHARADA LETTER VOCALIC RRSHARADA LETTER VOCALIC LSHARADA" + + " LETTER VOCALIC LLSHARADA LETTER ESHARADA LETTER AISHARADA LETTER OSHARA" + + "DA LETTER AUSHARADA LETTER KASHARADA LETTER KHASHARADA LETTER GASHARADA " + + "LETTER GHASHARADA LETTER NGASHARADA LETTER CASHARADA LETTER CHASHARADA L" + + "ETTER JASHARADA LETTER JHASHARADA LETTER NYASHARADA LETTER TTASHARADA LE" + + "TTER TTHASHARADA LETTER DDASHARADA LETTER DDHASHARADA LETTER NNASHARADA " + + "LETTER TASHARADA LETTER THASHARADA LETTER DASHARADA LETTER DHASHARADA LE" + + "TTER NASHARADA LETTER PASHARADA LETTER PHASHARADA LETTER BASHARADA LETTE" + + "R BHASHARADA LETTER MASHARADA LETTER YASHARADA LETTER RASHARADA LETTER L" + + "ASHARADA LETTER LLASHARADA LETTER VASHARADA LETTER SHASHARADA LETTER SSA" + + "SHARADA LETTER SASHARADA LETTER HASHARADA VOWEL SIGN AASHARADA VOWEL SIG" + + "N ISHARADA VOWEL SIGN IISHARADA VOWEL SIGN USHARADA VOWEL SIGN UUSHARADA" + + " VOWEL SIGN VOCALIC RSHARADA VOWEL SIGN VOCALIC RRSHARADA VOWEL SIGN VOC" + + "ALIC LSHARADA VOWEL SIGN VOCALIC LLSHARADA VOWEL SIGN ESHARADA VOWEL SIG" + + "N AISHARADA VOWEL SIGN OSHARADA VOWEL SIGN AUSHARADA SIGN VIRAMASHARADA " + + "SIGN AVAGRAHASHARADA SIGN JIHVAMULIYASHARADA SIGN UPADHMANIYASHARADA OMS" + + "HARADA DANDASHARADA DOUBLE DANDASHARADA ABBREVIATION SIGNSHARADA SEPARAT") + ("" + + "ORSHARADA SANDHI MARKSHARADA SIGN NUKTASHARADA VOWEL MODIFIER MARKSHARAD" + + "A EXTRA SHORT VOWEL MARKSHARADA SUTRA MARKSHARADA DIGIT ZEROSHARADA DIGI" + + "T ONESHARADA DIGIT TWOSHARADA DIGIT THREESHARADA DIGIT FOURSHARADA DIGIT" + + " FIVESHARADA DIGIT SIXSHARADA DIGIT SEVENSHARADA DIGIT EIGHTSHARADA DIGI" + + "T NINESHARADA EKAMSHARADA SIGN SIDDHAMSHARADA HEADSTROKESHARADA CONTINUA" + + "TION SIGNSHARADA SECTION MARK-1SHARADA SECTION MARK-2SINHALA ARCHAIC DIG" + + "IT ONESINHALA ARCHAIC DIGIT TWOSINHALA ARCHAIC DIGIT THREESINHALA ARCHAI" + + "C DIGIT FOURSINHALA ARCHAIC DIGIT FIVESINHALA ARCHAIC DIGIT SIXSINHALA A" + + "RCHAIC DIGIT SEVENSINHALA ARCHAIC DIGIT EIGHTSINHALA ARCHAIC DIGIT NINES" + + "INHALA ARCHAIC NUMBER TENSINHALA ARCHAIC NUMBER TWENTYSINHALA ARCHAIC NU" + + "MBER THIRTYSINHALA ARCHAIC NUMBER FORTYSINHALA ARCHAIC NUMBER FIFTYSINHA" + + "LA ARCHAIC NUMBER SIXTYSINHALA ARCHAIC NUMBER SEVENTYSINHALA ARCHAIC NUM" + + "BER EIGHTYSINHALA ARCHAIC NUMBER NINETYSINHALA ARCHAIC NUMBER ONE HUNDRE" + + "DSINHALA ARCHAIC NUMBER ONE THOUSANDKHOJKI LETTER AKHOJKI LETTER AAKHOJK" + + "I LETTER IKHOJKI LETTER UKHOJKI LETTER EKHOJKI LETTER AIKHOJKI LETTER OK" + + "HOJKI LETTER AUKHOJKI LETTER KAKHOJKI LETTER KHAKHOJKI LETTER GAKHOJKI L" + + "ETTER GGAKHOJKI LETTER GHAKHOJKI LETTER NGAKHOJKI LETTER CAKHOJKI LETTER" + + " CHAKHOJKI LETTER JAKHOJKI LETTER JJAKHOJKI LETTER NYAKHOJKI LETTER TTAK" + + "HOJKI LETTER TTHAKHOJKI LETTER DDAKHOJKI LETTER DDHAKHOJKI LETTER NNAKHO" + + "JKI LETTER TAKHOJKI LETTER THAKHOJKI LETTER DAKHOJKI LETTER DDDAKHOJKI L" + + "ETTER DHAKHOJKI LETTER NAKHOJKI LETTER PAKHOJKI LETTER PHAKHOJKI LETTER " + + "BAKHOJKI LETTER BBAKHOJKI LETTER BHAKHOJKI LETTER MAKHOJKI LETTER YAKHOJ" + + "KI LETTER RAKHOJKI LETTER LAKHOJKI LETTER VAKHOJKI LETTER SAKHOJKI LETTE" + + "R HAKHOJKI LETTER LLAKHOJKI VOWEL SIGN AAKHOJKI VOWEL SIGN IKHOJKI VOWEL" + + " SIGN IIKHOJKI VOWEL SIGN UKHOJKI VOWEL SIGN EKHOJKI VOWEL SIGN AIKHOJKI" + + " VOWEL SIGN OKHOJKI VOWEL SIGN AUKHOJKI SIGN ANUSVARAKHOJKI SIGN VIRAMAK" + + "HOJKI SIGN NUKTAKHOJKI SIGN SHADDAKHOJKI DANDAKHOJKI DOUBLE DANDAKHOJKI " + + "WORD SEPARATORKHOJKI SECTION MARKKHOJKI DOUBLE SECTION MARKKHOJKI ABBREV" + + "IATION SIGNKHOJKI SIGN SUKUNMULTANI LETTER AMULTANI LETTER IMULTANI LETT" + + "ER UMULTANI LETTER EMULTANI LETTER KAMULTANI LETTER KHAMULTANI LETTER GA" + + "MULTANI LETTER GHAMULTANI LETTER CAMULTANI LETTER CHAMULTANI LETTER JAMU" + + "LTANI LETTER JJAMULTANI LETTER NYAMULTANI LETTER TTAMULTANI LETTER TTHAM" + + "ULTANI LETTER DDAMULTANI LETTER DDDAMULTANI LETTER DDHAMULTANI LETTER NN" + + "AMULTANI LETTER TAMULTANI LETTER THAMULTANI LETTER DAMULTANI LETTER DHAM" + + "ULTANI LETTER NAMULTANI LETTER PAMULTANI LETTER PHAMULTANI LETTER BAMULT" + + "ANI LETTER BHAMULTANI LETTER MAMULTANI LETTER YAMULTANI LETTER RAMULTANI" + + " LETTER LAMULTANI LETTER VAMULTANI LETTER SAMULTANI LETTER HAMULTANI LET" + + "TER RRAMULTANI LETTER RHAMULTANI SECTION MARKKHUDAWADI LETTER AKHUDAWADI" + + " LETTER AAKHUDAWADI LETTER IKHUDAWADI LETTER IIKHUDAWADI LETTER UKHUDAWA" + + "DI LETTER UUKHUDAWADI LETTER EKHUDAWADI LETTER AIKHUDAWADI LETTER OKHUDA" + + "WADI LETTER AUKHUDAWADI LETTER KAKHUDAWADI LETTER KHAKHUDAWADI LETTER GA" + + "KHUDAWADI LETTER GGAKHUDAWADI LETTER GHAKHUDAWADI LETTER NGAKHUDAWADI LE" + + "TTER CAKHUDAWADI LETTER CHAKHUDAWADI LETTER JAKHUDAWADI LETTER JJAKHUDAW" + + "ADI LETTER JHAKHUDAWADI LETTER NYAKHUDAWADI LETTER TTAKHUDAWADI LETTER T" + + "THAKHUDAWADI LETTER DDAKHUDAWADI LETTER DDDAKHUDAWADI LETTER RRAKHUDAWAD" + + "I LETTER DDHAKHUDAWADI LETTER NNAKHUDAWADI LETTER TAKHUDAWADI LETTER THA" + + "KHUDAWADI LETTER DAKHUDAWADI LETTER DHAKHUDAWADI LETTER NAKHUDAWADI LETT" + + "ER PAKHUDAWADI LETTER PHAKHUDAWADI LETTER BAKHUDAWADI LETTER BBAKHUDAWAD" + + "I LETTER BHAKHUDAWADI LETTER MAKHUDAWADI LETTER YAKHUDAWADI LETTER RAKHU" + + "DAWADI LETTER LAKHUDAWADI LETTER VAKHUDAWADI LETTER SHAKHUDAWADI LETTER " + + "SAKHUDAWADI LETTER HAKHUDAWADI SIGN ANUSVARAKHUDAWADI VOWEL SIGN AAKHUDA" + + "WADI VOWEL SIGN IKHUDAWADI VOWEL SIGN IIKHUDAWADI VOWEL SIGN UKHUDAWADI " + + "VOWEL SIGN UUKHUDAWADI VOWEL SIGN EKHUDAWADI VOWEL SIGN AIKHUDAWADI VOWE" + + "L SIGN OKHUDAWADI VOWEL SIGN AUKHUDAWADI SIGN NUKTAKHUDAWADI SIGN VIRAMA" + + "KHUDAWADI DIGIT ZEROKHUDAWADI DIGIT ONEKHUDAWADI DIGIT TWOKHUDAWADI DIGI" + + "T THREEKHUDAWADI DIGIT FOURKHUDAWADI DIGIT FIVEKHUDAWADI DIGIT SIXKHUDAW" + + "ADI DIGIT SEVENKHUDAWADI DIGIT EIGHTKHUDAWADI DIGIT NINEGRANTHA SIGN COM" + + "BINING ANUSVARA ABOVEGRANTHA SIGN CANDRABINDUGRANTHA SIGN ANUSVARAGRANTH" + + "A SIGN VISARGAGRANTHA LETTER AGRANTHA LETTER AAGRANTHA LETTER IGRANTHA L" + + "ETTER IIGRANTHA LETTER UGRANTHA LETTER UUGRANTHA LETTER VOCALIC RGRANTHA" + + " LETTER VOCALIC LGRANTHA LETTER EEGRANTHA LETTER AIGRANTHA LETTER OOGRAN" + + "THA LETTER AUGRANTHA LETTER KAGRANTHA LETTER KHAGRANTHA LETTER GAGRANTHA" + + " LETTER GHAGRANTHA LETTER NGAGRANTHA LETTER CAGRANTHA LETTER CHAGRANTHA " + + "LETTER JAGRANTHA LETTER JHAGRANTHA LETTER NYAGRANTHA LETTER TTAGRANTHA L") + ("" + + "ETTER TTHAGRANTHA LETTER DDAGRANTHA LETTER DDHAGRANTHA LETTER NNAGRANTHA" + + " LETTER TAGRANTHA LETTER THAGRANTHA LETTER DAGRANTHA LETTER DHAGRANTHA L" + + "ETTER NAGRANTHA LETTER PAGRANTHA LETTER PHAGRANTHA LETTER BAGRANTHA LETT" + + "ER BHAGRANTHA LETTER MAGRANTHA LETTER YAGRANTHA LETTER RAGRANTHA LETTER " + + "LAGRANTHA LETTER LLAGRANTHA LETTER VAGRANTHA LETTER SHAGRANTHA LETTER SS" + + "AGRANTHA LETTER SAGRANTHA LETTER HAGRANTHA SIGN NUKTAGRANTHA SIGN AVAGRA" + + "HAGRANTHA VOWEL SIGN AAGRANTHA VOWEL SIGN IGRANTHA VOWEL SIGN IIGRANTHA " + + "VOWEL SIGN UGRANTHA VOWEL SIGN UUGRANTHA VOWEL SIGN VOCALIC RGRANTHA VOW" + + "EL SIGN VOCALIC RRGRANTHA VOWEL SIGN EEGRANTHA VOWEL SIGN AIGRANTHA VOWE" + + "L SIGN OOGRANTHA VOWEL SIGN AUGRANTHA SIGN VIRAMAGRANTHA OMGRANTHA AU LE" + + "NGTH MARKGRANTHA SIGN PLUTAGRANTHA LETTER VEDIC ANUSVARAGRANTHA LETTER V" + + "EDIC DOUBLE ANUSVARAGRANTHA LETTER VOCALIC RRGRANTHA LETTER VOCALIC LLGR" + + "ANTHA VOWEL SIGN VOCALIC LGRANTHA VOWEL SIGN VOCALIC LLCOMBINING GRANTHA" + + " DIGIT ZEROCOMBINING GRANTHA DIGIT ONECOMBINING GRANTHA DIGIT TWOCOMBINI" + + "NG GRANTHA DIGIT THREECOMBINING GRANTHA DIGIT FOURCOMBINING GRANTHA DIGI" + + "T FIVECOMBINING GRANTHA DIGIT SIXCOMBINING GRANTHA LETTER ACOMBINING GRA" + + "NTHA LETTER KACOMBINING GRANTHA LETTER NACOMBINING GRANTHA LETTER VICOMB" + + "INING GRANTHA LETTER PANEWA LETTER ANEWA LETTER AANEWA LETTER INEWA LETT" + + "ER IINEWA LETTER UNEWA LETTER UUNEWA LETTER VOCALIC RNEWA LETTER VOCALIC" + + " RRNEWA LETTER VOCALIC LNEWA LETTER VOCALIC LLNEWA LETTER ENEWA LETTER A" + + "INEWA LETTER ONEWA LETTER AUNEWA LETTER KANEWA LETTER KHANEWA LETTER GAN" + + "EWA LETTER GHANEWA LETTER NGANEWA LETTER NGHANEWA LETTER CANEWA LETTER C" + + "HANEWA LETTER JANEWA LETTER JHANEWA LETTER NYANEWA LETTER NYHANEWA LETTE" + + "R TTANEWA LETTER TTHANEWA LETTER DDANEWA LETTER DDHANEWA LETTER NNANEWA " + + "LETTER TANEWA LETTER THANEWA LETTER DANEWA LETTER DHANEWA LETTER NANEWA " + + "LETTER NHANEWA LETTER PANEWA LETTER PHANEWA LETTER BANEWA LETTER BHANEWA" + + " LETTER MANEWA LETTER MHANEWA LETTER YANEWA LETTER RANEWA LETTER RHANEWA" + + " LETTER LANEWA LETTER LHANEWA LETTER WANEWA LETTER SHANEWA LETTER SSANEW" + + "A LETTER SANEWA LETTER HANEWA VOWEL SIGN AANEWA VOWEL SIGN INEWA VOWEL S" + + "IGN IINEWA VOWEL SIGN UNEWA VOWEL SIGN UUNEWA VOWEL SIGN VOCALIC RNEWA V" + + "OWEL SIGN VOCALIC RRNEWA VOWEL SIGN VOCALIC LNEWA VOWEL SIGN VOCALIC LLN" + + "EWA VOWEL SIGN ENEWA VOWEL SIGN AINEWA VOWEL SIGN ONEWA VOWEL SIGN AUNEW" + + "A SIGN VIRAMANEWA SIGN CANDRABINDUNEWA SIGN ANUSVARANEWA SIGN VISARGANEW" + + "A SIGN NUKTANEWA SIGN AVAGRAHANEWA SIGN FINAL ANUSVARANEWA OMNEWA SIDDHI" + + "NEWA DANDANEWA DOUBLE DANDANEWA COMMANEWA GAP FILLERNEWA ABBREVIATION SI" + + "GNNEWA DIGIT ZERONEWA DIGIT ONENEWA DIGIT TWONEWA DIGIT THREENEWA DIGIT " + + "FOURNEWA DIGIT FIVENEWA DIGIT SIXNEWA DIGIT SEVENNEWA DIGIT EIGHTNEWA DI" + + "GIT NINENEWA PLACEHOLDER MARKNEWA INSERTION SIGNTIRHUTA ANJITIRHUTA LETT" + + "ER ATIRHUTA LETTER AATIRHUTA LETTER ITIRHUTA LETTER IITIRHUTA LETTER UTI" + + "RHUTA LETTER UUTIRHUTA LETTER VOCALIC RTIRHUTA LETTER VOCALIC RRTIRHUTA " + + "LETTER VOCALIC LTIRHUTA LETTER VOCALIC LLTIRHUTA LETTER ETIRHUTA LETTER " + + "AITIRHUTA LETTER OTIRHUTA LETTER AUTIRHUTA LETTER KATIRHUTA LETTER KHATI" + + "RHUTA LETTER GATIRHUTA LETTER GHATIRHUTA LETTER NGATIRHUTA LETTER CATIRH" + + "UTA LETTER CHATIRHUTA LETTER JATIRHUTA LETTER JHATIRHUTA LETTER NYATIRHU" + + "TA LETTER TTATIRHUTA LETTER TTHATIRHUTA LETTER DDATIRHUTA LETTER DDHATIR" + + "HUTA LETTER NNATIRHUTA LETTER TATIRHUTA LETTER THATIRHUTA LETTER DATIRHU" + + "TA LETTER DHATIRHUTA LETTER NATIRHUTA LETTER PATIRHUTA LETTER PHATIRHUTA" + + " LETTER BATIRHUTA LETTER BHATIRHUTA LETTER MATIRHUTA LETTER YATIRHUTA LE" + + "TTER RATIRHUTA LETTER LATIRHUTA LETTER VATIRHUTA LETTER SHATIRHUTA LETTE" + + "R SSATIRHUTA LETTER SATIRHUTA LETTER HATIRHUTA VOWEL SIGN AATIRHUTA VOWE" + + "L SIGN ITIRHUTA VOWEL SIGN IITIRHUTA VOWEL SIGN UTIRHUTA VOWEL SIGN UUTI" + + "RHUTA VOWEL SIGN VOCALIC RTIRHUTA VOWEL SIGN VOCALIC RRTIRHUTA VOWEL SIG" + + "N VOCALIC LTIRHUTA VOWEL SIGN VOCALIC LLTIRHUTA VOWEL SIGN ETIRHUTA VOWE" + + "L SIGN SHORT ETIRHUTA VOWEL SIGN AITIRHUTA VOWEL SIGN OTIRHUTA VOWEL SIG" + + "N SHORT OTIRHUTA VOWEL SIGN AUTIRHUTA SIGN CANDRABINDUTIRHUTA SIGN ANUSV" + + "ARATIRHUTA SIGN VISARGATIRHUTA SIGN VIRAMATIRHUTA SIGN NUKTATIRHUTA SIGN" + + " AVAGRAHATIRHUTA GVANGTIRHUTA ABBREVIATION SIGNTIRHUTA OMTIRHUTA DIGIT Z" + + "EROTIRHUTA DIGIT ONETIRHUTA DIGIT TWOTIRHUTA DIGIT THREETIRHUTA DIGIT FO" + + "URTIRHUTA DIGIT FIVETIRHUTA DIGIT SIXTIRHUTA DIGIT SEVENTIRHUTA DIGIT EI" + + "GHTTIRHUTA DIGIT NINESIDDHAM LETTER ASIDDHAM LETTER AASIDDHAM LETTER ISI" + + "DDHAM LETTER IISIDDHAM LETTER USIDDHAM LETTER UUSIDDHAM LETTER VOCALIC R" + + "SIDDHAM LETTER VOCALIC RRSIDDHAM LETTER VOCALIC LSIDDHAM LETTER VOCALIC " + + "LLSIDDHAM LETTER ESIDDHAM LETTER AISIDDHAM LETTER OSIDDHAM LETTER AUSIDD" + + "HAM LETTER KASIDDHAM LETTER KHASIDDHAM LETTER GASIDDHAM LETTER GHASIDDHA") + ("" + + "M LETTER NGASIDDHAM LETTER CASIDDHAM LETTER CHASIDDHAM LETTER JASIDDHAM " + + "LETTER JHASIDDHAM LETTER NYASIDDHAM LETTER TTASIDDHAM LETTER TTHASIDDHAM" + + " LETTER DDASIDDHAM LETTER DDHASIDDHAM LETTER NNASIDDHAM LETTER TASIDDHAM" + + " LETTER THASIDDHAM LETTER DASIDDHAM LETTER DHASIDDHAM LETTER NASIDDHAM L" + + "ETTER PASIDDHAM LETTER PHASIDDHAM LETTER BASIDDHAM LETTER BHASIDDHAM LET" + + "TER MASIDDHAM LETTER YASIDDHAM LETTER RASIDDHAM LETTER LASIDDHAM LETTER " + + "VASIDDHAM LETTER SHASIDDHAM LETTER SSASIDDHAM LETTER SASIDDHAM LETTER HA" + + "SIDDHAM VOWEL SIGN AASIDDHAM VOWEL SIGN ISIDDHAM VOWEL SIGN IISIDDHAM VO" + + "WEL SIGN USIDDHAM VOWEL SIGN UUSIDDHAM VOWEL SIGN VOCALIC RSIDDHAM VOWEL" + + " SIGN VOCALIC RRSIDDHAM VOWEL SIGN ESIDDHAM VOWEL SIGN AISIDDHAM VOWEL S" + + "IGN OSIDDHAM VOWEL SIGN AUSIDDHAM SIGN CANDRABINDUSIDDHAM SIGN ANUSVARAS" + + "IDDHAM SIGN VISARGASIDDHAM SIGN VIRAMASIDDHAM SIGN NUKTASIDDHAM SIGN SID" + + "DHAMSIDDHAM DANDASIDDHAM DOUBLE DANDASIDDHAM SEPARATOR DOTSIDDHAM SEPARA" + + "TOR BARSIDDHAM REPETITION MARK-1SIDDHAM REPETITION MARK-2SIDDHAM REPETIT" + + "ION MARK-3SIDDHAM END OF TEXT MARKSIDDHAM SECTION MARK WITH TRIDENT AND " + + "U-SHAPED ORNAMENTSSIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS" + + "SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTSSIDDHAM SECTION MARK " + + "WITH RAYS AND DOTTED DOUBLE CRESCENTSSIDDHAM SECTION MARK WITH RAYS AND " + + "DOTTED TRIPLE CRESCENTSSIDDHAM SECTION MARK DOUBLE RINGSIDDHAM SECTION M" + + "ARK DOUBLE RING WITH RAYSSIDDHAM SECTION MARK WITH DOUBLE CRESCENTSSIDDH" + + "AM SECTION MARK WITH TRIPLE CRESCENTSSIDDHAM SECTION MARK WITH QUADRUPLE" + + " CRESCENTSSIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTSSIDDHAM SECTION MA" + + "RK WITH CIRCLES AND RAYSSIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOS" + + "URESSIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURESSIDDHAM LETTER " + + "THREE-CIRCLE ALTERNATE ISIDDHAM LETTER TWO-CIRCLE ALTERNATE ISIDDHAM LET" + + "TER TWO-CIRCLE ALTERNATE IISIDDHAM LETTER ALTERNATE USIDDHAM VOWEL SIGN " + + "ALTERNATE USIDDHAM VOWEL SIGN ALTERNATE UUMODI LETTER AMODI LETTER AAMOD" + + "I LETTER IMODI LETTER IIMODI LETTER UMODI LETTER UUMODI LETTER VOCALIC R" + + "MODI LETTER VOCALIC RRMODI LETTER VOCALIC LMODI LETTER VOCALIC LLMODI LE" + + "TTER EMODI LETTER AIMODI LETTER OMODI LETTER AUMODI LETTER KAMODI LETTER" + + " KHAMODI LETTER GAMODI LETTER GHAMODI LETTER NGAMODI LETTER CAMODI LETTE" + + "R CHAMODI LETTER JAMODI LETTER JHAMODI LETTER NYAMODI LETTER TTAMODI LET" + + "TER TTHAMODI LETTER DDAMODI LETTER DDHAMODI LETTER NNAMODI LETTER TAMODI" + + " LETTER THAMODI LETTER DAMODI LETTER DHAMODI LETTER NAMODI LETTER PAMODI" + + " LETTER PHAMODI LETTER BAMODI LETTER BHAMODI LETTER MAMODI LETTER YAMODI" + + " LETTER RAMODI LETTER LAMODI LETTER VAMODI LETTER SHAMODI LETTER SSAMODI" + + " LETTER SAMODI LETTER HAMODI LETTER LLAMODI VOWEL SIGN AAMODI VOWEL SIGN" + + " IMODI VOWEL SIGN IIMODI VOWEL SIGN UMODI VOWEL SIGN UUMODI VOWEL SIGN V" + + "OCALIC RMODI VOWEL SIGN VOCALIC RRMODI VOWEL SIGN VOCALIC LMODI VOWEL SI" + + "GN VOCALIC LLMODI VOWEL SIGN EMODI VOWEL SIGN AIMODI VOWEL SIGN OMODI VO" + + "WEL SIGN AUMODI SIGN ANUSVARAMODI SIGN VISARGAMODI SIGN VIRAMAMODI SIGN " + + "ARDHACANDRAMODI DANDAMODI DOUBLE DANDAMODI ABBREVIATION SIGNMODI SIGN HU" + + "VAMODI DIGIT ZEROMODI DIGIT ONEMODI DIGIT TWOMODI DIGIT THREEMODI DIGIT " + + "FOURMODI DIGIT FIVEMODI DIGIT SIXMODI DIGIT SEVENMODI DIGIT EIGHTMODI DI" + + "GIT NINEMONGOLIAN BIRGA WITH ORNAMENTMONGOLIAN ROTATED BIRGAMONGOLIAN DO" + + "UBLE BIRGA WITH ORNAMENTMONGOLIAN TRIPLE BIRGA WITH ORNAMENTMONGOLIAN BI" + + "RGA WITH DOUBLE ORNAMENTMONGOLIAN ROTATED BIRGA WITH ORNAMENTMONGOLIAN R" + + "OTATED BIRGA WITH DOUBLE ORNAMENTMONGOLIAN INVERTED BIRGAMONGOLIAN INVER" + + "TED BIRGA WITH DOUBLE ORNAMENTMONGOLIAN SWIRL BIRGAMONGOLIAN SWIRL BIRGA" + + " WITH ORNAMENTMONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENTMONGOLIAN TURNED" + + " SWIRL BIRGA WITH DOUBLE ORNAMENTTAKRI LETTER ATAKRI LETTER AATAKRI LETT" + + "ER ITAKRI LETTER IITAKRI LETTER UTAKRI LETTER UUTAKRI LETTER ETAKRI LETT" + + "ER AITAKRI LETTER OTAKRI LETTER AUTAKRI LETTER KATAKRI LETTER KHATAKRI L" + + "ETTER GATAKRI LETTER GHATAKRI LETTER NGATAKRI LETTER CATAKRI LETTER CHAT" + + "AKRI LETTER JATAKRI LETTER JHATAKRI LETTER NYATAKRI LETTER TTATAKRI LETT" + + "ER TTHATAKRI LETTER DDATAKRI LETTER DDHATAKRI LETTER NNATAKRI LETTER TAT" + + "AKRI LETTER THATAKRI LETTER DATAKRI LETTER DHATAKRI LETTER NATAKRI LETTE" + + "R PATAKRI LETTER PHATAKRI LETTER BATAKRI LETTER BHATAKRI LETTER MATAKRI " + + "LETTER YATAKRI LETTER RATAKRI LETTER LATAKRI LETTER VATAKRI LETTER SHATA" + + "KRI LETTER SATAKRI LETTER HATAKRI LETTER RRATAKRI SIGN ANUSVARATAKRI SIG" + + "N VISARGATAKRI VOWEL SIGN AATAKRI VOWEL SIGN ITAKRI VOWEL SIGN IITAKRI V" + + "OWEL SIGN UTAKRI VOWEL SIGN UUTAKRI VOWEL SIGN ETAKRI VOWEL SIGN AITAKRI" + + " VOWEL SIGN OTAKRI VOWEL SIGN AUTAKRI SIGN VIRAMATAKRI SIGN NUKTATAKRI D" + + "IGIT ZEROTAKRI DIGIT ONETAKRI DIGIT TWOTAKRI DIGIT THREETAKRI DIGIT FOUR") + ("" + + "TAKRI DIGIT FIVETAKRI DIGIT SIXTAKRI DIGIT SEVENTAKRI DIGIT EIGHTTAKRI D" + + "IGIT NINEAHOM LETTER KAAHOM LETTER KHAAHOM LETTER NGAAHOM LETTER NAAHOM " + + "LETTER TAAHOM LETTER ALTERNATE TAAHOM LETTER PAAHOM LETTER PHAAHOM LETTE" + + "R BAAHOM LETTER MAAHOM LETTER JAAHOM LETTER CHAAHOM LETTER THAAHOM LETTE" + + "R RAAHOM LETTER LAAHOM LETTER SAAHOM LETTER NYAAHOM LETTER HAAHOM LETTER" + + " AAHOM LETTER DAAHOM LETTER DHAAHOM LETTER GAAHOM LETTER ALTERNATE GAAHO" + + "M LETTER GHAAHOM LETTER BHAAHOM LETTER JHAAHOM CONSONANT SIGN MEDIAL LAA" + + "HOM CONSONANT SIGN MEDIAL RAAHOM CONSONANT SIGN MEDIAL LIGATING RAAHOM V" + + "OWEL SIGN AAHOM VOWEL SIGN AAAHOM VOWEL SIGN IAHOM VOWEL SIGN IIAHOM VOW" + + "EL SIGN UAHOM VOWEL SIGN UUAHOM VOWEL SIGN EAHOM VOWEL SIGN AWAHOM VOWEL" + + " SIGN OAHOM VOWEL SIGN AIAHOM VOWEL SIGN AMAHOM SIGN KILLERAHOM DIGIT ZE" + + "ROAHOM DIGIT ONEAHOM DIGIT TWOAHOM DIGIT THREEAHOM DIGIT FOURAHOM DIGIT " + + "FIVEAHOM DIGIT SIXAHOM DIGIT SEVENAHOM DIGIT EIGHTAHOM DIGIT NINEAHOM NU" + + "MBER TENAHOM NUMBER TWENTYAHOM SIGN SMALL SECTIONAHOM SIGN SECTIONAHOM S" + + "IGN RULAIAHOM SYMBOL VIWARANG CITI CAPITAL LETTER NGAAWARANG CITI CAPITA" + + "L LETTER AWARANG CITI CAPITAL LETTER WIWARANG CITI CAPITAL LETTER YUWARA" + + "NG CITI CAPITAL LETTER YAWARANG CITI CAPITAL LETTER YOWARANG CITI CAPITA" + + "L LETTER IIWARANG CITI CAPITAL LETTER UUWARANG CITI CAPITAL LETTER EWARA" + + "NG CITI CAPITAL LETTER OWARANG CITI CAPITAL LETTER ANGWARANG CITI CAPITA" + + "L LETTER GAWARANG CITI CAPITAL LETTER KOWARANG CITI CAPITAL LETTER ENYWA" + + "RANG CITI CAPITAL LETTER YUJWARANG CITI CAPITAL LETTER UCWARANG CITI CAP" + + "ITAL LETTER ENNWARANG CITI CAPITAL LETTER ODDWARANG CITI CAPITAL LETTER " + + "TTEWARANG CITI CAPITAL LETTER NUNGWARANG CITI CAPITAL LETTER DAWARANG CI" + + "TI CAPITAL LETTER ATWARANG CITI CAPITAL LETTER AMWARANG CITI CAPITAL LET" + + "TER BUWARANG CITI CAPITAL LETTER PUWARANG CITI CAPITAL LETTER HIYOWARANG" + + " CITI CAPITAL LETTER HOLOWARANG CITI CAPITAL LETTER HORRWARANG CITI CAPI" + + "TAL LETTER HARWARANG CITI CAPITAL LETTER SSUUWARANG CITI CAPITAL LETTER " + + "SIIWARANG CITI CAPITAL LETTER VIYOWARANG CITI SMALL LETTER NGAAWARANG CI" + + "TI SMALL LETTER AWARANG CITI SMALL LETTER WIWARANG CITI SMALL LETTER YUW" + + "ARANG CITI SMALL LETTER YAWARANG CITI SMALL LETTER YOWARANG CITI SMALL L" + + "ETTER IIWARANG CITI SMALL LETTER UUWARANG CITI SMALL LETTER EWARANG CITI" + + " SMALL LETTER OWARANG CITI SMALL LETTER ANGWARANG CITI SMALL LETTER GAWA" + + "RANG CITI SMALL LETTER KOWARANG CITI SMALL LETTER ENYWARANG CITI SMALL L" + + "ETTER YUJWARANG CITI SMALL LETTER UCWARANG CITI SMALL LETTER ENNWARANG C" + + "ITI SMALL LETTER ODDWARANG CITI SMALL LETTER TTEWARANG CITI SMALL LETTER" + + " NUNGWARANG CITI SMALL LETTER DAWARANG CITI SMALL LETTER ATWARANG CITI S" + + "MALL LETTER AMWARANG CITI SMALL LETTER BUWARANG CITI SMALL LETTER PUWARA" + + "NG CITI SMALL LETTER HIYOWARANG CITI SMALL LETTER HOLOWARANG CITI SMALL " + + "LETTER HORRWARANG CITI SMALL LETTER HARWARANG CITI SMALL LETTER SSUUWARA" + + "NG CITI SMALL LETTER SIIWARANG CITI SMALL LETTER VIYOWARANG CITI DIGIT Z" + + "EROWARANG CITI DIGIT ONEWARANG CITI DIGIT TWOWARANG CITI DIGIT THREEWARA" + + "NG CITI DIGIT FOURWARANG CITI DIGIT FIVEWARANG CITI DIGIT SIXWARANG CITI" + + " DIGIT SEVENWARANG CITI DIGIT EIGHTWARANG CITI DIGIT NINEWARANG CITI NUM" + + "BER TENWARANG CITI NUMBER TWENTYWARANG CITI NUMBER THIRTYWARANG CITI NUM" + + "BER FORTYWARANG CITI NUMBER FIFTYWARANG CITI NUMBER SIXTYWARANG CITI NUM" + + "BER SEVENTYWARANG CITI NUMBER EIGHTYWARANG CITI NUMBER NINETYWARANG CITI" + + " OMPAU CIN HAU LETTER PAPAU CIN HAU LETTER KAPAU CIN HAU LETTER LAPAU CI" + + "N HAU LETTER MAPAU CIN HAU LETTER DAPAU CIN HAU LETTER ZAPAU CIN HAU LET" + + "TER VAPAU CIN HAU LETTER NGAPAU CIN HAU LETTER HAPAU CIN HAU LETTER GAPA" + + "U CIN HAU LETTER KHAPAU CIN HAU LETTER SAPAU CIN HAU LETTER BAPAU CIN HA" + + "U LETTER CAPAU CIN HAU LETTER TAPAU CIN HAU LETTER THAPAU CIN HAU LETTER" + + " NAPAU CIN HAU LETTER PHAPAU CIN HAU LETTER RAPAU CIN HAU LETTER FAPAU C" + + "IN HAU LETTER CHAPAU CIN HAU LETTER APAU CIN HAU LETTER EPAU CIN HAU LET" + + "TER IPAU CIN HAU LETTER OPAU CIN HAU LETTER UPAU CIN HAU LETTER UAPAU CI" + + "N HAU LETTER IAPAU CIN HAU LETTER FINAL PPAU CIN HAU LETTER FINAL KPAU C" + + "IN HAU LETTER FINAL TPAU CIN HAU LETTER FINAL MPAU CIN HAU LETTER FINAL " + + "NPAU CIN HAU LETTER FINAL LPAU CIN HAU LETTER FINAL WPAU CIN HAU LETTER " + + "FINAL NGPAU CIN HAU LETTER FINAL YPAU CIN HAU RISING TONE LONGPAU CIN HA" + + "U RISING TONEPAU CIN HAU SANDHI GLOTTAL STOPPAU CIN HAU RISING TONE LONG" + + " FINALPAU CIN HAU RISING TONE FINALPAU CIN HAU SANDHI GLOTTAL STOP FINAL" + + "PAU CIN HAU SANDHI TONE LONGPAU CIN HAU SANDHI TONEPAU CIN HAU SANDHI TO" + + "NE LONG FINALPAU CIN HAU SANDHI TONE FINALPAU CIN HAU MID-LEVEL TONEPAU " + + "CIN HAU GLOTTAL STOP VARIANTPAU CIN HAU MID-LEVEL TONE LONG FINALPAU CIN" + + " HAU MID-LEVEL TONE FINALPAU CIN HAU LOW-FALLING TONE LONGPAU CIN HAU LO") + ("" + + "W-FALLING TONEPAU CIN HAU GLOTTAL STOPPAU CIN HAU LOW-FALLING TONE LONG " + + "FINALPAU CIN HAU LOW-FALLING TONE FINALPAU CIN HAU GLOTTAL STOP FINALBHA" + + "IKSUKI LETTER ABHAIKSUKI LETTER AABHAIKSUKI LETTER IBHAIKSUKI LETTER IIB" + + "HAIKSUKI LETTER UBHAIKSUKI LETTER UUBHAIKSUKI LETTER VOCALIC RBHAIKSUKI " + + "LETTER VOCALIC RRBHAIKSUKI LETTER VOCALIC LBHAIKSUKI LETTER EBHAIKSUKI L" + + "ETTER AIBHAIKSUKI LETTER OBHAIKSUKI LETTER AUBHAIKSUKI LETTER KABHAIKSUK" + + "I LETTER KHABHAIKSUKI LETTER GABHAIKSUKI LETTER GHABHAIKSUKI LETTER NGAB" + + "HAIKSUKI LETTER CABHAIKSUKI LETTER CHABHAIKSUKI LETTER JABHAIKSUKI LETTE" + + "R JHABHAIKSUKI LETTER NYABHAIKSUKI LETTER TTABHAIKSUKI LETTER TTHABHAIKS" + + "UKI LETTER DDABHAIKSUKI LETTER DDHABHAIKSUKI LETTER NNABHAIKSUKI LETTER " + + "TABHAIKSUKI LETTER THABHAIKSUKI LETTER DABHAIKSUKI LETTER DHABHAIKSUKI L" + + "ETTER NABHAIKSUKI LETTER PABHAIKSUKI LETTER PHABHAIKSUKI LETTER BABHAIKS" + + "UKI LETTER BHABHAIKSUKI LETTER MABHAIKSUKI LETTER YABHAIKSUKI LETTER RAB" + + "HAIKSUKI LETTER LABHAIKSUKI LETTER VABHAIKSUKI LETTER SHABHAIKSUKI LETTE" + + "R SSABHAIKSUKI LETTER SABHAIKSUKI LETTER HABHAIKSUKI VOWEL SIGN AABHAIKS" + + "UKI VOWEL SIGN IBHAIKSUKI VOWEL SIGN IIBHAIKSUKI VOWEL SIGN UBHAIKSUKI V" + + "OWEL SIGN UUBHAIKSUKI VOWEL SIGN VOCALIC RBHAIKSUKI VOWEL SIGN VOCALIC R" + + "RBHAIKSUKI VOWEL SIGN VOCALIC LBHAIKSUKI VOWEL SIGN EBHAIKSUKI VOWEL SIG" + + "N AIBHAIKSUKI VOWEL SIGN OBHAIKSUKI VOWEL SIGN AUBHAIKSUKI SIGN CANDRABI" + + "NDUBHAIKSUKI SIGN ANUSVARABHAIKSUKI SIGN VISARGABHAIKSUKI SIGN VIRAMABHA" + + "IKSUKI SIGN AVAGRAHABHAIKSUKI DANDABHAIKSUKI DOUBLE DANDABHAIKSUKI WORD " + + "SEPARATORBHAIKSUKI GAP FILLER-1BHAIKSUKI GAP FILLER-2BHAIKSUKI DIGIT ZER" + + "OBHAIKSUKI DIGIT ONEBHAIKSUKI DIGIT TWOBHAIKSUKI DIGIT THREEBHAIKSUKI DI" + + "GIT FOURBHAIKSUKI DIGIT FIVEBHAIKSUKI DIGIT SIXBHAIKSUKI DIGIT SEVENBHAI" + + "KSUKI DIGIT EIGHTBHAIKSUKI DIGIT NINEBHAIKSUKI NUMBER ONEBHAIKSUKI NUMBE" + + "R TWOBHAIKSUKI NUMBER THREEBHAIKSUKI NUMBER FOURBHAIKSUKI NUMBER FIVEBHA" + + "IKSUKI NUMBER SIXBHAIKSUKI NUMBER SEVENBHAIKSUKI NUMBER EIGHTBHAIKSUKI N" + + "UMBER NINEBHAIKSUKI NUMBER TENBHAIKSUKI NUMBER TWENTYBHAIKSUKI NUMBER TH" + + "IRTYBHAIKSUKI NUMBER FORTYBHAIKSUKI NUMBER FIFTYBHAIKSUKI NUMBER SIXTYBH" + + "AIKSUKI NUMBER SEVENTYBHAIKSUKI NUMBER EIGHTYBHAIKSUKI NUMBER NINETYBHAI" + + "KSUKI HUNDREDS UNIT MARKMARCHEN HEAD MARKMARCHEN MARK SHADMARCHEN LETTER" + + " KAMARCHEN LETTER KHAMARCHEN LETTER GAMARCHEN LETTER NGAMARCHEN LETTER C" + + "AMARCHEN LETTER CHAMARCHEN LETTER JAMARCHEN LETTER NYAMARCHEN LETTER TAM" + + "ARCHEN LETTER THAMARCHEN LETTER DAMARCHEN LETTER NAMARCHEN LETTER PAMARC" + + "HEN LETTER PHAMARCHEN LETTER BAMARCHEN LETTER MAMARCHEN LETTER TSAMARCHE" + + "N LETTER TSHAMARCHEN LETTER DZAMARCHEN LETTER WAMARCHEN LETTER ZHAMARCHE" + + "N LETTER ZAMARCHEN LETTER -AMARCHEN LETTER YAMARCHEN LETTER RAMARCHEN LE" + + "TTER LAMARCHEN LETTER SHAMARCHEN LETTER SAMARCHEN LETTER HAMARCHEN LETTE" + + "R AMARCHEN SUBJOINED LETTER KAMARCHEN SUBJOINED LETTER KHAMARCHEN SUBJOI" + + "NED LETTER GAMARCHEN SUBJOINED LETTER NGAMARCHEN SUBJOINED LETTER CAMARC" + + "HEN SUBJOINED LETTER CHAMARCHEN SUBJOINED LETTER JAMARCHEN SUBJOINED LET" + + "TER NYAMARCHEN SUBJOINED LETTER TAMARCHEN SUBJOINED LETTER THAMARCHEN SU" + + "BJOINED LETTER DAMARCHEN SUBJOINED LETTER NAMARCHEN SUBJOINED LETTER PAM" + + "ARCHEN SUBJOINED LETTER PHAMARCHEN SUBJOINED LETTER BAMARCHEN SUBJOINED " + + "LETTER MAMARCHEN SUBJOINED LETTER TSAMARCHEN SUBJOINED LETTER TSHAMARCHE" + + "N SUBJOINED LETTER DZAMARCHEN SUBJOINED LETTER WAMARCHEN SUBJOINED LETTE" + + "R ZHAMARCHEN SUBJOINED LETTER ZAMARCHEN SUBJOINED LETTER YAMARCHEN SUBJO" + + "INED LETTER RAMARCHEN SUBJOINED LETTER LAMARCHEN SUBJOINED LETTER SHAMAR" + + "CHEN SUBJOINED LETTER SAMARCHEN SUBJOINED LETTER HAMARCHEN SUBJOINED LET" + + "TER AMARCHEN VOWEL SIGN AAMARCHEN VOWEL SIGN IMARCHEN VOWEL SIGN UMARCHE" + + "N VOWEL SIGN EMARCHEN VOWEL SIGN OMARCHEN SIGN ANUSVARAMARCHEN SIGN CAND" + + "RABINDUCUNEIFORM SIGN ACUNEIFORM SIGN A TIMES ACUNEIFORM SIGN A TIMES BA" + + "DCUNEIFORM SIGN A TIMES GAN2 TENUCUNEIFORM SIGN A TIMES HACUNEIFORM SIGN" + + " A TIMES IGICUNEIFORM SIGN A TIMES LAGAR GUNUCUNEIFORM SIGN A TIMES MUSH" + + "CUNEIFORM SIGN A TIMES SAGCUNEIFORM SIGN A2CUNEIFORM SIGN ABCUNEIFORM SI" + + "GN AB TIMES ASH2CUNEIFORM SIGN AB TIMES DUN3 GUNUCUNEIFORM SIGN AB TIMES" + + " GALCUNEIFORM SIGN AB TIMES GAN2 TENUCUNEIFORM SIGN AB TIMES HACUNEIFORM" + + " SIGN AB TIMES IGI GUNUCUNEIFORM SIGN AB TIMES IMINCUNEIFORM SIGN AB TIM" + + "ES LAGABCUNEIFORM SIGN AB TIMES SHESHCUNEIFORM SIGN AB TIMES U PLUS U PL" + + "US UCUNEIFORM SIGN AB GUNUCUNEIFORM SIGN AB2CUNEIFORM SIGN AB2 TIMES BAL" + + "AGCUNEIFORM SIGN AB2 TIMES GAN2 TENUCUNEIFORM SIGN AB2 TIMES ME PLUS ENC" + + "UNEIFORM SIGN AB2 TIMES SHA3CUNEIFORM SIGN AB2 TIMES TAK4CUNEIFORM SIGN " + + "ADCUNEIFORM SIGN AKCUNEIFORM SIGN AK TIMES ERIN2CUNEIFORM SIGN AK TIMES " + + "SHITA PLUS GISHCUNEIFORM SIGN ALCUNEIFORM SIGN AL TIMES ALCUNEIFORM SIGN") + ("" + + " AL TIMES DIM2CUNEIFORM SIGN AL TIMES GISHCUNEIFORM SIGN AL TIMES HACUNE" + + "IFORM SIGN AL TIMES KAD3CUNEIFORM SIGN AL TIMES KICUNEIFORM SIGN AL TIME" + + "S SHECUNEIFORM SIGN AL TIMES USHCUNEIFORM SIGN ALANCUNEIFORM SIGN ALEPHC" + + "UNEIFORM SIGN AMARCUNEIFORM SIGN AMAR TIMES SHECUNEIFORM SIGN ANCUNEIFOR" + + "M SIGN AN OVER ANCUNEIFORM SIGN AN THREE TIMESCUNEIFORM SIGN AN PLUS NAG" + + "A OPPOSING AN PLUS NAGACUNEIFORM SIGN AN PLUS NAGA SQUAREDCUNEIFORM SIGN" + + " ANSHECUNEIFORM SIGN APINCUNEIFORM SIGN ARADCUNEIFORM SIGN ARAD TIMES KU" + + "RCUNEIFORM SIGN ARKABCUNEIFORM SIGN ASAL2CUNEIFORM SIGN ASHCUNEIFORM SIG" + + "N ASH ZIDA TENUCUNEIFORM SIGN ASH KABA TENUCUNEIFORM SIGN ASH OVER ASH T" + + "UG2 OVER TUG2 TUG2 OVER TUG2 PAPCUNEIFORM SIGN ASH OVER ASH OVER ASHCUNE" + + "IFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASHCUNEIFORM" + + " SIGN ASH2CUNEIFORM SIGN ASHGABCUNEIFORM SIGN BACUNEIFORM SIGN BADCUNEIF" + + "ORM SIGN BAG3CUNEIFORM SIGN BAHAR2CUNEIFORM SIGN BALCUNEIFORM SIGN BAL O" + + "VER BALCUNEIFORM SIGN BALAGCUNEIFORM SIGN BARCUNEIFORM SIGN BARA2CUNEIFO" + + "RM SIGN BICUNEIFORM SIGN BI TIMES ACUNEIFORM SIGN BI TIMES GARCUNEIFORM " + + "SIGN BI TIMES IGI GUNUCUNEIFORM SIGN BUCUNEIFORM SIGN BU OVER BU ABCUNEI" + + "FORM SIGN BU OVER BU UNCUNEIFORM SIGN BU CROSSING BUCUNEIFORM SIGN BULUG" + + "CUNEIFORM SIGN BULUG OVER BULUGCUNEIFORM SIGN BURCUNEIFORM SIGN BUR2CUNE" + + "IFORM SIGN DACUNEIFORM SIGN DAGCUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MA" + + "SHCUNEIFORM SIGN DAG KISIM5 TIMES AMARCUNEIFORM SIGN DAG KISIM5 TIMES BA" + + "LAGCUNEIFORM SIGN DAG KISIM5 TIMES BICUNEIFORM SIGN DAG KISIM5 TIMES GAC" + + "UNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASHCUNEIFORM SIGN DAG KISIM5 TIM" + + "ES GICUNEIFORM SIGN DAG KISIM5 TIMES GIR2CUNEIFORM SIGN DAG KISIM5 TIMES" + + " GUDCUNEIFORM SIGN DAG KISIM5 TIMES HACUNEIFORM SIGN DAG KISIM5 TIMES IR" + + "CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LUCUNEIFORM SIGN DAG KISIM5 TIME" + + "S KAKCUNEIFORM SIGN DAG KISIM5 TIMES LACUNEIFORM SIGN DAG KISIM5 TIMES L" + + "UCUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2CUNEIFORM SIGN DAG KISIM5 " + + "TIMES LUMCUNEIFORM SIGN DAG KISIM5 TIMES NECUNEIFORM SIGN DAG KISIM5 TIM" + + "ES PAP PLUS PAPCUNEIFORM SIGN DAG KISIM5 TIMES SICUNEIFORM SIGN DAG KISI" + + "M5 TIMES TAK4CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2CUNEIFORM SIGN " + + "DAG KISIM5 TIMES USHCUNEIFORM SIGN DAMCUNEIFORM SIGN DARCUNEIFORM SIGN D" + + "ARA3CUNEIFORM SIGN DARA4CUNEIFORM SIGN DICUNEIFORM SIGN DIBCUNEIFORM SIG" + + "N DIMCUNEIFORM SIGN DIM TIMES SHECUNEIFORM SIGN DIM2CUNEIFORM SIGN DINCU" + + "NEIFORM SIGN DIN KASKAL U GUNU DISHCUNEIFORM SIGN DISHCUNEIFORM SIGN DUC" + + "UNEIFORM SIGN DU OVER DUCUNEIFORM SIGN DU GUNUCUNEIFORM SIGN DU SHESHIGC" + + "UNEIFORM SIGN DUBCUNEIFORM SIGN DUB TIMES ESH2CUNEIFORM SIGN DUB2CUNEIFO" + + "RM SIGN DUGCUNEIFORM SIGN DUGUDCUNEIFORM SIGN DUHCUNEIFORM SIGN DUNCUNEI" + + "FORM SIGN DUN3CUNEIFORM SIGN DUN3 GUNUCUNEIFORM SIGN DUN3 GUNU GUNUCUNEI" + + "FORM SIGN DUN4CUNEIFORM SIGN DUR2CUNEIFORM SIGN ECUNEIFORM SIGN E TIMES " + + "PAPCUNEIFORM SIGN E OVER E NUN OVER NUNCUNEIFORM SIGN E2CUNEIFORM SIGN E" + + "2 TIMES A PLUS HA PLUS DACUNEIFORM SIGN E2 TIMES GARCUNEIFORM SIGN E2 TI" + + "MES MICUNEIFORM SIGN E2 TIMES SALCUNEIFORM SIGN E2 TIMES SHECUNEIFORM SI" + + "GN E2 TIMES UCUNEIFORM SIGN EDINCUNEIFORM SIGN EGIRCUNEIFORM SIGN ELCUNE" + + "IFORM SIGN ENCUNEIFORM SIGN EN TIMES GAN2CUNEIFORM SIGN EN TIMES GAN2 TE" + + "NUCUNEIFORM SIGN EN TIMES MECUNEIFORM SIGN EN CROSSING ENCUNEIFORM SIGN " + + "EN OPPOSING ENCUNEIFORM SIGN EN SQUAREDCUNEIFORM SIGN ERENCUNEIFORM SIGN" + + " ERIN2CUNEIFORM SIGN ESH2CUNEIFORM SIGN EZENCUNEIFORM SIGN EZEN TIMES AC" + + "UNEIFORM SIGN EZEN TIMES A PLUS LALCUNEIFORM SIGN EZEN TIMES A PLUS LAL " + + "TIMES LALCUNEIFORM SIGN EZEN TIMES ANCUNEIFORM SIGN EZEN TIMES BADCUNEIF" + + "ORM SIGN EZEN TIMES DUN3 GUNUCUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNUCUN" + + "EIFORM SIGN EZEN TIMES HACUNEIFORM SIGN EZEN TIMES HA GUNUCUNEIFORM SIGN" + + " EZEN TIMES IGI GUNUCUNEIFORM SIGN EZEN TIMES KASKALCUNEIFORM SIGN EZEN " + + "TIMES KASKAL SQUAREDCUNEIFORM SIGN EZEN TIMES KU3CUNEIFORM SIGN EZEN TIM" + + "ES LACUNEIFORM SIGN EZEN TIMES LAL TIMES LALCUNEIFORM SIGN EZEN TIMES LI" + + "CUNEIFORM SIGN EZEN TIMES LUCUNEIFORM SIGN EZEN TIMES U2CUNEIFORM SIGN E" + + "ZEN TIMES UDCUNEIFORM SIGN GACUNEIFORM SIGN GA GUNUCUNEIFORM SIGN GA2CUN" + + "EIFORM SIGN GA2 TIMES A PLUS DA PLUS HACUNEIFORM SIGN GA2 TIMES A PLUS H" + + "ACUNEIFORM SIGN GA2 TIMES A PLUS IGICUNEIFORM SIGN GA2 TIMES AB2 TENU PL" + + "US TABCUNEIFORM SIGN GA2 TIMES ANCUNEIFORM SIGN GA2 TIMES ASHCUNEIFORM S" + + "IGN GA2 TIMES ASH2 PLUS GALCUNEIFORM SIGN GA2 TIMES BADCUNEIFORM SIGN GA" + + "2 TIMES BAR PLUS RACUNEIFORM SIGN GA2 TIMES BURCUNEIFORM SIGN GA2 TIMES " + + "BUR PLUS RACUNEIFORM SIGN GA2 TIMES DACUNEIFORM SIGN GA2 TIMES DICUNEIFO" + + "RM SIGN GA2 TIMES DIM TIMES SHECUNEIFORM SIGN GA2 TIMES DUBCUNEIFORM SIG" + + "N GA2 TIMES ELCUNEIFORM SIGN GA2 TIMES EL PLUS LACUNEIFORM SIGN GA2 TIME") + ("" + + "S ENCUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENUCUNEIFORM SIGN GA2 TIMES " + + "GAN2 TENUCUNEIFORM SIGN GA2 TIMES GARCUNEIFORM SIGN GA2 TIMES GICUNEIFOR" + + "M SIGN GA2 TIMES GI4CUNEIFORM SIGN GA2 TIMES GI4 PLUS ACUNEIFORM SIGN GA" + + "2 TIMES GIR2 PLUS SUCUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2CUNEIFO" + + "RM SIGN GA2 TIMES HALCUNEIFORM SIGN GA2 TIMES HAL PLUS LACUNEIFORM SIGN " + + "GA2 TIMES HI PLUS LICUNEIFORM SIGN GA2 TIMES HUB2CUNEIFORM SIGN GA2 TIME" + + "S IGI GUNUCUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASHCUNEIFORM SIGN GA" + + "2 TIMES KAKCUNEIFORM SIGN GA2 TIMES KASKALCUNEIFORM SIGN GA2 TIMES KIDCU" + + "NEIFORM SIGN GA2 TIMES KID PLUS LALCUNEIFORM SIGN GA2 TIMES KU3 PLUS ANC" + + "UNEIFORM SIGN GA2 TIMES LACUNEIFORM SIGN GA2 TIMES ME PLUS ENCUNEIFORM S" + + "IGN GA2 TIMES MICUNEIFORM SIGN GA2 TIMES NUNCUNEIFORM SIGN GA2 TIMES NUN" + + " OVER NUNCUNEIFORM SIGN GA2 TIMES PACUNEIFORM SIGN GA2 TIMES SALCUNEIFOR" + + "M SIGN GA2 TIMES SARCUNEIFORM SIGN GA2 TIMES SHECUNEIFORM SIGN GA2 TIMES" + + " SHE PLUS TURCUNEIFORM SIGN GA2 TIMES SHIDCUNEIFORM SIGN GA2 TIMES SUMCU" + + "NEIFORM SIGN GA2 TIMES TAK4CUNEIFORM SIGN GA2 TIMES UCUNEIFORM SIGN GA2 " + + "TIMES UDCUNEIFORM SIGN GA2 TIMES UD PLUS DUCUNEIFORM SIGN GA2 OVER GA2CU" + + "NEIFORM SIGN GABACUNEIFORM SIGN GABA CROSSING GABACUNEIFORM SIGN GADCUNE" + + "IFORM SIGN GAD OVER GAD GAR OVER GARCUNEIFORM SIGN GALCUNEIFORM SIGN GAL" + + " GAD OVER GAD GAR OVER GARCUNEIFORM SIGN GALAMCUNEIFORM SIGN GAMCUNEIFOR" + + "M SIGN GANCUNEIFORM SIGN GAN2CUNEIFORM SIGN GAN2 TENUCUNEIFORM SIGN GAN2" + + " OVER GAN2CUNEIFORM SIGN GAN2 CROSSING GAN2CUNEIFORM SIGN GARCUNEIFORM S" + + "IGN GAR3CUNEIFORM SIGN GASHANCUNEIFORM SIGN GESHTINCUNEIFORM SIGN GESHTI" + + "N TIMES KURCUNEIFORM SIGN GICUNEIFORM SIGN GI TIMES ECUNEIFORM SIGN GI T" + + "IMES UCUNEIFORM SIGN GI CROSSING GICUNEIFORM SIGN GI4CUNEIFORM SIGN GI4 " + + "OVER GI4CUNEIFORM SIGN GI4 CROSSING GI4CUNEIFORM SIGN GIDIMCUNEIFORM SIG" + + "N GIR2CUNEIFORM SIGN GIR2 GUNUCUNEIFORM SIGN GIR3CUNEIFORM SIGN GIR3 TIM" + + "ES A PLUS IGICUNEIFORM SIGN GIR3 TIMES GAN2 TENUCUNEIFORM SIGN GIR3 TIME" + + "S IGICUNEIFORM SIGN GIR3 TIMES LU PLUS IGICUNEIFORM SIGN GIR3 TIMES PACU" + + "NEIFORM SIGN GISALCUNEIFORM SIGN GISHCUNEIFORM SIGN GISH CROSSING GISHCU" + + "NEIFORM SIGN GISH TIMES BADCUNEIFORM SIGN GISH TIMES TAK4CUNEIFORM SIGN " + + "GISH TENUCUNEIFORM SIGN GUCUNEIFORM SIGN GU CROSSING GUCUNEIFORM SIGN GU" + + "2CUNEIFORM SIGN GU2 TIMES KAKCUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU" + + "CUNEIFORM SIGN GU2 TIMES NUNCUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2CUNEIF" + + "ORM SIGN GU2 GUNUCUNEIFORM SIGN GUDCUNEIFORM SIGN GUD TIMES A PLUS KURCU" + + "NEIFORM SIGN GUD TIMES KURCUNEIFORM SIGN GUD OVER GUD LUGALCUNEIFORM SIG" + + "N GULCUNEIFORM SIGN GUMCUNEIFORM SIGN GUM TIMES SHECUNEIFORM SIGN GURCUN" + + "EIFORM SIGN GUR7CUNEIFORM SIGN GURUNCUNEIFORM SIGN GURUSHCUNEIFORM SIGN " + + "HACUNEIFORM SIGN HA TENUCUNEIFORM SIGN HA GUNUCUNEIFORM SIGN HALCUNEIFOR" + + "M SIGN HICUNEIFORM SIGN HI TIMES ASHCUNEIFORM SIGN HI TIMES ASH2CUNEIFOR" + + "M SIGN HI TIMES BADCUNEIFORM SIGN HI TIMES DISHCUNEIFORM SIGN HI TIMES G" + + "ADCUNEIFORM SIGN HI TIMES KINCUNEIFORM SIGN HI TIMES NUNCUNEIFORM SIGN H" + + "I TIMES SHECUNEIFORM SIGN HI TIMES UCUNEIFORM SIGN HUCUNEIFORM SIGN HUB2" + + "CUNEIFORM SIGN HUB2 TIMES ANCUNEIFORM SIGN HUB2 TIMES HALCUNEIFORM SIGN " + + "HUB2 TIMES KASKALCUNEIFORM SIGN HUB2 TIMES LISHCUNEIFORM SIGN HUB2 TIMES" + + " UDCUNEIFORM SIGN HUL2CUNEIFORM SIGN ICUNEIFORM SIGN I ACUNEIFORM SIGN I" + + "BCUNEIFORM SIGN IDIMCUNEIFORM SIGN IDIM OVER IDIM BURCUNEIFORM SIGN IDIM" + + " OVER IDIM SQUAREDCUNEIFORM SIGN IGCUNEIFORM SIGN IGICUNEIFORM SIGN IGI " + + "DIBCUNEIFORM SIGN IGI RICUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OV" + + "ER UDCUNEIFORM SIGN IGI GUNUCUNEIFORM SIGN ILCUNEIFORM SIGN IL TIMES GAN" + + "2 TENUCUNEIFORM SIGN IL2CUNEIFORM SIGN IMCUNEIFORM SIGN IM TIMES TAK4CUN" + + "EIFORM SIGN IM CROSSING IMCUNEIFORM SIGN IM OPPOSING IMCUNEIFORM SIGN IM" + + " SQUAREDCUNEIFORM SIGN IMINCUNEIFORM SIGN INCUNEIFORM SIGN IRCUNEIFORM S" + + "IGN ISHCUNEIFORM SIGN KACUNEIFORM SIGN KA TIMES ACUNEIFORM SIGN KA TIMES" + + " ADCUNEIFORM SIGN KA TIMES AD PLUS KU3CUNEIFORM SIGN KA TIMES ASH2CUNEIF" + + "ORM SIGN KA TIMES BADCUNEIFORM SIGN KA TIMES BALAGCUNEIFORM SIGN KA TIME" + + "S BARCUNEIFORM SIGN KA TIMES BICUNEIFORM SIGN KA TIMES ERIN2CUNEIFORM SI" + + "GN KA TIMES ESH2CUNEIFORM SIGN KA TIMES GACUNEIFORM SIGN KA TIMES GALCUN" + + "EIFORM SIGN KA TIMES GAN2 TENUCUNEIFORM SIGN KA TIMES GARCUNEIFORM SIGN " + + "KA TIMES GAR PLUS SHA3 PLUS ACUNEIFORM SIGN KA TIMES GICUNEIFORM SIGN KA" + + " TIMES GIR2CUNEIFORM SIGN KA TIMES GISH PLUS SARCUNEIFORM SIGN KA TIMES " + + "GISH CROSSING GISHCUNEIFORM SIGN KA TIMES GUCUNEIFORM SIGN KA TIMES GUR7" + + "CUNEIFORM SIGN KA TIMES IGICUNEIFORM SIGN KA TIMES IMCUNEIFORM SIGN KA T" + + "IMES KAKCUNEIFORM SIGN KA TIMES KICUNEIFORM SIGN KA TIMES KIDCUNEIFORM S" + + "IGN KA TIMES LICUNEIFORM SIGN KA TIMES LUCUNEIFORM SIGN KA TIMES MECUNEI") + ("" + + "FORM SIGN KA TIMES ME PLUS DUCUNEIFORM SIGN KA TIMES ME PLUS GICUNEIFORM" + + " SIGN KA TIMES ME PLUS TECUNEIFORM SIGN KA TIMES MICUNEIFORM SIGN KA TIM" + + "ES MI PLUS NUNUZCUNEIFORM SIGN KA TIMES NECUNEIFORM SIGN KA TIMES NUNCUN" + + "EIFORM SIGN KA TIMES PICUNEIFORM SIGN KA TIMES RUCUNEIFORM SIGN KA TIMES" + + " SACUNEIFORM SIGN KA TIMES SARCUNEIFORM SIGN KA TIMES SHACUNEIFORM SIGN " + + "KA TIMES SHECUNEIFORM SIGN KA TIMES SHIDCUNEIFORM SIGN KA TIMES SHUCUNEI" + + "FORM SIGN KA TIMES SIGCUNEIFORM SIGN KA TIMES SUHURCUNEIFORM SIGN KA TIM" + + "ES TARCUNEIFORM SIGN KA TIMES UCUNEIFORM SIGN KA TIMES U2CUNEIFORM SIGN " + + "KA TIMES UDCUNEIFORM SIGN KA TIMES UMUM TIMES PACUNEIFORM SIGN KA TIMES " + + "USHCUNEIFORM SIGN KA TIMES ZICUNEIFORM SIGN KA2CUNEIFORM SIGN KA2 CROSSI" + + "NG KA2CUNEIFORM SIGN KABCUNEIFORM SIGN KAD2CUNEIFORM SIGN KAD3CUNEIFORM " + + "SIGN KAD4CUNEIFORM SIGN KAD5CUNEIFORM SIGN KAD5 OVER KAD5CUNEIFORM SIGN " + + "KAKCUNEIFORM SIGN KAK TIMES IGI GUNUCUNEIFORM SIGN KALCUNEIFORM SIGN KAL" + + " TIMES BADCUNEIFORM SIGN KAL CROSSING KALCUNEIFORM SIGN KAM2CUNEIFORM SI" + + "GN KAM4CUNEIFORM SIGN KASKALCUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAG" + + "AB TIMES UCUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIM" + + "ES UCUNEIFORM SIGN KESH2CUNEIFORM SIGN KICUNEIFORM SIGN KI TIMES BADCUNE" + + "IFORM SIGN KI TIMES UCUNEIFORM SIGN KI TIMES UDCUNEIFORM SIGN KIDCUNEIFO" + + "RM SIGN KINCUNEIFORM SIGN KISALCUNEIFORM SIGN KISHCUNEIFORM SIGN KISIM5C" + + "UNEIFORM SIGN KISIM5 OVER KISIM5CUNEIFORM SIGN KUCUNEIFORM SIGN KU OVER " + + "HI TIMES ASH2 KU OVER HI TIMES ASH2CUNEIFORM SIGN KU3CUNEIFORM SIGN KU4C" + + "UNEIFORM SIGN KU4 VARIANT FORMCUNEIFORM SIGN KU7CUNEIFORM SIGN KULCUNEIF" + + "ORM SIGN KUL GUNUCUNEIFORM SIGN KUNCUNEIFORM SIGN KURCUNEIFORM SIGN KUR " + + "OPPOSING KURCUNEIFORM SIGN KUSHU2CUNEIFORM SIGN KWU318CUNEIFORM SIGN LAC" + + "UNEIFORM SIGN LAGABCUNEIFORM SIGN LAGAB TIMES ACUNEIFORM SIGN LAGAB TIME" + + "S A PLUS DA PLUS HACUNEIFORM SIGN LAGAB TIMES A PLUS GARCUNEIFORM SIGN L" + + "AGAB TIMES A PLUS LALCUNEIFORM SIGN LAGAB TIMES ALCUNEIFORM SIGN LAGAB T" + + "IMES ANCUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENUCUNEIFORM SIGN LAGAB TIME" + + "S BADCUNEIFORM SIGN LAGAB TIMES BICUNEIFORM SIGN LAGAB TIMES DARCUNEIFOR" + + "M SIGN LAGAB TIMES ENCUNEIFORM SIGN LAGAB TIMES GACUNEIFORM SIGN LAGAB T" + + "IMES GARCUNEIFORM SIGN LAGAB TIMES GUDCUNEIFORM SIGN LAGAB TIMES GUD PLU" + + "S GUDCUNEIFORM SIGN LAGAB TIMES HACUNEIFORM SIGN LAGAB TIMES HALCUNEIFOR" + + "M SIGN LAGAB TIMES HI TIMES NUNCUNEIFORM SIGN LAGAB TIMES IGI GUNUCUNEIF" + + "ORM SIGN LAGAB TIMES IMCUNEIFORM SIGN LAGAB TIMES IM PLUS HACUNEIFORM SI" + + "GN LAGAB TIMES IM PLUS LUCUNEIFORM SIGN LAGAB TIMES KICUNEIFORM SIGN LAG" + + "AB TIMES KINCUNEIFORM SIGN LAGAB TIMES KU3CUNEIFORM SIGN LAGAB TIMES KUL" + + "CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS ACUNEIFORM SIGN LAGAB TIMES " + + "LAGABCUNEIFORM SIGN LAGAB TIMES LISHCUNEIFORM SIGN LAGAB TIMES LUCUNEIFO" + + "RM SIGN LAGAB TIMES LULCUNEIFORM SIGN LAGAB TIMES MECUNEIFORM SIGN LAGAB" + + " TIMES ME PLUS ENCUNEIFORM SIGN LAGAB TIMES MUSHCUNEIFORM SIGN LAGAB TIM" + + "ES NECUNEIFORM SIGN LAGAB TIMES SHE PLUS SUMCUNEIFORM SIGN LAGAB TIMES S" + + "HITA PLUS GISH PLUS ERIN2CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU" + + "CUNEIFORM SIGN LAGAB TIMES SHU2CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2" + + "CUNEIFORM SIGN LAGAB TIMES SUMCUNEIFORM SIGN LAGAB TIMES TAGCUNEIFORM SI" + + "GN LAGAB TIMES TAK4CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NAC" + + "UNEIFORM SIGN LAGAB TIMES UCUNEIFORM SIGN LAGAB TIMES U PLUS ACUNEIFORM " + + "SIGN LAGAB TIMES U PLUS U PLUS UCUNEIFORM SIGN LAGAB TIMES U2 PLUS ASHCU" + + "NEIFORM SIGN LAGAB TIMES UDCUNEIFORM SIGN LAGAB TIMES USHCUNEIFORM SIGN " + + "LAGAB SQUAREDCUNEIFORM SIGN LAGARCUNEIFORM SIGN LAGAR TIMES SHECUNEIFORM" + + " SIGN LAGAR TIMES SHE PLUS SUMCUNEIFORM SIGN LAGAR GUNUCUNEIFORM SIGN LA" + + "GAR GUNU OVER LAGAR GUNU SHECUNEIFORM SIGN LAHSHUCUNEIFORM SIGN LALCUNEI" + + "FORM SIGN LAL TIMES LALCUNEIFORM SIGN LAMCUNEIFORM SIGN LAM TIMES KURCUN" + + "EIFORM SIGN LAM TIMES KUR PLUS RUCUNEIFORM SIGN LICUNEIFORM SIGN LILCUNE" + + "IFORM SIGN LIMMU2CUNEIFORM SIGN LISHCUNEIFORM SIGN LUCUNEIFORM SIGN LU T" + + "IMES BADCUNEIFORM SIGN LU2CUNEIFORM SIGN LU2 TIMES ALCUNEIFORM SIGN LU2 " + + "TIMES BADCUNEIFORM SIGN LU2 TIMES ESH2CUNEIFORM SIGN LU2 TIMES ESH2 TENU" + + "CUNEIFORM SIGN LU2 TIMES GAN2 TENUCUNEIFORM SIGN LU2 TIMES HI TIMES BADC" + + "UNEIFORM SIGN LU2 TIMES IMCUNEIFORM SIGN LU2 TIMES KAD2CUNEIFORM SIGN LU" + + "2 TIMES KAD3CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASHCUNEIFORM SIGN LU2 TIM" + + "ES KICUNEIFORM SIGN LU2 TIMES LA PLUS ASHCUNEIFORM SIGN LU2 TIMES LAGABC" + + "UNEIFORM SIGN LU2 TIMES ME PLUS ENCUNEIFORM SIGN LU2 TIMES NECUNEIFORM S" + + "IGN LU2 TIMES NUCUNEIFORM SIGN LU2 TIMES SI PLUS ASHCUNEIFORM SIGN LU2 T" + + "IMES SIK2 PLUS BUCUNEIFORM SIGN LU2 TIMES TUG2CUNEIFORM SIGN LU2 TENUCUN" + + "EIFORM SIGN LU2 CROSSING LU2CUNEIFORM SIGN LU2 OPPOSING LU2CUNEIFORM SIG") + ("" + + "N LU2 SQUAREDCUNEIFORM SIGN LU2 SHESHIGCUNEIFORM SIGN LU3CUNEIFORM SIGN " + + "LUGALCUNEIFORM SIGN LUGAL OVER LUGALCUNEIFORM SIGN LUGAL OPPOSING LUGALC" + + "UNEIFORM SIGN LUGAL SHESHIGCUNEIFORM SIGN LUHCUNEIFORM SIGN LULCUNEIFORM" + + " SIGN LUMCUNEIFORM SIGN LUM OVER LUMCUNEIFORM SIGN LUM OVER LUM GAR OVER" + + " GARCUNEIFORM SIGN MACUNEIFORM SIGN MA TIMES TAK4CUNEIFORM SIGN MA GUNUC" + + "UNEIFORM SIGN MA2CUNEIFORM SIGN MAHCUNEIFORM SIGN MARCUNEIFORM SIGN MASH" + + "CUNEIFORM SIGN MASH2CUNEIFORM SIGN MECUNEIFORM SIGN MESCUNEIFORM SIGN MI" + + "CUNEIFORM SIGN MINCUNEIFORM SIGN MUCUNEIFORM SIGN MU OVER MUCUNEIFORM SI" + + "GN MUGCUNEIFORM SIGN MUG GUNUCUNEIFORM SIGN MUNSUBCUNEIFORM SIGN MURGU2C" + + "UNEIFORM SIGN MUSHCUNEIFORM SIGN MUSH TIMES ACUNEIFORM SIGN MUSH TIMES K" + + "URCUNEIFORM SIGN MUSH TIMES ZACUNEIFORM SIGN MUSH OVER MUSHCUNEIFORM SIG" + + "N MUSH OVER MUSH TIMES A PLUS NACUNEIFORM SIGN MUSH CROSSING MUSHCUNEIFO" + + "RM SIGN MUSH3CUNEIFORM SIGN MUSH3 TIMES ACUNEIFORM SIGN MUSH3 TIMES A PL" + + "US DICUNEIFORM SIGN MUSH3 TIMES DICUNEIFORM SIGN MUSH3 GUNUCUNEIFORM SIG" + + "N NACUNEIFORM SIGN NA2CUNEIFORM SIGN NAGACUNEIFORM SIGN NAGA INVERTEDCUN" + + "EIFORM SIGN NAGA TIMES SHU TENUCUNEIFORM SIGN NAGA OPPOSING NAGACUNEIFOR" + + "M SIGN NAGARCUNEIFORM SIGN NAM NUTILLUCUNEIFORM SIGN NAMCUNEIFORM SIGN N" + + "AM2CUNEIFORM SIGN NECUNEIFORM SIGN NE TIMES ACUNEIFORM SIGN NE TIMES UDC" + + "UNEIFORM SIGN NE SHESHIGCUNEIFORM SIGN NICUNEIFORM SIGN NI TIMES ECUNEIF" + + "ORM SIGN NI2CUNEIFORM SIGN NIMCUNEIFORM SIGN NIM TIMES GAN2 TENUCUNEIFOR" + + "M SIGN NIM TIMES GAR PLUS GAN2 TENUCUNEIFORM SIGN NINDA2CUNEIFORM SIGN N" + + "INDA2 TIMES ANCUNEIFORM SIGN NINDA2 TIMES ASHCUNEIFORM SIGN NINDA2 TIMES" + + " ASH PLUS ASHCUNEIFORM SIGN NINDA2 TIMES GUDCUNEIFORM SIGN NINDA2 TIMES " + + "ME PLUS GAN2 TENUCUNEIFORM SIGN NINDA2 TIMES NECUNEIFORM SIGN NINDA2 TIM" + + "ES NUNCUNEIFORM SIGN NINDA2 TIMES SHECUNEIFORM SIGN NINDA2 TIMES SHE PLU" + + "S A ANCUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASHCUNEIFORM SIGN NINDA2 TIME" + + "S SHE PLUS ASH PLUS ASHCUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASHCUNEIFORM " + + "SIGN NINDA2 TIMES USHCUNEIFORM SIGN NISAGCUNEIFORM SIGN NUCUNEIFORM SIGN" + + " NU11CUNEIFORM SIGN NUNCUNEIFORM SIGN NUN LAGAR TIMES GARCUNEIFORM SIGN " + + "NUN LAGAR TIMES MASHCUNEIFORM SIGN NUN LAGAR TIMES SALCUNEIFORM SIGN NUN" + + " LAGAR TIMES SAL OVER NUN LAGAR TIMES SALCUNEIFORM SIGN NUN LAGAR TIMES " + + "USHCUNEIFORM SIGN NUN TENUCUNEIFORM SIGN NUN OVER NUNCUNEIFORM SIGN NUN " + + "CROSSING NUNCUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGARCUNEIFORM SI" + + "GN NUNUZCUNEIFORM SIGN NUNUZ AB2 TIMES ASHGABCUNEIFORM SIGN NUNUZ AB2 TI" + + "MES BICUNEIFORM SIGN NUNUZ AB2 TIMES DUGCUNEIFORM SIGN NUNUZ AB2 TIMES G" + + "UDCUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNUCUNEIFORM SIGN NUNUZ AB2 TIMES " + + "KAD3CUNEIFORM SIGN NUNUZ AB2 TIMES LACUNEIFORM SIGN NUNUZ AB2 TIMES NECU" + + "NEIFORM SIGN NUNUZ AB2 TIMES SILA3CUNEIFORM SIGN NUNUZ AB2 TIMES U2CUNEI" + + "FORM SIGN NUNUZ KISIM5 TIMES BICUNEIFORM SIGN NUNUZ KISIM5 TIMES BI UCUN" + + "EIFORM SIGN PACUNEIFORM SIGN PADCUNEIFORM SIGN PANCUNEIFORM SIGN PAPCUNE" + + "IFORM SIGN PESH2CUNEIFORM SIGN PICUNEIFORM SIGN PI TIMES ACUNEIFORM SIGN" + + " PI TIMES ABCUNEIFORM SIGN PI TIMES BICUNEIFORM SIGN PI TIMES BUCUNEIFOR" + + "M SIGN PI TIMES ECUNEIFORM SIGN PI TIMES ICUNEIFORM SIGN PI TIMES IBCUNE" + + "IFORM SIGN PI TIMES UCUNEIFORM SIGN PI TIMES U2CUNEIFORM SIGN PI CROSSIN" + + "G PICUNEIFORM SIGN PIRIGCUNEIFORM SIGN PIRIG TIMES KALCUNEIFORM SIGN PIR" + + "IG TIMES UDCUNEIFORM SIGN PIRIG TIMES ZACUNEIFORM SIGN PIRIG OPPOSING PI" + + "RIGCUNEIFORM SIGN RACUNEIFORM SIGN RABCUNEIFORM SIGN RICUNEIFORM SIGN RU" + + "CUNEIFORM SIGN SACUNEIFORM SIGN SAG NUTILLUCUNEIFORM SIGN SAGCUNEIFORM S" + + "IGN SAG TIMES ACUNEIFORM SIGN SAG TIMES DUCUNEIFORM SIGN SAG TIMES DUBCU" + + "NEIFORM SIGN SAG TIMES HACUNEIFORM SIGN SAG TIMES KAKCUNEIFORM SIGN SAG " + + "TIMES KURCUNEIFORM SIGN SAG TIMES LUMCUNEIFORM SIGN SAG TIMES MICUNEIFOR" + + "M SIGN SAG TIMES NUNCUNEIFORM SIGN SAG TIMES SALCUNEIFORM SIGN SAG TIMES" + + " SHIDCUNEIFORM SIGN SAG TIMES TABCUNEIFORM SIGN SAG TIMES U2CUNEIFORM SI" + + "GN SAG TIMES UBCUNEIFORM SIGN SAG TIMES UMCUNEIFORM SIGN SAG TIMES URCUN" + + "EIFORM SIGN SAG TIMES USHCUNEIFORM SIGN SAG OVER SAGCUNEIFORM SIGN SAG G" + + "UNUCUNEIFORM SIGN SALCUNEIFORM SIGN SAL LAGAB TIMES ASH2CUNEIFORM SIGN S" + + "ANGA2CUNEIFORM SIGN SARCUNEIFORM SIGN SHACUNEIFORM SIGN SHA3CUNEIFORM SI" + + "GN SHA3 TIMES ACUNEIFORM SIGN SHA3 TIMES BADCUNEIFORM SIGN SHA3 TIMES GI" + + "SHCUNEIFORM SIGN SHA3 TIMES NECUNEIFORM SIGN SHA3 TIMES SHU2CUNEIFORM SI" + + "GN SHA3 TIMES TURCUNEIFORM SIGN SHA3 TIMES UCUNEIFORM SIGN SHA3 TIMES U " + + "PLUS ACUNEIFORM SIGN SHA6CUNEIFORM SIGN SHAB6CUNEIFORM SIGN SHAR2CUNEIFO" + + "RM SIGN SHECUNEIFORM SIGN SHE HUCUNEIFORM SIGN SHE OVER SHE GAD OVER GAD" + + " GAR OVER GARCUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GARCUNEIF" + + "ORM SIGN SHEG9CUNEIFORM SIGN SHENCUNEIFORM SIGN SHESHCUNEIFORM SIGN SHES") + ("" + + "H2CUNEIFORM SIGN SHESHLAMCUNEIFORM SIGN SHIDCUNEIFORM SIGN SHID TIMES AC" + + "UNEIFORM SIGN SHID TIMES IMCUNEIFORM SIGN SHIMCUNEIFORM SIGN SHIM TIMES " + + "ACUNEIFORM SIGN SHIM TIMES BALCUNEIFORM SIGN SHIM TIMES BULUGCUNEIFORM S" + + "IGN SHIM TIMES DINCUNEIFORM SIGN SHIM TIMES GARCUNEIFORM SIGN SHIM TIMES" + + " IGICUNEIFORM SIGN SHIM TIMES IGI GUNUCUNEIFORM SIGN SHIM TIMES KUSHU2CU" + + "NEIFORM SIGN SHIM TIMES LULCUNEIFORM SIGN SHIM TIMES MUGCUNEIFORM SIGN S" + + "HIM TIMES SALCUNEIFORM SIGN SHINIGCUNEIFORM SIGN SHIRCUNEIFORM SIGN SHIR" + + " TENUCUNEIFORM SIGN SHIR OVER SHIR BUR OVER BURCUNEIFORM SIGN SHITACUNEI" + + "FORM SIGN SHUCUNEIFORM SIGN SHU OVER INVERTED SHUCUNEIFORM SIGN SHU2CUNE" + + "IFORM SIGN SHUBURCUNEIFORM SIGN SICUNEIFORM SIGN SI GUNUCUNEIFORM SIGN S" + + "IGCUNEIFORM SIGN SIG4CUNEIFORM SIGN SIG4 OVER SIG4 SHU2CUNEIFORM SIGN SI" + + "K2CUNEIFORM SIGN SILA3CUNEIFORM SIGN SUCUNEIFORM SIGN SU OVER SUCUNEIFOR" + + "M SIGN SUDCUNEIFORM SIGN SUD2CUNEIFORM SIGN SUHURCUNEIFORM SIGN SUMCUNEI" + + "FORM SIGN SUMASHCUNEIFORM SIGN SURCUNEIFORM SIGN SUR9CUNEIFORM SIGN TACU" + + "NEIFORM SIGN TA ASTERISKCUNEIFORM SIGN TA TIMES HICUNEIFORM SIGN TA TIME" + + "S MICUNEIFORM SIGN TA GUNUCUNEIFORM SIGN TABCUNEIFORM SIGN TAB OVER TAB " + + "NI OVER NI DISH OVER DISHCUNEIFORM SIGN TAB SQUAREDCUNEIFORM SIGN TAGCUN" + + "EIFORM SIGN TAG TIMES BICUNEIFORM SIGN TAG TIMES GUDCUNEIFORM SIGN TAG T" + + "IMES SHECUNEIFORM SIGN TAG TIMES SHUCUNEIFORM SIGN TAG TIMES TUG2CUNEIFO" + + "RM SIGN TAG TIMES UDCUNEIFORM SIGN TAK4CUNEIFORM SIGN TARCUNEIFORM SIGN " + + "TECUNEIFORM SIGN TE GUNUCUNEIFORM SIGN TICUNEIFORM SIGN TI TENUCUNEIFORM" + + " SIGN TILCUNEIFORM SIGN TIRCUNEIFORM SIGN TIR TIMES TAK4CUNEIFORM SIGN T" + + "IR OVER TIRCUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GARCUNEIFOR" + + "M SIGN TUCUNEIFORM SIGN TUG2CUNEIFORM SIGN TUKCUNEIFORM SIGN TUMCUNEIFOR" + + "M SIGN TURCUNEIFORM SIGN TUR OVER TUR ZA OVER ZACUNEIFORM SIGN UCUNEIFOR" + + "M SIGN U GUDCUNEIFORM SIGN U U UCUNEIFORM SIGN U OVER U PA OVER PA GAR O" + + "VER GARCUNEIFORM SIGN U OVER U SUR OVER SURCUNEIFORM SIGN U OVER U U REV" + + "ERSED OVER U REVERSEDCUNEIFORM SIGN U2CUNEIFORM SIGN UBCUNEIFORM SIGN UD" + + "CUNEIFORM SIGN UD KUSHU2CUNEIFORM SIGN UD TIMES BADCUNEIFORM SIGN UD TIM" + + "ES MICUNEIFORM SIGN UD TIMES U PLUS U PLUS UCUNEIFORM SIGN UD TIMES U PL" + + "US U PLUS U GUNUCUNEIFORM SIGN UD GUNUCUNEIFORM SIGN UD SHESHIGCUNEIFORM" + + " SIGN UD SHESHIG TIMES BADCUNEIFORM SIGN UDUGCUNEIFORM SIGN UMCUNEIFORM " + + "SIGN UM TIMES LAGABCUNEIFORM SIGN UM TIMES ME PLUS DACUNEIFORM SIGN UM T" + + "IMES SHA3CUNEIFORM SIGN UM TIMES UCUNEIFORM SIGN UMBINCUNEIFORM SIGN UMU" + + "MCUNEIFORM SIGN UMUM TIMES KASKALCUNEIFORM SIGN UMUM TIMES PACUNEIFORM S" + + "IGN UNCUNEIFORM SIGN UN GUNUCUNEIFORM SIGN URCUNEIFORM SIGN UR CROSSING " + + "URCUNEIFORM SIGN UR SHESHIGCUNEIFORM SIGN UR2CUNEIFORM SIGN UR2 TIMES A " + + "PLUS HACUNEIFORM SIGN UR2 TIMES A PLUS NACUNEIFORM SIGN UR2 TIMES ALCUNE" + + "IFORM SIGN UR2 TIMES HACUNEIFORM SIGN UR2 TIMES NUNCUNEIFORM SIGN UR2 TI" + + "MES U2CUNEIFORM SIGN UR2 TIMES U2 PLUS ASHCUNEIFORM SIGN UR2 TIMES U2 PL" + + "US BICUNEIFORM SIGN UR4CUNEIFORM SIGN URICUNEIFORM SIGN URI3CUNEIFORM SI" + + "GN URUCUNEIFORM SIGN URU TIMES ACUNEIFORM SIGN URU TIMES ASHGABCUNEIFORM" + + " SIGN URU TIMES BARCUNEIFORM SIGN URU TIMES DUNCUNEIFORM SIGN URU TIMES " + + "GACUNEIFORM SIGN URU TIMES GALCUNEIFORM SIGN URU TIMES GAN2 TENUCUNEIFOR" + + "M SIGN URU TIMES GARCUNEIFORM SIGN URU TIMES GUCUNEIFORM SIGN URU TIMES " + + "HACUNEIFORM SIGN URU TIMES IGICUNEIFORM SIGN URU TIMES IMCUNEIFORM SIGN " + + "URU TIMES ISHCUNEIFORM SIGN URU TIMES KICUNEIFORM SIGN URU TIMES LUMCUNE" + + "IFORM SIGN URU TIMES MINCUNEIFORM SIGN URU TIMES PACUNEIFORM SIGN URU TI" + + "MES SHECUNEIFORM SIGN URU TIMES SIG4CUNEIFORM SIGN URU TIMES TUCUNEIFORM" + + " SIGN URU TIMES U PLUS GUDCUNEIFORM SIGN URU TIMES UDCUNEIFORM SIGN URU " + + "TIMES URUDACUNEIFORM SIGN URUDACUNEIFORM SIGN URUDA TIMES UCUNEIFORM SIG" + + "N USHCUNEIFORM SIGN USH TIMES ACUNEIFORM SIGN USH TIMES KUCUNEIFORM SIGN" + + " USH TIMES KURCUNEIFORM SIGN USH TIMES TAK4CUNEIFORM SIGN USHXCUNEIFORM " + + "SIGN USH2CUNEIFORM SIGN USHUMXCUNEIFORM SIGN UTUKICUNEIFORM SIGN UZ3CUNE" + + "IFORM SIGN UZ3 TIMES KASKALCUNEIFORM SIGN UZUCUNEIFORM SIGN ZACUNEIFORM " + + "SIGN ZA TENUCUNEIFORM SIGN ZA SQUARED TIMES KURCUNEIFORM SIGN ZAGCUNEIFO" + + "RM SIGN ZAMXCUNEIFORM SIGN ZE2CUNEIFORM SIGN ZICUNEIFORM SIGN ZI OVER ZI" + + "CUNEIFORM SIGN ZI3CUNEIFORM SIGN ZIBCUNEIFORM SIGN ZIB KABA TENUCUNEIFOR" + + "M SIGN ZIGCUNEIFORM SIGN ZIZ2CUNEIFORM SIGN ZUCUNEIFORM SIGN ZU5CUNEIFOR" + + "M SIGN ZU5 TIMES ACUNEIFORM SIGN ZUBURCUNEIFORM SIGN ZUMCUNEIFORM SIGN K" + + "AP ELAMITECUNEIFORM SIGN AB TIMES NUNCUNEIFORM SIGN AB2 TIMES ACUNEIFORM" + + " SIGN AMAR TIMES KUGCUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASHCUNEIFOR" + + "M SIGN DAG3CUNEIFORM SIGN DISH PLUS SHUCUNEIFORM SIGN DUB TIMES SHECUNEI" + + "FORM SIGN EZEN TIMES GUDCUNEIFORM SIGN EZEN TIMES SHECUNEIFORM SIGN GA2 ") + ("" + + "TIMES AN PLUS KAK PLUS ACUNEIFORM SIGN GA2 TIMES ASH2CUNEIFORM SIGN GE22" + + "CUNEIFORM SIGN GIGCUNEIFORM SIGN HUSHCUNEIFORM SIGN KA TIMES ANSHECUNEIF" + + "ORM SIGN KA TIMES ASH3CUNEIFORM SIGN KA TIMES GISHCUNEIFORM SIGN KA TIME" + + "S GUDCUNEIFORM SIGN KA TIMES HI TIMES ASH2CUNEIFORM SIGN KA TIMES LUMCUN" + + "EIFORM SIGN KA TIMES PACUNEIFORM SIGN KA TIMES SHULCUNEIFORM SIGN KA TIM" + + "ES TUCUNEIFORM SIGN KA TIMES UR2CUNEIFORM SIGN LAGAB TIMES GICUNEIFORM S" + + "IGN LU2 SHESHIG TIMES BADCUNEIFORM SIGN LU2 TIMES ESH2 PLUS LALCUNEIFORM" + + " SIGN LU2 TIMES SHUCUNEIFORM SIGN MESHCUNEIFORM SIGN MUSH3 TIMES ZACUNEI" + + "FORM SIGN NA4CUNEIFORM SIGN NINCUNEIFORM SIGN NIN9CUNEIFORM SIGN NINDA2 " + + "TIMES BALCUNEIFORM SIGN NINDA2 TIMES GICUNEIFORM SIGN NU11 ROTATED NINET" + + "Y DEGREESCUNEIFORM SIGN PESH2 ASTERISKCUNEIFORM SIGN PIR2CUNEIFORM SIGN " + + "SAG TIMES IGI GUNUCUNEIFORM SIGN TI2CUNEIFORM SIGN UM TIMES MECUNEIFORM " + + "SIGN U UCUNEIFORM NUMERIC SIGN TWO ASHCUNEIFORM NUMERIC SIGN THREE ASHCU" + + "NEIFORM NUMERIC SIGN FOUR ASHCUNEIFORM NUMERIC SIGN FIVE ASHCUNEIFORM NU" + + "MERIC SIGN SIX ASHCUNEIFORM NUMERIC SIGN SEVEN ASHCUNEIFORM NUMERIC SIGN" + + " EIGHT ASHCUNEIFORM NUMERIC SIGN NINE ASHCUNEIFORM NUMERIC SIGN THREE DI" + + "SHCUNEIFORM NUMERIC SIGN FOUR DISHCUNEIFORM NUMERIC SIGN FIVE DISHCUNEIF" + + "ORM NUMERIC SIGN SIX DISHCUNEIFORM NUMERIC SIGN SEVEN DISHCUNEIFORM NUME" + + "RIC SIGN EIGHT DISHCUNEIFORM NUMERIC SIGN NINE DISHCUNEIFORM NUMERIC SIG" + + "N FOUR UCUNEIFORM NUMERIC SIGN FIVE UCUNEIFORM NUMERIC SIGN SIX UCUNEIFO" + + "RM NUMERIC SIGN SEVEN UCUNEIFORM NUMERIC SIGN EIGHT UCUNEIFORM NUMERIC S" + + "IGN NINE UCUNEIFORM NUMERIC SIGN ONE GESH2CUNEIFORM NUMERIC SIGN TWO GES" + + "H2CUNEIFORM NUMERIC SIGN THREE GESH2CUNEIFORM NUMERIC SIGN FOUR GESH2CUN" + + "EIFORM NUMERIC SIGN FIVE GESH2CUNEIFORM NUMERIC SIGN SIX GESH2CUNEIFORM " + + "NUMERIC SIGN SEVEN GESH2CUNEIFORM NUMERIC SIGN EIGHT GESH2CUNEIFORM NUME" + + "RIC SIGN NINE GESH2CUNEIFORM NUMERIC SIGN ONE GESHUCUNEIFORM NUMERIC SIG" + + "N TWO GESHUCUNEIFORM NUMERIC SIGN THREE GESHUCUNEIFORM NUMERIC SIGN FOUR" + + " GESHUCUNEIFORM NUMERIC SIGN FIVE GESHUCUNEIFORM NUMERIC SIGN TWO SHAR2C" + + "UNEIFORM NUMERIC SIGN THREE SHAR2CUNEIFORM NUMERIC SIGN THREE SHAR2 VARI" + + "ANT FORMCUNEIFORM NUMERIC SIGN FOUR SHAR2CUNEIFORM NUMERIC SIGN FIVE SHA" + + "R2CUNEIFORM NUMERIC SIGN SIX SHAR2CUNEIFORM NUMERIC SIGN SEVEN SHAR2CUNE" + + "IFORM NUMERIC SIGN EIGHT SHAR2CUNEIFORM NUMERIC SIGN NINE SHAR2CUNEIFORM" + + " NUMERIC SIGN ONE SHARUCUNEIFORM NUMERIC SIGN TWO SHARUCUNEIFORM NUMERIC" + + " SIGN THREE SHARUCUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORMCUNEIFOR" + + "M NUMERIC SIGN FOUR SHARUCUNEIFORM NUMERIC SIGN FIVE SHARUCUNEIFORM NUME" + + "RIC SIGN SHAR2 TIMES GAL PLUS DISHCUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL" + + " PLUS MINCUNEIFORM NUMERIC SIGN ONE BURUCUNEIFORM NUMERIC SIGN TWO BURUC" + + "UNEIFORM NUMERIC SIGN THREE BURUCUNEIFORM NUMERIC SIGN THREE BURU VARIAN" + + "T FORMCUNEIFORM NUMERIC SIGN FOUR BURUCUNEIFORM NUMERIC SIGN FIVE BURUCU" + + "NEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16CUNEIFORM NUMERIC SIGN THRE" + + "E VARIANT FORM ESH21CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMUCUNEIF" + + "ORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4CUNEIFORM NUMERIC SIGN FOUR VAR" + + "IANT FORM LIMMU ACUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU BCUNEIFO" + + "RM NUMERIC SIGN SIX VARIANT FORM ASH9CUNEIFORM NUMERIC SIGN SEVEN VARIAN" + + "T FORM IMIN3CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN ACUNEIFORM NU" + + "MERIC SIGN SEVEN VARIANT FORM IMIN BCUNEIFORM NUMERIC SIGN EIGHT VARIANT" + + " FORM USSUCUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3CUNEIFORM NUMER" + + "IC SIGN NINE VARIANT FORM ILIMMUCUNEIFORM NUMERIC SIGN NINE VARIANT FORM" + + " ILIMMU3CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4CUNEIFORM NUMERI" + + "C SIGN NINE VARIANT FORM ILIMMU ACUNEIFORM NUMERIC SIGN TWO ASH TENUCUNE" + + "IFORM NUMERIC SIGN THREE ASH TENUCUNEIFORM NUMERIC SIGN FOUR ASH TENUCUN" + + "EIFORM NUMERIC SIGN FIVE ASH TENUCUNEIFORM NUMERIC SIGN SIX ASH TENUCUNE" + + "IFORM NUMERIC SIGN ONE BAN2CUNEIFORM NUMERIC SIGN TWO BAN2CUNEIFORM NUME" + + "RIC SIGN THREE BAN2CUNEIFORM NUMERIC SIGN FOUR BAN2CUNEIFORM NUMERIC SIG" + + "N FOUR BAN2 VARIANT FORMCUNEIFORM NUMERIC SIGN FIVE BAN2CUNEIFORM NUMERI" + + "C SIGN FIVE BAN2 VARIANT FORMCUNEIFORM NUMERIC SIGN NIGIDAMINCUNEIFORM N" + + "UMERIC SIGN NIGIDAESHCUNEIFORM NUMERIC SIGN ONE ESHE3CUNEIFORM NUMERIC S" + + "IGN TWO ESHE3CUNEIFORM NUMERIC SIGN ONE THIRD DISHCUNEIFORM NUMERIC SIGN" + + " TWO THIRDS DISHCUNEIFORM NUMERIC SIGN FIVE SIXTHS DISHCUNEIFORM NUMERIC" + + " SIGN ONE THIRD VARIANT FORM ACUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT " + + "FORM ACUNEIFORM NUMERIC SIGN ONE EIGHTH ASHCUNEIFORM NUMERIC SIGN ONE QU" + + "ARTER ASHCUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTHCUNEIFORM NUMERIC " + + "SIGN OLD ASSYRIAN ONE QUARTERCUNEIFORM NUMERIC SIGN ONE QUARTER GURCUNEI" + + "FORM NUMERIC SIGN ONE HALF GURCUNEIFORM NUMERIC SIGN ELAMITE ONE THIRDCU") + ("" + + "NEIFORM NUMERIC SIGN ELAMITE TWO THIRDSCUNEIFORM NUMERIC SIGN ELAMITE FO" + + "RTYCUNEIFORM NUMERIC SIGN ELAMITE FIFTYCUNEIFORM NUMERIC SIGN FOUR U VAR" + + "IANT FORMCUNEIFORM NUMERIC SIGN FIVE U VARIANT FORMCUNEIFORM NUMERIC SIG" + + "N SIX U VARIANT FORMCUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORMCUNEIFORM" + + " NUMERIC SIGN EIGHT U VARIANT FORMCUNEIFORM NUMERIC SIGN NINE U VARIANT " + + "FORMCUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDERCUNEIFORM PUNCTU" + + "ATION SIGN VERTICAL COLONCUNEIFORM PUNCTUATION SIGN DIAGONAL COLONCUNEIF" + + "ORM PUNCTUATION SIGN DIAGONAL TRICOLONCUNEIFORM PUNCTUATION SIGN DIAGONA" + + "L QUADCOLONCUNEIFORM SIGN AB TIMES NUN TENUCUNEIFORM SIGN AB TIMES SHU2C" + + "UNEIFORM SIGN AD TIMES ESH2CUNEIFORM SIGN BAD TIMES DISH TENUCUNEIFORM S" + + "IGN BAHAR2 TIMES AB2CUNEIFORM SIGN BAHAR2 TIMES NICUNEIFORM SIGN BAHAR2 " + + "TIMES ZACUNEIFORM SIGN BU OVER BU TIMES NA2CUNEIFORM SIGN DA TIMES TAK4C" + + "UNEIFORM SIGN DAG TIMES KURCUNEIFORM SIGN DIM TIMES IGICUNEIFORM SIGN DI" + + "M TIMES U U UCUNEIFORM SIGN DIM2 TIMES UDCUNEIFORM SIGN DUG TIMES ANSHEC" + + "UNEIFORM SIGN DUG TIMES ASHCUNEIFORM SIGN DUG TIMES ASH AT LEFTCUNEIFORM" + + " SIGN DUG TIMES DINCUNEIFORM SIGN DUG TIMES DUNCUNEIFORM SIGN DUG TIMES " + + "ERIN2CUNEIFORM SIGN DUG TIMES GACUNEIFORM SIGN DUG TIMES GICUNEIFORM SIG" + + "N DUG TIMES GIR2 GUNUCUNEIFORM SIGN DUG TIMES GISHCUNEIFORM SIGN DUG TIM" + + "ES HACUNEIFORM SIGN DUG TIMES HICUNEIFORM SIGN DUG TIMES IGI GUNUCUNEIFO" + + "RM SIGN DUG TIMES KASKALCUNEIFORM SIGN DUG TIMES KURCUNEIFORM SIGN DUG T" + + "IMES KUSHU2CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKALCUNEIFORM SIGN DUG" + + " TIMES LAK-020CUNEIFORM SIGN DUG TIMES LAMCUNEIFORM SIGN DUG TIMES LAM T" + + "IMES KURCUNEIFORM SIGN DUG TIMES LUH PLUS GISHCUNEIFORM SIGN DUG TIMES M" + + "ASHCUNEIFORM SIGN DUG TIMES MESCUNEIFORM SIGN DUG TIMES MICUNEIFORM SIGN" + + " DUG TIMES NICUNEIFORM SIGN DUG TIMES PICUNEIFORM SIGN DUG TIMES SHECUNE" + + "IFORM SIGN DUG TIMES SI GUNUCUNEIFORM SIGN E2 TIMES KURCUNEIFORM SIGN E2" + + " TIMES PAPCUNEIFORM SIGN ERIN2 XCUNEIFORM SIGN ESH2 CROSSING ESH2CUNEIFO" + + "RM SIGN EZEN SHESHIG TIMES ASHCUNEIFORM SIGN EZEN SHESHIG TIMES HICUNEIF" + + "ORM SIGN EZEN SHESHIG TIMES IGI GUNUCUNEIFORM SIGN EZEN SHESHIG TIMES LA" + + "CUNEIFORM SIGN EZEN SHESHIG TIMES LALCUNEIFORM SIGN EZEN SHESHIG TIMES M" + + "ECUNEIFORM SIGN EZEN SHESHIG TIMES MESCUNEIFORM SIGN EZEN SHESHIG TIMES " + + "SUCUNEIFORM SIGN EZEN TIMES SUCUNEIFORM SIGN GA2 TIMES BAHAR2CUNEIFORM S" + + "IGN GA2 TIMES DIM GUNUCUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNUCUNEIFO" + + "RM SIGN GA2 TIMES DUG TIMES KASKALCUNEIFORM SIGN GA2 TIMES ERENCUNEIFORM" + + " SIGN GA2 TIMES GACUNEIFORM SIGN GA2 TIMES GAR PLUS DICUNEIFORM SIGN GA2" + + " TIMES GAR PLUS NECUNEIFORM SIGN GA2 TIMES HA PLUS ACUNEIFORM SIGN GA2 T" + + "IMES KUSHU2 PLUS KASKALCUNEIFORM SIGN GA2 TIMES LAMCUNEIFORM SIGN GA2 TI" + + "MES LAM TIMES KURCUNEIFORM SIGN GA2 TIMES LUHCUNEIFORM SIGN GA2 TIMES MU" + + "SHCUNEIFORM SIGN GA2 TIMES NECUNEIFORM SIGN GA2 TIMES NE PLUS E2CUNEIFOR" + + "M SIGN GA2 TIMES NE PLUS GICUNEIFORM SIGN GA2 TIMES SHIMCUNEIFORM SIGN G" + + "A2 TIMES ZIZ2CUNEIFORM SIGN GABA ROTATED NINETY DEGREESCUNEIFORM SIGN GE" + + "SHTIN TIMES UCUNEIFORM SIGN GISH TIMES GISH CROSSING GISHCUNEIFORM SIGN " + + "GU2 TIMES IGI GUNUCUNEIFORM SIGN GUD PLUS GISH TIMES TAK4CUNEIFORM SIGN " + + "HA TENU GUNUCUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASHCUNEIFORM SIGN " + + "KA TIMES BUCUNEIFORM SIGN KA TIMES KACUNEIFORM SIGN KA TIMES U U UCUNEIF" + + "ORM SIGN KA TIMES URCUNEIFORM SIGN LAGAB TIMES ZU OVER ZUCUNEIFORM SIGN " + + "LAK-003CUNEIFORM SIGN LAK-021CUNEIFORM SIGN LAK-025CUNEIFORM SIGN LAK-03" + + "0CUNEIFORM SIGN LAK-050CUNEIFORM SIGN LAK-051CUNEIFORM SIGN LAK-062CUNEI" + + "FORM SIGN LAK-079 OVER LAK-079 GUNUCUNEIFORM SIGN LAK-080CUNEIFORM SIGN " + + "LAK-081 OVER LAK-081CUNEIFORM SIGN LAK-092CUNEIFORM SIGN LAK-130CUNEIFOR" + + "M SIGN LAK-142CUNEIFORM SIGN LAK-210CUNEIFORM SIGN LAK-219CUNEIFORM SIGN" + + " LAK-220CUNEIFORM SIGN LAK-225CUNEIFORM SIGN LAK-228CUNEIFORM SIGN LAK-2" + + "38CUNEIFORM SIGN LAK-265CUNEIFORM SIGN LAK-266CUNEIFORM SIGN LAK-343CUNE" + + "IFORM SIGN LAK-347CUNEIFORM SIGN LAK-348CUNEIFORM SIGN LAK-383CUNEIFORM " + + "SIGN LAK-384CUNEIFORM SIGN LAK-390CUNEIFORM SIGN LAK-441CUNEIFORM SIGN L" + + "AK-449CUNEIFORM SIGN LAK-449 TIMES GUCUNEIFORM SIGN LAK-449 TIMES IGICUN" + + "EIFORM SIGN LAK-449 TIMES PAP PLUS LU3CUNEIFORM SIGN LAK-449 TIMES PAP P" + + "LUS PAP PLUS LU3CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BACUNEIFORM SIGN LA" + + "K-450CUNEIFORM SIGN LAK-457CUNEIFORM SIGN LAK-470CUNEIFORM SIGN LAK-483C" + + "UNEIFORM SIGN LAK-490CUNEIFORM SIGN LAK-492CUNEIFORM SIGN LAK-493CUNEIFO" + + "RM SIGN LAK-495CUNEIFORM SIGN LAK-550CUNEIFORM SIGN LAK-608CUNEIFORM SIG" + + "N LAK-617CUNEIFORM SIGN LAK-617 TIMES ASHCUNEIFORM SIGN LAK-617 TIMES BA" + + "DCUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNUCUNEIFORM SIGN LAK-617 TIMES" + + " KU3CUNEIFORM SIGN LAK-617 TIMES LACUNEIFORM SIGN LAK-617 TIMES TARCUNEI") + ("" + + "FORM SIGN LAK-617 TIMES TECUNEIFORM SIGN LAK-617 TIMES U2CUNEIFORM SIGN " + + "LAK-617 TIMES UDCUNEIFORM SIGN LAK-617 TIMES URUDACUNEIFORM SIGN LAK-636" + + "CUNEIFORM SIGN LAK-648CUNEIFORM SIGN LAK-648 TIMES DUBCUNEIFORM SIGN LAK" + + "-648 TIMES GACUNEIFORM SIGN LAK-648 TIMES IGICUNEIFORM SIGN LAK-648 TIME" + + "S IGI GUNUCUNEIFORM SIGN LAK-648 TIMES NICUNEIFORM SIGN LAK-648 TIMES PA" + + "P PLUS PAP PLUS LU3CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KICUNEIFORM S" + + "IGN LAK-648 TIMES UDCUNEIFORM SIGN LAK-648 TIMES URUDACUNEIFORM SIGN LAK" + + "-724CUNEIFORM SIGN LAK-749CUNEIFORM SIGN LU2 GUNU TIMES ASHCUNEIFORM SIG" + + "N LU2 TIMES DISHCUNEIFORM SIGN LU2 TIMES HALCUNEIFORM SIGN LU2 TIMES PAP" + + "CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3CUNEIFORM SIGN LU2 TIMES T" + + "AK4CUNEIFORM SIGN MI PLUS ZA7CUNEIFORM SIGN MUSH OVER MUSH TIMES GACUNEI" + + "FORM SIGN MUSH OVER MUSH TIMES KAKCUNEIFORM SIGN NINDA2 TIMES DIM GUNUCU" + + "NEIFORM SIGN NINDA2 TIMES GISHCUNEIFORM SIGN NINDA2 TIMES GULCUNEIFORM S" + + "IGN NINDA2 TIMES HICUNEIFORM SIGN NINDA2 TIMES KESH2CUNEIFORM SIGN NINDA" + + "2 TIMES LAK-050CUNEIFORM SIGN NINDA2 TIMES MASHCUNEIFORM SIGN NINDA2 TIM" + + "ES PAP PLUS PAPCUNEIFORM SIGN NINDA2 TIMES UCUNEIFORM SIGN NINDA2 TIMES " + + "U PLUS UCUNEIFORM SIGN NINDA2 TIMES URUDACUNEIFORM SIGN SAG GUNU TIMES H" + + "ACUNEIFORM SIGN SAG TIMES ENCUNEIFORM SIGN SAG TIMES SHE AT LEFTCUNEIFOR" + + "M SIGN SAG TIMES TAK4CUNEIFORM SIGN SHA6 TENUCUNEIFORM SIGN SHE OVER SHE" + + "CUNEIFORM SIGN SHE PLUS HUB2CUNEIFORM SIGN SHE PLUS NAM2CUNEIFORM SIGN S" + + "HE PLUS SARCUNEIFORM SIGN SHU2 PLUS DUG TIMES NICUNEIFORM SIGN SHU2 PLUS" + + " E2 TIMES ANCUNEIFORM SIGN SI TIMES TAK4CUNEIFORM SIGN TAK4 PLUS SAGCUNE" + + "IFORM SIGN TUM TIMES GAN2 TENUCUNEIFORM SIGN TUM TIMES THREE DISHCUNEIFO" + + "RM SIGN UR2 INVERTEDCUNEIFORM SIGN UR2 TIMES UDCUNEIFORM SIGN URU TIMES " + + "DARA3CUNEIFORM SIGN URU TIMES LAK-668CUNEIFORM SIGN URU TIMES LU3CUNEIFO" + + "RM SIGN ZA7CUNEIFORM SIGN ZU OVER ZU PLUS SARCUNEIFORM SIGN ZU5 TIMES TH" + + "REE DISH TENUEGYPTIAN HIEROGLYPH A001EGYPTIAN HIEROGLYPH A002EGYPTIAN HI" + + "EROGLYPH A003EGYPTIAN HIEROGLYPH A004EGYPTIAN HIEROGLYPH A005EGYPTIAN HI" + + "EROGLYPH A005AEGYPTIAN HIEROGLYPH A006EGYPTIAN HIEROGLYPH A006AEGYPTIAN " + + "HIEROGLYPH A006BEGYPTIAN HIEROGLYPH A007EGYPTIAN HIEROGLYPH A008EGYPTIAN" + + " HIEROGLYPH A009EGYPTIAN HIEROGLYPH A010EGYPTIAN HIEROGLYPH A011EGYPTIAN" + + " HIEROGLYPH A012EGYPTIAN HIEROGLYPH A013EGYPTIAN HIEROGLYPH A014EGYPTIAN" + + " HIEROGLYPH A014AEGYPTIAN HIEROGLYPH A015EGYPTIAN HIEROGLYPH A016EGYPTIA" + + "N HIEROGLYPH A017EGYPTIAN HIEROGLYPH A017AEGYPTIAN HIEROGLYPH A018EGYPTI" + + "AN HIEROGLYPH A019EGYPTIAN HIEROGLYPH A020EGYPTIAN HIEROGLYPH A021EGYPTI" + + "AN HIEROGLYPH A022EGYPTIAN HIEROGLYPH A023EGYPTIAN HIEROGLYPH A024EGYPTI" + + "AN HIEROGLYPH A025EGYPTIAN HIEROGLYPH A026EGYPTIAN HIEROGLYPH A027EGYPTI" + + "AN HIEROGLYPH A028EGYPTIAN HIEROGLYPH A029EGYPTIAN HIEROGLYPH A030EGYPTI" + + "AN HIEROGLYPH A031EGYPTIAN HIEROGLYPH A032EGYPTIAN HIEROGLYPH A032AEGYPT" + + "IAN HIEROGLYPH A033EGYPTIAN HIEROGLYPH A034EGYPTIAN HIEROGLYPH A035EGYPT" + + "IAN HIEROGLYPH A036EGYPTIAN HIEROGLYPH A037EGYPTIAN HIEROGLYPH A038EGYPT" + + "IAN HIEROGLYPH A039EGYPTIAN HIEROGLYPH A040EGYPTIAN HIEROGLYPH A040AEGYP" + + "TIAN HIEROGLYPH A041EGYPTIAN HIEROGLYPH A042EGYPTIAN HIEROGLYPH A042AEGY" + + "PTIAN HIEROGLYPH A043EGYPTIAN HIEROGLYPH A043AEGYPTIAN HIEROGLYPH A044EG" + + "YPTIAN HIEROGLYPH A045EGYPTIAN HIEROGLYPH A045AEGYPTIAN HIEROGLYPH A046E" + + "GYPTIAN HIEROGLYPH A047EGYPTIAN HIEROGLYPH A048EGYPTIAN HIEROGLYPH A049E" + + "GYPTIAN HIEROGLYPH A050EGYPTIAN HIEROGLYPH A051EGYPTIAN HIEROGLYPH A052E" + + "GYPTIAN HIEROGLYPH A053EGYPTIAN HIEROGLYPH A054EGYPTIAN HIEROGLYPH A055E" + + "GYPTIAN HIEROGLYPH A056EGYPTIAN HIEROGLYPH A057EGYPTIAN HIEROGLYPH A058E" + + "GYPTIAN HIEROGLYPH A059EGYPTIAN HIEROGLYPH A060EGYPTIAN HIEROGLYPH A061E" + + "GYPTIAN HIEROGLYPH A062EGYPTIAN HIEROGLYPH A063EGYPTIAN HIEROGLYPH A064E" + + "GYPTIAN HIEROGLYPH A065EGYPTIAN HIEROGLYPH A066EGYPTIAN HIEROGLYPH A067E" + + "GYPTIAN HIEROGLYPH A068EGYPTIAN HIEROGLYPH A069EGYPTIAN HIEROGLYPH A070E" + + "GYPTIAN HIEROGLYPH B001EGYPTIAN HIEROGLYPH B002EGYPTIAN HIEROGLYPH B003E" + + "GYPTIAN HIEROGLYPH B004EGYPTIAN HIEROGLYPH B005EGYPTIAN HIEROGLYPH B005A" + + "EGYPTIAN HIEROGLYPH B006EGYPTIAN HIEROGLYPH B007EGYPTIAN HIEROGLYPH B008" + + "EGYPTIAN HIEROGLYPH B009EGYPTIAN HIEROGLYPH C001EGYPTIAN HIEROGLYPH C002" + + "EGYPTIAN HIEROGLYPH C002AEGYPTIAN HIEROGLYPH C002BEGYPTIAN HIEROGLYPH C0" + + "02CEGYPTIAN HIEROGLYPH C003EGYPTIAN HIEROGLYPH C004EGYPTIAN HIEROGLYPH C" + + "005EGYPTIAN HIEROGLYPH C006EGYPTIAN HIEROGLYPH C007EGYPTIAN HIEROGLYPH C" + + "008EGYPTIAN HIEROGLYPH C009EGYPTIAN HIEROGLYPH C010EGYPTIAN HIEROGLYPH C" + + "010AEGYPTIAN HIEROGLYPH C011EGYPTIAN HIEROGLYPH C012EGYPTIAN HIEROGLYPH " + + "C013EGYPTIAN HIEROGLYPH C014EGYPTIAN HIEROGLYPH C015EGYPTIAN HIEROGLYPH " + + "C016EGYPTIAN HIEROGLYPH C017EGYPTIAN HIEROGLYPH C018EGYPTIAN HIEROGLYPH ") + ("" + + "C019EGYPTIAN HIEROGLYPH C020EGYPTIAN HIEROGLYPH C021EGYPTIAN HIEROGLYPH " + + "C022EGYPTIAN HIEROGLYPH C023EGYPTIAN HIEROGLYPH C024EGYPTIAN HIEROGLYPH " + + "D001EGYPTIAN HIEROGLYPH D002EGYPTIAN HIEROGLYPH D003EGYPTIAN HIEROGLYPH " + + "D004EGYPTIAN HIEROGLYPH D005EGYPTIAN HIEROGLYPH D006EGYPTIAN HIEROGLYPH " + + "D007EGYPTIAN HIEROGLYPH D008EGYPTIAN HIEROGLYPH D008AEGYPTIAN HIEROGLYPH" + + " D009EGYPTIAN HIEROGLYPH D010EGYPTIAN HIEROGLYPH D011EGYPTIAN HIEROGLYPH" + + " D012EGYPTIAN HIEROGLYPH D013EGYPTIAN HIEROGLYPH D014EGYPTIAN HIEROGLYPH" + + " D015EGYPTIAN HIEROGLYPH D016EGYPTIAN HIEROGLYPH D017EGYPTIAN HIEROGLYPH" + + " D018EGYPTIAN HIEROGLYPH D019EGYPTIAN HIEROGLYPH D020EGYPTIAN HIEROGLYPH" + + " D021EGYPTIAN HIEROGLYPH D022EGYPTIAN HIEROGLYPH D023EGYPTIAN HIEROGLYPH" + + " D024EGYPTIAN HIEROGLYPH D025EGYPTIAN HIEROGLYPH D026EGYPTIAN HIEROGLYPH" + + " D027EGYPTIAN HIEROGLYPH D027AEGYPTIAN HIEROGLYPH D028EGYPTIAN HIEROGLYP" + + "H D029EGYPTIAN HIEROGLYPH D030EGYPTIAN HIEROGLYPH D031EGYPTIAN HIEROGLYP" + + "H D031AEGYPTIAN HIEROGLYPH D032EGYPTIAN HIEROGLYPH D033EGYPTIAN HIEROGLY" + + "PH D034EGYPTIAN HIEROGLYPH D034AEGYPTIAN HIEROGLYPH D035EGYPTIAN HIEROGL" + + "YPH D036EGYPTIAN HIEROGLYPH D037EGYPTIAN HIEROGLYPH D038EGYPTIAN HIEROGL" + + "YPH D039EGYPTIAN HIEROGLYPH D040EGYPTIAN HIEROGLYPH D041EGYPTIAN HIEROGL" + + "YPH D042EGYPTIAN HIEROGLYPH D043EGYPTIAN HIEROGLYPH D044EGYPTIAN HIEROGL" + + "YPH D045EGYPTIAN HIEROGLYPH D046EGYPTIAN HIEROGLYPH D046AEGYPTIAN HIEROG" + + "LYPH D047EGYPTIAN HIEROGLYPH D048EGYPTIAN HIEROGLYPH D048AEGYPTIAN HIERO" + + "GLYPH D049EGYPTIAN HIEROGLYPH D050EGYPTIAN HIEROGLYPH D050AEGYPTIAN HIER" + + "OGLYPH D050BEGYPTIAN HIEROGLYPH D050CEGYPTIAN HIEROGLYPH D050DEGYPTIAN H" + + "IEROGLYPH D050EEGYPTIAN HIEROGLYPH D050FEGYPTIAN HIEROGLYPH D050GEGYPTIA" + + "N HIEROGLYPH D050HEGYPTIAN HIEROGLYPH D050IEGYPTIAN HIEROGLYPH D051EGYPT" + + "IAN HIEROGLYPH D052EGYPTIAN HIEROGLYPH D052AEGYPTIAN HIEROGLYPH D053EGYP" + + "TIAN HIEROGLYPH D054EGYPTIAN HIEROGLYPH D054AEGYPTIAN HIEROGLYPH D055EGY" + + "PTIAN HIEROGLYPH D056EGYPTIAN HIEROGLYPH D057EGYPTIAN HIEROGLYPH D058EGY" + + "PTIAN HIEROGLYPH D059EGYPTIAN HIEROGLYPH D060EGYPTIAN HIEROGLYPH D061EGY" + + "PTIAN HIEROGLYPH D062EGYPTIAN HIEROGLYPH D063EGYPTIAN HIEROGLYPH D064EGY" + + "PTIAN HIEROGLYPH D065EGYPTIAN HIEROGLYPH D066EGYPTIAN HIEROGLYPH D067EGY" + + "PTIAN HIEROGLYPH D067AEGYPTIAN HIEROGLYPH D067BEGYPTIAN HIEROGLYPH D067C" + + "EGYPTIAN HIEROGLYPH D067DEGYPTIAN HIEROGLYPH D067EEGYPTIAN HIEROGLYPH D0" + + "67FEGYPTIAN HIEROGLYPH D067GEGYPTIAN HIEROGLYPH D067HEGYPTIAN HIEROGLYPH" + + " E001EGYPTIAN HIEROGLYPH E002EGYPTIAN HIEROGLYPH E003EGYPTIAN HIEROGLYPH" + + " E004EGYPTIAN HIEROGLYPH E005EGYPTIAN HIEROGLYPH E006EGYPTIAN HIEROGLYPH" + + " E007EGYPTIAN HIEROGLYPH E008EGYPTIAN HIEROGLYPH E008AEGYPTIAN HIEROGLYP" + + "H E009EGYPTIAN HIEROGLYPH E009AEGYPTIAN HIEROGLYPH E010EGYPTIAN HIEROGLY" + + "PH E011EGYPTIAN HIEROGLYPH E012EGYPTIAN HIEROGLYPH E013EGYPTIAN HIEROGLY" + + "PH E014EGYPTIAN HIEROGLYPH E015EGYPTIAN HIEROGLYPH E016EGYPTIAN HIEROGLY" + + "PH E016AEGYPTIAN HIEROGLYPH E017EGYPTIAN HIEROGLYPH E017AEGYPTIAN HIEROG" + + "LYPH E018EGYPTIAN HIEROGLYPH E019EGYPTIAN HIEROGLYPH E020EGYPTIAN HIEROG" + + "LYPH E020AEGYPTIAN HIEROGLYPH E021EGYPTIAN HIEROGLYPH E022EGYPTIAN HIERO" + + "GLYPH E023EGYPTIAN HIEROGLYPH E024EGYPTIAN HIEROGLYPH E025EGYPTIAN HIERO" + + "GLYPH E026EGYPTIAN HIEROGLYPH E027EGYPTIAN HIEROGLYPH E028EGYPTIAN HIERO" + + "GLYPH E028AEGYPTIAN HIEROGLYPH E029EGYPTIAN HIEROGLYPH E030EGYPTIAN HIER" + + "OGLYPH E031EGYPTIAN HIEROGLYPH E032EGYPTIAN HIEROGLYPH E033EGYPTIAN HIER" + + "OGLYPH E034EGYPTIAN HIEROGLYPH E034AEGYPTIAN HIEROGLYPH E036EGYPTIAN HIE" + + "ROGLYPH E037EGYPTIAN HIEROGLYPH E038EGYPTIAN HIEROGLYPH F001EGYPTIAN HIE" + + "ROGLYPH F001AEGYPTIAN HIEROGLYPH F002EGYPTIAN HIEROGLYPH F003EGYPTIAN HI" + + "EROGLYPH F004EGYPTIAN HIEROGLYPH F005EGYPTIAN HIEROGLYPH F006EGYPTIAN HI" + + "EROGLYPH F007EGYPTIAN HIEROGLYPH F008EGYPTIAN HIEROGLYPH F009EGYPTIAN HI" + + "EROGLYPH F010EGYPTIAN HIEROGLYPH F011EGYPTIAN HIEROGLYPH F012EGYPTIAN HI" + + "EROGLYPH F013EGYPTIAN HIEROGLYPH F013AEGYPTIAN HIEROGLYPH F014EGYPTIAN H" + + "IEROGLYPH F015EGYPTIAN HIEROGLYPH F016EGYPTIAN HIEROGLYPH F017EGYPTIAN H" + + "IEROGLYPH F018EGYPTIAN HIEROGLYPH F019EGYPTIAN HIEROGLYPH F020EGYPTIAN H" + + "IEROGLYPH F021EGYPTIAN HIEROGLYPH F021AEGYPTIAN HIEROGLYPH F022EGYPTIAN " + + "HIEROGLYPH F023EGYPTIAN HIEROGLYPH F024EGYPTIAN HIEROGLYPH F025EGYPTIAN " + + "HIEROGLYPH F026EGYPTIAN HIEROGLYPH F027EGYPTIAN HIEROGLYPH F028EGYPTIAN " + + "HIEROGLYPH F029EGYPTIAN HIEROGLYPH F030EGYPTIAN HIEROGLYPH F031EGYPTIAN " + + "HIEROGLYPH F031AEGYPTIAN HIEROGLYPH F032EGYPTIAN HIEROGLYPH F033EGYPTIAN" + + " HIEROGLYPH F034EGYPTIAN HIEROGLYPH F035EGYPTIAN HIEROGLYPH F036EGYPTIAN" + + " HIEROGLYPH F037EGYPTIAN HIEROGLYPH F037AEGYPTIAN HIEROGLYPH F038EGYPTIA" + + "N HIEROGLYPH F038AEGYPTIAN HIEROGLYPH F039EGYPTIAN HIEROGLYPH F040EGYPTI" + + "AN HIEROGLYPH F041EGYPTIAN HIEROGLYPH F042EGYPTIAN HIEROGLYPH F043EGYPTI") + ("" + + "AN HIEROGLYPH F044EGYPTIAN HIEROGLYPH F045EGYPTIAN HIEROGLYPH F045AEGYPT" + + "IAN HIEROGLYPH F046EGYPTIAN HIEROGLYPH F046AEGYPTIAN HIEROGLYPH F047EGYP" + + "TIAN HIEROGLYPH F047AEGYPTIAN HIEROGLYPH F048EGYPTIAN HIEROGLYPH F049EGY" + + "PTIAN HIEROGLYPH F050EGYPTIAN HIEROGLYPH F051EGYPTIAN HIEROGLYPH F051AEG" + + "YPTIAN HIEROGLYPH F051BEGYPTIAN HIEROGLYPH F051CEGYPTIAN HIEROGLYPH F052" + + "EGYPTIAN HIEROGLYPH F053EGYPTIAN HIEROGLYPH G001EGYPTIAN HIEROGLYPH G002" + + "EGYPTIAN HIEROGLYPH G003EGYPTIAN HIEROGLYPH G004EGYPTIAN HIEROGLYPH G005" + + "EGYPTIAN HIEROGLYPH G006EGYPTIAN HIEROGLYPH G006AEGYPTIAN HIEROGLYPH G00" + + "7EGYPTIAN HIEROGLYPH G007AEGYPTIAN HIEROGLYPH G007BEGYPTIAN HIEROGLYPH G" + + "008EGYPTIAN HIEROGLYPH G009EGYPTIAN HIEROGLYPH G010EGYPTIAN HIEROGLYPH G" + + "011EGYPTIAN HIEROGLYPH G011AEGYPTIAN HIEROGLYPH G012EGYPTIAN HIEROGLYPH " + + "G013EGYPTIAN HIEROGLYPH G014EGYPTIAN HIEROGLYPH G015EGYPTIAN HIEROGLYPH " + + "G016EGYPTIAN HIEROGLYPH G017EGYPTIAN HIEROGLYPH G018EGYPTIAN HIEROGLYPH " + + "G019EGYPTIAN HIEROGLYPH G020EGYPTIAN HIEROGLYPH G020AEGYPTIAN HIEROGLYPH" + + " G021EGYPTIAN HIEROGLYPH G022EGYPTIAN HIEROGLYPH G023EGYPTIAN HIEROGLYPH" + + " G024EGYPTIAN HIEROGLYPH G025EGYPTIAN HIEROGLYPH G026EGYPTIAN HIEROGLYPH" + + " G026AEGYPTIAN HIEROGLYPH G027EGYPTIAN HIEROGLYPH G028EGYPTIAN HIEROGLYP" + + "H G029EGYPTIAN HIEROGLYPH G030EGYPTIAN HIEROGLYPH G031EGYPTIAN HIEROGLYP" + + "H G032EGYPTIAN HIEROGLYPH G033EGYPTIAN HIEROGLYPH G034EGYPTIAN HIEROGLYP" + + "H G035EGYPTIAN HIEROGLYPH G036EGYPTIAN HIEROGLYPH G036AEGYPTIAN HIEROGLY" + + "PH G037EGYPTIAN HIEROGLYPH G037AEGYPTIAN HIEROGLYPH G038EGYPTIAN HIEROGL" + + "YPH G039EGYPTIAN HIEROGLYPH G040EGYPTIAN HIEROGLYPH G041EGYPTIAN HIEROGL" + + "YPH G042EGYPTIAN HIEROGLYPH G043EGYPTIAN HIEROGLYPH G043AEGYPTIAN HIEROG" + + "LYPH G044EGYPTIAN HIEROGLYPH G045EGYPTIAN HIEROGLYPH G045AEGYPTIAN HIERO" + + "GLYPH G046EGYPTIAN HIEROGLYPH G047EGYPTIAN HIEROGLYPH G048EGYPTIAN HIERO" + + "GLYPH G049EGYPTIAN HIEROGLYPH G050EGYPTIAN HIEROGLYPH G051EGYPTIAN HIERO" + + "GLYPH G052EGYPTIAN HIEROGLYPH G053EGYPTIAN HIEROGLYPH G054EGYPTIAN HIERO" + + "GLYPH H001EGYPTIAN HIEROGLYPH H002EGYPTIAN HIEROGLYPH H003EGYPTIAN HIERO" + + "GLYPH H004EGYPTIAN HIEROGLYPH H005EGYPTIAN HIEROGLYPH H006EGYPTIAN HIERO" + + "GLYPH H006AEGYPTIAN HIEROGLYPH H007EGYPTIAN HIEROGLYPH H008EGYPTIAN HIER" + + "OGLYPH I001EGYPTIAN HIEROGLYPH I002EGYPTIAN HIEROGLYPH I003EGYPTIAN HIER" + + "OGLYPH I004EGYPTIAN HIEROGLYPH I005EGYPTIAN HIEROGLYPH I005AEGYPTIAN HIE" + + "ROGLYPH I006EGYPTIAN HIEROGLYPH I007EGYPTIAN HIEROGLYPH I008EGYPTIAN HIE" + + "ROGLYPH I009EGYPTIAN HIEROGLYPH I009AEGYPTIAN HIEROGLYPH I010EGYPTIAN HI" + + "EROGLYPH I010AEGYPTIAN HIEROGLYPH I011EGYPTIAN HIEROGLYPH I011AEGYPTIAN " + + "HIEROGLYPH I012EGYPTIAN HIEROGLYPH I013EGYPTIAN HIEROGLYPH I014EGYPTIAN " + + "HIEROGLYPH I015EGYPTIAN HIEROGLYPH K001EGYPTIAN HIEROGLYPH K002EGYPTIAN " + + "HIEROGLYPH K003EGYPTIAN HIEROGLYPH K004EGYPTIAN HIEROGLYPH K005EGYPTIAN " + + "HIEROGLYPH K006EGYPTIAN HIEROGLYPH K007EGYPTIAN HIEROGLYPH K008EGYPTIAN " + + "HIEROGLYPH L001EGYPTIAN HIEROGLYPH L002EGYPTIAN HIEROGLYPH L002AEGYPTIAN" + + " HIEROGLYPH L003EGYPTIAN HIEROGLYPH L004EGYPTIAN HIEROGLYPH L005EGYPTIAN" + + " HIEROGLYPH L006EGYPTIAN HIEROGLYPH L006AEGYPTIAN HIEROGLYPH L007EGYPTIA" + + "N HIEROGLYPH L008EGYPTIAN HIEROGLYPH M001EGYPTIAN HIEROGLYPH M001AEGYPTI" + + "AN HIEROGLYPH M001BEGYPTIAN HIEROGLYPH M002EGYPTIAN HIEROGLYPH M003EGYPT" + + "IAN HIEROGLYPH M003AEGYPTIAN HIEROGLYPH M004EGYPTIAN HIEROGLYPH M005EGYP" + + "TIAN HIEROGLYPH M006EGYPTIAN HIEROGLYPH M007EGYPTIAN HIEROGLYPH M008EGYP" + + "TIAN HIEROGLYPH M009EGYPTIAN HIEROGLYPH M010EGYPTIAN HIEROGLYPH M010AEGY" + + "PTIAN HIEROGLYPH M011EGYPTIAN HIEROGLYPH M012EGYPTIAN HIEROGLYPH M012AEG" + + "YPTIAN HIEROGLYPH M012BEGYPTIAN HIEROGLYPH M012CEGYPTIAN HIEROGLYPH M012" + + "DEGYPTIAN HIEROGLYPH M012EEGYPTIAN HIEROGLYPH M012FEGYPTIAN HIEROGLYPH M" + + "012GEGYPTIAN HIEROGLYPH M012HEGYPTIAN HIEROGLYPH M013EGYPTIAN HIEROGLYPH" + + " M014EGYPTIAN HIEROGLYPH M015EGYPTIAN HIEROGLYPH M015AEGYPTIAN HIEROGLYP" + + "H M016EGYPTIAN HIEROGLYPH M016AEGYPTIAN HIEROGLYPH M017EGYPTIAN HIEROGLY" + + "PH M017AEGYPTIAN HIEROGLYPH M018EGYPTIAN HIEROGLYPH M019EGYPTIAN HIEROGL" + + "YPH M020EGYPTIAN HIEROGLYPH M021EGYPTIAN HIEROGLYPH M022EGYPTIAN HIEROGL" + + "YPH M022AEGYPTIAN HIEROGLYPH M023EGYPTIAN HIEROGLYPH M024EGYPTIAN HIEROG" + + "LYPH M024AEGYPTIAN HIEROGLYPH M025EGYPTIAN HIEROGLYPH M026EGYPTIAN HIERO" + + "GLYPH M027EGYPTIAN HIEROGLYPH M028EGYPTIAN HIEROGLYPH M028AEGYPTIAN HIER" + + "OGLYPH M029EGYPTIAN HIEROGLYPH M030EGYPTIAN HIEROGLYPH M031EGYPTIAN HIER" + + "OGLYPH M031AEGYPTIAN HIEROGLYPH M032EGYPTIAN HIEROGLYPH M033EGYPTIAN HIE" + + "ROGLYPH M033AEGYPTIAN HIEROGLYPH M033BEGYPTIAN HIEROGLYPH M034EGYPTIAN H" + + "IEROGLYPH M035EGYPTIAN HIEROGLYPH M036EGYPTIAN HIEROGLYPH M037EGYPTIAN H" + + "IEROGLYPH M038EGYPTIAN HIEROGLYPH M039EGYPTIAN HIEROGLYPH M040EGYPTIAN H" + + "IEROGLYPH M040AEGYPTIAN HIEROGLYPH M041EGYPTIAN HIEROGLYPH M042EGYPTIAN ") + ("" + + "HIEROGLYPH M043EGYPTIAN HIEROGLYPH M044EGYPTIAN HIEROGLYPH N001EGYPTIAN " + + "HIEROGLYPH N002EGYPTIAN HIEROGLYPH N003EGYPTIAN HIEROGLYPH N004EGYPTIAN " + + "HIEROGLYPH N005EGYPTIAN HIEROGLYPH N006EGYPTIAN HIEROGLYPH N007EGYPTIAN " + + "HIEROGLYPH N008EGYPTIAN HIEROGLYPH N009EGYPTIAN HIEROGLYPH N010EGYPTIAN " + + "HIEROGLYPH N011EGYPTIAN HIEROGLYPH N012EGYPTIAN HIEROGLYPH N013EGYPTIAN " + + "HIEROGLYPH N014EGYPTIAN HIEROGLYPH N015EGYPTIAN HIEROGLYPH N016EGYPTIAN " + + "HIEROGLYPH N017EGYPTIAN HIEROGLYPH N018EGYPTIAN HIEROGLYPH N018AEGYPTIAN" + + " HIEROGLYPH N018BEGYPTIAN HIEROGLYPH N019EGYPTIAN HIEROGLYPH N020EGYPTIA" + + "N HIEROGLYPH N021EGYPTIAN HIEROGLYPH N022EGYPTIAN HIEROGLYPH N023EGYPTIA" + + "N HIEROGLYPH N024EGYPTIAN HIEROGLYPH N025EGYPTIAN HIEROGLYPH N025AEGYPTI" + + "AN HIEROGLYPH N026EGYPTIAN HIEROGLYPH N027EGYPTIAN HIEROGLYPH N028EGYPTI" + + "AN HIEROGLYPH N029EGYPTIAN HIEROGLYPH N030EGYPTIAN HIEROGLYPH N031EGYPTI" + + "AN HIEROGLYPH N032EGYPTIAN HIEROGLYPH N033EGYPTIAN HIEROGLYPH N033AEGYPT" + + "IAN HIEROGLYPH N034EGYPTIAN HIEROGLYPH N034AEGYPTIAN HIEROGLYPH N035EGYP" + + "TIAN HIEROGLYPH N035AEGYPTIAN HIEROGLYPH N036EGYPTIAN HIEROGLYPH N037EGY" + + "PTIAN HIEROGLYPH N037AEGYPTIAN HIEROGLYPH N038EGYPTIAN HIEROGLYPH N039EG" + + "YPTIAN HIEROGLYPH N040EGYPTIAN HIEROGLYPH N041EGYPTIAN HIEROGLYPH N042EG" + + "YPTIAN HIEROGLYPH NL001EGYPTIAN HIEROGLYPH NL002EGYPTIAN HIEROGLYPH NL00" + + "3EGYPTIAN HIEROGLYPH NL004EGYPTIAN HIEROGLYPH NL005EGYPTIAN HIEROGLYPH N" + + "L005AEGYPTIAN HIEROGLYPH NL006EGYPTIAN HIEROGLYPH NL007EGYPTIAN HIEROGLY" + + "PH NL008EGYPTIAN HIEROGLYPH NL009EGYPTIAN HIEROGLYPH NL010EGYPTIAN HIERO" + + "GLYPH NL011EGYPTIAN HIEROGLYPH NL012EGYPTIAN HIEROGLYPH NL013EGYPTIAN HI" + + "EROGLYPH NL014EGYPTIAN HIEROGLYPH NL015EGYPTIAN HIEROGLYPH NL016EGYPTIAN" + + " HIEROGLYPH NL017EGYPTIAN HIEROGLYPH NL017AEGYPTIAN HIEROGLYPH NL018EGYP" + + "TIAN HIEROGLYPH NL019EGYPTIAN HIEROGLYPH NL020EGYPTIAN HIEROGLYPH NU001E" + + "GYPTIAN HIEROGLYPH NU002EGYPTIAN HIEROGLYPH NU003EGYPTIAN HIEROGLYPH NU0" + + "04EGYPTIAN HIEROGLYPH NU005EGYPTIAN HIEROGLYPH NU006EGYPTIAN HIEROGLYPH " + + "NU007EGYPTIAN HIEROGLYPH NU008EGYPTIAN HIEROGLYPH NU009EGYPTIAN HIEROGLY" + + "PH NU010EGYPTIAN HIEROGLYPH NU010AEGYPTIAN HIEROGLYPH NU011EGYPTIAN HIER" + + "OGLYPH NU011AEGYPTIAN HIEROGLYPH NU012EGYPTIAN HIEROGLYPH NU013EGYPTIAN " + + "HIEROGLYPH NU014EGYPTIAN HIEROGLYPH NU015EGYPTIAN HIEROGLYPH NU016EGYPTI" + + "AN HIEROGLYPH NU017EGYPTIAN HIEROGLYPH NU018EGYPTIAN HIEROGLYPH NU018AEG" + + "YPTIAN HIEROGLYPH NU019EGYPTIAN HIEROGLYPH NU020EGYPTIAN HIEROGLYPH NU02" + + "1EGYPTIAN HIEROGLYPH NU022EGYPTIAN HIEROGLYPH NU022AEGYPTIAN HIEROGLYPH " + + "O001EGYPTIAN HIEROGLYPH O001AEGYPTIAN HIEROGLYPH O002EGYPTIAN HIEROGLYPH" + + " O003EGYPTIAN HIEROGLYPH O004EGYPTIAN HIEROGLYPH O005EGYPTIAN HIEROGLYPH" + + " O005AEGYPTIAN HIEROGLYPH O006EGYPTIAN HIEROGLYPH O006AEGYPTIAN HIEROGLY" + + "PH O006BEGYPTIAN HIEROGLYPH O006CEGYPTIAN HIEROGLYPH O006DEGYPTIAN HIERO" + + "GLYPH O006EEGYPTIAN HIEROGLYPH O006FEGYPTIAN HIEROGLYPH O007EGYPTIAN HIE" + + "ROGLYPH O008EGYPTIAN HIEROGLYPH O009EGYPTIAN HIEROGLYPH O010EGYPTIAN HIE" + + "ROGLYPH O010AEGYPTIAN HIEROGLYPH O010BEGYPTIAN HIEROGLYPH O010CEGYPTIAN " + + "HIEROGLYPH O011EGYPTIAN HIEROGLYPH O012EGYPTIAN HIEROGLYPH O013EGYPTIAN " + + "HIEROGLYPH O014EGYPTIAN HIEROGLYPH O015EGYPTIAN HIEROGLYPH O016EGYPTIAN " + + "HIEROGLYPH O017EGYPTIAN HIEROGLYPH O018EGYPTIAN HIEROGLYPH O019EGYPTIAN " + + "HIEROGLYPH O019AEGYPTIAN HIEROGLYPH O020EGYPTIAN HIEROGLYPH O020AEGYPTIA" + + "N HIEROGLYPH O021EGYPTIAN HIEROGLYPH O022EGYPTIAN HIEROGLYPH O023EGYPTIA" + + "N HIEROGLYPH O024EGYPTIAN HIEROGLYPH O024AEGYPTIAN HIEROGLYPH O025EGYPTI" + + "AN HIEROGLYPH O025AEGYPTIAN HIEROGLYPH O026EGYPTIAN HIEROGLYPH O027EGYPT" + + "IAN HIEROGLYPH O028EGYPTIAN HIEROGLYPH O029EGYPTIAN HIEROGLYPH O029AEGYP" + + "TIAN HIEROGLYPH O030EGYPTIAN HIEROGLYPH O030AEGYPTIAN HIEROGLYPH O031EGY" + + "PTIAN HIEROGLYPH O032EGYPTIAN HIEROGLYPH O033EGYPTIAN HIEROGLYPH O033AEG" + + "YPTIAN HIEROGLYPH O034EGYPTIAN HIEROGLYPH O035EGYPTIAN HIEROGLYPH O036EG" + + "YPTIAN HIEROGLYPH O036AEGYPTIAN HIEROGLYPH O036BEGYPTIAN HIEROGLYPH O036" + + "CEGYPTIAN HIEROGLYPH O036DEGYPTIAN HIEROGLYPH O037EGYPTIAN HIEROGLYPH O0" + + "38EGYPTIAN HIEROGLYPH O039EGYPTIAN HIEROGLYPH O040EGYPTIAN HIEROGLYPH O0" + + "41EGYPTIAN HIEROGLYPH O042EGYPTIAN HIEROGLYPH O043EGYPTIAN HIEROGLYPH O0" + + "44EGYPTIAN HIEROGLYPH O045EGYPTIAN HIEROGLYPH O046EGYPTIAN HIEROGLYPH O0" + + "47EGYPTIAN HIEROGLYPH O048EGYPTIAN HIEROGLYPH O049EGYPTIAN HIEROGLYPH O0" + + "50EGYPTIAN HIEROGLYPH O050AEGYPTIAN HIEROGLYPH O050BEGYPTIAN HIEROGLYPH " + + "O051EGYPTIAN HIEROGLYPH P001EGYPTIAN HIEROGLYPH P001AEGYPTIAN HIEROGLYPH" + + " P002EGYPTIAN HIEROGLYPH P003EGYPTIAN HIEROGLYPH P003AEGYPTIAN HIEROGLYP" + + "H P004EGYPTIAN HIEROGLYPH P005EGYPTIAN HIEROGLYPH P006EGYPTIAN HIEROGLYP" + + "H P007EGYPTIAN HIEROGLYPH P008EGYPTIAN HIEROGLYPH P009EGYPTIAN HIEROGLYP" + + "H P010EGYPTIAN HIEROGLYPH P011EGYPTIAN HIEROGLYPH Q001EGYPTIAN HIEROGLYP") + ("" + + "H Q002EGYPTIAN HIEROGLYPH Q003EGYPTIAN HIEROGLYPH Q004EGYPTIAN HIEROGLYP" + + "H Q005EGYPTIAN HIEROGLYPH Q006EGYPTIAN HIEROGLYPH Q007EGYPTIAN HIEROGLYP" + + "H R001EGYPTIAN HIEROGLYPH R002EGYPTIAN HIEROGLYPH R002AEGYPTIAN HIEROGLY" + + "PH R003EGYPTIAN HIEROGLYPH R003AEGYPTIAN HIEROGLYPH R003BEGYPTIAN HIEROG" + + "LYPH R004EGYPTIAN HIEROGLYPH R005EGYPTIAN HIEROGLYPH R006EGYPTIAN HIEROG" + + "LYPH R007EGYPTIAN HIEROGLYPH R008EGYPTIAN HIEROGLYPH R009EGYPTIAN HIEROG" + + "LYPH R010EGYPTIAN HIEROGLYPH R010AEGYPTIAN HIEROGLYPH R011EGYPTIAN HIERO" + + "GLYPH R012EGYPTIAN HIEROGLYPH R013EGYPTIAN HIEROGLYPH R014EGYPTIAN HIERO" + + "GLYPH R015EGYPTIAN HIEROGLYPH R016EGYPTIAN HIEROGLYPH R016AEGYPTIAN HIER" + + "OGLYPH R017EGYPTIAN HIEROGLYPH R018EGYPTIAN HIEROGLYPH R019EGYPTIAN HIER" + + "OGLYPH R020EGYPTIAN HIEROGLYPH R021EGYPTIAN HIEROGLYPH R022EGYPTIAN HIER" + + "OGLYPH R023EGYPTIAN HIEROGLYPH R024EGYPTIAN HIEROGLYPH R025EGYPTIAN HIER" + + "OGLYPH R026EGYPTIAN HIEROGLYPH R027EGYPTIAN HIEROGLYPH R028EGYPTIAN HIER" + + "OGLYPH R029EGYPTIAN HIEROGLYPH S001EGYPTIAN HIEROGLYPH S002EGYPTIAN HIER" + + "OGLYPH S002AEGYPTIAN HIEROGLYPH S003EGYPTIAN HIEROGLYPH S004EGYPTIAN HIE" + + "ROGLYPH S005EGYPTIAN HIEROGLYPH S006EGYPTIAN HIEROGLYPH S006AEGYPTIAN HI" + + "EROGLYPH S007EGYPTIAN HIEROGLYPH S008EGYPTIAN HIEROGLYPH S009EGYPTIAN HI" + + "EROGLYPH S010EGYPTIAN HIEROGLYPH S011EGYPTIAN HIEROGLYPH S012EGYPTIAN HI" + + "EROGLYPH S013EGYPTIAN HIEROGLYPH S014EGYPTIAN HIEROGLYPH S014AEGYPTIAN H" + + "IEROGLYPH S014BEGYPTIAN HIEROGLYPH S015EGYPTIAN HIEROGLYPH S016EGYPTIAN " + + "HIEROGLYPH S017EGYPTIAN HIEROGLYPH S017AEGYPTIAN HIEROGLYPH S018EGYPTIAN" + + " HIEROGLYPH S019EGYPTIAN HIEROGLYPH S020EGYPTIAN HIEROGLYPH S021EGYPTIAN" + + " HIEROGLYPH S022EGYPTIAN HIEROGLYPH S023EGYPTIAN HIEROGLYPH S024EGYPTIAN" + + " HIEROGLYPH S025EGYPTIAN HIEROGLYPH S026EGYPTIAN HIEROGLYPH S026AEGYPTIA" + + "N HIEROGLYPH S026BEGYPTIAN HIEROGLYPH S027EGYPTIAN HIEROGLYPH S028EGYPTI" + + "AN HIEROGLYPH S029EGYPTIAN HIEROGLYPH S030EGYPTIAN HIEROGLYPH S031EGYPTI" + + "AN HIEROGLYPH S032EGYPTIAN HIEROGLYPH S033EGYPTIAN HIEROGLYPH S034EGYPTI" + + "AN HIEROGLYPH S035EGYPTIAN HIEROGLYPH S035AEGYPTIAN HIEROGLYPH S036EGYPT" + + "IAN HIEROGLYPH S037EGYPTIAN HIEROGLYPH S038EGYPTIAN HIEROGLYPH S039EGYPT" + + "IAN HIEROGLYPH S040EGYPTIAN HIEROGLYPH S041EGYPTIAN HIEROGLYPH S042EGYPT" + + "IAN HIEROGLYPH S043EGYPTIAN HIEROGLYPH S044EGYPTIAN HIEROGLYPH S045EGYPT" + + "IAN HIEROGLYPH S046EGYPTIAN HIEROGLYPH T001EGYPTIAN HIEROGLYPH T002EGYPT" + + "IAN HIEROGLYPH T003EGYPTIAN HIEROGLYPH T003AEGYPTIAN HIEROGLYPH T004EGYP" + + "TIAN HIEROGLYPH T005EGYPTIAN HIEROGLYPH T006EGYPTIAN HIEROGLYPH T007EGYP" + + "TIAN HIEROGLYPH T007AEGYPTIAN HIEROGLYPH T008EGYPTIAN HIEROGLYPH T008AEG" + + "YPTIAN HIEROGLYPH T009EGYPTIAN HIEROGLYPH T009AEGYPTIAN HIEROGLYPH T010E" + + "GYPTIAN HIEROGLYPH T011EGYPTIAN HIEROGLYPH T011AEGYPTIAN HIEROGLYPH T012" + + "EGYPTIAN HIEROGLYPH T013EGYPTIAN HIEROGLYPH T014EGYPTIAN HIEROGLYPH T015" + + "EGYPTIAN HIEROGLYPH T016EGYPTIAN HIEROGLYPH T016AEGYPTIAN HIEROGLYPH T01" + + "7EGYPTIAN HIEROGLYPH T018EGYPTIAN HIEROGLYPH T019EGYPTIAN HIEROGLYPH T02" + + "0EGYPTIAN HIEROGLYPH T021EGYPTIAN HIEROGLYPH T022EGYPTIAN HIEROGLYPH T02" + + "3EGYPTIAN HIEROGLYPH T024EGYPTIAN HIEROGLYPH T025EGYPTIAN HIEROGLYPH T02" + + "6EGYPTIAN HIEROGLYPH T027EGYPTIAN HIEROGLYPH T028EGYPTIAN HIEROGLYPH T02" + + "9EGYPTIAN HIEROGLYPH T030EGYPTIAN HIEROGLYPH T031EGYPTIAN HIEROGLYPH T03" + + "2EGYPTIAN HIEROGLYPH T032AEGYPTIAN HIEROGLYPH T033EGYPTIAN HIEROGLYPH T0" + + "33AEGYPTIAN HIEROGLYPH T034EGYPTIAN HIEROGLYPH T035EGYPTIAN HIEROGLYPH T" + + "036EGYPTIAN HIEROGLYPH U001EGYPTIAN HIEROGLYPH U002EGYPTIAN HIEROGLYPH U" + + "003EGYPTIAN HIEROGLYPH U004EGYPTIAN HIEROGLYPH U005EGYPTIAN HIEROGLYPH U" + + "006EGYPTIAN HIEROGLYPH U006AEGYPTIAN HIEROGLYPH U006BEGYPTIAN HIEROGLYPH" + + " U007EGYPTIAN HIEROGLYPH U008EGYPTIAN HIEROGLYPH U009EGYPTIAN HIEROGLYPH" + + " U010EGYPTIAN HIEROGLYPH U011EGYPTIAN HIEROGLYPH U012EGYPTIAN HIEROGLYPH" + + " U013EGYPTIAN HIEROGLYPH U014EGYPTIAN HIEROGLYPH U015EGYPTIAN HIEROGLYPH" + + " U016EGYPTIAN HIEROGLYPH U017EGYPTIAN HIEROGLYPH U018EGYPTIAN HIEROGLYPH" + + " U019EGYPTIAN HIEROGLYPH U020EGYPTIAN HIEROGLYPH U021EGYPTIAN HIEROGLYPH" + + " U022EGYPTIAN HIEROGLYPH U023EGYPTIAN HIEROGLYPH U023AEGYPTIAN HIEROGLYP" + + "H U024EGYPTIAN HIEROGLYPH U025EGYPTIAN HIEROGLYPH U026EGYPTIAN HIEROGLYP" + + "H U027EGYPTIAN HIEROGLYPH U028EGYPTIAN HIEROGLYPH U029EGYPTIAN HIEROGLYP" + + "H U029AEGYPTIAN HIEROGLYPH U030EGYPTIAN HIEROGLYPH U031EGYPTIAN HIEROGLY" + + "PH U032EGYPTIAN HIEROGLYPH U032AEGYPTIAN HIEROGLYPH U033EGYPTIAN HIEROGL" + + "YPH U034EGYPTIAN HIEROGLYPH U035EGYPTIAN HIEROGLYPH U036EGYPTIAN HIEROGL" + + "YPH U037EGYPTIAN HIEROGLYPH U038EGYPTIAN HIEROGLYPH U039EGYPTIAN HIEROGL" + + "YPH U040EGYPTIAN HIEROGLYPH U041EGYPTIAN HIEROGLYPH U042EGYPTIAN HIEROGL" + + "YPH V001EGYPTIAN HIEROGLYPH V001AEGYPTIAN HIEROGLYPH V001BEGYPTIAN HIERO" + + "GLYPH V001CEGYPTIAN HIEROGLYPH V001DEGYPTIAN HIEROGLYPH V001EEGYPTIAN HI") + ("" + + "EROGLYPH V001FEGYPTIAN HIEROGLYPH V001GEGYPTIAN HIEROGLYPH V001HEGYPTIAN" + + " HIEROGLYPH V001IEGYPTIAN HIEROGLYPH V002EGYPTIAN HIEROGLYPH V002AEGYPTI" + + "AN HIEROGLYPH V003EGYPTIAN HIEROGLYPH V004EGYPTIAN HIEROGLYPH V005EGYPTI" + + "AN HIEROGLYPH V006EGYPTIAN HIEROGLYPH V007EGYPTIAN HIEROGLYPH V007AEGYPT" + + "IAN HIEROGLYPH V007BEGYPTIAN HIEROGLYPH V008EGYPTIAN HIEROGLYPH V009EGYP" + + "TIAN HIEROGLYPH V010EGYPTIAN HIEROGLYPH V011EGYPTIAN HIEROGLYPH V011AEGY" + + "PTIAN HIEROGLYPH V011BEGYPTIAN HIEROGLYPH V011CEGYPTIAN HIEROGLYPH V012E" + + "GYPTIAN HIEROGLYPH V012AEGYPTIAN HIEROGLYPH V012BEGYPTIAN HIEROGLYPH V01" + + "3EGYPTIAN HIEROGLYPH V014EGYPTIAN HIEROGLYPH V015EGYPTIAN HIEROGLYPH V01" + + "6EGYPTIAN HIEROGLYPH V017EGYPTIAN HIEROGLYPH V018EGYPTIAN HIEROGLYPH V01" + + "9EGYPTIAN HIEROGLYPH V020EGYPTIAN HIEROGLYPH V020AEGYPTIAN HIEROGLYPH V0" + + "20BEGYPTIAN HIEROGLYPH V020CEGYPTIAN HIEROGLYPH V020DEGYPTIAN HIEROGLYPH" + + " V020EEGYPTIAN HIEROGLYPH V020FEGYPTIAN HIEROGLYPH V020GEGYPTIAN HIEROGL" + + "YPH V020HEGYPTIAN HIEROGLYPH V020IEGYPTIAN HIEROGLYPH V020JEGYPTIAN HIER" + + "OGLYPH V020KEGYPTIAN HIEROGLYPH V020LEGYPTIAN HIEROGLYPH V021EGYPTIAN HI" + + "EROGLYPH V022EGYPTIAN HIEROGLYPH V023EGYPTIAN HIEROGLYPH V023AEGYPTIAN H" + + "IEROGLYPH V024EGYPTIAN HIEROGLYPH V025EGYPTIAN HIEROGLYPH V026EGYPTIAN H" + + "IEROGLYPH V027EGYPTIAN HIEROGLYPH V028EGYPTIAN HIEROGLYPH V028AEGYPTIAN " + + "HIEROGLYPH V029EGYPTIAN HIEROGLYPH V029AEGYPTIAN HIEROGLYPH V030EGYPTIAN" + + " HIEROGLYPH V030AEGYPTIAN HIEROGLYPH V031EGYPTIAN HIEROGLYPH V031AEGYPTI" + + "AN HIEROGLYPH V032EGYPTIAN HIEROGLYPH V033EGYPTIAN HIEROGLYPH V033AEGYPT" + + "IAN HIEROGLYPH V034EGYPTIAN HIEROGLYPH V035EGYPTIAN HIEROGLYPH V036EGYPT" + + "IAN HIEROGLYPH V037EGYPTIAN HIEROGLYPH V037AEGYPTIAN HIEROGLYPH V038EGYP" + + "TIAN HIEROGLYPH V039EGYPTIAN HIEROGLYPH V040EGYPTIAN HIEROGLYPH V040AEGY" + + "PTIAN HIEROGLYPH W001EGYPTIAN HIEROGLYPH W002EGYPTIAN HIEROGLYPH W003EGY" + + "PTIAN HIEROGLYPH W003AEGYPTIAN HIEROGLYPH W004EGYPTIAN HIEROGLYPH W005EG" + + "YPTIAN HIEROGLYPH W006EGYPTIAN HIEROGLYPH W007EGYPTIAN HIEROGLYPH W008EG" + + "YPTIAN HIEROGLYPH W009EGYPTIAN HIEROGLYPH W009AEGYPTIAN HIEROGLYPH W010E" + + "GYPTIAN HIEROGLYPH W010AEGYPTIAN HIEROGLYPH W011EGYPTIAN HIEROGLYPH W012" + + "EGYPTIAN HIEROGLYPH W013EGYPTIAN HIEROGLYPH W014EGYPTIAN HIEROGLYPH W014" + + "AEGYPTIAN HIEROGLYPH W015EGYPTIAN HIEROGLYPH W016EGYPTIAN HIEROGLYPH W01" + + "7EGYPTIAN HIEROGLYPH W017AEGYPTIAN HIEROGLYPH W018EGYPTIAN HIEROGLYPH W0" + + "18AEGYPTIAN HIEROGLYPH W019EGYPTIAN HIEROGLYPH W020EGYPTIAN HIEROGLYPH W" + + "021EGYPTIAN HIEROGLYPH W022EGYPTIAN HIEROGLYPH W023EGYPTIAN HIEROGLYPH W" + + "024EGYPTIAN HIEROGLYPH W024AEGYPTIAN HIEROGLYPH W025EGYPTIAN HIEROGLYPH " + + "X001EGYPTIAN HIEROGLYPH X002EGYPTIAN HIEROGLYPH X003EGYPTIAN HIEROGLYPH " + + "X004EGYPTIAN HIEROGLYPH X004AEGYPTIAN HIEROGLYPH X004BEGYPTIAN HIEROGLYP" + + "H X005EGYPTIAN HIEROGLYPH X006EGYPTIAN HIEROGLYPH X006AEGYPTIAN HIEROGLY" + + "PH X007EGYPTIAN HIEROGLYPH X008EGYPTIAN HIEROGLYPH X008AEGYPTIAN HIEROGL" + + "YPH Y001EGYPTIAN HIEROGLYPH Y001AEGYPTIAN HIEROGLYPH Y002EGYPTIAN HIEROG" + + "LYPH Y003EGYPTIAN HIEROGLYPH Y004EGYPTIAN HIEROGLYPH Y005EGYPTIAN HIEROG" + + "LYPH Y006EGYPTIAN HIEROGLYPH Y007EGYPTIAN HIEROGLYPH Y008EGYPTIAN HIEROG" + + "LYPH Z001EGYPTIAN HIEROGLYPH Z002EGYPTIAN HIEROGLYPH Z002AEGYPTIAN HIERO" + + "GLYPH Z002BEGYPTIAN HIEROGLYPH Z002CEGYPTIAN HIEROGLYPH Z002DEGYPTIAN HI" + + "EROGLYPH Z003EGYPTIAN HIEROGLYPH Z003AEGYPTIAN HIEROGLYPH Z003BEGYPTIAN " + + "HIEROGLYPH Z004EGYPTIAN HIEROGLYPH Z004AEGYPTIAN HIEROGLYPH Z005EGYPTIAN" + + " HIEROGLYPH Z005AEGYPTIAN HIEROGLYPH Z006EGYPTIAN HIEROGLYPH Z007EGYPTIA" + + "N HIEROGLYPH Z008EGYPTIAN HIEROGLYPH Z009EGYPTIAN HIEROGLYPH Z010EGYPTIA" + + "N HIEROGLYPH Z011EGYPTIAN HIEROGLYPH Z012EGYPTIAN HIEROGLYPH Z013EGYPTIA" + + "N HIEROGLYPH Z014EGYPTIAN HIEROGLYPH Z015EGYPTIAN HIEROGLYPH Z015AEGYPTI" + + "AN HIEROGLYPH Z015BEGYPTIAN HIEROGLYPH Z015CEGYPTIAN HIEROGLYPH Z015DEGY" + + "PTIAN HIEROGLYPH Z015EEGYPTIAN HIEROGLYPH Z015FEGYPTIAN HIEROGLYPH Z015G" + + "EGYPTIAN HIEROGLYPH Z015HEGYPTIAN HIEROGLYPH Z015IEGYPTIAN HIEROGLYPH Z0" + + "16EGYPTIAN HIEROGLYPH Z016AEGYPTIAN HIEROGLYPH Z016BEGYPTIAN HIEROGLYPH " + + "Z016CEGYPTIAN HIEROGLYPH Z016DEGYPTIAN HIEROGLYPH Z016EEGYPTIAN HIEROGLY" + + "PH Z016FEGYPTIAN HIEROGLYPH Z016GEGYPTIAN HIEROGLYPH Z016HEGYPTIAN HIERO" + + "GLYPH AA001EGYPTIAN HIEROGLYPH AA002EGYPTIAN HIEROGLYPH AA003EGYPTIAN HI" + + "EROGLYPH AA004EGYPTIAN HIEROGLYPH AA005EGYPTIAN HIEROGLYPH AA006EGYPTIAN" + + " HIEROGLYPH AA007EGYPTIAN HIEROGLYPH AA007AEGYPTIAN HIEROGLYPH AA007BEGY" + + "PTIAN HIEROGLYPH AA008EGYPTIAN HIEROGLYPH AA009EGYPTIAN HIEROGLYPH AA010" + + "EGYPTIAN HIEROGLYPH AA011EGYPTIAN HIEROGLYPH AA012EGYPTIAN HIEROGLYPH AA" + + "013EGYPTIAN HIEROGLYPH AA014EGYPTIAN HIEROGLYPH AA015EGYPTIAN HIEROGLYPH" + + " AA016EGYPTIAN HIEROGLYPH AA017EGYPTIAN HIEROGLYPH AA018EGYPTIAN HIEROGL" + + "YPH AA019EGYPTIAN HIEROGLYPH AA020EGYPTIAN HIEROGLYPH AA021EGYPTIAN HIER") + ("" + + "OGLYPH AA022EGYPTIAN HIEROGLYPH AA023EGYPTIAN HIEROGLYPH AA024EGYPTIAN H" + + "IEROGLYPH AA025EGYPTIAN HIEROGLYPH AA026EGYPTIAN HIEROGLYPH AA027EGYPTIA" + + "N HIEROGLYPH AA028EGYPTIAN HIEROGLYPH AA029EGYPTIAN HIEROGLYPH AA030EGYP" + + "TIAN HIEROGLYPH AA031EGYPTIAN HIEROGLYPH AA032ANATOLIAN HIEROGLYPH A001A" + + "NATOLIAN HIEROGLYPH A002ANATOLIAN HIEROGLYPH A003ANATOLIAN HIEROGLYPH A0" + + "04ANATOLIAN HIEROGLYPH A005ANATOLIAN HIEROGLYPH A006ANATOLIAN HIEROGLYPH" + + " A007ANATOLIAN HIEROGLYPH A008ANATOLIAN HIEROGLYPH A009ANATOLIAN HIEROGL" + + "YPH A010ANATOLIAN HIEROGLYPH A010AANATOLIAN HIEROGLYPH A011ANATOLIAN HIE" + + "ROGLYPH A012ANATOLIAN HIEROGLYPH A013ANATOLIAN HIEROGLYPH A014ANATOLIAN " + + "HIEROGLYPH A015ANATOLIAN HIEROGLYPH A016ANATOLIAN HIEROGLYPH A017ANATOLI" + + "AN HIEROGLYPH A018ANATOLIAN HIEROGLYPH A019ANATOLIAN HIEROGLYPH A020ANAT" + + "OLIAN HIEROGLYPH A021ANATOLIAN HIEROGLYPH A022ANATOLIAN HIEROGLYPH A023A" + + "NATOLIAN HIEROGLYPH A024ANATOLIAN HIEROGLYPH A025ANATOLIAN HIEROGLYPH A0" + + "26ANATOLIAN HIEROGLYPH A026AANATOLIAN HIEROGLYPH A027ANATOLIAN HIEROGLYP" + + "H A028ANATOLIAN HIEROGLYPH A029ANATOLIAN HIEROGLYPH A030ANATOLIAN HIEROG" + + "LYPH A031ANATOLIAN HIEROGLYPH A032ANATOLIAN HIEROGLYPH A033ANATOLIAN HIE" + + "ROGLYPH A034ANATOLIAN HIEROGLYPH A035ANATOLIAN HIEROGLYPH A036ANATOLIAN " + + "HIEROGLYPH A037ANATOLIAN HIEROGLYPH A038ANATOLIAN HIEROGLYPH A039ANATOLI" + + "AN HIEROGLYPH A039AANATOLIAN HIEROGLYPH A040ANATOLIAN HIEROGLYPH A041ANA" + + "TOLIAN HIEROGLYPH A041AANATOLIAN HIEROGLYPH A042ANATOLIAN HIEROGLYPH A04" + + "3ANATOLIAN HIEROGLYPH A044ANATOLIAN HIEROGLYPH A045ANATOLIAN HIEROGLYPH " + + "A045AANATOLIAN HIEROGLYPH A046ANATOLIAN HIEROGLYPH A046AANATOLIAN HIEROG" + + "LYPH A046BANATOLIAN HIEROGLYPH A047ANATOLIAN HIEROGLYPH A048ANATOLIAN HI" + + "EROGLYPH A049ANATOLIAN HIEROGLYPH A050ANATOLIAN HIEROGLYPH A051ANATOLIAN" + + " HIEROGLYPH A052ANATOLIAN HIEROGLYPH A053ANATOLIAN HIEROGLYPH A054ANATOL" + + "IAN HIEROGLYPH A055ANATOLIAN HIEROGLYPH A056ANATOLIAN HIEROGLYPH A057ANA" + + "TOLIAN HIEROGLYPH A058ANATOLIAN HIEROGLYPH A059ANATOLIAN HIEROGLYPH A060" + + "ANATOLIAN HIEROGLYPH A061ANATOLIAN HIEROGLYPH A062ANATOLIAN HIEROGLYPH A" + + "063ANATOLIAN HIEROGLYPH A064ANATOLIAN HIEROGLYPH A065ANATOLIAN HIEROGLYP" + + "H A066ANATOLIAN HIEROGLYPH A066AANATOLIAN HIEROGLYPH A066BANATOLIAN HIER" + + "OGLYPH A066CANATOLIAN HIEROGLYPH A067ANATOLIAN HIEROGLYPH A068ANATOLIAN " + + "HIEROGLYPH A069ANATOLIAN HIEROGLYPH A070ANATOLIAN HIEROGLYPH A071ANATOLI" + + "AN HIEROGLYPH A072ANATOLIAN HIEROGLYPH A073ANATOLIAN HIEROGLYPH A074ANAT" + + "OLIAN HIEROGLYPH A075ANATOLIAN HIEROGLYPH A076ANATOLIAN HIEROGLYPH A077A" + + "NATOLIAN HIEROGLYPH A078ANATOLIAN HIEROGLYPH A079ANATOLIAN HIEROGLYPH A0" + + "80ANATOLIAN HIEROGLYPH A081ANATOLIAN HIEROGLYPH A082ANATOLIAN HIEROGLYPH" + + " A083ANATOLIAN HIEROGLYPH A084ANATOLIAN HIEROGLYPH A085ANATOLIAN HIEROGL" + + "YPH A086ANATOLIAN HIEROGLYPH A087ANATOLIAN HIEROGLYPH A088ANATOLIAN HIER" + + "OGLYPH A089ANATOLIAN HIEROGLYPH A090ANATOLIAN HIEROGLYPH A091ANATOLIAN H" + + "IEROGLYPH A092ANATOLIAN HIEROGLYPH A093ANATOLIAN HIEROGLYPH A094ANATOLIA" + + "N HIEROGLYPH A095ANATOLIAN HIEROGLYPH A096ANATOLIAN HIEROGLYPH A097ANATO" + + "LIAN HIEROGLYPH A097AANATOLIAN HIEROGLYPH A098ANATOLIAN HIEROGLYPH A098A" + + "ANATOLIAN HIEROGLYPH A099ANATOLIAN HIEROGLYPH A100ANATOLIAN HIEROGLYPH A" + + "100AANATOLIAN HIEROGLYPH A101ANATOLIAN HIEROGLYPH A101AANATOLIAN HIEROGL" + + "YPH A102ANATOLIAN HIEROGLYPH A102AANATOLIAN HIEROGLYPH A103ANATOLIAN HIE" + + "ROGLYPH A104ANATOLIAN HIEROGLYPH A104AANATOLIAN HIEROGLYPH A104BANATOLIA" + + "N HIEROGLYPH A104CANATOLIAN HIEROGLYPH A105ANATOLIAN HIEROGLYPH A105AANA" + + "TOLIAN HIEROGLYPH A105BANATOLIAN HIEROGLYPH A106ANATOLIAN HIEROGLYPH A10" + + "7ANATOLIAN HIEROGLYPH A107AANATOLIAN HIEROGLYPH A107BANATOLIAN HIEROGLYP" + + "H A107CANATOLIAN HIEROGLYPH A108ANATOLIAN HIEROGLYPH A109ANATOLIAN HIERO" + + "GLYPH A110ANATOLIAN HIEROGLYPH A110AANATOLIAN HIEROGLYPH A110BANATOLIAN " + + "HIEROGLYPH A111ANATOLIAN HIEROGLYPH A112ANATOLIAN HIEROGLYPH A113ANATOLI" + + "AN HIEROGLYPH A114ANATOLIAN HIEROGLYPH A115ANATOLIAN HIEROGLYPH A115AANA" + + "TOLIAN HIEROGLYPH A116ANATOLIAN HIEROGLYPH A117ANATOLIAN HIEROGLYPH A118" + + "ANATOLIAN HIEROGLYPH A119ANATOLIAN HIEROGLYPH A120ANATOLIAN HIEROGLYPH A" + + "121ANATOLIAN HIEROGLYPH A122ANATOLIAN HIEROGLYPH A123ANATOLIAN HIEROGLYP" + + "H A124ANATOLIAN HIEROGLYPH A125ANATOLIAN HIEROGLYPH A125AANATOLIAN HIERO" + + "GLYPH A126ANATOLIAN HIEROGLYPH A127ANATOLIAN HIEROGLYPH A128ANATOLIAN HI" + + "EROGLYPH A129ANATOLIAN HIEROGLYPH A130ANATOLIAN HIEROGLYPH A131ANATOLIAN" + + " HIEROGLYPH A132ANATOLIAN HIEROGLYPH A133ANATOLIAN HIEROGLYPH A134ANATOL" + + "IAN HIEROGLYPH A135ANATOLIAN HIEROGLYPH A135AANATOLIAN HIEROGLYPH A136AN" + + "ATOLIAN HIEROGLYPH A137ANATOLIAN HIEROGLYPH A138ANATOLIAN HIEROGLYPH A13" + + "9ANATOLIAN HIEROGLYPH A140ANATOLIAN HIEROGLYPH A141ANATOLIAN HIEROGLYPH " + + "A142ANATOLIAN HIEROGLYPH A143ANATOLIAN HIEROGLYPH A144ANATOLIAN HIEROGLY") + ("" + + "PH A145ANATOLIAN HIEROGLYPH A146ANATOLIAN HIEROGLYPH A147ANATOLIAN HIERO" + + "GLYPH A148ANATOLIAN HIEROGLYPH A149ANATOLIAN HIEROGLYPH A150ANATOLIAN HI" + + "EROGLYPH A151ANATOLIAN HIEROGLYPH A152ANATOLIAN HIEROGLYPH A153ANATOLIAN" + + " HIEROGLYPH A154ANATOLIAN HIEROGLYPH A155ANATOLIAN HIEROGLYPH A156ANATOL" + + "IAN HIEROGLYPH A157ANATOLIAN HIEROGLYPH A158ANATOLIAN HIEROGLYPH A159ANA" + + "TOLIAN HIEROGLYPH A160ANATOLIAN HIEROGLYPH A161ANATOLIAN HIEROGLYPH A162" + + "ANATOLIAN HIEROGLYPH A163ANATOLIAN HIEROGLYPH A164ANATOLIAN HIEROGLYPH A" + + "165ANATOLIAN HIEROGLYPH A166ANATOLIAN HIEROGLYPH A167ANATOLIAN HIEROGLYP" + + "H A168ANATOLIAN HIEROGLYPH A169ANATOLIAN HIEROGLYPH A170ANATOLIAN HIEROG" + + "LYPH A171ANATOLIAN HIEROGLYPH A172ANATOLIAN HIEROGLYPH A173ANATOLIAN HIE" + + "ROGLYPH A174ANATOLIAN HIEROGLYPH A175ANATOLIAN HIEROGLYPH A176ANATOLIAN " + + "HIEROGLYPH A177ANATOLIAN HIEROGLYPH A178ANATOLIAN HIEROGLYPH A179ANATOLI" + + "AN HIEROGLYPH A180ANATOLIAN HIEROGLYPH A181ANATOLIAN HIEROGLYPH A182ANAT" + + "OLIAN HIEROGLYPH A183ANATOLIAN HIEROGLYPH A184ANATOLIAN HIEROGLYPH A185A" + + "NATOLIAN HIEROGLYPH A186ANATOLIAN HIEROGLYPH A187ANATOLIAN HIEROGLYPH A1" + + "88ANATOLIAN HIEROGLYPH A189ANATOLIAN HIEROGLYPH A190ANATOLIAN HIEROGLYPH" + + " A191ANATOLIAN HIEROGLYPH A192ANATOLIAN HIEROGLYPH A193ANATOLIAN HIEROGL" + + "YPH A194ANATOLIAN HIEROGLYPH A195ANATOLIAN HIEROGLYPH A196ANATOLIAN HIER" + + "OGLYPH A197ANATOLIAN HIEROGLYPH A198ANATOLIAN HIEROGLYPH A199ANATOLIAN H" + + "IEROGLYPH A200ANATOLIAN HIEROGLYPH A201ANATOLIAN HIEROGLYPH A202ANATOLIA" + + "N HIEROGLYPH A202AANATOLIAN HIEROGLYPH A202BANATOLIAN HIEROGLYPH A203ANA" + + "TOLIAN HIEROGLYPH A204ANATOLIAN HIEROGLYPH A205ANATOLIAN HIEROGLYPH A206" + + "ANATOLIAN HIEROGLYPH A207ANATOLIAN HIEROGLYPH A207AANATOLIAN HIEROGLYPH " + + "A208ANATOLIAN HIEROGLYPH A209ANATOLIAN HIEROGLYPH A209AANATOLIAN HIEROGL" + + "YPH A210ANATOLIAN HIEROGLYPH A211ANATOLIAN HIEROGLYPH A212ANATOLIAN HIER" + + "OGLYPH A213ANATOLIAN HIEROGLYPH A214ANATOLIAN HIEROGLYPH A215ANATOLIAN H" + + "IEROGLYPH A215AANATOLIAN HIEROGLYPH A216ANATOLIAN HIEROGLYPH A216AANATOL" + + "IAN HIEROGLYPH A217ANATOLIAN HIEROGLYPH A218ANATOLIAN HIEROGLYPH A219ANA" + + "TOLIAN HIEROGLYPH A220ANATOLIAN HIEROGLYPH A221ANATOLIAN HIEROGLYPH A222" + + "ANATOLIAN HIEROGLYPH A223ANATOLIAN HIEROGLYPH A224ANATOLIAN HIEROGLYPH A" + + "225ANATOLIAN HIEROGLYPH A226ANATOLIAN HIEROGLYPH A227ANATOLIAN HIEROGLYP" + + "H A227AANATOLIAN HIEROGLYPH A228ANATOLIAN HIEROGLYPH A229ANATOLIAN HIERO" + + "GLYPH A230ANATOLIAN HIEROGLYPH A231ANATOLIAN HIEROGLYPH A232ANATOLIAN HI" + + "EROGLYPH A233ANATOLIAN HIEROGLYPH A234ANATOLIAN HIEROGLYPH A235ANATOLIAN" + + " HIEROGLYPH A236ANATOLIAN HIEROGLYPH A237ANATOLIAN HIEROGLYPH A238ANATOL" + + "IAN HIEROGLYPH A239ANATOLIAN HIEROGLYPH A240ANATOLIAN HIEROGLYPH A241ANA" + + "TOLIAN HIEROGLYPH A242ANATOLIAN HIEROGLYPH A243ANATOLIAN HIEROGLYPH A244" + + "ANATOLIAN HIEROGLYPH A245ANATOLIAN HIEROGLYPH A246ANATOLIAN HIEROGLYPH A" + + "247ANATOLIAN HIEROGLYPH A248ANATOLIAN HIEROGLYPH A249ANATOLIAN HIEROGLYP" + + "H A250ANATOLIAN HIEROGLYPH A251ANATOLIAN HIEROGLYPH A252ANATOLIAN HIEROG" + + "LYPH A253ANATOLIAN HIEROGLYPH A254ANATOLIAN HIEROGLYPH A255ANATOLIAN HIE" + + "ROGLYPH A256ANATOLIAN HIEROGLYPH A257ANATOLIAN HIEROGLYPH A258ANATOLIAN " + + "HIEROGLYPH A259ANATOLIAN HIEROGLYPH A260ANATOLIAN HIEROGLYPH A261ANATOLI" + + "AN HIEROGLYPH A262ANATOLIAN HIEROGLYPH A263ANATOLIAN HIEROGLYPH A264ANAT" + + "OLIAN HIEROGLYPH A265ANATOLIAN HIEROGLYPH A266ANATOLIAN HIEROGLYPH A267A" + + "NATOLIAN HIEROGLYPH A267AANATOLIAN HIEROGLYPH A268ANATOLIAN HIEROGLYPH A" + + "269ANATOLIAN HIEROGLYPH A270ANATOLIAN HIEROGLYPH A271ANATOLIAN HIEROGLYP" + + "H A272ANATOLIAN HIEROGLYPH A273ANATOLIAN HIEROGLYPH A274ANATOLIAN HIEROG" + + "LYPH A275ANATOLIAN HIEROGLYPH A276ANATOLIAN HIEROGLYPH A277ANATOLIAN HIE" + + "ROGLYPH A278ANATOLIAN HIEROGLYPH A279ANATOLIAN HIEROGLYPH A280ANATOLIAN " + + "HIEROGLYPH A281ANATOLIAN HIEROGLYPH A282ANATOLIAN HIEROGLYPH A283ANATOLI" + + "AN HIEROGLYPH A284ANATOLIAN HIEROGLYPH A285ANATOLIAN HIEROGLYPH A286ANAT" + + "OLIAN HIEROGLYPH A287ANATOLIAN HIEROGLYPH A288ANATOLIAN HIEROGLYPH A289A" + + "NATOLIAN HIEROGLYPH A289AANATOLIAN HIEROGLYPH A290ANATOLIAN HIEROGLYPH A" + + "291ANATOLIAN HIEROGLYPH A292ANATOLIAN HIEROGLYPH A293ANATOLIAN HIEROGLYP" + + "H A294ANATOLIAN HIEROGLYPH A294AANATOLIAN HIEROGLYPH A295ANATOLIAN HIERO" + + "GLYPH A296ANATOLIAN HIEROGLYPH A297ANATOLIAN HIEROGLYPH A298ANATOLIAN HI" + + "EROGLYPH A299ANATOLIAN HIEROGLYPH A299AANATOLIAN HIEROGLYPH A300ANATOLIA" + + "N HIEROGLYPH A301ANATOLIAN HIEROGLYPH A302ANATOLIAN HIEROGLYPH A303ANATO" + + "LIAN HIEROGLYPH A304ANATOLIAN HIEROGLYPH A305ANATOLIAN HIEROGLYPH A306AN" + + "ATOLIAN HIEROGLYPH A307ANATOLIAN HIEROGLYPH A308ANATOLIAN HIEROGLYPH A30" + + "9ANATOLIAN HIEROGLYPH A309AANATOLIAN HIEROGLYPH A310ANATOLIAN HIEROGLYPH" + + " A311ANATOLIAN HIEROGLYPH A312ANATOLIAN HIEROGLYPH A313ANATOLIAN HIEROGL" + + "YPH A314ANATOLIAN HIEROGLYPH A315ANATOLIAN HIEROGLYPH A316ANATOLIAN HIER") + ("" + + "OGLYPH A317ANATOLIAN HIEROGLYPH A318ANATOLIAN HIEROGLYPH A319ANATOLIAN H" + + "IEROGLYPH A320ANATOLIAN HIEROGLYPH A321ANATOLIAN HIEROGLYPH A322ANATOLIA" + + "N HIEROGLYPH A323ANATOLIAN HIEROGLYPH A324ANATOLIAN HIEROGLYPH A325ANATO" + + "LIAN HIEROGLYPH A326ANATOLIAN HIEROGLYPH A327ANATOLIAN HIEROGLYPH A328AN" + + "ATOLIAN HIEROGLYPH A329ANATOLIAN HIEROGLYPH A329AANATOLIAN HIEROGLYPH A3" + + "30ANATOLIAN HIEROGLYPH A331ANATOLIAN HIEROGLYPH A332AANATOLIAN HIEROGLYP" + + "H A332BANATOLIAN HIEROGLYPH A332CANATOLIAN HIEROGLYPH A333ANATOLIAN HIER" + + "OGLYPH A334ANATOLIAN HIEROGLYPH A335ANATOLIAN HIEROGLYPH A336ANATOLIAN H" + + "IEROGLYPH A336AANATOLIAN HIEROGLYPH A336BANATOLIAN HIEROGLYPH A336CANATO" + + "LIAN HIEROGLYPH A337ANATOLIAN HIEROGLYPH A338ANATOLIAN HIEROGLYPH A339AN" + + "ATOLIAN HIEROGLYPH A340ANATOLIAN HIEROGLYPH A341ANATOLIAN HIEROGLYPH A34" + + "2ANATOLIAN HIEROGLYPH A343ANATOLIAN HIEROGLYPH A344ANATOLIAN HIEROGLYPH " + + "A345ANATOLIAN HIEROGLYPH A346ANATOLIAN HIEROGLYPH A347ANATOLIAN HIEROGLY" + + "PH A348ANATOLIAN HIEROGLYPH A349ANATOLIAN HIEROGLYPH A350ANATOLIAN HIERO" + + "GLYPH A351ANATOLIAN HIEROGLYPH A352ANATOLIAN HIEROGLYPH A353ANATOLIAN HI" + + "EROGLYPH A354ANATOLIAN HIEROGLYPH A355ANATOLIAN HIEROGLYPH A356ANATOLIAN" + + " HIEROGLYPH A357ANATOLIAN HIEROGLYPH A358ANATOLIAN HIEROGLYPH A359ANATOL" + + "IAN HIEROGLYPH A359AANATOLIAN HIEROGLYPH A360ANATOLIAN HIEROGLYPH A361AN" + + "ATOLIAN HIEROGLYPH A362ANATOLIAN HIEROGLYPH A363ANATOLIAN HIEROGLYPH A36" + + "4ANATOLIAN HIEROGLYPH A364AANATOLIAN HIEROGLYPH A365ANATOLIAN HIEROGLYPH" + + " A366ANATOLIAN HIEROGLYPH A367ANATOLIAN HIEROGLYPH A368ANATOLIAN HIEROGL" + + "YPH A368AANATOLIAN HIEROGLYPH A369ANATOLIAN HIEROGLYPH A370ANATOLIAN HIE" + + "ROGLYPH A371ANATOLIAN HIEROGLYPH A371AANATOLIAN HIEROGLYPH A372ANATOLIAN" + + " HIEROGLYPH A373ANATOLIAN HIEROGLYPH A374ANATOLIAN HIEROGLYPH A375ANATOL" + + "IAN HIEROGLYPH A376ANATOLIAN HIEROGLYPH A377ANATOLIAN HIEROGLYPH A378ANA" + + "TOLIAN HIEROGLYPH A379ANATOLIAN HIEROGLYPH A380ANATOLIAN HIEROGLYPH A381" + + "ANATOLIAN HIEROGLYPH A381AANATOLIAN HIEROGLYPH A382ANATOLIAN HIEROGLYPH " + + "A383 RA OR RIANATOLIAN HIEROGLYPH A383AANATOLIAN HIEROGLYPH A384ANATOLIA" + + "N HIEROGLYPH A385ANATOLIAN HIEROGLYPH A386ANATOLIAN HIEROGLYPH A386AANAT" + + "OLIAN HIEROGLYPH A387ANATOLIAN HIEROGLYPH A388ANATOLIAN HIEROGLYPH A389A" + + "NATOLIAN HIEROGLYPH A390ANATOLIAN HIEROGLYPH A391ANATOLIAN HIEROGLYPH A3" + + "92ANATOLIAN HIEROGLYPH A393 EIGHTANATOLIAN HIEROGLYPH A394ANATOLIAN HIER" + + "OGLYPH A395ANATOLIAN HIEROGLYPH A396ANATOLIAN HIEROGLYPH A397ANATOLIAN H" + + "IEROGLYPH A398ANATOLIAN HIEROGLYPH A399ANATOLIAN HIEROGLYPH A400ANATOLIA" + + "N HIEROGLYPH A401ANATOLIAN HIEROGLYPH A402ANATOLIAN HIEROGLYPH A403ANATO" + + "LIAN HIEROGLYPH A404ANATOLIAN HIEROGLYPH A405ANATOLIAN HIEROGLYPH A406AN" + + "ATOLIAN HIEROGLYPH A407ANATOLIAN HIEROGLYPH A408ANATOLIAN HIEROGLYPH A40" + + "9ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARKANATOLIAN HIEROGLYPH A410A" + + " END LOGOGRAM MARKANATOLIAN HIEROGLYPH A411ANATOLIAN HIEROGLYPH A412ANAT" + + "OLIAN HIEROGLYPH A413ANATOLIAN HIEROGLYPH A414ANATOLIAN HIEROGLYPH A415A" + + "NATOLIAN HIEROGLYPH A416ANATOLIAN HIEROGLYPH A417ANATOLIAN HIEROGLYPH A4" + + "18ANATOLIAN HIEROGLYPH A419ANATOLIAN HIEROGLYPH A420ANATOLIAN HIEROGLYPH" + + " A421ANATOLIAN HIEROGLYPH A422ANATOLIAN HIEROGLYPH A423ANATOLIAN HIEROGL" + + "YPH A424ANATOLIAN HIEROGLYPH A425ANATOLIAN HIEROGLYPH A426ANATOLIAN HIER" + + "OGLYPH A427ANATOLIAN HIEROGLYPH A428ANATOLIAN HIEROGLYPH A429ANATOLIAN H" + + "IEROGLYPH A430ANATOLIAN HIEROGLYPH A431ANATOLIAN HIEROGLYPH A432ANATOLIA" + + "N HIEROGLYPH A433ANATOLIAN HIEROGLYPH A434ANATOLIAN HIEROGLYPH A435ANATO" + + "LIAN HIEROGLYPH A436ANATOLIAN HIEROGLYPH A437ANATOLIAN HIEROGLYPH A438AN" + + "ATOLIAN HIEROGLYPH A439ANATOLIAN HIEROGLYPH A440ANATOLIAN HIEROGLYPH A44" + + "1ANATOLIAN HIEROGLYPH A442ANATOLIAN HIEROGLYPH A443ANATOLIAN HIEROGLYPH " + + "A444ANATOLIAN HIEROGLYPH A445ANATOLIAN HIEROGLYPH A446ANATOLIAN HIEROGLY" + + "PH A447ANATOLIAN HIEROGLYPH A448ANATOLIAN HIEROGLYPH A449ANATOLIAN HIERO" + + "GLYPH A450ANATOLIAN HIEROGLYPH A450AANATOLIAN HIEROGLYPH A451ANATOLIAN H" + + "IEROGLYPH A452ANATOLIAN HIEROGLYPH A453ANATOLIAN HIEROGLYPH A454ANATOLIA" + + "N HIEROGLYPH A455ANATOLIAN HIEROGLYPH A456ANATOLIAN HIEROGLYPH A457ANATO" + + "LIAN HIEROGLYPH A457AANATOLIAN HIEROGLYPH A458ANATOLIAN HIEROGLYPH A459A" + + "NATOLIAN HIEROGLYPH A460ANATOLIAN HIEROGLYPH A461ANATOLIAN HIEROGLYPH A4" + + "62ANATOLIAN HIEROGLYPH A463ANATOLIAN HIEROGLYPH A464ANATOLIAN HIEROGLYPH" + + " A465ANATOLIAN HIEROGLYPH A466ANATOLIAN HIEROGLYPH A467ANATOLIAN HIEROGL" + + "YPH A468ANATOLIAN HIEROGLYPH A469ANATOLIAN HIEROGLYPH A470ANATOLIAN HIER" + + "OGLYPH A471ANATOLIAN HIEROGLYPH A472ANATOLIAN HIEROGLYPH A473ANATOLIAN H" + + "IEROGLYPH A474ANATOLIAN HIEROGLYPH A475ANATOLIAN HIEROGLYPH A476ANATOLIA" + + "N HIEROGLYPH A477ANATOLIAN HIEROGLYPH A478ANATOLIAN HIEROGLYPH A479ANATO" + + "LIAN HIEROGLYPH A480ANATOLIAN HIEROGLYPH A481ANATOLIAN HIEROGLYPH A482AN") + ("" + + "ATOLIAN HIEROGLYPH A483ANATOLIAN HIEROGLYPH A484ANATOLIAN HIEROGLYPH A48" + + "5ANATOLIAN HIEROGLYPH A486ANATOLIAN HIEROGLYPH A487ANATOLIAN HIEROGLYPH " + + "A488ANATOLIAN HIEROGLYPH A489ANATOLIAN HIEROGLYPH A490ANATOLIAN HIEROGLY" + + "PH A491ANATOLIAN HIEROGLYPH A492ANATOLIAN HIEROGLYPH A493ANATOLIAN HIERO" + + "GLYPH A494ANATOLIAN HIEROGLYPH A495ANATOLIAN HIEROGLYPH A496ANATOLIAN HI" + + "EROGLYPH A497ANATOLIAN HIEROGLYPH A501ANATOLIAN HIEROGLYPH A502ANATOLIAN" + + " HIEROGLYPH A503ANATOLIAN HIEROGLYPH A504ANATOLIAN HIEROGLYPH A505ANATOL" + + "IAN HIEROGLYPH A506ANATOLIAN HIEROGLYPH A507ANATOLIAN HIEROGLYPH A508ANA" + + "TOLIAN HIEROGLYPH A509ANATOLIAN HIEROGLYPH A510ANATOLIAN HIEROGLYPH A511" + + "ANATOLIAN HIEROGLYPH A512ANATOLIAN HIEROGLYPH A513ANATOLIAN HIEROGLYPH A" + + "514ANATOLIAN HIEROGLYPH A515ANATOLIAN HIEROGLYPH A516ANATOLIAN HIEROGLYP" + + "H A517ANATOLIAN HIEROGLYPH A518ANATOLIAN HIEROGLYPH A519ANATOLIAN HIEROG" + + "LYPH A520ANATOLIAN HIEROGLYPH A521ANATOLIAN HIEROGLYPH A522ANATOLIAN HIE" + + "ROGLYPH A523ANATOLIAN HIEROGLYPH A524ANATOLIAN HIEROGLYPH A525ANATOLIAN " + + "HIEROGLYPH A526ANATOLIAN HIEROGLYPH A527ANATOLIAN HIEROGLYPH A528ANATOLI" + + "AN HIEROGLYPH A529ANATOLIAN HIEROGLYPH A530BAMUM LETTER PHASE-A NGKUE MF" + + "ONBAMUM LETTER PHASE-A GBIEE FONBAMUM LETTER PHASE-A PON MFON PIPAEMGBIE" + + "EBAMUM LETTER PHASE-A PON MFON PIPAEMBABAMUM LETTER PHASE-A NAA MFONBAMU" + + "M LETTER PHASE-A SHUENSHUETBAMUM LETTER PHASE-A TITA MFONBAMUM LETTER PH" + + "ASE-A NZA MFONBAMUM LETTER PHASE-A SHINDA PA NJIBAMUM LETTER PHASE-A PON" + + " PA NJI PIPAEMGBIEEBAMUM LETTER PHASE-A PON PA NJI PIPAEMBABAMUM LETTER " + + "PHASE-A MAEMBGBIEEBAMUM LETTER PHASE-A TU MAEMBABAMUM LETTER PHASE-A NGA" + + "NGUBAMUM LETTER PHASE-A MAEMVEUXBAMUM LETTER PHASE-A MANSUAEBAMUM LETTER" + + " PHASE-A MVEUAENGAMBAMUM LETTER PHASE-A SEUNYAMBAMUM LETTER PHASE-A NTOQ" + + "PENBAMUM LETTER PHASE-A KEUKEUTNDABAMUM LETTER PHASE-A NKINDIBAMUM LETTE" + + "R PHASE-A SUUBAMUM LETTER PHASE-A NGKUENZEUMBAMUM LETTER PHASE-A LAPAQBA" + + "MUM LETTER PHASE-A LET KUTBAMUM LETTER PHASE-A NTAP MFAABAMUM LETTER PHA" + + "SE-A MAEKEUPBAMUM LETTER PHASE-A PASHAEBAMUM LETTER PHASE-A GHEUAERAEBAM" + + "UM LETTER PHASE-A PAMSHAEBAMUM LETTER PHASE-A MON NGGEUAETBAMUM LETTER P" + + "HASE-A NZUN MEUTBAMUM LETTER PHASE-A U YUQ NAEBAMUM LETTER PHASE-A GHEUA" + + "EGHEUAEBAMUM LETTER PHASE-A NTAP NTAABAMUM LETTER PHASE-A SISABAMUM LETT" + + "ER PHASE-A MGBASABAMUM LETTER PHASE-A MEUNJOMNDEUQBAMUM LETTER PHASE-A M" + + "OOMPUQBAMUM LETTER PHASE-A KAFABAMUM LETTER PHASE-A PA LEERAEWABAMUM LET" + + "TER PHASE-A NDA LEERAEWABAMUM LETTER PHASE-A PETBAMUM LETTER PHASE-A MAE" + + "MKPENBAMUM LETTER PHASE-A NIKABAMUM LETTER PHASE-A PUPBAMUM LETTER PHASE" + + "-A TUAEPBAMUM LETTER PHASE-A LUAEPBAMUM LETTER PHASE-A SONJAMBAMUM LETTE" + + "R PHASE-A TEUTEUWENBAMUM LETTER PHASE-A MAENYIBAMUM LETTER PHASE-A KETBA" + + "MUM LETTER PHASE-A NDAANGGEUAETBAMUM LETTER PHASE-A KUOQBAMUM LETTER PHA" + + "SE-A MOOMEUTBAMUM LETTER PHASE-A SHUMBAMUM LETTER PHASE-A LOMMAEBAMUM LE" + + "TTER PHASE-A FIRIBAMUM LETTER PHASE-A ROMBAMUM LETTER PHASE-A KPOQBAMUM " + + "LETTER PHASE-A SOQBAMUM LETTER PHASE-A MAP PIEETBAMUM LETTER PHASE-A SHI" + + "RAEBAMUM LETTER PHASE-A NTAPBAMUM LETTER PHASE-A SHOQ NSHUT YUMBAMUM LET" + + "TER PHASE-A NYIT MONGKEUAEQBAMUM LETTER PHASE-A PAARAEBAMUM LETTER PHASE" + + "-A NKAARAEBAMUM LETTER PHASE-A UNKNOWNBAMUM LETTER PHASE-A NGGENBAMUM LE" + + "TTER PHASE-A MAESIBAMUM LETTER PHASE-A NJAMBAMUM LETTER PHASE-A MBANYIBA" + + "MUM LETTER PHASE-A NYETBAMUM LETTER PHASE-A TEUAENBAMUM LETTER PHASE-A S" + + "OTBAMUM LETTER PHASE-A PAAMBAMUM LETTER PHASE-A NSHIEEBAMUM LETTER PHASE" + + "-A MAEMBAMUM LETTER PHASE-A NYIBAMUM LETTER PHASE-A KAQBAMUM LETTER PHAS" + + "E-A NSHABAMUM LETTER PHASE-A VEEBAMUM LETTER PHASE-A LUBAMUM LETTER PHAS" + + "E-A NENBAMUM LETTER PHASE-A NAQBAMUM LETTER PHASE-A MBAQBAMUM LETTER PHA" + + "SE-B NSHUETBAMUM LETTER PHASE-B TU MAEMGBIEEBAMUM LETTER PHASE-B SIEEBAM" + + "UM LETTER PHASE-B SET TUBAMUM LETTER PHASE-B LOM NTEUMBAMUM LETTER PHASE" + + "-B MBA MAELEEBAMUM LETTER PHASE-B KIEEMBAMUM LETTER PHASE-B YEURAEBAMUM " + + "LETTER PHASE-B MBAARAEBAMUM LETTER PHASE-B KAMBAMUM LETTER PHASE-B PEESH" + + "IBAMUM LETTER PHASE-B YAFU LEERAEWABAMUM LETTER PHASE-B LAM NSHUT NYAMBA" + + "MUM LETTER PHASE-B NTIEE SHEUOQBAMUM LETTER PHASE-B NDU NJAABAMUM LETTER" + + " PHASE-B GHEUGHEUAEMBAMUM LETTER PHASE-B PITBAMUM LETTER PHASE-B TU NSIE" + + "EBAMUM LETTER PHASE-B SHET NJAQBAMUM LETTER PHASE-B SHEUAEQTUBAMUM LETTE" + + "R PHASE-B MFON TEUAEQBAMUM LETTER PHASE-B MBIT MBAAKETBAMUM LETTER PHASE" + + "-B NYI NTEUMBAMUM LETTER PHASE-B KEUPUQBAMUM LETTER PHASE-B GHEUGHENBAMU" + + "M LETTER PHASE-B KEUYEUXBAMUM LETTER PHASE-B LAANAEBAMUM LETTER PHASE-B " + + "PARUMBAMUM LETTER PHASE-B VEUMBAMUM LETTER PHASE-B NGKINDI MVOPBAMUM LET" + + "TER PHASE-B NGGEU MBUBAMUM LETTER PHASE-B WUAETBAMUM LETTER PHASE-B SAKE" + + "UAEBAMUM LETTER PHASE-B TAAMBAMUM LETTER PHASE-B MEUQBAMUM LETTER PHASE-") + ("" + + "B NGGUOQBAMUM LETTER PHASE-B NGGUOQ LARGEBAMUM LETTER PHASE-B MFIYAQBAMU" + + "M LETTER PHASE-B SUEBAMUM LETTER PHASE-B MBEURIBAMUM LETTER PHASE-B MONT" + + "IEENBAMUM LETTER PHASE-B NYAEMAEBAMUM LETTER PHASE-B PUNGAAMBAMUM LETTER" + + " PHASE-B MEUT NGGEETBAMUM LETTER PHASE-B FEUXBAMUM LETTER PHASE-B MBUOQB" + + "AMUM LETTER PHASE-B FEEBAMUM LETTER PHASE-B KEUAEMBAMUM LETTER PHASE-B M" + + "A NJEUAENABAMUM LETTER PHASE-B MA NJUQABAMUM LETTER PHASE-B LETBAMUM LET" + + "TER PHASE-B NGGAAMBAMUM LETTER PHASE-B NSENBAMUM LETTER PHASE-B MABAMUM " + + "LETTER PHASE-B KIQBAMUM LETTER PHASE-B NGOMBAMUM LETTER PHASE-C NGKUE MA" + + "EMBABAMUM LETTER PHASE-C NZABAMUM LETTER PHASE-C YUMBAMUM LETTER PHASE-C" + + " WANGKUOQBAMUM LETTER PHASE-C NGGENBAMUM LETTER PHASE-C NDEUAEREEBAMUM L" + + "ETTER PHASE-C NGKAQBAMUM LETTER PHASE-C GHARAEBAMUM LETTER PHASE-C MBEEK" + + "EETBAMUM LETTER PHASE-C GBAYIBAMUM LETTER PHASE-C NYIR MKPARAQ MEUNBAMUM" + + " LETTER PHASE-C NTU MBITBAMUM LETTER PHASE-C MBEUMBAMUM LETTER PHASE-C P" + + "IRIEENBAMUM LETTER PHASE-C NDOMBUBAMUM LETTER PHASE-C MBAA CABBAGE-TREEB" + + "AMUM LETTER PHASE-C KEUSHEUAEPBAMUM LETTER PHASE-C GHAPBAMUM LETTER PHAS" + + "E-C KEUKAQBAMUM LETTER PHASE-C YU MUOMAEBAMUM LETTER PHASE-C NZEUMBAMUM " + + "LETTER PHASE-C MBUEBAMUM LETTER PHASE-C NSEUAENBAMUM LETTER PHASE-C MBIT" + + "BAMUM LETTER PHASE-C YEUQBAMUM LETTER PHASE-C KPARAQBAMUM LETTER PHASE-C" + + " KAABAMUM LETTER PHASE-C SEUXBAMUM LETTER PHASE-C NDIDABAMUM LETTER PHAS" + + "E-C TAASHAEBAMUM LETTER PHASE-C NJUEQBAMUM LETTER PHASE-C TITA YUEBAMUM " + + "LETTER PHASE-C SUAETBAMUM LETTER PHASE-C NGGUAEN NYAMBAMUM LETTER PHASE-" + + "C VEUXBAMUM LETTER PHASE-C NANSANAQBAMUM LETTER PHASE-C MA KEUAERIBAMUM " + + "LETTER PHASE-C NTAABAMUM LETTER PHASE-C NGGUONBAMUM LETTER PHASE-C LAPBA" + + "MUM LETTER PHASE-C MBIRIEENBAMUM LETTER PHASE-C MGBASAQBAMUM LETTER PHAS" + + "E-C NTEUNGBABAMUM LETTER PHASE-C TEUTEUXBAMUM LETTER PHASE-C NGGUMBAMUM " + + "LETTER PHASE-C FUEBAMUM LETTER PHASE-C NDEUTBAMUM LETTER PHASE-C NSABAMU" + + "M LETTER PHASE-C NSHAQBAMUM LETTER PHASE-C BUNGBAMUM LETTER PHASE-C VEUA" + + "EPENBAMUM LETTER PHASE-C MBERAEBAMUM LETTER PHASE-C RUBAMUM LETTER PHASE" + + "-C NJAEMBAMUM LETTER PHASE-C LAMBAMUM LETTER PHASE-C TITUAEPBAMUM LETTER" + + " PHASE-C NSUOT NGOMBAMUM LETTER PHASE-C NJEEEEBAMUM LETTER PHASE-C KETBA" + + "MUM LETTER PHASE-C NGGUBAMUM LETTER PHASE-C MAESIBAMUM LETTER PHASE-C MB" + + "UAEMBAMUM LETTER PHASE-C LUBAMUM LETTER PHASE-C KUTBAMUM LETTER PHASE-C " + + "NJAMBAMUM LETTER PHASE-C NGOMBAMUM LETTER PHASE-C WUPBAMUM LETTER PHASE-" + + "C NGGUEETBAMUM LETTER PHASE-C NSOMBAMUM LETTER PHASE-C NTENBAMUM LETTER " + + "PHASE-C KUOP NKAARAEBAMUM LETTER PHASE-C NSUNBAMUM LETTER PHASE-C NDAMBA" + + "MUM LETTER PHASE-C MA NSIEEBAMUM LETTER PHASE-C YAABAMUM LETTER PHASE-C " + + "NDAPBAMUM LETTER PHASE-C SHUEQBAMUM LETTER PHASE-C SETFONBAMUM LETTER PH" + + "ASE-C MBIBAMUM LETTER PHASE-C MAEMBABAMUM LETTER PHASE-C MBANYIBAMUM LET" + + "TER PHASE-C KEUSEUXBAMUM LETTER PHASE-C MBEUXBAMUM LETTER PHASE-C KEUMBA" + + "MUM LETTER PHASE-C MBAA PICKETBAMUM LETTER PHASE-C YUWOQBAMUM LETTER PHA" + + "SE-C NJEUXBAMUM LETTER PHASE-C MIEEBAMUM LETTER PHASE-C MUAEBAMUM LETTER" + + " PHASE-C SHIQBAMUM LETTER PHASE-C KEN LAWBAMUM LETTER PHASE-C KEN FATIGU" + + "EBAMUM LETTER PHASE-C NGAQBAMUM LETTER PHASE-C NAQBAMUM LETTER PHASE-C L" + + "IQBAMUM LETTER PHASE-C PINBAMUM LETTER PHASE-C PENBAMUM LETTER PHASE-C T" + + "ETBAMUM LETTER PHASE-D MBUOBAMUM LETTER PHASE-D WAPBAMUM LETTER PHASE-D " + + "NJIBAMUM LETTER PHASE-D MFONBAMUM LETTER PHASE-D NJIEEBAMUM LETTER PHASE" + + "-D LIEEBAMUM LETTER PHASE-D NJEUTBAMUM LETTER PHASE-D NSHEEBAMUM LETTER " + + "PHASE-D NGGAAMAEBAMUM LETTER PHASE-D NYAMBAMUM LETTER PHASE-D WUAENBAMUM" + + " LETTER PHASE-D NGKUNBAMUM LETTER PHASE-D SHEEBAMUM LETTER PHASE-D NGKAP" + + "BAMUM LETTER PHASE-D KEUAETMEUNBAMUM LETTER PHASE-D TEUTBAMUM LETTER PHA" + + "SE-D SHEUAEBAMUM LETTER PHASE-D NJAPBAMUM LETTER PHASE-D SUEBAMUM LETTER" + + " PHASE-D KETBAMUM LETTER PHASE-D YAEMMAEBAMUM LETTER PHASE-D KUOMBAMUM L" + + "ETTER PHASE-D SAPBAMUM LETTER PHASE-D MFEUTBAMUM LETTER PHASE-D NDEUXBAM" + + "UM LETTER PHASE-D MALEERIBAMUM LETTER PHASE-D MEUTBAMUM LETTER PHASE-D S" + + "EUAEQBAMUM LETTER PHASE-D YENBAMUM LETTER PHASE-D NJEUAEMBAMUM LETTER PH" + + "ASE-D KEUOT MBUAEBAMUM LETTER PHASE-D NGKEURIBAMUM LETTER PHASE-D TUBAMU" + + "M LETTER PHASE-D GHAABAMUM LETTER PHASE-D NGKYEEBAMUM LETTER PHASE-D FEU" + + "FEUAETBAMUM LETTER PHASE-D NDEEBAMUM LETTER PHASE-D MGBOFUMBAMUM LETTER " + + "PHASE-D LEUAEPBAMUM LETTER PHASE-D NDONBAMUM LETTER PHASE-D MONIBAMUM LE" + + "TTER PHASE-D MGBEUNBAMUM LETTER PHASE-D PUUTBAMUM LETTER PHASE-D MGBIEEB" + + "AMUM LETTER PHASE-D MFOBAMUM LETTER PHASE-D LUMBAMUM LETTER PHASE-D NSIE" + + "EPBAMUM LETTER PHASE-D MBAABAMUM LETTER PHASE-D KWAETBAMUM LETTER PHASE-" + + "D NYETBAMUM LETTER PHASE-D TEUAENBAMUM LETTER PHASE-D SOTBAMUM LETTER PH" + + "ASE-D YUWOQBAMUM LETTER PHASE-D KEUMBAMUM LETTER PHASE-D RAEMBAMUM LETTE") + ("" + + "R PHASE-D TEEEEBAMUM LETTER PHASE-D NGKEUAEQBAMUM LETTER PHASE-D MFEUAEB" + + "AMUM LETTER PHASE-D NSIEETBAMUM LETTER PHASE-D KEUPBAMUM LETTER PHASE-D " + + "PIPBAMUM LETTER PHASE-D PEUTAEBAMUM LETTER PHASE-D NYUEBAMUM LETTER PHAS" + + "E-D LETBAMUM LETTER PHASE-D NGGAAMBAMUM LETTER PHASE-D MFIEEBAMUM LETTER" + + " PHASE-D NGGWAENBAMUM LETTER PHASE-D YUOMBAMUM LETTER PHASE-D PAPBAMUM L" + + "ETTER PHASE-D YUOPBAMUM LETTER PHASE-D NDAMBAMUM LETTER PHASE-D NTEUMBAM" + + "UM LETTER PHASE-D SUAEBAMUM LETTER PHASE-D KUNBAMUM LETTER PHASE-D NGGEU" + + "XBAMUM LETTER PHASE-D NGKIEEBAMUM LETTER PHASE-D TUOTBAMUM LETTER PHASE-" + + "D MEUNBAMUM LETTER PHASE-D KUQBAMUM LETTER PHASE-D NSUMBAMUM LETTER PHAS" + + "E-D TEUNBAMUM LETTER PHASE-D MAENJETBAMUM LETTER PHASE-D NGGAPBAMUM LETT" + + "ER PHASE-D LEUMBAMUM LETTER PHASE-D NGGUOMBAMUM LETTER PHASE-D NSHUTBAMU" + + "M LETTER PHASE-D NJUEQBAMUM LETTER PHASE-D GHEUAEBAMUM LETTER PHASE-D KU" + + "BAMUM LETTER PHASE-D REN OLDBAMUM LETTER PHASE-D TAEBAMUM LETTER PHASE-D" + + " TOQBAMUM LETTER PHASE-D NYIBAMUM LETTER PHASE-D RIIBAMUM LETTER PHASE-D" + + " LEEEEBAMUM LETTER PHASE-D MEEEEBAMUM LETTER PHASE-D MBAMUM LETTER PHASE" + + "-D SUUBAMUM LETTER PHASE-D MUBAMUM LETTER PHASE-D SHIIBAMUM LETTER PHASE" + + "-D SHEUXBAMUM LETTER PHASE-D KYEEBAMUM LETTER PHASE-D NUBAMUM LETTER PHA" + + "SE-D SHUBAMUM LETTER PHASE-D NTEEBAMUM LETTER PHASE-D PEEBAMUM LETTER PH" + + "ASE-D NIBAMUM LETTER PHASE-D SHOQBAMUM LETTER PHASE-D PUQBAMUM LETTER PH" + + "ASE-D MVOPBAMUM LETTER PHASE-D LOQBAMUM LETTER PHASE-D REN MUCHBAMUM LET" + + "TER PHASE-D TIBAMUM LETTER PHASE-D NTUUBAMUM LETTER PHASE-D MBAA SEVENBA" + + "MUM LETTER PHASE-D SAQBAMUM LETTER PHASE-D FAABAMUM LETTER PHASE-E NDAPB" + + "AMUM LETTER PHASE-E TOONBAMUM LETTER PHASE-E MBEUMBAMUM LETTER PHASE-E L" + + "APBAMUM LETTER PHASE-E VOMBAMUM LETTER PHASE-E LOONBAMUM LETTER PHASE-E " + + "PAABAMUM LETTER PHASE-E SOMBAMUM LETTER PHASE-E RAQBAMUM LETTER PHASE-E " + + "NSHUOPBAMUM LETTER PHASE-E NDUNBAMUM LETTER PHASE-E PUAEBAMUM LETTER PHA" + + "SE-E TAMBAMUM LETTER PHASE-E NGKABAMUM LETTER PHASE-E KPEUXBAMUM LETTER " + + "PHASE-E WUOBAMUM LETTER PHASE-E SEEBAMUM LETTER PHASE-E NGGEUAETBAMUM LE" + + "TTER PHASE-E PAAMBAMUM LETTER PHASE-E TOOBAMUM LETTER PHASE-E KUOPBAMUM " + + "LETTER PHASE-E LOMBAMUM LETTER PHASE-E NSHIEEBAMUM LETTER PHASE-E NGOPBA" + + "MUM LETTER PHASE-E MAEMBAMUM LETTER PHASE-E NGKEUXBAMUM LETTER PHASE-E N" + + "GOQBAMUM LETTER PHASE-E NSHUEBAMUM LETTER PHASE-E RIMGBABAMUM LETTER PHA" + + "SE-E NJEUXBAMUM LETTER PHASE-E PEEMBAMUM LETTER PHASE-E SAABAMUM LETTER " + + "PHASE-E NGGURAEBAMUM LETTER PHASE-E MGBABAMUM LETTER PHASE-E GHEUXBAMUM " + + "LETTER PHASE-E NGKEUAEMBAMUM LETTER PHASE-E NJAEMLIBAMUM LETTER PHASE-E " + + "MAPBAMUM LETTER PHASE-E LOOTBAMUM LETTER PHASE-E NGGEEEEBAMUM LETTER PHA" + + "SE-E NDIQBAMUM LETTER PHASE-E TAEN NTEUMBAMUM LETTER PHASE-E SETBAMUM LE" + + "TTER PHASE-E PUMBAMUM LETTER PHASE-E NDAA SOFTNESSBAMUM LETTER PHASE-E N" + + "GGUAESHAE NYAMBAMUM LETTER PHASE-E YIEEBAMUM LETTER PHASE-E GHEUNBAMUM L" + + "ETTER PHASE-E TUAEBAMUM LETTER PHASE-E YEUAEBAMUM LETTER PHASE-E POBAMUM" + + " LETTER PHASE-E TUMAEBAMUM LETTER PHASE-E KEUAEBAMUM LETTER PHASE-E SUAE" + + "NBAMUM LETTER PHASE-E TEUAEQBAMUM LETTER PHASE-E VEUAEBAMUM LETTER PHASE" + + "-E WEUXBAMUM LETTER PHASE-E LAAMBAMUM LETTER PHASE-E PUBAMUM LETTER PHAS" + + "E-E TAAQBAMUM LETTER PHASE-E GHAAMAEBAMUM LETTER PHASE-E NGEUREUTBAMUM L" + + "ETTER PHASE-E SHEUAEQBAMUM LETTER PHASE-E MGBENBAMUM LETTER PHASE-E MBEE" + + "BAMUM LETTER PHASE-E NZAQBAMUM LETTER PHASE-E NKOMBAMUM LETTER PHASE-E G" + + "BETBAMUM LETTER PHASE-E TUMBAMUM LETTER PHASE-E KUETBAMUM LETTER PHASE-E" + + " YAPBAMUM LETTER PHASE-E NYI CLEAVERBAMUM LETTER PHASE-E YITBAMUM LETTER" + + " PHASE-E MFEUQBAMUM LETTER PHASE-E NDIAQBAMUM LETTER PHASE-E PIEEQBAMUM " + + "LETTER PHASE-E YUEQBAMUM LETTER PHASE-E LEUAEMBAMUM LETTER PHASE-E FUEBA" + + "MUM LETTER PHASE-E GBEUXBAMUM LETTER PHASE-E NGKUPBAMUM LETTER PHASE-E K" + + "ETBAMUM LETTER PHASE-E MAEBAMUM LETTER PHASE-E NGKAAMIBAMUM LETTER PHASE" + + "-E GHETBAMUM LETTER PHASE-E FABAMUM LETTER PHASE-E NTUMBAMUM LETTER PHAS" + + "E-E PEUTBAMUM LETTER PHASE-E YEUMBAMUM LETTER PHASE-E NGGEUAEBAMUM LETTE" + + "R PHASE-E NYI BETWEENBAMUM LETTER PHASE-E NZUQBAMUM LETTER PHASE-E POONB" + + "AMUM LETTER PHASE-E MIEEBAMUM LETTER PHASE-E FUETBAMUM LETTER PHASE-E NA" + + "EBAMUM LETTER PHASE-E MUAEBAMUM LETTER PHASE-E GHEUAEBAMUM LETTER PHASE-" + + "E FU IBAMUM LETTER PHASE-E MVIBAMUM LETTER PHASE-E PUAQBAMUM LETTER PHAS" + + "E-E NGKUMBAMUM LETTER PHASE-E KUTBAMUM LETTER PHASE-E PIETBAMUM LETTER P" + + "HASE-E NTAPBAMUM LETTER PHASE-E YEUAETBAMUM LETTER PHASE-E NGGUPBAMUM LE" + + "TTER PHASE-E PA PEOPLEBAMUM LETTER PHASE-E FU CALLBAMUM LETTER PHASE-E F" + + "OMBAMUM LETTER PHASE-E NJEEBAMUM LETTER PHASE-E ABAMUM LETTER PHASE-E TO" + + "QBAMUM LETTER PHASE-E OBAMUM LETTER PHASE-E IBAMUM LETTER PHASE-E LAQBAM" + + "UM LETTER PHASE-E PA PLURALBAMUM LETTER PHASE-E TAABAMUM LETTER PHASE-E ") + ("" + + "TAQBAMUM LETTER PHASE-E NDAA MY HOUSEBAMUM LETTER PHASE-E SHIQBAMUM LETT" + + "ER PHASE-E YEUXBAMUM LETTER PHASE-E NGUAEBAMUM LETTER PHASE-E YUAENBAMUM" + + " LETTER PHASE-E YOQ SWIMMINGBAMUM LETTER PHASE-E YOQ COVERBAMUM LETTER P" + + "HASE-E YUQBAMUM LETTER PHASE-E YUNBAMUM LETTER PHASE-E KEUXBAMUM LETTER " + + "PHASE-E PEUXBAMUM LETTER PHASE-E NJEE EPOCHBAMUM LETTER PHASE-E PUEBAMUM" + + " LETTER PHASE-E WUEBAMUM LETTER PHASE-E FEEBAMUM LETTER PHASE-E VEEBAMUM" + + " LETTER PHASE-E LUBAMUM LETTER PHASE-E MIBAMUM LETTER PHASE-E REUXBAMUM " + + "LETTER PHASE-E RAEBAMUM LETTER PHASE-E NGUAETBAMUM LETTER PHASE-E NGABAM" + + "UM LETTER PHASE-E SHOBAMUM LETTER PHASE-E SHOQBAMUM LETTER PHASE-E FU RE" + + "MEDYBAMUM LETTER PHASE-E NABAMUM LETTER PHASE-E PIBAMUM LETTER PHASE-E L" + + "OQBAMUM LETTER PHASE-E KOBAMUM LETTER PHASE-E MENBAMUM LETTER PHASE-E MA" + + "BAMUM LETTER PHASE-E MAQBAMUM LETTER PHASE-E TEUBAMUM LETTER PHASE-E KIB" + + "AMUM LETTER PHASE-E MONBAMUM LETTER PHASE-E TENBAMUM LETTER PHASE-E FAQB" + + "AMUM LETTER PHASE-E GHOMBAMUM LETTER PHASE-F KABAMUM LETTER PHASE-F UBAM" + + "UM LETTER PHASE-F KUBAMUM LETTER PHASE-F EEBAMUM LETTER PHASE-F REEBAMUM" + + " LETTER PHASE-F TAEBAMUM LETTER PHASE-F NYIBAMUM LETTER PHASE-F LABAMUM " + + "LETTER PHASE-F RIIBAMUM LETTER PHASE-F RIEEBAMUM LETTER PHASE-F MEEEEBAM" + + "UM LETTER PHASE-F TAABAMUM LETTER PHASE-F NDAABAMUM LETTER PHASE-F NJAEM" + + "BAMUM LETTER PHASE-F MBAMUM LETTER PHASE-F SUUBAMUM LETTER PHASE-F SHIIB" + + "AMUM LETTER PHASE-F SIBAMUM LETTER PHASE-F SEUXBAMUM LETTER PHASE-F KYEE" + + "BAMUM LETTER PHASE-F KETBAMUM LETTER PHASE-F NUAEBAMUM LETTER PHASE-F NU" + + "BAMUM LETTER PHASE-F NJUAEBAMUM LETTER PHASE-F YOQBAMUM LETTER PHASE-F S" + + "HUBAMUM LETTER PHASE-F YABAMUM LETTER PHASE-F NSHABAMUM LETTER PHASE-F P" + + "EUXBAMUM LETTER PHASE-F NTEEBAMUM LETTER PHASE-F WUEBAMUM LETTER PHASE-F" + + " PEEBAMUM LETTER PHASE-F RUBAMUM LETTER PHASE-F NIBAMUM LETTER PHASE-F R" + + "EUXBAMUM LETTER PHASE-F KENBAMUM LETTER PHASE-F NGKWAENBAMUM LETTER PHAS" + + "E-F NGGABAMUM LETTER PHASE-F SHOBAMUM LETTER PHASE-F PUAEBAMUM LETTER PH" + + "ASE-F FOMBAMUM LETTER PHASE-F WABAMUM LETTER PHASE-F LIBAMUM LETTER PHAS" + + "E-F LOQBAMUM LETTER PHASE-F KOBAMUM LETTER PHASE-F MBENBAMUM LETTER PHAS" + + "E-F RENBAMUM LETTER PHASE-F MABAMUM LETTER PHASE-F MOBAMUM LETTER PHASE-" + + "F MBAABAMUM LETTER PHASE-F TETBAMUM LETTER PHASE-F KPABAMUM LETTER PHASE" + + "-F SAMBABAMUM LETTER PHASE-F VUEQMRO LETTER TAMRO LETTER NGIMRO LETTER Y" + + "OMRO LETTER MIMMRO LETTER BAMRO LETTER DAMRO LETTER AMRO LETTER PHIMRO L" + + "ETTER KHAIMRO LETTER HAOMRO LETTER DAIMRO LETTER CHUMRO LETTER KEAAEMRO " + + "LETTER OLMRO LETTER MAEMMRO LETTER NINMRO LETTER PAMRO LETTER OOMRO LETT" + + "ER OMRO LETTER ROMRO LETTER SHIMRO LETTER THEAMRO LETTER EAMRO LETTER WA" + + "MRO LETTER EMRO LETTER KOMRO LETTER LANMRO LETTER LAMRO LETTER HAIMRO LE" + + "TTER RIMRO LETTER TEKMRO DIGIT ZEROMRO DIGIT ONEMRO DIGIT TWOMRO DIGIT T" + + "HREEMRO DIGIT FOURMRO DIGIT FIVEMRO DIGIT SIXMRO DIGIT SEVENMRO DIGIT EI" + + "GHTMRO DIGIT NINEMRO DANDAMRO DOUBLE DANDABASSA VAH LETTER ENNIBASSA VAH" + + " LETTER KABASSA VAH LETTER SEBASSA VAH LETTER FABASSA VAH LETTER MBEBASS" + + "A VAH LETTER YIEBASSA VAH LETTER GAHBASSA VAH LETTER DHIIBASSA VAH LETTE" + + "R KPAHBASSA VAH LETTER JOBASSA VAH LETTER HWAHBASSA VAH LETTER WABASSA V" + + "AH LETTER ZOBASSA VAH LETTER GBUBASSA VAH LETTER DOBASSA VAH LETTER CEBA" + + "SSA VAH LETTER UWUBASSA VAH LETTER TOBASSA VAH LETTER BABASSA VAH LETTER" + + " VUBASSA VAH LETTER YEINBASSA VAH LETTER PABASSA VAH LETTER WADDABASSA V" + + "AH LETTER ABASSA VAH LETTER OBASSA VAH LETTER OOBASSA VAH LETTER UBASSA " + + "VAH LETTER EEBASSA VAH LETTER EBASSA VAH LETTER IBASSA VAH COMBINING HIG" + + "H TONEBASSA VAH COMBINING LOW TONEBASSA VAH COMBINING MID TONEBASSA VAH " + + "COMBINING LOW-MID TONEBASSA VAH COMBINING HIGH-LOW TONEBASSA VAH FULL ST" + + "OPPAHAWH HMONG VOWEL KEEBPAHAWH HMONG VOWEL KEEVPAHAWH HMONG VOWEL KIBPA" + + "HAWH HMONG VOWEL KIVPAHAWH HMONG VOWEL KAUBPAHAWH HMONG VOWEL KAUVPAHAWH" + + " HMONG VOWEL KUBPAHAWH HMONG VOWEL KUVPAHAWH HMONG VOWEL KEBPAHAWH HMONG" + + " VOWEL KEVPAHAWH HMONG VOWEL KAIBPAHAWH HMONG VOWEL KAIVPAHAWH HMONG VOW" + + "EL KOOBPAHAWH HMONG VOWEL KOOVPAHAWH HMONG VOWEL KAWBPAHAWH HMONG VOWEL " + + "KAWVPAHAWH HMONG VOWEL KUABPAHAWH HMONG VOWEL KUAVPAHAWH HMONG VOWEL KOB" + + "PAHAWH HMONG VOWEL KOVPAHAWH HMONG VOWEL KIABPAHAWH HMONG VOWEL KIAVPAHA" + + "WH HMONG VOWEL KABPAHAWH HMONG VOWEL KAVPAHAWH HMONG VOWEL KWBPAHAWH HMO" + + "NG VOWEL KWVPAHAWH HMONG VOWEL KAABPAHAWH HMONG VOWEL KAAVPAHAWH HMONG C" + + "ONSONANT VAUPAHAWH HMONG CONSONANT NTSAUPAHAWH HMONG CONSONANT LAUPAHAWH" + + " HMONG CONSONANT HAUPAHAWH HMONG CONSONANT NLAUPAHAWH HMONG CONSONANT RA" + + "UPAHAWH HMONG CONSONANT NKAUPAHAWH HMONG CONSONANT QHAUPAHAWH HMONG CONS" + + "ONANT YAUPAHAWH HMONG CONSONANT HLAUPAHAWH HMONG CONSONANT MAUPAHAWH HMO" + + "NG CONSONANT CHAUPAHAWH HMONG CONSONANT NCHAUPAHAWH HMONG CONSONANT HNAU") + ("" + + "PAHAWH HMONG CONSONANT PLHAUPAHAWH HMONG CONSONANT NTHAUPAHAWH HMONG CON" + + "SONANT NAUPAHAWH HMONG CONSONANT AUPAHAWH HMONG CONSONANT XAUPAHAWH HMON" + + "G CONSONANT CAUPAHAWH HMONG MARK CIM TUBPAHAWH HMONG MARK CIM SOPAHAWH H" + + "MONG MARK CIM KESPAHAWH HMONG MARK CIM KHAVPAHAWH HMONG MARK CIM SUAMPAH" + + "AWH HMONG MARK CIM HOMPAHAWH HMONG MARK CIM TAUMPAHAWH HMONG SIGN VOS TH" + + "OMPAHAWH HMONG SIGN VOS TSHAB CEEBPAHAWH HMONG SIGN CIM CHEEMPAHAWH HMON" + + "G SIGN VOS THIABPAHAWH HMONG SIGN VOS FEEMPAHAWH HMONG SIGN XYEEM NTXIVP" + + "AHAWH HMONG SIGN XYEEM RHOPAHAWH HMONG SIGN XYEEM TOVPAHAWH HMONG SIGN X" + + "YEEM FAIBPAHAWH HMONG SIGN VOS SEEVPAHAWH HMONG SIGN MEEJ SUABPAHAWH HMO" + + "NG SIGN VOS NRUAPAHAWH HMONG SIGN IB YAMPAHAWH HMONG SIGN XAUSPAHAWH HMO" + + "NG SIGN CIM TSOV ROGPAHAWH HMONG DIGIT ZEROPAHAWH HMONG DIGIT ONEPAHAWH " + + "HMONG DIGIT TWOPAHAWH HMONG DIGIT THREEPAHAWH HMONG DIGIT FOURPAHAWH HMO" + + "NG DIGIT FIVEPAHAWH HMONG DIGIT SIXPAHAWH HMONG DIGIT SEVENPAHAWH HMONG " + + "DIGIT EIGHTPAHAWH HMONG DIGIT NINEPAHAWH HMONG NUMBER TENSPAHAWH HMONG N" + + "UMBER HUNDREDSPAHAWH HMONG NUMBER TEN THOUSANDSPAHAWH HMONG NUMBER MILLI" + + "ONSPAHAWH HMONG NUMBER HUNDRED MILLIONSPAHAWH HMONG NUMBER TEN BILLIONSP" + + "AHAWH HMONG NUMBER TRILLIONSPAHAWH HMONG SIGN VOS LUBPAHAWH HMONG SIGN X" + + "YOOPAHAWH HMONG SIGN HLIPAHAWH HMONG SIGN THIRD-STAGE HLIPAHAWH HMONG SI" + + "GN ZWJ THAJPAHAWH HMONG SIGN HNUBPAHAWH HMONG SIGN NQIGPAHAWH HMONG SIGN" + + " XIABPAHAWH HMONG SIGN NTUJPAHAWH HMONG SIGN AVPAHAWH HMONG SIGN TXHEEJ " + + "CEEVPAHAWH HMONG SIGN MEEJ TSEEBPAHAWH HMONG SIGN TAUPAHAWH HMONG SIGN L" + + "OSPAHAWH HMONG SIGN MUSPAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOGPAHAWH HM" + + "ONG SIGN CIM CUAM TSHOOJPAHAWH HMONG SIGN CIM TXWVPAHAWH HMONG SIGN CIM " + + "TXWV CHWVPAHAWH HMONG SIGN CIM PUB DAWBPAHAWH HMONG SIGN CIM NRES TOSPAH" + + "AWH HMONG CLAN SIGN TSHEEJPAHAWH HMONG CLAN SIGN YEEGPAHAWH HMONG CLAN S" + + "IGN LISPAHAWH HMONG CLAN SIGN LAUJPAHAWH HMONG CLAN SIGN XYOOJPAHAWH HMO" + + "NG CLAN SIGN KOOPAHAWH HMONG CLAN SIGN HAWJPAHAWH HMONG CLAN SIGN MUASPA" + + "HAWH HMONG CLAN SIGN THOJPAHAWH HMONG CLAN SIGN TSABPAHAWH HMONG CLAN SI" + + "GN PHABPAHAWH HMONG CLAN SIGN KHABPAHAWH HMONG CLAN SIGN HAMPAHAWH HMONG" + + " CLAN SIGN VAJPAHAWH HMONG CLAN SIGN FAJPAHAWH HMONG CLAN SIGN YAJPAHAWH" + + " HMONG CLAN SIGN TSWBPAHAWH HMONG CLAN SIGN KWMPAHAWH HMONG CLAN SIGN VW" + + "JMIAO LETTER PAMIAO LETTER BAMIAO LETTER YI PAMIAO LETTER PLAMIAO LETTER" + + " MAMIAO LETTER MHAMIAO LETTER ARCHAIC MAMIAO LETTER FAMIAO LETTER VAMIAO" + + " LETTER VFAMIAO LETTER TAMIAO LETTER DAMIAO LETTER YI TTAMIAO LETTER YI " + + "TAMIAO LETTER TTAMIAO LETTER DDAMIAO LETTER NAMIAO LETTER NHAMIAO LETTER" + + " YI NNAMIAO LETTER ARCHAIC NAMIAO LETTER NNAMIAO LETTER NNHAMIAO LETTER " + + "LAMIAO LETTER LYAMIAO LETTER LHAMIAO LETTER LHYAMIAO LETTER TLHAMIAO LET" + + "TER DLHAMIAO LETTER TLHYAMIAO LETTER DLHYAMIAO LETTER KAMIAO LETTER GAMI" + + "AO LETTER YI KAMIAO LETTER QAMIAO LETTER QGAMIAO LETTER NGAMIAO LETTER N" + + "GHAMIAO LETTER ARCHAIC NGAMIAO LETTER HAMIAO LETTER XAMIAO LETTER GHAMIA" + + "O LETTER GHHAMIAO LETTER TSSAMIAO LETTER DZZAMIAO LETTER NYAMIAO LETTER " + + "NYHAMIAO LETTER TSHAMIAO LETTER DZHAMIAO LETTER YI TSHAMIAO LETTER YI DZ" + + "HAMIAO LETTER REFORMED TSHAMIAO LETTER SHAMIAO LETTER SSAMIAO LETTER ZHA" + + "MIAO LETTER ZSHAMIAO LETTER TSAMIAO LETTER DZAMIAO LETTER YI TSAMIAO LET" + + "TER SAMIAO LETTER ZAMIAO LETTER ZSAMIAO LETTER ZZAMIAO LETTER ZZSAMIAO L" + + "ETTER ARCHAIC ZZAMIAO LETTER ZZYAMIAO LETTER ZZSYAMIAO LETTER WAMIAO LET" + + "TER AHMIAO LETTER HHAMIAO LETTER NASALIZATIONMIAO SIGN ASPIRATIONMIAO SI" + + "GN REFORMED VOICINGMIAO SIGN REFORMED ASPIRATIONMIAO VOWEL SIGN AMIAO VO" + + "WEL SIGN AAMIAO VOWEL SIGN AHHMIAO VOWEL SIGN ANMIAO VOWEL SIGN ANGMIAO " + + "VOWEL SIGN OMIAO VOWEL SIGN OOMIAO VOWEL SIGN WOMIAO VOWEL SIGN WMIAO VO" + + "WEL SIGN EMIAO VOWEL SIGN ENMIAO VOWEL SIGN ENGMIAO VOWEL SIGN OEYMIAO V" + + "OWEL SIGN IMIAO VOWEL SIGN IAMIAO VOWEL SIGN IANMIAO VOWEL SIGN IANGMIAO" + + " VOWEL SIGN IOMIAO VOWEL SIGN IEMIAO VOWEL SIGN IIMIAO VOWEL SIGN IUMIAO" + + " VOWEL SIGN INGMIAO VOWEL SIGN UMIAO VOWEL SIGN UAMIAO VOWEL SIGN UANMIA" + + "O VOWEL SIGN UANGMIAO VOWEL SIGN UUMIAO VOWEL SIGN UEIMIAO VOWEL SIGN UN" + + "GMIAO VOWEL SIGN YMIAO VOWEL SIGN YIMIAO VOWEL SIGN AEMIAO VOWEL SIGN AE" + + "EMIAO VOWEL SIGN ERRMIAO VOWEL SIGN ROUNDED ERRMIAO VOWEL SIGN ERMIAO VO" + + "WEL SIGN ROUNDED ERMIAO VOWEL SIGN AIMIAO VOWEL SIGN EIMIAO VOWEL SIGN A" + + "UMIAO VOWEL SIGN OUMIAO VOWEL SIGN NMIAO VOWEL SIGN NGMIAO TONE RIGHTMIA" + + "O TONE TOP RIGHTMIAO TONE ABOVEMIAO TONE BELOWMIAO LETTER TONE-2MIAO LET" + + "TER TONE-3MIAO LETTER TONE-4MIAO LETTER TONE-5MIAO LETTER TONE-6MIAO LET" + + "TER TONE-7MIAO LETTER TONE-8MIAO LETTER REFORMED TONE-1MIAO LETTER REFOR" + + "MED TONE-2MIAO LETTER REFORMED TONE-4MIAO LETTER REFORMED TONE-5MIAO LET" + + "TER REFORMED TONE-6MIAO LETTER REFORMED TONE-8TANGUT ITERATION MARKTANGU") + ("" + + "T COMPONENT-001TANGUT COMPONENT-002TANGUT COMPONENT-003TANGUT COMPONENT-" + + "004TANGUT COMPONENT-005TANGUT COMPONENT-006TANGUT COMPONENT-007TANGUT CO" + + "MPONENT-008TANGUT COMPONENT-009TANGUT COMPONENT-010TANGUT COMPONENT-011T" + + "ANGUT COMPONENT-012TANGUT COMPONENT-013TANGUT COMPONENT-014TANGUT COMPON" + + "ENT-015TANGUT COMPONENT-016TANGUT COMPONENT-017TANGUT COMPONENT-018TANGU" + + "T COMPONENT-019TANGUT COMPONENT-020TANGUT COMPONENT-021TANGUT COMPONENT-" + + "022TANGUT COMPONENT-023TANGUT COMPONENT-024TANGUT COMPONENT-025TANGUT CO" + + "MPONENT-026TANGUT COMPONENT-027TANGUT COMPONENT-028TANGUT COMPONENT-029T" + + "ANGUT COMPONENT-030TANGUT COMPONENT-031TANGUT COMPONENT-032TANGUT COMPON" + + "ENT-033TANGUT COMPONENT-034TANGUT COMPONENT-035TANGUT COMPONENT-036TANGU" + + "T COMPONENT-037TANGUT COMPONENT-038TANGUT COMPONENT-039TANGUT COMPONENT-" + + "040TANGUT COMPONENT-041TANGUT COMPONENT-042TANGUT COMPONENT-043TANGUT CO" + + "MPONENT-044TANGUT COMPONENT-045TANGUT COMPONENT-046TANGUT COMPONENT-047T" + + "ANGUT COMPONENT-048TANGUT COMPONENT-049TANGUT COMPONENT-050TANGUT COMPON" + + "ENT-051TANGUT COMPONENT-052TANGUT COMPONENT-053TANGUT COMPONENT-054TANGU" + + "T COMPONENT-055TANGUT COMPONENT-056TANGUT COMPONENT-057TANGUT COMPONENT-" + + "058TANGUT COMPONENT-059TANGUT COMPONENT-060TANGUT COMPONENT-061TANGUT CO" + + "MPONENT-062TANGUT COMPONENT-063TANGUT COMPONENT-064TANGUT COMPONENT-065T" + + "ANGUT COMPONENT-066TANGUT COMPONENT-067TANGUT COMPONENT-068TANGUT COMPON" + + "ENT-069TANGUT COMPONENT-070TANGUT COMPONENT-071TANGUT COMPONENT-072TANGU" + + "T COMPONENT-073TANGUT COMPONENT-074TANGUT COMPONENT-075TANGUT COMPONENT-" + + "076TANGUT COMPONENT-077TANGUT COMPONENT-078TANGUT COMPONENT-079TANGUT CO" + + "MPONENT-080TANGUT COMPONENT-081TANGUT COMPONENT-082TANGUT COMPONENT-083T" + + "ANGUT COMPONENT-084TANGUT COMPONENT-085TANGUT COMPONENT-086TANGUT COMPON" + + "ENT-087TANGUT COMPONENT-088TANGUT COMPONENT-089TANGUT COMPONENT-090TANGU" + + "T COMPONENT-091TANGUT COMPONENT-092TANGUT COMPONENT-093TANGUT COMPONENT-" + + "094TANGUT COMPONENT-095TANGUT COMPONENT-096TANGUT COMPONENT-097TANGUT CO" + + "MPONENT-098TANGUT COMPONENT-099TANGUT COMPONENT-100TANGUT COMPONENT-101T" + + "ANGUT COMPONENT-102TANGUT COMPONENT-103TANGUT COMPONENT-104TANGUT COMPON" + + "ENT-105TANGUT COMPONENT-106TANGUT COMPONENT-107TANGUT COMPONENT-108TANGU" + + "T COMPONENT-109TANGUT COMPONENT-110TANGUT COMPONENT-111TANGUT COMPONENT-" + + "112TANGUT COMPONENT-113TANGUT COMPONENT-114TANGUT COMPONENT-115TANGUT CO" + + "MPONENT-116TANGUT COMPONENT-117TANGUT COMPONENT-118TANGUT COMPONENT-119T" + + "ANGUT COMPONENT-120TANGUT COMPONENT-121TANGUT COMPONENT-122TANGUT COMPON" + + "ENT-123TANGUT COMPONENT-124TANGUT COMPONENT-125TANGUT COMPONENT-126TANGU" + + "T COMPONENT-127TANGUT COMPONENT-128TANGUT COMPONENT-129TANGUT COMPONENT-" + + "130TANGUT COMPONENT-131TANGUT COMPONENT-132TANGUT COMPONENT-133TANGUT CO" + + "MPONENT-134TANGUT COMPONENT-135TANGUT COMPONENT-136TANGUT COMPONENT-137T" + + "ANGUT COMPONENT-138TANGUT COMPONENT-139TANGUT COMPONENT-140TANGUT COMPON" + + "ENT-141TANGUT COMPONENT-142TANGUT COMPONENT-143TANGUT COMPONENT-144TANGU" + + "T COMPONENT-145TANGUT COMPONENT-146TANGUT COMPONENT-147TANGUT COMPONENT-" + + "148TANGUT COMPONENT-149TANGUT COMPONENT-150TANGUT COMPONENT-151TANGUT CO" + + "MPONENT-152TANGUT COMPONENT-153TANGUT COMPONENT-154TANGUT COMPONENT-155T" + + "ANGUT COMPONENT-156TANGUT COMPONENT-157TANGUT COMPONENT-158TANGUT COMPON" + + "ENT-159TANGUT COMPONENT-160TANGUT COMPONENT-161TANGUT COMPONENT-162TANGU" + + "T COMPONENT-163TANGUT COMPONENT-164TANGUT COMPONENT-165TANGUT COMPONENT-" + + "166TANGUT COMPONENT-167TANGUT COMPONENT-168TANGUT COMPONENT-169TANGUT CO" + + "MPONENT-170TANGUT COMPONENT-171TANGUT COMPONENT-172TANGUT COMPONENT-173T" + + "ANGUT COMPONENT-174TANGUT COMPONENT-175TANGUT COMPONENT-176TANGUT COMPON" + + "ENT-177TANGUT COMPONENT-178TANGUT COMPONENT-179TANGUT COMPONENT-180TANGU" + + "T COMPONENT-181TANGUT COMPONENT-182TANGUT COMPONENT-183TANGUT COMPONENT-" + + "184TANGUT COMPONENT-185TANGUT COMPONENT-186TANGUT COMPONENT-187TANGUT CO" + + "MPONENT-188TANGUT COMPONENT-189TANGUT COMPONENT-190TANGUT COMPONENT-191T" + + "ANGUT COMPONENT-192TANGUT COMPONENT-193TANGUT COMPONENT-194TANGUT COMPON" + + "ENT-195TANGUT COMPONENT-196TANGUT COMPONENT-197TANGUT COMPONENT-198TANGU" + + "T COMPONENT-199TANGUT COMPONENT-200TANGUT COMPONENT-201TANGUT COMPONENT-" + + "202TANGUT COMPONENT-203TANGUT COMPONENT-204TANGUT COMPONENT-205TANGUT CO" + + "MPONENT-206TANGUT COMPONENT-207TANGUT COMPONENT-208TANGUT COMPONENT-209T" + + "ANGUT COMPONENT-210TANGUT COMPONENT-211TANGUT COMPONENT-212TANGUT COMPON" + + "ENT-213TANGUT COMPONENT-214TANGUT COMPONENT-215TANGUT COMPONENT-216TANGU" + + "T COMPONENT-217TANGUT COMPONENT-218TANGUT COMPONENT-219TANGUT COMPONENT-" + + "220TANGUT COMPONENT-221TANGUT COMPONENT-222TANGUT COMPONENT-223TANGUT CO" + + "MPONENT-224TANGUT COMPONENT-225TANGUT COMPONENT-226TANGUT COMPONENT-227T" + + "ANGUT COMPONENT-228TANGUT COMPONENT-229TANGUT COMPONENT-230TANGUT COMPON") + ("" + + "ENT-231TANGUT COMPONENT-232TANGUT COMPONENT-233TANGUT COMPONENT-234TANGU" + + "T COMPONENT-235TANGUT COMPONENT-236TANGUT COMPONENT-237TANGUT COMPONENT-" + + "238TANGUT COMPONENT-239TANGUT COMPONENT-240TANGUT COMPONENT-241TANGUT CO" + + "MPONENT-242TANGUT COMPONENT-243TANGUT COMPONENT-244TANGUT COMPONENT-245T" + + "ANGUT COMPONENT-246TANGUT COMPONENT-247TANGUT COMPONENT-248TANGUT COMPON" + + "ENT-249TANGUT COMPONENT-250TANGUT COMPONENT-251TANGUT COMPONENT-252TANGU" + + "T COMPONENT-253TANGUT COMPONENT-254TANGUT COMPONENT-255TANGUT COMPONENT-" + + "256TANGUT COMPONENT-257TANGUT COMPONENT-258TANGUT COMPONENT-259TANGUT CO" + + "MPONENT-260TANGUT COMPONENT-261TANGUT COMPONENT-262TANGUT COMPONENT-263T" + + "ANGUT COMPONENT-264TANGUT COMPONENT-265TANGUT COMPONENT-266TANGUT COMPON" + + "ENT-267TANGUT COMPONENT-268TANGUT COMPONENT-269TANGUT COMPONENT-270TANGU" + + "T COMPONENT-271TANGUT COMPONENT-272TANGUT COMPONENT-273TANGUT COMPONENT-" + + "274TANGUT COMPONENT-275TANGUT COMPONENT-276TANGUT COMPONENT-277TANGUT CO" + + "MPONENT-278TANGUT COMPONENT-279TANGUT COMPONENT-280TANGUT COMPONENT-281T" + + "ANGUT COMPONENT-282TANGUT COMPONENT-283TANGUT COMPONENT-284TANGUT COMPON" + + "ENT-285TANGUT COMPONENT-286TANGUT COMPONENT-287TANGUT COMPONENT-288TANGU" + + "T COMPONENT-289TANGUT COMPONENT-290TANGUT COMPONENT-291TANGUT COMPONENT-" + + "292TANGUT COMPONENT-293TANGUT COMPONENT-294TANGUT COMPONENT-295TANGUT CO" + + "MPONENT-296TANGUT COMPONENT-297TANGUT COMPONENT-298TANGUT COMPONENT-299T" + + "ANGUT COMPONENT-300TANGUT COMPONENT-301TANGUT COMPONENT-302TANGUT COMPON" + + "ENT-303TANGUT COMPONENT-304TANGUT COMPONENT-305TANGUT COMPONENT-306TANGU" + + "T COMPONENT-307TANGUT COMPONENT-308TANGUT COMPONENT-309TANGUT COMPONENT-" + + "310TANGUT COMPONENT-311TANGUT COMPONENT-312TANGUT COMPONENT-313TANGUT CO" + + "MPONENT-314TANGUT COMPONENT-315TANGUT COMPONENT-316TANGUT COMPONENT-317T" + + "ANGUT COMPONENT-318TANGUT COMPONENT-319TANGUT COMPONENT-320TANGUT COMPON" + + "ENT-321TANGUT COMPONENT-322TANGUT COMPONENT-323TANGUT COMPONENT-324TANGU" + + "T COMPONENT-325TANGUT COMPONENT-326TANGUT COMPONENT-327TANGUT COMPONENT-" + + "328TANGUT COMPONENT-329TANGUT COMPONENT-330TANGUT COMPONENT-331TANGUT CO" + + "MPONENT-332TANGUT COMPONENT-333TANGUT COMPONENT-334TANGUT COMPONENT-335T" + + "ANGUT COMPONENT-336TANGUT COMPONENT-337TANGUT COMPONENT-338TANGUT COMPON" + + "ENT-339TANGUT COMPONENT-340TANGUT COMPONENT-341TANGUT COMPONENT-342TANGU" + + "T COMPONENT-343TANGUT COMPONENT-344TANGUT COMPONENT-345TANGUT COMPONENT-" + + "346TANGUT COMPONENT-347TANGUT COMPONENT-348TANGUT COMPONENT-349TANGUT CO" + + "MPONENT-350TANGUT COMPONENT-351TANGUT COMPONENT-352TANGUT COMPONENT-353T" + + "ANGUT COMPONENT-354TANGUT COMPONENT-355TANGUT COMPONENT-356TANGUT COMPON" + + "ENT-357TANGUT COMPONENT-358TANGUT COMPONENT-359TANGUT COMPONENT-360TANGU" + + "T COMPONENT-361TANGUT COMPONENT-362TANGUT COMPONENT-363TANGUT COMPONENT-" + + "364TANGUT COMPONENT-365TANGUT COMPONENT-366TANGUT COMPONENT-367TANGUT CO" + + "MPONENT-368TANGUT COMPONENT-369TANGUT COMPONENT-370TANGUT COMPONENT-371T" + + "ANGUT COMPONENT-372TANGUT COMPONENT-373TANGUT COMPONENT-374TANGUT COMPON" + + "ENT-375TANGUT COMPONENT-376TANGUT COMPONENT-377TANGUT COMPONENT-378TANGU" + + "T COMPONENT-379TANGUT COMPONENT-380TANGUT COMPONENT-381TANGUT COMPONENT-" + + "382TANGUT COMPONENT-383TANGUT COMPONENT-384TANGUT COMPONENT-385TANGUT CO" + + "MPONENT-386TANGUT COMPONENT-387TANGUT COMPONENT-388TANGUT COMPONENT-389T" + + "ANGUT COMPONENT-390TANGUT COMPONENT-391TANGUT COMPONENT-392TANGUT COMPON" + + "ENT-393TANGUT COMPONENT-394TANGUT COMPONENT-395TANGUT COMPONENT-396TANGU" + + "T COMPONENT-397TANGUT COMPONENT-398TANGUT COMPONENT-399TANGUT COMPONENT-" + + "400TANGUT COMPONENT-401TANGUT COMPONENT-402TANGUT COMPONENT-403TANGUT CO" + + "MPONENT-404TANGUT COMPONENT-405TANGUT COMPONENT-406TANGUT COMPONENT-407T" + + "ANGUT COMPONENT-408TANGUT COMPONENT-409TANGUT COMPONENT-410TANGUT COMPON" + + "ENT-411TANGUT COMPONENT-412TANGUT COMPONENT-413TANGUT COMPONENT-414TANGU" + + "T COMPONENT-415TANGUT COMPONENT-416TANGUT COMPONENT-417TANGUT COMPONENT-" + + "418TANGUT COMPONENT-419TANGUT COMPONENT-420TANGUT COMPONENT-421TANGUT CO" + + "MPONENT-422TANGUT COMPONENT-423TANGUT COMPONENT-424TANGUT COMPONENT-425T" + + "ANGUT COMPONENT-426TANGUT COMPONENT-427TANGUT COMPONENT-428TANGUT COMPON" + + "ENT-429TANGUT COMPONENT-430TANGUT COMPONENT-431TANGUT COMPONENT-432TANGU" + + "T COMPONENT-433TANGUT COMPONENT-434TANGUT COMPONENT-435TANGUT COMPONENT-" + + "436TANGUT COMPONENT-437TANGUT COMPONENT-438TANGUT COMPONENT-439TANGUT CO" + + "MPONENT-440TANGUT COMPONENT-441TANGUT COMPONENT-442TANGUT COMPONENT-443T" + + "ANGUT COMPONENT-444TANGUT COMPONENT-445TANGUT COMPONENT-446TANGUT COMPON" + + "ENT-447TANGUT COMPONENT-448TANGUT COMPONENT-449TANGUT COMPONENT-450TANGU" + + "T COMPONENT-451TANGUT COMPONENT-452TANGUT COMPONENT-453TANGUT COMPONENT-" + + "454TANGUT COMPONENT-455TANGUT COMPONENT-456TANGUT COMPONENT-457TANGUT CO" + + "MPONENT-458TANGUT COMPONENT-459TANGUT COMPONENT-460TANGUT COMPONENT-461T") + ("" + + "ANGUT COMPONENT-462TANGUT COMPONENT-463TANGUT COMPONENT-464TANGUT COMPON" + + "ENT-465TANGUT COMPONENT-466TANGUT COMPONENT-467TANGUT COMPONENT-468TANGU" + + "T COMPONENT-469TANGUT COMPONENT-470TANGUT COMPONENT-471TANGUT COMPONENT-" + + "472TANGUT COMPONENT-473TANGUT COMPONENT-474TANGUT COMPONENT-475TANGUT CO" + + "MPONENT-476TANGUT COMPONENT-477TANGUT COMPONENT-478TANGUT COMPONENT-479T" + + "ANGUT COMPONENT-480TANGUT COMPONENT-481TANGUT COMPONENT-482TANGUT COMPON" + + "ENT-483TANGUT COMPONENT-484TANGUT COMPONENT-485TANGUT COMPONENT-486TANGU" + + "T COMPONENT-487TANGUT COMPONENT-488TANGUT COMPONENT-489TANGUT COMPONENT-" + + "490TANGUT COMPONENT-491TANGUT COMPONENT-492TANGUT COMPONENT-493TANGUT CO" + + "MPONENT-494TANGUT COMPONENT-495TANGUT COMPONENT-496TANGUT COMPONENT-497T" + + "ANGUT COMPONENT-498TANGUT COMPONENT-499TANGUT COMPONENT-500TANGUT COMPON" + + "ENT-501TANGUT COMPONENT-502TANGUT COMPONENT-503TANGUT COMPONENT-504TANGU" + + "T COMPONENT-505TANGUT COMPONENT-506TANGUT COMPONENT-507TANGUT COMPONENT-" + + "508TANGUT COMPONENT-509TANGUT COMPONENT-510TANGUT COMPONENT-511TANGUT CO" + + "MPONENT-512TANGUT COMPONENT-513TANGUT COMPONENT-514TANGUT COMPONENT-515T" + + "ANGUT COMPONENT-516TANGUT COMPONENT-517TANGUT COMPONENT-518TANGUT COMPON" + + "ENT-519TANGUT COMPONENT-520TANGUT COMPONENT-521TANGUT COMPONENT-522TANGU" + + "T COMPONENT-523TANGUT COMPONENT-524TANGUT COMPONENT-525TANGUT COMPONENT-" + + "526TANGUT COMPONENT-527TANGUT COMPONENT-528TANGUT COMPONENT-529TANGUT CO" + + "MPONENT-530TANGUT COMPONENT-531TANGUT COMPONENT-532TANGUT COMPONENT-533T" + + "ANGUT COMPONENT-534TANGUT COMPONENT-535TANGUT COMPONENT-536TANGUT COMPON" + + "ENT-537TANGUT COMPONENT-538TANGUT COMPONENT-539TANGUT COMPONENT-540TANGU" + + "T COMPONENT-541TANGUT COMPONENT-542TANGUT COMPONENT-543TANGUT COMPONENT-" + + "544TANGUT COMPONENT-545TANGUT COMPONENT-546TANGUT COMPONENT-547TANGUT CO" + + "MPONENT-548TANGUT COMPONENT-549TANGUT COMPONENT-550TANGUT COMPONENT-551T" + + "ANGUT COMPONENT-552TANGUT COMPONENT-553TANGUT COMPONENT-554TANGUT COMPON" + + "ENT-555TANGUT COMPONENT-556TANGUT COMPONENT-557TANGUT COMPONENT-558TANGU" + + "T COMPONENT-559TANGUT COMPONENT-560TANGUT COMPONENT-561TANGUT COMPONENT-" + + "562TANGUT COMPONENT-563TANGUT COMPONENT-564TANGUT COMPONENT-565TANGUT CO" + + "MPONENT-566TANGUT COMPONENT-567TANGUT COMPONENT-568TANGUT COMPONENT-569T" + + "ANGUT COMPONENT-570TANGUT COMPONENT-571TANGUT COMPONENT-572TANGUT COMPON" + + "ENT-573TANGUT COMPONENT-574TANGUT COMPONENT-575TANGUT COMPONENT-576TANGU" + + "T COMPONENT-577TANGUT COMPONENT-578TANGUT COMPONENT-579TANGUT COMPONENT-" + + "580TANGUT COMPONENT-581TANGUT COMPONENT-582TANGUT COMPONENT-583TANGUT CO" + + "MPONENT-584TANGUT COMPONENT-585TANGUT COMPONENT-586TANGUT COMPONENT-587T" + + "ANGUT COMPONENT-588TANGUT COMPONENT-589TANGUT COMPONENT-590TANGUT COMPON" + + "ENT-591TANGUT COMPONENT-592TANGUT COMPONENT-593TANGUT COMPONENT-594TANGU" + + "T COMPONENT-595TANGUT COMPONENT-596TANGUT COMPONENT-597TANGUT COMPONENT-" + + "598TANGUT COMPONENT-599TANGUT COMPONENT-600TANGUT COMPONENT-601TANGUT CO" + + "MPONENT-602TANGUT COMPONENT-603TANGUT COMPONENT-604TANGUT COMPONENT-605T" + + "ANGUT COMPONENT-606TANGUT COMPONENT-607TANGUT COMPONENT-608TANGUT COMPON" + + "ENT-609TANGUT COMPONENT-610TANGUT COMPONENT-611TANGUT COMPONENT-612TANGU" + + "T COMPONENT-613TANGUT COMPONENT-614TANGUT COMPONENT-615TANGUT COMPONENT-" + + "616TANGUT COMPONENT-617TANGUT COMPONENT-618TANGUT COMPONENT-619TANGUT CO" + + "MPONENT-620TANGUT COMPONENT-621TANGUT COMPONENT-622TANGUT COMPONENT-623T" + + "ANGUT COMPONENT-624TANGUT COMPONENT-625TANGUT COMPONENT-626TANGUT COMPON" + + "ENT-627TANGUT COMPONENT-628TANGUT COMPONENT-629TANGUT COMPONENT-630TANGU" + + "T COMPONENT-631TANGUT COMPONENT-632TANGUT COMPONENT-633TANGUT COMPONENT-" + + "634TANGUT COMPONENT-635TANGUT COMPONENT-636TANGUT COMPONENT-637TANGUT CO" + + "MPONENT-638TANGUT COMPONENT-639TANGUT COMPONENT-640TANGUT COMPONENT-641T" + + "ANGUT COMPONENT-642TANGUT COMPONENT-643TANGUT COMPONENT-644TANGUT COMPON" + + "ENT-645TANGUT COMPONENT-646TANGUT COMPONENT-647TANGUT COMPONENT-648TANGU" + + "T COMPONENT-649TANGUT COMPONENT-650TANGUT COMPONENT-651TANGUT COMPONENT-" + + "652TANGUT COMPONENT-653TANGUT COMPONENT-654TANGUT COMPONENT-655TANGUT CO" + + "MPONENT-656TANGUT COMPONENT-657TANGUT COMPONENT-658TANGUT COMPONENT-659T" + + "ANGUT COMPONENT-660TANGUT COMPONENT-661TANGUT COMPONENT-662TANGUT COMPON" + + "ENT-663TANGUT COMPONENT-664TANGUT COMPONENT-665TANGUT COMPONENT-666TANGU" + + "T COMPONENT-667TANGUT COMPONENT-668TANGUT COMPONENT-669TANGUT COMPONENT-" + + "670TANGUT COMPONENT-671TANGUT COMPONENT-672TANGUT COMPONENT-673TANGUT CO" + + "MPONENT-674TANGUT COMPONENT-675TANGUT COMPONENT-676TANGUT COMPONENT-677T" + + "ANGUT COMPONENT-678TANGUT COMPONENT-679TANGUT COMPONENT-680TANGUT COMPON" + + "ENT-681TANGUT COMPONENT-682TANGUT COMPONENT-683TANGUT COMPONENT-684TANGU" + + "T COMPONENT-685TANGUT COMPONENT-686TANGUT COMPONENT-687TANGUT COMPONENT-" + + "688TANGUT COMPONENT-689TANGUT COMPONENT-690TANGUT COMPONENT-691TANGUT CO") + ("" + + "MPONENT-692TANGUT COMPONENT-693TANGUT COMPONENT-694TANGUT COMPONENT-695T" + + "ANGUT COMPONENT-696TANGUT COMPONENT-697TANGUT COMPONENT-698TANGUT COMPON" + + "ENT-699TANGUT COMPONENT-700TANGUT COMPONENT-701TANGUT COMPONENT-702TANGU" + + "T COMPONENT-703TANGUT COMPONENT-704TANGUT COMPONENT-705TANGUT COMPONENT-" + + "706TANGUT COMPONENT-707TANGUT COMPONENT-708TANGUT COMPONENT-709TANGUT CO" + + "MPONENT-710TANGUT COMPONENT-711TANGUT COMPONENT-712TANGUT COMPONENT-713T" + + "ANGUT COMPONENT-714TANGUT COMPONENT-715TANGUT COMPONENT-716TANGUT COMPON" + + "ENT-717TANGUT COMPONENT-718TANGUT COMPONENT-719TANGUT COMPONENT-720TANGU" + + "T COMPONENT-721TANGUT COMPONENT-722TANGUT COMPONENT-723TANGUT COMPONENT-" + + "724TANGUT COMPONENT-725TANGUT COMPONENT-726TANGUT COMPONENT-727TANGUT CO" + + "MPONENT-728TANGUT COMPONENT-729TANGUT COMPONENT-730TANGUT COMPONENT-731T" + + "ANGUT COMPONENT-732TANGUT COMPONENT-733TANGUT COMPONENT-734TANGUT COMPON" + + "ENT-735TANGUT COMPONENT-736TANGUT COMPONENT-737TANGUT COMPONENT-738TANGU" + + "T COMPONENT-739TANGUT COMPONENT-740TANGUT COMPONENT-741TANGUT COMPONENT-" + + "742TANGUT COMPONENT-743TANGUT COMPONENT-744TANGUT COMPONENT-745TANGUT CO" + + "MPONENT-746TANGUT COMPONENT-747TANGUT COMPONENT-748TANGUT COMPONENT-749T" + + "ANGUT COMPONENT-750TANGUT COMPONENT-751TANGUT COMPONENT-752TANGUT COMPON" + + "ENT-753TANGUT COMPONENT-754TANGUT COMPONENT-755KATAKANA LETTER ARCHAIC E" + + "HIRAGANA LETTER ARCHAIC YEDUPLOYAN LETTER HDUPLOYAN LETTER XDUPLOYAN LET" + + "TER PDUPLOYAN LETTER TDUPLOYAN LETTER FDUPLOYAN LETTER KDUPLOYAN LETTER " + + "LDUPLOYAN LETTER BDUPLOYAN LETTER DDUPLOYAN LETTER VDUPLOYAN LETTER GDUP" + + "LOYAN LETTER RDUPLOYAN LETTER P NDUPLOYAN LETTER D SDUPLOYAN LETTER F ND" + + "UPLOYAN LETTER K MDUPLOYAN LETTER R SDUPLOYAN LETTER THDUPLOYAN LETTER S" + + "LOAN DHDUPLOYAN LETTER DHDUPLOYAN LETTER KKDUPLOYAN LETTER SLOAN JDUPLOY" + + "AN LETTER HLDUPLOYAN LETTER LHDUPLOYAN LETTER RHDUPLOYAN LETTER MDUPLOYA" + + "N LETTER NDUPLOYAN LETTER JDUPLOYAN LETTER SDUPLOYAN LETTER M NDUPLOYAN " + + "LETTER N MDUPLOYAN LETTER J MDUPLOYAN LETTER S JDUPLOYAN LETTER M WITH D" + + "OTDUPLOYAN LETTER N WITH DOTDUPLOYAN LETTER J WITH DOTDUPLOYAN LETTER J " + + "WITH DOTS INSIDE AND ABOVEDUPLOYAN LETTER S WITH DOTDUPLOYAN LETTER S WI" + + "TH DOT BELOWDUPLOYAN LETTER M SDUPLOYAN LETTER N SDUPLOYAN LETTER J SDUP" + + "LOYAN LETTER S SDUPLOYAN LETTER M N SDUPLOYAN LETTER N M SDUPLOYAN LETTE" + + "R J M SDUPLOYAN LETTER S J SDUPLOYAN LETTER J S WITH DOTDUPLOYAN LETTER " + + "J NDUPLOYAN LETTER J N SDUPLOYAN LETTER S TDUPLOYAN LETTER S T RDUPLOYAN" + + " LETTER S PDUPLOYAN LETTER S P RDUPLOYAN LETTER T SDUPLOYAN LETTER T R S" + + "DUPLOYAN LETTER WDUPLOYAN LETTER WHDUPLOYAN LETTER W RDUPLOYAN LETTER S " + + "NDUPLOYAN LETTER S MDUPLOYAN LETTER K R SDUPLOYAN LETTER G R SDUPLOYAN L" + + "ETTER S KDUPLOYAN LETTER S K RDUPLOYAN LETTER ADUPLOYAN LETTER SLOAN OWD" + + "UPLOYAN LETTER OADUPLOYAN LETTER ODUPLOYAN LETTER AOUDUPLOYAN LETTER IDU" + + "PLOYAN LETTER EDUPLOYAN LETTER IEDUPLOYAN LETTER SHORT IDUPLOYAN LETTER " + + "UIDUPLOYAN LETTER EEDUPLOYAN LETTER SLOAN EHDUPLOYAN LETTER ROMANIAN IDU" + + "PLOYAN LETTER SLOAN EEDUPLOYAN LETTER LONG IDUPLOYAN LETTER YEDUPLOYAN L" + + "ETTER UDUPLOYAN LETTER EUDUPLOYAN LETTER XWDUPLOYAN LETTER U NDUPLOYAN L" + + "ETTER LONG UDUPLOYAN LETTER ROMANIAN UDUPLOYAN LETTER UHDUPLOYAN LETTER " + + "SLOAN UDUPLOYAN LETTER OOHDUPLOYAN LETTER OWDUPLOYAN LETTER OUDUPLOYAN L" + + "ETTER WADUPLOYAN LETTER WODUPLOYAN LETTER WIDUPLOYAN LETTER WEIDUPLOYAN " + + "LETTER WOWDUPLOYAN LETTER NASAL UDUPLOYAN LETTER NASAL ODUPLOYAN LETTER " + + "NASAL IDUPLOYAN LETTER NASAL ADUPLOYAN LETTER PERNIN ANDUPLOYAN LETTER P" + + "ERNIN AMDUPLOYAN LETTER SLOAN ENDUPLOYAN LETTER SLOAN ANDUPLOYAN LETTER " + + "SLOAN ONDUPLOYAN LETTER VOCALIC MDUPLOYAN AFFIX LEFT HORIZONTAL SECANTDU" + + "PLOYAN AFFIX MID HORIZONTAL SECANTDUPLOYAN AFFIX RIGHT HORIZONTAL SECANT" + + "DUPLOYAN AFFIX LOW VERTICAL SECANTDUPLOYAN AFFIX MID VERTICAL SECANTDUPL" + + "OYAN AFFIX HIGH VERTICAL SECANTDUPLOYAN AFFIX ATTACHED SECANTDUPLOYAN AF" + + "FIX ATTACHED LEFT-TO-RIGHT SECANTDUPLOYAN AFFIX ATTACHED TANGENTDUPLOYAN" + + " AFFIX ATTACHED TAILDUPLOYAN AFFIX ATTACHED E HOOKDUPLOYAN AFFIX ATTACHE" + + "D I HOOKDUPLOYAN AFFIX ATTACHED TANGENT HOOKDUPLOYAN AFFIX HIGH ACUTEDUP" + + "LOYAN AFFIX HIGH TIGHT ACUTEDUPLOYAN AFFIX HIGH GRAVEDUPLOYAN AFFIX HIGH" + + " LONG GRAVEDUPLOYAN AFFIX HIGH DOTDUPLOYAN AFFIX HIGH CIRCLEDUPLOYAN AFF" + + "IX HIGH LINEDUPLOYAN AFFIX HIGH WAVEDUPLOYAN AFFIX HIGH VERTICALDUPLOYAN" + + " AFFIX LOW ACUTEDUPLOYAN AFFIX LOW TIGHT ACUTEDUPLOYAN AFFIX LOW GRAVEDU" + + "PLOYAN AFFIX LOW LONG GRAVEDUPLOYAN AFFIX LOW DOTDUPLOYAN AFFIX LOW CIRC" + + "LEDUPLOYAN AFFIX LOW LINEDUPLOYAN AFFIX LOW WAVEDUPLOYAN AFFIX LOW VERTI" + + "CALDUPLOYAN AFFIX LOW ARROWDUPLOYAN SIGN O WITH CROSSDUPLOYAN THICK LETT" + + "ER SELECTORDUPLOYAN DOUBLE MARKDUPLOYAN PUNCTUATION CHINOOK FULL STOPSHO" + + "RTHAND FORMAT LETTER OVERLAPSHORTHAND FORMAT CONTINUING OVERLAPSHORTHAND") + ("" + + " FORMAT DOWN STEPSHORTHAND FORMAT UP STEPBYZANTINE MUSICAL SYMBOL PSILIB" + + "YZANTINE MUSICAL SYMBOL DASEIABYZANTINE MUSICAL SYMBOL PERISPOMENIBYZANT" + + "INE MUSICAL SYMBOL OXEIA EKFONITIKONBYZANTINE MUSICAL SYMBOL OXEIA DIPLI" + + "BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKONBYZANTINE MUSICAL SYMBOL VARE" + + "IA DIPLIBYZANTINE MUSICAL SYMBOL KATHISTIBYZANTINE MUSICAL SYMBOL SYRMAT" + + "IKIBYZANTINE MUSICAL SYMBOL PARAKLITIKIBYZANTINE MUSICAL SYMBOL YPOKRISI" + + "SBYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLIBYZANTINE MUSICAL SYMBOL KREMAS" + + "TIBYZANTINE MUSICAL SYMBOL APESO EKFONITIKONBYZANTINE MUSICAL SYMBOL EXO" + + " EKFONITIKONBYZANTINE MUSICAL SYMBOL TELEIABYZANTINE MUSICAL SYMBOL KENT" + + "IMATABYZANTINE MUSICAL SYMBOL APOSTROFOSBYZANTINE MUSICAL SYMBOL APOSTRO" + + "FOS DIPLIBYZANTINE MUSICAL SYMBOL SYNEVMABYZANTINE MUSICAL SYMBOL THITAB" + + "YZANTINE MUSICAL SYMBOL OLIGON ARCHAIONBYZANTINE MUSICAL SYMBOL GORGON A" + + "RCHAIONBYZANTINE MUSICAL SYMBOL PSILONBYZANTINE MUSICAL SYMBOL CHAMILONB" + + "YZANTINE MUSICAL SYMBOL VATHYBYZANTINE MUSICAL SYMBOL ISON ARCHAIONBYZAN" + + "TINE MUSICAL SYMBOL KENTIMA ARCHAIONBYZANTINE MUSICAL SYMBOL KENTIMATA A" + + "RCHAIONBYZANTINE MUSICAL SYMBOL SAXIMATABYZANTINE MUSICAL SYMBOL PARICHO" + + "NBYZANTINE MUSICAL SYMBOL STAVROS APODEXIABYZANTINE MUSICAL SYMBOL OXEIA" + + "I ARCHAIONBYZANTINE MUSICAL SYMBOL VAREIAI ARCHAIONBYZANTINE MUSICAL SYM" + + "BOL APODERMA ARCHAIONBYZANTINE MUSICAL SYMBOL APOTHEMABYZANTINE MUSICAL " + + "SYMBOL KLASMABYZANTINE MUSICAL SYMBOL REVMABYZANTINE MUSICAL SYMBOL PIAS" + + "MA ARCHAIONBYZANTINE MUSICAL SYMBOL TINAGMABYZANTINE MUSICAL SYMBOL ANAT" + + "RICHISMABYZANTINE MUSICAL SYMBOL SEISMABYZANTINE MUSICAL SYMBOL SYNAGMA " + + "ARCHAIONBYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROUBYZANTINE MUSICAL S" + + "YMBOL OYRANISMA ARCHAIONBYZANTINE MUSICAL SYMBOL THEMABYZANTINE MUSICAL " + + "SYMBOL LEMOIBYZANTINE MUSICAL SYMBOL DYOBYZANTINE MUSICAL SYMBOL TRIABYZ" + + "ANTINE MUSICAL SYMBOL TESSERABYZANTINE MUSICAL SYMBOL KRATIMATABYZANTINE" + + " MUSICAL SYMBOL APESO EXO NEOBYZANTINE MUSICAL SYMBOL FTHORA ARCHAIONBYZ" + + "ANTINE MUSICAL SYMBOL IMIFTHORABYZANTINE MUSICAL SYMBOL TROMIKON ARCHAIO" + + "NBYZANTINE MUSICAL SYMBOL KATAVA TROMIKONBYZANTINE MUSICAL SYMBOL PELAST" + + "ONBYZANTINE MUSICAL SYMBOL PSIFISTONBYZANTINE MUSICAL SYMBOL KONTEVMABYZ" + + "ANTINE MUSICAL SYMBOL CHOREVMA ARCHAIONBYZANTINE MUSICAL SYMBOL RAPISMAB" + + "YZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAIONBYZANTINE MUSICAL SYMBOL PAR" + + "AKLITIKI ARCHAIONBYZANTINE MUSICAL SYMBOL ICHADINBYZANTINE MUSICAL SYMBO" + + "L NANABYZANTINE MUSICAL SYMBOL PETASMABYZANTINE MUSICAL SYMBOL KONTEVMA " + + "ALLOBYZANTINE MUSICAL SYMBOL TROMIKON ALLOBYZANTINE MUSICAL SYMBOL STRAG" + + "GISMATABYZANTINE MUSICAL SYMBOL GRONTHISMATABYZANTINE MUSICAL SYMBOL ISO" + + "N NEOBYZANTINE MUSICAL SYMBOL OLIGON NEOBYZANTINE MUSICAL SYMBOL OXEIA N" + + "EOBYZANTINE MUSICAL SYMBOL PETASTIBYZANTINE MUSICAL SYMBOL KOUFISMABYZAN" + + "TINE MUSICAL SYMBOL PETASTOKOUFISMABYZANTINE MUSICAL SYMBOL KRATIMOKOUFI" + + "SMABYZANTINE MUSICAL SYMBOL PELASTON NEOBYZANTINE MUSICAL SYMBOL KENTIMA" + + "TA NEO ANOBYZANTINE MUSICAL SYMBOL KENTIMA NEO ANOBYZANTINE MUSICAL SYMB" + + "OL YPSILIBYZANTINE MUSICAL SYMBOL APOSTROFOS NEOBYZANTINE MUSICAL SYMBOL" + + " APOSTROFOI SYNDESMOS NEOBYZANTINE MUSICAL SYMBOL YPORROIBYZANTINE MUSIC" + + "AL SYMBOL KRATIMOYPORROONBYZANTINE MUSICAL SYMBOL ELAFRONBYZANTINE MUSIC" + + "AL SYMBOL CHAMILIBYZANTINE MUSICAL SYMBOL MIKRON ISONBYZANTINE MUSICAL S" + + "YMBOL VAREIA NEOBYZANTINE MUSICAL SYMBOL PIASMA NEOBYZANTINE MUSICAL SYM" + + "BOL PSIFISTON NEOBYZANTINE MUSICAL SYMBOL OMALONBYZANTINE MUSICAL SYMBOL" + + " ANTIKENOMABYZANTINE MUSICAL SYMBOL LYGISMABYZANTINE MUSICAL SYMBOL PARA" + + "KLITIKI NEOBYZANTINE MUSICAL SYMBOL PARAKALESMA NEOBYZANTINE MUSICAL SYM" + + "BOL ETERON PARAKALESMABYZANTINE MUSICAL SYMBOL KYLISMABYZANTINE MUSICAL " + + "SYMBOL ANTIKENOKYLISMABYZANTINE MUSICAL SYMBOL TROMIKON NEOBYZANTINE MUS" + + "ICAL SYMBOL EKSTREPTONBYZANTINE MUSICAL SYMBOL SYNAGMA NEOBYZANTINE MUSI" + + "CAL SYMBOL SYRMABYZANTINE MUSICAL SYMBOL CHOREVMA NEOBYZANTINE MUSICAL S" + + "YMBOL EPEGERMABYZANTINE MUSICAL SYMBOL SEISMA NEOBYZANTINE MUSICAL SYMBO" + + "L XIRON KLASMABYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTONBYZANTINE MUSICAL" + + " SYMBOL PSIFISTOLYGISMABYZANTINE MUSICAL SYMBOL TROMIKOLYGISMABYZANTINE " + + "MUSICAL SYMBOL TROMIKOPARAKALESMABYZANTINE MUSICAL SYMBOL PSIFISTOPARAKA" + + "LESMABYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMABYZANTINE MUSICAL SYMBOL PSI" + + "FISTOSYNAGMABYZANTINE MUSICAL SYMBOL GORGOSYNTHETONBYZANTINE MUSICAL SYM" + + "BOL ARGOSYNTHETONBYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETONBYZANTINE " + + "MUSICAL SYMBOL OYRANISMA NEOBYZANTINE MUSICAL SYMBOL THEMATISMOS ESOBYZA" + + "NTINE MUSICAL SYMBOL THEMATISMOS EXOBYZANTINE MUSICAL SYMBOL THEMA APLOU" + + "NBYZANTINE MUSICAL SYMBOL THES KAI APOTHESBYZANTINE MUSICAL SYMBOL KATAV" + + "ASMABYZANTINE MUSICAL SYMBOL ENDOFONONBYZANTINE MUSICAL SYMBOL YFEN KATO") + ("" + + "BYZANTINE MUSICAL SYMBOL YFEN ANOBYZANTINE MUSICAL SYMBOL STAVROSBYZANTI" + + "NE MUSICAL SYMBOL KLASMA ANOBYZANTINE MUSICAL SYMBOL DIPLI ARCHAIONBYZAN" + + "TINE MUSICAL SYMBOL KRATIMA ARCHAIONBYZANTINE MUSICAL SYMBOL KRATIMA ALL" + + "OBYZANTINE MUSICAL SYMBOL KRATIMA NEOBYZANTINE MUSICAL SYMBOL APODERMA N" + + "EOBYZANTINE MUSICAL SYMBOL APLIBYZANTINE MUSICAL SYMBOL DIPLIBYZANTINE M" + + "USICAL SYMBOL TRIPLIBYZANTINE MUSICAL SYMBOL TETRAPLIBYZANTINE MUSICAL S" + + "YMBOL KORONISBYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOUBYZANTINE MUSIC" + + "AL SYMBOL LEIMMA DYO CHRONONBYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONO" + + "NBYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONONBYZANTINE MUSICAL SYMBO" + + "L LEIMMA IMISEOS CHRONOUBYZANTINE MUSICAL SYMBOL GORGON NEO ANOBYZANTINE" + + " MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERABYZANTINE MUSICAL SYMBOL GO" + + "RGON PARESTIGMENON DEXIABYZANTINE MUSICAL SYMBOL DIGORGONBYZANTINE MUSIC" + + "AL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATOBYZANTINE MUSICAL SYMBOL D" + + "IGORGON PARESTIGMENON ARISTERA ANOBYZANTINE MUSICAL SYMBOL DIGORGON PARE" + + "STIGMENON DEXIABYZANTINE MUSICAL SYMBOL TRIGORGONBYZANTINE MUSICAL SYMBO" + + "L ARGONBYZANTINE MUSICAL SYMBOL IMIDIARGONBYZANTINE MUSICAL SYMBOL DIARG" + + "ONBYZANTINE MUSICAL SYMBOL AGOGI POLI ARGIBYZANTINE MUSICAL SYMBOL AGOGI" + + " ARGOTERIBYZANTINE MUSICAL SYMBOL AGOGI ARGIBYZANTINE MUSICAL SYMBOL AGO" + + "GI METRIABYZANTINE MUSICAL SYMBOL AGOGI MESIBYZANTINE MUSICAL SYMBOL AGO" + + "GI GORGIBYZANTINE MUSICAL SYMBOL AGOGI GORGOTERIBYZANTINE MUSICAL SYMBOL" + + " AGOGI POLI GORGIBYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOSBYZANTINE" + + " MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOSBYZANTINE MUSICAL SYMBOL MARTY" + + "RIA DEYTEROS ICHOSBYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOSB" + + "YZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOSBYZANTINE MUSICAL SYMBOL MA" + + "RTYRIA TRIFONIASBYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOSBYZANTIN" + + "E MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOSBYZANTINE MUSICAL SYMBOL" + + " MARTYRIA LEGETOS ICHOSBYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOSBY" + + "ZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOSBYZANTINE MUSICAL SYMBOL A" + + "POSTROFOI TELOUS ICHIMATOSBYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS" + + "BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIASBYZANTINE MUSICAL SYMBOL FA" + + "NEROSIS DIFONIASBYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOSBYZANTINE M" + + "USICAL SYMBOL MARTYRIA PROTOVARYS ICHOSBYZANTINE MUSICAL SYMBOL MARTYRIA" + + " PLAGIOS TETARTOS ICHOSBYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUNBYZAN" + + "TINE MUSICAL SYMBOL GORTHMIKON N DIPLOUNBYZANTINE MUSICAL SYMBOL ENARXIS" + + " KAI FTHORA VOUBYZANTINE MUSICAL SYMBOL IMIFONONBYZANTINE MUSICAL SYMBOL" + + " IMIFTHORONBYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOUBYZANT" + + "INE MUSICAL SYMBOL FTHORA DIATONIKI PABYZANTINE MUSICAL SYMBOL FTHORA DI" + + "ATONIKI NANABYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOSBYZANTINE MUSICAL " + + "SYMBOL FTHORA DIATONIKI DIBYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATON" + + "ON DIBYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KEBYZANTINE MUSICAL SYMBO" + + "L FTHORA DIATONIKI ZOBYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATOBY" + + "ZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANOBYZANTINE MUSICAL SYMBOL F" + + "THORA MALAKON CHROMA DIFONIASBYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHR" + + "OMA MONOFONIASBYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASISBYZANT" + + "INE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFIBYZANTINE MUSICAL SYMBOL " + + "FTHORA NENANOBYZANTINE MUSICAL SYMBOL CHROA ZYGOSBYZANTINE MUSICAL SYMBO" + + "L CHROA KLITONBYZANTINE MUSICAL SYMBOL CHROA SPATHIBYZANTINE MUSICAL SYM" + + "BOL FTHORA I YFESIS TETARTIMORIONBYZANTINE MUSICAL SYMBOL FTHORA ENARMON" + + "IOS ANTIFONIABYZANTINE MUSICAL SYMBOL YFESIS TRITIMORIONBYZANTINE MUSICA" + + "L SYMBOL DIESIS TRITIMORIONBYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION" + + "BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATABYZANTINE MUSICAL SYMBO" + + "L DIESIS MONOGRAMMOS TESSERA DODEKATABYZANTINE MUSICAL SYMBOL DIESIS DIG" + + "RAMMOS EX DODEKATABYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKA" + + "TABYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATABYZANTINE MUSICAL SYM" + + "BOL YFESIS MONOGRAMMOS TESSERA DODEKATABYZANTINE MUSICAL SYMBOL YFESIS D" + + "IGRAMMOS EX DODEKATABYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODE" + + "KATABYZANTINE MUSICAL SYMBOL GENIKI DIESISBYZANTINE MUSICAL SYMBOL GENIK" + + "I YFESISBYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRIBYZANTINE MUSICAL SY" + + "MBOL DIASTOLI APLI MEGALIBYZANTINE MUSICAL SYMBOL DIASTOLI DIPLIBYZANTIN" + + "E MUSICAL SYMBOL DIASTOLI THESEOSBYZANTINE MUSICAL SYMBOL SIMANSIS THESE" + + "OSBYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOUBYZANTINE MUSICAL SYM" + + "BOL SIMANSIS THESEOS TRISIMOUBYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS T" + + "ETRASIMOUBYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOSBYZANTINE MUSICAL SYMBO" + + "L SIMANSIS ARSEOS DISIMOUBYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIM") + ("" + + "OUBYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOUBYZANTINE MUSICAL S" + + "YMBOL DIGRAMMA GGBYZANTINE MUSICAL SYMBOL DIFTOGGOS OUBYZANTINE MUSICAL " + + "SYMBOL STIGMABYZANTINE MUSICAL SYMBOL ARKTIKO PABYZANTINE MUSICAL SYMBOL" + + " ARKTIKO VOUBYZANTINE MUSICAL SYMBOL ARKTIKO GABYZANTINE MUSICAL SYMBOL " + + "ARKTIKO DIBYZANTINE MUSICAL SYMBOL ARKTIKO KEBYZANTINE MUSICAL SYMBOL AR" + + "KTIKO ZOBYZANTINE MUSICAL SYMBOL ARKTIKO NIBYZANTINE MUSICAL SYMBOL KENT" + + "IMATA NEO MESOBYZANTINE MUSICAL SYMBOL KENTIMA NEO MESOBYZANTINE MUSICAL" + + " SYMBOL KENTIMATA NEO KATOBYZANTINE MUSICAL SYMBOL KENTIMA NEO KATOBYZAN" + + "TINE MUSICAL SYMBOL KLASMA KATOBYZANTINE MUSICAL SYMBOL GORGON NEO KATOM" + + "USICAL SYMBOL SINGLE BARLINEMUSICAL SYMBOL DOUBLE BARLINEMUSICAL SYMBOL " + + "FINAL BARLINEMUSICAL SYMBOL REVERSE FINAL BARLINEMUSICAL SYMBOL DASHED B" + + "ARLINEMUSICAL SYMBOL SHORT BARLINEMUSICAL SYMBOL LEFT REPEAT SIGNMUSICAL" + + " SYMBOL RIGHT REPEAT SIGNMUSICAL SYMBOL REPEAT DOTSMUSICAL SYMBOL DAL SE" + + "GNOMUSICAL SYMBOL DA CAPOMUSICAL SYMBOL SEGNOMUSICAL SYMBOL CODAMUSICAL " + + "SYMBOL REPEATED FIGURE-1MUSICAL SYMBOL REPEATED FIGURE-2MUSICAL SYMBOL R" + + "EPEATED FIGURE-3MUSICAL SYMBOL FERMATAMUSICAL SYMBOL FERMATA BELOWMUSICA" + + "L SYMBOL BREATH MARKMUSICAL SYMBOL CAESURAMUSICAL SYMBOL BRACEMUSICAL SY" + + "MBOL BRACKETMUSICAL SYMBOL ONE-LINE STAFFMUSICAL SYMBOL TWO-LINE STAFFMU" + + "SICAL SYMBOL THREE-LINE STAFFMUSICAL SYMBOL FOUR-LINE STAFFMUSICAL SYMBO" + + "L FIVE-LINE STAFFMUSICAL SYMBOL SIX-LINE STAFFMUSICAL SYMBOL SIX-STRING " + + "FRETBOARDMUSICAL SYMBOL FOUR-STRING FRETBOARDMUSICAL SYMBOL G CLEFMUSICA" + + "L SYMBOL G CLEF OTTAVA ALTAMUSICAL SYMBOL G CLEF OTTAVA BASSAMUSICAL SYM" + + "BOL C CLEFMUSICAL SYMBOL F CLEFMUSICAL SYMBOL F CLEF OTTAVA ALTAMUSICAL " + + "SYMBOL F CLEF OTTAVA BASSAMUSICAL SYMBOL DRUM CLEF-1MUSICAL SYMBOL DRUM " + + "CLEF-2MUSICAL SYMBOL MULTIPLE MEASURE RESTMUSICAL SYMBOL DOUBLE SHARPMUS" + + "ICAL SYMBOL DOUBLE FLATMUSICAL SYMBOL FLAT UPMUSICAL SYMBOL FLAT DOWNMUS" + + "ICAL SYMBOL NATURAL UPMUSICAL SYMBOL NATURAL DOWNMUSICAL SYMBOL SHARP UP" + + "MUSICAL SYMBOL SHARP DOWNMUSICAL SYMBOL QUARTER TONE SHARPMUSICAL SYMBOL" + + " QUARTER TONE FLATMUSICAL SYMBOL COMMON TIMEMUSICAL SYMBOL CUT TIMEMUSIC" + + "AL SYMBOL OTTAVA ALTAMUSICAL SYMBOL OTTAVA BASSAMUSICAL SYMBOL QUINDICES" + + "IMA ALTAMUSICAL SYMBOL QUINDICESIMA BASSAMUSICAL SYMBOL MULTI RESTMUSICA" + + "L SYMBOL WHOLE RESTMUSICAL SYMBOL HALF RESTMUSICAL SYMBOL QUARTER RESTMU" + + "SICAL SYMBOL EIGHTH RESTMUSICAL SYMBOL SIXTEENTH RESTMUSICAL SYMBOL THIR" + + "TY-SECOND RESTMUSICAL SYMBOL SIXTY-FOURTH RESTMUSICAL SYMBOL ONE HUNDRED" + + " TWENTY-EIGHTH RESTMUSICAL SYMBOL X NOTEHEADMUSICAL SYMBOL PLUS NOTEHEAD" + + "MUSICAL SYMBOL CIRCLE X NOTEHEADMUSICAL SYMBOL SQUARE NOTEHEAD WHITEMUSI" + + "CAL SYMBOL SQUARE NOTEHEAD BLACKMUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHIT" + + "EMUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACKMUSICAL SYMBOL TRIANGLE NOTEHE" + + "AD LEFT WHITEMUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACKMUSICAL SYMBOL T" + + "RIANGLE NOTEHEAD RIGHT WHITEMUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK" + + "MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITEMUSICAL SYMBOL TRIANGLE NOTEH" + + "EAD DOWN BLACKMUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITEMUSICAL SYM" + + "BOL TRIANGLE NOTEHEAD UP RIGHT BLACKMUSICAL SYMBOL MOON NOTEHEAD WHITEMU" + + "SICAL SYMBOL MOON NOTEHEAD BLACKMUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD D" + + "OWN WHITEMUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACKMUSICAL SYMBOL" + + " PARENTHESIS NOTEHEADMUSICAL SYMBOL VOID NOTEHEADMUSICAL SYMBOL NOTEHEAD" + + " BLACKMUSICAL SYMBOL NULL NOTEHEADMUSICAL SYMBOL CLUSTER NOTEHEAD WHITEM" + + "USICAL SYMBOL CLUSTER NOTEHEAD BLACKMUSICAL SYMBOL BREVEMUSICAL SYMBOL W" + + "HOLE NOTEMUSICAL SYMBOL HALF NOTEMUSICAL SYMBOL QUARTER NOTEMUSICAL SYMB" + + "OL EIGHTH NOTEMUSICAL SYMBOL SIXTEENTH NOTEMUSICAL SYMBOL THIRTY-SECOND " + + "NOTEMUSICAL SYMBOL SIXTY-FOURTH NOTEMUSICAL SYMBOL ONE HUNDRED TWENTY-EI" + + "GHTH NOTEMUSICAL SYMBOL COMBINING STEMMUSICAL SYMBOL COMBINING SPRECHGES" + + "ANG STEMMUSICAL SYMBOL COMBINING TREMOLO-1MUSICAL SYMBOL COMBINING TREMO" + + "LO-2MUSICAL SYMBOL COMBINING TREMOLO-3MUSICAL SYMBOL FINGERED TREMOLO-1M" + + "USICAL SYMBOL FINGERED TREMOLO-2MUSICAL SYMBOL FINGERED TREMOLO-3MUSICAL" + + " SYMBOL COMBINING AUGMENTATION DOTMUSICAL SYMBOL COMBINING FLAG-1MUSICAL" + + " SYMBOL COMBINING FLAG-2MUSICAL SYMBOL COMBINING FLAG-3MUSICAL SYMBOL CO" + + "MBINING FLAG-4MUSICAL SYMBOL COMBINING FLAG-5MUSICAL SYMBOL BEGIN BEAMMU" + + "SICAL SYMBOL END BEAMMUSICAL SYMBOL BEGIN TIEMUSICAL SYMBOL END TIEMUSIC" + + "AL SYMBOL BEGIN SLURMUSICAL SYMBOL END SLURMUSICAL SYMBOL BEGIN PHRASEMU" + + "SICAL SYMBOL END PHRASEMUSICAL SYMBOL COMBINING ACCENTMUSICAL SYMBOL COM" + + "BINING STACCATOMUSICAL SYMBOL COMBINING TENUTOMUSICAL SYMBOL COMBINING S" + + "TACCATISSIMOMUSICAL SYMBOL COMBINING MARCATOMUSICAL SYMBOL COMBINING MAR" + + "CATO-STACCATOMUSICAL SYMBOL COMBINING ACCENT-STACCATOMUSICAL SYMBOL COMB") + ("" + + "INING LOUREMUSICAL SYMBOL ARPEGGIATO UPMUSICAL SYMBOL ARPEGGIATO DOWNMUS" + + "ICAL SYMBOL COMBINING DOITMUSICAL SYMBOL COMBINING RIPMUSICAL SYMBOL COM" + + "BINING FLIPMUSICAL SYMBOL COMBINING SMEARMUSICAL SYMBOL COMBINING BENDMU" + + "SICAL SYMBOL COMBINING DOUBLE TONGUEMUSICAL SYMBOL COMBINING TRIPLE TONG" + + "UEMUSICAL SYMBOL RINFORZANDOMUSICAL SYMBOL SUBITOMUSICAL SYMBOL ZMUSICAL" + + " SYMBOL PIANOMUSICAL SYMBOL MEZZOMUSICAL SYMBOL FORTEMUSICAL SYMBOL CRES" + + "CENDOMUSICAL SYMBOL DECRESCENDOMUSICAL SYMBOL GRACE NOTE SLASHMUSICAL SY" + + "MBOL GRACE NOTE NO SLASHMUSICAL SYMBOL TRMUSICAL SYMBOL TURNMUSICAL SYMB" + + "OL INVERTED TURNMUSICAL SYMBOL TURN SLASHMUSICAL SYMBOL TURN UPMUSICAL S" + + "YMBOL ORNAMENT STROKE-1MUSICAL SYMBOL ORNAMENT STROKE-2MUSICAL SYMBOL OR" + + "NAMENT STROKE-3MUSICAL SYMBOL ORNAMENT STROKE-4MUSICAL SYMBOL ORNAMENT S" + + "TROKE-5MUSICAL SYMBOL ORNAMENT STROKE-6MUSICAL SYMBOL ORNAMENT STROKE-7M" + + "USICAL SYMBOL ORNAMENT STROKE-8MUSICAL SYMBOL ORNAMENT STROKE-9MUSICAL S" + + "YMBOL ORNAMENT STROKE-10MUSICAL SYMBOL ORNAMENT STROKE-11MUSICAL SYMBOL " + + "HAUPTSTIMMEMUSICAL SYMBOL NEBENSTIMMEMUSICAL SYMBOL END OF STIMMEMUSICAL" + + " SYMBOL DEGREE SLASHMUSICAL SYMBOL COMBINING DOWN BOWMUSICAL SYMBOL COMB" + + "INING UP BOWMUSICAL SYMBOL COMBINING HARMONICMUSICAL SYMBOL COMBINING SN" + + "AP PIZZICATOMUSICAL SYMBOL PEDAL MARKMUSICAL SYMBOL PEDAL UP MARKMUSICAL" + + " SYMBOL HALF PEDAL MARKMUSICAL SYMBOL GLISSANDO UPMUSICAL SYMBOL GLISSAN" + + "DO DOWNMUSICAL SYMBOL WITH FINGERNAILSMUSICAL SYMBOL DAMPMUSICAL SYMBOL " + + "DAMP ALLMUSICAL SYMBOL MAXIMAMUSICAL SYMBOL LONGAMUSICAL SYMBOL BREVISMU" + + "SICAL SYMBOL SEMIBREVIS WHITEMUSICAL SYMBOL SEMIBREVIS BLACKMUSICAL SYMB" + + "OL MINIMAMUSICAL SYMBOL MINIMA BLACKMUSICAL SYMBOL SEMIMINIMA WHITEMUSIC" + + "AL SYMBOL SEMIMINIMA BLACKMUSICAL SYMBOL FUSA WHITEMUSICAL SYMBOL FUSA B" + + "LACKMUSICAL SYMBOL LONGA PERFECTA RESTMUSICAL SYMBOL LONGA IMPERFECTA RE" + + "STMUSICAL SYMBOL BREVIS RESTMUSICAL SYMBOL SEMIBREVIS RESTMUSICAL SYMBOL" + + " MINIMA RESTMUSICAL SYMBOL SEMIMINIMA RESTMUSICAL SYMBOL TEMPUS PERFECTU" + + "M CUM PROLATIONE PERFECTAMUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE " + + "IMPERFECTAMUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINU" + + "TION-1MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTAMUSICAL S" + + "YMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTAMUSICAL SYMBOL TEMPUS " + + "IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1MUSICAL SYMBOL TEMPUS " + + "IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2MUSICAL SYMBOL TEMPUS " + + "IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3MUSICAL SYMBOL CROIXMU" + + "SICAL SYMBOL GREGORIAN C CLEFMUSICAL SYMBOL GREGORIAN F CLEFMUSICAL SYMB" + + "OL SQUARE BMUSICAL SYMBOL VIRGAMUSICAL SYMBOL PODATUSMUSICAL SYMBOL CLIV" + + "ISMUSICAL SYMBOL SCANDICUSMUSICAL SYMBOL CLIMACUSMUSICAL SYMBOL TORCULUS" + + "MUSICAL SYMBOL PORRECTUSMUSICAL SYMBOL PORRECTUS FLEXUSMUSICAL SYMBOL SC" + + "ANDICUS FLEXUSMUSICAL SYMBOL TORCULUS RESUPINUSMUSICAL SYMBOL PES SUBPUN" + + "CTISMUSICAL SYMBOL KIEVAN C CLEFMUSICAL SYMBOL KIEVAN END OF PIECEMUSICA" + + "L SYMBOL KIEVAN FINAL NOTEMUSICAL SYMBOL KIEVAN RECITATIVE MARKMUSICAL S" + + "YMBOL KIEVAN WHOLE NOTEMUSICAL SYMBOL KIEVAN HALF NOTEMUSICAL SYMBOL KIE" + + "VAN QUARTER NOTE STEM DOWNMUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UPMUSI" + + "CAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWNMUSICAL SYMBOL KIEVAN EIGHTH NOTE" + + " STEM UPMUSICAL SYMBOL KIEVAN FLAT SIGNGREEK VOCAL NOTATION SYMBOL-1GREE" + + "K VOCAL NOTATION SYMBOL-2GREEK VOCAL NOTATION SYMBOL-3GREEK VOCAL NOTATI" + + "ON SYMBOL-4GREEK VOCAL NOTATION SYMBOL-5GREEK VOCAL NOTATION SYMBOL-6GRE" + + "EK VOCAL NOTATION SYMBOL-7GREEK VOCAL NOTATION SYMBOL-8GREEK VOCAL NOTAT" + + "ION SYMBOL-9GREEK VOCAL NOTATION SYMBOL-10GREEK VOCAL NOTATION SYMBOL-11" + + "GREEK VOCAL NOTATION SYMBOL-12GREEK VOCAL NOTATION SYMBOL-13GREEK VOCAL " + + "NOTATION SYMBOL-14GREEK VOCAL NOTATION SYMBOL-15GREEK VOCAL NOTATION SYM" + + "BOL-16GREEK VOCAL NOTATION SYMBOL-17GREEK VOCAL NOTATION SYMBOL-18GREEK " + + "VOCAL NOTATION SYMBOL-19GREEK VOCAL NOTATION SYMBOL-20GREEK VOCAL NOTATI" + + "ON SYMBOL-21GREEK VOCAL NOTATION SYMBOL-22GREEK VOCAL NOTATION SYMBOL-23" + + "GREEK VOCAL NOTATION SYMBOL-24GREEK VOCAL NOTATION SYMBOL-50GREEK VOCAL " + + "NOTATION SYMBOL-51GREEK VOCAL NOTATION SYMBOL-52GREEK VOCAL NOTATION SYM" + + "BOL-53GREEK VOCAL NOTATION SYMBOL-54GREEK INSTRUMENTAL NOTATION SYMBOL-1" + + "GREEK INSTRUMENTAL NOTATION SYMBOL-2GREEK INSTRUMENTAL NOTATION SYMBOL-4" + + "GREEK INSTRUMENTAL NOTATION SYMBOL-5GREEK INSTRUMENTAL NOTATION SYMBOL-7" + + "GREEK INSTRUMENTAL NOTATION SYMBOL-8GREEK INSTRUMENTAL NOTATION SYMBOL-1" + + "1GREEK INSTRUMENTAL NOTATION SYMBOL-12GREEK INSTRUMENTAL NOTATION SYMBOL" + + "-13GREEK INSTRUMENTAL NOTATION SYMBOL-14GREEK INSTRUMENTAL NOTATION SYMB" + + "OL-17GREEK INSTRUMENTAL NOTATION SYMBOL-18GREEK INSTRUMENTAL NOTATION SY" + + "MBOL-19GREEK INSTRUMENTAL NOTATION SYMBOL-23GREEK INSTRUMENTAL NOTATION ") + ("" + + "SYMBOL-24GREEK INSTRUMENTAL NOTATION SYMBOL-25GREEK INSTRUMENTAL NOTATIO" + + "N SYMBOL-26GREEK INSTRUMENTAL NOTATION SYMBOL-27GREEK INSTRUMENTAL NOTAT" + + "ION SYMBOL-29GREEK INSTRUMENTAL NOTATION SYMBOL-30GREEK INSTRUMENTAL NOT" + + "ATION SYMBOL-32GREEK INSTRUMENTAL NOTATION SYMBOL-36GREEK INSTRUMENTAL N" + + "OTATION SYMBOL-37GREEK INSTRUMENTAL NOTATION SYMBOL-38GREEK INSTRUMENTAL" + + " NOTATION SYMBOL-39GREEK INSTRUMENTAL NOTATION SYMBOL-40GREEK INSTRUMENT" + + "AL NOTATION SYMBOL-42GREEK INSTRUMENTAL NOTATION SYMBOL-43GREEK INSTRUME" + + "NTAL NOTATION SYMBOL-45GREEK INSTRUMENTAL NOTATION SYMBOL-47GREEK INSTRU" + + "MENTAL NOTATION SYMBOL-48GREEK INSTRUMENTAL NOTATION SYMBOL-49GREEK INST" + + "RUMENTAL NOTATION SYMBOL-50GREEK INSTRUMENTAL NOTATION SYMBOL-51GREEK IN" + + "STRUMENTAL NOTATION SYMBOL-52GREEK INSTRUMENTAL NOTATION SYMBOL-53GREEK " + + "INSTRUMENTAL NOTATION SYMBOL-54COMBINING GREEK MUSICAL TRISEMECOMBINING " + + "GREEK MUSICAL TETRASEMECOMBINING GREEK MUSICAL PENTASEMEGREEK MUSICAL LE" + + "IMMAMONOGRAM FOR EARTHDIGRAM FOR HEAVENLY EARTHDIGRAM FOR HUMAN EARTHDIG" + + "RAM FOR EARTHLY HEAVENDIGRAM FOR EARTHLY HUMANDIGRAM FOR EARTHTETRAGRAM " + + "FOR CENTRETETRAGRAM FOR FULL CIRCLETETRAGRAM FOR MIREDTETRAGRAM FOR BARR" + + "IERTETRAGRAM FOR KEEPING SMALLTETRAGRAM FOR CONTRARIETYTETRAGRAM FOR ASC" + + "ENTTETRAGRAM FOR OPPOSITIONTETRAGRAM FOR BRANCHING OUTTETRAGRAM FOR DEFE" + + "CTIVENESS OR DISTORTIONTETRAGRAM FOR DIVERGENCETETRAGRAM FOR YOUTHFULNES" + + "STETRAGRAM FOR INCREASETETRAGRAM FOR PENETRATIONTETRAGRAM FOR REACHTETRA" + + "GRAM FOR CONTACTTETRAGRAM FOR HOLDING BACKTETRAGRAM FOR WAITINGTETRAGRAM" + + " FOR FOLLOWINGTETRAGRAM FOR ADVANCETETRAGRAM FOR RELEASETETRAGRAM FOR RE" + + "SISTANCETETRAGRAM FOR EASETETRAGRAM FOR JOYTETRAGRAM FOR CONTENTIONTETRA" + + "GRAM FOR ENDEAVOURTETRAGRAM FOR DUTIESTETRAGRAM FOR CHANGETETRAGRAM FOR " + + "DECISIVENESSTETRAGRAM FOR BOLD RESOLUTIONTETRAGRAM FOR PACKINGTETRAGRAM " + + "FOR LEGIONTETRAGRAM FOR CLOSENESSTETRAGRAM FOR KINSHIPTETRAGRAM FOR GATH" + + "ERINGTETRAGRAM FOR STRENGTHTETRAGRAM FOR PURITYTETRAGRAM FOR FULLNESSTET" + + "RAGRAM FOR RESIDENCETETRAGRAM FOR LAW OR MODELTETRAGRAM FOR RESPONSETETR" + + "AGRAM FOR GOING TO MEETTETRAGRAM FOR ENCOUNTERSTETRAGRAM FOR STOVETETRAG" + + "RAM FOR GREATNESSTETRAGRAM FOR ENLARGEMENTTETRAGRAM FOR PATTERNTETRAGRAM" + + " FOR RITUALTETRAGRAM FOR FLIGHTTETRAGRAM FOR VASTNESS OR WASTINGTETRAGRA" + + "M FOR CONSTANCYTETRAGRAM FOR MEASURETETRAGRAM FOR ETERNITYTETRAGRAM FOR " + + "UNITYTETRAGRAM FOR DIMINISHMENTTETRAGRAM FOR CLOSED MOUTHTETRAGRAM FOR G" + + "UARDEDNESSTETRAGRAM FOR GATHERING INTETRAGRAM FOR MASSINGTETRAGRAM FOR A" + + "CCUMULATIONTETRAGRAM FOR EMBELLISHMENTTETRAGRAM FOR DOUBTTETRAGRAM FOR W" + + "ATCHTETRAGRAM FOR SINKINGTETRAGRAM FOR INNERTETRAGRAM FOR DEPARTURETETRA" + + "GRAM FOR DARKENINGTETRAGRAM FOR DIMMINGTETRAGRAM FOR EXHAUSTIONTETRAGRAM" + + " FOR SEVERANCETETRAGRAM FOR STOPPAGETETRAGRAM FOR HARDNESSTETRAGRAM FOR " + + "COMPLETIONTETRAGRAM FOR CLOSURETETRAGRAM FOR FAILURETETRAGRAM FOR AGGRAV" + + "ATIONTETRAGRAM FOR COMPLIANCETETRAGRAM FOR ON THE VERGETETRAGRAM FOR DIF" + + "FICULTIESTETRAGRAM FOR LABOURINGTETRAGRAM FOR FOSTERINGCOUNTING ROD UNIT" + + " DIGIT ONECOUNTING ROD UNIT DIGIT TWOCOUNTING ROD UNIT DIGIT THREECOUNTI" + + "NG ROD UNIT DIGIT FOURCOUNTING ROD UNIT DIGIT FIVECOUNTING ROD UNIT DIGI" + + "T SIXCOUNTING ROD UNIT DIGIT SEVENCOUNTING ROD UNIT DIGIT EIGHTCOUNTING " + + "ROD UNIT DIGIT NINECOUNTING ROD TENS DIGIT ONECOUNTING ROD TENS DIGIT TW" + + "OCOUNTING ROD TENS DIGIT THREECOUNTING ROD TENS DIGIT FOURCOUNTING ROD T" + + "ENS DIGIT FIVECOUNTING ROD TENS DIGIT SIXCOUNTING ROD TENS DIGIT SEVENCO" + + "UNTING ROD TENS DIGIT EIGHTCOUNTING ROD TENS DIGIT NINEMATHEMATICAL BOLD" + + " CAPITAL AMATHEMATICAL BOLD CAPITAL BMATHEMATICAL BOLD CAPITAL CMATHEMAT" + + "ICAL BOLD CAPITAL DMATHEMATICAL BOLD CAPITAL EMATHEMATICAL BOLD CAPITAL " + + "FMATHEMATICAL BOLD CAPITAL GMATHEMATICAL BOLD CAPITAL HMATHEMATICAL BOLD" + + " CAPITAL IMATHEMATICAL BOLD CAPITAL JMATHEMATICAL BOLD CAPITAL KMATHEMAT" + + "ICAL BOLD CAPITAL LMATHEMATICAL BOLD CAPITAL MMATHEMATICAL BOLD CAPITAL " + + "NMATHEMATICAL BOLD CAPITAL OMATHEMATICAL BOLD CAPITAL PMATHEMATICAL BOLD" + + " CAPITAL QMATHEMATICAL BOLD CAPITAL RMATHEMATICAL BOLD CAPITAL SMATHEMAT" + + "ICAL BOLD CAPITAL TMATHEMATICAL BOLD CAPITAL UMATHEMATICAL BOLD CAPITAL " + + "VMATHEMATICAL BOLD CAPITAL WMATHEMATICAL BOLD CAPITAL XMATHEMATICAL BOLD" + + " CAPITAL YMATHEMATICAL BOLD CAPITAL ZMATHEMATICAL BOLD SMALL AMATHEMATIC" + + "AL BOLD SMALL BMATHEMATICAL BOLD SMALL CMATHEMATICAL BOLD SMALL DMATHEMA" + + "TICAL BOLD SMALL EMATHEMATICAL BOLD SMALL FMATHEMATICAL BOLD SMALL GMATH" + + "EMATICAL BOLD SMALL HMATHEMATICAL BOLD SMALL IMATHEMATICAL BOLD SMALL JM" + + "ATHEMATICAL BOLD SMALL KMATHEMATICAL BOLD SMALL LMATHEMATICAL BOLD SMALL" + + " MMATHEMATICAL BOLD SMALL NMATHEMATICAL BOLD SMALL OMATHEMATICAL BOLD SM" + + "ALL PMATHEMATICAL BOLD SMALL QMATHEMATICAL BOLD SMALL RMATHEMATICAL BOLD") + ("" + + " SMALL SMATHEMATICAL BOLD SMALL TMATHEMATICAL BOLD SMALL UMATHEMATICAL B" + + "OLD SMALL VMATHEMATICAL BOLD SMALL WMATHEMATICAL BOLD SMALL XMATHEMATICA" + + "L BOLD SMALL YMATHEMATICAL BOLD SMALL ZMATHEMATICAL ITALIC CAPITAL AMATH" + + "EMATICAL ITALIC CAPITAL BMATHEMATICAL ITALIC CAPITAL CMATHEMATICAL ITALI" + + "C CAPITAL DMATHEMATICAL ITALIC CAPITAL EMATHEMATICAL ITALIC CAPITAL FMAT" + + "HEMATICAL ITALIC CAPITAL GMATHEMATICAL ITALIC CAPITAL HMATHEMATICAL ITAL" + + "IC CAPITAL IMATHEMATICAL ITALIC CAPITAL JMATHEMATICAL ITALIC CAPITAL KMA" + + "THEMATICAL ITALIC CAPITAL LMATHEMATICAL ITALIC CAPITAL MMATHEMATICAL ITA" + + "LIC CAPITAL NMATHEMATICAL ITALIC CAPITAL OMATHEMATICAL ITALIC CAPITAL PM" + + "ATHEMATICAL ITALIC CAPITAL QMATHEMATICAL ITALIC CAPITAL RMATHEMATICAL IT" + + "ALIC CAPITAL SMATHEMATICAL ITALIC CAPITAL TMATHEMATICAL ITALIC CAPITAL U" + + "MATHEMATICAL ITALIC CAPITAL VMATHEMATICAL ITALIC CAPITAL WMATHEMATICAL I" + + "TALIC CAPITAL XMATHEMATICAL ITALIC CAPITAL YMATHEMATICAL ITALIC CAPITAL " + + "ZMATHEMATICAL ITALIC SMALL AMATHEMATICAL ITALIC SMALL BMATHEMATICAL ITAL" + + "IC SMALL CMATHEMATICAL ITALIC SMALL DMATHEMATICAL ITALIC SMALL EMATHEMAT" + + "ICAL ITALIC SMALL FMATHEMATICAL ITALIC SMALL GMATHEMATICAL ITALIC SMALL " + + "IMATHEMATICAL ITALIC SMALL JMATHEMATICAL ITALIC SMALL KMATHEMATICAL ITAL" + + "IC SMALL LMATHEMATICAL ITALIC SMALL MMATHEMATICAL ITALIC SMALL NMATHEMAT" + + "ICAL ITALIC SMALL OMATHEMATICAL ITALIC SMALL PMATHEMATICAL ITALIC SMALL " + + "QMATHEMATICAL ITALIC SMALL RMATHEMATICAL ITALIC SMALL SMATHEMATICAL ITAL" + + "IC SMALL TMATHEMATICAL ITALIC SMALL UMATHEMATICAL ITALIC SMALL VMATHEMAT" + + "ICAL ITALIC SMALL WMATHEMATICAL ITALIC SMALL XMATHEMATICAL ITALIC SMALL " + + "YMATHEMATICAL ITALIC SMALL ZMATHEMATICAL BOLD ITALIC CAPITAL AMATHEMATIC" + + "AL BOLD ITALIC CAPITAL BMATHEMATICAL BOLD ITALIC CAPITAL CMATHEMATICAL B" + + "OLD ITALIC CAPITAL DMATHEMATICAL BOLD ITALIC CAPITAL EMATHEMATICAL BOLD " + + "ITALIC CAPITAL FMATHEMATICAL BOLD ITALIC CAPITAL GMATHEMATICAL BOLD ITAL" + + "IC CAPITAL HMATHEMATICAL BOLD ITALIC CAPITAL IMATHEMATICAL BOLD ITALIC C" + + "APITAL JMATHEMATICAL BOLD ITALIC CAPITAL KMATHEMATICAL BOLD ITALIC CAPIT" + + "AL LMATHEMATICAL BOLD ITALIC CAPITAL MMATHEMATICAL BOLD ITALIC CAPITAL N" + + "MATHEMATICAL BOLD ITALIC CAPITAL OMATHEMATICAL BOLD ITALIC CAPITAL PMATH" + + "EMATICAL BOLD ITALIC CAPITAL QMATHEMATICAL BOLD ITALIC CAPITAL RMATHEMAT" + + "ICAL BOLD ITALIC CAPITAL SMATHEMATICAL BOLD ITALIC CAPITAL TMATHEMATICAL" + + " BOLD ITALIC CAPITAL UMATHEMATICAL BOLD ITALIC CAPITAL VMATHEMATICAL BOL" + + "D ITALIC CAPITAL WMATHEMATICAL BOLD ITALIC CAPITAL XMATHEMATICAL BOLD IT" + + "ALIC CAPITAL YMATHEMATICAL BOLD ITALIC CAPITAL ZMATHEMATICAL BOLD ITALIC" + + " SMALL AMATHEMATICAL BOLD ITALIC SMALL BMATHEMATICAL BOLD ITALIC SMALL C" + + "MATHEMATICAL BOLD ITALIC SMALL DMATHEMATICAL BOLD ITALIC SMALL EMATHEMAT" + + "ICAL BOLD ITALIC SMALL FMATHEMATICAL BOLD ITALIC SMALL GMATHEMATICAL BOL" + + "D ITALIC SMALL HMATHEMATICAL BOLD ITALIC SMALL IMATHEMATICAL BOLD ITALIC" + + " SMALL JMATHEMATICAL BOLD ITALIC SMALL KMATHEMATICAL BOLD ITALIC SMALL L" + + "MATHEMATICAL BOLD ITALIC SMALL MMATHEMATICAL BOLD ITALIC SMALL NMATHEMAT" + + "ICAL BOLD ITALIC SMALL OMATHEMATICAL BOLD ITALIC SMALL PMATHEMATICAL BOL" + + "D ITALIC SMALL QMATHEMATICAL BOLD ITALIC SMALL RMATHEMATICAL BOLD ITALIC" + + " SMALL SMATHEMATICAL BOLD ITALIC SMALL TMATHEMATICAL BOLD ITALIC SMALL U" + + "MATHEMATICAL BOLD ITALIC SMALL VMATHEMATICAL BOLD ITALIC SMALL WMATHEMAT" + + "ICAL BOLD ITALIC SMALL XMATHEMATICAL BOLD ITALIC SMALL YMATHEMATICAL BOL" + + "D ITALIC SMALL ZMATHEMATICAL SCRIPT CAPITAL AMATHEMATICAL SCRIPT CAPITAL" + + " CMATHEMATICAL SCRIPT CAPITAL DMATHEMATICAL SCRIPT CAPITAL GMATHEMATICAL" + + " SCRIPT CAPITAL JMATHEMATICAL SCRIPT CAPITAL KMATHEMATICAL SCRIPT CAPITA" + + "L NMATHEMATICAL SCRIPT CAPITAL OMATHEMATICAL SCRIPT CAPITAL PMATHEMATICA" + + "L SCRIPT CAPITAL QMATHEMATICAL SCRIPT CAPITAL SMATHEMATICAL SCRIPT CAPIT" + + "AL TMATHEMATICAL SCRIPT CAPITAL UMATHEMATICAL SCRIPT CAPITAL VMATHEMATIC" + + "AL SCRIPT CAPITAL WMATHEMATICAL SCRIPT CAPITAL XMATHEMATICAL SCRIPT CAPI" + + "TAL YMATHEMATICAL SCRIPT CAPITAL ZMATHEMATICAL SCRIPT SMALL AMATHEMATICA" + + "L SCRIPT SMALL BMATHEMATICAL SCRIPT SMALL CMATHEMATICAL SCRIPT SMALL DMA" + + "THEMATICAL SCRIPT SMALL FMATHEMATICAL SCRIPT SMALL HMATHEMATICAL SCRIPT " + + "SMALL IMATHEMATICAL SCRIPT SMALL JMATHEMATICAL SCRIPT SMALL KMATHEMATICA" + + "L SCRIPT SMALL LMATHEMATICAL SCRIPT SMALL MMATHEMATICAL SCRIPT SMALL NMA" + + "THEMATICAL SCRIPT SMALL PMATHEMATICAL SCRIPT SMALL QMATHEMATICAL SCRIPT " + + "SMALL RMATHEMATICAL SCRIPT SMALL SMATHEMATICAL SCRIPT SMALL TMATHEMATICA" + + "L SCRIPT SMALL UMATHEMATICAL SCRIPT SMALL VMATHEMATICAL SCRIPT SMALL WMA" + + "THEMATICAL SCRIPT SMALL XMATHEMATICAL SCRIPT SMALL YMATHEMATICAL SCRIPT " + + "SMALL ZMATHEMATICAL BOLD SCRIPT CAPITAL AMATHEMATICAL BOLD SCRIPT CAPITA" + + "L BMATHEMATICAL BOLD SCRIPT CAPITAL CMATHEMATICAL BOLD SCRIPT CAPITAL DM") + ("" + + "ATHEMATICAL BOLD SCRIPT CAPITAL EMATHEMATICAL BOLD SCRIPT CAPITAL FMATHE" + + "MATICAL BOLD SCRIPT CAPITAL GMATHEMATICAL BOLD SCRIPT CAPITAL HMATHEMATI" + + "CAL BOLD SCRIPT CAPITAL IMATHEMATICAL BOLD SCRIPT CAPITAL JMATHEMATICAL " + + "BOLD SCRIPT CAPITAL KMATHEMATICAL BOLD SCRIPT CAPITAL LMATHEMATICAL BOLD" + + " SCRIPT CAPITAL MMATHEMATICAL BOLD SCRIPT CAPITAL NMATHEMATICAL BOLD SCR" + + "IPT CAPITAL OMATHEMATICAL BOLD SCRIPT CAPITAL PMATHEMATICAL BOLD SCRIPT " + + "CAPITAL QMATHEMATICAL BOLD SCRIPT CAPITAL RMATHEMATICAL BOLD SCRIPT CAPI" + + "TAL SMATHEMATICAL BOLD SCRIPT CAPITAL TMATHEMATICAL BOLD SCRIPT CAPITAL " + + "UMATHEMATICAL BOLD SCRIPT CAPITAL VMATHEMATICAL BOLD SCRIPT CAPITAL WMAT" + + "HEMATICAL BOLD SCRIPT CAPITAL XMATHEMATICAL BOLD SCRIPT CAPITAL YMATHEMA" + + "TICAL BOLD SCRIPT CAPITAL ZMATHEMATICAL BOLD SCRIPT SMALL AMATHEMATICAL " + + "BOLD SCRIPT SMALL BMATHEMATICAL BOLD SCRIPT SMALL CMATHEMATICAL BOLD SCR" + + "IPT SMALL DMATHEMATICAL BOLD SCRIPT SMALL EMATHEMATICAL BOLD SCRIPT SMAL" + + "L FMATHEMATICAL BOLD SCRIPT SMALL GMATHEMATICAL BOLD SCRIPT SMALL HMATHE" + + "MATICAL BOLD SCRIPT SMALL IMATHEMATICAL BOLD SCRIPT SMALL JMATHEMATICAL " + + "BOLD SCRIPT SMALL KMATHEMATICAL BOLD SCRIPT SMALL LMATHEMATICAL BOLD SCR" + + "IPT SMALL MMATHEMATICAL BOLD SCRIPT SMALL NMATHEMATICAL BOLD SCRIPT SMAL" + + "L OMATHEMATICAL BOLD SCRIPT SMALL PMATHEMATICAL BOLD SCRIPT SMALL QMATHE" + + "MATICAL BOLD SCRIPT SMALL RMATHEMATICAL BOLD SCRIPT SMALL SMATHEMATICAL " + + "BOLD SCRIPT SMALL TMATHEMATICAL BOLD SCRIPT SMALL UMATHEMATICAL BOLD SCR" + + "IPT SMALL VMATHEMATICAL BOLD SCRIPT SMALL WMATHEMATICAL BOLD SCRIPT SMAL" + + "L XMATHEMATICAL BOLD SCRIPT SMALL YMATHEMATICAL BOLD SCRIPT SMALL ZMATHE" + + "MATICAL FRAKTUR CAPITAL AMATHEMATICAL FRAKTUR CAPITAL BMATHEMATICAL FRAK" + + "TUR CAPITAL DMATHEMATICAL FRAKTUR CAPITAL EMATHEMATICAL FRAKTUR CAPITAL " + + "FMATHEMATICAL FRAKTUR CAPITAL GMATHEMATICAL FRAKTUR CAPITAL JMATHEMATICA" + + "L FRAKTUR CAPITAL KMATHEMATICAL FRAKTUR CAPITAL LMATHEMATICAL FRAKTUR CA" + + "PITAL MMATHEMATICAL FRAKTUR CAPITAL NMATHEMATICAL FRAKTUR CAPITAL OMATHE" + + "MATICAL FRAKTUR CAPITAL PMATHEMATICAL FRAKTUR CAPITAL QMATHEMATICAL FRAK" + + "TUR CAPITAL SMATHEMATICAL FRAKTUR CAPITAL TMATHEMATICAL FRAKTUR CAPITAL " + + "UMATHEMATICAL FRAKTUR CAPITAL VMATHEMATICAL FRAKTUR CAPITAL WMATHEMATICA" + + "L FRAKTUR CAPITAL XMATHEMATICAL FRAKTUR CAPITAL YMATHEMATICAL FRAKTUR SM" + + "ALL AMATHEMATICAL FRAKTUR SMALL BMATHEMATICAL FRAKTUR SMALL CMATHEMATICA" + + "L FRAKTUR SMALL DMATHEMATICAL FRAKTUR SMALL EMATHEMATICAL FRAKTUR SMALL " + + "FMATHEMATICAL FRAKTUR SMALL GMATHEMATICAL FRAKTUR SMALL HMATHEMATICAL FR" + + "AKTUR SMALL IMATHEMATICAL FRAKTUR SMALL JMATHEMATICAL FRAKTUR SMALL KMAT" + + "HEMATICAL FRAKTUR SMALL LMATHEMATICAL FRAKTUR SMALL MMATHEMATICAL FRAKTU" + + "R SMALL NMATHEMATICAL FRAKTUR SMALL OMATHEMATICAL FRAKTUR SMALL PMATHEMA" + + "TICAL FRAKTUR SMALL QMATHEMATICAL FRAKTUR SMALL RMATHEMATICAL FRAKTUR SM" + + "ALL SMATHEMATICAL FRAKTUR SMALL TMATHEMATICAL FRAKTUR SMALL UMATHEMATICA" + + "L FRAKTUR SMALL VMATHEMATICAL FRAKTUR SMALL WMATHEMATICAL FRAKTUR SMALL " + + "XMATHEMATICAL FRAKTUR SMALL YMATHEMATICAL FRAKTUR SMALL ZMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL AMATHEMATICAL DOUBLE-STRUCK CAPITAL BMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL DMATHEMATICAL DOUBLE-STRUCK CAPITAL EMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL FMATHEMATICAL DOUBLE-STRUCK CAPITAL GMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL IMATHEMATICAL DOUBLE-STRUCK CAPITAL JMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL KMATHEMATICAL DOUBLE-STRUCK CAPITAL LMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL MMATHEMATICAL DOUBLE-STRUCK CAPITAL OMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL SMATHEMATICAL DOUBLE-STRUCK CAPITAL TMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL UMATHEMATICAL DOUBLE-STRUCK CAPITAL VMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL WMATHEMATICAL DOUBLE-STRUCK CAPITAL XMATHEMATICAL DO" + + "UBLE-STRUCK CAPITAL YMATHEMATICAL DOUBLE-STRUCK SMALL AMATHEMATICAL DOUB" + + "LE-STRUCK SMALL BMATHEMATICAL DOUBLE-STRUCK SMALL CMATHEMATICAL DOUBLE-S" + + "TRUCK SMALL DMATHEMATICAL DOUBLE-STRUCK SMALL EMATHEMATICAL DOUBLE-STRUC" + + "K SMALL FMATHEMATICAL DOUBLE-STRUCK SMALL GMATHEMATICAL DOUBLE-STRUCK SM" + + "ALL HMATHEMATICAL DOUBLE-STRUCK SMALL IMATHEMATICAL DOUBLE-STRUCK SMALL " + + "JMATHEMATICAL DOUBLE-STRUCK SMALL KMATHEMATICAL DOUBLE-STRUCK SMALL LMAT" + + "HEMATICAL DOUBLE-STRUCK SMALL MMATHEMATICAL DOUBLE-STRUCK SMALL NMATHEMA" + + "TICAL DOUBLE-STRUCK SMALL OMATHEMATICAL DOUBLE-STRUCK SMALL PMATHEMATICA" + + "L DOUBLE-STRUCK SMALL QMATHEMATICAL DOUBLE-STRUCK SMALL RMATHEMATICAL DO" + + "UBLE-STRUCK SMALL SMATHEMATICAL DOUBLE-STRUCK SMALL TMATHEMATICAL DOUBLE" + + "-STRUCK SMALL UMATHEMATICAL DOUBLE-STRUCK SMALL VMATHEMATICAL DOUBLE-STR" + + "UCK SMALL WMATHEMATICAL DOUBLE-STRUCK SMALL XMATHEMATICAL DOUBLE-STRUCK " + + "SMALL YMATHEMATICAL DOUBLE-STRUCK SMALL ZMATHEMATICAL BOLD FRAKTUR CAPIT" + + "AL AMATHEMATICAL BOLD FRAKTUR CAPITAL BMATHEMATICAL BOLD FRAKTUR CAPITAL") + ("" + + " CMATHEMATICAL BOLD FRAKTUR CAPITAL DMATHEMATICAL BOLD FRAKTUR CAPITAL E" + + "MATHEMATICAL BOLD FRAKTUR CAPITAL FMATHEMATICAL BOLD FRAKTUR CAPITAL GMA" + + "THEMATICAL BOLD FRAKTUR CAPITAL HMATHEMATICAL BOLD FRAKTUR CAPITAL IMATH" + + "EMATICAL BOLD FRAKTUR CAPITAL JMATHEMATICAL BOLD FRAKTUR CAPITAL KMATHEM" + + "ATICAL BOLD FRAKTUR CAPITAL LMATHEMATICAL BOLD FRAKTUR CAPITAL MMATHEMAT" + + "ICAL BOLD FRAKTUR CAPITAL NMATHEMATICAL BOLD FRAKTUR CAPITAL OMATHEMATIC" + + "AL BOLD FRAKTUR CAPITAL PMATHEMATICAL BOLD FRAKTUR CAPITAL QMATHEMATICAL" + + " BOLD FRAKTUR CAPITAL RMATHEMATICAL BOLD FRAKTUR CAPITAL SMATHEMATICAL B" + + "OLD FRAKTUR CAPITAL TMATHEMATICAL BOLD FRAKTUR CAPITAL UMATHEMATICAL BOL" + + "D FRAKTUR CAPITAL VMATHEMATICAL BOLD FRAKTUR CAPITAL WMATHEMATICAL BOLD " + + "FRAKTUR CAPITAL XMATHEMATICAL BOLD FRAKTUR CAPITAL YMATHEMATICAL BOLD FR" + + "AKTUR CAPITAL ZMATHEMATICAL BOLD FRAKTUR SMALL AMATHEMATICAL BOLD FRAKTU" + + "R SMALL BMATHEMATICAL BOLD FRAKTUR SMALL CMATHEMATICAL BOLD FRAKTUR SMAL" + + "L DMATHEMATICAL BOLD FRAKTUR SMALL EMATHEMATICAL BOLD FRAKTUR SMALL FMAT" + + "HEMATICAL BOLD FRAKTUR SMALL GMATHEMATICAL BOLD FRAKTUR SMALL HMATHEMATI" + + "CAL BOLD FRAKTUR SMALL IMATHEMATICAL BOLD FRAKTUR SMALL JMATHEMATICAL BO" + + "LD FRAKTUR SMALL KMATHEMATICAL BOLD FRAKTUR SMALL LMATHEMATICAL BOLD FRA" + + "KTUR SMALL MMATHEMATICAL BOLD FRAKTUR SMALL NMATHEMATICAL BOLD FRAKTUR S" + + "MALL OMATHEMATICAL BOLD FRAKTUR SMALL PMATHEMATICAL BOLD FRAKTUR SMALL Q" + + "MATHEMATICAL BOLD FRAKTUR SMALL RMATHEMATICAL BOLD FRAKTUR SMALL SMATHEM" + + "ATICAL BOLD FRAKTUR SMALL TMATHEMATICAL BOLD FRAKTUR SMALL UMATHEMATICAL" + + " BOLD FRAKTUR SMALL VMATHEMATICAL BOLD FRAKTUR SMALL WMATHEMATICAL BOLD " + + "FRAKTUR SMALL XMATHEMATICAL BOLD FRAKTUR SMALL YMATHEMATICAL BOLD FRAKTU" + + "R SMALL ZMATHEMATICAL SANS-SERIF CAPITAL AMATHEMATICAL SANS-SERIF CAPITA" + + "L BMATHEMATICAL SANS-SERIF CAPITAL CMATHEMATICAL SANS-SERIF CAPITAL DMAT" + + "HEMATICAL SANS-SERIF CAPITAL EMATHEMATICAL SANS-SERIF CAPITAL FMATHEMATI" + + "CAL SANS-SERIF CAPITAL GMATHEMATICAL SANS-SERIF CAPITAL HMATHEMATICAL SA" + + "NS-SERIF CAPITAL IMATHEMATICAL SANS-SERIF CAPITAL JMATHEMATICAL SANS-SER" + + "IF CAPITAL KMATHEMATICAL SANS-SERIF CAPITAL LMATHEMATICAL SANS-SERIF CAP" + + "ITAL MMATHEMATICAL SANS-SERIF CAPITAL NMATHEMATICAL SANS-SERIF CAPITAL O" + + "MATHEMATICAL SANS-SERIF CAPITAL PMATHEMATICAL SANS-SERIF CAPITAL QMATHEM" + + "ATICAL SANS-SERIF CAPITAL RMATHEMATICAL SANS-SERIF CAPITAL SMATHEMATICAL" + + " SANS-SERIF CAPITAL TMATHEMATICAL SANS-SERIF CAPITAL UMATHEMATICAL SANS-" + + "SERIF CAPITAL VMATHEMATICAL SANS-SERIF CAPITAL WMATHEMATICAL SANS-SERIF " + + "CAPITAL XMATHEMATICAL SANS-SERIF CAPITAL YMATHEMATICAL SANS-SERIF CAPITA" + + "L ZMATHEMATICAL SANS-SERIF SMALL AMATHEMATICAL SANS-SERIF SMALL BMATHEMA" + + "TICAL SANS-SERIF SMALL CMATHEMATICAL SANS-SERIF SMALL DMATHEMATICAL SANS" + + "-SERIF SMALL EMATHEMATICAL SANS-SERIF SMALL FMATHEMATICAL SANS-SERIF SMA" + + "LL GMATHEMATICAL SANS-SERIF SMALL HMATHEMATICAL SANS-SERIF SMALL IMATHEM" + + "ATICAL SANS-SERIF SMALL JMATHEMATICAL SANS-SERIF SMALL KMATHEMATICAL SAN" + + "S-SERIF SMALL LMATHEMATICAL SANS-SERIF SMALL MMATHEMATICAL SANS-SERIF SM" + + "ALL NMATHEMATICAL SANS-SERIF SMALL OMATHEMATICAL SANS-SERIF SMALL PMATHE" + + "MATICAL SANS-SERIF SMALL QMATHEMATICAL SANS-SERIF SMALL RMATHEMATICAL SA" + + "NS-SERIF SMALL SMATHEMATICAL SANS-SERIF SMALL TMATHEMATICAL SANS-SERIF S" + + "MALL UMATHEMATICAL SANS-SERIF SMALL VMATHEMATICAL SANS-SERIF SMALL WMATH" + + "EMATICAL SANS-SERIF SMALL XMATHEMATICAL SANS-SERIF SMALL YMATHEMATICAL S" + + "ANS-SERIF SMALL ZMATHEMATICAL SANS-SERIF BOLD CAPITAL AMATHEMATICAL SANS" + + "-SERIF BOLD CAPITAL BMATHEMATICAL SANS-SERIF BOLD CAPITAL CMATHEMATICAL " + + "SANS-SERIF BOLD CAPITAL DMATHEMATICAL SANS-SERIF BOLD CAPITAL EMATHEMATI" + + "CAL SANS-SERIF BOLD CAPITAL FMATHEMATICAL SANS-SERIF BOLD CAPITAL GMATHE" + + "MATICAL SANS-SERIF BOLD CAPITAL HMATHEMATICAL SANS-SERIF BOLD CAPITAL IM" + + "ATHEMATICAL SANS-SERIF BOLD CAPITAL JMATHEMATICAL SANS-SERIF BOLD CAPITA" + + "L KMATHEMATICAL SANS-SERIF BOLD CAPITAL LMATHEMATICAL SANS-SERIF BOLD CA" + + "PITAL MMATHEMATICAL SANS-SERIF BOLD CAPITAL NMATHEMATICAL SANS-SERIF BOL" + + "D CAPITAL OMATHEMATICAL SANS-SERIF BOLD CAPITAL PMATHEMATICAL SANS-SERIF" + + " BOLD CAPITAL QMATHEMATICAL SANS-SERIF BOLD CAPITAL RMATHEMATICAL SANS-S" + + "ERIF BOLD CAPITAL SMATHEMATICAL SANS-SERIF BOLD CAPITAL TMATHEMATICAL SA" + + "NS-SERIF BOLD CAPITAL UMATHEMATICAL SANS-SERIF BOLD CAPITAL VMATHEMATICA" + + "L SANS-SERIF BOLD CAPITAL WMATHEMATICAL SANS-SERIF BOLD CAPITAL XMATHEMA" + + "TICAL SANS-SERIF BOLD CAPITAL YMATHEMATICAL SANS-SERIF BOLD CAPITAL ZMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL AMATHEMATICAL SANS-SERIF BOLD SMALL BMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL CMATHEMATICAL SANS-SERIF BOLD SMALL DMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL EMATHEMATICAL SANS-SERIF BOLD SMALL FMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL GMATHEMATICAL SANS-SERIF BOLD SMALL HMAT") + ("" + + "HEMATICAL SANS-SERIF BOLD SMALL IMATHEMATICAL SANS-SERIF BOLD SMALL JMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL KMATHEMATICAL SANS-SERIF BOLD SMALL LMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL MMATHEMATICAL SANS-SERIF BOLD SMALL NMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL OMATHEMATICAL SANS-SERIF BOLD SMALL PMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL QMATHEMATICAL SANS-SERIF BOLD SMALL RMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL SMATHEMATICAL SANS-SERIF BOLD SMALL TMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL UMATHEMATICAL SANS-SERIF BOLD SMALL VMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL WMATHEMATICAL SANS-SERIF BOLD SMALL XMAT" + + "HEMATICAL SANS-SERIF BOLD SMALL YMATHEMATICAL SANS-SERIF BOLD SMALL ZMAT" + + "HEMATICAL SANS-SERIF ITALIC CAPITAL AMATHEMATICAL SANS-SERIF ITALIC CAPI" + + "TAL BMATHEMATICAL SANS-SERIF ITALIC CAPITAL CMATHEMATICAL SANS-SERIF ITA" + + "LIC CAPITAL DMATHEMATICAL SANS-SERIF ITALIC CAPITAL EMATHEMATICAL SANS-S" + + "ERIF ITALIC CAPITAL FMATHEMATICAL SANS-SERIF ITALIC CAPITAL GMATHEMATICA" + + "L SANS-SERIF ITALIC CAPITAL HMATHEMATICAL SANS-SERIF ITALIC CAPITAL IMAT" + + "HEMATICAL SANS-SERIF ITALIC CAPITAL JMATHEMATICAL SANS-SERIF ITALIC CAPI" + + "TAL KMATHEMATICAL SANS-SERIF ITALIC CAPITAL LMATHEMATICAL SANS-SERIF ITA" + + "LIC CAPITAL MMATHEMATICAL SANS-SERIF ITALIC CAPITAL NMATHEMATICAL SANS-S" + + "ERIF ITALIC CAPITAL OMATHEMATICAL SANS-SERIF ITALIC CAPITAL PMATHEMATICA" + + "L SANS-SERIF ITALIC CAPITAL QMATHEMATICAL SANS-SERIF ITALIC CAPITAL RMAT" + + "HEMATICAL SANS-SERIF ITALIC CAPITAL SMATHEMATICAL SANS-SERIF ITALIC CAPI" + + "TAL TMATHEMATICAL SANS-SERIF ITALIC CAPITAL UMATHEMATICAL SANS-SERIF ITA" + + "LIC CAPITAL VMATHEMATICAL SANS-SERIF ITALIC CAPITAL WMATHEMATICAL SANS-S" + + "ERIF ITALIC CAPITAL XMATHEMATICAL SANS-SERIF ITALIC CAPITAL YMATHEMATICA" + + "L SANS-SERIF ITALIC CAPITAL ZMATHEMATICAL SANS-SERIF ITALIC SMALL AMATHE" + + "MATICAL SANS-SERIF ITALIC SMALL BMATHEMATICAL SANS-SERIF ITALIC SMALL CM" + + "ATHEMATICAL SANS-SERIF ITALIC SMALL DMATHEMATICAL SANS-SERIF ITALIC SMAL" + + "L EMATHEMATICAL SANS-SERIF ITALIC SMALL FMATHEMATICAL SANS-SERIF ITALIC " + + "SMALL GMATHEMATICAL SANS-SERIF ITALIC SMALL HMATHEMATICAL SANS-SERIF ITA" + + "LIC SMALL IMATHEMATICAL SANS-SERIF ITALIC SMALL JMATHEMATICAL SANS-SERIF" + + " ITALIC SMALL KMATHEMATICAL SANS-SERIF ITALIC SMALL LMATHEMATICAL SANS-S" + + "ERIF ITALIC SMALL MMATHEMATICAL SANS-SERIF ITALIC SMALL NMATHEMATICAL SA" + + "NS-SERIF ITALIC SMALL OMATHEMATICAL SANS-SERIF ITALIC SMALL PMATHEMATICA" + + "L SANS-SERIF ITALIC SMALL QMATHEMATICAL SANS-SERIF ITALIC SMALL RMATHEMA" + + "TICAL SANS-SERIF ITALIC SMALL SMATHEMATICAL SANS-SERIF ITALIC SMALL TMAT" + + "HEMATICAL SANS-SERIF ITALIC SMALL UMATHEMATICAL SANS-SERIF ITALIC SMALL " + + "VMATHEMATICAL SANS-SERIF ITALIC SMALL WMATHEMATICAL SANS-SERIF ITALIC SM" + + "ALL XMATHEMATICAL SANS-SERIF ITALIC SMALL YMATHEMATICAL SANS-SERIF ITALI" + + "C SMALL ZMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL AMATHEMATICAL SANS-" + + "SERIF BOLD ITALIC CAPITAL BMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C" + + "MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DMATHEMATICAL SANS-SERIF BOL" + + "D ITALIC CAPITAL EMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL FMATHEMATI" + + "CAL SANS-SERIF BOLD ITALIC CAPITAL GMATHEMATICAL SANS-SERIF BOLD ITALIC " + + "CAPITAL HMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IMATHEMATICAL SANS-" + + "SERIF BOLD ITALIC CAPITAL JMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K" + + "MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LMATHEMATICAL SANS-SERIF BOL" + + "D ITALIC CAPITAL MMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NMATHEMATI" + + "CAL SANS-SERIF BOLD ITALIC CAPITAL OMATHEMATICAL SANS-SERIF BOLD ITALIC " + + "CAPITAL PMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL QMATHEMATICAL SANS-" + + "SERIF BOLD ITALIC CAPITAL RMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S" + + "MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TMATHEMATICAL SANS-SERIF BOL" + + "D ITALIC CAPITAL UMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL VMATHEMATI" + + "CAL SANS-SERIF BOLD ITALIC CAPITAL WMATHEMATICAL SANS-SERIF BOLD ITALIC " + + "CAPITAL XMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL YMATHEMATICAL SANS-" + + "SERIF BOLD ITALIC CAPITAL ZMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL AMA" + + "THEMATICAL SANS-SERIF BOLD ITALIC SMALL BMATHEMATICAL SANS-SERIF BOLD IT" + + "ALIC SMALL CMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DMATHEMATICAL SANS" + + "-SERIF BOLD ITALIC SMALL EMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FMAT" + + "HEMATICAL SANS-SERIF BOLD ITALIC SMALL GMATHEMATICAL SANS-SERIF BOLD ITA" + + "LIC SMALL HMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IMATHEMATICAL SANS-" + + "SERIF BOLD ITALIC SMALL JMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KMATH" + + "EMATICAL SANS-SERIF BOLD ITALIC SMALL LMATHEMATICAL SANS-SERIF BOLD ITAL" + + "IC SMALL MMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NMATHEMATICAL SANS-S" + + "ERIF BOLD ITALIC SMALL OMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PMATHE" + + "MATICAL SANS-SERIF BOLD ITALIC SMALL QMATHEMATICAL SANS-SERIF BOLD ITALI") + ("" + + "C SMALL RMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SMATHEMATICAL SANS-SE" + + "RIF BOLD ITALIC SMALL TMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UMATHEM" + + "ATICAL SANS-SERIF BOLD ITALIC SMALL VMATHEMATICAL SANS-SERIF BOLD ITALIC" + + " SMALL WMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XMATHEMATICAL SANS-SER" + + "IF BOLD ITALIC SMALL YMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZMATHEMA" + + "TICAL MONOSPACE CAPITAL AMATHEMATICAL MONOSPACE CAPITAL BMATHEMATICAL MO" + + "NOSPACE CAPITAL CMATHEMATICAL MONOSPACE CAPITAL DMATHEMATICAL MONOSPACE " + + "CAPITAL EMATHEMATICAL MONOSPACE CAPITAL FMATHEMATICAL MONOSPACE CAPITAL " + + "GMATHEMATICAL MONOSPACE CAPITAL HMATHEMATICAL MONOSPACE CAPITAL IMATHEMA" + + "TICAL MONOSPACE CAPITAL JMATHEMATICAL MONOSPACE CAPITAL KMATHEMATICAL MO" + + "NOSPACE CAPITAL LMATHEMATICAL MONOSPACE CAPITAL MMATHEMATICAL MONOSPACE " + + "CAPITAL NMATHEMATICAL MONOSPACE CAPITAL OMATHEMATICAL MONOSPACE CAPITAL " + + "PMATHEMATICAL MONOSPACE CAPITAL QMATHEMATICAL MONOSPACE CAPITAL RMATHEMA" + + "TICAL MONOSPACE CAPITAL SMATHEMATICAL MONOSPACE CAPITAL TMATHEMATICAL MO" + + "NOSPACE CAPITAL UMATHEMATICAL MONOSPACE CAPITAL VMATHEMATICAL MONOSPACE " + + "CAPITAL WMATHEMATICAL MONOSPACE CAPITAL XMATHEMATICAL MONOSPACE CAPITAL " + + "YMATHEMATICAL MONOSPACE CAPITAL ZMATHEMATICAL MONOSPACE SMALL AMATHEMATI" + + "CAL MONOSPACE SMALL BMATHEMATICAL MONOSPACE SMALL CMATHEMATICAL MONOSPAC" + + "E SMALL DMATHEMATICAL MONOSPACE SMALL EMATHEMATICAL MONOSPACE SMALL FMAT" + + "HEMATICAL MONOSPACE SMALL GMATHEMATICAL MONOSPACE SMALL HMATHEMATICAL MO" + + "NOSPACE SMALL IMATHEMATICAL MONOSPACE SMALL JMATHEMATICAL MONOSPACE SMAL" + + "L KMATHEMATICAL MONOSPACE SMALL LMATHEMATICAL MONOSPACE SMALL MMATHEMATI" + + "CAL MONOSPACE SMALL NMATHEMATICAL MONOSPACE SMALL OMATHEMATICAL MONOSPAC" + + "E SMALL PMATHEMATICAL MONOSPACE SMALL QMATHEMATICAL MONOSPACE SMALL RMAT" + + "HEMATICAL MONOSPACE SMALL SMATHEMATICAL MONOSPACE SMALL TMATHEMATICAL MO" + + "NOSPACE SMALL UMATHEMATICAL MONOSPACE SMALL VMATHEMATICAL MONOSPACE SMAL" + + "L WMATHEMATICAL MONOSPACE SMALL XMATHEMATICAL MONOSPACE SMALL YMATHEMATI" + + "CAL MONOSPACE SMALL ZMATHEMATICAL ITALIC SMALL DOTLESS IMATHEMATICAL ITA" + + "LIC SMALL DOTLESS JMATHEMATICAL BOLD CAPITAL ALPHAMATHEMATICAL BOLD CAPI" + + "TAL BETAMATHEMATICAL BOLD CAPITAL GAMMAMATHEMATICAL BOLD CAPITAL DELTAMA" + + "THEMATICAL BOLD CAPITAL EPSILONMATHEMATICAL BOLD CAPITAL ZETAMATHEMATICA" + + "L BOLD CAPITAL ETAMATHEMATICAL BOLD CAPITAL THETAMATHEMATICAL BOLD CAPIT" + + "AL IOTAMATHEMATICAL BOLD CAPITAL KAPPAMATHEMATICAL BOLD CAPITAL LAMDAMAT" + + "HEMATICAL BOLD CAPITAL MUMATHEMATICAL BOLD CAPITAL NUMATHEMATICAL BOLD C" + + "APITAL XIMATHEMATICAL BOLD CAPITAL OMICRONMATHEMATICAL BOLD CAPITAL PIMA" + + "THEMATICAL BOLD CAPITAL RHOMATHEMATICAL BOLD CAPITAL THETA SYMBOLMATHEMA" + + "TICAL BOLD CAPITAL SIGMAMATHEMATICAL BOLD CAPITAL TAUMATHEMATICAL BOLD C" + + "APITAL UPSILONMATHEMATICAL BOLD CAPITAL PHIMATHEMATICAL BOLD CAPITAL CHI" + + "MATHEMATICAL BOLD CAPITAL PSIMATHEMATICAL BOLD CAPITAL OMEGAMATHEMATICAL" + + " BOLD NABLAMATHEMATICAL BOLD SMALL ALPHAMATHEMATICAL BOLD SMALL BETAMATH" + + "EMATICAL BOLD SMALL GAMMAMATHEMATICAL BOLD SMALL DELTAMATHEMATICAL BOLD " + + "SMALL EPSILONMATHEMATICAL BOLD SMALL ZETAMATHEMATICAL BOLD SMALL ETAMATH" + + "EMATICAL BOLD SMALL THETAMATHEMATICAL BOLD SMALL IOTAMATHEMATICAL BOLD S" + + "MALL KAPPAMATHEMATICAL BOLD SMALL LAMDAMATHEMATICAL BOLD SMALL MUMATHEMA" + + "TICAL BOLD SMALL NUMATHEMATICAL BOLD SMALL XIMATHEMATICAL BOLD SMALL OMI" + + "CRONMATHEMATICAL BOLD SMALL PIMATHEMATICAL BOLD SMALL RHOMATHEMATICAL BO" + + "LD SMALL FINAL SIGMAMATHEMATICAL BOLD SMALL SIGMAMATHEMATICAL BOLD SMALL" + + " TAUMATHEMATICAL BOLD SMALL UPSILONMATHEMATICAL BOLD SMALL PHIMATHEMATIC" + + "AL BOLD SMALL CHIMATHEMATICAL BOLD SMALL PSIMATHEMATICAL BOLD SMALL OMEG" + + "AMATHEMATICAL BOLD PARTIAL DIFFERENTIALMATHEMATICAL BOLD EPSILON SYMBOLM" + + "ATHEMATICAL BOLD THETA SYMBOLMATHEMATICAL BOLD KAPPA SYMBOLMATHEMATICAL " + + "BOLD PHI SYMBOLMATHEMATICAL BOLD RHO SYMBOLMATHEMATICAL BOLD PI SYMBOLMA" + + "THEMATICAL ITALIC CAPITAL ALPHAMATHEMATICAL ITALIC CAPITAL BETAMATHEMATI" + + "CAL ITALIC CAPITAL GAMMAMATHEMATICAL ITALIC CAPITAL DELTAMATHEMATICAL IT" + + "ALIC CAPITAL EPSILONMATHEMATICAL ITALIC CAPITAL ZETAMATHEMATICAL ITALIC " + + "CAPITAL ETAMATHEMATICAL ITALIC CAPITAL THETAMATHEMATICAL ITALIC CAPITAL " + + "IOTAMATHEMATICAL ITALIC CAPITAL KAPPAMATHEMATICAL ITALIC CAPITAL LAMDAMA" + + "THEMATICAL ITALIC CAPITAL MUMATHEMATICAL ITALIC CAPITAL NUMATHEMATICAL I" + + "TALIC CAPITAL XIMATHEMATICAL ITALIC CAPITAL OMICRONMATHEMATICAL ITALIC C" + + "APITAL PIMATHEMATICAL ITALIC CAPITAL RHOMATHEMATICAL ITALIC CAPITAL THET" + + "A SYMBOLMATHEMATICAL ITALIC CAPITAL SIGMAMATHEMATICAL ITALIC CAPITAL TAU" + + "MATHEMATICAL ITALIC CAPITAL UPSILONMATHEMATICAL ITALIC CAPITAL PHIMATHEM" + + "ATICAL ITALIC CAPITAL CHIMATHEMATICAL ITALIC CAPITAL PSIMATHEMATICAL ITA" + + "LIC CAPITAL OMEGAMATHEMATICAL ITALIC NABLAMATHEMATICAL ITALIC SMALL ALPH") + ("" + + "AMATHEMATICAL ITALIC SMALL BETAMATHEMATICAL ITALIC SMALL GAMMAMATHEMATIC" + + "AL ITALIC SMALL DELTAMATHEMATICAL ITALIC SMALL EPSILONMATHEMATICAL ITALI" + + "C SMALL ZETAMATHEMATICAL ITALIC SMALL ETAMATHEMATICAL ITALIC SMALL THETA" + + "MATHEMATICAL ITALIC SMALL IOTAMATHEMATICAL ITALIC SMALL KAPPAMATHEMATICA" + + "L ITALIC SMALL LAMDAMATHEMATICAL ITALIC SMALL MUMATHEMATICAL ITALIC SMAL" + + "L NUMATHEMATICAL ITALIC SMALL XIMATHEMATICAL ITALIC SMALL OMICRONMATHEMA" + + "TICAL ITALIC SMALL PIMATHEMATICAL ITALIC SMALL RHOMATHEMATICAL ITALIC SM" + + "ALL FINAL SIGMAMATHEMATICAL ITALIC SMALL SIGMAMATHEMATICAL ITALIC SMALL " + + "TAUMATHEMATICAL ITALIC SMALL UPSILONMATHEMATICAL ITALIC SMALL PHIMATHEMA" + + "TICAL ITALIC SMALL CHIMATHEMATICAL ITALIC SMALL PSIMATHEMATICAL ITALIC S" + + "MALL OMEGAMATHEMATICAL ITALIC PARTIAL DIFFERENTIALMATHEMATICAL ITALIC EP" + + "SILON SYMBOLMATHEMATICAL ITALIC THETA SYMBOLMATHEMATICAL ITALIC KAPPA SY" + + "MBOLMATHEMATICAL ITALIC PHI SYMBOLMATHEMATICAL ITALIC RHO SYMBOLMATHEMAT" + + "ICAL ITALIC PI SYMBOLMATHEMATICAL BOLD ITALIC CAPITAL ALPHAMATHEMATICAL " + + "BOLD ITALIC CAPITAL BETAMATHEMATICAL BOLD ITALIC CAPITAL GAMMAMATHEMATIC" + + "AL BOLD ITALIC CAPITAL DELTAMATHEMATICAL BOLD ITALIC CAPITAL EPSILONMATH" + + "EMATICAL BOLD ITALIC CAPITAL ZETAMATHEMATICAL BOLD ITALIC CAPITAL ETAMAT" + + "HEMATICAL BOLD ITALIC CAPITAL THETAMATHEMATICAL BOLD ITALIC CAPITAL IOTA" + + "MATHEMATICAL BOLD ITALIC CAPITAL KAPPAMATHEMATICAL BOLD ITALIC CAPITAL L" + + "AMDAMATHEMATICAL BOLD ITALIC CAPITAL MUMATHEMATICAL BOLD ITALIC CAPITAL " + + "NUMATHEMATICAL BOLD ITALIC CAPITAL XIMATHEMATICAL BOLD ITALIC CAPITAL OM" + + "ICRONMATHEMATICAL BOLD ITALIC CAPITAL PIMATHEMATICAL BOLD ITALIC CAPITAL" + + " RHOMATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOLMATHEMATICAL BOLD ITALI" + + "C CAPITAL SIGMAMATHEMATICAL BOLD ITALIC CAPITAL TAUMATHEMATICAL BOLD ITA" + + "LIC CAPITAL UPSILONMATHEMATICAL BOLD ITALIC CAPITAL PHIMATHEMATICAL BOLD" + + " ITALIC CAPITAL CHIMATHEMATICAL BOLD ITALIC CAPITAL PSIMATHEMATICAL BOLD" + + " ITALIC CAPITAL OMEGAMATHEMATICAL BOLD ITALIC NABLAMATHEMATICAL BOLD ITA" + + "LIC SMALL ALPHAMATHEMATICAL BOLD ITALIC SMALL BETAMATHEMATICAL BOLD ITAL" + + "IC SMALL GAMMAMATHEMATICAL BOLD ITALIC SMALL DELTAMATHEMATICAL BOLD ITAL" + + "IC SMALL EPSILONMATHEMATICAL BOLD ITALIC SMALL ZETAMATHEMATICAL BOLD ITA" + + "LIC SMALL ETAMATHEMATICAL BOLD ITALIC SMALL THETAMATHEMATICAL BOLD ITALI" + + "C SMALL IOTAMATHEMATICAL BOLD ITALIC SMALL KAPPAMATHEMATICAL BOLD ITALIC" + + " SMALL LAMDAMATHEMATICAL BOLD ITALIC SMALL MUMATHEMATICAL BOLD ITALIC SM" + + "ALL NUMATHEMATICAL BOLD ITALIC SMALL XIMATHEMATICAL BOLD ITALIC SMALL OM" + + "ICRONMATHEMATICAL BOLD ITALIC SMALL PIMATHEMATICAL BOLD ITALIC SMALL RHO" + + "MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMAMATHEMATICAL BOLD ITALIC SMALL" + + " SIGMAMATHEMATICAL BOLD ITALIC SMALL TAUMATHEMATICAL BOLD ITALIC SMALL U" + + "PSILONMATHEMATICAL BOLD ITALIC SMALL PHIMATHEMATICAL BOLD ITALIC SMALL C" + + "HIMATHEMATICAL BOLD ITALIC SMALL PSIMATHEMATICAL BOLD ITALIC SMALL OMEGA" + + "MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIALMATHEMATICAL BOLD ITALIC EP" + + "SILON SYMBOLMATHEMATICAL BOLD ITALIC THETA SYMBOLMATHEMATICAL BOLD ITALI" + + "C KAPPA SYMBOLMATHEMATICAL BOLD ITALIC PHI SYMBOLMATHEMATICAL BOLD ITALI" + + "C RHO SYMBOLMATHEMATICAL BOLD ITALIC PI SYMBOLMATHEMATICAL SANS-SERIF BO" + + "LD CAPITAL ALPHAMATHEMATICAL SANS-SERIF BOLD CAPITAL BETAMATHEMATICAL SA" + + "NS-SERIF BOLD CAPITAL GAMMAMATHEMATICAL SANS-SERIF BOLD CAPITAL DELTAMAT" + + "HEMATICAL SANS-SERIF BOLD CAPITAL EPSILONMATHEMATICAL SANS-SERIF BOLD CA" + + "PITAL ZETAMATHEMATICAL SANS-SERIF BOLD CAPITAL ETAMATHEMATICAL SANS-SERI" + + "F BOLD CAPITAL THETAMATHEMATICAL SANS-SERIF BOLD CAPITAL IOTAMATHEMATICA" + + "L SANS-SERIF BOLD CAPITAL KAPPAMATHEMATICAL SANS-SERIF BOLD CAPITAL LAMD" + + "AMATHEMATICAL SANS-SERIF BOLD CAPITAL MUMATHEMATICAL SANS-SERIF BOLD CAP" + + "ITAL NUMATHEMATICAL SANS-SERIF BOLD CAPITAL XIMATHEMATICAL SANS-SERIF BO" + + "LD CAPITAL OMICRONMATHEMATICAL SANS-SERIF BOLD CAPITAL PIMATHEMATICAL SA" + + "NS-SERIF BOLD CAPITAL RHOMATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMB" + + "OLMATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMAMATHEMATICAL SANS-SERIF BOLD" + + " CAPITAL TAUMATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILONMATHEMATICAL SAN" + + "S-SERIF BOLD CAPITAL PHIMATHEMATICAL SANS-SERIF BOLD CAPITAL CHIMATHEMAT" + + "ICAL SANS-SERIF BOLD CAPITAL PSIMATHEMATICAL SANS-SERIF BOLD CAPITAL OME" + + "GAMATHEMATICAL SANS-SERIF BOLD NABLAMATHEMATICAL SANS-SERIF BOLD SMALL A" + + "LPHAMATHEMATICAL SANS-SERIF BOLD SMALL BETAMATHEMATICAL SANS-SERIF BOLD " + + "SMALL GAMMAMATHEMATICAL SANS-SERIF BOLD SMALL DELTAMATHEMATICAL SANS-SER" + + "IF BOLD SMALL EPSILONMATHEMATICAL SANS-SERIF BOLD SMALL ZETAMATHEMATICAL" + + " SANS-SERIF BOLD SMALL ETAMATHEMATICAL SANS-SERIF BOLD SMALL THETAMATHEM" + + "ATICAL SANS-SERIF BOLD SMALL IOTAMATHEMATICAL SANS-SERIF BOLD SMALL KAPP" + + "AMATHEMATICAL SANS-SERIF BOLD SMALL LAMDAMATHEMATICAL SANS-SERIF BOLD SM") + ("" + + "ALL MUMATHEMATICAL SANS-SERIF BOLD SMALL NUMATHEMATICAL SANS-SERIF BOLD " + + "SMALL XIMATHEMATICAL SANS-SERIF BOLD SMALL OMICRONMATHEMATICAL SANS-SERI" + + "F BOLD SMALL PIMATHEMATICAL SANS-SERIF BOLD SMALL RHOMATHEMATICAL SANS-S" + + "ERIF BOLD SMALL FINAL SIGMAMATHEMATICAL SANS-SERIF BOLD SMALL SIGMAMATHE" + + "MATICAL SANS-SERIF BOLD SMALL TAUMATHEMATICAL SANS-SERIF BOLD SMALL UPSI" + + "LONMATHEMATICAL SANS-SERIF BOLD SMALL PHIMATHEMATICAL SANS-SERIF BOLD SM" + + "ALL CHIMATHEMATICAL SANS-SERIF BOLD SMALL PSIMATHEMATICAL SANS-SERIF BOL" + + "D SMALL OMEGAMATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIALMATHEMATIC" + + "AL SANS-SERIF BOLD EPSILON SYMBOLMATHEMATICAL SANS-SERIF BOLD THETA SYMB" + + "OLMATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOLMATHEMATICAL SANS-SERIF BOLD " + + "PHI SYMBOLMATHEMATICAL SANS-SERIF BOLD RHO SYMBOLMATHEMATICAL SANS-SERIF" + + " BOLD PI SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHAMATHEMAT" + + "ICAL SANS-SERIF BOLD ITALIC CAPITAL BETAMATHEMATICAL SANS-SERIF BOLD ITA" + + "LIC CAPITAL GAMMAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTAMATHEM" + + "ATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILONMATHEMATICAL SANS-SERIF BOL" + + "D ITALIC CAPITAL ZETAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETAMATH" + + "EMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETAMATHEMATICAL SANS-SERIF BOL" + + "D ITALIC CAPITAL IOTAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPAMA" + + "THEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDAMATHEMATICAL SANS-SERIF B" + + "OLD ITALIC CAPITAL MUMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NUMATHE" + + "MATICAL SANS-SERIF BOLD ITALIC CAPITAL XIMATHEMATICAL SANS-SERIF BOLD IT" + + "ALIC CAPITAL OMICRONMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PIMATHEM" + + "ATICAL SANS-SERIF BOLD ITALIC CAPITAL RHOMATHEMATICAL SANS-SERIF BOLD IT" + + "ALIC CAPITAL THETA SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIG" + + "MAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAUMATHEMATICAL SANS-SERIF" + + " BOLD ITALIC CAPITAL UPSILONMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL " + + "PHIMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHIMATHEMATICAL SANS-SERI" + + "F BOLD ITALIC CAPITAL PSIMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OME" + + "GAMATHEMATICAL SANS-SERIF BOLD ITALIC NABLAMATHEMATICAL SANS-SERIF BOLD " + + "ITALIC SMALL ALPHAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETAMATHEMAT" + + "ICAL SANS-SERIF BOLD ITALIC SMALL GAMMAMATHEMATICAL SANS-SERIF BOLD ITAL" + + "IC SMALL DELTAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILONMATHEMATI" + + "CAL SANS-SERIF BOLD ITALIC SMALL ZETAMATHEMATICAL SANS-SERIF BOLD ITALIC" + + " SMALL ETAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETAMATHEMATICAL SA" + + "NS-SERIF BOLD ITALIC SMALL IOTAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL" + + " KAPPAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDAMATHEMATICAL SANS-S" + + "ERIF BOLD ITALIC SMALL MUMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NUMAT" + + "HEMATICAL SANS-SERIF BOLD ITALIC SMALL XIMATHEMATICAL SANS-SERIF BOLD IT" + + "ALIC SMALL OMICRONMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PIMATHEMATIC" + + "AL SANS-SERIF BOLD ITALIC SMALL RHOMATHEMATICAL SANS-SERIF BOLD ITALIC S" + + "MALL FINAL SIGMAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMAMATHEMATI" + + "CAL SANS-SERIF BOLD ITALIC SMALL TAUMATHEMATICAL SANS-SERIF BOLD ITALIC " + + "SMALL UPSILONMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHIMATHEMATICAL S" + + "ANS-SERIF BOLD ITALIC SMALL CHIMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL" + + " PSIMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGAMATHEMATICAL SANS-SER" + + "IF BOLD ITALIC PARTIAL DIFFERENTIALMATHEMATICAL SANS-SERIF BOLD ITALIC E" + + "PSILON SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOLMATHEMATICA" + + "L SANS-SERIF BOLD ITALIC KAPPA SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC" + + " PHI SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOLMATHEMATICAL SA" + + "NS-SERIF BOLD ITALIC PI SYMBOLMATHEMATICAL BOLD CAPITAL DIGAMMAMATHEMATI" + + "CAL BOLD SMALL DIGAMMAMATHEMATICAL BOLD DIGIT ZEROMATHEMATICAL BOLD DIGI" + + "T ONEMATHEMATICAL BOLD DIGIT TWOMATHEMATICAL BOLD DIGIT THREEMATHEMATICA" + + "L BOLD DIGIT FOURMATHEMATICAL BOLD DIGIT FIVEMATHEMATICAL BOLD DIGIT SIX" + + "MATHEMATICAL BOLD DIGIT SEVENMATHEMATICAL BOLD DIGIT EIGHTMATHEMATICAL B" + + "OLD DIGIT NINEMATHEMATICAL DOUBLE-STRUCK DIGIT ZEROMATHEMATICAL DOUBLE-S" + + "TRUCK DIGIT ONEMATHEMATICAL DOUBLE-STRUCK DIGIT TWOMATHEMATICAL DOUBLE-S" + + "TRUCK DIGIT THREEMATHEMATICAL DOUBLE-STRUCK DIGIT FOURMATHEMATICAL DOUBL" + + "E-STRUCK DIGIT FIVEMATHEMATICAL DOUBLE-STRUCK DIGIT SIXMATHEMATICAL DOUB" + + "LE-STRUCK DIGIT SEVENMATHEMATICAL DOUBLE-STRUCK DIGIT EIGHTMATHEMATICAL " + + "DOUBLE-STRUCK DIGIT NINEMATHEMATICAL SANS-SERIF DIGIT ZEROMATHEMATICAL S" + + "ANS-SERIF DIGIT ONEMATHEMATICAL SANS-SERIF DIGIT TWOMATHEMATICAL SANS-SE" + + "RIF DIGIT THREEMATHEMATICAL SANS-SERIF DIGIT FOURMATHEMATICAL SANS-SERIF" + + " DIGIT FIVEMATHEMATICAL SANS-SERIF DIGIT SIXMATHEMATICAL SANS-SERIF DIGI" + + "T SEVENMATHEMATICAL SANS-SERIF DIGIT EIGHTMATHEMATICAL SANS-SERIF DIGIT ") + ("" + + "NINEMATHEMATICAL SANS-SERIF BOLD DIGIT ZEROMATHEMATICAL SANS-SERIF BOLD " + + "DIGIT ONEMATHEMATICAL SANS-SERIF BOLD DIGIT TWOMATHEMATICAL SANS-SERIF B" + + "OLD DIGIT THREEMATHEMATICAL SANS-SERIF BOLD DIGIT FOURMATHEMATICAL SANS-" + + "SERIF BOLD DIGIT FIVEMATHEMATICAL SANS-SERIF BOLD DIGIT SIXMATHEMATICAL " + + "SANS-SERIF BOLD DIGIT SEVENMATHEMATICAL SANS-SERIF BOLD DIGIT EIGHTMATHE" + + "MATICAL SANS-SERIF BOLD DIGIT NINEMATHEMATICAL MONOSPACE DIGIT ZEROMATHE" + + "MATICAL MONOSPACE DIGIT ONEMATHEMATICAL MONOSPACE DIGIT TWOMATHEMATICAL " + + "MONOSPACE DIGIT THREEMATHEMATICAL MONOSPACE DIGIT FOURMATHEMATICAL MONOS" + + "PACE DIGIT FIVEMATHEMATICAL MONOSPACE DIGIT SIXMATHEMATICAL MONOSPACE DI" + + "GIT SEVENMATHEMATICAL MONOSPACE DIGIT EIGHTMATHEMATICAL MONOSPACE DIGIT " + + "NINESIGNWRITING HAND-FIST INDEXSIGNWRITING HAND-CIRCLE INDEXSIGNWRITING " + + "HAND-CUP INDEXSIGNWRITING HAND-OVAL INDEXSIGNWRITING HAND-HINGE INDEXSIG" + + "NWRITING HAND-ANGLE INDEXSIGNWRITING HAND-FIST INDEX BENTSIGNWRITING HAN" + + "D-CIRCLE INDEX BENTSIGNWRITING HAND-FIST THUMB UNDER INDEX BENTSIGNWRITI" + + "NG HAND-FIST INDEX RAISED KNUCKLESIGNWRITING HAND-FIST INDEX CUPPEDSIGNW" + + "RITING HAND-FIST INDEX HINGEDSIGNWRITING HAND-FIST INDEX HINGED LOWSIGNW" + + "RITING HAND-CIRCLE INDEX HINGESIGNWRITING HAND-FIST INDEX MIDDLESIGNWRIT" + + "ING HAND-CIRCLE INDEX MIDDLESIGNWRITING HAND-FIST INDEX MIDDLE BENTSIGNW" + + "RITING HAND-FIST INDEX MIDDLE RAISED KNUCKLESSIGNWRITING HAND-FIST INDEX" + + " MIDDLE HINGEDSIGNWRITING HAND-FIST INDEX UP MIDDLE HINGEDSIGNWRITING HA" + + "ND-FIST INDEX HINGED MIDDLE UPSIGNWRITING HAND-FIST INDEX MIDDLE CONJOIN" + + "EDSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENTSIGNWRITING HAN" + + "D-FIST INDEX MIDDLE CONJOINED MIDDLE BENTSIGNWRITING HAND-FIST INDEX MID" + + "DLE CONJOINED CUPPEDSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGEDS" + + "IGNWRITING HAND-FIST INDEX MIDDLE CROSSEDSIGNWRITING HAND-CIRCLE INDEX M" + + "IDDLE CROSSEDSIGNWRITING HAND-FIST MIDDLE BENT OVER INDEXSIGNWRITING HAN" + + "D-FIST INDEX BENT OVER MIDDLESIGNWRITING HAND-FIST INDEX MIDDLE THUMBSIG" + + "NWRITING HAND-CIRCLE INDEX MIDDLE THUMBSIGNWRITING HAND-FIST INDEX MIDDL" + + "E STRAIGHT THUMB BENTSIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAI" + + "GHTSIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENTSIGNWRITING HAND-FIST IN" + + "DEX MIDDLE HINGED SPREAD THUMB SIDESIGNWRITING HAND-FIST INDEX UP MIDDLE" + + " HINGED THUMB SIDESIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CON" + + "JOINEDSIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDESIGNWRITING" + + " HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARDSIGNWRITING HAND-FIST IND" + + "EX MIDDLE THUMB CUPPEDSIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLEDSI" + + "GNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKEDSIGNWRITING HAND-FIST INDEX" + + " MIDDLE THUMB HINGEDSIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STR" + + "AIGHTSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDESIGNWRITING " + + "HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINEDSIGNWRITING HAND-FI" + + "ST INDEX MIDDLE CONJOINED THUMB SIDE BENTSIGNWRITING HAND-FIST MIDDLE TH" + + "UMB HOOKED INDEX UPSIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UPSIG" + + "NWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDESIGNWRITING H" + + "AND-FIST INDEX MIDDLE CROSSED THUMB SIDESIGNWRITING HAND-FIST INDEX MIDD" + + "LE CONJOINED THUMB FORWARDSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED C" + + "UPPED THUMB FORWARDSIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UPSIG" + + "NWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UPSIGNWRITING HAND-FIST MID" + + "DLE THUMB CIRCLED INDEX UPSIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED IND" + + "EX HINGEDSIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UPSIGNWRITI" + + "NG HAND-FIST INDEX THUMB ANGLED IN MIDDLE UPSIGNWRITING HAND-FIST INDEX " + + "THUMB CIRCLED MIDDLE UPSIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINE" + + "D HINGEDSIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUTSIGNWRITING H" + + "AND-FIST INDEX MIDDLE THUMB ANGLEDSIGNWRITING HAND-FIST MIDDLE THUMB ANG" + + "LED OUT INDEX UPSIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROS" + + "SEDSIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UPSIGNWRITING HAND-FI" + + "ST INDEX THUMB HOOKED MIDDLE HINGEDSIGNWRITING HAND-FLAT FOUR FINGERSSIG" + + "NWRITING HAND-FLAT FOUR FINGERS BENTSIGNWRITING HAND-FLAT FOUR FINGERS H" + + "INGEDSIGNWRITING HAND-FLAT FOUR FINGERS CONJOINEDSIGNWRITING HAND-FLAT F" + + "OUR FINGERS CONJOINED SPLITSIGNWRITING HAND-CLAW FOUR FINGERS CONJOINEDS" + + "IGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENTSIGNWRITING HAND-HINGE F" + + "OUR FINGERS CONJOINEDSIGNWRITING HAND-FLAT FIVE FINGERS SPREADSIGNWRITIN" + + "G HAND-FLAT HEEL FIVE FINGERS SPREADSIGNWRITING HAND-FLAT FIVE FINGERS S" + + "PREAD FOUR BENTSIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENTS" + + "IGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENTSIGNWRITING HAND-FLAT HEEL " + + "FIVE FINGERS SPREAD BENTSIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB ") + ("" + + "FORWARDSIGNWRITING HAND-CUP FIVE FINGERS SPREADSIGNWRITING HAND-CUP FIVE" + + " FINGERS SPREAD OPENSIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPENSIGNW" + + "RITING HAND-OVAL FIVE FINGERS SPREADSIGNWRITING HAND-FLAT FIVE FINGERS S" + + "PREAD HINGEDSIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDES" + + "IGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMBSIGNWRITING HAND" + + "-FLATSIGNWRITING HAND-FLAT BETWEEN PALM FACINGSSIGNWRITING HAND-FLAT HEE" + + "LSIGNWRITING HAND-FLAT THUMB SIDESIGNWRITING HAND-FLAT HEEL THUMB SIDESI" + + "GNWRITING HAND-FLAT THUMB BENTSIGNWRITING HAND-FLAT THUMB FORWARDSIGNWRI" + + "TING HAND-FLAT SPLIT INDEX THUMB SIDESIGNWRITING HAND-FLAT SPLIT CENTRES" + + "IGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDESIGNWRITING HAND-FLAT SPLIT " + + "CENTRE THUMB SIDE BENTSIGNWRITING HAND-FLAT SPLIT LITTLESIGNWRITING HAND" + + "-CLAWSIGNWRITING HAND-CLAW THUMB SIDESIGNWRITING HAND-CLAW NO THUMBSIGNW" + + "RITING HAND-CLAW THUMB FORWARDSIGNWRITING HAND-HOOK CURLICUESIGNWRITING " + + "HAND-HOOKSIGNWRITING HAND-CUP OPENSIGNWRITING HAND-CUPSIGNWRITING HAND-C" + + "UP OPEN THUMB SIDESIGNWRITING HAND-CUP THUMB SIDESIGNWRITING HAND-CUP OP" + + "EN NO THUMBSIGNWRITING HAND-CUP NO THUMBSIGNWRITING HAND-CUP OPEN THUMB " + + "FORWARDSIGNWRITING HAND-CUP THUMB FORWARDSIGNWRITING HAND-CURLICUE OPENS" + + "IGNWRITING HAND-CURLICUESIGNWRITING HAND-CIRCLESIGNWRITING HAND-OVALSIGN" + + "WRITING HAND-OVAL THUMB SIDESIGNWRITING HAND-OVAL NO THUMBSIGNWRITING HA" + + "ND-OVAL THUMB FORWARDSIGNWRITING HAND-HINGE OPENSIGNWRITING HAND-HINGE O" + + "PEN THUMB FORWARDSIGNWRITING HAND-HINGESIGNWRITING HAND-HINGE SMALLSIGNW" + + "RITING HAND-HINGE OPEN THUMB SIDESIGNWRITING HAND-HINGE THUMB SIDESIGNWR" + + "ITING HAND-HINGE OPEN NO THUMBSIGNWRITING HAND-HINGE NO THUMBSIGNWRITING" + + " HAND-HINGE THUMB SIDE TOUCHING INDEXSIGNWRITING HAND-HINGE THUMB BETWEE" + + "N MIDDLE RINGSIGNWRITING HAND-ANGLESIGNWRITING HAND-FIST INDEX MIDDLE RI" + + "NGSIGNWRITING HAND-CIRCLE INDEX MIDDLE RINGSIGNWRITING HAND-HINGE INDEX " + + "MIDDLE RINGSIGNWRITING HAND-ANGLE INDEX MIDDLE RINGSIGNWRITING HAND-HING" + + "E LITTLESIGNWRITING HAND-FIST INDEX MIDDLE RING BENTSIGNWRITING HAND-FIS" + + "T INDEX MIDDLE RING CONJOINEDSIGNWRITING HAND-HINGE INDEX MIDDLE RING CO" + + "NJOINEDSIGNWRITING HAND-FIST LITTLE DOWNSIGNWRITING HAND-FIST LITTLE DOW" + + "N RIPPLE STRAIGHTSIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVEDSIGNWRIT" + + "ING HAND-FIST LITTLE DOWN OTHERS CIRCLEDSIGNWRITING HAND-FIST LITTLE UPS" + + "IGNWRITING HAND-FIST THUMB UNDER LITTLE UPSIGNWRITING HAND-CIRCLE LITTLE" + + " UPSIGNWRITING HAND-OVAL LITTLE UPSIGNWRITING HAND-ANGLE LITTLE UPSIGNWR" + + "ITING HAND-FIST LITTLE RAISED KNUCKLESIGNWRITING HAND-FIST LITTLE BENTSI" + + "GNWRITING HAND-FIST LITTLE TOUCHES THUMBSIGNWRITING HAND-FIST LITTLE THU" + + "MBSIGNWRITING HAND-HINGE LITTLE THUMBSIGNWRITING HAND-FIST LITTLE INDEX " + + "THUMBSIGNWRITING HAND-HINGE LITTLE INDEX THUMBSIGNWRITING HAND-ANGLE LIT" + + "TLE INDEX THUMB INDEX THUMB OUTSIGNWRITING HAND-ANGLE LITTLE INDEX THUMB" + + " INDEX THUMBSIGNWRITING HAND-FIST LITTLE INDEXSIGNWRITING HAND-CIRCLE LI" + + "TTLE INDEXSIGNWRITING HAND-HINGE LITTLE INDEXSIGNWRITING HAND-ANGLE LITT" + + "LE INDEXSIGNWRITING HAND-FIST INDEX MIDDLE LITTLESIGNWRITING HAND-CIRCLE" + + " INDEX MIDDLE LITTLESIGNWRITING HAND-HINGE INDEX MIDDLE LITTLESIGNWRITIN" + + "G HAND-HINGE RINGSIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLESIGNWRITING H" + + "AND-FIST INDEX MIDDLE CROSS LITTLESIGNWRITING HAND-CIRCLE INDEX MIDDLE C" + + "ROSS LITTLESIGNWRITING HAND-FIST RING DOWNSIGNWRITING HAND-HINGE RING DO" + + "WN INDEX THUMB HOOK MIDDLESIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB " + + "INDEX CROSSSIGNWRITING HAND-FIST RING UPSIGNWRITING HAND-FIST RING RAISE" + + "D KNUCKLESIGNWRITING HAND-FIST RING LITTLESIGNWRITING HAND-CIRCLE RING L" + + "ITTLESIGNWRITING HAND-OVAL RING LITTLESIGNWRITING HAND-ANGLE RING LITTLE" + + "SIGNWRITING HAND-FIST RING MIDDLESIGNWRITING HAND-FIST RING MIDDLE CONJO" + + "INEDSIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLESSIGNWRITING HAND-FI" + + "ST RING INDEXSIGNWRITING HAND-FIST RING THUMBSIGNWRITING HAND-HOOK RING " + + "THUMBSIGNWRITING HAND-FIST INDEX RING LITTLESIGNWRITING HAND-CIRCLE INDE" + + "X RING LITTLESIGNWRITING HAND-CURLICUE INDEX RING LITTLE ONSIGNWRITING H" + + "AND-HOOK INDEX RING LITTLE OUTSIGNWRITING HAND-HOOK INDEX RING LITTLE IN" + + "SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDERSIGNWRITING HAND-CUP INDEX " + + "RING LITTLESIGNWRITING HAND-HINGE INDEX RING LITTLESIGNWRITING HAND-ANGL" + + "E INDEX RING LITTLE OUTSIGNWRITING HAND-ANGLE INDEX RING LITTLESIGNWRITI" + + "NG HAND-FIST MIDDLE DOWNSIGNWRITING HAND-HINGE MIDDLESIGNWRITING HAND-FI" + + "ST MIDDLE UPSIGNWRITING HAND-CIRCLE MIDDLE UPSIGNWRITING HAND-FIST MIDDL" + + "E RAISED KNUCKLESIGNWRITING HAND-FIST MIDDLE UP THUMB SIDESIGNWRITING HA" + + "ND-HOOK MIDDLE THUMBSIGNWRITING HAND-FIST MIDDLE THUMB LITTLESIGNWRITING" + + " HAND-FIST MIDDLE LITTLESIGNWRITING HAND-FIST MIDDLE RING LITTLESIGNWRIT") + ("" + + "ING HAND-CIRCLE MIDDLE RING LITTLESIGNWRITING HAND-CURLICUE MIDDLE RING " + + "LITTLE ONSIGNWRITING HAND-CUP MIDDLE RING LITTLESIGNWRITING HAND-HINGE M" + + "IDDLE RING LITTLESIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUTSIGNWRITIN" + + "G HAND-ANGLE MIDDLE RING LITTLE INSIGNWRITING HAND-ANGLE MIDDLE RING LIT" + + "TLESIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENTSIGNWRITING HAND-CLAW " + + "MIDDLE RING LITTLE CONJOINEDSIGNWRITING HAND-CLAW MIDDLE RING LITTLE CON" + + "JOINED SIDESIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUTSIGNWRI" + + "TING HAND-HOOK MIDDLE RING LITTLE CONJOINED INSIGNWRITING HAND-HOOK MIDD" + + "LE RING LITTLE CONJOINEDSIGNWRITING HAND-HINGE INDEX HINGEDSIGNWRITING H" + + "AND-FIST INDEX THUMB SIDESIGNWRITING HAND-HINGE INDEX THUMB SIDESIGNWRIT" + + "ING HAND-FIST INDEX THUMB SIDE THUMB DIAGONALSIGNWRITING HAND-FIST INDEX" + + " THUMB SIDE THUMB CONJOINEDSIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB " + + "BENTSIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENTSIGNWRITING HAND-FI" + + "ST INDEX THUMB SIDE BOTH BENTSIGNWRITING HAND-FIST INDEX THUMB SIDE INDE" + + "X HINGESIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHTSIGNWRITI" + + "NG HAND-FIST INDEX THUMB FORWARD INDEX BENTSIGNWRITING HAND-FIST INDEX T" + + "HUMB HOOKSIGNWRITING HAND-FIST INDEX THUMB CURLICUESIGNWRITING HAND-FIST" + + " INDEX THUMB CURVE THUMB INSIDESIGNWRITING HAND-CLAW INDEX THUMB CURVE T" + + "HUMB INSIDESIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDERSIGNWRITIN" + + "G HAND-FIST INDEX THUMB CIRCLESIGNWRITING HAND-CUP INDEX THUMBSIGNWRITIN" + + "G HAND-CUP INDEX THUMB OPENSIGNWRITING HAND-HINGE INDEX THUMB OPENSIGNWR" + + "ITING HAND-HINGE INDEX THUMB LARGESIGNWRITING HAND-HINGE INDEX THUMBSIGN" + + "WRITING HAND-HINGE INDEX THUMB SMALLSIGNWRITING HAND-ANGLE INDEX THUMB O" + + "UTSIGNWRITING HAND-ANGLE INDEX THUMB INSIGNWRITING HAND-ANGLE INDEX THUM" + + "BSIGNWRITING HAND-FIST THUMBSIGNWRITING HAND-FIST THUMB HEELSIGNWRITING " + + "HAND-FIST THUMB SIDE DIAGONALSIGNWRITING HAND-FIST THUMB SIDE CONJOINEDS" + + "IGNWRITING HAND-FIST THUMB SIDE BENTSIGNWRITING HAND-FIST THUMB FORWARDS" + + "IGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLESIGNWRITING HAND-FIST THU" + + "MB BETWEEN MIDDLE RINGSIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLESIG" + + "NWRITING HAND-FIST THUMB UNDER TWO FINGERSSIGNWRITING HAND-FIST THUMB OV" + + "ER TWO FINGERSSIGNWRITING HAND-FIST THUMB UNDER THREE FINGERSSIGNWRITING" + + " HAND-FIST THUMB UNDER FOUR FINGERSSIGNWRITING HAND-FIST THUMB OVER FOUR" + + " RAISED KNUCKLESSIGNWRITING HAND-FISTSIGNWRITING HAND-FIST HEELSIGNWRITI" + + "NG TOUCH SINGLESIGNWRITING TOUCH MULTIPLESIGNWRITING TOUCH BETWEENSIGNWR" + + "ITING GRASP SINGLESIGNWRITING GRASP MULTIPLESIGNWRITING GRASP BETWEENSIG" + + "NWRITING STRIKE SINGLESIGNWRITING STRIKE MULTIPLESIGNWRITING STRIKE BETW" + + "EENSIGNWRITING BRUSH SINGLESIGNWRITING BRUSH MULTIPLESIGNWRITING BRUSH B" + + "ETWEENSIGNWRITING RUB SINGLESIGNWRITING RUB MULTIPLESIGNWRITING RUB BETW" + + "EENSIGNWRITING SURFACE SYMBOLSSIGNWRITING SURFACE BETWEENSIGNWRITING SQU" + + "EEZE LARGE SINGLESIGNWRITING SQUEEZE SMALL SINGLESIGNWRITING SQUEEZE LAR" + + "GE MULTIPLESIGNWRITING SQUEEZE SMALL MULTIPLESIGNWRITING SQUEEZE SEQUENT" + + "IALSIGNWRITING FLICK LARGE SINGLESIGNWRITING FLICK SMALL SINGLESIGNWRITI" + + "NG FLICK LARGE MULTIPLESIGNWRITING FLICK SMALL MULTIPLESIGNWRITING FLICK" + + " SEQUENTIALSIGNWRITING SQUEEZE FLICK ALTERNATINGSIGNWRITING MOVEMENT-HIN" + + "GE UP DOWN LARGESIGNWRITING MOVEMENT-HINGE UP DOWN SMALLSIGNWRITING MOVE" + + "MENT-HINGE UP SEQUENTIALSIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIALSIGNWR" + + "ITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGESIGNWRITING MOVEMENT-HINGE" + + " UP DOWN ALTERNATING SMALLSIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSO" + + "RSSIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACTSIGNWRITING MOVEMENT-FLOO" + + "RPLANE FINGER CONTACTSIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMAL" + + "LSIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUMSIGNWRITING MOVEME" + + "NT-WALLPLANE SINGLE STRAIGHT LARGESIGNWRITING MOVEMENT-WALLPLANE SINGLE " + + "STRAIGHT LARGESTSIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEXSIGNWRIT" + + "ING MOVEMENT-WALLPLANE DOUBLE STRAIGHTSIGNWRITING MOVEMENT-WALLPLANE DOU" + + "BLE WRIST FLEXSIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATINGSIGNWRITI" + + "NG MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEXSIGNWRITING MOVEMENT-" + + "WALLPLANE CROSSSIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENTSI" + + "GNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEXSIGNWRITING MOVEMENT-WALLP" + + "LANE TRIPLE ALTERNATINGSIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING" + + " WRIST FLEXSIGNWRITING MOVEMENT-WALLPLANE BEND SMALLSIGNWRITING MOVEMENT" + + "-WALLPLANE BEND MEDIUMSIGNWRITING MOVEMENT-WALLPLANE BEND LARGESIGNWRITI" + + "NG MOVEMENT-WALLPLANE CORNER SMALLSIGNWRITING MOVEMENT-WALLPLANE CORNER " + + "MEDIUMSIGNWRITING MOVEMENT-WALLPLANE CORNER LARGESIGNWRITING MOVEMENT-WA" + + "LLPLANE CORNER ROTATIONSIGNWRITING MOVEMENT-WALLPLANE CHECK SMALLSIGNWRI") + ("" + + "TING MOVEMENT-WALLPLANE CHECK MEDIUMSIGNWRITING MOVEMENT-WALLPLANE CHECK" + + " LARGESIGNWRITING MOVEMENT-WALLPLANE BOX SMALLSIGNWRITING MOVEMENT-WALLP" + + "LANE BOX MEDIUMSIGNWRITING MOVEMENT-WALLPLANE BOX LARGESIGNWRITING MOVEM" + + "ENT-WALLPLANE ZIGZAG SMALLSIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUMSI" + + "GNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGESIGNWRITING MOVEMENT-WALLPLANE " + + "PEAKS SMALLSIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUMSIGNWRITING MOVEME" + + "NT-WALLPLANE PEAKS LARGESIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE " + + "SINGLESIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLESIGNWRITING " + + "TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATINGSIGNWRITING TRAVEL-WALLPL" + + "ANE ROTATION-FLOORPLANE SINGLESIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOO" + + "RPLANE DOUBLESIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATIN" + + "GSIGNWRITING TRAVEL-WALLPLANE SHAKINGSIGNWRITING TRAVEL-WALLPLANE ARM SP" + + "IRAL SINGLESIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLESIGNWRITING TRA" + + "VEL-WALLPLANE ARM SPIRAL TRIPLESIGNWRITING MOVEMENT-DIAGONAL AWAY SMALLS" + + "IGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUMSIGNWRITING MOVEMENT-DIAGONAL AW" + + "AY LARGESIGNWRITING MOVEMENT-DIAGONAL AWAY LARGESTSIGNWRITING MOVEMENT-D" + + "IAGONAL TOWARDS SMALLSIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUMSIGNWRI" + + "TING MOVEMENT-DIAGONAL TOWARDS LARGESIGNWRITING MOVEMENT-DIAGONAL TOWARD" + + "S LARGESTSIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALLSIGNWRITING MOV" + + "EMENT-DIAGONAL BETWEEN AWAY MEDIUMSIGNWRITING MOVEMENT-DIAGONAL BETWEEN " + + "AWAY LARGESIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGESTSIGNWRITING " + + "MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALLSIGNWRITING MOVEMENT-DIAGONAL BET" + + "WEEN TOWARDS MEDIUMSIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGESI" + + "GNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGESTSIGNWRITING MOVEMENT-" + + "FLOORPLANE SINGLE STRAIGHT SMALLSIGNWRITING MOVEMENT-FLOORPLANE SINGLE S" + + "TRAIGHT MEDIUMSIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGESIGNW" + + "RITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGESTSIGNWRITING MOVEMENT-F" + + "LOORPLANE SINGLE WRIST FLEXSIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIG" + + "HTSIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEXSIGNWRITING MOVEMENT-" + + "FLOORPLANE DOUBLE ALTERNATINGSIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTE" + + "RNATING WRIST FLEXSIGNWRITING MOVEMENT-FLOORPLANE CROSSSIGNWRITING MOVEM" + + "ENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENTSIGNWRITING MOVEMENT-FLOORPLANE T" + + "RIPLE WRIST FLEXSIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEM" + + "ENTSIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEXSIGNWRIT" + + "ING MOVEMENT-FLOORPLANE BENDSIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL" + + "SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUMSIGNWRITING MOVEMENT-FLOORP" + + "LANE CORNER LARGESIGNWRITING MOVEMENT-FLOORPLANE CHECKSIGNWRITING MOVEME" + + "NT-FLOORPLANE BOX SMALLSIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUMSIGNWRI" + + "TING MOVEMENT-FLOORPLANE BOX LARGESIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG" + + " SMALLSIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUMSIGNWRITING MOVEMENT-" + + "FLOORPLANE ZIGZAG LARGESIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALLSIGNWR" + + "ITING MOVEMENT-FLOORPLANE PEAKS MEDIUMSIGNWRITING MOVEMENT-FLOORPLANE PE" + + "AKS LARGESIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLESIGNWRI" + + "TING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLESIGNWRITING TRAVEL-FLOO" + + "RPLANE ROTATION-FLOORPLANE ALTERNATINGSIGNWRITING TRAVEL-FLOORPLANE ROTA" + + "TION-WALLPLANE SINGLESIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DO" + + "UBLESIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATINGSIGNWRIT" + + "ING TRAVEL-FLOORPLANE SHAKINGSIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTE" + + "R SMALLSIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUMSIGNWRITING MO" + + "VEMENT-WALLPLANE CURVE QUARTER LARGESIGNWRITING MOVEMENT-WALLPLANE CURVE" + + " QUARTER LARGESTSIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALLSI" + + "GNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUMSIGNWRITING MOVEMEN" + + "T-WALLPLANE CURVE HALF-CIRCLE LARGESIGNWRITING MOVEMENT-WALLPLANE CURVE " + + "HALF-CIRCLE LARGESTSIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CI" + + "RCLE SMALLSIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDI" + + "UMSIGNWRITING MOVEMENT-WALLPLANE HUMP SMALLSIGNWRITING MOVEMENT-WALLPLAN" + + "E HUMP MEDIUMSIGNWRITING MOVEMENT-WALLPLANE HUMP LARGESIGNWRITING MOVEME" + + "NT-WALLPLANE LOOP SMALLSIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUMSIGNWRI" + + "TING MOVEMENT-WALLPLANE LOOP LARGESIGNWRITING MOVEMENT-WALLPLANE LOOP SM" + + "ALL DOUBLESIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALLSIGNWRIT" + + "ING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUMSIGNWRITING MOVEMENT-WALL" + + "PLANE WAVE CURVE DOUBLE LARGESIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE T" + + "RIPLE SMALLSIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUMSIGNWR" + + "ITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGESIGNWRITING MOVEMENT-WAL") + ("" + + "LPLANE CURVE THEN STRAIGHTSIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SM" + + "ALLSIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUMSIGNWRITING ROTATIO" + + "N-WALLPLANE SINGLESIGNWRITING ROTATION-WALLPLANE DOUBLESIGNWRITING ROTAT" + + "ION-WALLPLANE ALTERNATESIGNWRITING MOVEMENT-WALLPLANE SHAKINGSIGNWRITING" + + " MOVEMENT-WALLPLANE CURVE HITTING FRONT WALLSIGNWRITING MOVEMENT-WALLPLA" + + "NE HUMP HITTING FRONT WALLSIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FR" + + "ONT WALLSIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALLSIGNWRITIN" + + "G ROTATION-WALLPLANE SINGLE HITTING FRONT WALLSIGNWRITING ROTATION-WALLP" + + "LANE DOUBLE HITTING FRONT WALLSIGNWRITING ROTATION-WALLPLANE ALTERNATING" + + " HITTING FRONT WALLSIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHESTSIG" + + "NWRITING MOVEMENT-WALLPLANE HUMP HITTING CHESTSIGNWRITING MOVEMENT-WALLP" + + "LANE LOOP HITTING CHESTSIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST" + + "SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHESTSIGNWRITING ROTATION-" + + "WALLPLANE DOUBLE HITTING CHESTSIGNWRITING ROTATION-WALLPLANE ALTERNATING" + + " HITTING CHESTSIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALLSIG" + + "NWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUMSIGNWRITING MOVEMEN" + + "T-WALLPLANE WAVE DIAGONAL PATH LARGESIGNWRITING MOVEMENT-FLOORPLANE CURV" + + "E HITTING CEILING SMALLSIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEI" + + "LING LARGESIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOU" + + "BLESIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLESIGN" + + "WRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLESIGNWRITING" + + " MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLESIGNWRITING MOVEME" + + "NT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLESIGNWRITING MOVEMENT-FLOO" + + "RPLANE LOOP HITTING CEILING LARGE SINGLESIGNWRITING MOVEMENT-FLOORPLANE " + + "LOOP HITTING CEILING SMALL DOUBLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HI" + + "TTING CEILING LARGE DOUBLESIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING C" + + "EILING SMALLSIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGESI" + + "GNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILINGSIGNWRITING ROTATION" + + "-FLOORPLANE DOUBLE HITTING CEILINGSIGNWRITING ROTATION-FLOORPLANE ALTERN" + + "ATING HITTING CEILINGSIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR" + + " SMALLSIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGESIGNWRITI" + + "NG MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLESIGNWRITING MOVEME" + + "NT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLESIGNWRITING MOVEMENT-FLOORP" + + "LANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLESIGNWRITING MOVEMENT-FLOORPLA" + + "NE HUMP HITTING FLOOR TRIPLE LARGE TRIPLESIGNWRITING MOVEMENT-FLOORPLANE" + + " LOOP HITTING FLOOR SMALL SINGLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HIT" + + "TING FLOOR LARGE SINGLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOO" + + "R SMALL DOUBLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE D" + + "OUBLESIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALLSIGNWRITING" + + " MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGESIGNWRITING ROTATION-FLOORP" + + "LANE SINGLE HITTING FLOORSIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING " + + "FLOORSIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOORSIGNWRITIN" + + "G MOVEMENT-FLOORPLANE CURVE SMALLSIGNWRITING MOVEMENT-FLOORPLANE CURVE M" + + "EDIUMSIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGESIGNWRITING MOVEMENT-FLO" + + "ORPLANE CURVE LARGESTSIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINEDSIGNW" + + "RITING MOVEMENT-FLOORPLANE HUMP SMALLSIGNWRITING MOVEMENT-FLOORPLANE LOO" + + "P SMALLSIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKESIGNWRITING MOVEMENT-FL" + + "OORPLANE WAVE SMALLSIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGESIGNWRITING" + + " ROTATION-FLOORPLANE SINGLESIGNWRITING ROTATION-FLOORPLANE DOUBLESIGNWRI" + + "TING ROTATION-FLOORPLANE ALTERNATINGSIGNWRITING MOVEMENT-FLOORPLANE SHAK" + + "ING PARALLELSIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLESIGNWR" + + "ITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLESIGNWRITING MOVEMENT-WA" + + "LLPLANE ARM CIRCLE SMALL DOUBLESIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE" + + " MEDIUM DOUBLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SM" + + "ALL SINGLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM" + + " SINGLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SIN" + + "GLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLES" + + "IGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLESIGN" + + "WRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLESIGNWRIT" + + "ING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLESIGNWRITING MOVEMENT-WAL" + + "LPLANE WRIST CIRCLE FRONT DOUBLESIGNWRITING MOVEMENT-FLOORPLANE WRIST CI" + + "RCLE HITTING WALL SINGLESIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HIT" + + "TING WALL DOUBLESIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLESIGN" + + "WRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLESIGNWRITING MOVEMENT-FLO") + ("" + + "ORPLANE FINGER CIRCLES HITTING WALL SINGLESIGNWRITING MOVEMENT-FLOORPLAN" + + "E FINGER CIRCLES HITTING WALL DOUBLESIGNWRITING DYNAMIC ARROWHEAD SMALLS" + + "IGNWRITING DYNAMIC ARROWHEAD LARGESIGNWRITING DYNAMIC FASTSIGNWRITING DY" + + "NAMIC SLOWSIGNWRITING DYNAMIC TENSESIGNWRITING DYNAMIC RELAXEDSIGNWRITIN" + + "G DYNAMIC SIMULTANEOUSSIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATINGSIGNWR" + + "ITING DYNAMIC EVERY OTHER TIMESIGNWRITING DYNAMIC GRADUALSIGNWRITING HEA" + + "DSIGNWRITING HEAD RIMSIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHTSIGNWRI" + + "TING HEAD MOVEMENT-WALLPLANE TILTSIGNWRITING HEAD MOVEMENT-FLOORPLANE ST" + + "RAIGHTSIGNWRITING HEAD MOVEMENT-WALLPLANE CURVESIGNWRITING HEAD MOVEMENT" + + "-FLOORPLANE CURVESIGNWRITING HEAD MOVEMENT CIRCLESIGNWRITING FACE DIRECT" + + "ION POSITION NOSE FORWARD TILTINGSIGNWRITING FACE DIRECTION POSITION NOS" + + "E UP OR DOWNSIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTINGS" + + "IGNWRITING EYEBROWS STRAIGHT UPSIGNWRITING EYEBROWS STRAIGHT NEUTRALSIGN" + + "WRITING EYEBROWS STRAIGHT DOWNSIGNWRITING DREAMY EYEBROWS NEUTRAL DOWNSI" + + "GNWRITING DREAMY EYEBROWS DOWN NEUTRALSIGNWRITING DREAMY EYEBROWS UP NEU" + + "TRALSIGNWRITING DREAMY EYEBROWS NEUTRAL UPSIGNWRITING FOREHEAD NEUTRALSI" + + "GNWRITING FOREHEAD CONTACTSIGNWRITING FOREHEAD WRINKLEDSIGNWRITING EYES " + + "OPENSIGNWRITING EYES SQUEEZEDSIGNWRITING EYES CLOSEDSIGNWRITING EYE BLIN" + + "K SINGLESIGNWRITING EYE BLINK MULTIPLESIGNWRITING EYES HALF OPENSIGNWRIT" + + "ING EYES WIDE OPENSIGNWRITING EYES HALF CLOSEDSIGNWRITING EYES WIDENING " + + "MOVEMENTSIGNWRITING EYE WINKSIGNWRITING EYELASHES UPSIGNWRITING EYELASHE" + + "S DOWNSIGNWRITING EYELASHES FLUTTERINGSIGNWRITING EYEGAZE-WALLPLANE STRA" + + "IGHTSIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLESIGNWRITING EYEGAZE-WAL" + + "LPLANE STRAIGHT ALTERNATINGSIGNWRITING EYEGAZE-FLOORPLANE STRAIGHTSIGNWR" + + "ITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLESIGNWRITING EYEGAZE-FLOORPLANE S" + + "TRAIGHT ALTERNATINGSIGNWRITING EYEGAZE-WALLPLANE CURVEDSIGNWRITING EYEGA" + + "ZE-FLOORPLANE CURVEDSIGNWRITING EYEGAZE-WALLPLANE CIRCLINGSIGNWRITING CH" + + "EEKS PUFFEDSIGNWRITING CHEEKS NEUTRALSIGNWRITING CHEEKS SUCKEDSIGNWRITIN" + + "G TENSE CHEEKS HIGHSIGNWRITING TENSE CHEEKS MIDDLESIGNWRITING TENSE CHEE" + + "KS LOWSIGNWRITING EARSSIGNWRITING NOSE NEUTRALSIGNWRITING NOSE CONTACTSI" + + "GNWRITING NOSE WRINKLESSIGNWRITING NOSE WIGGLESSIGNWRITING AIR BLOWING O" + + "UTSIGNWRITING AIR SUCKING INSIGNWRITING AIR BLOW SMALL ROTATIONSSIGNWRIT" + + "ING AIR SUCK SMALL ROTATIONSSIGNWRITING BREATH INHALESIGNWRITING BREATH " + + "EXHALESIGNWRITING MOUTH CLOSED NEUTRALSIGNWRITING MOUTH CLOSED FORWARDSI" + + "GNWRITING MOUTH CLOSED CONTACTSIGNWRITING MOUTH SMILESIGNWRITING MOUTH S" + + "MILE WRINKLEDSIGNWRITING MOUTH SMILE OPENSIGNWRITING MOUTH FROWNSIGNWRIT" + + "ING MOUTH FROWN WRINKLEDSIGNWRITING MOUTH FROWN OPENSIGNWRITING MOUTH OP" + + "EN CIRCLESIGNWRITING MOUTH OPEN FORWARDSIGNWRITING MOUTH OPEN WRINKLEDSI" + + "GNWRITING MOUTH OPEN OVALSIGNWRITING MOUTH OPEN OVAL WRINKLEDSIGNWRITING" + + " MOUTH OPEN OVAL YAWNSIGNWRITING MOUTH OPEN RECTANGLESIGNWRITING MOUTH O" + + "PEN RECTANGLE WRINKLEDSIGNWRITING MOUTH OPEN RECTANGLE YAWNSIGNWRITING M" + + "OUTH KISSSIGNWRITING MOUTH KISS FORWARDSIGNWRITING MOUTH KISS WRINKLEDSI" + + "GNWRITING MOUTH TENSESIGNWRITING MOUTH TENSE FORWARDSIGNWRITING MOUTH TE" + + "NSE SUCKEDSIGNWRITING LIPS PRESSED TOGETHERSIGNWRITING LIP LOWER OVER UP" + + "PERSIGNWRITING LIP UPPER OVER LOWERSIGNWRITING MOUTH CORNERSSIGNWRITING " + + "MOUTH WRINKLES SINGLESIGNWRITING MOUTH WRINKLES DOUBLESIGNWRITING TONGUE" + + " STICKING OUT FARSIGNWRITING TONGUE LICKING LIPSSIGNWRITING TONGUE TIP B" + + "ETWEEN LIPSSIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTHSIGNWRITING TONGU" + + "E INSIDE MOUTH RELAXEDSIGNWRITING TONGUE MOVES AGAINST CHEEKSIGNWRITING " + + "TONGUE CENTRE STICKING OUTSIGNWRITING TONGUE CENTRE INSIDE MOUTHSIGNWRIT" + + "ING TEETHSIGNWRITING TEETH MOVEMENTSIGNWRITING TEETH ON TONGUESIGNWRITIN" + + "G TEETH ON TONGUE MOVEMENTSIGNWRITING TEETH ON LIPSSIGNWRITING TEETH ON " + + "LIPS MOVEMENTSIGNWRITING TEETH BITE LIPSSIGNWRITING MOVEMENT-WALLPLANE J" + + "AWSIGNWRITING MOVEMENT-FLOORPLANE JAWSIGNWRITING NECKSIGNWRITING HAIRSIG" + + "NWRITING EXCITEMENTSIGNWRITING SHOULDER HIP SPINESIGNWRITING SHOULDER HI" + + "P POSITIONSSIGNWRITING WALLPLANE SHOULDER HIP MOVESIGNWRITING FLOORPLANE" + + " SHOULDER HIP MOVESIGNWRITING SHOULDER TILTING FROM WAISTSIGNWRITING TOR" + + "SO-WALLPLANE STRAIGHT STRETCHSIGNWRITING TORSO-WALLPLANE CURVED BENDSIGN" + + "WRITING TORSO-FLOORPLANE TWISTINGSIGNWRITING UPPER BODY TILTING FROM HIP" + + " JOINTSSIGNWRITING LIMB COMBINATIONSIGNWRITING LIMB LENGTH-1SIGNWRITING " + + "LIMB LENGTH-2SIGNWRITING LIMB LENGTH-3SIGNWRITING LIMB LENGTH-4SIGNWRITI" + + "NG LIMB LENGTH-5SIGNWRITING LIMB LENGTH-6SIGNWRITING LIMB LENGTH-7SIGNWR" + + "ITING FINGERSIGNWRITING LOCATION-WALLPLANE SPACESIGNWRITING LOCATION-FLO" + + "ORPLANE SPACESIGNWRITING LOCATION HEIGHTSIGNWRITING LOCATION WIDTHSIGNWR") + ("" + + "ITING LOCATION DEPTHSIGNWRITING LOCATION HEAD NECKSIGNWRITING LOCATION T" + + "ORSOSIGNWRITING LOCATION LIMBS DIGITSSIGNWRITING COMMASIGNWRITING FULL S" + + "TOPSIGNWRITING SEMICOLONSIGNWRITING COLONSIGNWRITING PARENTHESISSIGNWRIT" + + "ING FILL MODIFIER-2SIGNWRITING FILL MODIFIER-3SIGNWRITING FILL MODIFIER-" + + "4SIGNWRITING FILL MODIFIER-5SIGNWRITING FILL MODIFIER-6SIGNWRITING ROTAT" + + "ION MODIFIER-2SIGNWRITING ROTATION MODIFIER-3SIGNWRITING ROTATION MODIFI" + + "ER-4SIGNWRITING ROTATION MODIFIER-5SIGNWRITING ROTATION MODIFIER-6SIGNWR" + + "ITING ROTATION MODIFIER-7SIGNWRITING ROTATION MODIFIER-8SIGNWRITING ROTA" + + "TION MODIFIER-9SIGNWRITING ROTATION MODIFIER-10SIGNWRITING ROTATION MODI" + + "FIER-11SIGNWRITING ROTATION MODIFIER-12SIGNWRITING ROTATION MODIFIER-13S" + + "IGNWRITING ROTATION MODIFIER-14SIGNWRITING ROTATION MODIFIER-15SIGNWRITI" + + "NG ROTATION MODIFIER-16COMBINING GLAGOLITIC LETTER AZUCOMBINING GLAGOLIT" + + "IC LETTER BUKYCOMBINING GLAGOLITIC LETTER VEDECOMBINING GLAGOLITIC LETTE" + + "R GLAGOLICOMBINING GLAGOLITIC LETTER DOBROCOMBINING GLAGOLITIC LETTER YE" + + "STUCOMBINING GLAGOLITIC LETTER ZHIVETECOMBINING GLAGOLITIC LETTER ZEMLJA" + + "COMBINING GLAGOLITIC LETTER IZHECOMBINING GLAGOLITIC LETTER INITIAL IZHE" + + "COMBINING GLAGOLITIC LETTER ICOMBINING GLAGOLITIC LETTER DJERVICOMBINING" + + " GLAGOLITIC LETTER KAKOCOMBINING GLAGOLITIC LETTER LJUDIJECOMBINING GLAG" + + "OLITIC LETTER MYSLITECOMBINING GLAGOLITIC LETTER NASHICOMBINING GLAGOLIT" + + "IC LETTER ONUCOMBINING GLAGOLITIC LETTER POKOJICOMBINING GLAGOLITIC LETT" + + "ER RITSICOMBINING GLAGOLITIC LETTER SLOVOCOMBINING GLAGOLITIC LETTER TVR" + + "IDOCOMBINING GLAGOLITIC LETTER UKUCOMBINING GLAGOLITIC LETTER FRITUCOMBI" + + "NING GLAGOLITIC LETTER HERUCOMBINING GLAGOLITIC LETTER SHTACOMBINING GLA" + + "GOLITIC LETTER TSICOMBINING GLAGOLITIC LETTER CHRIVICOMBINING GLAGOLITIC" + + " LETTER SHACOMBINING GLAGOLITIC LETTER YERUCOMBINING GLAGOLITIC LETTER Y" + + "ERICOMBINING GLAGOLITIC LETTER YATICOMBINING GLAGOLITIC LETTER YUCOMBINI" + + "NG GLAGOLITIC LETTER SMALL YUSCOMBINING GLAGOLITIC LETTER YOCOMBINING GL" + + "AGOLITIC LETTER IOTATED SMALL YUSCOMBINING GLAGOLITIC LETTER BIG YUSCOMB" + + "INING GLAGOLITIC LETTER IOTATED BIG YUSCOMBINING GLAGOLITIC LETTER FITAM" + + "ENDE KIKAKUI SYLLABLE M001 KIMENDE KIKAKUI SYLLABLE M002 KAMENDE KIKAKUI" + + " SYLLABLE M003 KUMENDE KIKAKUI SYLLABLE M065 KEEMENDE KIKAKUI SYLLABLE M" + + "095 KEMENDE KIKAKUI SYLLABLE M076 KOOMENDE KIKAKUI SYLLABLE M048 KOMENDE" + + " KIKAKUI SYLLABLE M179 KUAMENDE KIKAKUI SYLLABLE M004 WIMENDE KIKAKUI SY" + + "LLABLE M005 WAMENDE KIKAKUI SYLLABLE M006 WUMENDE KIKAKUI SYLLABLE M126 " + + "WEEMENDE KIKAKUI SYLLABLE M118 WEMENDE KIKAKUI SYLLABLE M114 WOOMENDE KI" + + "KAKUI SYLLABLE M045 WOMENDE KIKAKUI SYLLABLE M194 WUIMENDE KIKAKUI SYLLA" + + "BLE M143 WEIMENDE KIKAKUI SYLLABLE M061 WVIMENDE KIKAKUI SYLLABLE M049 W" + + "VAMENDE KIKAKUI SYLLABLE M139 WVEMENDE KIKAKUI SYLLABLE M007 MINMENDE KI" + + "KAKUI SYLLABLE M008 MANMENDE KIKAKUI SYLLABLE M009 MUNMENDE KIKAKUI SYLL" + + "ABLE M059 MENMENDE KIKAKUI SYLLABLE M094 MONMENDE KIKAKUI SYLLABLE M154 " + + "MUANMENDE KIKAKUI SYLLABLE M189 MUENMENDE KIKAKUI SYLLABLE M010 BIMENDE " + + "KIKAKUI SYLLABLE M011 BAMENDE KIKAKUI SYLLABLE M012 BUMENDE KIKAKUI SYLL" + + "ABLE M150 BEEMENDE KIKAKUI SYLLABLE M097 BEMENDE KIKAKUI SYLLABLE M103 B" + + "OOMENDE KIKAKUI SYLLABLE M138 BOMENDE KIKAKUI SYLLABLE M013 IMENDE KIKAK" + + "UI SYLLABLE M014 AMENDE KIKAKUI SYLLABLE M015 UMENDE KIKAKUI SYLLABLE M1" + + "63 EEMENDE KIKAKUI SYLLABLE M100 EMENDE KIKAKUI SYLLABLE M165 OOMENDE KI" + + "KAKUI SYLLABLE M147 OMENDE KIKAKUI SYLLABLE M137 EIMENDE KIKAKUI SYLLABL" + + "E M131 INMENDE KIKAKUI SYLLABLE M135 INMENDE KIKAKUI SYLLABLE M195 ANMEN" + + "DE KIKAKUI SYLLABLE M178 ENMENDE KIKAKUI SYLLABLE M019 SIMENDE KIKAKUI S" + + "YLLABLE M020 SAMENDE KIKAKUI SYLLABLE M021 SUMENDE KIKAKUI SYLLABLE M162" + + " SEEMENDE KIKAKUI SYLLABLE M116 SEMENDE KIKAKUI SYLLABLE M136 SOOMENDE K" + + "IKAKUI SYLLABLE M079 SOMENDE KIKAKUI SYLLABLE M196 SIAMENDE KIKAKUI SYLL" + + "ABLE M025 LIMENDE KIKAKUI SYLLABLE M026 LAMENDE KIKAKUI SYLLABLE M027 LU" + + "MENDE KIKAKUI SYLLABLE M084 LEEMENDE KIKAKUI SYLLABLE M073 LEMENDE KIKAK" + + "UI SYLLABLE M054 LOOMENDE KIKAKUI SYLLABLE M153 LOMENDE KIKAKUI SYLLABLE" + + " M110 LONG LEMENDE KIKAKUI SYLLABLE M016 DIMENDE KIKAKUI SYLLABLE M017 D" + + "AMENDE KIKAKUI SYLLABLE M018 DUMENDE KIKAKUI SYLLABLE M089 DEEMENDE KIKA" + + "KUI SYLLABLE M180 DOOMENDE KIKAKUI SYLLABLE M181 DOMENDE KIKAKUI SYLLABL" + + "E M022 TIMENDE KIKAKUI SYLLABLE M023 TAMENDE KIKAKUI SYLLABLE M024 TUMEN" + + "DE KIKAKUI SYLLABLE M091 TEEMENDE KIKAKUI SYLLABLE M055 TEMENDE KIKAKUI " + + "SYLLABLE M104 TOOMENDE KIKAKUI SYLLABLE M069 TOMENDE KIKAKUI SYLLABLE M0" + + "28 JIMENDE KIKAKUI SYLLABLE M029 JAMENDE KIKAKUI SYLLABLE M030 JUMENDE K" + + "IKAKUI SYLLABLE M157 JEEMENDE KIKAKUI SYLLABLE M113 JEMENDE KIKAKUI SYLL" + + "ABLE M160 JOOMENDE KIKAKUI SYLLABLE M063 JOMENDE KIKAKUI SYLLABLE M175 L") + ("" + + "ONG JOMENDE KIKAKUI SYLLABLE M031 YIMENDE KIKAKUI SYLLABLE M032 YAMENDE " + + "KIKAKUI SYLLABLE M033 YUMENDE KIKAKUI SYLLABLE M109 YEEMENDE KIKAKUI SYL" + + "LABLE M080 YEMENDE KIKAKUI SYLLABLE M141 YOOMENDE KIKAKUI SYLLABLE M121 " + + "YOMENDE KIKAKUI SYLLABLE M034 FIMENDE KIKAKUI SYLLABLE M035 FAMENDE KIKA" + + "KUI SYLLABLE M036 FUMENDE KIKAKUI SYLLABLE M078 FEEMENDE KIKAKUI SYLLABL" + + "E M075 FEMENDE KIKAKUI SYLLABLE M133 FOOMENDE KIKAKUI SYLLABLE M088 FOME" + + "NDE KIKAKUI SYLLABLE M197 FUAMENDE KIKAKUI SYLLABLE M101 FANMENDE KIKAKU" + + "I SYLLABLE M037 NINMENDE KIKAKUI SYLLABLE M038 NANMENDE KIKAKUI SYLLABLE" + + " M039 NUNMENDE KIKAKUI SYLLABLE M117 NENMENDE KIKAKUI SYLLABLE M169 NONM" + + "ENDE KIKAKUI SYLLABLE M176 HIMENDE KIKAKUI SYLLABLE M041 HAMENDE KIKAKUI" + + " SYLLABLE M186 HUMENDE KIKAKUI SYLLABLE M040 HEEMENDE KIKAKUI SYLLABLE M" + + "096 HEMENDE KIKAKUI SYLLABLE M042 HOOMENDE KIKAKUI SYLLABLE M140 HOMENDE" + + " KIKAKUI SYLLABLE M083 HEEIMENDE KIKAKUI SYLLABLE M128 HOOUMENDE KIKAKUI" + + " SYLLABLE M053 HINMENDE KIKAKUI SYLLABLE M130 HANMENDE KIKAKUI SYLLABLE " + + "M087 HUNMENDE KIKAKUI SYLLABLE M052 HENMENDE KIKAKUI SYLLABLE M193 HONME" + + "NDE KIKAKUI SYLLABLE M046 HUANMENDE KIKAKUI SYLLABLE M090 NGGIMENDE KIKA" + + "KUI SYLLABLE M043 NGGAMENDE KIKAKUI SYLLABLE M082 NGGUMENDE KIKAKUI SYLL" + + "ABLE M115 NGGEEMENDE KIKAKUI SYLLABLE M146 NGGEMENDE KIKAKUI SYLLABLE M1" + + "56 NGGOOMENDE KIKAKUI SYLLABLE M120 NGGOMENDE KIKAKUI SYLLABLE M159 NGGA" + + "AMENDE KIKAKUI SYLLABLE M127 NGGUAMENDE KIKAKUI SYLLABLE M086 LONG NGGEM" + + "ENDE KIKAKUI SYLLABLE M106 LONG NGGOOMENDE KIKAKUI SYLLABLE M183 LONG NG" + + "GOMENDE KIKAKUI SYLLABLE M155 GIMENDE KIKAKUI SYLLABLE M111 GAMENDE KIKA" + + "KUI SYLLABLE M168 GUMENDE KIKAKUI SYLLABLE M190 GEEMENDE KIKAKUI SYLLABL" + + "E M166 GUEIMENDE KIKAKUI SYLLABLE M167 GUANMENDE KIKAKUI SYLLABLE M184 N" + + "GENMENDE KIKAKUI SYLLABLE M057 NGONMENDE KIKAKUI SYLLABLE M177 NGUANMEND" + + "E KIKAKUI SYLLABLE M068 PIMENDE KIKAKUI SYLLABLE M099 PAMENDE KIKAKUI SY" + + "LLABLE M050 PUMENDE KIKAKUI SYLLABLE M081 PEEMENDE KIKAKUI SYLLABLE M051" + + " PEMENDE KIKAKUI SYLLABLE M102 POOMENDE KIKAKUI SYLLABLE M066 POMENDE KI" + + "KAKUI SYLLABLE M145 MBIMENDE KIKAKUI SYLLABLE M062 MBAMENDE KIKAKUI SYLL" + + "ABLE M122 MBUMENDE KIKAKUI SYLLABLE M047 MBEEMENDE KIKAKUI SYLLABLE M188" + + " MBEEMENDE KIKAKUI SYLLABLE M072 MBEMENDE KIKAKUI SYLLABLE M172 MBOOMEND" + + "E KIKAKUI SYLLABLE M174 MBOMENDE KIKAKUI SYLLABLE M187 MBUUMENDE KIKAKUI" + + " SYLLABLE M161 LONG MBEMENDE KIKAKUI SYLLABLE M105 LONG MBOOMENDE KIKAKU" + + "I SYLLABLE M142 LONG MBOMENDE KIKAKUI SYLLABLE M132 KPIMENDE KIKAKUI SYL" + + "LABLE M092 KPAMENDE KIKAKUI SYLLABLE M074 KPUMENDE KIKAKUI SYLLABLE M044" + + " KPEEMENDE KIKAKUI SYLLABLE M108 KPEMENDE KIKAKUI SYLLABLE M112 KPOOMEND" + + "E KIKAKUI SYLLABLE M158 KPOMENDE KIKAKUI SYLLABLE M124 GBIMENDE KIKAKUI " + + "SYLLABLE M056 GBAMENDE KIKAKUI SYLLABLE M148 GBUMENDE KIKAKUI SYLLABLE M" + + "093 GBEEMENDE KIKAKUI SYLLABLE M107 GBEMENDE KIKAKUI SYLLABLE M071 GBOOM" + + "ENDE KIKAKUI SYLLABLE M070 GBOMENDE KIKAKUI SYLLABLE M171 RAMENDE KIKAKU" + + "I SYLLABLE M123 NDIMENDE KIKAKUI SYLLABLE M129 NDAMENDE KIKAKUI SYLLABLE" + + " M125 NDUMENDE KIKAKUI SYLLABLE M191 NDEEMENDE KIKAKUI SYLLABLE M119 NDE" + + "MENDE KIKAKUI SYLLABLE M067 NDOOMENDE KIKAKUI SYLLABLE M064 NDOMENDE KIK" + + "AKUI SYLLABLE M152 NJAMENDE KIKAKUI SYLLABLE M192 NJUMENDE KIKAKUI SYLLA" + + "BLE M149 NJEEMENDE KIKAKUI SYLLABLE M134 NJOOMENDE KIKAKUI SYLLABLE M182" + + " VIMENDE KIKAKUI SYLLABLE M185 VAMENDE KIKAKUI SYLLABLE M151 VUMENDE KIK" + + "AKUI SYLLABLE M173 VEEMENDE KIKAKUI SYLLABLE M085 VEMENDE KIKAKUI SYLLAB" + + "LE M144 VOOMENDE KIKAKUI SYLLABLE M077 VOMENDE KIKAKUI SYLLABLE M164 NYI" + + "NMENDE KIKAKUI SYLLABLE M058 NYANMENDE KIKAKUI SYLLABLE M170 NYUNMENDE K" + + "IKAKUI SYLLABLE M098 NYENMENDE KIKAKUI SYLLABLE M060 NYONMENDE KIKAKUI D" + + "IGIT ONEMENDE KIKAKUI DIGIT TWOMENDE KIKAKUI DIGIT THREEMENDE KIKAKUI DI" + + "GIT FOURMENDE KIKAKUI DIGIT FIVEMENDE KIKAKUI DIGIT SIXMENDE KIKAKUI DIG" + + "IT SEVENMENDE KIKAKUI DIGIT EIGHTMENDE KIKAKUI DIGIT NINEMENDE KIKAKUI C" + + "OMBINING NUMBER TEENSMENDE KIKAKUI COMBINING NUMBER TENSMENDE KIKAKUI CO" + + "MBINING NUMBER HUNDREDSMENDE KIKAKUI COMBINING NUMBER THOUSANDSMENDE KIK" + + "AKUI COMBINING NUMBER TEN THOUSANDSMENDE KIKAKUI COMBINING NUMBER HUNDRE" + + "D THOUSANDSMENDE KIKAKUI COMBINING NUMBER MILLIONSADLAM CAPITAL LETTER A" + + "LIFADLAM CAPITAL LETTER DAALIADLAM CAPITAL LETTER LAAMADLAM CAPITAL LETT" + + "ER MIIMADLAM CAPITAL LETTER BAADLAM CAPITAL LETTER SINNYIIYHEADLAM CAPIT" + + "AL LETTER PEADLAM CAPITAL LETTER BHEADLAM CAPITAL LETTER RAADLAM CAPITAL" + + " LETTER EADLAM CAPITAL LETTER FAADLAM CAPITAL LETTER IADLAM CAPITAL LETT" + + "ER OADLAM CAPITAL LETTER DHAADLAM CAPITAL LETTER YHEADLAM CAPITAL LETTER" + + " WAWADLAM CAPITAL LETTER NUNADLAM CAPITAL LETTER KAFADLAM CAPITAL LETTER" + + " YAADLAM CAPITAL LETTER UADLAM CAPITAL LETTER JIIMADLAM CAPITAL LETTER C") + ("" + + "HIADLAM CAPITAL LETTER HAADLAM CAPITAL LETTER QAAFADLAM CAPITAL LETTER G" + + "AADLAM CAPITAL LETTER NYAADLAM CAPITAL LETTER TUADLAM CAPITAL LETTER NHA" + + "ADLAM CAPITAL LETTER VAADLAM CAPITAL LETTER KHAADLAM CAPITAL LETTER GBEA" + + "DLAM CAPITAL LETTER ZALADLAM CAPITAL LETTER KPOADLAM CAPITAL LETTER SHAA" + + "DLAM SMALL LETTER ALIFADLAM SMALL LETTER DAALIADLAM SMALL LETTER LAAMADL" + + "AM SMALL LETTER MIIMADLAM SMALL LETTER BAADLAM SMALL LETTER SINNYIIYHEAD" + + "LAM SMALL LETTER PEADLAM SMALL LETTER BHEADLAM SMALL LETTER RAADLAM SMAL" + + "L LETTER EADLAM SMALL LETTER FAADLAM SMALL LETTER IADLAM SMALL LETTER OA" + + "DLAM SMALL LETTER DHAADLAM SMALL LETTER YHEADLAM SMALL LETTER WAWADLAM S" + + "MALL LETTER NUNADLAM SMALL LETTER KAFADLAM SMALL LETTER YAADLAM SMALL LE" + + "TTER UADLAM SMALL LETTER JIIMADLAM SMALL LETTER CHIADLAM SMALL LETTER HA" + + "ADLAM SMALL LETTER QAAFADLAM SMALL LETTER GAADLAM SMALL LETTER NYAADLAM " + + "SMALL LETTER TUADLAM SMALL LETTER NHAADLAM SMALL LETTER VAADLAM SMALL LE" + + "TTER KHAADLAM SMALL LETTER GBEADLAM SMALL LETTER ZALADLAM SMALL LETTER K" + + "POADLAM SMALL LETTER SHAADLAM ALIF LENGTHENERADLAM VOWEL LENGTHENERADLAM" + + " GEMINATION MARKADLAM HAMZAADLAM CONSONANT MODIFIERADLAM GEMINATE CONSON" + + "ANT MODIFIERADLAM NUKTAADLAM DIGIT ZEROADLAM DIGIT ONEADLAM DIGIT TWOADL" + + "AM DIGIT THREEADLAM DIGIT FOURADLAM DIGIT FIVEADLAM DIGIT SIXADLAM DIGIT" + + " SEVENADLAM DIGIT EIGHTADLAM DIGIT NINEADLAM INITIAL EXCLAMATION MARKADL" + + "AM INITIAL QUESTION MARKARABIC MATHEMATICAL ALEFARABIC MATHEMATICAL BEHA" + + "RABIC MATHEMATICAL JEEMARABIC MATHEMATICAL DALARABIC MATHEMATICAL WAWARA" + + "BIC MATHEMATICAL ZAINARABIC MATHEMATICAL HAHARABIC MATHEMATICAL TAHARABI" + + "C MATHEMATICAL YEHARABIC MATHEMATICAL KAFARABIC MATHEMATICAL LAMARABIC M" + + "ATHEMATICAL MEEMARABIC MATHEMATICAL NOONARABIC MATHEMATICAL SEENARABIC M" + + "ATHEMATICAL AINARABIC MATHEMATICAL FEHARABIC MATHEMATICAL SADARABIC MATH" + + "EMATICAL QAFARABIC MATHEMATICAL REHARABIC MATHEMATICAL SHEENARABIC MATHE" + + "MATICAL TEHARABIC MATHEMATICAL THEHARABIC MATHEMATICAL KHAHARABIC MATHEM" + + "ATICAL THALARABIC MATHEMATICAL DADARABIC MATHEMATICAL ZAHARABIC MATHEMAT" + + "ICAL GHAINARABIC MATHEMATICAL DOTLESS BEHARABIC MATHEMATICAL DOTLESS NOO" + + "NARABIC MATHEMATICAL DOTLESS FEHARABIC MATHEMATICAL DOTLESS QAFARABIC MA" + + "THEMATICAL INITIAL BEHARABIC MATHEMATICAL INITIAL JEEMARABIC MATHEMATICA" + + "L INITIAL HEHARABIC MATHEMATICAL INITIAL HAHARABIC MATHEMATICAL INITIAL " + + "YEHARABIC MATHEMATICAL INITIAL KAFARABIC MATHEMATICAL INITIAL LAMARABIC " + + "MATHEMATICAL INITIAL MEEMARABIC MATHEMATICAL INITIAL NOONARABIC MATHEMAT" + + "ICAL INITIAL SEENARABIC MATHEMATICAL INITIAL AINARABIC MATHEMATICAL INIT" + + "IAL FEHARABIC MATHEMATICAL INITIAL SADARABIC MATHEMATICAL INITIAL QAFARA" + + "BIC MATHEMATICAL INITIAL SHEENARABIC MATHEMATICAL INITIAL TEHARABIC MATH" + + "EMATICAL INITIAL THEHARABIC MATHEMATICAL INITIAL KHAHARABIC MATHEMATICAL" + + " INITIAL DADARABIC MATHEMATICAL INITIAL GHAINARABIC MATHEMATICAL TAILED " + + "JEEMARABIC MATHEMATICAL TAILED HAHARABIC MATHEMATICAL TAILED YEHARABIC M" + + "ATHEMATICAL TAILED LAMARABIC MATHEMATICAL TAILED NOONARABIC MATHEMATICAL" + + " TAILED SEENARABIC MATHEMATICAL TAILED AINARABIC MATHEMATICAL TAILED SAD" + + "ARABIC MATHEMATICAL TAILED QAFARABIC MATHEMATICAL TAILED SHEENARABIC MAT" + + "HEMATICAL TAILED KHAHARABIC MATHEMATICAL TAILED DADARABIC MATHEMATICAL T" + + "AILED GHAINARABIC MATHEMATICAL TAILED DOTLESS NOONARABIC MATHEMATICAL TA" + + "ILED DOTLESS QAFARABIC MATHEMATICAL STRETCHED BEHARABIC MATHEMATICAL STR" + + "ETCHED JEEMARABIC MATHEMATICAL STRETCHED HEHARABIC MATHEMATICAL STRETCHE" + + "D HAHARABIC MATHEMATICAL STRETCHED TAHARABIC MATHEMATICAL STRETCHED YEHA" + + "RABIC MATHEMATICAL STRETCHED KAFARABIC MATHEMATICAL STRETCHED MEEMARABIC" + + " MATHEMATICAL STRETCHED NOONARABIC MATHEMATICAL STRETCHED SEENARABIC MAT" + + "HEMATICAL STRETCHED AINARABIC MATHEMATICAL STRETCHED FEHARABIC MATHEMATI" + + "CAL STRETCHED SADARABIC MATHEMATICAL STRETCHED QAFARABIC MATHEMATICAL ST" + + "RETCHED SHEENARABIC MATHEMATICAL STRETCHED TEHARABIC MATHEMATICAL STRETC" + + "HED THEHARABIC MATHEMATICAL STRETCHED KHAHARABIC MATHEMATICAL STRETCHED " + + "DADARABIC MATHEMATICAL STRETCHED ZAHARABIC MATHEMATICAL STRETCHED GHAINA" + + "RABIC MATHEMATICAL STRETCHED DOTLESS BEHARABIC MATHEMATICAL STRETCHED DO" + + "TLESS FEHARABIC MATHEMATICAL LOOPED ALEFARABIC MATHEMATICAL LOOPED BEHAR" + + "ABIC MATHEMATICAL LOOPED JEEMARABIC MATHEMATICAL LOOPED DALARABIC MATHEM" + + "ATICAL LOOPED HEHARABIC MATHEMATICAL LOOPED WAWARABIC MATHEMATICAL LOOPE" + + "D ZAINARABIC MATHEMATICAL LOOPED HAHARABIC MATHEMATICAL LOOPED TAHARABIC" + + " MATHEMATICAL LOOPED YEHARABIC MATHEMATICAL LOOPED LAMARABIC MATHEMATICA" + + "L LOOPED MEEMARABIC MATHEMATICAL LOOPED NOONARABIC MATHEMATICAL LOOPED S" + + "EENARABIC MATHEMATICAL LOOPED AINARABIC MATHEMATICAL LOOPED FEHARABIC MA" + + "THEMATICAL LOOPED SADARABIC MATHEMATICAL LOOPED QAFARABIC MATHEMATICAL L") + ("" + + "OOPED REHARABIC MATHEMATICAL LOOPED SHEENARABIC MATHEMATICAL LOOPED TEHA" + + "RABIC MATHEMATICAL LOOPED THEHARABIC MATHEMATICAL LOOPED KHAHARABIC MATH" + + "EMATICAL LOOPED THALARABIC MATHEMATICAL LOOPED DADARABIC MATHEMATICAL LO" + + "OPED ZAHARABIC MATHEMATICAL LOOPED GHAINARABIC MATHEMATICAL DOUBLE-STRUC" + + "K BEHARABIC MATHEMATICAL DOUBLE-STRUCK JEEMARABIC MATHEMATICAL DOUBLE-ST" + + "RUCK DALARABIC MATHEMATICAL DOUBLE-STRUCK WAWARABIC MATHEMATICAL DOUBLE-" + + "STRUCK ZAINARABIC MATHEMATICAL DOUBLE-STRUCK HAHARABIC MATHEMATICAL DOUB" + + "LE-STRUCK TAHARABIC MATHEMATICAL DOUBLE-STRUCK YEHARABIC MATHEMATICAL DO" + + "UBLE-STRUCK LAMARABIC MATHEMATICAL DOUBLE-STRUCK MEEMARABIC MATHEMATICAL" + + " DOUBLE-STRUCK NOONARABIC MATHEMATICAL DOUBLE-STRUCK SEENARABIC MATHEMAT" + + "ICAL DOUBLE-STRUCK AINARABIC MATHEMATICAL DOUBLE-STRUCK FEHARABIC MATHEM" + + "ATICAL DOUBLE-STRUCK SADARABIC MATHEMATICAL DOUBLE-STRUCK QAFARABIC MATH" + + "EMATICAL DOUBLE-STRUCK REHARABIC MATHEMATICAL DOUBLE-STRUCK SHEENARABIC " + + "MATHEMATICAL DOUBLE-STRUCK TEHARABIC MATHEMATICAL DOUBLE-STRUCK THEHARAB" + + "IC MATHEMATICAL DOUBLE-STRUCK KHAHARABIC MATHEMATICAL DOUBLE-STRUCK THAL" + + "ARABIC MATHEMATICAL DOUBLE-STRUCK DADARABIC MATHEMATICAL DOUBLE-STRUCK Z" + + "AHARABIC MATHEMATICAL DOUBLE-STRUCK GHAINARABIC MATHEMATICAL OPERATOR ME" + + "EM WITH HAH WITH TATWEELARABIC MATHEMATICAL OPERATOR HAH WITH DALMAHJONG" + + " TILE EAST WINDMAHJONG TILE SOUTH WINDMAHJONG TILE WEST WINDMAHJONG TILE" + + " NORTH WINDMAHJONG TILE RED DRAGONMAHJONG TILE GREEN DRAGONMAHJONG TILE " + + "WHITE DRAGONMAHJONG TILE ONE OF CHARACTERSMAHJONG TILE TWO OF CHARACTERS" + + "MAHJONG TILE THREE OF CHARACTERSMAHJONG TILE FOUR OF CHARACTERSMAHJONG T" + + "ILE FIVE OF CHARACTERSMAHJONG TILE SIX OF CHARACTERSMAHJONG TILE SEVEN O" + + "F CHARACTERSMAHJONG TILE EIGHT OF CHARACTERSMAHJONG TILE NINE OF CHARACT" + + "ERSMAHJONG TILE ONE OF BAMBOOSMAHJONG TILE TWO OF BAMBOOSMAHJONG TILE TH" + + "REE OF BAMBOOSMAHJONG TILE FOUR OF BAMBOOSMAHJONG TILE FIVE OF BAMBOOSMA" + + "HJONG TILE SIX OF BAMBOOSMAHJONG TILE SEVEN OF BAMBOOSMAHJONG TILE EIGHT" + + " OF BAMBOOSMAHJONG TILE NINE OF BAMBOOSMAHJONG TILE ONE OF CIRCLESMAHJON" + + "G TILE TWO OF CIRCLESMAHJONG TILE THREE OF CIRCLESMAHJONG TILE FOUR OF C" + + "IRCLESMAHJONG TILE FIVE OF CIRCLESMAHJONG TILE SIX OF CIRCLESMAHJONG TIL" + + "E SEVEN OF CIRCLESMAHJONG TILE EIGHT OF CIRCLESMAHJONG TILE NINE OF CIRC" + + "LESMAHJONG TILE PLUMMAHJONG TILE ORCHIDMAHJONG TILE BAMBOOMAHJONG TILE C" + + "HRYSANTHEMUMMAHJONG TILE SPRINGMAHJONG TILE SUMMERMAHJONG TILE AUTUMNMAH" + + "JONG TILE WINTERMAHJONG TILE JOKERMAHJONG TILE BACKDOMINO TILE HORIZONTA" + + "L BACKDOMINO TILE HORIZONTAL-00-00DOMINO TILE HORIZONTAL-00-01DOMINO TIL" + + "E HORIZONTAL-00-02DOMINO TILE HORIZONTAL-00-03DOMINO TILE HORIZONTAL-00-" + + "04DOMINO TILE HORIZONTAL-00-05DOMINO TILE HORIZONTAL-00-06DOMINO TILE HO" + + "RIZONTAL-01-00DOMINO TILE HORIZONTAL-01-01DOMINO TILE HORIZONTAL-01-02DO" + + "MINO TILE HORIZONTAL-01-03DOMINO TILE HORIZONTAL-01-04DOMINO TILE HORIZO" + + "NTAL-01-05DOMINO TILE HORIZONTAL-01-06DOMINO TILE HORIZONTAL-02-00DOMINO" + + " TILE HORIZONTAL-02-01DOMINO TILE HORIZONTAL-02-02DOMINO TILE HORIZONTAL" + + "-02-03DOMINO TILE HORIZONTAL-02-04DOMINO TILE HORIZONTAL-02-05DOMINO TIL" + + "E HORIZONTAL-02-06DOMINO TILE HORIZONTAL-03-00DOMINO TILE HORIZONTAL-03-" + + "01DOMINO TILE HORIZONTAL-03-02DOMINO TILE HORIZONTAL-03-03DOMINO TILE HO" + + "RIZONTAL-03-04DOMINO TILE HORIZONTAL-03-05DOMINO TILE HORIZONTAL-03-06DO" + + "MINO TILE HORIZONTAL-04-00DOMINO TILE HORIZONTAL-04-01DOMINO TILE HORIZO" + + "NTAL-04-02DOMINO TILE HORIZONTAL-04-03DOMINO TILE HORIZONTAL-04-04DOMINO" + + " TILE HORIZONTAL-04-05DOMINO TILE HORIZONTAL-04-06DOMINO TILE HORIZONTAL" + + "-05-00DOMINO TILE HORIZONTAL-05-01DOMINO TILE HORIZONTAL-05-02DOMINO TIL" + + "E HORIZONTAL-05-03DOMINO TILE HORIZONTAL-05-04DOMINO TILE HORIZONTAL-05-" + + "05DOMINO TILE HORIZONTAL-05-06DOMINO TILE HORIZONTAL-06-00DOMINO TILE HO" + + "RIZONTAL-06-01DOMINO TILE HORIZONTAL-06-02DOMINO TILE HORIZONTAL-06-03DO" + + "MINO TILE HORIZONTAL-06-04DOMINO TILE HORIZONTAL-06-05DOMINO TILE HORIZO" + + "NTAL-06-06DOMINO TILE VERTICAL BACKDOMINO TILE VERTICAL-00-00DOMINO TILE" + + " VERTICAL-00-01DOMINO TILE VERTICAL-00-02DOMINO TILE VERTICAL-00-03DOMIN" + + "O TILE VERTICAL-00-04DOMINO TILE VERTICAL-00-05DOMINO TILE VERTICAL-00-0" + + "6DOMINO TILE VERTICAL-01-00DOMINO TILE VERTICAL-01-01DOMINO TILE VERTICA" + + "L-01-02DOMINO TILE VERTICAL-01-03DOMINO TILE VERTICAL-01-04DOMINO TILE V" + + "ERTICAL-01-05DOMINO TILE VERTICAL-01-06DOMINO TILE VERTICAL-02-00DOMINO " + + "TILE VERTICAL-02-01DOMINO TILE VERTICAL-02-02DOMINO TILE VERTICAL-02-03D" + + "OMINO TILE VERTICAL-02-04DOMINO TILE VERTICAL-02-05DOMINO TILE VERTICAL-" + + "02-06DOMINO TILE VERTICAL-03-00DOMINO TILE VERTICAL-03-01DOMINO TILE VER" + + "TICAL-03-02DOMINO TILE VERTICAL-03-03DOMINO TILE VERTICAL-03-04DOMINO TI" + + "LE VERTICAL-03-05DOMINO TILE VERTICAL-03-06DOMINO TILE VERTICAL-04-00DOM") + ("" + + "INO TILE VERTICAL-04-01DOMINO TILE VERTICAL-04-02DOMINO TILE VERTICAL-04" + + "-03DOMINO TILE VERTICAL-04-04DOMINO TILE VERTICAL-04-05DOMINO TILE VERTI" + + "CAL-04-06DOMINO TILE VERTICAL-05-00DOMINO TILE VERTICAL-05-01DOMINO TILE" + + " VERTICAL-05-02DOMINO TILE VERTICAL-05-03DOMINO TILE VERTICAL-05-04DOMIN" + + "O TILE VERTICAL-05-05DOMINO TILE VERTICAL-05-06DOMINO TILE VERTICAL-06-0" + + "0DOMINO TILE VERTICAL-06-01DOMINO TILE VERTICAL-06-02DOMINO TILE VERTICA" + + "L-06-03DOMINO TILE VERTICAL-06-04DOMINO TILE VERTICAL-06-05DOMINO TILE V" + + "ERTICAL-06-06PLAYING CARD BACKPLAYING CARD ACE OF SPADESPLAYING CARD TWO" + + " OF SPADESPLAYING CARD THREE OF SPADESPLAYING CARD FOUR OF SPADESPLAYING" + + " CARD FIVE OF SPADESPLAYING CARD SIX OF SPADESPLAYING CARD SEVEN OF SPAD" + + "ESPLAYING CARD EIGHT OF SPADESPLAYING CARD NINE OF SPADESPLAYING CARD TE" + + "N OF SPADESPLAYING CARD JACK OF SPADESPLAYING CARD KNIGHT OF SPADESPLAYI" + + "NG CARD QUEEN OF SPADESPLAYING CARD KING OF SPADESPLAYING CARD ACE OF HE" + + "ARTSPLAYING CARD TWO OF HEARTSPLAYING CARD THREE OF HEARTSPLAYING CARD F" + + "OUR OF HEARTSPLAYING CARD FIVE OF HEARTSPLAYING CARD SIX OF HEARTSPLAYIN" + + "G CARD SEVEN OF HEARTSPLAYING CARD EIGHT OF HEARTSPLAYING CARD NINE OF H" + + "EARTSPLAYING CARD TEN OF HEARTSPLAYING CARD JACK OF HEARTSPLAYING CARD K" + + "NIGHT OF HEARTSPLAYING CARD QUEEN OF HEARTSPLAYING CARD KING OF HEARTSPL" + + "AYING CARD RED JOKERPLAYING CARD ACE OF DIAMONDSPLAYING CARD TWO OF DIAM" + + "ONDSPLAYING CARD THREE OF DIAMONDSPLAYING CARD FOUR OF DIAMONDSPLAYING C" + + "ARD FIVE OF DIAMONDSPLAYING CARD SIX OF DIAMONDSPLAYING CARD SEVEN OF DI" + + "AMONDSPLAYING CARD EIGHT OF DIAMONDSPLAYING CARD NINE OF DIAMONDSPLAYING" + + " CARD TEN OF DIAMONDSPLAYING CARD JACK OF DIAMONDSPLAYING CARD KNIGHT OF" + + " DIAMONDSPLAYING CARD QUEEN OF DIAMONDSPLAYING CARD KING OF DIAMONDSPLAY" + + "ING CARD BLACK JOKERPLAYING CARD ACE OF CLUBSPLAYING CARD TWO OF CLUBSPL" + + "AYING CARD THREE OF CLUBSPLAYING CARD FOUR OF CLUBSPLAYING CARD FIVE OF " + + "CLUBSPLAYING CARD SIX OF CLUBSPLAYING CARD SEVEN OF CLUBSPLAYING CARD EI" + + "GHT OF CLUBSPLAYING CARD NINE OF CLUBSPLAYING CARD TEN OF CLUBSPLAYING C" + + "ARD JACK OF CLUBSPLAYING CARD KNIGHT OF CLUBSPLAYING CARD QUEEN OF CLUBS" + + "PLAYING CARD KING OF CLUBSPLAYING CARD WHITE JOKERPLAYING CARD FOOLPLAYI" + + "NG CARD TRUMP-1PLAYING CARD TRUMP-2PLAYING CARD TRUMP-3PLAYING CARD TRUM" + + "P-4PLAYING CARD TRUMP-5PLAYING CARD TRUMP-6PLAYING CARD TRUMP-7PLAYING C" + + "ARD TRUMP-8PLAYING CARD TRUMP-9PLAYING CARD TRUMP-10PLAYING CARD TRUMP-1" + + "1PLAYING CARD TRUMP-12PLAYING CARD TRUMP-13PLAYING CARD TRUMP-14PLAYING " + + "CARD TRUMP-15PLAYING CARD TRUMP-16PLAYING CARD TRUMP-17PLAYING CARD TRUM" + + "P-18PLAYING CARD TRUMP-19PLAYING CARD TRUMP-20PLAYING CARD TRUMP-21DIGIT" + + " ZERO FULL STOPDIGIT ZERO COMMADIGIT ONE COMMADIGIT TWO COMMADIGIT THREE" + + " COMMADIGIT FOUR COMMADIGIT FIVE COMMADIGIT SIX COMMADIGIT SEVEN COMMADI" + + "GIT EIGHT COMMADIGIT NINE COMMADINGBAT CIRCLED SANS-SERIF DIGIT ZERODING" + + "BAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZEROPARENTHESIZED LATIN CAPITAL LE" + + "TTER APARENTHESIZED LATIN CAPITAL LETTER BPARENTHESIZED LATIN CAPITAL LE" + + "TTER CPARENTHESIZED LATIN CAPITAL LETTER DPARENTHESIZED LATIN CAPITAL LE" + + "TTER EPARENTHESIZED LATIN CAPITAL LETTER FPARENTHESIZED LATIN CAPITAL LE" + + "TTER GPARENTHESIZED LATIN CAPITAL LETTER HPARENTHESIZED LATIN CAPITAL LE" + + "TTER IPARENTHESIZED LATIN CAPITAL LETTER JPARENTHESIZED LATIN CAPITAL LE" + + "TTER KPARENTHESIZED LATIN CAPITAL LETTER LPARENTHESIZED LATIN CAPITAL LE" + + "TTER MPARENTHESIZED LATIN CAPITAL LETTER NPARENTHESIZED LATIN CAPITAL LE" + + "TTER OPARENTHESIZED LATIN CAPITAL LETTER PPARENTHESIZED LATIN CAPITAL LE" + + "TTER QPARENTHESIZED LATIN CAPITAL LETTER RPARENTHESIZED LATIN CAPITAL LE" + + "TTER SPARENTHESIZED LATIN CAPITAL LETTER TPARENTHESIZED LATIN CAPITAL LE" + + "TTER UPARENTHESIZED LATIN CAPITAL LETTER VPARENTHESIZED LATIN CAPITAL LE" + + "TTER WPARENTHESIZED LATIN CAPITAL LETTER XPARENTHESIZED LATIN CAPITAL LE" + + "TTER YPARENTHESIZED LATIN CAPITAL LETTER ZTORTOISE SHELL BRACKETED LATIN" + + " CAPITAL LETTER SCIRCLED ITALIC LATIN CAPITAL LETTER CCIRCLED ITALIC LAT" + + "IN CAPITAL LETTER RCIRCLED CDCIRCLED WZSQUARED LATIN CAPITAL LETTER ASQU" + + "ARED LATIN CAPITAL LETTER BSQUARED LATIN CAPITAL LETTER CSQUARED LATIN C" + + "APITAL LETTER DSQUARED LATIN CAPITAL LETTER ESQUARED LATIN CAPITAL LETTE" + + "R FSQUARED LATIN CAPITAL LETTER GSQUARED LATIN CAPITAL LETTER HSQUARED L" + + "ATIN CAPITAL LETTER ISQUARED LATIN CAPITAL LETTER JSQUARED LATIN CAPITAL" + + " LETTER KSQUARED LATIN CAPITAL LETTER LSQUARED LATIN CAPITAL LETTER MSQU" + + "ARED LATIN CAPITAL LETTER NSQUARED LATIN CAPITAL LETTER OSQUARED LATIN C" + + "APITAL LETTER PSQUARED LATIN CAPITAL LETTER QSQUARED LATIN CAPITAL LETTE" + + "R RSQUARED LATIN CAPITAL LETTER SSQUARED LATIN CAPITAL LETTER TSQUARED L" + + "ATIN CAPITAL LETTER USQUARED LATIN CAPITAL LETTER VSQUARED LATIN CAPITAL") + ("" + + " LETTER WSQUARED LATIN CAPITAL LETTER XSQUARED LATIN CAPITAL LETTER YSQU" + + "ARED LATIN CAPITAL LETTER ZSQUARED HVSQUARED MVSQUARED SDSQUARED SSSQUAR" + + "ED PPVSQUARED WCNEGATIVE CIRCLED LATIN CAPITAL LETTER ANEGATIVE CIRCLED " + + "LATIN CAPITAL LETTER BNEGATIVE CIRCLED LATIN CAPITAL LETTER CNEGATIVE CI" + + "RCLED LATIN CAPITAL LETTER DNEGATIVE CIRCLED LATIN CAPITAL LETTER ENEGAT" + + "IVE CIRCLED LATIN CAPITAL LETTER FNEGATIVE CIRCLED LATIN CAPITAL LETTER " + + "GNEGATIVE CIRCLED LATIN CAPITAL LETTER HNEGATIVE CIRCLED LATIN CAPITAL L" + + "ETTER INEGATIVE CIRCLED LATIN CAPITAL LETTER JNEGATIVE CIRCLED LATIN CAP" + + "ITAL LETTER KNEGATIVE CIRCLED LATIN CAPITAL LETTER LNEGATIVE CIRCLED LAT" + + "IN CAPITAL LETTER MNEGATIVE CIRCLED LATIN CAPITAL LETTER NNEGATIVE CIRCL" + + "ED LATIN CAPITAL LETTER ONEGATIVE CIRCLED LATIN CAPITAL LETTER PNEGATIVE" + + " CIRCLED LATIN CAPITAL LETTER QNEGATIVE CIRCLED LATIN CAPITAL LETTER RNE" + + "GATIVE CIRCLED LATIN CAPITAL LETTER SNEGATIVE CIRCLED LATIN CAPITAL LETT" + + "ER TNEGATIVE CIRCLED LATIN CAPITAL LETTER UNEGATIVE CIRCLED LATIN CAPITA" + + "L LETTER VNEGATIVE CIRCLED LATIN CAPITAL LETTER WNEGATIVE CIRCLED LATIN " + + "CAPITAL LETTER XNEGATIVE CIRCLED LATIN CAPITAL LETTER YNEGATIVE CIRCLED " + + "LATIN CAPITAL LETTER ZRAISED MC SIGNRAISED MD SIGNNEGATIVE SQUARED LATIN" + + " CAPITAL LETTER ANEGATIVE SQUARED LATIN CAPITAL LETTER BNEGATIVE SQUARED" + + " LATIN CAPITAL LETTER CNEGATIVE SQUARED LATIN CAPITAL LETTER DNEGATIVE S" + + "QUARED LATIN CAPITAL LETTER ENEGATIVE SQUARED LATIN CAPITAL LETTER FNEGA" + + "TIVE SQUARED LATIN CAPITAL LETTER GNEGATIVE SQUARED LATIN CAPITAL LETTER" + + " HNEGATIVE SQUARED LATIN CAPITAL LETTER INEGATIVE SQUARED LATIN CAPITAL " + + "LETTER JNEGATIVE SQUARED LATIN CAPITAL LETTER KNEGATIVE SQUARED LATIN CA" + + "PITAL LETTER LNEGATIVE SQUARED LATIN CAPITAL LETTER MNEGATIVE SQUARED LA" + + "TIN CAPITAL LETTER NNEGATIVE SQUARED LATIN CAPITAL LETTER ONEGATIVE SQUA" + + "RED LATIN CAPITAL LETTER PNEGATIVE SQUARED LATIN CAPITAL LETTER QNEGATIV" + + "E SQUARED LATIN CAPITAL LETTER RNEGATIVE SQUARED LATIN CAPITAL LETTER SN" + + "EGATIVE SQUARED LATIN CAPITAL LETTER TNEGATIVE SQUARED LATIN CAPITAL LET" + + "TER UNEGATIVE SQUARED LATIN CAPITAL LETTER VNEGATIVE SQUARED LATIN CAPIT" + + "AL LETTER WNEGATIVE SQUARED LATIN CAPITAL LETTER XNEGATIVE SQUARED LATIN" + + " CAPITAL LETTER YNEGATIVE SQUARED LATIN CAPITAL LETTER ZCROSSED NEGATIVE" + + " SQUARED LATIN CAPITAL LETTER PNEGATIVE SQUARED ICNEGATIVE SQUARED PANEG" + + "ATIVE SQUARED SANEGATIVE SQUARED ABNEGATIVE SQUARED WCSQUARE DJSQUARED C" + + "LSQUARED COOLSQUARED FREESQUARED IDSQUARED NEWSQUARED NGSQUARED OKSQUARE" + + "D SOSSQUARED UP WITH EXCLAMATION MARKSQUARED VSSQUARED THREE DSQUARED SE" + + "COND SCREENSQUARED TWO KSQUARED FOUR KSQUARED EIGHT KSQUARED FIVE POINT " + + "ONESQUARED SEVEN POINT ONESQUARED TWENTY-TWO POINT TWOSQUARED SIXTY PSQU" + + "ARED ONE HUNDRED TWENTY PSQUARED LATIN SMALL LETTER DSQUARED HCSQUARED H" + + "DRSQUARED HI-RESSQUARED LOSSLESSSQUARED SHVSQUARED UHDSQUARED VODREGIONA" + + "L INDICATOR SYMBOL LETTER AREGIONAL INDICATOR SYMBOL LETTER BREGIONAL IN" + + "DICATOR SYMBOL LETTER CREGIONAL INDICATOR SYMBOL LETTER DREGIONAL INDICA" + + "TOR SYMBOL LETTER EREGIONAL INDICATOR SYMBOL LETTER FREGIONAL INDICATOR " + + "SYMBOL LETTER GREGIONAL INDICATOR SYMBOL LETTER HREGIONAL INDICATOR SYMB" + + "OL LETTER IREGIONAL INDICATOR SYMBOL LETTER JREGIONAL INDICATOR SYMBOL L" + + "ETTER KREGIONAL INDICATOR SYMBOL LETTER LREGIONAL INDICATOR SYMBOL LETTE" + + "R MREGIONAL INDICATOR SYMBOL LETTER NREGIONAL INDICATOR SYMBOL LETTER OR" + + "EGIONAL INDICATOR SYMBOL LETTER PREGIONAL INDICATOR SYMBOL LETTER QREGIO" + + "NAL INDICATOR SYMBOL LETTER RREGIONAL INDICATOR SYMBOL LETTER SREGIONAL " + + "INDICATOR SYMBOL LETTER TREGIONAL INDICATOR SYMBOL LETTER UREGIONAL INDI" + + "CATOR SYMBOL LETTER VREGIONAL INDICATOR SYMBOL LETTER WREGIONAL INDICATO" + + "R SYMBOL LETTER XREGIONAL INDICATOR SYMBOL LETTER YREGIONAL INDICATOR SY" + + "MBOL LETTER ZSQUARE HIRAGANA HOKASQUARED KATAKANA KOKOSQUARED KATAKANA S" + + "ASQUARED CJK UNIFIED IDEOGRAPH-624BSQUARED CJK UNIFIED IDEOGRAPH-5B57SQU" + + "ARED CJK UNIFIED IDEOGRAPH-53CCSQUARED KATAKANA DESQUARED CJK UNIFIED ID" + + "EOGRAPH-4E8CSQUARED CJK UNIFIED IDEOGRAPH-591ASQUARED CJK UNIFIED IDEOGR" + + "APH-89E3SQUARED CJK UNIFIED IDEOGRAPH-5929SQUARED CJK UNIFIED IDEOGRAPH-" + + "4EA4SQUARED CJK UNIFIED IDEOGRAPH-6620SQUARED CJK UNIFIED IDEOGRAPH-7121" + + "SQUARED CJK UNIFIED IDEOGRAPH-6599SQUARED CJK UNIFIED IDEOGRAPH-524DSQUA" + + "RED CJK UNIFIED IDEOGRAPH-5F8CSQUARED CJK UNIFIED IDEOGRAPH-518DSQUARED " + + "CJK UNIFIED IDEOGRAPH-65B0SQUARED CJK UNIFIED IDEOGRAPH-521DSQUARED CJK " + + "UNIFIED IDEOGRAPH-7D42SQUARED CJK UNIFIED IDEOGRAPH-751FSQUARED CJK UNIF" + + "IED IDEOGRAPH-8CA9SQUARED CJK UNIFIED IDEOGRAPH-58F0SQUARED CJK UNIFIED " + + "IDEOGRAPH-5439SQUARED CJK UNIFIED IDEOGRAPH-6F14SQUARED CJK UNIFIED IDEO" + + "GRAPH-6295SQUARED CJK UNIFIED IDEOGRAPH-6355SQUARED CJK UNIFIED IDEOGRAP") + ("" + + "H-4E00SQUARED CJK UNIFIED IDEOGRAPH-4E09SQUARED CJK UNIFIED IDEOGRAPH-90" + + "4ASQUARED CJK UNIFIED IDEOGRAPH-5DE6SQUARED CJK UNIFIED IDEOGRAPH-4E2DSQ" + + "UARED CJK UNIFIED IDEOGRAPH-53F3SQUARED CJK UNIFIED IDEOGRAPH-6307SQUARE" + + "D CJK UNIFIED IDEOGRAPH-8D70SQUARED CJK UNIFIED IDEOGRAPH-6253SQUARED CJ" + + "K UNIFIED IDEOGRAPH-7981SQUARED CJK UNIFIED IDEOGRAPH-7A7ASQUARED CJK UN" + + "IFIED IDEOGRAPH-5408SQUARED CJK UNIFIED IDEOGRAPH-6E80SQUARED CJK UNIFIE" + + "D IDEOGRAPH-6709SQUARED CJK UNIFIED IDEOGRAPH-6708SQUARED CJK UNIFIED ID" + + "EOGRAPH-7533SQUARED CJK UNIFIED IDEOGRAPH-5272SQUARED CJK UNIFIED IDEOGR" + + "APH-55B6SQUARED CJK UNIFIED IDEOGRAPH-914DTORTOISE SHELL BRACKETED CJK U" + + "NIFIED IDEOGRAPH-672CTORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09" + + "TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8CTORTOISE SHELL BRACKE" + + "TED CJK UNIFIED IDEOGRAPH-5B89TORTOISE SHELL BRACKETED CJK UNIFIED IDEOG" + + "RAPH-70B9TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253TORTOISE SHE" + + "LL BRACKETED CJK UNIFIED IDEOGRAPH-76D7TORTOISE SHELL BRACKETED CJK UNIF" + + "IED IDEOGRAPH-52DDTORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557CIR" + + "CLED IDEOGRAPH ADVANTAGECIRCLED IDEOGRAPH ACCEPTCYCLONEFOGGYCLOSED UMBRE" + + "LLANIGHT WITH STARSSUNRISE OVER MOUNTAINSSUNRISECITYSCAPE AT DUSKSUNSET " + + "OVER BUILDINGSRAINBOWBRIDGE AT NIGHTWATER WAVEVOLCANOMILKY WAYEARTH GLOB" + + "E EUROPE-AFRICAEARTH GLOBE AMERICASEARTH GLOBE ASIA-AUSTRALIAGLOBE WITH " + + "MERIDIANSNEW MOON SYMBOLWAXING CRESCENT MOON SYMBOLFIRST QUARTER MOON SY" + + "MBOLWAXING GIBBOUS MOON SYMBOLFULL MOON SYMBOLWANING GIBBOUS MOON SYMBOL" + + "LAST QUARTER MOON SYMBOLWANING CRESCENT MOON SYMBOLCRESCENT MOONNEW MOON" + + " WITH FACEFIRST QUARTER MOON WITH FACELAST QUARTER MOON WITH FACEFULL MO" + + "ON WITH FACESUN WITH FACEGLOWING STARSHOOTING STARTHERMOMETERBLACK DROPL" + + "ETWHITE SUNWHITE SUN WITH SMALL CLOUDWHITE SUN BEHIND CLOUDWHITE SUN BEH" + + "IND CLOUD WITH RAINCLOUD WITH RAINCLOUD WITH SNOWCLOUD WITH LIGHTNINGCLO" + + "UD WITH TORNADOFOGWIND BLOWING FACEHOT DOGTACOBURRITOCHESTNUTSEEDLINGEVE" + + "RGREEN TREEDECIDUOUS TREEPALM TREECACTUSHOT PEPPERTULIPCHERRY BLOSSOMROS" + + "EHIBISCUSSUNFLOWERBLOSSOMEAR OF MAIZEEAR OF RICEHERBFOUR LEAF CLOVERMAPL" + + "E LEAFFALLEN LEAFLEAF FLUTTERING IN WINDMUSHROOMTOMATOAUBERGINEGRAPESMEL" + + "ONWATERMELONTANGERINELEMONBANANAPINEAPPLERED APPLEGREEN APPLEPEARPEACHCH" + + "ERRIESSTRAWBERRYHAMBURGERSLICE OF PIZZAMEAT ON BONEPOULTRY LEGRICE CRACK" + + "ERRICE BALLCOOKED RICECURRY AND RICESTEAMING BOWLSPAGHETTIBREADFRENCH FR" + + "IESROASTED SWEET POTATODANGOODENSUSHIFRIED SHRIMPFISH CAKE WITH SWIRL DE" + + "SIGNSOFT ICE CREAMSHAVED ICEICE CREAMDOUGHNUTCOOKIECHOCOLATE BARCANDYLOL" + + "LIPOPCUSTARDHONEY POTSHORTCAKEBENTO BOXPOT OF FOODCOOKINGFORK AND KNIFET" + + "EACUP WITHOUT HANDLESAKE BOTTLE AND CUPWINE GLASSCOCKTAIL GLASSTROPICAL " + + "DRINKBEER MUGCLINKING BEER MUGSBABY BOTTLEFORK AND KNIFE WITH PLATEBOTTL" + + "E WITH POPPING CORKPOPCORNRIBBONWRAPPED PRESENTBIRTHDAY CAKEJACK-O-LANTE" + + "RNCHRISTMAS TREEFATHER CHRISTMASFIREWORKSFIREWORK SPARKLERBALLOONPARTY P" + + "OPPERCONFETTI BALLTANABATA TREECROSSED FLAGSPINE DECORATIONJAPANESE DOLL" + + "SCARP STREAMERWIND CHIMEMOON VIEWING CEREMONYSCHOOL SATCHELGRADUATION CA" + + "PHEART WITH TIP ON THE LEFTBOUQUET OF FLOWERSMILITARY MEDALREMINDER RIBB" + + "ONMUSICAL KEYBOARD WITH JACKSSTUDIO MICROPHONELEVEL SLIDERCONTROL KNOBSB" + + "EAMED ASCENDING MUSICAL NOTESBEAMED DESCENDING MUSICAL NOTESFILM FRAMESA" + + "DMISSION TICKETSCAROUSEL HORSEFERRIS WHEELROLLER COASTERFISHING POLE AND" + + " FISHMICROPHONEMOVIE CAMERACINEMAHEADPHONEARTIST PALETTETOP HATCIRCUS TE" + + "NTTICKETCLAPPER BOARDPERFORMING ARTSVIDEO GAMEDIRECT HITSLOT MACHINEBILL" + + "IARDSGAME DIEBOWLINGFLOWER PLAYING CARDSMUSICAL NOTEMULTIPLE MUSICAL NOT" + + "ESSAXOPHONEGUITARMUSICAL KEYBOARDTRUMPETVIOLINMUSICAL SCORERUNNING SHIRT" + + " WITH SASHTENNIS RACQUET AND BALLSKI AND SKI BOOTBASKETBALL AND HOOPCHEQ" + + "UERED FLAGSNOWBOARDERRUNNERSURFERSPORTS MEDALTROPHYHORSE RACINGAMERICAN " + + "FOOTBALLRUGBY FOOTBALLSWIMMERWEIGHT LIFTERGOLFERRACING MOTORCYCLERACING " + + "CARCRICKET BAT AND BALLVOLLEYBALLFIELD HOCKEY STICK AND BALLICE HOCKEY S" + + "TICK AND PUCKTABLE TENNIS PADDLE AND BALLSNOW CAPPED MOUNTAINCAMPINGBEAC" + + "H WITH UMBRELLABUILDING CONSTRUCTIONHOUSE BUILDINGSCITYSCAPEDERELICT HOU" + + "SE BUILDINGCLASSICAL BUILDINGDESERTDESERT ISLANDNATIONAL PARKSTADIUMHOUS" + + "E BUILDINGHOUSE WITH GARDENOFFICE BUILDINGJAPANESE POST OFFICEEUROPEAN P" + + "OST OFFICEHOSPITALBANKAUTOMATED TELLER MACHINEHOTELLOVE HOTELCONVENIENCE" + + " STORESCHOOLDEPARTMENT STOREFACTORYIZAKAYA LANTERNJAPANESE CASTLEEUROPEA" + + "N CASTLEWHITE PENNANTBLACK PENNANTWAVING WHITE FLAGWAVING BLACK FLAGROSE" + + "TTEBLACK ROSETTELABELBADMINTON RACQUET AND SHUTTLECOCKBOW AND ARROWAMPHO" + + "RAEMOJI MODIFIER FITZPATRICK TYPE-1-2EMOJI MODIFIER FITZPATRICK TYPE-3EM" + + "OJI MODIFIER FITZPATRICK TYPE-4EMOJI MODIFIER FITZPATRICK TYPE-5EMOJI MO") + ("" + + "DIFIER FITZPATRICK TYPE-6RATMOUSEOXWATER BUFFALOCOWTIGERLEOPARDRABBITCAT" + + "DRAGONCROCODILEWHALESNAILSNAKEHORSERAMGOATSHEEPMONKEYROOSTERCHICKENDOGPI" + + "GBOARELEPHANTOCTOPUSSPIRAL SHELLBUGANTHONEYBEELADY BEETLEFISHTROPICAL FI" + + "SHBLOWFISHTURTLEHATCHING CHICKBABY CHICKFRONT-FACING BABY CHICKBIRDPENGU" + + "INKOALAPOODLEDROMEDARY CAMELBACTRIAN CAMELDOLPHINMOUSE FACECOW FACETIGER" + + " FACERABBIT FACECAT FACEDRAGON FACESPOUTING WHALEHORSE FACEMONKEY FACEDO" + + "G FACEPIG FACEFROG FACEHAMSTER FACEWOLF FACEBEAR FACEPANDA FACEPIG NOSEP" + + "AW PRINTSCHIPMUNKEYESEYEEARNOSEMOUTHTONGUEWHITE UP POINTING BACKHAND IND" + + "EXWHITE DOWN POINTING BACKHAND INDEXWHITE LEFT POINTING BACKHAND INDEXWH" + + "ITE RIGHT POINTING BACKHAND INDEXFISTED HAND SIGNWAVING HAND SIGNOK HAND" + + " SIGNTHUMBS UP SIGNTHUMBS DOWN SIGNCLAPPING HANDS SIGNOPEN HANDS SIGNCRO" + + "WNWOMANS HATEYEGLASSESNECKTIET-SHIRTJEANSDRESSKIMONOBIKINIWOMANS CLOTHES" + + "PURSEHANDBAGPOUCHMANS SHOEATHLETIC SHOEHIGH-HEELED SHOEWOMANS SANDALWOMA" + + "NS BOOTSFOOTPRINTSBUST IN SILHOUETTEBUSTS IN SILHOUETTEBOYGIRLMANWOMANFA" + + "MILYMAN AND WOMAN HOLDING HANDSTWO MEN HOLDING HANDSTWO WOMEN HOLDING HA" + + "NDSPOLICE OFFICERWOMAN WITH BUNNY EARSBRIDE WITH VEILPERSON WITH BLOND H" + + "AIRMAN WITH GUA PI MAOMAN WITH TURBANOLDER MANOLDER WOMANBABYCONSTRUCTIO" + + "N WORKERPRINCESSJAPANESE OGREJAPANESE GOBLINGHOSTBABY ANGELEXTRATERRESTR" + + "IAL ALIENALIEN MONSTERIMPSKULLINFORMATION DESK PERSONGUARDSMANDANCERLIPS" + + "TICKNAIL POLISHFACE MASSAGEHAIRCUTBARBER POLESYRINGEPILLKISS MARKLOVE LE" + + "TTERRINGGEM STONEKISSBOUQUETCOUPLE WITH HEARTWEDDINGBEATING HEARTBROKEN " + + "HEARTTWO HEARTSSPARKLING HEARTGROWING HEARTHEART WITH ARROWBLUE HEARTGRE" + + "EN HEARTYELLOW HEARTPURPLE HEARTHEART WITH RIBBONREVOLVING HEARTSHEART D" + + "ECORATIONDIAMOND SHAPE WITH A DOT INSIDEELECTRIC LIGHT BULBANGER SYMBOLB" + + "OMBSLEEPING SYMBOLCOLLISION SYMBOLSPLASHING SWEAT SYMBOLDROPLETDASH SYMB" + + "OLPILE OF POOFLEXED BICEPSDIZZY SYMBOLSPEECH BALLOONTHOUGHT BALLOONWHITE" + + " FLOWERHUNDRED POINTS SYMBOLMONEY BAGCURRENCY EXCHANGEHEAVY DOLLAR SIGNC" + + "REDIT CARDBANKNOTE WITH YEN SIGNBANKNOTE WITH DOLLAR SIGNBANKNOTE WITH E" + + "URO SIGNBANKNOTE WITH POUND SIGNMONEY WITH WINGSCHART WITH UPWARDS TREND" + + " AND YEN SIGNSEATPERSONAL COMPUTERBRIEFCASEMINIDISCFLOPPY DISKOPTICAL DI" + + "SCDVDFILE FOLDEROPEN FILE FOLDERPAGE WITH CURLPAGE FACING UPCALENDARTEAR" + + "-OFF CALENDARCARD INDEXCHART WITH UPWARDS TRENDCHART WITH DOWNWARDS TREN" + + "DBAR CHARTCLIPBOARDPUSHPINROUND PUSHPINPAPERCLIPSTRAIGHT RULERTRIANGULAR" + + " RULERBOOKMARK TABSLEDGERNOTEBOOKNOTEBOOK WITH DECORATIVE COVERCLOSED BO" + + "OKOPEN BOOKGREEN BOOKBLUE BOOKORANGE BOOKBOOKSNAME BADGESCROLLMEMOTELEPH" + + "ONE RECEIVERPAGERFAX MACHINESATELLITE ANTENNAPUBLIC ADDRESS LOUDSPEAKERC" + + "HEERING MEGAPHONEOUTBOX TRAYINBOX TRAYPACKAGEE-MAIL SYMBOLINCOMING ENVEL" + + "OPEENVELOPE WITH DOWNWARDS ARROW ABOVECLOSED MAILBOX WITH LOWERED FLAGCL" + + "OSED MAILBOX WITH RAISED FLAGOPEN MAILBOX WITH RAISED FLAGOPEN MAILBOX W" + + "ITH LOWERED FLAGPOSTBOXPOSTAL HORNNEWSPAPERMOBILE PHONEMOBILE PHONE WITH" + + " RIGHTWARDS ARROW AT LEFTVIBRATION MODEMOBILE PHONE OFFNO MOBILE PHONESA" + + "NTENNA WITH BARSCAMERACAMERA WITH FLASHVIDEO CAMERATELEVISIONRADIOVIDEOC" + + "ASSETTEFILM PROJECTORPORTABLE STEREOPRAYER BEADSTWISTED RIGHTWARDS ARROW" + + "SCLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWSCLOCKWISE RIGHTWAR" + + "DS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAYCLOCKWISE DO" + + "WNWARDS AND UPWARDS OPEN CIRCLE ARROWSANTICLOCKWISE DOWNWARDS AND UPWARD" + + "S OPEN CIRCLE ARROWSLOW BRIGHTNESS SYMBOLHIGH BRIGHTNESS SYMBOLSPEAKER W" + + "ITH CANCELLATION STROKESPEAKERSPEAKER WITH ONE SOUND WAVESPEAKER WITH TH" + + "REE SOUND WAVESBATTERYELECTRIC PLUGLEFT-POINTING MAGNIFYING GLASSRIGHT-P" + + "OINTING MAGNIFYING GLASSLOCK WITH INK PENCLOSED LOCK WITH KEYKEYLOCKOPEN" + + " LOCKBELLBELL WITH CANCELLATION STROKEBOOKMARKLINK SYMBOLRADIO BUTTONBAC" + + "K WITH LEFTWARDS ARROW ABOVEEND WITH LEFTWARDS ARROW ABOVEON WITH EXCLAM" + + "ATION MARK WITH LEFT RIGHT ARROW ABOVESOON WITH RIGHTWARDS ARROW ABOVETO" + + "P WITH UPWARDS ARROW ABOVENO ONE UNDER EIGHTEEN SYMBOLKEYCAP TENINPUT SY" + + "MBOL FOR LATIN CAPITAL LETTERSINPUT SYMBOL FOR LATIN SMALL LETTERSINPUT " + + "SYMBOL FOR NUMBERSINPUT SYMBOL FOR SYMBOLSINPUT SYMBOL FOR LATIN LETTERS" + + "FIREELECTRIC TORCHWRENCHHAMMERNUT AND BOLTHOCHOPISTOLMICROSCOPETELESCOPE" + + "CRYSTAL BALLSIX POINTED STAR WITH MIDDLE DOTJAPANESE SYMBOL FOR BEGINNER" + + "TRIDENT EMBLEMBLACK SQUARE BUTTONWHITE SQUARE BUTTONLARGE RED CIRCLELARG" + + "E BLUE CIRCLELARGE ORANGE DIAMONDLARGE BLUE DIAMONDSMALL ORANGE DIAMONDS" + + "MALL BLUE DIAMONDUP-POINTING RED TRIANGLEDOWN-POINTING RED TRIANGLEUP-PO" + + "INTING SMALL RED TRIANGLEDOWN-POINTING SMALL RED TRIANGLELOWER RIGHT SHA" + + "DOWED WHITE CIRCLEUPPER RIGHT SHADOWED WHITE CIRCLECIRCLED CROSS POMMEEC" + + "ROSS POMMEE WITH HALF-CIRCLE BELOWCROSS POMMEENOTCHED LEFT SEMICIRCLE WI") + ("" + + "TH THREE DOTSNOTCHED RIGHT SEMICIRCLE WITH THREE DOTSSYMBOL FOR MARKS CH" + + "APTERWHITE LATIN CROSSHEAVY LATIN CROSSCELTIC CROSSOM SYMBOLDOVE OF PEAC" + + "EKAABAMOSQUESYNAGOGUEMENORAH WITH NINE BRANCHESBOWL OF HYGIEIACLOCK FACE" + + " ONE OCLOCKCLOCK FACE TWO OCLOCKCLOCK FACE THREE OCLOCKCLOCK FACE FOUR O" + + "CLOCKCLOCK FACE FIVE OCLOCKCLOCK FACE SIX OCLOCKCLOCK FACE SEVEN OCLOCKC" + + "LOCK FACE EIGHT OCLOCKCLOCK FACE NINE OCLOCKCLOCK FACE TEN OCLOCKCLOCK F" + + "ACE ELEVEN OCLOCKCLOCK FACE TWELVE OCLOCKCLOCK FACE ONE-THIRTYCLOCK FACE" + + " TWO-THIRTYCLOCK FACE THREE-THIRTYCLOCK FACE FOUR-THIRTYCLOCK FACE FIVE-" + + "THIRTYCLOCK FACE SIX-THIRTYCLOCK FACE SEVEN-THIRTYCLOCK FACE EIGHT-THIRT" + + "YCLOCK FACE NINE-THIRTYCLOCK FACE TEN-THIRTYCLOCK FACE ELEVEN-THIRTYCLOC" + + "K FACE TWELVE-THIRTYRIGHT SPEAKERRIGHT SPEAKER WITH ONE SOUND WAVERIGHT " + + "SPEAKER WITH THREE SOUND WAVESBULLHORNBULLHORN WITH SOUND WAVESRINGING B" + + "ELLBOOKCANDLEMANTELPIECE CLOCKBLACK SKULL AND CROSSBONESNO PIRACYHOLEMAN" + + " IN BUSINESS SUIT LEVITATINGSLEUTH OR SPYDARK SUNGLASSESSPIDERSPIDER WEB" + + "JOYSTICKMAN DANCINGLEFT HAND TELEPHONE RECEIVERTELEPHONE RECEIVER WITH P" + + "AGERIGHT HAND TELEPHONE RECEIVERWHITE TOUCHTONE TELEPHONEBLACK TOUCHTONE" + + " TELEPHONETELEPHONE ON TOP OF MODEMCLAMSHELL MOBILE PHONEBACK OF ENVELOP" + + "ESTAMPED ENVELOPEENVELOPE WITH LIGHTNINGFLYING ENVELOPEPEN OVER STAMPED " + + "ENVELOPELINKED PAPERCLIPSBLACK PUSHPINLOWER LEFT PENCILLOWER LEFT BALLPO" + + "INT PENLOWER LEFT FOUNTAIN PENLOWER LEFT PAINTBRUSHLOWER LEFT CRAYONLEFT" + + " WRITING HANDTURNED OK HAND SIGNRAISED HAND WITH FINGERS SPLAYEDREVERSED" + + " RAISED HAND WITH FINGERS SPLAYEDREVERSED THUMBS UP SIGNREVERSED THUMBS " + + "DOWN SIGNREVERSED VICTORY HANDREVERSED HAND WITH MIDDLE FINGER EXTENDEDR" + + "AISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERSWHITE DOWN POINTING " + + "LEFT HAND INDEXSIDEWAYS WHITE LEFT POINTING INDEXSIDEWAYS WHITE RIGHT PO" + + "INTING INDEXSIDEWAYS BLACK LEFT POINTING INDEXSIDEWAYS BLACK RIGHT POINT" + + "ING INDEXBLACK LEFT POINTING BACKHAND INDEXBLACK RIGHT POINTING BACKHAND" + + " INDEXSIDEWAYS WHITE UP POINTING INDEXSIDEWAYS WHITE DOWN POINTING INDEX" + + "SIDEWAYS BLACK UP POINTING INDEXSIDEWAYS BLACK DOWN POINTING INDEXBLACK " + + "UP POINTING BACKHAND INDEXBLACK DOWN POINTING BACKHAND INDEXBLACK HEARTD" + + "ESKTOP COMPUTERKEYBOARD AND MOUSETHREE NETWORKED COMPUTERSPRINTERPOCKET " + + "CALCULATORBLACK HARD SHELL FLOPPY DISKWHITE HARD SHELL FLOPPY DISKSOFT S" + + "HELL FLOPPY DISKTAPE CARTRIDGEWIRED KEYBOARDONE BUTTON MOUSETWO BUTTON M" + + "OUSETHREE BUTTON MOUSETRACKBALLOLD PERSONAL COMPUTERHARD DISKSCREENPRINT" + + "ER ICONFAX ICONOPTICAL DISC ICONDOCUMENT WITH TEXTDOCUMENT WITH TEXT AND" + + " PICTUREDOCUMENT WITH PICTUREFRAME WITH PICTUREFRAME WITH TILESFRAME WIT" + + "H AN XBLACK FOLDERFOLDEROPEN FOLDERCARD INDEX DIVIDERSCARD FILE BOXFILE " + + "CABINETEMPTY NOTEEMPTY NOTE PAGEEMPTY NOTE PADNOTENOTE PAGENOTE PADEMPTY" + + " DOCUMENTEMPTY PAGEEMPTY PAGESDOCUMENTPAGEPAGESWASTEBASKETSPIRAL NOTE PA" + + "DSPIRAL CALENDAR PADDESKTOP WINDOWMINIMIZEMAXIMIZEOVERLAPCLOCKWISE RIGHT" + + " AND LEFT SEMICIRCLE ARROWSCANCELLATION XINCREASE FONT SIZE SYMBOLDECREA" + + "SE FONT SIZE SYMBOLCOMPRESSIONOLD KEYROLLED-UP NEWSPAPERPAGE WITH CIRCLE" + + "D TEXTSTOCK CHARTDAGGER KNIFELIPSSPEAKING HEAD IN SILHOUETTETHREE RAYS A" + + "BOVETHREE RAYS BELOWTHREE RAYS LEFTTHREE RAYS RIGHTLEFT SPEECH BUBBLERIG" + + "HT SPEECH BUBBLETWO SPEECH BUBBLESTHREE SPEECH BUBBLESLEFT THOUGHT BUBBL" + + "ERIGHT THOUGHT BUBBLELEFT ANGER BUBBLERIGHT ANGER BUBBLEMOOD BUBBLELIGHT" + + "NING MOOD BUBBLELIGHTNING MOODBALLOT BOX WITH BALLOTBALLOT SCRIPT XBALLO" + + "T BOX WITH SCRIPT XBALLOT BOLD SCRIPT XBALLOT BOX WITH BOLD SCRIPT XLIGH" + + "T CHECK MARKBALLOT BOX WITH BOLD CHECKWORLD MAPMOUNT FUJITOKYO TOWERSTAT" + + "UE OF LIBERTYSILHOUETTE OF JAPANMOYAIGRINNING FACEGRINNING FACE WITH SMI" + + "LING EYESFACE WITH TEARS OF JOYSMILING FACE WITH OPEN MOUTHSMILING FACE " + + "WITH OPEN MOUTH AND SMILING EYESSMILING FACE WITH OPEN MOUTH AND COLD SW" + + "EATSMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYESSMILING FACE WITH" + + " HALOSMILING FACE WITH HORNSWINKING FACESMILING FACE WITH SMILING EYESFA" + + "CE SAVOURING DELICIOUS FOODRELIEVED FACESMILING FACE WITH HEART-SHAPED E" + + "YESSMILING FACE WITH SUNGLASSESSMIRKING FACENEUTRAL FACEEXPRESSIONLESS F" + + "ACEUNAMUSED FACEFACE WITH COLD SWEATPENSIVE FACECONFUSED FACECONFOUNDED " + + "FACEKISSING FACEFACE THROWING A KISSKISSING FACE WITH SMILING EYESKISSIN" + + "G FACE WITH CLOSED EYESFACE WITH STUCK-OUT TONGUEFACE WITH STUCK-OUT TON" + + "GUE AND WINKING EYEFACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYESDIS" + + "APPOINTED FACEWORRIED FACEANGRY FACEPOUTING FACECRYING FACEPERSEVERING F" + + "ACEFACE WITH LOOK OF TRIUMPHDISAPPOINTED BUT RELIEVED FACEFROWNING FACE " + + "WITH OPEN MOUTHANGUISHED FACEFEARFUL FACEWEARY FACESLEEPY FACETIRED FACE" + + "GRIMACING FACELOUDLY CRYING FACEFACE WITH OPEN MOUTHHUSHED FACEFACE WITH") + ("" + + " OPEN MOUTH AND COLD SWEATFACE SCREAMING IN FEARASTONISHED FACEFLUSHED F" + + "ACESLEEPING FACEDIZZY FACEFACE WITHOUT MOUTHFACE WITH MEDICAL MASKGRINNI" + + "NG CAT FACE WITH SMILING EYESCAT FACE WITH TEARS OF JOYSMILING CAT FACE " + + "WITH OPEN MOUTHSMILING CAT FACE WITH HEART-SHAPED EYESCAT FACE WITH WRY " + + "SMILEKISSING CAT FACE WITH CLOSED EYESPOUTING CAT FACECRYING CAT FACEWEA" + + "RY CAT FACESLIGHTLY FROWNING FACESLIGHTLY SMILING FACEUPSIDE-DOWN FACEFA" + + "CE WITH ROLLING EYESFACE WITH NO GOOD GESTUREFACE WITH OK GESTUREPERSON " + + "BOWING DEEPLYSEE-NO-EVIL MONKEYHEAR-NO-EVIL MONKEYSPEAK-NO-EVIL MONKEYHA" + + "PPY PERSON RAISING ONE HANDPERSON RAISING BOTH HANDS IN CELEBRATIONPERSO" + + "N FROWNINGPERSON WITH POUTING FACEPERSON WITH FOLDED HANDSNORTH WEST POI" + + "NTING LEAFSOUTH WEST POINTING LEAFNORTH EAST POINTING LEAFSOUTH EAST POI" + + "NTING LEAFTURNED NORTH WEST POINTING LEAFTURNED SOUTH WEST POINTING LEAF" + + "TURNED NORTH EAST POINTING LEAFTURNED SOUTH EAST POINTING LEAFNORTH WEST" + + " POINTING VINE LEAFSOUTH WEST POINTING VINE LEAFNORTH EAST POINTING VINE" + + " LEAFSOUTH EAST POINTING VINE LEAFHEAVY NORTH WEST POINTING VINE LEAFHEA" + + "VY SOUTH WEST POINTING VINE LEAFHEAVY NORTH EAST POINTING VINE LEAFHEAVY" + + " SOUTH EAST POINTING VINE LEAFNORTH WEST POINTING BUDSOUTH WEST POINTING" + + " BUDNORTH EAST POINTING BUDSOUTH EAST POINTING BUDHEAVY NORTH WEST POINT" + + "ING BUDHEAVY SOUTH WEST POINTING BUDHEAVY NORTH EAST POINTING BUDHEAVY S" + + "OUTH EAST POINTING BUDHOLLOW QUILT SQUARE ORNAMENTHOLLOW QUILT SQUARE OR" + + "NAMENT IN BLACK SQUARESOLID QUILT SQUARE ORNAMENTSOLID QUILT SQUARE ORNA" + + "MENT IN BLACK SQUARELEFTWARDS ROCKETUPWARDS ROCKETRIGHTWARDS ROCKETDOWNW" + + "ARDS ROCKETSCRIPT LIGATURE ET ORNAMENTHEAVY SCRIPT LIGATURE ET ORNAMENTL" + + "IGATURE OPEN ET ORNAMENTHEAVY LIGATURE OPEN ET ORNAMENTHEAVY AMPERSAND O" + + "RNAMENTSWASH AMPERSAND ORNAMENTSANS-SERIF HEAVY DOUBLE TURNED COMMA QUOT" + + "ATION MARK ORNAMENTSANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT" + + "SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENTHEAVY INTERROBA" + + "NG ORNAMENTSANS-SERIF INTERROBANG ORNAMENTHEAVY SANS-SERIF INTERROBANG O" + + "RNAMENTVERY HEAVY SOLIDUSVERY HEAVY REVERSE SOLIDUSCHECKER BOARDREVERSE " + + "CHECKER BOARDROCKETHELICOPTERSTEAM LOCOMOTIVERAILWAY CARHIGH-SPEED TRAIN" + + "HIGH-SPEED TRAIN WITH BULLET NOSETRAINMETROLIGHT RAILSTATIONTRAMTRAM CAR" + + "BUSONCOMING BUSTROLLEYBUSBUS STOPMINIBUSAMBULANCEFIRE ENGINEPOLICE CARON" + + "COMING POLICE CARTAXIONCOMING TAXIAUTOMOBILEONCOMING AUTOMOBILERECREATIO" + + "NAL VEHICLEDELIVERY TRUCKARTICULATED LORRYTRACTORMONORAILMOUNTAIN RAILWA" + + "YSUSPENSION RAILWAYMOUNTAIN CABLEWAYAERIAL TRAMWAYSHIPROWBOATSPEEDBOATHO" + + "RIZONTAL TRAFFIC LIGHTVERTICAL TRAFFIC LIGHTCONSTRUCTION SIGNPOLICE CARS" + + " REVOLVING LIGHTTRIANGULAR FLAG ON POSTDOORNO ENTRY SIGNSMOKING SYMBOLNO" + + " SMOKING SYMBOLPUT LITTER IN ITS PLACE SYMBOLDO NOT LITTER SYMBOLPOTABLE" + + " WATER SYMBOLNON-POTABLE WATER SYMBOLBICYCLENO BICYCLESBICYCLISTMOUNTAIN" + + " BICYCLISTPEDESTRIANNO PEDESTRIANSCHILDREN CROSSINGMENS SYMBOLWOMENS SYM" + + "BOLRESTROOMBABY SYMBOLTOILETWATER CLOSETSHOWERBATHBATHTUBPASSPORT CONTRO" + + "LCUSTOMSBAGGAGE CLAIMLEFT LUGGAGETRIANGLE WITH ROUNDED CORNERSPROHIBITED" + + " SIGNCIRCLED INFORMATION SOURCEBOYS SYMBOLGIRLS SYMBOLCOUCH AND LAMPSLEE" + + "PING ACCOMMODATIONSHOPPING BAGSBELLHOP BELLBEDPLACE OF WORSHIPOCTAGONAL " + + "SIGNSHOPPING TROLLEYHAMMER AND WRENCHSHIELDOIL DRUMMOTORWAYRAILWAY TRACK" + + "MOTOR BOATUP-POINTING MILITARY AIRPLANEUP-POINTING AIRPLANEUP-POINTING S" + + "MALL AIRPLANESMALL AIRPLANENORTHEAST-POINTING AIRPLANEAIRPLANE DEPARTURE" + + "AIRPLANE ARRIVINGSATELLITEONCOMING FIRE ENGINEDIESEL LOCOMOTIVEPASSENGER" + + " SHIPSCOOTERMOTOR SCOOTERCANOEALCHEMICAL SYMBOL FOR QUINTESSENCEALCHEMIC" + + "AL SYMBOL FOR AIRALCHEMICAL SYMBOL FOR FIREALCHEMICAL SYMBOL FOR EARTHAL" + + "CHEMICAL SYMBOL FOR WATERALCHEMICAL SYMBOL FOR AQUAFORTISALCHEMICAL SYMB" + + "OL FOR AQUA REGIAALCHEMICAL SYMBOL FOR AQUA REGIA-2ALCHEMICAL SYMBOL FOR" + + " AQUA VITAEALCHEMICAL SYMBOL FOR AQUA VITAE-2ALCHEMICAL SYMBOL FOR VINEG" + + "ARALCHEMICAL SYMBOL FOR VINEGAR-2ALCHEMICAL SYMBOL FOR VINEGAR-3ALCHEMIC" + + "AL SYMBOL FOR SULFURALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFURALCHEMICAL " + + "SYMBOL FOR BLACK SULFURALCHEMICAL SYMBOL FOR MERCURY SUBLIMATEALCHEMICAL" + + " SYMBOL FOR MERCURY SUBLIMATE-2ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3" + + "ALCHEMICAL SYMBOL FOR CINNABARALCHEMICAL SYMBOL FOR SALTALCHEMICAL SYMBO" + + "L FOR NITREALCHEMICAL SYMBOL FOR VITRIOLALCHEMICAL SYMBOL FOR VITRIOL-2A" + + "LCHEMICAL SYMBOL FOR ROCK SALTALCHEMICAL SYMBOL FOR ROCK SALT-2ALCHEMICA" + + "L SYMBOL FOR GOLDALCHEMICAL SYMBOL FOR SILVERALCHEMICAL SYMBOL FOR IRON " + + "OREALCHEMICAL SYMBOL FOR IRON ORE-2ALCHEMICAL SYMBOL FOR CROCUS OF IRONA" + + "LCHEMICAL SYMBOL FOR REGULUS OF IRONALCHEMICAL SYMBOL FOR COPPER OREALCH" + + "EMICAL SYMBOL FOR IRON-COPPER OREALCHEMICAL SYMBOL FOR SUBLIMATE OF COPP") + ("" + + "ERALCHEMICAL SYMBOL FOR CROCUS OF COPPERALCHEMICAL SYMBOL FOR CROCUS OF " + + "COPPER-2ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATEALCHEMICAL SYMBOL FOR SA" + + "LT OF COPPER ANTIMONIATEALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPE" + + "RALCHEMICAL SYMBOL FOR VERDIGRISALCHEMICAL SYMBOL FOR TIN OREALCHEMICAL " + + "SYMBOL FOR LEAD OREALCHEMICAL SYMBOL FOR ANTIMONY OREALCHEMICAL SYMBOL F" + + "OR SUBLIMATE OF ANTIMONYALCHEMICAL SYMBOL FOR SALT OF ANTIMONYALCHEMICAL" + + " SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONYALCHEMICAL SYMBOL FOR VINEGAR O" + + "F ANTIMONYALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONYALCHEMICAL SYMBOL FOR" + + " REGULUS OF ANTIMONY-2ALCHEMICAL SYMBOL FOR REGULUSALCHEMICAL SYMBOL FOR" + + " REGULUS-2ALCHEMICAL SYMBOL FOR REGULUS-3ALCHEMICAL SYMBOL FOR REGULUS-4" + + "ALCHEMICAL SYMBOL FOR ALKALIALCHEMICAL SYMBOL FOR ALKALI-2ALCHEMICAL SYM" + + "BOL FOR MARCASITEALCHEMICAL SYMBOL FOR SAL-AMMONIACALCHEMICAL SYMBOL FOR" + + " ARSENICALCHEMICAL SYMBOL FOR REALGARALCHEMICAL SYMBOL FOR REALGAR-2ALCH" + + "EMICAL SYMBOL FOR AURIPIGMENTALCHEMICAL SYMBOL FOR BISMUTH OREALCHEMICAL" + + " SYMBOL FOR TARTARALCHEMICAL SYMBOL FOR TARTAR-2ALCHEMICAL SYMBOL FOR QU" + + "ICK LIMEALCHEMICAL SYMBOL FOR BORAXALCHEMICAL SYMBOL FOR BORAX-2ALCHEMIC" + + "AL SYMBOL FOR BORAX-3ALCHEMICAL SYMBOL FOR ALUMALCHEMICAL SYMBOL FOR OIL" + + "ALCHEMICAL SYMBOL FOR SPIRITALCHEMICAL SYMBOL FOR TINCTUREALCHEMICAL SYM" + + "BOL FOR GUMALCHEMICAL SYMBOL FOR WAXALCHEMICAL SYMBOL FOR POWDERALCHEMIC" + + "AL SYMBOL FOR CALXALCHEMICAL SYMBOL FOR TUTTYALCHEMICAL SYMBOL FOR CAPUT" + + " MORTUUMALCHEMICAL SYMBOL FOR SCEPTER OF JOVEALCHEMICAL SYMBOL FOR CADUC" + + "EUSALCHEMICAL SYMBOL FOR TRIDENTALCHEMICAL SYMBOL FOR STARRED TRIDENTALC" + + "HEMICAL SYMBOL FOR LODESTONEALCHEMICAL SYMBOL FOR SOAPALCHEMICAL SYMBOL " + + "FOR URINEALCHEMICAL SYMBOL FOR HORSE DUNGALCHEMICAL SYMBOL FOR ASHESALCH" + + "EMICAL SYMBOL FOR POT ASHESALCHEMICAL SYMBOL FOR BRICKALCHEMICAL SYMBOL " + + "FOR POWDERED BRICKALCHEMICAL SYMBOL FOR AMALGAMALCHEMICAL SYMBOL FOR STR" + + "ATUM SUPER STRATUMALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2ALCHEMICA" + + "L SYMBOL FOR SUBLIMATIONALCHEMICAL SYMBOL FOR PRECIPITATEALCHEMICAL SYMB" + + "OL FOR DISTILLALCHEMICAL SYMBOL FOR DISSOLVEALCHEMICAL SYMBOL FOR DISSOL" + + "VE-2ALCHEMICAL SYMBOL FOR PURIFYALCHEMICAL SYMBOL FOR PUTREFACTIONALCHEM" + + "ICAL SYMBOL FOR CRUCIBLEALCHEMICAL SYMBOL FOR CRUCIBLE-2ALCHEMICAL SYMBO" + + "L FOR CRUCIBLE-3ALCHEMICAL SYMBOL FOR CRUCIBLE-4ALCHEMICAL SYMBOL FOR CR" + + "UCIBLE-5ALCHEMICAL SYMBOL FOR ALEMBICALCHEMICAL SYMBOL FOR BATH OF MARYA" + + "LCHEMICAL SYMBOL FOR BATH OF VAPOURSALCHEMICAL SYMBOL FOR RETORTALCHEMIC" + + "AL SYMBOL FOR HOURALCHEMICAL SYMBOL FOR NIGHTALCHEMICAL SYMBOL FOR DAY-N" + + "IGHTALCHEMICAL SYMBOL FOR MONTHALCHEMICAL SYMBOL FOR HALF DRAMALCHEMICAL" + + " SYMBOL FOR HALF OUNCEBLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLEBLACK " + + "UP-POINTING ISOSCELES RIGHT TRIANGLEBLACK RIGHT-POINTING ISOSCELES RIGHT" + + " TRIANGLEBLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLEBLACK SLIGHTLY SMAL" + + "L CIRCLEMEDIUM BOLD WHITE CIRCLEBOLD WHITE CIRCLEHEAVY WHITE CIRCLEVERY " + + "HEAVY WHITE CIRCLEEXTREMELY HEAVY WHITE CIRCLEWHITE CIRCLE CONTAINING BL" + + "ACK SMALL CIRCLEROUND TARGETBLACK TINY SQUAREBLACK SLIGHTLY SMALL SQUARE" + + "LIGHT WHITE SQUAREMEDIUM WHITE SQUAREBOLD WHITE SQUAREHEAVY WHITE SQUARE" + + "VERY HEAVY WHITE SQUAREEXTREMELY HEAVY WHITE SQUAREWHITE SQUARE CONTAINI" + + "NG BLACK VERY SMALL SQUAREWHITE SQUARE CONTAINING BLACK MEDIUM SQUARESQU" + + "ARE TARGETBLACK TINY DIAMONDBLACK VERY SMALL DIAMONDBLACK MEDIUM SMALL D" + + "IAMONDWHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMONDWHITE DIAMOND CON" + + "TAINING BLACK MEDIUM DIAMONDDIAMOND TARGETBLACK TINY LOZENGEBLACK VERY S" + + "MALL LOZENGEBLACK MEDIUM SMALL LOZENGEWHITE LOZENGE CONTAINING BLACK SMA" + + "LL LOZENGETHIN GREEK CROSSLIGHT GREEK CROSSMEDIUM GREEK CROSSBOLD GREEK " + + "CROSSVERY BOLD GREEK CROSSVERY HEAVY GREEK CROSSEXTREMELY HEAVY GREEK CR" + + "OSSTHIN SALTIRELIGHT SALTIREMEDIUM SALTIREBOLD SALTIREHEAVY SALTIREVERY " + + "HEAVY SALTIREEXTREMELY HEAVY SALTIRELIGHT FIVE SPOKED ASTERISKMEDIUM FIV" + + "E SPOKED ASTERISKBOLD FIVE SPOKED ASTERISKHEAVY FIVE SPOKED ASTERISKVERY" + + " HEAVY FIVE SPOKED ASTERISKEXTREMELY HEAVY FIVE SPOKED ASTERISKLIGHT SIX" + + " SPOKED ASTERISKMEDIUM SIX SPOKED ASTERISKBOLD SIX SPOKED ASTERISKHEAVY " + + "SIX SPOKED ASTERISKVERY HEAVY SIX SPOKED ASTERISKEXTREMELY HEAVY SIX SPO" + + "KED ASTERISKLIGHT EIGHT SPOKED ASTERISKMEDIUM EIGHT SPOKED ASTERISKBOLD " + + "EIGHT SPOKED ASTERISKHEAVY EIGHT SPOKED ASTERISKVERY HEAVY EIGHT SPOKED " + + "ASTERISKLIGHT THREE POINTED BLACK STARMEDIUM THREE POINTED BLACK STARTHR" + + "EE POINTED BLACK STARMEDIUM THREE POINTED PINWHEEL STARLIGHT FOUR POINTE" + + "D BLACK STARMEDIUM FOUR POINTED BLACK STARFOUR POINTED BLACK STARMEDIUM " + + "FOUR POINTED PINWHEEL STARREVERSE LIGHT FOUR POINTED PINWHEEL STARLIGHT " + + "FIVE POINTED BLACK STARHEAVY FIVE POINTED BLACK STARMEDIUM SIX POINTED B") + ("" + + "LACK STARHEAVY SIX POINTED BLACK STARSIX POINTED PINWHEEL STARMEDIUM EIG" + + "HT POINTED BLACK STARHEAVY EIGHT POINTED BLACK STARVERY HEAVY EIGHT POIN" + + "TED BLACK STARHEAVY EIGHT POINTED PINWHEEL STARLIGHT TWELVE POINTED BLAC" + + "K STARHEAVY TWELVE POINTED BLACK STARHEAVY TWELVE POINTED PINWHEEL STARL" + + "EFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEADUPWARDS ARROW WITH SMALL TRI" + + "ANGLE ARROWHEADRIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEADDOWNWARDS A" + + "RROW WITH SMALL TRIANGLE ARROWHEADLEFTWARDS ARROW WITH MEDIUM TRIANGLE A" + + "RROWHEADUPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEADRIGHTWARDS ARROW WIT" + + "H MEDIUM TRIANGLE ARROWHEADDOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEA" + + "DLEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEADUPWARDS ARROW WITH LARGE T" + + "RIANGLE ARROWHEADRIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEADDOWNWARDS" + + " ARROW WITH LARGE TRIANGLE ARROWHEADLEFTWARDS ARROW WITH SMALL EQUILATER" + + "AL ARROWHEADUPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEADRIGHTWARDS ARR" + + "OW WITH SMALL EQUILATERAL ARROWHEADDOWNWARDS ARROW WITH SMALL EQUILATERA" + + "L ARROWHEADLEFTWARDS ARROW WITH EQUILATERAL ARROWHEADUPWARDS ARROW WITH " + + "EQUILATERAL ARROWHEADRIGHTWARDS ARROW WITH EQUILATERAL ARROWHEADDOWNWARD" + + "S ARROW WITH EQUILATERAL ARROWHEADHEAVY LEFTWARDS ARROW WITH EQUILATERAL" + + " ARROWHEADHEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEADHEAVY RIGHTWARDS" + + " ARROW WITH EQUILATERAL ARROWHEADHEAVY DOWNWARDS ARROW WITH EQUILATERAL " + + "ARROWHEADHEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEADHEAVY UPW" + + "ARDS ARROW WITH LARGE EQUILATERAL ARROWHEADHEAVY RIGHTWARDS ARROW WITH L" + + "ARGE EQUILATERAL ARROWHEADHEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL A" + + "RROWHEADLEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFTUPWARDS TRIANGL" + + "E-HEADED ARROW WITH NARROW SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH NA" + + "RROW SHAFTDOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFTLEFTWARDS TRI" + + "ANGLE-HEADED ARROW WITH MEDIUM SHAFTUPWARDS TRIANGLE-HEADED ARROW WITH M" + + "EDIUM SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFTDOWNWARDS T" + + "RIANGLE-HEADED ARROW WITH MEDIUM SHAFTLEFTWARDS TRIANGLE-HEADED ARROW WI" + + "TH BOLD SHAFTUPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFTRIGHTWARDS TRI" + + "ANGLE-HEADED ARROW WITH BOLD SHAFTDOWNWARDS TRIANGLE-HEADED ARROW WITH B" + + "OLD SHAFTLEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFTUPWARDS TRIANGL" + + "E-HEADED ARROW WITH HEAVY SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH HEA" + + "VY SHAFTDOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFTLEFTWARDS TRIANG" + + "LE-HEADED ARROW WITH VERY HEAVY SHAFTUPWARDS TRIANGLE-HEADED ARROW WITH " + + "VERY HEAVY SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFTDO" + + "WNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFTLEFTWARDS FINGER-POST" + + " ARROWUPWARDS FINGER-POST ARROWRIGHTWARDS FINGER-POST ARROWDOWNWARDS FIN" + + "GER-POST ARROWLEFTWARDS SQUARED ARROWUPWARDS SQUARED ARROWRIGHTWARDS SQU" + + "ARED ARROWDOWNWARDS SQUARED ARROWLEFTWARDS COMPRESSED ARROWUPWARDS COMPR" + + "ESSED ARROWRIGHTWARDS COMPRESSED ARROWDOWNWARDS COMPRESSED ARROWLEFTWARD" + + "S HEAVY COMPRESSED ARROWUPWARDS HEAVY COMPRESSED ARROWRIGHTWARDS HEAVY C" + + "OMPRESSED ARROWDOWNWARDS HEAVY COMPRESSED ARROWLEFTWARDS HEAVY ARROWUPWA" + + "RDS HEAVY ARROWRIGHTWARDS HEAVY ARROWDOWNWARDS HEAVY ARROWLEFTWARDS SANS" + + "-SERIF ARROWUPWARDS SANS-SERIF ARROWRIGHTWARDS SANS-SERIF ARROWDOWNWARDS" + + " SANS-SERIF ARROWNORTH WEST SANS-SERIF ARROWNORTH EAST SANS-SERIF ARROWS" + + "OUTH EAST SANS-SERIF ARROWSOUTH WEST SANS-SERIF ARROWLEFT RIGHT SANS-SER" + + "IF ARROWUP DOWN SANS-SERIF ARROWWIDE-HEADED LEFTWARDS LIGHT BARB ARROWWI" + + "DE-HEADED UPWARDS LIGHT BARB ARROWWIDE-HEADED RIGHTWARDS LIGHT BARB ARRO" + + "WWIDE-HEADED DOWNWARDS LIGHT BARB ARROWWIDE-HEADED NORTH WEST LIGHT BARB" + + " ARROWWIDE-HEADED NORTH EAST LIGHT BARB ARROWWIDE-HEADED SOUTH EAST LIGH" + + "T BARB ARROWWIDE-HEADED SOUTH WEST LIGHT BARB ARROWWIDE-HEADED LEFTWARDS" + + " BARB ARROWWIDE-HEADED UPWARDS BARB ARROWWIDE-HEADED RIGHTWARDS BARB ARR" + + "OWWIDE-HEADED DOWNWARDS BARB ARROWWIDE-HEADED NORTH WEST BARB ARROWWIDE-" + + "HEADED NORTH EAST BARB ARROWWIDE-HEADED SOUTH EAST BARB ARROWWIDE-HEADED" + + " SOUTH WEST BARB ARROWWIDE-HEADED LEFTWARDS MEDIUM BARB ARROWWIDE-HEADED" + + " UPWARDS MEDIUM BARB ARROWWIDE-HEADED RIGHTWARDS MEDIUM BARB ARROWWIDE-H" + + "EADED DOWNWARDS MEDIUM BARB ARROWWIDE-HEADED NORTH WEST MEDIUM BARB ARRO" + + "WWIDE-HEADED NORTH EAST MEDIUM BARB ARROWWIDE-HEADED SOUTH EAST MEDIUM B" + + "ARB ARROWWIDE-HEADED SOUTH WEST MEDIUM BARB ARROWWIDE-HEADED LEFTWARDS H" + + "EAVY BARB ARROWWIDE-HEADED UPWARDS HEAVY BARB ARROWWIDE-HEADED RIGHTWARD" + + "S HEAVY BARB ARROWWIDE-HEADED DOWNWARDS HEAVY BARB ARROWWIDE-HEADED NORT" + + "H WEST HEAVY BARB ARROWWIDE-HEADED NORTH EAST HEAVY BARB ARROWWIDE-HEADE" + + "D SOUTH EAST HEAVY BARB ARROWWIDE-HEADED SOUTH WEST HEAVY BARB ARROWWIDE" + + "-HEADED LEFTWARDS VERY HEAVY BARB ARROWWIDE-HEADED UPWARDS VERY HEAVY BA") + ("" + + "RB ARROWWIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROWWIDE-HEADED DOWNWARD" + + "S VERY HEAVY BARB ARROWWIDE-HEADED NORTH WEST VERY HEAVY BARB ARROWWIDE-" + + "HEADED NORTH EAST VERY HEAVY BARB ARROWWIDE-HEADED SOUTH EAST VERY HEAVY" + + " BARB ARROWWIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROWLEFTWARDS TRIANGL" + + "E ARROWHEADUPWARDS TRIANGLE ARROWHEADRIGHTWARDS TRIANGLE ARROWHEADDOWNWA" + + "RDS TRIANGLE ARROWHEADLEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEADUPW" + + "ARDS WHITE ARROW WITHIN TRIANGLE ARROWHEADRIGHTWARDS WHITE ARROW WITHIN " + + "TRIANGLE ARROWHEADDOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEADLEFTWAR" + + "DS ARROW WITH NOTCHED TAILUPWARDS ARROW WITH NOTCHED TAILRIGHTWARDS ARRO" + + "W WITH NOTCHED TAILDOWNWARDS ARROW WITH NOTCHED TAILHEAVY ARROW SHAFT WI" + + "DTH ONEHEAVY ARROW SHAFT WIDTH TWO THIRDSHEAVY ARROW SHAFT WIDTH ONE HAL" + + "FHEAVY ARROW SHAFT WIDTH ONE THIRDLEFTWARDS BOTTOM-SHADED WHITE ARROWRIG" + + "HTWARDS BOTTOM SHADED WHITE ARROWLEFTWARDS TOP SHADED WHITE ARROWRIGHTWA" + + "RDS TOP SHADED WHITE ARROWLEFTWARDS LEFT-SHADED WHITE ARROWRIGHTWARDS RI" + + "GHT-SHADED WHITE ARROWLEFTWARDS RIGHT-SHADED WHITE ARROWRIGHTWARDS LEFT-" + + "SHADED WHITE ARROWLEFTWARDS BACK-TILTED SHADOWED WHITE ARROWRIGHTWARDS B" + + "ACK-TILTED SHADOWED WHITE ARROWLEFTWARDS FRONT-TILTED SHADOWED WHITE ARR" + + "OWRIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROWWHITE ARROW SHAFT WIDTH ON" + + "EWHITE ARROW SHAFT WIDTH TWO THIRDSZIPPER-MOUTH FACEMONEY-MOUTH FACEFACE" + + " WITH THERMOMETERNERD FACETHINKING FACEFACE WITH HEAD-BANDAGEROBOT FACEH" + + "UGGING FACESIGN OF THE HORNSCALL ME HANDRAISED BACK OF HANDLEFT-FACING F" + + "ISTRIGHT-FACING FISTHANDSHAKEHAND WITH INDEX AND MIDDLE FINGERS CROSSEDF" + + "ACE WITH COWBOY HATCLOWN FACENAUSEATED FACEROLLING ON THE FLOOR LAUGHING" + + "DROOLING FACELYING FACEFACE PALMSNEEZING FACEPREGNANT WOMANSELFIEPRINCEM" + + "AN IN TUXEDOMOTHER CHRISTMASSHRUGPERSON DOING CARTWHEELJUGGLINGFENCERMOD" + + "ERN PENTATHLONWRESTLERSWATER POLOHANDBALLWILTED FLOWERDRUM WITH DRUMSTIC" + + "KSCLINKING GLASSESTUMBLER GLASSSPOONGOAL NETRIFLEFIRST PLACE MEDALSECOND" + + " PLACE MEDALTHIRD PLACE MEDALBOXING GLOVEMARTIAL ARTS UNIFORMCROISSANTAV" + + "OCADOCUCUMBERBACONPOTATOCARROTBAGUETTE BREADGREEN SALADSHALLOW PAN OF FO" + + "ODSTUFFED FLATBREADEGGGLASS OF MILKPEANUTSKIWIFRUITPANCAKESCRABLION FACE" + + "SCORPIONTURKEYUNICORN FACEEAGLEDUCKBATSHARKOWLFOX FACEBUTTERFLYDEERGORIL" + + "LALIZARDRHINOCEROSSHRIMPSQUIDCHEESE WEDGECJK COMPATIBILITY IDEOGRAPH-2F8" + + "00CJK COMPATIBILITY IDEOGRAPH-2F801CJK COMPATIBILITY IDEOGRAPH-2F802CJK " + + "COMPATIBILITY IDEOGRAPH-2F803CJK COMPATIBILITY IDEOGRAPH-2F804CJK COMPAT" + + "IBILITY IDEOGRAPH-2F805CJK COMPATIBILITY IDEOGRAPH-2F806CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F807CJK COMPATIBILITY IDEOGRAPH-2F808CJK COMPATIBILITY IDEO" + + "GRAPH-2F809CJK COMPATIBILITY IDEOGRAPH-2F80ACJK COMPATIBILITY IDEOGRAPH-" + + "2F80BCJK COMPATIBILITY IDEOGRAPH-2F80CCJK COMPATIBILITY IDEOGRAPH-2F80DC" + + "JK COMPATIBILITY IDEOGRAPH-2F80ECJK COMPATIBILITY IDEOGRAPH-2F80FCJK COM" + + "PATIBILITY IDEOGRAPH-2F810CJK COMPATIBILITY IDEOGRAPH-2F811CJK COMPATIBI" + + "LITY IDEOGRAPH-2F812CJK COMPATIBILITY IDEOGRAPH-2F813CJK COMPATIBILITY I" + + "DEOGRAPH-2F814CJK COMPATIBILITY IDEOGRAPH-2F815CJK COMPATIBILITY IDEOGRA" + + "PH-2F816CJK COMPATIBILITY IDEOGRAPH-2F817CJK COMPATIBILITY IDEOGRAPH-2F8" + + "18CJK COMPATIBILITY IDEOGRAPH-2F819CJK COMPATIBILITY IDEOGRAPH-2F81ACJK " + + "COMPATIBILITY IDEOGRAPH-2F81BCJK COMPATIBILITY IDEOGRAPH-2F81CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F81DCJK COMPATIBILITY IDEOGRAPH-2F81ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F81FCJK COMPATIBILITY IDEOGRAPH-2F820CJK COMPATIBILITY IDEO" + + "GRAPH-2F821CJK COMPATIBILITY IDEOGRAPH-2F822CJK COMPATIBILITY IDEOGRAPH-" + + "2F823CJK COMPATIBILITY IDEOGRAPH-2F824CJK COMPATIBILITY IDEOGRAPH-2F825C" + + "JK COMPATIBILITY IDEOGRAPH-2F826CJK COMPATIBILITY IDEOGRAPH-2F827CJK COM" + + "PATIBILITY IDEOGRAPH-2F828CJK COMPATIBILITY IDEOGRAPH-2F829CJK COMPATIBI" + + "LITY IDEOGRAPH-2F82ACJK COMPATIBILITY IDEOGRAPH-2F82BCJK COMPATIBILITY I" + + "DEOGRAPH-2F82CCJK COMPATIBILITY IDEOGRAPH-2F82DCJK COMPATIBILITY IDEOGRA" + + "PH-2F82ECJK COMPATIBILITY IDEOGRAPH-2F82FCJK COMPATIBILITY IDEOGRAPH-2F8" + + "30CJK COMPATIBILITY IDEOGRAPH-2F831CJK COMPATIBILITY IDEOGRAPH-2F832CJK " + + "COMPATIBILITY IDEOGRAPH-2F833CJK COMPATIBILITY IDEOGRAPH-2F834CJK COMPAT" + + "IBILITY IDEOGRAPH-2F835CJK COMPATIBILITY IDEOGRAPH-2F836CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F837CJK COMPATIBILITY IDEOGRAPH-2F838CJK COMPATIBILITY IDEO" + + "GRAPH-2F839CJK COMPATIBILITY IDEOGRAPH-2F83ACJK COMPATIBILITY IDEOGRAPH-" + + "2F83BCJK COMPATIBILITY IDEOGRAPH-2F83CCJK COMPATIBILITY IDEOGRAPH-2F83DC" + + "JK COMPATIBILITY IDEOGRAPH-2F83ECJK COMPATIBILITY IDEOGRAPH-2F83FCJK COM" + + "PATIBILITY IDEOGRAPH-2F840CJK COMPATIBILITY IDEOGRAPH-2F841CJK COMPATIBI" + + "LITY IDEOGRAPH-2F842CJK COMPATIBILITY IDEOGRAPH-2F843CJK COMPATIBILITY I" + + "DEOGRAPH-2F844CJK COMPATIBILITY IDEOGRAPH-2F845CJK COMPATIBILITY IDEOGRA") + ("" + + "PH-2F846CJK COMPATIBILITY IDEOGRAPH-2F847CJK COMPATIBILITY IDEOGRAPH-2F8" + + "48CJK COMPATIBILITY IDEOGRAPH-2F849CJK COMPATIBILITY IDEOGRAPH-2F84ACJK " + + "COMPATIBILITY IDEOGRAPH-2F84BCJK COMPATIBILITY IDEOGRAPH-2F84CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F84DCJK COMPATIBILITY IDEOGRAPH-2F84ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F84FCJK COMPATIBILITY IDEOGRAPH-2F850CJK COMPATIBILITY IDEO" + + "GRAPH-2F851CJK COMPATIBILITY IDEOGRAPH-2F852CJK COMPATIBILITY IDEOGRAPH-" + + "2F853CJK COMPATIBILITY IDEOGRAPH-2F854CJK COMPATIBILITY IDEOGRAPH-2F855C" + + "JK COMPATIBILITY IDEOGRAPH-2F856CJK COMPATIBILITY IDEOGRAPH-2F857CJK COM" + + "PATIBILITY IDEOGRAPH-2F858CJK COMPATIBILITY IDEOGRAPH-2F859CJK COMPATIBI" + + "LITY IDEOGRAPH-2F85ACJK COMPATIBILITY IDEOGRAPH-2F85BCJK COMPATIBILITY I" + + "DEOGRAPH-2F85CCJK COMPATIBILITY IDEOGRAPH-2F85DCJK COMPATIBILITY IDEOGRA" + + "PH-2F85ECJK COMPATIBILITY IDEOGRAPH-2F85FCJK COMPATIBILITY IDEOGRAPH-2F8" + + "60CJK COMPATIBILITY IDEOGRAPH-2F861CJK COMPATIBILITY IDEOGRAPH-2F862CJK " + + "COMPATIBILITY IDEOGRAPH-2F863CJK COMPATIBILITY IDEOGRAPH-2F864CJK COMPAT" + + "IBILITY IDEOGRAPH-2F865CJK COMPATIBILITY IDEOGRAPH-2F866CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F867CJK COMPATIBILITY IDEOGRAPH-2F868CJK COMPATIBILITY IDEO" + + "GRAPH-2F869CJK COMPATIBILITY IDEOGRAPH-2F86ACJK COMPATIBILITY IDEOGRAPH-" + + "2F86BCJK COMPATIBILITY IDEOGRAPH-2F86CCJK COMPATIBILITY IDEOGRAPH-2F86DC" + + "JK COMPATIBILITY IDEOGRAPH-2F86ECJK COMPATIBILITY IDEOGRAPH-2F86FCJK COM" + + "PATIBILITY IDEOGRAPH-2F870CJK COMPATIBILITY IDEOGRAPH-2F871CJK COMPATIBI" + + "LITY IDEOGRAPH-2F872CJK COMPATIBILITY IDEOGRAPH-2F873CJK COMPATIBILITY I" + + "DEOGRAPH-2F874CJK COMPATIBILITY IDEOGRAPH-2F875CJK COMPATIBILITY IDEOGRA" + + "PH-2F876CJK COMPATIBILITY IDEOGRAPH-2F877CJK COMPATIBILITY IDEOGRAPH-2F8" + + "78CJK COMPATIBILITY IDEOGRAPH-2F879CJK COMPATIBILITY IDEOGRAPH-2F87ACJK " + + "COMPATIBILITY IDEOGRAPH-2F87BCJK COMPATIBILITY IDEOGRAPH-2F87CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F87DCJK COMPATIBILITY IDEOGRAPH-2F87ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F87FCJK COMPATIBILITY IDEOGRAPH-2F880CJK COMPATIBILITY IDEO" + + "GRAPH-2F881CJK COMPATIBILITY IDEOGRAPH-2F882CJK COMPATIBILITY IDEOGRAPH-" + + "2F883CJK COMPATIBILITY IDEOGRAPH-2F884CJK COMPATIBILITY IDEOGRAPH-2F885C" + + "JK COMPATIBILITY IDEOGRAPH-2F886CJK COMPATIBILITY IDEOGRAPH-2F887CJK COM" + + "PATIBILITY IDEOGRAPH-2F888CJK COMPATIBILITY IDEOGRAPH-2F889CJK COMPATIBI" + + "LITY IDEOGRAPH-2F88ACJK COMPATIBILITY IDEOGRAPH-2F88BCJK COMPATIBILITY I" + + "DEOGRAPH-2F88CCJK COMPATIBILITY IDEOGRAPH-2F88DCJK COMPATIBILITY IDEOGRA" + + "PH-2F88ECJK COMPATIBILITY IDEOGRAPH-2F88FCJK COMPATIBILITY IDEOGRAPH-2F8" + + "90CJK COMPATIBILITY IDEOGRAPH-2F891CJK COMPATIBILITY IDEOGRAPH-2F892CJK " + + "COMPATIBILITY IDEOGRAPH-2F893CJK COMPATIBILITY IDEOGRAPH-2F894CJK COMPAT" + + "IBILITY IDEOGRAPH-2F895CJK COMPATIBILITY IDEOGRAPH-2F896CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F897CJK COMPATIBILITY IDEOGRAPH-2F898CJK COMPATIBILITY IDEO" + + "GRAPH-2F899CJK COMPATIBILITY IDEOGRAPH-2F89ACJK COMPATIBILITY IDEOGRAPH-" + + "2F89BCJK COMPATIBILITY IDEOGRAPH-2F89CCJK COMPATIBILITY IDEOGRAPH-2F89DC" + + "JK COMPATIBILITY IDEOGRAPH-2F89ECJK COMPATIBILITY IDEOGRAPH-2F89FCJK COM" + + "PATIBILITY IDEOGRAPH-2F8A0CJK COMPATIBILITY IDEOGRAPH-2F8A1CJK COMPATIBI" + + "LITY IDEOGRAPH-2F8A2CJK COMPATIBILITY IDEOGRAPH-2F8A3CJK COMPATIBILITY I" + + "DEOGRAPH-2F8A4CJK COMPATIBILITY IDEOGRAPH-2F8A5CJK COMPATIBILITY IDEOGRA" + + "PH-2F8A6CJK COMPATIBILITY IDEOGRAPH-2F8A7CJK COMPATIBILITY IDEOGRAPH-2F8" + + "A8CJK COMPATIBILITY IDEOGRAPH-2F8A9CJK COMPATIBILITY IDEOGRAPH-2F8AACJK " + + "COMPATIBILITY IDEOGRAPH-2F8ABCJK COMPATIBILITY IDEOGRAPH-2F8ACCJK COMPAT" + + "IBILITY IDEOGRAPH-2F8ADCJK COMPATIBILITY IDEOGRAPH-2F8AECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F8AFCJK COMPATIBILITY IDEOGRAPH-2F8B0CJK COMPATIBILITY IDEO" + + "GRAPH-2F8B1CJK COMPATIBILITY IDEOGRAPH-2F8B2CJK COMPATIBILITY IDEOGRAPH-" + + "2F8B3CJK COMPATIBILITY IDEOGRAPH-2F8B4CJK COMPATIBILITY IDEOGRAPH-2F8B5C" + + "JK COMPATIBILITY IDEOGRAPH-2F8B6CJK COMPATIBILITY IDEOGRAPH-2F8B7CJK COM" + + "PATIBILITY IDEOGRAPH-2F8B8CJK COMPATIBILITY IDEOGRAPH-2F8B9CJK COMPATIBI" + + "LITY IDEOGRAPH-2F8BACJK COMPATIBILITY IDEOGRAPH-2F8BBCJK COMPATIBILITY I" + + "DEOGRAPH-2F8BCCJK COMPATIBILITY IDEOGRAPH-2F8BDCJK COMPATIBILITY IDEOGRA" + + "PH-2F8BECJK COMPATIBILITY IDEOGRAPH-2F8BFCJK COMPATIBILITY IDEOGRAPH-2F8" + + "C0CJK COMPATIBILITY IDEOGRAPH-2F8C1CJK COMPATIBILITY IDEOGRAPH-2F8C2CJK " + + "COMPATIBILITY IDEOGRAPH-2F8C3CJK COMPATIBILITY IDEOGRAPH-2F8C4CJK COMPAT" + + "IBILITY IDEOGRAPH-2F8C5CJK COMPATIBILITY IDEOGRAPH-2F8C6CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F8C7CJK COMPATIBILITY IDEOGRAPH-2F8C8CJK COMPATIBILITY IDEO" + + "GRAPH-2F8C9CJK COMPATIBILITY IDEOGRAPH-2F8CACJK COMPATIBILITY IDEOGRAPH-" + + "2F8CBCJK COMPATIBILITY IDEOGRAPH-2F8CCCJK COMPATIBILITY IDEOGRAPH-2F8CDC" + + "JK COMPATIBILITY IDEOGRAPH-2F8CECJK COMPATIBILITY IDEOGRAPH-2F8CFCJK COM" + + "PATIBILITY IDEOGRAPH-2F8D0CJK COMPATIBILITY IDEOGRAPH-2F8D1CJK COMPATIBI") + ("" + + "LITY IDEOGRAPH-2F8D2CJK COMPATIBILITY IDEOGRAPH-2F8D3CJK COMPATIBILITY I" + + "DEOGRAPH-2F8D4CJK COMPATIBILITY IDEOGRAPH-2F8D5CJK COMPATIBILITY IDEOGRA" + + "PH-2F8D6CJK COMPATIBILITY IDEOGRAPH-2F8D7CJK COMPATIBILITY IDEOGRAPH-2F8" + + "D8CJK COMPATIBILITY IDEOGRAPH-2F8D9CJK COMPATIBILITY IDEOGRAPH-2F8DACJK " + + "COMPATIBILITY IDEOGRAPH-2F8DBCJK COMPATIBILITY IDEOGRAPH-2F8DCCJK COMPAT" + + "IBILITY IDEOGRAPH-2F8DDCJK COMPATIBILITY IDEOGRAPH-2F8DECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F8DFCJK COMPATIBILITY IDEOGRAPH-2F8E0CJK COMPATIBILITY IDEO" + + "GRAPH-2F8E1CJK COMPATIBILITY IDEOGRAPH-2F8E2CJK COMPATIBILITY IDEOGRAPH-" + + "2F8E3CJK COMPATIBILITY IDEOGRAPH-2F8E4CJK COMPATIBILITY IDEOGRAPH-2F8E5C" + + "JK COMPATIBILITY IDEOGRAPH-2F8E6CJK COMPATIBILITY IDEOGRAPH-2F8E7CJK COM" + + "PATIBILITY IDEOGRAPH-2F8E8CJK COMPATIBILITY IDEOGRAPH-2F8E9CJK COMPATIBI" + + "LITY IDEOGRAPH-2F8EACJK COMPATIBILITY IDEOGRAPH-2F8EBCJK COMPATIBILITY I" + + "DEOGRAPH-2F8ECCJK COMPATIBILITY IDEOGRAPH-2F8EDCJK COMPATIBILITY IDEOGRA" + + "PH-2F8EECJK COMPATIBILITY IDEOGRAPH-2F8EFCJK COMPATIBILITY IDEOGRAPH-2F8" + + "F0CJK COMPATIBILITY IDEOGRAPH-2F8F1CJK COMPATIBILITY IDEOGRAPH-2F8F2CJK " + + "COMPATIBILITY IDEOGRAPH-2F8F3CJK COMPATIBILITY IDEOGRAPH-2F8F4CJK COMPAT" + + "IBILITY IDEOGRAPH-2F8F5CJK COMPATIBILITY IDEOGRAPH-2F8F6CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F8F7CJK COMPATIBILITY IDEOGRAPH-2F8F8CJK COMPATIBILITY IDEO" + + "GRAPH-2F8F9CJK COMPATIBILITY IDEOGRAPH-2F8FACJK COMPATIBILITY IDEOGRAPH-" + + "2F8FBCJK COMPATIBILITY IDEOGRAPH-2F8FCCJK COMPATIBILITY IDEOGRAPH-2F8FDC" + + "JK COMPATIBILITY IDEOGRAPH-2F8FECJK COMPATIBILITY IDEOGRAPH-2F8FFCJK COM" + + "PATIBILITY IDEOGRAPH-2F900CJK COMPATIBILITY IDEOGRAPH-2F901CJK COMPATIBI" + + "LITY IDEOGRAPH-2F902CJK COMPATIBILITY IDEOGRAPH-2F903CJK COMPATIBILITY I" + + "DEOGRAPH-2F904CJK COMPATIBILITY IDEOGRAPH-2F905CJK COMPATIBILITY IDEOGRA" + + "PH-2F906CJK COMPATIBILITY IDEOGRAPH-2F907CJK COMPATIBILITY IDEOGRAPH-2F9" + + "08CJK COMPATIBILITY IDEOGRAPH-2F909CJK COMPATIBILITY IDEOGRAPH-2F90ACJK " + + "COMPATIBILITY IDEOGRAPH-2F90BCJK COMPATIBILITY IDEOGRAPH-2F90CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F90DCJK COMPATIBILITY IDEOGRAPH-2F90ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F90FCJK COMPATIBILITY IDEOGRAPH-2F910CJK COMPATIBILITY IDEO" + + "GRAPH-2F911CJK COMPATIBILITY IDEOGRAPH-2F912CJK COMPATIBILITY IDEOGRAPH-" + + "2F913CJK COMPATIBILITY IDEOGRAPH-2F914CJK COMPATIBILITY IDEOGRAPH-2F915C" + + "JK COMPATIBILITY IDEOGRAPH-2F916CJK COMPATIBILITY IDEOGRAPH-2F917CJK COM" + + "PATIBILITY IDEOGRAPH-2F918CJK COMPATIBILITY IDEOGRAPH-2F919CJK COMPATIBI" + + "LITY IDEOGRAPH-2F91ACJK COMPATIBILITY IDEOGRAPH-2F91BCJK COMPATIBILITY I" + + "DEOGRAPH-2F91CCJK COMPATIBILITY IDEOGRAPH-2F91DCJK COMPATIBILITY IDEOGRA" + + "PH-2F91ECJK COMPATIBILITY IDEOGRAPH-2F91FCJK COMPATIBILITY IDEOGRAPH-2F9" + + "20CJK COMPATIBILITY IDEOGRAPH-2F921CJK COMPATIBILITY IDEOGRAPH-2F922CJK " + + "COMPATIBILITY IDEOGRAPH-2F923CJK COMPATIBILITY IDEOGRAPH-2F924CJK COMPAT" + + "IBILITY IDEOGRAPH-2F925CJK COMPATIBILITY IDEOGRAPH-2F926CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F927CJK COMPATIBILITY IDEOGRAPH-2F928CJK COMPATIBILITY IDEO" + + "GRAPH-2F929CJK COMPATIBILITY IDEOGRAPH-2F92ACJK COMPATIBILITY IDEOGRAPH-" + + "2F92BCJK COMPATIBILITY IDEOGRAPH-2F92CCJK COMPATIBILITY IDEOGRAPH-2F92DC" + + "JK COMPATIBILITY IDEOGRAPH-2F92ECJK COMPATIBILITY IDEOGRAPH-2F92FCJK COM" + + "PATIBILITY IDEOGRAPH-2F930CJK COMPATIBILITY IDEOGRAPH-2F931CJK COMPATIBI" + + "LITY IDEOGRAPH-2F932CJK COMPATIBILITY IDEOGRAPH-2F933CJK COMPATIBILITY I" + + "DEOGRAPH-2F934CJK COMPATIBILITY IDEOGRAPH-2F935CJK COMPATIBILITY IDEOGRA" + + "PH-2F936CJK COMPATIBILITY IDEOGRAPH-2F937CJK COMPATIBILITY IDEOGRAPH-2F9" + + "38CJK COMPATIBILITY IDEOGRAPH-2F939CJK COMPATIBILITY IDEOGRAPH-2F93ACJK " + + "COMPATIBILITY IDEOGRAPH-2F93BCJK COMPATIBILITY IDEOGRAPH-2F93CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F93DCJK COMPATIBILITY IDEOGRAPH-2F93ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F93FCJK COMPATIBILITY IDEOGRAPH-2F940CJK COMPATIBILITY IDEO" + + "GRAPH-2F941CJK COMPATIBILITY IDEOGRAPH-2F942CJK COMPATIBILITY IDEOGRAPH-" + + "2F943CJK COMPATIBILITY IDEOGRAPH-2F944CJK COMPATIBILITY IDEOGRAPH-2F945C" + + "JK COMPATIBILITY IDEOGRAPH-2F946CJK COMPATIBILITY IDEOGRAPH-2F947CJK COM" + + "PATIBILITY IDEOGRAPH-2F948CJK COMPATIBILITY IDEOGRAPH-2F949CJK COMPATIBI" + + "LITY IDEOGRAPH-2F94ACJK COMPATIBILITY IDEOGRAPH-2F94BCJK COMPATIBILITY I" + + "DEOGRAPH-2F94CCJK COMPATIBILITY IDEOGRAPH-2F94DCJK COMPATIBILITY IDEOGRA" + + "PH-2F94ECJK COMPATIBILITY IDEOGRAPH-2F94FCJK COMPATIBILITY IDEOGRAPH-2F9" + + "50CJK COMPATIBILITY IDEOGRAPH-2F951CJK COMPATIBILITY IDEOGRAPH-2F952CJK " + + "COMPATIBILITY IDEOGRAPH-2F953CJK COMPATIBILITY IDEOGRAPH-2F954CJK COMPAT" + + "IBILITY IDEOGRAPH-2F955CJK COMPATIBILITY IDEOGRAPH-2F956CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F957CJK COMPATIBILITY IDEOGRAPH-2F958CJK COMPATIBILITY IDEO" + + "GRAPH-2F959CJK COMPATIBILITY IDEOGRAPH-2F95ACJK COMPATIBILITY IDEOGRAPH-" + + "2F95BCJK COMPATIBILITY IDEOGRAPH-2F95CCJK COMPATIBILITY IDEOGRAPH-2F95DC") + ("" + + "JK COMPATIBILITY IDEOGRAPH-2F95ECJK COMPATIBILITY IDEOGRAPH-2F95FCJK COM" + + "PATIBILITY IDEOGRAPH-2F960CJK COMPATIBILITY IDEOGRAPH-2F961CJK COMPATIBI" + + "LITY IDEOGRAPH-2F962CJK COMPATIBILITY IDEOGRAPH-2F963CJK COMPATIBILITY I" + + "DEOGRAPH-2F964CJK COMPATIBILITY IDEOGRAPH-2F965CJK COMPATIBILITY IDEOGRA" + + "PH-2F966CJK COMPATIBILITY IDEOGRAPH-2F967CJK COMPATIBILITY IDEOGRAPH-2F9" + + "68CJK COMPATIBILITY IDEOGRAPH-2F969CJK COMPATIBILITY IDEOGRAPH-2F96ACJK " + + "COMPATIBILITY IDEOGRAPH-2F96BCJK COMPATIBILITY IDEOGRAPH-2F96CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F96DCJK COMPATIBILITY IDEOGRAPH-2F96ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F96FCJK COMPATIBILITY IDEOGRAPH-2F970CJK COMPATIBILITY IDEO" + + "GRAPH-2F971CJK COMPATIBILITY IDEOGRAPH-2F972CJK COMPATIBILITY IDEOGRAPH-" + + "2F973CJK COMPATIBILITY IDEOGRAPH-2F974CJK COMPATIBILITY IDEOGRAPH-2F975C" + + "JK COMPATIBILITY IDEOGRAPH-2F976CJK COMPATIBILITY IDEOGRAPH-2F977CJK COM" + + "PATIBILITY IDEOGRAPH-2F978CJK COMPATIBILITY IDEOGRAPH-2F979CJK COMPATIBI" + + "LITY IDEOGRAPH-2F97ACJK COMPATIBILITY IDEOGRAPH-2F97BCJK COMPATIBILITY I" + + "DEOGRAPH-2F97CCJK COMPATIBILITY IDEOGRAPH-2F97DCJK COMPATIBILITY IDEOGRA" + + "PH-2F97ECJK COMPATIBILITY IDEOGRAPH-2F97FCJK COMPATIBILITY IDEOGRAPH-2F9" + + "80CJK COMPATIBILITY IDEOGRAPH-2F981CJK COMPATIBILITY IDEOGRAPH-2F982CJK " + + "COMPATIBILITY IDEOGRAPH-2F983CJK COMPATIBILITY IDEOGRAPH-2F984CJK COMPAT" + + "IBILITY IDEOGRAPH-2F985CJK COMPATIBILITY IDEOGRAPH-2F986CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F987CJK COMPATIBILITY IDEOGRAPH-2F988CJK COMPATIBILITY IDEO" + + "GRAPH-2F989CJK COMPATIBILITY IDEOGRAPH-2F98ACJK COMPATIBILITY IDEOGRAPH-" + + "2F98BCJK COMPATIBILITY IDEOGRAPH-2F98CCJK COMPATIBILITY IDEOGRAPH-2F98DC" + + "JK COMPATIBILITY IDEOGRAPH-2F98ECJK COMPATIBILITY IDEOGRAPH-2F98FCJK COM" + + "PATIBILITY IDEOGRAPH-2F990CJK COMPATIBILITY IDEOGRAPH-2F991CJK COMPATIBI" + + "LITY IDEOGRAPH-2F992CJK COMPATIBILITY IDEOGRAPH-2F993CJK COMPATIBILITY I" + + "DEOGRAPH-2F994CJK COMPATIBILITY IDEOGRAPH-2F995CJK COMPATIBILITY IDEOGRA" + + "PH-2F996CJK COMPATIBILITY IDEOGRAPH-2F997CJK COMPATIBILITY IDEOGRAPH-2F9" + + "98CJK COMPATIBILITY IDEOGRAPH-2F999CJK COMPATIBILITY IDEOGRAPH-2F99ACJK " + + "COMPATIBILITY IDEOGRAPH-2F99BCJK COMPATIBILITY IDEOGRAPH-2F99CCJK COMPAT" + + "IBILITY IDEOGRAPH-2F99DCJK COMPATIBILITY IDEOGRAPH-2F99ECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F99FCJK COMPATIBILITY IDEOGRAPH-2F9A0CJK COMPATIBILITY IDEO" + + "GRAPH-2F9A1CJK COMPATIBILITY IDEOGRAPH-2F9A2CJK COMPATIBILITY IDEOGRAPH-" + + "2F9A3CJK COMPATIBILITY IDEOGRAPH-2F9A4CJK COMPATIBILITY IDEOGRAPH-2F9A5C" + + "JK COMPATIBILITY IDEOGRAPH-2F9A6CJK COMPATIBILITY IDEOGRAPH-2F9A7CJK COM" + + "PATIBILITY IDEOGRAPH-2F9A8CJK COMPATIBILITY IDEOGRAPH-2F9A9CJK COMPATIBI" + + "LITY IDEOGRAPH-2F9AACJK COMPATIBILITY IDEOGRAPH-2F9ABCJK COMPATIBILITY I" + + "DEOGRAPH-2F9ACCJK COMPATIBILITY IDEOGRAPH-2F9ADCJK COMPATIBILITY IDEOGRA" + + "PH-2F9AECJK COMPATIBILITY IDEOGRAPH-2F9AFCJK COMPATIBILITY IDEOGRAPH-2F9" + + "B0CJK COMPATIBILITY IDEOGRAPH-2F9B1CJK COMPATIBILITY IDEOGRAPH-2F9B2CJK " + + "COMPATIBILITY IDEOGRAPH-2F9B3CJK COMPATIBILITY IDEOGRAPH-2F9B4CJK COMPAT" + + "IBILITY IDEOGRAPH-2F9B5CJK COMPATIBILITY IDEOGRAPH-2F9B6CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F9B7CJK COMPATIBILITY IDEOGRAPH-2F9B8CJK COMPATIBILITY IDEO" + + "GRAPH-2F9B9CJK COMPATIBILITY IDEOGRAPH-2F9BACJK COMPATIBILITY IDEOGRAPH-" + + "2F9BBCJK COMPATIBILITY IDEOGRAPH-2F9BCCJK COMPATIBILITY IDEOGRAPH-2F9BDC" + + "JK COMPATIBILITY IDEOGRAPH-2F9BECJK COMPATIBILITY IDEOGRAPH-2F9BFCJK COM" + + "PATIBILITY IDEOGRAPH-2F9C0CJK COMPATIBILITY IDEOGRAPH-2F9C1CJK COMPATIBI" + + "LITY IDEOGRAPH-2F9C2CJK COMPATIBILITY IDEOGRAPH-2F9C3CJK COMPATIBILITY I" + + "DEOGRAPH-2F9C4CJK COMPATIBILITY IDEOGRAPH-2F9C5CJK COMPATIBILITY IDEOGRA" + + "PH-2F9C6CJK COMPATIBILITY IDEOGRAPH-2F9C7CJK COMPATIBILITY IDEOGRAPH-2F9" + + "C8CJK COMPATIBILITY IDEOGRAPH-2F9C9CJK COMPATIBILITY IDEOGRAPH-2F9CACJK " + + "COMPATIBILITY IDEOGRAPH-2F9CBCJK COMPATIBILITY IDEOGRAPH-2F9CCCJK COMPAT" + + "IBILITY IDEOGRAPH-2F9CDCJK COMPATIBILITY IDEOGRAPH-2F9CECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F9CFCJK COMPATIBILITY IDEOGRAPH-2F9D0CJK COMPATIBILITY IDEO" + + "GRAPH-2F9D1CJK COMPATIBILITY IDEOGRAPH-2F9D2CJK COMPATIBILITY IDEOGRAPH-" + + "2F9D3CJK COMPATIBILITY IDEOGRAPH-2F9D4CJK COMPATIBILITY IDEOGRAPH-2F9D5C" + + "JK COMPATIBILITY IDEOGRAPH-2F9D6CJK COMPATIBILITY IDEOGRAPH-2F9D7CJK COM" + + "PATIBILITY IDEOGRAPH-2F9D8CJK COMPATIBILITY IDEOGRAPH-2F9D9CJK COMPATIBI" + + "LITY IDEOGRAPH-2F9DACJK COMPATIBILITY IDEOGRAPH-2F9DBCJK COMPATIBILITY I" + + "DEOGRAPH-2F9DCCJK COMPATIBILITY IDEOGRAPH-2F9DDCJK COMPATIBILITY IDEOGRA" + + "PH-2F9DECJK COMPATIBILITY IDEOGRAPH-2F9DFCJK COMPATIBILITY IDEOGRAPH-2F9" + + "E0CJK COMPATIBILITY IDEOGRAPH-2F9E1CJK COMPATIBILITY IDEOGRAPH-2F9E2CJK " + + "COMPATIBILITY IDEOGRAPH-2F9E3CJK COMPATIBILITY IDEOGRAPH-2F9E4CJK COMPAT" + + "IBILITY IDEOGRAPH-2F9E5CJK COMPATIBILITY IDEOGRAPH-2F9E6CJK COMPATIBILIT" + + "Y IDEOGRAPH-2F9E7CJK COMPATIBILITY IDEOGRAPH-2F9E8CJK COMPATIBILITY IDEO") + ("" + + "GRAPH-2F9E9CJK COMPATIBILITY IDEOGRAPH-2F9EACJK COMPATIBILITY IDEOGRAPH-" + + "2F9EBCJK COMPATIBILITY IDEOGRAPH-2F9ECCJK COMPATIBILITY IDEOGRAPH-2F9EDC" + + "JK COMPATIBILITY IDEOGRAPH-2F9EECJK COMPATIBILITY IDEOGRAPH-2F9EFCJK COM" + + "PATIBILITY IDEOGRAPH-2F9F0CJK COMPATIBILITY IDEOGRAPH-2F9F1CJK COMPATIBI" + + "LITY IDEOGRAPH-2F9F2CJK COMPATIBILITY IDEOGRAPH-2F9F3CJK COMPATIBILITY I" + + "DEOGRAPH-2F9F4CJK COMPATIBILITY IDEOGRAPH-2F9F5CJK COMPATIBILITY IDEOGRA" + + "PH-2F9F6CJK COMPATIBILITY IDEOGRAPH-2F9F7CJK COMPATIBILITY IDEOGRAPH-2F9" + + "F8CJK COMPATIBILITY IDEOGRAPH-2F9F9CJK COMPATIBILITY IDEOGRAPH-2F9FACJK " + + "COMPATIBILITY IDEOGRAPH-2F9FBCJK COMPATIBILITY IDEOGRAPH-2F9FCCJK COMPAT" + + "IBILITY IDEOGRAPH-2F9FDCJK COMPATIBILITY IDEOGRAPH-2F9FECJK COMPATIBILIT" + + "Y IDEOGRAPH-2F9FFCJK COMPATIBILITY IDEOGRAPH-2FA00CJK COMPATIBILITY IDEO" + + "GRAPH-2FA01CJK COMPATIBILITY IDEOGRAPH-2FA02CJK COMPATIBILITY IDEOGRAPH-" + + "2FA03CJK COMPATIBILITY IDEOGRAPH-2FA04CJK COMPATIBILITY IDEOGRAPH-2FA05C" + + "JK COMPATIBILITY IDEOGRAPH-2FA06CJK COMPATIBILITY IDEOGRAPH-2FA07CJK COM" + + "PATIBILITY IDEOGRAPH-2FA08CJK COMPATIBILITY IDEOGRAPH-2FA09CJK COMPATIBI" + + "LITY IDEOGRAPH-2FA0ACJK COMPATIBILITY IDEOGRAPH-2FA0BCJK COMPATIBILITY I" + + "DEOGRAPH-2FA0CCJK COMPATIBILITY IDEOGRAPH-2FA0DCJK COMPATIBILITY IDEOGRA" + + "PH-2FA0ECJK COMPATIBILITY IDEOGRAPH-2FA0FCJK COMPATIBILITY IDEOGRAPH-2FA" + + "10CJK COMPATIBILITY IDEOGRAPH-2FA11CJK COMPATIBILITY IDEOGRAPH-2FA12CJK " + + "COMPATIBILITY IDEOGRAPH-2FA13CJK COMPATIBILITY IDEOGRAPH-2FA14CJK COMPAT" + + "IBILITY IDEOGRAPH-2FA15CJK COMPATIBILITY IDEOGRAPH-2FA16CJK COMPATIBILIT" + + "Y IDEOGRAPH-2FA17CJK COMPATIBILITY IDEOGRAPH-2FA18CJK COMPATIBILITY IDEO" + + "GRAPH-2FA19CJK COMPATIBILITY IDEOGRAPH-2FA1ACJK COMPATIBILITY IDEOGRAPH-" + + "2FA1BCJK COMPATIBILITY IDEOGRAPH-2FA1CCJK COMPATIBILITY IDEOGRAPH-2FA1DL" + + "ANGUAGE TAGTAG SPACETAG EXCLAMATION MARKTAG QUOTATION MARKTAG NUMBER SIG" + + "NTAG DOLLAR SIGNTAG PERCENT SIGNTAG AMPERSANDTAG APOSTROPHETAG LEFT PARE" + + "NTHESISTAG RIGHT PARENTHESISTAG ASTERISKTAG PLUS SIGNTAG COMMATAG HYPHEN" + + "-MINUSTAG FULL STOPTAG SOLIDUSTAG DIGIT ZEROTAG DIGIT ONETAG DIGIT TWOTA" + + "G DIGIT THREETAG DIGIT FOURTAG DIGIT FIVETAG DIGIT SIXTAG DIGIT SEVENTAG" + + " DIGIT EIGHTTAG DIGIT NINETAG COLONTAG SEMICOLONTAG LESS-THAN SIGNTAG EQ" + + "UALS SIGNTAG GREATER-THAN SIGNTAG QUESTION MARKTAG COMMERCIAL ATTAG LATI" + + "N CAPITAL LETTER ATAG LATIN CAPITAL LETTER BTAG LATIN CAPITAL LETTER CTA" + + "G LATIN CAPITAL LETTER DTAG LATIN CAPITAL LETTER ETAG LATIN CAPITAL LETT" + + "ER FTAG LATIN CAPITAL LETTER GTAG LATIN CAPITAL LETTER HTAG LATIN CAPITA" + + "L LETTER ITAG LATIN CAPITAL LETTER JTAG LATIN CAPITAL LETTER KTAG LATIN " + + "CAPITAL LETTER LTAG LATIN CAPITAL LETTER MTAG LATIN CAPITAL LETTER NTAG " + + "LATIN CAPITAL LETTER OTAG LATIN CAPITAL LETTER PTAG LATIN CAPITAL LETTER" + + " QTAG LATIN CAPITAL LETTER RTAG LATIN CAPITAL LETTER STAG LATIN CAPITAL " + + "LETTER TTAG LATIN CAPITAL LETTER UTAG LATIN CAPITAL LETTER VTAG LATIN CA" + + "PITAL LETTER WTAG LATIN CAPITAL LETTER XTAG LATIN CAPITAL LETTER YTAG LA" + + "TIN CAPITAL LETTER ZTAG LEFT SQUARE BRACKETTAG REVERSE SOLIDUSTAG RIGHT " + + "SQUARE BRACKETTAG CIRCUMFLEX ACCENTTAG LOW LINETAG GRAVE ACCENTTAG LATIN" + + " SMALL LETTER ATAG LATIN SMALL LETTER BTAG LATIN SMALL LETTER CTAG LATIN" + + " SMALL LETTER DTAG LATIN SMALL LETTER ETAG LATIN SMALL LETTER FTAG LATIN" + + " SMALL LETTER GTAG LATIN SMALL LETTER HTAG LATIN SMALL LETTER ITAG LATIN" + + " SMALL LETTER JTAG LATIN SMALL LETTER KTAG LATIN SMALL LETTER LTAG LATIN" + + " SMALL LETTER MTAG LATIN SMALL LETTER NTAG LATIN SMALL LETTER OTAG LATIN" + + " SMALL LETTER PTAG LATIN SMALL LETTER QTAG LATIN SMALL LETTER RTAG LATIN" + + " SMALL LETTER STAG LATIN SMALL LETTER TTAG LATIN SMALL LETTER UTAG LATIN" + + " SMALL LETTER VTAG LATIN SMALL LETTER WTAG LATIN SMALL LETTER XTAG LATIN" + + " SMALL LETTER YTAG LATIN SMALL LETTER ZTAG LEFT CURLY BRACKETTAG VERTICA" + + "L LINETAG RIGHT CURLY BRACKETTAG TILDECANCEL TAGVARIATION SELECTOR-17VAR" + + "IATION SELECTOR-18VARIATION SELECTOR-19VARIATION SELECTOR-20VARIATION SE" + + "LECTOR-21VARIATION SELECTOR-22VARIATION SELECTOR-23VARIATION SELECTOR-24" + + "VARIATION SELECTOR-25VARIATION SELECTOR-26VARIATION SELECTOR-27VARIATION" + + " SELECTOR-28VARIATION SELECTOR-29VARIATION SELECTOR-30VARIATION SELECTOR" + + "-31VARIATION SELECTOR-32VARIATION SELECTOR-33VARIATION SELECTOR-34VARIAT" + + "ION SELECTOR-35VARIATION SELECTOR-36VARIATION SELECTOR-37VARIATION SELEC" + + "TOR-38VARIATION SELECTOR-39VARIATION SELECTOR-40VARIATION SELECTOR-41VAR" + + "IATION SELECTOR-42VARIATION SELECTOR-43VARIATION SELECTOR-44VARIATION SE" + + "LECTOR-45VARIATION SELECTOR-46VARIATION SELECTOR-47VARIATION SELECTOR-48" + + "VARIATION SELECTOR-49VARIATION SELECTOR-50VARIATION SELECTOR-51VARIATION" + + " SELECTOR-52VARIATION SELECTOR-53VARIATION SELECTOR-54VARIATION SELECTOR" + + "-55VARIATION SELECTOR-56VARIATION SELECTOR-57VARIATION SELECTOR-58VARIAT") + ("" + + "ION SELECTOR-59VARIATION SELECTOR-60VARIATION SELECTOR-61VARIATION SELEC" + + "TOR-62VARIATION SELECTOR-63VARIATION SELECTOR-64VARIATION SELECTOR-65VAR" + + "IATION SELECTOR-66VARIATION SELECTOR-67VARIATION SELECTOR-68VARIATION SE" + + "LECTOR-69VARIATION SELECTOR-70VARIATION SELECTOR-71VARIATION SELECTOR-72" + + "VARIATION SELECTOR-73VARIATION SELECTOR-74VARIATION SELECTOR-75VARIATION" + + " SELECTOR-76VARIATION SELECTOR-77VARIATION SELECTOR-78VARIATION SELECTOR" + + "-79VARIATION SELECTOR-80VARIATION SELECTOR-81VARIATION SELECTOR-82VARIAT" + + "ION SELECTOR-83VARIATION SELECTOR-84VARIATION SELECTOR-85VARIATION SELEC" + + "TOR-86VARIATION SELECTOR-87VARIATION SELECTOR-88VARIATION SELECTOR-89VAR" + + "IATION SELECTOR-90VARIATION SELECTOR-91VARIATION SELECTOR-92VARIATION SE" + + "LECTOR-93VARIATION SELECTOR-94VARIATION SELECTOR-95VARIATION SELECTOR-96" + + "VARIATION SELECTOR-97VARIATION SELECTOR-98VARIATION SELECTOR-99VARIATION" + + " SELECTOR-100VARIATION SELECTOR-101VARIATION SELECTOR-102VARIATION SELEC" + + "TOR-103VARIATION SELECTOR-104VARIATION SELECTOR-105VARIATION SELECTOR-10" + + "6VARIATION SELECTOR-107VARIATION SELECTOR-108VARIATION SELECTOR-109VARIA" + + "TION SELECTOR-110VARIATION SELECTOR-111VARIATION SELECTOR-112VARIATION S" + + "ELECTOR-113VARIATION SELECTOR-114VARIATION SELECTOR-115VARIATION SELECTO" + + "R-116VARIATION SELECTOR-117VARIATION SELECTOR-118VARIATION SELECTOR-119V" + + "ARIATION SELECTOR-120VARIATION SELECTOR-121VARIATION SELECTOR-122VARIATI" + + "ON SELECTOR-123VARIATION SELECTOR-124VARIATION SELECTOR-125VARIATION SEL" + + "ECTOR-126VARIATION SELECTOR-127VARIATION SELECTOR-128VARIATION SELECTOR-" + + "129VARIATION SELECTOR-130VARIATION SELECTOR-131VARIATION SELECTOR-132VAR" + + "IATION SELECTOR-133VARIATION SELECTOR-134VARIATION SELECTOR-135VARIATION" + + " SELECTOR-136VARIATION SELECTOR-137VARIATION SELECTOR-138VARIATION SELEC" + + "TOR-139VARIATION SELECTOR-140VARIATION SELECTOR-141VARIATION SELECTOR-14" + + "2VARIATION SELECTOR-143VARIATION SELECTOR-144VARIATION SELECTOR-145VARIA" + + "TION SELECTOR-146VARIATION SELECTOR-147VARIATION SELECTOR-148VARIATION S" + + "ELECTOR-149VARIATION SELECTOR-150VARIATION SELECTOR-151VARIATION SELECTO" + + "R-152VARIATION SELECTOR-153VARIATION SELECTOR-154VARIATION SELECTOR-155V" + + "ARIATION SELECTOR-156VARIATION SELECTOR-157VARIATION SELECTOR-158VARIATI" + + "ON SELECTOR-159VARIATION SELECTOR-160VARIATION SELECTOR-161VARIATION SEL" + + "ECTOR-162VARIATION SELECTOR-163VARIATION SELECTOR-164VARIATION SELECTOR-" + + "165VARIATION SELECTOR-166VARIATION SELECTOR-167VARIATION SELECTOR-168VAR" + + "IATION SELECTOR-169VARIATION SELECTOR-170VARIATION SELECTOR-171VARIATION" + + " SELECTOR-172VARIATION SELECTOR-173VARIATION SELECTOR-174VARIATION SELEC" + + "TOR-175VARIATION SELECTOR-176VARIATION SELECTOR-177VARIATION SELECTOR-17" + + "8VARIATION SELECTOR-179VARIATION SELECTOR-180VARIATION SELECTOR-181VARIA" + + "TION SELECTOR-182VARIATION SELECTOR-183VARIATION SELECTOR-184VARIATION S" + + "ELECTOR-185VARIATION SELECTOR-186VARIATION SELECTOR-187VARIATION SELECTO" + + "R-188VARIATION SELECTOR-189VARIATION SELECTOR-190VARIATION SELECTOR-191V" + + "ARIATION SELECTOR-192VARIATION SELECTOR-193VARIATION SELECTOR-194VARIATI" + + "ON SELECTOR-195VARIATION SELECTOR-196VARIATION SELECTOR-197VARIATION SEL" + + "ECTOR-198VARIATION SELECTOR-199VARIATION SELECTOR-200VARIATION SELECTOR-" + + "201VARIATION SELECTOR-202VARIATION SELECTOR-203VARIATION SELECTOR-204VAR" + + "IATION SELECTOR-205VARIATION SELECTOR-206VARIATION SELECTOR-207VARIATION" + + " SELECTOR-208VARIATION SELECTOR-209VARIATION SELECTOR-210VARIATION SELEC" + + "TOR-211VARIATION SELECTOR-212VARIATION SELECTOR-213VARIATION SELECTOR-21" + + "4VARIATION SELECTOR-215VARIATION SELECTOR-216VARIATION SELECTOR-217VARIA" + + "TION SELECTOR-218VARIATION SELECTOR-219VARIATION SELECTOR-220VARIATION S" + + "ELECTOR-221VARIATION SELECTOR-222VARIATION SELECTOR-223VARIATION SELECTO" + + "R-224VARIATION SELECTOR-225VARIATION SELECTOR-226VARIATION SELECTOR-227V" + + "ARIATION SELECTOR-228VARIATION SELECTOR-229VARIATION SELECTOR-230VARIATI" + + "ON SELECTOR-231VARIATION SELECTOR-232VARIATION SELECTOR-233VARIATION SEL" + + "ECTOR-234VARIATION SELECTOR-235VARIATION SELECTOR-236VARIATION SELECTOR-" + + "237VARIATION SELECTOR-238VARIATION SELECTOR-239VARIATION SELECTOR-240VAR" + + "IATION SELECTOR-241VARIATION SELECTOR-242VARIATION SELECTOR-243VARIATION" + + " SELECTOR-244VARIATION SELECTOR-245VARIATION SELECTOR-246VARIATION SELEC" + + "TOR-247VARIATION SELECTOR-248VARIATION SELECTOR-249VARIATION SELECTOR-25" + + "0VARIATION SELECTOR-251VARIATION SELECTOR-252VARIATION SELECTOR-253VARIA" + + "TION SELECTOR-254VARIATION SELECTOR-255VARIATION SELECTOR-256") + +// Total table size 855081 bytes (835KiB); checksum: 98E3EADD diff --git a/vendor/golang.org/x/text/width/common_test.go b/vendor/golang.org/x/text/width/common_test.go index fb5545e7ee..9ebb782c02 100644 --- a/vendor/golang.org/x/text/width/common_test.go +++ b/vendor/golang.org/x/text/width/common_test.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package width diff --git a/vendor/golang.org/x/text/width/kind_string.go b/vendor/golang.org/x/text/width/kind_string.go index ab4fee542f..49bfbf7268 100644 --- a/vendor/golang.org/x/text/width/kind_string.go +++ b/vendor/golang.org/x/text/width/kind_string.go @@ -1,4 +1,4 @@ -// Code generated by "stringer -type=Kind"; DO NOT EDIT +// Code generated by "stringer -type=Kind"; DO NOT EDIT. package width diff --git a/vendor/golang.org/x/text/width/runes_test.go b/vendor/golang.org/x/text/width/runes_test.go index 2a48c404d3..587dab4ed4 100644 --- a/vendor/golang.org/x/text/width/runes_test.go +++ b/vendor/golang.org/x/text/width/runes_test.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package width diff --git a/vendor/golang.org/x/text/width/tables.go b/vendor/golang.org/x/text/width/tables.go index 242da0fdb9..e21f0b8385 100644 --- a/vendor/golang.org/x/text/width/tables.go +++ b/vendor/golang.org/x/text/width/tables.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package width diff --git a/vendor/golang.org/x/text/width/transform.go b/vendor/golang.org/x/text/width/transform.go index 2ed25096ac..0049f700a2 100644 --- a/vendor/golang.org/x/text/width/transform.go +++ b/vendor/golang.org/x/text/width/transform.go @@ -14,6 +14,32 @@ type foldTransform struct { transform.NopResetter } +func (foldTransform) Span(src []byte, atEOF bool) (n int, err error) { + for n < len(src) { + if src[n] < utf8.RuneSelf { + // ASCII fast path. + for n++; n < len(src) && src[n] < utf8.RuneSelf; n++ { + } + continue + } + v, size := trie.lookup(src[n:]) + if size == 0 { // incomplete UTF-8 encoding + if !atEOF { + err = transform.ErrShortSrc + } else { + n = len(src) + } + break + } + if elem(v)&tagNeedsFold != 0 { + err = transform.ErrEndOfSpan + break + } + n += size + } + return n, err +} + func (foldTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { for nSrc < len(src) { if src[nSrc] < utf8.RuneSelf { @@ -70,6 +96,33 @@ type narrowTransform struct { transform.NopResetter } +func (narrowTransform) Span(src []byte, atEOF bool) (n int, err error) { + for n < len(src) { + if src[n] < utf8.RuneSelf { + // ASCII fast path. + for n++; n < len(src) && src[n] < utf8.RuneSelf; n++ { + } + continue + } + v, size := trie.lookup(src[n:]) + if size == 0 { // incomplete UTF-8 encoding + if !atEOF { + err = transform.ErrShortSrc + } else { + n = len(src) + } + break + } + if k := elem(v).kind(); byte(v) == 0 || k != EastAsianFullwidth && k != EastAsianWide && k != EastAsianAmbiguous { + } else { + err = transform.ErrEndOfSpan + break + } + n += size + } + return n, err +} + func (narrowTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { for nSrc < len(src) { if src[nSrc] < utf8.RuneSelf { @@ -126,6 +179,30 @@ type wideTransform struct { transform.NopResetter } +func (wideTransform) Span(src []byte, atEOF bool) (n int, err error) { + for n < 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[n:]) + if size == 0 { // incomplete UTF-8 encoding + if !atEOF { + err = transform.ErrShortSrc + } else { + n = len(src) + } + break + } + if k := elem(v).kind(); byte(v) == 0 || k != EastAsianHalfwidth && k != EastAsianNarrow { + } else { + err = transform.ErrEndOfSpan + break + } + n += size + } + return n, err +} + 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 diff --git a/vendor/golang.org/x/text/width/transform_test.go b/vendor/golang.org/x/text/width/transform_test.go index 13d3c01cf7..f9122d6db0 100644 --- a/vendor/golang.org/x/text/width/transform_test.go +++ b/vendor/golang.org/x/text/width/transform_test.go @@ -52,163 +52,199 @@ func TestFoldSingleRunes(t *testing.T) { } type transformTest struct { - desc string - src string - nBuf int - nDst int - atEOF bool - dst string - nSrc int - err error + desc string + src string + nBuf int + nDst int + atEOF bool + dst string + nSrc int + err error + nSpan int + errSpan error } func (tc *transformTest) doTest(t *testing.T, tr Transformer) { - b := make([]byte, tc.nBuf) - nDst, nSrc, err := tr.Transform(b, []byte(tc.src), tc.atEOF) - if got := string(b[:nDst]); got != tc.dst[:nDst] { - t.Errorf("%s: dst was %+q; want %+q", tc.desc, got, tc.dst) - } - if nDst != tc.nDst { - t.Errorf("%s: nDst was %d; want %d", tc.desc, nDst, tc.nDst) - } - if nSrc != tc.nSrc { - t.Errorf("%s: nSrc was %d; want %d", tc.desc, nSrc, tc.nSrc) - } - if err != tc.err { - t.Errorf("%s: error was %v; want %v", tc.desc, err, tc.err) - } - if got := tr.String(tc.src); got != tc.dst { - t.Errorf("%s:String(%q) = %q; want %q", tc.desc, tc.src, got, tc.dst) - } + testtext.Run(t, tc.desc, func(t *testing.T) { + b := make([]byte, tc.nBuf) + nDst, nSrc, err := tr.Transform(b, []byte(tc.src), tc.atEOF) + if got := string(b[:nDst]); got != tc.dst[:nDst] { + t.Errorf("dst was %+q; want %+q", got, tc.dst) + } + if nDst != tc.nDst { + t.Errorf("nDst was %d; want %d", nDst, tc.nDst) + } + if nSrc != tc.nSrc { + t.Errorf("nSrc was %d; want %d", nSrc, tc.nSrc) + } + if err != tc.err { + t.Errorf("error was %v; want %v", err, tc.err) + } + if got := tr.String(tc.src); got != tc.dst { + t.Errorf("String(%q) = %q; want %q", tc.src, got, tc.dst) + } + n, err := tr.Span([]byte(tc.src), tc.atEOF) + if n != tc.nSpan || err != tc.errSpan { + t.Errorf("Span: got %d, %v; want %d, %v", n, err, tc.nSpan, tc.errSpan) + } + }) } func TestFold(t *testing.T) { for _, tc := range []transformTest{{ - desc: "empty", - src: "", - nBuf: 10, - dst: "", - nDst: 0, - nSrc: 0, - atEOF: false, - err: nil, - }, { - desc: "short source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - }, { - desc: "short source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - }, { - desc: "incomplete but terminated source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 2, - nSrc: 2, - atEOF: true, - err: nil, - }, { - desc: "incomplete but terminated source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 3, - atEOF: true, - err: nil, - }, { - desc: "exact fit dst", - src: "a\uff01", - nBuf: 2, - dst: "a!", - nDst: 2, - nSrc: 4, - atEOF: false, - err: nil, - }, { - desc: "exact fit dst and src ascii", - src: "ab", - nBuf: 2, - dst: "ab", - nDst: 2, - nSrc: 2, - atEOF: true, - err: nil, - }, { - desc: "empty dst", - src: "\u0300", - nBuf: 0, - dst: "\u0300", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "empty dst ascii", - src: "a", - nBuf: 0, - dst: "a", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst 1", - src: "a\uffe0", // ¢ - nBuf: 2, - dst: "a\u00a2", // ¢ - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortDst, - }, { - desc: "short dst 2", - src: "不夠", - nBuf: 3, - dst: "不夠", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst fast path", - src: "fast", - nDst: 3, - dst: "fast", - nBuf: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst larger buffer", - src: "\uff21" + strings.Repeat("0", 127) + "B", - nBuf: 128, - dst: "A" + strings.Repeat("0", 127) + "B", - nDst: 128, - nSrc: 130, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "fast path alternation", - src: "fast路徑fast路徑", - nBuf: 20, - dst: "fast路徑fast路徑", - nDst: 20, - nSrc: 20, - atEOF: true, - err: nil, + desc: "empty", + src: "", + nBuf: 10, + dst: "", + nDst: 0, + nSrc: 0, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: nil, + }, { + desc: "short source 1", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 1, + nSrc: 1, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 1, + errSpan: transform.ErrShortSrc, + }, { + desc: "short source 2", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 1, + nSrc: 1, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 1, + errSpan: transform.ErrShortSrc, + }, { + desc: "incomplete but terminated source 1", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 2, + nSrc: 2, + atEOF: true, + err: nil, + nSpan: 2, + errSpan: nil, + }, { + desc: "incomplete but terminated source 2", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 3, + nSrc: 3, + atEOF: true, + err: nil, + nSpan: 3, + errSpan: nil, + }, { + desc: "exact fit dst", + src: "a\uff01", + nBuf: 2, + dst: "a!", + nDst: 2, + nSrc: 4, + atEOF: false, + err: nil, + nSpan: 1, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "exact fit dst and src ascii", + src: "ab", + nBuf: 2, + dst: "ab", + nDst: 2, + nSrc: 2, + atEOF: true, + err: nil, + nSpan: 2, + errSpan: nil, + }, { + desc: "empty dst", + src: "\u0300", + nBuf: 0, + dst: "\u0300", + nDst: 0, + nSrc: 0, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 2, + errSpan: nil, + }, { + desc: "empty dst ascii", + src: "a", + nBuf: 0, + dst: "a", + nDst: 0, + nSrc: 0, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 1, + errSpan: nil, + }, { + desc: "short dst 1", + src: "a\uffe0", // ¢ + nBuf: 2, + dst: "a\u00a2", // ¢ + nDst: 1, + nSrc: 1, + atEOF: false, + err: transform.ErrShortDst, + nSpan: 1, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short dst 2", + src: "不夠", + nBuf: 3, + dst: "不夠", + nDst: 3, + nSrc: 3, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 6, + errSpan: nil, + }, { + desc: "short dst fast path", + src: "fast", + nDst: 3, + dst: "fast", + nBuf: 3, + nSrc: 3, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 4, + errSpan: nil, + }, { + desc: "short dst larger buffer", + src: "\uff21" + strings.Repeat("0", 127) + "B", + nBuf: 128, + dst: "A" + strings.Repeat("0", 127) + "B", + nDst: 128, + nSrc: 130, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "fast path alternation", + src: "fast路徑fast路徑", + nBuf: 20, + dst: "fast路徑fast路徑", + nDst: 20, + nSrc: 20, + atEOF: true, + err: nil, + nSpan: 20, + errSpan: nil, }} { tc.doTest(t, Fold) } @@ -230,113 +266,181 @@ func TestWidenSingleRunes(t *testing.T) { func TestWiden(t *testing.T) { for _, tc := range []transformTest{{ - desc: "empty", - src: "", - nBuf: 10, - dst: "", - nDst: 0, - nSrc: 0, - atEOF: false, - err: nil, - }, { - desc: "short source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 3, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - }, { - desc: "short source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - }, { - desc: "incomplete but terminated source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 4, - nSrc: 2, - atEOF: true, - err: nil, - }, { - desc: "incomplete but terminated source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 5, - nSrc: 3, - atEOF: true, - err: nil, - }, { - desc: "exact fit dst", - src: "a!", - nBuf: 6, - dst: "a\uff01", - nDst: 6, - nSrc: 2, - atEOF: false, - err: nil, - }, { - desc: "empty dst", - src: "\u0300", - nBuf: 0, - dst: "\u0300", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "empty dst ascii", - src: "a", - nBuf: 0, - dst: "a", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst 1", - src: "a\uffe0", - nBuf: 4, - dst: "a\uffe0", - nDst: 3, - nSrc: 1, - atEOF: false, - err: transform.ErrShortDst, - }, { - desc: "short dst 2", - src: "不夠", - nBuf: 3, - dst: "不夠", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst ascii", - src: "ascii", - nBuf: 3, - dst: "ascii", // U+ff41, ... - nDst: 3, - nSrc: 1, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "ambiguous", - src: "\uffe9", - nBuf: 4, - dst: "\u2190", - nDst: 3, - nSrc: 3, - atEOF: false, - err: nil, + desc: "empty", + src: "", + nBuf: 10, + dst: "", + nDst: 0, + nSrc: 0, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: nil, + }, { + desc: "short source 1", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 3, + nSrc: 1, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short source 2", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 3, + nSrc: 1, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "incomplete but terminated source 1", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 4, + nSrc: 2, + atEOF: true, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "incomplete but terminated source 2", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 5, + nSrc: 3, + atEOF: true, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short source 1 some span", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 3, + nSrc: 3, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 3, + errSpan: transform.ErrShortSrc, + }, { + desc: "short source 2 some span", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 3, + nSrc: 3, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 3, + errSpan: transform.ErrShortSrc, + }, { + desc: "incomplete but terminated source 1 some span", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 4, + nSrc: 4, + atEOF: true, + err: nil, + nSpan: 4, + errSpan: nil, + }, { + desc: "incomplete but terminated source 2 some span", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 5, + nSrc: 5, + atEOF: true, + err: nil, + nSpan: 5, + errSpan: nil, + }, { + desc: "exact fit dst", + src: "a!", + nBuf: 6, + dst: "a\uff01", + nDst: 6, + nSrc: 2, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "empty dst", + src: "\u0300", + nBuf: 0, + dst: "\u0300", + nDst: 0, + nSrc: 0, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 2, + errSpan: nil, + }, { + desc: "empty dst ascii", + src: "a", + nBuf: 0, + dst: "a", + nDst: 0, + nSrc: 0, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short dst 1", + src: "a\uffe0", + nBuf: 4, + dst: "a\uffe0", + nDst: 3, + nSrc: 1, + atEOF: false, + err: transform.ErrShortDst, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short dst 2", + src: "不夠", + nBuf: 3, + dst: "不夠", + nDst: 3, + nSrc: 3, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 6, + errSpan: nil, + }, { + desc: "short dst ascii", + src: "ascii", + nBuf: 3, + dst: "ascii", // U+ff41, ... + nDst: 3, + nSrc: 1, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "ambiguous", + src: "\uffe9", + nBuf: 4, + dst: "\u2190", + nDst: 3, + nSrc: 3, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, }} { tc.doTest(t, Widen) } @@ -358,141 +462,171 @@ func TestNarrowSingleRunes(t *testing.T) { func TestNarrow(t *testing.T) { for _, tc := range []transformTest{{ - desc: "empty", - src: "", - nBuf: 10, - dst: "", - nDst: 0, - nSrc: 0, - atEOF: false, - err: nil, - }, { - desc: "short source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - }, { - desc: "short source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 1, - nSrc: 3, - atEOF: false, - err: transform.ErrShortSrc, - }, { - desc: "incomplete but terminated source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 2, - nSrc: 4, - atEOF: true, - err: nil, - }, { - desc: "incomplete but terminated source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 5, - atEOF: true, - err: nil, - }, { - desc: "exact fit dst", - src: "a\uff01", - nBuf: 2, - dst: "a!", - nDst: 2, - nSrc: 6, - atEOF: false, - err: nil, - }, { - desc: "exact fit dst", - src: "a\uff01", - nBuf: 2, - dst: "a!", - nDst: 2, - nSrc: 4, - atEOF: false, - err: nil, - }, { - desc: "empty dst", - src: "\u0300", - nBuf: 0, - dst: "\u0300", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "empty dst ascii", - src: "a", - nBuf: 0, - dst: "a", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst 1", - src: "a\uffe0", // ¢ - nBuf: 2, - dst: "a\u00a2", // ¢ - nDst: 1, - nSrc: 3, - atEOF: false, - err: transform.ErrShortDst, - }, { - desc: "short dst 2", - src: "不夠", - nBuf: 3, - dst: "不夠", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, + desc: "empty", + src: "", + nBuf: 10, + dst: "", + nDst: 0, + nSrc: 0, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: nil, + }, { + desc: "short source 1", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 1, + nSrc: 1, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 1, + errSpan: transform.ErrShortSrc, + }, { + desc: "short source 2", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 1, + nSrc: 3, + atEOF: false, + err: transform.ErrShortSrc, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "incomplete but terminated source 1", + src: "a\xc2", + nBuf: 10, + dst: "a\xc2", + nDst: 2, + nSrc: 4, + atEOF: true, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "incomplete but terminated source 2", + src: "a\xe0\x80", + nBuf: 10, + dst: "a\xe0\x80", + nDst: 3, + nSrc: 5, + atEOF: true, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "exact fit dst", + src: "a\uff01", + nBuf: 2, + dst: "a!", + nDst: 2, + nSrc: 6, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "exact fit dst some span", + src: "a\uff01", + nBuf: 2, + dst: "a!", + nDst: 2, + nSrc: 4, + atEOF: false, + err: nil, + nSpan: 1, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "empty dst", + src: "\u0300", + nBuf: 0, + dst: "\u0300", + nDst: 0, + nSrc: 0, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 2, + errSpan: nil, + }, { + desc: "empty dst ascii", + src: "a", + nBuf: 0, + dst: "a", + nDst: 0, + nSrc: 0, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 1, + errSpan: nil, + }, { + desc: "short dst 1", + src: "a\uffe0", // ¢ + nBuf: 2, + dst: "a\u00a2", // ¢ + nDst: 1, + nSrc: 3, + atEOF: false, + err: transform.ErrShortDst, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short dst 2", + src: "不夠", + nBuf: 3, + dst: "不夠", + nDst: 3, + nSrc: 3, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 6, + errSpan: nil, }, { // Create a narrow variant of ambiguous runes, if they exist. - desc: "ambiguous", - src: "\u2190", - nBuf: 4, - dst: "\uffe9", - nDst: 3, - nSrc: 3, - atEOF: false, - err: nil, - }, { - desc: "short dst fast path", - src: "fast", - nBuf: 3, - dst: "fast", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "short dst larger buffer", - src: "\uff21" + strings.Repeat("0", 127) + "B", - nBuf: 128, - dst: "A" + strings.Repeat("0", 127) + "B", - nDst: 128, - nSrc: 130, - atEOF: true, - err: transform.ErrShortDst, - }, { - desc: "fast path alternation", - src: "fast路徑fast路徑", - nBuf: 20, - dst: "fast路徑fast路徑", - nDst: 20, - nSrc: 20, - atEOF: true, - err: nil, + desc: "ambiguous", + src: "\u2190", + nBuf: 4, + dst: "\uffe9", + nDst: 3, + nSrc: 3, + atEOF: false, + err: nil, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "short dst fast path", + src: "fast", + nBuf: 3, + dst: "fast", + nDst: 3, + nSrc: 3, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 4, + errSpan: nil, + }, { + desc: "short dst larger buffer", + src: "\uff21" + strings.Repeat("0", 127) + "B", + nBuf: 128, + dst: "A" + strings.Repeat("0", 127) + "B", + nDst: 128, + nSrc: 130, + atEOF: true, + err: transform.ErrShortDst, + nSpan: 0, + errSpan: transform.ErrEndOfSpan, + }, { + desc: "fast path alternation", + src: "fast路徑fast路徑", + nBuf: 20, + dst: "fast路徑fast路徑", + nDst: 20, + nSrc: 20, + atEOF: true, + err: nil, + nSpan: 20, + errSpan: nil, }} { tc.doTest(t, Narrow) } diff --git a/vendor/golang.org/x/text/width/trieval.go b/vendor/golang.org/x/text/width/trieval.go index 0ecffb4c64..ca8e45fd19 100644 --- a/vendor/golang.org/x/text/width/trieval.go +++ b/vendor/golang.org/x/text/width/trieval.go @@ -1,4 +1,4 @@ -// This file was generated by go generate; DO NOT EDIT +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. package width diff --git a/vendor/golang.org/x/text/width/width.go b/vendor/golang.org/x/text/width/width.go index dc026eef6b..f1639ca68a 100644 --- a/vendor/golang.org/x/text/width/width.go +++ b/vendor/golang.org/x/text/width/width.go @@ -153,17 +153,22 @@ func (p Properties) Wide() rune { // Transformer implements the transform.Transformer interface. type Transformer struct { - t transform.Transformer + t transform.SpanningTransformer } // Reset implements the transform.Transformer interface. func (t Transformer) Reset() { t.t.Reset() } -// Transform implements the Transformer interface. +// 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) } +// Span implements the transform.SpanningTransformer interface. +func (t Transformer) Span(src []byte, atEOF bool) (n int, err error) { + return t.t.Span(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) diff --git a/vendor/golang.org/x/time/AUTHORS b/vendor/golang.org/x/time/AUTHORS deleted file mode 100644 index 15167cd746..0000000000 --- a/vendor/golang.org/x/time/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/time/CONTRIBUTING.md b/vendor/golang.org/x/time/CONTRIBUTING.md deleted file mode 100644 index 88dff59bc7..0000000000 --- a/vendor/golang.org/x/time/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/time/CONTRIBUTORS b/vendor/golang.org/x/time/CONTRIBUTORS deleted file mode 100644 index 1c4577e968..0000000000 --- a/vendor/golang.org/x/time/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/time/LICENSE b/vendor/golang.org/x/time/LICENSE deleted file mode 100644 index 6a66aea5ea..0000000000 --- a/vendor/golang.org/x/time/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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/time/PATENTS b/vendor/golang.org/x/time/PATENTS deleted file mode 100644 index 733099041f..0000000000 --- a/vendor/golang.org/x/time/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/time/README b/vendor/golang.org/x/time/README deleted file mode 100644 index 144e347b46..0000000000 --- a/vendor/golang.org/x/time/README +++ /dev/null @@ -1 +0,0 @@ -This repository provides supplementary Go time packages. diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go deleted file mode 100644 index eabcd11474..0000000000 --- a/vendor/golang.org/x/time/rate/rate.go +++ /dev/null @@ -1,380 +0,0 @@ -// 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 rate provides a rate limiter. -package rate - -import ( - "fmt" - "math" - "sync" - "time" -) - -// Limit defines the maximum frequency of some events. -// Limit is represented as number of events per second. -// A zero Limit allows no events. -type Limit float64 - -// Inf is the infinite rate limit; it allows all events (even if burst is zero). -const Inf = Limit(math.MaxFloat64) - -// Every converts a minimum time interval between events to a Limit. -func Every(interval time.Duration) Limit { - if interval <= 0 { - return Inf - } - return 1 / Limit(interval.Seconds()) -} - -// A Limiter controls how frequently events are allowed to happen. -// It implements a "token bucket" of size b, initially full and refilled -// at rate r tokens per second. -// Informally, in any large enough time interval, the Limiter limits the -// rate to r tokens per second, with a maximum burst size of b events. -// As a special case, if r == Inf (the infinite rate), b is ignored. -// See https://en.wikipedia.org/wiki/Token_bucket for more about token buckets. -// -// The zero value is a valid Limiter, but it will reject all events. -// Use NewLimiter to create non-zero Limiters. -// -// Limiter has three main methods, Allow, Reserve, and Wait. -// Most callers should use Wait. -// -// Each of the three methods consumes a single token. -// They differ in their behavior when no token is available. -// If no token is available, Allow returns false. -// If no token is available, Reserve returns a reservation for a future token -// and the amount of time the caller must wait before using it. -// If no token is available, Wait blocks until one can be obtained -// or its associated context.Context is canceled. -// -// The methods AllowN, ReserveN, and WaitN consume n tokens. -type Limiter struct { - limit Limit - burst int - - mu sync.Mutex - tokens float64 - // last is the last time the limiter's tokens field was updated - last time.Time - // lastEvent is the latest time of a rate-limited event (past or future) - lastEvent time.Time -} - -// Limit returns the maximum overall event rate. -func (lim *Limiter) Limit() Limit { - lim.mu.Lock() - defer lim.mu.Unlock() - return lim.limit -} - -// Burst returns the maximum burst size. Burst is the maximum number of tokens -// that can be consumed in a single call to Allow, Reserve, or Wait, so higher -// Burst values allow more events to happen at once. -// A zero Burst allows no events, unless limit == Inf. -func (lim *Limiter) Burst() int { - return lim.burst -} - -// NewLimiter returns a new Limiter that allows events up to rate r and permits -// bursts of at most b tokens. -func NewLimiter(r Limit, b int) *Limiter { - return &Limiter{ - limit: r, - burst: b, - } -} - -// Allow is shorthand for AllowN(time.Now(), 1). -func (lim *Limiter) Allow() bool { - return lim.AllowN(time.Now(), 1) -} - -// AllowN reports whether n events may happen at time now. -// Use this method if you intend to drop / skip events that exceed the rate limit. -// Otherwise use Reserve or Wait. -func (lim *Limiter) AllowN(now time.Time, n int) bool { - return lim.reserveN(now, n, 0).ok -} - -// A Reservation holds information about events that are permitted by a Limiter to happen after a delay. -// A Reservation may be canceled, which may enable the Limiter to permit additional events. -type Reservation struct { - ok bool - lim *Limiter - tokens int - timeToAct time.Time - // This is the Limit at reservation time, it can change later. - limit Limit -} - -// OK returns whether the limiter can provide the requested number of tokens -// within the maximum wait time. If OK is false, Delay returns InfDuration, and -// Cancel does nothing. -func (r *Reservation) OK() bool { - return r.ok -} - -// Delay is shorthand for DelayFrom(time.Now()). -func (r *Reservation) Delay() time.Duration { - return r.DelayFrom(time.Now()) -} - -// InfDuration is the duration returned by Delay when a Reservation is not OK. -const InfDuration = time.Duration(1<<63 - 1) - -// DelayFrom returns the duration for which the reservation holder must wait -// before taking the reserved action. Zero duration means act immediately. -// InfDuration means the limiter cannot grant the tokens requested in this -// Reservation within the maximum wait time. -func (r *Reservation) DelayFrom(now time.Time) time.Duration { - if !r.ok { - return InfDuration - } - delay := r.timeToAct.Sub(now) - if delay < 0 { - return 0 - } - return delay -} - -// Cancel is shorthand for CancelAt(time.Now()). -func (r *Reservation) Cancel() { - r.CancelAt(time.Now()) - return -} - -// CancelAt indicates that the reservation holder will not perform the reserved action -// and reverses the effects of this Reservation on the rate limit as much as possible, -// considering that other reservations may have already been made. -func (r *Reservation) CancelAt(now time.Time) { - if !r.ok { - return - } - - r.lim.mu.Lock() - defer r.lim.mu.Unlock() - - if r.lim.limit == Inf || r.tokens == 0 || r.timeToAct.Before(now) { - return - } - - // calculate tokens to restore - // The duration between lim.lastEvent and r.timeToAct tells us how many tokens were reserved - // after r was obtained. These tokens should not be restored. - restoreTokens := float64(r.tokens) - r.limit.tokensFromDuration(r.lim.lastEvent.Sub(r.timeToAct)) - if restoreTokens <= 0 { - return - } - // advance time to now - now, _, tokens := r.lim.advance(now) - // calculate new number of tokens - tokens += restoreTokens - if burst := float64(r.lim.burst); tokens > burst { - tokens = burst - } - // update state - r.lim.last = now - r.lim.tokens = tokens - if r.timeToAct == r.lim.lastEvent { - prevEvent := r.timeToAct.Add(r.limit.durationFromTokens(float64(-r.tokens))) - if !prevEvent.Before(now) { - r.lim.lastEvent = prevEvent - } - } - - return -} - -// Reserve is shorthand for ReserveN(time.Now(), 1). -func (lim *Limiter) Reserve() *Reservation { - return lim.ReserveN(time.Now(), 1) -} - -// ReserveN returns a Reservation that indicates how long the caller must wait before n events happen. -// The Limiter takes this Reservation into account when allowing future events. -// ReserveN returns false if n exceeds the Limiter's burst size. -// Usage example: -// r := lim.ReserveN(time.Now(), 1) -// if !r.OK() { -// // Not allowed to act! Did you remember to set lim.burst to be > 0 ? -// return -// } -// time.Sleep(r.Delay()) -// Act() -// Use this method if you wish to wait and slow down in accordance with the rate limit without dropping events. -// If you need to respect a deadline or cancel the delay, use Wait instead. -// To drop or skip events exceeding rate limit, use Allow instead. -func (lim *Limiter) ReserveN(now time.Time, n int) *Reservation { - r := lim.reserveN(now, n, InfDuration) - return &r -} - -// contextContext is a temporary(?) copy of the context.Context type -// to support both Go 1.6 using golang.org/x/net/context and Go 1.7+ -// with the built-in context package. If people ever stop using Go 1.6 -// we can remove this. -type contextContext interface { - Deadline() (deadline time.Time, ok bool) - Done() <-chan struct{} - Err() error - Value(key interface{}) interface{} -} - -// Wait is shorthand for WaitN(ctx, 1). -func (lim *Limiter) wait(ctx contextContext) (err error) { - return lim.WaitN(ctx, 1) -} - -// WaitN blocks until lim permits n events to happen. -// It returns an error if n exceeds the Limiter's burst size, the Context is -// canceled, or the expected wait time exceeds the Context's Deadline. -// The burst limit is ignored if the rate limit is Inf. -func (lim *Limiter) waitN(ctx contextContext, n int) (err error) { - if n > lim.burst && lim.limit != Inf { - return fmt.Errorf("rate: Wait(n=%d) exceeds limiter's burst %d", n, lim.burst) - } - // Check if ctx is already cancelled - select { - case <-ctx.Done(): - return ctx.Err() - default: - } - // Determine wait limit - now := time.Now() - waitLimit := InfDuration - if deadline, ok := ctx.Deadline(); ok { - waitLimit = deadline.Sub(now) - } - // Reserve - r := lim.reserveN(now, n, waitLimit) - if !r.ok { - return fmt.Errorf("rate: Wait(n=%d) would exceed context deadline", n) - } - // Wait - t := time.NewTimer(r.DelayFrom(now)) - defer t.Stop() - select { - case <-t.C: - // We can proceed. - return nil - case <-ctx.Done(): - // Context was canceled before we could proceed. Cancel the - // reservation, which may permit other events to proceed sooner. - r.Cancel() - return ctx.Err() - } -} - -// SetLimit is shorthand for SetLimitAt(time.Now(), newLimit). -func (lim *Limiter) SetLimit(newLimit Limit) { - lim.SetLimitAt(time.Now(), newLimit) -} - -// SetLimitAt sets a new Limit for the limiter. The new Limit, and Burst, may be violated -// or underutilized by those which reserved (using Reserve or Wait) but did not yet act -// before SetLimitAt was called. -func (lim *Limiter) SetLimitAt(now time.Time, newLimit Limit) { - lim.mu.Lock() - defer lim.mu.Unlock() - - now, _, tokens := lim.advance(now) - - lim.last = now - lim.tokens = tokens - lim.limit = newLimit -} - -// reserveN is a helper method for AllowN, ReserveN, and WaitN. -// maxFutureReserve specifies the maximum reservation wait duration allowed. -// reserveN returns Reservation, not *Reservation, to avoid allocation in AllowN and WaitN. -func (lim *Limiter) reserveN(now time.Time, n int, maxFutureReserve time.Duration) Reservation { - lim.mu.Lock() - - if lim.limit == Inf { - lim.mu.Unlock() - return Reservation{ - ok: true, - lim: lim, - tokens: n, - timeToAct: now, - } - } - - now, last, tokens := lim.advance(now) - - // Calculate the remaining number of tokens resulting from the request. - tokens -= float64(n) - - // Calculate the wait duration - var waitDuration time.Duration - if tokens < 0 { - waitDuration = lim.limit.durationFromTokens(-tokens) - } - - // Decide result - ok := n <= lim.burst && waitDuration <= maxFutureReserve - - // Prepare reservation - r := Reservation{ - ok: ok, - lim: lim, - limit: lim.limit, - } - if ok { - r.tokens = n - r.timeToAct = now.Add(waitDuration) - } - - // Update state - if ok { - lim.last = now - lim.tokens = tokens - lim.lastEvent = r.timeToAct - } else { - lim.last = last - } - - lim.mu.Unlock() - return r -} - -// advance calculates and returns an updated state for lim resulting from the passage of time. -// lim is not changed. -func (lim *Limiter) advance(now time.Time) (newNow time.Time, newLast time.Time, newTokens float64) { - last := lim.last - if now.Before(last) { - last = now - } - - // Avoid making delta overflow below when last is very old. - maxElapsed := lim.limit.durationFromTokens(float64(lim.burst) - lim.tokens) - elapsed := now.Sub(last) - if elapsed > maxElapsed { - elapsed = maxElapsed - } - - // Calculate the new number of tokens, due to time that passed. - delta := lim.limit.tokensFromDuration(elapsed) - tokens := lim.tokens + delta - if burst := float64(lim.burst); tokens > burst { - tokens = burst - } - - return now, last, tokens -} - -// durationFromTokens is a unit conversion function from the number of tokens to the duration -// of time it takes to accumulate them at a rate of limit tokens per second. -func (limit Limit) durationFromTokens(tokens float64) time.Duration { - seconds := tokens / float64(limit) - return time.Nanosecond * time.Duration(1e9*seconds) -} - -// tokensFromDuration is a unit conversion function from a time duration to the number of tokens -// which could be accumulated during that duration at a rate of limit tokens per second. -func (limit Limit) tokensFromDuration(d time.Duration) float64 { - return d.Seconds() * float64(limit) -} diff --git a/vendor/golang.org/x/time/rate/rate_go16.go b/vendor/golang.org/x/time/rate/rate_go16.go deleted file mode 100644 index 6bab1850f8..0000000000 --- a/vendor/golang.org/x/time/rate/rate_go16.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 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 rate - -import "golang.org/x/net/context" - -// Wait is shorthand for WaitN(ctx, 1). -func (lim *Limiter) Wait(ctx context.Context) (err error) { - return lim.waitN(ctx, 1) -} - -// WaitN blocks until lim permits n events to happen. -// It returns an error if n exceeds the Limiter's burst size, the Context is -// canceled, or the expected wait time exceeds the Context's Deadline. -func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) { - return lim.waitN(ctx, n) -} diff --git a/vendor/golang.org/x/time/rate/rate_go17.go b/vendor/golang.org/x/time/rate/rate_go17.go deleted file mode 100644 index f90d85f51e..0000000000 --- a/vendor/golang.org/x/time/rate/rate_go17.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 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 rate - -import "context" - -// Wait is shorthand for WaitN(ctx, 1). -func (lim *Limiter) Wait(ctx context.Context) (err error) { - return lim.waitN(ctx, 1) -} - -// WaitN blocks until lim permits n events to happen. -// It returns an error if n exceeds the Limiter's burst size, the Context is -// canceled, or the expected wait time exceeds the Context's Deadline. -func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) { - return lim.waitN(ctx, n) -} diff --git a/vendor/golang.org/x/time/rate/rate_test.go b/vendor/golang.org/x/time/rate/rate_test.go deleted file mode 100644 index e8add694fd..0000000000 --- a/vendor/golang.org/x/time/rate/rate_test.go +++ /dev/null @@ -1,449 +0,0 @@ -// 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.7 - -package rate - -import ( - "context" - "math" - "runtime" - "sync" - "sync/atomic" - "testing" - "time" -) - -func TestLimit(t *testing.T) { - if Limit(10) == Inf { - t.Errorf("Limit(10) == Inf should be false") - } -} - -func closeEnough(a, b Limit) bool { - return (math.Abs(float64(a)/float64(b)) - 1.0) < 1e-9 -} - -func TestEvery(t *testing.T) { - cases := []struct { - interval time.Duration - lim Limit - }{ - {0, Inf}, - {-1, Inf}, - {1 * time.Nanosecond, Limit(1e9)}, - {1 * time.Microsecond, Limit(1e6)}, - {1 * time.Millisecond, Limit(1e3)}, - {10 * time.Millisecond, Limit(100)}, - {100 * time.Millisecond, Limit(10)}, - {1 * time.Second, Limit(1)}, - {2 * time.Second, Limit(0.5)}, - {time.Duration(2.5 * float64(time.Second)), Limit(0.4)}, - {4 * time.Second, Limit(0.25)}, - {10 * time.Second, Limit(0.1)}, - {time.Duration(math.MaxInt64), Limit(1e9 / float64(math.MaxInt64))}, - } - for _, tc := range cases { - lim := Every(tc.interval) - if !closeEnough(lim, tc.lim) { - t.Errorf("Every(%v) = %v want %v", tc.interval, lim, tc.lim) - } - } -} - -const ( - d = 100 * time.Millisecond -) - -var ( - t0 = time.Now() - t1 = t0.Add(time.Duration(1) * d) - t2 = t0.Add(time.Duration(2) * d) - t3 = t0.Add(time.Duration(3) * d) - t4 = t0.Add(time.Duration(4) * d) - t5 = t0.Add(time.Duration(5) * d) - t9 = t0.Add(time.Duration(9) * d) -) - -type allow struct { - t time.Time - n int - ok bool -} - -func run(t *testing.T, lim *Limiter, allows []allow) { - for i, allow := range allows { - ok := lim.AllowN(allow.t, allow.n) - if ok != allow.ok { - t.Errorf("step %d: lim.AllowN(%v, %v) = %v want %v", - i, allow.t, allow.n, ok, allow.ok) - } - } -} - -func TestLimiterBurst1(t *testing.T) { - run(t, NewLimiter(10, 1), []allow{ - {t0, 1, true}, - {t0, 1, false}, - {t0, 1, false}, - {t1, 1, true}, - {t1, 1, false}, - {t1, 1, false}, - {t2, 2, false}, // burst size is 1, so n=2 always fails - {t2, 1, true}, - {t2, 1, false}, - }) -} - -func TestLimiterBurst3(t *testing.T) { - run(t, NewLimiter(10, 3), []allow{ - {t0, 2, true}, - {t0, 2, false}, - {t0, 1, true}, - {t0, 1, false}, - {t1, 4, false}, - {t2, 1, true}, - {t3, 1, true}, - {t4, 1, true}, - {t4, 1, true}, - {t4, 1, false}, - {t4, 1, false}, - {t9, 3, true}, - {t9, 0, true}, - }) -} - -func TestLimiterJumpBackwards(t *testing.T) { - run(t, NewLimiter(10, 3), []allow{ - {t1, 1, true}, // start at t1 - {t0, 1, true}, // jump back to t0, two tokens remain - {t0, 1, true}, - {t0, 1, false}, - {t0, 1, false}, - {t1, 1, true}, // got a token - {t1, 1, false}, - {t1, 1, false}, - {t2, 1, true}, // got another token - {t2, 1, false}, - {t2, 1, false}, - }) -} - -func TestSimultaneousRequests(t *testing.T) { - const ( - limit = 1 - burst = 5 - numRequests = 15 - ) - var ( - wg sync.WaitGroup - numOK = uint32(0) - ) - - // Very slow replenishing bucket. - lim := NewLimiter(limit, burst) - - // Tries to take a token, atomically updates the counter and decreases the wait - // group counter. - f := func() { - defer wg.Done() - if ok := lim.Allow(); ok { - atomic.AddUint32(&numOK, 1) - } - } - - wg.Add(numRequests) - for i := 0; i < numRequests; i++ { - go f() - } - wg.Wait() - if numOK != burst { - t.Errorf("numOK = %d, want %d", numOK, burst) - } -} - -func TestLongRunningQPS(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } - if runtime.GOOS == "openbsd" { - t.Skip("low resolution time.Sleep invalidates test (golang.org/issue/14183)") - return - } - - // The test runs for a few seconds executing many requests and then checks - // that overall number of requests is reasonable. - const ( - limit = 100 - burst = 100 - ) - var numOK = int32(0) - - lim := NewLimiter(limit, burst) - - var wg sync.WaitGroup - f := func() { - if ok := lim.Allow(); ok { - atomic.AddInt32(&numOK, 1) - } - wg.Done() - } - - start := time.Now() - end := start.Add(5 * time.Second) - for time.Now().Before(end) { - wg.Add(1) - go f() - - // This will still offer ~500 requests per second, but won't consume - // outrageous amount of CPU. - time.Sleep(2 * time.Millisecond) - } - wg.Wait() - elapsed := time.Since(start) - ideal := burst + (limit * float64(elapsed) / float64(time.Second)) - - // We should never get more requests than allowed. - if want := int32(ideal + 1); numOK > want { - t.Errorf("numOK = %d, want %d (ideal %f)", numOK, want, ideal) - } - // We should get very close to the number of requests allowed. - if want := int32(0.999 * ideal); numOK < want { - t.Errorf("numOK = %d, want %d (ideal %f)", numOK, want, ideal) - } -} - -type request struct { - t time.Time - n int - act time.Time - ok bool -} - -// dFromDuration converts a duration to a multiple of the global constant d -func dFromDuration(dur time.Duration) int { - // Adding a millisecond to be swallowed by the integer division - // because we don't care about small inaccuracies - return int((dur + time.Millisecond) / d) -} - -// dSince returns multiples of d since t0 -func dSince(t time.Time) int { - return dFromDuration(t.Sub(t0)) -} - -func runReserve(t *testing.T, lim *Limiter, req request) *Reservation { - return runReserveMax(t, lim, req, InfDuration) -} - -func runReserveMax(t *testing.T, lim *Limiter, req request, maxReserve time.Duration) *Reservation { - r := lim.reserveN(req.t, req.n, maxReserve) - if r.ok && (dSince(r.timeToAct) != dSince(req.act)) || r.ok != req.ok { - t.Errorf("lim.reserveN(t%d, %v, %v) = (t%d, %v) want (t%d, %v)", - dSince(req.t), req.n, maxReserve, dSince(r.timeToAct), r.ok, dSince(req.act), req.ok) - } - return &r -} - -func TestSimpleReserve(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - runReserve(t, lim, request{t0, 2, t2, true}) - runReserve(t, lim, request{t3, 2, t4, true}) -} - -func TestMix(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 3, t1, false}) // should return false because n > Burst - runReserve(t, lim, request{t0, 2, t0, true}) - run(t, lim, []allow{{t1, 2, false}}) // not enought tokens - don't allow - runReserve(t, lim, request{t1, 2, t2, true}) - run(t, lim, []allow{{t1, 1, false}}) // negative tokens - don't allow - run(t, lim, []allow{{t3, 1, true}}) -} - -func TestCancelInvalid(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - r := runReserve(t, lim, request{t0, 3, t3, false}) - r.CancelAt(t0) // should have no effect - runReserve(t, lim, request{t0, 2, t2, true}) // did not get extra tokens -} - -func TestCancelLast(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - r := runReserve(t, lim, request{t0, 2, t2, true}) - r.CancelAt(t1) // got 2 tokens back - runReserve(t, lim, request{t1, 2, t2, true}) -} - -func TestCancelTooLate(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - r := runReserve(t, lim, request{t0, 2, t2, true}) - r.CancelAt(t3) // too late to cancel - should have no effect - runReserve(t, lim, request{t3, 2, t4, true}) -} - -func TestCancel0Tokens(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - r := runReserve(t, lim, request{t0, 1, t1, true}) - runReserve(t, lim, request{t0, 1, t2, true}) - r.CancelAt(t0) // got 0 tokens back - runReserve(t, lim, request{t0, 1, t3, true}) -} - -func TestCancel1Token(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - r := runReserve(t, lim, request{t0, 2, t2, true}) - runReserve(t, lim, request{t0, 1, t3, true}) - r.CancelAt(t2) // got 1 token back - runReserve(t, lim, request{t2, 2, t4, true}) -} - -func TestCancelMulti(t *testing.T) { - lim := NewLimiter(10, 4) - - runReserve(t, lim, request{t0, 4, t0, true}) - rA := runReserve(t, lim, request{t0, 3, t3, true}) - runReserve(t, lim, request{t0, 1, t4, true}) - rC := runReserve(t, lim, request{t0, 1, t5, true}) - rC.CancelAt(t1) // get 1 token back - rA.CancelAt(t1) // get 2 tokens back, as if C was never reserved - runReserve(t, lim, request{t1, 3, t5, true}) -} - -func TestReserveJumpBack(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t1, 2, t1, true}) // start at t1 - runReserve(t, lim, request{t0, 1, t1, true}) // should violate Limit,Burst - runReserve(t, lim, request{t2, 2, t3, true}) -} - -func TestReserveJumpBackCancel(t *testing.T) { - lim := NewLimiter(10, 2) - - runReserve(t, lim, request{t1, 2, t1, true}) // start at t1 - r := runReserve(t, lim, request{t1, 2, t3, true}) - runReserve(t, lim, request{t1, 1, t4, true}) - r.CancelAt(t0) // cancel at t0, get 1 token back - runReserve(t, lim, request{t1, 2, t4, true}) // should violate Limit,Burst -} - -func TestReserveSetLimit(t *testing.T) { - lim := NewLimiter(5, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - runReserve(t, lim, request{t0, 2, t4, true}) - lim.SetLimitAt(t2, 10) - runReserve(t, lim, request{t2, 1, t4, true}) // violates Limit and Burst -} - -func TestReserveSetLimitCancel(t *testing.T) { - lim := NewLimiter(5, 2) - - runReserve(t, lim, request{t0, 2, t0, true}) - r := runReserve(t, lim, request{t0, 2, t4, true}) - lim.SetLimitAt(t2, 10) - r.CancelAt(t2) // 2 tokens back - runReserve(t, lim, request{t2, 2, t3, true}) -} - -func TestReserveMax(t *testing.T) { - lim := NewLimiter(10, 2) - maxT := d - - runReserveMax(t, lim, request{t0, 2, t0, true}, maxT) - runReserveMax(t, lim, request{t0, 1, t1, true}, maxT) // reserve for close future - runReserveMax(t, lim, request{t0, 1, t2, false}, maxT) // time to act too far in the future -} - -type wait struct { - name string - ctx context.Context - n int - delay int // in multiples of d - nilErr bool -} - -func runWait(t *testing.T, lim *Limiter, w wait) { - start := time.Now() - err := lim.WaitN(w.ctx, w.n) - delay := time.Now().Sub(start) - if (w.nilErr && err != nil) || (!w.nilErr && err == nil) || w.delay != dFromDuration(delay) { - errString := "" - if !w.nilErr { - errString = "" - } - t.Errorf("lim.WaitN(%v, lim, %v) = %v with delay %v ; want %v with delay %v", - w.name, w.n, err, delay, errString, d*time.Duration(w.delay)) - } -} - -func TestWaitSimple(t *testing.T) { - lim := NewLimiter(10, 3) - - ctx, cancel := context.WithCancel(context.Background()) - cancel() - runWait(t, lim, wait{"already-cancelled", ctx, 1, 0, false}) - - runWait(t, lim, wait{"exceed-burst-error", context.Background(), 4, 0, false}) - - runWait(t, lim, wait{"act-now", context.Background(), 2, 0, true}) - runWait(t, lim, wait{"act-later", context.Background(), 3, 2, true}) -} - -func TestWaitCancel(t *testing.T) { - lim := NewLimiter(10, 3) - - ctx, cancel := context.WithCancel(context.Background()) - runWait(t, lim, wait{"act-now", ctx, 2, 0, true}) // after this lim.tokens = 1 - go func() { - time.Sleep(d) - cancel() - }() - runWait(t, lim, wait{"will-cancel", ctx, 3, 1, false}) - // should get 3 tokens back, and have lim.tokens = 2 - t.Logf("tokens:%v last:%v lastEvent:%v", lim.tokens, lim.last, lim.lastEvent) - runWait(t, lim, wait{"act-now-after-cancel", context.Background(), 2, 0, true}) -} - -func TestWaitTimeout(t *testing.T) { - lim := NewLimiter(10, 3) - - ctx, cancel := context.WithTimeout(context.Background(), d) - defer cancel() - runWait(t, lim, wait{"act-now", ctx, 2, 0, true}) - runWait(t, lim, wait{"w-timeout-err", ctx, 3, 0, false}) -} - -func TestWaitInf(t *testing.T) { - lim := NewLimiter(Inf, 0) - - runWait(t, lim, wait{"exceed-burst-no-error", context.Background(), 3, 0, true}) -} - -func BenchmarkAllowN(b *testing.B) { - lim := NewLimiter(Every(1*time.Second), 1) - now := time.Now() - b.ReportAllocs() - b.ResetTimer() - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - lim.AllowN(now, 1) - } - }) -} diff --git a/vendor/google.golang.org/appengine/.travis.yml b/vendor/google.golang.org/appengine/.travis.yml index 7715209771..7ef8b6c7f6 100644 --- a/vendor/google.golang.org/appengine/.travis.yml +++ b/vendor/google.golang.org/appengine/.travis.yml @@ -1,18 +1,24 @@ language: go -sudo: false go: - - 1.4 + - 1.6.x + - 1.7.x + - 1.8.x + - 1.9.x + +go_import_path: google.golang.org/appengine install: - - go get -v -t -d google.golang.org/appengine/... - - mkdir sdk - - curl -o sdk.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.24.zip" - - unzip sdk.zip -d sdk - - export APPENGINE_DEV_APPSERVER=$(pwd)/sdk/go_appengine/dev_appserver.py + - go get -u -v $(go list -f '{{join .Imports "\n"}}{{"\n"}}{{join .TestImports "\n"}}' ./... | sort | uniq | grep -v appengine) + - mkdir /tmp/sdk + - curl -o /tmp/sdk.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip" + - unzip -q /tmp/sdk.zip -d /tmp/sdk + - export PATH="$PATH:/tmp/sdk/go_appengine" + - export APPENGINE_DEV_APPSERVER=/tmp/sdk/go_appengine/dev_appserver.py script: + - goapp version - go version - go test -v google.golang.org/appengine/... - go test -v -race google.golang.org/appengine/... - - sdk/go_appengine/goapp test -v google.golang.org/appengine/... + - goapp test -v google.golang.org/appengine/... diff --git a/vendor/google.golang.org/appengine/CONTRIBUTING.md b/vendor/google.golang.org/appengine/CONTRIBUTING.md new file mode 100644 index 0000000000..ffc2985208 --- /dev/null +++ b/vendor/google.golang.org/appengine/CONTRIBUTING.md @@ -0,0 +1,90 @@ +# Contributing + +1. Sign one of the contributor license agreements below. +1. Get the package: + + `go get -d google.golang.org/appengine` +1. Change into the checked out source: + + `cd $GOPATH/src/google.golang.org/appengine` +1. Fork the repo. +1. Set your fork as a remote: + + `git remote add fork git@github.com:GITHUB_USERNAME/appengine.git` +1. Make changes, commit to your fork. +1. Send a pull request with your changes. + The first line of your commit message is conventionally a one-line summary of the change, prefixed by the primary affected package, and is used as the title of your pull request. + +# Testing + +## Running system tests + +Download and install the [Go App Engine SDK](https://cloud.google.com/appengine/docs/go/download). Make sure the `go_appengine` dir is in your `PATH`. + +Set the `APPENGINE_DEV_APPSERVER` environment variable to `/path/to/go_appengine/dev_appserver.py`. + +Run tests with `goapp test`: + +``` +goapp test -v google.golang.org/appengine/... +``` + +## Contributor License Agreements + +Before we can accept your pull requests you'll need to sign a Contributor +License Agreement (CLA): + +- **If you are an individual writing original source code** and **you own the +intellectual property**, then you'll need to sign an [individual CLA][indvcla]. +- **If you work for a company that wants to allow you to contribute your work**, +then you'll need to sign a [corporate CLA][corpcla]. + +You can sign these electronically (just scroll to the bottom). After that, +we'll be able to accept your pull requests. + +## Contributor Code of Conduct + +As contributors and maintainers of this project, +and in the interest of fostering an open and welcoming community, +we pledge to respect all people who contribute through reporting issues, +posting feature requests, updating documentation, +submitting pull requests or patches, and other activities. + +We are committed to making participation in this project +a harassment-free experience for everyone, +regardless of level of experience, gender, gender identity and expression, +sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, +such as physical or electronic +addresses, without explicit permission +* Other unethical or unprofessional conduct. + +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. +By adopting this Code of Conduct, +project maintainers commit themselves to fairly and consistently +applying these principles to every aspect of managing this project. +Project maintainers who do not follow or enforce the Code of Conduct +may be permanently removed from the project team. + +This code of conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior +may be reported by opening an issue +or contacting one or more of the project maintainers. + +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, +available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) + +[indvcla]: https://developers.google.com/open-source/cla/individual +[corpcla]: https://developers.google.com/open-source/cla/corporate diff --git a/vendor/google.golang.org/appengine/README.md b/vendor/google.golang.org/appengine/README.md index 1dbb3341f0..d86768a2c6 100644 --- a/vendor/google.golang.org/appengine/README.md +++ b/vendor/google.golang.org/appengine/README.md @@ -2,18 +2,27 @@ [![Build Status](https://travis-ci.org/golang/appengine.svg)](https://travis-ci.org/golang/appengine) -This repository supports the Go runtime on App Engine, -including both classic App Engine and Managed VMs. +This repository supports the Go runtime on *App Engine standard*. It provides APIs for interacting with App Engine services. Its canonical import path is `google.golang.org/appengine`. See https://cloud.google.com/appengine/docs/go/ for more information. -File issue reports and feature requests on the [Google App Engine issue -tracker](https://code.google.com/p/googleappengine/issues/entry?template=Go%20defect). +File issue reports and feature requests on the [GitHub's issue +tracker](https://github.com/golang/appengine/issues). + +## Upgrading an App Engine app to the flexible environment + +This package does not work on *App Engine flexible*. + +There are many differences between the App Engine standard environment and +the flexible environment. + +See the [documentation on upgrading to the flexible environment](https://cloud.google.com/appengine/docs/flexible/go/upgrading). ## Directory structure + The top level directory of this repository is the `appengine` package. It contains the basic APIs (e.g. `appengine.NewContext`) that apply across APIs. Specific API @@ -23,36 +32,24 @@ There is an `internal` subdirectory that contains service protocol buffers, plus packages required for connectivity to make API calls. App Engine apps should not directly import any package under `internal`. -## Updating a Go App Engine app - -This section describes how to update a traditional Go App Engine app to use -these packages. +## Updating from legacy (`import "appengine"`) packages -### 1. Update YAML files (Managed VMs only) +If you're currently using the bare `appengine` packages +(that is, not these ones, imported via `google.golang.org/appengine`), +then you can use the `aefix` tool to help automate an upgrade to these packages. -The `app.yaml` file (and YAML files for modules) should have these new lines added: -``` -vm: true -``` -See https://cloud.google.com/appengine/docs/go/modules/#Go_Instance_scaling_and_class for details. +Run `go get google.golang.org/appengine/cmd/aefix` to install it. -### 2. Update import paths +### 1. Update import paths The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`. You will need to update your code to use import paths starting with that; for instance, code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`. -You can do that manually, or by running this command to recursively update all Go source files in the current directory: -(may require GNU sed) -``` -sed -i '/"appengine/{s,"appengine,"google.golang.org/appengine,;s,appengine_,appengine/,}' \ - $(find . -name '*.go') -``` -### 3. Update code using deprecated, removed or modified APIs +### 2. Update code using deprecated, removed or modified APIs Most App Engine services are available with exactly the same API. -A few APIs were cleaned up, and some are not available yet. -This list summarises the differences: +A few APIs were cleaned up, and there are some differences: * `appengine.Context` has been replaced with the `Context` type from `golang.org/x/net/context`. * Logging methods that were on `appengine.Context` are now functions in `google.golang.org/appengine/log`. @@ -69,5 +66,8 @@ This list summarises the differences: * `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature. Use `appengine.ModuleHostname`and `appengine.ModuleName` instead. * Most of `appengine/file` and parts of `appengine/blobstore` are deprecated. - Use [Google Cloud Storage](https://godoc.org/google.golang.org/cloud/storage) instead. -* `appengine/socket` is not required on Managed VMs. Use the standard `net` package instead. + Use [Google Cloud Storage](https://godoc.org/cloud.google.com/go/storage) if the + feature you require is not present in the new + [blobstore package](https://google.golang.org/appengine/blobstore). +* `appengine/socket` is not required on App Engine flexible environment / Managed VMs. + Use the standard `net` package instead. diff --git a/vendor/google.golang.org/appengine/aetest/instance.go b/vendor/google.golang.org/appengine/aetest/instance.go index a8f99d8225..77323f7518 100644 --- a/vendor/google.golang.org/appengine/aetest/instance.go +++ b/vendor/google.golang.org/appengine/aetest/instance.go @@ -3,6 +3,7 @@ package aetest import ( "io" "net/http" + "time" "golang.org/x/net/context" "google.golang.org/appengine" @@ -24,6 +25,9 @@ type Options struct { // StronglyConsistentDatastore is whether the local datastore should be // strongly consistent. This will diverge from production behaviour. StronglyConsistentDatastore bool + // StartupTimeout is a duration to wait for instance startup. + // By default, 15 seconds. + StartupTimeout time.Duration } // NewContext starts an instance of the development API server, and returns diff --git a/vendor/google.golang.org/appengine/aetest/instance_test.go b/vendor/google.golang.org/appengine/aetest/instance_test.go index edc3ecd498..e7003afd96 100644 --- a/vendor/google.golang.org/appengine/aetest/instance_test.go +++ b/vendor/google.golang.org/appengine/aetest/instance_test.go @@ -6,6 +6,7 @@ import ( "google.golang.org/appengine" "google.golang.org/appengine/datastore" + "google.golang.org/appengine/internal" "google.golang.org/appengine/memcache" "google.golang.org/appengine/user" ) @@ -15,6 +16,8 @@ func TestBasicAPICalls(t *testing.T) { if os.Getenv("APPENGINE_DEV_APPSERVER") == "" { t.Skip("APPENGINE_DEV_APPSERVER not set") } + resetEnv := internal.SetTestEnv() + defer resetEnv() inst, err := NewInstance(nil) if err != nil { diff --git a/vendor/google.golang.org/appengine/aetest/instance_vm.go b/vendor/google.golang.org/appengine/aetest/instance_vm.go index ee8148011e..8299790002 100644 --- a/vendor/google.golang.org/appengine/aetest/instance_vm.go +++ b/vendor/google.golang.org/appengine/aetest/instance_vm.go @@ -27,11 +27,17 @@ import ( // If opts is nil the default values are used. func NewInstance(opts *Options) (Instance, error) { i := &instance{ - opts: opts, - appID: "testapp", + opts: opts, + appID: "testapp", + startupTimeout: 15 * time.Second, } - if opts != nil && opts.AppID != "" { - i.appID = opts.AppID + if opts != nil { + if opts.AppID != "" { + i.appID = opts.AppID + } + if opts.StartupTimeout > 0 { + i.startupTimeout = opts.StartupTimeout + } } if err := i.startChild(); err != nil { return nil, err @@ -47,13 +53,14 @@ func newSessionID() string { // instance implements the Instance interface. type instance struct { - opts *Options - child *exec.Cmd - apiURL *url.URL // base URL of API HTTP server - adminURL string // base URL of admin HTTP server - appDir string - appID string - relFuncs []func() // funcs to release any associated contexts + opts *Options + child *exec.Cmd + apiURL *url.URL // base URL of API HTTP server + adminURL string // base URL of admin HTTP server + appDir string + appID string + startupTimeout time.Duration + relFuncs []func() // funcs to release any associated contexts } // NewRequest returns an *http.Request associated with this instance. @@ -64,7 +71,7 @@ func (i *instance) NewRequest(method, urlStr string, body io.Reader) (*http.Requ } // Associate this request. - release := internal.RegisterTestRequest(req, i.apiURL, func(ctx context.Context) context.Context { + req, release := internal.RegisterTestRequest(req, i.apiURL, func(ctx context.Context) context.Context { ctx = internal.WithAppIDOverride(ctx, "dev~"+i.appID) return ctx }) @@ -79,7 +86,8 @@ func (i *instance) Close() (err error) { rel() } i.relFuncs = nil - if i.child == nil { + child := i.child + if child == nil { return nil } defer func() { @@ -90,10 +98,10 @@ func (i *instance) Close() (err error) { } }() - if p := i.child.Process; p != nil { + if p := child.Process; p != nil { errc := make(chan error, 1) go func() { - errc <- i.child.Wait() + errc <- child.Wait() }() // Call the quit handler on the admin server. @@ -103,7 +111,6 @@ func (i *instance) Close() (err error) { return fmt.Errorf("unable to call /quit handler: %v", err) } res.Body.Close() - select { case <-time.After(15 * time.Second): p.Kill() @@ -234,7 +241,7 @@ func (i *instance) startChild() (err error) { }() select { - case <-time.After(15 * time.Second): + case <-time.After(i.startupTimeout): if p := i.child.Process; p != nil { p.Kill() } @@ -262,7 +269,6 @@ application: %s version: 1 runtime: go api_version: go1 -vm: true handlers: - url: /.* diff --git a/vendor/google.golang.org/appengine/appengine.go b/vendor/google.golang.org/appengine/appengine.go index aa23a7ab6d..76dedc81d1 100644 --- a/vendor/google.golang.org/appengine/appengine.go +++ b/vendor/google.golang.org/appengine/appengine.go @@ -17,6 +17,43 @@ import ( "google.golang.org/appengine/internal" ) +// The gophers party all night; the rabbits provide the beats. + +// Main is the principal entry point for an app running in App Engine. +// +// On App Engine Flexible it installs a trivial health checker if one isn't +// already registered, and starts listening on port 8080 (overridden by the +// $PORT environment variable). +// +// See https://cloud.google.com/appengine/docs/flexible/custom-runtimes#health_check_requests +// for details on how to do your own health checking. +// +// On App Engine Standard it ensures the server has started and is prepared to +// receive requests. +// +// Main never returns. +// +// Main is designed so that the app's main package looks like this: +// +// package main +// +// import ( +// "google.golang.org/appengine" +// +// _ "myapp/package0" +// _ "myapp/package1" +// ) +// +// func main() { +// appengine.Main() +// } +// +// The "myapp/packageX" packages are expected to register HTTP handlers +// in their init functions. +func Main() { + internal.Main() +} + // IsDevAppServer reports whether the App Engine app is running in the // development App Server. func IsDevAppServer() bool { @@ -26,7 +63,7 @@ func IsDevAppServer() bool { // NewContext returns a context for an in-flight HTTP request. // This function is cheap. func NewContext(req *http.Request) context.Context { - return WithContext(context.Background(), req) + return internal.ReqContext(req) } // WithContext returns a copy of the parent context diff --git a/vendor/google.golang.org/appengine/appengine_vm.go b/vendor/google.golang.org/appengine/appengine_vm.go index 2f7759067f..f4b645aad3 100644 --- a/vendor/google.golang.org/appengine/appengine_vm.go +++ b/vendor/google.golang.org/appengine/appengine_vm.go @@ -12,45 +12,9 @@ import ( "google.golang.org/appengine/internal" ) -// The comment below must not be changed. -// It is used by go-app-builder to recognise that this package has -// the Main function to use in the synthetic main. -// The gophers party all night; the rabbits provide the beats. - -// Main is the principal entry point for a Managed VMs app. -// It installs a trivial health checker if one isn't already registered, -// and starts listening on port 8080 (overridden by the $PORT environment -// variable). -// -// See https://cloud.google.com/appengine/docs/managed-vms/custom-runtimes#health_check_requests -// for details on how to do your own health checking. -// -// Main never returns. -// -// Main is designed so that the app's main package looks like this: -// -// package main -// -// import ( -// "google.golang.org/appengine" -// -// _ "myapp/package0" -// _ "myapp/package1" -// ) -// -// func main() { -// appengine.Main() -// } -// -// The "myapp/packageX" packages are expected to register HTTP handlers -// in their init functions. -func Main() { - internal.Main() -} - // BackgroundContext returns a context not associated with a request. // This should only be used when not servicing a request. -// This only works on Managed VMs. +// This only works in App Engine "flexible environment". func BackgroundContext() context.Context { return internal.BackgroundContext() } diff --git a/vendor/google.golang.org/appengine/capability/capability.go b/vendor/google.golang.org/appengine/capability/capability.go index 84391d572c..3a60bd55fe 100644 --- a/vendor/google.golang.org/appengine/capability/capability.go +++ b/vendor/google.golang.org/appengine/capability/capability.go @@ -6,7 +6,7 @@ Package capability exposes information about outages and scheduled downtime for specific API capabilities. -This package does not work on Managed VMs. +This package does not work in App Engine "flexible environment". Example: if !capability.Enabled(c, "datastore_v3", "write") { diff --git a/vendor/google.golang.org/appengine/channel/channel.go b/vendor/google.golang.org/appengine/channel/channel.go index dfe0a3fff1..96945f6d68 100644 --- a/vendor/google.golang.org/appengine/channel/channel.go +++ b/vendor/google.golang.org/appengine/channel/channel.go @@ -17,6 +17,10 @@ which must be unique to the client that will use the returned token. Send sends a message to the client over the channel identified by clientID. channel.Send(c, "player1", "Game over!") + +Deprecated: The Channel API feature has been deprecated and is going to be removed. See the Channel API Turndown document for details and timetable. + +https://cloud.google.com/appengine/docs/deprecations/channel */ package channel // import "google.golang.org/appengine/channel" diff --git a/vendor/google.golang.org/appengine/cloudsql/cloudsql.go b/vendor/google.golang.org/appengine/cloudsql/cloudsql.go index 795fba12f9..7b27e6b12d 100644 --- a/vendor/google.golang.org/appengine/cloudsql/cloudsql.go +++ b/vendor/google.golang.org/appengine/cloudsql/cloudsql.go @@ -5,7 +5,7 @@ /* Package cloudsql exposes access to Google Cloud SQL databases. -This package does not work on Managed VMs. +This package does not work in App Engine "flexible environment". This package is intended for MySQL drivers to make App Engine-specific connections. Applications should use this package through database/sql: diff --git a/vendor/google.golang.org/appengine/cloudsql/cloudsql_vm.go b/vendor/google.golang.org/appengine/cloudsql/cloudsql_vm.go index c3f76f2110..90fa7b31e0 100644 --- a/vendor/google.golang.org/appengine/cloudsql/cloudsql_vm.go +++ b/vendor/google.golang.org/appengine/cloudsql/cloudsql_vm.go @@ -12,5 +12,5 @@ import ( ) func connect(instance string) (net.Conn, error) { - return nil, errors.New("cloudsql: not supported in Managed VMs") + return nil, errors.New(`cloudsql: not supported in App Engine "flexible environment"`) } diff --git a/vendor/google.golang.org/appengine/cmd/aebundler/aebundler.go b/vendor/google.golang.org/appengine/cmd/aebundler/aebundler.go index 9080ce2c2b..c66849e833 100644 --- a/vendor/google.golang.org/appengine/cmd/aebundler/aebundler.go +++ b/vendor/google.golang.org/appengine/cmd/aebundler/aebundler.go @@ -8,7 +8,7 @@ // A main func is synthesized if one does not exist. // // A sample Dockerfile to be used with this bundler could look like this: -// FROM gcr.io/google_appengine/go-compat +// FROM gcr.io/google-appengine/go-compat // ADD . /app // RUN GOPATH=/app/_gopath go build -tags appenginevm -o /app/_ah/exe package main @@ -31,7 +31,7 @@ import ( var ( output = flag.String("o", "", "name of output tar file or '-' for stdout") rootDir = flag.String("root", ".", "directory name of application root") - vm = flag.Bool("vm", true, "bundle a Managed VM app") + vm = flag.Bool("vm", true, `bundle an app for App Engine "flexible environment"`) skipFiles = map[string]bool{ ".git": true, diff --git a/vendor/google.golang.org/appengine/cmd/aedeploy/aedeploy.go b/vendor/google.golang.org/appengine/cmd/aedeploy/aedeploy.go index 9c608ee866..8093c93ff4 100644 --- a/vendor/google.golang.org/appengine/cmd/aedeploy/aedeploy.go +++ b/vendor/google.golang.org/appengine/cmd/aedeploy/aedeploy.go @@ -2,7 +2,7 @@ // Use of this source code is governed by the Apache 2.0 // license that can be found in the LICENSE file. -// Program aedeploy assists with deploying Go Managed VM apps to production. +// Program aedeploy assists with deploying App Engine "flexible environment" Go apps to production. // A temporary directory is created; the app, its subdirectories, and all its // dependencies from $GOPATH are copied into the directory; then the app // is deployed to production with the provided command. @@ -16,32 +16,29 @@ package main import ( "flag" "fmt" - "go/build" - "io" - "io/ioutil" + "log" "os" "os/exec" - "path/filepath" "strings" ) -var ( - skipFiles = map[string]bool{ - ".git": true, - ".gitconfig": true, - ".hg": true, - ".travis.yml": true, - } - - gopathCache = map[string]string{} -) - func usage() { fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) - fmt.Fprintf(os.Stderr, "\t%s gcloud --verbosity debug preview app deploy --version myversion ./app.yaml\tDeploy app to production\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "\t%s gcloud --verbosity debug app deploy --version myversion ./app.yaml\tDeploy app to production\n", os.Args[0]) +} + +var verbose bool + +// vlogf logs to stderr if the "-v" flag is provided. +func vlogf(f string, v ...interface{}) { + if !verbose { + return + } + log.Printf("[aedeploy] "+f, v...) } func main() { + flag.BoolVar(&verbose, "v", false, "Verbose logging.") flag.Usage = usage flag.Parse() if flag.NArg() < 1 { @@ -49,35 +46,23 @@ func main() { os.Exit(1) } - if err := aedeploy(); err != nil { - fmt.Fprintf(os.Stderr, os.Args[0]+": Error: %v\n", err) - os.Exit(1) - } -} - -func aedeploy() error { - tags := []string{"appenginevm"} - app, err := analyze(tags) - if err != nil { - return err - } - - tmpDir, err := app.bundle() - if tmpDir != "" { - defer os.RemoveAll(tmpDir) - } - if err != nil { - return err + notice := func() { + fmt.Fprintln(os.Stderr, `NOTICE: aedeploy is deprecated. Just use "gcloud app deploy".`) } - if err := os.Chdir(tmpDir); err != nil { - return fmt.Errorf("unable to chdir to %v: %v", tmpDir, err) + notice() + if err := deploy(); err != nil { + fmt.Fprintf(os.Stderr, os.Args[0]+": Error: %v\n", err) + notice() + fmt.Fprintln(os.Stderr, `You might need to update gcloud. Run "gcloud components update".`) + os.Exit(1) } - return deploy() + notice() // Make sure they see it at the end. } // deploy calls the provided command to deploy the app from the temporary directory. func deploy() error { + vlogf("Running command %v", flag.Args()) cmd := exec.Command(flag.Arg(0), flag.Args()[1:]...) cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr if err := cmd.Run(); err != nil { @@ -85,180 +70,3 @@ func deploy() error { } return nil } - -type app struct { - appFiles []string - imports map[string]string -} - -// analyze checks the app for building with the given build tags and returns -// app files, and a map of full directory import names to original import names. -func analyze(tags []string) (*app, error) { - ctxt := buildContext(tags) - appFiles, err := appFiles(ctxt) - if err != nil { - return nil, err - } - gopath := filepath.SplitList(ctxt.GOPATH) - im, err := imports(ctxt, ".", gopath) - return &app{ - appFiles: appFiles, - imports: im, - }, err -} - -// buildContext returns the context for building the source. -func buildContext(tags []string) *build.Context { - return &build.Context{ - GOARCH: "amd64", - GOOS: "linux", - GOROOT: build.Default.GOROOT, - GOPATH: build.Default.GOPATH, - Compiler: build.Default.Compiler, - BuildTags: append(build.Default.BuildTags, tags...), - } -} - -// bundle bundles the app into a temporary directory. -func (s *app) bundle() (tmpdir string, err error) { - workDir, err := ioutil.TempDir("", "aedeploy") - if err != nil { - return "", fmt.Errorf("unable to create tmpdir: %v", err) - } - - for srcDir, importName := range s.imports { - dstDir := "_gopath/src/" + importName - if err := copyTree(workDir, dstDir, srcDir); err != nil { - return workDir, fmt.Errorf("unable to copy directory %v to %v: %v", srcDir, dstDir, err) - } - } - if err := copyTree(workDir, ".", "."); err != nil { - return workDir, fmt.Errorf("unable to copy root directory to /app: %v", err) - } - return workDir, nil -} - -// imports returns a map of all import directories (recursively) used by the app. -// The return value maps full directory names to original import names. -func imports(ctxt *build.Context, srcDir string, gopath []string) (map[string]string, error) { - pkg, err := ctxt.ImportDir(srcDir, 0) - if err != nil { - return nil, err - } - - // Resolve all non-standard-library imports - result := make(map[string]string) - for _, v := range pkg.Imports { - if !strings.Contains(v, ".") { - continue - } - src, err := findInGopath(v, gopath) - if err != nil { - return nil, fmt.Errorf("unable to find import %v in gopath %v: %v", v, gopath, err) - } - if _, ok := result[src]; ok { // Already processed - continue - } - result[src] = v - im, err := imports(ctxt, src, gopath) - if err != nil { - return nil, fmt.Errorf("unable to parse package %v: %v", src, err) - } - for k, v := range im { - result[k] = v - } - } - return result, nil -} - -// findInGopath searches the gopath for the named import directory. -func findInGopath(dir string, gopath []string) (string, error) { - if v, ok := gopathCache[dir]; ok { - return v, nil - } - for _, v := range gopath { - dst := filepath.Join(v, "src", dir) - if _, err := os.Stat(dst); err == nil { - gopathCache[dir] = dst - return dst, nil - } - } - return "", fmt.Errorf("unable to find package %v in gopath %v", dir, gopath) -} - -// copyTree copies srcDir to dstDir relative to dstRoot, ignoring skipFiles. -func copyTree(dstRoot, dstDir, srcDir string) error { - d := filepath.Join(dstRoot, dstDir) - if err := os.MkdirAll(d, 0755); err != nil { - return fmt.Errorf("unable to create directory %q: %v", d, err) - } - - entries, err := ioutil.ReadDir(srcDir) - if err != nil { - return fmt.Errorf("unable to read dir %q: %v", srcDir, err) - } - for _, entry := range entries { - n := entry.Name() - if skipFiles[n] { - continue - } - s := filepath.Join(srcDir, n) - if entry.Mode()&os.ModeSymlink == os.ModeSymlink { - if entry, err = os.Stat(s); err != nil { - return fmt.Errorf("unable to stat %v: %v", s, err) - } - } - d := filepath.Join(dstDir, n) - if entry.IsDir() { - if err := copyTree(dstRoot, d, s); err != nil { - return fmt.Errorf("unable to copy dir %q to %q: %v", s, d, err) - } - continue - } - if err := copyFile(dstRoot, d, s); err != nil { - return fmt.Errorf("unable to copy dir %q to %q: %v", s, d, err) - } - } - return nil -} - -// copyFile copies src to dst relative to dstRoot. -func copyFile(dstRoot, dst, src string) error { - s, err := os.Open(src) - if err != nil { - return fmt.Errorf("unable to open %q: %v", src, err) - } - defer s.Close() - - dst = filepath.Join(dstRoot, dst) - d, err := os.Create(dst) - if err != nil { - return fmt.Errorf("unable to create %q: %v", dst, err) - } - _, err = io.Copy(d, s) - if err != nil { - d.Close() // ignore error, copy already failed. - return fmt.Errorf("unable to copy %q to %q: %v", src, dst, err) - } - if err := d.Close(); err != nil { - return fmt.Errorf("unable to close %q: %v", dst, err) - } - return nil -} - -// appFiles returns a list of all Go source files in the app. -func appFiles(ctxt *build.Context) ([]string, error) { - pkg, err := ctxt.ImportDir(".", 0) - if err != nil { - return nil, err - } - if !pkg.IsCommand() { - return nil, fmt.Errorf(`the root of your app needs to be package "main" (currently %q). Please see https://cloud.google.com/appengine/docs/go/managed-vms for more details on structuring your app.`, pkg.Name) - } - var appFiles []string - for _, f := range pkg.GoFiles { - n := filepath.Join(".", f) - appFiles = append(appFiles, n) - } - return appFiles, nil -} diff --git a/vendor/google.golang.org/appengine/cmd/aefix/ae.go b/vendor/google.golang.org/appengine/cmd/aefix/ae.go new file mode 100644 index 0000000000..0fe2d4ae9f --- /dev/null +++ b/vendor/google.golang.org/appengine/cmd/aefix/ae.go @@ -0,0 +1,185 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +package main + +import ( + "go/ast" + "path" + "strconv" + "strings" +) + +const ( + ctxPackage = "golang.org/x/net/context" + + newPackageBase = "google.golang.org/" + stutterPackage = false +) + +func init() { + register(fix{ + "ae", + "2016-04-15", + aeFn, + `Update old App Engine APIs to new App Engine APIs`, + }) +} + +// logMethod is the set of methods on appengine.Context used for logging. +var logMethod = map[string]bool{ + "Debugf": true, + "Infof": true, + "Warningf": true, + "Errorf": true, + "Criticalf": true, +} + +// mapPackage turns "appengine" into "google.golang.org/appengine", etc. +func mapPackage(s string) string { + if stutterPackage { + s += "/" + path.Base(s) + } + return newPackageBase + s +} + +func aeFn(f *ast.File) bool { + // During the walk, we track the last thing seen that looks like + // an appengine.Context, and reset it once the walk leaves a func. + var lastContext *ast.Ident + + fixed := false + + // Update imports. + mainImp := "appengine" + for _, imp := range f.Imports { + pth, _ := strconv.Unquote(imp.Path.Value) + if pth == "appengine" || strings.HasPrefix(pth, "appengine/") { + newPth := mapPackage(pth) + imp.Path.Value = strconv.Quote(newPth) + fixed = true + + if pth == "appengine" { + mainImp = newPth + } + } + } + + // Update any API changes. + walk(f, func(n interface{}) { + if ft, ok := n.(*ast.FuncType); ok && ft.Params != nil { + // See if this func has an `appengine.Context arg`. + // If so, remember its identifier. + for _, param := range ft.Params.List { + if !isPkgDot(param.Type, "appengine", "Context") { + continue + } + if len(param.Names) == 1 { + lastContext = param.Names[0] + break + } + } + return + } + + if as, ok := n.(*ast.AssignStmt); ok { + if len(as.Lhs) == 1 && len(as.Rhs) == 1 { + // If this node is an assignment from an appengine.NewContext invocation, + // remember the identifier on the LHS. + if isCall(as.Rhs[0], "appengine", "NewContext") { + if ident, ok := as.Lhs[0].(*ast.Ident); ok { + lastContext = ident + return + } + } + // x (=|:=) appengine.Timeout(y, z) + // should become + // x, _ (=|:=) context.WithTimeout(y, z) + if isCall(as.Rhs[0], "appengine", "Timeout") { + addImport(f, ctxPackage) + as.Lhs = append(as.Lhs, ast.NewIdent("_")) + // isCall already did the type checking. + sel := as.Rhs[0].(*ast.CallExpr).Fun.(*ast.SelectorExpr) + sel.X = ast.NewIdent("context") + sel.Sel = ast.NewIdent("WithTimeout") + fixed = true + return + } + } + return + } + + // If this node is a FuncDecl, we've finished the function, so reset lastContext. + if _, ok := n.(*ast.FuncDecl); ok { + lastContext = nil + return + } + + if call, ok := n.(*ast.CallExpr); ok { + if isPkgDot(call.Fun, "appengine", "Datacenter") && len(call.Args) == 0 { + insertContext(f, call, lastContext) + fixed = true + return + } + if isPkgDot(call.Fun, "taskqueue", "QueueStats") && len(call.Args) == 3 { + call.Args = call.Args[:2] // drop last arg + fixed = true + return + } + + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return + } + if lastContext != nil && refersTo(sel.X, lastContext) && logMethod[sel.Sel.Name] { + // c.Errorf(...) + // should become + // log.Errorf(c, ...) + addImport(f, mapPackage("appengine/log")) + sel.X = &ast.Ident{ // ast.NewIdent doesn't preserve the position. + NamePos: sel.X.Pos(), + Name: "log", + } + insertContext(f, call, lastContext) + fixed = true + return + } + } + }) + + // Change any `appengine.Context` to `context.Context`. + // Do this in a separate walk because the previous walk + // wants to identify "appengine.Context". + walk(f, func(n interface{}) { + expr, ok := n.(ast.Expr) + if ok && isPkgDot(expr, "appengine", "Context") { + addImport(f, ctxPackage) + // isPkgDot did the type checking. + n.(*ast.SelectorExpr).X.(*ast.Ident).Name = "context" + fixed = true + return + } + }) + + // The changes above might remove the need to import "appengine". + // Check if it's used, and drop it if it isn't. + if fixed && !usesImport(f, mainImp) { + deleteImport(f, mainImp) + } + + return fixed +} + +// ctx may be nil. +func insertContext(f *ast.File, call *ast.CallExpr, ctx *ast.Ident) { + if ctx == nil { + // context is unknown, so use a plain "ctx". + ctx = ast.NewIdent("ctx") + } else { + // Create a fresh *ast.Ident so we drop the position information. + ctx = ast.NewIdent(ctx.Name) + } + + call.Args = append([]ast.Expr{ctx}, call.Args...) +} diff --git a/vendor/google.golang.org/appengine/cmd/aefix/ae_test.go b/vendor/google.golang.org/appengine/cmd/aefix/ae_test.go new file mode 100644 index 0000000000..21f5695b9a --- /dev/null +++ b/vendor/google.golang.org/appengine/cmd/aefix/ae_test.go @@ -0,0 +1,144 @@ +// Copyright 2016 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +package main + +func init() { + addTestCases(aeTests, nil) +} + +var aeTests = []testCase{ + // Collection of fixes: + // - imports + // - appengine.Timeout -> context.WithTimeout + // - add ctx arg to appengine.Datacenter + // - logging API + { + Name: "ae.0", + In: `package foo + +import ( + "net/http" + "time" + + "appengine" + "appengine/datastore" +) + +func f(w http.ResponseWriter, r *http.Request) { + c := appengine.NewContext(r) + + c = appengine.Timeout(c, 5*time.Second) + err := datastore.ErrNoSuchEntity + c.Errorf("Something interesting happened: %v", err) + _ = appengine.Datacenter() +} +`, + Out: `package foo + +import ( + "net/http" + "time" + + "golang.org/x/net/context" + "google.golang.org/appengine" + "google.golang.org/appengine/datastore" + "google.golang.org/appengine/log" +) + +func f(w http.ResponseWriter, r *http.Request) { + c := appengine.NewContext(r) + + c, _ = context.WithTimeout(c, 5*time.Second) + err := datastore.ErrNoSuchEntity + log.Errorf(c, "Something interesting happened: %v", err) + _ = appengine.Datacenter(c) +} +`, + }, + + // Updating a function that takes an appengine.Context arg. + { + Name: "ae.1", + In: `package foo + +import ( + "appengine" +) + +func LogSomething(c2 appengine.Context) { + c2.Warningf("Stand back! I'm going to try science!") +} +`, + Out: `package foo + +import ( + "golang.org/x/net/context" + "google.golang.org/appengine/log" +) + +func LogSomething(c2 context.Context) { + log.Warningf(c2, "Stand back! I'm going to try science!") +} +`, + }, + + // Less widely used API changes: + // - drop maxTasks arg to taskqueue.QueueStats + { + Name: "ae.2", + In: `package foo + +import ( + "appengine" + "appengine/taskqueue" +) + +func f(ctx appengine.Context) { + stats, err := taskqueue.QueueStats(ctx, []string{"one", "two"}, 0) +} +`, + Out: `package foo + +import ( + "golang.org/x/net/context" + "google.golang.org/appengine/taskqueue" +) + +func f(ctx context.Context) { + stats, err := taskqueue.QueueStats(ctx, []string{"one", "two"}) +} +`, + }, + + // Check that the main "appengine" import will not be dropped + // if an appengine.Context -> context.Context change happens + // but the appengine package is still referenced. + { + Name: "ae.3", + In: `package foo + +import ( + "appengine" + "io" +) + +func f(ctx appengine.Context, w io.Writer) { + _ = appengine.IsDevAppServer() +} +`, + Out: `package foo + +import ( + "golang.org/x/net/context" + "google.golang.org/appengine" + "io" +) + +func f(ctx context.Context, w io.Writer) { + _ = appengine.IsDevAppServer() +} +`, + }, +} diff --git a/vendor/google.golang.org/appengine/cmd/aefix/fix.go b/vendor/google.golang.org/appengine/cmd/aefix/fix.go new file mode 100644 index 0000000000..a100be794e --- /dev/null +++ b/vendor/google.golang.org/appengine/cmd/aefix/fix.go @@ -0,0 +1,848 @@ +// 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 main + +import ( + "fmt" + "go/ast" + "go/parser" + "go/token" + "os" + "path" + "reflect" + "strconv" + "strings" +) + +type fix struct { + name string + date string // date that fix was introduced, in YYYY-MM-DD format + f func(*ast.File) bool + desc string +} + +// main runs sort.Sort(byName(fixes)) before printing list of fixes. +type byName []fix + +func (f byName) Len() int { return len(f) } +func (f byName) Swap(i, j int) { f[i], f[j] = f[j], f[i] } +func (f byName) Less(i, j int) bool { return f[i].name < f[j].name } + +// main runs sort.Sort(byDate(fixes)) before applying fixes. +type byDate []fix + +func (f byDate) Len() int { return len(f) } +func (f byDate) Swap(i, j int) { f[i], f[j] = f[j], f[i] } +func (f byDate) Less(i, j int) bool { return f[i].date < f[j].date } + +var fixes []fix + +func register(f fix) { + fixes = append(fixes, f) +} + +// walk traverses the AST x, calling visit(y) for each node y in the tree but +// also with a pointer to each ast.Expr, ast.Stmt, and *ast.BlockStmt, +// in a bottom-up traversal. +func walk(x interface{}, visit func(interface{})) { + walkBeforeAfter(x, nop, visit) +} + +func nop(interface{}) {} + +// walkBeforeAfter is like walk but calls before(x) before traversing +// x's children and after(x) afterward. +func walkBeforeAfter(x interface{}, before, after func(interface{})) { + before(x) + + switch n := x.(type) { + default: + panic(fmt.Errorf("unexpected type %T in walkBeforeAfter", x)) + + case nil: + + // pointers to interfaces + case *ast.Decl: + walkBeforeAfter(*n, before, after) + case *ast.Expr: + walkBeforeAfter(*n, before, after) + case *ast.Spec: + walkBeforeAfter(*n, before, after) + case *ast.Stmt: + walkBeforeAfter(*n, before, after) + + // pointers to struct pointers + case **ast.BlockStmt: + walkBeforeAfter(*n, before, after) + case **ast.CallExpr: + walkBeforeAfter(*n, before, after) + case **ast.FieldList: + walkBeforeAfter(*n, before, after) + case **ast.FuncType: + walkBeforeAfter(*n, before, after) + case **ast.Ident: + walkBeforeAfter(*n, before, after) + case **ast.BasicLit: + walkBeforeAfter(*n, before, after) + + // pointers to slices + case *[]ast.Decl: + walkBeforeAfter(*n, before, after) + case *[]ast.Expr: + walkBeforeAfter(*n, before, after) + case *[]*ast.File: + walkBeforeAfter(*n, before, after) + case *[]*ast.Ident: + walkBeforeAfter(*n, before, after) + case *[]ast.Spec: + walkBeforeAfter(*n, before, after) + case *[]ast.Stmt: + walkBeforeAfter(*n, before, after) + + // These are ordered and grouped to match ../../pkg/go/ast/ast.go + case *ast.Field: + walkBeforeAfter(&n.Names, before, after) + walkBeforeAfter(&n.Type, before, after) + walkBeforeAfter(&n.Tag, before, after) + case *ast.FieldList: + for _, field := range n.List { + walkBeforeAfter(field, before, after) + } + case *ast.BadExpr: + case *ast.Ident: + case *ast.Ellipsis: + walkBeforeAfter(&n.Elt, before, after) + case *ast.BasicLit: + case *ast.FuncLit: + walkBeforeAfter(&n.Type, before, after) + walkBeforeAfter(&n.Body, before, after) + case *ast.CompositeLit: + walkBeforeAfter(&n.Type, before, after) + walkBeforeAfter(&n.Elts, before, after) + case *ast.ParenExpr: + walkBeforeAfter(&n.X, before, after) + case *ast.SelectorExpr: + walkBeforeAfter(&n.X, before, after) + case *ast.IndexExpr: + walkBeforeAfter(&n.X, before, after) + walkBeforeAfter(&n.Index, before, after) + case *ast.SliceExpr: + walkBeforeAfter(&n.X, before, after) + if n.Low != nil { + walkBeforeAfter(&n.Low, before, after) + } + if n.High != nil { + walkBeforeAfter(&n.High, before, after) + } + case *ast.TypeAssertExpr: + walkBeforeAfter(&n.X, before, after) + walkBeforeAfter(&n.Type, before, after) + case *ast.CallExpr: + walkBeforeAfter(&n.Fun, before, after) + walkBeforeAfter(&n.Args, before, after) + case *ast.StarExpr: + walkBeforeAfter(&n.X, before, after) + case *ast.UnaryExpr: + walkBeforeAfter(&n.X, before, after) + case *ast.BinaryExpr: + walkBeforeAfter(&n.X, before, after) + walkBeforeAfter(&n.Y, before, after) + case *ast.KeyValueExpr: + walkBeforeAfter(&n.Key, before, after) + walkBeforeAfter(&n.Value, before, after) + + case *ast.ArrayType: + walkBeforeAfter(&n.Len, before, after) + walkBeforeAfter(&n.Elt, before, after) + case *ast.StructType: + walkBeforeAfter(&n.Fields, before, after) + case *ast.FuncType: + walkBeforeAfter(&n.Params, before, after) + if n.Results != nil { + walkBeforeAfter(&n.Results, before, after) + } + case *ast.InterfaceType: + walkBeforeAfter(&n.Methods, before, after) + case *ast.MapType: + walkBeforeAfter(&n.Key, before, after) + walkBeforeAfter(&n.Value, before, after) + case *ast.ChanType: + walkBeforeAfter(&n.Value, before, after) + + case *ast.BadStmt: + case *ast.DeclStmt: + walkBeforeAfter(&n.Decl, before, after) + case *ast.EmptyStmt: + case *ast.LabeledStmt: + walkBeforeAfter(&n.Stmt, before, after) + case *ast.ExprStmt: + walkBeforeAfter(&n.X, before, after) + case *ast.SendStmt: + walkBeforeAfter(&n.Chan, before, after) + walkBeforeAfter(&n.Value, before, after) + case *ast.IncDecStmt: + walkBeforeAfter(&n.X, before, after) + case *ast.AssignStmt: + walkBeforeAfter(&n.Lhs, before, after) + walkBeforeAfter(&n.Rhs, before, after) + case *ast.GoStmt: + walkBeforeAfter(&n.Call, before, after) + case *ast.DeferStmt: + walkBeforeAfter(&n.Call, before, after) + case *ast.ReturnStmt: + walkBeforeAfter(&n.Results, before, after) + case *ast.BranchStmt: + case *ast.BlockStmt: + walkBeforeAfter(&n.List, before, after) + case *ast.IfStmt: + walkBeforeAfter(&n.Init, before, after) + walkBeforeAfter(&n.Cond, before, after) + walkBeforeAfter(&n.Body, before, after) + walkBeforeAfter(&n.Else, before, after) + case *ast.CaseClause: + walkBeforeAfter(&n.List, before, after) + walkBeforeAfter(&n.Body, before, after) + case *ast.SwitchStmt: + walkBeforeAfter(&n.Init, before, after) + walkBeforeAfter(&n.Tag, before, after) + walkBeforeAfter(&n.Body, before, after) + case *ast.TypeSwitchStmt: + walkBeforeAfter(&n.Init, before, after) + walkBeforeAfter(&n.Assign, before, after) + walkBeforeAfter(&n.Body, before, after) + case *ast.CommClause: + walkBeforeAfter(&n.Comm, before, after) + walkBeforeAfter(&n.Body, before, after) + case *ast.SelectStmt: + walkBeforeAfter(&n.Body, before, after) + case *ast.ForStmt: + walkBeforeAfter(&n.Init, before, after) + walkBeforeAfter(&n.Cond, before, after) + walkBeforeAfter(&n.Post, before, after) + walkBeforeAfter(&n.Body, before, after) + case *ast.RangeStmt: + walkBeforeAfter(&n.Key, before, after) + walkBeforeAfter(&n.Value, before, after) + walkBeforeAfter(&n.X, before, after) + walkBeforeAfter(&n.Body, before, after) + + case *ast.ImportSpec: + case *ast.ValueSpec: + walkBeforeAfter(&n.Type, before, after) + walkBeforeAfter(&n.Values, before, after) + walkBeforeAfter(&n.Names, before, after) + case *ast.TypeSpec: + walkBeforeAfter(&n.Type, before, after) + + case *ast.BadDecl: + case *ast.GenDecl: + walkBeforeAfter(&n.Specs, before, after) + case *ast.FuncDecl: + if n.Recv != nil { + walkBeforeAfter(&n.Recv, before, after) + } + walkBeforeAfter(&n.Type, before, after) + if n.Body != nil { + walkBeforeAfter(&n.Body, before, after) + } + + case *ast.File: + walkBeforeAfter(&n.Decls, before, after) + + case *ast.Package: + walkBeforeAfter(&n.Files, before, after) + + case []*ast.File: + for i := range n { + walkBeforeAfter(&n[i], before, after) + } + case []ast.Decl: + for i := range n { + walkBeforeAfter(&n[i], before, after) + } + case []ast.Expr: + for i := range n { + walkBeforeAfter(&n[i], before, after) + } + case []*ast.Ident: + for i := range n { + walkBeforeAfter(&n[i], before, after) + } + case []ast.Stmt: + for i := range n { + walkBeforeAfter(&n[i], before, after) + } + case []ast.Spec: + for i := range n { + walkBeforeAfter(&n[i], before, after) + } + } + after(x) +} + +// imports returns true if f imports path. +func imports(f *ast.File, path string) bool { + return importSpec(f, path) != nil +} + +// importSpec returns the import spec if f imports path, +// or nil otherwise. +func importSpec(f *ast.File, path string) *ast.ImportSpec { + for _, s := range f.Imports { + if importPath(s) == path { + return s + } + } + return nil +} + +// importPath returns the unquoted import path of s, +// or "" if the path is not properly quoted. +func importPath(s *ast.ImportSpec) string { + t, err := strconv.Unquote(s.Path.Value) + if err == nil { + return t + } + return "" +} + +// declImports reports whether gen contains an import of path. +func declImports(gen *ast.GenDecl, path string) bool { + if gen.Tok != token.IMPORT { + return false + } + for _, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + if importPath(impspec) == path { + return true + } + } + return false +} + +// isPkgDot returns true if t is the expression "pkg.name" +// where pkg is an imported identifier. +func isPkgDot(t ast.Expr, pkg, name string) bool { + sel, ok := t.(*ast.SelectorExpr) + return ok && isTopName(sel.X, pkg) && sel.Sel.String() == name +} + +// isPtrPkgDot returns true if f is the expression "*pkg.name" +// where pkg is an imported identifier. +func isPtrPkgDot(t ast.Expr, pkg, name string) bool { + ptr, ok := t.(*ast.StarExpr) + return ok && isPkgDot(ptr.X, pkg, name) +} + +// isTopName returns true if n is a top-level unresolved identifier with the given name. +func isTopName(n ast.Expr, name string) bool { + id, ok := n.(*ast.Ident) + return ok && id.Name == name && id.Obj == nil +} + +// isName returns true if n is an identifier with the given name. +func isName(n ast.Expr, name string) bool { + id, ok := n.(*ast.Ident) + return ok && id.String() == name +} + +// isCall returns true if t is a call to pkg.name. +func isCall(t ast.Expr, pkg, name string) bool { + call, ok := t.(*ast.CallExpr) + return ok && isPkgDot(call.Fun, pkg, name) +} + +// If n is an *ast.Ident, isIdent returns it; otherwise isIdent returns nil. +func isIdent(n interface{}) *ast.Ident { + id, _ := n.(*ast.Ident) + return id +} + +// refersTo returns true if n is a reference to the same object as x. +func refersTo(n ast.Node, x *ast.Ident) bool { + id, ok := n.(*ast.Ident) + // The test of id.Name == x.Name handles top-level unresolved + // identifiers, which all have Obj == nil. + return ok && id.Obj == x.Obj && id.Name == x.Name +} + +// isBlank returns true if n is the blank identifier. +func isBlank(n ast.Expr) bool { + return isName(n, "_") +} + +// isEmptyString returns true if n is an empty string literal. +func isEmptyString(n ast.Expr) bool { + lit, ok := n.(*ast.BasicLit) + return ok && lit.Kind == token.STRING && len(lit.Value) == 2 +} + +func warn(pos token.Pos, msg string, args ...interface{}) { + if pos.IsValid() { + msg = "%s: " + msg + arg1 := []interface{}{fset.Position(pos).String()} + args = append(arg1, args...) + } + fmt.Fprintf(os.Stderr, msg+"\n", args...) +} + +// countUses returns the number of uses of the identifier x in scope. +func countUses(x *ast.Ident, scope []ast.Stmt) int { + count := 0 + ff := func(n interface{}) { + if n, ok := n.(ast.Node); ok && refersTo(n, x) { + count++ + } + } + for _, n := range scope { + walk(n, ff) + } + return count +} + +// rewriteUses replaces all uses of the identifier x and !x in scope +// with f(x.Pos()) and fnot(x.Pos()). +func rewriteUses(x *ast.Ident, f, fnot func(token.Pos) ast.Expr, scope []ast.Stmt) { + var lastF ast.Expr + ff := func(n interface{}) { + ptr, ok := n.(*ast.Expr) + if !ok { + return + } + nn := *ptr + + // The child node was just walked and possibly replaced. + // If it was replaced and this is a negation, replace with fnot(p). + not, ok := nn.(*ast.UnaryExpr) + if ok && not.Op == token.NOT && not.X == lastF { + *ptr = fnot(nn.Pos()) + return + } + if refersTo(nn, x) { + lastF = f(nn.Pos()) + *ptr = lastF + } + } + for _, n := range scope { + walk(n, ff) + } +} + +// assignsTo returns true if any of the code in scope assigns to or takes the address of x. +func assignsTo(x *ast.Ident, scope []ast.Stmt) bool { + assigned := false + ff := func(n interface{}) { + if assigned { + return + } + switch n := n.(type) { + case *ast.UnaryExpr: + // use of &x + if n.Op == token.AND && refersTo(n.X, x) { + assigned = true + return + } + case *ast.AssignStmt: + for _, l := range n.Lhs { + if refersTo(l, x) { + assigned = true + return + } + } + } + } + for _, n := range scope { + if assigned { + break + } + walk(n, ff) + } + return assigned +} + +// newPkgDot returns an ast.Expr referring to "pkg.name" at position pos. +func newPkgDot(pos token.Pos, pkg, name string) ast.Expr { + return &ast.SelectorExpr{ + X: &ast.Ident{ + NamePos: pos, + Name: pkg, + }, + Sel: &ast.Ident{ + NamePos: pos, + Name: name, + }, + } +} + +// renameTop renames all references to the top-level name old. +// It returns true if it makes any changes. +func renameTop(f *ast.File, old, new string) bool { + var fixed bool + + // Rename any conflicting imports + // (assuming package name is last element of path). + for _, s := range f.Imports { + if s.Name != nil { + if s.Name.Name == old { + s.Name.Name = new + fixed = true + } + } else { + _, thisName := path.Split(importPath(s)) + if thisName == old { + s.Name = ast.NewIdent(new) + fixed = true + } + } + } + + // Rename any top-level declarations. + for _, d := range f.Decls { + switch d := d.(type) { + case *ast.FuncDecl: + if d.Recv == nil && d.Name.Name == old { + d.Name.Name = new + d.Name.Obj.Name = new + fixed = true + } + case *ast.GenDecl: + for _, s := range d.Specs { + switch s := s.(type) { + case *ast.TypeSpec: + if s.Name.Name == old { + s.Name.Name = new + s.Name.Obj.Name = new + fixed = true + } + case *ast.ValueSpec: + for _, n := range s.Names { + if n.Name == old { + n.Name = new + n.Obj.Name = new + fixed = true + } + } + } + } + } + } + + // Rename top-level old to new, both unresolved names + // (probably defined in another file) and names that resolve + // to a declaration we renamed. + walk(f, func(n interface{}) { + id, ok := n.(*ast.Ident) + if ok && isTopName(id, old) { + id.Name = new + fixed = true + } + if ok && id.Obj != nil && id.Name == old && id.Obj.Name == new { + id.Name = id.Obj.Name + fixed = true + } + }) + + return fixed +} + +// matchLen returns the length of the longest prefix shared by x and y. +func matchLen(x, y string) int { + i := 0 + for i < len(x) && i < len(y) && x[i] == y[i] { + i++ + } + return i +} + +// addImport adds the import path to the file f, if absent. +func addImport(f *ast.File, ipath string) (added bool) { + if imports(f, ipath) { + return false + } + + // Determine name of import. + // Assume added imports follow convention of using last element. + _, name := path.Split(ipath) + + // Rename any conflicting top-level references from name to name_. + renameTop(f, name, name+"_") + + newImport := &ast.ImportSpec{ + Path: &ast.BasicLit{ + Kind: token.STRING, + Value: strconv.Quote(ipath), + }, + } + + // Find an import decl to add to. + var ( + bestMatch = -1 + lastImport = -1 + impDecl *ast.GenDecl + impIndex = -1 + ) + for i, decl := range f.Decls { + gen, ok := decl.(*ast.GenDecl) + if ok && gen.Tok == token.IMPORT { + lastImport = i + // Do not add to import "C", to avoid disrupting the + // association with its doc comment, breaking cgo. + if declImports(gen, "C") { + continue + } + + // Compute longest shared prefix with imports in this block. + for j, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + n := matchLen(importPath(impspec), ipath) + if n > bestMatch { + bestMatch = n + impDecl = gen + impIndex = j + } + } + } + } + + // If no import decl found, add one after the last import. + if impDecl == nil { + impDecl = &ast.GenDecl{ + Tok: token.IMPORT, + } + f.Decls = append(f.Decls, nil) + copy(f.Decls[lastImport+2:], f.Decls[lastImport+1:]) + f.Decls[lastImport+1] = impDecl + } + + // Ensure the import decl has parentheses, if needed. + if len(impDecl.Specs) > 0 && !impDecl.Lparen.IsValid() { + impDecl.Lparen = impDecl.Pos() + } + + insertAt := impIndex + 1 + if insertAt == 0 { + insertAt = len(impDecl.Specs) + } + impDecl.Specs = append(impDecl.Specs, nil) + copy(impDecl.Specs[insertAt+1:], impDecl.Specs[insertAt:]) + impDecl.Specs[insertAt] = newImport + if insertAt > 0 { + // Assign same position as the previous import, + // so that the sorter sees it as being in the same block. + prev := impDecl.Specs[insertAt-1] + newImport.Path.ValuePos = prev.Pos() + newImport.EndPos = prev.Pos() + } + + f.Imports = append(f.Imports, newImport) + return true +} + +// deleteImport deletes the import path from the file f, if present. +func deleteImport(f *ast.File, path string) (deleted bool) { + oldImport := importSpec(f, path) + + // Find the import node that imports path, if any. + for i, decl := range f.Decls { + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.IMPORT { + continue + } + for j, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + if oldImport != impspec { + continue + } + + // We found an import spec that imports path. + // Delete it. + deleted = true + copy(gen.Specs[j:], gen.Specs[j+1:]) + gen.Specs = gen.Specs[:len(gen.Specs)-1] + + // If this was the last import spec in this decl, + // delete the decl, too. + if len(gen.Specs) == 0 { + copy(f.Decls[i:], f.Decls[i+1:]) + f.Decls = f.Decls[:len(f.Decls)-1] + } else if len(gen.Specs) == 1 { + gen.Lparen = token.NoPos // drop parens + } + if j > 0 { + // We deleted an entry but now there will be + // a blank line-sized hole where the import was. + // Close the hole by making the previous + // import appear to "end" where this one did. + gen.Specs[j-1].(*ast.ImportSpec).EndPos = impspec.End() + } + break + } + } + + // Delete it from f.Imports. + for i, imp := range f.Imports { + if imp == oldImport { + copy(f.Imports[i:], f.Imports[i+1:]) + f.Imports = f.Imports[:len(f.Imports)-1] + break + } + } + + return +} + +// rewriteImport rewrites any import of path oldPath to path newPath. +func rewriteImport(f *ast.File, oldPath, newPath string) (rewrote bool) { + for _, imp := range f.Imports { + if importPath(imp) == oldPath { + rewrote = true + // record old End, because the default is to compute + // it using the length of imp.Path.Value. + imp.EndPos = imp.End() + imp.Path.Value = strconv.Quote(newPath) + } + } + return +} + +func usesImport(f *ast.File, path string) (used bool) { + spec := importSpec(f, path) + if spec == nil { + return + } + + name := spec.Name.String() + switch name { + case "": + // If the package name is not explicitly specified, + // make an educated guess. This is not guaranteed to be correct. + lastSlash := strings.LastIndex(path, "/") + if lastSlash == -1 { + name = path + } else { + name = path[lastSlash+1:] + } + case "_", ".": + // Not sure if this import is used - err on the side of caution. + return true + } + + walk(f, func(n interface{}) { + sel, ok := n.(*ast.SelectorExpr) + if ok && isTopName(sel.X, name) { + used = true + } + }) + + return +} + +func expr(s string) ast.Expr { + x, err := parser.ParseExpr(s) + if err != nil { + panic("parsing " + s + ": " + err.Error()) + } + // Remove position information to avoid spurious newlines. + killPos(reflect.ValueOf(x)) + return x +} + +var posType = reflect.TypeOf(token.Pos(0)) + +func killPos(v reflect.Value) { + switch v.Kind() { + case reflect.Ptr, reflect.Interface: + if !v.IsNil() { + killPos(v.Elem()) + } + case reflect.Slice: + n := v.Len() + for i := 0; i < n; i++ { + killPos(v.Index(i)) + } + case reflect.Struct: + n := v.NumField() + for i := 0; i < n; i++ { + f := v.Field(i) + if f.Type() == posType { + f.SetInt(0) + continue + } + killPos(f) + } + } +} + +// A Rename describes a single renaming. +type rename struct { + OldImport string // only apply rename if this import is present + NewImport string // add this import during rewrite + Old string // old name: p.T or *p.T + New string // new name: p.T or *p.T +} + +func renameFix(tab []rename) func(*ast.File) bool { + return func(f *ast.File) bool { + return renameFixTab(f, tab) + } +} + +func parseName(s string) (ptr bool, pkg, nam string) { + i := strings.Index(s, ".") + if i < 0 { + panic("parseName: invalid name " + s) + } + if strings.HasPrefix(s, "*") { + ptr = true + s = s[1:] + i-- + } + pkg = s[:i] + nam = s[i+1:] + return +} + +func renameFixTab(f *ast.File, tab []rename) bool { + fixed := false + added := map[string]bool{} + check := map[string]bool{} + for _, t := range tab { + if !imports(f, t.OldImport) { + continue + } + optr, opkg, onam := parseName(t.Old) + walk(f, func(n interface{}) { + np, ok := n.(*ast.Expr) + if !ok { + return + } + x := *np + if optr { + p, ok := x.(*ast.StarExpr) + if !ok { + return + } + x = p.X + } + if !isPkgDot(x, opkg, onam) { + return + } + if t.NewImport != "" && !added[t.NewImport] { + addImport(f, t.NewImport) + added[t.NewImport] = true + } + *np = expr(t.New) + check[t.OldImport] = true + fixed = true + }) + } + + for ipath := range check { + if !usesImport(f, ipath) { + deleteImport(f, ipath) + } + } + return fixed +} diff --git a/vendor/google.golang.org/appengine/cmd/aefix/main.go b/vendor/google.golang.org/appengine/cmd/aefix/main.go new file mode 100644 index 0000000000..8e193a6ad9 --- /dev/null +++ b/vendor/google.golang.org/appengine/cmd/aefix/main.go @@ -0,0 +1,258 @@ +// 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 main + +import ( + "bytes" + "flag" + "fmt" + "go/ast" + "go/format" + "go/parser" + "go/scanner" + "go/token" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "sort" + "strings" +) + +var ( + fset = token.NewFileSet() + exitCode = 0 +) + +var allowedRewrites = flag.String("r", "", + "restrict the rewrites to this comma-separated list") + +var forceRewrites = flag.String("force", "", + "force these fixes to run even if the code looks updated") + +var allowed, force map[string]bool + +var doDiff = flag.Bool("diff", false, "display diffs instead of rewriting files") + +// enable for debugging fix failures +const debug = false // display incorrectly reformatted source and exit + +func usage() { + fmt.Fprintf(os.Stderr, "usage: aefix [-diff] [-r fixname,...] [-force fixname,...] [path ...]\n") + flag.PrintDefaults() + fmt.Fprintf(os.Stderr, "\nAvailable rewrites are:\n") + sort.Sort(byName(fixes)) + for _, f := range fixes { + fmt.Fprintf(os.Stderr, "\n%s\n", f.name) + desc := strings.TrimSpace(f.desc) + desc = strings.Replace(desc, "\n", "\n\t", -1) + fmt.Fprintf(os.Stderr, "\t%s\n", desc) + } + os.Exit(2) +} + +func main() { + flag.Usage = usage + flag.Parse() + + sort.Sort(byDate(fixes)) + + if *allowedRewrites != "" { + allowed = make(map[string]bool) + for _, f := range strings.Split(*allowedRewrites, ",") { + allowed[f] = true + } + } + + if *forceRewrites != "" { + force = make(map[string]bool) + for _, f := range strings.Split(*forceRewrites, ",") { + force[f] = true + } + } + + if flag.NArg() == 0 { + if err := processFile("standard input", true); err != nil { + report(err) + } + os.Exit(exitCode) + } + + for i := 0; i < flag.NArg(); i++ { + path := flag.Arg(i) + switch dir, err := os.Stat(path); { + case err != nil: + report(err) + case dir.IsDir(): + walkDir(path) + default: + if err := processFile(path, false); err != nil { + report(err) + } + } + } + + os.Exit(exitCode) +} + +const parserMode = parser.ParseComments + +func gofmtFile(f *ast.File) ([]byte, error) { + var buf bytes.Buffer + if err := format.Node(&buf, fset, f); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +func processFile(filename string, useStdin bool) error { + var f *os.File + var err error + var fixlog bytes.Buffer + + if useStdin { + f = os.Stdin + } else { + f, err = os.Open(filename) + if err != nil { + return err + } + defer f.Close() + } + + src, err := ioutil.ReadAll(f) + if err != nil { + return err + } + + file, err := parser.ParseFile(fset, filename, src, parserMode) + if err != nil { + return err + } + + // Apply all fixes to file. + newFile := file + fixed := false + for _, fix := range fixes { + if allowed != nil && !allowed[fix.name] { + continue + } + if fix.f(newFile) { + fixed = true + fmt.Fprintf(&fixlog, " %s", fix.name) + + // AST changed. + // Print and parse, to update any missing scoping + // or position information for subsequent fixers. + newSrc, err := gofmtFile(newFile) + if err != nil { + return err + } + newFile, err = parser.ParseFile(fset, filename, newSrc, parserMode) + if err != nil { + if debug { + fmt.Printf("%s", newSrc) + report(err) + os.Exit(exitCode) + } + return err + } + } + } + if !fixed { + return nil + } + fmt.Fprintf(os.Stderr, "%s: fixed %s\n", filename, fixlog.String()[1:]) + + // Print AST. We did that after each fix, so this appears + // redundant, but it is necessary to generate gofmt-compatible + // source code in a few cases. The official gofmt style is the + // output of the printer run on a standard AST generated by the parser, + // but the source we generated inside the loop above is the + // output of the printer run on a mangled AST generated by a fixer. + newSrc, err := gofmtFile(newFile) + if err != nil { + return err + } + + if *doDiff { + data, err := diff(src, newSrc) + if err != nil { + return fmt.Errorf("computing diff: %s", err) + } + fmt.Printf("diff %s fixed/%s\n", filename, filename) + os.Stdout.Write(data) + return nil + } + + if useStdin { + os.Stdout.Write(newSrc) + return nil + } + + return ioutil.WriteFile(f.Name(), newSrc, 0) +} + +var gofmtBuf bytes.Buffer + +func gofmt(n interface{}) string { + gofmtBuf.Reset() + if err := format.Node(&gofmtBuf, fset, n); err != nil { + return "<" + err.Error() + ">" + } + return gofmtBuf.String() +} + +func report(err error) { + scanner.PrintError(os.Stderr, err) + exitCode = 2 +} + +func walkDir(path string) { + filepath.Walk(path, visitFile) +} + +func visitFile(path string, f os.FileInfo, err error) error { + if err == nil && isGoFile(f) { + err = processFile(path, false) + } + if err != nil { + report(err) + } + return nil +} + +func isGoFile(f os.FileInfo) bool { + // ignore non-Go files + name := f.Name() + return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") +} + +func diff(b1, b2 []byte) (data []byte, err error) { + f1, err := ioutil.TempFile("", "go-fix") + if err != nil { + return nil, err + } + defer os.Remove(f1.Name()) + defer f1.Close() + + f2, err := ioutil.TempFile("", "go-fix") + if err != nil { + return nil, err + } + defer os.Remove(f2.Name()) + defer f2.Close() + + f1.Write(b1) + f2.Write(b2) + + data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() + if len(data) > 0 { + // diff exits with a non-zero status when the files don't match. + // Ignore that failure as long as we get output. + err = nil + } + return +} diff --git a/vendor/google.golang.org/appengine/cmd/aefix/main_test.go b/vendor/google.golang.org/appengine/cmd/aefix/main_test.go new file mode 100644 index 0000000000..2151bf29e1 --- /dev/null +++ b/vendor/google.golang.org/appengine/cmd/aefix/main_test.go @@ -0,0 +1,129 @@ +// 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 main + +import ( + "go/ast" + "go/parser" + "strings" + "testing" +) + +type testCase struct { + Name string + Fn func(*ast.File) bool + In string + Out string +} + +var testCases []testCase + +func addTestCases(t []testCase, fn func(*ast.File) bool) { + // Fill in fn to avoid repetition in definitions. + if fn != nil { + for i := range t { + if t[i].Fn == nil { + t[i].Fn = fn + } + } + } + testCases = append(testCases, t...) +} + +func fnop(*ast.File) bool { return false } + +func parseFixPrint(t *testing.T, fn func(*ast.File) bool, desc, in string, mustBeGofmt bool) (out string, fixed, ok bool) { + file, err := parser.ParseFile(fset, desc, in, parserMode) + if err != nil { + t.Errorf("%s: parsing: %v", desc, err) + return + } + + outb, err := gofmtFile(file) + if err != nil { + t.Errorf("%s: printing: %v", desc, err) + return + } + if s := string(outb); in != s && mustBeGofmt { + t.Errorf("%s: not gofmt-formatted.\n--- %s\n%s\n--- %s | gofmt\n%s", + desc, desc, in, desc, s) + tdiff(t, in, s) + return + } + + if fn == nil { + for _, fix := range fixes { + if fix.f(file) { + fixed = true + } + } + } else { + fixed = fn(file) + } + + outb, err = gofmtFile(file) + if err != nil { + t.Errorf("%s: printing: %v", desc, err) + return + } + + return string(outb), fixed, true +} + +func TestRewrite(t *testing.T) { + for _, tt := range testCases { + // Apply fix: should get tt.Out. + out, fixed, ok := parseFixPrint(t, tt.Fn, tt.Name, tt.In, true) + if !ok { + continue + } + + // reformat to get printing right + out, _, ok = parseFixPrint(t, fnop, tt.Name, out, false) + if !ok { + continue + } + + if out != tt.Out { + t.Errorf("%s: incorrect output.\n", tt.Name) + if !strings.HasPrefix(tt.Name, "testdata/") { + t.Errorf("--- have\n%s\n--- want\n%s", out, tt.Out) + } + tdiff(t, out, tt.Out) + continue + } + + if changed := out != tt.In; changed != fixed { + t.Errorf("%s: changed=%v != fixed=%v", tt.Name, changed, fixed) + continue + } + + // Should not change if run again. + out2, fixed2, ok := parseFixPrint(t, tt.Fn, tt.Name+" output", out, true) + if !ok { + continue + } + + if fixed2 { + t.Errorf("%s: applied fixes during second round", tt.Name) + continue + } + + if out2 != out { + t.Errorf("%s: changed output after second round of fixes.\n--- output after first round\n%s\n--- output after second round\n%s", + tt.Name, out, out2) + tdiff(t, out, out2) + } + } +} + +func tdiff(t *testing.T, a, b string) { + data, err := diff([]byte(a), []byte(b)) + if err != nil { + t.Error(err) + return + } + t.Error(string(data)) +} diff --git a/vendor/google.golang.org/appengine/cmd/aefix/typecheck.go b/vendor/google.golang.org/appengine/cmd/aefix/typecheck.go new file mode 100644 index 0000000000..d54d375478 --- /dev/null +++ b/vendor/google.golang.org/appengine/cmd/aefix/typecheck.go @@ -0,0 +1,673 @@ +// 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 main + +import ( + "fmt" + "go/ast" + "go/token" + "os" + "reflect" + "strings" +) + +// Partial type checker. +// +// The fact that it is partial is very important: the input is +// an AST and a description of some type information to +// assume about one or more packages, but not all the +// packages that the program imports. The checker is +// expected to do as much as it can with what it has been +// given. There is not enough information supplied to do +// a full type check, but the type checker is expected to +// apply information that can be derived from variable +// declarations, function and method returns, and type switches +// as far as it can, so that the caller can still tell the types +// of expression relevant to a particular fix. +// +// TODO(rsc,gri): Replace with go/typechecker. +// Doing that could be an interesting test case for go/typechecker: +// the constraints about working with partial information will +// likely exercise it in interesting ways. The ideal interface would +// be to pass typecheck a map from importpath to package API text +// (Go source code), but for now we use data structures (TypeConfig, Type). +// +// The strings mostly use gofmt form. +// +// A Field or FieldList has as its type a comma-separated list +// of the types of the fields. For example, the field list +// x, y, z int +// has type "int, int, int". + +// The prefix "type " is the type of a type. +// For example, given +// var x int +// type T int +// x's type is "int" but T's type is "type int". +// mkType inserts the "type " prefix. +// getType removes it. +// isType tests for it. + +func mkType(t string) string { + return "type " + t +} + +func getType(t string) string { + if !isType(t) { + return "" + } + return t[len("type "):] +} + +func isType(t string) bool { + return strings.HasPrefix(t, "type ") +} + +// TypeConfig describes the universe of relevant types. +// For ease of creation, the types are all referred to by string +// name (e.g., "reflect.Value"). TypeByName is the only place +// where the strings are resolved. + +type TypeConfig struct { + Type map[string]*Type + Var map[string]string + Func map[string]string +} + +// typeof returns the type of the given name, which may be of +// the form "x" or "p.X". +func (cfg *TypeConfig) typeof(name string) string { + if cfg.Var != nil { + if t := cfg.Var[name]; t != "" { + return t + } + } + if cfg.Func != nil { + if t := cfg.Func[name]; t != "" { + return "func()" + t + } + } + return "" +} + +// Type describes the Fields and Methods of a type. +// If the field or method cannot be found there, it is next +// looked for in the Embed list. +type Type struct { + Field map[string]string // map field name to type + Method map[string]string // map method name to comma-separated return types (should start with "func ") + Embed []string // list of types this type embeds (for extra methods) + Def string // definition of named type +} + +// dot returns the type of "typ.name", making its decision +// using the type information in cfg. +func (typ *Type) dot(cfg *TypeConfig, name string) string { + if typ.Field != nil { + if t := typ.Field[name]; t != "" { + return t + } + } + if typ.Method != nil { + if t := typ.Method[name]; t != "" { + return t + } + } + + for _, e := range typ.Embed { + etyp := cfg.Type[e] + if etyp != nil { + if t := etyp.dot(cfg, name); t != "" { + return t + } + } + } + + return "" +} + +// typecheck type checks the AST f assuming the information in cfg. +// It returns two maps with type information: +// typeof maps AST nodes to type information in gofmt string form. +// assign maps type strings to lists of expressions that were assigned +// to values of another type that were assigned to that type. +func typecheck(cfg *TypeConfig, f *ast.File) (typeof map[interface{}]string, assign map[string][]interface{}) { + typeof = make(map[interface{}]string) + assign = make(map[string][]interface{}) + cfg1 := &TypeConfig{} + *cfg1 = *cfg // make copy so we can add locally + copied := false + + // gather function declarations + for _, decl := range f.Decls { + fn, ok := decl.(*ast.FuncDecl) + if !ok { + continue + } + typecheck1(cfg, fn.Type, typeof, assign) + t := typeof[fn.Type] + if fn.Recv != nil { + // The receiver must be a type. + rcvr := typeof[fn.Recv] + if !isType(rcvr) { + if len(fn.Recv.List) != 1 { + continue + } + rcvr = mkType(gofmt(fn.Recv.List[0].Type)) + typeof[fn.Recv.List[0].Type] = rcvr + } + rcvr = getType(rcvr) + if rcvr != "" && rcvr[0] == '*' { + rcvr = rcvr[1:] + } + typeof[rcvr+"."+fn.Name.Name] = t + } else { + if isType(t) { + t = getType(t) + } else { + t = gofmt(fn.Type) + } + typeof[fn.Name] = t + + // Record typeof[fn.Name.Obj] for future references to fn.Name. + typeof[fn.Name.Obj] = t + } + } + + // gather struct declarations + for _, decl := range f.Decls { + d, ok := decl.(*ast.GenDecl) + if ok { + for _, s := range d.Specs { + switch s := s.(type) { + case *ast.TypeSpec: + if cfg1.Type[s.Name.Name] != nil { + break + } + if !copied { + copied = true + // Copy map lazily: it's time. + cfg1.Type = make(map[string]*Type) + for k, v := range cfg.Type { + cfg1.Type[k] = v + } + } + t := &Type{Field: map[string]string{}} + cfg1.Type[s.Name.Name] = t + switch st := s.Type.(type) { + case *ast.StructType: + for _, f := range st.Fields.List { + for _, n := range f.Names { + t.Field[n.Name] = gofmt(f.Type) + } + } + case *ast.ArrayType, *ast.StarExpr, *ast.MapType: + t.Def = gofmt(st) + } + } + } + } + } + + typecheck1(cfg1, f, typeof, assign) + return typeof, assign +} + +func makeExprList(a []*ast.Ident) []ast.Expr { + var b []ast.Expr + for _, x := range a { + b = append(b, x) + } + return b +} + +// Typecheck1 is the recursive form of typecheck. +// It is like typecheck but adds to the information in typeof +// instead of allocating a new map. +func typecheck1(cfg *TypeConfig, f interface{}, typeof map[interface{}]string, assign map[string][]interface{}) { + // set sets the type of n to typ. + // If isDecl is true, n is being declared. + set := func(n ast.Expr, typ string, isDecl bool) { + if typeof[n] != "" || typ == "" { + if typeof[n] != typ { + assign[typ] = append(assign[typ], n) + } + return + } + typeof[n] = typ + + // If we obtained typ from the declaration of x + // propagate the type to all the uses. + // The !isDecl case is a cheat here, but it makes + // up in some cases for not paying attention to + // struct fields. The real type checker will be + // more accurate so we won't need the cheat. + if id, ok := n.(*ast.Ident); ok && id.Obj != nil && (isDecl || typeof[id.Obj] == "") { + typeof[id.Obj] = typ + } + } + + // Type-check an assignment lhs = rhs. + // If isDecl is true, this is := so we can update + // the types of the objects that lhs refers to. + typecheckAssign := func(lhs, rhs []ast.Expr, isDecl bool) { + if len(lhs) > 1 && len(rhs) == 1 { + if _, ok := rhs[0].(*ast.CallExpr); ok { + t := split(typeof[rhs[0]]) + // Lists should have same length but may not; pair what can be paired. + for i := 0; i < len(lhs) && i < len(t); i++ { + set(lhs[i], t[i], isDecl) + } + return + } + } + if len(lhs) == 1 && len(rhs) == 2 { + // x = y, ok + rhs = rhs[:1] + } else if len(lhs) == 2 && len(rhs) == 1 { + // x, ok = y + lhs = lhs[:1] + } + + // Match as much as we can. + for i := 0; i < len(lhs) && i < len(rhs); i++ { + x, y := lhs[i], rhs[i] + if typeof[y] != "" { + set(x, typeof[y], isDecl) + } else { + set(y, typeof[x], false) + } + } + } + + expand := func(s string) string { + typ := cfg.Type[s] + if typ != nil && typ.Def != "" { + return typ.Def + } + return s + } + + // The main type check is a recursive algorithm implemented + // by walkBeforeAfter(n, before, after). + // Most of it is bottom-up, but in a few places we need + // to know the type of the function we are checking. + // The before function records that information on + // the curfn stack. + var curfn []*ast.FuncType + + before := func(n interface{}) { + // push function type on stack + switch n := n.(type) { + case *ast.FuncDecl: + curfn = append(curfn, n.Type) + case *ast.FuncLit: + curfn = append(curfn, n.Type) + } + } + + // After is the real type checker. + after := func(n interface{}) { + if n == nil { + return + } + if false && reflect.TypeOf(n).Kind() == reflect.Ptr { // debugging trace + defer func() { + if t := typeof[n]; t != "" { + pos := fset.Position(n.(ast.Node).Pos()) + fmt.Fprintf(os.Stderr, "%s: typeof[%s] = %s\n", pos, gofmt(n), t) + } + }() + } + + switch n := n.(type) { + case *ast.FuncDecl, *ast.FuncLit: + // pop function type off stack + curfn = curfn[:len(curfn)-1] + + case *ast.FuncType: + typeof[n] = mkType(joinFunc(split(typeof[n.Params]), split(typeof[n.Results]))) + + case *ast.FieldList: + // Field list is concatenation of sub-lists. + t := "" + for _, field := range n.List { + if t != "" { + t += ", " + } + t += typeof[field] + } + typeof[n] = t + + case *ast.Field: + // Field is one instance of the type per name. + all := "" + t := typeof[n.Type] + if !isType(t) { + // Create a type, because it is typically *T or *p.T + // and we might care about that type. + t = mkType(gofmt(n.Type)) + typeof[n.Type] = t + } + t = getType(t) + if len(n.Names) == 0 { + all = t + } else { + for _, id := range n.Names { + if all != "" { + all += ", " + } + all += t + typeof[id.Obj] = t + typeof[id] = t + } + } + typeof[n] = all + + case *ast.ValueSpec: + // var declaration. Use type if present. + if n.Type != nil { + t := typeof[n.Type] + if !isType(t) { + t = mkType(gofmt(n.Type)) + typeof[n.Type] = t + } + t = getType(t) + for _, id := range n.Names { + set(id, t, true) + } + } + // Now treat same as assignment. + typecheckAssign(makeExprList(n.Names), n.Values, true) + + case *ast.AssignStmt: + typecheckAssign(n.Lhs, n.Rhs, n.Tok == token.DEFINE) + + case *ast.Ident: + // Identifier can take its type from underlying object. + if t := typeof[n.Obj]; t != "" { + typeof[n] = t + } + + case *ast.SelectorExpr: + // Field or method. + name := n.Sel.Name + if t := typeof[n.X]; t != "" { + if strings.HasPrefix(t, "*") { + t = t[1:] // implicit * + } + if typ := cfg.Type[t]; typ != nil { + if t := typ.dot(cfg, name); t != "" { + typeof[n] = t + return + } + } + tt := typeof[t+"."+name] + if isType(tt) { + typeof[n] = getType(tt) + return + } + } + // Package selector. + if x, ok := n.X.(*ast.Ident); ok && x.Obj == nil { + str := x.Name + "." + name + if cfg.Type[str] != nil { + typeof[n] = mkType(str) + return + } + if t := cfg.typeof(x.Name + "." + name); t != "" { + typeof[n] = t + return + } + } + + case *ast.CallExpr: + // make(T) has type T. + if isTopName(n.Fun, "make") && len(n.Args) >= 1 { + typeof[n] = gofmt(n.Args[0]) + return + } + // new(T) has type *T + if isTopName(n.Fun, "new") && len(n.Args) == 1 { + typeof[n] = "*" + gofmt(n.Args[0]) + return + } + // Otherwise, use type of function to determine arguments. + t := typeof[n.Fun] + in, out := splitFunc(t) + if in == nil && out == nil { + return + } + typeof[n] = join(out) + for i, arg := range n.Args { + if i >= len(in) { + break + } + if typeof[arg] == "" { + typeof[arg] = in[i] + } + } + + case *ast.TypeAssertExpr: + // x.(type) has type of x. + if n.Type == nil { + typeof[n] = typeof[n.X] + return + } + // x.(T) has type T. + if t := typeof[n.Type]; isType(t) { + typeof[n] = getType(t) + } else { + typeof[n] = gofmt(n.Type) + } + + case *ast.SliceExpr: + // x[i:j] has type of x. + typeof[n] = typeof[n.X] + + case *ast.IndexExpr: + // x[i] has key type of x's type. + t := expand(typeof[n.X]) + if strings.HasPrefix(t, "[") || strings.HasPrefix(t, "map[") { + // Lazy: assume there are no nested [] in the array + // length or map key type. + if i := strings.Index(t, "]"); i >= 0 { + typeof[n] = t[i+1:] + } + } + + case *ast.StarExpr: + // *x for x of type *T has type T when x is an expr. + // We don't use the result when *x is a type, but + // compute it anyway. + t := expand(typeof[n.X]) + if isType(t) { + typeof[n] = "type *" + getType(t) + } else if strings.HasPrefix(t, "*") { + typeof[n] = t[len("*"):] + } + + case *ast.UnaryExpr: + // &x for x of type T has type *T. + t := typeof[n.X] + if t != "" && n.Op == token.AND { + typeof[n] = "*" + t + } + + case *ast.CompositeLit: + // T{...} has type T. + typeof[n] = gofmt(n.Type) + + case *ast.ParenExpr: + // (x) has type of x. + typeof[n] = typeof[n.X] + + case *ast.RangeStmt: + t := expand(typeof[n.X]) + if t == "" { + return + } + var key, value string + if t == "string" { + key, value = "int", "rune" + } else if strings.HasPrefix(t, "[") { + key = "int" + if i := strings.Index(t, "]"); i >= 0 { + value = t[i+1:] + } + } else if strings.HasPrefix(t, "map[") { + if i := strings.Index(t, "]"); i >= 0 { + key, value = t[4:i], t[i+1:] + } + } + changed := false + if n.Key != nil && key != "" { + changed = true + set(n.Key, key, n.Tok == token.DEFINE) + } + if n.Value != nil && value != "" { + changed = true + set(n.Value, value, n.Tok == token.DEFINE) + } + // Ugly failure of vision: already type-checked body. + // Do it again now that we have that type info. + if changed { + typecheck1(cfg, n.Body, typeof, assign) + } + + case *ast.TypeSwitchStmt: + // Type of variable changes for each case in type switch, + // but go/parser generates just one variable. + // Repeat type check for each case with more precise + // type information. + as, ok := n.Assign.(*ast.AssignStmt) + if !ok { + return + } + varx, ok := as.Lhs[0].(*ast.Ident) + if !ok { + return + } + t := typeof[varx] + for _, cas := range n.Body.List { + cas := cas.(*ast.CaseClause) + if len(cas.List) == 1 { + // Variable has specific type only when there is + // exactly one type in the case list. + if tt := typeof[cas.List[0]]; isType(tt) { + tt = getType(tt) + typeof[varx] = tt + typeof[varx.Obj] = tt + typecheck1(cfg, cas.Body, typeof, assign) + } + } + } + // Restore t. + typeof[varx] = t + typeof[varx.Obj] = t + + case *ast.ReturnStmt: + if len(curfn) == 0 { + // Probably can't happen. + return + } + f := curfn[len(curfn)-1] + res := n.Results + if f.Results != nil { + t := split(typeof[f.Results]) + for i := 0; i < len(res) && i < len(t); i++ { + set(res[i], t[i], false) + } + } + } + } + walkBeforeAfter(f, before, after) +} + +// Convert between function type strings and lists of types. +// Using strings makes this a little harder, but it makes +// a lot of the rest of the code easier. This will all go away +// when we can use go/typechecker directly. + +// splitFunc splits "func(x,y,z) (a,b,c)" into ["x", "y", "z"] and ["a", "b", "c"]. +func splitFunc(s string) (in, out []string) { + if !strings.HasPrefix(s, "func(") { + return nil, nil + } + + i := len("func(") // index of beginning of 'in' arguments + nparen := 0 + for j := i; j < len(s); j++ { + switch s[j] { + case '(': + nparen++ + case ')': + nparen-- + if nparen < 0 { + // found end of parameter list + out := strings.TrimSpace(s[j+1:]) + if len(out) >= 2 && out[0] == '(' && out[len(out)-1] == ')' { + out = out[1 : len(out)-1] + } + return split(s[i:j]), split(out) + } + } + } + return nil, nil +} + +// joinFunc is the inverse of splitFunc. +func joinFunc(in, out []string) string { + outs := "" + if len(out) == 1 { + outs = " " + out[0] + } else if len(out) > 1 { + outs = " (" + join(out) + ")" + } + return "func(" + join(in) + ")" + outs +} + +// split splits "int, float" into ["int", "float"] and splits "" into []. +func split(s string) []string { + out := []string{} + i := 0 // current type being scanned is s[i:j]. + nparen := 0 + for j := 0; j < len(s); j++ { + switch s[j] { + case ' ': + if i == j { + i++ + } + case '(': + nparen++ + case ')': + nparen-- + if nparen < 0 { + // probably can't happen + return nil + } + case ',': + if nparen == 0 { + if i < j { + out = append(out, s[i:j]) + } + i = j + 1 + } + } + } + if nparen != 0 { + // probably can't happen + return nil + } + if i < len(s) { + out = append(out, s[i:]) + } + return out +} + +// join is the inverse of split. +func join(x []string) string { + return strings.Join(x, ", ") +} diff --git a/vendor/google.golang.org/appengine/datastore/datastore.go b/vendor/google.golang.org/appengine/datastore/datastore.go index 9422e41743..576bc50132 100644 --- a/vendor/google.golang.org/appengine/datastore/datastore.go +++ b/vendor/google.golang.org/appengine/datastore/datastore.go @@ -43,7 +43,8 @@ func (e *ErrFieldMismatch) Error() string { e.FieldName, e.StructType, e.Reason) } -// protoToKey converts a Reference proto to a *Key. +// protoToKey converts a Reference proto to a *Key. If the key is invalid, +// protoToKey will return the invalid key along with ErrInvalidKey. func protoToKey(r *pb.Reference) (k *Key, err error) { appID := r.GetApp() namespace := r.GetNameSpace() @@ -57,7 +58,7 @@ func protoToKey(r *pb.Reference) (k *Key, err error) { namespace: namespace, } if !k.valid() { - return nil, ErrInvalidKey + return k, ErrInvalidKey } } return diff --git a/vendor/google.golang.org/appengine/datastore/datastore_test.go b/vendor/google.golang.org/appengine/datastore/datastore_test.go index 593f9fac7d..b3888e9d19 100644 --- a/vendor/google.golang.org/appengine/datastore/datastore_test.go +++ b/vendor/google.golang.org/appengine/datastore/datastore_test.go @@ -8,12 +8,15 @@ import ( "encoding/json" "errors" "fmt" + "os" "reflect" + "sort" "strings" "testing" "time" "google.golang.org/appengine" + "google.golang.org/appengine/internal/aetesting" pb "google.golang.org/appengine/internal/datastore" ) @@ -68,6 +71,8 @@ var ( testGeoPt0 = appengine.GeoPoint{Lat: 1.2, Lng: 3.4} testGeoPt1 = appengine.GeoPoint{Lat: 5, Lng: 10} testBadGeoPt = appengine.GeoPoint{Lat: 1000, Lng: 34} + + now = time.Unix(1e9, 0).UTC() ) type B0 struct { @@ -131,6 +136,37 @@ type K1 struct { K []*Key } +type S struct { + St string +} + +type NoOmit struct { + A string + B int `datastore:"Bb"` + C bool `datastore:",noindex"` +} + +type OmitAll struct { + A string `datastore:",omitempty"` + B int `datastore:"Bb,omitempty"` + C bool `datastore:",omitempty,noindex"` + F []int `datastore:",omitempty"` +} + +type Omit struct { + A string `datastore:",omitempty"` + B int `datastore:"Bb,omitempty"` + C bool `datastore:",omitempty,noindex"` + F []int `datastore:",omitempty"` + S `datastore:",omitempty"` +} + +type NoOmits struct { + No []NoOmit `datastore:",omitempty"` + S `datastore:",omitempty"` + Ss S `datastore:",omitempty"` +} + type N0 struct { X0 Nonymous X0 @@ -216,6 +252,9 @@ type Tagged struct { C int `datastore:",noindex"` D int `datastore:""` E int + // The "flatten" option is parsed but ignored for now. + F int `datastore:",noindex,flatten"` + G int `datastore:",flatten"` I int `datastore:"-"` J int `datastore:",noindex" json:"j"` @@ -301,10 +340,27 @@ type Doubler struct { B bool } +type Repeat struct { + Key string + Value []byte +} + +type Repeated struct { + Repeats []Repeat +} + func (d *Doubler) Load(props []Property) error { return LoadStruct(d, props) } +type EmbeddedTime struct { + time.Time +} + +type SpecialTime struct { + MyTime EmbeddedTime +} + func (d *Doubler) Save() ([]Property, error) { // Save the default Property slice to an in-memory buffer (a PropertyList). props, err := SaveStruct(d) @@ -470,6 +526,77 @@ var testCases = []testCase{ "", "", }, + { + "omit empty, all", + &OmitAll{}, + new(PropertyList), + "", + "", + }, + { + "omit empty", + &Omit{}, + &PropertyList{ + Property{Name: "St", Value: "", NoIndex: false, Multiple: false}, + }, + "", + "", + }, + { + "omit empty, fields populated", + &Omit{ + A: "a", + B: 10, + C: true, + F: []int{11}, + }, + &PropertyList{ + Property{Name: "A", Value: "a", NoIndex: false, Multiple: false}, + Property{Name: "Bb", Value: int64(10), NoIndex: false, Multiple: false}, + Property{Name: "C", Value: true, NoIndex: true, Multiple: false}, + Property{Name: "F", Value: int64(11), NoIndex: false, Multiple: true}, + Property{Name: "St", Value: "", NoIndex: false, Multiple: false}, + }, + "", + "", + }, + { + "omit empty, fields populated", + &Omit{ + A: "a", + B: 10, + C: true, + F: []int{11}, + S: S{St: "string"}, + }, + &PropertyList{ + Property{Name: "A", Value: "a", NoIndex: false, Multiple: false}, + Property{Name: "Bb", Value: int64(10), NoIndex: false, Multiple: false}, + Property{Name: "C", Value: true, NoIndex: true, Multiple: false}, + Property{Name: "F", Value: int64(11), NoIndex: false, Multiple: true}, + Property{Name: "St", Value: "string", NoIndex: false, Multiple: false}, + }, + "", + "", + }, + { + "omit empty does not propagate", + &NoOmits{ + No: []NoOmit{ + NoOmit{}, + }, + S: S{}, + Ss: S{}, + }, + &PropertyList{ + Property{Name: "No.A", Value: "", NoIndex: false, Multiple: true}, + Property{Name: "No.Bb", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "No.C", Value: false, NoIndex: true, Multiple: true}, + Property{Name: "Ss.St", Value: "", NoIndex: false, Multiple: false}, + Property{Name: "St", Value: "", NoIndex: false, Multiple: false}}, + "", + "", + }, { "key", &K0{K: testKey1a}, @@ -523,7 +650,7 @@ var testCases = []testCase{ "time as props", &T{T: time.Unix(1e9, 0)}, &PropertyList{ - Property{Name: "T", Value: time.Unix(1e9, 0), NoIndex: false, Multiple: false}, + Property{Name: "T", Value: time.Unix(1e9, 0).UTC(), NoIndex: false, Multiple: false}, }, "", "", @@ -619,6 +746,35 @@ var testCases = []testCase{ "too many indexed properties", "", }, + { + "slice of slices of bytes", + &Repeated{ + Repeats: []Repeat{ + { + Key: "key 1", + Value: []byte("value 1"), + }, + { + Key: "key 2", + Value: []byte("value 2"), + }, + }, + }, + &Repeated{ + Repeats: []Repeat{ + { + Key: "key 1", + Value: []byte("value 1"), + }, + { + Key: "key 2", + Value: []byte("value 2"), + }, + }, + }, + "", + "", + }, { "long blob", &B0{B: makeUint8Slice(maxIndexedProperties + 1)}, @@ -717,19 +873,21 @@ var testCases = []testCase{ }, { "save tagged load props", - &Tagged{A: 1, B: []int{21, 22, 23}, C: 3, D: 4, E: 5, I: 6, J: 7}, + &Tagged{A: 1, B: []int{21, 22, 23}, C: 3, D: 4, E: 5, F: 6, G: 7, I: 8, J: 9}, &PropertyList{ // A and B are renamed to a and b; A and C are noindex, I is ignored. // Indexed properties are loaded before raw properties. Thus, the // result is: b, b, b, D, E, a, c. - Property{Name: "b", Value: int64(21), NoIndex: false, Multiple: true}, - Property{Name: "b", Value: int64(22), NoIndex: false, Multiple: true}, - Property{Name: "b", Value: int64(23), NoIndex: false, Multiple: true}, + Property{Name: "C", Value: int64(3), NoIndex: true, Multiple: false}, Property{Name: "D", Value: int64(4), NoIndex: false, Multiple: false}, Property{Name: "E", Value: int64(5), NoIndex: false, Multiple: false}, + Property{Name: "F", Value: int64(6), NoIndex: true, Multiple: false}, + Property{Name: "G", Value: int64(7), NoIndex: false, Multiple: false}, + Property{Name: "J", Value: int64(9), NoIndex: true, Multiple: false}, Property{Name: "a", Value: int64(1), NoIndex: true, Multiple: false}, - Property{Name: "C", Value: int64(3), NoIndex: true, Multiple: false}, - Property{Name: "J", Value: int64(7), NoIndex: true, Multiple: false}, + Property{Name: "b", Value: int64(21), NoIndex: false, Multiple: true}, + Property{Name: "b", Value: int64(22), NoIndex: false, Multiple: true}, + Property{Name: "b", Value: int64(23), NoIndex: false, Multiple: true}, }, "", "", @@ -776,8 +934,8 @@ var testCases = []testCase{ "save struct load props", &X0{S: "s", I: 1}, &PropertyList{ - Property{Name: "S", Value: "s", NoIndex: false, Multiple: false}, Property{Name: "I", Value: int64(1), NoIndex: false, Multiple: false}, + Property{Name: "S", Value: "s", NoIndex: false, Multiple: false}, }, "", "", @@ -838,10 +996,10 @@ var testCases = []testCase{ &PropertyList{ Property{Name: "A", Value: int64(1), NoIndex: false, Multiple: false}, Property{Name: "I.W", Value: int64(10), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "ten", NoIndex: false, Multiple: true}, Property{Name: "I.W", Value: int64(20), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "twenty", NoIndex: false, Multiple: true}, Property{Name: "I.W", Value: int64(30), NoIndex: false, Multiple: true}, + Property{Name: "I.X", Value: "ten", NoIndex: false, Multiple: true}, + Property{Name: "I.X", Value: "twenty", NoIndex: false, Multiple: true}, Property{Name: "I.X", Value: "thirty", NoIndex: false, Multiple: true}, Property{Name: "J.Y", Value: float64(3.14), NoIndex: false, Multiple: false}, Property{Name: "Z", Value: true, NoIndex: false, Multiple: false}, @@ -1108,33 +1266,33 @@ var testCases = []testCase{ }, }, &PropertyList{ - Property{Name: "red.S", Value: "rouge", NoIndex: false, Multiple: false}, - Property{Name: "red.I", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "red.Nonymous.S", Value: "rosso0", NoIndex: false, Multiple: true}, - Property{Name: "red.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "red.Nonymous.S", Value: "rosso1", NoIndex: false, Multiple: true}, - Property{Name: "red.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "red.Other", Value: "", NoIndex: false, Multiple: false}, - Property{Name: "green.S", Value: "vert", NoIndex: false, Multiple: false}, - Property{Name: "green.I", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "green.Nonymous.S", Value: "verde0", NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.S", Value: "verde1", NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.S", Value: "verde2", NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "green.Other", Value: "", NoIndex: false, Multiple: false}, - Property{Name: "Blue.S", Value: "bleu", NoIndex: false, Multiple: false}, Property{Name: "Blue.I", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "Blue.Nonymous.S", Value: "blu0", NoIndex: false, Multiple: true}, Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blu1", NoIndex: false, Multiple: true}, Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blu2", NoIndex: false, Multiple: true}, Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blu3", NoIndex: false, Multiple: true}, Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "Blue.Nonymous.S", Value: "blu0", NoIndex: false, Multiple: true}, + Property{Name: "Blue.Nonymous.S", Value: "blu1", NoIndex: false, Multiple: true}, + Property{Name: "Blue.Nonymous.S", Value: "blu2", NoIndex: false, Multiple: true}, + Property{Name: "Blue.Nonymous.S", Value: "blu3", NoIndex: false, Multiple: true}, Property{Name: "Blue.Other", Value: "", NoIndex: false, Multiple: false}, + Property{Name: "Blue.S", Value: "bleu", NoIndex: false, Multiple: false}, + Property{Name: "green.I", Value: int64(0), NoIndex: false, Multiple: false}, + Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "green.Nonymous.S", Value: "verde0", NoIndex: false, Multiple: true}, + Property{Name: "green.Nonymous.S", Value: "verde1", NoIndex: false, Multiple: true}, + Property{Name: "green.Nonymous.S", Value: "verde2", NoIndex: false, Multiple: true}, + Property{Name: "green.Other", Value: "", NoIndex: false, Multiple: false}, + Property{Name: "green.S", Value: "vert", NoIndex: false, Multiple: false}, + Property{Name: "red.I", Value: int64(0), NoIndex: false, Multiple: false}, + Property{Name: "red.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "red.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, + Property{Name: "red.Nonymous.S", Value: "rosso0", NoIndex: false, Multiple: true}, + Property{Name: "red.Nonymous.S", Value: "rosso1", NoIndex: false, Multiple: true}, + Property{Name: "red.Other", Value: "", NoIndex: false, Multiple: false}, + Property{Name: "red.S", Value: "rouge", NoIndex: false, Multiple: false}, }, "", "", @@ -1189,10 +1347,10 @@ var testCases = []testCase{ } }{}, &PropertyList{ - Property{Name: "B.Y", Value: "", NoIndex: false, Multiple: false}, Property{Name: "A.X", Value: "", NoIndex: true, Multiple: false}, Property{Name: "A.Y", Value: "", NoIndex: true, Multiple: false}, Property{Name: "B.X", Value: "", NoIndex: true, Multiple: false}, + Property{Name: "B.Y", Value: "", NoIndex: false, Multiple: false}, }, "", "", @@ -1265,6 +1423,22 @@ var testCases = []testCase{ "", "", }, + { + "embedded time field", + &SpecialTime{MyTime: EmbeddedTime{now}}, + &SpecialTime{MyTime: EmbeddedTime{now}}, + "", + "", + }, + { + "embedded time load", + &PropertyList{ + Property{Name: "MyTime.", Value: now, NoIndex: false, Multiple: false}, + }, + &SpecialTime{MyTime: EmbeddedTime{now}}, + "", + "", + }, } // checkErr returns the empty string if either both want and err are zero, @@ -1302,6 +1476,10 @@ func TestRoundTrip(t *testing.T) { t.Errorf("%s: load: %s", tc.desc, s) continue } + if pl, ok := got.(*PropertyList); ok { + // Sort by name to make sure we have a deterministic order. + sort.Stable(byName(*pl)) + } equal := false if gotT, ok := got.(*T); ok { // Round tripping a time.Time can result in a different time.Location: Local instead of UTC. @@ -1317,6 +1495,12 @@ func TestRoundTrip(t *testing.T) { } } +type byName PropertyList + +func (s byName) Len() int { return len(s) } +func (s byName) Less(i, j int) bool { return s[i].Name < s[j].Name } +func (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + func TestQueryConstruction(t *testing.T) { tests := []struct { q, exp *Query @@ -1497,3 +1681,64 @@ func TestStringMeaning(t *testing.T) { } } } + +func TestNamespaceResetting(t *testing.T) { + // These environment variables are necessary because *Query.Run will + // call internal.FullyQualifiedAppID which checks these variables or falls + // back to the Metadata service that is not available in tests. + environ := []struct { + key, value string + }{ + {"GAE_LONG_APP_ID", "my-app-id"}, + {"GAE_PARTITION", "1"}, + } + for _, v := range environ { + old := os.Getenv(v.key) + os.Setenv(v.key, v.value) + v.value = old + } + defer func() { // Restore old environment after the test completes. + for _, v := range environ { + if v.value == "" { + os.Unsetenv(v.key) + continue + } + os.Setenv(v.key, v.value) + } + }() + + namec := make(chan *string, 1) + c0 := aetesting.FakeSingleContext(t, "datastore_v3", "RunQuery", func(req *pb.Query, res *pb.QueryResult) error { + namec <- req.NameSpace + return fmt.Errorf("RPC error") + }) + + // Check that wrapping c0 in a namespace twice works correctly. + c1, err := appengine.Namespace(c0, "A") + if err != nil { + t.Fatalf("appengine.Namespace: %v", err) + } + c2, err := appengine.Namespace(c1, "") // should act as the original context + if err != nil { + t.Fatalf("appengine.Namespace: %v", err) + } + + q := NewQuery("SomeKind") + + q.Run(c0) + if ns := <-namec; ns != nil { + t.Errorf(`RunQuery with c0: ns = %q, want nil`, *ns) + } + + q.Run(c1) + if ns := <-namec; ns == nil { + t.Error(`RunQuery with c1: ns = nil, want "A"`) + } else if *ns != "A" { + t.Errorf(`RunQuery with c1: ns = %q, want "A"`, *ns) + } + + q.Run(c2) + if ns := <-namec; ns != nil { + t.Errorf(`RunQuery with c2: ns = %q, want nil`, *ns) + } +} diff --git a/vendor/google.golang.org/appengine/datastore/doc.go b/vendor/google.golang.org/appengine/datastore/doc.go index 92ffe6d15d..85616cf274 100644 --- a/vendor/google.golang.org/appengine/datastore/doc.go +++ b/vendor/google.golang.org/appengine/datastore/doc.go @@ -87,7 +87,7 @@ behavior for struct pointers. Struct pointers are more strongly typed and are easier to use; PropertyLoadSavers are more flexible. The actual types passed do not have to match between Get and Put calls or even -across different App Engine requests. It is valid to put a *PropertyList and +across different calls to datastore. It is valid to put a *PropertyList and get that same entity as a *myStruct, or put a *myStruct0 and get a *myStruct1. Conceptually, any entity is saved as a sequence of properties, and is loaded into the destination value on a property-by-property basis. When loading into @@ -97,18 +97,28 @@ caller whether this error is fatal, recoverable or ignorable. By default, for struct pointers, all properties are potentially indexed, and the property name is the same as the field name (and hence must start with an -upper case letter). Fields may have a `datastore:"name,options"` tag. The tag -name is the property name, which must be one or more valid Go identifiers -joined by ".", but may start with a lower case letter. An empty tag name means -to just use the field name. A "-" tag name means that the datastore will -ignore that field. If options is "noindex" then the field will not be indexed. -If the options is "" then the comma may be omitted. There are no other -recognized options. - -Fields (except for []byte) are indexed by default. Strings longer than 1500 -bytes cannot be indexed; fields used to store long strings should be -tagged with "noindex". Similarly, ByteStrings longer than 1500 bytes cannot be -indexed. +upper case letter). + +Fields may have a `datastore:"name,options"` tag. The tag name is the +property name, which must be one or more valid Go identifiers joined by ".", +but may start with a lower case letter. An empty tag name means to just use the +field name. A "-" tag name means that the datastore will ignore that field. + +The only valid options are "omitempty" and "noindex". + +If the options include "omitempty" and the value of the field is empty, then the field will be omitted on Save. +The empty values are false, 0, any nil interface value, and any array, slice, map, or string of length zero. +Struct field values will never be empty. + +If options include "noindex" then the field will not be indexed. All fields are indexed +by default. Strings or byte slices longer than 1500 bytes cannot be indexed; +fields used to store long strings and byte slices must be tagged with "noindex" +or they will cause Put operations to fail. + +To use multiple options together, separate them by a comma. +The order does not matter. + +If the options is "" then the comma may be omitted. Example code: @@ -200,7 +210,7 @@ Example code: func (x *CustomPropsExample) Save() ([]datastore.Property, error) { // Validate the Sum field. if x.Sum != x.I + x.J { - return errors.New("CustomPropsExample has inconsistent sum") + return nil, errors.New("CustomPropsExample has inconsistent sum") } // Save I and J as usual. The code below is equivalent to calling // "return datastore.SaveStruct(x)", but is done manually for @@ -214,7 +224,7 @@ Example code: Name: "J", Value: int64(x.J), }, - } + }, nil } The *PropertyList type implements PropertyLoadSaver, and can therefore hold an @@ -343,7 +353,7 @@ Example code: continue } for p, rep := range props { - fmt.Fprintf(w, "\t-%s (%s)\n", p, strings.Join(", ", rep)) + fmt.Fprintf(w, "\t-%s (%s)\n", p, strings.Join(rep, ", ")) } } } diff --git a/vendor/google.golang.org/appengine/datastore/load.go b/vendor/google.golang.org/appengine/datastore/load.go index 3f3c80c36d..38a6365397 100644 --- a/vendor/google.golang.org/appengine/datastore/load.go +++ b/vendor/google.golang.org/appengine/datastore/load.go @@ -7,8 +7,10 @@ package datastore import ( "fmt" "reflect" + "strings" "time" + "github.com/golang/protobuf/proto" "google.golang.org/appengine" pb "google.golang.org/appengine/internal/datastore" ) @@ -19,13 +21,15 @@ var ( typeOfByteString = reflect.TypeOf(ByteString(nil)) typeOfGeoPoint = reflect.TypeOf(appengine.GeoPoint{}) typeOfTime = reflect.TypeOf(time.Time{}) + typeOfKeyPtr = reflect.TypeOf(&Key{}) + typeOfEntityPtr = reflect.TypeOf(&Entity{}) ) // typeMismatchReason returns a string explaining why the property p could not // be stored in an entity field of type v.Type(). -func typeMismatchReason(p Property, v reflect.Value) string { +func typeMismatchReason(pValue interface{}, v reflect.Value) string { entityType := "empty" - switch p.Value.(type) { + switch pValue.(type) { case int64: entityType = "int" case bool: @@ -58,13 +62,41 @@ type propertyLoader struct { func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p Property, requireSlice bool) string { var v reflect.Value - // Traverse a struct's struct-typed fields. - for name := p.Name; ; { - decoder, ok := codec.byName[name] + var sliceIndex int + + name := p.Name + + // If name ends with a '.', the last field is anonymous. + // In this case, strings.Split will give us "" as the + // last element of our fields slice, which will match the "" + // field name in the substruct codec. + fields := strings.Split(name, ".") + + for len(fields) > 0 { + var decoder fieldCodec + var ok bool + + // Cut off the last field (delimited by ".") and find its parent + // in the codec. + // eg. for name "A.B.C.D", split off "A.B.C" and try to + // find a field in the codec with this name. + // Loop again with "A.B", etc. + for i := len(fields); i > 0; i-- { + parent := strings.Join(fields[:i], ".") + decoder, ok = codec.fields[parent] + if ok { + fields = fields[i:] + break + } + } + + // If we never found a matching field in the codec, return + // error message. if !ok { return "no such struct field" } - v = structValue.Field(decoder.index) + + v = initField(structValue, decoder.path) if !v.IsValid() { return "no such struct field" } @@ -72,27 +104,23 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P return "cannot set struct field" } - if decoder.substructCodec == nil { - break + if decoder.structCodec != nil { + codec = decoder.structCodec + structValue = v } - if v.Kind() == reflect.Slice { + if v.Kind() == reflect.Slice && v.Type() != typeOfByteSlice { if l.m == nil { l.m = make(map[string]int) } - index := l.m[p.Name] - l.m[p.Name] = index + 1 - for v.Len() <= index { + sliceIndex = l.m[p.Name] + l.m[p.Name] = sliceIndex + 1 + for v.Len() <= sliceIndex { v.Set(reflect.Append(v, reflect.New(v.Type().Elem()).Elem())) } - structValue = v.Index(index) + structValue = v.Index(sliceIndex) requireSlice = false - } else { - structValue = v } - // Strip the "I." from "I.X". - name = name[len(codec.byIndex[decoder.index].name):] - codec = decoder.substructCodec } var slice reflect.Value @@ -119,6 +147,8 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P meaning = pb.Property_GEORSS_POINT case typeOfTime: meaning = pb.Property_GD_WHEN + case typeOfEntityPtr: + meaning = pb.Property_ENTITY_PROTO } var err error pValue, err = propValue(iv.value, meaning) @@ -127,11 +157,28 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P } } + if errReason := setVal(v, pValue); errReason != "" { + // Set the slice back to its zero value. + if slice.IsValid() { + slice.Set(reflect.Zero(slice.Type())) + } + return errReason + } + + if slice.IsValid() { + slice.Index(sliceIndex).Set(v) + } + + return "" +} + +// setVal sets v to the value pValue. +func setVal(v reflect.Value, pValue interface{}) string { switch v.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: x, ok := pValue.(int64) if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } if v.OverflowInt(x) { return fmt.Sprintf("value %v overflows struct field of type %v", x, v.Type()) @@ -140,7 +187,7 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P case reflect.Bool: x, ok := pValue.(bool) if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } v.SetBool(x) case reflect.String: @@ -153,13 +200,13 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P v.SetString(x) default: if pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } } case reflect.Float32, reflect.Float64: x, ok := pValue.(float64) if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } if v.OverflowFloat(x) { return fmt.Sprintf("value %v overflows struct field of type %v", x, v.Type()) @@ -168,10 +215,10 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P case reflect.Ptr: x, ok := pValue.(*Key) if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } if _, ok := v.Interface().(*Key); !ok { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } v.Set(reflect.ValueOf(x)) case reflect.Struct: @@ -179,17 +226,38 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P case typeOfTime: x, ok := pValue.(time.Time) if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } v.Set(reflect.ValueOf(x)) case typeOfGeoPoint: x, ok := pValue.(appengine.GeoPoint) if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } v.Set(reflect.ValueOf(x)) default: - return typeMismatchReason(p, v) + ent, ok := pValue.(*Entity) + if !ok { + return typeMismatchReason(pValue, v) + } + + // Recursively load nested struct + pls, err := newStructPLS(v.Addr().Interface()) + if err != nil { + return err.Error() + } + + // if ent has a Key value and our struct has a Key field, + // load the Entity's Key value into the Key field on the struct. + if ent.Key != nil && pls.codec.keyField != -1 { + + pls.v.Field(pls.codec.keyField).Set(reflect.ValueOf(ent.Key)) + } + + err = pls.Load(ent.Properties) + if err != nil { + return err.Error() + } } case reflect.Slice: x, ok := pValue.([]byte) @@ -199,31 +267,44 @@ func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p P } } if !ok && pValue != nil { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } if v.Type().Elem().Kind() != reflect.Uint8 { - return typeMismatchReason(p, v) + return typeMismatchReason(pValue, v) } v.SetBytes(x) default: - return typeMismatchReason(p, v) - } - if slice.IsValid() { - slice.Set(reflect.Append(slice, v)) + return typeMismatchReason(pValue, v) } return "" } +// initField is similar to reflect's Value.FieldByIndex, in that it +// returns the nested struct field corresponding to index, but it +// initialises any nil pointers encountered when traversing the structure. +func initField(val reflect.Value, index []int) reflect.Value { + for _, i := range index[:len(index)-1] { + val = val.Field(i) + if val.Kind() == reflect.Ptr { + if val.IsNil() { + val.Set(reflect.New(val.Type().Elem())) + } + val = val.Elem() + } + } + return val.Field(index[len(index)-1]) +} + // loadEntity loads an EntityProto into PropertyLoadSaver or struct pointer. func loadEntity(dst interface{}, src *pb.EntityProto) (err error) { - props, err := protoToProperties(src) + ent, err := protoToEntity(src) if err != nil { return err } if e, ok := dst.(PropertyLoadSaver); ok { - return e.Load(props) + return e.Load(ent.Properties) } - return LoadStruct(dst, props) + return LoadStruct(dst, ent.Properties) } func (s structPLS) Load(props []Property) error { @@ -247,9 +328,9 @@ func (s structPLS) Load(props []Property) error { return nil } -func protoToProperties(src *pb.EntityProto) ([]Property, error) { +func protoToEntity(src *pb.EntityProto) (*Entity, error) { props, rawProps := src.Property, src.RawProperty - out := make([]Property, 0, len(props)+len(rawProps)) + outProps := make([]Property, 0, len(props)+len(rawProps)) for { var ( x *pb.Property @@ -274,14 +355,21 @@ func protoToProperties(src *pb.EntityProto) ([]Property, error) { return nil, err } } - out = append(out, Property{ + outProps = append(outProps, Property{ Name: x.GetName(), Value: value, NoIndex: noIndex, Multiple: x.GetMultiple(), }) } - return out, nil + + var key *Key + if src.Key != nil { + // Ignore any error, since nested entity values + // are allowed to have an invalid key. + key, _ = protoToKey(src.Key) + } + return &Entity{key, outProps}, nil } // propValue returns a Go value that combines the raw PropertyValue with a @@ -303,6 +391,13 @@ func propValue(v *pb.PropertyValue, m pb.Property_Meaning) (interface{}, error) return appengine.BlobKey(*v.StringValue), nil } else if m == pb.Property_BYTESTRING { return ByteString(*v.StringValue), nil + } else if m == pb.Property_ENTITY_PROTO { + var ent pb.EntityProto + err := proto.Unmarshal([]byte(*v.StringValue), &ent) + if err != nil { + return nil, err + } + return protoToEntity(&ent) } else { return *v.StringValue, nil } diff --git a/vendor/google.golang.org/appengine/datastore/load_test.go b/vendor/google.golang.org/appengine/datastore/load_test.go new file mode 100644 index 0000000000..46029bba51 --- /dev/null +++ b/vendor/google.golang.org/appengine/datastore/load_test.go @@ -0,0 +1,656 @@ +// Copyright 2016 Google Inc. All Rights Reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +package datastore + +import ( + "reflect" + "testing" + + proto "github.com/golang/protobuf/proto" + pb "google.golang.org/appengine/internal/datastore" +) + +type Simple struct { + I int64 +} + +type SimpleWithTag struct { + I int64 `datastore:"II"` +} + +type NestedSimpleWithTag struct { + A SimpleWithTag `datastore:"AA"` +} + +type NestedSliceOfSimple struct { + A []Simple +} + +type SimpleTwoFields struct { + S string + SS string +} + +type NestedSimpleAnonymous struct { + Simple + X string +} + +type NestedSimple struct { + A Simple + I int64 +} + +type NestedSimple1 struct { + A Simple + X string +} + +type NestedSimple2X struct { + AA NestedSimple + A SimpleTwoFields + S string +} + +type BDotB struct { + B string `datastore:"B.B"` +} + +type ABDotB struct { + A BDotB +} + +type MultiAnonymous struct { + Simple + SimpleTwoFields + X string +} + +var ( + // these values need to be addressable + testString2 = "two" + testString3 = "three" + testInt64 = int64(2) + + fieldNameI = "I" + fieldNameX = "X" + fieldNameS = "S" + fieldNameSS = "SS" + fieldNameADotI = "A.I" + fieldNameAADotII = "AA.II" + fieldNameADotBDotB = "A.B.B" +) + +func TestLoadEntityNestedLegacy(t *testing.T) { + testCases := []struct { + desc string + src *pb.EntityProto + want interface{} + }{ + { + "nested", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameX, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + &pb.Property{ + Name: &fieldNameADotI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + }, + }, + &NestedSimple1{ + A: Simple{I: testInt64}, + X: testString2, + }, + }, + { + "nested with tag", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameAADotII, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + }, + }, + &NestedSimpleWithTag{ + A: SimpleWithTag{I: testInt64}, + }, + }, + { + "nested with anonymous struct field", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameX, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + }, + }, + &NestedSimpleAnonymous{ + Simple: Simple{I: testInt64}, + X: testString2, + }, + }, + { + "nested with dotted field tag", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameADotBDotB, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + }, + }, + &ABDotB{ + A: BDotB{ + B: testString2, + }, + }, + }, + { + "nested with dotted field tag", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + &pb.Property{ + Name: &fieldNameS, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + &pb.Property{ + Name: &fieldNameSS, + Value: &pb.PropertyValue{ + StringValue: &testString3, + }, + }, + &pb.Property{ + Name: &fieldNameX, + Value: &pb.PropertyValue{ + StringValue: &testString3, + }, + }, + }, + }, + &MultiAnonymous{ + Simple: Simple{I: testInt64}, + SimpleTwoFields: SimpleTwoFields{S: "two", SS: "three"}, + X: "three", + }, + }, + } + + for _, tc := range testCases { + dst := reflect.New(reflect.TypeOf(tc.want).Elem()).Interface() + err := loadEntity(dst, tc.src) + if err != nil { + t.Errorf("loadEntity: %s: %v", tc.desc, err) + continue + } + + if !reflect.DeepEqual(tc.want, dst) { + t.Errorf("%s: compare:\ngot: %#v\nwant: %#v", tc.desc, dst, tc.want) + } + } +} + +type WithKey struct { + X string + I int64 + K *Key `datastore:"__key__"` +} + +type NestedWithKey struct { + N WithKey + Y string +} + +var ( + incompleteKey = newKey("", nil) + invalidKey = newKey("s", incompleteKey) + + // these values need to be addressable + fieldNameA = "A" + fieldNameK = "K" + fieldNameN = "N" + fieldNameY = "Y" + fieldNameAA = "AA" + fieldNameII = "II" + fieldNameBDotB = "B.B" + + entityProtoMeaning = pb.Property_ENTITY_PROTO + + TRUE = true + FALSE = false +) + +var ( + simpleEntityProto, nestedSimpleEntityProto, + simpleTwoFieldsEntityProto, simpleWithTagEntityProto, + bDotBEntityProto, withKeyEntityProto string +) + +func init() { + // simpleEntityProto corresponds to: + // Simple{I: testInt64} + simpleEntityProtob, err := proto.Marshal(&pb.EntityProto{ + Key: keyToProto("", incompleteKey), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + Multiple: &FALSE, + }, + }, + EntityGroup: &pb.Path{}, + }) + if err != nil { + panic(err) + } + simpleEntityProto = string(simpleEntityProtob) + + // nestedSimpleEntityProto corresponds to: + // NestedSimple{ + // A: Simple{I: testInt64}, + // I: testInt64, + // } + nestedSimpleEntityProtob, err := proto.Marshal(&pb.EntityProto{ + Key: keyToProto("", incompleteKey), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameA, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &simpleEntityProto, + }, + Multiple: &FALSE, + }, + &pb.Property{ + Name: &fieldNameI, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + Multiple: &FALSE, + }, + }, + EntityGroup: &pb.Path{}, + }) + if err != nil { + panic(err) + } + nestedSimpleEntityProto = string(nestedSimpleEntityProtob) + + // simpleTwoFieldsEntityProto corresponds to: + // SimpleTwoFields{S: testString2, SS: testString3} + simpleTwoFieldsEntityProtob, err := proto.Marshal(&pb.EntityProto{ + Key: keyToProto("", incompleteKey), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameS, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + Multiple: &FALSE, + }, + &pb.Property{ + Name: &fieldNameSS, + Value: &pb.PropertyValue{ + StringValue: &testString3, + }, + Multiple: &FALSE, + }, + }, + EntityGroup: &pb.Path{}, + }) + if err != nil { + panic(err) + } + simpleTwoFieldsEntityProto = string(simpleTwoFieldsEntityProtob) + + // simpleWithTagEntityProto corresponds to: + // SimpleWithTag{I: testInt64} + simpleWithTagEntityProtob, err := proto.Marshal(&pb.EntityProto{ + Key: keyToProto("", incompleteKey), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameII, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + Multiple: &FALSE, + }, + }, + EntityGroup: &pb.Path{}, + }) + if err != nil { + panic(err) + } + simpleWithTagEntityProto = string(simpleWithTagEntityProtob) + + // bDotBEntityProto corresponds to: + // BDotB{ + // B: testString2, + // } + bDotBEntityProtob, err := proto.Marshal(&pb.EntityProto{ + Key: keyToProto("", incompleteKey), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameBDotB, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + Multiple: &FALSE, + }, + }, + EntityGroup: &pb.Path{}, + }) + if err != nil { + panic(err) + } + bDotBEntityProto = string(bDotBEntityProtob) + + // withKeyEntityProto corresponds to: + // WithKey{ + // X: testString3, + // I: testInt64, + // K: testKey1a, + // } + withKeyEntityProtob, err := proto.Marshal(&pb.EntityProto{ + Key: keyToProto("", testKey1a), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameX, + Value: &pb.PropertyValue{ + StringValue: &testString3, + }, + Multiple: &FALSE, + }, + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + Multiple: &FALSE, + }, + }, + EntityGroup: &pb.Path{}, + }) + if err != nil { + panic(err) + } + withKeyEntityProto = string(withKeyEntityProtob) + +} + +func TestLoadEntityNested(t *testing.T) { + testCases := []struct { + desc string + src *pb.EntityProto + want interface{} + }{ + { + "nested basic", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameA, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &simpleEntityProto, + }, + }, + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + }, + }, + &NestedSimple{ + A: Simple{I: 2}, + I: 2, + }, + }, + { + "nested with struct tags", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameAA, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &simpleWithTagEntityProto, + }, + }, + }, + }, + &NestedSimpleWithTag{ + A: SimpleWithTag{I: testInt64}, + }, + }, + { + "nested 2x", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameAA, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &nestedSimpleEntityProto, + }, + }, + &pb.Property{ + Name: &fieldNameA, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &simpleTwoFieldsEntityProto, + }, + }, + &pb.Property{ + Name: &fieldNameS, + Value: &pb.PropertyValue{ + StringValue: &testString3, + }, + }, + }, + }, + &NestedSimple2X{ + AA: NestedSimple{ + A: Simple{I: testInt64}, + I: testInt64, + }, + A: SimpleTwoFields{S: testString2, SS: testString3}, + S: testString3, + }, + }, + { + "nested anonymous", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + &pb.Property{ + Name: &fieldNameX, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + }, + }, + &NestedSimpleAnonymous{ + Simple: Simple{I: testInt64}, + X: testString2, + }, + }, + { + "nested simple with slice", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameA, + Meaning: &entityProtoMeaning, + Multiple: &TRUE, + Value: &pb.PropertyValue{ + StringValue: &simpleEntityProto, + }, + }, + &pb.Property{ + Name: &fieldNameA, + Meaning: &entityProtoMeaning, + Multiple: &TRUE, + Value: &pb.PropertyValue{ + StringValue: &simpleEntityProto, + }, + }, + }, + }, + &NestedSliceOfSimple{ + A: []Simple{Simple{I: testInt64}, Simple{I: testInt64}}, + }, + }, + { + "nested with multiple anonymous fields", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameI, + Value: &pb.PropertyValue{ + Int64Value: &testInt64, + }, + }, + &pb.Property{ + Name: &fieldNameS, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + &pb.Property{ + Name: &fieldNameSS, + Value: &pb.PropertyValue{ + StringValue: &testString3, + }, + }, + &pb.Property{ + Name: &fieldNameX, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + }, + }, + &MultiAnonymous{ + Simple: Simple{I: testInt64}, + SimpleTwoFields: SimpleTwoFields{S: testString2, SS: testString3}, + X: testString2, + }, + }, + { + "nested with dotted field tag", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameA, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &bDotBEntityProto, + }, + }, + }, + }, + &ABDotB{ + A: BDotB{ + B: testString2, + }, + }, + }, + { + "nested entity with key", + &pb.EntityProto{ + Key: keyToProto("some-app-id", testKey0), + Property: []*pb.Property{ + &pb.Property{ + Name: &fieldNameY, + Value: &pb.PropertyValue{ + StringValue: &testString2, + }, + }, + &pb.Property{ + Name: &fieldNameN, + Meaning: &entityProtoMeaning, + Value: &pb.PropertyValue{ + StringValue: &withKeyEntityProto, + }, + }, + }, + }, + &NestedWithKey{ + Y: testString2, + N: WithKey{ + X: testString3, + I: testInt64, + K: testKey1a, + }, + }, + }, + } + + for _, tc := range testCases { + dst := reflect.New(reflect.TypeOf(tc.want).Elem()).Interface() + err := loadEntity(dst, tc.src) + if err != nil { + t.Errorf("loadEntity: %s: %v", tc.desc, err) + continue + } + + if !reflect.DeepEqual(tc.want, dst) { + t.Errorf("%s: compare:\ngot: %#v\nwant: %#v", tc.desc, dst, tc.want) + } + } +} diff --git a/vendor/google.golang.org/appengine/datastore/metadata.go b/vendor/google.golang.org/appengine/datastore/metadata.go index 3192a31d85..6acacc3db9 100644 --- a/vendor/google.golang.org/appengine/datastore/metadata.go +++ b/vendor/google.golang.org/appengine/datastore/metadata.go @@ -8,10 +8,9 @@ import "golang.org/x/net/context" // Datastore kinds for the metadata entities. const ( - namespaceKind = "__namespace__" - kindKind = "__kind__" - propertyKind = "__property__" - entityGroupKind = "__entitygroup__" + namespaceKind = "__namespace__" + kindKind = "__kind__" + propertyKind = "__property__" ) // Namespaces returns all the datastore namespaces. @@ -65,7 +64,7 @@ func KindProperties(ctx context.Context, kind string) (map[string][]string, erro propMap := map[string][]string{} props := []struct { - Repr []string `datastore:property_representation` + Repr []string `datastore:"property_representation"` }{} keys, err := q.GetAll(ctx, &props) diff --git a/vendor/google.golang.org/appengine/datastore/prop.go b/vendor/google.golang.org/appengine/datastore/prop.go index 3caef9a3b1..5cb2079d88 100644 --- a/vendor/google.golang.org/appengine/datastore/prop.go +++ b/vendor/google.golang.org/appengine/datastore/prop.go @@ -36,6 +36,7 @@ type Property struct { // - appengine.BlobKey // - appengine.GeoPoint // - []byte (up to 1 megabyte in length) + // - *Entity (representing a nested struct) // This set is smaller than the set of valid struct field types that the // datastore can load and save. A Property Value cannot be a slice (apart // from []byte); use multiple Properties instead. Also, a Value's type @@ -63,6 +64,13 @@ type Property struct { Multiple bool } +// An Entity is the value type for a nested struct. +// This type is only used for a Property's Value. +type Entity struct { + Key *Key + Properties []Property +} + // ByteString is a short byte slice (up to 1500 bytes) that can be indexed. type ByteString []byte @@ -119,25 +127,18 @@ func validPropertyName(name string) bool { return true } -// structTag is the parsed `datastore:"name,options"` tag of a struct field. -// If a field has no tag, or the tag has an empty name, then the structTag's -// name is just the field name. A "-" name means that the datastore ignores -// that field. -type structTag struct { - name string - noIndex bool -} - // structCodec describes how to convert a struct to and from a sequence of // properties. type structCodec struct { - // byIndex gives the structTag for the i'th field. - byIndex []structTag - // byName gives the field codec for the structTag with the given name. - byName map[string]fieldCodec + // fields gives the field codec for the structTag with the given name. + fields map[string]fieldCodec // hasSlice is whether a struct or any of its nested or embedded structs // has a slice-typed field (other than []byte). hasSlice bool + // keyField is the index of a *Key field with structTag __key__. + // This field is not relevant for the top level struct, only for + // nested structs. + keyField int // complete is whether the structCodec is complete. An incomplete // structCodec may be encountered when walking a recursive struct. complete bool @@ -146,8 +147,15 @@ type structCodec struct { // fieldCodec is a struct field's index and, if that struct field's type is // itself a struct, that substruct's structCodec. type fieldCodec struct { - index int - substructCodec *structCodec + // path is the index path to the field + path []int + noIndex bool + // omitEmpty indicates that the field should be omitted on save + // if empty. + omitEmpty bool + // structCodec is the codec fot the struct field at index 'path', + // or nil if the field is not a struct. + structCodec *structCodec } // structCodecs collects the structCodecs that have already been calculated. @@ -171,8 +179,10 @@ func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr error) { return c, nil } c = &structCodec{ - byIndex: make([]structTag, t.NumField()), - byName: make(map[string]fieldCodec), + fields: make(map[string]fieldCodec), + // We initialize keyField to -1 so that the zero-value is not + // misinterpreted as index 0. + keyField: -1, } // Add c to the structCodecs map before we are sure it is good. If t is @@ -185,20 +195,34 @@ func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr error) { } }() - for i := range c.byIndex { + for i := 0; i < t.NumField(); i++ { f := t.Field(i) - name, opts := f.Tag.Get("datastore"), "" - if i := strings.Index(name, ","); i != -1 { - name, opts = name[:i], name[i+1:] + // Skip unexported fields. + // Note that if f is an anonymous, unexported struct field, + // we will promote its fields. + if f.PkgPath != "" && !f.Anonymous { + continue } - if name == "" { + + tags := strings.Split(f.Tag.Get("datastore"), ",") + name := tags[0] + opts := make(map[string]bool) + for _, t := range tags[1:] { + opts[t] = true + } + switch { + case name == "": if !f.Anonymous { name = f.Name } - } else if name == "-" { - c.byIndex[i] = structTag{name: name} + case name == "-": continue - } else if !validPropertyName(name) { + case name == "__key__": + if f.Type != typeOfKeyPtr { + return nil, fmt.Errorf("datastore: __key__ field on struct %v is not a *datastore.Key", t) + } + c.keyField = i + case !validPropertyName(name): return nil, fmt.Errorf("datastore: struct tag has invalid property name: %q", name) } @@ -214,11 +238,10 @@ func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr error) { c.hasSlice = c.hasSlice || fIsSlice } + var sub *structCodec if substructType != nil && substructType != typeOfTime && substructType != typeOfGeoPoint { - if name != "" { - name = name + "." - } - sub, err := getStructCodecLocked(substructType) + var err error + sub, err = getStructCodecLocked(substructType) if err != nil { return nil, err } @@ -230,23 +253,35 @@ func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr error) { "datastore: flattening nested structs leads to a slice of slices: field %q", f.Name) } c.hasSlice = c.hasSlice || sub.hasSlice - for relName := range sub.byName { - absName := name + relName - if _, ok := c.byName[absName]; ok { - return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", absName) + // If f is an anonymous struct field, we promote the substruct's fields up to this level + // in the linked list of struct codecs. + if f.Anonymous { + for subname, subfield := range sub.fields { + if name != "" { + subname = name + "." + subname + } + if _, ok := c.fields[subname]; ok { + return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", subname) + } + c.fields[subname] = fieldCodec{ + path: append([]int{i}, subfield.path...), + noIndex: subfield.noIndex || opts["noindex"], + omitEmpty: subfield.omitEmpty, + structCodec: subfield.structCodec, + } } - c.byName[absName] = fieldCodec{index: i, substructCodec: sub} - } - } else { - if _, ok := c.byName[name]; ok { - return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", name) + continue } - c.byName[name] = fieldCodec{index: i} } - c.byIndex[i] = structTag{ - name: name, - noIndex: opts == "noindex", + if _, ok := c.fields[name]; ok { + return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", name) + } + c.fields[name] = fieldCodec{ + path: []int{i}, + noIndex: opts["noindex"], + omitEmpty: opts["omitempty"], + structCodec: sub, } } c.complete = true @@ -259,8 +294,9 @@ type structPLS struct { codec *structCodec } -// newStructPLS returns a PropertyLoadSaver for the struct pointer p. -func newStructPLS(p interface{}) (PropertyLoadSaver, error) { +// newStructPLS returns a structPLS, which implements the +// PropertyLoadSaver interface, for the struct pointer p. +func newStructPLS(p interface{}) (*structPLS, error) { v := reflect.ValueOf(p) if v.Kind() != reflect.Ptr || v.Elem().Kind() != reflect.Struct { return nil, ErrInvalidEntityType @@ -270,7 +306,7 @@ func newStructPLS(p interface{}) (PropertyLoadSaver, error) { if err != nil { return nil, err } - return structPLS{v, codec}, nil + return &structPLS{v, codec}, nil } // LoadStruct loads the properties from p to dst. diff --git a/vendor/google.golang.org/appengine/datastore/prop_test.go b/vendor/google.golang.org/appengine/datastore/prop_test.go index 68895211f9..1b42249df5 100644 --- a/vendor/google.golang.org/appengine/datastore/prop_test.go +++ b/vendor/google.golang.org/appengine/datastore/prop_test.go @@ -80,58 +80,36 @@ func TestStructCodec(t *testing.T) { V string `datastore:",noindex"` } oStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "O"}, - }, - byName: map[string]fieldCodec{ - "O": {index: 0}, + fields: map[string]fieldCodec{ + "O": {path: []int{0}}, }, complete: true, } pStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "P"}, - {name: "Q"}, - }, - byName: map[string]fieldCodec{ - "P": {index: 0}, - "Q": {index: 1}, + fields: map[string]fieldCodec{ + "P": {path: []int{0}}, + "Q": {path: []int{1}}, }, complete: true, } rStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "R"}, - {name: "S."}, - {name: "T."}, - {name: ""}, - }, - byName: map[string]fieldCodec{ - "R": {index: 0}, - "S.P": {index: 1, substructCodec: pStructCodec}, - "S.Q": {index: 1, substructCodec: pStructCodec}, - "T.O": {index: 2, substructCodec: oStructCodec}, - "O": {index: 3, substructCodec: oStructCodec}, + fields: map[string]fieldCodec{ + "R": {path: []int{0}}, + "S": {path: []int{1}, structCodec: pStructCodec}, + "T": {path: []int{2}, structCodec: oStructCodec}, + "O": {path: []int{3, 0}}, }, complete: true, } uStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "U"}, - {name: "v"}, - }, - byName: map[string]fieldCodec{ - "U": {index: 0}, - "v": {index: 1}, + fields: map[string]fieldCodec{ + "U": {path: []int{0}}, }, complete: true, } vStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "V", noIndex: true}, - }, - byName: map[string]fieldCodec{ - "V": {index: 0}, + fields: map[string]fieldCodec{ + "V": {path: []int{0}, noIndex: true}, }, complete: true, } @@ -169,15 +147,10 @@ func TestStructCodec(t *testing.T) { T time.Time }{}, &structCodec{ - byIndex: []structTag{ - {name: "B"}, - {name: "K"}, - {name: "T"}, - }, - byName: map[string]fieldCodec{ - "B": {index: 0}, - "K": {index: 1}, - "T": {index: 2}, + fields: map[string]fieldCodec{ + "B": {path: []int{0}}, + "K": {path: []int{1}}, + "T": {path: []int{2}}, }, complete: true, }, @@ -195,23 +168,13 @@ func TestStructCodec(t *testing.T) { oStruct `datastore:"-"` }{}, &structCodec{ - byIndex: []structTag{ - {name: "a", noIndex: true}, - {name: "b", noIndex: false}, - {name: "C", noIndex: true}, - {name: "D", noIndex: false}, - {name: "E", noIndex: false}, - {name: "-", noIndex: false}, - {name: "J", noIndex: true}, - {name: "-", noIndex: false}, - }, - byName: map[string]fieldCodec{ - "a": {index: 0}, - "b": {index: 1}, - "C": {index: 2}, - "D": {index: 3}, - "E": {index: 4}, - "J": {index: 6}, + fields: map[string]fieldCodec{ + "a": {path: []int{0}, noIndex: true}, + "b": {path: []int{1}}, + "C": {path: []int{2}, noIndex: true}, + "D": {path: []int{3}}, + "E": {path: []int{4}}, + "J": {path: []int{6}, noIndex: true}, }, complete: true, }, @@ -225,17 +188,9 @@ func TestStructCodec(t *testing.T) { d int `datastore:"Y"` }{}, &structCodec{ - byIndex: []structTag{ - {name: "A"}, - {name: "b"}, - {name: "x"}, - {name: "Y"}, - }, - byName: map[string]fieldCodec{ - "A": {index: 0}, - "b": {index: 1}, - "x": {index: 2}, - "Y": {index: 3}, + fields: map[string]fieldCodec{ + "A": {path: []int{0}}, + "x": {path: []int{2}}, }, complete: true, }, @@ -250,23 +205,12 @@ func TestStructCodec(t *testing.T) { oStruct }{}, &structCodec{ - byIndex: []structTag{ - {name: "A"}, - {name: "B"}, - {name: "CC."}, - {name: "DDD."}, - {name: ""}, - }, - byName: map[string]fieldCodec{ - "A": {index: 0}, - "B": {index: 1}, - "CC.O": {index: 2, substructCodec: oStructCodec}, - "DDD.R": {index: 3, substructCodec: rStructCodec}, - "DDD.S.P": {index: 3, substructCodec: rStructCodec}, - "DDD.S.Q": {index: 3, substructCodec: rStructCodec}, - "DDD.T.O": {index: 3, substructCodec: rStructCodec}, - "DDD.O": {index: 3, substructCodec: rStructCodec}, - "O": {index: 4, substructCodec: oStructCodec}, + fields: map[string]fieldCodec{ + "A": {path: []int{0}}, + "B": {path: []int{1}}, + "CC": {path: []int{2}, structCodec: oStructCodec}, + "DDD": {path: []int{3}, structCodec: rStructCodec}, + "O": {path: []int{4, 0}}, }, complete: true, }, @@ -281,22 +225,11 @@ func TestStructCodec(t *testing.T) { oStruct `datastore:"z"` }{}, &structCodec{ - byIndex: []structTag{ - {name: "-"}, - {name: "w"}, - {name: "xx."}, - {name: "y."}, - {name: "z."}, - }, - byName: map[string]fieldCodec{ - "w": {index: 1}, - "xx.O": {index: 2, substructCodec: oStructCodec}, - "y.R": {index: 3, substructCodec: rStructCodec}, - "y.S.P": {index: 3, substructCodec: rStructCodec}, - "y.S.Q": {index: 3, substructCodec: rStructCodec}, - "y.T.O": {index: 3, substructCodec: rStructCodec}, - "y.O": {index: 3, substructCodec: rStructCodec}, - "z.O": {index: 4, substructCodec: oStructCodec}, + fields: map[string]fieldCodec{ + "w": {path: []int{1}}, + "xx": {path: []int{2}, structCodec: oStructCodec}, + "y": {path: []int{3}, structCodec: rStructCodec}, + "z.O": {path: []int{4, 0}}, }, complete: true, }, @@ -311,22 +244,10 @@ func TestStructCodec(t *testing.T) { uStruct }{}, &structCodec{ - byIndex: []structTag{ - {name: "a"}, - {name: "B"}, - {name: "c."}, - {name: "D."}, - {name: ""}, - }, - byName: map[string]fieldCodec{ - "a": {index: 0}, - "B": {index: 1}, - "c.U": {index: 2, substructCodec: uStructCodec}, - "c.v": {index: 2, substructCodec: uStructCodec}, - "D.U": {index: 3, substructCodec: uStructCodec}, - "D.v": {index: 3, substructCodec: uStructCodec}, - "U": {index: 4, substructCodec: uStructCodec}, - "v": {index: 4, substructCodec: uStructCodec}, + fields: map[string]fieldCodec{ + "B": {path: []int{1}}, + "D": {path: []int{3}, structCodec: uStructCodec}, + "U": {path: []int{4, 0}}, }, complete: true, }, @@ -337,11 +258,8 @@ func TestStructCodec(t *testing.T) { A oStruct `datastore:",noindex"` }{}, &structCodec{ - byIndex: []structTag{ - {name: "A.", noIndex: true}, - }, - byName: map[string]fieldCodec{ - "A.O": {index: 0, substructCodec: oStructCodec}, + fields: map[string]fieldCodec{ + "A": {path: []int{0}, structCodec: oStructCodec, noIndex: true}, }, complete: true, }, @@ -352,11 +270,8 @@ func TestStructCodec(t *testing.T) { A []string `datastore:",noindex"` }{}, &structCodec{ - byIndex: []structTag{ - {name: "A", noIndex: true}, - }, - byName: map[string]fieldCodec{ - "A": {index: 0}, + fields: map[string]fieldCodec{ + "A": {path: []int{0}, noIndex: true}, }, hasSlice: true, complete: true, @@ -369,11 +284,8 @@ func TestStructCodec(t *testing.T) { A []vStruct `datastore:",noindex"` }{}, &structCodec{ - byIndex: []structTag{ - {name: "A.", noIndex: true}, - }, - byName: map[string]fieldCodec{ - "A.V": {index: 0, substructCodec: vStructCodec}, + fields: map[string]fieldCodec{ + "A": {path: []int{0}, structCodec: vStructCodec, noIndex: true}, }, hasSlice: true, complete: true, @@ -387,13 +299,44 @@ func TestStructCodec(t *testing.T) { t.Errorf("%s: getStructCodec: %v", tc.desc, err) continue } - if !reflect.DeepEqual(got, tc.want) { + // can't reflect.DeepEqual b/c element order in fields map may differ + if !isEqualStructCodec(got, tc.want) { t.Errorf("%s\ngot %+v\nwant %+v\n", tc.desc, got, tc.want) - continue } } } +func isEqualStructCodec(got, want *structCodec) bool { + if got.complete != want.complete { + return false + } + if got.hasSlice != want.hasSlice { + return false + } + if len(got.fields) != len(want.fields) { + return false + } + for name, wantF := range want.fields { + gotF := got.fields[name] + if !reflect.DeepEqual(wantF.path, gotF.path) { + return false + } + if wantF.noIndex != gotF.noIndex { + return false + } + if wantF.structCodec != nil { + if gotF.structCodec == nil { + return false + } + if !isEqualStructCodec(gotF.structCodec, wantF.structCodec) { + return false + } + } + } + + return true +} + func TestRepeatedPropertyName(t *testing.T) { good := []interface{}{ struct { @@ -453,7 +396,7 @@ func TestRepeatedPropertyName(t *testing.T) { } func TestFlatteningNestedStructs(t *testing.T) { - type deepGood struct { + type DeepGood struct { A struct { B []struct { C struct { @@ -462,7 +405,7 @@ func TestFlatteningNestedStructs(t *testing.T) { } } } - type deepBad struct { + type DeepBad struct { A struct { B []struct { C struct { @@ -471,16 +414,16 @@ func TestFlatteningNestedStructs(t *testing.T) { } } } - type iSay struct { + type ISay struct { Tomato int } - type youSay struct { + type YouSay struct { Tomato int } - type tweedledee struct { + type Tweedledee struct { Dee int `datastore:"D"` } - type tweedledum struct { + type Tweedledum struct { Dum int `datastore:"D"` } @@ -515,18 +458,18 @@ func TestFlatteningNestedStructs(t *testing.T) { Q []int }{}, struct { - deepGood + DeepGood }{}, struct { - DG deepGood + DG DeepGood }{}, struct { Foo struct { - Z int `datastore:"X"` + Z int } `datastore:"A"` Bar struct { - Z int `datastore:"Y"` - } `datastore:"A"` + Z int + } `datastore:"B"` }{}, } bad := []interface{}{ @@ -541,18 +484,18 @@ func TestFlatteningNestedStructs(t *testing.T) { } }{}, struct { - deepBad + DeepBad }{}, struct { - DB deepBad + DB DeepBad }{}, struct { - iSay - youSay + ISay + YouSay }{}, struct { - tweedledee - tweedledum + Tweedledee + Tweedledum }{}, struct { Foo struct { diff --git a/vendor/google.golang.org/appengine/datastore/query.go b/vendor/google.golang.org/appengine/datastore/query.go index 696a5d3e2b..3847b0fa61 100644 --- a/vendor/google.golang.org/appengine/datastore/query.go +++ b/vendor/google.golang.org/appengine/datastore/query.go @@ -332,6 +332,11 @@ func (q *Query) toProto(dst *pb.Query, appID string) error { } // Count returns the number of results for the query. +// +// The running time and number of API calls made by Count scale linearly with +// the sum of the query's offset and limit. Unless the result count is +// expected to be small, it is best to specify a limit; otherwise Count will +// continue until it finishes counting or the provided context expires. func (q *Query) Count(c context.Context) (int, error) { // Check that the query is well-formed. if q.err != nil { @@ -438,6 +443,12 @@ func callNext(c context.Context, res *pb.QueryResult, offset, limit int32) error // added to dst. // // If q is a ``keys-only'' query, GetAll ignores dst and only returns the keys. +// +// The running time and number of API calls made by GetAll scale linearly with +// with the sum of the query's offset and limit. Unless the result count is +// expected to be small, it is best to specify a limit; otherwise GetAll will +// continue until it finishes collecting results or the provided context +// expires. func (q *Query) GetAll(c context.Context, dst interface{}) ([]*Key, error) { var ( dv reflect.Value diff --git a/vendor/google.golang.org/appengine/datastore/save.go b/vendor/google.golang.org/appengine/datastore/save.go index 6aeffb6316..728d4ca0c8 100644 --- a/vendor/google.golang.org/appengine/datastore/save.go +++ b/vendor/google.golang.org/appengine/datastore/save.go @@ -25,7 +25,7 @@ func toUnixMicro(t time.Time) int64 { } func fromUnixMicro(t int64) time.Time { - return time.Unix(t/1e6, (t%1e6)*1e3) + return time.Unix(t/1e6, (t%1e6)*1e3).UTC() } var ( @@ -111,6 +111,12 @@ func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p return p, "" } +type saveOpts struct { + noIndex bool + multiple bool + omitEmpty bool +} + // saveEntity saves an EntityProto into a PropertyLoadSaver or struct pointer. func saveEntity(defaultAppID string, key *Key, src interface{}) (*pb.EntityProto, error) { var err error @@ -126,11 +132,14 @@ func saveEntity(defaultAppID string, key *Key, src interface{}) (*pb.EntityProto return propertiesToProto(defaultAppID, key, props) } -func saveStructProperty(props *[]Property, name string, noIndex, multiple bool, v reflect.Value) error { +func saveStructProperty(props *[]Property, name string, opts saveOpts, v reflect.Value) error { + if opts.omitEmpty && isEmptyValue(v) { + return nil + } p := Property{ Name: name, - NoIndex: noIndex, - Multiple: multiple, + NoIndex: opts.noIndex, + Multiple: opts.multiple, } switch x := v.Interface().(type) { case *Key: @@ -166,7 +175,7 @@ func saveStructProperty(props *[]Property, name string, noIndex, multiple bool, if err != nil { return fmt.Errorf("datastore: unsupported struct field: %v", err) } - return sub.(structPLS).save(props, name, noIndex, multiple) + return sub.save(props, name+".", opts) } } if p.Value == nil { @@ -178,37 +187,35 @@ func saveStructProperty(props *[]Property, name string, noIndex, multiple bool, func (s structPLS) Save() ([]Property, error) { var props []Property - if err := s.save(&props, "", false, false); err != nil { + if err := s.save(&props, "", saveOpts{}); err != nil { return nil, err } return props, nil } -func (s structPLS) save(props *[]Property, prefix string, noIndex, multiple bool) error { - for i, t := range s.codec.byIndex { - if t.name == "-" { - continue - } - name := t.name - if prefix != "" { - name = prefix + name - } - v := s.v.Field(i) +func (s structPLS) save(props *[]Property, prefix string, opts saveOpts) error { + for name, f := range s.codec.fields { + name = prefix + name + v := s.v.FieldByIndex(f.path) if !v.IsValid() || !v.CanSet() { continue } - noIndex1 := noIndex || t.noIndex + var opts1 saveOpts + opts1.noIndex = opts.noIndex || f.noIndex + opts1.multiple = opts.multiple + opts1.omitEmpty = f.omitEmpty // don't propagate // For slice fields that aren't []byte, save each element. if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 { + opts1.multiple = true for j := 0; j < v.Len(); j++ { - if err := saveStructProperty(props, name, noIndex1, true, v.Index(j)); err != nil { + if err := saveStructProperty(props, name, opts1, v.Index(j)); err != nil { return err } } continue } // Otherwise, save the field itself. - if err := saveStructProperty(props, name, noIndex1, multiple, v); err != nil { + if err := saveStructProperty(props, name, opts1, v); err != nil { return err } } @@ -298,3 +305,23 @@ func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.Ent } return e, nil } + +// isEmptyValue is taken from the encoding/json package in the +// standard library. +func isEmptyValue(v reflect.Value) bool { + switch v.Kind() { + 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: + return v.IsNil() + } + return false +} diff --git a/vendor/google.golang.org/appengine/delay/delay.go b/vendor/google.golang.org/appengine/delay/delay.go index 6d628fc16d..52915a4224 100644 --- a/vendor/google.golang.org/appengine/delay/delay.go +++ b/vendor/google.golang.org/appengine/delay/delay.go @@ -9,6 +9,7 @@ user request by using the taskqueue API. To declare a function that may be executed later, call Func in a top-level assignment context, passing it an arbitrary string key and a function whose first argument is of type context.Context. +The key is used to look up the function so it can be called later. var laterFunc = delay.Func("key", myFunc) It is also possible to use a function literal. var laterFunc = delay.Func("key", func(c context.Context, x string) { @@ -73,16 +74,21 @@ const ( queue = "" ) +type contextKey int + var ( // registry of all delayed functions funcs = make(map[string]*Function) // precomputed types - contextType = reflect.TypeOf((*context.Context)(nil)).Elem() - errorType = reflect.TypeOf((*error)(nil)).Elem() + errorType = reflect.TypeOf((*error)(nil)).Elem() // errors - errFirstArg = errors.New("first argument must be context.Context") + errFirstArg = errors.New("first argument must be context.Context") + errOutsideDelayFunc = errors.New("request headers are only available inside a delay.Func") + + // context keys + headersContextKey contextKey = 0 ) // Func declares a new Function. The second argument must be a function with a @@ -105,7 +111,7 @@ func Func(key string, i interface{}) *Function { f.err = errors.New("not a function") return f } - if t.NumIn() == 0 || t.In(0) != contextType { + if t.NumIn() == 0 || !isContext(t.In(0)) { f.err = errFirstArg return f } @@ -124,6 +130,9 @@ func Func(key string, i interface{}) *Function { gob.Register(reflect.Zero(t.In(i)).Interface()) } + if old := funcs[f.key]; old != nil { + old.err = fmt.Errorf("multiple functions registered for %s in %s", key, file) + } funcs[f.key] = f return f } @@ -137,7 +146,7 @@ type invocation struct { // err := f.Call(c, ...) // is equivalent to // t, _ := f.Task(...) -// err := taskqueue.Add(c, t, "") +// _, err := taskqueue.Add(c, t, "") func (f *Function) Call(c context.Context, args ...interface{}) error { t, err := f.Task(args...) if err != nil { @@ -218,6 +227,15 @@ func (f *Function) Task(args ...interface{}) (*taskqueue.Task, error) { }, nil } +// Request returns the special task-queue HTTP request headers for the current +// task queue handler. Returns an error if called from outside a delay.Func. +func RequestHeaders(c context.Context) (*taskqueue.RequestHeaders, error) { + if ret, ok := c.Value(headersContextKey).(*taskqueue.RequestHeaders); ok { + return ret, nil + } + return nil, errOutsideDelayFunc +} + var taskqueueAdder = taskqueue.Add // for testing func init() { @@ -229,6 +247,8 @@ func init() { func runFunc(c context.Context, w http.ResponseWriter, req *http.Request) { defer req.Body.Close() + c = context.WithValue(c, headersContextKey, taskqueue.ParseRequestHeaders(req.Header)) + var inv invocation if err := gob.NewDecoder(req.Body).Decode(&inv); err != nil { log.Errorf(c, "delay: failed decoding task payload: %v", err) diff --git a/vendor/google.golang.org/appengine/delay/delay_go17.go b/vendor/google.golang.org/appengine/delay/delay_go17.go new file mode 100644 index 0000000000..9a59e8b0de --- /dev/null +++ b/vendor/google.golang.org/appengine/delay/delay_go17.go @@ -0,0 +1,23 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +//+build go1.7 + +package delay + +import ( + stdctx "context" + "reflect" + + netctx "golang.org/x/net/context" +) + +var ( + stdContextType = reflect.TypeOf((*stdctx.Context)(nil)).Elem() + netContextType = reflect.TypeOf((*netctx.Context)(nil)).Elem() +) + +func isContext(t reflect.Type) bool { + return t == stdContextType || t == netContextType +} diff --git a/vendor/google.golang.org/appengine/delay/delay_go17_test.go b/vendor/google.golang.org/appengine/delay/delay_go17_test.go new file mode 100644 index 0000000000..0e708d005e --- /dev/null +++ b/vendor/google.golang.org/appengine/delay/delay_go17_test.go @@ -0,0 +1,55 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +//+build go1.7 + +package delay + +import ( + "bytes" + stdctx "context" + "net/http" + "net/http/httptest" + "testing" + + netctx "golang.org/x/net/context" + "google.golang.org/appengine/taskqueue" +) + +var ( + stdCtxRuns = 0 + stdCtxFunc = Func("stdctx", func(c stdctx.Context) { + stdCtxRuns++ + }) +) + +func TestStandardContext(t *testing.T) { + // Fake out the adding of a task. + var task *taskqueue.Task + taskqueueAdder = func(_ netctx.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { + if queue != "" { + t.Errorf(`Got queue %q, expected ""`, queue) + } + task = tk + return tk, nil + } + + c := newFakeContext() + stdCtxRuns = 0 // reset state + if err := stdCtxFunc.Call(c.ctx); err != nil { + t.Fatal("Function.Call:", err) + } + + // Simulate the Task Queue service. + req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) + if err != nil { + t.Fatalf("Failed making http.Request: %v", err) + } + rw := httptest.NewRecorder() + runFunc(c.ctx, rw, req) + + if stdCtxRuns != 1 { + t.Errorf("stdCtxRuns: got %d, want 1", stdCtxRuns) + } +} diff --git a/vendor/google.golang.org/appengine/delay/delay_pre17.go b/vendor/google.golang.org/appengine/delay/delay_pre17.go new file mode 100644 index 0000000000..d30c75dfb4 --- /dev/null +++ b/vendor/google.golang.org/appengine/delay/delay_pre17.go @@ -0,0 +1,19 @@ +// Copyright 2017 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +//+build !go1.7 + +package delay + +import ( + "reflect" + + "golang.org/x/net/context" +) + +var contextType = reflect.TypeOf((*context.Context)(nil)).Elem() + +func isContext(t reflect.Type) bool { + return t == contextType +} diff --git a/vendor/google.golang.org/appengine/delay/delay_test.go b/vendor/google.golang.org/appengine/delay/delay_test.go index ef68d204ff..3df2bf7e33 100644 --- a/vendor/google.golang.org/appengine/delay/delay_test.go +++ b/vendor/google.golang.org/appengine/delay/delay_test.go @@ -82,6 +82,26 @@ var ( } return errFuncErr }) + + dupeWhich = 0 + dupe1Func = Func("dupe", func(c context.Context) { + if dupeWhich == 0 { + dupeWhich = 1 + } + }) + dupe2Func = Func("dupe", func(c context.Context) { + if dupeWhich == 0 { + dupeWhich = 2 + } + }) + + reqFuncRuns = 0 + reqFuncHeaders *taskqueue.RequestHeaders + reqFuncErr error + reqFunc = Func("req", func(c context.Context) { + reqFuncRuns++ + reqFuncHeaders, reqFuncErr = RequestHeaders(c) + }) ) type fakeContext struct { @@ -320,3 +340,89 @@ func TestErrorFunction(t *testing.T) { } } } + +func TestDuplicateFunction(t *testing.T) { + c := newFakeContext() + + // Fake out the adding of a task. + var task *taskqueue.Task + taskqueueAdder = func(_ context.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { + if queue != "" { + t.Errorf(`Got queue %q, expected ""`, queue) + } + task = tk + return tk, nil + } + + if err := dupe1Func.Call(c.ctx); err == nil { + t.Error("dupe1Func.Call did not return error") + } + if task != nil { + t.Error("dupe1Func.Call posted a task") + } + if err := dupe2Func.Call(c.ctx); err != nil { + t.Errorf("dupe2Func.Call error: %v", err) + } + if task == nil { + t.Fatalf("dupe2Func.Call did not post a task") + } + + // Simulate the Task Queue service. + req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) + if err != nil { + t.Fatalf("Failed making http.Request: %v", err) + } + rw := httptest.NewRecorder() + runFunc(c.ctx, rw, req) + + if dupeWhich == 1 { + t.Error("dupe2Func.Call used old registered function") + } else if dupeWhich != 2 { + t.Errorf("dupeWhich = %d; want 2", dupeWhich) + } +} + +func TestGetRequestHeadersFromContext(t *testing.T) { + c := newFakeContext() + + // Outside a delay.Func should return an error. + headers, err := RequestHeaders(c.ctx) + if headers != nil { + t.Errorf("RequestHeaders outside Func, got %v, want nil", headers) + } + if err != errOutsideDelayFunc { + t.Errorf("RequestHeaders outside Func err, got %v, want %v", err, errOutsideDelayFunc) + } + + // Fake out the adding of a task. + var task *taskqueue.Task + taskqueueAdder = func(_ context.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { + if queue != "" { + t.Errorf(`Got queue %q, expected ""`, queue) + } + task = tk + return tk, nil + } + + reqFunc.Call(c.ctx) + + reqFuncRuns, reqFuncHeaders = 0, nil // reset state + // Simulate the Task Queue service. + req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) + req.Header.Set("x-appengine-taskname", "foobar") + if err != nil { + t.Fatalf("Failed making http.Request: %v", err) + } + rw := httptest.NewRecorder() + runFunc(c.ctx, rw, req) + + if reqFuncRuns != 1 { + t.Errorf("reqFuncRuns: got %d, want 1", reqFuncRuns) + } + if reqFuncHeaders.TaskName != "foobar" { + t.Errorf("reqFuncHeaders.TaskName: got %v, want 'foobar'", reqFuncHeaders.TaskName) + } + if reqFuncErr != nil { + t.Errorf("reqFuncErr: got %v, want nil", reqFuncErr) + } +} diff --git a/vendor/google.golang.org/appengine/demos/guestbook/app.yaml b/vendor/google.golang.org/appengine/demos/guestbook/app.yaml index 8d9d16eada..3342503328 100644 --- a/vendor/google.golang.org/appengine/demos/guestbook/app.yaml +++ b/vendor/google.golang.org/appengine/demos/guestbook/app.yaml @@ -1,4 +1,4 @@ -# Demo application for Managed VMs. +# Demo application for App Engine "flexible environment". runtime: go vm: true api_version: go1 diff --git a/vendor/google.golang.org/appengine/demos/guestbook/guestbook.go b/vendor/google.golang.org/appengine/demos/guestbook/guestbook.go index 0c6e89755c..04a0432bb4 100644 --- a/vendor/google.golang.org/appengine/demos/guestbook/guestbook.go +++ b/vendor/google.golang.org/appengine/demos/guestbook/guestbook.go @@ -2,7 +2,7 @@ // Use of this source code is governed by the Apache 2.0 // license that can be found in the LICENSE file. -// This example only works on Managed VMs. +// This example only works on App Engine "flexible environment". // +build !appengine package main diff --git a/vendor/google.golang.org/appengine/demos/helloworld/helloworld.go b/vendor/google.golang.org/appengine/demos/helloworld/helloworld.go index fcd9b0bba2..fbe9f56ed8 100644 --- a/vendor/google.golang.org/appengine/demos/helloworld/helloworld.go +++ b/vendor/google.golang.org/appengine/demos/helloworld/helloworld.go @@ -2,7 +2,7 @@ // Use of this source code is governed by the Apache 2.0 // license that can be found in the LICENSE file. -// This example only works on Managed VMs. +// This example only works on App Engine "flexible environment". // +build !appengine package main diff --git a/vendor/google.golang.org/appengine/internal/aetesting/fake.go b/vendor/google.golang.org/appengine/internal/aetesting/fake.go index 6f5c1977ff..eb5b2c65b6 100644 --- a/vendor/google.golang.org/appengine/internal/aetesting/fake.go +++ b/vendor/google.golang.org/appengine/internal/aetesting/fake.go @@ -8,6 +8,7 @@ package aetesting import ( "fmt" + "net/http" "reflect" "testing" @@ -44,7 +45,7 @@ func FakeSingleContext(t *testing.T, service, method string, f interface{}) cont method: method, f: fv, } - return internal.WithCallOverride(context.Background(), s.call) + return internal.WithCallOverride(internal.ContextForTesting(&http.Request{}), s.call) } var ( diff --git a/vendor/google.golang.org/appengine/internal/api.go b/vendor/google.golang.org/appengine/internal/api.go index aa139d4d51..16f87c5d37 100644 --- a/vendor/google.golang.org/appengine/internal/api.go +++ b/vendor/google.golang.org/appengine/internal/api.go @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // +build !appengine +// +build go1.7 package internal @@ -32,7 +33,8 @@ import ( ) const ( - apiPath = "/rpc_http" + apiPath = "/rpc_http" + defaultTicketSuffix = "/default.20150612t184001.0" ) var ( @@ -60,6 +62,11 @@ var ( Dial: limitDial, }, } + + defaultTicketOnce sync.Once + defaultTicket string + backgroundContextOnce sync.Once + backgroundContext netcontext.Context ) func apiURL() *url.URL { @@ -83,16 +90,10 @@ func handleHTTP(w http.ResponseWriter, r *http.Request) { outHeader: w.Header(), apiURL: apiURL(), } - stopFlushing := make(chan int) + r = r.WithContext(withContext(r.Context(), c)) + c.req = r - ctxs.Lock() - ctxs.m[r] = c - ctxs.Unlock() - defer func() { - ctxs.Lock() - delete(ctxs.m, r) - ctxs.Unlock() - }() + stopFlushing := make(chan int) // Patch up RemoteAddr so it looks reasonable. if addr := r.Header.Get(userIPHeader); addr != "" { @@ -191,18 +192,6 @@ func renderPanic(x interface{}) string { return string(buf) } -var ctxs = struct { - sync.Mutex - m map[*http.Request]*context - bg *context // background context, lazily initialized - // dec is used by tests to decorate the netcontext.Context returned - // for a given request. This allows tests to add overrides (such as - // WithAppIDOverride) to the context. The map is nil outside tests. - dec map[*http.Request]func(netcontext.Context) netcontext.Context -}{ - m: make(map[*http.Request]*context), -} - // context represents the context of an in-flight HTTP request. // It implements the appengine.Context and http.ResponseWriter interfaces. type context struct { @@ -223,6 +212,34 @@ type context struct { var contextKey = "holds a *context" +// jointContext joins two contexts in a superficial way. +// It takes values and timeouts from a base context, and only values from another context. +type jointContext struct { + base netcontext.Context + valuesOnly netcontext.Context +} + +func (c jointContext) Deadline() (time.Time, bool) { + return c.base.Deadline() +} + +func (c jointContext) Done() <-chan struct{} { + return c.base.Done() +} + +func (c jointContext) Err() error { + return c.base.Err() +} + +func (c jointContext) Value(key interface{}) interface{} { + if val := c.base.Value(key); val != nil { + return val + } + return c.valuesOnly.Value(key) +} + +// fromContext returns the App Engine context or nil if ctx is not +// derived from an App Engine context. func fromContext(ctx netcontext.Context) *context { c, _ := ctx.Value(&contextKey).(*context) return c @@ -247,86 +264,70 @@ func IncomingHeaders(ctx netcontext.Context) http.Header { return nil } -func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context { - ctxs.Lock() - c := ctxs.m[req] - d := ctxs.dec[req] - ctxs.Unlock() +func ReqContext(req *http.Request) netcontext.Context { + return req.Context() +} - if d != nil { - parent = d(parent) +func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context { + return jointContext{ + base: parent, + valuesOnly: req.Context(), } +} - if c == nil { - // Someone passed in an http.Request that is not in-flight. - // We panic here rather than panicking at a later point - // so that stack traces will be more sensible. - log.Panic("appengine: NewContext passed an unknown http.Request") - } - return withContext(parent, c) +// DefaultTicket returns a ticket used for background context or dev_appserver. +func DefaultTicket() string { + defaultTicketOnce.Do(func() { + if IsDevAppServer() { + defaultTicket = "testapp" + defaultTicketSuffix + return + } + appID := partitionlessAppID() + escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1) + majVersion := VersionID(nil) + if i := strings.Index(majVersion, "."); i > 0 { + majVersion = majVersion[:i] + } + defaultTicket = fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(nil), majVersion, InstanceID()) + }) + return defaultTicket } func BackgroundContext() netcontext.Context { - ctxs.Lock() - defer ctxs.Unlock() - - if ctxs.bg != nil { - return toContext(ctxs.bg) - } - - // Compute background security ticket. - appID := partitionlessAppID() - escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1) - majVersion := VersionID(nil) - if i := strings.Index(majVersion, "."); i > 0 { - majVersion = majVersion[:i] - } - ticket := fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(nil), majVersion, InstanceID()) - - ctxs.bg = &context{ - req: &http.Request{ - Header: http.Header{ - ticketHeader: []string{ticket}, + backgroundContextOnce.Do(func() { + // Compute background security ticket. + ticket := DefaultTicket() + + c := &context{ + req: &http.Request{ + Header: http.Header{ + ticketHeader: []string{ticket}, + }, }, - }, - apiURL: apiURL(), - } + apiURL: apiURL(), + } + backgroundContext = toContext(c) - // TODO(dsymonds): Wire up the shutdown handler to do a final flush. - go ctxs.bg.logFlusher(make(chan int)) + // TODO(dsymonds): Wire up the shutdown handler to do a final flush. + go c.logFlusher(make(chan int)) + }) - return toContext(ctxs.bg) + return backgroundContext } // RegisterTestRequest registers the HTTP request req for testing, such that // any API calls are sent to the provided URL. It returns a closure to delete // the registration. // It should only be used by aetest package. -func RegisterTestRequest(req *http.Request, apiURL *url.URL, decorate func(netcontext.Context) netcontext.Context) func() { +func RegisterTestRequest(req *http.Request, apiURL *url.URL, decorate func(netcontext.Context) netcontext.Context) (*http.Request, func()) { c := &context{ req: req, apiURL: apiURL, } - ctxs.Lock() - defer ctxs.Unlock() - if _, ok := ctxs.m[req]; ok { - log.Panic("req already associated with context") - } - if _, ok := ctxs.dec[req]; ok { - log.Panic("req already associated with context") - } - if ctxs.dec == nil { - ctxs.dec = make(map[*http.Request]func(netcontext.Context) netcontext.Context) - } - ctxs.m[req] = c - ctxs.dec[req] = decorate - - return func() { - ctxs.Lock() - delete(ctxs.m, req) - delete(ctxs.dec, req) - ctxs.Unlock() - } + ctx := withContext(decorate(req.Context()), c) + req = req.WithContext(ctx) + c.req = req + return req, func() {} } var errTimeout = &CallError{ @@ -432,6 +433,12 @@ func (c *context) post(body []byte, timeout time.Duration) (b []byte, err error) } func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error { + if ns := NamespaceFromContext(ctx); ns != "" { + if fn, ok := NamespaceMods[service]; ok { + fn(in, ns) + } + } + if f, ctx, ok := callOverrideFromContext(ctx); ok { return f(ctx, service, method, in, out) } @@ -446,7 +453,7 @@ func Call(ctx netcontext.Context, service, method string, in, out proto.Message) c := fromContext(ctx) if c == nil { // Give a good error message rather than a panic lower down. - return errors.New("not an App Engine context") + return errNotAppEngineContext } // Apply transaction modifications if we're in a transaction. @@ -469,6 +476,16 @@ func Call(ctx netcontext.Context, service, method string, in, out proto.Message) } ticket := c.req.Header.Get(ticketHeader) + // Use a test ticket under test environment. + if ticket == "" { + if appid := ctx.Value(&appIDOverrideKey); appid != nil { + ticket = appid.(string) + defaultTicketSuffix + } + } + // Fall back to use background ticket when the request ticket is not available in Flex or dev_appserver. + if ticket == "" { + ticket = DefaultTicket() + } req := &remotepb.Request{ ServiceName: &service, Method: &method, @@ -544,6 +561,9 @@ var logLevelName = map[int64]string{ } func logf(c *context, level int64, format string, args ...interface{}) { + if c == nil { + panic("not an App Engine context") + } s := fmt.Sprintf(format, args...) s = strings.TrimRight(s, "\n") // Remove any trailing newline characters. c.addLogLine(&logpb.UserAppLogLine{ diff --git a/vendor/google.golang.org/appengine/internal/api_classic.go b/vendor/google.golang.org/appengine/internal/api_classic.go index 1c072e9dbb..f0f40b2e35 100644 --- a/vendor/google.golang.org/appengine/internal/api_classic.go +++ b/vendor/google.golang.org/appengine/internal/api_classic.go @@ -8,6 +8,7 @@ package internal import ( "errors" + "fmt" "net/http" "time" @@ -21,14 +22,20 @@ import ( var contextKey = "holds an appengine.Context" +// fromContext returns the App Engine context or nil if ctx is not +// derived from an App Engine context. func fromContext(ctx netcontext.Context) appengine.Context { c, _ := ctx.Value(&contextKey).(appengine.Context) return c } // This is only for classic App Engine adapters. -func ClassicContextFromContext(ctx netcontext.Context) appengine.Context { - return fromContext(ctx) +func ClassicContextFromContext(ctx netcontext.Context) (appengine.Context, error) { + c := fromContext(ctx) + if c == nil { + return nil, errNotAppEngineContext + } + return c, nil } func withContext(parent netcontext.Context, c appengine.Context) netcontext.Context { @@ -52,12 +59,41 @@ func IncomingHeaders(ctx netcontext.Context) http.Header { return nil } +func ReqContext(req *http.Request) netcontext.Context { + return WithContext(netcontext.Background(), req) +} + func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context { c := appengine.NewContext(req) return withContext(parent, c) } +type testingContext struct { + appengine.Context + + req *http.Request +} + +func (t *testingContext) FullyQualifiedAppID() string { return "dev~testcontext" } +func (t *testingContext) Call(service, method string, _, _ appengine_internal.ProtoMessage, _ *appengine_internal.CallOptions) error { + if service == "__go__" && method == "GetNamespace" { + return nil + } + return fmt.Errorf("testingContext: unsupported Call") +} +func (t *testingContext) Request() interface{} { return t.req } + +func ContextForTesting(req *http.Request) netcontext.Context { + return withContext(netcontext.Background(), &testingContext{req: req}) +} + func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error { + if ns := NamespaceFromContext(ctx); ns != "" { + if fn, ok := NamespaceMods[service]; ok { + fn(in, ns) + } + } + if f, ctx, ok := callOverrideFromContext(ctx); ok { return f(ctx, service, method, in, out) } @@ -72,7 +108,7 @@ func Call(ctx netcontext.Context, service, method string, in, out proto.Message) c := fromContext(ctx) if c == nil { // Give a good error message rather than a panic lower down. - return errors.New("not an App Engine context") + return errNotAppEngineContext } // Apply transaction modifications if we're in a transaction. diff --git a/vendor/google.golang.org/appengine/internal/api_common.go b/vendor/google.golang.org/appengine/internal/api_common.go index ec5383e660..e0c0b214b7 100644 --- a/vendor/google.golang.org/appengine/internal/api_common.go +++ b/vendor/google.golang.org/appengine/internal/api_common.go @@ -5,10 +5,15 @@ package internal import ( + "errors" + "os" + "github.com/golang/protobuf/proto" netcontext "golang.org/x/net/context" ) +var errNotAppEngineContext = errors.New("not an App Engine context") + type CallOverrideFunc func(ctx netcontext.Context, service, method string, in, out proto.Message) error var callOverrideKey = "holds []CallOverrideFunc" @@ -77,25 +82,42 @@ func Logf(ctx netcontext.Context, level int64, format string, args ...interface{ f(level, format, args...) return } - logf(fromContext(ctx), level, format, args...) + c := fromContext(ctx) + if c == nil { + panic(errNotAppEngineContext) + } + logf(c, level, format, args...) } // NamespacedContext wraps a Context to support namespaces. func NamespacedContext(ctx netcontext.Context, namespace string) netcontext.Context { - n := &namespacedContext{ - namespace: namespace, - } - return withNamespace(WithCallOverride(ctx, n.call), namespace) + return withNamespace(ctx, namespace) } -type namespacedContext struct { - namespace string -} +// SetTestEnv sets the env variables for testing background ticket in Flex. +func SetTestEnv() func() { + var environ = []struct { + key, value string + }{ + {"GAE_LONG_APP_ID", "my-app-id"}, + {"GAE_MINOR_VERSION", "067924799508853122"}, + {"GAE_MODULE_INSTANCE", "0"}, + {"GAE_MODULE_NAME", "default"}, + {"GAE_MODULE_VERSION", "20150612t184001"}, + } -func (n *namespacedContext) call(ctx netcontext.Context, service, method string, in, out proto.Message) error { - // Apply any namespace mods. - if mod, ok := NamespaceMods[service]; ok { - mod(in, n.namespace) + for _, v := range environ { + old := os.Getenv(v.key) + os.Setenv(v.key, v.value) + v.value = old + } + return func() { // Restore old environment after the test completes. + for _, v := range environ { + if v.value == "" { + os.Unsetenv(v.key) + continue + } + os.Setenv(v.key, v.value) + } } - return Call(ctx, service, method, in, out) } diff --git a/vendor/google.golang.org/appengine/internal/api_pre17.go b/vendor/google.golang.org/appengine/internal/api_pre17.go new file mode 100644 index 0000000000..028b4f056e --- /dev/null +++ b/vendor/google.golang.org/appengine/internal/api_pre17.go @@ -0,0 +1,682 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +// +build !appengine +// +build !go1.7 + +package internal + +import ( + "bytes" + "errors" + "fmt" + "io/ioutil" + "log" + "net" + "net/http" + "net/url" + "os" + "runtime" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" + + "github.com/golang/protobuf/proto" + netcontext "golang.org/x/net/context" + + basepb "google.golang.org/appengine/internal/base" + logpb "google.golang.org/appengine/internal/log" + remotepb "google.golang.org/appengine/internal/remote_api" +) + +const ( + apiPath = "/rpc_http" + defaultTicketSuffix = "/default.20150612t184001.0" +) + +var ( + // Incoming headers. + ticketHeader = http.CanonicalHeaderKey("X-AppEngine-API-Ticket") + dapperHeader = http.CanonicalHeaderKey("X-Google-DapperTraceInfo") + traceHeader = http.CanonicalHeaderKey("X-Cloud-Trace-Context") + curNamespaceHeader = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace") + userIPHeader = http.CanonicalHeaderKey("X-AppEngine-User-IP") + remoteAddrHeader = http.CanonicalHeaderKey("X-AppEngine-Remote-Addr") + + // Outgoing headers. + apiEndpointHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Endpoint") + apiEndpointHeaderValue = []string{"app-engine-apis"} + apiMethodHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Method") + apiMethodHeaderValue = []string{"/VMRemoteAPI.CallRemoteAPI"} + apiDeadlineHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Deadline") + apiContentType = http.CanonicalHeaderKey("Content-Type") + apiContentTypeValue = []string{"application/octet-stream"} + logFlushHeader = http.CanonicalHeaderKey("X-AppEngine-Log-Flush-Count") + + apiHTTPClient = &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyFromEnvironment, + Dial: limitDial, + }, + } + + defaultTicketOnce sync.Once + defaultTicket string +) + +func apiURL() *url.URL { + host, port := "appengine.googleapis.internal", "10001" + if h := os.Getenv("API_HOST"); h != "" { + host = h + } + if p := os.Getenv("API_PORT"); p != "" { + port = p + } + return &url.URL{ + Scheme: "http", + Host: host + ":" + port, + Path: apiPath, + } +} + +func handleHTTP(w http.ResponseWriter, r *http.Request) { + c := &context{ + req: r, + outHeader: w.Header(), + apiURL: apiURL(), + } + stopFlushing := make(chan int) + + ctxs.Lock() + ctxs.m[r] = c + ctxs.Unlock() + defer func() { + ctxs.Lock() + delete(ctxs.m, r) + ctxs.Unlock() + }() + + // Patch up RemoteAddr so it looks reasonable. + if addr := r.Header.Get(userIPHeader); addr != "" { + r.RemoteAddr = addr + } else if addr = r.Header.Get(remoteAddrHeader); addr != "" { + r.RemoteAddr = addr + } else { + // Should not normally reach here, but pick a sensible default anyway. + r.RemoteAddr = "127.0.0.1" + } + // The address in the headers will most likely be of these forms: + // 123.123.123.123 + // 2001:db8::1 + // net/http.Request.RemoteAddr is specified to be in "IP:port" form. + if _, _, err := net.SplitHostPort(r.RemoteAddr); err != nil { + // Assume the remote address is only a host; add a default port. + r.RemoteAddr = net.JoinHostPort(r.RemoteAddr, "80") + } + + // Start goroutine responsible for flushing app logs. + // This is done after adding c to ctx.m (and stopped before removing it) + // because flushing logs requires making an API call. + go c.logFlusher(stopFlushing) + + executeRequestSafely(c, r) + c.outHeader = nil // make sure header changes aren't respected any more + + stopFlushing <- 1 // any logging beyond this point will be dropped + + // Flush any pending logs asynchronously. + c.pendingLogs.Lock() + flushes := c.pendingLogs.flushes + if len(c.pendingLogs.lines) > 0 { + flushes++ + } + c.pendingLogs.Unlock() + go c.flushLog(false) + w.Header().Set(logFlushHeader, strconv.Itoa(flushes)) + + // Avoid nil Write call if c.Write is never called. + if c.outCode != 0 { + w.WriteHeader(c.outCode) + } + if c.outBody != nil { + w.Write(c.outBody) + } +} + +func executeRequestSafely(c *context, r *http.Request) { + defer func() { + if x := recover(); x != nil { + logf(c, 4, "%s", renderPanic(x)) // 4 == critical + c.outCode = 500 + } + }() + + http.DefaultServeMux.ServeHTTP(c, r) +} + +func renderPanic(x interface{}) string { + buf := make([]byte, 16<<10) // 16 KB should be plenty + buf = buf[:runtime.Stack(buf, false)] + + // Remove the first few stack frames: + // this func + // the recover closure in the caller + // That will root the stack trace at the site of the panic. + const ( + skipStart = "internal.renderPanic" + skipFrames = 2 + ) + start := bytes.Index(buf, []byte(skipStart)) + p := start + for i := 0; i < skipFrames*2 && p+1 < len(buf); i++ { + p = bytes.IndexByte(buf[p+1:], '\n') + p + 1 + if p < 0 { + break + } + } + if p >= 0 { + // buf[start:p+1] is the block to remove. + // Copy buf[p+1:] over buf[start:] and shrink buf. + copy(buf[start:], buf[p+1:]) + buf = buf[:len(buf)-(p+1-start)] + } + + // Add panic heading. + head := fmt.Sprintf("panic: %v\n\n", x) + if len(head) > len(buf) { + // Extremely unlikely to happen. + return head + } + copy(buf[len(head):], buf) + copy(buf, head) + + return string(buf) +} + +var ctxs = struct { + sync.Mutex + m map[*http.Request]*context + bg *context // background context, lazily initialized + // dec is used by tests to decorate the netcontext.Context returned + // for a given request. This allows tests to add overrides (such as + // WithAppIDOverride) to the context. The map is nil outside tests. + dec map[*http.Request]func(netcontext.Context) netcontext.Context +}{ + m: make(map[*http.Request]*context), +} + +// context represents the context of an in-flight HTTP request. +// It implements the appengine.Context and http.ResponseWriter interfaces. +type context struct { + req *http.Request + + outCode int + outHeader http.Header + outBody []byte + + pendingLogs struct { + sync.Mutex + lines []*logpb.UserAppLogLine + flushes int + } + + apiURL *url.URL +} + +var contextKey = "holds a *context" + +// fromContext returns the App Engine context or nil if ctx is not +// derived from an App Engine context. +func fromContext(ctx netcontext.Context) *context { + c, _ := ctx.Value(&contextKey).(*context) + return c +} + +func withContext(parent netcontext.Context, c *context) netcontext.Context { + ctx := netcontext.WithValue(parent, &contextKey, c) + if ns := c.req.Header.Get(curNamespaceHeader); ns != "" { + ctx = withNamespace(ctx, ns) + } + return ctx +} + +func toContext(c *context) netcontext.Context { + return withContext(netcontext.Background(), c) +} + +func IncomingHeaders(ctx netcontext.Context) http.Header { + if c := fromContext(ctx); c != nil { + return c.req.Header + } + return nil +} + +func ReqContext(req *http.Request) netcontext.Context { + return WithContext(netcontext.Background(), req) +} + +func WithContext(parent netcontext.Context, req *http.Request) netcontext.Context { + ctxs.Lock() + c := ctxs.m[req] + d := ctxs.dec[req] + ctxs.Unlock() + + if d != nil { + parent = d(parent) + } + + if c == nil { + // Someone passed in an http.Request that is not in-flight. + // We panic here rather than panicking at a later point + // so that stack traces will be more sensible. + log.Panic("appengine: NewContext passed an unknown http.Request") + } + return withContext(parent, c) +} + +// DefaultTicket returns a ticket used for background context or dev_appserver. +func DefaultTicket() string { + defaultTicketOnce.Do(func() { + if IsDevAppServer() { + defaultTicket = "testapp" + defaultTicketSuffix + return + } + appID := partitionlessAppID() + escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1) + majVersion := VersionID(nil) + if i := strings.Index(majVersion, "."); i > 0 { + majVersion = majVersion[:i] + } + defaultTicket = fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(nil), majVersion, InstanceID()) + }) + return defaultTicket +} + +func BackgroundContext() netcontext.Context { + ctxs.Lock() + defer ctxs.Unlock() + + if ctxs.bg != nil { + return toContext(ctxs.bg) + } + + // Compute background security ticket. + ticket := DefaultTicket() + + ctxs.bg = &context{ + req: &http.Request{ + Header: http.Header{ + ticketHeader: []string{ticket}, + }, + }, + apiURL: apiURL(), + } + + // TODO(dsymonds): Wire up the shutdown handler to do a final flush. + go ctxs.bg.logFlusher(make(chan int)) + + return toContext(ctxs.bg) +} + +// RegisterTestRequest registers the HTTP request req for testing, such that +// any API calls are sent to the provided URL. It returns a closure to delete +// the registration. +// It should only be used by aetest package. +func RegisterTestRequest(req *http.Request, apiURL *url.URL, decorate func(netcontext.Context) netcontext.Context) (*http.Request, func()) { + c := &context{ + req: req, + apiURL: apiURL, + } + ctxs.Lock() + defer ctxs.Unlock() + if _, ok := ctxs.m[req]; ok { + log.Panic("req already associated with context") + } + if _, ok := ctxs.dec[req]; ok { + log.Panic("req already associated with context") + } + if ctxs.dec == nil { + ctxs.dec = make(map[*http.Request]func(netcontext.Context) netcontext.Context) + } + ctxs.m[req] = c + ctxs.dec[req] = decorate + + return req, func() { + ctxs.Lock() + delete(ctxs.m, req) + delete(ctxs.dec, req) + ctxs.Unlock() + } +} + +var errTimeout = &CallError{ + Detail: "Deadline exceeded", + Code: int32(remotepb.RpcError_CANCELLED), + Timeout: true, +} + +func (c *context) Header() http.Header { return c.outHeader } + +// Copied from $GOROOT/src/pkg/net/http/transfer.go. Some response status +// codes do not permit a response body (nor response entity headers such as +// Content-Length, Content-Type, etc). +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 +} + +func (c *context) Write(b []byte) (int, error) { + if c.outCode == 0 { + c.WriteHeader(http.StatusOK) + } + if len(b) > 0 && !bodyAllowedForStatus(c.outCode) { + return 0, http.ErrBodyNotAllowed + } + c.outBody = append(c.outBody, b...) + return len(b), nil +} + +func (c *context) WriteHeader(code int) { + if c.outCode != 0 { + logf(c, 3, "WriteHeader called multiple times on request.") // error level + return + } + c.outCode = code +} + +func (c *context) post(body []byte, timeout time.Duration) (b []byte, err error) { + hreq := &http.Request{ + Method: "POST", + URL: c.apiURL, + Header: http.Header{ + apiEndpointHeader: apiEndpointHeaderValue, + apiMethodHeader: apiMethodHeaderValue, + apiContentType: apiContentTypeValue, + apiDeadlineHeader: []string{strconv.FormatFloat(timeout.Seconds(), 'f', -1, 64)}, + }, + Body: ioutil.NopCloser(bytes.NewReader(body)), + ContentLength: int64(len(body)), + Host: c.apiURL.Host, + } + if info := c.req.Header.Get(dapperHeader); info != "" { + hreq.Header.Set(dapperHeader, info) + } + if info := c.req.Header.Get(traceHeader); info != "" { + hreq.Header.Set(traceHeader, info) + } + + tr := apiHTTPClient.Transport.(*http.Transport) + + var timedOut int32 // atomic; set to 1 if timed out + t := time.AfterFunc(timeout, func() { + atomic.StoreInt32(&timedOut, 1) + tr.CancelRequest(hreq) + }) + defer t.Stop() + defer func() { + // Check if timeout was exceeded. + if atomic.LoadInt32(&timedOut) != 0 { + err = errTimeout + } + }() + + hresp, err := apiHTTPClient.Do(hreq) + if err != nil { + return nil, &CallError{ + Detail: fmt.Sprintf("service bridge HTTP failed: %v", err), + Code: int32(remotepb.RpcError_UNKNOWN), + } + } + defer hresp.Body.Close() + hrespBody, err := ioutil.ReadAll(hresp.Body) + if hresp.StatusCode != 200 { + return nil, &CallError{ + Detail: fmt.Sprintf("service bridge returned HTTP %d (%q)", hresp.StatusCode, hrespBody), + Code: int32(remotepb.RpcError_UNKNOWN), + } + } + if err != nil { + return nil, &CallError{ + Detail: fmt.Sprintf("service bridge response bad: %v", err), + Code: int32(remotepb.RpcError_UNKNOWN), + } + } + return hrespBody, nil +} + +func Call(ctx netcontext.Context, service, method string, in, out proto.Message) error { + if ns := NamespaceFromContext(ctx); ns != "" { + if fn, ok := NamespaceMods[service]; ok { + fn(in, ns) + } + } + + if f, ctx, ok := callOverrideFromContext(ctx); ok { + return f(ctx, service, method, in, out) + } + + // Handle already-done contexts quickly. + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + + c := fromContext(ctx) + if c == nil { + // Give a good error message rather than a panic lower down. + return errNotAppEngineContext + } + + // Apply transaction modifications if we're in a transaction. + if t := transactionFromContext(ctx); t != nil { + if t.finished { + return errors.New("transaction context has expired") + } + applyTransaction(in, &t.transaction) + } + + // Default RPC timeout is 60s. + timeout := 60 * time.Second + if deadline, ok := ctx.Deadline(); ok { + timeout = deadline.Sub(time.Now()) + } + + data, err := proto.Marshal(in) + if err != nil { + return err + } + + ticket := c.req.Header.Get(ticketHeader) + // Use a test ticket under test environment. + if ticket == "" { + if appid := ctx.Value(&appIDOverrideKey); appid != nil { + ticket = appid.(string) + defaultTicketSuffix + } + } + // Fall back to use background ticket when the request ticket is not available in Flex or dev_appserver. + if ticket == "" { + ticket = DefaultTicket() + } + req := &remotepb.Request{ + ServiceName: &service, + Method: &method, + Request: data, + RequestId: &ticket, + } + hreqBody, err := proto.Marshal(req) + if err != nil { + return err + } + + hrespBody, err := c.post(hreqBody, timeout) + if err != nil { + return err + } + + res := &remotepb.Response{} + if err := proto.Unmarshal(hrespBody, res); err != nil { + return err + } + if res.RpcError != nil { + ce := &CallError{ + Detail: res.RpcError.GetDetail(), + Code: *res.RpcError.Code, + } + switch remotepb.RpcError_ErrorCode(ce.Code) { + case remotepb.RpcError_CANCELLED, remotepb.RpcError_DEADLINE_EXCEEDED: + ce.Timeout = true + } + return ce + } + if res.ApplicationError != nil { + return &APIError{ + Service: *req.ServiceName, + Detail: res.ApplicationError.GetDetail(), + Code: *res.ApplicationError.Code, + } + } + if res.Exception != nil || res.JavaException != nil { + // This shouldn't happen, but let's be defensive. + return &CallError{ + Detail: "service bridge returned exception", + Code: int32(remotepb.RpcError_UNKNOWN), + } + } + return proto.Unmarshal(res.Response, out) +} + +func (c *context) Request() *http.Request { + return c.req +} + +func (c *context) addLogLine(ll *logpb.UserAppLogLine) { + // Truncate long log lines. + // TODO(dsymonds): Check if this is still necessary. + const lim = 8 << 10 + if len(*ll.Message) > lim { + suffix := fmt.Sprintf("...(length %d)", len(*ll.Message)) + ll.Message = proto.String((*ll.Message)[:lim-len(suffix)] + suffix) + } + + c.pendingLogs.Lock() + c.pendingLogs.lines = append(c.pendingLogs.lines, ll) + c.pendingLogs.Unlock() +} + +var logLevelName = map[int64]string{ + 0: "DEBUG", + 1: "INFO", + 2: "WARNING", + 3: "ERROR", + 4: "CRITICAL", +} + +func logf(c *context, level int64, format string, args ...interface{}) { + if c == nil { + panic("not an App Engine context") + } + s := fmt.Sprintf(format, args...) + s = strings.TrimRight(s, "\n") // Remove any trailing newline characters. + c.addLogLine(&logpb.UserAppLogLine{ + TimestampUsec: proto.Int64(time.Now().UnixNano() / 1e3), + Level: &level, + Message: &s, + }) + log.Print(logLevelName[level] + ": " + s) +} + +// flushLog attempts to flush any pending logs to the appserver. +// It should not be called concurrently. +func (c *context) flushLog(force bool) (flushed bool) { + c.pendingLogs.Lock() + // Grab up to 30 MB. We can get away with up to 32 MB, but let's be cautious. + n, rem := 0, 30<<20 + for ; n < len(c.pendingLogs.lines); n++ { + ll := c.pendingLogs.lines[n] + // Each log line will require about 3 bytes of overhead. + nb := proto.Size(ll) + 3 + if nb > rem { + break + } + rem -= nb + } + lines := c.pendingLogs.lines[:n] + c.pendingLogs.lines = c.pendingLogs.lines[n:] + c.pendingLogs.Unlock() + + if len(lines) == 0 && !force { + // Nothing to flush. + return false + } + + rescueLogs := false + defer func() { + if rescueLogs { + c.pendingLogs.Lock() + c.pendingLogs.lines = append(lines, c.pendingLogs.lines...) + c.pendingLogs.Unlock() + } + }() + + buf, err := proto.Marshal(&logpb.UserAppLogGroup{ + LogLine: lines, + }) + if err != nil { + log.Printf("internal.flushLog: marshaling UserAppLogGroup: %v", err) + rescueLogs = true + return false + } + + req := &logpb.FlushRequest{ + Logs: buf, + } + res := &basepb.VoidProto{} + c.pendingLogs.Lock() + c.pendingLogs.flushes++ + c.pendingLogs.Unlock() + if err := Call(toContext(c), "logservice", "Flush", req, res); err != nil { + log.Printf("internal.flushLog: Flush RPC: %v", err) + rescueLogs = true + return false + } + return true +} + +const ( + // Log flushing parameters. + flushInterval = 1 * time.Second + forceFlushInterval = 60 * time.Second +) + +func (c *context) logFlusher(stop <-chan int) { + lastFlush := time.Now() + tick := time.NewTicker(flushInterval) + for { + select { + case <-stop: + // Request finished. + tick.Stop() + return + case <-tick.C: + force := time.Now().Sub(lastFlush) > forceFlushInterval + if c.flushLog(force) { + lastFlush = time.Now() + } + } + } +} + +func ContextForTesting(req *http.Request) netcontext.Context { + return toContext(&context{req: req}) +} diff --git a/vendor/google.golang.org/appengine/internal/api_test.go b/vendor/google.golang.org/appengine/internal/api_test.go index 386d7f6cf4..76624a28ef 100644 --- a/vendor/google.golang.org/appengine/internal/api_test.go +++ b/vendor/google.golang.org/appengine/internal/api_test.go @@ -65,7 +65,7 @@ func (f *fakeAPIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, fmt.Sprintf("Bad encoded API request: %v", err), 500) return } - if *apiReq.RequestId != "s3cr3t" { + if *apiReq.RequestId != "s3cr3t" && *apiReq.RequestId != DefaultTicket() { writeResponse(&remotepb.Response{ RpcError: &remotepb.RpcError{ Code: proto.Int32(int32(remotepb.RpcError_SECURITY_VIOLATION)), @@ -176,6 +176,26 @@ func TestAPICall(t *testing.T) { } } +func TestAPICallTicketUnavailable(t *testing.T) { + resetEnv := SetTestEnv() + defer resetEnv() + _, c, cleanup := setup() + defer cleanup() + + c.req.Header.Set(ticketHeader, "") + req := &basepb.StringProto{ + Value: proto.String("Doctor Who"), + } + res := &basepb.StringProto{} + err := Call(toContext(c), "actordb", "LookupActor", req, res) + if err != nil { + t.Fatalf("API call failed: %v", err) + } + if got, want := *res.Value, "David Tennant"; got != want { + t.Errorf("Response is %q, want %q", got, want) + } +} + func TestAPICallRPCFailure(t *testing.T) { f, c, cleanup := setup() defer cleanup() @@ -361,7 +381,7 @@ func TestAPICallAllocations(t *testing.T) { // Lots of room for improvement... // TODO(djd): Reduce maximum to 85 once the App Engine SDK is based on 1.6. - const min, max float64 = 70, 90 + const min, max float64 = 70, 100 if avg < min || max < avg { t.Errorf("Allocations per API call = %g, want in [%g,%g]", avg, min, max) } @@ -429,29 +449,8 @@ func TestHelperProcess(*testing.T) { } func TestBackgroundContext(t *testing.T) { - environ := []struct { - key, value string - }{ - {"GAE_LONG_APP_ID", "my-app-id"}, - {"GAE_MINOR_VERSION", "067924799508853122"}, - {"GAE_MODULE_INSTANCE", "0"}, - {"GAE_MODULE_NAME", "default"}, - {"GAE_MODULE_VERSION", "20150612t184001"}, - } - for _, v := range environ { - old := os.Getenv(v.key) - os.Setenv(v.key, v.value) - v.value = old - } - defer func() { // Restore old environment after the test completes. - for _, v := range environ { - if v.value == "" { - os.Unsetenv(v.key) - continue - } - os.Setenv(v.key, v.value) - } - }() + resetEnv := SetTestEnv() + defer resetEnv() ctx, key := fromContext(BackgroundContext()), "X-Magic-Ticket-Header" if g, w := ctx.req.Header.Get(key), "my-app-id/default.20150612t184001.0"; g != w { diff --git a/vendor/google.golang.org/appengine/internal/identity_classic.go b/vendor/google.golang.org/appengine/internal/identity_classic.go index e6b9227c56..b59603f132 100644 --- a/vendor/google.golang.org/appengine/internal/identity_classic.go +++ b/vendor/google.golang.org/appengine/internal/identity_classic.go @@ -13,15 +13,45 @@ import ( ) func DefaultVersionHostname(ctx netcontext.Context) string { - return appengine.DefaultVersionHostname(fromContext(ctx)) + c := fromContext(ctx) + if c == nil { + panic(errNotAppEngineContext) + } + return appengine.DefaultVersionHostname(c) } -func RequestID(ctx netcontext.Context) string { return appengine.RequestID(fromContext(ctx)) } -func Datacenter(_ netcontext.Context) string { return appengine.Datacenter() } -func ServerSoftware() string { return appengine.ServerSoftware() } -func ModuleName(ctx netcontext.Context) string { return appengine.ModuleName(fromContext(ctx)) } -func VersionID(ctx netcontext.Context) string { return appengine.VersionID(fromContext(ctx)) } -func InstanceID() string { return appengine.InstanceID() } -func IsDevAppServer() bool { return appengine.IsDevAppServer() } +func Datacenter(_ netcontext.Context) string { return appengine.Datacenter() } +func ServerSoftware() string { return appengine.ServerSoftware() } +func InstanceID() string { return appengine.InstanceID() } +func IsDevAppServer() bool { return appengine.IsDevAppServer() } -func fullyQualifiedAppID(ctx netcontext.Context) string { return fromContext(ctx).FullyQualifiedAppID() } +func RequestID(ctx netcontext.Context) string { + c := fromContext(ctx) + if c == nil { + panic(errNotAppEngineContext) + } + return appengine.RequestID(c) +} + +func ModuleName(ctx netcontext.Context) string { + c := fromContext(ctx) + if c == nil { + panic(errNotAppEngineContext) + } + return appengine.ModuleName(c) +} +func VersionID(ctx netcontext.Context) string { + c := fromContext(ctx) + if c == nil { + panic(errNotAppEngineContext) + } + return appengine.VersionID(c) +} + +func fullyQualifiedAppID(ctx netcontext.Context) string { + c := fromContext(ctx) + if c == nil { + panic(errNotAppEngineContext) + } + return c.FullyQualifiedAppID() +} diff --git a/vendor/google.golang.org/appengine/internal/identity_vm.go b/vendor/google.golang.org/appengine/internal/identity_vm.go index ebe68b785b..d5fa75be78 100644 --- a/vendor/google.golang.org/appengine/internal/identity_vm.go +++ b/vendor/google.golang.org/appengine/internal/identity_vm.go @@ -23,7 +23,11 @@ const ( ) func ctxHeaders(ctx netcontext.Context) http.Header { - return fromContext(ctx).Request().Header + c := fromContext(ctx) + if c == nil { + return nil + } + return c.Request().Header } func DefaultVersionHostname(ctx netcontext.Context) string { diff --git a/vendor/google.golang.org/appengine/internal/internal.go b/vendor/google.golang.org/appengine/internal/internal.go index 66e8d76866..051ea3980a 100644 --- a/vendor/google.golang.org/appengine/internal/internal.go +++ b/vendor/google.golang.org/appengine/internal/internal.go @@ -10,11 +10,6 @@ package internal import ( "fmt" - "io" - "log" - "net/http" - "net/url" - "os" "github.com/golang/protobuf/proto" @@ -109,35 +104,6 @@ func (e *CallError) IsTimeout() bool { return e.Timeout } -func Main() { - installHealthChecker(http.DefaultServeMux) - - port := "8080" - if s := os.Getenv("PORT"); s != "" { - port = s - } - - if err := http.ListenAndServe(":"+port, http.HandlerFunc(handleHTTP)); err != nil { - log.Fatalf("http.ListenAndServe: %v", err) - } -} - -func installHealthChecker(mux *http.ServeMux) { - // If no health check handler has been installed by this point, add a trivial one. - const healthPath = "/_ah/health" - hreq := &http.Request{ - Method: "GET", - URL: &url.URL{ - Path: healthPath, - }, - } - if _, pat := mux.Handler(hreq); pat != healthPath { - mux.HandleFunc(healthPath, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "ok") - }) - } -} - // NamespaceMods is a map from API service to a function that will mutate an RPC request to attach a namespace. // The function should be prepared to be called on the same message more than once; it should only modify the // RPC request the first time. diff --git a/vendor/google.golang.org/appengine/internal/internal_test.go b/vendor/google.golang.org/appengine/internal/internal_test.go deleted file mode 100644 index dc684f50b6..0000000000 --- a/vendor/google.golang.org/appengine/internal/internal_test.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "testing" -) - -func TestInstallingHealthChecker(t *testing.T) { - try := func(desc string, mux *http.ServeMux, wantCode int, wantBody string) { - installHealthChecker(mux) - srv := httptest.NewServer(mux) - defer srv.Close() - - resp, err := http.Get(srv.URL + "/_ah/health") - if err != nil { - t.Errorf("%s: http.Get: %v", desc, err) - return - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Errorf("%s: reading body: %v", desc, err) - return - } - - if resp.StatusCode != wantCode { - t.Errorf("%s: got HTTP %d, want %d", desc, resp.StatusCode, wantCode) - return - } - if wantBody != "" && string(body) != wantBody { - t.Errorf("%s: got HTTP body %q, want %q", desc, body, wantBody) - return - } - } - - // If there's no handlers, or only a root handler, a health checker should be installed. - try("empty mux", http.NewServeMux(), 200, "ok") - mux := http.NewServeMux() - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "root handler") - }) - try("mux with root handler", mux, 200, "ok") - - // If there's a custom health check handler, one should not be installed. - mux = http.NewServeMux() - mux.HandleFunc("/_ah/health", func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(418) - io.WriteString(w, "I'm short and stout!") - }) - try("mux with custom health checker", mux, 418, "I'm short and stout!") -} diff --git a/vendor/google.golang.org/appengine/internal/internal_vm_test.go b/vendor/google.golang.org/appengine/internal/internal_vm_test.go new file mode 100644 index 0000000000..f8097616b9 --- /dev/null +++ b/vendor/google.golang.org/appengine/internal/internal_vm_test.go @@ -0,0 +1,60 @@ +// Copyright 2014 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +// +build !appengine + +package internal + +import ( + "io" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" +) + +func TestInstallingHealthChecker(t *testing.T) { + try := func(desc string, mux *http.ServeMux, wantCode int, wantBody string) { + installHealthChecker(mux) + srv := httptest.NewServer(mux) + defer srv.Close() + + resp, err := http.Get(srv.URL + "/_ah/health") + if err != nil { + t.Errorf("%s: http.Get: %v", desc, err) + return + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + t.Errorf("%s: reading body: %v", desc, err) + return + } + + if resp.StatusCode != wantCode { + t.Errorf("%s: got HTTP %d, want %d", desc, resp.StatusCode, wantCode) + return + } + if wantBody != "" && string(body) != wantBody { + t.Errorf("%s: got HTTP body %q, want %q", desc, body, wantBody) + return + } + } + + // If there's no handlers, or only a root handler, a health checker should be installed. + try("empty mux", http.NewServeMux(), 200, "ok") + mux := http.NewServeMux() + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + io.WriteString(w, "root handler") + }) + try("mux with root handler", mux, 200, "ok") + + // If there's a custom health check handler, one should not be installed. + mux = http.NewServeMux() + mux.HandleFunc("/_ah/health", func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(418) + io.WriteString(w, "I'm short and stout!") + }) + try("mux with custom health checker", mux, 418, "I'm short and stout!") +} diff --git a/vendor/google.golang.org/appengine/internal/main.go b/vendor/google.golang.org/appengine/internal/main.go new file mode 100644 index 0000000000..49036163c2 --- /dev/null +++ b/vendor/google.golang.org/appengine/internal/main.go @@ -0,0 +1,15 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +// +build appengine + +package internal + +import ( + "appengine_internal" +) + +func Main() { + appengine_internal.Main() +} diff --git a/vendor/google.golang.org/appengine/internal/main_vm.go b/vendor/google.golang.org/appengine/internal/main_vm.go new file mode 100644 index 0000000000..822e784a45 --- /dev/null +++ b/vendor/google.golang.org/appengine/internal/main_vm.go @@ -0,0 +1,48 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +// +build !appengine + +package internal + +import ( + "io" + "log" + "net/http" + "net/url" + "os" +) + +func Main() { + installHealthChecker(http.DefaultServeMux) + + port := "8080" + if s := os.Getenv("PORT"); s != "" { + port = s + } + + host := "" + if IsDevAppServer() { + host = "127.0.0.1" + } + if err := http.ListenAndServe(host+":"+port, http.HandlerFunc(handleHTTP)); err != nil { + log.Fatalf("http.ListenAndServe: %v", err) + } +} + +func installHealthChecker(mux *http.ServeMux) { + // If no health check handler has been installed by this point, add a trivial one. + const healthPath = "/_ah/health" + hreq := &http.Request{ + Method: "GET", + URL: &url.URL{ + Path: healthPath, + }, + } + if _, pat := mux.Handler(hreq); pat != healthPath { + mux.HandleFunc(healthPath, func(w http.ResponseWriter, r *http.Request) { + io.WriteString(w, "ok") + }) + } +} diff --git a/vendor/google.golang.org/appengine/internal/search/search.pb.go b/vendor/google.golang.org/appengine/internal/search/search.pb.go index 7d8d11ddc4..3b280e4a12 100644 --- a/vendor/google.golang.org/appengine/internal/search/search.pb.go +++ b/vendor/google.golang.org/appengine/internal/search/search.pb.go @@ -65,6 +65,12 @@ 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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + type Scope_Type int32 const ( @@ -112,6 +118,7 @@ func (x *Scope_Type) UnmarshalJSON(data []byte) error { *x = Scope_Type(value) return nil } +func (Scope_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } type Entry_Permission int32 @@ -148,6 +155,7 @@ func (x *Entry_Permission) UnmarshalJSON(data []byte) error { *x = Entry_Permission(value) return nil } +func (Entry_Permission) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } type FieldValue_ContentType int32 @@ -193,6 +201,7 @@ func (x *FieldValue_ContentType) UnmarshalJSON(data []byte) error { *x = FieldValue_ContentType(value) return nil } +func (FieldValue_ContentType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } type FacetValue_ContentType int32 @@ -226,6 +235,41 @@ func (x *FacetValue_ContentType) UnmarshalJSON(data []byte) error { *x = FacetValue_ContentType(value) return nil } +func (FacetValue_ContentType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } + +type Document_OrderIdSource int32 + +const ( + Document_DEFAULTED Document_OrderIdSource = 0 + Document_SUPPLIED Document_OrderIdSource = 1 +) + +var Document_OrderIdSource_name = map[int32]string{ + 0: "DEFAULTED", + 1: "SUPPLIED", +} +var Document_OrderIdSource_value = map[string]int32{ + "DEFAULTED": 0, + "SUPPLIED": 1, +} + +func (x Document_OrderIdSource) Enum() *Document_OrderIdSource { + p := new(Document_OrderIdSource) + *p = x + return p +} +func (x Document_OrderIdSource) String() string { + return proto.EnumName(Document_OrderIdSource_name, int32(x)) +} +func (x *Document_OrderIdSource) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(Document_OrderIdSource_value, data, "Document_OrderIdSource") + if err != nil { + return err + } + *x = Document_OrderIdSource(value) + return nil +} +func (Document_OrderIdSource) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} } type Document_Storage int32 @@ -256,6 +300,7 @@ func (x *Document_Storage) UnmarshalJSON(data []byte) error { *x = Document_Storage(value) return nil } +func (Document_Storage) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 1} } type SearchServiceError_ErrorCode int32 @@ -304,6 +349,9 @@ func (x *SearchServiceError_ErrorCode) UnmarshalJSON(data []byte) error { *x = SearchServiceError_ErrorCode(value) return nil } +func (SearchServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{11, 0} +} type IndexSpec_Consistency int32 @@ -337,6 +385,7 @@ func (x *IndexSpec_Consistency) UnmarshalJSON(data []byte) error { *x = IndexSpec_Consistency(value) return nil } +func (IndexSpec_Consistency) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } type IndexSpec_Source int32 @@ -373,6 +422,7 @@ func (x *IndexSpec_Source) UnmarshalJSON(data []byte) error { *x = IndexSpec_Source(value) return nil } +func (IndexSpec_Source) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 1} } type IndexSpec_Mode int32 @@ -406,6 +456,7 @@ func (x *IndexSpec_Mode) UnmarshalJSON(data []byte) error { *x = IndexSpec_Mode(value) return nil } +func (IndexSpec_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 2} } type IndexDocumentParams_Freshness int32 @@ -439,6 +490,9 @@ func (x *IndexDocumentParams_Freshness) UnmarshalJSON(data []byte) error { *x = IndexDocumentParams_Freshness(value) return nil } +func (IndexDocumentParams_Freshness) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{15, 0} +} type ScorerSpec_Scorer int32 @@ -472,6 +526,7 @@ func (x *ScorerSpec_Scorer) UnmarshalJSON(data []byte) error { *x = ScorerSpec_Scorer(value) return nil } +func (ScorerSpec_Scorer) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{31, 0} } type SearchParams_CursorType int32 @@ -508,6 +563,7 @@ func (x *SearchParams_CursorType) UnmarshalJSON(data []byte) error { *x = SearchParams_CursorType(value) return nil } +func (SearchParams_CursorType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 0} } type SearchParams_ParsingMode int32 @@ -541,6 +597,7 @@ func (x *SearchParams_ParsingMode) UnmarshalJSON(data []byte) error { *x = SearchParams_ParsingMode(value) return nil } +func (SearchParams_ParsingMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 1} } type Scope struct { Type *Scope_Type `protobuf:"varint,1,opt,name=type,enum=search.Scope_Type" json:"type,omitempty"` @@ -548,9 +605,10 @@ type Scope struct { XXX_unrecognized []byte `json:"-"` } -func (m *Scope) Reset() { *m = Scope{} } -func (m *Scope) String() string { return proto.CompactTextString(m) } -func (*Scope) ProtoMessage() {} +func (m *Scope) Reset() { *m = Scope{} } +func (m *Scope) String() string { return proto.CompactTextString(m) } +func (*Scope) ProtoMessage() {} +func (*Scope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (m *Scope) GetType() Scope_Type { if m != nil && m.Type != nil { @@ -569,13 +627,14 @@ func (m *Scope) GetValue() string { type Entry struct { Scope *Scope `protobuf:"bytes,1,opt,name=scope" json:"scope,omitempty"` Permission *Entry_Permission `protobuf:"varint,2,opt,name=permission,enum=search.Entry_Permission" json:"permission,omitempty"` - DisplayName *string `protobuf:"bytes,3,opt,name=display_name" json:"display_name,omitempty"` + DisplayName *string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *Entry) Reset() { *m = Entry{} } -func (m *Entry) String() string { return proto.CompactTextString(m) } -func (*Entry) ProtoMessage() {} +func (m *Entry) Reset() { *m = Entry{} } +func (m *Entry) String() string { return proto.CompactTextString(m) } +func (*Entry) ProtoMessage() {} +func (*Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *Entry) GetScope() *Scope { if m != nil { @@ -604,9 +663,10 @@ type AccessControlList struct { XXX_unrecognized []byte `json:"-"` } -func (m *AccessControlList) Reset() { *m = AccessControlList{} } -func (m *AccessControlList) String() string { return proto.CompactTextString(m) } -func (*AccessControlList) ProtoMessage() {} +func (m *AccessControlList) Reset() { *m = AccessControlList{} } +func (m *AccessControlList) String() string { return proto.CompactTextString(m) } +func (*AccessControlList) ProtoMessage() {} +func (*AccessControlList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (m *AccessControlList) GetOwner() string { if m != nil && m.Owner != nil { @@ -625,14 +685,15 @@ func (m *AccessControlList) GetEntries() []*Entry { type FieldValue struct { Type *FieldValue_ContentType `protobuf:"varint,1,opt,name=type,enum=search.FieldValue_ContentType,def=0" json:"type,omitempty"` Language *string `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"` - StringValue *string `protobuf:"bytes,3,opt,name=string_value" json:"string_value,omitempty"` - Geo *FieldValue_Geo `protobuf:"group,4,opt,name=Geo" json:"geo,omitempty"` + StringValue *string `protobuf:"bytes,3,opt,name=string_value,json=stringValue" json:"string_value,omitempty"` + Geo *FieldValue_Geo `protobuf:"group,4,opt,name=Geo,json=geo" json:"geo,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *FieldValue) Reset() { *m = FieldValue{} } -func (m *FieldValue) String() string { return proto.CompactTextString(m) } -func (*FieldValue) ProtoMessage() {} +func (m *FieldValue) Reset() { *m = FieldValue{} } +func (m *FieldValue) String() string { return proto.CompactTextString(m) } +func (*FieldValue) ProtoMessage() {} +func (*FieldValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } const Default_FieldValue_Type FieldValue_ContentType = FieldValue_TEXT const Default_FieldValue_Language string = "en" @@ -671,9 +732,10 @@ type FieldValue_Geo struct { XXX_unrecognized []byte `json:"-"` } -func (m *FieldValue_Geo) Reset() { *m = FieldValue_Geo{} } -func (m *FieldValue_Geo) String() string { return proto.CompactTextString(m) } -func (*FieldValue_Geo) ProtoMessage() {} +func (m *FieldValue_Geo) Reset() { *m = FieldValue_Geo{} } +func (m *FieldValue_Geo) String() string { return proto.CompactTextString(m) } +func (*FieldValue_Geo) ProtoMessage() {} +func (*FieldValue_Geo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } func (m *FieldValue_Geo) GetLat() float64 { if m != nil && m.Lat != nil { @@ -695,9 +757,10 @@ type Field struct { XXX_unrecognized []byte `json:"-"` } -func (m *Field) Reset() { *m = Field{} } -func (m *Field) String() string { return proto.CompactTextString(m) } -func (*Field) ProtoMessage() {} +func (m *Field) Reset() { *m = Field{} } +func (m *Field) String() string { return proto.CompactTextString(m) } +func (*Field) ProtoMessage() {} +func (*Field) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (m *Field) GetName() string { if m != nil && m.Name != nil { @@ -719,9 +782,10 @@ type FieldTypes struct { XXX_unrecognized []byte `json:"-"` } -func (m *FieldTypes) Reset() { *m = FieldTypes{} } -func (m *FieldTypes) String() string { return proto.CompactTextString(m) } -func (*FieldTypes) ProtoMessage() {} +func (m *FieldTypes) Reset() { *m = FieldTypes{} } +func (m *FieldTypes) String() string { return proto.CompactTextString(m) } +func (*FieldTypes) ProtoMessage() {} +func (*FieldTypes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (m *FieldTypes) GetName() string { if m != nil && m.Name != nil { @@ -738,16 +802,17 @@ func (m *FieldTypes) GetType() []FieldValue_ContentType { } type IndexShardSettings struct { - PrevNumShards []int32 `protobuf:"varint,1,rep,name=prev_num_shards" json:"prev_num_shards,omitempty"` - NumShards *int32 `protobuf:"varint,2,req,name=num_shards,def=1" json:"num_shards,omitempty"` - PrevNumShardsSearchFalse []int32 `protobuf:"varint,3,rep,name=prev_num_shards_search_false" json:"prev_num_shards_search_false,omitempty"` - LocalReplica *string `protobuf:"bytes,4,opt,name=local_replica,def=" json:"local_replica,omitempty"` + PrevNumShards []int32 `protobuf:"varint,1,rep,name=prev_num_shards,json=prevNumShards" json:"prev_num_shards,omitempty"` + NumShards *int32 `protobuf:"varint,2,req,name=num_shards,json=numShards,def=1" json:"num_shards,omitempty"` + PrevNumShardsSearchFalse []int32 `protobuf:"varint,3,rep,name=prev_num_shards_search_false,json=prevNumShardsSearchFalse" json:"prev_num_shards_search_false,omitempty"` + LocalReplica *string `protobuf:"bytes,4,opt,name=local_replica,json=localReplica,def=" json:"local_replica,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *IndexShardSettings) Reset() { *m = IndexShardSettings{} } -func (m *IndexShardSettings) String() string { return proto.CompactTextString(m) } -func (*IndexShardSettings) ProtoMessage() {} +func (m *IndexShardSettings) Reset() { *m = IndexShardSettings{} } +func (m *IndexShardSettings) String() string { return proto.CompactTextString(m) } +func (*IndexShardSettings) ProtoMessage() {} +func (*IndexShardSettings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } const Default_IndexShardSettings_NumShards int32 = 1 @@ -781,13 +846,14 @@ func (m *IndexShardSettings) GetLocalReplica() string { type FacetValue struct { Type *FacetValue_ContentType `protobuf:"varint,1,opt,name=type,enum=search.FacetValue_ContentType,def=2" json:"type,omitempty"` - StringValue *string `protobuf:"bytes,3,opt,name=string_value" json:"string_value,omitempty"` + StringValue *string `protobuf:"bytes,3,opt,name=string_value,json=stringValue" json:"string_value,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *FacetValue) Reset() { *m = FacetValue{} } -func (m *FacetValue) String() string { return proto.CompactTextString(m) } -func (*FacetValue) ProtoMessage() {} +func (m *FacetValue) Reset() { *m = FacetValue{} } +func (m *FacetValue) String() string { return proto.CompactTextString(m) } +func (*FacetValue) ProtoMessage() {} +func (*FacetValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } const Default_FacetValue_Type FacetValue_ContentType = FacetValue_ATOM @@ -811,9 +877,10 @@ type Facet struct { XXX_unrecognized []byte `json:"-"` } -func (m *Facet) Reset() { *m = Facet{} } -func (m *Facet) String() string { return proto.CompactTextString(m) } -func (*Facet) ProtoMessage() {} +func (m *Facet) Reset() { *m = Facet{} } +func (m *Facet) String() string { return proto.CompactTextString(m) } +func (*Facet) ProtoMessage() {} +func (*Facet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (m *Facet) GetName() string { if m != nil && m.Name != nil { @@ -831,13 +898,14 @@ func (m *Facet) GetValue() *FacetValue { type DocumentMetadata struct { Version *int64 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"` - CommittedStVersion *int64 `protobuf:"varint,2,opt,name=committed_st_version" json:"committed_st_version,omitempty"` + CommittedStVersion *int64 `protobuf:"varint,2,opt,name=committed_st_version,json=committedStVersion" json:"committed_st_version,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *DocumentMetadata) Reset() { *m = DocumentMetadata{} } -func (m *DocumentMetadata) String() string { return proto.CompactTextString(m) } -func (*DocumentMetadata) ProtoMessage() {} +func (m *DocumentMetadata) Reset() { *m = DocumentMetadata{} } +func (m *DocumentMetadata) String() string { return proto.CompactTextString(m) } +func (*DocumentMetadata) ProtoMessage() {} +func (*DocumentMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } func (m *DocumentMetadata) GetVersion() int64 { if m != nil && m.Version != nil { @@ -854,20 +922,23 @@ func (m *DocumentMetadata) GetCommittedStVersion() int64 { } type Document struct { - Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - Language *string `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"` - Field []*Field `protobuf:"bytes,3,rep,name=field" json:"field,omitempty"` - OrderId *int32 `protobuf:"varint,4,opt,name=order_id" json:"order_id,omitempty"` - Storage *Document_Storage `protobuf:"varint,5,opt,name=storage,enum=search.Document_Storage,def=0" json:"storage,omitempty"` - Facet []*Facet `protobuf:"bytes,8,rep,name=facet" json:"facet,omitempty"` - XXX_unrecognized []byte `json:"-"` + Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + Language *string `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"` + Field []*Field `protobuf:"bytes,3,rep,name=field" json:"field,omitempty"` + OrderId *int32 `protobuf:"varint,4,opt,name=order_id,json=orderId" json:"order_id,omitempty"` + OrderIdSource *Document_OrderIdSource `protobuf:"varint,6,opt,name=order_id_source,json=orderIdSource,enum=search.Document_OrderIdSource,def=1" json:"order_id_source,omitempty"` + Storage *Document_Storage `protobuf:"varint,5,opt,name=storage,enum=search.Document_Storage,def=0" json:"storage,omitempty"` + Facet []*Facet `protobuf:"bytes,8,rep,name=facet" json:"facet,omitempty"` + XXX_unrecognized []byte `json:"-"` } -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} +func (m *Document) Reset() { *m = Document{} } +func (m *Document) String() string { return proto.CompactTextString(m) } +func (*Document) ProtoMessage() {} +func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } const Default_Document_Language string = "en" +const Default_Document_OrderIdSource Document_OrderIdSource = Document_SUPPLIED const Default_Document_Storage Document_Storage = Document_DISK func (m *Document) GetId() string { @@ -898,6 +969,13 @@ func (m *Document) GetOrderId() int32 { return 0 } +func (m *Document) GetOrderIdSource() Document_OrderIdSource { + if m != nil && m.OrderIdSource != nil { + return *m.OrderIdSource + } + return Default_Document_OrderIdSource +} + func (m *Document) GetStorage() Document_Storage { if m != nil && m.Storage != nil { return *m.Storage @@ -916,20 +994,22 @@ type SearchServiceError struct { XXX_unrecognized []byte `json:"-"` } -func (m *SearchServiceError) Reset() { *m = SearchServiceError{} } -func (m *SearchServiceError) String() string { return proto.CompactTextString(m) } -func (*SearchServiceError) ProtoMessage() {} +func (m *SearchServiceError) Reset() { *m = SearchServiceError{} } +func (m *SearchServiceError) String() string { return proto.CompactTextString(m) } +func (*SearchServiceError) ProtoMessage() {} +func (*SearchServiceError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } type RequestStatus struct { Code *SearchServiceError_ErrorCode `protobuf:"varint,1,req,name=code,enum=search.SearchServiceError_ErrorCode" json:"code,omitempty"` - ErrorDetail *string `protobuf:"bytes,2,opt,name=error_detail" json:"error_detail,omitempty"` - CanonicalCode *int32 `protobuf:"varint,3,opt,name=canonical_code" json:"canonical_code,omitempty"` + ErrorDetail *string `protobuf:"bytes,2,opt,name=error_detail,json=errorDetail" json:"error_detail,omitempty"` + CanonicalCode *int32 `protobuf:"varint,3,opt,name=canonical_code,json=canonicalCode" json:"canonical_code,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *RequestStatus) Reset() { *m = RequestStatus{} } -func (m *RequestStatus) String() string { return proto.CompactTextString(m) } -func (*RequestStatus) ProtoMessage() {} +func (m *RequestStatus) Reset() { *m = RequestStatus{} } +func (m *RequestStatus) String() string { return proto.CompactTextString(m) } +func (*RequestStatus) ProtoMessage() {} +func (*RequestStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } func (m *RequestStatus) GetCode() SearchServiceError_ErrorCode { if m != nil && m.Code != nil { @@ -962,9 +1042,10 @@ type IndexSpec struct { XXX_unrecognized []byte `json:"-"` } -func (m *IndexSpec) Reset() { *m = IndexSpec{} } -func (m *IndexSpec) String() string { return proto.CompactTextString(m) } -func (*IndexSpec) ProtoMessage() {} +func (m *IndexSpec) Reset() { *m = IndexSpec{} } +func (m *IndexSpec) String() string { return proto.CompactTextString(m) } +func (*IndexSpec) ProtoMessage() {} +func (*IndexSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } const Default_IndexSpec_Consistency IndexSpec_Consistency = IndexSpec_PER_DOCUMENT const Default_IndexSpec_Source IndexSpec_Source = IndexSpec_SEARCH @@ -1013,15 +1094,16 @@ func (m *IndexSpec) GetMode() IndexSpec_Mode { } type IndexMetadata struct { - IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec" json:"index_spec,omitempty"` + IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"` Field []*FieldTypes `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"` Storage *IndexMetadata_Storage `protobuf:"bytes,3,opt,name=storage" json:"storage,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *IndexMetadata) Reset() { *m = IndexMetadata{} } -func (m *IndexMetadata) String() string { return proto.CompactTextString(m) } -func (*IndexMetadata) ProtoMessage() {} +func (m *IndexMetadata) Reset() { *m = IndexMetadata{} } +func (m *IndexMetadata) String() string { return proto.CompactTextString(m) } +func (*IndexMetadata) ProtoMessage() {} +func (*IndexMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } func (m *IndexMetadata) GetIndexSpec() *IndexSpec { if m != nil { @@ -1045,14 +1127,15 @@ func (m *IndexMetadata) GetStorage() *IndexMetadata_Storage { } type IndexMetadata_Storage struct { - AmountUsed *int64 `protobuf:"varint,1,opt,name=amount_used" json:"amount_used,omitempty"` + AmountUsed *int64 `protobuf:"varint,1,opt,name=amount_used,json=amountUsed" json:"amount_used,omitempty"` Limit *int64 `protobuf:"varint,2,opt,name=limit" json:"limit,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *IndexMetadata_Storage) Reset() { *m = IndexMetadata_Storage{} } -func (m *IndexMetadata_Storage) String() string { return proto.CompactTextString(m) } -func (*IndexMetadata_Storage) ProtoMessage() {} +func (m *IndexMetadata_Storage) Reset() { *m = IndexMetadata_Storage{} } +func (m *IndexMetadata_Storage) String() string { return proto.CompactTextString(m) } +func (*IndexMetadata_Storage) ProtoMessage() {} +func (*IndexMetadata_Storage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14, 0} } func (m *IndexMetadata_Storage) GetAmountUsed() int64 { if m != nil && m.AmountUsed != nil { @@ -1071,13 +1154,14 @@ func (m *IndexMetadata_Storage) GetLimit() int64 { type IndexDocumentParams struct { Document []*Document `protobuf:"bytes,1,rep,name=document" json:"document,omitempty"` Freshness *IndexDocumentParams_Freshness `protobuf:"varint,2,opt,name=freshness,enum=search.IndexDocumentParams_Freshness,def=0" json:"freshness,omitempty"` - IndexSpec *IndexSpec `protobuf:"bytes,3,req,name=index_spec" json:"index_spec,omitempty"` + IndexSpec *IndexSpec `protobuf:"bytes,3,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *IndexDocumentParams) Reset() { *m = IndexDocumentParams{} } -func (m *IndexDocumentParams) String() string { return proto.CompactTextString(m) } -func (*IndexDocumentParams) ProtoMessage() {} +func (m *IndexDocumentParams) Reset() { *m = IndexDocumentParams{} } +func (m *IndexDocumentParams) String() string { return proto.CompactTextString(m) } +func (*IndexDocumentParams) ProtoMessage() {} +func (*IndexDocumentParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } const Default_IndexDocumentParams_Freshness IndexDocumentParams_Freshness = IndexDocumentParams_SYNCHRONOUSLY @@ -1104,13 +1188,14 @@ func (m *IndexDocumentParams) GetIndexSpec() *IndexSpec { type IndexDocumentRequest struct { Params *IndexDocumentParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` + AppId []byte `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *IndexDocumentRequest) Reset() { *m = IndexDocumentRequest{} } -func (m *IndexDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*IndexDocumentRequest) ProtoMessage() {} +func (m *IndexDocumentRequest) Reset() { *m = IndexDocumentRequest{} } +func (m *IndexDocumentRequest) String() string { return proto.CompactTextString(m) } +func (*IndexDocumentRequest) ProtoMessage() {} +func (*IndexDocumentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } func (m *IndexDocumentRequest) GetParams() *IndexDocumentParams { if m != nil { @@ -1128,13 +1213,14 @@ func (m *IndexDocumentRequest) GetAppId() []byte { type IndexDocumentResponse struct { Status []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"` - DocId []string `protobuf:"bytes,2,rep,name=doc_id" json:"doc_id,omitempty"` + DocId []string `protobuf:"bytes,2,rep,name=doc_id,json=docId" json:"doc_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *IndexDocumentResponse) Reset() { *m = IndexDocumentResponse{} } -func (m *IndexDocumentResponse) String() string { return proto.CompactTextString(m) } -func (*IndexDocumentResponse) ProtoMessage() {} +func (m *IndexDocumentResponse) Reset() { *m = IndexDocumentResponse{} } +func (m *IndexDocumentResponse) String() string { return proto.CompactTextString(m) } +func (*IndexDocumentResponse) ProtoMessage() {} +func (*IndexDocumentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } func (m *IndexDocumentResponse) GetStatus() []*RequestStatus { if m != nil { @@ -1151,14 +1237,15 @@ func (m *IndexDocumentResponse) GetDocId() []string { } type DeleteDocumentParams struct { - DocId []string `protobuf:"bytes,1,rep,name=doc_id" json:"doc_id,omitempty"` - IndexSpec *IndexSpec `protobuf:"bytes,2,req,name=index_spec" json:"index_spec,omitempty"` + DocId []string `protobuf:"bytes,1,rep,name=doc_id,json=docId" json:"doc_id,omitempty"` + IndexSpec *IndexSpec `protobuf:"bytes,2,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *DeleteDocumentParams) Reset() { *m = DeleteDocumentParams{} } -func (m *DeleteDocumentParams) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentParams) ProtoMessage() {} +func (m *DeleteDocumentParams) Reset() { *m = DeleteDocumentParams{} } +func (m *DeleteDocumentParams) String() string { return proto.CompactTextString(m) } +func (*DeleteDocumentParams) ProtoMessage() {} +func (*DeleteDocumentParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } func (m *DeleteDocumentParams) GetDocId() []string { if m != nil { @@ -1176,13 +1263,14 @@ func (m *DeleteDocumentParams) GetIndexSpec() *IndexSpec { type DeleteDocumentRequest struct { Params *DeleteDocumentParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` + AppId []byte `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *DeleteDocumentRequest) Reset() { *m = DeleteDocumentRequest{} } -func (m *DeleteDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentRequest) ProtoMessage() {} +func (m *DeleteDocumentRequest) Reset() { *m = DeleteDocumentRequest{} } +func (m *DeleteDocumentRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteDocumentRequest) ProtoMessage() {} +func (*DeleteDocumentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } func (m *DeleteDocumentRequest) GetParams() *DeleteDocumentParams { if m != nil { @@ -1203,9 +1291,10 @@ type DeleteDocumentResponse struct { XXX_unrecognized []byte `json:"-"` } -func (m *DeleteDocumentResponse) Reset() { *m = DeleteDocumentResponse{} } -func (m *DeleteDocumentResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentResponse) ProtoMessage() {} +func (m *DeleteDocumentResponse) Reset() { *m = DeleteDocumentResponse{} } +func (m *DeleteDocumentResponse) String() string { return proto.CompactTextString(m) } +func (*DeleteDocumentResponse) ProtoMessage() {} +func (*DeleteDocumentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } func (m *DeleteDocumentResponse) GetStatus() []*RequestStatus { if m != nil { @@ -1215,17 +1304,18 @@ func (m *DeleteDocumentResponse) GetStatus() []*RequestStatus { } type ListDocumentsParams struct { - IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec" json:"index_spec,omitempty"` - StartDocId *string `protobuf:"bytes,2,opt,name=start_doc_id" json:"start_doc_id,omitempty"` - IncludeStartDoc *bool `protobuf:"varint,3,opt,name=include_start_doc,def=1" json:"include_start_doc,omitempty"` + IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"` + StartDocId *string `protobuf:"bytes,2,opt,name=start_doc_id,json=startDocId" json:"start_doc_id,omitempty"` + IncludeStartDoc *bool `protobuf:"varint,3,opt,name=include_start_doc,json=includeStartDoc,def=1" json:"include_start_doc,omitempty"` Limit *int32 `protobuf:"varint,4,opt,name=limit,def=100" json:"limit,omitempty"` - KeysOnly *bool `protobuf:"varint,5,opt,name=keys_only" json:"keys_only,omitempty"` + KeysOnly *bool `protobuf:"varint,5,opt,name=keys_only,json=keysOnly" json:"keys_only,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *ListDocumentsParams) Reset() { *m = ListDocumentsParams{} } -func (m *ListDocumentsParams) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsParams) ProtoMessage() {} +func (m *ListDocumentsParams) Reset() { *m = ListDocumentsParams{} } +func (m *ListDocumentsParams) String() string { return proto.CompactTextString(m) } +func (*ListDocumentsParams) ProtoMessage() {} +func (*ListDocumentsParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } const Default_ListDocumentsParams_IncludeStartDoc bool = true const Default_ListDocumentsParams_Limit int32 = 100 @@ -1267,13 +1357,14 @@ func (m *ListDocumentsParams) GetKeysOnly() bool { type ListDocumentsRequest struct { Params *ListDocumentsParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,2,opt,name=app_id" json:"app_id,omitempty"` + AppId []byte `protobuf:"bytes,2,opt,name=app_id,json=appId" json:"app_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *ListDocumentsRequest) Reset() { *m = ListDocumentsRequest{} } -func (m *ListDocumentsRequest) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsRequest) ProtoMessage() {} +func (m *ListDocumentsRequest) Reset() { *m = ListDocumentsRequest{} } +func (m *ListDocumentsRequest) String() string { return proto.CompactTextString(m) } +func (*ListDocumentsRequest) ProtoMessage() {} +func (*ListDocumentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } func (m *ListDocumentsRequest) GetParams() *ListDocumentsParams { if m != nil { @@ -1295,9 +1386,10 @@ type ListDocumentsResponse struct { XXX_unrecognized []byte `json:"-"` } -func (m *ListDocumentsResponse) Reset() { *m = ListDocumentsResponse{} } -func (m *ListDocumentsResponse) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsResponse) ProtoMessage() {} +func (m *ListDocumentsResponse) Reset() { *m = ListDocumentsResponse{} } +func (m *ListDocumentsResponse) String() string { return proto.CompactTextString(m) } +func (*ListDocumentsResponse) ProtoMessage() {} +func (*ListDocumentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } func (m *ListDocumentsResponse) GetStatus() *RequestStatus { if m != nil { @@ -1314,20 +1406,21 @@ func (m *ListDocumentsResponse) GetDocument() []*Document { } type ListIndexesParams struct { - FetchSchema *bool `protobuf:"varint,1,opt,name=fetch_schema" json:"fetch_schema,omitempty"` + FetchSchema *bool `protobuf:"varint,1,opt,name=fetch_schema,json=fetchSchema" json:"fetch_schema,omitempty"` Limit *int32 `protobuf:"varint,2,opt,name=limit,def=20" json:"limit,omitempty"` Namespace *string `protobuf:"bytes,3,opt,name=namespace" json:"namespace,omitempty"` - StartIndexName *string `protobuf:"bytes,4,opt,name=start_index_name" json:"start_index_name,omitempty"` - IncludeStartIndex *bool `protobuf:"varint,5,opt,name=include_start_index,def=1" json:"include_start_index,omitempty"` - IndexNamePrefix *string `protobuf:"bytes,6,opt,name=index_name_prefix" json:"index_name_prefix,omitempty"` + StartIndexName *string `protobuf:"bytes,4,opt,name=start_index_name,json=startIndexName" json:"start_index_name,omitempty"` + IncludeStartIndex *bool `protobuf:"varint,5,opt,name=include_start_index,json=includeStartIndex,def=1" json:"include_start_index,omitempty"` + IndexNamePrefix *string `protobuf:"bytes,6,opt,name=index_name_prefix,json=indexNamePrefix" json:"index_name_prefix,omitempty"` Offset *int32 `protobuf:"varint,7,opt,name=offset" json:"offset,omitempty"` Source *IndexSpec_Source `protobuf:"varint,8,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *ListIndexesParams) Reset() { *m = ListIndexesParams{} } -func (m *ListIndexesParams) String() string { return proto.CompactTextString(m) } -func (*ListIndexesParams) ProtoMessage() {} +func (m *ListIndexesParams) Reset() { *m = ListIndexesParams{} } +func (m *ListIndexesParams) String() string { return proto.CompactTextString(m) } +func (*ListIndexesParams) ProtoMessage() {} +func (*ListIndexesParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } const Default_ListIndexesParams_Limit int32 = 20 const Default_ListIndexesParams_IncludeStartIndex bool = true @@ -1391,13 +1484,14 @@ func (m *ListIndexesParams) GetSource() IndexSpec_Source { type ListIndexesRequest struct { Params *ListIndexesParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` + AppId []byte `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *ListIndexesRequest) Reset() { *m = ListIndexesRequest{} } -func (m *ListIndexesRequest) String() string { return proto.CompactTextString(m) } -func (*ListIndexesRequest) ProtoMessage() {} +func (m *ListIndexesRequest) Reset() { *m = ListIndexesRequest{} } +func (m *ListIndexesRequest) String() string { return proto.CompactTextString(m) } +func (*ListIndexesRequest) ProtoMessage() {} +func (*ListIndexesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } func (m *ListIndexesRequest) GetParams() *ListIndexesParams { if m != nil { @@ -1415,13 +1509,14 @@ func (m *ListIndexesRequest) GetAppId() []byte { type ListIndexesResponse struct { Status *RequestStatus `protobuf:"bytes,1,req,name=status" json:"status,omitempty"` - IndexMetadata []*IndexMetadata `protobuf:"bytes,2,rep,name=index_metadata" json:"index_metadata,omitempty"` + IndexMetadata []*IndexMetadata `protobuf:"bytes,2,rep,name=index_metadata,json=indexMetadata" json:"index_metadata,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *ListIndexesResponse) Reset() { *m = ListIndexesResponse{} } -func (m *ListIndexesResponse) String() string { return proto.CompactTextString(m) } -func (*ListIndexesResponse) ProtoMessage() {} +func (m *ListIndexesResponse) Reset() { *m = ListIndexesResponse{} } +func (m *ListIndexesResponse) String() string { return proto.CompactTextString(m) } +func (*ListIndexesResponse) ProtoMessage() {} +func (*ListIndexesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } func (m *ListIndexesResponse) GetStatus() *RequestStatus { if m != nil { @@ -1439,13 +1534,14 @@ func (m *ListIndexesResponse) GetIndexMetadata() []*IndexMetadata { type DeleteSchemaParams struct { Source *IndexSpec_Source `protobuf:"varint,1,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"` - IndexSpec []*IndexSpec `protobuf:"bytes,2,rep,name=index_spec" json:"index_spec,omitempty"` + IndexSpec []*IndexSpec `protobuf:"bytes,2,rep,name=index_spec,json=indexSpec" json:"index_spec,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *DeleteSchemaParams) Reset() { *m = DeleteSchemaParams{} } -func (m *DeleteSchemaParams) String() string { return proto.CompactTextString(m) } -func (*DeleteSchemaParams) ProtoMessage() {} +func (m *DeleteSchemaParams) Reset() { *m = DeleteSchemaParams{} } +func (m *DeleteSchemaParams) String() string { return proto.CompactTextString(m) } +func (*DeleteSchemaParams) ProtoMessage() {} +func (*DeleteSchemaParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } const Default_DeleteSchemaParams_Source IndexSpec_Source = IndexSpec_SEARCH @@ -1465,13 +1561,14 @@ func (m *DeleteSchemaParams) GetIndexSpec() []*IndexSpec { type DeleteSchemaRequest struct { Params *DeleteSchemaParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` + AppId []byte `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *DeleteSchemaRequest) Reset() { *m = DeleteSchemaRequest{} } -func (m *DeleteSchemaRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSchemaRequest) ProtoMessage() {} +func (m *DeleteSchemaRequest) Reset() { *m = DeleteSchemaRequest{} } +func (m *DeleteSchemaRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteSchemaRequest) ProtoMessage() {} +func (*DeleteSchemaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } func (m *DeleteSchemaRequest) GetParams() *DeleteSchemaParams { if m != nil { @@ -1492,9 +1589,10 @@ type DeleteSchemaResponse struct { XXX_unrecognized []byte `json:"-"` } -func (m *DeleteSchemaResponse) Reset() { *m = DeleteSchemaResponse{} } -func (m *DeleteSchemaResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteSchemaResponse) ProtoMessage() {} +func (m *DeleteSchemaResponse) Reset() { *m = DeleteSchemaResponse{} } +func (m *DeleteSchemaResponse) String() string { return proto.CompactTextString(m) } +func (*DeleteSchemaResponse) ProtoMessage() {} +func (*DeleteSchemaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } func (m *DeleteSchemaResponse) GetStatus() []*RequestStatus { if m != nil { @@ -1504,16 +1602,17 @@ func (m *DeleteSchemaResponse) GetStatus() []*RequestStatus { } type SortSpec struct { - SortExpression *string `protobuf:"bytes,1,req,name=sort_expression" json:"sort_expression,omitempty"` - SortDescending *bool `protobuf:"varint,2,opt,name=sort_descending,def=1" json:"sort_descending,omitempty"` - DefaultValueText *string `protobuf:"bytes,4,opt,name=default_value_text" json:"default_value_text,omitempty"` - DefaultValueNumeric *float64 `protobuf:"fixed64,5,opt,name=default_value_numeric" json:"default_value_numeric,omitempty"` + SortExpression *string `protobuf:"bytes,1,req,name=sort_expression,json=sortExpression" json:"sort_expression,omitempty"` + SortDescending *bool `protobuf:"varint,2,opt,name=sort_descending,json=sortDescending,def=1" json:"sort_descending,omitempty"` + DefaultValueText *string `protobuf:"bytes,4,opt,name=default_value_text,json=defaultValueText" json:"default_value_text,omitempty"` + DefaultValueNumeric *float64 `protobuf:"fixed64,5,opt,name=default_value_numeric,json=defaultValueNumeric" json:"default_value_numeric,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *SortSpec) Reset() { *m = SortSpec{} } -func (m *SortSpec) String() string { return proto.CompactTextString(m) } -func (*SortSpec) ProtoMessage() {} +func (m *SortSpec) Reset() { *m = SortSpec{} } +func (m *SortSpec) String() string { return proto.CompactTextString(m) } +func (*SortSpec) ProtoMessage() {} +func (*SortSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } const Default_SortSpec_SortDescending bool = true @@ -1548,13 +1647,14 @@ func (m *SortSpec) GetDefaultValueNumeric() float64 { type ScorerSpec struct { Scorer *ScorerSpec_Scorer `protobuf:"varint,1,opt,name=scorer,enum=search.ScorerSpec_Scorer,def=2" json:"scorer,omitempty"` Limit *int32 `protobuf:"varint,2,opt,name=limit,def=1000" json:"limit,omitempty"` - MatchScorerParameters *string `protobuf:"bytes,9,opt,name=match_scorer_parameters" json:"match_scorer_parameters,omitempty"` + MatchScorerParameters *string `protobuf:"bytes,9,opt,name=match_scorer_parameters,json=matchScorerParameters" json:"match_scorer_parameters,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *ScorerSpec) Reset() { *m = ScorerSpec{} } -func (m *ScorerSpec) String() string { return proto.CompactTextString(m) } -func (*ScorerSpec) ProtoMessage() {} +func (m *ScorerSpec) Reset() { *m = ScorerSpec{} } +func (m *ScorerSpec) String() string { return proto.CompactTextString(m) } +func (*ScorerSpec) ProtoMessage() {} +func (*ScorerSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } const Default_ScorerSpec_Scorer ScorerSpec_Scorer = ScorerSpec_MATCH_SCORER const Default_ScorerSpec_Limit int32 = 1000 @@ -1582,13 +1682,14 @@ func (m *ScorerSpec) GetMatchScorerParameters() string { type FieldSpec struct { Name []string `protobuf:"bytes,1,rep,name=name" json:"name,omitempty"` - Expression []*FieldSpec_Expression `protobuf:"group,2,rep,name=Expression" json:"expression,omitempty"` + Expression []*FieldSpec_Expression `protobuf:"group,2,rep,name=Expression,json=expression" json:"expression,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *FieldSpec) Reset() { *m = FieldSpec{} } -func (m *FieldSpec) String() string { return proto.CompactTextString(m) } -func (*FieldSpec) ProtoMessage() {} +func (m *FieldSpec) Reset() { *m = FieldSpec{} } +func (m *FieldSpec) String() string { return proto.CompactTextString(m) } +func (*FieldSpec) ProtoMessage() {} +func (*FieldSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } func (m *FieldSpec) GetName() []string { if m != nil { @@ -1610,9 +1711,10 @@ type FieldSpec_Expression struct { XXX_unrecognized []byte `json:"-"` } -func (m *FieldSpec_Expression) Reset() { *m = FieldSpec_Expression{} } -func (m *FieldSpec_Expression) String() string { return proto.CompactTextString(m) } -func (*FieldSpec_Expression) ProtoMessage() {} +func (m *FieldSpec_Expression) Reset() { *m = FieldSpec_Expression{} } +func (m *FieldSpec_Expression) String() string { return proto.CompactTextString(m) } +func (*FieldSpec_Expression) ProtoMessage() {} +func (*FieldSpec_Expression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 0} } func (m *FieldSpec_Expression) GetName() string { if m != nil && m.Name != nil { @@ -1635,9 +1737,10 @@ type FacetRange struct { XXX_unrecognized []byte `json:"-"` } -func (m *FacetRange) Reset() { *m = FacetRange{} } -func (m *FacetRange) String() string { return proto.CompactTextString(m) } -func (*FacetRange) ProtoMessage() {} +func (m *FacetRange) Reset() { *m = FacetRange{} } +func (m *FacetRange) String() string { return proto.CompactTextString(m) } +func (*FacetRange) ProtoMessage() {} +func (*FacetRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } func (m *FacetRange) GetName() string { if m != nil && m.Name != nil { @@ -1661,15 +1764,16 @@ func (m *FacetRange) GetEnd() string { } type FacetRequestParam struct { - ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit" json:"value_limit,omitempty"` + ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit,json=valueLimit" json:"value_limit,omitempty"` Range []*FacetRange `protobuf:"bytes,2,rep,name=range" json:"range,omitempty"` - ValueConstraint []string `protobuf:"bytes,3,rep,name=value_constraint" json:"value_constraint,omitempty"` + ValueConstraint []string `protobuf:"bytes,3,rep,name=value_constraint,json=valueConstraint" json:"value_constraint,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *FacetRequestParam) Reset() { *m = FacetRequestParam{} } -func (m *FacetRequestParam) String() string { return proto.CompactTextString(m) } -func (*FacetRequestParam) ProtoMessage() {} +func (m *FacetRequestParam) Reset() { *m = FacetRequestParam{} } +func (m *FacetRequestParam) String() string { return proto.CompactTextString(m) } +func (*FacetRequestParam) ProtoMessage() {} +func (*FacetRequestParam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } func (m *FacetRequestParam) GetValueLimit() int32 { if m != nil && m.ValueLimit != nil { @@ -1693,13 +1797,14 @@ func (m *FacetRequestParam) GetValueConstraint() []string { } type FacetAutoDetectParam struct { - ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit,def=10" json:"value_limit,omitempty"` + ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit,json=valueLimit,def=10" json:"value_limit,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *FacetAutoDetectParam) Reset() { *m = FacetAutoDetectParam{} } -func (m *FacetAutoDetectParam) String() string { return proto.CompactTextString(m) } -func (*FacetAutoDetectParam) ProtoMessage() {} +func (m *FacetAutoDetectParam) Reset() { *m = FacetAutoDetectParam{} } +func (m *FacetAutoDetectParam) String() string { return proto.CompactTextString(m) } +func (*FacetAutoDetectParam) ProtoMessage() {} +func (*FacetAutoDetectParam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } const Default_FacetAutoDetectParam_ValueLimit int32 = 10 @@ -1716,9 +1821,10 @@ type FacetRequest struct { XXX_unrecognized []byte `json:"-"` } -func (m *FacetRequest) Reset() { *m = FacetRequest{} } -func (m *FacetRequest) String() string { return proto.CompactTextString(m) } -func (*FacetRequest) ProtoMessage() {} +func (m *FacetRequest) Reset() { *m = FacetRequest{} } +func (m *FacetRequest) String() string { return proto.CompactTextString(m) } +func (*FacetRequest) ProtoMessage() {} +func (*FacetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } func (m *FacetRequest) GetName() string { if m != nil && m.Name != nil { @@ -1741,9 +1847,10 @@ type FacetRefinement struct { XXX_unrecognized []byte `json:"-"` } -func (m *FacetRefinement) Reset() { *m = FacetRefinement{} } -func (m *FacetRefinement) String() string { return proto.CompactTextString(m) } -func (*FacetRefinement) ProtoMessage() {} +func (m *FacetRefinement) Reset() { *m = FacetRefinement{} } +func (m *FacetRefinement) String() string { return proto.CompactTextString(m) } +func (*FacetRefinement) ProtoMessage() {} +func (*FacetRefinement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } func (m *FacetRefinement) GetName() string { if m != nil && m.Name != nil { @@ -1772,9 +1879,10 @@ type FacetRefinement_Range struct { XXX_unrecognized []byte `json:"-"` } -func (m *FacetRefinement_Range) Reset() { *m = FacetRefinement_Range{} } -func (m *FacetRefinement_Range) String() string { return proto.CompactTextString(m) } -func (*FacetRefinement_Range) ProtoMessage() {} +func (m *FacetRefinement_Range) Reset() { *m = FacetRefinement_Range{} } +func (m *FacetRefinement_Range) String() string { return proto.CompactTextString(m) } +func (*FacetRefinement_Range) ProtoMessage() {} +func (*FacetRefinement_Range) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37, 0} } func (m *FacetRefinement_Range) GetStart() string { if m != nil && m.Start != nil { @@ -1791,29 +1899,30 @@ func (m *FacetRefinement_Range) GetEnd() string { } type SearchParams struct { - IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec" json:"index_spec,omitempty"` + IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"` Query *string `protobuf:"bytes,2,req,name=query" json:"query,omitempty"` Cursor *string `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"` Offset *int32 `protobuf:"varint,11,opt,name=offset" json:"offset,omitempty"` - CursorType *SearchParams_CursorType `protobuf:"varint,5,opt,name=cursor_type,enum=search.SearchParams_CursorType,def=0" json:"cursor_type,omitempty"` + CursorType *SearchParams_CursorType `protobuf:"varint,5,opt,name=cursor_type,json=cursorType,enum=search.SearchParams_CursorType,def=0" json:"cursor_type,omitempty"` Limit *int32 `protobuf:"varint,6,opt,name=limit,def=20" json:"limit,omitempty"` - MatchedCountAccuracy *int32 `protobuf:"varint,7,opt,name=matched_count_accuracy" json:"matched_count_accuracy,omitempty"` - SortSpec []*SortSpec `protobuf:"bytes,8,rep,name=sort_spec" json:"sort_spec,omitempty"` - ScorerSpec *ScorerSpec `protobuf:"bytes,9,opt,name=scorer_spec" json:"scorer_spec,omitempty"` - FieldSpec *FieldSpec `protobuf:"bytes,10,opt,name=field_spec" json:"field_spec,omitempty"` - KeysOnly *bool `protobuf:"varint,12,opt,name=keys_only" json:"keys_only,omitempty"` - ParsingMode *SearchParams_ParsingMode `protobuf:"varint,13,opt,name=parsing_mode,enum=search.SearchParams_ParsingMode,def=0" json:"parsing_mode,omitempty"` - AutoDiscoverFacetCount *int32 `protobuf:"varint,15,opt,name=auto_discover_facet_count,def=0" json:"auto_discover_facet_count,omitempty"` - IncludeFacet []*FacetRequest `protobuf:"bytes,16,rep,name=include_facet" json:"include_facet,omitempty"` - FacetRefinement []*FacetRefinement `protobuf:"bytes,17,rep,name=facet_refinement" json:"facet_refinement,omitempty"` - FacetAutoDetectParam *FacetAutoDetectParam `protobuf:"bytes,18,opt,name=facet_auto_detect_param" json:"facet_auto_detect_param,omitempty"` - FacetDepth *int32 `protobuf:"varint,19,opt,name=facet_depth,def=1000" json:"facet_depth,omitempty"` + MatchedCountAccuracy *int32 `protobuf:"varint,7,opt,name=matched_count_accuracy,json=matchedCountAccuracy" json:"matched_count_accuracy,omitempty"` + SortSpec []*SortSpec `protobuf:"bytes,8,rep,name=sort_spec,json=sortSpec" json:"sort_spec,omitempty"` + ScorerSpec *ScorerSpec `protobuf:"bytes,9,opt,name=scorer_spec,json=scorerSpec" json:"scorer_spec,omitempty"` + FieldSpec *FieldSpec `protobuf:"bytes,10,opt,name=field_spec,json=fieldSpec" json:"field_spec,omitempty"` + KeysOnly *bool `protobuf:"varint,12,opt,name=keys_only,json=keysOnly" json:"keys_only,omitempty"` + ParsingMode *SearchParams_ParsingMode `protobuf:"varint,13,opt,name=parsing_mode,json=parsingMode,enum=search.SearchParams_ParsingMode,def=0" json:"parsing_mode,omitempty"` + AutoDiscoverFacetCount *int32 `protobuf:"varint,15,opt,name=auto_discover_facet_count,json=autoDiscoverFacetCount,def=0" json:"auto_discover_facet_count,omitempty"` + IncludeFacet []*FacetRequest `protobuf:"bytes,16,rep,name=include_facet,json=includeFacet" json:"include_facet,omitempty"` + FacetRefinement []*FacetRefinement `protobuf:"bytes,17,rep,name=facet_refinement,json=facetRefinement" json:"facet_refinement,omitempty"` + FacetAutoDetectParam *FacetAutoDetectParam `protobuf:"bytes,18,opt,name=facet_auto_detect_param,json=facetAutoDetectParam" json:"facet_auto_detect_param,omitempty"` + FacetDepth *int32 `protobuf:"varint,19,opt,name=facet_depth,json=facetDepth,def=1000" json:"facet_depth,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *SearchParams) Reset() { *m = SearchParams{} } -func (m *SearchParams) String() string { return proto.CompactTextString(m) } -func (*SearchParams) ProtoMessage() {} +func (m *SearchParams) Reset() { *m = SearchParams{} } +func (m *SearchParams) String() string { return proto.CompactTextString(m) } +func (*SearchParams) ProtoMessage() {} +func (*SearchParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } const Default_SearchParams_CursorType SearchParams_CursorType = SearchParams_NONE const Default_SearchParams_Limit int32 = 20 @@ -1942,13 +2051,14 @@ func (m *SearchParams) GetFacetDepth() int32 { type SearchRequest struct { Params *SearchParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` + AppId []byte `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"` XXX_unrecognized []byte `json:"-"` } -func (m *SearchRequest) Reset() { *m = SearchRequest{} } -func (m *SearchRequest) String() string { return proto.CompactTextString(m) } -func (*SearchRequest) ProtoMessage() {} +func (m *SearchRequest) Reset() { *m = SearchRequest{} } +func (m *SearchRequest) String() string { return proto.CompactTextString(m) } +func (*SearchRequest) ProtoMessage() {} +func (*SearchRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } func (m *SearchRequest) GetParams() *SearchParams { if m != nil { @@ -1971,9 +2081,10 @@ type FacetResultValue struct { XXX_unrecognized []byte `json:"-"` } -func (m *FacetResultValue) Reset() { *m = FacetResultValue{} } -func (m *FacetResultValue) String() string { return proto.CompactTextString(m) } -func (*FacetResultValue) ProtoMessage() {} +func (m *FacetResultValue) Reset() { *m = FacetResultValue{} } +func (m *FacetResultValue) String() string { return proto.CompactTextString(m) } +func (*FacetResultValue) ProtoMessage() {} +func (*FacetResultValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } func (m *FacetResultValue) GetName() string { if m != nil && m.Name != nil { @@ -2002,9 +2113,10 @@ type FacetResult struct { XXX_unrecognized []byte `json:"-"` } -func (m *FacetResult) Reset() { *m = FacetResult{} } -func (m *FacetResult) String() string { return proto.CompactTextString(m) } -func (*FacetResult) ProtoMessage() {} +func (m *FacetResult) Reset() { *m = FacetResult{} } +func (m *FacetResult) String() string { return proto.CompactTextString(m) } +func (*FacetResult) ProtoMessage() {} +func (*FacetResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } func (m *FacetResult) GetName() string { if m != nil && m.Name != nil { @@ -2028,9 +2140,10 @@ type SearchResult struct { XXX_unrecognized []byte `json:"-"` } -func (m *SearchResult) Reset() { *m = SearchResult{} } -func (m *SearchResult) String() string { return proto.CompactTextString(m) } -func (*SearchResult) ProtoMessage() {} +func (m *SearchResult) Reset() { *m = SearchResult{} } +func (m *SearchResult) String() string { return proto.CompactTextString(m) } +func (*SearchResult) ProtoMessage() {} +func (*SearchResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } func (m *SearchResult) GetDocument() *Document { if m != nil { @@ -2061,18 +2174,19 @@ func (m *SearchResult) GetCursor() string { } type SearchResponse struct { - Result []*SearchResult `protobuf:"bytes,1,rep,name=result" json:"result,omitempty"` - MatchedCount *int64 `protobuf:"varint,2,req,name=matched_count" json:"matched_count,omitempty"` - Status *RequestStatus `protobuf:"bytes,3,req,name=status" json:"status,omitempty"` - Cursor *string `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"` - FacetResult []*FacetResult `protobuf:"bytes,5,rep,name=facet_result" json:"facet_result,omitempty"` - XXX_extensions map[int32]proto.Extension `json:"-"` - XXX_unrecognized []byte `json:"-"` + Result []*SearchResult `protobuf:"bytes,1,rep,name=result" json:"result,omitempty"` + MatchedCount *int64 `protobuf:"varint,2,req,name=matched_count,json=matchedCount" json:"matched_count,omitempty"` + Status *RequestStatus `protobuf:"bytes,3,req,name=status" json:"status,omitempty"` + Cursor *string `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"` + FacetResult []*FacetResult `protobuf:"bytes,5,rep,name=facet_result,json=facetResult" json:"facet_result,omitempty"` + proto.XXX_InternalExtensions `json:"-"` + XXX_unrecognized []byte `json:"-"` } -func (m *SearchResponse) Reset() { *m = SearchResponse{} } -func (m *SearchResponse) String() string { return proto.CompactTextString(m) } -func (*SearchResponse) ProtoMessage() {} +func (m *SearchResponse) Reset() { *m = SearchResponse{} } +func (m *SearchResponse) String() string { return proto.CompactTextString(m) } +func (*SearchResponse) ProtoMessage() {} +func (*SearchResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } var extRange_SearchResponse = []proto.ExtensionRange{ {1000, 9999}, @@ -2081,12 +2195,6 @@ var extRange_SearchResponse = []proto.ExtensionRange{ func (*SearchResponse) ExtensionRangeArray() []proto.ExtensionRange { return extRange_SearchResponse } -func (m *SearchResponse) ExtensionMap() map[int32]proto.Extension { - if m.XXX_extensions == nil { - m.XXX_extensions = make(map[int32]proto.Extension) - } - return m.XXX_extensions -} func (m *SearchResponse) GetResult() []*SearchResult { if m != nil { @@ -2124,4 +2232,257 @@ func (m *SearchResponse) GetFacetResult() []*FacetResult { } func init() { + proto.RegisterType((*Scope)(nil), "search.Scope") + proto.RegisterType((*Entry)(nil), "search.Entry") + proto.RegisterType((*AccessControlList)(nil), "search.AccessControlList") + proto.RegisterType((*FieldValue)(nil), "search.FieldValue") + proto.RegisterType((*FieldValue_Geo)(nil), "search.FieldValue.Geo") + proto.RegisterType((*Field)(nil), "search.Field") + proto.RegisterType((*FieldTypes)(nil), "search.FieldTypes") + proto.RegisterType((*IndexShardSettings)(nil), "search.IndexShardSettings") + proto.RegisterType((*FacetValue)(nil), "search.FacetValue") + proto.RegisterType((*Facet)(nil), "search.Facet") + proto.RegisterType((*DocumentMetadata)(nil), "search.DocumentMetadata") + proto.RegisterType((*Document)(nil), "search.Document") + proto.RegisterType((*SearchServiceError)(nil), "search.SearchServiceError") + proto.RegisterType((*RequestStatus)(nil), "search.RequestStatus") + proto.RegisterType((*IndexSpec)(nil), "search.IndexSpec") + proto.RegisterType((*IndexMetadata)(nil), "search.IndexMetadata") + proto.RegisterType((*IndexMetadata_Storage)(nil), "search.IndexMetadata.Storage") + proto.RegisterType((*IndexDocumentParams)(nil), "search.IndexDocumentParams") + proto.RegisterType((*IndexDocumentRequest)(nil), "search.IndexDocumentRequest") + proto.RegisterType((*IndexDocumentResponse)(nil), "search.IndexDocumentResponse") + proto.RegisterType((*DeleteDocumentParams)(nil), "search.DeleteDocumentParams") + proto.RegisterType((*DeleteDocumentRequest)(nil), "search.DeleteDocumentRequest") + proto.RegisterType((*DeleteDocumentResponse)(nil), "search.DeleteDocumentResponse") + proto.RegisterType((*ListDocumentsParams)(nil), "search.ListDocumentsParams") + proto.RegisterType((*ListDocumentsRequest)(nil), "search.ListDocumentsRequest") + proto.RegisterType((*ListDocumentsResponse)(nil), "search.ListDocumentsResponse") + proto.RegisterType((*ListIndexesParams)(nil), "search.ListIndexesParams") + proto.RegisterType((*ListIndexesRequest)(nil), "search.ListIndexesRequest") + proto.RegisterType((*ListIndexesResponse)(nil), "search.ListIndexesResponse") + proto.RegisterType((*DeleteSchemaParams)(nil), "search.DeleteSchemaParams") + proto.RegisterType((*DeleteSchemaRequest)(nil), "search.DeleteSchemaRequest") + proto.RegisterType((*DeleteSchemaResponse)(nil), "search.DeleteSchemaResponse") + proto.RegisterType((*SortSpec)(nil), "search.SortSpec") + proto.RegisterType((*ScorerSpec)(nil), "search.ScorerSpec") + proto.RegisterType((*FieldSpec)(nil), "search.FieldSpec") + proto.RegisterType((*FieldSpec_Expression)(nil), "search.FieldSpec.Expression") + proto.RegisterType((*FacetRange)(nil), "search.FacetRange") + proto.RegisterType((*FacetRequestParam)(nil), "search.FacetRequestParam") + proto.RegisterType((*FacetAutoDetectParam)(nil), "search.FacetAutoDetectParam") + proto.RegisterType((*FacetRequest)(nil), "search.FacetRequest") + proto.RegisterType((*FacetRefinement)(nil), "search.FacetRefinement") + proto.RegisterType((*FacetRefinement_Range)(nil), "search.FacetRefinement.Range") + proto.RegisterType((*SearchParams)(nil), "search.SearchParams") + proto.RegisterType((*SearchRequest)(nil), "search.SearchRequest") + proto.RegisterType((*FacetResultValue)(nil), "search.FacetResultValue") + proto.RegisterType((*FacetResult)(nil), "search.FacetResult") + proto.RegisterType((*SearchResult)(nil), "search.SearchResult") + proto.RegisterType((*SearchResponse)(nil), "search.SearchResponse") + proto.RegisterEnum("search.Scope_Type", Scope_Type_name, Scope_Type_value) + proto.RegisterEnum("search.Entry_Permission", Entry_Permission_name, Entry_Permission_value) + proto.RegisterEnum("search.FieldValue_ContentType", FieldValue_ContentType_name, FieldValue_ContentType_value) + proto.RegisterEnum("search.FacetValue_ContentType", FacetValue_ContentType_name, FacetValue_ContentType_value) + proto.RegisterEnum("search.Document_OrderIdSource", Document_OrderIdSource_name, Document_OrderIdSource_value) + proto.RegisterEnum("search.Document_Storage", Document_Storage_name, Document_Storage_value) + proto.RegisterEnum("search.SearchServiceError_ErrorCode", SearchServiceError_ErrorCode_name, SearchServiceError_ErrorCode_value) + proto.RegisterEnum("search.IndexSpec_Consistency", IndexSpec_Consistency_name, IndexSpec_Consistency_value) + proto.RegisterEnum("search.IndexSpec_Source", IndexSpec_Source_name, IndexSpec_Source_value) + proto.RegisterEnum("search.IndexSpec_Mode", IndexSpec_Mode_name, IndexSpec_Mode_value) + proto.RegisterEnum("search.IndexDocumentParams_Freshness", IndexDocumentParams_Freshness_name, IndexDocumentParams_Freshness_value) + proto.RegisterEnum("search.ScorerSpec_Scorer", ScorerSpec_Scorer_name, ScorerSpec_Scorer_value) + proto.RegisterEnum("search.SearchParams_CursorType", SearchParams_CursorType_name, SearchParams_CursorType_value) + proto.RegisterEnum("search.SearchParams_ParsingMode", SearchParams_ParsingMode_name, SearchParams_ParsingMode_value) +} + +func init() { proto.RegisterFile("search.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 2960 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x59, 0xcf, 0x73, 0xdb, 0xc6, + 0xf5, 0x17, 0x40, 0x91, 0x22, 0x1f, 0x49, 0x09, 0x5a, 0xfd, 0x30, 0xed, 0xf8, 0x9b, 0x28, 0x70, + 0x9c, 0x28, 0xf9, 0xda, 0xfa, 0xca, 0xb2, 0x27, 0xf1, 0x57, 0xcd, 0xb4, 0xa1, 0x49, 0x58, 0x66, + 0x4d, 0x91, 0xca, 0x12, 0x74, 0xe2, 0xce, 0x34, 0x28, 0x0a, 0xac, 0x64, 0x4c, 0x49, 0x80, 0x01, + 0x40, 0xd7, 0xba, 0x75, 0x72, 0xeb, 0xa5, 0xd3, 0x4e, 0x4f, 0x3d, 0x75, 0x32, 0xbd, 0x74, 0x7a, + 0xed, 0xbd, 0xa7, 0xf6, 0xd6, 0x5b, 0x4f, 0xfd, 0x07, 0x3a, 0x9d, 0x76, 0xa6, 0x7f, 0x43, 0x67, + 0xdf, 0x2e, 0x40, 0x80, 0xa2, 0xa3, 0xd8, 0x37, 0xe2, 0xed, 0xdb, 0xb7, 0x6f, 0xdf, 0xe7, 0xbd, + 0xcf, 0xbe, 0x5d, 0x42, 0x2d, 0x62, 0x76, 0xe8, 0x3c, 0xdb, 0x9b, 0x84, 0x41, 0x1c, 0x90, 0x92, + 0xf8, 0xd2, 0xff, 0xad, 0x40, 0x71, 0xe0, 0x04, 0x13, 0x46, 0xde, 0x85, 0xe5, 0xf8, 0x7c, 0xc2, + 0x1a, 0xca, 0x8e, 0xb2, 0xbb, 0x7a, 0x40, 0xf6, 0xa4, 0x3a, 0x0e, 0xee, 0x99, 0xe7, 0x13, 0x46, + 0x71, 0x9c, 0x6c, 0x42, 0xf1, 0xb9, 0x3d, 0x9a, 0xb2, 0x86, 0xba, 0xa3, 0xec, 0x56, 0xa8, 0xf8, + 0xd0, 0x7f, 0xa7, 0xc0, 0x32, 0x57, 0x22, 0x0d, 0xd8, 0x1c, 0x0e, 0x0c, 0x6a, 0x3d, 0x78, 0x6a, + 0xb5, 0x9a, 0xbd, 0x7e, 0xaf, 0xd3, 0x6a, 0x76, 0xad, 0x4e, 0x5b, 0x53, 0xc8, 0x3a, 0xd4, 0x93, + 0x11, 0xe3, 0xb8, 0xd9, 0xe9, 0x6a, 0x2a, 0xb9, 0x0a, 0x5b, 0x47, 0xb4, 0x3f, 0x3c, 0xb9, 0xa0, + 0x5d, 0x20, 0x04, 0x56, 0xd3, 0x21, 0xa1, 0xbe, 0x4c, 0x36, 0x60, 0x2d, 0x95, 0xb5, 0xfb, 0xc7, + 0xcd, 0x4e, 0x4f, 0x2b, 0x92, 0x3a, 0x54, 0x9a, 0xdd, 0xae, 0xc5, 0x4d, 0x0f, 0xb4, 0x12, 0x79, + 0x03, 0xae, 0xf0, 0xcf, 0xe6, 0xd0, 0x7c, 0x64, 0xf4, 0xcc, 0x4e, 0xab, 0x69, 0x1a, 0x6d, 0x39, + 0xb8, 0xa2, 0xff, 0x49, 0x81, 0xa2, 0xe1, 0xc7, 0xe1, 0x39, 0xb9, 0x01, 0xc5, 0x88, 0xef, 0x0c, + 0xb7, 0x5b, 0x3d, 0xa8, 0xe7, 0xb6, 0x4b, 0xc5, 0x18, 0xb9, 0x0f, 0x30, 0x61, 0xe1, 0xd8, 0x8b, + 0x22, 0x2f, 0xf0, 0x71, 0xbf, 0xab, 0x07, 0x8d, 0x44, 0x13, 0xed, 0xec, 0x9d, 0xa4, 0xe3, 0x34, + 0xa3, 0x4b, 0xde, 0x86, 0x9a, 0xeb, 0x45, 0x93, 0x91, 0x7d, 0x6e, 0xf9, 0xf6, 0x98, 0x35, 0x0a, + 0x18, 0xab, 0xaa, 0x94, 0xf5, 0xec, 0x31, 0xd3, 0xef, 0x02, 0xcc, 0x26, 0x93, 0x32, 0x2c, 0x53, + 0xa3, 0xc9, 0xc3, 0x54, 0x81, 0xe2, 0x67, 0xb4, 0x63, 0x1a, 0x9a, 0x4a, 0x34, 0xa8, 0x3d, 0x1c, + 0x76, 0xbb, 0x56, 0xab, 0xdf, 0x33, 0x69, 0xbf, 0xab, 0x15, 0x74, 0x0a, 0xeb, 0x4d, 0xc7, 0x61, + 0x51, 0xd4, 0x0a, 0xfc, 0x38, 0x0c, 0x46, 0x5d, 0x2f, 0x8a, 0x39, 0x22, 0xc1, 0x4f, 0x7d, 0x16, + 0xe2, 0x5e, 0x2a, 0x54, 0x7c, 0x90, 0xf7, 0x60, 0x85, 0xf9, 0x71, 0xe8, 0xb1, 0xa8, 0xa1, 0xee, + 0x14, 0xb2, 0x7b, 0x44, 0xcf, 0x69, 0x32, 0xaa, 0xff, 0x41, 0x05, 0x78, 0xe8, 0xb1, 0x91, 0xfb, + 0x84, 0x23, 0x49, 0xee, 0xe7, 0xf2, 0xe0, 0xcd, 0x64, 0xd2, 0x4c, 0x63, 0x8f, 0xaf, 0xcd, 0xfc, + 0x98, 0xc3, 0x7d, 0xb8, 0x6c, 0x1a, 0x9f, 0x9b, 0x32, 0x33, 0xde, 0x84, 0xf2, 0xc8, 0xf6, 0xcf, + 0xa6, 0xf6, 0x99, 0x4c, 0x8e, 0x43, 0x95, 0xf9, 0x34, 0x95, 0xf1, 0xa0, 0x44, 0x71, 0xe8, 0xf9, + 0x67, 0x96, 0x48, 0x20, 0x19, 0x14, 0x21, 0x13, 0x8b, 0xef, 0x42, 0xe1, 0x8c, 0x05, 0x8d, 0xe5, + 0x1d, 0x65, 0x17, 0x0e, 0xb6, 0x17, 0xac, 0x7d, 0xc4, 0x02, 0xca, 0x55, 0xae, 0xbd, 0x0f, 0x85, + 0x23, 0x16, 0x10, 0x0d, 0x0a, 0x23, 0x3b, 0x6e, 0x14, 0x77, 0xd4, 0x5d, 0x85, 0xf2, 0x9f, 0x28, + 0xf1, 0xcf, 0x1a, 0x25, 0x29, 0xf1, 0xcf, 0xf4, 0xef, 0x43, 0x35, 0xe3, 0x32, 0x0f, 0x35, 0x77, + 0x5a, 0x5b, 0xe2, 0xbf, 0x1e, 0x99, 0xc7, 0x5d, 0x4d, 0xe1, 0xbf, 0x9a, 0x66, 0xff, 0x58, 0x53, + 0xf9, 0xaf, 0x76, 0xd3, 0x34, 0xb4, 0x02, 0x01, 0x28, 0xf5, 0x86, 0xc7, 0x0f, 0x0c, 0xaa, 0x2d, + 0x93, 0x15, 0x28, 0x1c, 0x19, 0x7d, 0xad, 0xa8, 0x1b, 0x50, 0x44, 0x6f, 0x08, 0x81, 0x65, 0x44, + 0x56, 0xd9, 0x51, 0x77, 0x2b, 0x14, 0x7f, 0x93, 0xdd, 0x59, 0x69, 0xa8, 0xbb, 0xd5, 0x59, 0x0d, + 0xcd, 0xfc, 0x4f, 0xca, 0xc5, 0x94, 0x21, 0xe7, 0x0e, 0x45, 0x0b, 0x6d, 0x1d, 0x48, 0x18, 0x38, + 0x76, 0x97, 0xc2, 0x20, 0x00, 0xd0, 0xff, 0xa2, 0x00, 0xe9, 0xf8, 0x2e, 0x7b, 0x31, 0x78, 0x66, + 0x87, 0xee, 0x80, 0xc5, 0xb1, 0xe7, 0x9f, 0x45, 0xe4, 0x5d, 0x58, 0x9b, 0x84, 0xec, 0xb9, 0xe5, + 0x4f, 0xc7, 0x56, 0xc4, 0x47, 0xa2, 0x86, 0xb2, 0x53, 0xd8, 0x2d, 0xd2, 0x3a, 0x17, 0xf7, 0xa6, + 0x63, 0x54, 0x8f, 0xc8, 0x0e, 0x40, 0x46, 0x85, 0xef, 0xa1, 0x78, 0xa8, 0xdc, 0xa1, 0x15, 0x3f, + 0xd5, 0xf8, 0x2e, 0x5c, 0x9f, 0xb3, 0x64, 0x09, 0xbf, 0xac, 0x53, 0x7b, 0x14, 0x71, 0x44, 0xb9, + 0xd9, 0x46, 0xce, 0xec, 0x00, 0x15, 0x1e, 0xf2, 0x71, 0x72, 0x13, 0xea, 0xa3, 0xc0, 0xb1, 0x47, + 0x56, 0xc8, 0x26, 0x23, 0xcf, 0xb1, 0x11, 0xe8, 0xca, 0xe1, 0x12, 0xad, 0xa1, 0x98, 0x0a, 0xa9, + 0xfe, 0x0b, 0x05, 0xe0, 0xa1, 0xed, 0xb0, 0xf8, 0x9b, 0x33, 0x32, 0xd5, 0xc8, 0x67, 0x24, 0x07, + 0x52, 0x66, 0xe4, 0xe5, 0x19, 0xa7, 0xdf, 0xb8, 0x90, 0x1c, 0x32, 0x11, 0x32, 0xf0, 0x23, 0xea, + 0x7c, 0xb5, 0x57, 0x43, 0x3d, 0xf5, 0x2f, 0x41, 0xfd, 0x0b, 0xd0, 0xda, 0x81, 0x33, 0x1d, 0x33, + 0x3f, 0x3e, 0x66, 0xb1, 0xed, 0xda, 0xb1, 0x4d, 0x1a, 0xb0, 0xf2, 0x9c, 0x85, 0x48, 0x30, 0x7c, + 0x7f, 0x05, 0x9a, 0x7c, 0x92, 0x7d, 0xd8, 0x74, 0x82, 0xf1, 0xd8, 0x8b, 0x63, 0xe6, 0x5a, 0x51, + 0x6c, 0x25, 0x6a, 0x2a, 0xaa, 0x91, 0x74, 0x6c, 0x10, 0x3f, 0x11, 0x23, 0xfa, 0x7f, 0x54, 0x28, + 0x27, 0x0b, 0x90, 0x55, 0x50, 0x3d, 0x57, 0x52, 0x82, 0xea, 0xb9, 0x97, 0x56, 0xe7, 0x0d, 0x28, + 0x9e, 0xf2, 0xe4, 0x42, 0x10, 0x33, 0x6c, 0x81, 0x19, 0x47, 0xc5, 0x18, 0xb9, 0x0a, 0xe5, 0x20, + 0x74, 0x59, 0x68, 0x79, 0x2e, 0x62, 0x57, 0xa4, 0x2b, 0xf8, 0xdd, 0x71, 0xc9, 0x09, 0xac, 0x25, + 0x43, 0x56, 0x14, 0x4c, 0x43, 0x87, 0x35, 0x4a, 0x79, 0xc0, 0x12, 0xd7, 0xf6, 0xfa, 0x62, 0xca, + 0x00, 0xb5, 0x0e, 0xcb, 0x83, 0xe1, 0xc9, 0x49, 0xb7, 0x63, 0xb4, 0x69, 0x3d, 0xc8, 0x0e, 0x90, + 0xfb, 0xb0, 0x12, 0xc5, 0x41, 0xc8, 0x1d, 0x2e, 0xe6, 0xb9, 0x37, 0xb5, 0x34, 0x10, 0xe3, 0x87, + 0xcb, 0xed, 0xce, 0xe0, 0x31, 0x4d, 0xd4, 0x71, 0x2f, 0x3c, 0xfa, 0x8d, 0xf2, 0xdc, 0x5e, 0xb8, + 0x90, 0x8a, 0x31, 0xfd, 0x16, 0xd4, 0x73, 0x8e, 0xf0, 0x93, 0xa4, 0x6d, 0x3c, 0x6c, 0x0e, 0xbb, + 0xa6, 0xd1, 0xd6, 0x96, 0x48, 0x0d, 0x52, 0xcf, 0x34, 0x45, 0xdf, 0x80, 0x15, 0xb9, 0x18, 0x52, + 0x44, 0x67, 0xf0, 0x58, 0x5b, 0xd2, 0x7f, 0xaf, 0x00, 0x11, 0xf9, 0x3d, 0x60, 0xe1, 0x73, 0xcf, + 0x61, 0x46, 0x18, 0x06, 0xa1, 0xfe, 0x2b, 0x05, 0x2a, 0xf8, 0xab, 0x15, 0xb8, 0x8c, 0x94, 0x40, + 0xed, 0x3f, 0xd6, 0x96, 0xf8, 0xe9, 0xd5, 0xe9, 0x3d, 0x69, 0x76, 0x3b, 0x6d, 0x8b, 0x1a, 0x9f, + 0x0e, 0x8d, 0x81, 0xa9, 0x29, 0x5c, 0x68, 0xd2, 0x66, 0x6f, 0xd0, 0x31, 0x7a, 0xa6, 0x65, 0x50, + 0xda, 0xa7, 0x9a, 0xca, 0xcf, 0xbe, 0x4e, 0xcf, 0x34, 0x68, 0xaf, 0xd9, 0x95, 0xb2, 0x02, 0xd9, + 0x82, 0xf5, 0x13, 0x83, 0x1e, 0x77, 0x06, 0x83, 0x4e, 0xbf, 0x67, 0xb5, 0x8d, 0x1e, 0x77, 0x6b, + 0x99, 0x54, 0x61, 0xc5, 0xec, 0x1c, 0x1b, 0xfd, 0xa1, 0xa9, 0x15, 0xc9, 0x35, 0xd8, 0x6e, 0xf5, + 0x7b, 0xad, 0x21, 0xa5, 0xdc, 0x1a, 0xda, 0x6d, 0xb6, 0xcc, 0x4e, 0xbf, 0xa7, 0x95, 0xf4, 0x5f, + 0x2b, 0x50, 0xa7, 0xec, 0xcb, 0x29, 0x8b, 0xe2, 0x41, 0x6c, 0xc7, 0xd3, 0x88, 0x97, 0x95, 0x13, + 0xb8, 0x22, 0x97, 0x57, 0x0f, 0xde, 0x49, 0x4f, 0xc0, 0x0b, 0xfb, 0xd9, 0x4b, 0xf7, 0x42, 0x71, + 0x06, 0x2f, 0x2b, 0xc6, 0x45, 0x96, 0xcb, 0x62, 0xdb, 0x1b, 0xc9, 0x4e, 0xa0, 0x8a, 0xb2, 0x36, + 0x8a, 0xc8, 0x4d, 0x58, 0x75, 0x6c, 0x3f, 0xf0, 0x3d, 0x5e, 0xed, 0xb8, 0x4c, 0x01, 0xd3, 0xa5, + 0x9e, 0x4a, 0xb9, 0x3d, 0xfd, 0xeb, 0x02, 0x54, 0x04, 0x63, 0x4d, 0x98, 0xb3, 0xb0, 0xba, 0x8e, + 0xa1, 0xea, 0x04, 0x7e, 0xe4, 0x45, 0x31, 0xf3, 0x9d, 0x73, 0x79, 0x08, 0xff, 0x4f, 0xe2, 0x6c, + 0x3a, 0x97, 0x53, 0x40, 0xa2, 0x74, 0x58, 0x3b, 0x31, 0xa8, 0xd5, 0xee, 0xb7, 0x86, 0xc7, 0x46, + 0xcf, 0xa4, 0xd9, 0xf9, 0xe4, 0x3a, 0x54, 0xb8, 0xd9, 0x68, 0x62, 0x3b, 0x09, 0x1d, 0xcc, 0x04, + 0xd9, 0x62, 0x94, 0xd9, 0x9d, 0x14, 0xe3, 0x7d, 0x28, 0xc9, 0xa4, 0x9e, 0x4b, 0xc5, 0x99, 0x07, + 0x32, 0x9d, 0x4b, 0x03, 0xa3, 0x49, 0x5b, 0x8f, 0xa8, 0xd4, 0x27, 0xf7, 0x60, 0x79, 0xcc, 0xf7, + 0x2f, 0x8a, 0x61, 0xfb, 0xe2, 0xbc, 0xe3, 0xc0, 0x65, 0x87, 0xe5, 0x13, 0xda, 0xe9, 0xd3, 0x8e, + 0xf9, 0x94, 0xa2, 0xb6, 0xfe, 0xbf, 0x48, 0x4b, 0xa9, 0xdb, 0x00, 0xa5, 0xa3, 0x6e, 0xff, 0x41, + 0xb3, 0xab, 0x2d, 0xf1, 0xae, 0x20, 0xbb, 0x3f, 0x4d, 0xd1, 0x3f, 0x84, 0x92, 0x4c, 0x61, 0x00, + 0xb9, 0xbc, 0xb6, 0x84, 0xe9, 0xdc, 0x34, 0x9b, 0x03, 0xb3, 0x4f, 0x0d, 0xd1, 0x7e, 0xb5, 0xba, + 0xfd, 0x61, 0xdb, 0xe2, 0x82, 0xe6, 0x91, 0xa1, 0xa9, 0xfa, 0x3b, 0xb0, 0xcc, 0x17, 0xe7, 0x99, + 0x9e, 0x2c, 0xaf, 0x2d, 0x91, 0x55, 0x80, 0x07, 0xcd, 0xd6, 0x63, 0xde, 0x69, 0xf5, 0x78, 0xe6, + 0xff, 0x43, 0x81, 0x3a, 0x7a, 0x9b, 0x72, 0xd6, 0x3e, 0x80, 0xc7, 0x05, 0x56, 0x34, 0x61, 0x0e, + 0xa2, 0x55, 0x3d, 0x58, 0xbf, 0xb0, 0x31, 0x5a, 0xf1, 0x52, 0x64, 0x77, 0x13, 0x72, 0x11, 0xad, + 0x48, 0xfe, 0x64, 0xc4, 0x43, 0x30, 0x61, 0x98, 0x8f, 0x66, 0x45, 0x5f, 0xc0, 0xd6, 0x2c, 0x8f, + 0x75, 0xe2, 0x43, 0x52, 0xf9, 0x69, 0xcd, 0x5f, 0xfb, 0x64, 0x56, 0xa0, 0x6f, 0x41, 0xd5, 0x1e, + 0x07, 0x53, 0x3f, 0xb6, 0xa6, 0x11, 0x73, 0x25, 0xaf, 0x82, 0x10, 0x0d, 0x23, 0xe6, 0xf2, 0x8e, + 0x69, 0xe4, 0x8d, 0xbd, 0x58, 0x72, 0xa9, 0xf8, 0xd0, 0xbf, 0x52, 0x61, 0x03, 0x17, 0x49, 0xe8, + 0xe5, 0xc4, 0x0e, 0xed, 0x71, 0x44, 0x6e, 0x41, 0xd9, 0x95, 0x12, 0x3c, 0x38, 0xab, 0x07, 0xda, + 0x3c, 0x11, 0xd1, 0x54, 0x83, 0x3c, 0x81, 0xca, 0x69, 0xc8, 0xa2, 0x67, 0x3e, 0x8b, 0x22, 0x99, + 0xae, 0x37, 0x73, 0x5b, 0xc8, 0x5b, 0xdf, 0x7b, 0x98, 0x28, 0x1f, 0xd6, 0x07, 0x4f, 0x7b, 0xad, + 0x47, 0xb4, 0xdf, 0xeb, 0x0f, 0x07, 0xdd, 0xa7, 0x0f, 0xd4, 0x86, 0x42, 0x67, 0xa6, 0xe6, 0x82, + 0x5e, 0xb8, 0x3c, 0xe8, 0xfa, 0x5d, 0xa8, 0xa4, 0xc6, 0x39, 0xfc, 0x39, 0xf3, 0x82, 0x90, 0x3e, + 0x7b, 0x64, 0xf4, 0x78, 0x7b, 0xf9, 0x84, 0xf3, 0x09, 0xe6, 0xd2, 0x8f, 0x61, 0x33, 0xe7, 0xa5, + 0xe4, 0x0c, 0x72, 0x17, 0x4a, 0x13, 0x74, 0x58, 0xe2, 0xfd, 0xc6, 0x37, 0xec, 0x89, 0x4a, 0x55, + 0xb2, 0x05, 0x25, 0x7b, 0x32, 0xe1, 0x87, 0x05, 0xc7, 0xb2, 0x46, 0x8b, 0xf6, 0x64, 0xd2, 0x71, + 0xf5, 0x1f, 0xc2, 0xd6, 0xdc, 0x1a, 0xd1, 0x24, 0xf0, 0x23, 0x46, 0x6e, 0x43, 0x29, 0x42, 0x72, + 0x92, 0x71, 0xde, 0x4a, 0x16, 0xc9, 0x31, 0x17, 0x95, 0x4a, 0xdc, 0xbc, 0x1b, 0x38, 0xdc, 0x3c, + 0x4f, 0xab, 0x0a, 0x2d, 0xba, 0x81, 0xd3, 0x71, 0x75, 0x0b, 0x36, 0xdb, 0x6c, 0xc4, 0x62, 0x36, + 0x87, 0xe3, 0x4c, 0x5d, 0xc9, 0xa8, 0xcf, 0x05, 0x56, 0xfd, 0x16, 0x81, 0x75, 0x61, 0x2b, 0xbf, + 0x40, 0x12, 0xa4, 0x7b, 0x73, 0x41, 0xba, 0x9e, 0xe6, 0xc9, 0x02, 0x7f, 0x2e, 0x8b, 0xd2, 0x11, + 0x6c, 0xcf, 0xaf, 0xf2, 0x5a, 0x61, 0xd2, 0xff, 0xa6, 0xc0, 0x06, 0xbf, 0x28, 0x24, 0x76, 0x22, + 0x19, 0x8f, 0x57, 0x2f, 0xe3, 0x1d, 0xde, 0x4f, 0xd9, 0x61, 0x6c, 0xa5, 0x61, 0xe7, 0x04, 0x0a, + 0x28, 0x6b, 0xcb, 0x60, 0xae, 0x7b, 0xbe, 0x33, 0x9a, 0xba, 0xcc, 0x4a, 0x35, 0x71, 0x5b, 0xe5, + 0xc3, 0xe5, 0x38, 0x9c, 0x32, 0xba, 0x26, 0x87, 0x07, 0x72, 0x0e, 0xb9, 0x9a, 0xd4, 0x22, 0x32, + 0xee, 0x61, 0xe1, 0xce, 0xfe, 0xbe, 0x2c, 0x48, 0xf2, 0x06, 0x54, 0x7e, 0xc2, 0xce, 0x23, 0x2b, + 0xf0, 0x47, 0xe7, 0xc8, 0xbb, 0x65, 0x5a, 0xe6, 0x82, 0xbe, 0x3f, 0x3a, 0xe7, 0x89, 0x9a, 0xdb, + 0xd4, 0xa5, 0x89, 0xba, 0x20, 0x04, 0x0b, 0x20, 0x50, 0xb3, 0x10, 0xc4, 0xb0, 0x35, 0xb7, 0xc6, + 0x02, 0x04, 0xd4, 0xcb, 0x13, 0x35, 0xcb, 0x20, 0xea, 0x65, 0x0c, 0xa2, 0xff, 0x55, 0x85, 0x75, + 0xbe, 0x2c, 0x42, 0xc0, 0x12, 0xb4, 0xde, 0x86, 0xda, 0x29, 0x8b, 0x9d, 0x67, 0x56, 0xe4, 0x3c, + 0x63, 0x63, 0x1b, 0x59, 0xad, 0x4c, 0xab, 0x28, 0x1b, 0xa0, 0x88, 0x34, 0xb2, 0xb4, 0x56, 0x3c, + 0x54, 0x0f, 0xd2, 0x48, 0x7e, 0xf3, 0xb1, 0xb7, 0x0b, 0x9a, 0x00, 0x4b, 0xa4, 0x03, 0x9e, 0xc1, + 0xd8, 0x99, 0xd3, 0x55, 0x94, 0xa3, 0x23, 0xfc, 0xd2, 0x4a, 0xee, 0xc1, 0x46, 0x1e, 0x5e, 0x9c, + 0x21, 0xb0, 0x91, 0x00, 0xaf, 0x67, 0x01, 0xc6, 0x99, 0xe4, 0x03, 0x9e, 0x14, 0x89, 0x65, 0x6b, + 0x12, 0xb2, 0x53, 0xef, 0x05, 0x9e, 0x87, 0x15, 0x9e, 0x0e, 0xd2, 0xf6, 0x09, 0x8a, 0xc9, 0x36, + 0x94, 0x82, 0xd3, 0xd3, 0x88, 0xc5, 0x8d, 0x15, 0x3c, 0x81, 0xe5, 0x57, 0xe6, 0x00, 0x2e, 0xbf, + 0xda, 0x01, 0xac, 0x7f, 0x01, 0x24, 0x13, 0xcd, 0x24, 0x4d, 0xee, 0xcc, 0xa5, 0xc9, 0xd5, 0x6c, + 0x9a, 0xe4, 0x22, 0x7f, 0x59, 0x9d, 0x7e, 0x25, 0xcb, 0x2b, 0x5d, 0xe0, 0xf5, 0x72, 0xe4, 0x63, + 0x58, 0x15, 0x41, 0x1a, 0xcb, 0x23, 0x4e, 0x66, 0xca, 0xd6, 0xc2, 0xf3, 0x8f, 0xd6, 0xbd, 0xec, + 0xa7, 0xfe, 0x33, 0x05, 0x88, 0x60, 0x0b, 0x91, 0x0b, 0x32, 0x69, 0x66, 0x51, 0x53, 0x5e, 0xb1, + 0x6d, 0x99, 0x67, 0xc5, 0xc2, 0xa5, 0xac, 0xf8, 0x23, 0xd8, 0xc8, 0x7a, 0x90, 0x04, 0xfa, 0x60, + 0x2e, 0xd0, 0xd7, 0xf2, 0x9c, 0x98, 0x75, 0xf7, 0xb2, 0x48, 0x1b, 0x09, 0xb1, 0x27, 0x2b, 0xbc, + 0x1e, 0x1f, 0xfe, 0x59, 0x81, 0xf2, 0x20, 0x08, 0x63, 0xa4, 0xb4, 0xf7, 0x60, 0x2d, 0x0a, 0xc2, + 0xd8, 0x62, 0x2f, 0x26, 0x21, 0x8b, 0xe4, 0x3d, 0x4c, 0xc5, 0xd4, 0x0f, 0xc2, 0xd8, 0x48, 0xa5, + 0xe4, 0xb6, 0x54, 0x74, 0x59, 0xe4, 0x30, 0xdf, 0xf5, 0xfc, 0x33, 0x2c, 0xb3, 0x24, 0xed, 0x51, + 0xbd, 0x9d, 0x8e, 0x91, 0x5b, 0x40, 0x5c, 0x76, 0x6a, 0x4f, 0x47, 0xb1, 0xb8, 0x7b, 0x5a, 0x31, + 0x7b, 0x11, 0xcb, 0xaa, 0xd2, 0xe4, 0x08, 0x5e, 0x0e, 0x4d, 0xf6, 0x82, 0x07, 0x69, 0x2b, 0xaf, + 0xed, 0x4f, 0xc7, 0x2c, 0xf4, 0x1c, 0xac, 0x2c, 0x85, 0x6e, 0x64, 0x27, 0xf4, 0xc4, 0x90, 0xfe, + 0x77, 0x05, 0x60, 0xe0, 0x04, 0x21, 0x0b, 0x71, 0x23, 0xdf, 0x83, 0x52, 0x84, 0x5f, 0x12, 0xea, + 0xab, 0x99, 0x27, 0x2d, 0xa9, 0x23, 0x7f, 0x1e, 0xd6, 0x8e, 0x9b, 0x66, 0xeb, 0x91, 0x35, 0x68, + 0xf5, 0xa9, 0x41, 0xa9, 0x9c, 0x46, 0xae, 0xe5, 0xd9, 0x63, 0xf9, 0xce, 0xfe, 0x8c, 0x89, 0x3f, + 0x84, 0x2b, 0x63, 0x5b, 0x90, 0x0f, 0xd7, 0xb5, 0x10, 0x27, 0x16, 0xb3, 0x30, 0x6a, 0x54, 0x70, + 0x4b, 0x5b, 0x38, 0x2c, 0xec, 0x9f, 0xa4, 0x83, 0xd8, 0x99, 0x26, 0xd6, 0xb7, 0xa9, 0xc1, 0x57, + 0xec, 0xf4, 0x8e, 0xac, 0xec, 0xfa, 0xa2, 0xa3, 0xcd, 0x49, 0x54, 0xfd, 0xb7, 0x0a, 0x54, 0xb0, + 0x37, 0x9c, 0xbb, 0x17, 0x14, 0xd2, 0x7b, 0xc1, 0xc7, 0x00, 0x19, 0xc8, 0x78, 0x7e, 0xc2, 0xec, + 0xb8, 0x4d, 0xa7, 0xee, 0xcd, 0x00, 0xa4, 0x19, 0xfd, 0x6b, 0x9f, 0x00, 0x64, 0xa0, 0x4d, 0xec, + 0x17, 0x32, 0xf7, 0x8e, 0x37, 0x73, 0xf6, 0x97, 0x71, 0x24, 0x23, 0xd1, 0x1f, 0xc9, 0x27, 0x0a, + 0x6a, 0xfb, 0x67, 0x2c, 0xe3, 0xa1, 0x92, 0x5a, 0xd8, 0x84, 0x22, 0x72, 0x64, 0xf2, 0x50, 0x8a, + 0x1f, 0x44, 0x83, 0x02, 0xf3, 0x5d, 0xc9, 0xc1, 0xfc, 0xa7, 0xfe, 0x73, 0x05, 0xd6, 0x85, 0x29, + 0x91, 0xad, 0x18, 0x3e, 0xde, 0xc3, 0x8a, 0x4c, 0x10, 0x98, 0x28, 0x48, 0x86, 0x80, 0xa2, 0x2e, + 0x42, 0xb2, 0x0b, 0xc5, 0x90, 0xaf, 0x7d, 0xa1, 0xa5, 0x4e, 0xbd, 0xa2, 0x42, 0x81, 0xbc, 0x0f, + 0x9a, 0x30, 0xc5, 0x2f, 0x42, 0x71, 0x68, 0x7b, 0x7e, 0x8c, 0x97, 0xfc, 0x0a, 0x5d, 0x43, 0x79, + 0x2b, 0x15, 0xeb, 0xdf, 0x81, 0x4d, 0x9c, 0xdf, 0x9c, 0xc6, 0x41, 0x9b, 0xc5, 0xcc, 0x91, 0xde, + 0xdc, 0x58, 0xe0, 0xcd, 0xa1, 0x7a, 0x67, 0x3f, 0xeb, 0x91, 0x3e, 0x84, 0x5a, 0x76, 0x1f, 0x0b, + 0xaf, 0x73, 0x33, 0xda, 0x55, 0xb1, 0xbb, 0xbf, 0x9a, 0x77, 0x3b, 0x13, 0x81, 0x84, 0x0c, 0xf4, + 0xaf, 0x15, 0x58, 0x93, 0xa3, 0xa7, 0x9e, 0xcf, 0xb0, 0xc9, 0x5e, 0x64, 0x7a, 0xe1, 0xc3, 0x34, + 0xb9, 0x9b, 0x84, 0x69, 0xee, 0x36, 0x31, 0x67, 0x71, 0x2f, 0x1b, 0xb1, 0x6b, 0xff, 0x07, 0x45, + 0x81, 0x6b, 0x8a, 0xa1, 0xb2, 0x00, 0x43, 0x75, 0x86, 0xe1, 0x1f, 0x57, 0xa0, 0x26, 0x2e, 0xce, + 0xaf, 0xdd, 0x5b, 0x6d, 0x42, 0xf1, 0xcb, 0x29, 0x0b, 0xcf, 0xb1, 0x03, 0xad, 0x50, 0xf1, 0xc1, + 0x8f, 0x43, 0x67, 0x1a, 0x46, 0x41, 0x28, 0xa9, 0x43, 0x7e, 0x65, 0x8e, 0xc9, 0x6a, 0xee, 0x98, + 0x7c, 0x08, 0x55, 0xa1, 0x61, 0xe1, 0x93, 0x99, 0xb8, 0xac, 0xbe, 0x95, 0xbf, 0xdb, 0xcb, 0x8b, + 0x47, 0x0b, 0xf5, 0xc4, 0x9b, 0x59, 0xaf, 0xdf, 0x33, 0x28, 0x38, 0xa9, 0x64, 0xd6, 0x4a, 0x94, + 0xe6, 0x5b, 0x89, 0x7b, 0xb0, 0x8d, 0xb5, 0xce, 0x5c, 0xcb, 0xc1, 0x3b, 0x96, 0xed, 0x38, 0xd3, + 0xd0, 0x76, 0xce, 0xe5, 0x81, 0xbd, 0x29, 0x47, 0x5b, 0x7c, 0xb0, 0x29, 0xc7, 0xc8, 0x6d, 0xa8, + 0x20, 0x7b, 0x62, 0x38, 0xca, 0xf9, 0x16, 0x28, 0xe1, 0x62, 0x5a, 0x8e, 0x12, 0x56, 0xbe, 0x0b, + 0x55, 0xc9, 0x34, 0x38, 0xa1, 0x82, 0xd8, 0x91, 0x8b, 0x8c, 0x46, 0x21, 0x9a, 0x31, 0xe0, 0x3e, + 0x00, 0xde, 0x21, 0xc5, 0x1c, 0xc0, 0x39, 0xeb, 0x17, 0x28, 0x81, 0x56, 0x4e, 0x53, 0x62, 0xc9, + 0x35, 0x98, 0xb5, 0x7c, 0x83, 0x49, 0x1e, 0x43, 0x6d, 0x62, 0x87, 0x91, 0xe7, 0x9f, 0x59, 0x78, + 0x81, 0xaf, 0x63, 0x2c, 0x77, 0x16, 0xc6, 0xf2, 0x44, 0x28, 0xe2, 0x55, 0xbe, 0x34, 0x30, 0x69, + 0xa7, 0x65, 0xd2, 0xea, 0x64, 0x26, 0x24, 0x1f, 0xc3, 0x55, 0x7b, 0x1a, 0x07, 0x96, 0xeb, 0x45, + 0x4e, 0xf0, 0x9c, 0x85, 0x16, 0xbe, 0x41, 0x89, 0x08, 0x36, 0xd6, 0x30, 0xc6, 0xca, 0x3e, 0xdd, + 0xe6, 0x3a, 0x6d, 0xa9, 0x82, 0x19, 0x8a, 0x51, 0x24, 0xff, 0x0f, 0xf5, 0xa4, 0xed, 0x12, 0xef, + 0x5a, 0x1a, 0x46, 0x70, 0x73, 0x51, 0xf1, 0xd0, 0x9a, 0x54, 0x15, 0x2f, 0x96, 0x0f, 0x40, 0x13, + 0x4b, 0x85, 0x69, 0xae, 0x37, 0xd6, 0x71, 0xf6, 0x95, 0x97, 0x94, 0x02, 0x5d, 0x3b, 0x9d, 0xab, + 0xb6, 0x01, 0x5c, 0x11, 0x36, 0xc4, 0x16, 0x90, 0x17, 0xc4, 0x11, 0xd0, 0x20, 0x18, 0xe5, 0xeb, + 0x39, 0x53, 0x73, 0xe4, 0x41, 0x37, 0x4f, 0x17, 0x51, 0xca, 0x4d, 0xa8, 0x0a, 0xa3, 0x2e, 0x9b, + 0xc4, 0xcf, 0x1a, 0x1b, 0x99, 0x43, 0x07, 0x70, 0xa0, 0xcd, 0xe5, 0xfa, 0x01, 0xc0, 0x2c, 0x51, + 0x49, 0x19, 0x30, 0x55, 0xb5, 0x25, 0x7c, 0xe9, 0xe8, 0xf4, 0x8e, 0xba, 0x86, 0xa6, 0x90, 0x55, + 0x80, 0x13, 0x83, 0x5a, 0xd4, 0x18, 0x0c, 0xbb, 0xa6, 0xa6, 0xea, 0xef, 0x42, 0x35, 0x03, 0x08, + 0xaa, 0x22, 0x24, 0xda, 0x12, 0xa9, 0xc2, 0x0a, 0x35, 0xba, 0xcd, 0xcf, 0xf1, 0x4d, 0xcf, 0x84, + 0xba, 0x40, 0x31, 0x61, 0xac, 0x5b, 0x73, 0xbd, 0xca, 0xe6, 0x22, 0xb0, 0x2f, 0xeb, 0x52, 0xa6, + 0xa0, 0xc9, 0x88, 0x46, 0xc9, 0x91, 0xfd, 0x32, 0xbe, 0x12, 0xf0, 0xe3, 0x4b, 0x3b, 0x15, 0x1f, + 0xe4, 0x23, 0x80, 0x0c, 0x52, 0xe2, 0x9a, 0xff, 0x52, 0xa4, 0x32, 0xaa, 0xfa, 0xa7, 0x50, 0xcd, + 0x2c, 0xbb, 0x70, 0xc5, 0xbd, 0x19, 0x43, 0xf2, 0x04, 0x68, 0xcc, 0x99, 0x4d, 0xdd, 0x4d, 0xde, + 0xab, 0x7f, 0xa3, 0x24, 0xac, 0x26, 0x8d, 0xe6, 0x5f, 0x42, 0xd4, 0x4b, 0x5e, 0x42, 0x6e, 0xcf, + 0x1d, 0xa1, 0x0b, 0x9e, 0x95, 0x33, 0x0a, 0xc8, 0xb5, 0xbc, 0x98, 0xd1, 0x3b, 0x85, 0x8a, 0x8f, + 0x0c, 0x01, 0x16, 0xb2, 0x04, 0xa8, 0xff, 0x4b, 0x81, 0xd5, 0xd4, 0x37, 0xd1, 0x06, 0xde, 0x82, + 0x52, 0x88, 0x7e, 0xca, 0x36, 0x70, 0x0e, 0x3d, 0xb1, 0x07, 0x2a, 0x75, 0xc8, 0x0d, 0xa8, 0xe7, + 0x78, 0x0c, 0x61, 0x28, 0xd0, 0x5a, 0x96, 0xbe, 0x32, 0x9d, 0x65, 0xe1, 0xdb, 0xf4, 0xf0, 0x2f, + 0x63, 0xeb, 0x0f, 0xa1, 0x96, 0x14, 0x21, 0xfa, 0x57, 0x44, 0xff, 0x36, 0x16, 0xc4, 0x9f, 0x56, + 0x4f, 0x67, 0x1f, 0x1f, 0x94, 0xca, 0xff, 0x5c, 0xd1, 0x7e, 0xd9, 0x7b, 0x50, 0xfe, 0x81, 0xfc, + 0xbf, 0xf6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x12, 0xcb, 0x31, 0xc6, 0x1d, 0x00, 0x00, } diff --git a/vendor/google.golang.org/appengine/internal/search/search.proto b/vendor/google.golang.org/appengine/internal/search/search.proto index 219f4c30ac..61df6508b1 100644 --- a/vendor/google.golang.org/appengine/internal/search/search.proto +++ b/vendor/google.golang.org/appengine/internal/search/search.proto @@ -99,6 +99,12 @@ message Document { optional string language = 2 [default = "en"]; repeated Field field = 3; optional int32 order_id = 4; + optional OrderIdSource order_id_source = 6 [default = SUPPLIED]; + + enum OrderIdSource { + DEFAULTED = 0; + SUPPLIED = 1; + } enum Storage { DISK = 0; diff --git a/vendor/google.golang.org/appengine/log/log.go b/vendor/google.golang.org/appengine/log/log.go index b54fe47bdb..731ad8c367 100644 --- a/vendor/google.golang.org/appengine/log/log.go +++ b/vendor/google.golang.org/appengine/log/log.go @@ -3,8 +3,8 @@ // license that can be found in the LICENSE file. /* -Package log provides the means of querying an application's logs from -within an App Engine application. +Package log provides the means of writing and querying an application's logs +from within an App Engine application. Example: c := appengine.NewContext(r) diff --git a/vendor/google.golang.org/appengine/mail/mail.go b/vendor/google.golang.org/appengine/mail/mail.go index f7955aaf18..1ce1e87067 100644 --- a/vendor/google.golang.org/appengine/mail/mail.go +++ b/vendor/google.golang.org/appengine/mail/mail.go @@ -51,7 +51,7 @@ type Message struct { Attachments []Attachment // Extra mail headers. - // See https://cloud.google.com/appengine/docs/go/mail/ + // See https://cloud.google.com/appengine/docs/standard/go/mail/ // for permissible headers. Headers mail.Header } diff --git a/vendor/google.golang.org/appengine/memcache/memcache_test.go b/vendor/google.golang.org/appengine/memcache/memcache_test.go index 5f939546be..1dc7da471f 100644 --- a/vendor/google.golang.org/appengine/memcache/memcache_test.go +++ b/vendor/google.golang.org/appengine/memcache/memcache_test.go @@ -213,33 +213,37 @@ func TestSetResponseError(t *testing.T) { } func TestNamespaceResetting(t *testing.T) { - var nsField *string - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { - nsField = req.NameSpace + namec := make(chan *string, 1) + c0 := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { + namec <- req.NameSpace return errRPC }) - // Check that wrapping c in a namespace twice works correctly. - nc, err := appengine.Namespace(c, "A") + // Check that wrapping c0 in a namespace twice works correctly. + c1, err := appengine.Namespace(c0, "A") if err != nil { t.Fatalf("appengine.Namespace: %v", err) } - c0, err := appengine.Namespace(nc, "") // should act as the original context + c2, err := appengine.Namespace(c1, "") // should act as the original context if err != nil { t.Fatalf("appengine.Namespace: %v", err) } - Get(c, "key") - if nsField != nil { - t.Fatalf("Get with c yielded %q", *nsField) + Get(c0, "key") + if ns := <-namec; ns != nil { + t.Errorf(`Get with c0: ns = %q, want nil`, *ns) } - Get(nc, "key") - if nsField == nil || *nsField != "A" { - t.Fatalf("Get with nc yielded %v", nsField) + + Get(c1, "key") + if ns := <-namec; ns == nil { + t.Error(`Get with c1: ns = nil, want "A"`) + } else if *ns != "A" { + t.Errorf(`Get with c1: ns = %q, want "A"`, *ns) } - Get(c0, "key") - if nsField != nil && *nsField != "" { - t.Fatalf("Get with c0 yielded %q", *nsField) + + Get(c2, "key") + if ns := <-namec; ns != nil { + t.Errorf(`Get with c2: ns = %q, want nil`, *ns) } } diff --git a/vendor/google.golang.org/appengine/namespace_test.go b/vendor/google.golang.org/appengine/namespace_test.go index dba45a30a5..847f640bd0 100644 --- a/vendor/google.golang.org/appengine/namespace_test.go +++ b/vendor/google.golang.org/appengine/namespace_test.go @@ -5,15 +5,9 @@ package appengine import ( - "strings" "testing" - "github.com/golang/protobuf/proto" "golang.org/x/net/context" - - "google.golang.org/appengine/internal" - "google.golang.org/appengine/internal/aetesting" - basepb "google.golang.org/appengine/internal/base" ) func TestNamespaceValidity(t *testing.T) { @@ -43,49 +37,3 @@ func TestNamespaceValidity(t *testing.T) { } } } - -func TestNamespaceApplication(t *testing.T) { - internal.NamespaceMods["srv"] = func(m proto.Message, namespace string) { - sm := m.(*basepb.StringProto) - if strings.Contains(sm.GetValue(), "-") { - // be idempotent - return - } - sm.Value = proto.String(sm.GetValue() + "-" + namespace) - } - ctx := aetesting.FakeSingleContext(t, "srv", "mth", func(in, out *basepb.StringProto) error { - out.Value = proto.String(in.GetValue()) - return nil - }) - call := func(ctx context.Context, in string) (out string, ok bool) { - inm := &basepb.StringProto{Value: &in} - outm := &basepb.StringProto{} - if err := internal.Call(ctx, "srv", "mth", inm, outm); err != nil { - t.Errorf("RPC(in=%q) failed: %v", in, err) - return "", false - } - return outm.GetValue(), true - } - - // Check without a namespace. - got, ok := call(ctx, "foo") - if !ok { - t.FailNow() - } - if got != "foo" { - t.Errorf("Un-namespaced RPC returned %q, want %q", got, "foo") - } - - // Now check by applying a namespace. - nsCtx, err := Namespace(ctx, "myns") - if err != nil { - t.Fatal(err) - } - got, ok = call(nsCtx, "bar") - if !ok { - t.FailNow() - } - if got != "bar-myns" { - t.Errorf("Namespaced RPC returned %q, want %q", got, "bar-myns") - } -} diff --git a/vendor/google.golang.org/appengine/remote_api/client.go b/vendor/google.golang.org/appengine/remote_api/client.go index dbe219dbb6..ce8aab562f 100644 --- a/vendor/google.golang.org/appengine/remote_api/client.go +++ b/vendor/google.golang.org/appengine/remote_api/client.go @@ -27,16 +27,24 @@ import ( pb "google.golang.org/appengine/internal/remote_api" ) -// NewRemoteContext returns a context that gives access to the production -// APIs for the application at the given host. All communication will be -// performed over SSL unless the host is localhost. -func NewRemoteContext(host string, client *http.Client) (context.Context, error) { +// Client is a connection to the production APIs for an application. +type Client struct { + hc *http.Client + url string + appID string +} + +// NewClient returns a client for the given host. All communication will +// be performed over SSL unless the host is localhost. +func NewClient(host string, client *http.Client) (*Client, error) { // Add an appcfg header to outgoing requests. + wrapClient := new(http.Client) + *wrapClient = *client t := client.Transport if t == nil { t = http.DefaultTransport } - client.Transport = &headerAddingRoundTripper{t} + wrapClient.Transport = &headerAddingRoundTripper{t} url := url.URL{ Scheme: "https", @@ -47,23 +55,35 @@ func NewRemoteContext(host string, client *http.Client) (context.Context, error) url.Scheme = "http" } u := url.String() - appID, err := getAppID(client, u) + appID, err := getAppID(wrapClient, u) if err != nil { return nil, fmt.Errorf("unable to contact server: %v", err) } - rc := &remoteContext{ - client: client, - url: u, - } - ctx := internal.WithCallOverride(context.Background(), rc.call) - ctx = internal.WithLogOverride(ctx, rc.logf) - ctx = internal.WithAppIDOverride(ctx, appID) - return ctx, nil + return &Client{ + hc: wrapClient, + url: u, + appID: appID, + }, nil } -type remoteContext struct { - client *http.Client - url string +// NewContext returns a copy of parent that will cause App Engine API +// calls to be sent to the client's remote host. +func (c *Client) NewContext(parent context.Context) context.Context { + ctx := internal.WithCallOverride(parent, c.call) + ctx = internal.WithLogOverride(ctx, c.logf) + ctx = internal.WithAppIDOverride(ctx, c.appID) + return ctx +} + +// NewRemoteContext returns a context that gives access to the production +// APIs for the application at the given host. All communication will be +// performed over SSL unless the host is localhost. +func NewRemoteContext(host string, client *http.Client) (context.Context, error) { + c, err := NewClient(host, client) + if err != nil { + return nil, err + } + return c.NewContext(context.Background()), nil } var logLevels = map[int64]string{ @@ -74,11 +94,11 @@ var logLevels = map[int64]string{ 4: "CRITICAL", } -func (c *remoteContext) logf(level int64, format string, args ...interface{}) { +func (c *Client) logf(level int64, format string, args ...interface{}) { log.Printf(logLevels[level]+": "+format, args...) } -func (c *remoteContext) call(ctx context.Context, service, method string, in, out proto.Message) error { +func (c *Client) call(ctx context.Context, service, method string, in, out proto.Message) error { req, err := proto.Marshal(in) if err != nil { return fmt.Errorf("error marshalling request: %v", err) @@ -97,7 +117,7 @@ func (c *remoteContext) call(ctx context.Context, service, method string, in, ou } // TODO(djd): Respect ctx.Deadline()? - resp, err := c.client.Post(c.url, "application/octet-stream", bytes.NewReader(req)) + resp, err := c.hc.Post(c.url, "application/octet-stream", bytes.NewReader(req)) if err != nil { return fmt.Errorf("error sending request: %v", err) } diff --git a/vendor/google.golang.org/appengine/remote_api/client_test.go b/vendor/google.golang.org/appengine/remote_api/client_test.go index 2e892a08f3..7f4bdcf3c8 100644 --- a/vendor/google.golang.org/appengine/remote_api/client_test.go +++ b/vendor/google.golang.org/appengine/remote_api/client_test.go @@ -5,7 +5,12 @@ package remote_api import ( + "log" + "net/http" "testing" + + "golang.org/x/net/context" + "google.golang.org/appengine/datastore" ) func TestAppIDRE(t *testing.T) { @@ -22,3 +27,17 @@ func TestAppIDRE(t *testing.T) { } } } + +func ExampleClient() { + c, err := NewClient("example.appspot.com", http.DefaultClient) + if err != nil { + log.Fatal(err) + } + + ctx := context.Background() // or from a request + ctx = c.NewContext(ctx) + _, err = datastore.Put(ctx, datastore.NewIncompleteKey(ctx, "Foo", nil), struct{ Bar int }{42}) + if err != nil { + log.Fatal(err) + } +} diff --git a/vendor/google.golang.org/appengine/remote_api/remote_api.go b/vendor/google.golang.org/appengine/remote_api/remote_api.go index 68cd7d9bfb..3d2880d64d 100644 --- a/vendor/google.golang.org/appengine/remote_api/remote_api.go +++ b/vendor/google.golang.org/appengine/remote_api/remote_api.go @@ -39,7 +39,7 @@ func handle(w http.ResponseWriter, req *http.Request) { ) } - if u == nil || !u.Admin { + if !appengine.IsDevAppServer() && (u == nil || !u.Admin) { w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.WriteHeader(http.StatusUnauthorized) io.WriteString(w, "You must be logged in as an administrator to access this.\n") diff --git a/vendor/google.golang.org/appengine/runtime/runtime.go b/vendor/google.golang.org/appengine/runtime/runtime.go index ece976553d..fa6c12b79c 100644 --- a/vendor/google.golang.org/appengine/runtime/runtime.go +++ b/vendor/google.golang.org/appengine/runtime/runtime.go @@ -6,7 +6,7 @@ Package runtime exposes information about the resource usage of the application. It also provides a way to run code in a new background context of a module. -This package does not work on Managed VMs. +This package does not work on App Engine "flexible environment". */ package runtime // import "google.golang.org/appengine/runtime" @@ -132,7 +132,7 @@ func handleBackground(w http.ResponseWriter, req *http.Request) { // RunInBackground runs f in a background goroutine in this process. // f is provided a context that may outlast the context provided to RunInBackground. -// This is only valid to invoke from a manually scaled module. +// This is only valid to invoke from a service set to basic or manual scaling. func RunInBackground(c context.Context, f func(c context.Context)) error { req := &pb.StartBackgroundRequestRequest{} res := &pb.StartBackgroundRequestResponse{} diff --git a/vendor/google.golang.org/appengine/search/doc.go b/vendor/google.golang.org/appengine/search/doc.go index 2392e7e3a9..5208f18f69 100644 --- a/vendor/google.golang.org/appengine/search/doc.go +++ b/vendor/google.golang.org/appengine/search/doc.go @@ -79,7 +79,7 @@ result. Next will return Done when the iterator is exhausted. Search takes a string query to determine which documents to return. The query can be simple, such as a single word to match, or complex. The query language is described at -https://cloud.google.com/appengine/docs/go/search/query_strings +https://cloud.google.com/appengine/docs/standard/go/search/query_strings Search also takes an optional SearchOptions struct which gives much more control over how results are calculated and returned. @@ -122,15 +122,17 @@ By default, for struct pointers, all of the struct fields are used as document fields, and the field name used is the same as on the struct (and hence must start with an upper case letter). Struct fields may have a `search:"name,options"` tag. The name must start with a letter and be -composed only of word characters. If options is "facet" then the struct -field will be used as a document facet. If options is "" then the comma -may be omitted. There are no other recognized options. +composed only of word characters. A "-" tag name means that the field will be +ignored. If options is "facet" then the struct field will be used as a +document facet. If options is "" then the comma may be omitted. There are no +other recognized options. Example code: // A and B are renamed to a and b. // A, C and I are facets. // D's tag is equivalent to having no tag at all (E). + // F and G are ignored entirely by the search package. // I has tag information for both the search and json packages. type TaggedStruct struct { A float64 `search:"a,facet"` @@ -138,6 +140,8 @@ Example code: C float64 `search:",facet"` D float64 `search:""` E float64 + F float64 `search:"-"` + G float64 `search:"-,facet"` I float64 `search:",facet" json:"i"` } diff --git a/vendor/google.golang.org/appengine/search/search.go b/vendor/google.golang.org/appengine/search/search.go index cbba874bb7..35a567d62e 100644 --- a/vendor/google.golang.org/appengine/search/search.go +++ b/vendor/google.golang.org/appengine/search/search.go @@ -29,6 +29,8 @@ import ( pb "google.golang.org/appengine/internal/search" ) +const maxDocumentsPerPutDelete = 200 + var ( // ErrInvalidDocumentType is returned when methods like Put, Get or Next // are passed a dst or src argument of invalid type. @@ -36,6 +38,10 @@ var ( // ErrNoSuchDocument is returned when no document was found for a given ID. ErrNoSuchDocument = errors.New("search: no such document") + + // ErrTooManyDocuments is returned when the user passes too many documents to + // PutMulti or DeleteMulti. + ErrTooManyDocuments = fmt.Errorf("search: too many documents given to put or delete (max is %d)", maxDocumentsPerPutDelete) ) // Atom is a document field whose contents are indexed as a single indivisible @@ -120,36 +126,78 @@ func Open(name string) (*Index, error) { // src must be a non-nil struct pointer or implement the FieldLoadSaver // interface. func (x *Index) Put(c context.Context, id string, src interface{}) (string, error) { - d, err := saveDoc(src) + ids, err := x.PutMulti(c, []string{id}, []interface{}{src}) if err != nil { return "", err } - if id != "" { - if !validIndexNameOrDocID(id) { - return "", fmt.Errorf("search: invalid ID %q", id) + return ids[0], nil +} + +// PutMulti is like Put, but is more efficient for adding multiple documents to +// the index at once. +// +// Up to 200 documents can be added at once. ErrTooManyDocuments is returned if +// you try to add more. +// +// ids can either be an empty slice (which means new IDs will be allocated for +// each of the documents added) or a slice the same size as srcs. +// +// The error may be an instance of appengine.MultiError, in which case it will +// be the same size as srcs and the individual errors inside will correspond +// with the items in srcs. +func (x *Index) PutMulti(c context.Context, ids []string, srcs []interface{}) ([]string, error) { + if len(ids) != 0 && len(srcs) != len(ids) { + return nil, fmt.Errorf("search: PutMulti expects ids and srcs slices of the same length") + } + if len(srcs) > maxDocumentsPerPutDelete { + return nil, ErrTooManyDocuments + } + + docs := make([]*pb.Document, len(srcs)) + for i, s := range srcs { + var err error + docs[i], err = saveDoc(s) + if err != nil { + return nil, err + } + + if len(ids) != 0 && ids[i] != "" { + if !validIndexNameOrDocID(ids[i]) { + return nil, fmt.Errorf("search: invalid ID %q", ids[i]) + } + docs[i].Id = proto.String(ids[i]) } - d.Id = proto.String(id) } + + // spec is modified by Call when applying the current Namespace, so copy it to + // avoid retaining the namespace beyond the scope of the Call. + spec := x.spec req := &pb.IndexDocumentRequest{ Params: &pb.IndexDocumentParams{ - Document: []*pb.Document{d}, - IndexSpec: &x.spec, + Document: docs, + IndexSpec: &spec, }, } res := &pb.IndexDocumentResponse{} if err := internal.Call(c, "search", "IndexDocument", req, res); err != nil { - return "", err + return nil, err } - if len(res.Status) > 0 { - if s := res.Status[0]; s.GetCode() != pb.SearchServiceError_OK { - return "", fmt.Errorf("search: %s: %s", s.GetCode(), s.GetErrorDetail()) + multiErr, hasErr := make(appengine.MultiError, len(res.Status)), false + for i, s := range res.Status { + if s.GetCode() != pb.SearchServiceError_OK { + multiErr[i] = fmt.Errorf("search: %s: %s", s.GetCode(), s.GetErrorDetail()) + hasErr = true } } - if len(res.Status) != 1 || len(res.DocId) != 1 { - return "", fmt.Errorf("search: internal error: wrong number of results (%d Statuses, %d DocIDs)", - len(res.Status), len(res.DocId)) + if hasErr { + return res.DocId, multiErr } - return res.DocId[0], nil + + if len(res.Status) != len(docs) || len(res.DocId) != len(docs) { + return nil, fmt.Errorf("search: internal error: wrong number of results (%d Statuses, %d DocIDs, expected %d)", + len(res.Status), len(res.DocId), len(docs)) + } + return res.DocId, nil } // Get loads the document with the given ID into dst. @@ -191,9 +239,22 @@ func (x *Index) Get(c context.Context, id string, dst interface{}) error { // Delete deletes a document from the index. func (x *Index) Delete(c context.Context, id string) error { + return x.DeleteMulti(c, []string{id}) +} + +// DeleteMulti deletes multiple documents from the index. +// +// The returned error may be an instance of appengine.MultiError, in which case +// it will be the same size as srcs and the individual errors inside will +// correspond with the items in srcs. +func (x *Index) DeleteMulti(c context.Context, ids []string) error { + if len(ids) > maxDocumentsPerPutDelete { + return ErrTooManyDocuments + } + req := &pb.DeleteDocumentRequest{ Params: &pb.DeleteDocumentParams{ - DocId: []string{id}, + DocId: ids, IndexSpec: &x.spec, }, } @@ -201,11 +262,19 @@ func (x *Index) Delete(c context.Context, id string) error { if err := internal.Call(c, "search", "DeleteDocument", req, res); err != nil { return err } - if len(res.Status) != 1 { - return fmt.Errorf("search: internal error: wrong number of results (%d)", len(res.Status)) + if len(res.Status) != len(ids) { + return fmt.Errorf("search: internal error: wrong number of results (%d, expected %d)", + len(res.Status), len(ids)) } - if s := res.Status[0]; s.GetCode() != pb.SearchServiceError_OK { - return fmt.Errorf("search: %s: %s", s.GetCode(), s.GetErrorDetail()) + multiErr, hasErr := make(appengine.MultiError, len(ids)), false + for i, s := range res.Status { + if s.GetCode() != pb.SearchServiceError_OK { + multiErr[i] = fmt.Errorf("search: %s: %s", s.GetCode(), s.GetErrorDetail()) + hasErr = true + } + } + if hasErr { + return multiErr } return nil } @@ -301,6 +370,7 @@ func (x *Index) Search(c context.Context, query string, opts *SearchOptions) *It t.refinements = opts.Refinements t.facetOpts = opts.Facets t.searchOffset = opts.Offset + t.countAccuracy = opts.CountAccuracy } return t } @@ -328,6 +398,9 @@ func moreSearch(t *Iterator) error { req.Params.Offset = proto.Int32(int32(t.searchOffset)) t.searchOffset = 0 } + if t.countAccuracy > 0 { + req.Params.MatchedCountAccuracy = proto.Int32(int32(t.countAccuracy)) + } if t.idsOnly { req.Params.KeysOnly = &t.idsOnly } @@ -413,6 +486,10 @@ type SearchOptions struct { // Offset specifies the number of documents to skip over before returning results. // When specified, Cursor must be nil. Offset int + + // CountAccuracy specifies the maximum result count that can be expected to + // be accurate. If zero, the count accuracy defaults to 20. + CountAccuracy int } // Cursor represents an iterator's position. @@ -427,7 +504,7 @@ type FieldExpression struct { Name string // Expr is evaluated to provide a custom content snippet for each document. - // See https://cloud.google.com/appengine/docs/go/search/options for + // See https://cloud.google.com/appengine/docs/standard/go/search/options for // the supported expression syntax. Expr string } @@ -574,7 +651,7 @@ type SortOptions struct { // SortExpression defines a single dimension for sorting a document. type SortExpression struct { // Expr is evaluated to provide a sorting value for each document. - // See https://cloud.google.com/appengine/docs/go/search/options for + // See https://cloud.google.com/appengine/docs/standard/go/search/options for // the supported expression syntax. Expr string @@ -725,9 +802,10 @@ type Iterator struct { more func(*Iterator) error - count int - limit int // items left to return; 0 for unlimited. - idsOnly bool + count int + countAccuracy int + limit int // items left to return; 0 for unlimited. + idsOnly bool } // errIter returns an iterator that only returns the given error. @@ -840,7 +918,7 @@ func saveDoc(src interface{}) (*pb.Document, error) { case FieldLoadSaver: fields, meta, err = x.Save() default: - fields, err = SaveStruct(src) + fields, meta, err = saveStructWithMeta(src) } if err != nil { return nil, err @@ -851,8 +929,9 @@ func saveDoc(src interface{}) (*pb.Document, error) { return nil, err } d := &pb.Document{ - Field: fieldsProto, - OrderId: proto.Int32(int32(time.Since(orderIDEpoch).Seconds())), + Field: fieldsProto, + OrderId: proto.Int32(int32(time.Since(orderIDEpoch).Seconds())), + OrderIdSource: pb.Document_DEFAULTED.Enum(), } if meta != nil { if meta.Rank != 0 { @@ -860,6 +939,7 @@ func saveDoc(src interface{}) (*pb.Document, error) { return nil, fmt.Errorf("search: invalid rank %d, must be [0, 2^31)", meta.Rank) } *d.OrderId = int32(meta.Rank) + d.OrderIdSource = pb.Document_SUPPLIED.Enum() } if len(meta.Facets) > 0 { facets, err := facetsToProto(meta.Facets) diff --git a/vendor/google.golang.org/appengine/search/search_test.go b/vendor/google.golang.org/appengine/search/search_test.go index fd00654996..ef1409c195 100644 --- a/vendor/google.golang.org/appengine/search/search_test.go +++ b/vendor/google.golang.org/appengine/search/search_test.go @@ -115,6 +115,16 @@ func newStringValueField(name, value string, valueType pb.FieldValue_ContentType } } +func newFacet(name, value string, valueType pb.FacetValue_ContentType) *pb.Facet { + return &pb.Facet{ + Name: proto.String(name), + Value: &pb.FacetValue{ + StringValue: proto.String(value), + Type: valueType.Enum(), + }, + } +} + func TestValidIndexNameOrDocID(t *testing.T) { testCases := []struct { s string @@ -159,6 +169,17 @@ func TestSaveDoc(t *testing.T) { } } +func TestSaveDocUsesDefaultedRankIfNotSpecified(t *testing.T) { + got, err := saveDoc(&searchDoc) + if err != nil { + t.Fatalf("saveDoc: %v", err) + } + orderIdSource := got.GetOrderIdSource() + if orderIdSource != pb.Document_DEFAULTED { + t.Errorf("OrderIdSource: got %v, wanted DEFAULTED", orderIdSource) + } +} + func TestLoadFieldList(t *testing.T) { var got FieldList want := searchFieldsWithLang @@ -221,8 +242,9 @@ func TestLoadMeta(t *testing.T) { Fields: searchFieldsWithLang, } doc := &pb.Document{ - Field: protoFields, - OrderId: proto.Int32(42), + Field: protoFields, + OrderId: proto.Int32(42), + OrderIdSource: pb.Document_SUPPLIED.Enum(), } if err := loadDoc(&got, doc, nil); err != nil { t.Fatalf("loadDoc: %v", err) @@ -241,14 +263,92 @@ func TestSaveMeta(t *testing.T) { t.Fatalf("saveDoc: %v", err) } want := &pb.Document{ - Field: protoFields, - OrderId: proto.Int32(42), + Field: protoFields, + OrderId: proto.Int32(42), + OrderIdSource: pb.Document_SUPPLIED.Enum(), + } + if !proto.Equal(got, want) { + t.Errorf("\ngot %v\nwant %v", got, want) + } +} + +func TestSaveMetaWithDefaultedRank(t *testing.T) { + metaWithoutRank := &DocumentMetadata{ + Rank: 0, + } + got, err := saveDoc(&FieldListWithMeta{ + Meta: metaWithoutRank, + Fields: searchFields, + }) + if err != nil { + t.Fatalf("saveDoc: %v", err) + } + want := &pb.Document{ + Field: protoFields, + OrderId: got.OrderId, + OrderIdSource: pb.Document_DEFAULTED.Enum(), + } + if !proto.Equal(got, want) { + t.Errorf("\ngot %v\nwant %v", got, want) + } +} + +func TestSaveWithoutMetaUsesDefaultedRank(t *testing.T) { + got, err := saveDoc(&FieldListWithMeta{ + Fields: searchFields, + }) + if err != nil { + t.Fatalf("saveDoc: %v", err) + } + want := &pb.Document{ + Field: protoFields, + OrderId: got.OrderId, + OrderIdSource: pb.Document_DEFAULTED.Enum(), } if !proto.Equal(got, want) { t.Errorf("\ngot %v\nwant %v", got, want) } } +func TestLoadSaveWithStruct(t *testing.T) { + type gopher struct { + Name string + Info string `search:"about"` + Legs float64 `search:",facet"` + Fuzz Atom `search:"Fur,facet"` + } + + doc := gopher{"Gopher", "Likes slide rules.", 4, Atom("furry")} + pb := &pb.Document{ + Field: []*pb.Field{ + newStringValueField("Name", "Gopher", pb.FieldValue_TEXT), + newStringValueField("about", "Likes slide rules.", pb.FieldValue_TEXT), + }, + Facet: []*pb.Facet{ + newFacet("Legs", "4e+00", pb.FacetValue_NUMBER), + newFacet("Fur", "furry", pb.FacetValue_ATOM), + }, + } + + var gotDoc gopher + if err := loadDoc(&gotDoc, pb, nil); err != nil { + t.Fatalf("loadDoc: %v", err) + } + if !reflect.DeepEqual(gotDoc, doc) { + t.Errorf("loading doc\ngot %v\nwant %v", gotDoc, doc) + } + + gotPB, err := saveDoc(&doc) + if err != nil { + t.Fatalf("saveDoc: %v", err) + } + gotPB.OrderId = nil // Don't test: it's time dependent. + gotPB.OrderIdSource = nil // Don't test because it's contingent on OrderId. + if !proto.Equal(gotPB, pb) { + t.Errorf("saving doc\ngot %v\nwant %v", gotPB, pb) + } +} + func TestValidFieldNames(t *testing.T) { testCases := []struct { name string @@ -438,7 +538,7 @@ func TestPut(t *testing.T) { expectedIn := &pb.IndexDocumentRequest{ Params: &pb.IndexDocumentParams{ Document: []*pb.Document{ - {Field: protoFields, OrderId: proto.Int32(42)}, + {Field: protoFields, OrderId: proto.Int32(42), OrderIdSource: pb.Document_SUPPLIED.Enum()}, }, IndexSpec: &pb.IndexSpec{ Name: proto.String("Doc"), @@ -525,6 +625,101 @@ func TestPutBadStatus(t *testing.T) { } } +func TestPutMultiNilIDSlice(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { + if len(in.Params.GetDocument()) < 1 { + return fmt.Errorf("got %v, want at least 1 document", in) + } + got, want := in.Params.Document[0].GetOrderId(), int32(time.Since(orderIDEpoch).Seconds()) + if d := got - want; -5 > d || d > 5 { + return fmt.Errorf("got OrderId %d, want near %d", got, want) + } + *out = pb.IndexDocumentResponse{ + Status: []*pb.RequestStatus{ + {Code: pb.SearchServiceError_OK.Enum()}, + }, + DocId: []string{ + "doc_id", + }, + } + return nil + }) + + if _, err := index.PutMulti(c, nil, []interface{}{&searchFields}); err != nil { + t.Fatal(err) + } +} + +func TestPutMultiError(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { + *out = pb.IndexDocumentResponse{ + Status: []*pb.RequestStatus{ + {Code: pb.SearchServiceError_OK.Enum()}, + {Code: pb.SearchServiceError_PERMISSION_DENIED.Enum(), ErrorDetail: proto.String("foo")}, + }, + DocId: []string{ + "id1", + "", + }, + } + return nil + }) + + switch _, err := index.PutMulti(c, nil, []interface{}{&searchFields, &searchFields}); { + case err == nil: + t.Fatalf("got nil, want error") + case err.(appengine.MultiError)[0] != nil: + t.Fatalf("got %v, want nil MultiError[0]", err.(appengine.MultiError)[0]) + case err.(appengine.MultiError)[1] == nil: + t.Fatalf("got nil, want not-nill MultiError[1]") + } +} + +func TestPutMultiWrongNumberOfIDs(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { + return nil + }) + + if _, err := index.PutMulti(c, []string{"a"}, []interface{}{&searchFields, &searchFields}); err == nil { + t.Fatal("got success, want error") + } +} + +func TestPutMultiTooManyDocs(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { + return nil + }) + + srcs := make([]interface{}, 201) + for i, _ := range srcs { + srcs[i] = &searchFields + } + + if _, err := index.PutMulti(c, nil, srcs); err != ErrTooManyDocuments { + t.Fatalf("got %v, want ErrTooManyDocuments", err) + } +} + func TestSortOptions(t *testing.T) { index, err := Open("Doc") if err != nil { @@ -673,12 +868,13 @@ func TestBasicSearchOpts(t *testing.T) { noErr := errors.New("") // Sentinel err to return to prevent sending request. testCases := []struct { - desc string - facetOpts []FacetSearchOption - cursor Cursor - offset int - want *pb.SearchParams - wantErr string + desc string + facetOpts []FacetSearchOption + cursor Cursor + offset int + countAccuracy int + want *pb.SearchParams + wantErr string }{ { desc: "No options", @@ -790,6 +986,13 @@ func TestBasicSearchOpts(t *testing.T) { offset: 121, wantErr: "at most one of Cursor and Offset may be specified", }, + { + desc: "Count accuracy", + countAccuracy: 100, + want: &pb.SearchParams{ + MatchedCountAccuracy: proto.Int32(100), + }, + }, } for _, tt := range testCases { @@ -810,9 +1013,10 @@ func TestBasicSearchOpts(t *testing.T) { }) it := index.Search(c, "gopher", &SearchOptions{ - Facets: tt.facetOpts, - Cursor: tt.cursor, - Offset: tt.offset, + Facets: tt.facetOpts, + Cursor: tt.cursor, + Offset: tt.offset, + CountAccuracy: tt.countAccuracy, }) _, err := it.Next(nil) if err == nil { @@ -904,3 +1108,163 @@ func TestFacetRefinements(t *testing.T) { } } } + +func TestNamespaceResetting(t *testing.T) { + namec := make(chan *string, 1) + c0 := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(req *pb.IndexDocumentRequest, res *pb.IndexDocumentResponse) error { + namec <- req.Params.IndexSpec.Namespace + return fmt.Errorf("RPC error") + }) + + // Check that wrapping c0 in a namespace twice works correctly. + c1, err := appengine.Namespace(c0, "A") + if err != nil { + t.Fatalf("appengine.Namespace: %v", err) + } + c2, err := appengine.Namespace(c1, "") // should act as the original context + if err != nil { + t.Fatalf("appengine.Namespace: %v", err) + } + + i := (&Index{}) + + i.Put(c0, "something", &searchDoc) + if ns := <-namec; ns != nil { + t.Errorf(`Put with c0: ns = %q, want nil`, *ns) + } + + i.Put(c1, "something", &searchDoc) + if ns := <-namec; ns == nil { + t.Error(`Put with c1: ns = nil, want "A"`) + } else if *ns != "A" { + t.Errorf(`Put with c1: ns = %q, want "A"`, *ns) + } + + i.Put(c2, "something", &searchDoc) + if ns := <-namec; ns != nil { + t.Errorf(`Put with c2: ns = %q, want nil`, *ns) + } +} + +func TestDelete(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "DeleteDocument", func(in *pb.DeleteDocumentRequest, out *pb.DeleteDocumentResponse) error { + expectedIn := &pb.DeleteDocumentRequest{ + Params: &pb.DeleteDocumentParams{ + DocId: []string{"id"}, + IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")}, + }, + } + if !proto.Equal(in, expectedIn) { + return fmt.Errorf("unsupported argument:\ngot %v\nwant %v", in, expectedIn) + } + *out = pb.DeleteDocumentResponse{ + Status: []*pb.RequestStatus{ + {Code: pb.SearchServiceError_OK.Enum()}, + }, + } + return nil + }) + + if err := index.Delete(c, "id"); err != nil { + t.Fatal(err) + } +} + +func TestDeleteMulti(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "DeleteDocument", func(in *pb.DeleteDocumentRequest, out *pb.DeleteDocumentResponse) error { + expectedIn := &pb.DeleteDocumentRequest{ + Params: &pb.DeleteDocumentParams{ + DocId: []string{"id1", "id2"}, + IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")}, + }, + } + if !proto.Equal(in, expectedIn) { + return fmt.Errorf("unsupported argument:\ngot %v\nwant %v", in, expectedIn) + } + *out = pb.DeleteDocumentResponse{ + Status: []*pb.RequestStatus{ + {Code: pb.SearchServiceError_OK.Enum()}, + {Code: pb.SearchServiceError_OK.Enum()}, + }, + } + return nil + }) + + if err := index.DeleteMulti(c, []string{"id1", "id2"}); err != nil { + t.Fatal(err) + } +} + +func TestDeleteWrongNumberOfResults(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "DeleteDocument", func(in *pb.DeleteDocumentRequest, out *pb.DeleteDocumentResponse) error { + expectedIn := &pb.DeleteDocumentRequest{ + Params: &pb.DeleteDocumentParams{ + DocId: []string{"id1", "id2"}, + IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")}, + }, + } + if !proto.Equal(in, expectedIn) { + return fmt.Errorf("unsupported argument:\ngot %v\nwant %v", in, expectedIn) + } + *out = pb.DeleteDocumentResponse{ + Status: []*pb.RequestStatus{ + {Code: pb.SearchServiceError_OK.Enum()}, + }, + } + return nil + }) + + if err := index.DeleteMulti(c, []string{"id1", "id2"}); err == nil { + t.Fatalf("got nil, want error") + } +} + +func TestDeleteMultiError(t *testing.T) { + index, err := Open("Doc") + if err != nil { + t.Fatalf("err from Open: %v", err) + } + + c := aetesting.FakeSingleContext(t, "search", "DeleteDocument", func(in *pb.DeleteDocumentRequest, out *pb.DeleteDocumentResponse) error { + expectedIn := &pb.DeleteDocumentRequest{ + Params: &pb.DeleteDocumentParams{ + DocId: []string{"id1", "id2"}, + IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")}, + }, + } + if !proto.Equal(in, expectedIn) { + return fmt.Errorf("unsupported argument:\ngot %v\nwant %v", in, expectedIn) + } + *out = pb.DeleteDocumentResponse{ + Status: []*pb.RequestStatus{ + {Code: pb.SearchServiceError_OK.Enum()}, + {Code: pb.SearchServiceError_PERMISSION_DENIED.Enum(), ErrorDetail: proto.String("foo")}, + }, + } + return nil + }) + + switch err := index.DeleteMulti(c, []string{"id1", "id2"}); { + case err == nil: + t.Fatalf("got nil, want error") + case err.(appengine.MultiError)[0] != nil: + t.Fatalf("got %v, want nil MultiError[0]", err.(appengine.MultiError)[0]) + case err.(appengine.MultiError)[1] == nil: + t.Fatalf("got nil, want not-nill MultiError[1]") + } +} diff --git a/vendor/google.golang.org/appengine/search/struct.go b/vendor/google.golang.org/appengine/search/struct.go index 083c97f609..e73d2f2ef5 100644 --- a/vendor/google.golang.org/appengine/search/struct.go +++ b/vendor/google.golang.org/appengine/search/struct.go @@ -51,8 +51,9 @@ type structCodec struct { // structTag holds a structured version of each struct field's parsed tag. type structTag struct { - name string - facet bool + name string + facet bool + ignore bool } var ( @@ -85,14 +86,16 @@ func loadCodec(t reflect.Type) (*structCodec, error) { if i := strings.Index(name, ","); i != -1 { name, opts = name[:i], name[i+1:] } - // TODO(davidday): Support name=="-" as per datastore. - if name == "" { + ignore := false + if name == "-" { + ignore = true + } else if name == "" { name = f.Name } else if !validFieldName(name) { return nil, fmt.Errorf("search: struct tag has invalid field name: %q", name) } facet := opts == "facet" - codec.byIndex = append(codec.byIndex, structTag{name: name, facet: facet}) + codec.byIndex = append(codec.byIndex, structTag{name: name, facet: facet, ignore: ignore}) if facet { codec.facetByName[name] = i } else { @@ -143,7 +146,7 @@ func (s structFLS) Load(fields []Field, meta *DocumentMetadata) error { f.Set(v) } if meta == nil { - return nil + return err } for _, facet := range meta.Facets { i, ok := s.codec.facetByName[facet.Name] @@ -190,6 +193,9 @@ func (s structFLS) Save() ([]Field, *DocumentMetadata, error) { fields := make([]Field, 0, len(s.codec.fieldByName)) var facets []Facet for i, tag := range s.codec.byIndex { + if tag.ignore { + continue + } f := s.v.Field(i) if !f.CanSet() { continue diff --git a/vendor/google.golang.org/appengine/search/struct_test.go b/vendor/google.golang.org/appengine/search/struct_test.go index 45b8ab2037..4e5b5d1b8f 100644 --- a/vendor/google.golang.org/appengine/search/struct_test.go +++ b/vendor/google.golang.org/appengine/search/struct_test.go @@ -57,14 +57,16 @@ func TestLoadingStruct(t *testing.T) { fields: []Field{ {Name: "Meaning", Value: float64(42)}, }, - want: &struct{}{}, + want: &struct{}{}, + wantErr: true, }, { desc: "Ignore unsettable field", fields: []Field{ {Name: "meaning", Value: float64(42)}, }, - want: &struct{ meaning float64 }{}, // field not populated. + want: &struct{ meaning float64 }{}, // field not populated. + wantErr: true, }, { desc: "Error on missing facet", @@ -88,6 +90,30 @@ func TestLoadingStruct(t *testing.T) { }{Atom("yes")}, wantErr: true, }, + { + desc: "Error setting ignored field", + fields: []Field{ + {Name: "Set", Value: "yes"}, + {Name: "Ignored", Value: "no"}, + }, + want: &struct { + Set string + Ignored string `search:"-"` + }{Set: "yes"}, + wantErr: true, + }, + { + desc: "Error setting ignored facet", + meta: &DocumentMetadata{Facets: []Facet{ + {Name: "Set", Value: Atom("yes")}, + {Name: "Ignored", Value: Atom("no")}, + }}, + want: &struct { + Set Atom `search:",facet"` + Ignored Atom `search:"-,facet"` + }{Set: Atom("yes")}, + wantErr: true, + }, } for _, tt := range testCases { @@ -154,6 +180,21 @@ func TestSavingStruct(t *testing.T) { {Name: "Legs", Value: float64(4)}, }, }, + { + desc: "Ignore fields marked -", + doc: &struct { + Name string + Info string `search:"-"` + Legs float64 `search:",facet"` + Fuzz Atom `search:"-,facet"` + }{"Gopher", "Likes slide rules.", 4, Atom("furry")}, + wantFields: []Field{ + {Name: "Name", Value: "Gopher"}, + }, + wantFacets: []Facet{ + {Name: "Legs", Value: float64(4)}, + }, + }, } for _, tt := range testCases { diff --git a/vendor/google.golang.org/appengine/socket/doc.go b/vendor/google.golang.org/appengine/socket/doc.go index 1e23553927..3de46df826 100644 --- a/vendor/google.golang.org/appengine/socket/doc.go +++ b/vendor/google.golang.org/appengine/socket/doc.go @@ -5,6 +5,6 @@ // Package socket provides outbound network sockets. // // This package is only required in the classic App Engine environment. -// Applications running only in the Managed VM hosting environment should +// Applications running only in App Engine "flexible environment" should // use the standard library's net package. package socket diff --git a/vendor/google.golang.org/appengine/socket/socket_vm.go b/vendor/google.golang.org/appengine/socket/socket_vm.go index ed98ac2f08..c804169a1c 100644 --- a/vendor/google.golang.org/appengine/socket/socket_vm.go +++ b/vendor/google.golang.org/appengine/socket/socket_vm.go @@ -53,12 +53,12 @@ type Conn struct { // such as when a connection is created during a warmup request but used while // servicing a user request. func (cn *Conn) SetContext(ctx context.Context) { - // This function is not required on managed VMs. + // This function is not required in App Engine "flexible environment". } // KeepAlive signals that the connection is still in use. // It may be called to prevent the socket being closed due to inactivity. func (cn *Conn) KeepAlive() error { - // This function is not required on managed VMs. + // This function is not required in App Engine "flexible environment". return nil } diff --git a/vendor/google.golang.org/appengine/taskqueue/taskqueue.go b/vendor/google.golang.org/appengine/taskqueue/taskqueue.go index 9b62fac7d9..965c5ab4c4 100644 --- a/vendor/google.golang.org/appengine/taskqueue/taskqueue.go +++ b/vendor/google.golang.org/appengine/taskqueue/taskqueue.go @@ -21,6 +21,7 @@ import ( "fmt" "net/http" "net/url" + "strconv" "time" "github.com/golang/protobuf/proto" @@ -147,6 +148,48 @@ func NewPOSTTask(path string, params url.Values) *Task { } } +// RequestHeaders are the special HTTP request headers available to push task +// HTTP request handlers. These headers are set internally by App Engine. +// See https://cloud.google.com/appengine/docs/standard/go/taskqueue/push/creating-handlers#reading_request_headers +// for a description of the fields. +type RequestHeaders struct { + QueueName string + TaskName string + TaskRetryCount int64 + TaskExecutionCount int64 + TaskETA time.Time + + TaskPreviousResponse int + TaskRetryReason string + FailFast bool +} + +// ParseRequestHeaders parses the special HTTP request headers available to push +// task request handlers. This function silently ignores values of the wrong +// format. +func ParseRequestHeaders(h http.Header) *RequestHeaders { + ret := &RequestHeaders{ + QueueName: h.Get("X-AppEngine-QueueName"), + TaskName: h.Get("X-AppEngine-TaskName"), + } + + ret.TaskRetryCount, _ = strconv.ParseInt(h.Get("X-AppEngine-TaskRetryCount"), 10, 64) + ret.TaskExecutionCount, _ = strconv.ParseInt(h.Get("X-AppEngine-TaskExecutionCount"), 10, 64) + + etaSecs, _ := strconv.ParseInt(h.Get("X-AppEngine-TaskETA"), 10, 64) + if etaSecs != 0 { + ret.TaskETA = time.Unix(etaSecs, 0) + } + + ret.TaskPreviousResponse, _ = strconv.Atoi(h.Get("X-AppEngine-TaskPreviousResponse")) + ret.TaskRetryReason = h.Get("X-AppEngine-TaskRetryReason") + if h.Get("X-AppEngine-FailFast") != "" { + ret.FailFast = true + } + + return ret +} + var ( currentNamespace = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace") defaultNamespace = http.CanonicalHeaderKey("X-AppEngine-Default-Namespace") @@ -321,6 +364,8 @@ func Delete(c context.Context, task *Task, queueName string) error { // DeleteMulti deletes multiple tasks from a named queue. // If a given task could not be deleted, an appengine.MultiError is returned. +// Each task is deleted independently; one may fail to delete while the others +// are sucessfully deleted. func DeleteMulti(c context.Context, tasks []*Task, queueName string) error { taskNames := make([][]byte, len(tasks)) for i, t := range tasks { diff --git a/vendor/google.golang.org/appengine/taskqueue/taskqueue_test.go b/vendor/google.golang.org/appengine/taskqueue/taskqueue_test.go index 0c14015084..d9eec50b70 100644 --- a/vendor/google.golang.org/appengine/taskqueue/taskqueue_test.go +++ b/vendor/google.golang.org/appengine/taskqueue/taskqueue_test.go @@ -7,8 +7,10 @@ package taskqueue import ( "errors" "fmt" + "net/http" "reflect" "testing" + "time" "google.golang.org/appengine" "google.golang.org/appengine/internal" @@ -114,3 +116,58 @@ func TestAddWithEmptyPath(t *testing.T) { t.Fatalf("Add: %v", err) } } + +func TestParseRequestHeaders(t *testing.T) { + tests := []struct { + Header http.Header + Want RequestHeaders + }{ + { + Header: map[string][]string{ + "X-Appengine-Queuename": []string{"foo"}, + "X-Appengine-Taskname": []string{"bar"}, + "X-Appengine-Taskretrycount": []string{"4294967297"}, // 2^32 + 1 + "X-Appengine-Taskexecutioncount": []string{"4294967298"}, // 2^32 + 2 + "X-Appengine-Tasketa": []string{"1500000000"}, + "X-Appengine-Taskpreviousresponse": []string{"404"}, + "X-Appengine-Taskretryreason": []string{"baz"}, + "X-Appengine-Failfast": []string{"yes"}, + }, + Want: RequestHeaders{ + QueueName: "foo", + TaskName: "bar", + TaskRetryCount: 4294967297, + TaskExecutionCount: 4294967298, + TaskETA: time.Date(2017, time.July, 14, 2, 40, 0, 0, time.UTC), + TaskPreviousResponse: 404, + TaskRetryReason: "baz", + FailFast: true, + }, + }, + { + Header: map[string][]string{}, + Want: RequestHeaders{ + QueueName: "", + TaskName: "", + TaskRetryCount: 0, + TaskExecutionCount: 0, + TaskETA: time.Time{}, + TaskPreviousResponse: 0, + TaskRetryReason: "", + FailFast: false, + }, + }, + } + + for idx, test := range tests { + got := *ParseRequestHeaders(test.Header) + if got.TaskETA.UnixNano() != test.Want.TaskETA.UnixNano() { + t.Errorf("%d. ParseRequestHeaders got TaskETA %v, wanted %v", idx, got.TaskETA, test.Want.TaskETA) + } + got.TaskETA = time.Time{} + test.Want.TaskETA = time.Time{} + if !reflect.DeepEqual(got, test.Want) { + t.Errorf("%d. ParseRequestHeaders got %v, wanted %v", idx, got, test.Want) + } + } +} diff --git a/vendor/google.golang.org/appengine/user/user_classic.go b/vendor/google.golang.org/appengine/user/user_classic.go index a747ef365c..81315094c2 100644 --- a/vendor/google.golang.org/appengine/user/user_classic.go +++ b/vendor/google.golang.org/appengine/user/user_classic.go @@ -15,7 +15,11 @@ import ( ) func Current(ctx context.Context) *User { - u := user.Current(internal.ClassicContextFromContext(ctx)) + c, err := internal.ClassicContextFromContext(ctx) + if err != nil { + panic(err) + } + u := user.Current(c) if u == nil { return nil } @@ -31,5 +35,10 @@ func Current(ctx context.Context) *User { } func IsAdmin(ctx context.Context) bool { - return user.IsAdmin(internal.ClassicContextFromContext(ctx)) + c, err := internal.ClassicContextFromContext(ctx) + if err != nil { + panic(err) + } + + return user.IsAdmin(c) } diff --git a/vendor/k8s.io/api/Godeps/Godeps.json b/vendor/k8s.io/api/Godeps/Godeps.json new file mode 100644 index 0000000000..df7f709af1 --- /dev/null +++ b/vendor/k8s.io/api/Godeps/Godeps.json @@ -0,0 +1,222 @@ +{ + "ImportPath": "k8s.io/api", + "GoVersion": "go1.8", + "GodepVersion": "v79", + "Packages": [ + "./..." + ], + "Deps": [ + { + "ImportPath": "github.com/PuerkitoBio/purell", + "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" + }, + { + "ImportPath": "github.com/PuerkitoBio/urlesc", + "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" + }, + { + "ImportPath": "github.com/emicklei/go-restful", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/emicklei/go-restful/log", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/go-openapi/jsonpointer", + "Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98" + }, + { + "ImportPath": "github.com/go-openapi/jsonreference", + "Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" + }, + { + "ImportPath": "github.com/go-openapi/spec", + "Rev": "6aced65f8501fe1217321abf0749d354824ba2ff" + }, + { + "ImportPath": "github.com/go-openapi/swag", + "Rev": "1d0bd113de87027671077d3c71eb3ac5d7dbba72" + }, + { + "ImportPath": "github.com/gogo/protobuf/proto", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/gogo/protobuf/sortkeys", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/golang/glog", + "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" + }, + { + "ImportPath": "github.com/google/gofuzz", + "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" + }, + { + "ImportPath": "github.com/mailru/easyjson/buffer", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/mailru/easyjson/jlexer", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/mailru/easyjson/jwriter", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/spf13/pflag", + "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" + }, + { + "ImportPath": "golang.org/x/net/http2", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/http2/hpack", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/idna", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/lex/httplex", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/text/cases", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/internal", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/internal/tag", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/language", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/runes", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/secure/bidirule", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/secure/precis", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/transform", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/unicode/bidi", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/unicode/norm", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/width", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "gopkg.in/inf.v0", + "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/resource", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/fields", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/labels", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/selection", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/types", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/errors", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/net", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/sets", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/wait", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/watch", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", + "Rev": "9d38e20d609d27e00d4ec18f7b9db67105a2bde0" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/common", + "Rev": "868f2f29720b192240e18284659231b440f9cda5" + } + ] +} diff --git a/vendor/github.com/docker/distribution/Godeps/Readme b/vendor/k8s.io/api/Godeps/Readme similarity index 100% rename from vendor/github.com/docker/distribution/Godeps/Readme rename to vendor/k8s.io/api/Godeps/Readme diff --git a/vendor/github.com/go-openapi/loads/LICENSE b/vendor/k8s.io/api/LICENSE similarity index 100% rename from vendor/github.com/go-openapi/loads/LICENSE rename to vendor/k8s.io/api/LICENSE diff --git a/vendor/k8s.io/api/OWNERS b/vendor/k8s.io/api/OWNERS new file mode 100644 index 0000000000..918b10522c --- /dev/null +++ b/vendor/k8s.io/api/OWNERS @@ -0,0 +1,51 @@ +approvers: +- erictune +- lavalamp +- smarterclayton +- thockin +- liggitt +# - bgrant0607 # manual escalations only +reviewers: +- brendandburns +- caesarxuchao +- davidopp +- dchen1107 +- deads2k +- derekwaynecarr +- dims +- eparis +- erictune +- errordeveloper +- feiskyer +- gmarek +- janetkuo +- jbeda +- jsafrane +- jszczepkowski +- justinsb +- krousey +- lavalamp +- liggitt +- luxas +- madhusudancs +- mikedanese +- mwielgus +- ncdc +- nikhiljindal +- piosz +- pmorie +- pwittrock +- roberthbailey +- rootfs +- saad-ali +- smarterclayton +- soltysh +- sttts +- tallclair +- thockin +- timothysc +- vishh +- wojtek-t +- yifan-gu +- yujuhong +- zmerlynn diff --git a/vendor/k8s.io/api/README.md b/vendor/k8s.io/api/README.md new file mode 100644 index 0000000000..967543a454 --- /dev/null +++ b/vendor/k8s.io/api/README.md @@ -0,0 +1 @@ +This repo is still in the experimental stage. Shortly it will contain the schema of the API that are served by the Kubernetes apiserver. diff --git a/vendor/k8s.io/api/admission/v1alpha1/BUILD b/vendor/k8s.io/api/admission/v1alpha1/BUILD new file mode 100644 index 0000000000..fd8f535695 --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/BUILD @@ -0,0 +1,42 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/authentication/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/admission/v1alpha1/doc.go b/vendor/k8s.io/api/admission/v1alpha1/doc.go new file mode 100644 index 0000000000..22c61d99d4 --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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=false + +// +groupName=admission.k8s.io +package v1alpha1 // import "k8s.io/api/admission/v1alpha1" diff --git a/vendor/k8s.io/api/admission/v1alpha1/generated.pb.go b/vendor/k8s.io/api/admission/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..03fa1f6be8 --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/generated.pb.go @@ -0,0 +1,1031 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/admission/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/admission/v1alpha1/generated.proto + + It has these top-level messages: + AdmissionReview + AdmissionReviewSpec + AdmissionReviewStatus +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *AdmissionReview) Reset() { *m = AdmissionReview{} } +func (*AdmissionReview) ProtoMessage() {} +func (*AdmissionReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *AdmissionReviewSpec) Reset() { *m = AdmissionReviewSpec{} } +func (*AdmissionReviewSpec) ProtoMessage() {} +func (*AdmissionReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *AdmissionReviewStatus) Reset() { *m = AdmissionReviewStatus{} } +func (*AdmissionReviewStatus) ProtoMessage() {} +func (*AdmissionReviewStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*AdmissionReview)(nil), "k8s.io.api.admission.v1alpha1.AdmissionReview") + proto.RegisterType((*AdmissionReviewSpec)(nil), "k8s.io.api.admission.v1alpha1.AdmissionReviewSpec") + proto.RegisterType((*AdmissionReviewStatus)(nil), "k8s.io.api.admission.v1alpha1.AdmissionReviewStatus") +} +func (m *AdmissionReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdmissionReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n1, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n2, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + return i, nil +} + +func (m *AdmissionReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdmissionReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Kind.Size())) + n3, err := m.Kind.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n4, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.OldObject.Size())) + n5, err := m.OldObject.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operation))) + i += copy(dAtA[i:], m.Operation) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n6, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SubResource))) + i += copy(dAtA[i:], m.SubResource) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UserInfo.Size())) + n7, err := m.UserInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + return i, nil +} + +func (m *AdmissionReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdmissionReviewStatus) 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++ + if m.Result != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Result.Size())) + n8, err := m.Result.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + 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 *AdmissionReview) Size() (n int) { + var l int + _ = 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 *AdmissionReviewSpec) Size() (n int) { + var l int + _ = l + l = m.Kind.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.OldObject.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operation) + 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)) + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SubResource) + n += 1 + l + sovGenerated(uint64(l)) + l = m.UserInfo.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *AdmissionReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + if m.Result != nil { + l = m.Result.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 *AdmissionReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AdmissionReview{`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "AdmissionReviewSpec", "AdmissionReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "AdmissionReviewStatus", "AdmissionReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *AdmissionReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AdmissionReviewSpec{`, + `Kind:` + strings.Replace(strings.Replace(this.Kind.String(), "GroupVersionKind", "k8s_io_apimachinery_pkg_apis_meta_v1.GroupVersionKind", 1), `&`, ``, 1) + `,`, + `Object:` + strings.Replace(strings.Replace(this.Object.String(), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `OldObject:` + strings.Replace(strings.Replace(this.OldObject.String(), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `Operation:` + fmt.Sprintf("%v", this.Operation) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Resource:` + strings.Replace(strings.Replace(this.Resource.String(), "GroupVersionResource", "k8s_io_apimachinery_pkg_apis_meta_v1.GroupVersionResource", 1), `&`, ``, 1) + `,`, + `SubResource:` + fmt.Sprintf("%v", this.SubResource) + `,`, + `UserInfo:` + strings.Replace(strings.Replace(this.UserInfo.String(), "UserInfo", "k8s_io_api_authentication_v1.UserInfo", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *AdmissionReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AdmissionReviewStatus{`, + `Allowed:` + fmt.Sprintf("%v", this.Allowed) + `,`, + `Result:` + strings.Replace(fmt.Sprintf("%v", this.Result), "Status", "k8s_io_apimachinery_pkg_apis_meta_v1.Status", 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 *AdmissionReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdmissionReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdmissionReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 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 *AdmissionReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdmissionReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdmissionReviewSpec: 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 msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Kind.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OldObject", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.OldObject.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operation = Operation(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + 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 6: + 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 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + 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 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.UserInfo.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 *AdmissionReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdmissionReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdmissionReviewStatus: 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 Result", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Result == nil { + m.Result = &k8s_io_apimachinery_pkg_apis_meta_v1.Status{} + } + if err := m.Result.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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/admission/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 645 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x4f, 0x13, 0x41, + 0x14, 0xc7, 0xbb, 0x5a, 0x4a, 0x3b, 0x18, 0xd1, 0x21, 0x26, 0x1b, 0x12, 0x17, 0xc2, 0xc1, 0x60, + 0x02, 0xb3, 0x01, 0x91, 0x18, 0xe3, 0x85, 0x26, 0x6a, 0x8c, 0x09, 0x98, 0x01, 0x8c, 0x31, 0xc6, + 0x64, 0xba, 0x7d, 0xb4, 0x63, 0xbb, 0x33, 0x9b, 0x9d, 0xd9, 0xa2, 0x37, 0xff, 0x04, 0x0f, 0xfe, + 0x1d, 0xfe, 0x17, 0x26, 0x1c, 0x39, 0x72, 0x22, 0x52, 0xff, 0x0b, 0x4f, 0x66, 0x67, 0x67, 0x77, + 0x4b, 0xa1, 0x2a, 0x9e, 0xda, 0xf7, 0xe3, 0xfb, 0x99, 0xf7, 0xde, 0xbc, 0x59, 0xf4, 0xac, 0xf7, + 0x48, 0x11, 0x2e, 0xfd, 0x5e, 0xd2, 0x82, 0x58, 0x80, 0x06, 0xe5, 0x0f, 0x40, 0xb4, 0x65, 0xec, + 0xdb, 0x00, 0x8b, 0xb8, 0xcf, 0xda, 0x21, 0x57, 0x8a, 0x4b, 0xe1, 0x0f, 0xd6, 0x58, 0x3f, 0xea, + 0xb2, 0x35, 0xbf, 0x03, 0x02, 0x62, 0xa6, 0xa1, 0x4d, 0xa2, 0x58, 0x6a, 0x89, 0xef, 0x66, 0xe9, + 0x84, 0x45, 0x9c, 0x14, 0xe9, 0x24, 0x4f, 0x9f, 0x5f, 0xed, 0x70, 0xdd, 0x4d, 0x5a, 0x24, 0x90, + 0xa1, 0xdf, 0x91, 0x1d, 0xe9, 0x1b, 0x55, 0x2b, 0x39, 0x30, 0x96, 0x31, 0xcc, 0xbf, 0x8c, 0x36, + 0xbf, 0x32, 0x7a, 0x78, 0xa2, 0xbb, 0x20, 0x34, 0x0f, 0x98, 0xce, 0x2a, 0x18, 0x3f, 0x7b, 0x7e, + 0xa3, 0xcc, 0x0e, 0x59, 0xd0, 0xe5, 0x02, 0xe2, 0x4f, 0x7e, 0xd4, 0xeb, 0xa4, 0x0e, 0xe5, 0x87, + 0xa0, 0xd9, 0x65, 0x2a, 0x7f, 0x92, 0x2a, 0x4e, 0x84, 0xe6, 0x21, 0x5c, 0x10, 0x6c, 0xfe, 0x4d, + 0xa0, 0x82, 0x2e, 0x84, 0xec, 0x82, 0xee, 0xc1, 0x24, 0x5d, 0xa2, 0x79, 0xdf, 0xe7, 0x42, 0x2b, + 0x1d, 0x8f, 0x8b, 0x96, 0xbe, 0x3b, 0x68, 0x76, 0x2b, 0x9f, 0x23, 0x85, 0x01, 0x87, 0x43, 0xbc, + 0x87, 0xaa, 0x2a, 0x82, 0xc0, 0x75, 0x16, 0x9d, 0xe5, 0x99, 0xf5, 0x75, 0xf2, 0xc7, 0x91, 0x93, + 0x31, 0xf5, 0x6e, 0x04, 0x41, 0xf3, 0xc6, 0xd1, 0xe9, 0x42, 0x65, 0x78, 0xba, 0x50, 0x4d, 0x2d, + 0x6a, 0x68, 0xf8, 0x1d, 0xaa, 0x29, 0xcd, 0x74, 0xa2, 0xdc, 0x6b, 0x86, 0xbb, 0x71, 0x45, 0xae, + 0xd1, 0x36, 0x6f, 0x5a, 0x72, 0x2d, 0xb3, 0xa9, 0x65, 0x2e, 0x7d, 0x9b, 0x42, 0x73, 0x97, 0x54, + 0x82, 0xdf, 0xa0, 0x6a, 0x8f, 0x8b, 0xb6, 0xed, 0x65, 0x73, 0xe4, 0xcc, 0x62, 0x46, 0x24, 0xea, + 0x75, 0x52, 0x87, 0x22, 0xe9, 0x15, 0x92, 0xc1, 0x1a, 0x79, 0x1e, 0xcb, 0x24, 0x7a, 0x0d, 0x71, + 0xca, 0x7a, 0xc9, 0x45, 0xbb, 0xec, 0x27, 0xb5, 0xa8, 0x21, 0xe2, 0x7d, 0x54, 0x93, 0xad, 0x0f, + 0x10, 0x68, 0xdb, 0xcf, 0xea, 0x44, 0xb6, 0xbd, 0x37, 0x42, 0xd9, 0xe1, 0xd3, 0x8f, 0x1a, 0x44, + 0x8a, 0x2d, 0x1b, 0xd9, 0x31, 0x10, 0x6a, 0x61, 0xf8, 0x3d, 0x6a, 0xc8, 0x7e, 0x3b, 0x73, 0xba, + 0xd7, 0xff, 0x87, 0x7c, 0xdb, 0x92, 0x1b, 0x3b, 0x39, 0x87, 0x96, 0x48, 0xfc, 0x04, 0x35, 0x64, + 0x94, 0xae, 0x00, 0x97, 0xc2, 0xad, 0x2e, 0x3a, 0xcb, 0x8d, 0xa6, 0x57, 0x08, 0xf2, 0xc0, 0xaf, + 0x51, 0x83, 0x96, 0x02, 0xbc, 0x88, 0xaa, 0x82, 0x85, 0xe0, 0x4e, 0x19, 0x61, 0x31, 0x96, 0x6d, + 0x16, 0x02, 0x35, 0x11, 0xec, 0xa3, 0x46, 0xfa, 0xab, 0x22, 0x16, 0x80, 0x5b, 0x33, 0x69, 0x45, + 0x41, 0xdb, 0x79, 0x80, 0x96, 0x39, 0xb8, 0x8b, 0xea, 0x31, 0x28, 0x99, 0xc4, 0x01, 0xb8, 0xd3, + 0xa6, 0xdf, 0xc7, 0x57, 0xbf, 0x25, 0x6a, 0x09, 0xcd, 0x5b, 0xf6, 0xac, 0x7a, 0xee, 0xa1, 0x05, + 0x1d, 0x3f, 0x44, 0x33, 0x2a, 0x69, 0xe5, 0x01, 0xb7, 0x6e, 0x8a, 0x9b, 0xb3, 0x82, 0x99, 0xdd, + 0x32, 0x44, 0x47, 0xf3, 0xf0, 0x1e, 0xaa, 0x27, 0x0a, 0xe2, 0x17, 0xe2, 0x40, 0xba, 0x0d, 0x53, + 0xe0, 0xbd, 0x73, 0xab, 0x7b, 0xee, 0xbb, 0x91, 0x16, 0xb6, 0x6f, 0xb3, 0xcb, 0x62, 0x72, 0x0f, + 0x2d, 0x48, 0x4b, 0x5f, 0x1d, 0x74, 0xe7, 0xd2, 0x15, 0xc7, 0xf7, 0xd1, 0x34, 0xeb, 0xf7, 0xe5, + 0x21, 0x64, 0x5b, 0x5b, 0x6f, 0xce, 0x5a, 0xcc, 0xf4, 0x56, 0xe6, 0xa6, 0x79, 0x1c, 0xbf, 0x1a, + 0x7b, 0x53, 0x2b, 0xff, 0x36, 0x39, 0xfb, 0x96, 0x50, 0xba, 0x7e, 0x14, 0x54, 0xd2, 0xd7, 0xf9, + 0x3b, 0x6a, 0x92, 0xa3, 0x33, 0xaf, 0x72, 0x7c, 0xe6, 0x55, 0x4e, 0xce, 0xbc, 0xca, 0xe7, 0xa1, + 0xe7, 0x1c, 0x0d, 0x3d, 0xe7, 0x78, 0xe8, 0x39, 0x27, 0x43, 0xcf, 0xf9, 0x31, 0xf4, 0x9c, 0x2f, + 0x3f, 0xbd, 0xca, 0xdb, 0x7a, 0xfe, 0x4a, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x57, 0xa7, + 0x50, 0xd8, 0x05, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/admission/v1alpha1/generated.proto b/vendor/k8s.io/api/admission/v1alpha1/generated.proto new file mode 100644 index 0000000000..8859a46fa9 --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/generated.proto @@ -0,0 +1,95 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.admission.v1alpha1; + +import "k8s.io/api/authentication/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// AdmissionReview describes an admission request. +message AdmissionReview { + // Spec describes the attributes for the admission request. + // Since this admission controller is non-mutating the webhook should avoid setting this in its response to avoid the + // cost of deserializing it. + // +optional + optional AdmissionReviewSpec spec = 1; + + // Status is filled in by the webhook and indicates whether the admission request should be permitted. + // +optional + optional AdmissionReviewStatus status = 2; +} + +// AdmissionReviewSpec describes the admission.Attributes for the admission request. +message AdmissionReviewSpec { + // Kind is the type of object being manipulated. For example: Pod + optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 1; + + // Object is the object from the incoming request prior to default values being applied + optional k8s.io.apimachinery.pkg.runtime.RawExtension object = 2; + + // OldObject is the existing object. Only populated for UPDATE requests. + // +optional + optional k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 3; + + // Operation is the operation being performed + optional string operation = 4; + + // Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and + // rely on the server to generate the name. If that is the case, this method will return the empty string. + // +optional + optional string name = 5; + + // Namespace is the namespace associated with the request (if any). + // +optional + optional string namespace = 6; + + // Resource is the name of the resource being requested. This is not the kind. For example: pods + optional k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 7; + + // SubResource is the name of the subresource being requested. This is a different resource, scoped to the parent + // resource, but it may have a different kind. For instance, /pods has the resource "pods" and the kind "Pod", while + // /pods/foo/status has the resource "pods", the sub resource "status", and the kind "Pod" (because status operates on + // pods). The binding resource for a pod though may be /pods/foo/binding, which has resource "pods", subresource + // "binding", and kind "Binding". + // +optional + optional string subResource = 8; + + // UserInfo is information about the requesting user + optional k8s.io.api.authentication.v1.UserInfo userInfo = 9; +} + +// AdmissionReviewStatus describes the status of the admission request. +message AdmissionReviewStatus { + // Allowed indicates whether or not the admission request was permitted. + optional bool allowed = 1; + + // Result contains extra details into why an admission request was denied. + // This field IS NOT consulted in any way if "Allowed" is "true". + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 2; +} + diff --git a/vendor/k8s.io/api/admission/v1alpha1/register.go b/vendor/k8s.io/api/admission/v1alpha1/register.go new file mode 100644 index 0000000000..ea6d5609af --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/register.go @@ -0,0 +1,51 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name for this API. +const GroupName = "admission.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &AdmissionReview{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/admission/v1alpha1/types.go b/vendor/k8s.io/api/admission/v1alpha1/types.go new file mode 100644 index 0000000000..5defadca6b --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/types.go @@ -0,0 +1,90 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + authenticationv1 "k8s.io/api/authentication/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// AdmissionReview describes an admission request. +type AdmissionReview struct { + metav1.TypeMeta `json:",inline"` + // Spec describes the attributes for the admission request. + // Since this admission controller is non-mutating the webhook should avoid setting this in its response to avoid the + // cost of deserializing it. + // +optional + Spec AdmissionReviewSpec `json:"spec,omitempty" protobuf:"bytes,1,opt,name=spec"` + // Status is filled in by the webhook and indicates whether the admission request should be permitted. + // +optional + Status AdmissionReviewStatus `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` +} + +// AdmissionReviewSpec describes the admission.Attributes for the admission request. +type AdmissionReviewSpec struct { + // Kind is the type of object being manipulated. For example: Pod + Kind metav1.GroupVersionKind `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + // Object is the object from the incoming request prior to default values being applied + Object runtime.RawExtension `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // OldObject is the existing object. Only populated for UPDATE requests. + // +optional + OldObject runtime.RawExtension `json:"oldObject,omitempty" protobuf:"bytes,3,opt,name=oldObject"` + // Operation is the operation being performed + Operation Operation `json:"operation,omitempty" protobuf:"bytes,4,opt,name=operation"` + // Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and + // rely on the server to generate the name. If that is the case, this method will return the empty string. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,5,opt,name=name"` + // Namespace is the namespace associated with the request (if any). + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,6,opt,name=namespace"` + // Resource is the name of the resource being requested. This is not the kind. For example: pods + Resource metav1.GroupVersionResource `json:"resource,omitempty" protobuf:"bytes,7,opt,name=resource"` + // SubResource is the name of the subresource being requested. This is a different resource, scoped to the parent + // resource, but it may have a different kind. For instance, /pods has the resource "pods" and the kind "Pod", while + // /pods/foo/status has the resource "pods", the sub resource "status", and the kind "Pod" (because status operates on + // pods). The binding resource for a pod though may be /pods/foo/binding, which has resource "pods", subresource + // "binding", and kind "Binding". + // +optional + SubResource string `json:"subResource,omitempty" protobuf:"bytes,8,opt,name=subResource"` + // UserInfo is information about the requesting user + UserInfo authenticationv1.UserInfo `json:"userInfo,omitempty" protobuf:"bytes,9,opt,name=userInfo"` +} + +// AdmissionReviewStatus describes the status of the admission request. +type AdmissionReviewStatus struct { + // Allowed indicates whether or not the admission request was permitted. + Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"` + // Result contains extra details into why an admission request was denied. + // This field IS NOT consulted in any way if "Allowed" is "true". + // +optional + Result *metav1.Status `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` +} + +// Operation is the type of resource operation being checked for admission control +type Operation string + +// Operation constants +const ( + Create Operation = "CREATE" + Update Operation = "UPDATE" + Delete Operation = "DELETE" + Connect Operation = "CONNECT" +) diff --git a/vendor/k8s.io/api/admission/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admission/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..07da434c98 --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/types_swagger_doc_generated.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 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_AdmissionReview = map[string]string{ + "": "AdmissionReview describes an admission request.", + "spec": "Spec describes the attributes for the admission request. Since this admission controller is non-mutating the webhook should avoid setting this in its response to avoid the cost of deserializing it.", + "status": "Status is filled in by the webhook and indicates whether the admission request should be permitted.", +} + +func (AdmissionReview) SwaggerDoc() map[string]string { + return map_AdmissionReview +} + +var map_AdmissionReviewSpec = map[string]string{ + "": "AdmissionReviewSpec describes the admission.Attributes for the admission request.", + "kind": "Kind is the type of object being manipulated. For example: Pod", + "object": "Object is the object from the incoming request prior to default values being applied", + "oldObject": "OldObject is the existing object. Only populated for UPDATE requests.", + "operation": "Operation is the operation being performed", + "name": "Name is the name of the object as presented in the request. On a CREATE operation, the client may omit name and rely on the server to generate the name. If that is the case, this method will return the empty string.", + "namespace": "Namespace is the namespace associated with the request (if any).", + "resource": "Resource is the name of the resource being requested. This is not the kind. For example: pods", + "subResource": "SubResource is the name of the subresource being requested. This is a different resource, scoped to the parent resource, but it may have a different kind. For instance, /pods has the resource \"pods\" and the kind \"Pod\", while /pods/foo/status has the resource \"pods\", the sub resource \"status\", and the kind \"Pod\" (because status operates on pods). The binding resource for a pod though may be /pods/foo/binding, which has resource \"pods\", subresource \"binding\", and kind \"Binding\".", + "userInfo": "UserInfo is information about the requesting user", +} + +func (AdmissionReviewSpec) SwaggerDoc() map[string]string { + return map_AdmissionReviewSpec +} + +var map_AdmissionReviewStatus = map[string]string{ + "": "AdmissionReviewStatus describes the status of the admission request.", + "allowed": "Allowed indicates whether or not the admission request was permitted.", + "status": "Result contains extra details into why an admission request was denied. This field IS NOT consulted in any way if \"Allowed\" is \"true\".", +} + +func (AdmissionReviewStatus) SwaggerDoc() map[string]string { + return map_AdmissionReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..667792aeb6 --- /dev/null +++ b/vendor/k8s.io/api/admission/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,127 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AdmissionReview).DeepCopyInto(out.(*AdmissionReview)) + return nil + }, InType: reflect.TypeOf(&AdmissionReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AdmissionReviewSpec).DeepCopyInto(out.(*AdmissionReviewSpec)) + return nil + }, InType: reflect.TypeOf(&AdmissionReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AdmissionReviewStatus).DeepCopyInto(out.(*AdmissionReviewStatus)) + return nil + }, InType: reflect.TypeOf(&AdmissionReviewStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdmissionReview) DeepCopyInto(out *AdmissionReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdmissionReview. +func (in *AdmissionReview) DeepCopy() *AdmissionReview { + if in == nil { + return nil + } + out := new(AdmissionReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *AdmissionReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdmissionReviewSpec) DeepCopyInto(out *AdmissionReviewSpec) { + *out = *in + out.Kind = in.Kind + in.Object.DeepCopyInto(&out.Object) + in.OldObject.DeepCopyInto(&out.OldObject) + out.Resource = in.Resource + in.UserInfo.DeepCopyInto(&out.UserInfo) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdmissionReviewSpec. +func (in *AdmissionReviewSpec) DeepCopy() *AdmissionReviewSpec { + if in == nil { + return nil + } + out := new(AdmissionReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdmissionReviewStatus) DeepCopyInto(out *AdmissionReviewStatus) { + *out = *in + if in.Result != nil { + in, out := &in.Result, &out.Result + if *in == nil { + *out = nil + } else { + *out = new(v1.Status) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdmissionReviewStatus. +func (in *AdmissionReviewStatus) DeepCopy() *AdmissionReviewStatus { + if in == nil { + return nil + } + out := new(AdmissionReviewStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD b/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD new file mode 100644 index 0000000000..6a38064dd2 --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go new file mode 100644 index 0000000000..49e0e0989d --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/doc.go @@ -0,0 +1,25 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1alpha1 is the v1alpha1 version of the API. +// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration +// InitializerConfiguration and ExternalAdmissionHookConfiguration is for the +// new dynamic admission controller configuration. +// +groupName=admissionregistration.k8s.io +package v1alpha1 // import "k8s.io/api/admissionregistration/v1alpha1" diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..6a1977f833 --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go @@ -0,0 +1,2187 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto + + It has these top-level messages: + AdmissionHookClientConfig + ExternalAdmissionHook + ExternalAdmissionHookConfiguration + ExternalAdmissionHookConfigurationList + Initializer + InitializerConfiguration + InitializerConfigurationList + Rule + RuleWithOperations + ServiceReference +*/ +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *AdmissionHookClientConfig) Reset() { *m = AdmissionHookClientConfig{} } +func (*AdmissionHookClientConfig) ProtoMessage() {} +func (*AdmissionHookClientConfig) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *ExternalAdmissionHook) Reset() { *m = ExternalAdmissionHook{} } +func (*ExternalAdmissionHook) ProtoMessage() {} +func (*ExternalAdmissionHook) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *ExternalAdmissionHookConfiguration) Reset() { *m = ExternalAdmissionHookConfiguration{} } +func (*ExternalAdmissionHookConfiguration) ProtoMessage() {} +func (*ExternalAdmissionHookConfiguration) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *ExternalAdmissionHookConfigurationList) Reset() { + *m = ExternalAdmissionHookConfigurationList{} +} +func (*ExternalAdmissionHookConfigurationList) ProtoMessage() {} +func (*ExternalAdmissionHookConfigurationList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *Initializer) Reset() { *m = Initializer{} } +func (*Initializer) ProtoMessage() {} +func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *InitializerConfiguration) Reset() { *m = InitializerConfiguration{} } +func (*InitializerConfiguration) ProtoMessage() {} +func (*InitializerConfiguration) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *InitializerConfigurationList) Reset() { *m = InitializerConfigurationList{} } +func (*InitializerConfigurationList) ProtoMessage() {} +func (*InitializerConfigurationList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{6} +} + +func (m *Rule) Reset() { *m = Rule{} } +func (*Rule) ProtoMessage() {} +func (*Rule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *RuleWithOperations) Reset() { *m = RuleWithOperations{} } +func (*RuleWithOperations) ProtoMessage() {} +func (*RuleWithOperations) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *ServiceReference) Reset() { *m = ServiceReference{} } +func (*ServiceReference) ProtoMessage() {} +func (*ServiceReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func init() { + proto.RegisterType((*AdmissionHookClientConfig)(nil), "k8s.io.api.admissionregistration.v1alpha1.AdmissionHookClientConfig") + proto.RegisterType((*ExternalAdmissionHook)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExternalAdmissionHook") + proto.RegisterType((*ExternalAdmissionHookConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExternalAdmissionHookConfiguration") + proto.RegisterType((*ExternalAdmissionHookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1alpha1.ExternalAdmissionHookConfigurationList") + proto.RegisterType((*Initializer)(nil), "k8s.io.api.admissionregistration.v1alpha1.Initializer") + proto.RegisterType((*InitializerConfiguration)(nil), "k8s.io.api.admissionregistration.v1alpha1.InitializerConfiguration") + proto.RegisterType((*InitializerConfigurationList)(nil), "k8s.io.api.admissionregistration.v1alpha1.InitializerConfigurationList") + proto.RegisterType((*Rule)(nil), "k8s.io.api.admissionregistration.v1alpha1.Rule") + proto.RegisterType((*RuleWithOperations)(nil), "k8s.io.api.admissionregistration.v1alpha1.RuleWithOperations") + proto.RegisterType((*ServiceReference)(nil), "k8s.io.api.admissionregistration.v1alpha1.ServiceReference") +} +func (m *AdmissionHookClientConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdmissionHookClientConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Service.Size())) + n1, err := m.Service.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.CABundle != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle))) + i += copy(dAtA[i:], m.CABundle) + } + return i, nil +} + +func (m *ExternalAdmissionHook) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExternalAdmissionHook) 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.ClientConfig.Size())) + n2, err := m.ClientConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + 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 + } + } + if m.FailurePolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy))) + i += copy(dAtA[i:], *m.FailurePolicy) + } + return i, nil +} + +func (m *ExternalAdmissionHookConfiguration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExternalAdmissionHookConfiguration) 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 + if len(m.ExternalAdmissionHooks) > 0 { + for _, msg := range m.ExternalAdmissionHooks { + 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 *ExternalAdmissionHookConfigurationList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExternalAdmissionHookConfigurationList) 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 *Initializer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Initializer) 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.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 *InitializerConfiguration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InitializerConfiguration) 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())) + n5, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Initializers) > 0 { + for _, msg := range m.Initializers { + 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 *InitializerConfigurationList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InitializerConfigurationList) 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 *Rule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Rule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + 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.APIVersions) > 0 { + for _, s := range m.APIVersions { + 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.Resources) > 0 { + for _, s := range m.Resources { + 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 *RuleWithOperations) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RuleWithOperations) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Operations) > 0 { + for _, s := range m.Operations { + 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.Rule.Size())) + n7, err := m.Rule.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + return i, nil +} + +func (m *ServiceReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceReference) 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.Name))) + i += copy(dAtA[i:], m.Name) + 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 *AdmissionHookClientConfig) Size() (n int) { + var l int + _ = l + l = m.Service.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.CABundle != nil { + l = len(m.CABundle) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ExternalAdmissionHook) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.ClientConfig.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)) + } + } + if m.FailurePolicy != nil { + l = len(*m.FailurePolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ExternalAdmissionHookConfiguration) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ExternalAdmissionHooks) > 0 { + for _, e := range m.ExternalAdmissionHooks { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ExternalAdmissionHookConfigurationList) 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 *Initializer) Size() (n int) { + var l int + _ = l + l = len(m.Name) + 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 *InitializerConfiguration) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Initializers) > 0 { + for _, e := range m.Initializers { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *InitializerConfigurationList) 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 *Rule) Size() (n int) { + var l int + _ = l + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.APIVersions) > 0 { + for _, s := range m.APIVersions { + 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)) + } + } + return n +} + +func (m *RuleWithOperations) Size() (n int) { + var l int + _ = l + if len(m.Operations) > 0 { + for _, s := range m.Operations { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.Rule.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceReference) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + 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 *AdmissionHookClientConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AdmissionHookClientConfig{`, + `Service:` + strings.Replace(strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1), `&`, ``, 1) + `,`, + `CABundle:` + valueToStringGenerated(this.CABundle) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalAdmissionHook) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalAdmissionHook{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "AdmissionHookClientConfig", "AdmissionHookClientConfig", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`, + `FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalAdmissionHookConfiguration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalAdmissionHookConfiguration{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ExternalAdmissionHooks:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ExternalAdmissionHooks), "ExternalAdmissionHook", "ExternalAdmissionHook", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalAdmissionHookConfigurationList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalAdmissionHookConfigurationList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ExternalAdmissionHookConfiguration", "ExternalAdmissionHookConfiguration", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Initializer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Initializer{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "Rule", "Rule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *InitializerConfiguration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&InitializerConfiguration{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Initializers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Initializers), "Initializer", "Initializer", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *InitializerConfigurationList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&InitializerConfigurationList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "InitializerConfiguration", "InitializerConfiguration", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Rule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Rule{`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `APIVersions:` + fmt.Sprintf("%v", this.APIVersions) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `}`, + }, "") + return s +} +func (this *RuleWithOperations) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RuleWithOperations{`, + `Operations:` + fmt.Sprintf("%v", this.Operations) + `,`, + `Rule:` + strings.Replace(strings.Replace(this.Rule.String(), "Rule", "Rule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceReference{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + 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 *AdmissionHookClientConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdmissionHookClientConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdmissionHookClientConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Service.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CABundle", 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.CABundle = append(m.CABundle[:0], dAtA[iNdEx:postIndex]...) + if m.CABundle == nil { + m.CABundle = []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 *ExternalAdmissionHook) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalAdmissionHook: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalAdmissionHook: 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 ClientConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ClientConfig.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, RuleWithOperations{}) + if err := m.Rules[len(m.Rules)-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 FailurePolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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 := FailurePolicyType(dAtA[iNdEx:postIndex]) + m.FailurePolicy = &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 *ExternalAdmissionHookConfiguration) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalAdmissionHookConfiguration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalAdmissionHookConfiguration: 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 ExternalAdmissionHooks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.ExternalAdmissionHooks = append(m.ExternalAdmissionHooks, ExternalAdmissionHook{}) + if err := m.ExternalAdmissionHooks[len(m.ExternalAdmissionHooks)-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 *ExternalAdmissionHookConfigurationList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalAdmissionHookConfigurationList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalAdmissionHookConfigurationList: 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, ExternalAdmissionHookConfiguration{}) + 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 *Initializer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Initializer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Initializer: 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 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, Rule{}) + 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 *InitializerConfiguration) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InitializerConfiguration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InitializerConfiguration: 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 Initializers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Initializers = append(m.Initializers, Initializer{}) + if err := m.Initializers[len(m.Initializers)-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 *InitializerConfigurationList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InitializerConfigurationList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InitializerConfigurationList: 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, InitializerConfiguration{}) + 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 *Rule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Rule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersions = append(m.APIVersions, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RuleWithOperations) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RuleWithOperations: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RuleWithOperations: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operations", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operations = append(m.Operations, OperationType(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Rule.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 *ServiceReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceReference: 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 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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 871 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x8b, 0x23, 0x45, + 0x14, 0x4f, 0x65, 0x32, 0x6c, 0x52, 0x49, 0xd8, 0xdd, 0x42, 0x97, 0x38, 0x48, 0x77, 0xe8, 0xc3, + 0x12, 0x11, 0xbb, 0x9d, 0x51, 0x16, 0x41, 0x44, 0xa7, 0xc7, 0xaf, 0x81, 0xfd, 0x18, 0xcb, 0x45, + 0x41, 0x3c, 0x58, 0xe9, 0xbc, 0x24, 0x65, 0xfa, 0x8b, 0xaa, 0xea, 0xe0, 0x78, 0x10, 0x2f, 0xde, + 0x05, 0x2f, 0x5e, 0xbd, 0x79, 0xf1, 0xff, 0x98, 0xe3, 0x1e, 0xf7, 0x14, 0x9c, 0x16, 0xbc, 0x08, + 0xfe, 0x01, 0x73, 0x92, 0xfe, 0x4a, 0x3a, 0x9b, 0x84, 0x4d, 0x5c, 0x98, 0x5b, 0xea, 0xf7, 0xea, + 0xf7, 0xde, 0xef, 0xfd, 0xf2, 0x5e, 0x35, 0xa6, 0x93, 0x77, 0xa4, 0xc9, 0x03, 0x6b, 0x12, 0xf5, + 0x41, 0xf8, 0xa0, 0x40, 0x5a, 0x53, 0xf0, 0x07, 0x81, 0xb0, 0xf2, 0x00, 0x0b, 0xb9, 0xc5, 0x06, + 0x1e, 0x97, 0x92, 0x07, 0xbe, 0x80, 0x11, 0x97, 0x4a, 0x30, 0xc5, 0x03, 0xdf, 0x9a, 0x1e, 0x32, + 0x37, 0x1c, 0xb3, 0x43, 0x6b, 0x04, 0x3e, 0x08, 0xa6, 0x60, 0x60, 0x86, 0x22, 0x50, 0x01, 0x79, + 0x2d, 0xa3, 0x9a, 0x2c, 0xe4, 0xe6, 0x5a, 0xaa, 0x59, 0x50, 0x0f, 0xde, 0x18, 0x71, 0x35, 0x8e, + 0xfa, 0xa6, 0x13, 0x78, 0xd6, 0x28, 0x18, 0x05, 0x56, 0x9a, 0xa1, 0x1f, 0x0d, 0xd3, 0x53, 0x7a, + 0x48, 0x7f, 0x65, 0x99, 0x0f, 0xde, 0x5e, 0x88, 0xf2, 0x98, 0x33, 0xe6, 0x3e, 0x88, 0x73, 0x2b, + 0x9c, 0x8c, 0x12, 0x40, 0x5a, 0x1e, 0x28, 0x66, 0x4d, 0x57, 0xf4, 0x1c, 0x58, 0x9b, 0x58, 0x22, + 0xf2, 0x15, 0xf7, 0x60, 0x85, 0x70, 0xef, 0x79, 0x04, 0xe9, 0x8c, 0xc1, 0x63, 0x2b, 0xbc, 0xb7, + 0x36, 0xf1, 0x22, 0xc5, 0x5d, 0x8b, 0xfb, 0x4a, 0x2a, 0xf1, 0x2c, 0xc9, 0xf8, 0x03, 0xe1, 0x57, + 0x8e, 0x0b, 0x97, 0x3e, 0x0d, 0x82, 0xc9, 0x89, 0xcb, 0xc1, 0x57, 0x27, 0x81, 0x3f, 0xe4, 0x23, + 0x32, 0xc4, 0x37, 0x24, 0x88, 0x29, 0x77, 0xa0, 0x83, 0xba, 0xa8, 0xd7, 0x3c, 0x7a, 0xd7, 0xdc, + 0xda, 0x5d, 0xf3, 0xf3, 0x8c, 0x49, 0x61, 0x08, 0x02, 0x7c, 0x07, 0xec, 0x9b, 0x17, 0x33, 0xbd, + 0x12, 0xcf, 0xf4, 0x1b, 0x45, 0xa4, 0x48, 0x4e, 0x7a, 0xb8, 0xee, 0x30, 0x3b, 0xf2, 0x07, 0x2e, + 0x74, 0xaa, 0x5d, 0xd4, 0x6b, 0xd9, 0xad, 0x78, 0xa6, 0xd7, 0x4f, 0x8e, 0x33, 0x8c, 0xce, 0xa3, + 0xc6, 0x3f, 0x55, 0xfc, 0xf2, 0x47, 0xdf, 0x29, 0x10, 0x3e, 0x73, 0x97, 0x74, 0x93, 0x2e, 0xae, + 0xf9, 0xcc, 0xcb, 0x84, 0x36, 0xec, 0x56, 0x5e, 0xab, 0xf6, 0x90, 0x79, 0x40, 0xd3, 0x08, 0xf9, + 0x01, 0xb7, 0x9c, 0x52, 0x77, 0x69, 0xa5, 0xe6, 0xd1, 0x87, 0x3b, 0xb4, 0xb4, 0xd1, 0x29, 0xfb, + 0xa5, 0xbc, 0x5e, 0xab, 0x8c, 0xd2, 0xa5, 0x7a, 0xa4, 0x8f, 0xf7, 0x45, 0xe4, 0x82, 0xec, 0xec, + 0x75, 0xf7, 0x7a, 0xcd, 0xa3, 0xf7, 0x76, 0x28, 0x4c, 0x23, 0x17, 0xbe, 0xe4, 0x6a, 0xfc, 0x28, + 0x84, 0x2c, 0x24, 0xed, 0x76, 0x5e, 0x71, 0x3f, 0x89, 0x49, 0x9a, 0xa5, 0x26, 0xf7, 0x71, 0x7b, + 0xc8, 0xb8, 0x1b, 0x09, 0x38, 0x0b, 0x5c, 0xee, 0x9c, 0x77, 0x6a, 0xa9, 0x1d, 0x77, 0xe3, 0x99, + 0xde, 0xfe, 0xb8, 0x1c, 0xb8, 0x9a, 0xe9, 0xb7, 0x97, 0x80, 0xc7, 0xe7, 0x21, 0xd0, 0x65, 0xb2, + 0xf1, 0x5b, 0x15, 0x1b, 0x6b, 0xdd, 0xce, 0x3a, 0x8a, 0x32, 0x2d, 0xe4, 0x1b, 0x5c, 0x4f, 0xa6, + 0x7f, 0xc0, 0x14, 0xcb, 0xe7, 0xe4, 0xcd, 0x52, 0x6f, 0xf3, 0x61, 0x34, 0xc3, 0xc9, 0x28, 0x01, + 0xa4, 0x99, 0xdc, 0x36, 0xa7, 0x87, 0xe6, 0xa3, 0xfe, 0xb7, 0xe0, 0xa8, 0x07, 0xa0, 0x98, 0x4d, + 0xf2, 0x76, 0xf0, 0x02, 0xa3, 0xf3, 0xac, 0xe4, 0x57, 0x84, 0xef, 0xc0, 0x3a, 0x21, 0xb2, 0x53, + 0x4d, 0xcd, 0xfc, 0x60, 0x07, 0x33, 0xd7, 0x76, 0x64, 0x6b, 0xb9, 0x80, 0x3b, 0x6b, 0xc3, 0x92, + 0x6e, 0xa8, 0x6f, 0x5c, 0x21, 0x7c, 0xf7, 0xf9, 0x1e, 0xdd, 0xe7, 0x52, 0x91, 0xaf, 0x57, 0x7c, + 0x32, 0xb7, 0xf3, 0x29, 0x61, 0xa7, 0x2e, 0xdd, 0xca, 0x45, 0xd6, 0x0b, 0xa4, 0xe4, 0x91, 0xc0, + 0xfb, 0x5c, 0x81, 0x57, 0x38, 0xf2, 0xe0, 0x45, 0x1d, 0x59, 0xd2, 0xbf, 0x18, 0xb7, 0xd3, 0xa4, + 0x06, 0xcd, 0x4a, 0x19, 0x3f, 0x21, 0xdc, 0x3c, 0xf5, 0xb9, 0xe2, 0xcc, 0xe5, 0xdf, 0x83, 0xd8, + 0x62, 0x09, 0x1f, 0x17, 0x4b, 0x90, 0xa9, 0xb4, 0x76, 0x5c, 0x82, 0xf5, 0x63, 0x6f, 0xfc, 0x8b, + 0x70, 0xa7, 0xa4, 0xe3, 0xba, 0xc7, 0x33, 0xc4, 0x2d, 0xbe, 0xa8, 0x5e, 0xf4, 0x76, 0x6f, 0x87, + 0xde, 0x4a, 0xe2, 0x17, 0x6f, 0x49, 0x09, 0x94, 0x74, 0xa9, 0x82, 0xf1, 0x37, 0xc2, 0xaf, 0x6e, + 0x6a, 0xf8, 0x1a, 0x66, 0x6d, 0xbc, 0x3c, 0x6b, 0x27, 0xff, 0xaf, 0xd3, 0x6d, 0x26, 0xec, 0x17, + 0x84, 0x6b, 0xc9, 0x5f, 0x4d, 0x5e, 0xc7, 0x0d, 0x16, 0xf2, 0x4f, 0x44, 0x10, 0x85, 0xb2, 0x83, + 0xba, 0x7b, 0xbd, 0x86, 0xdd, 0x8e, 0x67, 0x7a, 0xe3, 0xf8, 0xec, 0x34, 0x03, 0xe9, 0x22, 0x4e, + 0x0e, 0x71, 0x93, 0x85, 0xfc, 0x0b, 0x10, 0x89, 0x8e, 0x4c, 0x65, 0xc3, 0xbe, 0x19, 0xcf, 0xf4, + 0xe6, 0xf1, 0xd9, 0x69, 0x01, 0xd3, 0xf2, 0x9d, 0x24, 0xbf, 0x00, 0x19, 0x44, 0xc2, 0xc9, 0x5f, + 0xe8, 0x3c, 0x3f, 0x2d, 0x40, 0xba, 0x88, 0x1b, 0xbf, 0x23, 0x4c, 0x56, 0xdf, 0x64, 0xf2, 0x3e, + 0xc6, 0xc1, 0xfc, 0x94, 0x8b, 0xd4, 0xd3, 0xa9, 0x99, 0xa3, 0x57, 0x33, 0xbd, 0x3d, 0x3f, 0xa5, + 0x6f, 0x6e, 0x89, 0x42, 0x3e, 0xc3, 0xb5, 0x64, 0xa0, 0xf3, 0x4f, 0xd3, 0xce, 0xcb, 0x31, 0x5f, + 0xb8, 0xe4, 0x44, 0xd3, 0x54, 0x06, 0xe0, 0x5b, 0xcf, 0x7e, 0x89, 0x89, 0x85, 0x1b, 0xc9, 0x32, + 0xca, 0x90, 0x39, 0xc5, 0xae, 0xde, 0xce, 0xa9, 0x8d, 0x87, 0x45, 0x80, 0x2e, 0xee, 0xcc, 0xf7, + 0xba, 0xba, 0x69, 0xaf, 0x6d, 0xf3, 0xe2, 0x52, 0xab, 0x3c, 0xb9, 0xd4, 0x2a, 0x4f, 0x2f, 0xb5, + 0xca, 0x8f, 0xb1, 0x86, 0x2e, 0x62, 0x0d, 0x3d, 0x89, 0x35, 0xf4, 0x34, 0xd6, 0xd0, 0x9f, 0xb1, + 0x86, 0x7e, 0xfe, 0x4b, 0xab, 0x7c, 0x55, 0x2f, 0xf4, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0xe7, + 0xb5, 0x5f, 0xd5, 0xfb, 0x09, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto new file mode 100644 index 0000000000..5b0d4f0065 --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto @@ -0,0 +1,196 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.admissionregistration.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// AdmissionHookClientConfig contains the information to make a TLS +// connection with the webhook +message AdmissionHookClientConfig { + // Service is a reference to the service for this webhook. If there is only + // one port open for the service, that port will be used. If there are multiple + // ports open, port 443 will be used if it is open, otherwise it is an error. + // Required + optional ServiceReference service = 1; + + // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. + // Required + optional bytes caBundle = 2; +} + +// ExternalAdmissionHook describes an external admission webhook and the +// resources and operations it applies to. +message ExternalAdmissionHook { + // The name of the external admission webhook. + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where + // "imagepolicy" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required. + optional string name = 1; + + // ClientConfig defines how to communicate with the hook. + // Required + optional AdmissionHookClientConfig clientConfig = 2; + + // Rules describes what operations on what resources/subresources the webhook cares about. + // The webhook cares about an operation if it matches _any_ Rule. + repeated RuleWithOperations rules = 3; + + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - + // allowed values are Ignore or Fail. Defaults to Ignore. + // +optional + optional string failurePolicy = 4; +} + +// ExternalAdmissionHookConfiguration describes the configuration of initializers. +message ExternalAdmissionHookConfiguration { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // ExternalAdmissionHooks is a list of external admission webhooks and the + // affected resources and operations. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated ExternalAdmissionHook externalAdmissionHooks = 2; +} + +// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. +message ExternalAdmissionHookConfigurationList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ExternalAdmissionHookConfiguration. + repeated ExternalAdmissionHookConfiguration items = 2; +} + +// Initializer describes the name and the failure policy of an initializer, and +// what resources it applies to. +message Initializer { + // Name is the identifier of the initializer. It will be added to the + // object that needs to be initialized. + // Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where + // "alwayspullimages" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required + optional string name = 1; + + // Rules describes what resources/subresources the initializer cares about. + // The initializer cares about an operation if it matches _any_ Rule. + // Rule.Resources must not include subresources. + repeated Rule rules = 2; +} + +// InitializerConfiguration describes the configuration of initializers. +message InitializerConfiguration { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Initializers is a list of resources and their default initializers + // Order-sensitive. + // When merging multiple InitializerConfigurations, we sort the initializers + // from different InitializerConfigurations by the name of the + // InitializerConfigurations; the order of the initializers from the same + // InitializerConfiguration is preserved. + // +patchMergeKey=name + // +patchStrategy=merge + // +optional + repeated Initializer initializers = 2; +} + +// InitializerConfigurationList is a list of InitializerConfiguration. +message InitializerConfigurationList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of InitializerConfiguration. + repeated InitializerConfiguration items = 2; +} + +// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended +// to make sure that all the tuple expansions are valid. +message Rule { + // APIGroups is the API groups the resources belong to. '*' is all groups. + // If '*' is present, the length of the slice must be one. + // Required. + repeated string apiGroups = 1; + + // APIVersions is the API versions the resources belong to. '*' is all versions. + // If '*' is present, the length of the slice must be one. + // Required. + repeated string apiVersions = 2; + + // Resources is a list of resources this rule applies to. + // + // For example: + // 'pods' means pods. + // 'pods/log' means the log subresource of pods. + // '*' means all resources, but not subresources. + // 'pods/*' means all subresources of pods. + // '*/scale' means all scale subresources. + // '*/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not + // overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. + // Required. + repeated string resources = 3; +} + +// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make +// sure that all the tuple expansions are valid. +message RuleWithOperations { + // Operations is the operations the admission hook cares about - CREATE, UPDATE, or * + // for all operations. + // If '*' is present, the length of the slice must be one. + // Required. + repeated string operations = 1; + + // Rule is embedded, it describes other criteria of the rule, like + // APIGroups, APIVersions, Resources, etc. + optional Rule rule = 2; +} + +// ServiceReference holds a reference to Service.legacy.k8s.io +message ServiceReference { + // Namespace is the namespace of the service + // Required + optional string namespace = 1; + + // Name is the name of the service + // Required + optional string name = 2; +} + diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go new file mode 100644 index 0000000000..e178cf743e --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "admissionregistration.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &InitializerConfiguration{}, + &InitializerConfigurationList{}, + &ExternalAdmissionHookConfiguration{}, + &ExternalAdmissionHookConfigurationList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go new file mode 100644 index 0000000000..d4827e59d3 --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/types.go @@ -0,0 +1,219 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// InitializerConfiguration describes the configuration of initializers. +type InitializerConfiguration struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Initializers is a list of resources and their default initializers + // Order-sensitive. + // When merging multiple InitializerConfigurations, we sort the initializers + // from different InitializerConfigurations by the name of the + // InitializerConfigurations; the order of the initializers from the same + // InitializerConfiguration is preserved. + // +patchMergeKey=name + // +patchStrategy=merge + // +optional + Initializers []Initializer `json:"initializers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=initializers"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// InitializerConfigurationList is a list of InitializerConfiguration. +type InitializerConfigurationList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of InitializerConfiguration. + Items []InitializerConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Initializer describes the name and the failure policy of an initializer, and +// what resources it applies to. +type Initializer struct { + // Name is the identifier of the initializer. It will be added to the + // object that needs to be initialized. + // Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where + // "alwayspullimages" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // Rules describes what resources/subresources the initializer cares about. + // The initializer cares about an operation if it matches _any_ Rule. + // Rule.Resources must not include subresources. + Rules []Rule `json:"rules,omitempty" protobuf:"bytes,2,rep,name=rules"` +} + +// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended +// to make sure that all the tuple expansions are valid. +type Rule struct { + // APIGroups is the API groups the resources belong to. '*' is all groups. + // If '*' is present, the length of the slice must be one. + // Required. + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,1,rep,name=apiGroups"` + + // APIVersions is the API versions the resources belong to. '*' is all versions. + // If '*' is present, the length of the slice must be one. + // Required. + APIVersions []string `json:"apiVersions,omitempty" protobuf:"bytes,2,rep,name=apiVersions"` + + // Resources is a list of resources this rule applies to. + // + // For example: + // 'pods' means pods. + // 'pods/log' means the log subresource of pods. + // '*' means all resources, but not subresources. + // 'pods/*' means all subresources of pods. + // '*/scale' means all scale subresources. + // '*/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not + // overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. + // Required. + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` +} + +type FailurePolicyType string + +const ( + // Ignore means the initilizer is removed from the initializers list of an + // object if the initializer is timed out. + Ignore FailurePolicyType = "Ignore" + // For 1.7, only "Ignore" is allowed. "Fail" will be allowed when the + // extensible admission feature is beta. + Fail FailurePolicyType = "Fail" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ExternalAdmissionHookConfiguration describes the configuration of initializers. +type ExternalAdmissionHookConfiguration struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // ExternalAdmissionHooks is a list of external admission webhooks and the + // affected resources and operations. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + ExternalAdmissionHooks []ExternalAdmissionHook `json:"externalAdmissionHooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=externalAdmissionHooks"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. +type ExternalAdmissionHookConfigurationList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // List of ExternalAdmissionHookConfiguration. + Items []ExternalAdmissionHookConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ExternalAdmissionHook describes an external admission webhook and the +// resources and operations it applies to. +type ExternalAdmissionHook struct { + // The name of the external admission webhook. + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where + // "imagepolicy" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // ClientConfig defines how to communicate with the hook. + // Required + ClientConfig AdmissionHookClientConfig `json:"clientConfig" protobuf:"bytes,2,opt,name=clientConfig"` + + // Rules describes what operations on what resources/subresources the webhook cares about. + // The webhook cares about an operation if it matches _any_ Rule. + Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"` + + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - + // allowed values are Ignore or Fail. Defaults to Ignore. + // +optional + FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,4,opt,name=failurePolicy,casttype=FailurePolicyType"` +} + +// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make +// sure that all the tuple expansions are valid. +type RuleWithOperations struct { + // Operations is the operations the admission hook cares about - CREATE, UPDATE, or * + // for all operations. + // If '*' is present, the length of the slice must be one. + // Required. + Operations []OperationType `json:"operations,omitempty" protobuf:"bytes,1,rep,name=operations,casttype=OperationType"` + // Rule is embedded, it describes other criteria of the rule, like + // APIGroups, APIVersions, Resources, etc. + Rule `json:",inline" protobuf:"bytes,2,opt,name=rule"` +} + +type OperationType string + +// The constants should be kept in sync with those defined in k8s.io/kubernetes/pkg/admission/interface.go. +const ( + OperationAll OperationType = "*" + Create OperationType = "CREATE" + Update OperationType = "UPDATE" + Delete OperationType = "DELETE" + Connect OperationType = "CONNECT" +) + +// AdmissionHookClientConfig contains the information to make a TLS +// connection with the webhook +type AdmissionHookClientConfig struct { + // Service is a reference to the service for this webhook. If there is only + // one port open for the service, that port will be used. If there are multiple + // ports open, port 443 will be used if it is open, otherwise it is an error. + // Required + Service ServiceReference `json:"service" protobuf:"bytes,1,opt,name=service"` + // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. + // Required + CABundle []byte `json:"caBundle" protobuf:"bytes,2,opt,name=caBundle"` +} + +// ServiceReference holds a reference to Service.legacy.k8s.io +type ServiceReference struct { + // Namespace is the namespace of the service + // Required + Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"` + // Name is the name of the service + // Required + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` +} diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..0b30ecc802 --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go @@ -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. +*/ + +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_AdmissionHookClientConfig = map[string]string{ + "": "AdmissionHookClientConfig contains the information to make a TLS connection with the webhook", + "service": "Service is a reference to the service for this webhook. If there is only one port open for the service, that port will be used. If there are multiple ports open, port 443 will be used if it is open, otherwise it is an error. Required", + "caBundle": "CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. Required", +} + +func (AdmissionHookClientConfig) SwaggerDoc() map[string]string { + return map_AdmissionHookClientConfig +} + +var map_ExternalAdmissionHook = map[string]string{ + "": "ExternalAdmissionHook describes an external admission webhook and the resources and operations it applies to.", + "name": "The name of the external admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.", + "clientConfig": "ClientConfig defines how to communicate with the hook. Required", + "rules": "Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule.", + "failurePolicy": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.", +} + +func (ExternalAdmissionHook) SwaggerDoc() map[string]string { + return map_ExternalAdmissionHook +} + +var map_ExternalAdmissionHookConfiguration = map[string]string{ + "": "ExternalAdmissionHookConfiguration describes the configuration of initializers.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "externalAdmissionHooks": "ExternalAdmissionHooks is a list of external admission webhooks and the affected resources and operations.", +} + +func (ExternalAdmissionHookConfiguration) SwaggerDoc() map[string]string { + return map_ExternalAdmissionHookConfiguration +} + +var map_ExternalAdmissionHookConfigurationList = map[string]string{ + "": "ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ExternalAdmissionHookConfiguration.", +} + +func (ExternalAdmissionHookConfigurationList) SwaggerDoc() map[string]string { + return map_ExternalAdmissionHookConfigurationList +} + +var map_Initializer = map[string]string{ + "": "Initializer describes the name and the failure policy of an initializer, and what resources it applies to.", + "name": "Name is the identifier of the initializer. It will be added to the object that needs to be initialized. Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where \"alwayspullimages\" is the name of the webhook, and kubernetes.io is the name of the organization. Required", + "rules": "Rules describes what resources/subresources the initializer cares about. The initializer cares about an operation if it matches _any_ Rule. Rule.Resources must not include subresources.", +} + +func (Initializer) SwaggerDoc() map[string]string { + return map_Initializer +} + +var map_InitializerConfiguration = map[string]string{ + "": "InitializerConfiguration describes the configuration of initializers.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "initializers": "Initializers is a list of resources and their default initializers Order-sensitive. When merging multiple InitializerConfigurations, we sort the initializers from different InitializerConfigurations by the name of the InitializerConfigurations; the order of the initializers from the same InitializerConfiguration is preserved.", +} + +func (InitializerConfiguration) SwaggerDoc() map[string]string { + return map_InitializerConfiguration +} + +var map_InitializerConfigurationList = map[string]string{ + "": "InitializerConfigurationList is a list of InitializerConfiguration.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of InitializerConfiguration.", +} + +func (InitializerConfigurationList) SwaggerDoc() map[string]string { + return map_InitializerConfigurationList +} + +var map_Rule = map[string]string{ + "": "Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended to make sure that all the tuple expansions are valid.", + "apiGroups": "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.", + "apiVersions": "APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.", + "resources": "Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.", +} + +func (Rule) SwaggerDoc() map[string]string { + return map_Rule +} + +var map_RuleWithOperations = map[string]string{ + "": "RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.", + "operations": "Operations is the operations the admission hook cares about - CREATE, UPDATE, or * for all operations. If '*' is present, the length of the slice must be one. Required.", +} + +func (RuleWithOperations) SwaggerDoc() map[string]string { + return map_RuleWithOperations +} + +var map_ServiceReference = map[string]string{ + "": "ServiceReference holds a reference to Service.legacy.k8s.io", + "namespace": "Namespace is the namespace of the service Required", + "name": "Name is the name of the service Required", +} + +func (ServiceReference) SwaggerDoc() map[string]string { + return map_ServiceReference +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..118fed7503 --- /dev/null +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,363 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AdmissionHookClientConfig).DeepCopyInto(out.(*AdmissionHookClientConfig)) + return nil + }, InType: reflect.TypeOf(&AdmissionHookClientConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalAdmissionHook).DeepCopyInto(out.(*ExternalAdmissionHook)) + return nil + }, InType: reflect.TypeOf(&ExternalAdmissionHook{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalAdmissionHookConfiguration).DeepCopyInto(out.(*ExternalAdmissionHookConfiguration)) + return nil + }, InType: reflect.TypeOf(&ExternalAdmissionHookConfiguration{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalAdmissionHookConfigurationList).DeepCopyInto(out.(*ExternalAdmissionHookConfigurationList)) + return nil + }, InType: reflect.TypeOf(&ExternalAdmissionHookConfigurationList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Initializer).DeepCopyInto(out.(*Initializer)) + return nil + }, InType: reflect.TypeOf(&Initializer{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InitializerConfiguration).DeepCopyInto(out.(*InitializerConfiguration)) + return nil + }, InType: reflect.TypeOf(&InitializerConfiguration{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InitializerConfigurationList).DeepCopyInto(out.(*InitializerConfigurationList)) + return nil + }, InType: reflect.TypeOf(&InitializerConfigurationList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Rule).DeepCopyInto(out.(*Rule)) + return nil + }, InType: reflect.TypeOf(&Rule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RuleWithOperations).DeepCopyInto(out.(*RuleWithOperations)) + return nil + }, InType: reflect.TypeOf(&RuleWithOperations{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceReference).DeepCopyInto(out.(*ServiceReference)) + return nil + }, InType: reflect.TypeOf(&ServiceReference{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AdmissionHookClientConfig) DeepCopyInto(out *AdmissionHookClientConfig) { + *out = *in + out.Service = in.Service + if in.CABundle != nil { + in, out := &in.CABundle, &out.CABundle + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdmissionHookClientConfig. +func (in *AdmissionHookClientConfig) DeepCopy() *AdmissionHookClientConfig { + if in == nil { + return nil + } + out := new(AdmissionHookClientConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalAdmissionHook) DeepCopyInto(out *ExternalAdmissionHook) { + *out = *in + in.ClientConfig.DeepCopyInto(&out.ClientConfig) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]RuleWithOperations, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.FailurePolicy != nil { + in, out := &in.FailurePolicy, &out.FailurePolicy + if *in == nil { + *out = nil + } else { + *out = new(FailurePolicyType) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHook. +func (in *ExternalAdmissionHook) DeepCopy() *ExternalAdmissionHook { + if in == nil { + return nil + } + out := new(ExternalAdmissionHook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalAdmissionHookConfiguration) DeepCopyInto(out *ExternalAdmissionHookConfiguration) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.ExternalAdmissionHooks != nil { + in, out := &in.ExternalAdmissionHooks, &out.ExternalAdmissionHooks + *out = make([]ExternalAdmissionHook, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHookConfiguration. +func (in *ExternalAdmissionHookConfiguration) DeepCopy() *ExternalAdmissionHookConfiguration { + if in == nil { + return nil + } + out := new(ExternalAdmissionHookConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalAdmissionHookConfiguration) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalAdmissionHookConfigurationList) DeepCopyInto(out *ExternalAdmissionHookConfigurationList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ExternalAdmissionHookConfiguration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAdmissionHookConfigurationList. +func (in *ExternalAdmissionHookConfigurationList) DeepCopy() *ExternalAdmissionHookConfigurationList { + if in == nil { + return nil + } + out := new(ExternalAdmissionHookConfigurationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalAdmissionHookConfigurationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Initializer) DeepCopyInto(out *Initializer) { + *out = *in + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]Rule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Initializer. +func (in *Initializer) DeepCopy() *Initializer { + if in == nil { + return nil + } + out := new(Initializer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InitializerConfiguration) DeepCopyInto(out *InitializerConfiguration) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + *out = make([]Initializer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InitializerConfiguration. +func (in *InitializerConfiguration) DeepCopy() *InitializerConfiguration { + if in == nil { + return nil + } + out := new(InitializerConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InitializerConfiguration) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InitializerConfigurationList) DeepCopyInto(out *InitializerConfigurationList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]InitializerConfiguration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InitializerConfigurationList. +func (in *InitializerConfigurationList) DeepCopy() *InitializerConfigurationList { + if in == nil { + return nil + } + out := new(InitializerConfigurationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InitializerConfigurationList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Rule) DeepCopyInto(out *Rule) { + *out = *in + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIVersions != nil { + in, out := &in.APIVersions, &out.APIVersions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rule. +func (in *Rule) DeepCopy() *Rule { + if in == nil { + return nil + } + out := new(Rule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuleWithOperations) DeepCopyInto(out *RuleWithOperations) { + *out = *in + if in.Operations != nil { + in, out := &in.Operations, &out.Operations + *out = make([]OperationType, len(*in)) + copy(*out, *in) + } + in.Rule.DeepCopyInto(&out.Rule) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleWithOperations. +func (in *RuleWithOperations) DeepCopy() *RuleWithOperations { + if in == nil { + return nil + } + out := new(RuleWithOperations) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceReference) DeepCopyInto(out *ServiceReference) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceReference. +func (in *ServiceReference) DeepCopy() *ServiceReference { + if in == nil { + return nil + } + out := new(ServiceReference) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/apps/OWNERS b/vendor/k8s.io/api/apps/OWNERS new file mode 100755 index 0000000000..e06ff4c481 --- /dev/null +++ b/vendor/k8s.io/api/apps/OWNERS @@ -0,0 +1,20 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- deads2k +- caesarxuchao +- pmorie +- sttts +- saad-ali +- ncdc +- tallclair +- timothysc +- dims +- errordeveloper +- mml +- m1093782566 +- mbohlool +- david-mcmahon +- kevin-wangzefeng +- jianhuiz diff --git a/vendor/k8s.io/api/apps/v1beta1/BUILD b/vendor/k8s.io/api/apps/v1beta1/BUILD new file mode 100644 index 0000000000..dd256cbd31 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/BUILD @@ -0,0 +1,47 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/apps/v1beta1/doc.go b/vendor/k8s.io/api/apps/v1beta1/doc.go new file mode 100644 index 0000000000..158f0000c7 --- /dev/null +++ b/vendor/k8s.io/api/apps/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. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package v1beta1 // import "k8s.io/api/apps/v1beta1" diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.pb.go b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go new file mode 100644 index 0000000000..6d5e1f7a1e --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go @@ -0,0 +1,4964 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/apps/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1/generated.proto + + It has these top-level messages: + ControllerRevision + ControllerRevisionList + Deployment + DeploymentCondition + DeploymentList + DeploymentRollback + DeploymentSpec + DeploymentStatus + DeploymentStrategy + RollbackConfig + RollingUpdateDeployment + RollingUpdateStatefulSetStrategy + Scale + ScaleSpec + ScaleStatus + StatefulSet + StatefulSetList + StatefulSetSpec + StatefulSetStatus + StatefulSetUpdateStrategy +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ControllerRevision) Reset() { *m = ControllerRevision{} } +func (*ControllerRevision) ProtoMessage() {} +func (*ControllerRevision) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ControllerRevisionList) Reset() { *m = ControllerRevisionList{} } +func (*ControllerRevisionList) ProtoMessage() {} +func (*ControllerRevisionList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *Deployment) Reset() { *m = Deployment{} } +func (*Deployment) ProtoMessage() {} +func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *DeploymentCondition) Reset() { *m = DeploymentCondition{} } +func (*DeploymentCondition) ProtoMessage() {} +func (*DeploymentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *DeploymentList) Reset() { *m = DeploymentList{} } +func (*DeploymentList) ProtoMessage() {} +func (*DeploymentList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *DeploymentRollback) Reset() { *m = DeploymentRollback{} } +func (*DeploymentRollback) ProtoMessage() {} +func (*DeploymentRollback) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *DeploymentSpec) Reset() { *m = DeploymentSpec{} } +func (*DeploymentSpec) ProtoMessage() {} +func (*DeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *DeploymentStatus) Reset() { *m = DeploymentStatus{} } +func (*DeploymentStatus) ProtoMessage() {} +func (*DeploymentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *DeploymentStrategy) Reset() { *m = DeploymentStrategy{} } +func (*DeploymentStrategy) ProtoMessage() {} +func (*DeploymentStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *RollbackConfig) Reset() { *m = RollbackConfig{} } +func (*RollbackConfig) ProtoMessage() {} +func (*RollbackConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *RollingUpdateDeployment) Reset() { *m = RollingUpdateDeployment{} } +func (*RollingUpdateDeployment) ProtoMessage() {} +func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{10} +} + +func (m *RollingUpdateStatefulSetStrategy) Reset() { *m = RollingUpdateStatefulSetStrategy{} } +func (*RollingUpdateStatefulSetStrategy) ProtoMessage() {} +func (*RollingUpdateStatefulSetStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{11} +} + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *StatefulSet) Reset() { *m = StatefulSet{} } +func (*StatefulSet) ProtoMessage() {} +func (*StatefulSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *StatefulSetList) Reset() { *m = StatefulSetList{} } +func (*StatefulSetList) ProtoMessage() {} +func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} } +func (*StatefulSetSpec) ProtoMessage() {} +func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} } +func (*StatefulSetStatus) ProtoMessage() {} +func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} } +func (*StatefulSetUpdateStrategy) ProtoMessage() {} +func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{19} +} + +func init() { + proto.RegisterType((*ControllerRevision)(nil), "k8s.io.api.apps.v1beta1.ControllerRevision") + proto.RegisterType((*ControllerRevisionList)(nil), "k8s.io.api.apps.v1beta1.ControllerRevisionList") + proto.RegisterType((*Deployment)(nil), "k8s.io.api.apps.v1beta1.Deployment") + proto.RegisterType((*DeploymentCondition)(nil), "k8s.io.api.apps.v1beta1.DeploymentCondition") + proto.RegisterType((*DeploymentList)(nil), "k8s.io.api.apps.v1beta1.DeploymentList") + proto.RegisterType((*DeploymentRollback)(nil), "k8s.io.api.apps.v1beta1.DeploymentRollback") + proto.RegisterType((*DeploymentSpec)(nil), "k8s.io.api.apps.v1beta1.DeploymentSpec") + proto.RegisterType((*DeploymentStatus)(nil), "k8s.io.api.apps.v1beta1.DeploymentStatus") + proto.RegisterType((*DeploymentStrategy)(nil), "k8s.io.api.apps.v1beta1.DeploymentStrategy") + proto.RegisterType((*RollbackConfig)(nil), "k8s.io.api.apps.v1beta1.RollbackConfig") + proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.api.apps.v1beta1.RollingUpdateDeployment") + proto.RegisterType((*RollingUpdateStatefulSetStrategy)(nil), "k8s.io.api.apps.v1beta1.RollingUpdateStatefulSetStrategy") + proto.RegisterType((*Scale)(nil), "k8s.io.api.apps.v1beta1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.api.apps.v1beta1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.api.apps.v1beta1.ScaleStatus") + proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1beta1.StatefulSet") + proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1beta1.StatefulSetList") + proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1beta1.StatefulSetSpec") + proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1beta1.StatefulSetStatus") + proto.RegisterType((*StatefulSetUpdateStrategy)(nil), "k8s.io.api.apps.v1beta1.StatefulSetUpdateStrategy") +} +func (m *ControllerRevision) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ControllerRevision) 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.Data.Size())) + n2, err := m.Data.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Revision)) + return i, nil +} + +func (m *ControllerRevisionList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ControllerRevisionList) 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())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + 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 *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())) + 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 *DeploymentCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentCondition) 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] = 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.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastUpdateTime.Size())) + n7, err := m.LastUpdateTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n8, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + 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 { + keysForUpdatedAnnotations := make([]string, 0, len(m.UpdatedAnnotations)) + for k := range m.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + for _, k := range keysForUpdatedAnnotations { + dAtA[i] = 0x12 + i++ + v := m.UpdatedAnnotations[string(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())) + n10, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + 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())) + n11, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n12, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Strategy.Size())) + n13, err := m.Strategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + 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())) + n14, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + if m.ProgressDeadlineSeconds != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ProgressDeadlineSeconds)) + } + 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)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + 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())) + n15, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + } + 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())) + n16, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + if m.MaxSurge != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxSurge.Size())) + n17, err := m.MaxSurge.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + return i, nil +} + +func (m *RollingUpdateStatefulSetStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateStatefulSetStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Partition != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Partition)) + } + 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())) + n18, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n19, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n20, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + 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 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(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 *StatefulSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSet) 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())) + n21, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n22, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n23, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + return i, nil +} + +func (m *StatefulSetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetList) 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())) + n24, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + 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 *StatefulSetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetSpec) 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())) + n25, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n26, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + 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) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodManagementPolicy))) + i += copy(dAtA[i:], m.PodManagementPolicy) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size())) + n27, err := m.UpdateStrategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + return i, nil +} + +func (m *StatefulSetStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetStatus) 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)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedReplicas)) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CurrentRevision))) + i += copy(dAtA[i:], m.CurrentRevision) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UpdateRevision))) + i += copy(dAtA[i:], m.UpdateRevision) + if m.CollisionCount != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *StatefulSetUpdateStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetUpdateStrategy) 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())) + n28, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + } + 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 *ControllerRevision) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Data.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Revision)) + return n +} + +func (m *ControllerRevisionList) 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 *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 *DeploymentCondition) 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.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)) + l = m.LastTransitionTime.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)) + } + if m.ProgressDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ProgressDeadlineSeconds)) + } + 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)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + 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 *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 *RollingUpdateStatefulSetStrategy) Size() (n int) { + var l int + _ = l + if m.Partition != nil { + n += 1 + sovGenerated(uint64(*m.Partition)) + } + 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 *StatefulSet) 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 *StatefulSetList) 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 *StatefulSetSpec) 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)) + l = len(m.PodManagementPolicy) + n += 1 + l + sovGenerated(uint64(l)) + l = m.UpdateStrategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + return n +} + +func (m *StatefulSetStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.UpdatedReplicas)) + l = len(m.CurrentRevision) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UpdateRevision) + n += 1 + l + sovGenerated(uint64(l)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *StatefulSetUpdateStrategy) 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 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 *ControllerRevision) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ControllerRevision{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + strings.Replace(strings.Replace(this.Data.String(), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `}`, + }, "") + return s +} +func (this *ControllerRevisionList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ControllerRevisionList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ControllerRevision", "ControllerRevision", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *DeploymentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_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) + `,`, + `ProgressDeadlineSeconds:` + valueToStringGenerated(this.ProgressDeadlineSeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + 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 *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_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `MaxSurge:` + strings.Replace(fmt.Sprintf("%v", this.MaxSurge), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateStatefulSetStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateStatefulSetStrategy{`, + `Partition:` + valueToStringGenerated(this.Partition) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *StatefulSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "StatefulSetSpec", "StatefulSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "StatefulSetStatus", "StatefulSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StatefulSet", "StatefulSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `VolumeClaimTemplates:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeClaimTemplates), "PersistentVolumeClaim", "k8s_io_api_core_v1.PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, + `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `PodManagementPolicy:` + fmt.Sprintf("%v", this.PodManagementPolicy) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(this.UpdateStrategy.String(), "StatefulSetUpdateStrategy", "StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`, + `CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`, + `UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetUpdateStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetUpdateStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateStatefulSetStrategy", "RollingUpdateStatefulSetStrategy", 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 *ControllerRevision) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ControllerRevision: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ControllerRevision: 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 + } + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + 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 *ControllerRevisionList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ControllerRevisionList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ControllerRevisionList: 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, ControllerRevision{}) + 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 *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 *DeploymentCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentCondition: 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 = DeploymentConditionType(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_api_core_v1.ConditionStatus(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 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 6: + 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 + case 7: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + if m.UpdatedAnnotations == nil { + m.UpdatedAnnotations = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.UpdatedAnnotations[mapkey] = mapvalue + } else { + var mapvalue 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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProgressDeadlineSeconds", 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.ProgressDeadlineSeconds = &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 *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 + } + } + case 6: + 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, DeploymentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + 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 + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *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 *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_apimachinery_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_apimachinery_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 *RollingUpdateStatefulSetStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateStatefulSetStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateStatefulSetStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", 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.Partition = &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 msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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 + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Selector[mapkey] = mapvalue + } else { + var mapvalue 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 *StatefulSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSet: 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 *StatefulSetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetList: 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, StatefulSet{}) + 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 *StatefulSetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetSpec: 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_apimachinery_pkg_apis_meta_v1.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_api_core_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 + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodManagementPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodManagementPolicy = PodManagementPolicyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetStatus: 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 + } + } + case 3: + 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 + } + } + case 4: + 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 5: + 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 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentRevision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CurrentRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateRevision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UpdateRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *StatefulSetUpdateStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetUpdateStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetUpdateStrategy: 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 = StatefulSetUpdateStrategyType(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 = &RollingUpdateStatefulSetStrategy{} + } + 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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1820 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4b, 0x6f, 0x1b, 0xc9, + 0x11, 0xd6, 0x50, 0xa4, 0x44, 0xb6, 0x56, 0x94, 0xd5, 0x52, 0x24, 0xae, 0x36, 0xa1, 0x04, 0x66, + 0xb1, 0x2b, 0xef, 0xae, 0x86, 0x6b, 0xd9, 0x31, 0xfc, 0x00, 0x8c, 0x88, 0x94, 0x63, 0xcb, 0x90, + 0x22, 0xb9, 0x29, 0x39, 0x88, 0x93, 0x00, 0x6e, 0x0e, 0xdb, 0xd4, 0x58, 0xf3, 0xc2, 0x4c, 0x0f, + 0x63, 0x22, 0x97, 0xdc, 0x13, 0xc0, 0x39, 0xe7, 0x57, 0xe4, 0x18, 0x24, 0xb7, 0x9c, 0x74, 0x09, + 0x60, 0xe4, 0x12, 0x9f, 0x84, 0x98, 0xbe, 0xe6, 0x9a, 0x8b, 0x81, 0x00, 0x41, 0xf7, 0xf4, 0xbc, + 0x67, 0x24, 0x2a, 0x40, 0x74, 0xc8, 0x8d, 0xd3, 0x55, 0xf5, 0x55, 0x75, 0x77, 0x75, 0xd5, 0x57, + 0x04, 0x3f, 0x3c, 0xb9, 0xe3, 0xc8, 0xaa, 0xd9, 0x3c, 0x71, 0xbb, 0xc4, 0x36, 0x08, 0x25, 0x4e, + 0x73, 0x40, 0x8c, 0x9e, 0x69, 0x37, 0x85, 0x00, 0x5b, 0x6a, 0x13, 0x5b, 0x96, 0xd3, 0x1c, 0xdc, + 0xe8, 0x12, 0x8a, 0x6f, 0x34, 0xfb, 0xc4, 0x20, 0x36, 0xa6, 0xa4, 0x27, 0x5b, 0xb6, 0x49, 0x4d, + 0xb8, 0xec, 0x29, 0xca, 0xd8, 0x52, 0x65, 0xa6, 0x28, 0x0b, 0xc5, 0x95, 0x8d, 0xbe, 0x4a, 0x8f, + 0xdd, 0xae, 0xac, 0x98, 0x7a, 0xb3, 0x6f, 0xf6, 0xcd, 0x26, 0xd7, 0xef, 0xba, 0x2f, 0xf9, 0x17, + 0xff, 0xe0, 0xbf, 0x3c, 0x9c, 0x95, 0x46, 0xc4, 0xa1, 0x62, 0xda, 0xa4, 0x39, 0x48, 0xf9, 0x5a, + 0xb9, 0x1e, 0xd1, 0xb1, 0x4c, 0x4d, 0x55, 0x86, 0x79, 0x61, 0xad, 0xdc, 0x0a, 0x55, 0x75, 0xac, + 0x1c, 0xab, 0x06, 0xb1, 0x87, 0x4d, 0xeb, 0xa4, 0xcf, 0x16, 0x9c, 0xa6, 0x4e, 0x28, 0xce, 0x72, + 0xd0, 0xcc, 0xb3, 0xb2, 0x5d, 0x83, 0xaa, 0x3a, 0x49, 0x19, 0xdc, 0xbe, 0xc8, 0xc0, 0x51, 0x8e, + 0x89, 0x8e, 0x53, 0x76, 0x37, 0xf3, 0xec, 0x5c, 0xaa, 0x6a, 0x4d, 0xd5, 0xa0, 0x0e, 0xb5, 0x93, + 0x46, 0x8d, 0x7f, 0x49, 0x00, 0xb6, 0x4d, 0x83, 0xda, 0xa6, 0xa6, 0x11, 0x1b, 0x91, 0x81, 0xea, + 0xa8, 0xa6, 0x01, 0x5f, 0x80, 0x32, 0xdb, 0x4f, 0x0f, 0x53, 0x5c, 0x93, 0xd6, 0xa4, 0xf5, 0x99, + 0xcd, 0x6f, 0xe5, 0xf0, 0x52, 0x02, 0x78, 0xd9, 0x3a, 0xe9, 0xb3, 0x05, 0x47, 0x66, 0xda, 0xf2, + 0xe0, 0x86, 0xbc, 0xdf, 0x7d, 0x45, 0x14, 0xba, 0x47, 0x28, 0x6e, 0xc1, 0xd3, 0xb3, 0xd5, 0x89, + 0xd1, 0xd9, 0x2a, 0x08, 0xd7, 0x50, 0x80, 0x0a, 0xf7, 0x41, 0x91, 0xa3, 0x17, 0x38, 0xfa, 0x46, + 0x2e, 0xba, 0xd8, 0xb4, 0x8c, 0xf0, 0x2f, 0x1f, 0xbe, 0xa6, 0xc4, 0x60, 0xe1, 0xb5, 0x3e, 0x11, + 0xd0, 0xc5, 0x6d, 0x4c, 0x31, 0xe2, 0x40, 0xf0, 0x1b, 0x50, 0xb6, 0x45, 0xf8, 0xb5, 0xc9, 0x35, + 0x69, 0x7d, 0xb2, 0x75, 0x4d, 0x68, 0x95, 0xfd, 0x6d, 0xa1, 0x40, 0xa3, 0x71, 0x2a, 0x81, 0xa5, + 0xf4, 0xbe, 0x77, 0x55, 0x87, 0xc2, 0x9f, 0xa7, 0xf6, 0x2e, 0x8f, 0xb7, 0x77, 0x66, 0xcd, 0x77, + 0x1e, 0x38, 0xf6, 0x57, 0x22, 0xfb, 0x3e, 0x00, 0x25, 0x95, 0x12, 0xdd, 0xa9, 0x15, 0xd6, 0x26, + 0xd7, 0x67, 0x36, 0xbf, 0x96, 0x73, 0x72, 0x5d, 0x4e, 0x47, 0xd7, 0x9a, 0x15, 0xb8, 0xa5, 0x1d, + 0x86, 0x80, 0x3c, 0xa0, 0xc6, 0x6f, 0x0b, 0x00, 0x6c, 0x13, 0x4b, 0x33, 0x87, 0x3a, 0x31, 0xe8, + 0x15, 0x5c, 0xdd, 0x0e, 0x28, 0x3a, 0x16, 0x51, 0xc4, 0xd5, 0x7d, 0x99, 0xbb, 0x83, 0x30, 0xa8, + 0x8e, 0x45, 0x94, 0xf0, 0xd2, 0xd8, 0x17, 0xe2, 0x10, 0xf0, 0x29, 0x98, 0x72, 0x28, 0xa6, 0xae, + 0xc3, 0xaf, 0x6c, 0x66, 0xf3, 0xfa, 0x38, 0x60, 0xdc, 0xa0, 0x55, 0x15, 0x70, 0x53, 0xde, 0x37, + 0x12, 0x40, 0x8d, 0xbf, 0x4f, 0x82, 0x85, 0x50, 0xb9, 0x6d, 0x1a, 0x3d, 0x95, 0xb2, 0x94, 0xbe, + 0x0f, 0x8a, 0x74, 0x68, 0x11, 0x7e, 0x26, 0x95, 0xd6, 0x97, 0x7e, 0x30, 0x87, 0x43, 0x8b, 0x7c, + 0x3c, 0x5b, 0x5d, 0xce, 0x30, 0x61, 0x22, 0xc4, 0x8d, 0xe0, 0x6e, 0x10, 0x67, 0x81, 0x9b, 0xdf, + 0x8a, 0x3b, 0xff, 0x78, 0xb6, 0x9a, 0x51, 0x6b, 0xe4, 0x00, 0x29, 0x1e, 0x22, 0xfc, 0x02, 0x4c, + 0xd9, 0x04, 0x3b, 0xa6, 0x51, 0x2b, 0x72, 0xb4, 0x60, 0x2b, 0x88, 0xaf, 0x22, 0x21, 0x85, 0xd7, + 0xc1, 0xb4, 0x4e, 0x1c, 0x07, 0xf7, 0x49, 0xad, 0xc4, 0x15, 0xe7, 0x84, 0xe2, 0xf4, 0x9e, 0xb7, + 0x8c, 0x7c, 0x39, 0x7c, 0x05, 0xaa, 0x1a, 0x76, 0xe8, 0x91, 0xd5, 0xc3, 0x94, 0x1c, 0xaa, 0x3a, + 0xa9, 0x4d, 0xf1, 0x03, 0xfd, 0x6a, 0xbc, 0xbb, 0x67, 0x16, 0xad, 0x25, 0x81, 0x5e, 0xdd, 0x8d, + 0x21, 0xa1, 0x04, 0x32, 0x1c, 0x00, 0xc8, 0x56, 0x0e, 0x6d, 0x6c, 0x38, 0xde, 0x41, 0x31, 0x7f, + 0xd3, 0x97, 0xf6, 0xb7, 0x22, 0xfc, 0xc1, 0xdd, 0x14, 0x1a, 0xca, 0xf0, 0xd0, 0xf8, 0xa3, 0x04, + 0xaa, 0xe1, 0x35, 0x5d, 0xc1, 0x5b, 0x7d, 0x1c, 0x7f, 0xab, 0xdf, 0x1f, 0x23, 0x39, 0x73, 0xde, + 0xe8, 0x3f, 0x0b, 0x00, 0x86, 0x4a, 0xc8, 0xd4, 0xb4, 0x2e, 0x56, 0x4e, 0xe0, 0x1a, 0x28, 0x1a, + 0x58, 0xf7, 0x73, 0x32, 0x78, 0x20, 0x3f, 0xc6, 0x3a, 0x41, 0x5c, 0x02, 0xdf, 0x48, 0x00, 0xba, + 0xfc, 0xe8, 0x7b, 0x5b, 0x86, 0x61, 0x52, 0xcc, 0x4e, 0xc3, 0x0f, 0xa8, 0x3d, 0x46, 0x40, 0xbe, + 0x2f, 0xf9, 0x28, 0x85, 0xf2, 0xd0, 0xa0, 0xf6, 0x30, 0xbc, 0x85, 0xb4, 0x02, 0xca, 0x70, 0x0d, + 0x7f, 0x06, 0x80, 0x2d, 0x30, 0x0f, 0x4d, 0xf1, 0x6c, 0xf3, 0x6b, 0x80, 0xef, 0xbe, 0x6d, 0x1a, + 0x2f, 0xd5, 0x7e, 0x58, 0x58, 0x50, 0x00, 0x81, 0x22, 0x70, 0x2b, 0x0f, 0xc1, 0x72, 0x4e, 0x9c, + 0xf0, 0x1a, 0x98, 0x3c, 0x21, 0x43, 0xef, 0xa8, 0x10, 0xfb, 0x09, 0x17, 0x41, 0x69, 0x80, 0x35, + 0x97, 0x78, 0x6f, 0x12, 0x79, 0x1f, 0xf7, 0x0a, 0x77, 0xa4, 0xc6, 0x1f, 0x4a, 0xd1, 0x4c, 0x61, + 0xf5, 0x06, 0xae, 0xb3, 0xf6, 0x60, 0x69, 0xaa, 0x82, 0x1d, 0x8e, 0x51, 0x6a, 0x7d, 0xe2, 0xb5, + 0x06, 0x6f, 0x0d, 0x05, 0x52, 0xf8, 0x0b, 0x50, 0x76, 0x88, 0x46, 0x14, 0x6a, 0xda, 0xa2, 0xc4, + 0xdd, 0x1c, 0x33, 0xa7, 0x70, 0x97, 0x68, 0x1d, 0x61, 0xea, 0xc1, 0xfb, 0x5f, 0x28, 0x80, 0x84, + 0x4f, 0x41, 0x99, 0x12, 0xdd, 0xd2, 0x30, 0x25, 0xe2, 0xf4, 0x62, 0x79, 0xc5, 0x6a, 0x07, 0x03, + 0x3b, 0x30, 0x7b, 0x87, 0x42, 0x8d, 0x57, 0xcf, 0x20, 0x4f, 0xfd, 0x55, 0x14, 0xc0, 0xc0, 0x9f, + 0x82, 0xb2, 0x43, 0x59, 0x57, 0xef, 0x0f, 0x79, 0x45, 0x39, 0xaf, 0xad, 0x44, 0xeb, 0xa8, 0x67, + 0x12, 0x42, 0xfb, 0x2b, 0x28, 0x80, 0x83, 0x5b, 0x60, 0x4e, 0x57, 0x0d, 0x44, 0x70, 0x6f, 0xd8, + 0x21, 0x8a, 0x69, 0xf4, 0x1c, 0x5e, 0x8a, 0x4a, 0xad, 0x65, 0x61, 0x34, 0xb7, 0x17, 0x17, 0xa3, + 0xa4, 0x3e, 0xdc, 0x05, 0x8b, 0x7e, 0xdb, 0x7d, 0xac, 0x3a, 0xd4, 0xb4, 0x87, 0xbb, 0xaa, 0xae, + 0x52, 0x5e, 0xa0, 0x4a, 0xad, 0xda, 0xe8, 0x6c, 0x75, 0x11, 0x65, 0xc8, 0x51, 0xa6, 0x15, 0xab, + 0x9d, 0x16, 0x76, 0x1d, 0xd2, 0xe3, 0x05, 0xa7, 0x1c, 0xd6, 0xce, 0x03, 0xbe, 0x8a, 0x84, 0x14, + 0xfe, 0x24, 0x96, 0xa6, 0xe5, 0xcb, 0xa5, 0x69, 0x35, 0x3f, 0x45, 0xe1, 0x11, 0x58, 0xb6, 0x6c, + 0xb3, 0x6f, 0x13, 0xc7, 0xd9, 0x26, 0xb8, 0xa7, 0xa9, 0x06, 0xf1, 0x4f, 0xa6, 0xc2, 0x77, 0xf4, + 0xd9, 0xe8, 0x6c, 0x75, 0xf9, 0x20, 0x5b, 0x05, 0xe5, 0xd9, 0x36, 0xfe, 0x52, 0x04, 0xd7, 0x92, + 0x3d, 0x0e, 0x3e, 0x01, 0xd0, 0xec, 0x3a, 0xc4, 0x1e, 0x90, 0xde, 0x23, 0x8f, 0xb8, 0x31, 0x76, + 0x23, 0x71, 0x76, 0x13, 0xbc, 0xdb, 0xfd, 0x94, 0x06, 0xca, 0xb0, 0xf2, 0xf8, 0x91, 0x78, 0x00, + 0x05, 0x1e, 0x68, 0x84, 0x1f, 0xa5, 0x1e, 0xc1, 0x16, 0x98, 0x13, 0x6f, 0xdf, 0x17, 0xf2, 0x64, + 0x8d, 0xdc, 0xfb, 0x51, 0x5c, 0x8c, 0x92, 0xfa, 0xf0, 0x11, 0x98, 0xc7, 0x03, 0xac, 0x6a, 0xb8, + 0xab, 0x91, 0x00, 0xa4, 0xc8, 0x41, 0x3e, 0x15, 0x20, 0xf3, 0x5b, 0x49, 0x05, 0x94, 0xb6, 0x81, + 0x7b, 0x60, 0xc1, 0x35, 0xd2, 0x50, 0x5e, 0x1e, 0x7e, 0x26, 0xa0, 0x16, 0x8e, 0xd2, 0x2a, 0x28, + 0xcb, 0x0e, 0xbe, 0x00, 0x40, 0xf1, 0x1b, 0xb3, 0x53, 0x9b, 0xe2, 0x95, 0xf4, 0x9b, 0x31, 0xde, + 0x4b, 0xd0, 0xcd, 0xc3, 0x2a, 0x16, 0x2c, 0x39, 0x28, 0x82, 0x09, 0xef, 0x83, 0x59, 0x9b, 0xbd, + 0x80, 0x20, 0xd4, 0x69, 0x1e, 0xea, 0x77, 0x84, 0xd9, 0x2c, 0x8a, 0x0a, 0x51, 0x5c, 0x17, 0xde, + 0x03, 0x55, 0xc5, 0xd4, 0x34, 0x9e, 0xf9, 0x6d, 0xd3, 0x35, 0x28, 0x4f, 0xde, 0x52, 0x0b, 0xb2, + 0xce, 0xdc, 0x8e, 0x49, 0x50, 0x42, 0xb3, 0xf1, 0x67, 0x29, 0xda, 0x66, 0xfc, 0xe7, 0x0c, 0xef, + 0xc5, 0xa8, 0xcf, 0x17, 0x09, 0xea, 0xb3, 0x94, 0xb6, 0x88, 0x30, 0x1f, 0x15, 0xcc, 0xb2, 0xe4, + 0x57, 0x8d, 0xbe, 0x77, 0xe1, 0xa2, 0x24, 0x7e, 0x7b, 0xee, 0x53, 0x0a, 0xb4, 0x23, 0x8d, 0x71, + 0x9e, 0xef, 0x3c, 0x2a, 0x44, 0x71, 0xe4, 0xc6, 0x03, 0x50, 0x8d, 0xbf, 0xc3, 0x18, 0xa7, 0x97, + 0x2e, 0xe4, 0xf4, 0x1f, 0x24, 0xb0, 0x9c, 0xe3, 0x1d, 0x6a, 0xa0, 0xaa, 0xe3, 0xd7, 0x91, 0x1c, + 0xb9, 0x90, 0x1b, 0xb3, 0xa9, 0x49, 0xf6, 0xa6, 0x26, 0x79, 0xc7, 0xa0, 0xfb, 0x76, 0x87, 0xda, + 0xaa, 0xd1, 0xf7, 0xee, 0x61, 0x2f, 0x86, 0x85, 0x12, 0xd8, 0xf0, 0x39, 0x28, 0xeb, 0xf8, 0x75, + 0xc7, 0xb5, 0xfb, 0x59, 0xe7, 0x35, 0x9e, 0x1f, 0xde, 0x3f, 0xf6, 0x04, 0x0a, 0x0a, 0xf0, 0x1a, + 0xfb, 0x60, 0x2d, 0xb6, 0x49, 0x56, 0x2a, 0xc8, 0x4b, 0x57, 0xeb, 0x90, 0xf0, 0xc2, 0xbf, 0x06, + 0x15, 0x0b, 0xdb, 0x54, 0x0d, 0xca, 0x45, 0xa9, 0x35, 0x3b, 0x3a, 0x5b, 0xad, 0x1c, 0xf8, 0x8b, + 0x28, 0x94, 0x37, 0xfe, 0x2d, 0x81, 0x52, 0x47, 0xc1, 0x1a, 0xb9, 0x82, 0xd1, 0x61, 0x3b, 0x36, + 0x3a, 0x34, 0x72, 0x93, 0x88, 0xc7, 0x93, 0x3b, 0x35, 0xec, 0x26, 0xa6, 0x86, 0xcf, 0x2f, 0xc0, + 0x39, 0x7f, 0x60, 0xb8, 0x0b, 0x2a, 0x81, 0xbb, 0x58, 0x95, 0x94, 0x2e, 0xaa, 0x92, 0x8d, 0xdf, + 0x17, 0xc0, 0x4c, 0xc4, 0xc5, 0xe5, 0xac, 0xd9, 0x71, 0x47, 0x88, 0x06, 0x2b, 0x43, 0x9b, 0xe3, + 0x6c, 0x44, 0xf6, 0x49, 0x85, 0xc7, 0xdf, 0xc2, 0xee, 0x9d, 0xe6, 0x1a, 0x0f, 0x40, 0x95, 0x62, + 0xbb, 0x4f, 0xa8, 0x2f, 0xe3, 0x07, 0x56, 0x09, 0x99, 0xfe, 0x61, 0x4c, 0x8a, 0x12, 0xda, 0x2b, + 0xf7, 0xc1, 0x6c, 0xcc, 0xd9, 0xa5, 0x48, 0xd8, 0x1b, 0x76, 0x38, 0x61, 0x72, 0x5e, 0x41, 0x76, + 0x3d, 0x89, 0x65, 0xd7, 0x7a, 0xfe, 0x61, 0x46, 0x9e, 0x4c, 0x5e, 0x8e, 0xa1, 0x44, 0x8e, 0x7d, + 0x35, 0x16, 0xda, 0xf9, 0x99, 0xf6, 0x27, 0x09, 0xcc, 0x45, 0xb4, 0xaf, 0x60, 0x82, 0xd9, 0x89, + 0x4f, 0x30, 0x9f, 0x8f, 0xb3, 0x89, 0x9c, 0x11, 0xe6, 0xaf, 0xa5, 0x58, 0xf0, 0xff, 0xf7, 0xa4, + 0xfa, 0x57, 0x60, 0x71, 0x60, 0x6a, 0xae, 0x4e, 0xda, 0x1a, 0x56, 0x75, 0x5f, 0x81, 0x31, 0x98, + 0xc9, 0xe4, 0x1f, 0x15, 0x01, 0x3c, 0xb1, 0x1d, 0xd5, 0xa1, 0xc4, 0xa0, 0xcf, 0x42, 0xcb, 0xd6, + 0x77, 0x85, 0x93, 0xc5, 0x67, 0x19, 0x70, 0x28, 0xd3, 0x09, 0xfc, 0x01, 0x98, 0x61, 0x04, 0x4e, + 0x55, 0x08, 0x9b, 0x05, 0xc5, 0xf4, 0xbf, 0x20, 0x80, 0x66, 0x3a, 0xa1, 0x08, 0x45, 0xf5, 0xe0, + 0x31, 0x58, 0xb0, 0xcc, 0xde, 0x1e, 0x36, 0x70, 0x9f, 0xb0, 0xb6, 0x77, 0xc0, 0xff, 0xd0, 0xe4, + 0x4c, 0xbb, 0xd2, 0xba, 0xed, 0x33, 0xa5, 0x83, 0xb4, 0xca, 0x47, 0x46, 0x59, 0xd3, 0xcb, 0x9c, + 0x07, 0x64, 0x41, 0x42, 0x1b, 0x54, 0x5d, 0xd1, 0x7e, 0xc4, 0xe0, 0xe1, 0xcd, 0xff, 0x9b, 0xe3, + 0x64, 0xd8, 0x51, 0xcc, 0x32, 0xac, 0x46, 0xf1, 0x75, 0x94, 0xf0, 0x90, 0x3b, 0x48, 0x94, 0xff, + 0x9b, 0x41, 0xa2, 0xf1, 0x9b, 0x22, 0x98, 0x4f, 0x3d, 0x5d, 0xf8, 0xa3, 0x73, 0x18, 0xf7, 0xd2, + 0xff, 0x8c, 0x6d, 0xa7, 0x08, 0xe3, 0xe4, 0x25, 0x08, 0xe3, 0x16, 0x98, 0x53, 0x5c, 0xdb, 0x66, + 0xb3, 0x7e, 0x9c, 0x65, 0x07, 0x54, 0xbd, 0x1d, 0x17, 0xa3, 0xa4, 0x7e, 0x16, 0xdb, 0x2f, 0x5d, + 0x92, 0xed, 0x47, 0xa3, 0x10, 0x8c, 0xcd, 0x4b, 0xbb, 0x74, 0x14, 0x82, 0xb8, 0x25, 0xf5, 0x59, + 0xb7, 0xf2, 0x50, 0x03, 0x84, 0xe9, 0x78, 0xb7, 0x3a, 0x8a, 0x49, 0x51, 0x42, 0x3b, 0x83, 0x39, + 0x57, 0xc6, 0x66, 0xce, 0x7f, 0x93, 0xc0, 0xa7, 0xb9, 0x19, 0x0a, 0xb7, 0x62, 0x04, 0x7a, 0x23, + 0x41, 0xa0, 0xbf, 0x97, 0x6b, 0x18, 0xe1, 0xd1, 0x76, 0x36, 0x8f, 0xbe, 0x3b, 0x1e, 0x8f, 0xce, + 0x20, 0x79, 0x17, 0x13, 0xea, 0xd6, 0xc6, 0xe9, 0xfb, 0xfa, 0xc4, 0xdb, 0xf7, 0xf5, 0x89, 0x77, + 0xef, 0xeb, 0x13, 0xbf, 0x1e, 0xd5, 0xa5, 0xd3, 0x51, 0x5d, 0x7a, 0x3b, 0xaa, 0x4b, 0xef, 0x46, + 0x75, 0xe9, 0x1f, 0xa3, 0xba, 0xf4, 0xbb, 0x0f, 0xf5, 0x89, 0xe7, 0xd3, 0xc2, 0xe3, 0x7f, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x3a, 0x2e, 0x29, 0xcd, 0xb9, 0x19, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.proto b/vendor/k8s.io/api/apps/v1beta1/generated.proto new file mode 100644 index 0000000000..dcb034dfbd --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/generated.proto @@ -0,0 +1,457 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.apps.v1beta1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/api/policy/v1beta1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1beta2/ControllerRevision. See the +// release notes for more information. +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both +// the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, +// it may be subject to name and representation changes in future releases, and clients should not +// depend on its stability. It is primarily for internal use by controllers. +message ControllerRevision { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data is the serialized representation of the state. + optional k8s.io.apimachinery.pkg.runtime.RawExtension data = 2; + + // Revision indicates the revision of the state represented by Data. + optional int64 revision = 3; +} + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +message ControllerRevisionList { + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ControllerRevisions + repeated ControllerRevision items = 2; +} + +// DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for +// more information. +// Deployment enables declarative updates for Pods and ReplicaSets. +message Deployment { + // Standard object metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the Deployment. + // +optional + optional DeploymentSpec spec = 2; + + // Most recently observed status of the Deployment. + // +optional + optional DeploymentStatus status = 3; +} + +// DeploymentCondition describes the state of a deployment at a certain point. +message DeploymentCondition { + // Type of deployment condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time this condition was updated. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6; + + // Last time the condition transitioned from one status to another. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7; + + // The reason for the condition's last transition. + optional string reason = 4; + + // A human readable message indicating details about the transition. + optional string message = 5; +} + +// DeploymentList is a list of Deployments. +message DeploymentList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Deployments. + repeated Deployment items = 2; +} + +// DEPRECATED. +// 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 + // +optional + map 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 + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template describes the pods that will be created. + optional k8s.io.api.core.v1.PodTemplateSpec template = 3; + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + 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 + 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. + // Defaults to 2. + // +optional + optional int32 revisionHistoryLimit = 6; + + // Indicates that the deployment is paused. + // +optional + optional bool paused = 7; + + // DEPRECATED. + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + optional RollbackConfig rollbackTo = 8; + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Note that progress will + // not be estimated during the time a deployment is paused. Defaults to 600s. + // +optional + optional int32 progressDeadlineSeconds = 9; +} + +// DeploymentStatus is the most recently observed status of the Deployment. +message DeploymentStatus { + // The generation observed by the deployment controller. + // +optional + optional int64 observedGeneration = 1; + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + optional int32 replicas = 2; + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + optional int32 updatedReplicas = 3; + + // Total number of ready pods targeted by this deployment. + // +optional + optional int32 readyReplicas = 7; + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + optional int32 availableReplicas = 4; + + // Total number of unavailable pods targeted by this deployment. This is the total number of + // pods that are still required for the deployment to have 100% available capacity. They may + // either be pods that are running but not yet available or pods that still have not been created. + // +optional + optional int32 unavailableReplicas = 5; + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + repeated DeploymentCondition conditions = 6; + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + optional int32 collisionCount = 8; +} + +// DeploymentStrategy describes how to replace existing pods with new ones. +message DeploymentStrategy { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + 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 + optional RollingUpdateDeployment rollingUpdate = 2; +} + +// DEPRECATED. +message RollbackConfig { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + 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 down. + // This can not be 0 if MaxSurge is 0. + // Defaults to 25%. + // 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 + optional k8s.io.apimachinery.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. + // Defaults to 25%. + // 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 + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2; +} + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +message RollingUpdateStatefulSetStrategy { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + optional int32 partition = 1; +} + +// Scale represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// ScaleSpec describes the attributes of a scale subresource +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + 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. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + map 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional string targetSelector = 3; +} + +// DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for +// more information. +// StatefulSet 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 StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +message StatefulSet { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired identities of pods in this set. + // +optional + optional StatefulSetSpec spec = 2; + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + optional StatefulSetStatus status = 3; +} + +// StatefulSetList is a collection of StatefulSets. +message StatefulSetList { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated StatefulSet items = 2; +} + +// A StatefulSetSpec is the specification of a StatefulSet. +message StatefulSetSpec { + // 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 + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + optional k8s.io.api.core.v1.PodTemplateSpec template = 3; + + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. 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. + // +optional + repeated k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4; + + // serviceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + optional string serviceName = 5; + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + optional string podManagementPolicy = 6; + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + optional StatefulSetUpdateStrategy updateStrategy = 7; + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + optional int32 revisionHistoryLimit = 8; +} + +// StatefulSetStatus represents the current state of a StatefulSet. +message StatefulSetStatus { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + optional int64 observedGeneration = 1; + + // replicas is the number of Pods created by the StatefulSet controller. + optional int32 replicas = 2; + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + optional int32 readyReplicas = 3; + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + optional int32 currentReplicas = 4; + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + optional int32 updatedReplicas = 5; + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + optional string currentRevision = 6; + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + optional string updateRevision = 7; + + // collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller + // uses this field as a collision avoidance mechanism when it needs to create the name for the + // newest ControllerRevision. + // +optional + optional int32 collisionCount = 9; +} + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +message StatefulSetUpdateStrategy { + // Type indicates the type of the StatefulSetUpdateStrategy. + optional string type = 1; + + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + optional RollingUpdateStatefulSetStrategy rollingUpdate = 2; +} + diff --git a/vendor/k8s.io/api/apps/v1beta1/register.go b/vendor/k8s.io/api/apps/v1beta1/register.go new file mode 100644 index 0000000000..84789be618 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/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 v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "apps" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &Scale{}, + &StatefulSet{}, + &StatefulSetList{}, + &ControllerRevision{}, + &ControllerRevisionList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/apps/v1beta1/types.go b/vendor/k8s.io/api/apps/v1beta1/types.go new file mode 100644 index 0000000000..63d1c725d8 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/types.go @@ -0,0 +1,542 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" +) + +const ( + ControllerRevisionHashLabelKey = "controller-revision-hash" + StatefulSetRevisionLabel = ControllerRevisionHashLabelKey +) + +// ScaleSpec describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + 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. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` +} + +// +genclient +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Scale represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for +// more information. +// StatefulSet 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 StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +type StatefulSet struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired identities of pods in this set. + // +optional + Spec StatefulSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + Status StatefulSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodManagementPolicyType defines the policy for creating pods under a stateful set. +type PodManagementPolicyType string + +const ( + // OrderedReadyPodManagement will create pods in strictly increasing order on + // scale up and strictly decreasing order on scale down, progressing only when + // the previous pod is ready or terminated. At most one pod will be changed + // at any time. + OrderedReadyPodManagement PodManagementPolicyType = "OrderedReady" + // ParallelPodManagement will create and delete pods as soon as the stateful set + // replica count is changed, and will not wait for pods to be ready or complete + // termination. + ParallelPodManagement = "Parallel" +) + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +type StatefulSetUpdateStrategy struct { + // Type indicates the type of the StatefulSetUpdateStrategy. + Type StatefulSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetStrategyType"` + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + RollingUpdate *RollingUpdateStatefulSetStrategy `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +// StatefulSetUpdateStrategyType is a string enumeration type that enumerates +// all possible update strategies for the StatefulSet controller. +type StatefulSetUpdateStrategyType string + +const ( + // RollingUpdateStatefulSetStrategyType indicates that update will be + // applied to all Pods in the StatefulSet with respect to the StatefulSet + // ordering constraints. When a scale operation is performed with this + // strategy, new Pods will be created from the specification version indicated + // by the StatefulSet's updateRevision. + RollingUpdateStatefulSetStrategyType = "RollingUpdate" + // OnDeleteStatefulSetStrategyType triggers the legacy behavior. Version + // tracking and ordered rolling restarts are disabled. Pods are recreated + // from the StatefulSetSpec when they are manually deleted. When a scale + // operation is performed with this strategy,specification version indicated + // by the StatefulSet's currentRevision. + OnDeleteStatefulSetStrategyType = "OnDelete" +) + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +type RollingUpdateStatefulSetStrategy struct { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + Partition *int32 `json:"partition,omitempty" protobuf:"varint,1,opt,name=partition"` +} + +// A StatefulSetSpec is the specification of a StatefulSet. +type StatefulSetSpec 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. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.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 StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. 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. + // +optional + VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"` + + // serviceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + ServiceName string `json:"serviceName" protobuf:"bytes,5,opt,name=serviceName"` + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + PodManagementPolicy PodManagementPolicyType `json:"podManagementPolicy,omitempty" protobuf:"bytes,6,opt,name=podManagementPolicy,casttype=PodManagementPolicyType"` + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + UpdateStrategy StatefulSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,7,opt,name=updateStrategy"` + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,8,opt,name=revisionHistoryLimit"` +} + +// StatefulSetStatus represents the current state of a StatefulSet. +type StatefulSetStatus struct { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // replicas is the number of Pods created by the StatefulSet controller. + Replicas int32 `json:"replicas" protobuf:"varint,2,opt,name=replicas"` + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,3,opt,name=readyReplicas"` + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + CurrentReplicas int32 `json:"currentReplicas,omitempty" protobuf:"varint,4,opt,name=currentReplicas"` + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,5,opt,name=updatedReplicas"` + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + CurrentRevision string `json:"currentRevision,omitempty" protobuf:"bytes,6,opt,name=currentRevision"` + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"` + + // collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller + // uses this field as a collision avoidance mechanism when it needs to create the name for the + // newest ControllerRevision. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// StatefulSetList is a collection of StatefulSets. +type StatefulSetList struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []StatefulSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for +// more information. +// Deployment enables declarative updates for Pods and ReplicaSets. +type Deployment struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the Deployment. + // +optional + Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the Deployment. + // +optional + 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. + // +optional + 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. + // +optional + Selector *metav1.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. + // +optional + 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) + // +optional + 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. + // Defaults to 2. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` + + // Indicates that the deployment is paused. + // +optional + Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` + + // DEPRECATED. + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + RollbackTo *RollbackConfig `json:"rollbackTo,omitempty" protobuf:"bytes,8,opt,name=rollbackTo"` + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Note that progress will + // not be estimated during the time a deployment is paused. Defaults to 600s. + // +optional + ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED. +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + metav1.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 + // +optional + 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"` +} + +// DEPRECATED. +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + 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. + // +optional + 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. + // +optional + 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 down. + // This can not be 0 if MaxSurge is 0. + // Defaults to 25%. + // 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 + 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. + // Defaults to 25%. + // 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 + 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. + // +optional + 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). + // +optional + 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. + // +optional + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` + + // Total number of ready pods targeted by this deployment. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` + + // Total number of unavailable pods targeted by this deployment. This is the total number of + // pods that are still required for the deployment to have 100% available capacity. They may + // either be pods that are running but not yet available or pods that still have not been created. + // +optional + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"` + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,8,opt,name=collisionCount"` +} + +type DeploymentConditionType string + +// These are valid conditions of a deployment. +const ( + // Available means the deployment is available, ie. at least the minimum available + // replicas required are up and running for at least minReadySeconds. + DeploymentAvailable DeploymentConditionType = "Available" + // Progressing means the deployment is progressing. Progress for a deployment is + // considered when a new replica set is created or adopted, and when new pods scale + // up or old pods scale down. Progress is not estimated for paused deployments or + // when progressDeadlineSeconds is not specified. + DeploymentProgressing DeploymentConditionType = "Progressing" + // ReplicaFailure is added in a deployment when one of its pods fails to be created + // or deleted. + DeploymentReplicaFailure DeploymentConditionType = "ReplicaFailure" +) + +// DeploymentCondition describes the state of a deployment at a certain point. +type DeploymentCondition struct { + // Type of deployment condition. + Type DeploymentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=DeploymentConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"` + // The last time this condition was updated. + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,6,opt,name=lastUpdateTime"` + // Last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,7,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DeploymentList is a list of Deployments. +type DeploymentList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.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"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1beta2/ControllerRevision. See the +// release notes for more information. +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both +// the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, +// it may be subject to name and representation changes in future releases, and clients should not +// depend on its stability. It is primarily for internal use by controllers. +type ControllerRevision struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data is the serialized representation of the state. + Data runtime.RawExtension `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"` + + // Revision indicates the revision of the state represented by Data. + Revision int64 `json:"revision" protobuf:"varint,3,opt,name=revision"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +type ControllerRevisionList struct { + metav1.TypeMeta `json:",inline"` + + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ControllerRevisions + Items []ControllerRevision `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..72d5e69ce0 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,259 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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_ControllerRevision = map[string]string{ + "": "DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1beta2/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data is the serialized representation of the state.", + "revision": "Revision indicates the revision of the state represented by Data.", +} + +func (ControllerRevision) SwaggerDoc() map[string]string { + return map_ControllerRevision +} + +var map_ControllerRevisionList = map[string]string{ + "": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", + "metadata": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of ControllerRevisions", +} + +func (ControllerRevisionList) SwaggerDoc() map[string]string { + return map_ControllerRevisionList +} + +var map_Deployment = map[string]string{ + "": "DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for more information. 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_DeploymentCondition = map[string]string{ + "": "DeploymentCondition describes the state of a deployment at a certain point.", + "type": "Type of deployment condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastUpdateTime": "The last time this condition was updated.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (DeploymentCondition) SwaggerDoc() map[string]string { + return map_DeploymentCondition +} + +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{ + "": "DEPRECATED. 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. Defaults to 2.", + "paused": "Indicates that the deployment is paused.", + "rollbackTo": "DEPRECATED. The config this deployment is rolling back to. Will be cleared after rollback is done.", + "progressDeadlineSeconds": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.", +} + +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.", + "readyReplicas": "Total number of ready pods targeted by this deployment.", + "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. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.", + "conditions": "Represents the latest available observations of a deployment's current state.", + "collisionCount": "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.", +} + +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_RollbackConfig = map[string]string{ + "": "DEPRECATED.", + "revision": "The revision to rollback to. If set to 0, rollback 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 down. This can not be 0 if MaxSurge is 0. Defaults to 25%. 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. Defaults to 25%. 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_RollingUpdateStatefulSetStrategy = map[string]string{ + "": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", + "partition": "Partition indicates the ordinal at which the StatefulSet should be partitioned.", +} + +func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string { + return map_RollingUpdateStatefulSetStrategy +} + +var map_Scale = map[string]string{ + "": "Scale represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: https://git.k8s.io/community/contributors/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. More info: http://kubernetes.io/docs/user-guide/labels#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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +var map_StatefulSet = map[string]string{ + "": "DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for more information. StatefulSet 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 StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "spec": "Spec defines the desired identities of pods in this set.", + "status": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", +} + +func (StatefulSet) SwaggerDoc() map[string]string { + return map_StatefulSet +} + +var map_StatefulSetList = map[string]string{ + "": "StatefulSetList is a collection of StatefulSets.", +} + +func (StatefulSetList) SwaggerDoc() map[string]string { + return map_StatefulSetList +} + +var map_StatefulSetSpec = map[string]string{ + "": "A StatefulSetSpec is the specification of a StatefulSet.", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#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 StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.", + "volumeClaimTemplates": "volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. 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 StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.", + "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", + "updateStrategy": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", + "revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", +} + +func (StatefulSetSpec) SwaggerDoc() map[string]string { + return map_StatefulSetSpec +} + +var map_StatefulSetStatus = map[string]string{ + "": "StatefulSetStatus represents the current state of a StatefulSet.", + "observedGeneration": "observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", + "replicas": "replicas is the number of Pods created by the StatefulSet controller.", + "readyReplicas": "readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.", + "currentReplicas": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", + "updatedReplicas": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", + "currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", + "updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", + "collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", +} + +func (StatefulSetStatus) SwaggerDoc() map[string]string { + return map_StatefulSetStatus +} + +var map_StatefulSetUpdateStrategy = map[string]string{ + "": "StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", + "type": "Type indicates the type of the StatefulSetUpdateStrategy.", + "rollingUpdate": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", +} + +func (StatefulSetUpdateStrategy) SwaggerDoc() map[string]string { + return map_StatefulSetUpdateStrategy +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..2f046b0205 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,737 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + core_v1 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/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. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ControllerRevision).DeepCopyInto(out.(*ControllerRevision)) + return nil + }, InType: reflect.TypeOf(&ControllerRevision{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ControllerRevisionList).DeepCopyInto(out.(*ControllerRevisionList)) + return nil + }, InType: reflect.TypeOf(&ControllerRevisionList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Deployment).DeepCopyInto(out.(*Deployment)) + return nil + }, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition)) + return nil + }, InType: reflect.TypeOf(&DeploymentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList)) + return nil + }, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentRollback).DeepCopyInto(out.(*DeploymentRollback)) + return nil + }, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec)) + return nil + }, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus)) + return nil + }, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy)) + return nil + }, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollbackConfig).DeepCopyInto(out.(*RollbackConfig)) + return nil + }, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateStatefulSetStrategy).DeepCopyInto(out.(*RollingUpdateStatefulSetStrategy)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Scale).DeepCopyInto(out.(*Scale)) + return nil + }, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec)) + return nil + }, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus)) + return nil + }, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSet).DeepCopyInto(out.(*StatefulSet)) + return nil + }, InType: reflect.TypeOf(&StatefulSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetList).DeepCopyInto(out.(*StatefulSetList)) + return nil + }, InType: reflect.TypeOf(&StatefulSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetSpec).DeepCopyInto(out.(*StatefulSetSpec)) + return nil + }, InType: reflect.TypeOf(&StatefulSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetStatus).DeepCopyInto(out.(*StatefulSetStatus)) + return nil + }, InType: reflect.TypeOf(&StatefulSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetUpdateStrategy).DeepCopyInto(out.(*StatefulSetUpdateStrategy)) + return nil + }, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Data.DeepCopyInto(&out.Data) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRevision. +func (in *ControllerRevision) DeepCopy() *ControllerRevision { + if in == nil { + return nil + } + out := new(ControllerRevision) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ControllerRevision) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ControllerRevisionList) DeepCopyInto(out *ControllerRevisionList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ControllerRevision, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRevisionList. +func (in *ControllerRevisionList) DeepCopy() *ControllerRevisionList { + if in == nil { + return nil + } + out := new(ControllerRevisionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ControllerRevisionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Deployment) DeepCopyInto(out *Deployment) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Deployment. +func (in *Deployment) DeepCopy() *Deployment { + if in == nil { + return nil + } + out := new(Deployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Deployment) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentCondition) DeepCopyInto(out *DeploymentCondition) { + *out = *in + in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentCondition. +func (in *DeploymentCondition) DeepCopy() *DeploymentCondition { + if in == nil { + return nil + } + out := new(DeploymentCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentList) DeepCopyInto(out *DeploymentList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentList. +func (in *DeploymentList) DeepCopy() *DeploymentList { + if in == nil { + return nil + } + out := new(DeploymentList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeploymentList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentRollback) DeepCopyInto(out *DeploymentRollback) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + out.RollbackTo = in.RollbackTo + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentRollback. +func (in *DeploymentRollback) DeepCopy() *DeploymentRollback { + if in == nil { + return nil + } + out := new(DeploymentRollback) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeploymentRollback) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + in.Strategy.DeepCopyInto(&out.Strategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + if *in == nil { + *out = nil + } else { + *out = new(RollbackConfig) + **out = **in + } + } + if in.ProgressDeadlineSeconds != nil { + in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentSpec. +func (in *DeploymentSpec) DeepCopy() *DeploymentSpec { + if in == nil { + return nil + } + out := new(DeploymentSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]DeploymentCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStatus. +func (in *DeploymentStatus) DeepCopy() *DeploymentStatus { + if in == nil { + return nil + } + out := new(DeploymentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStrategy. +func (in *DeploymentStrategy) DeepCopy() *DeploymentStrategy { + if in == nil { + return nil + } + out := new(DeploymentStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollbackConfig) DeepCopyInto(out *RollbackConfig) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollbackConfig. +func (in *RollbackConfig) DeepCopy() *RollbackConfig { + if in == nil { + return nil + } + out := new(RollbackConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateDeployment. +func (in *RollingUpdateDeployment) DeepCopy() *RollingUpdateDeployment { + if in == nil { + return nil + } + out := new(RollingUpdateDeployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateStatefulSetStrategy) { + *out = *in + if in.Partition != nil { + in, out := &in.Partition, &out.Partition + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateStatefulSetStrategy. +func (in *RollingUpdateStatefulSetStrategy) DeepCopy() *RollingUpdateStatefulSetStrategy { + if in == nil { + return nil + } + out := new(RollingUpdateStatefulSetStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Scale) DeepCopyInto(out *Scale) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Scale. +func (in *Scale) DeepCopy() *Scale { + if in == nil { + return nil + } + out := new(Scale) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Scale) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleSpec) DeepCopyInto(out *ScaleSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleSpec. +func (in *ScaleSpec) DeepCopy() *ScaleSpec { + if in == nil { + return nil + } + out := new(ScaleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleStatus) DeepCopyInto(out *ScaleStatus) { + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleStatus. +func (in *ScaleStatus) DeepCopy() *ScaleStatus { + if in == nil { + return nil + } + out := new(ScaleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSet) DeepCopyInto(out *StatefulSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSet. +func (in *StatefulSet) DeepCopy() *StatefulSet { + if in == nil { + return nil + } + out := new(StatefulSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StatefulSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetList) DeepCopyInto(out *StatefulSetList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StatefulSet, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetList. +func (in *StatefulSetList) DeepCopy() *StatefulSetList { + if in == nil { + return nil + } + out := new(StatefulSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StatefulSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]core_v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetSpec. +func (in *StatefulSetSpec) DeepCopy() *StatefulSetSpec { + if in == nil { + return nil + } + out := new(StatefulSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetStatus. +func (in *StatefulSetStatus) DeepCopy() *StatefulSetStatus { + if in == nil { + return nil + } + out := new(StatefulSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetUpdateStrategy. +func (in *StatefulSetUpdateStrategy) DeepCopy() *StatefulSetUpdateStrategy { + if in == nil { + return nil + } + out := new(StatefulSetUpdateStrategy) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/apps/v1beta2/BUILD b/vendor/k8s.io/api/apps/v1beta2/BUILD new file mode 100644 index 0000000000..dd256cbd31 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/BUILD @@ -0,0 +1,47 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/apps/v1beta2/doc.go b/vendor/k8s.io/api/apps/v1beta2/doc.go new file mode 100644 index 0000000000..dafca1201c --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/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 v1beta2 // import "k8s.io/api/apps/v1beta2" diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.pb.go b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go new file mode 100644 index 0000000000..07d95d8aca --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go @@ -0,0 +1,6934 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/apps/v1beta2/generated.proto +// DO NOT EDIT! + +/* + Package v1beta2 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2/generated.proto + + It has these top-level messages: + ControllerRevision + ControllerRevisionList + DaemonSet + DaemonSetList + DaemonSetSpec + DaemonSetStatus + DaemonSetUpdateStrategy + Deployment + DeploymentCondition + DeploymentList + DeploymentSpec + DeploymentStatus + DeploymentStrategy + ReplicaSet + ReplicaSetCondition + ReplicaSetList + ReplicaSetSpec + ReplicaSetStatus + RollingUpdateDaemonSet + RollingUpdateDeployment + RollingUpdateStatefulSetStrategy + Scale + ScaleSpec + ScaleStatus + StatefulSet + StatefulSetList + StatefulSetSpec + StatefulSetStatus + StatefulSetUpdateStrategy +*/ +package v1beta2 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ControllerRevision) Reset() { *m = ControllerRevision{} } +func (*ControllerRevision) ProtoMessage() {} +func (*ControllerRevision) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ControllerRevisionList) Reset() { *m = ControllerRevisionList{} } +func (*ControllerRevisionList) ProtoMessage() {} +func (*ControllerRevisionList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *DaemonSet) Reset() { *m = DaemonSet{} } +func (*DaemonSet) ProtoMessage() {} +func (*DaemonSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *DaemonSetList) Reset() { *m = DaemonSetList{} } +func (*DaemonSetList) ProtoMessage() {} +func (*DaemonSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *DaemonSetSpec) Reset() { *m = DaemonSetSpec{} } +func (*DaemonSetSpec) ProtoMessage() {} +func (*DaemonSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *DaemonSetStatus) Reset() { *m = DaemonSetStatus{} } +func (*DaemonSetStatus) ProtoMessage() {} +func (*DaemonSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *DaemonSetUpdateStrategy) Reset() { *m = DaemonSetUpdateStrategy{} } +func (*DaemonSetUpdateStrategy) ProtoMessage() {} +func (*DaemonSetUpdateStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *Deployment) Reset() { *m = Deployment{} } +func (*Deployment) ProtoMessage() {} +func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *DeploymentCondition) Reset() { *m = DeploymentCondition{} } +func (*DeploymentCondition) ProtoMessage() {} +func (*DeploymentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *DeploymentList) Reset() { *m = DeploymentList{} } +func (*DeploymentList) ProtoMessage() {} +func (*DeploymentList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *DeploymentSpec) Reset() { *m = DeploymentSpec{} } +func (*DeploymentSpec) ProtoMessage() {} +func (*DeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *DeploymentStatus) Reset() { *m = DeploymentStatus{} } +func (*DeploymentStatus) ProtoMessage() {} +func (*DeploymentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *DeploymentStrategy) Reset() { *m = DeploymentStrategy{} } +func (*DeploymentStrategy) ProtoMessage() {} +func (*DeploymentStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ReplicaSet) Reset() { *m = ReplicaSet{} } +func (*ReplicaSet) ProtoMessage() {} +func (*ReplicaSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *ReplicaSetCondition) Reset() { *m = ReplicaSetCondition{} } +func (*ReplicaSetCondition) ProtoMessage() {} +func (*ReplicaSetCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *ReplicaSetList) Reset() { *m = ReplicaSetList{} } +func (*ReplicaSetList) ProtoMessage() {} +func (*ReplicaSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ReplicaSetSpec) Reset() { *m = ReplicaSetSpec{} } +func (*ReplicaSetSpec) ProtoMessage() {} +func (*ReplicaSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *ReplicaSetStatus) Reset() { *m = ReplicaSetStatus{} } +func (*ReplicaSetStatus) ProtoMessage() {} +func (*ReplicaSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *RollingUpdateDaemonSet) Reset() { *m = RollingUpdateDaemonSet{} } +func (*RollingUpdateDaemonSet) ProtoMessage() {} +func (*RollingUpdateDaemonSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *RollingUpdateDeployment) Reset() { *m = RollingUpdateDeployment{} } +func (*RollingUpdateDeployment) ProtoMessage() {} +func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{19} +} + +func (m *RollingUpdateStatefulSetStrategy) Reset() { *m = RollingUpdateStatefulSetStrategy{} } +func (*RollingUpdateStatefulSetStrategy) ProtoMessage() {} +func (*RollingUpdateStatefulSetStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{20} +} + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *StatefulSet) Reset() { *m = StatefulSet{} } +func (*StatefulSet) ProtoMessage() {} +func (*StatefulSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *StatefulSetList) Reset() { *m = StatefulSetList{} } +func (*StatefulSetList) ProtoMessage() {} +func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} } +func (*StatefulSetSpec) ProtoMessage() {} +func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} } +func (*StatefulSetStatus) ProtoMessage() {} +func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} } +func (*StatefulSetUpdateStrategy) ProtoMessage() {} +func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{28} +} + +func init() { + proto.RegisterType((*ControllerRevision)(nil), "k8s.io.api.apps.v1beta2.ControllerRevision") + proto.RegisterType((*ControllerRevisionList)(nil), "k8s.io.api.apps.v1beta2.ControllerRevisionList") + proto.RegisterType((*DaemonSet)(nil), "k8s.io.api.apps.v1beta2.DaemonSet") + proto.RegisterType((*DaemonSetList)(nil), "k8s.io.api.apps.v1beta2.DaemonSetList") + proto.RegisterType((*DaemonSetSpec)(nil), "k8s.io.api.apps.v1beta2.DaemonSetSpec") + proto.RegisterType((*DaemonSetStatus)(nil), "k8s.io.api.apps.v1beta2.DaemonSetStatus") + proto.RegisterType((*DaemonSetUpdateStrategy)(nil), "k8s.io.api.apps.v1beta2.DaemonSetUpdateStrategy") + proto.RegisterType((*Deployment)(nil), "k8s.io.api.apps.v1beta2.Deployment") + proto.RegisterType((*DeploymentCondition)(nil), "k8s.io.api.apps.v1beta2.DeploymentCondition") + proto.RegisterType((*DeploymentList)(nil), "k8s.io.api.apps.v1beta2.DeploymentList") + proto.RegisterType((*DeploymentSpec)(nil), "k8s.io.api.apps.v1beta2.DeploymentSpec") + proto.RegisterType((*DeploymentStatus)(nil), "k8s.io.api.apps.v1beta2.DeploymentStatus") + proto.RegisterType((*DeploymentStrategy)(nil), "k8s.io.api.apps.v1beta2.DeploymentStrategy") + proto.RegisterType((*ReplicaSet)(nil), "k8s.io.api.apps.v1beta2.ReplicaSet") + proto.RegisterType((*ReplicaSetCondition)(nil), "k8s.io.api.apps.v1beta2.ReplicaSetCondition") + proto.RegisterType((*ReplicaSetList)(nil), "k8s.io.api.apps.v1beta2.ReplicaSetList") + proto.RegisterType((*ReplicaSetSpec)(nil), "k8s.io.api.apps.v1beta2.ReplicaSetSpec") + proto.RegisterType((*ReplicaSetStatus)(nil), "k8s.io.api.apps.v1beta2.ReplicaSetStatus") + proto.RegisterType((*RollingUpdateDaemonSet)(nil), "k8s.io.api.apps.v1beta2.RollingUpdateDaemonSet") + proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.api.apps.v1beta2.RollingUpdateDeployment") + proto.RegisterType((*RollingUpdateStatefulSetStrategy)(nil), "k8s.io.api.apps.v1beta2.RollingUpdateStatefulSetStrategy") + proto.RegisterType((*Scale)(nil), "k8s.io.api.apps.v1beta2.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.api.apps.v1beta2.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.api.apps.v1beta2.ScaleStatus") + proto.RegisterType((*StatefulSet)(nil), "k8s.io.api.apps.v1beta2.StatefulSet") + proto.RegisterType((*StatefulSetList)(nil), "k8s.io.api.apps.v1beta2.StatefulSetList") + proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.api.apps.v1beta2.StatefulSetSpec") + proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.api.apps.v1beta2.StatefulSetStatus") + proto.RegisterType((*StatefulSetUpdateStrategy)(nil), "k8s.io.api.apps.v1beta2.StatefulSetUpdateStrategy") +} +func (m *ControllerRevision) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ControllerRevision) 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.Data.Size())) + n2, err := m.Data.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Revision)) + return i, nil +} + +func (m *ControllerRevisionList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ControllerRevisionList) 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())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + 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 *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())) + 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 *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())) + n7, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + 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())) + n8, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n9, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size())) + n10, err := m.UpdateStrategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + 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)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberReady)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedNumberScheduled)) + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberAvailable)) + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberUnavailable)) + if m.CollisionCount != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *DaemonSetUpdateStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSetUpdateStrategy) 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())) + n11, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + 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())) + n12, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n13, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n14, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + return i, nil +} + +func (m *DeploymentCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentCondition) 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] = 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.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastUpdateTime.Size())) + n15, err := m.LastUpdateTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n16, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + 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())) + n17, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + 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 *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())) + n18, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n19, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Strategy.Size())) + n20, err := m.Strategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + 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.ProgressDeadlineSeconds != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ProgressDeadlineSeconds)) + } + 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)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + 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())) + n21, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + 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())) + n22, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n23, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n24, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + return i, nil +} + +func (m *ReplicaSetCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSetCondition) 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.LastTransitionTime.Size())) + n25, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + 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.Message))) + i += copy(dAtA[i:], m.Message) + 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())) + n26, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + 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())) + n27, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n28, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + 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)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + return i, nil +} + +func (m *RollingUpdateDaemonSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateDaemonSet) 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())) + n29, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n29 + } + 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())) + n30, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n30 + } + if m.MaxSurge != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxSurge.Size())) + n31, err := m.MaxSurge.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n31 + } + return i, nil +} + +func (m *RollingUpdateStatefulSetStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateStatefulSetStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Partition != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Partition)) + } + 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())) + n32, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n32 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n33, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n33 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n34, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n34 + 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 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(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 *StatefulSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSet) 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())) + n35, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n35 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n36, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n36 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n37, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n37 + return i, nil +} + +func (m *StatefulSetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetList) 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())) + n38, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n38 + 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 *StatefulSetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetSpec) 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())) + n39, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n39 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n40, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n40 + 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) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodManagementPolicy))) + i += copy(dAtA[i:], m.PodManagementPolicy) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size())) + n41, err := m.UpdateStrategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n41 + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + return i, nil +} + +func (m *StatefulSetStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetStatus) 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.ReadyReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedReplicas)) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CurrentRevision))) + i += copy(dAtA[i:], m.CurrentRevision) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UpdateRevision))) + i += copy(dAtA[i:], m.UpdateRevision) + if m.CollisionCount != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *StatefulSetUpdateStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetUpdateStrategy) 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())) + n42, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n42 + } + 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 *ControllerRevision) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Data.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Revision)) + return n +} + +func (m *ControllerRevisionList) 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 *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)) + l = m.UpdateStrategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + 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)) + n += 1 + sovGenerated(uint64(m.NumberReady)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.UpdatedNumberScheduled)) + n += 1 + sovGenerated(uint64(m.NumberAvailable)) + n += 1 + sovGenerated(uint64(m.NumberUnavailable)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *DaemonSetUpdateStrategy) 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 *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 *DeploymentCondition) 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.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)) + l = m.LastTransitionTime.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 *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.ProgressDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ProgressDeadlineSeconds)) + } + 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)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + 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 *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 *ReplicaSetCondition) 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.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 *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)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + 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)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RollingUpdateDaemonSet) Size() (n int) { + var l int + _ = l + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + 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 *RollingUpdateStatefulSetStrategy) Size() (n int) { + var l int + _ = l + if m.Partition != nil { + n += 1 + sovGenerated(uint64(*m.Partition)) + } + 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 *StatefulSet) 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 *StatefulSetList) 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 *StatefulSetSpec) 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)) + l = len(m.PodManagementPolicy) + n += 1 + l + sovGenerated(uint64(l)) + l = m.UpdateStrategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + return n +} + +func (m *StatefulSetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.UpdatedReplicas)) + l = len(m.CurrentRevision) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UpdateRevision) + n += 1 + l + sovGenerated(uint64(l)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *StatefulSetUpdateStrategy) 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 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 *ControllerRevision) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ControllerRevision{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + strings.Replace(strings.Replace(this.Data.String(), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `}`, + }, "") + return s +} +func (this *ControllerRevisionList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ControllerRevisionList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ControllerRevision", "ControllerRevision", 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(this.UpdateStrategy.String(), "DaemonSetUpdateStrategy", "DaemonSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `}`, + }, "") + 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) + `,`, + `NumberReady:` + fmt.Sprintf("%v", this.NumberReady) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `UpdatedNumberScheduled:` + fmt.Sprintf("%v", this.UpdatedNumberScheduled) + `,`, + `NumberAvailable:` + fmt.Sprintf("%v", this.NumberAvailable) + `,`, + `NumberUnavailable:` + fmt.Sprintf("%v", this.NumberUnavailable) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetUpdateStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetUpdateStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateDaemonSet", "RollingUpdateDaemonSet", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *DeploymentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 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_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Deployment", "Deployment", 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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_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) + `,`, + `ProgressDeadlineSeconds:` + valueToStringGenerated(this.ProgressDeadlineSeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + 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 *ReplicaSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_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 *ReplicaSetCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ReplicaSetCondition", "ReplicaSetCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateDaemonSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateDaemonSet{`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `MaxSurge:` + strings.Replace(fmt.Sprintf("%v", this.MaxSurge), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateStatefulSetStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateStatefulSetStrategy{`, + `Partition:` + valueToStringGenerated(this.Partition) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *StatefulSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "StatefulSetSpec", "StatefulSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "StatefulSetStatus", "StatefulSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StatefulSet", "StatefulSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `VolumeClaimTemplates:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeClaimTemplates), "PersistentVolumeClaim", "k8s_io_api_core_v1.PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, + `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `PodManagementPolicy:` + fmt.Sprintf("%v", this.PodManagementPolicy) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(this.UpdateStrategy.String(), "StatefulSetUpdateStrategy", "StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetStatus{`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`, + `CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`, + `UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetUpdateStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetUpdateStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateStatefulSetStrategy", "RollingUpdateStatefulSetStrategy", 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 *ControllerRevision) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ControllerRevision: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ControllerRevision: 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 + } + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + 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 *ControllerRevisionList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ControllerRevisionList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ControllerRevisionList: 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, ControllerRevision{}) + 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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberReady", wireType) + } + m.NumberReady = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberReady |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + 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 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedNumberScheduled", wireType) + } + m.UpdatedNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdatedNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberAvailable", wireType) + } + m.NumberAvailable = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberAvailable |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberUnavailable", wireType) + } + m.NumberUnavailable = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberUnavailable |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *DaemonSetUpdateStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetUpdateStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetUpdateStrategy: 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 = DaemonSetUpdateStrategyType(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 = &RollingUpdateDaemonSet{} + } + 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 *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 *DeploymentCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentCondition: 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 = DeploymentConditionType(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_api_core_v1.ConditionStatus(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 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 6: + 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 + case 7: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 *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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProgressDeadlineSeconds", 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.ProgressDeadlineSeconds = &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 *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 + } + } + case 6: + 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, DeploymentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + 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 + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *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 *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 *ReplicaSetCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetCondition: 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 = ReplicaSetConditionType(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_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 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 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 *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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 != 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 + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + } + } + case 5: + 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 6: + 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, ReplicaSetCondition{}) + 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 *RollingUpdateDaemonSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateDaemonSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateDaemonSet: 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_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.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 *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_apimachinery_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_apimachinery_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 *RollingUpdateStatefulSetStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateStatefulSetStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateStatefulSetStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", 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.Partition = &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 msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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 + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Selector[mapkey] = mapvalue + } else { + var mapvalue 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 *StatefulSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSet: 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 *StatefulSetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetList: 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, StatefulSet{}) + 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 *StatefulSetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetSpec: 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_apimachinery_pkg_apis_meta_v1.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_api_core_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 + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodManagementPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodManagementPolicy = PodManagementPolicyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetStatus: 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 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 + } + } + case 4: + 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 5: + 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 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentRevision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CurrentRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateRevision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UpdateRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *StatefulSetUpdateStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetUpdateStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetUpdateStrategy: 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 = StatefulSetUpdateStrategyType(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 = &RollingUpdateStatefulSetStrategy{} + } + 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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 2119 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xcb, 0x6f, 0x1c, 0xb7, + 0x19, 0xd7, 0xec, 0x43, 0xda, 0xa5, 0x2c, 0xc9, 0xa6, 0x54, 0x49, 0x91, 0xdb, 0x95, 0xb0, 0x09, + 0x1c, 0x39, 0xb6, 0x67, 0x6d, 0xe5, 0x81, 0xc4, 0x06, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57, + 0x28, 0xc9, 0x40, 0x83, 0x16, 0x30, 0xb5, 0x4b, 0xaf, 0x26, 0x9a, 0x17, 0x66, 0x38, 0x5b, 0x2f, + 0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0xe9, 0xb9, 0xff, 0x44, 0x7b, 0x2a, 0x8a, 0xf6, 0x56, 0x04, + 0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x8e, 0x3d, 0xf7, 0x12, 0xa0, 0x40, 0x41, + 0x0e, 0xe7, 0xc1, 0x79, 0x58, 0x23, 0x25, 0xde, 0x14, 0xb9, 0x69, 0xf9, 0xfd, 0xbe, 0x1f, 0x3f, + 0x0e, 0x3f, 0x7e, 0xdf, 0x6f, 0x38, 0x02, 0x3f, 0x3e, 0x79, 0xd7, 0x55, 0x35, 0xab, 0x75, 0xe2, + 0x1d, 0x11, 0xc7, 0x24, 0x94, 0xb8, 0xad, 0x3e, 0x31, 0xbb, 0x96, 0xd3, 0x12, 0x06, 0x6c, 0x6b, + 0x2d, 0x6c, 0xdb, 0x6e, 0xab, 0x7f, 0xe7, 0x88, 0x50, 0xbc, 0xd6, 0xea, 0x11, 0x93, 0x38, 0x98, + 0x92, 0xae, 0x6a, 0x3b, 0x16, 0xb5, 0xe0, 0x82, 0x0f, 0x54, 0xb1, 0xad, 0xa9, 0x0c, 0xa8, 0x0a, + 0xe0, 0xd2, 0xad, 0x9e, 0x46, 0x8f, 0xbd, 0x23, 0xb5, 0x63, 0x19, 0xad, 0x9e, 0xd5, 0xb3, 0x5a, + 0x1c, 0x7f, 0xe4, 0x3d, 0xe1, 0xbf, 0xf8, 0x0f, 0xfe, 0x97, 0xcf, 0xb3, 0xd4, 0x8c, 0x4d, 0xd8, + 0xb1, 0x1c, 0xd2, 0xea, 0xdf, 0x49, 0xce, 0xb5, 0x74, 0x3d, 0x86, 0xb1, 0x2d, 0x5d, 0xeb, 0x0c, + 0x44, 0x58, 0x69, 0xe8, 0x5b, 0x11, 0xd4, 0xc0, 0x9d, 0x63, 0xcd, 0x24, 0xce, 0xa0, 0x65, 0x9f, + 0xf4, 0xd8, 0x80, 0xdb, 0x32, 0x08, 0xc5, 0x59, 0x13, 0xb4, 0xf2, 0xbc, 0x1c, 0xcf, 0xa4, 0x9a, + 0x41, 0x52, 0x0e, 0xef, 0x9c, 0xe5, 0xe0, 0x76, 0x8e, 0x89, 0x81, 0x53, 0x7e, 0x6f, 0xe6, 0xf9, + 0x79, 0x54, 0xd3, 0x5b, 0x9a, 0x49, 0x5d, 0xea, 0x24, 0x9d, 0x9a, 0xff, 0x51, 0x00, 0xdc, 0xb0, + 0x4c, 0xea, 0x58, 0xba, 0x4e, 0x1c, 0x44, 0xfa, 0x9a, 0xab, 0x59, 0x26, 0x7c, 0x0c, 0x6a, 0x6c, + 0x3d, 0x5d, 0x4c, 0xf1, 0xa2, 0xb2, 0xa2, 0xac, 0x4e, 0xae, 0xdd, 0x56, 0xa3, 0x4d, 0x09, 0xe9, + 0x55, 0xfb, 0xa4, 0xc7, 0x06, 0x5c, 0x95, 0xa1, 0xd5, 0xfe, 0x1d, 0x75, 0xf7, 0xe8, 0x63, 0xd2, + 0xa1, 0xdb, 0x84, 0xe2, 0x36, 0x7c, 0x76, 0xba, 0x3c, 0x36, 0x3c, 0x5d, 0x06, 0xd1, 0x18, 0x0a, + 0x59, 0xe1, 0x2e, 0xa8, 0x70, 0xf6, 0x12, 0x67, 0xbf, 0x95, 0xcb, 0x2e, 0x16, 0xad, 0x22, 0xfc, + 0x8b, 0xf7, 0x9f, 0x52, 0x62, 0xb2, 0xf0, 0xda, 0x97, 0x04, 0x75, 0x65, 0x13, 0x53, 0x8c, 0x38, + 0x11, 0xbc, 0x09, 0x6a, 0x8e, 0x08, 0x7f, 0xb1, 0xbc, 0xa2, 0xac, 0x96, 0xdb, 0x97, 0x05, 0xaa, + 0x16, 0x2c, 0x0b, 0x85, 0x88, 0xe6, 0x33, 0x05, 0xcc, 0xa7, 0xd7, 0xbd, 0xa5, 0xb9, 0x14, 0xfe, + 0x2c, 0xb5, 0x76, 0xb5, 0xd8, 0xda, 0x99, 0x37, 0x5f, 0x79, 0x38, 0x71, 0x30, 0x12, 0x5b, 0xf7, + 0x1e, 0xa8, 0x6a, 0x94, 0x18, 0xee, 0x62, 0x69, 0xa5, 0xbc, 0x3a, 0xb9, 0x76, 0x43, 0xcd, 0xc9, + 0x75, 0x35, 0x1d, 0x5d, 0x7b, 0x4a, 0xf0, 0x56, 0x1f, 0x32, 0x06, 0xe4, 0x13, 0x35, 0x7f, 0x53, + 0x02, 0xf5, 0x4d, 0x4c, 0x0c, 0xcb, 0xdc, 0x27, 0x74, 0x04, 0x3b, 0xf7, 0x00, 0x54, 0x5c, 0x9b, + 0x74, 0xc4, 0xce, 0x5d, 0xcb, 0x5d, 0x40, 0x18, 0xd3, 0xbe, 0x4d, 0x3a, 0xd1, 0x96, 0xb1, 0x5f, + 0x88, 0x33, 0xc0, 0x3d, 0x30, 0xee, 0x52, 0x4c, 0x3d, 0x97, 0x6f, 0xd8, 0xe4, 0xda, 0x6a, 0x01, + 0x2e, 0x8e, 0x6f, 0x4f, 0x0b, 0xb6, 0x71, 0xff, 0x37, 0x12, 0x3c, 0xcd, 0x3f, 0x29, 0x60, 0x2a, + 0xc4, 0x8e, 0x60, 0x37, 0xef, 0xcb, 0xbb, 0xd9, 0x3c, 0x7b, 0x01, 0x39, 0x9b, 0xf8, 0x69, 0x39, + 0x16, 0x38, 0x7b, 0x44, 0xf0, 0xe7, 0xa0, 0xe6, 0x12, 0x9d, 0x74, 0xa8, 0xe5, 0x88, 0xc0, 0xdf, + 0x2c, 0x18, 0x38, 0x3e, 0x22, 0xfa, 0xbe, 0x70, 0x6d, 0x5f, 0x62, 0x91, 0x07, 0xbf, 0x50, 0x48, + 0x09, 0x3f, 0x04, 0x35, 0x4a, 0x0c, 0x5b, 0xc7, 0x94, 0x88, 0x9d, 0x7c, 0x35, 0x1e, 0x3c, 0x2b, + 0x97, 0x8c, 0x6c, 0xcf, 0xea, 0x1e, 0x08, 0x18, 0xdf, 0xc6, 0xf0, 0x61, 0x04, 0xa3, 0x28, 0xa4, + 0x81, 0x36, 0x98, 0xf6, 0xec, 0x2e, 0x43, 0x52, 0x56, 0x62, 0x7a, 0x03, 0xb1, 0xad, 0xb7, 0xcf, + 0x7e, 0x2a, 0x87, 0x92, 0x5f, 0x7b, 0x5e, 0xcc, 0x32, 0x2d, 0x8f, 0xa3, 0x04, 0x3f, 0x5c, 0x07, + 0x33, 0x86, 0x66, 0x22, 0x82, 0xbb, 0x83, 0x7d, 0xd2, 0xb1, 0xcc, 0xae, 0xbb, 0x58, 0x59, 0x51, + 0x56, 0xab, 0xed, 0x05, 0x41, 0x30, 0xb3, 0x2d, 0x9b, 0x51, 0x12, 0x0f, 0xb7, 0xc0, 0x5c, 0x50, + 0x14, 0x1e, 0x68, 0x2e, 0xb5, 0x9c, 0xc1, 0x96, 0x66, 0x68, 0x74, 0x71, 0x9c, 0xf3, 0x2c, 0x0e, + 0x4f, 0x97, 0xe7, 0x50, 0x86, 0x1d, 0x65, 0x7a, 0x35, 0xff, 0x58, 0x05, 0x33, 0x89, 0x5c, 0x85, + 0x8f, 0xc0, 0x7c, 0xc7, 0x73, 0x1c, 0x62, 0xd2, 0x1d, 0xcf, 0x38, 0x22, 0xce, 0x7e, 0xe7, 0x98, + 0x74, 0x3d, 0x9d, 0x74, 0xf9, 0xb6, 0x56, 0xdb, 0x0d, 0x11, 0xeb, 0xfc, 0x46, 0x26, 0x0a, 0xe5, + 0x78, 0xc3, 0x0f, 0x00, 0x34, 0xf9, 0xd0, 0xb6, 0xe6, 0xba, 0x21, 0x67, 0x89, 0x73, 0x2e, 0x09, + 0x4e, 0xb8, 0x93, 0x42, 0xa0, 0x0c, 0x2f, 0x16, 0x63, 0x97, 0xb8, 0x9a, 0x43, 0xba, 0xc9, 0x18, + 0xcb, 0x72, 0x8c, 0x9b, 0x99, 0x28, 0x94, 0xe3, 0x0d, 0xdf, 0x06, 0x93, 0xfe, 0x6c, 0xfc, 0x99, + 0x8b, 0xcd, 0x99, 0x15, 0x64, 0x93, 0x3b, 0x91, 0x09, 0xc5, 0x71, 0x6c, 0x69, 0xd6, 0x91, 0x4b, + 0x9c, 0x3e, 0xe9, 0xde, 0xf7, 0x1b, 0x16, 0xab, 0xea, 0x55, 0x5e, 0xd5, 0xc3, 0xa5, 0xed, 0xa6, + 0x10, 0x28, 0xc3, 0x8b, 0x2d, 0xcd, 0xcf, 0x9a, 0xd4, 0xd2, 0xc6, 0xe5, 0xa5, 0x1d, 0x66, 0xa2, + 0x50, 0x8e, 0x37, 0xcb, 0x3d, 0x3f, 0xe4, 0xf5, 0x3e, 0xd6, 0x74, 0x7c, 0xa4, 0x93, 0xc5, 0x09, + 0x39, 0xf7, 0x76, 0x64, 0x33, 0x4a, 0xe2, 0xe1, 0x7d, 0x70, 0xc5, 0x1f, 0x3a, 0x34, 0x71, 0x48, + 0x52, 0xe3, 0x24, 0xaf, 0x08, 0x92, 0x2b, 0x3b, 0x49, 0x00, 0x4a, 0xfb, 0xc0, 0xbb, 0x60, 0xba, + 0x63, 0xe9, 0x3a, 0xcf, 0xc7, 0x0d, 0xcb, 0x33, 0xe9, 0x62, 0x9d, 0xb3, 0x40, 0x76, 0x86, 0x36, + 0x24, 0x0b, 0x4a, 0x20, 0x9b, 0x9f, 0x2a, 0x60, 0x21, 0xe7, 0x1c, 0xc2, 0x1f, 0x81, 0x0a, 0x1d, + 0xd8, 0x84, 0x27, 0x6a, 0xbd, 0x7d, 0x23, 0x28, 0xe1, 0x07, 0x03, 0x9b, 0x7c, 0x75, 0xba, 0x7c, + 0x35, 0xc7, 0x8d, 0x99, 0x11, 0x77, 0x84, 0xc7, 0x60, 0x8a, 0xf5, 0x30, 0xcd, 0xec, 0xf9, 0x10, + 0x51, 0x6a, 0x5a, 0xb9, 0x15, 0x01, 0xc5, 0xd1, 0x51, 0xd1, 0xbc, 0x32, 0x3c, 0x5d, 0x9e, 0x92, + 0x6c, 0x48, 0x26, 0x6e, 0xfe, 0xb6, 0x04, 0xc0, 0x26, 0xb1, 0x75, 0x6b, 0x60, 0x10, 0x73, 0x14, + 0x6d, 0xf0, 0xa1, 0xd4, 0x06, 0x5f, 0xcf, 0xaf, 0x71, 0x61, 0x50, 0xb9, 0x7d, 0xf0, 0xc3, 0x44, + 0x1f, 0xbc, 0x5e, 0x84, 0xec, 0xc5, 0x8d, 0xf0, 0xf3, 0x32, 0x98, 0x8d, 0xc0, 0x1b, 0x96, 0xd9, + 0xd5, 0xf8, 0x69, 0xb8, 0x27, 0xed, 0xe8, 0xeb, 0x89, 0x1d, 0x5d, 0xc8, 0x70, 0x89, 0xed, 0xe6, + 0x56, 0x18, 0x67, 0x89, 0xbb, 0xbf, 0x25, 0x4f, 0xfe, 0xd5, 0xe9, 0x72, 0x86, 0xe2, 0x56, 0x43, + 0x26, 0x39, 0x44, 0x78, 0x0d, 0x8c, 0x3b, 0x04, 0xbb, 0x96, 0xc9, 0xcb, 0x42, 0x3d, 0x5a, 0x0a, + 0xe2, 0xa3, 0x48, 0x58, 0xe1, 0x75, 0x30, 0x61, 0x10, 0xd7, 0xc5, 0x3d, 0xc2, 0x2b, 0x40, 0xbd, + 0x3d, 0x23, 0x80, 0x13, 0xdb, 0xfe, 0x30, 0x0a, 0xec, 0xf0, 0x63, 0x30, 0xad, 0x63, 0x57, 0xa4, + 0xe3, 0x81, 0x66, 0x10, 0x7e, 0xc6, 0x27, 0xd7, 0xde, 0x28, 0xb6, 0xf7, 0xcc, 0x23, 0xea, 0x3d, + 0x5b, 0x12, 0x13, 0x4a, 0x30, 0xc3, 0x3e, 0x80, 0x6c, 0xe4, 0xc0, 0xc1, 0xa6, 0xeb, 0x3f, 0x28, + 0x36, 0xdf, 0xc4, 0xb9, 0xe7, 0x0b, 0xeb, 0xd9, 0x56, 0x8a, 0x0d, 0x65, 0xcc, 0xd0, 0xfc, 0xb3, + 0x02, 0xa6, 0xa3, 0x6d, 0x1a, 0x81, 0xc6, 0x79, 0x20, 0x6b, 0x9c, 0x57, 0x0b, 0x24, 0x67, 0x8e, + 0xc8, 0xf9, 0xbc, 0x12, 0x0f, 0x9d, 0xab, 0x9c, 0x55, 0xa6, 0xda, 0x6d, 0x5d, 0xeb, 0x60, 0x57, + 0xb4, 0xc3, 0x4b, 0xbe, 0x62, 0xf7, 0xc7, 0x50, 0x68, 0x95, 0xf4, 0x50, 0xe9, 0xe5, 0xea, 0xa1, + 0xf2, 0x37, 0xa3, 0x87, 0x7e, 0x0a, 0x6a, 0x6e, 0xa0, 0x84, 0x2a, 0x9c, 0xf2, 0x46, 0xa1, 0x83, + 0x2d, 0x44, 0x50, 0x48, 0x1d, 0xca, 0x9f, 0x90, 0x2e, 0x4b, 0xf8, 0x54, 0xbf, 0x4d, 0xe1, 0xc3, + 0x0e, 0xb3, 0x8d, 0x3d, 0x97, 0x74, 0xf9, 0x09, 0xa8, 0x45, 0x87, 0x79, 0x8f, 0x8f, 0x22, 0x61, + 0x85, 0x87, 0x60, 0xc1, 0x76, 0xac, 0x9e, 0x43, 0x5c, 0x77, 0x93, 0xe0, 0xae, 0xae, 0x99, 0x24, + 0x58, 0x80, 0xdf, 0xb2, 0xae, 0x0e, 0x4f, 0x97, 0x17, 0xf6, 0xb2, 0x21, 0x28, 0xcf, 0xb7, 0xf9, + 0xb7, 0x0a, 0xb8, 0x9c, 0xac, 0x8d, 0x39, 0x2a, 0x42, 0xb9, 0x90, 0x8a, 0xb8, 0x19, 0xcb, 0x53, + 0x5f, 0x62, 0xc5, 0xde, 0x2e, 0x53, 0xb9, 0xba, 0x0e, 0x66, 0x84, 0x6a, 0x08, 0x8c, 0x42, 0x47, + 0x85, 0xdb, 0x73, 0x28, 0x9b, 0x51, 0x12, 0xcf, 0xb4, 0x41, 0xd4, 0xf2, 0x03, 0x92, 0x8a, 0xac, + 0x0d, 0xd6, 0x93, 0x00, 0x94, 0xf6, 0x81, 0xdb, 0x60, 0xd6, 0x33, 0xd3, 0x54, 0x7e, 0xba, 0x5c, + 0x15, 0x54, 0xb3, 0x87, 0x69, 0x08, 0xca, 0xf2, 0x83, 0x8f, 0x01, 0xe8, 0x04, 0x05, 0xdd, 0x5d, + 0x1c, 0xe7, 0x25, 0xe1, 0x66, 0x81, 0xb4, 0x0e, 0xbb, 0x40, 0xd4, 0x56, 0xc3, 0x21, 0x17, 0xc5, + 0x38, 0xe1, 0x3d, 0x30, 0xe5, 0x70, 0x49, 0x18, 0x84, 0xea, 0xcb, 0xaa, 0xef, 0x09, 0xb7, 0x29, + 0x14, 0x37, 0x22, 0x19, 0x9b, 0xa1, 0x84, 0x6a, 0x85, 0x95, 0xd0, 0x5f, 0x15, 0x00, 0xd3, 0xe7, + 0x10, 0xde, 0x95, 0x5a, 0xe6, 0xb5, 0x44, 0xcb, 0x9c, 0x4f, 0x7b, 0xc4, 0x3a, 0xa6, 0x96, 0xad, + 0x7f, 0x6e, 0x17, 0xd4, 0x3f, 0x51, 0x41, 0x2d, 0x26, 0x80, 0xc4, 0x63, 0x18, 0xcd, 0x3d, 0x40, + 0x51, 0x01, 0x14, 0x05, 0xf5, 0x0d, 0x08, 0xa0, 0x18, 0xd9, 0x8b, 0x05, 0xd0, 0xbf, 0x4b, 0x60, + 0x36, 0x02, 0x17, 0x16, 0x40, 0x19, 0x2e, 0x2f, 0x4d, 0x00, 0x65, 0x2b, 0x88, 0xf2, 0xcb, 0x56, + 0x10, 0x2f, 0x41, 0x78, 0x71, 0x51, 0x12, 0x3d, 0xba, 0xff, 0x27, 0x51, 0x12, 0x45, 0x95, 0x23, + 0x4a, 0xfe, 0x50, 0x8a, 0x87, 0xfe, 0x9d, 0x17, 0x25, 0x5f, 0xff, 0xca, 0xa4, 0xf9, 0xf7, 0x32, + 0xb8, 0x9c, 0x3c, 0x87, 0x52, 0x83, 0x54, 0xce, 0x6c, 0x90, 0x7b, 0x60, 0xee, 0x89, 0xa7, 0xeb, + 0x03, 0xfe, 0x18, 0x62, 0x5d, 0xd2, 0x6f, 0xad, 0xdf, 0x17, 0x9e, 0x73, 0x3f, 0xc9, 0xc0, 0xa0, + 0x4c, 0xcf, 0x9c, 0x66, 0x5f, 0xbe, 0x50, 0xb3, 0x4f, 0x75, 0xa0, 0xca, 0x39, 0x3a, 0x50, 0x66, + 0xe3, 0xae, 0x5e, 0xa0, 0x71, 0x9f, 0xaf, 0xd3, 0x66, 0x14, 0xae, 0xb3, 0x3a, 0x6d, 0xf3, 0xd7, + 0x0a, 0x98, 0xcf, 0x7e, 0xe1, 0x86, 0x3a, 0x98, 0x36, 0xf0, 0xd3, 0xf8, 0xbd, 0xc4, 0x59, 0x4d, + 0xc4, 0xa3, 0x9a, 0xae, 0xfa, 0x5f, 0x19, 0xd4, 0x87, 0x26, 0xdd, 0x75, 0xf6, 0xa9, 0xa3, 0x99, + 0x3d, 0xbf, 0xf3, 0x6e, 0x4b, 0x5c, 0x28, 0xc1, 0xdd, 0xfc, 0x52, 0x01, 0x0b, 0x39, 0x9d, 0x6f, + 0xb4, 0x91, 0xc0, 0x8f, 0x40, 0xcd, 0xc0, 0x4f, 0xf7, 0x3d, 0xa7, 0x97, 0xd5, 0xab, 0x8b, 0xcd, + 0xc3, 0x4f, 0xf3, 0xb6, 0x60, 0x41, 0x21, 0x5f, 0x73, 0x17, 0xac, 0x48, 0x8b, 0x64, 0x27, 0x87, + 0x3c, 0xf1, 0x74, 0x7e, 0x88, 0x84, 0xd8, 0xb8, 0x01, 0xea, 0x36, 0x76, 0xa8, 0x16, 0x4a, 0xd5, + 0x6a, 0x7b, 0x6a, 0x78, 0xba, 0x5c, 0xdf, 0x0b, 0x06, 0x51, 0x64, 0x6f, 0xfe, 0x57, 0x01, 0xd5, + 0xfd, 0x0e, 0xd6, 0xc9, 0x08, 0xba, 0xfd, 0xa6, 0xd4, 0xed, 0xf3, 0x2f, 0xba, 0x79, 0x3c, 0xb9, + 0x8d, 0x7e, 0x2b, 0xd1, 0xe8, 0x5f, 0x3b, 0x83, 0xe7, 0xc5, 0x3d, 0xfe, 0x3d, 0x50, 0x0f, 0xa7, + 0x3b, 0x5f, 0x01, 0x6a, 0xfe, 0xbe, 0x04, 0x26, 0x63, 0x53, 0x9c, 0xb3, 0x7c, 0x3d, 0x96, 0xca, + 0x3e, 0x3b, 0x98, 0x6b, 0x45, 0x16, 0xa2, 0x06, 0x25, 0xfe, 0x7d, 0x93, 0x3a, 0xf1, 0x17, 0xbc, + 0x74, 0xe5, 0xff, 0x21, 0x98, 0xa6, 0xd8, 0xe9, 0x11, 0x1a, 0xd8, 0xf8, 0x03, 0xab, 0x47, 0xb7, + 0x13, 0x07, 0x92, 0x15, 0x25, 0xd0, 0x4b, 0xf7, 0xc0, 0x94, 0x34, 0x19, 0xbc, 0x0c, 0xca, 0x27, + 0x64, 0xe0, 0xcb, 0x1e, 0xc4, 0xfe, 0x84, 0x73, 0xa0, 0xda, 0xc7, 0xba, 0xe7, 0xe7, 0x79, 0x1d, + 0xf9, 0x3f, 0xee, 0x96, 0xde, 0x55, 0x9a, 0x9f, 0xb0, 0x87, 0x13, 0x25, 0xe7, 0x08, 0xb2, 0xeb, + 0x03, 0x29, 0xbb, 0xf2, 0xbf, 0x03, 0xc5, 0x8f, 0x4c, 0x5e, 0x8e, 0xa1, 0x44, 0x8e, 0xbd, 0x51, + 0x88, 0xed, 0xc5, 0x99, 0xf6, 0x17, 0x05, 0xcc, 0xc4, 0xd0, 0x23, 0x10, 0x38, 0x0f, 0x65, 0x81, + 0xf3, 0x5a, 0x91, 0x45, 0xe4, 0x28, 0x9c, 0x7f, 0x54, 0xa5, 0xe0, 0xbf, 0xf3, 0x12, 0xe7, 0x97, + 0x60, 0xae, 0x6f, 0xe9, 0x9e, 0x41, 0x36, 0x74, 0xac, 0x19, 0x01, 0x80, 0x75, 0xf1, 0x72, 0xf2, + 0xdd, 0x22, 0xa4, 0x27, 0x8e, 0xab, 0xb9, 0x94, 0x98, 0xf4, 0x51, 0xe4, 0x19, 0xe9, 0x90, 0x47, + 0x19, 0x74, 0x28, 0x73, 0x12, 0xf8, 0x36, 0x98, 0x64, 0x7a, 0x42, 0xeb, 0x90, 0x1d, 0x6c, 0x04, + 0xc2, 0x39, 0xfc, 0xe2, 0xb1, 0x1f, 0x99, 0x50, 0x1c, 0x07, 0x8f, 0xc1, 0xac, 0x6d, 0x75, 0xb7, + 0xb1, 0x89, 0x7b, 0x84, 0xb5, 0xbd, 0x3d, 0xfe, 0xaf, 0x08, 0xfc, 0x32, 0xa6, 0xde, 0x7e, 0x27, + 0x78, 0x4b, 0xdf, 0x4b, 0x43, 0xd8, 0x4b, 0x4b, 0xc6, 0x30, 0x7f, 0x69, 0xc9, 0xa2, 0x84, 0x4e, + 0xea, 0x2b, 0x9d, 0x7f, 0x67, 0xb9, 0x56, 0x24, 0xc3, 0x2e, 0xf8, 0x9d, 0x2e, 0xef, 0xae, 0xa9, + 0x76, 0xa1, 0x8f, 0x6c, 0x9f, 0x54, 0xc0, 0x95, 0xd4, 0xd1, 0xfd, 0x16, 0x6f, 0x7b, 0x52, 0x72, + 0xb1, 0x7c, 0x0e, 0xb9, 0xb8, 0x0e, 0x66, 0xc4, 0xf7, 0xbd, 0x84, 0xda, 0x0c, 0xf5, 0xf8, 0x86, + 0x6c, 0x46, 0x49, 0x7c, 0xd6, 0x6d, 0x53, 0xf5, 0x9c, 0xb7, 0x4d, 0xf1, 0x28, 0xc4, 0xff, 0x50, + 0xf8, 0xa9, 0x97, 0x8e, 0x42, 0xfc, 0x2b, 0x45, 0x12, 0xcf, 0x3a, 0x96, 0xcf, 0x1a, 0x32, 0x4c, + 0xc8, 0x1d, 0xeb, 0x50, 0xb2, 0xa2, 0x04, 0xfa, 0x6b, 0x7d, 0xc3, 0xfa, 0xa7, 0x02, 0x5e, 0xc9, + 0xcd, 0x52, 0xb8, 0x2e, 0xbd, 0xf2, 0xdf, 0x4a, 0xbc, 0xf2, 0xff, 0x20, 0xd7, 0x31, 0xf6, 0xe2, + 0xef, 0x64, 0xdf, 0xe3, 0xbc, 0x57, 0xec, 0x1e, 0x27, 0x43, 0xe8, 0x9d, 0x7d, 0xa1, 0xd3, 0xbe, + 0xf5, 0xec, 0x79, 0x63, 0xec, 0xb3, 0xe7, 0x8d, 0xb1, 0x2f, 0x9e, 0x37, 0xc6, 0x7e, 0x35, 0x6c, + 0x28, 0xcf, 0x86, 0x0d, 0xe5, 0xb3, 0x61, 0x43, 0xf9, 0x62, 0xd8, 0x50, 0xfe, 0x35, 0x6c, 0x28, + 0xbf, 0xfb, 0xb2, 0x31, 0xf6, 0xd1, 0x84, 0x98, 0xf1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe8, + 0x1d, 0x40, 0xdd, 0x77, 0x25, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.proto b/vendor/k8s.io/api/apps/v1beta2/generated.proto new file mode 100644 index 0000000000..1cdc69a75f --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/generated.proto @@ -0,0 +1,691 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.apps.v1beta2; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/api/policy/v1beta1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta2"; + +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both +// the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, +// it may be subject to name and representation changes in future releases, and clients should not +// depend on its stability. It is primarily for internal use by controllers. +message ControllerRevision { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data is the serialized representation of the state. + optional k8s.io.apimachinery.pkg.runtime.RawExtension data = 2; + + // Revision indicates the revision of the state represented by Data. + optional int64 revision = 3; +} + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +message ControllerRevisionList { + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ControllerRevisions + repeated ControllerRevision items = 2; +} + +// DaemonSet represents the configuration of a daemon set. +message DaemonSet { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional DaemonSetSpec spec = 2; + + // 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional DaemonSetStatus status = 3; +} + +// DaemonSetList is a collection of daemon sets. +message DaemonSetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // A list of daemon sets. + repeated DaemonSet items = 2; +} + +// DaemonSetSpec is the specification of a daemon set. +message DaemonSetSpec { + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1; + + // An 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + optional k8s.io.api.core.v1.PodTemplateSpec template = 2; + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + optional DaemonSetUpdateStrategy updateStrategy = 3; + + // The 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). + // +optional + optional int32 minReadySeconds = 4; + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + optional int32 revisionHistoryLimit = 6; +} + +// DaemonSetStatus represents the current status of a daemon set. +message DaemonSetStatus { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 currentNumberScheduled = 1; + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 numberMisscheduled = 2; + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 desiredNumberScheduled = 3; + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + optional int32 numberReady = 4; + + // The most recent generation observed by the daemon set controller. + // +optional + optional int64 observedGeneration = 5; + + // The total number of nodes that are running updated daemon pod + // +optional + optional int32 updatedNumberScheduled = 6; + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + optional int32 numberAvailable = 7; + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + optional int32 numberUnavailable = 8; + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + optional int32 collisionCount = 9; +} + +// DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet. +message DaemonSetUpdateStrategy { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate. + // +optional + optional string type = 1; + + // Rolling update config params. Present only if type = "RollingUpdate". + // --- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + optional RollingUpdateDaemonSet rollingUpdate = 2; +} + +// Deployment enables declarative updates for Pods and ReplicaSets. +message Deployment { + // Standard object metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the Deployment. + // +optional + optional DeploymentSpec spec = 2; + + // Most recently observed status of the Deployment. + // +optional + optional DeploymentStatus status = 3; +} + +// DeploymentCondition describes the state of a deployment at a certain point. +message DeploymentCondition { + // Type of deployment condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time this condition was updated. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6; + + // Last time the condition transitioned from one status to another. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7; + + // The reason for the condition's last transition. + optional string reason = 4; + + // A human readable message indicating details about the transition. + optional string message = 5; +} + +// DeploymentList is a list of Deployments. +message DeploymentList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Deployments. + repeated Deployment items = 2; +} + +// 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 + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template describes the pods that will be created. + optional k8s.io.api.core.v1.PodTemplateSpec template = 3; + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + 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 + 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. + // Defaults to 10. + // +optional + optional int32 revisionHistoryLimit = 6; + + // Indicates that the deployment is paused. + // +optional + optional bool paused = 7; + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Note that progress will + // not be estimated during the time a deployment is paused. Defaults to 600s. + optional int32 progressDeadlineSeconds = 9; +} + +// DeploymentStatus is the most recently observed status of the Deployment. +message DeploymentStatus { + // The generation observed by the deployment controller. + // +optional + optional int64 observedGeneration = 1; + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + optional int32 replicas = 2; + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + optional int32 updatedReplicas = 3; + + // Total number of ready pods targeted by this deployment. + // +optional + optional int32 readyReplicas = 7; + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + optional int32 availableReplicas = 4; + + // Total number of unavailable pods targeted by this deployment. This is the total number of + // pods that are still required for the deployment to have 100% available capacity. They may + // either be pods that are running but not yet available or pods that still have not been created. + // +optional + optional int32 unavailableReplicas = 5; + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + repeated DeploymentCondition conditions = 6; + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + optional int32 collisionCount = 8; +} + +// DeploymentStrategy describes how to replace existing pods with new ones. +message DeploymentStrategy { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + 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 + optional RollingUpdateDeployment rollingUpdate = 2; +} + +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicaSetStatus status = 3; +} + +// ReplicaSetCondition describes the state of a replica set at a certain point. +message ReplicaSetCondition { + // Type of replica set condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // The reason for the condition's last transition. + // +optional + optional string reason = 4; + + // A human readable message indicating details about the transition. + // +optional + optional string message = 5; +} + +// ReplicaSetList is a collection of ReplicaSets. +message ReplicaSetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ReplicaSets. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // +optional + optional int32 replicas = 1; + + // 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 + optional int32 minReadySeconds = 4; + + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + optional k8s.io.api.core.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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + // +optional + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replica set. + // +optional + optional int32 readyReplicas = 4; + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + optional int32 availableReplicas = 5; + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + // +optional + optional int64 observedGeneration = 3; + + // Represents the latest available observations of a replica set's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated ReplicaSetCondition conditions = 6; +} + +// Spec to control the desired behavior of daemon set rolling update. +message RollingUpdateDaemonSet { + // 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%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, 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. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 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 down. + // This can not be 0 if MaxSurge is 0. + // Defaults to 25%. + // 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 + optional k8s.io.apimachinery.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. + // Defaults to 25%. + // 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 + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2; +} + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +message RollingUpdateStatefulSetStrategy { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + // Default value is 0. + // +optional + optional int32 partition = 1; +} + +// Scale represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// ScaleSpec describes the attributes of a scale subresource +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + 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. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + map 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional string targetSelector = 3; +} + +// StatefulSet 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 StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +message StatefulSet { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired identities of pods in this set. + // +optional + optional StatefulSetSpec spec = 2; + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + optional StatefulSetStatus status = 3; +} + +// StatefulSetList is a collection of StatefulSets. +message StatefulSetList { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated StatefulSet items = 2; +} + +// A StatefulSetSpec is the specification of a StatefulSet. +message StatefulSetSpec { + // 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 + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + optional k8s.io.api.core.v1.PodTemplateSpec template = 3; + + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. 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. + // +optional + repeated k8s.io.api.core.v1.PersistentVolumeClaim volumeClaimTemplates = 4; + + // serviceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + optional string serviceName = 5; + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + optional string podManagementPolicy = 6; + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + optional StatefulSetUpdateStrategy updateStrategy = 7; + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + optional int32 revisionHistoryLimit = 8; +} + +// StatefulSetStatus represents the current state of a StatefulSet. +message StatefulSetStatus { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + optional int64 observedGeneration = 1; + + // replicas is the number of Pods created by the StatefulSet controller. + optional int32 replicas = 2; + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + optional int32 readyReplicas = 3; + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + optional int32 currentReplicas = 4; + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + optional int32 updatedReplicas = 5; + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + optional string currentRevision = 6; + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + optional string updateRevision = 7; + + // collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller + // uses this field as a collision avoidance mechanism when it needs to create the name for the + // newest ControllerRevision. + // +optional + optional int32 collisionCount = 9; +} + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +message StatefulSetUpdateStrategy { + // Type indicates the type of the StatefulSetUpdateStrategy. + // Default is RollingUpdate. + // +optional + optional string type = 1; + + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + // +optional + optional RollingUpdateStatefulSetStrategy rollingUpdate = 2; +} + diff --git a/vendor/k8s.io/api/apps/v1beta2/register.go b/vendor/k8s.io/api/apps/v1beta2/register.go new file mode 100644 index 0000000000..e207c7dc5a --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/register.go @@ -0,0 +1,61 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta2 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "apps" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta2"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &Scale{}, + &StatefulSet{}, + &StatefulSetList{}, + &DaemonSet{}, + &DaemonSetList{}, + &ReplicaSet{}, + &ReplicaSetList{}, + &ControllerRevision{}, + &ControllerRevisionList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/apps/v1beta2/types.go b/vendor/k8s.io/api/apps/v1beta2/types.go new file mode 100644 index 0000000000..925191586a --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/types.go @@ -0,0 +1,823 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta2 + +import ( + "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" +) + +const ( + ControllerRevisionHashLabelKey = "controller-revision-hash" + StatefulSetRevisionLabel = ControllerRevisionHashLabelKey + DeprecatedRollbackTo = "deprecated.deployment.rollback.to" + DeprecatedTemplateGeneration = "deprecated.daemonset.template.generation" +) + +// ScaleSpec describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + 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. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` +} + +// +genclient +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Scale represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient +// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale +// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// StatefulSet 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 StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +type StatefulSet struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired identities of pods in this set. + // +optional + Spec StatefulSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + Status StatefulSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodManagementPolicyType defines the policy for creating pods under a stateful set. +type PodManagementPolicyType string + +const ( + // OrderedReadyPodManagement will create pods in strictly increasing order on + // scale up and strictly decreasing order on scale down, progressing only when + // the previous pod is ready or terminated. At most one pod will be changed + // at any time. + OrderedReadyPodManagement PodManagementPolicyType = "OrderedReady" + // ParallelPodManagement will create and delete pods as soon as the stateful set + // replica count is changed, and will not wait for pods to be ready or complete + // termination. + ParallelPodManagement = "Parallel" +) + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +type StatefulSetUpdateStrategy struct { + // Type indicates the type of the StatefulSetUpdateStrategy. + // Default is RollingUpdate. + // +optional + Type StatefulSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetStrategyType"` + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + // +optional + RollingUpdate *RollingUpdateStatefulSetStrategy `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +// StatefulSetUpdateStrategyType is a string enumeration type that enumerates +// all possible update strategies for the StatefulSet controller. +type StatefulSetUpdateStrategyType string + +const ( + // RollingUpdateStatefulSetStrategyType indicates that update will be + // applied to all Pods in the StatefulSet with respect to the StatefulSet + // ordering constraints. When a scale operation is performed with this + // strategy, new Pods will be created from the specification version indicated + // by the StatefulSet's updateRevision. + RollingUpdateStatefulSetStrategyType = "RollingUpdate" + // OnDeleteStatefulSetStrategyType triggers the legacy behavior. Version + // tracking and ordered rolling restarts are disabled. Pods are recreated + // from the StatefulSetSpec when they are manually deleted. When a scale + // operation is performed with this strategy,specification version indicated + // by the StatefulSet's currentRevision. + OnDeleteStatefulSetStrategyType = "OnDelete" +) + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +type RollingUpdateStatefulSetStrategy struct { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + // Default value is 0. + // +optional + Partition *int32 `json:"partition,omitempty" protobuf:"varint,1,opt,name=partition"` +} + +// A StatefulSetSpec is the specification of a StatefulSet. +type StatefulSetSpec 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. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.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 StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. 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. + // +optional + VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"` + + // serviceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + ServiceName string `json:"serviceName" protobuf:"bytes,5,opt,name=serviceName"` + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + PodManagementPolicy PodManagementPolicyType `json:"podManagementPolicy,omitempty" protobuf:"bytes,6,opt,name=podManagementPolicy,casttype=PodManagementPolicyType"` + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + UpdateStrategy StatefulSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,7,opt,name=updateStrategy"` + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,8,opt,name=revisionHistoryLimit"` +} + +// StatefulSetStatus represents the current state of a StatefulSet. +type StatefulSetStatus struct { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // replicas is the number of Pods created by the StatefulSet controller. + Replicas int32 `json:"replicas" protobuf:"varint,2,opt,name=replicas"` + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,3,opt,name=readyReplicas"` + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + CurrentReplicas int32 `json:"currentReplicas,omitempty" protobuf:"varint,4,opt,name=currentReplicas"` + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,5,opt,name=updatedReplicas"` + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + CurrentRevision string `json:"currentRevision,omitempty" protobuf:"bytes,6,opt,name=currentRevision"` + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"` + + // collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller + // uses this field as a collision avoidance mechanism when it needs to create the name for the + // newest ControllerRevision. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// StatefulSetList is a collection of StatefulSets. +type StatefulSetList struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []StatefulSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Deployment enables declarative updates for Pods and ReplicaSets. +type Deployment struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the Deployment. + // +optional + Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the Deployment. + // +optional + 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. + // +optional + 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. + // +optional + Selector *metav1.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. + // +optional + 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) + // +optional + 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. + // Defaults to 10. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` + + // Indicates that the deployment is paused. + // +optional + Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Note that progress will + // not be estimated during the time a deployment is paused. Defaults to 600s. + ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` +} + +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. + // +optional + 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. + // +optional + 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 down. + // This can not be 0 if MaxSurge is 0. + // Defaults to 25%. + // 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 + 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. + // Defaults to 25%. + // 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 + 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. + // +optional + 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). + // +optional + 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. + // +optional + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` + + // Total number of ready pods targeted by this deployment. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` + + // Total number of unavailable pods targeted by this deployment. This is the total number of + // pods that are still required for the deployment to have 100% available capacity. They may + // either be pods that are running but not yet available or pods that still have not been created. + // +optional + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"` + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,8,opt,name=collisionCount"` +} + +type DeploymentConditionType string + +// These are valid conditions of a deployment. +const ( + // Available means the deployment is available, ie. at least the minimum available + // replicas required are up and running for at least minReadySeconds. + DeploymentAvailable DeploymentConditionType = "Available" + // Progressing means the deployment is progressing. Progress for a deployment is + // considered when a new replica set is created or adopted, and when new pods scale + // up or old pods scale down. Progress is not estimated for paused deployments or + // when progressDeadlineSeconds is not specified. + DeploymentProgressing DeploymentConditionType = "Progressing" + // ReplicaFailure is added in a deployment when one of its pods fails to be created + // or deleted. + DeploymentReplicaFailure DeploymentConditionType = "ReplicaFailure" +) + +// DeploymentCondition describes the state of a deployment at a certain point. +type DeploymentCondition struct { + // Type of deployment condition. + Type DeploymentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=DeploymentConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"` + // The last time this condition was updated. + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,6,opt,name=lastUpdateTime"` + // Last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,7,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DeploymentList is a list of Deployments. +type DeploymentList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.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"` +} + +// DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet. +type DaemonSetUpdateStrategy struct { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate. + // +optional + Type DaemonSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` + + // Rolling update config params. Present only if type = "RollingUpdate". + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +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" + + // Replace the old daemons only when it's killed + OnDeleteDaemonSetStrategyType DaemonSetUpdateStrategyType = "OnDelete" +) + +// 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%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, 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. + // +optional + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"` +} + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,opt,name=selector"` + + // An 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,2,opt,name=template"` + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + UpdateStrategy DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,3,opt,name=updateStrategy"` + + // The 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). + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` +} + +// DaemonSetStatus represents the current status of a daemon set. +type DaemonSetStatus struct { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + CurrentNumberScheduled int32 `json:"currentNumberScheduled" protobuf:"varint,1,opt,name=currentNumberScheduled"` + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + NumberMisscheduled int32 `json:"numberMisscheduled" protobuf:"varint,2,opt,name=numberMisscheduled"` + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + DesiredNumberScheduled int32 `json:"desiredNumberScheduled" protobuf:"varint,3,opt,name=desiredNumberScheduled"` + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + NumberReady int32 `json:"numberReady" protobuf:"varint,4,opt,name=numberReady"` + + // The most recent generation observed by the daemon set controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,5,opt,name=observedGeneration"` + + // The total number of nodes that are running updated daemon pod + // +optional + UpdatedNumberScheduled int32 `json:"updatedNumberScheduled,omitempty" protobuf:"varint,6,opt,name=updatedNumberScheduled"` + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + NumberAvailable int32 `json:"numberAvailable,omitempty" protobuf:"varint,7,opt,name=numberAvailable"` + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + NumberUnavailable int32 `json:"numberUnavailable,omitempty" protobuf:"varint,8,opt,name=numberUnavailable"` + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DaemonSet represents the configuration of a daemon set. +type DaemonSet struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec DaemonSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status DaemonSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +const ( + // DEPRECATED: DefaultDaemonSetUniqueLabelKey is used instead. + // DaemonSetTemplateGenerationKey is the key of the labels that is added + // to daemon set pods to distinguish between old and new pod templates + // during DaemonSet template update. + DaemonSetTemplateGenerationKey string = "pod-template-generation" + + // DefaultDaemonSetUniqueLabelKey is the default label key that is added + // to existing DaemonSet pods to distinguish between old and new + // DaemonSet pods during DaemonSet template updates. + DefaultDaemonSetUniqueLabelKey = ControllerRevisionHashLabelKey +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DaemonSetList is a collection of daemon sets. +type DaemonSetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // A list of daemon sets. + Items []DaemonSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ReplicaSet represents the configuration of a ReplicaSet. +type ReplicaSet struct { + metav1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ReplicaSetList is a collection of ReplicaSets. +type ReplicaSetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ReplicaSets. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // 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 + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + 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. + // +optional + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replica set. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` + + // Represents the latest available observations of a replica set's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` +} + +type ReplicaSetConditionType string + +// These are valid conditions of a replica set. +const ( + // ReplicaSetReplicaFailure is added in a replica set when one of its pods fails to be created + // due to insufficient quota, limit ranges, pod security policy, node selectors, etc. or deleted + // due to kubelet being down or finalizers are failing. + ReplicaSetReplicaFailure ReplicaSetConditionType = "ReplicaFailure" +) + +// ReplicaSetCondition describes the state of a replica set at a certain point. +type ReplicaSetCondition struct { + // Type of replica set condition. + Type ReplicaSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ReplicaSetConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"` + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both +// the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, +// it may be subject to name and representation changes in future releases, and clients should not +// depend on its stability. It is primarily for internal use by controllers. +type ControllerRevision struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data is the serialized representation of the state. + Data runtime.RawExtension `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"` + + // Revision indicates the revision of the state represented by Data. + Revision int64 `json:"revision" protobuf:"varint,3,opt,name=revision"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +type ControllerRevisionList struct { + metav1.TypeMeta `json:",inline"` + + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ControllerRevisions + Items []ControllerRevision `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go new file mode 100644 index 0000000000..65730c71ec --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go @@ -0,0 +1,368 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta2 + +// 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_ControllerRevision = map[string]string{ + "": "ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data is the serialized representation of the state.", + "revision": "Revision indicates the revision of the state represented by Data.", +} + +func (ControllerRevision) SwaggerDoc() map[string]string { + return map_ControllerRevision +} + +var map_ControllerRevisionList = map[string]string{ + "": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", + "metadata": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of ControllerRevisions", +} + +func (ControllerRevisionList) SwaggerDoc() map[string]string { + return map_ControllerRevisionList +} + +var map_DaemonSet = map[string]string{ + "": "DaemonSet represents the configuration of a daemon set.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "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": "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "An 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", + "updateStrategy": "An update strategy to replace existing DaemonSet pods with new pods.", + "minReadySeconds": "The 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).", + "revisionHistoryLimit": "The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.", +} + +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": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "numberReady": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.", + "observedGeneration": "The most recent generation observed by the daemon set controller.", + "updatedNumberScheduled": "The total number of nodes that are running updated daemon pod", + "numberAvailable": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "numberUnavailable": "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "collisionCount": "Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", +} + +func (DaemonSetStatus) SwaggerDoc() map[string]string { + return map_DaemonSetStatus +} + +var map_DaemonSetUpdateStrategy = map[string]string{ + "": "DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.", + "type": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.", + "rollingUpdate": "Rolling update config params. Present only if type = \"RollingUpdate\".", +} + +func (DaemonSetUpdateStrategy) SwaggerDoc() map[string]string { + return map_DaemonSetUpdateStrategy +} + +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_DeploymentCondition = map[string]string{ + "": "DeploymentCondition describes the state of a deployment at a certain point.", + "type": "Type of deployment condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastUpdateTime": "The last time this condition was updated.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (DeploymentCondition) SwaggerDoc() map[string]string { + return map_DeploymentCondition +} + +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_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. Defaults to 10.", + "paused": "Indicates that the deployment is paused.", + "progressDeadlineSeconds": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.", +} + +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.", + "readyReplicas": "Total number of ready pods targeted by this deployment.", + "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. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.", + "conditions": "Represents the latest available observations of a deployment's current state.", + "collisionCount": "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.", +} + +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_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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (ReplicaSet) SwaggerDoc() map[string]string { + return map_ReplicaSet +} + +var map_ReplicaSetCondition = map[string]string{ + "": "ReplicaSetCondition describes the state of a replica set at a certain point.", + "type": "Type of replica set condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastTransitionTime": "The last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (ReplicaSetCondition) SwaggerDoc() map[string]string { + return map_ReplicaSetCondition +} + +var map_ReplicaSetList = map[string]string{ + "": "ReplicaSetList is a collection of ReplicaSets.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", +} + +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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "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)", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "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.", + "availableReplicas": "The number of available replicas (ready for at least minReadySeconds) for this replica set.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", + "conditions": "Represents the latest available observations of a replica set's current state.", +} + +func (ReplicaSetStatus) SwaggerDoc() map[string]string { + return map_ReplicaSetStatus +} + +var map_RollingUpdateDaemonSet = map[string]string{ + "": "Spec to control the desired behavior of daemon set rolling update.", + "maxUnavailable": "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%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, 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.", +} + +func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string { + return map_RollingUpdateDaemonSet +} + +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 down. This can not be 0 if MaxSurge is 0. Defaults to 25%. 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. Defaults to 25%. 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_RollingUpdateStatefulSetStrategy = map[string]string{ + "": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", + "partition": "Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.", +} + +func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string { + return map_RollingUpdateStatefulSetStrategy +} + +var map_Scale = map[string]string{ + "": "Scale represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: https://git.k8s.io/community/contributors/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. More info: http://kubernetes.io/docs/user-guide/labels#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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +var map_StatefulSet = map[string]string{ + "": "StatefulSet 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 StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "spec": "Spec defines the desired identities of pods in this set.", + "status": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", +} + +func (StatefulSet) SwaggerDoc() map[string]string { + return map_StatefulSet +} + +var map_StatefulSetList = map[string]string{ + "": "StatefulSetList is a collection of StatefulSets.", +} + +func (StatefulSetList) SwaggerDoc() map[string]string { + return map_StatefulSetList +} + +var map_StatefulSetSpec = map[string]string{ + "": "A StatefulSetSpec is the specification of a StatefulSet.", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#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 StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.", + "volumeClaimTemplates": "volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. 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 StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.", + "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", + "updateStrategy": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", + "revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", +} + +func (StatefulSetSpec) SwaggerDoc() map[string]string { + return map_StatefulSetSpec +} + +var map_StatefulSetStatus = map[string]string{ + "": "StatefulSetStatus represents the current state of a StatefulSet.", + "observedGeneration": "observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", + "replicas": "replicas is the number of Pods created by the StatefulSet controller.", + "readyReplicas": "readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.", + "currentReplicas": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", + "updatedReplicas": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", + "currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", + "updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", + "collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", +} + +func (StatefulSetStatus) SwaggerDoc() map[string]string { + return map_StatefulSetStatus +} + +var map_StatefulSetUpdateStrategy = map[string]string{ + "": "StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", + "type": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.", + "rollingUpdate": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", +} + +func (StatefulSetUpdateStrategy) SwaggerDoc() map[string]string { + return map_StatefulSetUpdateStrategy +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go new file mode 100644 index 0000000000..124f84a9d4 --- /dev/null +++ b/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go @@ -0,0 +1,1017 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1beta2 + +import ( + core_v1 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/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. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ControllerRevision).DeepCopyInto(out.(*ControllerRevision)) + return nil + }, InType: reflect.TypeOf(&ControllerRevision{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ControllerRevisionList).DeepCopyInto(out.(*ControllerRevisionList)) + return nil + }, InType: reflect.TypeOf(&ControllerRevisionList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSet).DeepCopyInto(out.(*DaemonSet)) + return nil + }, InType: reflect.TypeOf(&DaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetList).DeepCopyInto(out.(*DaemonSetList)) + return nil + }, InType: reflect.TypeOf(&DaemonSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetSpec).DeepCopyInto(out.(*DaemonSetSpec)) + return nil + }, InType: reflect.TypeOf(&DaemonSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetStatus).DeepCopyInto(out.(*DaemonSetStatus)) + return nil + }, InType: reflect.TypeOf(&DaemonSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetUpdateStrategy).DeepCopyInto(out.(*DaemonSetUpdateStrategy)) + return nil + }, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Deployment).DeepCopyInto(out.(*Deployment)) + return nil + }, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition)) + return nil + }, InType: reflect.TypeOf(&DeploymentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList)) + return nil + }, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec)) + return nil + }, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus)) + return nil + }, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy)) + return nil + }, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSet).DeepCopyInto(out.(*ReplicaSet)) + return nil + }, InType: reflect.TypeOf(&ReplicaSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetCondition).DeepCopyInto(out.(*ReplicaSetCondition)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetList).DeepCopyInto(out.(*ReplicaSetList)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetSpec).DeepCopyInto(out.(*ReplicaSetSpec)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetStatus).DeepCopyInto(out.(*ReplicaSetStatus)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateDaemonSet).DeepCopyInto(out.(*RollingUpdateDaemonSet)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateStatefulSetStrategy).DeepCopyInto(out.(*RollingUpdateStatefulSetStrategy)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Scale).DeepCopyInto(out.(*Scale)) + return nil + }, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec)) + return nil + }, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus)) + return nil + }, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSet).DeepCopyInto(out.(*StatefulSet)) + return nil + }, InType: reflect.TypeOf(&StatefulSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetList).DeepCopyInto(out.(*StatefulSetList)) + return nil + }, InType: reflect.TypeOf(&StatefulSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetSpec).DeepCopyInto(out.(*StatefulSetSpec)) + return nil + }, InType: reflect.TypeOf(&StatefulSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetStatus).DeepCopyInto(out.(*StatefulSetStatus)) + return nil + }, InType: reflect.TypeOf(&StatefulSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatefulSetUpdateStrategy).DeepCopyInto(out.(*StatefulSetUpdateStrategy)) + return nil + }, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ControllerRevision) DeepCopyInto(out *ControllerRevision) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Data.DeepCopyInto(&out.Data) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRevision. +func (in *ControllerRevision) DeepCopy() *ControllerRevision { + if in == nil { + return nil + } + out := new(ControllerRevision) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ControllerRevision) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ControllerRevisionList) DeepCopyInto(out *ControllerRevisionList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ControllerRevision, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRevisionList. +func (in *ControllerRevisionList) DeepCopy() *ControllerRevisionList { + if in == nil { + return nil + } + out := new(ControllerRevisionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ControllerRevisionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSet) DeepCopyInto(out *DaemonSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSet. +func (in *DaemonSet) DeepCopy() *DaemonSet { + if in == nil { + return nil + } + out := new(DaemonSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DaemonSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetList) DeepCopyInto(out *DaemonSetList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetList. +func (in *DaemonSetList) DeepCopy() *DaemonSetList { + if in == nil { + return nil + } + out := new(DaemonSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DaemonSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetSpec. +func (in *DaemonSetSpec) DeepCopy() *DaemonSetSpec { + if in == nil { + return nil + } + out := new(DaemonSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { + *out = *in + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetStatus. +func (in *DaemonSetStatus) DeepCopy() *DaemonSetStatus { + if in == nil { + return nil + } + out := new(DaemonSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetUpdateStrategy. +func (in *DaemonSetUpdateStrategy) DeepCopy() *DaemonSetUpdateStrategy { + if in == nil { + return nil + } + out := new(DaemonSetUpdateStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Deployment) DeepCopyInto(out *Deployment) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Deployment. +func (in *Deployment) DeepCopy() *Deployment { + if in == nil { + return nil + } + out := new(Deployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Deployment) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentCondition) DeepCopyInto(out *DeploymentCondition) { + *out = *in + in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentCondition. +func (in *DeploymentCondition) DeepCopy() *DeploymentCondition { + if in == nil { + return nil + } + out := new(DeploymentCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentList) DeepCopyInto(out *DeploymentList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentList. +func (in *DeploymentList) DeepCopy() *DeploymentList { + if in == nil { + return nil + } + out := new(DeploymentList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeploymentList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + in.Strategy.DeepCopyInto(&out.Strategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.ProgressDeadlineSeconds != nil { + in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentSpec. +func (in *DeploymentSpec) DeepCopy() *DeploymentSpec { + if in == nil { + return nil + } + out := new(DeploymentSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]DeploymentCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStatus. +func (in *DeploymentStatus) DeepCopy() *DeploymentStatus { + if in == nil { + return nil + } + out := new(DeploymentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStrategy. +func (in *DeploymentStrategy) DeepCopy() *DeploymentStrategy { + if in == nil { + return nil + } + out := new(DeploymentStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSet) DeepCopyInto(out *ReplicaSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSet. +func (in *ReplicaSet) DeepCopy() *ReplicaSet { + if in == nil { + return nil + } + out := new(ReplicaSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetCondition) DeepCopyInto(out *ReplicaSetCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetCondition. +func (in *ReplicaSetCondition) DeepCopy() *ReplicaSetCondition { + if in == nil { + return nil + } + out := new(ReplicaSetCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetList) DeepCopyInto(out *ReplicaSetList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetList. +func (in *ReplicaSetList) DeepCopy() *ReplicaSetList { + if in == nil { + return nil + } + out := new(ReplicaSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetSpec. +func (in *ReplicaSetSpec) DeepCopy() *ReplicaSetSpec { + if in == nil { + return nil + } + out := new(ReplicaSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetStatus) DeepCopyInto(out *ReplicaSetStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicaSetCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetStatus. +func (in *ReplicaSetStatus) DeepCopy() *ReplicaSetStatus { + if in == nil { + return nil + } + out := new(ReplicaSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateDaemonSet. +func (in *RollingUpdateDaemonSet) DeepCopy() *RollingUpdateDaemonSet { + if in == nil { + return nil + } + out := new(RollingUpdateDaemonSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateDeployment. +func (in *RollingUpdateDeployment) DeepCopy() *RollingUpdateDeployment { + if in == nil { + return nil + } + out := new(RollingUpdateDeployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateStatefulSetStrategy) { + *out = *in + if in.Partition != nil { + in, out := &in.Partition, &out.Partition + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateStatefulSetStrategy. +func (in *RollingUpdateStatefulSetStrategy) DeepCopy() *RollingUpdateStatefulSetStrategy { + if in == nil { + return nil + } + out := new(RollingUpdateStatefulSetStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Scale) DeepCopyInto(out *Scale) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Scale. +func (in *Scale) DeepCopy() *Scale { + if in == nil { + return nil + } + out := new(Scale) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Scale) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleSpec) DeepCopyInto(out *ScaleSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleSpec. +func (in *ScaleSpec) DeepCopy() *ScaleSpec { + if in == nil { + return nil + } + out := new(ScaleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleStatus) DeepCopyInto(out *ScaleStatus) { + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleStatus. +func (in *ScaleStatus) DeepCopy() *ScaleStatus { + if in == nil { + return nil + } + out := new(ScaleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSet) DeepCopyInto(out *StatefulSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSet. +func (in *StatefulSet) DeepCopy() *StatefulSet { + if in == nil { + return nil + } + out := new(StatefulSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StatefulSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetList) DeepCopyInto(out *StatefulSetList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StatefulSet, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetList. +func (in *StatefulSetList) DeepCopy() *StatefulSetList { + if in == nil { + return nil + } + out := new(StatefulSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StatefulSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]core_v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetSpec. +func (in *StatefulSetSpec) DeepCopy() *StatefulSetSpec { + if in == nil { + return nil + } + out := new(StatefulSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { + *out = *in + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetStatus. +func (in *StatefulSetStatus) DeepCopy() *StatefulSetStatus { + if in == nil { + return nil + } + out := new(StatefulSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatefulSetUpdateStrategy. +func (in *StatefulSetUpdateStrategy) DeepCopy() *StatefulSetUpdateStrategy { + if in == nil { + return nil + } + out := new(StatefulSetUpdateStrategy) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/authentication/OWNERS b/vendor/k8s.io/api/authentication/OWNERS new file mode 100755 index 0000000000..9523523410 --- /dev/null +++ b/vendor/k8s.io/api/authentication/OWNERS @@ -0,0 +1,10 @@ +reviewers: +- liggitt +- lavalamp +- wojtek-t +- deads2k +- sttts +- timothysc +- mbohlool +- jianhuiz +- enj diff --git a/vendor/k8s.io/api/authentication/v1/BUILD b/vendor/k8s.io/api/authentication/v1/BUILD new file mode 100644 index 0000000000..745ff2609d --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/authentication/v1/doc.go b/vendor/k8s.io/api/authentication/v1/doc.go new file mode 100644 index 0000000000..15b117a4c9 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1 // import "k8s.io/api/authentication/v1" diff --git a/vendor/k8s.io/api/authentication/v1/generated.pb.go b/vendor/k8s.io/api/authentication/v1/generated.pb.go new file mode 100644 index 0000000000..e736789398 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/generated.pb.go @@ -0,0 +1,1302 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/authentication/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1/generated.proto + + It has these top-level messages: + ExtraValue + TokenReview + TokenReviewSpec + TokenReviewStatus + UserInfo +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.authentication.v1.ExtraValue") + proto.RegisterType((*TokenReview)(nil), "k8s.io.api.authentication.v1.TokenReview") + proto.RegisterType((*TokenReviewSpec)(nil), "k8s.io.api.authentication.v1.TokenReviewSpec") + proto.RegisterType((*TokenReviewStatus)(nil), "k8s.io.api.authentication.v1.TokenReviewStatus") + proto.RegisterType((*UserInfo)(nil), "k8s.io.api.authentication.v1.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 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x22 + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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_apimachinery_pkg_apis_meta_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 + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + 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 + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 642 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0xb5, 0xf3, 0x51, 0x25, 0x1b, 0x0a, 0x65, 0x25, 0xa4, 0x28, 0x02, 0x27, 0x0a, 0x12, 0xca, + 0x81, 0xae, 0x49, 0x41, 0xa5, 0x2a, 0x12, 0x12, 0x16, 0x11, 0xf4, 0x80, 0x2a, 0x2d, 0xb4, 0x48, + 0x9c, 0xd8, 0x38, 0x53, 0xc7, 0xa4, 0xfe, 0xd0, 0x7a, 0x6d, 0xe8, 0xad, 0x3f, 0x81, 0x23, 0xdc, + 0xf8, 0x17, 0x1c, 0xb9, 0xf6, 0xd8, 0x63, 0x0f, 0xa8, 0xa2, 0xe6, 0x8f, 0xa0, 0x5d, 0x2f, 0x4d, + 0xda, 0xd2, 0xd0, 0x9b, 0xf7, 0xcd, 0x7b, 0x6f, 0x67, 0x9e, 0x77, 0xd0, 0x60, 0xb2, 0x96, 0x10, + 0x3f, 0xb2, 0x27, 0xe9, 0x10, 0x78, 0x08, 0x02, 0x12, 0x3b, 0x83, 0x70, 0x14, 0x71, 0x5b, 0x17, + 0x58, 0xec, 0xdb, 0x2c, 0x15, 0x63, 0x08, 0x85, 0xef, 0x32, 0xe1, 0x47, 0xa1, 0x9d, 0xf5, 0x6d, + 0x0f, 0x42, 0xe0, 0x4c, 0xc0, 0x88, 0xc4, 0x3c, 0x12, 0x11, 0xbe, 0x5d, 0xb0, 0x09, 0x8b, 0x7d, + 0x72, 0x96, 0x4d, 0xb2, 0x7e, 0x6b, 0xd9, 0xf3, 0xc5, 0x38, 0x1d, 0x12, 0x37, 0x0a, 0x6c, 0x2f, + 0xf2, 0x22, 0x5b, 0x89, 0x86, 0xe9, 0x8e, 0x3a, 0xa9, 0x83, 0xfa, 0x2a, 0xcc, 0x5a, 0x8f, 0xa6, + 0x57, 0x07, 0xcc, 0x1d, 0xfb, 0x21, 0xf0, 0x3d, 0x3b, 0x9e, 0x78, 0x12, 0x48, 0xec, 0x00, 0x04, + 0xfb, 0x47, 0x0b, 0x2d, 0xfb, 0x32, 0x15, 0x4f, 0x43, 0xe1, 0x07, 0x70, 0x41, 0xb0, 0xfa, 0x3f, + 0x41, 0xe2, 0x8e, 0x21, 0x60, 0x17, 0x74, 0x0f, 0x2f, 0xd3, 0xa5, 0xc2, 0xdf, 0xb5, 0xfd, 0x50, + 0x24, 0x82, 0x9f, 0x17, 0x75, 0x1f, 0x23, 0x34, 0xf8, 0x24, 0x38, 0xdb, 0x66, 0xbb, 0x29, 0xe0, + 0x36, 0xaa, 0xfa, 0x02, 0x82, 0xa4, 0x69, 0x76, 0xca, 0xbd, 0xba, 0x53, 0xcf, 0x8f, 0xdb, 0xd5, + 0x0d, 0x09, 0xd0, 0x02, 0x5f, 0xaf, 0x7d, 0xf9, 0xd6, 0x36, 0xf6, 0x7f, 0x76, 0x8c, 0xee, 0xd7, + 0x12, 0x6a, 0xbc, 0x89, 0x26, 0x10, 0x52, 0xc8, 0x7c, 0xf8, 0x88, 0xdf, 0xa3, 0x9a, 0x4c, 0x60, + 0xc4, 0x04, 0x6b, 0x9a, 0x1d, 0xb3, 0xd7, 0x58, 0x79, 0x40, 0xa6, 0xe1, 0x9f, 0x36, 0x44, 0xe2, + 0x89, 0x27, 0x81, 0x84, 0x48, 0x36, 0xc9, 0xfa, 0x64, 0x73, 0xf8, 0x01, 0x5c, 0xf1, 0x0a, 0x04, + 0x73, 0xf0, 0xc1, 0x71, 0xdb, 0xc8, 0x8f, 0xdb, 0x68, 0x8a, 0xd1, 0x53, 0x57, 0xbc, 0x89, 0x2a, + 0x49, 0x0c, 0x6e, 0xb3, 0xa4, 0xdc, 0x97, 0xc9, 0xbc, 0x5f, 0x4b, 0x66, 0x5a, 0x7b, 0x1d, 0x83, + 0xeb, 0x5c, 0xd3, 0xd6, 0x15, 0x79, 0xa2, 0xca, 0x08, 0xbf, 0x45, 0x0b, 0x89, 0x60, 0x22, 0x4d, + 0x9a, 0x65, 0x65, 0x69, 0x5f, 0xdd, 0x52, 0xc9, 0x9c, 0xeb, 0xda, 0x74, 0xa1, 0x38, 0x53, 0x6d, + 0xd7, 0x5d, 0x45, 0x37, 0xce, 0xdd, 0x8f, 0xef, 0xa2, 0xaa, 0x90, 0x90, 0xca, 0xa6, 0xee, 0x2c, + 0x6a, 0x65, 0xb5, 0xe0, 0x15, 0xb5, 0xee, 0x0f, 0x13, 0xdd, 0xbc, 0x70, 0x0b, 0x7e, 0x82, 0x16, + 0x67, 0x9a, 0x81, 0x91, 0xb2, 0xa8, 0x39, 0xb7, 0xb4, 0xc5, 0xe2, 0xb3, 0xd9, 0x22, 0x3d, 0xcb, + 0xc5, 0x2f, 0x51, 0x25, 0x4d, 0x80, 0xeb, 0xd0, 0xee, 0xcd, 0x9f, 0x70, 0x2b, 0x01, 0xbe, 0x11, + 0xee, 0x44, 0xd3, 0xb4, 0x24, 0x42, 0x95, 0x83, 0x9c, 0x00, 0x38, 0x8f, 0xb8, 0x0a, 0x6b, 0x66, + 0x82, 0x81, 0x04, 0x69, 0x51, 0xeb, 0x7e, 0x2f, 0xa1, 0xda, 0x5f, 0x17, 0x7c, 0x1f, 0xd5, 0xa4, + 0x32, 0x64, 0x01, 0xe8, 0xb1, 0x97, 0xb4, 0x48, 0x71, 0x24, 0x4e, 0x4f, 0x19, 0xf8, 0x0e, 0x2a, + 0xa7, 0xfe, 0x48, 0x35, 0x5a, 0x77, 0x1a, 0x9a, 0x58, 0xde, 0xda, 0x78, 0x4e, 0x25, 0x8e, 0xbb, + 0x68, 0xc1, 0xe3, 0x51, 0x1a, 0xcb, 0x9f, 0x25, 0xdf, 0x26, 0x92, 0xb9, 0xbf, 0x50, 0x08, 0xd5, + 0x15, 0xbc, 0x8d, 0xaa, 0x20, 0x1f, 0x73, 0xb3, 0xd2, 0x29, 0xf7, 0x1a, 0x2b, 0xfd, 0xab, 0x4d, + 0x4b, 0xd4, 0x02, 0x0c, 0x42, 0xc1, 0xf7, 0x66, 0xa6, 0x92, 0x18, 0x2d, 0xec, 0x5a, 0x43, 0xbd, + 0x24, 0x8a, 0x83, 0x97, 0x50, 0x79, 0x02, 0x7b, 0xc5, 0x44, 0x54, 0x7e, 0xe2, 0xa7, 0xa8, 0x9a, + 0xc9, 0xfd, 0xd1, 0x29, 0xf7, 0xe6, 0xdf, 0x3b, 0xdd, 0x37, 0x5a, 0xc8, 0xd6, 0x4b, 0x6b, 0xa6, + 0xd3, 0x3b, 0x38, 0xb1, 0x8c, 0xc3, 0x13, 0xcb, 0x38, 0x3a, 0xb1, 0x8c, 0xfd, 0xdc, 0x32, 0x0f, + 0x72, 0xcb, 0x3c, 0xcc, 0x2d, 0xf3, 0x28, 0xb7, 0xcc, 0x5f, 0xb9, 0x65, 0x7e, 0xfe, 0x6d, 0x19, + 0xef, 0x4a, 0x59, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xeb, 0x3a, 0x3c, 0x31, 0x1b, 0x05, + 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/authentication/v1/generated.proto b/vendor/k8s.io/api/authentication/v1/generated.proto new file mode 100644 index 0000000000..fb7888b632 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/generated.proto @@ -0,0 +1,99 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.authentication.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional TokenReviewStatus status = 3; +} + +// TokenReviewSpec is a description of the token authentication request. +message TokenReviewSpec { + // Token is the opaque bearer token. + // +optional + 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 + optional bool authenticated = 1; + + // User is the UserInfo associated with the provided token. + // +optional + optional UserInfo user = 2; + + // Error indicates that the token couldn't be checked + // +optional + 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 + 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 + optional string uid = 2; + + // The names of groups this user is a part of. + // +optional + repeated string groups = 3; + + // Any additional information provided by the authenticator. + // +optional + map extra = 4; +} + diff --git a/vendor/k8s.io/api/authentication/v1/register.go b/vendor/k8s.io/api/authentication/v1/register.go new file mode 100644 index 0000000000..936237c2be --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/register.go @@ -0,0 +1,51 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &TokenReview{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/authentication/v1/types.go b/vendor/k8s.io/api/authentication/v1/types.go new file mode 100644 index 0000000000..b6d30bbe61 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/types.go @@ -0,0 +1,107 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +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 +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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. + // +optional + 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. + // +optional + 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. + // +optional + Authenticated bool `json:"authenticated,omitempty" protobuf:"varint,1,opt,name=authenticated"` + // User is the UserInfo associated with the provided token. + // +optional + User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"` + // Error indicates that the token couldn't be checked + // +optional + 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. + // +optional + 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. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"` + // The names of groups this user is a part of. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"` + // Any additional information provided by the authenticator. + // +optional + 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/pkg/apis/authentication/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authentication/v1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/authentication/v1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/authentication/v1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..c1717c1cd8 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go @@ -0,0 +1,147 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TokenReview).DeepCopyInto(out.(*TokenReview)) + return nil + }, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TokenReviewSpec).DeepCopyInto(out.(*TokenReviewSpec)) + return nil + }, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TokenReviewStatus).DeepCopyInto(out.(*TokenReviewStatus)) + return nil + }, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*UserInfo).DeepCopyInto(out.(*UserInfo)) + return nil + }, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TokenReview) DeepCopyInto(out *TokenReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenReview. +func (in *TokenReview) DeepCopy() *TokenReview { + if in == nil { + return nil + } + out := new(TokenReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TokenReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TokenReviewSpec) DeepCopyInto(out *TokenReviewSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenReviewSpec. +func (in *TokenReviewSpec) DeepCopy() *TokenReviewSpec { + if in == nil { + return nil + } + out := new(TokenReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TokenReviewStatus) DeepCopyInto(out *TokenReviewStatus) { + *out = *in + in.User.DeepCopyInto(&out.User) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenReviewStatus. +func (in *TokenReviewStatus) DeepCopy() *TokenReviewStatus { + if in == nil { + return nil + } + out := new(TokenReviewStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserInfo) DeepCopyInto(out *UserInfo) { + *out = *in + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + (*out)[key] = make(ExtraValue, len(val)) + copy((*out)[key], val) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserInfo. +func (in *UserInfo) DeepCopy() *UserInfo { + if in == nil { + return nil + } + out := new(UserInfo) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/authentication/v1beta1/BUILD b/vendor/k8s.io/api/authentication/v1beta1/BUILD new file mode 100644 index 0000000000..745ff2609d --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1beta1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/authentication/v1beta1/doc.go b/vendor/k8s.io/api/authentication/v1beta1/doc.go new file mode 100644 index 0000000000..065cfbd995 --- /dev/null +++ b/vendor/k8s.io/api/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. +*/ + +// +k8s:deepcopy-gen=package,register +// +groupName=authentication.k8s.io +// +k8s:openapi-gen=true +package v1beta1 // import "k8s.io/api/authentication/v1beta1" diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go new file mode 100644 index 0000000000..da085dd20f --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go @@ -0,0 +1,1302 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/authentication/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/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 github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.authentication.v1beta1.ExtraValue") + proto.RegisterType((*TokenReview)(nil), "k8s.io.api.authentication.v1beta1.TokenReview") + proto.RegisterType((*TokenReviewSpec)(nil), "k8s.io.api.authentication.v1beta1.TokenReviewSpec") + proto.RegisterType((*TokenReviewStatus)(nil), "k8s.io.api.authentication.v1beta1.TokenReviewStatus") + proto.RegisterType((*UserInfo)(nil), "k8s.io.api.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 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x22 + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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_apimachinery_pkg_apis_meta_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 + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + 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 + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 650 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x4d, 0x4f, 0x14, 0x4d, + 0x10, 0xc7, 0x67, 0xf6, 0x85, 0x67, 0xb7, 0xf7, 0x41, 0xb1, 0x13, 0x93, 0xcd, 0x26, 0xce, 0xae, + 0xeb, 0x85, 0x44, 0xe9, 0x11, 0x24, 0x48, 0xf0, 0xe4, 0x28, 0x31, 0x98, 0x10, 0x93, 0x16, 0x3c, + 0xa8, 0x07, 0x7b, 0x67, 0x8b, 0xd9, 0x76, 0x99, 0x97, 0xf4, 0xf4, 0xac, 0x72, 0xe3, 0x23, 0x78, + 0xf4, 0x68, 0xe2, 0x27, 0x31, 0xf1, 0xc0, 0x91, 0x23, 0x07, 0x43, 0x64, 0xfc, 0x22, 0xa6, 0x7b, + 0x5a, 0x76, 0x61, 0x43, 0x80, 0xdb, 0xf4, 0xbf, 0xea, 0xff, 0x9b, 0xaa, 0xea, 0x2e, 0xf4, 0x72, + 0xb8, 0x9a, 0x12, 0x1e, 0xbb, 0xc3, 0xac, 0x07, 0x22, 0x02, 0x09, 0xa9, 0x3b, 0x82, 0xa8, 0x1f, + 0x0b, 0xd7, 0x04, 0x58, 0xc2, 0x5d, 0x96, 0xc9, 0x01, 0x44, 0x92, 0xfb, 0x4c, 0xf2, 0x38, 0x72, + 0x47, 0x8b, 0x3d, 0x90, 0x6c, 0xd1, 0x0d, 0x20, 0x02, 0xc1, 0x24, 0xf4, 0x49, 0x22, 0x62, 0x19, + 0xe3, 0xbb, 0x85, 0x85, 0xb0, 0x84, 0x93, 0xb3, 0x16, 0x62, 0x2c, 0xad, 0x85, 0x80, 0xcb, 0x41, + 0xd6, 0x23, 0x7e, 0x1c, 0xba, 0x41, 0x1c, 0xc4, 0xae, 0x76, 0xf6, 0xb2, 0x1d, 0x7d, 0xd2, 0x07, + 0xfd, 0x55, 0x10, 0x5b, 0xcb, 0xe3, 0x22, 0x42, 0xe6, 0x0f, 0x78, 0x04, 0x62, 0xcf, 0x4d, 0x86, + 0x81, 0x12, 0x52, 0x37, 0x04, 0xc9, 0xdc, 0xd1, 0x54, 0x1d, 0x2d, 0xf7, 0x22, 0x97, 0xc8, 0x22, + 0xc9, 0x43, 0x98, 0x32, 0xac, 0x5c, 0x66, 0x48, 0xfd, 0x01, 0x84, 0x6c, 0xca, 0xf7, 0xe8, 0x22, + 0x5f, 0x26, 0xf9, 0xae, 0xcb, 0x23, 0x99, 0x4a, 0x71, 0xde, 0xd4, 0x7d, 0x8c, 0xd0, 0xfa, 0x67, + 0x29, 0xd8, 0x1b, 0xb6, 0x9b, 0x01, 0x6e, 0xa3, 0x2a, 0x97, 0x10, 0xa6, 0x4d, 0xbb, 0x53, 0x9e, + 0xaf, 0x7b, 0xf5, 0xfc, 0xb8, 0x5d, 0xdd, 0x50, 0x02, 0x2d, 0xf4, 0xb5, 0xda, 0xd7, 0x6f, 0x6d, + 0x6b, 0xff, 0x57, 0xc7, 0xea, 0x7e, 0x2f, 0xa1, 0xc6, 0x56, 0x3c, 0x84, 0x88, 0xc2, 0x88, 0xc3, + 0x27, 0xfc, 0x01, 0xd5, 0xd4, 0x04, 0xfa, 0x4c, 0xb2, 0xa6, 0xdd, 0xb1, 0xe7, 0x1b, 0x4b, 0x0f, + 0xc9, 0xf8, 0x06, 0x4e, 0x0b, 0x22, 0xc9, 0x30, 0x50, 0x42, 0x4a, 0x54, 0x36, 0x19, 0x2d, 0x92, + 0x57, 0xbd, 0x8f, 0xe0, 0xcb, 0x4d, 0x90, 0xcc, 0xc3, 0x07, 0xc7, 0x6d, 0x2b, 0x3f, 0x6e, 0xa3, + 0xb1, 0x46, 0x4f, 0xa9, 0x78, 0x0b, 0x55, 0xd2, 0x04, 0xfc, 0x66, 0x49, 0xd3, 0x97, 0xc8, 0xa5, + 0xf7, 0x4b, 0x26, 0xea, 0x7b, 0x9d, 0x80, 0xef, 0xfd, 0x6f, 0xf8, 0x15, 0x75, 0xa2, 0x9a, 0x86, + 0xdf, 0xa3, 0x99, 0x54, 0x32, 0x99, 0xa5, 0xcd, 0xb2, 0xe6, 0x2e, 0x5f, 0x93, 0xab, 0xbd, 0xde, + 0x0d, 0x43, 0x9e, 0x29, 0xce, 0xd4, 0x30, 0xbb, 0x2b, 0xe8, 0xe6, 0xb9, 0x22, 0xf0, 0x3d, 0x54, + 0x95, 0x4a, 0xd2, 0x53, 0xaa, 0x7b, 0xb3, 0xc6, 0x59, 0x2d, 0xf2, 0x8a, 0x58, 0xf7, 0xa7, 0x8d, + 0x6e, 0x4d, 0xfd, 0x05, 0x3f, 0x41, 0xb3, 0x13, 0x15, 0x41, 0x5f, 0x23, 0x6a, 0xde, 0x6d, 0x83, + 0x98, 0x7d, 0x3a, 0x19, 0xa4, 0x67, 0x73, 0xf1, 0x26, 0xaa, 0x64, 0x29, 0x08, 0x33, 0xbe, 0xfb, + 0x57, 0x68, 0x73, 0x3b, 0x05, 0xb1, 0x11, 0xed, 0xc4, 0xe3, 0xb9, 0x29, 0x85, 0x6a, 0x8c, 0x6a, + 0x03, 0x84, 0x88, 0x85, 0x1e, 0xdb, 0x44, 0x1b, 0xeb, 0x4a, 0xa4, 0x45, 0xac, 0xfb, 0xa3, 0x84, + 0x6a, 0xff, 0x28, 0xf8, 0x01, 0xaa, 0x29, 0x67, 0xc4, 0x42, 0x30, 0xbd, 0xcf, 0x19, 0x93, 0xce, + 0x51, 0x3a, 0x3d, 0xcd, 0xc0, 0x77, 0x50, 0x39, 0xe3, 0x7d, 0x5d, 0x6d, 0xdd, 0x6b, 0x98, 0xc4, + 0xf2, 0xf6, 0xc6, 0x73, 0xaa, 0x74, 0xdc, 0x45, 0x33, 0x81, 0x88, 0xb3, 0x44, 0x5d, 0x9b, 0x7a, + 0xaa, 0x48, 0x0d, 0xff, 0x85, 0x56, 0xa8, 0x89, 0xe0, 0x77, 0xa8, 0x0a, 0xea, 0x6d, 0x37, 0x2b, + 0x9d, 0xf2, 0x7c, 0x63, 0x69, 0xe5, 0x1a, 0x2d, 0x13, 0xbd, 0x14, 0xeb, 0x91, 0x14, 0x7b, 0x13, + 0xad, 0x29, 0x8d, 0x16, 0xcc, 0x56, 0x60, 0x16, 0x47, 0xe7, 0xe0, 0x39, 0x54, 0x1e, 0xc2, 0x5e, + 0xd1, 0x16, 0x55, 0x9f, 0xf8, 0x19, 0xaa, 0x8e, 0xd4, 0x4e, 0x99, 0x79, 0x2f, 0x5c, 0xe1, 0xe7, + 0xe3, 0x45, 0xa4, 0x85, 0x77, 0xad, 0xb4, 0x6a, 0x7b, 0x0b, 0x07, 0x27, 0x8e, 0x75, 0x78, 0xe2, + 0x58, 0x47, 0x27, 0x8e, 0xb5, 0x9f, 0x3b, 0xf6, 0x41, 0xee, 0xd8, 0x87, 0xb9, 0x63, 0x1f, 0xe5, + 0x8e, 0xfd, 0x3b, 0x77, 0xec, 0x2f, 0x7f, 0x1c, 0xeb, 0xed, 0x7f, 0x06, 0xf2, 0x37, 0x00, 0x00, + 0xff, 0xff, 0x36, 0x0e, 0x35, 0x2a, 0x43, 0x05, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.proto b/vendor/k8s.io/api/authentication/v1beta1/generated.proto new file mode 100644 index 0000000000..300e53488a --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1beta1/generated.proto @@ -0,0 +1,99 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.authentication.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional TokenReviewStatus status = 3; +} + +// TokenReviewSpec is a description of the token authentication request. +message TokenReviewSpec { + // Token is the opaque bearer token. + // +optional + 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 + optional bool authenticated = 1; + + // User is the UserInfo associated with the provided token. + // +optional + optional UserInfo user = 2; + + // Error indicates that the token couldn't be checked + // +optional + 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 + 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 + optional string uid = 2; + + // The names of groups this user is a part of. + // +optional + repeated string groups = 3; + + // Any additional information provided by the authenticator. + // +optional + map extra = 4; +} + diff --git a/vendor/k8s.io/api/authentication/v1beta1/register.go b/vendor/k8s.io/api/authentication/v1beta1/register.go new file mode 100644 index 0000000000..7d89e5ef70 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1beta1/register.go @@ -0,0 +1,51 @@ +/* +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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &TokenReview{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/authentication/v1beta1/types.go b/vendor/k8s.io/api/authentication/v1beta1/types.go new file mode 100644 index 0000000000..a90949dc37 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1beta1/types.go @@ -0,0 +1,92 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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. + // +optional + 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. + // +optional + 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. + // +optional + Authenticated bool `json:"authenticated,omitempty" protobuf:"varint,1,opt,name=authenticated"` + // User is the UserInfo associated with the provided token. + // +optional + User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"` + // Error indicates that the token couldn't be checked + // +optional + 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. + // +optional + 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. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"` + // The names of groups this user is a part of. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"` + // Any additional information provided by the authenticator. + // +optional + 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/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authentication/v1beta1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/authentication/v1beta1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..1b94ececa1 --- /dev/null +++ b/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,147 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TokenReview).DeepCopyInto(out.(*TokenReview)) + return nil + }, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TokenReviewSpec).DeepCopyInto(out.(*TokenReviewSpec)) + return nil + }, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TokenReviewStatus).DeepCopyInto(out.(*TokenReviewStatus)) + return nil + }, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*UserInfo).DeepCopyInto(out.(*UserInfo)) + return nil + }, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TokenReview) DeepCopyInto(out *TokenReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenReview. +func (in *TokenReview) DeepCopy() *TokenReview { + if in == nil { + return nil + } + out := new(TokenReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TokenReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TokenReviewSpec) DeepCopyInto(out *TokenReviewSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenReviewSpec. +func (in *TokenReviewSpec) DeepCopy() *TokenReviewSpec { + if in == nil { + return nil + } + out := new(TokenReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TokenReviewStatus) DeepCopyInto(out *TokenReviewStatus) { + *out = *in + in.User.DeepCopyInto(&out.User) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenReviewStatus. +func (in *TokenReviewStatus) DeepCopy() *TokenReviewStatus { + if in == nil { + return nil + } + out := new(TokenReviewStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserInfo) DeepCopyInto(out *UserInfo) { + *out = *in + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + (*out)[key] = make(ExtraValue, len(val)) + copy((*out)[key], val) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserInfo. +func (in *UserInfo) DeepCopy() *UserInfo { + if in == nil { + return nil + } + out := new(UserInfo) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/authorization/OWNERS b/vendor/k8s.io/api/authorization/OWNERS new file mode 100755 index 0000000000..a68d7eef57 --- /dev/null +++ b/vendor/k8s.io/api/authorization/OWNERS @@ -0,0 +1,18 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- liggitt +- nikhiljindal +- erictune +- sttts +- ncdc +- timothysc +- dims +- mml +- mbohlool +- david-mcmahon +- jianhuiz +- enj diff --git a/vendor/k8s.io/api/authorization/v1/BUILD b/vendor/k8s.io/api/authorization/v1/BUILD new file mode 100644 index 0000000000..745ff2609d --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/authorization/v1/doc.go b/vendor/k8s.io/api/authorization/v1/doc.go new file mode 100644 index 0000000000..b02e09caea --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1 // import "k8s.io/api/authorization/v1" diff --git a/vendor/k8s.io/api/authorization/v1/generated.pb.go b/vendor/k8s.io/api/authorization/v1/generated.pb.go new file mode 100644 index 0000000000..0795a64549 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/generated.pb.go @@ -0,0 +1,3498 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/authorization/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1/generated.proto + + It has these top-level messages: + ExtraValue + LocalSubjectAccessReview + NonResourceAttributes + NonResourceRule + ResourceAttributes + ResourceRule + SelfSubjectAccessReview + SelfSubjectAccessReviewSpec + SelfSubjectRulesReview + SelfSubjectRulesReviewSpec + SubjectAccessReview + SubjectAccessReviewSpec + SubjectAccessReviewStatus + SubjectRulesReviewStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 *NonResourceRule) Reset() { *m = NonResourceRule{} } +func (*NonResourceRule) ProtoMessage() {} +func (*NonResourceRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *ResourceAttributes) Reset() { *m = ResourceAttributes{} } +func (*ResourceAttributes) ProtoMessage() {} +func (*ResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *ResourceRule) Reset() { *m = ResourceRule{} } +func (*ResourceRule) ProtoMessage() {} +func (*ResourceRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *SelfSubjectAccessReview) Reset() { *m = SelfSubjectAccessReview{} } +func (*SelfSubjectAccessReview) ProtoMessage() {} +func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *SelfSubjectAccessReviewSpec) Reset() { *m = SelfSubjectAccessReviewSpec{} } +func (*SelfSubjectAccessReviewSpec) ProtoMessage() {} +func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{7} +} + +func (m *SelfSubjectRulesReview) Reset() { *m = SelfSubjectRulesReview{} } +func (*SelfSubjectRulesReview) ProtoMessage() {} +func (*SelfSubjectRulesReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *SelfSubjectRulesReviewSpec) Reset() { *m = SelfSubjectRulesReviewSpec{} } +func (*SelfSubjectRulesReviewSpec) ProtoMessage() {} +func (*SelfSubjectRulesReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{9} +} + +func (m *SubjectAccessReview) Reset() { *m = SubjectAccessReview{} } +func (*SubjectAccessReview) ProtoMessage() {} +func (*SubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *SubjectAccessReviewSpec) Reset() { *m = SubjectAccessReviewSpec{} } +func (*SubjectAccessReviewSpec) ProtoMessage() {} +func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{11} +} + +func (m *SubjectAccessReviewStatus) Reset() { *m = SubjectAccessReviewStatus{} } +func (*SubjectAccessReviewStatus) ProtoMessage() {} +func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{12} +} + +func (m *SubjectRulesReviewStatus) Reset() { *m = SubjectRulesReviewStatus{} } +func (*SubjectRulesReviewStatus) ProtoMessage() {} +func (*SubjectRulesReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{13} +} + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.api.authorization.v1.ExtraValue") + proto.RegisterType((*LocalSubjectAccessReview)(nil), "k8s.io.api.authorization.v1.LocalSubjectAccessReview") + proto.RegisterType((*NonResourceAttributes)(nil), "k8s.io.api.authorization.v1.NonResourceAttributes") + proto.RegisterType((*NonResourceRule)(nil), "k8s.io.api.authorization.v1.NonResourceRule") + proto.RegisterType((*ResourceAttributes)(nil), "k8s.io.api.authorization.v1.ResourceAttributes") + proto.RegisterType((*ResourceRule)(nil), "k8s.io.api.authorization.v1.ResourceRule") + proto.RegisterType((*SelfSubjectAccessReview)(nil), "k8s.io.api.authorization.v1.SelfSubjectAccessReview") + proto.RegisterType((*SelfSubjectAccessReviewSpec)(nil), "k8s.io.api.authorization.v1.SelfSubjectAccessReviewSpec") + proto.RegisterType((*SelfSubjectRulesReview)(nil), "k8s.io.api.authorization.v1.SelfSubjectRulesReview") + proto.RegisterType((*SelfSubjectRulesReviewSpec)(nil), "k8s.io.api.authorization.v1.SelfSubjectRulesReviewSpec") + proto.RegisterType((*SubjectAccessReview)(nil), "k8s.io.api.authorization.v1.SubjectAccessReview") + proto.RegisterType((*SubjectAccessReviewSpec)(nil), "k8s.io.api.authorization.v1.SubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReviewStatus)(nil), "k8s.io.api.authorization.v1.SubjectAccessReviewStatus") + proto.RegisterType((*SubjectRulesReviewStatus)(nil), "k8s.io.api.authorization.v1.SubjectRulesReviewStatus") +} +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 *NonResourceRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NonResourceRule) 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) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + 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 *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 *ResourceRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceRule) 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) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + 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.Resources) > 0 { + for _, s := range m.Resources { + 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.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + 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 *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 *SelfSubjectRulesReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectRulesReview) 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 *SelfSubjectRulesReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectRulesReviewSpec) 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) + 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())) + n12, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n13, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n14, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + 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())) + n15, err := m.ResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + } + if m.NonResourceAttributes != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NonResourceAttributes.Size())) + n16, err := m.NonResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + 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 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x2a + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n17, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + } + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + 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 (m *SubjectRulesReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectRulesReviewStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.ResourceRules) > 0 { + for _, msg := range m.ResourceRules { + 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.NonResourceRules) > 0 { + for _, msg := range m.NonResourceRules { + 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] = 0x18 + i++ + if m.Incomplete { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x22 + 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 *NonResourceRule) 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)) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + l = len(s) + 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 *ResourceRule) 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)) + } + } + 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)) + } + } + 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 *SelfSubjectRulesReview) 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 *SelfSubjectRulesReviewSpec) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + 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)) + } + } + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + 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 (m *SubjectRulesReviewStatus) Size() (n int) { + var l int + _ = l + if len(m.ResourceRules) > 0 { + for _, e := range m.ResourceRules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NonResourceRules) > 0 { + for _, e := range m.NonResourceRules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + 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_apimachinery_pkg_apis_meta_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 *NonResourceRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NonResourceRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `NonResourceURLs:` + fmt.Sprintf("%v", this.NonResourceURLs) + `,`, + `}`, + }, "") + 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 *ResourceRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *SelfSubjectRulesReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectRulesReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SelfSubjectRulesReviewSpec", "SelfSubjectRulesReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectRulesReviewStatus", "SubjectRulesReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectRulesReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectRulesReviewSpec{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `}`, + }, "") + 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 (this *SubjectRulesReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectRulesReviewStatus{`, + `ResourceRules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ResourceRules), "ResourceRule", "ResourceRule", 1), `&`, ``, 1) + `,`, + `NonResourceRules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.NonResourceRules), "NonResourceRule", "NonResourceRule", 1), `&`, ``, 1) + `,`, + `Incomplete:` + fmt.Sprintf("%v", this.Incomplete) + `,`, + `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 *NonResourceRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NonResourceRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NonResourceRule: 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 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 *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 *ResourceRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceRule: 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 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 3: + 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 4: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 *SelfSubjectRulesReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectRulesReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectRulesReview: 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 *SelfSubjectRulesReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectRulesReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectRulesReviewSpec: 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + 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 + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + case 6: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 (m *SubjectRulesReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectRulesReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectRulesReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.ResourceRules = append(m.ResourceRules, ResourceRule{}) + if err := m.ResourceRules[len(m.ResourceRules)-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 NonResourceRules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.NonResourceRules = append(m.NonResourceRules, NonResourceRule{}) + if err := m.NonResourceRules[len(m.NonResourceRules)-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 Incomplete", 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.Incomplete = bool(v != 0) + case 4: + 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1137 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xf7, 0xae, 0xed, 0xc4, 0x1e, 0x37, 0x24, 0x9d, 0x28, 0xcd, 0x36, 0x15, 0x76, 0xb4, 0x48, + 0x90, 0x8a, 0xb2, 0x4b, 0x4c, 0xdb, 0x44, 0x95, 0x2a, 0x14, 0xab, 0x11, 0x8a, 0xd4, 0x96, 0x6a, + 0xa2, 0x44, 0xa2, 0x08, 0xc4, 0x78, 0x3d, 0xb1, 0x97, 0xd8, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x38, + 0x55, 0xe2, 0x0b, 0x70, 0xe4, 0xc0, 0x81, 0x6f, 0x80, 0x90, 0x90, 0xb8, 0x71, 0xe0, 0x80, 0x72, + 0xec, 0xb1, 0x07, 0x64, 0x91, 0xe5, 0xcc, 0x77, 0x40, 0x33, 0x3b, 0xf6, 0xae, 0x93, 0xb5, 0x9b, + 0x70, 0xa0, 0x97, 0xde, 0x76, 0xdf, 0xef, 0xf7, 0xfe, 0xcc, 0x7b, 0x6f, 0xde, 0x3c, 0xf0, 0xe0, + 0x70, 0x93, 0x59, 0xae, 0x6f, 0x1f, 0x86, 0x4d, 0x42, 0x3d, 0xc2, 0x09, 0xb3, 0xfb, 0xc4, 0x6b, + 0xf9, 0xd4, 0x56, 0x00, 0x0e, 0x5c, 0x1b, 0x87, 0xbc, 0xe3, 0x53, 0xf7, 0x1b, 0xcc, 0x5d, 0xdf, + 0xb3, 0xfb, 0xeb, 0x76, 0x9b, 0x78, 0x84, 0x62, 0x4e, 0x5a, 0x56, 0x40, 0x7d, 0xee, 0xc3, 0x1b, + 0x31, 0xd9, 0xc2, 0x81, 0x6b, 0x8d, 0x91, 0xad, 0xfe, 0xfa, 0xca, 0x7b, 0x6d, 0x97, 0x77, 0xc2, + 0xa6, 0xe5, 0xf8, 0x3d, 0xbb, 0xed, 0xb7, 0x7d, 0x5b, 0xea, 0x34, 0xc3, 0x03, 0xf9, 0x27, 0x7f, + 0xe4, 0x57, 0x6c, 0x6b, 0xe5, 0x76, 0xe2, 0xb8, 0x87, 0x9d, 0x8e, 0xeb, 0x11, 0x7a, 0x6c, 0x07, + 0x87, 0x6d, 0x21, 0x60, 0x76, 0x8f, 0x70, 0x9c, 0x11, 0xc1, 0x8a, 0x3d, 0x49, 0x8b, 0x86, 0x1e, + 0x77, 0x7b, 0xe4, 0x9c, 0xc2, 0xdd, 0x97, 0x29, 0x30, 0xa7, 0x43, 0x7a, 0xf8, 0x9c, 0xde, 0x07, + 0x93, 0xf4, 0x42, 0xee, 0x76, 0x6d, 0xd7, 0xe3, 0x8c, 0xd3, 0xb3, 0x4a, 0xe6, 0x06, 0x00, 0xdb, + 0x5f, 0x73, 0x8a, 0xf7, 0x71, 0x37, 0x24, 0xb0, 0x06, 0x8a, 0x2e, 0x27, 0x3d, 0x66, 0x68, 0xab, + 0xf9, 0xb5, 0x72, 0xa3, 0x1c, 0x0d, 0x6a, 0xc5, 0x1d, 0x21, 0x40, 0xb1, 0xfc, 0x5e, 0xe9, 0xfb, + 0x1f, 0x6b, 0xb9, 0x67, 0x7f, 0xae, 0xe6, 0xcc, 0x5f, 0x74, 0x60, 0x3c, 0xf4, 0x1d, 0xdc, 0xdd, + 0x0d, 0x9b, 0x5f, 0x12, 0x87, 0x6f, 0x39, 0x0e, 0x61, 0x0c, 0x91, 0xbe, 0x4b, 0x8e, 0xe0, 0x17, + 0xa0, 0x24, 0xd2, 0xd1, 0xc2, 0x1c, 0x1b, 0xda, 0xaa, 0xb6, 0x56, 0xa9, 0xbf, 0x6f, 0x25, 0x85, + 0x18, 0x45, 0x67, 0x05, 0x87, 0x6d, 0x21, 0x60, 0x96, 0x60, 0x5b, 0xfd, 0x75, 0xeb, 0x63, 0x69, + 0xeb, 0x11, 0xe1, 0xb8, 0x01, 0x4f, 0x06, 0xb5, 0x5c, 0x34, 0xa8, 0x81, 0x44, 0x86, 0x46, 0x56, + 0xe1, 0x3e, 0x28, 0xb0, 0x80, 0x38, 0x86, 0x2e, 0xad, 0xdf, 0xb6, 0xa6, 0x94, 0xd9, 0xca, 0x88, + 0x70, 0x37, 0x20, 0x4e, 0xe3, 0x8a, 0xf2, 0x50, 0x10, 0x7f, 0x48, 0xda, 0x83, 0x9f, 0x83, 0x19, + 0xc6, 0x31, 0x0f, 0x99, 0x91, 0x97, 0x96, 0xef, 0x5e, 0xda, 0xb2, 0xd4, 0x6e, 0xbc, 0xa1, 0x6c, + 0xcf, 0xc4, 0xff, 0x48, 0x59, 0x35, 0x3f, 0x05, 0x4b, 0x8f, 0x7d, 0x0f, 0x11, 0xe6, 0x87, 0xd4, + 0x21, 0x5b, 0x9c, 0x53, 0xb7, 0x19, 0x72, 0xc2, 0xe0, 0x2a, 0x28, 0x04, 0x98, 0x77, 0x64, 0xba, + 0xca, 0x49, 0x68, 0x4f, 0x30, 0xef, 0x20, 0x89, 0x08, 0x46, 0x9f, 0xd0, 0xa6, 0x3c, 0x72, 0x8a, + 0xb1, 0x4f, 0x68, 0x13, 0x49, 0xc4, 0xfc, 0x0a, 0xcc, 0xa7, 0x8c, 0xa3, 0xb0, 0x2b, 0x2b, 0x2a, + 0xa0, 0xb1, 0x8a, 0x0a, 0x0d, 0x86, 0x62, 0x39, 0xbc, 0x0f, 0xe6, 0xbd, 0x44, 0x67, 0x0f, 0x3d, + 0x64, 0x86, 0x2e, 0xa9, 0x8b, 0xd1, 0xa0, 0x96, 0x36, 0x27, 0x20, 0x74, 0x96, 0x6b, 0xfe, 0xa6, + 0x03, 0x98, 0x71, 0x1a, 0x1b, 0x94, 0x3d, 0xdc, 0x23, 0x2c, 0xc0, 0x0e, 0x51, 0x47, 0xba, 0xaa, + 0x02, 0x2e, 0x3f, 0x1e, 0x02, 0x28, 0xe1, 0xbc, 0xfc, 0x70, 0xf0, 0x2d, 0x50, 0x6c, 0x53, 0x3f, + 0x0c, 0x64, 0x61, 0xca, 0x8d, 0x39, 0x45, 0x29, 0x7e, 0x24, 0x84, 0x28, 0xc6, 0xe0, 0x4d, 0x30, + 0xdb, 0x27, 0x94, 0xb9, 0xbe, 0x67, 0x14, 0x24, 0x6d, 0x5e, 0xd1, 0x66, 0xf7, 0x63, 0x31, 0x1a, + 0xe2, 0xf0, 0x16, 0x28, 0x51, 0x15, 0xb8, 0x51, 0x94, 0xdc, 0x05, 0xc5, 0x2d, 0x8d, 0x32, 0x38, + 0x62, 0xc0, 0x3b, 0xa0, 0xc2, 0xc2, 0xe6, 0x48, 0x61, 0x46, 0x2a, 0x2c, 0x2a, 0x85, 0xca, 0x6e, + 0x02, 0xa1, 0x34, 0x4f, 0x1c, 0x4b, 0x9c, 0xd1, 0x98, 0x1d, 0x3f, 0x96, 0x48, 0x01, 0x92, 0x88, + 0xf9, 0xbb, 0x06, 0xae, 0x5c, 0xae, 0x62, 0xef, 0x82, 0x32, 0x0e, 0x5c, 0x79, 0xec, 0x61, 0xad, + 0xe6, 0x44, 0x5e, 0xb7, 0x9e, 0xec, 0xc4, 0x42, 0x94, 0xe0, 0x82, 0x3c, 0x0c, 0x46, 0xb4, 0xf4, + 0x88, 0x3c, 0x74, 0xc9, 0x50, 0x82, 0xc3, 0x0d, 0x30, 0x37, 0xfc, 0x91, 0x45, 0x32, 0x0a, 0x52, + 0xe1, 0x6a, 0x34, 0xa8, 0xcd, 0xa1, 0x34, 0x80, 0xc6, 0x79, 0xe6, 0xaf, 0x3a, 0x58, 0xde, 0x25, + 0xdd, 0x83, 0x57, 0x33, 0x0b, 0x9e, 0x8e, 0xcd, 0x82, 0xcd, 0xe9, 0x37, 0x36, 0x3b, 0xca, 0x57, + 0x36, 0x0f, 0x7e, 0xd0, 0xc1, 0x8d, 0x29, 0x31, 0xc1, 0x23, 0x00, 0xe9, 0xb9, 0xeb, 0xa5, 0xf2, + 0x68, 0x4f, 0x8d, 0xe5, 0xfc, 0xad, 0x6c, 0x5c, 0x8b, 0x06, 0xb5, 0x8c, 0xdb, 0x8a, 0x32, 0x5c, + 0xc0, 0x6f, 0x35, 0xb0, 0xe4, 0x65, 0x4d, 0x2a, 0x95, 0xe6, 0xfa, 0x54, 0xe7, 0x99, 0x33, 0xae, + 0x71, 0x3d, 0x1a, 0xd4, 0xb2, 0xc7, 0x1f, 0xca, 0xf6, 0x25, 0x5e, 0x99, 0x6b, 0xa9, 0xf4, 0x88, + 0x0b, 0xf2, 0xff, 0xf5, 0xd5, 0x27, 0x63, 0x7d, 0xb5, 0x71, 0xd1, 0xbe, 0x4a, 0x05, 0x39, 0xb1, + 0xad, 0x3e, 0x3b, 0xd3, 0x56, 0x77, 0x2e, 0xd2, 0x56, 0x69, 0xc3, 0xd3, 0xbb, 0xea, 0x11, 0x58, + 0x99, 0x1c, 0xd0, 0xa5, 0x87, 0xb3, 0xf9, 0x93, 0x0e, 0x16, 0x5f, 0x3f, 0xf3, 0x97, 0xb9, 0xd6, + 0x7f, 0x14, 0xc0, 0xf2, 0xeb, 0x2b, 0x3d, 0x69, 0xd1, 0x09, 0x19, 0xa1, 0xea, 0x19, 0x1f, 0x15, + 0x67, 0x8f, 0x11, 0x8a, 0x24, 0x02, 0x4d, 0x30, 0xd3, 0x8e, 0x5f, 0xb7, 0xf8, 0xfd, 0x01, 0x22, + 0xc1, 0xea, 0x69, 0x53, 0x08, 0x6c, 0x81, 0x22, 0x11, 0x7b, 0xab, 0x51, 0x5c, 0xcd, 0xaf, 0x55, + 0xea, 0x1f, 0xfe, 0x97, 0xce, 0xb0, 0xe4, 0xe6, 0xbb, 0xed, 0x71, 0x7a, 0x9c, 0xac, 0x13, 0x52, + 0x86, 0x62, 0xe3, 0xf0, 0x4d, 0x90, 0x0f, 0xdd, 0x96, 0x7a, 0xed, 0x2b, 0x8a, 0x92, 0xdf, 0xdb, + 0x79, 0x80, 0x84, 0x7c, 0x05, 0xab, 0xe5, 0x59, 0x9a, 0x80, 0x0b, 0x20, 0x7f, 0x48, 0x8e, 0xe3, + 0x0b, 0x85, 0xc4, 0x27, 0xbc, 0x0f, 0x8a, 0x7d, 0xb1, 0x57, 0xab, 0xfc, 0xbe, 0x33, 0x35, 0xc8, + 0x64, 0x0d, 0x47, 0xb1, 0xd6, 0x3d, 0x7d, 0x53, 0x33, 0x7f, 0xd6, 0xc0, 0xf5, 0x89, 0xed, 0x27, + 0xd6, 0x1d, 0xdc, 0xed, 0xfa, 0x47, 0xa4, 0x25, 0xdd, 0x96, 0x92, 0x75, 0x67, 0x2b, 0x16, 0xa3, + 0x21, 0x0e, 0xdf, 0x06, 0x33, 0x94, 0x60, 0xe6, 0x7b, 0x6a, 0xc5, 0x1a, 0x75, 0x2e, 0x92, 0x52, + 0xa4, 0x50, 0xb8, 0x05, 0xe6, 0x89, 0x70, 0x2f, 0xe3, 0xda, 0xa6, 0xd4, 0x1f, 0x56, 0x6a, 0x59, + 0x29, 0xcc, 0x6f, 0x8f, 0xc3, 0xe8, 0x2c, 0xdf, 0xfc, 0x47, 0x07, 0xc6, 0xa4, 0x91, 0x05, 0x0f, + 0x92, 0x1d, 0x43, 0x82, 0x72, 0xcd, 0xa9, 0xd4, 0x6f, 0x5e, 0xa8, 0xf1, 0x85, 0x46, 0x63, 0x49, + 0x05, 0x32, 0x97, 0x96, 0xa6, 0x56, 0x12, 0xf9, 0x0b, 0x29, 0x58, 0xf0, 0xc6, 0x77, 0xe1, 0x78, + 0x59, 0xaa, 0xd4, 0x6f, 0x5d, 0xb4, 0xcd, 0xa5, 0x37, 0x43, 0x79, 0x5b, 0x38, 0x03, 0x30, 0x74, + 0xce, 0x3e, 0xac, 0x03, 0xe0, 0x7a, 0x8e, 0xdf, 0x0b, 0xba, 0x84, 0x13, 0x99, 0xb6, 0x52, 0x32, + 0xdf, 0x76, 0x46, 0x08, 0x4a, 0xb1, 0xb2, 0xf2, 0x5d, 0xb8, 0x5c, 0xbe, 0x1b, 0x6b, 0x27, 0xa7, + 0xd5, 0xdc, 0xf3, 0xd3, 0x6a, 0xee, 0xc5, 0x69, 0x35, 0xf7, 0x2c, 0xaa, 0x6a, 0x27, 0x51, 0x55, + 0x7b, 0x1e, 0x55, 0xb5, 0x17, 0x51, 0x55, 0xfb, 0x2b, 0xaa, 0x6a, 0xdf, 0xfd, 0x5d, 0xcd, 0x3d, + 0xd5, 0xfb, 0xeb, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x3f, 0xd9, 0x21, 0x54, 0x0f, 0x00, + 0x00, +} diff --git a/vendor/k8s.io/api/authorization/v1/generated.proto b/vendor/k8s.io/api/authorization/v1/generated.proto new file mode 100644 index 0000000000..7f31d599a8 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/generated.proto @@ -0,0 +1,265 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.authorization.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + 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 + optional string path = 1; + + // Verb is the standard HTTP verb + // +optional + optional string verb = 2; +} + +// NonResourceRule holds information that describes a rule for the non-resource +message NonResourceRule { + // Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all. + repeated string verbs = 1; + + // 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. "*" means all. + // +optional + repeated string nonResourceURLs = 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 + optional string namespace = 1; + + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + // +optional + optional string verb = 2; + + // Group is the API Group of the Resource. "*" means all. + // +optional + optional string group = 3; + + // Version is the API Version of the Resource. "*" means all. + // +optional + optional string version = 4; + + // Resource is one of the existing resource types. "*" means all. + // +optional + optional string resource = 5; + + // Subresource is one of the existing resource types. "" means none. + // +optional + 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 + optional string name = 7; +} + +// ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, +// may contain duplicates, and possibly be incomplete. +message ResourceRule { + // Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all. + repeated string verbs = 1; + + // 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. "*" means all. + // +optional + repeated string apiGroups = 2; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. "*" means all. + // +optional + repeated string resources = 3; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all. + // +optional + repeated string resourceNames = 4; +} + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + 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 + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; +} + +// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. +// The returned list of actions may be incomplete depending on the server's authorization mode, +// and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, +// or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to +// drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. +// SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. +message SelfSubjectRulesReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. + optional SelfSubjectRulesReviewSpec spec = 2; + + // Status is filled in by the server and indicates the set of actions a user can perform. + // +optional + optional SubjectRulesReviewStatus status = 3; +} + +message SelfSubjectRulesReviewSpec { + // Namespace to evaluate rules for. Required. + optional string namespace = 1; +} + +// SubjectAccessReview checks whether or not a user or group can perform an action. +message SubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.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 + 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 + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; + + // User is the user you're testing for. + // If you specify "User" but not "Groups", then is it interpreted as "What if User were not a member of any groups + // +optional + optional string user = 3; + + // Groups is the groups you're testing for. + // +optional + repeated string groups = 4; + + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + // +optional + map extra = 5; + + // UID information about the requesting user. + // +optional + optional string uid = 6; +} + +// 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 + 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 + optional string evaluationError = 3; +} + +// SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on +// the set of authorizers the server is configured with and any errors experienced during evaluation. +// Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, +// even if that list is incomplete. +message SubjectRulesReviewStatus { + // ResourceRules is the list of actions the subject is allowed to perform on resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + repeated ResourceRule resourceRules = 1; + + // NonResourceRules is the list of actions the subject is allowed to perform on non-resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + repeated NonResourceRule nonResourceRules = 2; + + // Incomplete is true when the rules returned by this call are incomplete. This is most commonly + // encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation. + optional bool incomplete = 3; + + // EvaluationError can appear in combination with Rules. It indicates an error occurred during + // rule evaluation, such as an authorizer that doesn't support rule evaluation, and that + // ResourceRules and/or NonResourceRules may be incomplete. + // +optional + optional string evaluationError = 4; +} + diff --git a/vendor/k8s.io/api/authorization/v1/register.go b/vendor/k8s.io/api/authorization/v1/register.go new file mode 100644 index 0000000000..d716eaa98d --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/register.go @@ -0,0 +1,55 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &SelfSubjectRulesReview{}, + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/authorization/v1/types.go b/vendor/k8s.io/api/authorization/v1/types.go new file mode 100644 index 0000000000..99ec3bcbf7 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/types.go @@ -0,0 +1,261 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type SubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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 + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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 + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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 + // +optional + 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 + // +optional + 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. + // +optional + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` + // Group is the API Group of the Resource. "*" means all. + // +optional + Group string `json:"group,omitempty" protobuf:"bytes,3,opt,name=group"` + // Version is the API Version of the Resource. "*" means all. + // +optional + Version string `json:"version,omitempty" protobuf:"bytes,4,opt,name=version"` + // Resource is one of the existing resource types. "*" means all. + // +optional + Resource string `json:"resource,omitempty" protobuf:"bytes,5,opt,name=resource"` + // Subresource is one of the existing resource types. "" means none. + // +optional + 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. + // +optional + 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 + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Verb is the standard HTTP verb + // +optional + 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 + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + 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 "Groups", then is it interpreted as "What if User were not a member of any groups + // +optional + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"` + // Groups is the groups you're testing for. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,4,rep,name=groups"` + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,5,rep,name=extra"` + // UID information about the requesting user. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,6,opt,name=uid"` +} + +// 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 + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + 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. + // +optional + 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. + // +optional + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,3,opt,name=evaluationError"` +} + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. +// The returned list of actions may be incomplete depending on the server's authorization mode, +// and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, +// or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to +// drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. +// SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. +type SelfSubjectRulesReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. + Spec SelfSubjectRulesReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates the set of actions a user can perform. + // +optional + Status SubjectRulesReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +type SelfSubjectRulesReviewSpec struct { + // Namespace to evaluate rules for. Required. + Namespace string `json:"namespace,omitempty" protobuf:"bytes,1,opt,name=namespace"` +} + +// SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on +// the set of authorizers the server is configured with and any errors experienced during evaluation. +// Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, +// even if that list is incomplete. +type SubjectRulesReviewStatus struct { + // ResourceRules is the list of actions the subject is allowed to perform on resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + ResourceRules []ResourceRule `json:"resourceRules" protobuf:"bytes,1,rep,name=resourceRules"` + // NonResourceRules is the list of actions the subject is allowed to perform on non-resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + NonResourceRules []NonResourceRule `json:"nonResourceRules" protobuf:"bytes,2,rep,name=nonResourceRules"` + // Incomplete is true when the rules returned by this call are incomplete. This is most commonly + // encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation. + Incomplete bool `json:"incomplete" protobuf:"bytes,3,rep,name=incomplete"` + // EvaluationError can appear in combination with Rules. It indicates an error occurred during + // rule evaluation, such as an authorizer that doesn't support rule evaluation, and that + // ResourceRules and/or NonResourceRules may be incomplete. + // +optional + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,4,opt,name=evaluationError"` +} + +// ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, +// may contain duplicates, and possibly be incomplete. +type ResourceRule struct { + // Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + + // 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. "*" means all. + // +optional + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. "*" means all. + // +optional + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all. + // +optional + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"` +} + +// NonResourceRule holds information that describes a rule for the non-resource +type NonResourceRule struct { + // Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + + // 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. "*" means all. + // +optional + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,2,rep,name=nonResourceURLs"` +} diff --git a/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..8a0fb8a857 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go @@ -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. +*/ + +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_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_NonResourceRule = map[string]string{ + "": "NonResourceRule holds information that describes a rule for the non-resource", + "verbs": "Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all.", + "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. \"*\" means all.", +} + +func (NonResourceRule) SwaggerDoc() map[string]string { + return map_NonResourceRule +} + +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_ResourceRule = map[string]string{ + "": "ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", + "verbs": "Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", + "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. \"*\" means all.", + "resources": "Resources is a list of resources this rule applies to. ResourceAll represents all resources. \"*\" means all.", + "resourceNames": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. \"*\" means all.", +} + +func (ResourceRule) SwaggerDoc() map[string]string { + return map_ResourceRule +} + +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_SelfSubjectRulesReview = map[string]string{ + "": "SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server.", + "spec": "Spec holds information about the request being evaluated.", + "status": "Status is filled in by the server and indicates the set of actions a user can perform.", +} + +func (SelfSubjectRulesReview) SwaggerDoc() map[string]string { + return map_SelfSubjectRulesReview +} + +var map_SelfSubjectRulesReviewSpec = map[string]string{ + "namespace": "Namespace to evaluate rules for. Required.", +} + +func (SelfSubjectRulesReviewSpec) SwaggerDoc() map[string]string { + return map_SelfSubjectRulesReviewSpec +} + +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 \"Groups\", then is it interpreted as \"What if User were not a member of any groups", + "groups": "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.", + "uid": "UID information about the requesting user.", +} + +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 +} + +var map_SubjectRulesReviewStatus = map[string]string{ + "": "SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete.", + "resourceRules": "ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", + "nonResourceRules": "NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", + "incomplete": "Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.", + "evaluationError": "EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.", +} + +func (SubjectRulesReviewStatus) SwaggerDoc() map[string]string { + return map_SubjectRulesReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..916974ffcf --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go @@ -0,0 +1,445 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LocalSubjectAccessReview).DeepCopyInto(out.(*LocalSubjectAccessReview)) + return nil + }, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NonResourceAttributes).DeepCopyInto(out.(*NonResourceAttributes)) + return nil + }, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NonResourceRule).DeepCopyInto(out.(*NonResourceRule)) + return nil + }, InType: reflect.TypeOf(&NonResourceRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceAttributes).DeepCopyInto(out.(*ResourceAttributes)) + return nil + }, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceRule).DeepCopyInto(out.(*ResourceRule)) + return nil + }, InType: reflect.TypeOf(&ResourceRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectAccessReview).DeepCopyInto(out.(*SelfSubjectAccessReview)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectAccessReviewSpec).DeepCopyInto(out.(*SelfSubjectAccessReviewSpec)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectRulesReview).DeepCopyInto(out.(*SelfSubjectRulesReview)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectRulesReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectRulesReviewSpec).DeepCopyInto(out.(*SelfSubjectRulesReviewSpec)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectRulesReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectAccessReview).DeepCopyInto(out.(*SubjectAccessReview)) + return nil + }, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectAccessReviewSpec).DeepCopyInto(out.(*SubjectAccessReviewSpec)) + return nil + }, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectAccessReviewStatus).DeepCopyInto(out.(*SubjectAccessReviewStatus)) + return nil + }, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectRulesReviewStatus).DeepCopyInto(out.(*SubjectRulesReviewStatus)) + return nil + }, InType: reflect.TypeOf(&SubjectRulesReviewStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalSubjectAccessReview) DeepCopyInto(out *LocalSubjectAccessReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalSubjectAccessReview. +func (in *LocalSubjectAccessReview) DeepCopy() *LocalSubjectAccessReview { + if in == nil { + return nil + } + out := new(LocalSubjectAccessReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LocalSubjectAccessReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NonResourceAttributes) DeepCopyInto(out *NonResourceAttributes) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NonResourceAttributes. +func (in *NonResourceAttributes) DeepCopy() *NonResourceAttributes { + if in == nil { + return nil + } + out := new(NonResourceAttributes) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NonResourceRule) DeepCopyInto(out *NonResourceRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NonResourceRule. +func (in *NonResourceRule) DeepCopy() *NonResourceRule { + if in == nil { + return nil + } + out := new(NonResourceRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceAttributes) DeepCopyInto(out *ResourceAttributes) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceAttributes. +func (in *ResourceAttributes) DeepCopy() *ResourceAttributes { + if in == nil { + return nil + } + out := new(ResourceAttributes) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceRule) DeepCopyInto(out *ResourceRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRule. +func (in *ResourceRule) DeepCopy() *ResourceRule { + if in == nil { + return nil + } + out := new(ResourceRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectAccessReview) DeepCopyInto(out *SelfSubjectAccessReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectAccessReview. +func (in *SelfSubjectAccessReview) DeepCopy() *SelfSubjectAccessReview { + if in == nil { + return nil + } + out := new(SelfSubjectAccessReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SelfSubjectAccessReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReviewSpec) { + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectAccessReviewSpec. +func (in *SelfSubjectAccessReviewSpec) DeepCopy() *SelfSubjectAccessReviewSpec { + if in == nil { + return nil + } + out := new(SelfSubjectAccessReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectRulesReview) DeepCopyInto(out *SelfSubjectRulesReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectRulesReview. +func (in *SelfSubjectRulesReview) DeepCopy() *SelfSubjectRulesReview { + if in == nil { + return nil + } + out := new(SelfSubjectRulesReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SelfSubjectRulesReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectRulesReviewSpec) DeepCopyInto(out *SelfSubjectRulesReviewSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectRulesReviewSpec. +func (in *SelfSubjectRulesReviewSpec) DeepCopy() *SelfSubjectRulesReviewSpec { + if in == nil { + return nil + } + out := new(SelfSubjectRulesReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectAccessReview) DeepCopyInto(out *SubjectAccessReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectAccessReview. +func (in *SubjectAccessReview) DeepCopy() *SubjectAccessReview { + if in == nil { + return nil + } + out := new(SubjectAccessReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SubjectAccessReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + (*out)[key] = make(ExtraValue, len(val)) + copy((*out)[key], val) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectAccessReviewSpec. +func (in *SubjectAccessReviewSpec) DeepCopy() *SubjectAccessReviewSpec { + if in == nil { + return nil + } + out := new(SubjectAccessReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectAccessReviewStatus) DeepCopyInto(out *SubjectAccessReviewStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectAccessReviewStatus. +func (in *SubjectAccessReviewStatus) DeepCopy() *SubjectAccessReviewStatus { + if in == nil { + return nil + } + out := new(SubjectAccessReviewStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectRulesReviewStatus) DeepCopyInto(out *SubjectRulesReviewStatus) { + *out = *in + if in.ResourceRules != nil { + in, out := &in.ResourceRules, &out.ResourceRules + *out = make([]ResourceRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NonResourceRules != nil { + in, out := &in.NonResourceRules, &out.NonResourceRules + *out = make([]NonResourceRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectRulesReviewStatus. +func (in *SubjectRulesReviewStatus) DeepCopy() *SubjectRulesReviewStatus { + if in == nil { + return nil + } + out := new(SubjectRulesReviewStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/authorization/v1beta1/BUILD b/vendor/k8s.io/api/authorization/v1beta1/BUILD new file mode 100644 index 0000000000..745ff2609d --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/authorization/v1beta1/doc.go b/vendor/k8s.io/api/authorization/v1beta1/doc.go new file mode 100644 index 0000000000..6809b811e7 --- /dev/null +++ b/vendor/k8s.io/api/authorization/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:openapi-gen=true + +// +groupName=authorization.k8s.io +package v1beta1 // import "k8s.io/api/authorization/v1beta1" diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go new file mode 100644 index 0000000000..e1f49d4646 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go @@ -0,0 +1,3498 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/authorization/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1/generated.proto + + It has these top-level messages: + ExtraValue + LocalSubjectAccessReview + NonResourceAttributes + NonResourceRule + ResourceAttributes + ResourceRule + SelfSubjectAccessReview + SelfSubjectAccessReviewSpec + SelfSubjectRulesReview + SelfSubjectRulesReviewSpec + SubjectAccessReview + SubjectAccessReviewSpec + SubjectAccessReviewStatus + SubjectRulesReviewStatus +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 *NonResourceRule) Reset() { *m = NonResourceRule{} } +func (*NonResourceRule) ProtoMessage() {} +func (*NonResourceRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *ResourceAttributes) Reset() { *m = ResourceAttributes{} } +func (*ResourceAttributes) ProtoMessage() {} +func (*ResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *ResourceRule) Reset() { *m = ResourceRule{} } +func (*ResourceRule) ProtoMessage() {} +func (*ResourceRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *SelfSubjectAccessReview) Reset() { *m = SelfSubjectAccessReview{} } +func (*SelfSubjectAccessReview) ProtoMessage() {} +func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *SelfSubjectAccessReviewSpec) Reset() { *m = SelfSubjectAccessReviewSpec{} } +func (*SelfSubjectAccessReviewSpec) ProtoMessage() {} +func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{7} +} + +func (m *SelfSubjectRulesReview) Reset() { *m = SelfSubjectRulesReview{} } +func (*SelfSubjectRulesReview) ProtoMessage() {} +func (*SelfSubjectRulesReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *SelfSubjectRulesReviewSpec) Reset() { *m = SelfSubjectRulesReviewSpec{} } +func (*SelfSubjectRulesReviewSpec) ProtoMessage() {} +func (*SelfSubjectRulesReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{9} +} + +func (m *SubjectAccessReview) Reset() { *m = SubjectAccessReview{} } +func (*SubjectAccessReview) ProtoMessage() {} +func (*SubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *SubjectAccessReviewSpec) Reset() { *m = SubjectAccessReviewSpec{} } +func (*SubjectAccessReviewSpec) ProtoMessage() {} +func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{11} +} + +func (m *SubjectAccessReviewStatus) Reset() { *m = SubjectAccessReviewStatus{} } +func (*SubjectAccessReviewStatus) ProtoMessage() {} +func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{12} +} + +func (m *SubjectRulesReviewStatus) Reset() { *m = SubjectRulesReviewStatus{} } +func (*SubjectRulesReviewStatus) ProtoMessage() {} +func (*SubjectRulesReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{13} +} + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.api.authorization.v1beta1.ExtraValue") + proto.RegisterType((*LocalSubjectAccessReview)(nil), "k8s.io.api.authorization.v1beta1.LocalSubjectAccessReview") + proto.RegisterType((*NonResourceAttributes)(nil), "k8s.io.api.authorization.v1beta1.NonResourceAttributes") + proto.RegisterType((*NonResourceRule)(nil), "k8s.io.api.authorization.v1beta1.NonResourceRule") + proto.RegisterType((*ResourceAttributes)(nil), "k8s.io.api.authorization.v1beta1.ResourceAttributes") + proto.RegisterType((*ResourceRule)(nil), "k8s.io.api.authorization.v1beta1.ResourceRule") + proto.RegisterType((*SelfSubjectAccessReview)(nil), "k8s.io.api.authorization.v1beta1.SelfSubjectAccessReview") + proto.RegisterType((*SelfSubjectAccessReviewSpec)(nil), "k8s.io.api.authorization.v1beta1.SelfSubjectAccessReviewSpec") + proto.RegisterType((*SelfSubjectRulesReview)(nil), "k8s.io.api.authorization.v1beta1.SelfSubjectRulesReview") + proto.RegisterType((*SelfSubjectRulesReviewSpec)(nil), "k8s.io.api.authorization.v1beta1.SelfSubjectRulesReviewSpec") + proto.RegisterType((*SubjectAccessReview)(nil), "k8s.io.api.authorization.v1beta1.SubjectAccessReview") + proto.RegisterType((*SubjectAccessReviewSpec)(nil), "k8s.io.api.authorization.v1beta1.SubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReviewStatus)(nil), "k8s.io.api.authorization.v1beta1.SubjectAccessReviewStatus") + proto.RegisterType((*SubjectRulesReviewStatus)(nil), "k8s.io.api.authorization.v1beta1.SubjectRulesReviewStatus") +} +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 *NonResourceRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NonResourceRule) 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) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + 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 *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 *ResourceRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceRule) 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) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + 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.Resources) > 0 { + for _, s := range m.Resources { + 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.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + 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 *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 *SelfSubjectRulesReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectRulesReview) 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 *SelfSubjectRulesReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectRulesReviewSpec) 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) + 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())) + n12, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n13, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n14, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + 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())) + n15, err := m.ResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + } + if m.NonResourceAttributes != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NonResourceAttributes.Size())) + n16, err := m.NonResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + 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 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x2a + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n17, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + } + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + 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 (m *SubjectRulesReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectRulesReviewStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.ResourceRules) > 0 { + for _, msg := range m.ResourceRules { + 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.NonResourceRules) > 0 { + for _, msg := range m.NonResourceRules { + 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] = 0x18 + i++ + if m.Incomplete { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x22 + 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 *NonResourceRule) 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)) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + l = len(s) + 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 *ResourceRule) 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)) + } + } + 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)) + } + } + 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 *SelfSubjectRulesReview) 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 *SelfSubjectRulesReviewSpec) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + 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)) + } + } + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + 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 (m *SubjectRulesReviewStatus) Size() (n int) { + var l int + _ = l + if len(m.ResourceRules) > 0 { + for _, e := range m.ResourceRules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NonResourceRules) > 0 { + for _, e := range m.NonResourceRules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + 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_apimachinery_pkg_apis_meta_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 *NonResourceRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NonResourceRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `NonResourceURLs:` + fmt.Sprintf("%v", this.NonResourceURLs) + `,`, + `}`, + }, "") + 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 *ResourceRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *SelfSubjectRulesReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectRulesReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SelfSubjectRulesReviewSpec", "SelfSubjectRulesReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectRulesReviewStatus", "SubjectRulesReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectRulesReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectRulesReviewSpec{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `}`, + }, "") + 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 (this *SubjectRulesReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectRulesReviewStatus{`, + `ResourceRules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ResourceRules), "ResourceRule", "ResourceRule", 1), `&`, ``, 1) + `,`, + `NonResourceRules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.NonResourceRules), "NonResourceRule", "NonResourceRule", 1), `&`, ``, 1) + `,`, + `Incomplete:` + fmt.Sprintf("%v", this.Incomplete) + `,`, + `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 *NonResourceRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NonResourceRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NonResourceRule: 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 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 *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 *ResourceRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceRule: 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 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 3: + 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 4: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 *SelfSubjectRulesReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectRulesReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectRulesReview: 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 *SelfSubjectRulesReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectRulesReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectRulesReviewSpec: 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + 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 + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + case 6: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 (m *SubjectRulesReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectRulesReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectRulesReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.ResourceRules = append(m.ResourceRules, ResourceRule{}) + if err := m.ResourceRules[len(m.ResourceRules)-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 NonResourceRules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.NonResourceRules = append(m.NonResourceRules, NonResourceRule{}) + if err := m.NonResourceRules[len(m.NonResourceRules)-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 Incomplete", 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.Incomplete = bool(v != 0) + case 4: + 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1139 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xfa, 0x47, 0x62, 0x8f, 0x1b, 0x92, 0x4e, 0x94, 0x66, 0x1b, 0x84, 0x6d, 0x19, 0x09, + 0x05, 0xd1, 0xee, 0x92, 0x50, 0x48, 0x09, 0xf4, 0x10, 0xab, 0x11, 0x8a, 0xd4, 0x96, 0x6a, 0xa2, + 0xe4, 0x40, 0x25, 0x60, 0x76, 0x33, 0xb1, 0x17, 0xdb, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x10, 0x87, + 0x1e, 0x39, 0x72, 0xe4, 0xc8, 0x89, 0x3b, 0x47, 0x2e, 0x48, 0x70, 0xca, 0xb1, 0xc7, 0x1c, 0x90, + 0x45, 0x96, 0x3f, 0x82, 0x2b, 0x9a, 0xd9, 0xb1, 0x77, 0x1d, 0xaf, 0xe3, 0x24, 0x87, 0xf6, 0xd2, + 0xdb, 0xce, 0xfb, 0xde, 0xf7, 0xde, 0x9b, 0x37, 0xef, 0xbd, 0x7d, 0x60, 0xa7, 0x7d, 0x9f, 0x19, + 0x8e, 0x67, 0xb6, 0x03, 0x8b, 0x50, 0x97, 0x70, 0xc2, 0xcc, 0x1e, 0x71, 0x0f, 0x3c, 0x6a, 0x2a, + 0x00, 0xfb, 0x8e, 0x89, 0x03, 0xde, 0xf2, 0xa8, 0xf3, 0x3d, 0xe6, 0x8e, 0xe7, 0x9a, 0xbd, 0x35, + 0x8b, 0x70, 0xbc, 0x66, 0x36, 0x89, 0x4b, 0x28, 0xe6, 0xe4, 0xc0, 0xf0, 0xa9, 0xc7, 0x3d, 0x58, + 0x8b, 0x18, 0x06, 0xf6, 0x1d, 0x63, 0x84, 0x61, 0x28, 0xc6, 0xca, 0xdd, 0xa6, 0xc3, 0x5b, 0x81, + 0x65, 0xd8, 0x5e, 0xd7, 0x6c, 0x7a, 0x4d, 0xcf, 0x94, 0x44, 0x2b, 0x38, 0x94, 0x27, 0x79, 0x90, + 0x5f, 0x91, 0xc1, 0x95, 0x7b, 0x71, 0x08, 0x5d, 0x6c, 0xb7, 0x1c, 0x97, 0xd0, 0x63, 0xd3, 0x6f, + 0x37, 0x85, 0x80, 0x99, 0x5d, 0xc2, 0xb1, 0xd9, 0x1b, 0x0b, 0x63, 0xc5, 0x9c, 0xc4, 0xa2, 0x81, + 0xcb, 0x9d, 0x2e, 0x19, 0x23, 0x7c, 0x34, 0x8d, 0xc0, 0xec, 0x16, 0xe9, 0xe2, 0x31, 0xde, 0x07, + 0x93, 0x78, 0x01, 0x77, 0x3a, 0xa6, 0xe3, 0x72, 0xc6, 0xe9, 0x79, 0x52, 0x7d, 0x03, 0x80, 0xed, + 0xef, 0x38, 0xc5, 0xfb, 0xb8, 0x13, 0x10, 0x58, 0x05, 0x05, 0x87, 0x93, 0x2e, 0xd3, 0xb5, 0x5a, + 0x6e, 0xb5, 0xd4, 0x28, 0x85, 0xfd, 0x6a, 0x61, 0x47, 0x08, 0x50, 0x24, 0xdf, 0x2c, 0xfe, 0xfc, + 0x4b, 0x35, 0xf3, 0xfc, 0xef, 0x5a, 0xa6, 0xfe, 0x47, 0x16, 0xe8, 0x8f, 0x3c, 0x1b, 0x77, 0x76, + 0x03, 0xeb, 0x1b, 0x62, 0xf3, 0x2d, 0xdb, 0x26, 0x8c, 0x21, 0xd2, 0x73, 0xc8, 0x11, 0xfc, 0x1a, + 0x14, 0x45, 0x3a, 0x0e, 0x30, 0xc7, 0xba, 0x56, 0xd3, 0x56, 0xcb, 0xeb, 0xef, 0x1b, 0xf1, 0x6b, + 0x0c, 0xa3, 0x33, 0xfc, 0x76, 0x53, 0x08, 0x98, 0x21, 0xb4, 0x8d, 0xde, 0x9a, 0xf1, 0xb9, 0xb4, + 0xf5, 0x98, 0x70, 0xdc, 0x80, 0x27, 0xfd, 0x6a, 0x26, 0xec, 0x57, 0x41, 0x2c, 0x43, 0x43, 0xab, + 0xf0, 0x19, 0xc8, 0x33, 0x9f, 0xd8, 0x7a, 0x56, 0x5a, 0xff, 0xd8, 0x98, 0xf6, 0xd6, 0x46, 0x4a, + 0x98, 0xbb, 0x3e, 0xb1, 0x1b, 0x37, 0x94, 0x9b, 0xbc, 0x38, 0x21, 0x69, 0x14, 0xda, 0x60, 0x86, + 0x71, 0xcc, 0x03, 0xa6, 0xe7, 0xa4, 0xf9, 0x4f, 0xae, 0x67, 0x5e, 0x9a, 0x68, 0xbc, 0xa1, 0x1c, + 0xcc, 0x44, 0x67, 0xa4, 0x4c, 0xd7, 0x9f, 0x81, 0xa5, 0x27, 0x9e, 0x8b, 0x08, 0xf3, 0x02, 0x6a, + 0x93, 0x2d, 0xce, 0xa9, 0x63, 0x05, 0x9c, 0x30, 0x58, 0x03, 0x79, 0x1f, 0xf3, 0x96, 0x4c, 0x5c, + 0x29, 0x8e, 0xef, 0x29, 0xe6, 0x2d, 0x24, 0x11, 0xa1, 0xd1, 0x23, 0xd4, 0x92, 0x97, 0x4f, 0x68, + 0xec, 0x13, 0x6a, 0x21, 0x89, 0xd4, 0xbf, 0x05, 0xf3, 0x09, 0xe3, 0x28, 0xe8, 0xc8, 0xb7, 0x15, + 0xd0, 0xc8, 0xdb, 0x0a, 0x06, 0x43, 0x91, 0x1c, 0x3e, 0x00, 0xf3, 0x6e, 0xcc, 0xd9, 0x43, 0x8f, + 0x98, 0x9e, 0x95, 0xaa, 0x8b, 0x61, 0xbf, 0x9a, 0x34, 0x27, 0x20, 0x74, 0x5e, 0x57, 0x14, 0x04, + 0x4c, 0xb9, 0x8d, 0x09, 0x4a, 0x2e, 0xee, 0x12, 0xe6, 0x63, 0x9b, 0xa8, 0x2b, 0xdd, 0x54, 0x01, + 0x97, 0x9e, 0x0c, 0x00, 0x14, 0xeb, 0x4c, 0xbf, 0x1c, 0x7c, 0x1b, 0x14, 0x9a, 0xd4, 0x0b, 0x7c, + 0xf9, 0x3a, 0xa5, 0xc6, 0x9c, 0x52, 0x29, 0x7c, 0x26, 0x84, 0x28, 0xc2, 0xe0, 0xbb, 0x60, 0xb6, + 0x47, 0x28, 0x73, 0x3c, 0x57, 0xcf, 0x4b, 0xb5, 0x79, 0xa5, 0x36, 0xbb, 0x1f, 0x89, 0xd1, 0x00, + 0x87, 0x77, 0x40, 0x91, 0xaa, 0xc0, 0xf5, 0x82, 0xd4, 0x5d, 0x50, 0xba, 0xc5, 0x61, 0x06, 0x87, + 0x1a, 0xf0, 0x43, 0x50, 0x66, 0x81, 0x35, 0x24, 0xcc, 0x48, 0xc2, 0xa2, 0x22, 0x94, 0x77, 0x63, + 0x08, 0x25, 0xf5, 0xc4, 0xb5, 0xc4, 0x1d, 0xf5, 0xd9, 0xd1, 0x6b, 0x89, 0x14, 0x20, 0x89, 0xd4, + 0xff, 0xd2, 0xc0, 0x8d, 0xab, 0xbd, 0xd8, 0x7b, 0xa0, 0x84, 0x7d, 0x47, 0x5e, 0x7b, 0xf0, 0x56, + 0x73, 0x22, 0xaf, 0x5b, 0x4f, 0x77, 0x22, 0x21, 0x8a, 0x71, 0xa1, 0x3c, 0x08, 0x46, 0xd4, 0xf5, + 0x50, 0x79, 0xe0, 0x92, 0xa1, 0x18, 0x87, 0x1b, 0x60, 0x6e, 0x70, 0x90, 0x8f, 0xa4, 0xe7, 0x25, + 0xe1, 0x66, 0xd8, 0xaf, 0xce, 0xa1, 0x24, 0x80, 0x46, 0xf5, 0xea, 0x7f, 0x66, 0xc1, 0xf2, 0x2e, + 0xe9, 0x1c, 0xbe, 0x9a, 0xa9, 0xf0, 0xd5, 0xc8, 0x54, 0x78, 0x70, 0x89, 0xb6, 0x4d, 0x0f, 0xf5, + 0xd5, 0x4e, 0x86, 0x5f, 0xb3, 0xe0, 0xcd, 0x0b, 0x02, 0x83, 0x3f, 0x00, 0x48, 0xc7, 0x1a, 0x4d, + 0x65, 0xf4, 0xde, 0xf4, 0x80, 0xc6, 0x9b, 0xb4, 0x71, 0x2b, 0xec, 0x57, 0x53, 0x9a, 0x17, 0xa5, + 0xf8, 0x81, 0x3f, 0x6a, 0x60, 0xc9, 0x4d, 0x1b, 0x5c, 0x2a, 0xeb, 0x1b, 0xd3, 0x23, 0x48, 0x9d, + 0x7b, 0x8d, 0xdb, 0x61, 0xbf, 0x9a, 0x3e, 0x12, 0x51, 0xba, 0x43, 0x31, 0x72, 0x6e, 0x25, 0x12, + 0x25, 0x9a, 0xe6, 0xe5, 0xd5, 0xda, 0x97, 0x23, 0xb5, 0xf6, 0xe9, 0x95, 0x6a, 0x2d, 0x11, 0xe9, + 0xc4, 0x52, 0xb3, 0xce, 0x95, 0xda, 0xe6, 0xa5, 0x4b, 0x2d, 0x69, 0xfd, 0xe2, 0x4a, 0x7b, 0x0c, + 0x56, 0x26, 0x47, 0x75, 0xe5, 0xd1, 0x5d, 0xff, 0x3d, 0x0b, 0x16, 0x5f, 0xaf, 0x03, 0xd7, 0x6b, + 0xfa, 0xd3, 0x3c, 0x58, 0x7e, 0xdd, 0xf0, 0x17, 0x37, 0xbc, 0xf8, 0x89, 0x06, 0x8c, 0x50, 0xf5, + 0xe3, 0x1f, 0xbe, 0xd5, 0x1e, 0x23, 0x14, 0x49, 0x04, 0xd6, 0x06, 0xbb, 0x41, 0xf4, 0xc3, 0x02, + 0x22, 0xd3, 0xea, 0x5f, 0xa8, 0x16, 0x03, 0x07, 0x14, 0x88, 0xd8, 0x78, 0xf5, 0x42, 0x2d, 0xb7, + 0x5a, 0x5e, 0x7f, 0x78, 0xed, 0x5a, 0x31, 0xe4, 0xe2, 0xbc, 0xed, 0x72, 0x7a, 0x1c, 0xef, 0x20, + 0x52, 0x86, 0x22, 0x0f, 0xf0, 0x2d, 0x90, 0x0b, 0x9c, 0x03, 0xb5, 0x22, 0x94, 0x95, 0x4a, 0x6e, + 0x6f, 0xe7, 0x21, 0x12, 0xf2, 0x95, 0x43, 0xb5, 0x7b, 0x4b, 0x13, 0x70, 0x01, 0xe4, 0xda, 0xe4, + 0x38, 0xea, 0x33, 0x24, 0x3e, 0x61, 0x03, 0x14, 0x7a, 0x62, 0x2d, 0x57, 0x79, 0xbe, 0x33, 0x3d, + 0xd2, 0x78, 0x95, 0x47, 0x11, 0x75, 0x33, 0x7b, 0x5f, 0xab, 0xff, 0xa6, 0x81, 0xdb, 0x13, 0x0b, + 0x52, 0x2c, 0x4a, 0xb8, 0xd3, 0xf1, 0x8e, 0xc8, 0x81, 0xf4, 0x5d, 0x8c, 0x17, 0xa5, 0xad, 0x48, + 0x8c, 0x06, 0x38, 0x7c, 0x07, 0xcc, 0x50, 0x82, 0x99, 0xe7, 0xaa, 0xe5, 0x6c, 0x58, 0xcb, 0x48, + 0x4a, 0x91, 0x42, 0xe1, 0x16, 0x98, 0x27, 0xc2, 0xbd, 0x0c, 0x6e, 0x9b, 0x52, 0x6f, 0xf0, 0x62, + 0xcb, 0x8a, 0x30, 0xbf, 0x3d, 0x0a, 0xa3, 0xf3, 0xfa, 0xf5, 0xff, 0xb2, 0x40, 0x9f, 0x34, 0xce, + 0x60, 0x3b, 0xde, 0x4e, 0x24, 0x28, 0x17, 0xa4, 0xf2, 0xba, 0x71, 0xf9, 0x56, 0x10, 0xb4, 0xc6, + 0x92, 0x8a, 0x66, 0x2e, 0x29, 0x4d, 0x6c, 0x34, 0xf2, 0x08, 0x8f, 0xc0, 0x82, 0x3b, 0xba, 0x4a, + 0x47, 0xbb, 0x56, 0x79, 0x7d, 0xed, 0x4a, 0x85, 0x2f, 0x5d, 0xea, 0xca, 0xe5, 0xc2, 0x39, 0x80, + 0xa1, 0x31, 0x27, 0x70, 0x1d, 0x00, 0xc7, 0xb5, 0xbd, 0xae, 0xdf, 0x21, 0x9c, 0xc8, 0x04, 0x16, + 0xe3, 0x29, 0xb8, 0x33, 0x44, 0x50, 0x42, 0x2b, 0x2d, 0xf3, 0xf9, 0xab, 0x65, 0xbe, 0x71, 0xf7, + 0xe4, 0xac, 0x92, 0x79, 0x71, 0x56, 0xc9, 0x9c, 0x9e, 0x55, 0x32, 0xcf, 0xc3, 0x8a, 0x76, 0x12, + 0x56, 0xb4, 0x17, 0x61, 0x45, 0x3b, 0x0d, 0x2b, 0xda, 0x3f, 0x61, 0x45, 0xfb, 0xe9, 0xdf, 0x4a, + 0xe6, 0x8b, 0x59, 0x75, 0xc3, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x29, 0xa9, 0x9d, 0x7c, 0xb1, + 0x0f, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.proto b/vendor/k8s.io/api/authorization/v1beta1/generated.proto new file mode 100644 index 0000000000..9e9942f367 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/generated.proto @@ -0,0 +1,265 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.authorization.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + 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 + optional string path = 1; + + // Verb is the standard HTTP verb + // +optional + optional string verb = 2; +} + +// NonResourceRule holds information that describes a rule for the non-resource +message NonResourceRule { + // Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all. + repeated string verbs = 1; + + // 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. "*" means all. + // +optional + repeated string nonResourceURLs = 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 + optional string namespace = 1; + + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + // +optional + optional string verb = 2; + + // Group is the API Group of the Resource. "*" means all. + // +optional + optional string group = 3; + + // Version is the API Version of the Resource. "*" means all. + // +optional + optional string version = 4; + + // Resource is one of the existing resource types. "*" means all. + // +optional + optional string resource = 5; + + // Subresource is one of the existing resource types. "" means none. + // +optional + 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 + optional string name = 7; +} + +// ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, +// may contain duplicates, and possibly be incomplete. +message ResourceRule { + // Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all. + repeated string verbs = 1; + + // 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. "*" means all. + // +optional + repeated string apiGroups = 2; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. "*" means all. + // +optional + repeated string resources = 3; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all. + // +optional + repeated string resourceNames = 4; +} + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + 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 + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; +} + +// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. +// The returned list of actions may be incomplete depending on the server's authorization mode, +// and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, +// or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to +// drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. +// SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. +message SelfSubjectRulesReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. + optional SelfSubjectRulesReviewSpec spec = 2; + + // Status is filled in by the server and indicates the set of actions a user can perform. + // +optional + optional SubjectRulesReviewStatus status = 3; +} + +message SelfSubjectRulesReviewSpec { + // Namespace to evaluate rules for. Required. + optional string namespace = 1; +} + +// SubjectAccessReview checks whether or not a user or group can perform an action. +message SubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.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 + 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 + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + 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 + optional string user = 3; + + // Groups is the groups you're testing for. + // +optional + 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. + // +optional + map extra = 5; + + // UID information about the requesting user. + // +optional + optional string uid = 6; +} + +// 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 + 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 + optional string evaluationError = 3; +} + +// SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on +// the set of authorizers the server is configured with and any errors experienced during evaluation. +// Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, +// even if that list is incomplete. +message SubjectRulesReviewStatus { + // ResourceRules is the list of actions the subject is allowed to perform on resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + repeated ResourceRule resourceRules = 1; + + // NonResourceRules is the list of actions the subject is allowed to perform on non-resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + repeated NonResourceRule nonResourceRules = 2; + + // Incomplete is true when the rules returned by this call are incomplete. This is most commonly + // encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation. + optional bool incomplete = 3; + + // EvaluationError can appear in combination with Rules. It indicates an error occurred during + // rule evaluation, such as an authorizer that doesn't support rule evaluation, and that + // ResourceRules and/or NonResourceRules may be incomplete. + // +optional + optional string evaluationError = 4; +} + diff --git a/vendor/k8s.io/api/authorization/v1beta1/register.go b/vendor/k8s.io/api/authorization/v1beta1/register.go new file mode 100644 index 0000000000..d8116d5a47 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/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 v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &SelfSubjectRulesReview{}, + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/authorization/v1beta1/types.go b/vendor/k8s.io/api/authorization/v1beta1/types.go new file mode 100644 index 0000000000..a0659d519c --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/types.go @@ -0,0 +1,261 @@ +/* +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" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type SubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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 + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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 + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.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 + // +optional + 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 + // +optional + 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. + // +optional + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` + // Group is the API Group of the Resource. "*" means all. + // +optional + Group string `json:"group,omitempty" protobuf:"bytes,3,opt,name=group"` + // Version is the API Version of the Resource. "*" means all. + // +optional + Version string `json:"version,omitempty" protobuf:"bytes,4,opt,name=version"` + // Resource is one of the existing resource types. "*" means all. + // +optional + Resource string `json:"resource,omitempty" protobuf:"bytes,5,opt,name=resource"` + // Subresource is one of the existing resource types. "" means none. + // +optional + 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. + // +optional + 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 + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Verb is the standard HTTP verb + // +optional + 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 + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + 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 + // +optional + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"` + // Groups is the groups you're testing for. + // +optional + 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. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,5,rep,name=extra"` + // UID information about the requesting user. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,6,opt,name=uid"` +} + +// 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 + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + 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. + // +optional + 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. + // +optional + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,3,opt,name=evaluationError"` +} + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. +// The returned list of actions may be incomplete depending on the server's authorization mode, +// and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, +// or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to +// drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. +// SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server. +type SelfSubjectRulesReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. + Spec SelfSubjectRulesReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates the set of actions a user can perform. + // +optional + Status SubjectRulesReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +type SelfSubjectRulesReviewSpec struct { + // Namespace to evaluate rules for. Required. + Namespace string `json:"namespace,omitempty" protobuf:"bytes,1,opt,name=namespace"` +} + +// SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on +// the set of authorizers the server is configured with and any errors experienced during evaluation. +// Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, +// even if that list is incomplete. +type SubjectRulesReviewStatus struct { + // ResourceRules is the list of actions the subject is allowed to perform on resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + ResourceRules []ResourceRule `json:"resourceRules" protobuf:"bytes,1,rep,name=resourceRules"` + // NonResourceRules is the list of actions the subject is allowed to perform on non-resources. + // The list ordering isn't significant, may contain duplicates, and possibly be incomplete. + NonResourceRules []NonResourceRule `json:"nonResourceRules" protobuf:"bytes,2,rep,name=nonResourceRules"` + // Incomplete is true when the rules returned by this call are incomplete. This is most commonly + // encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation. + Incomplete bool `json:"incomplete" protobuf:"bytes,3,rep,name=incomplete"` + // EvaluationError can appear in combination with Rules. It indicates an error occurred during + // rule evaluation, such as an authorizer that doesn't support rule evaluation, and that + // ResourceRules and/or NonResourceRules may be incomplete. + // +optional + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,4,opt,name=evaluationError"` +} + +// ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, +// may contain duplicates, and possibly be incomplete. +type ResourceRule struct { + // Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. "*" means all. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + + // 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. "*" means all. + // +optional + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. "*" means all. + // +optional + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. "*" means all. + // +optional + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"` +} + +// NonResourceRule holds information that describes a rule for the non-resource +type NonResourceRule struct { + // Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. "*" means all. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + + // 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. "*" means all. + // +optional + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,2,rep,name=nonResourceURLs"` +} diff --git a/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..1d8bb9849b --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/types_swagger_doc_generated.go @@ -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. +*/ + +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_NonResourceRule = map[string]string{ + "": "NonResourceRule holds information that describes a rule for the non-resource", + "verbs": "Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all.", + "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. \"*\" means all.", +} + +func (NonResourceRule) SwaggerDoc() map[string]string { + return map_NonResourceRule +} + +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_ResourceRule = map[string]string{ + "": "ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", + "verbs": "Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", + "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. \"*\" means all.", + "resources": "Resources is a list of resources this rule applies to. ResourceAll represents all resources. \"*\" means all.", + "resourceNames": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. \"*\" means all.", +} + +func (ResourceRule) SwaggerDoc() map[string]string { + return map_ResourceRule +} + +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_SelfSubjectRulesReview = map[string]string{ + "": "SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server.", + "spec": "Spec holds information about the request being evaluated.", + "status": "Status is filled in by the server and indicates the set of actions a user can perform.", +} + +func (SelfSubjectRulesReview) SwaggerDoc() map[string]string { + return map_SelfSubjectRulesReview +} + +var map_SelfSubjectRulesReviewSpec = map[string]string{ + "namespace": "Namespace to evaluate rules for. Required.", +} + +func (SelfSubjectRulesReviewSpec) SwaggerDoc() map[string]string { + return map_SelfSubjectRulesReviewSpec +} + +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.", + "uid": "UID information about the requesting user.", +} + +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 +} + +var map_SubjectRulesReviewStatus = map[string]string{ + "": "SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete.", + "resourceRules": "ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", + "nonResourceRules": "NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.", + "incomplete": "Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.", + "evaluationError": "EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.", +} + +func (SubjectRulesReviewStatus) SwaggerDoc() map[string]string { + return map_SubjectRulesReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..aeb77ddbc8 --- /dev/null +++ b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,445 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LocalSubjectAccessReview).DeepCopyInto(out.(*LocalSubjectAccessReview)) + return nil + }, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NonResourceAttributes).DeepCopyInto(out.(*NonResourceAttributes)) + return nil + }, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NonResourceRule).DeepCopyInto(out.(*NonResourceRule)) + return nil + }, InType: reflect.TypeOf(&NonResourceRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceAttributes).DeepCopyInto(out.(*ResourceAttributes)) + return nil + }, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceRule).DeepCopyInto(out.(*ResourceRule)) + return nil + }, InType: reflect.TypeOf(&ResourceRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectAccessReview).DeepCopyInto(out.(*SelfSubjectAccessReview)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectAccessReviewSpec).DeepCopyInto(out.(*SelfSubjectAccessReviewSpec)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectRulesReview).DeepCopyInto(out.(*SelfSubjectRulesReview)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectRulesReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SelfSubjectRulesReviewSpec).DeepCopyInto(out.(*SelfSubjectRulesReviewSpec)) + return nil + }, InType: reflect.TypeOf(&SelfSubjectRulesReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectAccessReview).DeepCopyInto(out.(*SubjectAccessReview)) + return nil + }, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectAccessReviewSpec).DeepCopyInto(out.(*SubjectAccessReviewSpec)) + return nil + }, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectAccessReviewStatus).DeepCopyInto(out.(*SubjectAccessReviewStatus)) + return nil + }, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SubjectRulesReviewStatus).DeepCopyInto(out.(*SubjectRulesReviewStatus)) + return nil + }, InType: reflect.TypeOf(&SubjectRulesReviewStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalSubjectAccessReview) DeepCopyInto(out *LocalSubjectAccessReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalSubjectAccessReview. +func (in *LocalSubjectAccessReview) DeepCopy() *LocalSubjectAccessReview { + if in == nil { + return nil + } + out := new(LocalSubjectAccessReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LocalSubjectAccessReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NonResourceAttributes) DeepCopyInto(out *NonResourceAttributes) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NonResourceAttributes. +func (in *NonResourceAttributes) DeepCopy() *NonResourceAttributes { + if in == nil { + return nil + } + out := new(NonResourceAttributes) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NonResourceRule) DeepCopyInto(out *NonResourceRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NonResourceRule. +func (in *NonResourceRule) DeepCopy() *NonResourceRule { + if in == nil { + return nil + } + out := new(NonResourceRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceAttributes) DeepCopyInto(out *ResourceAttributes) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceAttributes. +func (in *ResourceAttributes) DeepCopy() *ResourceAttributes { + if in == nil { + return nil + } + out := new(ResourceAttributes) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceRule) DeepCopyInto(out *ResourceRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRule. +func (in *ResourceRule) DeepCopy() *ResourceRule { + if in == nil { + return nil + } + out := new(ResourceRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectAccessReview) DeepCopyInto(out *SelfSubjectAccessReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectAccessReview. +func (in *SelfSubjectAccessReview) DeepCopy() *SelfSubjectAccessReview { + if in == nil { + return nil + } + out := new(SelfSubjectAccessReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SelfSubjectAccessReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReviewSpec) { + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectAccessReviewSpec. +func (in *SelfSubjectAccessReviewSpec) DeepCopy() *SelfSubjectAccessReviewSpec { + if in == nil { + return nil + } + out := new(SelfSubjectAccessReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectRulesReview) DeepCopyInto(out *SelfSubjectRulesReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectRulesReview. +func (in *SelfSubjectRulesReview) DeepCopy() *SelfSubjectRulesReview { + if in == nil { + return nil + } + out := new(SelfSubjectRulesReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SelfSubjectRulesReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SelfSubjectRulesReviewSpec) DeepCopyInto(out *SelfSubjectRulesReviewSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelfSubjectRulesReviewSpec. +func (in *SelfSubjectRulesReviewSpec) DeepCopy() *SelfSubjectRulesReviewSpec { + if in == nil { + return nil + } + out := new(SelfSubjectRulesReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectAccessReview) DeepCopyInto(out *SubjectAccessReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectAccessReview. +func (in *SubjectAccessReview) DeepCopy() *SubjectAccessReview { + if in == nil { + return nil + } + out := new(SubjectAccessReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SubjectAccessReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + (*out)[key] = make(ExtraValue, len(val)) + copy((*out)[key], val) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectAccessReviewSpec. +func (in *SubjectAccessReviewSpec) DeepCopy() *SubjectAccessReviewSpec { + if in == nil { + return nil + } + out := new(SubjectAccessReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectAccessReviewStatus) DeepCopyInto(out *SubjectAccessReviewStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectAccessReviewStatus. +func (in *SubjectAccessReviewStatus) DeepCopy() *SubjectAccessReviewStatus { + if in == nil { + return nil + } + out := new(SubjectAccessReviewStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SubjectRulesReviewStatus) DeepCopyInto(out *SubjectRulesReviewStatus) { + *out = *in + if in.ResourceRules != nil { + in, out := &in.ResourceRules, &out.ResourceRules + *out = make([]ResourceRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NonResourceRules != nil { + in, out := &in.NonResourceRules, &out.NonResourceRules + *out = make([]NonResourceRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubjectRulesReviewStatus. +func (in *SubjectRulesReviewStatus) DeepCopy() *SubjectRulesReviewStatus { + if in == nil { + return nil + } + out := new(SubjectRulesReviewStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/OWNERS b/vendor/k8s.io/api/autoscaling/OWNERS similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/autoscaling/OWNERS rename to vendor/k8s.io/api/autoscaling/OWNERS diff --git a/vendor/k8s.io/api/autoscaling/v1/BUILD b/vendor/k8s.io/api/autoscaling/v1/BUILD new file mode 100644 index 0000000000..3eb3cb296c --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v1/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/autoscaling/v1/doc.go b/vendor/k8s.io/api/autoscaling/v1/doc.go new file mode 100644 index 0000000000..1689adb5cb --- /dev/null +++ b/vendor/k8s.io/api/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. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package v1 // import "k8s.io/api/autoscaling/v1" diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go new file mode 100644 index 0000000000..db580cdabb --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go @@ -0,0 +1,3786 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/autoscaling/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1/generated.proto + + It has these top-level messages: + CrossVersionObjectReference + HorizontalPodAutoscaler + HorizontalPodAutoscalerCondition + HorizontalPodAutoscalerList + HorizontalPodAutoscalerSpec + HorizontalPodAutoscalerStatus + MetricSpec + MetricStatus + ObjectMetricSource + ObjectMetricStatus + PodsMetricSource + PodsMetricStatus + ResourceMetricSource + ResourceMetricStatus + Scale + ScaleSpec + ScaleStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_api_resource "k8s.io/apimachinery/pkg/api/resource" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_api_core_v1 "k8s.io/api/core/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 *HorizontalPodAutoscalerCondition) Reset() { *m = HorizontalPodAutoscalerCondition{} } +func (*HorizontalPodAutoscalerCondition) ProtoMessage() {} +func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *HorizontalPodAutoscalerList) Reset() { *m = HorizontalPodAutoscalerList{} } +func (*HorizontalPodAutoscalerList) ProtoMessage() {} +func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *HorizontalPodAutoscalerSpec) Reset() { *m = HorizontalPodAutoscalerSpec{} } +func (*HorizontalPodAutoscalerSpec) ProtoMessage() {} +func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func (m *HorizontalPodAutoscalerStatus) Reset() { *m = HorizontalPodAutoscalerStatus{} } +func (*HorizontalPodAutoscalerStatus) ProtoMessage() {} +func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *MetricSpec) Reset() { *m = MetricSpec{} } +func (*MetricSpec) ProtoMessage() {} +func (*MetricSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *MetricStatus) Reset() { *m = MetricStatus{} } +func (*MetricStatus) ProtoMessage() {} +func (*MetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *ObjectMetricSource) Reset() { *m = ObjectMetricSource{} } +func (*ObjectMetricSource) ProtoMessage() {} +func (*ObjectMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *ObjectMetricStatus) Reset() { *m = ObjectMetricStatus{} } +func (*ObjectMetricStatus) ProtoMessage() {} +func (*ObjectMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *PodsMetricSource) Reset() { *m = PodsMetricSource{} } +func (*PodsMetricSource) ProtoMessage() {} +func (*PodsMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *PodsMetricStatus) Reset() { *m = PodsMetricStatus{} } +func (*PodsMetricStatus) ProtoMessage() {} +func (*PodsMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ResourceMetricSource) Reset() { *m = ResourceMetricSource{} } +func (*ResourceMetricSource) ProtoMessage() {} +func (*ResourceMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ResourceMetricStatus) Reset() { *m = ResourceMetricStatus{} } +func (*ResourceMetricStatus) ProtoMessage() {} +func (*ResourceMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func init() { + proto.RegisterType((*CrossVersionObjectReference)(nil), "k8s.io.api.autoscaling.v1.CrossVersionObjectReference") + proto.RegisterType((*HorizontalPodAutoscaler)(nil), "k8s.io.api.autoscaling.v1.HorizontalPodAutoscaler") + proto.RegisterType((*HorizontalPodAutoscalerCondition)(nil), "k8s.io.api.autoscaling.v1.HorizontalPodAutoscalerCondition") + proto.RegisterType((*HorizontalPodAutoscalerList)(nil), "k8s.io.api.autoscaling.v1.HorizontalPodAutoscalerList") + proto.RegisterType((*HorizontalPodAutoscalerSpec)(nil), "k8s.io.api.autoscaling.v1.HorizontalPodAutoscalerSpec") + proto.RegisterType((*HorizontalPodAutoscalerStatus)(nil), "k8s.io.api.autoscaling.v1.HorizontalPodAutoscalerStatus") + proto.RegisterType((*MetricSpec)(nil), "k8s.io.api.autoscaling.v1.MetricSpec") + proto.RegisterType((*MetricStatus)(nil), "k8s.io.api.autoscaling.v1.MetricStatus") + proto.RegisterType((*ObjectMetricSource)(nil), "k8s.io.api.autoscaling.v1.ObjectMetricSource") + proto.RegisterType((*ObjectMetricStatus)(nil), "k8s.io.api.autoscaling.v1.ObjectMetricStatus") + proto.RegisterType((*PodsMetricSource)(nil), "k8s.io.api.autoscaling.v1.PodsMetricSource") + proto.RegisterType((*PodsMetricStatus)(nil), "k8s.io.api.autoscaling.v1.PodsMetricStatus") + proto.RegisterType((*ResourceMetricSource)(nil), "k8s.io.api.autoscaling.v1.ResourceMetricSource") + proto.RegisterType((*ResourceMetricStatus)(nil), "k8s.io.api.autoscaling.v1.ResourceMetricStatus") + proto.RegisterType((*Scale)(nil), "k8s.io.api.autoscaling.v1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.api.autoscaling.v1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.api.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 *HorizontalPodAutoscalerCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerCondition) 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.LastTransitionTime.Size())) + n4, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + 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.Message))) + i += copy(dAtA[i:], m.Message) + 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())) + 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 *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())) + n6, err := m.ScaleTargetRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + 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())) + n7, err := m.LastScaleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + 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 *MetricSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricSpec) 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.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n8, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n9, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n10, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + return i, nil +} + +func (m *MetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricStatus) 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.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n11, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n12, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n13, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + return i, nil +} + +func (m *ObjectMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n14, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetValue.Size())) + n15, err := m.TargetValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + return i, nil +} + +func (m *ObjectMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n16, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size())) + n17, err := m.CurrentValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + return i, nil +} + +func (m *PodsMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n18, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + return i, nil +} + +func (m *PodsMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n19, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + return i, nil +} + +func (m *ResourceMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricSource) 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 m.TargetAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n20, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *ResourceMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricStatus) 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 m.CurrentAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CurrentAverageUtilization)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n21, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + 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())) + n22, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n23, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n24, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + 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 *HorizontalPodAutoscalerCondition) 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.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 *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 *MetricSpec) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *MetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ObjectMetricSource) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectMetricStatus) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.TargetAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ResourceMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.CurrentAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.CurrentAverageUtilization)) + } + l = m.CurrentAverageValue.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)) + 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_apimachinery_pkg_apis_meta_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 *HorizontalPodAutoscalerCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `DesiredReplicas:` + fmt.Sprintf("%v", this.DesiredReplicas) + `,`, + `CurrentCPUUtilizationPercentage:` + valueToStringGenerated(this.CurrentCPUUtilizationPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *MetricSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricSpec{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricSource", "ObjectMetricSource", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricSource", "PodsMetricSource", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricSource", "ResourceMetricSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *MetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricStatus{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricStatus", "ObjectMetricStatus", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricStatus", "PodsMetricStatus", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricStatus", "ResourceMetricStatus", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricSource{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricStatus{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricSource{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricStatus{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricSource{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `TargetAverageUtilization:` + valueToStringGenerated(this.TargetAverageUtilization) + `,`, + `TargetAverageValue:` + strings.Replace(fmt.Sprintf("%v", this.TargetAverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `CurrentAverageUtilization:` + valueToStringGenerated(this.CurrentAverageUtilization) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 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_apimachinery_pkg_apis_meta_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 *HorizontalPodAutoscalerCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: 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 = HorizontalPodAutoscalerConditionType(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_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 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 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 *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_apimachinery_pkg_apis_meta_v1.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 *MetricSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricSpec: 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 = MetricSourceType(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 m.Object == nil { + m.Object = &ObjectMetricSource{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Pods == nil { + m.Pods = &PodsMetricSource{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Resource == nil { + m.Resource = &ResourceMetricSource{} + } + if err := m.Resource.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 *MetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricStatus: 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 = MetricSourceType(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 m.Object == nil { + m.Object = &ObjectMetricStatus{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Pods == nil { + m.Pods = &PodsMetricStatus{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Resource == nil { + m.Resource = &ResourceMetricStatus{} + } + if err := m.Resource.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 *ObjectMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 *ObjectMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 *PodsMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.TargetAverageValue.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 *PodsMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.CurrentAverageValue.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 *ResourceMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricSource: 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 = k8s_io_api_core_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageUtilization", 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.TargetAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.TargetAverageValue == nil { + m.TargetAverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{} + } + if err := m.TargetAverageValue.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 *ResourceMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricStatus: 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 = k8s_io_api_core_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageUtilization", 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.CurrentAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.CurrentAverageValue.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 stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1370 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x13, 0xc7, + 0x1b, 0x8f, 0x5f, 0x12, 0xc2, 0x38, 0x10, 0xfe, 0x03, 0x02, 0x13, 0xfe, 0x78, 0xa3, 0x2d, 0x42, + 0xf4, 0x85, 0xdd, 0xc6, 0xa5, 0x88, 0x1e, 0x63, 0x57, 0x14, 0xd4, 0x04, 0xc2, 0x60, 0x28, 0x7d, + 0x51, 0xc5, 0x64, 0x77, 0x70, 0x86, 0x78, 0x5f, 0x34, 0x33, 0xb6, 0x1a, 0xa4, 0x4a, 0xed, 0xa1, + 0xe7, 0x56, 0x95, 0xfa, 0x31, 0x7a, 0xe6, 0x50, 0xf5, 0xd0, 0x4a, 0x95, 0x38, 0x72, 0xe8, 0x81, + 0x93, 0x55, 0xb6, 0xc7, 0x7e, 0x03, 0x4e, 0xd5, 0xcc, 0x8e, 0xd7, 0xbb, 0xb6, 0xd7, 0x21, 0x21, + 0x42, 0xbd, 0xed, 0xce, 0xfc, 0x9e, 0xdf, 0xf3, 0x3a, 0xcf, 0x3c, 0x03, 0x1a, 0xdb, 0x57, 0xb8, + 0x45, 0x03, 0x7b, 0xbb, 0xbb, 0x49, 0x98, 0x4f, 0x04, 0xe1, 0x76, 0x8f, 0xf8, 0x6e, 0xc0, 0x6c, + 0xbd, 0x81, 0x43, 0x6a, 0xe3, 0xae, 0x08, 0xb8, 0x83, 0x3b, 0xd4, 0x6f, 0xdb, 0xbd, 0x15, 0xbb, + 0x4d, 0x7c, 0xc2, 0xb0, 0x20, 0xae, 0x15, 0xb2, 0x40, 0x04, 0xf0, 0x74, 0x0c, 0xb5, 0x70, 0x48, + 0xad, 0x14, 0xd4, 0xea, 0xad, 0x2c, 0x5d, 0x6c, 0x53, 0xb1, 0xd5, 0xdd, 0xb4, 0x9c, 0xc0, 0xb3, + 0xdb, 0x41, 0x3b, 0xb0, 0x95, 0xc4, 0x66, 0xf7, 0x81, 0xfa, 0x53, 0x3f, 0xea, 0x2b, 0x66, 0x5a, + 0x32, 0x53, 0x4a, 0x9d, 0x80, 0x91, 0x09, 0xda, 0x96, 0x2e, 0x0d, 0x31, 0x1e, 0x76, 0xb6, 0xa8, + 0x4f, 0xd8, 0x8e, 0x1d, 0x6e, 0xb7, 0x95, 0x10, 0x23, 0x3c, 0xe8, 0x32, 0x87, 0xec, 0x49, 0x8a, + 0xdb, 0x1e, 0x11, 0x78, 0x92, 0x2e, 0x3b, 0x4f, 0x8a, 0x75, 0x7d, 0x41, 0xbd, 0x71, 0x35, 0x97, + 0x77, 0x13, 0xe0, 0xce, 0x16, 0xf1, 0xf0, 0x98, 0xdc, 0x7b, 0x79, 0x72, 0x5d, 0x41, 0x3b, 0x36, + 0xf5, 0x05, 0x17, 0x6c, 0x54, 0xc8, 0xfc, 0xa9, 0x00, 0xce, 0x34, 0x59, 0xc0, 0xf9, 0x5d, 0xc2, + 0x38, 0x0d, 0xfc, 0x9b, 0x9b, 0x0f, 0x89, 0x23, 0x10, 0x79, 0x40, 0x18, 0xf1, 0x1d, 0x02, 0x97, + 0x41, 0x79, 0x9b, 0xfa, 0x6e, 0xb5, 0xb0, 0x5c, 0xb8, 0x70, 0xb8, 0xb1, 0xf0, 0xa4, 0x6f, 0xcc, + 0x44, 0x7d, 0xa3, 0xfc, 0x31, 0xf5, 0x5d, 0xa4, 0x76, 0x24, 0xc2, 0xc7, 0x1e, 0xa9, 0x16, 0xb3, + 0x88, 0x1b, 0xd8, 0x23, 0x48, 0xed, 0xc0, 0x3a, 0x00, 0x38, 0xa4, 0x5a, 0x41, 0xb5, 0xa4, 0x70, + 0x50, 0xe3, 0xc0, 0xea, 0xc6, 0x75, 0xbd, 0x83, 0x52, 0x28, 0xf3, 0x71, 0x11, 0x9c, 0xba, 0x16, + 0x30, 0xfa, 0x28, 0xf0, 0x05, 0xee, 0x6c, 0x04, 0xee, 0xaa, 0x2e, 0x0a, 0xc2, 0xe0, 0x7d, 0x30, + 0x2f, 0x83, 0xed, 0x62, 0x81, 0x95, 0x5d, 0x95, 0xfa, 0xbb, 0xd6, 0xb0, 0x7c, 0x12, 0xdf, 0xad, + 0x70, 0xbb, 0x2d, 0x17, 0xb8, 0x25, 0xd1, 0x56, 0x6f, 0xc5, 0x8a, 0x9d, 0x5b, 0x27, 0x02, 0x0f, + 0xf5, 0x0f, 0xd7, 0x50, 0xc2, 0x0a, 0xef, 0x81, 0x32, 0x0f, 0x89, 0xa3, 0x7c, 0xaa, 0xd4, 0x2f, + 0x5b, 0xb9, 0xc5, 0x69, 0xe5, 0xd8, 0x78, 0x3b, 0x24, 0xce, 0x30, 0x16, 0xf2, 0x0f, 0x29, 0x46, + 0x78, 0x1f, 0xcc, 0x71, 0x81, 0x45, 0x97, 0xab, 0x38, 0x54, 0xea, 0x57, 0xf6, 0xc1, 0xad, 0xe4, + 0x1b, 0x47, 0x35, 0xfb, 0x5c, 0xfc, 0x8f, 0x34, 0xaf, 0xf9, 0x5d, 0x09, 0x2c, 0xe7, 0x48, 0x36, + 0x03, 0xdf, 0xa5, 0x82, 0x06, 0x3e, 0xbc, 0x06, 0xca, 0x62, 0x27, 0x24, 0x3a, 0xad, 0x97, 0x06, + 0x86, 0xb6, 0x76, 0x42, 0xf2, 0xa2, 0x6f, 0x9c, 0xdb, 0x4d, 0x5e, 0xe2, 0x90, 0x62, 0x80, 0x6b, + 0x89, 0x43, 0xc5, 0x0c, 0x97, 0x36, 0xeb, 0x45, 0xdf, 0x98, 0x70, 0x20, 0xad, 0x84, 0x29, 0x6b, + 0x3c, 0xec, 0x01, 0xd8, 0xc1, 0x5c, 0xb4, 0x18, 0xf6, 0x79, 0xac, 0x89, 0x7a, 0x44, 0x87, 0xea, + 0xad, 0x97, 0x4b, 0xb2, 0x94, 0x68, 0x2c, 0x69, 0x2b, 0xe0, 0xda, 0x18, 0x1b, 0x9a, 0xa0, 0x01, + 0x9e, 0x07, 0x73, 0x8c, 0x60, 0x1e, 0xf8, 0xd5, 0xb2, 0xf2, 0x22, 0x09, 0x2e, 0x52, 0xab, 0x48, + 0xef, 0xc2, 0x37, 0xc1, 0x21, 0x8f, 0x70, 0x8e, 0xdb, 0xa4, 0x3a, 0xab, 0x80, 0x8b, 0x1a, 0x78, + 0x68, 0x3d, 0x5e, 0x46, 0x83, 0x7d, 0xf3, 0xcf, 0x02, 0x38, 0x93, 0x13, 0xc7, 0x35, 0xca, 0x05, + 0xfc, 0x62, 0xac, 0x8a, 0xad, 0x97, 0x73, 0x50, 0x4a, 0xab, 0x1a, 0x3e, 0xa6, 0x75, 0xcf, 0x0f, + 0x56, 0x52, 0x15, 0xfc, 0x09, 0x98, 0xa5, 0x82, 0x78, 0x32, 0x2b, 0xa5, 0x0b, 0x95, 0x7a, 0x7d, + 0xef, 0x65, 0xd6, 0x38, 0xa2, 0xe9, 0x67, 0xaf, 0x4b, 0x22, 0x14, 0xf3, 0x99, 0xff, 0x14, 0x73, + 0xdd, 0x92, 0x65, 0x0e, 0x7b, 0xe0, 0xa8, 0xfa, 0x6b, 0x61, 0xd6, 0x26, 0xb2, 0x91, 0x68, 0xe7, + 0xa6, 0x1d, 0xa2, 0x29, 0x0d, 0xa8, 0x71, 0x52, 0x5b, 0x71, 0xf4, 0x76, 0x86, 0x15, 0x8d, 0x68, + 0x81, 0x2b, 0xa0, 0xe2, 0x51, 0x1f, 0x91, 0xb0, 0x43, 0x1d, 0x1c, 0x17, 0xe3, 0x6c, 0x63, 0x31, + 0xea, 0x1b, 0x95, 0xf5, 0xe1, 0x32, 0x4a, 0x63, 0xe0, 0xfb, 0xa0, 0xe2, 0xe1, 0xaf, 0x12, 0x91, + 0x92, 0x12, 0x39, 0xae, 0xf5, 0x55, 0xd6, 0x87, 0x5b, 0x28, 0x8d, 0x83, 0x0f, 0x41, 0x4d, 0x28, + 0xb5, 0xcd, 0x8d, 0x3b, 0x77, 0x04, 0xed, 0xd0, 0x47, 0x58, 0xd6, 0xd1, 0x06, 0x61, 0x0e, 0xf1, + 0x85, 0x2c, 0x8d, 0xb2, 0x62, 0x32, 0xa3, 0xbe, 0x51, 0x6b, 0x4d, 0x45, 0xa2, 0x5d, 0x98, 0xcc, + 0xdf, 0x4a, 0xe0, 0xec, 0xd4, 0x36, 0x00, 0xaf, 0x02, 0x18, 0x6c, 0x72, 0xc2, 0x7a, 0xc4, 0xfd, + 0x28, 0xee, 0xed, 0xb2, 0xc9, 0xca, 0x98, 0x97, 0x1a, 0x27, 0xe5, 0x09, 0xb8, 0x39, 0xb6, 0x8b, + 0x26, 0x48, 0x40, 0x07, 0x1c, 0x91, 0xe7, 0x22, 0x8e, 0x32, 0xd5, 0xfd, 0x7c, 0x6f, 0x87, 0xee, + 0x7f, 0x51, 0xdf, 0x38, 0xb2, 0x96, 0x26, 0x41, 0x59, 0x4e, 0xb8, 0x0a, 0x16, 0x9d, 0x2e, 0x63, + 0xc4, 0x17, 0x23, 0x51, 0x3f, 0xa5, 0xa3, 0xbe, 0xd8, 0xcc, 0x6e, 0xa3, 0x51, 0xbc, 0xa4, 0x70, + 0x09, 0xa7, 0x8c, 0xb8, 0x09, 0x45, 0x39, 0x4b, 0xf1, 0x61, 0x76, 0x1b, 0x8d, 0xe2, 0xa1, 0x07, + 0x0c, 0xcd, 0x9a, 0x9b, 0xc1, 0x59, 0x45, 0xf9, 0x46, 0xd4, 0x37, 0x8c, 0xe6, 0x74, 0x28, 0xda, + 0x8d, 0xcb, 0xfc, 0xa5, 0x08, 0xc0, 0x3a, 0x11, 0x8c, 0x3a, 0xea, 0x80, 0x5c, 0xca, 0xb4, 0xde, + 0xe5, 0x91, 0xd6, 0x7b, 0x4c, 0x23, 0xd5, 0x04, 0x92, 0x6a, 0xb3, 0xb7, 0xc0, 0x5c, 0xa0, 0x4e, + 0x86, 0xce, 0xcb, 0xc5, 0x29, 0xc7, 0x29, 0xb9, 0xd2, 0x12, 0xa2, 0x06, 0x90, 0xbd, 0x4c, 0x1f, + 0x2d, 0x4d, 0x04, 0xaf, 0x83, 0x72, 0x18, 0xb8, 0x83, 0x8b, 0xe8, 0xed, 0x29, 0x84, 0x1b, 0x81, + 0xcb, 0x33, 0x74, 0xf3, 0xd2, 0x62, 0xb9, 0x8a, 0x14, 0x05, 0xfc, 0x14, 0xcc, 0x0f, 0xa6, 0x26, + 0x95, 0x8d, 0x4a, 0xdd, 0x9e, 0x42, 0x87, 0x34, 0x34, 0x43, 0xb9, 0x20, 0x1b, 0xd9, 0x60, 0x07, + 0x25, 0x74, 0xe6, 0xaf, 0x45, 0xb0, 0xa0, 0x81, 0x71, 0xc1, 0xbf, 0xe6, 0xf8, 0xc5, 0x97, 0xed, + 0x81, 0xc5, 0x2f, 0xa6, 0x3b, 0xd0, 0xf8, 0xc5, 0x94, 0x79, 0xf1, 0xfb, 0xbe, 0x08, 0xe0, 0x78, + 0x41, 0xc0, 0x2f, 0xc1, 0x5c, 0xdc, 0x7a, 0x5e, 0xb1, 0x3d, 0x27, 0x17, 0xa5, 0xee, 0xc4, 0x9a, + 0x55, 0xce, 0x7c, 0x9e, 0xd2, 0x77, 0x63, 0x38, 0x1b, 0x26, 0x33, 0xd7, 0x7a, 0xb2, 0x83, 0x52, + 0x28, 0x48, 0x40, 0x25, 0x96, 0xbe, 0x8b, 0x3b, 0xdd, 0xc1, 0xad, 0x3f, 0xf5, 0x52, 0xb4, 0x06, + 0x6e, 0x5a, 0xb7, 0xba, 0xd8, 0x17, 0x54, 0xec, 0x0c, 0xfb, 0x77, 0x6b, 0x48, 0x85, 0xd2, 0xbc, + 0xe6, 0x8f, 0xa3, 0x11, 0x89, 0xeb, 0xea, 0xbf, 0x18, 0x91, 0x2d, 0xb0, 0xa0, 0xbb, 0xcb, 0xab, + 0x84, 0xe4, 0x84, 0xd6, 0xb2, 0xd0, 0x4c, 0x71, 0xa1, 0x0c, 0xb3, 0xf9, 0x7b, 0x01, 0x1c, 0x1b, + 0x3d, 0xe6, 0x23, 0x26, 0x17, 0x5e, 0xca, 0xe4, 0x47, 0x00, 0xc6, 0x0e, 0xaf, 0xf6, 0x08, 0xc3, + 0x6d, 0x12, 0x1b, 0x5e, 0xdc, 0x97, 0xe1, 0xc9, 0x14, 0xd7, 0x1a, 0x63, 0x44, 0x13, 0xb4, 0x98, + 0x7f, 0x64, 0x9d, 0x88, 0xf3, 0xba, 0x1f, 0x27, 0xbe, 0x06, 0xc7, 0x75, 0x74, 0x0e, 0xc0, 0x8b, + 0x33, 0x5a, 0xd9, 0xf1, 0xe6, 0x38, 0x25, 0x9a, 0xa4, 0xc7, 0xfc, 0xb9, 0x08, 0x4e, 0x4c, 0x6a, + 0x92, 0xb0, 0xa9, 0xdf, 0x5a, 0xb1, 0x17, 0x76, 0xfa, 0xad, 0xf5, 0xa2, 0x6f, 0x18, 0x13, 0x06, + 0xed, 0x01, 0x4d, 0xea, 0x39, 0x76, 0x0f, 0x54, 0x33, 0xb1, 0x4b, 0xdd, 0x5a, 0x7a, 0x6c, 0xfa, + 0x7f, 0xd4, 0x37, 0xaa, 0xad, 0x1c, 0x0c, 0xca, 0x95, 0x96, 0xd3, 0xfb, 0x84, 0xdc, 0xef, 0xaf, + 0x68, 0x4f, 0xee, 0x21, 0xef, 0x8f, 0xc7, 0xe3, 0x15, 0xe7, 0xfe, 0x40, 0xe2, 0xf5, 0x39, 0x38, + 0x9d, 0x4d, 0xd2, 0x78, 0xc0, 0xce, 0x46, 0x7d, 0xe3, 0x74, 0x33, 0x0f, 0x84, 0xf2, 0xe5, 0xf3, + 0x2a, 0xad, 0xf4, 0x9a, 0x2a, 0xed, 0xdb, 0x22, 0x98, 0x55, 0xe3, 0xd9, 0x6b, 0x78, 0x54, 0x5f, + 0xcd, 0x3c, 0xaa, 0xcf, 0x4d, 0x69, 0xaf, 0xca, 0xa2, 0xdc, 0x27, 0xf4, 0x8d, 0x91, 0x27, 0xf4, + 0xf9, 0x5d, 0x99, 0xa6, 0x3f, 0x98, 0x3f, 0x00, 0x87, 0x13, 0x85, 0xf0, 0x1d, 0x79, 0x13, 0xeb, + 0xb9, 0xb2, 0xa0, 0x72, 0x9b, 0xbc, 0xb2, 0x92, 0x81, 0x32, 0x41, 0x98, 0x14, 0x54, 0x52, 0x1a, + 0xf6, 0x26, 0x2c, 0xd1, 0x9c, 0x74, 0x88, 0x23, 0x02, 0xa6, 0xaf, 0x83, 0x04, 0x7d, 0x5b, 0xaf, + 0xa3, 0x04, 0xd1, 0xb8, 0xf0, 0xe4, 0x79, 0x6d, 0xe6, 0xe9, 0xf3, 0xda, 0xcc, 0xb3, 0xe7, 0xb5, + 0x99, 0x6f, 0xa2, 0x5a, 0xe1, 0x49, 0x54, 0x2b, 0x3c, 0x8d, 0x6a, 0x85, 0x67, 0x51, 0xad, 0xf0, + 0x57, 0x54, 0x2b, 0xfc, 0xf0, 0x77, 0x6d, 0xe6, 0xb3, 0x62, 0x6f, 0xe5, 0xdf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x45, 0xeb, 0xd1, 0x70, 0x8f, 0x13, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.proto b/vendor/k8s.io/api/autoscaling/v1/generated.proto new file mode 100644 index 0000000000..e41e62746b --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v1/generated.proto @@ -0,0 +1,321 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.autoscaling.v1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + optional string kind = 1; + + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + optional string name = 2; + + // API version of the referent + // +optional + optional string apiVersion = 3; +} + +// configuration of a horizontal pod autoscaler. +message HorizontalPodAutoscaler { + // Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional HorizontalPodAutoscalerSpec spec = 2; + + // current information about the autoscaler. + // +optional + optional HorizontalPodAutoscalerStatus status = 3; +} + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +message HorizontalPodAutoscalerCondition { + // type describes the current condition + optional string type = 1; + + // status is the status of the condition (True, False, Unknown) + optional string status = 2; + + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // reason is the reason for the condition's last transition. + // +optional + optional string reason = 4; + + // message is a human-readable explanation containing details about + // the transition + // +optional + optional string message = 5; +} + +// list of horizontal pod autoscaler objects. +message HorizontalPodAutoscalerList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + 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 + optional int32 targetCPUUtilizationPercentage = 4; +} + +// current status of a horizontal pod autoscaler +message HorizontalPodAutoscalerStatus { + // most recent generation observed by this autoscaler. + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional int32 currentCPUUtilizationPercentage = 5; +} + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +message MetricSpec { + // type is the type of metric source. It should match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricSource object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricSource pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricSource resource = 4; +} + +// MetricStatus describes the last-read state of a single metric. +message MetricStatus { + // type is the type of metric source. It will match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricStatus object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricStatus pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricStatus resource = 4; +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricSource { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // targetValue is the target value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3; +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricStatus { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // currentValue is the current value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3; +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +message PodsMetricSource { + // metricName is the name of the metric in question + optional string metricName = 1; + + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2; +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +message PodsMetricStatus { + // metricName is the name of the metric in question + optional string metricName = 1; + + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2; +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +message ResourceMetricSource { + // name is the name of the resource in question. + optional string name = 1; + + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + optional int32 targetAverageUtilization = 2; + + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3; +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +message ResourceMetricStatus { + // name is the name of the resource in question. + optional string name = 1; + + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + optional int32 currentAverageUtilization = 2; + + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3; +} + +// Scale represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// ScaleSpec describes the attributes of a scale subresource. +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + 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://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + optional string selector = 2; +} + diff --git a/vendor/k8s.io/api/autoscaling/v1/register.go b/vendor/k8s.io/api/autoscaling/v1/register.go new file mode 100644 index 0000000000..521c0e4a3d --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v1/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + &Scale{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/autoscaling/v1/types.go b/vendor/k8s.io/api/autoscaling/v1/types.go new file mode 100644 index 0000000000..a18c3730c7 --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v1/types.go @@ -0,0 +1,337 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + LastScaleTime *metav1.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. + // +optional + CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty" protobuf:"varint,5,opt,name=currentCPUUtilizationPercentage"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// configuration of a horizontal pod autoscaler. +type HorizontalPodAutoscaler struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current information about the autoscaler. + // +optional + Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Scale represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + 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. + // +optional + 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://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + Selector string `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` +} + +// the types below are used in the alpha metrics annotation + +// MetricSourceType indicates the type of metric. +type MetricSourceType string + +var ( + // ObjectMetricSourceType is a metric describing a kubernetes object + // (for example, hits-per-second on an Ingress object). + ObjectMetricSourceType MetricSourceType = "Object" + // PodsMetricSourceType is a metric describing each pod in the current scale + // target (for example, transactions-processed-per-second). The values + // will be averaged together before being compared to the target value. + PodsMetricSourceType MetricSourceType = "Pods" + // ResourceMetricSourceType is a resource metric known to Kubernetes, as + // specified in requests and limits, describing each pod in the current + // scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics (the "pods" source). + ResourceMetricSourceType MetricSourceType = "Resource" +) + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +type MetricSpec struct { + // type is the type of metric source. It should match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricSource `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricSource `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricSource `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricSource struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // targetValue is the target value of the metric (as a quantity). + TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"` +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +type PodsMetricSource struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"` +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +type ResourceMetricSource struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + TargetAverageUtilization *int32 `json:"targetAverageUtilization,omitempty" protobuf:"varint,2,opt,name=targetAverageUtilization"` + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + TargetAverageValue *resource.Quantity `json:"targetAverageValue,omitempty" protobuf:"bytes,3,opt,name=targetAverageValue"` +} + +// MetricStatus describes the last-read state of a single metric. +type MetricStatus struct { + // type is the type of metric source. It will match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricStatus `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricStatus `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricStatus `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// HorizontalPodAutoscalerConditionType are the valid conditions of +// a HorizontalPodAutoscaler. +type HorizontalPodAutoscalerConditionType string + +var ( + // ScalingActive indicates that the HPA controller is able to scale if necessary: + // it's correctly configured, can fetch the desired metrics, and isn't disabled. + ScalingActive HorizontalPodAutoscalerConditionType = "ScalingActive" + // AbleToScale indicates a lack of transient issues which prevent scaling from occuring, + // such as being in a backoff window, or being unable to access/update the target scale. + AbleToScale HorizontalPodAutoscalerConditionType = "AbleToScale" + // ScalingLimited indicates that the calculated scale based on metrics would be above or + // below the range for the HPA, and has thus been capped. + ScalingLimited HorizontalPodAutoscalerConditionType = "ScalingLimited" +) + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +type HorizontalPodAutoscalerCondition struct { + // type describes the current condition + Type HorizontalPodAutoscalerConditionType `json:"type" protobuf:"bytes,1,name=type"` + // status is the status of the condition (True, False, Unknown) + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,name=status"` + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // reason is the reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // message is a human-readable explanation containing details about + // the transition + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricStatus struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // currentValue is the current value of the metric (as a quantity). + CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"` +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +type PodsMetricStatus struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"` +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +type ResourceMetricStatus struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + CurrentAverageUtilization *int32 `json:"currentAverageUtilization,omitempty" protobuf:"bytes,2,opt,name=currentAverageUtilization"` + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,3,name=currentAverageValue"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/autoscaling/v1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..20848f20c8 --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go @@ -0,0 +1,561 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + resource "k8s.io/apimachinery/pkg/api/resource" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CrossVersionObjectReference).DeepCopyInto(out.(*CrossVersionObjectReference)) + return nil + }, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscaler).DeepCopyInto(out.(*HorizontalPodAutoscaler)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerCondition).DeepCopyInto(out.(*HorizontalPodAutoscalerCondition)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerList).DeepCopyInto(out.(*HorizontalPodAutoscalerList)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerSpec).DeepCopyInto(out.(*HorizontalPodAutoscalerSpec)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerStatus).DeepCopyInto(out.(*HorizontalPodAutoscalerStatus)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*MetricSpec).DeepCopyInto(out.(*MetricSpec)) + return nil + }, InType: reflect.TypeOf(&MetricSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*MetricStatus).DeepCopyInto(out.(*MetricStatus)) + return nil + }, InType: reflect.TypeOf(&MetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectMetricSource).DeepCopyInto(out.(*ObjectMetricSource)) + return nil + }, InType: reflect.TypeOf(&ObjectMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectMetricStatus).DeepCopyInto(out.(*ObjectMetricStatus)) + return nil + }, InType: reflect.TypeOf(&ObjectMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodsMetricSource).DeepCopyInto(out.(*PodsMetricSource)) + return nil + }, InType: reflect.TypeOf(&PodsMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodsMetricStatus).DeepCopyInto(out.(*PodsMetricStatus)) + return nil + }, InType: reflect.TypeOf(&PodsMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceMetricSource).DeepCopyInto(out.(*ResourceMetricSource)) + return nil + }, InType: reflect.TypeOf(&ResourceMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceMetricStatus).DeepCopyInto(out.(*ResourceMetricStatus)) + return nil + }, InType: reflect.TypeOf(&ResourceMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Scale).DeepCopyInto(out.(*Scale)) + return nil + }, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec)) + return nil + }, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus)) + return nil + }, InType: reflect.TypeOf(&ScaleStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CrossVersionObjectReference) DeepCopyInto(out *CrossVersionObjectReference) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CrossVersionObjectReference. +func (in *CrossVersionObjectReference) DeepCopy() *CrossVersionObjectReference { + if in == nil { + return nil + } + out := new(CrossVersionObjectReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscaler) DeepCopyInto(out *HorizontalPodAutoscaler) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscaler. +func (in *HorizontalPodAutoscaler) DeepCopy() *HorizontalPodAutoscaler { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscaler) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *HorizontalPodAutoscaler) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerCondition) DeepCopyInto(out *HorizontalPodAutoscalerCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerCondition. +func (in *HorizontalPodAutoscalerCondition) DeepCopy() *HorizontalPodAutoscalerCondition { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerList) DeepCopyInto(out *HorizontalPodAutoscalerList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerList. +func (in *HorizontalPodAutoscalerList) DeepCopy() *HorizontalPodAutoscalerList { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *HorizontalPodAutoscalerList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscalerSpec) { + *out = *in + out.ScaleTargetRef = in.ScaleTargetRef + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.TargetCPUUtilizationPercentage != nil { + in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerSpec. +func (in *HorizontalPodAutoscalerSpec) DeepCopy() *HorizontalPodAutoscalerSpec { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscalerStatus) { + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + if in.CurrentCPUUtilizationPercentage != nil { + in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerStatus. +func (in *HorizontalPodAutoscalerStatus) DeepCopy() *HorizontalPodAutoscalerStatus { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSpec. +func (in *MetricSpec) DeepCopy() *MetricSpec { + if in == nil { + return nil + } + out := new(MetricSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricStatus. +func (in *MetricStatus) DeepCopy() *MetricStatus { + if in == nil { + return nil + } + out := new(MetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectMetricSource) DeepCopyInto(out *ObjectMetricSource) { + *out = *in + out.Target = in.Target + out.TargetValue = in.TargetValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMetricSource. +func (in *ObjectMetricSource) DeepCopy() *ObjectMetricSource { + if in == nil { + return nil + } + out := new(ObjectMetricSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectMetricStatus) DeepCopyInto(out *ObjectMetricStatus) { + *out = *in + out.Target = in.Target + out.CurrentValue = in.CurrentValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMetricStatus. +func (in *ObjectMetricStatus) DeepCopy() *ObjectMetricStatus { + if in == nil { + return nil + } + out := new(ObjectMetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) { + *out = *in + out.TargetAverageValue = in.TargetAverageValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsMetricSource. +func (in *PodsMetricSource) DeepCopy() *PodsMetricSource { + if in == nil { + return nil + } + out := new(PodsMetricSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) { + *out = *in + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsMetricStatus. +func (in *PodsMetricStatus) DeepCopy() *PodsMetricStatus { + if in == nil { + return nil + } + out := new(PodsMetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { + *out = *in + if in.TargetAverageUtilization != nil { + in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.TargetAverageValue != nil { + in, out := &in.TargetAverageValue, &out.TargetAverageValue + if *in == nil { + *out = nil + } else { + *out = new(resource.Quantity) + **out = (*in).DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricSource. +func (in *ResourceMetricSource) DeepCopy() *ResourceMetricSource { + if in == nil { + return nil + } + out := new(ResourceMetricSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { + *out = *in + if in.CurrentAverageUtilization != nil { + in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricStatus. +func (in *ResourceMetricStatus) DeepCopy() *ResourceMetricStatus { + if in == nil { + return nil + } + out := new(ResourceMetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Scale) DeepCopyInto(out *Scale) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Scale. +func (in *Scale) DeepCopy() *Scale { + if in == nil { + return nil + } + out := new(Scale) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Scale) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleSpec) DeepCopyInto(out *ScaleSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleSpec. +func (in *ScaleSpec) DeepCopy() *ScaleSpec { + if in == nil { + return nil + } + out := new(ScaleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleStatus) DeepCopyInto(out *ScaleStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleStatus. +func (in *ScaleStatus) DeepCopy() *ScaleStatus { + if in == nil { + return nil + } + out := new(ScaleStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/BUILD b/vendor/k8s.io/api/autoscaling/v2beta1/BUILD new file mode 100644 index 0000000000..3eb3cb296c --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/doc.go b/vendor/k8s.io/api/autoscaling/v2beta1/doc.go new file mode 100644 index 0000000000..689f369bfe --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/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 v2beta1 // import "k8s.io/api/autoscaling/v2beta1" diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go new file mode 100644 index 0000000000..11eb55f3f0 --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go @@ -0,0 +1,3401 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto +// DO NOT EDIT! + +/* + Package v2beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto + + It has these top-level messages: + CrossVersionObjectReference + HorizontalPodAutoscaler + HorizontalPodAutoscalerCondition + HorizontalPodAutoscalerList + HorizontalPodAutoscalerSpec + HorizontalPodAutoscalerStatus + MetricSpec + MetricStatus + ObjectMetricSource + ObjectMetricStatus + PodsMetricSource + PodsMetricStatus + ResourceMetricSource + ResourceMetricStatus +*/ +package v2beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_api_resource "k8s.io/apimachinery/pkg/api/resource" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_api_core_v1 "k8s.io/api/core/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 *HorizontalPodAutoscalerCondition) Reset() { *m = HorizontalPodAutoscalerCondition{} } +func (*HorizontalPodAutoscalerCondition) ProtoMessage() {} +func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *HorizontalPodAutoscalerList) Reset() { *m = HorizontalPodAutoscalerList{} } +func (*HorizontalPodAutoscalerList) ProtoMessage() {} +func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *HorizontalPodAutoscalerSpec) Reset() { *m = HorizontalPodAutoscalerSpec{} } +func (*HorizontalPodAutoscalerSpec) ProtoMessage() {} +func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func (m *HorizontalPodAutoscalerStatus) Reset() { *m = HorizontalPodAutoscalerStatus{} } +func (*HorizontalPodAutoscalerStatus) ProtoMessage() {} +func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *MetricSpec) Reset() { *m = MetricSpec{} } +func (*MetricSpec) ProtoMessage() {} +func (*MetricSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *MetricStatus) Reset() { *m = MetricStatus{} } +func (*MetricStatus) ProtoMessage() {} +func (*MetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *ObjectMetricSource) Reset() { *m = ObjectMetricSource{} } +func (*ObjectMetricSource) ProtoMessage() {} +func (*ObjectMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *ObjectMetricStatus) Reset() { *m = ObjectMetricStatus{} } +func (*ObjectMetricStatus) ProtoMessage() {} +func (*ObjectMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *PodsMetricSource) Reset() { *m = PodsMetricSource{} } +func (*PodsMetricSource) ProtoMessage() {} +func (*PodsMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *PodsMetricStatus) Reset() { *m = PodsMetricStatus{} } +func (*PodsMetricStatus) ProtoMessage() {} +func (*PodsMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ResourceMetricSource) Reset() { *m = ResourceMetricSource{} } +func (*ResourceMetricSource) ProtoMessage() {} +func (*ResourceMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ResourceMetricStatus) Reset() { *m = ResourceMetricStatus{} } +func (*ResourceMetricStatus) ProtoMessage() {} +func (*ResourceMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func init() { + proto.RegisterType((*CrossVersionObjectReference)(nil), "k8s.io.api.autoscaling.v2beta1.CrossVersionObjectReference") + proto.RegisterType((*HorizontalPodAutoscaler)(nil), "k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscaler") + proto.RegisterType((*HorizontalPodAutoscalerCondition)(nil), "k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerCondition") + proto.RegisterType((*HorizontalPodAutoscalerList)(nil), "k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerList") + proto.RegisterType((*HorizontalPodAutoscalerSpec)(nil), "k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerSpec") + proto.RegisterType((*HorizontalPodAutoscalerStatus)(nil), "k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerStatus") + proto.RegisterType((*MetricSpec)(nil), "k8s.io.api.autoscaling.v2beta1.MetricSpec") + proto.RegisterType((*MetricStatus)(nil), "k8s.io.api.autoscaling.v2beta1.MetricStatus") + proto.RegisterType((*ObjectMetricSource)(nil), "k8s.io.api.autoscaling.v2beta1.ObjectMetricSource") + proto.RegisterType((*ObjectMetricStatus)(nil), "k8s.io.api.autoscaling.v2beta1.ObjectMetricStatus") + proto.RegisterType((*PodsMetricSource)(nil), "k8s.io.api.autoscaling.v2beta1.PodsMetricSource") + proto.RegisterType((*PodsMetricStatus)(nil), "k8s.io.api.autoscaling.v2beta1.PodsMetricStatus") + proto.RegisterType((*ResourceMetricSource)(nil), "k8s.io.api.autoscaling.v2beta1.ResourceMetricSource") + proto.RegisterType((*ResourceMetricStatus)(nil), "k8s.io.api.autoscaling.v2beta1.ResourceMetricStatus") +} +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 *HorizontalPodAutoscalerCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerCondition) 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.LastTransitionTime.Size())) + n4, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + 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.Message))) + i += copy(dAtA[i:], m.Message) + 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())) + 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 *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())) + n6, err := m.ScaleTargetRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + 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 len(m.Metrics) > 0 { + for _, msg := range m.Metrics { + 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 *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())) + n7, err := m.LastScaleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DesiredReplicas)) + if len(m.CurrentMetrics) > 0 { + for _, msg := range m.CurrentMetrics { + 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 + } + } + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + return i, nil +} + +func (m *MetricSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricSpec) 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.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n8, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n9, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n10, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + return i, nil +} + +func (m *MetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricStatus) 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.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n11, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n12, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n13, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + return i, nil +} + +func (m *ObjectMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n14, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetValue.Size())) + n15, err := m.TargetValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + return i, nil +} + +func (m *ObjectMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n16, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size())) + n17, err := m.CurrentValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + return i, nil +} + +func (m *PodsMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n18, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + return i, nil +} + +func (m *PodsMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n19, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + return i, nil +} + +func (m *ResourceMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricSource) 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 m.TargetAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n20, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *ResourceMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricStatus) 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 m.CurrentAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CurrentAverageUtilization)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n21, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + 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 *HorizontalPodAutoscalerCondition) 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.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 *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 len(m.Metrics) > 0 { + for _, e := range m.Metrics { + l = e.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 len(m.CurrentMetrics) > 0 { + for _, e := range m.CurrentMetrics { + l = e.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 *MetricSpec) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *MetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ObjectMetricSource) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectMetricStatus) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.TargetAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ResourceMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.CurrentAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.CurrentAverageUtilization)) + } + l = m.CurrentAverageValue.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 *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_apimachinery_pkg_apis_meta_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 *HorizontalPodAutoscalerCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `Metrics:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Metrics), "MetricSpec", "MetricSpec", 1), `&`, ``, 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_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `DesiredReplicas:` + fmt.Sprintf("%v", this.DesiredReplicas) + `,`, + `CurrentMetrics:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.CurrentMetrics), "MetricStatus", "MetricStatus", 1), `&`, ``, 1) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "HorizontalPodAutoscalerCondition", "HorizontalPodAutoscalerCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *MetricSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricSpec{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricSource", "ObjectMetricSource", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricSource", "PodsMetricSource", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricSource", "ResourceMetricSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *MetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricStatus{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricStatus", "ObjectMetricStatus", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricStatus", "PodsMetricStatus", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricStatus", "ResourceMetricStatus", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricSource{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricStatus{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricSource{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricStatus{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricSource{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `TargetAverageUtilization:` + valueToStringGenerated(this.TargetAverageUtilization) + `,`, + `TargetAverageValue:` + strings.Replace(fmt.Sprintf("%v", this.TargetAverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `CurrentAverageUtilization:` + valueToStringGenerated(this.CurrentAverageUtilization) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 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 *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 *HorizontalPodAutoscalerCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: 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 = HorizontalPodAutoscalerConditionType(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_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 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 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 *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 != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metrics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Metrics = append(m.Metrics, MetricSpec{}) + if err := m.Metrics[len(m.Metrics)-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 *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_apimachinery_pkg_apis_meta_v1.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 != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentMetrics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.CurrentMetrics = append(m.CurrentMetrics, MetricStatus{}) + if err := m.CurrentMetrics[len(m.CurrentMetrics)-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 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, HorizontalPodAutoscalerCondition{}) + 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 *MetricSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricSpec: 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 = MetricSourceType(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 m.Object == nil { + m.Object = &ObjectMetricSource{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Pods == nil { + m.Pods = &PodsMetricSource{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Resource == nil { + m.Resource = &ResourceMetricSource{} + } + if err := m.Resource.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 *MetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricStatus: 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 = MetricSourceType(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 m.Object == nil { + m.Object = &ObjectMetricStatus{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Pods == nil { + m.Pods = &PodsMetricStatus{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Resource == nil { + m.Resource = &ResourceMetricStatus{} + } + if err := m.Resource.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 *ObjectMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 *ObjectMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 *PodsMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.TargetAverageValue.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 *PodsMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.CurrentAverageValue.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 *ResourceMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricSource: 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 = k8s_io_api_core_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageUtilization", 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.TargetAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.TargetAverageValue == nil { + m.TargetAverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{} + } + if err := m.TargetAverageValue.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 *ResourceMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricStatus: 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 = k8s_io_api_core_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageUtilization", 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.CurrentAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.CurrentAverageValue.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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1316 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6f, 0x1b, 0x45, + 0x14, 0x8f, 0x1d, 0x27, 0x0d, 0xe3, 0x34, 0x29, 0xd3, 0xaa, 0x75, 0x53, 0x6a, 0x47, 0x2b, 0x84, + 0x4a, 0x45, 0x77, 0x5b, 0x13, 0x3e, 0x24, 0x84, 0x44, 0x6c, 0x44, 0x5b, 0x91, 0xb4, 0x65, 0x9a, + 0x56, 0x08, 0x0a, 0x62, 0xb2, 0x3b, 0x75, 0x86, 0x78, 0x3f, 0x34, 0x33, 0xb6, 0x48, 0x11, 0x12, + 0x17, 0xee, 0x1c, 0x40, 0xfc, 0x15, 0x5c, 0xe1, 0x0c, 0x12, 0x52, 0x85, 0x38, 0xf4, 0x58, 0x84, + 0x64, 0x51, 0xf3, 0x5f, 0xf4, 0x84, 0xe6, 0xc3, 0xfb, 0x61, 0x7b, 0xe3, 0xc4, 0x44, 0xc0, 0xcd, + 0x3b, 0xef, 0xf7, 0x7e, 0xef, 0xbd, 0xdf, 0xbc, 0x79, 0x33, 0x06, 0x57, 0x77, 0x5f, 0xe7, 0x36, + 0x0d, 0x9d, 0xdd, 0xce, 0x36, 0x61, 0x01, 0x11, 0x84, 0x3b, 0x5d, 0x12, 0x78, 0x21, 0x73, 0x8c, + 0x01, 0x47, 0xd4, 0xc1, 0x1d, 0x11, 0x72, 0x17, 0xb7, 0x69, 0xd0, 0x72, 0xba, 0xf5, 0x6d, 0x22, + 0xf0, 0x15, 0xa7, 0x45, 0x02, 0xc2, 0xb0, 0x20, 0x9e, 0x1d, 0xb1, 0x50, 0x84, 0xb0, 0xaa, 0xf1, + 0x36, 0x8e, 0xa8, 0x9d, 0xc2, 0xdb, 0x06, 0xbf, 0x72, 0xa9, 0x45, 0xc5, 0x4e, 0x67, 0xdb, 0x76, + 0x43, 0xdf, 0x69, 0x85, 0xad, 0xd0, 0x51, 0x6e, 0xdb, 0x9d, 0xfb, 0xea, 0x4b, 0x7d, 0xa8, 0x5f, + 0x9a, 0x6e, 0xc5, 0x4a, 0x85, 0x77, 0x43, 0x46, 0x9c, 0xee, 0x48, 0xc8, 0x95, 0xb5, 0x04, 0xe3, + 0x63, 0x77, 0x87, 0x06, 0x84, 0xed, 0x39, 0xd1, 0x6e, 0x4b, 0x39, 0x31, 0xc2, 0xc3, 0x0e, 0x73, + 0xc9, 0xa1, 0xbc, 0xb8, 0xe3, 0x13, 0x81, 0xc7, 0xc5, 0x72, 0xf2, 0xbc, 0x58, 0x27, 0x10, 0xd4, + 0x1f, 0x0d, 0xf3, 0xea, 0x24, 0x07, 0xee, 0xee, 0x10, 0x1f, 0x8f, 0xf8, 0xbd, 0x9c, 0xe7, 0xd7, + 0x11, 0xb4, 0xed, 0xd0, 0x40, 0x70, 0xc1, 0x86, 0x9d, 0xac, 0x6f, 0x0b, 0xe0, 0x5c, 0x93, 0x85, + 0x9c, 0xdf, 0x25, 0x8c, 0xd3, 0x30, 0xb8, 0xb9, 0xfd, 0x29, 0x71, 0x05, 0x22, 0xf7, 0x09, 0x23, + 0x81, 0x4b, 0xe0, 0x2a, 0x28, 0xed, 0xd2, 0xc0, 0xab, 0x14, 0x56, 0x0b, 0x17, 0x9e, 0x69, 0x2c, + 0x3e, 0xec, 0xd5, 0x66, 0xfa, 0xbd, 0x5a, 0xe9, 0x5d, 0x1a, 0x78, 0x48, 0x59, 0x24, 0x22, 0xc0, + 0x3e, 0xa9, 0x14, 0xb3, 0x88, 0x1b, 0xd8, 0x27, 0x48, 0x59, 0x60, 0x1d, 0x00, 0x1c, 0x51, 0x13, + 0xa0, 0x32, 0xab, 0x70, 0xd0, 0xe0, 0xc0, 0xfa, 0xad, 0xeb, 0xc6, 0x82, 0x52, 0x28, 0xeb, 0xa7, + 0x22, 0x38, 0x73, 0x2d, 0x64, 0xf4, 0x41, 0x18, 0x08, 0xdc, 0xbe, 0x15, 0x7a, 0xeb, 0xa6, 0x33, + 0x08, 0x83, 0x9f, 0x80, 0x05, 0x29, 0xb6, 0x87, 0x05, 0x56, 0x79, 0x95, 0xeb, 0x97, 0xed, 0xa4, + 0x87, 0xe2, 0xda, 0xed, 0x68, 0xb7, 0x25, 0x17, 0xb8, 0x2d, 0xd1, 0x76, 0xf7, 0x8a, 0xad, 0x8b, + 0xdb, 0x24, 0x02, 0x27, 0xf1, 0x93, 0x35, 0x14, 0xb3, 0xc2, 0x8f, 0x40, 0x89, 0x47, 0xc4, 0x55, + 0x35, 0x95, 0xeb, 0x6f, 0xd8, 0xfb, 0x77, 0xa8, 0x9d, 0x93, 0xe8, 0xed, 0x88, 0xb8, 0x89, 0x20, + 0xf2, 0x0b, 0x29, 0x5a, 0x48, 0xc0, 0x3c, 0x17, 0x58, 0x74, 0xb8, 0x12, 0xa3, 0x5c, 0x7f, 0x73, + 0xda, 0x00, 0x8a, 0xa4, 0xb1, 0x64, 0x42, 0xcc, 0xeb, 0x6f, 0x64, 0xc8, 0xad, 0xaf, 0x66, 0xc1, + 0x6a, 0x8e, 0x67, 0x33, 0x0c, 0x3c, 0x2a, 0x68, 0x18, 0xc0, 0x6b, 0xa0, 0x24, 0xf6, 0x22, 0x62, + 0x36, 0x78, 0x6d, 0x90, 0xed, 0xd6, 0x5e, 0x44, 0x9e, 0xf6, 0x6a, 0xcf, 0x4f, 0xf2, 0x97, 0x38, + 0xa4, 0x18, 0xe0, 0x46, 0x5c, 0x55, 0x31, 0xc3, 0x65, 0xd2, 0x7a, 0xda, 0xab, 0x8d, 0x39, 0x9a, + 0x76, 0xcc, 0x94, 0x4d, 0x1e, 0x76, 0x01, 0x6c, 0x63, 0x2e, 0xb6, 0x18, 0x0e, 0xb8, 0x8e, 0x44, + 0x7d, 0x62, 0xf4, 0xba, 0x78, 0xb0, 0xed, 0x96, 0x1e, 0x8d, 0x15, 0x93, 0x05, 0xdc, 0x18, 0x61, + 0x43, 0x63, 0x22, 0xc0, 0x17, 0xc0, 0x3c, 0x23, 0x98, 0x87, 0x41, 0xa5, 0xa4, 0xaa, 0x88, 0xc5, + 0x45, 0x6a, 0x15, 0x19, 0x2b, 0x7c, 0x11, 0x1c, 0xf3, 0x09, 0xe7, 0xb8, 0x45, 0x2a, 0x73, 0x0a, + 0xb8, 0x6c, 0x80, 0xc7, 0x36, 0xf5, 0x32, 0x1a, 0xd8, 0xad, 0xdf, 0x0b, 0xe0, 0x5c, 0x8e, 0x8e, + 0x1b, 0x94, 0x0b, 0x78, 0x6f, 0xa4, 0x9f, 0xed, 0x83, 0x15, 0x28, 0xbd, 0x55, 0x37, 0x9f, 0x30, + 0xb1, 0x17, 0x06, 0x2b, 0xa9, 0x5e, 0xbe, 0x07, 0xe6, 0xa8, 0x20, 0xbe, 0xdc, 0x95, 0xd9, 0x0b, + 0xe5, 0xfa, 0x6b, 0x53, 0xf6, 0x5a, 0xe3, 0xb8, 0x89, 0x31, 0x77, 0x5d, 0xb2, 0x21, 0x4d, 0x6a, + 0xfd, 0x51, 0xcc, 0xad, 0x4d, 0x36, 0x3c, 0xfc, 0x1c, 0x2c, 0xa9, 0xaf, 0x2d, 0xcc, 0x5a, 0x44, + 0xce, 0x15, 0x53, 0xe1, 0xc4, 0x33, 0xb5, 0xcf, 0x50, 0x6a, 0x9c, 0x36, 0xa9, 0x2c, 0xdd, 0xce, + 0x50, 0xa3, 0xa1, 0x50, 0xf0, 0x0a, 0x28, 0xfb, 0x34, 0x40, 0x24, 0x6a, 0x53, 0x17, 0xeb, 0xb6, + 0x9c, 0x6b, 0x2c, 0xf7, 0x7b, 0xb5, 0xf2, 0x66, 0xb2, 0x8c, 0xd2, 0x18, 0xf8, 0x0a, 0x28, 0xfb, + 0xf8, 0xb3, 0xd8, 0x65, 0x56, 0xb9, 0x9c, 0x34, 0xf1, 0xca, 0x9b, 0x89, 0x09, 0xa5, 0x71, 0xf0, + 0x8e, 0xec, 0x06, 0xc1, 0xa8, 0xcb, 0x2b, 0x25, 0x25, 0xf3, 0xc5, 0x49, 0xf5, 0x6d, 0x2a, 0xb8, + 0x1a, 0x11, 0xa9, 0xce, 0x51, 0x14, 0x68, 0xc0, 0x65, 0xfd, 0x50, 0x02, 0xe7, 0xf7, 0x3d, 0xfb, + 0xf0, 0x1d, 0x00, 0xc3, 0x6d, 0x4e, 0x58, 0x97, 0x78, 0x57, 0xf5, 0x68, 0x97, 0x33, 0x56, 0x6a, + 0x3c, 0xdb, 0x38, 0x2d, 0xdb, 0xfe, 0xe6, 0x88, 0x15, 0x8d, 0xf1, 0x80, 0x2e, 0x38, 0x2e, 0x0f, + 0x83, 0x16, 0x94, 0x9a, 0x71, 0x7e, 0xb8, 0x93, 0xf6, 0x6c, 0xbf, 0x57, 0x3b, 0xbe, 0x91, 0x26, + 0x41, 0x59, 0x4e, 0xb8, 0x0e, 0x96, 0xdd, 0x0e, 0x63, 0x24, 0x10, 0x43, 0x02, 0x9f, 0x31, 0x0a, + 0x2c, 0x37, 0xb3, 0x66, 0x34, 0x8c, 0x97, 0x14, 0x1e, 0xe1, 0x94, 0x11, 0x2f, 0xa6, 0x28, 0x65, + 0x29, 0xde, 0xce, 0x9a, 0xd1, 0x30, 0x1e, 0xb6, 0xc1, 0x92, 0x61, 0x35, 0x7a, 0x57, 0xe6, 0xd4, + 0x96, 0xbd, 0x74, 0xc0, 0x2d, 0xd3, 0x43, 0x37, 0xee, 0xc1, 0x66, 0x86, 0x0b, 0x0d, 0x71, 0x43, + 0x01, 0x80, 0x3b, 0x18, 0x71, 0xbc, 0x32, 0xaf, 0x22, 0xbd, 0x35, 0xe5, 0x19, 0x8c, 0x67, 0x65, + 0x72, 0x7d, 0xc5, 0x4b, 0x1c, 0xa5, 0xe2, 0x58, 0xbf, 0x16, 0x01, 0x48, 0x3a, 0x0c, 0xae, 0x65, + 0x86, 0xfc, 0xea, 0xd0, 0x90, 0x3f, 0x61, 0x90, 0xea, 0xd5, 0x93, 0x1a, 0xe8, 0x77, 0xc1, 0x7c, + 0xa8, 0x4e, 0x9e, 0x69, 0x86, 0xfa, 0xa4, 0xb4, 0xe3, 0xbb, 0x34, 0x66, 0x6b, 0x00, 0x39, 0x3a, + 0xcd, 0xf9, 0x35, 0x6c, 0xf0, 0x06, 0x28, 0x45, 0xa1, 0x37, 0xb8, 0xfc, 0x2e, 0x4f, 0x62, 0xbd, + 0x15, 0x7a, 0x3c, 0xc3, 0xb9, 0x20, 0x73, 0x97, 0xab, 0x48, 0xf1, 0xc0, 0x8f, 0xc1, 0xc2, 0xe0, + 0xcd, 0xa6, 0x9a, 0xa1, 0x5c, 0x5f, 0x9b, 0xc4, 0x89, 0x0c, 0x3e, 0xc3, 0xbb, 0x28, 0x27, 0xe8, + 0xc0, 0x82, 0x62, 0x4e, 0xeb, 0xb7, 0x22, 0x58, 0x4c, 0xef, 0xfd, 0x7f, 0x22, 0xa7, 0xee, 0xba, + 0xa3, 0x95, 0x53, 0x73, 0x1e, 0xbd, 0x9c, 0x9a, 0x37, 0x4f, 0xce, 0x6f, 0x8a, 0x00, 0x8e, 0x76, + 0x0a, 0x74, 0xc1, 0xbc, 0x50, 0x93, 0xfb, 0x28, 0x6e, 0x88, 0xf8, 0xd6, 0x36, 0x97, 0x81, 0xa1, + 0x96, 0x4f, 0x51, 0x3d, 0x5b, 0x6f, 0x24, 0x4f, 0xd6, 0xf8, 0x2c, 0x6d, 0xc6, 0x16, 0x94, 0x42, + 0x41, 0x02, 0xca, 0xda, 0xfb, 0x2e, 0x6e, 0x77, 0x06, 0x4f, 0x90, 0x7d, 0x6f, 0x68, 0x7b, 0x50, + 0xab, 0xfd, 0x5e, 0x07, 0x07, 0x82, 0x8a, 0xbd, 0xe4, 0x0a, 0xd9, 0x4a, 0xa8, 0x50, 0x9a, 0xd7, + 0xfa, 0x6e, 0x58, 0x16, 0xdd, 0x6b, 0xff, 0x5b, 0x59, 0x76, 0xc0, 0xa2, 0x19, 0x75, 0xff, 0x44, + 0x97, 0x53, 0x26, 0xca, 0x62, 0x33, 0xc5, 0x85, 0x32, 0xcc, 0xd6, 0xcf, 0x05, 0x70, 0x62, 0x78, + 0x08, 0x0c, 0xa5, 0x5c, 0x38, 0x50, 0xca, 0x0f, 0x00, 0xd4, 0x05, 0xaf, 0x77, 0x09, 0xc3, 0x2d, + 0xa2, 0x13, 0x2f, 0x4e, 0x95, 0x78, 0xfc, 0xae, 0xdc, 0x1a, 0x61, 0x44, 0x63, 0xa2, 0x58, 0xbf, + 0x64, 0x8b, 0xd0, 0x9b, 0x3b, 0x4d, 0x11, 0x5f, 0x80, 0x93, 0x46, 0x9d, 0x23, 0xa8, 0xe2, 0x9c, + 0x09, 0x76, 0xb2, 0x39, 0x4a, 0x89, 0xc6, 0xc5, 0xb1, 0xbe, 0x2f, 0x82, 0x53, 0xe3, 0xa6, 0x27, + 0x6c, 0x9a, 0xff, 0x81, 0xba, 0x0a, 0x27, 0xfd, 0x3f, 0xf0, 0x69, 0xaf, 0x56, 0x1b, 0xf3, 0xf4, + 0x1f, 0xd0, 0xa4, 0xfe, 0x2a, 0xbe, 0x0f, 0x2a, 0x19, 0xed, 0xee, 0x08, 0xda, 0xa6, 0x0f, 0xf4, + 0xa3, 0x46, 0x3f, 0xdf, 0x9e, 0xeb, 0xf7, 0x6a, 0x95, 0xad, 0x1c, 0x0c, 0xca, 0xf5, 0x96, 0xff, + 0x27, 0xc6, 0xec, 0xfd, 0x74, 0x4d, 0x7b, 0xfa, 0x10, 0xfb, 0xfe, 0xe3, 0xa8, 0x5e, 0x7a, 0xef, + 0x8f, 0x44, 0xaf, 0x0f, 0xc1, 0xd9, 0xec, 0x26, 0x8d, 0x0a, 0x76, 0xbe, 0xdf, 0xab, 0x9d, 0x6d, + 0xe6, 0x81, 0x50, 0xbe, 0x7f, 0x5e, 0xa7, 0xcd, 0xfe, 0x3b, 0x9d, 0xd6, 0xb8, 0xf4, 0xf0, 0x49, + 0x75, 0xe6, 0xd1, 0x93, 0xea, 0xcc, 0xe3, 0x27, 0xd5, 0x99, 0x2f, 0xfb, 0xd5, 0xc2, 0xc3, 0x7e, + 0xb5, 0xf0, 0xa8, 0x5f, 0x2d, 0x3c, 0xee, 0x57, 0x0b, 0x7f, 0xf6, 0xab, 0x85, 0xaf, 0xff, 0xaa, + 0xce, 0x7c, 0x70, 0xcc, 0xcc, 0xbd, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xac, 0xf1, 0x6a, 0x4f, + 0x90, 0x12, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto new file mode 100644 index 0000000000..de3d2665fd --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto @@ -0,0 +1,301 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.autoscaling.v2beta1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v2beta1"; + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +message CrossVersionObjectReference { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + optional string kind = 1; + + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + optional string name = 2; + + // API version of the referent + // +optional + optional string apiVersion = 3; +} + +// HorizontalPodAutoscaler is the configuration for a horizontal pod +// autoscaler, which automatically manages the replica count of any resource +// implementing the scale subresource based on the metrics specified. +message HorizontalPodAutoscaler { + // metadata is the standard object metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // spec is the specification for the behaviour of the autoscaler. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional HorizontalPodAutoscalerSpec spec = 2; + + // status is the current information about the autoscaler. + // +optional + optional HorizontalPodAutoscalerStatus status = 3; +} + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +message HorizontalPodAutoscalerCondition { + // type describes the current condition + optional string type = 1; + + // status is the status of the condition (True, False, Unknown) + optional string status = 2; + + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // reason is the reason for the condition's last transition. + // +optional + optional string reason = 4; + + // message is a human-readable explanation containing details about + // the transition + // +optional + optional string message = 5; +} + +// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. +message HorizontalPodAutoscalerList { + // metadata is the standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of horizontal pod autoscaler objects. + repeated HorizontalPodAutoscaler items = 2; +} + +// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. +message HorizontalPodAutoscalerSpec { + // scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics + // should be collected, as well as to actually change the replica count. + optional CrossVersionObjectReference scaleTargetRef = 1; + + // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // It defaults to 1 pod. + // +optional + optional int32 minReplicas = 2; + + // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + // It cannot be less that minReplicas. + optional int32 maxReplicas = 3; + + // metrics contains the specifications for which to use to calculate the + // desired replica count (the maximum replica count across all metrics will + // be used). The desired replica count is calculated multiplying the + // ratio between the target value and the current value by the current + // number of pods. Ergo, metrics used must decrease as the pod count is + // increased, and vice-versa. See the individual metric source types for + // more information about how each type of metric must respond. + // +optional + repeated MetricSpec metrics = 4; +} + +// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler. +message HorizontalPodAutoscalerStatus { + // observedGeneration is the most recent generation observed by this autoscaler. + // +optional + optional int64 observedGeneration = 1; + + // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, + // used by the autoscaler to control how often the number of pods is changed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2; + + // currentReplicas is current number of replicas of pods managed by this autoscaler, + // as last seen by the autoscaler. + optional int32 currentReplicas = 3; + + // desiredReplicas is the desired number of replicas of pods managed by this autoscaler, + // as last calculated by the autoscaler. + optional int32 desiredReplicas = 4; + + // currentMetrics is the last read state of the metrics used by this autoscaler. + repeated MetricStatus currentMetrics = 5; + + // conditions is the set of conditions required for this autoscaler to scale its target, + // and indicates whether or not those conditions are met. + repeated HorizontalPodAutoscalerCondition conditions = 6; +} + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +message MetricSpec { + // type is the type of metric source. It should match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricSource object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricSource pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricSource resource = 4; +} + +// MetricStatus describes the last-read state of a single metric. +message MetricStatus { + // type is the type of metric source. It will match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricStatus object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricStatus pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricStatus resource = 4; +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricSource { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // targetValue is the target value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3; +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricStatus { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // currentValue is the current value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3; +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +message PodsMetricSource { + // metricName is the name of the metric in question + optional string metricName = 1; + + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2; +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +message PodsMetricStatus { + // metricName is the name of the metric in question + optional string metricName = 1; + + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2; +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +message ResourceMetricSource { + // name is the name of the resource in question. + optional string name = 1; + + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + optional int32 targetAverageUtilization = 2; + + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3; +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +message ResourceMetricStatus { + // name is the name of the resource in question. + optional string name = 1; + + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + optional int32 currentAverageUtilization = 2; + + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3; +} + diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/register.go b/vendor/k8s.io/api/autoscaling/v2beta1/register.go new file mode 100644 index 0000000000..9025b421c8 --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/types.go b/vendor/k8s.io/api/autoscaling/v2beta1/types.go new file mode 100644 index 0000000000..d7b262ffa2 --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/types.go @@ -0,0 +1,312 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2beta1 + +import ( + "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"` +} + +// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. +type HorizontalPodAutoscalerSpec struct { + // scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics + // should be collected, as well as to actually change the replica count. + ScaleTargetRef CrossVersionObjectReference `json:"scaleTargetRef" protobuf:"bytes,1,opt,name=scaleTargetRef"` + // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // It defaults to 1 pod. + // +optional + MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"` + // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + // It cannot be less that minReplicas. + MaxReplicas int32 `json:"maxReplicas" protobuf:"varint,3,opt,name=maxReplicas"` + // metrics contains the specifications for which to use to calculate the + // desired replica count (the maximum replica count across all metrics will + // be used). The desired replica count is calculated multiplying the + // ratio between the target value and the current value by the current + // number of pods. Ergo, metrics used must decrease as the pod count is + // increased, and vice-versa. See the individual metric source types for + // more information about how each type of metric must respond. + // +optional + Metrics []MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"` +} + +// MetricSourceType indicates the type of metric. +type MetricSourceType string + +var ( + // ObjectMetricSourceType is a metric describing a kubernetes object + // (for example, hits-per-second on an Ingress object). + ObjectMetricSourceType MetricSourceType = "Object" + // PodsMetricSourceType is a metric describing each pod in the current scale + // target (for example, transactions-processed-per-second). The values + // will be averaged together before being compared to the target value. + PodsMetricSourceType MetricSourceType = "Pods" + // ResourceMetricSourceType is a resource metric known to Kubernetes, as + // specified in requests and limits, describing each pod in the current + // scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics (the "pods" source). + ResourceMetricSourceType MetricSourceType = "Resource" +) + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +type MetricSpec struct { + // type is the type of metric source. It should match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricSource `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricSource `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricSource `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricSource struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // targetValue is the target value of the metric (as a quantity). + TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"` +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +type PodsMetricSource struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"` +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +type ResourceMetricSource struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + TargetAverageUtilization *int32 `json:"targetAverageUtilization,omitempty" protobuf:"varint,2,opt,name=targetAverageUtilization"` + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + TargetAverageValue *resource.Quantity `json:"targetAverageValue,omitempty" protobuf:"bytes,3,opt,name=targetAverageValue"` +} + +// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler. +type HorizontalPodAutoscalerStatus struct { + // observedGeneration is the most recent generation observed by this autoscaler. + // +optional + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, + // used by the autoscaler to control how often the number of pods is changed. + // +optional + LastScaleTime *metav1.Time `json:"lastScaleTime,omitempty" protobuf:"bytes,2,opt,name=lastScaleTime"` + + // currentReplicas is current number of replicas of pods managed by this autoscaler, + // as last seen by the autoscaler. + CurrentReplicas int32 `json:"currentReplicas" protobuf:"varint,3,opt,name=currentReplicas"` + + // desiredReplicas is the desired number of replicas of pods managed by this autoscaler, + // as last calculated by the autoscaler. + DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"` + + // currentMetrics is the last read state of the metrics used by this autoscaler. + CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"` + + // conditions is the set of conditions required for this autoscaler to scale its target, + // and indicates whether or not those conditions are met. + Conditions []HorizontalPodAutoscalerCondition `json:"conditions" protobuf:"bytes,6,rep,name=conditions"` +} + +// HorizontalPodAutoscalerConditionType are the valid conditions of +// a HorizontalPodAutoscaler. +type HorizontalPodAutoscalerConditionType string + +var ( + // ScalingActive indicates that the HPA controller is able to scale if necessary: + // it's correctly configured, can fetch the desired metrics, and isn't disabled. + ScalingActive HorizontalPodAutoscalerConditionType = "ScalingActive" + // AbleToScale indicates a lack of transient issues which prevent scaling from occuring, + // such as being in a backoff window, or being unable to access/update the target scale. + AbleToScale HorizontalPodAutoscalerConditionType = "AbleToScale" + // ScalingLimited indicates that the calculated scale based on metrics would be above or + // below the range for the HPA, and has thus been capped. + ScalingLimited HorizontalPodAutoscalerConditionType = "ScalingLimited" +) + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +type HorizontalPodAutoscalerCondition struct { + // type describes the current condition + Type HorizontalPodAutoscalerConditionType `json:"type" protobuf:"bytes,1,name=type"` + // status is the status of the condition (True, False, Unknown) + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,name=status"` + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // reason is the reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // message is a human-readable explanation containing details about + // the transition + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// MetricStatus describes the last-read state of a single metric. +type MetricStatus struct { + // type is the type of metric source. It will match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricStatus `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricStatus `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricStatus `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricStatus struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // currentValue is the current value of the metric (as a quantity). + CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"` +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +type PodsMetricStatus struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"` +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +type ResourceMetricStatus struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + CurrentAverageUtilization *int32 `json:"currentAverageUtilization,omitempty" protobuf:"bytes,2,opt,name=currentAverageUtilization"` + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,3,name=currentAverageValue"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// HorizontalPodAutoscaler is the configuration for a horizontal pod +// autoscaler, which automatically manages the replica count of any resource +// implementing the scale subresource based on the metrics specified. +type HorizontalPodAutoscaler struct { + metav1.TypeMeta `json:",inline"` + // metadata is the standard object metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // spec is the specification for the behaviour of the autoscaler. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // status is the current information about the autoscaler. + // +optional + Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + metav1.TypeMeta `json:",inline"` + // metadata is the standard list metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..c7002b3d1e --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/types_swagger_doc_generated.go @@ -0,0 +1,189 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2beta1 + +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\"", + "name": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "apiVersion": "API version of the referent", +} + +func (CrossVersionObjectReference) SwaggerDoc() map[string]string { + return map_CrossVersionObjectReference +} + +var map_HorizontalPodAutoscaler = map[string]string{ + "": "HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.", + "metadata": "metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "status is the current information about the autoscaler.", +} + +func (HorizontalPodAutoscaler) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscaler +} + +var map_HorizontalPodAutoscalerCondition = map[string]string{ + "": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", + "type": "type describes the current condition", + "status": "status is the status of the condition (True, False, Unknown)", + "lastTransitionTime": "lastTransitionTime is the last time the condition transitioned from one status to another", + "reason": "reason is the reason for the condition's last transition.", + "message": "message is a human-readable explanation containing details about the transition", +} + +func (HorizontalPodAutoscalerCondition) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerCondition +} + +var map_HorizontalPodAutoscalerList = map[string]string{ + "": "HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects.", + "metadata": "metadata is the standard list metadata.", + "items": "items is the list of horizontal pod autoscaler objects.", +} + +func (HorizontalPodAutoscalerList) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerList +} + +var map_HorizontalPodAutoscalerSpec = map[string]string{ + "": "HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.", + "scaleTargetRef": "scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count.", + "minReplicas": "minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.", + "maxReplicas": "maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.", + "metrics": "metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.", +} + +func (HorizontalPodAutoscalerSpec) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerSpec +} + +var map_HorizontalPodAutoscalerStatus = map[string]string{ + "": "HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.", + "observedGeneration": "observedGeneration is the most recent generation observed by this autoscaler.", + "lastScaleTime": "lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed.", + "currentReplicas": "currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.", + "desiredReplicas": "desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.", + "currentMetrics": "currentMetrics is the last read state of the metrics used by this autoscaler.", + "conditions": "conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.", +} + +func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerStatus +} + +var map_MetricSpec = map[string]string{ + "": "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).", + "type": "type is the type of metric source. It should match one of the fields below.", + "object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", + "pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", +} + +func (MetricSpec) SwaggerDoc() map[string]string { + return map_MetricSpec +} + +var map_MetricStatus = map[string]string{ + "": "MetricStatus describes the last-read state of a single metric.", + "type": "type is the type of metric source. It will match one of the fields below.", + "object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", + "pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", +} + +func (MetricStatus) SwaggerDoc() map[string]string { + return map_MetricStatus +} + +var map_ObjectMetricSource = map[string]string{ + "": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", + "target": "target is the described Kubernetes object.", + "metricName": "metricName is the name of the metric in question.", + "targetValue": "targetValue is the target value of the metric (as a quantity).", +} + +func (ObjectMetricSource) SwaggerDoc() map[string]string { + return map_ObjectMetricSource +} + +var map_ObjectMetricStatus = map[string]string{ + "": "ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", + "target": "target is the described Kubernetes object.", + "metricName": "metricName is the name of the metric in question.", + "currentValue": "currentValue is the current value of the metric (as a quantity).", +} + +func (ObjectMetricStatus) SwaggerDoc() map[string]string { + return map_ObjectMetricStatus +} + +var map_PodsMetricSource = map[string]string{ + "": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "metricName": "metricName is the name of the metric in question", + "targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)", +} + +func (PodsMetricSource) SwaggerDoc() map[string]string { + return map_PodsMetricSource +} + +var map_PodsMetricStatus = map[string]string{ + "": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).", + "metricName": "metricName is the name of the metric in question", + "currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)", +} + +func (PodsMetricStatus) SwaggerDoc() map[string]string { + return map_PodsMetricStatus +} + +var map_ResourceMetricSource = map[string]string{ + "": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.", + "name": "name is the name of the resource in question.", + "targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.", + "targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.", +} + +func (ResourceMetricSource) SwaggerDoc() map[string]string { + return map_ResourceMetricSource +} + +var map_ResourceMetricStatus = map[string]string{ + "": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", + "name": "name is the name of the resource in question.", + "currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.", + "currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.", +} + +func (ResourceMetricStatus) SwaggerDoc() map[string]string { + return map_ResourceMetricStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..b538e5b40c --- /dev/null +++ b/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go @@ -0,0 +1,491 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v2beta1 + +import ( + resource "k8s.io/apimachinery/pkg/api/resource" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CrossVersionObjectReference).DeepCopyInto(out.(*CrossVersionObjectReference)) + return nil + }, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscaler).DeepCopyInto(out.(*HorizontalPodAutoscaler)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerCondition).DeepCopyInto(out.(*HorizontalPodAutoscalerCondition)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerList).DeepCopyInto(out.(*HorizontalPodAutoscalerList)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerSpec).DeepCopyInto(out.(*HorizontalPodAutoscalerSpec)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HorizontalPodAutoscalerStatus).DeepCopyInto(out.(*HorizontalPodAutoscalerStatus)) + return nil + }, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*MetricSpec).DeepCopyInto(out.(*MetricSpec)) + return nil + }, InType: reflect.TypeOf(&MetricSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*MetricStatus).DeepCopyInto(out.(*MetricStatus)) + return nil + }, InType: reflect.TypeOf(&MetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectMetricSource).DeepCopyInto(out.(*ObjectMetricSource)) + return nil + }, InType: reflect.TypeOf(&ObjectMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectMetricStatus).DeepCopyInto(out.(*ObjectMetricStatus)) + return nil + }, InType: reflect.TypeOf(&ObjectMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodsMetricSource).DeepCopyInto(out.(*PodsMetricSource)) + return nil + }, InType: reflect.TypeOf(&PodsMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodsMetricStatus).DeepCopyInto(out.(*PodsMetricStatus)) + return nil + }, InType: reflect.TypeOf(&PodsMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceMetricSource).DeepCopyInto(out.(*ResourceMetricSource)) + return nil + }, InType: reflect.TypeOf(&ResourceMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceMetricStatus).DeepCopyInto(out.(*ResourceMetricStatus)) + return nil + }, InType: reflect.TypeOf(&ResourceMetricStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CrossVersionObjectReference) DeepCopyInto(out *CrossVersionObjectReference) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CrossVersionObjectReference. +func (in *CrossVersionObjectReference) DeepCopy() *CrossVersionObjectReference { + if in == nil { + return nil + } + out := new(CrossVersionObjectReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscaler) DeepCopyInto(out *HorizontalPodAutoscaler) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscaler. +func (in *HorizontalPodAutoscaler) DeepCopy() *HorizontalPodAutoscaler { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscaler) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *HorizontalPodAutoscaler) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerCondition) DeepCopyInto(out *HorizontalPodAutoscalerCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerCondition. +func (in *HorizontalPodAutoscalerCondition) DeepCopy() *HorizontalPodAutoscalerCondition { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerList) DeepCopyInto(out *HorizontalPodAutoscalerList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerList. +func (in *HorizontalPodAutoscalerList) DeepCopy() *HorizontalPodAutoscalerList { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *HorizontalPodAutoscalerList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscalerSpec) { + *out = *in + out.ScaleTargetRef = in.ScaleTargetRef + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]MetricSpec, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerSpec. +func (in *HorizontalPodAutoscalerSpec) DeepCopy() *HorizontalPodAutoscalerSpec { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscalerStatus) { + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + if *in == nil { + *out = nil + } else { + *out = new(v1.Time) + (*in).DeepCopyInto(*out) + } + } + if in.CurrentMetrics != nil { + in, out := &in.CurrentMetrics, &out.CurrentMetrics + *out = make([]MetricStatus, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]HorizontalPodAutoscalerCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerStatus. +func (in *HorizontalPodAutoscalerStatus) DeepCopy() *HorizontalPodAutoscalerStatus { + if in == nil { + return nil + } + out := new(HorizontalPodAutoscalerStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSpec. +func (in *MetricSpec) DeepCopy() *MetricSpec { + if in == nil { + return nil + } + out := new(MetricSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricStatus. +func (in *MetricStatus) DeepCopy() *MetricStatus { + if in == nil { + return nil + } + out := new(MetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectMetricSource) DeepCopyInto(out *ObjectMetricSource) { + *out = *in + out.Target = in.Target + out.TargetValue = in.TargetValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMetricSource. +func (in *ObjectMetricSource) DeepCopy() *ObjectMetricSource { + if in == nil { + return nil + } + out := new(ObjectMetricSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectMetricStatus) DeepCopyInto(out *ObjectMetricStatus) { + *out = *in + out.Target = in.Target + out.CurrentValue = in.CurrentValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMetricStatus. +func (in *ObjectMetricStatus) DeepCopy() *ObjectMetricStatus { + if in == nil { + return nil + } + out := new(ObjectMetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) { + *out = *in + out.TargetAverageValue = in.TargetAverageValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsMetricSource. +func (in *PodsMetricSource) DeepCopy() *PodsMetricSource { + if in == nil { + return nil + } + out := new(PodsMetricSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) { + *out = *in + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsMetricStatus. +func (in *PodsMetricStatus) DeepCopy() *PodsMetricStatus { + if in == nil { + return nil + } + out := new(PodsMetricStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { + *out = *in + if in.TargetAverageUtilization != nil { + in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.TargetAverageValue != nil { + in, out := &in.TargetAverageValue, &out.TargetAverageValue + if *in == nil { + *out = nil + } else { + *out = new(resource.Quantity) + **out = (*in).DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricSource. +func (in *ResourceMetricSource) DeepCopy() *ResourceMetricSource { + if in == nil { + return nil + } + out := new(ResourceMetricSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { + *out = *in + if in.CurrentAverageUtilization != nil { + in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricStatus. +func (in *ResourceMetricStatus) DeepCopy() *ResourceMetricStatus { + if in == nil { + return nil + } + out := new(ResourceMetricStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/OWNERS b/vendor/k8s.io/api/batch/OWNERS similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/batch/OWNERS rename to vendor/k8s.io/api/batch/OWNERS diff --git a/vendor/k8s.io/api/batch/v1/BUILD b/vendor/k8s.io/api/batch/v1/BUILD new file mode 100644 index 0000000000..5cc4f6f7b3 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/batch/v1/doc.go b/vendor/k8s.io/api/batch/v1/doc.go new file mode 100644 index 0000000000..52a1d9039b --- /dev/null +++ b/vendor/k8s.io/api/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. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package v1 // import "k8s.io/api/batch/v1" diff --git a/vendor/k8s.io/api/batch/v1/generated.pb.go b/vendor/k8s.io/api/batch/v1/generated.pb.go new file mode 100644 index 0000000000..5909ab7663 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/generated.pb.go @@ -0,0 +1,1615 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/batch/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/batch/v1/generated.proto + + It has these top-level messages: + Job + JobCondition + JobList + JobSpec + JobStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 init() { + proto.RegisterType((*Job)(nil), "k8s.io.api.batch.v1.Job") + proto.RegisterType((*JobCondition)(nil), "k8s.io.api.batch.v1.JobCondition") + proto.RegisterType((*JobList)(nil), "k8s.io.api.batch.v1.JobList") + proto.RegisterType((*JobSpec)(nil), "k8s.io.api.batch.v1.JobSpec") + proto.RegisterType((*JobStatus)(nil), "k8s.io.api.batch.v1.JobStatus") +} +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 + if m.BackoffLimit != nil { + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.BackoffLimit)) + } + 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 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)) + if m.BackoffLimit != nil { + n += 1 + sovGenerated(uint64(*m.BackoffLimit)) + } + 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 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `ManualSelector:` + valueToStringGenerated(this.ManualSelector) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `BackoffLimit:` + valueToStringGenerated(this.BackoffLimit) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `CompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.CompletionTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `Active:` + fmt.Sprintf("%v", this.Active) + `,`, + `Succeeded:` + fmt.Sprintf("%v", this.Succeeded) + `,`, + `Failed:` + fmt.Sprintf("%v", this.Failed) + `,`, + `}`, + }, "") + 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_api_core_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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BackoffLimit", 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.BackoffLimit = &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 *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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/batch/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 907 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xe3, 0x44, + 0x18, 0x8d, 0x9b, 0xa6, 0x4d, 0x26, 0x69, 0x77, 0x19, 0x54, 0x29, 0x54, 0xc8, 0x59, 0x82, 0x84, + 0x0a, 0x12, 0x36, 0xe9, 0x56, 0x08, 0x21, 0x40, 0xc2, 0x45, 0x2b, 0x51, 0xa5, 0xda, 0x32, 0x29, + 0x42, 0x42, 0x20, 0x31, 0xb6, 0xbf, 0xa4, 0x43, 0x6c, 0x8f, 0xe5, 0x99, 0x44, 0xea, 0x8d, 0x9f, + 0xc0, 0x8f, 0x40, 0xfc, 0x14, 0xd4, 0xe3, 0x1e, 0xf7, 0x14, 0x51, 0xc3, 0x9d, 0xfb, 0x9e, 0xd0, + 0x8c, 0x1d, 0xdb, 0x69, 0x13, 0xd1, 0xe5, 0x66, 0xbf, 0x79, 0xef, 0x7d, 0x33, 0xf3, 0xbd, 0xf9, + 0xd0, 0x67, 0xd3, 0x4f, 0x84, 0xc5, 0xb8, 0x3d, 0x9d, 0xb9, 0x90, 0x44, 0x20, 0x41, 0xd8, 0x73, + 0x88, 0x7c, 0x9e, 0xd8, 0xf9, 0x02, 0x8d, 0x99, 0xed, 0x52, 0xe9, 0x5d, 0xd9, 0xf3, 0x81, 0x3d, + 0x81, 0x08, 0x12, 0x2a, 0xc1, 0xb7, 0xe2, 0x84, 0x4b, 0x8e, 0xdf, 0xcc, 0x48, 0x16, 0x8d, 0x99, + 0xa5, 0x49, 0xd6, 0x7c, 0x70, 0xf8, 0xe1, 0x84, 0xc9, 0xab, 0x99, 0x6b, 0x79, 0x3c, 0xb4, 0x27, + 0x7c, 0xc2, 0x6d, 0xcd, 0x75, 0x67, 0x63, 0xfd, 0xa7, 0x7f, 0xf4, 0x57, 0xe6, 0x71, 0xd8, 0xaf, + 0x14, 0xf2, 0x78, 0x02, 0x6b, 0xea, 0x1c, 0x9e, 0x94, 0x9c, 0x90, 0x7a, 0x57, 0x2c, 0x82, 0xe4, + 0xda, 0x8e, 0xa7, 0x13, 0x05, 0x08, 0x3b, 0x04, 0x49, 0xd7, 0xa9, 0xec, 0x4d, 0xaa, 0x64, 0x16, + 0x49, 0x16, 0xc2, 0x3d, 0xc1, 0xc7, 0xff, 0x25, 0x10, 0xde, 0x15, 0x84, 0xf4, 0x9e, 0xee, 0xe9, + 0x26, 0xdd, 0x4c, 0xb2, 0xc0, 0x66, 0x91, 0x14, 0x32, 0xb9, 0x2b, 0xea, 0xff, 0x63, 0xa0, 0xfa, + 0x19, 0x77, 0xf1, 0x4f, 0xa8, 0xa9, 0x0e, 0xe0, 0x53, 0x49, 0xbb, 0xc6, 0x13, 0xe3, 0xa8, 0x7d, + 0xfc, 0x91, 0x55, 0x5e, 0x6b, 0xe1, 0x67, 0xc5, 0xd3, 0x89, 0x02, 0x84, 0xa5, 0xd8, 0xd6, 0x7c, + 0x60, 0x3d, 0x77, 0x7f, 0x06, 0x4f, 0x9e, 0x83, 0xa4, 0x0e, 0xbe, 0x59, 0xf4, 0x6a, 0xe9, 0xa2, + 0x87, 0x4a, 0x8c, 0x14, 0xae, 0xf8, 0x0b, 0xb4, 0x2d, 0x62, 0xf0, 0xba, 0x5b, 0xda, 0xfd, 0x6d, + 0x6b, 0x4d, 0xd3, 0xac, 0x33, 0xee, 0x8e, 0x62, 0xf0, 0x9c, 0x4e, 0xee, 0xb4, 0xad, 0xfe, 0x88, + 0xd6, 0xe1, 0x67, 0x68, 0x47, 0x48, 0x2a, 0x67, 0xa2, 0x5b, 0xd7, 0x0e, 0xe6, 0x46, 0x07, 0xcd, + 0x72, 0xf6, 0x73, 0x8f, 0x9d, 0xec, 0x9f, 0xe4, 0xea, 0xfe, 0x1f, 0x75, 0xd4, 0x39, 0xe3, 0xee, + 0x29, 0x8f, 0x7c, 0x26, 0x19, 0x8f, 0xf0, 0x09, 0xda, 0x96, 0xd7, 0x31, 0xe8, 0x63, 0xb7, 0x9c, + 0x27, 0xcb, 0xd2, 0x97, 0xd7, 0x31, 0xbc, 0x5a, 0xf4, 0x1e, 0x57, 0xb9, 0x0a, 0x23, 0x9a, 0x8d, + 0x87, 0xc5, 0x76, 0xb6, 0xb4, 0xee, 0x64, 0xb5, 0xdc, 0xab, 0x45, 0x6f, 0x4d, 0xa4, 0xac, 0xc2, + 0x69, 0x75, 0x53, 0x78, 0x82, 0xf6, 0x02, 0x2a, 0xe4, 0x45, 0xc2, 0x5d, 0xb8, 0x64, 0x21, 0xe4, + 0x67, 0xfc, 0xe0, 0x61, 0x3d, 0x50, 0x0a, 0xe7, 0x20, 0xdf, 0xc0, 0xde, 0xb0, 0x6a, 0x44, 0x56, + 0x7d, 0xf1, 0x1c, 0x61, 0x05, 0x5c, 0x26, 0x34, 0x12, 0xd9, 0x91, 0x54, 0xb5, 0xed, 0xd7, 0xae, + 0x76, 0x98, 0x57, 0xc3, 0xc3, 0x7b, 0x6e, 0x64, 0x4d, 0x05, 0xfc, 0x1e, 0xda, 0x49, 0x80, 0x0a, + 0x1e, 0x75, 0x1b, 0xfa, 0xba, 0x8a, 0xee, 0x10, 0x8d, 0x92, 0x7c, 0x15, 0xbf, 0x8f, 0x76, 0x43, + 0x10, 0x82, 0x4e, 0xa0, 0xbb, 0xa3, 0x89, 0x8f, 0x72, 0xe2, 0xee, 0x79, 0x06, 0x93, 0xe5, 0x7a, + 0xff, 0x77, 0x03, 0xed, 0x9e, 0x71, 0x77, 0xc8, 0x84, 0xc4, 0x3f, 0xdc, 0x8b, 0xaf, 0xf5, 0xb0, + 0xc3, 0x28, 0xb5, 0x0e, 0xef, 0xe3, 0xbc, 0x4e, 0x73, 0x89, 0x54, 0xa2, 0xfb, 0x39, 0x6a, 0x30, + 0x09, 0xa1, 0x6a, 0x75, 0xfd, 0xa8, 0x7d, 0xdc, 0xdd, 0x94, 0x3c, 0x67, 0x2f, 0x37, 0x69, 0x7c, + 0xad, 0xe8, 0x24, 0x53, 0xf5, 0xff, 0xae, 0xeb, 0x8d, 0xaa, 0x2c, 0xe3, 0x01, 0x6a, 0xc7, 0x34, + 0xa1, 0x41, 0x00, 0x01, 0x13, 0xa1, 0xde, 0x6b, 0xc3, 0x79, 0x94, 0x2e, 0x7a, 0xed, 0x8b, 0x12, + 0x26, 0x55, 0x8e, 0x92, 0x78, 0x3c, 0x8c, 0x03, 0x50, 0x97, 0x99, 0xc5, 0x2d, 0x97, 0x9c, 0x96, + 0x30, 0xa9, 0x72, 0xf0, 0x73, 0x74, 0x40, 0x3d, 0xc9, 0xe6, 0xf0, 0x15, 0x50, 0x3f, 0x60, 0x11, + 0x8c, 0xc0, 0xe3, 0x91, 0x9f, 0x3d, 0x9d, 0xba, 0xf3, 0x56, 0xba, 0xe8, 0x1d, 0x7c, 0xb9, 0x8e, + 0x40, 0xd6, 0xeb, 0xf0, 0x8f, 0xa8, 0x29, 0x20, 0x00, 0x4f, 0xf2, 0x24, 0x0f, 0xcb, 0xd3, 0x07, + 0xde, 0x2f, 0x75, 0x21, 0x18, 0xe5, 0x52, 0xa7, 0xa3, 0x2e, 0x78, 0xf9, 0x47, 0x0a, 0x4b, 0xfc, + 0x29, 0xda, 0x0f, 0x69, 0x34, 0xa3, 0x05, 0x53, 0xa7, 0xa4, 0xe9, 0xe0, 0x74, 0xd1, 0xdb, 0x3f, + 0x5f, 0x59, 0x21, 0x77, 0x98, 0xf8, 0x1b, 0xd4, 0x94, 0x10, 0xc6, 0x01, 0x95, 0x59, 0x64, 0xda, + 0xc7, 0xef, 0x56, 0xfb, 0xa3, 0x5e, 0x9e, 0xda, 0xc8, 0x05, 0xf7, 0x2f, 0x73, 0x9a, 0x1e, 0x31, + 0x45, 0xbf, 0x97, 0x28, 0x29, 0x6c, 0xf0, 0x09, 0xea, 0xb8, 0xd4, 0x9b, 0xf2, 0xf1, 0x78, 0xc8, + 0x42, 0x26, 0xbb, 0xbb, 0xfa, 0xca, 0x1f, 0xa7, 0x8b, 0x5e, 0xc7, 0xa9, 0xe0, 0x64, 0x85, 0xd5, + 0xff, 0xad, 0x8e, 0x5a, 0xc5, 0xf8, 0xc1, 0xdf, 0x22, 0xe4, 0x2d, 0x1f, 0xbb, 0xe8, 0x1a, 0x3a, + 0x38, 0xef, 0x6c, 0x0a, 0x4e, 0x31, 0x16, 0xca, 0x19, 0x5a, 0x40, 0x82, 0x54, 0x8c, 0xf0, 0x77, + 0xa8, 0x25, 0x24, 0x4d, 0xa4, 0x7e, 0xb6, 0x5b, 0xaf, 0xfd, 0x6c, 0xf7, 0xd2, 0x45, 0xaf, 0x35, + 0x5a, 0x1a, 0x90, 0xd2, 0x0b, 0x8f, 0xd1, 0x7e, 0x99, 0xa0, 0xff, 0x39, 0x82, 0x74, 0xbb, 0x4e, + 0x57, 0x5c, 0xc8, 0x1d, 0x57, 0x35, 0x08, 0xb2, 0x88, 0xe9, 0x1c, 0x35, 0xca, 0x41, 0x90, 0xe5, + 0x91, 0xe4, 0xab, 0xd8, 0x46, 0x2d, 0x31, 0xf3, 0x3c, 0x00, 0x1f, 0x7c, 0x9d, 0x86, 0x86, 0xf3, + 0x46, 0x4e, 0x6d, 0x8d, 0x96, 0x0b, 0xa4, 0xe4, 0x28, 0xe3, 0x31, 0x65, 0x01, 0xf8, 0x3a, 0x05, + 0x15, 0xe3, 0x67, 0x1a, 0x25, 0xf9, 0xaa, 0x73, 0x74, 0x73, 0x6b, 0xd6, 0x5e, 0xdc, 0x9a, 0xb5, + 0x97, 0xb7, 0x66, 0xed, 0x97, 0xd4, 0x34, 0x6e, 0x52, 0xd3, 0x78, 0x91, 0x9a, 0xc6, 0xcb, 0xd4, + 0x34, 0xfe, 0x4c, 0x4d, 0xe3, 0xd7, 0xbf, 0xcc, 0xda, 0xf7, 0x5b, 0xf3, 0xc1, 0xbf, 0x01, 0x00, + 0x00, 0xff, 0xff, 0xce, 0x80, 0xf2, 0xbe, 0x96, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/batch/v1/generated.proto b/vendor/k8s.io/api/batch/v1/generated.proto new file mode 100644 index 0000000000..08635ad2b2 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/generated.proto @@ -0,0 +1,173 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.batch.v1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional JobSpec spec = 2; + + // Current status of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3; + + // Last time the condition transit from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// JobList is a collection of jobs. +message JobList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of Jobs. + repeated Job items = 2; +} + +// JobSpec describes how the job execution will look like. +message JobSpec { + // 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: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + optional int32 parallelism = 1; + + // 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: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + optional int32 completions = 2; + + // Specifies the 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 + optional int64 activeDeadlineSeconds = 3; + + // Specifies the number of retries before marking this job failed. + // Defaults to 6 + // +optional + optional int32 backoffLimit = 7; + + // A label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://git.k8s.io/community/contributors/design-proposals/selector-generation.md + // +optional + optional bool manualSelector = 5; + + // Describes the pod that will be created when executing a job. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + optional k8s.io.api.core.v1.PodTemplateSpec template = 6; +} + +// JobStatus represents the current state of a Job. +message JobStatus { + // The latest available observations of an object's current state. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated JobCondition conditions = 1; + + // Represents time when the job was acknowledged by the job controller. + // 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 2; + + // 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time completionTime = 3; + + // The number of actively running pods. + // +optional + optional int32 active = 4; + + // The number of pods which reached phase Succeeded. + // +optional + optional int32 succeeded = 5; + + // The number of pods which reached phase Failed. + // +optional + optional int32 failed = 6; +} + diff --git a/vendor/k8s.io/api/batch/v1/register.go b/vendor/k8s.io/api/batch/v1/register.go new file mode 100644 index 0000000000..2cdfc98ca4 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Job{}, + &JobList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/batch/v1/types.go b/vendor/k8s.io/api/batch/v1/types.go new file mode 100644 index 0000000000..4f3b83e8a8 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/types.go @@ -0,0 +1,181 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Job represents the configuration of a single job. +type Job struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Current status of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// JobList is a collection of jobs. +type JobList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of Jobs. + Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // 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: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + Parallelism *int32 `json:"parallelism,omitempty" protobuf:"varint,1,opt,name=parallelism"` + + // 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: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + Completions *int32 `json:"completions,omitempty" protobuf:"varint,2,opt,name=completions"` + + // Specifies the 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 + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"` + + // Specifies the number of retries before marking this job failed. + // Defaults to 6 + // +optional + BackoffLimit *int32 `json:"backoffLimit,omitempty" protobuf:"varint,7,opt,name=backoffLimit"` + + // TODO enabled it when https://github.com/kubernetes/kubernetes/issues/28486 has been fixed + // Optional number of failed pods to retain. + // +optional + // FailedPodsLimit *int32 `json:"failedPodsLimit,omitempty" protobuf:"varint,9,opt,name=failedPodsLimit"` + + // A label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.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: https://git.k8s.io/community/contributors/design-proposals/selector-generation.md + // +optional + ManualSelector *bool `json:"manualSelector,omitempty" protobuf:"varint,5,opt,name=manualSelector"` + + // Describes the pod that will be created when executing a job. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,6,opt,name=template"` +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + // The latest available observations of an object's current state. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + + // Represents time when the job was acknowledged by the job controller. + // 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 + StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"` + + // 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 + CompletionTime *metav1.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"` + + // The number of actively running pods. + // +optional + Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"` + + // The number of pods which reached phase Succeeded. + // +optional + Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"` + + // The number of pods which reached phase Failed. + // +optional + 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/api/core/v1.ConditionStatus"` + // Last time the condition was checked. + // +optional + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transit from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} diff --git a/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..53b2d634fd --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go @@ -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. +*/ + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Current status of a job. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "items is the list of Jobs.", +} + +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": "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: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", + "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: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", + "activeDeadlineSeconds": "Specifies the 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", + "backoffLimit": "Specifies the number of retries before marking this job failed. Defaults to 6", + "selector": "A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#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: https://git.k8s.io/community/contributors/design-proposals/selector-generation.md", + "template": "Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", +} + +func (JobSpec) SwaggerDoc() map[string]string { + return map_JobSpec +} + +var map_JobStatus = map[string]string{ + "": "JobStatus represents the current state of a Job.", + "conditions": "The latest available observations of an object's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", + "startTime": "Represents time when the job was acknowledged by the job controller. 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": "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": "The number of actively running pods.", + "succeeded": "The number of pods which reached phase Succeeded.", + "failed": "The number of pods which reached phase Failed.", +} + +func (JobStatus) SwaggerDoc() map[string]string { + return map_JobStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..8738bd5d2c --- /dev/null +++ b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go @@ -0,0 +1,254 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Job).DeepCopyInto(out.(*Job)) + return nil + }, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobCondition).DeepCopyInto(out.(*JobCondition)) + return nil + }, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobList).DeepCopyInto(out.(*JobList)) + return nil + }, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobSpec).DeepCopyInto(out.(*JobSpec)) + return nil + }, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobStatus).DeepCopyInto(out.(*JobStatus)) + return nil + }, InType: reflect.TypeOf(&JobStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Job) DeepCopyInto(out *Job) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Job. +func (in *Job) DeepCopy() *Job { + if in == nil { + return nil + } + out := new(Job) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Job) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobCondition) DeepCopyInto(out *JobCondition) { + *out = *in + in.LastProbeTime.DeepCopyInto(&out.LastProbeTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobCondition. +func (in *JobCondition) DeepCopy() *JobCondition { + if in == nil { + return nil + } + out := new(JobCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobList) DeepCopyInto(out *JobList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobList. +func (in *JobList) DeepCopy() *JobList { + if in == nil { + return nil + } + out := new(JobList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *JobList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobSpec) DeepCopyInto(out *JobSpec) { + *out = *in + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.BackoffLimit != nil { + in, out := &in.BackoffLimit, &out.BackoffLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.ManualSelector != nil { + in, out := &in.ManualSelector, &out.ManualSelector + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + in.Template.DeepCopyInto(&out.Template) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobSpec. +func (in *JobSpec) DeepCopy() *JobSpec { + if in == nil { + return nil + } + out := new(JobSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobStatus) DeepCopyInto(out *JobStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobStatus. +func (in *JobStatus) DeepCopy() *JobStatus { + if in == nil { + return nil + } + out := new(JobStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/batch/v1beta1/BUILD b/vendor/k8s.io/api/batch/v1beta1/BUILD new file mode 100644 index 0000000000..d421dd6227 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/BUILD @@ -0,0 +1,49 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/batch/v1:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/batch/v1beta1/doc.go b/vendor/k8s.io/api/batch/v1beta1/doc.go new file mode 100644 index 0000000000..653ebe0403 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1beta1 // import "k8s.io/api/batch/v1beta1" diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.pb.go b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go new file mode 100644 index 0000000000..29a624b094 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go @@ -0,0 +1,1509 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/batch/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/batch/v1beta1/generated.proto + + It has these top-level messages: + CronJob + CronJobList + CronJobSpec + CronJobStatus + JobTemplate + JobTemplateSpec +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *CronJob) Reset() { *m = CronJob{} } +func (*CronJob) ProtoMessage() {} +func (*CronJob) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *CronJobList) Reset() { *m = CronJobList{} } +func (*CronJobList) ProtoMessage() {} +func (*CronJobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *CronJobSpec) Reset() { *m = CronJobSpec{} } +func (*CronJobSpec) ProtoMessage() {} +func (*CronJobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *CronJobStatus) Reset() { *m = CronJobStatus{} } +func (*CronJobStatus) ProtoMessage() {} +func (*CronJobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *JobTemplate) Reset() { *m = JobTemplate{} } +func (*JobTemplate) ProtoMessage() {} +func (*JobTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *JobTemplateSpec) Reset() { *m = JobTemplateSpec{} } +func (*JobTemplateSpec) ProtoMessage() {} +func (*JobTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func init() { + proto.RegisterType((*CronJob)(nil), "k8s.io.api.batch.v1beta1.CronJob") + proto.RegisterType((*CronJobList)(nil), "k8s.io.api.batch.v1beta1.CronJobList") + proto.RegisterType((*CronJobSpec)(nil), "k8s.io.api.batch.v1beta1.CronJobSpec") + proto.RegisterType((*CronJobStatus)(nil), "k8s.io.api.batch.v1beta1.CronJobStatus") + proto.RegisterType((*JobTemplate)(nil), "k8s.io.api.batch.v1beta1.JobTemplate") + proto.RegisterType((*JobTemplateSpec)(nil), "k8s.io.api.batch.v1beta1.JobTemplateSpec") +} +func (m *CronJob) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJob) 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 *CronJobList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobList) 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 *CronJobSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobSpec) 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())) + n5, err := m.JobTemplate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if m.SuccessfulJobsHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.SuccessfulJobsHistoryLimit)) + } + if m.FailedJobsHistoryLimit != nil { + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.FailedJobsHistoryLimit)) + } + return i, nil +} + +func (m *CronJobStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobStatus) 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())) + n6, err := m.LastScheduleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + 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())) + 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.Template.Size())) + n8, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + 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 + 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 *CronJob) 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 *CronJobList) 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 *CronJobSpec) 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)) + if m.SuccessfulJobsHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.SuccessfulJobsHistoryLimit)) + } + if m.FailedJobsHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.FailedJobsHistoryLimit)) + } + return n +} + +func (m *CronJobStatus) 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 (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 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 *CronJob) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJob{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CronJobSpec", "CronJobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CronJobStatus", "CronJobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CronJob", "CronJob", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobSpec{`, + `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) + `,`, + `SuccessfulJobsHistoryLimit:` + valueToStringGenerated(this.SuccessfulJobsHistoryLimit) + `,`, + `FailedJobsHistoryLimit:` + valueToStringGenerated(this.FailedJobsHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobStatus{`, + `Active:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Active), "ObjectReference", "k8s_io_api_core_v1.ObjectReference", 1), `&`, ``, 1) + `,`, + `LastScheduleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScheduleTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "k8s_io_api_batch_v1.JobSpec", 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 *CronJob) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJob: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJob: 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 *CronJobList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobList: 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, CronJob{}) + 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 *CronJobSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobSpec: 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 + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SuccessfulJobsHistoryLimit", 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.SuccessfulJobsHistoryLimit = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FailedJobsHistoryLimit", 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.FailedJobsHistoryLimit = &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 *CronJobStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobStatus: 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_api_core_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_apimachinery_pkg_apis_meta_v1.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 (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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/batch/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 784 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0xc7, 0xe3, 0x34, 0xbf, 0x76, 0xc2, 0x42, 0xd7, 0xa0, 0x5d, 0x2b, 0x20, 0x27, 0x64, 0xb5, + 0x22, 0x20, 0x76, 0x4c, 0x0b, 0x42, 0x9c, 0x90, 0xd6, 0x8b, 0x16, 0x28, 0x45, 0x8b, 0x9c, 0x22, + 0x24, 0x54, 0xa1, 0x8e, 0xc7, 0x2f, 0xc9, 0x34, 0xb6, 0xc7, 0xf2, 0x8c, 0x23, 0xe5, 0xc6, 0x85, + 0x3b, 0xff, 0x08, 0x27, 0xfe, 0x89, 0x88, 0x53, 0x8f, 0x3d, 0x45, 0xd4, 0xfc, 0x17, 0x9c, 0x90, + 0x27, 0xce, 0x8f, 0xe6, 0x47, 0x5b, 0x2e, 0xbd, 0x79, 0x9e, 0xbf, 0xdf, 0xcf, 0xbc, 0x79, 0xef, + 0xcd, 0xa0, 0x17, 0xc3, 0x2f, 0x04, 0x66, 0xdc, 0x1a, 0x26, 0x2e, 0xc4, 0x21, 0x48, 0x10, 0xd6, + 0x08, 0x42, 0x8f, 0xc7, 0x56, 0xfe, 0x83, 0x44, 0xcc, 0x72, 0x89, 0xa4, 0x03, 0x6b, 0x74, 0xe0, + 0x82, 0x24, 0x07, 0x56, 0x1f, 0x42, 0x88, 0x89, 0x04, 0x0f, 0x47, 0x31, 0x97, 0x5c, 0x37, 0x66, + 0x4a, 0x4c, 0x22, 0x86, 0x95, 0x12, 0xe7, 0xca, 0xc6, 0xf3, 0x3e, 0x93, 0x83, 0xc4, 0xc5, 0x94, + 0x07, 0x56, 0x9f, 0xf7, 0xb9, 0xa5, 0x0c, 0x6e, 0xd2, 0x53, 0x2b, 0xb5, 0x50, 0x5f, 0x33, 0x50, + 0xe3, 0xe9, 0x96, 0x2d, 0xd7, 0x77, 0x6b, 0xb4, 0x57, 0x44, 0x94, 0xc7, 0xb0, 0x4d, 0xf3, 0xd9, + 0x52, 0x13, 0x10, 0x3a, 0x60, 0x21, 0xc4, 0x63, 0x2b, 0x1a, 0xf6, 0xb3, 0x80, 0xb0, 0x02, 0x90, + 0x64, 0x9b, 0xcb, 0xda, 0xe5, 0x8a, 0x93, 0x50, 0xb2, 0x00, 0x36, 0x0c, 0x9f, 0xdf, 0x66, 0x10, + 0x74, 0x00, 0x01, 0xd9, 0xf0, 0x7d, 0xba, 0xcb, 0x97, 0x48, 0xe6, 0x5b, 0x2c, 0x94, 0x42, 0xc6, + 0xeb, 0xa6, 0xf6, 0x6f, 0x45, 0x54, 0x7d, 0x19, 0xf3, 0xf0, 0x88, 0xbb, 0xfa, 0x19, 0xaa, 0x65, + 0x87, 0xf0, 0x88, 0x24, 0x86, 0xd6, 0xd2, 0x3a, 0xf5, 0xc3, 0x4f, 0xf0, 0xb2, 0x09, 0x0b, 0x26, + 0x8e, 0x86, 0xfd, 0x2c, 0x20, 0x70, 0xa6, 0xc6, 0xa3, 0x03, 0xfc, 0xda, 0x3d, 0x07, 0x2a, 0xbf, + 0x07, 0x49, 0x6c, 0x7d, 0x32, 0x6d, 0x16, 0xd2, 0x69, 0x13, 0x2d, 0x63, 0xce, 0x82, 0xaa, 0x7f, + 0x8d, 0x4a, 0x22, 0x02, 0x6a, 0x14, 0x15, 0xfd, 0x19, 0xde, 0xd5, 0x62, 0x9c, 0xa7, 0xd4, 0x8d, + 0x80, 0xda, 0x6f, 0xe4, 0xc8, 0x52, 0xb6, 0x72, 0x14, 0x40, 0x7f, 0x8d, 0x2a, 0x42, 0x12, 0x99, + 0x08, 0x63, 0x4f, 0xa1, 0x3e, 0xb8, 0x1d, 0xa5, 0xe4, 0xf6, 0x9b, 0x39, 0xac, 0x32, 0x5b, 0x3b, + 0x39, 0xa6, 0xfd, 0xa7, 0x86, 0xea, 0xb9, 0xf2, 0x98, 0x09, 0xa9, 0x9f, 0x6e, 0xd4, 0x02, 0xdf, + 0xad, 0x16, 0x99, 0x5b, 0x55, 0x62, 0x3f, 0xdf, 0xa9, 0x36, 0x8f, 0xac, 0xd4, 0xe1, 0x15, 0x2a, + 0x33, 0x09, 0x81, 0x30, 0x8a, 0xad, 0xbd, 0x4e, 0xfd, 0xf0, 0xfd, 0x5b, 0xb3, 0xb7, 0x1f, 0xe6, + 0xb4, 0xf2, 0xb7, 0x99, 0xcf, 0x99, 0xd9, 0xdb, 0x7f, 0x94, 0x16, 0x59, 0x67, 0xc5, 0xd1, 0x3f, + 0x46, 0xb5, 0x6c, 0x38, 0xbc, 0xc4, 0x07, 0x95, 0xf5, 0x83, 0x65, 0x16, 0xdd, 0x3c, 0xee, 0x2c, + 0x14, 0xfa, 0x8f, 0xe8, 0x89, 0x90, 0x24, 0x96, 0x2c, 0xec, 0x7f, 0x05, 0xc4, 0xf3, 0x59, 0x08, + 0x5d, 0xa0, 0x3c, 0xf4, 0x84, 0x6a, 0xd0, 0x9e, 0xfd, 0x6e, 0x3a, 0x6d, 0x3e, 0xe9, 0x6e, 0x97, + 0x38, 0xbb, 0xbc, 0xfa, 0x29, 0x7a, 0x44, 0x79, 0x48, 0x93, 0x38, 0x86, 0x90, 0x8e, 0x7f, 0xe0, + 0x3e, 0xa3, 0x63, 0xd5, 0xa6, 0x07, 0x36, 0xce, 0xb3, 0x79, 0xf4, 0x72, 0x5d, 0xf0, 0xef, 0xb6, + 0xa0, 0xb3, 0x09, 0xd2, 0x9f, 0xa1, 0xaa, 0x48, 0x44, 0x04, 0xa1, 0x67, 0x94, 0x5a, 0x5a, 0xa7, + 0x66, 0xd7, 0xd3, 0x69, 0xb3, 0xda, 0x9d, 0x85, 0x9c, 0xf9, 0x3f, 0xfd, 0x0c, 0xd5, 0xcf, 0xb9, + 0x7b, 0x02, 0x41, 0xe4, 0x13, 0x09, 0x46, 0x59, 0xb5, 0xf0, 0xc3, 0xdd, 0x75, 0x3e, 0x5a, 0x8a, + 0xd5, 0xd0, 0xbd, 0x9d, 0x67, 0x5a, 0x5f, 0xf9, 0xe1, 0xac, 0x22, 0xf5, 0x5f, 0x50, 0x43, 0x24, + 0x94, 0x82, 0x10, 0xbd, 0xc4, 0x3f, 0xe2, 0xae, 0xf8, 0x86, 0x09, 0xc9, 0xe3, 0xf1, 0x31, 0x0b, + 0x98, 0x34, 0x2a, 0x2d, 0xad, 0x53, 0xb6, 0xcd, 0x74, 0xda, 0x6c, 0x74, 0x77, 0xaa, 0x9c, 0x1b, + 0x08, 0xba, 0x83, 0x1e, 0xf7, 0x08, 0xf3, 0xc1, 0xdb, 0x60, 0x57, 0x15, 0xbb, 0x91, 0x4e, 0x9b, + 0x8f, 0x5f, 0x6d, 0x55, 0x38, 0x3b, 0x9c, 0xed, 0xbf, 0x34, 0xf4, 0xf0, 0xda, 0x7d, 0xd0, 0xbf, + 0x43, 0x15, 0x42, 0x25, 0x1b, 0x65, 0xf3, 0x92, 0x8d, 0xe2, 0xd3, 0xd5, 0x12, 0x65, 0x0f, 0xe1, + 0xf2, 0x7e, 0x3b, 0xd0, 0x83, 0xac, 0x13, 0xb0, 0xbc, 0x44, 0x2f, 0x94, 0xd5, 0xc9, 0x11, 0xba, + 0x8f, 0xf6, 0x7d, 0x22, 0xe4, 0x7c, 0xd4, 0x4e, 0x58, 0x00, 0xaa, 0x49, 0xf5, 0xc3, 0x8f, 0xee, + 0x76, 0x79, 0x32, 0x87, 0xfd, 0x4e, 0x3a, 0x6d, 0xee, 0x1f, 0xaf, 0x71, 0x9c, 0x0d, 0x72, 0x7b, + 0xa2, 0xa1, 0xd5, 0xee, 0xdc, 0xc3, 0xf3, 0xf5, 0x13, 0xaa, 0xc9, 0xf9, 0x44, 0x15, 0xff, 0xef, + 0x44, 0x2d, 0x6e, 0xe2, 0x62, 0x9c, 0x16, 0xb0, 0xec, 0xf5, 0x79, 0x6b, 0x4d, 0x7f, 0x0f, 0xc7, + 0xf9, 0xf2, 0xda, 0x6b, 0xfc, 0xde, 0xb6, 0xa3, 0xe0, 0x1b, 0x1e, 0x61, 0xfb, 0xf9, 0xe4, 0xca, + 0x2c, 0x5c, 0x5c, 0x99, 0x85, 0xcb, 0x2b, 0xb3, 0xf0, 0x6b, 0x6a, 0x6a, 0x93, 0xd4, 0xd4, 0x2e, + 0x52, 0x53, 0xbb, 0x4c, 0x4d, 0xed, 0xef, 0xd4, 0xd4, 0x7e, 0xff, 0xc7, 0x2c, 0xfc, 0x5c, 0xcd, + 0x0b, 0xf2, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x78, 0xe4, 0x62, 0x14, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.proto b/vendor/k8s.io/api/batch/v1beta1/generated.proto new file mode 100644 index 0000000000..f7b871632b --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/generated.proto @@ -0,0 +1,135 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.batch.v1beta1; + +import "k8s.io/api/batch/v1/generated.proto"; +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// CronJob represents the configuration of a single cron job. +message CronJob { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CronJobSpec spec = 2; + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CronJobStatus status = 3; +} + +// CronJobList is a collection of cron jobs. +message CronJobList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of CronJobs. + repeated CronJob items = 2; +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +message CronJobSpec { + // 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 + optional int64 startingDeadlineSeconds = 2; + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + optional string concurrencyPolicy = 3; + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + optional bool suspend = 4; + + // Specifies the job that will be created when executing a CronJob. + optional JobTemplateSpec jobTemplate = 5; + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 3. + // +optional + optional int32 successfulJobsHistoryLimit = 6; + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 1. + // +optional + optional int32 failedJobsHistoryLimit = 7; +} + +// CronJobStatus represents the current state of a cron job. +message CronJobStatus { + // A list of pointers to currently running jobs. + // +optional + repeated k8s.io.api.core.v1.ObjectReference active = 1; + + // Information when was the last time the job was successfully scheduled. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4; +} + +// JobTemplate describes a template for creating copies of a predefined pod. +message JobTemplate { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional k8s.io.api.batch.v1.JobSpec spec = 2; +} + diff --git a/vendor/k8s.io/api/batch/v1beta1/register.go b/vendor/k8s.io/api/batch/v1beta1/register.go new file mode 100644 index 0000000000..569817d3e4 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &JobTemplate{}, + &CronJob{}, + &CronJobList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/batch/v1beta1/types.go b/vendor/k8s.io/api/batch/v1beta1/types.go new file mode 100644 index 0000000000..ad13bba2f9 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/types.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + batchv1 "k8s.io/api/batch/v1" + "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// JobTemplate describes a template for creating copies of a predefined pod. +type JobTemplate struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec batchv1.JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CronJob represents the configuration of a single cron job. +type CronJob struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec CronJobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status CronJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CronJobList is a collection of cron jobs. +type CronJobList struct { + metav1.TypeMeta `json:",inline"` + + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of CronJobs. + Items []CronJob `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +type CronJobSpec struct { + + // 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. + // +optional + StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty" protobuf:"varint,2,opt,name=startingDeadlineSeconds"` + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty" protobuf:"bytes,3,opt,name=concurrencyPolicy,casttype=ConcurrencyPolicy"` + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + Suspend *bool `json:"suspend,omitempty" protobuf:"varint,4,opt,name=suspend"` + + // Specifies the job that will be created when executing a CronJob. + JobTemplate JobTemplateSpec `json:"jobTemplate" protobuf:"bytes,5,opt,name=jobTemplate"` + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 3. + // +optional + SuccessfulJobsHistoryLimit *int32 `json:"successfulJobsHistoryLimit,omitempty" protobuf:"varint,6,opt,name=successfulJobsHistoryLimit"` + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 1. + // +optional + FailedJobsHistoryLimit *int32 `json:"failedJobsHistoryLimit,omitempty" protobuf:"varint,7,opt,name=failedJobsHistoryLimit"` +} + +// 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 CronJobs 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" +) + +// CronJobStatus represents the current state of a cron job. +type CronJobStatus struct { + // A list of pointers to currently running jobs. + // +optional + Active []v1.ObjectReference `json:"active,omitempty" protobuf:"bytes,1,rep,name=active"` + + // Information when was the last time the job was successfully scheduled. + // +optional + LastScheduleTime *metav1.Time `json:"lastScheduleTime,omitempty" protobuf:"bytes,4,opt,name=lastScheduleTime"` +} diff --git a/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..f4c74e4327 --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.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 + +// 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_CronJob = map[string]string{ + "": "CronJob represents the configuration of a single cron job.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (CronJob) SwaggerDoc() map[string]string { + return map_CronJob +} + +var map_CronJobList = map[string]string{ + "": "CronJobList is a collection of cron jobs.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "items is the list of CronJobs.", +} + +func (CronJobList) SwaggerDoc() map[string]string { + return map_CronJobList +} + +var map_CronJobSpec = map[string]string{ + "": "CronJobSpec describes how the job execution will look like and when it will actually run.", + "schedule": "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": "Specifies how to treat concurrent executions of a Job. Defaults to Allow.", + "suspend": "This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", + "jobTemplate": "Specifies the job that will be created when executing a CronJob.", + "successfulJobsHistoryLimit": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.", + "failedJobsHistoryLimit": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", +} + +func (CronJobSpec) SwaggerDoc() map[string]string { + return map_CronJobSpec +} + +var map_CronJobStatus = map[string]string{ + "": "CronJobStatus represents the current state of a cron job.", + "active": "A list of pointers to currently running jobs.", + "lastScheduleTime": "Information when was the last time the job was successfully scheduled.", +} + +func (CronJobStatus) SwaggerDoc() map[string]string { + return map_CronJobStatus +} + +var map_JobTemplate = map[string]string{ + "": "JobTemplate describes a template for creating copies of a predefined pod.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "template": "Defines jobs that will be created from this template. https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (JobTemplateSpec) SwaggerDoc() map[string]string { + return map_JobTemplateSpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..c730ca982e --- /dev/null +++ b/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,258 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/api/core/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJob).DeepCopyInto(out.(*CronJob)) + return nil + }, InType: reflect.TypeOf(&CronJob{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJobList).DeepCopyInto(out.(*CronJobList)) + return nil + }, InType: reflect.TypeOf(&CronJobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJobSpec).DeepCopyInto(out.(*CronJobSpec)) + return nil + }, InType: reflect.TypeOf(&CronJobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJobStatus).DeepCopyInto(out.(*CronJobStatus)) + return nil + }, InType: reflect.TypeOf(&CronJobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobTemplate).DeepCopyInto(out.(*JobTemplate)) + return nil + }, InType: reflect.TypeOf(&JobTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobTemplateSpec).DeepCopyInto(out.(*JobTemplateSpec)) + return nil + }, InType: reflect.TypeOf(&JobTemplateSpec{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJob) DeepCopyInto(out *CronJob) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJob. +func (in *CronJob) DeepCopy() *CronJob { + if in == nil { + return nil + } + out := new(CronJob) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CronJob) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJobList) DeepCopyInto(out *CronJobList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CronJob, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJobList. +func (in *CronJobList) DeepCopy() *CronJobList { + if in == nil { + return nil + } + out := new(CronJobList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CronJobList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { + *out = *in + if in.StartingDeadlineSeconds != nil { + in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.Suspend != nil { + in, out := &in.Suspend, &out.Suspend + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + in.JobTemplate.DeepCopyInto(&out.JobTemplate) + if in.SuccessfulJobsHistoryLimit != nil { + in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.FailedJobsHistoryLimit != nil { + in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJobSpec. +func (in *CronJobSpec) DeepCopy() *CronJobSpec { + if in == nil { + return nil + } + out := new(CronJobSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { + *out = *in + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]v1.ObjectReference, len(*in)) + copy(*out, *in) + } + if in.LastScheduleTime != nil { + in, out := &in.LastScheduleTime, &out.LastScheduleTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJobStatus. +func (in *CronJobStatus) DeepCopy() *CronJobStatus { + if in == nil { + return nil + } + out := new(CronJobStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobTemplate) DeepCopyInto(out *JobTemplate) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Template.DeepCopyInto(&out.Template) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobTemplate. +func (in *JobTemplate) DeepCopy() *JobTemplate { + if in == nil { + return nil + } + out := new(JobTemplate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *JobTemplate) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobTemplateSpec) DeepCopyInto(out *JobTemplateSpec) { + *out = *in + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobTemplateSpec. +func (in *JobTemplateSpec) DeepCopy() *JobTemplateSpec { + if in == nil { + return nil + } + out := new(JobTemplateSpec) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/batch/v2alpha1/BUILD b/vendor/k8s.io/api/batch/v2alpha1/BUILD new file mode 100644 index 0000000000..9bec42868b --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/batch/v1:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/batch/v2alpha1/doc.go b/vendor/k8s.io/api/batch/v2alpha1/doc.go new file mode 100644 index 0000000000..288275d6ea --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/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 v2alpha1 // import "k8s.io/api/batch/v2alpha1" diff --git a/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go b/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go new file mode 100644 index 0000000000..af90de0f56 --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go @@ -0,0 +1,1510 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/batch/v2alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v2alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/batch/v2alpha1/generated.proto + + It has these top-level messages: + CronJob + CronJobList + CronJobSpec + CronJobStatus + JobTemplate + JobTemplateSpec +*/ +package v2alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *CronJob) Reset() { *m = CronJob{} } +func (*CronJob) ProtoMessage() {} +func (*CronJob) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *CronJobList) Reset() { *m = CronJobList{} } +func (*CronJobList) ProtoMessage() {} +func (*CronJobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *CronJobSpec) Reset() { *m = CronJobSpec{} } +func (*CronJobSpec) ProtoMessage() {} +func (*CronJobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *CronJobStatus) Reset() { *m = CronJobStatus{} } +func (*CronJobStatus) ProtoMessage() {} +func (*CronJobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *JobTemplate) Reset() { *m = JobTemplate{} } +func (*JobTemplate) ProtoMessage() {} +func (*JobTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *JobTemplateSpec) Reset() { *m = JobTemplateSpec{} } +func (*JobTemplateSpec) ProtoMessage() {} +func (*JobTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func init() { + proto.RegisterType((*CronJob)(nil), "k8s.io.api.batch.v2alpha1.CronJob") + proto.RegisterType((*CronJobList)(nil), "k8s.io.api.batch.v2alpha1.CronJobList") + proto.RegisterType((*CronJobSpec)(nil), "k8s.io.api.batch.v2alpha1.CronJobSpec") + proto.RegisterType((*CronJobStatus)(nil), "k8s.io.api.batch.v2alpha1.CronJobStatus") + proto.RegisterType((*JobTemplate)(nil), "k8s.io.api.batch.v2alpha1.JobTemplate") + proto.RegisterType((*JobTemplateSpec)(nil), "k8s.io.api.batch.v2alpha1.JobTemplateSpec") +} +func (m *CronJob) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJob) 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 *CronJobList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobList) 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 *CronJobSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobSpec) 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())) + n5, err := m.JobTemplate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if m.SuccessfulJobsHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.SuccessfulJobsHistoryLimit)) + } + if m.FailedJobsHistoryLimit != nil { + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.FailedJobsHistoryLimit)) + } + return i, nil +} + +func (m *CronJobStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobStatus) 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())) + n6, err := m.LastScheduleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + 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())) + 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.Template.Size())) + n8, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + 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 + 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 *CronJob) 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 *CronJobList) 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 *CronJobSpec) 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)) + if m.SuccessfulJobsHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.SuccessfulJobsHistoryLimit)) + } + if m.FailedJobsHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.FailedJobsHistoryLimit)) + } + return n +} + +func (m *CronJobStatus) 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 (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 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 *CronJob) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJob{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CronJobSpec", "CronJobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CronJobStatus", "CronJobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CronJob", "CronJob", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobSpec{`, + `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) + `,`, + `SuccessfulJobsHistoryLimit:` + valueToStringGenerated(this.SuccessfulJobsHistoryLimit) + `,`, + `FailedJobsHistoryLimit:` + valueToStringGenerated(this.FailedJobsHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobStatus{`, + `Active:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Active), "ObjectReference", "k8s_io_api_core_v1.ObjectReference", 1), `&`, ``, 1) + `,`, + `LastScheduleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScheduleTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "k8s_io_api_batch_v1.JobSpec", 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 *CronJob) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJob: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJob: 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 *CronJobList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobList: 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, CronJob{}) + 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 *CronJobSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobSpec: 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 + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SuccessfulJobsHistoryLimit", 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.SuccessfulJobsHistoryLimit = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FailedJobsHistoryLimit", 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.FailedJobsHistoryLimit = &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 *CronJobStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobStatus: 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_api_core_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_apimachinery_pkg_apis_meta_v1.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 (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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/batch/v2alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 787 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0xc7, 0xe3, 0x34, 0xbf, 0x3a, 0xa1, 0xd0, 0x1a, 0xd4, 0x86, 0x80, 0x9c, 0xc8, 0x15, 0x28, + 0x42, 0x30, 0xa6, 0x05, 0x21, 0x4e, 0x48, 0xb8, 0x08, 0x4a, 0x29, 0xa2, 0x72, 0x8a, 0x84, 0x50, + 0xb5, 0xda, 0xf1, 0x78, 0x92, 0x4c, 0x63, 0x7b, 0x2c, 0xcf, 0x38, 0x52, 0x6e, 0x7b, 0xdb, 0xeb, + 0xfe, 0x25, 0x7b, 0xd9, 0xfd, 0x23, 0xba, 0x7b, 0xea, 0xb1, 0xa7, 0x68, 0xeb, 0xfd, 0x2f, 0xf6, + 0xb4, 0xf2, 0xc4, 0xf9, 0xd1, 0x38, 0x69, 0xbb, 0x97, 0xde, 0x3c, 0xcf, 0xdf, 0xef, 0x67, 0xde, + 0xbc, 0xf7, 0x66, 0x80, 0xd9, 0xff, 0x99, 0x43, 0xca, 0x8c, 0x7e, 0x64, 0x93, 0xd0, 0x27, 0x82, + 0x70, 0x63, 0x40, 0x7c, 0x87, 0x85, 0x46, 0xfa, 0x03, 0x05, 0xd4, 0xb0, 0x91, 0xc0, 0x3d, 0x63, + 0xb0, 0x8f, 0xdc, 0xa0, 0x87, 0xf6, 0x8c, 0x2e, 0xf1, 0x49, 0x88, 0x04, 0x71, 0x60, 0x10, 0x32, + 0xc1, 0xd4, 0xcf, 0xc7, 0x52, 0x88, 0x02, 0x0a, 0xa5, 0x14, 0x4e, 0xa4, 0xf5, 0xef, 0xba, 0x54, + 0xf4, 0x22, 0x1b, 0x62, 0xe6, 0x19, 0x5d, 0xd6, 0x65, 0x86, 0x74, 0xd8, 0x51, 0x47, 0xae, 0xe4, + 0x42, 0x7e, 0x8d, 0x49, 0xf5, 0xdd, 0xec, 0xa6, 0x99, 0xed, 0xea, 0xfa, 0x9c, 0x08, 0xb3, 0x90, + 0x2c, 0xd3, 0xfc, 0x38, 0xd3, 0x78, 0x08, 0xf7, 0xa8, 0x4f, 0xc2, 0xa1, 0x11, 0xf4, 0xbb, 0x49, + 0x80, 0x1b, 0x1e, 0x11, 0x68, 0x99, 0xcb, 0x58, 0xe5, 0x0a, 0x23, 0x5f, 0x50, 0x8f, 0x64, 0x0c, + 0x3f, 0xdd, 0x65, 0xe0, 0xb8, 0x47, 0x3c, 0x94, 0xf1, 0xfd, 0xb0, 0xca, 0x17, 0x09, 0xea, 0x1a, + 0xd4, 0x17, 0x5c, 0x84, 0x8b, 0x26, 0xfd, 0x69, 0x1e, 0x94, 0x0f, 0x42, 0xe6, 0x1f, 0x31, 0x5b, + 0x7d, 0x0c, 0x2a, 0xc9, 0x21, 0x1c, 0x24, 0x50, 0x4d, 0x69, 0x2a, 0xad, 0xea, 0xfe, 0xf7, 0x70, + 0xd6, 0x85, 0x29, 0x13, 0x06, 0xfd, 0x6e, 0x12, 0xe0, 0x30, 0x51, 0xc3, 0xc1, 0x1e, 0xfc, 0xc7, + 0x3e, 0x27, 0x58, 0xfc, 0x4d, 0x04, 0x32, 0xd5, 0x8b, 0x51, 0x23, 0x17, 0x8f, 0x1a, 0x60, 0x16, + 0xb3, 0xa6, 0x54, 0xf5, 0x10, 0x14, 0x78, 0x40, 0x70, 0x2d, 0x2f, 0xe9, 0x5f, 0xc3, 0x95, 0x3d, + 0x86, 0x69, 0x4e, 0xed, 0x80, 0x60, 0xf3, 0xa3, 0x94, 0x59, 0x48, 0x56, 0x96, 0x24, 0xa8, 0x27, + 0xa0, 0xc4, 0x05, 0x12, 0x11, 0xaf, 0xad, 0x49, 0x56, 0xeb, 0x1e, 0x2c, 0xa9, 0x37, 0x3f, 0x4e, + 0x69, 0xa5, 0xf1, 0xda, 0x4a, 0x39, 0xfa, 0x4b, 0x05, 0x54, 0x53, 0xe5, 0x31, 0xe5, 0x42, 0x3d, + 0xcb, 0x54, 0x03, 0xde, 0xaf, 0x1a, 0x89, 0x5b, 0xd6, 0x62, 0x33, 0xdd, 0xa9, 0x32, 0x89, 0xcc, + 0x55, 0xe2, 0x0f, 0x50, 0xa4, 0x82, 0x78, 0xbc, 0x96, 0x6f, 0xae, 0xb5, 0xaa, 0xfb, 0xfa, 0xdd, + 0xe9, 0x9b, 0x1b, 0x29, 0xae, 0xf8, 0x67, 0x62, 0xb4, 0xc6, 0x7e, 0xfd, 0x79, 0x61, 0x9a, 0x76, + 0x52, 0x1e, 0xf5, 0x5b, 0x50, 0x49, 0xe6, 0xc3, 0x89, 0x5c, 0x22, 0xd3, 0x5e, 0x9f, 0xa5, 0xd1, + 0x4e, 0xe3, 0xd6, 0x54, 0xa1, 0xfe, 0x0b, 0x76, 0xb8, 0x40, 0xa1, 0xa0, 0x7e, 0xf7, 0x37, 0x82, + 0x1c, 0x97, 0xfa, 0xa4, 0x4d, 0x30, 0xf3, 0x1d, 0x2e, 0x7b, 0xb4, 0x66, 0x7e, 0x11, 0x8f, 0x1a, + 0x3b, 0xed, 0xe5, 0x12, 0x6b, 0x95, 0x57, 0x3d, 0x03, 0x5b, 0x98, 0xf9, 0x38, 0x0a, 0x43, 0xe2, + 0xe3, 0xe1, 0x09, 0x73, 0x29, 0x1e, 0xca, 0x46, 0xad, 0x9b, 0x30, 0xcd, 0x66, 0xeb, 0x60, 0x51, + 0xf0, 0x6e, 0x59, 0xd0, 0xca, 0x82, 0xd4, 0xaf, 0x40, 0x99, 0x47, 0x3c, 0x20, 0xbe, 0x53, 0x2b, + 0x34, 0x95, 0x56, 0xc5, 0xac, 0xc6, 0xa3, 0x46, 0xb9, 0x3d, 0x0e, 0x59, 0x93, 0x7f, 0x2a, 0x02, + 0xd5, 0x73, 0x66, 0x9f, 0x12, 0x2f, 0x70, 0x91, 0x20, 0xb5, 0xa2, 0xec, 0xe1, 0x37, 0xb7, 0x14, + 0xfa, 0x68, 0xa6, 0x96, 0x73, 0xf7, 0x69, 0x9a, 0x6a, 0x75, 0xee, 0x87, 0x35, 0xcf, 0x54, 0x1f, + 0x81, 0x3a, 0x8f, 0x30, 0x26, 0x9c, 0x77, 0x22, 0xf7, 0x88, 0xd9, 0xfc, 0x90, 0x72, 0xc1, 0xc2, + 0xe1, 0x31, 0xf5, 0xa8, 0xa8, 0x95, 0x9a, 0x4a, 0xab, 0x68, 0x6a, 0xf1, 0xa8, 0x51, 0x6f, 0xaf, + 0x54, 0x59, 0xb7, 0x10, 0x54, 0x0b, 0x6c, 0x77, 0x10, 0x75, 0x89, 0x93, 0x61, 0x97, 0x25, 0xbb, + 0x1e, 0x8f, 0x1a, 0xdb, 0xbf, 0x2f, 0x55, 0x58, 0x2b, 0x9c, 0xfa, 0x6b, 0x05, 0x6c, 0xdc, 0xb8, + 0x11, 0xea, 0x5f, 0xa0, 0x84, 0xb0, 0xa0, 0x83, 0x64, 0x60, 0x92, 0x61, 0xdc, 0x9d, 0xaf, 0x51, + 0xf2, 0x18, 0xce, 0xee, 0xb8, 0x45, 0x3a, 0x24, 0x69, 0x05, 0x99, 0x5d, 0xa3, 0x5f, 0xa5, 0xd5, + 0x4a, 0x11, 0xaa, 0x0b, 0x36, 0x5d, 0xc4, 0xc5, 0x64, 0xd6, 0x4e, 0xa9, 0x47, 0x64, 0x97, 0x6e, + 0x96, 0xfe, 0x96, 0xeb, 0x93, 0x38, 0xcc, 0xcf, 0xe2, 0x51, 0x63, 0xf3, 0x78, 0x81, 0x63, 0x65, + 0xc8, 0xfa, 0x2b, 0x05, 0xcc, 0x77, 0xe7, 0x01, 0x9e, 0xb0, 0xff, 0x40, 0x45, 0x4c, 0x46, 0x2a, + 0xff, 0xc1, 0x23, 0x35, 0xbd, 0x8b, 0xd3, 0x79, 0x9a, 0xd2, 0xf4, 0x17, 0x0a, 0xf8, 0x64, 0x41, + 0xff, 0x00, 0xe7, 0xf9, 0xe5, 0xc6, 0x93, 0xfc, 0xe5, 0x92, 0xb3, 0xc8, 0x53, 0xac, 0x7a, 0x88, + 0x4d, 0x78, 0x71, 0xad, 0xe5, 0x2e, 0xaf, 0xb5, 0xdc, 0xd5, 0xb5, 0x96, 0x7b, 0x12, 0x6b, 0xca, + 0x45, 0xac, 0x29, 0x97, 0xb1, 0xa6, 0x5c, 0xc5, 0x9a, 0xf2, 0x26, 0xd6, 0x94, 0x67, 0x6f, 0xb5, + 0xdc, 0xff, 0x95, 0x49, 0x45, 0xde, 0x07, 0x00, 0x00, 0xff, 0xff, 0x02, 0x60, 0xaa, 0x00, 0x1c, + 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/batch/v2alpha1/generated.proto b/vendor/k8s.io/api/batch/v2alpha1/generated.proto new file mode 100644 index 0000000000..0bdb247e31 --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/generated.proto @@ -0,0 +1,133 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.batch.v2alpha1; + +import "k8s.io/api/batch/v1/generated.proto"; +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v2alpha1"; + +// CronJob represents the configuration of a single cron job. +message CronJob { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CronJobSpec spec = 2; + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CronJobStatus status = 3; +} + +// CronJobList is a collection of cron jobs. +message CronJobList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of CronJobs. + repeated CronJob items = 2; +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +message CronJobSpec { + // 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 + optional int64 startingDeadlineSeconds = 2; + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + optional string concurrencyPolicy = 3; + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + optional bool suspend = 4; + + // Specifies the job that will be created when executing a CronJob. + optional JobTemplateSpec jobTemplate = 5; + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + optional int32 successfulJobsHistoryLimit = 6; + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + optional int32 failedJobsHistoryLimit = 7; +} + +// CronJobStatus represents the current state of a cron job. +message CronJobStatus { + // A list of pointers to currently running jobs. + // +optional + repeated k8s.io.api.core.v1.ObjectReference active = 1; + + // Information when was the last time the job was successfully scheduled. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4; +} + +// JobTemplate describes a template for creating copies of a predefined pod. +message JobTemplate { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional k8s.io.api.batch.v1.JobSpec spec = 2; +} + diff --git a/vendor/k8s.io/api/batch/v2alpha1/register.go b/vendor/k8s.io/api/batch/v2alpha1/register.go new file mode 100644 index 0000000000..4b02c0f481 --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &JobTemplate{}, + &CronJob{}, + &CronJobList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/batch/v2alpha1/types.go b/vendor/k8s.io/api/batch/v2alpha1/types.go new file mode 100644 index 0000000000..451df40e63 --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/types.go @@ -0,0 +1,153 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + batchv1 "k8s.io/api/batch/v1" + "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// JobTemplate describes a template for creating copies of a predefined pod. +type JobTemplate struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec batchv1.JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CronJob represents the configuration of a single cron job. +type CronJob struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec CronJobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status CronJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CronJobList is a collection of cron jobs. +type CronJobList struct { + metav1.TypeMeta `json:",inline"` + + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of CronJobs. + Items []CronJob `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +type CronJobSpec struct { + + // 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. + // +optional + StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty" protobuf:"varint,2,opt,name=startingDeadlineSeconds"` + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty" protobuf:"bytes,3,opt,name=concurrencyPolicy,casttype=ConcurrencyPolicy"` + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + Suspend *bool `json:"suspend,omitempty" protobuf:"varint,4,opt,name=suspend"` + + // Specifies the job that will be created when executing a CronJob. + JobTemplate JobTemplateSpec `json:"jobTemplate" protobuf:"bytes,5,opt,name=jobTemplate"` + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + SuccessfulJobsHistoryLimit *int32 `json:"successfulJobsHistoryLimit,omitempty" protobuf:"varint,6,opt,name=successfulJobsHistoryLimit"` + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + FailedJobsHistoryLimit *int32 `json:"failedJobsHistoryLimit,omitempty" protobuf:"varint,7,opt,name=failedJobsHistoryLimit"` +} + +// 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 CronJobs 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" +) + +// CronJobStatus represents the current state of a cron job. +type CronJobStatus struct { + // A list of pointers to currently running jobs. + // +optional + Active []v1.ObjectReference `json:"active,omitempty" protobuf:"bytes,1,rep,name=active"` + + // Information when was the last time the job was successfully scheduled. + // +optional + LastScheduleTime *metav1.Time `json:"lastScheduleTime,omitempty" protobuf:"bytes,4,opt,name=lastScheduleTime"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v2alpha1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/batch/v2alpha1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..b572f9ca3a --- /dev/null +++ b/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go @@ -0,0 +1,258 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + v1 "k8s.io/api/core/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJob).DeepCopyInto(out.(*CronJob)) + return nil + }, InType: reflect.TypeOf(&CronJob{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJobList).DeepCopyInto(out.(*CronJobList)) + return nil + }, InType: reflect.TypeOf(&CronJobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJobSpec).DeepCopyInto(out.(*CronJobSpec)) + return nil + }, InType: reflect.TypeOf(&CronJobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CronJobStatus).DeepCopyInto(out.(*CronJobStatus)) + return nil + }, InType: reflect.TypeOf(&CronJobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobTemplate).DeepCopyInto(out.(*JobTemplate)) + return nil + }, InType: reflect.TypeOf(&JobTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JobTemplateSpec).DeepCopyInto(out.(*JobTemplateSpec)) + return nil + }, InType: reflect.TypeOf(&JobTemplateSpec{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJob) DeepCopyInto(out *CronJob) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJob. +func (in *CronJob) DeepCopy() *CronJob { + if in == nil { + return nil + } + out := new(CronJob) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CronJob) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJobList) DeepCopyInto(out *CronJobList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CronJob, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJobList. +func (in *CronJobList) DeepCopy() *CronJobList { + if in == nil { + return nil + } + out := new(CronJobList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CronJobList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { + *out = *in + if in.StartingDeadlineSeconds != nil { + in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.Suspend != nil { + in, out := &in.Suspend, &out.Suspend + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + in.JobTemplate.DeepCopyInto(&out.JobTemplate) + if in.SuccessfulJobsHistoryLimit != nil { + in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.FailedJobsHistoryLimit != nil { + in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJobSpec. +func (in *CronJobSpec) DeepCopy() *CronJobSpec { + if in == nil { + return nil + } + out := new(CronJobSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { + *out = *in + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]v1.ObjectReference, len(*in)) + copy(*out, *in) + } + if in.LastScheduleTime != nil { + in, out := &in.LastScheduleTime, &out.LastScheduleTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronJobStatus. +func (in *CronJobStatus) DeepCopy() *CronJobStatus { + if in == nil { + return nil + } + out := new(CronJobStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobTemplate) DeepCopyInto(out *JobTemplate) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Template.DeepCopyInto(&out.Template) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobTemplate. +func (in *JobTemplate) DeepCopy() *JobTemplate { + if in == nil { + return nil + } + out := new(JobTemplate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *JobTemplate) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobTemplateSpec) DeepCopyInto(out *JobTemplateSpec) { + *out = *in + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobTemplateSpec. +func (in *JobTemplateSpec) DeepCopy() *JobTemplateSpec { + if in == nil { + return nil + } + out := new(JobTemplateSpec) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/certificates/OWNERS b/vendor/k8s.io/api/certificates/OWNERS new file mode 100755 index 0000000000..6066d2c121 --- /dev/null +++ b/vendor/k8s.io/api/certificates/OWNERS @@ -0,0 +1,15 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- deads2k +- caesarxuchao +- liggitt +- sttts +- timothysc +- dims +- errordeveloper +- mbohlool +- david-mcmahon +- jianhuiz +- enj diff --git a/vendor/k8s.io/api/certificates/v1beta1/BUILD b/vendor/k8s.io/api/certificates/v1beta1/BUILD new file mode 100644 index 0000000000..745ff2609d --- /dev/null +++ b/vendor/k8s.io/api/certificates/v1beta1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/certificates/v1beta1/doc.go b/vendor/k8s.io/api/certificates/v1beta1/doc.go new file mode 100644 index 0000000000..d98ee7c3d7 --- /dev/null +++ b/vendor/k8s.io/api/certificates/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:openapi-gen=true + +// +groupName=certificates.k8s.io +package v1beta1 // import "k8s.io/api/certificates/v1beta1" diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go new file mode 100644 index 0000000000..4e09a4bd3c --- /dev/null +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go @@ -0,0 +1,1693 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/certificates/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1beta1/generated.proto + + It has these top-level messages: + CertificateSigningRequest + CertificateSigningRequestCondition + CertificateSigningRequestList + CertificateSigningRequestSpec + CertificateSigningRequestStatus + ExtraValue +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func init() { + proto.RegisterType((*CertificateSigningRequest)(nil), "k8s.io.api.certificates.v1beta1.CertificateSigningRequest") + proto.RegisterType((*CertificateSigningRequestCondition)(nil), "k8s.io.api.certificates.v1beta1.CertificateSigningRequestCondition") + proto.RegisterType((*CertificateSigningRequestList)(nil), "k8s.io.api.certificates.v1beta1.CertificateSigningRequestList") + proto.RegisterType((*CertificateSigningRequestSpec)(nil), "k8s.io.api.certificates.v1beta1.CertificateSigningRequestSpec") + proto.RegisterType((*CertificateSigningRequestStatus)(nil), "k8s.io.api.certificates.v1beta1.CertificateSigningRequestStatus") + proto.RegisterType((*ExtraValue)(nil), "k8s.io.api.certificates.v1beta1.ExtraValue") +} +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) + } + } + if len(m.Usages) > 0 { + for _, s := range m.Usages { + 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.Extra) > 0 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x32 + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n6, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + } + 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 (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 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)) + } + } + if len(m.Usages) > 0 { + for _, s := range m.Usages { + 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 *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 (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 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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" + } + 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{`&CertificateSigningRequestSpec{`, + `Request:` + valueToStringGenerated(this.Request) + `,`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Usages:` + fmt.Sprintf("%v", this.Usages) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + 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 + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Usages", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Usages = append(m.Usages, KeyUsage(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + 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 + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + 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 + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue 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 *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 (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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 816 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xf6, 0xfa, 0x2b, 0xf6, 0x38, 0xa4, 0xd5, 0x08, 0x55, 0x4b, 0xa4, 0xee, 0x46, 0x2b, 0x40, + 0xe1, 0xa3, 0xb3, 0xa4, 0x20, 0x88, 0x72, 0x40, 0xb0, 0xa1, 0x82, 0x88, 0x56, 0x48, 0xd3, 0x86, + 0x03, 0x42, 0xa2, 0xe3, 0xf5, 0xdb, 0xcd, 0xd4, 0xd9, 0x0f, 0x76, 0x66, 0x0d, 0xbe, 0xf5, 0x27, + 0x70, 0xe4, 0x82, 0xc4, 0x2f, 0xe1, 0x1c, 0x0e, 0x48, 0x3d, 0xf6, 0x80, 0x2c, 0x62, 0xfe, 0x45, + 0x4f, 0x68, 0x66, 0xc7, 0x5e, 0x63, 0xcb, 0x75, 0xd5, 0xdc, 0xf6, 0x7d, 0xde, 0xf7, 0x79, 0xde, + 0xcf, 0x59, 0xf4, 0xd5, 0xf0, 0x50, 0x10, 0x9e, 0xfa, 0xc3, 0xa2, 0x0f, 0x79, 0x02, 0x12, 0x84, + 0x3f, 0x82, 0x64, 0x90, 0xe6, 0xbe, 0x71, 0xb0, 0x8c, 0xfb, 0x21, 0xe4, 0x92, 0x3f, 0xe2, 0x21, + 0xd3, 0xee, 0x83, 0x3e, 0x48, 0x76, 0xe0, 0x47, 0x90, 0x40, 0xce, 0x24, 0x0c, 0x48, 0x96, 0xa7, + 0x32, 0xc5, 0x6e, 0x49, 0x20, 0x2c, 0xe3, 0x64, 0x91, 0x40, 0x0c, 0x61, 0xf7, 0x56, 0xc4, 0xe5, + 0x59, 0xd1, 0x27, 0x61, 0x1a, 0xfb, 0x51, 0x1a, 0xa5, 0xbe, 0xe6, 0xf5, 0x8b, 0x47, 0xda, 0xd2, + 0x86, 0xfe, 0x2a, 0xf5, 0x76, 0x3f, 0xaa, 0x0a, 0x88, 0x59, 0x78, 0xc6, 0x13, 0xc8, 0xc7, 0x7e, + 0x36, 0x8c, 0x14, 0x20, 0xfc, 0x18, 0x24, 0xf3, 0x47, 0x2b, 0x55, 0xec, 0xfa, 0xeb, 0x58, 0x79, + 0x91, 0x48, 0x1e, 0xc3, 0x0a, 0xe1, 0xe3, 0x4d, 0x04, 0x11, 0x9e, 0x41, 0xcc, 0x56, 0x78, 0x1f, + 0xae, 0xe3, 0x15, 0x92, 0x9f, 0xfb, 0x3c, 0x91, 0x42, 0xe6, 0xcb, 0x24, 0xef, 0xcf, 0x3a, 0x7a, + 0xe3, 0xb8, 0x9a, 0xcd, 0x7d, 0x1e, 0x25, 0x3c, 0x89, 0x28, 0xfc, 0x58, 0x80, 0x90, 0xf8, 0x21, + 0xea, 0xa8, 0xb6, 0x06, 0x4c, 0x32, 0xdb, 0xda, 0xb3, 0xf6, 0x7b, 0xb7, 0x3f, 0x20, 0xd5, 0x50, + 0xe7, 0x59, 0x48, 0x36, 0x8c, 0x14, 0x20, 0x88, 0x8a, 0x26, 0xa3, 0x03, 0xf2, 0x4d, 0xff, 0x31, + 0x84, 0xf2, 0x1e, 0x48, 0x16, 0xe0, 0x8b, 0x89, 0x5b, 0x9b, 0x4e, 0x5c, 0x54, 0x61, 0x74, 0xae, + 0x8a, 0x1f, 0xa2, 0xa6, 0xc8, 0x20, 0xb4, 0xeb, 0x5a, 0xfd, 0x53, 0xb2, 0x61, 0x65, 0x64, 0x6d, + 0xad, 0xf7, 0x33, 0x08, 0x83, 0x6d, 0x93, 0xab, 0xa9, 0x2c, 0xaa, 0x95, 0xf1, 0x19, 0x6a, 0x0b, + 0xc9, 0x64, 0x21, 0xec, 0x86, 0xce, 0xf1, 0xd9, 0x15, 0x72, 0x68, 0x9d, 0x60, 0xc7, 0x64, 0x69, + 0x97, 0x36, 0x35, 0xfa, 0xde, 0x6f, 0x75, 0xe4, 0xad, 0xe5, 0x1e, 0xa7, 0xc9, 0x80, 0x4b, 0x9e, + 0x26, 0xf8, 0x10, 0x35, 0xe5, 0x38, 0x03, 0x3d, 0xd0, 0x6e, 0xf0, 0xe6, 0xac, 0xe4, 0x07, 0xe3, + 0x0c, 0x9e, 0x4f, 0xdc, 0xd7, 0x97, 0xe3, 0x15, 0x4e, 0x35, 0x03, 0xbf, 0x8d, 0xda, 0x39, 0x30, + 0x91, 0x26, 0x7a, 0x5c, 0xdd, 0xaa, 0x10, 0xaa, 0x51, 0x6a, 0xbc, 0xf8, 0x1d, 0xb4, 0x15, 0x83, + 0x10, 0x2c, 0x02, 0xdd, 0x73, 0x37, 0xb8, 0x66, 0x02, 0xb7, 0xee, 0x95, 0x30, 0x9d, 0xf9, 0xf1, + 0x63, 0xb4, 0x73, 0xce, 0x84, 0x3c, 0xcd, 0x06, 0x4c, 0xc2, 0x03, 0x1e, 0x83, 0xdd, 0xd4, 0x53, + 0x7a, 0xf7, 0xe5, 0xf6, 0xac, 0x18, 0xc1, 0x0d, 0xa3, 0xbe, 0x73, 0xf7, 0x7f, 0x4a, 0x74, 0x49, + 0xd9, 0x9b, 0x58, 0xe8, 0xe6, 0xda, 0xf9, 0xdc, 0xe5, 0x42, 0xe2, 0xef, 0x57, 0xee, 0x8d, 0xbc, + 0x5c, 0x1d, 0x8a, 0xad, 0xaf, 0xed, 0xba, 0xa9, 0xa5, 0x33, 0x43, 0x16, 0x6e, 0xed, 0x07, 0xd4, + 0xe2, 0x12, 0x62, 0x61, 0xd7, 0xf7, 0x1a, 0xfb, 0xbd, 0xdb, 0x47, 0xaf, 0x7e, 0x08, 0xc1, 0x6b, + 0x26, 0x4d, 0xeb, 0x44, 0x09, 0xd2, 0x52, 0xd7, 0xfb, 0xa3, 0xf1, 0x82, 0x06, 0xd5, 0x49, 0xe2, + 0xb7, 0xd0, 0x56, 0x5e, 0x9a, 0xba, 0xbf, 0xed, 0xa0, 0xa7, 0xb6, 0x62, 0x22, 0xe8, 0xcc, 0x87, + 0xdf, 0x47, 0x9d, 0x42, 0x40, 0x9e, 0xb0, 0x18, 0xcc, 0xaa, 0xe7, 0x7d, 0x9d, 0x1a, 0x9c, 0xce, + 0x23, 0xf0, 0x4d, 0xd4, 0x28, 0xf8, 0xc0, 0xac, 0xba, 0x67, 0x02, 0x1b, 0xa7, 0x27, 0x5f, 0x50, + 0x85, 0x63, 0x0f, 0xb5, 0xa3, 0x3c, 0x2d, 0x32, 0x61, 0x37, 0xf7, 0x1a, 0xfb, 0xdd, 0x00, 0xa9, + 0x8b, 0xf9, 0x52, 0x23, 0xd4, 0x78, 0x30, 0x41, 0xed, 0x42, 0xdd, 0x83, 0xb0, 0x5b, 0x3a, 0xe6, + 0x86, 0x8a, 0x39, 0xd5, 0xc8, 0xf3, 0x89, 0xdb, 0xf9, 0x1a, 0xc6, 0xda, 0xa0, 0x26, 0x0a, 0x27, + 0xa8, 0x05, 0x3f, 0xcb, 0x9c, 0xd9, 0x6d, 0x3d, 0xca, 0x93, 0xab, 0xbd, 0x5b, 0x72, 0x47, 0x69, + 0xdd, 0x49, 0x64, 0x3e, 0xae, 0x26, 0xab, 0x31, 0x5a, 0xa6, 0xd9, 0x05, 0x84, 0xaa, 0x18, 0x7c, + 0x1d, 0x35, 0x86, 0x30, 0x2e, 0x1f, 0x10, 0x55, 0x9f, 0xf8, 0x73, 0xd4, 0x1a, 0xb1, 0xf3, 0x02, + 0xcc, 0x7f, 0xe4, 0xbd, 0x8d, 0xf5, 0x68, 0xb5, 0x6f, 0x15, 0x85, 0x96, 0xcc, 0xa3, 0xfa, 0xa1, + 0xe5, 0xfd, 0x65, 0x21, 0x77, 0xc3, 0xeb, 0xc7, 0x3f, 0x21, 0x14, 0xce, 0xde, 0xa6, 0xb0, 0x2d, + 0xdd, 0xff, 0xf1, 0xab, 0xf7, 0x3f, 0x7f, 0xe7, 0xd5, 0x8f, 0x72, 0x0e, 0x09, 0xba, 0x90, 0x0a, + 0x1f, 0xa0, 0xde, 0x82, 0xb4, 0xee, 0x74, 0x3b, 0xb8, 0x36, 0x9d, 0xb8, 0xbd, 0x05, 0x71, 0xba, + 0x18, 0xe3, 0x7d, 0x62, 0xc6, 0xa6, 0x1b, 0xc5, 0xee, 0xec, 0xfe, 0x2d, 0xbd, 0xe3, 0xee, 0xf2, + 0xfd, 0x1e, 0x75, 0x7e, 0xfd, 0xdd, 0xad, 0x3d, 0xf9, 0x7b, 0xaf, 0x16, 0xdc, 0xba, 0xb8, 0x74, + 0x6a, 0x4f, 0x2f, 0x9d, 0xda, 0xb3, 0x4b, 0xa7, 0xf6, 0x64, 0xea, 0x58, 0x17, 0x53, 0xc7, 0x7a, + 0x3a, 0x75, 0xac, 0x67, 0x53, 0xc7, 0xfa, 0x67, 0xea, 0x58, 0xbf, 0xfc, 0xeb, 0xd4, 0xbe, 0xdb, + 0x32, 0xdd, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x73, 0x7d, 0xca, 0x2a, 0xb4, 0x07, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.proto b/vendor/k8s.io/api/certificates/v1beta1/generated.proto new file mode 100644 index 0000000000..e90f4f9cc3 --- /dev/null +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.proto @@ -0,0 +1,122 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.certificates.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// Describes a certificate signing request +message CertificateSigningRequest { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The certificate request itself and any additional information. + // +optional + optional CertificateSigningRequestSpec spec = 2; + + // Derived information about the request. + // +optional + optional CertificateSigningRequestStatus status = 3; +} + +message CertificateSigningRequestCondition { + // request approval state, currently Approved or Denied. + optional string type = 1; + + // brief reason for the request state + // +optional + optional string reason = 2; + + // human readable message with details about the request state + // +optional + optional string message = 3; + + // timestamp for the last update to this condition + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 4; +} + +message CertificateSigningRequestList { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated CertificateSigningRequest items = 2; +} + +// This information is immutable after the request is created. Only the Request +// and Usages 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; + + // allowedUsages specifies a set of usage contexts the key will be + // valid for. + // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 + // https://tools.ietf.org/html/rfc5280#section-4.2.1.12 + repeated string usages = 5; + + // Information about the requesting user. + // See user.Info interface for details. + // +optional + optional string username = 2; + + // UID information about the requesting user. + // See user.Info interface for details. + // +optional + optional string uid = 3; + + // Group information about the requesting user. + // See user.Info interface for details. + // +optional + repeated string groups = 4; + + // Extra information about the requesting user. + // See user.Info interface for details. + // +optional + map extra = 6; +} + +message CertificateSigningRequestStatus { + // Conditions applied to the request, such as approval or denial. + // +optional + repeated CertificateSigningRequestCondition conditions = 1; + + // If request was approved, the controller will place the issued certificate here. + // +optional + optional bytes certificate = 2; +} + +// 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; +} + diff --git a/vendor/k8s.io/api/certificates/v1beta1/register.go b/vendor/k8s.io/api/certificates/v1beta1/register.go new file mode 100644 index 0000000000..b5ba3d7eca --- /dev/null +++ b/vendor/k8s.io/api/certificates/v1beta1/register.go @@ -0,0 +1,59 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &CertificateSigningRequest{}, + &CertificateSigningRequestList{}, + ) + + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/certificates/v1beta1/types.go b/vendor/k8s.io/api/certificates/v1beta1/types.go new file mode 100644 index 0000000000..cc33043ee4 --- /dev/null +++ b/vendor/k8s.io/api/certificates/v1beta1/types.go @@ -0,0 +1,155 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Describes a certificate signing request +type CertificateSigningRequest struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The certificate request itself and any additional information. + // +optional + Spec CertificateSigningRequestSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Derived information about the request. + // +optional + Status CertificateSigningRequestStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// This information is immutable after the request is created. Only the Request +// and Usages 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"` + + // allowedUsages specifies a set of usage contexts the key will be + // valid for. + // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 + // https://tools.ietf.org/html/rfc5280#section-4.2.1.12 + Usages []KeyUsage `json:"usages,omitempty" protobuf:"bytes,5,opt,name=usages"` + + // Information about the requesting user. + // See user.Info interface for details. + // +optional + Username string `json:"username,omitempty" protobuf:"bytes,2,opt,name=username"` + // UID information about the requesting user. + // See user.Info interface for details. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,3,opt,name=uid"` + // Group information about the requesting user. + // See user.Info interface for details. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,4,rep,name=groups"` + // Extra information about the requesting user. + // See user.Info interface for details. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,6,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)) +} + +type CertificateSigningRequestStatus struct { + // Conditions applied to the request, such as approval or denial. + // +optional + Conditions []CertificateSigningRequestCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"` + + // If request was approved, the controller will place the issued certificate here. + // +optional + 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 + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` + // human readable message with details about the request state + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // timestamp for the last update to this condition + // +optional + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,4,opt,name=lastUpdateTime"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +type CertificateSigningRequestList struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + Items []CertificateSigningRequest `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// KeyUsages specifies valid usage contexts for keys. +// See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 +// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 +type KeyUsage string + +const ( + UsageSigning KeyUsage = "signing" + UsageDigitalSignature KeyUsage = "digital signature" + UsageContentCommittment KeyUsage = "content committment" + UsageKeyEncipherment KeyUsage = "key encipherment" + UsageKeyAgreement KeyUsage = "key agreement" + UsageDataEncipherment KeyUsage = "data encipherment" + UsageCertSign KeyUsage = "cert sign" + UsageCRLSign KeyUsage = "crl sign" + UsageEncipherOnly KeyUsage = "encipher only" + UsageDecipherOnly KeyUsage = "decipher only" + UsageAny KeyUsage = "any" + UsageServerAuth KeyUsage = "server auth" + UsageClientAuth KeyUsage = "client auth" + UsageCodeSigning KeyUsage = "code signing" + UsageEmailProtection KeyUsage = "email protection" + UsageSMIME KeyUsage = "s/mime" + UsageIPsecEndSystem KeyUsage = "ipsec end system" + UsageIPsecTunnel KeyUsage = "ipsec tunnel" + UsageIPsecUser KeyUsage = "ipsec user" + UsageTimestamping KeyUsage = "timestamping" + UsageOCSPSigning KeyUsage = "ocsp signing" + UsageMicrosoftSGC KeyUsage = "microsoft sgc" + UsageNetscapSGC KeyUsage = "netscape sgc" +) diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/certificates/v1beta1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/certificates/v1beta1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..6ecc131181 --- /dev/null +++ b/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,207 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CertificateSigningRequest).DeepCopyInto(out.(*CertificateSigningRequest)) + return nil + }, InType: reflect.TypeOf(&CertificateSigningRequest{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CertificateSigningRequestCondition).DeepCopyInto(out.(*CertificateSigningRequestCondition)) + return nil + }, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CertificateSigningRequestList).DeepCopyInto(out.(*CertificateSigningRequestList)) + return nil + }, InType: reflect.TypeOf(&CertificateSigningRequestList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CertificateSigningRequestSpec).DeepCopyInto(out.(*CertificateSigningRequestSpec)) + return nil + }, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CertificateSigningRequestStatus).DeepCopyInto(out.(*CertificateSigningRequestStatus)) + return nil + }, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateSigningRequest) DeepCopyInto(out *CertificateSigningRequest) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateSigningRequest. +func (in *CertificateSigningRequest) DeepCopy() *CertificateSigningRequest { + if in == nil { + return nil + } + out := new(CertificateSigningRequest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CertificateSigningRequest) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateSigningRequestCondition) DeepCopyInto(out *CertificateSigningRequestCondition) { + *out = *in + in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateSigningRequestCondition. +func (in *CertificateSigningRequestCondition) DeepCopy() *CertificateSigningRequestCondition { + if in == nil { + return nil + } + out := new(CertificateSigningRequestCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateSigningRequestList) DeepCopyInto(out *CertificateSigningRequestList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateSigningRequestList. +func (in *CertificateSigningRequestList) DeepCopy() *CertificateSigningRequestList { + if in == nil { + return nil + } + out := new(CertificateSigningRequestList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CertificateSigningRequestList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateSigningRequestSpec) DeepCopyInto(out *CertificateSigningRequestSpec) { + *out = *in + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]byte, len(*in)) + copy(*out, *in) + } + if in.Usages != nil { + in, out := &in.Usages, &out.Usages + *out = make([]KeyUsage, len(*in)) + copy(*out, *in) + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + (*out)[key] = make(ExtraValue, len(val)) + copy((*out)[key], val) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateSigningRequestSpec. +func (in *CertificateSigningRequestSpec) DeepCopy() *CertificateSigningRequestSpec { + if in == nil { + return nil + } + out := new(CertificateSigningRequestSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CertificateSigningRequestStatus) DeepCopyInto(out *CertificateSigningRequestStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CertificateSigningRequestCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Certificate != nil { + in, out := &in.Certificate, &out.Certificate + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertificateSigningRequestStatus. +func (in *CertificateSigningRequestStatus) DeepCopy() *CertificateSigningRequestStatus { + if in == nil { + return nil + } + out := new(CertificateSigningRequestStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/core/OWNERS b/vendor/k8s.io/api/core/OWNERS new file mode 100644 index 0000000000..7009d88bf1 --- /dev/null +++ b/vendor/k8s.io/api/core/OWNERS @@ -0,0 +1,42 @@ +approvers: +- erictune +- lavalamp +- smarterclayton +- thockin +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- yujuhong +- brendandburns +- derekwaynecarr +- caesarxuchao +- vishh +- mikedanese +- liggitt +- nikhiljindal +- gmarek +- erictune +- davidopp +- pmorie +- sttts +- dchen1107 +- saad-ali +- zmerlynn +- luxas +- janetkuo +- justinsb +- pwittrock +- roberthbailey +- ncdc +- tallclair +- yifan-gu +- eparis +- mwielgus +- timothysc +- soltysh +- piosz +- jsafrane +- jbeda diff --git a/vendor/k8s.io/api/core/v1/BUILD b/vendor/k8s.io/api/core/v1/BUILD new file mode 100644 index 0000000000..bc5e9549e9 --- /dev/null +++ b/vendor/k8s.io/api/core/v1/BUILD @@ -0,0 +1,64 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "taint_test.go", + "toleration_test.go", + ], + library = ":go_default_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "annotation_key_constants.go", + "doc.go", + "generated.pb.go", + "meta.go", + "objectreference.go", + "register.go", + "resource.go", + "taint.go", + "toleration.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/core/v1/annotation_key_constants.go b/vendor/k8s.io/api/core/v1/annotation_key_constants.go new file mode 100644 index 0000000000..e623913fdd --- /dev/null +++ b/vendor/k8s.io/api/core/v1/annotation_key_constants.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 should be consistent with pkg/api/annotation_key_constants.go. + +package v1 + +const ( + // ImagePolicyFailedOpenKey is added to pods created by failing open when the image policy + // webhook backend fails. + ImagePolicyFailedOpenKey string = "alpha.image-policy.k8s.io/failed-open" + + // PodPresetOptOutAnnotationKey represents the annotation key for a pod to exempt itself from pod preset manipulation + PodPresetOptOutAnnotationKey string = "podpreset.admission.kubernetes.io/exclude" + + // MirrorAnnotationKey represents the annotation key set by kubelets when creating mirror pods + MirrorPodAnnotationKey string = "kubernetes.io/config.mirror" + + // 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. + // This field is deprecated in favor of ControllerRef (see #44407). + // TODO(#50720): Remove this field in v1.9. + 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" + + // ObjectTTLAnnotations represents a suggestion for kubelet for how long it can cache + // an object (e.g. secret, config map) before fetching it again from apiserver. + // This annotation can be attached to node. + ObjectTTLAnnotationKey string = "node.alpha.kubernetes.io/ttl" + + // annotation key prefix used to identify non-convertible json paths. + NonConvertibleAnnotationPrefix = "non-convertible.kubernetes.io" + + kubectlPrefix = "kubectl.kubernetes.io/" + + // LastAppliedConfigAnnotation is the annotation used to store the previous + // configuration of a resource for use in a three way diff by UpdateApplyAnnotation. + LastAppliedConfigAnnotation = kubectlPrefix + "last-applied-configuration" + + // AnnotationLoadBalancerSourceRangesKey is the key of the annotation on a service to set allowed ingress ranges on their LoadBalancers + // + // It should be a comma-separated list of CIDRs, e.g. `0.0.0.0/0` to + // allow full access (the default) or `18.0.0.0/8,56.0.0.0/8` to allow + // access only from the CIDRs currently allocated to MIT & the USPS. + // + // Not all cloud providers support this annotation, though AWS & GCE do. + AnnotationLoadBalancerSourceRangesKey = "service.beta.kubernetes.io/load-balancer-source-ranges" +) diff --git a/vendor/k8s.io/api/core/v1/doc.go b/vendor/k8s.io/api/core/v1/doc.go new file mode 100644 index 0000000000..a31af9ea49 --- /dev/null +++ b/vendor/k8s.io/api/core/v1/doc.go @@ -0,0 +1,21 @@ +/* +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:openapi-gen=true +// +k8s:deepcopy-gen=package,register + +// Package v1 is the v1 version of the core API. +package v1 // import "k8s.io/api/core/v1" diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go new file mode 100644 index 0000000000..6db917375e --- /dev/null +++ b/vendor/k8s.io/api/core/v1/generated.pb.go @@ -0,0 +1,47081 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/core/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/core/v1/generated.proto + + It has these top-level messages: + AWSElasticBlockStoreVolumeSource + Affinity + AttachedVolume + AvoidPods + AzureDiskVolumeSource + AzureFilePersistentVolumeSource + AzureFileVolumeSource + Binding + Capabilities + CephFSPersistentVolumeSource + CephFSVolumeSource + CinderVolumeSource + ClientIPConfig + ComponentCondition + ComponentStatus + ComponentStatusList + ConfigMap + ConfigMapEnvSource + ConfigMapKeySelector + ConfigMapList + ConfigMapProjection + ConfigMapVolumeSource + Container + ContainerImage + ContainerPort + ContainerState + ContainerStateRunning + ContainerStateTerminated + ContainerStateWaiting + ContainerStatus + DaemonEndpoint + DeleteOptions + DownwardAPIProjection + DownwardAPIVolumeFile + DownwardAPIVolumeSource + EmptyDirVolumeSource + EndpointAddress + EndpointPort + EndpointSubset + Endpoints + EndpointsList + EnvFromSource + EnvVar + EnvVarSource + Event + EventList + EventSource + ExecAction + FCVolumeSource + FlexVolumeSource + FlockerVolumeSource + GCEPersistentDiskVolumeSource + GitRepoVolumeSource + GlusterfsVolumeSource + HTTPGetAction + HTTPHeader + Handler + HostAlias + HostPathVolumeSource + ISCSIVolumeSource + KeyToPath + Lifecycle + LimitRange + LimitRangeItem + LimitRangeList + LimitRangeSpec + List + ListOptions + LoadBalancerIngress + LoadBalancerStatus + LocalObjectReference + LocalVolumeSource + NFSVolumeSource + Namespace + NamespaceList + NamespaceSpec + NamespaceStatus + Node + NodeAddress + NodeAffinity + NodeCondition + NodeConfigSource + NodeDaemonEndpoints + NodeList + NodeProxyOptions + NodeResources + NodeSelector + NodeSelectorRequirement + NodeSelectorTerm + NodeSpec + NodeStatus + NodeSystemInfo + ObjectFieldSelector + ObjectMeta + ObjectReference + PersistentVolume + PersistentVolumeClaim + PersistentVolumeClaimCondition + PersistentVolumeClaimList + PersistentVolumeClaimSpec + PersistentVolumeClaimStatus + PersistentVolumeClaimVolumeSource + PersistentVolumeList + PersistentVolumeSource + PersistentVolumeSpec + PersistentVolumeStatus + PhotonPersistentDiskVolumeSource + Pod + PodAffinity + PodAffinityTerm + PodAntiAffinity + PodAttachOptions + PodCondition + PodExecOptions + PodList + PodLogOptions + PodPortForwardOptions + PodProxyOptions + PodSecurityContext + PodSignature + PodSpec + PodStatus + PodStatusResult + PodTemplate + PodTemplateList + PodTemplateSpec + PortworxVolumeSource + Preconditions + PreferAvoidPodsEntry + PreferredSchedulingTerm + Probe + ProjectedVolumeSource + QuobyteVolumeSource + RBDVolumeSource + RangeAllocation + ReplicationController + ReplicationControllerCondition + ReplicationControllerList + ReplicationControllerSpec + ReplicationControllerStatus + ResourceFieldSelector + ResourceQuota + ResourceQuotaList + ResourceQuotaSpec + ResourceQuotaStatus + ResourceRequirements + SELinuxOptions + ScaleIOVolumeSource + Secret + SecretEnvSource + SecretKeySelector + SecretList + SecretProjection + SecretReference + SecretVolumeSource + SecurityContext + SerializedReference + Service + ServiceAccount + ServiceAccountList + ServiceList + ServicePort + ServiceProxyOptions + ServiceSpec + ServiceStatus + SessionAffinityConfig + StorageOSPersistentVolumeSource + StorageOSVolumeSource + Sysctl + TCPSocketAction + Taint + Toleration + Volume + VolumeMount + VolumeProjection + VolumeSource + VsphereVirtualDiskVolumeSource + WeightedPodAffinityTerm +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_api_resource "k8s.io/apimachinery/pkg/api/resource" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" +import k8s_io_apimachinery_pkg_runtime "k8s.io/apimachinery/pkg/runtime" + +import k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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 *AzureFilePersistentVolumeSource) Reset() { *m = AzureFilePersistentVolumeSource{} } +func (*AzureFilePersistentVolumeSource) ProtoMessage() {} +func (*AzureFilePersistentVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *AzureFileVolumeSource) Reset() { *m = AzureFileVolumeSource{} } +func (*AzureFileVolumeSource) ProtoMessage() {} +func (*AzureFileVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *Binding) Reset() { *m = Binding{} } +func (*Binding) ProtoMessage() {} +func (*Binding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *Capabilities) Reset() { *m = Capabilities{} } +func (*Capabilities) ProtoMessage() {} +func (*Capabilities) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *CephFSPersistentVolumeSource) Reset() { *m = CephFSPersistentVolumeSource{} } +func (*CephFSPersistentVolumeSource) ProtoMessage() {} +func (*CephFSPersistentVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{9} +} + +func (m *CephFSVolumeSource) Reset() { *m = CephFSVolumeSource{} } +func (*CephFSVolumeSource) ProtoMessage() {} +func (*CephFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *CinderVolumeSource) Reset() { *m = CinderVolumeSource{} } +func (*CinderVolumeSource) ProtoMessage() {} +func (*CinderVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ClientIPConfig) Reset() { *m = ClientIPConfig{} } +func (*ClientIPConfig) ProtoMessage() {} +func (*ClientIPConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ComponentCondition) Reset() { *m = ComponentCondition{} } +func (*ComponentCondition) ProtoMessage() {} +func (*ComponentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *ComponentStatus) Reset() { *m = ComponentStatus{} } +func (*ComponentStatus) ProtoMessage() {} +func (*ComponentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *ComponentStatusList) Reset() { *m = ComponentStatusList{} } +func (*ComponentStatusList) ProtoMessage() {} +func (*ComponentStatusList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ConfigMap) Reset() { *m = ConfigMap{} } +func (*ConfigMap) ProtoMessage() {} +func (*ConfigMap) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *ConfigMapEnvSource) Reset() { *m = ConfigMapEnvSource{} } +func (*ConfigMapEnvSource) ProtoMessage() {} +func (*ConfigMapEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *ConfigMapKeySelector) Reset() { *m = ConfigMapKeySelector{} } +func (*ConfigMapKeySelector) ProtoMessage() {} +func (*ConfigMapKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *ConfigMapList) Reset() { *m = ConfigMapList{} } +func (*ConfigMapList) ProtoMessage() {} +func (*ConfigMapList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *ConfigMapProjection) Reset() { *m = ConfigMapProjection{} } +func (*ConfigMapProjection) ProtoMessage() {} +func (*ConfigMapProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *ConfigMapVolumeSource) Reset() { *m = ConfigMapVolumeSource{} } +func (*ConfigMapVolumeSource) ProtoMessage() {} +func (*ConfigMapVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *Container) Reset() { *m = Container{} } +func (*Container) ProtoMessage() {} +func (*Container) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *ContainerImage) Reset() { *m = ContainerImage{} } +func (*ContainerImage) ProtoMessage() {} +func (*ContainerImage) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *ContainerPort) Reset() { *m = ContainerPort{} } +func (*ContainerPort) ProtoMessage() {} +func (*ContainerPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *ContainerState) Reset() { *m = ContainerState{} } +func (*ContainerState) ProtoMessage() {} +func (*ContainerState) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *ContainerStateRunning) Reset() { *m = ContainerStateRunning{} } +func (*ContainerStateRunning) ProtoMessage() {} +func (*ContainerStateRunning) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *ContainerStateTerminated) Reset() { *m = ContainerStateTerminated{} } +func (*ContainerStateTerminated) ProtoMessage() {} +func (*ContainerStateTerminated) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{27} +} + +func (m *ContainerStateWaiting) Reset() { *m = ContainerStateWaiting{} } +func (*ContainerStateWaiting) ProtoMessage() {} +func (*ContainerStateWaiting) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } + +func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } +func (*ContainerStatus) ProtoMessage() {} +func (*ContainerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *DaemonEndpoint) Reset() { *m = DaemonEndpoint{} } +func (*DaemonEndpoint) ProtoMessage() {} +func (*DaemonEndpoint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *DeleteOptions) Reset() { *m = DeleteOptions{} } +func (*DeleteOptions) ProtoMessage() {} +func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } + +func (m *DownwardAPIProjection) Reset() { *m = DownwardAPIProjection{} } +func (*DownwardAPIProjection) ProtoMessage() {} +func (*DownwardAPIProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *DownwardAPIVolumeFile) Reset() { *m = DownwardAPIVolumeFile{} } +func (*DownwardAPIVolumeFile) ProtoMessage() {} +func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } + +func (m *DownwardAPIVolumeSource) Reset() { *m = DownwardAPIVolumeSource{} } +func (*DownwardAPIVolumeSource) ProtoMessage() {} +func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{34} +} + +func (m *EmptyDirVolumeSource) Reset() { *m = EmptyDirVolumeSource{} } +func (*EmptyDirVolumeSource) ProtoMessage() {} +func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *EndpointAddress) Reset() { *m = EndpointAddress{} } +func (*EndpointAddress) ProtoMessage() {} +func (*EndpointAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } + +func (m *EndpointPort) Reset() { *m = EndpointPort{} } +func (*EndpointPort) ProtoMessage() {} +func (*EndpointPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } + +func (m *EndpointSubset) Reset() { *m = EndpointSubset{} } +func (*EndpointSubset) ProtoMessage() {} +func (*EndpointSubset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } + +func (m *Endpoints) Reset() { *m = Endpoints{} } +func (*Endpoints) ProtoMessage() {} +func (*Endpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } + +func (m *EndpointsList) Reset() { *m = EndpointsList{} } +func (*EndpointsList) ProtoMessage() {} +func (*EndpointsList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } + +func (m *EnvFromSource) Reset() { *m = EnvFromSource{} } +func (*EnvFromSource) ProtoMessage() {} +func (*EnvFromSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } + +func (m *EnvVar) Reset() { *m = EnvVar{} } +func (*EnvVar) ProtoMessage() {} +func (*EnvVar) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } + +func (m *EnvVarSource) Reset() { *m = EnvVarSource{} } +func (*EnvVarSource) ProtoMessage() {} +func (*EnvVarSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } + +func (m *Event) Reset() { *m = Event{} } +func (*Event) ProtoMessage() {} +func (*Event) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } + +func (m *EventList) Reset() { *m = EventList{} } +func (*EventList) ProtoMessage() {} +func (*EventList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } + +func (m *EventSource) Reset() { *m = EventSource{} } +func (*EventSource) ProtoMessage() {} +func (*EventSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } + +func (m *ExecAction) Reset() { *m = ExecAction{} } +func (*ExecAction) ProtoMessage() {} +func (*ExecAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{47} } + +func (m *FCVolumeSource) Reset() { *m = FCVolumeSource{} } +func (*FCVolumeSource) ProtoMessage() {} +func (*FCVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{48} } + +func (m *FlexVolumeSource) Reset() { *m = FlexVolumeSource{} } +func (*FlexVolumeSource) ProtoMessage() {} +func (*FlexVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } + +func (m *FlockerVolumeSource) Reset() { *m = FlockerVolumeSource{} } +func (*FlockerVolumeSource) ProtoMessage() {} +func (*FlockerVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{50} } + +func (m *GCEPersistentDiskVolumeSource) Reset() { *m = GCEPersistentDiskVolumeSource{} } +func (*GCEPersistentDiskVolumeSource) ProtoMessage() {} +func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{51} +} + +func (m *GitRepoVolumeSource) Reset() { *m = GitRepoVolumeSource{} } +func (*GitRepoVolumeSource) ProtoMessage() {} +func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } + +func (m *GlusterfsVolumeSource) Reset() { *m = GlusterfsVolumeSource{} } +func (*GlusterfsVolumeSource) ProtoMessage() {} +func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } + +func (m *HTTPGetAction) Reset() { *m = HTTPGetAction{} } +func (*HTTPGetAction) ProtoMessage() {} +func (*HTTPGetAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } + +func (m *HTTPHeader) Reset() { *m = HTTPHeader{} } +func (*HTTPHeader) ProtoMessage() {} +func (*HTTPHeader) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } + +func (m *Handler) Reset() { *m = Handler{} } +func (*Handler) ProtoMessage() {} +func (*Handler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{56} } + +func (m *HostAlias) Reset() { *m = HostAlias{} } +func (*HostAlias) ProtoMessage() {} +func (*HostAlias) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } + +func (m *HostPathVolumeSource) Reset() { *m = HostPathVolumeSource{} } +func (*HostPathVolumeSource) ProtoMessage() {} +func (*HostPathVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{58} } + +func (m *ISCSIVolumeSource) Reset() { *m = ISCSIVolumeSource{} } +func (*ISCSIVolumeSource) ProtoMessage() {} +func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{59} } + +func (m *KeyToPath) Reset() { *m = KeyToPath{} } +func (*KeyToPath) ProtoMessage() {} +func (*KeyToPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } + +func (m *Lifecycle) Reset() { *m = Lifecycle{} } +func (*Lifecycle) ProtoMessage() {} +func (*Lifecycle) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{61} } + +func (m *LimitRange) Reset() { *m = LimitRange{} } +func (*LimitRange) ProtoMessage() {} +func (*LimitRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{62} } + +func (m *LimitRangeItem) Reset() { *m = LimitRangeItem{} } +func (*LimitRangeItem) ProtoMessage() {} +func (*LimitRangeItem) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{63} } + +func (m *LimitRangeList) Reset() { *m = LimitRangeList{} } +func (*LimitRangeList) ProtoMessage() {} +func (*LimitRangeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{64} } + +func (m *LimitRangeSpec) Reset() { *m = LimitRangeSpec{} } +func (*LimitRangeSpec) ProtoMessage() {} +func (*LimitRangeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{65} } + +func (m *List) Reset() { *m = List{} } +func (*List) ProtoMessage() {} +func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{66} } + +func (m *ListOptions) Reset() { *m = ListOptions{} } +func (*ListOptions) ProtoMessage() {} +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{67} } + +func (m *LoadBalancerIngress) Reset() { *m = LoadBalancerIngress{} } +func (*LoadBalancerIngress) ProtoMessage() {} +func (*LoadBalancerIngress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{68} } + +func (m *LoadBalancerStatus) Reset() { *m = LoadBalancerStatus{} } +func (*LoadBalancerStatus) ProtoMessage() {} +func (*LoadBalancerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{69} } + +func (m *LocalObjectReference) Reset() { *m = LocalObjectReference{} } +func (*LocalObjectReference) ProtoMessage() {} +func (*LocalObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{70} } + +func (m *LocalVolumeSource) Reset() { *m = LocalVolumeSource{} } +func (*LocalVolumeSource) ProtoMessage() {} +func (*LocalVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{71} } + +func (m *NFSVolumeSource) Reset() { *m = NFSVolumeSource{} } +func (*NFSVolumeSource) ProtoMessage() {} +func (*NFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{72} } + +func (m *Namespace) Reset() { *m = Namespace{} } +func (*Namespace) ProtoMessage() {} +func (*Namespace) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{73} } + +func (m *NamespaceList) Reset() { *m = NamespaceList{} } +func (*NamespaceList) ProtoMessage() {} +func (*NamespaceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{74} } + +func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } +func (*NamespaceSpec) ProtoMessage() {} +func (*NamespaceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{75} } + +func (m *NamespaceStatus) Reset() { *m = NamespaceStatus{} } +func (*NamespaceStatus) ProtoMessage() {} +func (*NamespaceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } + +func (m *Node) Reset() { *m = Node{} } +func (*Node) ProtoMessage() {} +func (*Node) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{77} } + +func (m *NodeAddress) Reset() { *m = NodeAddress{} } +func (*NodeAddress) ProtoMessage() {} +func (*NodeAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{78} } + +func (m *NodeAffinity) Reset() { *m = NodeAffinity{} } +func (*NodeAffinity) ProtoMessage() {} +func (*NodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } + +func (m *NodeCondition) Reset() { *m = NodeCondition{} } +func (*NodeCondition) ProtoMessage() {} +func (*NodeCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } + +func (m *NodeConfigSource) Reset() { *m = NodeConfigSource{} } +func (*NodeConfigSource) ProtoMessage() {} +func (*NodeConfigSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } + +func (m *NodeDaemonEndpoints) Reset() { *m = NodeDaemonEndpoints{} } +func (*NodeDaemonEndpoints) ProtoMessage() {} +func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } + +func (m *NodeList) Reset() { *m = NodeList{} } +func (*NodeList) ProtoMessage() {} +func (*NodeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{83} } + +func (m *NodeProxyOptions) Reset() { *m = NodeProxyOptions{} } +func (*NodeProxyOptions) ProtoMessage() {} +func (*NodeProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } + +func (m *NodeResources) Reset() { *m = NodeResources{} } +func (*NodeResources) ProtoMessage() {} +func (*NodeResources) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } + +func (m *NodeSelector) Reset() { *m = NodeSelector{} } +func (*NodeSelector) ProtoMessage() {} +func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{86} } + +func (m *NodeSelectorRequirement) Reset() { *m = NodeSelectorRequirement{} } +func (*NodeSelectorRequirement) ProtoMessage() {} +func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{87} +} + +func (m *NodeSelectorTerm) Reset() { *m = NodeSelectorTerm{} } +func (*NodeSelectorTerm) ProtoMessage() {} +func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{88} } + +func (m *NodeSpec) Reset() { *m = NodeSpec{} } +func (*NodeSpec) ProtoMessage() {} +func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{89} } + +func (m *NodeStatus) Reset() { *m = NodeStatus{} } +func (*NodeStatus) ProtoMessage() {} +func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{90} } + +func (m *NodeSystemInfo) Reset() { *m = NodeSystemInfo{} } +func (*NodeSystemInfo) ProtoMessage() {} +func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{91} } + +func (m *ObjectFieldSelector) Reset() { *m = ObjectFieldSelector{} } +func (*ObjectFieldSelector) ProtoMessage() {} +func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{92} } + +func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } +func (*ObjectMeta) ProtoMessage() {} +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{93} } + +func (m *ObjectReference) Reset() { *m = ObjectReference{} } +func (*ObjectReference) ProtoMessage() {} +func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{94} } + +func (m *PersistentVolume) Reset() { *m = PersistentVolume{} } +func (*PersistentVolume) ProtoMessage() {} +func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{95} } + +func (m *PersistentVolumeClaim) Reset() { *m = PersistentVolumeClaim{} } +func (*PersistentVolumeClaim) ProtoMessage() {} +func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{96} } + +func (m *PersistentVolumeClaimCondition) Reset() { *m = PersistentVolumeClaimCondition{} } +func (*PersistentVolumeClaimCondition) ProtoMessage() {} +func (*PersistentVolumeClaimCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{97} +} + +func (m *PersistentVolumeClaimList) Reset() { *m = PersistentVolumeClaimList{} } +func (*PersistentVolumeClaimList) ProtoMessage() {} +func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{98} +} + +func (m *PersistentVolumeClaimSpec) Reset() { *m = PersistentVolumeClaimSpec{} } +func (*PersistentVolumeClaimSpec) ProtoMessage() {} +func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{99} +} + +func (m *PersistentVolumeClaimStatus) Reset() { *m = PersistentVolumeClaimStatus{} } +func (*PersistentVolumeClaimStatus) ProtoMessage() {} +func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{100} +} + +func (m *PersistentVolumeClaimVolumeSource) Reset() { *m = PersistentVolumeClaimVolumeSource{} } +func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {} +func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{101} +} + +func (m *PersistentVolumeList) Reset() { *m = PersistentVolumeList{} } +func (*PersistentVolumeList) ProtoMessage() {} +func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{102} } + +func (m *PersistentVolumeSource) Reset() { *m = PersistentVolumeSource{} } +func (*PersistentVolumeSource) ProtoMessage() {} +func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{103} +} + +func (m *PersistentVolumeSpec) Reset() { *m = PersistentVolumeSpec{} } +func (*PersistentVolumeSpec) ProtoMessage() {} +func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{104} } + +func (m *PersistentVolumeStatus) Reset() { *m = PersistentVolumeStatus{} } +func (*PersistentVolumeStatus) ProtoMessage() {} +func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{105} +} + +func (m *PhotonPersistentDiskVolumeSource) Reset() { *m = PhotonPersistentDiskVolumeSource{} } +func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {} +func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{106} +} + +func (m *Pod) Reset() { *m = Pod{} } +func (*Pod) ProtoMessage() {} +func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } + +func (m *PodAffinity) Reset() { *m = PodAffinity{} } +func (*PodAffinity) ProtoMessage() {} +func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } + +func (m *PodAffinityTerm) Reset() { *m = PodAffinityTerm{} } +func (*PodAffinityTerm) ProtoMessage() {} +func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } + +func (m *PodAntiAffinity) Reset() { *m = PodAntiAffinity{} } +func (*PodAntiAffinity) ProtoMessage() {} +func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } + +func (m *PodAttachOptions) Reset() { *m = PodAttachOptions{} } +func (*PodAttachOptions) ProtoMessage() {} +func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } + +func (m *PodCondition) Reset() { *m = PodCondition{} } +func (*PodCondition) ProtoMessage() {} +func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } + +func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } +func (*PodExecOptions) ProtoMessage() {} +func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } + +func (m *PodList) Reset() { *m = PodList{} } +func (*PodList) ProtoMessage() {} +func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } + +func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } +func (*PodLogOptions) ProtoMessage() {} +func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } + +func (m *PodPortForwardOptions) Reset() { *m = PodPortForwardOptions{} } +func (*PodPortForwardOptions) ProtoMessage() {} +func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } + +func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } +func (*PodProxyOptions) ProtoMessage() {} +func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } + +func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } +func (*PodSecurityContext) ProtoMessage() {} +func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } + +func (m *PodSignature) Reset() { *m = PodSignature{} } +func (*PodSignature) ProtoMessage() {} +func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } + +func (m *PodSpec) Reset() { *m = PodSpec{} } +func (*PodSpec) ProtoMessage() {} +func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } + +func (m *PodStatus) Reset() { *m = PodStatus{} } +func (*PodStatus) ProtoMessage() {} +func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } + +func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } +func (*PodStatusResult) ProtoMessage() {} +func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } + +func (m *PodTemplate) Reset() { *m = PodTemplate{} } +func (*PodTemplate) ProtoMessage() {} +func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } + +func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } +func (*PodTemplateList) ProtoMessage() {} +func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{124} } + +func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } +func (*PodTemplateSpec) ProtoMessage() {} +func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } + +func (m *PortworxVolumeSource) Reset() { *m = PortworxVolumeSource{} } +func (*PortworxVolumeSource) ProtoMessage() {} +func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } + +func (m *Preconditions) Reset() { *m = Preconditions{} } +func (*Preconditions) ProtoMessage() {} +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } + +func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } +func (*PreferAvoidPodsEntry) ProtoMessage() {} +func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } + +func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } +func (*PreferredSchedulingTerm) ProtoMessage() {} +func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{129} +} + +func (m *Probe) Reset() { *m = Probe{} } +func (*Probe) ProtoMessage() {} +func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } + +func (m *ProjectedVolumeSource) Reset() { *m = ProjectedVolumeSource{} } +func (*ProjectedVolumeSource) ProtoMessage() {} +func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } + +func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } +func (*QuobyteVolumeSource) ProtoMessage() {} +func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } + +func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } +func (*RBDVolumeSource) ProtoMessage() {} +func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } + +func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } +func (*RangeAllocation) ProtoMessage() {} +func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } + +func (m *ReplicationController) Reset() { *m = ReplicationController{} } +func (*ReplicationController) ProtoMessage() {} +func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{135} } + +func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } +func (*ReplicationControllerCondition) ProtoMessage() {} +func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{136} +} + +func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } +func (*ReplicationControllerList) ProtoMessage() {} +func (*ReplicationControllerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{137} +} + +func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } +func (*ReplicationControllerSpec) ProtoMessage() {} +func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{138} +} + +func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } +func (*ReplicationControllerStatus) ProtoMessage() {} +func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{139} +} + +func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } +func (*ResourceFieldSelector) ProtoMessage() {} +func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } + +func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } +func (*ResourceQuota) ProtoMessage() {} +func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } + +func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } +func (*ResourceQuotaList) ProtoMessage() {} +func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } + +func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } +func (*ResourceQuotaSpec) ProtoMessage() {} +func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } + +func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } +func (*ResourceQuotaStatus) ProtoMessage() {} +func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } + +func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } +func (*ResourceRequirements) ProtoMessage() {} +func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } + +func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } +func (*SELinuxOptions) ProtoMessage() {} +func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } + +func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } +func (*ScaleIOVolumeSource) ProtoMessage() {} +func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } + +func (m *Secret) Reset() { *m = Secret{} } +func (*Secret) ProtoMessage() {} +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } + +func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } +func (*SecretEnvSource) ProtoMessage() {} +func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } + +func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } +func (*SecretKeySelector) ProtoMessage() {} +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } + +func (m *SecretList) Reset() { *m = SecretList{} } +func (*SecretList) ProtoMessage() {} +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } + +func (m *SecretProjection) Reset() { *m = SecretProjection{} } +func (*SecretProjection) ProtoMessage() {} +func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } + +func (m *SecretReference) Reset() { *m = SecretReference{} } +func (*SecretReference) ProtoMessage() {} +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } + +func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } +func (*SecretVolumeSource) ProtoMessage() {} +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } + +func (m *SecurityContext) Reset() { *m = SecurityContext{} } +func (*SecurityContext) ProtoMessage() {} +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } + +func (m *SerializedReference) Reset() { *m = SerializedReference{} } +func (*SerializedReference) ProtoMessage() {} +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } + +func (m *Service) Reset() { *m = Service{} } +func (*Service) ProtoMessage() {} +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } + +func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } +func (*ServiceAccount) ProtoMessage() {} +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } + +func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } +func (*ServiceAccountList) ProtoMessage() {} +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } + +func (m *ServiceList) Reset() { *m = ServiceList{} } +func (*ServiceList) ProtoMessage() {} +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } + +func (m *ServicePort) Reset() { *m = ServicePort{} } +func (*ServicePort) ProtoMessage() {} +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } + +func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } +func (*ServiceProxyOptions) ProtoMessage() {} +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } + +func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } +func (*ServiceSpec) ProtoMessage() {} +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } + +func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } +func (*ServiceStatus) ProtoMessage() {} +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } + +func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } +func (*SessionAffinityConfig) ProtoMessage() {} +func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } + +func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } +func (*StorageOSPersistentVolumeSource) ProtoMessage() {} +func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{166} +} + +func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } +func (*StorageOSVolumeSource) ProtoMessage() {} +func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } + +func (m *Sysctl) Reset() { *m = Sysctl{} } +func (*Sysctl) ProtoMessage() {} +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } + +func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } +func (*TCPSocketAction) ProtoMessage() {} +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } + +func (m *Taint) Reset() { *m = Taint{} } +func (*Taint) ProtoMessage() {} +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } + +func (m *Toleration) Reset() { *m = Toleration{} } +func (*Toleration) ProtoMessage() {} +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } + +func (m *Volume) Reset() { *m = Volume{} } +func (*Volume) ProtoMessage() {} +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } + +func (m *VolumeMount) Reset() { *m = VolumeMount{} } +func (*VolumeMount) ProtoMessage() {} +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } + +func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } +func (*VolumeProjection) ProtoMessage() {} +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } + +func (m *VolumeSource) Reset() { *m = VolumeSource{} } +func (*VolumeSource) ProtoMessage() {} +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } + +func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } +func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} +func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{176} +} + +func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } +func (*WeightedPodAffinityTerm) ProtoMessage() {} +func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{177} +} + +func init() { + proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.api.core.v1.AWSElasticBlockStoreVolumeSource") + proto.RegisterType((*Affinity)(nil), "k8s.io.api.core.v1.Affinity") + proto.RegisterType((*AttachedVolume)(nil), "k8s.io.api.core.v1.AttachedVolume") + proto.RegisterType((*AvoidPods)(nil), "k8s.io.api.core.v1.AvoidPods") + proto.RegisterType((*AzureDiskVolumeSource)(nil), "k8s.io.api.core.v1.AzureDiskVolumeSource") + proto.RegisterType((*AzureFilePersistentVolumeSource)(nil), "k8s.io.api.core.v1.AzureFilePersistentVolumeSource") + proto.RegisterType((*AzureFileVolumeSource)(nil), "k8s.io.api.core.v1.AzureFileVolumeSource") + proto.RegisterType((*Binding)(nil), "k8s.io.api.core.v1.Binding") + proto.RegisterType((*Capabilities)(nil), "k8s.io.api.core.v1.Capabilities") + proto.RegisterType((*CephFSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.CephFSPersistentVolumeSource") + proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.api.core.v1.CephFSVolumeSource") + proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.api.core.v1.CinderVolumeSource") + proto.RegisterType((*ClientIPConfig)(nil), "k8s.io.api.core.v1.ClientIPConfig") + proto.RegisterType((*ComponentCondition)(nil), "k8s.io.api.core.v1.ComponentCondition") + proto.RegisterType((*ComponentStatus)(nil), "k8s.io.api.core.v1.ComponentStatus") + proto.RegisterType((*ComponentStatusList)(nil), "k8s.io.api.core.v1.ComponentStatusList") + proto.RegisterType((*ConfigMap)(nil), "k8s.io.api.core.v1.ConfigMap") + proto.RegisterType((*ConfigMapEnvSource)(nil), "k8s.io.api.core.v1.ConfigMapEnvSource") + proto.RegisterType((*ConfigMapKeySelector)(nil), "k8s.io.api.core.v1.ConfigMapKeySelector") + proto.RegisterType((*ConfigMapList)(nil), "k8s.io.api.core.v1.ConfigMapList") + proto.RegisterType((*ConfigMapProjection)(nil), "k8s.io.api.core.v1.ConfigMapProjection") + proto.RegisterType((*ConfigMapVolumeSource)(nil), "k8s.io.api.core.v1.ConfigMapVolumeSource") + proto.RegisterType((*Container)(nil), "k8s.io.api.core.v1.Container") + proto.RegisterType((*ContainerImage)(nil), "k8s.io.api.core.v1.ContainerImage") + proto.RegisterType((*ContainerPort)(nil), "k8s.io.api.core.v1.ContainerPort") + proto.RegisterType((*ContainerState)(nil), "k8s.io.api.core.v1.ContainerState") + proto.RegisterType((*ContainerStateRunning)(nil), "k8s.io.api.core.v1.ContainerStateRunning") + proto.RegisterType((*ContainerStateTerminated)(nil), "k8s.io.api.core.v1.ContainerStateTerminated") + proto.RegisterType((*ContainerStateWaiting)(nil), "k8s.io.api.core.v1.ContainerStateWaiting") + proto.RegisterType((*ContainerStatus)(nil), "k8s.io.api.core.v1.ContainerStatus") + proto.RegisterType((*DaemonEndpoint)(nil), "k8s.io.api.core.v1.DaemonEndpoint") + proto.RegisterType((*DeleteOptions)(nil), "k8s.io.api.core.v1.DeleteOptions") + proto.RegisterType((*DownwardAPIProjection)(nil), "k8s.io.api.core.v1.DownwardAPIProjection") + proto.RegisterType((*DownwardAPIVolumeFile)(nil), "k8s.io.api.core.v1.DownwardAPIVolumeFile") + proto.RegisterType((*DownwardAPIVolumeSource)(nil), "k8s.io.api.core.v1.DownwardAPIVolumeSource") + proto.RegisterType((*EmptyDirVolumeSource)(nil), "k8s.io.api.core.v1.EmptyDirVolumeSource") + proto.RegisterType((*EndpointAddress)(nil), "k8s.io.api.core.v1.EndpointAddress") + proto.RegisterType((*EndpointPort)(nil), "k8s.io.api.core.v1.EndpointPort") + proto.RegisterType((*EndpointSubset)(nil), "k8s.io.api.core.v1.EndpointSubset") + proto.RegisterType((*Endpoints)(nil), "k8s.io.api.core.v1.Endpoints") + proto.RegisterType((*EndpointsList)(nil), "k8s.io.api.core.v1.EndpointsList") + proto.RegisterType((*EnvFromSource)(nil), "k8s.io.api.core.v1.EnvFromSource") + proto.RegisterType((*EnvVar)(nil), "k8s.io.api.core.v1.EnvVar") + proto.RegisterType((*EnvVarSource)(nil), "k8s.io.api.core.v1.EnvVarSource") + proto.RegisterType((*Event)(nil), "k8s.io.api.core.v1.Event") + proto.RegisterType((*EventList)(nil), "k8s.io.api.core.v1.EventList") + proto.RegisterType((*EventSource)(nil), "k8s.io.api.core.v1.EventSource") + proto.RegisterType((*ExecAction)(nil), "k8s.io.api.core.v1.ExecAction") + proto.RegisterType((*FCVolumeSource)(nil), "k8s.io.api.core.v1.FCVolumeSource") + proto.RegisterType((*FlexVolumeSource)(nil), "k8s.io.api.core.v1.FlexVolumeSource") + proto.RegisterType((*FlockerVolumeSource)(nil), "k8s.io.api.core.v1.FlockerVolumeSource") + proto.RegisterType((*GCEPersistentDiskVolumeSource)(nil), "k8s.io.api.core.v1.GCEPersistentDiskVolumeSource") + proto.RegisterType((*GitRepoVolumeSource)(nil), "k8s.io.api.core.v1.GitRepoVolumeSource") + proto.RegisterType((*GlusterfsVolumeSource)(nil), "k8s.io.api.core.v1.GlusterfsVolumeSource") + proto.RegisterType((*HTTPGetAction)(nil), "k8s.io.api.core.v1.HTTPGetAction") + proto.RegisterType((*HTTPHeader)(nil), "k8s.io.api.core.v1.HTTPHeader") + proto.RegisterType((*Handler)(nil), "k8s.io.api.core.v1.Handler") + proto.RegisterType((*HostAlias)(nil), "k8s.io.api.core.v1.HostAlias") + proto.RegisterType((*HostPathVolumeSource)(nil), "k8s.io.api.core.v1.HostPathVolumeSource") + proto.RegisterType((*ISCSIVolumeSource)(nil), "k8s.io.api.core.v1.ISCSIVolumeSource") + proto.RegisterType((*KeyToPath)(nil), "k8s.io.api.core.v1.KeyToPath") + proto.RegisterType((*Lifecycle)(nil), "k8s.io.api.core.v1.Lifecycle") + proto.RegisterType((*LimitRange)(nil), "k8s.io.api.core.v1.LimitRange") + proto.RegisterType((*LimitRangeItem)(nil), "k8s.io.api.core.v1.LimitRangeItem") + proto.RegisterType((*LimitRangeList)(nil), "k8s.io.api.core.v1.LimitRangeList") + proto.RegisterType((*LimitRangeSpec)(nil), "k8s.io.api.core.v1.LimitRangeSpec") + proto.RegisterType((*List)(nil), "k8s.io.api.core.v1.List") + proto.RegisterType((*ListOptions)(nil), "k8s.io.api.core.v1.ListOptions") + proto.RegisterType((*LoadBalancerIngress)(nil), "k8s.io.api.core.v1.LoadBalancerIngress") + proto.RegisterType((*LoadBalancerStatus)(nil), "k8s.io.api.core.v1.LoadBalancerStatus") + proto.RegisterType((*LocalObjectReference)(nil), "k8s.io.api.core.v1.LocalObjectReference") + proto.RegisterType((*LocalVolumeSource)(nil), "k8s.io.api.core.v1.LocalVolumeSource") + proto.RegisterType((*NFSVolumeSource)(nil), "k8s.io.api.core.v1.NFSVolumeSource") + proto.RegisterType((*Namespace)(nil), "k8s.io.api.core.v1.Namespace") + proto.RegisterType((*NamespaceList)(nil), "k8s.io.api.core.v1.NamespaceList") + proto.RegisterType((*NamespaceSpec)(nil), "k8s.io.api.core.v1.NamespaceSpec") + proto.RegisterType((*NamespaceStatus)(nil), "k8s.io.api.core.v1.NamespaceStatus") + proto.RegisterType((*Node)(nil), "k8s.io.api.core.v1.Node") + proto.RegisterType((*NodeAddress)(nil), "k8s.io.api.core.v1.NodeAddress") + proto.RegisterType((*NodeAffinity)(nil), "k8s.io.api.core.v1.NodeAffinity") + proto.RegisterType((*NodeCondition)(nil), "k8s.io.api.core.v1.NodeCondition") + proto.RegisterType((*NodeConfigSource)(nil), "k8s.io.api.core.v1.NodeConfigSource") + proto.RegisterType((*NodeDaemonEndpoints)(nil), "k8s.io.api.core.v1.NodeDaemonEndpoints") + proto.RegisterType((*NodeList)(nil), "k8s.io.api.core.v1.NodeList") + proto.RegisterType((*NodeProxyOptions)(nil), "k8s.io.api.core.v1.NodeProxyOptions") + proto.RegisterType((*NodeResources)(nil), "k8s.io.api.core.v1.NodeResources") + proto.RegisterType((*NodeSelector)(nil), "k8s.io.api.core.v1.NodeSelector") + proto.RegisterType((*NodeSelectorRequirement)(nil), "k8s.io.api.core.v1.NodeSelectorRequirement") + proto.RegisterType((*NodeSelectorTerm)(nil), "k8s.io.api.core.v1.NodeSelectorTerm") + proto.RegisterType((*NodeSpec)(nil), "k8s.io.api.core.v1.NodeSpec") + proto.RegisterType((*NodeStatus)(nil), "k8s.io.api.core.v1.NodeStatus") + proto.RegisterType((*NodeSystemInfo)(nil), "k8s.io.api.core.v1.NodeSystemInfo") + proto.RegisterType((*ObjectFieldSelector)(nil), "k8s.io.api.core.v1.ObjectFieldSelector") + proto.RegisterType((*ObjectMeta)(nil), "k8s.io.api.core.v1.ObjectMeta") + proto.RegisterType((*ObjectReference)(nil), "k8s.io.api.core.v1.ObjectReference") + proto.RegisterType((*PersistentVolume)(nil), "k8s.io.api.core.v1.PersistentVolume") + proto.RegisterType((*PersistentVolumeClaim)(nil), "k8s.io.api.core.v1.PersistentVolumeClaim") + proto.RegisterType((*PersistentVolumeClaimCondition)(nil), "k8s.io.api.core.v1.PersistentVolumeClaimCondition") + proto.RegisterType((*PersistentVolumeClaimList)(nil), "k8s.io.api.core.v1.PersistentVolumeClaimList") + proto.RegisterType((*PersistentVolumeClaimSpec)(nil), "k8s.io.api.core.v1.PersistentVolumeClaimSpec") + proto.RegisterType((*PersistentVolumeClaimStatus)(nil), "k8s.io.api.core.v1.PersistentVolumeClaimStatus") + proto.RegisterType((*PersistentVolumeClaimVolumeSource)(nil), "k8s.io.api.core.v1.PersistentVolumeClaimVolumeSource") + proto.RegisterType((*PersistentVolumeList)(nil), "k8s.io.api.core.v1.PersistentVolumeList") + proto.RegisterType((*PersistentVolumeSource)(nil), "k8s.io.api.core.v1.PersistentVolumeSource") + proto.RegisterType((*PersistentVolumeSpec)(nil), "k8s.io.api.core.v1.PersistentVolumeSpec") + proto.RegisterType((*PersistentVolumeStatus)(nil), "k8s.io.api.core.v1.PersistentVolumeStatus") + proto.RegisterType((*PhotonPersistentDiskVolumeSource)(nil), "k8s.io.api.core.v1.PhotonPersistentDiskVolumeSource") + proto.RegisterType((*Pod)(nil), "k8s.io.api.core.v1.Pod") + proto.RegisterType((*PodAffinity)(nil), "k8s.io.api.core.v1.PodAffinity") + proto.RegisterType((*PodAffinityTerm)(nil), "k8s.io.api.core.v1.PodAffinityTerm") + proto.RegisterType((*PodAntiAffinity)(nil), "k8s.io.api.core.v1.PodAntiAffinity") + proto.RegisterType((*PodAttachOptions)(nil), "k8s.io.api.core.v1.PodAttachOptions") + proto.RegisterType((*PodCondition)(nil), "k8s.io.api.core.v1.PodCondition") + proto.RegisterType((*PodExecOptions)(nil), "k8s.io.api.core.v1.PodExecOptions") + proto.RegisterType((*PodList)(nil), "k8s.io.api.core.v1.PodList") + proto.RegisterType((*PodLogOptions)(nil), "k8s.io.api.core.v1.PodLogOptions") + proto.RegisterType((*PodPortForwardOptions)(nil), "k8s.io.api.core.v1.PodPortForwardOptions") + proto.RegisterType((*PodProxyOptions)(nil), "k8s.io.api.core.v1.PodProxyOptions") + proto.RegisterType((*PodSecurityContext)(nil), "k8s.io.api.core.v1.PodSecurityContext") + proto.RegisterType((*PodSignature)(nil), "k8s.io.api.core.v1.PodSignature") + proto.RegisterType((*PodSpec)(nil), "k8s.io.api.core.v1.PodSpec") + proto.RegisterType((*PodStatus)(nil), "k8s.io.api.core.v1.PodStatus") + proto.RegisterType((*PodStatusResult)(nil), "k8s.io.api.core.v1.PodStatusResult") + proto.RegisterType((*PodTemplate)(nil), "k8s.io.api.core.v1.PodTemplate") + proto.RegisterType((*PodTemplateList)(nil), "k8s.io.api.core.v1.PodTemplateList") + proto.RegisterType((*PodTemplateSpec)(nil), "k8s.io.api.core.v1.PodTemplateSpec") + proto.RegisterType((*PortworxVolumeSource)(nil), "k8s.io.api.core.v1.PortworxVolumeSource") + proto.RegisterType((*Preconditions)(nil), "k8s.io.api.core.v1.Preconditions") + proto.RegisterType((*PreferAvoidPodsEntry)(nil), "k8s.io.api.core.v1.PreferAvoidPodsEntry") + proto.RegisterType((*PreferredSchedulingTerm)(nil), "k8s.io.api.core.v1.PreferredSchedulingTerm") + proto.RegisterType((*Probe)(nil), "k8s.io.api.core.v1.Probe") + proto.RegisterType((*ProjectedVolumeSource)(nil), "k8s.io.api.core.v1.ProjectedVolumeSource") + proto.RegisterType((*QuobyteVolumeSource)(nil), "k8s.io.api.core.v1.QuobyteVolumeSource") + proto.RegisterType((*RBDVolumeSource)(nil), "k8s.io.api.core.v1.RBDVolumeSource") + proto.RegisterType((*RangeAllocation)(nil), "k8s.io.api.core.v1.RangeAllocation") + proto.RegisterType((*ReplicationController)(nil), "k8s.io.api.core.v1.ReplicationController") + proto.RegisterType((*ReplicationControllerCondition)(nil), "k8s.io.api.core.v1.ReplicationControllerCondition") + proto.RegisterType((*ReplicationControllerList)(nil), "k8s.io.api.core.v1.ReplicationControllerList") + proto.RegisterType((*ReplicationControllerSpec)(nil), "k8s.io.api.core.v1.ReplicationControllerSpec") + proto.RegisterType((*ReplicationControllerStatus)(nil), "k8s.io.api.core.v1.ReplicationControllerStatus") + proto.RegisterType((*ResourceFieldSelector)(nil), "k8s.io.api.core.v1.ResourceFieldSelector") + proto.RegisterType((*ResourceQuota)(nil), "k8s.io.api.core.v1.ResourceQuota") + proto.RegisterType((*ResourceQuotaList)(nil), "k8s.io.api.core.v1.ResourceQuotaList") + proto.RegisterType((*ResourceQuotaSpec)(nil), "k8s.io.api.core.v1.ResourceQuotaSpec") + proto.RegisterType((*ResourceQuotaStatus)(nil), "k8s.io.api.core.v1.ResourceQuotaStatus") + proto.RegisterType((*ResourceRequirements)(nil), "k8s.io.api.core.v1.ResourceRequirements") + proto.RegisterType((*SELinuxOptions)(nil), "k8s.io.api.core.v1.SELinuxOptions") + proto.RegisterType((*ScaleIOVolumeSource)(nil), "k8s.io.api.core.v1.ScaleIOVolumeSource") + proto.RegisterType((*Secret)(nil), "k8s.io.api.core.v1.Secret") + proto.RegisterType((*SecretEnvSource)(nil), "k8s.io.api.core.v1.SecretEnvSource") + proto.RegisterType((*SecretKeySelector)(nil), "k8s.io.api.core.v1.SecretKeySelector") + proto.RegisterType((*SecretList)(nil), "k8s.io.api.core.v1.SecretList") + proto.RegisterType((*SecretProjection)(nil), "k8s.io.api.core.v1.SecretProjection") + proto.RegisterType((*SecretReference)(nil), "k8s.io.api.core.v1.SecretReference") + proto.RegisterType((*SecretVolumeSource)(nil), "k8s.io.api.core.v1.SecretVolumeSource") + proto.RegisterType((*SecurityContext)(nil), "k8s.io.api.core.v1.SecurityContext") + proto.RegisterType((*SerializedReference)(nil), "k8s.io.api.core.v1.SerializedReference") + proto.RegisterType((*Service)(nil), "k8s.io.api.core.v1.Service") + proto.RegisterType((*ServiceAccount)(nil), "k8s.io.api.core.v1.ServiceAccount") + proto.RegisterType((*ServiceAccountList)(nil), "k8s.io.api.core.v1.ServiceAccountList") + proto.RegisterType((*ServiceList)(nil), "k8s.io.api.core.v1.ServiceList") + proto.RegisterType((*ServicePort)(nil), "k8s.io.api.core.v1.ServicePort") + proto.RegisterType((*ServiceProxyOptions)(nil), "k8s.io.api.core.v1.ServiceProxyOptions") + proto.RegisterType((*ServiceSpec)(nil), "k8s.io.api.core.v1.ServiceSpec") + proto.RegisterType((*ServiceStatus)(nil), "k8s.io.api.core.v1.ServiceStatus") + proto.RegisterType((*SessionAffinityConfig)(nil), "k8s.io.api.core.v1.SessionAffinityConfig") + proto.RegisterType((*StorageOSPersistentVolumeSource)(nil), "k8s.io.api.core.v1.StorageOSPersistentVolumeSource") + proto.RegisterType((*StorageOSVolumeSource)(nil), "k8s.io.api.core.v1.StorageOSVolumeSource") + proto.RegisterType((*Sysctl)(nil), "k8s.io.api.core.v1.Sysctl") + proto.RegisterType((*TCPSocketAction)(nil), "k8s.io.api.core.v1.TCPSocketAction") + proto.RegisterType((*Taint)(nil), "k8s.io.api.core.v1.Taint") + proto.RegisterType((*Toleration)(nil), "k8s.io.api.core.v1.Toleration") + proto.RegisterType((*Volume)(nil), "k8s.io.api.core.v1.Volume") + proto.RegisterType((*VolumeMount)(nil), "k8s.io.api.core.v1.VolumeMount") + proto.RegisterType((*VolumeProjection)(nil), "k8s.io.api.core.v1.VolumeProjection") + proto.RegisterType((*VolumeSource)(nil), "k8s.io.api.core.v1.VolumeSource") + proto.RegisterType((*VsphereVirtualDiskVolumeSource)(nil), "k8s.io.api.core.v1.VsphereVirtualDiskVolumeSource") + proto.RegisterType((*WeightedPodAffinityTerm)(nil), "k8s.io.api.core.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++ + } + if m.Kind != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Kind))) + i += copy(dAtA[i:], *m.Kind) + } + return i, nil +} + +func (m *AzureFilePersistentVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AzureFilePersistentVolumeSource) 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++ + if m.SecretNamespace != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SecretNamespace))) + i += copy(dAtA[i:], *m.SecretNamespace) + } + 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 *CephFSPersistentVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CephFSPersistentVolumeSource) 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 *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())) + n7, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + 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 *ClientIPConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClientIPConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.TimeoutSeconds != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds)) + } + 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())) + n8, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + 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())) + n10, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + if len(m.Data) > 0 { + keysForData := make([]string, 0, len(m.Data)) + for k := range m.Data { + keysForData = append(keysForData, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + for _, k := range keysForData { + dAtA[i] = 0x12 + i++ + v := m.Data[string(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 *ConfigMapEnvSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapEnvSource) 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())) + n11, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + if m.Optional != nil { + dAtA[i] = 0x10 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n12, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + if m.Optional != nil { + dAtA[i] = 0x18 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n13, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + 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 *ConfigMapProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapProjection) 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())) + n14, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + 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.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n15, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + 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)) + } + if m.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n16, err := m.Resources.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + 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())) + n17, err := m.LivenessProbe.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + if m.ReadinessProbe != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadinessProbe.Size())) + n18, err := m.ReadinessProbe.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + if m.Lifecycle != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Lifecycle.Size())) + n19, err := m.Lifecycle.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + } + 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())) + n20, err := m.SecurityContext.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + 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++ + if len(m.EnvFrom) > 0 { + for _, msg := range m.EnvFrom { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TerminationMessagePolicy))) + i += copy(dAtA[i:], m.TerminationMessagePolicy) + 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())) + n21, err := m.Waiting.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + if m.Running != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Running.Size())) + n22, err := m.Running.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } + if m.Terminated != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Terminated.Size())) + n23, err := m.Terminated.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + } + 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())) + n24, err := m.StartedAt.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + 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())) + n25, err := m.StartedAt.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FinishedAt.Size())) + n26, err := m.FinishedAt.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + 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())) + n27, err := m.State.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTerminationState.Size())) + n28, err := m.LastTerminationState.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + 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())) + n29, err := m.Preconditions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n29 + } + if m.OrphanDependents != nil { + dAtA[i] = 0x18 + i++ + if *m.OrphanDependents { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.PropagationPolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.PropagationPolicy))) + i += copy(dAtA[i:], *m.PropagationPolicy) + } + return i, nil +} + +func (m *DownwardAPIProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DownwardAPIProjection) 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 *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())) + n30, err := m.FieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n30 + } + if m.ResourceFieldRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceFieldRef.Size())) + n31, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n31 + } + 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) + if m.SizeLimit != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SizeLimit.Size())) + n32, err := m.SizeLimit.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n32 + } + 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())) + n33, err := m.TargetRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n33 + } + 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())) + n34, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n34 + 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())) + n35, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n35 + 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 *EnvFromSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EnvFromSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Prefix))) + i += copy(dAtA[i:], m.Prefix) + if m.ConfigMapRef != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapRef.Size())) + n36, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n36 + } + if m.SecretRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n37, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n37 + } + 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())) + n38, err := m.ValueFrom.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n38 + } + 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())) + n39, err := m.FieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n39 + } + if m.ResourceFieldRef != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceFieldRef.Size())) + n40, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n40 + } + if m.ConfigMapKeyRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapKeyRef.Size())) + n41, err := m.ConfigMapKeyRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n41 + } + if m.SecretKeyRef != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretKeyRef.Size())) + n42, err := m.SecretKeyRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n42 + } + 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())) + n43, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n43 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.InvolvedObject.Size())) + n44, err := m.InvolvedObject.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n44 + 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())) + n45, err := m.Source.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n45 + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FirstTimestamp.Size())) + n46, err := m.FirstTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n46 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTimestamp.Size())) + n47, err := m.LastTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n47 + 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())) + 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 *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 *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++ + if len(m.WWIDs) > 0 { + for _, s := range m.WWIDs { + 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) + } + } + 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())) + n49, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n49 + } + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.Options) > 0 { + keysForOptions := make([]string, 0, len(m.Options)) + for k := range m.Options { + keysForOptions = append(keysForOptions, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForOptions) + for _, k := range keysForOptions { + dAtA[i] = 0x2a + i++ + v := m.Options[string(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) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatasetUUID))) + i += copy(dAtA[i:], m.DatasetUUID) + 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())) + n50, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n50 + 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())) + n51, err := m.Exec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n51 + } + if m.HTTPGet != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HTTPGet.Size())) + n52, err := m.HTTPGet.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n52 + } + if m.TCPSocket != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TCPSocket.Size())) + n53, err := m.TCPSocket.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n53 + } + return i, nil +} + +func (m *HostAlias) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HostAlias) 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 len(m.Hostnames) > 0 { + for _, s := range m.Hostnames { + 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 *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) + if m.Type != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Type))) + i += copy(dAtA[i:], *m.Type) + } + 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++ + if len(m.Portals) > 0 { + for _, s := range m.Portals { + dAtA[i] = 0x3a + 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] = 0x40 + i++ + if m.DiscoveryCHAPAuth { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SecretRef != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n54, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n54 + } + dAtA[i] = 0x58 + i++ + if m.SessionCHAPAuth { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.InitiatorName != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.InitiatorName))) + i += copy(dAtA[i:], *m.InitiatorName) + } + 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())) + n55, err := m.PostStart.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n55 + } + if m.PreStop != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PreStop.Size())) + n56, err := m.PreStop.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n56 + } + 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())) + n57, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n57 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n58, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n58 + 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 { + keysForMax := make([]string, 0, len(m.Max)) + for k := range m.Max { + keysForMax = append(keysForMax, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMax) + for _, k := range keysForMax { + dAtA[i] = 0x12 + i++ + v := m.Max[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n59, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n59 + } + } + if len(m.Min) > 0 { + keysForMin := make([]string, 0, len(m.Min)) + for k := range m.Min { + keysForMin = append(keysForMin, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMin) + for _, k := range keysForMin { + dAtA[i] = 0x1a + i++ + v := m.Min[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n60, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n60 + } + } + if len(m.Default) > 0 { + keysForDefault := make([]string, 0, len(m.Default)) + for k := range m.Default { + keysForDefault = append(keysForDefault, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefault) + for _, k := range keysForDefault { + dAtA[i] = 0x22 + i++ + v := m.Default[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n61, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n61 + } + } + if len(m.DefaultRequest) > 0 { + keysForDefaultRequest := make([]string, 0, len(m.DefaultRequest)) + for k := range m.DefaultRequest { + keysForDefaultRequest = append(keysForDefaultRequest, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefaultRequest) + for _, k := range keysForDefaultRequest { + dAtA[i] = 0x2a + i++ + v := m.DefaultRequest[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n62, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n62 + } + } + if len(m.MaxLimitRequestRatio) > 0 { + keysForMaxLimitRequestRatio := make([]string, 0, len(m.MaxLimitRequestRatio)) + for k := range m.MaxLimitRequestRatio { + keysForMaxLimitRequestRatio = append(keysForMaxLimitRequestRatio, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMaxLimitRequestRatio) + for _, k := range keysForMaxLimitRequestRatio { + dAtA[i] = 0x32 + i++ + v := m.MaxLimitRequestRatio[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n63, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n63 + } + } + 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())) + n64, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n64 + 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())) + n65, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n65 + 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)) + } + dAtA[i] = 0x30 + i++ + if m.IncludeUninitialized { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + 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 *LocalVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LocalVolumeSource) 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 *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())) + n66, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n66 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n67, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n67 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n68, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n68 + 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())) + n69, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n69 + 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())) + n70, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n70 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n71, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n71 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n72, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n72 + 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())) + n73, err := m.RequiredDuringSchedulingIgnoredDuringExecution.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n73 + } + 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())) + n74, err := m.LastHeartbeatTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n74 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n75, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n75 + 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 *NodeConfigSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeConfigSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ConfigMapRef != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapRef.Size())) + n76, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n76 + } + 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())) + n77, err := m.KubeletEndpoint.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n77 + 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())) + n78, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n78 + 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 *NodeResources) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeResources) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0xa + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n79, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n79 + } + } + 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++ + if len(m.Taints) > 0 { + for _, msg := range m.Taints { + 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 + } + } + if m.ConfigSource != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigSource.Size())) + n80, err := m.ConfigSource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n80 + } + 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 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0xa + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n81, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n81 + } + } + if len(m.Allocatable) > 0 { + keysForAllocatable := make([]string, 0, len(m.Allocatable)) + for k := range m.Allocatable { + keysForAllocatable = append(keysForAllocatable, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAllocatable) + for _, k := range keysForAllocatable { + dAtA[i] = 0x12 + i++ + v := m.Allocatable[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n82, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n82 + } + } + 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())) + n83, err := m.DaemonEndpoints.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n83 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodeInfo.Size())) + n84, err := m.NodeInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n84 + 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())) + n85, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n85 + if m.DeletionTimestamp != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DeletionTimestamp.Size())) + n86, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n86 + } + if m.DeletionGracePeriodSeconds != nil { + dAtA[i] = 0x50 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + keysForLabels := make([]string, 0, len(m.Labels)) + for k := range m.Labels { + keysForLabels = append(keysForLabels, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + for _, k := range keysForLabels { + dAtA[i] = 0x5a + i++ + v := m.Labels[string(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 { + keysForAnnotations := make([]string, 0, len(m.Annotations)) + for k := range m.Annotations { + keysForAnnotations = append(keysForAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + for _, k := range keysForAnnotations { + dAtA[i] = 0x62 + i++ + v := m.Annotations[string(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) + if m.Initializers != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Initializers.Size())) + n87, err := m.Initializers.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n87 + } + 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 *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())) + n88, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n88 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n89, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n89 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n90, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n90 + 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())) + n91, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n91 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n92, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n92 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n93, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n93 + return i, nil +} + +func (m *PersistentVolumeClaimCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaimCondition) 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())) + n94, err := m.LastProbeTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n94 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n95, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n95 + 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 *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())) + n96, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n96 + 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())) + n97, err := m.Resources.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n97 + 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())) + n98, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n98 + } + if m.StorageClassName != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StorageClassName))) + i += copy(dAtA[i:], *m.StorageClassName) + } + 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 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0x1a + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n99, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n99 + } + } + 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 + } + } + 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())) + n100, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n100 + 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())) + n101, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n101 + } + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n102, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n102 + } + if m.HostPath != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) + n103, err := m.HostPath.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n103 + } + if m.Glusterfs != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n104, err := m.Glusterfs.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n104 + } + if m.NFS != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n105, err := m.NFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n105 + } + if m.RBD != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n106, err := m.RBD.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n106 + } + if m.ISCSI != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n107, err := m.ISCSI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n107 + } + if m.Cinder != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n108, err := m.Cinder.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n108 + } + if m.CephFS != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n109, err := m.CephFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n109 + } + if m.FC != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) + n110, err := m.FC.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n110 + } + if m.Flocker != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n111, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n111 + } + if m.FlexVolume != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n112, err := m.FlexVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n112 + } + if m.AzureFile != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) + n113, err := m.AzureFile.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n113 + } + if m.VsphereVolume != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) + n114, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n114 + } + if m.Quobyte != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) + n115, err := m.Quobyte.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n115 + } + if m.AzureDisk != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) + n116, err := m.AzureDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n116 + } + if m.PhotonPersistentDisk != nil { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) + n117, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n117 + } + if m.PortworxVolume != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) + n118, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n118 + } + if m.ScaleIO != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) + n119, err := m.ScaleIO.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n119 + } + if m.Local != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Local.Size())) + n120, err := m.Local.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n120 + } + if m.StorageOS != nil { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) + n121, err := m.StorageOS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n121 + } + 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 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0xa + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n122, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n122 + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeSource.Size())) + n123, err := m.PersistentVolumeSource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n123 + 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())) + n124, err := m.ClaimRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n124 + } + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PersistentVolumeReclaimPolicy))) + i += copy(dAtA[i:], m.PersistentVolumeReclaimPolicy) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StorageClassName))) + i += copy(dAtA[i:], m.StorageClassName) + if len(m.MountOptions) > 0 { + for _, s := range m.MountOptions { + dAtA[i] = 0x3a + 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 *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 *PhotonPersistentDiskVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PhotonPersistentDiskVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PdID))) + i += copy(dAtA[i:], m.PdID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + 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())) + n125, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n125 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n126, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n126 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n127, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n127 + 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())) + n128, err := m.LabelSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n128 + } + 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())) + n129, err := m.LastProbeTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n129 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n130, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n130 + 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())) + n131, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n131 + 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())) + n132, err := m.SinceTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n132 + } + 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 *PodPortForwardOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPortForwardOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, num := range m.Ports { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(num)) + } + } + 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())) + n133, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n133 + } + 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())) + n134, err := m.PodController.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n134 + } + 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 { + keysForNodeSelector := make([]string, 0, len(m.NodeSelector)) + for k := range m.NodeSelector { + keysForNodeSelector = append(keysForNodeSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForNodeSelector) + for _, k := range keysForNodeSelector { + dAtA[i] = 0x3a + i++ + v := m.NodeSelector[string(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())) + n135, err := m.SecurityContext.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n135 + } + 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) + if m.Affinity != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Affinity.Size())) + n136, err := m.Affinity.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n136 + } + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SchedulerName))) + i += copy(dAtA[i:], m.SchedulerName) + if len(m.InitContainers) > 0 { + for _, msg := range m.InitContainers { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.AutomountServiceAccountToken != nil { + dAtA[i] = 0xa8 + i++ + dAtA[i] = 0x1 + i++ + if *m.AutomountServiceAccountToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if len(m.Tolerations) > 0 { + for _, msg := range m.Tolerations { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + 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.HostAliases) > 0 { + for _, msg := range m.HostAliases { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PriorityClassName))) + i += copy(dAtA[i:], m.PriorityClassName) + if m.Priority != nil { + dAtA[i] = 0xc8 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Priority)) + } + 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())) + n137, err := m.StartTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n137 + } + 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 + } + } + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.QOSClass))) + i += copy(dAtA[i:], m.QOSClass) + if len(m.InitContainerStatuses) > 0 { + for _, msg := range m.InitContainerStatuses { + 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 *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())) + 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.Status.Size())) + n139, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n139 + 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())) + n140, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n140 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n141, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n141 + 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())) + n142, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n142 + 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())) + n143, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n143 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n144, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n144 + return i, nil +} + +func (m *PortworxVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PortworxVolumeSource) 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 *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())) + n145, err := m.PodSignature.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n145 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.EvictionTime.Size())) + n146, err := m.EvictionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n146 + 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())) + n147, err := m.Preference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n147 + 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())) + n148, err := m.Handler.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n148 + 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 *ProjectedVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ProjectedVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Sources) > 0 { + for _, msg := range m.Sources { + 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 *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())) + n149, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n149 + } + 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())) + n150, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n150 + 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())) + n151, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n151 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n152, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n152 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n153, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n153 + return i, nil +} + +func (m *ReplicationControllerCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationControllerCondition) 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.LastTransitionTime.Size())) + n154, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n154 + 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.Message))) + i += copy(dAtA[i:], m.Message) + 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())) + n155, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n155 + 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 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(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())) + n156, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n156 + } + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + 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)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + 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())) + n157, err := m.Divisor.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n157 + 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())) + n158, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n158 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n159, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n159 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n160, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n160 + 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())) + n161, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n161 + 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 { + keysForHard := make([]string, 0, len(m.Hard)) + for k := range m.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + for _, k := range keysForHard { + dAtA[i] = 0xa + i++ + v := m.Hard[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n162, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n162 + } + } + 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 { + keysForHard := make([]string, 0, len(m.Hard)) + for k := range m.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + for _, k := range keysForHard { + dAtA[i] = 0xa + i++ + v := m.Hard[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n163, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n163 + } + } + if len(m.Used) > 0 { + keysForUsed := make([]string, 0, len(m.Used)) + for k := range m.Used { + keysForUsed = append(keysForUsed, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUsed) + for _, k := range keysForUsed { + dAtA[i] = 0x12 + i++ + v := m.Used[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n164, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n164 + } + } + 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 { + keysForLimits := make([]string, 0, len(m.Limits)) + for k := range m.Limits { + keysForLimits = append(keysForLimits, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLimits) + for _, k := range keysForLimits { + dAtA[i] = 0xa + i++ + v := m.Limits[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n165, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n165 + } + } + if len(m.Requests) > 0 { + keysForRequests := make([]string, 0, len(m.Requests)) + for k := range m.Requests { + keysForRequests = append(keysForRequests, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForRequests) + for _, k := range keysForRequests { + dAtA[i] = 0x12 + i++ + v := m.Requests[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n166, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n166 + } + } + 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 *ScaleIOVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Gateway))) + i += copy(dAtA[i:], m.Gateway) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.System))) + i += copy(dAtA[i:], m.System) + if m.SecretRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n167, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n167 + } + dAtA[i] = 0x20 + i++ + if m.SSLEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ProtectionDomain))) + i += copy(dAtA[i:], m.ProtectionDomain) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePool))) + i += copy(dAtA[i:], m.StoragePool) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StorageMode))) + i += copy(dAtA[i:], m.StorageMode) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x50 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + 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())) + n168, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n168 + if len(m.Data) > 0 { + keysForData := make([]string, 0, len(m.Data)) + for k := range m.Data { + keysForData = append(keysForData, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + for _, k := range keysForData { + dAtA[i] = 0x12 + i++ + v := m.Data[string(k)] + byteSize := 0 + if v != nil { + byteSize = 1 + len(v) + sovGenerated(uint64(len(v))) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + byteSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + if v != nil { + 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 { + keysForStringData := make([]string, 0, len(m.StringData)) + for k := range m.StringData { + keysForStringData = append(keysForStringData, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForStringData) + for _, k := range keysForStringData { + dAtA[i] = 0x22 + i++ + v := m.StringData[string(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 *SecretEnvSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretEnvSource) 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())) + n169, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n169 + if m.Optional != nil { + dAtA[i] = 0x10 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n170, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n170 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + if m.Optional != nil { + dAtA[i] = 0x18 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n171, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n171 + 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 *SecretProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretProjection) 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())) + n172, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n172 + 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.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SecretReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretReference) 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.Namespace))) + i += copy(dAtA[i:], m.Namespace) + 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)) + } + if m.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n173, err := m.Capabilities.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n173 + } + 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())) + n174, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n174 + } + 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++ + } + if m.AllowPrivilegeEscalation != nil { + dAtA[i] = 0x38 + i++ + if *m.AllowPrivilegeEscalation { + 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())) + n175, err := m.Reference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n175 + 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())) + n176, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n176 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n177, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n177 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n178, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n178 + 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())) + n179, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n179 + 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 + } + } + if m.AutomountServiceAccountToken != nil { + dAtA[i] = 0x20 + i++ + if *m.AutomountServiceAccountToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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())) + n180, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n180 + 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())) + n181, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n181 + 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())) + n182, err := m.TargetPort.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n182 + 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 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(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) + } + } + 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) + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ExternalTrafficPolicy))) + i += copy(dAtA[i:], m.ExternalTrafficPolicy) + dAtA[i] = 0x60 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HealthCheckNodePort)) + dAtA[i] = 0x68 + i++ + if m.PublishNotReadyAddresses { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SessionAffinityConfig != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SessionAffinityConfig.Size())) + n183, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n183 + } + 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())) + n184, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n184 + return i, nil +} + +func (m *SessionAffinityConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SessionAffinityConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ClientIP != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ClientIP.Size())) + n185, err := m.ClientIP.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n185 + } + return i, nil +} + +func (m *StorageOSPersistentVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageOSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeNamespace))) + i += copy(dAtA[i:], m.VolumeNamespace) + 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++ + if m.SecretRef != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n186, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n186 + } + return i, nil +} + +func (m *StorageOSVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageOSVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeNamespace))) + i += copy(dAtA[i:], m.VolumeNamespace) + 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++ + if m.SecretRef != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n187, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n187 + } + return i, nil +} + +func (m *Sysctl) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Sysctl) 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 *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())) + n188, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n188 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) + i += copy(dAtA[i:], m.Host) + 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) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TimeAdded.Size())) + n189, err := m.TimeAdded.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n189 + 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) + if m.TolerationSeconds != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TolerationSeconds)) + } + 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())) + n190, err := m.VolumeSource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n190 + 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) + if m.MountPropagation != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MountPropagation))) + i += copy(dAtA[i:], *m.MountPropagation) + } + return i, nil +} + +func (m *VolumeProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n191, err := m.Secret.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n191 + } + if m.DownwardAPI != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) + n192, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n192 + } + if m.ConfigMap != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) + n193, err := m.ConfigMap.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n193 + } + 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())) + n194, err := m.HostPath.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n194 + } + if m.EmptyDir != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) + n195, err := m.EmptyDir.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n195 + } + if m.GCEPersistentDisk != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n196, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n196 + } + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n197, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n197 + } + if m.GitRepo != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) + n198, err := m.GitRepo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n198 + } + if m.Secret != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n199, err := m.Secret.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n199 + } + if m.NFS != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n200, err := m.NFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n200 + } + if m.ISCSI != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n201, err := m.ISCSI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n201 + } + if m.Glusterfs != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n202, err := m.Glusterfs.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n202 + } + if m.PersistentVolumeClaim != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) + n203, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n203 + } + if m.RBD != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n204, err := m.RBD.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n204 + } + if m.FlexVolume != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n205, err := m.FlexVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n205 + } + if m.Cinder != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n206, err := m.Cinder.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n206 + } + if m.CephFS != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n207, err := m.CephFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n207 + } + if m.Flocker != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n208, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n208 + } + if m.DownwardAPI != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) + n209, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n209 + } + if m.FC != nil { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) + n210, err := m.FC.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n210 + } + if m.AzureFile != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) + n211, err := m.AzureFile.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n211 + } + if m.ConfigMap != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) + n212, err := m.ConfigMap.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n212 + } + if m.VsphereVolume != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) + n213, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n213 + } + if m.Quobyte != nil { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) + n214, err := m.Quobyte.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n214 + } + if m.AzureDisk != nil { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) + n215, err := m.AzureDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n215 + } + if m.PhotonPersistentDisk != nil { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) + n216, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n216 + } + if m.PortworxVolume != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) + n217, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n217 + } + if m.ScaleIO != nil { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) + n218, err := m.ScaleIO.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n218 + } + if m.Projected != nil { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) + n219, err := m.Projected.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n219 + } + if m.StorageOS != nil { + dAtA[i] = 0xda + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) + n220, err := m.StorageOS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n220 + } + 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) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePolicyName))) + i += copy(dAtA[i:], m.StoragePolicyName) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePolicyID))) + i += copy(dAtA[i:], m.StoragePolicyID) + 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())) + n221, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n221 + 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 + } + if m.Kind != nil { + l = len(*m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *AzureFilePersistentVolumeSource) 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 + if m.SecretNamespace != nil { + l = len(*m.SecretNamespace) + n += 1 + l + sovGenerated(uint64(l)) + } + 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 *CephFSPersistentVolumeSource) 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 *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 *ClientIPConfig) Size() (n int) { + var l int + _ = l + if m.TimeoutSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) + } + 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 *ConfigMapEnvSource) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Optional != nil { + n += 2 + } + 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)) + if m.Optional != nil { + n += 2 + } + 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 *ConfigMapProjection) 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.Optional != nil { + n += 2 + } + 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)) + } + if m.Optional != nil { + n += 2 + } + 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 + if len(m.EnvFrom) > 0 { + for _, e := range m.EnvFrom { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + l = len(m.TerminationMessagePolicy) + n += 2 + l + sovGenerated(uint64(l)) + 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 + } + if m.PropagationPolicy != nil { + l = len(*m.PropagationPolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *DownwardAPIProjection) 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 *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)) + if m.SizeLimit != nil { + l = m.SizeLimit.Size() + 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 *EnvFromSource) Size() (n int) { + var l int + _ = l + l = len(m.Prefix) + n += 1 + l + sovGenerated(uint64(l)) + if m.ConfigMapRef != nil { + l = m.ConfigMapRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.SecretRef != nil { + l = m.SecretRef.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 *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 + if len(m.WWIDs) > 0 { + for _, s := range m.WWIDs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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)) + l = len(m.DatasetUUID) + 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 *HostAlias) Size() (n int) { + var l int + _ = l + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Hostnames) > 0 { + for _, s := range m.Hostnames { + l = len(s) + 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)) + if m.Type != nil { + l = len(*m.Type) + 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 + if len(m.Portals) > 0 { + for _, s := range m.Portals { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + if m.InitiatorName != nil { + l = len(*m.InitiatorName) + n += 1 + l + sovGenerated(uint64(l)) + } + 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)) + } + n += 2 + 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 *LocalVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Path) + 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 *NodeConfigSource) Size() (n int) { + var l int + _ = l + if m.ConfigMapRef != nil { + l = m.ConfigMapRef.Size() + 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 *NodeResources) 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)) + } + } + 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 + if len(m.Taints) > 0 { + for _, e := range m.Taints { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.ConfigSource != nil { + l = m.ConfigSource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + 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)) + if m.Initializers != nil { + l = m.Initializers.Size() + n += 2 + 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 *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 *PersistentVolumeClaimCondition) 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 *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)) + } + if m.StorageClassName != nil { + l = len(*m.StorageClassName) + 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)) + } + } + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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)) + } + if m.PhotonPersistentDisk != nil { + l = m.PhotonPersistentDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.PortworxVolume != nil { + l = m.PortworxVolume.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.ScaleIO != nil { + l = m.ScaleIO.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Local != nil { + l = m.Local.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.StorageOS != nil { + l = m.StorageOS.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)) + l = len(m.StorageClassName) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.MountOptions) > 0 { + for _, s := range m.MountOptions { + l = len(s) + 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 *PhotonPersistentDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.PdID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + 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 *PodPortForwardOptions) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + n += 1 + sovGenerated(uint64(e)) + } + } + 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)) + if m.Affinity != nil { + l = m.Affinity.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + l = len(m.SchedulerName) + n += 2 + l + sovGenerated(uint64(l)) + if len(m.InitContainers) > 0 { + for _, e := range m.InitContainers { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if m.AutomountServiceAccountToken != nil { + n += 3 + } + if len(m.Tolerations) > 0 { + for _, e := range m.Tolerations { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if len(m.HostAliases) > 0 { + for _, e := range m.HostAliases { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + l = len(m.PriorityClassName) + n += 2 + l + sovGenerated(uint64(l)) + if m.Priority != nil { + n += 2 + sovGenerated(uint64(*m.Priority)) + } + 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)) + } + } + l = len(m.QOSClass) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.InitContainerStatuses) > 0 { + for _, e := range m.InitContainerStatuses { + 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 *PortworxVolumeSource) 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 *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 *ProjectedVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.Sources) > 0 { + for _, e := range m.Sources { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + 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 *ReplicationControllerCondition) 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.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 *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)) + } + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + 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)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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 *ScaleIOVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Gateway) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.System) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + l = len(m.ProtectionDomain) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StoragePool) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StorageMode) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + 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 + l = 0 + if v != nil { + l = 1 + len(v) + sovGenerated(uint64(len(v))) + } + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + l + 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 *SecretEnvSource) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Optional != nil { + n += 2 + } + 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)) + if m.Optional != nil { + n += 2 + } + 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 *SecretProjection) 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.Optional != nil { + n += 2 + } + return n +} + +func (m *SecretReference) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + 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)) + } + if m.Optional != nil { + n += 2 + } + 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 + } + if m.AllowPrivilegeEscalation != 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)) + } + } + if m.AutomountServiceAccountToken != nil { + n += 2 + } + 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)) + } + } + 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)) + l = len(m.ExternalTrafficPolicy) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.HealthCheckNodePort)) + n += 2 + if m.SessionAffinityConfig != nil { + l = m.SessionAffinityConfig.Size() + 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 *SessionAffinityConfig) Size() (n int) { + var l int + _ = l + if m.ClientIP != nil { + l = m.ClientIP.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *StorageOSPersistentVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeNamespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *StorageOSVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeNamespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Sysctl) 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 *TCPSocketAction) Size() (n int) { + var l int + _ = l + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Host) + 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)) + l = m.TimeAdded.Size() + 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)) + if m.TolerationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TolerationSeconds)) + } + 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)) + if m.MountPropagation != nil { + l = len(*m.MountPropagation) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *VolumeProjection) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DownwardAPI != nil { + l = m.DownwardAPI.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ConfigMap != nil { + l = m.ConfigMap.Size() + 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)) + } + if m.PhotonPersistentDisk != nil { + l = m.PhotonPersistentDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.PortworxVolume != nil { + l = m.PortworxVolume.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.ScaleIO != nil { + l = m.ScaleIO.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Projected != nil { + l = m.Projected.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.StorageOS != nil { + l = m.StorageOS.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)) + l = len(m.StoragePolicyName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StoragePolicyID) + 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) + `,`, + `Kind:` + valueToStringGenerated(this.Kind) + `,`, + `}`, + }, "") + return s +} +func (this *AzureFilePersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AzureFilePersistentVolumeSource{`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `ShareName:` + fmt.Sprintf("%v", this.ShareName) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `SecretNamespace:` + valueToStringGenerated(this.SecretNamespace) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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 *CephFSPersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CephFSPersistentVolumeSource{`, + `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), "SecretReference", "SecretReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + 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 *ClientIPConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClientIPConfig{`, + `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + mapStringForData + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapEnvSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapEnvSource{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ConfigMap", "ConfigMap", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapProjection{`, + `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) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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) + `,`, + `EnvFrom:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.EnvFrom), "EnvFromSource", "EnvFromSource", 1), `&`, ``, 1) + `,`, + `TerminationMessagePolicy:` + fmt.Sprintf("%v", this.TerminationMessagePolicy) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `FinishedAt:` + strings.Replace(strings.Replace(this.FinishedAt.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.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) + `,`, + `PropagationPolicy:` + valueToStringGenerated(this.PropagationPolicy) + `,`, + `}`, + }, "") + return s +} +func (this *DownwardAPIProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DownwardAPIProjection{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "DownwardAPIVolumeFile", "DownwardAPIVolumeFile", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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) + `,`, + `SizeLimit:` + strings.Replace(fmt.Sprintf("%v", this.SizeLimit), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Endpoints", "Endpoints", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EnvFromSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EnvFromSource{`, + `Prefix:` + fmt.Sprintf("%v", this.Prefix) + `,`, + `ConfigMapRef:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMapRef), "ConfigMapEnvSource", "ConfigMapEnvSource", 1) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretEnvSource", "SecretEnvSource", 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTimestamp:` + strings.Replace(strings.Replace(this.LastTimestamp.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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 *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) + `,`, + `WWIDs:` + fmt.Sprintf("%v", this.WWIDs) + `,`, + `}`, + }, "") + 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) + `,`, + `DatasetUUID:` + fmt.Sprintf("%v", this.DatasetUUID) + `,`, + `}`, + }, "") + 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_apimachinery_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 *HostAlias) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostAlias{`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `Hostnames:` + fmt.Sprintf("%v", this.Hostnames) + `,`, + `}`, + }, "") + return s +} +func (this *HostPathVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostPathVolumeSource{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Type:` + valueToStringGenerated(this.Type) + `,`, + `}`, + }, "") + 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) + `,`, + `Portals:` + fmt.Sprintf("%v", this.Portals) + `,`, + `DiscoveryCHAPAuth:` + fmt.Sprintf("%v", this.DiscoveryCHAPAuth) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `SessionCHAPAuth:` + fmt.Sprintf("%v", this.SessionCHAPAuth) + `,`, + `InitiatorName:` + valueToStringGenerated(this.InitiatorName) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RawExtension", "k8s_io_apimachinery_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) + `,`, + `IncludeUninitialized:` + fmt.Sprintf("%v", this.IncludeUninitialized) + `,`, + `}`, + }, "") + 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 *LocalVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalVolumeSource{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *NodeConfigSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeConfigSource{`, + `ConfigMapRef:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMapRef), "ObjectReference", "ObjectReference", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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 *NodeResources) 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{`&NodeResources{`, + `Capacity:` + mapStringForCapacity + `,`, + `}`, + }, "") + 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) + `,`, + `Taints:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Taints), "Taint", "Taint", 1), `&`, ``, 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "NodeConfigSource", "NodeConfigSource", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `DeletionTimestamp:` + strings.Replace(fmt.Sprintf("%v", this.DeletionTimestamp), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `DeletionGracePeriodSeconds:` + valueToStringGenerated(this.DeletionGracePeriodSeconds) + `,`, + `Labels:` + mapStringForLabels + `,`, + `Annotations:` + mapStringForAnnotations + `,`, + `OwnerReferences:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.OwnerReferences), "OwnerReference", "k8s_io_apimachinery_pkg_apis_meta_v1.OwnerReference", 1), `&`, ``, 1) + `,`, + `Finalizers:` + fmt.Sprintf("%v", this.Finalizers) + `,`, + `ClusterName:` + fmt.Sprintf("%v", this.ClusterName) + `,`, + `Initializers:` + strings.Replace(fmt.Sprintf("%v", this.Initializers), "Initializers", "k8s_io_apimachinery_pkg_apis_meta_v1.Initializers", 1) + `,`, + `}`, + }, "") + 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 *PersistentVolume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolume{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.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 *PersistentVolumeClaimCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `StorageClassName:` + valueToStringGenerated(this.StorageClassName) + `,`, + `}`, + }, "") + 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 + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "PersistentVolumeClaimCondition", "PersistentVolumeClaimCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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), "CephFSPersistentVolumeSource", "CephFSPersistentVolumeSource", 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), "AzureFilePersistentVolumeSource", "AzureFilePersistentVolumeSource", 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) + `,`, + `PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`, + `PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`, + `ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`, + `Local:` + strings.Replace(fmt.Sprintf("%v", this.Local), "LocalVolumeSource", "LocalVolumeSource", 1) + `,`, + `StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSPersistentVolumeSource", "StorageOSPersistentVolumeSource", 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) + `,`, + `StorageClassName:` + fmt.Sprintf("%v", this.StorageClassName) + `,`, + `MountOptions:` + fmt.Sprintf("%v", this.MountOptions) + `,`, + `}`, + }, "") + 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 *PhotonPersistentDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PhotonPersistentDiskVolumeSource{`, + `PdID:` + fmt.Sprintf("%v", this.PdID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `Timestamps:` + fmt.Sprintf("%v", this.Timestamps) + `,`, + `TailLines:` + valueToStringGenerated(this.TailLines) + `,`, + `LimitBytes:` + valueToStringGenerated(this.LimitBytes) + `,`, + `}`, + }, "") + return s +} +func (this *PodPortForwardOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPortForwardOptions{`, + `Ports:` + fmt.Sprintf("%v", this.Ports) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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) + `,`, + `Affinity:` + strings.Replace(fmt.Sprintf("%v", this.Affinity), "Affinity", "Affinity", 1) + `,`, + `SchedulerName:` + fmt.Sprintf("%v", this.SchedulerName) + `,`, + `InitContainers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.InitContainers), "Container", "Container", 1), `&`, ``, 1) + `,`, + `AutomountServiceAccountToken:` + valueToStringGenerated(this.AutomountServiceAccountToken) + `,`, + `Tolerations:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Tolerations), "Toleration", "Toleration", 1), `&`, ``, 1) + `,`, + `HostAliases:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HostAliases), "HostAlias", "HostAlias", 1), `&`, ``, 1) + `,`, + `PriorityClassName:` + fmt.Sprintf("%v", this.PriorityClassName) + `,`, + `Priority:` + valueToStringGenerated(this.Priority) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `ContainerStatuses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ContainerStatuses), "ContainerStatus", "ContainerStatus", 1), `&`, ``, 1) + `,`, + `QOSClass:` + fmt.Sprintf("%v", this.QOSClass) + `,`, + `InitContainerStatuses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.InitContainerStatuses), "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", "k8s_io_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSpec", "PodSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PortworxVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PortworxVolumeSource{`, + `VolumeID:` + fmt.Sprintf("%v", this.VolumeID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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 *ProjectedVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ProjectedVolumeSource{`, + `Sources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Sources), "VolumeProjection", "VolumeProjection", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.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 *ReplicationControllerCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ReplicationControllerCondition", "ReplicationControllerCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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_apimachinery_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", "k8s_io_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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 *ScaleIOVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleIOVolumeSource{`, + `Gateway:` + fmt.Sprintf("%v", this.Gateway) + `,`, + `System:` + fmt.Sprintf("%v", this.System) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `SSLEnabled:` + fmt.Sprintf("%v", this.SSLEnabled) + `,`, + `ProtectionDomain:` + fmt.Sprintf("%v", this.ProtectionDomain) + `,`, + `StoragePool:` + fmt.Sprintf("%v", this.StoragePool) + `,`, + `StorageMode:` + fmt.Sprintf("%v", this.StorageMode) + `,`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + mapStringForData + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `StringData:` + mapStringForStringData + `,`, + `}`, + }, "") + return s +} +func (this *SecretEnvSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretEnvSource{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Secret", "Secret", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SecretProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretProjection{`, + `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) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *SecretReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretReference{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + 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) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + 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) + `,`, + `AllowPrivilegeEscalation:` + valueToStringGenerated(this.AllowPrivilegeEscalation) + `,`, + `}`, + }, "") + 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", "k8s_io_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.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) + `,`, + `AutomountServiceAccountToken:` + valueToStringGenerated(this.AutomountServiceAccountToken) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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_apimachinery_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) + `,`, + `SessionAffinity:` + fmt.Sprintf("%v", this.SessionAffinity) + `,`, + `LoadBalancerIP:` + fmt.Sprintf("%v", this.LoadBalancerIP) + `,`, + `LoadBalancerSourceRanges:` + fmt.Sprintf("%v", this.LoadBalancerSourceRanges) + `,`, + `ExternalName:` + fmt.Sprintf("%v", this.ExternalName) + `,`, + `ExternalTrafficPolicy:` + fmt.Sprintf("%v", this.ExternalTrafficPolicy) + `,`, + `HealthCheckNodePort:` + fmt.Sprintf("%v", this.HealthCheckNodePort) + `,`, + `PublishNotReadyAddresses:` + fmt.Sprintf("%v", this.PublishNotReadyAddresses) + `,`, + `SessionAffinityConfig:` + strings.Replace(fmt.Sprintf("%v", this.SessionAffinityConfig), "SessionAffinityConfig", "SessionAffinityConfig", 1) + `,`, + `}`, + }, "") + 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 *SessionAffinityConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SessionAffinityConfig{`, + `ClientIP:` + strings.Replace(fmt.Sprintf("%v", this.ClientIP), "ClientIPConfig", "ClientIPConfig", 1) + `,`, + `}`, + }, "") + return s +} +func (this *StorageOSPersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageOSPersistentVolumeSource{`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `VolumeNamespace:` + fmt.Sprintf("%v", this.VolumeNamespace) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "ObjectReference", "ObjectReference", 1) + `,`, + `}`, + }, "") + return s +} +func (this *StorageOSVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageOSVolumeSource{`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `VolumeNamespace:` + fmt.Sprintf("%v", this.VolumeNamespace) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Sysctl) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Sysctl{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `}`, + }, "") + 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) + `,`, + `TimeAdded:` + strings.Replace(strings.Replace(this.TimeAdded.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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) + `,`, + `TolerationSeconds:` + valueToStringGenerated(this.TolerationSeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `MountPropagation:` + valueToStringGenerated(this.MountPropagation) + `,`, + `}`, + }, "") + return s +} +func (this *VolumeProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeProjection{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "SecretProjection", "SecretProjection", 1) + `,`, + `DownwardAPI:` + strings.Replace(fmt.Sprintf("%v", this.DownwardAPI), "DownwardAPIProjection", "DownwardAPIProjection", 1) + `,`, + `ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapProjection", "ConfigMapProjection", 1) + `,`, + `}`, + }, "") + 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) + `,`, + `PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`, + `PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`, + `ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`, + `Projected:` + strings.Replace(fmt.Sprintf("%v", this.Projected), "ProjectedVolumeSource", "ProjectedVolumeSource", 1) + `,`, + `StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSVolumeSource", "StorageOSVolumeSource", 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) + `,`, + `StoragePolicyName:` + fmt.Sprintf("%v", this.StoragePolicyName) + `,`, + `StoragePolicyID:` + fmt.Sprintf("%v", this.StoragePolicyID) + `,`, + `}`, + }, "") + 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 + case 6: + 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 + } + s := AzureDataDiskKind(dAtA[iNdEx:postIndex]) + m.Kind = &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 *AzureFilePersistentVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AzureFilePersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AzureFilePersistentVolumeSource: 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) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretNamespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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.SecretNamespace = &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 *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 *CephFSPersistentVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CephFSPersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CephFSPersistentVolumeSource: 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 = &SecretReference{} + } + 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 *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 *ClientIPConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClientIPConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClientIPConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", 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.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 *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 + if m.Data == nil { + m.Data = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Data[mapkey] = mapvalue + } else { + var mapvalue 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 *ConfigMapEnvSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapEnvSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapEnvSource: 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 != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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 + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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 *ConfigMapProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapProjection: 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 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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 + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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) + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EnvFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.EnvFrom = append(m.EnvFrom, EnvFromSource{}) + if err := m.EnvFrom[len(m.EnvFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationMessagePolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TerminationMessagePolicy = TerminationMessagePolicy(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 *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 + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PropagationPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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 := DeletionPropagation(dAtA[iNdEx:postIndex]) + m.PropagationPolicy = &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 *DownwardAPIProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DownwardAPIProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DownwardAPIProjection: 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SizeLimit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.SizeLimit == nil { + m.SizeLimit = &k8s_io_apimachinery_pkg_api_resource.Quantity{} + } + if err := m.SizeLimit.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 *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 *EnvFromSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EnvFromSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EnvFromSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Prefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ConfigMapRef == nil { + m.ConfigMapRef = &ConfigMapEnvSource{} + } + if err := m.ConfigMapRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 = &SecretEnvSource{} + } + if err := m.SecretRef.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 *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) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WWIDs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WWIDs = append(m.WWIDs, 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 *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 + if m.Options == nil { + m.Options = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Options[mapkey] = mapvalue + } else { + var mapvalue 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatasetUUID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatasetUUID = 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 *HostAlias) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostAlias: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostAlias: 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 Hostnames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostnames = append(m.Hostnames, 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 *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 + case 2: + 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 + } + s := HostPathType(dAtA[iNdEx:postIndex]) + m.Type = &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 *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) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Portals", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Portals = append(m.Portals, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryCHAPAuth", 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.DiscoveryCHAPAuth = bool(v != 0) + case 10: + 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 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionCHAPAuth", 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.SessionCHAPAuth = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatorName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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.InitiatorName = &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 *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 + if m.Max == nil { + m.Max = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Max[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Min == nil { + m.Min = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Min[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Default == nil { + m.Default = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Default[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.DefaultRequest == nil { + m.DefaultRequest = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.DefaultRequest[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.MaxLimitRequestRatio == nil { + m.MaxLimitRequestRatio = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.MaxLimitRequestRatio[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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_apimachinery_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 + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeUninitialized", 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.IncludeUninitialized = 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 *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 *LocalVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalVolumeSource: 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 *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 *NodeConfigSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeConfigSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeConfigSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ConfigMapRef == nil { + m.ConfigMapRef = &ObjectReference{} + } + if err := m.ConfigMapRef.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 *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 *NodeResources) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeResources: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeResources: 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 + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 *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) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Taints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Taints = append(m.Taints, Taint{}) + if err := m.Taints[len(m.Taints)-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 ConfigSource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ConfigSource == nil { + m.ConfigSource = &NodeConfigSource{} + } + if err := m.ConfigSource.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 *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 + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Allocatable == nil { + m.Allocatable = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Allocatable[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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_apimachinery_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_apimachinery_pkg_apis_meta_v1.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 + if m.Labels == nil { + m.Labels = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Labels[mapkey] = mapvalue + } else { + var mapvalue 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 + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Annotations[mapkey] = mapvalue + } else { + var mapvalue 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, k8s_io_apimachinery_pkg_apis_meta_v1.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 + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Initializers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Initializers == nil { + m.Initializers = &k8s_io_apimachinery_pkg_apis_meta_v1.Initializers{} + } + if err := m.Initializers.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 *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_apimachinery_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 *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 *PersistentVolumeClaimCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimCondition: 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 = PersistentVolumeClaimConditionType(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 *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_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageClassName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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.StorageClassName = &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 *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 + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Capacity[ResourceName(mapkey)] = mapvalue + } + 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, PersistentVolumeClaimCondition{}) + 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 *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 = &CephFSPersistentVolumeSource{} + } + 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 = &AzureFilePersistentVolumeSource{} + } + 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 + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PhotonPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.PhotonPersistentDisk == nil { + m.PhotonPersistentDisk = &PhotonPersistentDiskVolumeSource{} + } + if err := m.PhotonPersistentDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PortworxVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.PortworxVolume == nil { + m.PortworxVolume = &PortworxVolumeSource{} + } + if err := m.PortworxVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleIO", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ScaleIO == nil { + m.ScaleIO = &ScaleIOVolumeSource{} + } + if err := m.ScaleIO.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Local", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Local == nil { + m.Local = &LocalVolumeSource{} + } + if err := m.Local.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageOS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.StorageOS == nil { + m.StorageOS = &StorageOSPersistentVolumeSource{} + } + if err := m.StorageOS.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 + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageClassName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StorageClassName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountOptions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MountOptions = append(m.MountOptions, 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 *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 *PhotonPersistentDiskVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PhotonPersistentDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PhotonPersistentDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PdID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PdID = 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 *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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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 *PodPortForwardOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPortForwardOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPortForwardOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType == 0 { + 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.Ports = append(m.Ports, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + 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.Ports = append(m.Ports, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 { + 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) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + 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) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + 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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 + if m.NodeSelector == nil { + m.NodeSelector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.NodeSelector[mapkey] = mapvalue + } else { + var mapvalue 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 + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Affinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Affinity == nil { + m.Affinity = &Affinity{} + } + if err := m.Affinity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SchedulerName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SchedulerName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitContainers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.InitContainers = append(m.InitContainers, Container{}) + if err := m.InitContainers[len(m.InitContainers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutomountServiceAccountToken", 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.AutomountServiceAccountToken = &b + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Tolerations = append(m.Tolerations, Toleration{}) + if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostAliases", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.HostAliases = append(m.HostAliases, HostAlias{}) + if err := m.HostAliases[len(m.HostAliases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PriorityClassName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PriorityClassName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 25: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Priority", 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.Priority = &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 *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_apimachinery_pkg_apis_meta_v1.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 + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QOSClass", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QOSClass = PodQOSClass(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitContainerStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.InitContainerStatuses = append(m.InitContainerStatuses, ContainerStatus{}) + if err := m.InitContainerStatuses[len(m.InitContainerStatuses)-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 *PortworxVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PortworxVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PortworxVolumeSource: 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 *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_apimachinery_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 *ProjectedVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ProjectedVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ProjectedVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Sources = append(m.Sources, VolumeProjection{}) + if err := m.Sources[len(m.Sources)-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 *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 *ReplicationControllerCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerCondition: 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 = ReplicationControllerConditionType(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 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 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 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 *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 + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Selector[mapkey] = mapvalue + } else { + var mapvalue 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 + case 4: + 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 + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + } + } + case 5: + 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 6: + 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, ReplicationControllerCondition{}) + 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 *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 + if m.Hard == nil { + m.Hard = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Hard[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Hard == nil { + m.Hard = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Hard[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Used == nil { + m.Used = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Used[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Limits == nil { + m.Limits = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Limits[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 + if m.Requests == nil { + m.Requests = make(ResourceList) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Requests[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + 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 *ScaleIOVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleIOVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleIOVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Gateway", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Gateway = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field System", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.System = 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 SSLEnabled", 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.SSLEnabled = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProtectionDomain", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProtectionDomain = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePool", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoragePool = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StorageMode = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + 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 9: + 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 10: + 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 *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 + if m.Data == nil { + m.Data = make(map[string][]byte) + } + if iNdEx < postIndex { + 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 + m.Data[mapkey] = mapvalue + } else { + var mapvalue []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 + if m.StringData == nil { + m.StringData = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.StringData[mapkey] = mapvalue + } else { + var mapvalue 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 *SecretEnvSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretEnvSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretEnvSource: 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 != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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 + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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 *SecretProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretProjection: 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 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *SecretReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretReference: 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 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 (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 + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", 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.Optional = &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 *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 + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowPrivilegeEscalation", 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.AllowPrivilegeEscalation = &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 + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutomountServiceAccountToken", 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.AutomountServiceAccountToken = &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 *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 + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Selector[mapkey] = mapvalue + } else { + var mapvalue 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 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 + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalTrafficPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalTrafficPolicy = ServiceExternalTrafficPolicyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HealthCheckNodePort", wireType) + } + m.HealthCheckNodePort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.HealthCheckNodePort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PublishNotReadyAddresses", 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.PublishNotReadyAddresses = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionAffinityConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.SessionAffinityConfig == nil { + m.SessionAffinityConfig = &SessionAffinityConfig{} + } + if err := m.SessionAffinityConfig.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 *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 *SessionAffinityConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SessionAffinityConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SessionAffinityConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientIP", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ClientIP == nil { + m.ClientIP = &ClientIPConfig{} + } + if err := m.ClientIP.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 *StorageOSPersistentVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageOSPersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageOSPersistentVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeNamespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeNamespace = 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 != 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 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 = &ObjectReference{} + } + if err := m.SecretRef.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 *StorageOSVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageOSVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageOSVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeNamespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeNamespace = 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 != 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 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Sysctl) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Sysctl: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Sysctl: 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 *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 + 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 *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 + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeAdded", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.TimeAdded.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 *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 + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TolerationSeconds", 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.TolerationSeconds = &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 *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 + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountPropagation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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 := MountPropagationMode(dAtA[iNdEx:postIndex]) + m.MountPropagation = &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 *VolumeProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeProjection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 = &SecretProjection{} + } + if err := m.Secret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + 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 = &DownwardAPIProjection{} + } + if err := m.DownwardAPI.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + 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 = &ConfigMapProjection{} + } + if err := m.ConfigMap.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 *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 + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PhotonPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.PhotonPersistentDisk == nil { + m.PhotonPersistentDisk = &PhotonPersistentDiskVolumeSource{} + } + if err := m.PhotonPersistentDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PortworxVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.PortworxVolume == nil { + m.PortworxVolume = &PortworxVolumeSource{} + } + if err := m.PortworxVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleIO", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.ScaleIO == nil { + m.ScaleIO = &ScaleIOVolumeSource{} + } + if err := m.ScaleIO.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Projected", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Projected == nil { + m.Projected = &ProjectedVolumeSource{} + } + if err := m.Projected.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 27: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageOS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.StorageOS == nil { + m.StorageOS = &StorageOSVolumeSource{} + } + if err := m.StorageOS.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 + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePolicyName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoragePolicyName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePolicyID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoragePolicyID = 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/core/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 11834 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x70, 0x24, 0xd7, + 0x75, 0x18, 0xac, 0x9e, 0xc1, 0x6b, 0x0e, 0xde, 0x77, 0xb1, 0xe4, 0x10, 0x24, 0x17, 0xcb, 0xa6, + 0x44, 0x2e, 0x5f, 0x80, 0xb8, 0x24, 0x45, 0x5a, 0xa4, 0x68, 0x03, 0x18, 0x60, 0x17, 0xdc, 0xc5, + 0xee, 0xf0, 0x0e, 0x76, 0x69, 0x52, 0x34, 0x3f, 0x35, 0xa6, 0x2f, 0x80, 0x26, 0x1a, 0xdd, 0xc3, + 0xee, 0x1e, 0xec, 0x82, 0x65, 0x57, 0x7d, 0x51, 0x64, 0xe5, 0x21, 0xff, 0x70, 0x25, 0xaa, 0xc4, + 0xb1, 0x54, 0x4e, 0x55, 0x1e, 0x65, 0x2b, 0x4e, 0x52, 0x71, 0xe4, 0xd8, 0x8e, 0xe4, 0x54, 0x1c, + 0xe7, 0x51, 0xf2, 0x1f, 0xc5, 0xce, 0x1f, 0xa9, 0x2a, 0x15, 0xd8, 0x5a, 0xa5, 0x92, 0xf2, 0x8f, + 0xa4, 0x92, 0xf8, 0x97, 0x11, 0x27, 0x4a, 0xdd, 0x67, 0xdf, 0xdb, 0xd3, 0x3d, 0x33, 0x58, 0x62, + 0x41, 0x4a, 0xe5, 0x7f, 0x33, 0xe7, 0x9c, 0x7b, 0xee, 0xed, 0xfb, 0x38, 0xf7, 0xdc, 0x73, 0xcf, + 0x39, 0x17, 0x5e, 0xde, 0x7d, 0x29, 0x9e, 0xf7, 0xc2, 0x85, 0xdd, 0xf6, 0x26, 0x89, 0x02, 0x92, + 0x90, 0x78, 0x61, 0x9f, 0x04, 0x6e, 0x18, 0x2d, 0x08, 0x84, 0xd3, 0xf2, 0x16, 0x9a, 0x61, 0x44, + 0x16, 0xf6, 0x9f, 0x5d, 0xd8, 0x26, 0x01, 0x89, 0x9c, 0x84, 0xb8, 0xf3, 0xad, 0x28, 0x4c, 0x42, + 0x84, 0x38, 0xcd, 0xbc, 0xd3, 0xf2, 0xe6, 0x29, 0xcd, 0xfc, 0xfe, 0xb3, 0xb3, 0xcf, 0x6c, 0x7b, + 0xc9, 0x4e, 0x7b, 0x73, 0xbe, 0x19, 0xee, 0x2d, 0x6c, 0x87, 0xdb, 0xe1, 0x02, 0x23, 0xdd, 0x6c, + 0x6f, 0xb1, 0x7f, 0xec, 0x0f, 0xfb, 0xc5, 0x59, 0xcc, 0xae, 0xa7, 0xd5, 0x90, 0xdb, 0x09, 0x09, + 0x62, 0x2f, 0x0c, 0xe2, 0x67, 0x9c, 0x96, 0x17, 0x93, 0x68, 0x9f, 0x44, 0x0b, 0xad, 0xdd, 0x6d, + 0x8a, 0x8b, 0x4d, 0x82, 0x85, 0xfd, 0x67, 0x37, 0x49, 0xe2, 0x74, 0xb4, 0x68, 0xf6, 0xf9, 0x94, + 0xdd, 0x9e, 0xd3, 0xdc, 0xf1, 0x02, 0x12, 0x1d, 0x48, 0x1e, 0x0b, 0x11, 0x89, 0xc3, 0x76, 0xd4, + 0x24, 0xc7, 0x2a, 0x15, 0x2f, 0xec, 0x91, 0xc4, 0xc9, 0xf9, 0xfa, 0xd9, 0x85, 0xa2, 0x52, 0x51, + 0x3b, 0x48, 0xbc, 0xbd, 0xce, 0x6a, 0x3e, 0xd5, 0xab, 0x40, 0xdc, 0xdc, 0x21, 0x7b, 0x4e, 0x47, + 0xb9, 0xe7, 0x8a, 0xca, 0xb5, 0x13, 0xcf, 0x5f, 0xf0, 0x82, 0x24, 0x4e, 0xa2, 0x6c, 0x21, 0xfb, + 0x3b, 0x16, 0x9c, 0x5f, 0x7c, 0xa3, 0xb1, 0xe2, 0x3b, 0x71, 0xe2, 0x35, 0x97, 0xfc, 0xb0, 0xb9, + 0xdb, 0x48, 0xc2, 0x88, 0xdc, 0x0c, 0xfd, 0xf6, 0x1e, 0x69, 0xb0, 0x8e, 0x40, 0x4f, 0xc3, 0xc8, + 0x3e, 0xfb, 0xbf, 0x56, 0xab, 0x5a, 0xe7, 0xad, 0x0b, 0x95, 0xa5, 0xa9, 0x6f, 0x1d, 0xce, 0x7d, + 0xec, 0xce, 0xe1, 0xdc, 0xc8, 0x4d, 0x01, 0xc7, 0x8a, 0x02, 0x3d, 0x06, 0x43, 0x5b, 0xf1, 0xc6, + 0x41, 0x8b, 0x54, 0x4b, 0x8c, 0x76, 0x42, 0xd0, 0x0e, 0xad, 0x36, 0x28, 0x14, 0x0b, 0x2c, 0x5a, + 0x80, 0x4a, 0xcb, 0x89, 0x12, 0x2f, 0xf1, 0xc2, 0xa0, 0x5a, 0x3e, 0x6f, 0x5d, 0x18, 0x5c, 0x9a, + 0x16, 0xa4, 0x95, 0xba, 0x44, 0xe0, 0x94, 0x86, 0x36, 0x23, 0x22, 0x8e, 0x7b, 0x3d, 0xf0, 0x0f, + 0xaa, 0x03, 0xe7, 0xad, 0x0b, 0x23, 0x69, 0x33, 0xb0, 0x80, 0x63, 0x45, 0x61, 0xff, 0x62, 0x09, + 0x46, 0x16, 0xb7, 0xb6, 0xbc, 0xc0, 0x4b, 0x0e, 0xd0, 0x4d, 0x18, 0x0b, 0x42, 0x97, 0xc8, 0xff, + 0xec, 0x2b, 0x46, 0x2f, 0x9e, 0x9f, 0xef, 0x9c, 0x99, 0xf3, 0xd7, 0x34, 0xba, 0xa5, 0xa9, 0x3b, + 0x87, 0x73, 0x63, 0x3a, 0x04, 0x1b, 0x7c, 0x10, 0x86, 0xd1, 0x56, 0xe8, 0x2a, 0xb6, 0x25, 0xc6, + 0x76, 0x2e, 0x8f, 0x6d, 0x3d, 0x25, 0x5b, 0x9a, 0xbc, 0x73, 0x38, 0x37, 0xaa, 0x01, 0xb0, 0xce, + 0x04, 0x6d, 0xc2, 0x24, 0xfd, 0x1b, 0x24, 0x9e, 0xe2, 0x5b, 0x66, 0x7c, 0x1f, 0x2d, 0xe2, 0xab, + 0x91, 0x2e, 0x9d, 0xb9, 0x73, 0x38, 0x37, 0x99, 0x01, 0xe2, 0x2c, 0x43, 0xfb, 0x7d, 0x98, 0x58, + 0x4c, 0x12, 0xa7, 0xb9, 0x43, 0x5c, 0x3e, 0x82, 0xe8, 0x79, 0x18, 0x08, 0x9c, 0x3d, 0x22, 0xc6, + 0xf7, 0xbc, 0xe8, 0xd8, 0x81, 0x6b, 0xce, 0x1e, 0x39, 0x3a, 0x9c, 0x9b, 0xba, 0x11, 0x78, 0xef, + 0xb5, 0xc5, 0xac, 0xa0, 0x30, 0xcc, 0xa8, 0xd1, 0x45, 0x00, 0x97, 0xec, 0x7b, 0x4d, 0x52, 0x77, + 0x92, 0x1d, 0x31, 0xde, 0x48, 0x94, 0x85, 0x9a, 0xc2, 0x60, 0x8d, 0xca, 0xbe, 0x0d, 0x95, 0xc5, + 0xfd, 0xd0, 0x73, 0xeb, 0xa1, 0x1b, 0xa3, 0x5d, 0x98, 0x6c, 0x45, 0x64, 0x8b, 0x44, 0x0a, 0x54, + 0xb5, 0xce, 0x97, 0x2f, 0x8c, 0x5e, 0xbc, 0x90, 0xfb, 0xb1, 0x26, 0xe9, 0x4a, 0x90, 0x44, 0x07, + 0x4b, 0xf7, 0x8b, 0xfa, 0x26, 0x33, 0x58, 0x9c, 0xe5, 0x6c, 0xff, 0x9b, 0x12, 0x9c, 0x5d, 0x7c, + 0xbf, 0x1d, 0x91, 0x9a, 0x17, 0xef, 0x66, 0x67, 0xb8, 0xeb, 0xc5, 0xbb, 0xd7, 0xd2, 0x1e, 0x50, + 0x53, 0xab, 0x26, 0xe0, 0x58, 0x51, 0xa0, 0x67, 0x60, 0x98, 0xfe, 0xbe, 0x81, 0xd7, 0xc4, 0x27, + 0x9f, 0x11, 0xc4, 0xa3, 0x35, 0x27, 0x71, 0x6a, 0x1c, 0x85, 0x25, 0x0d, 0x5a, 0x87, 0xd1, 0x26, + 0x5b, 0x90, 0xdb, 0xeb, 0xa1, 0x4b, 0xd8, 0x60, 0x56, 0x96, 0x9e, 0xa2, 0xe4, 0xcb, 0x29, 0xf8, + 0xe8, 0x70, 0xae, 0xca, 0xdb, 0x26, 0x58, 0x68, 0x38, 0xac, 0x97, 0x47, 0xb6, 0x5a, 0x5f, 0x03, + 0x8c, 0x13, 0xe4, 0xac, 0xad, 0x0b, 0xda, 0x52, 0x19, 0x64, 0x4b, 0x65, 0x2c, 0x7f, 0x99, 0xa0, + 0x67, 0x61, 0x60, 0xd7, 0x0b, 0xdc, 0xea, 0x10, 0xe3, 0xf5, 0x30, 0x1d, 0xf3, 0x2b, 0x5e, 0xe0, + 0x1e, 0x1d, 0xce, 0x4d, 0x1b, 0xcd, 0xa1, 0x40, 0xcc, 0x48, 0xed, 0x3f, 0xb1, 0x60, 0x8e, 0xe1, + 0x56, 0x3d, 0x9f, 0xd4, 0x49, 0x14, 0x7b, 0x71, 0x42, 0x82, 0xc4, 0xe8, 0xd0, 0x8b, 0x00, 0x31, + 0x69, 0x46, 0x24, 0xd1, 0xba, 0x54, 0x4d, 0x8c, 0x86, 0xc2, 0x60, 0x8d, 0x8a, 0x0a, 0x84, 0x78, + 0xc7, 0x89, 0xd8, 0xfc, 0x12, 0x1d, 0xab, 0x04, 0x42, 0x43, 0x22, 0x70, 0x4a, 0x63, 0x08, 0x84, + 0x72, 0x2f, 0x81, 0x80, 0x3e, 0x03, 0x93, 0x69, 0x65, 0x71, 0xcb, 0x69, 0xca, 0x0e, 0x64, 0x4b, + 0xa6, 0x61, 0xa2, 0x70, 0x96, 0xd6, 0xfe, 0x07, 0x96, 0x98, 0x3c, 0xf4, 0xab, 0x3f, 0xe2, 0xdf, + 0x6a, 0xff, 0x96, 0x05, 0xc3, 0x4b, 0x5e, 0xe0, 0x7a, 0xc1, 0x36, 0xfa, 0x1c, 0x8c, 0xd0, 0xbd, + 0xc9, 0x75, 0x12, 0x47, 0xc8, 0xbd, 0x4f, 0x6a, 0x6b, 0x4b, 0x6d, 0x15, 0xf3, 0xad, 0xdd, 0x6d, + 0x0a, 0x88, 0xe7, 0x29, 0x35, 0x5d, 0x6d, 0xd7, 0x37, 0xdf, 0x25, 0xcd, 0x64, 0x9d, 0x24, 0x4e, + 0xfa, 0x39, 0x29, 0x0c, 0x2b, 0xae, 0xe8, 0x0a, 0x0c, 0x25, 0x4e, 0xb4, 0x4d, 0x12, 0x21, 0x00, + 0x73, 0x05, 0x15, 0x2f, 0x89, 0xe9, 0x8a, 0x24, 0x41, 0x93, 0xa4, 0xdb, 0xc2, 0x06, 0x2b, 0x8a, + 0x05, 0x0b, 0xbb, 0x09, 0x63, 0xcb, 0x4e, 0xcb, 0xd9, 0xf4, 0x7c, 0x2f, 0xf1, 0x48, 0x8c, 0x1e, + 0x87, 0xb2, 0xe3, 0xba, 0x4c, 0x2a, 0x54, 0x96, 0xce, 0xde, 0x39, 0x9c, 0x2b, 0x2f, 0xba, 0x74, + 0x7a, 0x82, 0xa2, 0x3a, 0xc0, 0x94, 0x02, 0x3d, 0x09, 0x03, 0x6e, 0x14, 0xb6, 0xaa, 0x25, 0x46, + 0x79, 0x1f, 0x9d, 0xc9, 0xb5, 0x28, 0x6c, 0x65, 0x48, 0x19, 0x8d, 0xfd, 0x3b, 0x25, 0x78, 0x68, + 0x99, 0xb4, 0x76, 0x56, 0x1b, 0x05, 0xf3, 0xf7, 0x02, 0x8c, 0xec, 0x85, 0x81, 0x97, 0x84, 0x51, + 0x2c, 0xaa, 0x66, 0x0b, 0x68, 0x5d, 0xc0, 0xb0, 0xc2, 0xa2, 0xf3, 0x30, 0xd0, 0x4a, 0x85, 0xdf, + 0x98, 0x14, 0x9c, 0x4c, 0xec, 0x31, 0x0c, 0xa5, 0x68, 0xc7, 0x24, 0x12, 0x0b, 0x5f, 0x51, 0xdc, + 0x88, 0x49, 0x84, 0x19, 0x26, 0x9d, 0x41, 0x74, 0x6e, 0x89, 0x59, 0x99, 0x99, 0x41, 0x14, 0x83, + 0x35, 0x2a, 0x54, 0x87, 0x0a, 0xff, 0x87, 0xc9, 0x16, 0x5b, 0xe3, 0x05, 0xfd, 0xde, 0x90, 0x44, + 0xa2, 0xdf, 0xc7, 0xd9, 0x14, 0x93, 0x40, 0x9c, 0x32, 0x31, 0xa6, 0xd8, 0x50, 0xcf, 0x29, 0xf6, + 0xcd, 0x12, 0x20, 0xde, 0x85, 0x3f, 0x64, 0x1d, 0x77, 0xa3, 0xb3, 0xe3, 0x72, 0x37, 0x9b, 0xab, + 0x61, 0xd3, 0xf1, 0xb3, 0xb3, 0xf6, 0xa4, 0x7a, 0xef, 0x17, 0x2c, 0x40, 0xcb, 0x5e, 0xe0, 0x92, + 0xe8, 0x14, 0x34, 0xad, 0xe3, 0xc9, 0x8e, 0xab, 0x30, 0xb1, 0xec, 0x7b, 0x24, 0x48, 0xd6, 0xea, + 0xcb, 0x61, 0xb0, 0xe5, 0x6d, 0xa3, 0x4f, 0xc3, 0x04, 0x55, 0x3c, 0xc3, 0x76, 0xd2, 0x20, 0xcd, + 0x30, 0x60, 0x7b, 0x34, 0x55, 0xd7, 0xd0, 0x9d, 0xc3, 0xb9, 0x89, 0x0d, 0x03, 0x83, 0x33, 0x94, + 0xf6, 0x7f, 0xa4, 0x1f, 0x1a, 0xee, 0xb5, 0xc2, 0x80, 0x04, 0xc9, 0x72, 0x18, 0xb8, 0x5c, 0x97, + 0xfb, 0x34, 0x0c, 0x24, 0xb4, 0xe1, 0xfc, 0x23, 0x1f, 0x93, 0x43, 0x4b, 0x9b, 0x7b, 0x74, 0x38, + 0x77, 0x5f, 0x67, 0x09, 0xf6, 0x41, 0xac, 0x0c, 0xfa, 0x31, 0x18, 0x8a, 0x13, 0x27, 0x69, 0xc7, + 0xe2, 0xb3, 0x1f, 0x91, 0x9f, 0xdd, 0x60, 0xd0, 0xa3, 0xc3, 0xb9, 0x49, 0x55, 0x8c, 0x83, 0xb0, + 0x28, 0x80, 0x9e, 0x80, 0xe1, 0x3d, 0x12, 0xc7, 0xce, 0xb6, 0xdc, 0x86, 0x27, 0x45, 0xd9, 0xe1, + 0x75, 0x0e, 0xc6, 0x12, 0x8f, 0x1e, 0x85, 0x41, 0x12, 0x45, 0x61, 0x24, 0x66, 0xd5, 0xb8, 0x20, + 0x1c, 0x5c, 0xa1, 0x40, 0xcc, 0x71, 0xf6, 0xbf, 0xb7, 0x60, 0x52, 0xb5, 0x95, 0xd7, 0x75, 0x0a, + 0xf2, 0xf6, 0x2d, 0x80, 0xa6, 0xfc, 0xc0, 0x98, 0xc9, 0xbb, 0xd1, 0x8b, 0x8f, 0xe5, 0x4d, 0xe1, + 0xce, 0x6e, 0x4c, 0x39, 0x2b, 0x50, 0x8c, 0x35, 0x6e, 0xf6, 0xbf, 0xb0, 0xe0, 0x4c, 0xe6, 0x8b, + 0xae, 0x7a, 0x71, 0x82, 0xde, 0xee, 0xf8, 0xaa, 0xf9, 0xfe, 0xbe, 0x8a, 0x96, 0x66, 0xdf, 0xa4, + 0xe6, 0x9c, 0x84, 0x68, 0x5f, 0x74, 0x19, 0x06, 0xbd, 0x84, 0xec, 0xc9, 0x8f, 0x79, 0xb4, 0xeb, + 0xc7, 0xf0, 0x56, 0xa5, 0x23, 0xb2, 0x46, 0x4b, 0x62, 0xce, 0xc0, 0xfe, 0x9f, 0x16, 0x54, 0xf8, + 0xb4, 0x5d, 0x77, 0x5a, 0xa7, 0x30, 0x16, 0x6b, 0x30, 0xc0, 0xb8, 0xf3, 0x86, 0x3f, 0x9e, 0xdf, + 0x70, 0xd1, 0x9c, 0x79, 0xaa, 0x4c, 0x71, 0xa5, 0x55, 0x09, 0x33, 0x0a, 0xc2, 0x8c, 0xc5, 0xec, + 0x8b, 0x50, 0x51, 0x04, 0x68, 0x0a, 0xca, 0xbb, 0x84, 0x1f, 0x54, 0x2a, 0x98, 0xfe, 0x44, 0x33, + 0x30, 0xb8, 0xef, 0xf8, 0x6d, 0xb1, 0xd8, 0x31, 0xff, 0xf3, 0xe9, 0xd2, 0x4b, 0x96, 0xfd, 0x0d, + 0xb6, 0xc6, 0x44, 0x25, 0x2b, 0xc1, 0xbe, 0x10, 0x26, 0xef, 0xc3, 0x8c, 0x9f, 0x23, 0xc3, 0x44, + 0x47, 0xf4, 0x2f, 0xf3, 0x1e, 0x12, 0x6d, 0x9d, 0xc9, 0xc3, 0xe2, 0xdc, 0x3a, 0xe8, 0x36, 0x10, + 0xb6, 0xe8, 0x8c, 0x72, 0x7c, 0xd6, 0x5e, 0xa1, 0x80, 0x5e, 0x17, 0x30, 0xac, 0xb0, 0x54, 0x40, + 0xcc, 0xa8, 0xc6, 0x5f, 0x21, 0x07, 0x0d, 0xe2, 0x93, 0x66, 0x12, 0x46, 0x1f, 0x6a, 0xf3, 0x1f, + 0xe6, 0xbd, 0xcf, 0xe5, 0xcb, 0xa8, 0x60, 0x50, 0xbe, 0x42, 0x0e, 0xf8, 0x50, 0xe8, 0x5f, 0x57, + 0xee, 0xfa, 0x75, 0xbf, 0x66, 0xc1, 0xb8, 0xfa, 0xba, 0x53, 0x58, 0x48, 0x4b, 0xe6, 0x42, 0x7a, + 0xb8, 0xeb, 0x7c, 0x2c, 0x58, 0x42, 0x3f, 0x60, 0x22, 0x40, 0xd0, 0xd4, 0xa3, 0x90, 0x76, 0x0d, + 0x95, 0xd9, 0x1f, 0xe6, 0x80, 0xf4, 0xf3, 0x5d, 0x57, 0xc8, 0xc1, 0x46, 0x48, 0xd5, 0x87, 0xfc, + 0xef, 0x32, 0x46, 0x6d, 0xa0, 0xeb, 0xa8, 0xfd, 0x7a, 0x09, 0xce, 0xaa, 0x1e, 0x30, 0x36, 0xe8, + 0x1f, 0xf6, 0x3e, 0x78, 0x16, 0x46, 0x5d, 0xb2, 0xe5, 0xb4, 0xfd, 0x44, 0x9d, 0x45, 0x07, 0xb9, + 0x3d, 0xa2, 0x96, 0x82, 0xb1, 0x4e, 0x73, 0x8c, 0x6e, 0xfb, 0xb7, 0xc0, 0x64, 0x6f, 0xe2, 0xd0, + 0x19, 0x4c, 0xb5, 0x37, 0xcd, 0xa2, 0x30, 0xa6, 0x5b, 0x14, 0x84, 0xf5, 0xe0, 0x51, 0x18, 0xf4, + 0xf6, 0xe8, 0x5e, 0x5c, 0x32, 0xb7, 0xd8, 0x35, 0x0a, 0xc4, 0x1c, 0x87, 0x3e, 0x01, 0xc3, 0xcd, + 0x70, 0x6f, 0xcf, 0x09, 0xdc, 0x6a, 0x99, 0xe9, 0x93, 0xa3, 0x74, 0xbb, 0x5e, 0xe6, 0x20, 0x2c, + 0x71, 0xe8, 0x21, 0x18, 0x70, 0xa2, 0xed, 0xb8, 0x3a, 0xc0, 0x68, 0x46, 0x68, 0x4d, 0x8b, 0xd1, + 0x76, 0x8c, 0x19, 0x94, 0xea, 0x89, 0xb7, 0xc2, 0x68, 0xd7, 0x0b, 0xb6, 0x6b, 0x5e, 0xc4, 0x94, + 0x3e, 0x4d, 0x4f, 0x7c, 0x43, 0x61, 0xb0, 0x46, 0x85, 0x56, 0x61, 0xb0, 0x15, 0x46, 0x49, 0x5c, + 0x1d, 0x62, 0xdd, 0xfd, 0x48, 0xc1, 0x52, 0xe2, 0x5f, 0x5b, 0x0f, 0xa3, 0x24, 0xfd, 0x00, 0xfa, + 0x2f, 0xc6, 0xbc, 0x38, 0xfa, 0x31, 0x28, 0x93, 0x60, 0xbf, 0x3a, 0xcc, 0xb8, 0xcc, 0xe6, 0x71, + 0x59, 0x09, 0xf6, 0x6f, 0x3a, 0x51, 0x2a, 0x67, 0x56, 0x82, 0x7d, 0x4c, 0xcb, 0xa0, 0x37, 0xa1, + 0x22, 0xad, 0x91, 0x71, 0x75, 0xa4, 0x78, 0x8a, 0x61, 0x41, 0x84, 0xc9, 0x7b, 0x6d, 0x2f, 0x22, + 0x7b, 0x24, 0x48, 0xe2, 0xf4, 0x3c, 0x29, 0xb1, 0x31, 0x4e, 0xb9, 0xa1, 0x37, 0x61, 0x8c, 0xeb, + 0x91, 0xeb, 0x61, 0x3b, 0x48, 0xe2, 0x6a, 0x85, 0x35, 0x2f, 0xd7, 0x74, 0x75, 0x33, 0xa5, 0x5b, + 0x9a, 0x11, 0x4c, 0xc7, 0x34, 0x60, 0x8c, 0x0d, 0x56, 0x08, 0xc3, 0xb8, 0xef, 0xed, 0x93, 0x80, + 0xc4, 0x71, 0x3d, 0x0a, 0x37, 0x49, 0x15, 0x58, 0xcb, 0x1f, 0xc8, 0xb7, 0xe8, 0x84, 0x9b, 0x64, + 0x69, 0xfa, 0xce, 0xe1, 0xdc, 0xf8, 0x55, 0xbd, 0x0c, 0x36, 0x59, 0xa0, 0x1b, 0x30, 0x41, 0x15, + 0x54, 0x2f, 0x65, 0x3a, 0xda, 0x8b, 0x29, 0xd3, 0x4e, 0xb1, 0x51, 0x08, 0x67, 0x98, 0xa0, 0xd7, + 0xa0, 0xe2, 0x7b, 0x5b, 0xa4, 0x79, 0xd0, 0xf4, 0x49, 0x75, 0x8c, 0x71, 0xcc, 0x5d, 0x56, 0x57, + 0x25, 0x11, 0x3f, 0x00, 0xa8, 0xbf, 0x38, 0x2d, 0x8e, 0x6e, 0xc2, 0x7d, 0x09, 0x89, 0xf6, 0xbc, + 0xc0, 0xa1, 0xcb, 0x41, 0xe8, 0x93, 0xcc, 0x2e, 0x36, 0xce, 0xe6, 0xdb, 0x39, 0xd1, 0x75, 0xf7, + 0x6d, 0xe4, 0x52, 0xe1, 0x82, 0xd2, 0xe8, 0x3a, 0x4c, 0xb2, 0x95, 0x50, 0x6f, 0xfb, 0x7e, 0x3d, + 0xf4, 0xbd, 0xe6, 0x41, 0x75, 0x82, 0x31, 0xfc, 0x84, 0x34, 0x7c, 0xad, 0x99, 0x68, 0x7a, 0xe2, + 0x4d, 0xff, 0xe1, 0x6c, 0x69, 0xb4, 0xc9, 0x0c, 0x21, 0xed, 0xc8, 0x4b, 0x0e, 0xe8, 0xfc, 0x25, + 0xb7, 0x93, 0xea, 0x64, 0xd7, 0xf3, 0xa3, 0x4e, 0xaa, 0xac, 0x25, 0x3a, 0x10, 0x67, 0x19, 0xd2, + 0xa5, 0x1d, 0x27, 0xae, 0x17, 0x54, 0xa7, 0x98, 0xc4, 0x50, 0x2b, 0xa3, 0x41, 0x81, 0x98, 0xe3, + 0x98, 0x11, 0x84, 0xfe, 0xb8, 0x4e, 0x25, 0xe8, 0x34, 0x23, 0x4c, 0x8d, 0x20, 0x12, 0x81, 0x53, + 0x1a, 0xba, 0x2d, 0x27, 0xc9, 0x41, 0x15, 0x31, 0x52, 0xb5, 0x5c, 0x36, 0x36, 0xde, 0xc4, 0x14, + 0x8e, 0xae, 0xc2, 0x30, 0x09, 0xf6, 0x57, 0xa3, 0x70, 0xaf, 0x7a, 0xa6, 0x78, 0xcd, 0xae, 0x70, + 0x12, 0x2e, 0xd0, 0xd3, 0x03, 0x80, 0x00, 0x63, 0xc9, 0x02, 0xdd, 0x86, 0x6a, 0xce, 0x88, 0xf0, + 0x01, 0x98, 0x61, 0x03, 0xf0, 0x8a, 0x28, 0x5b, 0xdd, 0x28, 0xa0, 0x3b, 0xea, 0x82, 0xc3, 0x85, + 0xdc, 0xed, 0x4d, 0x98, 0x50, 0x82, 0x85, 0x8d, 0x2d, 0x9a, 0x83, 0x41, 0x2a, 0x31, 0xe5, 0x91, + 0xba, 0x42, 0xbb, 0x92, 0x99, 0xa6, 0x30, 0x87, 0xb3, 0xae, 0xf4, 0xde, 0x27, 0x4b, 0x07, 0x09, + 0xe1, 0xc7, 0xa2, 0xb2, 0xd6, 0x95, 0x12, 0x81, 0x53, 0x1a, 0xfb, 0xff, 0x72, 0xc5, 0x24, 0x95, + 0x5e, 0x7d, 0xc8, 0xeb, 0xa7, 0x61, 0x64, 0x27, 0x8c, 0x13, 0x4a, 0xcd, 0xea, 0x18, 0x4c, 0x55, + 0x91, 0xcb, 0x02, 0x8e, 0x15, 0x05, 0x7a, 0x19, 0xc6, 0x9b, 0x7a, 0x05, 0x62, 0xb3, 0x39, 0x2b, + 0x8a, 0x98, 0xb5, 0x63, 0x93, 0x16, 0xbd, 0x04, 0x23, 0xec, 0x82, 0xa2, 0x19, 0xfa, 0xe2, 0x00, + 0x26, 0x77, 0xcc, 0x91, 0xba, 0x80, 0x1f, 0x69, 0xbf, 0xb1, 0xa2, 0xa6, 0x87, 0x62, 0xda, 0x84, + 0xb5, 0xba, 0x10, 0xf3, 0xea, 0x50, 0x7c, 0x99, 0x41, 0xb1, 0xc0, 0xda, 0x7f, 0xad, 0xa4, 0xf5, + 0x32, 0x3d, 0x52, 0x10, 0x54, 0x87, 0xe1, 0x5b, 0x8e, 0x97, 0x78, 0xc1, 0xb6, 0xd8, 0xcf, 0x9f, + 0xe8, 0x2a, 0xf3, 0x59, 0xa1, 0x37, 0x78, 0x01, 0xbe, 0x2b, 0x89, 0x3f, 0x58, 0xb2, 0xa1, 0x1c, + 0xa3, 0x76, 0x10, 0x50, 0x8e, 0xa5, 0x7e, 0x39, 0x62, 0x5e, 0x80, 0x73, 0x14, 0x7f, 0xb0, 0x64, + 0x83, 0xde, 0x06, 0x90, 0xf3, 0x86, 0xb8, 0xe2, 0x62, 0xe0, 0xe9, 0xde, 0x4c, 0x37, 0x54, 0x99, + 0xa5, 0x09, 0xba, 0xe7, 0xa5, 0xff, 0xb1, 0xc6, 0xcf, 0x4e, 0x98, 0xde, 0xd3, 0xd9, 0x18, 0xf4, + 0x59, 0xba, 0x54, 0x9d, 0x28, 0x21, 0xee, 0x62, 0x22, 0x3a, 0xe7, 0xc9, 0xfe, 0xd4, 0xd6, 0x0d, + 0x6f, 0x8f, 0xe8, 0xcb, 0x5a, 0x30, 0xc1, 0x29, 0x3f, 0xfb, 0x37, 0xcb, 0x50, 0x2d, 0x6a, 0x2e, + 0x9d, 0x74, 0xe4, 0xb6, 0x97, 0x2c, 0x53, 0x75, 0xc5, 0x32, 0x27, 0xdd, 0x8a, 0x80, 0x63, 0x45, + 0x41, 0x47, 0x3f, 0xf6, 0xb6, 0xe5, 0xa9, 0x63, 0x30, 0x1d, 0xfd, 0x06, 0x83, 0x62, 0x81, 0xa5, + 0x74, 0x11, 0x71, 0x62, 0x71, 0xf3, 0xa4, 0xcd, 0x12, 0xcc, 0xa0, 0x58, 0x60, 0x75, 0x83, 0xc1, + 0x40, 0x0f, 0x83, 0x81, 0xd1, 0x45, 0x83, 0x27, 0xdb, 0x45, 0xe8, 0x1d, 0x80, 0x2d, 0x2f, 0xf0, + 0xe2, 0x1d, 0xc6, 0x7d, 0xe8, 0xd8, 0xdc, 0x95, 0xb2, 0xb3, 0xaa, 0xb8, 0x60, 0x8d, 0x23, 0x7a, + 0x01, 0x46, 0xd5, 0x02, 0x5c, 0xab, 0x55, 0x87, 0xcd, 0x6b, 0x8d, 0x54, 0x1a, 0xd5, 0xb0, 0x4e, + 0x67, 0xbf, 0x9b, 0x9d, 0x2f, 0x62, 0x05, 0x68, 0xfd, 0x6b, 0xf5, 0xdb, 0xbf, 0xa5, 0xee, 0xfd, + 0x6b, 0xff, 0x6e, 0x19, 0x26, 0x8d, 0xca, 0xda, 0x71, 0x1f, 0x32, 0xeb, 0x12, 0xdd, 0x88, 0x9c, + 0x84, 0x88, 0xf5, 0x67, 0xf7, 0x5e, 0x2a, 0xfa, 0x66, 0x45, 0x57, 0x00, 0x2f, 0x8f, 0xde, 0x81, + 0x8a, 0xef, 0xc4, 0xcc, 0xf8, 0x40, 0xc4, 0xba, 0xeb, 0x87, 0x59, 0xaa, 0xe8, 0x3b, 0x71, 0xa2, + 0xed, 0x05, 0x9c, 0x77, 0xca, 0x92, 0xee, 0x98, 0x54, 0x39, 0x91, 0x57, 0x9b, 0xaa, 0x11, 0x54, + 0x83, 0x39, 0xc0, 0x1c, 0x87, 0x5e, 0x82, 0xb1, 0x88, 0xb0, 0x59, 0xb1, 0x4c, 0x75, 0x2d, 0x36, + 0xcd, 0x06, 0x53, 0xa5, 0x0c, 0x6b, 0x38, 0x6c, 0x50, 0xa6, 0xba, 0xf6, 0x50, 0x17, 0x5d, 0xfb, + 0x09, 0x18, 0x66, 0x3f, 0xd4, 0x0c, 0x50, 0xa3, 0xb1, 0xc6, 0xc1, 0x58, 0xe2, 0xb3, 0x13, 0x66, + 0xa4, 0xcf, 0x09, 0xf3, 0x24, 0x4c, 0xd4, 0x1c, 0xb2, 0x17, 0x06, 0x2b, 0x81, 0xdb, 0x0a, 0xbd, + 0x20, 0x41, 0x55, 0x18, 0x60, 0xbb, 0x03, 0x5f, 0xdb, 0x03, 0x94, 0x03, 0x1e, 0xa0, 0x9a, 0xb3, + 0xfd, 0x07, 0x25, 0x18, 0xaf, 0x11, 0x9f, 0x24, 0x84, 0x9f, 0x35, 0x62, 0xb4, 0x0a, 0x68, 0x3b, + 0x72, 0x9a, 0xa4, 0x4e, 0x22, 0x2f, 0x74, 0x75, 0x63, 0x64, 0x99, 0x19, 0xfc, 0xd1, 0xa5, 0x0e, + 0x2c, 0xce, 0x29, 0x81, 0xde, 0x82, 0xf1, 0x56, 0x44, 0x0c, 0x1b, 0x9a, 0x55, 0xa4, 0x2e, 0xd4, + 0x75, 0x42, 0xae, 0xa9, 0x1a, 0x20, 0x6c, 0xb2, 0x42, 0x3f, 0x01, 0x53, 0x61, 0xd4, 0xda, 0x71, + 0x82, 0x1a, 0x69, 0x91, 0xc0, 0xa5, 0xaa, 0xb8, 0xb0, 0x11, 0xcc, 0xdc, 0x39, 0x9c, 0x9b, 0xba, + 0x9e, 0xc1, 0xe1, 0x0e, 0x6a, 0xf4, 0x16, 0x4c, 0xb7, 0xa2, 0xb0, 0xe5, 0x6c, 0xb3, 0x89, 0x22, + 0x34, 0x0e, 0x2e, 0x7d, 0x9e, 0xbe, 0x73, 0x38, 0x37, 0x5d, 0xcf, 0x22, 0x8f, 0x0e, 0xe7, 0xce, + 0xb0, 0x8e, 0xa2, 0x90, 0x14, 0x89, 0x3b, 0xd9, 0xd8, 0xdb, 0x70, 0xb6, 0x16, 0xde, 0x0a, 0x6e, + 0x39, 0x91, 0xbb, 0x58, 0x5f, 0xd3, 0x0e, 0xf7, 0xd7, 0xe4, 0xe1, 0x92, 0x5f, 0xbf, 0xe6, 0xee, + 0x53, 0x5a, 0x49, 0xae, 0xfe, 0xaf, 0x7a, 0x3e, 0x29, 0x30, 0x22, 0xfc, 0xcd, 0x92, 0x51, 0x53, + 0x4a, 0xaf, 0xec, 0xfe, 0x56, 0xa1, 0xdd, 0xff, 0x75, 0x18, 0xd9, 0xf2, 0x88, 0xef, 0x62, 0xb2, + 0x25, 0x46, 0xe6, 0xf1, 0xe2, 0x1b, 0xa5, 0x55, 0x4a, 0x29, 0x8d, 0x46, 0xfc, 0x68, 0xba, 0x2a, + 0x0a, 0x63, 0xc5, 0x06, 0xed, 0xc2, 0x94, 0x3c, 0xfb, 0x48, 0xac, 0x58, 0xc4, 0x4f, 0x74, 0x3b, + 0x50, 0x99, 0xcc, 0xd9, 0x00, 0xe2, 0x0c, 0x1b, 0xdc, 0xc1, 0x98, 0x9e, 0x45, 0xf7, 0xe8, 0x76, + 0x35, 0xc0, 0xa6, 0x34, 0x3b, 0x8b, 0xb2, 0x63, 0x35, 0x83, 0xda, 0x5f, 0xb5, 0xe0, 0xfe, 0x8e, + 0x9e, 0x11, 0xe6, 0x85, 0x13, 0x1e, 0x85, 0xec, 0x71, 0xbf, 0xd4, 0xfb, 0xb8, 0x6f, 0xff, 0x43, + 0x0b, 0x66, 0x56, 0xf6, 0x5a, 0xc9, 0x41, 0xcd, 0x33, 0xef, 0x26, 0x5e, 0x84, 0xa1, 0x3d, 0xe2, + 0x7a, 0xed, 0x3d, 0x31, 0x72, 0x73, 0x52, 0xa4, 0xaf, 0x33, 0xe8, 0xd1, 0xe1, 0xdc, 0x78, 0x23, + 0x09, 0x23, 0x67, 0x9b, 0x70, 0x00, 0x16, 0xe4, 0x6c, 0x63, 0xf4, 0xde, 0x27, 0x57, 0xbd, 0x3d, + 0x4f, 0xde, 0x10, 0x76, 0x35, 0x79, 0xcd, 0xcb, 0x0e, 0x9d, 0x7f, 0xbd, 0xed, 0x04, 0x89, 0x97, + 0x1c, 0x88, 0x6b, 0x17, 0xc9, 0x04, 0xa7, 0xfc, 0xec, 0xef, 0x58, 0x30, 0x29, 0x65, 0xc9, 0xa2, + 0xeb, 0x46, 0x24, 0x8e, 0xd1, 0x2c, 0x94, 0xbc, 0x96, 0x68, 0x25, 0x88, 0x56, 0x96, 0xd6, 0xea, + 0xb8, 0xe4, 0xb5, 0x50, 0x1d, 0x2a, 0xfc, 0xa2, 0x31, 0x9d, 0x5c, 0x7d, 0x5d, 0x57, 0xb2, 0x16, + 0x6c, 0xc8, 0x92, 0x38, 0x65, 0x22, 0xb5, 0x62, 0xb6, 0x0f, 0x95, 0xcd, 0x3b, 0x9b, 0xcb, 0x02, + 0x8e, 0x15, 0x05, 0xba, 0x00, 0x23, 0x41, 0xe8, 0xf2, 0x7b, 0x5f, 0xbe, 0xa6, 0xd9, 0x94, 0xbd, + 0x26, 0x60, 0x58, 0x61, 0xed, 0x9f, 0xb3, 0x60, 0x4c, 0x7e, 0x59, 0x9f, 0x0a, 0x3a, 0x5d, 0x5a, + 0xa9, 0x72, 0x9e, 0x2e, 0x2d, 0xaa, 0x60, 0x33, 0x8c, 0xa1, 0x57, 0x97, 0x8f, 0xa3, 0x57, 0xdb, + 0x5f, 0x29, 0xc1, 0x84, 0x6c, 0x4e, 0xa3, 0xbd, 0x19, 0x93, 0x04, 0x6d, 0x40, 0xc5, 0xe1, 0x5d, + 0x4e, 0xe4, 0x8c, 0x7d, 0x34, 0xff, 0xc4, 0x65, 0x8c, 0x4f, 0xaa, 0xea, 0x2c, 0xca, 0xd2, 0x38, + 0x65, 0x84, 0x7c, 0x98, 0x0e, 0xc2, 0x84, 0x6d, 0x7b, 0x0a, 0xdf, 0xed, 0x5e, 0x20, 0xcb, 0xfd, + 0x01, 0xc1, 0x7d, 0xfa, 0x5a, 0x96, 0x0b, 0xee, 0x64, 0x8c, 0x56, 0xa4, 0x95, 0xa7, 0xcc, 0x6a, + 0x38, 0xdf, 0xad, 0x86, 0x62, 0x23, 0x8f, 0xfd, 0xdb, 0x16, 0x54, 0x24, 0xd9, 0x69, 0x5c, 0x01, + 0xad, 0xc3, 0x70, 0xcc, 0x06, 0x41, 0x76, 0x8d, 0xdd, 0xad, 0xe1, 0x7c, 0xbc, 0xd2, 0xdd, 0x9c, + 0xff, 0x8f, 0xb1, 0xe4, 0xc1, 0xcc, 0xd4, 0xaa, 0xf9, 0x1f, 0x11, 0x33, 0xb5, 0x6a, 0x4f, 0xc1, + 0x0e, 0xf3, 0x5f, 0x59, 0x9b, 0xb5, 0xb3, 0x3c, 0x55, 0x3a, 0x5b, 0x11, 0xd9, 0xf2, 0x6e, 0x67, + 0x95, 0xce, 0x3a, 0x83, 0x62, 0x81, 0x45, 0x6f, 0xc3, 0x58, 0x53, 0x5a, 0x77, 0x53, 0x31, 0xf0, + 0x58, 0x57, 0x5b, 0xb9, 0xba, 0x56, 0xe1, 0x3e, 0x61, 0xcb, 0x5a, 0x79, 0x6c, 0x70, 0x33, 0x2f, + 0xe6, 0xcb, 0xbd, 0x2e, 0xe6, 0x53, 0xbe, 0x85, 0x57, 0xcb, 0xf6, 0x2f, 0x59, 0x30, 0xc4, 0x6d, + 0x84, 0xfd, 0x19, 0x55, 0xb5, 0x6b, 0xa2, 0xb4, 0xef, 0x6e, 0x52, 0xa0, 0xb8, 0x35, 0x42, 0xeb, + 0x50, 0x61, 0x3f, 0x98, 0xad, 0xa4, 0x5c, 0xec, 0x0c, 0xc7, 0x6b, 0xd5, 0x1b, 0x78, 0x53, 0x16, + 0xc3, 0x29, 0x07, 0xfb, 0xcb, 0x65, 0x2a, 0xaa, 0x52, 0x52, 0x63, 0x07, 0xb7, 0xee, 0xdd, 0x0e, + 0x5e, 0xba, 0x57, 0x3b, 0xf8, 0x36, 0x4c, 0x36, 0xb5, 0x3b, 0xa9, 0x74, 0x24, 0x2f, 0x74, 0x9d, + 0x24, 0xda, 0xf5, 0x15, 0xb7, 0x93, 0x2d, 0x9b, 0x4c, 0x70, 0x96, 0x2b, 0xfa, 0x2c, 0x8c, 0xf1, + 0x71, 0x16, 0xb5, 0x0c, 0xb0, 0x5a, 0x3e, 0x51, 0x3c, 0x5f, 0xf4, 0x2a, 0xd8, 0x4c, 0x6c, 0x68, + 0xc5, 0xb1, 0xc1, 0xcc, 0xfe, 0xe2, 0x20, 0x0c, 0xae, 0xec, 0x93, 0x20, 0x39, 0x05, 0x81, 0xd4, + 0x84, 0x09, 0x2f, 0xd8, 0x0f, 0xfd, 0x7d, 0xe2, 0x72, 0xfc, 0x71, 0x36, 0xd7, 0xfb, 0x04, 0xeb, + 0x89, 0x35, 0x83, 0x05, 0xce, 0xb0, 0xbc, 0x17, 0xa7, 0xf6, 0x4b, 0x30, 0xc4, 0xc7, 0x5e, 0x1c, + 0xd9, 0x73, 0x2d, 0xe0, 0xac, 0x13, 0xc5, 0x2a, 0x48, 0x2d, 0x0a, 0xdc, 0xe4, 0x2e, 0x8a, 0xa3, + 0x77, 0x61, 0x62, 0xcb, 0x8b, 0xe2, 0x84, 0x1e, 0xb7, 0xe3, 0xc4, 0xd9, 0x6b, 0xdd, 0xc5, 0x29, + 0x5d, 0xf5, 0xc3, 0xaa, 0xc1, 0x09, 0x67, 0x38, 0xa3, 0x6d, 0x18, 0xa7, 0x07, 0xc7, 0xb4, 0xaa, + 0xe1, 0x63, 0x57, 0xa5, 0xcc, 0x70, 0x57, 0x75, 0x46, 0xd8, 0xe4, 0x4b, 0x85, 0x49, 0x93, 0x1d, + 0x34, 0x47, 0x98, 0x46, 0xa1, 0x84, 0x09, 0x3f, 0x61, 0x72, 0x1c, 0x95, 0x49, 0xcc, 0x97, 0xa3, + 0x62, 0xca, 0xa4, 0xd4, 0x63, 0xc3, 0xfe, 0x1a, 0xdd, 0x1d, 0x69, 0x1f, 0x9e, 0xc2, 0xd6, 0xf2, + 0xaa, 0xb9, 0xb5, 0x3c, 0x50, 0x38, 0x9e, 0x05, 0xdb, 0xca, 0xe7, 0x60, 0x54, 0x1b, 0x6e, 0xb4, + 0x00, 0x95, 0xa6, 0x74, 0x3c, 0x10, 0x52, 0x57, 0xa9, 0x2f, 0xca, 0x23, 0x01, 0xa7, 0x34, 0xb4, + 0x37, 0xa8, 0xb2, 0x97, 0x75, 0x6b, 0xa2, 0xaa, 0x20, 0x66, 0x18, 0xfb, 0x39, 0x80, 0x95, 0xdb, + 0xa4, 0xb9, 0xc8, 0x0f, 0x5e, 0xda, 0xfd, 0x96, 0x55, 0x7c, 0xbf, 0x65, 0xff, 0x07, 0x0b, 0x26, + 0x56, 0x97, 0x0d, 0x85, 0x7c, 0x1e, 0x80, 0x6b, 0xa1, 0x6f, 0xbc, 0x71, 0x4d, 0x5a, 0x86, 0xb9, + 0x71, 0x4f, 0x41, 0xb1, 0x46, 0x81, 0x1e, 0x80, 0xb2, 0xdf, 0x0e, 0x84, 0x72, 0x38, 0x7c, 0xe7, + 0x70, 0xae, 0x7c, 0xb5, 0x1d, 0x60, 0x0a, 0xd3, 0x3c, 0x89, 0xca, 0x7d, 0x7b, 0x12, 0xf5, 0x74, + 0xc1, 0x46, 0x73, 0x30, 0x78, 0xeb, 0x96, 0xe7, 0xc6, 0xd5, 0xc1, 0xd4, 0x6a, 0xfd, 0xc6, 0x1b, + 0x6b, 0xb5, 0x18, 0x73, 0xb8, 0xfd, 0x17, 0xca, 0x30, 0xb5, 0xea, 0x93, 0xdb, 0xc6, 0x67, 0x3d, + 0x06, 0x43, 0x6e, 0xe4, 0xed, 0x93, 0x28, 0xbb, 0x8b, 0xd7, 0x18, 0x14, 0x0b, 0x6c, 0xdf, 0xde, + 0x4f, 0x37, 0x3a, 0xf7, 0xe3, 0x93, 0xf6, 0xf7, 0xea, 0xdd, 0x15, 0x6f, 0xc3, 0x30, 0xbf, 0x26, + 0xe5, 0x9d, 0x31, 0x7a, 0xf1, 0xd9, 0xbc, 0x26, 0x64, 0xfb, 0x62, 0x5e, 0x18, 0x3e, 0xb8, 0xcf, + 0x88, 0x12, 0x62, 0x02, 0x8a, 0x25, 0xcb, 0xd9, 0x4f, 0xc3, 0x98, 0x4e, 0x79, 0x2c, 0xe7, 0x91, + 0xbf, 0x68, 0xc1, 0x99, 0x55, 0x3f, 0x6c, 0xee, 0x66, 0x5c, 0xd1, 0x5e, 0x80, 0x51, 0xba, 0x9e, + 0x62, 0xc3, 0xad, 0xd5, 0x70, 0x74, 0x16, 0x28, 0xac, 0xd3, 0x69, 0xc5, 0x6e, 0xdc, 0x58, 0xab, + 0xe5, 0xf9, 0x47, 0x0b, 0x14, 0xd6, 0xe9, 0xec, 0x6f, 0x5b, 0xf0, 0xf0, 0xa5, 0xe5, 0x95, 0xd4, + 0x1b, 0xb3, 0xc3, 0x45, 0x9b, 0x2a, 0x77, 0xae, 0xd6, 0x94, 0x54, 0xb9, 0xab, 0xb1, 0x56, 0x08, + 0xec, 0x47, 0x25, 0xfc, 0xe0, 0x57, 0x2c, 0x38, 0x73, 0xc9, 0x4b, 0x30, 0x69, 0x85, 0x59, 0x67, + 0xe1, 0x88, 0xb4, 0xc2, 0xd8, 0x4b, 0xc2, 0xe8, 0x20, 0xeb, 0x2c, 0x8c, 0x15, 0x06, 0x6b, 0x54, + 0xbc, 0xe6, 0x7d, 0x2f, 0xa6, 0x2d, 0x2d, 0x99, 0x27, 0x4c, 0x2c, 0xe0, 0x58, 0x51, 0xd0, 0x0f, + 0x73, 0xbd, 0x88, 0x69, 0x08, 0x07, 0x62, 0x39, 0xab, 0x0f, 0xab, 0x49, 0x04, 0x4e, 0x69, 0xec, + 0xaf, 0x5a, 0x70, 0xf6, 0x92, 0xdf, 0x8e, 0x13, 0x12, 0x6d, 0xc5, 0x46, 0x63, 0x9f, 0x83, 0x0a, + 0x91, 0x5a, 0xb8, 0x68, 0xab, 0xda, 0x37, 0x94, 0x7a, 0xce, 0x3d, 0x95, 0x15, 0x5d, 0x1f, 0x7e, + 0x9d, 0xc7, 0xf3, 0x47, 0xfc, 0x7a, 0x09, 0xc6, 0x2f, 0x6f, 0x6c, 0xd4, 0x2f, 0x91, 0x44, 0x88, + 0xcc, 0xde, 0x16, 0x24, 0xac, 0x1d, 0x84, 0xbb, 0xe9, 0x3a, 0xed, 0xc4, 0xf3, 0xe7, 0x79, 0x68, + 0xcc, 0xfc, 0x5a, 0x90, 0x5c, 0x8f, 0x1a, 0x49, 0xe4, 0x05, 0xdb, 0xb9, 0x47, 0x67, 0x29, 0xd8, + 0xcb, 0x45, 0x82, 0x1d, 0x3d, 0x07, 0x43, 0x2c, 0x36, 0x47, 0x6a, 0x1d, 0x0f, 0x2a, 0x55, 0x81, + 0x41, 0x8f, 0x0e, 0xe7, 0x2a, 0x37, 0xf0, 0x1a, 0xff, 0x83, 0x05, 0x29, 0xba, 0x01, 0xa3, 0x3b, + 0x49, 0xd2, 0xba, 0x4c, 0x1c, 0x97, 0x44, 0x52, 0x3a, 0x9c, 0xcb, 0x93, 0x0e, 0xb4, 0x13, 0x38, + 0x59, 0xba, 0xa0, 0x52, 0x58, 0x8c, 0x75, 0x3e, 0x76, 0x03, 0x20, 0xc5, 0x9d, 0xd0, 0xb1, 0xc1, + 0xfe, 0xbe, 0x05, 0xc3, 0x97, 0x9d, 0xc0, 0xf5, 0x49, 0x84, 0x5e, 0x81, 0x01, 0x72, 0x9b, 0x34, + 0xc5, 0x0e, 0x9e, 0xdb, 0xe0, 0x74, 0x97, 0xe3, 0x46, 0x30, 0xfa, 0x1f, 0xb3, 0x52, 0xe8, 0x32, + 0x0c, 0xd3, 0xd6, 0x5e, 0x52, 0x3e, 0xe3, 0x8f, 0x14, 0x7d, 0xb1, 0x1a, 0x76, 0xbe, 0x31, 0x0a, + 0x10, 0x96, 0xc5, 0x99, 0x41, 0xa7, 0xd9, 0x6a, 0x50, 0x01, 0x96, 0x74, 0x3b, 0x6e, 0x6d, 0x2c, + 0xd7, 0x39, 0x91, 0xe0, 0xc6, 0x0d, 0x3a, 0x12, 0x88, 0x53, 0x26, 0xf6, 0x06, 0x54, 0xe8, 0xa0, + 0x2e, 0xfa, 0x9e, 0xd3, 0xdd, 0x96, 0xf4, 0x14, 0x54, 0xa4, 0x5d, 0x27, 0x16, 0x6e, 0xe7, 0x8c, + 0xab, 0x34, 0xfb, 0xc4, 0x38, 0xc5, 0xdb, 0x5b, 0x30, 0xc3, 0x2e, 0x49, 0x9d, 0x64, 0xc7, 0x58, + 0x63, 0xbd, 0x27, 0xf3, 0xd3, 0x42, 0xbf, 0xe2, 0x23, 0x53, 0xd5, 0xfc, 0x64, 0xc7, 0x24, 0x47, + 0x4d, 0xd7, 0xfa, 0xcf, 0x03, 0x30, 0xbd, 0xd6, 0x58, 0x6e, 0x98, 0x86, 0xc5, 0x97, 0x60, 0x8c, + 0x6b, 0x02, 0x74, 0x42, 0x3b, 0xbe, 0xa8, 0x4d, 0x5d, 0x1c, 0x6c, 0x68, 0x38, 0x6c, 0x50, 0xa2, + 0x87, 0xa1, 0xec, 0xbd, 0x17, 0x64, 0x5d, 0xe1, 0xd6, 0x5e, 0xbf, 0x86, 0x29, 0x9c, 0xa2, 0xa9, + 0x52, 0xc1, 0x05, 0xa8, 0x42, 0x2b, 0xc5, 0xe2, 0x55, 0x98, 0xf0, 0xe2, 0x66, 0xec, 0xad, 0x05, + 0x54, 0xba, 0xa4, 0x31, 0x17, 0xa9, 0xc6, 0x4f, 0x9b, 0xaa, 0xb0, 0x38, 0x43, 0xad, 0x49, 0xf3, + 0xc1, 0xbe, 0x15, 0x93, 0x9e, 0xde, 0xd7, 0x54, 0xe7, 0x6a, 0xb1, 0xaf, 0x8b, 0x99, 0x5b, 0x8e, + 0xd0, 0xb9, 0xf8, 0x07, 0xc7, 0x58, 0xe2, 0xd0, 0x25, 0x98, 0x6e, 0xee, 0x38, 0xad, 0xc5, 0x76, + 0xb2, 0x53, 0xf3, 0xe2, 0x66, 0xb8, 0x4f, 0xa2, 0x03, 0xa6, 0x09, 0x8f, 0xa4, 0x46, 0x26, 0x85, + 0x58, 0xbe, 0xbc, 0x58, 0xa7, 0x94, 0xb8, 0xb3, 0x8c, 0xa9, 0x82, 0xc0, 0x89, 0xa9, 0x20, 0x8b, + 0x30, 0x29, 0xeb, 0x6a, 0x90, 0x98, 0x6d, 0x0f, 0xa3, 0xac, 0x75, 0x2a, 0x24, 0x4a, 0x80, 0x55, + 0xdb, 0xb2, 0xf4, 0xe8, 0x45, 0x18, 0xf7, 0x02, 0x2f, 0xf1, 0x9c, 0x24, 0x8c, 0xd8, 0xe6, 0x3a, + 0xc6, 0x37, 0x0c, 0x2a, 0xe1, 0xd7, 0x74, 0x04, 0x36, 0xe9, 0xec, 0x77, 0xa1, 0xa2, 0x7c, 0xcd, + 0xa4, 0xbb, 0xa4, 0x55, 0xe0, 0x2e, 0xd9, 0x7b, 0x47, 0x90, 0x16, 0xf3, 0x72, 0xae, 0xc5, 0xfc, + 0x6f, 0x59, 0x90, 0xba, 0xdc, 0xa0, 0xcb, 0x50, 0x69, 0x85, 0xec, 0xd6, 0x2c, 0x92, 0x57, 0xd1, + 0x0f, 0xe6, 0x0a, 0x0f, 0x2e, 0xa8, 0x78, 0xff, 0xd5, 0x65, 0x09, 0x9c, 0x16, 0x46, 0x4b, 0x30, + 0xdc, 0x8a, 0x48, 0x23, 0x61, 0x41, 0x23, 0x3d, 0xf9, 0xf0, 0x39, 0xc2, 0xe9, 0xb1, 0x2c, 0x68, + 0xff, 0xba, 0x05, 0xc0, 0x8d, 0xd2, 0x4e, 0xb0, 0x4d, 0x4e, 0xe1, 0xa0, 0x5d, 0x83, 0x81, 0xb8, + 0x45, 0x9a, 0xdd, 0xee, 0x33, 0xd3, 0xf6, 0x34, 0x5a, 0xa4, 0x99, 0x76, 0x38, 0xfd, 0x87, 0x59, + 0x69, 0xfb, 0x67, 0x01, 0x26, 0x52, 0x32, 0x7a, 0x00, 0x42, 0xcf, 0x18, 0x2e, 0xf9, 0x0f, 0x64, + 0x5c, 0xf2, 0x2b, 0x8c, 0x5a, 0xf3, 0xc2, 0x7f, 0x17, 0xca, 0x7b, 0xce, 0x6d, 0x71, 0xca, 0x7a, + 0xaa, 0x7b, 0x33, 0x28, 0xff, 0xf9, 0x75, 0xe7, 0x36, 0xd7, 0x63, 0x9f, 0x92, 0x13, 0x64, 0xdd, + 0xb9, 0x7d, 0xc4, 0x6f, 0x2d, 0x99, 0x90, 0xa2, 0x87, 0xb9, 0xcf, 0xff, 0x61, 0xfa, 0x9f, 0x4d, + 0x3b, 0x5a, 0x09, 0xab, 0xcb, 0x0b, 0x84, 0x89, 0xb6, 0xaf, 0xba, 0xbc, 0x20, 0x5b, 0x97, 0x17, + 0xf4, 0x51, 0x97, 0x17, 0xa0, 0xf7, 0x61, 0x58, 0x5c, 0x87, 0x30, 0x5f, 0xc2, 0xd1, 0x8b, 0x0b, + 0x7d, 0xd4, 0x27, 0x6e, 0x53, 0x78, 0x9d, 0x0b, 0x52, 0x4f, 0x17, 0xd0, 0x9e, 0xf5, 0xca, 0x0a, + 0xd1, 0xdf, 0xb0, 0x60, 0x42, 0xfc, 0xc6, 0xe4, 0xbd, 0x36, 0x89, 0x13, 0xa1, 0x0f, 0x7c, 0xaa, + 0xff, 0x36, 0x88, 0x82, 0xbc, 0x29, 0x9f, 0x92, 0x62, 0xd6, 0x44, 0xf6, 0x6c, 0x51, 0xa6, 0x15, + 0xe8, 0x1f, 0x5b, 0x30, 0xb3, 0xe7, 0xdc, 0xe6, 0x35, 0x72, 0x18, 0x76, 0x12, 0x2f, 0x14, 0xbe, + 0x91, 0xaf, 0xf4, 0x37, 0xfc, 0x1d, 0xc5, 0x79, 0x23, 0xa5, 0x1b, 0xd5, 0x4c, 0x1e, 0x49, 0xcf, + 0xa6, 0xe6, 0xb6, 0x6b, 0x76, 0x0b, 0x46, 0xe4, 0x7c, 0xcb, 0x39, 0x0d, 0xd5, 0x74, 0x65, 0xe7, + 0xd8, 0xb7, 0x51, 0xda, 0xe9, 0x89, 0xd5, 0x23, 0xe6, 0xda, 0x3d, 0xad, 0xe7, 0x5d, 0x18, 0xd3, + 0xe7, 0xd8, 0x3d, 0xad, 0xeb, 0x3d, 0x38, 0x93, 0x33, 0x97, 0xee, 0x69, 0x95, 0xb7, 0xe0, 0x81, + 0xc2, 0xf9, 0x71, 0x2f, 0x2b, 0xb6, 0xbf, 0x6e, 0xe9, 0x72, 0xf0, 0x14, 0xcc, 0x53, 0xcb, 0xa6, + 0x79, 0xea, 0x5c, 0xf7, 0x95, 0x53, 0x60, 0xa3, 0x7a, 0x5b, 0x6f, 0x34, 0x95, 0xea, 0xe8, 0x35, + 0x18, 0xf2, 0x29, 0x44, 0xde, 0xc3, 0xd9, 0xbd, 0x57, 0x64, 0xaa, 0x4b, 0x31, 0x78, 0x8c, 0x05, + 0x07, 0xfb, 0xb7, 0x2c, 0x18, 0x38, 0x85, 0x9e, 0xc0, 0x66, 0x4f, 0x3c, 0x53, 0xc8, 0x5a, 0xe4, + 0x3d, 0x98, 0xc7, 0xce, 0xad, 0x15, 0x99, 0xdb, 0xa1, 0xa0, 0x63, 0xfe, 0x4f, 0x09, 0x46, 0x69, + 0x55, 0xd2, 0x61, 0xe4, 0x65, 0x18, 0xf7, 0x9d, 0x4d, 0xe2, 0x4b, 0x93, 0x79, 0xf6, 0x10, 0x7b, + 0x55, 0x47, 0x62, 0x93, 0x96, 0x16, 0xde, 0xd2, 0x6f, 0x0f, 0x84, 0xfe, 0xa2, 0x0a, 0x1b, 0x57, + 0x0b, 0xd8, 0xa4, 0xa5, 0xe7, 0xa9, 0x5b, 0x4e, 0xd2, 0xdc, 0x11, 0x07, 0x5c, 0xd5, 0xdc, 0x37, + 0x28, 0x10, 0x73, 0x1c, 0x55, 0xe0, 0xe4, 0xec, 0xbc, 0x49, 0x22, 0xa6, 0xc0, 0x71, 0xf5, 0x58, + 0x29, 0x70, 0xd8, 0x44, 0xe3, 0x2c, 0x7d, 0x4e, 0x6c, 0xde, 0x20, 0x73, 0x87, 0xe9, 0x23, 0x36, + 0x0f, 0xd5, 0x61, 0xc6, 0x0b, 0x9a, 0x7e, 0xdb, 0x25, 0x37, 0x02, 0xae, 0xdd, 0xf9, 0xde, 0xfb, + 0xc4, 0x15, 0x0a, 0xb4, 0xf2, 0x5c, 0x5a, 0xcb, 0xa1, 0xc1, 0xb9, 0x25, 0xed, 0xff, 0x0f, 0xce, + 0x5c, 0x0d, 0x1d, 0x77, 0xc9, 0xf1, 0x9d, 0xa0, 0x49, 0xa2, 0xb5, 0x60, 0xbb, 0xe7, 0x85, 0xbc, + 0x7e, 0x7d, 0x5e, 0xea, 0x75, 0x7d, 0x6e, 0xef, 0x00, 0xd2, 0x2b, 0x10, 0x6e, 0x60, 0x18, 0x86, + 0x3d, 0x5e, 0x95, 0x98, 0xfe, 0x8f, 0xe7, 0x6b, 0xd7, 0x1d, 0x2d, 0xd3, 0x1c, 0x9c, 0x38, 0x00, + 0x4b, 0x46, 0xf6, 0x4b, 0x90, 0x1b, 0x9b, 0xd1, 0xfb, 0x28, 0x6d, 0xbf, 0x00, 0xd3, 0xac, 0xe4, + 0xf1, 0x8e, 0x79, 0xf6, 0x5f, 0xb1, 0x60, 0xf2, 0x5a, 0x26, 0x9a, 0xf6, 0x31, 0x18, 0xe2, 0x19, + 0x4e, 0xb2, 0x46, 0xaf, 0x06, 0x83, 0x62, 0x81, 0x3d, 0x71, 0x9b, 0xcb, 0x0f, 0x2c, 0xa8, 0xa8, + 0xd0, 0xf7, 0x53, 0x50, 0x6a, 0x97, 0x0d, 0xa5, 0x36, 0xd7, 0x16, 0xa0, 0x9a, 0x53, 0xa4, 0xd3, + 0xa2, 0x2b, 0x2a, 0x2e, 0xb4, 0x8b, 0x19, 0x20, 0x65, 0xc3, 0xa3, 0x08, 0x27, 0xcc, 0xe0, 0x51, + 0x19, 0x29, 0xca, 0x6e, 0xc4, 0x15, 0xed, 0x47, 0xe4, 0x46, 0x5c, 0xb5, 0xa7, 0x40, 0xfa, 0xd5, + 0xb5, 0x26, 0xb3, 0x5d, 0xe1, 0xc7, 0x99, 0xd7, 0x28, 0x5b, 0x9b, 0x2a, 0x1c, 0x7b, 0x4e, 0x78, + 0x81, 0x0a, 0xe8, 0x11, 0x13, 0x64, 0xe2, 0x1f, 0x4f, 0x53, 0x90, 0x16, 0xb1, 0x2f, 0xc3, 0x64, + 0xa6, 0xc3, 0xd0, 0x0b, 0x30, 0xd8, 0xda, 0x71, 0x62, 0x92, 0xf1, 0x02, 0x1a, 0xac, 0x53, 0xe0, + 0xd1, 0xe1, 0xdc, 0x84, 0x2a, 0xc0, 0x20, 0x98, 0x53, 0xdb, 0xff, 0xc3, 0x82, 0x81, 0x6b, 0xa1, + 0x7b, 0x1a, 0x93, 0xe9, 0x55, 0x63, 0x32, 0x3d, 0x54, 0x94, 0xe4, 0xa5, 0x70, 0x1e, 0xad, 0x66, + 0xe6, 0xd1, 0xb9, 0x42, 0x0e, 0xdd, 0xa7, 0xd0, 0x1e, 0x8c, 0xb2, 0xd4, 0x31, 0xc2, 0x2b, 0xe9, + 0x39, 0xe3, 0x7c, 0x35, 0x97, 0x39, 0x5f, 0x4d, 0x6a, 0xa4, 0xda, 0x29, 0xeb, 0x09, 0x18, 0x16, + 0x9e, 0x31, 0x59, 0xff, 0x58, 0x41, 0x8b, 0x25, 0xde, 0xfe, 0xa5, 0x32, 0x18, 0xa9, 0x6a, 0xd0, + 0x6f, 0x5b, 0x30, 0x1f, 0xf1, 0x88, 0x20, 0xb7, 0xd6, 0x8e, 0xbc, 0x60, 0xbb, 0xd1, 0xdc, 0x21, + 0x6e, 0xdb, 0xf7, 0x82, 0xed, 0xb5, 0xed, 0x20, 0x54, 0xe0, 0x95, 0xdb, 0xa4, 0xd9, 0x66, 0x76, + 0xf0, 0x1e, 0x79, 0x71, 0xd4, 0xcd, 0xf3, 0xc5, 0x3b, 0x87, 0x73, 0xf3, 0xf8, 0x58, 0xbc, 0xf1, + 0x31, 0xdb, 0x82, 0xbe, 0x6d, 0xc1, 0x02, 0xcf, 0xe0, 0xd2, 0x7f, 0xfb, 0xbb, 0x9c, 0x46, 0xeb, + 0x92, 0x55, 0xca, 0x64, 0x83, 0x44, 0x7b, 0x4b, 0x2f, 0x8a, 0x0e, 0x5d, 0xa8, 0x1f, 0xaf, 0x2e, + 0x7c, 0xdc, 0xc6, 0xd9, 0xff, 0xaa, 0x0c, 0xe3, 0xb4, 0x17, 0xd3, 0x28, 0xf8, 0x17, 0x8c, 0x29, + 0xf1, 0x48, 0x66, 0x4a, 0x4c, 0x1b, 0xc4, 0x27, 0x13, 0x00, 0x1f, 0xc3, 0xb4, 0xef, 0xc4, 0xc9, + 0x65, 0xe2, 0x44, 0xc9, 0x26, 0x71, 0xd8, 0x55, 0xaf, 0x98, 0xe6, 0xc7, 0xb9, 0x3d, 0x56, 0xe6, + 0xaf, 0xab, 0x59, 0x66, 0xb8, 0x93, 0x3f, 0xda, 0x07, 0xc4, 0xae, 0x95, 0x23, 0x27, 0x88, 0xf9, + 0xb7, 0x78, 0xc2, 0x46, 0x7e, 0xbc, 0x5a, 0x67, 0x45, 0xad, 0xe8, 0x6a, 0x07, 0x37, 0x9c, 0x53, + 0x83, 0xe6, 0x2e, 0x30, 0xd8, 0xaf, 0xbb, 0xc0, 0x50, 0x0f, 0x27, 0xf4, 0x3d, 0x98, 0x12, 0xa3, + 0xb2, 0xe5, 0x6d, 0x8b, 0x4d, 0xfa, 0xcd, 0x8c, 0x3b, 0x91, 0xd5, 0xbf, 0xe3, 0x43, 0x0f, 0x5f, + 0x22, 0xfb, 0xa7, 0xe1, 0x0c, 0xad, 0xce, 0x74, 0x99, 0x8e, 0x11, 0x81, 0xc9, 0xdd, 0xf6, 0x26, + 0xf1, 0x49, 0x22, 0x61, 0xa2, 0xd2, 0x5c, 0xb5, 0xdf, 0x2c, 0x9d, 0xea, 0x96, 0x57, 0x4c, 0x16, + 0x38, 0xcb, 0xd3, 0xfe, 0x65, 0x0b, 0x98, 0x63, 0xe2, 0x29, 0x6c, 0x7f, 0x9f, 0x31, 0xb7, 0xbf, + 0x6a, 0x91, 0x04, 0x2a, 0xd8, 0xf9, 0x9e, 0xe7, 0xc3, 0x52, 0x8f, 0xc2, 0xdb, 0x07, 0x52, 0xf7, + 0xef, 0xad, 0x71, 0xfd, 0x6f, 0x8b, 0x2f, 0x48, 0x15, 0x20, 0x89, 0x7e, 0x06, 0x46, 0x9a, 0x4e, + 0xcb, 0x69, 0xf2, 0x1c, 0x61, 0x85, 0xd6, 0x1f, 0xa3, 0xd0, 0xfc, 0xb2, 0x28, 0xc1, 0xad, 0x19, + 0x9f, 0x94, 0x5f, 0x29, 0xc1, 0x3d, 0x2d, 0x18, 0xaa, 0xca, 0xd9, 0x5d, 0x18, 0x37, 0x98, 0xdd, + 0xd3, 0xa3, 0xef, 0xcf, 0xf0, 0xed, 0x42, 0x9d, 0x58, 0xf6, 0x60, 0x3a, 0xd0, 0xfe, 0x53, 0xe1, + 0x28, 0xd5, 0xe9, 0x8f, 0xf7, 0xda, 0x10, 0x98, 0x24, 0xd5, 0x1c, 0x2f, 0x33, 0x6c, 0x70, 0x27, + 0x67, 0xfb, 0xef, 0x58, 0x70, 0xbf, 0x4e, 0xa8, 0xc5, 0xae, 0xf6, 0xb2, 0x27, 0xd7, 0x60, 0x24, + 0x6c, 0x91, 0xc8, 0x49, 0xcf, 0x64, 0x17, 0x64, 0xa7, 0x5f, 0x17, 0xf0, 0xa3, 0xc3, 0xb9, 0x19, + 0x9d, 0xbb, 0x84, 0x63, 0x55, 0x12, 0xd9, 0x30, 0xc4, 0x3a, 0x23, 0x16, 0x71, 0xc5, 0x2c, 0x8f, + 0x16, 0xbb, 0xee, 0x8a, 0xb1, 0xc0, 0xd8, 0x3f, 0x6b, 0xf1, 0x89, 0xa5, 0x37, 0x1d, 0xbd, 0x07, + 0x53, 0x7b, 0xf4, 0xf8, 0xb6, 0x72, 0xbb, 0x15, 0x71, 0x33, 0xba, 0xec, 0xa7, 0xa7, 0x7a, 0xf5, + 0x93, 0xf6, 0x91, 0x4b, 0x55, 0xd1, 0xe6, 0xa9, 0xf5, 0x0c, 0x33, 0xdc, 0xc1, 0xde, 0xfe, 0xd3, + 0x12, 0x5f, 0x89, 0x4c, 0xab, 0x7b, 0x02, 0x86, 0x5b, 0xa1, 0xbb, 0xbc, 0x56, 0xc3, 0xa2, 0x87, + 0x94, 0xb8, 0xaa, 0x73, 0x30, 0x96, 0x78, 0x74, 0x11, 0x80, 0xdc, 0x4e, 0x48, 0x14, 0x38, 0xbe, + 0xba, 0x8c, 0x57, 0xca, 0xd3, 0x8a, 0xc2, 0x60, 0x8d, 0x8a, 0x96, 0x69, 0x45, 0xe1, 0xbe, 0xe7, + 0xb2, 0xc0, 0x8e, 0xb2, 0x59, 0xa6, 0xae, 0x30, 0x58, 0xa3, 0xa2, 0x47, 0xe5, 0x76, 0x10, 0xf3, + 0x0d, 0xd0, 0xd9, 0x14, 0xa9, 0x78, 0x46, 0xd2, 0xa3, 0xf2, 0x0d, 0x1d, 0x89, 0x4d, 0x5a, 0xb4, + 0x08, 0x43, 0x89, 0xc3, 0xae, 0x98, 0x07, 0x8b, 0x5d, 0x76, 0x36, 0x28, 0x85, 0x9e, 0x34, 0x8a, + 0x16, 0xc0, 0xa2, 0x20, 0x7a, 0x4b, 0x8a, 0x60, 0x2e, 0x92, 0x85, 0xeb, 0x55, 0xe1, 0xb4, 0xd5, + 0xc5, 0xb7, 0x2e, 0x83, 0x85, 0x4b, 0x97, 0xc1, 0xcb, 0xfe, 0x42, 0x05, 0x20, 0xd5, 0xf6, 0xd0, + 0xfb, 0x1d, 0x22, 0xe2, 0xe9, 0xee, 0xfa, 0xe1, 0xc9, 0xc9, 0x07, 0xf4, 0x45, 0x0b, 0x46, 0x1d, + 0xdf, 0x0f, 0x9b, 0x4e, 0xc2, 0x7a, 0xb9, 0xd4, 0x5d, 0x44, 0x89, 0xfa, 0x17, 0xd3, 0x12, 0xbc, + 0x09, 0xcf, 0xc9, 0xdb, 0x63, 0x0d, 0xd3, 0xb3, 0x15, 0x7a, 0xc5, 0xe8, 0x93, 0xf2, 0x10, 0xc0, + 0xa7, 0xc7, 0x6c, 0xf6, 0x10, 0x50, 0x61, 0xd2, 0x58, 0xd3, 0xff, 0xd1, 0x0d, 0x23, 0x67, 0xcd, + 0x40, 0x71, 0x78, 0xae, 0xa1, 0xf4, 0xf4, 0x4a, 0x57, 0x83, 0xea, 0xba, 0x0b, 0xfa, 0x60, 0x71, + 0x0c, 0xbb, 0xa6, 0x5d, 0xf7, 0x70, 0x3f, 0x7f, 0x17, 0x26, 0x5d, 0x73, 0xbb, 0x15, 0xb3, 0xe9, + 0xf1, 0x22, 0xbe, 0x99, 0xdd, 0x39, 0xdd, 0x60, 0x33, 0x08, 0x9c, 0x65, 0x8c, 0xea, 0x3c, 0x18, + 0x60, 0x2d, 0xd8, 0x0a, 0x85, 0x0b, 0x9f, 0x5d, 0x38, 0x96, 0x07, 0x71, 0x42, 0xf6, 0x28, 0x65, + 0xba, 0x8f, 0x5e, 0x13, 0x65, 0xb1, 0xe2, 0x82, 0x5e, 0x83, 0x21, 0x16, 0xa1, 0x15, 0x57, 0x47, + 0x8a, 0xed, 0x80, 0x66, 0x70, 0x71, 0xba, 0xa8, 0xd8, 0xdf, 0x18, 0x0b, 0x0e, 0xe8, 0xb2, 0x4c, + 0x11, 0x10, 0xaf, 0x05, 0x37, 0x62, 0xc2, 0x52, 0x04, 0x54, 0x96, 0x3e, 0x9e, 0x46, 0xff, 0x73, + 0x78, 0x6e, 0x7a, 0x48, 0xa3, 0x24, 0xd5, 0x57, 0xc4, 0x7f, 0x99, 0x75, 0xb2, 0x0a, 0xc5, 0xcd, + 0x33, 0x33, 0x53, 0xa6, 0xdd, 0x79, 0xd3, 0x64, 0x81, 0xb3, 0x3c, 0x4f, 0x75, 0xfb, 0x9c, 0x0d, + 0x60, 0x2a, 0xbb, 0xb0, 0xee, 0xe9, 0x76, 0xfd, 0xfd, 0x01, 0x98, 0x30, 0x27, 0x02, 0x5a, 0x80, + 0x8a, 0x60, 0xa2, 0xd2, 0x85, 0xa9, 0xb9, 0xbd, 0x2e, 0x11, 0x38, 0xa5, 0x61, 0xe9, 0xd2, 0x58, + 0x71, 0xcd, 0x37, 0x2b, 0x4d, 0x97, 0xa6, 0x30, 0x58, 0xa3, 0xa2, 0x4a, 0xf4, 0x66, 0x18, 0x26, + 0x6a, 0x2b, 0x50, 0xb3, 0x65, 0x89, 0x41, 0xb1, 0xc0, 0xd2, 0x2d, 0x60, 0x97, 0x44, 0x01, 0xf1, + 0x4d, 0x4b, 0xa6, 0xda, 0x02, 0xae, 0xe8, 0x48, 0x6c, 0xd2, 0xd2, 0x2d, 0x2d, 0x8c, 0xd9, 0xf4, + 0x13, 0xaa, 0x7a, 0xea, 0xeb, 0xd6, 0xe0, 0x11, 0x8a, 0x12, 0x8f, 0xde, 0x84, 0xfb, 0x55, 0x40, + 0x21, 0xe6, 0x96, 0x61, 0x59, 0xe3, 0x90, 0x71, 0xb2, 0xbe, 0x7f, 0x39, 0x9f, 0x0c, 0x17, 0x95, + 0x47, 0xaf, 0xc2, 0x84, 0x50, 0x81, 0x25, 0xc7, 0x61, 0xd3, 0x59, 0xe1, 0x8a, 0x81, 0xc5, 0x19, + 0x6a, 0x54, 0x83, 0x29, 0x0a, 0x61, 0x5a, 0xa8, 0xe4, 0xc0, 0x03, 0x23, 0xd5, 0x5e, 0x7f, 0x25, + 0x83, 0xc7, 0x1d, 0x25, 0xd0, 0x22, 0x4c, 0x72, 0x1d, 0x85, 0x9e, 0x29, 0xd9, 0x38, 0x08, 0xcf, + 0x5a, 0xb5, 0x10, 0xae, 0x9b, 0x68, 0x9c, 0xa5, 0x47, 0x2f, 0xc1, 0x98, 0x13, 0x35, 0x77, 0xbc, + 0x84, 0x34, 0x93, 0x76, 0xc4, 0x13, 0x70, 0x68, 0xde, 0x1e, 0x8b, 0x1a, 0x0e, 0x1b, 0x94, 0xf6, + 0xfb, 0x70, 0x26, 0xc7, 0x29, 0x9f, 0x4e, 0x1c, 0xa7, 0xe5, 0xc9, 0x6f, 0xca, 0x78, 0xad, 0x2d, + 0xd6, 0xd7, 0xe4, 0xd7, 0x68, 0x54, 0x74, 0x76, 0x32, 0x93, 0xb8, 0x96, 0x1a, 0x56, 0xcd, 0xce, + 0x55, 0x89, 0xc0, 0x29, 0x8d, 0xfd, 0x7b, 0x00, 0x9a, 0x41, 0xa7, 0x0f, 0x9f, 0xa5, 0x97, 0x60, + 0x4c, 0xe6, 0x33, 0xd6, 0xf2, 0x68, 0xaa, 0xcf, 0xbc, 0xa4, 0xe1, 0xb0, 0x41, 0x49, 0xdb, 0x16, + 0xa8, 0x2c, 0xa0, 0x19, 0x1f, 0xb9, 0x34, 0x07, 0x68, 0x4a, 0x83, 0x9e, 0x86, 0x91, 0x98, 0xf8, + 0x5b, 0x57, 0xbd, 0x60, 0x57, 0x4c, 0x6c, 0x25, 0x85, 0x1b, 0x02, 0x8e, 0x15, 0x05, 0x5a, 0x82, + 0x72, 0xdb, 0x73, 0xc5, 0x54, 0x96, 0x1b, 0x7e, 0xf9, 0xc6, 0x5a, 0xed, 0xe8, 0x70, 0xee, 0x91, + 0xa2, 0x34, 0xcd, 0xf4, 0x68, 0x1f, 0xcf, 0xd3, 0xe5, 0x47, 0x0b, 0xe7, 0xdd, 0x0d, 0x0c, 0x1d, + 0xf3, 0x6e, 0xe0, 0x22, 0x80, 0xf8, 0x6a, 0x39, 0x97, 0xcb, 0xe9, 0xa8, 0x5d, 0x52, 0x18, 0xac, + 0x51, 0xa1, 0x18, 0xa6, 0x9b, 0x11, 0x71, 0xe4, 0x19, 0x9a, 0xbb, 0x97, 0x8f, 0xdc, 0xbd, 0x81, + 0x60, 0x39, 0xcb, 0x0c, 0x77, 0xf2, 0x47, 0x21, 0x4c, 0xbb, 0x22, 0x7e, 0x35, 0xad, 0xb4, 0x72, + 0x7c, 0x9f, 0x76, 0xe6, 0x90, 0x93, 0x65, 0x84, 0x3b, 0x79, 0xa3, 0x77, 0x60, 0x56, 0x02, 0x3b, + 0x43, 0x86, 0xd9, 0x72, 0x29, 0x2f, 0x9d, 0xbb, 0x73, 0x38, 0x37, 0x5b, 0x2b, 0xa4, 0xc2, 0x5d, + 0x38, 0x20, 0x0c, 0x43, 0xec, 0x2e, 0x29, 0xae, 0x8e, 0xb2, 0x7d, 0xee, 0xc9, 0x62, 0x63, 0x00, + 0x9d, 0xeb, 0xf3, 0xec, 0x1e, 0x4a, 0xb8, 0xf9, 0xa6, 0xd7, 0x72, 0x0c, 0x88, 0x05, 0x27, 0xb4, + 0x05, 0xa3, 0x4e, 0x10, 0x84, 0x89, 0xc3, 0x55, 0xa8, 0xb1, 0x62, 0xdd, 0x4f, 0x63, 0xbc, 0x98, + 0x96, 0xe0, 0xdc, 0x95, 0xe7, 0xa0, 0x86, 0xc1, 0x3a, 0x63, 0x74, 0x0b, 0x26, 0xc3, 0x5b, 0x54, + 0x38, 0x4a, 0x2b, 0x45, 0x5c, 0x1d, 0x67, 0x75, 0x3d, 0xdf, 0xa7, 0x9d, 0xd6, 0x28, 0xac, 0x49, + 0x2d, 0x93, 0x29, 0xce, 0xd6, 0x82, 0xe6, 0x0d, 0x6b, 0xf5, 0x44, 0xea, 0xcf, 0x9e, 0x5a, 0xab, + 0x75, 0xe3, 0x34, 0x0b, 0x41, 0xe7, 0x6e, 0xab, 0x6c, 0xf5, 0x4f, 0x66, 0x42, 0xd0, 0x53, 0x14, + 0xd6, 0xe9, 0xd0, 0x0e, 0x8c, 0xa5, 0x57, 0x56, 0x51, 0xcc, 0x32, 0xd4, 0x8c, 0x5e, 0xbc, 0xd8, + 0xdf, 0xc7, 0xad, 0x69, 0x25, 0xf9, 0xc9, 0x41, 0x87, 0x60, 0x83, 0xf3, 0xec, 0x8f, 0xc1, 0xa8, + 0x36, 0xb0, 0xc7, 0xf1, 0xca, 0x9e, 0x7d, 0x15, 0xa6, 0xb2, 0x43, 0x77, 0x2c, 0xaf, 0xee, 0xff, + 0x55, 0x82, 0xc9, 0x9c, 0x9b, 0x2b, 0x96, 0xea, 0x39, 0x23, 0x50, 0xd3, 0xcc, 0xce, 0xa6, 0x58, + 0x2c, 0xf5, 0x21, 0x16, 0xa5, 0x8c, 0x2e, 0x17, 0xca, 0x68, 0x21, 0x0a, 0x07, 0x3e, 0x88, 0x28, + 0x34, 0x77, 0x9f, 0xc1, 0xbe, 0x76, 0x9f, 0x13, 0x10, 0x9f, 0xc6, 0x06, 0x36, 0xdc, 0xc7, 0x06, + 0xf6, 0xe5, 0x12, 0x4c, 0x65, 0xf3, 0x09, 0x9f, 0xc2, 0x7d, 0xc7, 0x6b, 0xc6, 0x7d, 0x47, 0x7e, + 0xe2, 0xf4, 0x6c, 0x96, 0xe3, 0xa2, 0xbb, 0x0f, 0x9c, 0xb9, 0xfb, 0x78, 0xb2, 0x2f, 0x6e, 0xdd, + 0xef, 0x41, 0xfe, 0x6e, 0x09, 0xce, 0x66, 0x8b, 0x2c, 0xfb, 0x8e, 0xb7, 0x77, 0x0a, 0x7d, 0x73, + 0xdd, 0xe8, 0x9b, 0x67, 0xfa, 0xf9, 0x1a, 0xd6, 0xb4, 0xc2, 0x0e, 0x7a, 0x23, 0xd3, 0x41, 0x0b, + 0xfd, 0xb3, 0xec, 0xde, 0x4b, 0xdf, 0x29, 0xc3, 0xb9, 0xdc, 0x72, 0xe9, 0x75, 0xc1, 0xaa, 0x71, + 0x5d, 0x70, 0x31, 0x73, 0x5d, 0x60, 0x77, 0x2f, 0x7d, 0x32, 0xf7, 0x07, 0x22, 0xf2, 0x8c, 0x65, + 0x4f, 0xbb, 0xcb, 0xbb, 0x03, 0x23, 0xf2, 0x4c, 0x31, 0xc2, 0x26, 0xdf, 0x1f, 0xa5, 0x3b, 0x83, + 0xdf, 0xb3, 0xe0, 0x81, 0xdc, 0xb1, 0x39, 0x05, 0xbb, 0xfa, 0x35, 0xd3, 0xae, 0xfe, 0x44, 0xdf, + 0xb3, 0xb5, 0xc0, 0xd0, 0xfe, 0xd5, 0x72, 0xc1, 0xb7, 0x30, 0xcb, 0xe4, 0x75, 0x18, 0x75, 0x9a, + 0x4d, 0x12, 0xc7, 0xeb, 0xa1, 0xab, 0x92, 0x95, 0x3d, 0xc3, 0xb4, 0x8d, 0x14, 0x7c, 0x74, 0x38, + 0x37, 0x9b, 0x65, 0x91, 0xa2, 0xb1, 0xce, 0xc1, 0x4c, 0x80, 0x58, 0x3a, 0xd1, 0x04, 0x88, 0x17, + 0x01, 0xf6, 0x95, 0xbd, 0x22, 0x6b, 0xe6, 0xd4, 0x2c, 0x19, 0x1a, 0x15, 0xfa, 0x29, 0x76, 0x0a, + 0xe0, 0xce, 0x40, 0x7c, 0x2a, 0x3e, 0xd7, 0xe7, 0x58, 0xe9, 0x8e, 0x45, 0x3c, 0xc4, 0x59, 0x99, + 0x84, 0x15, 0x4b, 0xf4, 0x13, 0x30, 0x15, 0xf3, 0x0c, 0x1a, 0xcb, 0xbe, 0x13, 0xb3, 0xc0, 0x1a, + 0x31, 0x0b, 0x59, 0xdc, 0x72, 0x23, 0x83, 0xc3, 0x1d, 0xd4, 0xf6, 0x97, 0x07, 0xe0, 0xc1, 0x2e, + 0xc2, 0x07, 0x2d, 0x9a, 0x97, 0xf7, 0x4f, 0x65, 0xed, 0x76, 0xb3, 0xb9, 0x85, 0x0d, 0x43, 0x5e, + 0x66, 0x8c, 0x4b, 0x1f, 0x78, 0x8c, 0xbf, 0x64, 0x69, 0x16, 0x55, 0xee, 0xe2, 0xfb, 0x99, 0x63, + 0x0a, 0xd5, 0x13, 0x34, 0xb1, 0x6e, 0xe5, 0xd8, 0x29, 0x2f, 0xf6, 0xdd, 0x9c, 0xbe, 0x0d, 0x97, + 0xa7, 0x7b, 0xd5, 0xf3, 0x79, 0x0b, 0x1e, 0xc9, 0x6d, 0xaf, 0xe1, 0x6c, 0xb4, 0x00, 0x95, 0x26, + 0x05, 0x6a, 0x41, 0x76, 0x69, 0xa8, 0xab, 0x44, 0xe0, 0x94, 0xc6, 0xf0, 0x29, 0x2a, 0xf5, 0xf4, + 0x29, 0xfa, 0x97, 0x16, 0xcc, 0x64, 0x1b, 0x71, 0x0a, 0x12, 0x70, 0xcd, 0x94, 0x80, 0x1f, 0xef, + 0x67, 0x2c, 0x0b, 0x84, 0xdf, 0x1f, 0x4f, 0xc0, 0x7d, 0x05, 0xef, 0x45, 0xec, 0xc3, 0xf4, 0x76, + 0x93, 0x98, 0xe1, 0x8b, 0xe2, 0x63, 0x72, 0x23, 0x3d, 0xbb, 0xc6, 0x3a, 0xf2, 0x83, 0x6c, 0x07, + 0x09, 0xee, 0xac, 0x02, 0x7d, 0xde, 0x82, 0x19, 0xe7, 0x56, 0xdc, 0xf1, 0x7e, 0x93, 0x98, 0x33, + 0xcf, 0xe7, 0xda, 0x57, 0x7b, 0xbc, 0xf7, 0xc4, 0x42, 0x8c, 0x66, 0xf2, 0xa8, 0x70, 0x6e, 0x5d, + 0x08, 0x8b, 0xbc, 0x90, 0x54, 0x4f, 0xee, 0x12, 0x60, 0x9b, 0x17, 0xfe, 0xc4, 0x65, 0xa1, 0xc4, + 0x60, 0xc5, 0x07, 0xdd, 0x84, 0xca, 0xb6, 0x8c, 0x49, 0x14, 0xb2, 0x36, 0x77, 0xf3, 0xca, 0x0d, + 0x5c, 0xe4, 0x31, 0x1f, 0x0a, 0x85, 0x53, 0x56, 0xe8, 0x55, 0x28, 0x07, 0x5b, 0x71, 0xb7, 0x07, + 0x33, 0x32, 0x3e, 0x78, 0x3c, 0x52, 0xfa, 0xda, 0x6a, 0x03, 0xd3, 0x82, 0xb4, 0x7c, 0xb4, 0xe9, + 0x8a, 0x2b, 0x81, 0xdc, 0xf2, 0x78, 0xa9, 0xd6, 0x59, 0x1e, 0x2f, 0xd5, 0x30, 0x2d, 0x88, 0x56, + 0x61, 0x90, 0x85, 0x38, 0x09, 0x7b, 0x7f, 0x6e, 0xa6, 0x87, 0x8e, 0xf0, 0x2d, 0x1e, 0x3a, 0xcd, + 0xc0, 0x98, 0x17, 0x47, 0xaf, 0xc1, 0x50, 0x93, 0xbd, 0x1f, 0x21, 0x8c, 0x33, 0xf9, 0xd9, 0x4b, + 0x3a, 0x5e, 0x98, 0xe0, 0xb7, 0x9c, 0x1c, 0x8e, 0x05, 0x07, 0xb4, 0x01, 0x43, 0x4d, 0xd2, 0xda, + 0xd9, 0x8a, 0x85, 0xcd, 0xe5, 0x93, 0xb9, 0xbc, 0xba, 0x3c, 0x97, 0x22, 0xb8, 0x32, 0x0a, 0x2c, + 0x78, 0xa1, 0x4f, 0x43, 0x69, 0xab, 0x29, 0xa2, 0x9d, 0x72, 0xed, 0xfc, 0x66, 0x38, 0xfb, 0xd2, + 0xd0, 0x9d, 0xc3, 0xb9, 0xd2, 0xea, 0x32, 0x2e, 0x6d, 0x35, 0xd1, 0x35, 0x18, 0xde, 0xe2, 0x31, + 0xc9, 0x22, 0xcf, 0xef, 0xe3, 0xf9, 0xe1, 0xd2, 0x1d, 0x61, 0xcb, 0x3c, 0x4a, 0x47, 0x20, 0xb0, + 0x64, 0x82, 0x36, 0x00, 0xb6, 0x54, 0x6c, 0xb5, 0x48, 0xf4, 0xfb, 0xf1, 0x7e, 0x22, 0xb0, 0x85, + 0x01, 0x42, 0x41, 0xb1, 0xc6, 0x07, 0x7d, 0x0e, 0x2a, 0x8e, 0x7c, 0x11, 0x88, 0x25, 0xf9, 0x35, + 0xf5, 0x81, 0x74, 0xc1, 0x75, 0x7f, 0x2c, 0x89, 0xcf, 0x56, 0x45, 0x84, 0x53, 0xa6, 0x68, 0x17, + 0xc6, 0xf7, 0xe3, 0xd6, 0x0e, 0x91, 0x0b, 0x94, 0x65, 0xfe, 0x2d, 0xd8, 0x90, 0x6e, 0x0a, 0x42, + 0x2f, 0x4a, 0xda, 0x8e, 0xdf, 0x21, 0x53, 0x58, 0x48, 0xd7, 0x4d, 0x9d, 0x19, 0x36, 0x79, 0xd3, + 0x4e, 0x7f, 0xaf, 0x1d, 0x6e, 0x1e, 0x24, 0x44, 0xe4, 0x03, 0xce, 0xed, 0xf4, 0xd7, 0x39, 0x49, + 0x67, 0xa7, 0x0b, 0x04, 0x96, 0x4c, 0xe8, 0x12, 0x76, 0xe4, 0x6b, 0x5b, 0xc2, 0xca, 0xf2, 0x44, + 0x61, 0xf7, 0x74, 0xb4, 0x37, 0xed, 0x14, 0x26, 0xfb, 0x52, 0x56, 0x4c, 0xe6, 0xb5, 0x76, 0xc2, + 0x24, 0x0c, 0x32, 0xf2, 0x76, 0xba, 0x58, 0xe6, 0xd5, 0x73, 0xe8, 0x3b, 0x65, 0x5e, 0x1e, 0x15, + 0xce, 0xad, 0x0b, 0xb9, 0x30, 0xd1, 0x0a, 0xa3, 0xe4, 0x56, 0x18, 0xc9, 0x59, 0x85, 0xba, 0x1c, + 0xbf, 0x0d, 0x4a, 0x51, 0x23, 0xf3, 0xd0, 0x36, 0x31, 0x38, 0xc3, 0x93, 0x0e, 0x49, 0xdc, 0x74, + 0x7c, 0xb2, 0x76, 0xbd, 0x7a, 0xa6, 0x78, 0x48, 0x1a, 0x9c, 0xa4, 0x73, 0x48, 0x04, 0x02, 0x4b, + 0x26, 0x54, 0xfa, 0xb0, 0xd4, 0xf2, 0x2c, 0x81, 0x71, 0x81, 0xf4, 0xe9, 0xf0, 0x5d, 0xe6, 0xd2, + 0x87, 0x81, 0x31, 0x2f, 0x4e, 0x67, 0xbe, 0xd0, 0x3d, 0xc3, 0xb8, 0x7a, 0xb6, 0x78, 0xe6, 0x0b, + 0x95, 0xf5, 0x7a, 0xa3, 0xdb, 0xcc, 0x57, 0x44, 0x38, 0x65, 0x6a, 0x7f, 0x63, 0xa8, 0x53, 0x5b, + 0x60, 0x67, 0x8c, 0x2f, 0x58, 0x1d, 0x17, 0xf0, 0x9f, 0xea, 0xd7, 0xe4, 0x71, 0x82, 0x7a, 0xe2, + 0xe7, 0x2d, 0xb8, 0xaf, 0x95, 0xfb, 0x51, 0x62, 0xeb, 0xed, 0xcf, 0x72, 0xc2, 0xbb, 0x41, 0xa5, + 0x06, 0xcf, 0xc7, 0xe3, 0x82, 0x9a, 0xb2, 0xba, 0x78, 0xf9, 0x03, 0xeb, 0xe2, 0xeb, 0x30, 0xc2, + 0xd4, 0xbb, 0x34, 0x15, 0x51, 0x5f, 0x6e, 0x6c, 0x6c, 0x13, 0x5f, 0x16, 0x05, 0xb1, 0x62, 0x81, + 0x7e, 0xce, 0x82, 0x87, 0xb3, 0x4d, 0xc7, 0x84, 0xa1, 0x45, 0x5a, 0x4b, 0x7e, 0xbc, 0x59, 0x15, + 0xdf, 0xff, 0x70, 0xbd, 0x1b, 0xf1, 0x51, 0x2f, 0x02, 0xdc, 0xbd, 0x32, 0x54, 0xcb, 0x39, 0x5f, + 0x0d, 0x99, 0xf7, 0x73, 0xbd, 0xcf, 0x58, 0xe8, 0x79, 0x18, 0xdb, 0x0b, 0xdb, 0x81, 0x8c, 0x31, + 0x11, 0x11, 0xc4, 0xcc, 0x16, 0xbc, 0xae, 0xc1, 0xb1, 0x41, 0x75, 0xba, 0xfa, 0xfe, 0xd7, 0xac, + 0x1c, 0x45, 0x95, 0x9f, 0x00, 0x5f, 0x31, 0x4f, 0x80, 0x8f, 0x65, 0x4f, 0x80, 0x1d, 0x96, 0x3a, + 0xe3, 0xf0, 0xd7, 0x7f, 0xba, 0xde, 0x7e, 0x73, 0x35, 0xd9, 0x3e, 0x9c, 0xef, 0x25, 0x9c, 0x99, + 0x2b, 0x9f, 0xab, 0xee, 0xb8, 0x53, 0x57, 0x3e, 0x77, 0xad, 0x86, 0x19, 0xa6, 0xdf, 0xac, 0x1f, + 0xf6, 0x7f, 0xb3, 0xa0, 0x5c, 0x0f, 0xdd, 0x53, 0xb0, 0x3c, 0x7e, 0xc6, 0xb0, 0x3c, 0x3e, 0x58, + 0xf0, 0x76, 0x67, 0xa1, 0x9d, 0x71, 0x25, 0x63, 0x67, 0x7c, 0xb8, 0x88, 0x41, 0x77, 0xab, 0xe2, + 0xdf, 0x2b, 0x83, 0xfe, 0xd2, 0x28, 0xfa, 0xd7, 0x77, 0xe3, 0x13, 0x5e, 0xee, 0xf6, 0xf8, 0xa8, + 0xe0, 0xcc, 0x3c, 0x00, 0x65, 0xb8, 0xe9, 0x0f, 0x99, 0x6b, 0xf8, 0x1b, 0xc4, 0xdb, 0xde, 0x49, + 0x88, 0x9b, 0xfd, 0x9c, 0xd3, 0x73, 0x0d, 0xff, 0x2f, 0x16, 0x4c, 0x66, 0x6a, 0x47, 0x7e, 0x5e, + 0xec, 0xda, 0x5d, 0x5a, 0x9c, 0xa6, 0x7b, 0x06, 0xbb, 0xcd, 0x03, 0xa8, 0x6b, 0x1d, 0x69, 0xd5, + 0x61, 0xba, 0xaf, 0xba, 0xf7, 0x89, 0xb1, 0x46, 0x81, 0x5e, 0x80, 0xd1, 0x24, 0x6c, 0x85, 0x7e, + 0xb8, 0x7d, 0x70, 0x85, 0xc8, 0x3c, 0x33, 0xea, 0xf2, 0x6d, 0x23, 0x45, 0x61, 0x9d, 0xce, 0xfe, + 0x95, 0x32, 0x64, 0x5f, 0xa7, 0xfd, 0xf3, 0x39, 0xf9, 0xd1, 0x9c, 0x93, 0xdf, 0xb1, 0x60, 0x8a, + 0xd6, 0xce, 0xbc, 0xab, 0xa4, 0x53, 0xb5, 0x7a, 0xd7, 0xc3, 0xea, 0xf2, 0xae, 0xc7, 0x63, 0x54, + 0x76, 0xb9, 0x61, 0x3b, 0x11, 0x56, 0x21, 0x4d, 0x38, 0x51, 0x28, 0x16, 0x58, 0x41, 0x47, 0xa2, + 0x48, 0x44, 0xa4, 0xe9, 0x74, 0x24, 0x8a, 0xb0, 0xc0, 0xca, 0x67, 0x3f, 0x06, 0x0a, 0x9e, 0xfd, + 0x60, 0x29, 0xda, 0x84, 0x47, 0x8f, 0x50, 0x28, 0xb4, 0x14, 0x6d, 0xd2, 0xd5, 0x27, 0xa5, 0xb1, + 0xbf, 0x5e, 0x86, 0xb1, 0x7a, 0xe8, 0xa6, 0x17, 0x2b, 0xcf, 0x1b, 0x17, 0x2b, 0xe7, 0x33, 0x17, + 0x2b, 0x53, 0x3a, 0xed, 0x9f, 0x5f, 0xa3, 0x7c, 0x58, 0xd7, 0x28, 0x7f, 0x66, 0xc1, 0x44, 0x3d, + 0x74, 0xe9, 0x04, 0xfd, 0x51, 0x9a, 0x8d, 0x7a, 0x02, 0xc0, 0xa1, 0x2e, 0x09, 0x00, 0xff, 0xbe, + 0x05, 0xc3, 0xf5, 0xd0, 0x3d, 0x05, 0x8b, 0xe9, 0x2b, 0xa6, 0xc5, 0xf4, 0xfe, 0x02, 0x29, 0x5b, + 0x60, 0x24, 0xfd, 0x8d, 0x32, 0x8c, 0xd3, 0x76, 0x86, 0xdb, 0x72, 0x94, 0x8c, 0x1e, 0xb1, 0xfa, + 0xe8, 0x11, 0xaa, 0xcc, 0x85, 0xbe, 0x1f, 0xde, 0xca, 0x8e, 0xd8, 0x2a, 0x83, 0x62, 0x81, 0x45, + 0x4f, 0xc3, 0x48, 0x2b, 0x22, 0xfb, 0x5e, 0xd8, 0x8e, 0xb3, 0x31, 0xad, 0x75, 0x01, 0xc7, 0x8a, + 0x82, 0xea, 0xed, 0xb1, 0x17, 0x34, 0x89, 0xf4, 0xf2, 0x19, 0x60, 0x5e, 0x3e, 0x3c, 0x87, 0xaa, + 0x06, 0xc7, 0x06, 0x15, 0x7a, 0x03, 0x2a, 0xec, 0x3f, 0x5b, 0x37, 0xc7, 0x7f, 0xd5, 0x43, 0x24, + 0x2e, 0x17, 0x0c, 0x70, 0xca, 0x0b, 0x5d, 0x04, 0x48, 0xa4, 0x3f, 0x52, 0x2c, 0x42, 0xae, 0x95, + 0x46, 0xa9, 0x3c, 0x95, 0x62, 0xac, 0x51, 0xa1, 0xa7, 0xa0, 0x92, 0x38, 0x9e, 0x7f, 0xd5, 0x0b, + 0x48, 0x2c, 0xfc, 0xb9, 0x44, 0x5e, 0x72, 0x01, 0xc4, 0x29, 0x9e, 0xee, 0xe8, 0x2c, 0xa0, 0x9f, + 0xbf, 0x09, 0x34, 0xc2, 0xa8, 0xd9, 0x8e, 0x7e, 0x55, 0x41, 0xb1, 0x46, 0x61, 0xbf, 0x04, 0x67, + 0xeb, 0xa1, 0x5b, 0x0f, 0xa3, 0x64, 0x35, 0x8c, 0x6e, 0x39, 0x91, 0x2b, 0xc7, 0x6f, 0x4e, 0xa6, + 0xc8, 0xa6, 0xbb, 0xee, 0x20, 0xb7, 0x06, 0x18, 0xc9, 0xaf, 0x9f, 0x63, 0x7b, 0xfa, 0x31, 0x83, + 0x6f, 0xfe, 0x5d, 0x09, 0x50, 0x9d, 0x79, 0x4c, 0x19, 0x0f, 0x47, 0xbd, 0x03, 0x13, 0x31, 0xb9, + 0xea, 0x05, 0xed, 0xdb, 0xf2, 0x7c, 0xd5, 0x25, 0xb2, 0xa9, 0xb1, 0xa2, 0x53, 0x72, 0x8b, 0x8a, + 0x09, 0xc3, 0x19, 0x6e, 0xb4, 0x0b, 0xa3, 0x76, 0xb0, 0x18, 0xdf, 0x88, 0x49, 0x24, 0x1e, 0x4a, + 0x62, 0x5d, 0x88, 0x25, 0x10, 0xa7, 0x78, 0x3a, 0x65, 0xd8, 0x9f, 0x6b, 0x61, 0x80, 0xc3, 0x30, + 0x91, 0x93, 0x8c, 0x3d, 0xb5, 0xa1, 0xc1, 0xb1, 0x41, 0x85, 0x56, 0x01, 0xc5, 0xed, 0x56, 0xcb, + 0x67, 0xd7, 0x90, 0x8e, 0x7f, 0x29, 0x0a, 0xdb, 0x2d, 0x7e, 0x95, 0x24, 0x5e, 0xa9, 0x68, 0x74, + 0x60, 0x71, 0x4e, 0x09, 0x2a, 0x18, 0xb6, 0x62, 0xf6, 0x5b, 0xc4, 0xf4, 0x73, 0xdb, 0x66, 0x83, + 0x81, 0xb0, 0xc4, 0xd9, 0x3f, 0xc3, 0x36, 0x33, 0xf6, 0xbe, 0x4d, 0xd2, 0x8e, 0x08, 0xda, 0x83, + 0xf1, 0x16, 0xdb, 0xb0, 0x92, 0x28, 0xf4, 0x7d, 0x22, 0xf5, 0xc6, 0xbb, 0xf3, 0xde, 0xe2, 0xef, + 0x5d, 0xe8, 0xec, 0xb0, 0xc9, 0xdd, 0xfe, 0xc2, 0x24, 0x93, 0x4b, 0x0d, 0x7e, 0x68, 0x19, 0x16, + 0x3e, 0xd9, 0x42, 0x43, 0x9b, 0x2d, 0x7e, 0x4f, 0x2e, 0x95, 0xf4, 0xc2, 0xaf, 0x1b, 0xcb, 0xb2, + 0xe8, 0x75, 0x76, 0x07, 0xc7, 0x85, 0x41, 0xaf, 0x97, 0x2c, 0x39, 0x95, 0x71, 0xdd, 0x26, 0x0a, + 0x62, 0x8d, 0x09, 0xba, 0x0a, 0xe3, 0xe2, 0x39, 0x14, 0x61, 0x78, 0x28, 0x1b, 0xc7, 0xdf, 0x71, + 0xac, 0x23, 0x8f, 0xb2, 0x00, 0x6c, 0x16, 0x46, 0xdb, 0xf0, 0xb0, 0xf6, 0x78, 0x57, 0x8e, 0x07, + 0x21, 0x97, 0x2d, 0x8f, 0xdc, 0x39, 0x9c, 0x7b, 0x78, 0xa3, 0x1b, 0x21, 0xee, 0xce, 0x07, 0x5d, + 0x87, 0xb3, 0x4e, 0x33, 0xf1, 0xf6, 0x49, 0x8d, 0x38, 0xae, 0xef, 0x05, 0xc4, 0x4c, 0xf2, 0xf0, + 0xc0, 0x9d, 0xc3, 0xb9, 0xb3, 0x8b, 0x79, 0x04, 0x38, 0xbf, 0x1c, 0x7a, 0x05, 0x2a, 0x6e, 0x10, + 0x8b, 0x3e, 0x18, 0x32, 0xde, 0xa5, 0xab, 0xd4, 0xae, 0x35, 0xd4, 0xf7, 0xa7, 0x7f, 0x70, 0x5a, + 0x00, 0x6d, 0xc3, 0x98, 0x1e, 0xc8, 0x25, 0xde, 0x34, 0x7c, 0xa6, 0xcb, 0xd9, 0xd6, 0x88, 0x7e, + 0xe2, 0x56, 0x37, 0xe5, 0x9f, 0x6b, 0x04, 0x46, 0x19, 0x8c, 0xd1, 0x6b, 0x80, 0x62, 0x12, 0xed, + 0x7b, 0x4d, 0xb2, 0xd8, 0x64, 0x49, 0x86, 0x99, 0xad, 0x66, 0xc4, 0x08, 0x36, 0x41, 0x8d, 0x0e, + 0x0a, 0x9c, 0x53, 0x0a, 0x5d, 0xa6, 0x12, 0x45, 0x87, 0x0a, 0x77, 0x6a, 0xa9, 0xe6, 0x55, 0x6b, + 0xa4, 0x15, 0x91, 0xa6, 0x93, 0x10, 0xd7, 0xe4, 0x88, 0x33, 0xe5, 0xe8, 0x7e, 0xa3, 0xde, 0x6e, + 0x00, 0xd3, 0x09, 0xb8, 0xf3, 0xfd, 0x06, 0x7a, 0x42, 0xda, 0x09, 0xe3, 0xe4, 0x1a, 0x49, 0x6e, + 0x85, 0xd1, 0xae, 0xc8, 0xcc, 0x96, 0x26, 0x6e, 0x4c, 0x51, 0x58, 0xa7, 0xa3, 0x1a, 0x11, 0xbb, + 0x04, 0x5b, 0xab, 0xb1, 0x7b, 0x8a, 0x91, 0x74, 0x9d, 0x5c, 0xe6, 0x60, 0x2c, 0xf1, 0x92, 0x74, + 0xad, 0xbe, 0xcc, 0x6e, 0x1f, 0x32, 0xa4, 0x6b, 0xf5, 0x65, 0x2c, 0xf1, 0x88, 0x74, 0xbe, 0xf9, + 0x37, 0x51, 0x7c, 0x6f, 0xd4, 0x29, 0x97, 0xfb, 0x7c, 0xf6, 0x2f, 0x80, 0x29, 0xf5, 0xda, 0x20, + 0x4f, 0x59, 0x17, 0x57, 0x27, 0xd9, 0x24, 0xe9, 0x3f, 0xdf, 0x9d, 0xb2, 0xc5, 0xad, 0x65, 0x38, + 0xe1, 0x0e, 0xde, 0x46, 0xf2, 0x90, 0xa9, 0x9e, 0x6f, 0x6f, 0x2c, 0x40, 0x25, 0x6e, 0x6f, 0xba, + 0xe1, 0x9e, 0xe3, 0x05, 0xec, 0xb2, 0x40, 0x53, 0x44, 0x1a, 0x12, 0x81, 0x53, 0x1a, 0xb4, 0x0a, + 0x23, 0x8e, 0x38, 0x7c, 0x09, 0xf3, 0x7e, 0x6e, 0x36, 0x01, 0x79, 0x40, 0xe3, 0x76, 0x50, 0xf9, + 0x0f, 0xab, 0xb2, 0xe8, 0x65, 0x18, 0x17, 0x01, 0x6f, 0xc2, 0x57, 0xf5, 0x8c, 0x19, 0x1b, 0xd1, + 0xd0, 0x91, 0xd8, 0xa4, 0x45, 0x3f, 0x05, 0x13, 0x94, 0x4b, 0x2a, 0xd8, 0xaa, 0x33, 0xfd, 0x48, + 0x44, 0x2d, 0xa7, 0xba, 0x5e, 0x18, 0x67, 0x98, 0x21, 0x17, 0x1e, 0x72, 0xda, 0x49, 0xc8, 0x8c, + 0x95, 0xe6, 0xfc, 0xdf, 0x08, 0x77, 0x49, 0xc0, 0xac, 0xfb, 0x23, 0x4b, 0xe7, 0xef, 0x1c, 0xce, + 0x3d, 0xb4, 0xd8, 0x85, 0x0e, 0x77, 0xe5, 0x82, 0x6e, 0xc0, 0x68, 0x12, 0xfa, 0xc2, 0xc9, 0x3c, + 0xae, 0xde, 0x57, 0x9c, 0xfc, 0x68, 0x43, 0x91, 0xe9, 0xe6, 0x04, 0x55, 0x14, 0xeb, 0x7c, 0xd0, + 0x06, 0x5f, 0x63, 0x2c, 0x55, 0x27, 0x89, 0xab, 0xf7, 0x17, 0x77, 0x8c, 0xca, 0xe8, 0x69, 0x2e, + 0x41, 0x51, 0x12, 0xeb, 0x6c, 0xd0, 0x25, 0x98, 0x6e, 0x45, 0x5e, 0xc8, 0x26, 0xb6, 0x32, 0x14, + 0x57, 0x8d, 0xb4, 0x78, 0xd3, 0xf5, 0x2c, 0x01, 0xee, 0x2c, 0x83, 0x2e, 0x50, 0x05, 0x95, 0x03, + 0xab, 0x0f, 0xf0, 0x37, 0x59, 0xb8, 0x72, 0xca, 0x61, 0x58, 0x61, 0x67, 0x7f, 0x1c, 0xa6, 0x3b, + 0x24, 0xe5, 0xb1, 0x1c, 0x7e, 0xff, 0xc9, 0x20, 0x54, 0x94, 0x39, 0x10, 0x2d, 0x98, 0x56, 0xde, + 0x07, 0xb2, 0x56, 0xde, 0x11, 0xaa, 0xaf, 0xe9, 0x86, 0xdd, 0x8d, 0x9c, 0x27, 0xe5, 0xcf, 0x17, + 0x88, 0x86, 0xfe, 0xa3, 0xf3, 0x8e, 0xf1, 0xdc, 0x7e, 0x7a, 0x60, 0x1c, 0xe8, 0x7a, 0x60, 0xec, + 0xf3, 0x79, 0x47, 0x7a, 0x34, 0x6c, 0x85, 0xee, 0x5a, 0x3d, 0xfb, 0xde, 0x59, 0x9d, 0x02, 0x31, + 0xc7, 0x31, 0xe5, 0x9e, 0x6e, 0xeb, 0x4c, 0xb9, 0x1f, 0xbe, 0x4b, 0xe5, 0x5e, 0x32, 0xc0, 0x29, + 0x2f, 0xe4, 0xc3, 0x74, 0xd3, 0x7c, 0xaa, 0x4e, 0x45, 0xe4, 0x3d, 0xda, 0xf3, 0xd1, 0xb8, 0xb6, + 0xf6, 0x86, 0xcd, 0x72, 0x96, 0x0b, 0xee, 0x64, 0x8c, 0x5e, 0x86, 0x91, 0xf7, 0xc2, 0x98, 0x4d, + 0x3b, 0xb1, 0xb7, 0xc9, 0x18, 0xa8, 0x91, 0xd7, 0xaf, 0x37, 0x18, 0xfc, 0xe8, 0x70, 0x6e, 0xb4, + 0x1e, 0xba, 0xf2, 0x2f, 0x56, 0x05, 0xd0, 0x6d, 0x38, 0x6b, 0x48, 0x04, 0xd5, 0x5c, 0xe8, 0xbf, + 0xb9, 0x0f, 0x8b, 0xea, 0xce, 0xae, 0xe5, 0x71, 0xc2, 0xf9, 0x15, 0xd8, 0xdf, 0xe0, 0x46, 0x4f, + 0x61, 0x1a, 0x21, 0x71, 0xdb, 0x3f, 0x8d, 0x87, 0x2a, 0x56, 0x0c, 0xab, 0xcd, 0x5d, 0x1b, 0xd6, + 0x7f, 0xd7, 0x62, 0x86, 0xf5, 0x0d, 0xb2, 0xd7, 0xf2, 0x9d, 0xe4, 0x34, 0xdc, 0xbc, 0x5f, 0x87, + 0x91, 0x44, 0xd4, 0xd6, 0xed, 0x6d, 0x0d, 0xad, 0x51, 0xec, 0x72, 0x41, 0x6d, 0x88, 0x12, 0x8a, + 0x15, 0x1b, 0xfb, 0x9f, 0xf1, 0x11, 0x90, 0x98, 0x53, 0xb0, 0x2d, 0xd4, 0x4c, 0xdb, 0xc2, 0x5c, + 0x8f, 0x2f, 0x28, 0xb0, 0x31, 0xfc, 0x53, 0xb3, 0xdd, 0xec, 0xec, 0xf1, 0x51, 0xbf, 0xd1, 0xb1, + 0x7f, 0xd1, 0x82, 0x99, 0x3c, 0x47, 0x00, 0xaa, 0xc4, 0xf0, 0x93, 0x8f, 0xba, 0xe1, 0x52, 0x3d, + 0x78, 0x53, 0xc0, 0xb1, 0xa2, 0xe8, 0x3b, 0xbf, 0xfd, 0xf1, 0x12, 0x7e, 0x5d, 0x07, 0xf3, 0x55, + 0x43, 0xf4, 0x2a, 0x8f, 0xdb, 0xb0, 0xd4, 0xb3, 0x83, 0xc7, 0x8b, 0xd9, 0xb0, 0x7f, 0xb5, 0x04, + 0x33, 0xdc, 0x44, 0xbd, 0xb8, 0x1f, 0x7a, 0x6e, 0x3d, 0x74, 0x45, 0x14, 0xcb, 0x5b, 0x30, 0xd6, + 0xd2, 0x8e, 0xab, 0xdd, 0x52, 0x0e, 0xe9, 0xc7, 0xda, 0xf4, 0xd8, 0xa0, 0x43, 0xb1, 0xc1, 0x0b, + 0xb9, 0x30, 0x46, 0xf6, 0xbd, 0xa6, 0xb2, 0x73, 0x96, 0x8e, 0x2d, 0xd2, 0x55, 0x2d, 0x2b, 0x1a, + 0x1f, 0x6c, 0x70, 0xbd, 0x07, 0xaf, 0xd0, 0xd8, 0x5f, 0xb1, 0xe0, 0xfe, 0x82, 0x04, 0x45, 0xb4, + 0xba, 0x5b, 0xec, 0x32, 0x40, 0x3c, 0x91, 0xa9, 0xaa, 0xe3, 0x57, 0x04, 0x58, 0x60, 0xd1, 0x4f, + 0x02, 0x70, 0x13, 0x3f, 0xd5, 0xa2, 0xc5, 0xa7, 0xf7, 0x97, 0xb8, 0x43, 0xcb, 0xee, 0x20, 0xcb, + 0x63, 0x8d, 0x97, 0xfd, 0xcb, 0x65, 0x18, 0xe4, 0xef, 0xa5, 0xaf, 0xc2, 0xf0, 0x0e, 0x4f, 0x87, + 0xdc, 0x4f, 0xe6, 0xe5, 0xf4, 0x38, 0xc2, 0x01, 0x58, 0x16, 0x46, 0xeb, 0x70, 0x46, 0x44, 0x4a, + 0xd5, 0x88, 0xef, 0x1c, 0xc8, 0x53, 0x2d, 0x7f, 0x9a, 0x44, 0xa6, 0xcd, 0x3f, 0xb3, 0xd6, 0x49, + 0x82, 0xf3, 0xca, 0xa1, 0x57, 0x3b, 0x92, 0x20, 0xf2, 0x44, 0xd2, 0x4a, 0x07, 0xee, 0x91, 0x08, + 0xf1, 0x65, 0x18, 0x6f, 0x75, 0x9c, 0xdf, 0xb5, 0xa7, 0xaa, 0xcd, 0x33, 0xbb, 0x49, 0xcb, 0xbc, + 0x0a, 0xda, 0xcc, 0x87, 0x62, 0x63, 0x27, 0x22, 0xf1, 0x4e, 0xe8, 0xbb, 0xe2, 0x5d, 0xd6, 0xd4, + 0xab, 0x20, 0x83, 0xc7, 0x1d, 0x25, 0x28, 0x97, 0x2d, 0xc7, 0xf3, 0xdb, 0x11, 0x49, 0xb9, 0x0c, + 0x99, 0x5c, 0x56, 0x33, 0x78, 0xdc, 0x51, 0x82, 0xce, 0xa3, 0xb3, 0xe2, 0x51, 0x4f, 0x19, 0x3f, + 0xaf, 0x5c, 0x45, 0x86, 0xa5, 0x1f, 0x7d, 0x97, 0x9c, 0x2e, 0xe2, 0xca, 0x5f, 0x3d, 0x0b, 0xaa, + 0x3d, 0x19, 0x27, 0x3c, 0xe8, 0x25, 0x97, 0xbb, 0x79, 0x5a, 0xf2, 0x8f, 0x2c, 0x38, 0x93, 0xe3, + 0x3e, 0xc6, 0x45, 0xd5, 0xb6, 0x17, 0x27, 0xea, 0x45, 0x0c, 0x4d, 0x54, 0x71, 0x38, 0x56, 0x14, + 0x74, 0x3d, 0x70, 0x61, 0x98, 0x15, 0x80, 0xc2, 0xe5, 0x43, 0x60, 0x8f, 0x27, 0x00, 0xd1, 0x79, + 0x18, 0x68, 0xc7, 0x24, 0x92, 0x6f, 0x32, 0x4a, 0xf9, 0xcd, 0x2c, 0x82, 0x0c, 0x43, 0x35, 0xca, + 0x6d, 0x65, 0x8c, 0xd3, 0x34, 0x4a, 0x6e, 0x8e, 0xe3, 0x38, 0xfb, 0x4b, 0x65, 0x98, 0xcc, 0x38, + 0x80, 0xd2, 0x86, 0xec, 0x85, 0x81, 0x97, 0x84, 0x2a, 0x07, 0x1f, 0x4f, 0x39, 0x42, 0x5a, 0x3b, + 0xeb, 0x02, 0x8e, 0x15, 0x05, 0x7a, 0x4c, 0x3e, 0xd4, 0x9b, 0x7d, 0xe9, 0x63, 0xa9, 0x66, 0xbc, + 0xd5, 0xdb, 0xef, 0x93, 0x3d, 0x8f, 0xc2, 0x40, 0x2b, 0x54, 0xaf, 0xa8, 0xab, 0xf1, 0xc4, 0x4b, + 0xb5, 0x7a, 0x18, 0xfa, 0x98, 0x21, 0xd1, 0x27, 0xc4, 0xd7, 0x67, 0xee, 0x2b, 0xb0, 0xe3, 0x86, + 0xb1, 0xd6, 0x05, 0x4f, 0xc0, 0xf0, 0x2e, 0x39, 0x88, 0xbc, 0x60, 0x3b, 0x7b, 0x5b, 0x73, 0x85, + 0x83, 0xb1, 0xc4, 0x9b, 0x29, 0xef, 0x87, 0xef, 0xc9, 0xab, 0x3b, 0x23, 0x3d, 0x77, 0xb5, 0xdf, + 0xb0, 0x60, 0x92, 0xe5, 0xbb, 0x15, 0x99, 0x1a, 0xbc, 0x30, 0x38, 0x05, 0x3d, 0xe1, 0x51, 0x18, + 0x8c, 0x68, 0xa5, 0xd9, 0xa7, 0x34, 0x58, 0x4b, 0x30, 0xc7, 0xa1, 0x87, 0x60, 0x80, 0x35, 0x81, + 0x0e, 0xde, 0x18, 0xcf, 0x78, 0x5f, 0x73, 0x12, 0x07, 0x33, 0x28, 0x0b, 0x99, 0xc3, 0xa4, 0xe5, + 0x7b, 0xbc, 0xd1, 0xa9, 0xb9, 0xf5, 0xa3, 0x11, 0x32, 0x97, 0xdb, 0xb4, 0x0f, 0x16, 0x32, 0x97, + 0xcf, 0xb2, 0xbb, 0x0e, 0xfe, 0xdf, 0x4b, 0x70, 0x2e, 0xb7, 0x5c, 0xdf, 0x21, 0x73, 0xdd, 0x4b, + 0x9f, 0xcc, 0x5d, 0x6f, 0xfe, 0x15, 0x6c, 0xf9, 0x14, 0xaf, 0x60, 0x07, 0xfa, 0x55, 0x53, 0x06, + 0xfb, 0x88, 0x64, 0xcb, 0xed, 0xb2, 0x8f, 0x48, 0x24, 0x5b, 0x6e, 0xdb, 0x0a, 0xce, 0x10, 0x3f, + 0x28, 0x15, 0x7c, 0x0b, 0x3b, 0x4d, 0x5c, 0xa0, 0x72, 0x86, 0x21, 0x63, 0xa1, 0x76, 0x8d, 0x71, + 0x19, 0xc3, 0x61, 0x58, 0x61, 0x91, 0xa7, 0xc5, 0x84, 0xf1, 0xa6, 0xbd, 0x7c, 0xac, 0x25, 0x33, + 0x6f, 0x5a, 0xc7, 0xf5, 0xb4, 0x12, 0xd9, 0xf8, 0xb0, 0x75, 0xed, 0x04, 0x58, 0xee, 0xff, 0x04, + 0x38, 0x96, 0x7f, 0xfa, 0x43, 0x8b, 0x30, 0xb9, 0xe7, 0x05, 0xec, 0x3d, 0x5c, 0x53, 0xef, 0x51, + 0x21, 0xd2, 0xeb, 0x26, 0x1a, 0x67, 0xe9, 0x67, 0x5f, 0x86, 0xf1, 0xbb, 0x37, 0x59, 0x7d, 0xa7, + 0x0c, 0x0f, 0x76, 0x59, 0xf6, 0x5c, 0xd6, 0x1b, 0x63, 0xa0, 0xc9, 0xfa, 0x8e, 0x71, 0xa8, 0xc3, + 0xcc, 0x56, 0xdb, 0xf7, 0x0f, 0x98, 0x97, 0x13, 0x71, 0x25, 0x85, 0x50, 0x4c, 0x54, 0x32, 0xeb, + 0xd5, 0x1c, 0x1a, 0x9c, 0x5b, 0x12, 0xbd, 0x06, 0x28, 0xdc, 0x64, 0x09, 0x96, 0xdd, 0x34, 0x59, + 0x06, 0xeb, 0xf8, 0x72, 0xba, 0x18, 0xaf, 0x77, 0x50, 0xe0, 0x9c, 0x52, 0x54, 0xc3, 0x64, 0x2f, + 0xf8, 0xab, 0x66, 0x65, 0x34, 0x4c, 0xac, 0x23, 0xb1, 0x49, 0x8b, 0x2e, 0xc1, 0xb4, 0xb3, 0xef, + 0x78, 0x3c, 0x79, 0x9a, 0x64, 0xc0, 0x55, 0x4c, 0x65, 0x28, 0x5a, 0xcc, 0x12, 0xe0, 0xce, 0x32, + 0x99, 0xe0, 0xb6, 0xa1, 0xe2, 0xe0, 0xb6, 0xee, 0x72, 0xb1, 0x97, 0xdd, 0xcf, 0xfe, 0x4f, 0x16, + 0xdd, 0xbe, 0x72, 0x1e, 0x60, 0xa5, 0xfd, 0xa0, 0xec, 0x57, 0x5a, 0x9c, 0x99, 0xea, 0x87, 0x65, + 0x1d, 0x89, 0x4d, 0x5a, 0x3e, 0x21, 0xe2, 0xd4, 0xc9, 0xda, 0xd0, 0x13, 0x45, 0x00, 0xa8, 0xa2, + 0x40, 0x6f, 0xc2, 0xb0, 0xeb, 0xed, 0x7b, 0x71, 0x18, 0x89, 0xc5, 0x72, 0xdc, 0x47, 0xc7, 0x95, + 0x1c, 0xac, 0x71, 0x36, 0x58, 0xf2, 0xb3, 0xbf, 0x54, 0x82, 0x71, 0x59, 0xe3, 0xeb, 0xed, 0x30, + 0x71, 0x4e, 0x61, 0x5b, 0xbe, 0x64, 0x6c, 0xcb, 0x9f, 0xe8, 0x16, 0x05, 0xcb, 0x9a, 0x54, 0xb8, + 0x1d, 0x5f, 0xcf, 0x6c, 0xc7, 0x8f, 0xf7, 0x66, 0xd5, 0x7d, 0x1b, 0xfe, 0xe7, 0x16, 0x4c, 0x1b, + 0xf4, 0xa7, 0xb0, 0x1b, 0xac, 0x9a, 0xbb, 0xc1, 0x23, 0x3d, 0xbf, 0xa1, 0x60, 0x17, 0xf8, 0x5a, + 0x29, 0xd3, 0x76, 0x26, 0xfd, 0xdf, 0x83, 0x81, 0x1d, 0x27, 0x72, 0xbb, 0xa5, 0x00, 0xed, 0x28, + 0x34, 0x7f, 0xd9, 0x89, 0x5c, 0x2e, 0xc3, 0x9f, 0x56, 0x6f, 0xc3, 0x39, 0x91, 0xdb, 0x33, 0xa6, + 0x80, 0x55, 0x85, 0x5e, 0x82, 0xa1, 0xb8, 0x19, 0xb6, 0x94, 0xef, 0xe5, 0x79, 0xfe, 0x6e, 0x1c, + 0x85, 0x1c, 0x1d, 0xce, 0x21, 0xb3, 0x3a, 0x0a, 0xc6, 0x82, 0x7e, 0x76, 0x1b, 0x2a, 0xaa, 0xea, + 0x7b, 0xea, 0x55, 0xfe, 0x07, 0x65, 0x38, 0x93, 0x33, 0x2f, 0x50, 0x6c, 0xf4, 0xd6, 0xb3, 0x7d, + 0x4e, 0xa7, 0x0f, 0xd8, 0x5f, 0x31, 0x3b, 0xb1, 0xb8, 0x62, 0xfc, 0xfb, 0xae, 0xf4, 0x46, 0x4c, + 0xb2, 0x95, 0x52, 0x50, 0xef, 0x4a, 0x69, 0x65, 0xa7, 0xd6, 0xd5, 0xb4, 0x22, 0xd5, 0xd2, 0x7b, + 0x3a, 0xa6, 0x7f, 0x52, 0x86, 0x99, 0xbc, 0xe0, 0x79, 0xf4, 0xd3, 0x99, 0x07, 0x45, 0x9e, 0xef, + 0x37, 0xec, 0x9e, 0xbf, 0x32, 0x22, 0xb2, 0x0d, 0xcd, 0x9b, 0x4f, 0x8c, 0xf4, 0xec, 0x66, 0x51, + 0x27, 0x0b, 0xf2, 0x89, 0xf8, 0x43, 0x30, 0x72, 0x89, 0x7f, 0xaa, 0xef, 0x06, 0x88, 0x17, 0x64, + 0xe2, 0x4c, 0x90, 0x8f, 0x04, 0xf7, 0x0e, 0xf2, 0x91, 0x35, 0xcf, 0x7a, 0x30, 0xaa, 0x7d, 0xcd, + 0x3d, 0x1d, 0xf1, 0x5d, 0xba, 0xa3, 0x68, 0xed, 0xbe, 0xa7, 0xa3, 0xfe, 0x15, 0x0b, 0x32, 0x7e, + 0x52, 0xca, 0xfe, 0x61, 0x15, 0xda, 0x3f, 0xce, 0xc3, 0x40, 0x14, 0xfa, 0x24, 0xfb, 0xc6, 0x04, + 0x0e, 0x7d, 0x82, 0x19, 0x46, 0x3d, 0x04, 0x5d, 0x2e, 0x7a, 0x08, 0x9a, 0x1e, 0x8d, 0x7d, 0xb2, + 0x4f, 0xa4, 0x35, 0x42, 0xc9, 0xe4, 0xab, 0x14, 0x88, 0x39, 0xce, 0xfe, 0xb5, 0x01, 0x38, 0x93, + 0x13, 0xd2, 0x46, 0x0f, 0x2a, 0xdb, 0x4e, 0x42, 0x6e, 0x39, 0x07, 0xd9, 0xbc, 0xb7, 0x97, 0x38, + 0x18, 0x4b, 0x3c, 0xf3, 0xe5, 0xe4, 0xa9, 0xf3, 0x32, 0x36, 0x22, 0x91, 0x31, 0x4f, 0x60, 0xef, + 0xd5, 0xdb, 0xc0, 0x17, 0x01, 0xe2, 0xd8, 0x5f, 0x09, 0xa8, 0xf2, 0xe5, 0x0a, 0x4f, 0xd1, 0x34, + 0xcf, 0x62, 0xe3, 0xaa, 0xc0, 0x60, 0x8d, 0x0a, 0xd5, 0x60, 0xaa, 0x15, 0x85, 0x09, 0xb7, 0xbb, + 0xd5, 0xb8, 0x8f, 0xc2, 0xa0, 0x19, 0x9c, 0x54, 0xcf, 0xe0, 0x71, 0x47, 0x09, 0xf4, 0x02, 0x8c, + 0x8a, 0x80, 0xa5, 0x7a, 0x18, 0xfa, 0xc2, 0x4a, 0xa3, 0x6e, 0xbc, 0x1b, 0x29, 0x0a, 0xeb, 0x74, + 0x5a, 0x31, 0x66, 0xcc, 0x1b, 0xce, 0x2d, 0xc6, 0x0d, 0x7a, 0x1a, 0x5d, 0x26, 0x87, 0xc6, 0x48, + 0x5f, 0x39, 0x34, 0x52, 0xbb, 0x55, 0xa5, 0xef, 0xfb, 0x0b, 0xe8, 0x69, 0xe9, 0xf9, 0x46, 0x19, + 0x86, 0xf8, 0x50, 0x9c, 0x82, 0x2a, 0xb6, 0x2a, 0x6c, 0x37, 0x5d, 0x32, 0x0a, 0xf0, 0xb6, 0xcc, + 0xd7, 0x9c, 0xc4, 0xe1, 0x62, 0x48, 0xad, 0x86, 0xd4, 0xca, 0x83, 0xe6, 0x8d, 0xf5, 0x32, 0x9b, + 0x31, 0x4e, 0x00, 0xe7, 0xa1, 0xad, 0x9e, 0x77, 0x00, 0x62, 0xf6, 0x3e, 0x2d, 0xe5, 0x21, 0x72, + 0x53, 0x3c, 0xd9, 0xa5, 0xf6, 0x86, 0x22, 0xe6, 0x6d, 0x48, 0xa7, 0xa0, 0x42, 0x60, 0x8d, 0xe3, + 0xec, 0x8b, 0x50, 0x51, 0xc4, 0xbd, 0x4e, 0x72, 0x63, 0xba, 0xf0, 0xfa, 0x0c, 0x4c, 0x66, 0xea, + 0x3a, 0xd6, 0x41, 0xf0, 0x37, 0x2d, 0x98, 0xe4, 0x4d, 0x5e, 0x09, 0xf6, 0xc5, 0x62, 0x7f, 0x1f, + 0x66, 0xfc, 0x9c, 0x45, 0x27, 0x46, 0xb4, 0xff, 0x45, 0xaa, 0x0e, 0x7e, 0x79, 0x58, 0x9c, 0x5b, + 0x07, 0x3d, 0xfc, 0xf3, 0x97, 0xb5, 0x1d, 0x5f, 0x78, 0x20, 0x8f, 0xf1, 0xdc, 0xe2, 0x1c, 0x86, + 0x15, 0xd6, 0xfe, 0xae, 0x05, 0xd3, 0xbc, 0xe5, 0x57, 0xc8, 0x81, 0x3a, 0xe4, 0x7c, 0x98, 0x6d, + 0x17, 0xa9, 0xd3, 0x4b, 0x05, 0xa9, 0xd3, 0xf5, 0x4f, 0x2b, 0x77, 0xfd, 0xb4, 0x5f, 0xb5, 0x40, + 0xcc, 0xc0, 0x53, 0x50, 0xe7, 0x7f, 0xdc, 0x54, 0xe7, 0x67, 0x8b, 0x27, 0x75, 0x81, 0x1e, 0xff, + 0x67, 0x16, 0x4c, 0x71, 0x82, 0xf4, 0xf2, 0xe2, 0x43, 0x1d, 0x87, 0x7e, 0xde, 0xf3, 0x51, 0x0f, + 0xa8, 0xe6, 0x7f, 0x94, 0x31, 0x58, 0x03, 0x5d, 0x07, 0xcb, 0x95, 0x0b, 0xe8, 0x18, 0xef, 0x54, + 0x1d, 0x3b, 0xdb, 0x9f, 0xfd, 0xc7, 0x16, 0x20, 0x5e, 0x4d, 0xf6, 0x49, 0x73, 0xbe, 0xf5, 0x69, + 0x07, 0xfa, 0x54, 0xd4, 0x28, 0x0c, 0xd6, 0xa8, 0x4e, 0xa4, 0x7b, 0x32, 0x37, 0x50, 0xe5, 0xde, + 0x37, 0x50, 0xc7, 0xe8, 0xd1, 0xbf, 0x3a, 0x00, 0x59, 0x77, 0x47, 0x74, 0x13, 0xc6, 0x9a, 0x4e, + 0xcb, 0xd9, 0xf4, 0x7c, 0x2f, 0xf1, 0x48, 0xdc, 0xed, 0xea, 0x7a, 0x59, 0xa3, 0x13, 0xd7, 0x3d, + 0x1a, 0x04, 0x1b, 0x7c, 0xd0, 0x3c, 0x40, 0x2b, 0xf2, 0xf6, 0x3d, 0x9f, 0x6c, 0xb3, 0x13, 0x0d, + 0x8b, 0x79, 0xe0, 0xf7, 0xb1, 0x12, 0x8a, 0x35, 0x8a, 0x1c, 0x1f, 0xf9, 0xf2, 0xbd, 0xf3, 0x91, + 0x1f, 0x38, 0xa6, 0x8f, 0xfc, 0x60, 0x5f, 0x3e, 0xf2, 0x18, 0xee, 0x93, 0x7b, 0x37, 0xfd, 0xbf, + 0xea, 0xf9, 0x44, 0x28, 0x6c, 0x3c, 0x12, 0x62, 0xf6, 0xce, 0xe1, 0xdc, 0x7d, 0x38, 0x97, 0x02, + 0x17, 0x94, 0x44, 0x3f, 0x09, 0x55, 0xc7, 0xf7, 0xc3, 0x5b, 0xaa, 0xd7, 0x56, 0xe2, 0xa6, 0xe3, + 0xa7, 0xc9, 0x6f, 0x47, 0x96, 0x1e, 0xba, 0x73, 0x38, 0x57, 0x5d, 0x2c, 0xa0, 0xc1, 0x85, 0xa5, + 0xed, 0x5d, 0x38, 0xd3, 0x20, 0x91, 0x7c, 0xfa, 0x4e, 0x2d, 0xb1, 0x0d, 0xa8, 0x44, 0x19, 0xa1, + 0xd2, 0x57, 0xb8, 0xbc, 0x96, 0x98, 0x4c, 0x0a, 0x91, 0x94, 0x91, 0xfd, 0xa7, 0x16, 0x0c, 0x0b, + 0x17, 0xca, 0x53, 0xd0, 0x65, 0x16, 0x0d, 0xb3, 0xd2, 0x5c, 0xbe, 0xe0, 0x65, 0x8d, 0x29, 0x34, + 0x28, 0xad, 0x65, 0x0c, 0x4a, 0x8f, 0x74, 0x63, 0xd2, 0xdd, 0x94, 0xf4, 0x0b, 0x65, 0x98, 0x30, + 0xdd, 0x47, 0x4f, 0xa1, 0x0b, 0xae, 0xc1, 0x70, 0x2c, 0x7c, 0x95, 0x4b, 0xc5, 0x3e, 0x6f, 0xd9, + 0x41, 0x4c, 0x6f, 0xc6, 0x85, 0x77, 0xb2, 0x64, 0x92, 0xeb, 0x04, 0x5d, 0xbe, 0x87, 0x4e, 0xd0, + 0xbd, 0x3c, 0x78, 0x07, 0x4e, 0xc2, 0x83, 0xd7, 0xfe, 0x26, 0x13, 0xfe, 0x3a, 0xfc, 0x14, 0xf4, + 0x82, 0x4b, 0xe6, 0x36, 0x61, 0x77, 0x99, 0x59, 0xa2, 0x51, 0x05, 0xfa, 0xc1, 0x3f, 0xb2, 0x60, + 0x54, 0x10, 0x9e, 0x42, 0xb3, 0x7f, 0xc2, 0x6c, 0xf6, 0x83, 0x5d, 0x9a, 0x5d, 0xd0, 0xde, 0xbf, + 0x5d, 0x52, 0xed, 0xad, 0x87, 0x51, 0xd2, 0x57, 0x32, 0xf4, 0x11, 0x7a, 0x1a, 0x0c, 0x9b, 0xa1, + 0x2f, 0x36, 0xf3, 0x87, 0xd2, 0x60, 0x38, 0x0e, 0x3f, 0xd2, 0x7e, 0x63, 0x45, 0xcd, 0x62, 0xb5, + 0xc2, 0x28, 0x11, 0x1b, 0x68, 0x1a, 0xab, 0x15, 0x46, 0x09, 0x66, 0x18, 0xe4, 0x02, 0x24, 0x4e, + 0xb4, 0x4d, 0x12, 0x0a, 0x13, 0xd1, 0xa3, 0xc5, 0xab, 0xb0, 0x9d, 0x78, 0xfe, 0xbc, 0x17, 0x24, + 0x71, 0x12, 0xcd, 0xaf, 0x05, 0xc9, 0xf5, 0x88, 0x9f, 0x0d, 0xb4, 0xe8, 0x36, 0xc5, 0x0b, 0x6b, + 0x7c, 0x65, 0x78, 0x05, 0xab, 0x63, 0xd0, 0xbc, 0xef, 0xb9, 0x26, 0xe0, 0x58, 0x51, 0xd8, 0x2f, + 0x32, 0x99, 0xcc, 0x3a, 0xe8, 0x78, 0x81, 0x67, 0xdf, 0x1e, 0x51, 0x5d, 0xcb, 0x8c, 0xbd, 0x35, + 0x3d, 0xbc, 0xad, 0xbb, 0x08, 0xa4, 0x15, 0xeb, 0xae, 0xc4, 0x69, 0x0c, 0x1c, 0xfa, 0x6c, 0xc7, + 0x35, 0xe0, 0x33, 0x3d, 0x64, 0xe9, 0x31, 0x2e, 0xfe, 0x58, 0x66, 0x3e, 0x96, 0xc1, 0x6c, 0xad, + 0x9e, 0x4d, 0x57, 0xbf, 0x2c, 0x11, 0x38, 0xa5, 0x41, 0x0b, 0xe2, 0x64, 0xc9, 0xcd, 0x2c, 0x0f, + 0x66, 0x4e, 0x96, 0xf2, 0xf3, 0xb5, 0xa3, 0xe5, 0xb3, 0x30, 0xaa, 0x9e, 0x00, 0xaa, 0xf3, 0x97, + 0x54, 0x2a, 0x5c, 0x97, 0x5a, 0x49, 0xc1, 0x58, 0xa7, 0x41, 0x1b, 0x30, 0x19, 0xf3, 0xf7, 0x89, + 0x64, 0xc4, 0x83, 0xb0, 0x1b, 0x3c, 0x29, 0xaf, 0x0f, 0x1b, 0x26, 0xfa, 0x88, 0x81, 0xf8, 0x62, + 0x95, 0x31, 0x12, 0x59, 0x16, 0xe8, 0x55, 0x98, 0xf0, 0xf5, 0x77, 0x5a, 0xeb, 0xc2, 0xac, 0xa0, + 0x5c, 0xb9, 0x8c, 0x57, 0x5c, 0xeb, 0x38, 0x43, 0x4d, 0x95, 0x00, 0x1d, 0x22, 0x12, 0xe8, 0x38, + 0xc1, 0x36, 0x89, 0xc5, 0x03, 0x26, 0x4c, 0x09, 0xb8, 0x5a, 0x40, 0x83, 0x0b, 0x4b, 0xa3, 0x97, + 0x60, 0x4c, 0x7e, 0xbe, 0x16, 0x01, 0x94, 0x3a, 0x0c, 0x6a, 0x38, 0x6c, 0x50, 0xa2, 0x5b, 0x70, + 0x56, 0xfe, 0xdf, 0x88, 0x9c, 0xad, 0x2d, 0xaf, 0x29, 0x02, 0xb0, 0x46, 0x19, 0x8b, 0x45, 0xe9, + 0x3d, 0xbd, 0x92, 0x47, 0x74, 0x74, 0x38, 0x77, 0x5e, 0xf4, 0x5a, 0x2e, 0x9e, 0x0d, 0x62, 0x3e, + 0x7f, 0xb4, 0x0e, 0x67, 0x76, 0x88, 0xe3, 0x27, 0x3b, 0xcb, 0x3b, 0xa4, 0xb9, 0x2b, 0x17, 0x11, + 0x8b, 0x2b, 0xd2, 0xdc, 0xec, 0x2e, 0x77, 0x92, 0xe0, 0xbc, 0x72, 0xe8, 0x6d, 0xa8, 0xb6, 0xda, + 0x9b, 0xbe, 0x17, 0xef, 0x5c, 0x0b, 0x13, 0x76, 0x63, 0xa9, 0x5e, 0xd0, 0x11, 0x01, 0x48, 0x2a, + 0xa6, 0xaa, 0x5e, 0x40, 0x87, 0x0b, 0x39, 0xa0, 0xf7, 0xe1, 0x6c, 0x66, 0x32, 0xf0, 0x47, 0x99, + 0x44, 0xa0, 0xd2, 0x13, 0xf9, 0xcb, 0x29, 0xa7, 0x00, 0x0f, 0x8b, 0xcb, 0x45, 0xe1, 0xfc, 0x2a, + 0x3e, 0xd8, 0x3d, 0xf6, 0x7b, 0xb4, 0xb0, 0xa6, 0xdd, 0xa0, 0xcf, 0xc1, 0x98, 0x3e, 0x8b, 0xc4, + 0x06, 0xf3, 0x58, 0xaf, 0x37, 0x89, 0x85, 0x6e, 0xa4, 0x66, 0x94, 0x8e, 0xc3, 0x06, 0x47, 0x9b, + 0x40, 0xfe, 0xf7, 0xa1, 0xab, 0x30, 0xd2, 0xf4, 0x3d, 0x12, 0x24, 0x6b, 0xf5, 0x6e, 0x81, 0xb3, + 0xcb, 0x82, 0x46, 0x74, 0x98, 0xc8, 0xdf, 0xc4, 0x61, 0x58, 0x71, 0xb0, 0x7f, 0xa7, 0x04, 0x73, + 0x3d, 0x52, 0x78, 0x65, 0x6c, 0x80, 0x56, 0x5f, 0x36, 0xc0, 0x45, 0xf9, 0x1e, 0xd0, 0xb5, 0xcc, + 0xf9, 0x33, 0xf3, 0xd6, 0x4f, 0x7a, 0x0a, 0xcd, 0xd2, 0xf7, 0xed, 0xfe, 0xa6, 0x9b, 0x11, 0x07, + 0x7a, 0x7a, 0x01, 0xd6, 0x75, 0x7b, 0xf0, 0x60, 0xff, 0x1a, 0x7d, 0xa1, 0x29, 0xd8, 0xfe, 0x66, + 0x09, 0xce, 0xaa, 0x2e, 0xfc, 0xd1, 0xed, 0xb8, 0x1b, 0x9d, 0x1d, 0x77, 0x02, 0x86, 0x74, 0xfb, + 0x3a, 0x0c, 0x35, 0x0e, 0xe2, 0x66, 0xe2, 0xf7, 0xa1, 0x00, 0x3d, 0x6a, 0x2c, 0xd0, 0x74, 0x9b, + 0x66, 0x4f, 0xfa, 0x89, 0xf5, 0x6a, 0xff, 0x25, 0x0b, 0x26, 0x37, 0x96, 0xeb, 0x8d, 0xb0, 0xb9, + 0x4b, 0x92, 0x45, 0x6e, 0x26, 0xc2, 0x42, 0xff, 0xb1, 0xee, 0x52, 0xaf, 0xc9, 0xd3, 0x98, 0xce, + 0xc3, 0xc0, 0x4e, 0x18, 0x27, 0xd9, 0xcb, 0x92, 0xcb, 0x61, 0x9c, 0x60, 0x86, 0xb1, 0xff, 0xd0, + 0x82, 0x41, 0xf6, 0x8a, 0x5d, 0xaf, 0xd7, 0x0e, 0xfb, 0xf9, 0x2e, 0xf4, 0x02, 0x0c, 0x91, 0xad, + 0x2d, 0xd2, 0x4c, 0xc4, 0xa8, 0xca, 0x88, 0x9c, 0xa1, 0x15, 0x06, 0xa5, 0x9b, 0x3e, 0xab, 0x8c, + 0xff, 0xc5, 0x82, 0x18, 0x7d, 0x16, 0x2a, 0x89, 0xb7, 0x47, 0x16, 0x5d, 0x57, 0xdc, 0x53, 0x1c, + 0xcf, 0x25, 0x4d, 0x29, 0x21, 0x1b, 0x92, 0x09, 0x4e, 0xf9, 0xd9, 0x3f, 0x5f, 0x02, 0x48, 0x23, + 0xf7, 0x7a, 0x7d, 0xe6, 0x52, 0xc7, 0xa3, 0x8e, 0x8f, 0xe5, 0x3c, 0xea, 0x88, 0x52, 0x86, 0x39, + 0x4f, 0x3a, 0xaa, 0xae, 0x2a, 0xf7, 0xd5, 0x55, 0x03, 0xc7, 0xe9, 0xaa, 0x65, 0x98, 0x4e, 0x23, + 0x0f, 0xcd, 0x30, 0x6c, 0x96, 0xae, 0x77, 0x23, 0x8b, 0xc4, 0x9d, 0xf4, 0xf6, 0x17, 0x2d, 0x10, + 0x6e, 0xca, 0x7d, 0x4c, 0xe8, 0xb7, 0xe4, 0xfb, 0x6b, 0x46, 0x5e, 0xc1, 0xf3, 0xc5, 0x7e, 0xdb, + 0x22, 0x9b, 0xa0, 0xda, 0x40, 0x8c, 0x1c, 0x82, 0x06, 0x2f, 0xfb, 0xaf, 0x97, 0x60, 0x94, 0xa3, + 0x59, 0xce, 0xba, 0x3e, 0x5a, 0x73, 0xac, 0x64, 0xcf, 0xec, 0x69, 0x32, 0xca, 0x58, 0xe5, 0x04, + 0xd6, 0x9f, 0x26, 0x93, 0x08, 0x9c, 0xd2, 0xa0, 0x27, 0x60, 0x38, 0x6e, 0x6f, 0x32, 0xf2, 0x8c, + 0xa7, 0x72, 0x83, 0x83, 0xb1, 0xc4, 0xa3, 0x9f, 0x84, 0x29, 0x5e, 0x2e, 0x0a, 0x5b, 0xce, 0x36, + 0xb7, 0xef, 0x0c, 0xaa, 0x38, 0x95, 0xa9, 0xf5, 0x0c, 0xee, 0xe8, 0x70, 0x6e, 0x26, 0x0b, 0x63, + 0x96, 0xc1, 0x0e, 0x2e, 0x74, 0xc6, 0x4e, 0x65, 0x5d, 0xe0, 0xd1, 0x65, 0x18, 0xe2, 0x02, 0x49, + 0x08, 0x88, 0x2e, 0xf7, 0x3d, 0x9a, 0xe3, 0x3c, 0xf0, 0x57, 0xfa, 0x99, 0x20, 0x13, 0xe5, 0xd1, + 0xdb, 0x30, 0xea, 0x86, 0xb7, 0x82, 0x5b, 0x4e, 0xe4, 0x2e, 0xd6, 0xd7, 0xc4, 0x78, 0xe6, 0xea, + 0x35, 0xb5, 0x94, 0x4c, 0x77, 0xc6, 0x67, 0xb6, 0xcd, 0x14, 0x85, 0x75, 0x76, 0x68, 0x83, 0xa5, + 0x59, 0xe1, 0x6f, 0x07, 0x77, 0x73, 0xed, 0x51, 0xcf, 0x0d, 0x6b, 0x9c, 0xc7, 0x45, 0x2e, 0x16, + 0xf1, 0xf2, 0x70, 0xca, 0xc8, 0xfe, 0xfc, 0x19, 0x30, 0xe6, 0x91, 0x91, 0xec, 0xd9, 0x3a, 0xa1, + 0x64, 0xcf, 0x18, 0x46, 0xc8, 0x5e, 0x2b, 0x39, 0xa8, 0x79, 0x51, 0xb7, 0x2c, 0xff, 0x2b, 0x82, + 0xa6, 0x93, 0xa7, 0xc4, 0x60, 0xc5, 0x27, 0x3f, 0x23, 0x77, 0xf9, 0x43, 0xcc, 0xc8, 0x3d, 0x70, + 0x8a, 0x19, 0xb9, 0xaf, 0xc1, 0xf0, 0xb6, 0x97, 0x60, 0xd2, 0x0a, 0xc5, 0x66, 0x9c, 0x3b, 0x13, + 0x2e, 0x71, 0x92, 0xce, 0xbc, 0xb1, 0x02, 0x81, 0x25, 0x13, 0xf4, 0x9a, 0x5a, 0x03, 0x43, 0xc5, + 0xba, 0x6c, 0xe7, 0xd5, 0x40, 0xee, 0x2a, 0x10, 0x19, 0xb8, 0x87, 0xef, 0x36, 0x03, 0xb7, 0xca, + 0xa0, 0x3d, 0xf2, 0xc1, 0x32, 0x68, 0x1b, 0x19, 0xc6, 0x2b, 0x27, 0x97, 0x61, 0xfc, 0x8b, 0x16, + 0x9c, 0x6d, 0xe5, 0x25, 0xdb, 0x17, 0xb9, 0xb0, 0x5f, 0xe8, 0xfb, 0x35, 0x01, 0xa3, 0x42, 0x76, + 0xa8, 0xc9, 0x25, 0xc3, 0xf9, 0xd5, 0xc9, 0x54, 0xe5, 0xa3, 0x77, 0x9b, 0xaa, 0xfc, 0xde, 0x24, + 0xcd, 0x4e, 0x13, 0x97, 0x8f, 0x7f, 0xe0, 0xc4, 0xe5, 0xaf, 0xa9, 0xc4, 0xe5, 0x5d, 0x92, 0x59, + 0xf0, 0xb4, 0xe4, 0x3d, 0xd3, 0x95, 0x6b, 0x29, 0xc7, 0x27, 0x4f, 0x22, 0xe5, 0xf8, 0x3b, 0xa6, + 0xb0, 0xe7, 0xf9, 0xaf, 0x9f, 0xea, 0x21, 0xec, 0x0d, 0xbe, 0xdd, 0xc5, 0x3d, 0x4f, 0xaf, 0x3e, + 0x7d, 0x57, 0xe9, 0xd5, 0x6f, 0xea, 0x89, 0xcb, 0x51, 0x8f, 0xcc, 0xdc, 0x94, 0xa8, 0xcf, 0x74, + 0xe5, 0x37, 0xf5, 0x2d, 0xe8, 0x4c, 0x31, 0x5f, 0xb5, 0xd3, 0x74, 0xf2, 0xcd, 0xdb, 0x84, 0x3a, + 0xd3, 0xa0, 0xcf, 0x9c, 0x4e, 0x1a, 0xf4, 0xb3, 0x27, 0x9e, 0x06, 0xfd, 0xbe, 0x53, 0x48, 0x83, + 0x7e, 0xff, 0x87, 0x9a, 0x06, 0xbd, 0x7a, 0x6f, 0xd3, 0xa0, 0x3f, 0x70, 0x12, 0x69, 0xd0, 0x6f, + 0x42, 0xa5, 0x25, 0xa3, 0x24, 0xab, 0xb3, 0xc5, 0x43, 0x92, 0x1b, 0x4a, 0xc9, 0x87, 0x44, 0xa1, + 0x70, 0xca, 0x8a, 0xf2, 0x4d, 0xd3, 0xa2, 0x3f, 0xd8, 0xc5, 0x6c, 0x95, 0x67, 0x10, 0xe8, 0x92, + 0x0c, 0xfd, 0x2f, 0x97, 0xe0, 0x5c, 0xf7, 0x79, 0x9d, 0x5a, 0x13, 0xea, 0xa9, 0xf5, 0x3b, 0x63, + 0x4d, 0x60, 0x4a, 0x97, 0x46, 0xd5, 0x77, 0x28, 0xf9, 0x25, 0x98, 0x56, 0xce, 0x62, 0xbe, 0xd7, + 0x3c, 0xd0, 0x5e, 0x4c, 0x52, 0xf1, 0x07, 0x8d, 0x2c, 0x01, 0xee, 0x2c, 0x83, 0x16, 0x61, 0xd2, + 0x00, 0xae, 0xd5, 0x84, 0xb2, 0xaf, 0xcc, 0x17, 0x0d, 0x13, 0x8d, 0xb3, 0xf4, 0xf6, 0xd7, 0x2c, + 0xb8, 0xbf, 0x20, 0x37, 0x6a, 0xdf, 0x91, 0xd2, 0x5b, 0x30, 0xd9, 0x32, 0x8b, 0xf6, 0x48, 0xa8, + 0x60, 0x64, 0x60, 0x55, 0x6d, 0xcd, 0x20, 0x70, 0x96, 0xe9, 0xd2, 0x85, 0x6f, 0x7d, 0xef, 0xdc, + 0xc7, 0x7e, 0xff, 0x7b, 0xe7, 0x3e, 0xf6, 0xdd, 0xef, 0x9d, 0xfb, 0xd8, 0xff, 0x7f, 0xe7, 0x9c, + 0xf5, 0xad, 0x3b, 0xe7, 0xac, 0xdf, 0xbf, 0x73, 0xce, 0xfa, 0xee, 0x9d, 0x73, 0xd6, 0x1f, 0xdd, + 0x39, 0x67, 0xfd, 0xfc, 0xf7, 0xcf, 0x7d, 0xec, 0xad, 0xd2, 0xfe, 0xb3, 0xff, 0x2f, 0x00, 0x00, + 0xff, 0xff, 0x98, 0xcc, 0x13, 0x07, 0x60, 0xd1, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto new file mode 100644 index 0000000000..6f04f8009e --- /dev/null +++ b/vendor/k8s.io/api/core/v1/generated.proto @@ -0,0 +1,4293 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.core.v1; + +import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto"; +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + 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 + 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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + optional bool readOnly = 4; +} + +// Affinity is a group of affinity scheduling rules. +message Affinity { + // Describes node affinity scheduling rules for the pod. + // +optional + 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 + 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 + 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 available + 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. + // +optional + 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 + 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 + optional string fsType = 4; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 5; + + // Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + optional string kind = 6; +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +message AzureFilePersistentVolumeSource { + // 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 + optional bool readOnly = 3; + + // the namespace of the secret that contains Azure Storage Account Name and Key + // default is the same as the Pod + // +optional + optional string secretNamespace = 4; +} + +// 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 + optional bool readOnly = 3; +} + +// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. +// Deprecated in 1.7, please use the bindings subresource of pods instead. +message Binding { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + // +optional + repeated string add = 1; + + // Removed capabilities + // +optional + 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 CephFSPersistentVolumeSource { + // Required: Monitors is a collection of Ceph monitors + // More info: https://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 + optional string path = 2; + + // Optional: User is the rados user name, default is admin + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional string user = 3; + + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional string secretFile = 4; + + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional SecretReference secretRef = 5; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional bool readOnly = 6; +} + +// 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: https://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 + optional string path = 2; + + // Optional: User is the rados user name, default is admin + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional string user = 3; + + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional string secretFile = 4; + + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional LocalObjectReference secretRef = 5; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + 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: https://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: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional string fsType = 2; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional bool readOnly = 3; +} + +// ClientIPConfig represents the configurations of Client IP based session affinity. +message ClientIPConfig { + // timeoutSeconds specifies the seconds of ClientIP type session sticky time. + // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". + // Default value is 10800(for 3 hours). + // +optional + optional int32 timeoutSeconds = 1; +} + +// 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 + optional string message = 3; + + // Condition error code for a component. + // For example, a health check error code. + // +optional + optional string error = 4; +} + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +message ComponentStatus { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // List of component conditions observed + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data contains the configuration data. + // Each key must consist of alphanumeric characters, '-', '_' or '.'. + // +optional + map data = 2; +} + +// ConfigMapEnvSource selects a ConfigMap to populate the environment +// variables with. +// +// The contents of the target ConfigMap's Data field will represent the +// key-value pairs as environment variables. +message ConfigMapEnvSource { + // The ConfigMap to select from. + optional LocalObjectReference localObjectReference = 1; + + // Specify whether the ConfigMap must be defined + // +optional + optional bool optional = 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; + + // Specify whether the ConfigMap or it's key must be defined + // +optional + optional bool optional = 3; +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +message ConfigMapList { + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ConfigMaps. + repeated ConfigMap items = 2; +} + +// Adapts a ConfigMap into a projected volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// projected 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. +// Note that this is identical to a configmap volume source without the default +// mode. +message ConfigMapProjection { + 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + repeated KeyToPath items = 2; + + // Specify whether the ConfigMap or it's keys must be defined + // +optional + optional bool optional = 4; +} + +// 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + 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 + optional int32 defaultMode = 3; + + // Specify whether the ConfigMap or it's keys must be defined + // +optional + optional bool optional = 4; +} + +// 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: https://kubernetes.io/docs/concepts/containers/images + // This field is optional to allow higher level config management to default or override + // container images in workload controllers like Deployments and StatefulSets. + // +optional + 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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + 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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + 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 + 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. + // +optional + // +patchMergeKey=containerPort + // +patchStrategy=merge + repeated ContainerPort ports = 6; + + // List of sources to populate environment variables in the container. + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys + // will be reported as an event when the container is starting. When a key exists in multiple + // sources, the value associated with the last source will take precedence. + // Values defined by an Env with a duplicate key will take precedence. + // Cannot be updated. + // +optional + repeated EnvFromSource envFrom = 19; + + // List of environment variables to set in the container. + // Cannot be updated. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated EnvVar env = 7; + + // Compute Resources required by this container. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + optional ResourceRequirements resources = 8; + + // Pod volumes to mount into the container's filesystem. + // Cannot be updated. + // +optional + // +patchMergeKey=mountPath + // +patchStrategy=merge + repeated VolumeMount volumeMounts = 9; + + // Periodic probe of container liveness. + // Container will be restarted if the probe fails. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional Probe readinessProbe = 11; + + // Actions that the management system should take in response to container lifecycle events. + // Cannot be updated. + // +optional + 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. + // Will be truncated by the node if greater than 4096 bytes. The total message length across + // all containers will be limited to 12kb. + // Defaults to /dev/termination-log. + // Cannot be updated. + // +optional + optional string terminationMessagePath = 13; + + // Indicate how the termination message should be populated. File will use the contents of + // terminationMessagePath to populate the container status message on both success and failure. + // FallbackToLogsOnError will use the last chunk of container log output if the termination + // message file is empty and the container exited with an error. + // The log output is limited to 2048 bytes or 80 lines, whichever is smaller. + // Defaults to File. + // Cannot be updated. + // +optional + optional string terminationMessagePolicy = 20; + + // Image pull policy. + // One of Always, Never, IfNotPresent. + // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // +optional + optional string imagePullPolicy = 14; + + // Security options the pod should run with. + // More info: https://kubernetes.io/docs/concepts/policy/security-context/ + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + 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 + 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 + optional bool stdinOnce = 17; + + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // Default is false. + // +optional + 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 + 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 + 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 + 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 + optional string protocol = 4; + + // What host IP to bind the external port to. + // +optional + 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 + optional ContainerStateWaiting waiting = 1; + + // Details about a running container + // +optional + optional ContainerStateRunning running = 2; + + // Details about a terminated container + // +optional + optional ContainerStateTerminated terminated = 3; +} + +// ContainerStateRunning is a running state of a container. +message ContainerStateRunning { + // Time at which the container was last (re-)started + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional int32 signal = 2; + + // (brief) reason from the last termination of the container + // +optional + optional string reason = 3; + + // Message regarding the last termination of the container + // +optional + optional string message = 4; + + // Time at which previous execution of the container started + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5; + + // Time at which the container last terminated + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6; + + // Container's ID in the format 'docker://' + // +optional + optional string containerID = 7; +} + +// ContainerStateWaiting is a waiting state of a container. +message ContainerStateWaiting { + // (brief) reason the container is not yet running. + // +optional + optional string reason = 1; + + // Message regarding why the container is not yet running. + // +optional + 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 + optional ContainerState state = 2; + + // Details about the container's last termination condition. + // +optional + 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: https://kubernetes.io/docs/concepts/containers/images + // 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://'. + // +optional + 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 +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +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 + optional int64 gracePeriodSeconds = 1; + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + // +optional + optional Preconditions preconditions = 2; + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + optional bool orphanDependents = 3; + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + optional string propagationPolicy = 4; +} + +// Represents downward API info for projecting into a projected volume. +// Note that this is identical to a downwardAPI volume source without the default +// mode. +message DownwardAPIProjection { + // Items is a list of DownwardAPIVolume file + // +optional + repeated DownwardAPIVolumeFile items = 1; +} + +// 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 + 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 + 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 + 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 + // +optional + 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 + 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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + optional string medium = 1; + + // Total amount of local storage required for this EmptyDir volume. + // The size limit is also applicable for memory medium. + // The maximum usage on memory medium EmptyDir would be the minimum value between + // the SizeLimit specified here and the sum of memory limits of all containers in a pod. + // The default is nil which means that the limit is undefined. + // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2; +} + +// 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 + optional string hostname = 3; + + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + // +optional + optional string nodeName = 4; + + // Reference to object providing the endpoint. + // +optional + 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 + 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 + 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. + // +optional + 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. + // +optional + repeated EndpointAddress notReadyAddresses = 2; + + // Port numbers available on the related IP addresses. + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of endpoints. + repeated Endpoints items = 2; +} + +// EnvFromSource represents the source of a set of ConfigMaps +message EnvFromSource { + // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // +optional + optional string prefix = 1; + + // The ConfigMap to select from + // +optional + optional ConfigMapEnvSource configMapRef = 2; + + // The Secret to select from + // +optional + optional SecretEnvSource secretRef = 3; +} + +// 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 + optional string value = 2; + + // Source for the environment variable's value. Cannot be used if value is not empty. + // +optional + 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.hostIP, status.podIP. + // +optional + optional ObjectFieldSelector fieldRef = 1; + + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + // +optional + optional ResourceFieldSelector resourceFieldRef = 2; + + // Selects a key of a ConfigMap. + // +optional + optional ConfigMapKeySelector configMapKeyRef = 3; + + // Selects a key of a secret in the pod's namespace + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional string reason = 3; + + // A human-readable description of the status of this operation. + // TODO: decide on maximum length. + // +optional + optional string message = 4; + + // The component reporting this event. Should be a short machine understandable string. + // +optional + optional EventSource source = 5; + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6; + + // The time at which the most recent occurrence of this event was recorded. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7; + + // The number of times this event has occurred. + // +optional + optional int32 count = 8; + + // Type of this event (Normal, Warning), new types could be added in the future + // +optional + optional string type = 9; +} + +// EventList is a list of events. +message EventList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional string component = 1; + + // Node name on which the event is generated. + // +optional + 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. + // +optional + repeated string command = 1; +} + +// 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 { + // Optional: FC target worldwide names (WWNs) + // +optional + repeated string targetWWNs = 1; + + // Optional: FC target lun number + // +optional + 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 + optional string fsType = 3; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // Optional: FC volume world wide identifiers (wwids) + // Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + // +optional + repeated string wwids = 5; +} + +// 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 + 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 + optional LocalObjectReference secretRef = 3; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // Optional: Extra command options if any. + // +optional + map options = 5; +} + +// Represents a Flocker volume mounted by the Flocker agent. +// One and only one of datasetName and datasetUUID should be set. +// Flocker volumes do not support ownership management or SELinux relabeling. +message FlockerVolumeSource { + // Name of the dataset stored as metadata -> name on the dataset for Flocker + // should be considered as deprecated + // +optional + optional string datasetName = 1; + + // UUID of the dataset. This is unique identifier of a Flocker dataset + // +optional + optional string datasetUUID = 2; +} + +// 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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + optional int32 partition = 3; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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 + 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 + 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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + optional string endpoints = 1; + + // Path is the Glusterfs volume path. + // More info: https://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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + // +optional + optional bool readOnly = 3; +} + +// HTTPGetAction describes an action based on HTTP Get requests. +message HTTPGetAction { + // Path to access on the HTTP server. + // +optional + 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.apimachinery.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 + optional string host = 3; + + // Scheme to use for connecting to the host. + // Defaults to HTTP. + // +optional + optional string scheme = 4; + + // Custom headers to set in the request. HTTP allows repeated headers. + // +optional + 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 + optional ExecAction exec = 1; + + // HTTPGet specifies the http request to perform. + // +optional + 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 + optional TCPSocketAction tcpSocket = 3; +} + +// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the +// pod's hosts file. +message HostAlias { + // IP address of the host file entry. + optional string ip = 1; + + // Hostnames for the above IP address. + repeated string hostnames = 2; +} + +// 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. + // If the path is a symlink, it will follow the link to the real path. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + optional string path = 1; + + // Type for HostPath Volume + // Defaults to "" + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // +optional + optional string type = 2; +} + +// 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 + 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: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 5; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // +optional + optional bool readOnly = 6; + + // iSCSI target portal List. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + // +optional + repeated string portals = 7; + + // whether support iSCSI Discovery CHAP authentication + // +optional + optional bool chapAuthDiscovery = 8; + + // whether support iSCSI Session CHAP authentication + // +optional + optional bool chapAuthSession = 11; + + // CHAP secret for iSCSI target and initiator authentication + // +optional + optional LocalObjectReference secretRef = 10; + + // Custom iSCSI initiator name. + // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface + // : will be created for the connection. + // +optional + optional string initiatorName = 12; +} + +// 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 + 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: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + 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: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the limits enforced. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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 + optional string type = 1; + + // Max usage constraints on this kind by resource name. + // +optional + map max = 2; + + // Min usage constraints on this kind by resource name. + // +optional + map min = 3; + + // Default resource requirement limit value by resource name if resource limit is omitted. + // +optional + map default = 4; + + // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. + // +optional + map 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. + // +optional + map maxLimitRequestRatio = 6; +} + +// LimitRangeList is a list of LimitRange items. +message LimitRangeList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of LimitRange objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of objects + repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2; +} + +// ListOptions is the query options to a standard REST list call. +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +message ListOptions { + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + // +optional + optional string labelSelector = 1; + + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + // +optional + optional string fieldSelector = 2; + + // If true, partially initialized resources are included in the response. + // +optional + optional bool includeUninitialized = 6; + + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + // +optional + 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. + // When specified 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 at least as fresh as given rv. + // +optional + optional string resourceVersion = 4; + + // Timeout for the list/watch call. + // +optional + 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 + optional string ip = 1; + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // TODO: Add other useful fields. apiVersion, kind, uid? + // +optional + optional string name = 1; +} + +// Local represents directly-attached storage with node affinity +message LocalVolumeSource { + // The full path to the volume on the node + // For alpha, this path must be a directory + // Once block as a source is supported, then this path can point to a block device + optional string path = 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: https://kubernetes.io/docs/concepts/storage/volumes#nfs + optional string server = 1; + + // Path that is exported by the NFS server. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + optional string path = 2; + + // ReadOnly here will force + // the NFS export to be mounted with read-only permissions. + // Defaults to false. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + optional bool readOnly = 3; +} + +// Namespace provides a scope for Names. +// Use of multiple namespaces is optional. +message Namespace { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the behavior of the Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NamespaceSpec spec = 2; + + // Status describes the current status of a Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NamespaceStatus status = 3; +} + +// NamespaceList is a list of Namespaces. +message NamespaceList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Namespace objects in the list. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + 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: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers + // +optional + 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: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the behavior of a node. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NodeSpec spec = 2; + + // Most recently observed status of the node. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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 + 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. + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3; + + // Last time the condition transit from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. +message NodeConfigSource { + optional ObjectReference configMapRef = 1; +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +message NodeDaemonEndpoints { + // Endpoint on which Kubelet is listening. + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional string path = 1; +} + +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +message NodeResources { + // Capacity represents the available resources of a node + map capacity = 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. + // +optional + 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 + optional string podCIDR = 1; + + // External ID of the node assigned by some machine database (e.g. a cloud provider). + // Deprecated. + // +optional + optional string externalID = 2; + + // ID of the node assigned by the cloud provider in the format: :// + // +optional + optional string providerID = 3; + + // Unschedulable controls node schedulability of new pods. By default, node is schedulable. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration + // +optional + optional bool unschedulable = 4; + + // If specified, the node's taints. + // +optional + repeated Taint taints = 5; + + // If specified, the source to get node configuration from + // The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field + // +optional + optional NodeConfigSource configSource = 6; +} + +// NodeStatus is information about the current status of a node. +message NodeStatus { + // Capacity represents the total resources of a node. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + map capacity = 1; + + // Allocatable represents the resources of a node that are available for scheduling. + // Defaults to Capacity. + // +optional + map allocatable = 2; + + // NodePhase is the recently observed lifecycle phase of the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#phase + // The field is never populated, and now is deprecated. + // +optional + optional string phase = 3; + + // Conditions is an array of current observed node conditions. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#condition + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated NodeCondition conditions = 4; + + // List of addresses reachable to the node. + // Queried from cloud provider, if available. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated NodeAddress addresses = 5; + + // Endpoints of daemons running on the Node. + // +optional + optional NodeDaemonEndpoints daemonEndpoints = 6; + + // Set of ids/uuids to uniquely identify the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#info + // +optional + optional NodeSystemInfo nodeInfo = 7; + + // List of container images on this node + // +optional + repeated ContainerImage images = 8; + + // List of attachable volumes in use (mounted) by the node. + // +optional + repeated string volumesInUse = 9; + + // List of volumes that are attached to the node. + // +optional + 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 preferred. 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 preferred. 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 + 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. +// DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon. +// +k8s:openapi-gen=false +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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + optional string namespace = 3; + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + optional string resourceVersion = 6; + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 is expected to 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. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + // +optional + map 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + // +optional + map 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. + // +optional + // +patchMergeKey=uid + // +patchStrategy=merge + repeated k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference ownerReferences = 13; + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Initializers initializers = 16; + + // 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. + // +optional + // +patchStrategy=merge + 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 + optional string clusterName = 15; +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +message ObjectReference { + // Kind of the referent. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional string kind = 1; + + // Namespace of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + optional string namespace = 2; + + // Name of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + optional string name = 3; + + // UID of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + optional string uid = 4; + + // API version of the referent. + // +optional + optional string apiVersion = 5; + + // Specific resourceVersion to which this reference is made, if any. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + 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 + optional string fieldPath = 7; +} + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// It is analogous to a node. +// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes +message PersistentVolume { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines a specification of a persistent volume owned by the cluster. + // Provisioned by an administrator. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + optional PersistentVolumeSpec spec = 2; + + // Status represents the current information/status for the persistent volume. + // Populated by the system. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired characteristics of a volume requested by a pod author. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + optional PersistentVolumeClaimSpec spec = 2; + + // Status represents the current information/status of a persistent volume claim. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + optional PersistentVolumeClaimStatus status = 3; +} + +// PersistentVolumeClaimCondition contails details about state of pvc +message PersistentVolumeClaimCondition { + optional string type = 1; + + optional string status = 2; + + // Last time we probed the condition. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3; + + // Last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // Unique, this should be a short, machine understandable string that gives the reason + // for condition's last transition. If it reports "ResizeStarted" that means the underlying + // persistent volume is being resized. + // +optional + optional string reason = 5; + + // Human-readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +message PersistentVolumeClaimList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // A list of persistent volume claims. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + repeated string accessModes = 1; + + // A label query over volumes to consider for binding. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4; + + // Resources represents the minimum resources the volume should have. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + optional ResourceRequirements resources = 2; + + // VolumeName is the binding reference to the PersistentVolume backing this claim. + // +optional + optional string volumeName = 3; + + // Name of the StorageClass required by the claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + // +optional + optional string storageClassName = 5; +} + +// PersistentVolumeClaimStatus is the current status of a persistent volume claim. +message PersistentVolumeClaimStatus { + // Phase represents the current phase of PersistentVolumeClaim. + // +optional + optional string phase = 1; + + // AccessModes contains the actual access modes the volume backing the PVC has. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + repeated string accessModes = 2; + + // Represents the actual resources of the underlying volume. + // +optional + map capacity = 3; + + // Current Condition of persistent volume claim. If underlying persistent volume is being + // resized then the Condition will be set to 'ResizeStarted'. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated PersistentVolumeClaimCondition conditions = 4; +} + +// 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + optional string claimName = 1; + + // Will force the ReadOnly setting in VolumeMounts. + // Default false. + // +optional + optional bool readOnly = 2; +} + +// PersistentVolumeList is a list of PersistentVolume items. +message PersistentVolumeList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of persistent volumes. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + optional GlusterfsVolumeSource glusterfs = 4; + + // NFS represents an NFS mount on the host. Provisioned by an admin. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + optional NFSVolumeSource nfs = 5; + + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + 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 + optional ISCSIVolumeSource iscsi = 7; + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional CinderVolumeSource cinder = 8; + + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + optional CephFSPersistentVolumeSource cephfs = 9; + + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + 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 + 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 + optional FlexVolumeSource flexVolume = 12; + + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + optional AzureFilePersistentVolumeSource azureFile = 13; + + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + optional VsphereVirtualDiskVolumeSource vsphereVolume = 14; + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + optional QuobyteVolumeSource quobyte = 15; + + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + optional AzureDiskVolumeSource azureDisk = 16; + + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 17; + + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + optional PortworxVolumeSource portworxVolume = 18; + + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + optional ScaleIOVolumeSource scaleIO = 19; + + // Local represents directly-attached storage with node affinity + // +optional + optional LocalVolumeSource local = 20; + + // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod + // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md + // +optional + optional StorageOSPersistentVolumeSource storageos = 21; +} + +// PersistentVolumeSpec is the specification of a persistent volume. +message PersistentVolumeSpec { + // A description of the persistent volume's resources and capacity. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + map capacity = 1; + + // The actual volume backing the persistent volume. + optional PersistentVolumeSource persistentVolumeSource = 2; + + // AccessModes contains all ways the volume can be mounted. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming + // +optional + optional string persistentVolumeReclaimPolicy = 5; + + // Name of StorageClass to which this persistent volume belongs. Empty value + // means that this volume does not belong to any StorageClass. + // +optional + optional string storageClassName = 6; + + // A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will + // simply fail if one is invalid. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options + // +optional + repeated string mountOptions = 7; +} + +// 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase + // +optional + optional string phase = 1; + + // A human-readable message indicating details about why the volume is in this state. + // +optional + 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 + optional string reason = 3; +} + +// Represents a Photon Controller persistent disk resource. +message PhotonPersistentDiskVolumeSource { + // ID that identifies Photon Controller persistent disk + optional string pdID = 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; +} + +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodStatus status = 3; +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +message PodAffinity { + // 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. + // +optional + 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. + // +optional + 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 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1; + + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // null or empty list means "this pod's namespace" + 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 + optional string topologyKey = 3; +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +message PodAntiAffinity { + // 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. + // +optional + 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. + // +optional + 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 + optional bool stdin = 1; + + // Stdout if true indicates that stdout is to be redirected for the attach call. + // Defaults to true. + // +optional + optional bool stdout = 2; + + // Stderr if true indicates that stderr is to be redirected for the attach call. + // Defaults to true. + // +optional + 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 + 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 + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + optional string type = 1; + + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + optional string status = 2; + + // Last time we probed the condition. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3; + + // Last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // Unique, one-word, CamelCase reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human-readable message indicating details about last transition. + // +optional + 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 + optional bool stdin = 1; + + // Redirect the standard output stream of the pod for this call. + // Defaults to true. + // +optional + optional bool stdout = 2; + + // Redirect the standard error stream of the pod for this call. + // Defaults to true. + // +optional + optional bool stderr = 3; + + // TTY if true indicates that a tty will be allocated for the exec call. + // Defaults to false. + // +optional + 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 + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of pods. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.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 + optional string container = 1; + + // Follow the log stream of the pod. Defaults to false. + // +optional + optional bool follow = 2; + + // Return previous terminated container logs. Defaults to false. + // +optional + 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 + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5; + + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. Defaults to false. + // +optional + 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 + 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 + optional int64 limitBytes = 8; +} + +// PodPortForwardOptions is the query options to a Pod's port forward call +// when using WebSockets. +// The `port` query parameter must specify the port or +// ports (comma separated) to forward over. +// Port forwarding over SPDY does not use these options. It requires the port +// to be passed in the `port` header as part of request. +message PodPortForwardOptions { + // List of ports to forward + // Required when using WebSockets + // +optional + repeated int32 ports = 1; +} + +// 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 + 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 + 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 + 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 + 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. + // +optional + 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 + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://kubernetes.io/docs/concepts/storage/volumes + // +optional + // +patchMergeKey=name + // +patchStrategy=merge,retainKeys + repeated Volume volumes = 1; + + // 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. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + // +patchMergeKey=name + // +patchStrategy=merge + repeated Container initContainers = 20; + + // 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. + // +patchMergeKey=name + // +patchStrategy=merge + repeated Container containers = 2; + + // Restart policy for all containers within the pod. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + // +optional + 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 + 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 + optional int64 activeDeadlineSeconds = 5; + + // Set DNS policy for containers within the pod. + // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. + // Defaults to "ClusterFirst". + // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // +optional + 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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + // +optional + map nodeSelector = 7; + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + // +optional + optional string serviceAccountName = 8; + + // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + // Deprecated: Use serviceAccountName instead. + // +k8s:conversion-gen=false + // +optional + optional string serviceAccount = 9; + + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + // +optional + optional bool automountServiceAccountToken = 21; + + // 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 + 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 + optional bool hostNetwork = 11; + + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + optional bool hostPID = 12; + + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + 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 + 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: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + 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 + optional string hostname = 16; + + // If specified, the fully qualified Pod hostname will be "...svc.". + // If not specified, the pod will not have a domainname at all. + // +optional + optional string subdomain = 17; + + // If specified, the pod's scheduling constraints + // +optional + optional Affinity affinity = 18; + + // If specified, the pod will be dispatched by specified scheduler. + // If not specified, the pod will be dispatched by default scheduler. + // +optional + optional string schedulerName = 19; + + // If specified, the pod's tolerations. + // +optional + repeated Toleration tolerations = 22; + + // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts + // file if specified. This is only valid for non-hostNetwork pods. + // +optional + // +patchMergeKey=ip + // +patchStrategy=merge + repeated HostAlias hostAliases = 23; + + // If specified, indicates the pod's priority. "SYSTEM" is a special keyword + // which indicates the highest priority. Any other name must be defined by + // creating a PriorityClass object with that name. + // If not specified, the pod priority will be default or zero if there is no + // default. + // +optional + optional string priorityClassName = 24; + + // The priority value. Various system components use this field to find the + // priority of the pod. When Priority Admission Controller is enabled, it + // prevents users from setting this field. The admission controller populates + // this field from PriorityClassName. + // The higher the value, the higher the priority. + // +optional + optional int32 priority = 25; +} + +// 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase + // +optional + optional string phase = 1; + + // Current service state of pod. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated PodCondition conditions = 2; + + // A human readable message indicating details about why the pod is in this condition. + // +optional + optional string message = 3; + + // A brief CamelCase message indicating details about why the pod is in this state. + // e.g. 'Evicted' + // +optional + optional string reason = 4; + + // IP address of the host to which the pod is assigned. Empty if not yet scheduled. + // +optional + optional string hostIP = 5; + + // IP address allocated to the pod. Routable at least within the cluster. + // Empty if not yet allocated. + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7; + + // 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + repeated ContainerStatus initContainerStatuses = 10; + + // The list has one entry per container in the manifest. Each entry is currently the output + // of `docker inspect`. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + // +optional + repeated ContainerStatus containerStatuses = 8; + + // The Quality of Service (QOS) classification assigned to the pod based on resource requirements + // See PodQOSClass type for available QOS classes + // More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md + // +optional + optional string qosClass = 9; +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +message PodStatusResult { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodStatus status = 2; +} + +// PodTemplate describes a template for creating copies of a predefined pod. +message PodTemplate { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Template defines the pods that will be created from this pod template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodTemplateSpec template = 2; +} + +// PodTemplateList is a list of PodTemplates. +message PodTemplateList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodSpec spec = 2; +} + +// PortworxVolumeSource represents a Portworx volume resource. +message PortworxVolumeSource { + // VolumeID uniquely identifies a Portworx volume + optional string volumeID = 1; + + // FSType represents the filesystem type to mount + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + optional string fsType = 2; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 3; +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +// +k8s:openapi-gen=false +message Preconditions { + // Specifies the target UID. + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2; + + // (brief) reason why this entry was added to the list. + // +optional + optional string reason = 3; + + // Human readable message indicating why this entry was added to the list. + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional int32 initialDelaySeconds = 2; + + // Number of seconds after which the probe times out. + // Defaults to 1 second. Minimum value is 1. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional int32 timeoutSeconds = 3; + + // How often (in seconds) to perform the probe. + // Default to 10 seconds. Minimum value is 1. + // +optional + 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 + 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 + optional int32 failureThreshold = 6; +} + +// Represents a projected volume source +message ProjectedVolumeSource { + // list of volume projections + repeated VolumeProjection sources = 1; + + // 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. + // +optional + optional int32 defaultMode = 2; +} + +// 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 + optional bool readOnly = 3; + + // User to map volume access to + // Defaults to serivceaccount user + // +optional + optional string user = 4; + + // Group to map volume access to + // Default is no group + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + repeated string monitors = 1; + + // The rados image name. + // More info: https://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: https://kubernetes.io/docs/concepts/storage/volumes#rbd + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 3; + + // The rados pool name. + // Default is rbd. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional string pool = 4; + + // The rados user name. + // Default is admin. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional string user = 5; + + // Keyring is the path to key ring for RBDUser. + // Default is /etc/ceph/keyring. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional string keyring = 6; + + // SecretRef is name of the authentication secret for RBDUser. If provided + // overrides keyring. + // Default is nil. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional LocalObjectReference secretRef = 7; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional bool readOnly = 8; +} + +// RangeAllocation is not a public type. +message RangeAllocation { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the replication controller. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicationControllerStatus status = 3; +} + +// ReplicationControllerCondition describes the state of a replication controller at a certain point. +message ReplicationControllerCondition { + // Type of replication controller condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // The reason for the condition's last transition. + // +optional + optional string reason = 4; + + // A human readable message indicating details about the transition. + // +optional + optional string message = 5; +} + +// ReplicationControllerList is a collection of replication controllers. +message ReplicationControllerList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of replication controllers. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + // +optional + optional int32 replicas = 1; + + // 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 + optional int32 minReadySeconds = 4; + + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + map 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + // +optional + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replication controller. + // +optional + optional int32 readyReplicas = 4; + + // The number of available replicas (ready for at least minReadySeconds) for this replication controller. + // +optional + optional int32 availableReplicas = 5; + + // ObservedGeneration reflects the generation of the most recently observed replication controller. + // +optional + optional int64 observedGeneration = 3; + + // Represents the latest available observations of a replication controller's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated ReplicationControllerCondition conditions = 6; +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +message ResourceFieldSelector { + // Container name: required for volumes, optional for env vars + // +optional + optional string containerName = 1; + + // Required: resource to select + optional string resource = 2; + + // Specifies the output format of the exposed resources, defaults to "1" + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3; +} + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +message ResourceQuota { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired quota. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ResourceQuotaSpec spec = 2; + + // Status defines the actual enforced quota and its current usage. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ResourceQuotaStatus status = 3; +} + +// ResourceQuotaList is a list of ResourceQuota items. +message ResourceQuotaList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of ResourceQuota objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + 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: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + map hard = 1; + + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + // +optional + 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: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + map hard = 1; + + // Used is the current observed total usage of the resource in the namespace. + // +optional + map used = 2; +} + +// ResourceRequirements describes the compute resource requirements. +message ResourceRequirements { + // Limits describes the maximum amount of compute resources allowed. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + map 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: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + map 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 + optional string user = 1; + + // Role is a SELinux role label that applies to the container. + // +optional + optional string role = 2; + + // Type is a SELinux type label that applies to the container. + // +optional + optional string type = 3; + + // Level is SELinux level label that applies to the container. + // +optional + optional string level = 4; +} + +// ScaleIOVolumeSource represents a persistent ScaleIO volume +message ScaleIOVolumeSource { + // The host address of the ScaleIO API Gateway. + optional string gateway = 1; + + // The name of the storage system as configured in ScaleIO. + optional string system = 2; + + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + optional LocalObjectReference secretRef = 3; + + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + optional bool sslEnabled = 4; + + // The name of the Protection Domain for the configured storage (defaults to "default"). + // +optional + optional string protectionDomain = 5; + + // The Storage Pool associated with the protection domain (defaults to "default"). + // +optional + optional string storagePool = 6; + + // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // +optional + optional string storageMode = 7; + + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + optional string volumeName = 8; + + // 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 + optional string fsType = 9; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 10; +} + +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data contains the secret data. Each key must consist of alphanumeric + // characters, '-', '_' or '.'. 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 + // +optional + map 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 + // +optional + map stringData = 4; + + // Used to facilitate programmatic handling of secret data. + // +optional + optional string type = 3; +} + +// SecretEnvSource selects a Secret to populate the environment +// variables with. +// +// The contents of the target Secret's Data field will represent the +// key-value pairs as environment variables. +message SecretEnvSource { + // The Secret to select from. + optional LocalObjectReference localObjectReference = 1; + + // Specify whether the Secret must be defined + // +optional + optional bool optional = 2; +} + +// 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; + + // Specify whether the Secret or it's key must be defined + // +optional + optional bool optional = 3; +} + +// SecretList is a list of Secret. +message SecretList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of secret objects. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + repeated Secret items = 2; +} + +// Adapts a secret into a projected volume. +// +// The contents of the target Secret's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names. +// Note that this is identical to a secret volume source without the default +// mode. +message SecretProjection { + optional LocalObjectReference localObjectReference = 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + repeated KeyToPath items = 2; + + // Specify whether the Secret or its key must be defined + // +optional + optional bool optional = 4; +} + +// SecretReference represents a Secret Reference. It has enough information to retrieve secret +// in any namespace +message SecretReference { + // Name is unique within a namespace to reference a secret resource. + // +optional + optional string name = 1; + + // Namespace defines the space within which the secret name must be unique. + // +optional + optional string namespace = 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: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + 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 + optional int32 defaultMode = 3; + + // Specify whether the Secret or it's keys must be defined + // +optional + optional bool optional = 4; +} + +// 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 + 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 + 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 + 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 + 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 + optional bool runAsNonRoot = 5; + + // Whether this container has a read-only root filesystem. + // Default is false. + // +optional + optional bool readOnlyRootFilesystem = 6; + + // AllowPrivilegeEscalation controls whether a process can gain more + // privileges than its parent process. This bool directly controls if + // the no_new_privs flag will be set on the container process. + // AllowPrivilegeEscalation is true always when the container is: + // 1) run as Privileged + // 2) has CAP_SYS_ADMIN + // +optional + optional bool allowPrivilegeEscalation = 7; +} + +// SerializedReference is a reference to serialized object. +message SerializedReference { + // The reference to an object in the system. + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the behavior of a service. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ServiceSpec spec = 2; + + // Most recently observed status of the service. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + 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: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod + // +optional + repeated LocalObjectReference imagePullSecrets = 3; + + // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. + // Can be overridden at the pod level. + // +optional + optional bool automountServiceAccountToken = 4; +} + +// ServiceAccountList is a list of ServiceAccount objects +message ServiceAccountList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ServiceAccounts. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + repeated ServiceAccount items = 2; +} + +// ServiceList holds a list of services. +message ServiceList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional string name = 1; + + // The IP protocol for this port. Supports "TCP" and "UDP". + // Default is TCP. + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + // +optional + optional k8s.io.apimachinery.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: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + // +optional + 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 + 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: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +patchMergeKey=port + // +patchStrategy=merge + 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: https://kubernetes.io/docs/concepts/services-networking/service/ + // +optional + map 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: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types + // +optional + 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. + // +optional + repeated string externalIPs = 5; + + // 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: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + 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 + 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: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/ + // +optional + 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 + optional string externalName = 10; + + // externalTrafficPolicy denotes if this Service desires to route external + // traffic to node-local or cluster-wide endpoints. "Local" preserves the + // client source IP and avoids a second hop for LoadBalancer and Nodeport + // type services, but risks potentially imbalanced traffic spreading. + // "Cluster" obscures the client source IP and may cause a second hop to + // another node, but should have good overall load-spreading. + // +optional + optional string externalTrafficPolicy = 11; + + // healthCheckNodePort specifies the healthcheck nodePort for the service. + // If not specified, HealthCheckNodePort is created by the service api + // backend with the allocated nodePort. Will use user-specified nodePort value + // if specified by the client. Only effects when Type is set to LoadBalancer + // and ExternalTrafficPolicy is set to Local. + // +optional + optional int32 healthCheckNodePort = 12; + + // publishNotReadyAddresses, when set to true, indicates that DNS implementations + // must publish the notReadyAddresses of subsets for the Endpoints associated with + // the Service. The default value is false. + // The primary use case for setting this field is to use a StatefulSet's Headless Service + // to propagate SRV records for its Pods without respect to their readiness for purpose + // of peer discovery. + // This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints + // when that annotation is deprecated and all clients have been converted to use this + // field. + // +optional + optional bool publishNotReadyAddresses = 13; + + // sessionAffinityConfig contains the configurations of session affinity. + // +optional + optional SessionAffinityConfig sessionAffinityConfig = 14; +} + +// ServiceStatus represents the current status of a service. +message ServiceStatus { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + // +optional + optional LoadBalancerStatus loadBalancer = 1; +} + +// SessionAffinityConfig represents the configurations of session affinity. +message SessionAffinityConfig { + // clientIP contains the configurations of Client IP based session affinity. + // +optional + optional ClientIPConfig clientIP = 1; +} + +// Represents a StorageOS persistent volume resource. +message StorageOSPersistentVolumeSource { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + optional string volumeName = 1; + + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + optional string volumeNamespace = 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. + // +optional + optional string fsType = 3; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + optional ObjectReference secretRef = 5; +} + +// Represents a StorageOS persistent volume resource. +message StorageOSVolumeSource { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + optional string volumeName = 1; + + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + optional string volumeNamespace = 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. + // +optional + optional string fsType = 3; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + optional LocalObjectReference secretRef = 5; +} + +// Sysctl defines a kernel parameter to be set +message Sysctl { + // Name of a property to set + optional string name = 1; + + // Value of a property to set + optional string value = 2; +} + +// 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.apimachinery.pkg.util.intstr.IntOrString port = 1; + + // Optional: Host name to connect to, defaults to the pod IP. + // +optional + optional string host = 2; +} + +// The node this Taint is attached to has the "effect" on +// any pod 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 + optional string value = 2; + + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule, PreferNoSchedule and NoExecute. + optional string effect = 3; + + // TimeAdded represents the time at which the taint was added. + // It is only written for NoExecute taints. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4; +} + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple using the matching operator . +message Toleration { + // Key is the taint key that the toleration applies to. Empty means match all taint keys. + // If the key is empty, operator must be Exists; this combination means to match all values and all keys. + // +optional + 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 + 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 + optional string value = 3; + + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + // +optional + optional string effect = 4; + + // TolerationSeconds represents the period of time the toleration (which must be + // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + // it is not set, which means tolerate the taint forever (do not evict). Zero and + // negative values will be treated as 0 (evict immediately) by the system. + // +optional + optional int64 tolerationSeconds = 5; +} + +// 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#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 + 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 + optional string subPath = 4; + + // mountPropagation determines how mounts are propagated from the host + // to container and the other way around. + // When not set, MountPropagationHostToContainer is used. + // This field is alpha in 1.8 and can be reworked or removed in a future + // release. + // +optional + optional string mountPropagation = 5; +} + +// Projection that may be projected along with other supported volume types +message VolumeProjection { + // information about the secret data to project + optional SecretProjection secret = 1; + + // information about the downwardAPI data to project + optional DownwardAPIProjection downwardAPI = 2; + + // information about the configMap data to project + optional ConfigMapProjection configMap = 3; +} + +// 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: https://kubernetes.io/docs/concepts/storage/volumes#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 + optional HostPathVolumeSource hostPath = 1; + + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4; + + // GitRepo represents a git repository at a particular revision. + // +optional + optional GitRepoVolumeSource gitRepo = 5; + + // Secret represents a secret that should populate this volume. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + optional SecretVolumeSource secret = 6; + + // NFS represents an NFS mount on the host that shares a pod's lifetime + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md + // +optional + optional ISCSIVolumeSource iscsi = 8; + + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + optional GlusterfsVolumeSource glusterfs = 9; + + // PersistentVolumeClaimVolumeSource represents a reference to a + // PersistentVolumeClaim in the same namespace. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10; + + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + 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 + optional FlexVolumeSource flexVolume = 12; + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional CinderVolumeSource cinder = 13; + + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + 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 + optional FlockerVolumeSource flocker = 15; + + // DownwardAPI represents downward API about the pod that should populate this volume + // +optional + 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 + optional FCVolumeSource fc = 17; + + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + optional AzureFileVolumeSource azureFile = 18; + + // ConfigMap represents a configMap that should populate this volume + // +optional + optional ConfigMapVolumeSource configMap = 19; + + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + optional VsphereVirtualDiskVolumeSource vsphereVolume = 20; + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + optional QuobyteVolumeSource quobyte = 21; + + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + optional AzureDiskVolumeSource azureDisk = 22; + + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 23; + + // Items for all in one resources secrets, configmaps, and downward API + optional ProjectedVolumeSource projected = 26; + + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + optional PortworxVolumeSource portworxVolume = 24; + + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + optional ScaleIOVolumeSource scaleIO = 25; + + // StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + // +optional + optional StorageOSVolumeSource storageos = 27; +} + +// 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 + optional string fsType = 2; + + // Storage Policy Based Management (SPBM) profile name. + // +optional + optional string storagePolicyName = 3; + + // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + // +optional + optional string storagePolicyID = 4; +} + +// 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/pkg/api/v1/meta.go b/vendor/k8s.io/api/core/v1/meta.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/api/v1/meta.go rename to vendor/k8s.io/api/core/v1/meta.go diff --git a/vendor/k8s.io/client-go/pkg/api/v1/objectreference.go b/vendor/k8s.io/api/core/v1/objectreference.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/api/v1/objectreference.go rename to vendor/k8s.io/api/core/v1/objectreference.go diff --git a/vendor/k8s.io/api/core/v1/register.go b/vendor/k8s.io/api/core/v1/register.go new file mode 100644 index 0000000000..4916ee3c23 --- /dev/null +++ b/vendor/k8s.io/api/core/v1/register.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. +*/ + +//TODO: this file is going to be moved to k8s.io/api + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + 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, + &Pod{}, + &PodList{}, + &PodStatusResult{}, + &PodTemplate{}, + &PodTemplateList{}, + &ReplicationController{}, + &ReplicationControllerList{}, + &Service{}, + &ServiceProxyOptions{}, + &ServiceList{}, + &Endpoints{}, + &EndpointsList{}, + &Node{}, + &NodeConfigSource{}, + &NodeList{}, + &NodeProxyOptions{}, + &Binding{}, + &Event{}, + &EventList{}, + &List{}, + &LimitRange{}, + &LimitRangeList{}, + &ResourceQuota{}, + &ResourceQuotaList{}, + &Namespace{}, + &NamespaceList{}, + &Secret{}, + &SecretList{}, + &ServiceAccount{}, + &ServiceAccountList{}, + &PersistentVolume{}, + &PersistentVolumeList{}, + &PersistentVolumeClaim{}, + &PersistentVolumeClaimList{}, + &PodAttachOptions{}, + &PodLogOptions{}, + &PodExecOptions{}, + &PodPortForwardOptions{}, + &PodProxyOptions{}, + &ComponentStatus{}, + &ComponentStatusList{}, + &SerializedReference{}, + &RangeAllocation{}, + &ConfigMap{}, + &ConfigMapList{}, + ) + + // Add common types + scheme.AddKnownTypes(SchemeGroupVersion, &metav1.Status{}) + + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/core/v1/resource.go b/vendor/k8s.io/api/core/v1/resource.go new file mode 100644 index 0000000000..3bd6fec62f --- /dev/null +++ b/vendor/k8s.io/api/core/v1/resource.go @@ -0,0 +1,63 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/apimachinery/pkg/api/resource" +) + +// 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 (self *ResourceList) StorageEphemeral() *resource.Quantity { + if val, ok := (*self)[ResourceEphemeralStorage]; ok { + return &val + } + return &resource.Quantity{} +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/taint.go b/vendor/k8s.io/api/core/v1/taint.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/api/v1/taint.go rename to vendor/k8s.io/api/core/v1/taint.go diff --git a/vendor/k8s.io/api/core/v1/taint_test.go b/vendor/k8s.io/api/core/v1/taint_test.go new file mode 100644 index 0000000000..22c7f9c4fe --- /dev/null +++ b/vendor/k8s.io/api/core/v1/taint_test.go @@ -0,0 +1,122 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "testing" +) + +func TestTaintToString(t *testing.T) { + testCases := []struct { + taint *Taint + expectedString string + }{ + { + taint: &Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + expectedString: "foo=bar:NoSchedule", + }, + { + taint: &Taint{ + Key: "foo", + Effect: TaintEffectNoSchedule, + }, + expectedString: "foo:NoSchedule", + }, + } + + for i, tc := range testCases { + if tc.expectedString != tc.taint.ToString() { + t.Errorf("[%v] expected taint %v converted to %s, got %s", i, tc.taint, tc.expectedString, tc.taint.ToString()) + } + } +} + +func TestMatchTaint(t *testing.T) { + testCases := []struct { + description string + taint *Taint + taintToMatch Taint + expectMatch bool + }{ + { + description: "two taints with the same key,value,effect should match", + taint: &Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + taintToMatch: Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + expectMatch: true, + }, + { + description: "two taints with the same key,effect but different value should match", + taint: &Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + taintToMatch: Taint{ + Key: "foo", + Value: "different-value", + Effect: TaintEffectNoSchedule, + }, + expectMatch: true, + }, + { + description: "two taints with the different key cannot match", + taint: &Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + taintToMatch: Taint{ + Key: "different-key", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + expectMatch: false, + }, + { + description: "two taints with the different effect cannot match", + taint: &Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + taintToMatch: Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectPreferNoSchedule, + }, + expectMatch: false, + }, + } + + for _, tc := range testCases { + if tc.expectMatch != tc.taint.MatchTaint(&tc.taintToMatch) { + t.Errorf("[%s] expect taint %s match taint %s", tc.description, tc.taint.ToString(), tc.taintToMatch.ToString()) + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/toleration.go b/vendor/k8s.io/api/core/v1/toleration.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/api/v1/toleration.go rename to vendor/k8s.io/api/core/v1/toleration.go diff --git a/vendor/k8s.io/api/core/v1/toleration_test.go b/vendor/k8s.io/api/core/v1/toleration_test.go new file mode 100644 index 0000000000..3dd48f0877 --- /dev/null +++ b/vendor/k8s.io/api/core/v1/toleration_test.go @@ -0,0 +1,123 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "testing" +) + +func TestTolerationToleratesTaint(t *testing.T) { + + testCases := []struct { + description string + toleration Toleration + taint Taint + expectTolerated bool + }{ + { + description: "toleration and taint have the same key and effect, and operator is Exists, and taint has no value, expect tolerated", + toleration: Toleration{ + Key: "foo", + Operator: TolerationOpExists, + Effect: TaintEffectNoSchedule, + }, + taint: Taint{ + Key: "foo", + Effect: TaintEffectNoSchedule, + }, + expectTolerated: true, + }, + { + description: "toleration and taint have the same key and effect, and operator is Exists, and taint has some value, expect tolerated", + toleration: Toleration{ + Key: "foo", + Operator: TolerationOpExists, + Effect: TaintEffectNoSchedule, + }, + taint: Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + expectTolerated: true, + }, + { + description: "toleration and taint have the same effect, toleration has empty key and operator is Exists, means match all taints, expect tolerated", + toleration: Toleration{ + Key: "", + Operator: TolerationOpExists, + Effect: TaintEffectNoSchedule, + }, + taint: Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + expectTolerated: true, + }, + { + description: "toleration and taint have the same key, effect and value, and operator is Equal, expect tolerated", + toleration: Toleration{ + Key: "foo", + Operator: TolerationOpEqual, + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + taint: Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + expectTolerated: true, + }, + { + description: "toleration and taint have the same key and effect, but different values, and operator is Equal, expect not tolerated", + toleration: Toleration{ + Key: "foo", + Operator: TolerationOpEqual, + Value: "value1", + Effect: TaintEffectNoSchedule, + }, + taint: Taint{ + Key: "foo", + Value: "value2", + Effect: TaintEffectNoSchedule, + }, + expectTolerated: false, + }, + { + description: "toleration and taint have the same key and value, but different effects, and operator is Equal, expect not tolerated", + toleration: Toleration{ + Key: "foo", + Operator: TolerationOpEqual, + Value: "bar", + Effect: TaintEffectNoSchedule, + }, + taint: Taint{ + Key: "foo", + Value: "bar", + Effect: TaintEffectNoExecute, + }, + expectTolerated: false, + }, + } + for _, tc := range testCases { + if tolerated := tc.toleration.ToleratesTaint(&tc.taint); tc.expectTolerated != tolerated { + t.Errorf("[%s] expect %v, got %v: toleration %+v, taint %s", tc.description, tc.expectTolerated, tolerated, tc.toleration, tc.taint.ToString()) + } + } +} diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go new file mode 100644 index 0000000000..d1a8f89cd2 --- /dev/null +++ b/vendor/k8s.io/api/core/v1/types.go @@ -0,0 +1,4897 @@ +/* +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/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/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. +// DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon. +// +k8s:openapi-gen=false +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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"` + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + UID types.UID `json:"uid,omitempty" protobuf:"bytes,5,opt,name=uid,casttype=k8s.io/apimachinery/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + 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. + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + CreationTimestamp metav1.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 is expected to 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. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + DeletionTimestamp *metav1.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. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + // +optional + 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. + // +optional + // +patchMergeKey=uid + // +patchStrategy=merge + OwnerReferences []metav1.OwnerReference `json:"ownerReferences,omitempty" patchStrategy:"merge" patchMergeKey:"uid" protobuf:"bytes,13,rep,name=ownerReferences"` + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + Initializers *metav1.Initializers `json:"initializers,omitempty" patchStrategy:"merge" protobuf:"bytes,16,rep,name=initializers"` + + // 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. + // +optional + // +patchStrategy=merge + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#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: https://kubernetes.io/docs/concepts/storage/volumes#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 + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,1,opt,name=hostPath"` + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,4,opt,name=awsElasticBlockStore"` + // GitRepo represents a git repository at a particular revision. + // +optional + GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty" protobuf:"bytes,5,opt,name=gitRepo"` + // Secret represents a secret that should populate this volume. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,9,opt,name=glusterfs"` + // PersistentVolumeClaimVolumeSource represents a reference to a + // PersistentVolumeClaim in the same namespace. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + 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. + // +optional + 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: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + 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 + // +optional + 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 + // +optional + Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,15,opt,name=flocker"` + // DownwardAPI represents downward API about the pod that should populate this volume + // +optional + 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. + // +optional + 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. + // +optional + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,18,opt,name=azureFile"` + // ConfigMap represents a configMap that should populate this volume + // +optional + ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty" protobuf:"bytes,19,opt,name=configMap"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + 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 + // +optional + 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. + // +optional + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,22,opt,name=azureDisk"` + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,23,opt,name=photonPersistentDisk"` + // Items for all in one resources secrets, configmaps, and downward API + Projected *ProjectedVolumeSource `json:"projected,omitempty" protobuf:"bytes,26,opt,name=projected"` + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,24,opt,name=portworxVolume"` + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,25,opt,name=scaleIO"` + // StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + // +optional + StorageOS *StorageOSVolumeSource `json:"storageos,omitempty" protobuf:"bytes,27,opt,name=storageos"` +} + +// 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + ClaimName string `json:"claimName" protobuf:"bytes,1,opt,name=claimName"` + // Will force the ReadOnly setting in VolumeMounts. + // Default false. + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + 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. + // +optional + 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: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + 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 + // +optional + CephFS *CephFSPersistentVolumeSource `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. + // +optional + 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 + // +optional + 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. + // +optional + 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. + // +optional + AzureFile *AzureFilePersistentVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,13,opt,name=azureFile"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + 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 + // +optional + 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. + // +optional + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,16,opt,name=azureDisk"` + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,17,opt,name=photonPersistentDisk"` + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,18,opt,name=portworxVolume"` + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,19,opt,name=scaleIO"` + // Local represents directly-attached storage with node affinity + // +optional + Local *LocalVolumeSource `json:"local,omitempty" protobuf:"bytes,20,opt,name=local"` + // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod + // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md + // +optional + StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"` +} + +const ( + // BetaStorageClassAnnotation represents the beta/previous StorageClass annotation. + // It's currently still used and will be held for backwards compatibility + BetaStorageClassAnnotation = "volume.beta.kubernetes.io/storage-class" + + // MountOptionAnnotation defines mount option annotation used in PVs + MountOptionAnnotation = "volume.beta.kubernetes.io/mount-options" + + // AlphaStorageNodeAffinityAnnotation defines node affinity policies for a PersistentVolume. + // Value is a string of the json representation of type NodeAffinity + AlphaStorageNodeAffinityAnnotation = "volume.alpha.kubernetes.io/node-affinity" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// It is analogous to a node. +// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes +type PersistentVolume struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming + // +optional + PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty" protobuf:"bytes,5,opt,name=persistentVolumeReclaimPolicy,casttype=PersistentVolumeReclaimPolicy"` + // Name of StorageClass to which this persistent volume belongs. Empty value + // means that this volume does not belong to any StorageClass. + // +optional + StorageClassName string `json:"storageClassName,omitempty" protobuf:"bytes,6,opt,name=storageClassName"` + // A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will + // simply fail if one is invalid. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options + // +optional + MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,7,opt,name=mountOptions"` +} + +// 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase + // +optional + 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. + // +optional + 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. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PersistentVolumeList is a list of PersistentVolume items. +type PersistentVolumeList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // List of persistent volumes. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes + Items []PersistentVolume `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +type PersistentVolumeClaim struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +type PersistentVolumeClaimList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // A list of persistent volume claims. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,1,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // A label query over volumes to consider for binding. + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + // Resources represents the minimum resources the volume should have. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,2,opt,name=resources"` + // VolumeName is the binding reference to the PersistentVolume backing this claim. + // +optional + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,3,opt,name=volumeName"` + // Name of the StorageClass required by the claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + // +optional + StorageClassName *string `json:"storageClassName,omitempty" protobuf:"bytes,5,opt,name=storageClassName"` +} + +// PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type +type PersistentVolumeClaimConditionType string + +const ( + // PersistentVolumeClaimResizing - a user trigger resize of pvc has been started + PersistentVolumeClaimResizing PersistentVolumeClaimConditionType = "Resizing" +) + +// PersistentVolumeClaimCondition contails details about state of pvc +type PersistentVolumeClaimCondition struct { + Type PersistentVolumeClaimConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PersistentVolumeClaimConditionType"` + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we probed the condition. + // +optional + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // Unique, this should be a short, machine understandable string that gives the reason + // for condition's last transition. If it reports "ResizeStarted" that means the underlying + // persistent volume is being resized. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human-readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// PersistentVolumeClaimStatus is the current status of a persistent volume claim. +type PersistentVolumeClaimStatus struct { + // Phase represents the current phase of PersistentVolumeClaim. + // +optional + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,2,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // Represents the actual resources of the underlying volume. + // +optional + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,3,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` + // Current Condition of persistent volume claim. If underlying persistent volume is being + // resized then the Condition will be set to 'ResizeStarted'. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []PersistentVolumeClaimCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,4,rep,name=conditions"` +} + +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" +) + +type HostPathType string + +const ( + // For backwards compatible, leave it empty if unset + HostPathUnset HostPathType = "" + // If nothing exists at the given path, an empty directory will be created there + // as needed with file mode 0755, having the same group and ownership with Kubelet. + HostPathDirectoryOrCreate HostPathType = "DirectoryOrCreate" + // A directory must exist at the given path + HostPathDirectory HostPathType = "Directory" + // If nothing exists at the given path, an empty file will be created there + // as needed with file mode 0644, having the same group and ownership with Kubelet. + HostPathFileOrCreate HostPathType = "FileOrCreate" + // A file must exist at the given path + HostPathFile HostPathType = "File" + // A UNIX socket must exist at the given path + HostPathSocket HostPathType = "Socket" + // A character device must exist at the given path + HostPathCharDev HostPathType = "CharDevice" + // A block device must exist at the given path + HostPathBlockDev HostPathType = "BlockDevice" +) + +// 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. + // If the path is a symlink, it will follow the link to the real path. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` + // Type for HostPath Volume + // Defaults to "" + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // +optional + Type *HostPathType `json:"type,omitempty" protobuf:"bytes,2,opt,name=type"` +} + +// 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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + Medium StorageMedium `json:"medium,omitempty" protobuf:"bytes,1,opt,name=medium,casttype=StorageMedium"` + // Total amount of local storage required for this EmptyDir volume. + // The size limit is also applicable for memory medium. + // The maximum usage on memory medium EmptyDir would be the minimum value between + // the SizeLimit specified here and the sum of memory limits of all containers in a pod. + // The default is nil which means that the limit is undefined. + // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir + // +optional + SizeLimit *resource.Quantity `json:"sizeLimit,omitempty" protobuf:"bytes,2,opt,name=sizeLimit"` +} + +// 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: https://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: https://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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + // +optional + 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: https://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: https://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: https://kubernetes.io/docs/concepts/storage/volumes#rbd + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // The rados pool name. + // Default is rbd. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"` + // The rados user name. + // Default is admin. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + 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: https://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: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + 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: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + 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: https://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 / + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` + // Optional: User is the rados user name, default is admin + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` +} + +// SecretReference represents a Secret Reference. It has enough information to retrieve secret +// in any namespace +type SecretReference struct { + // Name is unique within a namespace to reference a secret resource. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // Namespace defines the space within which the secret name must be unique. + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFSPersistentVolumeSource struct { + // Required: Monitors is a collection of Ceph monitors + // More info: https://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 / + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` + // Optional: User is the rados user name, default is admin + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + 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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + SecretRef *SecretReference `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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` +} + +// Represents a Flocker volume mounted by the Flocker agent. +// One and only one of datasetName and datasetUUID should be set. +// Flocker volumes do not support ownership management or SELinux relabeling. +type FlockerVolumeSource struct { + // Name of the dataset stored as metadata -> name on the dataset for Flocker + // should be considered as deprecated + // +optional + DatasetName string `json:"datasetName,omitempty" protobuf:"bytes,1,opt,name=datasetName"` + // UUID of the dataset. This is unique identifier of a Flocker dataset + // +optional + DatasetUUID string `json:"datasetUUID,omitempty" protobuf:"bytes,2,opt,name=datasetUUID"` +} + +// 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) + StorageMediumHugepages StorageMedium = "HugePages" // use hugepages +) + +// 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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + 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. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` + + // User to map volume access to + // Defaults to serivceaccount user + // +optional + User string `json:"user,omitempty" protobuf:"bytes,4,opt,name=user"` + + // Group to map volume access to + // Default is no group + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // Optional: Extra command options if any. + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + 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). + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + 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. + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + 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. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"bytes,3,opt,name=defaultMode"` + // Specify whether the Secret or it's keys must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +const ( + SecretVolumeSourceDefaultMode int32 = 0644 +) + +// Adapts a secret into a projected volume. +// +// The contents of the target Secret's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names. +// Note that this is identical to a secret volume source without the default +// mode. +type SecretProjection struct { + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Specify whether the Secret or its key must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +// 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: https://kubernetes.io/docs/concepts/storage/volumes#nfs + Server string `json:"server" protobuf:"bytes,1,opt,name=server"` + + // Path that is exported by the NFS server. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,5,opt,name=fsType"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` + // iSCSI target portal List. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + // +optional + Portals []string `json:"portals,omitempty" protobuf:"bytes,7,opt,name=portals"` + // whether support iSCSI Discovery CHAP authentication + // +optional + DiscoveryCHAPAuth bool `json:"chapAuthDiscovery,omitempty" protobuf:"varint,8,opt,name=chapAuthDiscovery"` + // whether support iSCSI Session CHAP authentication + // +optional + SessionCHAPAuth bool `json:"chapAuthSession,omitempty" protobuf:"varint,11,opt,name=chapAuthSession"` + // CHAP secret for iSCSI target and initiator authentication + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,10,opt,name=secretRef"` + // Custom iSCSI initiator name. + // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface + // : will be created for the connection. + // +optional + InitiatorName *string `json:"initiatorName,omitempty" protobuf:"bytes,12,opt,name=initiatorName"` +} + +// 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 { + // Optional: FC target worldwide names (WWNs) + // +optional + TargetWWNs []string `json:"targetWWNs,omitempty" protobuf:"bytes,1,rep,name=targetWWNs"` + // Optional: FC target lun number + // +optional + Lun *int32 `json:"lun,omitempty" 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 + // +optional + 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. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // Optional: FC volume world wide identifiers (wwids) + // Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + // +optional + WWIDs []string `json:"wwids,omitempty" protobuf:"bytes,5,rep,name=wwids"` +} + +// 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. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFilePersistentVolumeSource 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. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` + // the namespace of the secret that contains Azure Storage Account Name and Key + // default is the same as the Pod + // +optional + SecretNamespace *string `json:"secretNamespace" protobuf:"bytes,4,opt,name=secretNamespace"` +} + +// 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. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Storage Policy Based Management (SPBM) profile name. + // +optional + StoragePolicyName string `json:"storagePolicyName,omitempty" protobuf:"bytes,3,opt,name=storagePolicyName"` + // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + // +optional + StoragePolicyID string `json:"storagePolicyID,omitempty" protobuf:"bytes,4,opt,name=storagePolicyID"` +} + +// Represents a Photon Controller persistent disk resource. +type PhotonPersistentDiskVolumeSource struct { + // ID that identifies Photon Controller persistent disk + PdID string `json:"pdID" protobuf:"bytes,1,opt,name=pdID"` + // 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 +type AzureDataDiskKind string + +const ( + AzureDataDiskCachingNone AzureDataDiskCachingMode = "None" + AzureDataDiskCachingReadOnly AzureDataDiskCachingMode = "ReadOnly" + AzureDataDiskCachingReadWrite AzureDataDiskCachingMode = "ReadWrite" + + AzureSharedBlobDisk AzureDataDiskKind = "Shared" + AzureDedicatedBlobDisk AzureDataDiskKind = "Dedicated" + AzureManagedDisk AzureDataDiskKind = "Managed" +) + +// 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. + // +optional + 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. + // +optional + 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. + // +optional + ReadOnly *bool `json:"readOnly,omitempty" protobuf:"varint,5,opt,name=readOnly"` + // Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + Kind *AzureDataDiskKind `json:"kind,omitempty" protobuf:"bytes,6,opt,name=kind,casttype=AzureDataDiskKind"` +} + +// PortworxVolumeSource represents a Portworx volume resource. +type PortworxVolumeSource struct { + // VolumeID uniquely identifies a Portworx volume + VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` + // FSType represents the filesystem type to mount + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// ScaleIOVolumeSource represents a persistent ScaleIO volume +type ScaleIOVolumeSource struct { + // The host address of the ScaleIO API Gateway. + Gateway string `json:"gateway" protobuf:"bytes,1,opt,name=gateway"` + // The name of the storage system as configured in ScaleIO. + System string `json:"system" protobuf:"bytes,2,opt,name=system"` + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + SecretRef *LocalObjectReference `json:"secretRef" protobuf:"bytes,3,opt,name=secretRef"` + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + SSLEnabled bool `json:"sslEnabled,omitempty" protobuf:"varint,4,opt,name=sslEnabled"` + // The name of the Protection Domain for the configured storage (defaults to "default"). + // +optional + ProtectionDomain string `json:"protectionDomain,omitempty" protobuf:"bytes,5,opt,name=protectionDomain"` + // The Storage Pool associated with the protection domain (defaults to "default"). + // +optional + StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` + // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // +optional + StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` + // 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 + FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,10,opt,name=readOnly"` +} + +// Represents a StorageOS persistent volume resource. +type StorageOSVolumeSource struct { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,1,opt,name=volumeName"` + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + VolumeNamespace string `json:"volumeNamespace,omitempty" protobuf:"bytes,2,opt,name=volumeNamespace"` + // 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 + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` +} + +// Represents a StorageOS persistent volume resource. +type StorageOSPersistentVolumeSource struct { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,1,opt,name=volumeName"` + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + VolumeNamespace string `json:"volumeNamespace,omitempty" protobuf:"bytes,2,opt,name=volumeNamespace"` + // 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 + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + SecretRef *ObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` +} + +// 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + 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. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,3,opt,name=defaultMode"` + // Specify whether the ConfigMap or it's keys must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +const ( + ConfigMapVolumeSourceDefaultMode int32 = 0644 +) + +// Adapts a ConfigMap into a projected volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// projected 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. +// Note that this is identical to a configmap volume source without the default +// mode. +type ConfigMapProjection 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 unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Specify whether the ConfigMap or it's keys must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +// Represents a projected volume source +type ProjectedVolumeSource struct { + // list of volume projections + Sources []VolumeProjection `json:"sources" protobuf:"bytes,1,rep,name=sources"` + // 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. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,2,opt,name=defaultMode"` +} + +// Projection that may be projected along with other supported volume types +type VolumeProjection struct { + // all types below are the supported types for projection into the same volume + + // information about the secret data to project + Secret *SecretProjection `json:"secret,omitempty" protobuf:"bytes,1,opt,name=secret"` + // information about the downwardAPI data to project + DownwardAPI *DownwardAPIProjection `json:"downwardAPI,omitempty" protobuf:"bytes,2,opt,name=downwardAPI"` + // information about the configMap data to project + ConfigMap *ConfigMapProjection `json:"configMap,omitempty" protobuf:"bytes,3,opt,name=configMap"` +} + +const ( + ProjectedVolumeSourceDefaultMode 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. + // +optional + Mode *int32 `json:"mode,omitempty" protobuf:"varint,3,opt,name=mode"` +} + +// Local represents directly-attached storage with node affinity +type LocalVolumeSource struct { + // The full path to the volume on the node + // For alpha, this path must be a directory + // Once block as a source is supported, then this path can point to a block device + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` +} + +// 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. + // +optional + 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. + // +optional + 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". + // +optional + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,4,opt,name=protocol,casttype=Protocol"` + // What host IP to bind the external port to. + // +optional + 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. + // +optional + 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). + // +optional + SubPath string `json:"subPath,omitempty" protobuf:"bytes,4,opt,name=subPath"` + // mountPropagation determines how mounts are propagated from the host + // to container and the other way around. + // When not set, MountPropagationHostToContainer is used. + // This field is alpha in 1.8 and can be reworked or removed in a future + // release. + // +optional + MountPropagation *MountPropagationMode `json:"mountPropagation,omitempty" protobuf:"bytes,5,opt,name=mountPropagation,casttype=MountPropagationMode"` +} + +// MountPropagationMode describes mount propagation. +type MountPropagationMode string + +const ( + // MountPropagationHostToContainer means that the volume in a container will + // receive new mounts from the host or other containers, but filesystems + // mounted inside the container won't be propagated to the host or other + // containers. + // Note that this mode is recursively applied to all mounts in the volume + // ("rslave" in Linux terminology). + MountPropagationHostToContainer MountPropagationMode = "HostToContainer" + // MountPropagationBidirectional means that the volume in a container will + // receive new mounts from the host or other containers, and its own mounts + // will be propagated from the container to the host or other containers. + // Note that this mode is recursively applied to all mounts in the volume + // ("rshared" in Linux terminology). + MountPropagationBidirectional MountPropagationMode = "Bidirectional" +) + +// 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 "". + // +optional + 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. + // +optional + 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.hostIP, status.podIP. + // +optional + 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, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + // +optional + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" protobuf:"bytes,2,opt,name=resourceFieldRef"` + // Selects a key of a ConfigMap. + // +optional + ConfigMapKeyRef *ConfigMapKeySelector `json:"configMapKeyRef,omitempty" protobuf:"bytes,3,opt,name=configMapKeyRef"` + // Selects a key of a secret in the pod's namespace + // +optional + 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". + // +optional + 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 + // +optional + 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" + // +optional + 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"` + // Specify whether the ConfigMap or it's key must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,3,opt,name=optional"` +} + +// 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"` + // Specify whether the Secret or it's key must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,3,opt,name=optional"` +} + +// EnvFromSource represents the source of a set of ConfigMaps +type EnvFromSource struct { + // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // +optional + Prefix string `json:"prefix,omitempty" protobuf:"bytes,1,opt,name=prefix"` + // The ConfigMap to select from + // +optional + ConfigMapRef *ConfigMapEnvSource `json:"configMapRef,omitempty" protobuf:"bytes,2,opt,name=configMapRef"` + // The Secret to select from + // +optional + SecretRef *SecretEnvSource `json:"secretRef,omitempty" protobuf:"bytes,3,opt,name=secretRef"` +} + +// ConfigMapEnvSource selects a ConfigMap to populate the environment +// variables with. +// +// The contents of the target ConfigMap's Data field will represent the +// key-value pairs as environment variables. +type ConfigMapEnvSource struct { + // The ConfigMap to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // Specify whether the ConfigMap must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,2,opt,name=optional"` +} + +// SecretEnvSource selects a Secret to populate the environment +// variables with. +// +// The contents of the target Secret's Data field will represent the +// key-value pairs as environment variables. +type SecretEnvSource struct { + // The Secret to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // Specify whether the Secret must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,2,opt,name=optional"` +} + +// 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. + // +optional + 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. + // +optional + Host string `json:"host,omitempty" protobuf:"bytes,3,opt,name=host"` + // Scheme to use for connecting to the host. + // Defaults to HTTP. + // +optional + Scheme URIScheme `json:"scheme,omitempty" protobuf:"bytes,4,opt,name=scheme,casttype=URIScheme"` + // Custom headers to set in the request. HTTP allows repeated headers. + // +optional + 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"` + // Optional: Host name to connect to, defaults to the pod IP. + // +optional + Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"` +} + +// 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. + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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" +) + +// TerminationMessagePolicy describes how termination messages are retrieved from a container. +type TerminationMessagePolicy string + +const ( + // TerminationMessageReadFile is the default behavior and will set the container status message to + // the contents of the container's terminationMessagePath when the container exits. + TerminationMessageReadFile TerminationMessagePolicy = "File" + // TerminationMessageFallbackToLogsOnError will read the most recent contents of the container logs + // for the container status message when the container exits with an error and the + // terminationMessagePath has no contents. + TerminationMessageFallbackToLogsOnError TerminationMessagePolicy = "FallbackToLogsOnError" +) + +// Capability represent POSIX capabilities type +type Capability string + +// Adds and removes POSIX capabilities from running containers. +type Capabilities struct { + // Added capabilities + // +optional + Add []Capability `json:"add,omitempty" protobuf:"bytes,1,rep,name=add,casttype=Capability"` + // Removed capabilities + // +optional + 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: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + 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: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + 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: https://kubernetes.io/docs/concepts/containers/images + // This field is optional to allow higher level config management to default or override + // container images in workload controllers like Deployments and StatefulSets. + // +optional + 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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + 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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + 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. + // +optional + 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. + // +optional + // +patchMergeKey=containerPort + // +patchStrategy=merge + Ports []ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"` + // List of sources to populate environment variables in the container. + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys + // will be reported as an event when the container is starting. When a key exists in multiple + // sources, the value associated with the last source will take precedence. + // Values defined by an Env with a duplicate key will take precedence. + // Cannot be updated. + // +optional + EnvFrom []EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,19,rep,name=envFrom"` + // List of environment variables to set in the container. + // Cannot be updated. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,8,opt,name=resources"` + // Pod volumes to mount into the container's filesystem. + // Cannot be updated. + // +optional + // +patchMergeKey=mountPath + // +patchStrategy=merge + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"mountPath" protobuf:"bytes,9,rep,name=volumeMounts"` + // Periodic probe of container liveness. + // Container will be restarted if the probe fails. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + 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. + // +optional + 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. + // Will be truncated by the node if greater than 4096 bytes. The total message length across + // all containers will be limited to 12kb. + // Defaults to /dev/termination-log. + // Cannot be updated. + // +optional + TerminationMessagePath string `json:"terminationMessagePath,omitempty" protobuf:"bytes,13,opt,name=terminationMessagePath"` + // Indicate how the termination message should be populated. File will use the contents of + // terminationMessagePath to populate the container status message on both success and failure. + // FallbackToLogsOnError will use the last chunk of container log output if the termination + // message file is empty and the container exited with an error. + // The log output is limited to 2048 bytes or 80 lines, whichever is smaller. + // Defaults to File. + // Cannot be updated. + // +optional + TerminationMessagePolicy TerminationMessagePolicy `json:"terminationMessagePolicy,omitempty" protobuf:"bytes,20,opt,name=terminationMessagePolicy,casttype=TerminationMessagePolicy"` + // Image pull policy. + // One of Always, Never, IfNotPresent. + // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // +optional + ImagePullPolicy PullPolicy `json:"imagePullPolicy,omitempty" protobuf:"bytes,14,opt,name=imagePullPolicy,casttype=PullPolicy"` + // Security options the pod should run with. + // More info: https://kubernetes.io/docs/concepts/policy/security-context/ + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + 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. + // +optional + 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 + // +optional + 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. + // +optional + 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. + // +optional + Exec *ExecAction `json:"exec,omitempty" protobuf:"bytes,1,opt,name=exec"` + // HTTPGet specifies the http request to perform. + // +optional + 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 + // +optional + 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: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + 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: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + 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. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,1,opt,name=reason"` + // Message regarding why the container is not yet running. + // +optional + 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 + // +optional + StartedAt metav1.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 + // +optional + Signal int32 `json:"signal,omitempty" protobuf:"varint,2,opt,name=signal"` + // (brief) reason from the last termination of the container + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + // Message regarding the last termination of the container + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + // Time at which previous execution of the container started + // +optional + StartedAt metav1.Time `json:"startedAt,omitempty" protobuf:"bytes,5,opt,name=startedAt"` + // Time at which the container last terminated + // +optional + FinishedAt metav1.Time `json:"finishedAt,omitempty" protobuf:"bytes,6,opt,name=finishedAt"` + // Container's ID in the format 'docker://' + // +optional + 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 + // +optional + Waiting *ContainerStateWaiting `json:"waiting,omitempty" protobuf:"bytes,1,opt,name=waiting"` + // Details about a running container + // +optional + Running *ContainerStateRunning `json:"running,omitempty" protobuf:"bytes,2,opt,name=running"` + // Details about a terminated container + // +optional + 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. + // +optional + State ContainerState `json:"state,omitempty" protobuf:"bytes,2,opt,name=state"` + // Details about the container's last termination condition. + // +optional + 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: https://kubernetes.io/docs/concepts/containers/images + // 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://'. + // +optional + 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" + // PodInitialized means that all init containers in the pod have started successfully. + PodInitialized PodConditionType = "Initialized" + // PodReasonUnschedulable reason in PodScheduled PodCondition means that the scheduler + // can't schedule the pod right now, for example due to insufficient resources in the cluster. + PodReasonUnschedulable = "Unschedulable" +) + +// 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we probed the condition. + // +optional + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // Unique, one-word, CamelCase reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human-readable message indicating details about last transition. + // +optional + 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 ( + // DNSClusterFirstWithHostNet 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. + DNSClusterFirstWithHostNet DNSPolicy = "ClusterFirstWithHostNet" + + // DNSClusterFirst indicates that the pod should use cluster DNS + // first unless hostNetwork is true, 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" 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. + // +optional + 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. + // +optional + 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)). + // +optional + 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)). + // +optional + 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. + // +optional + // 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. + // +optional + 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. + // +optional + 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. + // +optional + // 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. + // +optional + 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. + // +optional + 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 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. + // +optional + LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // null or empty list means "this pod's namespace" + Namespaces []string `json:"namespaces,omitempty" 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. + // +optional + 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. + // +optional + // 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. + // +optional + 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. + // +optional + 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" on +// any pod that does not tolerate the Taint. +type Taint struct { + // Required. The taint key to be applied to a node. + Key string `json:"key" protobuf:"bytes,1,opt,name=key"` + // Required. The taint value corresponding to the taint key. + // +optional + 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, PreferNoSchedule and NoExecute. + Effect TaintEffect `json:"effect" protobuf:"bytes,3,opt,name=effect,casttype=TaintEffect"` + // TimeAdded represents the time at which the taint was added. + // It is only written for NoExecute taints. + // +optional + TimeAdded metav1.Time `json:"timeAdded,omitempty" protobuf:"bytes,4,opt,name=timeAdded"` +} + +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. + // Like TaintEffectNoSchedule, but additionally do not allow pods submitted to + // Kubelet without going through the scheduler to start. + // Enforced by Kubelet and the scheduler. + // TaintEffectNoScheduleNoAdmit TaintEffect = "NoScheduleNoAdmit" + + // Evict any already-running pods that do not tolerate the taint. + // Currently enforced by NodeController. + TaintEffectNoExecute TaintEffect = "NoExecute" +) + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple using the matching operator . +type Toleration struct { + // Key is the taint key that the toleration applies to. Empty means match all taint keys. + // If the key is empty, operator must be Exists; this combination means to match all values and all keys. + // +optional + Key string `json:"key,omitempty" 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. + // +optional + 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. + // +optional + 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, PreferNoSchedule and NoExecute. + // +optional + Effect TaintEffect `json:"effect,omitempty" protobuf:"bytes,4,opt,name=effect,casttype=TaintEffect"` + // TolerationSeconds represents the period of time the toleration (which must be + // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + // it is not set, which means tolerate the taint forever (do not evict). Zero and + // negative values will be treated as 0 (evict immediately) by the system. + // +optional + TolerationSeconds *int64 `json:"tolerationSeconds,omitempty" protobuf:"varint,5,opt,name=tolerationSeconds"` +} + +// 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 { + // List of volumes that can be mounted by containers belonging to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes + // +optional + // +patchMergeKey=name + // +patchStrategy=merge,retainKeys + Volumes []Volume `json:"volumes,omitempty" patchStrategy:"merge,retainKeys" 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. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + // +patchMergeKey=name + // +patchStrategy=merge + InitContainers []Container `json:"initContainers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,20,rep,name=initContainers"` + // 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. + // +patchMergeKey=name + // +patchStrategy=merge + 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + // +optional + 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. + // +optional + 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. + // +optional + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,5,opt,name=activeDeadlineSeconds"` + // Set DNS policy for containers within the pod. + // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. + // Defaults to "ClusterFirst". + // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // +optional + 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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + // +optional + 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: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + // +optional + 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 + // +optional + DeprecatedServiceAccount string `json:"serviceAccount,omitempty" protobuf:"bytes,9,opt,name=serviceAccount"` + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + // +optional + AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,21,opt,name=automountServiceAccountToken"` + + // 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 + 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 + // +optional + 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 + // +optional + 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 + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + 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. + // +optional + Hostname string `json:"hostname,omitempty" protobuf:"bytes,16,opt,name=hostname"` + // If specified, the fully qualified Pod hostname will be "...svc.". + // If not specified, the pod will not have a domainname at all. + // +optional + Subdomain string `json:"subdomain,omitempty" protobuf:"bytes,17,opt,name=subdomain"` + // If specified, the pod's scheduling constraints + // +optional + Affinity *Affinity `json:"affinity,omitempty" protobuf:"bytes,18,opt,name=affinity"` + // If specified, the pod will be dispatched by specified scheduler. + // If not specified, the pod will be dispatched by default scheduler. + // +optional + SchedulerName string `json:"schedulerName,omitempty" protobuf:"bytes,19,opt,name=schedulerName"` + // If specified, the pod's tolerations. + // +optional + Tolerations []Toleration `json:"tolerations,omitempty" protobuf:"bytes,22,opt,name=tolerations"` + // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts + // file if specified. This is only valid for non-hostNetwork pods. + // +optional + // +patchMergeKey=ip + // +patchStrategy=merge + HostAliases []HostAlias `json:"hostAliases,omitempty" patchStrategy:"merge" patchMergeKey:"ip" protobuf:"bytes,23,rep,name=hostAliases"` + // If specified, indicates the pod's priority. "SYSTEM" is a special keyword + // which indicates the highest priority. Any other name must be defined by + // creating a PriorityClass object with that name. + // If not specified, the pod priority will be default or zero if there is no + // default. + // +optional + PriorityClassName string `json:"priorityClassName,omitempty" protobuf:"bytes,24,opt,name=priorityClassName"` + // The priority value. Various system components use this field to find the + // priority of the pod. When Priority Admission Controller is enabled, it + // prevents users from setting this field. The admission controller populates + // this field from PriorityClassName. + // The higher the value, the higher the priority. + // +optional + Priority *int32 `json:"priority,omitempty" protobuf:"bytes,25,opt,name=priority"` +} + +// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the +// pod's hosts file. +type HostAlias struct { + // IP address of the host file entry. + IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` + // Hostnames for the above IP address. + Hostnames []string `json:"hostnames,omitempty" protobuf:"bytes,2,rep,name=hostnames"` +} + +// 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + FSGroup *int64 `json:"fsGroup,omitempty" protobuf:"varint,5,opt,name=fsGroup"` +} + +// PodQOSClass defines the supported qos classes of Pods. +type PodQOSClass string + +const ( + // PodQOSGuaranteed is the Guaranteed qos class. + PodQOSGuaranteed PodQOSClass = "Guaranteed" + // PodQOSBurstable is the Burstable qos class. + PodQOSBurstable PodQOSClass = "Burstable" + // PodQOSBestEffort is the BestEffort qos class. + PodQOSBestEffort PodQOSClass = "BestEffort" +) + +// 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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase + // +optional + Phase PodPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PodPhase"` + // Current service state of pod. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + 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. + // +optional + 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. 'Evicted' + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + StartTime *metav1.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. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + InitContainerStatuses []ContainerStatus `json:"initContainerStatuses,omitempty" protobuf:"bytes,10,rep,name=initContainerStatuses"` + + // The list has one entry per container in the manifest. Each entry is currently the output + // of `docker inspect`. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + // +optional + ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty" protobuf:"bytes,8,rep,name=containerStatuses"` + // The Quality of Service (QOS) classification assigned to the pod based on resource requirements + // See PodQOSClass type for available QOS classes + // More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md + // +optional + QOSClass PodQOSClass `json:"qosClass,omitempty" protobuf:"bytes,9,rep,name=qosClass"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +type PodStatusResult struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status PodStatus `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status PodStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodList is a list of Pods. +type PodList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of pods. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodTemplate describes a template for creating copies of a predefined pod. +type PodTemplate struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Template defines the pods that will be created from this pod template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Template PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodTemplateList is a list of PodTemplates. +type PodTemplateList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // 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 + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + 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. + // +optional + // 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + 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. + // +optional + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replication controller. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // The number of available replicas (ready for at least minReadySeconds) for this replication controller. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed replication controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` + + // Represents the latest available observations of a replication controller's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ReplicationControllerCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` +} + +type ReplicationControllerConditionType string + +// These are valid conditions of a replication controller. +const ( + // ReplicationControllerReplicaFailure is added in a replication controller when one of its pods + // fails to be created due to insufficient quota, limit ranges, pod security policy, node selectors, + // etc. or deleted due to kubelet being down or finalizers are failing. + ReplicationControllerReplicaFailure ReplicationControllerConditionType = "ReplicaFailure" +) + +// ReplicationControllerCondition describes the state of a replication controller at a certain point. +type ReplicationControllerCondition struct { + // Type of replication controller condition. + Type ReplicationControllerConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ReplicationControllerConditionType"` + // Status of the condition, one of True, False, Unknown. + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +genclient +// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/extensions/v1beta1.Scale +// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/extensions/v1beta1.Scale,result=k8s.io/api/extensions/v1beta1.Scale +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ReplicationController represents the configuration of a replication controller. +type ReplicationController struct { + metav1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the replication controller. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ReplicationControllerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ReplicationControllerList is a collection of replication controllers. +type ReplicationControllerList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of replication controllers. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + 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" +) + +const DefaultClientIPServiceAffinitySeconds int32 = 10800 + +// SessionAffinityConfig represents the configurations of session affinity. +type SessionAffinityConfig struct { + // clientIP contains the configurations of Client IP based session affinity. + // +optional + ClientIP *ClientIPConfig `json:"clientIP,omitempty" protobuf:"bytes,1,opt,name=clientIP"` +} + +// ClientIPConfig represents the configurations of Client IP based session affinity. +type ClientIPConfig struct { + // timeoutSeconds specifies the seconds of ClientIP type session sticky time. + // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". + // Default value is 10800(for 3 hours). + // +optional + TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,1,opt,name=timeoutSeconds"` +} + +// 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" +) + +// Service External Traffic Policy Type string +type ServiceExternalTrafficPolicyType string + +const ( + // ServiceExternalTrafficPolicyTypeLocal specifies node-local endpoints behavior. + ServiceExternalTrafficPolicyTypeLocal ServiceExternalTrafficPolicyType = "Local" + // ServiceExternalTrafficPolicyTypeCluster specifies node-global (legacy) behavior. + ServiceExternalTrafficPolicyTypeCluster ServiceExternalTrafficPolicyType = "Cluster" +) + +// ServiceStatus represents the current status of a service. +type ServiceStatus struct { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + // +optional + 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. + // +optional + 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) + // +optional + 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) + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +patchMergeKey=port + // +patchStrategy=merge + Ports []ServicePort `json:"ports,omitempty" 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: https://kubernetes.io/docs/concepts/services-networking/service/ + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types + // +optional + 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. + // +optional + ExternalIPs []string `json:"externalIPs,omitempty" protobuf:"bytes,5,rep,name=externalIPs"` + + // 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: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/ + // +optional + 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. + // +optional + ExternalName string `json:"externalName,omitempty" protobuf:"bytes,10,opt,name=externalName"` + + // externalTrafficPolicy denotes if this Service desires to route external + // traffic to node-local or cluster-wide endpoints. "Local" preserves the + // client source IP and avoids a second hop for LoadBalancer and Nodeport + // type services, but risks potentially imbalanced traffic spreading. + // "Cluster" obscures the client source IP and may cause a second hop to + // another node, but should have good overall load-spreading. + // +optional + ExternalTrafficPolicy ServiceExternalTrafficPolicyType `json:"externalTrafficPolicy,omitempty" protobuf:"bytes,11,opt,name=externalTrafficPolicy"` + + // healthCheckNodePort specifies the healthcheck nodePort for the service. + // If not specified, HealthCheckNodePort is created by the service api + // backend with the allocated nodePort. Will use user-specified nodePort value + // if specified by the client. Only effects when Type is set to LoadBalancer + // and ExternalTrafficPolicy is set to Local. + // +optional + HealthCheckNodePort int32 `json:"healthCheckNodePort,omitempty" protobuf:"bytes,12,opt,name=healthCheckNodePort"` + + // publishNotReadyAddresses, when set to true, indicates that DNS implementations + // must publish the notReadyAddresses of subsets for the Endpoints associated with + // the Service. The default value is false. + // The primary use case for setting this field is to use a StatefulSet's Headless Service + // to propagate SRV records for its Pods without respect to their readiness for purpose + // of peer discovery. + // This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints + // when that annotation is deprecated and all clients have been converted to use this + // field. + // +optional + PublishNotReadyAddresses bool `json:"publishNotReadyAddresses,omitempty" protobuf:"varint,13,opt,name=publishNotReadyAddresses"` + // sessionAffinityConfig contains the configurations of session affinity. + // +optional + SessionAffinityConfig *SessionAffinityConfig `json:"sessionAffinityConfig,omitempty" protobuf:"bytes,14,opt,name=sessionAffinityConfig"` +} + +// 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. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // The IP protocol for this port. Supports "TCP" and "UDP". + // Default is TCP. + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + // +optional + 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: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + // +optional + NodePort int32 `json:"nodePort,omitempty" protobuf:"varint,5,opt,name=nodePort"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of a service. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ServiceList holds a list of services. +type ServiceList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of services + Items []Service `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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: https://kubernetes.io/docs/concepts/configuration/secret + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + 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: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod + // +optional + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" protobuf:"bytes,3,rep,name=imagePullSecrets"` + + // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. + // Can be overridden at the pod level. + // +optional + AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,4,opt,name=automountServiceAccountToken"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ServiceAccountList is a list of ServiceAccount objects +type ServiceAccountList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ServiceAccounts. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + Items []ServiceAccount `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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. + // +optional + 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. + // +optional + NotReadyAddresses []EndpointAddress `json:"notReadyAddresses,omitempty" protobuf:"bytes,2,rep,name=notReadyAddresses"` + // Port numbers available on the related IP addresses. + // +optional + 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 + // +optional + 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. + // +optional + NodeName *string `json:"nodeName,omitempty" protobuf:"bytes,4,opt,name=nodeName"` + // Reference to object providing the endpoint. + // +optional + 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. + // +optional + 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. + // +optional + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,3,opt,name=protocol,casttype=Protocol"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// EndpointsList is a list of endpoints. +type EndpointsList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.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. + // +optional + 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. + // +optional + ExternalID string `json:"externalID,omitempty" protobuf:"bytes,2,opt,name=externalID"` + // ID of the node assigned by the cloud provider in the format: :// + // +optional + 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: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration + // +optional + Unschedulable bool `json:"unschedulable,omitempty" protobuf:"varint,4,opt,name=unschedulable"` + // If specified, the node's taints. + // +optional + Taints []Taint `json:"taints,omitempty" protobuf:"bytes,5,opt,name=taints"` + // If specified, the source to get node configuration from + // The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field + // +optional + ConfigSource *NodeConfigSource `json:"configSource,omitempty" protobuf:"bytes,6,opt,name=configSource"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. +type NodeConfigSource struct { + metav1.TypeMeta `json:",inline"` + ConfigMapRef *ObjectReference `json:"configMapRef,omitempty" protobuf:"bytes,1,opt,name=configMapRef"` +} + +// 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. + // +optional + 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 preferred. 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 preferred. 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/nodes/node/#phase + // The field is never populated, and now is deprecated. + // +optional + Phase NodePhase `json:"phase,omitempty" protobuf:"bytes,3,opt,name=phase,casttype=NodePhase"` + // Conditions is an array of current observed node conditions. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#condition + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + 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: https://kubernetes.io/docs/concepts/nodes/node/#addresses + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Addresses []NodeAddress `json:"addresses,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,5,rep,name=addresses"` + // Endpoints of daemons running on the Node. + // +optional + DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty" protobuf:"bytes,6,opt,name=daemonEndpoints"` + // Set of ids/uuids to uniquely identify the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#info + // +optional + NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty" protobuf:"bytes,7,opt,name=nodeInfo"` + // List of container images on this node + // +optional + Images []ContainerImage `json:"images,omitempty" protobuf:"bytes,8,rep,name=images"` + // List of attachable volumes in use (mounted) by the node. + // +optional + VolumesInUse []UniqueVolumeName `json:"volumesInUse,omitempty" protobuf:"bytes,9,rep,name=volumesInUse"` + // List of volumes that are attached to the node. + // +optional + 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 available + 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. + // +optional + 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. + // +optional + EvictionTime metav1.Time `json:"evictionTime,omitempty" protobuf:"bytes,2,opt,name=evictionTime"` + // (brief) reason why this entry was added to the list. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + // Human readable message indicating why this entry was added to the list. + // +optional + 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. + // +optional + PodController *metav1.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. + // +optional + 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" + // NodeConfigOK indicates whether the kubelet is correctly configured + NodeConfigOK NodeConditionType = "ConfigOK" +) + +// 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. + // +optional + LastHeartbeatTime metav1.Time `json:"lastHeartbeatTime,omitempty" protobuf:"bytes,3,opt,name=lastHeartbeatTime"` + // Last time the condition transit from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + // +optional + 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" + NodeExternalDNS NodeAddressType = "ExternalDNS" + NodeInternalDNS NodeAddressType = "InternalDNS" +) + +// 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" + // Local ephemeral storage, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + // The resource name for ResourceEphemeralStorage is alpha and it can change across releases. + ResourceEphemeralStorage ResourceName = "ephemeral-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" +) + +const ( + // Namespace prefix for opaque counted resources (alpha). + ResourceOpaqueIntPrefix = "pod.alpha.kubernetes.io/opaque-int-resource-" + // Default namespace prefix. + ResourceDefaultNamespacePrefix = "kubernetes.io/" + // Name prefix for huge page resources (alpha). + ResourceHugePagesPrefix = "hugepages-" +) + +// ResourceList is a set of (resource name, quantity) pairs. +type ResourceList map[ResourceName]resource.Quantity + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Node is a worker node in Kubernetes. +// Each node will have a unique identifier in the cache (i.e. in etcd). +type Node struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of a node. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status NodeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NodeList is the whole list of all Nodes which have been registered with master. +type NodeList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of nodes + Items []Node `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// FinalizerName is the name identifying a finalizer during namespace lifecycle. +type FinalizerName string + +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here or +// in metav1. +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: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers + // +optional + 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: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases + // +optional + 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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Namespace provides a scope for Names. +// Use of multiple namespaces is optional. +type Namespace struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of the Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec NamespaceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status describes the current status of a Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status NamespaceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NamespaceList is a list of Namespaces. +type NamespaceList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Namespace objects in the list. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + Items []Namespace `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. +// Deprecated in 1.7, please use the bindings subresource of pods instead. +type Binding struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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. +// +k8s:openapi-gen=false +type Preconditions struct { + // Specifies the target UID. + // +optional + UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` +} + +// DeletionPropagation decides if a deletion will propagate to the dependents of the object, and how the garbage collector will handle the propagation. +type DeletionPropagation string + +const ( + // Orphans the dependents. + DeletePropagationOrphan DeletionPropagation = "Orphan" + // Deletes the object from the key-value store, the garbage collector will delete the dependents in the background. + DeletePropagationBackground DeletionPropagation = "Background" + // The object exists in the key-value store until the garbage collector deletes all the dependents whose ownerReference.blockOwnerDeletion=true from the key-value store. + // API sever will put the "DeletingDependents" finalizer on the object, and sets its deletionTimestamp. + // This policy is cascading, i.e., the dependents will be deleted with Foreground. + DeletePropagationForeground DeletionPropagation = "Foreground" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DeleteOptions may be provided when deleting an API object +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +type DeleteOptions struct { + metav1.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. + // +optional + 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. + // +optional + Preconditions *Preconditions `json:"preconditions,omitempty" protobuf:"bytes,2,opt,name=preconditions"` + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + OrphanDependents *bool `json:"orphanDependents,omitempty" protobuf:"varint,3,opt,name=orphanDependents"` + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + PropagationPolicy *DeletionPropagation `protobuf:"bytes,4,opt,name=propagationPolicy,casttype=DeletionPropagation"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ListOptions is the query options to a standard REST list call. +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +type ListOptions struct { + metav1.TypeMeta `json:",inline"` + + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + // +optional + 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. + // +optional + FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"` + // If true, partially initialized resources are included in the response. + // +optional + IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,6,opt,name=includeUninitialized"` + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + // +optional + 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. + // When specified 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 at least as fresh as given rv. + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"` + // Timeout for the list/watch call. + // +optional + TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodLogOptions is the query options for a Pod's logs REST call. +type PodLogOptions struct { + metav1.TypeMeta `json:",inline"` + + // The container for which to stream logs. Defaults to only container if there is one container in the pod. + // +optional + Container string `json:"container,omitempty" protobuf:"bytes,1,opt,name=container"` + // Follow the log stream of the pod. Defaults to false. + // +optional + Follow bool `json:"follow,omitempty" protobuf:"varint,2,opt,name=follow"` + // Return previous terminated container logs. Defaults to false. + // +optional + 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. + // +optional + 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. + // +optional + SinceTime *metav1.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. + // +optional + 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 + // +optional + 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. + // +optional + LimitBytes *int64 `json:"limitBytes,omitempty" protobuf:"varint,8,opt,name=limitBytes"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + + // Stdin if true, redirects the standard input stream of the pod for this call. + // Defaults to false. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + + // Redirect the standard input stream of the pod for this call. + // Defaults to false. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodPortForwardOptions is the query options to a Pod's port forward call +// when using WebSockets. +// The `port` query parameter must specify the port or +// ports (comma separated) to forward over. +// Port forwarding over SPDY does not use these options. It requires the port +// to be passed in the `port` header as part of request. +type PodPortForwardOptions struct { + metav1.TypeMeta `json:",inline"` + + // List of ports to forward + // Required when using WebSockets + // +optional + Ports []int32 `json:"ports,omitempty" protobuf:"varint,1,rep,name=ports"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodProxyOptions is the query options to a Pod's proxy call. +type PodProxyOptions struct { + metav1.TypeMeta `json:",inline"` + + // Path is the URL path to use for the current proxy request to pod. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NodeProxyOptions is the query options to a Node's proxy call. +type NodeProxyOptions struct { + metav1.TypeMeta `json:",inline"` + + // Path is the URL path to use for the current proxy request to node. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ServiceProxyOptions is the query options to a Service's proxy call. +type ServiceProxyOptions struct { + metav1.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. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ObjectReference struct { + // Kind of the referent. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + // Namespace of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` + // Name of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,3,opt,name=name"` + // UID of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + UID types.UID `json:"uid,omitempty" protobuf:"bytes,4,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` + // API version of the referent. + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,5,opt,name=apiVersion"` + // Specific resourceVersion to which this reference is made, if any. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + 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. + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // TODO: Add other useful fields. apiVersion, kind, uid? + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// SerializedReference is a reference to serialized object. +type SerializedReference struct { + metav1.TypeMeta `json:",inline"` + // The reference to an object in the system. + // +optional + 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. + // +optional + Component string `json:"component,omitempty" protobuf:"bytes,1,opt,name=component"` + // Node name on which the event is generated. + // +optional + 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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + metav1.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. + // +optional + 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. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + + // The component reporting this event. Should be a short machine understandable string. + // +optional + 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.) + // +optional + FirstTimestamp metav1.Time `json:"firstTimestamp,omitempty" protobuf:"bytes,6,opt,name=firstTimestamp"` + + // The time at which the most recent occurrence of this event was recorded. + // +optional + LastTimestamp metav1.Time `json:"lastTimestamp,omitempty" protobuf:"bytes,7,opt,name=lastTimestamp"` + + // The number of times this event has occurred. + // +optional + 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 + // +optional + Type string `json:"type,omitempty" protobuf:"bytes,9,opt,name=type"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// EventList is a list of events. +type EventList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of events + Items []Event `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// List holds a list of objects, which may not be known by the server. +type List metav1.List + +// 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" + // Limit that applies to all persistent volume claims in a namespace + LimitTypePersistentVolumeClaim LimitType = "PersistentVolumeClaim" +) + +// 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. + // +optional + Type LimitType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=LimitType"` + // Max usage constraints on this kind by resource name. + // +optional + Max ResourceList `json:"max,omitempty" protobuf:"bytes,2,rep,name=max,casttype=ResourceList,castkey=ResourceName"` + // Min usage constraints on this kind by resource name. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +type LimitRange struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the limits enforced. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec LimitRangeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// LimitRangeList is a list of LimitRange items. +type LimitRangeList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of LimitRange objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/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" + // Local ephemeral storage request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceRequestsEphemeralStorage ResourceName = "requests.ephemeral-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" + // Local ephemeral storage limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceLimitsEphemeralStorage ResourceName = "limits.ephemeral-storage" +) + +// 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: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + 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. + // +optional + 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: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + 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. + // +optional + Used ResourceList `json:"used,omitempty" protobuf:"bytes,2,rep,name=used,casttype=ResourceList,castkey=ResourceName"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +type ResourceQuota struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired quota. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec ResourceQuotaSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status defines the actual enforced quota and its current usage. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ResourceQuotaStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ResourceQuotaList is a list of ResourceQuota items. +type ResourceQuotaList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ResourceQuota objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + Items []ResourceQuota `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data contains the secret data. Each key must consist of alphanumeric + // characters, '-', '_' or '.'. 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 + // +optional + 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 + // +optional + StringData map[string]string `json:"stringData,omitempty" protobuf:"bytes,4,rep,name=stringData"` + + // Used to facilitate programmatic handling of secret data. + // +optional + 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" + + // 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 secert. + TLSCertKey = "tls.crt" + // TLSPrivateKeyKey is the key for the private key field in a TLS secret. + TLSPrivateKeyKey = "tls.key" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// SecretList is a list of Secret. +type SecretList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of secret objects. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + Items []Secret `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ConfigMap holds configuration data for pods to consume. +type ConfigMap struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data contains the configuration data. + // Each key must consist of alphanumeric characters, '-', '_' or '.'. + // +optional + Data map[string]string `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type ConfigMapList struct { + metav1.TypeMeta `json:",inline"` + + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // Condition error code for a component. + // For example, a health check error code. + // +optional + Error string `json:"error,omitempty" protobuf:"bytes,4,opt,name=error"` +} + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +type ComponentStatus struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of component conditions observed + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Status of all the conditions for the component as a list of ComponentStatus objects. +type ComponentStatusList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.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 + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + Mode *int32 `json:"mode,omitempty" protobuf:"varint,4,opt,name=mode"` +} + +// Represents downward API info for projecting into a projected volume. +// Note that this is identical to a downwardAPI volume source without the default +// mode. +type DownwardAPIProjection struct { + // Items is a list of DownwardAPIVolume file + // +optional + Items []DownwardAPIVolumeFile `json:"items,omitempty" protobuf:"bytes,1,rep,name=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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,5,opt,name=runAsNonRoot"` + // Whether this container has a read-only root filesystem. + // Default is false. + // +optional + ReadOnlyRootFilesystem *bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,6,opt,name=readOnlyRootFilesystem"` + // AllowPrivilegeEscalation controls whether a process can gain more + // privileges than its parent process. This bool directly controls if + // the no_new_privs flag will be set on the container process. + // AllowPrivilegeEscalation is true always when the container is: + // 1) run as Privileged + // 2) has CAP_SYS_ADMIN + // +optional + AllowPrivilegeEscalation *bool `json:"allowPrivilegeEscalation,omitempty" protobuf:"varint,7,opt,name=allowPrivilegeEscalation"` +} + +// SELinuxOptions are the labels to be applied to the container +type SELinuxOptions struct { + // User is a SELinux user label that applies to the container. + // +optional + User string `json:"user,omitempty" protobuf:"bytes,1,opt,name=user"` + // Role is a SELinux role label that applies to the container. + // +optional + Role string `json:"role,omitempty" protobuf:"bytes,2,opt,name=role"` + // Type is a SELinux type label that applies to the container. + // +optional + Type string `json:"type,omitempty" protobuf:"bytes,3,opt,name=type"` + // Level is SELinux level label that applies to the container. + // +optional + Level string `json:"level,omitempty" protobuf:"bytes,4,opt,name=level"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RangeAllocation is not a public type. +type RangeAllocation struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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" + + // 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 +) + +// Sysctl defines a kernel parameter to be set +type Sysctl struct { + // Name of a property to set + Name string `protobuf:"bytes,1,opt,name=name"` + // Value of a property to set + Value string `protobuf:"bytes,2,opt,name=value"` +} + +// 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 `protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` +} + +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 + ExecCommandParam = "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" +) diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..4fc4deaa4a --- /dev/null +++ b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -0,0 +1,2115 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#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 available", +} + +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.", + "kind": "Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared", +} + +func (AzureDiskVolumeSource) SwaggerDoc() map[string]string { + return map_AzureDiskVolumeSource +} + +var map_AzureFilePersistentVolumeSource = 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.", + "secretNamespace": "the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod", +} + +func (AzureFilePersistentVolumeSource) SwaggerDoc() map[string]string { + return map_AzureFilePersistentVolumeSource +} + +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. Deprecated in 1.7, please use the bindings subresource of pods instead.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/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_CephFSPersistentVolumeSource = 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: https://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: https://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: https://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: https://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: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", +} + +func (CephFSPersistentVolumeSource) SwaggerDoc() map[string]string { + return map_CephFSPersistentVolumeSource +} + +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: https://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: https://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: https://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: https://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: https://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: https://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: https://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: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", +} + +func (CinderVolumeSource) SwaggerDoc() map[string]string { + return map_CinderVolumeSource +} + +var map_ClientIPConfig = map[string]string{ + "": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "timeoutSeconds": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", +} + +func (ClientIPConfig) SwaggerDoc() map[string]string { + return map_ClientIPConfig +} + +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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'.", +} + +func (ConfigMap) SwaggerDoc() map[string]string { + return map_ConfigMap +} + +var map_ConfigMapEnvSource = map[string]string{ + "": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", + "optional": "Specify whether the ConfigMap must be defined", +} + +func (ConfigMapEnvSource) SwaggerDoc() map[string]string { + return map_ConfigMapEnvSource +} + +var map_ConfigMapKeySelector = map[string]string{ + "": "Selects a key from a ConfigMap.", + "key": "The key to select.", + "optional": "Specify whether the ConfigMap or it's key must be defined", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of ConfigMaps.", +} + +func (ConfigMapList) SwaggerDoc() map[string]string { + return map_ConfigMapList +} + +var map_ConfigMapProjection = map[string]string{ + "": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected 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. Note that this is identical to a configmap volume source without the default mode.", + "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 unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "optional": "Specify whether the ConfigMap or it's keys must be defined", +} + +func (ConfigMapProjection) SwaggerDoc() map[string]string { + return map_ConfigMapProjection +} + +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 unless it is marked optional. 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.", + "optional": "Specify whether the ConfigMap or it's keys must be defined", +} + +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: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.", + "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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "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.", + "envFrom": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. 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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#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. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "terminationMessagePolicy": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. 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: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "securityContext": "Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://git.k8s.io/community/contributors/design-proposals/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://'", +} + +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: https://kubernetes.io/docs/concepts/containers/images", + "imageID": "ImageID of the container's image.", + "containerID": "Container's ID in the format 'docker://'.", +} + +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 DEPRECATED: This type has been moved to meta/v1 and will be removed soon.", + "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": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "PropagationPolicy": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", +} + +func (DeleteOptions) SwaggerDoc() map[string]string { + return map_DeleteOptions +} + +var map_DownwardAPIProjection = map[string]string{ + "": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", + "items": "Items is a list of DownwardAPIVolume file", +} + +func (DownwardAPIProjection) SwaggerDoc() map[string]string { + return map_DownwardAPIProjection +} + +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: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", + "sizeLimit": "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of endpoints.", +} + +func (EndpointsList) SwaggerDoc() map[string]string { + return map_EndpointsList +} + +var map_EnvFromSource = map[string]string{ + "": "EnvFromSource represents the source of a set of ConfigMaps", + "prefix": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", + "configMapRef": "The ConfigMap to select from", + "secretRef": "The Secret to select from", +} + +func (EnvFromSource) SwaggerDoc() map[string]string { + return map_EnvFromSource +} + +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.hostIP, status.podIP.", + "resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) 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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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_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": "Optional: FC target worldwide names (WWNs)", + "lun": "Optional: 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.", + "wwids": "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", +} + +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. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", + "datasetName": "Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated", + "datasetUUID": "UUID of the dataset. This is unique identifier of a Flocker dataset", +} + +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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", + "path": "Path is the Glusterfs volume path. More info: https://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: https://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_HostAlias = map[string]string{ + "": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", + "ip": "IP address of the host file entry.", + "hostnames": "Hostnames for the above IP address.", +} + +func (HostAlias) SwaggerDoc() map[string]string { + return map_HostAlias +} + +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. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "type": "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#iscsi", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", + "portals": "iSCSI target portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + "chapAuthDiscovery": "whether support iSCSI Discovery CHAP authentication", + "chapAuthSession": "whether support iSCSI Session CHAP authentication", + "secretRef": "CHAP secret for iSCSI target and initiator authentication", + "initiatorName": "Custom iSCSI initiator name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.", +} + +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: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", + "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: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is a list of LimitRange objects. More info: https://git.k8s.io/community/contributors/design-proposals/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_ListOptions = map[string]string{ + "": "ListOptions is the query options to a standard REST list call. DEPRECATED: This type has been moved to meta/v1 and will be removed soon.", + "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.", + "includeUninitialized": "If true, partially initialized resources are included in the response.", + "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. When specified 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 at least as fresh as given rv.", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", +} + +func (LocalObjectReference) SwaggerDoc() map[string]string { + return map_LocalObjectReference +} + +var map_LocalVolumeSource = map[string]string{ + "": "Local represents directly-attached storage with node affinity", + "path": "The full path to the volume on the node For alpha, this path must be a directory Once block as a source is supported, then this path can point to a block device", +} + +func (LocalVolumeSource) SwaggerDoc() map[string]string { + return map_LocalVolumeSource +} + +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: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "path": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "readOnly": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", +} + +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: https://git.k8s.io/community/contributors/design-proposals/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: https://git.k8s.io/community/contributors/design-proposals/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. Each node will have a unique identifier in the cache (i.e. in etcd).", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/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_NodeConfigSource = map[string]string{ + "": "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.", +} + +func (NodeConfigSource) SwaggerDoc() map[string]string { + return map_NodeConfigSource +} + +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: https://git.k8s.io/community/contributors/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_NodeResources = map[string]string{ + "": "NodeResources is an object for conveying resource information about a node. see http://releases.k8s.io/HEAD/docs/design/resources.md for more details.", + "Capacity": "Capacity represents the available resources of a node", +} + +func (NodeResources) SwaggerDoc() map[string]string { + return map_NodeResources +} + +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: ://", + "unschedulable": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration", + "taints": "If specified, the node's taints.", + "configSource": "If specified, the source to get node configuration from The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field", +} + +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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", + "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: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.", + "conditions": "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition", + "addresses": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses", + "daemonEndpoints": "Endpoints of daemons running on the Node.", + "nodeInfo": "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/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 preferred. 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 preferred. 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. DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon.", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#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: https://git.k8s.io/community/contributors/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: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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 is expected to 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. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. 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: https://git.k8s.io/community/contributors/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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/", + "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.", + "initializers": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.", + "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "namespace": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "name": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "uid": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "apiVersion": "API version of the referent.", + "resourceVersion": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/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_PersistentVolume = map[string]string{ + "": "PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes", + "status": "Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "status": "Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", +} + +func (PersistentVolumeClaim) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaim +} + +var map_PersistentVolumeClaimCondition = map[string]string{ + "": "PersistentVolumeClaimCondition contails details about state of pvc", + "lastProbeTime": "Last time we probed the condition.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.", + "message": "Human-readable message indicating details about last transition.", +} + +func (PersistentVolumeClaimCondition) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimCondition +} + +var map_PersistentVolumeClaimList = map[string]string{ + "": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "volumeName": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "storageClassName": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", +} + +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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "capacity": "Represents the actual resources of the underlying volume.", + "conditions": "Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", +} + +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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", +} + +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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "glusterfs": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", + "nfs": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "rbd": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://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: https://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.", + "photonPersistentDisk": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", + "portworxVolume": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", + "scaleIO": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", + "local": "Local represents directly-attached storage with node affinity", + "storageos": "StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md", +} + +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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", + "accessModes": "AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming", + "storageClassName": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.", + "mountOptions": "A list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options", +} + +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: https://kubernetes.io/docs/concepts/storage/persistent-volumes#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_PhotonPersistentDiskVolumeSource = map[string]string{ + "": "Represents a Photon Controller persistent disk resource.", + "pdID": "ID that identifies Photon Controller persistent disk", + "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 (PhotonPersistentDiskVolumeSource) SwaggerDoc() map[string]string { + return map_PhotonPersistentDiskVolumeSource +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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": "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 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); null or empty list means \"this pod's namespace\"", + "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": "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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", + "status": "Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.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_PodPortForwardOptions = map[string]string{ + "": "PodPortForwardOptions is the query options to a Pod's port forward call when using WebSockets. The `port` query parameter must specify the port or ports (comma separated) to forward over. Port forwarding over SPDY does not use these options. It requires the port to be passed in the `port` header as part of request.", + "ports": "List of ports to forward Required when using WebSockets", +} + +func (PodPortForwardOptions) SwaggerDoc() map[string]string { + return map_PodPortForwardOptions +} + +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: https://kubernetes.io/docs/concepts/storage/volumes", + "initContainers": "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. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/", + "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.", + "restartPolicy": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", + "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 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + "serviceAccountName": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "serviceAccount": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", + "automountServiceAccountToken": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", + "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: https://kubernetes.io/docs/concepts/containers/images#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 \"...svc.\". If not specified, the pod will not have a domainname at all.", + "affinity": "If specified, the pod's scheduling constraints", + "schedulerName": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", + "tolerations": "If specified, the pod's tolerations.", + "hostAliases": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", + "priorityClassName": "If specified, indicates the pod's priority. \"SYSTEM\" is a special keyword which indicates the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", + "priority": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.", +} + +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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase", + "conditions": "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#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. 'Evicted'", + "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.", + "initContainerStatuses": "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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", + "containerStatuses": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", + "qosClass": "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md", +} + +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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "template": "Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (PodTemplateSpec) SwaggerDoc() map[string]string { + return map_PodTemplateSpec +} + +var map_PortworxVolumeSource = map[string]string{ + "": "PortworxVolumeSource represents a Portworx volume resource.", + "volumeID": "VolumeID uniquely identifies a Portworx volume", + "fsType": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (PortworxVolumeSource) SwaggerDoc() map[string]string { + return map_PortworxVolumeSource +} + +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: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "timeoutSeconds": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#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_ProjectedVolumeSource = map[string]string{ + "": "Represents a projected volume source", + "sources": "list of volume projections", + "defaultMode": "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.", +} + +func (ProjectedVolumeSource) SwaggerDoc() map[string]string { + return map_ProjectedVolumeSource +} + +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: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "image": "The rados image name. More info: https://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: https://kubernetes.io/docs/concepts/storage/volumes#rbd", + "pool": "The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "user": "The rados user name. Default is admin. More info: https://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: https://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: https://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: https://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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (ReplicationController) SwaggerDoc() map[string]string { + return map_ReplicationController +} + +var map_ReplicationControllerCondition = map[string]string{ + "": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", + "type": "Type of replication controller condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastTransitionTime": "The last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (ReplicationControllerCondition) SwaggerDoc() map[string]string { + return map_ReplicationControllerCondition +} + +var map_ReplicationControllerList = map[string]string{ + "": "ReplicationControllerList is a collection of replication controllers.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", +} + +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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", + "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)", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", + "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.", + "availableReplicas": "The number of available replicas (ready for at least minReadySeconds) for this replication controller.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed replication controller.", + "conditions": "Represents the latest available observations of a replication controller's current state.", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is a list of ResourceQuota objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", +} + +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: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", + "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: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", + "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: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "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: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", +} + +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_ScaleIOVolumeSource = map[string]string{ + "": "ScaleIOVolumeSource represents a persistent ScaleIO volume", + "gateway": "The host address of the ScaleIO API Gateway.", + "system": "The name of the storage system as configured in ScaleIO.", + "secretRef": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", + "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", + "protectionDomain": "The name of the Protection Domain for the configured storage (defaults to \"default\").", + "storagePool": "The Storage Pool associated with the protection domain (defaults to \"default\").", + "storageMode": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", + "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", + "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 (ScaleIOVolumeSource) SwaggerDoc() map[string]string { + return map_ScaleIOVolumeSource +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. 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_SecretEnvSource = map[string]string{ + "": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", + "optional": "Specify whether the Secret must be defined", +} + +func (SecretEnvSource) SwaggerDoc() map[string]string { + return map_SecretEnvSource +} + +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.", + "optional": "Specify whether the Secret or it's key must be defined", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret", +} + +func (SecretList) SwaggerDoc() map[string]string { + return map_SecretList +} + +var map_SecretProjection = map[string]string{ + "": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", + "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 unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "optional": "Specify whether the Secret or its key must be defined", +} + +func (SecretProjection) SwaggerDoc() map[string]string { + return map_SecretProjection +} + +var map_SecretReference = map[string]string{ + "": "SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace", + "name": "Name is unique within a namespace to reference a secret resource.", + "namespace": "Namespace defines the space within which the secret name must be unique.", +} + +func (SecretReference) SwaggerDoc() map[string]string { + return map_SecretReference +} + +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: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "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 unless it is marked optional. 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.", + "optional": "Specify whether the Secret or it's keys must be defined", +} + +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.", + "allowPrivilegeEscalation": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "secrets": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret", + "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: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod", + "automountServiceAccountToken": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", +} + +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: https://git.k8s.io/community/contributors/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: https://kubernetes.io/docs/concepts/services-networking/service/#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: https://kubernetes.io/docs/concepts/services-networking/service/#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: https://kubernetes.io/docs/concepts/services-networking/service/#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: https://kubernetes.io/docs/concepts/services-networking/service/", + "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: https://kubernetes.io/docs/concepts/services-networking/service/#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: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services ", + "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.", + "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: https://kubernetes.io/docs/concepts/services-networking/service/#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: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/", + "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.", + "externalTrafficPolicy": "externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.", + "healthCheckNodePort": "healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.", + "publishNotReadyAddresses": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints when that annotation is deprecated and all clients have been converted to use this field.", + "sessionAffinityConfig": "sessionAffinityConfig contains the configurations of session affinity.", +} + +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_SessionAffinityConfig = map[string]string{ + "": "SessionAffinityConfig represents the configurations of session affinity.", + "clientIP": "clientIP contains the configurations of Client IP based session affinity.", +} + +func (SessionAffinityConfig) SwaggerDoc() map[string]string { + return map_SessionAffinityConfig +} + +var map_StorageOSPersistentVolumeSource = map[string]string{ + "": "Represents a StorageOS persistent volume resource.", + "volumeName": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", + "volumeNamespace": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", + "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.", + "secretRef": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", +} + +func (StorageOSPersistentVolumeSource) SwaggerDoc() map[string]string { + return map_StorageOSPersistentVolumeSource +} + +var map_StorageOSVolumeSource = map[string]string{ + "": "Represents a StorageOS persistent volume resource.", + "volumeName": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", + "volumeNamespace": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", + "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.", + "secretRef": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", +} + +func (StorageOSVolumeSource) SwaggerDoc() map[string]string { + return map_StorageOSVolumeSource +} + +var map_Sysctl = map[string]string{ + "": "Sysctl defines a kernel parameter to be set", + "Name": "Name of a property to set", + "Value": "Value of a property to set", +} + +func (Sysctl) SwaggerDoc() map[string]string { + return map_Sysctl +} + +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.", + "host": "Optional: Host name to connect to, defaults to the pod IP.", +} + +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\" on any pod 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, PreferNoSchedule and NoExecute.", + "timeAdded": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.", +} + +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 using the matching operator .", + "key": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "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, PreferNoSchedule and NoExecute.", + "tolerationSeconds": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", +} + +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: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#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).", + "mountPropagation": "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationHostToContainer is used. This field is alpha in 1.8 and can be reworked or removed in a future release.", +} + +func (VolumeMount) SwaggerDoc() map[string]string { + return map_VolumeMount +} + +var map_VolumeProjection = map[string]string{ + "": "Projection that may be projected along with other supported volume types", + "secret": "information about the secret data to project", + "downwardAPI": "information about the downwardAPI data to project", + "configMap": "information about the configMap data to project", +} + +func (VolumeProjection) SwaggerDoc() map[string]string { + return map_VolumeProjection +} + +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: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "emptyDir": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#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: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "gitRepo": "GitRepo represents a git repository at a particular revision.", + "secret": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "nfs": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#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: https://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: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", + "persistentVolumeClaim": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "rbd": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://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: https://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.", + "photonPersistentDisk": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", + "projected": "Items for all in one resources secrets, configmaps, and downward API", + "portworxVolume": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", + "scaleIO": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", + "storageos": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", +} + +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.", + "storagePolicyName": "Storage Policy Based Management (SPBM) profile name.", + "storagePolicyID": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", +} + +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/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..66d4e8e1fa --- /dev/null +++ b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -0,0 +1,6322 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + resource "k8s.io/apimachinery/pkg/api/resource" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + types "k8s.io/apimachinery/pkg/types" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AWSElasticBlockStoreVolumeSource).DeepCopyInto(out.(*AWSElasticBlockStoreVolumeSource)) + return nil + }, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Affinity).DeepCopyInto(out.(*Affinity)) + return nil + }, InType: reflect.TypeOf(&Affinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AttachedVolume).DeepCopyInto(out.(*AttachedVolume)) + return nil + }, InType: reflect.TypeOf(&AttachedVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AvoidPods).DeepCopyInto(out.(*AvoidPods)) + return nil + }, InType: reflect.TypeOf(&AvoidPods{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AzureDiskVolumeSource).DeepCopyInto(out.(*AzureDiskVolumeSource)) + return nil + }, InType: reflect.TypeOf(&AzureDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AzureFilePersistentVolumeSource).DeepCopyInto(out.(*AzureFilePersistentVolumeSource)) + return nil + }, InType: reflect.TypeOf(&AzureFilePersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AzureFileVolumeSource).DeepCopyInto(out.(*AzureFileVolumeSource)) + return nil + }, InType: reflect.TypeOf(&AzureFileVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Binding).DeepCopyInto(out.(*Binding)) + return nil + }, InType: reflect.TypeOf(&Binding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Capabilities).DeepCopyInto(out.(*Capabilities)) + return nil + }, InType: reflect.TypeOf(&Capabilities{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CephFSPersistentVolumeSource).DeepCopyInto(out.(*CephFSPersistentVolumeSource)) + return nil + }, InType: reflect.TypeOf(&CephFSPersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CephFSVolumeSource).DeepCopyInto(out.(*CephFSVolumeSource)) + return nil + }, InType: reflect.TypeOf(&CephFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CinderVolumeSource).DeepCopyInto(out.(*CinderVolumeSource)) + return nil + }, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClientIPConfig).DeepCopyInto(out.(*ClientIPConfig)) + return nil + }, InType: reflect.TypeOf(&ClientIPConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ComponentCondition).DeepCopyInto(out.(*ComponentCondition)) + return nil + }, InType: reflect.TypeOf(&ComponentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ComponentStatus).DeepCopyInto(out.(*ComponentStatus)) + return nil + }, InType: reflect.TypeOf(&ComponentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ComponentStatusList).DeepCopyInto(out.(*ComponentStatusList)) + return nil + }, InType: reflect.TypeOf(&ComponentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ConfigMap).DeepCopyInto(out.(*ConfigMap)) + return nil + }, InType: reflect.TypeOf(&ConfigMap{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ConfigMapEnvSource).DeepCopyInto(out.(*ConfigMapEnvSource)) + return nil + }, InType: reflect.TypeOf(&ConfigMapEnvSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ConfigMapKeySelector).DeepCopyInto(out.(*ConfigMapKeySelector)) + return nil + }, InType: reflect.TypeOf(&ConfigMapKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ConfigMapList).DeepCopyInto(out.(*ConfigMapList)) + return nil + }, InType: reflect.TypeOf(&ConfigMapList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ConfigMapProjection).DeepCopyInto(out.(*ConfigMapProjection)) + return nil + }, InType: reflect.TypeOf(&ConfigMapProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ConfigMapVolumeSource).DeepCopyInto(out.(*ConfigMapVolumeSource)) + return nil + }, InType: reflect.TypeOf(&ConfigMapVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Container).DeepCopyInto(out.(*Container)) + return nil + }, InType: reflect.TypeOf(&Container{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerImage).DeepCopyInto(out.(*ContainerImage)) + return nil + }, InType: reflect.TypeOf(&ContainerImage{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerPort).DeepCopyInto(out.(*ContainerPort)) + return nil + }, InType: reflect.TypeOf(&ContainerPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerState).DeepCopyInto(out.(*ContainerState)) + return nil + }, InType: reflect.TypeOf(&ContainerState{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerStateRunning).DeepCopyInto(out.(*ContainerStateRunning)) + return nil + }, InType: reflect.TypeOf(&ContainerStateRunning{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerStateTerminated).DeepCopyInto(out.(*ContainerStateTerminated)) + return nil + }, InType: reflect.TypeOf(&ContainerStateTerminated{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerStateWaiting).DeepCopyInto(out.(*ContainerStateWaiting)) + return nil + }, InType: reflect.TypeOf(&ContainerStateWaiting{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ContainerStatus).DeepCopyInto(out.(*ContainerStatus)) + return nil + }, InType: reflect.TypeOf(&ContainerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonEndpoint).DeepCopyInto(out.(*DaemonEndpoint)) + return nil + }, InType: reflect.TypeOf(&DaemonEndpoint{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeleteOptions).DeepCopyInto(out.(*DeleteOptions)) + return nil + }, InType: reflect.TypeOf(&DeleteOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DownwardAPIProjection).DeepCopyInto(out.(*DownwardAPIProjection)) + return nil + }, InType: reflect.TypeOf(&DownwardAPIProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DownwardAPIVolumeFile).DeepCopyInto(out.(*DownwardAPIVolumeFile)) + return nil + }, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DownwardAPIVolumeSource).DeepCopyInto(out.(*DownwardAPIVolumeSource)) + return nil + }, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EmptyDirVolumeSource).DeepCopyInto(out.(*EmptyDirVolumeSource)) + return nil + }, InType: reflect.TypeOf(&EmptyDirVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EndpointAddress).DeepCopyInto(out.(*EndpointAddress)) + return nil + }, InType: reflect.TypeOf(&EndpointAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EndpointPort).DeepCopyInto(out.(*EndpointPort)) + return nil + }, InType: reflect.TypeOf(&EndpointPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EndpointSubset).DeepCopyInto(out.(*EndpointSubset)) + return nil + }, InType: reflect.TypeOf(&EndpointSubset{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Endpoints).DeepCopyInto(out.(*Endpoints)) + return nil + }, InType: reflect.TypeOf(&Endpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EndpointsList).DeepCopyInto(out.(*EndpointsList)) + return nil + }, InType: reflect.TypeOf(&EndpointsList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EnvFromSource).DeepCopyInto(out.(*EnvFromSource)) + return nil + }, InType: reflect.TypeOf(&EnvFromSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EnvVar).DeepCopyInto(out.(*EnvVar)) + return nil + }, InType: reflect.TypeOf(&EnvVar{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EnvVarSource).DeepCopyInto(out.(*EnvVarSource)) + return nil + }, InType: reflect.TypeOf(&EnvVarSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Event).DeepCopyInto(out.(*Event)) + return nil + }, InType: reflect.TypeOf(&Event{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EventList).DeepCopyInto(out.(*EventList)) + return nil + }, InType: reflect.TypeOf(&EventList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EventSource).DeepCopyInto(out.(*EventSource)) + return nil + }, InType: reflect.TypeOf(&EventSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExecAction).DeepCopyInto(out.(*ExecAction)) + return nil + }, InType: reflect.TypeOf(&ExecAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*FCVolumeSource).DeepCopyInto(out.(*FCVolumeSource)) + return nil + }, InType: reflect.TypeOf(&FCVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*FlexVolumeSource).DeepCopyInto(out.(*FlexVolumeSource)) + return nil + }, InType: reflect.TypeOf(&FlexVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*FlockerVolumeSource).DeepCopyInto(out.(*FlockerVolumeSource)) + return nil + }, InType: reflect.TypeOf(&FlockerVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GCEPersistentDiskVolumeSource).DeepCopyInto(out.(*GCEPersistentDiskVolumeSource)) + return nil + }, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GitRepoVolumeSource).DeepCopyInto(out.(*GitRepoVolumeSource)) + return nil + }, InType: reflect.TypeOf(&GitRepoVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GlusterfsVolumeSource).DeepCopyInto(out.(*GlusterfsVolumeSource)) + return nil + }, InType: reflect.TypeOf(&GlusterfsVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HTTPGetAction).DeepCopyInto(out.(*HTTPGetAction)) + return nil + }, InType: reflect.TypeOf(&HTTPGetAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HTTPHeader).DeepCopyInto(out.(*HTTPHeader)) + return nil + }, InType: reflect.TypeOf(&HTTPHeader{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Handler).DeepCopyInto(out.(*Handler)) + return nil + }, InType: reflect.TypeOf(&Handler{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HostAlias).DeepCopyInto(out.(*HostAlias)) + return nil + }, InType: reflect.TypeOf(&HostAlias{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HostPathVolumeSource).DeepCopyInto(out.(*HostPathVolumeSource)) + return nil + }, InType: reflect.TypeOf(&HostPathVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ISCSIVolumeSource).DeepCopyInto(out.(*ISCSIVolumeSource)) + return nil + }, InType: reflect.TypeOf(&ISCSIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*KeyToPath).DeepCopyInto(out.(*KeyToPath)) + return nil + }, InType: reflect.TypeOf(&KeyToPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Lifecycle).DeepCopyInto(out.(*Lifecycle)) + return nil + }, InType: reflect.TypeOf(&Lifecycle{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LimitRange).DeepCopyInto(out.(*LimitRange)) + return nil + }, InType: reflect.TypeOf(&LimitRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LimitRangeItem).DeepCopyInto(out.(*LimitRangeItem)) + return nil + }, InType: reflect.TypeOf(&LimitRangeItem{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LimitRangeList).DeepCopyInto(out.(*LimitRangeList)) + return nil + }, InType: reflect.TypeOf(&LimitRangeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LimitRangeSpec).DeepCopyInto(out.(*LimitRangeSpec)) + return nil + }, InType: reflect.TypeOf(&LimitRangeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*List).DeepCopyInto(out.(*List)) + return nil + }, InType: reflect.TypeOf(&List{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ListOptions).DeepCopyInto(out.(*ListOptions)) + return nil + }, InType: reflect.TypeOf(&ListOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LoadBalancerIngress).DeepCopyInto(out.(*LoadBalancerIngress)) + return nil + }, InType: reflect.TypeOf(&LoadBalancerIngress{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LoadBalancerStatus).DeepCopyInto(out.(*LoadBalancerStatus)) + return nil + }, InType: reflect.TypeOf(&LoadBalancerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LocalObjectReference).DeepCopyInto(out.(*LocalObjectReference)) + return nil + }, InType: reflect.TypeOf(&LocalObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LocalVolumeSource).DeepCopyInto(out.(*LocalVolumeSource)) + return nil + }, InType: reflect.TypeOf(&LocalVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NFSVolumeSource).DeepCopyInto(out.(*NFSVolumeSource)) + return nil + }, InType: reflect.TypeOf(&NFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Namespace).DeepCopyInto(out.(*Namespace)) + return nil + }, InType: reflect.TypeOf(&Namespace{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NamespaceList).DeepCopyInto(out.(*NamespaceList)) + return nil + }, InType: reflect.TypeOf(&NamespaceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NamespaceSpec).DeepCopyInto(out.(*NamespaceSpec)) + return nil + }, InType: reflect.TypeOf(&NamespaceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NamespaceStatus).DeepCopyInto(out.(*NamespaceStatus)) + return nil + }, InType: reflect.TypeOf(&NamespaceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Node).DeepCopyInto(out.(*Node)) + return nil + }, InType: reflect.TypeOf(&Node{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeAddress).DeepCopyInto(out.(*NodeAddress)) + return nil + }, InType: reflect.TypeOf(&NodeAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeAffinity).DeepCopyInto(out.(*NodeAffinity)) + return nil + }, InType: reflect.TypeOf(&NodeAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeCondition).DeepCopyInto(out.(*NodeCondition)) + return nil + }, InType: reflect.TypeOf(&NodeCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeConfigSource).DeepCopyInto(out.(*NodeConfigSource)) + return nil + }, InType: reflect.TypeOf(&NodeConfigSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeDaemonEndpoints).DeepCopyInto(out.(*NodeDaemonEndpoints)) + return nil + }, InType: reflect.TypeOf(&NodeDaemonEndpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeList).DeepCopyInto(out.(*NodeList)) + return nil + }, InType: reflect.TypeOf(&NodeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeProxyOptions).DeepCopyInto(out.(*NodeProxyOptions)) + return nil + }, InType: reflect.TypeOf(&NodeProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeResources).DeepCopyInto(out.(*NodeResources)) + return nil + }, InType: reflect.TypeOf(&NodeResources{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeSelector).DeepCopyInto(out.(*NodeSelector)) + return nil + }, InType: reflect.TypeOf(&NodeSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeSelectorRequirement).DeepCopyInto(out.(*NodeSelectorRequirement)) + return nil + }, InType: reflect.TypeOf(&NodeSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeSelectorTerm).DeepCopyInto(out.(*NodeSelectorTerm)) + return nil + }, InType: reflect.TypeOf(&NodeSelectorTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeSpec).DeepCopyInto(out.(*NodeSpec)) + return nil + }, InType: reflect.TypeOf(&NodeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeStatus).DeepCopyInto(out.(*NodeStatus)) + return nil + }, InType: reflect.TypeOf(&NodeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NodeSystemInfo).DeepCopyInto(out.(*NodeSystemInfo)) + return nil + }, InType: reflect.TypeOf(&NodeSystemInfo{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectFieldSelector).DeepCopyInto(out.(*ObjectFieldSelector)) + return nil + }, InType: reflect.TypeOf(&ObjectFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectMeta).DeepCopyInto(out.(*ObjectMeta)) + return nil + }, InType: reflect.TypeOf(&ObjectMeta{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectReference).DeepCopyInto(out.(*ObjectReference)) + return nil + }, InType: reflect.TypeOf(&ObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolume).DeepCopyInto(out.(*PersistentVolume)) + return nil + }, InType: reflect.TypeOf(&PersistentVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeClaim).DeepCopyInto(out.(*PersistentVolumeClaim)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeClaim{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeClaimCondition).DeepCopyInto(out.(*PersistentVolumeClaimCondition)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeClaimCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeClaimList).DeepCopyInto(out.(*PersistentVolumeClaimList)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeClaimList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeClaimSpec).DeepCopyInto(out.(*PersistentVolumeClaimSpec)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeClaimStatus).DeepCopyInto(out.(*PersistentVolumeClaimStatus)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeClaimVolumeSource).DeepCopyInto(out.(*PersistentVolumeClaimVolumeSource)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeList).DeepCopyInto(out.(*PersistentVolumeList)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeSource).DeepCopyInto(out.(*PersistentVolumeSource)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeSpec).DeepCopyInto(out.(*PersistentVolumeSpec)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PersistentVolumeStatus).DeepCopyInto(out.(*PersistentVolumeStatus)) + return nil + }, InType: reflect.TypeOf(&PersistentVolumeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PhotonPersistentDiskVolumeSource).DeepCopyInto(out.(*PhotonPersistentDiskVolumeSource)) + return nil + }, InType: reflect.TypeOf(&PhotonPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Pod).DeepCopyInto(out.(*Pod)) + return nil + }, InType: reflect.TypeOf(&Pod{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodAffinity).DeepCopyInto(out.(*PodAffinity)) + return nil + }, InType: reflect.TypeOf(&PodAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodAffinityTerm).DeepCopyInto(out.(*PodAffinityTerm)) + return nil + }, InType: reflect.TypeOf(&PodAffinityTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodAntiAffinity).DeepCopyInto(out.(*PodAntiAffinity)) + return nil + }, InType: reflect.TypeOf(&PodAntiAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodAttachOptions).DeepCopyInto(out.(*PodAttachOptions)) + return nil + }, InType: reflect.TypeOf(&PodAttachOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodCondition).DeepCopyInto(out.(*PodCondition)) + return nil + }, InType: reflect.TypeOf(&PodCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodExecOptions).DeepCopyInto(out.(*PodExecOptions)) + return nil + }, InType: reflect.TypeOf(&PodExecOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodList).DeepCopyInto(out.(*PodList)) + return nil + }, InType: reflect.TypeOf(&PodList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodLogOptions).DeepCopyInto(out.(*PodLogOptions)) + return nil + }, InType: reflect.TypeOf(&PodLogOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodPortForwardOptions).DeepCopyInto(out.(*PodPortForwardOptions)) + return nil + }, InType: reflect.TypeOf(&PodPortForwardOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodProxyOptions).DeepCopyInto(out.(*PodProxyOptions)) + return nil + }, InType: reflect.TypeOf(&PodProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodSecurityContext).DeepCopyInto(out.(*PodSecurityContext)) + return nil + }, InType: reflect.TypeOf(&PodSecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodSignature).DeepCopyInto(out.(*PodSignature)) + return nil + }, InType: reflect.TypeOf(&PodSignature{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodSpec).DeepCopyInto(out.(*PodSpec)) + return nil + }, InType: reflect.TypeOf(&PodSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodStatus).DeepCopyInto(out.(*PodStatus)) + return nil + }, InType: reflect.TypeOf(&PodStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodStatusResult).DeepCopyInto(out.(*PodStatusResult)) + return nil + }, InType: reflect.TypeOf(&PodStatusResult{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodTemplate).DeepCopyInto(out.(*PodTemplate)) + return nil + }, InType: reflect.TypeOf(&PodTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodTemplateList).DeepCopyInto(out.(*PodTemplateList)) + return nil + }, InType: reflect.TypeOf(&PodTemplateList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodTemplateSpec).DeepCopyInto(out.(*PodTemplateSpec)) + return nil + }, InType: reflect.TypeOf(&PodTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PortworxVolumeSource).DeepCopyInto(out.(*PortworxVolumeSource)) + return nil + }, InType: reflect.TypeOf(&PortworxVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Preconditions).DeepCopyInto(out.(*Preconditions)) + return nil + }, InType: reflect.TypeOf(&Preconditions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PreferAvoidPodsEntry).DeepCopyInto(out.(*PreferAvoidPodsEntry)) + return nil + }, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PreferredSchedulingTerm).DeepCopyInto(out.(*PreferredSchedulingTerm)) + return nil + }, InType: reflect.TypeOf(&PreferredSchedulingTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Probe).DeepCopyInto(out.(*Probe)) + return nil + }, InType: reflect.TypeOf(&Probe{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ProjectedVolumeSource).DeepCopyInto(out.(*ProjectedVolumeSource)) + return nil + }, InType: reflect.TypeOf(&ProjectedVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*QuobyteVolumeSource).DeepCopyInto(out.(*QuobyteVolumeSource)) + return nil + }, InType: reflect.TypeOf(&QuobyteVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RBDVolumeSource).DeepCopyInto(out.(*RBDVolumeSource)) + return nil + }, InType: reflect.TypeOf(&RBDVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RangeAllocation).DeepCopyInto(out.(*RangeAllocation)) + return nil + }, InType: reflect.TypeOf(&RangeAllocation{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicationController).DeepCopyInto(out.(*ReplicationController)) + return nil + }, InType: reflect.TypeOf(&ReplicationController{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicationControllerCondition).DeepCopyInto(out.(*ReplicationControllerCondition)) + return nil + }, InType: reflect.TypeOf(&ReplicationControllerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicationControllerList).DeepCopyInto(out.(*ReplicationControllerList)) + return nil + }, InType: reflect.TypeOf(&ReplicationControllerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicationControllerSpec).DeepCopyInto(out.(*ReplicationControllerSpec)) + return nil + }, InType: reflect.TypeOf(&ReplicationControllerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicationControllerStatus).DeepCopyInto(out.(*ReplicationControllerStatus)) + return nil + }, InType: reflect.TypeOf(&ReplicationControllerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceFieldSelector).DeepCopyInto(out.(*ResourceFieldSelector)) + return nil + }, InType: reflect.TypeOf(&ResourceFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceQuota).DeepCopyInto(out.(*ResourceQuota)) + return nil + }, InType: reflect.TypeOf(&ResourceQuota{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceQuotaList).DeepCopyInto(out.(*ResourceQuotaList)) + return nil + }, InType: reflect.TypeOf(&ResourceQuotaList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceQuotaSpec).DeepCopyInto(out.(*ResourceQuotaSpec)) + return nil + }, InType: reflect.TypeOf(&ResourceQuotaSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceQuotaStatus).DeepCopyInto(out.(*ResourceQuotaStatus)) + return nil + }, InType: reflect.TypeOf(&ResourceQuotaStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ResourceRequirements).DeepCopyInto(out.(*ResourceRequirements)) + return nil + }, InType: reflect.TypeOf(&ResourceRequirements{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SELinuxOptions).DeepCopyInto(out.(*SELinuxOptions)) + return nil + }, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleIOVolumeSource).DeepCopyInto(out.(*ScaleIOVolumeSource)) + return nil + }, InType: reflect.TypeOf(&ScaleIOVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Secret).DeepCopyInto(out.(*Secret)) + return nil + }, InType: reflect.TypeOf(&Secret{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecretEnvSource).DeepCopyInto(out.(*SecretEnvSource)) + return nil + }, InType: reflect.TypeOf(&SecretEnvSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecretKeySelector).DeepCopyInto(out.(*SecretKeySelector)) + return nil + }, InType: reflect.TypeOf(&SecretKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecretList).DeepCopyInto(out.(*SecretList)) + return nil + }, InType: reflect.TypeOf(&SecretList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecretProjection).DeepCopyInto(out.(*SecretProjection)) + return nil + }, InType: reflect.TypeOf(&SecretProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecretReference).DeepCopyInto(out.(*SecretReference)) + return nil + }, InType: reflect.TypeOf(&SecretReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecretVolumeSource).DeepCopyInto(out.(*SecretVolumeSource)) + return nil + }, InType: reflect.TypeOf(&SecretVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SecurityContext).DeepCopyInto(out.(*SecurityContext)) + return nil + }, InType: reflect.TypeOf(&SecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SerializedReference).DeepCopyInto(out.(*SerializedReference)) + return nil + }, InType: reflect.TypeOf(&SerializedReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Service).DeepCopyInto(out.(*Service)) + return nil + }, InType: reflect.TypeOf(&Service{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceAccount).DeepCopyInto(out.(*ServiceAccount)) + return nil + }, InType: reflect.TypeOf(&ServiceAccount{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceAccountList).DeepCopyInto(out.(*ServiceAccountList)) + return nil + }, InType: reflect.TypeOf(&ServiceAccountList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceList).DeepCopyInto(out.(*ServiceList)) + return nil + }, InType: reflect.TypeOf(&ServiceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServicePort).DeepCopyInto(out.(*ServicePort)) + return nil + }, InType: reflect.TypeOf(&ServicePort{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceProxyOptions).DeepCopyInto(out.(*ServiceProxyOptions)) + return nil + }, InType: reflect.TypeOf(&ServiceProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceSpec).DeepCopyInto(out.(*ServiceSpec)) + return nil + }, InType: reflect.TypeOf(&ServiceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServiceStatus).DeepCopyInto(out.(*ServiceStatus)) + return nil + }, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SessionAffinityConfig).DeepCopyInto(out.(*SessionAffinityConfig)) + return nil + }, InType: reflect.TypeOf(&SessionAffinityConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StorageOSPersistentVolumeSource).DeepCopyInto(out.(*StorageOSPersistentVolumeSource)) + return nil + }, InType: reflect.TypeOf(&StorageOSPersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StorageOSVolumeSource).DeepCopyInto(out.(*StorageOSVolumeSource)) + return nil + }, InType: reflect.TypeOf(&StorageOSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Sysctl).DeepCopyInto(out.(*Sysctl)) + return nil + }, InType: reflect.TypeOf(&Sysctl{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TCPSocketAction).DeepCopyInto(out.(*TCPSocketAction)) + return nil + }, InType: reflect.TypeOf(&TCPSocketAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Taint).DeepCopyInto(out.(*Taint)) + return nil + }, InType: reflect.TypeOf(&Taint{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Toleration).DeepCopyInto(out.(*Toleration)) + return nil + }, InType: reflect.TypeOf(&Toleration{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Volume).DeepCopyInto(out.(*Volume)) + return nil + }, InType: reflect.TypeOf(&Volume{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*VolumeMount).DeepCopyInto(out.(*VolumeMount)) + return nil + }, InType: reflect.TypeOf(&VolumeMount{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*VolumeProjection).DeepCopyInto(out.(*VolumeProjection)) + return nil + }, InType: reflect.TypeOf(&VolumeProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*VolumeSource).DeepCopyInto(out.(*VolumeSource)) + return nil + }, InType: reflect.TypeOf(&VolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*VsphereVirtualDiskVolumeSource).DeepCopyInto(out.(*VsphereVirtualDiskVolumeSource)) + return nil + }, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*WeightedPodAffinityTerm).DeepCopyInto(out.(*WeightedPodAffinityTerm)) + return nil + }, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AWSElasticBlockStoreVolumeSource) DeepCopyInto(out *AWSElasticBlockStoreVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSElasticBlockStoreVolumeSource. +func (in *AWSElasticBlockStoreVolumeSource) DeepCopy() *AWSElasticBlockStoreVolumeSource { + if in == nil { + return nil + } + out := new(AWSElasticBlockStoreVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Affinity) DeepCopyInto(out *Affinity) { + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + if *in == nil { + *out = nil + } else { + *out = new(NodeAffinity) + (*in).DeepCopyInto(*out) + } + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + if *in == nil { + *out = nil + } else { + *out = new(PodAffinity) + (*in).DeepCopyInto(*out) + } + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + if *in == nil { + *out = nil + } else { + *out = new(PodAntiAffinity) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Affinity. +func (in *Affinity) DeepCopy() *Affinity { + if in == nil { + return nil + } + out := new(Affinity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AttachedVolume) DeepCopyInto(out *AttachedVolume) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AttachedVolume. +func (in *AttachedVolume) DeepCopy() *AttachedVolume { + if in == nil { + return nil + } + out := new(AttachedVolume) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AvoidPods) DeepCopyInto(out *AvoidPods) { + *out = *in + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]PreferAvoidPodsEntry, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AvoidPods. +func (in *AvoidPods) DeepCopy() *AvoidPods { + if in == nil { + return nil + } + out := new(AvoidPods) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureDiskVolumeSource) DeepCopyInto(out *AzureDiskVolumeSource) { + *out = *in + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + if *in == nil { + *out = nil + } else { + *out = new(AzureDataDiskCachingMode) + **out = **in + } + } + if in.FSType != nil { + in, out := &in.FSType, &out.FSType + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + if *in == nil { + *out = nil + } else { + *out = new(AzureDataDiskKind) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureDiskVolumeSource. +func (in *AzureDiskVolumeSource) DeepCopy() *AzureDiskVolumeSource { + if in == nil { + return nil + } + out := new(AzureDiskVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureFilePersistentVolumeSource) DeepCopyInto(out *AzureFilePersistentVolumeSource) { + *out = *in + if in.SecretNamespace != nil { + in, out := &in.SecretNamespace, &out.SecretNamespace + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureFilePersistentVolumeSource. +func (in *AzureFilePersistentVolumeSource) DeepCopy() *AzureFilePersistentVolumeSource { + if in == nil { + return nil + } + out := new(AzureFilePersistentVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AzureFileVolumeSource) DeepCopyInto(out *AzureFileVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureFileVolumeSource. +func (in *AzureFileVolumeSource) DeepCopy() *AzureFileVolumeSource { + if in == nil { + return nil + } + out := new(AzureFileVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Binding) DeepCopyInto(out *Binding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Target = in.Target + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binding. +func (in *Binding) DeepCopy() *Binding { + if in == nil { + return nil + } + out := new(Binding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Binding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Capabilities) DeepCopyInto(out *Capabilities) { + *out = *in + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]Capability, len(*in)) + copy(*out, *in) + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]Capability, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Capabilities. +func (in *Capabilities) DeepCopy() *Capabilities { + if in == nil { + return nil + } + out := new(Capabilities) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CephFSPersistentVolumeSource) DeepCopyInto(out *CephFSPersistentVolumeSource) { + *out = *in + if in.Monitors != nil { + in, out := &in.Monitors, &out.Monitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CephFSPersistentVolumeSource. +func (in *CephFSPersistentVolumeSource) DeepCopy() *CephFSPersistentVolumeSource { + if in == nil { + return nil + } + out := new(CephFSPersistentVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CephFSVolumeSource) DeepCopyInto(out *CephFSVolumeSource) { + *out = *in + if in.Monitors != nil { + in, out := &in.Monitors, &out.Monitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CephFSVolumeSource. +func (in *CephFSVolumeSource) DeepCopy() *CephFSVolumeSource { + if in == nil { + return nil + } + out := new(CephFSVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CinderVolumeSource) DeepCopyInto(out *CinderVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CinderVolumeSource. +func (in *CinderVolumeSource) DeepCopy() *CinderVolumeSource { + if in == nil { + return nil + } + out := new(CinderVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) { + *out = *in + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientIPConfig. +func (in *ClientIPConfig) DeepCopy() *ClientIPConfig { + if in == nil { + return nil + } + out := new(ClientIPConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentCondition) DeepCopyInto(out *ComponentCondition) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentCondition. +func (in *ComponentCondition) DeepCopy() *ComponentCondition { + if in == nil { + return nil + } + out := new(ComponentCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentStatus) DeepCopyInto(out *ComponentStatus) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ComponentCondition, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentStatus. +func (in *ComponentStatus) DeepCopy() *ComponentStatus { + if in == nil { + return nil + } + out := new(ComponentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ComponentStatus) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentStatusList) DeepCopyInto(out *ComponentStatusList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentStatusList. +func (in *ComponentStatusList) DeepCopy() *ComponentStatusList { + if in == nil { + return nil + } + out := new(ComponentStatusList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ComponentStatusList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigMap) DeepCopyInto(out *ConfigMap) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMap. +func (in *ConfigMap) DeepCopy() *ConfigMap { + if in == nil { + return nil + } + out := new(ConfigMap) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigMap) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigMapEnvSource) DeepCopyInto(out *ConfigMapEnvSource) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapEnvSource. +func (in *ConfigMapEnvSource) DeepCopy() *ConfigMapEnvSource { + if in == nil { + return nil + } + out := new(ConfigMapEnvSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapKeySelector. +func (in *ConfigMapKeySelector) DeepCopy() *ConfigMapKeySelector { + if in == nil { + return nil + } + out := new(ConfigMapKeySelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigMapList) DeepCopyInto(out *ConfigMapList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapList. +func (in *ConfigMapList) DeepCopy() *ConfigMapList { + if in == nil { + return nil + } + out := new(ConfigMapList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigMapList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigMapProjection) DeepCopyInto(out *ConfigMapProjection) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapProjection. +func (in *ConfigMapProjection) DeepCopy() *ConfigMapProjection { + if in == nil { + return nil + } + out := new(ConfigMapProjection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigMapVolumeSource) DeepCopyInto(out *ConfigMapVolumeSource) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapVolumeSource. +func (in *ConfigMapVolumeSource) DeepCopy() *ConfigMapVolumeSource { + if in == nil { + return nil + } + out := new(ConfigMapVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Container) DeepCopyInto(out *Container) { + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ContainerPort, len(*in)) + copy(*out, *in) + } + if in.EnvFrom != nil { + in, out := &in.EnvFrom, &out.EnvFrom + *out = make([]EnvFromSource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.Resources.DeepCopyInto(&out.Resources) + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]VolumeMount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + if *in == nil { + *out = nil + } else { + *out = new(Probe) + (*in).DeepCopyInto(*out) + } + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + if *in == nil { + *out = nil + } else { + *out = new(Probe) + (*in).DeepCopyInto(*out) + } + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + if *in == nil { + *out = nil + } else { + *out = new(Lifecycle) + (*in).DeepCopyInto(*out) + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + if *in == nil { + *out = nil + } else { + *out = new(SecurityContext) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Container. +func (in *Container) DeepCopy() *Container { + if in == nil { + return nil + } + out := new(Container) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerImage) DeepCopyInto(out *ContainerImage) { + *out = *in + if in.Names != nil { + in, out := &in.Names, &out.Names + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerImage. +func (in *ContainerImage) DeepCopy() *ContainerImage { + if in == nil { + return nil + } + out := new(ContainerImage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerPort) DeepCopyInto(out *ContainerPort) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerPort. +func (in *ContainerPort) DeepCopy() *ContainerPort { + if in == nil { + return nil + } + out := new(ContainerPort) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerState) DeepCopyInto(out *ContainerState) { + *out = *in + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + if *in == nil { + *out = nil + } else { + *out = new(ContainerStateWaiting) + **out = **in + } + } + if in.Running != nil { + in, out := &in.Running, &out.Running + if *in == nil { + *out = nil + } else { + *out = new(ContainerStateRunning) + (*in).DeepCopyInto(*out) + } + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + if *in == nil { + *out = nil + } else { + *out = new(ContainerStateTerminated) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerState. +func (in *ContainerState) DeepCopy() *ContainerState { + if in == nil { + return nil + } + out := new(ContainerState) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerStateRunning) DeepCopyInto(out *ContainerStateRunning) { + *out = *in + in.StartedAt.DeepCopyInto(&out.StartedAt) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerStateRunning. +func (in *ContainerStateRunning) DeepCopy() *ContainerStateRunning { + if in == nil { + return nil + } + out := new(ContainerStateRunning) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerStateTerminated) DeepCopyInto(out *ContainerStateTerminated) { + *out = *in + in.StartedAt.DeepCopyInto(&out.StartedAt) + in.FinishedAt.DeepCopyInto(&out.FinishedAt) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerStateTerminated. +func (in *ContainerStateTerminated) DeepCopy() *ContainerStateTerminated { + if in == nil { + return nil + } + out := new(ContainerStateTerminated) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerStateWaiting) DeepCopyInto(out *ContainerStateWaiting) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerStateWaiting. +func (in *ContainerStateWaiting) DeepCopy() *ContainerStateWaiting { + if in == nil { + return nil + } + out := new(ContainerStateWaiting) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerStatus) DeepCopyInto(out *ContainerStatus) { + *out = *in + in.State.DeepCopyInto(&out.State) + in.LastTerminationState.DeepCopyInto(&out.LastTerminationState) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerStatus. +func (in *ContainerStatus) DeepCopy() *ContainerStatus { + if in == nil { + return nil + } + out := new(ContainerStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonEndpoint) DeepCopyInto(out *DaemonEndpoint) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonEndpoint. +func (in *DaemonEndpoint) DeepCopy() *DaemonEndpoint { + if in == nil { + return nil + } + out := new(DaemonEndpoint) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeleteOptions) DeepCopyInto(out *DeleteOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + if *in == nil { + *out = nil + } else { + *out = new(Preconditions) + (*in).DeepCopyInto(*out) + } + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.PropagationPolicy != nil { + in, out := &in.PropagationPolicy, &out.PropagationPolicy + if *in == nil { + *out = nil + } else { + *out = new(DeletionPropagation) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeleteOptions. +func (in *DeleteOptions) DeepCopy() *DeleteOptions { + if in == nil { + return nil + } + out := new(DeleteOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeleteOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DownwardAPIProjection) DeepCopyInto(out *DownwardAPIProjection) { + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownwardAPIProjection. +func (in *DownwardAPIProjection) DeepCopy() *DownwardAPIProjection { + if in == nil { + return nil + } + out := new(DownwardAPIProjection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DownwardAPIVolumeFile) DeepCopyInto(out *DownwardAPIVolumeFile) { + *out = *in + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + if *in == nil { + *out = nil + } else { + *out = new(ObjectFieldSelector) + **out = **in + } + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + if *in == nil { + *out = nil + } else { + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) + } + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownwardAPIVolumeFile. +func (in *DownwardAPIVolumeFile) DeepCopy() *DownwardAPIVolumeFile { + if in == nil { + return nil + } + out := new(DownwardAPIVolumeFile) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DownwardAPIVolumeSource) DeepCopyInto(out *DownwardAPIVolumeSource) { + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownwardAPIVolumeSource. +func (in *DownwardAPIVolumeSource) DeepCopy() *DownwardAPIVolumeSource { + if in == nil { + return nil + } + out := new(DownwardAPIVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { + *out = *in + if in.SizeLimit != nil { + in, out := &in.SizeLimit, &out.SizeLimit + if *in == nil { + *out = nil + } else { + *out = new(resource.Quantity) + **out = (*in).DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmptyDirVolumeSource. +func (in *EmptyDirVolumeSource) DeepCopy() *EmptyDirVolumeSource { + if in == nil { + return nil + } + out := new(EmptyDirVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EndpointAddress) DeepCopyInto(out *EndpointAddress) { + *out = *in + if in.NodeName != nil { + in, out := &in.NodeName, &out.NodeName + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointAddress. +func (in *EndpointAddress) DeepCopy() *EndpointAddress { + if in == nil { + return nil + } + out := new(EndpointAddress) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EndpointPort) DeepCopyInto(out *EndpointPort) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointPort. +func (in *EndpointPort) DeepCopy() *EndpointPort { + if in == nil { + return nil + } + out := new(EndpointPort) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EndpointSubset) DeepCopyInto(out *EndpointSubset) { + *out = *in + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]EndpointPort, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointSubset. +func (in *EndpointSubset) DeepCopy() *EndpointSubset { + if in == nil { + return nil + } + out := new(EndpointSubset) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Endpoints) DeepCopyInto(out *Endpoints) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]EndpointSubset, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoints. +func (in *Endpoints) DeepCopy() *Endpoints { + if in == nil { + return nil + } + out := new(Endpoints) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Endpoints) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EndpointsList) DeepCopyInto(out *EndpointsList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointsList. +func (in *EndpointsList) DeepCopy() *EndpointsList { + if in == nil { + return nil + } + out := new(EndpointsList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *EndpointsList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvFromSource) DeepCopyInto(out *EnvFromSource) { + *out = *in + if in.ConfigMapRef != nil { + in, out := &in.ConfigMapRef, &out.ConfigMapRef + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapEnvSource) + (*in).DeepCopyInto(*out) + } + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretEnvSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvFromSource. +func (in *EnvFromSource) DeepCopy() *EnvFromSource { + if in == nil { + return nil + } + out := new(EnvFromSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvVar) DeepCopyInto(out *EnvVar) { + *out = *in + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + if *in == nil { + *out = nil + } else { + *out = new(EnvVarSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVar. +func (in *EnvVar) DeepCopy() *EnvVar { + if in == nil { + return nil + } + out := new(EnvVar) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvVarSource) DeepCopyInto(out *EnvVarSource) { + *out = *in + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + if *in == nil { + *out = nil + } else { + *out = new(ObjectFieldSelector) + **out = **in + } + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + if *in == nil { + *out = nil + } else { + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) + } + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapKeySelector) + (*in).DeepCopyInto(*out) + } + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + if *in == nil { + *out = nil + } else { + *out = new(SecretKeySelector) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVarSource. +func (in *EnvVarSource) DeepCopy() *EnvVarSource { + if in == nil { + return nil + } + out := new(EnvVarSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Event) DeepCopyInto(out *Event) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.InvolvedObject = in.InvolvedObject + out.Source = in.Source + in.FirstTimestamp.DeepCopyInto(&out.FirstTimestamp) + in.LastTimestamp.DeepCopyInto(&out.LastTimestamp) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Event. +func (in *Event) DeepCopy() *Event { + if in == nil { + return nil + } + out := new(Event) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Event) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EventList) DeepCopyInto(out *EventList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventList. +func (in *EventList) DeepCopy() *EventList { + if in == nil { + return nil + } + out := new(EventList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *EventList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EventSource) DeepCopyInto(out *EventSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventSource. +func (in *EventSource) DeepCopy() *EventSource { + if in == nil { + return nil + } + out := new(EventSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecAction) DeepCopyInto(out *ExecAction) { + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecAction. +func (in *ExecAction) DeepCopy() *ExecAction { + if in == nil { + return nil + } + out := new(ExecAction) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FCVolumeSource) DeepCopyInto(out *FCVolumeSource) { + *out = *in + if in.TargetWWNs != nil { + in, out := &in.TargetWWNs, &out.TargetWWNs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Lun != nil { + in, out := &in.Lun, &out.Lun + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.WWIDs != nil { + in, out := &in.WWIDs, &out.WWIDs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FCVolumeSource. +func (in *FCVolumeSource) DeepCopy() *FCVolumeSource { + if in == nil { + return nil + } + out := new(FCVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexVolumeSource) DeepCopyInto(out *FlexVolumeSource) { + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexVolumeSource. +func (in *FlexVolumeSource) DeepCopy() *FlexVolumeSource { + if in == nil { + return nil + } + out := new(FlexVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlockerVolumeSource) DeepCopyInto(out *FlockerVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlockerVolumeSource. +func (in *FlockerVolumeSource) DeepCopy() *FlockerVolumeSource { + if in == nil { + return nil + } + out := new(FlockerVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GCEPersistentDiskVolumeSource) DeepCopyInto(out *GCEPersistentDiskVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCEPersistentDiskVolumeSource. +func (in *GCEPersistentDiskVolumeSource) DeepCopy() *GCEPersistentDiskVolumeSource { + if in == nil { + return nil + } + out := new(GCEPersistentDiskVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GitRepoVolumeSource) DeepCopyInto(out *GitRepoVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitRepoVolumeSource. +func (in *GitRepoVolumeSource) DeepCopy() *GitRepoVolumeSource { + if in == nil { + return nil + } + out := new(GitRepoVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlusterfsVolumeSource) DeepCopyInto(out *GlusterfsVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlusterfsVolumeSource. +func (in *GlusterfsVolumeSource) DeepCopy() *GlusterfsVolumeSource { + if in == nil { + return nil + } + out := new(GlusterfsVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPGetAction) DeepCopyInto(out *HTTPGetAction) { + *out = *in + out.Port = in.Port + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]HTTPHeader, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPGetAction. +func (in *HTTPGetAction) DeepCopy() *HTTPGetAction { + if in == nil { + return nil + } + out := new(HTTPGetAction) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPHeader) DeepCopyInto(out *HTTPHeader) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPHeader. +func (in *HTTPHeader) DeepCopy() *HTTPHeader { + if in == nil { + return nil + } + out := new(HTTPHeader) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Handler) DeepCopyInto(out *Handler) { + *out = *in + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + if *in == nil { + *out = nil + } else { + *out = new(ExecAction) + (*in).DeepCopyInto(*out) + } + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + if *in == nil { + *out = nil + } else { + *out = new(HTTPGetAction) + (*in).DeepCopyInto(*out) + } + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + if *in == nil { + *out = nil + } else { + *out = new(TCPSocketAction) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Handler. +func (in *Handler) DeepCopy() *Handler { + if in == nil { + return nil + } + out := new(Handler) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HostAlias) DeepCopyInto(out *HostAlias) { + *out = *in + if in.Hostnames != nil { + in, out := &in.Hostnames, &out.Hostnames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostAlias. +func (in *HostAlias) DeepCopy() *HostAlias { + if in == nil { + return nil + } + out := new(HostAlias) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HostPathVolumeSource) DeepCopyInto(out *HostPathVolumeSource) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + if *in == nil { + *out = nil + } else { + *out = new(HostPathType) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostPathVolumeSource. +func (in *HostPathVolumeSource) DeepCopy() *HostPathVolumeSource { + if in == nil { + return nil + } + out := new(HostPathVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ISCSIVolumeSource) DeepCopyInto(out *ISCSIVolumeSource) { + *out = *in + if in.Portals != nil { + in, out := &in.Portals, &out.Portals + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } + } + if in.InitiatorName != nil { + in, out := &in.InitiatorName, &out.InitiatorName + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ISCSIVolumeSource. +func (in *ISCSIVolumeSource) DeepCopy() *ISCSIVolumeSource { + if in == nil { + return nil + } + out := new(ISCSIVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyToPath) DeepCopyInto(out *KeyToPath) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyToPath. +func (in *KeyToPath) DeepCopy() *KeyToPath { + if in == nil { + return nil + } + out := new(KeyToPath) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Lifecycle) DeepCopyInto(out *Lifecycle) { + *out = *in + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + if *in == nil { + *out = nil + } else { + *out = new(Handler) + (*in).DeepCopyInto(*out) + } + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + if *in == nil { + *out = nil + } else { + *out = new(Handler) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Lifecycle. +func (in *Lifecycle) DeepCopy() *Lifecycle { + if in == nil { + return nil + } + out := new(Lifecycle) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LimitRange) DeepCopyInto(out *LimitRange) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitRange. +func (in *LimitRange) DeepCopy() *LimitRange { + if in == nil { + return nil + } + out := new(LimitRange) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LimitRange) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LimitRangeItem) DeepCopyInto(out *LimitRangeItem) { + *out = *in + if in.Max != nil { + in, out := &in.Max, &out.Max + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Min != nil { + in, out := &in.Min, &out.Min + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.DefaultRequest != nil { + in, out := &in.DefaultRequest, &out.DefaultRequest + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.MaxLimitRequestRatio != nil { + in, out := &in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitRangeItem. +func (in *LimitRangeItem) DeepCopy() *LimitRangeItem { + if in == nil { + return nil + } + out := new(LimitRangeItem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LimitRangeList) DeepCopyInto(out *LimitRangeList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitRangeList. +func (in *LimitRangeList) DeepCopy() *LimitRangeList { + if in == nil { + return nil + } + out := new(LimitRangeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *LimitRangeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LimitRangeSpec) DeepCopyInto(out *LimitRangeSpec) { + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]LimitRangeItem, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LimitRangeSpec. +func (in *LimitRangeSpec) DeepCopy() *LimitRangeSpec { + if in == nil { + return nil + } + out := new(LimitRangeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *List) DeepCopyInto(out *List) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new List. +func (in *List) DeepCopy() *List { + if in == nil { + return nil + } + out := new(List) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *List) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ListOptions) DeepCopyInto(out *ListOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListOptions. +func (in *ListOptions) DeepCopy() *ListOptions { + if in == nil { + return nil + } + out := new(ListOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ListOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadBalancerIngress) DeepCopyInto(out *LoadBalancerIngress) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerIngress. +func (in *LoadBalancerIngress) DeepCopy() *LoadBalancerIngress { + if in == nil { + return nil + } + out := new(LoadBalancerIngress) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadBalancerStatus) DeepCopyInto(out *LoadBalancerStatus) { + *out = *in + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]LoadBalancerIngress, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerStatus. +func (in *LoadBalancerStatus) DeepCopy() *LoadBalancerStatus { + if in == nil { + return nil + } + out := new(LoadBalancerStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalObjectReference) DeepCopyInto(out *LocalObjectReference) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalObjectReference. +func (in *LocalObjectReference) DeepCopy() *LocalObjectReference { + if in == nil { + return nil + } + out := new(LocalObjectReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LocalVolumeSource) DeepCopyInto(out *LocalVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalVolumeSource. +func (in *LocalVolumeSource) DeepCopy() *LocalVolumeSource { + if in == nil { + return nil + } + out := new(LocalVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NFSVolumeSource) DeepCopyInto(out *NFSVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NFSVolumeSource. +func (in *NFSVolumeSource) DeepCopy() *NFSVolumeSource { + if in == nil { + return nil + } + out := new(NFSVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Namespace) DeepCopyInto(out *Namespace) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Namespace. +func (in *Namespace) DeepCopy() *Namespace { + if in == nil { + return nil + } + out := new(Namespace) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Namespace) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamespaceList) DeepCopyInto(out *NamespaceList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceList. +func (in *NamespaceList) DeepCopy() *NamespaceList { + if in == nil { + return nil + } + out := new(NamespaceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NamespaceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamespaceSpec) DeepCopyInto(out *NamespaceSpec) { + *out = *in + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]FinalizerName, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceSpec. +func (in *NamespaceSpec) DeepCopy() *NamespaceSpec { + if in == nil { + return nil + } + out := new(NamespaceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamespaceStatus) DeepCopyInto(out *NamespaceStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceStatus. +func (in *NamespaceStatus) DeepCopy() *NamespaceStatus { + if in == nil { + return nil + } + out := new(NamespaceStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Node) DeepCopyInto(out *Node) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node. +func (in *Node) DeepCopy() *Node { + if in == nil { + return nil + } + out := new(Node) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Node) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeAddress) DeepCopyInto(out *NodeAddress) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAddress. +func (in *NodeAddress) DeepCopy() *NodeAddress { + if in == nil { + return nil + } + out := new(NodeAddress) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeAffinity) DeepCopyInto(out *NodeAffinity) { + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + if *in == nil { + *out = nil + } else { + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]PreferredSchedulingTerm, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAffinity. +func (in *NodeAffinity) DeepCopy() *NodeAffinity { + if in == nil { + return nil + } + out := new(NodeAffinity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeCondition) DeepCopyInto(out *NodeCondition) { + *out = *in + in.LastHeartbeatTime.DeepCopyInto(&out.LastHeartbeatTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeCondition. +func (in *NodeCondition) DeepCopy() *NodeCondition { + if in == nil { + return nil + } + out := new(NodeCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeConfigSource) DeepCopyInto(out *NodeConfigSource) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.ConfigMapRef != nil { + in, out := &in.ConfigMapRef, &out.ConfigMapRef + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeConfigSource. +func (in *NodeConfigSource) DeepCopy() *NodeConfigSource { + if in == nil { + return nil + } + out := new(NodeConfigSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NodeConfigSource) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeDaemonEndpoints) DeepCopyInto(out *NodeDaemonEndpoints) { + *out = *in + out.KubeletEndpoint = in.KubeletEndpoint + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeDaemonEndpoints. +func (in *NodeDaemonEndpoints) DeepCopy() *NodeDaemonEndpoints { + if in == nil { + return nil + } + out := new(NodeDaemonEndpoints) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeList) DeepCopyInto(out *NodeList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeList. +func (in *NodeList) DeepCopy() *NodeList { + if in == nil { + return nil + } + out := new(NodeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NodeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeProxyOptions) DeepCopyInto(out *NodeProxyOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeProxyOptions. +func (in *NodeProxyOptions) DeepCopy() *NodeProxyOptions { + if in == nil { + return nil + } + out := new(NodeProxyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NodeProxyOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeResources) DeepCopyInto(out *NodeResources) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeResources. +func (in *NodeResources) DeepCopy() *NodeResources { + if in == nil { + return nil + } + out := new(NodeResources) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeSelector) DeepCopyInto(out *NodeSelector) { + *out = *in + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]NodeSelectorTerm, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSelector. +func (in *NodeSelector) DeepCopy() *NodeSelector { + if in == nil { + return nil + } + out := new(NodeSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeSelectorRequirement) DeepCopyInto(out *NodeSelectorRequirement) { + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSelectorRequirement. +func (in *NodeSelectorRequirement) DeepCopy() *NodeSelectorRequirement { + if in == nil { + return nil + } + out := new(NodeSelectorRequirement) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeSelectorTerm) DeepCopyInto(out *NodeSelectorTerm) { + *out = *in + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]NodeSelectorRequirement, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSelectorTerm. +func (in *NodeSelectorTerm) DeepCopy() *NodeSelectorTerm { + if in == nil { + return nil + } + out := new(NodeSelectorTerm) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeSpec) DeepCopyInto(out *NodeSpec) { + *out = *in + if in.Taints != nil { + in, out := &in.Taints, &out.Taints + *out = make([]Taint, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ConfigSource != nil { + in, out := &in.ConfigSource, &out.ConfigSource + if *in == nil { + *out = nil + } else { + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSpec. +func (in *NodeSpec) DeepCopy() *NodeSpec { + if in == nil { + return nil + } + out := new(NodeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeStatus) DeepCopyInto(out *NodeStatus) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Allocatable != nil { + in, out := &in.Allocatable, &out.Allocatable + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]NodeCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]NodeAddress, len(*in)) + copy(*out, *in) + } + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]UniqueVolumeName, len(*in)) + copy(*out, *in) + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]AttachedVolume, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeStatus. +func (in *NodeStatus) DeepCopy() *NodeStatus { + if in == nil { + return nil + } + out := new(NodeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeSystemInfo) DeepCopyInto(out *NodeSystemInfo) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSystemInfo. +func (in *NodeSystemInfo) DeepCopy() *NodeSystemInfo { + if in == nil { + return nil + } + out := new(NodeSystemInfo) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectFieldSelector) DeepCopyInto(out *ObjectFieldSelector) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectFieldSelector. +func (in *ObjectFieldSelector) DeepCopy() *ObjectFieldSelector { + if in == nil { + return nil + } + out := new(ObjectFieldSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { + *out = *in + in.CreationTimestamp.DeepCopyInto(&out.CreationTimestamp) + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]meta_v1.OwnerReference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Initializers) + (*in).DeepCopyInto(*out) + } + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMeta. +func (in *ObjectMeta) DeepCopy() *ObjectMeta { + if in == nil { + return nil + } + out := new(ObjectMeta) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectReference) DeepCopyInto(out *ObjectReference) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference. +func (in *ObjectReference) DeepCopy() *ObjectReference { + if in == nil { + return nil + } + out := new(ObjectReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ObjectReference) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolume) DeepCopyInto(out *PersistentVolume) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolume. +func (in *PersistentVolume) DeepCopy() *PersistentVolume { + if in == nil { + return nil + } + out := new(PersistentVolume) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PersistentVolume) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeClaim) DeepCopyInto(out *PersistentVolumeClaim) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaim. +func (in *PersistentVolumeClaim) DeepCopy() *PersistentVolumeClaim { + if in == nil { + return nil + } + out := new(PersistentVolumeClaim) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PersistentVolumeClaim) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeClaimCondition) DeepCopyInto(out *PersistentVolumeClaimCondition) { + *out = *in + in.LastProbeTime.DeepCopyInto(&out.LastProbeTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimCondition. +func (in *PersistentVolumeClaimCondition) DeepCopy() *PersistentVolumeClaimCondition { + if in == nil { + return nil + } + out := new(PersistentVolumeClaimCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeClaimList) DeepCopyInto(out *PersistentVolumeClaimList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimList. +func (in *PersistentVolumeClaimList) DeepCopy() *PersistentVolumeClaimList { + if in == nil { + return nil + } + out := new(PersistentVolumeClaimList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PersistentVolumeClaimList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeClaimSpec) DeepCopyInto(out *PersistentVolumeClaimSpec) { + *out = *in + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Resources.DeepCopyInto(&out.Resources) + if in.StorageClassName != nil { + in, out := &in.StorageClassName, &out.StorageClassName + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimSpec. +func (in *PersistentVolumeClaimSpec) DeepCopy() *PersistentVolumeClaimSpec { + if in == nil { + return nil + } + out := new(PersistentVolumeClaimSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeClaimStatus) DeepCopyInto(out *PersistentVolumeClaimStatus) { + *out = *in + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PersistentVolumeClaimCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimStatus. +func (in *PersistentVolumeClaimStatus) DeepCopy() *PersistentVolumeClaimStatus { + if in == nil { + return nil + } + out := new(PersistentVolumeClaimStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeClaimVolumeSource) DeepCopyInto(out *PersistentVolumeClaimVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimVolumeSource. +func (in *PersistentVolumeClaimVolumeSource) DeepCopy() *PersistentVolumeClaimVolumeSource { + if in == nil { + return nil + } + out := new(PersistentVolumeClaimVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeList) DeepCopyInto(out *PersistentVolumeList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeList. +func (in *PersistentVolumeList) DeepCopy() *PersistentVolumeList { + if in == nil { + return nil + } + out := new(PersistentVolumeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PersistentVolumeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { + *out = *in + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + if *in == nil { + *out = nil + } else { + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + if *in == nil { + *out = nil + } else { + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + if *in == nil { + *out = nil + } else { + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + if *in == nil { + *out = nil + } else { + *out = new(GlusterfsVolumeSource) + **out = **in + } + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + if *in == nil { + *out = nil + } else { + *out = new(NFSVolumeSource) + **out = **in + } + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + if *in == nil { + *out = nil + } else { + *out = new(RBDVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + if *in == nil { + *out = nil + } else { + *out = new(ISCSIVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + if *in == nil { + *out = nil + } else { + *out = new(CinderVolumeSource) + **out = **in + } + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + if *in == nil { + *out = nil + } else { + *out = new(CephFSPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.FC != nil { + in, out := &in.FC, &out.FC + if *in == nil { + *out = nil + } else { + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + if *in == nil { + *out = nil + } else { + *out = new(FlockerVolumeSource) + **out = **in + } + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + if *in == nil { + *out = nil + } else { + *out = new(FlexVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + if *in == nil { + *out = nil + } else { + *out = new(AzureFilePersistentVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + if *in == nil { + *out = nil + } else { + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + if *in == nil { + *out = nil + } else { + *out = new(QuobyteVolumeSource) + **out = **in + } + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + if *in == nil { + *out = nil + } else { + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.PhotonPersistentDisk != nil { + in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk + if *in == nil { + *out = nil + } else { + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } + } + if in.PortworxVolume != nil { + in, out := &in.PortworxVolume, &out.PortworxVolume + if *in == nil { + *out = nil + } else { + *out = new(PortworxVolumeSource) + **out = **in + } + } + if in.ScaleIO != nil { + in, out := &in.ScaleIO, &out.ScaleIO + if *in == nil { + *out = nil + } else { + *out = new(ScaleIOVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Local != nil { + in, out := &in.Local, &out.Local + if *in == nil { + *out = nil + } else { + *out = new(LocalVolumeSource) + **out = **in + } + } + if in.StorageOS != nil { + in, out := &in.StorageOS, &out.StorageOS + if *in == nil { + *out = nil + } else { + *out = new(StorageOSPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeSource. +func (in *PersistentVolumeSource) DeepCopy() *PersistentVolumeSource { + if in == nil { + return nil + } + out := new(PersistentVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + in.PersistentVolumeSource.DeepCopyInto(&out.PersistentVolumeSource) + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } + } + if in.MountOptions != nil { + in, out := &in.MountOptions, &out.MountOptions + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeSpec. +func (in *PersistentVolumeSpec) DeepCopy() *PersistentVolumeSpec { + if in == nil { + return nil + } + out := new(PersistentVolumeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PersistentVolumeStatus) DeepCopyInto(out *PersistentVolumeStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeStatus. +func (in *PersistentVolumeStatus) DeepCopy() *PersistentVolumeStatus { + if in == nil { + return nil + } + out := new(PersistentVolumeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PhotonPersistentDiskVolumeSource) DeepCopyInto(out *PhotonPersistentDiskVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PhotonPersistentDiskVolumeSource. +func (in *PhotonPersistentDiskVolumeSource) DeepCopy() *PhotonPersistentDiskVolumeSource { + if in == nil { + return nil + } + out := new(PhotonPersistentDiskVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Pod) DeepCopyInto(out *Pod) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Pod. +func (in *Pod) DeepCopy() *Pod { + if in == nil { + return nil + } + out := new(Pod) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Pod) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodAffinity) DeepCopyInto(out *PodAffinity) { + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodAffinity. +func (in *PodAffinity) DeepCopy() *PodAffinity { + if in == nil { + return nil + } + out := new(PodAffinity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodAffinityTerm) DeepCopyInto(out *PodAffinityTerm) { + *out = *in + if in.LabelSelector != nil { + in, out := &in.LabelSelector, &out.LabelSelector + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodAffinityTerm. +func (in *PodAffinityTerm) DeepCopy() *PodAffinityTerm { + if in == nil { + return nil + } + out := new(PodAffinityTerm) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodAntiAffinity) DeepCopyInto(out *PodAntiAffinity) { + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodAntiAffinity. +func (in *PodAntiAffinity) DeepCopy() *PodAntiAffinity { + if in == nil { + return nil + } + out := new(PodAntiAffinity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodAttachOptions) DeepCopyInto(out *PodAttachOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodAttachOptions. +func (in *PodAttachOptions) DeepCopy() *PodAttachOptions { + if in == nil { + return nil + } + out := new(PodAttachOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodAttachOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodCondition) DeepCopyInto(out *PodCondition) { + *out = *in + in.LastProbeTime.DeepCopyInto(&out.LastProbeTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCondition. +func (in *PodCondition) DeepCopy() *PodCondition { + if in == nil { + return nil + } + out := new(PodCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodExecOptions) DeepCopyInto(out *PodExecOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodExecOptions. +func (in *PodExecOptions) DeepCopy() *PodExecOptions { + if in == nil { + return nil + } + out := new(PodExecOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodExecOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodList) DeepCopyInto(out *PodList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodList. +func (in *PodList) DeepCopy() *PodList { + if in == nil { + return nil + } + out := new(PodList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.SinceSeconds != nil { + in, out := &in.SinceSeconds, &out.SinceSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.SinceTime != nil { + in, out := &in.SinceTime, &out.SinceTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + if in.TailLines != nil { + in, out := &in.TailLines, &out.TailLines + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.LimitBytes != nil { + in, out := &in.LimitBytes, &out.LimitBytes + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodLogOptions. +func (in *PodLogOptions) DeepCopy() *PodLogOptions { + if in == nil { + return nil + } + out := new(PodLogOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodLogOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPortForwardOptions) DeepCopyInto(out *PodPortForwardOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]int32, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPortForwardOptions. +func (in *PodPortForwardOptions) DeepCopy() *PodPortForwardOptions { + if in == nil { + return nil + } + out := new(PodPortForwardOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodPortForwardOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodProxyOptions) DeepCopyInto(out *PodProxyOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodProxyOptions. +func (in *PodProxyOptions) DeepCopy() *PodProxyOptions { + if in == nil { + return nil + } + out := new(PodProxyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodProxyOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + if *in == nil { + *out = nil + } else { + *out = new(SELinuxOptions) + **out = **in + } + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } + if in.FSGroup != nil { + in, out := &in.FSGroup, &out.FSGroup + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityContext. +func (in *PodSecurityContext) DeepCopy() *PodSecurityContext { + if in == nil { + return nil + } + out := new(PodSecurityContext) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSignature) DeepCopyInto(out *PodSignature) { + *out = *in + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.OwnerReference) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSignature. +func (in *PodSignature) DeepCopy() *PodSignature { + if in == nil { + return nil + } + out := new(PodSignature) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSpec) DeepCopyInto(out *PodSpec) { + *out = *in + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]Container, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]Container, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + if *in == nil { + *out = nil + } else { + *out = new(PodSecurityContext) + (*in).DeepCopyInto(*out) + } + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + if *in == nil { + *out = nil + } else { + *out = new(Affinity) + (*in).DeepCopyInto(*out) + } + } + if in.Tolerations != nil { + in, out := &in.Tolerations, &out.Tolerations + *out = make([]Toleration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HostAliases != nil { + in, out := &in.HostAliases, &out.HostAliases + *out = make([]HostAlias, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSpec. +func (in *PodSpec) DeepCopy() *PodSpec { + if in == nil { + return nil + } + out := new(PodSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodStatus) DeepCopyInto(out *PodStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PodCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodStatus. +func (in *PodStatus) DeepCopy() *PodStatus { + if in == nil { + return nil + } + out := new(PodStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodStatusResult) DeepCopyInto(out *PodStatusResult) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodStatusResult. +func (in *PodStatusResult) DeepCopy() *PodStatusResult { + if in == nil { + return nil + } + out := new(PodStatusResult) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodStatusResult) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodTemplate) DeepCopyInto(out *PodTemplate) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Template.DeepCopyInto(&out.Template) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodTemplate. +func (in *PodTemplate) DeepCopy() *PodTemplate { + if in == nil { + return nil + } + out := new(PodTemplate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodTemplate) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodTemplateList) DeepCopyInto(out *PodTemplateList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodTemplateList. +func (in *PodTemplateList) DeepCopy() *PodTemplateList { + if in == nil { + return nil + } + out := new(PodTemplateList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodTemplateList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodTemplateSpec) DeepCopyInto(out *PodTemplateSpec) { + *out = *in + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodTemplateSpec. +func (in *PodTemplateSpec) DeepCopy() *PodTemplateSpec { + if in == nil { + return nil + } + out := new(PodTemplateSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PortworxVolumeSource) DeepCopyInto(out *PortworxVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortworxVolumeSource. +func (in *PortworxVolumeSource) DeepCopy() *PortworxVolumeSource { + if in == nil { + return nil + } + out := new(PortworxVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Preconditions) DeepCopyInto(out *Preconditions) { + *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + if *in == nil { + *out = nil + } else { + *out = new(types.UID) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Preconditions. +func (in *Preconditions) DeepCopy() *Preconditions { + if in == nil { + return nil + } + out := new(Preconditions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PreferAvoidPodsEntry) DeepCopyInto(out *PreferAvoidPodsEntry) { + *out = *in + in.PodSignature.DeepCopyInto(&out.PodSignature) + in.EvictionTime.DeepCopyInto(&out.EvictionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PreferAvoidPodsEntry. +func (in *PreferAvoidPodsEntry) DeepCopy() *PreferAvoidPodsEntry { + if in == nil { + return nil + } + out := new(PreferAvoidPodsEntry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PreferredSchedulingTerm) DeepCopyInto(out *PreferredSchedulingTerm) { + *out = *in + in.Preference.DeepCopyInto(&out.Preference) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PreferredSchedulingTerm. +func (in *PreferredSchedulingTerm) DeepCopy() *PreferredSchedulingTerm { + if in == nil { + return nil + } + out := new(PreferredSchedulingTerm) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Probe) DeepCopyInto(out *Probe) { + *out = *in + in.Handler.DeepCopyInto(&out.Handler) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Probe. +func (in *Probe) DeepCopy() *Probe { + if in == nil { + return nil + } + out := new(Probe) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProjectedVolumeSource) DeepCopyInto(out *ProjectedVolumeSource) { + *out = *in + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]VolumeProjection, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProjectedVolumeSource. +func (in *ProjectedVolumeSource) DeepCopy() *ProjectedVolumeSource { + if in == nil { + return nil + } + out := new(ProjectedVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QuobyteVolumeSource) DeepCopyInto(out *QuobyteVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QuobyteVolumeSource. +func (in *QuobyteVolumeSource) DeepCopy() *QuobyteVolumeSource { + if in == nil { + return nil + } + out := new(QuobyteVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RBDVolumeSource) DeepCopyInto(out *RBDVolumeSource) { + *out = *in + if in.CephMonitors != nil { + in, out := &in.CephMonitors, &out.CephMonitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RBDVolumeSource. +func (in *RBDVolumeSource) DeepCopy() *RBDVolumeSource { + if in == nil { + return nil + } + out := new(RBDVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RangeAllocation) DeepCopyInto(out *RangeAllocation) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RangeAllocation. +func (in *RangeAllocation) DeepCopy() *RangeAllocation { + if in == nil { + return nil + } + out := new(RangeAllocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RangeAllocation) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicationController) DeepCopyInto(out *ReplicationController) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationController. +func (in *ReplicationController) DeepCopy() *ReplicationController { + if in == nil { + return nil + } + out := new(ReplicationController) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicationController) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicationControllerCondition) DeepCopyInto(out *ReplicationControllerCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationControllerCondition. +func (in *ReplicationControllerCondition) DeepCopy() *ReplicationControllerCondition { + if in == nil { + return nil + } + out := new(ReplicationControllerCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicationControllerList) DeepCopyInto(out *ReplicationControllerList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationControllerList. +func (in *ReplicationControllerList) DeepCopy() *ReplicationControllerList { + if in == nil { + return nil + } + out := new(ReplicationControllerList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicationControllerList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicationControllerSpec) DeepCopyInto(out *ReplicationControllerSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Template != nil { + in, out := &in.Template, &out.Template + if *in == nil { + *out = nil + } else { + *out = new(PodTemplateSpec) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationControllerSpec. +func (in *ReplicationControllerSpec) DeepCopy() *ReplicationControllerSpec { + if in == nil { + return nil + } + out := new(ReplicationControllerSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicationControllerStatus) DeepCopyInto(out *ReplicationControllerStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicationControllerCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationControllerStatus. +func (in *ReplicationControllerStatus) DeepCopy() *ReplicationControllerStatus { + if in == nil { + return nil + } + out := new(ReplicationControllerStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceFieldSelector) DeepCopyInto(out *ResourceFieldSelector) { + *out = *in + out.Divisor = in.Divisor.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceFieldSelector. +func (in *ResourceFieldSelector) DeepCopy() *ResourceFieldSelector { + if in == nil { + return nil + } + out := new(ResourceFieldSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceQuota) DeepCopyInto(out *ResourceQuota) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceQuota. +func (in *ResourceQuota) DeepCopy() *ResourceQuota { + if in == nil { + return nil + } + out := new(ResourceQuota) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ResourceQuota) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceQuotaList) DeepCopyInto(out *ResourceQuotaList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceQuotaList. +func (in *ResourceQuotaList) DeepCopy() *ResourceQuotaList { + if in == nil { + return nil + } + out := new(ResourceQuotaList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ResourceQuotaList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceQuotaSpec) DeepCopyInto(out *ResourceQuotaSpec) { + *out = *in + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]ResourceQuotaScope, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceQuotaSpec. +func (in *ResourceQuotaSpec) DeepCopy() *ResourceQuotaSpec { + if in == nil { + return nil + } + out := new(ResourceQuotaSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceQuotaStatus) DeepCopyInto(out *ResourceQuotaStatus) { + *out = *in + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Used != nil { + in, out := &in.Used, &out.Used + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceQuotaStatus. +func (in *ResourceQuotaStatus) DeepCopy() *ResourceQuotaStatus { + if in == nil { + return nil + } + out := new(ResourceQuotaStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceRequirements) DeepCopyInto(out *ResourceRequirements) { + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRequirements. +func (in *ResourceRequirements) DeepCopy() *ResourceRequirements { + if in == nil { + return nil + } + out := new(ResourceRequirements) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SELinuxOptions) DeepCopyInto(out *SELinuxOptions) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SELinuxOptions. +func (in *SELinuxOptions) DeepCopy() *SELinuxOptions { + if in == nil { + return nil + } + out := new(SELinuxOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleIOVolumeSource) DeepCopyInto(out *ScaleIOVolumeSource) { + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleIOVolumeSource. +func (in *ScaleIOVolumeSource) DeepCopy() *ScaleIOVolumeSource { + if in == nil { + return nil + } + out := new(ScaleIOVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Secret) DeepCopyInto(out *Secret) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string][]byte, len(*in)) + for key, val := range *in { + if val == nil { + (*out)[key] = nil + } else { + (*out)[key] = make([]byte, len(val)) + copy((*out)[key], val) + } + } + } + if in.StringData != nil { + in, out := &in.StringData, &out.StringData + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Secret. +func (in *Secret) DeepCopy() *Secret { + if in == nil { + return nil + } + out := new(Secret) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Secret) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretEnvSource) DeepCopyInto(out *SecretEnvSource) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretEnvSource. +func (in *SecretEnvSource) DeepCopy() *SecretEnvSource { + if in == nil { + return nil + } + out := new(SecretEnvSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeySelector. +func (in *SecretKeySelector) DeepCopy() *SecretKeySelector { + if in == nil { + return nil + } + out := new(SecretKeySelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretList) DeepCopyInto(out *SecretList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretList. +func (in *SecretList) DeepCopy() *SecretList { + if in == nil { + return nil + } + out := new(SecretList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SecretList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretProjection) DeepCopyInto(out *SecretProjection) { + *out = *in + out.LocalObjectReference = in.LocalObjectReference + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretProjection. +func (in *SecretProjection) DeepCopy() *SecretProjection { + if in == nil { + return nil + } + out := new(SecretProjection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretReference) DeepCopyInto(out *SecretReference) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretReference. +func (in *SecretReference) DeepCopy() *SecretReference { + if in == nil { + return nil + } + out := new(SecretReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretVolumeSource) DeepCopyInto(out *SecretVolumeSource) { + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretVolumeSource. +func (in *SecretVolumeSource) DeepCopy() *SecretVolumeSource { + if in == nil { + return nil + } + out := new(SecretVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecurityContext) DeepCopyInto(out *SecurityContext) { + *out = *in + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + if *in == nil { + *out = nil + } else { + *out = new(Capabilities) + (*in).DeepCopyInto(*out) + } + } + if in.Privileged != nil { + in, out := &in.Privileged, &out.Privileged + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + if *in == nil { + *out = nil + } else { + *out = new(SELinuxOptions) + **out = **in + } + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.ReadOnlyRootFilesystem != nil { + in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.AllowPrivilegeEscalation != nil { + in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityContext. +func (in *SecurityContext) DeepCopy() *SecurityContext { + if in == nil { + return nil + } + out := new(SecurityContext) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SerializedReference) DeepCopyInto(out *SerializedReference) { + *out = *in + out.TypeMeta = in.TypeMeta + out.Reference = in.Reference + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SerializedReference. +func (in *SerializedReference) DeepCopy() *SerializedReference { + if in == nil { + return nil + } + out := new(SerializedReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SerializedReference) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Service) DeepCopyInto(out *Service) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service. +func (in *Service) DeepCopy() *Service { + if in == nil { + return nil + } + out := new(Service) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Service) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]ObjectReference, len(*in)) + copy(*out, *in) + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccount. +func (in *ServiceAccount) DeepCopy() *ServiceAccount { + if in == nil { + return nil + } + out := new(ServiceAccount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceAccount) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountList) DeepCopyInto(out *ServiceAccountList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountList. +func (in *ServiceAccountList) DeepCopy() *ServiceAccountList { + if in == nil { + return nil + } + out := new(ServiceAccountList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceAccountList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceList) DeepCopyInto(out *ServiceList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceList. +func (in *ServiceList) DeepCopy() *ServiceList { + if in == nil { + return nil + } + out := new(ServiceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServicePort) DeepCopyInto(out *ServicePort) { + *out = *in + out.TargetPort = in.TargetPort + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServicePort. +func (in *ServicePort) DeepCopy() *ServicePort { + if in == nil { + return nil + } + out := new(ServicePort) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceProxyOptions) DeepCopyInto(out *ServiceProxyOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceProxyOptions. +func (in *ServiceProxyOptions) DeepCopy() *ServiceProxyOptions { + if in == nil { + return nil + } + out := new(ServiceProxyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ServiceProxyOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ServicePort, len(*in)) + copy(*out, *in) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExternalIPs != nil { + in, out := &in.ExternalIPs, &out.ExternalIPs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.LoadBalancerSourceRanges != nil { + in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SessionAffinityConfig != nil { + in, out := &in.SessionAffinityConfig, &out.SessionAffinityConfig + if *in == nil { + *out = nil + } else { + *out = new(SessionAffinityConfig) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSpec. +func (in *ServiceSpec) DeepCopy() *ServiceSpec { + if in == nil { + return nil + } + out := new(ServiceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceStatus) DeepCopyInto(out *ServiceStatus) { + *out = *in + in.LoadBalancer.DeepCopyInto(&out.LoadBalancer) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceStatus. +func (in *ServiceStatus) DeepCopy() *ServiceStatus { + if in == nil { + return nil + } + out := new(ServiceStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { + *out = *in + if in.ClientIP != nil { + in, out := &in.ClientIP, &out.ClientIP + if *in == nil { + *out = nil + } else { + *out = new(ClientIPConfig) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SessionAffinityConfig. +func (in *SessionAffinityConfig) DeepCopy() *SessionAffinityConfig { + if in == nil { + return nil + } + out := new(SessionAffinityConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageOSPersistentVolumeSource) DeepCopyInto(out *StorageOSPersistentVolumeSource) { + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageOSPersistentVolumeSource. +func (in *StorageOSPersistentVolumeSource) DeepCopy() *StorageOSPersistentVolumeSource { + if in == nil { + return nil + } + out := new(StorageOSPersistentVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageOSVolumeSource) DeepCopyInto(out *StorageOSVolumeSource) { + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageOSVolumeSource. +func (in *StorageOSVolumeSource) DeepCopy() *StorageOSVolumeSource { + if in == nil { + return nil + } + out := new(StorageOSVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Sysctl) DeepCopyInto(out *Sysctl) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sysctl. +func (in *Sysctl) DeepCopy() *Sysctl { + if in == nil { + return nil + } + out := new(Sysctl) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TCPSocketAction) DeepCopyInto(out *TCPSocketAction) { + *out = *in + out.Port = in.Port + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TCPSocketAction. +func (in *TCPSocketAction) DeepCopy() *TCPSocketAction { + if in == nil { + return nil + } + out := new(TCPSocketAction) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Taint) DeepCopyInto(out *Taint) { + *out = *in + in.TimeAdded.DeepCopyInto(&out.TimeAdded) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Taint. +func (in *Taint) DeepCopy() *Taint { + if in == nil { + return nil + } + out := new(Taint) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Toleration) DeepCopyInto(out *Toleration) { + *out = *in + if in.TolerationSeconds != nil { + in, out := &in.TolerationSeconds, &out.TolerationSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Toleration. +func (in *Toleration) DeepCopy() *Toleration { + if in == nil { + return nil + } + out := new(Toleration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Volume) DeepCopyInto(out *Volume) { + *out = *in + in.VolumeSource.DeepCopyInto(&out.VolumeSource) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume. +func (in *Volume) DeepCopy() *Volume { + if in == nil { + return nil + } + out := new(Volume) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeMount) DeepCopyInto(out *VolumeMount) { + *out = *in + if in.MountPropagation != nil { + in, out := &in.MountPropagation, &out.MountPropagation + if *in == nil { + *out = nil + } else { + *out = new(MountPropagationMode) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeMount. +func (in *VolumeMount) DeepCopy() *VolumeMount { + if in == nil { + return nil + } + out := new(VolumeMount) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { + *out = *in + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + if *in == nil { + *out = nil + } else { + *out = new(SecretProjection) + (*in).DeepCopyInto(*out) + } + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + if *in == nil { + *out = nil + } else { + *out = new(DownwardAPIProjection) + (*in).DeepCopyInto(*out) + } + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapProjection) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeProjection. +func (in *VolumeProjection) DeepCopy() *VolumeProjection { + if in == nil { + return nil + } + out := new(VolumeProjection) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeSource) DeepCopyInto(out *VolumeSource) { + *out = *in + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + if *in == nil { + *out = nil + } else { + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + if *in == nil { + *out = nil + } else { + *out = new(EmptyDirVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + if *in == nil { + *out = nil + } else { + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + if *in == nil { + *out = nil + } else { + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + if *in == nil { + *out = nil + } else { + *out = new(GitRepoVolumeSource) + **out = **in + } + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + if *in == nil { + *out = nil + } else { + *out = new(SecretVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + if *in == nil { + *out = nil + } else { + *out = new(NFSVolumeSource) + **out = **in + } + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + if *in == nil { + *out = nil + } else { + *out = new(ISCSIVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + if *in == nil { + *out = nil + } else { + *out = new(GlusterfsVolumeSource) + **out = **in + } + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + if *in == nil { + *out = nil + } else { + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in + } + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + if *in == nil { + *out = nil + } else { + *out = new(RBDVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + if *in == nil { + *out = nil + } else { + *out = new(FlexVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + if *in == nil { + *out = nil + } else { + *out = new(CinderVolumeSource) + **out = **in + } + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + if *in == nil { + *out = nil + } else { + *out = new(CephFSVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + if *in == nil { + *out = nil + } else { + *out = new(FlockerVolumeSource) + **out = **in + } + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + if *in == nil { + *out = nil + } else { + *out = new(DownwardAPIVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.FC != nil { + in, out := &in.FC, &out.FC + if *in == nil { + *out = nil + } else { + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + if *in == nil { + *out = nil + } else { + *out = new(AzureFileVolumeSource) + **out = **in + } + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + if *in == nil { + *out = nil + } else { + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + if *in == nil { + *out = nil + } else { + *out = new(QuobyteVolumeSource) + **out = **in + } + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + if *in == nil { + *out = nil + } else { + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.PhotonPersistentDisk != nil { + in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk + if *in == nil { + *out = nil + } else { + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } + } + if in.Projected != nil { + in, out := &in.Projected, &out.Projected + if *in == nil { + *out = nil + } else { + *out = new(ProjectedVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.PortworxVolume != nil { + in, out := &in.PortworxVolume, &out.PortworxVolume + if *in == nil { + *out = nil + } else { + *out = new(PortworxVolumeSource) + **out = **in + } + } + if in.ScaleIO != nil { + in, out := &in.ScaleIO, &out.ScaleIO + if *in == nil { + *out = nil + } else { + *out = new(ScaleIOVolumeSource) + (*in).DeepCopyInto(*out) + } + } + if in.StorageOS != nil { + in, out := &in.StorageOS, &out.StorageOS + if *in == nil { + *out = nil + } else { + *out = new(StorageOSVolumeSource) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSource. +func (in *VolumeSource) DeepCopy() *VolumeSource { + if in == nil { + return nil + } + out := new(VolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VsphereVirtualDiskVolumeSource) DeepCopyInto(out *VsphereVirtualDiskVolumeSource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereVirtualDiskVolumeSource. +func (in *VsphereVirtualDiskVolumeSource) DeepCopy() *VsphereVirtualDiskVolumeSource { + if in == nil { + return nil + } + out := new(VsphereVirtualDiskVolumeSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WeightedPodAffinityTerm) DeepCopyInto(out *WeightedPodAffinityTerm) { + *out = *in + in.PodAffinityTerm.DeepCopyInto(&out.PodAffinityTerm) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WeightedPodAffinityTerm. +func (in *WeightedPodAffinityTerm) DeepCopy() *WeightedPodAffinityTerm { + if in == nil { + return nil + } + out := new(WeightedPodAffinityTerm) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/extensions/OWNERS b/vendor/k8s.io/api/extensions/OWNERS new file mode 100755 index 0000000000..82c173c982 --- /dev/null +++ b/vendor/k8s.io/api/extensions/OWNERS @@ -0,0 +1,39 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- brendandburns +- derekwaynecarr +- caesarxuchao +- mikedanese +- liggitt +- nikhiljindal +- erictune +- pmorie +- sttts +- saad-ali +- janetkuo +- justinsb +- ncdc +- tallclair +- mwielgus +- timothysc +- soltysh +- piosz +- dims +- errordeveloper +- madhusudancs +- rootfs +- jszczepkowski +- mml +- resouer +- mbohlool +- david-mcmahon +- therc +- pweil- +- tmrts +- mqliang +- lukaszo +- jianhuiz diff --git a/vendor/k8s.io/api/extensions/v1beta1/BUILD b/vendor/k8s.io/api/extensions/v1beta1/BUILD new file mode 100644 index 0000000000..f9974f2328 --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/BUILD @@ -0,0 +1,49 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/extensions/v1beta1/doc.go b/vendor/k8s.io/api/extensions/v1beta1/doc.go new file mode 100644 index 0000000000..ac174dd278 --- /dev/null +++ b/vendor/k8s.io/api/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. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package v1beta1 // import "k8s.io/api/extensions/v1beta1" diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go new file mode 100644 index 0000000000..63d492fc85 --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go @@ -0,0 +1,12886 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/extensions/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1/generated.proto + + It has these top-level messages: + APIVersion + AllowedHostPath + CustomMetricCurrentStatus + CustomMetricCurrentStatusList + CustomMetricTarget + CustomMetricTargetList + DaemonSet + DaemonSetList + DaemonSetSpec + DaemonSetStatus + DaemonSetUpdateStrategy + Deployment + DeploymentCondition + DeploymentList + DeploymentRollback + DeploymentSpec + DeploymentStatus + DeploymentStrategy + FSGroupStrategyOptions + HTTPIngressPath + HTTPIngressRuleValue + HostPortRange + IDRange + IPBlock + Ingress + IngressBackend + IngressList + IngressRule + IngressRuleValue + IngressSpec + IngressStatus + IngressTLS + NetworkPolicy + NetworkPolicyEgressRule + NetworkPolicyIngressRule + NetworkPolicyList + NetworkPolicyPeer + NetworkPolicyPort + NetworkPolicySpec + PodSecurityPolicy + PodSecurityPolicyList + PodSecurityPolicySpec + ReplicaSet + ReplicaSetCondition + ReplicaSetList + ReplicaSetSpec + ReplicaSetStatus + ReplicationControllerDummy + RollbackConfig + RollingUpdateDaemonSet + RollingUpdateDeployment + RunAsUserStrategyOptions + SELinuxStrategyOptions + Scale + ScaleSpec + ScaleStatus + SupplementalGroupsStrategyOptions + ThirdPartyResource + ThirdPartyResourceData + ThirdPartyResourceDataList + ThirdPartyResourceList +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *APIVersion) Reset() { *m = APIVersion{} } +func (*APIVersion) ProtoMessage() {} +func (*APIVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *AllowedHostPath) Reset() { *m = AllowedHostPath{} } +func (*AllowedHostPath) ProtoMessage() {} +func (*AllowedHostPath) 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 *DaemonSetUpdateStrategy) Reset() { *m = DaemonSetUpdateStrategy{} } +func (*DaemonSetUpdateStrategy) ProtoMessage() {} +func (*DaemonSetUpdateStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{10} +} + +func (m *Deployment) Reset() { *m = Deployment{} } +func (*Deployment) ProtoMessage() {} +func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *DeploymentCondition) Reset() { *m = DeploymentCondition{} } +func (*DeploymentCondition) ProtoMessage() {} +func (*DeploymentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *DeploymentList) Reset() { *m = DeploymentList{} } +func (*DeploymentList) ProtoMessage() {} +func (*DeploymentList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *DeploymentRollback) Reset() { *m = DeploymentRollback{} } +func (*DeploymentRollback) ProtoMessage() {} +func (*DeploymentRollback) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *DeploymentSpec) Reset() { *m = DeploymentSpec{} } +func (*DeploymentSpec) ProtoMessage() {} +func (*DeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *DeploymentStatus) Reset() { *m = DeploymentStatus{} } +func (*DeploymentStatus) ProtoMessage() {} +func (*DeploymentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *DeploymentStrategy) Reset() { *m = DeploymentStrategy{} } +func (*DeploymentStrategy) ProtoMessage() {} +func (*DeploymentStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *FSGroupStrategyOptions) Reset() { *m = FSGroupStrategyOptions{} } +func (*FSGroupStrategyOptions) ProtoMessage() {} +func (*FSGroupStrategyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *HTTPIngressPath) Reset() { *m = HTTPIngressPath{} } +func (*HTTPIngressPath) ProtoMessage() {} +func (*HTTPIngressPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *HTTPIngressRuleValue) Reset() { *m = HTTPIngressRuleValue{} } +func (*HTTPIngressRuleValue) ProtoMessage() {} +func (*HTTPIngressRuleValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *HostPortRange) Reset() { *m = HostPortRange{} } +func (*HostPortRange) ProtoMessage() {} +func (*HostPortRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *IDRange) Reset() { *m = IDRange{} } +func (*IDRange) ProtoMessage() {} +func (*IDRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *IPBlock) Reset() { *m = IPBlock{} } +func (*IPBlock) ProtoMessage() {} +func (*IPBlock) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *Ingress) Reset() { *m = Ingress{} } +func (*Ingress) ProtoMessage() {} +func (*Ingress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *IngressBackend) Reset() { *m = IngressBackend{} } +func (*IngressBackend) ProtoMessage() {} +func (*IngressBackend) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *IngressList) Reset() { *m = IngressList{} } +func (*IngressList) ProtoMessage() {} +func (*IngressList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *IngressRule) Reset() { *m = IngressRule{} } +func (*IngressRule) ProtoMessage() {} +func (*IngressRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *IngressRuleValue) Reset() { *m = IngressRuleValue{} } +func (*IngressRuleValue) ProtoMessage() {} +func (*IngressRuleValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } + +func (m *IngressSpec) Reset() { *m = IngressSpec{} } +func (*IngressSpec) ProtoMessage() {} +func (*IngressSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *IngressStatus) Reset() { *m = IngressStatus{} } +func (*IngressStatus) ProtoMessage() {} +func (*IngressStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *IngressTLS) Reset() { *m = IngressTLS{} } +func (*IngressTLS) ProtoMessage() {} +func (*IngressTLS) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } + +func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } +func (*NetworkPolicy) ProtoMessage() {} +func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *NetworkPolicyEgressRule) Reset() { *m = NetworkPolicyEgressRule{} } +func (*NetworkPolicyEgressRule) ProtoMessage() {} +func (*NetworkPolicyEgressRule) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{33} +} + +func (m *NetworkPolicyIngressRule) Reset() { *m = NetworkPolicyIngressRule{} } +func (*NetworkPolicyIngressRule) ProtoMessage() {} +func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{34} +} + +func (m *NetworkPolicyList) Reset() { *m = NetworkPolicyList{} } +func (*NetworkPolicyList) ProtoMessage() {} +func (*NetworkPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *NetworkPolicyPeer) Reset() { *m = NetworkPolicyPeer{} } +func (*NetworkPolicyPeer) ProtoMessage() {} +func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } + +func (m *NetworkPolicyPort) Reset() { *m = NetworkPolicyPort{} } +func (*NetworkPolicyPort) ProtoMessage() {} +func (*NetworkPolicyPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } + +func (m *NetworkPolicySpec) Reset() { *m = NetworkPolicySpec{} } +func (*NetworkPolicySpec) ProtoMessage() {} +func (*NetworkPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } + +func (m *PodSecurityPolicy) Reset() { *m = PodSecurityPolicy{} } +func (*PodSecurityPolicy) ProtoMessage() {} +func (*PodSecurityPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } + +func (m *PodSecurityPolicyList) Reset() { *m = PodSecurityPolicyList{} } +func (*PodSecurityPolicyList) ProtoMessage() {} +func (*PodSecurityPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } + +func (m *PodSecurityPolicySpec) Reset() { *m = PodSecurityPolicySpec{} } +func (*PodSecurityPolicySpec) ProtoMessage() {} +func (*PodSecurityPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } + +func (m *ReplicaSet) Reset() { *m = ReplicaSet{} } +func (*ReplicaSet) ProtoMessage() {} +func (*ReplicaSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } + +func (m *ReplicaSetCondition) Reset() { *m = ReplicaSetCondition{} } +func (*ReplicaSetCondition) ProtoMessage() {} +func (*ReplicaSetCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } + +func (m *ReplicaSetList) Reset() { *m = ReplicaSetList{} } +func (*ReplicaSetList) ProtoMessage() {} +func (*ReplicaSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } + +func (m *ReplicaSetSpec) Reset() { *m = ReplicaSetSpec{} } +func (*ReplicaSetSpec) ProtoMessage() {} +func (*ReplicaSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } + +func (m *ReplicaSetStatus) Reset() { *m = ReplicaSetStatus{} } +func (*ReplicaSetStatus) ProtoMessage() {} +func (*ReplicaSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } + +func (m *ReplicationControllerDummy) Reset() { *m = ReplicationControllerDummy{} } +func (*ReplicationControllerDummy) ProtoMessage() {} +func (*ReplicationControllerDummy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{47} +} + +func (m *RollbackConfig) Reset() { *m = RollbackConfig{} } +func (*RollbackConfig) ProtoMessage() {} +func (*RollbackConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{48} } + +func (m *RollingUpdateDaemonSet) Reset() { *m = RollingUpdateDaemonSet{} } +func (*RollingUpdateDaemonSet) ProtoMessage() {} +func (*RollingUpdateDaemonSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } + +func (m *RollingUpdateDeployment) Reset() { *m = RollingUpdateDeployment{} } +func (*RollingUpdateDeployment) ProtoMessage() {} +func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{50} +} + +func (m *RunAsUserStrategyOptions) Reset() { *m = RunAsUserStrategyOptions{} } +func (*RunAsUserStrategyOptions) ProtoMessage() {} +func (*RunAsUserStrategyOptions) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{51} +} + +func (m *SELinuxStrategyOptions) Reset() { *m = SELinuxStrategyOptions{} } +func (*SELinuxStrategyOptions) ProtoMessage() {} +func (*SELinuxStrategyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } + +func (m *SupplementalGroupsStrategyOptions) Reset() { *m = SupplementalGroupsStrategyOptions{} } +func (*SupplementalGroupsStrategyOptions) ProtoMessage() {} +func (*SupplementalGroupsStrategyOptions) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{56} +} + +func (m *ThirdPartyResource) Reset() { *m = ThirdPartyResource{} } +func (*ThirdPartyResource) ProtoMessage() {} +func (*ThirdPartyResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } + +func (m *ThirdPartyResourceData) Reset() { *m = ThirdPartyResourceData{} } +func (*ThirdPartyResourceData) ProtoMessage() {} +func (*ThirdPartyResourceData) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{58} } + +func (m *ThirdPartyResourceDataList) Reset() { *m = ThirdPartyResourceDataList{} } +func (*ThirdPartyResourceDataList) ProtoMessage() {} +func (*ThirdPartyResourceDataList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{59} +} + +func (m *ThirdPartyResourceList) Reset() { *m = ThirdPartyResourceList{} } +func (*ThirdPartyResourceList) ProtoMessage() {} +func (*ThirdPartyResourceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } + +func init() { + proto.RegisterType((*APIVersion)(nil), "k8s.io.api.extensions.v1beta1.APIVersion") + proto.RegisterType((*AllowedHostPath)(nil), "k8s.io.api.extensions.v1beta1.AllowedHostPath") + proto.RegisterType((*CustomMetricCurrentStatus)(nil), "k8s.io.api.extensions.v1beta1.CustomMetricCurrentStatus") + proto.RegisterType((*CustomMetricCurrentStatusList)(nil), "k8s.io.api.extensions.v1beta1.CustomMetricCurrentStatusList") + proto.RegisterType((*CustomMetricTarget)(nil), "k8s.io.api.extensions.v1beta1.CustomMetricTarget") + proto.RegisterType((*CustomMetricTargetList)(nil), "k8s.io.api.extensions.v1beta1.CustomMetricTargetList") + proto.RegisterType((*DaemonSet)(nil), "k8s.io.api.extensions.v1beta1.DaemonSet") + proto.RegisterType((*DaemonSetList)(nil), "k8s.io.api.extensions.v1beta1.DaemonSetList") + proto.RegisterType((*DaemonSetSpec)(nil), "k8s.io.api.extensions.v1beta1.DaemonSetSpec") + proto.RegisterType((*DaemonSetStatus)(nil), "k8s.io.api.extensions.v1beta1.DaemonSetStatus") + proto.RegisterType((*DaemonSetUpdateStrategy)(nil), "k8s.io.api.extensions.v1beta1.DaemonSetUpdateStrategy") + proto.RegisterType((*Deployment)(nil), "k8s.io.api.extensions.v1beta1.Deployment") + proto.RegisterType((*DeploymentCondition)(nil), "k8s.io.api.extensions.v1beta1.DeploymentCondition") + proto.RegisterType((*DeploymentList)(nil), "k8s.io.api.extensions.v1beta1.DeploymentList") + proto.RegisterType((*DeploymentRollback)(nil), "k8s.io.api.extensions.v1beta1.DeploymentRollback") + proto.RegisterType((*DeploymentSpec)(nil), "k8s.io.api.extensions.v1beta1.DeploymentSpec") + proto.RegisterType((*DeploymentStatus)(nil), "k8s.io.api.extensions.v1beta1.DeploymentStatus") + proto.RegisterType((*DeploymentStrategy)(nil), "k8s.io.api.extensions.v1beta1.DeploymentStrategy") + proto.RegisterType((*FSGroupStrategyOptions)(nil), "k8s.io.api.extensions.v1beta1.FSGroupStrategyOptions") + proto.RegisterType((*HTTPIngressPath)(nil), "k8s.io.api.extensions.v1beta1.HTTPIngressPath") + proto.RegisterType((*HTTPIngressRuleValue)(nil), "k8s.io.api.extensions.v1beta1.HTTPIngressRuleValue") + proto.RegisterType((*HostPortRange)(nil), "k8s.io.api.extensions.v1beta1.HostPortRange") + proto.RegisterType((*IDRange)(nil), "k8s.io.api.extensions.v1beta1.IDRange") + proto.RegisterType((*IPBlock)(nil), "k8s.io.api.extensions.v1beta1.IPBlock") + proto.RegisterType((*Ingress)(nil), "k8s.io.api.extensions.v1beta1.Ingress") + proto.RegisterType((*IngressBackend)(nil), "k8s.io.api.extensions.v1beta1.IngressBackend") + proto.RegisterType((*IngressList)(nil), "k8s.io.api.extensions.v1beta1.IngressList") + proto.RegisterType((*IngressRule)(nil), "k8s.io.api.extensions.v1beta1.IngressRule") + proto.RegisterType((*IngressRuleValue)(nil), "k8s.io.api.extensions.v1beta1.IngressRuleValue") + proto.RegisterType((*IngressSpec)(nil), "k8s.io.api.extensions.v1beta1.IngressSpec") + proto.RegisterType((*IngressStatus)(nil), "k8s.io.api.extensions.v1beta1.IngressStatus") + proto.RegisterType((*IngressTLS)(nil), "k8s.io.api.extensions.v1beta1.IngressTLS") + proto.RegisterType((*NetworkPolicy)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicy") + proto.RegisterType((*NetworkPolicyEgressRule)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicyEgressRule") + proto.RegisterType((*NetworkPolicyIngressRule)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicyIngressRule") + proto.RegisterType((*NetworkPolicyList)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicyList") + proto.RegisterType((*NetworkPolicyPeer)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicyPeer") + proto.RegisterType((*NetworkPolicyPort)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicyPort") + proto.RegisterType((*NetworkPolicySpec)(nil), "k8s.io.api.extensions.v1beta1.NetworkPolicySpec") + proto.RegisterType((*PodSecurityPolicy)(nil), "k8s.io.api.extensions.v1beta1.PodSecurityPolicy") + proto.RegisterType((*PodSecurityPolicyList)(nil), "k8s.io.api.extensions.v1beta1.PodSecurityPolicyList") + proto.RegisterType((*PodSecurityPolicySpec)(nil), "k8s.io.api.extensions.v1beta1.PodSecurityPolicySpec") + proto.RegisterType((*ReplicaSet)(nil), "k8s.io.api.extensions.v1beta1.ReplicaSet") + proto.RegisterType((*ReplicaSetCondition)(nil), "k8s.io.api.extensions.v1beta1.ReplicaSetCondition") + proto.RegisterType((*ReplicaSetList)(nil), "k8s.io.api.extensions.v1beta1.ReplicaSetList") + proto.RegisterType((*ReplicaSetSpec)(nil), "k8s.io.api.extensions.v1beta1.ReplicaSetSpec") + proto.RegisterType((*ReplicaSetStatus)(nil), "k8s.io.api.extensions.v1beta1.ReplicaSetStatus") + proto.RegisterType((*ReplicationControllerDummy)(nil), "k8s.io.api.extensions.v1beta1.ReplicationControllerDummy") + proto.RegisterType((*RollbackConfig)(nil), "k8s.io.api.extensions.v1beta1.RollbackConfig") + proto.RegisterType((*RollingUpdateDaemonSet)(nil), "k8s.io.api.extensions.v1beta1.RollingUpdateDaemonSet") + proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.api.extensions.v1beta1.RollingUpdateDeployment") + proto.RegisterType((*RunAsUserStrategyOptions)(nil), "k8s.io.api.extensions.v1beta1.RunAsUserStrategyOptions") + proto.RegisterType((*SELinuxStrategyOptions)(nil), "k8s.io.api.extensions.v1beta1.SELinuxStrategyOptions") + proto.RegisterType((*Scale)(nil), "k8s.io.api.extensions.v1beta1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.api.extensions.v1beta1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.api.extensions.v1beta1.ScaleStatus") + proto.RegisterType((*SupplementalGroupsStrategyOptions)(nil), "k8s.io.api.extensions.v1beta1.SupplementalGroupsStrategyOptions") + proto.RegisterType((*ThirdPartyResource)(nil), "k8s.io.api.extensions.v1beta1.ThirdPartyResource") + proto.RegisterType((*ThirdPartyResourceData)(nil), "k8s.io.api.extensions.v1beta1.ThirdPartyResourceData") + proto.RegisterType((*ThirdPartyResourceDataList)(nil), "k8s.io.api.extensions.v1beta1.ThirdPartyResourceDataList") + proto.RegisterType((*ThirdPartyResourceList)(nil), "k8s.io.api.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 *AllowedHostPath) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AllowedHostPath) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PathPrefix))) + i += copy(dAtA[i:], m.PathPrefix) + 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 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size())) + n9, err := m.UpdateStrategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TemplateGeneration)) + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + 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)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberReady)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedNumberScheduled)) + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberAvailable)) + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberUnavailable)) + if m.CollisionCount != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *DaemonSetUpdateStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSetUpdateStrategy) 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())) + n10, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + 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())) + 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.Spec.Size())) + n12, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n13, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + return i, nil +} + +func (m *DeploymentCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentCondition) 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] = 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.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastUpdateTime.Size())) + n14, err := m.LastUpdateTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n15, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + 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())) + n16, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + 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 { + keysForUpdatedAnnotations := make([]string, 0, len(m.UpdatedAnnotations)) + for k := range m.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + for _, k := range keysForUpdatedAnnotations { + dAtA[i] = 0x12 + i++ + v := m.UpdatedAnnotations[string(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())) + n17, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + 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())) + n18, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n19, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Strategy.Size())) + n20, err := m.Strategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + 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())) + n21, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + if m.ProgressDeadlineSeconds != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ProgressDeadlineSeconds)) + } + 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)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + 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())) + n22, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } + 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())) + n23, err := m.Backend.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + 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 *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 *IPBlock) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IPBlock) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CIDR))) + i += copy(dAtA[i:], m.CIDR) + if len(m.Except) > 0 { + for _, s := range m.Except { + 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 *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())) + n24, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n25, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n26, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + 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())) + n27, err := m.ServicePort.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + 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())) + n28, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + 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())) + n29, err := m.IngressRuleValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n29 + 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())) + n30, err := m.HTTP.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n30 + } + 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())) + n31, err := m.Backend.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n31 + } + 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())) + n32, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n32 + 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 *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())) + n33, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n33 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n34, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n34 + return i, nil +} + +func (m *NetworkPolicyEgressRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyEgressRule) 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.To) > 0 { + for _, msg := range m.To { + 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 *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())) + n35, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n35 + 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())) + n36, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n36 + } + if m.NamespaceSelector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NamespaceSelector.Size())) + n37, err := m.NamespaceSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n37 + } + if m.IPBlock != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.IPBlock.Size())) + n38, err := m.IPBlock.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n38 + } + 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())) + n39, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n39 + } + 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())) + n40, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n40 + 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 + } + } + if len(m.Egress) > 0 { + for _, msg := range m.Egress { + 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 + } + } + if len(m.PolicyTypes) > 0 { + for _, s := range m.PolicyTypes { + 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 *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())) + n41, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n41 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n42, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n42 + 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())) + n43, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n43 + 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())) + n44, err := m.SELinux.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n44 + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RunAsUser.Size())) + n45, err := m.RunAsUser.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n45 + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SupplementalGroups.Size())) + n46, err := m.SupplementalGroups.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n46 + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FSGroup.Size())) + n47, err := m.FSGroup.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n47 + dAtA[i] = 0x70 + i++ + if m.ReadOnlyRootFilesystem { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.DefaultAllowPrivilegeEscalation != nil { + dAtA[i] = 0x78 + i++ + if *m.DefaultAllowPrivilegeEscalation { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + dAtA[i] = 0x80 + i++ + dAtA[i] = 0x1 + i++ + if m.AllowPrivilegeEscalation { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.AllowedHostPaths) > 0 { + for _, msg := range m.AllowedHostPaths { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x1 + 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 *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())) + n48, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n48 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n49, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n49 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n50, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n50 + return i, nil +} + +func (m *ReplicaSetCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSetCondition) 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.LastTransitionTime.Size())) + n51, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n51 + 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.Message))) + i += copy(dAtA[i:], m.Message) + 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())) + n52, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n52 + 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())) + n53, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n53 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n54, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n54 + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + 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)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + 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 + } + } + 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 *RollingUpdateDaemonSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateDaemonSet) 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())) + n55, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n55 + } + 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())) + n56, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n56 + } + if m.MaxSurge != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxSurge.Size())) + n57, err := m.MaxSurge.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n57 + } + 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())) + n58, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n58 + } + 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())) + 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 *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 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(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 *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())) + n62, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n62 + 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())) + n63, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n63 + 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())) + n64, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n64 + 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())) + n65, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n65 + 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 *AllowedHostPath) Size() (n int) { + var l int + _ = l + l = len(m.PathPrefix) + n += 1 + l + sovGenerated(uint64(l)) + 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)) + l = m.UpdateStrategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + n += 1 + sovGenerated(uint64(m.TemplateGeneration)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + 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)) + n += 1 + sovGenerated(uint64(m.NumberReady)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.UpdatedNumberScheduled)) + n += 1 + sovGenerated(uint64(m.NumberAvailable)) + n += 1 + sovGenerated(uint64(m.NumberUnavailable)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *DaemonSetUpdateStrategy) 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 *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 *DeploymentCondition) 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.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)) + l = m.LastTransitionTime.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)) + } + if m.ProgressDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ProgressDeadlineSeconds)) + } + 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)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + 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 *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 *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 *IPBlock) Size() (n int) { + var l int + _ = l + l = len(m.CIDR) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Except) > 0 { + for _, s := range m.Except { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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 *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 *NetworkPolicyEgressRule) 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.To) > 0 { + for _, e := range m.To { + l = e.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)) + } + if m.IPBlock != nil { + l = m.IPBlock.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)) + } + } + if len(m.Egress) > 0 { + for _, e := range m.Egress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.PolicyTypes) > 0 { + for _, s := range m.PolicyTypes { + l = len(s) + 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 + if m.DefaultAllowPrivilegeEscalation != nil { + n += 2 + } + n += 3 + if len(m.AllowedHostPaths) > 0 { + for _, e := range m.AllowedHostPaths { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + 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 *ReplicaSetCondition) 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.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 *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)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + 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)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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 *RollingUpdateDaemonSet) Size() (n int) { + var l int + _ = l + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + 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 *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 *AllowedHostPath) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AllowedHostPath{`, + `PathPrefix:` + fmt.Sprintf("%v", this.PathPrefix) + `,`, + `}`, + }, "") + 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_apimachinery_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_apimachinery_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(this.UpdateStrategy.String(), "DaemonSetUpdateStrategy", "DaemonSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `TemplateGeneration:` + fmt.Sprintf("%v", this.TemplateGeneration) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `}`, + }, "") + 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) + `,`, + `NumberReady:` + fmt.Sprintf("%v", this.NumberReady) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `UpdatedNumberScheduled:` + fmt.Sprintf("%v", this.UpdatedNumberScheduled) + `,`, + `NumberAvailable:` + fmt.Sprintf("%v", this.NumberAvailable) + `,`, + `NumberUnavailable:` + fmt.Sprintf("%v", this.NumberUnavailable) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetUpdateStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetUpdateStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateDaemonSet", "RollingUpdateDaemonSet", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *DeploymentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_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) + `,`, + `ProgressDeadlineSeconds:` + valueToStringGenerated(this.ProgressDeadlineSeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + 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 *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 *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 *IPBlock) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IPBlock{`, + `CIDR:` + fmt.Sprintf("%v", this.CIDR) + `,`, + `Except:` + fmt.Sprintf("%v", this.Except) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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_apimachinery_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_apimachinery_pkg_apis_meta_v1.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_api_core_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 *NetworkPolicy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicy{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkPolicySpec", "NetworkPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyEgressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyEgressRule{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "NetworkPolicyPort", "NetworkPolicyPort", 1), `&`, ``, 1) + `,`, + `To:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.To), "NetworkPolicyPeer", "NetworkPolicyPeer", 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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `IPBlock:` + strings.Replace(fmt.Sprintf("%v", this.IPBlock), "IPBlock", "IPBlock", 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_apimachinery_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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "NetworkPolicyIngressRule", "NetworkPolicyIngressRule", 1), `&`, ``, 1) + `,`, + `Egress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Egress), "NetworkPolicyEgressRule", "NetworkPolicyEgressRule", 1), `&`, ``, 1) + `,`, + `PolicyTypes:` + fmt.Sprintf("%v", this.PolicyTypes) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `DefaultAllowPrivilegeEscalation:` + valueToStringGenerated(this.DefaultAllowPrivilegeEscalation) + `,`, + `AllowPrivilegeEscalation:` + fmt.Sprintf("%v", this.AllowPrivilegeEscalation) + `,`, + `AllowedHostPaths:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.AllowedHostPaths), "AllowedHostPath", "AllowedHostPath", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_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 *ReplicaSetCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_api_core_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `}`, + }, "") + 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) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ReplicaSetCondition", "ReplicaSetCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + 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 *RollingUpdateDaemonSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateDaemonSet{`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `MaxSurge:` + strings.Replace(fmt.Sprintf("%v", this.MaxSurge), "IntOrString", "k8s_io_apimachinery_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_api_core_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_apimachinery_pkg_apis_meta_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 *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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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 *AllowedHostPath) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AllowedHostPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AllowedHostPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PathPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PathPrefix = 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 *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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + 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 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TemplateGeneration", wireType) + } + m.TemplateGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TemplateGeneration |= (int64(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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberReady", wireType) + } + m.NumberReady = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberReady |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + 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 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedNumberScheduled", wireType) + } + m.UpdatedNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdatedNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberAvailable", wireType) + } + m.NumberAvailable = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberAvailable |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberUnavailable", wireType) + } + m.NumberUnavailable = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberUnavailable |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *DaemonSetUpdateStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetUpdateStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetUpdateStrategy: 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 = DaemonSetUpdateStrategyType(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 = &RollingUpdateDaemonSet{} + } + 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 *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 *DeploymentCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentCondition: 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 = DeploymentConditionType(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_api_core_v1.ConditionStatus(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 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 6: + 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 + case 7: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + if m.UpdatedAnnotations == nil { + m.UpdatedAnnotations = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.UpdatedAnnotations[mapkey] = mapvalue + } else { + var mapvalue 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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProgressDeadlineSeconds", 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.ProgressDeadlineSeconds = &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 *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 + } + } + case 6: + 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, DeploymentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + 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 + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", 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.CollisionCount = &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 *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 *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 *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 *IPBlock) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IPBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IPBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CIDR = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Except", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Except = append(m.Except, 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 *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 *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 *NetworkPolicyEgressRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyEgressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyEgressRule: 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 To", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.To = append(m.To, NetworkPolicyPeer{}) + if err := m.To[len(m.To)-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 *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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPBlock", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.IPBlock == nil { + m.IPBlock = &IPBlock{} + } + if err := m.IPBlock.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_api_core_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_apimachinery_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 + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Egress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Egress = append(m.Egress, NetworkPolicyEgressRule{}) + if err := m.Egress[len(m.Egress)-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 PolicyTypes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyTypes = append(m.PolicyTypes, PolicyType(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 *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_api_core_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_api_core_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_api_core_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) + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultAllowPrivilegeEscalation", 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.DefaultAllowPrivilegeEscalation = &b + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowPrivilegeEscalation", 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.AllowPrivilegeEscalation = bool(v != 0) + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedHostPaths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.AllowedHostPaths = append(m.AllowedHostPaths, AllowedHostPath{}) + if err := m.AllowedHostPaths[len(m.AllowedHostPaths)-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 *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 *ReplicaSetCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetCondition: 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 = ReplicaSetConditionType(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_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 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 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 *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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 != 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 + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + 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 + } + } + case 5: + 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 6: + 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, ReplicaSetCondition{}) + 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 *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 *RollingUpdateDaemonSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateDaemonSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateDaemonSet: 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_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.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 *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_apimachinery_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_apimachinery_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_api_core_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 + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Selector[mapkey] = mapvalue + } else { + var mapvalue 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 *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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 3634 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5b, 0xcd, 0x6f, 0x23, 0xc9, + 0x75, 0x9f, 0xe6, 0x87, 0x48, 0x3d, 0x8d, 0xbe, 0x4a, 0xb3, 0x12, 0xad, 0xdd, 0x11, 0xe5, 0x5e, + 0x60, 0x32, 0xbb, 0xd9, 0x25, 0x77, 0xb4, 0x3b, 0xeb, 0xcd, 0x2e, 0x62, 0x47, 0x94, 0xe6, 0x43, + 0x8e, 0x3e, 0xb8, 0x45, 0x4a, 0x4e, 0x16, 0x1e, 0x67, 0x5b, 0x64, 0x89, 0xea, 0x51, 0xb3, 0xbb, + 0xdd, 0x5d, 0x2d, 0x8b, 0x97, 0x20, 0x87, 0xc0, 0x40, 0x80, 0x04, 0x49, 0x0e, 0x0e, 0x1c, 0x20, + 0x87, 0xf8, 0x92, 0x53, 0x82, 0xf8, 0x96, 0x1c, 0x0c, 0x03, 0x01, 0x1c, 0x60, 0x10, 0x38, 0x81, + 0x4f, 0x89, 0x4f, 0x42, 0x56, 0x3e, 0xe6, 0x1f, 0x08, 0xe6, 0x10, 0x04, 0x55, 0x5d, 0xfd, 0xdd, + 0x2d, 0x92, 0xda, 0x91, 0x10, 0xe4, 0xc6, 0xae, 0xf7, 0xde, 0xef, 0xbd, 0x7a, 0x55, 0xf5, 0xde, + 0xab, 0x0f, 0xc2, 0xe3, 0x93, 0x8f, 0xec, 0x9a, 0x6a, 0xd4, 0x4f, 0x9c, 0x43, 0x62, 0xe9, 0x84, + 0x12, 0xbb, 0x7e, 0x4a, 0xf4, 0xae, 0x61, 0xd5, 0x05, 0x41, 0x31, 0xd5, 0x3a, 0x39, 0xa3, 0x44, + 0xb7, 0x55, 0x43, 0xb7, 0xeb, 0xa7, 0x0f, 0x0e, 0x09, 0x55, 0x1e, 0xd4, 0x7b, 0x44, 0x27, 0x96, + 0x42, 0x49, 0xb7, 0x66, 0x5a, 0x06, 0x35, 0xd0, 0x5d, 0x97, 0xbd, 0xa6, 0x98, 0x6a, 0x2d, 0x60, + 0xaf, 0x09, 0xf6, 0xe5, 0x77, 0x7b, 0x2a, 0x3d, 0x76, 0x0e, 0x6b, 0x1d, 0xa3, 0x5f, 0xef, 0x19, + 0x3d, 0xa3, 0xce, 0xa5, 0x0e, 0x9d, 0x23, 0xfe, 0xc5, 0x3f, 0xf8, 0x2f, 0x17, 0x6d, 0x59, 0x0e, + 0x29, 0xef, 0x18, 0x16, 0xa9, 0x9f, 0x26, 0x34, 0x2e, 0xbf, 0x15, 0xe2, 0x31, 0x0d, 0x4d, 0xed, + 0x0c, 0xb2, 0x8c, 0x5b, 0xfe, 0x20, 0x60, 0xed, 0x2b, 0x9d, 0x63, 0x55, 0x27, 0xd6, 0xa0, 0x6e, + 0x9e, 0xf4, 0xb8, 0xac, 0x45, 0x6c, 0xc3, 0xb1, 0x3a, 0x64, 0x2c, 0x29, 0xbb, 0xde, 0x27, 0x54, + 0x49, 0x33, 0xab, 0x9e, 0x25, 0x65, 0x39, 0x3a, 0x55, 0xfb, 0x49, 0x35, 0x1f, 0x0e, 0x13, 0xb0, + 0x3b, 0xc7, 0xa4, 0xaf, 0x24, 0xe4, 0xde, 0xcf, 0x92, 0x73, 0xa8, 0xaa, 0xd5, 0x55, 0x9d, 0xda, + 0xd4, 0x8a, 0x0b, 0xc9, 0x35, 0x80, 0xf5, 0xe6, 0xd6, 0x01, 0xb1, 0xd8, 0xf0, 0xa0, 0x55, 0x28, + 0xe8, 0x4a, 0x9f, 0x54, 0xa4, 0x55, 0xe9, 0xfe, 0x64, 0xe3, 0xf6, 0x8b, 0xf3, 0xea, 0xad, 0x8b, + 0xf3, 0x6a, 0x61, 0x57, 0xe9, 0x13, 0xcc, 0x29, 0xf2, 0x23, 0x98, 0x5d, 0xd7, 0x34, 0xe3, 0x7b, + 0xa4, 0xfb, 0xd4, 0xb0, 0x69, 0x53, 0xa1, 0xc7, 0x68, 0x0d, 0xc0, 0x54, 0xe8, 0x71, 0xd3, 0x22, + 0x47, 0xea, 0x99, 0x10, 0x45, 0x42, 0x14, 0x9a, 0x3e, 0x05, 0x87, 0xb8, 0xe4, 0xbf, 0x94, 0xe0, + 0x2b, 0x1b, 0x8e, 0x4d, 0x8d, 0xfe, 0x0e, 0xa1, 0x96, 0xda, 0xd9, 0x70, 0x2c, 0x8b, 0xe8, 0xb4, + 0x45, 0x15, 0xea, 0xd8, 0xc3, 0xcd, 0x40, 0x9f, 0x41, 0xf1, 0x54, 0xd1, 0x1c, 0x52, 0xc9, 0xad, + 0x4a, 0xf7, 0xa7, 0xd6, 0x6a, 0xb5, 0x60, 0xb6, 0xf9, 0x7d, 0xaf, 0x99, 0x27, 0x3d, 0x3e, 0xfd, + 0xbc, 0x01, 0xad, 0x7d, 0xea, 0x28, 0x3a, 0x55, 0xe9, 0xa0, 0x71, 0x47, 0x40, 0xde, 0x16, 0x7a, + 0x0f, 0x18, 0x16, 0x76, 0x21, 0xe5, 0xdf, 0x87, 0xbb, 0x99, 0xa6, 0x6d, 0xab, 0x36, 0x45, 0xcf, + 0xa0, 0xa8, 0x52, 0xd2, 0xb7, 0x2b, 0xd2, 0x6a, 0xfe, 0xfe, 0xd4, 0xda, 0x47, 0xb5, 0x4b, 0xa7, + 0x7a, 0x2d, 0x13, 0xac, 0x31, 0x2d, 0xcc, 0x28, 0x6e, 0x31, 0x38, 0xec, 0xa2, 0xca, 0x7f, 0x2e, + 0x01, 0x0a, 0xcb, 0xb4, 0x15, 0xab, 0x47, 0xe8, 0x08, 0x4e, 0xf9, 0xdd, 0x2f, 0xe7, 0x94, 0x05, + 0x01, 0x39, 0xe5, 0x2a, 0x8c, 0xf8, 0xc4, 0x84, 0xc5, 0xa4, 0x49, 0xdc, 0x19, 0x07, 0x51, 0x67, + 0x3c, 0x18, 0xc3, 0x19, 0x2e, 0x4a, 0x86, 0x17, 0x7e, 0x90, 0x83, 0xc9, 0x4d, 0x85, 0xf4, 0x0d, + 0xbd, 0x45, 0x28, 0xfa, 0x1c, 0xca, 0x6c, 0x7d, 0x75, 0x15, 0xaa, 0x70, 0x07, 0x4c, 0xad, 0xbd, + 0x77, 0x59, 0xef, 0xec, 0x1a, 0xe3, 0xae, 0x9d, 0x3e, 0xa8, 0xed, 0x1d, 0x3e, 0x27, 0x1d, 0xba, + 0x43, 0xa8, 0x12, 0xcc, 0xc9, 0xa0, 0x0d, 0xfb, 0xa8, 0x68, 0x17, 0x0a, 0xb6, 0x49, 0x3a, 0xc2, + 0x77, 0xef, 0x0c, 0xe9, 0x86, 0x6f, 0x59, 0xcb, 0x24, 0x9d, 0x60, 0x30, 0xd8, 0x17, 0xe6, 0x38, + 0xe8, 0x00, 0x26, 0x6c, 0x3e, 0xca, 0x95, 0x7c, 0x62, 0x34, 0x2e, 0x47, 0x74, 0xe7, 0xc6, 0x8c, + 0xc0, 0x9c, 0x70, 0xbf, 0xb1, 0x40, 0x93, 0x7f, 0x22, 0xc1, 0xb4, 0xcf, 0xcb, 0x47, 0xe0, 0xdb, + 0x09, 0xdf, 0xd4, 0x46, 0xf3, 0x0d, 0x93, 0xe6, 0x9e, 0x99, 0x13, 0xba, 0xca, 0x5e, 0x4b, 0xc8, + 0x2f, 0x3b, 0xde, 0xf8, 0xe6, 0xf8, 0xf8, 0xde, 0x1f, 0xb5, 0x1b, 0x19, 0xc3, 0xfa, 0x17, 0x85, + 0x90, 0xf9, 0xcc, 0x5d, 0xe8, 0x19, 0x94, 0x6d, 0xa2, 0x91, 0x0e, 0x35, 0x2c, 0x61, 0xfe, 0xfb, + 0x23, 0x9a, 0xaf, 0x1c, 0x12, 0xad, 0x25, 0x44, 0x1b, 0xb7, 0x99, 0xfd, 0xde, 0x17, 0xf6, 0x21, + 0xd1, 0xa7, 0x50, 0xa6, 0xa4, 0x6f, 0x6a, 0x0a, 0xf5, 0xd6, 0xc5, 0x9b, 0xe1, 0x2e, 0xb0, 0x64, + 0xc2, 0xc0, 0x9a, 0x46, 0xb7, 0x2d, 0xd8, 0xf8, 0x90, 0xfa, 0x2e, 0xf1, 0x5a, 0xb1, 0x0f, 0x83, + 0x4e, 0x61, 0xc6, 0x31, 0xbb, 0x8c, 0x93, 0xb2, 0x50, 0xda, 0x1b, 0x88, 0x21, 0xfe, 0x70, 0x54, + 0xdf, 0xec, 0x47, 0xa4, 0x1b, 0x8b, 0x42, 0xd7, 0x4c, 0xb4, 0x1d, 0xc7, 0xb4, 0xa0, 0x75, 0x98, + 0xed, 0xab, 0x3a, 0x26, 0x4a, 0x77, 0xd0, 0x22, 0x1d, 0x43, 0xef, 0xda, 0x95, 0xc2, 0xaa, 0x74, + 0xbf, 0xd8, 0x58, 0x12, 0x00, 0xb3, 0x3b, 0x51, 0x32, 0x8e, 0xf3, 0xa3, 0x6f, 0x02, 0xf2, 0xba, + 0xf1, 0xc4, 0xcd, 0x04, 0xaa, 0xa1, 0x57, 0x8a, 0xab, 0xd2, 0xfd, 0x7c, 0x63, 0x59, 0xa0, 0xa0, + 0x76, 0x82, 0x03, 0xa7, 0x48, 0xa1, 0x6d, 0xb8, 0x63, 0x91, 0x53, 0x95, 0xf5, 0xf1, 0xa9, 0x6a, + 0x53, 0xc3, 0x1a, 0x6c, 0xab, 0x7d, 0x95, 0x56, 0x26, 0xb8, 0x4d, 0x95, 0x8b, 0xf3, 0xea, 0x1d, + 0x9c, 0x42, 0xc7, 0xa9, 0x52, 0xf2, 0x8f, 0x8b, 0x30, 0x1b, 0x5b, 0x03, 0xe8, 0x00, 0x16, 0x3b, + 0x6e, 0xc0, 0xdc, 0x75, 0xfa, 0x87, 0xc4, 0x6a, 0x75, 0x8e, 0x49, 0xd7, 0xd1, 0x48, 0x97, 0x4f, + 0x94, 0x62, 0x63, 0x45, 0x58, 0xbc, 0xb8, 0x91, 0xca, 0x85, 0x33, 0xa4, 0x99, 0x17, 0x74, 0xde, + 0xb4, 0xa3, 0xda, 0xb6, 0x8f, 0x99, 0xe3, 0x98, 0xbe, 0x17, 0x76, 0x13, 0x1c, 0x38, 0x45, 0x8a, + 0xd9, 0xd8, 0x25, 0xb6, 0x6a, 0x91, 0x6e, 0xdc, 0xc6, 0x7c, 0xd4, 0xc6, 0xcd, 0x54, 0x2e, 0x9c, + 0x21, 0x8d, 0x1e, 0xc2, 0x94, 0xab, 0x8d, 0x8f, 0x9f, 0x18, 0x68, 0x3f, 0x44, 0xef, 0x06, 0x24, + 0x1c, 0xe6, 0x63, 0x5d, 0x33, 0x0e, 0x6d, 0x62, 0x9d, 0x92, 0x6e, 0xf6, 0x00, 0xef, 0x25, 0x38, + 0x70, 0x8a, 0x14, 0xeb, 0x9a, 0x3b, 0x03, 0x13, 0x5d, 0x9b, 0x88, 0x76, 0x6d, 0x3f, 0x95, 0x0b, + 0x67, 0x48, 0xb3, 0x79, 0xec, 0x9a, 0xbc, 0x7e, 0xaa, 0xa8, 0x9a, 0x72, 0xa8, 0x91, 0x4a, 0x29, + 0x3a, 0x8f, 0x77, 0xa3, 0x64, 0x1c, 0xe7, 0x47, 0x4f, 0x60, 0xde, 0x6d, 0xda, 0xd7, 0x15, 0x1f, + 0xa4, 0xcc, 0x41, 0xbe, 0x22, 0x40, 0xe6, 0x77, 0xe3, 0x0c, 0x38, 0x29, 0x83, 0x3e, 0x86, 0x99, + 0x8e, 0xa1, 0x69, 0x7c, 0x3e, 0x6e, 0x18, 0x8e, 0x4e, 0x2b, 0x93, 0x1c, 0x05, 0xb1, 0xf5, 0xb8, + 0x11, 0xa1, 0xe0, 0x18, 0xa7, 0xfc, 0x2f, 0x12, 0x2c, 0x65, 0xac, 0x69, 0xf4, 0x0d, 0x28, 0xd0, + 0x81, 0xe9, 0x65, 0xeb, 0x5f, 0xf7, 0x12, 0x44, 0x7b, 0x60, 0x92, 0x97, 0xe7, 0xd5, 0xd7, 0x33, + 0xc4, 0x18, 0x19, 0x73, 0x41, 0xa4, 0xc3, 0xb4, 0xc5, 0xd4, 0xe9, 0x3d, 0x97, 0x45, 0x04, 0xaf, + 0x87, 0x43, 0x62, 0x0c, 0x0e, 0xcb, 0x04, 0xc1, 0x78, 0xfe, 0xe2, 0xbc, 0x3a, 0x1d, 0xa1, 0xe1, + 0x28, 0xbc, 0xfc, 0xc3, 0x1c, 0xc0, 0x26, 0x31, 0x35, 0x63, 0xd0, 0x27, 0xfa, 0x4d, 0x24, 0xdc, + 0xbd, 0x48, 0xc2, 0x7d, 0x77, 0x58, 0xec, 0xf4, 0x4d, 0xcb, 0xcc, 0xb8, 0xdf, 0x8a, 0x65, 0xdc, + 0xfa, 0xe8, 0x90, 0x97, 0xa7, 0xdc, 0xff, 0xc8, 0xc3, 0x42, 0xc0, 0xbc, 0x61, 0xe8, 0x5d, 0x95, + 0xaf, 0x8f, 0x4f, 0x22, 0x63, 0xfc, 0x6b, 0xb1, 0x31, 0x5e, 0x4a, 0x11, 0x09, 0x8d, 0xef, 0xb6, + 0x6f, 0x6d, 0x8e, 0x8b, 0x7f, 0x10, 0x55, 0xfe, 0xf2, 0xbc, 0x9a, 0xb2, 0xe7, 0xa9, 0xf9, 0x48, + 0x51, 0x13, 0xd1, 0x3d, 0x98, 0xb0, 0x88, 0x62, 0x1b, 0x3a, 0x0f, 0x14, 0x93, 0x41, 0x57, 0x30, + 0x6f, 0xc5, 0x82, 0x8a, 0xde, 0x82, 0x52, 0x9f, 0xd8, 0xb6, 0xd2, 0x23, 0x3c, 0x26, 0x4c, 0x36, + 0x66, 0x05, 0x63, 0x69, 0xc7, 0x6d, 0xc6, 0x1e, 0x1d, 0x3d, 0x87, 0x19, 0x4d, 0xb1, 0xc5, 0x04, + 0x6d, 0xab, 0x7d, 0xc2, 0x57, 0xfd, 0xd4, 0xda, 0xdb, 0xa3, 0xcd, 0x03, 0x26, 0x11, 0x64, 0xb6, + 0xed, 0x08, 0x12, 0x8e, 0x21, 0xa3, 0x53, 0x40, 0xac, 0xa5, 0x6d, 0x29, 0xba, 0xed, 0x3a, 0x8a, + 0xe9, 0x2b, 0x8d, 0xad, 0xcf, 0x8f, 0x70, 0xdb, 0x09, 0x34, 0x9c, 0xa2, 0x41, 0xfe, 0xa9, 0x04, + 0x33, 0xc1, 0x30, 0xdd, 0x40, 0x35, 0xb5, 0x1b, 0xad, 0xa6, 0xde, 0x1a, 0x79, 0x8a, 0x66, 0x94, + 0x53, 0xff, 0x9d, 0x03, 0x14, 0x30, 0xb1, 0x05, 0x7e, 0xa8, 0x74, 0x4e, 0x46, 0xd8, 0x2b, 0xfc, + 0x40, 0x02, 0x24, 0xc2, 0xf3, 0xba, 0xae, 0x1b, 0x94, 0x47, 0x7c, 0xcf, 0xac, 0xad, 0x91, 0xcd, + 0xf2, 0x34, 0xd6, 0xf6, 0x13, 0x58, 0x8f, 0x74, 0x6a, 0x0d, 0x82, 0x11, 0x49, 0x32, 0xe0, 0x14, + 0x03, 0x90, 0x02, 0x60, 0x09, 0xcc, 0xb6, 0x21, 0x16, 0xf2, 0xbb, 0x23, 0xc4, 0x3c, 0x26, 0xb0, + 0x61, 0xe8, 0x47, 0x6a, 0x2f, 0x08, 0x3b, 0xd8, 0x07, 0xc2, 0x21, 0xd0, 0xe5, 0x47, 0xb0, 0x94, + 0x61, 0x2d, 0x9a, 0x83, 0xfc, 0x09, 0x19, 0xb8, 0x6e, 0xc3, 0xec, 0x27, 0xba, 0x13, 0xde, 0x53, + 0x4d, 0x8a, 0xed, 0xd0, 0xc7, 0xb9, 0x8f, 0x24, 0xf9, 0x27, 0xc5, 0xf0, 0xdc, 0xe1, 0xa5, 0xec, + 0x7d, 0x28, 0x5b, 0xc4, 0xd4, 0xd4, 0x8e, 0x62, 0x8b, 0x0a, 0x85, 0x57, 0xa5, 0x58, 0xb4, 0x61, + 0x9f, 0x1a, 0x29, 0x7a, 0x73, 0xd7, 0x5b, 0xf4, 0xe6, 0x5f, 0x4d, 0xd1, 0xfb, 0x7b, 0x50, 0xb6, + 0xbd, 0x72, 0xb7, 0xc0, 0x21, 0x1f, 0x8c, 0x11, 0x5f, 0x45, 0xa5, 0xeb, 0x2b, 0xf0, 0x6b, 0x5c, + 0x1f, 0x34, 0xad, 0xba, 0x2d, 0x8e, 0x59, 0xdd, 0xbe, 0xd2, 0x8a, 0x94, 0xc5, 0x54, 0x53, 0x71, + 0x6c, 0xd2, 0xe5, 0x81, 0xa8, 0x1c, 0xc4, 0xd4, 0x26, 0x6f, 0xc5, 0x82, 0x8a, 0x9e, 0x45, 0xa6, + 0x6c, 0xf9, 0x2a, 0x53, 0x76, 0x26, 0x7b, 0xba, 0xa2, 0x7d, 0x58, 0x32, 0x2d, 0xa3, 0x67, 0x11, + 0xdb, 0xde, 0x24, 0x4a, 0x57, 0x53, 0x75, 0xe2, 0xf9, 0xc7, 0x2d, 0x55, 0x5e, 0xbf, 0x38, 0xaf, + 0x2e, 0x35, 0xd3, 0x59, 0x70, 0x96, 0xac, 0xfc, 0xa2, 0x00, 0x73, 0xf1, 0x0c, 0x98, 0x51, 0x3d, + 0x4a, 0x57, 0xaa, 0x1e, 0xdf, 0x09, 0x2d, 0x06, 0xb7, 0xb4, 0xf6, 0x47, 0x3f, 0x65, 0x41, 0xac, + 0xc3, 0xac, 0x88, 0x06, 0x1e, 0x51, 0xd4, 0xcf, 0xfe, 0xe8, 0xef, 0x47, 0xc9, 0x38, 0xce, 0xcf, + 0x6a, 0xc2, 0xa0, 0xd4, 0xf3, 0x40, 0x0a, 0xd1, 0x9a, 0x70, 0x3d, 0xce, 0x80, 0x93, 0x32, 0x68, + 0x07, 0x16, 0x1c, 0x3d, 0x09, 0xe5, 0xce, 0xc6, 0xd7, 0x05, 0xd4, 0xc2, 0x7e, 0x92, 0x05, 0xa7, + 0xc9, 0xa1, 0x23, 0x80, 0x8e, 0x97, 0xb6, 0xed, 0xca, 0x04, 0x8f, 0xb0, 0x6b, 0x23, 0xaf, 0x1d, + 0x3f, 0xe3, 0x07, 0x71, 0xcd, 0x6f, 0xb2, 0x71, 0x08, 0x19, 0x7d, 0x02, 0xd3, 0x16, 0xdf, 0x10, + 0x78, 0x06, 0xbb, 0x45, 0xf5, 0x6b, 0x42, 0x6c, 0x1a, 0x87, 0x89, 0x38, 0xca, 0x9b, 0x52, 0x07, + 0x97, 0x47, 0xae, 0x83, 0xff, 0x49, 0x0a, 0x27, 0x21, 0xbf, 0x04, 0xfe, 0x38, 0x52, 0x1e, 0xdd, + 0x8b, 0x95, 0x47, 0x8b, 0x49, 0x89, 0x50, 0x75, 0x64, 0xa4, 0x57, 0xbf, 0x1f, 0x8e, 0x55, 0xfd, + 0x06, 0xc9, 0x73, 0x78, 0xf9, 0xfb, 0x23, 0x09, 0x16, 0x1f, 0xb7, 0x9e, 0x58, 0x86, 0x63, 0x7a, + 0xe6, 0xec, 0x99, 0xae, 0x5f, 0xbf, 0x06, 0x05, 0xcb, 0xd1, 0xbc, 0x7e, 0xbc, 0xe9, 0xf5, 0x03, + 0x3b, 0x1a, 0xeb, 0xc7, 0x42, 0x4c, 0xca, 0xed, 0x04, 0x13, 0x40, 0xbb, 0x30, 0x61, 0x29, 0x7a, + 0x8f, 0x78, 0x69, 0xf5, 0xde, 0x10, 0xeb, 0xb7, 0x36, 0x31, 0x63, 0x0f, 0x15, 0x6f, 0x5c, 0x1a, + 0x0b, 0x14, 0xf9, 0x4f, 0x24, 0x98, 0x7d, 0xda, 0x6e, 0x37, 0xb7, 0x74, 0xbe, 0xa2, 0xf9, 0xe1, + 0xeb, 0x2a, 0x14, 0x4c, 0x85, 0x1e, 0xc7, 0x33, 0x3d, 0xa3, 0x61, 0x4e, 0x41, 0xbf, 0x03, 0x25, + 0x16, 0x49, 0x88, 0xde, 0x1d, 0xb1, 0xd4, 0x16, 0xf0, 0x0d, 0x57, 0x28, 0xa8, 0x10, 0x45, 0x03, + 0xf6, 0xe0, 0xe4, 0x13, 0xb8, 0x13, 0x32, 0x87, 0xf9, 0x83, 0x9f, 0x19, 0xa2, 0x16, 0x14, 0x99, + 0x66, 0xef, 0x48, 0x70, 0xd8, 0xc9, 0x57, 0xac, 0x4b, 0x41, 0xa5, 0xc3, 0xbe, 0x6c, 0xec, 0x62, + 0xc9, 0x3b, 0x30, 0xcd, 0x4f, 0x9c, 0x0d, 0x8b, 0x72, 0xb7, 0xa0, 0xbb, 0x90, 0xef, 0xab, 0xba, + 0xc8, 0xb3, 0x53, 0x42, 0x26, 0xcf, 0x72, 0x04, 0x6b, 0xe7, 0x64, 0xe5, 0x4c, 0x44, 0x9e, 0x80, + 0xac, 0x9c, 0x61, 0xd6, 0x2e, 0x3f, 0x81, 0x92, 0x70, 0x77, 0x18, 0x28, 0x7f, 0x39, 0x50, 0x3e, + 0x05, 0x68, 0x0f, 0x4a, 0x5b, 0xcd, 0x86, 0x66, 0xb8, 0x55, 0x57, 0x47, 0xed, 0x5a, 0xf1, 0xb1, + 0xd8, 0xd8, 0xda, 0xc4, 0x98, 0x53, 0x90, 0x0c, 0x13, 0xe4, 0xac, 0x43, 0x4c, 0xca, 0x67, 0xc4, + 0x64, 0x03, 0xd8, 0x28, 0x3f, 0xe2, 0x2d, 0x58, 0x50, 0xe4, 0x3f, 0xcd, 0x41, 0x49, 0xb8, 0xe3, + 0x06, 0x76, 0x61, 0xdb, 0x91, 0x5d, 0xd8, 0xdb, 0xa3, 0x4d, 0x8d, 0xcc, 0x2d, 0x58, 0x3b, 0xb6, + 0x05, 0x7b, 0x67, 0x44, 0xbc, 0xcb, 0xf7, 0x5f, 0x3f, 0x96, 0x60, 0x26, 0x3a, 0x29, 0xd1, 0x43, + 0x98, 0x62, 0x09, 0x47, 0xed, 0x90, 0xdd, 0xa0, 0xce, 0xf5, 0x4f, 0x47, 0x5a, 0x01, 0x09, 0x87, + 0xf9, 0x50, 0xcf, 0x17, 0x63, 0xf3, 0x48, 0x74, 0x3a, 0xdb, 0xa5, 0x0e, 0x55, 0xb5, 0x9a, 0x7b, + 0x71, 0x52, 0xdb, 0xd2, 0xe9, 0x9e, 0xd5, 0xa2, 0x96, 0xaa, 0xf7, 0x12, 0x8a, 0xf8, 0xa4, 0x0c, + 0x23, 0xcb, 0xff, 0x28, 0xc1, 0x94, 0x30, 0xf9, 0x06, 0x76, 0x15, 0xbf, 0x1d, 0xdd, 0x55, 0xdc, + 0x1b, 0x71, 0x81, 0xa7, 0x6f, 0x29, 0xfe, 0x26, 0x30, 0x9d, 0x2d, 0x69, 0x36, 0xab, 0x8f, 0x0d, + 0x9b, 0xc6, 0x67, 0x35, 0x5b, 0x8c, 0x98, 0x53, 0x90, 0x03, 0x73, 0x6a, 0x2c, 0x06, 0x08, 0xd7, + 0xd6, 0x47, 0xb3, 0xc4, 0x17, 0x6b, 0x54, 0x04, 0xfc, 0x5c, 0x9c, 0x82, 0x13, 0x2a, 0x64, 0x02, + 0x09, 0x2e, 0xf4, 0x29, 0x14, 0x8e, 0x29, 0x35, 0x53, 0x0e, 0x92, 0x87, 0x44, 0x9e, 0xc0, 0x84, + 0x32, 0xef, 0x5d, 0xbb, 0xdd, 0xc4, 0x1c, 0x4a, 0xfe, 0x9f, 0xc0, 0x1f, 0x2d, 0x77, 0x8e, 0xfb, + 0xf1, 0x54, 0xba, 0x4a, 0x3c, 0x9d, 0x4a, 0x8b, 0xa5, 0xe8, 0x29, 0xe4, 0xa9, 0x36, 0xea, 0xb6, + 0x50, 0x20, 0xb6, 0xb7, 0x5b, 0x41, 0x40, 0x6a, 0x6f, 0xb7, 0x30, 0x83, 0x40, 0x7b, 0x50, 0x64, + 0xd9, 0x87, 0x2d, 0xc1, 0xfc, 0xe8, 0x4b, 0x9a, 0xf5, 0x3f, 0x98, 0x10, 0xec, 0xcb, 0xc6, 0x2e, + 0x8e, 0xfc, 0x5d, 0x98, 0x8e, 0xac, 0x53, 0xf4, 0x39, 0xdc, 0xd6, 0x0c, 0xa5, 0xdb, 0x50, 0x34, + 0x45, 0xef, 0x10, 0xef, 0xd4, 0xfe, 0x5e, 0xda, 0x0e, 0x63, 0x3b, 0xc4, 0x27, 0x56, 0xb9, 0x7f, + 0xf7, 0x16, 0xa6, 0xe1, 0x08, 0xa2, 0xac, 0x00, 0x04, 0x7d, 0x44, 0x55, 0x28, 0xb2, 0x79, 0xe6, + 0xe6, 0x93, 0xc9, 0xc6, 0x24, 0xb3, 0x90, 0x4d, 0x3f, 0x1b, 0xbb, 0xed, 0x68, 0x0d, 0xc0, 0x26, + 0x1d, 0x8b, 0x50, 0x1e, 0x0c, 0x72, 0xd1, 0x1b, 0xc8, 0x96, 0x4f, 0xc1, 0x21, 0x2e, 0xf9, 0x9f, + 0x25, 0x98, 0xde, 0x25, 0xf4, 0x7b, 0x86, 0x75, 0xd2, 0xe4, 0x97, 0xc5, 0x37, 0x10, 0x6c, 0x71, + 0x24, 0xd8, 0xbe, 0x37, 0x64, 0x64, 0x22, 0xd6, 0x65, 0x85, 0x5c, 0xf9, 0xa7, 0x12, 0x2c, 0x45, + 0x38, 0x1f, 0x05, 0x4b, 0x77, 0x1f, 0x8a, 0xa6, 0x61, 0x51, 0x2f, 0x11, 0x8f, 0xa5, 0x90, 0x85, + 0xb1, 0x50, 0x2a, 0x66, 0x30, 0xd8, 0x45, 0x43, 0xdb, 0x90, 0xa3, 0x86, 0x98, 0xaa, 0xe3, 0x61, + 0x12, 0x62, 0x35, 0x40, 0x60, 0xe6, 0xda, 0x06, 0xce, 0x51, 0x83, 0x0d, 0x44, 0x25, 0xc2, 0x15, + 0x0e, 0x3e, 0xd7, 0xd4, 0x03, 0x0c, 0x85, 0x23, 0xcb, 0xe8, 0x5f, 0xb9, 0x0f, 0xfe, 0x40, 0x3c, + 0xb6, 0x8c, 0x3e, 0xe6, 0x58, 0xf2, 0xcf, 0x24, 0x98, 0x8f, 0x70, 0xde, 0x40, 0xe0, 0xff, 0x34, + 0x1a, 0xf8, 0xdf, 0x19, 0xa7, 0x23, 0x19, 0xe1, 0xff, 0x67, 0xb9, 0x58, 0x37, 0x58, 0x87, 0xd1, + 0x11, 0x4c, 0x99, 0x46, 0xb7, 0xf5, 0x0a, 0xee, 0xe9, 0x66, 0x59, 0xde, 0x6c, 0x06, 0x58, 0x38, + 0x0c, 0x8c, 0xce, 0x60, 0x5e, 0x57, 0xfa, 0xc4, 0x36, 0x95, 0x0e, 0x69, 0xbd, 0x82, 0x03, 0x92, + 0xd7, 0xf8, 0x45, 0x40, 0x1c, 0x11, 0x27, 0x95, 0xa0, 0x1d, 0x28, 0xa9, 0x26, 0xaf, 0xe3, 0x44, + 0xed, 0x32, 0x34, 0x8b, 0xba, 0x55, 0x9f, 0x1b, 0xcf, 0xc5, 0x07, 0xf6, 0x30, 0xe4, 0xbf, 0x8d, + 0xcf, 0x06, 0x36, 0xff, 0xd0, 0x13, 0x28, 0xf3, 0x67, 0x17, 0x1d, 0x43, 0xf3, 0x6e, 0x06, 0xd8, + 0xc8, 0x36, 0x45, 0xdb, 0xcb, 0xf3, 0xea, 0xeb, 0x29, 0x87, 0xbe, 0x1e, 0x19, 0xfb, 0xc2, 0x68, + 0x17, 0x0a, 0xe6, 0x97, 0xa9, 0x60, 0x78, 0x92, 0xe3, 0x65, 0x0b, 0xc7, 0x91, 0xff, 0x30, 0x1f, + 0x33, 0x97, 0xa7, 0xba, 0xe7, 0xaf, 0x6c, 0xd4, 0xfd, 0x8a, 0x29, 0x73, 0xe4, 0x0f, 0xa1, 0x24, + 0x32, 0xbc, 0x98, 0xcc, 0x5f, 0x1b, 0x67, 0x32, 0x87, 0xb3, 0x98, 0xbf, 0x61, 0xf1, 0x1a, 0x3d, + 0x60, 0xf4, 0x1d, 0x98, 0x20, 0xae, 0x0a, 0x37, 0x37, 0x7e, 0x38, 0x8e, 0x8a, 0x20, 0xae, 0x06, + 0x85, 0xaa, 0x68, 0x13, 0xa8, 0xe8, 0x1b, 0xcc, 0x5f, 0x8c, 0x97, 0x6d, 0x02, 0xed, 0x4a, 0x81, + 0xa7, 0xab, 0xbb, 0x6e, 0xb7, 0xfd, 0xe6, 0x97, 0xe7, 0x55, 0x08, 0x3e, 0x71, 0x58, 0x42, 0xfe, + 0x57, 0x09, 0xe6, 0xb9, 0x87, 0x3a, 0x8e, 0xa5, 0xd2, 0xc1, 0x8d, 0x25, 0xa6, 0x83, 0x48, 0x62, + 0xfa, 0x60, 0x88, 0x5b, 0x12, 0x16, 0x66, 0x26, 0xa7, 0x9f, 0x4b, 0xf0, 0x5a, 0x82, 0xfb, 0x06, + 0xe2, 0xe2, 0x7e, 0x34, 0x2e, 0xbe, 0x37, 0x6e, 0x87, 0x32, 0x62, 0xe3, 0x5f, 0xdd, 0x4e, 0xe9, + 0x0e, 0x5f, 0x29, 0x6b, 0x00, 0xa6, 0xa5, 0x9e, 0xaa, 0x1a, 0xe9, 0x89, 0xdb, 0xe9, 0x72, 0xe8, + 0x0d, 0x94, 0x4f, 0xc1, 0x21, 0x2e, 0x64, 0xc3, 0x62, 0x97, 0x1c, 0x29, 0x8e, 0x46, 0xd7, 0xbb, + 0xdd, 0x0d, 0xc5, 0x54, 0x0e, 0x55, 0x4d, 0xa5, 0xaa, 0x38, 0x2e, 0x98, 0x6c, 0x7c, 0xe2, 0xde, + 0x1a, 0xa7, 0x71, 0xbc, 0x3c, 0xaf, 0xde, 0x4d, 0xbb, 0x1d, 0xf2, 0x58, 0x06, 0x38, 0x03, 0x1a, + 0x0d, 0xa0, 0x62, 0x91, 0xef, 0x3a, 0xaa, 0x45, 0xba, 0x9b, 0x96, 0x61, 0x46, 0xd4, 0xe6, 0xb9, + 0xda, 0xdf, 0xbc, 0x38, 0xaf, 0x56, 0x70, 0x06, 0xcf, 0x70, 0xc5, 0x99, 0xf0, 0xe8, 0x39, 0x2c, + 0x28, 0xee, 0xd3, 0xb1, 0x88, 0x56, 0x77, 0x95, 0x7c, 0x74, 0x71, 0x5e, 0x5d, 0x58, 0x4f, 0x92, + 0x87, 0x2b, 0x4c, 0x03, 0x45, 0x75, 0x28, 0x9d, 0x1a, 0x9a, 0xd3, 0x27, 0x76, 0xa5, 0xc8, 0xf1, + 0x59, 0x22, 0x28, 0x1d, 0xb8, 0x4d, 0x2f, 0xcf, 0xab, 0x13, 0x8f, 0x5b, 0x7c, 0xf5, 0x79, 0x5c, + 0x6c, 0x43, 0xc9, 0x6a, 0x49, 0xb1, 0xe2, 0xf9, 0x89, 0x71, 0x39, 0x88, 0x5a, 0x4f, 0x03, 0x12, + 0x0e, 0xf3, 0xa1, 0x67, 0x30, 0x79, 0x2c, 0x4e, 0x25, 0xec, 0x4a, 0x69, 0xa4, 0x24, 0x1c, 0x39, + 0xc5, 0x68, 0xcc, 0x0b, 0x15, 0x93, 0x5e, 0xb3, 0x8d, 0x03, 0x44, 0xf4, 0x16, 0x94, 0xf8, 0xc7, + 0xd6, 0x26, 0x3f, 0x8e, 0x2b, 0x07, 0xb1, 0xed, 0xa9, 0xdb, 0x8c, 0x3d, 0xba, 0xc7, 0xba, 0xd5, + 0xdc, 0xe0, 0xc7, 0xc2, 0x31, 0xd6, 0xad, 0xe6, 0x06, 0xf6, 0xe8, 0xe8, 0x73, 0x28, 0xd9, 0x64, + 0x5b, 0xd5, 0x9d, 0xb3, 0x0a, 0x8c, 0x74, 0xa9, 0xdc, 0x7a, 0xc4, 0xb9, 0x63, 0x07, 0x63, 0x81, + 0x06, 0x41, 0xc7, 0x1e, 0x2c, 0x3a, 0x86, 0x49, 0xcb, 0xd1, 0xd7, 0xed, 0x7d, 0x9b, 0x58, 0x95, + 0x29, 0xae, 0x63, 0x58, 0x38, 0xc7, 0x1e, 0x7f, 0x5c, 0x8b, 0xef, 0x21, 0x9f, 0x03, 0x07, 0xe0, + 0xe8, 0x8f, 0x25, 0x40, 0xb6, 0x63, 0x9a, 0x1a, 0xe9, 0x13, 0x9d, 0x2a, 0x1a, 0x3f, 0x8b, 0xb3, + 0x2b, 0xb7, 0xb9, 0xce, 0xdf, 0x1a, 0xd6, 0xaf, 0x84, 0x60, 0x5c, 0xb9, 0x7f, 0xe8, 0x9d, 0x64, + 0xc5, 0x29, 0x7a, 0x99, 0x6b, 0x8f, 0x6c, 0xfe, 0xbb, 0x32, 0x3d, 0x92, 0x6b, 0xd3, 0xcf, 0x1c, + 0x03, 0xd7, 0x0a, 0x3a, 0xf6, 0x60, 0xd1, 0x01, 0x2c, 0x5a, 0x44, 0xe9, 0xee, 0xe9, 0xda, 0x00, + 0x1b, 0x06, 0x7d, 0xac, 0x6a, 0xc4, 0x1e, 0xd8, 0x94, 0xf4, 0x2b, 0x33, 0x7c, 0xd8, 0xfd, 0x47, + 0x19, 0x38, 0x95, 0x0b, 0x67, 0x48, 0xa3, 0x3e, 0x54, 0xbd, 0x90, 0xc1, 0xd6, 0x93, 0x1f, 0xb3, + 0x1e, 0xd9, 0x1d, 0x45, 0x73, 0xef, 0x01, 0x66, 0xb9, 0x82, 0x37, 0x2f, 0xce, 0xab, 0xd5, 0xcd, + 0xcb, 0x59, 0xf1, 0x30, 0x2c, 0xf4, 0x6d, 0xa8, 0x28, 0x59, 0x7a, 0xe6, 0xb8, 0x9e, 0x55, 0xd1, + 0x91, 0x4a, 0xa6, 0x92, 0x4c, 0x04, 0x44, 0x61, 0x4e, 0x89, 0xbe, 0x52, 0xb5, 0x2b, 0xf3, 0x23, + 0x1d, 0x46, 0xc6, 0x1e, 0xb7, 0x06, 0x07, 0x12, 0x31, 0x82, 0x8d, 0x13, 0x1a, 0xf8, 0x13, 0x0a, + 0x71, 0xa0, 0x7e, 0x33, 0x6f, 0x16, 0xc7, 0x7b, 0x42, 0x11, 0x98, 0xf6, 0xca, 0x9e, 0x50, 0x84, + 0x20, 0x2f, 0x3f, 0xc2, 0xfb, 0xaf, 0x1c, 0x2c, 0x04, 0xcc, 0x23, 0x3f, 0xa1, 0x48, 0x11, 0xb9, + 0xb6, 0x27, 0x14, 0xe9, 0x6f, 0x10, 0xf2, 0xd7, 0xfd, 0x06, 0xe1, 0x1a, 0x9e, 0x6e, 0xf0, 0x67, + 0x0d, 0x81, 0xeb, 0xfe, 0xef, 0x3d, 0x6b, 0x08, 0x6c, 0xcb, 0x28, 0xb4, 0xfe, 0x3e, 0x17, 0xee, + 0xc0, 0xff, 0xfb, 0xbb, 0xf5, 0x2f, 0xff, 0xb0, 0x53, 0xfe, 0x79, 0x1e, 0xe6, 0xe2, 0xab, 0x31, + 0x72, 0x05, 0x2b, 0x0d, 0xbd, 0x82, 0x6d, 0xc2, 0x9d, 0x23, 0x47, 0xd3, 0x06, 0xdc, 0x0d, 0xa1, + 0x7b, 0x58, 0xf7, 0x0a, 0xe5, 0x0d, 0x21, 0x79, 0xe7, 0x71, 0x0a, 0x0f, 0x4e, 0x95, 0xcc, 0xb8, + 0x4e, 0xce, 0x5f, 0xe9, 0x3a, 0x39, 0x71, 0xbb, 0x59, 0x18, 0xe3, 0x76, 0x33, 0xf5, 0x6a, 0xb8, + 0x78, 0x85, 0xab, 0xe1, 0xab, 0xdc, 0xe5, 0xa6, 0x04, 0xb1, 0x61, 0x77, 0xb9, 0xf2, 0x1b, 0xb0, + 0x2c, 0xc4, 0x28, 0xbf, 0x66, 0xd5, 0xa9, 0x65, 0x68, 0x1a, 0xb1, 0x36, 0x9d, 0x7e, 0x7f, 0x20, + 0x7f, 0x1d, 0x66, 0xa2, 0x0f, 0x08, 0xdc, 0x91, 0x76, 0xdf, 0x30, 0x88, 0x8b, 0xac, 0xd0, 0x48, + 0xbb, 0xed, 0xd8, 0xe7, 0x90, 0xbf, 0x2f, 0xc1, 0x62, 0xfa, 0x43, 0x41, 0xa4, 0xc1, 0x4c, 0x5f, + 0x39, 0x0b, 0xbf, 0xaa, 0x94, 0xae, 0x78, 0xc4, 0xc0, 0x6f, 0x8e, 0x77, 0x22, 0x58, 0x38, 0x86, + 0x2d, 0xff, 0x4a, 0x82, 0xa5, 0x8c, 0x3b, 0xdb, 0x9b, 0xb5, 0x04, 0x7d, 0x06, 0xe5, 0xbe, 0x72, + 0xd6, 0x72, 0xac, 0x1e, 0xb9, 0xf2, 0xa1, 0x0a, 0x8f, 0x18, 0x3b, 0x02, 0x05, 0xfb, 0x78, 0xf2, + 0x8f, 0x24, 0xa8, 0x64, 0x95, 0xb7, 0xe8, 0x61, 0xe4, 0x76, 0xf9, 0xab, 0xb1, 0xdb, 0xe5, 0xf9, + 0x84, 0xdc, 0x35, 0xdd, 0x2d, 0xff, 0x9d, 0x04, 0x8b, 0xe9, 0x65, 0x3e, 0x7a, 0x3f, 0x62, 0x61, + 0x35, 0x66, 0xe1, 0x6c, 0x4c, 0x4a, 0xd8, 0xf7, 0x1d, 0x98, 0x11, 0x9b, 0x01, 0x01, 0x23, 0xbc, + 0x2a, 0xa7, 0xc5, 0x4a, 0x01, 0xe1, 0x15, 0xbf, 0x7c, 0xbc, 0xa2, 0x6d, 0x38, 0x86, 0x26, 0xff, + 0x51, 0x0e, 0x8a, 0xad, 0x8e, 0xa2, 0x91, 0x1b, 0x28, 0xb3, 0xbe, 0x19, 0x29, 0xb3, 0x86, 0xfd, + 0x03, 0x82, 0x5b, 0x95, 0x59, 0x61, 0xe1, 0x58, 0x85, 0xf5, 0xf6, 0x48, 0x68, 0x97, 0x17, 0x57, + 0xbf, 0x01, 0x93, 0xbe, 0xd2, 0xf1, 0x62, 0xbe, 0xfc, 0xd7, 0x39, 0x98, 0x0a, 0xa9, 0x18, 0x33, + 0x63, 0x1c, 0x45, 0x32, 0xed, 0x28, 0xff, 0x85, 0x0a, 0xe9, 0xaa, 0x79, 0xb9, 0xd5, 0x7d, 0x28, + 0x18, 0x3c, 0x0d, 0x4b, 0xa6, 0xdc, 0xaf, 0xc3, 0x0c, 0xe5, 0xff, 0x15, 0xf2, 0x8f, 0x22, 0xf3, + 0x7c, 0x2e, 0xfa, 0xcf, 0x4b, 0xdb, 0x11, 0x2a, 0x8e, 0x71, 0x2f, 0x7f, 0x02, 0xd3, 0x11, 0x65, + 0x63, 0xbd, 0xf3, 0xfb, 0x07, 0x09, 0xbe, 0x3a, 0x74, 0xa3, 0x88, 0x1a, 0x91, 0x45, 0x52, 0x8b, + 0x2d, 0x92, 0x95, 0x6c, 0x80, 0x6b, 0x7c, 0x2f, 0xf2, 0xfd, 0x1c, 0xa0, 0xf6, 0xb1, 0x6a, 0x75, + 0x9b, 0x8a, 0x45, 0x07, 0x58, 0xfc, 0xe1, 0xeb, 0x06, 0x16, 0xcc, 0x43, 0x98, 0xea, 0x12, 0xbb, + 0x63, 0xa9, 0xdc, 0x39, 0xa2, 0x3a, 0xf7, 0x0f, 0x53, 0x36, 0x03, 0x12, 0x0e, 0xf3, 0xa1, 0x6f, + 0x41, 0xf9, 0xd4, 0xfd, 0x23, 0xa2, 0x77, 0x40, 0x3b, 0xac, 0x90, 0x0c, 0xfe, 0xba, 0x18, 0xcc, + 0x1f, 0xd1, 0x60, 0x63, 0x1f, 0x4c, 0xfe, 0xa1, 0x04, 0x8b, 0x49, 0x47, 0x6c, 0x32, 0x53, 0xaf, + 0xdf, 0x19, 0x6f, 0x40, 0x81, 0xa3, 0x33, 0x2f, 0xdc, 0x76, 0x0f, 0xde, 0x99, 0x66, 0xcc, 0x5b, + 0xe5, 0x7f, 0x97, 0x60, 0x39, 0xdd, 0xb4, 0x1b, 0x28, 0xdb, 0x3f, 0x8b, 0x96, 0xed, 0xc3, 0xce, + 0x2a, 0xd2, 0xed, 0xcc, 0x28, 0xe1, 0xff, 0x2d, 0xd5, 0xe7, 0x37, 0xd0, 0xa9, 0x83, 0x68, 0xa7, + 0x1e, 0x8c, 0xdd, 0xa9, 0xf4, 0x0e, 0x35, 0xde, 0x7d, 0xf1, 0xc5, 0xca, 0xad, 0x5f, 0x7c, 0xb1, + 0x72, 0xeb, 0x97, 0x5f, 0xac, 0xdc, 0xfa, 0x83, 0x8b, 0x15, 0xe9, 0xc5, 0xc5, 0x8a, 0xf4, 0x8b, + 0x8b, 0x15, 0xe9, 0x97, 0x17, 0x2b, 0xd2, 0x7f, 0x5e, 0xac, 0x48, 0x7f, 0xf6, 0xab, 0x95, 0x5b, + 0x9f, 0x95, 0x04, 0xee, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x57, 0xe8, 0x50, 0x1c, 0x48, 0x3d, + 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.proto b/vendor/k8s.io/api/extensions/v1beta1/generated.proto new file mode 100644 index 0000000000..252a9db88a --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.proto @@ -0,0 +1,1124 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.extensions.v1beta1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/api/policy/v1beta1/generated.proto"; +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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 + optional string name = 1; +} + +// defines the host volume conditions that will be enabled by a policy +// for pods to use. It requires the path prefix to be defined. +message AllowedHostPath { + // is the path prefix that the host volume must match. + // It does not support `*`. + // Trailing slashes are trimmed when validating the path prefix with a host path. + // + // Examples: + // `/foo` would allow `/foo`, `/foo/` and `/foo/bar` + // `/foo` would not allow `/food` or `/etc/foo` + optional string pathPrefix = 1; +} + +message CustomMetricCurrentStatus { + // Custom Metric name. + optional string name = 1; + + // Custom Metric value (average). + optional k8s.io.apimachinery.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.apimachinery.pkg.api.resource.Quantity value = 2; +} + +message CustomMetricTargetList { + repeated CustomMetricTarget items = 1; +} + +// DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet. See the release notes for +// more information. +// DaemonSet represents the configuration of a daemon set. +message DaemonSet { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional DaemonSetSpec spec = 2; + + // 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional DaemonSetStatus status = 3; +} + +// DaemonSetList is a collection of daemon sets. +message DaemonSetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // A list of daemon sets. + repeated DaemonSet items = 2; +} + +// DaemonSetSpec is the specification of a daemon set. +message DaemonSetSpec { + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1; + + // An 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + optional k8s.io.api.core.v1.PodTemplateSpec template = 2; + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + optional DaemonSetUpdateStrategy updateStrategy = 3; + + // The 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). + // +optional + optional int32 minReadySeconds = 4; + + // DEPRECATED. + // A sequence number representing a specific generation of the template. + // Populated by the system. It can be set only during the creation. + // +optional + optional int64 templateGeneration = 5; + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + optional int32 revisionHistoryLimit = 6; +} + +// DaemonSetStatus represents the current status of a daemon set. +message DaemonSetStatus { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 currentNumberScheduled = 1; + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 numberMisscheduled = 2; + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 desiredNumberScheduled = 3; + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + optional int32 numberReady = 4; + + // The most recent generation observed by the daemon set controller. + // +optional + optional int64 observedGeneration = 5; + + // The total number of nodes that are running updated daemon pod + // +optional + optional int32 updatedNumberScheduled = 6; + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + optional int32 numberAvailable = 7; + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + optional int32 numberUnavailable = 8; + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + optional int32 collisionCount = 9; +} + +message DaemonSetUpdateStrategy { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". + // Default is OnDelete. + // +optional + optional string type = 1; + + // Rolling update config params. Present only if type = "RollingUpdate". + // --- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + optional RollingUpdateDaemonSet rollingUpdate = 2; +} + +// DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for +// more information. +// Deployment enables declarative updates for Pods and ReplicaSets. +message Deployment { + // Standard object metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the Deployment. + // +optional + optional DeploymentSpec spec = 2; + + // Most recently observed status of the Deployment. + // +optional + optional DeploymentStatus status = 3; +} + +// DeploymentCondition describes the state of a deployment at a certain point. +message DeploymentCondition { + // Type of deployment condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time this condition was updated. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6; + + // Last time the condition transitioned from one status to another. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7; + + // The reason for the condition's last transition. + optional string reason = 4; + + // A human readable message indicating details about the transition. + optional string message = 5; +} + +// DeploymentList is a list of Deployments. +message DeploymentList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Deployments. + repeated Deployment items = 2; +} + +// DEPRECATED. +// 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 + // +optional + map 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 + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template describes the pods that will be created. + optional k8s.io.api.core.v1.PodTemplateSpec template = 3; + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + // +patchStrategy=retainKeys + 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 + 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 + optional int32 revisionHistoryLimit = 6; + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + // +optional + optional bool paused = 7; + + // DEPRECATED. + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + optional RollbackConfig rollbackTo = 8; + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Note that progress will + // not be estimated during the time a deployment is paused. This is not set + // by default. + // +optional + optional int32 progressDeadlineSeconds = 9; +} + +// DeploymentStatus is the most recently observed status of the Deployment. +message DeploymentStatus { + // The generation observed by the deployment controller. + // +optional + optional int64 observedGeneration = 1; + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + optional int32 replicas = 2; + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + optional int32 updatedReplicas = 3; + + // Total number of ready pods targeted by this deployment. + // +optional + optional int32 readyReplicas = 7; + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + optional int32 availableReplicas = 4; + + // Total number of unavailable pods targeted by this deployment. This is the total number of + // pods that are still required for the deployment to have 100% available capacity. They may + // either be pods that are running but not yet available or pods that still have not been created. + // +optional + optional int32 unavailableReplicas = 5; + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + repeated DeploymentCondition conditions = 6; + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + optional int32 collisionCount = 8; +} + +// DeploymentStrategy describes how to replace existing pods with new ones. +message DeploymentStrategy { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + 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 + optional RollingUpdateDeployment rollingUpdate = 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 + 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. + // +optional + 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 + 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:///? -> 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; +} + +// 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; +} + +// IPBlock describes a particular CIDR (Ex. "192.168.1.1/24") that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should +// not be included within this rule. +message IPBlock { + // CIDR is a string representing the IP Block + // Valid examples are "192.168.1.1/24" + optional string cidr = 1; + + // Except is a slice of CIDRs that should not be included within an IP Block + // Valid examples are "192.168.1.1/24" + // Except values will be rejected if they are outside the CIDR range + // +optional + repeated string except = 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec is the desired state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional IngressSpec spec = 2; + + // Status is the current state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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.apimachinery.pkg.util.intstr.IntOrString servicePort = 2; +} + +// IngressList is a collection of Ingress. +message IngressList { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + 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 + 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 + 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 + 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. + // +optional + 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. + // +optional + repeated IngressRule rules = 3; +} + +// IngressStatus describe the current state of the Ingress. +message IngressStatus { + // LoadBalancer contains the current status of the load-balancer. + // +optional + optional k8s.io.api.core.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. + // +optional + 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 + optional string secretName = 2; +} + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +message NetworkPolicy { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + optional NetworkPolicySpec spec = 2; +} + +// NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. +// This type is beta-level in 1.8 +message NetworkPolicyEgressRule { + // List of destination ports for outgoing traffic. + // Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + repeated NetworkPolicyPort ports = 1; + + // List of destinations for outgoing traffic of pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all destinations (traffic not restricted by + // destination). If this field is present and contains at least one item, this rule + // allows traffic only if the traffic matches at least one item in the to list. + // +optional + repeated NetworkPolicyPeer to = 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 empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + 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 empty or missing, this rule matches all sources (traffic not restricted by source). + // 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. + // +optional + repeated NetworkPolicyPeer from = 2; +} + +// Network Policy List is a list of NetworkPolicy objects. +message NetworkPolicyList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 present but empty, this selector selects all pods in this namespace. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 present but empty, this selector selects all namespaces. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2; + + // IPBlock defines policy on a particular IPBlock + // +optional + optional IPBlock ipBlock = 3; +} + +message NetworkPolicyPort { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + // +optional + 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 + optional k8s.io.apimachinery.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 k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1; + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod + // 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 allow any traffic + // (and serves solely to ensure that the pods it selects are isolated by default). + // +optional + repeated NetworkPolicyIngressRule ingress = 2; + + // List of egress rules to be applied to the selected pods. Outgoing traffic is + // allowed if there are no NetworkPolicies selecting the pod (and cluster policy + // otherwise allows the traffic), OR if the traffic matches at least one egress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy limits all outgoing traffic (and serves + // solely to ensure that the pods it selects are isolated by default). + // This field is beta-level in 1.8 + // +optional + repeated NetworkPolicyEgressRule egress = 3; + + // List of rule types that the NetworkPolicy relates to. + // Valid options are Ingress, Egress, or Ingress,Egress. + // If this field is not specified, it will default based on the existence of Ingress or Egress rules; + // policies that contain an Egress section are assumed to affect Egress, and all policies + // (whether or not they contain an Ingress section) are assumed to affect Ingress. + // If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. + // Likewise, if you want to write a policy that specifies that no egress is allowed, + // you must specify a policyTypes value that include "Egress" (since such a policy would not include + // an Egress section and would otherwise default to just [ "Ingress" ]). + // This field is beta-level in 1.8 + // +optional + repeated string policyTypes = 4; +} + +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // spec defines the policy enforced. + // +optional + optional PodSecurityPolicySpec spec = 2; +} + +// Pod Security Policy List is a list of PodSecurityPolicy objects. +message PodSecurityPolicyList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + 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. + // +optional + 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. + // +optional + 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. + // +optional + repeated string allowedCapabilities = 4; + + // volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + // +optional + repeated string volumes = 5; + + // hostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + // +optional + optional bool hostNetwork = 6; + + // hostPorts determines which host port ranges are allowed to be exposed. + // +optional + repeated HostPortRange hostPorts = 7; + + // hostPID determines if the policy allows the use of HostPID in the pod spec. + // +optional + optional bool hostPID = 8; + + // hostIPC determines if the policy allows the use of HostIPC in the pod spec. + // +optional + 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 + optional bool readOnlyRootFilesystem = 14; + + // DefaultAllowPrivilegeEscalation controls the default setting for whether a + // process can gain more privileges than its parent process. + // +optional + optional bool defaultAllowPrivilegeEscalation = 15; + + // AllowPrivilegeEscalation determines if a pod can request to allow + // privilege escalation. + // +optional + optional bool allowPrivilegeEscalation = 16; + + // is a white list of allowed host paths. Empty indicates that all host paths may be used. + // +optional + repeated AllowedHostPath allowedHostPaths = 17; +} + +// DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet. See the release notes for +// more information. +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicaSetStatus status = 3; +} + +// ReplicaSetCondition describes the state of a replica set at a certain point. +message ReplicaSetCondition { + // Type of replica set condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // The reason for the condition's last transition. + // +optional + optional string reason = 4; + + // A human readable message indicating details about the transition. + // +optional + optional string message = 5; +} + +// ReplicaSetList is a collection of ReplicaSets. +message ReplicaSetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ReplicaSets. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // +optional + optional int32 replicas = 1; + + // 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 + optional int32 minReadySeconds = 4; + + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + optional k8s.io.api.core.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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + // +optional + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replica set. + // +optional + optional int32 readyReplicas = 4; + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + optional int32 availableReplicas = 5; + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + // +optional + optional int64 observedGeneration = 3; + + // Represents the latest available observations of a replica set's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated ReplicaSetCondition conditions = 6; +} + +// Dummy definition +message ReplicationControllerDummy { +} + +// DEPRECATED. +message RollbackConfig { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + optional int64 revision = 1; +} + +// Spec to control the desired behavior of daemon set rolling update. +message RollingUpdateDaemonSet { + // 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%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, 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. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 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 down. + // 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 + optional k8s.io.apimachinery.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 + optional k8s.io.apimachinery.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. + // +optional + 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: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + optional k8s.io.api.core.v1.SELinuxOptions seLinuxOptions = 2; +} + +// represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// describes the attributes of a scale subresource +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + 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://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + map 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional string targetSelector = 3; +} + +// 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 + 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. + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Description is the description of this object. + // +optional + optional string description = 2; + + // Versions are versions for this third party object + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data is the raw JSON data for this data. + // +optional + optional bytes data = 2; +} + +// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. +message ThirdPartyResourceDataList { + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ThirdPartyResources. + repeated ThirdPartyResource items = 2; +} + diff --git a/vendor/k8s.io/api/extensions/v1beta1/register.go b/vendor/k8s.io/api/extensions/v1beta1/register.go new file mode 100644 index 0000000000..626701cf01 --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/register.go @@ -0,0 +1,70 @@ +/* +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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "extensions" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &ReplicationControllerDummy{}, + &Scale{}, + &ThirdPartyResource{}, + &ThirdPartyResourceList{}, + &DaemonSetList{}, + &DaemonSet{}, + &ThirdPartyResourceData{}, + &ThirdPartyResourceDataList{}, + &Ingress{}, + &IngressList{}, + &ReplicaSet{}, + &ReplicaSetList{}, + &PodSecurityPolicy{}, + &PodSecurityPolicyList{}, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/extensions/v1beta1/types.go b/vendor/k8s.io/api/extensions/v1beta1/types.go new file mode 100644 index 0000000000..8b552ae27f --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/types.go @@ -0,0 +1,1315 @@ +/* +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 ( + appsv1beta1 "k8s.io/api/apps/v1beta1" + "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + 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://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` +} + +// +genclient +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Dummy definition +type ReplicationControllerDummy struct { + metav1.TypeMeta `json:",inline"` +} + +// 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"` +} + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + + // Standard object metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Description is the description of this object. + // +optional + Description string `json:"description,omitempty" protobuf:"bytes,2,opt,name=description"` + + // Versions are versions for this third party object + // +optional + Versions []APIVersion `json:"versions,omitempty" protobuf:"bytes,3,rep,name=versions"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ThirdPartyResourceList is a list of ThirdPartyResources. +type ThirdPartyResourceList struct { + metav1.TypeMeta `json:",inline"` + + // Standard list metadata. + // +optional + metav1.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'). + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +type ThirdPartyResourceData struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data is the raw JSON data for this data. + // +optional + Data []byte `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"` +} + +// +genclient +// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale +// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for +// more information. +// Deployment enables declarative updates for Pods and ReplicaSets. +type Deployment struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the Deployment. + // +optional + Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the Deployment. + // +optional + 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. + // +optional + 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. + // +optional + Selector *metav1.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. + // +optional + // +patchStrategy=retainKeys + Strategy DeploymentStrategy `json:"strategy,omitempty" patchStrategy:"retainKeys" 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) + // +optional + 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. + // +optional + 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. + // +optional + Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` + + // DEPRECATED. + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + RollbackTo *RollbackConfig `json:"rollbackTo,omitempty" protobuf:"bytes,8,opt,name=rollbackTo"` + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Note that progress will + // not be estimated during the time a deployment is paused. This is not set + // by default. + // +optional + ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED. +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + metav1.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 + // +optional + 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"` +} + +// DEPRECATED. +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + 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. + // +optional + 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. + // +optional + 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 down. + // 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 + 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. + // +optional + 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. + // +optional + 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). + // +optional + 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. + // +optional + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` + + // Total number of ready pods targeted by this deployment. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` + + // Total number of unavailable pods targeted by this deployment. This is the total number of + // pods that are still required for the deployment to have 100% available capacity. They may + // either be pods that are running but not yet available or pods that still have not been created. + // +optional + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"` + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,8,opt,name=collisionCount"` +} + +type DeploymentConditionType string + +// These are valid conditions of a deployment. +const ( + // Available means the deployment is available, ie. at least the minimum available + // replicas required are up and running for at least minReadySeconds. + DeploymentAvailable DeploymentConditionType = "Available" + // Progressing means the deployment is progressing. Progress for a deployment is + // considered when a new replica set is created or adopted, and when new pods scale + // up or old pods scale down. Progress is not estimated for paused deployments or + // when progressDeadlineSeconds is not specified. + DeploymentProgressing DeploymentConditionType = "Progressing" + // ReplicaFailure is added in a deployment when one of its pods fails to be created + // or deleted. + DeploymentReplicaFailure DeploymentConditionType = "ReplicaFailure" +) + +// DeploymentCondition describes the state of a deployment at a certain point. +type DeploymentCondition struct { + // Type of deployment condition. + Type DeploymentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=DeploymentConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"` + // The last time this condition was updated. + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,6,opt,name=lastUpdateTime"` + // Last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,7,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DeploymentList is a list of Deployments. +type DeploymentList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.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"` +} + +type DaemonSetUpdateStrategy struct { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". + // Default is OnDelete. + // +optional + Type DaemonSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` + + // Rolling update config params. Present only if type = "RollingUpdate". + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +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" + + // Replace the old daemons only when it's killed + OnDeleteDaemonSetStrategyType DaemonSetUpdateStrategyType = "OnDelete" +) + +// 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%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, 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. + // +optional + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"` +} + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,opt,name=selector"` + + // An 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,2,opt,name=template"` + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + UpdateStrategy DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,3,opt,name=updateStrategy"` + + // The 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). + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // DEPRECATED. + // A sequence number representing a specific generation of the template. + // Populated by the system. It can be set only during the creation. + // +optional + TemplateGeneration int64 `json:"templateGeneration,omitempty" protobuf:"varint,5,opt,name=templateGeneration"` + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` +} + +// DaemonSetStatus represents the current status of a daemon set. +type DaemonSetStatus struct { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + CurrentNumberScheduled int32 `json:"currentNumberScheduled" protobuf:"varint,1,opt,name=currentNumberScheduled"` + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + NumberMisscheduled int32 `json:"numberMisscheduled" protobuf:"varint,2,opt,name=numberMisscheduled"` + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + DesiredNumberScheduled int32 `json:"desiredNumberScheduled" protobuf:"varint,3,opt,name=desiredNumberScheduled"` + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + NumberReady int32 `json:"numberReady" protobuf:"varint,4,opt,name=numberReady"` + + // The most recent generation observed by the daemon set controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,5,opt,name=observedGeneration"` + + // The total number of nodes that are running updated daemon pod + // +optional + UpdatedNumberScheduled int32 `json:"updatedNumberScheduled,omitempty" protobuf:"varint,6,opt,name=updatedNumberScheduled"` + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + NumberAvailable int32 `json:"numberAvailable,omitempty" protobuf:"varint,7,opt,name=numberAvailable"` + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + NumberUnavailable int32 `json:"numberUnavailable,omitempty" protobuf:"varint,8,opt,name=numberUnavailable"` + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet. See the release notes for +// more information. +// DaemonSet represents the configuration of a daemon set. +type DaemonSet struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec DaemonSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status DaemonSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +const ( + // DEPRECATED: DefaultDaemonSetUniqueLabelKey is used instead. + // DaemonSetTemplateGenerationKey is the key of the labels that is added + // to daemon set pods to distinguish between old and new pod templates + // during DaemonSet template update. + DaemonSetTemplateGenerationKey string = "pod-template-generation" + + // DefaultDaemonSetUniqueLabelKey is the default label key that is added + // to existing DaemonSet pods to distinguish between old and new + // DaemonSet pods during DaemonSet template updates. + DefaultDaemonSetUniqueLabelKey = appsv1beta1.ControllerRevisionHashLabelKey +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DaemonSetList is a collection of daemon sets. +type DaemonSetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // A list of daemon sets. + Items []DaemonSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. +type ThirdPartyResourceDataList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is the desired state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec IngressSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status IngressStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// IngressList is a collection of Ingress. +type IngressList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + + // +optional + 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:///? -> 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. + // +optional + 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"` +} + +// +genclient +// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale +// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet. See the release notes for +// more information. +// ReplicaSet represents the configuration of a ReplicaSet. +type ReplicaSet struct { + metav1.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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ReplicaSetList is a collection of ReplicaSets. +type ReplicaSetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ReplicaSets. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // 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 + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + 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. + // +optional + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replica set. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` + + // Represents the latest available observations of a replica set's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` +} + +type ReplicaSetConditionType string + +// These are valid conditions of a replica set. +const ( + // ReplicaSetReplicaFailure is added in a replica set when one of its pods fails to be created + // due to insufficient quota, limit ranges, pod security policy, node selectors, etc. or deleted + // due to kubelet being down or finalizers are failing. + ReplicaSetReplicaFailure ReplicaSetConditionType = "ReplicaFailure" +) + +// ReplicaSetCondition describes the state of a replica set at a certain point. +type ReplicaSetCondition struct { + // Type of replica set condition. + Type ReplicaSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ReplicaSetConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"` + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // spec defines the policy enforced. + // +optional + 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. + // +optional + 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. + // +optional + DefaultAddCapabilities []v1.Capability `json:"defaultAddCapabilities,omitempty" protobuf:"bytes,2,rep,name=defaultAddCapabilities,casttype=k8s.io/api/core/v1.Capability"` + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + // +optional + RequiredDropCapabilities []v1.Capability `json:"requiredDropCapabilities,omitempty" protobuf:"bytes,3,rep,name=requiredDropCapabilities,casttype=k8s.io/api/core/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. + // +optional + AllowedCapabilities []v1.Capability `json:"allowedCapabilities,omitempty" protobuf:"bytes,4,rep,name=allowedCapabilities,casttype=k8s.io/api/core/v1.Capability"` + // volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + // +optional + 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. + // +optional + HostNetwork bool `json:"hostNetwork,omitempty" protobuf:"varint,6,opt,name=hostNetwork"` + // hostPorts determines which host port ranges are allowed to be exposed. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + ReadOnlyRootFilesystem bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,14,opt,name=readOnlyRootFilesystem"` + // DefaultAllowPrivilegeEscalation controls the default setting for whether a + // process can gain more privileges than its parent process. + // +optional + DefaultAllowPrivilegeEscalation *bool `json:"defaultAllowPrivilegeEscalation,omitempty" protobuf:"varint,15,opt,name=defaultAllowPrivilegeEscalation"` + // AllowPrivilegeEscalation determines if a pod can request to allow + // privilege escalation. + // +optional + AllowPrivilegeEscalation bool `json:"allowPrivilegeEscalation,omitempty" protobuf:"varint,16,opt,name=allowPrivilegeEscalation"` + // is a white list of allowed host paths. Empty indicates that all host paths may be used. + // +optional + AllowedHostPaths []AllowedHostPath `json:"allowedHostPaths,omitempty" protobuf:"bytes,17,rep,name=allowedHostPaths"` +} + +// defines the host volume conditions that will be enabled by a policy +// for pods to use. It requires the path prefix to be defined. +type AllowedHostPath struct { + // is the path prefix that the host volume must match. + // It does not support `*`. + // Trailing slashes are trimmed when validating the path prefix with a host path. + // + // Examples: + // `/foo` would allow `/foo`, `/foo/` and `/foo/bar` + // `/foo` would not allow `/food` or `/etc/foo` + PathPrefix string `json:"pathPrefix,omitempty" protobuf:"bytes,1,rep,name=pathPrefix"` +} + +// 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: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Pod Security Policy List is a list of PodSecurityPolicy objects. +type PodSecurityPolicyList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +type NetworkPolicy struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + Spec NetworkPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// Policy Type string describes the NetworkPolicy type +// This type is beta-level in 1.8 +type PolicyType string + +const ( + // PolicyTypeIngress is a NetworkPolicy that affects ingress traffic on selected pods + PolicyTypeIngress PolicyType = "Ingress" + // PolicyTypeEgress is a NetworkPolicy that affects egress traffic on selected pods + PolicyTypeEgress PolicyType = "Egress" +) + +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 metav1.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 there are no NetworkPolicies selecting the pod + // 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 allow any traffic + // (and serves solely to ensure that the pods it selects are isolated by default). + // +optional + Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"` + + // List of egress rules to be applied to the selected pods. Outgoing traffic is + // allowed if there are no NetworkPolicies selecting the pod (and cluster policy + // otherwise allows the traffic), OR if the traffic matches at least one egress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy limits all outgoing traffic (and serves + // solely to ensure that the pods it selects are isolated by default). + // This field is beta-level in 1.8 + // +optional + Egress []NetworkPolicyEgressRule `json:"egress,omitempty" protobuf:"bytes,3,rep,name=egress"` + + // List of rule types that the NetworkPolicy relates to. + // Valid options are Ingress, Egress, or Ingress,Egress. + // If this field is not specified, it will default based on the existence of Ingress or Egress rules; + // policies that contain an Egress section are assumed to affect Egress, and all policies + // (whether or not they contain an Ingress section) are assumed to affect Ingress. + // If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. + // Likewise, if you want to write a policy that specifies that no egress is allowed, + // you must specify a policyTypes value that include "Egress" (since such a policy would not include + // an Egress section and would otherwise default to just [ "Ingress" ]). + // This field is beta-level in 1.8 + // +optional + PolicyTypes []PolicyType `json:"policyTypes,omitempty" protobuf:"bytes,4,rep,name=policyTypes,casttype=PolicyType"` +} + +// 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 empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + 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 empty or missing, this rule matches all sources (traffic not restricted by source). + // 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. + // +optional + From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"` +} + +// NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. +// This type is beta-level in 1.8 +type NetworkPolicyEgressRule struct { + // List of destination ports for outgoing traffic. + // Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"` + + // List of destinations for outgoing traffic of pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all destinations (traffic not restricted by + // destination). If this field is present and contains at least one item, this rule + // allows traffic only if the traffic matches at least one item in the to list. + // +optional + To []NetworkPolicyPeer `json:"to,omitempty" protobuf:"bytes,2,rep,name=to"` +} + +type NetworkPolicyPort struct { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + // +optional + Protocol *v1.Protocol `json:"protocol,omitempty" protobuf:"bytes,1,opt,name=protocol,casttype=k8s.io/api/core/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. + // +optional + Port *intstr.IntOrString `json:"port,omitempty" protobuf:"bytes,2,opt,name=port"` +} + +// IPBlock describes a particular CIDR (Ex. "192.168.1.1/24") that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should +// not be included within this rule. +type IPBlock struct { + // CIDR is a string representing the IP Block + // Valid examples are "192.168.1.1/24" + CIDR string `json:"cidr" protobuf:"bytes,1,name=cidr"` + // Except is a slice of CIDRs that should not be included within an IP Block + // Valid examples are "192.168.1.1/24" + // Except values will be rejected if they are outside the CIDR range + // +optional + Except []string `json:"except,omitempty" protobuf:"bytes,2,rep,name=except"` +} + +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 present but empty, this selector selects all pods in this namespace. + // +optional + PodSelector *metav1.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 present but empty, this selector selects all namespaces. + // +optional + NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` + + // IPBlock defines policy on a particular IPBlock + // +optional + IPBlock *IPBlock `json:"ipBlock,omitempty" protobuf:"bytes,3,rep,name=ipBlock"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Network Policy List is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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/api/extensions/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..bcbd54dac2 --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,667 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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_AllowedHostPath = map[string]string{ + "": "defines the host volume conditions that will be enabled by a policy for pods to use. It requires the path prefix to be defined.", + "pathPrefix": "is the path prefix that the host volume must match. It does not support `*`. Trailing slashes are trimmed when validating the path prefix with a host path.\n\nExamples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would not allow `/food` or `/etc/foo`", +} + +func (AllowedHostPath) SwaggerDoc() map[string]string { + return map_AllowedHostPath +} + +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{ + "": "DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "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": "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "An 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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", + "updateStrategy": "An update strategy to replace existing DaemonSet pods with new pods.", + "minReadySeconds": "The 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).", + "templateGeneration": "DEPRECATED. A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation.", + "revisionHistoryLimit": "The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.", +} + +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": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "numberReady": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.", + "observedGeneration": "The most recent generation observed by the daemon set controller.", + "updatedNumberScheduled": "The total number of nodes that are running updated daemon pod", + "numberAvailable": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "numberUnavailable": "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "collisionCount": "Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", +} + +func (DaemonSetStatus) SwaggerDoc() map[string]string { + return map_DaemonSetStatus +} + +var map_DaemonSetUpdateStrategy = map[string]string{ + "type": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete.", + "rollingUpdate": "Rolling update config params. Present only if type = \"RollingUpdate\".", +} + +func (DaemonSetUpdateStrategy) SwaggerDoc() map[string]string { + return map_DaemonSetUpdateStrategy +} + +var map_Deployment = map[string]string{ + "": "DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for more information. 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_DeploymentCondition = map[string]string{ + "": "DeploymentCondition describes the state of a deployment at a certain point.", + "type": "Type of deployment condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastUpdateTime": "The last time this condition was updated.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (DeploymentCondition) SwaggerDoc() map[string]string { + return map_DeploymentCondition +} + +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{ + "": "DEPRECATED. 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": "DEPRECATED. The config this deployment is rolling back to. Will be cleared after rollback is done.", + "progressDeadlineSeconds": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. This is not set by default.", +} + +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.", + "readyReplicas": "Total number of ready pods targeted by this deployment.", + "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. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.", + "conditions": "Represents the latest available observations of a deployment's current state.", + "collisionCount": "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.", +} + +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_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:///? -> 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_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_IPBlock = map[string]string{ + "": "IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule.", + "cidr": "CIDR is a string representing the IP Block Valid examples are \"192.168.1.1/24\"", + "except": "Except is a slice of CIDRs that should not be included within an IP Block Valid examples are \"192.168.1.1/24\" Except values will be rejected if they are outside the CIDR range", +} + +func (IPBlock) SwaggerDoc() map[string]string { + return map_IPBlock +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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_NetworkPolicy = map[string]string{ + "": "NetworkPolicy describes what network traffic is allowed for a set of Pods", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/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_NetworkPolicyEgressRule = map[string]string{ + "": "NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8", + "ports": "List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). 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.", + "to": "List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.", +} + +func (NetworkPolicyEgressRule) SwaggerDoc() map[string]string { + return map_NetworkPolicyEgressRule +} + +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 empty or missing, this rule matches all ports (traffic not restricted by port). 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 empty or missing, this rule matches all sources (traffic not restricted by source). 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: https://git.k8s.io/community/contributors/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 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 present but empty, this selector selects all namespaces.", + "ipBlock": "IPBlock defines policy on a particular IPBlock", +} + +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 there are no NetworkPolicies selecting the pod 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 allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).", + "egress": "List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8", + "policyTypes": "List of rule types that the NetworkPolicy relates to. Valid options are Ingress, Egress, or Ingress,Egress. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an Egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8", +} + +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: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/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.", + "defaultAllowPrivilegeEscalation": "DefaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.", + "allowPrivilegeEscalation": "AllowPrivilegeEscalation determines if a pod can request to allow privilege escalation.", + "allowedHostPaths": "is a white list of allowed host paths. Empty indicates that all host paths may be used.", +} + +func (PodSecurityPolicySpec) SwaggerDoc() map[string]string { + return map_PodSecurityPolicySpec +} + +var map_ReplicaSet = map[string]string{ + "": "DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet. See the release notes for more information. 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (ReplicaSet) SwaggerDoc() map[string]string { + return map_ReplicaSet +} + +var map_ReplicaSetCondition = map[string]string{ + "": "ReplicaSetCondition describes the state of a replica set at a certain point.", + "type": "Type of replica set condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastTransitionTime": "The last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (ReplicaSetCondition) SwaggerDoc() map[string]string { + return map_ReplicaSetCondition +} + +var map_ReplicaSetList = map[string]string{ + "": "ReplicaSetList is a collection of ReplicaSets.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", +} + +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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "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)", + "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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#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: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "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.", + "availableReplicas": "The number of available replicas (ready for at least minReadySeconds) for this replica set.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", + "conditions": "Represents the latest available observations of a replica set's current state.", +} + +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{ + "": "DEPRECATED.", + "revision": "The revision to rollback to. If set to 0, rollback to the last revision.", +} + +func (RollbackConfig) SwaggerDoc() map[string]string { + return map_RollbackConfig +} + +var map_RollingUpdateDaemonSet = map[string]string{ + "": "Spec to control the desired behavior of daemon set rolling update.", + "maxUnavailable": "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%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, 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.", +} + +func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string { + return map_RollingUpdateDaemonSet +} + +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 down. 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: https://git.k8s.io/community/contributors/design-proposals/security_context.md", +} + +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: https://git.k8s.io/community/contributors/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://kubernetes.io/docs/user-guide/labels#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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +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: https://git.k8s.io/community/contributors/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/api/extensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..45b56997bf --- /dev/null +++ b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,1956 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + core_v1 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/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. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*APIVersion).DeepCopyInto(out.(*APIVersion)) + return nil + }, InType: reflect.TypeOf(&APIVersion{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*AllowedHostPath).DeepCopyInto(out.(*AllowedHostPath)) + return nil + }, InType: reflect.TypeOf(&AllowedHostPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomMetricCurrentStatus).DeepCopyInto(out.(*CustomMetricCurrentStatus)) + return nil + }, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomMetricCurrentStatusList).DeepCopyInto(out.(*CustomMetricCurrentStatusList)) + return nil + }, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomMetricTarget).DeepCopyInto(out.(*CustomMetricTarget)) + return nil + }, InType: reflect.TypeOf(&CustomMetricTarget{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomMetricTargetList).DeepCopyInto(out.(*CustomMetricTargetList)) + return nil + }, InType: reflect.TypeOf(&CustomMetricTargetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSet).DeepCopyInto(out.(*DaemonSet)) + return nil + }, InType: reflect.TypeOf(&DaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetList).DeepCopyInto(out.(*DaemonSetList)) + return nil + }, InType: reflect.TypeOf(&DaemonSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetSpec).DeepCopyInto(out.(*DaemonSetSpec)) + return nil + }, InType: reflect.TypeOf(&DaemonSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetStatus).DeepCopyInto(out.(*DaemonSetStatus)) + return nil + }, InType: reflect.TypeOf(&DaemonSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DaemonSetUpdateStrategy).DeepCopyInto(out.(*DaemonSetUpdateStrategy)) + return nil + }, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Deployment).DeepCopyInto(out.(*Deployment)) + return nil + }, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentCondition).DeepCopyInto(out.(*DeploymentCondition)) + return nil + }, InType: reflect.TypeOf(&DeploymentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentList).DeepCopyInto(out.(*DeploymentList)) + return nil + }, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentRollback).DeepCopyInto(out.(*DeploymentRollback)) + return nil + }, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentSpec).DeepCopyInto(out.(*DeploymentSpec)) + return nil + }, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentStatus).DeepCopyInto(out.(*DeploymentStatus)) + return nil + }, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeploymentStrategy).DeepCopyInto(out.(*DeploymentStrategy)) + return nil + }, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*FSGroupStrategyOptions).DeepCopyInto(out.(*FSGroupStrategyOptions)) + return nil + }, InType: reflect.TypeOf(&FSGroupStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HTTPIngressPath).DeepCopyInto(out.(*HTTPIngressPath)) + return nil + }, InType: reflect.TypeOf(&HTTPIngressPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HTTPIngressRuleValue).DeepCopyInto(out.(*HTTPIngressRuleValue)) + return nil + }, InType: reflect.TypeOf(&HTTPIngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*HostPortRange).DeepCopyInto(out.(*HostPortRange)) + return nil + }, InType: reflect.TypeOf(&HostPortRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IDRange).DeepCopyInto(out.(*IDRange)) + return nil + }, InType: reflect.TypeOf(&IDRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IPBlock).DeepCopyInto(out.(*IPBlock)) + return nil + }, InType: reflect.TypeOf(&IPBlock{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Ingress).DeepCopyInto(out.(*Ingress)) + return nil + }, InType: reflect.TypeOf(&Ingress{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressBackend).DeepCopyInto(out.(*IngressBackend)) + return nil + }, InType: reflect.TypeOf(&IngressBackend{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressList).DeepCopyInto(out.(*IngressList)) + return nil + }, InType: reflect.TypeOf(&IngressList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressRule).DeepCopyInto(out.(*IngressRule)) + return nil + }, InType: reflect.TypeOf(&IngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressRuleValue).DeepCopyInto(out.(*IngressRuleValue)) + return nil + }, InType: reflect.TypeOf(&IngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressSpec).DeepCopyInto(out.(*IngressSpec)) + return nil + }, InType: reflect.TypeOf(&IngressSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressStatus).DeepCopyInto(out.(*IngressStatus)) + return nil + }, InType: reflect.TypeOf(&IngressStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IngressTLS).DeepCopyInto(out.(*IngressTLS)) + return nil + }, InType: reflect.TypeOf(&IngressTLS{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicy).DeepCopyInto(out.(*NetworkPolicy)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyEgressRule).DeepCopyInto(out.(*NetworkPolicyEgressRule)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyEgressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyIngressRule).DeepCopyInto(out.(*NetworkPolicyIngressRule)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyList).DeepCopyInto(out.(*NetworkPolicyList)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyPeer).DeepCopyInto(out.(*NetworkPolicyPeer)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyPort).DeepCopyInto(out.(*NetworkPolicyPort)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicySpec).DeepCopyInto(out.(*NetworkPolicySpec)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodSecurityPolicy).DeepCopyInto(out.(*PodSecurityPolicy)) + return nil + }, InType: reflect.TypeOf(&PodSecurityPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodSecurityPolicyList).DeepCopyInto(out.(*PodSecurityPolicyList)) + return nil + }, InType: reflect.TypeOf(&PodSecurityPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodSecurityPolicySpec).DeepCopyInto(out.(*PodSecurityPolicySpec)) + return nil + }, InType: reflect.TypeOf(&PodSecurityPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSet).DeepCopyInto(out.(*ReplicaSet)) + return nil + }, InType: reflect.TypeOf(&ReplicaSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetCondition).DeepCopyInto(out.(*ReplicaSetCondition)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetList).DeepCopyInto(out.(*ReplicaSetList)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetSpec).DeepCopyInto(out.(*ReplicaSetSpec)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicaSetStatus).DeepCopyInto(out.(*ReplicaSetStatus)) + return nil + }, InType: reflect.TypeOf(&ReplicaSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ReplicationControllerDummy).DeepCopyInto(out.(*ReplicationControllerDummy)) + return nil + }, InType: reflect.TypeOf(&ReplicationControllerDummy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollbackConfig).DeepCopyInto(out.(*RollbackConfig)) + return nil + }, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateDaemonSet).DeepCopyInto(out.(*RollingUpdateDaemonSet)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RollingUpdateDeployment).DeepCopyInto(out.(*RollingUpdateDeployment)) + return nil + }, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RunAsUserStrategyOptions).DeepCopyInto(out.(*RunAsUserStrategyOptions)) + return nil + }, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SELinuxStrategyOptions).DeepCopyInto(out.(*SELinuxStrategyOptions)) + return nil + }, InType: reflect.TypeOf(&SELinuxStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Scale).DeepCopyInto(out.(*Scale)) + return nil + }, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleSpec).DeepCopyInto(out.(*ScaleSpec)) + return nil + }, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleStatus).DeepCopyInto(out.(*ScaleStatus)) + return nil + }, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*SupplementalGroupsStrategyOptions).DeepCopyInto(out.(*SupplementalGroupsStrategyOptions)) + return nil + }, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ThirdPartyResource).DeepCopyInto(out.(*ThirdPartyResource)) + return nil + }, InType: reflect.TypeOf(&ThirdPartyResource{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ThirdPartyResourceData).DeepCopyInto(out.(*ThirdPartyResourceData)) + return nil + }, InType: reflect.TypeOf(&ThirdPartyResourceData{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ThirdPartyResourceDataList).DeepCopyInto(out.(*ThirdPartyResourceDataList)) + return nil + }, InType: reflect.TypeOf(&ThirdPartyResourceDataList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ThirdPartyResourceList).DeepCopyInto(out.(*ThirdPartyResourceList)) + return nil + }, InType: reflect.TypeOf(&ThirdPartyResourceList{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIVersion) DeepCopyInto(out *APIVersion) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIVersion. +func (in *APIVersion) DeepCopy() *APIVersion { + if in == nil { + return nil + } + out := new(APIVersion) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AllowedHostPath) DeepCopyInto(out *AllowedHostPath) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllowedHostPath. +func (in *AllowedHostPath) DeepCopy() *AllowedHostPath { + if in == nil { + return nil + } + out := new(AllowedHostPath) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomMetricCurrentStatus) DeepCopyInto(out *CustomMetricCurrentStatus) { + *out = *in + out.CurrentValue = in.CurrentValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomMetricCurrentStatus. +func (in *CustomMetricCurrentStatus) DeepCopy() *CustomMetricCurrentStatus { + if in == nil { + return nil + } + out := new(CustomMetricCurrentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomMetricCurrentStatusList) DeepCopyInto(out *CustomMetricCurrentStatusList) { + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricCurrentStatus, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomMetricCurrentStatusList. +func (in *CustomMetricCurrentStatusList) DeepCopy() *CustomMetricCurrentStatusList { + if in == nil { + return nil + } + out := new(CustomMetricCurrentStatusList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomMetricTarget) DeepCopyInto(out *CustomMetricTarget) { + *out = *in + out.TargetValue = in.TargetValue.DeepCopy() + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomMetricTarget. +func (in *CustomMetricTarget) DeepCopy() *CustomMetricTarget { + if in == nil { + return nil + } + out := new(CustomMetricTarget) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomMetricTargetList) DeepCopyInto(out *CustomMetricTargetList) { + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricTarget, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomMetricTargetList. +func (in *CustomMetricTargetList) DeepCopy() *CustomMetricTargetList { + if in == nil { + return nil + } + out := new(CustomMetricTargetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSet) DeepCopyInto(out *DaemonSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSet. +func (in *DaemonSet) DeepCopy() *DaemonSet { + if in == nil { + return nil + } + out := new(DaemonSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DaemonSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetList) DeepCopyInto(out *DaemonSetList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetList. +func (in *DaemonSetList) DeepCopy() *DaemonSetList { + if in == nil { + return nil + } + out := new(DaemonSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DaemonSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetSpec. +func (in *DaemonSetSpec) DeepCopy() *DaemonSetSpec { + if in == nil { + return nil + } + out := new(DaemonSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { + *out = *in + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetStatus. +func (in *DaemonSetStatus) DeepCopy() *DaemonSetStatus { + if in == nil { + return nil + } + out := new(DaemonSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DaemonSetUpdateStrategy. +func (in *DaemonSetUpdateStrategy) DeepCopy() *DaemonSetUpdateStrategy { + if in == nil { + return nil + } + out := new(DaemonSetUpdateStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Deployment) DeepCopyInto(out *Deployment) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Deployment. +func (in *Deployment) DeepCopy() *Deployment { + if in == nil { + return nil + } + out := new(Deployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Deployment) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentCondition) DeepCopyInto(out *DeploymentCondition) { + *out = *in + in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentCondition. +func (in *DeploymentCondition) DeepCopy() *DeploymentCondition { + if in == nil { + return nil + } + out := new(DeploymentCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentList) DeepCopyInto(out *DeploymentList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentList. +func (in *DeploymentList) DeepCopy() *DeploymentList { + if in == nil { + return nil + } + out := new(DeploymentList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeploymentList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentRollback) DeepCopyInto(out *DeploymentRollback) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + out.RollbackTo = in.RollbackTo + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentRollback. +func (in *DeploymentRollback) DeepCopy() *DeploymentRollback { + if in == nil { + return nil + } + out := new(DeploymentRollback) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeploymentRollback) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + in.Strategy.DeepCopyInto(&out.Strategy) + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + if *in == nil { + *out = nil + } else { + *out = new(RollbackConfig) + **out = **in + } + } + if in.ProgressDeadlineSeconds != nil { + in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentSpec. +func (in *DeploymentSpec) DeepCopy() *DeploymentSpec { + if in == nil { + return nil + } + out := new(DeploymentSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]DeploymentCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStatus. +func (in *DeploymentStatus) DeepCopy() *DeploymentStatus { + if in == nil { + return nil + } + out := new(DeploymentStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStrategy. +func (in *DeploymentStrategy) DeepCopy() *DeploymentStrategy { + if in == nil { + return nil + } + out := new(DeploymentStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FSGroupStrategyOptions) DeepCopyInto(out *FSGroupStrategyOptions) { + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FSGroupStrategyOptions. +func (in *FSGroupStrategyOptions) DeepCopy() *FSGroupStrategyOptions { + if in == nil { + return nil + } + out := new(FSGroupStrategyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPIngressPath) DeepCopyInto(out *HTTPIngressPath) { + *out = *in + out.Backend = in.Backend + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPIngressPath. +func (in *HTTPIngressPath) DeepCopy() *HTTPIngressPath { + if in == nil { + return nil + } + out := new(HTTPIngressPath) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HTTPIngressRuleValue) DeepCopyInto(out *HTTPIngressRuleValue) { + *out = *in + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]HTTPIngressPath, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPIngressRuleValue. +func (in *HTTPIngressRuleValue) DeepCopy() *HTTPIngressRuleValue { + if in == nil { + return nil + } + out := new(HTTPIngressRuleValue) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HostPortRange) DeepCopyInto(out *HostPortRange) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostPortRange. +func (in *HostPortRange) DeepCopy() *HostPortRange { + if in == nil { + return nil + } + out := new(HostPortRange) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IDRange) DeepCopyInto(out *IDRange) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IDRange. +func (in *IDRange) DeepCopy() *IDRange { + if in == nil { + return nil + } + out := new(IDRange) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPBlock) DeepCopyInto(out *IPBlock) { + *out = *in + if in.Except != nil { + in, out := &in.Except, &out.Except + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPBlock. +func (in *IPBlock) DeepCopy() *IPBlock { + if in == nil { + return nil + } + out := new(IPBlock) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Ingress) DeepCopyInto(out *Ingress) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ingress. +func (in *Ingress) DeepCopy() *Ingress { + if in == nil { + return nil + } + out := new(Ingress) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Ingress) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressBackend) DeepCopyInto(out *IngressBackend) { + *out = *in + out.ServicePort = in.ServicePort + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressBackend. +func (in *IngressBackend) DeepCopy() *IngressBackend { + if in == nil { + return nil + } + out := new(IngressBackend) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressList) DeepCopyInto(out *IngressList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressList. +func (in *IngressList) DeepCopy() *IngressList { + if in == nil { + return nil + } + out := new(IngressList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *IngressList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressRule) DeepCopyInto(out *IngressRule) { + *out = *in + in.IngressRuleValue.DeepCopyInto(&out.IngressRuleValue) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRule. +func (in *IngressRule) DeepCopy() *IngressRule { + if in == nil { + return nil + } + out := new(IngressRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressRuleValue) DeepCopyInto(out *IngressRuleValue) { + *out = *in + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + if *in == nil { + *out = nil + } else { + *out = new(HTTPIngressRuleValue) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRuleValue. +func (in *IngressRuleValue) DeepCopy() *IngressRuleValue { + if in == nil { + return nil + } + out := new(IngressRuleValue) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressSpec) DeepCopyInto(out *IngressSpec) { + *out = *in + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + if *in == nil { + *out = nil + } else { + *out = new(IngressBackend) + **out = **in + } + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]IngressTLS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]IngressRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressSpec. +func (in *IngressSpec) DeepCopy() *IngressSpec { + if in == nil { + return nil + } + out := new(IngressSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressStatus) DeepCopyInto(out *IngressStatus) { + *out = *in + in.LoadBalancer.DeepCopyInto(&out.LoadBalancer) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressStatus. +func (in *IngressStatus) DeepCopy() *IngressStatus { + if in == nil { + return nil + } + out := new(IngressStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IngressTLS) DeepCopyInto(out *IngressTLS) { + *out = *in + if in.Hosts != nil { + in, out := &in.Hosts, &out.Hosts + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressTLS. +func (in *IngressTLS) DeepCopy() *IngressTLS { + if in == nil { + return nil + } + out := new(IngressTLS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicy) DeepCopyInto(out *NetworkPolicy) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicy. +func (in *NetworkPolicy) DeepCopy() *NetworkPolicy { + if in == nil { + return nil + } + out := new(NetworkPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NetworkPolicy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyEgressRule) DeepCopyInto(out *NetworkPolicyEgressRule) { + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.To != nil { + in, out := &in.To, &out.To + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyEgressRule. +func (in *NetworkPolicyEgressRule) DeepCopy() *NetworkPolicyEgressRule { + if in == nil { + return nil + } + out := new(NetworkPolicyEgressRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyIngressRule) DeepCopyInto(out *NetworkPolicyIngressRule) { + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyIngressRule. +func (in *NetworkPolicyIngressRule) DeepCopy() *NetworkPolicyIngressRule { + if in == nil { + return nil + } + out := new(NetworkPolicyIngressRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyList) DeepCopyInto(out *NetworkPolicyList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyList. +func (in *NetworkPolicyList) DeepCopy() *NetworkPolicyList { + if in == nil { + return nil + } + out := new(NetworkPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NetworkPolicyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { + *out = *in + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.IPBlock != nil { + in, out := &in.IPBlock, &out.IPBlock + if *in == nil { + *out = nil + } else { + *out = new(IPBlock) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyPeer. +func (in *NetworkPolicyPeer) DeepCopy() *NetworkPolicyPeer { + if in == nil { + return nil + } + out := new(NetworkPolicyPeer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { + *out = *in + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + if *in == nil { + *out = nil + } else { + *out = new(core_v1.Protocol) + **out = **in + } + } + if in.Port != nil { + in, out := &in.Port, &out.Port + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyPort. +func (in *NetworkPolicyPort) DeepCopy() *NetworkPolicyPort { + if in == nil { + return nil + } + out := new(NetworkPolicyPort) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicySpec) DeepCopyInto(out *NetworkPolicySpec) { + *out = *in + in.PodSelector.DeepCopyInto(&out.PodSelector) + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Egress != nil { + in, out := &in.Egress, &out.Egress + *out = make([]NetworkPolicyEgressRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PolicyTypes != nil { + in, out := &in.PolicyTypes, &out.PolicyTypes + *out = make([]PolicyType, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicySpec. +func (in *NetworkPolicySpec) DeepCopy() *NetworkPolicySpec { + if in == nil { + return nil + } + out := new(NetworkPolicySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityPolicy) DeepCopyInto(out *PodSecurityPolicy) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityPolicy. +func (in *PodSecurityPolicy) DeepCopy() *PodSecurityPolicy { + if in == nil { + return nil + } + out := new(PodSecurityPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodSecurityPolicy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityPolicyList) DeepCopyInto(out *PodSecurityPolicyList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityPolicyList. +func (in *PodSecurityPolicyList) DeepCopy() *PodSecurityPolicyList { + if in == nil { + return nil + } + out := new(PodSecurityPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodSecurityPolicyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { + *out = *in + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]core_v1.Capability, len(*in)) + copy(*out, *in) + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]core_v1.Capability, len(*in)) + copy(*out, *in) + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]core_v1.Capability, len(*in)) + copy(*out, *in) + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]FSType, len(*in)) + copy(*out, *in) + } + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + copy(*out, *in) + } + in.SELinux.DeepCopyInto(&out.SELinux) + in.RunAsUser.DeepCopyInto(&out.RunAsUser) + in.SupplementalGroups.DeepCopyInto(&out.SupplementalGroups) + in.FSGroup.DeepCopyInto(&out.FSGroup) + if in.DefaultAllowPrivilegeEscalation != nil { + in, out := &in.DefaultAllowPrivilegeEscalation, &out.DefaultAllowPrivilegeEscalation + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + if in.AllowedHostPaths != nil { + in, out := &in.AllowedHostPaths, &out.AllowedHostPaths + *out = make([]AllowedHostPath, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodSecurityPolicySpec. +func (in *PodSecurityPolicySpec) DeepCopy() *PodSecurityPolicySpec { + if in == nil { + return nil + } + out := new(PodSecurityPolicySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSet) DeepCopyInto(out *ReplicaSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSet. +func (in *ReplicaSet) DeepCopy() *ReplicaSet { + if in == nil { + return nil + } + out := new(ReplicaSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetCondition) DeepCopyInto(out *ReplicaSetCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetCondition. +func (in *ReplicaSetCondition) DeepCopy() *ReplicaSetCondition { + if in == nil { + return nil + } + out := new(ReplicaSetCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetList) DeepCopyInto(out *ReplicaSetList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetList. +func (in *ReplicaSetList) DeepCopy() *ReplicaSetList { + if in == nil { + return nil + } + out := new(ReplicaSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + in.Template.DeepCopyInto(&out.Template) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetSpec. +func (in *ReplicaSetSpec) DeepCopy() *ReplicaSetSpec { + if in == nil { + return nil + } + out := new(ReplicaSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaSetStatus) DeepCopyInto(out *ReplicaSetStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicaSetCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaSetStatus. +func (in *ReplicaSetStatus) DeepCopy() *ReplicaSetStatus { + if in == nil { + return nil + } + out := new(ReplicaSetStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicationControllerDummy) DeepCopyInto(out *ReplicationControllerDummy) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationControllerDummy. +func (in *ReplicationControllerDummy) DeepCopy() *ReplicationControllerDummy { + if in == nil { + return nil + } + out := new(ReplicationControllerDummy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicationControllerDummy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollbackConfig) DeepCopyInto(out *RollbackConfig) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollbackConfig. +func (in *RollbackConfig) DeepCopy() *RollbackConfig { + if in == nil { + return nil + } + out := new(RollbackConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateDaemonSet. +func (in *RollingUpdateDaemonSet) DeepCopy() *RollingUpdateDaemonSet { + if in == nil { + return nil + } + out := new(RollingUpdateDaemonSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdateDeployment. +func (in *RollingUpdateDeployment) DeepCopy() *RollingUpdateDeployment { + if in == nil { + return nil + } + out := new(RollingUpdateDeployment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RunAsUserStrategyOptions) DeepCopyInto(out *RunAsUserStrategyOptions) { + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RunAsUserStrategyOptions. +func (in *RunAsUserStrategyOptions) DeepCopy() *RunAsUserStrategyOptions { + if in == nil { + return nil + } + out := new(RunAsUserStrategyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) { + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + if *in == nil { + *out = nil + } else { + *out = new(core_v1.SELinuxOptions) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SELinuxStrategyOptions. +func (in *SELinuxStrategyOptions) DeepCopy() *SELinuxStrategyOptions { + if in == nil { + return nil + } + out := new(SELinuxStrategyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Scale) DeepCopyInto(out *Scale) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Scale. +func (in *Scale) DeepCopy() *Scale { + if in == nil { + return nil + } + out := new(Scale) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Scale) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleSpec) DeepCopyInto(out *ScaleSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleSpec. +func (in *ScaleSpec) DeepCopy() *ScaleSpec { + if in == nil { + return nil + } + out := new(ScaleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleStatus) DeepCopyInto(out *ScaleStatus) { + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleStatus. +func (in *ScaleStatus) DeepCopy() *ScaleStatus { + if in == nil { + return nil + } + out := new(ScaleStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SupplementalGroupsStrategyOptions) DeepCopyInto(out *SupplementalGroupsStrategyOptions) { + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SupplementalGroupsStrategyOptions. +func (in *SupplementalGroupsStrategyOptions) DeepCopy() *SupplementalGroupsStrategyOptions { + if in == nil { + return nil + } + out := new(SupplementalGroupsStrategyOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyResource) DeepCopyInto(out *ThirdPartyResource) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]APIVersion, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyResource. +func (in *ThirdPartyResource) DeepCopy() *ThirdPartyResource { + if in == nil { + return nil + } + out := new(ThirdPartyResource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ThirdPartyResource) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyResourceData) DeepCopyInto(out *ThirdPartyResourceData) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyResourceData. +func (in *ThirdPartyResourceData) DeepCopy() *ThirdPartyResourceData { + if in == nil { + return nil + } + out := new(ThirdPartyResourceData) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ThirdPartyResourceData) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyResourceDataList) DeepCopyInto(out *ThirdPartyResourceDataList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyResourceDataList. +func (in *ThirdPartyResourceDataList) DeepCopy() *ThirdPartyResourceDataList { + if in == nil { + return nil + } + out := new(ThirdPartyResourceDataList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ThirdPartyResourceDataList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ThirdPartyResourceList) DeepCopyInto(out *ThirdPartyResourceList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThirdPartyResourceList. +func (in *ThirdPartyResourceList) DeepCopy() *ThirdPartyResourceList { + if in == nil { + return nil + } + out := new(ThirdPartyResourceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ThirdPartyResourceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/api/imagepolicy/OWNERS b/vendor/k8s.io/api/imagepolicy/OWNERS new file mode 100755 index 0000000000..96ae42e027 --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/OWNERS @@ -0,0 +1,4 @@ +reviewers: +- deads2k +- mbohlool +- jianhuiz diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD b/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD new file mode 100644 index 0000000000..745ff2609d --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/doc.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/doc.go new file mode 100644 index 0000000000..3f6a01e534 --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/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:openapi-gen=true + +// +groupName=imagepolicy.k8s.io +package v1alpha1 // import "k8s.io/api/imagepolicy/v1alpha1" diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.pb.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..e695bb5e70 --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.pb.go @@ -0,0 +1,1076 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto + + It has these top-level messages: + ImageReview + ImageReviewContainerSpec + ImageReviewSpec + ImageReviewStatus +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ImageReview) Reset() { *m = ImageReview{} } +func (*ImageReview) ProtoMessage() {} +func (*ImageReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ImageReviewContainerSpec) Reset() { *m = ImageReviewContainerSpec{} } +func (*ImageReviewContainerSpec) ProtoMessage() {} +func (*ImageReviewContainerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *ImageReviewSpec) Reset() { *m = ImageReviewSpec{} } +func (*ImageReviewSpec) ProtoMessage() {} +func (*ImageReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *ImageReviewStatus) Reset() { *m = ImageReviewStatus{} } +func (*ImageReviewStatus) ProtoMessage() {} +func (*ImageReviewStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func init() { + proto.RegisterType((*ImageReview)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReview") + proto.RegisterType((*ImageReviewContainerSpec)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewContainerSpec") + proto.RegisterType((*ImageReviewSpec)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewSpec") + proto.RegisterType((*ImageReviewStatus)(nil), "k8s.io.api.imagepolicy.v1alpha1.ImageReviewStatus") +} +func (m *ImageReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImageReview) 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 *ImageReviewContainerSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImageReviewContainerSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Image))) + i += copy(dAtA[i:], m.Image) + return i, nil +} + +func (m *ImageReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImageReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Containers) > 0 { + for _, msg := range m.Containers { + 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.Annotations) > 0 { + keysForAnnotations := make([]string, 0, len(m.Annotations)) + for k := range m.Annotations { + keysForAnnotations = append(keysForAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + for _, k := range keysForAnnotations { + dAtA[i] = 0x12 + i++ + v := m.Annotations[string(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.Namespace))) + i += copy(dAtA[i:], m.Namespace) + return i, nil +} + +func (m *ImageReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImageReviewStatus) 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) + 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 *ImageReview) 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 *ImageReviewContainerSpec) Size() (n int) { + var l int + _ = l + l = len(m.Image) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ImageReviewSpec) Size() (n int) { + var l int + _ = l + if len(m.Containers) > 0 { + for _, e := range m.Containers { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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)) + } + } + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ImageReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = len(m.Reason) + 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 *ImageReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ImageReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ImageReviewSpec", "ImageReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ImageReviewStatus", "ImageReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ImageReviewContainerSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ImageReviewContainerSpec{`, + `Image:` + fmt.Sprintf("%v", this.Image) + `,`, + `}`, + }, "") + return s +} +func (this *ImageReviewSpec) String() string { + if this == nil { + return "nil" + } + 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{`&ImageReviewSpec{`, + `Containers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Containers), "ImageReviewContainerSpec", "ImageReviewContainerSpec", 1), `&`, ``, 1) + `,`, + `Annotations:` + mapStringForAnnotations + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + return s +} +func (this *ImageReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ImageReviewStatus{`, + `Allowed:` + fmt.Sprintf("%v", this.Allowed) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `}`, + }, "") + 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 *ImageReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ImageReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImageReview: 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 *ImageReviewContainerSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ImageReviewContainerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImageReviewContainerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ImageReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ImageReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImageReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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, ImageReviewContainerSpec{}) + if err := m.Containers[len(m.Containers)-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 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 + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Annotations[mapkey] = mapvalue + } else { + var mapvalue string + m.Annotations[mapkey] = mapvalue + } + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ImageReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ImageReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImageReviewStatus: 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 575 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xcf, 0x6e, 0xd4, 0x30, + 0x10, 0xc6, 0x37, 0xdb, 0xbf, 0xeb, 0x05, 0xda, 0x1a, 0x0e, 0xab, 0x3d, 0xa4, 0xd5, 0x22, 0xa1, + 0x72, 0xc0, 0xa6, 0x05, 0xa1, 0xc2, 0x01, 0xd4, 0x20, 0x24, 0x38, 0x00, 0x92, 0xb9, 0xf5, 0x84, + 0x37, 0x3b, 0xcd, 0x9a, 0x4d, 0xec, 0x28, 0x76, 0x52, 0xf6, 0xc6, 0x23, 0xf0, 0x06, 0xbc, 0x4e, + 0x8f, 0x3d, 0xf6, 0x54, 0xd1, 0x70, 0xe4, 0x25, 0x50, 0x9c, 0x6c, 0x13, 0xba, 0x54, 0x68, 0x6f, + 0x9e, 0x19, 0x7f, 0xbf, 0x19, 0x7f, 0x63, 0xf4, 0x76, 0x72, 0xa0, 0x89, 0x50, 0x74, 0x92, 0x0e, + 0x21, 0x91, 0x60, 0x40, 0xd3, 0x0c, 0xe4, 0x48, 0x25, 0xb4, 0x2a, 0xf0, 0x58, 0x50, 0x11, 0xf1, + 0x00, 0x62, 0x15, 0x0a, 0x7f, 0x4a, 0xb3, 0x3d, 0x1e, 0xc6, 0x63, 0xbe, 0x47, 0x03, 0x90, 0x90, + 0x70, 0x03, 0x23, 0x12, 0x27, 0xca, 0x28, 0xbc, 0x5d, 0x0a, 0x08, 0x8f, 0x05, 0x69, 0x08, 0xc8, + 0x4c, 0xd0, 0x7f, 0x14, 0x08, 0x33, 0x4e, 0x87, 0xc4, 0x57, 0x11, 0x0d, 0x54, 0xa0, 0xa8, 0xd5, + 0x0d, 0xd3, 0x63, 0x1b, 0xd9, 0xc0, 0x9e, 0x4a, 0x5e, 0xff, 0x69, 0x3d, 0x40, 0xc4, 0xfd, 0xb1, + 0x90, 0x90, 0x4c, 0x69, 0x3c, 0x09, 0x8a, 0x84, 0xa6, 0x11, 0x18, 0x4e, 0xb3, 0xb9, 0x29, 0xfa, + 0xf4, 0x26, 0x55, 0x92, 0x4a, 0x23, 0x22, 0x98, 0x13, 0x3c, 0xfb, 0x9f, 0x40, 0xfb, 0x63, 0x88, + 0xf8, 0x9c, 0xee, 0xc9, 0x4d, 0xba, 0xd4, 0x88, 0x90, 0x0a, 0x69, 0xb4, 0x49, 0xae, 0x8b, 0x06, + 0x3f, 0xda, 0xa8, 0xfb, 0xae, 0xf0, 0x86, 0x41, 0x26, 0xe0, 0x04, 0x7f, 0x46, 0xeb, 0xc5, 0x43, + 0x46, 0xdc, 0xf0, 0x9e, 0xb3, 0xe3, 0xec, 0x76, 0xf7, 0x1f, 0x93, 0xda, 0xc6, 0x2b, 0x2e, 0x89, + 0x27, 0x41, 0x91, 0xd0, 0xa4, 0xb8, 0x4d, 0xb2, 0x3d, 0xf2, 0x71, 0xf8, 0x05, 0x7c, 0xf3, 0x1e, + 0x0c, 0xf7, 0xf0, 0xe9, 0xc5, 0x76, 0x2b, 0xbf, 0xd8, 0x46, 0x75, 0x8e, 0x5d, 0x51, 0x31, 0x43, + 0xcb, 0x3a, 0x06, 0xbf, 0xd7, 0x9e, 0xa3, 0xff, 0x73, 0x49, 0xa4, 0x31, 0xdd, 0xa7, 0x18, 0x7c, + 0xef, 0x56, 0x45, 0x5f, 0x2e, 0x22, 0x66, 0x59, 0xf8, 0x08, 0xad, 0x6a, 0xc3, 0x4d, 0xaa, 0x7b, + 0x4b, 0x96, 0xba, 0xbf, 0x10, 0xd5, 0x2a, 0xbd, 0x3b, 0x15, 0x77, 0xb5, 0x8c, 0x59, 0x45, 0x1c, + 0xbc, 0x42, 0xbd, 0xc6, 0xe5, 0xd7, 0x4a, 0x1a, 0x5e, 0x58, 0x50, 0x74, 0xc7, 0xf7, 0xd1, 0x8a, + 0xa5, 0x5b, 0xab, 0x3a, 0xde, 0xed, 0x0a, 0xb1, 0x52, 0x0a, 0xca, 0xda, 0xe0, 0x77, 0x1b, 0x6d, + 0x5c, 0x7b, 0x04, 0x8e, 0x10, 0xf2, 0x67, 0x24, 0xdd, 0x73, 0x76, 0x96, 0x76, 0xbb, 0xfb, 0xcf, + 0x17, 0x19, 0xfa, 0xaf, 0x39, 0x6a, 0xc7, 0xaf, 0xd2, 0x9a, 0x35, 0x1a, 0xe0, 0xaf, 0xa8, 0xcb, + 0xa5, 0x54, 0x86, 0x1b, 0xa1, 0xa4, 0xee, 0xb5, 0x6d, 0xbf, 0xc3, 0x45, 0xad, 0x27, 0x87, 0x35, + 0xe3, 0x8d, 0x34, 0xc9, 0xd4, 0xbb, 0x5b, 0xf5, 0xed, 0x36, 0x2a, 0xac, 0xd9, 0x0a, 0x53, 0xd4, + 0x91, 0x3c, 0x02, 0x1d, 0x73, 0x1f, 0xec, 0x72, 0x3a, 0xde, 0x56, 0x25, 0xea, 0x7c, 0x98, 0x15, + 0x58, 0x7d, 0xa7, 0xff, 0x12, 0x6d, 0x5e, 0x6f, 0x83, 0x37, 0xd1, 0xd2, 0x04, 0xa6, 0xa5, 0xc9, + 0xac, 0x38, 0xe2, 0x7b, 0x68, 0x25, 0xe3, 0x61, 0x0a, 0xf6, 0x17, 0x75, 0x58, 0x19, 0xbc, 0x68, + 0x1f, 0x38, 0x83, 0x63, 0xb4, 0x35, 0xb7, 0x5b, 0xfc, 0x10, 0xad, 0xf1, 0x30, 0x54, 0x27, 0x30, + 0xb2, 0x90, 0x75, 0x6f, 0xa3, 0x9a, 0x61, 0xed, 0xb0, 0x4c, 0xb3, 0x59, 0x1d, 0x3f, 0x40, 0xab, + 0x09, 0x70, 0xad, 0x64, 0x89, 0xae, 0xbf, 0x05, 0xb3, 0x59, 0x56, 0x55, 0x3d, 0x72, 0x7a, 0xe9, + 0xb6, 0xce, 0x2e, 0xdd, 0xd6, 0xf9, 0xa5, 0xdb, 0xfa, 0x96, 0xbb, 0xce, 0x69, 0xee, 0x3a, 0x67, + 0xb9, 0xeb, 0x9c, 0xe7, 0xae, 0xf3, 0x33, 0x77, 0x9d, 0xef, 0xbf, 0xdc, 0xd6, 0xd1, 0xfa, 0xcc, + 0xcb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x2d, 0x62, 0x44, 0xd7, 0x04, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto new file mode 100644 index 0000000000..9a09cba267 --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/generated.proto @@ -0,0 +1,80 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.imagepolicy.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// ImageReview checks if the set of images in a pod are allowed. +message ImageReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the pod being evaluated + optional ImageReviewSpec spec = 2; + + // Status is filled in by the backend and indicates whether the pod should be allowed. + // +optional + optional ImageReviewStatus status = 3; +} + +// ImageReviewContainerSpec is a description of a container within the pod creation request. +message ImageReviewContainerSpec { + // This can be in the form image:tag or image@SHA:012345679abcdef. + // +optional + optional string image = 1; +} + +// ImageReviewSpec is a description of the pod creation request. +message ImageReviewSpec { + // Containers is a list of a subset of the information in each container of the Pod being created. + // +optional + repeated ImageReviewContainerSpec containers = 1; + + // Annotations is a list of key-value pairs extracted from the Pod's annotations. + // It only includes keys which match the pattern `*.image-policy.k8s.io/*`. + // It is up to each webhook backend to determine how to interpret these annotations, if at all. + // +optional + map annotations = 2; + + // Namespace is the namespace the pod is being created in. + // +optional + optional string namespace = 3; +} + +// ImageReviewStatus is the result of the token authentication request. +message ImageReviewStatus { + // Allowed indicates that all images were allowed to be run. + optional bool allowed = 1; + + // Reason should be empty unless Allowed is false in which case it + // may contain a short description of what is wrong. Kubernetes + // may truncate excessively long errors when displaying to the user. + // +optional + optional string reason = 2; +} + diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/register.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/register.go new file mode 100644 index 0000000000..3e762bb4f9 --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/register.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 v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name for this API. +const GroupName = "imagepolicy.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &ImageReview{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/types.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/types.go new file mode 100644 index 0000000000..258b5cd75b --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/types.go @@ -0,0 +1,74 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ImageReview checks if the set of images in a pod are allowed. +type ImageReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the pod being evaluated + Spec ImageReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the backend and indicates whether the pod should be allowed. + // +optional + Status ImageReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ImageReviewSpec is a description of the pod creation request. +type ImageReviewSpec struct { + // Containers is a list of a subset of the information in each container of the Pod being created. + // +optional + Containers []ImageReviewContainerSpec `json:"containers,omitempty" protobuf:"bytes,1,rep,name=containers"` + // Annotations is a list of key-value pairs extracted from the Pod's annotations. + // It only includes keys which match the pattern `*.image-policy.k8s.io/*`. + // It is up to each webhook backend to determine how to interpret these annotations, if at all. + // +optional + Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,2,rep,name=annotations"` + // Namespace is the namespace the pod is being created in. + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"` +} + +// ImageReviewContainerSpec is a description of a container within the pod creation request. +type ImageReviewContainerSpec struct { + // This can be in the form image:tag or image@SHA:012345679abcdef. + // +optional + Image string `json:"image,omitempty" protobuf:"bytes,1,opt,name=image"` + // In future, we may add command line overrides, exec health check command lines, and so on. +} + +// ImageReviewStatus is the result of the token authentication request. +type ImageReviewStatus struct { + // Allowed indicates that all images were allowed to be run. + Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"` + // Reason should be empty unless Allowed is false in which case it + // may contain a short description of what is wrong. Kubernetes + // may truncate excessively long errors when displaying to the user. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` +} diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..f4b26f5e8f --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/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_ImageReview = map[string]string{ + "": "ImageReview checks if the set of images in a pod are allowed.", + "spec": "Spec holds information about the pod being evaluated", + "status": "Status is filled in by the backend and indicates whether the pod should be allowed.", +} + +func (ImageReview) SwaggerDoc() map[string]string { + return map_ImageReview +} + +var map_ImageReviewContainerSpec = map[string]string{ + "": "ImageReviewContainerSpec is a description of a container within the pod creation request.", + "image": "This can be in the form image:tag or image@SHA:012345679abcdef.", +} + +func (ImageReviewContainerSpec) SwaggerDoc() map[string]string { + return map_ImageReviewContainerSpec +} + +var map_ImageReviewSpec = map[string]string{ + "": "ImageReviewSpec is a description of the pod creation request.", + "containers": "Containers is a list of a subset of the information in each container of the Pod being created.", + "annotations": "Annotations is a list of key-value pairs extracted from the Pod's annotations. It only includes keys which match the pattern `*.image-policy.k8s.io/*`. It is up to each webhook backend to determine how to interpret these annotations, if at all.", + "namespace": "Namespace is the namespace the pod is being created in.", +} + +func (ImageReviewSpec) SwaggerDoc() map[string]string { + return map_ImageReviewSpec +} + +var map_ImageReviewStatus = map[string]string{ + "": "ImageReviewStatus is the result of the token authentication request.", + "allowed": "Allowed indicates that all images were allowed to be run.", + "reason": "Reason should be empty unless Allowed is false in which case it may contain a short description of what is wrong. Kubernetes may truncate excessively long errors when displaying to the user.", +} + +func (ImageReviewStatus) SwaggerDoc() map[string]string { + return map_ImageReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..95b204e0eb --- /dev/null +++ b/vendor/k8s.io/api/imagepolicy/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,145 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ImageReview).DeepCopyInto(out.(*ImageReview)) + return nil + }, InType: reflect.TypeOf(&ImageReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ImageReviewContainerSpec).DeepCopyInto(out.(*ImageReviewContainerSpec)) + return nil + }, InType: reflect.TypeOf(&ImageReviewContainerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ImageReviewSpec).DeepCopyInto(out.(*ImageReviewSpec)) + return nil + }, InType: reflect.TypeOf(&ImageReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ImageReviewStatus).DeepCopyInto(out.(*ImageReviewStatus)) + return nil + }, InType: reflect.TypeOf(&ImageReviewStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImageReview) DeepCopyInto(out *ImageReview) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageReview. +func (in *ImageReview) DeepCopy() *ImageReview { + if in == nil { + return nil + } + out := new(ImageReview) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ImageReview) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImageReviewContainerSpec) DeepCopyInto(out *ImageReviewContainerSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageReviewContainerSpec. +func (in *ImageReviewContainerSpec) DeepCopy() *ImageReviewContainerSpec { + if in == nil { + return nil + } + out := new(ImageReviewContainerSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImageReviewSpec) DeepCopyInto(out *ImageReviewSpec) { + *out = *in + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]ImageReviewContainerSpec, len(*in)) + copy(*out, *in) + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageReviewSpec. +func (in *ImageReviewSpec) DeepCopy() *ImageReviewSpec { + if in == nil { + return nil + } + out := new(ImageReviewSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImageReviewStatus) DeepCopyInto(out *ImageReviewStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageReviewStatus. +func (in *ImageReviewStatus) DeepCopy() *ImageReviewStatus { + if in == nil { + return nil + } + out := new(ImageReviewStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/OWNERS b/vendor/k8s.io/api/networking/OWNERS similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/networking/OWNERS rename to vendor/k8s.io/api/networking/OWNERS diff --git a/vendor/k8s.io/api/networking/v1/BUILD b/vendor/k8s.io/api/networking/v1/BUILD new file mode 100644 index 0000000000..5ca0fae681 --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/networking/v1/doc.go b/vendor/k8s.io/api/networking/v1/doc.go new file mode 100644 index 0000000000..8bcc30b07f --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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=networking.k8s.io +package v1 // import "k8s.io/api/networking/v1" diff --git a/vendor/k8s.io/api/networking/v1/generated.pb.go b/vendor/k8s.io/api/networking/v1/generated.pb.go new file mode 100644 index 0000000000..df4d9f9795 --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/generated.pb.go @@ -0,0 +1,1869 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/networking/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/networking/v1/generated.proto + + It has these top-level messages: + IPBlock + NetworkPolicy + NetworkPolicyEgressRule + NetworkPolicyIngressRule + NetworkPolicyList + NetworkPolicyPeer + NetworkPolicyPort + NetworkPolicySpec +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import k8s_io_api_core_v1 "k8s.io/api/core/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *IPBlock) Reset() { *m = IPBlock{} } +func (*IPBlock) ProtoMessage() {} +func (*IPBlock) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } +func (*NetworkPolicy) ProtoMessage() {} +func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *NetworkPolicyEgressRule) Reset() { *m = NetworkPolicyEgressRule{} } +func (*NetworkPolicyEgressRule) ProtoMessage() {} +func (*NetworkPolicyEgressRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *NetworkPolicyIngressRule) Reset() { *m = NetworkPolicyIngressRule{} } +func (*NetworkPolicyIngressRule) ProtoMessage() {} +func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *NetworkPolicyList) Reset() { *m = NetworkPolicyList{} } +func (*NetworkPolicyList) ProtoMessage() {} +func (*NetworkPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *NetworkPolicyPeer) Reset() { *m = NetworkPolicyPeer{} } +func (*NetworkPolicyPeer) ProtoMessage() {} +func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *NetworkPolicyPort) Reset() { *m = NetworkPolicyPort{} } +func (*NetworkPolicyPort) ProtoMessage() {} +func (*NetworkPolicyPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *NetworkPolicySpec) Reset() { *m = NetworkPolicySpec{} } +func (*NetworkPolicySpec) ProtoMessage() {} +func (*NetworkPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func init() { + proto.RegisterType((*IPBlock)(nil), "k8s.io.api.networking.v1.IPBlock") + proto.RegisterType((*NetworkPolicy)(nil), "k8s.io.api.networking.v1.NetworkPolicy") + proto.RegisterType((*NetworkPolicyEgressRule)(nil), "k8s.io.api.networking.v1.NetworkPolicyEgressRule") + proto.RegisterType((*NetworkPolicyIngressRule)(nil), "k8s.io.api.networking.v1.NetworkPolicyIngressRule") + proto.RegisterType((*NetworkPolicyList)(nil), "k8s.io.api.networking.v1.NetworkPolicyList") + proto.RegisterType((*NetworkPolicyPeer)(nil), "k8s.io.api.networking.v1.NetworkPolicyPeer") + proto.RegisterType((*NetworkPolicyPort)(nil), "k8s.io.api.networking.v1.NetworkPolicyPort") + proto.RegisterType((*NetworkPolicySpec)(nil), "k8s.io.api.networking.v1.NetworkPolicySpec") +} +func (m *IPBlock) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IPBlock) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CIDR))) + i += copy(dAtA[i:], m.CIDR) + if len(m.Except) > 0 { + for _, s := range m.Except { + 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 *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())) + 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 + return i, nil +} + +func (m *NetworkPolicyEgressRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyEgressRule) 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.To) > 0 { + for _, msg := range m.To { + 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 *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())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + 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())) + n4, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if m.NamespaceSelector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NamespaceSelector.Size())) + n5, err := m.NamespaceSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + if m.IPBlock != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.IPBlock.Size())) + n6, err := m.IPBlock.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + 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())) + n7, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + 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())) + n8, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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 + } + } + if len(m.Egress) > 0 { + for _, msg := range m.Egress { + 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 + } + } + if len(m.PolicyTypes) > 0 { + for _, s := range m.PolicyTypes { + 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 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 *IPBlock) Size() (n int) { + var l int + _ = l + l = len(m.CIDR) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Except) > 0 { + for _, s := range m.Except { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + 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 *NetworkPolicyEgressRule) 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.To) > 0 { + for _, e := range m.To { + l = e.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)) + } + if m.IPBlock != nil { + l = m.IPBlock.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)) + } + } + if len(m.Egress) > 0 { + for _, e := range m.Egress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.PolicyTypes) > 0 { + for _, s := range m.PolicyTypes { + 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 *IPBlock) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IPBlock{`, + `CIDR:` + fmt.Sprintf("%v", this.CIDR) + `,`, + `Except:` + fmt.Sprintf("%v", this.Except) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkPolicySpec", "NetworkPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyEgressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyEgressRule{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "NetworkPolicyPort", "NetworkPolicyPort", 1), `&`, ``, 1) + `,`, + `To:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.To), "NetworkPolicyPeer", "NetworkPolicyPeer", 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_apimachinery_pkg_apis_meta_v1.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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `IPBlock:` + strings.Replace(fmt.Sprintf("%v", this.IPBlock), "IPBlock", "IPBlock", 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_apimachinery_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", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "NetworkPolicyIngressRule", "NetworkPolicyIngressRule", 1), `&`, ``, 1) + `,`, + `Egress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Egress), "NetworkPolicyEgressRule", "NetworkPolicyEgressRule", 1), `&`, ``, 1) + `,`, + `PolicyTypes:` + fmt.Sprintf("%v", this.PolicyTypes) + `,`, + `}`, + }, "") + 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 *IPBlock) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IPBlock: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IPBlock: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CIDR = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Except", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Except = append(m.Except, 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 *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 *NetworkPolicyEgressRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyEgressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyEgressRule: 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 To", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.To = append(m.To, NetworkPolicyPeer{}) + if err := m.To[len(m.To)-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 *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 = &k8s_io_apimachinery_pkg_apis_meta_v1.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 = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPBlock", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.IPBlock == nil { + m.IPBlock = &IPBlock{} + } + if err := m.IPBlock.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_api_core_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_apimachinery_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 + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Egress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Egress = append(m.Egress, NetworkPolicyEgressRule{}) + if err := m.Egress[len(m.Egress)-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 PolicyTypes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyTypes = append(m.PolicyTypes, PolicyType(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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/networking/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 829 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xf6, 0x3a, 0xce, 0x47, 0x27, 0x94, 0x92, 0x41, 0x08, 0x2b, 0x88, 0x75, 0xd8, 0x0b, 0x41, + 0x55, 0x67, 0x71, 0x8b, 0x10, 0x37, 0xc4, 0x42, 0x29, 0x96, 0x9a, 0xc4, 0x9a, 0xf4, 0x02, 0x02, + 0x89, 0xf5, 0xfa, 0xcd, 0x66, 0x6a, 0xef, 0xce, 0x6a, 0x66, 0x6c, 0x92, 0x1b, 0x3f, 0x81, 0x1f, + 0xc2, 0x91, 0x1b, 0x87, 0x72, 0xcc, 0xb1, 0xc7, 0x9e, 0x56, 0x64, 0xf9, 0x17, 0x39, 0xa1, 0x99, + 0x1d, 0x7b, 0xfd, 0x51, 0x0b, 0xb7, 0xa2, 0x37, 0xcf, 0x3b, 0xcf, 0xf3, 0xbc, 0x1f, 0xf3, 0xf8, + 0x5d, 0xf4, 0xd5, 0xe0, 0x0b, 0x49, 0x18, 0xf7, 0x07, 0xa3, 0x1e, 0x88, 0x14, 0x14, 0x48, 0x7f, + 0x0c, 0x69, 0x9f, 0x0b, 0xdf, 0x5e, 0x84, 0x19, 0xf3, 0x53, 0x50, 0xbf, 0x70, 0x31, 0x60, 0x69, + 0xec, 0x8f, 0xdb, 0x7e, 0x0c, 0x29, 0x88, 0x50, 0x41, 0x9f, 0x64, 0x82, 0x2b, 0x8e, 0x9b, 0x25, + 0x92, 0x84, 0x19, 0x23, 0x15, 0x92, 0x8c, 0xdb, 0xfb, 0xf7, 0x62, 0xa6, 0xce, 0x47, 0x3d, 0x12, + 0xf1, 0xc4, 0x8f, 0x79, 0xcc, 0x7d, 0x43, 0xe8, 0x8d, 0xce, 0xcc, 0xc9, 0x1c, 0xcc, 0xaf, 0x52, + 0x68, 0xdf, 0x9b, 0x49, 0x19, 0x71, 0x01, 0x2f, 0x49, 0xb6, 0x7f, 0x6f, 0x06, 0x03, 0x17, 0x0a, + 0x52, 0xc9, 0x78, 0x2a, 0xfd, 0x71, 0xbb, 0x07, 0x2a, 0x5c, 0x86, 0x7f, 0x32, 0x03, 0xcf, 0xf8, + 0x90, 0x45, 0x97, 0x2b, 0xa1, 0x9f, 0x55, 0xd0, 0x24, 0x8c, 0xce, 0x59, 0x0a, 0xe2, 0xd2, 0xcf, + 0x06, 0xb1, 0x0e, 0x48, 0x3f, 0x01, 0x15, 0xbe, 0xac, 0x1e, 0x7f, 0x15, 0x4b, 0x8c, 0x52, 0xc5, + 0x12, 0x58, 0x22, 0x7c, 0xfe, 0x5f, 0x04, 0x19, 0x9d, 0x43, 0x12, 0x2e, 0xf1, 0x1e, 0xac, 0xe2, + 0x8d, 0x14, 0x1b, 0xfa, 0x2c, 0x55, 0x52, 0x89, 0x45, 0x92, 0x77, 0x82, 0xb6, 0x3b, 0xdd, 0x60, + 0xc8, 0xa3, 0x01, 0x3e, 0x40, 0x8d, 0x88, 0xf5, 0x45, 0xd3, 0x39, 0x70, 0x0e, 0x6f, 0x05, 0x6f, + 0x5d, 0xe5, 0xad, 0x5a, 0x91, 0xb7, 0x1a, 0x5f, 0x77, 0xbe, 0xa1, 0xd4, 0xdc, 0x60, 0x0f, 0x6d, + 0xc1, 0x45, 0x04, 0x99, 0x6a, 0xd6, 0x0f, 0x36, 0x0e, 0x6f, 0x05, 0xa8, 0xc8, 0x5b, 0x5b, 0x0f, + 0x4d, 0x84, 0xda, 0x1b, 0xef, 0x2f, 0x07, 0xdd, 0x3e, 0x2e, 0xdf, 0xb8, 0x6b, 0xc6, 0x89, 0x7f, + 0x46, 0x3b, 0x7a, 0x36, 0xfd, 0x50, 0x85, 0x46, 0x7b, 0xf7, 0xfe, 0xa7, 0xa4, 0x32, 0xc4, 0xb4, + 0x54, 0x92, 0x0d, 0x62, 0x1d, 0x90, 0x44, 0xa3, 0xc9, 0xb8, 0x4d, 0x4e, 0x7a, 0x4f, 0x21, 0x52, + 0x47, 0xa0, 0xc2, 0x00, 0xdb, 0x6a, 0x50, 0x15, 0xa3, 0x53, 0x55, 0x7c, 0x84, 0x1a, 0x32, 0x83, + 0xa8, 0x59, 0x37, 0xea, 0x77, 0xc9, 0x2a, 0xbb, 0x91, 0xb9, 0xc2, 0x4e, 0x33, 0x88, 0xaa, 0x36, + 0xf5, 0x89, 0x1a, 0x19, 0xef, 0x0f, 0x07, 0xbd, 0x3f, 0x87, 0x7c, 0x18, 0x0b, 0x90, 0x92, 0x8e, + 0x86, 0x80, 0xbb, 0x68, 0x33, 0xe3, 0x42, 0xc9, 0xa6, 0x73, 0xb0, 0xf1, 0x0a, 0xb9, 0xba, 0x5c, + 0xa8, 0xe0, 0xb6, 0xcd, 0xb5, 0xa9, 0x4f, 0x92, 0x96, 0x42, 0xf8, 0x11, 0xaa, 0x2b, 0x6e, 0x06, + 0xfa, 0x0a, 0x72, 0x00, 0x22, 0x40, 0x56, 0xae, 0xfe, 0x84, 0xd3, 0xba, 0xe2, 0xde, 0x9f, 0x0e, + 0x6a, 0xce, 0xa1, 0x3a, 0xe9, 0x9b, 0xac, 0xfb, 0x08, 0x35, 0xce, 0x04, 0x4f, 0x5e, 0xa7, 0xf2, + 0xe9, 0xd0, 0xbf, 0x15, 0x3c, 0xa1, 0x46, 0xc6, 0x7b, 0xe6, 0xa0, 0xbd, 0x39, 0xe4, 0x63, 0x26, + 0x15, 0xfe, 0x71, 0xc9, 0x3b, 0x64, 0x3d, 0xef, 0x68, 0xb6, 0x71, 0xce, 0x3b, 0x36, 0xd7, 0xce, + 0x24, 0x32, 0xe3, 0x9b, 0xc7, 0x68, 0x93, 0x29, 0x48, 0xa4, 0xed, 0xe1, 0xe3, 0x35, 0x7b, 0xa8, + 0x06, 0xd2, 0xd1, 0x6c, 0x5a, 0x8a, 0x78, 0xcf, 0xea, 0x0b, 0x1d, 0xe8, 0x5e, 0xf1, 0x19, 0xda, + 0xcd, 0x78, 0xff, 0x14, 0x86, 0x10, 0x29, 0x2e, 0x6c, 0x13, 0x0f, 0xd6, 0x6c, 0x22, 0xec, 0xc1, + 0x70, 0x42, 0x0d, 0xee, 0x14, 0x79, 0x6b, 0xb7, 0x5b, 0x69, 0xd1, 0x59, 0x61, 0x7c, 0x81, 0xf6, + 0xd2, 0x30, 0x01, 0x99, 0x85, 0x11, 0x4c, 0xb3, 0xd5, 0x5f, 0x3f, 0xdb, 0x7b, 0x45, 0xde, 0xda, + 0x3b, 0x5e, 0x54, 0xa4, 0xcb, 0x49, 0xf0, 0x77, 0x68, 0x9b, 0x65, 0x66, 0x85, 0x34, 0x37, 0x4c, + 0xbe, 0x8f, 0x56, 0xcf, 0xd1, 0xee, 0x9a, 0x60, 0xb7, 0xc8, 0x5b, 0x93, 0xc5, 0x43, 0x27, 0x74, + 0xef, 0xf7, 0x45, 0x0f, 0x68, 0xc3, 0xe1, 0x47, 0x68, 0xc7, 0xec, 0xaa, 0x88, 0x0f, 0xed, 0x6e, + 0xba, 0xab, 0xdf, 0xb3, 0x6b, 0x63, 0x37, 0x79, 0xeb, 0x83, 0xe5, 0xcf, 0x02, 0x99, 0x5c, 0xd3, + 0x29, 0x19, 0x1f, 0xa3, 0x86, 0xb6, 0xae, 0x9d, 0xca, 0xea, 0x25, 0xa4, 0xf7, 0x25, 0x29, 0xf7, + 0x25, 0xe9, 0xa4, 0xea, 0x44, 0x9c, 0x2a, 0xc1, 0xd2, 0x38, 0xd8, 0xd1, 0x96, 0xd5, 0x25, 0x51, + 0xa3, 0xe3, 0xdd, 0x2c, 0x3e, 0xb8, 0xde, 0x21, 0xf8, 0xe9, 0xff, 0xf6, 0xe0, 0xef, 0x5a, 0x9b, + 0xad, 0x7e, 0xf4, 0x9f, 0xd0, 0x36, 0x2b, 0xff, 0xe4, 0xd6, 0xc2, 0xf7, 0xd7, 0xb4, 0xf0, 0xcc, + 0x6a, 0x08, 0xee, 0xd8, 0x34, 0xdb, 0x93, 0xe0, 0x44, 0x13, 0x7f, 0x8f, 0xb6, 0xa0, 0x54, 0xdf, + 0x30, 0xea, 0xed, 0x35, 0xd5, 0xab, 0x7d, 0x19, 0xbc, 0x6d, 0xc5, 0xb7, 0x6c, 0xcc, 0x0a, 0xe2, + 0x2f, 0xf5, 0x94, 0x34, 0xf6, 0xc9, 0x65, 0x06, 0xb2, 0xd9, 0x30, 0xdf, 0x93, 0x0f, 0xcb, 0x66, + 0xa7, 0xe1, 0x9b, 0xbc, 0x85, 0xaa, 0x23, 0x9d, 0x65, 0x04, 0x87, 0x57, 0xd7, 0x6e, 0xed, 0xf9, + 0xb5, 0x5b, 0x7b, 0x71, 0xed, 0xd6, 0x7e, 0x2d, 0x5c, 0xe7, 0xaa, 0x70, 0x9d, 0xe7, 0x85, 0xeb, + 0xbc, 0x28, 0x5c, 0xe7, 0xef, 0xc2, 0x75, 0x7e, 0xfb, 0xc7, 0xad, 0xfd, 0x50, 0x1f, 0xb7, 0xff, + 0x0d, 0x00, 0x00, 0xff, 0xff, 0x48, 0x47, 0x24, 0xc9, 0xc1, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/networking/v1/generated.proto b/vendor/k8s.io/api/networking/v1/generated.proto new file mode 100644 index 0000000000..ae28d2f2df --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/generated.proto @@ -0,0 +1,190 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.networking.v1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/api/extensions/v1beta1/generated.proto"; +import "k8s.io/api/policy/v1beta1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// IPBlock describes a particular CIDR (Ex. "192.168.1.1/24") that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should +// not be included within this rule. +message IPBlock { + // CIDR is a string representing the IP Block + // Valid examples are "192.168.1.1/24" + optional string cidr = 1; + + // Except is a slice of CIDRs that should not be included within an IP Block + // Valid examples are "192.168.1.1/24" + // Except values will be rejected if they are outside the CIDR range + // +optional + repeated string except = 2; +} + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +message NetworkPolicy { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + optional NetworkPolicySpec spec = 2; +} + +// NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. +// This type is beta-level in 1.8 +message NetworkPolicyEgressRule { + // List of destination ports for outgoing traffic. + // Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + repeated NetworkPolicyPort ports = 1; + + // List of destinations for outgoing traffic of pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all destinations (traffic not restricted by + // destination). If this field is present and contains at least one item, this rule + // allows traffic only if the traffic matches at least one item in the to list. + // +optional + repeated NetworkPolicyPeer to = 2; +} + +// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match 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 + // empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + 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 + // empty or missing, this rule matches all sources (traffic not restricted by + // source). 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. + // +optional + repeated NetworkPolicyPeer from = 2; +} + +// NetworkPolicyList is a list of NetworkPolicy objects. +message NetworkPolicyList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated NetworkPolicy items = 2; +} + +// NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields +// must be specified. +message NetworkPolicyPeer { + // This is a label selector which selects Pods in this namespace. This field + // follows standard label selector semantics. If present but empty, this selector + // selects all pods in this namespace. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 present but empty, this selector selects all namespaces. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2; + + // IPBlock defines policy on a particular IPBlock + // +optional + optional IPBlock ipBlock = 3; +} + +// NetworkPolicyPort describes a port to allow traffic on +message NetworkPolicyPort { + // The protocol (TCP or UDP) which traffic must match. If not specified, this + // field defaults to TCP. + // +optional + optional string protocol = 1; + + // 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. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2; +} + +// NetworkPolicySpec provides the specification of a NetworkPolicy +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 k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1; + + // List of ingress rules to be applied to the selected pods. Traffic is allowed to + // a pod if there are no NetworkPolicies selecting the pod + // (and cluster policy otherwise allows the traffic), 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 allow any traffic (and serves + // solely to ensure that the pods it selects are isolated by default) + // +optional + repeated NetworkPolicyIngressRule ingress = 2; + + // List of egress rules to be applied to the selected pods. Outgoing traffic is + // allowed if there are no NetworkPolicies selecting the pod (and cluster policy + // otherwise allows the traffic), OR if the traffic matches at least one egress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy limits all outgoing traffic (and serves + // solely to ensure that the pods it selects are isolated by default). + // This field is beta-level in 1.8 + // +optional + repeated NetworkPolicyEgressRule egress = 3; + + // List of rule types that the NetworkPolicy relates to. + // Valid options are Ingress, Egress, or Ingress,Egress. + // If this field is not specified, it will default based on the existence of Ingress or Egress rules; + // policies that contain an Egress section are assumed to affect Egress, and all policies + // (whether or not they contain an Ingress section) are assumed to affect Ingress. + // If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. + // Likewise, if you want to write a policy that specifies that no egress is allowed, + // you must specify a policyTypes value that include "Egress" (since such a policy would not include + // an Egress section and would otherwise default to just [ "Ingress" ]). + // This field is beta-level in 1.8 + // +optional + repeated string policyTypes = 4; +} + diff --git a/vendor/k8s.io/api/networking/v1/register.go b/vendor/k8s.io/api/networking/v1/register.go new file mode 100644 index 0000000000..2ba9951d8a --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "networking.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/networking/v1/types.go b/vendor/k8s.io/api/networking/v1/types.go new file mode 100644 index 0000000000..57bc8005e4 --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/types.go @@ -0,0 +1,196 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +type NetworkPolicy struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + Spec NetworkPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// Policy Type string describes the NetworkPolicy type +// This type is beta-level in 1.8 +type PolicyType string + +const ( + // PolicyTypeIngress is a NetworkPolicy that affects ingress traffic on selected pods + PolicyTypeIngress PolicyType = "Ingress" + // PolicyTypeEgress is a NetworkPolicy that affects egress traffic on selected pods + PolicyTypeEgress PolicyType = "Egress" +) + +// NetworkPolicySpec provides the specification of a NetworkPolicy +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 metav1.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 there are no NetworkPolicies selecting the pod + // (and cluster policy otherwise allows the traffic), 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 allow any traffic (and serves + // solely to ensure that the pods it selects are isolated by default) + // +optional + Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"` + + // List of egress rules to be applied to the selected pods. Outgoing traffic is + // allowed if there are no NetworkPolicies selecting the pod (and cluster policy + // otherwise allows the traffic), OR if the traffic matches at least one egress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy limits all outgoing traffic (and serves + // solely to ensure that the pods it selects are isolated by default). + // This field is beta-level in 1.8 + // +optional + Egress []NetworkPolicyEgressRule `json:"egress,omitempty" protobuf:"bytes,3,rep,name=egress"` + + // List of rule types that the NetworkPolicy relates to. + // Valid options are Ingress, Egress, or Ingress,Egress. + // If this field is not specified, it will default based on the existence of Ingress or Egress rules; + // policies that contain an Egress section are assumed to affect Egress, and all policies + // (whether or not they contain an Ingress section) are assumed to affect Ingress. + // If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. + // Likewise, if you want to write a policy that specifies that no egress is allowed, + // you must specify a policyTypes value that include "Egress" (since such a policy would not include + // an Egress section and would otherwise default to just [ "Ingress" ]). + // This field is beta-level in 1.8 + // +optional + PolicyTypes []PolicyType `json:"policyTypes,omitempty" protobuf:"bytes,4,rep,name=policyTypes,casttype=PolicyType"` +} + +// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match 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 + // empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + 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 + // empty or missing, this rule matches all sources (traffic not restricted by + // source). 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. + // +optional + From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"` +} + +// NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. +// This type is beta-level in 1.8 +type NetworkPolicyEgressRule struct { + // List of destination ports for outgoing traffic. + // Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // 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. + // +optional + Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"` + + // List of destinations for outgoing traffic of pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all destinations (traffic not restricted by + // destination). If this field is present and contains at least one item, this rule + // allows traffic only if the traffic matches at least one item in the to list. + // +optional + To []NetworkPolicyPeer `json:"to,omitempty" protobuf:"bytes,2,rep,name=to"` +} + +// NetworkPolicyPort describes a port to allow traffic on +type NetworkPolicyPort struct { + // The protocol (TCP or UDP) which traffic must match. If not specified, this + // field defaults to TCP. + // +optional + Protocol *v1.Protocol `json:"protocol,omitempty" protobuf:"bytes,1,opt,name=protocol,casttype=k8s.io/api/core/v1.Protocol"` + + // 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. + // +optional + Port *intstr.IntOrString `json:"port,omitempty" protobuf:"bytes,2,opt,name=port"` +} + +// IPBlock describes a particular CIDR (Ex. "192.168.1.1/24") that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should +// not be included within this rule. +type IPBlock struct { + // CIDR is a string representing the IP Block + // Valid examples are "192.168.1.1/24" + CIDR string `json:"cidr" protobuf:"bytes,1,name=cidr"` + // Except is a slice of CIDRs that should not be included within an IP Block + // Valid examples are "192.168.1.1/24" + // Except values will be rejected if they are outside the CIDR range + // +optional + Except []string `json:"except,omitempty" protobuf:"bytes,2,rep,name=except"` +} + +// NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields +// must be specified. +type NetworkPolicyPeer struct { + // This is a label selector which selects Pods in this namespace. This field + // follows standard label selector semantics. If present but empty, this selector + // selects all pods in this namespace. + // +optional + PodSelector *metav1.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 present but empty, this selector selects all namespaces. + // +optional + NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` + + // IPBlock defines policy on a particular IPBlock + // +optional + IPBlock *IPBlock `json:"ipBlock,omitempty" protobuf:"bytes,3,rep,name=ipBlock"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NetworkPolicyList is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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/api/networking/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..ad0bafeac0 --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go @@ -0,0 +1,113 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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_IPBlock = map[string]string{ + "": "IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule.", + "cidr": "CIDR is a string representing the IP Block Valid examples are \"192.168.1.1/24\"", + "except": "Except is a slice of CIDRs that should not be included within an IP Block Valid examples are \"192.168.1.1/24\" Except values will be rejected if they are outside the CIDR range", +} + +func (IPBlock) SwaggerDoc() map[string]string { + return map_IPBlock +} + +var map_NetworkPolicy = map[string]string{ + "": "NetworkPolicy describes what network traffic is allowed for a set of Pods", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/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_NetworkPolicyEgressRule = map[string]string{ + "": "NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8", + "ports": "List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). 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.", + "to": "List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.", +} + +func (NetworkPolicyEgressRule) SwaggerDoc() map[string]string { + return map_NetworkPolicyEgressRule +} + +var map_NetworkPolicyIngressRule = map[string]string{ + "": "NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match 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 empty or missing, this rule matches all ports (traffic not restricted by port). 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 empty or missing, this rule matches all sources (traffic not restricted by source). 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{ + "": "NetworkPolicyList is a list of NetworkPolicy objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/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{ + "": "NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields must be specified.", + "podSelector": "This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. 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 present but empty, this selector selects all namespaces.", + "ipBlock": "IPBlock defines policy on a particular IPBlock", +} + +func (NetworkPolicyPeer) SwaggerDoc() map[string]string { + return map_NetworkPolicyPeer +} + +var map_NetworkPolicyPort = map[string]string{ + "": "NetworkPolicyPort describes a port to allow traffic on", + "protocol": "The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP.", + "port": "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.", +} + +func (NetworkPolicyPort) SwaggerDoc() map[string]string { + return map_NetworkPolicyPort +} + +var map_NetworkPolicySpec = map[string]string{ + "": "NetworkPolicySpec provides the specification of a NetworkPolicy", + "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 there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), 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 allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)", + "egress": "List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8", + "policyTypes": "List of rule types that the NetworkPolicy relates to. Valid options are Ingress, Egress, or Ingress,Egress. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an Egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8", +} + +func (NetworkPolicySpec) SwaggerDoc() map[string]string { + return map_NetworkPolicySpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..0e6709667d --- /dev/null +++ b/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go @@ -0,0 +1,331 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + core_v1 "k8s.io/api/core/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/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. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*IPBlock).DeepCopyInto(out.(*IPBlock)) + return nil + }, InType: reflect.TypeOf(&IPBlock{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicy).DeepCopyInto(out.(*NetworkPolicy)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyEgressRule).DeepCopyInto(out.(*NetworkPolicyEgressRule)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyEgressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyIngressRule).DeepCopyInto(out.(*NetworkPolicyIngressRule)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyList).DeepCopyInto(out.(*NetworkPolicyList)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyPeer).DeepCopyInto(out.(*NetworkPolicyPeer)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicyPort).DeepCopyInto(out.(*NetworkPolicyPort)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*NetworkPolicySpec).DeepCopyInto(out.(*NetworkPolicySpec)) + return nil + }, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPBlock) DeepCopyInto(out *IPBlock) { + *out = *in + if in.Except != nil { + in, out := &in.Except, &out.Except + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPBlock. +func (in *IPBlock) DeepCopy() *IPBlock { + if in == nil { + return nil + } + out := new(IPBlock) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicy) DeepCopyInto(out *NetworkPolicy) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicy. +func (in *NetworkPolicy) DeepCopy() *NetworkPolicy { + if in == nil { + return nil + } + out := new(NetworkPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NetworkPolicy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyEgressRule) DeepCopyInto(out *NetworkPolicyEgressRule) { + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.To != nil { + in, out := &in.To, &out.To + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyEgressRule. +func (in *NetworkPolicyEgressRule) DeepCopy() *NetworkPolicyEgressRule { + if in == nil { + return nil + } + out := new(NetworkPolicyEgressRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyIngressRule) DeepCopyInto(out *NetworkPolicyIngressRule) { + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyIngressRule. +func (in *NetworkPolicyIngressRule) DeepCopy() *NetworkPolicyIngressRule { + if in == nil { + return nil + } + out := new(NetworkPolicyIngressRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyList) DeepCopyInto(out *NetworkPolicyList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyList. +func (in *NetworkPolicyList) DeepCopy() *NetworkPolicyList { + if in == nil { + return nil + } + out := new(NetworkPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NetworkPolicyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { + *out = *in + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.IPBlock != nil { + in, out := &in.IPBlock, &out.IPBlock + if *in == nil { + *out = nil + } else { + *out = new(IPBlock) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyPeer. +func (in *NetworkPolicyPeer) DeepCopy() *NetworkPolicyPeer { + if in == nil { + return nil + } + out := new(NetworkPolicyPeer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { + *out = *in + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + if *in == nil { + *out = nil + } else { + *out = new(core_v1.Protocol) + **out = **in + } + } + if in.Port != nil { + in, out := &in.Port, &out.Port + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicyPort. +func (in *NetworkPolicyPort) DeepCopy() *NetworkPolicyPort { + if in == nil { + return nil + } + out := new(NetworkPolicyPort) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkPolicySpec) DeepCopyInto(out *NetworkPolicySpec) { + *out = *in + in.PodSelector.DeepCopyInto(&out.PodSelector) + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Egress != nil { + in, out := &in.Egress, &out.Egress + *out = make([]NetworkPolicyEgressRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PolicyTypes != nil { + in, out := &in.PolicyTypes, &out.PolicyTypes + *out = make([]PolicyType, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPolicySpec. +func (in *NetworkPolicySpec) DeepCopy() *NetworkPolicySpec { + if in == nil { + return nil + } + out := new(NetworkPolicySpec) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/OWNERS b/vendor/k8s.io/api/policy/OWNERS similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/policy/OWNERS rename to vendor/k8s.io/api/policy/OWNERS diff --git a/vendor/k8s.io/api/policy/v1beta1/BUILD b/vendor/k8s.io/api/policy/v1beta1/BUILD new file mode 100644 index 0000000000..66faa776eb --- /dev/null +++ b/vendor/k8s.io/api/policy/v1beta1/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/policy/v1beta1/doc.go b/vendor/k8s.io/api/policy/v1beta1/doc.go new file mode 100644 index 0000000000..1e9f4974da --- /dev/null +++ b/vendor/k8s.io/api/policy/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 + +// 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 v1beta1 // import "k8s.io/api/policy/v1beta1" diff --git a/vendor/k8s.io/api/policy/v1beta1/generated.pb.go b/vendor/k8s.io/api/policy/v1beta1/generated.pb.go new file mode 100644 index 0000000000..a66aeff354 --- /dev/null +++ b/vendor/k8s.io/api/policy/v1beta1/generated.pb.go @@ -0,0 +1,1454 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/policy/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/policy/v1beta1/generated.proto + + It has these top-level messages: + Eviction + PodDisruptionBudget + PodDisruptionBudgetList + PodDisruptionBudgetSpec + PodDisruptionBudgetStatus +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.policy.v1beta1.Eviction") + proto.RegisterType((*PodDisruptionBudget)(nil), "k8s.io.api.policy.v1beta1.PodDisruptionBudget") + proto.RegisterType((*PodDisruptionBudgetList)(nil), "k8s.io.api.policy.v1beta1.PodDisruptionBudgetList") + proto.RegisterType((*PodDisruptionBudgetSpec)(nil), "k8s.io.api.policy.v1beta1.PodDisruptionBudgetSpec") + proto.RegisterType((*PodDisruptionBudgetStatus)(nil), "k8s.io.api.policy.v1beta1.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 + if m.MinAvailable != nil { + 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 + } + if m.MaxUnavailable != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxUnavailable.Size())) + n9, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + 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++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + if len(m.DisruptedPods) > 0 { + keysForDisruptedPods := make([]string, 0, len(m.DisruptedPods)) + for k := range m.DisruptedPods { + keysForDisruptedPods = append(keysForDisruptedPods, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDisruptedPods) + for _, k := range keysForDisruptedPods { + dAtA[i] = 0x12 + i++ + v := m.DisruptedPods[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n10, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodDisruptionsAllowed)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentHealthy)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DesiredHealthy)) + dAtA[i] = 0x30 + 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 + if m.MinAvailable != nil { + l = m.MinAvailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodDisruptionBudgetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + if len(m.DisruptedPods) > 0 { + for k, v := range m.DisruptedPods { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + n += 1 + sovGenerated(uint64(m.PodDisruptionsAllowed)) + 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_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `DeleteOptions:` + strings.Replace(fmt.Sprintf("%v", this.DeleteOptions), "DeleteOptions", "k8s_io_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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(fmt.Sprintf("%v", this.MinAvailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetStatus) String() string { + if this == nil { + return "nil" + } + keysForDisruptedPods := make([]string, 0, len(this.DisruptedPods)) + for k := range this.DisruptedPods { + keysForDisruptedPods = append(keysForDisruptedPods, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDisruptedPods) + mapStringForDisruptedPods := "map[string]k8s_io_apimachinery_pkg_apis_meta_v1.Time{" + for _, k := range keysForDisruptedPods { + mapStringForDisruptedPods += fmt.Sprintf("%v: %v,", k, this.DisruptedPods[k]) + } + mapStringForDisruptedPods += "}" + s := strings.Join([]string{`&PodDisruptionBudgetStatus{`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `DisruptedPods:` + mapStringForDisruptedPods + `,`, + `PodDisruptionsAllowed:` + fmt.Sprintf("%v", this.PodDisruptionsAllowed) + `,`, + `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_apimachinery_pkg_apis_meta_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 m.MinAvailable == nil { + m.MinAvailable = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + 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_apimachinery_pkg_apis_meta_v1.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 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_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.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 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 != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DisruptedPods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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 + if m.DisruptedPods == nil { + m.DisruptedPods = make(map[string]k8s_io_apimachinery_pkg_apis_meta_v1.Time) + } + if iNdEx < postIndex { + 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_apimachinery_pkg_apis_meta_v1.Time{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.DisruptedPods[mapkey] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_apis_meta_v1.Time + m.DisruptedPods[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PodDisruptionsAllowed", wireType) + } + m.PodDisruptionsAllowed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PodDisruptionsAllowed |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + 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 5: + 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 6: + 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/policy/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 795 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x41, 0x6f, 0xdc, 0x44, + 0x14, 0xc7, 0xd7, 0xd9, 0x6c, 0x08, 0xc3, 0xee, 0x2a, 0x0c, 0x14, 0xd2, 0x95, 0xf0, 0xa2, 0x3d, + 0x21, 0xa4, 0x8e, 0x49, 0x5b, 0xa1, 0x88, 0x03, 0xa2, 0x26, 0x51, 0x29, 0x6a, 0x94, 0x6a, 0x52, + 0x2e, 0xa8, 0x48, 0x8c, 0xed, 0x57, 0x67, 0x58, 0xdb, 0x63, 0xcd, 0x8c, 0x4d, 0xf7, 0xc6, 0x81, + 0x0f, 0xc0, 0xf7, 0xe0, 0x8b, 0xe4, 0x80, 0x50, 0x8f, 0x15, 0x87, 0x15, 0x31, 0xe2, 0x7b, 0x20, + 0xdb, 0xb3, 0x9b, 0xf5, 0xee, 0x46, 0xdd, 0xe6, 0xc0, 0xcd, 0xf3, 0xde, 0xfb, 0xff, 0x9e, 0xdf, + 0x7f, 0x9e, 0x8d, 0xdc, 0xf1, 0xa1, 0x22, 0x5c, 0x38, 0xe3, 0xcc, 0x03, 0x99, 0x80, 0x06, 0xe5, + 0xe4, 0x90, 0x04, 0x42, 0x3a, 0x26, 0xc1, 0x52, 0xee, 0xa4, 0x22, 0xe2, 0xfe, 0xc4, 0xc9, 0x0f, + 0x3c, 0xd0, 0xec, 0xc0, 0x09, 0x21, 0x01, 0xc9, 0x34, 0x04, 0x24, 0x95, 0x42, 0x0b, 0x7c, 0xbb, + 0x2e, 0x25, 0x2c, 0xe5, 0xa4, 0x2e, 0x25, 0xa6, 0x74, 0x70, 0x27, 0xe4, 0xfa, 0x3c, 0xf3, 0x88, + 0x2f, 0x62, 0x27, 0x14, 0xa1, 0x70, 0x2a, 0x85, 0x97, 0x3d, 0xaf, 0x4e, 0xd5, 0xa1, 0x7a, 0xaa, + 0x49, 0x83, 0xd1, 0x42, 0x53, 0x5f, 0x48, 0x70, 0xf2, 0x95, 0x6e, 0x83, 0xfb, 0x57, 0x35, 0x31, + 0xf3, 0xcf, 0x79, 0x02, 0x72, 0xe2, 0xa4, 0xe3, 0xb0, 0x0c, 0x28, 0x27, 0x06, 0xcd, 0xd6, 0xa9, + 0x9c, 0xeb, 0x54, 0x32, 0x4b, 0x34, 0x8f, 0x61, 0x45, 0xf0, 0xf9, 0xeb, 0x04, 0xca, 0x3f, 0x87, + 0x98, 0xad, 0xe8, 0xee, 0x5d, 0xa7, 0xcb, 0x34, 0x8f, 0x1c, 0x9e, 0x68, 0xa5, 0xe5, 0xb2, 0x68, + 0xf4, 0x97, 0x85, 0x76, 0x8f, 0x73, 0xee, 0x6b, 0x2e, 0x12, 0xfc, 0x23, 0xda, 0x2d, 0xa7, 0x08, + 0x98, 0x66, 0xfb, 0xd6, 0xc7, 0xd6, 0x27, 0xef, 0xdc, 0xfd, 0x8c, 0x5c, 0x39, 0x3c, 0x87, 0x92, + 0x74, 0x1c, 0x96, 0x01, 0x45, 0xca, 0x6a, 0x92, 0x1f, 0x90, 0x53, 0xef, 0x27, 0xf0, 0xf5, 0x09, + 0x68, 0xe6, 0xe2, 0x8b, 0xe9, 0xb0, 0x55, 0x4c, 0x87, 0xe8, 0x2a, 0x46, 0xe7, 0x54, 0x1c, 0xa1, + 0x5e, 0x00, 0x11, 0x68, 0x38, 0x4d, 0xcb, 0x8e, 0x6a, 0x7f, 0xab, 0x6a, 0x73, 0x6f, 0xb3, 0x36, + 0x47, 0x8b, 0x52, 0xf7, 0xdd, 0x62, 0x3a, 0xec, 0x35, 0x42, 0xb4, 0x09, 0x1f, 0xfd, 0xbe, 0x85, + 0xde, 0x7b, 0x22, 0x82, 0x23, 0xae, 0x64, 0x56, 0x85, 0xdc, 0x2c, 0x08, 0x41, 0xff, 0x0f, 0x73, + 0x3e, 0x45, 0xdb, 0x2a, 0x05, 0xdf, 0x8c, 0x77, 0x97, 0x5c, 0xbb, 0xa7, 0x64, 0xcd, 0xfb, 0x9d, + 0xa5, 0xe0, 0xbb, 0x5d, 0xc3, 0xdf, 0x2e, 0x4f, 0xb4, 0xa2, 0xe1, 0x67, 0x68, 0x47, 0x69, 0xa6, + 0x33, 0xb5, 0xdf, 0xae, 0xb8, 0xf7, 0xdf, 0x90, 0x5b, 0x69, 0xdd, 0xbe, 0x21, 0xef, 0xd4, 0x67, + 0x6a, 0x98, 0xa3, 0x3f, 0x2c, 0xf4, 0xe1, 0x1a, 0xd5, 0x63, 0xae, 0x34, 0x7e, 0xb6, 0xe2, 0x18, + 0xd9, 0xcc, 0xb1, 0x52, 0x5d, 0xf9, 0xb5, 0x67, 0xba, 0xee, 0xce, 0x22, 0x0b, 0x6e, 0x9d, 0xa1, + 0x0e, 0xd7, 0x10, 0x97, 0xdb, 0xd0, 0x5e, 0x42, 0x6f, 0x30, 0x96, 0xdb, 0x33, 0xe8, 0xce, 0xa3, + 0x12, 0x42, 0x6b, 0xd6, 0xe8, 0xcf, 0xad, 0xb5, 0xe3, 0x94, 0x76, 0xe2, 0xe7, 0xa8, 0x1b, 0xf3, + 0xe4, 0x41, 0xce, 0x78, 0xc4, 0xbc, 0x08, 0x5e, 0xbb, 0x04, 0xe5, 0x17, 0x44, 0xea, 0x2f, 0x88, + 0x3c, 0x4a, 0xf4, 0xa9, 0x3c, 0xd3, 0x92, 0x27, 0xa1, 0xbb, 0x57, 0x4c, 0x87, 0xdd, 0x93, 0x05, + 0x12, 0x6d, 0x70, 0xf1, 0x0f, 0x68, 0x57, 0x41, 0x04, 0xbe, 0x16, 0xf2, 0xcd, 0x36, 0xfd, 0x31, + 0xf3, 0x20, 0x3a, 0x33, 0x52, 0xb7, 0x5b, 0xfa, 0x36, 0x3b, 0xd1, 0x39, 0x12, 0x47, 0xa8, 0x1f, + 0xb3, 0x17, 0xdf, 0x25, 0x6c, 0x3e, 0x48, 0xfb, 0x86, 0x83, 0xe0, 0x62, 0x3a, 0xec, 0x9f, 0x34, + 0x58, 0x74, 0x89, 0x3d, 0xfa, 0x77, 0x1b, 0xdd, 0xbe, 0x76, 0xab, 0xf0, 0xb7, 0x08, 0x0b, 0x4f, + 0x81, 0xcc, 0x21, 0x78, 0x58, 0xff, 0x63, 0xb8, 0x48, 0x2a, 0x63, 0xdb, 0xee, 0xc0, 0x5c, 0x10, + 0x3e, 0x5d, 0xa9, 0xa0, 0x6b, 0x54, 0xf8, 0x57, 0x0b, 0xf5, 0x82, 0xba, 0x0d, 0x04, 0x4f, 0x44, + 0x30, 0x5b, 0x8c, 0x87, 0x37, 0xd9, 0x77, 0x72, 0xb4, 0x48, 0x3a, 0x4e, 0xb4, 0x9c, 0xb8, 0xb7, + 0xcc, 0x0b, 0xf5, 0x1a, 0x39, 0xda, 0x6c, 0x8a, 0x4f, 0x10, 0x0e, 0xe6, 0x48, 0xf5, 0x20, 0x8a, + 0xc4, 0xcf, 0x10, 0x54, 0x16, 0x77, 0xdc, 0x8f, 0x0c, 0xe1, 0x56, 0xa3, 0xef, 0xac, 0x88, 0xae, + 0x11, 0xe2, 0x2f, 0x51, 0xdf, 0xcf, 0xa4, 0x84, 0x44, 0x7f, 0x03, 0x2c, 0xd2, 0xe7, 0x93, 0xfd, + 0xed, 0x0a, 0xf5, 0x81, 0x41, 0xf5, 0xbf, 0x6e, 0x64, 0xe9, 0x52, 0x75, 0xa9, 0x0f, 0x40, 0x71, + 0x09, 0xc1, 0x4c, 0xdf, 0x69, 0xea, 0x8f, 0x1a, 0x59, 0xba, 0x54, 0x8d, 0x0f, 0x51, 0x17, 0x5e, + 0xa4, 0xe0, 0xcf, 0x3c, 0xdd, 0xa9, 0xd4, 0xef, 0x1b, 0x75, 0xf7, 0x78, 0x21, 0x47, 0x1b, 0x95, + 0x83, 0x08, 0xe1, 0x55, 0x13, 0xf1, 0x1e, 0x6a, 0x8f, 0x61, 0x52, 0x5d, 0xf1, 0xdb, 0xb4, 0x7c, + 0xc4, 0x5f, 0xa1, 0x4e, 0xce, 0xa2, 0x0c, 0xcc, 0xae, 0x7f, 0xba, 0xd9, 0xae, 0x3f, 0xe5, 0x31, + 0xd0, 0x5a, 0xf8, 0xc5, 0xd6, 0xa1, 0xe5, 0xde, 0xb9, 0xb8, 0xb4, 0x5b, 0x2f, 0x2f, 0xed, 0xd6, + 0xab, 0x4b, 0xbb, 0xf5, 0x4b, 0x61, 0x5b, 0x17, 0x85, 0x6d, 0xbd, 0x2c, 0x6c, 0xeb, 0x55, 0x61, + 0x5b, 0x7f, 0x17, 0xb6, 0xf5, 0xdb, 0x3f, 0x76, 0xeb, 0xfb, 0xb7, 0xcc, 0xc5, 0xff, 0x17, 0x00, + 0x00, 0xff, 0xff, 0x00, 0xc0, 0xac, 0xb5, 0x48, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/policy/v1beta1/generated.proto b/vendor/k8s.io/api/policy/v1beta1/generated.proto new file mode 100644 index 0000000000..a276be1c93 --- /dev/null +++ b/vendor/k8s.io/api/policy/v1beta1/generated.proto @@ -0,0 +1,114 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.policy.v1beta1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// 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//evictions. +message Eviction { + // ObjectMeta describes the pod that is being evicted. + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // DeleteOptions may be provided + optional k8s.io.apimachinery.pkg.apis.meta.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.apimachinery.pkg.apis.meta.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.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated PodDisruptionBudget items = 2; +} + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +message PodDisruptionBudgetSpec { + // An eviction is allowed if at least "minAvailable" pods selected by + // "selector" will still be available after the eviction, i.e. even in the + // absence of the evicted pod. So for example you can prevent all voluntary + // evictions by specifying "100%". + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString minAvailable = 1; + + // Label query over pods whose evictions are managed by the disruption + // budget. + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // An eviction is allowed if at most "maxUnavailable" pods selected by + // "selector" are unavailable after the eviction, i.e. even in absence of + // the evicted pod. For example, one can prevent all voluntary evictions + // by specifying 0. This is a mutually exclusive setting with "minAvailable". + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 3; +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +message PodDisruptionBudgetStatus { + // Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other + // status informatio is valid only if observedGeneration equals to PDB's object generation. + // +optional + optional int64 observedGeneration = 1; + + // DisruptedPods contains information about pods whose eviction was + // processed by the API server eviction subresource handler but has not + // yet been observed by the PodDisruptionBudget controller. + // A pod will be in this map from the time when the API server processed the + // eviction request to the time when the pod is seen by PDB controller + // as having been marked for deletion (or after a timeout). The key in the map is the name of the pod + // and the value is the time when the API server processed the eviction request. If + // the deletion didn't occur and a pod is still there it will be removed from + // the list automatically by PodDisruptionBudget controller after some time. + // If everything goes smooth this map should be empty for the most of the time. + // Large number of entries in the map may indicate problems with pod deletions. + map disruptedPods = 2; + + // Number of pod disruptions that are currently allowed. + optional int32 disruptionsAllowed = 3; + + // current number of healthy pods + optional int32 currentHealthy = 4; + + // minimum desired number of healthy pods + optional int32 desiredHealthy = 5; + + // total number of pods counted by this disruption budget + optional int32 expectedPods = 6; +} + diff --git a/vendor/k8s.io/api/policy/v1beta1/register.go b/vendor/k8s.io/api/policy/v1beta1/register.go new file mode 100644 index 0000000000..e0c6247a79 --- /dev/null +++ b/vendor/k8s.io/api/policy/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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "policy" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PodDisruptionBudget{}, + &PodDisruptionBudgetList{}, + &Eviction{}, + ) + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/policy/v1beta1/types.go b/vendor/k8s.io/api/policy/v1beta1/types.go new file mode 100644 index 0000000000..a69a572075 --- /dev/null +++ b/vendor/k8s.io/api/policy/v1beta1/types.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 v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +type PodDisruptionBudgetSpec struct { + // An eviction is allowed if at least "minAvailable" pods selected by + // "selector" will still be available after the eviction, i.e. even in the + // absence of the evicted pod. So for example you can prevent all voluntary + // evictions by specifying "100%". + 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 *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // An eviction is allowed if at most "maxUnavailable" pods selected by + // "selector" are unavailable after the eviction, i.e. even in absence of + // the evicted pod. For example, one can prevent all voluntary evictions + // by specifying 0. This is a mutually exclusive setting with "minAvailable". + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,3,opt,name=maxUnavailable"` +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +type PodDisruptionBudgetStatus struct { + // Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other + // status informatio is valid only if observedGeneration equals to PDB's object generation. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // DisruptedPods contains information about pods whose eviction was + // processed by the API server eviction subresource handler but has not + // yet been observed by the PodDisruptionBudget controller. + // A pod will be in this map from the time when the API server processed the + // eviction request to the time when the pod is seen by PDB controller + // as having been marked for deletion (or after a timeout). The key in the map is the name of the pod + // and the value is the time when the API server processed the eviction request. If + // the deletion didn't occur and a pod is still there it will be removed from + // the list automatically by PodDisruptionBudget controller after some time. + // If everything goes smooth this map should be empty for the most of the time. + // Large number of entries in the map may indicate problems with pod deletions. + DisruptedPods map[string]metav1.Time `json:"disruptedPods" protobuf:"bytes,2,rep,name=disruptedPods"` + + // Number of pod disruptions that are currently allowed. + PodDisruptionsAllowed int32 `json:"disruptionsAllowed" protobuf:"varint,3,opt,name=disruptionsAllowed"` + + // current number of healthy pods + CurrentHealthy int32 `json:"currentHealthy" protobuf:"varint,4,opt,name=currentHealthy"` + + // minimum desired number of healthy pods + DesiredHealthy int32 `json:"desiredHealthy" protobuf:"varint,5,opt,name=desiredHealthy"` + + // total number of pods counted by this disruption budget + ExpectedPods int32 `json:"expectedPods" protobuf:"varint,6,opt,name=expectedPods"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +type PodDisruptionBudget struct { + metav1.TypeMeta `json:",inline"` + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type PodDisruptionBudgetList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient +// +genclient:noVerbs +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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//evictions. +type Eviction struct { + metav1.TypeMeta `json:",inline"` + + // ObjectMeta describes the pod that is being evicted. + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // DeleteOptions may be provided + DeleteOptions *metav1.DeleteOptions `json:"deleteOptions,omitempty" protobuf:"bytes,2,opt,name=deleteOptions"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..93c201e2dd --- /dev/null +++ b/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,227 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/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. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Eviction).DeepCopyInto(out.(*Eviction)) + return nil + }, InType: reflect.TypeOf(&Eviction{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodDisruptionBudget).DeepCopyInto(out.(*PodDisruptionBudget)) + return nil + }, InType: reflect.TypeOf(&PodDisruptionBudget{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodDisruptionBudgetList).DeepCopyInto(out.(*PodDisruptionBudgetList)) + return nil + }, InType: reflect.TypeOf(&PodDisruptionBudgetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodDisruptionBudgetSpec).DeepCopyInto(out.(*PodDisruptionBudgetSpec)) + return nil + }, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodDisruptionBudgetStatus).DeepCopyInto(out.(*PodDisruptionBudgetStatus)) + return nil + }, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Eviction) DeepCopyInto(out *Eviction) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + if *in == nil { + *out = nil + } else { + *out = new(v1.DeleteOptions) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Eviction. +func (in *Eviction) DeepCopy() *Eviction { + if in == nil { + return nil + } + out := new(Eviction) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Eviction) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDisruptionBudget) DeepCopyInto(out *PodDisruptionBudget) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudget. +func (in *PodDisruptionBudget) DeepCopy() *PodDisruptionBudget { + if in == nil { + return nil + } + out := new(PodDisruptionBudget) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodDisruptionBudget) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDisruptionBudgetList) DeepCopyInto(out *PodDisruptionBudgetList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudgetList. +func (in *PodDisruptionBudgetList) DeepCopy() *PodDisruptionBudgetList { + if in == nil { + return nil + } + out := new(PodDisruptionBudgetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodDisruptionBudgetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDisruptionBudgetSpec) DeepCopyInto(out *PodDisruptionBudgetSpec) { + *out = *in + if in.MinAvailable != nil { + in, out := &in.MinAvailable, &out.MinAvailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudgetSpec. +func (in *PodDisruptionBudgetSpec) DeepCopy() *PodDisruptionBudgetSpec { + if in == nil { + return nil + } + out := new(PodDisruptionBudgetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodDisruptionBudgetStatus) DeepCopyInto(out *PodDisruptionBudgetStatus) { + *out = *in + if in.DisruptedPods != nil { + in, out := &in.DisruptedPods, &out.DisruptedPods + *out = make(map[string]v1.Time, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudgetStatus. +func (in *PodDisruptionBudgetStatus) DeepCopy() *PodDisruptionBudgetStatus { + if in == nil { + return nil + } + out := new(PodDisruptionBudgetStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/rbac/OWNERS b/vendor/k8s.io/api/rbac/OWNERS new file mode 100755 index 0000000000..53710111cd --- /dev/null +++ b/vendor/k8s.io/api/rbac/OWNERS @@ -0,0 +1,18 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- deads2k +- sttts +- ncdc +- timothysc +- dims +- krousey +- mml +- mbohlool +- david-mcmahon +- ericchiang +- lixiaobing10051267 +- jianhuiz +- liggitt +- enj diff --git a/vendor/k8s.io/api/rbac/v1/BUILD b/vendor/k8s.io/api/rbac/v1/BUILD new file mode 100644 index 0000000000..6a38064dd2 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/rbac/v1/doc.go b/vendor/k8s.io/api/rbac/v1/doc.go new file mode 100644 index 0000000000..737261a097 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1 // import "k8s.io/api/rbac/v1" diff --git a/vendor/k8s.io/api/rbac/v1/generated.pb.go b/vendor/k8s.io/api/rbac/v1/generated.pb.go new file mode 100644 index 0000000000..dba0ec95be --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/generated.pb.go @@ -0,0 +1,2555 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/rbac/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1/generated.proto + + It has these top-level messages: + ClusterRole + ClusterRoleBinding + ClusterRoleBindingList + ClusterRoleList + PolicyRule + Role + RoleBinding + RoleBindingList + RoleList + RoleRef + Subject +*/ +package v1 + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.rbac.v1.ClusterRole") + proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.api.rbac.v1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.api.rbac.v1.ClusterRoleBindingList") + proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.api.rbac.v1.ClusterRoleList") + proto.RegisterType((*PolicyRule)(nil), "k8s.io.api.rbac.v1.PolicyRule") + proto.RegisterType((*Role)(nil), "k8s.io.api.rbac.v1.Role") + proto.RegisterType((*RoleBinding)(nil), "k8s.io.api.rbac.v1.RoleBinding") + proto.RegisterType((*RoleBindingList)(nil), "k8s.io.api.rbac.v1.RoleBindingList") + proto.RegisterType((*RoleList)(nil), "k8s.io.api.rbac.v1.RoleList") + proto.RegisterType((*RoleRef)(nil), "k8s.io.api.rbac.v1.RoleRef") + proto.RegisterType((*Subject)(nil), "k8s.io.api.rbac.v1.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) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + 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.Resources) > 0 { + for _, s := range m.Resources { + 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.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + 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.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + 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) + } + } + 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())) + n6, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + 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())) + n7, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + 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())) + n8, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + 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())) + 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 *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.APIGroup))) + i += copy(dAtA[i:], m.APIGroup) + 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)) + } + } + 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.APIGroup) + 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`, + `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 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 3: + 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 4: + 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 5: + 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 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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 751 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x94, 0xcd, 0x6e, 0xd3, 0x4a, + 0x14, 0xc7, 0xe3, 0x7c, 0x28, 0xf1, 0xe4, 0x46, 0xb9, 0xf5, 0x95, 0xee, 0xb5, 0x2a, 0x5d, 0x27, + 0x0a, 0x2c, 0x2a, 0x95, 0xda, 0xb4, 0x20, 0x60, 0x83, 0x04, 0x66, 0x01, 0x55, 0x4b, 0xa8, 0x06, + 0xc1, 0x02, 0xb1, 0x60, 0xe2, 0x4c, 0xd3, 0x21, 0xf1, 0x87, 0x66, 0xc6, 0x91, 0x2a, 0x36, 0x3c, + 0x00, 0x0b, 0x24, 0x5e, 0x83, 0x15, 0x3b, 0x78, 0x82, 0x2c, 0xbb, 0xec, 0x2a, 0xa2, 0xe6, 0x41, + 0x40, 0x33, 0xb6, 0xe3, 0xa4, 0x69, 0xda, 0xac, 0x22, 0x21, 0xb1, 0x4a, 0xe6, 0x9c, 0xdf, 0xf9, + 0x9f, 0x0f, 0xcf, 0x1c, 0xf0, 0xa0, 0x7f, 0x8f, 0x99, 0xc4, 0xb7, 0xfa, 0x61, 0x07, 0x53, 0x0f, + 0x73, 0xcc, 0xac, 0x21, 0xf6, 0xba, 0x3e, 0xb5, 0x12, 0x07, 0x0a, 0x88, 0x45, 0x3b, 0xc8, 0xb1, + 0x86, 0xdb, 0x1d, 0xcc, 0xd1, 0xb6, 0xd5, 0xc3, 0x1e, 0xa6, 0x88, 0xe3, 0xae, 0x19, 0x50, 0x9f, + 0xfb, 0xda, 0x7f, 0x31, 0x68, 0xa2, 0x80, 0x98, 0x02, 0x34, 0x13, 0x70, 0x7d, 0xab, 0x47, 0xf8, + 0x51, 0xd8, 0x31, 0x1d, 0xdf, 0xb5, 0x7a, 0x7e, 0xcf, 0xb7, 0x24, 0xdf, 0x09, 0x0f, 0xe5, 0x49, + 0x1e, 0xe4, 0xbf, 0x58, 0x67, 0xfd, 0x76, 0x96, 0xd0, 0x45, 0xce, 0x11, 0xf1, 0x30, 0x3d, 0xb6, + 0x82, 0x7e, 0x4f, 0x18, 0x98, 0xe5, 0x62, 0x8e, 0xac, 0xe1, 0x5c, 0xf6, 0x75, 0x6b, 0x51, 0x14, + 0x0d, 0x3d, 0x4e, 0x5c, 0x3c, 0x17, 0x70, 0xe7, 0xaa, 0x00, 0xe6, 0x1c, 0x61, 0x17, 0xcd, 0xc5, + 0xdd, 0x5a, 0x14, 0x17, 0x72, 0x32, 0xb0, 0x88, 0xc7, 0x19, 0xa7, 0xe7, 0x83, 0x5a, 0x5f, 0x15, + 0x50, 0x7d, 0x34, 0x08, 0x19, 0xc7, 0x14, 0xfa, 0x03, 0xac, 0xbd, 0x01, 0x15, 0xd1, 0x48, 0x17, + 0x71, 0xa4, 0x2b, 0x4d, 0x65, 0xa3, 0xba, 0x73, 0xd3, 0xcc, 0xc6, 0x37, 0xd1, 0x35, 0x83, 0x7e, + 0x4f, 0x18, 0x98, 0x29, 0x68, 0x73, 0xb8, 0x6d, 0x3e, 0xeb, 0xbc, 0xc5, 0x0e, 0x7f, 0x8a, 0x39, + 0xb2, 0xb5, 0xd1, 0xb8, 0x91, 0x8b, 0xc6, 0x0d, 0x90, 0xd9, 0xe0, 0x44, 0x55, 0x7b, 0x02, 0x4a, + 0x34, 0x1c, 0x60, 0xa6, 0xe7, 0x9b, 0x85, 0x8d, 0xea, 0xce, 0x35, 0x73, 0xc1, 0xd7, 0x31, 0x0f, + 0xfc, 0x01, 0x71, 0x8e, 0x61, 0x38, 0xc0, 0x76, 0x2d, 0x51, 0x2c, 0x89, 0x13, 0x83, 0xb1, 0x40, + 0xeb, 0x53, 0x1e, 0x68, 0x53, 0xb5, 0xdb, 0xc4, 0xeb, 0x12, 0xaf, 0xb7, 0x82, 0x16, 0xda, 0xa0, + 0xc2, 0x42, 0xe9, 0x48, 0xbb, 0x68, 0x2e, 0xec, 0xe2, 0x79, 0x0c, 0xda, 0x7f, 0x27, 0x8a, 0x95, + 0xc4, 0xc0, 0xe0, 0x44, 0x43, 0xdb, 0x03, 0x65, 0xea, 0x0f, 0x30, 0xc4, 0x87, 0x7a, 0x41, 0x16, + 0xbc, 0x58, 0x0e, 0xc6, 0x9c, 0x5d, 0x4f, 0xe4, 0xca, 0x89, 0x01, 0xa6, 0x0a, 0xad, 0x91, 0x02, + 0xfe, 0x9d, 0x9f, 0xca, 0x3e, 0x61, 0x5c, 0x7b, 0x3d, 0x37, 0x19, 0x73, 0xb9, 0xc9, 0x88, 0x68, + 0x39, 0x97, 0x49, 0x17, 0xa9, 0x65, 0x6a, 0x2a, 0x07, 0xa0, 0x44, 0x38, 0x76, 0xd3, 0x91, 0x6c, + 0x2e, 0xec, 0x61, 0xbe, 0xba, 0xec, 0x03, 0xef, 0x0a, 0x05, 0x18, 0x0b, 0xb5, 0xbe, 0x29, 0xa0, + 0x3e, 0x05, 0xaf, 0xa0, 0x87, 0xdd, 0xd9, 0x1e, 0xae, 0x2f, 0xd5, 0xc3, 0xc5, 0xc5, 0xff, 0x54, + 0x00, 0xc8, 0xae, 0xb0, 0xd6, 0x00, 0xa5, 0x21, 0xa6, 0x1d, 0xa6, 0x2b, 0xcd, 0xc2, 0x86, 0x6a, + 0xab, 0x82, 0x7f, 0x29, 0x0c, 0x30, 0xb6, 0x6b, 0x9b, 0x40, 0x45, 0x01, 0x79, 0x4c, 0xfd, 0x30, + 0x88, 0xd3, 0xab, 0x76, 0x2d, 0x1a, 0x37, 0xd4, 0x87, 0x07, 0xbb, 0xb1, 0x11, 0x66, 0x7e, 0x01, + 0x53, 0xcc, 0xfc, 0x90, 0x3a, 0x98, 0xe9, 0x85, 0x0c, 0x86, 0xa9, 0x11, 0x66, 0x7e, 0xed, 0x2e, + 0xa8, 0xa5, 0x87, 0x36, 0x72, 0x31, 0xd3, 0x8b, 0x32, 0x60, 0x2d, 0x1a, 0x37, 0x6a, 0x70, 0xda, + 0x01, 0x67, 0x39, 0xed, 0x3e, 0xa8, 0x7b, 0xbe, 0x97, 0x22, 0x2f, 0xe0, 0x3e, 0xd3, 0x4b, 0x32, + 0xf4, 0x9f, 0x68, 0xdc, 0xa8, 0xb7, 0x67, 0x5d, 0xf0, 0x3c, 0xdb, 0xfa, 0xa2, 0x80, 0xe2, 0x6f, + 0xb7, 0x54, 0x3e, 0xe4, 0x41, 0xf5, 0xcf, 0x36, 0x99, 0x6c, 0x13, 0xf1, 0x04, 0x57, 0xbb, 0x46, + 0x96, 0x7e, 0x82, 0x57, 0xef, 0x8f, 0xcf, 0x0a, 0xa8, 0xac, 0x68, 0x71, 0xd8, 0xb3, 0x55, 0xff, + 0x7f, 0x79, 0xd5, 0x17, 0x97, 0xfb, 0x0e, 0xa4, 0xf3, 0xd7, 0x6e, 0x80, 0x4a, 0xfa, 0xd8, 0x65, + 0xb1, 0x6a, 0x96, 0x3c, 0xdd, 0x07, 0x70, 0x42, 0x68, 0x4d, 0x50, 0xec, 0x13, 0xaf, 0xab, 0xe7, + 0x25, 0xf9, 0x57, 0x42, 0x16, 0xf7, 0x88, 0xd7, 0x85, 0xd2, 0x23, 0x08, 0x0f, 0xb9, 0x58, 0x5e, + 0x88, 0x29, 0x42, 0x3c, 0x73, 0x28, 0x3d, 0x62, 0x56, 0xe5, 0xe4, 0x32, 0x4d, 0xf4, 0x94, 0x85, + 0x7a, 0xd3, 0xf5, 0xe5, 0x97, 0xa9, 0xef, 0xf2, 0xec, 0x9a, 0x05, 0x54, 0xf1, 0xcb, 0x02, 0xe4, + 0x60, 0xbd, 0x28, 0xb1, 0xb5, 0x04, 0x53, 0xdb, 0xa9, 0x03, 0x66, 0x8c, 0xbd, 0x35, 0x3a, 0x33, + 0x72, 0x27, 0x67, 0x46, 0xee, 0xf4, 0xcc, 0xc8, 0xbd, 0x8f, 0x0c, 0x65, 0x14, 0x19, 0xca, 0x49, + 0x64, 0x28, 0xa7, 0x91, 0xa1, 0x7c, 0x8f, 0x0c, 0xe5, 0xe3, 0x0f, 0x23, 0xf7, 0xaa, 0x9c, 0x4c, + 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x74, 0x24, 0x6a, 0xfa, 0x45, 0x0a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/rbac/v1/generated.proto b/vendor/k8s.io/api/rbac/v1/generated.proto new file mode 100644 index 0000000000..29aa3d5eeb --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/generated.proto @@ -0,0 +1,182 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.rbac.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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; + + // 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. + // +optional + repeated string apiGroups = 2; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + repeated string resources = 3; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + repeated string resourceNames = 4; + + // 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 + // 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. + // +optional + repeated string nonResourceURLs = 5; +} + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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; + + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // +optional + optional string apiGroup = 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 + optional string namespace = 4; +} + diff --git a/vendor/k8s.io/api/rbac/v1/register.go b/vendor/k8s.io/api/rbac/v1/register.go new file mode 100644 index 0000000000..7336b5455e --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/register.go @@ -0,0 +1,58 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.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{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/rbac/v1/types.go b/vendor/k8s.io/api/rbac/v1/types.go new file mode 100644 index 0000000000..8dbd1a8b89 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/types.go @@ -0,0 +1,219 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// 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" + + // AutoUpdateAnnotationKey is the name of an annotation which prevents reconciliation if set to "false" + AutoUpdateAnnotationKey = "rbac.authorization.kubernetes.io/autoupdate" +) + +// 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"` + + // 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. + // +optional + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,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 + // 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. + // +optional + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,5,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"` + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // +optional + APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt.name=apiGroup"` + // 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. + // +optional + 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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RoleList is a collection of Roles +type RoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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/api/rbac/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/rbac/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..7770d4085b --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/types_swagger_doc_generated.go @@ -0,0 +1,148 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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_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.", + "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 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.", + "apiGroup": "APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects.", + "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/api/rbac/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..7ffc81869d --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go @@ -0,0 +1,427 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole)) + return nil + }, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule)) + return nil + }, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Role).DeepCopyInto(out.(*Role)) + return nil + }, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding)) + return nil + }, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList)) + return nil + }, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleList).DeepCopyInto(out.(*RoleList)) + return nil + }, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleRef).DeepCopyInto(out.(*RoleRef)) + return nil + }, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Subject).DeepCopyInto(out.(*Subject)) + return nil + }, InType: reflect.TypeOf(&Subject{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRole. +func (in *ClusterRole) DeepCopy() *ClusterRole { + if in == nil { + return nil + } + out := new(ClusterRole) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRole) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleBinding) DeepCopyInto(out *ClusterRoleBinding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + out.RoleRef = in.RoleRef + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBinding. +func (in *ClusterRoleBinding) DeepCopy() *ClusterRoleBinding { + if in == nil { + return nil + } + out := new(ClusterRoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleBinding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleBindingList) DeepCopyInto(out *ClusterRoleBindingList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBindingList. +func (in *ClusterRoleBindingList) DeepCopy() *ClusterRoleBindingList { + if in == nil { + return nil + } + out := new(ClusterRoleBindingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleBindingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleList) DeepCopyInto(out *ClusterRoleList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleList. +func (in *ClusterRoleList) DeepCopy() *ClusterRoleList { + if in == nil { + return nil + } + out := new(ClusterRoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PolicyRule) DeepCopyInto(out *PolicyRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PolicyRule. +func (in *PolicyRule) DeepCopy() *PolicyRule { + if in == nil { + return nil + } + out := new(PolicyRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Role) DeepCopyInto(out *Role) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role. +func (in *Role) DeepCopy() *Role { + if in == nil { + return nil + } + out := new(Role) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Role) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBinding) DeepCopyInto(out *RoleBinding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + out.RoleRef = in.RoleRef + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBinding. +func (in *RoleBinding) DeepCopy() *RoleBinding { + if in == nil { + return nil + } + out := new(RoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleBinding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBindingList) DeepCopyInto(out *RoleBindingList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingList. +func (in *RoleBindingList) DeepCopy() *RoleBindingList { + if in == nil { + return nil + } + out := new(RoleBindingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleBindingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleList) DeepCopyInto(out *RoleList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList. +func (in *RoleList) DeepCopy() *RoleList { + if in == nil { + return nil + } + out := new(RoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleRef) DeepCopyInto(out *RoleRef) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleRef. +func (in *RoleRef) DeepCopy() *RoleRef { + if in == nil { + return nil + } + out := new(RoleRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Subject) DeepCopyInto(out *Subject) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subject. +func (in *Subject) DeepCopy() *Subject { + if in == nil { + return nil + } + out := new(Subject) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/rbac/v1alpha1/BUILD b/vendor/k8s.io/api/rbac/v1alpha1/BUILD new file mode 100644 index 0000000000..6a38064dd2 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1alpha1/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/rbac/v1alpha1/doc.go b/vendor/k8s.io/api/rbac/v1alpha1/doc.go new file mode 100644 index 0000000000..619b47bf25 --- /dev/null +++ b/vendor/k8s.io/api/rbac/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:openapi-gen=true + +// +groupName=rbac.authorization.k8s.io +package v1alpha1 // import "k8s.io/api/rbac/v1alpha1" diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..31e68aeeda --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go @@ -0,0 +1,2556 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/rbac/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.rbac.v1alpha1.ClusterRole") + proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.api.rbac.v1alpha1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.api.rbac.v1alpha1.ClusterRoleBindingList") + proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.api.rbac.v1alpha1.ClusterRoleList") + proto.RegisterType((*PolicyRule)(nil), "k8s.io.api.rbac.v1alpha1.PolicyRule") + proto.RegisterType((*Role)(nil), "k8s.io.api.rbac.v1alpha1.Role") + proto.RegisterType((*RoleBinding)(nil), "k8s.io.api.rbac.v1alpha1.RoleBinding") + proto.RegisterType((*RoleBindingList)(nil), "k8s.io.api.rbac.v1alpha1.RoleBindingList") + proto.RegisterType((*RoleList)(nil), "k8s.io.api.rbac.v1alpha1.RoleList") + proto.RegisterType((*RoleRef)(nil), "k8s.io.api.rbac.v1alpha1.RoleRef") + proto.RegisterType((*Subject)(nil), "k8s.io.api.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) + } + } + 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())) + n6, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + 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())) + n7, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + 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())) + n8, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + 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())) + 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 *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)) + } + } + 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 766 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x94, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xc7, 0xb3, 0xf9, 0xa0, 0xc9, 0x86, 0x28, 0xd4, 0x48, 0xc8, 0xea, 0xc1, 0x09, 0x11, 0x48, + 0x95, 0x28, 0x36, 0x2d, 0x08, 0xb8, 0x70, 0x68, 0x7a, 0x40, 0x81, 0xd2, 0x96, 0x45, 0xf4, 0x80, + 0x38, 0xb0, 0x71, 0xb6, 0xc9, 0x12, 0x7f, 0x69, 0xd7, 0x8e, 0x54, 0x71, 0xe1, 0x09, 0x10, 0x17, + 0x1e, 0x83, 0x0b, 0xdc, 0xe0, 0x05, 0xca, 0xad, 0xc7, 0x9e, 0x22, 0x6a, 0x1e, 0x04, 0xb4, 0x6b, + 0x3b, 0x4e, 0x9a, 0x86, 0xf4, 0x14, 0x09, 0x89, 0x93, 0xbd, 0x33, 0xbf, 0xf9, 0xef, 0xcc, 0xec, + 0xee, 0xc0, 0xcd, 0xfe, 0x43, 0xae, 0x53, 0xd7, 0xe8, 0x07, 0x6d, 0xc2, 0x1c, 0xe2, 0x13, 0x6e, + 0x0c, 0x88, 0xd3, 0x71, 0x99, 0x11, 0x3b, 0xb0, 0x47, 0x0d, 0xd6, 0xc6, 0xa6, 0x31, 0x58, 0xc7, + 0x96, 0xd7, 0xc3, 0xeb, 0x46, 0x97, 0x38, 0x84, 0x61, 0x9f, 0x74, 0x74, 0x8f, 0xb9, 0xbe, 0xab, + 0xa8, 0x11, 0xa9, 0x63, 0x8f, 0xea, 0x82, 0xd4, 0x13, 0x72, 0xe5, 0x76, 0x97, 0xfa, 0xbd, 0xa0, + 0xad, 0x9b, 0xae, 0x6d, 0x74, 0xdd, 0xae, 0x6b, 0xc8, 0x80, 0x76, 0x70, 0x20, 0x57, 0x72, 0x21, + 0xff, 0x22, 0xa1, 0x95, 0x7b, 0xe9, 0x96, 0x36, 0x36, 0x7b, 0xd4, 0x21, 0xec, 0xd0, 0xf0, 0xfa, + 0x5d, 0x61, 0xe0, 0x86, 0x4d, 0x7c, 0x6c, 0x0c, 0xa6, 0xb6, 0x5f, 0x31, 0x66, 0x45, 0xb1, 0xc0, + 0xf1, 0xa9, 0x4d, 0xa6, 0x02, 0xee, 0xcf, 0x0b, 0xe0, 0x66, 0x8f, 0xd8, 0x78, 0x2a, 0xee, 0xee, + 0xac, 0xb8, 0xc0, 0xa7, 0x96, 0x41, 0x1d, 0x9f, 0xfb, 0xec, 0x6c, 0x50, 0xe3, 0x1b, 0x80, 0xe5, + 0x2d, 0x2b, 0xe0, 0x3e, 0x61, 0xc8, 0xb5, 0x88, 0xf2, 0x06, 0x16, 0x45, 0x21, 0x1d, 0xec, 0x63, + 0x15, 0xd4, 0xc1, 0x6a, 0x79, 0xe3, 0x8e, 0x9e, 0xf6, 0x6f, 0xa4, 0xab, 0x7b, 0xfd, 0xae, 0x30, + 0x70, 0x5d, 0xd0, 0xfa, 0x60, 0x5d, 0xdf, 0x6d, 0xbf, 0x25, 0xa6, 0xff, 0x8c, 0xf8, 0xb8, 0xa9, + 0x1c, 0x0d, 0x6b, 0x99, 0x70, 0x58, 0x83, 0xa9, 0x0d, 0x8d, 0x54, 0x95, 0x16, 0x2c, 0xb0, 0xc0, + 0x22, 0x5c, 0xcd, 0xd6, 0x73, 0xab, 0xe5, 0x8d, 0x1b, 0xfa, 0xac, 0xe3, 0xd1, 0xf7, 0x5c, 0x8b, + 0x9a, 0x87, 0x28, 0xb0, 0x48, 0xb3, 0x12, 0x4b, 0x16, 0xc4, 0x8a, 0xa3, 0x48, 0xa1, 0xf1, 0x29, + 0x0b, 0x95, 0xb1, 0xe4, 0x9b, 0xd4, 0xe9, 0x50, 0xa7, 0xbb, 0x80, 0x1a, 0x76, 0x61, 0x91, 0x07, + 0xd2, 0x91, 0x94, 0x71, 0x7d, 0x76, 0x19, 0x2f, 0x22, 0xb2, 0x79, 0x25, 0x96, 0x2c, 0xc6, 0x06, + 0x8e, 0x46, 0x22, 0xca, 0x36, 0x5c, 0x62, 0xae, 0x45, 0x10, 0x39, 0x50, 0x73, 0x32, 0xe3, 0xbf, + 0xe8, 0xa1, 0x08, 0x6c, 0x56, 0x63, 0xbd, 0xa5, 0xd8, 0x80, 0x12, 0x89, 0xc6, 0x0f, 0x00, 0xaf, + 0x4d, 0xf7, 0x65, 0x9b, 0x72, 0x5f, 0x79, 0x3d, 0xd5, 0x1b, 0xfd, 0x62, 0xbd, 0x11, 0xd1, 0xb2, + 0x33, 0xa3, 0x32, 0x12, 0xcb, 0x58, 0x5f, 0x9e, 0xc3, 0x02, 0xf5, 0x89, 0x9d, 0x34, 0x65, 0x6d, + 0x76, 0x11, 0xd3, 0xe9, 0xa5, 0x67, 0xdc, 0x12, 0x12, 0x28, 0x52, 0x6a, 0x7c, 0x07, 0xb0, 0x3a, + 0x06, 0x2f, 0xa0, 0x88, 0x27, 0x93, 0x45, 0xdc, 0xbc, 0x58, 0x11, 0xe7, 0x67, 0xff, 0x1b, 0x40, + 0x98, 0x5e, 0x63, 0xa5, 0x06, 0x0b, 0x03, 0xc2, 0xda, 0x5c, 0x05, 0xf5, 0xdc, 0x6a, 0xa9, 0x59, + 0x12, 0xfc, 0xbe, 0x30, 0xa0, 0xc8, 0xae, 0xdc, 0x82, 0x25, 0xec, 0xd1, 0xc7, 0xcc, 0x0d, 0x3c, + 0xae, 0xe6, 0x24, 0x54, 0x09, 0x87, 0xb5, 0xd2, 0xe6, 0x5e, 0x2b, 0x32, 0xa2, 0xd4, 0x2f, 0x60, + 0x46, 0xb8, 0x1b, 0x30, 0x93, 0x70, 0x35, 0x9f, 0xc2, 0x28, 0x31, 0xa2, 0xd4, 0xaf, 0x3c, 0x80, + 0x95, 0x64, 0xb1, 0x83, 0x6d, 0xc2, 0xd5, 0x82, 0x0c, 0x58, 0x0e, 0x87, 0xb5, 0x0a, 0x1a, 0x77, + 0xa0, 0x49, 0x4e, 0x79, 0x04, 0xab, 0x8e, 0xeb, 0x24, 0xc8, 0x4b, 0xb4, 0xcd, 0xd5, 0x4b, 0x32, + 0xf4, 0x6a, 0x38, 0xac, 0x55, 0x77, 0x26, 0x5d, 0xe8, 0x2c, 0xdb, 0xf8, 0x0a, 0x60, 0xfe, 0xdf, + 0x9b, 0x2c, 0x1f, 0xb2, 0xb0, 0xfc, 0x7f, 0xa4, 0x8c, 0x8d, 0x14, 0xf1, 0x0c, 0x17, 0x3b, 0x4b, + 0x2e, 0xfe, 0x0c, 0xe7, 0x0f, 0x91, 0xcf, 0x00, 0x16, 0x17, 0x34, 0x3d, 0xb6, 0x26, 0xd3, 0xd6, + 0xe6, 0xa4, 0x7d, 0x7e, 0xbe, 0xef, 0x60, 0x72, 0x02, 0xca, 0x1a, 0x2c, 0x26, 0x2f, 0x5e, 0x66, + 0x5b, 0x4a, 0x77, 0x4f, 0x86, 0x02, 0x1a, 0x11, 0x4a, 0x1d, 0xe6, 0xfb, 0xd4, 0xe9, 0xa8, 0x59, + 0x49, 0x5e, 0x8e, 0xc9, 0xfc, 0x53, 0xea, 0x74, 0x90, 0xf4, 0x08, 0xc2, 0xc1, 0x36, 0x91, 0x77, + 0x62, 0x8c, 0x10, 0x6f, 0x1d, 0x49, 0x4f, 0xe3, 0x0b, 0x80, 0x4b, 0xf1, 0x7d, 0x1a, 0xe9, 0x81, + 0x99, 0x7a, 0x1b, 0x10, 0x62, 0x8f, 0xee, 0x13, 0xc6, 0xa9, 0xeb, 0xc4, 0xfb, 0x8e, 0x6e, 0xfa, + 0xe6, 0x5e, 0x2b, 0xf6, 0xa0, 0x31, 0x6a, 0x7e, 0x0e, 0x8a, 0x01, 0x4b, 0xe2, 0xcb, 0x3d, 0x6c, + 0x12, 0x35, 0x2f, 0xb1, 0xe5, 0x18, 0x2b, 0xed, 0x24, 0x0e, 0x94, 0x32, 0x4d, 0xfd, 0xe8, 0x54, + 0xcb, 0x1c, 0x9f, 0x6a, 0x99, 0x93, 0x53, 0x2d, 0xf3, 0x3e, 0xd4, 0xc0, 0x51, 0xa8, 0x81, 0xe3, + 0x50, 0x03, 0x27, 0xa1, 0x06, 0x7e, 0x86, 0x1a, 0xf8, 0xf8, 0x4b, 0xcb, 0xbc, 0x2a, 0x26, 0xcd, + 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x38, 0x05, 0x46, 0x58, 0x0a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.proto b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto new file mode 100644 index 0000000000..89f45b28e7 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto @@ -0,0 +1,184 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.rbac.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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; + + // 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. + // +optional + repeated string apiGroups = 3; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + 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. + // +optional + 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. + // +optional + 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 subject. + // Defaults to "v1" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io/v1alpha1" for User and Group subjects. + // +k8s:conversion-gen=false + // +optional + 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 + optional string namespace = 4; +} + diff --git a/vendor/k8s.io/api/rbac/v1alpha1/register.go b/vendor/k8s.io/api/rbac/v1alpha1/register.go new file mode 100644 index 0000000000..9cfd71f451 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1alpha1/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 v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.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{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/rbac/v1alpha1/types.go b/vendor/k8s.io/api/rbac/v1alpha1/types.go new file mode 100644 index 0000000000..06fa6ce8e8 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1alpha1/types.go @@ -0,0 +1,221 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// 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" + + // AutoUpdateAnnotationKey is the name of an annotation which prevents reconciliation if set to "false" + AutoUpdateAnnotationKey = "rbac.authorization.kubernetes.io/autoupdate" +) + +// 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"` + + // 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. + // +optional + 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. + // +optional + 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. + // +optional + 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. + // +optional + 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 subject. + // Defaults to "v1" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io/v1alpha1" for User and Group subjects. + // +k8s:conversion-gen=false + // +optional + 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. + // +optional + 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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RoleList is a collection of Roles +type RoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/rbac/v1alpha1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..e4cab83253 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,427 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole)) + return nil + }, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule)) + return nil + }, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Role).DeepCopyInto(out.(*Role)) + return nil + }, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding)) + return nil + }, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList)) + return nil + }, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleList).DeepCopyInto(out.(*RoleList)) + return nil + }, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleRef).DeepCopyInto(out.(*RoleRef)) + return nil + }, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Subject).DeepCopyInto(out.(*Subject)) + return nil + }, InType: reflect.TypeOf(&Subject{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRole. +func (in *ClusterRole) DeepCopy() *ClusterRole { + if in == nil { + return nil + } + out := new(ClusterRole) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRole) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleBinding) DeepCopyInto(out *ClusterRoleBinding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + out.RoleRef = in.RoleRef + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBinding. +func (in *ClusterRoleBinding) DeepCopy() *ClusterRoleBinding { + if in == nil { + return nil + } + out := new(ClusterRoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleBinding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleBindingList) DeepCopyInto(out *ClusterRoleBindingList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBindingList. +func (in *ClusterRoleBindingList) DeepCopy() *ClusterRoleBindingList { + if in == nil { + return nil + } + out := new(ClusterRoleBindingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleBindingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleList) DeepCopyInto(out *ClusterRoleList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleList. +func (in *ClusterRoleList) DeepCopy() *ClusterRoleList { + if in == nil { + return nil + } + out := new(ClusterRoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PolicyRule) DeepCopyInto(out *PolicyRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PolicyRule. +func (in *PolicyRule) DeepCopy() *PolicyRule { + if in == nil { + return nil + } + out := new(PolicyRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Role) DeepCopyInto(out *Role) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role. +func (in *Role) DeepCopy() *Role { + if in == nil { + return nil + } + out := new(Role) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Role) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBinding) DeepCopyInto(out *RoleBinding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + out.RoleRef = in.RoleRef + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBinding. +func (in *RoleBinding) DeepCopy() *RoleBinding { + if in == nil { + return nil + } + out := new(RoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleBinding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBindingList) DeepCopyInto(out *RoleBindingList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingList. +func (in *RoleBindingList) DeepCopy() *RoleBindingList { + if in == nil { + return nil + } + out := new(RoleBindingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleBindingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleList) DeepCopyInto(out *RoleList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList. +func (in *RoleList) DeepCopy() *RoleList { + if in == nil { + return nil + } + out := new(RoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleRef) DeepCopyInto(out *RoleRef) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleRef. +func (in *RoleRef) DeepCopy() *RoleRef { + if in == nil { + return nil + } + out := new(RoleRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Subject) DeepCopyInto(out *Subject) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subject. +func (in *Subject) DeepCopy() *Subject { + if in == nil { + return nil + } + out := new(Subject) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/rbac/v1beta1/BUILD b/vendor/k8s.io/api/rbac/v1beta1/BUILD new file mode 100644 index 0000000000..6a38064dd2 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/rbac/v1beta1/doc.go b/vendor/k8s.io/api/rbac/v1beta1/doc.go new file mode 100644 index 0000000000..bb7d47df99 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 v1beta1 // import "k8s.io/api/rbac/v1beta1" diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go new file mode 100644 index 0000000000..9cb4935c02 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go @@ -0,0 +1,2555 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/rbac/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1/generated.proto + + It has these top-level messages: + ClusterRole + ClusterRoleBinding + ClusterRoleBindingList + ClusterRoleList + PolicyRule + Role + RoleBinding + RoleBindingList + RoleList + RoleRef + Subject +*/ +package v1beta1 + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.rbac.v1beta1.ClusterRole") + proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.api.rbac.v1beta1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.api.rbac.v1beta1.ClusterRoleBindingList") + proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.api.rbac.v1beta1.ClusterRoleList") + proto.RegisterType((*PolicyRule)(nil), "k8s.io.api.rbac.v1beta1.PolicyRule") + proto.RegisterType((*Role)(nil), "k8s.io.api.rbac.v1beta1.Role") + proto.RegisterType((*RoleBinding)(nil), "k8s.io.api.rbac.v1beta1.RoleBinding") + proto.RegisterType((*RoleBindingList)(nil), "k8s.io.api.rbac.v1beta1.RoleBindingList") + proto.RegisterType((*RoleList)(nil), "k8s.io.api.rbac.v1beta1.RoleList") + proto.RegisterType((*RoleRef)(nil), "k8s.io.api.rbac.v1beta1.RoleRef") + proto.RegisterType((*Subject)(nil), "k8s.io.api.rbac.v1beta1.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) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + 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.Resources) > 0 { + for _, s := range m.Resources { + 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.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + 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.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + 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) + } + } + 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())) + n6, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + 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())) + n7, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + 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())) + n8, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + 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())) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + 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())) + 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 *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.APIGroup))) + i += copy(dAtA[i:], m.APIGroup) + 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)) + } + } + 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.APIGroup) + 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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_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_apimachinery_pkg_apis_meta_v1.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_apimachinery_pkg_apis_meta_v1.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) + `,`, + `APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`, + `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 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 3: + 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 4: + 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 5: + 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 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 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 751 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x94, 0xcd, 0x6e, 0xd3, 0x4a, + 0x14, 0xc7, 0xe3, 0x7c, 0x28, 0xf1, 0xe4, 0x46, 0xb9, 0xf5, 0x95, 0xee, 0xb5, 0x2a, 0x5d, 0x27, + 0x0a, 0x2c, 0x2a, 0x95, 0xda, 0xb4, 0x20, 0x60, 0x83, 0x04, 0x66, 0x01, 0x55, 0x4b, 0xa8, 0x06, + 0xc1, 0x02, 0xb1, 0x60, 0xe2, 0x4c, 0xd3, 0x21, 0xf1, 0x87, 0x66, 0xc6, 0x91, 0x2a, 0x36, 0x3c, + 0x00, 0x0b, 0x24, 0x5e, 0x83, 0x15, 0x3b, 0x78, 0x82, 0x2c, 0xbb, 0xec, 0x2a, 0xa2, 0xe6, 0x41, + 0x40, 0x33, 0xb6, 0xe3, 0xa4, 0x69, 0xda, 0xac, 0x22, 0x21, 0xb1, 0x4a, 0xe6, 0x9c, 0xdf, 0xf9, + 0x9f, 0x0f, 0xcf, 0x1c, 0xf0, 0xa0, 0x7f, 0x8f, 0x99, 0xc4, 0xb7, 0xfa, 0x61, 0x07, 0x53, 0x0f, + 0x73, 0xcc, 0xac, 0x21, 0xf6, 0xba, 0x3e, 0xb5, 0x12, 0x07, 0x0a, 0x88, 0x45, 0x3b, 0xc8, 0xb1, + 0x86, 0xdb, 0x1d, 0xcc, 0xd1, 0xb6, 0xd5, 0xc3, 0x1e, 0xa6, 0x88, 0xe3, 0xae, 0x19, 0x50, 0x9f, + 0xfb, 0xda, 0x7f, 0x31, 0x68, 0xa2, 0x80, 0x98, 0x02, 0x34, 0x13, 0x70, 0x7d, 0xab, 0x47, 0xf8, + 0x51, 0xd8, 0x31, 0x1d, 0xdf, 0xb5, 0x7a, 0x7e, 0xcf, 0xb7, 0x24, 0xdf, 0x09, 0x0f, 0xe5, 0x49, + 0x1e, 0xe4, 0xbf, 0x58, 0x67, 0xfd, 0x76, 0x96, 0xd0, 0x45, 0xce, 0x11, 0xf1, 0x30, 0x3d, 0xb6, + 0x82, 0x7e, 0x4f, 0x18, 0x98, 0xe5, 0x62, 0x8e, 0xac, 0xe1, 0x5c, 0xf6, 0x75, 0x6b, 0x51, 0x14, + 0x0d, 0x3d, 0x4e, 0x5c, 0x3c, 0x17, 0x70, 0xe7, 0xaa, 0x00, 0xe6, 0x1c, 0x61, 0x17, 0xcd, 0xc5, + 0xdd, 0x5a, 0x14, 0x17, 0x72, 0x32, 0xb0, 0x88, 0xc7, 0x19, 0xa7, 0xe7, 0x83, 0x5a, 0x5f, 0x15, + 0x50, 0x7d, 0x34, 0x08, 0x19, 0xc7, 0x14, 0xfa, 0x03, 0xac, 0xbd, 0x01, 0x15, 0xd1, 0x48, 0x17, + 0x71, 0xa4, 0x2b, 0x4d, 0x65, 0xa3, 0xba, 0x73, 0xd3, 0xcc, 0xc6, 0x37, 0xd1, 0x35, 0x83, 0x7e, + 0x4f, 0x18, 0x98, 0x29, 0x68, 0x73, 0xb8, 0x6d, 0x3e, 0xeb, 0xbc, 0xc5, 0x0e, 0x7f, 0x8a, 0x39, + 0xb2, 0xb5, 0xd1, 0xb8, 0x91, 0x8b, 0xc6, 0x0d, 0x90, 0xd9, 0xe0, 0x44, 0x55, 0x7b, 0x02, 0x4a, + 0x34, 0x1c, 0x60, 0xa6, 0xe7, 0x9b, 0x85, 0x8d, 0xea, 0xce, 0x35, 0x73, 0xc1, 0xd7, 0x31, 0x0f, + 0xfc, 0x01, 0x71, 0x8e, 0x61, 0x38, 0xc0, 0x76, 0x2d, 0x51, 0x2c, 0x89, 0x13, 0x83, 0xb1, 0x40, + 0xeb, 0x53, 0x1e, 0x68, 0x53, 0xb5, 0xdb, 0xc4, 0xeb, 0x12, 0xaf, 0xb7, 0x82, 0x16, 0xda, 0xa0, + 0xc2, 0x42, 0xe9, 0x48, 0xbb, 0x68, 0x2e, 0xec, 0xe2, 0x79, 0x0c, 0xda, 0x7f, 0x27, 0x8a, 0x95, + 0xc4, 0xc0, 0xe0, 0x44, 0x43, 0xdb, 0x03, 0x65, 0xea, 0x0f, 0x30, 0xc4, 0x87, 0x7a, 0x41, 0x16, + 0xbc, 0x58, 0x0e, 0xc6, 0x9c, 0x5d, 0x4f, 0xe4, 0xca, 0x89, 0x01, 0xa6, 0x0a, 0xad, 0x91, 0x02, + 0xfe, 0x9d, 0x9f, 0xca, 0x3e, 0x61, 0x5c, 0x7b, 0x3d, 0x37, 0x19, 0x73, 0xb9, 0xc9, 0x88, 0x68, + 0x39, 0x97, 0x49, 0x17, 0xa9, 0x65, 0x6a, 0x2a, 0x07, 0xa0, 0x44, 0x38, 0x76, 0xd3, 0x91, 0x6c, + 0x2e, 0xec, 0x61, 0xbe, 0xba, 0xec, 0x03, 0xef, 0x0a, 0x05, 0x18, 0x0b, 0xb5, 0xbe, 0x29, 0xa0, + 0x3e, 0x05, 0xaf, 0xa0, 0x87, 0xdd, 0xd9, 0x1e, 0xae, 0x2f, 0xd5, 0xc3, 0xc5, 0xc5, 0xff, 0x54, + 0x00, 0xc8, 0xae, 0xb0, 0xd6, 0x00, 0xa5, 0x21, 0xa6, 0x1d, 0xa6, 0x2b, 0xcd, 0xc2, 0x86, 0x6a, + 0xab, 0x82, 0x7f, 0x29, 0x0c, 0x30, 0xb6, 0x6b, 0x9b, 0x40, 0x45, 0x01, 0x79, 0x4c, 0xfd, 0x30, + 0x88, 0xd3, 0xab, 0x76, 0x2d, 0x1a, 0x37, 0xd4, 0x87, 0x07, 0xbb, 0xb1, 0x11, 0x66, 0x7e, 0x01, + 0x53, 0xcc, 0xfc, 0x90, 0x3a, 0x98, 0xe9, 0x85, 0x0c, 0x86, 0xa9, 0x11, 0x66, 0x7e, 0xed, 0x2e, + 0xa8, 0xa5, 0x87, 0x36, 0x72, 0x31, 0xd3, 0x8b, 0x32, 0x60, 0x2d, 0x1a, 0x37, 0x6a, 0x70, 0xda, + 0x01, 0x67, 0x39, 0xed, 0x3e, 0xa8, 0x7b, 0xbe, 0x97, 0x22, 0x2f, 0xe0, 0x3e, 0xd3, 0x4b, 0x32, + 0xf4, 0x9f, 0x68, 0xdc, 0xa8, 0xb7, 0x67, 0x5d, 0xf0, 0x3c, 0xdb, 0xfa, 0xa2, 0x80, 0xe2, 0x6f, + 0xb7, 0x54, 0x3e, 0xe4, 0x41, 0xf5, 0xcf, 0x36, 0x99, 0x6c, 0x13, 0xf1, 0x04, 0x57, 0xbb, 0x46, + 0x96, 0x7e, 0x82, 0x57, 0xef, 0x8f, 0xcf, 0x0a, 0xa8, 0xac, 0x68, 0x71, 0xd8, 0xb3, 0x55, 0xff, + 0x7f, 0x79, 0xd5, 0x17, 0x97, 0xfb, 0x0e, 0xa4, 0xf3, 0xd7, 0x6e, 0x80, 0x4a, 0xfa, 0xd8, 0x65, + 0xb1, 0x6a, 0x96, 0x3c, 0xdd, 0x07, 0x70, 0x42, 0x68, 0x4d, 0x50, 0xec, 0x13, 0xaf, 0xab, 0xe7, + 0x25, 0xf9, 0x57, 0x42, 0x16, 0xf7, 0x88, 0xd7, 0x85, 0xd2, 0x23, 0x08, 0x0f, 0xb9, 0x58, 0x5e, + 0x88, 0x29, 0x42, 0x3c, 0x73, 0x28, 0x3d, 0x62, 0x56, 0xe5, 0xe4, 0x32, 0x4d, 0xf4, 0x94, 0x85, + 0x7a, 0xd3, 0xf5, 0xe5, 0x97, 0xa9, 0xef, 0xf2, 0xec, 0x9a, 0x05, 0x54, 0xf1, 0xcb, 0x02, 0xe4, + 0x60, 0xbd, 0x28, 0xb1, 0xb5, 0x04, 0x53, 0xdb, 0xa9, 0x03, 0x66, 0x8c, 0xbd, 0x35, 0x3a, 0x33, + 0x72, 0x27, 0x67, 0x46, 0xee, 0xf4, 0xcc, 0xc8, 0xbd, 0x8f, 0x0c, 0x65, 0x14, 0x19, 0xca, 0x49, + 0x64, 0x28, 0xa7, 0x91, 0xa1, 0x7c, 0x8f, 0x0c, 0xe5, 0xe3, 0x0f, 0x23, 0xf7, 0xaa, 0x9c, 0x4c, + 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x74, 0x24, 0x6a, 0xfa, 0x45, 0x0a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.proto b/vendor/k8s.io/api/rbac/v1beta1/generated.proto new file mode 100644 index 0000000000..6469de720a --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/generated.proto @@ -0,0 +1,182 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.rbac.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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; + + // 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. + // +optional + repeated string apiGroups = 2; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + repeated string resources = 3; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + repeated string resourceNames = 4; + + // 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 + // 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. + // +optional + repeated string nonResourceURLs = 5; +} + +// 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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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 + optional k8s.io.apimachinery.pkg.apis.meta.v1.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; + + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // +optional + optional string apiGroup = 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 + optional string namespace = 4; +} + diff --git a/vendor/k8s.io/api/rbac/v1beta1/register.go b/vendor/k8s.io/api/rbac/v1beta1/register.go new file mode 100644 index 0000000000..8f60f01953 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/register.go @@ -0,0 +1,58 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.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{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/rbac/v1beta1/types.go b/vendor/k8s.io/api/rbac/v1beta1/types.go new file mode 100644 index 0000000000..30f95a7740 --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/types.go @@ -0,0 +1,219 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// 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" + + // AutoUpdateAnnotationKey is the name of an annotation which prevents reconciliation if set to "false" + AutoUpdateAnnotationKey = "rbac.authorization.kubernetes.io/autoupdate" +) + +// 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"` + + // 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. + // +optional + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,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 + // 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. + // +optional + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,5,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"` + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // +optional + APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt.name=apiGroup"` + // 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. + // +optional + 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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// RoleList is a collection of Roles +type RoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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 +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.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/pkg/apis/rbac/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/rbac/v1beta1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..922727646f --- /dev/null +++ b/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,427 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRole).DeepCopyInto(out.(*ClusterRole)) + return nil + }, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleBinding).DeepCopyInto(out.(*ClusterRoleBinding)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleBindingList).DeepCopyInto(out.(*ClusterRoleBindingList)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ClusterRoleList).DeepCopyInto(out.(*ClusterRoleList)) + return nil + }, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PolicyRule).DeepCopyInto(out.(*PolicyRule)) + return nil + }, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Role).DeepCopyInto(out.(*Role)) + return nil + }, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleBinding).DeepCopyInto(out.(*RoleBinding)) + return nil + }, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList)) + return nil + }, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleList).DeepCopyInto(out.(*RoleList)) + return nil + }, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleRef).DeepCopyInto(out.(*RoleRef)) + return nil + }, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Subject).DeepCopyInto(out.(*Subject)) + return nil + }, InType: reflect.TypeOf(&Subject{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRole. +func (in *ClusterRole) DeepCopy() *ClusterRole { + if in == nil { + return nil + } + out := new(ClusterRole) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRole) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleBinding) DeepCopyInto(out *ClusterRoleBinding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + out.RoleRef = in.RoleRef + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBinding. +func (in *ClusterRoleBinding) DeepCopy() *ClusterRoleBinding { + if in == nil { + return nil + } + out := new(ClusterRoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleBinding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleBindingList) DeepCopyInto(out *ClusterRoleBindingList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleBindingList. +func (in *ClusterRoleBindingList) DeepCopy() *ClusterRoleBindingList { + if in == nil { + return nil + } + out := new(ClusterRoleBindingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleBindingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRoleList) DeepCopyInto(out *ClusterRoleList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRoleList. +func (in *ClusterRoleList) DeepCopy() *ClusterRoleList { + if in == nil { + return nil + } + out := new(ClusterRoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterRoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PolicyRule) DeepCopyInto(out *PolicyRule) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PolicyRule. +func (in *PolicyRule) DeepCopy() *PolicyRule { + if in == nil { + return nil + } + out := new(PolicyRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Role) DeepCopyInto(out *Role) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Role. +func (in *Role) DeepCopy() *Role { + if in == nil { + return nil + } + out := new(Role) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Role) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBinding) DeepCopyInto(out *RoleBinding) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + out.RoleRef = in.RoleRef + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBinding. +func (in *RoleBinding) DeepCopy() *RoleBinding { + if in == nil { + return nil + } + out := new(RoleBinding) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleBinding) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBindingList) DeepCopyInto(out *RoleBindingList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingList. +func (in *RoleBindingList) DeepCopy() *RoleBindingList { + if in == nil { + return nil + } + out := new(RoleBindingList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleBindingList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleList) DeepCopyInto(out *RoleList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList. +func (in *RoleList) DeepCopy() *RoleList { + if in == nil { + return nil + } + out := new(RoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleRef) DeepCopyInto(out *RoleRef) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleRef. +func (in *RoleRef) DeepCopy() *RoleRef { + if in == nil { + return nil + } + out := new(RoleRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Subject) DeepCopyInto(out *Subject) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subject. +func (in *Subject) DeepCopy() *Subject { + if in == nil { + return nil + } + out := new(Subject) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/BUILD b/vendor/k8s.io/api/scheduling/v1alpha1/BUILD new file mode 100644 index 0000000000..6a38064dd2 --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/doc.go b/vendor/k8s.io/api/scheduling/v1alpha1/doc.go new file mode 100644 index 0000000000..bf9015986c --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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=scheduling.k8s.io +package v1alpha1 // import "k8s.io/api/scheduling/v1alpha1" diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..1a68ffe113 --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go @@ -0,0 +1,641 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto + + It has these top-level messages: + PriorityClass + PriorityClassList +*/ +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *PriorityClass) Reset() { *m = PriorityClass{} } +func (*PriorityClass) ProtoMessage() {} +func (*PriorityClass) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PriorityClassList) Reset() { *m = PriorityClassList{} } +func (*PriorityClassList) ProtoMessage() {} +func (*PriorityClassList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func init() { + proto.RegisterType((*PriorityClass)(nil), "k8s.io.api.scheduling.v1alpha1.PriorityClass") + proto.RegisterType((*PriorityClassList)(nil), "k8s.io.api.scheduling.v1alpha1.PriorityClassList") +} +func (m *PriorityClass) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PriorityClass) 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] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Value)) + dAtA[i] = 0x18 + i++ + if m.GlobalDefault { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Description))) + i += copy(dAtA[i:], m.Description) + return i, nil +} + +func (m *PriorityClassList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PriorityClassList) 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 *PriorityClass) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Value)) + n += 2 + l = len(m.Description) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PriorityClassList) 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 *PriorityClass) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PriorityClass{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `GlobalDefault:` + fmt.Sprintf("%v", this.GlobalDefault) + `,`, + `Description:` + fmt.Sprintf("%v", this.Description) + `,`, + `}`, + }, "") + return s +} +func (this *PriorityClassList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PriorityClassList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PriorityClass", "PriorityClass", 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 *PriorityClass) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PriorityClass: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PriorityClass: 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 != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + m.Value = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Value |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GlobalDefault", 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.GlobalDefault = bool(v != 0) + case 4: + 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 + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PriorityClassList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PriorityClassList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PriorityClassList: 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, PriorityClass{}) + 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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 460 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x8b, 0xd3, 0x40, + 0x18, 0xc6, 0x33, 0x5d, 0x0b, 0x75, 0x4a, 0x41, 0x23, 0x42, 0xe8, 0x61, 0x36, 0xac, 0x97, 0x5c, + 0x76, 0xc6, 0xae, 0x7f, 0x10, 0xbc, 0xc5, 0x85, 0x45, 0x50, 0x94, 0x1c, 0x3c, 0x88, 0x07, 0x27, + 0xc9, 0x6c, 0x3a, 0x36, 0xc9, 0x84, 0x99, 0x37, 0x81, 0xbd, 0x79, 0xf6, 0xe4, 0x97, 0x12, 0x7a, + 0xdc, 0xe3, 0x9e, 0x16, 0x1b, 0xbf, 0x88, 0x24, 0x4d, 0x37, 0xad, 0x65, 0xd5, 0x5b, 0xe6, 0x79, + 0x9f, 0xdf, 0x33, 0xf3, 0x3e, 0x04, 0x9f, 0x2d, 0x5e, 0x18, 0x2a, 0x15, 0x5b, 0x94, 0xa1, 0xd0, + 0xb9, 0x00, 0x61, 0x58, 0x25, 0xf2, 0x58, 0x69, 0xd6, 0x0d, 0x78, 0x21, 0x99, 0x89, 0xe6, 0x22, + 0x2e, 0x53, 0x99, 0x27, 0xac, 0x9a, 0xf1, 0xb4, 0x98, 0xf3, 0x19, 0x4b, 0x44, 0x2e, 0x34, 0x07, + 0x11, 0xd3, 0x42, 0x2b, 0x50, 0x36, 0x59, 0xfb, 0x29, 0x2f, 0x24, 0xed, 0xfd, 0x74, 0xe3, 0x9f, + 0x1e, 0x27, 0x12, 0xe6, 0x65, 0x48, 0x23, 0x95, 0xb1, 0x44, 0x25, 0x8a, 0xb5, 0x58, 0x58, 0x9e, + 0xb7, 0xa7, 0xf6, 0xd0, 0x7e, 0xad, 0xe3, 0xa6, 0x4f, 0xfb, 0xeb, 0x33, 0x1e, 0xcd, 0x65, 0x2e, + 0xf4, 0x05, 0x2b, 0x16, 0x49, 0x23, 0x18, 0x96, 0x09, 0xe0, 0xac, 0xda, 0x7b, 0xc4, 0x94, 0xdd, + 0x46, 0xe9, 0x32, 0x07, 0x99, 0x89, 0x3d, 0xe0, 0xf9, 0xbf, 0x80, 0x66, 0x95, 0x8c, 0xef, 0x71, + 0x4f, 0x6e, 0xe3, 0x4a, 0x90, 0x29, 0x93, 0x39, 0x18, 0xd0, 0x7f, 0x42, 0x47, 0xdf, 0x06, 0x78, + 0xf2, 0x5e, 0x4b, 0xa5, 0x25, 0x5c, 0xbc, 0x4a, 0xb9, 0x31, 0xf6, 0x67, 0x3c, 0x6a, 0x56, 0x89, + 0x39, 0x70, 0x07, 0xb9, 0xc8, 0x1b, 0x9f, 0x3c, 0xa6, 0x7d, 0x8f, 0x37, 0xc9, 0xb4, 0x58, 0x24, + 0x8d, 0x60, 0x68, 0xe3, 0xa6, 0xd5, 0x8c, 0xbe, 0x0b, 0xbf, 0x88, 0x08, 0xde, 0x0a, 0xe0, 0xbe, + 0xbd, 0xbc, 0x3e, 0xb4, 0xea, 0xeb, 0x43, 0xdc, 0x6b, 0xc1, 0x4d, 0xaa, 0xfd, 0x08, 0x0f, 0x2b, + 0x9e, 0x96, 0xc2, 0x19, 0xb8, 0xc8, 0x1b, 0xfa, 0x93, 0xce, 0x3c, 0xfc, 0xd0, 0x88, 0xc1, 0x7a, + 0x66, 0xbf, 0xc4, 0x93, 0x24, 0x55, 0x21, 0x4f, 0x4f, 0xc5, 0x39, 0x2f, 0x53, 0x70, 0x0e, 0x5c, + 0xe4, 0x8d, 0xfc, 0x87, 0x9d, 0x79, 0x72, 0xb6, 0x3d, 0x0c, 0x76, 0xbd, 0xf6, 0x33, 0x3c, 0x8e, + 0x85, 0x89, 0xb4, 0x2c, 0x40, 0xaa, 0xdc, 0xb9, 0xe3, 0x22, 0xef, 0xae, 0xff, 0xa0, 0x43, 0xc7, + 0xa7, 0xfd, 0x28, 0xd8, 0xf6, 0x1d, 0xfd, 0x40, 0xf8, 0xfe, 0x4e, 0x19, 0x6f, 0xa4, 0x01, 0xfb, + 0xd3, 0x5e, 0x21, 0xf4, 0xff, 0x0a, 0x69, 0xe8, 0xb6, 0x8e, 0x7b, 0xdd, 0xcd, 0xa3, 0x8d, 0xb2, + 0x55, 0x46, 0x80, 0x87, 0x12, 0x44, 0x66, 0x9c, 0x81, 0x7b, 0xe0, 0x8d, 0x4f, 0x8e, 0xe9, 0xdf, + 0xff, 0x59, 0xba, 0xf3, 0xbe, 0xbe, 0xbb, 0xd7, 0x4d, 0x46, 0xb0, 0x8e, 0xf2, 0xe9, 0x72, 0x45, + 0xac, 0xcb, 0x15, 0xb1, 0xae, 0x56, 0xc4, 0xfa, 0x5a, 0x13, 0xb4, 0xac, 0x09, 0xba, 0xac, 0x09, + 0xba, 0xaa, 0x09, 0xfa, 0x59, 0x13, 0xf4, 0xfd, 0x17, 0xb1, 0x3e, 0x8e, 0x36, 0x99, 0xbf, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x44, 0x05, 0xba, 0x7b, 0x71, 0x03, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto new file mode 100644 index 0000000000..625cae7bee --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto @@ -0,0 +1,65 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.scheduling.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// PriorityClass defines mapping from a priority class name to the priority +// integer value. The value can be any valid integer. +message PriorityClass { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The value of this priority class. This is the actual priority that pods + // receive when they have the name of this class in their pod spec. + optional int32 value = 2; + + // globalDefault specifies whether this PriorityClass should be considered as + // the default priority for pods that do not have any priority class. + // +optional + optional bool globalDefault = 3; + + // description is an arbitrary string that usually provides guidelines on + // when this priority class should be used. + // +optional + optional string description = 4; +} + +// PriorityClassList is a collection of priority classes. +message PriorityClassList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of PriorityClasses + repeated PriorityClass items = 2; +} + diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/register.go b/vendor/k8s.io/api/scheduling/v1alpha1/register.go new file mode 100644 index 0000000000..91ce6e0cc3 --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "scheduling.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PriorityClass{}, + &PriorityClassList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/types.go b/vendor/k8s.io/api/scheduling/v1alpha1/types.go new file mode 100644 index 0000000000..bca0f3471f --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/types.go @@ -0,0 +1,63 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PriorityClass defines mapping from a priority class name to the priority +// integer value. The value can be any valid integer. +type PriorityClass struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The value of this priority class. This is the actual priority that pods + // receive when they have the name of this class in their pod spec. + Value int32 `json:"value" protobuf:"bytes,2,opt,name=value"` + + // globalDefault specifies whether this PriorityClass should be considered as + // the default priority for pods that do not have any priority class. + // +optional + GlobalDefault bool `json:"globalDefault,omitempty" protobuf:"bytes,3,opt,name=globalDefault"` + + // description is an arbitrary string that usually provides guidelines on + // when this priority class should be used. + // +optional + Description string `json:"description,omitempty" protobuf:"bytes,4,opt,name=description"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PriorityClassList is a collection of priority classes. +type PriorityClassList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of PriorityClasses + Items []PriorityClass `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/scheduling/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..c6187398dc --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,52 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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_PriorityClass = map[string]string{ + "": "PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "value": "The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.", + "globalDefault": "globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class.", + "description": "description is an arbitrary string that usually provides guidelines on when this priority class should be used.", +} + +func (PriorityClass) SwaggerDoc() map[string]string { + return map_PriorityClass +} + +var map_PriorityClassList = map[string]string{ + "": "PriorityClassList is a collection of priority classes.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "items is the list of PriorityClasses", +} + +func (PriorityClassList) SwaggerDoc() map[string]string { + return map_PriorityClassList +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..a3ae5c0ff9 --- /dev/null +++ b/vendor/k8s.io/api/scheduling/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,109 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PriorityClass).DeepCopyInto(out.(*PriorityClass)) + return nil + }, InType: reflect.TypeOf(&PriorityClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PriorityClassList).DeepCopyInto(out.(*PriorityClassList)) + return nil + }, InType: reflect.TypeOf(&PriorityClassList{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PriorityClass) DeepCopyInto(out *PriorityClass) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorityClass. +func (in *PriorityClass) DeepCopy() *PriorityClass { + if in == nil { + return nil + } + out := new(PriorityClass) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PriorityClass) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PriorityClassList) DeepCopyInto(out *PriorityClassList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PriorityClass, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorityClassList. +func (in *PriorityClassList) DeepCopy() *PriorityClassList { + if in == nil { + return nil + } + out := new(PriorityClassList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PriorityClassList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/api/settings/v1alpha1/BUILD b/vendor/k8s.io/api/settings/v1alpha1/BUILD new file mode 100644 index 0000000000..5cc4f6f7b3 --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/BUILD @@ -0,0 +1,45 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/settings/v1alpha1/doc.go b/vendor/k8s.io/api/settings/v1alpha1/doc.go new file mode 100644 index 0000000000..ae1bfb9122 --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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=settings.k8s.io +package v1alpha1 // import "k8s.io/api/settings/v1alpha1" diff --git a/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go b/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..47e24af73b --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go @@ -0,0 +1,930 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/settings/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/settings/v1alpha1/generated.proto + + It has these top-level messages: + PodPreset + PodPresetList + PodPresetSpec +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *PodPreset) Reset() { *m = PodPreset{} } +func (*PodPreset) ProtoMessage() {} +func (*PodPreset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PodPresetList) Reset() { *m = PodPresetList{} } +func (*PodPresetList) ProtoMessage() {} +func (*PodPresetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *PodPresetSpec) Reset() { *m = PodPresetSpec{} } +func (*PodPresetSpec) ProtoMessage() {} +func (*PodPresetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*PodPreset)(nil), "k8s.io.api.settings.v1alpha1.PodPreset") + proto.RegisterType((*PodPresetList)(nil), "k8s.io.api.settings.v1alpha1.PodPresetList") + proto.RegisterType((*PodPresetSpec)(nil), "k8s.io.api.settings.v1alpha1.PodPresetSpec") +} +func (m *PodPreset) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPreset) 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 + return i, nil +} + +func (m *PodPresetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPresetList) 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())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + 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 *PodPresetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPresetSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n4, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Env) > 0 { + for _, msg := range m.Env { + 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.EnvFrom) > 0 { + for _, msg := range m.EnvFrom { + 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 + } + } + if len(m.Volumes) > 0 { + for _, msg := range m.Volumes { + 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.VolumeMounts) > 0 { + for _, msg := range m.VolumeMounts { + 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 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 *PodPreset) 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 *PodPresetList) 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 *PodPresetSpec) Size() (n int) { + var l int + _ = l + l = m.Selector.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)) + } + } + if len(m.EnvFrom) > 0 { + for _, e := range m.EnvFrom { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Volumes) > 0 { + for _, e := range m.Volumes { + l = e.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)) + } + } + 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 *PodPreset) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPreset{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodPresetSpec", "PodPresetSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodPresetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPresetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodPreset", "PodPreset", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodPresetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPresetSpec{`, + `Selector:` + strings.Replace(strings.Replace(this.Selector.String(), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`, + `Env:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Env), "EnvVar", "k8s_io_api_core_v1.EnvVar", 1), `&`, ``, 1) + `,`, + `EnvFrom:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.EnvFrom), "EnvFromSource", "k8s_io_api_core_v1.EnvFromSource", 1), `&`, ``, 1) + `,`, + `Volumes:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Volumes), "Volume", "k8s_io_api_core_v1.Volume", 1), `&`, ``, 1) + `,`, + `VolumeMounts:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeMounts), "VolumeMount", "k8s_io_api_core_v1.VolumeMount", 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 *PodPreset) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPreset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPreset: 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 *PodPresetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPresetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPresetList: 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, PodPreset{}) + 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 *PodPresetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPresetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPresetSpec: 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 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 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, k8s_io_api_core_v1.EnvVar{}) + if err := m.Env[len(m.Env)-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 EnvFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.EnvFrom = append(m.EnvFrom, k8s_io_api_core_v1.EnvFromSource{}) + if err := m.EnvFrom[len(m.EnvFrom)-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 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, k8s_io_api_core_v1.Volume{}) + if err := m.Volumes[len(m.Volumes)-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 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, k8s_io_api_core_v1.VolumeMount{}) + if err := m.VolumeMounts[len(m.VolumeMounts)-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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/settings/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 556 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x8e, 0xd2, 0x4e, + 0x1c, 0xc7, 0xe9, 0xb2, 0x04, 0xfe, 0x03, 0x9b, 0xbf, 0x69, 0x3c, 0x34, 0xc4, 0x94, 0x95, 0x8b, + 0x9b, 0x18, 0x67, 0x64, 0xd7, 0x18, 0xbd, 0x36, 0xc1, 0xc4, 0x04, 0xe2, 0xa6, 0x24, 0x9b, 0x68, + 0x3c, 0x38, 0x94, 0x9f, 0xa5, 0x42, 0x67, 0x9a, 0x99, 0x69, 0x13, 0x6f, 0x3e, 0x82, 0x2f, 0xe0, + 0x93, 0xe8, 0x03, 0x70, 0xdc, 0xe3, 0x9e, 0x36, 0x52, 0x5f, 0xc4, 0x4c, 0x99, 0x02, 0x8a, 0x28, + 0xb7, 0xce, 0x8f, 0xef, 0xe7, 0x33, 0xbf, 0x2f, 0x2d, 0xea, 0xcf, 0x9e, 0x49, 0x1c, 0x71, 0x32, + 0x4b, 0xc7, 0x20, 0x18, 0x28, 0x90, 0x24, 0x03, 0x36, 0xe1, 0x82, 0x98, 0x1f, 0x68, 0x12, 0x11, + 0x09, 0x4a, 0x45, 0x2c, 0x94, 0x24, 0xeb, 0xd1, 0x79, 0x32, 0xa5, 0x3d, 0x12, 0x02, 0x03, 0x41, + 0x15, 0x4c, 0x70, 0x22, 0xb8, 0xe2, 0xf6, 0xbd, 0x55, 0x1a, 0xd3, 0x24, 0xc2, 0x65, 0x1a, 0x97, + 0xe9, 0xf6, 0xa3, 0x30, 0x52, 0xd3, 0x74, 0x8c, 0x03, 0x1e, 0x93, 0x90, 0x87, 0x9c, 0x14, 0xd0, + 0x38, 0x7d, 0x5f, 0x9c, 0x8a, 0x43, 0xf1, 0xb4, 0x92, 0xb5, 0xbb, 0x5b, 0x57, 0x07, 0x5c, 0x00, + 0xc9, 0x76, 0x2e, 0x6c, 0x3f, 0xd9, 0x64, 0x62, 0x1a, 0x4c, 0x23, 0x06, 0xe2, 0x23, 0x49, 0x66, + 0xa1, 0x1e, 0x48, 0x12, 0x83, 0xa2, 0x7f, 0xa2, 0xc8, 0x3e, 0x4a, 0xa4, 0x4c, 0x45, 0x31, 0xec, + 0x00, 0x4f, 0xff, 0x05, 0xc8, 0x60, 0x0a, 0x31, 0xdd, 0xe1, 0x2e, 0xf6, 0x71, 0xa9, 0x8a, 0xe6, + 0x24, 0x62, 0x4a, 0x2a, 0xf1, 0x3b, 0xd4, 0xfd, 0x66, 0xa1, 0xff, 0x2e, 0xf9, 0xe4, 0x52, 0x80, + 0x04, 0x65, 0xbf, 0x43, 0x0d, 0x5d, 0x63, 0x42, 0x15, 0x75, 0xac, 0x53, 0xeb, 0xac, 0x79, 0xfe, + 0x18, 0x6f, 0xfe, 0xe5, 0xb5, 0x15, 0x27, 0xb3, 0x50, 0x0f, 0x24, 0xd6, 0x69, 0x9c, 0xf5, 0xf0, + 0xab, 0xf1, 0x07, 0x08, 0xd4, 0x10, 0x14, 0xf5, 0xec, 0xc5, 0x6d, 0xa7, 0x92, 0xdf, 0x76, 0xd0, + 0x66, 0xe6, 0xaf, 0xad, 0xf6, 0x10, 0x1d, 0xcb, 0x04, 0x02, 0xe7, 0xa8, 0xb0, 0x3f, 0xc4, 0x7f, + 0x7b, 0x87, 0x78, 0xbd, 0xd8, 0x28, 0x81, 0xc0, 0x6b, 0x19, 0xf1, 0xb1, 0x3e, 0xf9, 0x85, 0xa6, + 0xfb, 0xd5, 0x42, 0x27, 0xeb, 0xd4, 0x20, 0x92, 0xca, 0x7e, 0xbb, 0x53, 0x01, 0x1f, 0x56, 0x41, + 0xd3, 0x45, 0x81, 0x3b, 0xe6, 0x9e, 0x46, 0x39, 0xd9, 0x5a, 0x7f, 0x80, 0x6a, 0x91, 0x82, 0x58, + 0x3a, 0x47, 0xa7, 0xd5, 0xb3, 0xe6, 0xf9, 0x83, 0x03, 0xf7, 0xf7, 0x4e, 0x8c, 0xb3, 0xf6, 0x52, + 0xd3, 0xfe, 0x4a, 0xd2, 0xfd, 0x52, 0xdd, 0xda, 0x5e, 0xb7, 0xb2, 0x29, 0x6a, 0x48, 0x98, 0x43, + 0xa0, 0xb8, 0x30, 0xdb, 0x5f, 0x1c, 0xb8, 0x3d, 0x1d, 0xc3, 0x7c, 0x64, 0xd0, 0x4d, 0x85, 0x72, + 0xe2, 0xaf, 0xb5, 0xf6, 0x73, 0x54, 0x05, 0x96, 0x99, 0x02, 0xed, 0xed, 0x02, 0xfa, 0xbb, 0xd7, + 0xae, 0x3e, 0xcb, 0xae, 0xa8, 0xf0, 0x9a, 0x46, 0x52, 0xed, 0xb3, 0xcc, 0xd7, 0x8c, 0x3d, 0x40, + 0x75, 0x60, 0xd9, 0x0b, 0xc1, 0x63, 0xa7, 0x5a, 0xe0, 0xf7, 0xf7, 0xe0, 0x3a, 0x32, 0xe2, 0xa9, + 0x08, 0xc0, 0xfb, 0xdf, 0x58, 0xea, 0x66, 0xec, 0x97, 0x0a, 0xbb, 0x8f, 0xea, 0x19, 0x9f, 0xa7, + 0x31, 0x48, 0xe7, 0x78, 0xff, 0x32, 0x57, 0x45, 0x64, 0xa3, 0x59, 0x9d, 0xa5, 0x5f, 0xb2, 0xf6, + 0x6b, 0xd4, 0x5a, 0x3d, 0x0e, 0x79, 0xca, 0x94, 0x74, 0x6a, 0x85, 0xab, 0xb3, 0xdf, 0x55, 0xe4, + 0xbc, 0xbb, 0x46, 0xd8, 0xda, 0x1a, 0x4a, 0xff, 0x17, 0x95, 0x87, 0x17, 0x4b, 0xb7, 0x72, 0xbd, + 0x74, 0x2b, 0x37, 0x4b, 0xb7, 0xf2, 0x29, 0x77, 0xad, 0x45, 0xee, 0x5a, 0xd7, 0xb9, 0x6b, 0xdd, + 0xe4, 0xae, 0xf5, 0x3d, 0x77, 0xad, 0xcf, 0x3f, 0xdc, 0xca, 0x9b, 0x46, 0xf9, 0xbe, 0x7f, 0x06, + 0x00, 0x00, 0xff, 0xff, 0x0e, 0x35, 0x98, 0xb5, 0xd9, 0x04, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/settings/v1alpha1/generated.proto b/vendor/k8s.io/api/settings/v1alpha1/generated.proto new file mode 100644 index 0000000000..430319d7dc --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/generated.proto @@ -0,0 +1,76 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.settings.v1alpha1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// PodPreset is a policy resource that defines additional runtime +// requirements for a Pod. +message PodPreset { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // +optional + optional PodPresetSpec spec = 2; +} + +// PodPresetList is a list of PodPreset objects. +message PodPresetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated PodPreset items = 2; +} + +// PodPresetSpec is a description of a pod preset. +message PodPresetSpec { + // Selector is a label query over a set of resources, in this case pods. + // Required. + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1; + + // Env defines the collection of EnvVar to inject into containers. + // +optional + repeated k8s.io.api.core.v1.EnvVar env = 2; + + // EnvFrom defines the collection of EnvFromSource to inject into containers. + // +optional + repeated k8s.io.api.core.v1.EnvFromSource envFrom = 3; + + // Volumes defines the collection of Volume to inject into the pod. + // +optional + repeated k8s.io.api.core.v1.Volume volumes = 4; + + // VolumeMounts defines the collection of VolumeMount to inject into containers. + // +optional + repeated k8s.io.api.core.v1.VolumeMount volumeMounts = 5; +} + diff --git a/vendor/k8s.io/api/settings/v1alpha1/register.go b/vendor/k8s.io/api/settings/v1alpha1/register.go new file mode 100644 index 0000000000..2f39af0f9b --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "settings.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PodPreset{}, + &PodPresetList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/settings/v1alpha1/types.go b/vendor/k8s.io/api/settings/v1alpha1/types.go new file mode 100644 index 0000000000..506aacf4a9 --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/types.go @@ -0,0 +1,70 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodPreset is a policy resource that defines additional runtime +// requirements for a Pod. +type PodPreset struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // +optional + Spec PodPresetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// PodPresetSpec is a description of a pod preset. +type PodPresetSpec struct { + // Selector is a label query over a set of resources, in this case pods. + // Required. + Selector metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,opt,name=selector"` + + // Env defines the collection of EnvVar to inject into containers. + // +optional + Env []v1.EnvVar `json:"env,omitempty" protobuf:"bytes,2,rep,name=env"` + // EnvFrom defines the collection of EnvFromSource to inject into containers. + // +optional + EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,3,rep,name=envFrom"` + // Volumes defines the collection of Volume to inject into the pod. + // +optional + Volumes []v1.Volume `json:"volumes,omitempty" protobuf:"bytes,4,rep,name=volumes"` + // VolumeMounts defines the collection of VolumeMount to inject into containers. + // +optional + VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty" protobuf:"bytes,5,rep,name=volumeMounts"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodPresetList is a list of PodPreset objects. +type PodPresetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []PodPreset `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/settings/v1alpha1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types_swagger_doc_generated.go rename to vendor/k8s.io/api/settings/v1alpha1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..07e6ab72d0 --- /dev/null +++ b/vendor/k8s.io/api/settings/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,160 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/api/core/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodPreset).DeepCopyInto(out.(*PodPreset)) + return nil + }, InType: reflect.TypeOf(&PodPreset{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodPresetList).DeepCopyInto(out.(*PodPresetList)) + return nil + }, InType: reflect.TypeOf(&PodPresetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PodPresetSpec).DeepCopyInto(out.(*PodPresetSpec)) + return nil + }, InType: reflect.TypeOf(&PodPresetSpec{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPreset) DeepCopyInto(out *PodPreset) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPreset. +func (in *PodPreset) DeepCopy() *PodPreset { + if in == nil { + return nil + } + out := new(PodPreset) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodPreset) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPresetList) DeepCopyInto(out *PodPresetList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodPreset, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPresetList. +func (in *PodPresetList) DeepCopy() *PodPresetList { + if in == nil { + return nil + } + out := new(PodPresetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodPresetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPresetSpec) DeepCopyInto(out *PodPresetSpec) { + *out = *in + in.Selector.DeepCopyInto(&out.Selector) + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]v1.EnvVar, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EnvFrom != nil { + in, out := &in.EnvFrom, &out.EnvFrom + *out = make([]v1.EnvFromSource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]v1.Volume, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]v1.VolumeMount, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPresetSpec. +func (in *PodPresetSpec) DeepCopy() *PodPresetSpec { + if in == nil { + return nil + } + out := new(PodPresetSpec) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/OWNERS b/vendor/k8s.io/api/storage/OWNERS similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/storage/OWNERS rename to vendor/k8s.io/api/storage/OWNERS diff --git a/vendor/k8s.io/api/storage/v1/BUILD b/vendor/k8s.io/api/storage/v1/BUILD new file mode 100644 index 0000000000..03d98c7a1f --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/BUILD @@ -0,0 +1,43 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/storage/v1/doc.go b/vendor/k8s.io/api/storage/v1/doc.go new file mode 100644 index 0000000000..0672c58e14 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 +// +k8s:openapi-gen=true +package v1 diff --git a/vendor/k8s.io/api/storage/v1/generated.pb.go b/vendor/k8s.io/api/storage/v1/generated.pb.go new file mode 100644 index 0000000000..4befedff1e --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/generated.pb.go @@ -0,0 +1,884 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/storage/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/storage/v1/generated.proto + + It has these top-level messages: + StorageClass + StorageClassList +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_api_core_v1 "k8s.io/api/core/v1" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.storage.v1.StorageClass") + proto.RegisterType((*StorageClassList)(nil), "k8s.io.api.storage.v1.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 { + keysForParameters := make([]string, 0, len(m.Parameters)) + for k := range m.Parameters { + keysForParameters = append(keysForParameters, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + for _, k := range keysForParameters { + dAtA[i] = 0x1a + i++ + v := m.Parameters[string(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.ReclaimPolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ReclaimPolicy))) + i += copy(dAtA[i:], *m.ReclaimPolicy) + } + if len(m.MountOptions) > 0 { + for _, s := range m.MountOptions { + 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 m.AllowVolumeExpansion != nil { + dAtA[i] = 0x30 + i++ + if *m.AllowVolumeExpansion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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)) + } + } + if m.ReclaimPolicy != nil { + l = len(*m.ReclaimPolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.MountOptions) > 0 { + for _, s := range m.MountOptions { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.AllowVolumeExpansion != nil { + n += 2 + } + 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_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Provisioner:` + fmt.Sprintf("%v", this.Provisioner) + `,`, + `Parameters:` + mapStringForParameters + `,`, + `ReclaimPolicy:` + valueToStringGenerated(this.ReclaimPolicy) + `,`, + `MountOptions:` + fmt.Sprintf("%v", this.MountOptions) + `,`, + `AllowVolumeExpansion:` + valueToStringGenerated(this.AllowVolumeExpansion) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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 + if m.Parameters == nil { + m.Parameters = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Parameters[mapkey] = mapvalue + } else { + var mapvalue string + m.Parameters[mapkey] = mapvalue + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReclaimPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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_api_core_v1.PersistentVolumeReclaimPolicy(dAtA[iNdEx:postIndex]) + m.ReclaimPolicy = &s + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountOptions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MountOptions = append(m.MountOptions, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowVolumeExpansion", 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.AllowVolumeExpansion = &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 *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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/storage/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 593 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x6f, 0xd3, 0x3e, + 0x18, 0xc6, 0x9b, 0x76, 0xfd, 0x6b, 0x73, 0x37, 0xfd, 0xab, 0x30, 0xa4, 0xa8, 0x87, 0xb4, 0x1a, + 0x97, 0x0a, 0x09, 0x7b, 0xdd, 0x06, 0x9a, 0x90, 0x40, 0xa2, 0x68, 0x12, 0x48, 0x9b, 0x56, 0x05, + 0x89, 0x03, 0xe2, 0x80, 0x9b, 0xbd, 0x64, 0x26, 0x89, 0x1d, 0xd9, 0x4e, 0xa0, 0x37, 0x3e, 0x02, + 0x9f, 0x87, 0x13, 0xc7, 0x1d, 0x77, 0xdc, 0x29, 0x62, 0xe1, 0x5b, 0x70, 0x42, 0x49, 0xca, 0x92, + 0xad, 0x9d, 0xd8, 0xcd, 0x7e, 0xdf, 0xe7, 0xf7, 0xd8, 0x7e, 0xfd, 0xa0, 0xe7, 0xfe, 0xbe, 0xc2, + 0x4c, 0x10, 0x3f, 0x9e, 0x82, 0xe4, 0xa0, 0x41, 0x91, 0x04, 0xf8, 0x89, 0x90, 0x64, 0xde, 0xa0, + 0x11, 0x23, 0x4a, 0x0b, 0x49, 0x3d, 0x20, 0xc9, 0x88, 0x78, 0xc0, 0x41, 0x52, 0x0d, 0x27, 0x38, + 0x92, 0x42, 0x0b, 0xf3, 0x7e, 0x29, 0xc3, 0x34, 0x62, 0x78, 0x2e, 0xc3, 0xc9, 0xa8, 0xf7, 0xc8, + 0x63, 0xfa, 0x34, 0x9e, 0x62, 0x57, 0x84, 0xc4, 0x13, 0x9e, 0x20, 0x85, 0x7a, 0x1a, 0x7f, 0x2c, + 0x76, 0xc5, 0xa6, 0x58, 0x95, 0x2e, 0xbd, 0x87, 0x4b, 0x0f, 0x9b, 0x82, 0xa6, 0x0b, 0x27, 0xf6, + 0xf6, 0x2a, 0x6d, 0x48, 0xdd, 0x53, 0xc6, 0x41, 0xce, 0x48, 0xe4, 0x7b, 0x79, 0x41, 0x91, 0x10, + 0x34, 0x5d, 0x72, 0xcf, 0x1e, 0xb9, 0x8d, 0x92, 0x31, 0xd7, 0x2c, 0x84, 0x05, 0xe0, 0xc9, 0xbf, + 0x00, 0xe5, 0x9e, 0x42, 0x48, 0x17, 0xb8, 0xdd, 0xdb, 0xb8, 0x58, 0xb3, 0x80, 0x30, 0xae, 0x95, + 0x96, 0x37, 0xa1, 0xad, 0x1f, 0x2b, 0x68, 0xfd, 0x4d, 0xf9, 0xee, 0x97, 0x01, 0x55, 0xca, 0xfc, + 0x80, 0x56, 0xf3, 0x97, 0x9c, 0x50, 0x4d, 0x2d, 0x63, 0x60, 0x0c, 0x3b, 0x3b, 0xdb, 0xb8, 0x9a, + 0xf4, 0x95, 0x31, 0x8e, 0x7c, 0x2f, 0x2f, 0x28, 0x9c, 0xab, 0x71, 0x32, 0xc2, 0xc7, 0xd3, 0x4f, + 0xe0, 0xea, 0x23, 0xd0, 0x74, 0x6c, 0x9e, 0xa5, 0xfd, 0x46, 0x96, 0xf6, 0x51, 0x55, 0x73, 0xae, + 0x5c, 0xcd, 0xc7, 0xa8, 0x13, 0x49, 0x91, 0x30, 0xc5, 0x04, 0x07, 0x69, 0x35, 0x07, 0xc6, 0x70, + 0x6d, 0x7c, 0x6f, 0x8e, 0x74, 0x26, 0x55, 0xcb, 0xa9, 0xeb, 0x4c, 0x0f, 0xa1, 0x88, 0x4a, 0x1a, + 0x82, 0x06, 0xa9, 0xac, 0xd6, 0xa0, 0x35, 0xec, 0xec, 0xec, 0xe2, 0xa5, 0x21, 0xc0, 0xf5, 0x17, + 0xe1, 0xc9, 0x15, 0x75, 0xc0, 0xb5, 0x9c, 0x55, 0xb7, 0xab, 0x1a, 0x4e, 0xcd, 0xda, 0xf4, 0xd1, + 0x86, 0x04, 0x37, 0xa0, 0x2c, 0x9c, 0x88, 0x80, 0xb9, 0x33, 0x6b, 0xa5, 0xb8, 0xe1, 0x41, 0x96, + 0xf6, 0x37, 0x9c, 0x7a, 0xe3, 0x77, 0xda, 0xdf, 0xae, 0xc5, 0xc7, 0x15, 0x32, 0xcf, 0x0e, 0x9e, + 0x80, 0x54, 0x4c, 0x69, 0xe0, 0xfa, 0xad, 0x08, 0xe2, 0x10, 0xae, 0x31, 0xce, 0x75, 0x6f, 0x73, + 0x0f, 0xad, 0x87, 0x22, 0xe6, 0xfa, 0x38, 0xd2, 0x4c, 0x70, 0x65, 0xb5, 0x07, 0xad, 0xe1, 0xda, + 0xb8, 0x9b, 0xa5, 0xfd, 0xf5, 0xa3, 0x5a, 0xdd, 0xb9, 0xa6, 0x32, 0x0f, 0xd1, 0x26, 0x0d, 0x02, + 0xf1, 0xb9, 0x3c, 0xe0, 0xe0, 0x4b, 0x44, 0x79, 0x3e, 0x25, 0xeb, 0xbf, 0x81, 0x31, 0x5c, 0x1d, + 0x5b, 0x59, 0xda, 0xdf, 0x7c, 0xb1, 0xa4, 0xef, 0x2c, 0xa5, 0x7a, 0xcf, 0xd0, 0xff, 0x37, 0x66, + 0x64, 0x76, 0x51, 0xcb, 0x87, 0x59, 0x11, 0x80, 0x35, 0x27, 0x5f, 0x9a, 0x9b, 0xa8, 0x9d, 0xd0, + 0x20, 0x86, 0xf2, 0xbf, 0x9c, 0x72, 0xf3, 0xb4, 0xb9, 0x6f, 0x6c, 0x7d, 0x37, 0x50, 0xb7, 0x3e, + 0xf0, 0x43, 0xa6, 0xb4, 0xf9, 0x7e, 0x21, 0x46, 0xf8, 0x6e, 0x31, 0xca, 0xe9, 0x22, 0x44, 0xdd, + 0xf9, 0x37, 0xad, 0xfe, 0xad, 0xd4, 0x22, 0xf4, 0x0a, 0xb5, 0x99, 0x86, 0x50, 0x59, 0xcd, 0x22, + 0x06, 0x0f, 0xee, 0x10, 0x83, 0xf1, 0xc6, 0xdc, 0xaf, 0xfd, 0x3a, 0x27, 0x9d, 0xd2, 0x60, 0x3c, + 0x3c, 0xbb, 0xb4, 0x1b, 0xe7, 0x97, 0x76, 0xe3, 0xe2, 0xd2, 0x6e, 0x7c, 0xcd, 0x6c, 0xe3, 0x2c, + 0xb3, 0x8d, 0xf3, 0xcc, 0x36, 0x2e, 0x32, 0xdb, 0xf8, 0x99, 0xd9, 0xc6, 0xb7, 0x5f, 0x76, 0xe3, + 0x5d, 0x33, 0x19, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x57, 0xe7, 0x15, 0xb0, 0x04, 0x00, + 0x00, +} diff --git a/vendor/k8s.io/api/storage/v1/generated.proto b/vendor/k8s.io/api/storage/v1/generated.proto new file mode 100644 index 0000000000..6a335e5268 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/generated.proto @@ -0,0 +1,78 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.storage.v1; + +import "k8s.io/api/storage/v1beta1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// 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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.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. + // +optional + map parameters = 3; + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with this reclaimPolicy. Defaults to Delete. + // +optional + optional string reclaimPolicy = 4; + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with these mountOptions, e.g. ["ro", "soft"]. Not validated - + // mount of the PVs will simply fail if one is invalid. + // +optional + repeated string mountOptions = 5; + + // AllowVolumeExpansion shows whether the storage class allow volume expand + // +optional + optional bool allowVolumeExpansion = 6; +} + +// StorageClassList is a collection of storage classes. +message StorageClassList { + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of StorageClasses + repeated StorageClass items = 2; +} + diff --git a/vendor/k8s.io/api/storage/v1/register.go b/vendor/k8s.io/api/storage/v1/register.go new file mode 100644 index 0000000000..59c4e59ba1 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &StorageClass{}, + &StorageClassList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/storage/v1/types.go b/vendor/k8s.io/api/storage/v1/types.go new file mode 100644 index 0000000000..9afdafb62a --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/types.go @@ -0,0 +1,76 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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. + // +optional + Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with this reclaimPolicy. Defaults to Delete. + // +optional + ReclaimPolicy *v1.PersistentVolumeReclaimPolicy `json:"reclaimPolicy,omitempty" protobuf:"bytes,4,opt,name=reclaimPolicy,casttype=k8s.io/api/core/v1.PersistentVolumeReclaimPolicy"` + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with these mountOptions, e.g. ["ro", "soft"]. Not validated - + // mount of the PVs will simply fail if one is invalid. + // +optional + MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,5,opt,name=mountOptions"` + + // AllowVolumeExpansion shows whether the storage class allow volume expand + // +optional + AllowVolumeExpansion *bool `json:"allowVolumeExpansion,omitempty" protobuf:"varint,6,opt,name=allowVolumeExpansion"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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/api/storage/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..b4be857dd1 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go @@ -0,0 +1,54 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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_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: https://git.k8s.io/community/contributors/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.", + "reclaimPolicy": "Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.", + "mountOptions": "Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. [\"ro\", \"soft\"]. Not validated - mount of the PVs will simply fail if one is invalid.", + "allowVolumeExpansion": "AllowVolumeExpansion shows whether the storage class allow volume expand", +} + +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: https://git.k8s.io/community/contributors/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/api/storage/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..50c707abb9 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go @@ -0,0 +1,140 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + core_v1 "k8s.io/api/core/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StorageClass).DeepCopyInto(out.(*StorageClass)) + return nil + }, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StorageClassList).DeepCopyInto(out.(*StorageClassList)) + return nil + }, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageClass) DeepCopyInto(out *StorageClass) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ReclaimPolicy != nil { + in, out := &in.ReclaimPolicy, &out.ReclaimPolicy + if *in == nil { + *out = nil + } else { + *out = new(core_v1.PersistentVolumeReclaimPolicy) + **out = **in + } + } + if in.MountOptions != nil { + in, out := &in.MountOptions, &out.MountOptions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.AllowVolumeExpansion != nil { + in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClass. +func (in *StorageClass) DeepCopy() *StorageClass { + if in == nil { + return nil + } + out := new(StorageClass) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StorageClass) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageClassList) DeepCopyInto(out *StorageClassList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassList. +func (in *StorageClassList) DeepCopy() *StorageClassList { + if in == nil { + return nil + } + out := new(StorageClassList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StorageClassList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/api/storage/v1beta1/BUILD b/vendor/k8s.io/api/storage/v1beta1/BUILD new file mode 100644 index 0000000000..03d98c7a1f --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/BUILD @@ -0,0 +1,43 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + ], + visibility = ["//visibility:public"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/api/storage/v1beta1/doc.go b/vendor/k8s.io/api/storage/v1beta1/doc.go new file mode 100644 index 0000000000..6137d7a4c2 --- /dev/null +++ b/vendor/k8s.io/api/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. +*/ + +// +k8s:deepcopy-gen=package,register +// +groupName=storage.k8s.io +// +k8s:openapi-gen=true +package v1beta1 // import "k8s.io/api/storage/v1beta1" diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.pb.go b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go new file mode 100644 index 0000000000..b31d6f1229 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go @@ -0,0 +1,883 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/api/storage/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/api/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 k8s_io_api_core_v1 "k8s.io/api/core/v1" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +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.api.storage.v1beta1.StorageClass") + proto.RegisterType((*StorageClassList)(nil), "k8s.io.api.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 { + keysForParameters := make([]string, 0, len(m.Parameters)) + for k := range m.Parameters { + keysForParameters = append(keysForParameters, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + for _, k := range keysForParameters { + dAtA[i] = 0x1a + i++ + v := m.Parameters[string(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.ReclaimPolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ReclaimPolicy))) + i += copy(dAtA[i:], *m.ReclaimPolicy) + } + if len(m.MountOptions) > 0 { + for _, s := range m.MountOptions { + 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 m.AllowVolumeExpansion != nil { + dAtA[i] = 0x30 + i++ + if *m.AllowVolumeExpansion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + 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)) + } + } + if m.ReclaimPolicy != nil { + l = len(*m.ReclaimPolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.MountOptions) > 0 { + for _, s := range m.MountOptions { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.AllowVolumeExpansion != nil { + n += 2 + } + 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_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Provisioner:` + fmt.Sprintf("%v", this.Provisioner) + `,`, + `Parameters:` + mapStringForParameters + `,`, + `ReclaimPolicy:` + valueToStringGenerated(this.ReclaimPolicy) + `,`, + `MountOptions:` + fmt.Sprintf("%v", this.MountOptions) + `,`, + `AllowVolumeExpansion:` + valueToStringGenerated(this.AllowVolumeExpansion) + `,`, + `}`, + }, "") + 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_apimachinery_pkg_apis_meta_v1.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 + if m.Parameters == nil { + m.Parameters = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.Parameters[mapkey] = mapvalue + } else { + var mapvalue string + m.Parameters[mapkey] = mapvalue + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReclaimPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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_api_core_v1.PersistentVolumeReclaimPolicy(dAtA[iNdEx:postIndex]) + m.ReclaimPolicy = &s + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountOptions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MountOptions = append(m.MountOptions, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowVolumeExpansion", 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.AllowVolumeExpansion = &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 *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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/storage/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 589 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4f, 0xd4, 0x40, + 0x18, 0xc6, 0xb7, 0x2c, 0xab, 0x30, 0x0b, 0x71, 0x53, 0x39, 0x34, 0x7b, 0xe8, 0x6e, 0x38, 0xf5, + 0xc2, 0x0c, 0x20, 0x1a, 0x62, 0xe2, 0xc1, 0x12, 0x0e, 0x26, 0x10, 0x36, 0x35, 0xf1, 0x60, 0x3c, + 0x38, 0x5b, 0x5e, 0xcb, 0xd8, 0x76, 0xa6, 0x99, 0x99, 0xae, 0xee, 0xcd, 0x8f, 0xe0, 0x37, 0xf2, + 0x64, 0xc2, 0x91, 0x23, 0xa7, 0x46, 0xea, 0xb7, 0xf0, 0x64, 0xfa, 0x47, 0x5a, 0x58, 0x88, 0xdc, + 0x3a, 0xef, 0xfb, 0xfc, 0x9e, 0xb7, 0xf3, 0xce, 0x83, 0x0e, 0xc2, 0x7d, 0x85, 0x99, 0x20, 0x61, + 0x3a, 0x05, 0xc9, 0x41, 0x83, 0x22, 0x33, 0xe0, 0xa7, 0x42, 0x92, 0xba, 0x41, 0x13, 0x46, 0x94, + 0x16, 0x92, 0x06, 0x40, 0x66, 0x3b, 0x53, 0xd0, 0x74, 0x87, 0x04, 0xc0, 0x41, 0x52, 0x0d, 0xa7, + 0x38, 0x91, 0x42, 0x0b, 0x73, 0x58, 0x69, 0x31, 0x4d, 0x18, 0xae, 0xb5, 0xb8, 0xd6, 0x0e, 0xb7, + 0x02, 0xa6, 0xcf, 0xd2, 0x29, 0xf6, 0x45, 0x4c, 0x02, 0x11, 0x08, 0x52, 0x22, 0xd3, 0xf4, 0x53, + 0x79, 0x2a, 0x0f, 0xe5, 0x57, 0x65, 0x35, 0xdc, 0x6c, 0x8d, 0xf5, 0x85, 0x2c, 0x66, 0xde, 0x1e, + 0x37, 0xdc, 0x6b, 0x34, 0x31, 0xf5, 0xcf, 0x18, 0x07, 0x39, 0x27, 0x49, 0x18, 0x14, 0x05, 0x45, + 0x62, 0xd0, 0xf4, 0x2e, 0x8a, 0xdc, 0x47, 0xc9, 0x94, 0x6b, 0x16, 0xc3, 0x02, 0xf0, 0xe2, 0x7f, + 0x80, 0xf2, 0xcf, 0x20, 0xa6, 0x0b, 0xdc, 0xb3, 0xfb, 0xb8, 0x54, 0xb3, 0x88, 0x30, 0xae, 0x95, + 0x96, 0xb7, 0xa1, 0xcd, 0x9f, 0xcb, 0x68, 0xed, 0x6d, 0xb5, 0xba, 0x83, 0x88, 0x2a, 0x65, 0x7e, + 0x44, 0x2b, 0xc5, 0x4d, 0x4e, 0xa9, 0xa6, 0x96, 0x31, 0x36, 0x9c, 0xfe, 0xee, 0x36, 0x6e, 0xd6, + 0x7c, 0x6d, 0x8c, 0x93, 0x30, 0x28, 0x0a, 0x0a, 0x17, 0x6a, 0x3c, 0xdb, 0xc1, 0x27, 0xd3, 0xcf, + 0xe0, 0xeb, 0x63, 0xd0, 0xd4, 0x35, 0xcf, 0xb3, 0x51, 0x27, 0xcf, 0x46, 0xa8, 0xa9, 0x79, 0xd7, + 0xae, 0xe6, 0x73, 0xd4, 0x4f, 0xa4, 0x98, 0x31, 0xc5, 0x04, 0x07, 0x69, 0x2d, 0x8d, 0x0d, 0x67, + 0xd5, 0x7d, 0x5a, 0x23, 0xfd, 0x49, 0xd3, 0xf2, 0xda, 0x3a, 0x33, 0x42, 0x28, 0xa1, 0x92, 0xc6, + 0xa0, 0x41, 0x2a, 0xab, 0x3b, 0xee, 0x3a, 0xfd, 0xdd, 0x7d, 0x7c, 0x7f, 0x02, 0x70, 0xfb, 0x5a, + 0x78, 0x72, 0x8d, 0x1e, 0x72, 0x2d, 0xe7, 0xcd, 0x2f, 0x36, 0x0d, 0xaf, 0xe5, 0x6f, 0x86, 0x68, + 0x5d, 0x82, 0x1f, 0x51, 0x16, 0x4f, 0x44, 0xc4, 0xfc, 0xb9, 0xb5, 0x5c, 0xfe, 0xe6, 0x61, 0x9e, + 0x8d, 0xd6, 0xbd, 0x76, 0xe3, 0x4f, 0x36, 0xda, 0x5e, 0xcc, 0x0e, 0x9e, 0x80, 0x54, 0x4c, 0x69, + 0xe0, 0xfa, 0x9d, 0x88, 0xd2, 0x18, 0x6e, 0x30, 0xde, 0x4d, 0x6f, 0x73, 0x0f, 0xad, 0xc5, 0x22, + 0xe5, 0xfa, 0x24, 0xd1, 0x4c, 0x70, 0x65, 0xf5, 0xc6, 0x5d, 0x67, 0xd5, 0x1d, 0xe4, 0xd9, 0x68, + 0xed, 0xb8, 0x55, 0xf7, 0x6e, 0xa8, 0xcc, 0x23, 0xb4, 0x41, 0xa3, 0x48, 0x7c, 0xa9, 0x06, 0x1c, + 0x7e, 0x4d, 0x28, 0x2f, 0x56, 0x65, 0x3d, 0x1a, 0x1b, 0xce, 0x8a, 0x6b, 0xe5, 0xd9, 0x68, 0xe3, + 0xf5, 0x1d, 0x7d, 0xef, 0x4e, 0x6a, 0xf8, 0x0a, 0x3d, 0xb9, 0xb5, 0x23, 0x73, 0x80, 0xba, 0x21, + 0xcc, 0xcb, 0x14, 0xac, 0x7a, 0xc5, 0xa7, 0xb9, 0x81, 0x7a, 0x33, 0x1a, 0xa5, 0x50, 0x3d, 0x9a, + 0x57, 0x1d, 0x5e, 0x2e, 0xed, 0x1b, 0x9b, 0x3f, 0x0c, 0x34, 0x68, 0x2f, 0xfc, 0x88, 0x29, 0x6d, + 0x7e, 0x58, 0xc8, 0x12, 0x7e, 0x58, 0x96, 0x0a, 0xba, 0x4c, 0xd2, 0xa0, 0x7e, 0xa6, 0x95, 0x7f, + 0x95, 0x56, 0x8e, 0x8e, 0x51, 0x8f, 0x69, 0x88, 0x95, 0xb5, 0x54, 0x66, 0xc1, 0x79, 0x68, 0x16, + 0xdc, 0xf5, 0xda, 0xb4, 0xf7, 0xa6, 0xc0, 0xbd, 0xca, 0xc5, 0xdd, 0x3a, 0xbf, 0xb2, 0x3b, 0x17, + 0x57, 0x76, 0xe7, 0xf2, 0xca, 0xee, 0x7c, 0xcb, 0x6d, 0xe3, 0x3c, 0xb7, 0x8d, 0x8b, 0xdc, 0x36, + 0x2e, 0x73, 0xdb, 0xf8, 0x95, 0xdb, 0xc6, 0xf7, 0xdf, 0x76, 0xe7, 0xfd, 0xe3, 0xda, 0xf1, 0x6f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0xae, 0x44, 0x72, 0xc1, 0x04, 0x00, 0x00, +} diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.proto b/vendor/k8s.io/api/storage/v1beta1/generated.proto new file mode 100644 index 0000000000..f8070b67cf --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/generated.proto @@ -0,0 +1,78 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.api.storage.v1beta1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/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: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.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. + // +optional + map parameters = 3; + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with this reclaimPolicy. Defaults to Delete. + // +optional + optional string reclaimPolicy = 4; + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with these mountOptions, e.g. ["ro", "soft"]. Not validated - + // mount of the PVs will simply fail if one is invalid. + // +optional + repeated string mountOptions = 5; + + // AllowVolumeExpansion shows whether the storage class allow volume expand + // +optional + optional bool allowVolumeExpansion = 6; +} + +// StorageClassList is a collection of storage classes. +message StorageClassList { + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of StorageClasses + repeated StorageClass items = 2; +} + diff --git a/vendor/k8s.io/api/storage/v1beta1/register.go b/vendor/k8s.io/api/storage/v1beta1/register.go new file mode 100644 index 0000000000..759ba81aa9 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/register.go @@ -0,0 +1,53 @@ +/* +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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// 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 = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &StorageClass{}, + &StorageClassList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/api/storage/v1beta1/types.go b/vendor/k8s.io/api/storage/v1beta1/types.go new file mode 100644 index 0000000000..e5036b55b3 --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/types.go @@ -0,0 +1,76 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// 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 { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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. + // +optional + Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with this reclaimPolicy. Defaults to Delete. + // +optional + ReclaimPolicy *v1.PersistentVolumeReclaimPolicy `json:"reclaimPolicy,omitempty" protobuf:"bytes,4,opt,name=reclaimPolicy,casttype=k8s.io/api/core/v1.PersistentVolumeReclaimPolicy"` + + // Dynamically provisioned PersistentVolumes of this storage class are + // created with these mountOptions, e.g. ["ro", "soft"]. Not validated - + // mount of the PVs will simply fail if one is invalid. + // +optional + MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,5,opt,name=mountOptions"` + + // AllowVolumeExpansion shows whether the storage class allow volume expand + // +optional + AllowVolumeExpansion *bool `json:"allowVolumeExpansion,omitempty" protobuf:"varint,6,opt,name=allowVolumeExpansion"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.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/api/storage/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..e2148c231f --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,54 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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: https://git.k8s.io/community/contributors/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.", + "reclaimPolicy": "Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.", + "mountOptions": "Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. [\"ro\", \"soft\"]. Not validated - mount of the PVs will simply fail if one is invalid.", + "allowVolumeExpansion": "AllowVolumeExpansion shows whether the storage class allow volume expand", +} + +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: https://git.k8s.io/community/contributors/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/api/storage/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..bf1f91a67d --- /dev/null +++ b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,140 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/api/core/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StorageClass).DeepCopyInto(out.(*StorageClass)) + return nil + }, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StorageClassList).DeepCopyInto(out.(*StorageClassList)) + return nil + }, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageClass) DeepCopyInto(out *StorageClass) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ReclaimPolicy != nil { + in, out := &in.ReclaimPolicy, &out.ReclaimPolicy + if *in == nil { + *out = nil + } else { + *out = new(v1.PersistentVolumeReclaimPolicy) + **out = **in + } + } + if in.MountOptions != nil { + in, out := &in.MountOptions, &out.MountOptions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.AllowVolumeExpansion != nil { + in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClass. +func (in *StorageClass) DeepCopy() *StorageClass { + if in == nil { + return nil + } + out := new(StorageClass) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StorageClass) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageClassList) DeepCopyInto(out *StorageClassList) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClassList. +func (in *StorageClassList) DeepCopy() *StorageClassList { + if in == nil { + return nil + } + out := new(StorageClassList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *StorageClassList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/BUILD b/vendor/k8s.io/apiextensions-apiserver/BUILD index 98351c5348..90eddd2ef5 100644 --- a/vendor/k8s.io/apiextensions-apiserver/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_binary", @@ -11,16 +9,46 @@ load( go_binary( name = "apiextensions-apiserver", library = ":go_default_library", - tags = ["automanaged"], ) go_library( name = "go_default_library", srcs = ["main.go"], - tags = ["automanaged"], deps = [ + "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/examples/client-go:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/features:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/test/integration:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json b/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json index 7e7dcee3d2..44148bff82 100644 --- a/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json +++ b/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json @@ -1,6 +1,6 @@ { "ImportPath": "k8s.io/apiextensions-apiserver", - "GoVersion": "go1.8", + "GoVersion": "go1.9", "GodepVersion": "v79", "Packages": [ "./..." @@ -8,7 +8,6 @@ "Deps": [ { "ImportPath": "bitbucket.org/ww/goautoneg", - "Comment": "null-5", "Rev": "75cd24fc2f2c2a2088577d12123ddee5f54e0675" }, { @@ -17,90 +16,79 @@ }, { "ImportPath": "github.com/PuerkitoBio/purell", - "Comment": "v1.0.0", "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" }, { "ImportPath": "github.com/PuerkitoBio/urlesc", "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" }, + { + "ImportPath": "github.com/asaskevich/govalidator", + "Rev": "593d64559f7600f29581a3ee42177f5dbded27a9" + }, { "ImportPath": "github.com/beorn7/perks/quantile", "Rev": "3ac7bf7a47d159a033b107610db8a1b6575507a4" }, { "ImportPath": "github.com/coreos/etcd/auth/authpb", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/client", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/clientv3", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/mvcc/mvccpb", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/pkg/fileutil", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/pkg/pathutil", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/pkg/tlsutil", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/pkg/transport", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/etcd/pkg/types", - "Comment": "v3.1.5", - "Rev": "20490caaf0dcd96bb4a95e40625559def8ef5b04" + "Rev": "0520cb9304cb2385f7e72b8bc02d6e4d3257158a" }, { "ImportPath": "github.com/coreos/go-systemd/daemon", - "Comment": "v14", "Rev": "48702e0da86bd25e76cfef347e2adeb434a0d0a6" }, { "ImportPath": "github.com/coreos/go-systemd/journal", - "Comment": "v14", "Rev": "48702e0da86bd25e76cfef347e2adeb434a0d0a6" }, { "ImportPath": "github.com/coreos/pkg/capnslog", - "Comment": "v2-8-gfa29b1d", "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" }, { "ImportPath": "github.com/davecgh/go-spew/spew", - "Rev": "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d" + "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" }, { "ImportPath": "github.com/elazarl/go-bindata-assetfs", @@ -108,27 +96,32 @@ }, { "ImportPath": "github.com/emicklei/go-restful", - "Comment": "2.2.0-4-gff4f55a", "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" }, { "ImportPath": "github.com/emicklei/go-restful-swagger12", - "Comment": "1.0.1", "Rev": "dcef7f55730566d41eae5db10e7d6981829720f6" }, { "ImportPath": "github.com/emicklei/go-restful/log", - "Comment": "2.2.0-4-gff4f55a", "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" }, { "ImportPath": "github.com/evanphx/json-patch", - "Rev": "ba18e35c5c1b36ef6334cad706eb681153d2d379" + "Rev": "944e07253867aacae43c04b2e6a239005443f33a" }, { "ImportPath": "github.com/ghodss/yaml", "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" }, + { + "ImportPath": "github.com/go-openapi/analysis", + "Rev": "b44dc874b601d9e4e2f6e19140e794ba24bead3b" + }, + { + "ImportPath": "github.com/go-openapi/errors", + "Rev": "d24ebc2075bad502fac3a8ae27aa6dd58e1952dc" + }, { "ImportPath": "github.com/go-openapi/jsonpointer", "Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98" @@ -137,22 +130,36 @@ "ImportPath": "github.com/go-openapi/jsonreference", "Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" }, + { + "ImportPath": "github.com/go-openapi/loads", + "Rev": "18441dfa706d924a39a030ee2c3b1d8d81917b38" + }, + { + "ImportPath": "github.com/go-openapi/runtime", + "Rev": "11e322eeecc1032d5a0a96c566ed53f2b5c26e22" + }, { "ImportPath": "github.com/go-openapi/spec", "Rev": "6aced65f8501fe1217321abf0749d354824ba2ff" }, + { + "ImportPath": "github.com/go-openapi/strfmt", + "Rev": "d65c7fdb29eca313476e529628176fe17e58c488" + }, { "ImportPath": "github.com/go-openapi/swag", "Rev": "1d0bd113de87027671077d3c71eb3ac5d7dbba72" }, + { + "ImportPath": "github.com/go-openapi/validate", + "Rev": "deaf2c9013bc1a7f4c774662259a506ba874d80f" + }, { "ImportPath": "github.com/gogo/protobuf/proto", - "Comment": "v0.4-3-gc0656ed", "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" }, { "ImportPath": "github.com/gogo/protobuf/sortkeys", - "Comment": "v0.4-3-gc0656ed", "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" }, { @@ -183,40 +190,48 @@ "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" }, + { + "ImportPath": "github.com/google/btree", + "Rev": "7d79101e329e5a3adf994758c578dab82b90c017" + }, { "ImportPath": "github.com/google/gofuzz", "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" }, { "ImportPath": "github.com/googleapis/gnostic/OpenAPIv2", - "Rev": "68f4ded48ba9414dab2ae69b3f0d69971da73aa5" + "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" }, { "ImportPath": "github.com/googleapis/gnostic/compiler", - "Rev": "68f4ded48ba9414dab2ae69b3f0d69971da73aa5" + "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" }, { "ImportPath": "github.com/googleapis/gnostic/extensions", - "Rev": "68f4ded48ba9414dab2ae69b3f0d69971da73aa5" + "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" + }, + { + "ImportPath": "github.com/gregjones/httpcache", + "Rev": "787624de3eb7bd915c329cba748687a3b22666a6" + }, + { + "ImportPath": "github.com/gregjones/httpcache/diskcache", + "Rev": "787624de3eb7bd915c329cba748687a3b22666a6" }, { "ImportPath": "github.com/grpc-ecosystem/go-grpc-prometheus", - "Comment": "v1.1-4-g2500245", "Rev": "2500245aa6110c562d17020fb31a2c133d737799" }, { "ImportPath": "github.com/grpc-ecosystem/grpc-gateway/runtime", - "Comment": "v1.1.0-25-g84398b9", "Rev": "84398b94e188ee336f307779b57b3aa91af7063c" }, { "ImportPath": "github.com/grpc-ecosystem/grpc-gateway/runtime/internal", - "Comment": "v1.1.0-25-g84398b9", "Rev": "84398b94e188ee336f307779b57b3aa91af7063c" }, { "ImportPath": "github.com/grpc-ecosystem/grpc-gateway/utilities", - "Comment": "v1.1.0-25-g84398b9", "Rev": "84398b94e188ee336f307779b57b3aa91af7063c" }, { @@ -233,13 +248,16 @@ }, { "ImportPath": "github.com/imdario/mergo", - "Comment": "0.1.3-8-g6633656", "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" }, { "ImportPath": "github.com/inconshreveable/mousetrap", "Rev": "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" }, + { + "ImportPath": "github.com/json-iterator/go", + "Rev": "36b14963da70d11297d313183d7e6388c8510e1e" + }, { "ImportPath": "github.com/juju/ratelimit", "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" @@ -268,9 +286,12 @@ "ImportPath": "github.com/pborman/uuid", "Rev": "ca53cad383cad2479bbba7f7a1a05797ec1386e4" }, + { + "ImportPath": "github.com/peterbourgon/diskv", + "Rev": "5f041e8faa004a95c88a202771f4cc3e991971e6" + }, { "ImportPath": "github.com/pkg/errors", - "Comment": "v0.7.0-13-ga221380", "Rev": "a22138067af1c4942683050411a841ade67fe1eb" }, { @@ -279,12 +300,10 @@ }, { "ImportPath": "github.com/prometheus/client_golang/prometheus", - "Comment": "v0.8.0-83-ge7e9030", "Rev": "e7e903064f5e9eb5da98208bae10b475d4db0f8c" }, { "ImportPath": "github.com/prometheus/client_model/go", - "Comment": "model-0.0.2-12-gfa8ad6f", "Rev": "fa8ad6fec33561be4280a8f0514318c79d7f6cb6" }, { @@ -317,13 +336,11 @@ }, { "ImportPath": "github.com/stretchr/testify/assert", - "Comment": "v1.0-88-ge3a8ff8", - "Rev": "e3a8ff8ce36581f87a15341206f205b1da467059" + "Rev": "f6abca593680b2315d2075e0f5e2a9751e3f431a" }, { "ImportPath": "github.com/stretchr/testify/require", - "Comment": "v1.0-88-ge3a8ff8", - "Rev": "e3a8ff8ce36581f87a15341206f205b1da467059" + "Rev": "f6abca593680b2315d2075e0f5e2a9751e3f431a" }, { "ImportPath": "github.com/ugorji/go/codec", @@ -331,145 +348,166 @@ }, { "ImportPath": "golang.org/x/crypto/ssh/terminal", - "Rev": "d172538b2cfce0c13cee31e647d0367aa8cd2486" + "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" }, { "ImportPath": "golang.org/x/net/context", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/html", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/html/atom", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/http2", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/http2/hpack", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/idna", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/internal/timeseries", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/lex/httplex", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/trace", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/websocket", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/sys/unix", - "Rev": "8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9" + "Rev": "7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce" + }, + { + "ImportPath": "golang.org/x/sys/windows", + "Rev": "7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce" }, { "ImportPath": "golang.org/x/text/cases", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/internal", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/internal/tag", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/language", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/runes", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/secure/bidirule", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/secure/precis", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/transform", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/unicode/bidi", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/unicode/norm", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/width", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "google.golang.org/genproto/googleapis/rpc/status", + "Rev": "09f6ed296fc66555a25fe4ce95173148778dfa85" }, { "ImportPath": "google.golang.org/grpc", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/codes", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/credentials", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" + }, + { + "ImportPath": "google.golang.org/grpc/grpclb/grpc_lb_v1", + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/grpclog", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/internal", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" + }, + { + "ImportPath": "google.golang.org/grpc/keepalive", + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/metadata", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/naming", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/peer", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" + }, + { + "ImportPath": "google.golang.org/grpc/stats", + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" + }, + { + "ImportPath": "google.golang.org/grpc/status", + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" + }, + { + "ImportPath": "google.golang.org/grpc/tap", + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "google.golang.org/grpc/transport", - "Comment": "v1.0.4", - "Rev": "777daa17ff9b5daef1cfdf915088a2ada3332bf0" + "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5" }, { "ImportPath": "gopkg.in/inf.v0", - "Comment": "v0.9.0", "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" }, { "ImportPath": "gopkg.in/natefinch/lumberjack.v2", - "Comment": "v1.0-16-g20b71e5", "Rev": "20b71e5b60d756d3d2f80def009790325acc2b23" }, { @@ -478,1040 +516,1047 @@ }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" + }, + { + "ImportPath": "k8s.io/api/apps/v1beta2", + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { - "ImportPath": "k8s.io/api/autoscaling/v2alpha1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "ImportPath": "k8s.io/api/autoscaling/v2beta1", + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" + }, + { + "ImportPath": "k8s.io/api/batch/v1beta1", + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" + }, + { + "ImportPath": "k8s.io/api/rbac/v1", + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" + }, + { + "ImportPath": "k8s.io/api/scheduling/v1alpha1", + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "4fe9229aaa9d704f8a2a21cdcd50de2bbb6e1b57" + "Rev": "4df58c811fe2e65feb879227b2b245e4dc26e7ad" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/testing", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer", + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip", + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/validation", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/validation/path", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/validation", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" - }, - { - "ImportPath": "k8s.io/apimachinery/pkg/openapi", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/proxy", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/rand", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/uuid", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "a13245d02534abe88286859b547d041816f9a3f4" + "Rev": "5134afd2c0c91158afac0d8a28bd2177185a3bcc" }, { "ImportPath": "k8s.io/apiserver/pkg/admission", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/initializer", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver/install", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/install", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1alpha1", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" + }, + { + "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1beta1", + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/validation", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/audit", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/audit/policy", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/authenticator", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/authenticatorfactory", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/group", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/anonymous", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/bearertoken", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/headerrequest", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/union", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/websocket", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/x509", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/serviceaccount", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/token/tokenfile", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/user", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/authorizer", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/authorizerfactory", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/union", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/discovery", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/filters", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers/negotiation", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers/responsewriters", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/metrics", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/openapi", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/request", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/features", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/generic", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/generic/registry", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/rest", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/filters", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/healthz", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/httplog", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/mux", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" - }, - { - "ImportPath": "k8s.io/apiserver/pkg/server/openapi", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/options", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/routes", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/routes/data/swagger", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/server/storage", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/errors", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/metrics", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/util", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd3", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" + }, + { + "ImportPath": "k8s.io/apiserver/pkg/storage/etcd3/preflight", + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/names", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/storagebackend", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/storagebackend/factory", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/value", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/feature", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/flag", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/flushwriter", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/logs", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/trace", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" - }, - { - "ImportPath": "k8s.io/apiserver/pkg/util/trie", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/webhook", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/pkg/util/wsstream", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/audit/log", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/audit/webhook", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/authenticator/token/webhook", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/authorizer/webhook", - "Rev": "7eb7a42b3f4b3aaeccab8fdf89095bb6bea20695" + "Rev": "2279c12eff8d4d1dc65a104dac36483c1b59ff54" }, { "ImportPath": "k8s.io/client-go/discovery", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/discovery/fake", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/dynamic", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/apps", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/informers/apps/v1beta2", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { - "ImportPath": "k8s.io/client-go/informers/autoscaling/v2alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/batch", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/informers/batch/v1beta1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/batch/v2alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/certificates", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/certificates/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/core", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/core/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/extensions", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/extensions/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/internalinterfaces", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/networking", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/networking/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/policy", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/policy/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/rbac", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/informers/rbac/v1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/informers/scheduling", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/settings", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/settings/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/storage", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/scheme", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { - "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/listers/apps/v1beta2", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { - "ImportPath": "k8s.io/client-go/listers/autoscaling/v2alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/listers/batch/v1beta1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/batch/v2alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/certificates/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/core/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/extensions/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/networking/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/policy/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/listers/rbac/v1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/settings/v1alpha1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1beta1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" - }, - { - "ImportPath": "k8s.io/client-go/pkg/api/v1/ref", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/pkg/version", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/rest", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/rest/watch", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/testing", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/auth", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/cache", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/tools/metrics", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/tools/pager", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/client-go/tools/reference", + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/transport", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/util/cert", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/util/flowcontrol", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/util/homedir", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/util/integer", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" }, { "ImportPath": "k8s.io/client-go/util/workqueue", - "Comment": "v2.0.0-alpha.0-450-g1850dd6", - "Rev": "1850dd66e4213a26bd70d0b85fee4176d324b845" + "Rev": "584b13d350032197c1d1ab5507ab705dcbdf59d1" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/builder", + "Rev": "868f2f29720b192240e18284659231b440f9cda5" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/common", + "Rev": "868f2f29720b192240e18284659231b440f9cda5" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/handler", + "Rev": "868f2f29720b192240e18284659231b440f9cda5" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/util", + "Rev": "868f2f29720b192240e18284659231b440f9cda5" } ] } diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/BUILD b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/BUILD index 7cbc153755..48552335b4 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_binary", @@ -11,7 +9,6 @@ load( go_library( name = "go_default_library", srcs = ["main.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1:go_default_library", @@ -28,5 +25,22 @@ go_library( go_binary( name = "client-go", library = ":go_default_library", +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/examples/client-go/client:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/examples/client-go/controller:all-srcs", + ], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/BUILD b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/BUILD index d859582825..83e0a3210a 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,12 +8,13 @@ load( go_test( name = "go_default_test", - srcs = ["types_test.go"], + srcs = ["roundtrip_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", @@ -30,7 +29,6 @@ go_library( "types.go", "zz_generated.deepcopy.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", @@ -38,3 +36,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/roundtrip_test.go b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/roundtrip_test.go new file mode 100644 index 0000000000..7373c78b58 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/roundtrip_test.go @@ -0,0 +1,66 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "math/rand" + "testing" + + "github.com/google/gofuzz" + + "k8s.io/apimachinery/pkg/api/testing/fuzzer" + roundtrip "k8s.io/apimachinery/pkg/api/testing/roundtrip" + metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" +) + +var _ runtime.Object = &Example{} +var _ metav1.ObjectMetaAccessor = &Example{} + +var _ runtime.Object = &ExampleList{} +var _ metav1.ListMetaAccessor = &ExampleList{} + +func exampleFuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(obj *ExampleList, c fuzz.Continue) { + c.FuzzNoCustom(obj) + obj.Items = make([]Example, c.Intn(10)) + for i := range obj.Items { + c.Fuzz(&obj.Items[i]) + } + }, + } +} + +// TestRoundTrip tests that the third-party kinds can be marshaled and unmarshaled correctly to/from JSON +// without the loss of information. Moreover, deep copy is tested. +func TestRoundTrip(t *testing.T) { + scheme := runtime.NewScheme() + codecs := serializer.NewCodecFactory(scheme) + + AddToScheme(scheme) + + seed := rand.Int63() + fuzzerFuncs := fuzzer.MergeFuzzerFuncs(metafuzzer.Funcs, exampleFuzzerFuncs) + fuzzer := fuzzer.FuzzerFor(fuzzerFuncs, rand.NewSource(seed), codecs) + + roundtrip.RoundTripSpecificKindWithoutProtobuf(t, SchemeGroupVersion.WithKind("Example"), scheme, codecs, fuzzer, nil) + roundtrip.RoundTripSpecificKindWithoutProtobuf(t, SchemeGroupVersion.WithKind("ExampleList"), scheme, codecs, fuzzer, nil) +} diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types.go b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types.go index 32fea5a534..03ff949563 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types.go +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types.go @@ -22,6 +22,7 @@ import ( const ExampleResourcePlural = "examples" +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type Example struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` @@ -46,6 +47,7 @@ const ( ExampleStateProcessed ExampleState = "Processed" ) +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type ExampleList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types_test.go b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types_test.go deleted file mode 100644 index 38f612d890..0000000000 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/types_test.go +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES 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 ( - "math/rand" - "testing" - - "github.com/google/gofuzz" - - apitesting "k8s.io/apimachinery/pkg/api/testing" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/serializer" -) - -var _ runtime.Object = &Example{} -var _ metav1.ObjectMetaAccessor = &Example{} - -var _ runtime.Object = &ExampleList{} -var _ metav1.ListMetaAccessor = &ExampleList{} - -func exampleFuzzerFuncs(t apitesting.TestingCommon) []interface{} { - return []interface{}{ - func(obj *ExampleList, c fuzz.Continue) { - c.FuzzNoCustom(obj) - obj.Items = make([]Example, c.Intn(10)) - for i := range obj.Items { - c.Fuzz(&obj.Items[i]) - } - }, - } -} - -// TestRoundTrip tests that the third-party kinds can be marshaled and unmarshaled correctly to/from JSON -// without the loss of information. Moreover, deep copy is tested. -func TestRoundTrip(t *testing.T) { - scheme := runtime.NewScheme() - codecs := serializer.NewCodecFactory(scheme) - - AddToScheme(scheme) - - seed := rand.Int63() - fuzzerFuncs := apitesting.MergeFuzzerFuncs(t, apitesting.GenericFuzzerFuncs(t, codecs), exampleFuzzerFuncs(t)) - fuzzer := apitesting.FuzzerFor(fuzzerFuncs, rand.NewSource(seed)) - - apitesting.RoundTripSpecificKindWithoutProtobuf(t, SchemeGroupVersion.WithKind("Example"), scheme, codecs, fuzzer, nil) - apitesting.RoundTripSpecificKindWithoutProtobuf(t, SchemeGroupVersion.WithKind("ExampleList"), scheme, codecs, fuzzer, nil) -} diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/zz_generated.deepcopy.go index 7f13ff474b..e9f2a4c041 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1/zz_generated.deepcopy.go @@ -21,73 +21,126 @@ limitations under the License. package v1 import ( - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" reflect "reflect" ) // GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { return []conversion.GeneratedDeepCopyFunc{ - {Fn: DeepCopy_v1_Example, InType: reflect.TypeOf(&Example{})}, - {Fn: DeepCopy_v1_ExampleList, InType: reflect.TypeOf(&ExampleList{})}, - {Fn: DeepCopy_v1_ExampleSpec, InType: reflect.TypeOf(&ExampleSpec{})}, - {Fn: DeepCopy_v1_ExampleStatus, InType: reflect.TypeOf(&ExampleStatus{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Example).DeepCopyInto(out.(*Example)) + return nil + }, InType: reflect.TypeOf(&Example{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExampleList).DeepCopyInto(out.(*ExampleList)) + return nil + }, InType: reflect.TypeOf(&ExampleList{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExampleSpec).DeepCopyInto(out.(*ExampleSpec)) + return nil + }, InType: reflect.TypeOf(&ExampleSpec{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExampleStatus).DeepCopyInto(out.(*ExampleStatus)) + return nil + }, InType: reflect.TypeOf(&ExampleStatus{})}, } } -// DeepCopy_v1_Example is an autogenerated deepcopy function. -func DeepCopy_v1_Example(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Example) - out := out.(*Example) - *out = *in - if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { - return err - } else { - out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Example) DeepCopyInto(out *Example) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Example. +func (in *Example) DeepCopy() *Example { + if in == nil { return nil } + out := new(Example) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_ExampleList is an autogenerated deepcopy function. -func DeepCopy_v1_ExampleList(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ExampleList) - out := out.(*ExampleList) - *out = *in - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Example, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*Example) - } - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Example) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExampleList) DeepCopyInto(out *ExampleList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Example, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExampleList. +func (in *ExampleList) DeepCopy() *ExampleList { + if in == nil { return nil } + out := new(ExampleList) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_ExampleSpec is an autogenerated deepcopy function. -func DeepCopy_v1_ExampleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ExampleSpec) - out := out.(*ExampleSpec) - *out = *in +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExampleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_ExampleStatus is an autogenerated deepcopy function. -func DeepCopy_v1_ExampleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ExampleStatus) - out := out.(*ExampleStatus) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExampleSpec) DeepCopyInto(out *ExampleSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExampleSpec. +func (in *ExampleSpec) DeepCopy() *ExampleSpec { + if in == nil { + return nil + } + out := new(ExampleSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExampleStatus) DeepCopyInto(out *ExampleStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExampleStatus. +func (in *ExampleStatus) DeepCopy() *ExampleStatus { + if in == nil { return nil } + out := new(ExampleStatus) + in.DeepCopyInto(out) + return out } diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/client/BUILD b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/client/BUILD index 6d33b4c203..db64d4d574 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/client/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/client/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "client.go", "cr.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1:go_default_library", @@ -27,3 +24,16 @@ go_library( "//vendor/k8s.io/client-go/rest:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/BUILD b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/BUILD index 5083f8e9fb..aef3026fb8 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,7 +8,6 @@ load( go_library( name = "go_default_library", srcs = ["controller.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/examples/client-go/apis/cr/v1:go_default_library", @@ -20,3 +17,16 @@ go_library( "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/controller.go b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/controller.go index 4d9ad28468..d22cefebda 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/controller.go +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/controller/controller.go @@ -84,21 +84,15 @@ func (c *ExampleController) onAdd(obj interface{}) { fmt.Printf("[CONTROLLER] OnAdd %s\n", example.ObjectMeta.SelfLink) // NEVER modify objects from the store. It's a read-only, local cache. - // You can use exampleScheme.Copy() to make a deep copy of original object and modify this copy + // You can use DeepCopy() to make a deep copy of original object and modify this copy // Or create a copy manually for better performance - copyObj, err := c.ExampleScheme.Copy(example) - if err != nil { - fmt.Printf("ERROR creating a deep copy of example object: %v\n", err) - return - } - - exampleCopy := copyObj.(*crv1.Example) + exampleCopy := example.DeepCopy() exampleCopy.Status = crv1.ExampleStatus{ State: crv1.ExampleStateProcessed, Message: "Successfully processed by controller", } - err = c.ExampleClient.Put(). + err := c.ExampleClient.Put(). Name(example.ObjectMeta.Name). Namespace(example.ObjectMeta.Namespace). Resource(crv1.ExampleResourcePlural). diff --git a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/main.go b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/main.go index 2d50a83d52..a45ef81071 100644 --- a/vendor/k8s.io/apiextensions-apiserver/examples/client-go/main.go +++ b/vendor/k8s.io/apiextensions-apiserver/examples/client-go/main.go @@ -57,7 +57,10 @@ func main() { if err != nil && !apierrors.IsAlreadyExists(err) { panic(err) } - defer apiextensionsclientset.ApiextensionsV1beta1().CustomResourceDefinitions().Delete(crd.Name, nil) + + if crd != nil { + defer apiextensionsclientset.ApiextensionsV1beta1().CustomResourceDefinitions().Delete(crd.Name, nil) + } // make a new config for our extension's API group, using the first config as a baseline exampleClient, exampleScheme, err := exampleclient.NewClient(config) diff --git a/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh b/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh index fae9395fc4..efc52ecd88 100755 --- a/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh +++ b/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh @@ -18,9 +18,9 @@ set -o errexit set -o nounset set -o pipefail -KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../../../../.. -APIFEDERATOR_ROOT=$(dirname "${BASH_SOURCE}")/.. -source "${KUBE_ROOT}/hack/lib/init.sh" +SCRIPT_ROOT=$(dirname "${BASH_SOURCE}")/.. +SCRIPT_BASE=${SCRIPT_ROOT}/../.. +CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${SCRIPT_ROOT}; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo k8s.io/code-generator)} if LANG=C sed --help 2>&1 | grep -q GNU; then SED="sed" @@ -41,7 +41,7 @@ trap cleanup EXIT echo "Building client-gen" CLIENTGEN="${PWD}/client-gen-binary" -go build -o "${CLIENTGEN}" ./cmd/libs/go2idl/client-gen +go build -o "${CLIENTGEN}" ${CODEGEN_PKG}/cmd/client-gen PREFIX=k8s.io/apiextensions-apiserver/pkg/apis INPUT_BASE="--input-base ${PREFIX}" @@ -52,25 +52,25 @@ apiextensions/v1beta1 INPUT="--input ${INPUT_APIS[@]}" CLIENTSET_PATH="--clientset-path k8s.io/apiextensions-apiserver/pkg/client/clientset" -${CLIENTGEN} ${INPUT_BASE} ${INPUT} ${CLIENTSET_PATH} --output-base ${KUBE_ROOT}/vendor -${CLIENTGEN} --clientset-name="clientset" ${INPUT_BASE} --input apiextensions/v1beta1 ${CLIENTSET_PATH} --output-base ${KUBE_ROOT}/vendor +${CLIENTGEN} ${INPUT_BASE} ${INPUT} ${CLIENTSET_PATH} --output-base ${SCRIPT_BASE} +${CLIENTGEN} --clientset-name="clientset" ${INPUT_BASE} --input apiextensions/v1beta1 ${CLIENTSET_PATH} --output-base ${SCRIPT_BASE} echo "Building lister-gen" listergen="${PWD}/lister-gen" -go build -o "${listergen}" ./cmd/libs/go2idl/lister-gen +go build -o "${listergen}" ${CODEGEN_PKG}/cmd/lister-gen LISTER_INPUT="--input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions --input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" LISTER_PATH="--output-package k8s.io/apiextensions-apiserver/pkg/client/listers" -${listergen} ${LISTER_INPUT} ${LISTER_PATH} --output-base ${KUBE_ROOT}/vendor +${listergen} ${LISTER_INPUT} ${LISTER_PATH} --output-base ${SCRIPT_BASE} echo "Building informer-gen" informergen="${PWD}/informer-gen" -go build -o "${informergen}" ./cmd/libs/go2idl/informer-gen +go build -o "${informergen}" ${CODEGEN_PKG}/cmd/informer-gen ${informergen} \ - --output-base ${KUBE_ROOT}/vendor \ + --output-base ${SCRIPT_BASE} \ --input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions --input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1 \ --versioned-clientset-package k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset \ --internal-clientset-package k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset \ diff --git a/vendor/k8s.io/apiextensions-apiserver/hack/verify-codegen.sh b/vendor/k8s.io/apiextensions-apiserver/hack/verify-codegen.sh index 68c4e2c4d1..f5835c4253 100755 --- a/vendor/k8s.io/apiextensions-apiserver/hack/verify-codegen.sh +++ b/vendor/k8s.io/apiextensions-apiserver/hack/verify-codegen.sh @@ -18,13 +18,12 @@ set -o errexit set -o nounset set -o pipefail -KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../../../../.. -APIFEDERATOR_ROOT=$(dirname "${BASH_SOURCE}")/.. -source "${KUBE_ROOT}/hack/lib/init.sh" +SCRIPT_ROOT=$(dirname "${BASH_SOURCE}")/.. +SCRIPT_BASE=${SCRIPT_ROOT}/../.. -DIFFROOT="${APIFEDERATOR_ROOT}/pkg" -TMP_DIFFROOT="${APIFEDERATOR_ROOT}/_tmp/pkg" -_tmp="${APIFEDERATOR_ROOT}/_tmp" +DIFFROOT="${SCRIPT_ROOT}/pkg" +TMP_DIFFROOT="${SCRIPT_ROOT}/_tmp/pkg" +_tmp="${SCRIPT_ROOT}/_tmp" cleanup() { rm -rf "${_tmp}" @@ -36,7 +35,7 @@ cleanup mkdir -p "${TMP_DIFFROOT}" cp -a "${DIFFROOT}"/* "${TMP_DIFFROOT}" -"${APIFEDERATOR_ROOT}/hack/update-codegen.sh" +"${SCRIPT_ROOT}/hack/update-codegen.sh" echo "diffing ${DIFFROOT} against freshly generated codegen" ret=0 diff -Naupr "${DIFFROOT}" "${TMP_DIFFROOT}" || ret=$? diff --git a/vendor/k8s.io/apiextensions-apiserver/kubernetes-sha b/vendor/k8s.io/apiextensions-apiserver/kubernetes-sha deleted file mode 100644 index ab6ec83369..0000000000 --- a/vendor/k8s.io/apiextensions-apiserver/kubernetes-sha +++ /dev/null @@ -1 +0,0 @@ -578063b7a9a4ee9ee0d15378fb2b401171bbd90f diff --git a/vendor/k8s.io/apiextensions-apiserver/main.go b/vendor/k8s.io/apiextensions-apiserver/main.go index 5244c496f9..7723e65135 100644 --- a/vendor/k8s.io/apiextensions-apiserver/main.go +++ b/vendor/k8s.io/apiextensions-apiserver/main.go @@ -21,8 +21,10 @@ import ( "os" "runtime" + "github.com/golang/glog" + "k8s.io/apiextensions-apiserver/pkg/cmd/server" - "k8s.io/apimachinery/pkg/util/wait" + genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/util/logs" ) @@ -34,9 +36,10 @@ func main() { runtime.GOMAXPROCS(runtime.NumCPU()) } - cmd := server.NewCommandStartCustomResourceDefinitionsServer(os.Stdout, os.Stderr, wait.NeverStop) + stopCh := genericapiserver.SetupSignalHandler() + cmd := server.NewCommandStartCustomResourceDefinitionsServer(os.Stdout, os.Stderr, stopCh) cmd.Flags().AddGoFlagSet(flag.CommandLine) if err := cmd.Execute(); err != nil { - panic(err) + glog.Fatal(err) } } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD index c424286b11..a7b948801f 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -11,13 +9,14 @@ load( go_library( name = "go_default_library", srcs = [ + "deepcopy.go", "doc.go", "helpers.go", "register.go", "types.go", + "types_jsonschema.go", "zz_generated.deepcopy.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", @@ -30,6 +29,24 @@ go_test( name = "go_default_test", srcs = ["helpers_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/deepcopy.go new file mode 100644 index 0000000000..dd9680c36f --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/deepcopy.go @@ -0,0 +1,279 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apiextensions + +// TODO: Update this after a tag is created for interface fields in DeepCopy +func (in *JSONSchemaProps) DeepCopy() *JSONSchemaProps { + if in == nil { + return nil + } + out := new(JSONSchemaProps) + + *out = *in + + if in.Default != nil { + defaultJSON := JSON(deepCopyJSON(*(in.Default))) + out.Default = &(defaultJSON) + } else { + out.Default = nil + } + + if in.Example != nil { + exampleJSON := JSON(deepCopyJSON(*(in.Example))) + out.Example = &(exampleJSON) + } else { + out.Example = nil + } + + if in.Ref != nil { + in, out := &in.Ref, &out.Ref + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + + if in.Maximum != nil { + in, out := &in.Maximum, &out.Maximum + if *in == nil { + *out = nil + } else { + *out = new(float64) + **out = **in + } + } + + if in.Minimum != nil { + in, out := &in.Minimum, &out.Minimum + if *in == nil { + *out = nil + } else { + *out = new(float64) + **out = **in + } + } + + if in.MaxLength != nil { + in, out := &in.MaxLength, &out.MaxLength + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MinLength != nil { + in, out := &in.MinLength, &out.MinLength + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.MaxItems != nil { + in, out := &in.MaxItems, &out.MaxItems + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MinItems != nil { + in, out := &in.MinItems, &out.MinItems + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MultipleOf != nil { + in, out := &in.MultipleOf, &out.MultipleOf + if *in == nil { + *out = nil + } else { + *out = new(float64) + **out = **in + } + } + + if in.Enum != nil { + out.Enum = make([]JSON, len(in.Enum)) + for i := range in.Enum { + out.Enum[i] = deepCopyJSON(in.Enum[i]) + } + } + + if in.MaxProperties != nil { + in, out := &in.MaxProperties, &out.MaxProperties + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MinProperties != nil { + in, out := &in.MinProperties, &out.MinProperties + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.Required != nil { + in, out := &in.Required, &out.Required + *out = make([]string, len(*in)) + copy(*out, *in) + } + + if in.Items != nil { + in, out := &in.Items, &out.Items + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaPropsOrArray) + (*in).DeepCopyInto(*out) + } + } + + if in.AllOf != nil { + in, out := &in.AllOf, &out.AllOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + + if in.OneOf != nil { + in, out := &in.OneOf, &out.OneOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AnyOf != nil { + in, out := &in.AnyOf, &out.AnyOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + + if in.Not != nil { + in, out := &in.Not, &out.Not + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) + } + } + + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]JSONSchemaProps, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.AdditionalProperties != nil { + in, out := &in.AdditionalProperties, &out.AdditionalProperties + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaPropsOrBool) + (*in).DeepCopyInto(*out) + } + } + + if in.PatternProperties != nil { + in, out := &in.PatternProperties, &out.PatternProperties + *out = make(map[string]JSONSchemaProps, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.Dependencies != nil { + in, out := &in.Dependencies, &out.Dependencies + *out = make(JSONSchemaDependencies, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.AdditionalItems != nil { + in, out := &in.AdditionalItems, &out.AdditionalItems + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaPropsOrBool) + (*in).DeepCopyInto(*out) + } + } + + if in.Definitions != nil { + in, out := &in.Definitions, &out.Definitions + *out = make(JSONSchemaDefinitions, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.ExternalDocs != nil { + in, out := &in.ExternalDocs, &out.ExternalDocs + if *in == nil { + *out = nil + } else { + *out = new(ExternalDocumentation) + (*in).DeepCopyInto(*out) + } + } + + return out +} + +func deepCopyJSON(x interface{}) interface{} { + switch x := x.(type) { + case map[string]interface{}: + clone := make(map[string]interface{}, len(x)) + for k, v := range x { + clone[k] = deepCopyJSON(v) + } + return clone + case []interface{}: + clone := make([]interface{}, len(x)) + for i := range x { + clone[i] = deepCopyJSON(x[i]) + } + return clone + default: + return x + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/BUILD new file mode 100644 index 0000000000..8fe1450a9b --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["fuzzer.go"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/fuzzer.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/fuzzer.go new file mode 100644 index 0000000000..18a3329136 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer/fuzzer.go @@ -0,0 +1,111 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzzer + +import ( + "reflect" + "strings" + + "github.com/google/gofuzz" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// Funcs returns the fuzzer functions for the apiextensions apis. +func Funcs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(obj *apiextensions.CustomResourceDefinitionSpec, c fuzz.Continue) { + c.FuzzNoCustom(obj) + + // match our defaulter + if len(obj.Scope) == 0 { + obj.Scope = apiextensions.NamespaceScoped + } + if len(obj.Names.Singular) == 0 { + obj.Names.Singular = strings.ToLower(obj.Names.Kind) + } + if len(obj.Names.ListKind) == 0 && len(obj.Names.Kind) > 0 { + obj.Names.ListKind = obj.Names.Kind + "List" + } + }, + func(obj *apiextensions.JSONSchemaProps, c fuzz.Continue) { + // we cannot use c.FuzzNoCustom because of the interface{} fields. So let's loop with reflection. + vobj := reflect.ValueOf(obj).Elem() + tobj := reflect.TypeOf(obj).Elem() + for i := 0; i < tobj.NumField(); i++ { + field := tobj.Field(i) + switch field.Name { + case "Default", "Enum", "Example", "Ref": + continue + default: + isValue := true + switch field.Type.Kind() { + case reflect.Interface, reflect.Map, reflect.Slice, reflect.Ptr: + isValue = false + } + if isValue || c.Intn(5) == 0 { + c.Fuzz(vobj.Field(i).Addr().Interface()) + } + } + } + if c.RandBool() { + validJSON := apiextensions.JSON(`{"some": {"json": "test"}, "string": 42}`) + obj.Default = &validJSON + } + if c.RandBool() { + obj.Enum = []apiextensions.JSON{c.Float64(), c.RandString(), c.RandBool()} + } + if c.RandBool() { + validJSON := apiextensions.JSON(`"foobarbaz"`) + obj.Example = &validJSON + } + if c.RandBool() { + validRef := "validRef" + obj.Ref = &validRef + } + }, + func(obj *apiextensions.JSONSchemaPropsOrBool, c fuzz.Continue) { + if c.RandBool() { + obj.Schema = &apiextensions.JSONSchemaProps{} + c.Fuzz(obj.Schema) + } else { + obj.Allows = c.RandBool() + } + }, + func(obj *apiextensions.JSONSchemaPropsOrArray, c fuzz.Continue) { + // disallow both Schema and JSONSchemas to be nil. + if c.RandBool() { + obj.Schema = &apiextensions.JSONSchemaProps{} + c.Fuzz(obj.Schema) + } else { + obj.JSONSchemas = make([]apiextensions.JSONSchemaProps, c.Intn(3)+1) + for i := range obj.JSONSchemas { + c.Fuzz(&obj.JSONSchemas[i]) + } + } + }, + func(obj *apiextensions.JSONSchemaPropsOrStringArray, c fuzz.Continue) { + if c.RandBool() { + obj.Schema = &apiextensions.JSONSchemaProps{} + c.Fuzz(obj.Schema) + } else { + c.Fuzz(&obj.Property) + } + }, + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/BUILD index be3f73993e..33c068fd73 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,20 +8,17 @@ load( go_test( name = "go_default_test", - srcs = ["install_test.go"], + srcs = ["roundtrip_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ - "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", ], ) go_library( name = "go_default_library", srcs = ["install.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", @@ -33,3 +28,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install.go index 80157c8003..25cee84d2d 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install.go @@ -32,7 +32,6 @@ func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *r GroupName: apiextensions.GroupName, RootScopedKinds: sets.NewString("CustomResourceDefinition"), VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, - ImportPrefix: "k8s.io/apiextensions-apiserver/pkg/apis/apiextension", AddInternalObjectsToScheme: apiextensions.AddToScheme, }, announced.VersionToSchemeFunc{ diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install_test.go deleted file mode 100644 index 351787932e..0000000000 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install_test.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES 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 - -import ( - "strings" - "testing" - - "github.com/google/gofuzz" - - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" - apitesting "k8s.io/apimachinery/pkg/api/testing" -) - -func TestRoundTripTypes(t *testing.T) { - apitesting.RoundTripTestForAPIGroup(t, Install, apitesting.MergeFuzzerFuncs(t, - fuzzerFuncs(), - )) -} - -func fuzzerFuncs() []interface{} { - return []interface{}{ - func(obj *apiextensions.CustomResourceDefinitionSpec, c fuzz.Continue) { - c.FuzzNoCustom(obj) - - // match our defaulter - if len(obj.Scope) == 0 { - obj.Scope = apiextensions.NamespaceScoped - } - if len(obj.Names.Singular) == 0 { - obj.Names.Singular = strings.ToLower(obj.Names.Kind) - } - if len(obj.Names.ListKind) == 0 && len(obj.Names.Kind) > 0 { - obj.Names.ListKind = obj.Names.Kind + "List" - } - }, - } -} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go new file mode 100644 index 0000000000..353e81287c --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go @@ -0,0 +1,28 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 + +import ( + "testing" + + apiextensionsfuzzer "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer" + "k8s.io/apimachinery/pkg/api/testing/roundtrip" +) + +func TestRoundTrip(t *testing.T) { + roundtrip.RoundTripTestForAPIGroup(t, Install, apiextensionsfuzzer.Funcs) +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go index 55c3bfad46..fba9c90bc2 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go @@ -26,9 +26,10 @@ type CustomResourceDefinitionSpec struct { Version string // Names are the names used to describe this custom resource Names CustomResourceDefinitionNames - // Scope indicates whether this resource is cluster or namespace scoped. Default is namespaced Scope ResourceScope + // Validation describes the validation methods for CustomResources + Validation *CustomResourceValidation } // CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition @@ -113,8 +114,9 @@ type CustomResourceDefinitionStatus struct { // a CustomResourceDefinition const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.io" -// +genclient=true -// +nonNamespaced=true +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format // <.spec.name>.<.spec.group>. @@ -128,6 +130,8 @@ type CustomResourceDefinition struct { Status CustomResourceDefinitionStatus } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // CustomResourceDefinitionList is a list of CustomResourceDefinition objects. type CustomResourceDefinitionList struct { metav1.TypeMeta @@ -136,3 +140,9 @@ type CustomResourceDefinitionList struct { // Items individual CustomResourceDefinitions Items []CustomResourceDefinition } + +// CustomResourceValidation is a list of validation methods for CustomResources. +type CustomResourceValidation struct { + // OpenAPIV3Schema is the OpenAPI v3 schema to be validated against. + OpenAPIV3Schema *JSONSchemaProps +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go new file mode 100644 index 0000000000..79f34e8bf6 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go @@ -0,0 +1,96 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apiextensions + +// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). +type JSONSchemaProps struct { + ID string + Schema JSONSchemaURL + Ref *string + Description string + Type string + Format string + Title string + Default *JSON + Maximum *float64 + ExclusiveMaximum bool + Minimum *float64 + ExclusiveMinimum bool + MaxLength *int64 + MinLength *int64 + Pattern string + MaxItems *int64 + MinItems *int64 + UniqueItems bool + MultipleOf *float64 + Enum []JSON + MaxProperties *int64 + MinProperties *int64 + Required []string + Items *JSONSchemaPropsOrArray + AllOf []JSONSchemaProps + OneOf []JSONSchemaProps + AnyOf []JSONSchemaProps + Not *JSONSchemaProps + Properties map[string]JSONSchemaProps + AdditionalProperties *JSONSchemaPropsOrBool + PatternProperties map[string]JSONSchemaProps + Dependencies JSONSchemaDependencies + AdditionalItems *JSONSchemaPropsOrBool + Definitions JSONSchemaDefinitions + ExternalDocs *ExternalDocumentation + Example *JSON +} + +// JSON represents any valid JSON value. +// These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil. +type JSON interface{} + +// JSONSchemaURL represents a schema url. +type JSONSchemaURL string + +// JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps +// or an array of JSONSchemaProps. Mainly here for serialization purposes. +type JSONSchemaPropsOrArray struct { + Schema *JSONSchemaProps + JSONSchemas []JSONSchemaProps +} + +// JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. +// Defaults to true for the boolean property. +type JSONSchemaPropsOrBool struct { + Allows bool + Schema *JSONSchemaProps +} + +// JSONSchemaDependencies represent a dependencies property. +type JSONSchemaDependencies map[string]JSONSchemaPropsOrStringArray + +// JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array. +type JSONSchemaPropsOrStringArray struct { + Schema *JSONSchemaProps + Property []string +} + +// JSONSchemaDefinitions contains the models explicitly defined in this spec. +type JSONSchemaDefinitions map[string]JSONSchemaProps + +// ExternalDocumentation allows referencing an external resource for extended documentation. +type ExternalDocumentation struct { + Description string + URL string +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD index 9a0c5380de..93a07cfe7a 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD @@ -1,31 +1,67 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", + "go_test", ) go_library( name = "go_default_library", srcs = [ + "conversion.go", + "deepcopy.go", "defaults.go", "doc.go", "generated.pb.go", + "marshal.go", "register.go", "types.go", + "types_jsonschema.go", "zz_generated.conversion.go", "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) + +go_test( + name = "go_default_test", + srcs = [ + "conversion_test.go", + "marshal_test.go", + ], + library = ":go_default_library", + deps = [ + "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", ], ) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion.go new file mode 100644 index 0000000000..f9951009dc --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion.go @@ -0,0 +1,73 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/json" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps, + Convert_apiextensions_JSON_To_v1beta1_JSON, + Convert_v1beta1_JSON_To_apiextensions_JSON, + ) + if err != nil { + return err + } + return nil +} + +func Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(in *apiextensions.JSONSchemaProps, out *JSONSchemaProps, s conversion.Scope) error { + if err := autoConvert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(in, out, s); err != nil { + return err + } + if in.Default != nil && *(in.Default) == nil { + out.Default = nil + } + if in.Example != nil && *(in.Example) == nil { + out.Example = nil + } + return nil +} + +func Convert_apiextensions_JSON_To_v1beta1_JSON(in *apiextensions.JSON, out *JSON, s conversion.Scope) error { + raw, err := json.Marshal(*in) + if err != nil { + return err + } + out.Raw = raw + return nil +} + +func Convert_v1beta1_JSON_To_apiextensions_JSON(in *JSON, out *apiextensions.JSON, s conversion.Scope) error { + if in != nil { + var i interface{} + if err := json.Unmarshal(in.Raw, &i); err != nil { + return err + } + *out = i + } else { + out = nil + } + return nil +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion_test.go new file mode 100644 index 0000000000..a697dd9e3a --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion_test.go @@ -0,0 +1,113 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" +) + +func TestJSONConversion(t *testing.T) { + nilJSON := apiextensions.JSON(nil) + nullJSON := apiextensions.JSON("null") + stringJSON := apiextensions.JSON("foo") + boolJSON := apiextensions.JSON(true) + sliceJSON := apiextensions.JSON([]string{"foo", "bar", "baz"}) + + testCases := map[string]struct { + input *apiextensions.JSONSchemaProps + expected *JSONSchemaProps + }{ + "nil": { + input: &apiextensions.JSONSchemaProps{ + Default: nil, + }, + expected: &JSONSchemaProps{}, + }, + "aliased nil": { + input: &apiextensions.JSONSchemaProps{ + Default: &nilJSON, + }, + expected: &JSONSchemaProps{}, + }, + "null": { + input: &apiextensions.JSONSchemaProps{ + Default: &nullJSON, + }, + expected: &JSONSchemaProps{ + Default: &JSON{ + Raw: []byte(`"null"`), + }, + }, + }, + "string": { + input: &apiextensions.JSONSchemaProps{ + Default: &stringJSON, + }, + expected: &JSONSchemaProps{ + Default: &JSON{ + Raw: []byte(`"foo"`), + }, + }, + }, + "bool": { + input: &apiextensions.JSONSchemaProps{ + Default: &boolJSON, + }, + expected: &JSONSchemaProps{ + Default: &JSON{ + Raw: []byte(`true`), + }, + }, + }, + "slice": { + input: &apiextensions.JSONSchemaProps{ + Default: &sliceJSON, + }, + expected: &JSONSchemaProps{ + Default: &JSON{ + Raw: []byte(`["foo","bar","baz"]`), + }, + }, + }, + } + + scheme := runtime.NewScheme() + + // add internal and external types + if err := apiextensions.AddToScheme(scheme); err != nil { + t.Fatal(err) + } + if err := AddToScheme(scheme); err != nil { + t.Fatal(err) + } + + for k, tc := range testCases { + external := &JSONSchemaProps{} + if err := scheme.Convert(tc.input, external, nil); err != nil { + t.Errorf("%s: unexpected error: %v", k, err) + } + + if !reflect.DeepEqual(external, tc.expected) { + t.Errorf("%s: expected\n\t%#v, got \n\t%#v", k, tc.expected, external) + } + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go new file mode 100644 index 0000000000..903773ae21 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go @@ -0,0 +1,257 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 + +// TODO: Update this after a tag is created for interface fields in DeepCopy +func (in *JSONSchemaProps) DeepCopy() *JSONSchemaProps { + if in == nil { + return nil + } + out := new(JSONSchemaProps) + *out = *in + + if in.Ref != nil { + in, out := &in.Ref, &out.Ref + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } + } + + if in.Maximum != nil { + in, out := &in.Maximum, &out.Maximum + if *in == nil { + *out = nil + } else { + *out = new(float64) + **out = **in + } + } + + if in.Minimum != nil { + in, out := &in.Minimum, &out.Minimum + if *in == nil { + *out = nil + } else { + *out = new(float64) + **out = **in + } + } + + if in.MaxLength != nil { + in, out := &in.MaxLength, &out.MaxLength + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MinLength != nil { + in, out := &in.MinLength, &out.MinLength + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.MaxItems != nil { + in, out := &in.MaxItems, &out.MaxItems + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MinItems != nil { + in, out := &in.MinItems, &out.MinItems + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MultipleOf != nil { + in, out := &in.MultipleOf, &out.MultipleOf + if *in == nil { + *out = nil + } else { + *out = new(float64) + **out = **in + } + } + + if in.MaxProperties != nil { + in, out := &in.MaxProperties, &out.MaxProperties + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.MinProperties != nil { + in, out := &in.MinProperties, &out.MinProperties + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + + if in.Required != nil { + in, out := &in.Required, &out.Required + *out = make([]string, len(*in)) + copy(*out, *in) + } + + if in.Items != nil { + in, out := &in.Items, &out.Items + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaPropsOrArray) + (*in).DeepCopyInto(*out) + } + } + + if in.AllOf != nil { + in, out := &in.AllOf, &out.AllOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + + if in.OneOf != nil { + in, out := &in.OneOf, &out.OneOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AnyOf != nil { + in, out := &in.AnyOf, &out.AnyOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + + if in.Not != nil { + in, out := &in.Not, &out.Not + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) + } + } + + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]JSONSchemaProps, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.AdditionalProperties != nil { + in, out := &in.AdditionalProperties, &out.AdditionalProperties + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaPropsOrBool) + (*in).DeepCopyInto(*out) + } + } + + if in.PatternProperties != nil { + in, out := &in.PatternProperties, &out.PatternProperties + *out = make(map[string]JSONSchemaProps, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.Dependencies != nil { + in, out := &in.Dependencies, &out.Dependencies + *out = make(JSONSchemaDependencies, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.AdditionalItems != nil { + in, out := &in.AdditionalItems, &out.AdditionalItems + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaPropsOrBool) + (*in).DeepCopyInto(*out) + } + } + + if in.Definitions != nil { + in, out := &in.Definitions, &out.Definitions + *out = make(JSONSchemaDefinitions, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + + if in.ExternalDocs != nil { + in, out := &in.ExternalDocs, &out.ExternalDocs + if *in == nil { + *out = nil + } else { + *out = new(ExternalDocumentation) + (*in).DeepCopyInto(*out) + } + } + + return out +} + +func deepCopyJSON(x interface{}) interface{} { + switch x := x.(type) { + case map[string]interface{}: + clone := make(map[string]interface{}, len(x)) + for k, v := range x { + clone[k] = deepCopyJSON(v) + } + return clone + case []interface{}: + clone := make([]interface{}, len(x)) + for i := range x { + clone[i] = deepCopyJSON(x[i]) + } + return clone + default: + return x + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go index 3976988bf8..67af169a13 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go @@ -15,9 +15,10 @@ limitations under the License. */ // +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions +// +k8s:conversion-gen=k8s.io/apiextensions-apiserver/pkg/apis/apiextensions // +k8s:defaulter-gen=TypeMeta // Package v1beta1 is the v1beta1 version of the API. // +groupName=apiextensions.k8s.io +// +k8s:openapi-gen=true package v1beta1 // import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go index 18eecdb507..e9b16e6db8 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go @@ -31,6 +31,13 @@ limitations under the License. CustomResourceDefinitionNames CustomResourceDefinitionSpec CustomResourceDefinitionStatus + CustomResourceValidation + ExternalDocumentation + JSON + JSONSchemaProps + JSONSchemaPropsOrArray + JSONSchemaPropsOrBool + JSONSchemaPropsOrStringArray */ package v1beta1 @@ -38,6 +45,8 @@ import proto "github.com/gogo/protobuf/proto" import fmt "fmt" import math "math" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + import strings "strings" import reflect "reflect" @@ -90,6 +99,38 @@ func (*CustomResourceDefinitionStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } +func (m *CustomResourceValidation) Reset() { *m = CustomResourceValidation{} } +func (*CustomResourceValidation) ProtoMessage() {} +func (*CustomResourceValidation) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{6} +} + +func (m *ExternalDocumentation) Reset() { *m = ExternalDocumentation{} } +func (*ExternalDocumentation) ProtoMessage() {} +func (*ExternalDocumentation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *JSON) Reset() { *m = JSON{} } +func (*JSON) ProtoMessage() {} +func (*JSON) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *JSONSchemaProps) Reset() { *m = JSONSchemaProps{} } +func (*JSONSchemaProps) ProtoMessage() {} +func (*JSONSchemaProps) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *JSONSchemaPropsOrArray) Reset() { *m = JSONSchemaPropsOrArray{} } +func (*JSONSchemaPropsOrArray) ProtoMessage() {} +func (*JSONSchemaPropsOrArray) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *JSONSchemaPropsOrBool) Reset() { *m = JSONSchemaPropsOrBool{} } +func (*JSONSchemaPropsOrBool) ProtoMessage() {} +func (*JSONSchemaPropsOrBool) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *JSONSchemaPropsOrStringArray) Reset() { *m = JSONSchemaPropsOrStringArray{} } +func (*JSONSchemaPropsOrStringArray) ProtoMessage() {} +func (*JSONSchemaPropsOrStringArray) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{12} +} + func init() { proto.RegisterType((*CustomResourceDefinition)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition") proto.RegisterType((*CustomResourceDefinitionCondition)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition") @@ -97,6 +138,13 @@ func init() { proto.RegisterType((*CustomResourceDefinitionNames)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames") proto.RegisterType((*CustomResourceDefinitionSpec)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec") proto.RegisterType((*CustomResourceDefinitionStatus)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus") + proto.RegisterType((*CustomResourceValidation)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation") + proto.RegisterType((*ExternalDocumentation)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation") + proto.RegisterType((*JSON)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON") + proto.RegisterType((*JSONSchemaProps)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps") + proto.RegisterType((*JSONSchemaPropsOrArray)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray") + proto.RegisterType((*JSONSchemaPropsOrBool)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool") + proto.RegisterType((*JSONSchemaPropsOrStringArray)(nil), "k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray") } func (m *CustomResourceDefinition) Marshal() (dAtA []byte, err error) { size := m.Size() @@ -304,6 +352,16 @@ func (m *CustomResourceDefinitionSpec) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Scope))) i += copy(dAtA[i:], m.Scope) + if m.Validation != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Validation.Size())) + n7, err := m.Validation.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } return i, nil } @@ -337,259 +395,3319 @@ func (m *CustomResourceDefinitionStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AcceptedNames.Size())) - n7, err := m.AcceptedNames.MarshalTo(dAtA[i:]) + n8, err := m.AcceptedNames.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n8 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++ +func (m *CustomResourceValidation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return offset + 1 + return dAtA[:n], nil } -func (m *CustomResourceDefinition) Size() (n int) { + +func (m *CustomResourceValidation) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i 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 + if m.OpenAPIV3Schema != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.OpenAPIV3Schema.Size())) + n9, err := m.OpenAPIV3Schema.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + return i, nil } -func (m *CustomResourceDefinitionCondition) 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.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 *ExternalDocumentation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil } -func (m *CustomResourceDefinitionList) Size() (n int) { +func (m *ExternalDocumentation) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i 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)) - } + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Description))) + i += copy(dAtA[i:], m.Description) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.URL))) + i += copy(dAtA[i:], m.URL) + return i, nil +} + +func (m *JSON) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *CustomResourceDefinitionNames) Size() (n int) { +func (m *JSON) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i var l int _ = l - l = len(m.Plural) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Singular) - n += 1 + l + sovGenerated(uint64(l)) - if len(m.ShortNames) > 0 { - for _, s := range m.ShortNames { - l = len(s) - n += 1 + l + sovGenerated(uint64(l)) - } + if m.Raw != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Raw))) + i += copy(dAtA[i:], m.Raw) } - l = len(m.Kind) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.ListKind) - n += 1 + l + sovGenerated(uint64(l)) - return n + return i, nil } -func (m *CustomResourceDefinitionSpec) 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 = m.Names.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Scope) - n += 1 + l + sovGenerated(uint64(l)) - return n +func (m *JSONSchemaProps) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil } -func (m *CustomResourceDefinitionStatus) Size() (n int) { +func (m *JSONSchemaProps) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i var l int _ = l - if len(m.Conditions) > 0 { - for _, e := range m.Conditions { - l = e.Size() - n += 1 + l + sovGenerated(uint64(l)) - } + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ID))) + i += copy(dAtA[i:], m.ID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Schema))) + i += copy(dAtA[i:], m.Schema) + if m.Ref != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Ref))) + i += copy(dAtA[i:], *m.Ref) } - l = m.AcceptedNames.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func sovGenerated(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Description))) + i += copy(dAtA[i:], m.Description) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Format))) + i += copy(dAtA[i:], m.Format) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Title))) + i += copy(dAtA[i:], m.Title) + if m.Default != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Default.Size())) + n10, err := m.Default.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n10 } - return n -} -func sozGenerated(x uint64) (n int) { - return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (this *CustomResourceDefinition) String() string { - if this == nil { - return "nil" + if m.Maximum != nil { + dAtA[i] = 0x49 + i++ + i = encodeFixed64Generated(dAtA, i, uint64(math.Float64bits(float64(*m.Maximum)))) } - s := strings.Join([]string{`&CustomResourceDefinition{`, - `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CustomResourceDefinitionSpec", "CustomResourceDefinitionSpec", 1), `&`, ``, 1) + `,`, - `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CustomResourceDefinitionStatus", "CustomResourceDefinitionStatus", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s -} -func (this *CustomResourceDefinitionCondition) String() string { - if this == nil { - return "nil" + dAtA[i] = 0x50 + i++ + if m.ExclusiveMaximum { + dAtA[i] = 1 + } else { + dAtA[i] = 0 } - s := strings.Join([]string{`&CustomResourceDefinitionCondition{`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, - `Status:` + fmt.Sprintf("%v", this.Status) + `,`, - `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, - `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, - `Message:` + fmt.Sprintf("%v", this.Message) + `,`, - `}`, - }, "") - return s -} -func (this *CustomResourceDefinitionList) String() string { - if this == nil { - return "nil" + i++ + if m.Minimum != nil { + dAtA[i] = 0x59 + i++ + i = encodeFixed64Generated(dAtA, i, uint64(math.Float64bits(float64(*m.Minimum)))) } - s := strings.Join([]string{`&CustomResourceDefinitionList{`, - `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, - `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CustomResourceDefinition", "CustomResourceDefinition", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s -} -func (this *CustomResourceDefinitionNames) String() string { - if this == nil { - return "nil" + dAtA[i] = 0x60 + i++ + if m.ExclusiveMinimum { + dAtA[i] = 1 + } else { + dAtA[i] = 0 } - s := strings.Join([]string{`&CustomResourceDefinitionNames{`, - `Plural:` + fmt.Sprintf("%v", this.Plural) + `,`, - `Singular:` + fmt.Sprintf("%v", this.Singular) + `,`, - `ShortNames:` + fmt.Sprintf("%v", this.ShortNames) + `,`, - `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, - `ListKind:` + fmt.Sprintf("%v", this.ListKind) + `,`, - `}`, - }, "") - return s -} -func (this *CustomResourceDefinitionSpec) String() string { - if this == nil { - return "nil" + i++ + if m.MaxLength != nil { + dAtA[i] = 0x68 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MaxLength)) } - s := strings.Join([]string{`&CustomResourceDefinitionSpec{`, - `Group:` + fmt.Sprintf("%v", this.Group) + `,`, - `Version:` + fmt.Sprintf("%v", this.Version) + `,`, - `Names:` + strings.Replace(strings.Replace(this.Names.String(), "CustomResourceDefinitionNames", "CustomResourceDefinitionNames", 1), `&`, ``, 1) + `,`, - `Scope:` + fmt.Sprintf("%v", this.Scope) + `,`, - `}`, - }, "") - return s -} -func (this *CustomResourceDefinitionStatus) String() string { - if this == nil { - return "nil" + if m.MinLength != nil { + dAtA[i] = 0x70 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MinLength)) } - s := strings.Join([]string{`&CustomResourceDefinitionStatus{`, - `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "CustomResourceDefinitionCondition", "CustomResourceDefinitionCondition", 1), `&`, ``, 1) + `,`, - `AcceptedNames:` + strings.Replace(strings.Replace(this.AcceptedNames.String(), "CustomResourceDefinitionNames", "CustomResourceDefinitionNames", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s -} -func valueToStringGenerated(v interface{}) string { - rv := reflect.ValueOf(v) - if rv.IsNil() { - return "nil" + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pattern))) + i += copy(dAtA[i:], m.Pattern) + if m.MaxItems != nil { + dAtA[i] = 0x80 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MaxItems)) } - pv := reflect.Indirect(rv).Interface() - return fmt.Sprintf("*%v", pv) -} -func (m *CustomResourceDefinition) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + if m.MinItems != nil { + dAtA[i] = 0x88 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MinItems)) + } + dAtA[i] = 0x90 + i++ + dAtA[i] = 0x1 + i++ + if m.UniqueItems { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.MultipleOf != nil { + dAtA[i] = 0x99 + i++ + dAtA[i] = 0x1 + i++ + i = encodeFixed64Generated(dAtA, i, uint64(math.Float64bits(float64(*m.MultipleOf)))) + } + if len(m.Enum) > 0 { + for _, msg := range m.Enum { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } - if iNdEx >= l { - return io.ErrUnexpectedEOF + i += n + } + } + if m.MaxProperties != nil { + dAtA[i] = 0xa8 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MaxProperties)) + } + if m.MinProperties != nil { + dAtA[i] = 0xb0 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MinProperties)) + } + if len(m.Required) > 0 { + for _, s := range m.Required { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x1 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if m.Items != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Items.Size())) + n11, err := m.Items.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if len(m.AllOf) > 0 { + for _, msg := range m.AllOf { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CustomResourceDefinition: wiretype end group for non-group") + } + if len(m.OneOf) > 0 { + for _, msg := range m.OneOf { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n } - if fieldNum <= 0 { - return fmt.Errorf("proto: CustomResourceDefinition: illegal tag %d (wire type %d)", fieldNum, wire) + } + if len(m.AnyOf) > 0 { + for _, msg := range m.AnyOf { + dAtA[i] = 0xda + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n } - switch fieldNum { - case 1: + } + if m.Not != nil { + dAtA[i] = 0xe2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Not.Size())) + n12, err := m.Not.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if len(m.Properties) > 0 { + keysForProperties := make([]string, 0, len(m.Properties)) + for k := range m.Properties { + keysForProperties = append(keysForProperties, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForProperties) + for _, k := range keysForProperties { + dAtA[i] = 0xea + i++ + dAtA[i] = 0x1 + i++ + v := m.Properties[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n13, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + } + if m.AdditionalProperties != nil { + dAtA[i] = 0xf2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AdditionalProperties.Size())) + n14, err := m.AdditionalProperties.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + if len(m.PatternProperties) > 0 { + keysForPatternProperties := make([]string, 0, len(m.PatternProperties)) + for k := range m.PatternProperties { + keysForPatternProperties = append(keysForPatternProperties, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForPatternProperties) + for _, k := range keysForPatternProperties { + dAtA[i] = 0xfa + i++ + dAtA[i] = 0x1 + i++ + v := m.PatternProperties[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n15, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + } + } + if len(m.Dependencies) > 0 { + keysForDependencies := make([]string, 0, len(m.Dependencies)) + for k := range m.Dependencies { + keysForDependencies = append(keysForDependencies, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDependencies) + for _, k := range keysForDependencies { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x2 + i++ + v := m.Dependencies[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n16, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + } + if m.AdditionalItems != nil { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AdditionalItems.Size())) + n17, err := m.AdditionalItems.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + if len(m.Definitions) > 0 { + keysForDefinitions := make([]string, 0, len(m.Definitions)) + for k := range m.Definitions { + keysForDefinitions = append(keysForDefinitions, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefinitions) + for _, k := range keysForDefinitions { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x2 + i++ + v := m.Definitions[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 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())) + n18, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + } + if m.ExternalDocs != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ExternalDocs.Size())) + n19, err := m.ExternalDocs.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + } + if m.Example != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x2 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Example.Size())) + n20, err := m.Example.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *JSONSchemaPropsOrArray) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JSONSchemaPropsOrArray) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Schema != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Schema.Size())) + n21, err := m.Schema.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + if len(m.JSONSchemas) > 0 { + for _, msg := range m.JSONSchemas { + 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 *JSONSchemaPropsOrBool) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JSONSchemaPropsOrBool) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Allows { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.Schema != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Schema.Size())) + n22, err := m.Schema.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } + return i, nil +} + +func (m *JSONSchemaPropsOrStringArray) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JSONSchemaPropsOrStringArray) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Schema != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Schema.Size())) + n23, err := m.Schema.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + } + if len(m.Property) > 0 { + for _, s := range m.Property { + 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 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 *CustomResourceDefinition) 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 *CustomResourceDefinitionCondition) 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.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 *CustomResourceDefinitionList) 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 *CustomResourceDefinitionNames) Size() (n int) { + var l int + _ = l + l = len(m.Plural) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Singular) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ShortNames) > 0 { + for _, s := range m.ShortNames { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ListKind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomResourceDefinitionSpec) 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 = m.Names.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Scope) + n += 1 + l + sovGenerated(uint64(l)) + if m.Validation != nil { + l = m.Validation.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *CustomResourceDefinitionStatus) 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)) + } + } + l = m.AcceptedNames.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomResourceValidation) Size() (n int) { + var l int + _ = l + if m.OpenAPIV3Schema != nil { + l = m.OpenAPIV3Schema.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ExternalDocumentation) Size() (n int) { + var l int + _ = l + l = len(m.Description) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.URL) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JSON) 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 *JSONSchemaProps) Size() (n int) { + var l int + _ = l + l = len(m.ID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Schema) + n += 1 + l + sovGenerated(uint64(l)) + if m.Ref != nil { + l = len(*m.Ref) + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Description) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Format) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Title) + n += 1 + l + sovGenerated(uint64(l)) + if m.Default != nil { + l = m.Default.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Maximum != nil { + n += 9 + } + n += 2 + if m.Minimum != nil { + n += 9 + } + n += 2 + if m.MaxLength != nil { + n += 1 + sovGenerated(uint64(*m.MaxLength)) + } + if m.MinLength != nil { + n += 1 + sovGenerated(uint64(*m.MinLength)) + } + l = len(m.Pattern) + n += 1 + l + sovGenerated(uint64(l)) + if m.MaxItems != nil { + n += 2 + sovGenerated(uint64(*m.MaxItems)) + } + if m.MinItems != nil { + n += 2 + sovGenerated(uint64(*m.MinItems)) + } + n += 3 + if m.MultipleOf != nil { + n += 10 + } + if len(m.Enum) > 0 { + for _, e := range m.Enum { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if m.MaxProperties != nil { + n += 2 + sovGenerated(uint64(*m.MaxProperties)) + } + if m.MinProperties != nil { + n += 2 + sovGenerated(uint64(*m.MinProperties)) + } + if len(m.Required) > 0 { + for _, s := range m.Required { + l = len(s) + n += 2 + l + sovGenerated(uint64(l)) + } + } + if m.Items != nil { + l = m.Items.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if len(m.AllOf) > 0 { + for _, e := range m.AllOf { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if len(m.OneOf) > 0 { + for _, e := range m.OneOf { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if len(m.AnyOf) > 0 { + for _, e := range m.AnyOf { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if m.Not != nil { + l = m.Not.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if len(m.Properties) > 0 { + for k, v := range m.Properties { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } + if m.AdditionalProperties != nil { + l = m.AdditionalProperties.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if len(m.PatternProperties) > 0 { + for k, v := range m.PatternProperties { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Dependencies) > 0 { + for k, v := range m.Dependencies { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } + if m.AdditionalItems != nil { + l = m.AdditionalItems.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if len(m.Definitions) > 0 { + for k, v := range m.Definitions { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) + } + } + if m.ExternalDocs != nil { + l = m.ExternalDocs.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Example != nil { + l = m.Example.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *JSONSchemaPropsOrArray) Size() (n int) { + var l int + _ = l + if m.Schema != nil { + l = m.Schema.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.JSONSchemas) > 0 { + for _, e := range m.JSONSchemas { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *JSONSchemaPropsOrBool) Size() (n int) { + var l int + _ = l + n += 2 + if m.Schema != nil { + l = m.Schema.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *JSONSchemaPropsOrStringArray) Size() (n int) { + var l int + _ = l + if m.Schema != nil { + l = m.Schema.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.Property) > 0 { + for _, s := range m.Property { + 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 *CustomResourceDefinition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceDefinition{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CustomResourceDefinitionSpec", "CustomResourceDefinitionSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CustomResourceDefinitionStatus", "CustomResourceDefinitionStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomResourceDefinitionCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceDefinitionCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *CustomResourceDefinitionList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceDefinitionList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CustomResourceDefinition", "CustomResourceDefinition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomResourceDefinitionNames) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceDefinitionNames{`, + `Plural:` + fmt.Sprintf("%v", this.Plural) + `,`, + `Singular:` + fmt.Sprintf("%v", this.Singular) + `,`, + `ShortNames:` + fmt.Sprintf("%v", this.ShortNames) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `ListKind:` + fmt.Sprintf("%v", this.ListKind) + `,`, + `}`, + }, "") + return s +} +func (this *CustomResourceDefinitionSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceDefinitionSpec{`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `Names:` + strings.Replace(strings.Replace(this.Names.String(), "CustomResourceDefinitionNames", "CustomResourceDefinitionNames", 1), `&`, ``, 1) + `,`, + `Scope:` + fmt.Sprintf("%v", this.Scope) + `,`, + `Validation:` + strings.Replace(fmt.Sprintf("%v", this.Validation), "CustomResourceValidation", "CustomResourceValidation", 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomResourceDefinitionStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceDefinitionStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "CustomResourceDefinitionCondition", "CustomResourceDefinitionCondition", 1), `&`, ``, 1) + `,`, + `AcceptedNames:` + strings.Replace(strings.Replace(this.AcceptedNames.String(), "CustomResourceDefinitionNames", "CustomResourceDefinitionNames", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomResourceValidation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomResourceValidation{`, + `OpenAPIV3Schema:` + strings.Replace(fmt.Sprintf("%v", this.OpenAPIV3Schema), "JSONSchemaProps", "JSONSchemaProps", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalDocumentation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalDocumentation{`, + `Description:` + fmt.Sprintf("%v", this.Description) + `,`, + `URL:` + fmt.Sprintf("%v", this.URL) + `,`, + `}`, + }, "") + return s +} +func (this *JSON) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JSON{`, + `Raw:` + valueToStringGenerated(this.Raw) + `,`, + `}`, + }, "") + return s +} +func (this *JSONSchemaProps) String() string { + if this == nil { + return "nil" + } + keysForProperties := make([]string, 0, len(this.Properties)) + for k := range this.Properties { + keysForProperties = append(keysForProperties, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForProperties) + mapStringForProperties := "map[string]JSONSchemaProps{" + for _, k := range keysForProperties { + mapStringForProperties += fmt.Sprintf("%v: %v,", k, this.Properties[k]) + } + mapStringForProperties += "}" + keysForPatternProperties := make([]string, 0, len(this.PatternProperties)) + for k := range this.PatternProperties { + keysForPatternProperties = append(keysForPatternProperties, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForPatternProperties) + mapStringForPatternProperties := "map[string]JSONSchemaProps{" + for _, k := range keysForPatternProperties { + mapStringForPatternProperties += fmt.Sprintf("%v: %v,", k, this.PatternProperties[k]) + } + mapStringForPatternProperties += "}" + keysForDependencies := make([]string, 0, len(this.Dependencies)) + for k := range this.Dependencies { + keysForDependencies = append(keysForDependencies, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDependencies) + mapStringForDependencies := "JSONSchemaDependencies{" + for _, k := range keysForDependencies { + mapStringForDependencies += fmt.Sprintf("%v: %v,", k, this.Dependencies[k]) + } + mapStringForDependencies += "}" + keysForDefinitions := make([]string, 0, len(this.Definitions)) + for k := range this.Definitions { + keysForDefinitions = append(keysForDefinitions, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefinitions) + mapStringForDefinitions := "JSONSchemaDefinitions{" + for _, k := range keysForDefinitions { + mapStringForDefinitions += fmt.Sprintf("%v: %v,", k, this.Definitions[k]) + } + mapStringForDefinitions += "}" + s := strings.Join([]string{`&JSONSchemaProps{`, + `ID:` + fmt.Sprintf("%v", this.ID) + `,`, + `Schema:` + fmt.Sprintf("%v", this.Schema) + `,`, + `Ref:` + valueToStringGenerated(this.Ref) + `,`, + `Description:` + fmt.Sprintf("%v", this.Description) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Format:` + fmt.Sprintf("%v", this.Format) + `,`, + `Title:` + fmt.Sprintf("%v", this.Title) + `,`, + `Default:` + strings.Replace(fmt.Sprintf("%v", this.Default), "JSON", "JSON", 1) + `,`, + `Maximum:` + valueToStringGenerated(this.Maximum) + `,`, + `ExclusiveMaximum:` + fmt.Sprintf("%v", this.ExclusiveMaximum) + `,`, + `Minimum:` + valueToStringGenerated(this.Minimum) + `,`, + `ExclusiveMinimum:` + fmt.Sprintf("%v", this.ExclusiveMinimum) + `,`, + `MaxLength:` + valueToStringGenerated(this.MaxLength) + `,`, + `MinLength:` + valueToStringGenerated(this.MinLength) + `,`, + `Pattern:` + fmt.Sprintf("%v", this.Pattern) + `,`, + `MaxItems:` + valueToStringGenerated(this.MaxItems) + `,`, + `MinItems:` + valueToStringGenerated(this.MinItems) + `,`, + `UniqueItems:` + fmt.Sprintf("%v", this.UniqueItems) + `,`, + `MultipleOf:` + valueToStringGenerated(this.MultipleOf) + `,`, + `Enum:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Enum), "JSON", "JSON", 1), `&`, ``, 1) + `,`, + `MaxProperties:` + valueToStringGenerated(this.MaxProperties) + `,`, + `MinProperties:` + valueToStringGenerated(this.MinProperties) + `,`, + `Required:` + fmt.Sprintf("%v", this.Required) + `,`, + `Items:` + strings.Replace(fmt.Sprintf("%v", this.Items), "JSONSchemaPropsOrArray", "JSONSchemaPropsOrArray", 1) + `,`, + `AllOf:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.AllOf), "JSONSchemaProps", "JSONSchemaProps", 1), `&`, ``, 1) + `,`, + `OneOf:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.OneOf), "JSONSchemaProps", "JSONSchemaProps", 1), `&`, ``, 1) + `,`, + `AnyOf:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.AnyOf), "JSONSchemaProps", "JSONSchemaProps", 1), `&`, ``, 1) + `,`, + `Not:` + strings.Replace(fmt.Sprintf("%v", this.Not), "JSONSchemaProps", "JSONSchemaProps", 1) + `,`, + `Properties:` + mapStringForProperties + `,`, + `AdditionalProperties:` + strings.Replace(fmt.Sprintf("%v", this.AdditionalProperties), "JSONSchemaPropsOrBool", "JSONSchemaPropsOrBool", 1) + `,`, + `PatternProperties:` + mapStringForPatternProperties + `,`, + `Dependencies:` + mapStringForDependencies + `,`, + `AdditionalItems:` + strings.Replace(fmt.Sprintf("%v", this.AdditionalItems), "JSONSchemaPropsOrBool", "JSONSchemaPropsOrBool", 1) + `,`, + `Definitions:` + mapStringForDefinitions + `,`, + `ExternalDocs:` + strings.Replace(fmt.Sprintf("%v", this.ExternalDocs), "ExternalDocumentation", "ExternalDocumentation", 1) + `,`, + `Example:` + strings.Replace(fmt.Sprintf("%v", this.Example), "JSON", "JSON", 1) + `,`, + `}`, + }, "") + return s +} +func (this *JSONSchemaPropsOrArray) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JSONSchemaPropsOrArray{`, + `Schema:` + strings.Replace(fmt.Sprintf("%v", this.Schema), "JSONSchemaProps", "JSONSchemaProps", 1) + `,`, + `JSONSchemas:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.JSONSchemas), "JSONSchemaProps", "JSONSchemaProps", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JSONSchemaPropsOrBool) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JSONSchemaPropsOrBool{`, + `Allows:` + fmt.Sprintf("%v", this.Allows) + `,`, + `Schema:` + strings.Replace(fmt.Sprintf("%v", this.Schema), "JSONSchemaProps", "JSONSchemaProps", 1) + `,`, + `}`, + }, "") + return s +} +func (this *JSONSchemaPropsOrStringArray) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JSONSchemaPropsOrStringArray{`, + `Schema:` + strings.Replace(fmt.Sprintf("%v", this.Schema), "JSONSchemaProps", "JSONSchemaProps", 1) + `,`, + `Property:` + fmt.Sprintf("%v", this.Property) + `,`, + `}`, + }, "") + 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 *CustomResourceDefinition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceDefinition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceDefinition: 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 *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceDefinitionCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceDefinitionCondition: 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 = CustomResourceDefinitionConditionType(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 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 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 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 *CustomResourceDefinitionList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceDefinitionList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceDefinitionList: 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, CustomResourceDefinition{}) + 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 *CustomResourceDefinitionNames) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceDefinitionNames: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceDefinitionNames: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Plural", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Plural = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Singular", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Singular = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ShortNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ShortNames = append(m.ShortNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + 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 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListKind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ListKind = 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 *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceDefinitionSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceDefinitionSpec: 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 Names", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Names.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scope = ResourceScope(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Validation == nil { + m.Validation = &CustomResourceValidation{} + } + if err := m.Validation.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 *CustomResourceDefinitionStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceDefinitionStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceDefinitionStatus: 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, CustomResourceDefinitionCondition{}) + 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 AcceptedNames", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.AcceptedNames.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 *CustomResourceValidation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomResourceValidation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomResourceValidation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OpenAPIV3Schema", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.OpenAPIV3Schema == nil { + m.OpenAPIV3Schema = &JSONSchemaProps{} + } + if err := m.OpenAPIV3Schema.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 *ExternalDocumentation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalDocumentation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalDocumentation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field URL", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.URL = 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 *JSON) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JSON: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JSON: 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 *JSONSchemaProps) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JSONSchemaProps: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JSONSchemaProps: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Schema = JSONSchemaURL(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(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.Ref = &s + iNdEx = postIndex + case 4: + 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 5: + 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 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Format", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Format = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + 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 + } + if m.Default == nil { + m.Default = &JSON{} + } + if err := m.Default.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Maximum", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + iNdEx += 8 + v = uint64(dAtA[iNdEx-8]) + v |= uint64(dAtA[iNdEx-7]) << 8 + v |= uint64(dAtA[iNdEx-6]) << 16 + v |= uint64(dAtA[iNdEx-5]) << 24 + v |= uint64(dAtA[iNdEx-4]) << 32 + v |= uint64(dAtA[iNdEx-3]) << 40 + v |= uint64(dAtA[iNdEx-2]) << 48 + v |= uint64(dAtA[iNdEx-1]) << 56 + v2 := float64(math.Float64frombits(v)) + m.Maximum = &v2 + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExclusiveMaximum", 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.ExclusiveMaximum = bool(v != 0) + case 11: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Minimum", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + iNdEx += 8 + v = uint64(dAtA[iNdEx-8]) + v |= uint64(dAtA[iNdEx-7]) << 8 + v |= uint64(dAtA[iNdEx-6]) << 16 + v |= uint64(dAtA[iNdEx-5]) << 24 + v |= uint64(dAtA[iNdEx-4]) << 32 + v |= uint64(dAtA[iNdEx-3]) << 40 + v |= uint64(dAtA[iNdEx-2]) << 48 + v |= uint64(dAtA[iNdEx-1]) << 56 + v2 := float64(math.Float64frombits(v)) + m.Minimum = &v2 + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExclusiveMinimum", 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.ExclusiveMinimum = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxLength", 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.MaxLength = &v + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinLength", 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.MinLength = &v + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pattern", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pattern = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxItems", 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.MaxItems = &v + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinItems", 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.MinItems = &v + case 18: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UniqueItems", 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.UniqueItems = bool(v != 0) + case 19: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field MultipleOf", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + iNdEx += 8 + v = uint64(dAtA[iNdEx-8]) + v |= uint64(dAtA[iNdEx-7]) << 8 + v |= uint64(dAtA[iNdEx-6]) << 16 + v |= uint64(dAtA[iNdEx-5]) << 24 + v |= uint64(dAtA[iNdEx-4]) << 32 + v |= uint64(dAtA[iNdEx-3]) << 40 + v |= uint64(dAtA[iNdEx-2]) << 48 + v |= uint64(dAtA[iNdEx-1]) << 56 + v2 := float64(math.Float64frombits(v)) + m.MultipleOf = &v2 + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Enum", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.Enum = append(m.Enum, JSON{}) + if err := m.Enum[len(m.Enum)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxProperties", 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.MaxProperties = &v + case 22: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinProperties", 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.MinProperties = &v + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Required", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Required = append(m.Required, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 24: + 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 + } + if m.Items == nil { + m.Items = &JSONSchemaPropsOrArray{} + } + if err := m.Items.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllOf", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.AllOf = append(m.AllOf, JSONSchemaProps{}) + if err := m.AllOf[len(m.AllOf)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OneOf", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.OneOf = append(m.OneOf, JSONSchemaProps{}) + if err := m.OneOf[len(m.OneOf)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 27: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AnyOf", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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.AnyOf = append(m.AnyOf, JSONSchemaProps{}) + if err := m.AnyOf[len(m.AnyOf)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 28: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Not", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + 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.Not == nil { + m.Not = &JSONSchemaProps{} + } + if err := m.Not.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 29: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Properties", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + 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 + if m.Properties == nil { + m.Properties = make(map[string]JSONSchemaProps) + } + if iNdEx < postIndex { + 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 := &JSONSchemaProps{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Properties[mapkey] = *mapvalue + } else { + var mapvalue JSONSchemaProps + m.Properties[mapkey] = mapvalue + } + iNdEx = postIndex + case 30: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AdditionalProperties", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -613,13 +3731,16 @@ func (m *CustomResourceDefinition) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.AdditionalProperties == nil { + m.AdditionalProperties = &JSONSchemaPropsOrBool{} + } + if err := m.AdditionalProperties.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 31: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PatternProperties", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -643,15 +3764,7 @@ func (m *CustomResourceDefinition) Unmarshal(dAtA []byte) error { 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 + var keykey uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -661,77 +3774,96 @@ func (m *CustomResourceDefinition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + keykey |= (uint64(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 + 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 + } } - if skippy < 0 { + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.PatternProperties == nil { + m.PatternProperties = make(map[string]JSONSchemaProps) } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + if iNdEx < postIndex { + 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 := &JSONSchemaProps{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.PatternProperties[mapkey] = *mapvalue + } else { + var mapvalue JSONSchemaProps + m.PatternProperties[mapkey] = mapvalue } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CustomResourceDefinitionCondition: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CustomResourceDefinitionCondition: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 32: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Dependencies", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -741,26 +3873,34 @@ func (m *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.Type = CustomResourceDefinitionConditionType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + 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 stringLen uint64 + var stringLenmapkey uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -770,24 +3910,79 @@ func (m *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen - if postIndex > l { + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } - m.Status = ConditionStatus(dAtA[iNdEx:postIndex]) + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Dependencies == nil { + m.Dependencies = make(JSONSchemaDependencies) + } + if iNdEx < postIndex { + 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 := &JSONSchemaPropsOrStringArray{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Dependencies[mapkey] = *mapvalue + } else { + var mapvalue JSONSchemaPropsOrStringArray + m.Dependencies[mapkey] = mapvalue + } iNdEx = postIndex - case 3: + case 33: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AdditionalItems", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -811,15 +4006,18 @@ func (m *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.AdditionalItems == nil { + m.AdditionalItems = &JSONSchemaPropsOrBool{} + } + if err := m.AdditionalItems.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 34: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Definitions", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -829,26 +4027,19 @@ func (m *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen 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 Message", wireType) - } - var stringLen uint64 + var keykey uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -858,74 +4049,94 @@ func (m *CustomResourceDefinitionCondition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + keykey |= (uint64(b) & 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 + 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 + } } - if skippy < 0 { + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CustomResourceDefinitionList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Definitions == nil { + m.Definitions = make(JSONSchemaDefinitions) } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + if iNdEx < postIndex { + 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 := &JSONSchemaProps{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Definitions[mapkey] = *mapvalue + } else { + var mapvalue JSONSchemaProps + m.Definitions[mapkey] = mapvalue } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CustomResourceDefinitionList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CustomResourceDefinitionList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 35: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ExternalDocs", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -949,13 +4160,16 @@ func (m *CustomResourceDefinitionList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ExternalDocs == nil { + m.ExternalDocs = &ExternalDocumentation{} + } + if err := m.ExternalDocs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 36: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Example", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -979,8 +4193,10 @@ func (m *CustomResourceDefinitionList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, CustomResourceDefinition{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Example == nil { + m.Example = &JSON{} + } + if err := m.Example.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1005,7 +4221,7 @@ func (m *CustomResourceDefinitionList) Unmarshal(dAtA []byte) error { } return nil } -func (m *CustomResourceDefinitionNames) Unmarshal(dAtA []byte) error { +func (m *JSONSchemaPropsOrArray) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1028,46 +4244,17 @@ func (m *CustomResourceDefinitionNames) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CustomResourceDefinitionNames: wiretype end group for non-group") + return fmt.Errorf("proto: JSONSchemaPropsOrArray: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CustomResourceDefinitionNames: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: JSONSchemaPropsOrArray: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Plural", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Plural = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Singular", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -1077,55 +4264,30 @@ func (m *CustomResourceDefinitionNames) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.Singular = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ShortNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated + if m.Schema == nil { + m.Schema = &JSONSchemaProps{} } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.ShortNames = append(m.ShortNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 4: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field JSONSchemas", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -1135,49 +4297,22 @@ func (m *CustomResourceDefinitionNames) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.Kind = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListKind", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF + m.JSONSchemas = append(m.JSONSchemas, JSONSchemaProps{}) + if err := m.JSONSchemas[len(m.JSONSchemas)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.ListKind = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1200,7 +4335,7 @@ func (m *CustomResourceDefinitionNames) Unmarshal(dAtA []byte) error { } return nil } -func (m *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error { +func (m *JSONSchemaPropsOrBool) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1223,17 +4358,17 @@ func (m *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CustomResourceDefinitionSpec: wiretype end group for non-group") + return fmt.Errorf("proto: JSONSchemaPropsOrBool: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CustomResourceDefinitionSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: JSONSchemaPropsOrBool: 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) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Allows", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -1243,53 +4378,15 @@ func (m *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + v |= (int(b) & 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 + m.Allows = bool(v != 0) 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 Names", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1313,38 +4410,12 @@ func (m *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Names.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated + if m.Schema == nil { + m.Schema = &JSONSchemaProps{} } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Scope = ResourceScope(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1367,7 +4438,7 @@ func (m *CustomResourceDefinitionSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *CustomResourceDefinitionStatus) Unmarshal(dAtA []byte) error { +func (m *JSONSchemaPropsOrStringArray) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1390,15 +4461,15 @@ func (m *CustomResourceDefinitionStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CustomResourceDefinitionStatus: wiretype end group for non-group") + return fmt.Errorf("proto: JSONSchemaPropsOrStringArray: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CustomResourceDefinitionStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: JSONSchemaPropsOrStringArray: 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) + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1422,16 +4493,18 @@ func (m *CustomResourceDefinitionStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Conditions = append(m.Conditions, CustomResourceDefinitionCondition{}) - if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Schema == nil { + m.Schema = &JSONSchemaProps{} + } + if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AcceptedNames", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Property", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -1441,21 +4514,20 @@ func (m *CustomResourceDefinitionStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AcceptedNames.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Property = append(m.Property, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -1588,58 +4660,125 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 845 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x8b, 0x23, 0x45, - 0x14, 0x4e, 0xe7, 0xc7, 0xcc, 0x58, 0xeb, 0xb8, 0x52, 0x20, 0x34, 0x83, 0x76, 0x66, 0x23, 0xca, - 0x2a, 0x4e, 0xb7, 0xb3, 0xae, 0xa2, 0x07, 0x0f, 0x66, 0x05, 0x59, 0xdc, 0x55, 0xa9, 0x59, 0x14, - 0x74, 0xc5, 0xad, 0x74, 0xde, 0x74, 0xca, 0xa4, 0xab, 0x9a, 0xaa, 0xea, 0xe0, 0x80, 0x82, 0x22, - 0xde, 0x3d, 0x78, 0xf1, 0x3f, 0xf0, 0x4f, 0x99, 0xe3, 0x82, 0x97, 0x3d, 0x05, 0x27, 0xfe, 0x0b, - 0x7a, 0xc9, 0x49, 0xaa, 0xba, 0x52, 0x49, 0x8c, 0x71, 0x07, 0x24, 0xde, 0xa6, 0xdf, 0x8f, 0xef, - 0xfb, 0xde, 0xf7, 0x5e, 0x6a, 0xd0, 0xe9, 0xf0, 0x4d, 0x15, 0x33, 0x91, 0x0c, 0xcb, 0x1e, 0x48, - 0x0e, 0x1a, 0x54, 0x32, 0x06, 0xde, 0x17, 0x32, 0x71, 0x09, 0x5a, 0x30, 0xf8, 0x4a, 0x03, 0x57, - 0x4c, 0x70, 0x75, 0x44, 0x0b, 0xa6, 0x40, 0x8e, 0x41, 0x26, 0xc5, 0x30, 0x33, 0x39, 0xb5, 0x5a, - 0x90, 0x8c, 0x8f, 0x7b, 0xa0, 0xe9, 0x71, 0x92, 0x01, 0x07, 0x49, 0x35, 0xf4, 0xe3, 0x42, 0x0a, - 0x2d, 0xf0, 0xdb, 0x15, 0x5c, 0xbc, 0x52, 0xfd, 0x85, 0x87, 0x8b, 0x8b, 0x61, 0x66, 0x72, 0x6a, - 0xb5, 0x20, 0x76, 0x70, 0x07, 0x47, 0x19, 0xd3, 0x83, 0xb2, 0x17, 0xa7, 0x22, 0x4f, 0x32, 0x91, - 0x89, 0xc4, 0xa2, 0xf6, 0xca, 0x53, 0xfb, 0x65, 0x3f, 0xec, 0x5f, 0x15, 0xdb, 0xc1, 0xcd, 0x85, - 0xf8, 0x9c, 0xa6, 0x03, 0xc6, 0x41, 0x9e, 0x2d, 0x14, 0xe7, 0xa0, 0x69, 0x32, 0x5e, 0xd3, 0x78, - 0x90, 0x6c, 0xea, 0x92, 0x25, 0xd7, 0x2c, 0x87, 0xb5, 0x86, 0x37, 0x1e, 0xd7, 0xa0, 0xd2, 0x01, - 0xe4, 0x74, 0xad, 0xef, 0xb5, 0x4d, 0x7d, 0xa5, 0x66, 0xa3, 0x84, 0x71, 0xad, 0xb4, 0xfc, 0x7b, - 0x53, 0xe7, 0xfb, 0x06, 0x0a, 0x6f, 0x95, 0x4a, 0x8b, 0x9c, 0x80, 0x12, 0xa5, 0x4c, 0xe1, 0x5d, - 0x38, 0x65, 0x9c, 0x69, 0x26, 0x38, 0x7e, 0x80, 0xf6, 0xcc, 0x54, 0x7d, 0xaa, 0x69, 0x18, 0x1c, - 0x06, 0xd7, 0xaf, 0xdc, 0x78, 0x35, 0x5e, 0x38, 0xee, 0x49, 0x16, 0x36, 0x9b, 0xea, 0x78, 0x7c, - 0x1c, 0x7f, 0xd8, 0xfb, 0x12, 0x52, 0x7d, 0x17, 0x34, 0xed, 0xe2, 0xf3, 0x49, 0xbb, 0x36, 0x9d, - 0xb4, 0xd1, 0x22, 0x46, 0x3c, 0x2a, 0xfe, 0x06, 0x35, 0x55, 0x01, 0x69, 0x58, 0xb7, 0xe8, 0x9f, - 0xc5, 0xff, 0x69, 0x9f, 0xf1, 0xa6, 0x41, 0x4e, 0x0a, 0x48, 0xbb, 0x4f, 0x3a, 0x21, 0x4d, 0xf3, - 0x45, 0x2c, 0x2d, 0xfe, 0x21, 0x40, 0x3b, 0x4a, 0x53, 0x5d, 0xaa, 0xb0, 0x61, 0x15, 0x7c, 0xbe, - 0x2d, 0x05, 0x96, 0xa4, 0xfb, 0x94, 0xd3, 0xb0, 0x53, 0x7d, 0x13, 0x47, 0xde, 0xf9, 0xa3, 0x8e, - 0xae, 0x6d, 0x6a, 0xbd, 0x25, 0x78, 0xbf, 0x5a, 0xc7, 0x6d, 0xd4, 0xd4, 0x67, 0x05, 0xd8, 0x55, - 0x3c, 0xd1, 0x7d, 0x7d, 0x3e, 0xcf, 0xbd, 0xb3, 0x02, 0x66, 0x93, 0xf6, 0x0b, 0x8f, 0x05, 0x30, - 0x85, 0xc4, 0x42, 0xe0, 0xb7, 0xfc, 0xdc, 0x75, 0x0b, 0x76, 0x6d, 0x55, 0xd8, 0x6c, 0xd2, 0xbe, - 0xea, 0xdb, 0x56, 0xb5, 0xe2, 0x31, 0xc2, 0x23, 0xaa, 0xf4, 0x3d, 0x49, 0xb9, 0xaa, 0x60, 0x59, - 0x0e, 0xce, 0xbe, 0x97, 0x2f, 0x77, 0x1e, 0xa6, 0xa3, 0x7b, 0xe0, 0x28, 0xf1, 0x9d, 0x35, 0x34, - 0xf2, 0x0f, 0x0c, 0xf8, 0x45, 0xb4, 0x23, 0x81, 0x2a, 0xc1, 0xc3, 0xa6, 0x95, 0xec, 0xbd, 0x24, - 0x36, 0x4a, 0x5c, 0x16, 0xbf, 0x84, 0x76, 0x73, 0x50, 0x8a, 0x66, 0x10, 0xb6, 0x6c, 0xe1, 0x55, - 0x57, 0xb8, 0x7b, 0xb7, 0x0a, 0x93, 0x79, 0xbe, 0x33, 0x0b, 0xd0, 0xb3, 0x9b, 0x5c, 0xbb, 0xc3, - 0x94, 0xc6, 0xf7, 0xd7, 0x7e, 0x00, 0xf1, 0xe5, 0x26, 0x34, 0xdd, 0xf6, 0xfc, 0x9f, 0x76, 0xe4, - 0x7b, 0xf3, 0xc8, 0xd2, 0xf1, 0x7f, 0x8d, 0x5a, 0x4c, 0x43, 0x6e, 0x76, 0xd0, 0xb8, 0x7e, 0xe5, - 0xc6, 0x27, 0x5b, 0xba, 0xbd, 0xee, 0xbe, 0xd3, 0xd0, 0xba, 0x6d, 0xd8, 0x48, 0x45, 0xda, 0xf9, - 0x33, 0x40, 0xcf, 0x6d, 0x6a, 0xf9, 0x80, 0xe6, 0xa0, 0x8c, 0xe3, 0xc5, 0xa8, 0x94, 0x74, 0xe4, - 0x2e, 0xce, 0x3b, 0xfe, 0x91, 0x8d, 0x12, 0x97, 0xc5, 0xaf, 0xa0, 0x3d, 0xc5, 0x78, 0x56, 0x8e, - 0xa8, 0x74, 0xe7, 0xe4, 0xa7, 0x3e, 0x71, 0x71, 0xe2, 0x2b, 0x70, 0x8c, 0x90, 0x1a, 0x08, 0xa9, - 0x2d, 0x47, 0xd8, 0x38, 0x6c, 0x18, 0x64, 0xf3, 0x40, 0x9c, 0xf8, 0x28, 0x59, 0xaa, 0xc0, 0x87, - 0xa8, 0x39, 0x64, 0xbc, 0xef, 0xb6, 0xee, 0x7f, 0xc5, 0xef, 0x33, 0xde, 0x27, 0x36, 0x63, 0xf8, - 0x47, 0x4c, 0x69, 0x13, 0x71, 0x2b, 0x5f, 0x71, 0xdd, 0x56, 0xfa, 0x8a, 0xce, 0x2f, 0xf5, 0xcd, - 0x4b, 0x37, 0x4f, 0x03, 0x7e, 0x1e, 0xb5, 0x32, 0x29, 0xca, 0xc2, 0x4d, 0xed, 0xdd, 0x7b, 0xcf, - 0x04, 0x49, 0x95, 0x33, 0x57, 0x36, 0x06, 0x69, 0x16, 0xe0, 0x46, 0xf6, 0x57, 0xf6, 0x71, 0x15, - 0x26, 0xf3, 0x3c, 0xfe, 0x2e, 0x40, 0x2d, 0xee, 0x86, 0x35, 0x27, 0x74, 0x7f, 0x4b, 0x7b, 0xb6, - 0x76, 0x2d, 0xe4, 0x56, 0x4e, 0x56, 0xcc, 0xf8, 0x26, 0x6a, 0xa9, 0x54, 0x14, 0xe0, 0x5c, 0x8c, - 0xe6, 0x45, 0x27, 0x26, 0x38, 0x9b, 0xb4, 0xf7, 0xe7, 0x70, 0x36, 0x40, 0xaa, 0xe2, 0xce, 0xaf, - 0x75, 0x14, 0xfd, 0xfb, 0x8b, 0x86, 0x7f, 0x0a, 0x10, 0x4a, 0xe7, 0x2f, 0x85, 0x0a, 0x03, 0x7b, - 0xc9, 0x0f, 0xb6, 0x34, 0xa1, 0x7f, 0x92, 0x16, 0xff, 0x55, 0x7c, 0x48, 0x91, 0x25, 0x1d, 0xf8, - 0xe7, 0x00, 0xed, 0xd3, 0x34, 0x85, 0x42, 0x43, 0xbf, 0x3a, 0xb4, 0xfa, 0xff, 0xe0, 0xfd, 0x33, - 0x4e, 0xd5, 0xfe, 0x3b, 0xcb, 0xd4, 0x64, 0x55, 0x49, 0xf7, 0xe8, 0xfc, 0x22, 0xaa, 0x3d, 0xbc, - 0x88, 0x6a, 0x8f, 0x2e, 0xa2, 0xda, 0xb7, 0xd3, 0x28, 0x38, 0x9f, 0x46, 0xc1, 0xc3, 0x69, 0x14, - 0x3c, 0x9a, 0x46, 0xc1, 0x6f, 0xd3, 0x28, 0xf8, 0xf1, 0xf7, 0xa8, 0xf6, 0xe9, 0xae, 0xa3, 0xfc, - 0x2b, 0x00, 0x00, 0xff, 0xff, 0x3e, 0xed, 0x57, 0x73, 0x4c, 0x09, 0x00, 0x00, + // 1917 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdb, 0x6f, 0x5b, 0x49, + 0x19, 0xcf, 0xd8, 0xb9, 0x4e, 0x92, 0x4d, 0x32, 0x6d, 0xca, 0x69, 0x68, 0xed, 0xd4, 0xcb, 0xae, + 0x02, 0x6c, 0x6d, 0xba, 0x17, 0x76, 0x41, 0xe2, 0x21, 0x6e, 0x02, 0x2a, 0x34, 0x4d, 0x35, 0x69, + 0x8b, 0xc4, 0x2e, 0xec, 0x4e, 0x7c, 0xc6, 0xce, 0x34, 0xe7, 0xcc, 0x39, 0x3d, 0x33, 0xc7, 0x8d, + 0x25, 0x90, 0x40, 0x68, 0x85, 0x84, 0x04, 0x42, 0xd0, 0x17, 0x24, 0x9e, 0x78, 0x44, 0x08, 0x24, + 0xe0, 0x91, 0x3f, 0xa0, 0x8f, 0x2b, 0xf1, 0xb2, 0x4f, 0x16, 0x35, 0xff, 0x02, 0xbc, 0xe4, 0x09, + 0xcd, 0xe5, 0xdc, 0xec, 0x64, 0xb7, 0xd2, 0xda, 0xdb, 0x37, 0x9f, 0xef, 0xf6, 0xfb, 0xcd, 0x37, + 0xdf, 0x7c, 0xf3, 0x8d, 0x61, 0xfb, 0xf8, 0x1d, 0x51, 0x67, 0x41, 0xe3, 0x38, 0x3e, 0xa4, 0x11, + 0xa7, 0x92, 0x8a, 0x46, 0x97, 0x72, 0x37, 0x88, 0x1a, 0x56, 0x41, 0x42, 0x46, 0x4f, 0x24, 0xe5, + 0x82, 0x05, 0x5c, 0x5c, 0x27, 0x21, 0x13, 0x34, 0xea, 0xd2, 0xa8, 0x11, 0x1e, 0x77, 0x94, 0x4e, + 0x14, 0x0d, 0x1a, 0xdd, 0x1b, 0x87, 0x54, 0x92, 0x1b, 0x8d, 0x0e, 0xe5, 0x34, 0x22, 0x92, 0xba, + 0xf5, 0x30, 0x0a, 0x64, 0x80, 0xbe, 0x65, 0xc2, 0xd5, 0x0b, 0xd6, 0xef, 0xa7, 0xe1, 0xea, 0xe1, + 0x71, 0x47, 0xe9, 0x44, 0xd1, 0xa0, 0x6e, 0xc3, 0x6d, 0x5c, 0xef, 0x30, 0x79, 0x14, 0x1f, 0xd6, + 0x5b, 0x81, 0xdf, 0xe8, 0x04, 0x9d, 0xa0, 0xa1, 0xa3, 0x1e, 0xc6, 0x6d, 0xfd, 0xa5, 0x3f, 0xf4, + 0x2f, 0x83, 0xb6, 0xf1, 0x66, 0x46, 0xde, 0x27, 0xad, 0x23, 0xc6, 0x69, 0xd4, 0xcb, 0x18, 0xfb, + 0x54, 0x92, 0x46, 0x77, 0x84, 0xe3, 0x46, 0xe3, 0x3c, 0xaf, 0x28, 0xe6, 0x92, 0xf9, 0x74, 0xc4, + 0xe1, 0xeb, 0x9f, 0xe6, 0x20, 0x5a, 0x47, 0xd4, 0x27, 0x23, 0x7e, 0x6f, 0x9c, 0xe7, 0x17, 0x4b, + 0xe6, 0x35, 0x18, 0x97, 0x42, 0x46, 0xc3, 0x4e, 0xb5, 0x9f, 0x97, 0xa1, 0x73, 0x33, 0x16, 0x32, + 0xf0, 0x31, 0x15, 0x41, 0x1c, 0xb5, 0xe8, 0x0e, 0x6d, 0x33, 0xce, 0x24, 0x0b, 0x38, 0xfa, 0x00, + 0xce, 0xab, 0x55, 0xb9, 0x44, 0x12, 0x07, 0x6c, 0x82, 0xad, 0xc5, 0xd7, 0xbf, 0x56, 0xcf, 0x32, + 0x9e, 0x82, 0x64, 0x69, 0x56, 0xd6, 0xf5, 0xee, 0x8d, 0xfa, 0xfe, 0xe1, 0x43, 0xda, 0x92, 0x7b, + 0x54, 0x92, 0x26, 0x7a, 0xda, 0xaf, 0x4e, 0x0d, 0xfa, 0x55, 0x98, 0xc9, 0x70, 0x1a, 0x15, 0xfd, + 0x04, 0x4e, 0x8b, 0x90, 0xb6, 0x9c, 0x92, 0x8e, 0xfe, 0x6e, 0xfd, 0x33, 0xed, 0x67, 0xfd, 0xbc, + 0x85, 0x1c, 0x84, 0xb4, 0xd5, 0x5c, 0xb2, 0x44, 0xa6, 0xd5, 0x17, 0xd6, 0xb0, 0xe8, 0x43, 0x00, + 0x67, 0x85, 0x24, 0x32, 0x16, 0x4e, 0x59, 0x33, 0xf8, 0xe1, 0xa4, 0x18, 0x68, 0x90, 0xe6, 0x4b, + 0x96, 0xc3, 0xac, 0xf9, 0xc6, 0x16, 0xbc, 0xf6, 0xdf, 0x12, 0xbc, 0x76, 0x9e, 0xeb, 0xcd, 0x80, + 0xbb, 0x66, 0x3b, 0x6e, 0xc1, 0x69, 0xd9, 0x0b, 0xa9, 0xde, 0x8a, 0x85, 0xe6, 0x5b, 0xc9, 0x7a, + 0xee, 0xf5, 0x42, 0x7a, 0xda, 0xaf, 0xbe, 0xf2, 0xa9, 0x01, 0x94, 0x21, 0xd6, 0x21, 0xd0, 0x37, + 0xd2, 0x75, 0x97, 0x74, 0xb0, 0x6b, 0x45, 0x62, 0xa7, 0xfd, 0xea, 0x4a, 0xea, 0x56, 0xe4, 0x8a, + 0xba, 0x10, 0x79, 0x44, 0xc8, 0x7b, 0x11, 0xe1, 0xc2, 0x84, 0x65, 0x3e, 0xb5, 0xe9, 0xfb, 0xca, + 0xf3, 0x95, 0x87, 0xf2, 0x68, 0x6e, 0x58, 0x48, 0x74, 0x7b, 0x24, 0x1a, 0x3e, 0x03, 0x01, 0xbd, + 0x0a, 0x67, 0x23, 0x4a, 0x44, 0xc0, 0x9d, 0x69, 0x4d, 0x39, 0xcd, 0x25, 0xd6, 0x52, 0x6c, 0xb5, + 0xe8, 0xcb, 0x70, 0xce, 0xa7, 0x42, 0x90, 0x0e, 0x75, 0x66, 0xb4, 0xe1, 0x8a, 0x35, 0x9c, 0xdb, + 0x33, 0x62, 0x9c, 0xe8, 0x6b, 0xa7, 0x00, 0x5e, 0x39, 0x2f, 0x6b, 0xb7, 0x99, 0x90, 0xe8, 0xbd, + 0x91, 0x03, 0x50, 0x7f, 0xbe, 0x15, 0x2a, 0x6f, 0x5d, 0xfe, 0xab, 0x16, 0x7c, 0x3e, 0x91, 0xe4, + 0x8a, 0xff, 0xc7, 0x70, 0x86, 0x49, 0xea, 0xab, 0x3d, 0x28, 0x6f, 0x2d, 0xbe, 0xfe, 0xfd, 0x09, + 0xd5, 0x5e, 0x73, 0xd9, 0x72, 0x98, 0xb9, 0xa5, 0xd0, 0xb0, 0x01, 0xad, 0xfd, 0x0f, 0xc0, 0xab, + 0xe7, 0xb9, 0xdc, 0x21, 0x3e, 0x15, 0x2a, 0xe3, 0xa1, 0x17, 0x47, 0xc4, 0xb3, 0x15, 0x97, 0x66, + 0xfc, 0xae, 0x96, 0x62, 0xab, 0x45, 0xaf, 0xc1, 0x79, 0xc1, 0x78, 0x27, 0xf6, 0x48, 0x64, 0xcb, + 0x29, 0x5d, 0xf5, 0x81, 0x95, 0xe3, 0xd4, 0x02, 0xd5, 0x21, 0x14, 0x47, 0x41, 0x24, 0x35, 0x86, + 0x53, 0xde, 0x2c, 0xab, 0xc8, 0xaa, 0x41, 0x1c, 0xa4, 0x52, 0x9c, 0xb3, 0x40, 0x9b, 0x70, 0xfa, + 0x98, 0x71, 0xd7, 0xee, 0x7a, 0x7a, 0x8a, 0xbf, 0xc7, 0xb8, 0x8b, 0xb5, 0x46, 0xe1, 0x7b, 0x4c, + 0x48, 0x25, 0xb1, 0x5b, 0x5e, 0xc8, 0xba, 0xb6, 0x4c, 0x2d, 0x6a, 0x7f, 0x2b, 0x9f, 0xbf, 0xe9, + 0xaa, 0x35, 0xa0, 0x97, 0xe1, 0x4c, 0x27, 0x0a, 0xe2, 0xd0, 0xae, 0x3a, 0xcd, 0xde, 0x77, 0x94, + 0x10, 0x1b, 0x9d, 0xaa, 0xb2, 0x2e, 0x8d, 0xd4, 0x06, 0xd8, 0x25, 0xa7, 0x55, 0xf6, 0xc0, 0x88, + 0x71, 0xa2, 0x47, 0x3f, 0x03, 0x70, 0x86, 0xdb, 0xc5, 0xaa, 0x12, 0x7a, 0x6f, 0x42, 0xfb, 0xac, + 0xd3, 0x95, 0xd1, 0x35, 0x99, 0x34, 0xc8, 0xe8, 0x4d, 0x38, 0x23, 0x5a, 0x41, 0x48, 0x6d, 0x16, + 0x2b, 0x89, 0xd1, 0x81, 0x12, 0x9e, 0xf6, 0xab, 0xcb, 0x49, 0x38, 0x2d, 0xc0, 0xc6, 0x18, 0xfd, + 0x02, 0x40, 0xd8, 0x25, 0x1e, 0x73, 0x89, 0x8a, 0xaf, 0x73, 0x3b, 0xee, 0x32, 0x7d, 0x90, 0x86, + 0x37, 0x45, 0x90, 0x7d, 0xe3, 0x1c, 0x74, 0xed, 0x5f, 0x25, 0x58, 0xf9, 0xe4, 0xde, 0x8a, 0x9e, + 0x00, 0x08, 0x5b, 0x49, 0xcf, 0x12, 0x0e, 0xd0, 0x67, 0xea, 0x83, 0x09, 0xe5, 0x3a, 0x6d, 0x8e, + 0xd9, 0xfd, 0x96, 0x8a, 0x04, 0xce, 0xf1, 0x40, 0xbf, 0x07, 0x70, 0x99, 0xb4, 0x5a, 0x34, 0x94, + 0xd4, 0x35, 0x25, 0x5f, 0xfa, 0x1c, 0xaa, 0x60, 0xdd, 0xb2, 0x5a, 0xde, 0xce, 0x43, 0xe3, 0x22, + 0x93, 0xda, 0x9f, 0xc0, 0xf0, 0xe5, 0x9f, 0xa5, 0x1f, 0xfd, 0x0a, 0xc0, 0x95, 0x20, 0xa4, 0x7c, + 0xfb, 0xee, 0xad, 0x07, 0x6f, 0x1c, 0xe8, 0x91, 0xc3, 0xf6, 0xc0, 0x3b, 0x9f, 0x91, 0xfa, 0x77, + 0x0f, 0xf6, 0xef, 0x98, 0x80, 0x77, 0xa3, 0x20, 0x14, 0xcd, 0x0b, 0x83, 0x7e, 0x75, 0x65, 0xbf, + 0x08, 0x85, 0x87, 0xb1, 0x6b, 0x3e, 0x5c, 0xdf, 0x3d, 0x91, 0x34, 0xe2, 0xc4, 0xdb, 0x09, 0x5a, + 0xb1, 0x4f, 0xb9, 0x34, 0x44, 0xdf, 0x82, 0x8b, 0x2e, 0x15, 0xad, 0x88, 0x85, 0xba, 0x4a, 0xcd, + 0xa9, 0xbd, 0x60, 0x13, 0xb0, 0xb8, 0x93, 0xa9, 0x70, 0xde, 0x0e, 0x5d, 0x85, 0xe5, 0x38, 0xf2, + 0xec, 0xe9, 0x5d, 0xb4, 0xe6, 0xe5, 0xfb, 0xf8, 0x36, 0x56, 0xf2, 0xda, 0x35, 0x38, 0xad, 0x78, + 0xa2, 0xcb, 0xb0, 0x1c, 0x91, 0xc7, 0x3a, 0xea, 0x52, 0x73, 0x4e, 0x99, 0x60, 0xf2, 0x18, 0x2b, + 0x59, 0xed, 0xcf, 0x57, 0xe0, 0xca, 0xd0, 0x5a, 0xd0, 0x06, 0x2c, 0x31, 0xd7, 0x72, 0x80, 0x36, + 0x68, 0xe9, 0xd6, 0x0e, 0x2e, 0x31, 0x17, 0xbd, 0x0d, 0x67, 0xcd, 0xe8, 0x66, 0x41, 0xab, 0xe9, + 0xa5, 0xab, 0xa5, 0xea, 0x18, 0x66, 0xe1, 0x14, 0x11, 0x6b, 0xae, 0x39, 0xd0, 0xb6, 0x6e, 0x1f, + 0x0b, 0x96, 0x03, 0x6d, 0x63, 0x25, 0x1b, 0x5e, 0xfc, 0xf4, 0x73, 0x2e, 0x7e, 0xd3, 0x8e, 0x12, + 0x33, 0xc5, 0xa6, 0x9a, 0x9b, 0x10, 0x5e, 0x85, 0xb3, 0xed, 0x20, 0xf2, 0x89, 0x74, 0x66, 0x8b, + 0xcd, 0xff, 0xdb, 0x5a, 0x8a, 0xad, 0x56, 0x75, 0x4b, 0xc9, 0xa4, 0x47, 0x9d, 0xb9, 0x62, 0xb7, + 0xbc, 0xa7, 0x84, 0xd8, 0xe8, 0xd0, 0x43, 0x38, 0xe7, 0xd2, 0x36, 0x89, 0x3d, 0xe9, 0xcc, 0xeb, + 0x12, 0xba, 0x39, 0x86, 0x12, 0x6a, 0x2e, 0xaa, 0x76, 0xbb, 0x63, 0xe2, 0xe2, 0x04, 0x00, 0xbd, + 0x02, 0xe7, 0x7c, 0x72, 0xc2, 0xfc, 0xd8, 0x77, 0x16, 0x36, 0xc1, 0x16, 0x30, 0x66, 0x7b, 0x46, + 0x84, 0x13, 0x1d, 0xda, 0x81, 0xab, 0xf4, 0xa4, 0xe5, 0xc5, 0x82, 0x75, 0xa9, 0x55, 0x3a, 0x70, + 0x13, 0x6c, 0xcd, 0x37, 0x1d, 0xbb, 0x84, 0xd5, 0xdd, 0x21, 0x3d, 0x1e, 0xf1, 0xd0, 0x60, 0x8c, + 0x6b, 0xe7, 0xc5, 0x1c, 0x98, 0x11, 0xe1, 0x44, 0x57, 0x04, 0xb3, 0xf6, 0x4b, 0xe7, 0x81, 0x59, + 0xe7, 0x11, 0x0f, 0xf4, 0x55, 0xb8, 0xe0, 0x93, 0x93, 0xdb, 0x94, 0x77, 0xe4, 0x91, 0xb3, 0xbc, + 0x09, 0xb6, 0xca, 0xcd, 0xe5, 0x41, 0xbf, 0xba, 0xb0, 0x97, 0x08, 0x71, 0xa6, 0xd7, 0xc6, 0x8c, + 0x5b, 0xe3, 0x97, 0x72, 0xc6, 0x89, 0x10, 0x67, 0x7a, 0x75, 0x9b, 0x85, 0x44, 0xaa, 0xc3, 0xe5, + 0xac, 0x14, 0x6f, 0xb3, 0xbb, 0x46, 0x8c, 0x13, 0x3d, 0xda, 0x82, 0xf3, 0x3e, 0x39, 0xd1, 0x93, + 0x84, 0xb3, 0xaa, 0xc3, 0x2e, 0xa9, 0x8b, 0x76, 0xcf, 0xca, 0x70, 0xaa, 0xd5, 0x96, 0x8c, 0x1b, + 0xcb, 0xb5, 0x9c, 0xa5, 0x95, 0xe1, 0x54, 0xab, 0x8a, 0x38, 0xe6, 0xec, 0x51, 0x4c, 0x8d, 0x31, + 0xd2, 0x99, 0x49, 0x8b, 0xf8, 0x7e, 0xa6, 0xc2, 0x79, 0x3b, 0x35, 0x49, 0xf8, 0xb1, 0x27, 0x59, + 0xe8, 0xd1, 0xfd, 0xb6, 0x73, 0x41, 0xe7, 0x5f, 0x5f, 0x22, 0x7b, 0xa9, 0x14, 0xe7, 0x2c, 0x10, + 0x85, 0xd3, 0x94, 0xc7, 0xbe, 0x73, 0x51, 0x5f, 0x0d, 0x63, 0x29, 0xc1, 0xf4, 0xe4, 0xec, 0xf2, + 0xd8, 0xc7, 0x3a, 0x3c, 0x7a, 0x1b, 0x2e, 0xfb, 0xe4, 0x44, 0xb5, 0x03, 0x1a, 0x49, 0x46, 0x85, + 0xb3, 0xae, 0x17, 0xbf, 0xa6, 0xda, 0xf1, 0x5e, 0x5e, 0x81, 0x8b, 0x76, 0xda, 0x91, 0xf1, 0x9c, + 0xe3, 0xa5, 0x9c, 0x63, 0x5e, 0x81, 0x8b, 0x76, 0x2a, 0xd3, 0x11, 0x7d, 0x14, 0xb3, 0x88, 0xba, + 0xce, 0x17, 0xf4, 0x40, 0xa5, 0x33, 0x8d, 0xad, 0x0c, 0xa7, 0x5a, 0xd4, 0x4d, 0x46, 0x4e, 0x47, + 0x1f, 0xc3, 0xfb, 0xe3, 0xed, 0xe4, 0xfb, 0xd1, 0x76, 0x14, 0x91, 0x5e, 0x73, 0x61, 0x78, 0xd8, + 0x44, 0x02, 0xce, 0x10, 0xcf, 0xdb, 0x6f, 0x3b, 0x97, 0x75, 0xee, 0xc7, 0x7d, 0x83, 0xa4, 0x5d, + 0x67, 0x5b, 0x81, 0x60, 0x83, 0xa5, 0x40, 0x03, 0xae, 0x4a, 0x63, 0x63, 0xb2, 0xa0, 0xfb, 0x0a, + 0x04, 0x1b, 0x2c, 0xbd, 0x52, 0xde, 0xdb, 0x6f, 0x3b, 0x5f, 0x9c, 0xf0, 0x4a, 0x15, 0x08, 0x36, + 0x58, 0x88, 0xc1, 0x32, 0x0f, 0xa4, 0x73, 0x65, 0x22, 0xd7, 0xb3, 0xbe, 0x70, 0xee, 0x04, 0x12, + 0x2b, 0x0c, 0xf4, 0x5b, 0x00, 0x61, 0x98, 0x95, 0xe8, 0x55, 0xbd, 0xca, 0x1f, 0x8d, 0x17, 0xb2, + 0x9e, 0xd5, 0xf6, 0x2e, 0x97, 0x51, 0x2f, 0x1b, 0xb2, 0x72, 0x67, 0x20, 0xc7, 0x02, 0xfd, 0x11, + 0xc0, 0x8b, 0xc4, 0x35, 0x23, 0x17, 0xf1, 0x72, 0x27, 0xa8, 0xa2, 0x33, 0x72, 0x6f, 0xdc, 0x65, + 0xde, 0x0c, 0x02, 0xaf, 0xe9, 0x0c, 0xfa, 0xd5, 0x8b, 0xdb, 0x67, 0xa0, 0xe2, 0x33, 0xb9, 0xa0, + 0xbf, 0x00, 0xb8, 0x66, 0xbb, 0x68, 0x8e, 0x61, 0x55, 0x27, 0x90, 0x8e, 0x3b, 0x81, 0xc3, 0x38, + 0x26, 0x8f, 0x97, 0x6d, 0x1e, 0xd7, 0x46, 0xf4, 0x78, 0x94, 0x1a, 0xfa, 0x07, 0x80, 0x4b, 0x2e, + 0x0d, 0x29, 0x77, 0x29, 0x6f, 0x29, 0xae, 0x9b, 0x63, 0x99, 0xa9, 0x87, 0xb9, 0xee, 0xe4, 0x20, + 0x0c, 0xcd, 0xba, 0xa5, 0xb9, 0x94, 0x57, 0x9d, 0xf6, 0xab, 0x97, 0x32, 0xd7, 0xbc, 0x06, 0x17, + 0x58, 0xa2, 0xdf, 0x01, 0xb8, 0x92, 0x6d, 0x80, 0xb9, 0x52, 0xae, 0x4d, 0xb0, 0x0e, 0xf4, 0xf8, + 0xba, 0x5d, 0x04, 0xc4, 0xc3, 0x0c, 0xd0, 0x5f, 0x81, 0x9a, 0xd4, 0x92, 0x29, 0x5d, 0x38, 0x35, + 0x9d, 0xcb, 0xf7, 0xc7, 0x9e, 0xcb, 0x14, 0xc1, 0xa4, 0xf2, 0xb5, 0x6c, 0x14, 0x4c, 0x35, 0xa7, + 0xfd, 0xea, 0x7a, 0x3e, 0x93, 0xa9, 0x02, 0xe7, 0x19, 0xa2, 0x5f, 0x02, 0xb8, 0x44, 0xb3, 0x89, + 0x5b, 0x38, 0x2f, 0x8f, 0x25, 0x89, 0x67, 0x0e, 0xf1, 0xcd, 0x55, 0xb5, 0xdd, 0x39, 0x95, 0xc0, + 0x05, 0x6c, 0x35, 0x41, 0xd2, 0x13, 0xe2, 0x87, 0x1e, 0x75, 0xbe, 0x34, 0xe6, 0x09, 0x72, 0xd7, + 0xc4, 0xc5, 0x09, 0xc0, 0x86, 0x7a, 0xf9, 0x0c, 0x9d, 0x1c, 0xb4, 0x0a, 0xcb, 0xc7, 0xb4, 0x67, + 0x06, 0x7b, 0xac, 0x7e, 0x22, 0x17, 0xce, 0x74, 0x89, 0x17, 0x53, 0xfb, 0x9e, 0x1b, 0x73, 0xd7, + 0xc5, 0x26, 0xf8, 0x37, 0x4b, 0xef, 0x80, 0x8d, 0x27, 0x00, 0x5e, 0x3a, 0xfb, 0x40, 0xbf, 0x50, + 0x5a, 0x7f, 0x00, 0x70, 0x6d, 0xe4, 0xec, 0x9e, 0xc1, 0xe8, 0x51, 0x91, 0xd1, 0xbb, 0xe3, 0x3e, + 0x84, 0x07, 0x32, 0x62, 0xbc, 0xa3, 0x27, 0x8f, 0x3c, 0xbd, 0x5f, 0x03, 0xb8, 0x3a, 0x7c, 0x1c, + 0x5e, 0x64, 0xbe, 0x6a, 0x4f, 0x4a, 0xf0, 0xd2, 0xd9, 0x03, 0x13, 0x8a, 0xd2, 0x97, 0xe1, 0x64, + 0x5e, 0xd8, 0x30, 0x7b, 0x65, 0xa6, 0x8f, 0xca, 0x0f, 0x01, 0x5c, 0x7c, 0x98, 0xda, 0x25, 0x7f, + 0x42, 0x8e, 0xfd, 0x6d, 0x9f, 0xf4, 0x9f, 0x4c, 0x21, 0x70, 0x1e, 0xb7, 0xf6, 0x77, 0x00, 0xd7, + 0xcf, 0x6c, 0xac, 0xea, 0x09, 0x4a, 0x3c, 0x2f, 0x78, 0x2c, 0x74, 0x56, 0xe6, 0xb3, 0x27, 0xe8, + 0xb6, 0x96, 0x62, 0xab, 0xcd, 0x65, 0xaf, 0xf4, 0x79, 0x65, 0xaf, 0xf6, 0x4f, 0x00, 0xaf, 0x7c, + 0x52, 0x25, 0xbe, 0x90, 0x2d, 0xdd, 0x82, 0xf3, 0x76, 0x28, 0xea, 0xe9, 0xed, 0xb4, 0xef, 0x00, + 0xdb, 0x34, 0x7a, 0x38, 0xd5, 0x36, 0xaf, 0x3f, 0x7d, 0x56, 0x99, 0xfa, 0xe8, 0x59, 0x65, 0xea, + 0xe3, 0x67, 0x95, 0xa9, 0x9f, 0x0e, 0x2a, 0xe0, 0xe9, 0xa0, 0x02, 0x3e, 0x1a, 0x54, 0xc0, 0xc7, + 0x83, 0x0a, 0xf8, 0xf7, 0xa0, 0x02, 0x7e, 0xf3, 0x9f, 0xca, 0xd4, 0x0f, 0xe6, 0x2c, 0xf8, 0xff, + 0x03, 0x00, 0x00, 0xff, 0xff, 0x73, 0x96, 0x20, 0xc5, 0xd0, 0x1b, 0x00, 0x00, } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto index d6e0ab9432..57a69e60c1 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto @@ -103,6 +103,11 @@ message CustomResourceDefinitionSpec { // Scope indicates whether this resource is cluster or namespace scoped. Default is namespaced optional string scope = 4; + + // Validation describes the validation methods for CustomResources + // This field is alpha-level and should only be sent to servers that enable the CustomResourceValidation feature. + // +optional + optional CustomResourceValidation validation = 5; } // CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition @@ -115,3 +120,120 @@ message CustomResourceDefinitionStatus { optional CustomResourceDefinitionNames acceptedNames = 2; } +// CustomResourceValidation is a list of validation methods for CustomResources. +message CustomResourceValidation { + // OpenAPIV3Schema is the OpenAPI v3 schema to be validated against. + optional JSONSchemaProps openAPIV3Schema = 1; +} + +// ExternalDocumentation allows referencing an external resource for extended documentation. +message ExternalDocumentation { + optional string description = 1; + + optional string url = 2; +} + +// JSON represents any valid JSON value. +// These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil. +message JSON { + optional bytes raw = 1; +} + +// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). +message JSONSchemaProps { + optional string id = 1; + + optional string schema = 2; + + optional string ref = 3; + + optional string description = 4; + + optional string type = 5; + + optional string format = 6; + + optional string title = 7; + + optional JSON default = 8; + + optional double maximum = 9; + + optional bool exclusiveMaximum = 10; + + optional double minimum = 11; + + optional bool exclusiveMinimum = 12; + + optional int64 maxLength = 13; + + optional int64 minLength = 14; + + optional string pattern = 15; + + optional int64 maxItems = 16; + + optional int64 minItems = 17; + + optional bool uniqueItems = 18; + + optional double multipleOf = 19; + + repeated JSON enum = 20; + + optional int64 maxProperties = 21; + + optional int64 minProperties = 22; + + repeated string required = 23; + + optional JSONSchemaPropsOrArray items = 24; + + repeated JSONSchemaProps allOf = 25; + + repeated JSONSchemaProps oneOf = 26; + + repeated JSONSchemaProps anyOf = 27; + + optional JSONSchemaProps not = 28; + + map properties = 29; + + optional JSONSchemaPropsOrBool additionalProperties = 30; + + map patternProperties = 31; + + map dependencies = 32; + + optional JSONSchemaPropsOrBool additionalItems = 33; + + map definitions = 34; + + optional ExternalDocumentation externalDocs = 35; + + optional JSON example = 36; +} + +// JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps +// or an array of JSONSchemaProps. Mainly here for serialization purposes. +message JSONSchemaPropsOrArray { + optional JSONSchemaProps schema = 1; + + repeated JSONSchemaProps jSONSchemas = 2; +} + +// JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. +// Defaults to true for the boolean property. +message JSONSchemaPropsOrBool { + optional bool allows = 1; + + optional JSONSchemaProps schema = 2; +} + +// JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array. +message JSONSchemaPropsOrStringArray { + optional JSONSchemaProps schema = 1; + + repeated string property = 2; +} + diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go new file mode 100644 index 0000000000..d8f9f164e8 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go @@ -0,0 +1,134 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "errors" + + "k8s.io/apimachinery/pkg/util/json" +) + +var jsTrue = []byte("true") +var jsFalse = []byte("false") + +func (s JSONSchemaPropsOrBool) MarshalJSON() ([]byte, error) { + if s.Schema != nil { + return json.Marshal(s.Schema) + } + + if s.Schema == nil && !s.Allows { + return jsFalse, nil + } + return jsTrue, nil +} + +func (s *JSONSchemaPropsOrBool) UnmarshalJSON(data []byte) error { + var nw JSONSchemaPropsOrBool + switch { + case len(data) == 0: + case data[0] == '{': + var sch JSONSchemaProps + if err := json.Unmarshal(data, &sch); err != nil { + return err + } + nw.Schema = &sch + case len(data) == 4 && string(data) == "true": + nw.Allows = true + case len(data) == 5 && string(data) == "false": + nw.Allows = false + default: + return errors.New("boolean or JSON schema expected") + } + *s = nw + return nil +} + +func (s JSONSchemaPropsOrStringArray) MarshalJSON() ([]byte, error) { + if len(s.Property) > 0 { + return json.Marshal(s.Property) + } + if s.Schema != nil { + return json.Marshal(s.Schema) + } + return []byte("null"), nil +} + +func (s *JSONSchemaPropsOrStringArray) UnmarshalJSON(data []byte) error { + var first byte + if len(data) > 1 { + first = data[0] + } + var nw JSONSchemaPropsOrStringArray + if first == '{' { + var sch JSONSchemaProps + 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 +} + +func (s JSONSchemaPropsOrArray) MarshalJSON() ([]byte, error) { + if len(s.JSONSchemas) > 0 { + return json.Marshal(s.JSONSchemas) + } + return json.Marshal(s.Schema) +} + +func (s *JSONSchemaPropsOrArray) UnmarshalJSON(data []byte) error { + var nw JSONSchemaPropsOrArray + var first byte + if len(data) > 1 { + first = data[0] + } + if first == '{' { + var sch JSONSchemaProps + if err := json.Unmarshal(data, &sch); err != nil { + return err + } + nw.Schema = &sch + } + if first == '[' { + if err := json.Unmarshal(data, &nw.JSONSchemas); err != nil { + return err + } + } + *s = nw + return nil +} + +func (s JSON) MarshalJSON() ([]byte, error) { + if len(s.Raw) > 0 { + return s.Raw, nil + } + return []byte("null"), nil + +} + +func (s *JSON) UnmarshalJSON(data []byte) error { + if len(data) > 0 && string(data) != "null" { + s.Raw = data + } + return nil +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal_test.go new file mode 100644 index 0000000000..0c6d4d4b52 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal_test.go @@ -0,0 +1,150 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "encoding/json" + "reflect" + "testing" +) + +type JSONSchemaPropsOrBoolHolder struct { + JSPoB JSONSchemaPropsOrBool `json:"val1"` + JSPoBOmitEmpty *JSONSchemaPropsOrBool `json:"val2,omitempty"` +} + +func TestJSONSchemaPropsOrBoolUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result JSONSchemaPropsOrBoolHolder + }{ + {`{}`, JSONSchemaPropsOrBoolHolder{}}, + + {`{"val1": {}}`, JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{}}}}, + {`{"val1": {"type":"string"}}`, JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{Type: "string"}}}}, + {`{"val1": false}`, JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{}}}, + {`{"val1": true}`, JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{Allows: true}}}, + + {`{"val2": {}}`, JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{}}}}, + {`{"val2": {"type":"string"}}`, JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{Type: "string"}}}}, + {`{"val2": false}`, JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{}}}, + {`{"val2": true}`, JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{Allows: true}}}, + } + + for _, c := range cases { + var result JSONSchemaPropsOrBoolHolder + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if !reflect.DeepEqual(result, c.result) { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestStringArrayOrStringMarshalJSON(t *testing.T) { + cases := []struct { + input JSONSchemaPropsOrBoolHolder + result string + }{ + {JSONSchemaPropsOrBoolHolder{}, `{"val1":false}`}, + + {JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{}}}, `{"val1":{}}`}, + {JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{Type: "string"}}}, `{"val1":{"type":"string"}}`}, + {JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{}}, `{"val1":false}`}, + {JSONSchemaPropsOrBoolHolder{JSPoB: JSONSchemaPropsOrBool{Allows: true}}, `{"val1":true}`}, + + {JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{}}}, `{"val1":false,"val2":{}}`}, + {JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{Schema: &JSONSchemaProps{Type: "string"}}}, `{"val1":false,"val2":{"type":"string"}}`}, + {JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{}}, `{"val1":false,"val2":false}`}, + {JSONSchemaPropsOrBoolHolder{JSPoBOmitEmpty: &JSONSchemaPropsOrBool{Allows: true}}, `{"val1":false,"val2":true}`}, + } + + for _, c := range cases { + result, err := json.Marshal(&c.input) + if err != nil { + t.Errorf("Unexpected error marshaling input '%v': %v", c.input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input '%v': expected: %q, got %q", c.input, c.result, string(result)) + } + } +} + +type JSONSchemaPropsOrArrayHolder struct { + JSPoA JSONSchemaPropsOrArray `json:"val1"` + JSPoAOmitEmpty *JSONSchemaPropsOrArray `json:"val2,omitempty"` +} + +func TestJSONSchemaPropsOrArrayUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result JSONSchemaPropsOrArrayHolder + }{ + {`{}`, JSONSchemaPropsOrArrayHolder{}}, + + {`{"val1": {}}`, JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{}}}}, + {`{"val1": {"type":"string"}}`, JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{Type: "string"}}}}, + {`{"val1": [{}]}`, JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}}}}}, + {`{"val1": [{},{"type":"string"}]}`, JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}, {Type: "string"}}}}}, + + {`{"val2": {}}`, JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{}}}}, + {`{"val2": {"type":"string"}}`, JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{Type: "string"}}}}, + {`{"val2": [{}]}`, JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}}}}}, + {`{"val2": [{},{"type":"string"}]}`, JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}, {Type: "string"}}}}}, + } + + for _, c := range cases { + var result JSONSchemaPropsOrArrayHolder + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if !reflect.DeepEqual(result, c.result) { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestJSONSchemaPropsOrArrayMarshalJSON(t *testing.T) { + cases := []struct { + input JSONSchemaPropsOrArrayHolder + result string + }{ + {JSONSchemaPropsOrArrayHolder{}, `{"val1":null}`}, + + {JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{}}}, `{"val1":{}}`}, + {JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{Type: "string"}}}, `{"val1":{"type":"string"}}`}, + {JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}}}}, `{"val1":[{}]}`}, + {JSONSchemaPropsOrArrayHolder{JSPoA: JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}, {Type: "string"}}}}, `{"val1":[{},{"type":"string"}]}`}, + + {JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{}}, `{"val1":null,"val2":null}`}, + {JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{}}}, `{"val1":null,"val2":{}}`}, + {JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{Schema: &JSONSchemaProps{Type: "string"}}}, `{"val1":null,"val2":{"type":"string"}}`}, + {JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}}}}, `{"val1":null,"val2":[{}]}`}, + {JSONSchemaPropsOrArrayHolder{JSPoAOmitEmpty: &JSONSchemaPropsOrArray{JSONSchemas: []JSONSchemaProps{{}, {Type: "string"}}}}, `{"val1":null,"val2":[{},{"type":"string"}]}`}, + } + + for i, c := range cases { + result, err := json.Marshal(&c.input) + if err != nil { + t.Errorf("%d: Unexpected error marshaling input '%v': %v", i, c.input, err) + } + if string(result) != c.result { + t.Errorf("%d: Failed to marshal input '%v': expected: %q, got %q", i, c.input, c.result, string(result)) + } + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go index 8d4c341f7c..8ced548fa9 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go @@ -38,7 +38,7 @@ func Resource(resource string) schema.GroupResource { } var ( - SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) localSchemeBuilder = &SchemeBuilder AddToScheme = localSchemeBuilder.AddToScheme ) @@ -52,3 +52,10 @@ func addKnownTypes(scheme *runtime.Scheme) error { metav1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil } + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addDefaultingFuncs, addConversionFuncs) +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go index a9a93c37f9..fe61f32151 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go @@ -26,9 +26,12 @@ type CustomResourceDefinitionSpec struct { Version string `json:"version" protobuf:"bytes,2,opt,name=version"` // Names are the names used to describe this custom resource Names CustomResourceDefinitionNames `json:"names" protobuf:"bytes,3,opt,name=names"` - // Scope indicates whether this resource is cluster or namespace scoped. Default is namespaced Scope ResourceScope `json:"scope" protobuf:"bytes,4,opt,name=scope,casttype=ResourceScope"` + // Validation describes the validation methods for CustomResources + // This field is alpha-level and should only be sent to servers that enable the CustomResourceValidation feature. + // +optional + Validation *CustomResourceValidation `json:"validation,omitempty" protobuf:"bytes,5,opt,name=validation"` } // CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition @@ -113,8 +116,9 @@ type CustomResourceDefinitionStatus struct { // a CustomResourceDefinition const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.io" -// +genclient=true -// +nonNamespaced=true +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format // <.spec.name>.<.spec.group>. @@ -128,6 +132,8 @@ type CustomResourceDefinition struct { Status CustomResourceDefinitionStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // CustomResourceDefinitionList is a list of CustomResourceDefinition objects. type CustomResourceDefinitionList struct { metav1.TypeMeta `json:",inline"` @@ -136,3 +142,9 @@ type CustomResourceDefinitionList struct { // Items individual CustomResourceDefinitions Items []CustomResourceDefinition `json:"items" protobuf:"bytes,2,rep,name=items"` } + +// CustomResourceValidation is a list of validation methods for CustomResources. +type CustomResourceValidation struct { + // OpenAPIV3Schema is the OpenAPI v3 schema to be validated against. + OpenAPIV3Schema *JSONSchemaProps `json:"openAPIV3Schema,omitempty" protobuf:"bytes,1,opt,name=openAPIV3Schema"` +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go new file mode 100644 index 0000000000..9edd276d84 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go @@ -0,0 +1,98 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 + +// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). +type JSONSchemaProps struct { + ID string `json:"id,omitempty" protobuf:"bytes,1,opt,name=id"` + Schema JSONSchemaURL `json:"$schema,omitempty" protobuf:"bytes,2,opt,name=schema"` + Ref *string `json:"$ref,omitempty" protobuf:"bytes,3,opt,name=ref"` + Description string `json:"description,omitempty" protobuf:"bytes,4,opt,name=description"` + Type string `json:"type,omitempty" protobuf:"bytes,5,opt,name=type"` + Format string `json:"format,omitempty" protobuf:"bytes,6,opt,name=format"` + Title string `json:"title,omitempty" protobuf:"bytes,7,opt,name=title"` + Default *JSON `json:"default,omitempty" protobuf:"bytes,8,opt,name=default"` + Maximum *float64 `json:"maximum,omitempty" protobuf:"bytes,9,opt,name=maximum"` + ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty" protobuf:"bytes,10,opt,name=exclusiveMaximum"` + Minimum *float64 `json:"minimum,omitempty" protobuf:"bytes,11,opt,name=minimum"` + ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty" protobuf:"bytes,12,opt,name=exclusiveMinimum"` + MaxLength *int64 `json:"maxLength,omitempty" protobuf:"bytes,13,opt,name=maxLength"` + MinLength *int64 `json:"minLength,omitempty" protobuf:"bytes,14,opt,name=minLength"` + Pattern string `json:"pattern,omitempty" protobuf:"bytes,15,opt,name=pattern"` + MaxItems *int64 `json:"maxItems,omitempty" protobuf:"bytes,16,opt,name=maxItems"` + MinItems *int64 `json:"minItems,omitempty" protobuf:"bytes,17,opt,name=minItems"` + UniqueItems bool `json:"uniqueItems,omitempty" protobuf:"bytes,18,opt,name=uniqueItems"` + MultipleOf *float64 `json:"multipleOf,omitempty" protobuf:"bytes,19,opt,name=multipleOf"` + Enum []JSON `json:"enum,omitempty" protobuf:"bytes,20,rep,name=enum"` + MaxProperties *int64 `json:"maxProperties,omitempty" protobuf:"bytes,21,opt,name=maxProperties"` + MinProperties *int64 `json:"minProperties,omitempty" protobuf:"bytes,22,opt,name=minProperties"` + Required []string `json:"required,omitempty" protobuf:"bytes,23,rep,name=required"` + Items *JSONSchemaPropsOrArray `json:"items,omitempty" protobuf:"bytes,24,opt,name=items"` + AllOf []JSONSchemaProps `json:"allOf,omitempty" protobuf:"bytes,25,rep,name=allOf"` + OneOf []JSONSchemaProps `json:"oneOf,omitempty" protobuf:"bytes,26,rep,name=oneOf"` + AnyOf []JSONSchemaProps `json:"anyOf,omitempty" protobuf:"bytes,27,rep,name=anyOf"` + Not *JSONSchemaProps `json:"not,omitempty" protobuf:"bytes,28,opt,name=not"` + Properties map[string]JSONSchemaProps `json:"properties,omitempty" protobuf:"bytes,29,rep,name=properties"` + AdditionalProperties *JSONSchemaPropsOrBool `json:"additionalProperties,omitempty" protobuf:"bytes,30,opt,name=additionalProperties"` + PatternProperties map[string]JSONSchemaProps `json:"patternProperties,omitempty" protobuf:"bytes,31,rep,name=patternProperties"` + Dependencies JSONSchemaDependencies `json:"dependencies,omitempty" protobuf:"bytes,32,opt,name=dependencies"` + AdditionalItems *JSONSchemaPropsOrBool `json:"additionalItems,omitempty" protobuf:"bytes,33,opt,name=additionalItems"` + Definitions JSONSchemaDefinitions `json:"definitions,omitempty" protobuf:"bytes,34,opt,name=definitions"` + ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty" protobuf:"bytes,35,opt,name=externalDocs"` + Example *JSON `json:"example,omitempty" protobuf:"bytes,36,opt,name=example"` +} + +// JSON represents any valid JSON value. +// These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil. +type JSON struct { + Raw []byte `protobuf:"bytes,1,opt,name=raw"` +} + +// JSONSchemaURL represents a schema url. +type JSONSchemaURL string + +// JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps +// or an array of JSONSchemaProps. Mainly here for serialization purposes. +type JSONSchemaPropsOrArray struct { + Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"` + JSONSchemas []JSONSchemaProps `protobuf:"bytes,2,rep,name=jSONSchemas"` +} + +// JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. +// Defaults to true for the boolean property. +type JSONSchemaPropsOrBool struct { + Allows bool `protobuf:"varint,1,opt,name=allows"` + Schema *JSONSchemaProps `protobuf:"bytes,2,opt,name=schema"` +} + +// JSONSchemaDependencies represent a dependencies property. +type JSONSchemaDependencies map[string]JSONSchemaPropsOrStringArray + +// JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array. +type JSONSchemaPropsOrStringArray struct { + Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"` + Property []string `protobuf:"bytes,2,rep,name=property"` +} + +// JSONSchemaDefinitions contains the models explicitly defined in this spec. +type JSONSchemaDefinitions map[string]JSONSchemaProps + +// ExternalDocumentation allows referencing an external resource for extended documentation. +type ExternalDocumentation struct { + Description string `json:"description,omitempty" protobuf:"bytes,1,opt,name=description"` + URL string `json:"url,omitempty" protobuf:"bytes,2,opt,name=url"` +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go index 15b1255a3d..26fcb6cc04 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go @@ -47,6 +47,20 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_apiextensions_CustomResourceDefinitionSpec_To_v1beta1_CustomResourceDefinitionSpec, Convert_v1beta1_CustomResourceDefinitionStatus_To_apiextensions_CustomResourceDefinitionStatus, Convert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus, + Convert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation, + Convert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation, + Convert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation, + Convert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation, + Convert_v1beta1_JSON_To_apiextensions_JSON, + Convert_apiextensions_JSON_To_v1beta1_JSON, + Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps, + Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps, + Convert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray, + Convert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray, + Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool, + Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool, + Convert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray, + Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray, ) } @@ -112,7 +126,17 @@ func Convert_apiextensions_CustomResourceDefinitionCondition_To_v1beta1_CustomRe func autoConvert_v1beta1_CustomResourceDefinitionList_To_apiextensions_CustomResourceDefinitionList(in *CustomResourceDefinitionList, out *apiextensions.CustomResourceDefinitionList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]apiextensions.CustomResourceDefinition)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]apiextensions.CustomResourceDefinition, len(*in)) + for i := range *in { + if err := Convert_v1beta1_CustomResourceDefinition_To_apiextensions_CustomResourceDefinition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -123,10 +147,16 @@ func Convert_v1beta1_CustomResourceDefinitionList_To_apiextensions_CustomResourc func autoConvert_apiextensions_CustomResourceDefinitionList_To_v1beta1_CustomResourceDefinitionList(in *apiextensions.CustomResourceDefinitionList, out *CustomResourceDefinitionList, s conversion.Scope) error { out.ListMeta = in.ListMeta - if in.Items == nil { - out.Items = make([]CustomResourceDefinition, 0) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomResourceDefinition, len(*in)) + for i := range *in { + if err := Convert_apiextensions_CustomResourceDefinition_To_v1beta1_CustomResourceDefinition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } } else { - out.Items = *(*[]CustomResourceDefinition)(unsafe.Pointer(&in.Items)) + out.Items = nil } return nil } @@ -171,6 +201,15 @@ func autoConvert_v1beta1_CustomResourceDefinitionSpec_To_apiextensions_CustomRes return err } out.Scope = apiextensions.ResourceScope(in.Scope) + if in.Validation != nil { + in, out := &in.Validation, &out.Validation + *out = new(apiextensions.CustomResourceValidation) + if err := Convert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(*in, *out, s); err != nil { + return err + } + } else { + out.Validation = nil + } return nil } @@ -186,6 +225,15 @@ func autoConvert_apiextensions_CustomResourceDefinitionSpec_To_v1beta1_CustomRes return err } out.Scope = ResourceScope(in.Scope) + if in.Validation != nil { + in, out := &in.Validation, &out.Validation + *out = new(CustomResourceValidation) + if err := Convert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation(*in, *out, s); err != nil { + return err + } + } else { + out.Validation = nil + } return nil } @@ -208,11 +256,7 @@ func Convert_v1beta1_CustomResourceDefinitionStatus_To_apiextensions_CustomResou } func autoConvert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus(in *apiextensions.CustomResourceDefinitionStatus, out *CustomResourceDefinitionStatus, s conversion.Scope) error { - if in.Conditions == nil { - out.Conditions = make([]CustomResourceDefinitionCondition, 0) - } else { - out.Conditions = *(*[]CustomResourceDefinitionCondition)(unsafe.Pointer(&in.Conditions)) - } + out.Conditions = *(*[]CustomResourceDefinitionCondition)(unsafe.Pointer(&in.Conditions)) if err := Convert_apiextensions_CustomResourceDefinitionNames_To_v1beta1_CustomResourceDefinitionNames(&in.AcceptedNames, &out.AcceptedNames, s); err != nil { return err } @@ -223,3 +267,562 @@ func autoConvert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomR func Convert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus(in *apiextensions.CustomResourceDefinitionStatus, out *CustomResourceDefinitionStatus, s conversion.Scope) error { return autoConvert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus(in, out, s) } + +func autoConvert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(in *CustomResourceValidation, out *apiextensions.CustomResourceValidation, s conversion.Scope) error { + if in.OpenAPIV3Schema != nil { + in, out := &in.OpenAPIV3Schema, &out.OpenAPIV3Schema + *out = new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.OpenAPIV3Schema = nil + } + return nil +} + +// Convert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation is an autogenerated conversion function. +func Convert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(in *CustomResourceValidation, out *apiextensions.CustomResourceValidation, s conversion.Scope) error { + return autoConvert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(in, out, s) +} + +func autoConvert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation(in *apiextensions.CustomResourceValidation, out *CustomResourceValidation, s conversion.Scope) error { + if in.OpenAPIV3Schema != nil { + in, out := &in.OpenAPIV3Schema, &out.OpenAPIV3Schema + *out = new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.OpenAPIV3Schema = nil + } + return nil +} + +// Convert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation is an autogenerated conversion function. +func Convert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation(in *apiextensions.CustomResourceValidation, out *CustomResourceValidation, s conversion.Scope) error { + return autoConvert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation(in, out, s) +} + +func autoConvert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation(in *ExternalDocumentation, out *apiextensions.ExternalDocumentation, s conversion.Scope) error { + out.Description = in.Description + out.URL = in.URL + return nil +} + +// Convert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation is an autogenerated conversion function. +func Convert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation(in *ExternalDocumentation, out *apiextensions.ExternalDocumentation, s conversion.Scope) error { + return autoConvert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation(in, out, s) +} + +func autoConvert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation(in *apiextensions.ExternalDocumentation, out *ExternalDocumentation, s conversion.Scope) error { + out.Description = in.Description + out.URL = in.URL + return nil +} + +// Convert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation is an autogenerated conversion function. +func Convert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation(in *apiextensions.ExternalDocumentation, out *ExternalDocumentation, s conversion.Scope) error { + return autoConvert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation(in, out, s) +} + +func autoConvert_v1beta1_JSON_To_apiextensions_JSON(in *JSON, out *apiextensions.JSON, s conversion.Scope) error { + // WARNING: in.Raw requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_apiextensions_JSON_To_v1beta1_JSON(in *apiextensions.JSON, out *JSON, s conversion.Scope) error { + // FIXME: Type apiextensions.JSON is unsupported. + return nil +} + +func autoConvert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(in *JSONSchemaProps, out *apiextensions.JSONSchemaProps, s conversion.Scope) error { + out.ID = in.ID + out.Schema = apiextensions.JSONSchemaURL(in.Schema) + out.Ref = (*string)(unsafe.Pointer(in.Ref)) + out.Description = in.Description + out.Type = in.Type + out.Format = in.Format + out.Title = in.Title + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = new(apiextensions.JSON) + if err := Convert_v1beta1_JSON_To_apiextensions_JSON(*in, *out, s); err != nil { + return err + } + } else { + out.Default = nil + } + out.Maximum = (*float64)(unsafe.Pointer(in.Maximum)) + out.ExclusiveMaximum = in.ExclusiveMaximum + out.Minimum = (*float64)(unsafe.Pointer(in.Minimum)) + out.ExclusiveMinimum = in.ExclusiveMinimum + out.MaxLength = (*int64)(unsafe.Pointer(in.MaxLength)) + out.MinLength = (*int64)(unsafe.Pointer(in.MinLength)) + out.Pattern = in.Pattern + out.MaxItems = (*int64)(unsafe.Pointer(in.MaxItems)) + out.MinItems = (*int64)(unsafe.Pointer(in.MinItems)) + out.UniqueItems = in.UniqueItems + out.MultipleOf = (*float64)(unsafe.Pointer(in.MultipleOf)) + if in.Enum != nil { + in, out := &in.Enum, &out.Enum + *out = make([]apiextensions.JSON, len(*in)) + for i := range *in { + if err := Convert_v1beta1_JSON_To_apiextensions_JSON(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Enum = nil + } + out.MaxProperties = (*int64)(unsafe.Pointer(in.MaxProperties)) + out.MinProperties = (*int64)(unsafe.Pointer(in.MinProperties)) + out.Required = *(*[]string)(unsafe.Pointer(&in.Required)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = new(apiextensions.JSONSchemaPropsOrArray) + if err := Convert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray(*in, *out, s); err != nil { + return err + } + } else { + out.Items = nil + } + if in.AllOf != nil { + in, out := &in.AllOf, &out.AllOf + *out = make([]apiextensions.JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.AllOf = nil + } + if in.OneOf != nil { + in, out := &in.OneOf, &out.OneOf + *out = make([]apiextensions.JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.OneOf = nil + } + if in.AnyOf != nil { + in, out := &in.AnyOf, &out.AnyOf + *out = make([]apiextensions.JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.AnyOf = nil + } + if in.Not != nil { + in, out := &in.Not, &out.Not + *out = new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Not = nil + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]apiextensions.JSONSchemaProps, len(*in)) + for key, val := range *in { + newVal := new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Properties = nil + } + if in.AdditionalProperties != nil { + in, out := &in.AdditionalProperties, &out.AdditionalProperties + *out = new(apiextensions.JSONSchemaPropsOrBool) + if err := Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool(*in, *out, s); err != nil { + return err + } + } else { + out.AdditionalProperties = nil + } + if in.PatternProperties != nil { + in, out := &in.PatternProperties, &out.PatternProperties + *out = make(map[string]apiextensions.JSONSchemaProps, len(*in)) + for key, val := range *in { + newVal := new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.PatternProperties = nil + } + if in.Dependencies != nil { + in, out := &in.Dependencies, &out.Dependencies + *out = make(apiextensions.JSONSchemaDependencies, len(*in)) + for key, val := range *in { + newVal := new(apiextensions.JSONSchemaPropsOrStringArray) + if err := Convert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Dependencies = nil + } + if in.AdditionalItems != nil { + in, out := &in.AdditionalItems, &out.AdditionalItems + *out = new(apiextensions.JSONSchemaPropsOrBool) + if err := Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool(*in, *out, s); err != nil { + return err + } + } else { + out.AdditionalItems = nil + } + if in.Definitions != nil { + in, out := &in.Definitions, &out.Definitions + *out = make(apiextensions.JSONSchemaDefinitions, len(*in)) + for key, val := range *in { + newVal := new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Definitions = nil + } + out.ExternalDocs = (*apiextensions.ExternalDocumentation)(unsafe.Pointer(in.ExternalDocs)) + if in.Example != nil { + in, out := &in.Example, &out.Example + *out = new(apiextensions.JSON) + if err := Convert_v1beta1_JSON_To_apiextensions_JSON(*in, *out, s); err != nil { + return err + } + } else { + out.Example = nil + } + return nil +} + +// Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps is an autogenerated conversion function. +func Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(in *JSONSchemaProps, out *apiextensions.JSONSchemaProps, s conversion.Scope) error { + return autoConvert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(in, out, s) +} + +func autoConvert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(in *apiextensions.JSONSchemaProps, out *JSONSchemaProps, s conversion.Scope) error { + out.ID = in.ID + out.Schema = JSONSchemaURL(in.Schema) + out.Ref = (*string)(unsafe.Pointer(in.Ref)) + out.Description = in.Description + out.Type = in.Type + out.Format = in.Format + out.Title = in.Title + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = new(JSON) + if err := Convert_apiextensions_JSON_To_v1beta1_JSON(*in, *out, s); err != nil { + return err + } + } else { + out.Default = nil + } + out.Maximum = (*float64)(unsafe.Pointer(in.Maximum)) + out.ExclusiveMaximum = in.ExclusiveMaximum + out.Minimum = (*float64)(unsafe.Pointer(in.Minimum)) + out.ExclusiveMinimum = in.ExclusiveMinimum + out.MaxLength = (*int64)(unsafe.Pointer(in.MaxLength)) + out.MinLength = (*int64)(unsafe.Pointer(in.MinLength)) + out.Pattern = in.Pattern + out.MaxItems = (*int64)(unsafe.Pointer(in.MaxItems)) + out.MinItems = (*int64)(unsafe.Pointer(in.MinItems)) + out.UniqueItems = in.UniqueItems + out.MultipleOf = (*float64)(unsafe.Pointer(in.MultipleOf)) + if in.Enum != nil { + in, out := &in.Enum, &out.Enum + *out = make([]JSON, len(*in)) + for i := range *in { + if err := Convert_apiextensions_JSON_To_v1beta1_JSON(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Enum = nil + } + out.MaxProperties = (*int64)(unsafe.Pointer(in.MaxProperties)) + out.MinProperties = (*int64)(unsafe.Pointer(in.MinProperties)) + out.Required = *(*[]string)(unsafe.Pointer(&in.Required)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = new(JSONSchemaPropsOrArray) + if err := Convert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray(*in, *out, s); err != nil { + return err + } + } else { + out.Items = nil + } + if in.AllOf != nil { + in, out := &in.AllOf, &out.AllOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.AllOf = nil + } + if in.OneOf != nil { + in, out := &in.OneOf, &out.OneOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.OneOf = nil + } + if in.AnyOf != nil { + in, out := &in.AnyOf, &out.AnyOf + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.AnyOf = nil + } + if in.Not != nil { + in, out := &in.Not, &out.Not + *out = new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Not = nil + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]JSONSchemaProps, len(*in)) + for key, val := range *in { + newVal := new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Properties = nil + } + if in.AdditionalProperties != nil { + in, out := &in.AdditionalProperties, &out.AdditionalProperties + *out = new(JSONSchemaPropsOrBool) + if err := Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool(*in, *out, s); err != nil { + return err + } + } else { + out.AdditionalProperties = nil + } + if in.PatternProperties != nil { + in, out := &in.PatternProperties, &out.PatternProperties + *out = make(map[string]JSONSchemaProps, len(*in)) + for key, val := range *in { + newVal := new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.PatternProperties = nil + } + if in.Dependencies != nil { + in, out := &in.Dependencies, &out.Dependencies + *out = make(JSONSchemaDependencies, len(*in)) + for key, val := range *in { + newVal := new(JSONSchemaPropsOrStringArray) + if err := Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Dependencies = nil + } + if in.AdditionalItems != nil { + in, out := &in.AdditionalItems, &out.AdditionalItems + *out = new(JSONSchemaPropsOrBool) + if err := Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool(*in, *out, s); err != nil { + return err + } + } else { + out.AdditionalItems = nil + } + if in.Definitions != nil { + in, out := &in.Definitions, &out.Definitions + *out = make(JSONSchemaDefinitions, len(*in)) + for key, val := range *in { + newVal := new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&val, newVal, s); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Definitions = nil + } + out.ExternalDocs = (*ExternalDocumentation)(unsafe.Pointer(in.ExternalDocs)) + if in.Example != nil { + in, out := &in.Example, &out.Example + *out = new(JSON) + if err := Convert_apiextensions_JSON_To_v1beta1_JSON(*in, *out, s); err != nil { + return err + } + } else { + out.Example = nil + } + return nil +} + +func autoConvert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray(in *JSONSchemaPropsOrArray, out *apiextensions.JSONSchemaPropsOrArray, s conversion.Scope) error { + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Schema = nil + } + if in.JSONSchemas != nil { + in, out := &in.JSONSchemas, &out.JSONSchemas + *out = make([]apiextensions.JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.JSONSchemas = nil + } + return nil +} + +// Convert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray is an autogenerated conversion function. +func Convert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray(in *JSONSchemaPropsOrArray, out *apiextensions.JSONSchemaPropsOrArray, s conversion.Scope) error { + return autoConvert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray(in, out, s) +} + +func autoConvert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray(in *apiextensions.JSONSchemaPropsOrArray, out *JSONSchemaPropsOrArray, s conversion.Scope) error { + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Schema = nil + } + if in.JSONSchemas != nil { + in, out := &in.JSONSchemas, &out.JSONSchemas + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.JSONSchemas = nil + } + return nil +} + +// Convert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray is an autogenerated conversion function. +func Convert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray(in *apiextensions.JSONSchemaPropsOrArray, out *JSONSchemaPropsOrArray, s conversion.Scope) error { + return autoConvert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray(in, out, s) +} + +func autoConvert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool(in *JSONSchemaPropsOrBool, out *apiextensions.JSONSchemaPropsOrBool, s conversion.Scope) error { + out.Allows = in.Allows + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Schema = nil + } + return nil +} + +// Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool is an autogenerated conversion function. +func Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool(in *JSONSchemaPropsOrBool, out *apiextensions.JSONSchemaPropsOrBool, s conversion.Scope) error { + return autoConvert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool(in, out, s) +} + +func autoConvert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool(in *apiextensions.JSONSchemaPropsOrBool, out *JSONSchemaPropsOrBool, s conversion.Scope) error { + out.Allows = in.Allows + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Schema = nil + } + return nil +} + +// Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool is an autogenerated conversion function. +func Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool(in *apiextensions.JSONSchemaPropsOrBool, out *JSONSchemaPropsOrBool, s conversion.Scope) error { + return autoConvert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool(in, out, s) +} + +func autoConvert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray(in *JSONSchemaPropsOrStringArray, out *apiextensions.JSONSchemaPropsOrStringArray, s conversion.Scope) error { + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(apiextensions.JSONSchemaProps) + if err := Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Schema = nil + } + out.Property = *(*[]string)(unsafe.Pointer(&in.Property)) + return nil +} + +// Convert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray is an autogenerated conversion function. +func Convert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray(in *JSONSchemaPropsOrStringArray, out *apiextensions.JSONSchemaPropsOrStringArray, s conversion.Scope) error { + return autoConvert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray(in, out, s) +} + +func autoConvert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray(in *apiextensions.JSONSchemaPropsOrStringArray, out *JSONSchemaPropsOrStringArray, s conversion.Scope) error { + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(JSONSchemaProps) + if err := Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(*in, *out, s); err != nil { + return err + } + } else { + out.Schema = nil + } + out.Property = *(*[]string)(unsafe.Pointer(&in.Property)) + return nil +} + +// Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray is an autogenerated conversion function. +func Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray(in *apiextensions.JSONSchemaPropsOrStringArray, out *JSONSchemaPropsOrStringArray, s conversion.Scope) error { + return autoConvert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray(in, out, s) +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go index 5291372c34..6f97eb6db6 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,6 @@ limitations under the License. package v1beta1 import ( - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" reflect "reflect" @@ -33,126 +32,368 @@ func init() { // RegisterDeepCopies adds deep-copy functions to the given scheme. Public // to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. func RegisterDeepCopies(scheme *runtime.Scheme) error { return scheme.AddGeneratedDeepCopyFuncs( - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinition, InType: reflect.TypeOf(&CustomResourceDefinition{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionCondition, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionList, InType: reflect.TypeOf(&CustomResourceDefinitionList{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionNames, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionSpec, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionStatus, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinition).DeepCopyInto(out.(*CustomResourceDefinition)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionCondition).DeepCopyInto(out.(*CustomResourceDefinitionCondition)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionList).DeepCopyInto(out.(*CustomResourceDefinitionList)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionNames).DeepCopyInto(out.(*CustomResourceDefinitionNames)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionSpec).DeepCopyInto(out.(*CustomResourceDefinitionSpec)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionStatus).DeepCopyInto(out.(*CustomResourceDefinitionStatus)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceValidation).DeepCopyInto(out.(*CustomResourceValidation)) + return nil + }, InType: reflect.TypeOf(&CustomResourceValidation{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalDocumentation).DeepCopyInto(out.(*ExternalDocumentation)) + return nil + }, InType: reflect.TypeOf(&ExternalDocumentation{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSON).DeepCopyInto(out.(*JSON)) + return nil + }, InType: reflect.TypeOf(&JSON{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaProps).DeepCopyInto(out.(*JSONSchemaProps)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaProps{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaPropsOrArray).DeepCopyInto(out.(*JSONSchemaPropsOrArray)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaPropsOrArray{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaPropsOrBool).DeepCopyInto(out.(*JSONSchemaPropsOrBool)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaPropsOrBool{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaPropsOrStringArray).DeepCopyInto(out.(*JSONSchemaPropsOrStringArray)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaPropsOrStringArray{})}, ) } -// DeepCopy_v1beta1_CustomResourceDefinition is an autogenerated deepcopy function. -func DeepCopy_v1beta1_CustomResourceDefinition(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinition) - out := out.(*CustomResourceDefinition) - *out = *in - if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { - return err - } else { - out.ObjectMeta = *newVal.(*v1.ObjectMeta) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinition) DeepCopyInto(out *CustomResourceDefinition) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinition. +func (in *CustomResourceDefinition) DeepCopy() *CustomResourceDefinition { + if in == nil { + return nil + } + out := new(CustomResourceDefinition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomResourceDefinition) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionCondition) DeepCopyInto(out *CustomResourceDefinitionCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionCondition. +func (in *CustomResourceDefinitionCondition) DeepCopy() *CustomResourceDefinitionCondition { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionList) DeepCopyInto(out *CustomResourceDefinitionList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomResourceDefinition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } - if newVal, err := c.DeepCopy(&in.Spec); err != nil { - return err + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionList. +func (in *CustomResourceDefinitionList) DeepCopy() *CustomResourceDefinitionList { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomResourceDefinitionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionNames) DeepCopyInto(out *CustomResourceDefinitionNames) { + *out = *in + if in.ShortNames != nil { + in, out := &in.ShortNames, &out.ShortNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionNames. +func (in *CustomResourceDefinitionNames) DeepCopy() *CustomResourceDefinitionNames { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionNames) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionSpec) DeepCopyInto(out *CustomResourceDefinitionSpec) { + *out = *in + in.Names.DeepCopyInto(&out.Names) + if in.Validation != nil { + in, out := &in.Validation, &out.Validation + if *in == nil { + *out = nil } else { - out.Spec = *newVal.(*CustomResourceDefinitionSpec) + *out = new(CustomResourceValidation) + (*in).DeepCopyInto(*out) } - if newVal, err := c.DeepCopy(&in.Status); err != nil { - return err + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionSpec. +func (in *CustomResourceDefinitionSpec) DeepCopy() *CustomResourceDefinitionSpec { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionStatus) DeepCopyInto(out *CustomResourceDefinitionStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CustomResourceDefinitionCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.AcceptedNames.DeepCopyInto(&out.AcceptedNames) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionStatus. +func (in *CustomResourceDefinitionStatus) DeepCopy() *CustomResourceDefinitionStatus { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceValidation) DeepCopyInto(out *CustomResourceValidation) { + *out = *in + if in.OpenAPIV3Schema != nil { + in, out := &in.OpenAPIV3Schema, &out.OpenAPIV3Schema + if *in == nil { + *out = nil } else { - out.Status = *newVal.(*CustomResourceDefinitionStatus) + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceValidation. +func (in *CustomResourceValidation) DeepCopy() *CustomResourceValidation { + if in == nil { return nil } + out := new(CustomResourceValidation) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1beta1_CustomResourceDefinitionCondition is an autogenerated deepcopy function. -func DeepCopy_v1beta1_CustomResourceDefinitionCondition(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionCondition) - out := out.(*CustomResourceDefinitionCondition) - *out = *in - out.LastTransitionTime = in.LastTransitionTime.DeepCopy() +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalDocumentation) DeepCopyInto(out *ExternalDocumentation) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDocumentation. +func (in *ExternalDocumentation) DeepCopy() *ExternalDocumentation { + if in == nil { return nil } + out := new(ExternalDocumentation) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1beta1_CustomResourceDefinitionList is an autogenerated deepcopy function. -func DeepCopy_v1beta1_CustomResourceDefinitionList(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionList) - out := out.(*CustomResourceDefinitionList) - *out = *in - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]CustomResourceDefinition, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*CustomResourceDefinition) - } - } - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSON) DeepCopyInto(out *JSON) { + *out = *in + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSON. +func (in *JSON) DeepCopy() *JSON { + if in == nil { return nil } + out := new(JSON) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1beta1_CustomResourceDefinitionNames is an autogenerated deepcopy function. -func DeepCopy_v1beta1_CustomResourceDefinitionNames(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionNames) - out := out.(*CustomResourceDefinitionNames) - *out = *in - if in.ShortNames != nil { - in, out := &in.ShortNames, &out.ShortNames - *out = make([]string, len(*in)) - copy(*out, *in) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaProps) DeepCopyInto(out *JSONSchemaProps) { + clone := in.DeepCopy() + *out = *clone + return +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaPropsOrArray) DeepCopyInto(out *JSONSchemaPropsOrArray) { + *out = *in + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + if in.JSONSchemas != nil { + in, out := &in.JSONSchemas, &out.JSONSchemas + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaPropsOrArray. +func (in *JSONSchemaPropsOrArray) DeepCopy() *JSONSchemaPropsOrArray { + if in == nil { return nil } + out := new(JSONSchemaPropsOrArray) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1beta1_CustomResourceDefinitionSpec is an autogenerated deepcopy function. -func DeepCopy_v1beta1_CustomResourceDefinitionSpec(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionSpec) - out := out.(*CustomResourceDefinitionSpec) - *out = *in - if newVal, err := c.DeepCopy(&in.Names); err != nil { - return err +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaPropsOrBool) DeepCopyInto(out *JSONSchemaPropsOrBool) { + *out = *in + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + if *in == nil { + *out = nil } else { - out.Names = *newVal.(*CustomResourceDefinitionNames) + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaPropsOrBool. +func (in *JSONSchemaPropsOrBool) DeepCopy() *JSONSchemaPropsOrBool { + if in == nil { return nil } + out := new(JSONSchemaPropsOrBool) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1beta1_CustomResourceDefinitionStatus is an autogenerated deepcopy function. -func DeepCopy_v1beta1_CustomResourceDefinitionStatus(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionStatus) - out := out.(*CustomResourceDefinitionStatus) - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]CustomResourceDefinitionCondition, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*CustomResourceDefinitionCondition) - } - } - } - if newVal, err := c.DeepCopy(&in.AcceptedNames); err != nil { - return err +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaPropsOrStringArray) DeepCopyInto(out *JSONSchemaPropsOrStringArray) { + *out = *in + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + if *in == nil { + *out = nil } else { - out.AcceptedNames = *newVal.(*CustomResourceDefinitionNames) + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + if in.Property != nil { + in, out := &in.Property, &out.Property + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaPropsOrStringArray. +func (in *JSONSchemaPropsOrStringArray) DeepCopy() *JSONSchemaPropsOrStringArray { + if in == nil { return nil } + out := new(JSONSchemaPropsOrStringArray) + in.DeepCopyInto(out) + return out } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/BUILD index b91ec6ac79..201115a4ef 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -11,12 +9,14 @@ load( go_library( name = "go_default_library", srcs = ["validation.go"], - tags = ["automanaged"], deps = [ + "//vendor/github.com/go-openapi/spec:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/features:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) @@ -24,10 +24,22 @@ go_test( name = "go_default_test", srcs = ["validation_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go index 6623b0478a..f064b99333 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go @@ -20,10 +20,15 @@ import ( "fmt" "strings" - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" + "github.com/go-openapi/spec" + genericvalidation "k8s.io/apimachinery/pkg/api/validation" validationutil "k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation/field" + utilfeature "k8s.io/apiserver/pkg/util/feature" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" + apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features" ) // ValidateCustomResourceDefinition statically validates @@ -100,6 +105,12 @@ func ValidateCustomResourceDefinitionSpec(spec *apiextensions.CustomResourceDefi allErrs = append(allErrs, ValidateCustomResourceDefinitionNames(&spec.Names, fldPath.Child("names"))...) + if utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourceValidation) { + allErrs = append(allErrs, ValidateCustomResourceDefinitionValidation(spec.Validation, fldPath.Child("validation"))...) + } else if spec.Validation != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("validation"), "disabled by feature-gate")) + } + return allErrs } @@ -158,3 +169,162 @@ func ValidateCustomResourceDefinitionNames(names *apiextensions.CustomResourceDe return allErrs } + +// specStandardValidator applies validations for different OpenAPI specfication versions. +type specStandardValidator interface { + validate(spec *apiextensions.JSONSchemaProps, fldPath *field.Path) field.ErrorList +} + +// ValidateCustomResourceDefinitionValidation statically validates +func ValidateCustomResourceDefinitionValidation(customResourceValidation *apiextensions.CustomResourceValidation, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + + if customResourceValidation == nil { + return allErrs + } + + if customResourceValidation.OpenAPIV3Schema != nil { + openAPIV3Schema := &specStandardValidatorV3{} + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(customResourceValidation.OpenAPIV3Schema, fldPath.Child("openAPIV3Schema"), openAPIV3Schema)...) + } + + return allErrs +} + +// ValidateCustomResourceDefinitionOpenAPISchema statically validates +func ValidateCustomResourceDefinitionOpenAPISchema(schema *apiextensions.JSONSchemaProps, fldPath *field.Path, ssv specStandardValidator) field.ErrorList { + allErrs := field.ErrorList{} + + if schema == nil { + return allErrs + } + + allErrs = append(allErrs, ssv.validate(schema, fldPath)...) + + if schema.UniqueItems == true { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("uniqueItems"), "uniqueItems cannot be set to true since the runtime complexity becomes quadratic")) + } + + // additionalProperties contradicts Kubernetes API convention to ignore unknown fields + if schema.AdditionalProperties != nil { + if schema.AdditionalProperties.Allows == false { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("additionalProperties"), "additionalProperties cannot be set to false")) + } + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(schema.AdditionalProperties.Schema, fldPath.Child("additionalProperties"), ssv)...) + } + + if schema.Ref != nil { + openapiRef, err := spec.NewRef(*schema.Ref) + if err != nil { + allErrs = append(allErrs, field.Invalid(fldPath.Child("ref"), *schema.Ref, err.Error())) + } + + if !openapiRef.IsValidURI() { + allErrs = append(allErrs, field.Invalid(fldPath.Child("ref"), *schema.Ref, "ref does not point to a valid URI")) + } + } + + if schema.AdditionalItems != nil { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(schema.AdditionalItems.Schema, fldPath.Child("additionalItems"), ssv)...) + } + + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(schema.Not, fldPath.Child("not"), ssv)...) + + if len(schema.AllOf) != 0 { + for _, jsonSchema := range schema.AllOf { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("allOf"), ssv)...) + } + } + + if len(schema.OneOf) != 0 { + for _, jsonSchema := range schema.OneOf { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("oneOf"), ssv)...) + } + } + + if len(schema.AnyOf) != 0 { + for _, jsonSchema := range schema.AnyOf { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("anyOf"), ssv)...) + } + } + + if len(schema.Properties) != 0 { + for property, jsonSchema := range schema.Properties { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("properties").Key(property), ssv)...) + } + } + + if len(schema.PatternProperties) != 0 { + for property, jsonSchema := range schema.PatternProperties { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("patternProperties").Key(property), ssv)...) + } + } + + if len(schema.Definitions) != 0 { + for definition, jsonSchema := range schema.Definitions { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("definitions").Key(definition), ssv)...) + } + } + + if schema.Items != nil { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(schema.Items.Schema, fldPath.Child("items"), ssv)...) + if len(schema.Items.JSONSchemas) != 0 { + for _, jsonSchema := range schema.Items.JSONSchemas { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(&jsonSchema, fldPath.Child("items"), ssv)...) + } + } + } + + if schema.Dependencies != nil { + for dependency, jsonSchemaPropsOrStringArray := range schema.Dependencies { + allErrs = append(allErrs, ValidateCustomResourceDefinitionOpenAPISchema(jsonSchemaPropsOrStringArray.Schema, fldPath.Child("dependencies").Key(dependency), ssv)...) + } + } + + return allErrs +} + +type specStandardValidatorV3 struct{} + +// validate validates against OpenAPI Schema v3. +func (v *specStandardValidatorV3) validate(schema *apiextensions.JSONSchemaProps, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + + if schema == nil { + return allErrs + } + + if schema.Default != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("default"), "default is not supported")) + } + + if schema.ID != "" { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("id"), "id is not supported")) + } + + if schema.AdditionalItems != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("additionalItems"), "additionalItems is not supported")) + } + + if len(schema.PatternProperties) != 0 { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("patternProperties"), "patternProperties is not supported")) + } + + if len(schema.Definitions) != 0 { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("definitions"), "definitions is not supported")) + } + + if schema.Dependencies != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("dependencies"), "dependencies is not supported")) + } + + if schema.Type == "null" { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("type"), "type cannot be set to null")) + } + + if schema.Items != nil && len(schema.Items.JSONSchemas) != 0 { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("items"), "items must be a schema object and not an array")) + } + + return allErrs +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go index 5d8b38d188..ae6f2d79f8 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go @@ -21,7 +21,6 @@ limitations under the License. package apiextensions import ( - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" reflect "reflect" @@ -33,126 +32,343 @@ func init() { // RegisterDeepCopies adds deep-copy functions to the given scheme. Public // to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. func RegisterDeepCopies(scheme *runtime.Scheme) error { return scheme.AddGeneratedDeepCopyFuncs( - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinition, InType: reflect.TypeOf(&CustomResourceDefinition{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionCondition, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionList, InType: reflect.TypeOf(&CustomResourceDefinitionList{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionNames, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionSpec, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})}, - conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionStatus, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinition).DeepCopyInto(out.(*CustomResourceDefinition)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionCondition).DeepCopyInto(out.(*CustomResourceDefinitionCondition)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionList).DeepCopyInto(out.(*CustomResourceDefinitionList)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionNames).DeepCopyInto(out.(*CustomResourceDefinitionNames)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionSpec).DeepCopyInto(out.(*CustomResourceDefinitionSpec)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceDefinitionStatus).DeepCopyInto(out.(*CustomResourceDefinitionStatus)) + return nil + }, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CustomResourceValidation).DeepCopyInto(out.(*CustomResourceValidation)) + return nil + }, InType: reflect.TypeOf(&CustomResourceValidation{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalDocumentation).DeepCopyInto(out.(*ExternalDocumentation)) + return nil + }, InType: reflect.TypeOf(&ExternalDocumentation{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaProps).DeepCopyInto(out.(*JSONSchemaProps)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaProps{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaPropsOrArray).DeepCopyInto(out.(*JSONSchemaPropsOrArray)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaPropsOrArray{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaPropsOrBool).DeepCopyInto(out.(*JSONSchemaPropsOrBool)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaPropsOrBool{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*JSONSchemaPropsOrStringArray).DeepCopyInto(out.(*JSONSchemaPropsOrStringArray)) + return nil + }, InType: reflect.TypeOf(&JSONSchemaPropsOrStringArray{})}, ) } -// DeepCopy_apiextensions_CustomResourceDefinition is an autogenerated deepcopy function. -func DeepCopy_apiextensions_CustomResourceDefinition(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinition) - out := out.(*CustomResourceDefinition) - *out = *in - if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { - return err - } else { - out.ObjectMeta = *newVal.(*v1.ObjectMeta) - } - if newVal, err := c.DeepCopy(&in.Spec); err != nil { - return err - } else { - out.Spec = *newVal.(*CustomResourceDefinitionSpec) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinition) DeepCopyInto(out *CustomResourceDefinition) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinition. +func (in *CustomResourceDefinition) DeepCopy() *CustomResourceDefinition { + if in == nil { + return nil + } + out := new(CustomResourceDefinition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomResourceDefinition) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionCondition) DeepCopyInto(out *CustomResourceDefinitionCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionCondition. +func (in *CustomResourceDefinitionCondition) DeepCopy() *CustomResourceDefinitionCondition { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionList) DeepCopyInto(out *CustomResourceDefinitionList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomResourceDefinition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } - if newVal, err := c.DeepCopy(&in.Status); err != nil { - return err + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionList. +func (in *CustomResourceDefinitionList) DeepCopy() *CustomResourceDefinitionList { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomResourceDefinitionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionNames) DeepCopyInto(out *CustomResourceDefinitionNames) { + *out = *in + if in.ShortNames != nil { + in, out := &in.ShortNames, &out.ShortNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionNames. +func (in *CustomResourceDefinitionNames) DeepCopy() *CustomResourceDefinitionNames { + if in == nil { + return nil + } + out := new(CustomResourceDefinitionNames) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionSpec) DeepCopyInto(out *CustomResourceDefinitionSpec) { + *out = *in + in.Names.DeepCopyInto(&out.Names) + if in.Validation != nil { + in, out := &in.Validation, &out.Validation + if *in == nil { + *out = nil } else { - out.Status = *newVal.(*CustomResourceDefinitionStatus) + *out = new(CustomResourceValidation) + (*in).DeepCopyInto(*out) } - return nil } + return } -// DeepCopy_apiextensions_CustomResourceDefinitionCondition is an autogenerated deepcopy function. -func DeepCopy_apiextensions_CustomResourceDefinitionCondition(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionCondition) - out := out.(*CustomResourceDefinitionCondition) - *out = *in - out.LastTransitionTime = in.LastTransitionTime.DeepCopy() +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionSpec. +func (in *CustomResourceDefinitionSpec) DeepCopy() *CustomResourceDefinitionSpec { + if in == nil { return nil } + out := new(CustomResourceDefinitionSpec) + in.DeepCopyInto(out) + return out } -// DeepCopy_apiextensions_CustomResourceDefinitionList is an autogenerated deepcopy function. -func DeepCopy_apiextensions_CustomResourceDefinitionList(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionList) - out := out.(*CustomResourceDefinitionList) - *out = *in - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]CustomResourceDefinition, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*CustomResourceDefinition) - } - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceDefinitionStatus) DeepCopyInto(out *CustomResourceDefinitionStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CustomResourceDefinitionCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + in.AcceptedNames.DeepCopyInto(&out.AcceptedNames) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionStatus. +func (in *CustomResourceDefinitionStatus) DeepCopy() *CustomResourceDefinitionStatus { + if in == nil { return nil } + out := new(CustomResourceDefinitionStatus) + in.DeepCopyInto(out) + return out } -// DeepCopy_apiextensions_CustomResourceDefinitionNames is an autogenerated deepcopy function. -func DeepCopy_apiextensions_CustomResourceDefinitionNames(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionNames) - out := out.(*CustomResourceDefinitionNames) - *out = *in - if in.ShortNames != nil { - in, out := &in.ShortNames, &out.ShortNames - *out = make([]string, len(*in)) - copy(*out, *in) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomResourceValidation) DeepCopyInto(out *CustomResourceValidation) { + *out = *in + if in.OpenAPIV3Schema != nil { + in, out := &in.OpenAPIV3Schema, &out.OpenAPIV3Schema + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceValidation. +func (in *CustomResourceValidation) DeepCopy() *CustomResourceValidation { + if in == nil { return nil } + out := new(CustomResourceValidation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalDocumentation) DeepCopyInto(out *ExternalDocumentation) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalDocumentation. +func (in *ExternalDocumentation) DeepCopy() *ExternalDocumentation { + if in == nil { + return nil + } + out := new(ExternalDocumentation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaProps) DeepCopyInto(out *JSONSchemaProps) { + clone := in.DeepCopy() + *out = *clone + return } -// DeepCopy_apiextensions_CustomResourceDefinitionSpec is an autogenerated deepcopy function. -func DeepCopy_apiextensions_CustomResourceDefinitionSpec(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionSpec) - out := out.(*CustomResourceDefinitionSpec) - *out = *in - if newVal, err := c.DeepCopy(&in.Names); err != nil { - return err +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaPropsOrArray) DeepCopyInto(out *JSONSchemaPropsOrArray) { + *out = *in + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + if *in == nil { + *out = nil } else { - out.Names = *newVal.(*CustomResourceDefinitionNames) + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + if in.JSONSchemas != nil { + in, out := &in.JSONSchemas, &out.JSONSchemas + *out = make([]JSONSchemaProps, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaPropsOrArray. +func (in *JSONSchemaPropsOrArray) DeepCopy() *JSONSchemaPropsOrArray { + if in == nil { return nil } + out := new(JSONSchemaPropsOrArray) + in.DeepCopyInto(out) + return out } -// DeepCopy_apiextensions_CustomResourceDefinitionStatus is an autogenerated deepcopy function. -func DeepCopy_apiextensions_CustomResourceDefinitionStatus(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*CustomResourceDefinitionStatus) - out := out.(*CustomResourceDefinitionStatus) - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]CustomResourceDefinitionCondition, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*CustomResourceDefinitionCondition) - } - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaPropsOrBool) DeepCopyInto(out *JSONSchemaPropsOrBool) { + *out = *in + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + if *in == nil { + *out = nil + } else { + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } - if newVal, err := c.DeepCopy(&in.AcceptedNames); err != nil { - return err + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaPropsOrBool. +func (in *JSONSchemaPropsOrBool) DeepCopy() *JSONSchemaPropsOrBool { + if in == nil { + return nil + } + out := new(JSONSchemaPropsOrBool) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JSONSchemaPropsOrStringArray) DeepCopyInto(out *JSONSchemaPropsOrStringArray) { + *out = *in + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + if *in == nil { + *out = nil } else { - out.AcceptedNames = *newVal.(*CustomResourceDefinitionNames) + *out = new(JSONSchemaProps) + (*in).DeepCopyInto(*out) } + } + if in.Property != nil { + in, out := &in.Property, &out.Property + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaPropsOrStringArray. +func (in *JSONSchemaPropsOrStringArray) DeepCopy() *JSONSchemaPropsOrStringArray { + if in == nil { return nil } + out := new(JSONSchemaPropsOrStringArray) + in.DeepCopyInto(out) + return out } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/BUILD index 4885fd6c08..8f4764ceb3 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -15,12 +13,15 @@ go_library( "customresource_discovery_controller.go", "customresource_handler.go", ], - tags = ["automanaged"], deps = [ + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/go-openapi/strfmt:go_default_library", + "//vendor/github.com/go-openapi/validate:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions:go_default_library", @@ -31,6 +32,7 @@ go_library( "//vendor/k8s.io/apiextensions-apiserver/pkg/controller/status:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", @@ -61,3 +63,19 @@ go_library( "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go index 24778128fc..de90cef906 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go @@ -78,10 +78,23 @@ func init() { Scheme.AddUnversionedTypes(unversionedVersion, unversionedTypes...) } +type ExtraConfig struct { + CRDRESTOptionsGetter genericregistry.RESTOptionsGetter +} + type Config struct { - GenericConfig *genericapiserver.Config + GenericConfig *genericapiserver.RecommendedConfig + ExtraConfig ExtraConfig +} - CRDRESTOptionsGetter genericregistry.RESTOptionsGetter +type completedConfig struct { + GenericConfig genericapiserver.CompletedConfig + ExtraConfig *ExtraConfig +} + +type CompletedConfig struct { + // Embed a private pointer that cannot be instantiated outside of this package. + *completedConfig } type CustomResourceDefinitions struct { @@ -91,31 +104,25 @@ type CustomResourceDefinitions struct { Informers internalinformers.SharedInformerFactory } -type completedConfig struct { - *Config -} - // Complete fills in any fields not set that are required to have valid data. It's mutating the receiver. -func (c *Config) Complete() completedConfig { - c.GenericConfig.EnableDiscovery = false - c.GenericConfig.Complete() +func (cfg *Config) Complete() CompletedConfig { + c := completedConfig{ + cfg.GenericConfig.Complete(), + &cfg.ExtraConfig, + } + c.GenericConfig.EnableDiscovery = false c.GenericConfig.Version = &version.Info{ Major: "0", Minor: "1", } - return completedConfig{c} -} - -// SkipComplete provides a way to construct a server instance without config completion. -func (c *Config) SkipComplete() completedConfig { - return completedConfig{c} + return CompletedConfig{&c} } // New returns a new instance of CustomResourceDefinitions from the given config. func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) (*CustomResourceDefinitions, error) { - genericServer, err := c.Config.GenericConfig.SkipComplete().New("apiextensions-apiserver", delegationTarget) // completion is done in Complete, no need for a second time + genericServer, err := c.GenericConfig.New("apiextensions-apiserver", delegationTarget) if err != nil { return nil, err } @@ -171,26 +178,27 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) groupDiscoveryHandler, s.GenericAPIServer.RequestContextMapper(), s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions().Lister(), + s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions(), delegateHandler, - c.CRDRESTOptionsGetter, + c.ExtraConfig.CRDRESTOptionsGetter, c.GenericConfig.AdmissionControl, ) s.GenericAPIServer.Handler.NonGoRestfulMux.Handle("/apis", crdHandler) s.GenericAPIServer.Handler.NonGoRestfulMux.HandlePrefix("/apis/", crdHandler) + // this only happens when KUBE_API_VERSIONS is set. We must return without adding controllers or poststarthooks which would affect healthz + if crdClient == nil { + return s, nil + } + crdController := NewDiscoveryController(s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions(), versionDiscoveryHandler, groupDiscoveryHandler, c.GenericConfig.RequestContextMapper) - namingController := status.NewNamingConditionController(s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions(), crdClient) + namingController := status.NewNamingConditionController(s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions(), crdClient.Apiextensions()) finalizingController := finalizer.NewCRDFinalizer( s.Informers.Apiextensions().InternalVersion().CustomResourceDefinitions(), - crdClient, + crdClient.Apiextensions(), crdHandler, ) - // this only happens when KUBE_API_VERSIONS is set. We must return without adding poststarthooks which would affect healthz - if crdClient == nil { - return s, nil - } - s.GenericAPIServer.AddPostStartHook("start-apiextensions-informers", func(context genericapiserver.PostStartHookContext) error { s.Informers.Start(context.StopCh) return nil diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go index cf60827ae7..86d9b854fe 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go @@ -26,6 +26,12 @@ import ( "sync/atomic" "time" + openapispec "github.com/go-openapi/spec" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/validate" + "github.com/golang/glog" + + apiequality "k8s.io/apimachinery/pkg/api/equality" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -44,15 +50,18 @@ import ( genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" "k8s.io/apiserver/pkg/storage/storagebackend" "k8s.io/client-go/discovery" + cache "k8s.io/client-go/tools/cache" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" + apiservervalidation "k8s.io/apiextensions-apiserver/pkg/apiserver/validation" + informers "k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion" listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion" "k8s.io/apiextensions-apiserver/pkg/controller/finalizer" "k8s.io/apiextensions-apiserver/pkg/registry/customresource" ) // crdHandler serves the `/apis` endpoint. -// This is registered as a filter so that it never collides with any explictly registered endpoints +// This is registered as a filter so that it never collides with any explicitly registered endpoints type crdHandler struct { versionDiscoveryHandler *versionDiscoveryHandler groupDiscoveryHandler *groupDiscoveryHandler @@ -72,6 +81,11 @@ type crdHandler struct { // crdInfo stores enough information to serve the storage for the custom resource type crdInfo struct { + // spec and acceptedNames are used to compare against if a change is made on a CRD. We only update + // the storage if one of these changes. + spec *apiextensions.CustomResourceDefinitionSpec + acceptedNames *apiextensions.CustomResourceDefinitionNames + storage *customresource.REST requestScope handlers.RequestScope } @@ -84,6 +98,7 @@ func NewCustomResourceDefinitionHandler( groupDiscoveryHandler *groupDiscoveryHandler, requestContextMapper apirequest.RequestContextMapper, crdLister listers.CustomResourceDefinitionLister, + crdInformer informers.CustomResourceDefinitionInformer, delegate http.Handler, restOptionsGetter generic.RESTOptionsGetter, admission admission.Interface) *crdHandler { @@ -98,6 +113,13 @@ func NewCustomResourceDefinitionHandler( admission: admission, } + crdInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + UpdateFunc: ret.updateCustomResourceDefinition, + DeleteFunc: func(obj interface{}) { + ret.removeDeadStorage() + }, + }) + ret.customStorage.Store(crdStorageMap{}) return ret } @@ -155,7 +177,12 @@ func (r *crdHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { terminating := apiextensions.IsCRDConditionTrue(crd, apiextensions.Terminating) - crdInfo := r.getServingInfoFor(crd) + crdInfo, err := r.getServingInfoFor(crd) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + storage := crdInfo.storage requestScope := crdInfo.requestScope minRequestTimeout := 1 * time.Minute @@ -228,7 +255,7 @@ func (r *crdHandler) removeDeadStorage() { return } - for uid := range storageMap { + for uid, s := range storageMap { found := false for _, crd := range allCustomResourceDefinitions { if crd.UID == uid { @@ -237,6 +264,8 @@ func (r *crdHandler) removeDeadStorage() { } } if !found { + glog.V(4).Infof("Removing dead CRD storage for %v", s.requestScope.Resource) + s.storage.DestroyFunc() delete(storageMap, uid) } } @@ -250,15 +279,18 @@ func (r *crdHandler) removeDeadStorage() { // GetCustomResourceListerCollectionDeleter returns the ListerCollectionDeleter for // the given uid, or nil if one does not exist. func (r *crdHandler) GetCustomResourceListerCollectionDeleter(crd *apiextensions.CustomResourceDefinition) finalizer.ListerCollectionDeleter { - info := r.getServingInfoFor(crd) + info, err := r.getServingInfoFor(crd) + if err != nil { + utilruntime.HandleError(err) + } return info.storage } -func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefinition) *crdInfo { +func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefinition) (*crdInfo, error) { storageMap := r.customStorage.Load().(crdStorageMap) ret, ok := storageMap[crd.UID] if ok { - return ret + return ret, nil } r.customStorageLock.Lock() @@ -266,7 +298,7 @@ func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefiniti ret, ok = storageMap[crd.UID] if ok { - return ret + return ret, nil } // In addition to Unstructured objects (Custom Resources), we also may sometimes need to @@ -281,20 +313,32 @@ func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefiniti parameterScheme.AddGeneratedDeepCopyFuncs(metav1.GetGeneratedDeepCopyFuncs()...) parameterCodec := runtime.NewParameterCodec(parameterScheme) - kind := schema.GroupVersionKind{Group: crd.Spec.Group, Version: crd.Spec.Version, Kind: crd.Spec.Names.Kind} + kind := schema.GroupVersionKind{Group: crd.Spec.Group, Version: crd.Spec.Version, Kind: crd.Status.AcceptedNames.Kind} typer := unstructuredObjectTyper{ delegate: parameterScheme, unstructuredTyper: discovery.NewUnstructuredObjectTyper(nil), } creator := unstructuredCreator{} + + // convert CRD schema to openapi schema + openapiSchema := &openapispec.Schema{} + if err := apiservervalidation.ConvertToOpenAPITypes(crd, openapiSchema); err != nil { + return nil, err + } + if err := openapispec.ExpandSchema(openapiSchema, nil, nil); err != nil { + return nil, err + } + validator := validate.NewSchemaValidator(openapiSchema, nil, "", strfmt.Default) + storage := customresource.NewREST( - schema.GroupResource{Group: crd.Spec.Group, Resource: crd.Spec.Names.Plural}, - schema.GroupVersionKind{Group: crd.Spec.Group, Version: crd.Spec.Version, Kind: crd.Spec.Names.ListKind}, + schema.GroupResource{Group: crd.Spec.Group, Resource: crd.Status.AcceptedNames.Plural}, + schema.GroupVersionKind{Group: crd.Spec.Group, Version: crd.Spec.Version, Kind: crd.Status.AcceptedNames.ListKind}, UnstructuredCopier{}, customresource.NewStrategy( typer, crd.Spec.Scope == apiextensions.NamespaceScoped, kind, + validator, ), r.restOptionsGetter, ) @@ -332,7 +376,7 @@ func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefiniti Typer: typer, UnsafeConvertor: unstructured.UnstructuredObjectConverter{}, - Resource: schema.GroupVersionResource{Group: crd.Spec.Group, Version: crd.Spec.Version, Resource: crd.Spec.Names.Plural}, + Resource: schema.GroupVersionResource{Group: crd.Spec.Group, Version: crd.Spec.Version, Resource: crd.Status.AcceptedNames.Plural}, Kind: kind, Subresource: "", @@ -340,12 +384,57 @@ func (r *crdHandler) getServingInfoFor(crd *apiextensions.CustomResourceDefiniti } ret = &crdInfo{ + spec: &crd.Spec, + acceptedNames: &crd.Status.AcceptedNames, + storage: storage, requestScope: requestScope, } - storageMap[crd.UID] = ret - r.customStorage.Store(storageMap) - return ret + + storageMap2 := make(crdStorageMap, len(storageMap)) + + // Copy because we cannot write to storageMap without a race + // as it is used without locking elsewhere + for k, v := range storageMap { + storageMap2[k] = v + } + + storageMap2[crd.UID] = ret + r.customStorage.Store(storageMap2) + return ret, nil +} + +func (c *crdHandler) updateCustomResourceDefinition(oldObj, newObj interface{}) { + oldCRD := oldObj.(*apiextensions.CustomResourceDefinition) + newCRD := newObj.(*apiextensions.CustomResourceDefinition) + + c.customStorageLock.Lock() + defer c.customStorageLock.Unlock() + storageMap := c.customStorage.Load().(crdStorageMap) + + oldInfo, found := storageMap[newCRD.UID] + if !found { + return + } + if apiequality.Semantic.DeepEqual(&newCRD.Spec, oldInfo.spec) && apiequality.Semantic.DeepEqual(&newCRD.Status.AcceptedNames, oldInfo.acceptedNames) { + glog.V(6).Infof("Ignoring customresourcedefinition %s update because neither spec, nor accepted names changed", oldCRD.Name) + return + } + + glog.V(4).Infof("Updating customresourcedefinition %s", oldCRD.Name) + storageMap2 := make(crdStorageMap, len(storageMap)) + + // Copy because we cannot write to storageMap without a race + // as it is used without locking elsewhere + for k, v := range storageMap { + if k == oldCRD.UID { + v.storage.DestroyFunc() + continue + } + storageMap2[k] = v + } + + c.customStorage.Store(storageMap2) } type unstructuredNegotiatedSerializer struct { diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/BUILD new file mode 100644 index 0000000000..b64622758b --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["validation.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/go-openapi/validate:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go new file mode 100644 index 0000000000..c1cff14177 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go @@ -0,0 +1,241 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "github.com/go-openapi/spec" + "github.com/go-openapi/validate" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" +) + +// ValidateCustomResource validates the Custom Resource against the schema in the CustomResourceDefinition. +// CustomResource is a JSON data structure. +func ValidateCustomResource(customResource interface{}, validator *validate.SchemaValidator) error { + result := validator.Validate(customResource) + if result.AsError() != nil { + return result.AsError() + } + return nil +} + +// ConvertToOpenAPITypes is used to convert internal types to go-openapi types. +func ConvertToOpenAPITypes(in *apiextensions.CustomResourceDefinition, out *spec.Schema) error { + if in.Spec.Validation != nil { + if err := convertJSONSchemaProps(in.Spec.Validation.OpenAPIV3Schema, out); err != nil { + return err + } + } + return nil +} + +func convertJSONSchemaProps(in *apiextensions.JSONSchemaProps, out *spec.Schema) error { + if in == nil { + return nil + } + + out.ID = in.ID + out.Schema = spec.SchemaURL(in.Schema) + out.Description = in.Description + if in.Type != "" { + out.Type = spec.StringOrArray([]string{in.Type}) + } + out.Format = in.Format + out.Title = in.Title + out.Maximum = in.Maximum + out.ExclusiveMaximum = in.ExclusiveMaximum + out.Minimum = in.Minimum + out.ExclusiveMinimum = in.ExclusiveMinimum + out.MaxLength = in.MaxLength + out.MinLength = in.MinLength + out.Pattern = in.Pattern + out.MaxItems = in.MaxItems + out.MinItems = in.MinItems + out.UniqueItems = in.UniqueItems + out.MultipleOf = in.MultipleOf + out.MaxProperties = in.MaxProperties + out.MinProperties = in.MinProperties + out.Required = in.Required + + if in.Default != nil { + out.Default = *(in.Default) + } + if in.Example != nil { + out.Example = *(in.Example) + } + + out.Enum = make([]interface{}, len(in.Enum)) + for k, v := range in.Enum { + out.Enum[k] = v + } + + if err := convertSliceOfJSONSchemaProps(&in.AllOf, &out.AllOf); err != nil { + return err + } + if err := convertSliceOfJSONSchemaProps(&in.OneOf, &out.OneOf); err != nil { + return err + } + if err := convertSliceOfJSONSchemaProps(&in.AnyOf, &out.AnyOf); err != nil { + return err + } + + if in.Not != nil { + in, out := &in.Not, &out.Not + *out = new(spec.Schema) + if err := convertJSONSchemaProps(*in, *out); err != nil { + return err + } + } + + var err error + out.Properties, err = convertMapOfJSONSchemaProps(in.Properties) + if err != nil { + return err + } + + out.PatternProperties, err = convertMapOfJSONSchemaProps(in.PatternProperties) + if err != nil { + return err + } + + out.Definitions, err = convertMapOfJSONSchemaProps(in.Definitions) + if err != nil { + return err + } + + if in.Ref != nil { + out.Ref, err = spec.NewRef(*in.Ref) + if err != nil { + return err + } + } + + if in.AdditionalProperties != nil { + in, out := &in.AdditionalProperties, &out.AdditionalProperties + *out = new(spec.SchemaOrBool) + if err := convertJSONSchemaPropsorBool(*in, *out); err != nil { + return err + } + } + + if in.AdditionalItems != nil { + in, out := &in.AdditionalItems, &out.AdditionalItems + *out = new(spec.SchemaOrBool) + if err := convertJSONSchemaPropsorBool(*in, *out); err != nil { + return err + } + } + + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = new(spec.SchemaOrArray) + if err := convertJSONSchemaPropsOrArray(*in, *out); err != nil { + return err + } + } + + if in.Dependencies != nil { + in, out := &in.Dependencies, &out.Dependencies + *out = make(spec.Dependencies, len(*in)) + for key, val := range *in { + newVal := new(spec.SchemaOrStringArray) + if err := convertJSONSchemaPropsOrStringArray(&val, newVal); err != nil { + return err + } + (*out)[key] = *newVal + } + } + + if in.ExternalDocs != nil { + out.ExternalDocs = &spec.ExternalDocumentation{} + out.ExternalDocs.Description = in.ExternalDocs.Description + out.ExternalDocs.URL = in.ExternalDocs.URL + } + + return nil +} + +func convertSliceOfJSONSchemaProps(in *[]apiextensions.JSONSchemaProps, out *[]spec.Schema) error { + if in != nil { + for _, jsonSchemaProps := range *in { + schema := spec.Schema{} + if err := convertJSONSchemaProps(&jsonSchemaProps, &schema); err != nil { + return err + } + *out = append(*out, schema) + } + } + return nil +} + +func convertMapOfJSONSchemaProps(in map[string]apiextensions.JSONSchemaProps) (map[string]spec.Schema, error) { + out := make(map[string]spec.Schema) + if len(in) != 0 { + for k, jsonSchemaProps := range in { + schema := spec.Schema{} + if err := convertJSONSchemaProps(&jsonSchemaProps, &schema); err != nil { + return nil, err + } + out[k] = schema + } + } + return out, nil +} + +func convertJSONSchemaPropsOrArray(in *apiextensions.JSONSchemaPropsOrArray, out *spec.SchemaOrArray) error { + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(spec.Schema) + if err := convertJSONSchemaProps(*in, *out); err != nil { + return err + } + } + if in.JSONSchemas != nil { + in, out := &in.JSONSchemas, &out.Schemas + *out = make([]spec.Schema, len(*in)) + for i := range *in { + if err := convertJSONSchemaProps(&(*in)[i], &(*out)[i]); err != nil { + return err + } + } + } + return nil +} + +func convertJSONSchemaPropsorBool(in *apiextensions.JSONSchemaPropsOrBool, out *spec.SchemaOrBool) error { + out.Allows = in.Allows + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(spec.Schema) + if err := convertJSONSchemaProps(*in, *out); err != nil { + return err + } + } + return nil +} + +func convertJSONSchemaPropsOrStringArray(in *apiextensions.JSONSchemaPropsOrStringArray, out *spec.SchemaOrStringArray) error { + out.Property = in.Property + if in.Schema != nil { + in, out := &in.Schema, &out.Schema + *out = new(spec.Schema) + if err := convertJSONSchemaProps(*in, *out); err != nil { + return err + } + } + return nil +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD index 506e1f80d4..494522755c 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "clientset.go", "doc.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1:go_default_library", @@ -22,3 +19,21 @@ go_library( "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go index 634e79a711..bae98c78bf 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go @@ -35,24 +35,18 @@ type Interface interface { // version included in a Clientset. type Clientset struct { *discovery.DiscoveryClient - *apiextensionsv1beta1.ApiextensionsV1beta1Client + apiextensionsV1beta1 *apiextensionsv1beta1.ApiextensionsV1beta1Client } // ApiextensionsV1beta1 retrieves the ApiextensionsV1beta1Client func (c *Clientset) ApiextensionsV1beta1() apiextensionsv1beta1.ApiextensionsV1beta1Interface { - if c == nil { - return nil - } - return c.ApiextensionsV1beta1Client + return c.apiextensionsV1beta1 } // Deprecated: Apiextensions retrieves the default version of ApiextensionsClient. // Please explicitly pick a version. func (c *Clientset) Apiextensions() apiextensionsv1beta1.ApiextensionsV1beta1Interface { - if c == nil { - return nil - } - return c.ApiextensionsV1beta1Client + return c.apiextensionsV1beta1 } // Discovery retrieves the DiscoveryClient @@ -71,7 +65,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { } var cs Clientset var err error - cs.ApiextensionsV1beta1Client, err = apiextensionsv1beta1.NewForConfig(&configShallowCopy) + cs.apiextensionsV1beta1, err = apiextensionsv1beta1.NewForConfig(&configShallowCopy) if err != nil { return nil, err } @@ -88,7 +82,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { // panics if there is an error in the config. func NewForConfigOrDie(c *rest.Config) *Clientset { var cs Clientset - cs.ApiextensionsV1beta1Client = apiextensionsv1beta1.NewForConfigOrDie(c) + cs.apiextensionsV1beta1 = apiextensionsv1beta1.NewForConfigOrDie(c) cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) return &cs @@ -97,7 +91,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset { // New creates a new Clientset for the given RESTClient. func New(c rest.Interface) *Clientset { var cs Clientset - cs.ApiextensionsV1beta1Client = apiextensionsv1beta1.New(c) + cs.apiextensionsV1beta1 = apiextensionsv1beta1.New(c) cs.DiscoveryClient = discovery.NewDiscoveryClient(c) return &cs diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/BUILD index 865adf9e56..5bd8e4be02 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -14,7 +12,6 @@ go_library( "doc.go", "register.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", @@ -30,3 +27,16 @@ go_library( "//vendor/k8s.io/client-go/testing:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/clientset_generated.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/clientset_generated.go index 84d77409b6..473f88f47d 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/clientset_generated.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake/clientset_generated.go @@ -41,10 +41,9 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { fakePtr := testing.Fake{} fakePtr.AddReactor("*", "*", testing.ObjectReaction(o)) - fakePtr.AddWatchReactor("*", testing.DefaultWatchReactor(watch.NewFake(), nil)) - return &Clientset{fakePtr} + return &Clientset{fakePtr, &fakediscovery.FakeDiscovery{Fake: &fakePtr}} } // Clientset implements clientset.Interface. Meant to be embedded into a @@ -52,10 +51,11 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { // you want to test easier. type Clientset struct { testing.Fake + discovery *fakediscovery.FakeDiscovery } func (c *Clientset) Discovery() discovery.DiscoveryInterface { - return &fakediscovery.FakeDiscovery{Fake: &c.Fake} + return c.discovery } var _ clientset.Interface = &Clientset{} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD index bac733cbc9..c37ee3f5c0 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "doc.go", "register.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -22,3 +19,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD index 074d54e3ab..3cb4e1f621 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -15,7 +13,6 @@ go_library( "doc.go", "generated_expansion.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme:go_default_library", @@ -26,3 +23,19 @@ go_library( "//vendor/k8s.io/client-go/rest:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go index bfc11155d6..73238715b4 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go @@ -57,6 +57,38 @@ func newCustomResourceDefinitions(c *ApiextensionsV1beta1Client) *customResource } } +// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any. +func (c *customResourceDefinitions) Get(name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) { + result = &v1beta1.CustomResourceDefinition{} + err = c.client.Get(). + Resource("customresourcedefinitions"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors. +func (c *customResourceDefinitions) List(opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) { + result = &v1beta1.CustomResourceDefinitionList{} + err = c.client.Get(). + Resource("customresourcedefinitions"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested customResourceDefinitions. +func (c *customResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("customresourcedefinitions"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + // Create takes the representation of a customResourceDefinition and creates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any. func (c *customResourceDefinitions) Create(customResourceDefinition *v1beta1.CustomResourceDefinition) (result *v1beta1.CustomResourceDefinition, err error) { result = &v1beta1.CustomResourceDefinition{} @@ -81,7 +113,7 @@ func (c *customResourceDefinitions) Update(customResourceDefinition *v1beta1.Cus } // UpdateStatus was generated because the type contains a Status member. -// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). func (c *customResourceDefinitions) UpdateStatus(customResourceDefinition *v1beta1.CustomResourceDefinition) (result *v1beta1.CustomResourceDefinition, err error) { result = &v1beta1.CustomResourceDefinition{} @@ -115,38 +147,6 @@ func (c *customResourceDefinitions) DeleteCollection(options *v1.DeleteOptions, Error() } -// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any. -func (c *customResourceDefinitions) Get(name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) { - result = &v1beta1.CustomResourceDefinition{} - err = c.client.Get(). - Resource("customresourcedefinitions"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors. -func (c *customResourceDefinitions) List(opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) { - result = &v1beta1.CustomResourceDefinitionList{} - err = c.client.Get(). - Resource("customresourcedefinitions"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested customResourceDefinitions. -func (c *customResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { - opts.Watch = true - return c.client.Get(). - Resource("customresourcedefinitions"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} - // Patch applies the patch and returns the patched customResourceDefinition. func (c *customResourceDefinitions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CustomResourceDefinition, err error) { result = &v1beta1.CustomResourceDefinition{} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/BUILD index b2b91972fa..d8a0547766 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -14,7 +12,6 @@ go_library( "fake_apiextensions_client.go", "fake_customresourcedefinition.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1:go_default_library", @@ -27,3 +24,16 @@ go_library( "//vendor/k8s.io/client-go/testing:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/fake_customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/fake_customresourcedefinition.go index 16d128d4ee..7a2edf9ab1 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/fake_customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake/fake_customresourcedefinition.go @@ -35,6 +35,44 @@ var customresourcedefinitionsResource = schema.GroupVersionResource{Group: "apie var customresourcedefinitionsKind = schema.GroupVersionKind{Group: "apiextensions.k8s.io", Version: "v1beta1", Kind: "CustomResourceDefinition"} +// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any. +func (c *FakeCustomResourceDefinitions) Get(name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(customresourcedefinitionsResource, name), &v1beta1.CustomResourceDefinition{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.CustomResourceDefinition), err +} + +// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors. +func (c *FakeCustomResourceDefinitions) List(opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(customresourcedefinitionsResource, customresourcedefinitionsKind, opts), &v1beta1.CustomResourceDefinitionList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.CustomResourceDefinitionList{} + for _, item := range obj.(*v1beta1.CustomResourceDefinitionList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested customResourceDefinitions. +func (c *FakeCustomResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(customresourcedefinitionsResource, opts)) +} + +// Create takes the representation of a customResourceDefinition and creates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any. func (c *FakeCustomResourceDefinitions) Create(customResourceDefinition *v1beta1.CustomResourceDefinition) (result *v1beta1.CustomResourceDefinition, err error) { obj, err := c.Fake. Invokes(testing.NewRootCreateAction(customresourcedefinitionsResource, customResourceDefinition), &v1beta1.CustomResourceDefinition{}) @@ -44,6 +82,7 @@ func (c *FakeCustomResourceDefinitions) Create(customResourceDefinition *v1beta1 return obj.(*v1beta1.CustomResourceDefinition), err } +// Update takes the representation of a customResourceDefinition and updates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any. func (c *FakeCustomResourceDefinitions) Update(customResourceDefinition *v1beta1.CustomResourceDefinition) (result *v1beta1.CustomResourceDefinition, err error) { obj, err := c.Fake. Invokes(testing.NewRootUpdateAction(customresourcedefinitionsResource, customResourceDefinition), &v1beta1.CustomResourceDefinition{}) @@ -53,6 +92,8 @@ func (c *FakeCustomResourceDefinitions) Update(customResourceDefinition *v1beta1 return obj.(*v1beta1.CustomResourceDefinition), err } +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). func (c *FakeCustomResourceDefinitions) UpdateStatus(customResourceDefinition *v1beta1.CustomResourceDefinition) (*v1beta1.CustomResourceDefinition, error) { obj, err := c.Fake. Invokes(testing.NewRootUpdateSubresourceAction(customresourcedefinitionsResource, "status", customResourceDefinition), &v1beta1.CustomResourceDefinition{}) @@ -62,12 +103,14 @@ func (c *FakeCustomResourceDefinitions) UpdateStatus(customResourceDefinition *v return obj.(*v1beta1.CustomResourceDefinition), err } +// Delete takes name of the customResourceDefinition and deletes it. Returns an error if one occurs. func (c *FakeCustomResourceDefinitions) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. Invokes(testing.NewRootDeleteAction(customresourcedefinitionsResource, name), &v1beta1.CustomResourceDefinition{}) return err } +// DeleteCollection deletes a collection of objects. func (c *FakeCustomResourceDefinitions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(customresourcedefinitionsResource, listOptions) @@ -75,41 +118,6 @@ func (c *FakeCustomResourceDefinitions) DeleteCollection(options *v1.DeleteOptio return err } -func (c *FakeCustomResourceDefinitions) Get(name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(customresourcedefinitionsResource, name), &v1beta1.CustomResourceDefinition{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CustomResourceDefinition), err -} - -func (c *FakeCustomResourceDefinitions) List(opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(customresourcedefinitionsResource, customresourcedefinitionsKind, opts), &v1beta1.CustomResourceDefinitionList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.CustomResourceDefinitionList{} - for _, item := range obj.(*v1beta1.CustomResourceDefinitionList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested customResourceDefinitions. -func (c *FakeCustomResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(customresourcedefinitionsResource, opts)) -} - // Patch applies the patch and returns the patched customResourceDefinition. func (c *FakeCustomResourceDefinitions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CustomResourceDefinition, err error) { obj, err := c.Fake. diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/BUILD index 7303fc1c7e..97024ea635 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "clientset.go", "doc.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion:go_default_library", @@ -22,3 +19,21 @@ go_library( "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/clientset.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/clientset.go index 77172f598c..72803e7692 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/clientset.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/clientset.go @@ -33,15 +33,12 @@ type Interface interface { // version included in a Clientset. type Clientset struct { *discovery.DiscoveryClient - *apiextensionsinternalversion.ApiextensionsClient + apiextensions *apiextensionsinternalversion.ApiextensionsClient } // Apiextensions retrieves the ApiextensionsClient func (c *Clientset) Apiextensions() apiextensionsinternalversion.ApiextensionsInterface { - if c == nil { - return nil - } - return c.ApiextensionsClient + return c.apiextensions } // Discovery retrieves the DiscoveryClient @@ -60,7 +57,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { } var cs Clientset var err error - cs.ApiextensionsClient, err = apiextensionsinternalversion.NewForConfig(&configShallowCopy) + cs.apiextensions, err = apiextensionsinternalversion.NewForConfig(&configShallowCopy) if err != nil { return nil, err } @@ -77,7 +74,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) { // panics if there is an error in the config. func NewForConfigOrDie(c *rest.Config) *Clientset { var cs Clientset - cs.ApiextensionsClient = apiextensionsinternalversion.NewForConfigOrDie(c) + cs.apiextensions = apiextensionsinternalversion.NewForConfigOrDie(c) cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) return &cs @@ -86,7 +83,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset { // New creates a new Clientset for the given RESTClient. func New(c rest.Interface) *Clientset { var cs Clientset - cs.ApiextensionsClient = apiextensionsinternalversion.New(c) + cs.apiextensions = apiextensionsinternalversion.New(c) cs.DiscoveryClient = discovery.NewDiscoveryClient(c) return &cs diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/BUILD index 69efc3ceaf..fbcf55239a 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -14,7 +12,6 @@ go_library( "doc.go", "register.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library", @@ -30,3 +27,16 @@ go_library( "//vendor/k8s.io/client-go/testing:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/clientset_generated.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/clientset_generated.go index 7b798eff61..fdc0beee57 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/clientset_generated.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/fake/clientset_generated.go @@ -41,10 +41,9 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { fakePtr := testing.Fake{} fakePtr.AddReactor("*", "*", testing.ObjectReaction(o)) - fakePtr.AddWatchReactor("*", testing.DefaultWatchReactor(watch.NewFake(), nil)) - return &Clientset{fakePtr} + return &Clientset{fakePtr, &fakediscovery.FakeDiscovery{Fake: &fakePtr}} } // Clientset implements clientset.Interface. Meant to be embedded into a @@ -52,10 +51,11 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { // you want to test easier. type Clientset struct { testing.Fake + discovery *fakediscovery.FakeDiscovery } func (c *Clientset) Discovery() discovery.DiscoveryInterface { - return &fakediscovery.FakeDiscovery{Fake: &c.Fake} + return c.discovery } var _ clientset.Interface = &Clientset{} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme/BUILD index 7ad7f782c7..040a7fcdc4 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "doc.go", "register.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", @@ -24,3 +21,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/BUILD index 3eb2b58315..75584d5a39 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -15,7 +13,6 @@ go_library( "doc.go", "generated_expansion.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/scheme:go_default_library", @@ -25,3 +22,19 @@ go_library( "//vendor/k8s.io/client-go/rest:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/customresourcedefinition.go index fbd862cff3..7758b635f7 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/customresourcedefinition.go @@ -57,6 +57,38 @@ func newCustomResourceDefinitions(c *ApiextensionsClient) *customResourceDefinit } } +// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any. +func (c *customResourceDefinitions) Get(name string, options v1.GetOptions) (result *apiextensions.CustomResourceDefinition, err error) { + result = &apiextensions.CustomResourceDefinition{} + err = c.client.Get(). + Resource("customresourcedefinitions"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors. +func (c *customResourceDefinitions) List(opts v1.ListOptions) (result *apiextensions.CustomResourceDefinitionList, err error) { + result = &apiextensions.CustomResourceDefinitionList{} + err = c.client.Get(). + Resource("customresourcedefinitions"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested customResourceDefinitions. +func (c *customResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("customresourcedefinitions"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + // Create takes the representation of a customResourceDefinition and creates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any. func (c *customResourceDefinitions) Create(customResourceDefinition *apiextensions.CustomResourceDefinition) (result *apiextensions.CustomResourceDefinition, err error) { result = &apiextensions.CustomResourceDefinition{} @@ -81,7 +113,7 @@ func (c *customResourceDefinitions) Update(customResourceDefinition *apiextensio } // UpdateStatus was generated because the type contains a Status member. -// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). func (c *customResourceDefinitions) UpdateStatus(customResourceDefinition *apiextensions.CustomResourceDefinition) (result *apiextensions.CustomResourceDefinition, err error) { result = &apiextensions.CustomResourceDefinition{} @@ -115,38 +147,6 @@ func (c *customResourceDefinitions) DeleteCollection(options *v1.DeleteOptions, Error() } -// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any. -func (c *customResourceDefinitions) Get(name string, options v1.GetOptions) (result *apiextensions.CustomResourceDefinition, err error) { - result = &apiextensions.CustomResourceDefinition{} - err = c.client.Get(). - Resource("customresourcedefinitions"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors. -func (c *customResourceDefinitions) List(opts v1.ListOptions) (result *apiextensions.CustomResourceDefinitionList, err error) { - result = &apiextensions.CustomResourceDefinitionList{} - err = c.client.Get(). - Resource("customresourcedefinitions"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested customResourceDefinitions. -func (c *customResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { - opts.Watch = true - return c.client.Get(). - Resource("customresourcedefinitions"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} - // Patch applies the patch and returns the patched customResourceDefinition. func (c *customResourceDefinitions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apiextensions.CustomResourceDefinition, err error) { result = &apiextensions.CustomResourceDefinition{} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/BUILD index 9978eb4c81..eae775984a 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -14,7 +12,6 @@ go_library( "fake_apiextensions_client.go", "fake_customresourcedefinition.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion:go_default_library", @@ -27,3 +24,16 @@ go_library( "//vendor/k8s.io/client-go/testing:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/fake_customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/fake_customresourcedefinition.go index fc7371b642..6cf8f7e7d3 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/fake_customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset/typed/apiextensions/internalversion/fake/fake_customresourcedefinition.go @@ -35,6 +35,44 @@ var customresourcedefinitionsResource = schema.GroupVersionResource{Group: "apie var customresourcedefinitionsKind = schema.GroupVersionKind{Group: "apiextensions.k8s.io", Version: "", Kind: "CustomResourceDefinition"} +// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any. +func (c *FakeCustomResourceDefinitions) Get(name string, options v1.GetOptions) (result *apiextensions.CustomResourceDefinition, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(customresourcedefinitionsResource, name), &apiextensions.CustomResourceDefinition{}) + if obj == nil { + return nil, err + } + return obj.(*apiextensions.CustomResourceDefinition), err +} + +// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors. +func (c *FakeCustomResourceDefinitions) List(opts v1.ListOptions) (result *apiextensions.CustomResourceDefinitionList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(customresourcedefinitionsResource, customresourcedefinitionsKind, opts), &apiextensions.CustomResourceDefinitionList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &apiextensions.CustomResourceDefinitionList{} + for _, item := range obj.(*apiextensions.CustomResourceDefinitionList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested customResourceDefinitions. +func (c *FakeCustomResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(customresourcedefinitionsResource, opts)) +} + +// Create takes the representation of a customResourceDefinition and creates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any. func (c *FakeCustomResourceDefinitions) Create(customResourceDefinition *apiextensions.CustomResourceDefinition) (result *apiextensions.CustomResourceDefinition, err error) { obj, err := c.Fake. Invokes(testing.NewRootCreateAction(customresourcedefinitionsResource, customResourceDefinition), &apiextensions.CustomResourceDefinition{}) @@ -44,6 +82,7 @@ func (c *FakeCustomResourceDefinitions) Create(customResourceDefinition *apiexte return obj.(*apiextensions.CustomResourceDefinition), err } +// Update takes the representation of a customResourceDefinition and updates it. Returns the server's representation of the customResourceDefinition, and an error, if there is any. func (c *FakeCustomResourceDefinitions) Update(customResourceDefinition *apiextensions.CustomResourceDefinition) (result *apiextensions.CustomResourceDefinition, err error) { obj, err := c.Fake. Invokes(testing.NewRootUpdateAction(customresourcedefinitionsResource, customResourceDefinition), &apiextensions.CustomResourceDefinition{}) @@ -53,6 +92,8 @@ func (c *FakeCustomResourceDefinitions) Update(customResourceDefinition *apiexte return obj.(*apiextensions.CustomResourceDefinition), err } +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). func (c *FakeCustomResourceDefinitions) UpdateStatus(customResourceDefinition *apiextensions.CustomResourceDefinition) (*apiextensions.CustomResourceDefinition, error) { obj, err := c.Fake. Invokes(testing.NewRootUpdateSubresourceAction(customresourcedefinitionsResource, "status", customResourceDefinition), &apiextensions.CustomResourceDefinition{}) @@ -62,12 +103,14 @@ func (c *FakeCustomResourceDefinitions) UpdateStatus(customResourceDefinition *a return obj.(*apiextensions.CustomResourceDefinition), err } +// Delete takes name of the customResourceDefinition and deletes it. Returns an error if one occurs. func (c *FakeCustomResourceDefinitions) Delete(name string, options *v1.DeleteOptions) error { _, err := c.Fake. Invokes(testing.NewRootDeleteAction(customresourcedefinitionsResource, name), &apiextensions.CustomResourceDefinition{}) return err } +// DeleteCollection deletes a collection of objects. func (c *FakeCustomResourceDefinitions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { action := testing.NewRootDeleteCollectionAction(customresourcedefinitionsResource, listOptions) @@ -75,41 +118,6 @@ func (c *FakeCustomResourceDefinitions) DeleteCollection(options *v1.DeleteOptio return err } -func (c *FakeCustomResourceDefinitions) Get(name string, options v1.GetOptions) (result *apiextensions.CustomResourceDefinition, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(customresourcedefinitionsResource, name), &apiextensions.CustomResourceDefinition{}) - if obj == nil { - return nil, err - } - return obj.(*apiextensions.CustomResourceDefinition), err -} - -func (c *FakeCustomResourceDefinitions) List(opts v1.ListOptions) (result *apiextensions.CustomResourceDefinitionList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(customresourcedefinitionsResource, customresourcedefinitionsKind, opts), &apiextensions.CustomResourceDefinitionList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &apiextensions.CustomResourceDefinitionList{} - for _, item := range obj.(*apiextensions.CustomResourceDefinitionList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested customResourceDefinitions. -func (c *FakeCustomResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(customresourcedefinitionsResource, opts)) -} - // Patch applies the patch and returns the patched customResourceDefinition. func (c *FakeCustomResourceDefinitions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *apiextensions.CustomResourceDefinition, err error) { obj, err := c.Fake. diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD index 2767e73d2b..94f642a2c9 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "factory.go", "generic.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", @@ -24,3 +21,20 @@ go_library( "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/BUILD index 5923e7103a..f8613a82db 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,9 +8,24 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/BUILD index 494cad8c9b..69f89a94bf 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "customresourcedefinition.go", "interface.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", @@ -25,3 +22,16 @@ go_library( "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go index 5669357225..e28ec5db66 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1beta1/customresourcedefinition.go @@ -41,8 +41,11 @@ type customResourceDefinitionInformer struct { factory internalinterfaces.SharedInformerFactory } -func newCustomResourceDefinitionInformer(client clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - sharedIndexInformer := cache.NewSharedIndexInformer( +// NewCustomResourceDefinitionInformer constructs a new informer for CustomResourceDefinition type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewCustomResourceDefinitionInformer(client clientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( &cache.ListWatch{ ListFunc: func(options v1.ListOptions) (runtime.Object, error) { return client.ApiextensionsV1beta1().CustomResourceDefinitions().List(options) @@ -53,14 +56,16 @@ func newCustomResourceDefinitionInformer(client clientset.Interface, resyncPerio }, &apiextensions_v1beta1.CustomResourceDefinition{}, resyncPeriod, - cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + indexers, ) +} - return sharedIndexInformer +func defaultCustomResourceDefinitionInformer(client clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewCustomResourceDefinitionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) } func (f *customResourceDefinitionInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apiextensions_v1beta1.CustomResourceDefinition{}, newCustomResourceDefinitionInformer) + return f.factory.InformerFor(&apiextensions_v1beta1.CustomResourceDefinition{}, defaultCustomResourceDefinitionInformer) } func (f *customResourceDefinitionInformer) Lister() v1beta1.CustomResourceDefinitionLister { diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD index 63fbd9dd60..3c686edf47 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,10 +8,22 @@ load( go_library( name = "go_default_library", srcs = ["factory_interfaces.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD index a9000ecae6..3855ac6236 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "factory.go", "generic.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library", @@ -24,3 +21,20 @@ go_library( "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions:all-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/BUILD index 68e3f915d4..3d8440cb11 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,9 +8,24 @@ load( go_library( name = "go_default_library", srcs = ["interface.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/BUILD index cedd60d922..ba99018061 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "customresourcedefinition.go", "interface.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library", @@ -25,3 +22,16 @@ go_library( "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go index 18a9592849..4c14fd1119 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/apiextensions/internalversion/customresourcedefinition.go @@ -41,8 +41,11 @@ type customResourceDefinitionInformer struct { factory internalinterfaces.SharedInformerFactory } -func newCustomResourceDefinitionInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - sharedIndexInformer := cache.NewSharedIndexInformer( +// NewCustomResourceDefinitionInformer constructs a new informer for CustomResourceDefinition type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewCustomResourceDefinitionInformer(client internalclientset.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( &cache.ListWatch{ ListFunc: func(options v1.ListOptions) (runtime.Object, error) { return client.Apiextensions().CustomResourceDefinitions().List(options) @@ -53,14 +56,16 @@ func newCustomResourceDefinitionInformer(client internalclientset.Interface, res }, &apiextensions.CustomResourceDefinition{}, resyncPeriod, - cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + indexers, ) +} - return sharedIndexInformer +func defaultCustomResourceDefinitionInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewCustomResourceDefinitionInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) } func (f *customResourceDefinitionInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&apiextensions.CustomResourceDefinition{}, newCustomResourceDefinitionInformer) + return f.factory.InformerFor(&apiextensions.CustomResourceDefinition{}, defaultCustomResourceDefinitionInformer) } func (f *customResourceDefinitionInformer) Lister() internalversion.CustomResourceDefinitionLister { diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD index 7bcbb07c9f..deda85345e 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/internalinterfaces/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,10 +8,22 @@ load( go_library( name = "go_default_library", srcs = ["factory_interfaces.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/BUILD index 076880a7d0..e9d41b5cc4 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,12 +11,23 @@ go_library( "customresourcedefinition.go", "expansion_generated.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/customresourcedefinition.go index 27bb4cad88..1bd8480514 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion/customresourcedefinition.go @@ -21,7 +21,6 @@ package internalversion import ( apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" "k8s.io/apimachinery/pkg/api/errors" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/tools/cache" ) @@ -55,8 +54,7 @@ func (s *customResourceDefinitionLister) List(selector labels.Selector) (ret []* // Get retrieves the CustomResourceDefinition from the index for a given name. func (s *customResourceDefinitionLister) Get(name string) (*apiextensions.CustomResourceDefinition, error) { - key := &apiextensions.CustomResourceDefinition{ObjectMeta: v1.ObjectMeta{Name: name}} - obj, exists, err := s.indexer.Get(key) + obj, exists, err := s.indexer.GetByKey(name) if err != nil { return nil, err } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/BUILD index fcca3d5728..e90b609298 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,12 +11,23 @@ go_library( "customresourcedefinition.go", "expansion_generated.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/customresourcedefinition.go index f9b2a8f1e4..316721bd68 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/customresourcedefinition.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1/customresourcedefinition.go @@ -21,7 +21,6 @@ package v1beta1 import ( v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apimachinery/pkg/api/errors" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/tools/cache" ) @@ -55,8 +54,7 @@ func (s *customResourceDefinitionLister) List(selector labels.Selector) (ret []* // Get retrieves the CustomResourceDefinition from the index for a given name. func (s *customResourceDefinitionLister) Get(name string) (*v1beta1.CustomResourceDefinition, error) { - key := &v1beta1.CustomResourceDefinition{ObjectMeta: v1.ObjectMeta{Name: name}} - obj, exists, err := s.indexer.Get(key) + obj, exists, err := s.indexer.GetByKey(name) if err != nil { return nil, err } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/BUILD index a03eda540d..b4bbd16bcb 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,14 +8,27 @@ load( go_library( name = "go_default_library", srcs = ["start.go"], - tags = ["automanaged"], deps = [ "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apiserver:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/options:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/start.go b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/start.go index b6fb709488..ccf52cfeb7 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/start.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/start.go @@ -26,6 +26,7 @@ import ( "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apiextensions-apiserver/pkg/apiserver" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + utilerrors "k8s.io/apimachinery/pkg/util/errors" genericregistry "k8s.io/apiserver/pkg/registry/generic" genericapiserver "k8s.io/apiserver/pkg/server" genericoptions "k8s.io/apiserver/pkg/server/options" @@ -48,6 +49,9 @@ func NewCustomResourceDefinitionsServerOptions(out, errOut io.Writer) *CustomRes StdErr: errOut, } + // the shared informer is not needed for kube-aggregator. Disable the kubeconfig flag and the client creation. + o.RecommendedOptions.CoreAPI = nil + return o } @@ -78,7 +82,9 @@ func NewCommandStartCustomResourceDefinitionsServer(out, errOut io.Writer, stopC } func (o CustomResourceDefinitionsServerOptions) Validate(args []string) error { - return nil + errors := []error{} + errors = append(errors, o.RecommendedOptions.Validate()...) + return utilerrors.NewAggregate(errors) } func (o *CustomResourceDefinitionsServerOptions) Complete() error { @@ -91,27 +97,27 @@ func (o CustomResourceDefinitionsServerOptions) Config() (*apiserver.Config, err return nil, fmt.Errorf("error creating self-signed certificates: %v", err) } - serverConfig := genericapiserver.NewConfig(apiserver.Codecs) + serverConfig := genericapiserver.NewRecommendedConfig(apiserver.Codecs) if err := o.RecommendedOptions.ApplyTo(serverConfig); err != nil { return nil, err } config := &apiserver.Config{ - GenericConfig: serverConfig, - CRDRESTOptionsGetter: NewCRDRESTOptionsGetter(*o.RecommendedOptions.Etcd), + GenericConfig: serverConfig, + ExtraConfig: apiserver.ExtraConfig{ + CRDRESTOptionsGetter: NewCRDRESTOptionsGetter(*o.RecommendedOptions.Etcd), + }, } return config, nil } func NewCRDRESTOptionsGetter(etcdOptions genericoptions.EtcdOptions) genericregistry.RESTOptionsGetter { ret := apiserver.CRDRESTOptionsGetter{ - StorageConfig: etcdOptions.StorageConfig, - StoragePrefix: etcdOptions.StorageConfig.Prefix, - EnableWatchCache: etcdOptions.EnableWatchCache, - DefaultWatchCacheSize: etcdOptions.DefaultWatchCacheSize, - // garbage collection for custom resources is forced off until GC works with CRs. - // When GC is enabled, this turns back into etcdOptions.EnableGarbageCollection - EnableGarbageCollection: false, + StorageConfig: etcdOptions.StorageConfig, + StoragePrefix: etcdOptions.StorageConfig.Prefix, + EnableWatchCache: etcdOptions.EnableWatchCache, + DefaultWatchCacheSize: etcdOptions.DefaultWatchCacheSize, + EnableGarbageCollection: etcdOptions.EnableGarbageCollection, DeleteCollectionWorkers: etcdOptions.DeleteCollectionWorkers, } ret.StorageConfig.Codec = unstructured.UnstructuredJSONScheme diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/BUILD index 7d19a58f20..058f6e2562 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,7 +8,6 @@ load( go_library( name = "go_default_library", srcs = ["crd_finalizer.go"], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", @@ -20,7 +17,6 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", @@ -31,3 +27,16 @@ go_library( "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go index 5974f7e5cd..b60900ab1b 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/finalizer/crd_finalizer.go @@ -26,7 +26,6 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/conversion" utilerrors "k8s.io/apimachinery/pkg/util/errors" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" @@ -42,8 +41,6 @@ import ( listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion" ) -var cloner = conversion.NewCloner() - // CRDFinalizer is a controller that finalizes the CRD by deleting all the CRs associated with it. type CRDFinalizer struct { crdClient client.CustomResourceDefinitionsGetter @@ -109,10 +106,7 @@ func (c *CRDFinalizer) sync(key string) error { return nil } - crd := &apiextensions.CustomResourceDefinition{} - if err := apiextensions.DeepCopy_apiextensions_CustomResourceDefinition(cachedCRD, crd, cloner); err != nil { - return err - } + crd := cachedCRD.DeepCopy() // update the status condition. This cleanup could take a while. apiextensions.SetCRDCondition(crd, apiextensions.CustomResourceDefinitionCondition{ @@ -320,18 +314,8 @@ func (c *CRDFinalizer) updateCustomResourceDefinition(oldObj, newObj interface{} // is likely to be the originator, so requeuing would hot-loop us. Failures are requeued by the workqueue directly. // This is a low traffic and scale resource, so the copy is terrible. It's not good, so better ideas // are welcome. - oldCopy := &apiextensions.CustomResourceDefinition{} - if err := apiextensions.DeepCopy_apiextensions_CustomResourceDefinition(oldCRD, oldCopy, cloner); err != nil { - utilruntime.HandleError(err) - c.enqueue(newCRD) - return - } - newCopy := &apiextensions.CustomResourceDefinition{} - if err := apiextensions.DeepCopy_apiextensions_CustomResourceDefinition(newCRD, newCopy, cloner); err != nil { - utilruntime.HandleError(err) - c.enqueue(newCRD) - return - } + oldCopy := oldCRD.DeepCopy() + newCopy := newCRD.DeepCopy() oldCopy.ResourceVersion = "" newCopy.ResourceVersion = "" apiextensions.RemoveCRDCondition(oldCopy, apiextensions.Terminating) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/BUILD index 3afbfa8196..2737a2efa4 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["naming_controller_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion:go_default_library", @@ -24,7 +21,6 @@ go_test( go_library( name = "go_default_library", srcs = ["naming_controller.go"], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", @@ -33,7 +29,6 @@ go_library( "//vendor/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", @@ -43,3 +38,16 @@ go_library( "//vendor/k8s.io/client-go/util/workqueue:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go index 7dbb10307d..271d11adf8 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/status/naming_controller.go @@ -26,7 +26,6 @@ import ( apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/conversion" "k8s.io/apimachinery/pkg/labels" utilerrors "k8s.io/apimachinery/pkg/util/errors" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -41,8 +40,6 @@ import ( listers "k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion" ) -var cloner = conversion.NewCloner() - // This controller is reserving names. To avoid conflicts, be sure to run only one instance of the worker at a time. // This could eventually be lifted, but starting simple. type NamingConditionController struct { @@ -251,11 +248,7 @@ func (c *NamingConditionController) sync(key string) error { return nil } - crd := &apiextensions.CustomResourceDefinition{} - if err := apiextensions.DeepCopy_apiextensions_CustomResourceDefinition(inCustomResourceDefinition, crd, cloner); err != nil { - return err - } - + crd := inCustomResourceDefinition.DeepCopy() crd.Status.AcceptedNames = acceptedNames apiextensions.SetCRDCondition(crd, namingCondition) apiextensions.SetCRDCondition(crd, establishedCondition) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD new file mode 100644 index 0000000000..3b415effc4 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/features/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["kube_features.go"], + deps = ["//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go b/vendor/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go new file mode 100644 index 0000000000..fa78ce6ab5 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package features + +import ( + utilfeature "k8s.io/apiserver/pkg/util/feature" +) + +const ( + // Every feature gate should add method here following this template: + // + // // owner: @username + // // alpha: v1.4 + // MyFeature() bool + + // owner: @sttts, @nikhita + // alpha: v1.8 + // + // CustomResourceValidation is a list of validation methods for CustomResources + CustomResourceValidation utilfeature.Feature = "CustomResourceValidation" +) + +func init() { + utilfeature.DefaultFeatureGate.Add(defaultKubernetesFeatureGates) +} + +// defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys. +// To add a new feature, define a key for it above and add it here. The features will be +// available throughout Kubernetes binaries. +var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureSpec{ + CustomResourceValidation: {Default: false, PreRelease: utilfeature.Alpha}, +} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/BUILD index 5291435495..90eb4120ec 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,8 +11,9 @@ go_library( "etcd.go", "strategy.go", ], - tags = ["automanaged"], deps = [ + "//vendor/github.com/go-openapi/validate:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -31,3 +30,16 @@ go_library( "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go index 138b05932f..5f953b1c69 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go @@ -24,13 +24,13 @@ import ( genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" ) -// rest implements a RESTStorage for API services against etcd +// REST implements a RESTStorage for API services against etcd type REST struct { *genericregistry.Store } // NewREST returns a RESTStorage object that will work against API services. -func NewREST(resource schema.GroupResource, listKind schema.GroupVersionKind, copier runtime.ObjectCopier, strategy CustomResourceDefinitionStorageStrategy, optsGetter generic.RESTOptionsGetter) *REST { +func NewREST(resource schema.GroupResource, listKind schema.GroupVersionKind, copier runtime.ObjectCopier, strategy customResourceDefinitionStorageStrategy, optsGetter generic.RESTOptionsGetter) *REST { store := &genericregistry.Store{ Copier: copier, NewFunc: func() runtime.Object { return &unstructured.Unstructured{} }, @@ -40,8 +40,8 @@ func NewREST(resource schema.GroupResource, listKind schema.GroupVersionKind, co ret.SetGroupVersionKind(listKind) return ret }, - PredicateFunc: strategy.MatchCustomResourceDefinitionStorage, - QualifiedResource: resource, + PredicateFunc: strategy.MatchCustomResourceDefinitionStorage, + DefaultQualifiedResource: resource, CreateStrategy: strategy, UpdateStrategy: strategy, diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/strategy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/strategy.go index 8ebc90c179..f001dc57a0 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/strategy.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/strategy.go @@ -19,9 +19,12 @@ package customresource import ( "fmt" + "github.com/go-openapi/validate" + "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/validation" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -30,9 +33,11 @@ import ( genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/names" + + apiservervalidation "k8s.io/apiextensions-apiserver/pkg/apiserver/validation" ) -type CustomResourceDefinitionStorageStrategy struct { +type customResourceDefinitionStorageStrategy struct { runtime.ObjectTyper names.NameGenerator @@ -40,48 +45,49 @@ type CustomResourceDefinitionStorageStrategy struct { validator customResourceValidator } -func NewStrategy(typer runtime.ObjectTyper, namespaceScoped bool, kind schema.GroupVersionKind) CustomResourceDefinitionStorageStrategy { - return CustomResourceDefinitionStorageStrategy{ +func NewStrategy(typer runtime.ObjectTyper, namespaceScoped bool, kind schema.GroupVersionKind, validator *validate.SchemaValidator) customResourceDefinitionStorageStrategy { + return customResourceDefinitionStorageStrategy{ ObjectTyper: typer, NameGenerator: names.SimpleNameGenerator, namespaceScoped: namespaceScoped, validator: customResourceValidator{ namespaceScoped: namespaceScoped, kind: kind, + validator: validator, }, } } -func (a CustomResourceDefinitionStorageStrategy) NamespaceScoped() bool { +func (a customResourceDefinitionStorageStrategy) NamespaceScoped() bool { return a.namespaceScoped } -func (CustomResourceDefinitionStorageStrategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) { +func (customResourceDefinitionStorageStrategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) { } -func (CustomResourceDefinitionStorageStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) { +func (customResourceDefinitionStorageStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) { } -func (a CustomResourceDefinitionStorageStrategy) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList { +func (a customResourceDefinitionStorageStrategy) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList { return a.validator.Validate(ctx, obj) } -func (CustomResourceDefinitionStorageStrategy) AllowCreateOnUpdate() bool { +func (customResourceDefinitionStorageStrategy) AllowCreateOnUpdate() bool { return false } -func (CustomResourceDefinitionStorageStrategy) AllowUnconditionalUpdate() bool { +func (customResourceDefinitionStorageStrategy) AllowUnconditionalUpdate() bool { return false } -func (CustomResourceDefinitionStorageStrategy) Canonicalize(obj runtime.Object) { +func (customResourceDefinitionStorageStrategy) Canonicalize(obj runtime.Object) { } -func (a CustomResourceDefinitionStorageStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { +func (a customResourceDefinitionStorageStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { return a.validator.ValidateUpdate(ctx, obj, old) } -func (a CustomResourceDefinitionStorageStrategy) GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { +func (a customResourceDefinitionStorageStrategy) GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { accessor, err := meta.Accessor(obj) if err != nil { return nil, nil, false, err @@ -102,7 +108,7 @@ func objectMetaFieldsSet(objectMeta metav1.Object, namespaceScoped bool) fields. } } -func (a CustomResourceDefinitionStorageStrategy) MatchCustomResourceDefinitionStorage(label labels.Selector, field fields.Selector) storage.SelectionPredicate { +func (a customResourceDefinitionStorageStrategy) MatchCustomResourceDefinitionStorage(label labels.Selector, field fields.Selector) storage.SelectionPredicate { return storage.SelectionPredicate{ Label: label, Field: field, @@ -113,6 +119,7 @@ func (a CustomResourceDefinitionStorageStrategy) MatchCustomResourceDefinitionSt type customResourceValidator struct { namespaceScoped bool kind schema.GroupVersionKind + validator *validate.SchemaValidator } func (a customResourceValidator) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList { @@ -128,7 +135,18 @@ func (a customResourceValidator) Validate(ctx genericapirequest.Context, obj run return field.ErrorList{field.Invalid(field.NewPath("kind"), typeAccessor.GetKind(), fmt.Sprintf("must be %v", a.kind.Kind))} } if typeAccessor.GetAPIVersion() != a.kind.Group+"/"+a.kind.Version { - return field.ErrorList{field.Invalid(field.NewPath("apiVersion"), typeAccessor.GetKind(), fmt.Sprintf("must be %v", a.kind.Group+"/"+a.kind.Version))} + return field.ErrorList{field.Invalid(field.NewPath("apiVersion"), typeAccessor.GetAPIVersion(), fmt.Sprintf("must be %v", a.kind.Group+"/"+a.kind.Version))} + } + + customResourceObject, ok := obj.(*unstructured.Unstructured) + // this will never happen. + if !ok { + return field.ErrorList{field.Invalid(field.NewPath(""), customResourceObject, fmt.Sprintf("has type %T. Must be a pointer to an Unstructured type", customResourceObject))} + } + + customResource := customResourceObject.UnstructuredContent() + if err = apiservervalidation.ValidateCustomResource(customResource, a.validator); err != nil { + return field.ErrorList{field.Invalid(field.NewPath(""), customResource, err.Error())} } return validation.ValidateObjectMetaAccessor(accessor, a.namespaceScoped, validation.NameIsDNSSubdomain, field.NewPath("metadata")) @@ -151,7 +169,18 @@ func (a customResourceValidator) ValidateUpdate(ctx genericapirequest.Context, o return field.ErrorList{field.Invalid(field.NewPath("kind"), typeAccessor.GetKind(), fmt.Sprintf("must be %v", a.kind.Kind))} } if typeAccessor.GetAPIVersion() != a.kind.Group+"/"+a.kind.Version { - return field.ErrorList{field.Invalid(field.NewPath("apiVersion"), typeAccessor.GetKind(), fmt.Sprintf("must be %v", a.kind.Group+"/"+a.kind.Version))} + return field.ErrorList{field.Invalid(field.NewPath("apiVersion"), typeAccessor.GetAPIVersion(), fmt.Sprintf("must be %v", a.kind.Group+"/"+a.kind.Version))} + } + + customResourceObject, ok := obj.(*unstructured.Unstructured) + // this will never happen. + if !ok { + return field.ErrorList{field.Invalid(field.NewPath(""), customResourceObject, fmt.Sprintf("has type %T. Must be a pointer to an Unstructured type", customResourceObject))} + } + + customResource := customResourceObject.UnstructuredContent() + if err = apiservervalidation.ValidateCustomResource(customResource, a.validator); err != nil { + return field.ErrorList{field.Invalid(field.NewPath(""), customResource, err.Error())} } return validation.ValidateObjectMetaAccessorUpdate(objAccessor, oldAccessor, field.NewPath("metadata")) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/BUILD index bc8a384a2d..5a433a3e0a 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,10 +11,11 @@ go_library( "etcd.go", "strategy.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/features:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", @@ -30,5 +29,19 @@ go_library( "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", "//vendor/k8s.io/apiserver/pkg/storage/errors:go_default_library", "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go index f300dac285..901406bfef 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go @@ -41,11 +41,11 @@ func NewREST(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) *REST strategy := NewStrategy(scheme) store := &genericregistry.Store{ - Copier: scheme, - NewFunc: func() runtime.Object { return &apiextensions.CustomResourceDefinition{} }, - NewListFunc: func() runtime.Object { return &apiextensions.CustomResourceDefinitionList{} }, - PredicateFunc: MatchCustomResourceDefinition, - QualifiedResource: apiextensions.Resource("customresourcedefinitions"), + Copier: scheme, + NewFunc: func() runtime.Object { return &apiextensions.CustomResourceDefinition{} }, + NewListFunc: func() runtime.Object { return &apiextensions.CustomResourceDefinitionList{} }, + PredicateFunc: MatchCustomResourceDefinition, + DefaultQualifiedResource: apiextensions.Resource("customresourcedefinitions"), CreateStrategy: strategy, UpdateStrategy: strategy, diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/strategy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/strategy.go index de6e34a74c..849cd6f8ea 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/strategy.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/strategy.go @@ -19,6 +19,7 @@ package customresourcedefinition import ( "fmt" + apiequality "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -27,9 +28,11 @@ import ( "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/names" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation" + apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features" ) type strategy struct { @@ -46,9 +49,37 @@ func (strategy) NamespaceScoped() bool { } func (strategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) { + crd := obj.(*apiextensions.CustomResourceDefinition) + crd.Status = apiextensions.CustomResourceDefinitionStatus{} + crd.Generation = 1 + + // if the feature gate is disabled, drop the feature. + if !utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourceValidation) { + crd.Spec.Validation = nil + } } func (strategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) { + newCRD := obj.(*apiextensions.CustomResourceDefinition) + oldCRD := old.(*apiextensions.CustomResourceDefinition) + newCRD.Status = oldCRD.Status + + // Any changes to the spec increment the generation number, any changes to the + // status should reflect the generation number of the corresponding object. We push + // the burden of managing the status onto the clients because we can't (in general) + // know here what version of spec the writer of the status has seen. It may seem like + // we can at first -- since obj contains spec -- but in the future we will probably make + // status its own object, and even if we don't, writes may be the result of a + // read-update-write loop, so the contents of spec may not actually be the spec that + // the controller has *seen*. + if !apiequality.Semantic.DeepEqual(oldCRD.Spec, newCRD.Spec) { + newCRD.Generation = oldCRD.Generation + 1 + } + + if !utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourceValidation) { + newCRD.Spec.Validation = nil + oldCRD.Spec.Validation = nil + } } func (strategy) Validate(ctx genericapirequest.Context, obj runtime.Object) field.ErrorList { @@ -87,9 +118,14 @@ func (statusStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old r newObj := obj.(*apiextensions.CustomResourceDefinition) oldObj := old.(*apiextensions.CustomResourceDefinition) newObj.Spec = oldObj.Spec + + // Status updates are for only for updating status, not objectmeta. + // TODO: Update after ResetObjectMetaForStatus is added to meta/v1. newObj.Labels = oldObj.Labels newObj.Annotations = oldObj.Annotations newObj.OwnerReferences = oldObj.OwnerReferences + newObj.Generation = oldObj.Generation + newObj.SelfLink = oldObj.SelfLink } func (statusStrategy) AllowCreateOnUpdate() bool { diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/BUILD b/vendor/k8s.io/apiextensions-apiserver/test/integration/BUILD index d50de5602f..21295eca46 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_test", @@ -16,10 +14,7 @@ go_test( "registration_test.go", "validation_test.go", ], - tags = [ - "automanaged", - "integration", - ], + tags = ["integration"], deps = [ "//vendor/github.com/coreos/etcd/clientv3:go_default_library", "//vendor/github.com/stretchr/testify/require:go_default_library", @@ -35,8 +30,26 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go index 5e2dbdd989..b67e44b2f8 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go @@ -28,6 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/dynamic" @@ -75,7 +76,7 @@ func TestClusterScopedCRUD(t *testing.T) { testSimpleCRUD(t, ns, noxuDefinition, noxuVersionClient) } -func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition, noxuVersionClient *dynamic.Client) { +func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition, noxuVersionClient dynamic.Interface) { noxuResourceClient := NewNamespacedCustomResourceClient(ns, noxuVersionClient, noxuDefinition) initialList, err := noxuResourceClient.List(metav1.ListOptions{}) if err != nil { @@ -401,6 +402,69 @@ func TestPreserveInt(t *testing.T) { } } +func TestPatch(t *testing.T) { + stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() + if err != nil { + t.Fatal(err) + } + defer close(stopCh) + + noxuDefinition := testserver.NewNoxuCustomResourceDefinition(apiextensionsv1beta1.ClusterScoped) + noxuVersionClient, err := testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err != nil { + t.Fatal(err) + } + + ns := "not-the-default" + noxuNamespacedResourceClient := noxuVersionClient.Resource(&metav1.APIResource{ + Name: noxuDefinition.Spec.Names.Plural, + Namespaced: true, + }, ns) + + noxuInstanceToCreate := testserver.NewNoxuInstance(ns, "foo") + createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate) + if err != nil { + t.Fatal(err) + } + + patch := []byte(`{"num": {"num2":999}}`) + createdNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // a patch with no change + createdNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // an empty patch + createdNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`)) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + originalJSON, err := runtime.Encode(unstructured.UnstructuredJSONScheme, createdNoxuInstance) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + gottenNoxuInstance, err := runtime.Decode(unstructured.UnstructuredJSONScheme, originalJSON) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // Check if int is preserved. + unstructuredObj := gottenNoxuInstance.(*unstructured.Unstructured).Object + num := unstructuredObj["num"].(map[string]interface{}) + num1 := num["num1"].(int64) + num2 := num["num2"].(int64) + if num1 != 9223372036854775807 || num2 != 999 { + t.Errorf("Expected %v, got %v, %v", `9223372036854775807, 999`, num1, num2) + } +} + func TestCrossNamespaceListWatch(t *testing.T) { stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() if err != nil { @@ -501,7 +565,7 @@ func TestCrossNamespaceListWatch(t *testing.T) { checkNamespacesWatchHelper(t, ns2, noxuNamespacesWatch2) } -func createInstanceWithNamespaceHelper(t *testing.T, ns string, name string, noxuNamespacedResourceClient *dynamic.ResourceClient, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition) *unstructured.Unstructured { +func createInstanceWithNamespaceHelper(t *testing.T, ns string, name string, noxuNamespacedResourceClient dynamic.ResourceInterface, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition) *unstructured.Unstructured { createdInstance, err := instantiateCustomResource(t, testserver.NewNoxuInstance(ns, name), noxuNamespacedResourceClient, noxuDefinition) if err != nil { t.Fatalf("unable to create noxu Instance:%v", err) diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/registration_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/registration_test.go index 4fe6471873..a72ce2dcf9 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/registration_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/registration_test.go @@ -39,7 +39,7 @@ import ( "k8s.io/client-go/dynamic" ) -func instantiateCustomResource(t *testing.T, instanceToCreate *unstructured.Unstructured, client *dynamic.ResourceClient, definition *apiextensionsv1beta1.CustomResourceDefinition) (*unstructured.Unstructured, error) { +func instantiateCustomResource(t *testing.T, instanceToCreate *unstructured.Unstructured, client dynamic.ResourceInterface, definition *apiextensionsv1beta1.CustomResourceDefinition) (*unstructured.Unstructured, error) { createdInstance, err := client.Create(instanceToCreate) if err != nil { t.Logf("%#v", createdInstance) @@ -66,7 +66,7 @@ func instantiateCustomResource(t *testing.T, instanceToCreate *unstructured.Unst return createdInstance, nil } -func NewNamespacedCustomResourceClient(ns string, client *dynamic.Client, definition *apiextensionsv1beta1.CustomResourceDefinition) *dynamic.ResourceClient { +func NewNamespacedCustomResourceClient(ns string, client dynamic.Interface, definition *apiextensionsv1beta1.CustomResourceDefinition) dynamic.ResourceInterface { return client.Resource(&metav1.APIResource{ Name: definition.Spec.Names.Plural, Namespaced: definition.Spec.Scope == apiextensionsv1beta1.NamespaceScoped, @@ -457,7 +457,7 @@ func TestEtcdStorage(t *testing.T) { } func getPrefixFromConfig(t *testing.T, config *extensionsapiserver.Config) string { - extensionsOptionsGetter, ok := config.CRDRESTOptionsGetter.(extensionsapiserver.CRDRESTOptionsGetter) + extensionsOptionsGetter, ok := config.ExtraConfig.CRDRESTOptionsGetter.(extensionsapiserver.CRDRESTOptionsGetter) if !ok { t.Fatal("can't obtain etcd prefix: unable to cast config.CRDRESTOptionsGetter to extensionsapiserver.CRDRESTOptionsGetter") } diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD b/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD index ba16121dd0..87c46151ae 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "resources.go", "start.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/pborman/uuid:go_default_library", "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", @@ -27,9 +24,21 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", - "//vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory:go_default_library", "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go index a68c7393c4..d2d739de9b 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/resources.go @@ -33,9 +33,14 @@ import ( "k8s.io/client-go/dynamic" ) +const ( + noxuInstanceNum int64 = 9223372036854775807 +) + //NewRandomNameCustomResourceDefinition generates a CRD with random name to avoid name conflict in e2e tests func NewRandomNameCustomResourceDefinition(scope apiextensionsv1beta1.ResourceScope) *apiextensionsv1beta1.CustomResourceDefinition { - gName := names.SimpleNameGenerator.GenerateName("foo") + // ensure the singular doesn't end in an s for now + gName := names.SimpleNameGenerator.GenerateName("foo") + "a" return &apiextensionsv1beta1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{Name: gName + "s.mygroup.example.com"}, Spec: apiextensionsv1beta1.CustomResourceDefinitionSpec{ @@ -83,7 +88,7 @@ func NewNoxuInstance(namespace, name string) *unstructured.Unstructured { "key": "value", }, "num": map[string]interface{}{ - "num1": 9223372036854775807, + "num1": noxuInstanceNum, "num2": 1000000, }, }, @@ -141,7 +146,7 @@ func NewCurletInstance(namespace, name string) *unstructured.Unstructured { } } -func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceDefinition, apiExtensionsClient clientset.Interface, clientPool dynamic.ClientPool) (*dynamic.Client, error) { +func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceDefinition, apiExtensionsClient clientset.Interface, clientPool dynamic.ClientPool) (dynamic.Interface, error) { _, err := apiExtensionsClient.Apiextensions().CustomResourceDefinitions().Create(crd) if err != nil { return nil, err @@ -194,7 +199,7 @@ func CreateNewCustomResourceDefinition(crd *apiextensionsv1beta1.CustomResourceD return dynamicClient, nil } -func checkForWatchCachePrimed(crd *apiextensionsv1beta1.CustomResourceDefinition, dynamicClient *dynamic.Client) error { +func checkForWatchCachePrimed(crd *apiextensionsv1beta1.CustomResourceDefinition, dynamicClient dynamic.Interface) error { ns := "" if crd.Spec.Scope != apiextensionsv1beta1.ClusterScoped { ns = "aval" @@ -212,7 +217,7 @@ func checkForWatchCachePrimed(crd *apiextensionsv1beta1.CustomResourceDefinition return err } - instanceName := "foo" + instanceName := "setup-instance" instance := &unstructured.Unstructured{ Object: map[string]interface{}{ "apiVersion": crd.Spec.Group + "/" + crd.Spec.Version, @@ -221,6 +226,11 @@ func checkForWatchCachePrimed(crd *apiextensionsv1beta1.CustomResourceDefinition "namespace": ns, "name": instanceName, }, + "alpha": "foo_123", + "beta": 10, + "gamma": "bar", + "delta": "hello", + "epsilon": "foobar", }, } if _, err := resourceClient.Create(instance); err != nil { diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go index de23379c06..5c8efe7cf7 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go @@ -30,7 +30,6 @@ import ( "k8s.io/apiextensions-apiserver/pkg/cmd/server" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/apiserver/pkg/authorization/authorizerfactory" genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/client-go/dynamic" ) @@ -44,7 +43,8 @@ func DefaultServerConfig() (*extensionsapiserver.Config, error) { options := server.NewCustomResourceDefinitionsServerOptions(os.Stdout, os.Stderr) options.RecommendedOptions.Audit.LogOptions.Path = "-" options.RecommendedOptions.SecureServing.BindPort = port - options.RecommendedOptions.Authentication.SkipInClusterLookup = true + options.RecommendedOptions.Authentication = nil // disable + options.RecommendedOptions.Authorization = nil // disable options.RecommendedOptions.SecureServing.BindAddress = net.ParseIP("127.0.0.1") etcdURL, ok := os.LookupEnv("KUBE_INTEGRATION_ETCD_URL") if !ok { @@ -53,26 +53,12 @@ func DefaultServerConfig() (*extensionsapiserver.Config, error) { options.RecommendedOptions.Etcd.StorageConfig.ServerList = []string{etcdURL} options.RecommendedOptions.Etcd.StorageConfig.Prefix = uuid.New() - // TODO stop copying this - // because there isn't currently a way to disable authentication or authorization from options - // explode options.Config here - genericConfig := genericapiserver.NewConfig(extensionsapiserver.Codecs) - genericConfig.Authenticator = nil - genericConfig.Authorizer = authorizerfactory.NewAlwaysAllowAuthorizer() + genericConfig := genericapiserver.NewRecommendedConfig(extensionsapiserver.Codecs) if err := options.RecommendedOptions.SecureServing.MaybeDefaultWithSelfSignedCerts("localhost", nil, []net.IP{net.ParseIP("127.0.0.1")}); err != nil { return nil, fmt.Errorf("error creating self-signed certificates: %v", err) } - if err := options.RecommendedOptions.Etcd.ApplyTo(genericConfig); err != nil { - return nil, err - } - if err := options.RecommendedOptions.SecureServing.ApplyTo(genericConfig); err != nil { - return nil, err - } - if err := options.RecommendedOptions.Audit.ApplyTo(genericConfig); err != nil { - return nil, err - } - if err := options.RecommendedOptions.Features.ApplyTo(genericConfig); err != nil { + if err := options.RecommendedOptions.ApplyTo(genericConfig); err != nil { return nil, err } @@ -88,8 +74,10 @@ func DefaultServerConfig() (*extensionsapiserver.Config, error) { customResourceDefinitionRESTOptionsGetter.StorageConfig.Copier = extensionsapiserver.UnstructuredCopier{} config := &extensionsapiserver.Config{ - GenericConfig: genericConfig, - CRDRESTOptionsGetter: customResourceDefinitionRESTOptionsGetter, + GenericConfig: genericConfig, + ExtraConfig: extensionsapiserver.ExtraConfig{ + CRDRESTOptionsGetter: customResourceDefinitionRESTOptionsGetter, + }, } return config, nil diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go index 69ccb58aa4..d540fa59b8 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go @@ -19,10 +19,16 @@ package integration import ( "strings" "testing" + "time" + + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/util/wait" + utilfeature "k8s.io/apiserver/pkg/util/feature" apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apiextensions-apiserver/test/integration/testserver" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestForProperValidationErrors(t *testing.T) { @@ -79,3 +85,371 @@ func TestForProperValidationErrors(t *testing.T) { } } } + +func newNoxuValidationCRD(scope apiextensionsv1beta1.ResourceScope) *apiextensionsv1beta1.CustomResourceDefinition { + return &apiextensionsv1beta1.CustomResourceDefinition{ + ObjectMeta: metav1.ObjectMeta{Name: "noxus.mygroup.example.com"}, + Spec: apiextensionsv1beta1.CustomResourceDefinitionSpec{ + Group: "mygroup.example.com", + Version: "v1beta1", + Names: apiextensionsv1beta1.CustomResourceDefinitionNames{ + Plural: "noxus", + Singular: "nonenglishnoxu", + Kind: "WishIHadChosenNoxu", + ShortNames: []string{"foo", "bar", "abc", "def"}, + ListKind: "NoxuItemList", + }, + Scope: apiextensionsv1beta1.NamespaceScoped, + Validation: &apiextensionsv1beta1.CustomResourceValidation{ + OpenAPIV3Schema: &apiextensionsv1beta1.JSONSchemaProps{ + Required: []string{"alpha", "beta"}, + AdditionalProperties: &apiextensionsv1beta1.JSONSchemaPropsOrBool{ + Allows: true, + }, + Properties: map[string]apiextensionsv1beta1.JSONSchemaProps{ + "alpha": { + Description: "Alpha is an alphanumeric string with underscores", + Type: "string", + Pattern: "^[a-zA-Z0-9_]*$", + }, + "beta": { + Description: "Minimum value of beta is 10", + Type: "number", + Minimum: float64Ptr(10), + }, + "gamma": { + Description: "Gamma is restricted to foo, bar and baz", + Type: "string", + Enum: []apiextensionsv1beta1.JSON{ + { + Raw: []byte(`"foo"`), + }, + { + Raw: []byte(`"bar"`), + }, + { + Raw: []byte(`"baz"`), + }, + }, + }, + "delta": { + Description: "Delta is a string with a maximum length of 5 or a number with a minimum value of 0", + AnyOf: []apiextensionsv1beta1.JSONSchemaProps{ + { + Type: "string", + MaxLength: int64Ptr(5), + }, + { + Type: "number", + Minimum: float64Ptr(0), + }, + }, + }, + }, + }, + }, + }, + } +} + +func newNoxuValidationInstance(namespace, name string) *unstructured.Unstructured { + return &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "mygroup.example.com/v1beta1", + "kind": "WishIHadChosenNoxu", + "metadata": map[string]interface{}{ + "namespace": namespace, + "name": name, + }, + "alpha": "foo_123", + "beta": 10, + "gamma": "bar", + "delta": "hello", + }, + } +} + +func TestCustomResourceValidation(t *testing.T) { + stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() + if err != nil { + t.Fatal(err) + } + defer close(stopCh) + + // enable alpha feature CustomResourceValidation + err = utilfeature.DefaultFeatureGate.Set("CustomResourceValidation=true") + if err != nil { + t.Errorf("failed to enable feature gate for CustomResourceValidation: %v", err) + } + + noxuDefinition := newNoxuValidationCRD(apiextensionsv1beta1.NamespaceScoped) + noxuVersionClient, err := testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err != nil { + t.Fatal(err) + } + + ns := "not-the-default" + noxuResourceClient := NewNamespacedCustomResourceClient(ns, noxuVersionClient, noxuDefinition) + _, err = instantiateCustomResource(t, newNoxuValidationInstance(ns, "foo"), noxuResourceClient, noxuDefinition) + if err != nil { + t.Fatalf("unable to create noxu instance: %v", err) + } +} + +func TestCustomResourceUpdateValidation(t *testing.T) { + stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() + if err != nil { + t.Fatal(err) + } + defer close(stopCh) + + // enable alpha feature CustomResourceValidation + err = utilfeature.DefaultFeatureGate.Set("CustomResourceValidation=true") + if err != nil { + t.Errorf("failed to enable feature gate for CustomResourceValidation: %v", err) + } + + noxuDefinition := newNoxuValidationCRD(apiextensionsv1beta1.NamespaceScoped) + noxuVersionClient, err := testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err != nil { + t.Fatal(err) + } + + ns := "not-the-default" + noxuResourceClient := NewNamespacedCustomResourceClient(ns, noxuVersionClient, noxuDefinition) + _, err = instantiateCustomResource(t, newNoxuValidationInstance(ns, "foo"), noxuResourceClient, noxuDefinition) + if err != nil { + t.Fatalf("unable to create noxu instance: %v", err) + } + + gottenNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + + // invalidate the instance + gottenNoxuInstance.Object = map[string]interface{}{ + "apiVersion": "mygroup.example.com/v1beta1", + "kind": "WishIHadChosenNoxu", + "metadata": map[string]interface{}{ + "namespace": "not-the-default", + "name": "foo", + }, + "gamma": "bar", + "delta": "hello", + } + + _, err = noxuResourceClient.Update(gottenNoxuInstance) + if err == nil { + t.Fatalf("unexpected non-error: alpha and beta should be present while updating %v", gottenNoxuInstance) + } +} + +func TestCustomResourceValidationErrors(t *testing.T) { + stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() + if err != nil { + t.Fatal(err) + } + defer close(stopCh) + + // enable alpha feature CustomResourceValidation + err = utilfeature.DefaultFeatureGate.Set("CustomResourceValidation=true") + if err != nil { + t.Errorf("failed to enable feature gate for CustomResourceValidation: %v", err) + } + + noxuDefinition := newNoxuValidationCRD(apiextensionsv1beta1.NamespaceScoped) + noxuVersionClient, err := testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err != nil { + t.Fatal(err) + } + + ns := "not-the-default" + noxuResourceClient := NewNamespacedCustomResourceClient(ns, noxuVersionClient, noxuDefinition) + + tests := []struct { + name string + instanceFn func() *unstructured.Unstructured + expectedError string + }{ + { + name: "bad alpha", + instanceFn: func() *unstructured.Unstructured { + instance := newNoxuValidationInstance(ns, "foo") + instance.Object["alpha"] = "foo_123!" + return instance + }, + expectedError: "alpha in body should match '^[a-zA-Z0-9_]*$'", + }, + { + name: "bad beta", + instanceFn: func() *unstructured.Unstructured { + instance := newNoxuValidationInstance(ns, "foo") + instance.Object["beta"] = 5 + return instance + }, + expectedError: "beta in body should be greater than or equal to 10", + }, + { + name: "bad gamma", + instanceFn: func() *unstructured.Unstructured { + instance := newNoxuValidationInstance(ns, "foo") + instance.Object["gamma"] = "qux" + return instance + }, + expectedError: "gamma in body should be one of [foo bar baz]", + }, + { + name: "bad delta", + instanceFn: func() *unstructured.Unstructured { + instance := newNoxuValidationInstance(ns, "foo") + instance.Object["delta"] = "foobarbaz" + return instance + }, + expectedError: "must validate at least one schema (anyOf)\ndelta in body should be at most 5 chars long", + }, + { + name: "absent alpha and beta", + instanceFn: func() *unstructured.Unstructured { + instance := newNoxuValidationInstance(ns, "foo") + instance.Object = map[string]interface{}{ + "apiVersion": "mygroup.example.com/v1beta1", + "kind": "WishIHadChosenNoxu", + "metadata": map[string]interface{}{ + "namespace": "not-the-default", + "name": "foo", + }, + "gamma": "bar", + "delta": "hello", + } + return instance + }, + expectedError: ".alpha in body is required\n.beta in body is required", + }, + } + + for _, tc := range tests { + _, err := noxuResourceClient.Create(tc.instanceFn()) + if err == nil { + t.Errorf("%v: expected %v", tc.name, tc.expectedError) + continue + } + // this only works when status errors contain the expect kind and version, so this effectively tests serializations too + if !strings.Contains(err.Error(), tc.expectedError) { + t.Errorf("%v: expected %v, got %v", tc.name, tc.expectedError, err) + continue + } + } +} + +func TestCRValidationOnCRDUpdate(t *testing.T) { + stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() + if err != nil { + t.Fatal(err) + } + defer close(stopCh) + + // enable alpha feature CustomResourceValidation + err = utilfeature.DefaultFeatureGate.Set("CustomResourceValidation=true") + if err != nil { + t.Errorf("failed to enable feature gate for CustomResourceValidation: %v", err) + } + + noxuDefinition := newNoxuValidationCRD(apiextensionsv1beta1.NamespaceScoped) + + // set stricter schema + noxuDefinition.Spec.Validation.OpenAPIV3Schema.Required = []string{"alpha", "beta", "epsilon"} + + noxuVersionClient, err := testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err != nil { + t.Fatal(err) + } + ns := "not-the-default" + noxuResourceClient := NewNamespacedCustomResourceClient(ns, noxuVersionClient, noxuDefinition) + + // CR is rejected + _, err = instantiateCustomResource(t, newNoxuValidationInstance(ns, "foo"), noxuResourceClient, noxuDefinition) + if err == nil { + t.Fatalf("unexpected non-error: CR should be rejected") + } + + gottenCRD, err := apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get("noxus.mygroup.example.com", metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + + // update the CRD to a less stricter schema + gottenCRD.Spec.Validation.OpenAPIV3Schema.Required = []string{"alpha", "beta"} + if _, err = apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(gottenCRD); err != nil { + t.Fatal(err) + } + + // CR is now accepted + err = wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { + _, err := noxuResourceClient.Create(newNoxuValidationInstance(ns, "foo")) + if statusError, isStatus := err.(*apierrors.StatusError); isStatus { + if strings.Contains(statusError.Error(), "is invalid") { + return false, nil + } + } + if err != nil { + return false, err + } + return true, nil + }) + if err != nil { + t.Fatal(err) + } +} + +func TestForbiddenFieldsInSchema(t *testing.T) { + stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer() + if err != nil { + t.Fatal(err) + } + defer close(stopCh) + + // enable alpha feature CustomResourceValidation + err = utilfeature.DefaultFeatureGate.Set("CustomResourceValidation=true") + if err != nil { + t.Errorf("failed to enable feature gate for CustomResourceValidation: %v", err) + } + + noxuDefinition := newNoxuValidationCRD(apiextensionsv1beta1.NamespaceScoped) + noxuDefinition.Spec.Validation.OpenAPIV3Schema.AdditionalProperties.Allows = false + + _, err = testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err == nil { + t.Fatalf("unexpected non-error: additionalProperties cannot be set to false") + } + + noxuDefinition.Spec.Validation.OpenAPIV3Schema.Properties["zeta"] = apiextensionsv1beta1.JSONSchemaProps{ + Type: "array", + UniqueItems: true, + } + noxuDefinition.Spec.Validation.OpenAPIV3Schema.AdditionalProperties.Allows = true + + _, err = testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err == nil { + t.Fatalf("unexpected non-error: uniqueItems cannot be set to true") + } + + noxuDefinition.Spec.Validation.OpenAPIV3Schema.Properties["zeta"] = apiextensionsv1beta1.JSONSchemaProps{ + Type: "array", + UniqueItems: false, + } + + _, err = testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool) + if err != nil { + t.Fatal(err) + } + +} + +func float64Ptr(f float64) *float64 { + return &f +} + +func int64Ptr(f int64) *int64 { + return &f +} diff --git a/vendor/k8s.io/apimachinery/Godeps/Godeps.json b/vendor/k8s.io/apimachinery/Godeps/Godeps.json index 2b3187b331..f28bc6f6cf 100644 --- a/vendor/k8s.io/apimachinery/Godeps/Godeps.json +++ b/vendor/k8s.io/apimachinery/Godeps/Godeps.json @@ -8,7 +8,6 @@ "Deps": [ { "ImportPath": "github.com/PuerkitoBio/purell", - "Comment": "v1.0.0", "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" }, { @@ -17,7 +16,7 @@ }, { "ImportPath": "github.com/davecgh/go-spew/spew", - "Rev": "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d" + "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" }, { "ImportPath": "github.com/docker/spdystream", @@ -29,22 +28,19 @@ }, { "ImportPath": "github.com/elazarl/goproxy", - "Comment": "v1.0-104-gc4fc265", "Rev": "c4fc26588b6ef8af07a191fcb6476387bdd46711" }, { "ImportPath": "github.com/emicklei/go-restful", - "Comment": "2.2.0-4-gff4f55a", "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" }, { "ImportPath": "github.com/emicklei/go-restful/log", - "Comment": "2.2.0-4-gff4f55a", "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" }, { "ImportPath": "github.com/evanphx/json-patch", - "Rev": "ba18e35c5c1b36ef6334cad706eb681153d2d379" + "Rev": "944e07253867aacae43c04b2e6a239005443f33a" }, { "ImportPath": "github.com/ghodss/yaml", @@ -68,12 +64,10 @@ }, { "ImportPath": "github.com/gogo/protobuf/proto", - "Comment": "v0.4-3-gc0656ed", "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" }, { "ImportPath": "github.com/gogo/protobuf/sortkeys", - "Comment": "v0.4-3-gc0656ed", "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" }, { @@ -100,6 +94,10 @@ "ImportPath": "github.com/hashicorp/golang-lru/simplelru", "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" }, + { + "ImportPath": "github.com/json-iterator/go", + "Rev": "36b14963da70d11297d313183d7e6388c8510e1e" + }, { "ImportPath": "github.com/mailru/easyjson/buffer", "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" @@ -112,82 +110,113 @@ "ImportPath": "github.com/mailru/easyjson/jwriter", "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" }, + { + "ImportPath": "github.com/mxk/go-flowrate/flowrate", + "Rev": "cca7078d478f8520f85629ad7c68962d31ed7682" + }, { "ImportPath": "github.com/pborman/uuid", "Rev": "ca53cad383cad2479bbba7f7a1a05797ec1386e4" }, + { + "ImportPath": "github.com/pmezard/go-difflib/difflib", + "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" + }, { "ImportPath": "github.com/spf13/pflag", "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" }, { - "ImportPath": "github.com/ugorji/go/codec", - "Rev": "ded73eae5db7e7a0ef6f55aace87a2873c5d2b74" + "ImportPath": "github.com/stretchr/testify/assert", + "Rev": "f6abca593680b2315d2075e0f5e2a9751e3f431a" + }, + { + "ImportPath": "github.com/stretchr/testify/require", + "Rev": "f6abca593680b2315d2075e0f5e2a9751e3f431a" + }, + { + "ImportPath": "golang.org/x/net/html", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/html/atom", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/http2", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/http2/hpack", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/idna", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/net/lex/httplex", - "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" + }, + { + "ImportPath": "golang.org/x/net/websocket", + "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, { "ImportPath": "golang.org/x/text/cases", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" + }, + { + "ImportPath": "golang.org/x/text/internal", + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/internal/tag", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/language", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/runes", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/secure/bidirule", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/secure/precis", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/transform", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/unicode/bidi", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/unicode/norm", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "golang.org/x/text/width", - "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" }, { "ImportPath": "gopkg.in/inf.v0", - "Comment": "v0.9.0", "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" }, { "ImportPath": "gopkg.in/yaml.v2", "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77" + }, + { + "ImportPath": "k8s.io/kube-openapi/pkg/common", + "Rev": "868f2f29720b192240e18284659231b440f9cda5" } ] } diff --git a/vendor/k8s.io/apimachinery/OWNERS b/vendor/k8s.io/apimachinery/OWNERS index 2719ec9204..7069eeb0b4 100644 --- a/vendor/k8s.io/apimachinery/OWNERS +++ b/vendor/k8s.io/apimachinery/OWNERS @@ -18,4 +18,4 @@ reviewers: - gmarek - sttts - ncdc -- timstclair +- tallclair diff --git a/vendor/k8s.io/apimachinery/kubernetes-sha b/vendor/k8s.io/apimachinery/kubernetes-sha deleted file mode 100644 index f276d6ff87..0000000000 --- a/vendor/k8s.io/apimachinery/kubernetes-sha +++ /dev/null @@ -1 +0,0 @@ -70c4fe7f4ff7f7acf5de9fee7551da1b2e5aa22c diff --git a/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD b/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD index 7a21f2db51..f428253571 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,7 +8,6 @@ load( go_library( name = "go_default_library", srcs = ["semantic.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -19,3 +16,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go b/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go index 3ebd8c719d..f02fa8e434 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go +++ b/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go @@ -34,6 +34,9 @@ var Semantic = conversion.EqualitiesOrDie( // Uninitialized quantities are equivalent to 0 quantities. return a.Cmp(b) == 0 }, + func(a, b metav1.MicroTime) bool { + return a.UTC() == b.UTC() + }, func(a, b metav1.Time) bool { return a.UTC() == b.UTC() }, diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD b/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD index 50f9237a47..bae266c4b1 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["errors_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", @@ -27,7 +24,6 @@ go_library( "doc.go", "errors.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", @@ -35,3 +31,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS index e664b2015b..ff82254f83 100755 --- a/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS @@ -14,7 +14,7 @@ reviewers: - erictune - saad-ali - janetkuo -- timstclair +- tallclair - eparis - timothysc - dims diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go index 560c889b9c..d5503fac5d 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go @@ -28,14 +28,10 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" ) -// HTTP Status codes not in the golang http package. const ( - StatusUnprocessableEntity = 422 - StatusTooManyRequests = 429 - // StatusServerTimeout 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 + // StatusTooManyRequests means the server experienced too many requests within a + // given window and that the client must wait to perform the action again. + StatusTooManyRequests = 429 ) // StatusError is an error intended for consumption by a REST API server; it can also be @@ -138,6 +134,14 @@ func NewUnauthorized(reason string) *StatusError { // NewForbidden returns an error indicating the requested action was forbidden func NewForbidden(qualifiedResource schema.GroupResource, name string, err error) *StatusError { + var message string + if qualifiedResource.Empty() { + message = fmt.Sprintf("forbidden: %v", err) + } else if name == "" { + message = fmt.Sprintf("%s is forbidden: %v", qualifiedResource.String(), err) + } else { + message = fmt.Sprintf("%s %q is forbidden: %v", qualifiedResource.String(), name, err) + } return &StatusError{metav1.Status{ Status: metav1.StatusFailure, Code: http.StatusForbidden, @@ -147,7 +151,7 @@ func NewForbidden(qualifiedResource schema.GroupResource, name string, err error Kind: qualifiedResource.Resource, Name: name, }, - Message: fmt.Sprintf("%s %q is forbidden: %v", qualifiedResource.String(), name, err), + Message: message, }} } @@ -176,6 +180,17 @@ func NewGone(message string) *StatusError { }} } +// NewResourceExpired creates an error that indicates that the requested resource content has expired from +// the server (usually due to a resourceVersion that is too old). +func NewResourceExpired(message string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusGone, + Reason: metav1.StatusReasonExpired, + Message: message, + }} +} + // NewInvalid returns an error indicating the item is invalid and cannot be processed. func NewInvalid(qualifiedKind schema.GroupKind, name string, errs field.ErrorList) *StatusError { causes := make([]metav1.StatusCause, 0, len(errs)) @@ -189,7 +204,7 @@ func NewInvalid(qualifiedKind schema.GroupKind, name string, errs field.ErrorLis } return &StatusError{metav1.Status{ Status: metav1.StatusFailure, - Code: StatusUnprocessableEntity, // RFC 4918: StatusUnprocessableEntity + Code: http.StatusUnprocessableEntity, Reason: metav1.StatusReasonInvalid, Details: &metav1.StatusDetails{ Group: qualifiedKind.Group, @@ -211,6 +226,21 @@ func NewBadRequest(reason string) *StatusError { }} } +// NewTooManyRequests creates an error that indicates that the client must try again later because +// the specified endpoint is not accepting requests. More specific details should be provided +// if client should know why the failure was limited4. +func NewTooManyRequests(message string, retryAfterSeconds int) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusTooManyRequests, + Reason: metav1.StatusReasonTooManyRequests, + Message: message, + Details: &metav1.StatusDetails{ + RetryAfterSeconds: int32(retryAfterSeconds), + }, + }} +} + // NewServiceUnavailable creates an error that indicates that the requested service is unavailable. func NewServiceUnavailable(reason string) *StatusError { return &StatusError{metav1.Status{ @@ -276,7 +306,7 @@ func NewInternalError(err error) *StatusError { func NewTimeoutError(message string, retryAfterSeconds int) *StatusError { return &StatusError{metav1.Status{ Status: metav1.StatusFailure, - Code: StatusServerTimeout, + Code: http.StatusGatewayTimeout, Reason: metav1.StatusReasonTimeout, Message: fmt.Sprintf("Timeout: %s", message), Details: &metav1.StatusDetails{ @@ -285,6 +315,18 @@ func NewTimeoutError(message string, retryAfterSeconds int) *StatusError { }} } +// NewTooManyRequestsError returns an error indicating that the request was rejected because +// the server has received too many requests. Client should wait and retry. But if the request +// is perishable, then the client should not retry the request. +func NewTooManyRequestsError(message string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: StatusTooManyRequests, + Reason: metav1.StatusReasonTooManyRequests, + Message: fmt.Sprintf("Too many requests: %s", message), + }} +} + // NewGenericServerResponse returns a new error for server responses that are not in a recognizable form. func NewGenericServerResponse(code int, verb string, qualifiedResource schema.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError { reason := metav1.StatusReasonUnknown @@ -313,14 +355,14 @@ func NewGenericServerResponse(code int, verb string, qualifiedResource schema.Gr case http.StatusMethodNotAllowed: reason = metav1.StatusReasonMethodNotAllowed message = "the server does not allow this method on the requested resource" - case StatusUnprocessableEntity: + case http.StatusUnprocessableEntity: reason = metav1.StatusReasonInvalid message = "the server rejected our request due to an error in our request" - case StatusServerTimeout: - reason = metav1.StatusReasonServerTimeout - message = "the server cannot complete the requested operation at this time, try again later" - case StatusTooManyRequests: + case http.StatusGatewayTimeout: reason = metav1.StatusReasonTimeout + message = "the server was unable to return a response in the time allotted, but may still be processing the request" + case http.StatusTooManyRequests: + reason = metav1.StatusReasonTooManyRequests message = "the server has received too many requests and has asked us to try again later" default: if code >= 500 { @@ -381,12 +423,28 @@ func IsInvalid(err error) bool { return reasonForError(err) == metav1.StatusReasonInvalid } +// IsGone is true if the error indicates the requested resource is no longer available. +func IsGone(err error) bool { + return reasonForError(err) == metav1.StatusReasonGone +} + +// IsResourceExpired is true if the error indicates the resource has expired and the current action is +// no longer possible. +func IsResourceExpired(err error) bool { + return reasonForError(err) == metav1.StatusReasonExpired +} + // 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) == metav1.StatusReasonMethodNotAllowed } +// IsServiceUnavailable is true if the error indicates the underlying service is no longer available. +func IsServiceUnavailable(err error) bool { + return reasonForError(err) == metav1.StatusReasonServiceUnavailable +} + // IsBadRequest determines if err is an error which indicates that the request is invalid. func IsBadRequest(err error) bool { return reasonForError(err) == metav1.StatusReasonBadRequest @@ -423,11 +481,13 @@ func IsInternalError(err error) bool { // IsTooManyRequests determines if err is an error which indicates that there are too many requests // that the server cannot handle. -// TODO: update IsTooManyRequests() when the TooManyRequests(429) error returned from the API server has a non-empty Reason field func IsTooManyRequests(err error) bool { + if reasonForError(err) == metav1.StatusReasonTooManyRequests { + return true + } switch t := err.(type) { case APIStatus: - return t.Status().Code == StatusTooManyRequests + return t.Status().Code == http.StatusTooManyRequests } return false } @@ -455,13 +515,20 @@ func IsUnexpectedObjectError(err error) bool { } // 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. +// suggested seconds to wait, or false if the error does not imply a wait. It does not +// address whether the error *should* be retried, since some errors (like a 3xx) may +// request delay without retry. func SuggestsClientDelay(err error) (int, bool) { switch t := err.(type) { case APIStatus: if t.Status().Details != nil { switch t.Status().Reason { - case metav1.StatusReasonServerTimeout, metav1.StatusReasonTimeout: + // this StatusReason explicitly requests the caller to delay the action + case metav1.StatusReasonServerTimeout: + return int(t.Status().Details.RetryAfterSeconds), true + } + // If the client requests that we retry after a certain number of seconds + if t.Status().Details.RetryAfterSeconds > 0 { return int(t.Status().Details.RetryAfterSeconds), true } } diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go index c488d2d24c..afc26fd31c 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go @@ -83,14 +83,33 @@ func TestErrorNew(t *testing.T) { if !IsServerTimeout(NewServerTimeout(resource("tests"), "reason", 0)) { t.Errorf("expected to be %s", metav1.StatusReasonServerTimeout) } + if !IsMethodNotSupported(NewMethodNotSupported(resource("foos"), "delete")) { + t.Errorf("expected to be %s", metav1.StatusReasonMethodNotAllowed) + } + if time, ok := SuggestsClientDelay(NewServerTimeout(resource("tests"), "doing something", 10)); time != 10 || !ok { - t.Errorf("expected to be %s", metav1.StatusReasonServerTimeout) + t.Errorf("unexpected %d", time) + } + if time, ok := SuggestsClientDelay(NewServerTimeout(resource("tests"), "doing something", 0)); time != 0 || !ok { + t.Errorf("unexpected %d", time) } if time, ok := SuggestsClientDelay(NewTimeoutError("test reason", 10)); time != 10 || !ok { - t.Errorf("expected to be %s", metav1.StatusReasonTimeout) + t.Errorf("unexpected %d", time) } - if !IsMethodNotSupported(NewMethodNotSupported(resource("foos"), "delete")) { - t.Errorf("expected to be %s", metav1.StatusReasonMethodNotAllowed) + if time, ok := SuggestsClientDelay(NewTooManyRequests("doing something", 10)); time != 10 || !ok { + t.Errorf("unexpected %d", time) + } + if time, ok := SuggestsClientDelay(NewTooManyRequests("doing something", 1)); time != 1 || !ok { + t.Errorf("unexpected %d", time) + } + if time, ok := SuggestsClientDelay(NewGenericServerResponse(429, "get", resource("tests"), "test", "doing something", 10, true)); time != 10 || !ok { + t.Errorf("unexpected %d", time) + } + if time, ok := SuggestsClientDelay(NewGenericServerResponse(500, "get", resource("tests"), "test", "doing something", 10, true)); time != 10 || !ok { + t.Errorf("unexpected %d", time) + } + if time, ok := SuggestsClientDelay(NewGenericServerResponse(429, "get", resource("tests"), "test", "doing something", 0, true)); time != 0 || ok { + t.Errorf("unexpected %d", time) } } @@ -178,6 +197,13 @@ func Test_reasonForError(t *testing.T) { type TestType struct{} func (obj *TestType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (obj *TestType) DeepCopyObject() runtime.Object { + if obj == nil { + return nil + } + clone := *obj + return &clone +} func TestFromObject(t *testing.T) { table := []struct { diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD b/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD index b148d5cee9..f7efd8e8e8 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -17,7 +15,6 @@ go_test( "restmapper_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -31,7 +28,6 @@ go_test( go_library( name = "go_default_library", srcs = [ - "default.go", "doc.go", "errors.go", "firsthit_restmapper.go", @@ -43,7 +39,6 @@ go_library( "restmapper.go", "unstructured.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -54,6 +49,18 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS index 6044c031ed..5f729ffe63 100755 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS @@ -10,7 +10,6 @@ reviewers: - liggitt - nikhiljindal - gmarek -- kargakis - janetkuo - ncdc - eparis diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/default.go b/vendor/k8s.io/apimachinery/pkg/api/meta/default.go deleted file mode 100644 index 5ea906a2a7..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/default.go +++ /dev/null @@ -1,51 +0,0 @@ -/* -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 ( - "strings" - - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/util/sets" -) - -// NewDefaultRESTMapperFromScheme instantiates a DefaultRESTMapper based on types registered in the given scheme. -func NewDefaultRESTMapperFromScheme(defaultGroupVersions []schema.GroupVersion, interfacesFunc VersionInterfacesFunc, - importPathPrefix string, ignoredKinds, rootScoped sets.String, scheme *runtime.Scheme) *DefaultRESTMapper { - - mapper := 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 := RESTScopeNamespace - if rootScoped.Has(kind) { - scope = RESTScopeRoot - } - mapper.Add(gvk, scope) - } - } - return mapper -} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/help.go b/vendor/k8s.io/apimachinery/pkg/api/meta/help.go index 9e0fb152ad..c70b3d2b6c 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/help.go +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/help.go @@ -67,6 +67,9 @@ func GetItemsPtr(list runtime.Object) (interface{}, error) { // EachListItem invokes fn on each runtime.Object in the list. Any error immediately terminates // the loop. func EachListItem(obj runtime.Object, fn func(runtime.Object) error) error { + if unstructured, ok := obj.(runtime.Unstructured); ok { + return unstructured.EachListItem(fn) + } // TODO: Change to an interface call? itemsPtr, err := GetItemsPtr(obj) if err != nil { diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go b/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go index b2c8c97b11..bf1723693a 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go @@ -36,7 +36,7 @@ type ListMetaAccessor interface { // 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 metav1.List +type List metav1.ListInterface // Type exposes the type and APIVersion of versioned or internal API objects. type Type metav1.Type diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go b/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go index 45d850ea8a..1889b95126 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go @@ -34,36 +34,62 @@ import ( // 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 +var errNotCommon = fmt.Errorf("object does not implement the common interface for accessing the SelfLink") + +// CommonAccessor returns a Common 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) { +func CommonAccessor(obj interface{}) (metav1.Common, error) { switch t := obj.(type) { case List: return t, nil - case metav1.List: + case metav1.ListInterface: return t, nil case ListMetaAccessor: if m := t.GetListMeta(); m != nil { return m, nil } - return nil, errNotList + return nil, errNotCommon case metav1.ListMetaAccessor: if m := t.GetListMeta(); m != nil { return m, nil } - return nil, errNotList + return nil, errNotCommon case metav1.Object: return t, nil case metav1.ObjectMetaAccessor: if m := t.GetObjectMeta(); m != nil { return m, nil } - return nil, errNotList + return nil, errNotCommon default: + return nil, errNotCommon + } +} + +// ListAccessor returns a List interface for the provided object or an error if the object does +// not provide List. +// IMPORTANT: Objects are NOT a superset of lists. 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 metav1.ListInterface: + return t, nil + case ListMetaAccessor: + if m := t.GetListMeta(); m != nil { + return m, nil + } return nil, errNotList + case metav1.ListMetaAccessor: + if m := t.GetListMeta(); m != nil { + return m, nil + } + return nil, errNotList + default: + panic(fmt.Errorf("%T does not implement the List interface", obj)) } } @@ -274,7 +300,7 @@ func (resourceAccessor) SetUID(obj runtime.Object, uid types.UID) error { } func (resourceAccessor) SelfLink(obj runtime.Object) (string, error) { - accessor, err := ListAccessor(obj) + accessor, err := CommonAccessor(obj) if err != nil { return "", err } @@ -282,7 +308,7 @@ func (resourceAccessor) SelfLink(obj runtime.Object) (string, error) { } func (resourceAccessor) SetSelfLink(obj runtime.Object, selfLink string) error { - accessor, err := ListAccessor(obj) + accessor, err := CommonAccessor(obj) if err != nil { return err } @@ -325,7 +351,7 @@ func (resourceAccessor) SetAnnotations(obj runtime.Object, annotations map[strin } func (resourceAccessor) ResourceVersion(obj runtime.Object) (string, error) { - accessor, err := ListAccessor(obj) + accessor, err := CommonAccessor(obj) if err != nil { return "", err } @@ -333,7 +359,7 @@ func (resourceAccessor) ResourceVersion(obj runtime.Object) (string, error) { } func (resourceAccessor) SetResourceVersion(obj runtime.Object, version string) error { - accessor, err := ListAccessor(obj) + accessor, err := CommonAccessor(obj) if err != nil { return err } diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go index c6b2597dd8..55155a6e43 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go @@ -117,7 +117,10 @@ func NewDefaultRESTMapper(defaultGroupVersions []schema.GroupVersion, f VersionI func (m *DefaultRESTMapper) Add(kind schema.GroupVersionKind, scope RESTScope) { plural, singular := UnsafeGuessKindToResource(kind) + m.AddSpecific(kind, plural, singular, scope) +} +func (m *DefaultRESTMapper) AddSpecific(kind schema.GroupVersionKind, plural, singular schema.GroupVersionResource, scope RESTScope) { m.singularToPlural[singular] = plural m.pluralToSingular[plural] = singular diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD b/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD index 571a6b1e91..840c575e74 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -18,7 +16,6 @@ go_test( "scale_int_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", @@ -37,19 +34,36 @@ go_library( "scale_int.go", "suffix.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/go-openapi/spec:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", "//vendor/gopkg.in/inf.v0:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/openapi:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", ], ) go_test( name = "go_default_xtest", srcs = ["quantity_example_test.go"], - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library"], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS index b905e57f0f..342ff29145 100755 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS @@ -7,7 +7,7 @@ reviewers: - mikedanese - saad-ali - janetkuo -- timstclair +- tallclair - eparis - timothysc - jbeda diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go index 3a95608821..1839d78a34 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go @@ -29,7 +29,7 @@ import ( "github.com/go-openapi/spec" inf "gopkg.in/inf.v0" - "k8s.io/apimachinery/pkg/openapi" + openapi "k8s.io/kube-openapi/pkg/common" ) // Quantity is a fixed-point representation of a number. diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD index 657cc57a91..d906482c55 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD @@ -1,48 +1,34 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", - "go_test", -) - -go_test( - name = "go_default_test", - srcs = ["valuefuzz_test.go"], - library = ":go_default_library", - tags = ["automanaged"], ) go_library( name = "go_default_library", - srcs = [ - "codec.go", - "fuzzer.go", - "roundtrip.go", - "valuefuzz.go", - ], - tags = ["automanaged"], + srcs = ["codec.go"], deps = [ - "//vendor/github.com/davecgh/go-spew/spew:go_default_library", - "//vendor/github.com/golang/protobuf/proto:go_default_library", - "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/github.com/spf13/pflag:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/fuzzer:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/api/testing/roundtrip:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go deleted file mode 100644 index 7655908d85..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package testing - -import ( - "math/rand" - "reflect" - "strconv" - "testing" - - "github.com/google/gofuzz" - - "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" - "k8s.io/apimachinery/pkg/types" -) - -func GenericFuzzerFuncs(t TestingCommon, codecs runtimeserializer.CodecFactory) []interface{} { - return []interface{}{ - func(q *resource.Quantity, c fuzz.Continue) { - *q = *resource.NewQuantity(c.Int63n(1000), resource.DecimalExponent) - }, - func(j *int, c fuzz.Continue) { - *j = int(c.Int31()) - }, - func(j **int, c fuzz.Continue) { - if c.RandBool() { - i := int(c.Int31()) - *j = &i - } else { - *j = nil - } - }, - func(j *runtime.TypeMeta, c fuzz.Continue) { - // We have to customize the randomization of TypeMetas because their - // APIVersion and Kind must remain blank in memory. - j.APIVersion = "" - j.Kind = "" - }, - func(j *metav1.TypeMeta, c fuzz.Continue) { - // We have to customize the randomization of TypeMetas because their - // APIVersion and Kind must remain blank in memory. - j.APIVersion = "" - j.Kind = "" - }, - func(j *metav1.ObjectMeta, c fuzz.Continue) { - j.Name = c.RandString() - j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10) - j.SelfLink = c.RandString() - j.UID = types.UID(c.RandString()) - j.GenerateName = c.RandString() - - var sec, nsec int64 - c.Fuzz(&sec) - c.Fuzz(&nsec) - j.CreationTimestamp = metav1.Unix(sec, nsec).Rfc3339Copy() - }, - func(j *metav1.ListMeta, c fuzz.Continue) { - j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10) - j.SelfLink = c.RandString() - }, - func(j *runtime.Object, c fuzz.Continue) { - // TODO: uncomment when round trip starts from a versioned object - if true { //c.RandBool() { - *j = &runtime.Unknown{ - // We do not set TypeMeta here because it is not carried through a round trip - Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`), - ContentType: runtime.ContentTypeJSON, - } - } else { - types := []runtime.Object{&metav1.Status{}, &metav1.APIGroup{}} - t := types[c.Rand.Intn(len(types))] - c.Fuzz(t) - *j = t - } - }, - func(r *runtime.RawExtension, c fuzz.Continue) { - // Pick an arbitrary type and fuzz it - types := []runtime.Object{&metav1.Status{}, &metav1.APIGroup{}} - obj := types[c.Rand.Intn(len(types))] - c.Fuzz(obj) - - // Find a codec for converting the object to raw bytes. This is necessary for the - // api version and kind to be correctly set be serialization. - var codec = TestCodec(codecs, metav1.SchemeGroupVersion) - - // Convert the object to raw bytes - bytes, err := runtime.Encode(codec, obj) - if err != nil { - t.Errorf("Failed to encode object: %v", err) - return - } - - // Set the bytes field on the RawExtension - r.Raw = bytes - }, - } -} - -// TestingCommon abstracts testing.T and testing.B -type TestingCommon interface { - Log(args ...interface{}) - Logf(format string, args ...interface{}) - Error(args ...interface{}) - Errorf(format string, args ...interface{}) - Fatal(args ...interface{}) - Fatalf(format string, args ...interface{}) -} - -var ( - _ TestingCommon = &testing.T{} - _ TestingCommon = &testing.B{} -) - -// FuzzerFor can randomly populate api objects that are destined for version. -func FuzzerFor(funcs []interface{}, src rand.Source) *fuzz.Fuzzer { - f := fuzz.New().NilChance(.5).NumElements(0, 1) - if src != nil { - f.RandSource(src) - } - f.Funcs(funcs...) - return f -} - -// MergeFuzzerFuncs will merge the given funcLists, overriding early funcs with later ones if there first -// argument has the same type. -func MergeFuzzerFuncs(t TestingCommon, funcLists ...[]interface{}) []interface{} { - funcMap := map[string]interface{}{} - for _, list := range funcLists { - for _, f := range list { - fT := reflect.TypeOf(f) - if fT.Kind() != reflect.Func || fT.NumIn() != 2 { - t.Errorf("Fuzzer func with invalid type: %v", fT) - continue - } - funcMap[fT.In(0).String()] = f - } - } - - result := []interface{}{} - for _, f := range funcMap { - result = append(result, f) - } - return result -} - -func DefaultFuzzers(t TestingCommon, codecFactory runtimeserializer.CodecFactory, fuzzerFuncs []interface{}) *fuzz.Fuzzer { - seed := rand.Int63() - - return FuzzerFor( - MergeFuzzerFuncs(t, - GenericFuzzerFuncs(t, codecFactory), - fuzzerFuncs, - ), - rand.NewSource(seed), - ) - -} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/BUILD b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/BUILD new file mode 100644 index 0000000000..a81c71a755 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/BUILD @@ -0,0 +1,38 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["valuefuzz_test.go"], + library = ":go_default_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "fuzzer.go", + "valuefuzz.go", + ], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/fuzzer.go new file mode 100644 index 0000000000..f528e9f92d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/fuzzer.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzzer + +import ( + "math/rand" + + "github.com/google/gofuzz" + + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// FuzzerFuncs returns a list of func(*SomeType, c fuzz.Continue) functions. +type FuzzerFuncs func(codecs runtimeserializer.CodecFactory) []interface{} + +// FuzzerFor can randomly populate api objects that are destined for version. +func FuzzerFor(funcs FuzzerFuncs, src rand.Source, codecs runtimeserializer.CodecFactory) *fuzz.Fuzzer { + f := fuzz.New().NilChance(.5).NumElements(0, 1) + if src != nil { + f.RandSource(src) + } + f.Funcs(funcs(codecs)...) + return f +} + +// MergeFuzzerFuncs will merge the given funcLists, overriding early funcs with later ones if there first +// argument has the same type. +func MergeFuzzerFuncs(funcs ...FuzzerFuncs) FuzzerFuncs { + return FuzzerFuncs(func(codecs runtimeserializer.CodecFactory) []interface{} { + result := []interface{}{} + for _, f := range funcs { + if f != nil { + result = append(result, f(codecs)...) + } + } + return result + }) +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/valuefuzz.go similarity index 99% rename from vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go rename to vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/valuefuzz.go index 4cb03b7b0d..cd71c517da 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/valuefuzz.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package testing +package fuzzer import ( "reflect" diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/valuefuzz_test.go similarity index 98% rename from vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go rename to vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/valuefuzz_test.go index 07dca80227..a935aa40c7 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer/valuefuzz_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package testing +package fuzzer import "testing" diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip/BUILD b/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip/BUILD new file mode 100644 index 0000000000..927bace736 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["roundtrip.go"], + deps = [ + "//vendor/github.com/davecgh/go-spew/spew:go_default_library", + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go b/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip/roundtrip.go similarity index 79% rename from vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go rename to vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip/roundtrip.go index b307059915..479a6a50a3 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip/roundtrip.go @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package testing +package roundtrip import ( "bytes" "encoding/hex" - "fmt" + "math/rand" "reflect" "strings" "testing" @@ -28,16 +28,19 @@ import ( "github.com/golang/protobuf/proto" "github.com/google/gofuzz" flag "github.com/spf13/pflag" - "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" apiequality "k8s.io/apimachinery/pkg/api/equality" - "k8s.io/apimachinery/pkg/api/meta" + apimeta "k8s.io/apimachinery/pkg/api/meta" + apitesting "k8s.io/apimachinery/pkg/api/testing" + "k8s.io/apimachinery/pkg/api/testing/fuzzer" "k8s.io/apimachinery/pkg/apimachinery/announced" "k8s.io/apimachinery/pkg/apimachinery/registered" + metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" "k8s.io/apimachinery/pkg/util/diff" "k8s.io/apimachinery/pkg/util/sets" ) @@ -46,7 +49,7 @@ type InstallFunc func(groupFactoryRegistry announced.APIGroupFactoryRegistry, re // RoundTripTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides // enough information to round trip -func RoundTripTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs []interface{}) { +func RoundTripTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs fuzzer.FuzzerFuncs) { groupFactoryRegistry := make(announced.APIGroupFactoryRegistry) registry := registered.NewOrDie("") scheme := runtime.NewScheme() @@ -56,15 +59,19 @@ func RoundTripTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs } // RoundTripTestForScheme is convenient to call if you already have a scheme and want to make sure that its well-formed -func RoundTripTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs []interface{}) { +func RoundTripTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs fuzzer.FuzzerFuncs) { codecFactory := runtimeserializer.NewCodecFactory(scheme) - fuzzer := DefaultFuzzers(t, codecFactory, fuzzingFuncs) - RoundTripTypesWithoutProtobuf(t, scheme, codecFactory, fuzzer, nil) + f := fuzzer.FuzzerFor( + fuzzer.MergeFuzzerFuncs(metafuzzer.Funcs, fuzzingFuncs), + rand.NewSource(rand.Int63()), + codecFactory, + ) + RoundTripTypesWithoutProtobuf(t, scheme, codecFactory, f, nil) } // RoundTripProtobufTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides // enough information to round trip -func RoundTripProtobufTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs []interface{}) { +func RoundTripProtobufTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs fuzzer.FuzzerFuncs) { groupFactoryRegistry := make(announced.APIGroupFactoryRegistry) registry := registered.NewOrDie("") scheme := runtime.NewScheme() @@ -74,9 +81,13 @@ func RoundTripProtobufTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzi } // RoundTripProtobufTestForScheme is convenient to call if you already have a scheme and want to make sure that its well-formed -func RoundTripProtobufTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs []interface{}) { +func RoundTripProtobufTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs fuzzer.FuzzerFuncs) { codecFactory := runtimeserializer.NewCodecFactory(scheme) - fuzzer := DefaultFuzzers(t, codecFactory, fuzzingFuncs) + fuzzer := fuzzer.FuzzerFor( + fuzzer.MergeFuzzerFuncs(metafuzzer.Funcs, fuzzingFuncs), + rand.NewSource(rand.Int63()), + codecFactory, + ) RoundTripTypes(t, scheme, codecFactory, fuzzer, nil) } @@ -160,7 +171,7 @@ func roundTripSpecificKind(t *testing.T, gvk schema.GroupVersionKind, scheme *ru func fuzzInternalObject(t *testing.T, fuzzer *fuzz.Fuzzer, object runtime.Object) runtime.Object { fuzzer.Fuzz(object) - j, err := meta.TypeAccessor(object) + j, err := apimeta.TypeAccessor(object) if err != nil { t.Fatalf("Unexpected error %v for %#v", err, object) } @@ -183,7 +194,7 @@ func roundTripToAllExternalVersions(t *testing.T, scheme *runtime.Scheme, codecF if err != nil { t.Fatalf("Couldn't make a %v? %v", internalGVK, err) } - if _, err := meta.TypeAccessor(object); err != nil { + if _, err := apimeta.TypeAccessor(object); err != nil { t.Fatalf("%q is not a TypeMeta and cannot be tested - add it to nonRoundTrippableInternalTypes: %v", internalGVK, err) } @@ -204,7 +215,7 @@ func roundTripToAllExternalVersions(t *testing.T, scheme *runtime.Scheme, codecF } t.Logf("\tround tripping to %v %v", externalGVK, externalGoType) - roundTrip(t, scheme, TestCodec(codecFactory, externalGVK.GroupVersion()), object) + roundTrip(t, scheme, apitesting.TestCodec(codecFactory, externalGVK.GroupVersion()), object) // TODO remove this hack after we're past the intermediate steps if !skipProtobuf && externalGVK.Group != "kubeadm.k8s.io" { @@ -220,7 +231,7 @@ func roundTripOfExternalType(t *testing.T, scheme *runtime.Scheme, codecFactory if err != nil { t.Fatalf("Couldn't make a %v? %v", externalGVK, err) } - typeAcc, err := meta.TypeAccessor(object) + typeAcc, err := apimeta.TypeAccessor(object) if err != nil { t.Fatalf("%q is not a TypeMeta and cannot be tested - add it to nonRoundTrippableInternalTypes: %v", externalGVK, err) } @@ -257,12 +268,20 @@ func roundTrip(t *testing.T, scheme *runtime.Scheme, codec runtime.Codec, object original := object // deep copy the original object - copied, err := scheme.DeepCopy(object) - if err != nil { - panic(fmt.Sprintf("unable to copy: %v", err)) - } - object = copied.(runtime.Object) + object = object.DeepCopyObject() name := reflect.TypeOf(object).Elem().Name() + if !apiequality.Semantic.DeepEqual(original, object) { + t.Errorf("%v: DeepCopy altered the object, diff: %v", name, diff.ObjectReflectDiff(original, object)) + t.Errorf("%s", spew.Sdump(original)) + t.Errorf("%s", spew.Sdump(object)) + return + } + + // catch deepcopy errors early + if !apiequality.Semantic.DeepEqual(original, object) { + t.Errorf("%v: DeepCopy did not lead to equal object, diff: %v", name, diff.ObjectReflectDiff(original, object)) + return + } // encode (serialize) the deep copy using the provided codec data, err := runtime.Encode(codec, object) @@ -279,7 +298,7 @@ func roundTrip(t *testing.T, scheme *runtime.Scheme, codec runtime.Codec, object // copy or conversion should alter the object // TODO eliminate this global if !apiequality.Semantic.DeepEqual(original, object) { - t.Errorf("0: %v: encode altered the object, diff: %v", name, diff.ObjectReflectDiff(original, object)) + t.Errorf("%v: encode altered the object, diff: %v", name, diff.ObjectReflectDiff(original, object)) return } @@ -303,14 +322,14 @@ func roundTrip(t *testing.T, scheme *runtime.Scheme, codec runtime.Codec, object // decode (deserialize) the encoded data back into an object obj2, err := runtime.Decode(codec, data) if err != nil { - t.Errorf("0: %v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", object)) + t.Errorf("%v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", object)) panic("failed") } // ensure that the object produced from decoding the encoded data is equal // to the original object if !apiequality.Semantic.DeepEqual(original, obj2) { - t.Errorf("1: %v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectReflectDiff(object, obj2), codec, printer.Sprintf("%#v", object), dataAsString(data), printer.Sprintf("%#v", obj2)) + t.Errorf("%v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectReflectDiff(original, obj2), codec, printer.Sprintf("%#v", original), dataAsString(data), printer.Sprintf("%#v", obj2)) return } @@ -318,27 +337,66 @@ func roundTrip(t *testing.T, scheme *runtime.Scheme, codec runtime.Codec, object // create a new object) obj3 := reflect.New(reflect.TypeOf(object).Elem()).Interface().(runtime.Object) if err := runtime.DecodeInto(codec, data, obj3); err != nil { - t.Errorf("2: %v: %v", name, err) + t.Errorf("%v: %v", name, err) + return + } + + // special case for kinds which are internal and external at the same time (many in meta.k8s.io are). For those + // runtime.DecodeInto above will return the external variant and set the APIVersion and kind, while the input + // object might be internal. Hence, we clear those values for obj3 for that case to correctly compare. + intAndExt, err := internalAndExternalKind(scheme, object) + if err != nil { + t.Errorf("%v: %v", name, err) return } + if intAndExt { + typeAcc, err := apimeta.TypeAccessor(object) + if err != nil { + t.Fatalf("%v: error accessing TypeMeta: %v", name, err) + } + if len(typeAcc.GetAPIVersion()) == 0 { + typeAcc, err := apimeta.TypeAccessor(obj3) + if err != nil { + t.Fatalf("%v: error accessing TypeMeta: %v", name, err) + } + typeAcc.SetAPIVersion("") + typeAcc.SetKind("") + } + } // ensure that the new runtime object is equal to the original after being // decoded into if !apiequality.Semantic.DeepEqual(object, obj3) { - t.Errorf("3: %v: diff: %v\nCodec: %#v", name, diff.ObjectReflectDiff(object, obj3), codec) + t.Errorf("%v: diff: %v\nCodec: %#v", name, diff.ObjectReflectDiff(object, obj3), codec) return } // do structure-preserving fuzzing of the deep-copied object. If it shares anything with the original, // the deep-copy was actually only a shallow copy. Then original and obj3 will be different after fuzzing. // NOTE: we use the encoding+decoding here as an alternative, guaranteed deep-copy to compare against. - ValueFuzz(object) + fuzzer.ValueFuzz(object) if !apiequality.Semantic.DeepEqual(original, obj3) { - t.Errorf("0: %v: fuzzing a copy altered the original, diff: %v", name, diff.ObjectReflectDiff(original, object)) + t.Errorf("%v: fuzzing a copy altered the original, diff: %v", name, diff.ObjectReflectDiff(original, obj3)) return } } +func internalAndExternalKind(scheme *runtime.Scheme, object runtime.Object) (bool, error) { + kinds, _, err := scheme.ObjectKinds(object) + if err != nil { + return false, err + } + internal, external := false, false + for _, k := range kinds { + if k.Version == runtime.APIVersionInternal { + internal = true + } else { + external = true + } + } + return internal && external, nil +} + // dataAsString returns the given byte array as a string; handles detecting // protocol buffers. func dataAsString(data []byte) string { diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD b/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD index f5ab4b008f..9de7826bc8 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["objectmeta_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", @@ -26,7 +23,6 @@ go_library( "generic.go", "objectmeta.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", @@ -38,3 +34,19 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/api/validation/path:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go index 84bd9cdedc..3c32a937ac 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go @@ -195,14 +195,9 @@ func ValidateInitializers(initializers *metav1.Initializers, fldPath *field.Path return allErrs } for i, initializer := range initializers.Pending { - for _, msg := range validation.IsQualifiedName(initializer.Name) { - allErrs = append(allErrs, field.Invalid(fldPath.Child("pending").Index(i), initializer.Name, msg)) - } + allErrs = append(allErrs, validation.IsFullyQualifiedName(fldPath.Child("pending").Index(i).Child("name"), initializer.Name)...) } allErrs = append(allErrs, validateInitializersResult(initializers.Result, fldPath.Child("result"))...) - if len(initializers.Pending) == 0 && initializers.Result == nil { - allErrs = append(allErrs, field.Invalid(fldPath.Child("pending"), nil, "must be non-empty when result is not set")) - } return allErrs } @@ -288,7 +283,7 @@ func ValidateObjectMetaAccessorUpdate(newMeta, oldMeta metav1.Object, fldPath *f if newMeta.GetDeletionGracePeriodSeconds() != nil && (oldMeta.GetDeletionGracePeriodSeconds() == nil || *newMeta.GetDeletionGracePeriodSeconds() != *oldMeta.GetDeletionGracePeriodSeconds()) { allErrs = append(allErrs, field.Invalid(fldPath.Child("deletionGracePeriodSeconds"), newMeta.GetDeletionGracePeriodSeconds(), "field is immutable; may only be changed via deletion")) } - if newMeta.GetDeletionTimestamp() != nil && (oldMeta.GetDeletionTimestamp() == nil || !newMeta.GetDeletionTimestamp().Equal(*oldMeta.GetDeletionTimestamp())) { + if newMeta.GetDeletionTimestamp() != nil && (oldMeta.GetDeletionTimestamp() == nil || !newMeta.GetDeletionTimestamp().Equal(oldMeta.GetDeletionTimestamp())) { allErrs = append(allErrs, field.Invalid(fldPath.Child("deletionTimestamp"), newMeta.GetDeletionTimestamp(), "field is immutable; may only be changed via deletion")) } diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go index a8041d7fec..9ec73b040c 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go @@ -102,8 +102,8 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) { description: "simple success - third party extension.", ownerReferences: []metav1.OwnerReference{ { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "1", }, @@ -128,29 +128,29 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) { description: "simple controller ref success - one reference with Controller set", ownerReferences: []metav1.OwnerReference{ { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "1", Controller: &falseVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "2", Controller: &trueVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "3", Controller: &falseVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "4", }, @@ -162,29 +162,29 @@ func TestValidateObjectMetaOwnerReferences(t *testing.T) { description: "simple controller ref failure - two references with Controller set", ownerReferences: []metav1.OwnerReference{ { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "1", Controller: &falseVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "2", Controller: &trueVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "3", Controller: &trueVar, }, { - APIVersion: "thirdpartyVersion", - Kind: "thirdpartyKind", + APIVersion: "customresourceVersion", + Kind: "customresourceKind", Name: "name", UID: "4", }, diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD b/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD index 3e98b2737f..1aff05d051 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,11 +10,22 @@ go_test( name = "go_default_test", srcs = ["name_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( name = "go_default_library", srcs = ["name.go"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD b/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD index d31194517a..fc983842e1 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["types_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library"], ) @@ -22,10 +19,26 @@ go_library( "doc.go", "types.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apimachinery/announced:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apimachinery/registered:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD index 9c55915a5b..466f86e1fd 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["announced_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library"], ) @@ -22,7 +19,6 @@ go_library( "announced.go", "group_factory.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", @@ -33,3 +29,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go index 9c2765bdb8..95882e5df5 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go @@ -30,7 +30,6 @@ func TestFactoryRegistry(t *testing.T) { if err := regA.AnnounceGroup(&GroupMetaFactoryArgs{ GroupName: "foo", VersionPreferenceOrder: []string{"v2", "v1"}, - ImportPrefix: "pkg/apis/foo", RootScopedKinds: sets.NewString("namespaces"), }); err != nil { t.Fatalf("Unexpected error: %v", err) @@ -52,7 +51,6 @@ func TestFactoryRegistry(t *testing.T) { &GroupMetaFactoryArgs{ GroupName: "foo", VersionPreferenceOrder: []string{"v2", "v1"}, - ImportPrefix: "pkg/apis/foo", RootScopedKinds: sets.NewString("namespaces"), }, VersionToSchemeFunc{"v1": nil, "v2": nil}, diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go index c469eebcd2..154ed08f55 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go @@ -47,10 +47,6 @@ type GroupMetaFactoryArgs struct { // example: 'servicecatalog.k8s.io' GroupName string VersionPreferenceOrder []string - // ImportPrefix is the base go package of the API-Group - // - // example: 'k8s.io/kubernetes/pkg/apis/autoscaling' - ImportPrefix string // RootScopedKinds are resources that are not namespaced. RootScopedKinds sets.String // nil is allowed IgnoredKinds sets.String // nil is allowed @@ -176,14 +172,21 @@ func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersi ignoredKinds = gmf.GroupArgs.IgnoredKinds } - return meta.NewDefaultRESTMapperFromScheme( - externalVersions, - groupMeta.InterfacesFor, - gmf.GroupArgs.ImportPrefix, - ignoredKinds, - rootScoped, - scheme, - ) + mapper := meta.NewDefaultRESTMapper(externalVersions, groupMeta.InterfacesFor) + for _, gv := range externalVersions { + for kind := range scheme.KnownTypes(gv) { + if ignoredKinds.Has(kind) { + continue + } + scope := meta.RESTScopeNamespace + if rootScoped.Has(kind) { + scope = meta.RESTScopeRoot + } + mapper.Add(gv.WithKind(kind), scope) + } + } + + return mapper } // Enable enables group versions that are allowed, adds methods to the scheme, etc. diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD index 25dcd3222d..e4c6856471 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["registered_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apimachinery:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -22,7 +19,6 @@ go_test( go_library( name = "go_default_library", srcs = ["registered.go"], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", @@ -31,3 +27,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go index f2e32c88cd..5150db0165 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go @@ -42,10 +42,6 @@ type APIRegistrationManager struct { // registeredGroupVersions stores all API group versions for which RegisterGroup is called. registeredVersions map[schema.GroupVersion]struct{} - // thirdPartyGroupVersions are API versions which are dynamically - // registered (and unregistered) via API calls to the apiserver - thirdPartyGroupVersions []schema.GroupVersion - // enabledVersions represents all enabled API versions. It should be a // subset of registeredVersions. Please call EnableVersions() to add // enabled versions. @@ -66,11 +62,10 @@ type APIRegistrationManager struct { // wish to test. func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) { m := &APIRegistrationManager{ - registeredVersions: map[schema.GroupVersion]struct{}{}, - thirdPartyGroupVersions: []schema.GroupVersion{}, - enabledVersions: map[schema.GroupVersion]struct{}{}, - groupMetaMap: map[string]*apimachinery.GroupMeta{}, - envRequestedVersions: []schema.GroupVersion{}, + registeredVersions: map[schema.GroupVersion]struct{}{}, + enabledVersions: map[schema.GroupVersion]struct{}{}, + groupMetaMap: map[string]*apimachinery.GroupMeta{}, + envRequestedVersions: []schema.GroupVersion{}, } if len(kubeAPIVersions) != 0 { @@ -211,41 +206,6 @@ func (m *APIRegistrationManager) RegisteredGroupVersions() []schema.GroupVersion return ret } -// IsThirdPartyAPIGroupVersion returns true if the api version is a user-registered group/version. -func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv schema.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 ...schema.GroupVersion) []schema.GroupVersion { - filteredGVs := []schema.GroupVersion{} - skippedGVs := []schema.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 schema.GroupVersion) (*meta.VersionInterfaces, error) { groupMeta, err := m.Group(version.Group) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go index 37d54d27f7..58fc0173e9 100644 --- a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go @@ -23,83 +23,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" ) -func TestAddThirdPartyVersionsBasic(t *testing.T) { - m, err := NewAPIRegistrationManager("") - if err != nil { - t.Fatalf("Unexpected failure to make a manager: %v", err) - } - - registered := []schema.GroupVersion{ - { - Group: "", - Version: "v1", - }, - } - skipped := registered - thirdParty := []schema.GroupVersion{ - { - Group: "company.com", - Version: "v1", - }, - { - Group: "company.com", - Version: "v2", - }, - } - gvs := append(registered, thirdParty...) - - m.RegisterVersions(registered) - wasSkipped := m.AddThirdPartyAPIGroupVersions(gvs...) - if len(wasSkipped) != len(skipped) { - t.Errorf("Expected %v, found %v", skipped, wasSkipped) - } - for ix := range wasSkipped { - found := false - for _, gv := range skipped { - if gv.String() == wasSkipped[ix].String() { - found = true - break - } - } - if !found { - t.Errorf("Couldn't find %v in %v", wasSkipped[ix], skipped) - } - } - for _, gv := range thirdParty { - if !m.IsThirdPartyAPIGroupVersion(gv) { - t.Errorf("Expected %v to be third party.", gv) - } - } -} - -func TestAddThirdPartyVersionsMultiple(t *testing.T) { - thirdParty := []schema.GroupVersion{ - { - Group: "company.com", - Version: "v1", - }, - { - Group: "company.com", - Version: "v2", - }, - } - m, err := NewAPIRegistrationManager("") - if err != nil { - t.Fatalf("Unexpected failure to make a manager: %v", err) - } - for _, gv := range thirdParty { - wasSkipped := m.AddThirdPartyAPIGroupVersions(gv) - if len(wasSkipped) != 0 { - t.Errorf("Expected length 0, found %v", wasSkipped) - } - } - for _, gv := range thirdParty { - if !m.IsThirdPartyAPIGroupVersion(gv) { - t.Errorf("Expected %v to be third party.", gv) - } - } -} - func TestAllPreferredGroupVersions(t *testing.T) { testCases := []struct { groupMetas []apimachinery.GroupMeta diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/BUILD new file mode 100644 index 0000000000..e91a7cbffc --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/BUILD @@ -0,0 +1,35 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["fuzzer.go"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go new file mode 100644 index 0000000000..e5f5bd4c79 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer/fuzzer.go @@ -0,0 +1,171 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzzer + +import ( + "fmt" + "strconv" + + "github.com/google/gofuzz" + + "k8s.io/apimachinery/pkg/api/resource" + apitesting "k8s.io/apimachinery/pkg/api/testing" + "k8s.io/apimachinery/pkg/api/testing/fuzzer" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1alpha1 "k8s.io/apimachinery/pkg/apis/meta/v1alpha1" + "k8s.io/apimachinery/pkg/runtime" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/types" +) + +func genericFuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(q *resource.Quantity, c fuzz.Continue) { + *q = *resource.NewQuantity(c.Int63n(1000), resource.DecimalExponent) + }, + func(j *int, c fuzz.Continue) { + *j = int(c.Int31()) + }, + func(j **int, c fuzz.Continue) { + if c.RandBool() { + i := int(c.Int31()) + *j = &i + } else { + *j = nil + } + }, + func(j *runtime.TypeMeta, c fuzz.Continue) { + // We have to customize the randomization of TypeMetas because their + // APIVersion and Kind must remain blank in memory. + j.APIVersion = "" + j.Kind = "" + }, + func(j *runtime.Object, c fuzz.Continue) { + // TODO: uncomment when round trip starts from a versioned object + if true { //c.RandBool() { + *j = &runtime.Unknown{ + // We do not set TypeMeta here because it is not carried through a round trip + Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`), + ContentType: runtime.ContentTypeJSON, + } + } else { + types := []runtime.Object{&metav1.Status{}, &metav1.APIGroup{}} + t := types[c.Rand.Intn(len(types))] + c.Fuzz(t) + *j = t + } + }, + func(r *runtime.RawExtension, c fuzz.Continue) { + // Pick an arbitrary type and fuzz it + types := []runtime.Object{&metav1.Status{}, &metav1.APIGroup{}} + obj := types[c.Rand.Intn(len(types))] + c.Fuzz(obj) + + // Find a codec for converting the object to raw bytes. This is necessary for the + // api version and kind to be correctly set be serialization. + var codec = apitesting.TestCodec(codecs, metav1.SchemeGroupVersion) + + // Convert the object to raw bytes + bytes, err := runtime.Encode(codec, obj) + if err != nil { + panic(fmt.Sprintf("Failed to encode object: %v", err)) + } + + // strip trailing newlines which do not survive roundtrips + for len(bytes) >= 1 && bytes[len(bytes)-1] == 10 { + bytes = bytes[:len(bytes)-1] + } + + // Set the bytes field on the RawExtension + r.Raw = bytes + }, + } +} + +func v1FuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(j *metav1.TypeMeta, c fuzz.Continue) { + // We have to customize the randomization of TypeMetas because their + // APIVersion and Kind must remain blank in memory. + j.APIVersion = "" + j.Kind = "" + }, + func(j *metav1.ObjectMeta, c fuzz.Continue) { + j.Name = c.RandString() + j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10) + j.SelfLink = c.RandString() + j.UID = types.UID(c.RandString()) + j.GenerateName = c.RandString() + + var sec, nsec int64 + c.Fuzz(&sec) + c.Fuzz(&nsec) + j.CreationTimestamp = metav1.Unix(sec, nsec).Rfc3339Copy() + }, + func(j *metav1.ListMeta, c fuzz.Continue) { + j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10) + j.SelfLink = c.RandString() + }, + } +} + +func v1alpha1FuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(r *metav1alpha1.TableRow, c fuzz.Continue) { + c.Fuzz(&r.Object) + c.Fuzz(&r.Conditions) + if len(r.Conditions) == 0 { + r.Conditions = nil + } + n := c.Intn(10) + if n > 0 { + r.Cells = make([]interface{}, n) + } + for i := range r.Cells { + t := c.Intn(6) + switch t { + case 0: + r.Cells[i] = c.RandString() + case 1: + r.Cells[i] = c.Uint64() + case 2: + r.Cells[i] = c.RandBool() + case 3: + x := map[string]interface{}{} + for j := c.Intn(10) + 1; j >= 0; j-- { + x[c.RandString()] = c.RandString() + } + r.Cells[i] = x + case 4: + x := make([]interface{}, c.Intn(10)) + for i := range x { + x[i] = c.Uint64() + } + r.Cells[i] = x + default: + r.Cells[i] = nil + } + } + }, + } +} + +var Funcs = fuzzer.MergeFuzzerFuncs( + genericFuzzerFuncs, + v1FuzzerFuncs, + v1alpha1FuzzerFuncs, +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD index adbc06f112..5caf075fa2 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,10 +8,14 @@ load( go_test( name = "go_default_test", - srcs = ["register_test.go"], + srcs = [ + "register_test.go", + "roundtrip_test.go", + ], library = ":go_default_library", - tags = ["automanaged"], deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], @@ -23,10 +25,12 @@ go_library( name = "go_default_library", srcs = [ "conversion.go", + "doc.go", "register.go", "types.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library", @@ -39,3 +43,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go index eff9a7e12e..1ea8c137b3 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go @@ -35,6 +35,8 @@ func Convert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions, out out.ResourceVersion = in.ResourceVersion out.TimeoutSeconds = in.TimeoutSeconds out.Watch = in.Watch + out.Limit = in.Limit + out.Continue = in.Continue return nil } @@ -49,6 +51,8 @@ func Convert_v1_ListOptions_To_internalversion_ListOptions(in *metav1.ListOption out.ResourceVersion = in.ResourceVersion out.TimeoutSeconds = in.TimeoutSeconds out.Watch = in.Watch + out.Limit = in.Limit + out.Continue = in.Continue return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go new file mode 100644 index 0000000000..6ee8dd66d2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.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. +*/ + +// +k8s:deepcopy-gen=package + +package internalversion diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go index 38ddc80dfd..4d45f81e39 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go @@ -30,6 +30,14 @@ const GroupName = "meta.k8s.io" // Scheme is the registry for any type that adheres to the meta API spec. var scheme = runtime.NewScheme() +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + // Copier exposes copying on this scheme. var Copier runtime.ObjectCopier = scheme diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/roundtrip_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/roundtrip_test.go new file mode 100644 index 0000000000..725aa316d0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/roundtrip_test.go @@ -0,0 +1,28 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internalversion + +import ( + "testing" + + "k8s.io/apimachinery/pkg/api/testing/roundtrip" + "k8s.io/apimachinery/pkg/apis/meta/fuzzer" +) + +func TestRoundTrip(t *testing.T) { + roundtrip.RoundTripTestForScheme(t, scheme, fuzzer.Funcs) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go index 0aa4188df2..2f6740d368 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go @@ -20,10 +20,12 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" ) -// ListOptions is the query options to a standard REST list call, and has future support for -// watch calls. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ListOptions is the query options to a standard REST list call. type ListOptions struct { metav1.TypeMeta @@ -45,4 +47,24 @@ type ListOptions struct { ResourceVersion string // Timeout for the list/watch call. TimeoutSeconds *int64 + // Limit specifies the maximum number of results to return from the server. The server may + // not support this field on all resource types, but if it does and more results remain it + // will set the continue field on the returned list object. + Limit int64 + // Continue is a token returned by the server that lets a client retrieve chunks of results + // from the server by specifying limit. The server may reject requests for continuation tokens + // it does not recognize and will return a 410 error if the token can no longer be used because + // it has expired. + Continue string +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// List holds a list of objects, which may not be known by the server. +type List struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []runtime.Object } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go new file mode 100644 index 0000000000..a0c2a2aabc --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go @@ -0,0 +1,113 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 internalversion + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + unsafe "unsafe" +) + +func init() { + localSchemeBuilder.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_internalversion_List_To_v1_List, + Convert_v1_List_To_internalversion_List, + Convert_internalversion_ListOptions_To_v1_ListOptions, + Convert_v1_ListOptions_To_internalversion_ListOptions, + ) +} + +func autoConvert_internalversion_List_To_v1_List(in *List, out *v1.List, s conversion.Scope) error { + 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.Convert_runtime_Object_To_runtime_RawExtension(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]runtime.RawExtension, 0) + } + return nil +} + +// Convert_internalversion_List_To_v1_List is an autogenerated conversion function. +func Convert_internalversion_List_To_v1_List(in *List, out *v1.List, s conversion.Scope) error { + return autoConvert_internalversion_List_To_v1_List(in, out, s) +} + +func autoConvert_v1_List_To_internalversion_List(in *v1.List, out *List, s conversion.Scope) error { + 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 err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_List_To_internalversion_List is an autogenerated conversion function. +func Convert_v1_List_To_internalversion_List(in *v1.List, out *List, s conversion.Scope) error { + return autoConvert_v1_List_To_internalversion_List(in, out, s) +} + +func autoConvert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions, out *v1.ListOptions, s conversion.Scope) error { + if err := v1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := v1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.IncludeUninitialized = in.IncludeUninitialized + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) + return nil +} + +func autoConvert_v1_ListOptions_To_internalversion_ListOptions(in *v1.ListOptions, out *ListOptions, s conversion.Scope) error { + if err := v1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := v1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.IncludeUninitialized = in.IncludeUninitialized + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go new file mode 100644 index 0000000000..f13ff9fc50 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.deepcopy.go @@ -0,0 +1,126 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 internalversion + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*List).DeepCopyInto(out.(*List)) + return nil + }, InType: reflect.TypeOf(&List{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ListOptions).DeepCopyInto(out.(*ListOptions)) + return nil + }, InType: reflect.TypeOf(&ListOptions{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *List) DeepCopyInto(out *List) { + *out = *in + 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 (*in)[i] == nil { + (*out)[i] = nil + } else { + (*out)[i] = (*in)[i].DeepCopyObject() + } + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new List. +func (in *List) DeepCopy() *List { + if in == nil { + return nil + } + out := new(List) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *List) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ListOptions) DeepCopyInto(out *ListOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.LabelSelector == nil { + out.LabelSelector = nil + } else { + out.LabelSelector = in.LabelSelector.DeepCopySelector() + } + if in.FieldSelector == nil { + out.FieldSelector = nil + } else { + out.FieldSelector = in.FieldSelector.DeepCopySelector() + } + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListOptions. +func (in *ListOptions) DeepCopy() *ListOptions { + if in == nil { + return nil + } + out := new(ListOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ListOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD index 2ce980fa75..12fdf76a67 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -11,6 +9,7 @@ load( go_test( name = "go_default_test", srcs = [ + "controller_ref_test.go", "duration_test.go", "group_version_test.go", "helpers_test.go", @@ -20,17 +19,18 @@ go_test( "types_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/github.com/json-iterator/go:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) go_library( name = "go_default_library", srcs = [ + "controller_ref.go", "conversion.go", "doc.go", "duration.go", @@ -50,7 +50,6 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/go-openapi/spec:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", @@ -60,12 +59,35 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/openapi:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:all-srcs", ], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS index 381a525094..7f5eb58602 100755 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS @@ -12,7 +12,6 @@ reviewers: - davidopp - sttts - quinton-hoole -- kargakis - luxas - janetkuo - justinsb diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go new file mode 100644 index 0000000000..042cd5b9c5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref.go @@ -0,0 +1,54 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/apimachinery/pkg/runtime/schema" +) + +// IsControlledBy checks if the object has a controllerRef set to the given owner +func IsControlledBy(obj Object, owner Object) bool { + ref := GetControllerOf(obj) + if ref == nil { + return false + } + return ref.UID == owner.GetUID() +} + +// GetControllerOf returns a pointer to a copy of the controllerRef if controllee has a controller +func GetControllerOf(controllee Object) *OwnerReference { + for _, ref := range controllee.GetOwnerReferences() { + if ref.Controller != nil && *ref.Controller { + return &ref + } + } + return nil +} + +// NewControllerRef creates an OwnerReference pointing to the given owner. +func NewControllerRef(owner Object, gvk schema.GroupVersionKind) *OwnerReference { + blockOwnerDeletion := true + isController := true + return &OwnerReference{ + APIVersion: gvk.GroupVersion().String(), + Kind: gvk.Kind, + Name: owner.GetName(), + UID: owner.GetUID(), + BlockOwnerDeletion: &blockOwnerDeletion, + Controller: &isController, + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref_test.go new file mode 100644 index 0000000000..add764a331 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/controller_ref_test.go @@ -0,0 +1,133 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + "testing" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type metaObj struct { + ObjectMeta + TypeMeta +} + +func TestNewControllerRef(t *testing.T) { + gvk := schema.GroupVersionKind{ + Group: "group", + Version: "v1", + Kind: "Kind", + } + obj1 := &metaObj{ + ObjectMeta: ObjectMeta{ + Name: "name", + UID: "uid1", + }, + } + controllerRef := NewControllerRef(obj1, gvk) + if controllerRef.UID != obj1.UID { + t.Errorf("Incorrect UID: %s", controllerRef.UID) + } + if controllerRef.Controller == nil || *controllerRef.Controller != true { + t.Error("Controller must be set to true") + } + if controllerRef.BlockOwnerDeletion == nil || *controllerRef.BlockOwnerDeletion != true { + t.Error("BlockOwnerDeletion must be set to true") + } + if controllerRef.APIVersion == "" || + controllerRef.Kind == "" || + controllerRef.Name == "" { + t.Errorf("All controllerRef fields must be set: %v", controllerRef) + } +} + +func TestGetControllerOf(t *testing.T) { + gvk := schema.GroupVersionKind{ + Group: "group", + Version: "v1", + Kind: "Kind", + } + obj1 := &metaObj{ + ObjectMeta: ObjectMeta{ + UID: "uid1", + Name: "name1", + }, + } + controllerRef := NewControllerRef(obj1, gvk) + var falseRef = false + obj2 := &metaObj{ + ObjectMeta: ObjectMeta{ + UID: "uid2", + Name: "name1", + OwnerReferences: []OwnerReference{ + { + Name: "owner1", + Controller: &falseRef, + }, + *controllerRef, + { + Name: "owner2", + Controller: &falseRef, + }, + }, + }, + } + + if GetControllerOf(obj1) != nil { + t.Error("GetControllerOf must return null") + } + c := GetControllerOf(obj2) + if c.Name != controllerRef.Name || c.UID != controllerRef.UID { + t.Errorf("Incorrect result of GetControllerOf: %v", c) + } +} + +func TestIsControlledBy(t *testing.T) { + gvk := schema.GroupVersionKind{ + Group: "group", + Version: "v1", + Kind: "Kind", + } + obj1 := &metaObj{ + ObjectMeta: ObjectMeta{ + UID: "uid1", + }, + } + obj2 := &metaObj{ + ObjectMeta: ObjectMeta{ + UID: "uid2", + OwnerReferences: []OwnerReference{ + *NewControllerRef(obj1, gvk), + }, + }, + } + obj3 := &metaObj{ + ObjectMeta: ObjectMeta{ + UID: "uid3", + OwnerReferences: []OwnerReference{ + *NewControllerRef(obj2, gvk), + }, + }, + } + if !IsControlledBy(obj2, obj1) || !IsControlledBy(obj3, obj2) { + t.Error("Incorrect IsControlledBy result: false") + } + if IsControlledBy(obj3, obj1) { + t.Error("Incorrect IsControlledBy result: true") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go index b9a8fd02d5..7049c9a33b 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go @@ -39,6 +39,9 @@ func AddConversionFuncs(scheme *runtime.Scheme) error { Convert_unversioned_Time_To_unversioned_Time, + Convert_Pointer_v1_Duration_To_v1_Duration, + Convert_v1_Duration_To_Pointer_v1_Duration, + Convert_Slice_string_To_unversioned_Time, Convert_resource_Quantity_To_resource_Quantity, @@ -181,6 +184,21 @@ func Convert_unversioned_Time_To_unversioned_Time(in *Time, out *Time, s convers return nil } +func Convert_Pointer_v1_Duration_To_v1_Duration(in **Duration, out *Duration, s conversion.Scope) error { + if *in == nil { + *out = Duration{} // zero duration + return nil + } + *out = **in // copy + return nil +} + +func Convert_v1_Duration_To_Pointer_v1_Duration(in *Duration, out **Duration, s conversion.Scope) error { + temp := *in //copy + *out = &temp + 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 *Time, s conversion.Scope) error { str := "" diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go index 52273240f0..61f201cdf5 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go @@ -19,4 +19,4 @@ limitations under the License. // +k8s:defaulter-gen=TypeMeta // +groupName=meta.k8s.io -package v1 +package v1 // import "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go index 9e2b289da1..653b30237b 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go @@ -44,6 +44,7 @@ limitations under the License. Initializers LabelSelector LabelSelectorRequirement + List ListMeta ListOptions MicroTime @@ -67,6 +68,8 @@ import proto "github.com/gogo/protobuf/proto" import fmt "fmt" import math "math" +import k8s_io_apimachinery_pkg_runtime "k8s.io/apimachinery/pkg/runtime" + import time "time" import k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types" @@ -169,71 +172,75 @@ func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } +func (m *List) Reset() { *m = List{} } +func (*List) ProtoMessage() {} +func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + func (m *ListMeta) Reset() { *m = ListMeta{} } func (*ListMeta) ProtoMessage() {} -func (*ListMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } +func (*ListMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } func (m *ListOptions) Reset() { *m = ListOptions{} } func (*ListOptions) ProtoMessage() {} -func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } func (m *MicroTime) Reset() { *m = MicroTime{} } func (*MicroTime) ProtoMessage() {} -func (*MicroTime) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } +func (*MicroTime) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } func (*ObjectMeta) ProtoMessage() {} -func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } func (m *OwnerReference) Reset() { *m = OwnerReference{} } func (*OwnerReference) ProtoMessage() {} -func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } +func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} -func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } func (m *RootPaths) Reset() { *m = RootPaths{} } func (*RootPaths) ProtoMessage() {} -func (*RootPaths) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } +func (*RootPaths) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } func (m *ServerAddressByClientCIDR) Reset() { *m = ServerAddressByClientCIDR{} } func (*ServerAddressByClientCIDR) ProtoMessage() {} func (*ServerAddressByClientCIDR) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{26} + return fileDescriptorGenerated, []int{27} } func (m *Status) Reset() { *m = Status{} } func (*Status) ProtoMessage() {} -func (*Status) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } +func (*Status) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } func (m *StatusCause) Reset() { *m = StatusCause{} } func (*StatusCause) ProtoMessage() {} -func (*StatusCause) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } +func (*StatusCause) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } func (m *StatusDetails) Reset() { *m = StatusDetails{} } func (*StatusDetails) ProtoMessage() {} -func (*StatusDetails) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } +func (*StatusDetails) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } func (m *Time) Reset() { *m = Time{} } func (*Time) ProtoMessage() {} -func (*Time) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } +func (*Time) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } func (m *Timestamp) Reset() { *m = Timestamp{} } func (*Timestamp) ProtoMessage() {} -func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } +func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } func (m *TypeMeta) Reset() { *m = TypeMeta{} } func (*TypeMeta) ProtoMessage() {} -func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } +func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } func (m *Verbs) Reset() { *m = Verbs{} } func (*Verbs) ProtoMessage() {} -func (*Verbs) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } +func (*Verbs) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } func (m *WatchEvent) Reset() { *m = WatchEvent{} } func (*WatchEvent) ProtoMessage() {} -func (*WatchEvent) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } +func (*WatchEvent) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } func init() { proto.RegisterType((*APIGroup)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIGroup") @@ -255,6 +262,7 @@ func init() { proto.RegisterType((*Initializers)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Initializers") proto.RegisterType((*LabelSelector)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector") proto.RegisterType((*LabelSelectorRequirement)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement") + proto.RegisterType((*List)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.List") proto.RegisterType((*ListMeta)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta") proto.RegisterType((*ListOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ListOptions") proto.RegisterType((*MicroTime)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime") @@ -431,6 +439,14 @@ func (m *APIResource) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) return i, nil } @@ -966,6 +982,44 @@ func (m *LabelSelectorRequirement) MarshalTo(dAtA []byte) (int, error) { 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())) + 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 *ListMeta) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -989,6 +1043,10 @@ func (m *ListMeta) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) i += copy(dAtA[i:], m.ResourceVersion) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Continue))) + i += copy(dAtA[i:], m.Continue) return i, nil } @@ -1040,6 +1098,13 @@ func (m *ListOptions) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0 } i++ + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Limit)) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Continue))) + i += copy(dAtA[i:], m.Continue) return i, nil } @@ -1088,20 +1153,20 @@ func (m *ObjectMeta) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.CreationTimestamp.Size())) - n5, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) + n6, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n5 + i += n6 if m.DeletionTimestamp != nil { dAtA[i] = 0x4a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DeletionTimestamp.Size())) - n6, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) + n7, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n7 } if m.DeletionGracePeriodSeconds != nil { dAtA[i] = 0x50 @@ -1189,11 +1254,11 @@ func (m *ObjectMeta) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Initializers.Size())) - n7, err := m.Initializers.MarshalTo(dAtA[i:]) + n8, err := m.Initializers.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n8 } return i, nil } @@ -1353,11 +1418,11 @@ func (m *Status) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n8, err := m.ListMeta.MarshalTo(dAtA[i:]) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n8 + i += n9 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) @@ -1374,11 +1439,11 @@ func (m *Status) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Details.Size())) - n9, err := m.Details.MarshalTo(dAtA[i:]) + n10, err := m.Details.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n10 } dAtA[i] = 0x30 i++ @@ -1570,11 +1635,11 @@ func (m *WatchEvent) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) - n10, err := m.Object.MarshalTo(dAtA[i:]) + n11, err := m.Object.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n10 + i += n11 return i, nil } @@ -1665,6 +1730,10 @@ func (m *APIResource) Size() (n int) { 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)) return n } @@ -1868,6 +1937,20 @@ func (m *LabelSelectorRequirement) Size() (n int) { 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 *ListMeta) Size() (n int) { var l int _ = l @@ -1875,6 +1958,8 @@ func (m *ListMeta) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.ResourceVersion) n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Continue) + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -1892,6 +1977,9 @@ func (m *ListOptions) Size() (n int) { n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) } n += 2 + n += 1 + sovGenerated(uint64(m.Limit)) + l = len(m.Continue) + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -2149,6 +2237,8 @@ func (this *APIResource) String() string { `ShortNames:` + fmt.Sprintf("%v", this.ShortNames) + `,`, `SingularName:` + fmt.Sprintf("%v", this.SingularName) + `,`, `Categories:` + fmt.Sprintf("%v", this.Categories) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `}`, }, "") return s @@ -2274,6 +2364,17 @@ func (this *LabelSelectorRequirement) String() string { }, "") 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", "ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} func (this *ListMeta) String() string { if this == nil { return "nil" @@ -2281,6 +2382,7 @@ func (this *ListMeta) String() string { s := strings.Join([]string{`&ListMeta{`, `SelfLink:` + fmt.Sprintf("%v", this.SelfLink) + `,`, `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `Continue:` + fmt.Sprintf("%v", this.Continue) + `,`, `}`, }, "") return s @@ -2296,6 +2398,8 @@ func (this *ListOptions) String() string { `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, `IncludeUninitialized:` + fmt.Sprintf("%v", this.IncludeUninitialized) + `,`, + `Limit:` + fmt.Sprintf("%v", this.Limit) + `,`, + `Continue:` + fmt.Sprintf("%v", this.Continue) + `,`, `}`, }, "") return s @@ -2953,6 +3057,64 @@ func (m *APIResource) Unmarshal(dAtA []byte) error { } m.Categories = append(m.Categories, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 8: + 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 9: + 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:]) @@ -4839,6 +5001,117 @@ func (m *LabelSelectorRequirement) Unmarshal(dAtA []byte) error { } 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_apimachinery_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 *ListMeta) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4926,6 +5199,35 @@ func (m *ListMeta) Unmarshal(dAtA []byte) error { } m.ResourceVersion = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Continue", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Continue = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -5123,6 +5425,54 @@ func (m *ListOptions) Unmarshal(dAtA []byte) error { } } m.IncludeUninitialized = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) + } + m.Limit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Limit |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Continue", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Continue = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -7365,152 +7715,157 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 2351 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0x1b, 0xc7, - 0x15, 0xd7, 0x52, 0x22, 0x45, 0x3e, 0x8a, 0xfa, 0x98, 0xc8, 0x2d, 0x23, 0xb4, 0xa4, 0xb2, 0x29, - 0x02, 0xa5, 0x75, 0xc8, 0x4a, 0x69, 0x03, 0xd7, 0x6d, 0xdd, 0x6a, 0x45, 0xd9, 0x10, 0x62, 0xd9, - 0xc4, 0x28, 0x76, 0x51, 0xd7, 0x28, 0xba, 0x5a, 0x8e, 0xa8, 0xad, 0x96, 0xbb, 0x9b, 0x99, 0xa1, - 0x6c, 0x35, 0x87, 0xe6, 0xd0, 0x02, 0x3d, 0x14, 0x85, 0x8f, 0x3d, 0x15, 0x31, 0xda, 0xbf, 0xa0, - 0x7f, 0x40, 0x4f, 0x05, 0xea, 0x63, 0x80, 0x5e, 0x72, 0x28, 0x88, 0x98, 0x39, 0xf4, 0x14, 0xf4, - 0x2e, 0xa0, 0x40, 0x31, 0xb3, 0xb3, 0x5f, 0xa4, 0x18, 0x2d, 0xe3, 0xa0, 0xc8, 0x49, 0xdc, 0xf7, - 0xf1, 0x7b, 0x6f, 0x66, 0xde, 0xbc, 0xf7, 0xe6, 0x09, 0xf6, 0x4f, 0xae, 0xb1, 0x86, 0xed, 0x35, - 0x4f, 0xfa, 0x87, 0x84, 0xba, 0x84, 0x13, 0xd6, 0x3c, 0x25, 0x6e, 0xc7, 0xa3, 0x4d, 0xc5, 0x30, - 0x7d, 0xbb, 0x67, 0x5a, 0xc7, 0xb6, 0x4b, 0xe8, 0x59, 0xd3, 0x3f, 0xe9, 0x0a, 0x02, 0x6b, 0xf6, - 0x08, 0x37, 0x9b, 0xa7, 0x9b, 0xcd, 0x2e, 0x71, 0x09, 0x35, 0x39, 0xe9, 0x34, 0x7c, 0xea, 0x71, - 0x0f, 0x7d, 0x23, 0xd0, 0x6a, 0x24, 0xb5, 0x1a, 0xfe, 0x49, 0x57, 0x10, 0x58, 0x43, 0x68, 0x35, - 0x4e, 0x37, 0xd7, 0xde, 0xe8, 0xda, 0xfc, 0xb8, 0x7f, 0xd8, 0xb0, 0xbc, 0x5e, 0xb3, 0xeb, 0x75, - 0xbd, 0xa6, 0x54, 0x3e, 0xec, 0x1f, 0xc9, 0x2f, 0xf9, 0x21, 0x7f, 0x05, 0xa0, 0x6b, 0x13, 0x5d, - 0xa1, 0x7d, 0x97, 0xdb, 0x3d, 0x32, 0xea, 0xc5, 0xda, 0x5b, 0x97, 0x29, 0x30, 0xeb, 0x98, 0xf4, - 0xcc, 0x31, 0xbd, 0x37, 0x27, 0xe9, 0xf5, 0xb9, 0xed, 0x34, 0x6d, 0x97, 0x33, 0x4e, 0x47, 0x95, - 0xf4, 0x7f, 0xcc, 0x42, 0x71, 0xbb, 0xbd, 0x77, 0x8b, 0x7a, 0x7d, 0x1f, 0xad, 0xc3, 0x9c, 0x6b, - 0xf6, 0x48, 0x55, 0x5b, 0xd7, 0x36, 0x4a, 0xc6, 0xc2, 0xb3, 0x41, 0x7d, 0x66, 0x38, 0xa8, 0xcf, - 0xdd, 0x31, 0x7b, 0x04, 0x4b, 0x0e, 0x72, 0xa0, 0x78, 0x4a, 0x28, 0xb3, 0x3d, 0x97, 0x55, 0x73, - 0xeb, 0xb3, 0x1b, 0xe5, 0xad, 0x1b, 0x8d, 0x2c, 0x9b, 0xd6, 0x90, 0x06, 0xee, 0x07, 0xaa, 0x37, - 0x3d, 0xda, 0xb2, 0x99, 0xe5, 0x9d, 0x12, 0x7a, 0x66, 0x2c, 0x2b, 0x2b, 0x45, 0xc5, 0x64, 0x38, - 0xb2, 0x80, 0x7e, 0xa3, 0xc1, 0xb2, 0x4f, 0xc9, 0x11, 0xa1, 0x94, 0x74, 0x14, 0xbf, 0x3a, 0xbb, - 0xae, 0x7d, 0x01, 0x66, 0xab, 0xca, 0xec, 0x72, 0x7b, 0x04, 0x1f, 0x8f, 0x59, 0x44, 0x7f, 0xd6, - 0x60, 0x8d, 0x11, 0x7a, 0x4a, 0xe8, 0x76, 0xa7, 0x43, 0x09, 0x63, 0xc6, 0xd9, 0x8e, 0x63, 0x13, - 0x97, 0xef, 0xec, 0xb5, 0x30, 0xab, 0xce, 0xc9, 0x7d, 0xf8, 0x51, 0x36, 0x87, 0x0e, 0x26, 0xe1, - 0x18, 0xba, 0xf2, 0x68, 0x6d, 0xa2, 0x08, 0xc3, 0x9f, 0xe1, 0x86, 0x7e, 0x04, 0x0b, 0xe1, 0x41, - 0xde, 0xb6, 0x19, 0x47, 0xf7, 0xa1, 0xd0, 0x15, 0x1f, 0xac, 0xaa, 0x49, 0x07, 0x1b, 0xd9, 0x1c, - 0x0c, 0x31, 0x8c, 0x45, 0xe5, 0x4f, 0x41, 0x7e, 0x32, 0xac, 0xd0, 0xf4, 0x4f, 0x73, 0x50, 0xde, - 0x6e, 0xef, 0x61, 0xc2, 0xbc, 0x3e, 0xb5, 0x48, 0x86, 0xa0, 0xd9, 0x02, 0x10, 0x7f, 0x99, 0x6f, - 0x5a, 0xa4, 0x53, 0xcd, 0xad, 0x6b, 0x1b, 0x45, 0x03, 0x29, 0x39, 0xb8, 0x13, 0x71, 0x70, 0x42, - 0x4a, 0xa0, 0x9e, 0xd8, 0x6e, 0x47, 0x9e, 0x76, 0x02, 0xf5, 0x6d, 0xdb, 0xed, 0x60, 0xc9, 0x41, - 0xb7, 0x21, 0x7f, 0x4a, 0xe8, 0xa1, 0xd8, 0x7f, 0x11, 0x10, 0xdf, 0xca, 0xb6, 0xbc, 0xfb, 0x42, - 0xc5, 0x28, 0x0d, 0x07, 0xf5, 0xbc, 0xfc, 0x89, 0x03, 0x10, 0xd4, 0x00, 0x60, 0xc7, 0x1e, 0xe5, - 0xd2, 0x9d, 0x6a, 0x7e, 0x7d, 0x76, 0xa3, 0x64, 0x2c, 0x0a, 0xff, 0x0e, 0x22, 0x2a, 0x4e, 0x48, - 0xa0, 0x6b, 0xb0, 0xc0, 0x6c, 0xb7, 0xdb, 0x77, 0x4c, 0x2a, 0x08, 0xd5, 0x82, 0xf4, 0x73, 0x55, - 0xf9, 0xb9, 0x70, 0x90, 0xe0, 0xe1, 0x94, 0xa4, 0xb0, 0x64, 0x99, 0x9c, 0x74, 0x3d, 0x6a, 0x13, - 0x56, 0x9d, 0x8f, 0x2d, 0xed, 0x44, 0x54, 0x9c, 0x90, 0xd0, 0xff, 0xaa, 0xc1, 0x52, 0x62, 0xbf, - 0xe5, 0xd9, 0x5e, 0x83, 0x85, 0x6e, 0x22, 0xb2, 0xd5, 0xde, 0x47, 0xd6, 0x93, 0x51, 0x8f, 0x53, - 0x92, 0x88, 0x40, 0x89, 0x2a, 0xa4, 0xf0, 0x06, 0x6f, 0x66, 0x0e, 0x8c, 0xd0, 0x87, 0xd8, 0x52, - 0x82, 0xc8, 0x70, 0x8c, 0xac, 0xff, 0x5b, 0x93, 0x41, 0x12, 0xde, 0x69, 0xb4, 0x91, 0xc8, 0x1b, - 0x9a, 0x5c, 0xf2, 0xc2, 0x84, 0x3b, 0x7f, 0xc9, 0x65, 0xcb, 0x7d, 0x29, 0x2e, 0xdb, 0xf5, 0xe2, - 0x1f, 0x3f, 0xa8, 0xcf, 0xbc, 0xff, 0xaf, 0xf5, 0x19, 0xfd, 0x93, 0x1c, 0x54, 0x5a, 0xc4, 0x21, - 0x9c, 0xdc, 0xf5, 0xb9, 0x5c, 0xc1, 0x4d, 0x40, 0x5d, 0x6a, 0x5a, 0xa4, 0x4d, 0xa8, 0xed, 0x75, - 0x0e, 0x88, 0xe5, 0xb9, 0x1d, 0x26, 0x8f, 0x68, 0xd6, 0xf8, 0xca, 0x70, 0x50, 0x47, 0xb7, 0xc6, - 0xb8, 0xf8, 0x02, 0x0d, 0xe4, 0x40, 0xc5, 0xa7, 0xf2, 0xb7, 0xcd, 0x55, 0xc2, 0x15, 0x81, 0xfe, - 0x66, 0xb6, 0xb5, 0xb7, 0x93, 0xaa, 0xc6, 0xca, 0x70, 0x50, 0xaf, 0xa4, 0x48, 0x38, 0x0d, 0x8e, - 0x7e, 0x0c, 0xcb, 0x1e, 0xf5, 0x8f, 0x4d, 0xb7, 0x45, 0x7c, 0xe2, 0x76, 0x88, 0xcb, 0x99, 0xbc, - 0x7c, 0x45, 0x63, 0x55, 0xa4, 0xc9, 0xbb, 0x23, 0x3c, 0x3c, 0x26, 0x8d, 0x1e, 0xc0, 0x8a, 0x4f, - 0x3d, 0xdf, 0xec, 0x9a, 0x02, 0xb1, 0xed, 0x39, 0xb6, 0x75, 0x26, 0x2f, 0x67, 0xc9, 0xb8, 0x3a, - 0x1c, 0xd4, 0x57, 0xda, 0xa3, 0xcc, 0xf3, 0x41, 0xfd, 0x25, 0xb9, 0x75, 0x82, 0x12, 0x33, 0xf1, - 0x38, 0x8c, 0xbe, 0x07, 0xc5, 0x56, 0x9f, 0x4a, 0x0a, 0xfa, 0x21, 0x14, 0x3b, 0xea, 0xb7, 0xda, - 0xd5, 0x57, 0xc2, 0x1a, 0x12, 0xca, 0x9c, 0x0f, 0xea, 0x15, 0x51, 0x2a, 0x1b, 0x21, 0x01, 0x47, - 0x2a, 0xfa, 0x43, 0xa8, 0xec, 0x3e, 0xf6, 0x3d, 0xca, 0xc3, 0xf3, 0x7a, 0x0d, 0x0a, 0x44, 0x12, - 0x24, 0x5a, 0x31, 0x4e, 0x7c, 0x81, 0x18, 0x56, 0x5c, 0xf4, 0x2a, 0xe4, 0xc9, 0x63, 0xd3, 0xe2, - 0x2a, 0x83, 0x55, 0x94, 0x58, 0x7e, 0x57, 0x10, 0x71, 0xc0, 0xd3, 0x9f, 0x6a, 0x00, 0xb7, 0x48, - 0x84, 0xbd, 0x0d, 0x4b, 0xe1, 0xa5, 0x48, 0xdf, 0xd5, 0xaf, 0x2a, 0xed, 0x25, 0x9c, 0x66, 0xe3, - 0x51, 0x79, 0xd4, 0x86, 0x55, 0xdb, 0xb5, 0x9c, 0x7e, 0x87, 0xdc, 0x73, 0x6d, 0xd7, 0xe6, 0xb6, - 0xe9, 0xd8, 0xbf, 0x8a, 0xf2, 0xe8, 0xd7, 0x14, 0xce, 0xea, 0xde, 0x05, 0x32, 0xf8, 0x42, 0x4d, - 0xfd, 0x21, 0x94, 0x64, 0x86, 0x10, 0xc9, 0x54, 0xac, 0x4a, 0x26, 0x08, 0xe5, 0x57, 0xb4, 0x2a, - 0x29, 0x81, 0x03, 0x5e, 0x94, 0x8d, 0x73, 0x93, 0xb2, 0x71, 0xe2, 0x42, 0x38, 0x50, 0x09, 0x74, - 0xc3, 0x02, 0x91, 0xc9, 0xc2, 0x55, 0x28, 0x86, 0x0b, 0x57, 0x56, 0xa2, 0xc6, 0x20, 0x04, 0xc2, - 0x91, 0x44, 0xc2, 0xda, 0x31, 0xa4, 0xb2, 0x5d, 0x36, 0x63, 0xaf, 0xc3, 0xbc, 0xca, 0x37, 0xca, - 0xd6, 0x92, 0x12, 0x9b, 0x0f, 0x4f, 0x21, 0xe4, 0x27, 0x2c, 0xfd, 0x1a, 0xaa, 0x93, 0xba, 0x89, - 0x17, 0xc8, 0xc7, 0xd9, 0x5d, 0xd1, 0xff, 0xa0, 0xc1, 0x72, 0x12, 0x29, 0xfb, 0xf1, 0x65, 0x37, - 0x72, 0x79, 0xdd, 0x4d, 0xec, 0xc8, 0x9f, 0x34, 0x58, 0x4d, 0x2d, 0x6d, 0xaa, 0x13, 0x9f, 0xc2, - 0xa9, 0x64, 0x70, 0xcc, 0x4e, 0x11, 0x1c, 0x4d, 0x28, 0xef, 0x45, 0x71, 0x4f, 0x2f, 0xef, 0x54, - 0xf4, 0xbf, 0x69, 0xb0, 0x90, 0xd0, 0x60, 0xe8, 0x21, 0xcc, 0x8b, 0xfc, 0x66, 0xbb, 0x5d, 0xd5, - 0x45, 0x65, 0x2c, 0x96, 0x09, 0x90, 0x78, 0x5d, 0xed, 0x00, 0x09, 0x87, 0x90, 0xa8, 0x0d, 0x05, - 0x4a, 0x58, 0xdf, 0xe1, 0x2a, 0xb5, 0x5f, 0xcd, 0x58, 0xd6, 0xb8, 0xc9, 0xfb, 0xcc, 0x00, 0x91, - 0xa3, 0xb0, 0xd4, 0xc7, 0x0a, 0x47, 0xff, 0x67, 0x0e, 0x2a, 0xb7, 0xcd, 0x43, 0xe2, 0x1c, 0x10, - 0x87, 0x58, 0xdc, 0xa3, 0xe8, 0x3d, 0x28, 0xf7, 0x4c, 0x6e, 0x1d, 0x4b, 0x6a, 0xd8, 0x0b, 0xb6, - 0xb2, 0x19, 0x4a, 0x21, 0x35, 0xf6, 0x63, 0x98, 0x5d, 0x97, 0xd3, 0x33, 0xe3, 0x25, 0xb5, 0xb0, - 0x72, 0x82, 0x83, 0x93, 0xd6, 0x64, 0x03, 0x2f, 0xbf, 0x77, 0x1f, 0xfb, 0xa2, 0x88, 0x4e, 0xff, - 0x6e, 0x48, 0xb9, 0x80, 0xc9, 0xbb, 0x7d, 0x9b, 0x92, 0x1e, 0x71, 0x79, 0xdc, 0xc0, 0xef, 0x8f, - 0xe0, 0xe3, 0x31, 0x8b, 0x6b, 0x37, 0x60, 0x79, 0xd4, 0x79, 0xb4, 0x0c, 0xb3, 0x27, 0xe4, 0x2c, - 0x88, 0x05, 0x2c, 0x7e, 0xa2, 0x55, 0xc8, 0x9f, 0x9a, 0x4e, 0x5f, 0xe5, 0x1f, 0x1c, 0x7c, 0x5c, - 0xcf, 0x5d, 0xd3, 0xf4, 0xbf, 0x68, 0x50, 0x9d, 0xe4, 0x08, 0xfa, 0x7a, 0x02, 0xc8, 0x28, 0x2b, - 0xaf, 0x66, 0xdf, 0x26, 0x67, 0x01, 0xea, 0x2e, 0x14, 0x3d, 0x5f, 0x3c, 0xb9, 0x3c, 0xaa, 0xe2, - 0xfc, 0xf5, 0x30, 0x76, 0xef, 0x2a, 0xfa, 0xf9, 0xa0, 0x7e, 0x25, 0x05, 0x1f, 0x32, 0x70, 0xa4, - 0x8a, 0x74, 0x28, 0x48, 0x7f, 0x44, 0x51, 0x16, 0xed, 0x93, 0x3c, 0xfc, 0xfb, 0x92, 0x82, 0x15, - 0x47, 0x7f, 0x0f, 0x8a, 0xa2, 0x3b, 0xdc, 0x27, 0xdc, 0x14, 0x57, 0x86, 0x11, 0xe7, 0xe8, 0xb6, - 0xed, 0x9e, 0x28, 0xd7, 0xa2, 0x2b, 0x73, 0xa0, 0xe8, 0x38, 0x92, 0xb8, 0xa8, 0x4c, 0xe5, 0xa6, - 0x2b, 0x53, 0xfa, 0x7f, 0x73, 0x50, 0x16, 0xd6, 0xc3, 0xca, 0xf7, 0x7d, 0xa8, 0x38, 0xc9, 0x35, - 0x29, 0x2f, 0xae, 0x28, 0xc0, 0x74, 0x94, 0xe2, 0xb4, 0xac, 0x50, 0x3e, 0xb2, 0x89, 0xd3, 0x89, - 0x94, 0x73, 0x69, 0xe5, 0x9b, 0x49, 0x26, 0x4e, 0xcb, 0x8a, 0xec, 0xf3, 0x48, 0x9c, 0xb6, 0x6a, - 0x5f, 0xa2, 0xec, 0xf3, 0x13, 0x41, 0xc4, 0x01, 0xef, 0xa2, 0x15, 0xcf, 0x4d, 0x59, 0x98, 0xaf, - 0xc3, 0xa2, 0xe8, 0x31, 0xbc, 0x3e, 0x0f, 0x7b, 0xbc, 0xbc, 0xec, 0x46, 0xd0, 0x70, 0x50, 0x5f, - 0x7c, 0x27, 0xc5, 0xc1, 0x23, 0x92, 0x13, 0x8b, 0x7a, 0xe1, 0x73, 0x17, 0xf5, 0x77, 0xa1, 0xb4, - 0x6f, 0x5b, 0xd4, 0x13, 0x86, 0x45, 0x6e, 0x65, 0xa9, 0xbe, 0x33, 0xca, 0x41, 0xa1, 0x43, 0x21, - 0x5f, 0xec, 0x96, 0x6b, 0xba, 0x5e, 0xd0, 0x5d, 0xe6, 0xe3, 0xdd, 0xba, 0x23, 0x88, 0x38, 0xe0, - 0x5d, 0x5f, 0x15, 0x29, 0xf5, 0x77, 0x4f, 0xeb, 0x33, 0x4f, 0x9e, 0xd6, 0x67, 0x3e, 0x78, 0xaa, - 0xd2, 0xeb, 0xa7, 0x00, 0x70, 0xf7, 0xf0, 0x97, 0xc4, 0x0a, 0x42, 0xee, 0xf2, 0x87, 0xa0, 0x28, - 0x93, 0x6a, 0xfe, 0x20, 0x1f, 0x4d, 0xb9, 0x91, 0x32, 0x99, 0xe0, 0xe1, 0x94, 0x24, 0x6a, 0x42, - 0x29, 0x7a, 0x1c, 0xaa, 0x12, 0xb0, 0xa2, 0xd4, 0x4a, 0xd1, 0x0b, 0x12, 0xc7, 0x32, 0xa9, 0xf8, - 0x9f, 0xbb, 0x34, 0xfe, 0x0d, 0x98, 0xed, 0xdb, 0x1d, 0x79, 0x7e, 0x25, 0xe3, 0xdb, 0xe1, 0x1d, - 0xbe, 0xb7, 0xd7, 0x3a, 0x1f, 0xd4, 0x5f, 0x99, 0x34, 0x56, 0xe1, 0x67, 0x3e, 0x61, 0x8d, 0x7b, - 0x7b, 0x2d, 0x2c, 0x94, 0x2f, 0x8a, 0xa8, 0xc2, 0x94, 0x11, 0xb5, 0x05, 0xa0, 0x56, 0x2d, 0xb4, - 0xe7, 0x83, 0x68, 0x0a, 0x1f, 0xca, 0xb7, 0x22, 0x0e, 0x4e, 0x48, 0x21, 0x06, 0x2b, 0x16, 0x25, - 0xf2, 0xb7, 0x38, 0x7a, 0xc6, 0xcd, 0x9e, 0x5f, 0x2d, 0xca, 0x72, 0xf2, 0xcd, 0x6c, 0x29, 0x56, - 0xa8, 0x19, 0x2f, 0x2b, 0x33, 0x2b, 0x3b, 0xa3, 0x60, 0x78, 0x1c, 0x1f, 0x79, 0xb0, 0xd2, 0x51, - 0x8d, 0x7b, 0x6c, 0xb4, 0x34, 0xb5, 0xd1, 0x2b, 0xc2, 0x60, 0x6b, 0x14, 0x08, 0x8f, 0x63, 0xa3, - 0x9f, 0xc3, 0x5a, 0x48, 0x1c, 0x7f, 0x3d, 0x55, 0x41, 0xee, 0x54, 0x4d, 0xbc, 0xe7, 0x5a, 0x13, - 0xa5, 0xf0, 0x67, 0x20, 0xa0, 0x0e, 0x14, 0x9c, 0xa0, 0x40, 0x96, 0x65, 0x75, 0xfa, 0x41, 0xb6, - 0x55, 0xc4, 0xd1, 0xdf, 0x48, 0x16, 0xc6, 0xe8, 0x05, 0xa1, 0x6a, 0xa2, 0xc2, 0x46, 0x8f, 0xa1, - 0x6c, 0xba, 0xae, 0xc7, 0xcd, 0xe0, 0x3d, 0xb7, 0x20, 0x4d, 0x6d, 0x4f, 0x6d, 0x6a, 0x3b, 0xc6, - 0x18, 0x29, 0xc4, 0x09, 0x0e, 0x4e, 0x9a, 0x42, 0x8f, 0x60, 0xc9, 0x7b, 0xe4, 0x12, 0x8a, 0xc9, - 0x11, 0xa1, 0xc4, 0x15, 0x8f, 0xff, 0x8a, 0xb4, 0xfe, 0x9d, 0x8c, 0xd6, 0x53, 0xca, 0x71, 0x48, - 0xa7, 0xe9, 0x0c, 0x8f, 0x5a, 0x41, 0x0d, 0x80, 0x23, 0xdb, 0x55, 0xed, 0x54, 0x75, 0x31, 0x9e, - 0x76, 0xdc, 0x8c, 0xa8, 0x38, 0x21, 0x81, 0xbe, 0x0b, 0x65, 0xcb, 0xe9, 0x33, 0x4e, 0x82, 0xb1, - 0xca, 0x92, 0xbc, 0x41, 0xd1, 0xfa, 0x76, 0x62, 0x16, 0x4e, 0xca, 0xa1, 0x63, 0x58, 0xb0, 0x13, - 0x7d, 0x5b, 0x75, 0x59, 0xc6, 0xe2, 0xd6, 0xd4, 0xcd, 0x1a, 0x33, 0x96, 0x45, 0x26, 0x4a, 0x52, - 0x70, 0x0a, 0x79, 0xed, 0x7b, 0x50, 0xfe, 0x9c, 0x6d, 0x84, 0x68, 0x43, 0x46, 0x8f, 0x6e, 0xaa, - 0x36, 0xe4, 0xef, 0x39, 0x58, 0x4c, 0x6f, 0x78, 0xd4, 0xae, 0x6b, 0x13, 0xc7, 0x64, 0x61, 0x56, - 0x9e, 0x9d, 0x98, 0x95, 0x55, 0xf2, 0x9b, 0x7b, 0x91, 0xe4, 0xb7, 0x05, 0x60, 0xfa, 0x76, 0x98, - 0xf7, 0x82, 0x3c, 0x1a, 0x65, 0xae, 0x78, 0x10, 0x84, 0x13, 0x52, 0x72, 0x10, 0xe6, 0xb9, 0x9c, - 0x7a, 0x8e, 0x43, 0xa8, 0xaa, 0x7c, 0xc1, 0x20, 0x2c, 0xa2, 0xe2, 0x84, 0x04, 0xba, 0x09, 0xe8, - 0xd0, 0xf1, 0xac, 0x13, 0xb9, 0x05, 0xe1, 0x3d, 0x97, 0x59, 0xb2, 0x18, 0xcc, 0x55, 0x8c, 0x31, - 0x2e, 0xbe, 0x40, 0x43, 0xbf, 0x0b, 0xe9, 0x49, 0x08, 0xba, 0x11, 0x6c, 0x80, 0x16, 0x8d, 0x2a, - 0xa6, 0x5b, 0xbc, 0x7e, 0x15, 0x4a, 0xd8, 0xf3, 0x78, 0xdb, 0xe4, 0xc7, 0x0c, 0xd5, 0x21, 0xef, - 0x8b, 0x1f, 0x6a, 0xcc, 0x25, 0x27, 0x8d, 0x92, 0x83, 0x03, 0xba, 0xfe, 0x7b, 0x0d, 0x5e, 0x9e, - 0x38, 0x75, 0x12, 0x1b, 0x69, 0x45, 0x5f, 0xca, 0xa5, 0x68, 0x23, 0x63, 0x39, 0x9c, 0x90, 0x12, - 0xdd, 0x52, 0x6a, 0x54, 0x35, 0xda, 0x2d, 0xa5, 0xac, 0xe1, 0xb4, 0xac, 0xfe, 0x9f, 0x1c, 0x14, - 0x82, 0x07, 0x05, 0x7a, 0x08, 0x45, 0x71, 0x25, 0x3a, 0x26, 0x37, 0xa5, 0xe5, 0xcc, 0x33, 0xe3, - 0xb0, 0xeb, 0x8c, 0x6b, 0x6c, 0x48, 0xc1, 0x11, 0x22, 0x7a, 0x0d, 0x0a, 0x4c, 0xda, 0x51, 0xee, - 0x45, 0x49, 0x32, 0xb0, 0x8e, 0x15, 0x57, 0xf4, 0x2e, 0x3d, 0xc2, 0x98, 0xd9, 0x0d, 0x63, 0x36, - 0xea, 0x5d, 0xf6, 0x03, 0x32, 0x0e, 0xf9, 0xe8, 0x2d, 0xf1, 0x7e, 0x32, 0x59, 0xd4, 0xbb, 0xd5, - 0x42, 0x48, 0x2c, 0xa9, 0xe7, 0x83, 0xfa, 0x82, 0x02, 0x97, 0xdf, 0x58, 0x49, 0xa3, 0x07, 0x30, - 0xdf, 0x21, 0xdc, 0xb4, 0x9d, 0xa0, 0x65, 0xcb, 0x3c, 0x53, 0x0b, 0xc0, 0x5a, 0x81, 0xaa, 0x51, - 0x16, 0x3e, 0xa9, 0x0f, 0x1c, 0x02, 0x8a, 0xfb, 0x66, 0x79, 0x9d, 0x60, 0x20, 0x9c, 0x8f, 0xef, - 0xdb, 0x8e, 0xd7, 0x21, 0x58, 0x72, 0xf4, 0x27, 0x1a, 0x94, 0x03, 0xa4, 0x1d, 0xb3, 0xcf, 0x08, - 0xda, 0x8c, 0x56, 0x11, 0x1c, 0x77, 0x58, 0x8a, 0xe7, 0xde, 0x39, 0xf3, 0xc9, 0xf9, 0xa0, 0x5e, - 0x92, 0x62, 0xe2, 0x23, 0x5a, 0x40, 0x62, 0x8f, 0x72, 0x97, 0xec, 0xd1, 0xab, 0x90, 0x97, 0xed, - 0xb1, 0xda, 0xcc, 0xa8, 0xbf, 0x93, 0x2d, 0x34, 0x0e, 0x78, 0xfa, 0xc7, 0x39, 0xa8, 0xa4, 0x16, - 0x97, 0xa1, 0x99, 0x8b, 0x1e, 0xf9, 0xb9, 0x0c, 0x83, 0xa3, 0xc9, 0x63, 0xfc, 0x9f, 0x42, 0xc1, - 0x12, 0xeb, 0x0b, 0xff, 0x8f, 0xb2, 0x39, 0xcd, 0x51, 0xc8, 0x9d, 0x89, 0x23, 0x49, 0x7e, 0x32, - 0xac, 0x00, 0xd1, 0x2d, 0x58, 0xa1, 0x84, 0xd3, 0xb3, 0xed, 0x23, 0x4e, 0x68, 0xb2, 0x47, 0xcf, - 0xc7, 0xed, 0x0e, 0x1e, 0x15, 0xc0, 0xe3, 0x3a, 0x61, 0x86, 0x2c, 0xbc, 0x40, 0x86, 0xd4, 0x1d, - 0x98, 0xfb, 0x3f, 0xb6, 0xe6, 0x3f, 0x83, 0x52, 0xdc, 0x3c, 0x7d, 0xc1, 0x26, 0xf5, 0x5f, 0x40, - 0x51, 0x44, 0x63, 0xd8, 0xf4, 0x5f, 0x52, 0x80, 0xd2, 0xa5, 0x21, 0x97, 0xa5, 0x34, 0xe8, 0x5b, - 0x10, 0xfc, 0x77, 0x46, 0x64, 0x53, 0x9b, 0x93, 0x5e, 0x2a, 0x9b, 0xee, 0x09, 0x02, 0x0e, 0xe8, - 0x89, 0x61, 0xcf, 0x6f, 0x35, 0x00, 0xf9, 0xc4, 0xdb, 0x3d, 0x15, 0xcf, 0xf2, 0x75, 0x98, 0x13, - 0x27, 0x30, 0xea, 0x98, 0xbc, 0x46, 0x92, 0x83, 0xee, 0x41, 0xc1, 0x93, 0x4d, 0x95, 0x9a, 0xbe, - 0xbc, 0x31, 0x31, 0xf2, 0xd4, 0x3f, 0x5e, 0x1b, 0xd8, 0x7c, 0xb4, 0xfb, 0x98, 0x13, 0x57, 0xf8, - 0x18, 0x47, 0x5d, 0xd0, 0x99, 0x61, 0x05, 0x66, 0x6c, 0x3c, 0x7b, 0x5e, 0x9b, 0xf9, 0xf0, 0x79, - 0x6d, 0xe6, 0xa3, 0xe7, 0xb5, 0x99, 0xf7, 0x87, 0x35, 0xed, 0xd9, 0xb0, 0xa6, 0x7d, 0x38, 0xac, - 0x69, 0x1f, 0x0d, 0x6b, 0xda, 0xc7, 0xc3, 0x9a, 0xf6, 0xe4, 0x93, 0xda, 0xcc, 0x83, 0xdc, 0xe9, - 0xe6, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x80, 0x43, 0x11, 0x41, 0xbe, 0x1e, 0x00, 0x00, + // 2428 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4d, 0x6c, 0x23, 0x49, + 0x15, 0x4e, 0xdb, 0xb1, 0x63, 0x3f, 0xc7, 0xf9, 0xa9, 0xcd, 0x80, 0x37, 0x02, 0x3b, 0xdb, 0x8b, + 0x56, 0x59, 0x98, 0xb5, 0x49, 0x16, 0x56, 0xc3, 0x00, 0x03, 0xe9, 0x38, 0x33, 0x8a, 0x76, 0x32, + 0x63, 0x55, 0x76, 0x06, 0x31, 0x8c, 0x10, 0x9d, 0x76, 0xc5, 0x69, 0xd2, 0xee, 0xf6, 0x56, 0x95, + 0x33, 0x09, 0x1c, 0xd8, 0x03, 0x48, 0x1c, 0x10, 0x9a, 0x23, 0x27, 0xb4, 0x23, 0xb8, 0x70, 0xe5, + 0xc4, 0x05, 0x4e, 0x48, 0xcc, 0x71, 0x24, 0x2e, 0x7b, 0x40, 0xd6, 0x8e, 0xf7, 0xc0, 0x09, 0x71, + 0xcf, 0x09, 0x55, 0x75, 0xf5, 0x9f, 0x1d, 0x4f, 0xda, 0x3b, 0x0b, 0xe2, 0x14, 0xf7, 0xfb, 0xf9, + 0xde, 0xab, 0xaa, 0xf7, 0x5e, 0xbd, 0x7a, 0x81, 0xbd, 0xe3, 0x6b, 0xac, 0x6e, 0x7b, 0x8d, 0xe3, + 0xfe, 0x01, 0xa1, 0x2e, 0xe1, 0x84, 0x35, 0x4e, 0x88, 0xdb, 0xf6, 0x68, 0x43, 0x31, 0xcc, 0x9e, + 0xdd, 0x35, 0xad, 0x23, 0xdb, 0x25, 0xf4, 0xac, 0xd1, 0x3b, 0xee, 0x08, 0x02, 0x6b, 0x74, 0x09, + 0x37, 0x1b, 0x27, 0x1b, 0x8d, 0x0e, 0x71, 0x09, 0x35, 0x39, 0x69, 0xd7, 0x7b, 0xd4, 0xe3, 0x1e, + 0xfa, 0x92, 0xaf, 0x55, 0x8f, 0x6b, 0xd5, 0x7b, 0xc7, 0x1d, 0x41, 0x60, 0x75, 0xa1, 0x55, 0x3f, + 0xd9, 0x58, 0x7d, 0xab, 0x63, 0xf3, 0xa3, 0xfe, 0x41, 0xdd, 0xf2, 0xba, 0x8d, 0x8e, 0xd7, 0xf1, + 0x1a, 0x52, 0xf9, 0xa0, 0x7f, 0x28, 0xbf, 0xe4, 0x87, 0xfc, 0xe5, 0x83, 0xae, 0x4e, 0x74, 0x85, + 0xf6, 0x5d, 0x6e, 0x77, 0xc9, 0xa8, 0x17, 0xab, 0xef, 0x5c, 0xa6, 0xc0, 0xac, 0x23, 0xd2, 0x35, + 0xc7, 0xf4, 0xde, 0x9e, 0xa4, 0xd7, 0xe7, 0xb6, 0xd3, 0xb0, 0x5d, 0xce, 0x38, 0x1d, 0x55, 0xd2, + 0xff, 0x96, 0x85, 0xc2, 0x56, 0x6b, 0xf7, 0x16, 0xf5, 0xfa, 0x3d, 0xb4, 0x06, 0xb3, 0xae, 0xd9, + 0x25, 0x15, 0x6d, 0x4d, 0x5b, 0x2f, 0x1a, 0xf3, 0x4f, 0x07, 0xb5, 0x99, 0xe1, 0xa0, 0x36, 0x7b, + 0xc7, 0xec, 0x12, 0x2c, 0x39, 0xc8, 0x81, 0xc2, 0x09, 0xa1, 0xcc, 0xf6, 0x5c, 0x56, 0xc9, 0xac, + 0x65, 0xd7, 0x4b, 0x9b, 0x37, 0xea, 0x69, 0x36, 0xad, 0x2e, 0x0d, 0xdc, 0xf7, 0x55, 0x6f, 0x7a, + 0xb4, 0x69, 0x33, 0xcb, 0x3b, 0x21, 0xf4, 0xcc, 0x58, 0x52, 0x56, 0x0a, 0x8a, 0xc9, 0x70, 0x68, + 0x01, 0xfd, 0x5c, 0x83, 0xa5, 0x1e, 0x25, 0x87, 0x84, 0x52, 0xd2, 0x56, 0xfc, 0x4a, 0x76, 0x4d, + 0xfb, 0x0c, 0xcc, 0x56, 0x94, 0xd9, 0xa5, 0xd6, 0x08, 0x3e, 0x1e, 0xb3, 0x88, 0x7e, 0xa7, 0xc1, + 0x2a, 0x23, 0xf4, 0x84, 0xd0, 0xad, 0x76, 0x9b, 0x12, 0xc6, 0x8c, 0xb3, 0x6d, 0xc7, 0x26, 0x2e, + 0xdf, 0xde, 0x6d, 0x62, 0x56, 0x99, 0x95, 0xfb, 0xf0, 0x9d, 0x74, 0x0e, 0xed, 0x4f, 0xc2, 0x31, + 0x74, 0xe5, 0xd1, 0xea, 0x44, 0x11, 0x86, 0x5f, 0xe0, 0x86, 0x7e, 0x08, 0xf3, 0xc1, 0x41, 0xde, + 0xb6, 0x19, 0x47, 0xf7, 0x21, 0xdf, 0x11, 0x1f, 0xac, 0xa2, 0x49, 0x07, 0xeb, 0xe9, 0x1c, 0x0c, + 0x30, 0x8c, 0x05, 0xe5, 0x4f, 0x5e, 0x7e, 0x32, 0xac, 0xd0, 0xf4, 0x3f, 0x67, 0xa1, 0xb4, 0xd5, + 0xda, 0xc5, 0x84, 0x79, 0x7d, 0x6a, 0x91, 0x14, 0x41, 0xb3, 0x09, 0x20, 0xfe, 0xb2, 0x9e, 0x69, + 0x91, 0x76, 0x25, 0xb3, 0xa6, 0xad, 0x17, 0x0c, 0xa4, 0xe4, 0xe0, 0x4e, 0xc8, 0xc1, 0x31, 0x29, + 0x81, 0x7a, 0x6c, 0xbb, 0x6d, 0x79, 0xda, 0x31, 0xd4, 0x77, 0x6d, 0xb7, 0x8d, 0x25, 0x07, 0xdd, + 0x86, 0xdc, 0x09, 0xa1, 0x07, 0x62, 0xff, 0x45, 0x40, 0x7c, 0x25, 0xdd, 0xf2, 0xee, 0x0b, 0x15, + 0xa3, 0x38, 0x1c, 0xd4, 0x72, 0xf2, 0x27, 0xf6, 0x41, 0x50, 0x1d, 0x80, 0x1d, 0x79, 0x94, 0x4b, + 0x77, 0x2a, 0xb9, 0xb5, 0xec, 0x7a, 0xd1, 0x58, 0x10, 0xfe, 0xed, 0x87, 0x54, 0x1c, 0x93, 0x40, + 0xd7, 0x60, 0x9e, 0xd9, 0x6e, 0xa7, 0xef, 0x98, 0x54, 0x10, 0x2a, 0x79, 0xe9, 0xe7, 0x8a, 0xf2, + 0x73, 0x7e, 0x3f, 0xc6, 0xc3, 0x09, 0x49, 0x61, 0xc9, 0x32, 0x39, 0xe9, 0x78, 0xd4, 0x26, 0xac, + 0x32, 0x17, 0x59, 0xda, 0x0e, 0xa9, 0x38, 0x26, 0x81, 0x5e, 0x87, 0x9c, 0xdc, 0xf9, 0x4a, 0x41, + 0x9a, 0x28, 0x2b, 0x13, 0x39, 0x79, 0x2c, 0xd8, 0xe7, 0xa1, 0x37, 0x61, 0x4e, 0x65, 0x4d, 0xa5, + 0x28, 0xc5, 0x16, 0x95, 0xd8, 0x5c, 0x10, 0xd6, 0x01, 0x5f, 0xff, 0xa3, 0x06, 0x8b, 0xb1, 0xf3, + 0x93, 0xb1, 0x72, 0x0d, 0xe6, 0x3b, 0xb1, 0x4c, 0x51, 0x67, 0x19, 0xae, 0x26, 0x9e, 0x45, 0x38, + 0x21, 0x89, 0x08, 0x14, 0xa9, 0x42, 0x0a, 0x2a, 0xc2, 0x46, 0xea, 0x40, 0x0b, 0x7c, 0x88, 0x2c, + 0xc5, 0x88, 0x0c, 0x47, 0xc8, 0xfa, 0x3f, 0x35, 0x19, 0x74, 0x41, 0x8d, 0x40, 0xeb, 0xb1, 0x3a, + 0xa4, 0xc9, 0x2d, 0x9c, 0x9f, 0x50, 0x43, 0x2e, 0x49, 0xde, 0xcc, 0xff, 0x45, 0xf2, 0x5e, 0x2f, + 0xfc, 0xe6, 0xc3, 0xda, 0xcc, 0x07, 0xff, 0x58, 0x9b, 0xd1, 0x3f, 0xc9, 0x40, 0xb9, 0x49, 0x1c, + 0xc2, 0xc9, 0xdd, 0x1e, 0x97, 0x2b, 0xb8, 0x09, 0xa8, 0x43, 0x4d, 0x8b, 0xb4, 0x08, 0xb5, 0xbd, + 0xf6, 0x3e, 0xb1, 0x3c, 0xb7, 0xcd, 0xe4, 0x11, 0x65, 0x8d, 0xcf, 0x0d, 0x07, 0x35, 0x74, 0x6b, + 0x8c, 0x8b, 0x2f, 0xd0, 0x40, 0x0e, 0x94, 0x7b, 0x54, 0xfe, 0xb6, 0xb9, 0x2a, 0xe0, 0x22, 0x71, + 0xde, 0x4e, 0xb7, 0xf6, 0x56, 0x5c, 0xd5, 0x58, 0x1e, 0x0e, 0x6a, 0xe5, 0x04, 0x09, 0x27, 0xc1, + 0xd1, 0x77, 0x61, 0xc9, 0xa3, 0xbd, 0x23, 0xd3, 0x6d, 0x92, 0x1e, 0x71, 0xdb, 0xc4, 0xe5, 0x4c, + 0x26, 0x73, 0xc1, 0x58, 0x11, 0x65, 0xf7, 0xee, 0x08, 0x0f, 0x8f, 0x49, 0xa3, 0x07, 0xb0, 0xdc, + 0xa3, 0x5e, 0xcf, 0xec, 0x98, 0x02, 0xb1, 0xe5, 0x39, 0xb6, 0x75, 0x26, 0x93, 0xbd, 0x68, 0x5c, + 0x1d, 0x0e, 0x6a, 0xcb, 0xad, 0x51, 0xe6, 0xf9, 0xa0, 0xf6, 0x8a, 0xdc, 0x3a, 0x41, 0x89, 0x98, + 0x78, 0x1c, 0x46, 0xdf, 0x85, 0x42, 0xb3, 0x4f, 0x25, 0x05, 0x7d, 0x1b, 0x0a, 0x6d, 0xf5, 0x5b, + 0xed, 0xea, 0x6b, 0xc1, 0x9d, 0x14, 0xc8, 0x9c, 0x0f, 0x6a, 0x65, 0x71, 0xf5, 0xd6, 0x03, 0x02, + 0x0e, 0x55, 0xf4, 0x87, 0x50, 0xde, 0x39, 0xed, 0x79, 0x94, 0x07, 0xe7, 0xf5, 0x06, 0xe4, 0x89, + 0x24, 0x48, 0xb4, 0x42, 0x54, 0x48, 0x7d, 0x31, 0xac, 0xb8, 0x22, 0xb1, 0xc9, 0xa9, 0x69, 0x71, + 0x55, 0x11, 0xc3, 0xc4, 0xde, 0x11, 0x44, 0xec, 0xf3, 0xf4, 0x27, 0x1a, 0xc0, 0x2d, 0x12, 0x62, + 0x6f, 0xc1, 0x62, 0x90, 0x14, 0xc9, 0x5c, 0xfd, 0xbc, 0xd2, 0x5e, 0xc4, 0x49, 0x36, 0x1e, 0x95, + 0x47, 0x2d, 0x58, 0xb1, 0x5d, 0xcb, 0xe9, 0xb7, 0xc9, 0x3d, 0xd7, 0x76, 0x6d, 0x6e, 0x9b, 0x8e, + 0xfd, 0x93, 0xb0, 0x2e, 0x7f, 0x41, 0xe1, 0xac, 0xec, 0x5e, 0x20, 0x83, 0x2f, 0xd4, 0xd4, 0x1f, + 0x42, 0x51, 0x56, 0x08, 0x51, 0x9c, 0xa3, 0x72, 0xa5, 0xbd, 0xa0, 0x5c, 0x05, 0xd5, 0x3d, 0x33, + 0xa9, 0xba, 0xc7, 0x12, 0xc2, 0x81, 0xb2, 0xaf, 0x1b, 0x5c, 0x38, 0xa9, 0x2c, 0x5c, 0x85, 0x42, + 0xb0, 0x70, 0x65, 0x25, 0x6c, 0x34, 0x02, 0x20, 0x1c, 0x4a, 0xc4, 0xac, 0x1d, 0x41, 0xa2, 0xda, + 0xa5, 0x33, 0x16, 0xab, 0xbe, 0x99, 0x17, 0x57, 0xdf, 0x98, 0xa5, 0x9f, 0x41, 0x65, 0x52, 0x77, + 0xf2, 0x12, 0xf5, 0x38, 0xbd, 0x2b, 0xfa, 0xaf, 0x35, 0x58, 0x8a, 0x23, 0xa5, 0x3f, 0xbe, 0xf4, + 0x46, 0x2e, 0xbf, 0xc7, 0x63, 0x3b, 0xf2, 0x5b, 0x0d, 0x56, 0x12, 0x4b, 0x9b, 0xea, 0xc4, 0xa7, + 0x70, 0x2a, 0x1e, 0x1c, 0xd9, 0x29, 0x82, 0xa3, 0x01, 0xa5, 0xdd, 0x30, 0xee, 0xe9, 0xe5, 0x9d, + 0x8f, 0xfe, 0x17, 0x0d, 0xe6, 0x63, 0x1a, 0x0c, 0x3d, 0x84, 0x39, 0x51, 0xdf, 0x6c, 0xb7, 0xa3, + 0xba, 0xb2, 0x94, 0x97, 0x65, 0x0c, 0x24, 0x5a, 0x57, 0xcb, 0x47, 0xc2, 0x01, 0x24, 0x6a, 0x41, + 0x9e, 0x12, 0xd6, 0x77, 0xb8, 0x2a, 0xed, 0x57, 0x53, 0x5e, 0x6b, 0xdc, 0xe4, 0x7d, 0x66, 0x80, + 0xa8, 0x51, 0x58, 0xea, 0x63, 0x85, 0xa3, 0xff, 0x3d, 0x03, 0xe5, 0xdb, 0xe6, 0x01, 0x71, 0xf6, + 0x89, 0x43, 0x2c, 0xee, 0x51, 0xf4, 0x53, 0x28, 0x75, 0x4d, 0x6e, 0x1d, 0x49, 0x6a, 0xd0, 0x5b, + 0x36, 0xd3, 0x19, 0x4a, 0x20, 0xd5, 0xf7, 0x22, 0x98, 0x1d, 0x97, 0xd3, 0x33, 0xe3, 0x15, 0xb5, + 0xb0, 0x52, 0x8c, 0x83, 0xe3, 0xd6, 0xe4, 0x83, 0x40, 0x7e, 0xef, 0x9c, 0xf6, 0xc4, 0x25, 0x3a, + 0xfd, 0x3b, 0x24, 0xe1, 0x02, 0x26, 0xef, 0xf7, 0x6d, 0x4a, 0xba, 0xc4, 0xe5, 0xd1, 0x83, 0x60, + 0x6f, 0x04, 0x1f, 0x8f, 0x59, 0x5c, 0xbd, 0x01, 0x4b, 0xa3, 0xce, 0xa3, 0x25, 0xc8, 0x1e, 0x93, + 0x33, 0x3f, 0x16, 0xb0, 0xf8, 0x89, 0x56, 0x20, 0x77, 0x62, 0x3a, 0x7d, 0x55, 0x7f, 0xb0, 0xff, + 0x71, 0x3d, 0x73, 0x4d, 0xd3, 0x7f, 0xaf, 0x41, 0x65, 0x92, 0x23, 0xe8, 0x8b, 0x31, 0x20, 0xa3, + 0xa4, 0xbc, 0xca, 0xbe, 0x4b, 0xce, 0x7c, 0xd4, 0x1d, 0x28, 0x78, 0x3d, 0xf1, 0x84, 0xf3, 0xa8, + 0x8a, 0xf3, 0x37, 0x83, 0xd8, 0xbd, 0xab, 0xe8, 0xe7, 0x83, 0xda, 0x95, 0x04, 0x7c, 0xc0, 0xc0, + 0xa1, 0x2a, 0xd2, 0x21, 0x2f, 0xfd, 0x11, 0x97, 0xb2, 0x68, 0x9f, 0xe4, 0xe1, 0xdf, 0x97, 0x14, + 0xac, 0x38, 0xfa, 0x9f, 0x34, 0x98, 0x95, 0xed, 0xe1, 0x43, 0x28, 0x88, 0xfd, 0x6b, 0x9b, 0xdc, + 0x94, 0x7e, 0xa5, 0x7e, 0x4c, 0x08, 0xed, 0x3d, 0xc2, 0xcd, 0x28, 0xbf, 0x02, 0x0a, 0x0e, 0x11, + 0x11, 0x86, 0x9c, 0xcd, 0x49, 0x37, 0x38, 0xc8, 0xb7, 0x26, 0x42, 0xab, 0xf7, 0x6f, 0x1d, 0x9b, + 0x8f, 0x76, 0x4e, 0x39, 0x71, 0xc5, 0x61, 0x44, 0xc5, 0x60, 0x57, 0x60, 0x60, 0x1f, 0x4a, 0xff, + 0x83, 0x06, 0xa1, 0x29, 0x91, 0xee, 0x8c, 0x38, 0x87, 0xb7, 0x6d, 0xf7, 0x58, 0x6d, 0x6b, 0xe8, + 0xce, 0xbe, 0xa2, 0xe3, 0x50, 0xe2, 0xa2, 0x2b, 0x36, 0x33, 0xe5, 0x15, 0x7b, 0x15, 0x0a, 0x96, + 0xe7, 0x72, 0xdb, 0xed, 0x8f, 0xd5, 0x97, 0x6d, 0x45, 0xc7, 0xa1, 0x84, 0xfe, 0x2c, 0x0b, 0x25, + 0xe1, 0x6b, 0x70, 0xc7, 0x7f, 0x13, 0xca, 0x4e, 0xfc, 0xf4, 0x94, 0xcf, 0x57, 0x14, 0x44, 0x32, + 0x1f, 0x71, 0x52, 0x56, 0x28, 0x1f, 0xda, 0xc4, 0x69, 0x87, 0xca, 0x99, 0xa4, 0xf2, 0xcd, 0x38, + 0x13, 0x27, 0x65, 0x45, 0x9d, 0x7d, 0x24, 0xe2, 0x5a, 0x35, 0x6a, 0xe1, 0xd6, 0x7e, 0x4f, 0x10, + 0xb1, 0xcf, 0xbb, 0x68, 0x7f, 0x66, 0xa7, 0xdc, 0x9f, 0xeb, 0xb0, 0x20, 0x0e, 0xd2, 0xeb, 0xf3, + 0xa0, 0x9b, 0xcd, 0xc9, 0xbe, 0x0b, 0x0d, 0x07, 0xb5, 0x85, 0xf7, 0x12, 0x1c, 0x3c, 0x22, 0x39, + 0xb1, 0x7d, 0xc9, 0x7f, 0xda, 0xf6, 0x45, 0xac, 0xda, 0xb1, 0xbb, 0x36, 0xaf, 0xcc, 0x49, 0x27, + 0xc2, 0x55, 0xdf, 0x16, 0x44, 0xec, 0xf3, 0x12, 0x47, 0x5a, 0xb8, 0xf4, 0x48, 0xdf, 0x87, 0xe2, + 0x9e, 0x6d, 0x51, 0x4f, 0xac, 0x45, 0x5c, 0x4c, 0x2c, 0xd1, 0xb4, 0x87, 0x05, 0x3c, 0x58, 0x63, + 0xc0, 0x17, 0xae, 0xb8, 0xa6, 0xeb, 0xf9, 0xad, 0x79, 0x2e, 0x72, 0xe5, 0x8e, 0x20, 0x62, 0x9f, + 0x77, 0x7d, 0x45, 0xdc, 0x47, 0xbf, 0x7c, 0x52, 0x9b, 0x79, 0xfc, 0xa4, 0x36, 0xf3, 0xe1, 0x13, + 0x75, 0x37, 0xfd, 0x0b, 0x00, 0xee, 0x1e, 0xfc, 0x98, 0x58, 0x7e, 0xcc, 0x5f, 0xfe, 0x2a, 0x17, + 0x3d, 0x86, 0x1a, 0x06, 0xc9, 0x17, 0x6c, 0x66, 0xa4, 0xc7, 0x88, 0xf1, 0x70, 0x42, 0x12, 0x35, + 0xa0, 0x18, 0xbe, 0xd4, 0x55, 0x7c, 0x2f, 0x2b, 0xb5, 0x62, 0xf8, 0x9c, 0xc7, 0x91, 0x4c, 0x22, + 0x01, 0x67, 0x2f, 0x4d, 0x40, 0x03, 0xb2, 0x7d, 0xbb, 0x2d, 0x43, 0xa2, 0x68, 0x7c, 0x35, 0x28, + 0x80, 0xf7, 0x76, 0x9b, 0xe7, 0x83, 0xda, 0x6b, 0x93, 0x66, 0x5c, 0xfc, 0xac, 0x47, 0x58, 0xfd, + 0xde, 0x6e, 0x13, 0x0b, 0xe5, 0x8b, 0x82, 0x34, 0x3f, 0x65, 0x90, 0x6e, 0x02, 0xa8, 0x55, 0x0b, + 0x6d, 0x3f, 0x36, 0xc2, 0xa9, 0xc5, 0xad, 0x90, 0x83, 0x63, 0x52, 0x88, 0xc1, 0xb2, 0x45, 0x89, + 0xfc, 0x2d, 0x8e, 0x9e, 0x71, 0xb3, 0xeb, 0xbf, 0xdb, 0x4b, 0x9b, 0x5f, 0x4e, 0x57, 0x31, 0x85, + 0x9a, 0xf1, 0xaa, 0x32, 0xb3, 0xbc, 0x3d, 0x0a, 0x86, 0xc7, 0xf1, 0x91, 0x07, 0xcb, 0x6d, 0xf5, + 0xea, 0x89, 0x8c, 0x16, 0xa7, 0x36, 0x7a, 0x45, 0x18, 0x6c, 0x8e, 0x02, 0xe1, 0x71, 0x6c, 0xf4, + 0x43, 0x58, 0x0d, 0x88, 0xe3, 0x4f, 0xcf, 0x0a, 0xc8, 0x9d, 0xaa, 0x8a, 0xc7, 0x70, 0x73, 0xa2, + 0x14, 0x7e, 0x01, 0x02, 0x6a, 0x43, 0xde, 0xf1, 0xbb, 0x8b, 0x92, 0xbc, 0x11, 0xbe, 0x95, 0x6e, + 0x15, 0x51, 0xf4, 0xd7, 0xe3, 0x5d, 0x45, 0xf8, 0xfc, 0x52, 0x0d, 0x85, 0xc2, 0x46, 0xa7, 0x50, + 0x32, 0x5d, 0xd7, 0xe3, 0xa6, 0xff, 0x18, 0x9e, 0x97, 0xa6, 0xb6, 0xa6, 0x36, 0xb5, 0x15, 0x61, + 0x8c, 0x74, 0x31, 0x31, 0x0e, 0x8e, 0x9b, 0x42, 0x8f, 0x60, 0xd1, 0x7b, 0xe4, 0x12, 0x8a, 0xc9, + 0x21, 0xa1, 0xc4, 0xb5, 0x08, 0xab, 0x94, 0xa5, 0xf5, 0xaf, 0xa5, 0xb4, 0x9e, 0x50, 0x8e, 0x42, + 0x3a, 0x49, 0x67, 0x78, 0xd4, 0x0a, 0xaa, 0x03, 0x1c, 0xda, 0xae, 0xea, 0x45, 0x2b, 0x0b, 0xd1, + 0xe8, 0xe9, 0x66, 0x48, 0xc5, 0x31, 0x09, 0xf4, 0x75, 0x28, 0x59, 0x4e, 0x9f, 0x71, 0xe2, 0xcf, + 0xb8, 0x16, 0x65, 0x06, 0x85, 0xeb, 0xdb, 0x8e, 0x58, 0x38, 0x2e, 0x87, 0x8e, 0x60, 0xde, 0x8e, + 0x35, 0xbd, 0x95, 0x25, 0x19, 0x8b, 0x9b, 0x53, 0x77, 0xba, 0xcc, 0x58, 0x12, 0x95, 0x28, 0x4e, + 0xc1, 0x09, 0xe4, 0xd5, 0x6f, 0x40, 0xe9, 0x53, 0xf6, 0x60, 0xa2, 0x87, 0x1b, 0x3d, 0xba, 0xa9, + 0x7a, 0xb8, 0xbf, 0x66, 0x60, 0x21, 0xb9, 0xe1, 0xe1, 0x5b, 0x47, 0x9b, 0x38, 0xb3, 0x0c, 0xaa, + 0x72, 0x76, 0x62, 0x55, 0x56, 0xc5, 0x6f, 0xf6, 0x65, 0x8a, 0xdf, 0x26, 0x80, 0xd9, 0xb3, 0x83, + 0xba, 0xe7, 0xd7, 0xd1, 0xb0, 0x72, 0x45, 0x53, 0x34, 0x1c, 0x93, 0x92, 0x53, 0x49, 0xcf, 0xe5, + 0xd4, 0x73, 0x1c, 0x42, 0xd5, 0x65, 0xea, 0x4f, 0x25, 0x43, 0x2a, 0x8e, 0x49, 0xa0, 0x9b, 0x80, + 0x0e, 0x1c, 0xcf, 0x3a, 0x96, 0x5b, 0x10, 0xe4, 0xb9, 0xac, 0x92, 0x05, 0x7f, 0x28, 0x65, 0x8c, + 0x71, 0xf1, 0x05, 0x1a, 0xfa, 0x5d, 0x48, 0x8e, 0x91, 0xd0, 0x0d, 0x7f, 0x03, 0xb4, 0x70, 0xce, + 0x33, 0xdd, 0xe2, 0xf5, 0xab, 0x50, 0xc4, 0x9e, 0xc7, 0x5b, 0x26, 0x3f, 0x62, 0xa8, 0x06, 0xb9, + 0x9e, 0xf8, 0xa1, 0x66, 0x84, 0x72, 0xec, 0x2b, 0x39, 0xd8, 0xa7, 0xeb, 0xbf, 0xd2, 0xe0, 0xd5, + 0x89, 0x23, 0x3b, 0xb1, 0x91, 0x56, 0xf8, 0xa5, 0x5c, 0x0a, 0x37, 0x32, 0x92, 0xc3, 0x31, 0x29, + 0xd1, 0x80, 0x25, 0xe6, 0x7c, 0xa3, 0x0d, 0x58, 0xc2, 0x1a, 0x4e, 0xca, 0xea, 0xff, 0xce, 0x40, + 0xde, 0x7f, 0x8d, 0xfd, 0x97, 0x7b, 0xee, 0x37, 0x20, 0xcf, 0xa4, 0x1d, 0xe5, 0x5e, 0x58, 0x24, + 0x7d, 0xeb, 0x58, 0x71, 0x45, 0xef, 0xd2, 0x25, 0x8c, 0x99, 0x9d, 0x20, 0x66, 0xc3, 0xde, 0x65, + 0xcf, 0x27, 0xe3, 0x80, 0x8f, 0xde, 0x11, 0x8f, 0x4f, 0x93, 0x85, 0xed, 0x60, 0x35, 0x80, 0xc4, + 0x92, 0x7a, 0x3e, 0xa8, 0xcd, 0x2b, 0x70, 0xf9, 0x8d, 0x95, 0x34, 0x7a, 0x00, 0x73, 0x6d, 0xc2, + 0x4d, 0xdb, 0xf1, 0xbb, 0xc0, 0xd4, 0x03, 0x49, 0x1f, 0xac, 0xe9, 0xab, 0x1a, 0x25, 0xe1, 0x93, + 0xfa, 0xc0, 0x01, 0xa0, 0xc8, 0x37, 0xcb, 0x6b, 0xfb, 0xd3, 0xf9, 0x5c, 0x94, 0x6f, 0xdb, 0x5e, + 0x9b, 0x60, 0xc9, 0xd1, 0x1f, 0x6b, 0x50, 0xf2, 0x91, 0xb6, 0xcd, 0x3e, 0x23, 0x68, 0x23, 0x5c, + 0x85, 0x7f, 0xdc, 0xc1, 0x55, 0x3c, 0xfb, 0xde, 0x59, 0x8f, 0x9c, 0x0f, 0x6a, 0x45, 0x29, 0x26, + 0x3e, 0xc2, 0x05, 0xc4, 0xf6, 0x28, 0x73, 0xc9, 0x1e, 0xbd, 0x0e, 0x39, 0xd9, 0x71, 0xab, 0xcd, + 0x0c, 0xfb, 0x3b, 0xd9, 0x95, 0x63, 0x9f, 0xa7, 0x7f, 0x9c, 0x81, 0x72, 0x62, 0x71, 0x29, 0x9a, + 0xb9, 0x70, 0x42, 0x92, 0x49, 0x31, 0x75, 0x9b, 0xfc, 0x3f, 0x95, 0xef, 0x43, 0xde, 0x12, 0xeb, + 0x0b, 0xfe, 0xa9, 0xb5, 0x31, 0xcd, 0x51, 0xc8, 0x9d, 0x89, 0x22, 0x49, 0x7e, 0x32, 0xac, 0x00, + 0xd1, 0x2d, 0x58, 0xa6, 0x84, 0xd3, 0xb3, 0xad, 0x43, 0x4e, 0x68, 0xbc, 0xed, 0xcf, 0x45, 0xed, + 0x0e, 0x1e, 0x15, 0xc0, 0xe3, 0x3a, 0x41, 0x85, 0xcc, 0xbf, 0x44, 0x85, 0xd4, 0x1d, 0x98, 0xfd, + 0x1f, 0xb6, 0xe6, 0x3f, 0x80, 0x62, 0xd4, 0x3c, 0x7d, 0xc6, 0x26, 0xf5, 0x1f, 0x41, 0x41, 0x44, + 0x63, 0xd0, 0xf4, 0x5f, 0x72, 0x01, 0x25, 0xaf, 0x86, 0x4c, 0x9a, 0xab, 0x41, 0xdf, 0x04, 0xff, + 0x5f, 0x65, 0xa2, 0x9a, 0xfa, 0x0f, 0xf5, 0x58, 0x35, 0x8d, 0xbf, 0xba, 0x63, 0x93, 0xb2, 0x5f, + 0x68, 0x00, 0xf2, 0xd5, 0xb8, 0x73, 0x42, 0x5c, 0x2e, 0x1c, 0x13, 0x27, 0x30, 0xea, 0x98, 0x4c, + 0x23, 0xc9, 0x41, 0xf7, 0x20, 0xef, 0xc9, 0xa6, 0x4a, 0x8d, 0xae, 0xa6, 0x9c, 0x02, 0x84, 0x51, + 0xe7, 0x77, 0x66, 0x58, 0x81, 0x19, 0xeb, 0x4f, 0x9f, 0x57, 0x67, 0x9e, 0x3d, 0xaf, 0xce, 0x7c, + 0xf4, 0xbc, 0x3a, 0xf3, 0xc1, 0xb0, 0xaa, 0x3d, 0x1d, 0x56, 0xb5, 0x67, 0xc3, 0xaa, 0xf6, 0xd1, + 0xb0, 0xaa, 0x7d, 0x3c, 0xac, 0x6a, 0x8f, 0x3f, 0xa9, 0xce, 0x3c, 0xc8, 0x9c, 0x6c, 0xfc, 0x27, + 0x00, 0x00, 0xff, 0xff, 0x66, 0xe7, 0x2a, 0x84, 0x4b, 0x20, 0x00, 0x00, } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto index a6be57a87c..ea48226b73 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto @@ -72,6 +72,14 @@ message APIResource { // namespaced indicates if a resource is namespaced or not. optional bool namespaced = 2; + // group is the preferred group of the resource. Empty implies the group of the containing resource list. + // For subresources, this may have a different value, for example: Scale". + optional string group = 8; + + // version is the preferred version of the resource. Empty implies the version of the containing resource list + // For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)". + optional string version = 9; + // kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') optional string kind = 3; @@ -101,6 +109,7 @@ message APIResourceList { // discover the API at /api, which is the root path of the legacy v1 API. // // +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object message APIVersions { // versions are the api versions that are available. repeated string versions = 1; @@ -249,6 +258,8 @@ message Initializers { // When the last pending initializer is removed, and no failing result is set, the initializers // struct will be set to nil and the object is considered as initialized and visible to all // clients. + // +patchMergeKey=name + // +patchStrategy=merge repeated Initializer pending = 1; // If result is set with the Failure field, the object will be persisted to storage and then deleted, @@ -280,7 +291,7 @@ message LabelSelectorRequirement { optional string key = 1; // operator represents a key's relationship to a set of values. - // Valid operators ard In, NotIn, Exists and DoesNotExist. + // Valid operators are In, NotIn, Exists and DoesNotExist. optional string operator = 2; // values is an array of string values. If the operator is In or NotIn, @@ -291,10 +302,21 @@ message LabelSelectorRequirement { repeated string values = 3; } +// List holds a list of objects, which may not be known by the server. +message List { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional ListMeta metadata = 1; + + // List of objects + repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2; +} + // 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. + // selfLink is a URL representing this object. // Populated by the system. // Read-only. // +optional @@ -308,6 +330,14 @@ message ListMeta { // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency // +optional optional string resourceVersion = 2; + + // continue may be set if the user set a limit on the number of items returned, and indicates that + // the server has more data available. The value is opaque and may be used to issue another request + // to the endpoint that served this list to retrieve the next set of available objects. Continuing a + // list may not be possible if the server configuration has changed or more than a few minutes have + // passed. The resourceVersion field returned when using this continue value will be identical to + // the value in the first response. + optional string continue = 3; } // ListOptions is the query options to a standard REST list call. @@ -343,6 +373,34 @@ message ListOptions { // Timeout for the list/watch call. // +optional optional int64 timeoutSeconds = 5; + + // limit is a maximum number of responses to return for a list call. If more items exist, the + // server will set the `continue` field on the list metadata to a value that can be used with the + // same initial query to retrieve the next set of results. Setting a limit may return fewer than + // the requested amount of items (up to zero items) in the event all requested objects are + // filtered out and clients should only use the presence of the continue field to determine whether + // more results are available. Servers may choose not to support the limit argument and will return + // all of the available results. If limit is specified and the continue field is empty, clients may + // assume that no more results are available. This field is not supported if watch is true. + // + // The server guarantees that the objects returned when using continue will be identical to issuing + // a single list call without a limit - that is, no objects created, modified, or deleted after the + // first request is issued will be included in any subsequent continued requests. This is sometimes + // referred to as a consistent snapshot, and ensures that a client that is using limit to receive + // smaller chunks of a very large result can ensure they see all possible objects. If objects are + // updated during a chunked list the version of the object that was present at the time the first list + // result was calculated is returned. + optional int64 limit = 7; + + // The continue option should be set when retrieving more results from the server. Since this value + // is server defined, clients may only use the continue value from a previous query result with + // identical query parameters (except for the value of continue) and the server may reject a continue + // value it does not recognize. If the specified continue value is no longer valid whether due to + // expiration (generally five to fifteen minutes) or a configuration change on the server the server + // will respond with a 410 ResourceExpired error indicating the client must restart their list without + // the continue field. This field is not supported when watch is true. Clients may start a watch from + // the last resourceVersion value returned by the server and not miss any modifications. + optional string continue = 8; } // MicroTime is version of Time with microsecond level precision. @@ -677,7 +735,9 @@ message StatusDetails { // +optional repeated StatusCause causes = 4; - // If specified, the time in seconds before the operation should be retried. + // If specified, the time in seconds before the operation should be retried. Some errors may indicate + // the client must take an alternate action - for those errors this field may indicate how long to wait + // before taking the alternate action. // +optional optional int32 retryAfterSeconds = 5; } @@ -721,6 +781,8 @@ message Timestamp { // 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. +// +// +k8s:deepcopy-gen=false 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. @@ -751,6 +813,8 @@ message Verbs { // Event represents a single event to a watched resource. // // +protobuf=true +// +k8s:deepcopy-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object message WatchEvent { optional string type = 1; diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go index 5daf9010f6..2217aa293d 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go @@ -21,7 +21,7 @@ import ( "reflect" "testing" - "github.com/ugorji/go/codec" + jsoniter "github.com/json-iterator/go" ) type GroupVersionHolder struct { @@ -46,12 +46,12 @@ func TestGroupVersionUnmarshalJSON(t *testing.T) { if !reflect.DeepEqual(result.GV, c.expect) { t.Errorf("JSON codec failed to unmarshal input '%s': expected %+v, got %+v", c.input, c.expect, result.GV) } - // test the Ugorji codec - if err := codec.NewDecoderBytes(c.input, new(codec.JsonHandle)).Decode(&result); err != nil { - t.Errorf("Ugorji codec failed to unmarshal input '%v': %v", c.input, err) + // test the json-iterator codec + if err := jsoniter.ConfigFastest.Unmarshal(c.input, &result); err != nil { + t.Errorf("json-iterator codec failed to unmarshal input '%v': %v", c.input, err) } if !reflect.DeepEqual(result.GV, c.expect) { - t.Errorf("Ugorji codec failed to unmarshal input '%s': expected %+v, got %+v", c.input, c.expect, result.GV) + t.Errorf("json-iterator codec failed to unmarshal input '%s': expected %+v, got %+v", c.input, c.expect, result.GV) } } } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go index 0ee7d99ca1..c13fe4af8e 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go @@ -67,20 +67,33 @@ type Object interface { // ListMetaAccessor retrieves the list interface from an object type ListMetaAccessor interface { - GetListMeta() List + GetListMeta() ListInterface } -// List lets you work with list metadata from any of the versioned or +// Common lets you work with core 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 { +type Common interface { GetResourceVersion() string SetResourceVersion(version string) GetSelfLink() string SetSelfLink(selfLink string) } +// ListInterface 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 ListInterface interface { + GetResourceVersion() string + SetResourceVersion(version string) + GetSelfLink() string + SetSelfLink(selfLink string) + GetContinue() string + SetContinue(c 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 { @@ -94,6 +107,8 @@ func (meta *ListMeta) GetResourceVersion() string { return meta.ResourceV 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 (meta *ListMeta) GetContinue() string { return meta.Continue } +func (meta *ListMeta) SetContinue(c string) { meta.Continue = c } func (obj *TypeMeta) GetObjectKind() schema.ObjectKind { return obj } @@ -107,7 +122,7 @@ func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind { return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } -func (obj *ListMeta) GetListMeta() List { return obj } +func (obj *ListMeta) GetListMeta() ListInterface { return obj } func (obj *ObjectMeta) GetObjectMeta() Object { return obj } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go index d55f446b0d..dbe206704f 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go @@ -20,7 +20,7 @@ import ( "encoding/json" "time" - "k8s.io/apimachinery/pkg/openapi" + openapi "k8s.io/kube-openapi/pkg/common" "github.com/go-openapi/spec" "github.com/google/gofuzz" @@ -40,8 +40,8 @@ type MicroTime struct { // DeepCopy returns a deep-copy of the MicroTime 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 MicroTime) DeepCopy() MicroTime { - return t +func (t *MicroTime) DeepCopyInto(out *MicroTime) { + *out = *t } // String returns the representation of the time. @@ -74,22 +74,22 @@ func (t *MicroTime) IsZero() bool { } // Before reports whether the time instant t is before u. -func (t MicroTime) Before(u MicroTime) bool { +func (t *MicroTime) Before(u *MicroTime) bool { return t.Time.Before(u.Time) } // Equal reports whether the time instant t is equal to u. -func (t MicroTime) Equal(u MicroTime) bool { +func (t *MicroTime) Equal(u *MicroTime) bool { return t.Time.Equal(u.Time) } // BeforeTime reports whether the time instant t is before second-lever precision u. -func (t MicroTime) BeforeTime(u Time) bool { +func (t *MicroTime) BeforeTime(u *Time) bool { return t.Time.Before(u.Time) } // EqualTime reports whether the time instant t is equal to second-lever precision u. -func (t MicroTime) EqualTime(u Time) bool { +func (t *MicroTime) EqualTime(u *Time) bool { return t.Time.Equal(u.Time) } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go index a1e01f3443..435f6a8f59 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go @@ -20,7 +20,7 @@ import ( "encoding/json" "time" - "k8s.io/apimachinery/pkg/openapi" + openapi "k8s.io/kube-openapi/pkg/common" "github.com/go-openapi/spec" "github.com/google/gofuzz" @@ -37,11 +37,11 @@ type Time struct { time.Time `protobuf:"-"` } -// DeepCopy returns a deep-copy of the Time value. The underlying time.Time +// DeepCopyInto creates 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 +func (t *Time) DeepCopyInto(out *Time) { + *out = *t } // String returns the representation of the time. @@ -74,12 +74,12 @@ func (t *Time) IsZero() bool { } // Before reports whether the time instant t is before u. -func (t Time) Before(u Time) bool { +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 { +func (t *Time) Equal(u *Time) bool { return t.Time.Equal(u.Time) } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go index 5520529dd3..ed72186b49 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go @@ -42,7 +42,10 @@ func (m *Time) ProtoTime() *Timestamp { } return &Timestamp{ Seconds: m.Time.Unix(), - Nanos: int32(m.Time.Nanosecond()), + // leaving this here for the record. our JSON only handled seconds, so this results in writes by + // protobuf clients storing values that aren't read by json clients, which results in unexpected + // field mutation, which fails various validation and equality code. + // Nanos: int32(m.Time.Nanosecond()), } } @@ -64,7 +67,11 @@ func (m *Time) Unmarshal(data []byte) error { if err := p.Unmarshal(data); err != nil { return err } - m.Time = time.Unix(p.Seconds, int64(p.Nanos)).Local() + // leaving this here for the record. our JSON only handled seconds, so this results in writes by + // protobuf clients storing values that aren't read by json clients, which results in unexpected + // field mutation, which fails various validation and equality code. + // m.Time = time.Unix(p.Seconds, int64(p.Nanos)).Local() + m.Time = time.Unix(p.Seconds, int64(0)).Local() return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go index 3ab1d5fd1a..c0fafab9bf 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go @@ -152,7 +152,7 @@ func TestTimeProto(t *testing.T) { input Time }{ {Time{}}, - {Date(1998, time.May, 5, 1, 5, 5, 50, time.Local)}, + {Date(1998, time.May, 5, 1, 5, 5, 0, time.Local)}, {Date(1998, time.May, 5, 5, 5, 5, 0, time.Local)}, } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go index c5ac31f791..13ae66c6f4 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go @@ -14,7 +14,7 @@ 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. +// Package v1 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) @@ -29,12 +29,15 @@ import ( "fmt" "strings" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" ) // 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. +// +// +k8s:deepcopy-gen=false 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. @@ -55,7 +58,7 @@ type TypeMeta struct { // 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. + // selfLink is a URL representing this object. // Populated by the system. // Read-only. // +optional @@ -69,6 +72,14 @@ type ListMeta struct { // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency // +optional ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"` + + // continue may be set if the user set a limit on the number of items returned, and indicates that + // the server has more data available. The value is opaque and may be used to issue another request + // to the endpoint that served this list to retrieve the next set of available objects. Continuing a + // list may not be possible if the server configuration has changed or more than a few minutes have + // passed. The resourceVersion field returned when using this continue value will be identical to + // the value in the first response. + Continue string `json:"continue,omitempty" protobuf:"bytes,3,opt,name=continue"` } // These are internal finalizer values for Kubernetes-like APIs, must be qualified name unless defined here @@ -245,7 +256,9 @@ type Initializers struct { // When the last pending initializer is removed, and no failing result is set, the initializers // struct will be set to nil and the object is considered as initialized and visible to all // clients. - Pending []Initializer `json:"pending" protobuf:"bytes,1,rep,name=pending"` + // +patchMergeKey=name + // +patchStrategy=merge + Pending []Initializer `json:"pending" protobuf:"bytes,1,rep,name=pending" patchStrategy:"merge" patchMergeKey:"name"` // If result is set with the Failure field, the object will be persisted to storage and then deleted, // ensuring that other clients can observe the deletion. Result *Status `json:"result,omitempty" protobuf:"bytes,2,opt,name=result"` @@ -298,6 +311,8 @@ type OwnerReference struct { BlockOwnerDeletion *bool `json:"blockOwnerDeletion,omitempty" protobuf:"varint,7,opt,name=blockOwnerDeletion"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // ListOptions is the query options to a standard REST list call. type ListOptions struct { TypeMeta `json:",inline"` @@ -328,8 +343,37 @@ type ListOptions struct { // Timeout for the list/watch call. // +optional TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` + + // limit is a maximum number of responses to return for a list call. If more items exist, the + // server will set the `continue` field on the list metadata to a value that can be used with the + // same initial query to retrieve the next set of results. Setting a limit may return fewer than + // the requested amount of items (up to zero items) in the event all requested objects are + // filtered out and clients should only use the presence of the continue field to determine whether + // more results are available. Servers may choose not to support the limit argument and will return + // all of the available results. If limit is specified and the continue field is empty, clients may + // assume that no more results are available. This field is not supported if watch is true. + // + // The server guarantees that the objects returned when using continue will be identical to issuing + // a single list call without a limit - that is, no objects created, modified, or deleted after the + // first request is issued will be included in any subsequent continued requests. This is sometimes + // referred to as a consistent snapshot, and ensures that a client that is using limit to receive + // smaller chunks of a very large result can ensure they see all possible objects. If objects are + // updated during a chunked list the version of the object that was present at the time the first list + // result was calculated is returned. + Limit int64 `json:"limit,omitempty" protobuf:"varint,7,opt,name=limit"` + // The continue option should be set when retrieving more results from the server. Since this value + // is server defined, clients may only use the continue value from a previous query result with + // identical query parameters (except for the value of continue) and the server may reject a continue + // value it does not recognize. If the specified continue value is no longer valid whether due to + // expiration (generally five to fifteen minutes) or a configuration change on the server the server + // will respond with a 410 ResourceExpired error indicating the client must restart their list without + // the continue field. This field is not supported when watch is true. Clients may start a watch from + // the last resourceVersion value returned by the server and not miss any modifications. + Continue string `json:"continue,omitempty" protobuf:"bytes,8,opt,name=continue"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // ExportOptions is the query options to the standard REST get call. type ExportOptions struct { TypeMeta `json:",inline"` @@ -339,6 +383,8 @@ type ExportOptions struct { Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // GetOptions is the standard query options to the standard REST get call. type GetOptions struct { TypeMeta `json:",inline"` @@ -370,6 +416,8 @@ const ( DeletePropagationForeground DeletionPropagation = "Foreground" ) +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // DeleteOptions may be provided when deleting an API object. type DeleteOptions struct { TypeMeta `json:",inline"` @@ -408,6 +456,8 @@ type Preconditions struct { UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // Status is a return value for calls that don't return other objects. type Status struct { TypeMeta `json:",inline"` @@ -469,7 +519,9 @@ type StatusDetails struct { // failure. Not all StatusReasons may provide detailed causes. // +optional Causes []StatusCause `json:"causes,omitempty" protobuf:"bytes,4,rep,name=causes"` - // If specified, the time in seconds before the operation should be retried. + // If specified, the time in seconds before the operation should be retried. Some errors may indicate + // the client must take an alternate action - for those errors this field may indicate how long to wait + // before taking the alternate action. // +optional RetryAfterSeconds int32 `json:"retryAfterSeconds,omitempty" protobuf:"varint,5,opt,name=retryAfterSeconds"` } @@ -574,6 +626,15 @@ const ( // Status code 504 StatusReasonTimeout StatusReason = "Timeout" + // StatusReasonTooManyRequests means the server experienced too many requests within a + // given window and that the client must wait to perform the action again. A client may + // always retry the request that led to this error, although 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 429 + StatusReasonTooManyRequests StatusReason = "TooManyRequests" + // 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 @@ -656,10 +717,25 @@ const ( CauseTypeUnexpectedServerResponse CauseType = "UnexpectedServerResponse" ) +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// List holds a list of objects, which may not be known by the server. +type List struct { + TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of objects + Items []runtime.RawExtension `json:"items" protobuf:"bytes,2,rep,name=items"` +} + // 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 +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type APIVersions struct { TypeMeta `json:",inline"` // versions are the api versions that are available. @@ -674,6 +750,8 @@ type APIVersions struct { ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // APIGroupList is a list of APIGroup, to allow clients to discover the API at // /apis. type APIGroupList struct { @@ -682,6 +760,8 @@ type APIGroupList struct { Groups []APIGroup `json:"groups" protobuf:"bytes,1,rep,name=groups"` } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // APIGroup contains the name, the supported versions, and the preferred version // of a group. type APIGroup struct { @@ -733,6 +813,12 @@ type APIResource struct { SingularName string `json:"singularName" protobuf:"bytes,6,opt,name=singularName"` // namespaced indicates if a resource is namespaced or not. Namespaced bool `json:"namespaced" protobuf:"varint,2,opt,name=namespaced"` + // group is the preferred group of the resource. Empty implies the group of the containing resource list. + // For subresources, this may have a different value, for example: Scale". + Group string `json:"group,omitempty" protobuf:"bytes,8,opt,name=group"` + // version is the preferred version of the resource. Empty implies the version of the containing resource list + // For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)". + Version string `json:"version,omitempty" protobuf:"bytes,9,opt,name=version"` // 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"` // verbs is a list of supported kube verbs (this includes get, list, watch, create, @@ -754,6 +840,8 @@ func (vs Verbs) String() string { return fmt.Sprintf("%v", []string(vs)) } +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + // 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. @@ -822,7 +910,7 @@ type LabelSelectorRequirement struct { // +patchStrategy=merge 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. + // Valid operators are 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, diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go index 159164d7c9..49d2de1ef7 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go @@ -53,6 +53,8 @@ var map_APIResource = map[string]string{ "name": "name is the plural name of the resource.", "singularName": "singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.", "namespaced": "namespaced indicates if a resource is namespaced or not.", + "group": "group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\".", + "version": "version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\".", "kind": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", "verbs": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", "shortNames": "shortNames is a list of suggested short names of the resource.", @@ -157,7 +159,7 @@ func (LabelSelector) SwaggerDoc() map[string]string { 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.", + "operator": "operator represents a key's relationship to a set of values. Valid operators are 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.", } @@ -165,10 +167,21 @@ func (LabelSelectorRequirement) SwaggerDoc() map[string]string { return map_LabelSelectorRequirement } +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: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of objects", +} + +func (List) SwaggerDoc() map[string]string { + return map_List +} + 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.", + "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: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", + "continue": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.", } func (ListMeta) SwaggerDoc() map[string]string { @@ -183,6 +196,8 @@ var map_ListOptions = map[string]string{ "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. When specified 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 at least as fresh as given rv.", "timeoutSeconds": "Timeout for the list/watch call.", + "limit": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "continue": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server the server will respond with a 410 ResourceExpired error indicating the client must restart their list without the continue field. This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", } func (ListOptions) SwaggerDoc() map[string]string { @@ -295,7 +310,7 @@ var map_StatusDetails = map[string]string{ "kind": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "uid": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "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.", + "retryAfterSeconds": "If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.", } func (StatusDetails) SwaggerDoc() map[string]string { diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go index b12134501d..21aa9560e9 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go @@ -21,7 +21,7 @@ import ( "reflect" "testing" - "github.com/ugorji/go/codec" + jsoniter "github.com/json-iterator/go" ) func TestVerbsUgorjiMarshalJSON(t *testing.T) { @@ -58,7 +58,7 @@ func TestVerbsUgorjiUnmarshalJSON(t *testing.T) { for i, c := range cases { var result APIResource - if err := codec.NewDecoderBytes([]byte(c.input), new(codec.JsonHandle)).Decode(&result); err != nil { + if err := jsoniter.ConfigFastest.Unmarshal([]byte(c.input), &result); err != nil { t.Errorf("[%d] Failed to unmarshal input '%v': %v", i, c.input, err) } if !reflect.DeepEqual(result, c.result) { diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD index b6b0d2bb5d..9c2154a3aa 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,16 +10,19 @@ go_test( name = "go_default_test", srcs = ["unstructured_test.go"], library = ":go_default_library", - tags = ["automanaged"], + deps = ["//vendor/github.com/stretchr/testify/assert:go_default_library"], ) go_library( name = "go_default_library", - srcs = ["unstructured.go"], - tags = ["automanaged"], + srcs = [ + "unstructured.go", + "zz_generated.deepcopy.go", + ], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/conversion/unstructured:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -30,3 +31,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go index fed687e9bd..588230f409 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go @@ -43,6 +43,8 @@ import ( // type if you are dealing with objects that are not in the server meta v1 schema. // // TODO: make the serialization part of this type distinct from the field accessors. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:deepcopy-gen=true type Unstructured struct { // Object is a JSON compatible map with string, float, int, bool, []interface{}, or // map[string]interface{} @@ -69,6 +71,39 @@ func (obj *Unstructured) IsList() bool { } func (obj *UnstructuredList) IsList() bool { return true } +func (obj *Unstructured) EachListItem(fn func(runtime.Object) error) error { + if obj.Object == nil { + return fmt.Errorf("content is not a list") + } + field, ok := obj.Object["items"] + if !ok { + return fmt.Errorf("content is not a list") + } + items, ok := field.([]interface{}) + if !ok { + return nil + } + for _, item := range items { + child, ok := item.(map[string]interface{}) + if !ok { + return fmt.Errorf("items member is not an object") + } + if err := fn(&Unstructured{Object: child}); err != nil { + return err + } + } + return nil +} + +func (obj *UnstructuredList) EachListItem(fn func(runtime.Object) error) error { + for i := range obj.Items { + if err := fn(&obj.Items[i]); err != nil { + return err + } + } + return nil +} + func (obj *Unstructured) UnstructuredContent() map[string]interface{} { if obj.Object == nil { obj.Object = make(map[string]interface{}) @@ -110,6 +145,50 @@ func (u *Unstructured) UnmarshalJSON(b []byte) error { return err } +func deepCopyJSON(x interface{}) interface{} { + switch x := x.(type) { + case map[string]interface{}: + clone := make(map[string]interface{}, len(x)) + for k, v := range x { + clone[k] = deepCopyJSON(v) + } + return clone + case []interface{}: + clone := make([]interface{}, len(x)) + for i := range x { + clone[i] = deepCopyJSON(x[i]) + } + return clone + default: + // only non-pointer values (float64, int64, bool, string) are left. These can be copied by-value. + return x + } +} + +func (in *Unstructured) DeepCopy() *Unstructured { + if in == nil { + return nil + } + out := new(Unstructured) + *out = *in + out.Object = deepCopyJSON(in.Object).(map[string]interface{}) + return out +} + +func (in *UnstructuredList) DeepCopy() *UnstructuredList { + if in == nil { + return nil + } + out := new(UnstructuredList) + *out = *in + out.Object = deepCopyJSON(in.Object).(map[string]interface{}) + out.Items = make([]Unstructured, len(in.Items)) + for i := range in.Items { + in.Items[i].DeepCopyInto(&out.Items[i]) + } + return out +} + func getNestedField(obj map[string]interface{}, fields ...string) interface{} { var val interface{} = obj for _, field := range fields { @@ -136,10 +215,15 @@ func getNestedInt64(obj map[string]interface{}, fields ...string) int64 { } func getNestedInt64Pointer(obj map[string]interface{}, fields ...string) *int64 { - if str, ok := getNestedField(obj, fields...).(*int64); ok { - return str + nested := getNestedField(obj, fields...) + switch n := nested.(type) { + case int64: + return &n + case *int64: + return n + default: + return nil } - return nil } func getNestedSlice(obj map[string]interface{}, fields ...string) []string { @@ -384,6 +468,14 @@ func (u *Unstructured) SetSelfLink(selfLink string) { u.setNestedField(selfLink, "metadata", "selfLink") } +func (u *Unstructured) GetContinue() string { + return getNestedString(u.Object, "metadata", "continue") +} + +func (u *Unstructured) SetContinue(c string) { + u.setNestedField(c, "metadata", "continue") +} + func (u *Unstructured) GetCreationTimestamp() metav1.Time { var timestamp metav1.Time timestamp.UnmarshalQueryParameter(getNestedString(u.Object, "metadata", "creationTimestamp")) @@ -470,12 +562,15 @@ func (u *Unstructured) GetInitializers() *metav1.Initializers { } func (u *Unstructured) SetInitializers(initializers *metav1.Initializers) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } if initializers == nil { setNestedField(u.Object, nil, "metadata", "initializers") return } - out := make(map[string]interface{}) - if err := converter.ToUnstructured(initializers, &out); err != nil { + out, err := converter.ToUnstructured(initializers) + if err != nil { utilruntime.HandleError(fmt.Errorf("unable to retrieve initializers for object: %v", err)) } setNestedField(u.Object, out, "metadata", "initializers") @@ -500,6 +595,8 @@ func (u *Unstructured) SetClusterName(clusterName string) { // 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. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:deepcopy-gen=true type UnstructuredList struct { Object map[string]interface{} @@ -507,6 +604,8 @@ type UnstructuredList struct { Items []Unstructured `json:"items"` } +var _ metav1.ListInterface = &UnstructuredList{} + // MarshalJSON ensures that the unstructured list object produces proper // JSON when passed to Go's standard JSON library. func (u *UnstructuredList) MarshalJSON() ([]byte, error) { @@ -561,6 +660,14 @@ func (u *UnstructuredList) SetSelfLink(selfLink string) { u.setNestedField(selfLink, "metadata", "selfLink") } +func (u *UnstructuredList) GetContinue() string { + return getNestedString(u.Object, "metadata", "continue") +} + +func (u *UnstructuredList) SetContinue(c string) { + u.setNestedField(c, "metadata", "continue") +} + func (u *UnstructuredList) SetGroupVersionKind(gvk schema.GroupVersionKind) { u.SetAPIVersion(gvk.GroupVersion().String()) u.SetKind(gvk.Kind) @@ -611,9 +718,12 @@ func (unstructuredJSONScheme) Encode(obj runtime.Object, w io.Writer) error { 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) + listObj := make(map[string]interface{}, len(t.Object)+1) + for k, v := range t.Object { // Make a shallow copy + listObj[k] = v + } + listObj["items"] = items + return json.NewEncoder(w).Encode(listObj) case *runtime.Unknown: // TODO: Unstructured needs to deal with ContentType. _, err := w.Write(t.Raw) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go index 4869e7c0cf..51fc089a7d 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go @@ -16,7 +16,31 @@ limitations under the License. package unstructured -import "testing" +import ( + "io/ioutil" + "sync" + "testing" + + "github.com/stretchr/testify/assert" +) + +// TestCodecOfUnstructuredList tests that there are no data races in Encode(). +// i.e. that it does not mutate the object being encoded. +func TestCodecOfUnstructuredList(t *testing.T) { + var wg sync.WaitGroup + concurrency := 10 + list := UnstructuredList{ + Object: map[string]interface{}{}, + } + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + go func() { + defer wg.Done() + assert.NoError(t, UnstructuredJSONScheme.Encode(&list, ioutil.Discard)) + }() + } + wg.Wait() +} func TestUnstructuredList(t *testing.T) { list := &UnstructuredList{ diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go new file mode 100644 index 0000000000..248acf989b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/zz_generated.deepcopy.go @@ -0,0 +1,75 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 unstructured + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Unstructured).DeepCopyInto(out.(*Unstructured)) + return nil + }, InType: reflect.TypeOf(&Unstructured{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*UnstructuredList).DeepCopyInto(out.(*UnstructuredList)) + return nil + }, InType: reflect.TypeOf(&UnstructuredList{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Unstructured) DeepCopyInto(out *Unstructured) { + clone := in.DeepCopy() + *out = *clone + return +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Unstructured) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UnstructuredList) DeepCopyInto(out *UnstructuredList) { + clone := in.DeepCopy() + *out = *clone + return +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UnstructuredList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD index 64b5d1b14e..2544ce6e15 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,17 +10,28 @@ go_test( name = "go_default_test", srcs = ["validation_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], ) go_library( name = "go_default_library", srcs = ["validation.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go index f06f075bf7..26c5a0cdca 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go @@ -88,3 +88,5 @@ func ValidateDeleteOptions(options *metav1.DeleteOptions) field.ErrorList { } return allErrs } + +const UninitializedStatusUpdateErrorMsg string = `must not update status when the object is uninitialized` diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go index a645501a1a..b7ec503184 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go @@ -26,6 +26,8 @@ import ( // Event represents a single event to a watched resource. // // +protobuf=true +// +k8s:deepcopy-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type WatchEvent struct { Type string `json:"type" protobuf:"bytes,1,opt,name=type"` @@ -78,3 +80,10 @@ type InternalEvent watch.Event func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } func (e *WatchEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (e *InternalEvent) DeepCopyObject() runtime.Object { + if c := e.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go index 6fac96be40..c73e777b50 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go @@ -28,619 +28,1069 @@ import ( ) // GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { return []conversion.GeneratedDeepCopyFunc{ - {Fn: DeepCopy_v1_APIGroup, InType: reflect.TypeOf(&APIGroup{})}, - {Fn: DeepCopy_v1_APIGroupList, InType: reflect.TypeOf(&APIGroupList{})}, - {Fn: DeepCopy_v1_APIResource, InType: reflect.TypeOf(&APIResource{})}, - {Fn: DeepCopy_v1_APIResourceList, InType: reflect.TypeOf(&APIResourceList{})}, - {Fn: DeepCopy_v1_APIVersions, InType: reflect.TypeOf(&APIVersions{})}, - {Fn: DeepCopy_v1_DeleteOptions, InType: reflect.TypeOf(&DeleteOptions{})}, - {Fn: DeepCopy_v1_Duration, InType: reflect.TypeOf(&Duration{})}, - {Fn: DeepCopy_v1_ExportOptions, InType: reflect.TypeOf(&ExportOptions{})}, - {Fn: DeepCopy_v1_GetOptions, InType: reflect.TypeOf(&GetOptions{})}, - {Fn: DeepCopy_v1_GroupKind, InType: reflect.TypeOf(&GroupKind{})}, - {Fn: DeepCopy_v1_GroupResource, InType: reflect.TypeOf(&GroupResource{})}, - {Fn: DeepCopy_v1_GroupVersion, InType: reflect.TypeOf(&GroupVersion{})}, - {Fn: DeepCopy_v1_GroupVersionForDiscovery, InType: reflect.TypeOf(&GroupVersionForDiscovery{})}, - {Fn: DeepCopy_v1_GroupVersionKind, InType: reflect.TypeOf(&GroupVersionKind{})}, - {Fn: DeepCopy_v1_GroupVersionResource, InType: reflect.TypeOf(&GroupVersionResource{})}, - {Fn: DeepCopy_v1_Initializer, InType: reflect.TypeOf(&Initializer{})}, - {Fn: DeepCopy_v1_Initializers, InType: reflect.TypeOf(&Initializers{})}, - {Fn: DeepCopy_v1_InternalEvent, InType: reflect.TypeOf(&InternalEvent{})}, - {Fn: DeepCopy_v1_LabelSelector, InType: reflect.TypeOf(&LabelSelector{})}, - {Fn: DeepCopy_v1_LabelSelectorRequirement, InType: reflect.TypeOf(&LabelSelectorRequirement{})}, - {Fn: DeepCopy_v1_ListMeta, InType: reflect.TypeOf(&ListMeta{})}, - {Fn: DeepCopy_v1_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, - {Fn: DeepCopy_v1_MicroTime, InType: reflect.TypeOf(&MicroTime{})}, - {Fn: DeepCopy_v1_ObjectMeta, InType: reflect.TypeOf(&ObjectMeta{})}, - {Fn: DeepCopy_v1_OwnerReference, InType: reflect.TypeOf(&OwnerReference{})}, - {Fn: DeepCopy_v1_Patch, InType: reflect.TypeOf(&Patch{})}, - {Fn: DeepCopy_v1_Preconditions, InType: reflect.TypeOf(&Preconditions{})}, - {Fn: DeepCopy_v1_RootPaths, InType: reflect.TypeOf(&RootPaths{})}, - {Fn: DeepCopy_v1_ServerAddressByClientCIDR, InType: reflect.TypeOf(&ServerAddressByClientCIDR{})}, - {Fn: DeepCopy_v1_Status, InType: reflect.TypeOf(&Status{})}, - {Fn: DeepCopy_v1_StatusCause, InType: reflect.TypeOf(&StatusCause{})}, - {Fn: DeepCopy_v1_StatusDetails, InType: reflect.TypeOf(&StatusDetails{})}, - {Fn: DeepCopy_v1_Time, InType: reflect.TypeOf(&Time{})}, - {Fn: DeepCopy_v1_Timestamp, InType: reflect.TypeOf(&Timestamp{})}, - {Fn: DeepCopy_v1_TypeMeta, InType: reflect.TypeOf(&TypeMeta{})}, - {Fn: DeepCopy_v1_WatchEvent, InType: reflect.TypeOf(&WatchEvent{})}, - } -} - -// DeepCopy_v1_APIGroup is an autogenerated deepcopy function. -func DeepCopy_v1_APIGroup(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*APIGroup) - out := out.(*APIGroup) - *out = *in - if in.Versions != nil { - in, out := &in.Versions, &out.Versions - *out = make([]GroupVersionForDiscovery, len(*in)) - copy(*out, *in) - } - if in.ServerAddressByClientCIDRs != nil { - in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs - *out = make([]ServerAddressByClientCIDR, len(*in)) - copy(*out, *in) - } + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*APIGroup).DeepCopyInto(out.(*APIGroup)) + return nil + }, InType: reflect.TypeOf(&APIGroup{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*APIGroupList).DeepCopyInto(out.(*APIGroupList)) + return nil + }, InType: reflect.TypeOf(&APIGroupList{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*APIResource).DeepCopyInto(out.(*APIResource)) + return nil + }, InType: reflect.TypeOf(&APIResource{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*APIResourceList).DeepCopyInto(out.(*APIResourceList)) + return nil + }, InType: reflect.TypeOf(&APIResourceList{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*APIVersions).DeepCopyInto(out.(*APIVersions)) + return nil + }, InType: reflect.TypeOf(&APIVersions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*DeleteOptions).DeepCopyInto(out.(*DeleteOptions)) + return nil + }, InType: reflect.TypeOf(&DeleteOptions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Duration).DeepCopyInto(out.(*Duration)) + return nil + }, InType: reflect.TypeOf(&Duration{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExportOptions).DeepCopyInto(out.(*ExportOptions)) + return nil + }, InType: reflect.TypeOf(&ExportOptions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GetOptions).DeepCopyInto(out.(*GetOptions)) + return nil + }, InType: reflect.TypeOf(&GetOptions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GroupKind).DeepCopyInto(out.(*GroupKind)) + return nil + }, InType: reflect.TypeOf(&GroupKind{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GroupResource).DeepCopyInto(out.(*GroupResource)) + return nil + }, InType: reflect.TypeOf(&GroupResource{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GroupVersion).DeepCopyInto(out.(*GroupVersion)) + return nil + }, InType: reflect.TypeOf(&GroupVersion{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GroupVersionForDiscovery).DeepCopyInto(out.(*GroupVersionForDiscovery)) + return nil + }, InType: reflect.TypeOf(&GroupVersionForDiscovery{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GroupVersionKind).DeepCopyInto(out.(*GroupVersionKind)) + return nil + }, InType: reflect.TypeOf(&GroupVersionKind{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*GroupVersionResource).DeepCopyInto(out.(*GroupVersionResource)) + return nil + }, InType: reflect.TypeOf(&GroupVersionResource{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Initializer).DeepCopyInto(out.(*Initializer)) + return nil + }, InType: reflect.TypeOf(&Initializer{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Initializers).DeepCopyInto(out.(*Initializers)) + return nil + }, InType: reflect.TypeOf(&Initializers{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InternalEvent).DeepCopyInto(out.(*InternalEvent)) + return nil + }, InType: reflect.TypeOf(&InternalEvent{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LabelSelector).DeepCopyInto(out.(*LabelSelector)) + return nil + }, InType: reflect.TypeOf(&LabelSelector{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*LabelSelectorRequirement).DeepCopyInto(out.(*LabelSelectorRequirement)) + return nil + }, InType: reflect.TypeOf(&LabelSelectorRequirement{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*List).DeepCopyInto(out.(*List)) + return nil + }, InType: reflect.TypeOf(&List{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ListMeta).DeepCopyInto(out.(*ListMeta)) + return nil + }, InType: reflect.TypeOf(&ListMeta{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ListOptions).DeepCopyInto(out.(*ListOptions)) + return nil + }, InType: reflect.TypeOf(&ListOptions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*MicroTime).DeepCopyInto(out.(*MicroTime)) + return nil + }, InType: reflect.TypeOf(&MicroTime{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectMeta).DeepCopyInto(out.(*ObjectMeta)) + return nil + }, InType: reflect.TypeOf(&ObjectMeta{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*OwnerReference).DeepCopyInto(out.(*OwnerReference)) + return nil + }, InType: reflect.TypeOf(&OwnerReference{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Patch).DeepCopyInto(out.(*Patch)) + return nil + }, InType: reflect.TypeOf(&Patch{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Preconditions).DeepCopyInto(out.(*Preconditions)) + return nil + }, InType: reflect.TypeOf(&Preconditions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RootPaths).DeepCopyInto(out.(*RootPaths)) + return nil + }, InType: reflect.TypeOf(&RootPaths{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ServerAddressByClientCIDR).DeepCopyInto(out.(*ServerAddressByClientCIDR)) + return nil + }, InType: reflect.TypeOf(&ServerAddressByClientCIDR{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Status).DeepCopyInto(out.(*Status)) + return nil + }, InType: reflect.TypeOf(&Status{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatusCause).DeepCopyInto(out.(*StatusCause)) + return nil + }, InType: reflect.TypeOf(&StatusCause{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*StatusDetails).DeepCopyInto(out.(*StatusDetails)) + return nil + }, InType: reflect.TypeOf(&StatusDetails{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Time).DeepCopyInto(out.(*Time)) + return nil + }, InType: reflect.TypeOf(&Time{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Timestamp).DeepCopyInto(out.(*Timestamp)) + return nil + }, InType: reflect.TypeOf(&Timestamp{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*WatchEvent).DeepCopyInto(out.(*WatchEvent)) + return nil + }, InType: reflect.TypeOf(&WatchEvent{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIGroup) DeepCopyInto(out *APIGroup) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]GroupVersionForDiscovery, len(*in)) + copy(*out, *in) + } + out.PreferredVersion = in.PreferredVersion + if in.ServerAddressByClientCIDRs != nil { + in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs + *out = make([]ServerAddressByClientCIDR, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIGroup. +func (in *APIGroup) DeepCopy() *APIGroup { + if in == nil { return nil } + out := new(APIGroup) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_APIGroupList is an autogenerated deepcopy function. -func DeepCopy_v1_APIGroupList(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*APIGroupList) - out := out.(*APIGroupList) - *out = *in - if in.Groups != nil { - in, out := &in.Groups, &out.Groups - *out = make([]APIGroup, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*APIGroup) - } - } - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIGroup) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_APIResource is an autogenerated deepcopy function. -func DeepCopy_v1_APIResource(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*APIResource) - out := out.(*APIResource) - *out = *in - if in.Verbs != nil { - in, out := &in.Verbs, &out.Verbs - *out = make(Verbs, len(*in)) - copy(*out, *in) - } - if in.ShortNames != nil { - in, out := &in.ShortNames, &out.ShortNames - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Categories != nil { - in, out := &in.Categories, &out.Categories - *out = make([]string, len(*in)) - copy(*out, *in) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIGroupList) DeepCopyInto(out *APIGroupList) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]APIGroup, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIGroupList. +func (in *APIGroupList) DeepCopy() *APIGroupList { + if in == nil { return nil } + out := new(APIGroupList) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_APIResourceList is an autogenerated deepcopy function. -func DeepCopy_v1_APIResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*APIResourceList) - out := out.(*APIResourceList) - *out = *in - if in.APIResources != nil { - in, out := &in.APIResources, &out.APIResources - *out = make([]APIResource, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*APIResource) - } - } - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIGroupList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_APIVersions is an autogenerated deepcopy function. -func DeepCopy_v1_APIVersions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*APIVersions) - out := out.(*APIVersions) - *out = *in - if in.Versions != nil { - in, out := &in.Versions, &out.Versions - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.ServerAddressByClientCIDRs != nil { - in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs - *out = make([]ServerAddressByClientCIDR, len(*in)) - copy(*out, *in) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIResource) DeepCopyInto(out *APIResource) { + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make(Verbs, len(*in)) + copy(*out, *in) + } + if in.ShortNames != nil { + in, out := &in.ShortNames, &out.ShortNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIResource. +func (in *APIResource) DeepCopy() *APIResource { + if in == nil { + return nil + } + out := new(APIResource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIResourceList) DeepCopyInto(out *APIResourceList) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.APIResources != nil { + in, out := &in.APIResources, &out.APIResources + *out = make([]APIResource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIResourceList. +func (in *APIResourceList) DeepCopy() *APIResourceList { + if in == nil { + return nil + } + out := new(APIResourceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIResourceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIVersions) DeepCopyInto(out *APIVersions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ServerAddressByClientCIDRs != nil { + in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs + *out = make([]ServerAddressByClientCIDR, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIVersions. +func (in *APIVersions) DeepCopy() *APIVersions { + if in == nil { + return nil + } + out := new(APIVersions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *APIVersions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_DeleteOptions is an autogenerated deepcopy function. -func DeepCopy_v1_DeleteOptions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*DeleteOptions) - out := out.(*DeleteOptions) - *out = *in - if in.GracePeriodSeconds != nil { - in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DeleteOptions) DeepCopyInto(out *DeleteOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + if *in == nil { + *out = nil + } else { *out = new(int64) **out = **in } - if in.Preconditions != nil { - in, out := &in.Preconditions, &out.Preconditions - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - *out = newVal.(*Preconditions) - } + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + if *in == nil { + *out = nil + } else { + *out = new(Preconditions) + (*in).DeepCopyInto(*out) } - if in.OrphanDependents != nil { - in, out := &in.OrphanDependents, &out.OrphanDependents + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + if *in == nil { + *out = nil + } else { *out = new(bool) **out = **in } - if in.PropagationPolicy != nil { - in, out := &in.PropagationPolicy, &out.PropagationPolicy + } + if in.PropagationPolicy != nil { + in, out := &in.PropagationPolicy, &out.PropagationPolicy + if *in == nil { + *out = nil + } else { *out = new(DeletionPropagation) **out = **in } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeleteOptions. +func (in *DeleteOptions) DeepCopy() *DeleteOptions { + if in == nil { return nil } + out := new(DeleteOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DeleteOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Duration) DeepCopyInto(out *Duration) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Duration. +func (in *Duration) DeepCopy() *Duration { + if in == nil { + return nil + } + out := new(Duration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExportOptions) DeepCopyInto(out *ExportOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return } -// DeepCopy_v1_Duration is an autogenerated deepcopy function. -func DeepCopy_v1_Duration(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Duration) - out := out.(*Duration) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExportOptions. +func (in *ExportOptions) DeepCopy() *ExportOptions { + if in == nil { return nil } + out := new(ExportOptions) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_ExportOptions is an autogenerated deepcopy function. -func DeepCopy_v1_ExportOptions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ExportOptions) - out := out.(*ExportOptions) - *out = *in +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExportOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_GetOptions is an autogenerated deepcopy function. -func DeepCopy_v1_GetOptions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GetOptions) - out := out.(*GetOptions) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GetOptions) DeepCopyInto(out *GetOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GetOptions. +func (in *GetOptions) DeepCopy() *GetOptions { + if in == nil { return nil } + out := new(GetOptions) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_GroupKind is an autogenerated deepcopy function. -func DeepCopy_v1_GroupKind(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GroupKind) - out := out.(*GroupKind) - *out = *in +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *GetOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_GroupResource is an autogenerated deepcopy function. -func DeepCopy_v1_GroupResource(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GroupResource) - out := out.(*GroupResource) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupKind) DeepCopyInto(out *GroupKind) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupKind. +func (in *GroupKind) DeepCopy() *GroupKind { + if in == nil { return nil } + out := new(GroupKind) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_GroupVersion is an autogenerated deepcopy function. -func DeepCopy_v1_GroupVersion(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GroupVersion) - out := out.(*GroupVersion) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupResource) DeepCopyInto(out *GroupResource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupResource. +func (in *GroupResource) DeepCopy() *GroupResource { + if in == nil { return nil } + out := new(GroupResource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupVersion) DeepCopyInto(out *GroupVersion) { + *out = *in + return } -// DeepCopy_v1_GroupVersionForDiscovery is an autogenerated deepcopy function. -func DeepCopy_v1_GroupVersionForDiscovery(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GroupVersionForDiscovery) - out := out.(*GroupVersionForDiscovery) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupVersion. +func (in *GroupVersion) DeepCopy() *GroupVersion { + if in == nil { return nil } + out := new(GroupVersion) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupVersionForDiscovery) DeepCopyInto(out *GroupVersionForDiscovery) { + *out = *in + return } -// DeepCopy_v1_GroupVersionKind is an autogenerated deepcopy function. -func DeepCopy_v1_GroupVersionKind(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GroupVersionKind) - out := out.(*GroupVersionKind) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupVersionForDiscovery. +func (in *GroupVersionForDiscovery) DeepCopy() *GroupVersionForDiscovery { + if in == nil { return nil } + out := new(GroupVersionForDiscovery) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_GroupVersionResource is an autogenerated deepcopy function. -func DeepCopy_v1_GroupVersionResource(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*GroupVersionResource) - out := out.(*GroupVersionResource) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupVersionKind) DeepCopyInto(out *GroupVersionKind) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupVersionKind. +func (in *GroupVersionKind) DeepCopy() *GroupVersionKind { + if in == nil { return nil } + out := new(GroupVersionKind) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GroupVersionResource) DeepCopyInto(out *GroupVersionResource) { + *out = *in + return } -// DeepCopy_v1_Initializer is an autogenerated deepcopy function. -func DeepCopy_v1_Initializer(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Initializer) - out := out.(*Initializer) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupVersionResource. +func (in *GroupVersionResource) DeepCopy() *GroupVersionResource { + if in == nil { return nil } + out := new(GroupVersionResource) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_Initializers is an autogenerated deepcopy function. -func DeepCopy_v1_Initializers(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Initializers) - out := out.(*Initializers) - *out = *in - if in.Pending != nil { - in, out := &in.Pending, &out.Pending - *out = make([]Initializer, len(*in)) - copy(*out, *in) - } - if in.Result != nil { - in, out := &in.Result, &out.Result - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - *out = newVal.(*Status) - } - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Initializer) DeepCopyInto(out *Initializer) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Initializer. +func (in *Initializer) DeepCopy() *Initializer { + if in == nil { return nil } + out := new(Initializer) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_InternalEvent is an autogenerated deepcopy function. -func DeepCopy_v1_InternalEvent(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*InternalEvent) - out := out.(*InternalEvent) - *out = *in - // in.Object is kind 'Interface' - if in.Object != nil { - if newVal, err := c.DeepCopy(&in.Object); err != nil { - return err - } else { - out.Object = *newVal.(*runtime.Object) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Initializers) DeepCopyInto(out *Initializers) { + *out = *in + if in.Pending != nil { + in, out := &in.Pending, &out.Pending + *out = make([]Initializer, len(*in)) + copy(*out, *in) + } + if in.Result != nil { + in, out := &in.Result, &out.Result + if *in == nil { + *out = nil + } else { + *out = new(Status) + (*in).DeepCopyInto(*out) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Initializers. +func (in *Initializers) DeepCopy() *Initializers { + if in == nil { return nil } + out := new(Initializers) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InternalEvent) DeepCopyInto(out *InternalEvent) { + *out = *in + if in.Object == nil { + out.Object = nil + } else { + out.Object = in.Object.DeepCopyObject() + } + return } -// DeepCopy_v1_LabelSelector is an autogenerated deepcopy function. -func DeepCopy_v1_LabelSelector(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*LabelSelector) - out := out.(*LabelSelector) - *out = *in - if in.MatchLabels != nil { - in, out := &in.MatchLabels, &out.MatchLabels - *out = make(map[string]string) - for key, val := range *in { - (*out)[key] = val - } +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalEvent. +func (in *InternalEvent) DeepCopy() *InternalEvent { + if in == nil { + return nil + } + out := new(InternalEvent) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LabelSelector) DeepCopyInto(out *LabelSelector) { + *out = *in + if in.MatchLabels != nil { + in, out := &in.MatchLabels, &out.MatchLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val } - if in.MatchExpressions != nil { - in, out := &in.MatchExpressions, &out.MatchExpressions - *out = make([]LabelSelectorRequirement, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*LabelSelectorRequirement) - } - } + } + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelSelector. +func (in *LabelSelector) DeepCopy() *LabelSelector { + if in == nil { return nil } + out := new(LabelSelector) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LabelSelectorRequirement) DeepCopyInto(out *LabelSelectorRequirement) { + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } + return } -// DeepCopy_v1_LabelSelectorRequirement is an autogenerated deepcopy function. -func DeepCopy_v1_LabelSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*LabelSelectorRequirement) - out := out.(*LabelSelectorRequirement) - *out = *in - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = make([]string, len(*in)) - copy(*out, *in) +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelSelectorRequirement. +func (in *LabelSelectorRequirement) DeepCopy() *LabelSelectorRequirement { + if in == nil { + return nil + } + out := new(LabelSelectorRequirement) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *List) DeepCopyInto(out *List) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new List. +func (in *List) DeepCopy() *List { + if in == nil { return nil } + out := new(List) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_ListMeta is an autogenerated deepcopy function. -func DeepCopy_v1_ListMeta(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ListMeta) - out := out.(*ListMeta) - *out = *in +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *List) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_ListOptions is an autogenerated deepcopy function. -func DeepCopy_v1_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ListOptions) - out := out.(*ListOptions) - *out = *in - if in.TimeoutSeconds != nil { - in, out := &in.TimeoutSeconds, &out.TimeoutSeconds +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ListMeta) DeepCopyInto(out *ListMeta) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListMeta. +func (in *ListMeta) DeepCopy() *ListMeta { + if in == nil { + return nil + } + out := new(ListMeta) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ListOptions) DeepCopyInto(out *ListOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + if *in == nil { + *out = nil + } else { *out = new(int64) **out = **in } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListOptions. +func (in *ListOptions) DeepCopy() *ListOptions { + if in == nil { return nil } + out := new(ListOptions) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_MicroTime is an autogenerated deepcopy function. -func DeepCopy_v1_MicroTime(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*MicroTime) - out := out.(*MicroTime) - *out = in.DeepCopy() +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ListOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_ObjectMeta is an autogenerated deepcopy function. -func DeepCopy_v1_ObjectMeta(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ObjectMeta) - out := out.(*ObjectMeta) - *out = *in - out.CreationTimestamp = in.CreationTimestamp.DeepCopy() - if in.DeletionTimestamp != nil { - in, out := &in.DeletionTimestamp, &out.DeletionTimestamp +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MicroTime. +func (in *MicroTime) DeepCopy() *MicroTime { + if in == nil { + return nil + } + out := new(MicroTime) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) { + *out = *in + in.CreationTimestamp.DeepCopyInto(&out.CreationTimestamp) + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + if *in == nil { + *out = nil + } else { *out = new(Time) - **out = (*in).DeepCopy() + (*in).DeepCopyInto(*out) } - if in.DeletionGracePeriodSeconds != nil { - in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + if *in == nil { + *out = nil + } else { *out = new(int64) **out = **in } - if in.Labels != nil { - in, out := &in.Labels, &out.Labels - *out = make(map[string]string) - for key, val := range *in { - (*out)[key] = val - } - } - if in.Annotations != nil { - in, out := &in.Annotations, &out.Annotations - *out = make(map[string]string) - for key, val := range *in { - (*out)[key] = val - } + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val } - if in.OwnerReferences != nil { - in, out := &in.OwnerReferences, &out.OwnerReferences - *out = make([]OwnerReference, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*OwnerReference) - } - } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val } - if in.Initializers != nil { - in, out := &in.Initializers, &out.Initializers - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - *out = newVal.(*Initializers) - } + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]OwnerReference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } - if in.Finalizers != nil { - in, out := &in.Finalizers, &out.Finalizers - *out = make([]string, len(*in)) - copy(*out, *in) + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + if *in == nil { + *out = nil + } else { + *out = new(Initializers) + (*in).DeepCopyInto(*out) } + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMeta. +func (in *ObjectMeta) DeepCopy() *ObjectMeta { + if in == nil { return nil } + out := new(ObjectMeta) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_OwnerReference is an autogenerated deepcopy function. -func DeepCopy_v1_OwnerReference(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*OwnerReference) - out := out.(*OwnerReference) - *out = *in - if in.Controller != nil { - in, out := &in.Controller, &out.Controller +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OwnerReference) DeepCopyInto(out *OwnerReference) { + *out = *in + if in.Controller != nil { + in, out := &in.Controller, &out.Controller + if *in == nil { + *out = nil + } else { *out = new(bool) **out = **in } - if in.BlockOwnerDeletion != nil { - in, out := &in.BlockOwnerDeletion, &out.BlockOwnerDeletion + } + if in.BlockOwnerDeletion != nil { + in, out := &in.BlockOwnerDeletion, &out.BlockOwnerDeletion + if *in == nil { + *out = nil + } else { *out = new(bool) **out = **in } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OwnerReference. +func (in *OwnerReference) DeepCopy() *OwnerReference { + if in == nil { return nil } + out := new(OwnerReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Patch) DeepCopyInto(out *Patch) { + *out = *in + return } -// DeepCopy_v1_Patch is an autogenerated deepcopy function. -func DeepCopy_v1_Patch(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Patch) - out := out.(*Patch) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Patch. +func (in *Patch) DeepCopy() *Patch { + if in == nil { return nil } + out := new(Patch) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_Preconditions is an autogenerated deepcopy function. -func DeepCopy_v1_Preconditions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Preconditions) - out := out.(*Preconditions) - *out = *in - if in.UID != nil { - in, out := &in.UID, &out.UID +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Preconditions) DeepCopyInto(out *Preconditions) { + *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + if *in == nil { + *out = nil + } else { *out = new(types.UID) **out = **in } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Preconditions. +func (in *Preconditions) DeepCopy() *Preconditions { + if in == nil { return nil } + out := new(Preconditions) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_RootPaths is an autogenerated deepcopy function. -func DeepCopy_v1_RootPaths(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*RootPaths) - out := out.(*RootPaths) - *out = *in - if in.Paths != nil { - in, out := &in.Paths, &out.Paths - *out = make([]string, len(*in)) - copy(*out, *in) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RootPaths) DeepCopyInto(out *RootPaths) { + *out = *in + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootPaths. +func (in *RootPaths) DeepCopy() *RootPaths { + if in == nil { return nil } + out := new(RootPaths) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_ServerAddressByClientCIDR is an autogenerated deepcopy function. -func DeepCopy_v1_ServerAddressByClientCIDR(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*ServerAddressByClientCIDR) - out := out.(*ServerAddressByClientCIDR) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerAddressByClientCIDR) DeepCopyInto(out *ServerAddressByClientCIDR) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerAddressByClientCIDR. +func (in *ServerAddressByClientCIDR) DeepCopy() *ServerAddressByClientCIDR { + if in == nil { return nil } + out := new(ServerAddressByClientCIDR) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_Status is an autogenerated deepcopy function. -func DeepCopy_v1_Status(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Status) - out := out.(*Status) - *out = *in - if in.Details != nil { - in, out := &in.Details, &out.Details - if newVal, err := c.DeepCopy(*in); err != nil { - return err - } else { - *out = newVal.(*StatusDetails) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Status) DeepCopyInto(out *Status) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Details != nil { + in, out := &in.Details, &out.Details + if *in == nil { + *out = nil + } else { + *out = new(StatusDetails) + (*in).DeepCopyInto(*out) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Status. +func (in *Status) DeepCopy() *Status { + if in == nil { return nil } + out := new(Status) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_StatusCause is an autogenerated deepcopy function. -func DeepCopy_v1_StatusCause(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*StatusCause) - out := out.(*StatusCause) - *out = *in +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Status) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1_StatusDetails is an autogenerated deepcopy function. -func DeepCopy_v1_StatusDetails(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*StatusDetails) - out := out.(*StatusDetails) - *out = *in - if in.Causes != nil { - in, out := &in.Causes, &out.Causes - *out = make([]StatusCause, len(*in)) - copy(*out, *in) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatusCause) DeepCopyInto(out *StatusCause) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatusCause. +func (in *StatusCause) DeepCopy() *StatusCause { + if in == nil { + return nil + } + out := new(StatusCause) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StatusDetails) DeepCopyInto(out *StatusDetails) { + *out = *in + if in.Causes != nil { + in, out := &in.Causes, &out.Causes + *out = make([]StatusCause, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StatusDetails. +func (in *StatusDetails) DeepCopy() *StatusDetails { + if in == nil { return nil } + out := new(StatusDetails) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_Time is an autogenerated deepcopy function. -func DeepCopy_v1_Time(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Time) - out := out.(*Time) - *out = in.DeepCopy() +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Time. +func (in *Time) DeepCopy() *Time { + if in == nil { return nil } + out := new(Time) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_Timestamp is an autogenerated deepcopy function. -func DeepCopy_v1_Timestamp(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Timestamp) - out := out.(*Timestamp) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Timestamp) DeepCopyInto(out *Timestamp) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Timestamp. +func (in *Timestamp) DeepCopy() *Timestamp { + if in == nil { return nil } + out := new(Timestamp) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WatchEvent) DeepCopyInto(out *WatchEvent) { + *out = *in + in.Object.DeepCopyInto(&out.Object) + return } -// DeepCopy_v1_TypeMeta is an autogenerated deepcopy function. -func DeepCopy_v1_TypeMeta(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*TypeMeta) - out := out.(*TypeMeta) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WatchEvent. +func (in *WatchEvent) DeepCopy() *WatchEvent { + if in == nil { return nil } + out := new(WatchEvent) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1_WatchEvent is an autogenerated deepcopy function. -func DeepCopy_v1_WatchEvent(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*WatchEvent) - out := out.(*WatchEvent) - *out = *in - if newVal, err := c.DeepCopy(&in.Object); err != nil { - return err - } else { - out.Object = *newVal.(*runtime.RawExtension) - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *WatchEvent) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD index e60fab8879..e981dea096 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,6 +8,8 @@ load( go_library( name = "go_default_library", srcs = [ + "conversion.go", + "deepcopy.go", "doc.go", "generated.pb.go", "register.go", @@ -18,7 +18,6 @@ go_library( "zz_generated.deepcopy.go", "zz_generated.defaults.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -27,3 +26,22 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/conversion.go new file mode 100644 index 0000000000..f8ecc7c26c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/conversion.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/apimachinery/pkg/conversion" + +// Convert_Slice_string_To_v1alpha1_IncludeObjectPolicy allows converting a URL query parameter value +func Convert_Slice_string_To_v1alpha1_IncludeObjectPolicy(input *[]string, out *IncludeObjectPolicy, s conversion.Scope) error { + if len(*input) > 0 { + *out = IncludeObjectPolicy((*input)[0]) + } + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/deepcopy.go new file mode 100644 index 0000000000..ab6d048541 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/deepcopy.go @@ -0,0 +1,61 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 + +func (in *TableRow) DeepCopy() *TableRow { + if in == nil { + return nil + } + + out := new(TableRow) + + if in.Cells != nil { + out.Cells = make([]interface{}, len(in.Cells)) + for i := range in.Cells { + out.Cells[i] = deepCopyJSON(in.Cells[i]) + } + } + + if in.Conditions != nil { + out.Conditions = make([]TableRowCondition, len(in.Conditions)) + for i := range in.Conditions { + in.Conditions[i].DeepCopyInto(&out.Conditions[i]) + } + } + + in.Object.DeepCopyInto(&out.Object) + return out +} + +func deepCopyJSON(x interface{}) interface{} { + switch x := x.(type) { + case map[string]interface{}: + clone := make(map[string]interface{}, len(x)) + for k, v := range x { + clone[k] = deepCopyJSON(v) + } + return clone + case []interface{}: + clone := make([]interface{}, len(x)) + for i := range x { + clone[i] = deepCopyJSON(x[i]) + } + return clone + default: + return x + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto index 06833dbd96..f3aedd8014 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto @@ -31,6 +31,7 @@ option go_package = "v1alpha1"; // PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients // to get access to a particular ObjectMeta schema without knowing the details of the version. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object message PartialObjectMetadata { // Standard object's metadata. // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata @@ -39,12 +40,14 @@ message PartialObjectMetadata { } // PartialObjectMetadataList contains a list of objects containing only their metadata +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object message PartialObjectMetadataList { // items contains each of the included items. repeated PartialObjectMetadata items = 1; } // TableOptions are used when a Table is requested by the caller. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object message TableOptions { // includeObject decides whether to include each object along with its columnar information. // Specifying "None" will return no object, specifying "Object" will return the full object contents, and diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go index 89f08f3837..dab66bf088 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go @@ -46,6 +46,12 @@ func init() { &PartialObjectMetadataList{}, ) + if err := scheme.AddConversionFuncs( + Convert_Slice_string_To_v1alpha1_IncludeObjectPolicy, + ); err != nil { + panic(err) + } + // register manually. This usually goes through the SchemeBuilder, which we cannot use here. //scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...) } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go index ef99218061..9c3c2a35e4 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go @@ -28,6 +28,7 @@ import ( // Table is a tabular representation of a set of API resources. The server transforms the // object into a set of preferred columns for quickly reviewing the objects. // +protobuf=false +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type Table struct { v1.TypeMeta `json:",inline"` // Standard list metadata. @@ -129,6 +130,7 @@ const ( ) // TableOptions are used when a Table is requested by the caller. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type TableOptions struct { v1.TypeMeta `json:",inline"` // includeObject decides whether to include each object along with its columnar information. @@ -140,6 +142,7 @@ type TableOptions struct { // PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients // to get access to a particular ObjectMeta schema without knowing the details of the version. +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type PartialObjectMetadata struct { v1.TypeMeta `json:",inline"` // Standard object's metadata. @@ -149,6 +152,7 @@ type PartialObjectMetadata struct { } // PartialObjectMetadataList contains a list of objects containing only their metadata +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object type PartialObjectMetadataList struct { v1.TypeMeta `json:",inline"` diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go index ef8a117df8..043456cdb1 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go @@ -21,144 +21,212 @@ limitations under the License. package v1alpha1 import ( - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" reflect "reflect" ) // GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { return []conversion.GeneratedDeepCopyFunc{ - {Fn: DeepCopy_v1alpha1_PartialObjectMetadata, InType: reflect.TypeOf(&PartialObjectMetadata{})}, - {Fn: DeepCopy_v1alpha1_PartialObjectMetadataList, InType: reflect.TypeOf(&PartialObjectMetadataList{})}, - {Fn: DeepCopy_v1alpha1_Table, InType: reflect.TypeOf(&Table{})}, - {Fn: DeepCopy_v1alpha1_TableColumnDefinition, InType: reflect.TypeOf(&TableColumnDefinition{})}, - {Fn: DeepCopy_v1alpha1_TableOptions, InType: reflect.TypeOf(&TableOptions{})}, - {Fn: DeepCopy_v1alpha1_TableRow, InType: reflect.TypeOf(&TableRow{})}, - {Fn: DeepCopy_v1alpha1_TableRowCondition, InType: reflect.TypeOf(&TableRowCondition{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PartialObjectMetadata).DeepCopyInto(out.(*PartialObjectMetadata)) + return nil + }, InType: reflect.TypeOf(&PartialObjectMetadata{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*PartialObjectMetadataList).DeepCopyInto(out.(*PartialObjectMetadataList)) + return nil + }, InType: reflect.TypeOf(&PartialObjectMetadataList{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Table).DeepCopyInto(out.(*Table)) + return nil + }, InType: reflect.TypeOf(&Table{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TableColumnDefinition).DeepCopyInto(out.(*TableColumnDefinition)) + return nil + }, InType: reflect.TypeOf(&TableColumnDefinition{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TableOptions).DeepCopyInto(out.(*TableOptions)) + return nil + }, InType: reflect.TypeOf(&TableOptions{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TableRow).DeepCopyInto(out.(*TableRow)) + return nil + }, InType: reflect.TypeOf(&TableRow{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TableRowCondition).DeepCopyInto(out.(*TableRowCondition)) + return nil + }, InType: reflect.TypeOf(&TableRowCondition{})}, } } -// DeepCopy_v1alpha1_PartialObjectMetadata is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_PartialObjectMetadata(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*PartialObjectMetadata) - out := out.(*PartialObjectMetadata) - *out = *in - if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { - return err - } else { - out.ObjectMeta = *newVal.(*v1.ObjectMeta) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PartialObjectMetadata) DeepCopyInto(out *PartialObjectMetadata) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PartialObjectMetadata. +func (in *PartialObjectMetadata) DeepCopy() *PartialObjectMetadata { + if in == nil { return nil } + out := new(PartialObjectMetadata) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1alpha1_PartialObjectMetadataList is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_PartialObjectMetadataList(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*PartialObjectMetadataList) - out := out.(*PartialObjectMetadataList) - *out = *in - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]*PartialObjectMetadata, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(**PartialObjectMetadata) - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PartialObjectMetadata) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PartialObjectMetadataList) DeepCopyInto(out *PartialObjectMetadataList) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]*PartialObjectMetadata, len(*in)) + for i := range *in { + if (*in)[i] == nil { + (*out)[i] = nil + } else { + (*out)[i] = new(PartialObjectMetadata) + (*in)[i].DeepCopyInto((*out)[i]) } } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PartialObjectMetadataList. +func (in *PartialObjectMetadataList) DeepCopy() *PartialObjectMetadataList { + if in == nil { return nil } + out := new(PartialObjectMetadataList) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1alpha1_Table is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_Table(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Table) - out := out.(*Table) - *out = *in - if in.ColumnDefinitions != nil { - in, out := &in.ColumnDefinitions, &out.ColumnDefinitions - *out = make([]TableColumnDefinition, len(*in)) - copy(*out, *in) - } - if in.Rows != nil { - in, out := &in.Rows, &out.Rows - *out = make([]TableRow, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*TableRow) - } - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PartialObjectMetadataList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Table) DeepCopyInto(out *Table) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.ColumnDefinitions != nil { + in, out := &in.ColumnDefinitions, &out.ColumnDefinitions + *out = make([]TableColumnDefinition, len(*in)) + copy(*out, *in) + } + if in.Rows != nil { + in, out := &in.Rows, &out.Rows + *out = make([]TableRow, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Table. +func (in *Table) DeepCopy() *Table { + if in == nil { return nil } + out := new(Table) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1alpha1_TableColumnDefinition is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_TableColumnDefinition(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*TableColumnDefinition) - out := out.(*TableColumnDefinition) - *out = *in +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Table) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1alpha1_TableOptions is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_TableOptions(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*TableOptions) - out := out.(*TableOptions) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TableColumnDefinition) DeepCopyInto(out *TableColumnDefinition) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TableColumnDefinition. +func (in *TableColumnDefinition) DeepCopy() *TableColumnDefinition { + if in == nil { return nil } + out := new(TableColumnDefinition) + in.DeepCopyInto(out) + return out } -// DeepCopy_v1alpha1_TableRow is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_TableRow(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*TableRow) - out := out.(*TableRow) - *out = *in - if in.Cells != nil { - in, out := &in.Cells, &out.Cells - *out = make([]interface{}, len(*in)) - for i := range *in { - if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { - return err - } else { - (*out)[i] = *newVal.(*interface{}) - } - } - } - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]TableRowCondition, len(*in)) - copy(*out, *in) - } - if newVal, err := c.DeepCopy(&in.Object); err != nil { - return err - } else { - out.Object = *newVal.(*runtime.RawExtension) - } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TableOptions) DeepCopyInto(out *TableOptions) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TableOptions. +func (in *TableOptions) DeepCopy() *TableOptions { + if in == nil { + return nil + } + out := new(TableOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TableOptions) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } -// DeepCopy_v1alpha1_TableRowCondition is an autogenerated deepcopy function. -func DeepCopy_v1alpha1_TableRowCondition(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*TableRowCondition) - out := out.(*TableRowCondition) - *out = *in +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TableRow) DeepCopyInto(out *TableRow) { + clone := in.DeepCopy() + *out = *clone + return +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TableRowCondition) DeepCopyInto(out *TableRowCondition) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TableRowCondition. +func (in *TableRowCondition) DeepCopy() *TableRowCondition { + if in == nil { return nil } + out := new(TableRowCondition) + in.DeepCopyInto(out) + return out } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD new file mode 100644 index 0000000000..33b3235a2e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/BUILD @@ -0,0 +1,40 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/install:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/apis/testapigroup/v1:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go new file mode 100644 index 0000000000..f8c455eecb --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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=testapigroup.apimachinery.k8s.io +// +// package testapigroup contains an testapigroup API used to demonstrate how to create api groups. Moreover, this is +// used within tests. +package testapigroup // import "k8s.io/apimachinery/pkg/apis/testapigroup" diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer/BUILD new file mode 100644 index 0000000000..e54e95d843 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["fuzzer.go"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer/fuzzer.go new file mode 100644 index 0000000000..a6b93b0379 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer/fuzzer.go @@ -0,0 +1,99 @@ +/* +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 fuzzer + +import ( + "fmt" + + "github.com/google/gofuzz" + + apitesting "k8s.io/apimachinery/pkg/api/testing" + "k8s.io/apimachinery/pkg/api/testing/fuzzer" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" + "k8s.io/apimachinery/pkg/runtime" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// overrideMetaFuncs override some generic fuzzer funcs from k8s.io/apimachinery in order to have more realistic +// values in a Kubernetes context. +func overrideMetaFuncs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(j *runtime.Object, c fuzz.Continue) { + // TODO: uncomment when round trip starts from a versioned object + if true { //c.RandBool() { + *j = &runtime.Unknown{ + // We do not set TypeMeta here because it is not carried through a round trip + Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`), + ContentType: runtime.ContentTypeJSON, + } + } else { + types := []runtime.Object{&testapigroup.Carp{}} + t := types[c.Rand.Intn(len(types))] + c.Fuzz(t) + *j = t + } + }, + func(r *runtime.RawExtension, c fuzz.Continue) { + // Pick an arbitrary type and fuzz it + types := []runtime.Object{&testapigroup.Carp{}} + obj := types[c.Rand.Intn(len(types))] + c.Fuzz(obj) + + // Convert the object to raw bytes + bytes, err := runtime.Encode(apitesting.TestCodec(codecs, v1.SchemeGroupVersion), obj) + if err != nil { + panic(fmt.Sprintf("Failed to encode object: %v", err)) + } + + // Set the bytes field on the RawExtension + r.Raw = bytes + }, + } +} + +func testapigroupFuncs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(s *testapigroup.CarpSpec, c fuzz.Continue) { + c.FuzzNoCustom(s) + // has a default value + ttl := int64(30) + if c.RandBool() { + ttl = int64(c.Uint32()) + } + s.TerminationGracePeriodSeconds = &ttl + + if s.SchedulerName == "" { + s.SchedulerName = "default-scheduler" + } + }, + func(j *testapigroup.CarpPhase, c fuzz.Continue) { + statuses := []testapigroup.CarpPhase{"Pending", "Running", "Succeeded", "Failed", "Unknown"} + *j = statuses[c.Rand.Intn(len(statuses))] + }, + func(rp *testapigroup.RestartPolicy, c fuzz.Continue) { + policies := []testapigroup.RestartPolicy{"Always", "Never", "OnFailure"} + *rp = policies[c.Rand.Intn(len(policies))] + }, + } +} + +// Funcs returns the fuzzer functions for the testapigroup. +var Funcs = fuzzer.MergeFuzzerFuncs( + overrideMetaFuncs, + testapigroupFuncs, +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/BUILD new file mode 100644 index 0000000000..c2abc2280b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/BUILD @@ -0,0 +1,42 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + ], +) + +go_test( + name = "go_default_test", + srcs = ["roundtrip_test.go"], + library = ":go_default_library", + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/install.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/install.go new file mode 100644 index 0000000000..c7ada70f91 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/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/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: testapigroup.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version}, + AddInternalObjectsToScheme: testapigroup.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/roundtrip_test.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/roundtrip_test.go new file mode 100644 index 0000000000..da1a9c8ad9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/install/roundtrip_test.go @@ -0,0 +1,28 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 + +import ( + "testing" + + "k8s.io/apimachinery/pkg/api/testing/roundtrip" + testapigroupfuzzer "k8s.io/apimachinery/pkg/apis/testapigroup/fuzzer" +) + +func TestRoundTrip(t *testing.T) { + roundtrip.RoundTripTestForAPIGroup(t, Install, testapigroupfuzzer.Funcs) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/register.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/register.go new file mode 100644 index 0000000000..cbf628fc78 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/register.go @@ -0,0 +1,51 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testapigroup + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package +const GroupName = "testapigroup.apimachinery.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Carp{}, + ) + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/types.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/types.go new file mode 100644 index 0000000000..25bd0eb9d9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/types.go @@ -0,0 +1,138 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testapigroup + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type ( + ConditionStatus string + CarpConditionType string + CarpPhase string + RestartPolicy string +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Carp is a collection of containers, used as either input (create, update) or as output (list, get). +type Carp struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the behavior of a carp. + // +optional + Spec CarpSpec + + // Status represents the current information about a carp. This data may not be up + // to date. + // +optional + Status CarpStatus +} + +// CarpStatus represents information about the status of a carp. Status may trail the actual +// state of a system. +type CarpStatus struct { + // +optional + Phase CarpPhase + // +optional + Conditions []CarpCondition + // A human readable message indicating details about why the carp is in this state. + // +optional + Message string + // A brief CamelCase message indicating details about why the carp is in this state. e.g. 'OutOfDisk' + // +optional + Reason string + + // +optional + HostIP string + // +optional + CarpIP string + + // Date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the carp. + // +optional + StartTime *metav1.Time +} + +type CarpCondition struct { + Type CarpConditionType + Status ConditionStatus + // +optional + LastProbeTime metav1.Time + // +optional + LastTransitionTime metav1.Time + // +optional + Reason string + // +optional + Message string +} + +// CarpSpec is a description of a carp +type CarpSpec struct { + // +optional + RestartPolicy RestartPolicy + // Optional duration in seconds the carp 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 carp 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. + // +optional + TerminationGracePeriodSeconds *int64 + // Optional duration in seconds relative to the StartTime that the carp may be active on a node + // before the system actively tries to terminate the carp; value must be positive integer + // +optional + ActiveDeadlineSeconds *int64 + // NodeSelector is a selector which must be true for the carp to fit on a node + // +optional + NodeSelector map[string]string + + // ServiceAccountName is the name of the ServiceAccount to use to run this carp + // The carp will be allowed to use secrets referenced by the ServiceAccount + ServiceAccountName string + + // NodeName is a request to schedule this carp onto a specific node. If it is non-empty, + // the scheduler simply schedules this carp onto that node, assuming that it fits resource + // requirements. + // +optional + NodeName string + // Specifies the hostname of the Carp. + // If not specified, the carp's hostname will be set to a system-defined value. + // +optional + Hostname string + // If specified, the fully qualified Carp hostname will be "...svc.". + // If not specified, the carp will not have a domainname at all. + // +optional + Subdomain string + // If specified, the carp will be dispatched by specified scheduler. + // If not specified, the carp will be dispatched by default scheduler. + // +optional + SchedulerName string +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CarpList is a list of Carps. +type CarpList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Carp +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/BUILD new file mode 100644 index 0000000000..c54bf4e280 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/BUILD @@ -0,0 +1,50 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/conversion.go new file mode 100644 index 0000000000..3e8448f4c5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions here. Currently there are none. + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/defaults.go new file mode 100644 index 0000000000..436ccde296 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/defaults.go @@ -0,0 +1,26 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + // return RegisterDefaults(scheme) + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go new file mode 100644 index 0000000000..9f935b3d4b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/apimachinery/pkg/apis/testapigroup +// +k8s:openapi-gen=false +// +k8s:defaulter-gen=TypeMeta + +// +groupName=testapigroup.apimachinery.k8s.io +package v1 // import "k8s.io/apimachinery/pkg/apis/testapigroup/v1" diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.pb.go new file mode 100644 index 0000000000..c3c1751b2c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.pb.go @@ -0,0 +1,2009 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.proto + + It has these top-level messages: + Carp + CarpCondition + CarpList + CarpSpec + CarpStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +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. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *Carp) Reset() { *m = Carp{} } +func (*Carp) ProtoMessage() {} +func (*Carp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *CarpCondition) Reset() { *m = CarpCondition{} } +func (*CarpCondition) ProtoMessage() {} +func (*CarpCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *CarpList) Reset() { *m = CarpList{} } +func (*CarpList) ProtoMessage() {} +func (*CarpList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *CarpSpec) Reset() { *m = CarpSpec{} } +func (*CarpSpec) ProtoMessage() {} +func (*CarpSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *CarpStatus) Reset() { *m = CarpStatus{} } +func (*CarpStatus) ProtoMessage() {} +func (*CarpStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func init() { + proto.RegisterType((*Carp)(nil), "k8s.io.apimachinery.pkg.apis.testapigroup.v1.Carp") + proto.RegisterType((*CarpCondition)(nil), "k8s.io.apimachinery.pkg.apis.testapigroup.v1.CarpCondition") + proto.RegisterType((*CarpList)(nil), "k8s.io.apimachinery.pkg.apis.testapigroup.v1.CarpList") + proto.RegisterType((*CarpSpec)(nil), "k8s.io.apimachinery.pkg.apis.testapigroup.v1.CarpSpec") + proto.RegisterType((*CarpStatus)(nil), "k8s.io.apimachinery.pkg.apis.testapigroup.v1.CarpStatus") +} +func (m *Carp) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Carp) 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 *CarpCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CarpCondition) 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 *CarpList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CarpList) 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 *CarpSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CarpSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + 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)) + } + if len(m.NodeSelector) > 0 { + keysForNodeSelector := make([]string, 0, len(m.NodeSelector)) + for k := range m.NodeSelector { + keysForNodeSelector = append(keysForNodeSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForNodeSelector) + for _, k := range keysForNodeSelector { + dAtA[i] = 0x3a + i++ + v := m.NodeSelector[string(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++ + 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) + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SchedulerName))) + i += copy(dAtA[i:], m.SchedulerName) + return i, nil +} + +func (m *CarpStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CarpStatus) 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.CarpIP))) + i += copy(dAtA[i:], m.CarpIP) + if m.StartTime != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StartTime.Size())) + n7, err := m.StartTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + 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 *Carp) 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 *CarpCondition) 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 *CarpList) 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 *CarpSpec) Size() (n int) { + var l int + _ = 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)) + } + 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 + l = len(m.Hostname) + n += 2 + l + sovGenerated(uint64(l)) + l = len(m.Subdomain) + n += 2 + l + sovGenerated(uint64(l)) + l = len(m.SchedulerName) + n += 2 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CarpStatus) 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.CarpIP) + n += 1 + l + sovGenerated(uint64(l)) + if m.StartTime != nil { + l = m.StartTime.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 *Carp) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Carp{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CarpSpec", "CarpSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CarpStatus", "CarpStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CarpCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CarpCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *CarpList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CarpList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Carp", "Carp", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CarpSpec) 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{`&CarpSpec{`, + `RestartPolicy:` + fmt.Sprintf("%v", this.RestartPolicy) + `,`, + `TerminationGracePeriodSeconds:` + valueToStringGenerated(this.TerminationGracePeriodSeconds) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `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) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `Subdomain:` + fmt.Sprintf("%v", this.Subdomain) + `,`, + `SchedulerName:` + fmt.Sprintf("%v", this.SchedulerName) + `,`, + `}`, + }, "") + return s +} +func (this *CarpStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CarpStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "CarpCondition", "CarpCondition", 1), `&`, ``, 1) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `HostIP:` + fmt.Sprintf("%v", this.HostIP) + `,`, + `CarpIP:` + fmt.Sprintf("%v", this.CarpIP) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.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 *Carp) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Carp: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Carp: 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 *CarpCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CarpCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CarpCondition: 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 = CarpConditionType(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 *CarpList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CarpList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CarpList: 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, Carp{}) + 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 *CarpSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CarpSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CarpSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + 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 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 + if m.NodeSelector == nil { + m.NodeSelector = make(map[string]string) + } + if iNdEx < postIndex { + 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 + m.NodeSelector[mapkey] = mapvalue + } else { + var mapvalue 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 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 + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SchedulerName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SchedulerName = 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 *CarpStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CarpStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CarpStatus: 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 = CarpPhase(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, CarpCondition{}) + 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 CarpIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CarpIP = 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_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.StartTime.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") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1065 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xcd, 0x6e, 0xdb, 0x46, + 0x10, 0xb6, 0x2c, 0xcb, 0x92, 0xd6, 0x56, 0x62, 0x6f, 0x62, 0x80, 0x31, 0x10, 0xc9, 0x71, 0x0b, + 0xc3, 0x29, 0x1a, 0xb2, 0x76, 0xd3, 0x22, 0x6d, 0x0f, 0x41, 0x68, 0x17, 0xb5, 0x0b, 0xff, 0x10, + 0x2b, 0x03, 0x01, 0x8a, 0x1e, 0xba, 0x22, 0x27, 0x32, 0x2b, 0x91, 0x4b, 0xec, 0xae, 0xd4, 0xea, + 0xd6, 0x47, 0x68, 0x1f, 0xa0, 0x4f, 0xd1, 0x43, 0x81, 0x3e, 0x81, 0x8f, 0x39, 0xe6, 0x24, 0xd4, + 0xea, 0x5b, 0xf8, 0x54, 0xec, 0xf2, 0x47, 0xa2, 0xe5, 0x38, 0xf2, 0x6d, 0x77, 0xe6, 0xfb, 0xbe, + 0x19, 0xee, 0x0c, 0x67, 0xd0, 0x71, 0xe7, 0x85, 0x30, 0x7d, 0x66, 0x75, 0x7a, 0x2d, 0xe0, 0x21, + 0x48, 0x10, 0x56, 0x1f, 0x42, 0x8f, 0x71, 0x2b, 0x71, 0xd0, 0xc8, 0x17, 0xc0, 0xfb, 0xc0, 0xad, + 0xa8, 0xd3, 0xd6, 0x37, 0x0b, 0x7e, 0xa5, 0x41, 0xd4, 0x05, 0xab, 0xbf, 0x63, 0xb5, 0x21, 0x04, + 0x4e, 0x25, 0x78, 0x66, 0xc4, 0x99, 0x64, 0xf8, 0xe3, 0x98, 0x65, 0x66, 0x2c, 0x33, 0xea, 0xb4, + 0xf5, 0xcd, 0x4c, 0x58, 0x66, 0x7f, 0x67, 0xfd, 0x59, 0xdb, 0x97, 0xe7, 0xbd, 0x96, 0xe9, 0xb2, + 0xc0, 0x6a, 0xb3, 0x36, 0xb3, 0x34, 0xb9, 0xd5, 0x7b, 0xa3, 0x6f, 0xfa, 0xa2, 0x4f, 0xb1, 0xe8, + 0xfa, 0xf3, 0x71, 0x2a, 0x01, 0x75, 0xcf, 0xfd, 0x10, 0xf8, 0x60, 0x9c, 0x4d, 0x00, 0x92, 0xde, + 0x90, 0xca, 0xba, 0xf5, 0x3e, 0x16, 0xef, 0x85, 0xd2, 0x0f, 0x60, 0x8a, 0xf0, 0xe5, 0x87, 0x08, + 0xc2, 0x3d, 0x87, 0x80, 0x4e, 0xf1, 0x3e, 0x7f, 0x1f, 0xaf, 0x27, 0xfd, 0xae, 0xe5, 0x87, 0x52, + 0x48, 0x7e, 0x9d, 0xb4, 0xf9, 0xc7, 0x3c, 0x2a, 0x3a, 0xcc, 0xc3, 0x3f, 0xa1, 0x8a, 0xfa, 0x00, + 0x8f, 0x4a, 0x6a, 0x14, 0x36, 0x0a, 0xdb, 0x4b, 0xbb, 0x9f, 0x99, 0xe3, 0x37, 0xcc, 0xf4, 0xc6, + 0xcf, 0xa8, 0xd0, 0x66, 0x7f, 0xc7, 0x3c, 0x6d, 0xfd, 0x0c, 0xae, 0x3c, 0x06, 0x49, 0x6d, 0x7c, + 0x31, 0x6c, 0xcc, 0x8d, 0x86, 0x0d, 0x34, 0xb6, 0x91, 0x4c, 0x15, 0x9f, 0xa2, 0x05, 0x11, 0x81, + 0x6b, 0xcc, 0x6b, 0xf5, 0x67, 0xe6, 0x2c, 0x15, 0x32, 0x1d, 0xe6, 0x35, 0x23, 0x70, 0xed, 0xe5, + 0x44, 0x7a, 0x41, 0xdd, 0x88, 0x16, 0xc2, 0xaf, 0xd1, 0xa2, 0x90, 0x54, 0xf6, 0x84, 0x51, 0xd4, + 0x92, 0xd6, 0xec, 0x92, 0x9a, 0x66, 0xdf, 0x4b, 0x44, 0x17, 0xe3, 0x3b, 0x49, 0xe4, 0x36, 0xff, + 0x2a, 0xa2, 0x65, 0x87, 0x79, 0x7b, 0x2c, 0xf4, 0x7c, 0xe9, 0xb3, 0x10, 0x3f, 0x47, 0x0b, 0x72, + 0x10, 0x81, 0x7e, 0x98, 0xaa, 0xbd, 0x91, 0xe6, 0x72, 0x36, 0x88, 0xe0, 0x6a, 0xd8, 0x58, 0x99, + 0xc4, 0x2a, 0x1b, 0xd1, 0x68, 0xfc, 0x55, 0x96, 0xdf, 0xbc, 0xe6, 0x3d, 0xc9, 0x87, 0xbb, 0x1a, + 0x36, 0xee, 0x67, 0xb4, 0x7c, 0x06, 0xb8, 0x8d, 0x6a, 0x5d, 0x2a, 0xa4, 0xc3, 0x59, 0x0b, 0xce, + 0xfc, 0x00, 0x92, 0x2f, 0xfc, 0x64, 0xb6, 0x92, 0x28, 0x86, 0xbd, 0x96, 0x44, 0xab, 0x1d, 0x4d, + 0x0a, 0x91, 0xbc, 0x2e, 0xee, 0x23, 0xac, 0x0c, 0x67, 0x9c, 0x86, 0x22, 0xce, 0x5f, 0x45, 0x5b, + 0xb8, 0x73, 0xb4, 0xf5, 0x24, 0x1a, 0x3e, 0x9a, 0x52, 0x23, 0x37, 0x44, 0xc0, 0x5b, 0x68, 0x91, + 0x03, 0x15, 0x2c, 0x34, 0x4a, 0xfa, 0x6d, 0xb2, 0x52, 0x10, 0x6d, 0x25, 0x89, 0x17, 0x3f, 0x45, + 0xe5, 0x00, 0x84, 0xa0, 0x6d, 0x30, 0x16, 0x35, 0xf0, 0x7e, 0x02, 0x2c, 0x1f, 0xc7, 0x66, 0x92, + 0xfa, 0x37, 0xff, 0x2e, 0xa0, 0xb2, 0xc3, 0xbc, 0x23, 0x5f, 0x48, 0xfc, 0xe3, 0x54, 0x37, 0x9b, + 0xb3, 0x7d, 0x8c, 0x62, 0xeb, 0x5e, 0x5e, 0x49, 0xe2, 0x54, 0x52, 0xcb, 0x44, 0x27, 0x9f, 0xa0, + 0x92, 0x2f, 0x21, 0x50, 0x75, 0x2d, 0x6e, 0x2f, 0xed, 0x3e, 0x9d, 0xb9, 0xef, 0xec, 0x5a, 0xa2, + 0x5a, 0x3a, 0x54, 0x7c, 0x12, 0xcb, 0x6c, 0xfe, 0x53, 0xd6, 0x99, 0xab, 0xd6, 0xc6, 0x47, 0xa8, + 0xc6, 0x41, 0x48, 0xca, 0xa5, 0xc3, 0xba, 0xbe, 0x3b, 0xd0, 0x95, 0xaf, 0xda, 0x5b, 0x69, 0x35, + 0xc9, 0xa4, 0xf3, 0xea, 0xba, 0x81, 0xe4, 0xc9, 0xb8, 0x8d, 0x1e, 0x4b, 0xe0, 0x81, 0x1f, 0x52, + 0xf5, 0xf2, 0xdf, 0x71, 0xea, 0x82, 0x03, 0xdc, 0x67, 0x5e, 0x13, 0x5c, 0x16, 0x7a, 0x42, 0x57, + 0xba, 0x68, 0x3f, 0x19, 0x0d, 0x1b, 0x8f, 0xcf, 0x6e, 0x03, 0x92, 0xdb, 0x75, 0xf0, 0x29, 0x5a, + 0xa3, 0xae, 0xf4, 0xfb, 0xb0, 0x0f, 0xd4, 0xeb, 0xfa, 0x21, 0xa4, 0x01, 0x4a, 0x3a, 0xc0, 0xa3, + 0xd1, 0xb0, 0xb1, 0xf6, 0xea, 0x26, 0x00, 0xb9, 0x99, 0x87, 0x07, 0x68, 0x39, 0x64, 0x1e, 0x34, + 0xa1, 0x0b, 0xae, 0x64, 0xdc, 0x28, 0xeb, 0xa7, 0x7e, 0x79, 0xa7, 0xa9, 0x61, 0x9e, 0x4c, 0x28, + 0x7c, 0x1b, 0x4a, 0x3e, 0xb0, 0x1f, 0x26, 0xef, 0xb8, 0x3c, 0xe9, 0x22, 0xb9, 0x50, 0xf8, 0x7b, + 0x84, 0x95, 0xb6, 0xef, 0xc2, 0x2b, 0xd7, 0x65, 0xbd, 0x50, 0x9e, 0xd0, 0x00, 0x8c, 0x8a, 0xae, + 0x43, 0xd6, 0xe7, 0xcd, 0x29, 0x04, 0xb9, 0x81, 0x85, 0x0f, 0xd0, 0xbd, 0xbc, 0xd5, 0xa8, 0xe6, + 0x66, 0x88, 0xb1, 0x0f, 0x11, 0x07, 0x57, 0x0d, 0xe4, 0xbc, 0x22, 0xb9, 0xc6, 0xc3, 0x9f, 0xa2, + 0x8a, 0xca, 0x52, 0xe7, 0x82, 0xb4, 0x46, 0xd6, 0xa2, 0x27, 0x89, 0x9d, 0x64, 0x08, 0xfc, 0x05, + 0x5a, 0x3a, 0x67, 0x42, 0x9e, 0x80, 0xfc, 0x85, 0xf1, 0x8e, 0xb1, 0xb4, 0x51, 0xd8, 0xae, 0xd8, + 0x0f, 0x12, 0xc2, 0xd2, 0xc1, 0xd8, 0x45, 0x26, 0x71, 0xea, 0x77, 0x53, 0x57, 0xe7, 0x70, 0xdf, + 0x58, 0xd6, 0x94, 0xec, 0x77, 0x3b, 0x88, 0xcd, 0x24, 0xf5, 0xa7, 0xd0, 0x43, 0x67, 0xcf, 0xa8, + 0x4d, 0x43, 0x0f, 0x9d, 0x3d, 0x92, 0xfa, 0x55, 0xea, 0xea, 0x18, 0xaa, 0xd4, 0x57, 0xf2, 0xa9, + 0x1f, 0x24, 0x76, 0x92, 0x21, 0xb0, 0x85, 0xaa, 0xa2, 0xd7, 0xf2, 0x58, 0x40, 0xfd, 0xd0, 0x58, + 0xd5, 0xf0, 0xd5, 0x04, 0x5e, 0x6d, 0xa6, 0x0e, 0x32, 0xc6, 0xe0, 0x6f, 0x50, 0x4d, 0x6d, 0x44, + 0xaf, 0xd7, 0x05, 0xae, 0x63, 0x3c, 0xd0, 0xa4, 0x6c, 0x00, 0x36, 0x53, 0xa7, 0x7e, 0xa3, 0x3c, + 0x76, 0xfd, 0x25, 0x5a, 0x9d, 0xea, 0x12, 0xbc, 0x82, 0x8a, 0x1d, 0x18, 0xc4, 0xe3, 0x9e, 0xa8, + 0x23, 0x7e, 0x88, 0x4a, 0x7d, 0xda, 0xed, 0x41, 0x3c, 0xca, 0x49, 0x7c, 0xf9, 0x7a, 0xfe, 0x45, + 0x61, 0xf3, 0xcf, 0x22, 0xaa, 0x66, 0x2b, 0x05, 0x5b, 0xa8, 0x14, 0x9d, 0x53, 0x91, 0xae, 0x8a, + 0x47, 0xe9, 0xff, 0xee, 0x28, 0xe3, 0xd5, 0xb0, 0x51, 0x71, 0x98, 0xa7, 0xcf, 0x24, 0xc6, 0xe1, + 0x37, 0x08, 0xb9, 0xe9, 0x12, 0x48, 0x07, 0xca, 0xee, 0xcc, 0x5d, 0x9e, 0xed, 0x8f, 0xf1, 0xee, + 0xcd, 0x4c, 0x82, 0x4c, 0x28, 0x4f, 0x0e, 0xd2, 0xe2, 0xed, 0x83, 0x74, 0x62, 0x36, 0x2f, 0xdc, + 0x3a, 0x9b, 0xb7, 0xd0, 0x62, 0x5c, 0xe1, 0xeb, 0x33, 0x3c, 0x6e, 0x00, 0x92, 0x78, 0xf1, 0x47, + 0xa8, 0x14, 0x31, 0xef, 0xd0, 0x49, 0x26, 0x78, 0x36, 0x03, 0x1d, 0x65, 0x24, 0xb1, 0x0f, 0xbf, + 0x46, 0x55, 0x3d, 0xb8, 0xf4, 0xfe, 0x29, 0xdf, 0x79, 0xff, 0xd4, 0x74, 0x77, 0xa4, 0x02, 0x64, + 0xac, 0x65, 0x6f, 0x5f, 0x5c, 0xd6, 0xe7, 0xde, 0x5e, 0xd6, 0xe7, 0xde, 0x5d, 0xd6, 0xe7, 0x7e, + 0x1b, 0xd5, 0x0b, 0x17, 0xa3, 0x7a, 0xe1, 0xed, 0xa8, 0x5e, 0x78, 0x37, 0xaa, 0x17, 0xfe, 0x1d, + 0xd5, 0x0b, 0xbf, 0xff, 0x57, 0x9f, 0xfb, 0x61, 0xbe, 0xbf, 0xf3, 0x7f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x55, 0x69, 0xbd, 0x27, 0x83, 0x0a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.proto new file mode 100644 index 0000000000..15658347ec --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/generated.proto @@ -0,0 +1,212 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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.apimachinery.pkg.apis.testapigroup.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// Carp is a collection of containers, used as either input (create, update) or as output (list, get). +message Carp { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the carp. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CarpSpec spec = 2; + + // Most recently observed status of the carp. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CarpStatus status = 3; +} + +message CarpCondition { + // Type is the type of the condition. + // Currently only Ready. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-conditions + optional string type = 1; + + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-conditions + optional string status = 2; + + // Last time we probed the condition. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3; + + // Last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // Unique, one-word, CamelCase reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human-readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// CarpList is a list of Carps. +message CarpList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of carps. + // More info: http://kubernetes.io/docs/user-guide/carps + repeated Carp items = 2; +} + +// CarpSpec is a description of a carp +message CarpSpec { + // Restart policy for all containers within the carp. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: http://kubernetes.io/docs/user-guide/carp-states#restartpolicy + // +optional + optional string restartPolicy = 3; + + // Optional duration in seconds the carp 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 carp 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 + optional int64 terminationGracePeriodSeconds = 4; + + // Optional duration in seconds the carp 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 + optional int64 activeDeadlineSeconds = 5; + + // NodeSelector is a selector which must be true for the carp to fit on a node. + // Selector which must match a node's labels for the carp to be scheduled on that node. + // More info: http://kubernetes.io/docs/user-guide/node-selection/README + // +optional + map nodeSelector = 7; + + // ServiceAccountName is the name of the ServiceAccount to use to run this carp. + // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md + // +optional + optional string serviceAccountName = 8; + + // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + // Deprecated: Use serviceAccountName instead. + // +k8s:conversion-gen=false + // +optional + optional string serviceAccount = 9; + + // NodeName is a request to schedule this carp onto a specific node. If it is non-empty, + // the scheduler simply schedules this carp onto that node, assuming that it fits resource + // requirements. + // +optional + optional string nodeName = 10; + + // Host networking requested for this carp. 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 + optional bool hostNetwork = 11; + + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + optional bool hostPID = 12; + + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + optional bool hostIPC = 13; + + // Specifies the hostname of the Carp + // If not specified, the carp's hostname will be set to a system-defined value. + // +optional + optional string hostname = 16; + + // If specified, the fully qualified Carp hostname will be "...svc.". + // If not specified, the carp will not have a domainname at all. + // +optional + optional string subdomain = 17; + + // If specified, the carp will be dispatched by specified scheduler. + // If not specified, the carp will be dispatched by default scheduler. + // +optional + optional string schedulername = 19; +} + +// CarpStatus represents information about the status of a carp. Status may trail the actual +// state of a system. +message CarpStatus { + // Current condition of the carp. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-phase + // +optional + optional string phase = 1; + + // Current service state of carp. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-conditions + // +optional + repeated CarpCondition conditions = 2; + + // A human readable message indicating details about why the carp is in this condition. + // +optional + optional string message = 3; + + // A brief CamelCase message indicating details about why the carp is in this state. + // e.g. 'OutOfDisk' + // +optional + optional string reason = 4; + + // IP address of the host to which the carp is assigned. Empty if not yet scheduled. + // +optional + optional string hostIP = 5; + + // IP address allocated to the carp. Routable at least within the cluster. + // Empty if not yet allocated. + // +optional + optional string carpIP = 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 carp. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7; +} + diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/register.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/register.go new file mode 100644 index 0000000000..d04bc1b58a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/register.go @@ -0,0 +1,63 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "testapigroup.apimachinery.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addConversionFuncs, addDefaultingFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Carp{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/types.go new file mode 100644 index 0000000000..cd505e007d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/types.go @@ -0,0 +1,196 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES 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 ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type ( + ConditionStatus string + CarpConditionType string + CarpPhase string + RestartPolicy string +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// Carp is a collection of containers, used as either input (create, update) or as output (list, get). +type Carp struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the carp. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec CarpSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the carp. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status CarpStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// CarpStatus represents information about the status of a carp. Status may trail the actual +// state of a system. +type CarpStatus struct { + // Current condition of the carp. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-phase + // +optional + Phase CarpPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=CarpPhase"` + // Current service state of carp. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-conditions + // +optional + Conditions []CarpCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` + // A human readable message indicating details about why the carp is in this condition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // A brief CamelCase message indicating details about why the carp is in this state. + // e.g. 'OutOfDisk' + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + + // IP address of the host to which the carp is assigned. Empty if not yet scheduled. + // +optional + HostIP string `json:"hostIP,omitempty" protobuf:"bytes,5,opt,name=hostIP"` + // IP address allocated to the carp. Routable at least within the cluster. + // Empty if not yet allocated. + // +optional + CarpIP string `json:"carpIP,omitempty" protobuf:"bytes,6,opt,name=carpIP"` + + // 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 carp. + // +optional + StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,7,opt,name=startTime"` +} + +type CarpCondition struct { + // Type is the type of the condition. + // Currently only Ready. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-conditions + Type CarpConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=CarpConditionType"` + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: http://kubernetes.io/docs/user-guide/carp-states#carp-conditions + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we probed the condition. + // +optional + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // Unique, one-word, CamelCase reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human-readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// CarpSpec is a description of a carp +type CarpSpec struct { + // Restart policy for all containers within the carp. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: http://kubernetes.io/docs/user-guide/carp-states#restartpolicy + // +optional + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" protobuf:"bytes,3,opt,name=restartPolicy,casttype=RestartPolicy"` + // Optional duration in seconds the carp 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 carp 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 + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty" protobuf:"varint,4,opt,name=terminationGracePeriodSeconds"` + // Optional duration in seconds the carp 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 + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,5,opt,name=activeDeadlineSeconds"` + // NodeSelector is a selector which must be true for the carp to fit on a node. + // Selector which must match a node's labels for the carp to be scheduled on that node. + // More info: http://kubernetes.io/docs/user-guide/node-selection/README + // +optional + 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 carp. + // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md + // +optional + 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 + // +optional + DeprecatedServiceAccount string `json:"serviceAccount,omitempty" protobuf:"bytes,9,opt,name=serviceAccount"` + + // NodeName is a request to schedule this carp onto a specific node. If it is non-empty, + // the scheduler simply schedules this carp onto that node, assuming that it fits resource + // requirements. + // +optional + NodeName string `json:"nodeName,omitempty" protobuf:"bytes,10,opt,name=nodeName"` + // Host networking requested for this carp. 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 + 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 + // +optional + 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 + // +optional + HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,13,opt,name=hostIPC"` + // Specifies the hostname of the Carp + // If not specified, the carp's hostname will be set to a system-defined value. + // +optional + Hostname string `json:"hostname,omitempty" protobuf:"bytes,16,opt,name=hostname"` + // If specified, the fully qualified Carp hostname will be "...svc.". + // If not specified, the carp will not have a domainname at all. + // +optional + Subdomain string `json:"subdomain,omitempty" protobuf:"bytes,17,opt,name=subdomain"` + // If specified, the carp will be dispatched by specified scheduler. + // If not specified, the carp will be dispatched by default scheduler. + // +optional + SchedulerName string `json:"schedulername,omitempty" protobuf:"bytes,19,opt,name=schedulername"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// CarpList is a list of Carps. +type CarpList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of carps. + // More info: http://kubernetes.io/docs/user-guide/carps + Items []Carp `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/types_swagger_doc_generated.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/doc.go rename to vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/types_swagger_doc_generated.go diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.conversion.go new file mode 100644 index 0000000000..bc060c309b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.conversion.go @@ -0,0 +1,226 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + testapigroup "k8s.io/apimachinery/pkg/apis/testapigroup" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + unsafe "unsafe" +) + +func init() { + localSchemeBuilder.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_Carp_To_testapigroup_Carp, + Convert_testapigroup_Carp_To_v1_Carp, + Convert_v1_CarpCondition_To_testapigroup_CarpCondition, + Convert_testapigroup_CarpCondition_To_v1_CarpCondition, + Convert_v1_CarpList_To_testapigroup_CarpList, + Convert_testapigroup_CarpList_To_v1_CarpList, + Convert_v1_CarpSpec_To_testapigroup_CarpSpec, + Convert_testapigroup_CarpSpec_To_v1_CarpSpec, + Convert_v1_CarpStatus_To_testapigroup_CarpStatus, + Convert_testapigroup_CarpStatus_To_v1_CarpStatus, + ) +} + +func autoConvert_v1_Carp_To_testapigroup_Carp(in *Carp, out *testapigroup.Carp, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_CarpSpec_To_testapigroup_CarpSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_CarpStatus_To_testapigroup_CarpStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Carp_To_testapigroup_Carp is an autogenerated conversion function. +func Convert_v1_Carp_To_testapigroup_Carp(in *Carp, out *testapigroup.Carp, s conversion.Scope) error { + return autoConvert_v1_Carp_To_testapigroup_Carp(in, out, s) +} + +func autoConvert_testapigroup_Carp_To_v1_Carp(in *testapigroup.Carp, out *Carp, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_testapigroup_CarpSpec_To_v1_CarpSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_testapigroup_CarpStatus_To_v1_CarpStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_testapigroup_Carp_To_v1_Carp is an autogenerated conversion function. +func Convert_testapigroup_Carp_To_v1_Carp(in *testapigroup.Carp, out *Carp, s conversion.Scope) error { + return autoConvert_testapigroup_Carp_To_v1_Carp(in, out, s) +} + +func autoConvert_v1_CarpCondition_To_testapigroup_CarpCondition(in *CarpCondition, out *testapigroup.CarpCondition, s conversion.Scope) error { + out.Type = testapigroup.CarpConditionType(in.Type) + out.Status = testapigroup.ConditionStatus(in.Status) + out.LastProbeTime = in.LastProbeTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_CarpCondition_To_testapigroup_CarpCondition is an autogenerated conversion function. +func Convert_v1_CarpCondition_To_testapigroup_CarpCondition(in *CarpCondition, out *testapigroup.CarpCondition, s conversion.Scope) error { + return autoConvert_v1_CarpCondition_To_testapigroup_CarpCondition(in, out, s) +} + +func autoConvert_testapigroup_CarpCondition_To_v1_CarpCondition(in *testapigroup.CarpCondition, out *CarpCondition, s conversion.Scope) error { + out.Type = CarpConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + out.LastProbeTime = in.LastProbeTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_testapigroup_CarpCondition_To_v1_CarpCondition is an autogenerated conversion function. +func Convert_testapigroup_CarpCondition_To_v1_CarpCondition(in *testapigroup.CarpCondition, out *CarpCondition, s conversion.Scope) error { + return autoConvert_testapigroup_CarpCondition_To_v1_CarpCondition(in, out, s) +} + +func autoConvert_v1_CarpList_To_testapigroup_CarpList(in *CarpList, out *testapigroup.CarpList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]testapigroup.Carp, len(*in)) + for i := range *in { + if err := Convert_v1_Carp_To_testapigroup_Carp(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_CarpList_To_testapigroup_CarpList is an autogenerated conversion function. +func Convert_v1_CarpList_To_testapigroup_CarpList(in *CarpList, out *testapigroup.CarpList, s conversion.Scope) error { + return autoConvert_v1_CarpList_To_testapigroup_CarpList(in, out, s) +} + +func autoConvert_testapigroup_CarpList_To_v1_CarpList(in *testapigroup.CarpList, out *CarpList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Carp, len(*in)) + for i := range *in { + if err := Convert_testapigroup_Carp_To_v1_Carp(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_testapigroup_CarpList_To_v1_CarpList is an autogenerated conversion function. +func Convert_testapigroup_CarpList_To_v1_CarpList(in *testapigroup.CarpList, out *CarpList, s conversion.Scope) error { + return autoConvert_testapigroup_CarpList_To_v1_CarpList(in, out, s) +} + +func autoConvert_v1_CarpSpec_To_testapigroup_CarpSpec(in *CarpSpec, out *testapigroup.CarpSpec, s conversion.Scope) error { + out.RestartPolicy = testapigroup.RestartPolicy(in.RestartPolicy) + out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds)) + out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) + out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&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 + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + out.SchedulerName = in.SchedulerName + return nil +} + +// Convert_v1_CarpSpec_To_testapigroup_CarpSpec is an autogenerated conversion function. +func Convert_v1_CarpSpec_To_testapigroup_CarpSpec(in *CarpSpec, out *testapigroup.CarpSpec, s conversion.Scope) error { + return autoConvert_v1_CarpSpec_To_testapigroup_CarpSpec(in, out, s) +} + +func autoConvert_testapigroup_CarpSpec_To_v1_CarpSpec(in *testapigroup.CarpSpec, out *CarpSpec, s conversion.Scope) error { + out.RestartPolicy = RestartPolicy(in.RestartPolicy) + out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds)) + out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) + out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) + out.ServiceAccountName = in.ServiceAccountName + out.NodeName = in.NodeName + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + out.SchedulerName = in.SchedulerName + return nil +} + +// Convert_testapigroup_CarpSpec_To_v1_CarpSpec is an autogenerated conversion function. +func Convert_testapigroup_CarpSpec_To_v1_CarpSpec(in *testapigroup.CarpSpec, out *CarpSpec, s conversion.Scope) error { + return autoConvert_testapigroup_CarpSpec_To_v1_CarpSpec(in, out, s) +} + +func autoConvert_v1_CarpStatus_To_testapigroup_CarpStatus(in *CarpStatus, out *testapigroup.CarpStatus, s conversion.Scope) error { + out.Phase = testapigroup.CarpPhase(in.Phase) + out.Conditions = *(*[]testapigroup.CarpCondition)(unsafe.Pointer(&in.Conditions)) + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.CarpIP = in.CarpIP + out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + return nil +} + +// Convert_v1_CarpStatus_To_testapigroup_CarpStatus is an autogenerated conversion function. +func Convert_v1_CarpStatus_To_testapigroup_CarpStatus(in *CarpStatus, out *testapigroup.CarpStatus, s conversion.Scope) error { + return autoConvert_v1_CarpStatus_To_testapigroup_CarpStatus(in, out, s) +} + +func autoConvert_testapigroup_CarpStatus_To_v1_CarpStatus(in *testapigroup.CarpStatus, out *CarpStatus, s conversion.Scope) error { + out.Phase = CarpPhase(in.Phase) + out.Conditions = *(*[]CarpCondition)(unsafe.Pointer(&in.Conditions)) + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.CarpIP = in.CarpIP + out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + return nil +} + +// Convert_testapigroup_CarpStatus_To_v1_CarpStatus is an autogenerated conversion function. +func Convert_testapigroup_CarpStatus_To_v1_CarpStatus(in *testapigroup.CarpStatus, out *CarpStatus, s conversion.Scope) error { + return autoConvert_testapigroup_CarpStatus_To_v1_CarpStatus(in, out, s) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..82e8dbfe76 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.deepcopy.go @@ -0,0 +1,215 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Carp).DeepCopyInto(out.(*Carp)) + return nil + }, InType: reflect.TypeOf(&Carp{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpCondition).DeepCopyInto(out.(*CarpCondition)) + return nil + }, InType: reflect.TypeOf(&CarpCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpList).DeepCopyInto(out.(*CarpList)) + return nil + }, InType: reflect.TypeOf(&CarpList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpSpec).DeepCopyInto(out.(*CarpSpec)) + return nil + }, InType: reflect.TypeOf(&CarpSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpStatus).DeepCopyInto(out.(*CarpStatus)) + return nil + }, InType: reflect.TypeOf(&CarpStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Carp) DeepCopyInto(out *Carp) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Carp. +func (in *Carp) DeepCopy() *Carp { + if in == nil { + return nil + } + out := new(Carp) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Carp) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpCondition) DeepCopyInto(out *CarpCondition) { + *out = *in + in.LastProbeTime.DeepCopyInto(&out.LastProbeTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpCondition. +func (in *CarpCondition) DeepCopy() *CarpCondition { + if in == nil { + return nil + } + out := new(CarpCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpList) DeepCopyInto(out *CarpList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Carp, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpList. +func (in *CarpList) DeepCopy() *CarpList { + if in == nil { + return nil + } + out := new(CarpList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CarpList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpSpec) DeepCopyInto(out *CarpSpec) { + *out = *in + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpSpec. +func (in *CarpSpec) DeepCopy() *CarpSpec { + if in == nil { + return nil + } + out := new(CarpSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpStatus) DeepCopyInto(out *CarpStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CarpCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.Time) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpStatus. +func (in *CarpStatus) DeepCopy() *CarpStatus { + if in == nil { + return nil + } + out := new(CarpStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.defaults.go similarity index 100% rename from vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.defaults.go rename to vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1/zz_generated.defaults.go diff --git a/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go new file mode 100644 index 0000000000..a2d6b83b6d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/zz_generated.deepcopy.go @@ -0,0 +1,215 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 testapigroup + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Carp).DeepCopyInto(out.(*Carp)) + return nil + }, InType: reflect.TypeOf(&Carp{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpCondition).DeepCopyInto(out.(*CarpCondition)) + return nil + }, InType: reflect.TypeOf(&CarpCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpList).DeepCopyInto(out.(*CarpList)) + return nil + }, InType: reflect.TypeOf(&CarpList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpSpec).DeepCopyInto(out.(*CarpSpec)) + return nil + }, InType: reflect.TypeOf(&CarpSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*CarpStatus).DeepCopyInto(out.(*CarpStatus)) + return nil + }, InType: reflect.TypeOf(&CarpStatus{})}, + ) +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Carp) DeepCopyInto(out *Carp) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Carp. +func (in *Carp) DeepCopy() *Carp { + if in == nil { + return nil + } + out := new(Carp) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Carp) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpCondition) DeepCopyInto(out *CarpCondition) { + *out = *in + in.LastProbeTime.DeepCopyInto(&out.LastProbeTime) + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpCondition. +func (in *CarpCondition) DeepCopy() *CarpCondition { + if in == nil { + return nil + } + out := new(CarpCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpList) DeepCopyInto(out *CarpList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Carp, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpList. +func (in *CarpList) DeepCopy() *CarpList { + if in == nil { + return nil + } + out := new(CarpList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CarpList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpSpec) DeepCopyInto(out *CarpSpec) { + *out = *in + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpSpec. +func (in *CarpSpec) DeepCopy() *CarpSpec { + if in == nil { + return nil + } + out := new(CarpSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CarpStatus) DeepCopyInto(out *CarpStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CarpCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + if *in == nil { + *out = nil + } else { + *out = new(v1.Time) + (*in).DeepCopyInto(*out) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CarpStatus. +func (in *CarpStatus) DeepCopy() *CarpStatus { + if in == nil { + return nil + } + out := new(CarpStatus) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/BUILD index 643614ee48..eb7f174966 100644 --- a/vendor/k8s.io/apimachinery/pkg/conversion/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/conversion/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -16,7 +14,6 @@ go_test( "helper_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", @@ -33,6 +30,22 @@ go_library( "doc.go", "helper.go", ], - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/third_party/forked/golang/reflect:go_default_library"], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/conversion/queryparams:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/conversion/unstructured:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD index 8eeabc5f11..e2beb3e0a1 100644 --- a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -14,16 +12,27 @@ go_library( "convert.go", "doc.go", ], - tags = ["automanaged"], ) go_test( name = "go_default_xtest", srcs = ["convert_test.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD index 0804afc330..a98e423262 100644 --- a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD @@ -1,24 +1,8 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", - "go_test", -) - -go_test( - name = "go_default_test", - srcs = ["converter_test.go"], - library = ":go_default_library", - tags = ["automanaged"], - deps = [ - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", - ], ) go_library( @@ -27,7 +11,6 @@ go_library( "converter.go", "doc.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", @@ -36,3 +19,19 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/conversion/unstructured/testing:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go index cf84a61989..84dca4ac7c 100644 --- a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go @@ -39,7 +39,7 @@ import ( // Converter is an interface for converting between interface{} // and map[string]interface representation. type Converter interface { - ToUnstructured(obj interface{}, u *map[string]interface{}) error + ToUnstructured(obj interface{}) (map[string]interface{}, error) FromUnstructured(u map[string]interface{}, obj interface{}) error } @@ -388,12 +388,13 @@ func interfaceFromUnstructured(sv, dv reflect.Value) error { return nil } -func (c *converterImpl) ToUnstructured(obj interface{}, u *map[string]interface{}) error { +func (c *converterImpl) ToUnstructured(obj interface{}) (map[string]interface{}, error) { t := reflect.TypeOf(obj) value := reflect.ValueOf(obj) if t.Kind() != reflect.Ptr || value.IsNil() { - return fmt.Errorf("ToUnstructured requires a non-nil pointer to an object, got %v", t) + return nil, fmt.Errorf("ToUnstructured requires a non-nil pointer to an object, got %v", t) } + u := &map[string]interface{}{} err := toUnstructured(value.Elem(), reflect.ValueOf(u).Elem()) if c.mismatchDetection { newUnstr := &map[string]interface{}{} @@ -405,7 +406,10 @@ func (c *converterImpl) ToUnstructured(obj interface{}, u *map[string]interface{ glog.Fatalf("ToUnstructured mismatch for %#v, diff: %v", u, diff.ObjectReflectDiff(u, newUnstr)) } } - return err + if err != nil { + return nil, err + } + return *u, nil } func toUnstructuredViaJSON(obj interface{}, u *map[string]interface{}) error { @@ -416,51 +420,95 @@ func toUnstructuredViaJSON(obj interface{}, u *map[string]interface{}) error { return json.Unmarshal(data, u) } -func toUnstructured(sv, dv reflect.Value) error { - st, dt := sv.Type(), dv.Type() +var ( + nullBytes = []byte("null") + trueBytes = []byte("true") + falseBytes = []byte("false") +) + +func getMarshaler(v reflect.Value) (encodingjson.Marshaler, bool) { + // Check value receivers if v is not a pointer and pointer receivers if v is a pointer + if v.Type().Implements(marshalerType) { + return v.Interface().(encodingjson.Marshaler), true + } + // Check pointer receivers if v is not a pointer + if v.Kind() != reflect.Ptr && v.CanAddr() { + v = v.Addr() + if v.Type().Implements(marshalerType) { + return v.Interface().(encodingjson.Marshaler), true + } + } + return nil, false +} +func toUnstructured(sv, dv reflect.Value) error { // Check if the object has a custom JSON marshaller/unmarshaller. - if st.Implements(marshalerType) { + if marshaler, ok := getMarshaler(sv); ok { if sv.Kind() == reflect.Ptr && sv.IsNil() { // We're done - we don't need to store anything. return nil } - marshaler := sv.Interface().(encodingjson.Marshaler) data, err := marshaler.MarshalJSON() if err != nil { return err } - if bytes.Equal(data, []byte("null")) { + switch { + case len(data) == 0: + return fmt.Errorf("error decoding from json: empty value") + + case bytes.Equal(data, nullBytes): // We're done - we don't need to store anything. - } else { - switch { - case len(data) > 0 && data[0] == '"': - var result string - err := json.Unmarshal(data, &result) - if err != nil { - return fmt.Errorf("error decoding from json: %v", err) - } - dv.Set(reflect.ValueOf(result)) - case len(data) > 0 && data[0] == '{': - result := make(map[string]interface{}) - err := json.Unmarshal(data, &result) - if err != nil { - return fmt.Errorf("error decoding from json: %v", err) - } - dv.Set(reflect.ValueOf(result)) - default: - var result int64 - err := json.Unmarshal(data, &result) - if err != nil { - return fmt.Errorf("error decoding from json: %v", err) - } - dv.Set(reflect.ValueOf(result)) + + case bytes.Equal(data, trueBytes): + dv.Set(reflect.ValueOf(true)) + + case bytes.Equal(data, falseBytes): + dv.Set(reflect.ValueOf(false)) + + case data[0] == '"': + var result string + err := json.Unmarshal(data, &result) + if err != nil { + return fmt.Errorf("error decoding string from json: %v", err) + } + dv.Set(reflect.ValueOf(result)) + + case data[0] == '{': + result := make(map[string]interface{}) + err := json.Unmarshal(data, &result) + if err != nil { + return fmt.Errorf("error decoding object from json: %v", err) + } + dv.Set(reflect.ValueOf(result)) + + case data[0] == '[': + result := make([]interface{}, 0) + err := json.Unmarshal(data, &result) + if err != nil { + return fmt.Errorf("error decoding array from json: %v", err) + } + dv.Set(reflect.ValueOf(result)) + + default: + var ( + resultInt int64 + resultFloat float64 + err error + ) + if err = json.Unmarshal(data, &resultInt); err == nil { + dv.Set(reflect.ValueOf(resultInt)) + } else if err = json.Unmarshal(data, &resultFloat); err == nil { + dv.Set(reflect.ValueOf(resultFloat)) + } else { + return fmt.Errorf("error decoding number from json: %v", err) } } + return nil } + st, dt := sv.Type(), dv.Type() switch st.Kind() { case reflect.String: if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go deleted file mode 100644 index cbab0d1dad..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go +++ /dev/null @@ -1,462 +0,0 @@ -/* -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 unstructured - -import ( - "fmt" - "reflect" - "testing" - - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/util/diff" - "k8s.io/apimachinery/pkg/util/json" -) - -// Definte a number of test types. -type A struct { - A int `json:"aa,omitempty"` - B string `json:"ab,omitempty"` - C bool `json:"ac,omitempty"` -} - -type B struct { - A A `json:"ba"` - B string `json:"bb"` - C map[string]string `json:"bc"` - D []string `json:"bd"` -} - -type C struct { - A []A `json:"ca"` - B `json:",inline"` - C string `json:"cc"` - D *int64 `json:"cd"` - E map[string]int `json:"ce"` - F []bool `json:"cf"` - G []int `json:"cg"` - H float32 `json:"ch"` - I []interface{} `json:"ci"` -} - -type D struct { - A []interface{} `json:"da"` -} - -type E struct { - A interface{} `json:"ea"` -} - -type F struct { - A string `json:"fa"` - B map[string]string `json:"fb"` - C []A `json:"fc"` - D int `json:"fd"` - E float32 `json:"fe"` - F []string `json:"ff"` - G []int `json:"fg"` - H []bool `json:"fh"` - I []float32 `json:"fi"` -} - -// Implement runtime.Object to make types usable for tests. - -func (c *C) GetObjectKind() schema.ObjectKind { - return schema.EmptyObjectKind -} - -func (d *D) GetObjectKind() schema.ObjectKind { - return schema.EmptyObjectKind -} - -func (e *E) GetObjectKind() schema.ObjectKind { - return schema.EmptyObjectKind -} - -func (f *F) GetObjectKind() schema.ObjectKind { - return schema.EmptyObjectKind -} - -func doRoundTrip(t *testing.T, item runtime.Object) { - data, err := json.Marshal(item) - if err != nil { - t.Errorf("Error when marshaling object: %v", err) - return - } - - unstr := make(map[string]interface{}) - err = json.Unmarshal(data, &unstr) - if err != nil { - t.Errorf("Error when unmarshaling to unstructured: %v", err) - return - } - - data, err = json.Marshal(unstr) - if err != nil { - t.Errorf("Error when marshaling unstructured: %v", err) - return - } - unmarshalledObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() - err = json.Unmarshal(data, &unmarshalledObj) - if err != nil { - t.Errorf("Error when unmarshaling to object: %v", err) - return - } - if !reflect.DeepEqual(item, unmarshalledObj) { - t.Errorf("Object changed during JSON operations, diff: %v", diff.ObjectReflectDiff(item, unmarshalledObj)) - return - } - - newUnstr := make(map[string]interface{}) - err = DefaultConverter.ToUnstructured(item, &newUnstr) - if err != nil { - t.Errorf("ToUnstructured failed: %v", err) - return - } - - newObj := reflect.New(reflect.TypeOf(item).Elem()).Interface().(runtime.Object) - err = DefaultConverter.FromUnstructured(newUnstr, newObj) - if err != nil { - t.Errorf("FromUnstructured failed: %v", err) - return - } - - if !reflect.DeepEqual(item, newObj) { - t.Errorf("Object changed, diff: %v", diff.ObjectReflectDiff(item, newObj)) - } -} - -func TestRoundTrip(t *testing.T) { - intVal := int64(42) - testCases := []struct { - obj runtime.Object - }{ - { - // This (among others) tests nil map, slice and pointer. - obj: &C{ - C: "ccc", - }, - }, - { - // This (among others) tests empty map and slice. - obj: &C{ - A: []A{}, - C: "ccc", - E: map[string]int{}, - I: []interface{}{}, - }, - }, - { - obj: &C{ - A: []A{ - { - A: 1, - B: "11", - C: true, - }, - { - A: 2, - B: "22", - C: false, - }, - }, - B: B{ - A: A{ - A: 3, - B: "33", - }, - B: "bbb", - C: map[string]string{ - "k1": "v1", - "k2": "v2", - }, - D: []string{"s1", "s2"}, - }, - C: "ccc", - D: &intVal, - E: map[string]int{ - "k1": 1, - "k2": 2, - }, - F: []bool{true, false, false}, - G: []int{1, 2, 5}, - H: 3.3, - I: []interface{}{nil, nil, nil}, - }, - }, - { - // Test slice of interface{} with empty slices. - obj: &D{ - A: []interface{}{[]interface{}{}, []interface{}{}}, - }, - }, - { - // Test slice of interface{} with different values. - obj: &D{ - A: []interface{}{3.0, "3.0", nil}, - }, - }, - } - - for i := range testCases { - doRoundTrip(t, testCases[i].obj) - if t.Failed() { - break - } - } -} - -// Verifies that: -// 1) serialized json -> object -// 2) serialized json -> map[string]interface{} -> object -// produces the same object. -func doUnrecognized(t *testing.T, jsonData string, item runtime.Object, expectedErr error) { - unmarshalledObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() - err := json.Unmarshal([]byte(jsonData), &unmarshalledObj) - if (err != nil) != (expectedErr != nil) { - t.Errorf("Unexpected error when unmarshaling to object: %v, expected: %v", err, expectedErr) - return - } - - unstr := make(map[string]interface{}) - err = json.Unmarshal([]byte(jsonData), &unstr) - if err != nil { - t.Errorf("Error when unmarshaling to unstructured: %v", err) - return - } - newObj := reflect.New(reflect.TypeOf(item).Elem()).Interface().(runtime.Object) - err = DefaultConverter.FromUnstructured(unstr, newObj) - if (err != nil) != (expectedErr != nil) { - t.Errorf("Unexpected error in FromUnstructured: %v, expected: %v", err, expectedErr) - } - - if expectedErr == nil && !reflect.DeepEqual(unmarshalledObj, newObj) { - t.Errorf("Object changed, diff: %v", diff.ObjectReflectDiff(unmarshalledObj, newObj)) - } -} - -func TestUnrecognized(t *testing.T) { - testCases := []struct { - data string - obj runtime.Object - err error - }{ - { - data: "{\"da\":[3.0,\"3.0\",null]}", - obj: &D{}, - }, - { - data: "{\"ea\":[3.0,\"3.0\",null]}", - obj: &E{}, - }, - { - data: "{\"ea\":[null,null,null]}", - obj: &E{}, - }, - { - data: "{\"ea\":[[],[null]]}", - obj: &E{}, - }, - { - data: "{\"ea\":{\"a\":[],\"b\":null}}", - obj: &E{}, - }, - { - data: "{\"fa\":\"fa\",\"fb\":{\"a\":\"a\"}}", - obj: &F{}, - }, - { - data: "{\"fa\":\"fa\",\"fb\":{\"a\":null}}", - obj: &F{}, - }, - { - data: "{\"fc\":[null]}", - obj: &F{}, - }, - { - data: "{\"fc\":[{\"aa\":123,\"ab\":\"bbb\"}]}", - obj: &F{}, - }, - { - // Only unknown fields - data: "{\"fx\":[{\"aa\":123,\"ab\":\"bbb\"}],\"fz\":123}", - obj: &F{}, - }, - { - data: "{\"fc\":[{\"aa\":\"aaa\",\"ab\":\"bbb\"}]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type int"), - }, - { - data: "{\"fd\":123,\"fe\":3.5}", - obj: &F{}, - }, - { - data: "{\"ff\":[\"abc\"],\"fg\":[123],\"fh\":[true,false]}", - obj: &F{}, - }, - { - // Invalid string data - data: "{\"fa\":123}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), - }, - { - // Invalid string data - data: "{\"fa\":13.5}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), - }, - { - // Invalid string data - data: "{\"fa\":true}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal bool into Go value of type string"), - }, - { - // Invalid []string data - data: "{\"ff\":123}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type []string"), - }, - { - // Invalid []string data - data: "{\"ff\":3.5}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type []string"), - }, - { - // Invalid []string data - data: "{\"ff\":[123,345]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), - }, - { - // Invalid []int data - data: "{\"fg\":123}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type []int"), - }, - { - // Invalid []int data - data: "{\"fg\":\"abc\"}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type []int"), - }, - { - // Invalid []int data - data: "{\"fg\":[\"abc\"]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type int"), - }, - { - // Invalid []int data - data: "{\"fg\":[3.5]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number 3.5 into Go value of type int"), - }, - { - // Invalid []int data - data: "{\"fg\":[true,false]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number 3.5 into Go value of type int"), - }, - { - // Invalid []bool data - data: "{\"fh\":123}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type []bool"), - }, - { - // Invalid []bool data - data: "{\"fh\":\"abc\"}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type []bool"), - }, - { - // Invalid []bool data - data: "{\"fh\":[\"abc\"]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type bool"), - }, - { - // Invalid []bool data - data: "{\"fh\":[3.5]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type bool"), - }, - { - // Invalid []bool data - data: "{\"fh\":[123]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type bool"), - }, - { - // Invalid []float data - data: "{\"fi\":123}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal number into Go value of type []float32"), - }, - { - // Invalid []float data - data: "{\"fi\":\"abc\"}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type []float32"), - }, - { - // Invalid []float data - data: "{\"fi\":[\"abc\"]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal string into Go value of type float32"), - }, - { - // Invalid []float data - data: "{\"fi\":[true]}", - obj: &F{}, - err: fmt.Errorf("json: cannot unmarshal bool into Go value of type float32"), - }, - } - - for i := range testCases { - doUnrecognized(t, testCases[i].data, testCases[i].obj, testCases[i].err) - if t.Failed() { - break - } - } -} - -func TestFloatIntConversion(t *testing.T) { - unstr := map[string]interface{}{"fd": float64(3)} - - var obj F - if err := DefaultConverter.FromUnstructured(unstr, &obj); err != nil { - t.Errorf("Unexpected error in FromUnstructured: %v", err) - } - - data, err := json.Marshal(unstr) - if err != nil { - t.Fatalf("Error when marshaling unstructured: %v", err) - } - var unmarshalled F - if err := json.Unmarshal(data, &unmarshalled); err != nil { - t.Fatalf("Error when unmarshaling to object: %v", err) - } - - if !reflect.DeepEqual(obj, unmarshalled) { - t.Errorf("Incorrect conversion, diff: %v", diff.ObjectReflectDiff(obj, unmarshalled)) - } -} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/testing/BUILD new file mode 100644 index 0000000000..77d4bd72e4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/testing/BUILD @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "go_default_test", + srcs = ["converter_test.go"], + deps = [ + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/github.com/stretchr/testify/require:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/testing/converter_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/testing/converter_test.go new file mode 100644 index 0000000000..1338e4e430 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/testing/converter_test.go @@ -0,0 +1,539 @@ +/* +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. +*/ + +// These tests are in a separate package to break cyclic dependency in tests. +// Unstructured type depends on unstructured converter package but we want to test how the converter handles +// the Unstructured type so we need to import both. + +package testing + +import ( + "fmt" + "reflect" + "strconv" + "testing" + + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + conversionunstructured "k8s.io/apimachinery/pkg/conversion/unstructured" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/apimachinery/pkg/util/json" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// Definte a number of test types. +type A struct { + A int `json:"aa,omitempty"` + B string `json:"ab,omitempty"` + C bool `json:"ac,omitempty"` +} + +type B struct { + A A `json:"ba"` + B string `json:"bb"` + C map[string]string `json:"bc"` + D []string `json:"bd"` +} + +type C struct { + A []A `json:"ca"` + B `json:",inline"` + C string `json:"cc"` + D *int64 `json:"cd"` + E map[string]int `json:"ce"` + F []bool `json:"cf"` + G []int `json:"cg"` + H float32 `json:"ch"` + I []interface{} `json:"ci"` +} + +type D struct { + A []interface{} `json:"da"` +} + +type E struct { + A interface{} `json:"ea"` +} + +type F struct { + A string `json:"fa"` + B map[string]string `json:"fb"` + C []A `json:"fc"` + D int `json:"fd"` + E float32 `json:"fe"` + F []string `json:"ff"` + G []int `json:"fg"` + H []bool `json:"fh"` + I []float32 `json:"fi"` +} + +type G struct { + CustomValue1 CustomValue `json:"customValue1"` + CustomValue2 *CustomValue `json:"customValue2"` + CustomPointer1 CustomPointer `json:"customPointer1"` + CustomPointer2 *CustomPointer `json:"customPointer2"` +} + +type CustomValue struct { + data []byte +} + +// MarshalJSON has a value receiver on this type. +func (c CustomValue) MarshalJSON() ([]byte, error) { + return c.data, nil +} + +type CustomPointer struct { + data []byte +} + +// MarshalJSON has a pointer receiver on this type. +func (c *CustomPointer) MarshalJSON() ([]byte, error) { + return c.data, nil +} + +func doRoundTrip(t *testing.T, item interface{}) { + data, err := json.Marshal(item) + if err != nil { + t.Errorf("Error when marshaling object: %v", err) + return + } + + unstr := make(map[string]interface{}) + err = json.Unmarshal(data, &unstr) + if err != nil { + t.Errorf("Error when unmarshaling to unstructured: %v", err) + return + } + + data, err = json.Marshal(unstr) + if err != nil { + t.Errorf("Error when marshaling unstructured: %v", err) + return + } + unmarshalledObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() + err = json.Unmarshal(data, &unmarshalledObj) + if err != nil { + t.Errorf("Error when unmarshaling to object: %v", err) + return + } + if !reflect.DeepEqual(item, unmarshalledObj) { + t.Errorf("Object changed during JSON operations, diff: %v", diff.ObjectReflectDiff(item, unmarshalledObj)) + return + } + + newUnstr, err := conversionunstructured.DefaultConverter.ToUnstructured(item) + if err != nil { + t.Errorf("ToUnstructured failed: %v", err) + return + } + + newObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() + err = conversionunstructured.DefaultConverter.FromUnstructured(newUnstr, newObj) + if err != nil { + t.Errorf("FromUnstructured failed: %v", err) + return + } + + if !reflect.DeepEqual(item, newObj) { + t.Errorf("Object changed, diff: %v", diff.ObjectReflectDiff(item, newObj)) + } +} + +func TestRoundTrip(t *testing.T) { + intVal := int64(42) + testCases := []struct { + obj interface{} + }{ + { + obj: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "foo1", + }, + }, + }, + }, + { + // This (among others) tests nil map, slice and pointer. + obj: &C{ + C: "ccc", + }, + }, + { + // This (among others) tests empty map and slice. + obj: &C{ + A: []A{}, + C: "ccc", + E: map[string]int{}, + I: []interface{}{}, + }, + }, + { + obj: &C{ + A: []A{ + { + A: 1, + B: "11", + C: true, + }, + { + A: 2, + B: "22", + C: false, + }, + }, + B: B{ + A: A{ + A: 3, + B: "33", + }, + B: "bbb", + C: map[string]string{ + "k1": "v1", + "k2": "v2", + }, + D: []string{"s1", "s2"}, + }, + C: "ccc", + D: &intVal, + E: map[string]int{ + "k1": 1, + "k2": 2, + }, + F: []bool{true, false, false}, + G: []int{1, 2, 5}, + H: 3.3, + I: []interface{}{nil, nil, nil}, + }, + }, + { + // Test slice of interface{} with empty slices. + obj: &D{ + A: []interface{}{[]interface{}{}, []interface{}{}}, + }, + }, + { + // Test slice of interface{} with different values. + obj: &D{ + A: []interface{}{3.0, "3.0", nil}, + }, + }, + } + + for i := range testCases { + doRoundTrip(t, testCases[i].obj) + if t.Failed() { + break + } + } +} + +// Verifies that: +// 1) serialized json -> object +// 2) serialized json -> map[string]interface{} -> object +// produces the same object. +func doUnrecognized(t *testing.T, jsonData string, item interface{}, expectedErr error) { + unmarshalledObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() + err := json.Unmarshal([]byte(jsonData), &unmarshalledObj) + if (err != nil) != (expectedErr != nil) { + t.Errorf("Unexpected error when unmarshaling to object: %v, expected: %v", err, expectedErr) + return + } + + unstr := make(map[string]interface{}) + err = json.Unmarshal([]byte(jsonData), &unstr) + if err != nil { + t.Errorf("Error when unmarshaling to unstructured: %v", err) + return + } + newObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() + err = conversionunstructured.DefaultConverter.FromUnstructured(unstr, newObj) + if (err != nil) != (expectedErr != nil) { + t.Errorf("Unexpected error in FromUnstructured: %v, expected: %v", err, expectedErr) + } + + if expectedErr == nil && !reflect.DeepEqual(unmarshalledObj, newObj) { + t.Errorf("Object changed, diff: %v", diff.ObjectReflectDiff(unmarshalledObj, newObj)) + } +} + +func TestUnrecognized(t *testing.T) { + testCases := []struct { + data string + obj interface{} + err error + }{ + { + data: "{\"da\":[3.0,\"3.0\",null]}", + obj: &D{}, + }, + { + data: "{\"ea\":[3.0,\"3.0\",null]}", + obj: &E{}, + }, + { + data: "{\"ea\":[null,null,null]}", + obj: &E{}, + }, + { + data: "{\"ea\":[[],[null]]}", + obj: &E{}, + }, + { + data: "{\"ea\":{\"a\":[],\"b\":null}}", + obj: &E{}, + }, + { + data: "{\"fa\":\"fa\",\"fb\":{\"a\":\"a\"}}", + obj: &F{}, + }, + { + data: "{\"fa\":\"fa\",\"fb\":{\"a\":null}}", + obj: &F{}, + }, + { + data: "{\"fc\":[null]}", + obj: &F{}, + }, + { + data: "{\"fc\":[{\"aa\":123,\"ab\":\"bbb\"}]}", + obj: &F{}, + }, + { + // Only unknown fields + data: "{\"fx\":[{\"aa\":123,\"ab\":\"bbb\"}],\"fz\":123}", + obj: &F{}, + }, + { + data: "{\"fc\":[{\"aa\":\"aaa\",\"ab\":\"bbb\"}]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type int"), + }, + { + data: "{\"fd\":123,\"fe\":3.5}", + obj: &F{}, + }, + { + data: "{\"ff\":[\"abc\"],\"fg\":[123],\"fh\":[true,false]}", + obj: &F{}, + }, + { + // Invalid string data + data: "{\"fa\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), + }, + { + // Invalid string data + data: "{\"fa\":13.5}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), + }, + { + // Invalid string data + data: "{\"fa\":true}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal bool into Go value of type string"), + }, + { + // Invalid []string data + data: "{\"ff\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []string"), + }, + { + // Invalid []string data + data: "{\"ff\":3.5}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []string"), + }, + { + // Invalid []string data + data: "{\"ff\":[123,345]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), + }, + { + // Invalid []int data + data: "{\"fg\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []int"), + }, + { + // Invalid []int data + data: "{\"fg\":\"abc\"}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type []int"), + }, + { + // Invalid []int data + data: "{\"fg\":[\"abc\"]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type int"), + }, + { + // Invalid []int data + data: "{\"fg\":[3.5]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number 3.5 into Go value of type int"), + }, + { + // Invalid []int data + data: "{\"fg\":[true,false]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number 3.5 into Go value of type int"), + }, + { + // Invalid []bool data + data: "{\"fh\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":\"abc\"}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type []bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":[\"abc\"]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":[3.5]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":[123]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type bool"), + }, + { + // Invalid []float data + data: "{\"fi\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []float32"), + }, + { + // Invalid []float data + data: "{\"fi\":\"abc\"}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type []float32"), + }, + { + // Invalid []float data + data: "{\"fi\":[\"abc\"]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type float32"), + }, + { + // Invalid []float data + data: "{\"fi\":[true]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal bool into Go value of type float32"), + }, + } + + for i := range testCases { + doUnrecognized(t, testCases[i].data, testCases[i].obj, testCases[i].err) + if t.Failed() { + break + } + } +} + +func TestFloatIntConversion(t *testing.T) { + unstr := map[string]interface{}{"fd": float64(3)} + + var obj F + if err := conversionunstructured.DefaultConverter.FromUnstructured(unstr, &obj); err != nil { + t.Errorf("Unexpected error in FromUnstructured: %v", err) + } + + data, err := json.Marshal(unstr) + if err != nil { + t.Fatalf("Error when marshaling unstructured: %v", err) + } + var unmarshalled F + if err := json.Unmarshal(data, &unmarshalled); err != nil { + t.Fatalf("Error when unmarshaling to object: %v", err) + } + + if !reflect.DeepEqual(obj, unmarshalled) { + t.Errorf("Incorrect conversion, diff: %v", diff.ObjectReflectDiff(obj, unmarshalled)) + } +} + +func TestCustomToUnstructured(t *testing.T) { + testcases := []struct { + Data string + Expected interface{} + }{ + {Data: `null`, Expected: nil}, + {Data: `true`, Expected: true}, + {Data: `false`, Expected: false}, + {Data: `[]`, Expected: []interface{}{}}, + {Data: `[1]`, Expected: []interface{}{int64(1)}}, + {Data: `{}`, Expected: map[string]interface{}{}}, + {Data: `{"a":1}`, Expected: map[string]interface{}{"a": int64(1)}}, + {Data: `0`, Expected: int64(0)}, + {Data: `0.0`, Expected: float64(0)}, + } + + for _, tc := range testcases { + tc := tc + t.Run(tc.Data, func(t *testing.T) { + t.Parallel() + result, err := conversionunstructured.DefaultConverter.ToUnstructured(&G{ + CustomValue1: CustomValue{data: []byte(tc.Data)}, + CustomValue2: &CustomValue{data: []byte(tc.Data)}, + CustomPointer1: CustomPointer{data: []byte(tc.Data)}, + CustomPointer2: &CustomPointer{data: []byte(tc.Data)}, + }) + require.NoError(t, err) + for field, fieldResult := range result { + assert.Equal(t, tc.Expected, fieldResult, field) + } + }) + } +} + +func TestCustomToUnstructuredTopLevel(t *testing.T) { + // Only objects are supported at the top level + topLevelCases := []interface{}{ + &CustomValue{data: []byte(`{"a":1}`)}, + &CustomPointer{data: []byte(`{"a":1}`)}, + } + expected := map[string]interface{}{"a": int64(1)} + for i, obj := range topLevelCases { + obj := obj + t.Run(strconv.Itoa(i), func(t *testing.T) { + t.Parallel() + result, err := conversionunstructured.DefaultConverter.ToUnstructured(obj) + require.NoError(t, err) + assert.Equal(t, expected, result) + }) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/fields/BUILD b/vendor/k8s.io/apimachinery/pkg/fields/BUILD index 7c44f5fd82..637ecc4bb0 100644 --- a/vendor/k8s.io/apimachinery/pkg/fields/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/fields/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -15,7 +13,6 @@ go_test( "selector_test.go", ], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -26,6 +23,18 @@ go_library( "requirements.go", "selector.go", ], - tags = ["automanaged"], deps = ["//vendor/k8s.io/apimachinery/pkg/selection:go_default_library"], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/fields/selector.go b/vendor/k8s.io/apimachinery/pkg/fields/selector.go index 1305dde086..273e9a2c1b 100644 --- a/vendor/k8s.io/apimachinery/pkg/fields/selector.go +++ b/vendor/k8s.io/apimachinery/pkg/fields/selector.go @@ -50,6 +50,9 @@ type Selector interface { // String returns a human readable string that represents this selector. String() string + + // Make a deep copy of the selector. + DeepCopySelector() Selector } // Everything returns a selector that matches all fields. @@ -99,6 +102,15 @@ func (t *hasTerm) String() string { return fmt.Sprintf("%v=%v", t.field, EscapeValue(t.value)) } +func (t *hasTerm) DeepCopySelector() Selector { + if t == nil { + return nil + } + out := new(hasTerm) + *out = *t + return out +} + type notHasTerm struct { field, value string } @@ -138,6 +150,15 @@ func (t *notHasTerm) String() string { return fmt.Sprintf("%v!=%v", t.field, EscapeValue(t.value)) } +func (t *notHasTerm) DeepCopySelector() Selector { + if t == nil { + return nil + } + out := new(notHasTerm) + *out = *t + return out +} + type andTerm []Selector func (t andTerm) Matches(ls Fields) bool { @@ -207,6 +228,17 @@ func (t andTerm) String() string { return strings.Join(terms, ",") } +func (t andTerm) DeepCopySelector() Selector { + if t == nil { + return nil + } + out := make([]Selector, len(t)) + for i := range t { + out[i] = t[i].DeepCopySelector() + } + return andTerm(out) +} + // SelectorFromSet returns a Selector which will match exactly the given Set. A // nil Set is considered equivalent to Everything(). func SelectorFromSet(ls Set) Selector { diff --git a/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go b/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go index ff6245ca9e..0aa66935cc 100644 --- a/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go +++ b/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go @@ -387,7 +387,7 @@ func TestTransform(t *testing.T) { t.Errorf("[%d] unexpected error during Transform: %v", i, err) } if result.Empty() != tc.isEmpty { - t.Errorf("[%d] expected empty: %t, got: %t", i, tc.isEmpty, result.Empty) + t.Errorf("[%d] expected empty: %t, got: %t", i, tc.isEmpty, result.Empty()) } if result.String() != tc.result { t.Errorf("[%d] unexpected result: %s", i, result.String()) diff --git a/vendor/k8s.io/apimachinery/pkg/labels/BUILD b/vendor/k8s.io/apimachinery/pkg/labels/BUILD index 5e4d9143b3..f49d05a27d 100644 --- a/vendor/k8s.io/apimachinery/pkg/labels/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/labels/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -15,7 +13,6 @@ go_test( "selector_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", @@ -28,12 +25,26 @@ go_library( "doc.go", "labels.go", "selector.go", + "zz_generated.deepcopy.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/labels/selector.go b/vendor/k8s.io/apimachinery/pkg/labels/selector.go index 50b41f99d2..ac123033a0 100644 --- a/vendor/k8s.io/apimachinery/pkg/labels/selector.go +++ b/vendor/k8s.io/apimachinery/pkg/labels/selector.go @@ -51,6 +51,9 @@ type Selector interface { // 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) + + // Make a deep copy of the selector. + DeepCopySelector() Selector } // Everything returns a selector that matches all labels. @@ -65,6 +68,7 @@ func (n nothingSelector) Empty() bool { return false } func (n nothingSelector) String() string { return "" } func (n nothingSelector) Add(_ ...Requirement) Selector { return n } func (n nothingSelector) Requirements() (Requirements, bool) { return nil, false } +func (n nothingSelector) DeepCopySelector() Selector { return n } // Nothing returns a selector that matches no labels func Nothing() Selector { @@ -78,6 +82,21 @@ func NewSelector() Selector { type internalSelector []Requirement +func (s internalSelector) DeepCopy() internalSelector { + if s == nil { + return nil + } + result := make([]Requirement, len(s)) + for i := range s { + s[i].DeepCopyInto(&result[i]) + } + return result +} + +func (s internalSelector) DeepCopySelector() Selector { + return s.DeepCopy() +} + // ByKey sorts requirements by key to obtain deterministic parser type ByKey []Requirement @@ -91,6 +110,7 @@ func (a ByKey) Less(i, j int) bool { return a[i].key < a[j].key } // 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. +// +k8s:deepcopy-gen=true type Requirement struct { key string operator selection.Operator diff --git a/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go new file mode 100644 index 0000000000..80ba3fb751 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/zz_generated.deepcopy.go @@ -0,0 +1,59 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 labels + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Requirement).DeepCopyInto(out.(*Requirement)) + return nil + }, InType: reflect.TypeOf(&Requirement{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Requirement) DeepCopyInto(out *Requirement) { + *out = *in + if in.strValues != nil { + in, out := &in.strValues, &out.strValues + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Requirement. +func (in *Requirement) DeepCopy() *Requirement { + if in == nil { + return nil + } + out := new(Requirement) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/k8s.io/apimachinery/pkg/openapi/BUILD b/vendor/k8s.io/apimachinery/pkg/openapi/BUILD deleted file mode 100644 index 4b3dfd4a0c..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/openapi/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", -) - -go_library( - name = "go_default_library", - srcs = [ - "common.go", - "doc.go", - ], - tags = ["automanaged"], - deps = [ - "//vendor/github.com/emicklei/go-restful:go_default_library", - "//vendor/github.com/go-openapi/spec:go_default_library", - ], -) diff --git a/vendor/k8s.io/apimachinery/pkg/openapi/common.go b/vendor/k8s.io/apimachinery/pkg/openapi/common.go deleted file mode 100644 index bfab64a1c2..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/openapi/common.go +++ /dev/null @@ -1,161 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package openapi - -import ( - "github.com/emicklei/go-restful" - "github.com/go-openapi/spec" - "strings" -) - -// OpenAPIDefinition describes single type. Normally these definitions are auto-generated using gen-openapi. -type OpenAPIDefinition struct { - Schema spec.Schema - Dependencies []string -} - -type ReferenceCallback func(path string) spec.Ref - -// OpenAPIDefinitions is collection of all definitions. -type GetOpenAPIDefinitions func(ReferenceCallback) 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 -} - -// Config is set of configuration for openAPI spec generation. -type Config struct { - // List of supported protocols such as https, http, etc. - ProtocolList []string - - // Info is general information about the API. - Info *spec.Info - - // DefaultResponse will be used if an operation does not have any responses listed. It - // will show up as ... "responses" : {"default" : $DefaultResponse} in the spec. - DefaultResponse *spec.Response - - // CommonResponses will be added as a response to all operation specs. This is a good place to add common - // responses such as authorization failed. - CommonResponses map[int]spec.Response - - // List of webservice's path prefixes to ignore - IgnorePrefixes []string - - // OpenAPIDefinitions should provide definition for all models used by routes. Failure to provide this map - // or any of the models will result in spec generation failure. - GetDefinitions GetOpenAPIDefinitions - - // GetOperationIDAndTags returns operation id and tags for a restful route. It is an optional function to customize operation IDs. - GetOperationIDAndTags func(r *restful.Route) (string, []string, error) - - // GetDefinitionName returns a friendly name for a definition base on the serving path. parameter `name` is the full name of the definition. - // It is an optional function to customize model names. - GetDefinitionName func(name string) (string, spec.Extensions) - - // PostProcessSpec runs after the spec is ready to serve. It allows a final modification to the spec before serving. - PostProcessSpec func(*spec.Swagger) (*spec.Swagger, error) - - // SecurityDefinitions is list of all security definitions for OpenAPI service. If this is not nil, the user of config - // is responsible to provide DefaultSecurity and (maybe) add unauthorized response to CommonResponses. - SecurityDefinitions *spec.SecurityDefinitions - - // DefaultSecurity for all operations. This will pass as spec.SwaggerProps.Security to OpenAPI. - // For most cases, this will be list of acceptable definitions in SecurityDefinitions. - DefaultSecurity []map[string][]string -} - -// 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 - "interface{}": {"object", ""}, - } - mapped, ok := schemaTypeFormatMap[typeName] - if !ok { - return "", "" - } - return mapped[0], mapped[1] -} - -func EscapeJsonPointer(p string) string { - // Escaping reference name using rfc6901 - p = strings.Replace(p, "~", "~0", -1) - p = strings.Replace(p, "/", "~1", -1) - return p -} diff --git a/vendor/k8s.io/apimachinery/pkg/openapi/doc.go b/vendor/k8s.io/apimachinery/pkg/openapi/doc.go deleted file mode 100644 index 5ed572cc13..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/openapi/doc.go +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// package openapi holds shared codes and types between open API code generator and spec generator. -package openapi diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/BUILD index 4fd7d5a7ee..ef9dc9af6f 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["swagger_doc_generator_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -36,7 +33,6 @@ go_library( "types_proto.go", "zz_generated.deepcopy.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", @@ -54,7 +50,6 @@ go_test( "extension_test.go", "scheme_test.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/google/gofuzz:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", @@ -63,6 +58,31 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/testing:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/testing:all-srcs", + ], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go b/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go index 8eedffc9c3..afe4fab15e 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go @@ -19,6 +19,7 @@ limitations under the License. package runtime import ( + "fmt" "reflect" "strconv" "strings" @@ -26,6 +27,20 @@ import ( "k8s.io/apimachinery/pkg/conversion" ) +// DefaultFieldSelectorConversion auto-accepts metav1 values for name and namespace. +// A cluster scoped resource specifying namespace empty works fine and specifying a particular +// namespace will return no results, as expected. +func DefaultMetaV1FieldSelectorConversion(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + case "metadata.namespace": + return label, value, nil + default: + return "", "", fmt.Errorf("%q is not a known field selector: only %q, %q", label, "metadata.name", "metadata.namespace") + } +} + // 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) { diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go index 692a5bfbb3..33670415b4 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go @@ -22,37 +22,17 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + runtimetesting "k8s.io/apimachinery/pkg/runtime/testing" ) -type InternalComplex struct { - runtime.TypeMeta - String string - Integer int - Integer64 int64 - Int64 int64 - Bool bool -} - -type ExternalComplex struct { - runtime.TypeMeta `json:",inline"` - String string `json:"string" description:"testing"` - Integer int `json:"int"` - Integer64 int64 `json:",omitempty"` - Int64 int64 - Bool bool `json:"bool"` -} - -func (obj *InternalComplex) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *ExternalComplex) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } - func TestStringMapConversion(t *testing.T) { internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} externalGV := schema.GroupVersion{Group: "test.group", Version: "external"} scheme := runtime.NewScheme() scheme.Log(t) - scheme.AddKnownTypeWithName(internalGV.WithKind("Complex"), &InternalComplex{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("Complex"), &ExternalComplex{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("Complex"), &runtimetesting.InternalComplex{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Complex"), &runtimetesting.ExternalComplex{}) testCases := map[string]struct { input map[string][]string @@ -66,62 +46,62 @@ func TestStringMapConversion(t *testing.T) { "int": {"1"}, "Integer64": {"2"}, }, - expected: &ExternalComplex{String: "value", Integer: 1}, + expected: &runtimetesting.ExternalComplex{String: "value", Integer: 1}, }, "returns error on bad int": { input: map[string][]string{ "int": {"a"}, }, errFn: func(err error) bool { return err != nil }, - expected: &ExternalComplex{}, + expected: &runtimetesting.ExternalComplex{}, }, "parses int64": { input: map[string][]string{ "Int64": {"-1"}, }, - expected: &ExternalComplex{Int64: -1}, + expected: &runtimetesting.ExternalComplex{Int64: -1}, }, "returns error on bad int64": { input: map[string][]string{ "Int64": {"a"}, }, errFn: func(err error) bool { return err != nil }, - expected: &ExternalComplex{}, + expected: &runtimetesting.ExternalComplex{}, }, "parses boolean true": { input: map[string][]string{ "bool": {"true"}, }, - expected: &ExternalComplex{Bool: true}, + expected: &runtimetesting.ExternalComplex{Bool: true}, }, "parses boolean any value": { input: map[string][]string{ "bool": {"foo"}, }, - expected: &ExternalComplex{Bool: true}, + expected: &runtimetesting.ExternalComplex{Bool: true}, }, "parses boolean false": { input: map[string][]string{ "bool": {"false"}, }, - expected: &ExternalComplex{Bool: false}, + expected: &runtimetesting.ExternalComplex{Bool: false}, }, "parses boolean empty value": { input: map[string][]string{ "bool": {""}, }, - expected: &ExternalComplex{Bool: true}, + expected: &runtimetesting.ExternalComplex{Bool: true}, }, "parses boolean no value": { input: map[string][]string{ "bool": {}, }, - expected: &ExternalComplex{Bool: false}, + expected: &runtimetesting.ExternalComplex{Bool: false}, }, } for k, tc := range testCases { - out := &ExternalComplex{} + out := &runtimetesting.ExternalComplex{} if err := scheme.Convert(&tc.input, out, nil); (tc.errFn == nil && err != nil) || (tc.errFn != nil && !tc.errFn(err)) { t.Errorf("%s: unexpected error: %v", k, err) continue diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go b/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go index e8825a787a..2cdac9e141 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go @@ -30,6 +30,12 @@ type encodable struct { } func (e encodable) GetObjectKind() schema.ObjectKind { return e.obj.GetObjectKind() } +func (e encodable) DeepCopyObject() Object { + var out encodable = e + out.obj = e.obj.DeepCopyObject() + copy(out.versions, e.versions) + return out +} // 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. diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go index a70b7f9b6d..606e0e96ad 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go @@ -25,50 +25,18 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" + runtimetesting "k8s.io/apimachinery/pkg/runtime/testing" "k8s.io/apimachinery/pkg/util/diff" ) -type EmbeddedTest struct { - runtime.TypeMeta - ID string - Object runtime.Object - EmptyObject runtime.Object -} - -type EmbeddedTestExternal struct { - runtime.TypeMeta `json:",inline"` - ID string `json:"id,omitempty"` - Object runtime.RawExtension `json:"object,omitempty"` - EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"` -} - -type ObjectTest struct { - runtime.TypeMeta - - ID string - Items []runtime.Object -} - -type ObjectTestExternal struct { - runtime.TypeMeta `yaml:",inline" json:",inline"` - - ID string `json:"id,omitempty"` - Items []runtime.RawExtension `json:"items,omitempty"` -} - -func (obj *ObjectTest) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *ObjectTestExternal) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *EmbeddedTest) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *EmbeddedTestExternal) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } - func TestDecodeEmptyRawExtensionAsObject(t *testing.T) { internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} externalGV := schema.GroupVersion{Group: "test.group", Version: "v1test"} externalGVK := externalGV.WithKind("ObjectTest") s := runtime.NewScheme() - s.AddKnownTypes(internalGV, &ObjectTest{}) - s.AddKnownTypeWithName(externalGVK, &ObjectTestExternal{}) + s.AddKnownTypes(internalGV, &runtimetesting.ObjectTest{}) + s.AddKnownTypeWithName(externalGVK, &runtimetesting.ObjectTestExternal{}) codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) @@ -76,7 +44,7 @@ func TestDecodeEmptyRawExtensionAsObject(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - test := obj.(*ObjectTest) + test := obj.(*runtimetesting.ObjectTest) if unk, ok := test.Items[0].(*runtime.Unknown); !ok || unk.Kind != "" || unk.APIVersion != "" || string(unk.Raw) != "{}" || unk.ContentType != runtime.ContentTypeJSON { t.Fatalf("unexpected object: %#v", test.Items[0]) } @@ -88,7 +56,7 @@ func TestDecodeEmptyRawExtensionAsObject(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - test = obj.(*ObjectTest) + test = obj.(*runtimetesting.ObjectTest) if unk, ok := test.Items[0].(*runtime.Unknown); !ok || unk.Kind != "" || unk.APIVersion != "" || string(unk.Raw) != `{"kind":"Other","apiVersion":"v1"}` || unk.ContentType != runtime.ContentTypeJSON { t.Fatalf("unexpected object: %#v", test.Items[0]) } @@ -102,29 +70,29 @@ func TestArrayOfRuntimeObject(t *testing.T) { externalGV := schema.GroupVersion{Group: "test.group", Version: "v1test"} s := runtime.NewScheme() - s.AddKnownTypes(internalGV, &EmbeddedTest{}) - s.AddKnownTypeWithName(externalGV.WithKind("EmbeddedTest"), &EmbeddedTestExternal{}) - s.AddKnownTypes(internalGV, &ObjectTest{}) - s.AddKnownTypeWithName(externalGV.WithKind("ObjectTest"), &ObjectTestExternal{}) + s.AddKnownTypes(internalGV, &runtimetesting.EmbeddedTest{}) + s.AddKnownTypeWithName(externalGV.WithKind("EmbeddedTest"), &runtimetesting.EmbeddedTestExternal{}) + s.AddKnownTypes(internalGV, &runtimetesting.ObjectTest{}) + s.AddKnownTypeWithName(externalGV.WithKind("ObjectTest"), &runtimetesting.ObjectTestExternal{}) codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) innerItems := []runtime.Object{ - &EmbeddedTest{ID: "baz"}, + &runtimetesting.EmbeddedTest{ID: "baz"}, } items := []runtime.Object{ - &EmbeddedTest{ID: "foo"}, - &EmbeddedTest{ID: "bar"}, + &runtimetesting.EmbeddedTest{ID: "foo"}, + &runtimetesting.EmbeddedTest{ID: "bar"}, // TODO: until YAML is removed, this JSON must be in ascending key order to ensure consistent roundtrip serialization &runtime.Unknown{ Raw: []byte(`{"apiVersion":"unknown.group/unknown","foo":"bar","kind":"OtherTest"}`), ContentType: runtime.ContentTypeJSON, }, - &ObjectTest{ + &runtimetesting.ObjectTest{ Items: runtime.NewEncodableList(codec, innerItems), }, } - internal := &ObjectTest{ + internal := &runtimetesting.ObjectTest{ Items: runtime.NewEncodableList(codec, items), } wire, err := runtime.Encode(codec, internal) @@ -133,13 +101,13 @@ func TestArrayOfRuntimeObject(t *testing.T) { } t.Logf("Wire format is:\n%s\n", string(wire)) - obj := &ObjectTestExternal{} + obj := &runtimetesting.ObjectTestExternal{} if err := json.Unmarshal(wire, obj); err != nil { t.Fatalf("unexpected error: %v", err) } t.Logf("exact wire is: %s", string(obj.Items[0].Raw)) - items[3] = &ObjectTest{Items: innerItems} + items[3] = &runtimetesting.ObjectTest{Items: innerItems} internal.Items = items decoded, err := runtime.Decode(codec, wire) @@ -178,15 +146,15 @@ func TestNestedObject(t *testing.T) { embeddedTestExternalGVK := externalGV.WithKind("EmbeddedTest") s := runtime.NewScheme() - s.AddKnownTypes(internalGV, &EmbeddedTest{}) - s.AddKnownTypeWithName(embeddedTestExternalGVK, &EmbeddedTestExternal{}) + s.AddKnownTypes(internalGV, &runtimetesting.EmbeddedTest{}) + s.AddKnownTypeWithName(embeddedTestExternalGVK, &runtimetesting.EmbeddedTestExternal{}) codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) - inner := &EmbeddedTest{ + inner := &runtimetesting.EmbeddedTest{ ID: "inner", } - outer := &EmbeddedTest{ + outer := &runtimetesting.EmbeddedTest{ ID: "outer", Object: runtime.NewEncodable(codec, inner), } @@ -210,18 +178,18 @@ func TestNestedObject(t *testing.T) { t.Errorf("Expected unequal %#v %#v", e, a) } - obj, err := runtime.Decode(codec, decoded.(*EmbeddedTest).Object.(*runtime.Unknown).Raw) + obj, err := runtime.Decode(codec, decoded.(*runtimetesting.EmbeddedTest).Object.(*runtime.Unknown).Raw) if err != nil { t.Fatal(err) } - decoded.(*EmbeddedTest).Object = obj + decoded.(*runtimetesting.EmbeddedTest).Object = obj if e, a := outer, decoded; !reflect.DeepEqual(e, a) { t.Errorf("Expected equal %#v %#v", e, a) } // test JSON decoding of the external object, which should preserve // raw bytes - var externalViaJSON EmbeddedTestExternal + var externalViaJSON runtimetesting.EmbeddedTestExternal err = json.Unmarshal(wire, &externalViaJSON) if err != nil { t.Fatalf("Unexpected decode error %v", err) @@ -229,15 +197,15 @@ func TestNestedObject(t *testing.T) { if externalViaJSON.Kind == "" || externalViaJSON.APIVersion == "" || externalViaJSON.ID != "outer" { t.Errorf("Expected objects to have type info set, got %#v", externalViaJSON) } - if !reflect.DeepEqual(externalViaJSON.EmptyObject.Raw, []byte("null")) || len(externalViaJSON.Object.Raw) == 0 { - t.Errorf("Expected deserialization of nested objects into bytes, got %#v", externalViaJSON) + if len(externalViaJSON.EmptyObject.Raw) > 0 { + t.Errorf("Expected deserialization of empty nested objects into empty bytes, got %#v", externalViaJSON) } // test JSON decoding, too, since Decode uses yaml unmarshalling. // Generic Unmarshalling of JSON cannot load the nested objects because there is // no default schema set. Consumers wishing to get direct JSON decoding must use // the external representation - var decodedViaJSON EmbeddedTest + var decodedViaJSON runtimetesting.EmbeddedTest err = json.Unmarshal(wire, &decodedViaJSON) if err == nil { t.Fatal("Expeceted decode error") @@ -257,12 +225,12 @@ func TestDeepCopyOfRuntimeObject(t *testing.T) { embeddedTestExternalGVK := externalGV.WithKind("EmbeddedTest") s := runtime.NewScheme() - s.AddKnownTypes(internalGV, &EmbeddedTest{}) - s.AddKnownTypeWithName(embeddedTestExternalGVK, &EmbeddedTestExternal{}) + s.AddKnownTypes(internalGV, &runtimetesting.EmbeddedTest{}) + s.AddKnownTypeWithName(embeddedTestExternalGVK, &runtimetesting.EmbeddedTestExternal{}) - original := &EmbeddedTest{ + original := &runtimetesting.EmbeddedTest{ ID: "outer", - Object: &EmbeddedTest{ + Object: &runtimetesting.EmbeddedTest{ ID: "inner", }, } @@ -275,12 +243,8 @@ func TestDeepCopyOfRuntimeObject(t *testing.T) { } t.Logf("originalRole = %v\n", string(originalData)) - copyOfOriginal, err := s.DeepCopy(original) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - - copiedData, err := runtime.Encode(codec, copyOfOriginal.(runtime.Object)) + copyOfOriginal := original.DeepCopy() + copiedData, err := runtime.Encode(codec, copyOfOriginal) if err != nil { t.Errorf("unexpected error: %v", err) } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/extension.go b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go index 4d23ee9ee3..737e2e9ff5 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/extension.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go @@ -17,6 +17,7 @@ limitations under the License. package runtime import ( + "bytes" "encoding/json" "errors" ) @@ -25,7 +26,9 @@ 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...) + if !bytes.Equal(in, []byte("null")) { + re.Raw = append(re.Raw[0:0], in...) + } return nil } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go index 9523f3144f..5f9154ea6b 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go @@ -17,7 +17,9 @@ limitations under the License. package runtime_test import ( + "bytes" "encoding/json" + "reflect" "testing" "k8s.io/apimachinery/pkg/runtime" @@ -37,3 +39,75 @@ func TestEmbeddedRawExtensionMarshal(t *testing.T) { t.Errorf("unexpected data: %s", string(data)) } } +func TestEmbeddedRawExtensionUnmarshal(t *testing.T) { + type test struct { + Ext runtime.RawExtension + } + + testCases := map[string]struct { + orig test + }{ + "non-empty object": { + orig: test{Ext: runtime.RawExtension{Raw: []byte(`{"foo":"bar"}`)}}, + }, + "empty object": { + orig: test{Ext: runtime.RawExtension{}}, + }, + } + + for k, tc := range testCases { + new := test{} + data, _ := json.Marshal(tc.orig) + if err := json.Unmarshal(data, &new); err != nil { + t.Errorf("%s: umarshal error: %v", k, err) + } + if !reflect.DeepEqual(tc.orig, new) { + t.Errorf("%s: unmarshaled struct differs from original: %v %v", k, tc.orig, new) + } + } +} + +func TestEmbeddedRawExtensionRoundTrip(t *testing.T) { + type test struct { + Ext runtime.RawExtension + } + + testCases := map[string]struct { + orig test + }{ + "non-empty object": { + orig: test{Ext: runtime.RawExtension{Raw: []byte(`{"foo":"bar"}`)}}, + }, + "empty object": { + orig: test{Ext: runtime.RawExtension{}}, + }, + } + + for k, tc := range testCases { + new1 := test{} + new2 := test{} + data, err := json.Marshal(tc.orig) + if err != nil { + t.Errorf("1st marshal error: %v", err) + } + if err = json.Unmarshal(data, &new1); err != nil { + t.Errorf("1st unmarshal error: %v", err) + } + newData, err := json.Marshal(new1) + if err != nil { + t.Errorf("2st marshal error: %v", err) + } + if err = json.Unmarshal(newData, &new2); err != nil { + t.Errorf("2nd unmarshal error: %v", err) + } + if !bytes.Equal(data, newData) { + t.Errorf("%s: re-marshaled data differs from original: %v %v", k, data, newData) + } + if !reflect.DeepEqual(tc.orig, new1) { + t.Errorf("%s: unmarshaled struct differs from original: %v %v", k, tc.orig, new1) + } + if !reflect.DeepEqual(new1, new2) { + t.Errorf("%s: re-unmarshaled struct differs from original: %v %v", k, new1, new2) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto index 57fc840785..b3fd09c3c5 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto @@ -89,7 +89,7 @@ message RawExtension { // 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 +// +k8s:deepcopy-gen=false // +protobuf=true // +k8s:openapi-gen=true message TypeMeta { @@ -107,6 +107,7 @@ message TypeMeta { // metadata and field mutatation. // // +k8s:deepcopy-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +protobuf=true // +k8s:openapi-gen=true message Unknown { diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go index fcb18ba111..db4c2807e6 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go @@ -234,6 +234,7 @@ type SelfLinker interface { // to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized. type Object interface { GetObjectKind() schema.ObjectKind + DeepCopyObject() Object } // Unstructured objects store values as map[string]interface{}, with only values that can be serialized @@ -242,10 +243,14 @@ type Unstructured interface { // IsUnstructuredObject is a marker interface to allow objects that can be serialized but not introspected // to bypass conversion. IsUnstructuredObject() - // IsList returns true if this type is a list or matches the list convention - has an array called "items". - IsList() bool // UnstructuredContent returns a non-nil, mutable map of the contents of this object. Values may be // []interface{}, map[string]interface{}, or any primitive type. Contents are typically serialized to // and from JSON. UnstructuredContent() map[string]interface{} + // IsList returns true if this type is a list or matches the list convention - has an array called "items". + IsList() bool + // EachListItem should pass a single item out of the list as an Object to the provided function. Any + // error should terminate the iteration. If IsList() returns false, this method should return an error + // instead of calling the provided function. + EachListItem(func(Object) error) error } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/register.go b/vendor/k8s.io/apimachinery/pkg/runtime/register.go index 2ec6db8201..eeb380c3dc 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/register.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/register.go @@ -28,7 +28,7 @@ func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind { return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } -func (obj *Unknown) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *TypeMeta) GetObjectKind() schema.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 diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD index 660497064b..07faa4dc5f 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["group_version_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -22,6 +19,24 @@ go_library( "group_version.go", "interfaces.go", ], - tags = ["automanaged"], deps = ["//vendor/github.com/gogo/protobuf/proto:go_default_library"], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go index 6c9475fa0d..c3d4b7f5f8 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go @@ -454,11 +454,11 @@ func (s *Scheme) Convert(in, out interface{}, context interface{}) error { // 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) + return DefaultMetaV1FieldSelectorConversion(label, value) } 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 DefaultMetaV1FieldSelectorConversion(label, value) } return conversionFunc(label, value) } @@ -530,11 +530,7 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) ( } if copy { - copied, err := s.Copy(in) - if err != nil { - return nil, err - } - in = copied + in = in.DeepCopyObject() } flags, meta := s.generateConvertMeta(in) @@ -555,11 +551,7 @@ func (s *Scheme) generateConvertMeta(in interface{}) (conversion.FieldMatchingFl // 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 schema.GroupVersionKind) (Object, error) { if copy { - copied, err := copier.Copy(obj) - if err != nil { - return nil, err - } - obj = copied + obj = obj.DeepCopyObject() } setTargetKind(obj, kind) return obj, nil diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go index 8b56ece226..3e623f6421 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go @@ -28,31 +28,19 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" + runtimetesting "k8s.io/apimachinery/pkg/runtime/testing" "k8s.io/apimachinery/pkg/util/diff" ) var fuzzIters = flag.Int("fuzz-iters", 50, "How many fuzzing iterations to do.") -type InternalSimple struct { - runtime.TypeMeta `json:",inline"` - TestString string `json:"testString"` -} - -type ExternalSimple struct { - runtime.TypeMeta `json:",inline"` - TestString string `json:"testString"` -} - -func (obj *InternalSimple) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *ExternalSimple) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } - func TestScheme(t *testing.T) { internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} scheme := runtime.NewScheme() - scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &runtimetesting.InternalSimple{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &runtimetesting.ExternalSimple{}) // If set, would clear TypeMeta during conversion. //scheme.AddIgnoredConversionType(&TypeMeta{}, &TypeMeta{}) @@ -65,13 +53,13 @@ func TestScheme(t *testing.T) { // Register functions to verify that scope.Meta() gets set correctly. err := scheme.AddConversionFuncs( - func(in *InternalSimple, out *ExternalSimple, scope conversion.Scope) error { + func(in *runtimetesting.InternalSimple, out *runtimetesting.ExternalSimple, scope conversion.Scope) error { scope.Convert(&in.TypeMeta, &out.TypeMeta, 0) scope.Convert(&in.TestString, &out.TestString, 0) internalToExternalCalls++ return nil }, - func(in *ExternalSimple, out *InternalSimple, scope conversion.Scope) error { + func(in *runtimetesting.ExternalSimple, out *runtimetesting.InternalSimple, scope conversion.Scope) error { scope.Convert(&in.TypeMeta, &out.TypeMeta, 0) scope.Convert(&in.TestString, &out.TestString, 0) externalToInternalCalls++ @@ -87,7 +75,7 @@ func TestScheme(t *testing.T) { info, _ := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), runtime.ContentTypeJSON) jsonserializer := info.Serializer - simple := &InternalSimple{ + simple := &runtimetesting.InternalSimple{ TestString: "foo", } @@ -102,14 +90,14 @@ func TestScheme(t *testing.T) { if err != nil { t.Fatal(err) } - if _, ok := obj2.(*InternalSimple); !ok { + if _, ok := obj2.(*runtimetesting.InternalSimple); !ok { t.Fatalf("Got wrong type") } if e, a := simple, obj2; !reflect.DeepEqual(e, a) { t.Errorf("Expected:\n %#v,\n Got:\n %#v", e, a) } - obj3 := &InternalSimple{} + obj3 := &runtimetesting.InternalSimple{} if err := runtime.DecodeInto(codec, data, obj3); err != nil { t.Fatal(err) } @@ -124,12 +112,12 @@ func TestScheme(t *testing.T) { if err != nil { t.Fatal(err) } - if _, ok := obj4.(*ExternalSimple); !ok { + if _, ok := obj4.(*runtimetesting.ExternalSimple); !ok { t.Fatalf("Got wrong type") } // Test Convert - external := &ExternalSimple{} + external := &runtimetesting.ExternalSimple{} err = scheme.Convert(simple, external, nil) if err != nil { t.Fatalf("Unexpected error: %v", err) @@ -168,50 +156,13 @@ func TestBadJSONRejection(t *testing.T) { }*/ } -type ExtensionA struct { - runtime.TypeMeta `json:",inline"` - TestString string `json:"testString"` -} - -type ExtensionB struct { - runtime.TypeMeta `json:",inline"` - TestString string `json:"testString"` -} - -type ExternalExtensionType struct { - runtime.TypeMeta `json:",inline"` - Extension runtime.RawExtension `json:"extension"` -} - -type InternalExtensionType struct { - runtime.TypeMeta `json:",inline"` - Extension runtime.Object `json:"extension"` -} - -type ExternalOptionalExtensionType struct { - runtime.TypeMeta `json:",inline"` - Extension runtime.RawExtension `json:"extension,omitempty"` -} - -type InternalOptionalExtensionType struct { - runtime.TypeMeta `json:",inline"` - Extension runtime.Object `json:"extension,omitempty"` -} - -func (obj *ExtensionA) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *ExtensionB) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *ExternalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *InternalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *ExternalOptionalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *InternalOptionalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } - func TestExternalToInternalMapping(t *testing.T) { internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} scheme := runtime.NewScheme() - scheme.AddKnownTypeWithName(internalGV.WithKind("OptionalExtensionType"), &InternalOptionalExtensionType{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("OptionalExtensionType"), &ExternalOptionalExtensionType{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("OptionalExtensionType"), &runtimetesting.InternalOptionalExtensionType{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("OptionalExtensionType"), &runtimetesting.ExternalOptionalExtensionType{}) codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) @@ -220,7 +171,7 @@ func TestExternalToInternalMapping(t *testing.T) { encoded string }{ { - &InternalOptionalExtensionType{Extension: nil}, + &runtimetesting.InternalOptionalExtensionType{Extension: nil}, `{"kind":"OptionalExtensionType","apiVersion":"` + externalGV.String() + `"}`, }, } @@ -240,17 +191,17 @@ func TestExtensionMapping(t *testing.T) { externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} scheme := runtime.NewScheme() - scheme.AddKnownTypeWithName(internalGV.WithKind("ExtensionType"), &InternalExtensionType{}) - scheme.AddKnownTypeWithName(internalGV.WithKind("OptionalExtensionType"), &InternalOptionalExtensionType{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("ExtensionType"), &ExternalExtensionType{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("OptionalExtensionType"), &ExternalOptionalExtensionType{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("ExtensionType"), &runtimetesting.InternalExtensionType{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("OptionalExtensionType"), &runtimetesting.InternalOptionalExtensionType{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("ExtensionType"), &runtimetesting.ExternalExtensionType{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("OptionalExtensionType"), &runtimetesting.ExternalOptionalExtensionType{}) // register external first when the object is the same in both schemes, so ObjectVersionAndKind reports the // external version. - scheme.AddKnownTypeWithName(externalGV.WithKind("A"), &ExtensionA{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("B"), &ExtensionB{}) - scheme.AddKnownTypeWithName(internalGV.WithKind("A"), &ExtensionA{}) - scheme.AddKnownTypeWithName(internalGV.WithKind("B"), &ExtensionB{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("A"), &runtimetesting.ExtensionA{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("B"), &runtimetesting.ExtensionB{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("A"), &runtimetesting.ExtensionA{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("B"), &runtimetesting.ExtensionB{}) codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) @@ -260,10 +211,10 @@ func TestExtensionMapping(t *testing.T) { encoded string }{ { - &InternalExtensionType{ - Extension: runtime.NewEncodable(codec, &ExtensionA{TestString: "foo"}), + &runtimetesting.InternalExtensionType{ + Extension: runtime.NewEncodable(codec, &runtimetesting.ExtensionA{TestString: "foo"}), }, - &InternalExtensionType{ + &runtimetesting.InternalExtensionType{ Extension: &runtime.Unknown{ Raw: []byte(`{"apiVersion":"test.group/testExternal","kind":"A","testString":"foo"}`), ContentType: runtime.ContentTypeJSON, @@ -273,8 +224,8 @@ func TestExtensionMapping(t *testing.T) { `{"apiVersion":"` + externalGV.String() + `","kind":"ExtensionType","extension":{"apiVersion":"test.group/testExternal","kind":"A","testString":"foo"}} `, }, { - &InternalExtensionType{Extension: runtime.NewEncodable(codec, &ExtensionB{TestString: "bar"})}, - &InternalExtensionType{ + &runtimetesting.InternalExtensionType{Extension: runtime.NewEncodable(codec, &runtimetesting.ExtensionB{TestString: "bar"})}, + &runtimetesting.InternalExtensionType{ Extension: &runtime.Unknown{ Raw: []byte(`{"apiVersion":"test.group/testExternal","kind":"B","testString":"bar"}`), ContentType: runtime.ContentTypeJSON, @@ -284,8 +235,8 @@ func TestExtensionMapping(t *testing.T) { `{"apiVersion":"` + externalGV.String() + `","kind":"ExtensionType","extension":{"apiVersion":"test.group/testExternal","kind":"B","testString":"bar"}} `, }, { - &InternalExtensionType{Extension: nil}, - &InternalExtensionType{ + &runtimetesting.InternalExtensionType{Extension: nil}, + &runtimetesting.InternalExtensionType{ Extension: nil, }, `{"apiVersion":"` + externalGV.String() + `","kind":"ExtensionType","extension":null} @@ -315,12 +266,12 @@ func TestEncode(t *testing.T) { externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} scheme := runtime.NewScheme() - scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &runtimetesting.InternalSimple{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &runtimetesting.ExternalSimple{}) codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) - test := &InternalSimple{ + test := &runtimetesting.InternalSimple{ TestString: "I'm the same", } obj := runtime.Object(test) @@ -329,7 +280,7 @@ func TestEncode(t *testing.T) { if err != nil || err2 != nil { t.Fatalf("Failure: '%v' '%v'", err, err2) } - if _, ok := obj2.(*InternalSimple); !ok { + if _, ok := obj2.(*runtimetesting.InternalSimple); !ok { t.Fatalf("Got wrong type") } if !reflect.DeepEqual(obj2, test) { @@ -346,18 +297,18 @@ func TestUnversionedTypes(t *testing.T) { otherGV := schema.GroupVersion{Group: "group", Version: "other"} scheme := runtime.NewScheme() - scheme.AddUnversionedTypes(externalGV, &InternalSimple{}) - scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) - scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) - scheme.AddKnownTypeWithName(otherGV.WithKind("Simple"), &ExternalSimple{}) + scheme.AddUnversionedTypes(externalGV, &runtimetesting.InternalSimple{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &runtimetesting.InternalSimple{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &runtimetesting.ExternalSimple{}) + scheme.AddKnownTypeWithName(otherGV.WithKind("Simple"), &runtimetesting.ExternalSimple{}) codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) - if unv, ok := scheme.IsUnversioned(&InternalSimple{}); !unv || !ok { + if unv, ok := scheme.IsUnversioned(&runtimetesting.InternalSimple{}); !unv || !ok { t.Fatalf("type not unversioned and in scheme: %t %t", unv, ok) } - kinds, _, err := scheme.ObjectKinds(&InternalSimple{}) + kinds, _, err := scheme.ObjectKinds(&runtimetesting.InternalSimple{}) if err != nil { t.Fatal(err) } @@ -366,7 +317,7 @@ func TestUnversionedTypes(t *testing.T) { t.Fatalf("unexpected: %#v", kind) } - test := &InternalSimple{ + test := &runtimetesting.InternalSimple{ TestString: "I'm the same", } obj := runtime.Object(test) @@ -378,7 +329,7 @@ func TestUnversionedTypes(t *testing.T) { if err != nil { t.Fatal(err) } - if _, ok := obj2.(*InternalSimple); !ok { + if _, ok := obj2.(*runtimetesting.InternalSimple); !ok { t.Fatalf("Got wrong type") } if !reflect.DeepEqual(obj2, test) { @@ -400,107 +351,9 @@ func TestUnversionedTypes(t *testing.T) { } } -// Test a weird version/kind embedding format. -type MyWeirdCustomEmbeddedVersionKindField struct { - ID string `json:"ID,omitempty"` - APIVersion string `json:"myVersionKey,omitempty"` - ObjectKind string `json:"myKindKey,omitempty"` - Z string `json:"Z,omitempty"` - Y uint64 `json:"Y,omitempty"` -} - -type TestType1 struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` - C int8 `json:"C,omitempty"` - D int16 `json:"D,omitempty"` - E int32 `json:"E,omitempty"` - F int64 `json:"F,omitempty"` - G uint `json:"G,omitempty"` - H uint8 `json:"H,omitempty"` - I uint16 `json:"I,omitempty"` - J uint32 `json:"J,omitempty"` - K uint64 `json:"K,omitempty"` - L bool `json:"L,omitempty"` - M map[string]int `json:"M,omitempty"` - N map[string]TestType2 `json:"N,omitempty"` - O *TestType2 `json:"O,omitempty"` - P []TestType2 `json:"Q,omitempty"` -} - -type TestType2 struct { - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` -} - -type ExternalTestType2 struct { - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` -} -type ExternalTestType1 struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` - C int8 `json:"C,omitempty"` - D int16 `json:"D,omitempty"` - E int32 `json:"E,omitempty"` - F int64 `json:"F,omitempty"` - G uint `json:"G,omitempty"` - H uint8 `json:"H,omitempty"` - I uint16 `json:"I,omitempty"` - J uint32 `json:"J,omitempty"` - K uint64 `json:"K,omitempty"` - L bool `json:"L,omitempty"` - M map[string]int `json:"M,omitempty"` - N map[string]ExternalTestType2 `json:"N,omitempty"` - O *ExternalTestType2 `json:"O,omitempty"` - P []ExternalTestType2 `json:"Q,omitempty"` -} - -type ExternalInternalSame struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A TestType2 `json:"A,omitempty"` -} - -type UnversionedType struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A string `json:"A,omitempty"` -} - -type UnknownType struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A string `json:"A,omitempty"` -} - -func (obj *MyWeirdCustomEmbeddedVersionKindField) GetObjectKind() schema.ObjectKind { return obj } -func (obj *MyWeirdCustomEmbeddedVersionKindField) SetGroupVersionKind(gvk schema.GroupVersionKind) { - obj.APIVersion, obj.ObjectKind = gvk.ToAPIVersionAndKind() -} -func (obj *MyWeirdCustomEmbeddedVersionKindField) GroupVersionKind() schema.GroupVersionKind { - return schema.FromAPIVersionAndKind(obj.APIVersion, obj.ObjectKind) -} - -func (obj *ExternalInternalSame) GetObjectKind() schema.ObjectKind { - return &obj.MyWeirdCustomEmbeddedVersionKindField -} - -func (obj *TestType1) GetObjectKind() schema.ObjectKind { - return &obj.MyWeirdCustomEmbeddedVersionKindField -} - -func (obj *ExternalTestType1) GetObjectKind() schema.ObjectKind { - return &obj.MyWeirdCustomEmbeddedVersionKindField -} - -func (obj *TestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } -func (obj *ExternalTestType2) GetObjectKind() schema.ObjectKind { - return schema.EmptyObjectKind -} - // TestObjectFuzzer can randomly populate all the above objects. var TestObjectFuzzer = fuzz.New().NilChance(.5).NumElements(1, 100).Funcs( - func(j *MyWeirdCustomEmbeddedVersionKindField, c fuzz.Continue) { + func(j *runtimetesting.MyWeirdCustomEmbeddedVersionKindField, c fuzz.Continue) { // We have to customize the randomization of MyWeirdCustomEmbeddedVersionKindFields because their // APIVersion and Kind must remain blank in memory. j.APIVersion = "" @@ -520,17 +373,17 @@ func GetTestScheme() *runtime.Scheme { // Ordinarily, we wouldn't add TestType2, but because this is a test and // both types are from the same package, we need to get it into the system // so that converter will match it with ExternalType2. - s.AddKnownTypes(internalGV, &TestType1{}, &TestType2{}, &ExternalInternalSame{}) - s.AddKnownTypes(externalGV, &ExternalInternalSame{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &ExternalTestType1{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &ExternalTestType2{}) - s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &TestType1{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &ExternalTestType1{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType4"), &ExternalTestType1{}) - s.AddKnownTypeWithName(alternateExternalGV.WithKind("TestType3"), &ExternalTestType1{}) - s.AddKnownTypeWithName(alternateExternalGV.WithKind("TestType5"), &ExternalTestType1{}) - s.AddKnownTypeWithName(differentExternalGV.WithKind("TestType1"), &ExternalTestType1{}) - s.AddUnversionedTypes(externalGV, &UnversionedType{}) + s.AddKnownTypes(internalGV, &runtimetesting.TestType1{}, &runtimetesting.TestType2{}, &runtimetesting.ExternalInternalSame{}) + s.AddKnownTypes(externalGV, &runtimetesting.ExternalInternalSame{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &runtimetesting.ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &runtimetesting.ExternalTestType2{}) + s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &runtimetesting.TestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &runtimetesting.ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType4"), &runtimetesting.ExternalTestType1{}) + s.AddKnownTypeWithName(alternateExternalGV.WithKind("TestType3"), &runtimetesting.ExternalTestType1{}) + s.AddKnownTypeWithName(alternateExternalGV.WithKind("TestType5"), &runtimetesting.ExternalTestType1{}) + s.AddKnownTypeWithName(differentExternalGV.WithKind("TestType1"), &runtimetesting.ExternalTestType1{}) + s.AddUnversionedTypes(externalGV, &runtimetesting.UnversionedType{}) return s } @@ -552,8 +405,8 @@ func TestAddKnownTypesIdemPotent(t *testing.T) { s := runtime.NewScheme() gv := schema.GroupVersion{Group: "foo", Version: "v1"} - s.AddKnownTypes(gv, &InternalSimple{}) - s.AddKnownTypes(gv, &InternalSimple{}) + s.AddKnownTypes(gv, &runtimetesting.InternalSimple{}) + s.AddKnownTypes(gv, &runtimetesting.InternalSimple{}) if len(s.KnownTypes(gv)) != 1 { t.Errorf("expected only one %v type after double registration", gv) } @@ -561,8 +414,8 @@ func TestAddKnownTypesIdemPotent(t *testing.T) { t.Errorf("expected only one type after double registration") } - s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &InternalSimple{}) - s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &InternalSimple{}) + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &runtimetesting.InternalSimple{}) + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &runtimetesting.InternalSimple{}) if len(s.KnownTypes(gv)) != 1 { t.Errorf("expected only one %v type after double registration with custom name", gv) } @@ -570,8 +423,8 @@ func TestAddKnownTypesIdemPotent(t *testing.T) { t.Errorf("expected only one type after double registration with custom name") } - s.AddUnversionedTypes(gv, &InternalSimple{}) - s.AddUnversionedTypes(gv, &InternalSimple{}) + s.AddUnversionedTypes(gv, &runtimetesting.InternalSimple{}) + s.AddUnversionedTypes(gv, &runtimetesting.InternalSimple{}) if len(s.KnownTypes(gv)) != 1 { t.Errorf("expected only one %v type after double registration with custom name", gv) } @@ -579,7 +432,7 @@ func TestAddKnownTypesIdemPotent(t *testing.T) { t.Errorf("expected only one type after double registration with custom name") } - kinds, _, err := s.ObjectKinds(&InternalSimple{}) + kinds, _, err := s.ObjectKinds(&runtimetesting.InternalSimple{}) if err != nil { t.Fatalf("unexpected error: %v", err) } @@ -588,10 +441,13 @@ func TestAddKnownTypesIdemPotent(t *testing.T) { } } -// EmbeddableTypeMeta passes GetObjectKind to the type which embeds it. -type EmbeddableTypeMeta runtime.TypeMeta +// redefine InternalSimple with the same name, but obviously as a different type than in runtimetesting +type InternalSimple struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} -func (tm *EmbeddableTypeMeta) GetObjectKind() schema.ObjectKind { return (*runtime.TypeMeta)(tm) } +func (s *InternalSimple) DeepCopyObject() runtime.Object { return nil } func TestConflictingAddKnownTypes(t *testing.T) { s := runtime.NewScheme() @@ -604,8 +460,8 @@ func TestConflictingAddKnownTypes(t *testing.T) { panicked <- true } }() - s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &InternalSimple{}) - s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &ExternalSimple{}) + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &runtimetesting.InternalSimple{}) + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &runtimetesting.ExternalSimple{}) panicked <- false }() if !<-panicked { @@ -619,13 +475,7 @@ func TestConflictingAddKnownTypes(t *testing.T) { } }() - s.AddUnversionedTypes(gv, &InternalSimple{}) - - // redefine InternalSimple with the same name, but obviously as a different type - type InternalSimple struct { - EmbeddableTypeMeta `json:",inline"` - TestString string `json:"testString"` - } + s.AddUnversionedTypes(gv, &runtimetesting.InternalSimple{}) s.AddUnversionedTypes(gv, &InternalSimple{}) panicked <- false }() @@ -636,12 +486,12 @@ func TestConflictingAddKnownTypes(t *testing.T) { func TestConvertToVersionBasic(t *testing.T) { s := GetTestScheme() - tt := &TestType1{A: "I'm not a pointer object"} + tt := &runtimetesting.TestType1{A: "I'm not a pointer object"} other, err := s.ConvertToVersion(tt, schema.GroupVersion{Version: "v1"}) if err != nil { t.Fatalf("Failure: %v", err) } - converted, ok := other.(*ExternalTestType1) + converted, ok := other.(*runtimetesting.ExternalTestType1) if !ok { t.Fatalf("Got wrong type: %T", other) } @@ -671,13 +521,13 @@ func TestConvertToVersion(t *testing.T) { // errors if the type is not registered in the scheme { scheme: GetTestScheme(), - in: &UnknownType{}, + in: &runtimetesting.UnknownType{}, errFn: func(err error) bool { return err != nil && runtime.IsNotRegisteredError(err) }, }, // errors if the group versioner returns no target { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: testGroupVersioner{}, errFn: func(err error) bool { return err != nil && strings.Contains(err.Error(), "is not suitable for converting") @@ -686,132 +536,132 @@ func TestConvertToVersion(t *testing.T) { // converts to internal { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: schema.GroupVersion{Version: "__internal"}, - out: &TestType1{A: "test"}, + out: &runtimetesting.TestType1{A: "test"}, }, // prefers the best match { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: schema.GroupVersions{{Version: "__internal"}, {Version: "v1"}}, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, A: "test", }, }, // unversioned type returned as-is { scheme: GetTestScheme(), - in: &UnversionedType{A: "test"}, + in: &runtimetesting.UnversionedType{A: "test"}, gv: schema.GroupVersions{{Version: "v1"}}, same: true, - out: &UnversionedType{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "UnversionedType"}, + out: &runtimetesting.UnversionedType{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "UnversionedType"}, A: "test", }, }, // unversioned type returned when not included in the target types { scheme: GetTestScheme(), - in: &UnversionedType{A: "test"}, + in: &runtimetesting.UnversionedType{A: "test"}, gv: schema.GroupVersions{{Group: "other", Version: "v2"}}, same: true, - out: &UnversionedType{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "UnversionedType"}, + out: &runtimetesting.UnversionedType{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "UnversionedType"}, A: "test", }, }, // detected as already being in the target version { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: schema.GroupVersions{{Version: "v1"}}, same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, A: "test", }, }, // detected as already being in the first target version { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: schema.GroupVersions{{Version: "v1"}, {Version: "__internal"}}, same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, A: "test", }, }, // detected as already being in the first target version { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: schema.GroupVersions{{Version: "v1"}, {Version: "__internal"}}, same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, A: "test", }, }, // the external type is registered in multiple groups, versions, and kinds, and can be targeted to all of them (1/3): different kind { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Kind: "TestType3", Version: "v1"}}, same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType3"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType3"}, A: "test", }, }, // the external type is registered in multiple groups, versions, and kinds, and can be targeted to all of them (2/3): different gv { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Kind: "TestType3", Group: "custom", Version: "v1"}}, same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType3"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType3"}, A: "test", }, }, // the external type is registered in multiple groups, versions, and kinds, and can be targeted to all of them (3/3): different gvk { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Group: "custom", Version: "v1", Kind: "TestType5"}}, same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType5"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType5"}, A: "test", }, }, // multi group versioner recognizes multiple groups and forces the output to a particular version, copies because version differs { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "other", Version: "v2"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}, schema.GroupKind{Kind: "TestType1"}), - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "other/v2", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "other/v2", ObjectKind: "TestType1"}, A: "test", }, }, // multi group versioner recognizes multiple groups and forces the output to a particular version, copies because version differs { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "other", Version: "v2"}, schema.GroupKind{Kind: "TestType1"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}), - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "other/v2", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "other/v2", ObjectKind: "TestType1"}, A: "test", }, }, // multi group versioner is unable to find a match when kind AND group don't match (there is no TestType1 kind in group "other", and no kind "TestType5" in the default group) { scheme: GetTestScheme(), - in: &TestType1{A: "test"}, + in: &runtimetesting.TestType1{A: "test"}, gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "custom", Version: "v1"}, schema.GroupKind{Group: "other"}, schema.GroupKind{Kind: "TestType5"}), errFn: func(err error) bool { return err != nil && strings.Contains(err.Error(), "is not suitable for converting") @@ -820,48 +670,48 @@ func TestConvertToVersion(t *testing.T) { // multi group versioner recognizes multiple groups and forces the output to a particular version, performs no copy { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "", Version: "v1"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}, schema.GroupKind{Kind: "TestType1"}), same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, A: "test", }, }, // multi group versioner recognizes multiple groups and forces the output to a particular version, performs no copy { scheme: GetTestScheme(), - in: &ExternalTestType1{A: "test"}, + in: &runtimetesting.ExternalTestType1{A: "test"}, gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "", Version: "v1"}, schema.GroupKind{Kind: "TestType1"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}), same: true, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, A: "test", }, }, // group versioner can choose a particular target kind for a given input when kind is the same across group versions { scheme: GetTestScheme(), - in: &TestType1{A: "test"}, + in: &runtimetesting.TestType1{A: "test"}, gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Version: "v1", Kind: "TestType3"}}, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType3"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType3"}, A: "test", }, }, // group versioner can choose a different kind { scheme: GetTestScheme(), - in: &TestType1{A: "test"}, + in: &runtimetesting.TestType1{A: "test"}, gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Kind: "TestType5", Group: "custom", Version: "v1"}}, - out: &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType5"}, + out: &runtimetesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: runtimetesting.MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType5"}, A: "test", }, }, } for i, test := range testCases { - original, _ := test.scheme.DeepCopy(test.in) + original := test.in.DeepCopyObject() out, err := test.scheme.ConvertToVersion(test.in, test.gv) switch { case test.errFn != nil: @@ -914,21 +764,21 @@ func TestMetaValues(t *testing.T) { externalGV := schema.GroupVersion{Group: "test.group", Version: "externalVersion"} s := runtime.NewScheme() - s.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) - s.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + s.AddKnownTypeWithName(internalGV.WithKind("Simple"), &runtimetesting.InternalSimple{}) + s.AddKnownTypeWithName(externalGV.WithKind("Simple"), &runtimetesting.ExternalSimple{}) internalToExternalCalls := 0 externalToInternalCalls := 0 // Register functions to verify that scope.Meta() gets set correctly. err := s.AddConversionFuncs( - func(in *InternalSimple, out *ExternalSimple, scope conversion.Scope) error { + func(in *runtimetesting.InternalSimple, out *runtimetesting.ExternalSimple, scope conversion.Scope) error { t.Logf("internal -> external") scope.Convert(&in.TestString, &out.TestString, 0) internalToExternalCalls++ return nil }, - func(in *ExternalSimple, out *InternalSimple, scope conversion.Scope) error { + func(in *runtimetesting.ExternalSimple, out *runtimetesting.InternalSimple, scope conversion.Scope) error { t.Logf("external -> internal") scope.Convert(&in.TestString, &out.TestString, 0) externalToInternalCalls++ @@ -938,7 +788,7 @@ func TestMetaValues(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - simple := &InternalSimple{ + simple := &runtimetesting.InternalSimple{ TestString: "foo", } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD index d27fbabb8b..4a0a8f812b 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["codec_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", @@ -21,6 +18,7 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) @@ -32,7 +30,6 @@ go_library( "negotiated_codec.go", "protobuf_extension.go", ], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -42,3 +39,25 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/json:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/streaming:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/testing:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/versioning:all-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/yaml:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go index d3b87f49d5..d27da113a9 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go @@ -29,6 +29,7 @@ import ( "k8s.io/apimachinery/pkg/conversion" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + serializertesting "k8s.io/apimachinery/pkg/runtime/serializer/testing" "k8s.io/apimachinery/pkg/util/diff" "github.com/ghodss/yaml" @@ -57,103 +58,15 @@ func (testMetaFactory) Interpret(data []byte) (*schema.GroupVersionKind, error) return &schema.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.ObjectKind}, nil } -// Test a weird version/kind embedding format. -type MyWeirdCustomEmbeddedVersionKindField struct { - ID string `json:"ID,omitempty"` - APIVersion string `json:"myVersionKey,omitempty"` - ObjectKind string `json:"myKindKey,omitempty"` - Z string `json:"Z,omitempty"` - Y uint64 `json:"Y,omitempty"` -} - -type TestType1 struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` - C int8 `json:"C,omitempty"` - D int16 `json:"D,omitempty"` - E int32 `json:"E,omitempty"` - F int64 `json:"F,omitempty"` - G uint `json:"G,omitempty"` - H uint8 `json:"H,omitempty"` - I uint16 `json:"I,omitempty"` - J uint32 `json:"J,omitempty"` - K uint64 `json:"K,omitempty"` - L bool `json:"L,omitempty"` - M map[string]int `json:"M,omitempty"` - N map[string]TestType2 `json:"N,omitempty"` - O *TestType2 `json:"O,omitempty"` - P []TestType2 `json:"Q,omitempty"` -} - -type TestType2 struct { - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` -} - -type ExternalTestType2 struct { - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` -} -type ExternalTestType1 struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A string `json:"A,omitempty"` - B int `json:"B,omitempty"` - C int8 `json:"C,omitempty"` - D int16 `json:"D,omitempty"` - E int32 `json:"E,omitempty"` - F int64 `json:"F,omitempty"` - G uint `json:"G,omitempty"` - H uint8 `json:"H,omitempty"` - I uint16 `json:"I,omitempty"` - J uint32 `json:"J,omitempty"` - K uint64 `json:"K,omitempty"` - L bool `json:"L,omitempty"` - M map[string]int `json:"M,omitempty"` - N map[string]ExternalTestType2 `json:"N,omitempty"` - O *ExternalTestType2 `json:"O,omitempty"` - P []ExternalTestType2 `json:"Q,omitempty"` -} - -type ExternalInternalSame struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline"` - A TestType2 `json:"A,omitempty"` -} - // TestObjectFuzzer can randomly populate all the above objects. var TestObjectFuzzer = fuzz.New().NilChance(.5).NumElements(1, 100).Funcs( - func(j *MyWeirdCustomEmbeddedVersionKindField, c fuzz.Continue) { + func(j *serializertesting.MyWeirdCustomEmbeddedVersionKindField, c fuzz.Continue) { c.FuzzNoCustom(j) j.APIVersion = "" j.ObjectKind = "" }, ) -func (obj *MyWeirdCustomEmbeddedVersionKindField) GetObjectKind() schema.ObjectKind { return obj } -func (obj *MyWeirdCustomEmbeddedVersionKindField) SetGroupVersionKind(gvk schema.GroupVersionKind) { - obj.APIVersion, obj.ObjectKind = gvk.ToAPIVersionAndKind() -} -func (obj *MyWeirdCustomEmbeddedVersionKindField) GroupVersionKind() schema.GroupVersionKind { - return schema.FromAPIVersionAndKind(obj.APIVersion, obj.ObjectKind) -} - -func (obj *ExternalInternalSame) GetObjectKind() schema.ObjectKind { - return &obj.MyWeirdCustomEmbeddedVersionKindField -} - -func (obj *TestType1) GetObjectKind() schema.ObjectKind { - return &obj.MyWeirdCustomEmbeddedVersionKindField -} - -func (obj *ExternalTestType1) GetObjectKind() schema.ObjectKind { - return &obj.MyWeirdCustomEmbeddedVersionKindField -} - -func (obj *TestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } -func (obj *ExternalTestType2) GetObjectKind() schema.ObjectKind { - return schema.EmptyObjectKind -} - // Returns a new Scheme set up with the test objects. func GetTestScheme() (*runtime.Scheme, runtime.Codec) { internalGV := schema.GroupVersion{Version: runtime.APIVersionInternal} @@ -164,13 +77,13 @@ func GetTestScheme() (*runtime.Scheme, runtime.Codec) { // Ordinarily, we wouldn't add TestType2, but because this is a test and // both types are from the same package, we need to get it into the system // so that converter will match it with ExternalType2. - s.AddKnownTypes(internalGV, &TestType1{}, &TestType2{}, &ExternalInternalSame{}) - s.AddKnownTypes(externalGV, &ExternalInternalSame{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &ExternalTestType1{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &ExternalTestType2{}) - s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &TestType1{}) - s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &ExternalTestType1{}) - s.AddKnownTypeWithName(externalGV2.WithKind("TestType1"), &ExternalTestType1{}) + s.AddKnownTypes(internalGV, &serializertesting.TestType1{}, &serializertesting.TestType2{}, &serializertesting.ExternalInternalSame{}) + s.AddKnownTypes(externalGV, &serializertesting.ExternalInternalSame{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &serializertesting.ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &serializertesting.ExternalTestType2{}) + s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &serializertesting.TestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &serializertesting.ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV2.WithKind("TestType1"), &serializertesting.ExternalTestType1{}) s.AddUnversionedTypes(externalGV, &metav1.Status{}) @@ -180,7 +93,7 @@ func GetTestScheme() (*runtime.Scheme, runtime.Codec) { } var semantic = conversion.EqualitiesOrDie( - func(a, b MyWeirdCustomEmbeddedVersionKindField) bool { + func(a, b serializertesting.MyWeirdCustomEmbeddedVersionKindField) bool { a.APIVersion, a.ObjectKind = "", "" b.APIVersion, b.ObjectKind = "", "" return a == b @@ -219,8 +132,8 @@ func runTest(t *testing.T, source interface{}) { func TestTypes(t *testing.T) { table := []interface{}{ - &TestType1{}, - &ExternalInternalSame{}, + &serializertesting.TestType1{}, + &serializertesting.ExternalInternalSame{}, } for _, item := range table { // Try a few times, since runTest uses random values. @@ -237,7 +150,7 @@ func TestVersionedEncoding(t *testing.T) { encoder := info.Serializer codec := cf.CodecForVersions(encoder, nil, schema.GroupVersion{Version: "v2"}, nil) - out, err := runtime.Encode(codec, &TestType1{}) + out, err := runtime.Encode(codec, &serializertesting.TestType1{}) if err != nil { t.Fatal(err) } @@ -246,14 +159,14 @@ func TestVersionedEncoding(t *testing.T) { } codec = cf.CodecForVersions(encoder, nil, schema.GroupVersion{Version: "v3"}, nil) - _, err = runtime.Encode(codec, &TestType1{}) + _, err = runtime.Encode(codec, &serializertesting.TestType1{}) if err == nil { t.Fatal(err) } // unversioned encode with no versions is written directly to wire codec = cf.CodecForVersions(encoder, nil, runtime.InternalGroupVersioner, nil) - out, err = runtime.Encode(codec, &TestType1{}) + out, err = runtime.Encode(codec, &serializertesting.TestType1{}) if err != nil { t.Fatal(err) } @@ -269,7 +182,7 @@ func TestMultipleNames(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - internal := obj.(*TestType1) + internal := obj.(*serializertesting.TestType1) if internal.A != "value" { t.Fatalf("unexpected decoded object: %#v", internal) } @@ -289,13 +202,13 @@ func TestConvertTypesWhenDefaultNamesMatch(t *testing.T) { s := runtime.NewScheme() // create two names internally, with TestType1 being preferred - s.AddKnownTypeWithName(internalGV.WithKind("TestType1"), &TestType1{}) - s.AddKnownTypeWithName(internalGV.WithKind("OtherType1"), &TestType1{}) + s.AddKnownTypeWithName(internalGV.WithKind("TestType1"), &serializertesting.TestType1{}) + s.AddKnownTypeWithName(internalGV.WithKind("OtherType1"), &serializertesting.TestType1{}) // create two names externally, with TestType1 being preferred - s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &ExternalTestType1{}) - s.AddKnownTypeWithName(externalGV.WithKind("OtherType1"), &ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &serializertesting.ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("OtherType1"), &serializertesting.ExternalTestType1{}) - ext := &ExternalTestType1{} + ext := &serializertesting.ExternalTestType1{} ext.APIVersion = "v1" ext.ObjectKind = "OtherType1" ext.A = "test" @@ -303,7 +216,7 @@ func TestConvertTypesWhenDefaultNamesMatch(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - expect := &TestType1{A: "test"} + expect := &serializertesting.TestType1{A: "test"} codec := newCodecFactory(s, newSerializersForScheme(s, testMetaFactory{})).LegacyCodec(schema.GroupVersion{Version: "v1"}) @@ -315,7 +228,7 @@ func TestConvertTypesWhenDefaultNamesMatch(t *testing.T) { t.Errorf("unexpected object: %#v", obj) } - into := &TestType1{} + into := &serializertesting.TestType1{} if err := runtime.DecodeInto(codec, data, into); err != nil { t.Fatalf("unexpected error: %v", err) } @@ -326,13 +239,13 @@ func TestConvertTypesWhenDefaultNamesMatch(t *testing.T) { func TestEncode_Ptr(t *testing.T) { _, codec := GetTestScheme() - tt := &TestType1{A: "I am a pointer object"} + tt := &serializertesting.TestType1{A: "I am a pointer object"} data, err := runtime.Encode(codec, tt) obj2, err2 := runtime.Decode(codec, data) if err != nil || err2 != nil { t.Fatalf("Failure: '%v' '%v'\n%s", err, err2, data) } - if _, ok := obj2.(*TestType1); !ok { + if _, ok := obj2.(*serializertesting.TestType1); !ok { t.Fatalf("Got wrong type") } if !semantic.DeepEqual(obj2, tt) { @@ -355,10 +268,10 @@ func TestBadJSONRejection(t *testing.T) { } } badJSONKindMismatch := []byte(`{"myVersionKey":"v1","myKindKey":"ExternalInternalSame"}`) - if err := runtime.DecodeInto(codec, badJSONKindMismatch, &TestType1{}); err == nil { + if err := runtime.DecodeInto(codec, badJSONKindMismatch, &serializertesting.TestType1{}); err == nil { t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch) } - if err := runtime.DecodeInto(codec, []byte(``), &TestType1{}); err != nil { + if err := runtime.DecodeInto(codec, []byte(``), &serializertesting.TestType1{}); err != nil { t.Errorf("Should allow empty decode: %v", err) } if _, _, err := codec.Decode([]byte(``), &schema.GroupVersionKind{Kind: "ExternalInternalSame"}, nil); err == nil { @@ -387,8 +300,8 @@ func GetDirectCodecTestScheme() *runtime.Scheme { // Ordinarily, we wouldn't add TestType2, but because this is a test and // both types are from the same package, we need to get it into the system // so that converter will match it with ExternalType2. - s.AddKnownTypes(internalGV, &TestType1{}) - s.AddKnownTypes(externalGV, &ExternalTestType1{}) + s.AddKnownTypes(internalGV, &serializertesting.TestType1{}) + s.AddKnownTypes(externalGV, &serializertesting.ExternalTestType1{}) s.AddUnversionedTypes(externalGV, &metav1.Status{}) return s @@ -406,7 +319,7 @@ func TestDirectCodec(t *testing.T) { } directEncoder := df.EncoderForVersion(serializer, ignoredGV) directDecoder := df.DecoderToVersion(serializer, ignoredGV) - out, err := runtime.Encode(directEncoder, &ExternalTestType1{}) + out, err := runtime.Encode(directEncoder, &serializertesting.ExternalTestType1{}) if err != nil { t.Fatal(err) } @@ -414,8 +327,8 @@ func TestDirectCodec(t *testing.T) { t.Fatal(string(out)) } a, _, err := directDecoder.Decode(out, nil, nil) - e := &ExternalTestType1{ - MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{ + e := &serializertesting.ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: serializertesting.MyWeirdCustomEmbeddedVersionKindField{ APIVersion: "v1", ObjectKind: "ExternalTestType1", }, diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD index 6ee9e72b2b..d8a2b8d654 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["meta_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -21,10 +18,9 @@ go_library( "json.go", "meta.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/ghodss/yaml:go_default_library", - "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/github.com/json-iterator/go:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", @@ -36,7 +32,6 @@ go_library( go_test( name = "go_default_xtest", srcs = ["json_test.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -44,3 +39,16 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go index 28bb91b533..ce3d77c2b3 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go @@ -19,9 +19,11 @@ package json import ( "encoding/json" "io" + "strconv" + "unsafe" "github.com/ghodss/yaml" - "github.com/ugorji/go/codec" + jsoniter "github.com/json-iterator/go" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -66,6 +68,36 @@ type Serializer struct { var _ runtime.Serializer = &Serializer{} var _ recognizer.RecognizingDecoder = &Serializer{} +func init() { + // Force jsoniter to decode number to interface{} via ints, if possible. + decodeNumberAsInt64IfPossible := func(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + switch iter.WhatIsNext() { + case jsoniter.NumberValue: + var number json.Number + iter.ReadVal(&number) + u64, err := strconv.ParseUint(string(number), 10, 64) + if err == nil { + *(*interface{})(ptr) = u64 + return + } + i64, err := strconv.ParseInt(string(number), 10, 64) + if err == nil { + *(*interface{})(ptr) = i64 + return + } + f64, err := strconv.ParseFloat(string(number), 64) + if err == nil { + *(*interface{})(ptr) = f64 + return + } + // Not much we can do here. + default: + *(*interface{})(ptr) = iter.Read() + } + } + jsoniter.RegisterTypeDecoderFunc("interface {}", decodeNumberAsInt64IfPossible) +} + // 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 @@ -121,7 +153,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i types, _, err := s.typer.ObjectKinds(into) switch { case runtime.IsNotRegisteredError(err): - if err := codec.NewDecoderBytes(data, new(codec.JsonHandle)).Decode(into); err != nil { + if err := jsoniter.ConfigFastest.Unmarshal(data, into); err != nil { return nil, actual, err } return into, actual, nil @@ -155,7 +187,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i return nil, actual, err } - if err := codec.NewDecoderBytes(data, new(codec.JsonHandle)).Decode(obj); err != nil { + if err := jsoniter.ConfigFastest.Unmarshal(data, obj); err != nil { return nil, actual, err } return obj, actual, nil @@ -164,7 +196,7 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i // 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) + json, err := jsoniter.ConfigFastest.Marshal(obj) if err != nil { return err } @@ -177,7 +209,7 @@ func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { } if s.pretty { - data, err := json.MarshalIndent(obj, "", " ") + data, err := jsoniter.ConfigFastest.MarshalIndent(obj, "", " ") if err != nil { return err } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go index 01df7a46b7..469bf3ed8d 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go @@ -37,6 +37,9 @@ type testDecodable struct { func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d } func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } +func (d *testDecodable) DeepCopyObject() runtime.Object { + panic("testDecodable does not support DeepCopy") +} func TestDecode(t *testing.T) { testCases := []struct { diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD index dcb895f872..dba23107dc 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -13,7 +11,6 @@ go_library( "doc.go", "protobuf.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", @@ -22,3 +19,16 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD index 9cf147c8c7..95239b0282 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,9 +8,24 @@ load( go_library( name = "go_default_library", srcs = ["recognizer.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing:all-srcs", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD index 25308c88f9..4e126bc8a8 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_test", @@ -10,7 +8,6 @@ load( go_test( name = "go_default_test", srcs = ["recognizer_test.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -18,3 +15,16 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go index 79329f3dfb..332c2cfbdb 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go @@ -28,6 +28,9 @@ import ( type A struct{} func (A) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (a A) DeepCopyObject() runtime.Object { + return a +} func TestRecognizer(t *testing.T) { s := runtime.NewScheme() diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD index 069f663010..f3991e494a 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["streaming_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -23,9 +20,21 @@ go_test( go_library( name = "go_default_library", srcs = ["streaming.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD new file mode 100644 index 0000000000..a92f1ba027 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "types.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/doc.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/doc.go new file mode 100644 index 0000000000..22968b17e4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/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. +*/ + +// +k8s:deepcopy-gen=package + +package testing diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/types.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/types.go new file mode 100644 index 0000000000..7693d75a65 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/types.go @@ -0,0 +1,114 @@ +/* +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 testing + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// Test a weird version/kind embedding format. +// +k8s:deepcopy-gen=false +type MyWeirdCustomEmbeddedVersionKindField struct { + ID string `json:"ID,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + Z string `json:"Z,omitempty"` + Y uint64 `json:"Y,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type TestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]TestType2 `json:"N,omitempty"` + O *TestType2 `json:"O,omitempty"` + P []TestType2 `json:"Q,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type TestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalTestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalTestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]ExternalTestType2 `json:"N,omitempty"` + O *ExternalTestType2 `json:"O,omitempty"` + P []ExternalTestType2 `json:"Q,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalInternalSame struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A TestType2 `json:"A,omitempty"` +} + +func (obj *MyWeirdCustomEmbeddedVersionKindField) GetObjectKind() schema.ObjectKind { return obj } +func (obj *MyWeirdCustomEmbeddedVersionKindField) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.ObjectKind = gvk.ToAPIVersionAndKind() +} +func (obj *MyWeirdCustomEmbeddedVersionKindField) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.ObjectKind) +} + +func (obj *ExternalInternalSame) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *TestType1) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *ExternalTestType1) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *TestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (obj *ExternalTestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go new file mode 100644 index 0000000000..2a71e4b5f1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/testing/zz_generated.deepcopy.go @@ -0,0 +1,240 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 testing + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalInternalSame).DeepCopyInto(out.(*ExternalInternalSame)) + return nil + }, InType: reflect.TypeOf(&ExternalInternalSame{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalTestType1).DeepCopyInto(out.(*ExternalTestType1)) + return nil + }, InType: reflect.TypeOf(&ExternalTestType1{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalTestType2).DeepCopyInto(out.(*ExternalTestType2)) + return nil + }, InType: reflect.TypeOf(&ExternalTestType2{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TestType1).DeepCopyInto(out.(*TestType1)) + return nil + }, InType: reflect.TypeOf(&TestType1{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TestType2).DeepCopyInto(out.(*TestType2)) + return nil + }, InType: reflect.TypeOf(&TestType2{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalInternalSame) DeepCopyInto(out *ExternalInternalSame) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + out.A = in.A + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalInternalSame. +func (in *ExternalInternalSame) DeepCopy() *ExternalInternalSame { + if in == nil { + return nil + } + out := new(ExternalInternalSame) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalInternalSame) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalTestType1) DeepCopyInto(out *ExternalTestType1) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + if in.M != nil { + in, out := &in.M, &out.M + *out = make(map[string]int, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.N != nil { + in, out := &in.N, &out.N + *out = make(map[string]ExternalTestType2, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.O != nil { + in, out := &in.O, &out.O + if *in == nil { + *out = nil + } else { + *out = new(ExternalTestType2) + **out = **in + } + } + if in.P != nil { + in, out := &in.P, &out.P + *out = make([]ExternalTestType2, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalTestType1. +func (in *ExternalTestType1) DeepCopy() *ExternalTestType1 { + if in == nil { + return nil + } + out := new(ExternalTestType1) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalTestType1) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalTestType2) DeepCopyInto(out *ExternalTestType2) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalTestType2. +func (in *ExternalTestType2) DeepCopy() *ExternalTestType2 { + if in == nil { + return nil + } + out := new(ExternalTestType2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalTestType2) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestType1) DeepCopyInto(out *TestType1) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + if in.M != nil { + in, out := &in.M, &out.M + *out = make(map[string]int, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.N != nil { + in, out := &in.N, &out.N + *out = make(map[string]TestType2, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.O != nil { + in, out := &in.O, &out.O + if *in == nil { + *out = nil + } else { + *out = new(TestType2) + **out = **in + } + } + if in.P != nil { + in, out := &in.P, &out.P + *out = make([]TestType2, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestType1. +func (in *TestType1) DeepCopy() *TestType1 { + if in == nil { + return nil + } + out := new(TestType1) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestType1) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestType2) DeepCopyInto(out *TestType2) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestType2. +func (in *TestType2) DeepCopy() *TestType2 { + if in == nil { + return nil + } + out := new(TestType2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestType2) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD index 393000bc5b..f9406b4bce 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["versioning_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -23,10 +20,22 @@ go_test( go_library( name = "go_default_library", srcs = ["versioning.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go index 829d4fa895..74ad84dd95 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go @@ -213,7 +213,7 @@ func (c *codec) Encode(obj runtime.Object, w io.Writer) error { } if e, ok := out.(runtime.NestedObjectEncoder); ok { - if err := e.EncodeNestedObjects(DirectEncoder{Encoder: c.encoder, ObjectTyper: c.typer}); err != nil { + if err := e.EncodeNestedObjects(DirectEncoder{Version: c.encodeVersion, Encoder: c.encoder, ObjectTyper: c.typer}); err != nil { return err } } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go index 19b4f6d4f3..b0a42fb54b 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go @@ -37,6 +37,13 @@ type testDecodable struct { func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d } func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } +func (d *testDecodable) DeepCopyObject() runtime.Object { + if d == nil { + return nil + } + clone := *d + return &clone +} type testNestedDecodable struct { Other string @@ -50,6 +57,13 @@ type testNestedDecodable struct { func (d *testNestedDecodable) GetObjectKind() schema.ObjectKind { return d } func (d *testNestedDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } func (d *testNestedDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } +func (d *testNestedDecodable) DeepCopyObject() runtime.Object { + if d == nil { + return nil + } + clone := *d + return &clone +} func (d *testNestedDecodable) EncodeNestedObjects(e runtime.Encoder) error { d.nestedCalled = true diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD index a21a33e86b..7aa51ff4e2 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,10 +8,22 @@ load( go_library( name = "go_default_library", srcs = ["yaml.go"], - tags = ["automanaged"], deps = [ "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go index 29722d52e7..5bc642bc8e 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go @@ -71,7 +71,7 @@ func fmtRawDoc(rawDoc string) string { delPrevChar() buffer.WriteString("\n\n") case strings.HasPrefix(leading, "TODO"): // Ignore one line TODOs - case strings.HasPrefix(leading, "+"): // Ignore instructions to go2idl + case strings.HasPrefix(leading, "+"): // Ignore instructions to the generators default: if strings.HasPrefix(line, " ") || strings.HasPrefix(line, "\t") { delPrevChar() diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/testing/BUILD new file mode 100644 index 0000000000..a92f1ba027 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/testing/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "types.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/testing/doc.go b/vendor/k8s.io/apimachinery/pkg/runtime/testing/doc.go new file mode 100644 index 0000000000..a490327854 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/testing/doc.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. +*/ + +// +k8s:deepcopy-gen=package + +package testing diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/testing/types.go b/vendor/k8s.io/apimachinery/pkg/runtime/testing/types.go new file mode 100644 index 0000000000..c051fb1d27 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/testing/types.go @@ -0,0 +1,215 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type EmbeddedTest struct { + runtime.TypeMeta + ID string + Object runtime.Object + EmptyObject runtime.Object +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type EmbeddedTestExternal struct { + runtime.TypeMeta `json:",inline"` + ID string `json:"id,omitempty"` + Object runtime.RawExtension `json:"object,omitempty"` + EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ObjectTest struct { + runtime.TypeMeta + + ID string + Items []runtime.Object +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ObjectTestExternal struct { + runtime.TypeMeta `yaml:",inline" json:",inline"` + + ID string `json:"id,omitempty"` + Items []runtime.RawExtension `json:"items,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type InternalSimple struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalSimple struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExtensionA struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExtensionB struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.RawExtension `json:"extension"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type InternalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.Object `json:"extension"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalOptionalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.RawExtension `json:"extension,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type InternalOptionalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.Object `json:"extension,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type InternalComplex struct { + runtime.TypeMeta + String string + Integer int + Integer64 int64 + Int64 int64 + Bool bool +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalComplex struct { + runtime.TypeMeta `json:",inline"` + String string `json:"string" description:"testing"` + Integer int `json:"int"` + Integer64 int64 `json:",omitempty"` + Int64 int64 + Bool bool `json:"bool"` +} + +// Test a weird version/kind embedding format. +// +k8s:deepcopy-gen=false +type MyWeirdCustomEmbeddedVersionKindField struct { + ID string `json:"ID,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + Z string `json:"Z,omitempty"` + Y uint64 `json:"Y,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type TestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]TestType2 `json:"N,omitempty"` + O *TestType2 `json:"O,omitempty"` + P []TestType2 `json:"Q,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type TestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalTestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalTestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]ExternalTestType2 `json:"N,omitempty"` + O *ExternalTestType2 `json:"O,omitempty"` + P []ExternalTestType2 `json:"Q,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ExternalInternalSame struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A TestType2 `json:"A,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type UnversionedType struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type UnknownType struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` +} + +func (obj *MyWeirdCustomEmbeddedVersionKindField) GetObjectKind() schema.ObjectKind { return obj } +func (obj *MyWeirdCustomEmbeddedVersionKindField) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.ObjectKind = gvk.ToAPIVersionAndKind() +} +func (obj *MyWeirdCustomEmbeddedVersionKindField) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.ObjectKind) +} + +func (obj *TestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (obj *ExternalTestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go new file mode 100644 index 0000000000..8cacbc8b42 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/testing/zz_generated.deepcopy.go @@ -0,0 +1,762 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 testing + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EmbeddedTest).DeepCopyInto(out.(*EmbeddedTest)) + return nil + }, InType: reflect.TypeOf(&EmbeddedTest{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*EmbeddedTestExternal).DeepCopyInto(out.(*EmbeddedTestExternal)) + return nil + }, InType: reflect.TypeOf(&EmbeddedTestExternal{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExtensionA).DeepCopyInto(out.(*ExtensionA)) + return nil + }, InType: reflect.TypeOf(&ExtensionA{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExtensionB).DeepCopyInto(out.(*ExtensionB)) + return nil + }, InType: reflect.TypeOf(&ExtensionB{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalComplex).DeepCopyInto(out.(*ExternalComplex)) + return nil + }, InType: reflect.TypeOf(&ExternalComplex{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalExtensionType).DeepCopyInto(out.(*ExternalExtensionType)) + return nil + }, InType: reflect.TypeOf(&ExternalExtensionType{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalInternalSame).DeepCopyInto(out.(*ExternalInternalSame)) + return nil + }, InType: reflect.TypeOf(&ExternalInternalSame{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalOptionalExtensionType).DeepCopyInto(out.(*ExternalOptionalExtensionType)) + return nil + }, InType: reflect.TypeOf(&ExternalOptionalExtensionType{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalSimple).DeepCopyInto(out.(*ExternalSimple)) + return nil + }, InType: reflect.TypeOf(&ExternalSimple{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalTestType1).DeepCopyInto(out.(*ExternalTestType1)) + return nil + }, InType: reflect.TypeOf(&ExternalTestType1{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ExternalTestType2).DeepCopyInto(out.(*ExternalTestType2)) + return nil + }, InType: reflect.TypeOf(&ExternalTestType2{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InternalComplex).DeepCopyInto(out.(*InternalComplex)) + return nil + }, InType: reflect.TypeOf(&InternalComplex{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InternalExtensionType).DeepCopyInto(out.(*InternalExtensionType)) + return nil + }, InType: reflect.TypeOf(&InternalExtensionType{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InternalOptionalExtensionType).DeepCopyInto(out.(*InternalOptionalExtensionType)) + return nil + }, InType: reflect.TypeOf(&InternalOptionalExtensionType{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*InternalSimple).DeepCopyInto(out.(*InternalSimple)) + return nil + }, InType: reflect.TypeOf(&InternalSimple{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectTest).DeepCopyInto(out.(*ObjectTest)) + return nil + }, InType: reflect.TypeOf(&ObjectTest{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ObjectTestExternal).DeepCopyInto(out.(*ObjectTestExternal)) + return nil + }, InType: reflect.TypeOf(&ObjectTestExternal{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TestType1).DeepCopyInto(out.(*TestType1)) + return nil + }, InType: reflect.TypeOf(&TestType1{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*TestType2).DeepCopyInto(out.(*TestType2)) + return nil + }, InType: reflect.TypeOf(&TestType2{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*UnknownType).DeepCopyInto(out.(*UnknownType)) + return nil + }, InType: reflect.TypeOf(&UnknownType{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*UnversionedType).DeepCopyInto(out.(*UnversionedType)) + return nil + }, InType: reflect.TypeOf(&UnversionedType{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EmbeddedTest) DeepCopyInto(out *EmbeddedTest) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Object == nil { + out.Object = nil + } else { + out.Object = in.Object.DeepCopyObject() + } + if in.EmptyObject == nil { + out.EmptyObject = nil + } else { + out.EmptyObject = in.EmptyObject.DeepCopyObject() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedTest. +func (in *EmbeddedTest) DeepCopy() *EmbeddedTest { + if in == nil { + return nil + } + out := new(EmbeddedTest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *EmbeddedTest) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EmbeddedTestExternal) DeepCopyInto(out *EmbeddedTestExternal) { + *out = *in + out.TypeMeta = in.TypeMeta + in.Object.DeepCopyInto(&out.Object) + in.EmptyObject.DeepCopyInto(&out.EmptyObject) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedTestExternal. +func (in *EmbeddedTestExternal) DeepCopy() *EmbeddedTestExternal { + if in == nil { + return nil + } + out := new(EmbeddedTestExternal) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *EmbeddedTestExternal) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExtensionA) DeepCopyInto(out *ExtensionA) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtensionA. +func (in *ExtensionA) DeepCopy() *ExtensionA { + if in == nil { + return nil + } + out := new(ExtensionA) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExtensionA) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExtensionB) DeepCopyInto(out *ExtensionB) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtensionB. +func (in *ExtensionB) DeepCopy() *ExtensionB { + if in == nil { + return nil + } + out := new(ExtensionB) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExtensionB) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalComplex) DeepCopyInto(out *ExternalComplex) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalComplex. +func (in *ExternalComplex) DeepCopy() *ExternalComplex { + if in == nil { + return nil + } + out := new(ExternalComplex) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalComplex) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalExtensionType) DeepCopyInto(out *ExternalExtensionType) { + *out = *in + out.TypeMeta = in.TypeMeta + in.Extension.DeepCopyInto(&out.Extension) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalExtensionType. +func (in *ExternalExtensionType) DeepCopy() *ExternalExtensionType { + if in == nil { + return nil + } + out := new(ExternalExtensionType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalExtensionType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalInternalSame) DeepCopyInto(out *ExternalInternalSame) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + out.A = in.A + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalInternalSame. +func (in *ExternalInternalSame) DeepCopy() *ExternalInternalSame { + if in == nil { + return nil + } + out := new(ExternalInternalSame) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalInternalSame) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalOptionalExtensionType) DeepCopyInto(out *ExternalOptionalExtensionType) { + *out = *in + out.TypeMeta = in.TypeMeta + in.Extension.DeepCopyInto(&out.Extension) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalOptionalExtensionType. +func (in *ExternalOptionalExtensionType) DeepCopy() *ExternalOptionalExtensionType { + if in == nil { + return nil + } + out := new(ExternalOptionalExtensionType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalOptionalExtensionType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalSimple) DeepCopyInto(out *ExternalSimple) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalSimple. +func (in *ExternalSimple) DeepCopy() *ExternalSimple { + if in == nil { + return nil + } + out := new(ExternalSimple) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalSimple) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalTestType1) DeepCopyInto(out *ExternalTestType1) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + if in.M != nil { + in, out := &in.M, &out.M + *out = make(map[string]int, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.N != nil { + in, out := &in.N, &out.N + *out = make(map[string]ExternalTestType2, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.O != nil { + in, out := &in.O, &out.O + if *in == nil { + *out = nil + } else { + *out = new(ExternalTestType2) + **out = **in + } + } + if in.P != nil { + in, out := &in.P, &out.P + *out = make([]ExternalTestType2, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalTestType1. +func (in *ExternalTestType1) DeepCopy() *ExternalTestType1 { + if in == nil { + return nil + } + out := new(ExternalTestType1) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalTestType1) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExternalTestType2) DeepCopyInto(out *ExternalTestType2) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalTestType2. +func (in *ExternalTestType2) DeepCopy() *ExternalTestType2 { + if in == nil { + return nil + } + out := new(ExternalTestType2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ExternalTestType2) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InternalComplex) DeepCopyInto(out *InternalComplex) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalComplex. +func (in *InternalComplex) DeepCopy() *InternalComplex { + if in == nil { + return nil + } + out := new(InternalComplex) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InternalComplex) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InternalExtensionType) DeepCopyInto(out *InternalExtensionType) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Extension == nil { + out.Extension = nil + } else { + out.Extension = in.Extension.DeepCopyObject() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalExtensionType. +func (in *InternalExtensionType) DeepCopy() *InternalExtensionType { + if in == nil { + return nil + } + out := new(InternalExtensionType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InternalExtensionType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InternalOptionalExtensionType) DeepCopyInto(out *InternalOptionalExtensionType) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Extension == nil { + out.Extension = nil + } else { + out.Extension = in.Extension.DeepCopyObject() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalOptionalExtensionType. +func (in *InternalOptionalExtensionType) DeepCopy() *InternalOptionalExtensionType { + if in == nil { + return nil + } + out := new(InternalOptionalExtensionType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InternalOptionalExtensionType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InternalSimple) DeepCopyInto(out *InternalSimple) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalSimple. +func (in *InternalSimple) DeepCopy() *InternalSimple { + if in == nil { + return nil + } + out := new(InternalSimple) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InternalSimple) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectTest) DeepCopyInto(out *ObjectTest) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.Object, len(*in)) + for i := range *in { + if (*in)[i] == nil { + (*out)[i] = nil + } else { + (*out)[i] = (*in)[i].DeepCopyObject() + } + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectTest. +func (in *ObjectTest) DeepCopy() *ObjectTest { + if in == nil { + return nil + } + out := new(ObjectTest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ObjectTest) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectTestExternal) DeepCopyInto(out *ObjectTestExternal) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.RawExtension, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectTestExternal. +func (in *ObjectTestExternal) DeepCopy() *ObjectTestExternal { + if in == nil { + return nil + } + out := new(ObjectTestExternal) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ObjectTestExternal) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestType1) DeepCopyInto(out *TestType1) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + if in.M != nil { + in, out := &in.M, &out.M + *out = make(map[string]int, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.N != nil { + in, out := &in.N, &out.N + *out = make(map[string]TestType2, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.O != nil { + in, out := &in.O, &out.O + if *in == nil { + *out = nil + } else { + *out = new(TestType2) + **out = **in + } + } + if in.P != nil { + in, out := &in.P, &out.P + *out = make([]TestType2, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestType1. +func (in *TestType1) DeepCopy() *TestType1 { + if in == nil { + return nil + } + out := new(TestType1) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestType1) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestType2) DeepCopyInto(out *TestType2) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestType2. +func (in *TestType2) DeepCopy() *TestType2 { + if in == nil { + return nil + } + out := new(TestType2) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestType2) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UnknownType) DeepCopyInto(out *UnknownType) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnknownType. +func (in *UnknownType) DeepCopy() *UnknownType { + if in == nil { + return nil + } + out := new(UnknownType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UnknownType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UnversionedType) DeepCopyInto(out *UnversionedType) { + *out = *in + out.MyWeirdCustomEmbeddedVersionKindField = in.MyWeirdCustomEmbeddedVersionKindField + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnversionedType. +func (in *UnversionedType) DeepCopy() *UnversionedType { + if in == nil { + return nil + } + out := new(UnversionedType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *UnversionedType) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/types.go b/vendor/k8s.io/apimachinery/pkg/runtime/types.go index f972c5e697..e4515d8ed0 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/types.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/types.go @@ -30,7 +30,7 @@ package runtime // 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 +// +k8s:deepcopy-gen=false // +protobuf=true // +k8s:openapi-gen=true type TypeMeta struct { @@ -106,6 +106,7 @@ type RawExtension struct { // metadata and field mutatation. // // +k8s:deepcopy-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +protobuf=true // +k8s:openapi-gen=true type Unknown struct { @@ -124,6 +125,9 @@ type Unknown struct { // VersionedObjects is used by Decoders to give callers a way to access all versions // of an object during the decoding process. +// +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:deepcopy-gen=true 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, diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go index 54ce6ad59e..d347461ac6 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go @@ -26,58 +26,114 @@ import ( ) // GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { return []conversion.GeneratedDeepCopyFunc{ - {Fn: DeepCopy_runtime_RawExtension, InType: reflect.TypeOf(&RawExtension{})}, - {Fn: DeepCopy_runtime_TypeMeta, InType: reflect.TypeOf(&TypeMeta{})}, - {Fn: DeepCopy_runtime_Unknown, InType: reflect.TypeOf(&Unknown{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RawExtension).DeepCopyInto(out.(*RawExtension)) + return nil + }, InType: reflect.TypeOf(&RawExtension{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*Unknown).DeepCopyInto(out.(*Unknown)) + return nil + }, InType: reflect.TypeOf(&Unknown{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*VersionedObjects).DeepCopyInto(out.(*VersionedObjects)) + return nil + }, InType: reflect.TypeOf(&VersionedObjects{})}, } } -// DeepCopy_runtime_RawExtension is an autogenerated deepcopy function. -func DeepCopy_runtime_RawExtension(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*RawExtension) - out := out.(*RawExtension) - *out = *in - if in.Raw != nil { - in, out := &in.Raw, &out.Raw - *out = make([]byte, len(*in)) - copy(*out, *in) - } - // in.Object is kind 'Interface' - if in.Object != nil { - if newVal, err := c.DeepCopy(&in.Object); err != nil { - return err +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RawExtension) DeepCopyInto(out *RawExtension) { + *out = *in + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } + if in.Object == nil { + out.Object = nil + } else { + out.Object = in.Object.DeepCopyObject() + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RawExtension. +func (in *RawExtension) DeepCopy() *RawExtension { + if in == nil { + return nil + } + out := new(RawExtension) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Unknown) DeepCopyInto(out *Unknown) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Unknown. +func (in *Unknown) DeepCopy() *Unknown { + if in == nil { + return nil + } + out := new(Unknown) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new Object. +func (in *Unknown) DeepCopyObject() Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VersionedObjects) DeepCopyInto(out *VersionedObjects) { + *out = *in + if in.Objects != nil { + in, out := &in.Objects, &out.Objects + *out = make([]Object, len(*in)) + for i := range *in { + if (*in)[i] == nil { + (*out)[i] = nil } else { - out.Object = *newVal.(*Object) + (*out)[i] = (*in)[i].DeepCopyObject() } } - return nil } + return } -// DeepCopy_runtime_TypeMeta is an autogenerated deepcopy function. -func DeepCopy_runtime_TypeMeta(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*TypeMeta) - out := out.(*TypeMeta) - *out = *in +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VersionedObjects. +func (in *VersionedObjects) DeepCopy() *VersionedObjects { + if in == nil { return nil } + out := new(VersionedObjects) + in.DeepCopyInto(out) + return out } -// DeepCopy_runtime_Unknown is an autogenerated deepcopy function. -func DeepCopy_runtime_Unknown(in interface{}, out interface{}, c *conversion.Cloner) error { - { - in := in.(*Unknown) - out := out.(*Unknown) - *out = *in - if in.Raw != nil { - in, out := &in.Raw, &out.Raw - *out = make([]byte, len(*in)) - copy(*out, *in) - } +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new Object. +func (in *VersionedObjects) DeepCopyObject() Object { + if c := in.DeepCopy(); c != nil { + return c + } else { return nil } } diff --git a/vendor/k8s.io/apimachinery/pkg/selection/BUILD b/vendor/k8s.io/apimachinery/pkg/selection/BUILD index 55859fef69..29027a0b9e 100644 --- a/vendor/k8s.io/apimachinery/pkg/selection/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/selection/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -10,5 +8,17 @@ load( go_library( name = "go_default_library", srcs = ["operator.go"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/test/BUILD b/vendor/k8s.io/apimachinery/pkg/test/BUILD new file mode 100644 index 0000000000..e5de3f43b4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/BUILD @@ -0,0 +1,65 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "api_meta_help_test.go", + "api_meta_meta_test.go", + "apis_meta_v1_unstructed_unstructure_test.go", + "runtime_helper_test.go", + "runtime_serializer_protobuf_protobuf_test.go", + "runtime_unversioned_test.go", + ], + library = ":go_default_library", + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "util.go", + "zz_generated.deepcopy.go", + ], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/test/api_meta_help_test.go b/vendor/k8s.io/apimachinery/pkg/test/api_meta_help_test.go new file mode 100644 index 0000000000..a68da324d6 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/api_meta_help_test.go @@ -0,0 +1,331 @@ +/* +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 test + +import ( + "reflect" + "testing" + + fuzz "github.com/google/gofuzz" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/diff" +) + +func TestIsList(t *testing.T) { + tests := []struct { + obj runtime.Object + isList bool + }{ + {&testapigroup.CarpList{}, true}, + {&testapigroup.Carp{}, false}, + } + for _, item := range tests { + if e, a := item.isList, meta.IsListType(item.obj); e != a { + t.Errorf("%v: Expected %v, got %v", reflect.TypeOf(item.obj), e, a) + } + } +} + +func TestExtractList(t *testing.T) { + list1 := []runtime.Object{ + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + } + list2 := &ListV1{ + Items: []runtime.RawExtension{ + {Raw: []byte("foo")}, + {Raw: []byte("bar")}, + {Object: &v1.Carp{ObjectMeta: metav1.ObjectMeta{Name: "other"}}}, + }, + } + list3 := &fakePtrValueList{ + Items: []*testapigroup.Carp{ + {ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + }, + } + list4 := &testapigroup.CarpList{ + Items: []testapigroup.Carp{ + {ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "3"}}, + }, + } + + testCases := []struct { + in runtime.Object + out []interface{} + equal bool + }{ + { + in: &List{}, + out: []interface{}{}, + }, + { + in: &ListV1{}, + out: []interface{}{}, + }, + { + in: &List{Items: list1}, + out: []interface{}{list1[0], list1[1]}, + }, + { + in: list2, + out: []interface{}{&runtime.Unknown{Raw: list2.Items[0].Raw}, &runtime.Unknown{Raw: list2.Items[1].Raw}, list2.Items[2].Object}, + equal: true, + }, + { + in: list3, + out: []interface{}{list3.Items[0], list3.Items[1]}, + }, + { + in: list4, + out: []interface{}{&list4.Items[0], &list4.Items[1], &list4.Items[2]}, + }, + } + for i, test := range testCases { + list, err := meta.ExtractList(test.in) + if err != nil { + t.Fatalf("%d: extract: Unexpected error %v", i, err) + } + if e, a := len(test.out), len(list); e != a { + t.Fatalf("%d: extract: Expected %v, got %v", i, e, a) + } + for j, e := range test.out { + if e != list[j] { + if !test.equal { + t.Fatalf("%d: extract: Expected list[%d] to be %#v, but found %#v", i, j, e, list[j]) + } + if !reflect.DeepEqual(e, list[j]) { + t.Fatalf("%d: extract: Expected list[%d] to be %#v, but found %#v", i, j, e, list[j]) + } + } + } + } +} + +func TestEachListItem(t *testing.T) { + list1 := []runtime.Object{ + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + } + list2 := &ListV1{ + Items: []runtime.RawExtension{ + {Raw: []byte("foo")}, + {Raw: []byte("bar")}, + {Object: &v1.Carp{ObjectMeta: metav1.ObjectMeta{Name: "other"}}}, + }, + } + list3 := &fakePtrValueList{ + Items: []*testapigroup.Carp{ + {ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + }, + } + list4 := &testapigroup.CarpList{ + Items: []testapigroup.Carp{ + {ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "3"}}, + }, + } + + testCases := []struct { + in runtime.Object + out []interface{} + }{ + { + in: &List{}, + out: []interface{}{}, + }, + { + in: &ListV1{}, + out: []interface{}{}, + }, + { + in: &List{Items: list1}, + out: []interface{}{list1[0], list1[1]}, + }, + { + in: list2, + out: []interface{}{nil, nil, list2.Items[2].Object}, + }, + { + in: list3, + out: []interface{}{list3.Items[0], list3.Items[1]}, + }, + { + in: list4, + out: []interface{}{&list4.Items[0], &list4.Items[1], &list4.Items[2]}, + }, + } + for i, test := range testCases { + list := []runtime.Object{} + err := meta.EachListItem(test.in, func(obj runtime.Object) error { + list = append(list, obj) + return nil + }) + if err != nil { + t.Fatalf("%d: each: Unexpected error %v", i, err) + } + if e, a := len(test.out), len(list); e != a { + t.Fatalf("%d: each: Expected %v, got %v", i, e, a) + } + for j, e := range test.out { + if e != list[j] { + t.Fatalf("%d: each: Expected list[%d] to be %#v, but found %#v", i, j, e, list[j]) + } + } + } +} + +type fakePtrInterfaceList struct { + Items *[]runtime.Object +} + +func (obj fakePtrInterfaceList) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} +func (obj fakePtrInterfaceList) DeepCopyObject() runtime.Object { + panic("fakePtrInterfaceList does not support DeepCopy") +} + +func TestExtractListOfInterfacePtrs(t *testing.T) { + pl := &fakePtrInterfaceList{ + Items: &[]runtime.Object{}, + } + list, err := meta.ExtractList(pl) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + if len(list) > 0 { + t.Fatalf("Expected empty list, got %#v", list) + } +} + +type fakePtrValueList struct { + Items []*testapigroup.Carp +} + +func (obj fakePtrValueList) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} +func (obj *fakePtrValueList) DeepCopyObject() runtime.Object { + if obj == nil { + return nil + } + clone := fakePtrValueList{ + Items: make([]*testapigroup.Carp, len(obj.Items)), + } + for i, carp := range obj.Items { + clone.Items[i] = carp.DeepCopy() + } + return &clone +} + +func TestSetList(t *testing.T) { + pl := &testapigroup.CarpList{} + list := []runtime.Object{ + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "3"}}, + } + err := meta.SetList(pl, list) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + if e, a := len(list), len(pl.Items); e != a { + t.Fatalf("Expected %v, got %v", e, a) + } + for i := range list { + if e, a := list[i].(*testapigroup.Carp).Name, pl.Items[i].Name; e != a { + t.Fatalf("Expected %v, got %v", e, a) + } + } +} + +func TestSetListToRuntimeObjectArray(t *testing.T) { + pl := &List{} + list := []runtime.Object{ + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "2"}}, + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "3"}}, + } + err := meta.SetList(pl, list) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + if e, a := len(list), len(pl.Items); e != a { + t.Fatalf("Expected %v, got %v", e, a) + } + for i := range list { + if e, a := list[i], pl.Items[i]; e != a { + t.Fatalf("%d: unmatched: %s", i, diff.ObjectDiff(e, a)) + } + } +} + +func TestSetListToMatchingType(t *testing.T) { + pl := &unstructured.UnstructuredList{} + list := []runtime.Object{ + &unstructured.Unstructured{Object: map[string]interface{}{"foo": 1}}, + &unstructured.Unstructured{Object: map[string]interface{}{"foo": 2}}, + &unstructured.Unstructured{Object: map[string]interface{}{"foo": 3}}, + } + err := meta.SetList(pl, list) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + if e, a := len(list), len(pl.Items); e != a { + t.Fatalf("Expected %v, got %v", e, a) + } + for i := range list { + if e, a := list[i], &pl.Items[i]; !reflect.DeepEqual(e, a) { + t.Fatalf("%d: unmatched: %s", i, diff.ObjectDiff(e, a)) + } + } +} + +func TestSetExtractListRoundTrip(t *testing.T) { + fuzzer := fuzz.New().NilChance(0).NumElements(1, 5) + for i := 0; i < 5; i++ { + start := &testapigroup.CarpList{} + fuzzer.Fuzz(&start.Items) + + list, err := meta.ExtractList(start) + if err != nil { + t.Errorf("Unexpected error %v", err) + continue + } + got := &testapigroup.CarpList{} + err = meta.SetList(got, list) + if err != nil { + t.Errorf("Unexpected error %v", err) + continue + } + if e, a := start, got; !reflect.DeepEqual(e, a) { + t.Fatalf("Expected %#v, got %#v", e, a) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/api_meta_meta_test.go b/vendor/k8s.io/apimachinery/pkg/test/api_meta_meta_test.go new file mode 100644 index 0000000000..9da81d6d5c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/api_meta_meta_test.go @@ -0,0 +1,429 @@ +/* +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 test + +import ( + "reflect" + "testing" + + "github.com/google/gofuzz" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" +) + +func TestAPIObjectMeta(t *testing.T) { + j := &testapigroup.Carp{ + TypeMeta: metav1.TypeMeta{APIVersion: "/a", Kind: "b"}, + ObjectMeta: metav1.ObjectMeta{ + Namespace: "bar", + Name: "foo", + GenerateName: "prefix", + UID: "uid", + ResourceVersion: "1", + SelfLink: "some/place/only/we/know", + Labels: map[string]string{"foo": "bar"}, + Annotations: map[string]string{"x": "y"}, + Finalizers: []string{ + "finalizer.1", + "finalizer.2", + }, + }, + } + var _ metav1.Object = &j.ObjectMeta + var _ metav1.ObjectMetaAccessor = j + accessor, err := meta.Accessor(j) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if accessor != metav1.Object(j) { + t.Fatalf("should have returned the same pointer: %#v\n\n%#v", accessor, j) + } + if e, a := "bar", accessor.GetNamespace(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "foo", accessor.GetName(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "prefix", accessor.GetGenerateName(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "uid", string(accessor.GetUID()); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "1", accessor.GetResourceVersion(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "some/place/only/we/know", accessor.GetSelfLink(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := []string{"finalizer.1", "finalizer.2"}, accessor.GetFinalizers(); !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } + + typeAccessor, err := meta.TypeAccessor(j) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if e, a := "a", typeAccessor.GetAPIVersion(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "b", typeAccessor.GetKind(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + accessor.SetNamespace("baz") + accessor.SetName("bar") + accessor.SetGenerateName("generate") + accessor.SetUID("other") + typeAccessor.SetAPIVersion("c") + typeAccessor.SetKind("d") + accessor.SetResourceVersion("2") + accessor.SetSelfLink("google.com") + accessor.SetFinalizers([]string{"finalizer.3"}) + + // Prove that accessor changes the original object. + if e, a := "baz", j.Namespace; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "bar", j.Name; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "generate", j.GenerateName; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := types.UID("other"), j.UID; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "c", j.APIVersion; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "d", j.Kind; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "2", j.ResourceVersion; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "google.com", j.SelfLink; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := []string{"finalizer.3"}, j.Finalizers; !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } + + typeAccessor.SetAPIVersion("d") + typeAccessor.SetKind("e") + if e, a := "d", j.APIVersion; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "e", j.Kind; e != a { + t.Errorf("expected %v, got %v", e, a) + } +} + +func TestGenericTypeMeta(t *testing.T) { + type TypeMeta struct { + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + GenerateName string `json:"generateName,omitempty"` + UID string `json:"uid,omitempty"` + CreationTimestamp metav1.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Labels map[string]string `json:"labels,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` + OwnerReferences []metav1.OwnerReference `json:"ownerReferences,omitempty"` + Finalizers []string `json:"finalizers,omitempty"` + } + + j := struct{ TypeMeta }{TypeMeta{APIVersion: "a", Kind: "b"}} + + typeAccessor, err := meta.TypeAccessor(&j) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if e, a := "a", typeAccessor.GetAPIVersion(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "b", typeAccessor.GetKind(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + typeAccessor.SetAPIVersion("c") + typeAccessor.SetKind("d") + + if e, a := "c", j.APIVersion; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "d", j.Kind; e != a { + t.Errorf("expected %v, got %v", e, a) + } + + typeAccessor.SetAPIVersion("d") + typeAccessor.SetKind("e") + + if e, a := "d", j.APIVersion; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "e", j.Kind; e != a { + t.Errorf("expected %v, got %v", e, a) + } +} + +type InternalTypeMeta struct { + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + GenerateName string `json:"generateName,omitempty"` + UID string `json:"uid,omitempty"` + CreationTimestamp metav1.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` + Continue string `json:"next,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Labels map[string]string `json:"labels,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` + Finalizers []string `json:"finalizers,omitempty"` + OwnerReferences []metav1.OwnerReference `json:"ownerReferences,omitempty"` +} + +func (m *InternalTypeMeta) GetResourceVersion() string { return m.ResourceVersion } +func (m *InternalTypeMeta) SetResourceVersion(rv string) { m.ResourceVersion = rv } +func (m *InternalTypeMeta) GetSelfLink() string { return m.SelfLink } +func (m *InternalTypeMeta) SetSelfLink(link string) { m.SelfLink = link } +func (m *InternalTypeMeta) GetContinue() string { return m.Continue } +func (m *InternalTypeMeta) SetContinue(c string) { m.Continue = c } + +type MyAPIObject struct { + TypeMeta InternalTypeMeta `json:",inline"` +} + +func (obj *MyAPIObject) GetListMeta() metav1.ListInterface { return &obj.TypeMeta } + +func (obj *MyAPIObject) GetObjectKind() schema.ObjectKind { return obj } +func (obj *MyAPIObject) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.TypeMeta.APIVersion, obj.TypeMeta.Kind = gvk.ToAPIVersionAndKind() +} +func (obj *MyAPIObject) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.TypeMeta.APIVersion, obj.TypeMeta.Kind) +} +func (obj *MyAPIObject) DeepCopyObject() runtime.Object { + panic("MyAPIObject does not support DeepCopy") +} + +type MyIncorrectlyMarkedAsAPIObject struct{} + +func (obj *MyIncorrectlyMarkedAsAPIObject) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} +func (obj *MyIncorrectlyMarkedAsAPIObject) DeepCopyObject() runtime.Object { + panic("MyIncorrectlyMarkedAsAPIObject does not support DeepCopy") +} + +func TestResourceVersionerOfAPI(t *testing.T) { + type T struct { + runtime.Object + Expected string + } + testCases := map[string]T{ + "empty api object": {&MyAPIObject{}, ""}, + "api object with version": {&MyAPIObject{TypeMeta: InternalTypeMeta{ResourceVersion: "1"}}, "1"}, + "pointer to api object with version": {&MyAPIObject{TypeMeta: InternalTypeMeta{ResourceVersion: "1"}}, "1"}, + } + versioning := meta.NewAccessor() + for key, testCase := range testCases { + actual, err := versioning.ResourceVersion(testCase.Object) + if err != nil { + t.Errorf("%s: unexpected error %#v", key, err) + } + if actual != testCase.Expected { + t.Errorf("%s: expected %v, got %v", key, testCase.Expected, actual) + } + } + + failingCases := map[string]struct { + runtime.Object + Expected string + }{ + "not a valid object to try": {&MyIncorrectlyMarkedAsAPIObject{}, "1"}, + } + for key, testCase := range failingCases { + _, err := versioning.ResourceVersion(testCase.Object) + if err == nil { + t.Errorf("%s: expected error, got nil", key) + } + } + + setCases := map[string]struct { + runtime.Object + Expected string + }{ + "pointer to api object with version": {&MyAPIObject{TypeMeta: InternalTypeMeta{ResourceVersion: "1"}}, "1"}, + } + for key, testCase := range setCases { + if err := versioning.SetResourceVersion(testCase.Object, "5"); err != nil { + t.Errorf("%s: unexpected error %#v", key, err) + } + actual, err := versioning.ResourceVersion(testCase.Object) + if err != nil { + t.Errorf("%s: unexpected error %#v", key, err) + } + if actual != "5" { + t.Errorf("%s: expected %v, got %v", key, "5", actual) + } + } +} + +func TestTypeMetaSelfLinker(t *testing.T) { + table := map[string]struct { + obj runtime.Object + expect string + try string + succeed bool + }{ + "normal": { + obj: &MyAPIObject{TypeMeta: InternalTypeMeta{SelfLink: "foobar"}}, + expect: "foobar", + try: "newbar", + succeed: true, + }, + "fail": { + obj: &MyIncorrectlyMarkedAsAPIObject{}, + succeed: false, + }, + } + + linker := runtime.SelfLinker(meta.NewAccessor()) + for name, item := range table { + got, err := linker.SelfLink(item.obj) + if e, a := item.succeed, err == nil; e != a { + t.Errorf("%v: expected %v, got %v", name, e, a) + } + if e, a := item.expect, got; item.succeed && e != a { + t.Errorf("%v: expected %v, got %v", name, e, a) + } + + err = linker.SetSelfLink(item.obj, item.try) + if e, a := item.succeed, err == nil; e != a { + t.Errorf("%v: expected %v, got %v", name, e, a) + } + if item.succeed { + got, err := linker.SelfLink(item.obj) + if err != nil { + t.Errorf("%v: expected no err, got %v", name, err) + } + if e, a := item.try, got; e != a { + t.Errorf("%v: expected %v, got %v", name, e, a) + } + } + } +} + +type MyAPIObject2 struct { + metav1.TypeMeta + metav1.ObjectMeta +} + +func getObjectMetaAndOwnerReferences() (myAPIObject2 MyAPIObject2, metaOwnerReferences []metav1.OwnerReference) { + fuzz.New().NilChance(.5).NumElements(1, 5).Fuzz(&myAPIObject2) + references := myAPIObject2.ObjectMeta.OwnerReferences + // This is necessary for the test to pass because the getter will return a + // non-nil slice. + metaOwnerReferences = make([]metav1.OwnerReference, 0) + for i := 0; i < len(references); i++ { + metaOwnerReferences = append(metaOwnerReferences, metav1.OwnerReference{ + Kind: references[i].Kind, + Name: references[i].Name, + UID: references[i].UID, + APIVersion: references[i].APIVersion, + Controller: references[i].Controller, + BlockOwnerDeletion: references[i].BlockOwnerDeletion, + }) + } + if len(references) == 0 { + // This is necessary for the test to pass because the setter will make a + // non-nil slice. + myAPIObject2.ObjectMeta.OwnerReferences = make([]metav1.OwnerReference, 0) + } + return myAPIObject2, metaOwnerReferences +} + +func testGetOwnerReferences(t *testing.T) { + obj, expected := getObjectMetaAndOwnerReferences() + accessor, err := meta.Accessor(&obj) + if err != nil { + t.Error(err) + } + references := accessor.GetOwnerReferences() + if !reflect.DeepEqual(references, expected) { + t.Errorf("expect %#v\n got %#v", expected, references) + } +} + +func testSetOwnerReferences(t *testing.T) { + expected, references := getObjectMetaAndOwnerReferences() + obj := MyAPIObject2{} + accessor, err := meta.Accessor(&obj) + if err != nil { + t.Error(err) + } + accessor.SetOwnerReferences(references) + if e, a := expected.ObjectMeta.OwnerReferences, obj.ObjectMeta.OwnerReferences; !reflect.DeepEqual(e, a) { + t.Errorf("expect %#v\n got %#v", e, a) + } +} + +func TestAccessOwnerReferences(t *testing.T) { + fuzzIter := 5 + for i := 0; i < fuzzIter; i++ { + testGetOwnerReferences(t) + testSetOwnerReferences(t) + } +} + +// BenchmarkAccessorSetFastPath shows the interface fast path +func BenchmarkAccessorSetFastPath(b *testing.B) { + obj := &testapigroup.Carp{ + TypeMeta: metav1.TypeMeta{APIVersion: "/a", Kind: "b"}, + ObjectMeta: metav1.ObjectMeta{ + Namespace: "bar", + Name: "foo", + GenerateName: "prefix", + UID: "uid", + ResourceVersion: "1", + SelfLink: "some/place/only/we/know", + Labels: map[string]string{"foo": "bar"}, + Annotations: map[string]string{"x": "y"}, + }, + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + acc, err := meta.Accessor(obj) + if err != nil { + b.Fatal(err) + } + acc.SetNamespace("something") + } + b.StopTimer() +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/apis_meta_v1_unstructed_unstructure_test.go b/vendor/k8s.io/apimachinery/pkg/test/apis_meta_v1_unstructed_unstructure_test.go new file mode 100644 index 0000000000..338206d42c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/apis_meta_v1_unstructed_unstructure_test.go @@ -0,0 +1,570 @@ +/* +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 test + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "testing" + "time" + + apitesting "k8s.io/apimachinery/pkg/api/testing" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" +) + +func TestDecodeUnstructured(t *testing.T) { + groupVersionString := "v1" + rawJson := fmt.Sprintf(`{"kind":"Pod","apiVersion":"%s","metadata":{"name":"test"}}`, groupVersionString) + pl := &List{ + Items: []runtime.Object{ + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + &runtime.Unknown{ + TypeMeta: runtime.TypeMeta{Kind: "Pod", APIVersion: groupVersionString}, + Raw: []byte(rawJson), + ContentType: runtime.ContentTypeJSON, + }, + &runtime.Unknown{ + TypeMeta: runtime.TypeMeta{Kind: "", APIVersion: groupVersionString}, + Raw: []byte(rawJson), + ContentType: runtime.ContentTypeJSON, + }, + &unstructured.Unstructured{ + Object: map[string]interface{}{ + "kind": "Foo", + "apiVersion": "Bar", + "test": "value", + }, + }, + }, + } + if errs := runtime.DecodeList(pl.Items, unstructured.UnstructuredJSONScheme); len(errs) == 1 { + t.Fatalf("unexpected error %v", errs) + } + if pod, ok := pl.Items[1].(*unstructured.Unstructured); !ok || pod.Object["kind"] != "Pod" || pod.Object["metadata"].(map[string]interface{})["name"] != "test" { + t.Errorf("object not converted: %#v", pl.Items[1]) + } + if pod, ok := pl.Items[2].(*unstructured.Unstructured); !ok || pod.Object["kind"] != "Pod" || pod.Object["metadata"].(map[string]interface{})["name"] != "test" { + t.Errorf("object not converted: %#v", pl.Items[2]) + } +} + +func TestDecode(t *testing.T) { + tcs := []struct { + json []byte + want runtime.Object + }{ + { + json: []byte(`{"apiVersion": "test", "kind": "test_kind"}`), + want: &unstructured.Unstructured{ + Object: map[string]interface{}{"apiVersion": "test", "kind": "test_kind"}, + }, + }, + { + json: []byte(`{"apiVersion": "test", "kind": "test_list", "items": []}`), + want: &unstructured.UnstructuredList{ + Object: map[string]interface{}{"apiVersion": "test", "kind": "test_list"}, + }, + }, + { + json: []byte(`{"items": [{"metadata": {"name": "object1", "deletionGracePeriodSeconds": 10}, "apiVersion": "test", "kind": "test_kind"}, {"metadata": {"name": "object2"}, "apiVersion": "test", "kind": "test_kind"}], "apiVersion": "test", "kind": "test_list"}`), + want: &unstructured.UnstructuredList{ + Object: map[string]interface{}{"apiVersion": "test", "kind": "test_list"}, + Items: []unstructured.Unstructured{ + { + Object: map[string]interface{}{ + "metadata": map[string]interface{}{"name": "object1", "deletionGracePeriodSeconds": int64(10)}, + "apiVersion": "test", + "kind": "test_kind", + }, + }, + { + Object: map[string]interface{}{ + "metadata": map[string]interface{}{"name": "object2"}, + "apiVersion": "test", + "kind": "test_kind", + }, + }, + }, + }, + }, + } + + for _, tc := range tcs { + got, _, err := unstructured.UnstructuredJSONScheme.Decode(tc.json, nil, nil) + if err != nil { + t.Errorf("Unexpected error for %q: %v", string(tc.json), err) + continue + } + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("Decode(%q) want: %v\ngot: %v", string(tc.json), tc.want, got) + } + } +} + +func TestUnstructuredGetters(t *testing.T) { + trueVar := true + ten := int64(10) + unstruct := unstructured.Unstructured{ + Object: map[string]interface{}{ + "kind": "test_kind", + "apiVersion": "test_version", + "metadata": map[string]interface{}{ + "name": "test_name", + "namespace": "test_namespace", + "generateName": "test_generateName", + "uid": "test_uid", + "resourceVersion": "test_resourceVersion", + "generation": ten, + "deletionGracePeriodSeconds": ten, + "selfLink": "test_selfLink", + "creationTimestamp": "2009-11-10T23:00:00Z", + "deletionTimestamp": "2010-11-10T23:00:00Z", + "labels": map[string]interface{}{ + "test_label": "test_value", + }, + "annotations": map[string]interface{}{ + "test_annotation": "test_value", + }, + "ownerReferences": []map[string]interface{}{ + { + "kind": "Pod", + "name": "poda", + "apiVersion": "v1", + "uid": "1", + }, + { + "kind": "Pod", + "name": "podb", + "apiVersion": "v1", + "uid": "2", + // though these fields are of type *bool, but when + // decoded from JSON, they are unmarshalled as bool. + "controller": true, + "blockOwnerDeletion": true, + }, + }, + "finalizers": []interface{}{ + "finalizer.1", + "finalizer.2", + }, + "clusterName": "cluster123", + }, + }, + } + + if got, want := unstruct.GetAPIVersion(), "test_version"; got != want { + t.Errorf("GetAPIVersions() = %s, want %s", got, want) + } + + if got, want := unstruct.GetKind(), "test_kind"; got != want { + t.Errorf("GetKind() = %s, want %s", got, want) + } + + if got, want := unstruct.GetNamespace(), "test_namespace"; got != want { + t.Errorf("GetNamespace() = %s, want %s", got, want) + } + + if got, want := unstruct.GetName(), "test_name"; got != want { + t.Errorf("GetName() = %s, want %s", got, want) + } + + if got, want := unstruct.GetGenerateName(), "test_generateName"; got != want { + t.Errorf("GetGenerateName() = %s, want %s", got, want) + } + + if got, want := unstruct.GetUID(), types.UID("test_uid"); got != want { + t.Errorf("GetUID() = %s, want %s", got, want) + } + + if got, want := unstruct.GetResourceVersion(), "test_resourceVersion"; got != want { + t.Errorf("GetResourceVersion() = %s, want %s", got, want) + } + + if got, want := unstruct.GetSelfLink(), "test_selfLink"; got != want { + t.Errorf("GetSelfLink() = %s, want %s", got, want) + } + + if got, want := unstruct.GetCreationTimestamp(), metav1.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC); !got.Equal(&want) { + t.Errorf("GetCreationTimestamp() = %s, want %s", got, want) + } + + if got, want := unstruct.GetDeletionTimestamp(), metav1.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC); got == nil || !got.Equal(&want) { + t.Errorf("GetDeletionTimestamp() = %s, want %s", got, want) + } + + if got, want := unstruct.GetLabels(), map[string]string{"test_label": "test_value"}; !reflect.DeepEqual(got, want) { + t.Errorf("GetLabels() = %s, want %s", got, want) + } + + if got, want := unstruct.GetAnnotations(), map[string]string{"test_annotation": "test_value"}; !reflect.DeepEqual(got, want) { + t.Errorf("GetAnnotations() = %s, want %s", got, want) + } + refs := unstruct.GetOwnerReferences() + expectedOwnerReferences := []metav1.OwnerReference{ + { + Kind: "Pod", + Name: "poda", + APIVersion: "v1", + UID: "1", + }, + { + Kind: "Pod", + Name: "podb", + APIVersion: "v1", + UID: "2", + Controller: &trueVar, + BlockOwnerDeletion: &trueVar, + }, + } + if got, want := refs, expectedOwnerReferences; !reflect.DeepEqual(got, want) { + t.Errorf("GetOwnerReferences()=%v, want %v", got, want) + } + if got, want := unstruct.GetFinalizers(), []string{"finalizer.1", "finalizer.2"}; !reflect.DeepEqual(got, want) { + t.Errorf("GetFinalizers()=%v, want %v", got, want) + } + if got, want := unstruct.GetClusterName(), "cluster123"; got != want { + t.Errorf("GetClusterName()=%v, want %v", got, want) + } + if got, want := unstruct.GetDeletionGracePeriodSeconds(), &ten; !reflect.DeepEqual(got, want) { + t.Errorf("GetDeletionGracePeriodSeconds()=%v, want %v", got, want) + } + if got, want := unstruct.GetGeneration(), ten; !reflect.DeepEqual(got, want) { + t.Errorf("GetGeneration()=%v, want %v", got, want) + } +} + +func TestUnstructuredSetters(t *testing.T) { + unstruct := unstructured.Unstructured{} + trueVar := true + ten := int64(10) + + want := unstructured.Unstructured{ + Object: map[string]interface{}{ + "kind": "test_kind", + "apiVersion": "test_version", + "metadata": map[string]interface{}{ + "name": "test_name", + "namespace": "test_namespace", + "generateName": "test_generateName", + "uid": "test_uid", + "resourceVersion": "test_resourceVersion", + "selfLink": "test_selfLink", + "creationTimestamp": "2009-11-10T23:00:00Z", + "deletionTimestamp": "2010-11-10T23:00:00Z", + "deletionGracePeriodSeconds": &ten, + "generation": ten, + "labels": map[string]interface{}{ + "test_label": "test_value", + }, + "annotations": map[string]interface{}{ + "test_annotation": "test_value", + }, + "ownerReferences": []map[string]interface{}{ + { + "kind": "Pod", + "name": "poda", + "apiVersion": "v1", + "uid": "1", + }, + { + "kind": "Pod", + "name": "podb", + "apiVersion": "v1", + "uid": "2", + "controller": true, + "blockOwnerDeletion": true, + }, + }, + "finalizers": []interface{}{ + "finalizer.1", + "finalizer.2", + }, + "clusterName": "cluster123", + }, + }, + } + + unstruct.SetAPIVersion("test_version") + unstruct.SetKind("test_kind") + unstruct.SetNamespace("test_namespace") + unstruct.SetName("test_name") + unstruct.SetGenerateName("test_generateName") + unstruct.SetUID(types.UID("test_uid")) + unstruct.SetResourceVersion("test_resourceVersion") + unstruct.SetSelfLink("test_selfLink") + unstruct.SetCreationTimestamp(metav1.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)) + date := metav1.Date(2010, time.November, 10, 23, 0, 0, 0, time.UTC) + unstruct.SetDeletionTimestamp(&date) + unstruct.SetLabels(map[string]string{"test_label": "test_value"}) + unstruct.SetAnnotations(map[string]string{"test_annotation": "test_value"}) + newOwnerReferences := []metav1.OwnerReference{ + { + Kind: "Pod", + Name: "poda", + APIVersion: "v1", + UID: "1", + }, + { + Kind: "Pod", + Name: "podb", + APIVersion: "v1", + UID: "2", + Controller: &trueVar, + BlockOwnerDeletion: &trueVar, + }, + } + unstruct.SetOwnerReferences(newOwnerReferences) + unstruct.SetFinalizers([]string{"finalizer.1", "finalizer.2"}) + unstruct.SetClusterName("cluster123") + unstruct.SetDeletionGracePeriodSeconds(&ten) + unstruct.SetGeneration(ten) + + if !reflect.DeepEqual(unstruct, want) { + t.Errorf("Wanted: \n%s\n Got:\n%s", want, unstruct) + } +} + +func TestOwnerReferences(t *testing.T) { + t.Parallel() + trueVar := true + falseVar := false + refs := []metav1.OwnerReference{ + { + APIVersion: "v2", + Kind: "K2", + Name: "n2", + UID: types.UID("abc1"), + }, + { + APIVersion: "v1", + Kind: "K1", + Name: "n1", + UID: types.UID("abc2"), + Controller: &trueVar, + BlockOwnerDeletion: &falseVar, + }, + { + APIVersion: "v3", + Kind: "K3", + Name: "n3", + UID: types.UID("abc3"), + Controller: &falseVar, + BlockOwnerDeletion: &trueVar, + }, + } + for i, ref := range refs { + ref := ref + t.Run(strconv.Itoa(i), func(t *testing.T) { + t.Parallel() + u1 := unstructured.Unstructured{ + Object: make(map[string]interface{}), + } + refsX := []metav1.OwnerReference{ref} + u1.SetOwnerReferences(refsX) + + have := u1.GetOwnerReferences() + if !reflect.DeepEqual(have, refsX) { + t.Errorf("Object references are not the same: %#v != %#v", have, refsX) + } + }) + } +} + +func TestUnstructuredListGetters(t *testing.T) { + unstruct := unstructured.UnstructuredList{ + Object: map[string]interface{}{ + "kind": "test_kind", + "apiVersion": "test_version", + "metadata": map[string]interface{}{ + "resourceVersion": "test_resourceVersion", + "selfLink": "test_selfLink", + }, + }, + } + + if got, want := unstruct.GetAPIVersion(), "test_version"; got != want { + t.Errorf("GetAPIVersions() = %s, want %s", got, want) + } + + if got, want := unstruct.GetKind(), "test_kind"; got != want { + t.Errorf("GetKind() = %s, want %s", got, want) + } + + if got, want := unstruct.GetResourceVersion(), "test_resourceVersion"; got != want { + t.Errorf("GetResourceVersion() = %s, want %s", got, want) + } + + if got, want := unstruct.GetSelfLink(), "test_selfLink"; got != want { + t.Errorf("GetSelfLink() = %s, want %s", got, want) + } +} + +func TestUnstructuredListSetters(t *testing.T) { + unstruct := unstructured.UnstructuredList{} + + want := unstructured.UnstructuredList{ + Object: map[string]interface{}{ + "kind": "test_kind", + "apiVersion": "test_version", + "metadata": map[string]interface{}{ + "resourceVersion": "test_resourceVersion", + "selfLink": "test_selfLink", + }, + }, + } + + unstruct.SetAPIVersion("test_version") + unstruct.SetKind("test_kind") + unstruct.SetResourceVersion("test_resourceVersion") + unstruct.SetSelfLink("test_selfLink") + + if !reflect.DeepEqual(unstruct, want) { + t.Errorf("Wanted: \n%s\n Got:\n%s", unstruct, want) + } +} + +func TestDecodeNumbers(t *testing.T) { + + // Start with a valid pod + originalJSON := []byte(`{ + "kind":"Carp", + "apiVersion":"v1", + "metadata":{"name":"pod","namespace":"foo"}, + "spec":{ + "containers":[{"name":"container","image":"container"}], + "activeDeadlineSeconds":1000030003 + } + }`) + + pod := &testapigroup.Carp{} + + _, codecs := TestScheme() + codec := apitesting.TestCodec(codecs, schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}) + + err := runtime.DecodeInto(codec, originalJSON, pod) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // Round-trip with unstructured codec + unstructuredObj, err := runtime.Decode(unstructured.UnstructuredJSONScheme, originalJSON) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + roundtripJSON, err := runtime.Encode(unstructured.UnstructuredJSONScheme, unstructuredObj) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // Make sure we serialize back out in int form + if !strings.Contains(string(roundtripJSON), `"activeDeadlineSeconds":1000030003`) { + t.Errorf("Expected %s, got %s", `"activeDeadlineSeconds":1000030003`, string(roundtripJSON)) + } + + // Decode with structured codec again + obj2, err := runtime.Decode(codec, roundtripJSON) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + // ensure pod is still valid + pod2, ok := obj2.(*testapigroup.Carp) + if !ok { + t.Fatalf("expected an *api.Pod, got %#v", obj2) + } + + // ensure round-trip preserved large integers + if !reflect.DeepEqual(pod, pod2) { + t.Fatalf("Expected\n\t%#v, got \n\t%#v", pod, pod2) + } +} + +// TestAccessorMethods does opaque roundtrip testing against an Unstructured +// instance's Object methods to ensure that what is "Set" matches what you +// subsequently "Get" without any assertions against internal state. +func TestAccessorMethods(t *testing.T) { + int64p := func(i int) *int64 { + v := int64(i) + return &v + } + tests := []struct { + accessor string + val interface{} + nilVal reflect.Value + }{ + {accessor: "Namespace", val: "foo"}, + {accessor: "Name", val: "bar"}, + {accessor: "GenerateName", val: "baz"}, + {accessor: "UID", val: types.UID("uid")}, + {accessor: "ResourceVersion", val: "1"}, + {accessor: "Generation", val: int64(5)}, + {accessor: "SelfLink", val: "/foo"}, + // TODO: Handle timestamps, which are being marshalled as UTC and + // unmarshalled as Local. + // https://github.com/kubernetes/kubernetes/issues/21402 + // {accessor: "CreationTimestamp", val: someTime}, + // {accessor: "DeletionTimestamp", val: someTimeP}, + {accessor: "DeletionTimestamp", nilVal: reflect.ValueOf((*metav1.Time)(nil))}, + {accessor: "DeletionGracePeriodSeconds", val: int64p(10)}, + {accessor: "DeletionGracePeriodSeconds", val: int64p(0)}, + {accessor: "DeletionGracePeriodSeconds", nilVal: reflect.ValueOf((*int64)(nil))}, + {accessor: "Labels", val: map[string]string{"foo": "bar"}}, + {accessor: "Annotations", val: map[string]string{"foo": "bar"}}, + {accessor: "Initializers", val: &metav1.Initializers{Pending: []metav1.Initializer{{Name: "foo"}}}}, + {accessor: "Initializers", val: &metav1.Initializers{}}, + {accessor: "Initializers", nilVal: reflect.ValueOf((*metav1.Initializers)(nil))}, + {accessor: "Finalizers", val: []string{"foo"}}, + {accessor: "OwnerReferences", val: []metav1.OwnerReference{{Name: "foo"}}}, + {accessor: "ClusterName", val: "foo"}, + } + for i, test := range tests { + t.Logf("evaluating test %d (%s)", i, test.accessor) + + u := &unstructured.Unstructured{} + setter := reflect.ValueOf(u).MethodByName("Set" + test.accessor) + getter := reflect.ValueOf(u).MethodByName("Get" + test.accessor) + + args := []reflect.Value{} + if test.val != nil { + args = append(args, reflect.ValueOf(test.val)) + } else { + args = append(args, test.nilVal) + } + setter.Call(args) + + ret := getter.Call([]reflect.Value{}) + actual := ret[0].Interface() + + var expected interface{} + if test.val != nil { + expected = test.val + } else { + expected = test.nilVal.Interface() + } + + if e, a := expected, actual; !reflect.DeepEqual(e, a) { + t.Fatalf("%s: expected %v (%T), got %v (%T)", test.accessor, e, e, a, a) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/runtime_helper_test.go b/vendor/k8s.io/apimachinery/pkg/test/runtime_helper_test.go new file mode 100644 index 0000000000..0106fb20bf --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/runtime_helper_test.go @@ -0,0 +1,49 @@ +/* +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 test + +import ( + "testing" + + apitesting "k8s.io/apimachinery/pkg/api/testing" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/runtime" +) + +func TestDecodeList(t *testing.T) { + pl := List{ + Items: []runtime.Object{ + &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, + &runtime.Unknown{ + TypeMeta: runtime.TypeMeta{Kind: "Carp", APIVersion: "v1"}, + Raw: []byte(`{"kind":"Carp","apiVersion":"` + "v1" + `","metadata":{"name":"test"}}`), + ContentType: runtime.ContentTypeJSON, + }, + }, + } + + _, codecs := TestScheme() + Codec := apitesting.TestCodec(codecs, testapigroup.SchemeGroupVersion) + + if errs := runtime.DecodeList(pl.Items, Codec); len(errs) != 0 { + t.Fatalf("unexpected error %v", errs) + } + if pod, ok := pl.Items[1].(*testapigroup.Carp); !ok || pod.Name != "test" { + t.Errorf("object not converted: %#v", pl.Items[1]) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go b/vendor/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go new file mode 100644 index 0000000000..fb305d1756 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go @@ -0,0 +1,360 @@ +/* +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 test + +import ( + "bytes" + "encoding/hex" + "fmt" + "reflect" + "strings" + "testing" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" + "k8s.io/apimachinery/pkg/util/diff" +) + +type testObject struct { + gvk schema.GroupVersionKind +} + +func (d *testObject) GetObjectKind() schema.ObjectKind { return d } +func (d *testObject) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } +func (d *testObject) GroupVersionKind() schema.GroupVersionKind { return d.gvk } +func (d *testObject) DeepCopyObject() runtime.Object { + panic("testObject does not support DeepCopy") +} + +type testMarshalable struct { + testObject + data []byte + err error +} + +func (d *testMarshalable) Marshal() ([]byte, error) { + return d.data, d.err +} + +func (d *testMarshalable) DeepCopyObject() runtime.Object { + panic("testMarshalable does not support DeepCopy") +} + +type testBufferedMarshalable struct { + testObject + data []byte + err error +} + +func (d *testBufferedMarshalable) Marshal() ([]byte, error) { + return nil, fmt.Errorf("not invokable") +} + +func (d *testBufferedMarshalable) MarshalTo(data []byte) (int, error) { + copy(data, d.data) + return len(d.data), d.err +} + +func (d *testBufferedMarshalable) Size() int { + return len(d.data) +} + +func (d *testBufferedMarshalable) DeepCopyObject() runtime.Object { + panic("testBufferedMarshalable does not support DeepCopy") +} + +func TestRecognize(t *testing.T) { + s := protobuf.NewSerializer(nil, nil, "application/protobuf") + ignores := [][]byte{ + nil, + {}, + []byte("k8s"), + {0x6b, 0x38, 0x73, 0x01}, + } + for i, data := range ignores { + if ok, _, err := s.RecognizesData(bytes.NewBuffer(data)); err != nil || ok { + t.Errorf("%d: should not recognize data: %v", i, err) + } + } + recognizes := [][]byte{ + {0x6b, 0x38, 0x73, 0x00}, + {0x6b, 0x38, 0x73, 0x00, 0x01}, + } + for i, data := range recognizes { + if ok, _, err := s.RecognizesData(bytes.NewBuffer(data)); err != nil || !ok { + t.Errorf("%d: should recognize data: %v", i, err) + } + } +} + +func TestEncode(t *testing.T) { + obj1 := &testMarshalable{testObject: testObject{}, data: []byte{}} + wire1 := []byte{ + 0x6b, 0x38, 0x73, 0x00, // prefix + 0x0a, 0x04, + 0x0a, 0x00, // apiversion + 0x12, 0x00, // kind + 0x12, 0x00, // data + 0x1a, 0x00, // content-type + 0x22, 0x00, // content-encoding + } + obj2 := &testMarshalable{ + testObject: testObject{gvk: schema.GroupVersionKind{Kind: "test", Group: "other", Version: "version"}}, + data: []byte{0x01, 0x02, 0x03}, + } + wire2 := []byte{ + 0x6b, 0x38, 0x73, 0x00, // prefix + 0x0a, 0x15, + 0x0a, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, // apiversion + 0x12, 0x04, 0x74, 0x65, 0x73, 0x74, // kind + 0x12, 0x03, 0x01, 0x02, 0x03, // data + 0x1a, 0x00, // content-type + 0x22, 0x00, // content-encoding + } + + err1 := fmt.Errorf("a test error") + + testCases := []struct { + obj runtime.Object + data []byte + errFn func(error) bool + }{ + { + obj: &testObject{}, + errFn: protobuf.IsNotMarshalable, + }, + { + obj: obj1, + data: wire1, + }, + { + obj: &testMarshalable{testObject: obj1.testObject, err: err1}, + errFn: func(err error) bool { return err == err1 }, + }, + { + // if this test fails, writing the "fast path" marshal is not the same as the "slow path" + obj: &testBufferedMarshalable{testObject: obj1.testObject, data: obj1.data}, + data: wire1, + }, + { + obj: obj2, + data: wire2, + }, + { + // if this test fails, writing the "fast path" marshal is not the same as the "slow path" + obj: &testBufferedMarshalable{testObject: obj2.testObject, data: obj2.data}, + data: wire2, + }, + { + obj: &testBufferedMarshalable{testObject: obj1.testObject, err: err1}, + errFn: func(err error) bool { return err == err1 }, + }, + } + + for i, test := range testCases { + s := protobuf.NewSerializer(nil, nil, "application/protobuf") + data, err := runtime.Encode(s, test.obj) + + switch { + case err == nil && test.errFn != nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil && test.errFn == nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil: + if !test.errFn(err) { + t.Errorf("%d: failed: %v", i, err) + } + if data != nil { + t.Errorf("%d: should not have returned nil data", i) + } + continue + } + + if test.data != nil && !bytes.Equal(test.data, data) { + t.Errorf("%d: unexpected data:\n%s", i, hex.Dump(data)) + continue + } + + if ok, _, err := s.RecognizesData(bytes.NewBuffer(data)); !ok || err != nil { + t.Errorf("%d: did not recognize data generated by call: %v", i, err) + } + } +} + +func TestProtobufDecode(t *testing.T) { + wire1 := []byte{ + 0x6b, 0x38, 0x73, 0x00, // prefix + 0x0a, 0x04, + 0x0a, 0x00, // apiversion + 0x12, 0x00, // kind + 0x12, 0x00, // data + 0x1a, 0x00, // content-type + 0x22, 0x00, // content-encoding + } + wire2 := []byte{ + 0x6b, 0x38, 0x73, 0x00, // prefix + 0x0a, 0x15, + 0x0a, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, // apiversion + 0x12, 0x04, 0x74, 0x65, 0x73, 0x74, // kind + 0x12, 0x07, 0x6b, 0x38, 0x73, 0x00, 0x01, 0x02, 0x03, // data + 0x1a, 0x00, // content-type + 0x22, 0x00, // content-encoding + } + + //err1 := fmt.Errorf("a test error") + + testCases := []struct { + obj runtime.Object + data []byte + errFn func(error) bool + }{ + { + obj: &runtime.Unknown{}, + errFn: func(err error) bool { return err.Error() == "empty data" }, + }, + { + data: []byte{0x6b}, + errFn: func(err error) bool { return strings.Contains(err.Error(), "does not appear to be a protobuf message") }, + }, + { + obj: &runtime.Unknown{ + Raw: []byte{}, + }, + data: wire1, + }, + { + obj: &runtime.Unknown{ + TypeMeta: runtime.TypeMeta{ + APIVersion: "other/version", + Kind: "test", + }, + // content type is set because the prefix matches the content + ContentType: "application/protobuf", + Raw: []byte{0x6b, 0x38, 0x73, 0x00, 0x01, 0x02, 0x03}, + }, + data: wire2, + }, + } + + for i, test := range testCases { + s := protobuf.NewSerializer(nil, nil, "application/protobuf") + unk := &runtime.Unknown{} + err := runtime.DecodeInto(s, test.data, unk) + + switch { + case err == nil && test.errFn != nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil && test.errFn == nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil: + if !test.errFn(err) { + t.Errorf("%d: failed: %v", i, err) + } + continue + } + + if !reflect.DeepEqual(unk, test.obj) { + t.Errorf("%d: unexpected object:\n%#v", i, unk) + continue + } + } +} + +func TestDecodeObjects(t *testing.T) { + obj1 := &v1.Carp{ + ObjectMeta: metav1.ObjectMeta{ + Name: "cool", + }, + Spec: v1.CarpSpec{ + Hostname: "coolhost", + }, + } + obj1wire, err := obj1.Marshal() + if err != nil { + t.Fatal(err) + } + + wire1, err := (&runtime.Unknown{ + TypeMeta: runtime.TypeMeta{Kind: "Carp", APIVersion: "v1"}, + Raw: obj1wire, + }).Marshal() + if err != nil { + t.Fatal(err) + } + + unk2 := &runtime.Unknown{ + TypeMeta: runtime.TypeMeta{Kind: "Carp", APIVersion: "v1"}, + } + wire2 := make([]byte, len(wire1)*2) + n, err := unk2.NestedMarshalTo(wire2, obj1, uint64(obj1.Size())) + if err != nil { + t.Fatal(err) + } + if n != len(wire1) || !bytes.Equal(wire1, wire2[:n]) { + t.Fatalf("unexpected wire:\n%s", hex.Dump(wire2[:n])) + } + + wire1 = append([]byte{0x6b, 0x38, 0x73, 0x00}, wire1...) + + testCases := []struct { + obj runtime.Object + data []byte + errFn func(error) bool + }{ + { + obj: obj1, + data: wire1, + }, + } + scheme := runtime.NewScheme() + for i, test := range testCases { + scheme.AddKnownTypes(schema.GroupVersion{Version: "v1"}, &v1.Carp{}) + v1.AddToScheme(scheme) + s := protobuf.NewSerializer(scheme, scheme, "application/protobuf") + obj, err := runtime.Decode(s, test.data) + + switch { + case err == nil && test.errFn != nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil && test.errFn == nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil: + if !test.errFn(err) { + t.Errorf("%d: failed: %v", i, err) + } + if obj != nil { + t.Errorf("%d: should not have returned an object", i) + } + continue + } + + if !apiequality.Semantic.DeepEqual(obj, test.obj) { + t.Errorf("%d: unexpected object:\n%s", i, diff.ObjectGoPrintDiff(test.obj, obj)) + continue + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go b/vendor/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go new file mode 100644 index 0000000000..4bf833a93e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/runtime_unversioned_test.go @@ -0,0 +1,99 @@ +/* +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 test + +import ( + "encoding/json" + "reflect" + "testing" + + // TODO: Ideally we should create the necessary package structure in e.g., + // pkg/conversion/test/... instead of importing pkg/api here. + apitesting "k8s.io/apimachinery/pkg/api/testing" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestV1EncodeDecodeStatus(t *testing.T) { + status := &metav1.Status{ + Status: metav1.StatusFailure, + Code: 200, + Reason: metav1.StatusReasonUnknown, + Message: "", + } + + _, codecs := TestScheme() + codec := apitesting.TestCodec(codecs, schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}) + + encoded, err := runtime.Encode(codec, status) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + typeMeta := metav1.TypeMeta{} + if err := json.Unmarshal(encoded, &typeMeta); err != nil { + t.Errorf("unexpected error: %v", err) + } + if typeMeta.Kind != "Status" { + t.Errorf("Kind is not set to \"Status\". Got %v", string(encoded)) + } + if typeMeta.APIVersion != "v1" { + t.Errorf("APIVersion is not set to \"v1\". Got %v", string(encoded)) + } + decoded, err := runtime.Decode(codec, encoded) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if !reflect.DeepEqual(status, decoded) { + t.Errorf("expected: %v, got: %v", status, decoded) + } +} + +func TestExperimentalEncodeDecodeStatus(t *testing.T) { + status := &metav1.Status{ + Status: metav1.StatusFailure, + Code: 200, + Reason: metav1.StatusReasonUnknown, + Message: "", + } + // TODO: caesarxuchao: use the testapi.Extensions.Codec() once the PR that + // moves experimental from v1 to v1beta1 got merged. + _, codecs := TestScheme() + expCodec := apitesting.TestCodec(codecs, schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}) + + encoded, err := runtime.Encode(expCodec, status) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + typeMeta := metav1.TypeMeta{} + if err := json.Unmarshal(encoded, &typeMeta); err != nil { + t.Errorf("unexpected error: %v", err) + } + if typeMeta.Kind != "Status" { + t.Errorf("Kind is not set to \"Status\". Got %s", encoded) + } + if typeMeta.APIVersion != "v1" { + t.Errorf("APIVersion is not set to \"\". Got %s", encoded) + } + decoded, err := runtime.Decode(expCodec, encoded) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if !reflect.DeepEqual(status, decoded) { + t.Errorf("expected: %v, got: %v", status, decoded) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/util.go b/vendor/k8s.io/apimachinery/pkg/test/util.go new file mode 100644 index 0000000000..4ed5674d42 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/util.go @@ -0,0 +1,69 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package test + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + apiserializer "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// List and ListV1 should be kept in sync with k8s.io/kubernetes/pkg/api#List +// and k8s.io/api/core/v1#List. +// +// +k8s:deepcopy-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type List struct { + metav1.TypeMeta + metav1.ListMeta + + Items []runtime.Object +} + +// +k8s:deepcopy-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +type ListV1 struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + Items []runtime.RawExtension `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +func TestScheme() (*runtime.Scheme, apiserializer.CodecFactory) { + internalGV := schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "", Version: "v1"} + scheme := runtime.NewScheme() + + scheme.AddKnownTypes(internalGV, + &testapigroup.Carp{}, + &testapigroup.CarpList{}, + &List{}, + ) + scheme.AddKnownTypes(externalGV, + &v1.Carp{}, + &v1.CarpList{}, + &List{}, + ) + testapigroup.AddToScheme(scheme) + v1.AddToScheme(scheme) + + codecs := apiserializer.NewCodecFactory(scheme) + return scheme, codecs +} diff --git a/vendor/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go new file mode 100644 index 0000000000..c258ff7dd7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/test/zz_generated.deepcopy.go @@ -0,0 +1,115 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT 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 test + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +// +// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*List).DeepCopyInto(out.(*List)) + return nil + }, InType: reflect.TypeOf(&List{})}, + {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ListV1).DeepCopyInto(out.(*ListV1)) + return nil + }, InType: reflect.TypeOf(&ListV1{})}, + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *List) DeepCopyInto(out *List) { + *out = *in + 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 (*in)[i] == nil { + (*out)[i] = nil + } else { + (*out)[i] = (*in)[i].DeepCopyObject() + } + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new List. +func (in *List) DeepCopy() *List { + if in == nil { + return nil + } + out := new(List) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *List) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ListV1) DeepCopyInto(out *ListV1) { + *out = *in + 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 { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListV1. +func (in *ListV1) DeepCopy() *ListV1 { + if in == nil { + return nil + } + out := new(ListV1) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ListV1) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/types/BUILD b/vendor/k8s.io/apimachinery/pkg/types/BUILD index f6dadfcca8..63d4f6b15a 100644 --- a/vendor/k8s.io/apimachinery/pkg/types/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/types/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -16,5 +14,17 @@ go_library( "patch.go", "uid.go", ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD b/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD index 46e0c6dfb1..ecc2cd93bf 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -15,7 +13,6 @@ go_test( "lruexpirecache_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/groupcache/lru:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", @@ -28,6 +25,18 @@ go_library( "cache.go", "lruexpirecache.go", ], - tags = ["automanaged"], deps = ["//vendor/github.com/hashicorp/golang-lru:go_default_library"], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD b/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD index 108ddee311..90d28c4907 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,11 +10,22 @@ go_test( name = "go_default_test", srcs = ["clock_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( name = "go_default_library", srcs = ["clock.go"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD b/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD index ae36f426cf..225d0b6f77 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,15 +10,26 @@ go_test( name = "go_default_test", srcs = ["diff_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( name = "go_default_library", srcs = ["diff.go"], - tags = ["automanaged"], deps = [ "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go b/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go index 1f3fcb34b7..2b72c2f531 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go +++ b/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go @@ -86,3 +86,11 @@ object.A: } } } + +func TestStringDiff(t *testing.T) { + diff := StringDiff("aaabb", "aaacc") + expect := "aaa\n\nA: bb\n\nB: cc\n\n" + if diff != expect { + t.Errorf("diff returned %v", diff) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD b/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD index 196de9f621..8859a8e47d 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["errors_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -21,5 +18,17 @@ go_library( "doc.go", "errors.go", ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go index bdea0e16c7..26e7eb2082 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go @@ -21,7 +21,7 @@ import ( "fmt" ) -// MessagesgCountMap contains occurance for each error message. +// MessageCountMap contains occurance for each error message. type MessageCountMap map[string]int // Aggregate represents an object that contains multiple errors, but does not diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go b/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go index 3335326cab..0ad3967d28 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go @@ -266,7 +266,7 @@ func TestFlatten(t *testing.T) { func TestCreateAggregateFromMessageCountMap(t *testing.T) { testCases := []struct { name string - mcp MessageCountMap + mcm MessageCountMap expected Aggregate }{ { @@ -279,6 +279,11 @@ func TestCreateAggregateFromMessageCountMap(t *testing.T) { MessageCountMap{"abc": 2, "ghi": 1}, aggregate{fmt.Errorf("abc (repeated 2 times)"), fmt.Errorf("ghi")}, }, + { + "input has multiple messages", + MessageCountMap{"ghi": 1, "abc": 2}, + aggregate{fmt.Errorf("abc (repeated 2 times)"), fmt.Errorf("ghi")}, + }, } var expected, agg []error @@ -288,8 +293,8 @@ func TestCreateAggregateFromMessageCountMap(t *testing.T) { expected = testCase.expected.Errors() sort.Slice(expected, func(i, j int) bool { return expected[i].Error() < expected[j].Error() }) } - if testCase.mcp != nil { - agg = CreateAggregateFromMessageCountMap(testCase.mcp).Errors() + if testCase.mcm != nil { + agg = CreateAggregateFromMessageCountMap(testCase.mcm).Errors() sort.Slice(agg, func(i, j int) bool { return agg[i].Error() < agg[j].Error() }) } if !reflect.DeepEqual(expected, agg) { diff --git a/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD b/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD index fc6d4bff5f..7b68271951 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,11 +10,22 @@ go_test( name = "go_default_test", srcs = ["framer_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( name = "go_default_library", srcs = ["framer.go"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD b/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD index c1a26ee033..fa913eb774 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["httpstream_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -21,5 +18,20 @@ go_library( "doc.go", "httpstream.go", ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/apimachinery/pkg/util/httpstream/spdy:all-srcs", + ], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD index aae7bb2cd8..3d82eb5262 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -16,7 +14,6 @@ go_test( "upgrade_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/elazarl/goproxy:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", @@ -30,7 +27,6 @@ go_library( "roundtripper.go", "upgrade.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/docker/spdystream:go_default_library", "//vendor/github.com/golang/glog:go_default_library", @@ -44,3 +40,16 @@ go_library( "//vendor/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go index ad300e28b5..12bef075da 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go @@ -158,15 +158,16 @@ func (s *SpdyRoundTripper) dial(req *http.Request) (net.Conn, error) { return nil, err } - if s.tlsConfig == nil { - s.tlsConfig = &tls.Config{} + tlsConfig := s.tlsConfig + switch { + case tlsConfig == nil: + tlsConfig = &tls.Config{ServerName: host} + case len(tlsConfig.ServerName) == 0: + tlsConfig = tlsConfig.Clone() + tlsConfig.ServerName = host } - if len(s.tlsConfig.ServerName) == 0 { - s.tlsConfig.ServerName = host - } - - tlsConn := tls.Client(rwc, s.tlsConfig) + tlsConn := tls.Client(rwc, tlsConfig) // need to manually call Handshake() so we can call VerifyHostname() below if err := tlsConn.Handshake(); err != nil { @@ -174,11 +175,11 @@ func (s *SpdyRoundTripper) dial(req *http.Request) (net.Conn, error) { } // Return if we were configured to skip validation - if s.tlsConfig != nil && s.tlsConfig.InsecureSkipVerify { + if tlsConfig.InsecureSkipVerify { return tlsConn, nil } - if err := tlsConn.VerifyHostname(host); err != nil { + if err := tlsConn.VerifyHostname(tlsConfig.ServerName); err != nil { return nil, err } @@ -218,6 +219,9 @@ func (s *SpdyRoundTripper) dialWithoutProxy(url *url.URL) (net.Conn, error) { if err != nil { return nil, err } + if s.tlsConfig != nil && len(s.tlsConfig.ServerName) > 0 { + host = s.tlsConfig.ServerName + } err = conn.VerifyHostname(host) if err != nil { return nil, err diff --git a/vendor/k8s.io/apimachinery/pkg/util/initialization/BUILD b/vendor/k8s.io/apimachinery/pkg/util/initialization/BUILD new file mode 100644 index 0000000000..8c0f05b66a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/initialization/BUILD @@ -0,0 +1,26 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["initialization.go"], + visibility = ["//visibility:public"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/initialization/initialization.go b/vendor/k8s.io/apimachinery/pkg/util/initialization/initialization.go new file mode 100644 index 0000000000..341b595574 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/initialization/initialization.go @@ -0,0 +1,48 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package initialization + +import ( + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// IsInitialized returns if the initializers indicates means initialized. +func IsInitialized(initializers *metav1.Initializers) bool { + if initializers == nil { + return true + } + // Persisted objects will never be in this state. The initializer admission + // plugin will override metadata.initializers to nil. If the initializer + // admissio plugin is disabled, the generic registry always set + // metadata.initializers to nil. However, this function + // might be called before the object persisted, thus the check. + if len(initializers.Pending) == 0 && initializers.Result == nil { + return true + } + return false +} + +// IsObjectInitialized returns if the object is initialized. +func IsObjectInitialized(obj runtime.Object) (bool, error) { + accessor, err := meta.Accessor(obj) + if err != nil { + return false, err + } + return IsInitialized(accessor.GetInitializers()), nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD b/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD index 92968e2c8c..9eece8f805 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["intstr_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = ["//vendor/github.com/ghodss/yaml:go_default_library"], ) @@ -22,12 +19,30 @@ go_library( "generated.pb.go", "intstr.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/go-openapi/spec:go_default_library", "//vendor/github.com/gogo/protobuf/proto:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/openapi:go_default_library", + "//vendor/k8s.io/kube-openapi/pkg/common:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) + +filegroup( + name = "go_default_library_protos", + srcs = ["generated.proto"], + visibility = ["//visibility:public"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go index 02586b3481..04a77bb6b4 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go @@ -24,7 +24,7 @@ import ( "strconv" "strings" - "k8s.io/apimachinery/pkg/openapi" + openapi "k8s.io/kube-openapi/pkg/common" "github.com/go-openapi/spec" "github.com/golang/glog" diff --git a/vendor/k8s.io/apimachinery/pkg/util/json/BUILD b/vendor/k8s.io/apimachinery/pkg/util/json/BUILD index 68ca233394..cc30f70404 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/json/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/json/BUILD @@ -1,22 +1,31 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", "go_test", ) +go_library( + name = "go_default_library", + srcs = ["json.go"], +) + go_test( name = "go_default_test", srcs = ["json_test.go"], library = ":go_default_library", +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), tags = ["automanaged"], + visibility = ["//visibility:private"], ) -go_library( - name = "go_default_library", - srcs = ["json.go"], +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/json/json.go b/vendor/k8s.io/apimachinery/pkg/util/json/json.go index e8054a12ed..10c8cb837e 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/json/json.go +++ b/vendor/k8s.io/apimachinery/pkg/util/json/json.go @@ -50,6 +50,18 @@ func Unmarshal(data []byte, v interface{}) error { // If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64 return convertMapNumbers(*v) + case *[]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 convertSliceNumbers(*v) + default: return json.Unmarshal(data, v) } diff --git a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD index 5f13a1efdd..147c659e59 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["patch_test.go"], library = ":go_default_library", - tags = ["automanaged"], deps = [ "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/evanphx/json-patch:go_default_library", @@ -24,10 +21,22 @@ go_test( go_library( name = "go_default_library", srcs = ["patch.go"], - tags = ["automanaged"], deps = [ "//vendor/github.com/evanphx/json-patch:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD index 630314fe45..775b5b2b62 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -12,7 +10,6 @@ go_test( name = "go_default_test", srcs = ["util_test.go"], library = ":go_default_library", - tags = ["automanaged"], ) go_library( @@ -21,9 +18,21 @@ go_library( "errors.go", "util.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/ghodss/yaml:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/BUILD b/vendor/k8s.io/apimachinery/pkg/util/net/BUILD index 09a89c1179..bdd086a61e 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/BUILD +++ b/vendor/k8s.io/apimachinery/pkg/util/net/BUILD @@ -1,7 +1,5 @@ package(default_visibility = ["//visibility:public"]) -licenses(["notice"]) - load( "@io_bazel_rules_go//go:def.bzl", "go_library", @@ -18,7 +16,6 @@ go_test( "util_test.go", ], library = ":go_default_library", - tags = ["automanaged"], deps = ["//vendor/github.com/spf13/pflag:go_default_library"], ) @@ -31,10 +28,22 @@ go_library( "port_split.go", "util.go", ], - tags = ["automanaged"], deps = [ "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/net/http2:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", ], ) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http.go b/vendor/k8s.io/apimachinery/pkg/util/net/http.go index adb80813be..41be5b2fe2 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/http.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/http.go @@ -26,6 +26,7 @@ import ( "net/http" "net/url" "os" + "path" "strconv" "strings" @@ -33,6 +34,26 @@ import ( "golang.org/x/net/http2" ) +// JoinPreservingTrailingSlash does a path.Join of the specified elements, +// preserving any trailing slash on the last non-empty segment +func JoinPreservingTrailingSlash(elem ...string) string { + // do the basic path join + result := path.Join(elem...) + + // find the last non-empty segment + for i := len(elem) - 1; i >= 0; i-- { + if len(elem[i]) > 0 { + // if the last segment ended in a slash, ensure our result does as well + if strings.HasSuffix(elem[i], "/") && !strings.HasSuffix(result, "/") { + result += "/" + } + break + } + } + + return result +} + // 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 @@ -108,7 +129,7 @@ func DialerFor(transport http.RoundTripper) (DialFunc, error) { case RoundTripperWrapper: return DialerFor(transport.WrappedRoundTripper()) default: - return nil, fmt.Errorf("unknown transport type: %v", transport) + return nil, fmt.Errorf("unknown transport type: %T", transport) } } @@ -129,7 +150,7 @@ func TLSClientConfig(transport http.RoundTripper) (*tls.Config, error) { case RoundTripperWrapper: return TLSClientConfig(transport.WrappedRoundTripper()) default: - return nil, fmt.Errorf("unknown transport type: %v", transport) + return nil, fmt.Errorf("unknown transport type: %T", transport) } } @@ -277,6 +298,13 @@ func NewProxierWithNoProxyCIDR(delegate func(req *http.Request) (*url.URL, error } } +// DialerFunc implements Dialer for the provided function. +type DialerFunc func(req *http.Request) (net.Conn, error) + +func (fn DialerFunc) Dial(req *http.Request) (net.Conn, error) { + return fn(req) +} + // Dialer dials a host and writes a request to it. type Dialer interface { // Dial connects to the host specified by req's URL, writes the request to the connection, and diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go index 2d41eda49d..8f5dd9cdff 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go @@ -20,6 +20,7 @@ package net import ( "crypto/tls" + "fmt" "net" "net/http" "net/url" @@ -218,3 +219,40 @@ func TestTLSClientConfigHolder(t *testing.T) { t.Errorf("didn't find tls config") } } + +func TestJoinPreservingTrailingSlash(t *testing.T) { + tests := []struct { + a string + b string + want string + }{ + // All empty + {"", "", ""}, + + // Empty a + {"", "/", "/"}, + {"", "foo", "foo"}, + {"", "/foo", "/foo"}, + {"", "/foo/", "/foo/"}, + + // Empty b + {"/", "", "/"}, + {"foo", "", "foo"}, + {"/foo", "", "/foo"}, + {"/foo/", "", "/foo/"}, + + // Both populated + {"/", "/", "/"}, + {"foo", "foo", "foo/foo"}, + {"/foo", "/foo", "/foo/foo"}, + {"/foo/", "/foo/", "/foo/foo/"}, + } + for _, tt := range tests { + name := fmt.Sprintf("%q+%q=%q", tt.a, tt.b, tt.want) + t.Run(name, func(t *testing.T) { + if got := JoinPreservingTrailingSlash(tt.a, tt.b); got != tt.want { + t.Errorf("JoinPreservingTrailingSlash() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/interface.go b/vendor/k8s.io/apimachinery/pkg/util/net/interface.go index a1e53d2e43..42816bd705 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/interface.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/interface.go @@ -29,18 +29,47 @@ import ( "github.com/golang/glog" ) +type AddressFamily uint + +const ( + familyIPv4 AddressFamily = 4 + familyIPv6 AddressFamily = 6 +) + +const ( + ipv4RouteFile = "/proc/net/route" + ipv6RouteFile = "/proc/net/ipv6_route" +) + type Route struct { Interface string Destination net.IP Gateway net.IP - // TODO: add more fields here if needed + Family AddressFamily } -func getRoutes(input io.Reader) ([]Route, error) { - routes := []Route{} - if input == nil { - return nil, fmt.Errorf("input is nil") +type RouteFile struct { + name string + parse func(input io.Reader) ([]Route, error) +} + +var ( + v4File = RouteFile{name: ipv4RouteFile, parse: getIPv4DefaultRoutes} + v6File = RouteFile{name: ipv6RouteFile, parse: getIPv6DefaultRoutes} +) + +func (rf RouteFile) extract() ([]Route, error) { + file, err := os.Open(rf.name) + if err != nil { + return nil, err } + defer file.Close() + return rf.parse(file) +} + +// getIPv4DefaultRoutes obtains the IPv4 routes, and filters out non-default routes. +func getIPv4DefaultRoutes(input io.Reader) ([]Route, error) { + routes := []Route{} scanner := bufio.NewReader(input) for { line, err := scanner.ReadString('\n') @@ -52,24 +81,71 @@ func getRoutes(input io.Reader) ([]Route, error) { continue } fields := strings.Fields(line) - routes = append(routes, Route{}) - route := &routes[len(routes)-1] - route.Interface = fields[0] - ip, err := parseIP(fields[1]) + // Interested in fields: + // 0 - interface name + // 1 - destination address + // 2 - gateway + dest, err := parseIP(fields[1], familyIPv4) + if err != nil { + return nil, err + } + gw, err := parseIP(fields[2], familyIPv4) + if err != nil { + return nil, err + } + if !dest.Equal(net.IPv4zero) { + continue + } + routes = append(routes, Route{ + Interface: fields[0], + Destination: dest, + Gateway: gw, + Family: familyIPv4, + }) + } + return routes, nil +} + +func getIPv6DefaultRoutes(input io.Reader) ([]Route, error) { + routes := []Route{} + scanner := bufio.NewReader(input) + for { + line, err := scanner.ReadString('\n') + if err == io.EOF { + break + } + fields := strings.Fields(line) + // Interested in fields: + // 0 - destination address + // 4 - gateway + // 9 - interface name + dest, err := parseIP(fields[0], familyIPv6) if err != nil { return nil, err } - route.Destination = ip - ip, err = parseIP(fields[2]) + gw, err := parseIP(fields[4], familyIPv6) if err != nil { return nil, err } - route.Gateway = ip + if !dest.Equal(net.IPv6zero) { + continue + } + if gw.Equal(net.IPv6zero) { + continue // loopback + } + routes = append(routes, Route{ + Interface: fields[9], + Destination: dest, + Gateway: gw, + Family: familyIPv6, + }) } return routes, nil } -func parseIP(str string) (net.IP, error) { +// parseIP takes the hex IP address string from route file and converts it +// to a net.IP address. For IPv4, the value must be converted to big endian. +func parseIP(str string, family AddressFamily) (net.IP, error) { if str == "" { return nil, fmt.Errorf("input is nil") } @@ -77,11 +153,16 @@ func parseIP(str string) (net.IP, error) { if err != nil { return nil, err } - //TODO add ipv6 support - if len(bytes) != net.IPv4len { - return nil, fmt.Errorf("only IPv4 is supported") + if family == familyIPv4 { + if len(bytes) != net.IPv4len { + return nil, fmt.Errorf("invalid IPv4 address in route") + } + return net.IP([]byte{bytes[3], bytes[2], bytes[1], bytes[0]}), nil + } + // Must be IPv6 + if len(bytes) != net.IPv6len { + return nil, fmt.Errorf("invalid IPv6 address in route") } - bytes[0], bytes[1], bytes[2], bytes[3] = bytes[3], bytes[2], bytes[1], bytes[0] return net.IP(bytes), nil } @@ -96,10 +177,13 @@ func isInterfaceUp(intf *net.Interface) bool { 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) { +func isLoopbackOrPointToPoint(intf *net.Interface) bool { + return intf.Flags&(net.FlagLoopback|net.FlagPointToPoint) != 0 +} + +// getMatchingGlobalIP returns the first valid global unicast address of the given +// 'family' from the list of 'addrs'. +func getMatchingGlobalIP(addrs []net.Addr, family AddressFamily) (net.IP, error) { if len(addrs) > 0 { for i := range addrs { glog.V(4).Infof("Checking addr %s.", addrs[i].String()) @@ -107,17 +191,15 @@ func getFinalIP(addrs []net.Addr) (net.IP, error) { if err != nil { return nil, err } - //Only IPv4 - //TODO : add IPv6 support - if ip.To4() != nil { - if !ip.IsLoopback() && !ip.IsLinkLocalMulticast() && !ip.IsLinkLocalUnicast() { + if memberOf(ip, family) { + if ip.IsGlobalUnicast() { glog.V(4).Infof("IP found %v", ip) return ip, nil } else { - glog.V(4).Infof("Loopback/link-local found %v", ip) + glog.V(4).Infof("Non-global unicast address found %v", ip) } } else { - glog.V(4).Infof("%v is not a valid IPv4 address", ip) + glog.V(4).Infof("%v is not an IPv%d address", ip, int(family)) } } @@ -125,7 +207,9 @@ func getFinalIP(addrs []net.Addr) (net.IP, error) { return nil, nil } -func getIPFromInterface(intfName string, nw networkInterfacer) (net.IP, error) { +// getIPFromInterface gets the IPs on an interface and returns a global unicast address, if any. The +// interface must be up, the IP must in the family requested, and the IP must be a global unicast address. +func getIPFromInterface(intfName string, forFamily AddressFamily, nw networkInterfacer) (net.IP, error) { intf, err := nw.InterfaceByName(intfName) if err != nil { return nil, err @@ -136,131 +220,161 @@ func getIPFromInterface(intfName string, nw networkInterfacer) (net.IP, error) { return nil, err } glog.V(4).Infof("Interface %q has %d addresses :%v.", intfName, len(addrs), addrs) - finalIP, err := getFinalIP(addrs) + matchingIP, err := getMatchingGlobalIP(addrs, forFamily) 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 + if matchingIP != nil { + glog.V(4).Infof("Found valid IPv%d address %v for interface %q.", int(forFamily), matchingIP, intfName) + return matchingIP, 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 +// memberOF tells if the IP is of the desired family. Used for checking interface addresses. +func memberOf(ip net.IP, family AddressFamily) bool { + if ip.To4() != nil { + return family == familyIPv4 + } else { + return family == familyIPv6 + } } -func chooseHostInterfaceNativeGo() (net.IP, error) { - intfs, err := net.Interfaces() +// chooseIPFromHostInterfaces looks at all system interfaces, trying to find one that is up that +// has a global unicast address (non-loopback, non-link local, non-point2point), and returns the IP. +// Searches for IPv4 addresses, and then IPv6 addresses. +func chooseIPFromHostInterfaces(nw networkInterfacer) (net.IP, error) { + intfs, err := nw.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 len(intfs) == 0 { + return nil, fmt.Errorf("no interfaces found on host.") + } + for _, family := range []AddressFamily{familyIPv4, familyIPv6} { + glog.V(4).Infof("Looking for system interface with a global IPv%d address", uint(family)) + for _, intf := range intfs { + if !isInterfaceUp(&intf) { + glog.V(4).Infof("Skipping: down interface %q", intf.Name) + continue + } + if isLoopbackOrPointToPoint(&intf) { + glog.V(4).Infof("Skipping: LB or P2P interface %q", intf.Name) + continue + } + addrs, err := nw.Addrs(&intf) 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 len(addrs) == 0 { + glog.V(4).Infof("Skipping: no addresses on interface %q", intf.Name) + continue + } + for _, addr := range addrs { + ip, _, err := net.ParseCIDR(addr.String()) + if err != nil { + return nil, fmt.Errorf("Unable to parse CIDR for interface %q: %s", intf.Name, err) + } + if !memberOf(ip, family) { + glog.V(4).Infof("Skipping: no address family match for %q on interface %q.", ip, intf.Name) + continue } - if ip != nil { - // This interface should suffice. - break + // TODO: Decide if should open up to allow IPv6 LLAs in future. + if !ip.IsGlobalUnicast() { + glog.V(4).Infof("Skipping: non-global address %q on interface %q.", ip, intf.Name) + continue } + glog.V(4).Infof("Found global unicast address %q on interface %q.", ip, intf.Name) + return ip, nil } } } - 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 + return nil, fmt.Errorf("no acceptable interface with global unicast address found on host") } -//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. +// ChooseHostInterface is a method used fetch an IP for a daemon. +// If there is no routing info file, it will choose a global IP from the system +// interfaces. Otherwise, it will use IPv4 and IPv6 route information to return the +// IP of the interface with a gateway on it (with priority given to IPv4). For a node +// with no internet connection, it returns error. func ChooseHostInterface() (net.IP, error) { - inFile, err := os.Open("/proc/net/route") + var nw networkInterfacer = networkInterface{} + if _, err := os.Stat(ipv4RouteFile); os.IsNotExist(err) { + return chooseIPFromHostInterfaces(nw) + } + routes, err := getAllDefaultRoutes() if err != nil { - if os.IsNotExist(err) { - return chooseHostInterfaceNativeGo() - } return nil, err } - defer inFile.Close() - var nw networkInterfacer = networkInterface{} - return chooseHostInterfaceFromRoute(inFile, nw) + return chooseHostInterfaceFromRoute(routes, nw) } +// networkInterfacer defines an interface for several net library functions. Production +// code will forward to net library functions, and unit tests will override the methods +// for testing purposes. type networkInterfacer interface { InterfaceByName(intfName string) (*net.Interface, error) Addrs(intf *net.Interface) ([]net.Addr, error) + Interfaces() ([]net.Interface, error) } +// networkInterface implements the networkInterfacer interface for production code, just +// wrapping the underlying net library function calls. 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 + return net.InterfaceByName(intfName) } func (_ networkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { - addrs, err := intf.Addrs() - if err != nil { - return nil, err - } - return addrs, nil + return intf.Addrs() } -func chooseHostInterfaceFromRoute(inFile io.Reader, nw networkInterfacer) (net.IP, error) { - routes, err := getRoutes(inFile) +func (_ networkInterface) Interfaces() ([]net.Interface, error) { + return net.Interfaces() +} + +// getAllDefaultRoutes obtains IPv4 and IPv6 default routes on the node. If unable +// to read the IPv4 routing info file, we return an error. If unable to read the IPv6 +// routing info file (which is optional), we'll just use the IPv4 route information. +// Using all the routing info, if no default routes are found, an error is returned. +func getAllDefaultRoutes() ([]Route, error) { + routes, err := v4File.extract() 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) + v6Routes, _ := v6File.extract() + routes = append(routes, v6Routes...) + if len(routes) == 0 { + return nil, fmt.Errorf("No default routes.") + } + return routes, nil +} + +// chooseHostInterfaceFromRoute cycles through each default route provided, looking for a +// global IP address from the interface for the route. Will first look all each IPv4 route for +// an IPv4 IP, and then will look at each IPv6 route for an IPv6 IP. +func chooseHostInterfaceFromRoute(routes []Route, nw networkInterfacer) (net.IP, error) { + for _, family := range []AddressFamily{familyIPv4, familyIPv6} { + glog.V(4).Infof("Looking for default routes with IPv%d addresses", uint(family)) + for _, route := range routes { + if route.Family != family { + continue + } + glog.V(4).Infof("Default route transits interface %q", route.Interface) + finalIP, err := getIPFromInterface(route.Interface, family, nw) if err != nil { return nil, err } if finalIP != nil { - glog.V(4).Infof("Choosing IP %v ", finalIP) + glog.V(4).Infof("Found active 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 + glog.V(4).Infof("No active IP found by looking at default routes") + return nil, fmt.Errorf("unable to select an IP from default routes.") } // If bind-address is usable, return it directly diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go index fc66904c57..5f42852cee 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go @@ -18,8 +18,9 @@ package net import ( "fmt" - "io" + "io/ioutil" "net" + "os" "strings" "testing" ) @@ -48,50 +49,166 @@ virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 ` const nothing = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT ` -const gatewayfirstIpv6_1 = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +const badDestination = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT eth3 00000000 0100FE0A 0003 0 0 1024 00000000 0 0 0 eth3 0000FE0AA1 00000000 0001 0 0 0 0080FFFF 0 0 0 docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 ` -const gatewayfirstIpv6_2 = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +const badGateway = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT eth3 00000000 0100FE0AA1 0003 0 0 1024 00000000 0 0 0 eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 ` -const route_Invalidhex = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +const route_Invalidhex = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT eth3 00000000 0100FE0AA 0003 0 0 1024 00000000 0 0 0 eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 ` -// Based on DigitalOcean COREOS -const gatewayfirstLinkLocal = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT -eth0 00000000 0120372D 0001 0 0 0 00000000 0 0 0 -eth0 00000000 00000000 0001 0 0 2048 00000000 0 0 0 +const v6gatewayfirst = `00000000000000000000000000000000 00 00000000000000000000000000000000 00 20010001000000000000000000000001 00000064 00000000 00000000 00000003 eth3 +20010002000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 eth3 +00000000000000000000000000000000 60 00000000000000000000000000000000 00 00000000000000000000000000000000 00000400 00000000 00000000 00200200 lo ` +const v6gatewaylast = `20010002000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 eth3 +00000000000000000000000000000000 60 00000000000000000000000000000000 00 00000000000000000000000000000000 00000400 00000000 00000000 00200200 lo +00000000000000000000000000000000 00 00000000000000000000000000000000 00 20010001000000000000000000000001 00000064 00000000 00000000 00000003 eth3 +` +const v6gatewaymiddle = `20010002000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 eth3 +00000000000000000000000000000000 00 00000000000000000000000000000000 00 20010001000000000000000000000001 00000064 00000000 00000000 00000003 eth3 +00000000000000000000000000000000 60 00000000000000000000000000000000 00 00000000000000000000000000000000 00000400 00000000 00000000 00200200 lo +` +const v6noDefaultRoutes = `00000000000000000000000000000000 60 00000000000000000000000000000000 00 00000000000000000000000000000000 00000400 00000000 00000000 00200200 lo +20010001000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000400 00000000 00000000 00000001 docker0 +20010002000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 eth3 +fe800000000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 eth3 +` +const v6nothing = `` +const v6badDestination = `2001000200000000 7a 00000000000000000000000000000000 00 00000000000000000000000000000000 00000400 00000000 00000000 00200200 lo +` +const v6badGateway = `00000000000000000000000000000000 00 00000000000000000000000000000000 00 200100010000000000000000000000000012 00000064 00000000 00000000 00000003 eth3 +` +const v6route_Invalidhex = `000000000000000000000000000000000 00 00000000000000000000000000000000 00 fe80000000000000021fcafffea0ec00 00000064 00000000 00000000 00000003 enp1s0f0 -func TestGetRoutes(t *testing.T) { +` + +const ( + flagUp = net.FlagUp | net.FlagBroadcast | net.FlagMulticast + flagDown = net.FlagBroadcast | net.FlagMulticast + flagLoopback = net.FlagUp | net.FlagLoopback + flagP2P = net.FlagUp | net.FlagPointToPoint +) + +func makeIntf(index int, name string, flags net.Flags) net.Interface { + mac := net.HardwareAddr{0, 0x32, 0x7d, 0x69, 0xf7, byte(0x30 + index)} + return net.Interface{ + Index: index, + MTU: 1500, + Name: name, + HardwareAddr: mac, + Flags: flags} +} + +var ( + downIntf = makeIntf(1, "eth3", flagDown) + loopbackIntf = makeIntf(1, "lo", flagLoopback) + p2pIntf = makeIntf(1, "lo", flagP2P) + upIntf = makeIntf(1, "eth3", flagUp) +) + +var ( + ipv4Route = Route{Interface: "eth3", Destination: net.ParseIP("0.0.0.0"), Gateway: net.ParseIP("10.254.0.1"), Family: familyIPv4} + ipv6Route = Route{Interface: "eth3", Destination: net.ParseIP("::"), Gateway: net.ParseIP("2001:1::1"), Family: familyIPv6} +) + +var ( + noRoutes = []Route{} + routeV4 = []Route{ipv4Route} + routeV6 = []Route{ipv6Route} + bothRoutes = []Route{ipv4Route, ipv6Route} +) + +func TestGetIPv4Routes(t *testing.T) { testCases := []struct { - tcase string - route string - expected int + tcase string + route string + count int + expected *Route + errStrFrag string }{ - {"gatewayfirst", gatewayfirst, 4}, - {"gatewaymiddle", gatewaymiddle, 4}, - {"gatewaylast", gatewaylast, 4}, - {"nothing", nothing, 0}, - {"gatewayfirstIpv6_1", gatewayfirstIpv6_1, 0}, - {"gatewayfirstIpv6_2", gatewayfirstIpv6_2, 0}, - {"route_Invalidhex", route_Invalidhex, 0}, + {"gatewayfirst", gatewayfirst, 1, &ipv4Route, ""}, + {"gatewaymiddle", gatewaymiddle, 1, &ipv4Route, ""}, + {"gatewaylast", gatewaylast, 1, &ipv4Route, ""}, + {"no routes", nothing, 0, nil, ""}, + {"badDestination", badDestination, 0, nil, "invalid IPv4"}, + {"badGateway", badGateway, 0, nil, "invalid IPv4"}, + {"route_Invalidhex", route_Invalidhex, 0, nil, "odd length hex string"}, + {"no default routes", noInternetConnection, 0, nil, ""}, } for _, tc := range testCases { r := strings.NewReader(tc.route) - routes, err := getRoutes(r) - if len(routes) != tc.expected { - t.Errorf("case[%v]: expected %v, got %v .err : %v", tc.tcase, tc.expected, len(routes), err) + routes, err := getIPv4DefaultRoutes(r) + if err != nil { + if !strings.Contains(err.Error(), tc.errStrFrag) { + t.Errorf("case[%s]: Error string %q does not contain %q", tc.tcase, err, tc.errStrFrag) + } + } else if tc.errStrFrag != "" { + t.Errorf("case[%s]: Error %q expected, but not seen", tc.tcase, tc.errStrFrag) + } else { + if tc.count != len(routes) { + t.Errorf("case[%s]: expected %d routes, have %v", tc.tcase, tc.count, routes) + } else if tc.count == 1 { + if !tc.expected.Gateway.Equal(routes[0].Gateway) { + t.Errorf("case[%s]: expected %v, got %v .err : %v", tc.tcase, tc.expected, routes, err) + } + if !routes[0].Destination.Equal(net.IPv4zero) { + t.Errorf("case[%s}: destination is not for default route (not zero)", tc.tcase) + } + + } + } + } +} + +func TestGetIPv6Routes(t *testing.T) { + testCases := []struct { + tcase string + route string + count int + expected *Route + errStrFrag string + }{ + {"v6 gatewayfirst", v6gatewayfirst, 1, &ipv6Route, ""}, + {"v6 gatewaymiddle", v6gatewaymiddle, 1, &ipv6Route, ""}, + {"v6 gatewaylast", v6gatewaylast, 1, &ipv6Route, ""}, + {"v6 no routes", v6nothing, 0, nil, ""}, + {"v6 badDestination", v6badDestination, 0, nil, "invalid IPv6"}, + {"v6 badGateway", v6badGateway, 0, nil, "invalid IPv6"}, + {"v6 route_Invalidhex", v6route_Invalidhex, 0, nil, "odd length hex string"}, + {"v6 no default routes", v6noDefaultRoutes, 0, nil, ""}, + } + for _, tc := range testCases { + r := strings.NewReader(tc.route) + routes, err := getIPv6DefaultRoutes(r) + if err != nil { + if !strings.Contains(err.Error(), tc.errStrFrag) { + t.Errorf("case[%s]: Error string %q does not contain %q", tc.tcase, err, tc.errStrFrag) + } + } else if tc.errStrFrag != "" { + t.Errorf("case[%s]: Error %q expected, but not seen", tc.tcase, tc.errStrFrag) + } else { + if tc.count != len(routes) { + t.Errorf("case[%s]: expected %d routes, have %v", tc.tcase, tc.count, routes) + } else if tc.count == 1 { + if !tc.expected.Gateway.Equal(routes[0].Gateway) { + t.Errorf("case[%s]: expected %v, got %v .err : %v", tc.tcase, tc.expected, routes, err) + } + if !routes[0].Destination.Equal(net.IPv6zero) { + t.Errorf("case[%s}: destination is not for default route (not zero)", tc.tcase) + } + } } } } @@ -100,19 +217,23 @@ func TestParseIP(t *testing.T) { testCases := []struct { tcase string ip string + family AddressFamily success bool expected net.IP }{ - {"empty", "", false, nil}, - {"too short", "AA", false, nil}, - {"too long", "0011223344", false, nil}, - {"invalid", "invalid!", false, nil}, - {"zero", "00000000", true, net.IP{0, 0, 0, 0}}, - {"ffff", "FFFFFFFF", true, net.IP{0xff, 0xff, 0xff, 0xff}}, - {"valid", "12345678", true, net.IP{120, 86, 52, 18}}, + {"empty", "", familyIPv4, false, nil}, + {"too short", "AA", familyIPv4, false, nil}, + {"too long", "0011223344", familyIPv4, false, nil}, + {"invalid", "invalid!", familyIPv4, false, nil}, + {"zero", "00000000", familyIPv4, true, net.IP{0, 0, 0, 0}}, + {"ffff", "FFFFFFFF", familyIPv4, true, net.IP{0xff, 0xff, 0xff, 0xff}}, + {"valid v4", "12345678", familyIPv4, true, net.IP{120, 86, 52, 18}}, + {"valid v6", "fe800000000000000000000000000000", familyIPv6, true, net.IP{0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + {"v6 too short", "fe80000000000000021fcafffea0ec0", familyIPv6, false, nil}, + {"v6 too long", "fe80000000000000021fcafffea0ec002", familyIPv6, false, nil}, } for _, tc := range testCases { - ip, err := parseIP(tc.ip) + ip, err := parseIP(tc.ip, tc.family) if !ip.Equal(tc.expected) { t.Errorf("case[%v]: expected %q, got %q . err : %v", tc.tcase, tc.expected, ip, err) } @@ -122,15 +243,15 @@ func TestParseIP(t *testing.T) { func TestIsInterfaceUp(t *testing.T) { testCases := []struct { tcase string - intf net.Interface + intf *net.Interface expected bool }{ - {"up", net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp}, true}, - {"down", net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: 0}, false}, - {"nothing", net.Interface{}, false}, + {"up", &net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp}, true}, + {"down", &net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: 0}, false}, + {"no interface", nil, false}, } for _, tc := range testCases { - it := isInterfaceUp(&tc.intf) + it := isInterfaceUp(tc.intf) if it != tc.expected { t.Errorf("case[%v]: expected %v, got %v .", tc.tcase, tc.expected, it) } @@ -150,17 +271,24 @@ func TestFinalIP(t *testing.T) { testCases := []struct { tcase string addr []net.Addr + family AddressFamily expected net.IP }{ - {"ipv6", []net.Addr{addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}}, nil}, - {"invalidCIDR", []net.Addr{addrStruct{val: "fe80::2f7:67fff:fe6e:2956/64"}}, nil}, - {"loopback", []net.Addr{addrStruct{val: "127.0.0.1/24"}}, nil}, - {"ip4", []net.Addr{addrStruct{val: "10.254.12.132/17"}}, net.ParseIP("10.254.12.132")}, + {"no ipv4", []net.Addr{addrStruct{val: "2001::5/64"}}, familyIPv4, nil}, + {"no ipv6", []net.Addr{addrStruct{val: "10.128.0.4/32"}}, familyIPv6, nil}, + {"invalidV4CIDR", []net.Addr{addrStruct{val: "10.20.30.40.50/24"}}, familyIPv4, nil}, + {"invalidV6CIDR", []net.Addr{addrStruct{val: "fe80::2f7:67fff:fe6e:2956/64"}}, familyIPv6, nil}, + {"loopback", []net.Addr{addrStruct{val: "127.0.0.1/24"}}, familyIPv4, nil}, + {"loopbackv6", []net.Addr{addrStruct{val: "::1/128"}}, familyIPv6, nil}, + {"link local v4", []net.Addr{addrStruct{val: "169.254.1.10/16"}}, familyIPv4, nil}, + {"link local v6", []net.Addr{addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}}, familyIPv6, nil}, + {"ip4", []net.Addr{addrStruct{val: "10.254.12.132/17"}}, familyIPv4, net.ParseIP("10.254.12.132")}, + {"ip6", []net.Addr{addrStruct{val: "2001::5/64"}}, familyIPv6, net.ParseIP("2001::5")}, - {"nothing", []net.Addr{}, nil}, + {"no addresses", []net.Addr{}, familyIPv4, nil}, } for _, tc := range testCases { - ip, err := getFinalIP(tc.addr) + ip, err := getMatchingGlobalIP(tc.addr, tc.family) if !ip.Equal(tc.expected) { t.Errorf("case[%v]: expected %v, got %v .err : %v", tc.tcase, tc.expected, ip, err) } @@ -179,12 +307,12 @@ func TestAddrs(t *testing.T) { } } +// Has a valid IPv4 address (IPv6 is LLA) type validNetworkInterface struct { } func (_ validNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { - c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} - return &c, nil + return &upIntf, nil } func (_ validNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { var ifat []net.Addr @@ -192,81 +320,211 @@ func (_ validNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}, addrStruct{val: "10.254.71.145/17"}} return ifat, nil } +func (_ validNetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil +} + +// Both IPv4 and IPv6 addresses (expecting IPv4 to be used) +type v4v6NetworkInterface struct { +} + +func (_ v4v6NetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return &upIntf, nil +} +func (_ v4v6NetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{ + addrStruct{val: "2001::10/64"}, addrStruct{val: "10.254.71.145/17"}} + return ifat, nil +} +func (_ v4v6NetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil +} -type validNetworkInterfaceWithLinkLocal struct { +// Interface with only IPv6 address +type ipv6NetworkInterface struct { } -func (_ validNetworkInterfaceWithLinkLocal) InterfaceByName(intfName string) (*net.Interface, error) { - c := net.Interface{Index: 0, MTU: 0, Name: "eth0", HardwareAddr: nil, Flags: net.FlagUp} - return &c, nil +func (_ ipv6NetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return &upIntf, nil } -func (_ validNetworkInterfaceWithLinkLocal) Addrs(intf *net.Interface) ([]net.Addr, error) { +func (_ ipv6NetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { var ifat []net.Addr - ifat = []net.Addr{addrStruct{val: "169.254.162.166/16"}, addrStruct{val: "45.55.47.146/19"}} + ifat = []net.Addr{addrStruct{val: "2001::200/64"}} return ifat, nil } -type validNetworkInterfacewithIpv6Only struct { +func (_ ipv6NetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil +} + +// Only with link local addresses +type networkInterfaceWithOnlyLinkLocals struct { } -func (_ validNetworkInterfacewithIpv6Only) InterfaceByName(intfName string) (*net.Interface, error) { - c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} - return &c, nil +func (_ networkInterfaceWithOnlyLinkLocals) InterfaceByName(intfName string) (*net.Interface, error) { + return &upIntf, nil } -func (_ validNetworkInterfacewithIpv6Only) Addrs(intf *net.Interface) ([]net.Addr, error) { +func (_ networkInterfaceWithOnlyLinkLocals) Addrs(intf *net.Interface) ([]net.Addr, error) { var ifat []net.Addr - ifat = []net.Addr{addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}} + ifat = []net.Addr{addrStruct{val: "169.254.162.166/16"}, addrStruct{val: "fe80::200/10"}} return ifat, nil } +func (_ networkInterfaceWithOnlyLinkLocals) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil +} + +// Unable to get interface(s) +type failGettingNetworkInterface struct { +} +func (_ failGettingNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return nil, fmt.Errorf("unable get Interface") +} +func (_ failGettingNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + return nil, nil +} +func (_ failGettingNetworkInterface) Interfaces() ([]net.Interface, error) { + return nil, fmt.Errorf("mock failed getting all interfaces") +} + +// No interfaces type noNetworkInterface struct { } func (_ noNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { - return nil, fmt.Errorf("unable get Interface") + return nil, fmt.Errorf("no such network interface") } func (_ noNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { return nil, nil } +func (_ noNetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{}, nil +} + +// Interface is down +type downNetworkInterface struct { +} + +func (_ downNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return &downIntf, nil +} +func (_ downNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{ + addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}, addrStruct{val: "10.254.71.145/17"}} + return ifat, nil +} +func (_ downNetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{downIntf}, nil +} + +// Loopback interface +type loopbackNetworkInterface struct { +} + +func (_ loopbackNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return &loopbackIntf, nil +} +func (_ loopbackNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{ + addrStruct{val: "::1/128"}, addrStruct{val: "127.0.0.1/8"}} + return ifat, nil +} +func (_ loopbackNetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{loopbackIntf}, nil +} + +// Point to point interface +type p2pNetworkInterface struct { +} + +func (_ p2pNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return &p2pIntf, nil +} +func (_ p2pNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{ + addrStruct{val: "::1/128"}, addrStruct{val: "127.0.0.1/8"}} + return ifat, nil +} +func (_ p2pNetworkInterface) Interfaces() ([]net.Interface, error) { + return []net.Interface{p2pIntf}, nil +} -type networkInterfacewithNoAddrs struct { +// Unable to get IP addresses for interface +type networkInterfaceFailGetAddrs struct { } -func (_ networkInterfacewithNoAddrs) InterfaceByName(intfName string) (*net.Interface, error) { - c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} - return &c, nil +func (_ networkInterfaceFailGetAddrs) InterfaceByName(intfName string) (*net.Interface, error) { + return &upIntf, nil } -func (_ networkInterfacewithNoAddrs) Addrs(intf *net.Interface) ([]net.Addr, error) { - return nil, fmt.Errorf("unable get Addrs") +func (_ networkInterfaceFailGetAddrs) Addrs(intf *net.Interface) ([]net.Addr, error) { + return nil, fmt.Errorf("unable to get Addrs") +} +func (_ networkInterfaceFailGetAddrs) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil } -type networkInterfacewithIpv6addrs struct { +// No addresses for interface +type networkInterfaceWithNoAddrs struct { } -func (_ networkInterfacewithIpv6addrs) InterfaceByName(intfName string) (*net.Interface, error) { - c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} - return &c, nil +func (_ networkInterfaceWithNoAddrs) InterfaceByName(intfName string) (*net.Interface, error) { + return &upIntf, nil +} +func (_ networkInterfaceWithNoAddrs) Addrs(intf *net.Interface) ([]net.Addr, error) { + ifat := []net.Addr{} + return ifat, nil } -func (_ networkInterfacewithIpv6addrs) Addrs(intf *net.Interface) ([]net.Addr, error) { +func (_ networkInterfaceWithNoAddrs) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil +} + +// Invalid addresses for interface +type networkInterfaceWithInvalidAddr struct { +} + +func (_ networkInterfaceWithInvalidAddr) InterfaceByName(intfName string) (*net.Interface, error) { + return &upIntf, nil +} +func (_ networkInterfaceWithInvalidAddr) Addrs(intf *net.Interface) ([]net.Addr, error) { var ifat []net.Addr - ifat = []net.Addr{addrStruct{val: "fe80::2f7:6ffff:fe6e:2956/64"}} + ifat = []net.Addr{addrStruct{val: "10.20.30.40.50/24"}} return ifat, nil } +func (_ networkInterfaceWithInvalidAddr) Interfaces() ([]net.Interface, error) { + return []net.Interface{upIntf}, nil +} func TestGetIPFromInterface(t *testing.T) { testCases := []struct { - tcase string - nwname string - nw networkInterfacer - expected net.IP + tcase string + nwname string + family AddressFamily + nw networkInterfacer + expected net.IP + errStrFrag string }{ - {"valid", "eth3", validNetworkInterface{}, net.ParseIP("10.254.71.145")}, - {"ipv6", "eth3", validNetworkInterfacewithIpv6Only{}, nil}, - {"nothing", "eth3", noNetworkInterface{}, nil}, + {"ipv4", "eth3", familyIPv4, validNetworkInterface{}, net.ParseIP("10.254.71.145"), ""}, + {"ipv6", "eth3", familyIPv6, ipv6NetworkInterface{}, net.ParseIP("2001::200"), ""}, + {"no ipv4", "eth3", familyIPv4, ipv6NetworkInterface{}, nil, ""}, + {"no ipv6", "eth3", familyIPv6, validNetworkInterface{}, nil, ""}, + {"I/F down", "eth3", familyIPv4, downNetworkInterface{}, nil, ""}, + {"I/F get fail", "eth3", familyIPv4, noNetworkInterface{}, nil, "no such network interface"}, + {"fail get addr", "eth3", familyIPv4, networkInterfaceFailGetAddrs{}, nil, "unable to get Addrs"}, + {"bad addr", "eth3", familyIPv4, networkInterfaceWithInvalidAddr{}, nil, "invalid CIDR"}, } for _, tc := range testCases { - ip, err := getIPFromInterface(tc.nwname, tc.nw) - if !ip.Equal(tc.expected) { + ip, err := getIPFromInterface(tc.nwname, tc.family, tc.nw) + if err != nil { + if !strings.Contains(err.Error(), tc.errStrFrag) { + t.Errorf("case[%s]: Error string %q does not contain %q", tc.tcase, err, tc.errStrFrag) + } + } else if tc.errStrFrag != "" { + t.Errorf("case[%s]: Error %q expected, but not seen", tc.tcase, tc.errStrFrag) + } else if !ip.Equal(tc.expected) { t.Errorf("case[%v]: expected %v, got %+v .err : %v", tc.tcase, tc.expected, ip, err) } } @@ -275,26 +533,193 @@ func TestGetIPFromInterface(t *testing.T) { func TestChooseHostInterfaceFromRoute(t *testing.T) { testCases := []struct { tcase string - inFile io.Reader + routes []Route nw networkInterfacer expected net.IP }{ - {"valid_routefirst", strings.NewReader(gatewayfirst), validNetworkInterface{}, net.ParseIP("10.254.71.145")}, - {"valid_routelast", strings.NewReader(gatewaylast), validNetworkInterface{}, net.ParseIP("10.254.71.145")}, - {"valid_routemiddle", strings.NewReader(gatewaymiddle), validNetworkInterface{}, net.ParseIP("10.254.71.145")}, - {"valid_routemiddle_ipv6", strings.NewReader(gatewaymiddle), validNetworkInterfacewithIpv6Only{}, nil}, - {"no internet connection", strings.NewReader(noInternetConnection), validNetworkInterface{}, nil}, - {"no non-link-local ip", strings.NewReader(gatewayfirstLinkLocal), validNetworkInterfaceWithLinkLocal{}, net.ParseIP("45.55.47.146")}, - {"no route", strings.NewReader(nothing), validNetworkInterface{}, nil}, - {"no route file", nil, validNetworkInterface{}, nil}, - {"no interfaces", nil, noNetworkInterface{}, nil}, - {"no interface Addrs", strings.NewReader(gatewaymiddle), networkInterfacewithNoAddrs{}, nil}, - {"Invalid Addrs", strings.NewReader(gatewaymiddle), networkInterfacewithIpv6addrs{}, nil}, + {"ipv4", routeV4, validNetworkInterface{}, net.ParseIP("10.254.71.145")}, + {"ipv6", routeV6, ipv6NetworkInterface{}, net.ParseIP("2001::200")}, + {"prefer ipv4", bothRoutes, v4v6NetworkInterface{}, net.ParseIP("10.254.71.145")}, + {"all LLA", routeV4, networkInterfaceWithOnlyLinkLocals{}, nil}, + {"no routes", noRoutes, validNetworkInterface{}, nil}, + {"fail get IP", routeV4, networkInterfaceFailGetAddrs{}, nil}, } for _, tc := range testCases { - ip, err := chooseHostInterfaceFromRoute(tc.inFile, tc.nw) + ip, err := chooseHostInterfaceFromRoute(tc.routes, tc.nw) if !ip.Equal(tc.expected) { t.Errorf("case[%v]: expected %v, got %+v .err : %v", tc.tcase, tc.expected, ip, err) } } } + +func TestMemberOf(t *testing.T) { + testCases := []struct { + tcase string + ip net.IP + family AddressFamily + expected bool + }{ + {"ipv4 is 4", net.ParseIP("10.20.30.40"), familyIPv4, true}, + {"ipv4 is 6", net.ParseIP("10.10.10.10"), familyIPv6, false}, + {"ipv6 is 4", net.ParseIP("2001::100"), familyIPv4, false}, + {"ipv6 is 6", net.ParseIP("2001::100"), familyIPv6, true}, + } + for _, tc := range testCases { + if memberOf(tc.ip, tc.family) != tc.expected { + t.Errorf("case[%s]: expected %+v", tc.tcase, tc.expected) + } + } +} + +func TestGetIPFromHostInterfaces(t *testing.T) { + testCases := []struct { + tcase string + nw networkInterfacer + expected net.IP + errStrFrag string + }{ + {"fail get I/Fs", failGettingNetworkInterface{}, nil, "failed getting all interfaces"}, + {"no interfaces", noNetworkInterface{}, nil, "no interfaces"}, + {"I/F not up", downNetworkInterface{}, nil, "no acceptable"}, + {"loopback only", loopbackNetworkInterface{}, nil, "no acceptable"}, + {"P2P I/F only", p2pNetworkInterface{}, nil, "no acceptable"}, + {"fail get addrs", networkInterfaceFailGetAddrs{}, nil, "unable to get Addrs"}, + {"no addresses", networkInterfaceWithNoAddrs{}, nil, "no acceptable"}, + {"invalid addr", networkInterfaceWithInvalidAddr{}, nil, "invalid CIDR"}, + {"no matches", networkInterfaceWithOnlyLinkLocals{}, nil, "no acceptable"}, + {"ipv4", validNetworkInterface{}, net.ParseIP("10.254.71.145"), ""}, + {"ipv6", ipv6NetworkInterface{}, net.ParseIP("2001::200"), ""}, + } + + for _, tc := range testCases { + ip, err := chooseIPFromHostInterfaces(tc.nw) + if !ip.Equal(tc.expected) { + t.Errorf("case[%s]: expected %+v, got %+v with err : %v", tc.tcase, tc.expected, ip, err) + } + if err != nil && !strings.Contains(err.Error(), tc.errStrFrag) { + t.Errorf("case[%s]: unable to find %q in error string %q", tc.tcase, tc.errStrFrag, err.Error()) + } + } +} + +func makeRouteFile(content string, t *testing.T) (*os.File, error) { + routeFile, err := ioutil.TempFile("", "route") + if err != nil { + return nil, err + } + + if _, err := routeFile.Write([]byte(content)); err != nil { + return routeFile, err + } + err = routeFile.Close() + return routeFile, err +} + +func TestFailGettingIPv4Routes(t *testing.T) { + defer func() { v4File.name = ipv4RouteFile }() + + // Try failure to open file (should not occur, as caller ensures we have IPv4 route file, but being thorough) + v4File.name = "no-such-file" + errStrFrag := "no such file" + _, err := v4File.extract() + if err == nil { + fmt.Errorf("Expected error trying to read non-existent v4 route file") + } + if !strings.Contains(err.Error(), errStrFrag) { + t.Errorf("Unable to find %q in error string %q", errStrFrag, err.Error()) + } +} + +func TestFailGettingIPv6Routes(t *testing.T) { + defer func() { v6File.name = ipv6RouteFile }() + + // Try failure to open file (this would be ignored by caller) + v6File.name = "no-such-file" + errStrFrag := "no such file" + _, err := v6File.extract() + if err == nil { + fmt.Errorf("Expected error trying to read non-existent v6 route file") + } + if !strings.Contains(err.Error(), errStrFrag) { + t.Errorf("Unable to find %q in error string %q", errStrFrag, err.Error()) + } +} + +func TestGetAllDefaultRoutesFailNoV4RouteFile(t *testing.T) { + defer func() { v4File.name = ipv4RouteFile }() + + // Should not occur, as caller ensures we have IPv4 route file, but being thorough + v4File.name = "no-such-file" + errStrFrag := "no such file" + _, err := getAllDefaultRoutes() + if err == nil { + fmt.Errorf("Expected error trying to read non-existent v4 route file") + } + if !strings.Contains(err.Error(), errStrFrag) { + t.Errorf("Unable to find %q in error string %q", errStrFrag, err.Error()) + } +} + +func TestGetAllDefaultRoutes(t *testing.T) { + testCases := []struct { + tcase string + v4Info string + v6Info string + count int + expected []Route + errStrFrag string + }{ + {"no routes", noInternetConnection, v6noDefaultRoutes, 0, nil, "No default routes"}, + {"only v4 route", gatewayfirst, v6noDefaultRoutes, 1, routeV4, ""}, + {"only v6 route", noInternetConnection, v6gatewayfirst, 1, routeV6, ""}, + {"v4 and v6 routes", gatewayfirst, v6gatewayfirst, 2, bothRoutes, ""}, + } + defer func() { + v4File.name = ipv4RouteFile + v6File.name = ipv6RouteFile + }() + + for _, tc := range testCases { + routeFile, err := makeRouteFile(tc.v4Info, t) + if routeFile != nil { + defer os.Remove(routeFile.Name()) + } + if err != nil { + t.Errorf("case[%s]: test setup failure for IPv4 route file: %v", tc.tcase, err) + } + v4File.name = routeFile.Name() + v6routeFile, err := makeRouteFile(tc.v6Info, t) + if v6routeFile != nil { + defer os.Remove(v6routeFile.Name()) + } + if err != nil { + t.Errorf("case[%s]: test setup failure for IPv6 route file: %v", tc.tcase, err) + } + v6File.name = v6routeFile.Name() + + routes, err := getAllDefaultRoutes() + if err != nil { + if !strings.Contains(err.Error(), tc.errStrFrag) { + t.Errorf("case[%s]: Error string %q does not contain %q", tc.tcase, err, tc.errStrFrag) + } + } else if tc.errStrFrag != "" { + t.Errorf("case[%s]: Error %q expected, but not seen", tc.tcase, tc.errStrFrag) + } else { + if tc.count != len(routes) { + t.Errorf("case[%s]: expected %d routes, have %v", tc.tcase, tc.count, routes) + } + for i, expected := range tc.expected { + if !expected.Gateway.Equal(routes[i].Gateway) { + t.Errorf("case[%s]: at %d expected %v, got %v .err : %v", tc.tcase, i, tc.expected, routes, err) + } + zeroIP := net.IPv4zero + if expected.Family == familyIPv6 { + zeroIP = net.IPv6zero + } + if !routes[i].Destination.Equal(zeroIP) { + t.Errorf("case[%s}: at %d destination is not for default route (not %v)", tc.tcase, i, zeroIP) + } + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD b/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD new file mode 100644 index 0000000000..ff2aafdbae --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/proxy/BUILD @@ -0,0 +1,60 @@ +package(default_visibility = ["//visibility:public"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "dial_test.go", + "transport_test.go", + "upgradeaware_test.go", + ], + library = ":go_default_library", + deps = [ + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/github.com/stretchr/testify/require:go_default_library", + "//vendor/golang.org/x/net/websocket:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "dial.go", + "doc.go", + "transport.go", + "upgradeaware.go", + ], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/github.com/mxk/go-flowrate/flowrate:go_default_library", + "//vendor/golang.org/x/net/html:go_default_library", + "//vendor/golang.org/x/net/html/atom:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/proxy/dial.go b/vendor/k8s.io/apimachinery/pkg/util/proxy/dial.go new file mode 100644 index 0000000000..3da7e965f5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/proxy/dial.go @@ -0,0 +1,115 @@ +/* +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 proxy + +import ( + "crypto/tls" + "fmt" + "net" + "net/http" + "net/url" + + "github.com/golang/glog" + + utilnet "k8s.io/apimachinery/pkg/util/net" + "k8s.io/apimachinery/third_party/forked/golang/netutil" +) + +func DialURL(url *url.URL, transport http.RoundTripper) (net.Conn, error) { + dialAddr := netutil.CanonicalAddr(url) + + dialer, err := utilnet.DialerFor(transport) + if err != nil { + glog.V(5).Infof("Unable to unwrap transport %T to get dialer: %v", transport, err) + } + + switch url.Scheme { + case "http": + if dialer != nil { + return dialer("tcp", dialAddr) + } + return net.Dial("tcp", dialAddr) + case "https": + // Get the tls config from the transport if we recognize it + var tlsConfig *tls.Config + var tlsConn *tls.Conn + var err error + tlsConfig, err = utilnet.TLSClientConfig(transport) + if err != nil { + glog.V(5).Infof("Unable to unwrap transport %T to get at TLS config: %v", transport, err) + } + + if dialer != nil { + // We have a dialer; use it to open the connection, then + // create a tls client using the connection. + netConn, err := dialer("tcp", dialAddr) + if err != nil { + return nil, err + } + if tlsConfig == nil { + // tls.Client requires non-nil config + glog.Warningf("using custom dialer with no TLSClientConfig. Defaulting to InsecureSkipVerify") + // tls.Handshake() requires ServerName or InsecureSkipVerify + tlsConfig = &tls.Config{ + InsecureSkipVerify: true, + } + } else if len(tlsConfig.ServerName) == 0 && !tlsConfig.InsecureSkipVerify { + // tls.Handshake() requires ServerName or InsecureSkipVerify + // infer the ServerName from the hostname we're connecting to. + inferredHost := dialAddr + if host, _, err := net.SplitHostPort(dialAddr); err == nil { + inferredHost = host + } + // Make a copy to avoid polluting the provided config + tlsConfigCopy := tlsConfig.Clone() + tlsConfigCopy.ServerName = inferredHost + tlsConfig = tlsConfigCopy + } + tlsConn = tls.Client(netConn, tlsConfig) + if err := tlsConn.Handshake(); err != nil { + netConn.Close() + return nil, err + } + + } else { + // Dial + tlsConn, err = tls.Dial("tcp", dialAddr, tlsConfig) + if err != nil { + return nil, err + } + } + + // Return if we were configured to skip validation + if tlsConfig != nil && tlsConfig.InsecureSkipVerify { + return tlsConn, nil + } + + // Verify + host, _, _ := net.SplitHostPort(dialAddr) + if tlsConfig != nil && len(tlsConfig.ServerName) > 0 { + host = tlsConfig.ServerName + } + if err := tlsConn.VerifyHostname(host); err != nil { + tlsConn.Close() + return nil, err + } + + return tlsConn, nil + default: + return nil, fmt.Errorf("Unknown scheme: %s", url.Scheme) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/proxy/dial_test.go b/vendor/k8s.io/apimachinery/pkg/util/proxy/dial_test.go new file mode 100644 index 0000000000..8b9f78e4d1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/proxy/dial_test.go @@ -0,0 +1,176 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package proxy + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "net" + "net/http" + "net/http/httptest" + "net/url" + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/util/diff" + utilnet "k8s.io/apimachinery/pkg/util/net" +) + +func TestDialURL(t *testing.T) { + roots := x509.NewCertPool() + if !roots.AppendCertsFromPEM(localhostCert) { + t.Fatal("error setting up localhostCert pool") + } + + cert, err := tls.X509KeyPair(localhostCert, localhostKey) + if err != nil { + t.Fatal(err) + } + + testcases := map[string]struct { + TLSConfig *tls.Config + Dial utilnet.DialFunc + ExpectError string + }{ + "insecure": { + TLSConfig: &tls.Config{InsecureSkipVerify: true}, + }, + "secure, no roots": { + TLSConfig: &tls.Config{InsecureSkipVerify: false}, + ExpectError: "unknown authority", + }, + "secure with roots": { + TLSConfig: &tls.Config{InsecureSkipVerify: false, RootCAs: roots}, + }, + "secure with mismatched server": { + TLSConfig: &tls.Config{InsecureSkipVerify: false, RootCAs: roots, ServerName: "bogus.com"}, + ExpectError: "not bogus.com", + }, + "secure with matched server": { + TLSConfig: &tls.Config{InsecureSkipVerify: false, RootCAs: roots, ServerName: "example.com"}, + }, + + "insecure, custom dial": { + TLSConfig: &tls.Config{InsecureSkipVerify: true}, + Dial: net.Dial, + }, + "secure, no roots, custom dial": { + TLSConfig: &tls.Config{InsecureSkipVerify: false}, + Dial: net.Dial, + ExpectError: "unknown authority", + }, + "secure with roots, custom dial": { + TLSConfig: &tls.Config{InsecureSkipVerify: false, RootCAs: roots}, + Dial: net.Dial, + }, + "secure with mismatched server, custom dial": { + TLSConfig: &tls.Config{InsecureSkipVerify: false, RootCAs: roots, ServerName: "bogus.com"}, + Dial: net.Dial, + ExpectError: "not bogus.com", + }, + "secure with matched server, custom dial": { + TLSConfig: &tls.Config{InsecureSkipVerify: false, RootCAs: roots, ServerName: "example.com"}, + Dial: net.Dial, + }, + } + + for k, tc := range testcases { + func() { + ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {})) + defer ts.Close() + ts.TLS = &tls.Config{Certificates: []tls.Certificate{cert}} + ts.StartTLS() + + // Make a copy of the config + tlsConfigCopy := tc.TLSConfig.Clone() + // Clone() mutates the receiver (!), so also call it on the copy + tlsConfigCopy.Clone() + transport := &http.Transport{ + Dial: tc.Dial, + TLSClientConfig: tlsConfigCopy, + } + + extractedDial, err := utilnet.DialerFor(transport) + if err != nil { + t.Fatal(err) + } + if fmt.Sprintf("%p", extractedDial) != fmt.Sprintf("%p", tc.Dial) { + t.Fatalf("%s: Unexpected dial", k) + } + + extractedTLSConfig, err := utilnet.TLSClientConfig(transport) + if err != nil { + t.Fatal(err) + } + if extractedTLSConfig == nil { + t.Fatalf("%s: Expected tlsConfig", k) + } + + u, _ := url.Parse(ts.URL) + _, p, _ := net.SplitHostPort(u.Host) + u.Host = net.JoinHostPort("127.0.0.1", p) + conn, err := DialURL(u, transport) + + // Make sure dialing doesn't mutate the transport's TLSConfig + if !reflect.DeepEqual(tc.TLSConfig, tlsConfigCopy) { + t.Errorf("%s: transport's copy of TLSConfig was mutated\n%s", k, diff.ObjectReflectDiff(tc.TLSConfig, tlsConfigCopy)) + } + + if err != nil { + if tc.ExpectError == "" { + t.Errorf("%s: expected no error, got %q", k, err.Error()) + } + if !strings.Contains(err.Error(), tc.ExpectError) { + t.Errorf("%s: expected error containing %q, got %q", k, tc.ExpectError, err.Error()) + } + return + } + conn.Close() + if tc.ExpectError != "" { + t.Errorf("%s: expected error %q, got none", k, tc.ExpectError) + } + }() + } + +} + +// localhostCert was generated from crypto/tls/generate_cert.go with the following command: +// go run generate_cert.go --rsa-bits 512 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h +var localhostCert = []byte(`-----BEGIN CERTIFICATE----- +MIIBjzCCATmgAwIBAgIRAKpi2WmTcFrVjxrl5n5YDUEwDQYJKoZIhvcNAQELBQAw +EjEQMA4GA1UEChMHQWNtZSBDbzAgFw03MDAxMDEwMDAwMDBaGA8yMDg0MDEyOTE2 +MDAwMFowEjEQMA4GA1UEChMHQWNtZSBDbzBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC +QQC9fEbRszP3t14Gr4oahV7zFObBI4TfA5i7YnlMXeLinb7MnvT4bkfOJzE6zktn +59zP7UiHs3l4YOuqrjiwM413AgMBAAGjaDBmMA4GA1UdDwEB/wQEAwICpDATBgNV +HSUEDDAKBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MC4GA1UdEQQnMCWCC2V4 +YW1wbGUuY29thwR/AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUA +A0EAUsVE6KMnza/ZbodLlyeMzdo7EM/5nb5ywyOxgIOCf0OOLHsPS9ueGLQX9HEG +//yjTXuhNcUugExIjM/AIwAZPQ== +-----END CERTIFICATE-----`) + +// localhostKey is the private key for localhostCert. +var localhostKey = []byte(`-----BEGIN RSA PRIVATE KEY----- +MIIBOwIBAAJBAL18RtGzM/e3XgavihqFXvMU5sEjhN8DmLtieUxd4uKdvsye9Phu +R84nMTrOS2fn3M/tSIezeXhg66quOLAzjXcCAwEAAQJBAKcRxH9wuglYLBdI/0OT +BLzfWPZCEw1vZmMR2FF1Fm8nkNOVDPleeVGTWoOEcYYlQbpTmkGSxJ6ya+hqRi6x +goECIQDx3+X49fwpL6B5qpJIJMyZBSCuMhH4B7JevhGGFENi3wIhAMiNJN5Q3UkL +IuSvv03kaPR5XVQ99/UeEetUgGvBcABpAiBJSBzVITIVCGkGc7d+RCf49KTCIklv +bGWObufAR8Ni4QIgWpILjW8dkGg8GOUZ0zaNA6Nvt6TIv2UWGJ4v5PoV98kCIQDx +rIiZs5QbKdycsv9gQJzwQAogC8o04X3Zz3dsoX+h4A== +-----END RSA PRIVATE KEY-----`) diff --git a/vendor/k8s.io/apimachinery/pkg/util/proxy/doc.go b/vendor/k8s.io/apimachinery/pkg/util/proxy/doc.go new file mode 100644 index 0000000000..d14ecfad54 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/proxy/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 proxy provides transport and upgrade support for proxies. +package proxy // import "k8s.io/apimachinery/pkg/util/proxy" diff --git a/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go b/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go new file mode 100644 index 0000000000..5bf2296974 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go @@ -0,0 +1,241 @@ +/* +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 proxy + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "path" + "strings" + + "github.com/golang/glog" + "golang.org/x/net/html" + "golang.org/x/net/html/atom" + + "k8s.io/apimachinery/pkg/util/net" + "k8s.io/apimachinery/pkg/util/sets" +) + +// atomsToAttrs states which attributes of which tags require URL substitution. +// Sources: http://www.w3.org/TR/REC-html40/index/attributes.html +// http://www.w3.org/html/wg/drafts/html/master/index.html#attributes-1 +var atomsToAttrs = map[atom.Atom]sets.String{ + atom.A: sets.NewString("href"), + atom.Applet: sets.NewString("codebase"), + atom.Area: sets.NewString("href"), + atom.Audio: sets.NewString("src"), + atom.Base: sets.NewString("href"), + atom.Blockquote: sets.NewString("cite"), + atom.Body: sets.NewString("background"), + atom.Button: sets.NewString("formaction"), + atom.Command: sets.NewString("icon"), + atom.Del: sets.NewString("cite"), + atom.Embed: sets.NewString("src"), + atom.Form: sets.NewString("action"), + atom.Frame: sets.NewString("longdesc", "src"), + atom.Head: sets.NewString("profile"), + atom.Html: sets.NewString("manifest"), + atom.Iframe: sets.NewString("longdesc", "src"), + atom.Img: sets.NewString("longdesc", "src", "usemap"), + atom.Input: sets.NewString("src", "usemap", "formaction"), + atom.Ins: sets.NewString("cite"), + atom.Link: sets.NewString("href"), + atom.Object: sets.NewString("classid", "codebase", "data", "usemap"), + atom.Q: sets.NewString("cite"), + atom.Script: sets.NewString("src"), + atom.Source: sets.NewString("src"), + atom.Video: sets.NewString("poster", "src"), + + // TODO: css URLs hidden in style elements. +} + +// Transport is a transport for text/html content that replaces URLs in html +// content with the prefix of the proxy server +type Transport struct { + Scheme string + Host string + PathPrepend string + + http.RoundTripper +} + +// RoundTrip implements the http.RoundTripper interface +func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { + // Add reverse proxy headers. + forwardedURI := path.Join(t.PathPrepend, req.URL.Path) + if strings.HasSuffix(req.URL.Path, "/") { + forwardedURI = forwardedURI + "/" + } + req.Header.Set("X-Forwarded-Uri", forwardedURI) + if len(t.Host) > 0 { + req.Header.Set("X-Forwarded-Host", t.Host) + } + if len(t.Scheme) > 0 { + req.Header.Set("X-Forwarded-Proto", t.Scheme) + } + + rt := t.RoundTripper + if rt == nil { + rt = http.DefaultTransport + } + resp, err := rt.RoundTrip(req) + + if err != nil { + message := fmt.Sprintf("Error: '%s'\nTrying to reach: '%v'", err.Error(), req.URL.String()) + resp = &http.Response{ + StatusCode: http.StatusServiceUnavailable, + Body: ioutil.NopCloser(strings.NewReader(message)), + } + return resp, nil + } + + if redirect := resp.Header.Get("Location"); redirect != "" { + resp.Header.Set("Location", t.rewriteURL(redirect, req.URL)) + return resp, nil + } + + cType := resp.Header.Get("Content-Type") + cType = strings.TrimSpace(strings.SplitN(cType, ";", 2)[0]) + if cType != "text/html" { + // Do nothing, simply pass through + return resp, nil + } + + return t.rewriteResponse(req, resp) +} + +var _ = net.RoundTripperWrapper(&Transport{}) + +func (rt *Transport) WrappedRoundTripper() http.RoundTripper { + return rt.RoundTripper +} + +// rewriteURL rewrites a single URL to go through the proxy, if the URL refers +// to the same host as sourceURL, which is the page on which the target URL +// occurred. If any error occurs (e.g. parsing), it returns targetURL. +func (t *Transport) rewriteURL(targetURL string, sourceURL *url.URL) string { + url, err := url.Parse(targetURL) + if err != nil { + return targetURL + } + + isDifferentHost := url.Host != "" && url.Host != sourceURL.Host + isRelative := !strings.HasPrefix(url.Path, "/") + if isDifferentHost || isRelative { + return targetURL + } + + url.Scheme = t.Scheme + url.Host = t.Host + origPath := url.Path + // Do not rewrite URL if the sourceURL already contains the necessary prefix. + if strings.HasPrefix(url.Path, t.PathPrepend) { + return url.String() + } + url.Path = path.Join(t.PathPrepend, url.Path) + if strings.HasSuffix(origPath, "/") { + // Add back the trailing slash, which was stripped by path.Join(). + url.Path += "/" + } + + return url.String() +} + +// rewriteHTML scans the HTML for tags with url-valued attributes, and updates +// those values with the urlRewriter function. The updated HTML is output to the +// writer. +func rewriteHTML(reader io.Reader, writer io.Writer, urlRewriter func(string) string) error { + // Note: This assumes the content is UTF-8. + tokenizer := html.NewTokenizer(reader) + + var err error + for err == nil { + tokenType := tokenizer.Next() + switch tokenType { + case html.ErrorToken: + err = tokenizer.Err() + case html.StartTagToken, html.SelfClosingTagToken: + token := tokenizer.Token() + if urlAttrs, ok := atomsToAttrs[token.DataAtom]; ok { + for i, attr := range token.Attr { + if urlAttrs.Has(attr.Key) { + token.Attr[i].Val = urlRewriter(attr.Val) + } + } + } + _, err = writer.Write([]byte(token.String())) + default: + _, err = writer.Write(tokenizer.Raw()) + } + } + if err != io.EOF { + return err + } + return nil +} + +// rewriteResponse modifies an HTML response by updating absolute links referring +// to the original host to instead refer to the proxy transport. +func (t *Transport) rewriteResponse(req *http.Request, resp *http.Response) (*http.Response, error) { + origBody := resp.Body + defer origBody.Close() + + newContent := &bytes.Buffer{} + var reader io.Reader = origBody + var writer io.Writer = newContent + encoding := resp.Header.Get("Content-Encoding") + switch encoding { + case "gzip": + var err error + reader, err = gzip.NewReader(reader) + if err != nil { + return nil, fmt.Errorf("errorf making gzip reader: %v", err) + } + gzw := gzip.NewWriter(writer) + defer gzw.Close() + writer = gzw + // TODO: support flate, other encodings. + case "": + // This is fine + default: + // Some encoding we don't understand-- don't try to parse this + glog.Errorf("Proxy encountered encoding %v for text/html; can't understand this so not fixing links.", encoding) + return resp, nil + } + + urlRewriter := func(targetUrl string) string { + return t.rewriteURL(targetUrl, req.URL) + } + err := rewriteHTML(reader, writer, urlRewriter) + if err != nil { + glog.Errorf("Failed to rewrite URLs: %v", err) + return resp, err + } + + resp.Body = ioutil.NopCloser(newContent) + // Update header node with new content-length + // TODO: Remove any hash/signature headers here? + resp.Header.Del("Content-Length") + resp.ContentLength = int64(newContent.Len()) + + return resp, err +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/proxy/transport_test.go b/vendor/k8s.io/apimachinery/pkg/util/proxy/transport_test.go new file mode 100644 index 0000000000..f32bcf69ed --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/proxy/transport_test.go @@ -0,0 +1,261 @@ +/* +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 proxy + +import ( + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "net/url" + "strings" + "testing" +) + +func parseURLOrDie(inURL string) *url.URL { + parsed, err := url.Parse(inURL) + if err != nil { + panic(err) + } + return parsed +} + +func TestProxyTransport(t *testing.T) { + testTransport := &Transport{ + Scheme: "http", + Host: "foo.com", + PathPrepend: "/proxy/node/node1:10250", + } + testTransport2 := &Transport{ + Scheme: "https", + Host: "foo.com", + PathPrepend: "/proxy/node/node1:8080", + } + emptyHostTransport := &Transport{ + Scheme: "https", + PathPrepend: "/proxy/node/node1:10250", + } + emptySchemeTransport := &Transport{ + Host: "foo.com", + PathPrepend: "/proxy/node/node1:10250", + } + type Item struct { + input string + sourceURL string + transport *Transport + output string + contentType string + forwardedURI string + redirect string + redirectWant string + } + + table := map[string]Item{ + "normal": { + input: `
kubelet.loggoogle.log
`, + sourceURL: "http://mynode.com/logs/log.log", + transport: testTransport, + output: `
kubelet.loggoogle.log
`, + contentType: "text/html", + forwardedURI: "/proxy/node/node1:10250/logs/log.log", + }, + "full document": { + input: `
kubelet.loggoogle.log
`, + sourceURL: "http://mynode.com/logs/log.log", + transport: testTransport, + output: `
kubelet.loggoogle.log
`, + contentType: "text/html", + forwardedURI: "/proxy/node/node1:10250/logs/log.log", + }, + "trailing slash": { + input: `
kubelet.loggoogle.log
`, + sourceURL: "http://mynode.com/logs/log.log", + transport: testTransport, + output: `
kubelet.loggoogle.log
`, + contentType: "text/html", + forwardedURI: "/proxy/node/node1:10250/logs/log.log", + }, + "content-type charset": { + input: `
kubelet.loggoogle.log
`, + sourceURL: "http://mynode.com/logs/log.log", + transport: testTransport, + output: `
kubelet.loggoogle.log
`, + contentType: "text/html; charset=utf-8", + forwardedURI: "/proxy/node/node1:10250/logs/log.log", + }, + "content-type passthrough": { + input: `
kubelet.loggoogle.log
`, + sourceURL: "http://mynode.com/logs/log.log", + transport: testTransport, + output: `
kubelet.loggoogle.log
`, + contentType: "text/plain", + forwardedURI: "/proxy/node/node1:10250/logs/log.log", + }, + "subdir": { + input: `kubelet.loggoogle.log`, + sourceURL: "http://mynode.com/whatever/apt/somelog.log", + transport: testTransport2, + output: `kubelet.loggoogle.log`, + contentType: "text/html", + forwardedURI: "/proxy/node/node1:8080/whatever/apt/somelog.log", + }, + "image": { + input: `
`, + sourceURL: "http://mynode.com/", + transport: testTransport, + output: `
`, + contentType: "text/html", + forwardedURI: "/proxy/node/node1:10250/", + }, + "abs": { + input: `